From 5ba9a7cfaa9fa4359ed5248c50d30e34a0e2f356 Mon Sep 17 00:00:00 2001 From: Gustavo Martin Morcuende Date: Sun, 13 May 2012 00:24:48 +0200 Subject: [PATCH 1/1] First big commit. MobiAds. Hopefully this is the final one. Cross fingers and toes. --- apps/companyfront/config/app.yml | 5 + apps/companyfront/config/cache.yml | 7 + .../config/companyfrontConfiguration.class.php | 8 + apps/companyfront/config/factories.yml | 42 + apps/companyfront/config/filters.yml | 10 + apps/companyfront/config/routing.yml | 16 + apps/companyfront/config/security.yml | 5 + apps/companyfront/config/settings.yml | 35 + apps/companyfront/config/view.yml | 20 + apps/companyfront/lib/myUser.class.php | 5 + apps/companyfront/templates/layout.php | 14 + .../0347254fe6eb400739516195ceb484a0rest.cachefile | 1 + .../0347254fe6eb400739516195ceb484a0rest.cacheid | 1 + .../0aff874a354386585d1840261335091arest.cachefile | 1 + .../0aff874a354386585d1840261335091arest.cacheid | 1 + .../259dde20c1d2bf951782270764915737rest.cachefile | 1 + .../259dde20c1d2bf951782270764915737rest.cacheid | 1 + .../30eb3f1cd3bf6bb47747f5e078d97660rest.cachefile | 1 + .../30eb3f1cd3bf6bb47747f5e078d97660rest.cacheid | 1 + .../5605980e6948e5ad78961c777f14356arest.cachefile | 1 + .../5605980e6948e5ad78961c777f14356arest.cacheid | 1 + .../7a91cdd3d8362cfffa8c8273763e2a38rest.cachefile | 1 + .../7a91cdd3d8362cfffa8c8273763e2a38rest.cacheid | 1 + .../80da9e0f7387525f48fdf3657810a752rest.cachefile | 1 + .../80da9e0f7387525f48fdf3657810a752rest.cacheid | 1 + .../821d1f671999524ace3ebbd21a6d24c9rest.cachefile | 1 + .../821d1f671999524ace3ebbd21a6d24c9rest.cacheid | 1 + .../bcea26b5cf41001b44938f63fed67b06rest.cachefile | 1 + .../bcea26b5cf41001b44938f63fed67b06rest.cacheid | 1 + .../bfdecce74933a8dce083abd6d6e4f649rest.cachefile | 1 + .../bfdecce74933a8dce083abd6d6e4f649rest.cacheid | 1 + .../d563942ef8f24a139e7563a83576c32frest.cachefile | 1 + .../d563942ef8f24a139e7563a83576c32frest.cacheid | 1 + .../e5f1f469a19c6b85c19ba8f2261b8e2arest.cachefile | 1 + .../e5f1f469a19c6b85c19ba8f2261b8e2arest.cacheid | 1 + cache/.pear/package.xml | 147 + cache/.pear/sfDoctrineGuardPlugin-5.0.0.tgz | Bin 0 -> 71660 bytes cache/.pear/sfDoctrineGuardPlugin-5.0.0/.DS_Store | Bin 0 -> 6148 bytes cache/.pear/sfDoctrineGuardPlugin-5.0.0/LICENSE | 7 + cache/.pear/sfDoctrineGuardPlugin-5.0.0/README | 305 + cache/.pear/sfDoctrineGuardPlugin-5.0.0/VERSION | 1 + .../config/doctrine/schema.yml | 182 + .../sfDoctrineGuardPluginConfiguration.class.php | 40 + .../data/fixtures/fixtures.yml.sample | 20 + .../sfDoctrineGuardPlugin-5.0.0/data/tasks/.sf | 0 .../i18n/sf_guard.es.xml | 33 + .../i18n/sf_guard.fr.xml | 33 + .../PluginsfGuardGroupFormFilter.class.php | 13 + .../PluginsfGuardPermissionFormFilter.class.php | 13 + .../doctrine/PluginsfGuardUserFormFilter.class.php | 13 + .../BasesfGuardRequestForgotPasswordForm.class.php | 42 + .../form/doctrine/PluginsfGuardGroupForm.class.php | 28 + .../doctrine/PluginsfGuardPermissionForm.class.php | 25 + .../form/doctrine/PluginsfGuardUserForm.class.php | 13 + .../BasesfGuardChangeUserPasswordForm.class.php | 27 + .../doctrine/base/BasesfGuardFormSignin.class.php | 40 + .../base/BasesfGuardRegisterForm.class.php | 27 + .../base/BasesfGuardUserAdminForm.class.php | 40 + .../sfGuardChangeUserPasswordForm.class.php | 19 + .../lib/form/doctrine/sfGuardFormSignin.class.php | 19 + .../form/doctrine/sfGuardRegisterForm.class.php | 19 + .../form/doctrine/sfGuardUserAdminForm.class.php | 19 + .../sfGuardRequestForgotPasswordForm.class.php | 19 + .../doctrine/PluginsfGuardForgotPassword.class.php | 16 + .../PluginsfGuardForgotPasswordTable.class.php | 7 + .../model/doctrine/PluginsfGuardGroup.class.php | 13 + .../PluginsfGuardGroupPermission.class.php | 13 + .../PluginsfGuardGroupPermissionTable.class.php | 13 + .../doctrine/PluginsfGuardGroupTable.class.php | 13 + .../doctrine/PluginsfGuardPermission.class.php | 13 + .../PluginsfGuardPermissionTable.class.php | 13 + .../doctrine/PluginsfGuardRememberKey.class.php | 13 + .../PluginsfGuardRememberKeyTable.class.php | 13 + .../lib/model/doctrine/PluginsfGuardUser.class.php | 292 + .../doctrine/PluginsfGuardUserGroup.class.php | 18 + .../doctrine/PluginsfGuardUserGroupTable.class.php | 13 + .../doctrine/PluginsfGuardUserPermission.class.php | 18 + .../PluginsfGuardUserPermissionTable.class.php | 13 + .../doctrine/PluginsfGuardUserTable.class.php | 48 + .../lib/routing/sfGuardRouting.class.php | 118 + .../lib/sfGuardBasicSecurityFilter.class.php | 56 + .../lib/sfGuardRememberMeFilter.class.php | 58 + .../lib/task/sfGuardAddGroupTask.class.php | 66 + .../lib/task/sfGuardAddPermissionTask.class.php | 66 + .../lib/task/sfGuardChangePasswordTask.class.php | 70 + .../lib/task/sfGuardCreateUserTask.class.php | 71 + .../task/sfGuardPromoteSuperAdminTask.class.php | 70 + .../lib/user/sfGuardSecurityUser.class.php | 391 + .../lib/validator/sfGuardValidatorUser.class.php | 69 + .../modules/sfGuardAuth/actions/actions.class.php | 22 + .../sfGuardAuth/actions/components.class.php | 22 + .../modules/sfGuardAuth/config/security.yml | 8 + .../lib/BasesfGuardAuthActions.class.php | 89 + .../lib/BasesfGuardAuthComponents.class.php | 10 + .../modules/sfGuardAuth/templates/_signin_form.php | 25 + .../sfGuardAuth/templates/secureSuccess.php | 9 + .../sfGuardAuth/templates/signinSuccess.php | 5 + .../actions/actions.class.php | 15 + .../lib/BasesfGuardForgotPasswordActions.class.php | 95 + .../templates/_new_password.php | 7 + .../templates/_send_request.php | 8 + .../templates/changeSuccess.php | 13 + .../templates/indexSuccess.php | 16 + .../modules/sfGuardGroup/actions/actions.class.php | 16 + .../modules/sfGuardGroup/config/generator.yml | 25 + .../sfGuardGroupGeneratorConfiguration.class.php | 13 + .../lib/sfGuardGroupGeneratorHelper.class.php | 13 + .../sfGuardPermission/actions/actions.class.php | 16 + .../modules/sfGuardPermission/config/generator.yml | 25 + ...GuardPermissionGeneratorConfiguration.class.php | 13 + .../lib/sfGuardPermissionGeneratorHelper.class.php | 13 + .../sfGuardRegister/actions/actions.class.php | 15 + .../sfGuardRegister/actions/components.class.php | 7 + .../lib/BasesfGuardRegisterActions.class.php | 27 + .../lib/BasesfGuardRegisterComponents.class.php | 9 + .../modules/sfGuardRegister/templates/_form.php | 14 + .../sfGuardRegister/templates/indexSuccess.php | 4 + .../modules/sfGuardUser/actions/actions.class.php | 16 + .../modules/sfGuardUser/config/generator.yml | 31 + .../lib/BasesfGuardUserActions.class.php | 20 + .../sfGuardUserGeneratorConfiguration.class.php | 13 + .../lib/sfGuardUserGeneratorHelper.class.php | 13 + .../sfDoctrineGuardPlugin-5.0.0.tgz | Bin 0 -> 46420 bytes cache/companyfront/dev/config/config_app.yml.php | 0 .../dev/config/config_autoload.yml.php | 267 + .../dev/config/config_config_handlers.yml.php | 24 + .../dev/config/config_databases.yml.php | 11 + .../dev/config/config_factories.yml.php | 161 + .../companyfront/dev/config/config_routing.yml.php | 6 + .../dev/config/config_settings.yml.php | 38 + .../config/modules_default_config_filters.yml.php | 25 + .../config/modules_default_config_module.yml.php | 7 + .../config/modules_default_config_security.yml.php | 9 + .../dev/config/modules_default_config_view.yml.php | 24 + cache/project_autoload.cache | 1 + config/ProjectConfiguration.class.php | 13 + config/databases.yml | 10 + config/doctrine/schema.yml | 141 + config/properties.ini | 4 + config/rsync_exclude.txt | 15 + cscope.out | 895116 ++++++++++++++++++ data/fixtures/fixtures.yml | 223 + data/sql/schema.sql | 53 + .../doctrine/AdDescriptionFormFilter.class.php | 16 + lib/filter/doctrine/AdFormFilter.class.php | 16 + .../doctrine/BaseFormFilterDoctrine.class.php | 16 + lib/filter/doctrine/CityFormFilter.class.php | 16 + .../CompanyCategoryDescriptionFormFilter.class.php | 16 + .../doctrine/CompanyCategoryFormFilter.class.php | 16 + .../CompanyDescriptionFormFilter.class.php | 16 + lib/filter/doctrine/CompanyFormFilter.class.php | 16 + lib/filter/doctrine/CountryFormFilter.class.php | 16 + .../GeneralCategoryDescriptionFormFilter.class.php | 16 + .../doctrine/GeneralCategoryFormFilter.class.php | 16 + lib/filter/doctrine/LanguageFormFilter.class.php | 16 + lib/filter/doctrine/OfficeAdsFormFilter.class.php | 16 + lib/filter/doctrine/OfficeFormFilter.class.php | 16 + lib/filter/doctrine/RegionFormFilter.class.php | 16 + lib/filter/doctrine/UserBasketFormFilter.class.php | 16 + .../base/BaseAdDescriptionFormFilter.class.php | 59 + .../doctrine/base/BaseAdFormFilter.class.php | 56 + .../doctrine/base/BaseCityFormFilter.class.php | 47 + ...eCompanyCategoryDescriptionFormFilter.class.php | 53 + .../base/BaseCompanyCategoryFormFilter.class.php | 65 + .../BaseCompanyDescriptionFormFilter.class.php | 50 + .../doctrine/base/BaseCompanyFormFilter.class.php | 47 + .../doctrine/base/BaseCountryFormFilter.class.php | 50 + ...eGeneralCategoryDescriptionFormFilter.class.php | 53 + .../base/BaseGeneralCategoryFormFilter.class.php | 59 + .../doctrine/base/BaseLanguageFormFilter.class.php | 47 + .../base/BaseOfficeAdsFormFilter.class.php | 47 + .../doctrine/base/BaseOfficeFormFilter.class.php | 62 + .../doctrine/base/BaseRegionFormFilter.class.php | 47 + .../base/BaseUserBasketFormFilter.class.php | 47 + .../base/BasesfGuardGroupFormFilter.class.php | 95 + .../base/BasesfGuardPermissionFormFilter.class.php | 95 + .../base/BasesfGuardUserFormFilter.class.php | 119 + .../sfGuardGroupFormFilter.class.php | 16 + .../sfGuardPermissionFormFilter.class.php | 16 + .../sfGuardUserFormFilter.class.php | 16 + lib/form/BaseForm.class.php | 13 + lib/form/doctrine/AdDescriptionForm.class.php | 16 + lib/form/doctrine/AdForm.class.php | 16 + lib/form/doctrine/BaseFormDoctrine.class.php | 16 + lib/form/doctrine/CityForm.class.php | 16 + .../CompanyCategoryDescriptionForm.class.php | 16 + lib/form/doctrine/CompanyCategoryForm.class.php | 16 + lib/form/doctrine/CompanyDescriptionForm.class.php | 16 + lib/form/doctrine/CompanyForm.class.php | 16 + lib/form/doctrine/CountryForm.class.php | 16 + .../GeneralCategoryDescriptionForm.class.php | 16 + lib/form/doctrine/GeneralCategoryForm.class.php | 16 + lib/form/doctrine/LanguageForm.class.php | 16 + lib/form/doctrine/OfficeAdsForm.class.php | 16 + lib/form/doctrine/OfficeForm.class.php | 16 + lib/form/doctrine/RegionForm.class.php | 16 + lib/form/doctrine/UserBasketForm.class.php | 16 + .../doctrine/base/BaseAdDescriptionForm.class.php | 51 + lib/form/doctrine/base/BaseAdForm.class.php | 49 + lib/form/doctrine/base/BaseCityForm.class.php | 43 + .../BaseCompanyCategoryDescriptionForm.class.php | 47 + .../base/BaseCompanyCategoryForm.class.php | 55 + .../base/BaseCompanyDescriptionForm.class.php | 45 + lib/form/doctrine/base/BaseCompanyForm.class.php | 47 + lib/form/doctrine/base/BaseCountryForm.class.php | 45 + .../BaseGeneralCategoryDescriptionForm.class.php | 51 + .../base/BaseGeneralCategoryForm.class.php | 51 + lib/form/doctrine/base/BaseLanguageForm.class.php | 50 + lib/form/doctrine/base/BaseOfficeAdsForm.class.php | 43 + lib/form/doctrine/base/BaseOfficeForm.class.php | 53 + lib/form/doctrine/base/BaseRegionForm.class.php | 43 + .../doctrine/base/BaseUserBasketForm.class.php | 43 + .../base/BasesfGuardGroupForm.class.php | 155 + .../base/BasesfGuardPermissionForm.class.php | 155 + .../base/BasesfGuardUserForm.class.php | 174 + .../sfGuardGroupForm.class.php | 16 + .../sfGuardPermissionForm.class.php | 16 + .../sfGuardUserForm.class.php | 16 + lib/model/doctrine/Ad.class.php | 15 + lib/model/doctrine/AdDescription.class.php | 15 + lib/model/doctrine/AdDescriptionTable.class.php | 19 + lib/model/doctrine/AdTable.class.php | 19 + lib/model/doctrine/City.class.php | 15 + lib/model/doctrine/CityTable.class.php | 19 + lib/model/doctrine/Company.class.php | 15 + lib/model/doctrine/CompanyCategory.class.php | 15 + .../doctrine/CompanyCategoryDescription.class.php | 15 + .../CompanyCategoryDescriptionTable.class.php | 19 + lib/model/doctrine/CompanyCategoryTable.class.php | 19 + lib/model/doctrine/CompanyDescription.class.php | 15 + .../doctrine/CompanyDescriptionTable.class.php | 19 + lib/model/doctrine/CompanyTable.class.php | 19 + lib/model/doctrine/Country.class.php | 15 + lib/model/doctrine/CountryTable.class.php | 19 + lib/model/doctrine/GeneralCategory.class.php | 15 + .../doctrine/GeneralCategoryDescription.class.php | 15 + .../GeneralCategoryDescriptionTable.class.php | 19 + lib/model/doctrine/GeneralCategoryTable.class.php | 19 + lib/model/doctrine/Language.class.php | 15 + lib/model/doctrine/LanguageTable.class.php | 19 + lib/model/doctrine/Office.class.php | 15 + lib/model/doctrine/OfficeAds.class.php | 15 + lib/model/doctrine/OfficeAdsTable.class.php | 19 + lib/model/doctrine/OfficeTable.class.php | 19 + lib/model/doctrine/Region.class.php | 15 + lib/model/doctrine/RegionTable.class.php | 19 + lib/model/doctrine/UserBasket.class.php | 15 + lib/model/doctrine/UserBasketTable.class.php | 19 + lib/model/doctrine/base/BaseAd.class.php | 80 + .../doctrine/base/BaseAdDescription.class.php | 85 + lib/model/doctrine/base/BaseCity.class.php | 55 + lib/model/doctrine/base/BaseCompany.class.php | 78 + .../doctrine/base/BaseCompanyCategory.class.php | 76 + .../base/BaseCompanyCategoryDescription.class.php | 69 + .../doctrine/base/BaseCompanyDescription.class.php | 63 + lib/model/doctrine/base/BaseCountry.class.php | 56 + .../doctrine/base/BaseGeneralCategory.class.php | 54 + .../base/BaseGeneralCategoryDescription.class.php | 70 + lib/model/doctrine/base/BaseLanguage.class.php | 71 + lib/model/doctrine/base/BaseOffice.class.php | 86 + lib/model/doctrine/base/BaseOfficeAds.class.php | 56 + lib/model/doctrine/base/BaseRegion.class.php | 55 + lib/model/doctrine/base/BaseUserBasket.class.php | 56 + .../base/BasesfGuardForgotPassword.class.php | 63 + .../base/BasesfGuardGroup.class.php | 74 + .../base/BasesfGuardGroupPermission.class.php | 64 + .../base/BasesfGuardPermission.class.php | 74 + .../base/BasesfGuardRememberKey.class.php | 62 + .../base/BasesfGuardUser.class.php | 170 + .../base/BasesfGuardUserGroup.class.php | 64 + .../base/BasesfGuardUserPermission.class.php | 64 + .../sfGuardForgotPassword.class.php | 15 + .../sfGuardForgotPasswordTable.class.php | 19 + .../sfDoctrineGuardPlugin/sfGuardGroup.class.php | 15 + .../sfGuardGroupPermission.class.php | 15 + .../sfGuardGroupPermissionTable.class.php | 19 + .../sfGuardGroupTable.class.php | 19 + .../sfGuardPermission.class.php | 15 + .../sfGuardPermissionTable.class.php | 19 + .../sfGuardRememberKey.class.php | 15 + .../sfGuardRememberKeyTable.class.php | 19 + .../sfDoctrineGuardPlugin/sfGuardUser.class.php | 15 + .../sfGuardUserGroup.class.php | 15 + .../sfGuardUserGroupTable.class.php | 19 + .../sfGuardUserPermission.class.php | 15 + .../sfGuardUserPermissionTable.class.php | 19 + .../sfGuardUserTable.class.php | 19 + lib/vendor/symfony/.svn/all-wcprops | 35 + lib/vendor/symfony/.svn/dir-prop-base | 13 + lib/vendor/symfony/.svn/entries | 210 + .../symfony/.svn/text-base/CHANGELOG.svn-base | 418 + .../symfony/.svn/text-base/COPYRIGHT.svn-base | 47 + lib/vendor/symfony/.svn/text-base/LICENSE.svn-base | 19 + lib/vendor/symfony/.svn/text-base/README.svn-base | 20 + .../.svn/text-base/package.xml.tmpl.svn-base | 102 + lib/vendor/symfony/CHANGELOG | 418 + lib/vendor/symfony/COPYRIGHT | 47 + lib/vendor/symfony/LICENSE | 19 + lib/vendor/symfony/README | 20 + lib/vendor/symfony/data/.svn/all-wcprops | 5 + lib/vendor/symfony/data/.svn/entries | 34 + lib/vendor/symfony/data/bin/.svn/all-wcprops | 47 + lib/vendor/symfony/data/bin/.svn/entries | 269 + .../data/bin/.svn/prop-base/changelog.php.svn-base | 9 + .../prop-base/check_configuration.php.svn-base | 13 + .../bin/.svn/prop-base/create_sandbox.sh.svn-base | 5 + .../data/bin/.svn/prop-base/release.php.svn-base | 9 + .../.svn/prop-base/sandbox_installer.php.svn-base | 9 + .../data/bin/.svn/prop-base/symfony.bat.svn-base | 13 + .../data/bin/.svn/prop-base/symfony.svn-base | 17 + .../data/bin/.svn/text-base/changelog.php.svn-base | 49 + .../text-base/check_configuration.php.svn-base | 107 + .../bin/.svn/text-base/create_sandbox.sh.svn-base | 27 + .../data/bin/.svn/text-base/release.php.svn-base | 105 + .../.svn/text-base/sandbox_installer.php.svn-base | 35 + .../data/bin/.svn/text-base/symfony.bat.svn-base | 39 + .../data/bin/.svn/text-base/symfony.svn-base | 37 + lib/vendor/symfony/data/bin/changelog.php | 49 + .../symfony/data/bin/check_configuration.php | 107 + lib/vendor/symfony/data/bin/create_sandbox.sh | 27 + lib/vendor/symfony/data/bin/release.php | 105 + lib/vendor/symfony/data/bin/sandbox_installer.php | 35 + .../data/bin/sandbox_skeleton/.svn/all-wcprops | 11 + .../symfony/data/bin/sandbox_skeleton/.svn/entries | 62 + .../.svn/text-base/README.svn-base | 100 + .../symfony/data/bin/sandbox_skeleton/README | 100 + lib/vendor/symfony/data/bin/symfony | 37 + lib/vendor/symfony/data/bin/symfony.bat | 39 + lib/vendor/symfony/data/web/.svn/all-wcprops | 5 + lib/vendor/symfony/data/web/.svn/entries | 31 + lib/vendor/symfony/data/web/sf/.svn/all-wcprops | 5 + lib/vendor/symfony/data/web/sf/.svn/entries | 37 + .../symfony/data/web/sf/sf_admin/.svn/all-wcprops | 5 + .../symfony/data/web/sf/sf_admin/.svn/entries | 37 + .../data/web/sf/sf_admin/css/.svn/all-wcprops | 11 + .../symfony/data/web/sf/sf_admin/css/.svn/entries | 62 + .../sf_admin/css/.svn/prop-base/main.css.svn-base | 13 + .../sf_admin/css/.svn/text-base/main.css.svn-base | 353 + .../symfony/data/web/sf/sf_admin/css/main.css | 353 + .../data/web/sf/sf_admin/images/.svn/all-wcprops | 101 + .../data/web/sf/sf_admin/images/.svn/entries | 572 + .../images/.svn/prop-base/add.png.svn-base | 9 + .../images/.svn/prop-base/cancel.png.svn-base | 9 + .../.svn/prop-base/default_icon.png.svn-base | 9 + .../images/.svn/prop-base/delete.png.svn-base | 9 + .../images/.svn/prop-base/edit.png.svn-base | 9 + .../images/.svn/prop-base/error.png.svn-base | 9 + .../images/.svn/prop-base/filter.png.svn-base | 9 + .../images/.svn/prop-base/first.png.svn-base | 9 + .../images/.svn/prop-base/last.png.svn-base | 9 + .../images/.svn/prop-base/list.png.svn-base | 9 + .../images/.svn/prop-base/next.png.svn-base | 9 + .../sf_admin/images/.svn/prop-base/ok.png.svn-base | 9 + .../images/.svn/prop-base/previous.png.svn-base | 9 + .../images/.svn/prop-base/reset.png.svn-base | 9 + .../images/.svn/prop-base/save.png.svn-base | 9 + .../images/.svn/prop-base/tick.png.svn-base | 9 + .../images/.svn/text-base/add.png.svn-base | Bin 0 -> 847 bytes .../images/.svn/text-base/cancel.png.svn-base | Bin 0 -> 853 bytes .../.svn/text-base/default_icon.png.svn-base | Bin 0 -> 501 bytes .../images/.svn/text-base/delete.png.svn-base | Bin 0 -> 846 bytes .../images/.svn/text-base/edit.png.svn-base | Bin 0 -> 728 bytes .../images/.svn/text-base/error.png.svn-base | Bin 0 -> 737 bytes .../images/.svn/text-base/filter.png.svn-base | Bin 0 -> 703 bytes .../images/.svn/text-base/first.png.svn-base | Bin 0 -> 599 bytes .../images/.svn/text-base/last.png.svn-base | Bin 0 -> 607 bytes .../images/.svn/text-base/list.png.svn-base | Bin 0 -> 531 bytes .../images/.svn/text-base/next.png.svn-base | Bin 0 -> 469 bytes .../sf_admin/images/.svn/text-base/ok.png.svn-base | Bin 0 -> 917 bytes .../images/.svn/text-base/previous.png.svn-base | Bin 0 -> 466 bytes .../images/.svn/text-base/reset.png.svn-base | Bin 0 -> 691 bytes .../images/.svn/text-base/save.png.svn-base | Bin 0 -> 917 bytes .../images/.svn/text-base/tick.png.svn-base | Bin 0 -> 537 bytes .../symfony/data/web/sf/sf_admin/images/add.png | Bin 0 -> 847 bytes .../symfony/data/web/sf/sf_admin/images/cancel.png | Bin 0 -> 853 bytes .../data/web/sf/sf_admin/images/default_icon.png | Bin 0 -> 501 bytes .../symfony/data/web/sf/sf_admin/images/delete.png | Bin 0 -> 846 bytes .../symfony/data/web/sf/sf_admin/images/edit.png | Bin 0 -> 728 bytes .../symfony/data/web/sf/sf_admin/images/error.png | Bin 0 -> 737 bytes .../symfony/data/web/sf/sf_admin/images/filter.png | Bin 0 -> 703 bytes .../symfony/data/web/sf/sf_admin/images/first.png | Bin 0 -> 599 bytes .../symfony/data/web/sf/sf_admin/images/last.png | Bin 0 -> 607 bytes .../symfony/data/web/sf/sf_admin/images/list.png | Bin 0 -> 531 bytes .../symfony/data/web/sf/sf_admin/images/next.png | Bin 0 -> 469 bytes .../symfony/data/web/sf/sf_admin/images/ok.png | Bin 0 -> 917 bytes .../data/web/sf/sf_admin/images/previous.png | Bin 0 -> 466 bytes .../symfony/data/web/sf/sf_admin/images/reset.png | Bin 0 -> 691 bytes .../symfony/data/web/sf/sf_admin/images/save.png | Bin 0 -> 917 bytes .../symfony/data/web/sf/sf_admin/images/tick.png | Bin 0 -> 537 bytes .../data/web/sf/sf_admin/js/.svn/all-wcprops | 17 + .../symfony/data/web/sf/sf_admin/js/.svn/entries | 96 + .../js/.svn/prop-base/collapse.js.svn-base | 13 + .../js/.svn/prop-base/double_list.js.svn-base | 5 + .../js/.svn/text-base/collapse.js.svn-base | 87 + .../js/.svn/text-base/double_list.js.svn-base | 37 + .../symfony/data/web/sf/sf_admin/js/collapse.js | 87 + .../symfony/data/web/sf/sf_admin/js/double_list.js | 37 + .../data/web/sf/sf_default/.svn/all-wcprops | 5 + .../symfony/data/web/sf/sf_default/.svn/entries | 34 + .../data/web/sf/sf_default/css/.svn/all-wcprops | 23 + .../data/web/sf/sf_default/css/.svn/entries | 130 + .../sf_default/css/.svn/prop-base/ie.css.svn-base | 5 + .../css/.svn/prop-base/screen.css.svn-base | 5 + .../sf_default/css/.svn/text-base/ie.css.svn-base | 4 + .../css/.svn/text-base/pngfix.htc.svn-base | 86 + .../css/.svn/text-base/screen.css.svn-base | 182 + .../symfony/data/web/sf/sf_default/css/ie.css | 4 + .../symfony/data/web/sf/sf_default/css/pngfix.htc | 86 + .../symfony/data/web/sf/sf_default/css/screen.css | 182 + .../data/web/sf/sf_default/images/.svn/all-wcprops | 41 + .../data/web/sf/sf_default/images/.svn/entries | 235 + .../images/.svn/prop-base/bg_body.jpg.svn-base | 5 + .../images/.svn/prop-base/bg_sfTAlert.jpg.svn-base | 5 + .../images/.svn/prop-base/bg_sfTLock.jpg.svn-base | 5 + .../.svn/prop-base/bg_sfTMessage.jpg.svn-base | 5 + .../images/.svn/prop-base/sfTLogo.png.svn-base | 5 + .../images/.svn/prop-base/trans.gif.svn-base | 5 + .../images/.svn/text-base/bg_body.jpg.svn-base | Bin 0 -> 1636 bytes .../images/.svn/text-base/bg_sfTAlert.jpg.svn-base | Bin 0 -> 324 bytes .../images/.svn/text-base/bg_sfTLock.jpg.svn-base | Bin 0 -> 325 bytes .../.svn/text-base/bg_sfTMessage.jpg.svn-base | Bin 0 -> 384 bytes .../images/.svn/text-base/sfTLogo.png.svn-base | Bin 0 -> 5139 bytes .../images/.svn/text-base/trans.gif.svn-base | Bin 0 -> 63 bytes .../data/web/sf/sf_default/images/bg_body.jpg | Bin 0 -> 1636 bytes .../data/web/sf/sf_default/images/bg_sfTAlert.jpg | Bin 0 -> 324 bytes .../data/web/sf/sf_default/images/bg_sfTLock.jpg | Bin 0 -> 325 bytes .../web/sf/sf_default/images/bg_sfTMessage.jpg | Bin 0 -> 384 bytes .../sf/sf_default/images/icons/.svn/all-wcprops | 71 + .../web/sf/sf_default/images/icons/.svn/entries | 402 + .../icons/.svn/prop-base/cancel48.png.svn-base | 5 + .../icons/.svn/prop-base/colour16.png.svn-base | 5 + .../images/icons/.svn/prop-base/db16.png.svn-base | 5 + .../icons/.svn/prop-base/disabled48.png.svn-base | 5 + .../icons/.svn/prop-base/edit16.png.svn-base | 5 + .../icons/.svn/prop-base/folder16.png.svn-base | 5 + .../icons/.svn/prop-base/linkOut16.png.svn-base | 5 + .../icons/.svn/prop-base/lock48.png.svn-base | 5 + .../images/icons/.svn/prop-base/ok48.png.svn-base | 5 + .../icons/.svn/prop-base/reload16.png.svn-base | 5 + .../icons/.svn/prop-base/tools48.png.svn-base | 5 + .../icons/.svn/text-base/cancel48.png.svn-base | Bin 0 -> 3669 bytes .../icons/.svn/text-base/colour16.png.svn-base | Bin 0 -> 927 bytes .../images/icons/.svn/text-base/db16.png.svn-base | Bin 0 -> 661 bytes .../icons/.svn/text-base/disabled48.png.svn-base | Bin 0 -> 4037 bytes .../icons/.svn/text-base/edit16.png.svn-base | Bin 0 -> 590 bytes .../icons/.svn/text-base/folder16.png.svn-base | Bin 0 -> 623 bytes .../icons/.svn/text-base/linkOut16.png.svn-base | Bin 0 -> 599 bytes .../icons/.svn/text-base/lock48.png.svn-base | Bin 0 -> 2287 bytes .../images/icons/.svn/text-base/ok48.png.svn-base | Bin 0 -> 3106 bytes .../icons/.svn/text-base/reload16.png.svn-base | Bin 0 -> 761 bytes .../icons/.svn/text-base/tools48.png.svn-base | Bin 0 -> 4170 bytes .../web/sf/sf_default/images/icons/cancel48.png | Bin 0 -> 3669 bytes .../web/sf/sf_default/images/icons/colour16.png | Bin 0 -> 927 bytes .../data/web/sf/sf_default/images/icons/db16.png | Bin 0 -> 661 bytes .../web/sf/sf_default/images/icons/disabled48.png | Bin 0 -> 4037 bytes .../data/web/sf/sf_default/images/icons/edit16.png | Bin 0 -> 590 bytes .../web/sf/sf_default/images/icons/folder16.png | Bin 0 -> 623 bytes .../web/sf/sf_default/images/icons/linkOut16.png | Bin 0 -> 599 bytes .../data/web/sf/sf_default/images/icons/lock48.png | Bin 0 -> 2287 bytes .../data/web/sf/sf_default/images/icons/ok48.png | Bin 0 -> 3106 bytes .../web/sf/sf_default/images/icons/reload16.png | Bin 0 -> 761 bytes .../web/sf/sf_default/images/icons/tools48.png | Bin 0 -> 4170 bytes .../data/web/sf/sf_default/images/sfTLogo.png | Bin 0 -> 5139 bytes .../data/web/sf/sf_default/images/trans.gif | Bin 0 -> 63 bytes .../data/web/sf/sf_web_debug/.svn/all-wcprops | 5 + .../symfony/data/web/sf/sf_web_debug/.svn/entries | 31 + .../web/sf/sf_web_debug/images/.svn/all-wcprops | 89 + .../data/web/sf/sf_web_debug/images/.svn/entries | 504 + .../images/.svn/prop-base/close.png.svn-base | 5 + .../images/.svn/prop-base/config.png.svn-base | 9 + .../images/.svn/prop-base/database.png.svn-base | 9 + .../images/.svn/prop-base/email.png.svn-base | 5 + .../images/.svn/prop-base/error.png.svn-base | 5 + .../images/.svn/prop-base/info.png.svn-base | 5 + .../images/.svn/prop-base/log.png.svn-base | 9 + .../images/.svn/prop-base/memory.png.svn-base | 9 + .../images/.svn/prop-base/reload.png.svn-base | 5 + .../images/.svn/prop-base/sf.png.svn-base | 5 + .../images/.svn/prop-base/time.png.svn-base | 9 + .../images/.svn/prop-base/toggle.gif.svn-base | 5 + .../images/.svn/prop-base/view.png.svn-base | 5 + .../images/.svn/prop-base/warning.png.svn-base | 5 + .../images/.svn/text-base/close.png.svn-base | Bin 0 -> 366 bytes .../images/.svn/text-base/config.png.svn-base | Bin 0 -> 409 bytes .../images/.svn/text-base/database.png.svn-base | Bin 0 -> 263 bytes .../images/.svn/text-base/email.png.svn-base | Bin 0 -> 346 bytes .../images/.svn/text-base/error.png.svn-base | Bin 0 -> 665 bytes .../images/.svn/text-base/info.png.svn-base | Bin 0 -> 672 bytes .../images/.svn/text-base/log.png.svn-base | Bin 0 -> 434 bytes .../images/.svn/text-base/memory.png.svn-base | Bin 0 -> 290 bytes .../images/.svn/text-base/reload.png.svn-base | Bin 0 -> 691 bytes .../images/.svn/text-base/sf.png.svn-base | Bin 0 -> 3745 bytes .../images/.svn/text-base/time.png.svn-base | Bin 0 -> 466 bytes .../images/.svn/text-base/toggle.gif.svn-base | Bin 0 -> 845 bytes .../images/.svn/text-base/view.png.svn-base | Bin 0 -> 274 bytes .../images/.svn/text-base/warning.png.svn-base | Bin 0 -> 671 bytes .../data/web/sf/sf_web_debug/images/close.png | Bin 0 -> 366 bytes .../data/web/sf/sf_web_debug/images/config.png | Bin 0 -> 409 bytes .../data/web/sf/sf_web_debug/images/database.png | Bin 0 -> 263 bytes .../data/web/sf/sf_web_debug/images/email.png | Bin 0 -> 346 bytes .../data/web/sf/sf_web_debug/images/error.png | Bin 0 -> 665 bytes .../data/web/sf/sf_web_debug/images/info.png | Bin 0 -> 672 bytes .../data/web/sf/sf_web_debug/images/log.png | Bin 0 -> 434 bytes .../data/web/sf/sf_web_debug/images/memory.png | Bin 0 -> 290 bytes .../data/web/sf/sf_web_debug/images/reload.png | Bin 0 -> 691 bytes .../symfony/data/web/sf/sf_web_debug/images/sf.png | Bin 0 -> 3745 bytes .../data/web/sf/sf_web_debug/images/time.png | Bin 0 -> 466 bytes .../data/web/sf/sf_web_debug/images/toggle.gif | Bin 0 -> 845 bytes .../data/web/sf/sf_web_debug/images/view.png | Bin 0 -> 274 bytes .../data/web/sf/sf_web_debug/images/warning.png | Bin 0 -> 671 bytes lib/vendor/symfony/lib/.svn/all-wcprops | 5 + lib/vendor/symfony/lib/.svn/dir-prop-base | 7 + lib/vendor/symfony/lib/.svn/entries | 124 + lib/vendor/symfony/lib/action/.svn/all-wcprops | 41 + lib/vendor/symfony/lib/action/.svn/entries | 232 + .../.svn/prop-base/sfAction.class.php.svn-base | 13 + .../prop-base/sfActionStack.class.php.svn-base | 13 + .../sfActionStackEntry.class.php.svn-base | 13 + .../.svn/prop-base/sfActions.class.php.svn-base | 13 + .../.svn/prop-base/sfComponent.class.php.svn-base | 13 + .../.svn/prop-base/sfComponents.class.php.svn-base | 13 + .../.svn/text-base/sfAction.class.php.svn-base | 523 + .../text-base/sfActionStack.class.php.svn-base | 119 + .../sfActionStackEntry.class.php.svn-base | 94 + .../.svn/text-base/sfActions.class.php.svn-base | 62 + .../.svn/text-base/sfComponent.class.php.svn-base | 378 + .../.svn/text-base/sfComponents.class.php.svn-base | 30 + lib/vendor/symfony/lib/action/sfAction.class.php | 523 + .../symfony/lib/action/sfActionStack.class.php | 119 + .../lib/action/sfActionStackEntry.class.php | 94 + lib/vendor/symfony/lib/action/sfActions.class.php | 62 + .../symfony/lib/action/sfComponent.class.php | 378 + .../symfony/lib/action/sfComponents.class.php | 30 + lib/vendor/symfony/lib/addon/.svn/all-wcprops | 17 + lib/vendor/symfony/lib/addon/.svn/entries | 96 + .../addon/.svn/prop-base/sfData.class.php.svn-base | 9 + .../.svn/prop-base/sfPager.class.php.svn-base | 13 + .../addon/.svn/text-base/sfData.class.php.svn-base | 130 + .../.svn/text-base/sfPager.class.php.svn-base | 614 + lib/vendor/symfony/lib/addon/sfData.class.php | 130 + lib/vendor/symfony/lib/addon/sfPager.class.php | 614 + lib/vendor/symfony/lib/autoload/.svn/all-wcprops | 29 + lib/vendor/symfony/lib/autoload/.svn/entries | 164 + .../.svn/prop-base/sfAutoload.class.php.svn-base | 13 + .../prop-base/sfAutoloadAgain.class.php.svn-base | 9 + .../prop-base/sfCoreAutoload.class.php.svn-base | 13 + .../prop-base/sfSimpleAutoload.class.php.svn-base | 13 + .../.svn/text-base/sfAutoload.class.php.svn-base | 229 + .../text-base/sfAutoloadAgain.class.php.svn-base | 132 + .../text-base/sfCoreAutoload.class.php.svn-base | 521 + .../text-base/sfSimpleAutoload.class.php.svn-base | 340 + .../symfony/lib/autoload/sfAutoload.class.php | 229 + .../symfony/lib/autoload/sfAutoloadAgain.class.php | 132 + .../symfony/lib/autoload/sfCoreAutoload.class.php | 521 + .../lib/autoload/sfSimpleAutoload.class.php | 340 + lib/vendor/symfony/lib/cache/.svn/all-wcprops | 59 + lib/vendor/symfony/lib/cache/.svn/entries | 334 + .../.svn/prop-base/sfAPCCache.class.php.svn-base | 13 + .../.svn/prop-base/sfCache.class.php.svn-base | 13 + .../sfEAcceleratorCache.class.php.svn-base | 13 + .../.svn/prop-base/sfFileCache.class.php.svn-base | 13 + .../prop-base/sfFunctionCache.class.php.svn-base | 13 + .../prop-base/sfMemcacheCache.class.php.svn-base | 13 + .../.svn/prop-base/sfNoCache.class.php.svn-base | 13 + .../prop-base/sfSQLiteCache.class.php.svn-base | 13 + .../prop-base/sfXCacheCache.class.php.svn-base | 13 + .../.svn/text-base/sfAPCCache.class.php.svn-base | 167 + .../.svn/text-base/sfCache.class.php.svn-base | 231 + .../sfEAcceleratorCache.class.php.svn-base | 168 + .../.svn/text-base/sfFileCache.class.php.svn-base | 335 + .../text-base/sfFunctionCache.class.php.svn-base | 112 + .../text-base/sfMemcacheCache.class.php.svn-base | 283 + .../.svn/text-base/sfNoCache.class.php.svn-base | 84 + .../text-base/sfSQLiteCache.class.php.svn-base | 228 + .../text-base/sfXCacheCache.class.php.svn-base | 212 + lib/vendor/symfony/lib/cache/sfAPCCache.class.php | 167 + lib/vendor/symfony/lib/cache/sfCache.class.php | 231 + .../lib/cache/sfEAcceleratorCache.class.php | 168 + lib/vendor/symfony/lib/cache/sfFileCache.class.php | 335 + .../symfony/lib/cache/sfFunctionCache.class.php | 112 + .../symfony/lib/cache/sfMemcacheCache.class.php | 283 + lib/vendor/symfony/lib/cache/sfNoCache.class.php | 84 + .../symfony/lib/cache/sfSQLiteCache.class.php | 228 + .../symfony/lib/cache/sfXCacheCache.class.php | 212 + lib/vendor/symfony/lib/command/.svn/all-wcprops | 83 + lib/vendor/symfony/lib/command/.svn/entries | 470 + .../lib/command/.svn/prop-base/cli.php.svn-base | 13 + .../sfAnsiColorFormatter.class.php.svn-base | 13 + .../sfCommandApplication.class.php.svn-base | 13 + .../prop-base/sfCommandArgument.class.php.svn-base | 13 + .../sfCommandArgumentSet.class.php.svn-base | 13 + .../sfCommandArgumentsException.class.php.svn-base | 13 + .../sfCommandException.class.php.svn-base | 13 + .../prop-base/sfCommandLogger.class.php.svn-base | 13 + .../prop-base/sfCommandManager.class.php.svn-base | 13 + .../prop-base/sfCommandOption.class.php.svn-base | 13 + .../sfCommandOptionSet.class.php.svn-base | 13 + .../.svn/prop-base/sfFormatter.class.php.svn-base | 13 + .../sfSymfonyCommandApplication.class.php.svn-base | 13 + .../lib/command/.svn/text-base/cli.php.svn-base | 35 + .../sfAnsiColorFormatter.class.php.svn-base | 128 + .../sfCommandApplication.class.php.svn-base | 658 + .../text-base/sfCommandArgument.class.php.svn-base | 134 + .../sfCommandArgumentSet.class.php.svn-base | 179 + .../sfCommandArgumentsException.class.php.svn-base | 21 + .../sfCommandException.class.php.svn-base | 21 + .../text-base/sfCommandLogger.class.php.svn-base | 61 + .../text-base/sfCommandManager.class.php.svn-base | 381 + .../text-base/sfCommandOption.class.php.svn-base | 186 + .../sfCommandOptionSet.class.php.svn-base | 176 + .../.svn/text-base/sfFormatter.class.php.svn-base | 118 + .../sfSymfonyCommandApplication.class.php.svn-base | 153 + lib/vendor/symfony/lib/command/cli.php | 35 + .../lib/command/sfAnsiColorFormatter.class.php | 128 + .../lib/command/sfCommandApplication.class.php | 658 + .../lib/command/sfCommandArgument.class.php | 134 + .../lib/command/sfCommandArgumentSet.class.php | 179 + .../command/sfCommandArgumentsException.class.php | 21 + .../lib/command/sfCommandException.class.php | 21 + .../symfony/lib/command/sfCommandLogger.class.php | 61 + .../symfony/lib/command/sfCommandManager.class.php | 381 + .../symfony/lib/command/sfCommandOption.class.php | 186 + .../lib/command/sfCommandOptionSet.class.php | 176 + .../symfony/lib/command/sfFormatter.class.php | 118 + .../command/sfSymfonyCommandApplication.class.php | 153 + lib/vendor/symfony/lib/config/.svn/all-wcprops | 131 + lib/vendor/symfony/lib/config/.svn/entries | 745 + .../sfApplicationConfiguration.class.php.svn-base | 13 + .../sfAutoloadConfigHandler.class.php.svn-base | 13 + .../sfCacheConfigHandler.class.php.svn-base | 13 + .../sfCompileConfigHandler.class.php.svn-base | 13 + .../.svn/prop-base/sfConfig.class.php.svn-base | 13 + .../prop-base/sfConfigCache.class.php.svn-base | 13 + .../prop-base/sfConfigHandler.class.php.svn-base | 13 + .../sfDatabaseConfigHandler.class.php.svn-base | 13 + ...fineEnvironmentConfigHandler.class.php.svn-base | 13 + .../sfFactoryConfigHandler.class.php.svn-base | 13 + .../sfFilterConfigHandler.class.php.svn-base | 13 + .../sfGeneratorConfigHandler.class.php.svn-base | 13 + .../sfPluginConfiguration.class.php.svn-base | 9 + ...sfPluginConfigurationGeneric.class.php.svn-base | 9 + .../sfProjectConfiguration.class.php.svn-base | 13 + .../sfRootConfigHandler.class.php.svn-base | 13 + .../sfRoutingConfigHandler.class.php.svn-base | 13 + .../sfSecurityConfigHandler.class.php.svn-base | 13 + .../sfSimpleYamlConfigHandler.class.php.svn-base | 13 + .../sfViewConfigHandler.class.php.svn-base | 13 + .../sfYamlConfigHandler.class.php.svn-base | 13 + .../sfApplicationConfiguration.class.php.svn-base | 700 + .../sfAutoloadConfigHandler.class.php.svn-base | 188 + .../sfCacheConfigHandler.class.php.svn-base | 114 + .../sfCompileConfigHandler.class.php.svn-base | 116 + .../.svn/text-base/sfConfig.class.php.svn-base | 92 + .../text-base/sfConfigCache.class.php.svn-base | 393 + .../text-base/sfConfigHandler.class.php.svn-base | 133 + .../sfDatabaseConfigHandler.class.php.svn-base | 149 + ...fineEnvironmentConfigHandler.class.php.svn-base | 148 + .../sfFactoryConfigHandler.class.php.svn-base | 256 + .../sfFilterConfigHandler.class.php.svn-base | 207 + .../sfGeneratorConfigHandler.class.php.svn-base | 92 + .../sfPluginConfiguration.class.php.svn-base | 232 + ...sfPluginConfigurationGeneric.class.php.svn-base | 28 + .../sfProjectConfiguration.class.php.svn-base | 635 + .../sfRootConfigHandler.class.php.svn-base | 113 + .../sfRoutingConfigHandler.class.php.svn-base | 116 + .../sfSecurityConfigHandler.class.php.svn-base | 58 + .../sfSimpleYamlConfigHandler.class.php.svn-base | 48 + .../sfViewConfigHandler.class.php.svn-base | 344 + .../sfYamlConfigHandler.class.php.svn-base | 158 + .../symfony/lib/config/config/.svn/all-wcprops | 59 + lib/vendor/symfony/lib/config/config/.svn/entries | 334 + .../config/.svn/prop-base/autoload.yml.svn-base | 13 + .../.svn/prop-base/config_handlers.yml.svn-base | 13 + .../.svn/prop-base/core_compile.yml.svn-base | 13 + .../config/.svn/prop-base/factories.yml.svn-base | 13 + .../config/.svn/prop-base/module.yml.svn-base | 13 + .../config/.svn/prop-base/settings.yml.svn-base | 13 + .../config/.svn/text-base/autoload.yml.svn-base | 24 + .../.svn/text-base/config_handlers.yml.svn-base | 45 + .../.svn/text-base/core_compile.yml.svn-base | 39 + .../config/.svn/text-base/factories.yml.svn-base | 114 + .../config/.svn/text-base/filters.yml.svn-base | 24 + .../config/.svn/text-base/module.yml.svn-base | 3 + .../config/.svn/text-base/security.yml.svn-base | 0 .../config/.svn/text-base/settings.yml.svn-base | 58 + .../config/config/.svn/text-base/view.yml.svn-base | 1 + lib/vendor/symfony/lib/config/config/autoload.yml | 24 + .../symfony/lib/config/config/config_handlers.yml | 45 + .../symfony/lib/config/config/core_compile.yml | 39 + lib/vendor/symfony/lib/config/config/factories.yml | 114 + lib/vendor/symfony/lib/config/config/filters.yml | 24 + lib/vendor/symfony/lib/config/config/module.yml | 3 + lib/vendor/symfony/lib/config/config/security.yml | 0 lib/vendor/symfony/lib/config/config/settings.yml | 58 + lib/vendor/symfony/lib/config/config/view.yml | 1 + .../config/sfApplicationConfiguration.class.php | 700 + .../lib/config/sfAutoloadConfigHandler.class.php | 188 + .../lib/config/sfCacheConfigHandler.class.php | 114 + .../lib/config/sfCompileConfigHandler.class.php | 116 + lib/vendor/symfony/lib/config/sfConfig.class.php | 92 + .../symfony/lib/config/sfConfigCache.class.php | 393 + .../symfony/lib/config/sfConfigHandler.class.php | 133 + .../lib/config/sfDatabaseConfigHandler.class.php | 149 + .../sfDefineEnvironmentConfigHandler.class.php | 148 + .../lib/config/sfFactoryConfigHandler.class.php | 256 + .../lib/config/sfFilterConfigHandler.class.php | 207 + .../lib/config/sfGeneratorConfigHandler.class.php | 92 + .../lib/config/sfPluginConfiguration.class.php | 232 + .../config/sfPluginConfigurationGeneric.class.php | 28 + .../lib/config/sfProjectConfiguration.class.php | 635 + .../lib/config/sfRootConfigHandler.class.php | 113 + .../lib/config/sfRoutingConfigHandler.class.php | 116 + .../lib/config/sfSecurityConfigHandler.class.php | 58 + .../lib/config/sfSimpleYamlConfigHandler.class.php | 48 + .../lib/config/sfViewConfigHandler.class.php | 344 + .../lib/config/sfYamlConfigHandler.class.php | 158 + lib/vendor/symfony/lib/controller/.svn/all-wcprops | 23 + lib/vendor/symfony/lib/controller/.svn/entries | 133 + .../.svn/prop-base/sfController.class.php.svn-base | 13 + .../sfFrontWebController.class.php.svn-base | 13 + .../prop-base/sfWebController.class.php.svn-base | 13 + .../.svn/text-base/sfController.class.php.svn-base | 513 + .../sfFrontWebController.class.php.svn-base | 59 + .../text-base/sfWebController.class.php.svn-base | 207 + .../lib/controller/default/.svn/all-wcprops | 5 + .../symfony/lib/controller/default/.svn/entries | 34 + .../controller/default/actions/.svn/all-wcprops | 11 + .../lib/controller/default/actions/.svn/entries | 62 + .../.svn/prop-base/actions.class.php.svn-base | 13 + .../.svn/text-base/actions.class.php.svn-base | 68 + .../controller/default/actions/actions.class.php | 68 + .../controller/default/templates/.svn/all-wcprops | 47 + .../lib/controller/default/templates/.svn/entries | 266 + .../.svn/prop-base/defaultLayout.php.svn-base | 13 + .../.svn/prop-base/disabledSuccess.php.svn-base | 13 + .../.svn/prop-base/error404Success.php.svn-base | 13 + .../.svn/prop-base/indexSuccess.php.svn-base | 13 + .../.svn/prop-base/loginSuccess.php.svn-base | 13 + .../.svn/prop-base/moduleSuccess.php.svn-base | 13 + .../.svn/prop-base/secureSuccess.php.svn-base | 13 + .../.svn/text-base/defaultLayout.php.svn-base | 25 + .../.svn/text-base/disabledSuccess.php.svn-base | 19 + .../.svn/text-base/error404Success.php.svn-base | 27 + .../.svn/text-base/indexSuccess.php.svn-base | 25 + .../.svn/text-base/loginSuccess.php.svn-base | 21 + .../.svn/text-base/moduleSuccess.php.svn-base | 23 + .../.svn/text-base/secureSuccess.php.svn-base | 23 + .../controller/default/templates/defaultLayout.php | 25 + .../default/templates/disabledSuccess.php | 19 + .../default/templates/error404Success.php | 27 + .../controller/default/templates/indexSuccess.php | 25 + .../controller/default/templates/loginSuccess.php | 21 + .../controller/default/templates/moduleSuccess.php | 23 + .../controller/default/templates/secureSuccess.php | 23 + .../symfony/lib/controller/sfController.class.php | 513 + .../lib/controller/sfFrontWebController.class.php | 59 + .../lib/controller/sfWebController.class.php | 207 + lib/vendor/symfony/lib/database/.svn/all-wcprops | 41 + lib/vendor/symfony/lib/database/.svn/entries | 232 + .../.svn/prop-base/sfDatabase.class.php.svn-base | 13 + .../prop-base/sfDatabaseManager.class.php.svn-base | 13 + .../prop-base/sfMySQLDatabase.class.php.svn-base | 13 + .../prop-base/sfMySQLiDatabase.class.php.svn-base | 9 + .../prop-base/sfPDODatabase.class.php.svn-base | 13 + .../sfPostgreSQLDatabase.class.php.svn-base | 13 + .../.svn/text-base/sfDatabase.class.php.svn-base | 170 + .../text-base/sfDatabaseManager.class.php.svn-base | 137 + .../text-base/sfMySQLDatabase.class.php.svn-base | 124 + .../text-base/sfMySQLiDatabase.class.php.svn-base | 57 + .../text-base/sfPDODatabase.class.php.svn-base | 114 + .../sfPostgreSQLDatabase.class.php.svn-base | 82 + .../symfony/lib/database/sfDatabase.class.php | 170 + .../lib/database/sfDatabaseManager.class.php | 137 + .../symfony/lib/database/sfMySQLDatabase.class.php | 124 + .../lib/database/sfMySQLiDatabase.class.php | 57 + .../symfony/lib/database/sfPDODatabase.class.php | 114 + .../lib/database/sfPostgreSQLDatabase.class.php | 82 + lib/vendor/symfony/lib/debug/.svn/all-wcprops | 83 + lib/vendor/symfony/lib/debug/.svn/entries | 470 + .../.svn/prop-base/sfDebug.class.php.svn-base | 13 + .../.svn/prop-base/sfTimer.class.php.svn-base | 13 + .../prop-base/sfTimerManager.class.php.svn-base | 13 + .../.svn/prop-base/sfWebDebug.class.php.svn-base | 13 + .../prop-base/sfWebDebugPanel.class.php.svn-base | 13 + .../sfWebDebugPanelCache.class.php.svn-base | 13 + .../sfWebDebugPanelConfig.class.php.svn-base | 13 + .../sfWebDebugPanelLogs.class.php.svn-base | 13 + .../sfWebDebugPanelMailer.class.php.svn-base | 9 + .../sfWebDebugPanelMemory.class.php.svn-base | 13 + ...fWebDebugPanelSymfonyVersion.class.php.svn-base | 13 + .../sfWebDebugPanelTimer.class.php.svn-base | 13 + .../sfWebDebugPanelView.class.php.svn-base | 9 + .../.svn/text-base/sfDebug.class.php.svn-base | 272 + .../.svn/text-base/sfTimer.class.php.svn-base | 84 + .../text-base/sfTimerManager.class.php.svn-base | 61 + .../.svn/text-base/sfWebDebug.class.php.svn-base | 820 + .../text-base/sfWebDebugPanel.class.php.svn-base | 203 + .../sfWebDebugPanelCache.class.php.svn-base | 49 + .../sfWebDebugPanelConfig.class.php.svn-base | 81 + .../sfWebDebugPanelLogs.class.php.svn-base | 125 + .../sfWebDebugPanelMailer.class.php.svn-base | 105 + .../sfWebDebugPanelMemory.class.php.svn-base | 35 + ...fWebDebugPanelSymfonyVersion.class.php.svn-base | 33 + .../sfWebDebugPanelTimer.class.php.svn-base | 90 + .../sfWebDebugPanelView.class.php.svn-base | 366 + lib/vendor/symfony/lib/debug/sfDebug.class.php | 272 + lib/vendor/symfony/lib/debug/sfTimer.class.php | 84 + .../symfony/lib/debug/sfTimerManager.class.php | 61 + lib/vendor/symfony/lib/debug/sfWebDebug.class.php | 820 + .../symfony/lib/debug/sfWebDebugPanel.class.php | 203 + .../lib/debug/sfWebDebugPanelCache.class.php | 49 + .../lib/debug/sfWebDebugPanelConfig.class.php | 81 + .../lib/debug/sfWebDebugPanelLogs.class.php | 125 + .../lib/debug/sfWebDebugPanelMailer.class.php | 105 + .../lib/debug/sfWebDebugPanelMemory.class.php | 35 + .../debug/sfWebDebugPanelSymfonyVersion.class.php | 33 + .../lib/debug/sfWebDebugPanelTimer.class.php | 90 + .../lib/debug/sfWebDebugPanelView.class.php | 366 + lib/vendor/symfony/lib/escaper/.svn/all-wcprops | 41 + lib/vendor/symfony/lib/escaper/.svn/entries | 232 + .../prop-base/sfOutputEscaper.class.php.svn-base | 13 + ...fOutputEscaperArrayDecorator.class.php.svn-base | 13 + ...OutputEscaperGetterDecorator.class.php.svn-base | 13 + ...tputEscaperIteratorDecorator.class.php.svn-base | 13 + ...OutputEscaperObjectDecorator.class.php.svn-base | 13 + .../sfOutputEscaperSafe.class.php.svn-base | 13 + .../text-base/sfOutputEscaper.class.php.svn-base | 243 + ...fOutputEscaperArrayDecorator.class.php.svn-base | 176 + ...OutputEscaperGetterDecorator.class.php.svn-base | 54 + ...tputEscaperIteratorDecorator.class.php.svn-base | 159 + ...OutputEscaperObjectDecorator.class.php.svn-base | 122 + .../sfOutputEscaperSafe.class.php.svn-base | 78 + .../symfony/lib/escaper/sfOutputEscaper.class.php | 243 + .../sfOutputEscaperArrayDecorator.class.php | 176 + .../sfOutputEscaperGetterDecorator.class.php | 54 + .../sfOutputEscaperIteratorDecorator.class.php | 159 + .../sfOutputEscaperObjectDecorator.class.php | 122 + .../lib/escaper/sfOutputEscaperSafe.class.php | 78 + .../symfony/lib/event_dispatcher/.svn/all-wcprops | 17 + .../symfony/lib/event_dispatcher/.svn/entries | 96 + .../.svn/text-base/sfEvent.php.svn-base | 162 + .../.svn/text-base/sfEventDispatcher.php.svn-base | 159 + .../symfony/lib/event_dispatcher/sfEvent.php | 162 + .../lib/event_dispatcher/sfEventDispatcher.php | 159 + lib/vendor/symfony/lib/exception/.svn/all-wcprops | 107 + lib/vendor/symfony/lib/exception/.svn/entries | 609 + .../prop-base/sfCacheException.class.php.svn-base | 13 + .../sfConfigurationException.class.php.svn-base | 13 + .../sfControllerException.class.php.svn-base | 13 + .../sfDatabaseException.class.php.svn-base | 13 + .../sfError404Exception.class.php.svn-base | 13 + .../.svn/prop-base/sfException.class.php.svn-base | 13 + .../sfFactoryException.class.php.svn-base | 13 + .../prop-base/sfFileException.class.php.svn-base | 13 + .../prop-base/sfFilterException.class.php.svn-base | 13 + .../sfForwardException.class.php.svn-base | 13 + .../sfInitializationException.class.php.svn-base | 13 + .../prop-base/sfParseException.class.php.svn-base | 13 + .../prop-base/sfRenderException.class.php.svn-base | 13 + .../sfSecurityException.class.php.svn-base | 13 + .../prop-base/sfStopException.class.php.svn-base | 13 + .../sfStorageException.class.php.svn-base | 13 + .../prop-base/sfViewException.class.php.svn-base | 13 + .../text-base/sfCacheException.class.php.svn-base | 23 + .../sfConfigurationException.class.php.svn-base | 24 + .../sfControllerException.class.php.svn-base | 24 + .../sfDatabaseException.class.php.svn-base | 23 + .../sfError404Exception.class.php.svn-base | 52 + .../.svn/text-base/sfException.class.php.svn-base | 448 + .../sfFactoryException.class.php.svn-base | 24 + .../text-base/sfFileException.class.php.svn-base | 23 + .../text-base/sfFilterException.class.php.svn-base | 24 + .../sfForwardException.class.php.svn-base | 24 + .../sfInitializationException.class.php.svn-base | 23 + .../text-base/sfParseException.class.php.svn-base | 24 + .../text-base/sfRenderException.class.php.svn-base | 23 + .../sfSecurityException.class.php.svn-base | 23 + .../text-base/sfStopException.class.php.svn-base | 27 + .../sfStorageException.class.php.svn-base | 24 + .../text-base/sfViewException.class.php.svn-base | 23 + .../symfony/lib/exception/data/.svn/all-wcprops | 107 + lib/vendor/symfony/lib/exception/data/.svn/entries | 606 + .../data/.svn/prop-base/error.atom.php.svn-base | 13 + .../data/.svn/prop-base/error.css.php.svn-base | 13 + .../data/.svn/prop-base/error.html.php.svn-base | 13 + .../data/.svn/prop-base/error.js.php.svn-base | 13 + .../data/.svn/prop-base/error.json.php.svn-base | 13 + .../data/.svn/prop-base/error.rdf.php.svn-base | 13 + .../data/.svn/prop-base/error.txt.php.svn-base | 13 + .../data/.svn/prop-base/error.xml.php.svn-base | 13 + .../.svn/prop-base/exception.atom.php.svn-base | 13 + .../data/.svn/prop-base/exception.css.php.svn-base | 13 + .../.svn/prop-base/exception.html.php.svn-base | 13 + .../data/.svn/prop-base/exception.js.php.svn-base | 13 + .../.svn/prop-base/exception.json.php.svn-base | 13 + .../data/.svn/prop-base/exception.rdf.php.svn-base | 13 + .../data/.svn/prop-base/exception.txt.php.svn-base | 17 + .../data/.svn/prop-base/exception.xml.php.svn-base | 13 + .../data/.svn/prop-base/unavailable.php.svn-base | 13 + .../data/.svn/text-base/error.atom.php.svn-base | 1 + .../data/.svn/text-base/error.css.php.svn-base | 3 + .../data/.svn/text-base/error.html.php.svn-base | 49 + .../data/.svn/text-base/error.js.php.svn-base | 3 + .../data/.svn/text-base/error.json.php.svn-base | 5 + .../data/.svn/text-base/error.rdf.php.svn-base | 1 + .../data/.svn/text-base/error.txt.php.svn-base | 8 + .../data/.svn/text-base/error.xml.php.svn-base | 2 + .../.svn/text-base/exception.atom.php.svn-base | 1 + .../data/.svn/text-base/exception.css.php.svn-base | 10 + .../.svn/text-base/exception.html.php.svn-base | 64 + .../data/.svn/text-base/exception.js.php.svn-base | 10 + .../.svn/text-base/exception.json.php.svn-base | 10 + .../data/.svn/text-base/exception.rdf.php.svn-base | 1 + .../data/.svn/text-base/exception.txt.php.svn-base | 11 + .../data/.svn/text-base/exception.xml.php.svn-base | 12 + .../data/.svn/text-base/unavailable.php.svn-base | 44 + .../symfony/lib/exception/data/error.atom.php | 1 + .../symfony/lib/exception/data/error.css.php | 3 + .../symfony/lib/exception/data/error.html.php | 49 + lib/vendor/symfony/lib/exception/data/error.js.php | 3 + .../symfony/lib/exception/data/error.json.php | 5 + .../symfony/lib/exception/data/error.rdf.php | 1 + .../symfony/lib/exception/data/error.txt.php | 8 + .../symfony/lib/exception/data/error.xml.php | 2 + .../symfony/lib/exception/data/exception.atom.php | 1 + .../symfony/lib/exception/data/exception.css.php | 10 + .../symfony/lib/exception/data/exception.html.php | 64 + .../symfony/lib/exception/data/exception.js.php | 10 + .../symfony/lib/exception/data/exception.json.php | 10 + .../symfony/lib/exception/data/exception.rdf.php | 1 + .../symfony/lib/exception/data/exception.txt.php | 11 + .../symfony/lib/exception/data/exception.xml.php | 12 + .../symfony/lib/exception/data/unavailable.php | 44 + .../lib/exception/sfCacheException.class.php | 23 + .../exception/sfConfigurationException.class.php | 24 + .../lib/exception/sfControllerException.class.php | 24 + .../lib/exception/sfDatabaseException.class.php | 23 + .../lib/exception/sfError404Exception.class.php | 52 + .../symfony/lib/exception/sfException.class.php | 448 + .../lib/exception/sfFactoryException.class.php | 24 + .../lib/exception/sfFileException.class.php | 23 + .../lib/exception/sfFilterException.class.php | 24 + .../lib/exception/sfForwardException.class.php | 24 + .../exception/sfInitializationException.class.php | 23 + .../lib/exception/sfParseException.class.php | 24 + .../lib/exception/sfRenderException.class.php | 23 + .../lib/exception/sfSecurityException.class.php | 23 + .../lib/exception/sfStopException.class.php | 27 + .../lib/exception/sfStorageException.class.php | 24 + .../lib/exception/sfViewException.class.php | 23 + lib/vendor/symfony/lib/filter/.svn/all-wcprops | 47 + lib/vendor/symfony/lib/filter/.svn/entries | 266 + .../sfBasicSecurityFilter.class.php.svn-base | 13 + .../prop-base/sfCacheFilter.class.php.svn-base | 13 + .../prop-base/sfExecutionFilter.class.php.svn-base | 13 + .../.svn/prop-base/sfFilter.class.php.svn-base | 13 + .../prop-base/sfFilterChain.class.php.svn-base | 13 + .../prop-base/sfRenderingFilter.class.php.svn-base | 13 + .../sfBasicSecurityFilter.class.php.svn-base | 108 + .../text-base/sfCacheFilter.class.php.svn-base | 227 + .../text-base/sfCommonFilter.class.php.svn-base | 58 + .../text-base/sfExecutionFilter.class.php.svn-base | 165 + .../.svn/text-base/sfFilter.class.php.svn-base | 151 + .../text-base/sfFilterChain.class.php.svn-base | 86 + .../text-base/sfRenderingFilter.class.php.svn-base | 54 + .../lib/filter/sfBasicSecurityFilter.class.php | 108 + .../symfony/lib/filter/sfCacheFilter.class.php | 227 + .../symfony/lib/filter/sfCommonFilter.class.php | 58 + .../symfony/lib/filter/sfExecutionFilter.class.php | 165 + lib/vendor/symfony/lib/filter/sfFilter.class.php | 151 + .../symfony/lib/filter/sfFilterChain.class.php | 86 + .../symfony/lib/filter/sfRenderingFilter.class.php | 54 + lib/vendor/symfony/lib/form/.svn/all-wcprops | 23 + lib/vendor/symfony/lib/form/.svn/entries | 133 + .../form/.svn/prop-base/sfForm.class.php.svn-base | 13 + .../.svn/prop-base/sfFormField.class.php.svn-base | 13 + .../prop-base/sfFormFieldSchema.class.php.svn-base | 13 + .../form/.svn/text-base/sfForm.class.php.svn-base | 1339 + .../.svn/text-base/sfFormField.class.php.svn-base | 325 + .../text-base/sfFormFieldSchema.class.php.svn-base | 219 + lib/vendor/symfony/lib/form/addon/.svn/all-wcprops | 23 + lib/vendor/symfony/lib/form/addon/.svn/entries | 130 + .../.svn/prop-base/sfFormFilter.class.php.svn-base | 13 + .../.svn/prop-base/sfFormObject.class.php.svn-base | 9 + .../prop-base/sfFormSymfony.class.php.svn-base | 9 + .../.svn/text-base/sfFormFilter.class.php.svn-base | 23 + .../.svn/text-base/sfFormObject.class.php.svn-base | 283 + .../text-base/sfFormSymfony.class.php.svn-base | 109 + .../symfony/lib/form/addon/sfFormFilter.class.php | 23 + .../symfony/lib/form/addon/sfFormObject.class.php | 283 + .../symfony/lib/form/addon/sfFormSymfony.class.php | 109 + lib/vendor/symfony/lib/form/sfForm.class.php | 1339 + lib/vendor/symfony/lib/form/sfFormField.class.php | 325 + .../symfony/lib/form/sfFormFieldSchema.class.php | 219 + lib/vendor/symfony/lib/generator/.svn/all-wcprops | 41 + lib/vendor/symfony/lib/generator/.svn/entries | 232 + .../.svn/prop-base/sfGenerator.class.php.svn-base | 13 + .../sfGeneratorManager.class.php.svn-base | 13 + .../prop-base/sfModelGenerator.class.php.svn-base | 13 + ...fModelGeneratorConfiguration.class.php.svn-base | 13 + ...lGeneratorConfigurationField.class.php.svn-base | 13 + .../sfModelGeneratorHelper.class.php.svn-base | 13 + .../.svn/text-base/sfGenerator.class.php.svn-base | 193 + .../sfGeneratorManager.class.php.svn-base | 115 + .../text-base/sfModelGenerator.class.php.svn-base | 458 + ...fModelGeneratorConfiguration.class.php.svn-base | 569 + ...lGeneratorConfigurationField.class.php.svn-base | 260 + .../sfModelGeneratorHelper.class.php.svn-base | 54 + .../symfony/lib/generator/sfGenerator.class.php | 193 + .../lib/generator/sfGeneratorManager.class.php | 115 + .../lib/generator/sfModelGenerator.class.php | 458 + .../sfModelGeneratorConfiguration.class.php | 569 + .../sfModelGeneratorConfigurationField.class.php | 260 + .../lib/generator/sfModelGeneratorHelper.class.php | 54 + lib/vendor/symfony/lib/helper/.svn/all-wcprops | 83 + lib/vendor/symfony/lib/helper/.svn/entries | 470 + .../helper/.svn/prop-base/AssetHelper.php.svn-base | 13 + .../helper/.svn/prop-base/CacheHelper.php.svn-base | 13 + .../helper/.svn/prop-base/DateHelper.php.svn-base | 13 + .../helper/.svn/prop-base/DebugHelper.php.svn-base | 13 + .../.svn/prop-base/EscapingHelper.php.svn-base | 13 + .../.svn/prop-base/HelperHelper.php.svn-base | 13 + .../helper/.svn/prop-base/I18NHelper.php.svn-base | 13 + .../prop-base/JavascriptBaseHelper.php.svn-base | 9 + .../.svn/prop-base/NumberHelper.php.svn-base | 13 + .../.svn/prop-base/PartialHelper.php.svn-base | 13 + .../helper/.svn/prop-base/TagHelper.php.svn-base | 13 + .../helper/.svn/prop-base/TextHelper.php.svn-base | 13 + .../helper/.svn/prop-base/UrlHelper.php.svn-base | 13 + .../helper/.svn/text-base/AssetHelper.php.svn-base | 709 + .../helper/.svn/text-base/CacheHelper.php.svn-base | 79 + .../helper/.svn/text-base/DateHelper.php.svn-base | 170 + .../helper/.svn/text-base/DebugHelper.php.svn-base | 9 + .../.svn/text-base/EscapingHelper.php.svn-base | 111 + .../.svn/text-base/HelperHelper.php.svn-base | 25 + .../helper/.svn/text-base/I18NHelper.php.svn-base | 93 + .../text-base/JavascriptBaseHelper.php.svn-base | 181 + .../.svn/text-base/NumberHelper.php.svn-base | 47 + .../.svn/text-base/PartialHelper.php.svn-base | 396 + .../helper/.svn/text-base/TagHelper.php.svn-base | 195 + .../helper/.svn/text-base/TextHelper.php.svn-base | 292 + .../helper/.svn/text-base/UrlHelper.php.svn-base | 655 + lib/vendor/symfony/lib/helper/AssetHelper.php | 709 + lib/vendor/symfony/lib/helper/CacheHelper.php | 79 + lib/vendor/symfony/lib/helper/DateHelper.php | 170 + lib/vendor/symfony/lib/helper/DebugHelper.php | 9 + lib/vendor/symfony/lib/helper/EscapingHelper.php | 111 + lib/vendor/symfony/lib/helper/HelperHelper.php | 25 + lib/vendor/symfony/lib/helper/I18NHelper.php | 93 + .../symfony/lib/helper/JavascriptBaseHelper.php | 181 + lib/vendor/symfony/lib/helper/NumberHelper.php | 47 + lib/vendor/symfony/lib/helper/PartialHelper.php | 396 + lib/vendor/symfony/lib/helper/TagHelper.php | 195 + lib/vendor/symfony/lib/helper/TextHelper.php | 292 + lib/vendor/symfony/lib/helper/UrlHelper.php | 655 + lib/vendor/symfony/lib/i18n/.svn/all-wcprops | 107 + lib/vendor/symfony/lib/i18n/.svn/entries | 615 + .../prop-base/sfChoiceFormat.class.php.svn-base | 13 + .../prop-base/sfCultureInfo.class.php.svn-base | 13 + .../.svn/prop-base/sfDateFormat.class.php.svn-base | 13 + .../sfDateTimeFormatInfo.class.php.svn-base | 13 + .../i18n/.svn/prop-base/sfI18N.class.php.svn-base | 13 + .../prop-base/sfIMessageSource.class.php.svn-base | 13 + .../prop-base/sfMessageFormat.class.php.svn-base | 13 + .../prop-base/sfMessageSource.class.php.svn-base | 13 + .../sfMessageSource_Aggregate.class.php.svn-base | 13 + .../sfMessageSource_Database.class.php.svn-base | 13 + .../sfMessageSource_File.class.php.svn-base | 13 + .../sfMessageSource_MySQL.class.php.svn-base | 13 + .../sfMessageSource_SQLite.class.php.svn-base | 13 + .../sfMessageSource_XLIFF.class.php.svn-base | 13 + .../sfMessageSource_gettext.class.php.svn-base | 13 + .../prop-base/sfNumberFormat.class.php.svn-base | 13 + .../sfNumberFormatInfo.class.php.svn-base | 13 + .../text-base/sfChoiceFormat.class.php.svn-base | 229 + .../text-base/sfCultureInfo.class.php.svn-base | 865 + .../.svn/text-base/sfDateFormat.class.php.svn-base | 817 + .../sfDateTimeFormatInfo.class.php.svn-base | 552 + .../i18n/.svn/text-base/sfI18N.class.php.svn-base | 435 + .../text-base/sfIMessageSource.class.php.svn-base | 132 + .../text-base/sfMessageFormat.class.php.svn-base | 262 + .../text-base/sfMessageSource.class.php.svn-base | 330 + .../sfMessageSource_Aggregate.class.php.svn-base | 189 + .../sfMessageSource_Database.class.php.svn-base | 219 + .../sfMessageSource_File.class.php.svn-base | 201 + .../sfMessageSource_MySQL.class.php.svn-base | 486 + .../sfMessageSource_SQLite.class.php.svn-base | 405 + .../sfMessageSource_XLIFF.class.php.svn-base | 447 + .../sfMessageSource_gettext.class.php.svn-base | 351 + .../text-base/sfNumberFormat.class.php.svn-base | 342 + .../sfNumberFormatInfo.class.php.svn-base | 711 + .../symfony/lib/i18n/Gettext/.svn/all-wcprops | 23 + lib/vendor/symfony/lib/i18n/Gettext/.svn/entries | 130 + .../i18n/Gettext/.svn/prop-base/MO.php.svn-base | 13 + .../i18n/Gettext/.svn/prop-base/PO.php.svn-base | 13 + .../.svn/prop-base/TGettext.class.php.svn-base | 13 + .../i18n/Gettext/.svn/text-base/MO.php.svn-base | 337 + .../i18n/Gettext/.svn/text-base/PO.php.svn-base | 143 + .../.svn/text-base/TGettext.class.php.svn-base | 270 + lib/vendor/symfony/lib/i18n/Gettext/MO.php | 337 + lib/vendor/symfony/lib/i18n/Gettext/PO.php | 143 + .../symfony/lib/i18n/Gettext/TGettext.class.php | 270 + lib/vendor/symfony/lib/i18n/data/.svn/all-wcprops | 1991 + lib/vendor/symfony/lib/i18n/data/.svn/entries | 11282 + .../lib/i18n/data/.svn/text-base/af.dat.svn-base | 1 + .../i18n/data/.svn/text-base/af_NA.dat.svn-base | 1 + .../i18n/data/.svn/text-base/af_ZA.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/am.dat.svn-base | 1 + .../i18n/data/.svn/text-base/am_ET.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/ar.dat.svn-base | 1 + .../i18n/data/.svn/text-base/ar_AE.dat.svn-base | 1 + .../i18n/data/.svn/text-base/ar_BH.dat.svn-base | 1 + .../i18n/data/.svn/text-base/ar_DZ.dat.svn-base | 1 + .../i18n/data/.svn/text-base/ar_EG.dat.svn-base | 1 + .../i18n/data/.svn/text-base/ar_IQ.dat.svn-base | 1 + .../i18n/data/.svn/text-base/ar_JO.dat.svn-base | 1 + .../i18n/data/.svn/text-base/ar_KW.dat.svn-base | 1 + .../i18n/data/.svn/text-base/ar_LB.dat.svn-base | 1 + .../i18n/data/.svn/text-base/ar_LY.dat.svn-base | 1 + .../i18n/data/.svn/text-base/ar_MA.dat.svn-base | 1 + .../i18n/data/.svn/text-base/ar_OM.dat.svn-base | 1 + .../i18n/data/.svn/text-base/ar_QA.dat.svn-base | 1 + .../i18n/data/.svn/text-base/ar_SA.dat.svn-base | 1 + .../i18n/data/.svn/text-base/ar_SD.dat.svn-base | 1 + .../i18n/data/.svn/text-base/ar_SY.dat.svn-base | 1 + .../i18n/data/.svn/text-base/ar_TN.dat.svn-base | 1 + .../i18n/data/.svn/text-base/ar_YE.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/as.dat.svn-base | 1 + .../i18n/data/.svn/text-base/as_IN.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/az.dat.svn-base | 1 + .../i18n/data/.svn/text-base/az_AZ.dat.svn-base | 1 + .../i18n/data/.svn/text-base/az_Cyrl.dat.svn-base | 1 + .../data/.svn/text-base/az_Cyrl_AZ.dat.svn-base | 1 + .../i18n/data/.svn/text-base/az_Latn.dat.svn-base | 1 + .../data/.svn/text-base/az_Latn_AZ.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/be.dat.svn-base | 1 + .../i18n/data/.svn/text-base/be_BY.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/bg.dat.svn-base | 1 + .../i18n/data/.svn/text-base/bg_BG.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/bn.dat.svn-base | 1 + .../i18n/data/.svn/text-base/bn_BD.dat.svn-base | 1 + .../i18n/data/.svn/text-base/bn_IN.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/bo.dat.svn-base | 1 + .../i18n/data/.svn/text-base/bo_CN.dat.svn-base | 1 + .../i18n/data/.svn/text-base/bo_IN.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/ca.dat.svn-base | 1 + .../i18n/data/.svn/text-base/ca_ES.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/cs.dat.svn-base | 1 + .../i18n/data/.svn/text-base/cs_CZ.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/cy.dat.svn-base | 1 + .../i18n/data/.svn/text-base/cy_GB.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/da.dat.svn-base | 1 + .../i18n/data/.svn/text-base/da_DK.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/de.dat.svn-base | 1 + .../i18n/data/.svn/text-base/de_AT.dat.svn-base | 1 + .../i18n/data/.svn/text-base/de_BE.dat.svn-base | 1 + .../i18n/data/.svn/text-base/de_CH.dat.svn-base | 1 + .../i18n/data/.svn/text-base/de_DE.dat.svn-base | 1 + .../i18n/data/.svn/text-base/de_LI.dat.svn-base | 1 + .../i18n/data/.svn/text-base/de_LU.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/el.dat.svn-base | 1 + .../i18n/data/.svn/text-base/el_CY.dat.svn-base | 1 + .../i18n/data/.svn/text-base/el_GR.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/en.dat.svn-base | 1 + .../i18n/data/.svn/text-base/en_AU.dat.svn-base | 1 + .../i18n/data/.svn/text-base/en_BE.dat.svn-base | 1 + .../i18n/data/.svn/text-base/en_BW.dat.svn-base | 1 + .../i18n/data/.svn/text-base/en_BZ.dat.svn-base | 1 + .../i18n/data/.svn/text-base/en_CA.dat.svn-base | 1 + .../i18n/data/.svn/text-base/en_GB.dat.svn-base | 1 + .../i18n/data/.svn/text-base/en_HK.dat.svn-base | 1 + .../i18n/data/.svn/text-base/en_IE.dat.svn-base | 1 + .../i18n/data/.svn/text-base/en_IN.dat.svn-base | 1 + .../i18n/data/.svn/text-base/en_JM.dat.svn-base | 1 + .../i18n/data/.svn/text-base/en_MH.dat.svn-base | 1 + .../i18n/data/.svn/text-base/en_MT.dat.svn-base | 1 + .../i18n/data/.svn/text-base/en_NA.dat.svn-base | 1 + .../i18n/data/.svn/text-base/en_NZ.dat.svn-base | 1 + .../i18n/data/.svn/text-base/en_PH.dat.svn-base | 1 + .../i18n/data/.svn/text-base/en_PK.dat.svn-base | 1 + .../i18n/data/.svn/text-base/en_RH.dat.svn-base | 1 + .../i18n/data/.svn/text-base/en_SG.dat.svn-base | 1 + .../i18n/data/.svn/text-base/en_TT.dat.svn-base | 1 + .../i18n/data/.svn/text-base/en_US.dat.svn-base | 1 + .../data/.svn/text-base/en_US_POSIX.dat.svn-base | 1 + .../i18n/data/.svn/text-base/en_VI.dat.svn-base | 1 + .../i18n/data/.svn/text-base/en_ZA.dat.svn-base | 1 + .../i18n/data/.svn/text-base/en_ZW.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/eo.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/es.dat.svn-base | 1 + .../i18n/data/.svn/text-base/es_AR.dat.svn-base | 1 + .../i18n/data/.svn/text-base/es_BO.dat.svn-base | 1 + .../i18n/data/.svn/text-base/es_CL.dat.svn-base | 1 + .../i18n/data/.svn/text-base/es_CO.dat.svn-base | 1 + .../i18n/data/.svn/text-base/es_CR.dat.svn-base | 1 + .../i18n/data/.svn/text-base/es_DO.dat.svn-base | 1 + .../i18n/data/.svn/text-base/es_EC.dat.svn-base | 1 + .../i18n/data/.svn/text-base/es_ES.dat.svn-base | 1 + .../i18n/data/.svn/text-base/es_GT.dat.svn-base | 1 + .../i18n/data/.svn/text-base/es_HN.dat.svn-base | 1 + .../i18n/data/.svn/text-base/es_MX.dat.svn-base | 1 + .../i18n/data/.svn/text-base/es_NI.dat.svn-base | 1 + .../i18n/data/.svn/text-base/es_PA.dat.svn-base | 1 + .../i18n/data/.svn/text-base/es_PE.dat.svn-base | 1 + .../i18n/data/.svn/text-base/es_PR.dat.svn-base | 1 + .../i18n/data/.svn/text-base/es_PY.dat.svn-base | 1 + .../i18n/data/.svn/text-base/es_SV.dat.svn-base | 1 + .../i18n/data/.svn/text-base/es_US.dat.svn-base | 1 + .../i18n/data/.svn/text-base/es_UY.dat.svn-base | 1 + .../i18n/data/.svn/text-base/es_VE.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/et.dat.svn-base | 1 + .../i18n/data/.svn/text-base/et_EE.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/eu.dat.svn-base | 1 + .../i18n/data/.svn/text-base/eu_ES.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/fa.dat.svn-base | 1 + .../i18n/data/.svn/text-base/fa_AF.dat.svn-base | 1 + .../i18n/data/.svn/text-base/fa_IR.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/fi.dat.svn-base | 1 + .../i18n/data/.svn/text-base/fi_FI.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/fo.dat.svn-base | 1 + .../i18n/data/.svn/text-base/fo_FO.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/fr.dat.svn-base | 1 + .../i18n/data/.svn/text-base/fr_BE.dat.svn-base | 1 + .../i18n/data/.svn/text-base/fr_CA.dat.svn-base | 1 + .../i18n/data/.svn/text-base/fr_CH.dat.svn-base | 1 + .../i18n/data/.svn/text-base/fr_FR.dat.svn-base | 1 + .../i18n/data/.svn/text-base/fr_LU.dat.svn-base | 1 + .../i18n/data/.svn/text-base/fr_MC.dat.svn-base | 1 + .../i18n/data/.svn/text-base/fr_SN.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/ga.dat.svn-base | 1 + .../i18n/data/.svn/text-base/ga_IE.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/gl.dat.svn-base | 1 + .../i18n/data/.svn/text-base/gl_ES.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/gsw.dat.svn-base | 1 + .../i18n/data/.svn/text-base/gsw_CH.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/gu.dat.svn-base | 1 + .../i18n/data/.svn/text-base/gu_IN.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/gv.dat.svn-base | 1 + .../i18n/data/.svn/text-base/gv_GB.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/ha.dat.svn-base | 1 + .../i18n/data/.svn/text-base/ha_GH.dat.svn-base | 1 + .../i18n/data/.svn/text-base/ha_Latn.dat.svn-base | 1 + .../data/.svn/text-base/ha_Latn_GH.dat.svn-base | 1 + .../data/.svn/text-base/ha_Latn_NE.dat.svn-base | 1 + .../data/.svn/text-base/ha_Latn_NG.dat.svn-base | 1 + .../i18n/data/.svn/text-base/ha_NE.dat.svn-base | 1 + .../i18n/data/.svn/text-base/ha_NG.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/haw.dat.svn-base | 1 + .../i18n/data/.svn/text-base/haw_US.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/he.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/he2.dat.svn-base | 1 + .../i18n/data/.svn/text-base/he_IL.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/hi.dat.svn-base | 1 + .../i18n/data/.svn/text-base/hi_IN.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/hr.dat.svn-base | 1 + .../i18n/data/.svn/text-base/hr_HR.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/hu.dat.svn-base | 1 + .../i18n/data/.svn/text-base/hu_HU.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/hy.dat.svn-base | 1 + .../i18n/data/.svn/text-base/hy_AM.dat.svn-base | 1 + .../data/.svn/text-base/hy_AM_REVISED.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/id.dat.svn-base | 1 + .../i18n/data/.svn/text-base/id_ID.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/ii.dat.svn-base | 1 + .../i18n/data/.svn/text-base/ii_CN.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/in.dat.svn-base | 1 + .../i18n/data/.svn/text-base/in_ID.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/is.dat.svn-base | 1 + .../i18n/data/.svn/text-base/is_IS.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/it.dat.svn-base | 1 + .../i18n/data/.svn/text-base/it_CH.dat.svn-base | 1 + .../i18n/data/.svn/text-base/it_IT.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/iw.dat.svn-base | 1 + .../i18n/data/.svn/text-base/iw_IL.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/ja.dat.svn-base | 1 + .../i18n/data/.svn/text-base/ja_JP.dat.svn-base | 1 + .../.svn/text-base/ja_JP_TRADITIONAL.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/ka.dat.svn-base | 1 + .../i18n/data/.svn/text-base/ka_GE.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/kk.dat.svn-base | 1 + .../i18n/data/.svn/text-base/kk_Cyrl.dat.svn-base | 1 + .../data/.svn/text-base/kk_Cyrl_KZ.dat.svn-base | 1 + .../i18n/data/.svn/text-base/kk_KZ.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/kl.dat.svn-base | 1 + .../i18n/data/.svn/text-base/kl_GL.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/km.dat.svn-base | 1 + .../i18n/data/.svn/text-base/km_KH.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/kn.dat.svn-base | 1 + .../i18n/data/.svn/text-base/kn_IN.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/ko.dat.svn-base | 1 + .../i18n/data/.svn/text-base/ko_KR.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/kok.dat.svn-base | 1 + .../i18n/data/.svn/text-base/kok_IN.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/kw.dat.svn-base | 1 + .../i18n/data/.svn/text-base/kw_GB.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/lt.dat.svn-base | 1 + .../i18n/data/.svn/text-base/lt_LT.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/lv.dat.svn-base | 1 + .../i18n/data/.svn/text-base/lv_LV.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/mk.dat.svn-base | 1 + .../i18n/data/.svn/text-base/mk_MK.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/ml.dat.svn-base | 1 + .../i18n/data/.svn/text-base/ml_IN.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/mr.dat.svn-base | 1 + .../i18n/data/.svn/text-base/mr_IN.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/ms.dat.svn-base | 1 + .../i18n/data/.svn/text-base/ms_BN.dat.svn-base | 1 + .../i18n/data/.svn/text-base/ms_MY.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/mt.dat.svn-base | 1 + .../i18n/data/.svn/text-base/mt_MT.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/nb.dat.svn-base | 1 + .../i18n/data/.svn/text-base/nb_NO.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/ne.dat.svn-base | 1 + .../i18n/data/.svn/text-base/ne_IN.dat.svn-base | 1 + .../i18n/data/.svn/text-base/ne_NP.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/nl.dat.svn-base | 1 + .../i18n/data/.svn/text-base/nl_BE.dat.svn-base | 1 + .../i18n/data/.svn/text-base/nl_NL.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/nn.dat.svn-base | 1 + .../i18n/data/.svn/text-base/nn_NO.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/no.dat.svn-base | 1 + .../i18n/data/.svn/text-base/no_NO.dat.svn-base | 1 + .../i18n/data/.svn/text-base/no_NO_NY.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/om.dat.svn-base | 1 + .../i18n/data/.svn/text-base/om_ET.dat.svn-base | 1 + .../i18n/data/.svn/text-base/om_KE.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/or.dat.svn-base | 1 + .../i18n/data/.svn/text-base/or_IN.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/pa.dat.svn-base | 1 + .../i18n/data/.svn/text-base/pa_Arab.dat.svn-base | 1 + .../data/.svn/text-base/pa_Arab_PK.dat.svn-base | 1 + .../i18n/data/.svn/text-base/pa_Guru.dat.svn-base | 1 + .../data/.svn/text-base/pa_Guru_IN.dat.svn-base | 1 + .../i18n/data/.svn/text-base/pa_IN.dat.svn-base | 1 + .../i18n/data/.svn/text-base/pa_PK.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/pl.dat.svn-base | 1 + .../i18n/data/.svn/text-base/pl_PL.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/ps.dat.svn-base | 1 + .../i18n/data/.svn/text-base/ps_AF.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/pt.dat.svn-base | 1 + .../i18n/data/.svn/text-base/pt_BR.dat.svn-base | 1 + .../i18n/data/.svn/text-base/pt_PT.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/ro.dat.svn-base | 1 + .../i18n/data/.svn/text-base/ro_MD.dat.svn-base | 1 + .../i18n/data/.svn/text-base/ro_RO.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/root.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/ru.dat.svn-base | 1 + .../i18n/data/.svn/text-base/ru_RU.dat.svn-base | 1 + .../i18n/data/.svn/text-base/ru_UA.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/sh.dat.svn-base | 1 + .../i18n/data/.svn/text-base/sh_BA.dat.svn-base | 1 + .../i18n/data/.svn/text-base/sh_CS.dat.svn-base | 1 + .../i18n/data/.svn/text-base/sh_YU.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/si.dat.svn-base | 1 + .../i18n/data/.svn/text-base/si_LK.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/sk.dat.svn-base | 1 + .../i18n/data/.svn/text-base/sk_SK.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/sl.dat.svn-base | 1 + .../i18n/data/.svn/text-base/sl_SI.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/so.dat.svn-base | 1 + .../i18n/data/.svn/text-base/so_DJ.dat.svn-base | 1 + .../i18n/data/.svn/text-base/so_ET.dat.svn-base | 1 + .../i18n/data/.svn/text-base/so_KE.dat.svn-base | 1 + .../i18n/data/.svn/text-base/so_SO.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/sq.dat.svn-base | 1 + .../i18n/data/.svn/text-base/sq_AL.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/sr.dat.svn-base | 1 + .../i18n/data/.svn/text-base/sr_BA.dat.svn-base | 1 + .../i18n/data/.svn/text-base/sr_CS.dat.svn-base | 1 + .../i18n/data/.svn/text-base/sr_Cyrl.dat.svn-base | 1 + .../data/.svn/text-base/sr_Cyrl_BA.dat.svn-base | 1 + .../data/.svn/text-base/sr_Cyrl_CS.dat.svn-base | 1 + .../data/.svn/text-base/sr_Cyrl_ME.dat.svn-base | 1 + .../data/.svn/text-base/sr_Cyrl_RS.dat.svn-base | 1 + .../data/.svn/text-base/sr_Cyrl_YU.dat.svn-base | 1 + .../i18n/data/.svn/text-base/sr_Latn.dat.svn-base | 1 + .../data/.svn/text-base/sr_Latn_BA.dat.svn-base | 1 + .../data/.svn/text-base/sr_Latn_CS.dat.svn-base | 1 + .../data/.svn/text-base/sr_Latn_ME.dat.svn-base | 1 + .../data/.svn/text-base/sr_Latn_RS.dat.svn-base | 1 + .../data/.svn/text-base/sr_Latn_YU.dat.svn-base | 1 + .../i18n/data/.svn/text-base/sr_ME.dat.svn-base | 1 + .../i18n/data/.svn/text-base/sr_RS.dat.svn-base | 1 + .../i18n/data/.svn/text-base/sr_YU.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/sv.dat.svn-base | 1 + .../i18n/data/.svn/text-base/sv_FI.dat.svn-base | 1 + .../i18n/data/.svn/text-base/sv_SE.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/sw.dat.svn-base | 1 + .../i18n/data/.svn/text-base/sw_KE.dat.svn-base | 1 + .../i18n/data/.svn/text-base/sw_TZ.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/ta.dat.svn-base | 1 + .../i18n/data/.svn/text-base/ta_IN.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/te.dat.svn-base | 1 + .../i18n/data/.svn/text-base/te_IN.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/th.dat.svn-base | 1 + .../i18n/data/.svn/text-base/th_TH.dat.svn-base | 1 + .../.svn/text-base/th_TH_TRADITIONAL.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/ti.dat.svn-base | 1 + .../i18n/data/.svn/text-base/ti_ER.dat.svn-base | 1 + .../i18n/data/.svn/text-base/ti_ET.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/tr.dat.svn-base | 1 + .../i18n/data/.svn/text-base/tr_TR.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/uk.dat.svn-base | 1 + .../i18n/data/.svn/text-base/uk_UA.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/ur.dat.svn-base | 1 + .../i18n/data/.svn/text-base/ur_IN.dat.svn-base | 1 + .../i18n/data/.svn/text-base/ur_PK.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/uz.dat.svn-base | 1 + .../i18n/data/.svn/text-base/uz_AF.dat.svn-base | 1 + .../i18n/data/.svn/text-base/uz_Arab.dat.svn-base | 1 + .../data/.svn/text-base/uz_Arab_AF.dat.svn-base | 1 + .../i18n/data/.svn/text-base/uz_Cyrl.dat.svn-base | 1 + .../data/.svn/text-base/uz_Cyrl_UZ.dat.svn-base | 1 + .../i18n/data/.svn/text-base/uz_Latn.dat.svn-base | 1 + .../data/.svn/text-base/uz_Latn_UZ.dat.svn-base | 1 + .../i18n/data/.svn/text-base/uz_UZ.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/vi.dat.svn-base | 1 + .../i18n/data/.svn/text-base/vi_VN.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/zh.dat.svn-base | 1 + .../i18n/data/.svn/text-base/zh_CN.dat.svn-base | 1 + .../i18n/data/.svn/text-base/zh_HK.dat.svn-base | 1 + .../i18n/data/.svn/text-base/zh_Hans.dat.svn-base | 1 + .../data/.svn/text-base/zh_Hans_CN.dat.svn-base | 1 + .../data/.svn/text-base/zh_Hans_HK.dat.svn-base | 1 + .../data/.svn/text-base/zh_Hans_MO.dat.svn-base | 1 + .../data/.svn/text-base/zh_Hans_SG.dat.svn-base | 1 + .../i18n/data/.svn/text-base/zh_Hant.dat.svn-base | 1 + .../data/.svn/text-base/zh_Hant_HK.dat.svn-base | 1 + .../data/.svn/text-base/zh_Hant_MO.dat.svn-base | 1 + .../data/.svn/text-base/zh_Hant_TW.dat.svn-base | 1 + .../i18n/data/.svn/text-base/zh_MO.dat.svn-base | 1 + .../i18n/data/.svn/text-base/zh_SG.dat.svn-base | 1 + .../i18n/data/.svn/text-base/zh_TW.dat.svn-base | 1 + .../lib/i18n/data/.svn/text-base/zu.dat.svn-base | 1 + .../i18n/data/.svn/text-base/zu_ZA.dat.svn-base | 1 + lib/vendor/symfony/lib/i18n/data/af.dat | 1 + lib/vendor/symfony/lib/i18n/data/af_NA.dat | 1 + lib/vendor/symfony/lib/i18n/data/af_ZA.dat | 1 + lib/vendor/symfony/lib/i18n/data/am.dat | 1 + lib/vendor/symfony/lib/i18n/data/am_ET.dat | 1 + lib/vendor/symfony/lib/i18n/data/ar.dat | 1 + lib/vendor/symfony/lib/i18n/data/ar_AE.dat | 1 + lib/vendor/symfony/lib/i18n/data/ar_BH.dat | 1 + lib/vendor/symfony/lib/i18n/data/ar_DZ.dat | 1 + lib/vendor/symfony/lib/i18n/data/ar_EG.dat | 1 + lib/vendor/symfony/lib/i18n/data/ar_IQ.dat | 1 + lib/vendor/symfony/lib/i18n/data/ar_JO.dat | 1 + lib/vendor/symfony/lib/i18n/data/ar_KW.dat | 1 + lib/vendor/symfony/lib/i18n/data/ar_LB.dat | 1 + lib/vendor/symfony/lib/i18n/data/ar_LY.dat | 1 + lib/vendor/symfony/lib/i18n/data/ar_MA.dat | 1 + lib/vendor/symfony/lib/i18n/data/ar_OM.dat | 1 + lib/vendor/symfony/lib/i18n/data/ar_QA.dat | 1 + lib/vendor/symfony/lib/i18n/data/ar_SA.dat | 1 + lib/vendor/symfony/lib/i18n/data/ar_SD.dat | 1 + lib/vendor/symfony/lib/i18n/data/ar_SY.dat | 1 + lib/vendor/symfony/lib/i18n/data/ar_TN.dat | 1 + lib/vendor/symfony/lib/i18n/data/ar_YE.dat | 1 + lib/vendor/symfony/lib/i18n/data/as.dat | 1 + lib/vendor/symfony/lib/i18n/data/as_IN.dat | 1 + lib/vendor/symfony/lib/i18n/data/az.dat | 1 + lib/vendor/symfony/lib/i18n/data/az_AZ.dat | 1 + lib/vendor/symfony/lib/i18n/data/az_Cyrl.dat | 1 + lib/vendor/symfony/lib/i18n/data/az_Cyrl_AZ.dat | 1 + lib/vendor/symfony/lib/i18n/data/az_Latn.dat | 1 + lib/vendor/symfony/lib/i18n/data/az_Latn_AZ.dat | 1 + lib/vendor/symfony/lib/i18n/data/be.dat | 1 + lib/vendor/symfony/lib/i18n/data/be_BY.dat | 1 + lib/vendor/symfony/lib/i18n/data/bg.dat | 1 + lib/vendor/symfony/lib/i18n/data/bg_BG.dat | 1 + lib/vendor/symfony/lib/i18n/data/bn.dat | 1 + lib/vendor/symfony/lib/i18n/data/bn_BD.dat | 1 + lib/vendor/symfony/lib/i18n/data/bn_IN.dat | 1 + lib/vendor/symfony/lib/i18n/data/bo.dat | 1 + lib/vendor/symfony/lib/i18n/data/bo_CN.dat | 1 + lib/vendor/symfony/lib/i18n/data/bo_IN.dat | 1 + lib/vendor/symfony/lib/i18n/data/ca.dat | 1 + lib/vendor/symfony/lib/i18n/data/ca_ES.dat | 1 + lib/vendor/symfony/lib/i18n/data/cs.dat | 1 + lib/vendor/symfony/lib/i18n/data/cs_CZ.dat | 1 + lib/vendor/symfony/lib/i18n/data/cy.dat | 1 + lib/vendor/symfony/lib/i18n/data/cy_GB.dat | 1 + lib/vendor/symfony/lib/i18n/data/da.dat | 1 + lib/vendor/symfony/lib/i18n/data/da_DK.dat | 1 + lib/vendor/symfony/lib/i18n/data/de.dat | 1 + lib/vendor/symfony/lib/i18n/data/de_AT.dat | 1 + lib/vendor/symfony/lib/i18n/data/de_BE.dat | 1 + lib/vendor/symfony/lib/i18n/data/de_CH.dat | 1 + lib/vendor/symfony/lib/i18n/data/de_DE.dat | 1 + lib/vendor/symfony/lib/i18n/data/de_LI.dat | 1 + lib/vendor/symfony/lib/i18n/data/de_LU.dat | 1 + lib/vendor/symfony/lib/i18n/data/el.dat | 1 + lib/vendor/symfony/lib/i18n/data/el_CY.dat | 1 + lib/vendor/symfony/lib/i18n/data/el_GR.dat | 1 + lib/vendor/symfony/lib/i18n/data/en.dat | 1 + lib/vendor/symfony/lib/i18n/data/en_AU.dat | 1 + lib/vendor/symfony/lib/i18n/data/en_BE.dat | 1 + lib/vendor/symfony/lib/i18n/data/en_BW.dat | 1 + lib/vendor/symfony/lib/i18n/data/en_BZ.dat | 1 + lib/vendor/symfony/lib/i18n/data/en_CA.dat | 1 + lib/vendor/symfony/lib/i18n/data/en_GB.dat | 1 + lib/vendor/symfony/lib/i18n/data/en_HK.dat | 1 + lib/vendor/symfony/lib/i18n/data/en_IE.dat | 1 + lib/vendor/symfony/lib/i18n/data/en_IN.dat | 1 + lib/vendor/symfony/lib/i18n/data/en_JM.dat | 1 + lib/vendor/symfony/lib/i18n/data/en_MH.dat | 1 + lib/vendor/symfony/lib/i18n/data/en_MT.dat | 1 + lib/vendor/symfony/lib/i18n/data/en_NA.dat | 1 + lib/vendor/symfony/lib/i18n/data/en_NZ.dat | 1 + lib/vendor/symfony/lib/i18n/data/en_PH.dat | 1 + lib/vendor/symfony/lib/i18n/data/en_PK.dat | 1 + lib/vendor/symfony/lib/i18n/data/en_RH.dat | 1 + lib/vendor/symfony/lib/i18n/data/en_SG.dat | 1 + lib/vendor/symfony/lib/i18n/data/en_TT.dat | 1 + lib/vendor/symfony/lib/i18n/data/en_US.dat | 1 + lib/vendor/symfony/lib/i18n/data/en_US_POSIX.dat | 1 + lib/vendor/symfony/lib/i18n/data/en_VI.dat | 1 + lib/vendor/symfony/lib/i18n/data/en_ZA.dat | 1 + lib/vendor/symfony/lib/i18n/data/en_ZW.dat | 1 + lib/vendor/symfony/lib/i18n/data/eo.dat | 1 + lib/vendor/symfony/lib/i18n/data/es.dat | 1 + lib/vendor/symfony/lib/i18n/data/es_AR.dat | 1 + lib/vendor/symfony/lib/i18n/data/es_BO.dat | 1 + lib/vendor/symfony/lib/i18n/data/es_CL.dat | 1 + lib/vendor/symfony/lib/i18n/data/es_CO.dat | 1 + lib/vendor/symfony/lib/i18n/data/es_CR.dat | 1 + lib/vendor/symfony/lib/i18n/data/es_DO.dat | 1 + lib/vendor/symfony/lib/i18n/data/es_EC.dat | 1 + lib/vendor/symfony/lib/i18n/data/es_ES.dat | 1 + lib/vendor/symfony/lib/i18n/data/es_GT.dat | 1 + lib/vendor/symfony/lib/i18n/data/es_HN.dat | 1 + lib/vendor/symfony/lib/i18n/data/es_MX.dat | 1 + lib/vendor/symfony/lib/i18n/data/es_NI.dat | 1 + lib/vendor/symfony/lib/i18n/data/es_PA.dat | 1 + lib/vendor/symfony/lib/i18n/data/es_PE.dat | 1 + lib/vendor/symfony/lib/i18n/data/es_PR.dat | 1 + lib/vendor/symfony/lib/i18n/data/es_PY.dat | 1 + lib/vendor/symfony/lib/i18n/data/es_SV.dat | 1 + lib/vendor/symfony/lib/i18n/data/es_US.dat | 1 + lib/vendor/symfony/lib/i18n/data/es_UY.dat | 1 + lib/vendor/symfony/lib/i18n/data/es_VE.dat | 1 + lib/vendor/symfony/lib/i18n/data/et.dat | 1 + lib/vendor/symfony/lib/i18n/data/et_EE.dat | 1 + lib/vendor/symfony/lib/i18n/data/eu.dat | 1 + lib/vendor/symfony/lib/i18n/data/eu_ES.dat | 1 + lib/vendor/symfony/lib/i18n/data/fa.dat | 1 + lib/vendor/symfony/lib/i18n/data/fa_AF.dat | 1 + lib/vendor/symfony/lib/i18n/data/fa_IR.dat | 1 + lib/vendor/symfony/lib/i18n/data/fi.dat | 1 + lib/vendor/symfony/lib/i18n/data/fi_FI.dat | 1 + lib/vendor/symfony/lib/i18n/data/fo.dat | 1 + lib/vendor/symfony/lib/i18n/data/fo_FO.dat | 1 + lib/vendor/symfony/lib/i18n/data/fr.dat | 1 + lib/vendor/symfony/lib/i18n/data/fr_BE.dat | 1 + lib/vendor/symfony/lib/i18n/data/fr_CA.dat | 1 + lib/vendor/symfony/lib/i18n/data/fr_CH.dat | 1 + lib/vendor/symfony/lib/i18n/data/fr_FR.dat | 1 + lib/vendor/symfony/lib/i18n/data/fr_LU.dat | 1 + lib/vendor/symfony/lib/i18n/data/fr_MC.dat | 1 + lib/vendor/symfony/lib/i18n/data/fr_SN.dat | 1 + lib/vendor/symfony/lib/i18n/data/ga.dat | 1 + lib/vendor/symfony/lib/i18n/data/ga_IE.dat | 1 + lib/vendor/symfony/lib/i18n/data/gl.dat | 1 + lib/vendor/symfony/lib/i18n/data/gl_ES.dat | 1 + lib/vendor/symfony/lib/i18n/data/gsw.dat | 1 + lib/vendor/symfony/lib/i18n/data/gsw_CH.dat | 1 + lib/vendor/symfony/lib/i18n/data/gu.dat | 1 + lib/vendor/symfony/lib/i18n/data/gu_IN.dat | 1 + lib/vendor/symfony/lib/i18n/data/gv.dat | 1 + lib/vendor/symfony/lib/i18n/data/gv_GB.dat | 1 + lib/vendor/symfony/lib/i18n/data/ha.dat | 1 + lib/vendor/symfony/lib/i18n/data/ha_GH.dat | 1 + lib/vendor/symfony/lib/i18n/data/ha_Latn.dat | 1 + lib/vendor/symfony/lib/i18n/data/ha_Latn_GH.dat | 1 + lib/vendor/symfony/lib/i18n/data/ha_Latn_NE.dat | 1 + lib/vendor/symfony/lib/i18n/data/ha_Latn_NG.dat | 1 + lib/vendor/symfony/lib/i18n/data/ha_NE.dat | 1 + lib/vendor/symfony/lib/i18n/data/ha_NG.dat | 1 + lib/vendor/symfony/lib/i18n/data/haw.dat | 1 + lib/vendor/symfony/lib/i18n/data/haw_US.dat | 1 + lib/vendor/symfony/lib/i18n/data/he.dat | 1 + lib/vendor/symfony/lib/i18n/data/he2.dat | 1 + lib/vendor/symfony/lib/i18n/data/he_IL.dat | 1 + lib/vendor/symfony/lib/i18n/data/hi.dat | 1 + lib/vendor/symfony/lib/i18n/data/hi_IN.dat | 1 + lib/vendor/symfony/lib/i18n/data/hr.dat | 1 + lib/vendor/symfony/lib/i18n/data/hr_HR.dat | 1 + lib/vendor/symfony/lib/i18n/data/hu.dat | 1 + lib/vendor/symfony/lib/i18n/data/hu_HU.dat | 1 + lib/vendor/symfony/lib/i18n/data/hy.dat | 1 + lib/vendor/symfony/lib/i18n/data/hy_AM.dat | 1 + lib/vendor/symfony/lib/i18n/data/hy_AM_REVISED.dat | 1 + lib/vendor/symfony/lib/i18n/data/id.dat | 1 + lib/vendor/symfony/lib/i18n/data/id_ID.dat | 1 + lib/vendor/symfony/lib/i18n/data/ii.dat | 1 + lib/vendor/symfony/lib/i18n/data/ii_CN.dat | 1 + lib/vendor/symfony/lib/i18n/data/in.dat | 1 + lib/vendor/symfony/lib/i18n/data/in_ID.dat | 1 + lib/vendor/symfony/lib/i18n/data/is.dat | 1 + lib/vendor/symfony/lib/i18n/data/is_IS.dat | 1 + lib/vendor/symfony/lib/i18n/data/it.dat | 1 + lib/vendor/symfony/lib/i18n/data/it_CH.dat | 1 + lib/vendor/symfony/lib/i18n/data/it_IT.dat | 1 + lib/vendor/symfony/lib/i18n/data/iw.dat | 1 + lib/vendor/symfony/lib/i18n/data/iw_IL.dat | 1 + lib/vendor/symfony/lib/i18n/data/ja.dat | 1 + lib/vendor/symfony/lib/i18n/data/ja_JP.dat | 1 + .../symfony/lib/i18n/data/ja_JP_TRADITIONAL.dat | 1 + lib/vendor/symfony/lib/i18n/data/ka.dat | 1 + lib/vendor/symfony/lib/i18n/data/ka_GE.dat | 1 + lib/vendor/symfony/lib/i18n/data/kk.dat | 1 + lib/vendor/symfony/lib/i18n/data/kk_Cyrl.dat | 1 + lib/vendor/symfony/lib/i18n/data/kk_Cyrl_KZ.dat | 1 + lib/vendor/symfony/lib/i18n/data/kk_KZ.dat | 1 + lib/vendor/symfony/lib/i18n/data/kl.dat | 1 + lib/vendor/symfony/lib/i18n/data/kl_GL.dat | 1 + lib/vendor/symfony/lib/i18n/data/km.dat | 1 + lib/vendor/symfony/lib/i18n/data/km_KH.dat | 1 + lib/vendor/symfony/lib/i18n/data/kn.dat | 1 + lib/vendor/symfony/lib/i18n/data/kn_IN.dat | 1 + lib/vendor/symfony/lib/i18n/data/ko.dat | 1 + lib/vendor/symfony/lib/i18n/data/ko_KR.dat | 1 + lib/vendor/symfony/lib/i18n/data/kok.dat | 1 + lib/vendor/symfony/lib/i18n/data/kok_IN.dat | 1 + lib/vendor/symfony/lib/i18n/data/kw.dat | 1 + lib/vendor/symfony/lib/i18n/data/kw_GB.dat | 1 + lib/vendor/symfony/lib/i18n/data/lt.dat | 1 + lib/vendor/symfony/lib/i18n/data/lt_LT.dat | 1 + lib/vendor/symfony/lib/i18n/data/lv.dat | 1 + lib/vendor/symfony/lib/i18n/data/lv_LV.dat | 1 + lib/vendor/symfony/lib/i18n/data/mk.dat | 1 + lib/vendor/symfony/lib/i18n/data/mk_MK.dat | 1 + lib/vendor/symfony/lib/i18n/data/ml.dat | 1 + lib/vendor/symfony/lib/i18n/data/ml_IN.dat | 1 + lib/vendor/symfony/lib/i18n/data/mr.dat | 1 + lib/vendor/symfony/lib/i18n/data/mr_IN.dat | 1 + lib/vendor/symfony/lib/i18n/data/ms.dat | 1 + lib/vendor/symfony/lib/i18n/data/ms_BN.dat | 1 + lib/vendor/symfony/lib/i18n/data/ms_MY.dat | 1 + lib/vendor/symfony/lib/i18n/data/mt.dat | 1 + lib/vendor/symfony/lib/i18n/data/mt_MT.dat | 1 + lib/vendor/symfony/lib/i18n/data/nb.dat | 1 + lib/vendor/symfony/lib/i18n/data/nb_NO.dat | 1 + lib/vendor/symfony/lib/i18n/data/ne.dat | 1 + lib/vendor/symfony/lib/i18n/data/ne_IN.dat | 1 + lib/vendor/symfony/lib/i18n/data/ne_NP.dat | 1 + lib/vendor/symfony/lib/i18n/data/nl.dat | 1 + lib/vendor/symfony/lib/i18n/data/nl_BE.dat | 1 + lib/vendor/symfony/lib/i18n/data/nl_NL.dat | 1 + lib/vendor/symfony/lib/i18n/data/nn.dat | 1 + lib/vendor/symfony/lib/i18n/data/nn_NO.dat | 1 + lib/vendor/symfony/lib/i18n/data/no.dat | 1 + lib/vendor/symfony/lib/i18n/data/no_NO.dat | 1 + lib/vendor/symfony/lib/i18n/data/no_NO_NY.dat | 1 + lib/vendor/symfony/lib/i18n/data/om.dat | 1 + lib/vendor/symfony/lib/i18n/data/om_ET.dat | 1 + lib/vendor/symfony/lib/i18n/data/om_KE.dat | 1 + lib/vendor/symfony/lib/i18n/data/or.dat | 1 + lib/vendor/symfony/lib/i18n/data/or_IN.dat | 1 + lib/vendor/symfony/lib/i18n/data/pa.dat | 1 + lib/vendor/symfony/lib/i18n/data/pa_Arab.dat | 1 + lib/vendor/symfony/lib/i18n/data/pa_Arab_PK.dat | 1 + lib/vendor/symfony/lib/i18n/data/pa_Guru.dat | 1 + lib/vendor/symfony/lib/i18n/data/pa_Guru_IN.dat | 1 + lib/vendor/symfony/lib/i18n/data/pa_IN.dat | 1 + lib/vendor/symfony/lib/i18n/data/pa_PK.dat | 1 + lib/vendor/symfony/lib/i18n/data/pl.dat | 1 + lib/vendor/symfony/lib/i18n/data/pl_PL.dat | 1 + lib/vendor/symfony/lib/i18n/data/ps.dat | 1 + lib/vendor/symfony/lib/i18n/data/ps_AF.dat | 1 + lib/vendor/symfony/lib/i18n/data/pt.dat | 1 + lib/vendor/symfony/lib/i18n/data/pt_BR.dat | 1 + lib/vendor/symfony/lib/i18n/data/pt_PT.dat | 1 + lib/vendor/symfony/lib/i18n/data/ro.dat | 1 + lib/vendor/symfony/lib/i18n/data/ro_MD.dat | 1 + lib/vendor/symfony/lib/i18n/data/ro_RO.dat | 1 + lib/vendor/symfony/lib/i18n/data/root.dat | 1 + lib/vendor/symfony/lib/i18n/data/ru.dat | 1 + lib/vendor/symfony/lib/i18n/data/ru_RU.dat | 1 + lib/vendor/symfony/lib/i18n/data/ru_UA.dat | 1 + lib/vendor/symfony/lib/i18n/data/sh.dat | 1 + lib/vendor/symfony/lib/i18n/data/sh_BA.dat | 1 + lib/vendor/symfony/lib/i18n/data/sh_CS.dat | 1 + lib/vendor/symfony/lib/i18n/data/sh_YU.dat | 1 + lib/vendor/symfony/lib/i18n/data/si.dat | 1 + lib/vendor/symfony/lib/i18n/data/si_LK.dat | 1 + lib/vendor/symfony/lib/i18n/data/sk.dat | 1 + lib/vendor/symfony/lib/i18n/data/sk_SK.dat | 1 + lib/vendor/symfony/lib/i18n/data/sl.dat | 1 + lib/vendor/symfony/lib/i18n/data/sl_SI.dat | 1 + lib/vendor/symfony/lib/i18n/data/so.dat | 1 + lib/vendor/symfony/lib/i18n/data/so_DJ.dat | 1 + lib/vendor/symfony/lib/i18n/data/so_ET.dat | 1 + lib/vendor/symfony/lib/i18n/data/so_KE.dat | 1 + lib/vendor/symfony/lib/i18n/data/so_SO.dat | 1 + lib/vendor/symfony/lib/i18n/data/sq.dat | 1 + lib/vendor/symfony/lib/i18n/data/sq_AL.dat | 1 + lib/vendor/symfony/lib/i18n/data/sr.dat | 1 + lib/vendor/symfony/lib/i18n/data/sr_BA.dat | 1 + lib/vendor/symfony/lib/i18n/data/sr_CS.dat | 1 + lib/vendor/symfony/lib/i18n/data/sr_Cyrl.dat | 1 + lib/vendor/symfony/lib/i18n/data/sr_Cyrl_BA.dat | 1 + lib/vendor/symfony/lib/i18n/data/sr_Cyrl_CS.dat | 1 + lib/vendor/symfony/lib/i18n/data/sr_Cyrl_ME.dat | 1 + lib/vendor/symfony/lib/i18n/data/sr_Cyrl_RS.dat | 1 + lib/vendor/symfony/lib/i18n/data/sr_Cyrl_YU.dat | 1 + lib/vendor/symfony/lib/i18n/data/sr_Latn.dat | 1 + lib/vendor/symfony/lib/i18n/data/sr_Latn_BA.dat | 1 + lib/vendor/symfony/lib/i18n/data/sr_Latn_CS.dat | 1 + lib/vendor/symfony/lib/i18n/data/sr_Latn_ME.dat | 1 + lib/vendor/symfony/lib/i18n/data/sr_Latn_RS.dat | 1 + lib/vendor/symfony/lib/i18n/data/sr_Latn_YU.dat | 1 + lib/vendor/symfony/lib/i18n/data/sr_ME.dat | 1 + lib/vendor/symfony/lib/i18n/data/sr_RS.dat | 1 + lib/vendor/symfony/lib/i18n/data/sr_YU.dat | 1 + lib/vendor/symfony/lib/i18n/data/sv.dat | 1 + lib/vendor/symfony/lib/i18n/data/sv_FI.dat | 1 + lib/vendor/symfony/lib/i18n/data/sv_SE.dat | 1 + lib/vendor/symfony/lib/i18n/data/sw.dat | 1 + lib/vendor/symfony/lib/i18n/data/sw_KE.dat | 1 + lib/vendor/symfony/lib/i18n/data/sw_TZ.dat | 1 + lib/vendor/symfony/lib/i18n/data/ta.dat | 1 + lib/vendor/symfony/lib/i18n/data/ta_IN.dat | 1 + lib/vendor/symfony/lib/i18n/data/te.dat | 1 + lib/vendor/symfony/lib/i18n/data/te_IN.dat | 1 + lib/vendor/symfony/lib/i18n/data/th.dat | 1 + lib/vendor/symfony/lib/i18n/data/th_TH.dat | 1 + .../symfony/lib/i18n/data/th_TH_TRADITIONAL.dat | 1 + lib/vendor/symfony/lib/i18n/data/ti.dat | 1 + lib/vendor/symfony/lib/i18n/data/ti_ER.dat | 1 + lib/vendor/symfony/lib/i18n/data/ti_ET.dat | 1 + lib/vendor/symfony/lib/i18n/data/tr.dat | 1 + lib/vendor/symfony/lib/i18n/data/tr_TR.dat | 1 + lib/vendor/symfony/lib/i18n/data/uk.dat | 1 + lib/vendor/symfony/lib/i18n/data/uk_UA.dat | 1 + lib/vendor/symfony/lib/i18n/data/ur.dat | 1 + lib/vendor/symfony/lib/i18n/data/ur_IN.dat | 1 + lib/vendor/symfony/lib/i18n/data/ur_PK.dat | 1 + lib/vendor/symfony/lib/i18n/data/uz.dat | 1 + lib/vendor/symfony/lib/i18n/data/uz_AF.dat | 1 + lib/vendor/symfony/lib/i18n/data/uz_Arab.dat | 1 + lib/vendor/symfony/lib/i18n/data/uz_Arab_AF.dat | 1 + lib/vendor/symfony/lib/i18n/data/uz_Cyrl.dat | 1 + lib/vendor/symfony/lib/i18n/data/uz_Cyrl_UZ.dat | 1 + lib/vendor/symfony/lib/i18n/data/uz_Latn.dat | 1 + lib/vendor/symfony/lib/i18n/data/uz_Latn_UZ.dat | 1 + lib/vendor/symfony/lib/i18n/data/uz_UZ.dat | 1 + lib/vendor/symfony/lib/i18n/data/vi.dat | 1 + lib/vendor/symfony/lib/i18n/data/vi_VN.dat | 1 + lib/vendor/symfony/lib/i18n/data/zh.dat | 1 + lib/vendor/symfony/lib/i18n/data/zh_CN.dat | 1 + lib/vendor/symfony/lib/i18n/data/zh_HK.dat | 1 + lib/vendor/symfony/lib/i18n/data/zh_Hans.dat | 1 + lib/vendor/symfony/lib/i18n/data/zh_Hans_CN.dat | 1 + lib/vendor/symfony/lib/i18n/data/zh_Hans_HK.dat | 1 + lib/vendor/symfony/lib/i18n/data/zh_Hans_MO.dat | 1 + lib/vendor/symfony/lib/i18n/data/zh_Hans_SG.dat | 1 + lib/vendor/symfony/lib/i18n/data/zh_Hant.dat | 1 + lib/vendor/symfony/lib/i18n/data/zh_Hant_HK.dat | 1 + lib/vendor/symfony/lib/i18n/data/zh_Hant_MO.dat | 1 + lib/vendor/symfony/lib/i18n/data/zh_Hant_TW.dat | 1 + lib/vendor/symfony/lib/i18n/data/zh_MO.dat | 1 + lib/vendor/symfony/lib/i18n/data/zh_SG.dat | 1 + lib/vendor/symfony/lib/i18n/data/zh_TW.dat | 1 + lib/vendor/symfony/lib/i18n/data/zu.dat | 1 + lib/vendor/symfony/lib/i18n/data/zu_ZA.dat | 1 + .../symfony/lib/i18n/extract/.svn/all-wcprops | 53 + lib/vendor/symfony/lib/i18n/extract/.svn/entries | 300 + .../sfI18nApplicationExtract.class.php.svn-base | 13 + .../prop-base/sfI18nExtract.class.php.svn-base | 13 + .../sfI18nExtractorInterface.class.php.svn-base | 13 + .../sfI18nModuleExtract.class.php.svn-base | 13 + .../sfI18nPhpExtractor.class.php.svn-base | 13 + .../sfI18nYamlExtractor.class.php.svn-base | 13 + ...sfI18nYamlGeneratorExtractor.class.php.svn-base | 13 + .../sfI18nYamlValidateExtractor.class.php.svn-base | 13 + .../sfI18nApplicationExtract.class.php.svn-base | 81 + .../text-base/sfI18nExtract.class.php.svn-base | 202 + .../sfI18nExtractorInterface.class.php.svn-base | 27 + .../sfI18nModuleExtract.class.php.svn-base | 72 + .../sfI18nPhpExtractor.class.php.svn-base | 105 + .../sfI18nYamlExtractor.class.php.svn-base | 19 + ...sfI18nYamlGeneratorExtractor.class.php.svn-base | 109 + .../sfI18nYamlValidateExtractor.class.php.svn-base | 108 + .../extract/sfI18nApplicationExtract.class.php | 81 + .../lib/i18n/extract/sfI18nExtract.class.php | 202 + .../extract/sfI18nExtractorInterface.class.php | 27 + .../lib/i18n/extract/sfI18nModuleExtract.class.php | 72 + .../lib/i18n/extract/sfI18nPhpExtractor.class.php | 105 + .../lib/i18n/extract/sfI18nYamlExtractor.class.php | 19 + .../extract/sfI18nYamlGeneratorExtractor.class.php | 109 + .../extract/sfI18nYamlValidateExtractor.class.php | 108 + .../symfony/lib/i18n/sfChoiceFormat.class.php | 229 + .../symfony/lib/i18n/sfCultureInfo.class.php | 865 + lib/vendor/symfony/lib/i18n/sfDateFormat.class.php | 817 + .../lib/i18n/sfDateTimeFormatInfo.class.php | 552 + lib/vendor/symfony/lib/i18n/sfI18N.class.php | 435 + .../symfony/lib/i18n/sfIMessageSource.class.php | 132 + .../symfony/lib/i18n/sfMessageFormat.class.php | 262 + .../symfony/lib/i18n/sfMessageSource.class.php | 330 + .../lib/i18n/sfMessageSource_Aggregate.class.php | 189 + .../lib/i18n/sfMessageSource_Database.class.php | 219 + .../lib/i18n/sfMessageSource_File.class.php | 201 + .../lib/i18n/sfMessageSource_MySQL.class.php | 486 + .../lib/i18n/sfMessageSource_SQLite.class.php | 405 + .../lib/i18n/sfMessageSource_XLIFF.class.php | 447 + .../lib/i18n/sfMessageSource_gettext.class.php | 351 + .../symfony/lib/i18n/sfNumberFormat.class.php | 342 + .../symfony/lib/i18n/sfNumberFormatInfo.class.php | 711 + lib/vendor/symfony/lib/log/.svn/all-wcprops | 65 + lib/vendor/symfony/lib/log/.svn/entries | 368 + .../prop-base/sfAggregateLogger.class.php.svn-base | 13 + .../prop-base/sfConsoleLogger.class.php.svn-base | 13 + .../.svn/prop-base/sfFileLogger.class.php.svn-base | 13 + .../log/.svn/prop-base/sfLogger.class.php.svn-base | 13 + .../prop-base/sfLoggerInterface.class.php.svn-base | 13 + .../prop-base/sfLoggerWrapper.class.php.svn-base | 13 + .../.svn/prop-base/sfNoLogger.class.php.svn-base | 13 + .../prop-base/sfStreamLogger.class.php.svn-base | 13 + .../.svn/prop-base/sfVarLogger.class.php.svn-base | 13 + .../prop-base/sfWebDebugLogger.class.php.svn-base | 13 + .../text-base/sfAggregateLogger.class.php.svn-base | 114 + .../text-base/sfConsoleLogger.class.php.svn-base | 30 + .../.svn/text-base/sfFileLogger.class.php.svn-base | 128 + .../log/.svn/text-base/sfLogger.class.php.svn-base | 292 + .../text-base/sfLoggerInterface.class.php.svn-base | 28 + .../text-base/sfLoggerWrapper.class.php.svn-base | 44 + .../.svn/text-base/sfNoLogger.class.php.svn-base | 42 + .../text-base/sfStreamLogger.class.php.svn-base | 76 + .../.svn/text-base/sfVarLogger.class.php.svn-base | 190 + .../text-base/sfWebDebugLogger.class.php.svn-base | 176 + .../symfony/lib/log/sfAggregateLogger.class.php | 114 + .../symfony/lib/log/sfConsoleLogger.class.php | 30 + lib/vendor/symfony/lib/log/sfFileLogger.class.php | 128 + lib/vendor/symfony/lib/log/sfLogger.class.php | 292 + .../symfony/lib/log/sfLoggerInterface.class.php | 28 + .../symfony/lib/log/sfLoggerWrapper.class.php | 44 + lib/vendor/symfony/lib/log/sfNoLogger.class.php | 42 + .../symfony/lib/log/sfStreamLogger.class.php | 76 + lib/vendor/symfony/lib/log/sfVarLogger.class.php | 190 + .../symfony/lib/log/sfWebDebugLogger.class.php | 176 + lib/vendor/symfony/lib/mailer/.svn/all-wcprops | 17 + lib/vendor/symfony/lib/mailer/.svn/entries | 96 + .../.svn/prop-base/sfMailer.class.php.svn-base | 9 + .../sfMailerMessageLoggerPlugin.class.php.svn-base | 9 + .../.svn/text-base/sfMailer.class.php.svn-base | 331 + .../sfMailerMessageLoggerPlugin.class.php.svn-base | 85 + lib/vendor/symfony/lib/mailer/sfMailer.class.php | 331 + .../mailer/sfMailerMessageLoggerPlugin.class.php | 85 + lib/vendor/symfony/lib/plugin/.svn/all-wcprops | 89 + lib/vendor/symfony/lib/plugin/.svn/entries | 504 + .../.svn/prop-base/sfPearConfig.class.php.svn-base | 9 + .../prop-base/sfPearDownloader.class.php.svn-base | 13 + .../prop-base/sfPearEnvironment.class.php.svn-base | 13 + .../sfPearFrontendPlugin.class.php.svn-base | 13 + .../.svn/prop-base/sfPearRest.class.php.svn-base | 13 + .../.svn/prop-base/sfPearRest10.class.php.svn-base | 13 + .../.svn/prop-base/sfPearRest11.class.php.svn-base | 13 + .../prop-base/sfPearRestPlugin.class.php.svn-base | 13 + .../sfPluginDependencyException.class.php.svn-base | 13 + .../prop-base/sfPluginException.class.php.svn-base | 13 + .../prop-base/sfPluginManager.class.php.svn-base | 13 + ...RecursiveDependencyException.class.php.svn-base | 13 + .../sfPluginRestException.class.php.svn-base | 13 + .../sfSymfonyPluginManager.class.php.svn-base | 13 + .../.svn/text-base/sfPearConfig.class.php.svn-base | 31 + .../text-base/sfPearDownloader.class.php.svn-base | 30 + .../text-base/sfPearEnvironment.class.php.svn-base | 266 + .../sfPearFrontendPlugin.class.php.svn-base | 63 + .../.svn/text-base/sfPearRest.class.php.svn-base | 30 + .../.svn/text-base/sfPearRest10.class.php.svn-base | 32 + .../.svn/text-base/sfPearRest11.class.php.svn-base | 32 + .../text-base/sfPearRestPlugin.class.php.svn-base | 229 + .../sfPluginDependencyException.class.php.svn-base | 21 + .../text-base/sfPluginException.class.php.svn-base | 21 + .../text-base/sfPluginManager.class.php.svn-base | 499 + ...RecursiveDependencyException.class.php.svn-base | 21 + .../sfPluginRestException.class.php.svn-base | 21 + .../sfSymfonyPluginManager.class.php.svn-base | 226 + .../symfony/lib/plugin/sfPearConfig.class.php | 31 + .../symfony/lib/plugin/sfPearDownloader.class.php | 30 + .../symfony/lib/plugin/sfPearEnvironment.class.php | 266 + .../lib/plugin/sfPearFrontendPlugin.class.php | 63 + lib/vendor/symfony/lib/plugin/sfPearRest.class.php | 30 + .../symfony/lib/plugin/sfPearRest10.class.php | 32 + .../symfony/lib/plugin/sfPearRest11.class.php | 32 + .../symfony/lib/plugin/sfPearRestPlugin.class.php | 229 + .../plugin/sfPluginDependencyException.class.php | 21 + .../symfony/lib/plugin/sfPluginException.class.php | 21 + .../symfony/lib/plugin/sfPluginManager.class.php | 499 + .../sfPluginRecursiveDependencyException.class.php | 21 + .../lib/plugin/sfPluginRestException.class.php | 21 + .../lib/plugin/sfSymfonyPluginManager.class.php | 226 + lib/vendor/symfony/lib/plugins/.svn/all-wcprops | 5 + lib/vendor/symfony/lib/plugins/.svn/entries | 34 + .../lib/plugins/sfDoctrinePlugin/.svn/all-wcprops | 11 + .../plugins/sfDoctrinePlugin/.svn/dir-prop-base | 7 + .../lib/plugins/sfDoctrinePlugin/.svn/entries | 74 + .../.svn/prop-base/LICENSE.svn-base | 5 + .../.svn/text-base/LICENSE.svn-base | 7 + .../symfony/lib/plugins/sfDoctrinePlugin/LICENSE | 7 + .../sfDoctrinePlugin/config/.svn/all-wcprops | 23 + .../plugins/sfDoctrinePlugin/config/.svn/entries | 133 + .../config/.svn/prop-base/autoload.yml.svn-base | 9 + .../config/.svn/prop-base/installer.php.svn-base | 9 + ...fDoctrinePluginConfiguration.class.php.svn-base | 9 + .../config/.svn/text-base/autoload.yml.svn-base | 6 + .../config/.svn/text-base/installer.php.svn-base | 5 + ...fDoctrinePluginConfiguration.class.php.svn-base | 112 + .../plugins/sfDoctrinePlugin/config/autoload.yml | 6 + .../plugins/sfDoctrinePlugin/config/installer.php | 5 + .../config/sfDoctrinePluginConfiguration.class.php | 112 + .../config/skeleton/.svn/all-wcprops | 5 + .../sfDoctrinePlugin/config/skeleton/.svn/entries | 31 + .../config/skeleton/config/.svn/all-wcprops | 11 + .../config/skeleton/config/.svn/entries | 65 + .../config/.svn/text-base/databases.yml.svn-base | 10 + .../config/skeleton/config/databases.yml | 10 + .../skeleton/config/doctrine/.svn/all-wcprops | 11 + .../config/skeleton/config/doctrine/.svn/entries | 62 + .../doctrine/.svn/text-base/schema.yml.svn-base | 0 .../config/skeleton/config/doctrine/schema.yml | 0 .../plugins/sfDoctrinePlugin/data/.svn/all-wcprops | 5 + .../lib/plugins/sfDoctrinePlugin/data/.svn/entries | 31 + .../data/generator/.svn/all-wcprops | 5 + .../sfDoctrinePlugin/data/generator/.svn/entries | 37 + .../data/generator/sfDoctrineForm/.svn/all-wcprops | 5 + .../data/generator/sfDoctrineForm/.svn/entries | 31 + .../sfDoctrineForm/default/.svn/all-wcprops | 5 + .../generator/sfDoctrineForm/default/.svn/entries | 31 + .../default/template/.svn/all-wcprops | 41 + .../sfDoctrineForm/default/template/.svn/entries | 232 + .../sfDoctrineFormBaseTemplate.php.svn-base | 9 + ...neFormGeneratedInheritanceTemplate.php.svn-base | 9 + .../sfDoctrineFormGeneratedTemplate.php.svn-base | 9 + .../sfDoctrineFormPluginTemplate.php.svn-base | 9 + .../prop-base/sfDoctrineFormTemplate.php.svn-base | 9 + .../sfDoctrinePluginFormTemplate.php.svn-base | 9 + .../sfDoctrineFormBaseTemplate.php.svn-base | 16 + ...neFormGeneratedInheritanceTemplate.php.svn-base | 101 + .../sfDoctrineFormGeneratedTemplate.php.svn-base | 127 + .../sfDoctrineFormPluginTemplate.php.svn-base | 13 + .../text-base/sfDoctrineFormTemplate.php.svn-base | 26 + .../sfDoctrinePluginFormTemplate.php.svn-base | 26 + .../template/sfDoctrineFormBaseTemplate.php | 16 + .../sfDoctrineFormGeneratedInheritanceTemplate.php | 101 + .../template/sfDoctrineFormGeneratedTemplate.php | 127 + .../template/sfDoctrineFormPluginTemplate.php | 13 + .../default/template/sfDoctrineFormTemplate.php | 26 + .../template/sfDoctrinePluginFormTemplate.php | 26 + .../sfDoctrineFormFilter/.svn/all-wcprops | 5 + .../generator/sfDoctrineFormFilter/.svn/entries | 31 + .../sfDoctrineFormFilter/default/.svn/all-wcprops | 5 + .../sfDoctrineFormFilter/default/.svn/entries | 31 + .../default/template/.svn/all-wcprops | 41 + .../default/template/.svn/entries | 232 + .../sfDoctrineFormFilterBaseTemplate.php.svn-base | 9 + ...FilterGeneratedInheritanceTemplate.php.svn-base | 9 + ...octrineFormFilterGeneratedTemplate.php.svn-base | 9 + ...sfDoctrineFormFilterPluginTemplate.php.svn-base | 9 + .../sfDoctrineFormFilterTemplate.php.svn-base | 9 + ...sfDoctrinePluginFormFilterTemplate.php.svn-base | 9 + .../sfDoctrineFormFilterBaseTemplate.php.svn-base | 16 + ...FilterGeneratedInheritanceTemplate.php.svn-base | 68 + ...octrineFormFilterGeneratedTemplate.php.svn-base | 80 + ...sfDoctrineFormFilterPluginTemplate.php.svn-base | 13 + .../sfDoctrineFormFilterTemplate.php.svn-base | 26 + ...sfDoctrinePluginFormFilterTemplate.php.svn-base | 26 + .../template/sfDoctrineFormFilterBaseTemplate.php | 16 + ...trineFormFilterGeneratedInheritanceTemplate.php | 68 + .../sfDoctrineFormFilterGeneratedTemplate.php | 80 + .../sfDoctrineFormFilterPluginTemplate.php | 13 + .../template/sfDoctrineFormFilterTemplate.php | 26 + .../sfDoctrinePluginFormFilterTemplate.php | 26 + .../generator/sfDoctrineModule/.svn/all-wcprops | 5 + .../data/generator/sfDoctrineModule/.svn/entries | 34 + .../sfDoctrineModule/admin/.svn/all-wcprops | 5 + .../generator/sfDoctrineModule/admin/.svn/entries | 37 + .../sfDoctrineModule/admin/parts/.svn/all-wcprops | 107 + .../sfDoctrineModule/admin/parts/.svn/entries | 606 + .../prop-base/actionsConfiguration.php.svn-base | 9 + .../parts/.svn/prop-base/batchAction.php.svn-base | 9 + .../.svn/prop-base/configuration.php.svn-base | 9 + .../parts/.svn/prop-base/createAction.php.svn-base | 9 + .../parts/.svn/prop-base/deleteAction.php.svn-base | 9 + .../parts/.svn/prop-base/editAction.php.svn-base | 9 + .../prop-base/fieldsConfiguration.php.svn-base | 9 + .../parts/.svn/prop-base/filterAction.php.svn-base | 9 + .../.svn/prop-base/filtersAction.php.svn-base | 9 + .../parts/.svn/prop-base/indexAction.php.svn-base | 9 + .../parts/.svn/prop-base/newAction.php.svn-base | 9 + .../.svn/prop-base/paginationAction.php.svn-base | 9 + .../prop-base/paginationConfiguration.php.svn-base | 9 + .../.svn/prop-base/processFormAction.php.svn-base | 9 + .../.svn/prop-base/sortingAction.php.svn-base | 9 + .../prop-base/sortingConfiguration.php.svn-base | 9 + .../parts/.svn/prop-base/updateAction.php.svn-base | 9 + .../text-base/actionsConfiguration.php.svn-base | 41 + .../parts/.svn/text-base/batchAction.php.svn-base | 64 + .../.svn/text-base/configuration.php.svn-base | 59 + .../parts/.svn/text-base/createAction.php.svn-base | 9 + .../parts/.svn/text-base/deleteAction.php.svn-base | 13 + .../parts/.svn/text-base/editAction.php.svn-base | 5 + .../text-base/fieldsConfiguration.php.svn-base | 86 + .../parts/.svn/text-base/filterAction.php.svn-base | 26 + .../.svn/text-base/filtersAction.php.svn-base | 9 + .../parts/.svn/text-base/indexAction.php.svn-base | 17 + .../parts/.svn/text-base/newAction.php.svn-base | 5 + .../.svn/text-base/paginationAction.php.svn-base | 49 + .../text-base/paginationConfiguration.php.svn-base | 11 + .../.svn/text-base/processFormAction.php.svn-base | 43 + .../.svn/text-base/sortingAction.php.svn-base | 41 + .../text-base/sortingConfiguration.php.svn-base | 10 + .../parts/.svn/text-base/updateAction.php.svn-base | 9 + .../admin/parts/actionsConfiguration.php | 41 + .../sfDoctrineModule/admin/parts/batchAction.php | 64 + .../sfDoctrineModule/admin/parts/configuration.php | 59 + .../sfDoctrineModule/admin/parts/createAction.php | 9 + .../sfDoctrineModule/admin/parts/deleteAction.php | 13 + .../sfDoctrineModule/admin/parts/editAction.php | 5 + .../admin/parts/fieldsConfiguration.php | 86 + .../sfDoctrineModule/admin/parts/filterAction.php | 26 + .../sfDoctrineModule/admin/parts/filtersAction.php | 9 + .../sfDoctrineModule/admin/parts/indexAction.php | 17 + .../sfDoctrineModule/admin/parts/newAction.php | 5 + .../admin/parts/paginationAction.php | 49 + .../admin/parts/paginationConfiguration.php | 11 + .../admin/parts/processFormAction.php | 43 + .../sfDoctrineModule/admin/parts/sortingAction.php | 41 + .../admin/parts/sortingConfiguration.php | 10 + .../sfDoctrineModule/admin/parts/updateAction.php | 9 + .../admin/skeleton/.svn/all-wcprops | 5 + .../sfDoctrineModule/admin/skeleton/.svn/entries | 40 + .../admin/skeleton/actions/.svn/all-wcprops | 11 + .../admin/skeleton/actions/.svn/entries | 62 + .../.svn/prop-base/actions.class.php.svn-base | 9 + .../.svn/text-base/actions.class.php.svn-base | 16 + .../admin/skeleton/actions/actions.class.php | 16 + .../admin/skeleton/config/.svn/all-wcprops | 11 + .../admin/skeleton/config/.svn/entries | 62 + .../config/.svn/text-base/generator.yml.svn-base | 13 + .../admin/skeleton/config/generator.yml | 13 + .../admin/skeleton/lib/.svn/all-wcprops | 17 + .../admin/skeleton/lib/.svn/entries | 96 + .../lib/.svn/prop-base/configuration.php.svn-base | 9 + .../lib/.svn/prop-base/helper.php.svn-base | 9 + .../lib/.svn/text-base/configuration.php.svn-base | 13 + .../lib/.svn/text-base/helper.php.svn-base | 13 + .../admin/skeleton/lib/configuration.php | 13 + .../sfDoctrineModule/admin/skeleton/lib/helper.php | 13 + .../sfDoctrineModule/admin/skeleton/templates/.sf | 0 .../admin/skeleton/templates/.svn/all-wcprops | 11 + .../admin/skeleton/templates/.svn/entries | 62 + .../skeleton/templates/.svn/text-base/.sf.svn-base | 0 .../admin/template/.svn/all-wcprops | 5 + .../sfDoctrineModule/admin/template/.svn/entries | 37 + .../admin/template/actions/.svn/all-wcprops | 11 + .../admin/template/actions/.svn/entries | 62 + .../.svn/prop-base/actions.class.php.svn-base | 9 + .../.svn/text-base/actions.class.php.svn-base | 61 + .../admin/template/actions/actions.class.php | 61 + .../admin/template/lib/.svn/all-wcprops | 11 + .../admin/template/lib/.svn/entries | 62 + .../lib/.svn/prop-base/helper.php.svn-base | 9 + .../lib/.svn/text-base/helper.php.svn-base | 17 + .../sfDoctrineModule/admin/template/lib/helper.php | 17 + .../admin/template/templates/.svn/all-wcprops | 161 + .../admin/template/templates/.svn/entries | 912 + .../templates/.svn/prop-base/_assets.php.svn-base | 9 + .../templates/.svn/prop-base/_filters.php.svn-base | 9 + .../.svn/prop-base/_filters_field.php.svn-base | 9 + .../templates/.svn/prop-base/_flashes.php.svn-base | 9 + .../templates/.svn/prop-base/_form.php.svn-base | 9 + .../.svn/prop-base/_form_actions.php.svn-base | 9 + .../.svn/prop-base/_form_field.php.svn-base | 9 + .../.svn/prop-base/_form_fieldset.php.svn-base | 9 + .../.svn/prop-base/_form_footer.php.svn-base | 9 + .../.svn/prop-base/_form_header.php.svn-base | 9 + .../templates/.svn/prop-base/_list.php.svn-base | 9 + .../.svn/prop-base/_list_actions.php.svn-base | 9 + .../prop-base/_list_batch_actions.php.svn-base | 9 + .../prop-base/_list_field_boolean.php.svn-base | 9 + .../.svn/prop-base/_list_footer.php.svn-base | 9 + .../.svn/prop-base/_list_header.php.svn-base | 9 + .../.svn/prop-base/_list_td_actions.php.svn-base | 9 + .../prop-base/_list_td_batch_actions.php.svn-base | 9 + .../.svn/prop-base/_list_td_stacked.php.svn-base | 9 + .../.svn/prop-base/_list_td_tabular.php.svn-base | 9 + .../.svn/prop-base/_list_th_stacked.php.svn-base | 9 + .../.svn/prop-base/_list_th_tabular.php.svn-base | 9 + .../.svn/prop-base/_pagination.php.svn-base | 9 + .../.svn/prop-base/editSuccess.php.svn-base | 9 + .../.svn/prop-base/indexSuccess.php.svn-base | 9 + .../.svn/prop-base/newSuccess.php.svn-base | 9 + .../templates/.svn/text-base/_assets.php.svn-base | 6 + .../templates/.svn/text-base/_filters.php.svn-base | 36 + .../.svn/text-base/_filters_field.php.svn-base | 20 + .../templates/.svn/text-base/_flashes.php.svn-base | 7 + .../templates/.svn/text-base/_form.php.svn-base | 18 + .../.svn/text-base/_form_actions.php.svn-base | 35 + .../.svn/text-base/_form_field.php.svn-base | 20 + .../.svn/text-base/_form_fieldset.php.svn-base | 18 + .../.svn/text-base/_form_footer.php.svn-base | 0 .../.svn/text-base/_form_header.php.svn-base | 0 .../templates/.svn/text-base/_list.php.svn-base | 54 + .../.svn/text-base/_list_actions.php.svn-base | 11 + .../text-base/_list_batch_actions.php.svn-base | 15 + .../text-base/_list_field_boolean.php.svn-base | 5 + .../.svn/text-base/_list_footer.php.svn-base | 0 .../.svn/text-base/_list_header.php.svn-base | 0 .../.svn/text-base/_list_td_actions.php.svn-base | 18 + .../text-base/_list_td_batch_actions.php.svn-base | 3 + .../.svn/text-base/_list_td_stacked.php.svn-base | 3 + .../.svn/text-base/_list_td_tabular.php.svn-base | 9 + .../.svn/text-base/_list_th_stacked.php.svn-base | 1 + .../.svn/text-base/_list_th_tabular.php.svn-base | 17 + .../.svn/text-base/_pagination.php.svn-base | 25 + .../.svn/text-base/editSuccess.php.svn-base | 20 + .../.svn/text-base/indexSuccess.php.svn-base | 36 + .../.svn/text-base/newSuccess.php.svn-base | 20 + .../admin/template/templates/_assets.php | 6 + .../admin/template/templates/_filters.php | 36 + .../admin/template/templates/_filters_field.php | 20 + .../admin/template/templates/_flashes.php | 7 + .../admin/template/templates/_form.php | 18 + .../admin/template/templates/_form_actions.php | 35 + .../admin/template/templates/_form_field.php | 20 + .../admin/template/templates/_form_fieldset.php | 18 + .../admin/template/templates/_form_footer.php | 0 .../admin/template/templates/_form_header.php | 0 .../admin/template/templates/_list.php | 54 + .../admin/template/templates/_list_actions.php | 11 + .../template/templates/_list_batch_actions.php | 15 + .../template/templates/_list_field_boolean.php | 5 + .../admin/template/templates/_list_footer.php | 0 .../admin/template/templates/_list_header.php | 0 .../admin/template/templates/_list_td_actions.php | 18 + .../template/templates/_list_td_batch_actions.php | 3 + .../admin/template/templates/_list_td_stacked.php | 3 + .../admin/template/templates/_list_td_tabular.php | 9 + .../admin/template/templates/_list_th_stacked.php | 1 + .../admin/template/templates/_list_th_tabular.php | 17 + .../admin/template/templates/_pagination.php | 25 + .../admin/template/templates/editSuccess.php | 20 + .../admin/template/templates/indexSuccess.php | 36 + .../admin/template/templates/newSuccess.php | 20 + .../sfDoctrineModule/default/.svn/all-wcprops | 5 + .../sfDoctrineModule/default/.svn/entries | 37 + .../default/parts/.svn/all-wcprops | 53 + .../sfDoctrineModule/default/parts/.svn/entries | 300 + .../parts/.svn/prop-base/createAction.php.svn-base | 9 + .../parts/.svn/prop-base/deleteAction.php.svn-base | 9 + .../parts/.svn/prop-base/editAction.php.svn-base | 9 + .../parts/.svn/prop-base/indexAction.php.svn-base | 9 + .../parts/.svn/prop-base/newAction.php.svn-base | 9 + .../.svn/prop-base/processFormAction.php.svn-base | 9 + .../parts/.svn/prop-base/showAction.php.svn-base | 9 + .../parts/.svn/prop-base/updateAction.php.svn-base | 9 + .../parts/.svn/text-base/createAction.php.svn-base | 13 + .../parts/.svn/text-base/deleteAction.php.svn-base | 17 + .../parts/.svn/text-base/editAction.php.svn-base | 9 + .../parts/.svn/text-base/indexAction.php.svn-base | 10 + .../parts/.svn/text-base/newAction.php.svn-base | 4 + .../.svn/text-base/processFormAction.php.svn-base | 14 + .../parts/.svn/text-base/showAction.php.svn-base | 9 + .../parts/.svn/text-base/updateAction.php.svn-base | 14 + .../default/parts/createAction.php | 13 + .../default/parts/deleteAction.php | 17 + .../sfDoctrineModule/default/parts/editAction.php | 9 + .../sfDoctrineModule/default/parts/indexAction.php | 10 + .../sfDoctrineModule/default/parts/newAction.php | 4 + .../default/parts/processFormAction.php | 14 + .../sfDoctrineModule/default/parts/showAction.php | 9 + .../default/parts/updateAction.php | 14 + .../default/skeleton/.svn/all-wcprops | 5 + .../sfDoctrineModule/default/skeleton/.svn/entries | 37 + .../default/skeleton/actions/.svn/all-wcprops | 11 + .../default/skeleton/actions/.svn/entries | 62 + .../.svn/prop-base/actions.class.php.svn-base | 9 + .../.svn/text-base/actions.class.php.svn-base | 13 + .../default/skeleton/actions/actions.class.php | 13 + .../default/skeleton/config/.svn/all-wcprops | 11 + .../default/skeleton/config/.svn/entries | 62 + .../config/.svn/text-base/generator.yml.svn-base | 7 + .../default/skeleton/config/generator.yml | 7 + .../default/skeleton/templates/.sf | 0 .../default/skeleton/templates/.svn/all-wcprops | 11 + .../default/skeleton/templates/.svn/entries | 62 + .../skeleton/templates/.svn/text-base/.sf.svn-base | 0 .../default/template/.svn/all-wcprops | 5 + .../sfDoctrineModule/default/template/.svn/entries | 34 + .../default/template/actions/.svn/all-wcprops | 11 + .../default/template/actions/.svn/entries | 62 + .../.svn/prop-base/actions.class.php.svn-base | 9 + .../.svn/text-base/actions.class.php.svn-base | 31 + .../default/template/actions/actions.class.php | 31 + .../default/template/templates/.svn/all-wcprops | 35 + .../default/template/templates/.svn/entries | 198 + .../templates/.svn/prop-base/_form.php.svn-base | 9 + .../.svn/prop-base/editSuccess.php.svn-base | 9 + .../.svn/prop-base/indexSuccess.php.svn-base | 9 + .../.svn/prop-base/newSuccess.php.svn-base | 9 + .../.svn/prop-base/showSuccess.php.svn-base | 9 + .../templates/.svn/text-base/_form.php.svn-base | 53 + .../.svn/text-base/editSuccess.php.svn-base | 3 + .../.svn/text-base/indexSuccess.php.svn-base | 34 + .../.svn/text-base/newSuccess.php.svn-base | 3 + .../.svn/text-base/showSuccess.php.svn-base | 22 + .../default/template/templates/_form.php | 53 + .../default/template/templates/editSuccess.php | 3 + .../default/template/templates/indexSuccess.php | 34 + .../default/template/templates/newSuccess.php | 3 + .../default/template/templates/showSuccess.php | 22 + .../plugins/sfDoctrinePlugin/i18n/.svn/all-wcprops | 209 + .../lib/plugins/sfDoctrinePlugin/i18n/.svn/entries | 1184 + .../i18n/.svn/text-base/sf_admin.ar.xml.svn-base | 134 + .../i18n/.svn/text-base/sf_admin.bg.xml.svn-base | 126 + .../i18n/.svn/text-base/sf_admin.ca.xml.svn-base | 151 + .../i18n/.svn/text-base/sf_admin.cs.xml.svn-base | 178 + .../i18n/.svn/text-base/sf_admin.da.xml.svn-base | 134 + .../i18n/.svn/text-base/sf_admin.de.xml.svn-base | 191 + .../i18n/.svn/text-base/sf_admin.el.xml.svn-base | 158 + .../i18n/.svn/text-base/sf_admin.es.xml.svn-base | 308 + .../.svn/text-base/sf_admin.es_AR.xml.svn-base | 114 + .../i18n/.svn/text-base/sf_admin.eu.xml.svn-base | 170 + .../i18n/.svn/text-base/sf_admin.fa.xml.svn-base | 168 + .../i18n/.svn/text-base/sf_admin.fi.xml.svn-base | 134 + .../i18n/.svn/text-base/sf_admin.fr.xml.svn-base | 182 + .../i18n/.svn/text-base/sf_admin.hr.xml.svn-base | 134 + .../i18n/.svn/text-base/sf_admin.hu.xml.svn-base | 134 + .../i18n/.svn/text-base/sf_admin.id.xml.svn-base | 134 + .../i18n/.svn/text-base/sf_admin.it.xml.svn-base | 202 + .../i18n/.svn/text-base/sf_admin.ja.xml.svn-base | 294 + .../i18n/.svn/text-base/sf_admin.lt.xml.svn-base | 134 + .../i18n/.svn/text-base/sf_admin.lv.xml.svn-base | 134 + .../i18n/.svn/text-base/sf_admin.nl.xml.svn-base | 130 + .../i18n/.svn/text-base/sf_admin.no.xml.svn-base | 114 + .../i18n/.svn/text-base/sf_admin.pl.xml.svn-base | 174 + .../i18n/.svn/text-base/sf_admin.pt.xml.svn-base | 135 + .../.svn/text-base/sf_admin.pt_BR.xml.svn-base | 138 + .../i18n/.svn/text-base/sf_admin.ro.xml.svn-base | 137 + .../i18n/.svn/text-base/sf_admin.ru.xml.svn-base | 174 + .../i18n/.svn/text-base/sf_admin.sk.xml.svn-base | 134 + .../i18n/.svn/text-base/sf_admin.sl.xml.svn-base | 158 + .../i18n/.svn/text-base/sf_admin.sv.xml.svn-base | 146 + .../i18n/.svn/text-base/sf_admin.tr.xml.svn-base | 174 + .../i18n/.svn/text-base/sf_admin.uk.xml.svn-base | 174 + .../.svn/text-base/sf_admin.zh_CN.xml.svn-base | 135 + .../.svn/text-base/sf_admin.zh_TW.xml.svn-base | 151 + .../plugins/sfDoctrinePlugin/i18n/sf_admin.ar.xml | 134 + .../plugins/sfDoctrinePlugin/i18n/sf_admin.bg.xml | 126 + .../plugins/sfDoctrinePlugin/i18n/sf_admin.ca.xml | 151 + .../plugins/sfDoctrinePlugin/i18n/sf_admin.cs.xml | 178 + .../plugins/sfDoctrinePlugin/i18n/sf_admin.da.xml | 134 + .../plugins/sfDoctrinePlugin/i18n/sf_admin.de.xml | 191 + .../plugins/sfDoctrinePlugin/i18n/sf_admin.el.xml | 158 + .../plugins/sfDoctrinePlugin/i18n/sf_admin.es.xml | 308 + .../sfDoctrinePlugin/i18n/sf_admin.es_AR.xml | 114 + .../plugins/sfDoctrinePlugin/i18n/sf_admin.eu.xml | 170 + .../plugins/sfDoctrinePlugin/i18n/sf_admin.fa.xml | 168 + .../plugins/sfDoctrinePlugin/i18n/sf_admin.fi.xml | 134 + .../plugins/sfDoctrinePlugin/i18n/sf_admin.fr.xml | 182 + .../plugins/sfDoctrinePlugin/i18n/sf_admin.hr.xml | 134 + .../plugins/sfDoctrinePlugin/i18n/sf_admin.hu.xml | 134 + .../plugins/sfDoctrinePlugin/i18n/sf_admin.id.xml | 134 + .../plugins/sfDoctrinePlugin/i18n/sf_admin.it.xml | 202 + .../plugins/sfDoctrinePlugin/i18n/sf_admin.ja.xml | 294 + .../plugins/sfDoctrinePlugin/i18n/sf_admin.lt.xml | 134 + .../plugins/sfDoctrinePlugin/i18n/sf_admin.lv.xml | 134 + .../plugins/sfDoctrinePlugin/i18n/sf_admin.nl.xml | 130 + .../plugins/sfDoctrinePlugin/i18n/sf_admin.no.xml | 114 + .../plugins/sfDoctrinePlugin/i18n/sf_admin.pl.xml | 174 + .../plugins/sfDoctrinePlugin/i18n/sf_admin.pt.xml | 135 + .../sfDoctrinePlugin/i18n/sf_admin.pt_BR.xml | 138 + .../plugins/sfDoctrinePlugin/i18n/sf_admin.ro.xml | 137 + .../plugins/sfDoctrinePlugin/i18n/sf_admin.ru.xml | 174 + .../plugins/sfDoctrinePlugin/i18n/sf_admin.sk.xml | 134 + .../plugins/sfDoctrinePlugin/i18n/sf_admin.sl.xml | 158 + .../plugins/sfDoctrinePlugin/i18n/sf_admin.sv.xml | 146 + .../plugins/sfDoctrinePlugin/i18n/sf_admin.tr.xml | 174 + .../plugins/sfDoctrinePlugin/i18n/sf_admin.uk.xml | 174 + .../sfDoctrinePlugin/i18n/sf_admin.zh_CN.xml | 135 + .../sfDoctrinePlugin/i18n/sf_admin.zh_TW.xml | 151 + .../plugins/sfDoctrinePlugin/lib/.svn/all-wcprops | 11 + .../lib/plugins/sfDoctrinePlugin/lib/.svn/entries | 104 + .../sfDoctrineException.class.php.svn-base | 9 + .../sfDoctrineException.class.php.svn-base | 23 + .../sfDoctrinePlugin/lib/cli/.svn/all-wcprops | 11 + .../plugins/sfDoctrinePlugin/lib/cli/.svn/entries | 62 + .../prop-base/sfDoctrineCli.class.php.svn-base | 9 + .../text-base/sfDoctrineCli.class.php.svn-base | 71 + .../lib/cli/sfDoctrineCli.class.php | 71 + .../sfDoctrinePlugin/lib/database/.svn/all-wcprops | 23 + .../sfDoctrinePlugin/lib/database/.svn/entries | 130 + ...sfDoctrineConnectionListener.class.php.svn-base | 9 + ...sfDoctrineConnectionProfiler.class.php.svn-base | 9 + .../sfDoctrineDatabase.class.php.svn-base | 9 + ...sfDoctrineConnectionListener.class.php.svn-base | 34 + ...sfDoctrineConnectionProfiler.class.php.svn-base | 206 + .../sfDoctrineDatabase.class.php.svn-base | 168 + .../sfDoctrineConnectionListener.class.php | 34 + .../sfDoctrineConnectionProfiler.class.php | 206 + .../lib/database/sfDoctrineDatabase.class.php | 168 + .../sfDoctrinePlugin/lib/debug/.svn/all-wcprops | 11 + .../sfDoctrinePlugin/lib/debug/.svn/entries | 62 + .../sfWebDebugPanelDoctrine.class.php.svn-base | 9 + .../sfWebDebugPanelDoctrine.class.php.svn-base | 163 + .../lib/debug/sfWebDebugPanelDoctrine.class.php | 163 + .../sfDoctrinePlugin/lib/form/.svn/all-wcprops | 17 + .../plugins/sfDoctrinePlugin/lib/form/.svn/entries | 96 + .../prop-base/sfFormDoctrine.class.php.svn-base | 9 + .../sfFormFilterDoctrine.class.php.svn-base | 9 + .../text-base/sfFormDoctrine.class.php.svn-base | 425 + .../sfFormFilterDoctrine.class.php.svn-base | 333 + .../lib/form/sfFormDoctrine.class.php | 425 + .../lib/form/sfFormFilterDoctrine.class.php | 333 + .../lib/generator/.svn/all-wcprops | 29 + .../sfDoctrinePlugin/lib/generator/.svn/entries | 164 + .../prop-base/sfDoctrineColumn.class.php.svn-base | 9 + ...fDoctrineFormFilterGenerator.class.php.svn-base | 9 + .../sfDoctrineFormGenerator.class.php.svn-base | 9 + .../sfDoctrineGenerator.class.php.svn-base | 9 + .../text-base/sfDoctrineColumn.class.php.svn-base | 331 + ...fDoctrineFormFilterGenerator.class.php.svn-base | 371 + .../sfDoctrineFormGenerator.class.php.svn-base | 701 + .../sfDoctrineGenerator.class.php.svn-base | 282 + .../lib/generator/sfDoctrineColumn.class.php | 331 + .../sfDoctrineFormFilterGenerator.class.php | 371 + .../generator/sfDoctrineFormGenerator.class.php | 701 + .../lib/generator/sfDoctrineGenerator.class.php | 282 + .../sfDoctrinePlugin/lib/mailer/.svn/all-wcprops | 11 + .../sfDoctrinePlugin/lib/mailer/.svn/entries | 62 + .../Swift_DoctrineSpool.class.php.svn-base | 9 + .../Swift_DoctrineSpool.class.php.svn-base | 134 + .../lib/mailer/Swift_DoctrineSpool.class.php | 134 + .../sfDoctrinePlugin/lib/pager/.svn/all-wcprops | 11 + .../sfDoctrinePlugin/lib/pager/.svn/entries | 62 + .../prop-base/sfDoctrinePager.class.php.svn-base | 9 + .../text-base/sfDoctrinePager.class.php.svn-base | 203 + .../lib/pager/sfDoctrinePager.class.php | 203 + .../sfDoctrinePlugin/lib/record/.svn/all-wcprops | 17 + .../sfDoctrinePlugin/lib/record/.svn/entries | 96 + .../prop-base/sfDoctrineRecord.class.php.svn-base | 9 + .../sfDoctrineRecordI18nFilter.class.php.svn-base | 9 + .../text-base/sfDoctrineRecord.class.php.svn-base | 247 + .../sfDoctrineRecordI18nFilter.class.php.svn-base | 64 + .../lib/record/sfDoctrineRecord.class.php | 247 + .../record/sfDoctrineRecordI18nFilter.class.php | 64 + .../sfDoctrinePlugin/lib/routing/.svn/all-wcprops | 17 + .../sfDoctrinePlugin/lib/routing/.svn/entries | 96 + .../prop-base/sfDoctrineRoute.class.php.svn-base | 9 + .../sfDoctrineRouteCollection.class.php.svn-base | 9 + .../text-base/sfDoctrineRoute.class.php.svn-base | 143 + .../sfDoctrineRouteCollection.class.php.svn-base | 25 + .../lib/routing/sfDoctrineRoute.class.php | 143 + .../routing/sfDoctrineRouteCollection.class.php | 25 + .../lib/sfDoctrineException.class.php | 23 + .../sfDoctrinePlugin/lib/task/.svn/all-wcprops | 155 + .../plugins/sfDoctrinePlugin/lib/task/.svn/entries | 878 + .../sfDoctrineBaseTask.class.php.svn-base | 9 + .../sfDoctrineBuildDbTask.class.php.svn-base | 9 + .../sfDoctrineBuildFiltersTask.class.php.svn-base | 9 + .../sfDoctrineBuildFormsTask.class.php.svn-base | 9 + .../sfDoctrineBuildModelTask.class.php.svn-base | 9 + .../sfDoctrineBuildSchemaTask.class.php.svn-base | 9 + .../sfDoctrineBuildSqlTask.class.php.svn-base | 9 + .../sfDoctrineBuildTask.class.php.svn-base | 9 + ...fDoctrineCleanModelFilesTask.class.php.svn-base | 9 + ...octrineConfigureDatabaseTask.class.php.svn-base | 9 + ...octrineCreateModelTablesTask.class.php.svn-base | 9 + .../sfDoctrineDataDumpTask.class.php.svn-base | 9 + .../sfDoctrineDataLoadTask.class.php.svn-base | 9 + ...DoctrineDeleteModelFilesTask.class.php.svn-base | 9 + .../prop-base/sfDoctrineDqlTask.class.php.svn-base | 9 + .../sfDoctrineDropDbTask.class.php.svn-base | 9 + .../sfDoctrineGenerateAdminTask.class.php.svn-base | 9 + ...octrineGenerateMigrationTask.class.php.svn-base | 9 + ...rineGenerateMigrationsDbTask.class.php.svn-base | 9 + ...neGenerateMigrationsDiffTask.class.php.svn-base | 9 + ...GenerateMigrationsModelsTask.class.php.svn-base | 9 + ...neGenerateModuleForRouteTask.class.php.svn-base | 9 + ...sfDoctrineGenerateModuleTask.class.php.svn-base | 9 + .../sfDoctrineInsertSqlTask.class.php.svn-base | 9 + .../sfDoctrineMigrateTask.class.php.svn-base | 9 + .../sfDoctrineBaseTask.class.php.svn-base | 286 + .../sfDoctrineBuildDbTask.class.php.svn-base | 79 + .../sfDoctrineBuildFiltersTask.class.php.svn-base | 79 + .../sfDoctrineBuildFormsTask.class.php.svn-base | 87 + .../sfDoctrineBuildModelTask.class.php.svn-base | 128 + .../sfDoctrineBuildSchemaTask.class.php.svn-base | 58 + .../sfDoctrineBuildSqlTask.class.php.svn-base | 65 + .../sfDoctrineBuildTask.class.php.svn-base | 301 + ...fDoctrineCleanModelFilesTask.class.php.svn-base | 119 + ...octrineConfigureDatabaseTask.class.php.svn-base | 89 + ...octrineCreateModelTablesTask.class.php.svn-base | 91 + .../sfDoctrineDataDumpTask.class.php.svn-base | 91 + .../sfDoctrineDataLoadTask.class.php.svn-base | 89 + ...DoctrineDeleteModelFilesTask.class.php.svn-base | 142 + .../text-base/sfDoctrineDqlTask.class.php.svn-base | 177 + .../sfDoctrineDropDbTask.class.php.svn-base | 99 + .../sfDoctrineGenerateAdminTask.class.php.svn-base | 213 + ...octrineGenerateMigrationTask.class.php.svn-base | 92 + ...rineGenerateMigrationsDbTask.class.php.svn-base | 66 + ...neGenerateMigrationsDiffTask.class.php.svn-base | 68 + ...GenerateMigrationsModelsTask.class.php.svn-base | 64 + ...neGenerateModuleForRouteTask.class.php.svn-base | 98 + ...sfDoctrineGenerateModuleTask.class.php.svn-base | 222 + .../sfDoctrineInsertSqlTask.class.php.svn-base | 64 + .../sfDoctrineMigrateTask.class.php.svn-base | 149 + .../lib/task/sfDoctrineBaseTask.class.php | 286 + .../lib/task/sfDoctrineBuildDbTask.class.php | 79 + .../lib/task/sfDoctrineBuildFiltersTask.class.php | 79 + .../lib/task/sfDoctrineBuildFormsTask.class.php | 87 + .../lib/task/sfDoctrineBuildModelTask.class.php | 128 + .../lib/task/sfDoctrineBuildSchemaTask.class.php | 58 + .../lib/task/sfDoctrineBuildSqlTask.class.php | 65 + .../lib/task/sfDoctrineBuildTask.class.php | 301 + .../task/sfDoctrineCleanModelFilesTask.class.php | 119 + .../task/sfDoctrineConfigureDatabaseTask.class.php | 89 + .../task/sfDoctrineCreateModelTablesTask.class.php | 91 + .../lib/task/sfDoctrineDataDumpTask.class.php | 91 + .../lib/task/sfDoctrineDataLoadTask.class.php | 89 + .../task/sfDoctrineDeleteModelFilesTask.class.php | 142 + .../lib/task/sfDoctrineDqlTask.class.php | 177 + .../lib/task/sfDoctrineDropDbTask.class.php | 99 + .../lib/task/sfDoctrineGenerateAdminTask.class.php | 213 + .../task/sfDoctrineGenerateMigrationTask.class.php | 92 + .../sfDoctrineGenerateMigrationsDbTask.class.php | 66 + .../sfDoctrineGenerateMigrationsDiffTask.class.php | 68 + ...fDoctrineGenerateMigrationsModelsTask.class.php | 64 + .../sfDoctrineGenerateModuleForRouteTask.class.php | 98 + .../task/sfDoctrineGenerateModuleTask.class.php | 222 + .../lib/task/sfDoctrineInsertSqlTask.class.php | 64 + .../lib/task/sfDoctrineMigrateTask.class.php | 149 + .../sfDoctrinePlugin/lib/test/.svn/all-wcprops | 11 + .../plugins/sfDoctrinePlugin/lib/test/.svn/entries | 62 + .../prop-base/sfTesterDoctrine.class.php.svn-base | 9 + .../text-base/sfTesterDoctrine.class.php.svn-base | 177 + .../lib/test/sfTesterDoctrine.class.php | 177 + .../lib/validator/.svn/all-wcprops | 17 + .../sfDoctrinePlugin/lib/validator/.svn/entries | 96 + .../sfValidatorDoctrineChoice.class.php.svn-base | 9 + .../sfValidatorDoctrineUnique.class.php.svn-base | 9 + .../sfValidatorDoctrineChoice.class.php.svn-base | 131 + .../sfValidatorDoctrineUnique.class.php.svn-base | 161 + .../validator/sfValidatorDoctrineChoice.class.php | 131 + .../validator/sfValidatorDoctrineUnique.class.php | 161 + .../sfDoctrinePlugin/lib/vendor/.svn/all-wcprops | 5 + .../sfDoctrinePlugin/lib/vendor/.svn/dir-prop-base | 6 + .../sfDoctrinePlugin/lib/vendor/.svn/entries | 28 + .../lib/vendor/doctrine/.svn/all-wcprops | 11 + .../lib/vendor/doctrine/.svn/entries | 65 + .../doctrine/.svn/text-base/Doctrine.php.svn-base | 38 + .../lib/vendor/doctrine/Doctrine.php | 38 + .../lib/vendor/doctrine/Doctrine/.svn/all-wcprops | 293 + .../lib/vendor/doctrine/Doctrine/.svn/entries | 1771 + .../Doctrine/.svn/text-base/Access.php.svn-base | 203 + .../Doctrine/.svn/text-base/AuditLog.php.svn-base | 170 + .../Doctrine/.svn/text-base/Builder.php.svn-base | 56 + .../Doctrine/.svn/text-base/Cli.php.svn-base | 679 + .../.svn/text-base/Collection.php.svn-base | 1070 + .../Doctrine/.svn/text-base/Column.php.svn-base | 163 + .../Doctrine/.svn/text-base/Compiler.php.svn-base | 138 + .../.svn/text-base/Configurable.php.svn-base | 427 + .../.svn/text-base/Connection.php.svn-base | 1664 + .../Doctrine/.svn/text-base/Core.php.svn-base | 1228 + .../Doctrine/.svn/text-base/Data.php.svn-base | 279 + .../Doctrine/.svn/text-base/DataDict.php.svn-base | 54 + .../Doctrine/.svn/text-base/Event.php.svn-base | 375 + .../.svn/text-base/EventListener.php.svn-base | 119 + .../Doctrine/.svn/text-base/Exception.php.svn-base | 92 + .../Doctrine/.svn/text-base/Export.php.svn-base | 1389 + .../.svn/text-base/Expression.php.svn-base | 158 + .../Doctrine/.svn/text-base/File.php.svn-base | 55 + .../Doctrine/.svn/text-base/Formatter.php.svn-base | 275 + .../Doctrine/.svn/text-base/Hook.php.svn-base | 230 + .../Doctrine/.svn/text-base/Hydrator.php.svn-base | 152 + .../Doctrine/.svn/text-base/I18n.php.svn-base | 134 + .../Doctrine/.svn/text-base/Import.php.svn-base | 445 + .../Doctrine/.svn/text-base/Inflector.php.svn-base | 278 + .../.svn/text-base/IntegrityMapper.php.svn-base | 173 + .../Doctrine/.svn/text-base/Lib.php.svn-base | 388 + .../Doctrine/.svn/text-base/Locator.php.svn-base | 197 + .../Doctrine/.svn/text-base/Manager.php.svn-base | 837 + .../Doctrine/.svn/text-base/Migration.php.svn-base | 562 + .../Doctrine/.svn/text-base/Node.php.svn-base | 198 + .../Doctrine/.svn/text-base/Null.php.svn-base | 47 + .../.svn/text-base/Overloadable.php.svn-base | 44 + .../Doctrine/.svn/text-base/Pager.php.svn-base | 550 + .../Doctrine/.svn/text-base/Parser.php.svn-base | 153 + .../Doctrine/.svn/text-base/Query.php.svn-base | 2249 + .../Doctrine/.svn/text-base/RawSql.php.svn-base | 454 + .../Doctrine/.svn/text-base/Record.php.svn-base | 2718 + .../Doctrine/.svn/text-base/Relation.php.svn-base | 456 + .../Doctrine/.svn/text-base/Search.php.svn-base | 342 + .../Doctrine/.svn/text-base/Sequence.php.svn-base | 75 + .../Doctrine/.svn/text-base/Table.php.svn-base | 2858 + .../Doctrine/.svn/text-base/Task.php.svn-base | 299 + .../Doctrine/.svn/text-base/Template.php.svn-base | 205 + .../.svn/text-base/Transaction.php.svn-base | 514 + .../Doctrine/.svn/text-base/Tree.php.svn-base | 134 + .../Doctrine/.svn/text-base/Util.php.svn-base | 34 + .../Doctrine/.svn/text-base/Validator.php.svn-base | 201 + .../Doctrine/.svn/text-base/View.php.svn-base | 192 + .../lib/vendor/doctrine/Doctrine/Access.php | 203 + .../doctrine/Doctrine/Adapter/.svn/all-wcprops | 35 + .../vendor/doctrine/Doctrine/Adapter/.svn/entries | 201 + .../Adapter/.svn/text-base/Exception.php.svn-base | 34 + .../Adapter/.svn/text-base/Interface.php.svn-base | 47 + .../Adapter/.svn/text-base/Mock.php.svn-base | 294 + .../Adapter/.svn/text-base/Oracle.php.svn-base | 319 + .../Adapter/.svn/text-base/Statement.php.svn-base | 131 + .../vendor/doctrine/Doctrine/Adapter/Exception.php | 34 + .../vendor/doctrine/Doctrine/Adapter/Interface.php | 47 + .../lib/vendor/doctrine/Doctrine/Adapter/Mock.php | 294 + .../vendor/doctrine/Doctrine/Adapter/Oracle.php | 319 + .../vendor/doctrine/Doctrine/Adapter/Statement.php | 131 + .../Doctrine/Adapter/Statement/.svn/all-wcprops | 23 + .../Doctrine/Adapter/Statement/.svn/entries | 130 + .../.svn/text-base/Interface.php.svn-base | 276 + .../Statement/.svn/text-base/Mock.php.svn-base | 379 + .../Statement/.svn/text-base/Oracle.php.svn-base | 597 + .../Doctrine/Adapter/Statement/Interface.php | 276 + .../doctrine/Doctrine/Adapter/Statement/Mock.php | 379 + .../doctrine/Doctrine/Adapter/Statement/Oracle.php | 597 + .../lib/vendor/doctrine/Doctrine/AuditLog.php | 170 + .../doctrine/Doctrine/AuditLog/.svn/all-wcprops | 11 + .../vendor/doctrine/Doctrine/AuditLog/.svn/entries | 65 + .../AuditLog/.svn/text-base/Listener.php.svn-base | 164 + .../vendor/doctrine/Doctrine/AuditLog/Listener.php | 164 + .../Doctrine/AuditLog/Listener/.svn/all-wcprops | 11 + .../Doctrine/AuditLog/Listener/.svn/entries | 62 + .../Listener/.svn/text-base/Microtime.php.svn-base | 91 + .../Doctrine/AuditLog/Listener/Microtime.php | 91 + .../lib/vendor/doctrine/Doctrine/Builder.php | 56 + .../doctrine/Doctrine/Cache/.svn/all-wcprops | 53 + .../vendor/doctrine/Doctrine/Cache/.svn/entries | 300 + .../Doctrine/Cache/.svn/text-base/Apc.php.svn-base | 115 + .../Cache/.svn/text-base/Array.php.svn-base | 108 + .../Doctrine/Cache/.svn/text-base/Db.php.svn-base | 232 + .../Cache/.svn/text-base/Driver.php.svn-base | 280 + .../Cache/.svn/text-base/Exception.php.svn-base | 36 + .../Cache/.svn/text-base/Interface.php.svn-base | 70 + .../Cache/.svn/text-base/Memcache.php.svn-base | 151 + .../Cache/.svn/text-base/Xcache.php.svn-base | 131 + .../lib/vendor/doctrine/Doctrine/Cache/Apc.php | 115 + .../lib/vendor/doctrine/Doctrine/Cache/Array.php | 108 + .../lib/vendor/doctrine/Doctrine/Cache/Db.php | 232 + .../lib/vendor/doctrine/Doctrine/Cache/Driver.php | 280 + .../vendor/doctrine/Doctrine/Cache/Exception.php | 36 + .../vendor/doctrine/Doctrine/Cache/Interface.php | 70 + .../vendor/doctrine/Doctrine/Cache/Memcache.php | 151 + .../lib/vendor/doctrine/Doctrine/Cache/Xcache.php | 131 + .../lib/vendor/doctrine/Doctrine/Cli.php | 679 + .../vendor/doctrine/Doctrine/Cli/.svn/all-wcprops | 23 + .../lib/vendor/doctrine/Doctrine/Cli/.svn/entries | 130 + .../.svn/text-base/AnsiColorFormatter.php.svn-base | 160 + .../Cli/.svn/text-base/Exception.php.svn-base | 34 + .../Cli/.svn/text-base/Formatter.php.svn-base | 116 + .../doctrine/Doctrine/Cli/AnsiColorFormatter.php | 160 + .../lib/vendor/doctrine/Doctrine/Cli/Exception.php | 34 + .../lib/vendor/doctrine/Doctrine/Cli/Formatter.php | 116 + .../lib/vendor/doctrine/Doctrine/Collection.php | 1070 + .../doctrine/Doctrine/Collection/.svn/all-wcprops | 29 + .../doctrine/Doctrine/Collection/.svn/entries | 167 + .../.svn/text-base/Exception.php.svn-base | 34 + .../.svn/text-base/Iterator.php.svn-base | 119 + .../Collection/.svn/text-base/Offset.php.svn-base | 65 + .../.svn/text-base/OnDemand.php.svn-base | 100 + .../doctrine/Doctrine/Collection/Exception.php | 34 + .../doctrine/Doctrine/Collection/Iterator.php | 119 + .../Doctrine/Collection/Iterator/.svn/all-wcprops | 23 + .../Doctrine/Collection/Iterator/.svn/entries | 130 + .../.svn/text-base/Expandable.php.svn-base | 54 + .../Iterator/.svn/text-base/Normal.php.svn-base | 42 + .../Iterator/.svn/text-base/Offset.php.svn-base | 37 + .../Doctrine/Collection/Iterator/Expandable.php | 54 + .../Doctrine/Collection/Iterator/Normal.php | 42 + .../Doctrine/Collection/Iterator/Offset.php | 37 + .../vendor/doctrine/Doctrine/Collection/Offset.php | 65 + .../doctrine/Doctrine/Collection/OnDemand.php | 100 + .../lib/vendor/doctrine/Doctrine/Column.php | 163 + .../lib/vendor/doctrine/Doctrine/Compiler.php | 138 + .../doctrine/Doctrine/Compiler/.svn/all-wcprops | 11 + .../vendor/doctrine/Doctrine/Compiler/.svn/entries | 62 + .../Compiler/.svn/text-base/Exception.php.svn-base | 34 + .../doctrine/Doctrine/Compiler/Exception.php | 34 + .../lib/vendor/doctrine/Doctrine/Configurable.php | 427 + .../lib/vendor/doctrine/Doctrine/Connection.php | 1664 + .../doctrine/Doctrine/Connection/.svn/all-wcprops | 83 + .../doctrine/Doctrine/Connection/.svn/entries | 488 + .../Connection/.svn/text-base/Common.php.svn-base | 57 + .../Connection/.svn/text-base/Db2.php.svn-base | 64 + .../.svn/text-base/Exception.php.svn-base | 130 + .../Connection/.svn/text-base/Mock.php.svn-base | 51 + .../Connection/.svn/text-base/Module.php.svn-base | 83 + .../Connection/.svn/text-base/Mssql.php.svn-base | 455 + .../Connection/.svn/text-base/Mysql.php.svn-base | 213 + .../Connection/.svn/text-base/Oracle.php.svn-base | 162 + .../Connection/.svn/text-base/Pgsql.php.svn-base | 246 + .../.svn/text-base/Profiler.php.svn-base | 182 + .../Connection/.svn/text-base/Sqlite.php.svn-base | 129 + .../.svn/text-base/Statement.php.svn-base | 484 + .../.svn/text-base/UnitOfWork.php.svn-base | 960 + .../vendor/doctrine/Doctrine/Connection/Common.php | 57 + .../vendor/doctrine/Doctrine/Connection/Db2.php | 64 + .../doctrine/Doctrine/Connection/Exception.php | 130 + .../vendor/doctrine/Doctrine/Connection/Mock.php | 51 + .../vendor/doctrine/Doctrine/Connection/Module.php | 83 + .../vendor/doctrine/Doctrine/Connection/Mssql.php | 455 + .../Doctrine/Connection/Mssql/.svn/all-wcprops | 11 + .../Doctrine/Connection/Mssql/.svn/entries | 62 + .../Mssql/.svn/text-base/Exception.php.svn-base | 75 + .../Doctrine/Connection/Mssql/Exception.php | 75 + .../vendor/doctrine/Doctrine/Connection/Mysql.php | 213 + .../Doctrine/Connection/Mysql/.svn/all-wcprops | 11 + .../Doctrine/Connection/Mysql/.svn/entries | 62 + .../Mysql/.svn/text-base/Exception.php.svn-base | 86 + .../Doctrine/Connection/Mysql/Exception.php | 86 + .../vendor/doctrine/Doctrine/Connection/Oracle.php | 162 + .../Doctrine/Connection/Oracle/.svn/all-wcprops | 11 + .../Doctrine/Connection/Oracle/.svn/entries | 62 + .../Oracle/.svn/text-base/Exception.php.svn-base | 80 + .../Doctrine/Connection/Oracle/Exception.php | 80 + .../vendor/doctrine/Doctrine/Connection/Pgsql.php | 246 + .../Doctrine/Connection/Pgsql/.svn/all-wcprops | 11 + .../Doctrine/Connection/Pgsql/.svn/entries | 62 + .../Pgsql/.svn/text-base/Exception.php.svn-base | 108 + .../Doctrine/Connection/Pgsql/Exception.php | 108 + .../doctrine/Doctrine/Connection/Profiler.php | 182 + .../Doctrine/Connection/Profiler/.svn/all-wcprops | 11 + .../Doctrine/Connection/Profiler/.svn/entries | 62 + .../Profiler/.svn/text-base/Exception.php.svn-base | 35 + .../Doctrine/Connection/Profiler/Exception.php | 35 + .../vendor/doctrine/Doctrine/Connection/Sqlite.php | 129 + .../Doctrine/Connection/Sqlite/.svn/all-wcprops | 11 + .../Doctrine/Connection/Sqlite/.svn/entries | 62 + .../Sqlite/.svn/text-base/Exception.php.svn-base | 78 + .../Doctrine/Connection/Sqlite/Exception.php | 78 + .../doctrine/Doctrine/Connection/Statement.php | 484 + .../doctrine/Doctrine/Connection/UnitOfWork.php | 960 + .../lib/vendor/doctrine/Doctrine/Core.php | 1228 + .../lib/vendor/doctrine/Doctrine/Data.php | 279 + .../vendor/doctrine/Doctrine/Data/.svn/all-wcprops | 23 + .../lib/vendor/doctrine/Doctrine/Data/.svn/entries | 130 + .../Data/.svn/text-base/Exception.php.svn-base | 34 + .../Data/.svn/text-base/Export.php.svn-base | 213 + .../Data/.svn/text-base/Import.php.svn-base | 402 + .../vendor/doctrine/Doctrine/Data/Exception.php | 34 + .../lib/vendor/doctrine/Doctrine/Data/Export.php | 213 + .../lib/vendor/doctrine/Doctrine/Data/Import.php | 402 + .../lib/vendor/doctrine/Doctrine/DataDict.php | 54 + .../doctrine/Doctrine/DataDict/.svn/all-wcprops | 41 + .../vendor/doctrine/Doctrine/DataDict/.svn/entries | 232 + .../DataDict/.svn/text-base/Exception.php.svn-base | 34 + .../DataDict/.svn/text-base/Mssql.php.svn-base | 273 + .../DataDict/.svn/text-base/Mysql.php.svn-base | 514 + .../DataDict/.svn/text-base/Oracle.php.svn-base | 230 + .../DataDict/.svn/text-base/Pgsql.php.svn-base | 686 + .../DataDict/.svn/text-base/Sqlite.php.svn-base | 321 + .../doctrine/Doctrine/DataDict/Exception.php | 34 + .../vendor/doctrine/Doctrine/DataDict/Mssql.php | 273 + .../vendor/doctrine/Doctrine/DataDict/Mysql.php | 514 + .../vendor/doctrine/Doctrine/DataDict/Oracle.php | 230 + .../vendor/doctrine/Doctrine/DataDict/Pgsql.php | 686 + .../vendor/doctrine/Doctrine/DataDict/Sqlite.php | 321 + .../lib/vendor/doctrine/Doctrine/Event.php | 375 + .../lib/vendor/doctrine/Doctrine/EventListener.php | 119 + .../Doctrine/EventListener/.svn/all-wcprops | 23 + .../doctrine/Doctrine/EventListener/.svn/entries | 130 + .../.svn/text-base/Chain.php.svn-base | 504 + .../.svn/text-base/Exception.php.svn-base | 34 + .../.svn/text-base/Interface.php.svn-base | 68 + .../doctrine/Doctrine/EventListener/Chain.php | 504 + .../doctrine/Doctrine/EventListener/Exception.php | 34 + .../doctrine/Doctrine/EventListener/Interface.php | 68 + .../lib/vendor/doctrine/Doctrine/Exception.php | 92 + .../lib/vendor/doctrine/Doctrine/Export.php | 1389 + .../doctrine/Doctrine/Export/.svn/all-wcprops | 53 + .../vendor/doctrine/Doctrine/Export/.svn/entries | 300 + .../Export/.svn/text-base/Exception.php.svn-base | 34 + .../Export/.svn/text-base/Mssql.php.svn-base | 524 + .../Export/.svn/text-base/Mysql.php.svn-base | 819 + .../Export/.svn/text-base/Oracle.php.svn-base | 606 + .../Export/.svn/text-base/Pgsql.php.svn-base | 393 + .../Export/.svn/text-base/Reporter.php.svn-base | 51 + .../Export/.svn/text-base/Schema.php.svn-base | 154 + .../Export/.svn/text-base/Sqlite.php.svn-base | 421 + .../vendor/doctrine/Doctrine/Export/Exception.php | 34 + .../lib/vendor/doctrine/Doctrine/Export/Mssql.php | 524 + .../lib/vendor/doctrine/Doctrine/Export/Mysql.php | 819 + .../lib/vendor/doctrine/Doctrine/Export/Oracle.php | 606 + .../lib/vendor/doctrine/Doctrine/Export/Pgsql.php | 393 + .../vendor/doctrine/Doctrine/Export/Reporter.php | 51 + .../lib/vendor/doctrine/Doctrine/Export/Schema.php | 154 + .../lib/vendor/doctrine/Doctrine/Export/Sqlite.php | 421 + .../lib/vendor/doctrine/Doctrine/Expression.php | 158 + .../doctrine/Doctrine/Expression/.svn/all-wcprops | 53 + .../doctrine/Doctrine/Expression/.svn/entries | 300 + .../Expression/.svn/text-base/Driver.php.svn-base | 647 + .../.svn/text-base/Exception.php.svn-base | 34 + .../Expression/.svn/text-base/Mock.php.svn-base | 35 + .../Expression/.svn/text-base/Mssql.php.svn-base | 104 + .../Expression/.svn/text-base/Mysql.php.svn-base | 160 + .../Expression/.svn/text-base/Oracle.php.svn-base | 108 + .../Expression/.svn/text-base/Pgsql.php.svn-base | 260 + .../Expression/.svn/text-base/Sqlite.php.svn-base | 180 + .../vendor/doctrine/Doctrine/Expression/Driver.php | 647 + .../doctrine/Doctrine/Expression/Exception.php | 34 + .../vendor/doctrine/Doctrine/Expression/Mock.php | 35 + .../vendor/doctrine/Doctrine/Expression/Mssql.php | 104 + .../vendor/doctrine/Doctrine/Expression/Mysql.php | 160 + .../vendor/doctrine/Doctrine/Expression/Oracle.php | 108 + .../vendor/doctrine/Doctrine/Expression/Pgsql.php | 260 + .../vendor/doctrine/Doctrine/Expression/Sqlite.php | 180 + .../lib/vendor/doctrine/Doctrine/File.php | 55 + .../vendor/doctrine/Doctrine/File/.svn/all-wcprops | 11 + .../lib/vendor/doctrine/Doctrine/File/.svn/entries | 62 + .../File/.svn/text-base/Index.php.svn-base | 57 + .../lib/vendor/doctrine/Doctrine/File/Index.php | 57 + .../lib/vendor/doctrine/Doctrine/Formatter.php | 275 + .../lib/vendor/doctrine/Doctrine/Hook.php | 230 + .../vendor/doctrine/Doctrine/Hook/.svn/all-wcprops | 29 + .../lib/vendor/doctrine/Doctrine/Hook/.svn/entries | 167 + .../Hook/.svn/text-base/Equal.php.svn-base | 52 + .../Hook/.svn/text-base/Integer.php.svn-base | 75 + .../Hook/.svn/text-base/Parser.php.svn-base | 67 + .../Hook/.svn/text-base/WordLike.php.svn-base | 66 + .../lib/vendor/doctrine/Doctrine/Hook/Equal.php | 52 + .../lib/vendor/doctrine/Doctrine/Hook/Integer.php | 75 + .../lib/vendor/doctrine/Doctrine/Hook/Parser.php | 67 + .../doctrine/Doctrine/Hook/Parser/.svn/all-wcprops | 11 + .../doctrine/Doctrine/Hook/Parser/.svn/entries | 62 + .../Parser/.svn/text-base/Complex.php.svn-base | 107 + .../doctrine/Doctrine/Hook/Parser/Complex.php | 107 + .../lib/vendor/doctrine/Doctrine/Hook/WordLike.php | 66 + .../lib/vendor/doctrine/Doctrine/Hydrator.php | 152 + .../doctrine/Doctrine/Hydrator/.svn/all-wcprops | 71 + .../vendor/doctrine/Doctrine/Hydrator/.svn/entries | 402 + .../Hydrator/.svn/text-base/Abstract.php.svn-base | 121 + .../.svn/text-base/ArrayDriver.php.svn-base | 92 + .../text-base/ArrayHierarchyDriver.php.svn-base | 83 + .../.svn/text-base/ArrayShallowDriver.php.svn-base | 44 + .../Hydrator/.svn/text-base/Exception.php.svn-base | 34 + .../Hydrator/.svn/text-base/Graph.php.svn-base | 437 + .../.svn/text-base/NoneDriver.php.svn-base | 40 + .../.svn/text-base/RecordDriver.php.svn-base | 124 + .../text-base/RecordHierarchyDriver.php.svn-base | 39 + .../.svn/text-base/ScalarDriver.php.svn-base | 97 + .../.svn/text-base/SingleScalarDriver.php.svn-base | 47 + .../vendor/doctrine/Doctrine/Hydrator/Abstract.php | 121 + .../doctrine/Doctrine/Hydrator/ArrayDriver.php | 92 + .../Doctrine/Hydrator/ArrayHierarchyDriver.php | 83 + .../Doctrine/Hydrator/ArrayShallowDriver.php | 44 + .../doctrine/Doctrine/Hydrator/Exception.php | 34 + .../vendor/doctrine/Doctrine/Hydrator/Graph.php | 437 + .../doctrine/Doctrine/Hydrator/NoneDriver.php | 40 + .../doctrine/Doctrine/Hydrator/RecordDriver.php | 124 + .../Doctrine/Hydrator/RecordHierarchyDriver.php | 39 + .../doctrine/Doctrine/Hydrator/ScalarDriver.php | 97 + .../Doctrine/Hydrator/SingleScalarDriver.php | 47 + .../lib/vendor/doctrine/Doctrine/I18n.php | 134 + .../vendor/doctrine/Doctrine/I18n/.svn/all-wcprops | 11 + .../lib/vendor/doctrine/Doctrine/I18n/.svn/entries | 62 + .../I18n/.svn/text-base/Exception.php.svn-base | 34 + .../vendor/doctrine/Doctrine/I18n/Exception.php | 34 + .../lib/vendor/doctrine/Doctrine/Import.php | 445 + .../doctrine/Doctrine/Import/.svn/all-wcprops | 53 + .../vendor/doctrine/Doctrine/Import/.svn/entries | 303 + .../Import/.svn/text-base/Builder.php.svn-base | 1296 + .../Import/.svn/text-base/Exception.php.svn-base | 34 + .../Import/.svn/text-base/Mssql.php.svn-base | 248 + .../Import/.svn/text-base/Mysql.php.svn-base | 240 + .../Import/.svn/text-base/Oracle.php.svn-base | 255 + .../Import/.svn/text-base/Pgsql.php.svn-base | 304 + .../Import/.svn/text-base/Schema.php.svn-base | 771 + .../Import/.svn/text-base/Sqlite.php.svn-base | 241 + .../vendor/doctrine/Doctrine/Import/Builder.php | 1296 + .../Doctrine/Import/Builder/.svn/all-wcprops | 11 + .../doctrine/Doctrine/Import/Builder/.svn/entries | 62 + .../Builder/.svn/text-base/Exception.php.svn-base | 34 + .../doctrine/Doctrine/Import/Builder/Exception.php | 34 + .../vendor/doctrine/Doctrine/Import/Exception.php | 34 + .../lib/vendor/doctrine/Doctrine/Import/Mssql.php | 248 + .../lib/vendor/doctrine/Doctrine/Import/Mysql.php | 240 + .../lib/vendor/doctrine/Doctrine/Import/Oracle.php | 255 + .../lib/vendor/doctrine/Doctrine/Import/Pgsql.php | 304 + .../lib/vendor/doctrine/Doctrine/Import/Schema.php | 771 + .../lib/vendor/doctrine/Doctrine/Import/Sqlite.php | 241 + .../lib/vendor/doctrine/Doctrine/Inflector.php | 278 + .../vendor/doctrine/Doctrine/IntegrityMapper.php | 173 + .../lib/vendor/doctrine/Doctrine/Lib.php | 388 + .../lib/vendor/doctrine/Doctrine/Locator.php | 197 + .../doctrine/Doctrine/Locator/.svn/all-wcprops | 17 + .../vendor/doctrine/Doctrine/Locator/.svn/entries | 96 + .../Locator/.svn/text-base/Exception.php.svn-base | 36 + .../Locator/.svn/text-base/Injectable.php.svn-base | 149 + .../vendor/doctrine/Doctrine/Locator/Exception.php | 36 + .../doctrine/Doctrine/Locator/Injectable.php | 149 + .../doctrine/Doctrine/Locking/.svn/all-wcprops | 11 + .../vendor/doctrine/Doctrine/Locking/.svn/entries | 65 + .../Locking/.svn/text-base/Exception.php.svn-base | 37 + .../vendor/doctrine/Doctrine/Locking/Exception.php | 37 + .../Doctrine/Locking/Manager/.svn/all-wcprops | 11 + .../doctrine/Doctrine/Locking/Manager/.svn/entries | 62 + .../.svn/text-base/Pessimistic.php.svn-base | 291 + .../Doctrine/Locking/Manager/Pessimistic.php | 291 + .../lib/vendor/doctrine/Doctrine/Manager.php | 837 + .../doctrine/Doctrine/Manager/.svn/all-wcprops | 11 + .../vendor/doctrine/Doctrine/Manager/.svn/entries | 62 + .../Manager/.svn/text-base/Exception.php.svn-base | 34 + .../vendor/doctrine/Doctrine/Manager/Exception.php | 34 + .../lib/vendor/doctrine/Doctrine/Migration.php | 562 + .../doctrine/Doctrine/Migration/.svn/all-wcprops | 41 + .../doctrine/Doctrine/Migration/.svn/entries | 232 + .../Migration/.svn/text-base/Base.php.svn-base | 505 + .../Migration/.svn/text-base/Builder.php.svn-base | 542 + .../Migration/.svn/text-base/Diff.php.svn-base | 421 + .../.svn/text-base/Exception.php.svn-base | 34 + .../IrreversibleMigrationException.php.svn-base | 34 + .../Migration/.svn/text-base/Process.php.svn-base | 197 + .../vendor/doctrine/Doctrine/Migration/Base.php | 505 + .../vendor/doctrine/Doctrine/Migration/Builder.php | 542 + .../vendor/doctrine/Doctrine/Migration/Diff.php | 421 + .../doctrine/Doctrine/Migration/Exception.php | 34 + .../Migration/IrreversibleMigrationException.php | 34 + .../vendor/doctrine/Doctrine/Migration/Process.php | 197 + .../lib/vendor/doctrine/Doctrine/Node.php | 198 + .../vendor/doctrine/Doctrine/Node/.svn/all-wcprops | 35 + .../lib/vendor/doctrine/Doctrine/Node/.svn/entries | 207 + .../Node/.svn/text-base/AdjacencyList.php.svn-base | 34 + .../Node/.svn/text-base/Exception.php.svn-base | 34 + .../Node/.svn/text-base/Interface.php.svn-base | 268 + .../.svn/text-base/MaterializedPath.php.svn-base | 34 + .../Node/.svn/text-base/NestedSet.php.svn-base | 1219 + .../doctrine/Doctrine/Node/AdjacencyList.php | 34 + .../Doctrine/Node/AdjacencyList/.svn/all-wcprops | 23 + .../Doctrine/Node/AdjacencyList/.svn/entries | 130 + .../.svn/text-base/LevelOrderIterator.php.svn-base | 34 + .../.svn/text-base/PostOrderIterator.php.svn-base | 34 + .../.svn/text-base/PreOrderIterator.php.svn-base | 34 + .../Node/AdjacencyList/LevelOrderIterator.php | 34 + .../Node/AdjacencyList/PostOrderIterator.php | 34 + .../Node/AdjacencyList/PreOrderIterator.php | 34 + .../vendor/doctrine/Doctrine/Node/Exception.php | 34 + .../vendor/doctrine/Doctrine/Node/Interface.php | 268 + .../doctrine/Doctrine/Node/MaterializedPath.php | 34 + .../Node/MaterializedPath/.svn/all-wcprops | 23 + .../Doctrine/Node/MaterializedPath/.svn/entries | 130 + .../.svn/text-base/LevelOrderIterator.php.svn-base | 68 + .../.svn/text-base/PostOrderIterator.php.svn-base | 68 + .../.svn/text-base/PreOrderIterator.php.svn-base | 68 + .../Node/MaterializedPath/LevelOrderIterator.php | 68 + .../Node/MaterializedPath/PostOrderIterator.php | 68 + .../Node/MaterializedPath/PreOrderIterator.php | 68 + .../vendor/doctrine/Doctrine/Node/NestedSet.php | 1219 + .../Doctrine/Node/NestedSet/.svn/all-wcprops | 23 + .../doctrine/Doctrine/Node/NestedSet/.svn/entries | 130 + .../.svn/text-base/LevelOrderIterator.php.svn-base | 34 + .../.svn/text-base/PostOrderIterator.php.svn-base | 34 + .../.svn/text-base/PreOrderIterator.php.svn-base | 183 + .../Doctrine/Node/NestedSet/LevelOrderIterator.php | 34 + .../Doctrine/Node/NestedSet/PostOrderIterator.php | 34 + .../Doctrine/Node/NestedSet/PreOrderIterator.php | 183 + .../lib/vendor/doctrine/Doctrine/Null.php | 47 + .../lib/vendor/doctrine/Doctrine/Overloadable.php | 44 + .../lib/vendor/doctrine/Doctrine/Pager.php | 550 + .../doctrine/Doctrine/Pager/.svn/all-wcprops | 23 + .../vendor/doctrine/Doctrine/Pager/.svn/entries | 133 + .../Pager/.svn/text-base/Exception.php.svn-base | 34 + .../Pager/.svn/text-base/Layout.php.svn-base | 490 + .../Pager/.svn/text-base/Range.php.svn-base | 170 + .../vendor/doctrine/Doctrine/Pager/Exception.php | 34 + .../lib/vendor/doctrine/Doctrine/Pager/Layout.php | 490 + .../lib/vendor/doctrine/Doctrine/Pager/Range.php | 170 + .../doctrine/Doctrine/Pager/Range/.svn/all-wcprops | 17 + .../doctrine/Doctrine/Pager/Range/.svn/entries | 96 + .../Range/.svn/text-base/Jumping.php.svn-base | 113 + .../Range/.svn/text-base/Sliding.php.svn-base | 129 + .../doctrine/Doctrine/Pager/Range/Jumping.php | 113 + .../doctrine/Doctrine/Pager/Range/Sliding.php | 129 + .../lib/vendor/doctrine/Doctrine/Parser.php | 153 + .../doctrine/Doctrine/Parser/.svn/all-wcprops | 35 + .../vendor/doctrine/Doctrine/Parser/.svn/entries | 201 + .../Parser/.svn/text-base/Exception.php.svn-base | 34 + .../Parser/.svn/text-base/Json.php.svn-base | 69 + .../Parser/.svn/text-base/Serialize.php.svn-base | 66 + .../Parser/.svn/text-base/Xml.php.svn-base | 155 + .../Parser/.svn/text-base/Yml.php.svn-base | 91 + .../vendor/doctrine/Doctrine/Parser/Exception.php | 34 + .../lib/vendor/doctrine/Doctrine/Parser/Json.php | 69 + .../vendor/doctrine/Doctrine/Parser/Serialize.php | 66 + .../lib/vendor/doctrine/Doctrine/Parser/Xml.php | 155 + .../lib/vendor/doctrine/Doctrine/Parser/Yml.php | 91 + .../Doctrine/Parser/sfYaml/.svn/all-wcprops | 29 + .../doctrine/Doctrine/Parser/sfYaml/.svn/entries | 164 + .../sfYaml/.svn/text-base/sfYaml.php.svn-base | 135 + .../.svn/text-base/sfYamlDumper.php.svn-base | 60 + .../.svn/text-base/sfYamlInline.php.svn-base | 442 + .../.svn/text-base/sfYamlParser.php.svn-base | 622 + .../doctrine/Doctrine/Parser/sfYaml/sfYaml.php | 135 + .../Doctrine/Parser/sfYaml/sfYamlDumper.php | 60 + .../Doctrine/Parser/sfYaml/sfYamlInline.php | 442 + .../Doctrine/Parser/sfYaml/sfYamlParser.php | 622 + .../lib/vendor/doctrine/Doctrine/Query.php | 2249 + .../doctrine/Doctrine/Query/.svn/all-wcprops | 125 + .../vendor/doctrine/Doctrine/Query/.svn/entries | 717 + .../Query/.svn/text-base/Abstract.php.svn-base | 2171 + .../Query/.svn/text-base/Check.php.svn-base | 170 + .../Query/.svn/text-base/Condition.php.svn-base | 138 + .../Query/.svn/text-base/Exception.php.svn-base | 34 + .../Query/.svn/text-base/Filter.php.svn-base | 63 + .../Query/.svn/text-base/Forupdate.php.svn-base | 39 + .../Query/.svn/text-base/From.php.svn-base | 96 + .../Query/.svn/text-base/Groupby.php.svn-base | 175 + .../Query/.svn/text-base/Having.php.svn-base | 124 + .../.svn/text-base/JoinCondition.php.svn-base | 160 + .../Query/.svn/text-base/Limit.php.svn-base | 39 + .../Query/.svn/text-base/Offset.php.svn-base | 39 + .../Query/.svn/text-base/Orderby.php.svn-base | 185 + .../Query/.svn/text-base/Parser.php.svn-base | 35 + .../Query/.svn/text-base/Part.php.svn-base | 62 + .../Query/.svn/text-base/Registry.php.svn-base | 83 + .../Query/.svn/text-base/Select.php.svn-base | 39 + .../Doctrine/Query/.svn/text-base/Set.php.svn-base | 106 + .../Query/.svn/text-base/Tokenizer.php.svn-base | 555 + .../Query/.svn/text-base/Where.php.svn-base | 186 + .../vendor/doctrine/Doctrine/Query/Abstract.php | 2171 + .../lib/vendor/doctrine/Doctrine/Query/Check.php | 170 + .../vendor/doctrine/Doctrine/Query/Condition.php | 138 + .../vendor/doctrine/Doctrine/Query/Exception.php | 34 + .../lib/vendor/doctrine/Doctrine/Query/Filter.php | 63 + .../Doctrine/Query/Filter/.svn/all-wcprops | 17 + .../doctrine/Doctrine/Query/Filter/.svn/entries | 96 + .../Query/Filter/.svn/text-base/Chain.php.svn-base | 109 + .../Filter/.svn/text-base/Interface.php.svn-base | 57 + .../doctrine/Doctrine/Query/Filter/Chain.php | 109 + .../doctrine/Doctrine/Query/Filter/Interface.php | 57 + .../vendor/doctrine/Doctrine/Query/Forupdate.php | 39 + .../lib/vendor/doctrine/Doctrine/Query/From.php | 96 + .../lib/vendor/doctrine/Doctrine/Query/Groupby.php | 175 + .../lib/vendor/doctrine/Doctrine/Query/Having.php | 124 + .../doctrine/Doctrine/Query/JoinCondition.php | 160 + .../lib/vendor/doctrine/Doctrine/Query/Limit.php | 39 + .../lib/vendor/doctrine/Doctrine/Query/Offset.php | 39 + .../lib/vendor/doctrine/Doctrine/Query/Orderby.php | 185 + .../lib/vendor/doctrine/Doctrine/Query/Parser.php | 35 + .../lib/vendor/doctrine/Doctrine/Query/Part.php | 62 + .../vendor/doctrine/Doctrine/Query/Registry.php | 83 + .../Doctrine/Query/Registry/.svn/all-wcprops | 11 + .../doctrine/Doctrine/Query/Registry/.svn/entries | 62 + .../Registry/.svn/text-base/Exception.php.svn-base | 34 + .../doctrine/Doctrine/Query/Registry/Exception.php | 34 + .../lib/vendor/doctrine/Doctrine/Query/Select.php | 39 + .../lib/vendor/doctrine/Doctrine/Query/Set.php | 106 + .../vendor/doctrine/Doctrine/Query/Tokenizer.php | 555 + .../Doctrine/Query/Tokenizer/.svn/all-wcprops | 11 + .../doctrine/Doctrine/Query/Tokenizer/.svn/entries | 62 + .../.svn/text-base/Exception.php.svn-base | 34 + .../Doctrine/Query/Tokenizer/Exception.php | 34 + .../lib/vendor/doctrine/Doctrine/Query/Where.php | 186 + .../lib/vendor/doctrine/Doctrine/RawSql.php | 454 + .../doctrine/Doctrine/RawSql/.svn/all-wcprops | 11 + .../vendor/doctrine/Doctrine/RawSql/.svn/entries | 62 + .../RawSql/.svn/text-base/Exception.php.svn-base | 34 + .../vendor/doctrine/Doctrine/RawSql/Exception.php | 34 + .../lib/vendor/doctrine/Doctrine/Record.php | 2718 + .../doctrine/Doctrine/Record/.svn/all-wcprops | 47 + .../vendor/doctrine/Doctrine/Record/.svn/entries | 275 + .../Record/.svn/text-base/Abstract.php.svn-base | 399 + .../Record/.svn/text-base/Exception.php.svn-base | 34 + .../Record/.svn/text-base/Filter.php.svn-base | 67 + .../Record/.svn/text-base/Generator.php.svn-base | 470 + .../Record/.svn/text-base/Iterator.php.svn-base | 81 + .../Record/.svn/text-base/Listener.php.svn-base | 139 + .../UnknownPropertyException.php.svn-base | 34 + .../vendor/doctrine/Doctrine/Record/Abstract.php | 399 + .../vendor/doctrine/Doctrine/Record/Exception.php | 34 + .../lib/vendor/doctrine/Doctrine/Record/Filter.php | 67 + .../Doctrine/Record/Filter/.svn/all-wcprops | 17 + .../doctrine/Doctrine/Record/Filter/.svn/entries | 96 + .../Filter/.svn/text-base/Compound.php.svn-base | 97 + .../Filter/.svn/text-base/Standard.php.svn-base | 57 + .../doctrine/Doctrine/Record/Filter/Compound.php | 97 + .../doctrine/Doctrine/Record/Filter/Standard.php | 57 + .../vendor/doctrine/Doctrine/Record/Generator.php | 470 + .../vendor/doctrine/Doctrine/Record/Iterator.php | 81 + .../vendor/doctrine/Doctrine/Record/Listener.php | 139 + .../Doctrine/Record/Listener/.svn/all-wcprops | 17 + .../doctrine/Doctrine/Record/Listener/.svn/entries | 96 + .../Listener/.svn/text-base/Chain.php.svn-base | 422 + .../Listener/.svn/text-base/Interface.php.svn-base | 68 + .../doctrine/Doctrine/Record/Listener/Chain.php | 422 + .../Doctrine/Record/Listener/Interface.php | 68 + .../Doctrine/Record/State/.svn/all-wcprops | 11 + .../doctrine/Doctrine/Record/State/.svn/entries | 62 + .../State/.svn/text-base/Exception.php.svn-base | 34 + .../doctrine/Doctrine/Record/State/Exception.php | 34 + .../Doctrine/Record/UnknownPropertyException.php | 34 + .../lib/vendor/doctrine/Doctrine/Relation.php | 456 + .../doctrine/Doctrine/Relation/.svn/all-wcprops | 41 + .../vendor/doctrine/Doctrine/Relation/.svn/entries | 238 + .../.svn/text-base/Association.php.svn-base | 137 + .../Relation/.svn/text-base/Exception.php.svn-base | 34 + .../.svn/text-base/ForeignKey.php.svn-base | 100 + .../Relation/.svn/text-base/LocalKey.php.svn-base | 88 + .../Relation/.svn/text-base/Nest.php.svn-base | 90 + .../Relation/.svn/text-base/Parser.php.svn-base | 537 + .../doctrine/Doctrine/Relation/Association.php | 137 + .../Doctrine/Relation/Association/.svn/all-wcprops | 11 + .../Doctrine/Relation/Association/.svn/entries | 62 + .../Association/.svn/text-base/Self.php.svn-base | 116 + .../Doctrine/Relation/Association/Self.php | 116 + .../doctrine/Doctrine/Relation/Exception.php | 34 + .../doctrine/Doctrine/Relation/ForeignKey.php | 100 + .../vendor/doctrine/Doctrine/Relation/LocalKey.php | 88 + .../lib/vendor/doctrine/Doctrine/Relation/Nest.php | 90 + .../vendor/doctrine/Doctrine/Relation/Parser.php | 537 + .../Doctrine/Relation/Parser/.svn/all-wcprops | 11 + .../doctrine/Doctrine/Relation/Parser/.svn/entries | 62 + .../Parser/.svn/text-base/Exception.php.svn-base | 34 + .../Doctrine/Relation/Parser/Exception.php | 34 + .../lib/vendor/doctrine/Doctrine/Search.php | 342 + .../doctrine/Doctrine/Search/.svn/all-wcprops | 53 + .../vendor/doctrine/Doctrine/Search/.svn/entries | 306 + .../Search/.svn/text-base/Analyzer.php.svn-base | 46 + .../Search/.svn/text-base/Exception.php.svn-base | 34 + .../Search/.svn/text-base/File.php.svn-base | 84 + .../Search/.svn/text-base/Indexer.php.svn-base | 71 + .../Search/.svn/text-base/Listener.php.svn-base | 59 + .../Search/.svn/text-base/Parser.php.svn-base | 41 + .../Search/.svn/text-base/Query.php.svn-base | 249 + .../Search/.svn/text-base/Record.php.svn-base | 48 + .../vendor/doctrine/Doctrine/Search/Analyzer.php | 46 + .../Doctrine/Search/Analyzer/.svn/all-wcprops | 29 + .../doctrine/Doctrine/Search/Analyzer/.svn/entries | 164 + .../Analyzer/.svn/text-base/Exception.php.svn-base | 34 + .../Analyzer/.svn/text-base/Interface.php.svn-base | 36 + .../Analyzer/.svn/text-base/Standard.php.svn-base | 290 + .../Analyzer/.svn/text-base/Utf8.php.svn-base | 71 + .../Doctrine/Search/Analyzer/Exception.php | 34 + .../Doctrine/Search/Analyzer/Interface.php | 36 + .../doctrine/Doctrine/Search/Analyzer/Standard.php | 290 + .../doctrine/Doctrine/Search/Analyzer/Utf8.php | 71 + .../vendor/doctrine/Doctrine/Search/Exception.php | 34 + .../lib/vendor/doctrine/Doctrine/Search/File.php | 84 + .../vendor/doctrine/Doctrine/Search/Indexer.php | 71 + .../Doctrine/Search/Indexer/.svn/all-wcprops | 17 + .../doctrine/Doctrine/Search/Indexer/.svn/entries | 96 + .../Search/Indexer/.svn/text-base/Dir.php.svn-base | 47 + .../Indexer/.svn/text-base/Exception.php.svn-base | 34 + .../doctrine/Doctrine/Search/Indexer/Dir.php | 47 + .../doctrine/Doctrine/Search/Indexer/Exception.php | 34 + .../vendor/doctrine/Doctrine/Search/Listener.php | 59 + .../lib/vendor/doctrine/Doctrine/Search/Parser.php | 41 + .../lib/vendor/doctrine/Doctrine/Search/Query.php | 249 + .../lib/vendor/doctrine/Doctrine/Search/Record.php | 48 + .../lib/vendor/doctrine/Doctrine/Sequence.php | 75 + .../doctrine/Doctrine/Sequence/.svn/all-wcprops | 47 + .../vendor/doctrine/Doctrine/Sequence/.svn/entries | 266 + .../Sequence/.svn/text-base/Db2.php.svn-base | 132 + .../Sequence/.svn/text-base/Exception.php.svn-base | 34 + .../Sequence/.svn/text-base/Mssql.php.svn-base | 162 + .../Sequence/.svn/text-base/Mysql.php.svn-base | 107 + .../Sequence/.svn/text-base/Oracle.php.svn-base | 98 + .../Sequence/.svn/text-base/Pgsql.php.svn-base | 97 + .../Sequence/.svn/text-base/Sqlite.php.svn-base | 107 + .../lib/vendor/doctrine/Doctrine/Sequence/Db2.php | 132 + .../doctrine/Doctrine/Sequence/Exception.php | 34 + .../vendor/doctrine/Doctrine/Sequence/Mssql.php | 162 + .../vendor/doctrine/Doctrine/Sequence/Mysql.php | 107 + .../vendor/doctrine/Doctrine/Sequence/Oracle.php | 98 + .../vendor/doctrine/Doctrine/Sequence/Pgsql.php | 97 + .../vendor/doctrine/Doctrine/Sequence/Sqlite.php | 107 + .../lib/vendor/doctrine/Doctrine/Table.php | 2858 + .../doctrine/Doctrine/Table/.svn/all-wcprops | 17 + .../vendor/doctrine/Doctrine/Table/.svn/entries | 99 + .../Table/.svn/text-base/Exception.php.svn-base | 41 + .../Table/.svn/text-base/Repository.php.svn-base | 163 + .../vendor/doctrine/Doctrine/Table/Exception.php | 41 + .../vendor/doctrine/Doctrine/Table/Repository.php | 163 + .../Doctrine/Table/Repository/.svn/all-wcprops | 11 + .../Doctrine/Table/Repository/.svn/entries | 62 + .../.svn/text-base/Exception.php.svn-base | 34 + .../Doctrine/Table/Repository/Exception.php | 34 + .../lib/vendor/doctrine/Doctrine/Task.php | 299 + .../vendor/doctrine/Doctrine/Task/.svn/all-wcprops | 137 + .../lib/vendor/doctrine/Doctrine/Task/.svn/entries | 776 + .../Task/.svn/text-base/BuildAll.php.svn-base | 65 + .../Task/.svn/text-base/BuildAllLoad.php.svn-base | 58 + .../.svn/text-base/BuildAllReload.php.svn-base | 58 + .../Task/.svn/text-base/Compile.php.svn-base | 46 + .../Task/.svn/text-base/CreateDb.php.svn-base | 50 + .../Task/.svn/text-base/CreateTables.php.svn-base | 45 + .../Doctrine/Task/.svn/text-base/Dql.php.svn-base | 73 + .../Task/.svn/text-base/DropDb.php.svn-base | 61 + .../Task/.svn/text-base/DumpData.php.svn-base | 62 + .../Task/.svn/text-base/Exception.php.svn-base | 34 + .../.svn/text-base/GenerateMigration.php.svn-base | 46 + .../text-base/GenerateMigrationsDb.php.svn-base | 65 + .../text-base/GenerateMigrationsDiff.php.svn-base | 58 + .../GenerateMigrationsModels.php.svn-base | 46 + .../.svn/text-base/GenerateModelsDb.php.svn-base | 47 + .../.svn/text-base/GenerateModelsYaml.php.svn-base | 46 + .../Task/.svn/text-base/GenerateSql.php.svn-base | 56 + .../.svn/text-base/GenerateYamlDb.php.svn-base | 45 + .../.svn/text-base/GenerateYamlModels.php.svn-base | 45 + .../Task/.svn/text-base/LoadData.php.svn-base | 47 + .../Task/.svn/text-base/Migrate.php.svn-base | 45 + .../Task/.svn/text-base/RebuildDb.php.svn-base | 62 + .../lib/vendor/doctrine/Doctrine/Task/BuildAll.php | 65 + .../vendor/doctrine/Doctrine/Task/BuildAllLoad.php | 58 + .../doctrine/Doctrine/Task/BuildAllReload.php | 58 + .../lib/vendor/doctrine/Doctrine/Task/Compile.php | 46 + .../lib/vendor/doctrine/Doctrine/Task/CreateDb.php | 50 + .../vendor/doctrine/Doctrine/Task/CreateTables.php | 45 + .../lib/vendor/doctrine/Doctrine/Task/Dql.php | 73 + .../lib/vendor/doctrine/Doctrine/Task/DropDb.php | 61 + .../lib/vendor/doctrine/Doctrine/Task/DumpData.php | 62 + .../vendor/doctrine/Doctrine/Task/Exception.php | 34 + .../doctrine/Doctrine/Task/GenerateMigration.php | 46 + .../Doctrine/Task/GenerateMigrationsDb.php | 65 + .../Doctrine/Task/GenerateMigrationsDiff.php | 58 + .../Doctrine/Task/GenerateMigrationsModels.php | 46 + .../doctrine/Doctrine/Task/GenerateModelsDb.php | 47 + .../doctrine/Doctrine/Task/GenerateModelsYaml.php | 46 + .../vendor/doctrine/Doctrine/Task/GenerateSql.php | 56 + .../doctrine/Doctrine/Task/GenerateYamlDb.php | 45 + .../doctrine/Doctrine/Task/GenerateYamlModels.php | 45 + .../lib/vendor/doctrine/Doctrine/Task/LoadData.php | 47 + .../lib/vendor/doctrine/Doctrine/Task/Migrate.php | 45 + .../vendor/doctrine/Doctrine/Task/RebuildDb.php | 62 + .../lib/vendor/doctrine/Doctrine/Template.php | 205 + .../doctrine/Doctrine/Template/.svn/all-wcprops | 53 + .../vendor/doctrine/Doctrine/Template/.svn/entries | 303 + .../.svn/text-base/Geographical.php.svn-base | 122 + .../Template/.svn/text-base/I18n.php.svn-base | 66 + .../Template/.svn/text-base/NestedSet.php.svn-base | 55 + .../.svn/text-base/Searchable.php.svn-base | 95 + .../Template/.svn/text-base/Sluggable.php.svn-base | 83 + .../.svn/text-base/SoftDelete.php.svn-base | 88 + .../.svn/text-base/Timestampable.php.svn-base | 84 + .../.svn/text-base/Versionable.php.svn-base | 123 + .../doctrine/Doctrine/Template/Geographical.php | 122 + .../lib/vendor/doctrine/Doctrine/Template/I18n.php | 66 + .../Doctrine/Template/Listener/.svn/all-wcprops | 23 + .../Doctrine/Template/Listener/.svn/entries | 130 + .../Listener/.svn/text-base/Sluggable.php.svn-base | 249 + .../.svn/text-base/SoftDelete.php.svn-base | 155 + .../.svn/text-base/Timestampable.php.svn-base | 138 + .../Doctrine/Template/Listener/Sluggable.php | 249 + .../Doctrine/Template/Listener/SoftDelete.php | 155 + .../Doctrine/Template/Listener/Timestampable.php | 138 + .../doctrine/Doctrine/Template/NestedSet.php | 55 + .../doctrine/Doctrine/Template/Searchable.php | 95 + .../doctrine/Doctrine/Template/Sluggable.php | 83 + .../doctrine/Doctrine/Template/SoftDelete.php | 88 + .../doctrine/Doctrine/Template/Timestampable.php | 84 + .../doctrine/Doctrine/Template/Versionable.php | 123 + .../lib/vendor/doctrine/Doctrine/Transaction.php | 514 + .../doctrine/Doctrine/Transaction/.svn/all-wcprops | 47 + .../doctrine/Doctrine/Transaction/.svn/entries | 266 + .../.svn/text-base/Exception.php.svn-base | 34 + .../Transaction/.svn/text-base/Mock.php.svn-base | 36 + .../Transaction/.svn/text-base/Mssql.php.svn-base | 92 + .../Transaction/.svn/text-base/Mysql.php.svn-base | 116 + .../Transaction/.svn/text-base/Oracle.php.svn-base | 106 + .../Transaction/.svn/text-base/Pgsql.php.svn-base | 105 + .../Transaction/.svn/text-base/Sqlite.php.svn-base | 66 + .../doctrine/Doctrine/Transaction/Exception.php | 34 + .../vendor/doctrine/Doctrine/Transaction/Mock.php | 36 + .../vendor/doctrine/Doctrine/Transaction/Mssql.php | 92 + .../vendor/doctrine/Doctrine/Transaction/Mysql.php | 116 + .../doctrine/Doctrine/Transaction/Oracle.php | 106 + .../vendor/doctrine/Doctrine/Transaction/Pgsql.php | 105 + .../doctrine/Doctrine/Transaction/Sqlite.php | 66 + .../lib/vendor/doctrine/Doctrine/Tree.php | 134 + .../vendor/doctrine/Doctrine/Tree/.svn/all-wcprops | 35 + .../lib/vendor/doctrine/Doctrine/Tree/.svn/entries | 198 + .../Tree/.svn/text-base/AdjacencyList.php.svn-base | 34 + .../Tree/.svn/text-base/Exception.php.svn-base | 34 + .../Tree/.svn/text-base/Interface.php.svn-base | 67 + .../.svn/text-base/MaterializedPath.php.svn-base | 34 + .../Tree/.svn/text-base/NestedSet.php.svn-base | 317 + .../doctrine/Doctrine/Tree/AdjacencyList.php | 34 + .../vendor/doctrine/Doctrine/Tree/Exception.php | 34 + .../vendor/doctrine/Doctrine/Tree/Interface.php | 67 + .../doctrine/Doctrine/Tree/MaterializedPath.php | 34 + .../vendor/doctrine/Doctrine/Tree/NestedSet.php | 317 + .../lib/vendor/doctrine/Doctrine/Util.php | 34 + .../lib/vendor/doctrine/Doctrine/Validator.php | 201 + .../doctrine/Doctrine/Validator/.svn/all-wcprops | 143 + .../doctrine/Doctrine/Validator/.svn/entries | 810 + .../Validator/.svn/prop-base/Readonly.php.svn-base | 5 + .../Validator/.svn/text-base/Country.php.svn-base | 305 + .../.svn/text-base/Creditcard.php.svn-base | 85 + .../Validator/.svn/text-base/Date.php.svn-base | 55 + .../Validator/.svn/text-base/Driver.php.svn-base | 128 + .../Validator/.svn/text-base/Email.php.svn-base | 119 + .../.svn/text-base/ErrorStack.php.svn-base | 190 + .../.svn/text-base/Exception.php.svn-base | 89 + .../Validator/.svn/text-base/Future.php.svn-base | 79 + .../.svn/text-base/Htmlcolor.php.svn-base | 51 + .../Validator/.svn/text-base/Ip.php.svn-base | 45 + .../.svn/text-base/Minlength.php.svn-base | 52 + .../Validator/.svn/text-base/Nospace.php.svn-base | 48 + .../Validator/.svn/text-base/Notblank.php.svn-base | 46 + .../Validator/.svn/text-base/Notnull.php.svn-base | 45 + .../Validator/.svn/text-base/Past.php.svn-base | 79 + .../Validator/.svn/text-base/Range.php.svn-base | 54 + .../Validator/.svn/text-base/Readonly.php.svn-base | 43 + .../Validator/.svn/text-base/Regexp.php.svn-base | 65 + .../Validator/.svn/text-base/Time.php.svn-base | 66 + .../.svn/text-base/Timestamp.php.svn-base | 67 + .../Validator/.svn/text-base/Unique.php.svn-base | 95 + .../Validator/.svn/text-base/Unsigned.php.svn-base | 60 + .../Validator/.svn/text-base/Usstate.php.svn-base | 108 + .../vendor/doctrine/Doctrine/Validator/Country.php | 305 + .../doctrine/Doctrine/Validator/Creditcard.php | 85 + .../vendor/doctrine/Doctrine/Validator/Date.php | 55 + .../vendor/doctrine/Doctrine/Validator/Driver.php | 128 + .../vendor/doctrine/Doctrine/Validator/Email.php | 119 + .../doctrine/Doctrine/Validator/ErrorStack.php | 190 + .../doctrine/Doctrine/Validator/Exception.php | 89 + .../vendor/doctrine/Doctrine/Validator/Future.php | 79 + .../doctrine/Doctrine/Validator/Htmlcolor.php | 51 + .../lib/vendor/doctrine/Doctrine/Validator/Ip.php | 45 + .../doctrine/Doctrine/Validator/Minlength.php | 52 + .../vendor/doctrine/Doctrine/Validator/Nospace.php | 48 + .../doctrine/Doctrine/Validator/Notblank.php | 46 + .../vendor/doctrine/Doctrine/Validator/Notnull.php | 45 + .../vendor/doctrine/Doctrine/Validator/Past.php | 79 + .../vendor/doctrine/Doctrine/Validator/Range.php | 54 + .../doctrine/Doctrine/Validator/Readonly.php | 43 + .../vendor/doctrine/Doctrine/Validator/Regexp.php | 65 + .../vendor/doctrine/Doctrine/Validator/Time.php | 66 + .../doctrine/Doctrine/Validator/Timestamp.php | 67 + .../vendor/doctrine/Doctrine/Validator/Unique.php | 95 + .../doctrine/Doctrine/Validator/Unsigned.php | 60 + .../vendor/doctrine/Doctrine/Validator/Usstate.php | 108 + .../lib/vendor/doctrine/Doctrine/View.php | 192 + .../vendor/doctrine/Doctrine/View/.svn/all-wcprops | 11 + .../lib/vendor/doctrine/Doctrine/View/.svn/entries | 62 + .../View/.svn/text-base/Exception.php.svn-base | 34 + .../vendor/doctrine/Doctrine/View/Exception.php | 34 + .../sfDoctrinePlugin/lib/widget/.svn/all-wcprops | 11 + .../sfDoctrinePlugin/lib/widget/.svn/entries | 62 + .../sfWidgetFormDoctrineChoice.class.php.svn-base | 9 + .../sfWidgetFormDoctrineChoice.class.php.svn-base | 122 + .../widget/sfWidgetFormDoctrineChoice.class.php | 122 + .../plugins/sfDoctrinePlugin/test/.svn/all-wcprops | 5 + .../lib/plugins/sfDoctrinePlugin/test/.svn/entries | 40 + .../sfDoctrinePlugin/test/bin/.svn/all-wcprops | 17 + .../plugins/sfDoctrinePlugin/test/bin/.svn/entries | 96 + .../test/bin/.svn/prop-base/coverage.php.svn-base | 9 + .../test/bin/.svn/prop-base/prove.php.svn-base | 9 + .../test/bin/.svn/text-base/coverage.php.svn-base | 34 + .../test/bin/.svn/text-base/prove.php.svn-base | 26 + .../plugins/sfDoctrinePlugin/test/bin/coverage.php | 34 + .../plugins/sfDoctrinePlugin/test/bin/prove.php | 26 + .../test/bootstrap/.svn/all-wcprops | 17 + .../sfDoctrinePlugin/test/bootstrap/.svn/entries | 96 + .../.svn/prop-base/functional.php.svn-base | 9 + .../bootstrap/.svn/prop-base/unit.php.svn-base | 9 + .../.svn/text-base/functional.php.svn-base | 56 + .../bootstrap/.svn/text-base/unit.php.svn-base | 18 + .../sfDoctrinePlugin/test/bootstrap/functional.php | 56 + .../sfDoctrinePlugin/test/bootstrap/unit.php | 18 + .../test/functional/.svn/all-wcprops | 83 + .../sfDoctrinePlugin/test/functional/.svn/entries | 476 + .../.svn/prop-base/ActionRedirectTest.php.svn-base | 9 + .../prop-base/AdminGenBrowser.class.php.svn-base | 9 + .../.svn/prop-base/AdminGenTest.php.svn-base | 9 + .../prop-base/EnvironmentSetupTest.php.svn-base | 9 + .../.svn/prop-base/FormGeneratorTest.php.svn-base | 9 + .../.svn/prop-base/FormTest.php.svn-base | 9 + .../.svn/prop-base/I18nTest.php.svn-base | 9 + .../.svn/prop-base/PagerTest.php.svn-base | 9 + .../.svn/prop-base/RouteTest.php.svn-base | 9 + .../.svn/prop-base/SchemaMergeTest.php.svn-base | 9 + .../.svn/prop-base/UniqueTest.php.svn-base | 9 + .../.svn/prop-base/UploadTest.php.svn-base | 9 + .../prop-base/sfDoctrineRecordTest.php.svn-base | 9 + .../.svn/text-base/ActionRedirectTest.php.svn-base | 26 + .../text-base/AdminGenBrowser.class.php.svn-base | 296 + .../.svn/text-base/AdminGenTest.php.svn-base | 17 + .../text-base/EnvironmentSetupTest.php.svn-base | 56 + .../.svn/text-base/FormGeneratorTest.php.svn-base | 96 + .../.svn/text-base/FormTest.php.svn-base | 119 + .../.svn/text-base/I18nTest.php.svn-base | 244 + .../.svn/text-base/PagerTest.php.svn-base | 80 + .../.svn/text-base/RouteTest.php.svn-base | 69 + .../.svn/text-base/SchemaMergeTest.php.svn-base | 37 + .../.svn/text-base/UniqueTest.php.svn-base | 30 + .../.svn/text-base/UploadTest.php.svn-base | 50 + .../text-base/sfDoctrineRecordTest.php.svn-base | 82 + .../test/functional/ActionRedirectTest.php | 26 + .../test/functional/AdminGenBrowser.class.php | 296 + .../test/functional/AdminGenTest.php | 17 + .../test/functional/EnvironmentSetupTest.php | 56 + .../test/functional/FormGeneratorTest.php | 96 + .../sfDoctrinePlugin/test/functional/FormTest.php | 119 + .../sfDoctrinePlugin/test/functional/I18nTest.php | 244 + .../sfDoctrinePlugin/test/functional/PagerTest.php | 80 + .../sfDoctrinePlugin/test/functional/RouteTest.php | 69 + .../test/functional/SchemaMergeTest.php | 37 + .../test/functional/Ticket/.svn/all-wcprops | 17 + .../test/functional/Ticket/.svn/entries | 96 + .../Ticket/.svn/prop-base/5269Test.php.svn-base | 9 + .../Ticket/.svn/prop-base/7774Test.php.svn-base | 9 + .../Ticket/.svn/text-base/5269Test.php.svn-base | 45 + .../Ticket/.svn/text-base/7774Test.php.svn-base | 20 + .../test/functional/Ticket/5269Test.php | 45 + .../test/functional/Ticket/7774Test.php | 20 + .../test/functional/UniqueTest.php | 30 + .../test/functional/UploadTest.php | 50 + .../test/functional/fixtures/.svn/all-wcprops | 11 + .../test/functional/fixtures/.svn/entries | 86 + .../fixtures/.svn/prop-base/symfony.svn-base | 5 + .../fixtures/.svn/text-base/symfony.svn-base | 15 + .../test/functional/fixtures/apps/.svn/all-wcprops | 5 + .../test/functional/fixtures/apps/.svn/entries | 34 + .../fixtures/apps/backend/.svn/all-wcprops | 5 + .../functional/fixtures/apps/backend/.svn/entries | 43 + .../fixtures/apps/backend/config/.svn/all-wcprops | 59 + .../fixtures/apps/backend/config/.svn/entries | 334 + .../backendConfiguration.class.php.svn-base | 9 + .../backend/config/.svn/text-base/app.yml.svn-base | 2 + .../backendConfiguration.class.php.svn-base | 8 + .../config/.svn/text-base/cache.yml.svn-base | 4 + .../config/.svn/text-base/factories.yml.svn-base | 24 + .../config/.svn/text-base/filters.yml.svn-base | 8 + .../config/.svn/text-base/routing.yml.svn-base | 109 + .../config/.svn/text-base/security.yml.svn-base | 2 + .../config/.svn/text-base/settings.yml.svn-base | 29 + .../config/.svn/text-base/view.yml.svn-base | 17 + .../fixtures/apps/backend/config/app.yml | 2 + .../backend/config/backendConfiguration.class.php | 8 + .../fixtures/apps/backend/config/cache.yml | 4 + .../fixtures/apps/backend/config/factories.yml | 24 + .../fixtures/apps/backend/config/filters.yml | 8 + .../fixtures/apps/backend/config/routing.yml | 109 + .../fixtures/apps/backend/config/security.yml | 2 + .../fixtures/apps/backend/config/settings.yml | 29 + .../fixtures/apps/backend/config/view.yml | 17 + .../fixtures/apps/backend/i18n/.svn/all-wcprops | 5 + .../fixtures/apps/backend/i18n/.svn/entries | 28 + .../fixtures/apps/backend/lib/.svn/all-wcprops | 11 + .../fixtures/apps/backend/lib/.svn/entries | 62 + .../lib/.svn/prop-base/myUser.class.php.svn-base | 9 + .../lib/.svn/text-base/myUser.class.php.svn-base | 5 + .../fixtures/apps/backend/lib/myUser.class.php | 5 + .../fixtures/apps/backend/modules/.svn/all-wcprops | 5 + .../fixtures/apps/backend/modules/.svn/entries | 34 + .../modules/doctrine_route_test/.svn/all-wcprops | 5 + .../modules/doctrine_route_test/.svn/entries | 34 + .../doctrine_route_test/actions/.svn/all-wcprops | 11 + .../doctrine_route_test/actions/.svn/entries | 62 + .../.svn/prop-base/actions.class.php.svn-base | 9 + .../.svn/text-base/actions.class.php.svn-base | 25 + .../doctrine_route_test/actions/actions.class.php | 25 + .../doctrine_route_test/templates/.svn/all-wcprops | 11 + .../doctrine_route_test/templates/.svn/entries | 62 + .../.svn/prop-base/indexSuccess.php.svn-base | 9 + .../.svn/text-base/indexSuccess.php.svn-base | 1 + .../doctrine_route_test/templates/indexSuccess.php | 1 + .../backend/modules/my_articles/.svn/all-wcprops | 5 + .../apps/backend/modules/my_articles/.svn/entries | 37 + .../modules/my_articles/actions/.svn/all-wcprops | 11 + .../modules/my_articles/actions/.svn/entries | 62 + .../.svn/prop-base/actions.class.php.svn-base | 9 + .../.svn/text-base/actions.class.php.svn-base | 16 + .../modules/my_articles/actions/actions.class.php | 16 + .../modules/my_articles/config/.svn/all-wcprops | 11 + .../modules/my_articles/config/.svn/entries | 62 + .../config/.svn/text-base/generator.yml.svn-base | 21 + .../modules/my_articles/config/generator.yml | 21 + .../modules/my_articles/lib/.svn/all-wcprops | 17 + .../backend/modules/my_articles/lib/.svn/entries | 96 + ...ticlesGeneratorConfiguration.class.php.svn-base | 9 + .../my_articlesGeneratorHelper.class.php.svn-base | 9 + ...ticlesGeneratorConfiguration.class.php.svn-base | 13 + .../my_articlesGeneratorHelper.class.php.svn-base | 13 + .../my_articlesGeneratorConfiguration.class.php | 13 + .../lib/my_articlesGeneratorHelper.class.php | 13 + .../apps/backend/templates/.svn/all-wcprops | 11 + .../fixtures/apps/backend/templates/.svn/entries | 62 + .../templates/.svn/prop-base/layout.php.svn-base | 9 + .../templates/.svn/text-base/layout.php.svn-base | 15 + .../fixtures/apps/backend/templates/layout.php | 15 + .../fixtures/apps/frontend/.svn/all-wcprops | 5 + .../functional/fixtures/apps/frontend/.svn/entries | 43 + .../fixtures/apps/frontend/config/.svn/all-wcprops | 59 + .../fixtures/apps/frontend/config/.svn/entries | 334 + .../frontendConfiguration.class.php.svn-base | 9 + .../config/.svn/text-base/app.yml.svn-base | 2 + .../config/.svn/text-base/cache.yml.svn-base | 4 + .../config/.svn/text-base/factories.yml.svn-base | 17 + .../config/.svn/text-base/filters.yml.svn-base | 8 + .../frontendConfiguration.class.php.svn-base | 8 + .../config/.svn/text-base/routing.yml.svn-base | 21 + .../config/.svn/text-base/security.yml.svn-base | 2 + .../config/.svn/text-base/settings.yml.svn-base | 29 + .../config/.svn/text-base/view.yml.svn-base | 17 + .../fixtures/apps/frontend/config/app.yml | 2 + .../fixtures/apps/frontend/config/cache.yml | 4 + .../fixtures/apps/frontend/config/factories.yml | 17 + .../fixtures/apps/frontend/config/filters.yml | 8 + .../config/frontendConfiguration.class.php | 8 + .../fixtures/apps/frontend/config/routing.yml | 21 + .../fixtures/apps/frontend/config/security.yml | 2 + .../fixtures/apps/frontend/config/settings.yml | 29 + .../fixtures/apps/frontend/config/view.yml | 17 + .../fixtures/apps/frontend/i18n/.svn/all-wcprops | 5 + .../fixtures/apps/frontend/i18n/.svn/entries | 28 + .../fixtures/apps/frontend/lib/.svn/all-wcprops | 11 + .../fixtures/apps/frontend/lib/.svn/entries | 62 + .../lib/.svn/prop-base/myUser.class.php.svn-base | 9 + .../lib/.svn/text-base/myUser.class.php.svn-base | 5 + .../fixtures/apps/frontend/lib/myUser.class.php | 5 + .../apps/frontend/modules/.svn/all-wcprops | 5 + .../fixtures/apps/frontend/modules/.svn/entries | 34 + .../frontend/modules/articles/.svn/all-wcprops | 5 + .../apps/frontend/modules/articles/.svn/entries | 34 + .../modules/articles/actions/.svn/all-wcprops | 11 + .../frontend/modules/articles/actions/.svn/entries | 62 + .../.svn/prop-base/actions.class.php.svn-base | 9 + .../.svn/text-base/actions.class.php.svn-base | 89 + .../modules/articles/actions/actions.class.php | 89 + .../modules/articles/templates/.svn/all-wcprops | 23 + .../modules/articles/templates/.svn/entries | 130 + .../.svn/prop-base/editSuccess.php.svn-base | 9 + .../.svn/prop-base/indexSuccess.php.svn-base | 9 + .../.svn/prop-base/showSuccess.php.svn-base | 9 + .../.svn/text-base/editSuccess.php.svn-base | 58 + .../.svn/text-base/indexSuccess.php.svn-base | 24 + .../.svn/text-base/showSuccess.php.svn-base | 1 + .../modules/articles/templates/editSuccess.php | 58 + .../modules/articles/templates/indexSuccess.php | 24 + .../modules/articles/templates/showSuccess.php | 1 + .../frontend/modules/attachment/.svn/all-wcprops | 5 + .../apps/frontend/modules/attachment/.svn/entries | 34 + .../modules/attachment/actions/.svn/all-wcprops | 11 + .../modules/attachment/actions/.svn/entries | 62 + .../.svn/prop-base/actions.class.php.svn-base | 9 + .../.svn/text-base/actions.class.php.svn-base | 58 + .../modules/attachment/actions/actions.class.php | 58 + .../modules/attachment/templates/.svn/all-wcprops | 29 + .../modules/attachment/templates/.svn/entries | 164 + .../.svn/prop-base/editableInput.php.svn-base | 9 + .../.svn/prop-base/editableSuccess.php.svn-base | 9 + .../.svn/prop-base/indexInput.php.svn-base | 9 + .../.svn/prop-base/indexSuccess.php.svn-base | 9 + .../.svn/text-base/editableInput.php.svn-base | 6 + .../.svn/text-base/editableSuccess.php.svn-base | 1 + .../.svn/text-base/indexInput.php.svn-base | 6 + .../.svn/text-base/indexSuccess.php.svn-base | 1 + .../modules/attachment/templates/editableInput.php | 6 + .../attachment/templates/editableSuccess.php | 1 + .../modules/attachment/templates/indexInput.php | 6 + .../modules/attachment/templates/indexSuccess.php | 1 + .../apps/frontend/templates/.svn/all-wcprops | 11 + .../fixtures/apps/frontend/templates/.svn/entries | 62 + .../templates/.svn/prop-base/layout.php.svn-base | 9 + .../templates/.svn/text-base/layout.php.svn-base | 21 + .../fixtures/apps/frontend/templates/layout.php | 21 + .../functional/fixtures/cache/.svn/all-wcprops | 5 + .../functional/fixtures/cache/.svn/dir-prop-base | 6 + .../test/functional/fixtures/cache/.svn/entries | 28 + .../functional/fixtures/config/.svn/all-wcprops | 35 + .../test/functional/fixtures/config/.svn/entries | 201 + .../ProjectConfiguration.class.php.svn-base | 9 + .../ProjectConfiguration.class.php.svn-base | 56 + .../config/.svn/text-base/databases.yml.svn-base | 15 + .../config/.svn/text-base/properties.ini.svn-base | 2 + .../.svn/text-base/rsync_exclude.txt.svn-base | 5 + .../config/.svn/text-base/schema.yml.svn-base | 0 .../fixtures/config/ProjectConfiguration.class.php | 56 + .../test/functional/fixtures/config/databases.yml | 15 + .../fixtures/config/doctrine/.svn/all-wcprops | 17 + .../fixtures/config/doctrine/.svn/entries | 96 + .../.svn/prop-base/linked_schema.yml.svn-base | 5 + .../.svn/text-base/linked_schema.yml.svn-base | 1 + .../doctrine/.svn/text-base/schema.yml.svn-base | 233 + .../fixtures/config/doctrine/linked_schema.yml | 1 + .../functional/fixtures/config/doctrine/schema.yml | 233 + .../test/functional/fixtures/config/properties.ini | 2 + .../functional/fixtures/config/rsync_exclude.txt | 5 + .../test/functional/fixtures/config/schema.yml | 0 .../test/functional/fixtures/data/.svn/all-wcprops | 11 + .../functional/fixtures/data/.svn/dir-prop-base | 6 + .../test/functional/fixtures/data/.svn/entries | 68 + .../data/.svn/prop-base/linked_schema.yml.svn-base | 13 + .../data/.svn/text-base/linked_schema.yml.svn-base | 7 + .../fixtures/data/fixtures/.svn/all-wcprops | 17 + .../functional/fixtures/data/fixtures/.svn/entries | 96 + .../fixtures/.svn/prop-base/pager.yml.svn-base | 9 + .../fixtures/.svn/text-base/fixtures.yml.svn-base | 59 + .../fixtures/.svn/text-base/pager.yml.svn-base | 6 + .../functional/fixtures/data/fixtures/fixtures.yml | 59 + .../functional/fixtures/data/fixtures/pager.yml | 6 + .../functional/fixtures/data/linked_schema.yml | 7 + .../functional/fixtures/data/sql/.svn/all-wcprops | 11 + .../test/functional/fixtures/data/sql/.svn/entries | 62 + .../data/sql/.svn/text-base/schema.sql.svn-base | 27 + .../test/functional/fixtures/data/sql/schema.sql | 27 + .../test/functional/fixtures/lib/.svn/all-wcprops | 11 + .../test/functional/fixtures/lib/.svn/entries | 74 + .../prop-base/myDoctrineRecord.class.php.svn-base | 9 + .../text-base/myDoctrineRecord.class.php.svn-base | 5 + .../fixtures/lib/filter/.svn/all-wcprops | 5 + .../functional/fixtures/lib/filter/.svn/entries | 31 + .../fixtures/lib/filter/doctrine/.svn/all-wcprops | 125 + .../fixtures/lib/filter/doctrine/.svn/entries | 714 + .../prop-base/ArticleFormFilter.class.php.svn-base | 9 + ...ArticleTranslationFormFilter.class.php.svn-base | 9 + .../AttachmentFormFilter.class.php.svn-base | 9 + .../prop-base/AuthorFormFilter.class.php.svn-base | 9 + ...nheritanceConcreteFormFilter.class.php.svn-base | 9 + .../AuthorInheritanceFormFilter.class.php.svn-base | 9 + .../BaseFormFilterDoctrine.class.php.svn-base | 9 + .../BlogArticleFormFilter.class.php.svn-base | 9 + ...ArticleTranslationFormFilter.class.php.svn-base | 9 + .../BlogAuthorFormFilter.class.php.svn-base | 9 + .../CamelCaseFormFilter.class.php.svn-base | 9 + .../DefaultValueTestFormFilter.class.php.svn-base | 9 + ...FormGeneratorTest2FormFilter.class.php.svn-base | 9 + .../prop-base/GroupFormFilter.class.php.svn-base | 9 + .../PermissionFormFilter.class.php.svn-base | 9 + .../prop-base/ProfileFormFilter.class.php.svn-base | 9 + .../ResourceTypeFormFilter.class.php.svn-base | 9 + .../SubscriptionFormFilter.class.php.svn-base | 9 + .../UniqueTestFormFilter.class.php.svn-base | 9 + .../prop-base/UserFormFilter.class.php.svn-base | 9 + .../text-base/ArticleFormFilter.class.php.svn-base | 15 + ...ArticleTranslationFormFilter.class.php.svn-base | 15 + .../AttachmentFormFilter.class.php.svn-base | 16 + .../text-base/AuthorFormFilter.class.php.svn-base | 15 + ...nheritanceConcreteFormFilter.class.php.svn-base | 16 + .../AuthorInheritanceFormFilter.class.php.svn-base | 15 + .../BaseFormFilterDoctrine.class.php.svn-base | 15 + .../BlogArticleFormFilter.class.php.svn-base | 20 + ...ArticleTranslationFormFilter.class.php.svn-base | 16 + .../BlogAuthorFormFilter.class.php.svn-base | 20 + .../CamelCaseFormFilter.class.php.svn-base | 15 + .../DefaultValueTestFormFilter.class.php.svn-base | 16 + ...FormGeneratorTest2FormFilter.class.php.svn-base | 15 + .../text-base/GroupFormFilter.class.php.svn-base | 15 + .../PermissionFormFilter.class.php.svn-base | 15 + .../text-base/ProfileFormFilter.class.php.svn-base | 15 + .../ResourceTypeFormFilter.class.php.svn-base | 16 + .../SubscriptionFormFilter.class.php.svn-base | 15 + .../UniqueTestFormFilter.class.php.svn-base | 15 + .../text-base/UserFormFilter.class.php.svn-base | 15 + .../filter/doctrine/ArticleFormFilter.class.php | 15 + .../ArticleTranslationFormFilter.class.php | 15 + .../filter/doctrine/AttachmentFormFilter.class.php | 16 + .../lib/filter/doctrine/AuthorFormFilter.class.php | 15 + .../AuthorInheritanceConcreteFormFilter.class.php | 16 + .../doctrine/AuthorInheritanceFormFilter.class.php | 15 + .../doctrine/BaseFormFilterDoctrine.class.php | 15 + .../doctrine/BlogArticleFormFilter.class.php | 20 + .../BlogArticleTranslationFormFilter.class.php | 16 + .../filter/doctrine/BlogAuthorFormFilter.class.php | 20 + .../filter/doctrine/CamelCaseFormFilter.class.php | 15 + .../doctrine/DefaultValueTestFormFilter.class.php | 16 + .../FormGeneratorTest2FormFilter.class.php | 15 + .../lib/filter/doctrine/GroupFormFilter.class.php | 15 + .../filter/doctrine/PermissionFormFilter.class.php | 15 + .../filter/doctrine/ProfileFormFilter.class.php | 15 + .../doctrine/ResourceTypeFormFilter.class.php | 16 + .../doctrine/SettingsPlugin/.svn/all-wcprops | 11 + .../filter/doctrine/SettingsPlugin/.svn/entries | 65 + .../prop-base/SettingFormFilter.class.php.svn-base | 9 + .../text-base/SettingFormFilter.class.php.svn-base | 16 + .../SettingsPlugin/SettingFormFilter.class.php | 16 + .../doctrine/SettingsPlugin/base/.svn/all-wcprops | 5 + .../SettingsPlugin/base/.svn/dir-prop-base | 6 + .../doctrine/SettingsPlugin/base/.svn/entries | 28 + .../doctrine/SubscriptionFormFilter.class.php | 15 + .../filter/doctrine/UniqueTestFormFilter.class.php | 15 + .../lib/filter/doctrine/UserFormFilter.class.php | 15 + .../lib/filter/doctrine/base/.svn/all-wcprops | 5 + .../lib/filter/doctrine/base/.svn/dir-prop-base | 6 + .../fixtures/lib/filter/doctrine/base/.svn/entries | 28 + .../functional/fixtures/lib/form/.svn/all-wcprops | 11 + .../test/functional/fixtures/lib/form/.svn/entries | 65 + .../.svn/prop-base/BaseForm.class.php.svn-base | 9 + .../.svn/text-base/BaseForm.class.php.svn-base | 13 + .../fixtures/lib/form/BaseForm.class.php | 13 + .../fixtures/lib/form/doctrine/.svn/all-wcprops | 125 + .../fixtures/lib/form/doctrine/.svn/entries | 714 + .../.svn/prop-base/ArticleForm.class.php.svn-base | 9 + .../ArticleTranslationForm.class.php.svn-base | 9 + .../prop-base/AttachmentForm.class.php.svn-base | 9 + .../.svn/prop-base/AuthorForm.class.php.svn-base | 9 + ...uthorInheritanceConcreteForm.class.php.svn-base | 9 + .../AuthorInheritanceForm.class.php.svn-base | 9 + .../prop-base/BaseFormDoctrine.class.php.svn-base | 9 + .../prop-base/BlogArticleForm.class.php.svn-base | 9 + .../BlogArticleTranslationForm.class.php.svn-base | 9 + .../prop-base/BlogAuthorForm.class.php.svn-base | 9 + .../prop-base/CamelCaseForm.class.php.svn-base | 9 + .../DefaultValueTestForm.class.php.svn-base | 9 + .../FormGeneratorTestForm.class.php.svn-base | 9 + .../.svn/prop-base/GroupForm.class.php.svn-base | 9 + .../prop-base/PermissionForm.class.php.svn-base | 9 + .../.svn/prop-base/ProfileForm.class.php.svn-base | 9 + .../prop-base/ResourceTypeForm.class.php.svn-base | 9 + .../prop-base/SubscriptionForm.class.php.svn-base | 9 + .../prop-base/UniqueTestForm.class.php.svn-base | 9 + .../.svn/prop-base/UserForm.class.php.svn-base | 9 + .../.svn/text-base/ArticleForm.class.php.svn-base | 16 + .../ArticleTranslationForm.class.php.svn-base | 15 + .../text-base/AttachmentForm.class.php.svn-base | 34 + .../.svn/text-base/AuthorForm.class.php.svn-base | 15 + ...uthorInheritanceConcreteForm.class.php.svn-base | 20 + .../AuthorInheritanceForm.class.php.svn-base | 15 + .../text-base/BaseFormDoctrine.class.php.svn-base | 14 + .../text-base/BlogArticleForm.class.php.svn-base | 20 + .../BlogArticleTranslationForm.class.php.svn-base | 16 + .../text-base/BlogAuthorForm.class.php.svn-base | 20 + .../text-base/CamelCaseForm.class.php.svn-base | 15 + .../DefaultValueTestForm.class.php.svn-base | 16 + .../FormGeneratorTestForm.class.php.svn-base | 15 + .../.svn/text-base/GroupForm.class.php.svn-base | 15 + .../text-base/PermissionForm.class.php.svn-base | 15 + .../.svn/text-base/ProfileForm.class.php.svn-base | 15 + .../text-base/ResourceTypeForm.class.php.svn-base | 16 + .../text-base/SubscriptionForm.class.php.svn-base | 15 + .../text-base/UniqueTestForm.class.php.svn-base | 15 + .../.svn/text-base/UserForm.class.php.svn-base | 19 + .../lib/form/doctrine/ArticleForm.class.php | 16 + .../form/doctrine/ArticleTranslationForm.class.php | 15 + .../lib/form/doctrine/AttachmentForm.class.php | 34 + .../lib/form/doctrine/AuthorForm.class.php | 15 + .../AuthorInheritanceConcreteForm.class.php | 20 + .../form/doctrine/AuthorInheritanceForm.class.php | 15 + .../lib/form/doctrine/BaseFormDoctrine.class.php | 14 + .../lib/form/doctrine/BlogArticleForm.class.php | 20 + .../doctrine/BlogArticleTranslationForm.class.php | 16 + .../lib/form/doctrine/BlogAuthorForm.class.php | 20 + .../lib/form/doctrine/CamelCaseForm.class.php | 15 + .../form/doctrine/DefaultValueTestForm.class.php | 16 + .../form/doctrine/FormGeneratorTestForm.class.php | 15 + .../fixtures/lib/form/doctrine/GroupForm.class.php | 15 + .../lib/form/doctrine/PermissionForm.class.php | 15 + .../lib/form/doctrine/ProfileForm.class.php | 15 + .../lib/form/doctrine/ResourceTypeForm.class.php | 16 + .../form/doctrine/SettingsPlugin/.svn/all-wcprops | 11 + .../lib/form/doctrine/SettingsPlugin/.svn/entries | 65 + .../.svn/prop-base/SettingForm.class.php.svn-base | 9 + .../.svn/text-base/SettingForm.class.php.svn-base | 16 + .../doctrine/SettingsPlugin/SettingForm.class.php | 16 + .../doctrine/SettingsPlugin/base/.svn/all-wcprops | 5 + .../SettingsPlugin/base/.svn/dir-prop-base | 6 + .../form/doctrine/SettingsPlugin/base/.svn/entries | 28 + .../lib/form/doctrine/SubscriptionForm.class.php | 15 + .../lib/form/doctrine/UniqueTestForm.class.php | 15 + .../fixtures/lib/form/doctrine/UserForm.class.php | 19 + .../lib/form/doctrine/base/.svn/all-wcprops | 5 + .../lib/form/doctrine/base/.svn/dir-prop-base | 6 + .../fixtures/lib/form/doctrine/base/.svn/entries | 28 + .../fixtures/lib/migration/.svn/all-wcprops | 5 + .../functional/fixtures/lib/migration/.svn/entries | 31 + .../lib/migration/doctrine/.svn/all-wcprops | 5 + .../fixtures/lib/migration/doctrine/.svn/entries | 28 + .../functional/fixtures/lib/model/.svn/all-wcprops | 5 + .../functional/fixtures/lib/model/.svn/entries | 31 + .../fixtures/lib/model/doctrine/.svn/all-wcprops | 293 + .../fixtures/lib/model/doctrine/.svn/entries | 1666 + .../.svn/prop-base/Article.class.php.svn-base | 9 + .../.svn/prop-base/ArticleTable.class.php.svn-base | 9 + .../.svn/prop-base/Attachment.class.php.svn-base | 9 + .../prop-base/AttachmentTable.class.php.svn-base | 9 + .../.svn/prop-base/Author.class.php.svn-base | 9 + .../prop-base/AuthorInheritance.class.php.svn-base | 9 + .../AuthorInheritanceConcrete.class.php.svn-base | 9 + ...thorInheritanceConcreteTable.class.php.svn-base | 9 + .../AuthorInheritanceTable.class.php.svn-base | 9 + .../.svn/prop-base/AuthorTable.class.php.svn-base | 9 + .../.svn/prop-base/BlogArticle.class.php.svn-base | 9 + .../prop-base/BlogArticleTable.class.php.svn-base | 9 + .../.svn/prop-base/BlogAuthor.class.php.svn-base | 9 + .../prop-base/BlogAuthorTable.class.php.svn-base | 9 + .../.svn/prop-base/CamelCase.class.php.svn-base | 9 + .../prop-base/CamelCaseTable.class.php.svn-base | 9 + .../prop-base/DefaultValueTest.class.php.svn-base | 9 + .../DefaultValueTestTable.class.php.svn-base | 9 + .../prop-base/FormGeneratorTest.class.php.svn-base | 9 + .../FormGeneratorTest2.class.php.svn-base | 9 + .../FormGeneratorTest2Table.class.php.svn-base | 9 + .../FormGeneratorTestTable.class.php.svn-base | 9 + .../.svn/prop-base/Group.class.php.svn-base | 9 + .../prop-base/GroupPermission.class.php.svn-base | 9 + .../GroupPermissionTable.class.php.svn-base | 9 + .../.svn/prop-base/GroupTable.class.php.svn-base | 9 + .../ModelFromLinkedSchema.class.php.svn-base | 9 + .../ModelFromLinkedSchemaTable.class.php.svn-base | 9 + .../.svn/prop-base/Permission.class.php.svn-base | 9 + .../prop-base/PermissionTable.class.php.svn-base | 9 + .../.svn/prop-base/Profile.class.php.svn-base | 9 + .../.svn/prop-base/ProfileTable.class.php.svn-base | 9 + .../.svn/prop-base/ResourceType.class.php.svn-base | 9 + .../prop-base/ResourceTypeTable.class.php.svn-base | 9 + .../.svn/prop-base/Subscription.class.php.svn-base | 9 + .../prop-base/SubscriptionTable.class.php.svn-base | 9 + .../.svn/prop-base/UniqueTest.class.php.svn-base | 9 + .../prop-base/UniqueTestTable.class.php.svn-base | 9 + .../.svn/prop-base/User.class.php.svn-base | 9 + .../.svn/prop-base/UserGroup.class.php.svn-base | 9 + .../prop-base/UserGroupTable.class.php.svn-base | 9 + .../prop-base/UserPermission.class.php.svn-base | 9 + .../UserPermissionTable.class.php.svn-base | 9 + .../.svn/prop-base/UserTable.class.php.svn-base | 9 + .../.svn/text-base/Article.class.php.svn-base | 12 + .../.svn/text-base/ArticleTable.class.php.svn-base | 74 + .../.svn/text-base/Attachment.class.php.svn-base | 15 + .../text-base/AttachmentTable.class.php.svn-base | 5 + .../.svn/text-base/Author.class.php.svn-base | 23 + .../text-base/AuthorInheritance.class.php.svn-base | 16 + .../AuthorInheritanceConcrete.class.php.svn-base | 16 + ...thorInheritanceConcreteTable.class.php.svn-base | 7 + .../AuthorInheritanceTable.class.php.svn-base | 7 + .../.svn/text-base/AuthorTable.class.php.svn-base | 18 + .../.svn/text-base/BlogArticle.class.php.svn-base | 15 + .../text-base/BlogArticleTable.class.php.svn-base | 5 + .../.svn/text-base/BlogAuthor.class.php.svn-base | 15 + .../text-base/BlogAuthorTable.class.php.svn-base | 5 + .../.svn/text-base/CamelCase.class.php.svn-base | 16 + .../text-base/CamelCaseTable.class.php.svn-base | 7 + .../text-base/DefaultValueTest.class.php.svn-base | 16 + .../DefaultValueTestTable.class.php.svn-base | 7 + .../text-base/FormGeneratorTest.class.php.svn-base | 16 + .../FormGeneratorTest2.class.php.svn-base | 16 + .../FormGeneratorTest2Table.class.php.svn-base | 7 + .../FormGeneratorTest3.class.php.svn-base | 15 + .../FormGeneratorTest3Table.class.php.svn-base | 5 + .../FormGeneratorTestTable.class.php.svn-base | 7 + .../.svn/text-base/Group.class.php.svn-base | 9 + .../text-base/GroupPermission.class.php.svn-base | 9 + .../GroupPermissionTable.class.php.svn-base | 8 + .../.svn/text-base/GroupTable.class.php.svn-base | 8 + .../ModelFromLinkedSchema.class.php.svn-base | 15 + .../ModelFromLinkedSchemaTable.class.php.svn-base | 5 + .../ModelWithNumberInColumn.class.php.svn-base | 15 + ...ModelWithNumberInColumnTable.class.php.svn-base | 5 + .../.svn/text-base/Permission.class.php.svn-base | 9 + .../text-base/PermissionTable.class.php.svn-base | 8 + .../.svn/text-base/Profile.class.php.svn-base | 9 + .../.svn/text-base/ProfileTable.class.php.svn-base | 8 + .../.svn/text-base/ResourceType.class.php.svn-base | 15 + .../text-base/ResourceTypeTable.class.php.svn-base | 5 + .../.svn/text-base/Subscription.class.php.svn-base | 9 + .../text-base/SubscriptionTable.class.php.svn-base | 8 + .../.svn/text-base/UniqueTest.class.php.svn-base | 9 + .../text-base/UniqueTestTable.class.php.svn-base | 8 + .../.svn/text-base/User.class.php.svn-base | 12 + .../.svn/text-base/UserGroup.class.php.svn-base | 9 + .../text-base/UserGroupTable.class.php.svn-base | 8 + .../text-base/UserPermission.class.php.svn-base | 9 + .../UserPermissionTable.class.php.svn-base | 8 + .../.svn/text-base/UserTable.class.php.svn-base | 30 + .../fixtures/lib/model/doctrine/Article.class.php | 12 + .../lib/model/doctrine/ArticleTable.class.php | 74 + .../lib/model/doctrine/Attachment.class.php | 15 + .../lib/model/doctrine/AttachmentTable.class.php | 5 + .../fixtures/lib/model/doctrine/Author.class.php | 23 + .../lib/model/doctrine/AuthorInheritance.class.php | 16 + .../doctrine/AuthorInheritanceConcrete.class.php | 16 + .../AuthorInheritanceConcreteTable.class.php | 7 + .../doctrine/AuthorInheritanceTable.class.php | 7 + .../lib/model/doctrine/AuthorTable.class.php | 18 + .../lib/model/doctrine/BlogArticle.class.php | 15 + .../lib/model/doctrine/BlogArticleTable.class.php | 5 + .../lib/model/doctrine/BlogAuthor.class.php | 15 + .../lib/model/doctrine/BlogAuthorTable.class.php | 5 + .../lib/model/doctrine/CamelCase.class.php | 16 + .../lib/model/doctrine/CamelCaseTable.class.php | 7 + .../lib/model/doctrine/DefaultValueTest.class.php | 16 + .../model/doctrine/DefaultValueTestTable.class.php | 7 + .../lib/model/doctrine/FormGeneratorTest.class.php | 16 + .../model/doctrine/FormGeneratorTest2.class.php | 16 + .../doctrine/FormGeneratorTest2Table.class.php | 7 + .../model/doctrine/FormGeneratorTest3.class.php | 15 + .../doctrine/FormGeneratorTest3Table.class.php | 5 + .../doctrine/FormGeneratorTestTable.class.php | 7 + .../fixtures/lib/model/doctrine/Group.class.php | 9 + .../lib/model/doctrine/GroupPermission.class.php | 9 + .../model/doctrine/GroupPermissionTable.class.php | 8 + .../lib/model/doctrine/GroupTable.class.php | 8 + .../model/doctrine/ModelFromLinkedSchema.class.php | 15 + .../doctrine/ModelFromLinkedSchemaTable.class.php | 5 + .../doctrine/ModelWithNumberInColumn.class.php | 15 + .../ModelWithNumberInColumnTable.class.php | 5 + .../lib/model/doctrine/Permission.class.php | 9 + .../lib/model/doctrine/PermissionTable.class.php | 8 + .../fixtures/lib/model/doctrine/Profile.class.php | 9 + .../lib/model/doctrine/ProfileTable.class.php | 8 + .../lib/model/doctrine/ResourceType.class.php | 15 + .../lib/model/doctrine/ResourceTypeTable.class.php | 5 + .../model/doctrine/SettingsPlugin/.svn/all-wcprops | 17 + .../lib/model/doctrine/SettingsPlugin/.svn/entries | 99 + .../.svn/prop-base/Setting.class.php.svn-base | 9 + .../.svn/prop-base/SettingTable.class.php.svn-base | 9 + .../.svn/text-base/Setting.class.php.svn-base | 15 + .../.svn/text-base/SettingTable.class.php.svn-base | 11 + .../doctrine/SettingsPlugin/Setting.class.php | 15 + .../doctrine/SettingsPlugin/SettingTable.class.php | 11 + .../doctrine/SettingsPlugin/base/.svn/all-wcprops | 5 + .../SettingsPlugin/base/.svn/dir-prop-base | 6 + .../doctrine/SettingsPlugin/base/.svn/entries | 28 + .../lib/model/doctrine/Subscription.class.php | 9 + .../lib/model/doctrine/SubscriptionTable.class.php | 8 + .../lib/model/doctrine/UniqueTest.class.php | 9 + .../lib/model/doctrine/UniqueTestTable.class.php | 8 + .../fixtures/lib/model/doctrine/User.class.php | 12 + .../lib/model/doctrine/UserGroup.class.php | 9 + .../lib/model/doctrine/UserGroupTable.class.php | 8 + .../lib/model/doctrine/UserPermission.class.php | 9 + .../model/doctrine/UserPermissionTable.class.php | 8 + .../lib/model/doctrine/UserTable.class.php | 30 + .../lib/model/doctrine/base/.svn/all-wcprops | 5 + .../lib/model/doctrine/base/.svn/dir-prop-base | 6 + .../fixtures/lib/model/doctrine/base/.svn/entries | 28 + .../fixtures/lib/myDoctrineRecord.class.php | 5 + .../test/functional/fixtures/log/.svn/all-wcprops | 5 + .../functional/fixtures/log/.svn/dir-prop-base | 6 + .../test/functional/fixtures/log/.svn/entries | 28 + .../functional/fixtures/plugins/.svn/all-wcprops | 5 + .../test/functional/fixtures/plugins/.svn/entries | 31 + .../plugins/SettingsPlugin/.svn/all-wcprops | 5 + .../fixtures/plugins/SettingsPlugin/.svn/entries | 34 + .../plugins/SettingsPlugin/config/.svn/all-wcprops | 5 + .../plugins/SettingsPlugin/config/.svn/entries | 31 + .../config/doctrine/.svn/all-wcprops | 11 + .../SettingsPlugin/config/doctrine/.svn/entries | 62 + .../doctrine/.svn/prop-base/schema.yml.svn-base | 9 + .../doctrine/.svn/text-base/schema.yml.svn-base | 6 + .../SettingsPlugin/config/doctrine/schema.yml | 6 + .../plugins/SettingsPlugin/lib/.svn/all-wcprops | 5 + .../plugins/SettingsPlugin/lib/.svn/entries | 37 + .../SettingsPlugin/lib/filter/.svn/all-wcprops | 5 + .../plugins/SettingsPlugin/lib/filter/.svn/entries | 31 + .../lib/filter/doctrine/.svn/all-wcprops | 11 + .../lib/filter/doctrine/.svn/entries | 62 + .../PluginSettingFormFilter.class.php.svn-base | 9 + .../PluginSettingFormFilter.class.php.svn-base | 13 + .../doctrine/PluginSettingFormFilter.class.php | 13 + .../SettingsPlugin/lib/form/.svn/all-wcprops | 5 + .../plugins/SettingsPlugin/lib/form/.svn/entries | 31 + .../lib/form/doctrine/.svn/all-wcprops | 11 + .../SettingsPlugin/lib/form/doctrine/.svn/entries | 62 + .../prop-base/PluginSettingForm.class.php.svn-base | 9 + .../text-base/PluginSettingForm.class.php.svn-base | 13 + .../lib/form/doctrine/PluginSettingForm.class.php | 13 + .../SettingsPlugin/lib/model/.svn/all-wcprops | 5 + .../plugins/SettingsPlugin/lib/model/.svn/entries | 31 + .../lib/model/doctrine/.svn/all-wcprops | 17 + .../SettingsPlugin/lib/model/doctrine/.svn/entries | 96 + .../prop-base/PluginSetting.class.php.svn-base | 9 + .../PluginSettingTable.class.php.svn-base | 9 + .../text-base/PluginSetting.class.php.svn-base | 16 + .../PluginSettingTable.class.php.svn-base | 19 + .../lib/model/doctrine/PluginSetting.class.php | 16 + .../model/doctrine/PluginSettingTable.class.php | 19 + .../test/functional/fixtures/symfony | 15 + .../test/functional/fixtures/test/.svn/all-wcprops | 5 + .../test/functional/fixtures/test/.svn/entries | 31 + .../fixtures/test/functional/.svn/all-wcprops | 5 + .../fixtures/test/functional/.svn/entries | 28 + .../test/functional/sfDoctrineRecordTest.php | 82 + .../sfDoctrinePlugin/test/unit/.svn/all-wcprops | 23 + .../sfDoctrinePlugin/test/unit/.svn/entries | 142 + .../prop-base/sfDoctrineColumnTest.php.svn-base | 9 + .../prop-base/sfDoctrineDatabaseTest.php.svn-base | 9 + .../.svn/text-base/autoloaderTest.php.svn-base | 15 + .../text-base/sfDoctrineColumnTest.php.svn-base | 83 + .../text-base/sfDoctrineDatabaseTest.php.svn-base | 37 + .../sfDoctrinePlugin/test/unit/autoloaderTest.php | 15 + .../test/unit/form/.svn/all-wcprops | 17 + .../sfDoctrinePlugin/test/unit/form/.svn/entries | 96 + .../.svn/prop-base/sfFormDoctrineTest.php.svn-base | 9 + .../sfFormFilterDoctrineTest.php.svn-base | 9 + .../.svn/text-base/sfFormDoctrineTest.php.svn-base | 97 + .../sfFormFilterDoctrineTest.php.svn-base | 136 + .../test/unit/form/sfFormDoctrineTest.php | 97 + .../test/unit/form/sfFormFilterDoctrineTest.php | 136 + .../test/unit/pager/.svn/all-wcprops | 11 + .../sfDoctrinePlugin/test/unit/pager/.svn/entries | 62 + .../prop-base/sfDoctrinePagerTest.php.svn-base | 9 + .../text-base/sfDoctrinePagerTest.php.svn-base | 62 + .../test/unit/pager/sfDoctrinePagerTest.php | 62 + .../test/unit/record/.svn/all-wcprops | 11 + .../sfDoctrinePlugin/test/unit/record/.svn/entries | 62 + .../prop-base/sfDoctrineRecordTest.php.svn-base | 9 + .../text-base/sfDoctrineRecordTest.php.svn-base | 77 + .../test/unit/record/sfDoctrineRecordTest.php | 77 + .../test/unit/sfDoctrineColumnTest.php | 83 + .../test/unit/sfDoctrineDatabaseTest.php | 37 + .../test/unit/validator/.svn/all-wcprops | 11 + .../test/unit/validator/.svn/entries | 62 + .../sfValidatorDoctrineChoiceTest.php.svn-base | 9 + .../sfValidatorDoctrineChoiceTest.php.svn-base | 18 + .../validator/sfValidatorDoctrineChoiceTest.php | 18 + .../plugins/sfDoctrinePlugin/web/.svn/all-wcprops | 5 + .../lib/plugins/sfDoctrinePlugin/web/.svn/entries | 34 + .../sfDoctrinePlugin/web/css/.svn/all-wcprops | 17 + .../plugins/sfDoctrinePlugin/web/css/.svn/entries | 96 + .../web/css/.svn/prop-base/default.css.svn-base | 5 + .../web/css/.svn/prop-base/global.css.svn-base | 5 + .../web/css/.svn/text-base/default.css.svn-base | 271 + .../web/css/.svn/text-base/global.css.svn-base | 34 + .../plugins/sfDoctrinePlugin/web/css/default.css | 271 + .../plugins/sfDoctrinePlugin/web/css/global.css | 34 + .../sfDoctrinePlugin/web/images/.svn/all-wcprops | 83 + .../sfDoctrinePlugin/web/images/.svn/entries | 470 + .../web/images/.svn/prop-base/asc.png.svn-base | 9 + .../web/images/.svn/prop-base/default.png.svn-base | 9 + .../web/images/.svn/prop-base/delete.png.svn-base | 9 + .../web/images/.svn/prop-base/desc.png.svn-base | 9 + .../web/images/.svn/prop-base/edit.png.svn-base | 9 + .../web/images/.svn/prop-base/error.png.svn-base | 9 + .../web/images/.svn/prop-base/first.png.svn-base | 9 + .../web/images/.svn/prop-base/last.png.svn-base | 9 + .../web/images/.svn/prop-base/list.png.svn-base | 9 + .../web/images/.svn/prop-base/new.png.svn-base | 9 + .../web/images/.svn/prop-base/next.png.svn-base | 9 + .../images/.svn/prop-base/previous.png.svn-base | 9 + .../web/images/.svn/prop-base/tick.png.svn-base | 9 + .../web/images/.svn/text-base/asc.png.svn-base | Bin 0 -> 287 bytes .../web/images/.svn/text-base/default.png.svn-base | Bin 0 -> 267 bytes .../web/images/.svn/text-base/delete.png.svn-base | Bin 0 -> 325 bytes .../web/images/.svn/text-base/desc.png.svn-base | Bin 0 -> 285 bytes .../web/images/.svn/text-base/edit.png.svn-base | Bin 0 -> 411 bytes .../web/images/.svn/text-base/error.png.svn-base | Bin 0 -> 438 bytes .../web/images/.svn/text-base/first.png.svn-base | Bin 0 -> 435 bytes .../web/images/.svn/text-base/last.png.svn-base | Bin 0 -> 436 bytes .../web/images/.svn/text-base/list.png.svn-base | Bin 0 -> 267 bytes .../web/images/.svn/text-base/new.png.svn-base | Bin 0 -> 288 bytes .../web/images/.svn/text-base/next.png.svn-base | Bin 0 -> 448 bytes .../images/.svn/text-base/previous.png.svn-base | Bin 0 -> 452 bytes .../web/images/.svn/text-base/tick.png.svn-base | Bin 0 -> 344 bytes .../plugins/sfDoctrinePlugin/web/images/asc.png | Bin 0 -> 287 bytes .../sfDoctrinePlugin/web/images/default.png | Bin 0 -> 267 bytes .../plugins/sfDoctrinePlugin/web/images/delete.png | Bin 0 -> 325 bytes .../plugins/sfDoctrinePlugin/web/images/desc.png | Bin 0 -> 285 bytes .../plugins/sfDoctrinePlugin/web/images/edit.png | Bin 0 -> 411 bytes .../plugins/sfDoctrinePlugin/web/images/error.png | Bin 0 -> 438 bytes .../plugins/sfDoctrinePlugin/web/images/first.png | Bin 0 -> 435 bytes .../plugins/sfDoctrinePlugin/web/images/last.png | Bin 0 -> 436 bytes .../plugins/sfDoctrinePlugin/web/images/list.png | Bin 0 -> 267 bytes .../plugins/sfDoctrinePlugin/web/images/new.png | Bin 0 -> 288 bytes .../plugins/sfDoctrinePlugin/web/images/next.png | Bin 0 -> 448 bytes .../sfDoctrinePlugin/web/images/previous.png | Bin 0 -> 452 bytes .../plugins/sfDoctrinePlugin/web/images/tick.png | Bin 0 -> 344 bytes .../lib/plugins/sfPropelPlugin/.svn/all-wcprops | 29 + .../lib/plugins/sfPropelPlugin/.svn/entries | 182 + .../.svn/text-base/LICENSE.Agavi.svn-base | 14 + .../.svn/text-base/LICENSE.Propel.svn-base | 506 + .../.svn/text-base/LICENSE.phing.svn-base | 1042 + .../sfPropelPlugin/.svn/text-base/LICENSE.svn-base | 7 + .../symfony/lib/plugins/sfPropelPlugin/LICENSE | 7 + .../lib/plugins/sfPropelPlugin/LICENSE.Agavi | 14 + .../lib/plugins/sfPropelPlugin/LICENSE.Propel | 506 + .../lib/plugins/sfPropelPlugin/LICENSE.phing | 1042 + .../plugins/sfPropelPlugin/config/.svn/all-wcprops | 23 + .../lib/plugins/sfPropelPlugin/config/.svn/entries | 133 + .../config/.svn/prop-base/installer.php.svn-base | 9 + .../sfPropelPluginConfiguration.class.php.svn-base | 17 + .../config/.svn/text-base/autoload.yml.svn-base | 6 + .../config/.svn/text-base/installer.php.svn-base | 5 + .../sfPropelPluginConfiguration.class.php.svn-base | 78 + .../lib/plugins/sfPropelPlugin/config/autoload.yml | 6 + .../plugins/sfPropelPlugin/config/installer.php | 5 + .../config/sfPropelPluginConfiguration.class.php | 78 + .../config/skeleton/.svn/all-wcprops | 5 + .../sfPropelPlugin/config/skeleton/.svn/entries | 31 + .../config/skeleton/config/.svn/all-wcprops | 23 + .../config/skeleton/config/.svn/entries | 130 + .../config/.svn/prop-base/propel.ini.svn-base | 13 + .../config/.svn/text-base/databases.yml.svn-base | 32 + .../config/.svn/text-base/propel.ini.svn-base | 54 + .../config/.svn/text-base/schema.yml.svn-base | 0 .../config/skeleton/config/databases.yml | 32 + .../config/skeleton/config/propel.ini | 54 + .../config/skeleton/config/schema.yml | 0 .../plugins/sfPropelPlugin/data/.svn/all-wcprops | 5 + .../lib/plugins/sfPropelPlugin/data/.svn/entries | 31 + .../sfPropelPlugin/data/generator/.svn/all-wcprops | 5 + .../sfPropelPlugin/data/generator/.svn/entries | 37 + .../data/generator/sfPropelForm/.svn/all-wcprops | 5 + .../data/generator/sfPropelForm/.svn/entries | 31 + .../sfPropelForm/default/.svn/all-wcprops | 5 + .../generator/sfPropelForm/default/.svn/entries | 31 + .../sfPropelForm/default/template/.svn/all-wcprops | 23 + .../sfPropelForm/default/template/.svn/entries | 130 + .../sfPropelFormBaseTemplate.php.svn-base | 13 + .../sfPropelFormGeneratedTemplate.php.svn-base | 13 + .../prop-base/sfPropelFormTemplate.php.svn-base | 13 + .../sfPropelFormBaseTemplate.php.svn-base | 15 + .../sfPropelFormGeneratedTemplate.php.svn-base | 139 + .../text-base/sfPropelFormTemplate.php.svn-base | 15 + .../default/template/sfPropelFormBaseTemplate.php | 15 + .../template/sfPropelFormGeneratedTemplate.php | 139 + .../default/template/sfPropelFormTemplate.php | 15 + .../generator/sfPropelFormFilter/.svn/all-wcprops | 5 + .../data/generator/sfPropelFormFilter/.svn/entries | 31 + .../sfPropelFormFilter/default/.svn/all-wcprops | 5 + .../sfPropelFormFilter/default/.svn/entries | 31 + .../default/template/.svn/all-wcprops | 23 + .../default/template/.svn/entries | 130 + .../sfPropelFormFilterBaseTemplate.php.svn-base | 13 + ...fPropelFormFilterGeneratedTemplate.php.svn-base | 13 + .../sfPropelFormFilterTemplate.php.svn-base | 13 + .../sfPropelFormFilterBaseTemplate.php.svn-base | 15 + ...fPropelFormFilterGeneratedTemplate.php.svn-base | 84 + .../sfPropelFormFilterTemplate.php.svn-base | 15 + .../template/sfPropelFormFilterBaseTemplate.php | 15 + .../sfPropelFormFilterGeneratedTemplate.php | 84 + .../template/sfPropelFormFilterTemplate.php | 15 + .../data/generator/sfPropelModule/.svn/all-wcprops | 5 + .../data/generator/sfPropelModule/.svn/entries | 34 + .../sfPropelModule/admin/.svn/all-wcprops | 5 + .../generator/sfPropelModule/admin/.svn/entries | 37 + .../sfPropelModule/admin/parts/.svn/all-wcprops | 107 + .../sfPropelModule/admin/parts/.svn/entries | 606 + .../prop-base/actionsConfiguration.php.svn-base | 13 + .../parts/.svn/prop-base/batchAction.php.svn-base | 13 + .../.svn/prop-base/configuration.php.svn-base | 13 + .../parts/.svn/prop-base/createAction.php.svn-base | 13 + .../parts/.svn/prop-base/deleteAction.php.svn-base | 13 + .../parts/.svn/prop-base/editAction.php.svn-base | 13 + .../prop-base/fieldsConfiguration.php.svn-base | 13 + .../parts/.svn/prop-base/filterAction.php.svn-base | 13 + .../.svn/prop-base/filtersAction.php.svn-base | 13 + .../parts/.svn/prop-base/indexAction.php.svn-base | 13 + .../parts/.svn/prop-base/newAction.php.svn-base | 13 + .../.svn/prop-base/paginationAction.php.svn-base | 13 + .../prop-base/paginationConfiguration.php.svn-base | 13 + .../.svn/prop-base/processFormAction.php.svn-base | 13 + .../.svn/prop-base/sortingAction.php.svn-base | 13 + .../prop-base/sortingConfiguration.php.svn-base | 13 + .../parts/.svn/prop-base/updateAction.php.svn-base | 13 + .../text-base/actionsConfiguration.php.svn-base | 41 + .../parts/.svn/text-base/batchAction.php.svn-base | 72 + .../.svn/text-base/configuration.php.svn-base | 59 + .../parts/.svn/text-base/createAction.php.svn-base | 9 + .../parts/.svn/text-base/deleteAction.php.svn-base | 12 + .../parts/.svn/text-base/editAction.php.svn-base | 5 + .../text-base/fieldsConfiguration.php.svn-base | 86 + .../parts/.svn/text-base/filterAction.php.svn-base | 26 + .../.svn/text-base/filtersAction.php.svn-base | 9 + .../parts/.svn/text-base/indexAction.php.svn-base | 17 + .../parts/.svn/text-base/newAction.php.svn-base | 5 + .../.svn/text-base/paginationAction.php.svn-base | 42 + .../text-base/paginationConfiguration.php.svn-base | 11 + .../.svn/text-base/processFormAction.php.svn-base | 29 + .../.svn/text-base/sortingAction.php.svn-base | 44 + .../text-base/sortingConfiguration.php.svn-base | 10 + .../parts/.svn/text-base/updateAction.php.svn-base | 9 + .../admin/parts/actionsConfiguration.php | 41 + .../sfPropelModule/admin/parts/batchAction.php | 72 + .../sfPropelModule/admin/parts/configuration.php | 59 + .../sfPropelModule/admin/parts/createAction.php | 9 + .../sfPropelModule/admin/parts/deleteAction.php | 12 + .../sfPropelModule/admin/parts/editAction.php | 5 + .../admin/parts/fieldsConfiguration.php | 86 + .../sfPropelModule/admin/parts/filterAction.php | 26 + .../sfPropelModule/admin/parts/filtersAction.php | 9 + .../sfPropelModule/admin/parts/indexAction.php | 17 + .../sfPropelModule/admin/parts/newAction.php | 5 + .../admin/parts/paginationAction.php | 42 + .../admin/parts/paginationConfiguration.php | 11 + .../admin/parts/processFormAction.php | 29 + .../sfPropelModule/admin/parts/sortingAction.php | 44 + .../admin/parts/sortingConfiguration.php | 10 + .../sfPropelModule/admin/parts/updateAction.php | 9 + .../sfPropelModule/admin/skeleton/.svn/all-wcprops | 5 + .../sfPropelModule/admin/skeleton/.svn/entries | 40 + .../admin/skeleton/actions/.svn/all-wcprops | 11 + .../admin/skeleton/actions/.svn/entries | 62 + .../.svn/prop-base/actions.class.php.svn-base | 13 + .../.svn/text-base/actions.class.php.svn-base | 16 + .../admin/skeleton/actions/actions.class.php | 16 + .../admin/skeleton/config/.svn/all-wcprops | 11 + .../admin/skeleton/config/.svn/entries | 62 + .../config/.svn/text-base/generator.yml.svn-base | 13 + .../admin/skeleton/config/generator.yml | 13 + .../admin/skeleton/lib/.svn/all-wcprops | 17 + .../sfPropelModule/admin/skeleton/lib/.svn/entries | 96 + .../lib/.svn/prop-base/configuration.php.svn-base | 13 + .../lib/.svn/prop-base/helper.php.svn-base | 13 + .../lib/.svn/text-base/configuration.php.svn-base | 13 + .../lib/.svn/text-base/helper.php.svn-base | 13 + .../admin/skeleton/lib/configuration.php | 13 + .../sfPropelModule/admin/skeleton/lib/helper.php | 13 + .../sfPropelModule/admin/skeleton/templates/.sf | 0 .../admin/skeleton/templates/.svn/all-wcprops | 11 + .../admin/skeleton/templates/.svn/entries | 62 + .../skeleton/templates/.svn/text-base/.sf.svn-base | 0 .../sfPropelModule/admin/template/.svn/all-wcprops | 5 + .../sfPropelModule/admin/template/.svn/entries | 37 + .../admin/template/actions/.svn/all-wcprops | 11 + .../admin/template/actions/.svn/entries | 62 + .../.svn/prop-base/actions.class.php.svn-base | 13 + .../.svn/text-base/actions.class.php.svn-base | 60 + .../admin/template/actions/actions.class.php | 60 + .../admin/template/lib/.svn/all-wcprops | 11 + .../sfPropelModule/admin/template/lib/.svn/entries | 62 + .../lib/.svn/prop-base/helper.php.svn-base | 13 + .../lib/.svn/text-base/helper.php.svn-base | 16 + .../sfPropelModule/admin/template/lib/helper.php | 16 + .../admin/template/templates/.svn/all-wcprops | 161 + .../admin/template/templates/.svn/entries | 912 + .../templates/.svn/prop-base/_assets.php.svn-base | 13 + .../templates/.svn/prop-base/_filters.php.svn-base | 13 + .../.svn/prop-base/_filters_field.php.svn-base | 13 + .../templates/.svn/prop-base/_flashes.php.svn-base | 13 + .../templates/.svn/prop-base/_form.php.svn-base | 13 + .../.svn/prop-base/_form_actions.php.svn-base | 13 + .../.svn/prop-base/_form_field.php.svn-base | 13 + .../.svn/prop-base/_form_fieldset.php.svn-base | 13 + .../.svn/prop-base/_form_footer.php.svn-base | 13 + .../.svn/prop-base/_form_header.php.svn-base | 13 + .../templates/.svn/prop-base/_list.php.svn-base | 13 + .../.svn/prop-base/_list_actions.php.svn-base | 13 + .../prop-base/_list_batch_actions.php.svn-base | 13 + .../prop-base/_list_field_boolean.php.svn-base | 13 + .../.svn/prop-base/_list_footer.php.svn-base | 13 + .../.svn/prop-base/_list_header.php.svn-base | 13 + .../.svn/prop-base/_list_td_actions.php.svn-base | 13 + .../prop-base/_list_td_batch_actions.php.svn-base | 13 + .../.svn/prop-base/_list_td_stacked.php.svn-base | 13 + .../.svn/prop-base/_list_td_tabular.php.svn-base | 13 + .../.svn/prop-base/_list_th_stacked.php.svn-base | 13 + .../.svn/prop-base/_list_th_tabular.php.svn-base | 13 + .../.svn/prop-base/_pagination.php.svn-base | 13 + .../.svn/prop-base/editSuccess.php.svn-base | 13 + .../.svn/prop-base/indexSuccess.php.svn-base | 13 + .../.svn/prop-base/newSuccess.php.svn-base | 13 + .../templates/.svn/text-base/_assets.php.svn-base | 6 + .../templates/.svn/text-base/_filters.php.svn-base | 36 + .../.svn/text-base/_filters_field.php.svn-base | 20 + .../templates/.svn/text-base/_flashes.php.svn-base | 7 + .../templates/.svn/text-base/_form.php.svn-base | 18 + .../.svn/text-base/_form_actions.php.svn-base | 35 + .../.svn/text-base/_form_field.php.svn-base | 20 + .../.svn/text-base/_form_fieldset.php.svn-base | 18 + .../.svn/text-base/_form_footer.php.svn-base | 0 .../.svn/text-base/_form_header.php.svn-base | 0 .../templates/.svn/text-base/_list.php.svn-base | 54 + .../.svn/text-base/_list_actions.php.svn-base | 11 + .../text-base/_list_batch_actions.php.svn-base | 15 + .../text-base/_list_field_boolean.php.svn-base | 5 + .../.svn/text-base/_list_footer.php.svn-base | 0 .../.svn/text-base/_list_header.php.svn-base | 0 .../.svn/text-base/_list_td_actions.php.svn-base | 18 + .../text-base/_list_td_batch_actions.php.svn-base | 3 + .../.svn/text-base/_list_td_stacked.php.svn-base | 3 + .../.svn/text-base/_list_td_tabular.php.svn-base | 9 + .../.svn/text-base/_list_th_stacked.php.svn-base | 1 + .../.svn/text-base/_list_th_tabular.php.svn-base | 17 + .../.svn/text-base/_pagination.php.svn-base | 25 + .../.svn/text-base/editSuccess.php.svn-base | 20 + .../.svn/text-base/indexSuccess.php.svn-base | 36 + .../.svn/text-base/newSuccess.php.svn-base | 20 + .../admin/template/templates/_assets.php | 6 + .../admin/template/templates/_filters.php | 36 + .../admin/template/templates/_filters_field.php | 20 + .../admin/template/templates/_flashes.php | 7 + .../admin/template/templates/_form.php | 18 + .../admin/template/templates/_form_actions.php | 35 + .../admin/template/templates/_form_field.php | 20 + .../admin/template/templates/_form_fieldset.php | 18 + .../admin/template/templates/_form_footer.php | 0 .../admin/template/templates/_form_header.php | 0 .../admin/template/templates/_list.php | 54 + .../admin/template/templates/_list_actions.php | 11 + .../template/templates/_list_batch_actions.php | 15 + .../template/templates/_list_field_boolean.php | 5 + .../admin/template/templates/_list_footer.php | 0 .../admin/template/templates/_list_header.php | 0 .../admin/template/templates/_list_td_actions.php | 18 + .../template/templates/_list_td_batch_actions.php | 3 + .../admin/template/templates/_list_td_stacked.php | 3 + .../admin/template/templates/_list_td_tabular.php | 9 + .../admin/template/templates/_list_th_stacked.php | 1 + .../admin/template/templates/_list_th_tabular.php | 17 + .../admin/template/templates/_pagination.php | 25 + .../admin/template/templates/editSuccess.php | 20 + .../admin/template/templates/indexSuccess.php | 36 + .../admin/template/templates/newSuccess.php | 20 + .../sfPropelModule/default/.svn/all-wcprops | 5 + .../generator/sfPropelModule/default/.svn/entries | 37 + .../sfPropelModule/default/parts/.svn/all-wcprops | 53 + .../sfPropelModule/default/parts/.svn/entries | 300 + .../parts/.svn/prop-base/createAction.php.svn-base | 13 + .../parts/.svn/prop-base/deleteAction.php.svn-base | 13 + .../parts/.svn/prop-base/editAction.php.svn-base | 13 + .../parts/.svn/prop-base/indexAction.php.svn-base | 13 + .../parts/.svn/prop-base/newAction.php.svn-base | 13 + .../.svn/prop-base/processFormAction.php.svn-base | 13 + .../parts/.svn/prop-base/showAction.php.svn-base | 13 + .../parts/.svn/prop-base/updateAction.php.svn-base | 13 + .../parts/.svn/text-base/createAction.php.svn-base | 13 + .../parts/.svn/text-base/deleteAction.php.svn-base | 17 + .../parts/.svn/text-base/editAction.php.svn-base | 9 + .../parts/.svn/text-base/indexAction.php.svn-base | 8 + .../parts/.svn/text-base/newAction.php.svn-base | 4 + .../.svn/text-base/processFormAction.php.svn-base | 14 + .../parts/.svn/text-base/showAction.php.svn-base | 9 + .../parts/.svn/text-base/updateAction.php.svn-base | 14 + .../sfPropelModule/default/parts/createAction.php | 13 + .../sfPropelModule/default/parts/deleteAction.php | 17 + .../sfPropelModule/default/parts/editAction.php | 9 + .../sfPropelModule/default/parts/indexAction.php | 8 + .../sfPropelModule/default/parts/newAction.php | 4 + .../default/parts/processFormAction.php | 14 + .../sfPropelModule/default/parts/showAction.php | 9 + .../sfPropelModule/default/parts/updateAction.php | 14 + .../default/skeleton/.svn/all-wcprops | 5 + .../sfPropelModule/default/skeleton/.svn/entries | 37 + .../default/skeleton/actions/.svn/all-wcprops | 11 + .../default/skeleton/actions/.svn/entries | 62 + .../.svn/prop-base/actions.class.php.svn-base | 13 + .../.svn/text-base/actions.class.php.svn-base | 13 + .../default/skeleton/actions/actions.class.php | 13 + .../default/skeleton/config/.svn/all-wcprops | 11 + .../default/skeleton/config/.svn/entries | 62 + .../config/.svn/prop-base/generator.yml.svn-base | 13 + .../config/.svn/text-base/generator.yml.svn-base | 7 + .../default/skeleton/config/generator.yml | 7 + .../sfPropelModule/default/skeleton/templates/.sf | 0 .../default/skeleton/templates/.svn/all-wcprops | 11 + .../default/skeleton/templates/.svn/entries | 62 + .../skeleton/templates/.svn/text-base/.sf.svn-base | 0 .../default/template/.svn/all-wcprops | 5 + .../sfPropelModule/default/template/.svn/entries | 34 + .../default/template/actions/.svn/all-wcprops | 11 + .../default/template/actions/.svn/entries | 62 + .../.svn/prop-base/actions.class.php.svn-base | 13 + .../.svn/text-base/actions.class.php.svn-base | 30 + .../default/template/actions/actions.class.php | 30 + .../default/template/templates/.svn/all-wcprops | 35 + .../default/template/templates/.svn/entries | 198 + .../templates/.svn/prop-base/_form.php.svn-base | 13 + .../.svn/prop-base/editSuccess.php.svn-base | 13 + .../.svn/prop-base/indexSuccess.php.svn-base | 13 + .../.svn/prop-base/newSuccess.php.svn-base | 13 + .../.svn/prop-base/showSuccess.php.svn-base | 13 + .../templates/.svn/text-base/_form.php.svn-base | 53 + .../.svn/text-base/editSuccess.php.svn-base | 3 + .../.svn/text-base/indexSuccess.php.svn-base | 34 + .../.svn/text-base/newSuccess.php.svn-base | 3 + .../.svn/text-base/showSuccess.php.svn-base | 22 + .../default/template/templates/_form.php | 53 + .../default/template/templates/editSuccess.php | 3 + .../default/template/templates/indexSuccess.php | 34 + .../default/template/templates/newSuccess.php | 3 + .../default/template/templates/showSuccess.php | 22 + .../plugins/sfPropelPlugin/i18n/.svn/all-wcprops | 209 + .../lib/plugins/sfPropelPlugin/i18n/.svn/entries | 1184 + .../i18n/.svn/text-base/sf_admin.ar.xml.svn-base | 134 + .../i18n/.svn/text-base/sf_admin.bg.xml.svn-base | 126 + .../i18n/.svn/text-base/sf_admin.ca.xml.svn-base | 151 + .../i18n/.svn/text-base/sf_admin.cs.xml.svn-base | 178 + .../i18n/.svn/text-base/sf_admin.da.xml.svn-base | 134 + .../i18n/.svn/text-base/sf_admin.de.xml.svn-base | 191 + .../i18n/.svn/text-base/sf_admin.el.xml.svn-base | 158 + .../i18n/.svn/text-base/sf_admin.es.xml.svn-base | 308 + .../.svn/text-base/sf_admin.es_AR.xml.svn-base | 114 + .../i18n/.svn/text-base/sf_admin.eu.xml.svn-base | 170 + .../i18n/.svn/text-base/sf_admin.fa.xml.svn-base | 168 + .../i18n/.svn/text-base/sf_admin.fi.xml.svn-base | 134 + .../i18n/.svn/text-base/sf_admin.fr.xml.svn-base | 182 + .../i18n/.svn/text-base/sf_admin.hr.xml.svn-base | 134 + .../i18n/.svn/text-base/sf_admin.hu.xml.svn-base | 134 + .../i18n/.svn/text-base/sf_admin.id.xml.svn-base | 134 + .../i18n/.svn/text-base/sf_admin.it.xml.svn-base | 202 + .../i18n/.svn/text-base/sf_admin.ja.xml.svn-base | 294 + .../i18n/.svn/text-base/sf_admin.lt.xml.svn-base | 134 + .../i18n/.svn/text-base/sf_admin.lv.xml.svn-base | 134 + .../i18n/.svn/text-base/sf_admin.nl.xml.svn-base | 130 + .../i18n/.svn/text-base/sf_admin.no.xml.svn-base | 114 + .../i18n/.svn/text-base/sf_admin.pl.xml.svn-base | 174 + .../i18n/.svn/text-base/sf_admin.pt.xml.svn-base | 135 + .../.svn/text-base/sf_admin.pt_BR.xml.svn-base | 138 + .../i18n/.svn/text-base/sf_admin.ro.xml.svn-base | 137 + .../i18n/.svn/text-base/sf_admin.ru.xml.svn-base | 174 + .../i18n/.svn/text-base/sf_admin.sk.xml.svn-base | 134 + .../i18n/.svn/text-base/sf_admin.sl.xml.svn-base | 158 + .../i18n/.svn/text-base/sf_admin.sv.xml.svn-base | 146 + .../i18n/.svn/text-base/sf_admin.tr.xml.svn-base | 174 + .../i18n/.svn/text-base/sf_admin.uk.xml.svn-base | 174 + .../.svn/text-base/sf_admin.zh_CN.xml.svn-base | 135 + .../.svn/text-base/sf_admin.zh_TW.xml.svn-base | 151 + .../plugins/sfPropelPlugin/i18n/sf_admin.ar.xml | 134 + .../plugins/sfPropelPlugin/i18n/sf_admin.bg.xml | 126 + .../plugins/sfPropelPlugin/i18n/sf_admin.ca.xml | 151 + .../plugins/sfPropelPlugin/i18n/sf_admin.cs.xml | 178 + .../plugins/sfPropelPlugin/i18n/sf_admin.da.xml | 134 + .../plugins/sfPropelPlugin/i18n/sf_admin.de.xml | 191 + .../plugins/sfPropelPlugin/i18n/sf_admin.el.xml | 158 + .../plugins/sfPropelPlugin/i18n/sf_admin.es.xml | 308 + .../plugins/sfPropelPlugin/i18n/sf_admin.es_AR.xml | 114 + .../plugins/sfPropelPlugin/i18n/sf_admin.eu.xml | 170 + .../plugins/sfPropelPlugin/i18n/sf_admin.fa.xml | 168 + .../plugins/sfPropelPlugin/i18n/sf_admin.fi.xml | 134 + .../plugins/sfPropelPlugin/i18n/sf_admin.fr.xml | 182 + .../plugins/sfPropelPlugin/i18n/sf_admin.hr.xml | 134 + .../plugins/sfPropelPlugin/i18n/sf_admin.hu.xml | 134 + .../plugins/sfPropelPlugin/i18n/sf_admin.id.xml | 134 + .../plugins/sfPropelPlugin/i18n/sf_admin.it.xml | 202 + .../plugins/sfPropelPlugin/i18n/sf_admin.ja.xml | 294 + .../plugins/sfPropelPlugin/i18n/sf_admin.lt.xml | 134 + .../plugins/sfPropelPlugin/i18n/sf_admin.lv.xml | 134 + .../plugins/sfPropelPlugin/i18n/sf_admin.nl.xml | 130 + .../plugins/sfPropelPlugin/i18n/sf_admin.no.xml | 114 + .../plugins/sfPropelPlugin/i18n/sf_admin.pl.xml | 174 + .../plugins/sfPropelPlugin/i18n/sf_admin.pt.xml | 135 + .../plugins/sfPropelPlugin/i18n/sf_admin.pt_BR.xml | 138 + .../plugins/sfPropelPlugin/i18n/sf_admin.ro.xml | 137 + .../plugins/sfPropelPlugin/i18n/sf_admin.ru.xml | 174 + .../plugins/sfPropelPlugin/i18n/sf_admin.sk.xml | 134 + .../plugins/sfPropelPlugin/i18n/sf_admin.sl.xml | 158 + .../plugins/sfPropelPlugin/i18n/sf_admin.sv.xml | 146 + .../plugins/sfPropelPlugin/i18n/sf_admin.tr.xml | 174 + .../plugins/sfPropelPlugin/i18n/sf_admin.uk.xml | 174 + .../plugins/sfPropelPlugin/i18n/sf_admin.zh_CN.xml | 135 + .../plugins/sfPropelPlugin/i18n/sf_admin.zh_TW.xml | 151 + .../plugins/sfPropelPlugin/lib/.svn/all-wcprops | 5 + .../lib/plugins/sfPropelPlugin/lib/.svn/entries | 70 + .../sfPropelPlugin/lib/addon/.svn/all-wcprops | 47 + .../plugins/sfPropelPlugin/lib/addon/.svn/entries | 266 + .../.svn/prop-base/sfMixer.class.php.svn-base | 13 + .../.svn/prop-base/sfPropel.class.php.svn-base | 13 + .../prop-base/sfPropelBehavior.class.php.svn-base | 13 + .../.svn/prop-base/sfPropelData.class.php.svn-base | 13 + .../sfPropelDatabaseSchema.class.php.svn-base | 9 + .../sfPropelManyToMany.class.php.svn-base | 13 + .../prop-base/sfPropelPager.class.php.svn-base | 9 + .../.svn/text-base/sfMixer.class.php.svn-base | 194 + .../.svn/text-base/sfPropel.class.php.svn-base | 102 + .../text-base/sfPropelBehavior.class.php.svn-base | 108 + .../.svn/text-base/sfPropelData.class.php.svn-base | 530 + .../sfPropelDatabaseSchema.class.php.svn-base | 1306 + .../sfPropelManyToMany.class.php.svn-base | 145 + .../text-base/sfPropelPager.class.php.svn-base | 189 + .../sfPropelPlugin/lib/addon/sfMixer.class.php | 194 + .../sfPropelPlugin/lib/addon/sfPropel.class.php | 102 + .../lib/addon/sfPropelBehavior.class.php | 108 + .../lib/addon/sfPropelData.class.php | 530 + .../lib/addon/sfPropelDatabaseSchema.class.php | 1306 + .../lib/addon/sfPropelManyToMany.class.php | 145 + .../lib/addon/sfPropelPager.class.php | 189 + .../sfPropelPlugin/lib/behavior/.svn/all-wcprops | 41 + .../sfPropelPlugin/lib/behavior/.svn/entries | 232 + .../prop-base/SfPropelBehaviorBase.php.svn-base | 9 + .../prop-base/SfPropelBehaviorI18n.php.svn-base | 9 + .../SfPropelBehaviorI18nTranslation.php.svn-base | 9 + .../prop-base/SfPropelBehaviorSymfony.php.svn-base | 9 + .../SfPropelBehaviorSymfonyBehaviors.php.svn-base | 9 + .../SfPropelBehaviorTimestampable.php.svn-base | 9 + .../text-base/SfPropelBehaviorBase.php.svn-base | 53 + .../text-base/SfPropelBehaviorI18n.php.svn-base | 389 + .../SfPropelBehaviorI18nTranslation.php.svn-base | 91 + .../text-base/SfPropelBehaviorSymfony.php.svn-base | 138 + .../SfPropelBehaviorSymfonyBehaviors.php.svn-base | 342 + .../SfPropelBehaviorTimestampable.php.svn-base | 63 + .../lib/behavior/SfPropelBehaviorBase.php | 53 + .../lib/behavior/SfPropelBehaviorI18n.php | 389 + .../behavior/SfPropelBehaviorI18nTranslation.php | 91 + .../lib/behavior/SfPropelBehaviorSymfony.php | 138 + .../behavior/SfPropelBehaviorSymfonyBehaviors.php | 342 + .../lib/behavior/SfPropelBehaviorTimestampable.php | 63 + .../sfPropelPlugin/lib/database/.svn/all-wcprops | 11 + .../sfPropelPlugin/lib/database/.svn/entries | 62 + .../prop-base/sfPropelDatabase.class.php.svn-base | 13 + .../text-base/sfPropelDatabase.class.php.svn-base | 189 + .../lib/database/sfPropelDatabase.class.php | 189 + .../sfPropelPlugin/lib/debug/.svn/all-wcprops | 11 + .../plugins/sfPropelPlugin/lib/debug/.svn/entries | 62 + .../sfWebDebugPanelPropel.class.php.svn-base | 13 + .../sfWebDebugPanelPropel.class.php.svn-base | 146 + .../lib/debug/sfWebDebugPanelPropel.class.php | 146 + .../sfPropelPlugin/lib/form/.svn/all-wcprops | 17 + .../plugins/sfPropelPlugin/lib/form/.svn/entries | 96 + .../sfFormFilterPropel.class.php.svn-base | 13 + .../.svn/prop-base/sfFormPropel.class.php.svn-base | 13 + .../sfFormFilterPropel.class.php.svn-base | 268 + .../.svn/text-base/sfFormPropel.class.php.svn-base | 311 + .../lib/form/sfFormFilterPropel.class.php | 268 + .../sfPropelPlugin/lib/form/sfFormPropel.class.php | 311 + .../sfPropelPlugin/lib/generator/.svn/all-wcprops | 23 + .../sfPropelPlugin/lib/generator/.svn/entries | 130 + .../sfPropelFormFilterGenerator.class.php.svn-base | 13 + .../sfPropelFormGenerator.class.php.svn-base | 13 + .../prop-base/sfPropelGenerator.class.php.svn-base | 13 + .../sfPropelFormFilterGenerator.class.php.svn-base | 302 + .../sfPropelFormGenerator.class.php.svn-base | 523 + .../text-base/sfPropelGenerator.class.php.svn-base | 337 + .../sfPropelFormFilterGenerator.class.php | 302 + .../lib/generator/sfPropelFormGenerator.class.php | 523 + .../lib/generator/sfPropelGenerator.class.php | 337 + .../sfPropelPlugin/lib/log/.svn/all-wcprops | 11 + .../plugins/sfPropelPlugin/lib/log/.svn/entries | 62 + .../prop-base/sfPropelLogger.class.php.svn-base | 9 + .../text-base/sfPropelLogger.class.php.svn-base | 121 + .../lib/log/sfPropelLogger.class.php | 121 + .../sfPropelPlugin/lib/mailer/.svn/all-wcprops | 11 + .../plugins/sfPropelPlugin/lib/mailer/.svn/entries | 62 + .../prop-base/Swift_PropelSpool.class.php.svn-base | 9 + .../text-base/Swift_PropelSpool.class.php.svn-base | 145 + .../lib/mailer/Swift_PropelSpool.class.php | 145 + .../sfPropelPlugin/lib/routing/.svn/all-wcprops | 17 + .../sfPropelPlugin/lib/routing/.svn/entries | 96 + .../prop-base/sfPropelRoute.class.php.svn-base | 13 + .../sfPropelRouteCollection.class.php.svn-base | 13 + .../text-base/sfPropelRoute.class.php.svn-base | 126 + .../sfPropelRouteCollection.class.php.svn-base | 23 + .../lib/routing/sfPropelRoute.class.php | 126 + .../lib/routing/sfPropelRouteCollection.class.php | 23 + .../sfPropelPlugin/lib/task/.svn/all-wcprops | 131 + .../plugins/sfPropelPlugin/lib/task/.svn/entries | 745 + .../task/.svn/prop-base/sfPhing.class.php.svn-base | 13 + .../.svn/prop-base/sfPhingListener.php.svn-base | 13 + .../prop-base/sfPropelBaseTask.class.php.svn-base | 13 + .../sfPropelBuildAllLoadTask.class.php.svn-base | 13 + .../sfPropelBuildAllTask.class.php.svn-base | 13 + .../sfPropelBuildFiltersTask.class.php.svn-base | 13 + .../sfPropelBuildFormsTask.class.php.svn-base | 13 + .../sfPropelBuildModelTask.class.php.svn-base | 13 + .../sfPropelBuildSchemaTask.class.php.svn-base | 13 + .../sfPropelBuildSqlTask.class.php.svn-base | 13 + .../prop-base/sfPropelBuildTask.class.php.svn-base | 9 + ...fPropelConfigureDatabaseTask.class.php.svn-base | 13 + .../sfPropelDataDumpTask.class.php.svn-base | 17 + .../sfPropelDataLoadTask.class.php.svn-base | 17 + .../sfPropelGenerateAdminTask.class.php.svn-base | 13 + ...elGenerateModuleForRouteTask.class.php.svn-base | 13 + .../sfPropelGenerateModuleTask.class.php.svn-base | 13 + .../sfPropelGraphvizTask.class.php.svn-base | 9 + .../sfPropelInsertSqlTask.class.php.svn-base | 13 + .../sfPropelSchemaToXmlTask.class.php.svn-base | 13 + .../sfPropelSchemaToYmlTask.class.php.svn-base | 13 + .../task/.svn/text-base/sfPhing.class.php.svn-base | 40 + .../.svn/text-base/sfPhingListener.php.svn-base | 115 + .../text-base/sfPropelBaseTask.class.php.svn-base | 357 + .../sfPropelBuildAllLoadTask.class.php.svn-base | 95 + .../sfPropelBuildAllTask.class.php.svn-base | 152 + .../sfPropelBuildFiltersTask.class.php.svn-base | 87 + .../sfPropelBuildFormsTask.class.php.svn-base | 95 + .../sfPropelBuildModelTask.class.php.svn-base | 68 + .../sfPropelBuildSchemaTask.class.php.svn-base | 114 + .../sfPropelBuildSqlTask.class.php.svn-base | 59 + .../text-base/sfPropelBuildTask.class.php.svn-base | 257 + ...fPropelConfigureDatabaseTask.class.php.svn-base | 118 + .../sfPropelDataDumpTask.class.php.svn-base | 105 + .../sfPropelDataLoadTask.class.php.svn-base | 105 + .../sfPropelGenerateAdminTask.class.php.svn-base | 234 + ...elGenerateModuleForRouteTask.class.php.svn-base | 98 + .../sfPropelGenerateModuleTask.class.php.svn-base | 226 + .../sfPropelGraphvizTask.class.php.svn-base | 55 + .../sfPropelInsertSqlTask.class.php.svn-base | 146 + .../sfPropelSchemaToXmlTask.class.php.svn-base | 46 + .../sfPropelSchemaToYmlTask.class.php.svn-base | 46 + .../sfPropelPlugin/lib/task/phing/.svn/all-wcprops | 11 + .../sfPropelPlugin/lib/task/phing/.svn/entries | 68 + .../text-base/phing_default_overrides.svn-base | 1 + .../lib/task/phing/phing_default_overrides | 1 + .../lib/task/phing/tasks/.svn/all-wcprops | 11 + .../lib/task/phing/tasks/.svn/entries | 62 + .../.svn/text-base/defaults.properties.svn-base | 86 + .../lib/task/phing/tasks/defaults.properties | 86 + .../lib/task/phing/types/.svn/all-wcprops | 11 + .../lib/task/phing/types/.svn/entries | 62 + .../.svn/text-base/defaults.properties.svn-base | 13 + .../lib/task/phing/types/defaults.properties | 13 + .../sfPropelPlugin/lib/task/sfPhing.class.php | 40 + .../sfPropelPlugin/lib/task/sfPhingListener.php | 115 + .../lib/task/sfPropelBaseTask.class.php | 357 + .../lib/task/sfPropelBuildAllLoadTask.class.php | 95 + .../lib/task/sfPropelBuildAllTask.class.php | 152 + .../lib/task/sfPropelBuildFiltersTask.class.php | 87 + .../lib/task/sfPropelBuildFormsTask.class.php | 95 + .../lib/task/sfPropelBuildModelTask.class.php | 68 + .../lib/task/sfPropelBuildSchemaTask.class.php | 114 + .../lib/task/sfPropelBuildSqlTask.class.php | 59 + .../lib/task/sfPropelBuildTask.class.php | 257 + .../task/sfPropelConfigureDatabaseTask.class.php | 118 + .../lib/task/sfPropelDataDumpTask.class.php | 105 + .../lib/task/sfPropelDataLoadTask.class.php | 105 + .../lib/task/sfPropelGenerateAdminTask.class.php | 234 + .../sfPropelGenerateModuleForRouteTask.class.php | 98 + .../lib/task/sfPropelGenerateModuleTask.class.php | 226 + .../lib/task/sfPropelGraphvizTask.class.php | 55 + .../lib/task/sfPropelInsertSqlTask.class.php | 146 + .../lib/task/sfPropelSchemaToXmlTask.class.php | 46 + .../lib/task/sfPropelSchemaToYmlTask.class.php | 46 + .../sfPropelPlugin/lib/test/.svn/all-wcprops | 11 + .../plugins/sfPropelPlugin/lib/test/.svn/entries | 62 + .../prop-base/sfTesterPropel.class.php.svn-base | 13 + .../text-base/sfTesterPropel.class.php.svn-base | 94 + .../lib/test/sfTesterPropel.class.php | 94 + .../sfPropelPlugin/lib/validator/.svn/all-wcprops | 17 + .../sfPropelPlugin/lib/validator/.svn/entries | 96 + .../sfValidatorPropelChoice.class.php.svn-base | 13 + .../sfValidatorPropelUnique.class.php.svn-base | 13 + .../sfValidatorPropelChoice.class.php.svn-base | 131 + .../sfValidatorPropelUnique.class.php.svn-base | 176 + .../validator/sfValidatorPropelChoice.class.php | 131 + .../validator/sfValidatorPropelUnique.class.php | 176 + .../sfPropelPlugin/lib/vendor/.svn/all-wcprops | 5 + .../sfPropelPlugin/lib/vendor/.svn/dir-prop-base | 8 + .../plugins/sfPropelPlugin/lib/vendor/.svn/entries | 28 + .../lib/vendor/phing/.svn/all-wcprops | 95 + .../sfPropelPlugin/lib/vendor/phing/.svn/entries | 568 + .../phing/.svn/prop-base/BuildEvent.php.svn-base | 5 + .../.svn/prop-base/BuildException.php.svn-base | 5 + .../.svn/prop-base/BuildListener.php.svn-base | 5 + .../phing/.svn/prop-base/BuildLogger.php.svn-base | 9 + .../prop-base/IntrospectionHelper.php.svn-base | 5 + .../vendor/phing/.svn/prop-base/Phing.php.svn-base | 5 + .../phing/.svn/prop-base/Project.php.svn-base | 5 + .../.svn/prop-base/ProjectComponent.php.svn-base | 5 + .../prop-base/RuntimeConfigurable.php.svn-base | 5 + .../phing/.svn/prop-base/Target.php.svn-base | 5 + .../vendor/phing/.svn/prop-base/Task.php.svn-base | 5 + .../phing/.svn/prop-base/TaskAdapter.php.svn-base | 5 + .../.svn/prop-base/TaskContainer.php.svn-base | 5 + .../.svn/prop-base/UnknownElement.php.svn-base | 5 + .../phing/.svn/text-base/BuildEvent.php.svn-base | 198 + .../.svn/text-base/BuildException.php.svn-base | 121 + .../.svn/text-base/BuildListener.php.svn-base | 91 + .../phing/.svn/text-base/BuildLogger.php.svn-base | 70 + .../text-base/ConfigurationException.php.svn-base | 83 + .../text-base/IntrospectionHelper.php.svn-base | 542 + .../vendor/phing/.svn/text-base/Phing.php.svn-base | 1335 + .../phing/.svn/text-base/Project.php.svn-base | 968 + .../.svn/text-base/ProjectComponent.php.svn-base | 70 + .../text-base/RuntimeConfigurable.php.svn-base | 118 + .../phing/.svn/text-base/Target.php.svn-base | 317 + .../vendor/phing/.svn/text-base/Task.php.svn-base | 265 + .../phing/.svn/text-base/TaskAdapter.php.svn-base | 84 + .../.svn/text-base/TaskContainer.php.svn-base | 42 + .../.svn/text-base/UnknownElement.php.svn-base | 215 + .../sfPropelPlugin/lib/vendor/phing/BuildEvent.php | 198 + .../lib/vendor/phing/BuildException.php | 121 + .../lib/vendor/phing/BuildListener.php | 91 + .../lib/vendor/phing/BuildLogger.php | 70 + .../lib/vendor/phing/ConfigurationException.php | 83 + .../lib/vendor/phing/IntrospectionHelper.php | 542 + .../sfPropelPlugin/lib/vendor/phing/Phing.php | 1335 + .../sfPropelPlugin/lib/vendor/phing/Project.php | 968 + .../lib/vendor/phing/ProjectComponent.php | 70 + .../lib/vendor/phing/RuntimeConfigurable.php | 118 + .../sfPropelPlugin/lib/vendor/phing/Target.php | 317 + .../sfPropelPlugin/lib/vendor/phing/Task.php | 265 + .../lib/vendor/phing/TaskAdapter.php | 84 + .../lib/vendor/phing/TaskContainer.php | 42 + .../lib/vendor/phing/UnknownElement.php | 215 + .../lib/vendor/phing/filters/.svn/all-wcprops | 125 + .../lib/vendor/phing/filters/.svn/entries | 711 + .../.svn/prop-base/BaseFilterReader.php.svn-base | 5 + .../prop-base/BaseParamFilterReader.php.svn-base | 5 + .../.svn/prop-base/ChainableReader.php.svn-base | 5 + .../.svn/prop-base/ExpandProperties.php.svn-base | 5 + .../filters/.svn/prop-base/HeadFilter.php.svn-base | 5 + .../.svn/prop-base/LineContains.php.svn-base | 5 + .../.svn/prop-base/LineContainsRegexp.php.svn-base | 5 + .../.svn/prop-base/PrefixLines.php.svn-base | 5 + .../.svn/prop-base/ReplaceRegexp.php.svn-base | 5 + .../.svn/prop-base/ReplaceTokens.php.svn-base | 5 + .../.svn/prop-base/StripLineBreaks.php.svn-base | 5 + .../.svn/prop-base/StripLineComments.php.svn-base | 5 + .../.svn/prop-base/StripPhpComments.php.svn-base | 5 + .../.svn/prop-base/TabToSpaces.php.svn-base | 5 + .../filters/.svn/prop-base/TailFilter.php.svn-base | 5 + .../filters/.svn/prop-base/TidyFilter.php.svn-base | 5 + .../.svn/prop-base/TranslateGettext.php.svn-base | 5 + .../filters/.svn/prop-base/XsltFilter.php.svn-base | 5 + .../.svn/text-base/BaseFilterReader.php.svn-base | 157 + .../text-base/BaseParamFilterReader.php.svn-base | 69 + .../.svn/text-base/ChainableReader.php.svn-base | 42 + .../.svn/text-base/ExpandProperties.php.svn-base | 82 + .../filters/.svn/text-base/HeadFilter.php.svn-base | 161 + .../.svn/text-base/LineContains.php.svn-base | 258 + .../.svn/text-base/LineContainsRegexp.php.svn-base | 179 + .../.svn/text-base/PrefixLines.php.svn-base | 142 + .../.svn/text-base/ReplaceRegexp.php.svn-base | 129 + .../.svn/text-base/ReplaceTokens.php.svn-base | 415 + .../.svn/text-base/StripLineBreaks.php.svn-base | 148 + .../.svn/text-base/StripLineComments.php.svn-base | 205 + .../.svn/text-base/StripPhpComments.php.svn-base | 188 + .../.svn/text-base/StripWhitespace.php.svn-base | 95 + .../.svn/text-base/TabToSpaces.php.svn-base | 144 + .../filters/.svn/text-base/TailFilter.php.svn-base | 157 + .../filters/.svn/text-base/TidyFilter.php.svn-base | 162 + .../.svn/text-base/TranslateGettext.php.svn-base | 285 + .../.svn/text-base/XincludeFilter.php.svn-base | 137 + .../filters/.svn/text-base/XsltFilter.php.svn-base | 341 + .../lib/vendor/phing/filters/BaseFilterReader.php | 157 + .../vendor/phing/filters/BaseParamFilterReader.php | 69 + .../lib/vendor/phing/filters/ChainableReader.php | 42 + .../lib/vendor/phing/filters/ExpandProperties.php | 82 + .../lib/vendor/phing/filters/HeadFilter.php | 161 + .../lib/vendor/phing/filters/LineContains.php | 258 + .../vendor/phing/filters/LineContainsRegexp.php | 179 + .../lib/vendor/phing/filters/PrefixLines.php | 142 + .../lib/vendor/phing/filters/ReplaceRegexp.php | 129 + .../lib/vendor/phing/filters/ReplaceTokens.php | 415 + .../lib/vendor/phing/filters/StripLineBreaks.php | 148 + .../lib/vendor/phing/filters/StripLineComments.php | 205 + .../lib/vendor/phing/filters/StripPhpComments.php | 188 + .../lib/vendor/phing/filters/StripWhitespace.php | 95 + .../lib/vendor/phing/filters/TabToSpaces.php | 144 + .../lib/vendor/phing/filters/TailFilter.php | 157 + .../lib/vendor/phing/filters/TidyFilter.php | 162 + .../lib/vendor/phing/filters/TranslateGettext.php | 285 + .../lib/vendor/phing/filters/XincludeFilter.php | 137 + .../lib/vendor/phing/filters/XsltFilter.php | 341 + .../lib/vendor/phing/filters/util/.svn/all-wcprops | 17 + .../lib/vendor/phing/filters/util/.svn/entries | 96 + .../.svn/prop-base/ChainReaderHelper.php.svn-base | 5 + .../.svn/prop-base/IniFileTokenReader.php.svn-base | 5 + .../.svn/text-base/ChainReaderHelper.php.svn-base | 183 + .../.svn/text-base/IniFileTokenReader.php.svn-base | 97 + .../phing/filters/util/ChainReaderHelper.php | 183 + .../phing/filters/util/IniFileTokenReader.php | 97 + .../lib/vendor/phing/input/.svn/all-wcprops | 41 + .../lib/vendor/phing/input/.svn/entries | 232 + .../prop-base/DefaultInputHandler.php.svn-base | 5 + .../input/.svn/prop-base/InputHandler.php.svn-base | 5 + .../input/.svn/prop-base/InputRequest.php.svn-base | 5 + .../MultipleChoiceInputRequest.php.svn-base | 5 + .../PropertyFileInputHandler.php.svn-base | 5 + .../.svn/prop-base/YesNoInputRequest.php.svn-base | 5 + .../text-base/DefaultInputHandler.php.svn-base | 81 + .../input/.svn/text-base/InputHandler.php.svn-base | 45 + .../input/.svn/text-base/InputRequest.php.svn-base | 107 + .../MultipleChoiceInputRequest.php.svn-base | 58 + .../PropertyFileInputHandler.php.svn-base | 129 + .../.svn/text-base/YesNoInputRequest.php.svn-base | 47 + .../lib/vendor/phing/input/DefaultInputHandler.php | 81 + .../lib/vendor/phing/input/InputHandler.php | 45 + .../lib/vendor/phing/input/InputRequest.php | 107 + .../phing/input/MultipleChoiceInputRequest.php | 58 + .../phing/input/PropertyFileInputHandler.php | 129 + .../lib/vendor/phing/input/YesNoInputRequest.php | 47 + .../lib/vendor/phing/lib/.svn/all-wcprops | 17 + .../lib/vendor/phing/lib/.svn/entries | 96 + .../phing/lib/.svn/prop-base/Capsule.php.svn-base | 5 + .../phing/lib/.svn/prop-base/Zip.php.svn-base | 9 + .../phing/lib/.svn/text-base/Capsule.php.svn-base | 266 + .../phing/lib/.svn/text-base/Zip.php.svn-base | 3590 + .../lib/vendor/phing/lib/Capsule.php | 266 + .../sfPropelPlugin/lib/vendor/phing/lib/Zip.php | 3590 + .../lib/vendor/phing/listener/.svn/all-wcprops | 47 + .../lib/vendor/phing/listener/.svn/entries | 266 + .../.svn/prop-base/AnsiColorLogger.php.svn-base | 5 + .../.svn/prop-base/DefaultLogger.php.svn-base | 5 + .../.svn/prop-base/NoBannerLogger.php.svn-base | 5 + .../.svn/prop-base/PearLogListener.php.svn-base | 5 + .../listener/.svn/prop-base/XmlLogger.php.svn-base | 9 + .../.svn/prop-base/defaults.properties.svn-base | 5 + .../.svn/text-base/AnsiColorLogger.php.svn-base | 234 + .../.svn/text-base/DefaultLogger.php.svn-base | 278 + .../.svn/text-base/NoBannerLogger.php.svn-base | 59 + .../.svn/text-base/PearLogListener.php.svn-base | 197 + .../StreamRequiredBuildLogger.php.svn-base | 39 + .../listener/.svn/text-base/XmlLogger.php.svn-base | 345 + .../.svn/text-base/defaults.properties.svn-base | 43 + .../lib/vendor/phing/listener/AnsiColorLogger.php | 234 + .../lib/vendor/phing/listener/DefaultLogger.php | 278 + .../lib/vendor/phing/listener/NoBannerLogger.php | 59 + .../lib/vendor/phing/listener/PearLogListener.php | 197 + .../phing/listener/StreamRequiredBuildLogger.php | 39 + .../lib/vendor/phing/listener/XmlLogger.php | 345 + .../lib/vendor/phing/listener/defaults.properties | 43 + .../lib/vendor/phing/mappers/.svn/all-wcprops | 41 + .../lib/vendor/phing/mappers/.svn/entries | 232 + .../.svn/prop-base/FileNameMapper.php.svn-base | 5 + .../.svn/prop-base/FlattenMapper.php.svn-base | 5 + .../mappers/.svn/prop-base/GlobMapper.php.svn-base | 5 + .../.svn/prop-base/IdentityMapper.php.svn-base | 5 + .../.svn/prop-base/MergeMapper.php.svn-base | 5 + .../.svn/prop-base/RegexpMapper.php.svn-base | 5 + .../.svn/text-base/FileNameMapper.php.svn-base | 59 + .../.svn/text-base/FlattenMapper.php.svn-base | 55 + .../mappers/.svn/text-base/GlobMapper.php.svn-base | 113 + .../.svn/text-base/IdentityMapper.php.svn-base | 54 + .../.svn/text-base/MergeMapper.php.svn-base | 69 + .../.svn/text-base/RegexpMapper.php.svn-base | 97 + .../lib/vendor/phing/mappers/FileNameMapper.php | 59 + .../lib/vendor/phing/mappers/FlattenMapper.php | 55 + .../lib/vendor/phing/mappers/GlobMapper.php | 113 + .../lib/vendor/phing/mappers/IdentityMapper.php | 54 + .../lib/vendor/phing/mappers/MergeMapper.php | 69 + .../lib/vendor/phing/mappers/RegexpMapper.php | 97 + .../lib/vendor/phing/parser/.svn/all-wcprops | 77 + .../lib/vendor/phing/parser/.svn/entries | 436 + .../.svn/prop-base/AbstractHandler.php.svn-base | 5 + .../.svn/prop-base/AbstractSAXParser.php.svn-base | 5 + .../.svn/prop-base/DataTypeHandler.php.svn-base | 5 + .../prop-base/ExpatParseException.php.svn-base | 5 + .../parser/.svn/prop-base/ExpatParser.php.svn-base | 5 + .../parser/.svn/prop-base/Location.php.svn-base | 5 + .../prop-base/NestedElementHandler.php.svn-base | 5 + .../prop-base/ProjectConfigurator.php.svn-base | 5 + .../.svn/prop-base/ProjectHandler.php.svn-base | 5 + .../parser/.svn/prop-base/RootHandler.php.svn-base | 5 + .../.svn/prop-base/TargetHandler.php.svn-base | 5 + .../parser/.svn/prop-base/TaskHandler.php.svn-base | 5 + .../.svn/text-base/AbstractHandler.php.svn-base | 98 + .../.svn/text-base/AbstractSAXParser.php.svn-base | 116 + .../.svn/text-base/DataTypeHandler.php.svn-base | 144 + .../text-base/ExpatParseException.php.svn-base | 31 + .../parser/.svn/text-base/ExpatParser.php.svn-base | 140 + .../parser/.svn/text-base/Location.php.svn-base | 72 + .../text-base/NestedElementHandler.php.svn-base | 186 + .../text-base/ProjectConfigurator.php.svn-base | 245 + .../.svn/text-base/ProjectHandler.php.svn-base | 153 + .../parser/.svn/text-base/RootHandler.php.svn-base | 82 + .../.svn/text-base/TargetHandler.php.svn-base | 149 + .../parser/.svn/text-base/TaskHandler.php.svn-base | 234 + .../lib/vendor/phing/parser/AbstractHandler.php | 98 + .../lib/vendor/phing/parser/AbstractSAXParser.php | 116 + .../lib/vendor/phing/parser/DataTypeHandler.php | 144 + .../vendor/phing/parser/ExpatParseException.php | 31 + .../lib/vendor/phing/parser/ExpatParser.php | 140 + .../lib/vendor/phing/parser/Location.php | 72 + .../vendor/phing/parser/NestedElementHandler.php | 186 + .../vendor/phing/parser/ProjectConfigurator.php | 245 + .../lib/vendor/phing/parser/ProjectHandler.php | 153 + .../lib/vendor/phing/parser/RootHandler.php | 82 + .../lib/vendor/phing/parser/TargetHandler.php | 149 + .../lib/vendor/phing/parser/TaskHandler.php | 234 + .../lib/vendor/phing/system/.svn/all-wcprops | 5 + .../lib/vendor/phing/system/.svn/entries | 37 + .../lib/vendor/phing/system/io/.svn/all-wcprops | 131 + .../lib/vendor/phing/system/io/.svn/entries | 742 + .../io/.svn/prop-base/BufferedReader.php.svn-base | 5 + .../io/.svn/prop-base/BufferedWriter.php.svn-base | 5 + .../io/.svn/prop-base/ConsoleReader.php.svn-base | 5 + .../io/.svn/prop-base/FileReader.php.svn-base | 5 + .../io/.svn/prop-base/FileSystem.php.svn-base | 5 + .../io/.svn/prop-base/FileWriter.php.svn-base | 5 + .../io/.svn/prop-base/FilterReader.php.svn-base | 5 + .../io/.svn/prop-base/IOException.php.svn-base | 5 + .../io/.svn/prop-base/PhingFile.php.svn-base | 5 + .../system/io/.svn/prop-base/Reader.php.svn-base | 5 + .../io/.svn/prop-base/StringReader.php.svn-base | 5 + .../io/.svn/prop-base/UnixFileSystem.php.svn-base | 5 + .../io/.svn/prop-base/Win32FileSystem.php.svn-base | 5 + .../io/.svn/prop-base/WinNTFileSystem.php.svn-base | 5 + .../system/io/.svn/prop-base/Writer.php.svn-base | 5 + .../io/.svn/text-base/BufferedReader.php.svn-base | 168 + .../io/.svn/text-base/BufferedWriter.php.svn-base | 71 + .../io/.svn/text-base/ConsoleReader.php.svn-base | 84 + .../io/.svn/text-base/FileInputStream.php.svn-base | 76 + .../.svn/text-base/FileOutputStream.php.svn-base | 71 + .../io/.svn/text-base/FileReader.php.svn-base | 41 + .../io/.svn/text-base/FileSystem.php.svn-base | 686 + .../io/.svn/text-base/FileWriter.php.svn-base | 42 + .../io/.svn/text-base/FilterReader.php.svn-base | 68 + .../io/.svn/text-base/IOException.php.svn-base | 27 + .../io/.svn/text-base/InputStream.php.svn-base | 178 + .../.svn/text-base/InputStreamReader.php.svn-base | 126 + .../io/.svn/text-base/OutputStream.php.svn-base | 108 + .../.svn/text-base/OutputStreamWriter.php.svn-base | 84 + .../io/.svn/text-base/PhingFile.php.svn-base | 882 + .../system/io/.svn/text-base/Reader.php.svn-base | 91 + .../io/.svn/text-base/StringReader.php.svn-base | 84 + .../io/.svn/text-base/UnixFileSystem.php.svn-base | 278 + .../io/.svn/text-base/Win32FileSystem.php.svn-base | 477 + .../io/.svn/text-base/WinNTFileSystem.php.svn-base | 35 + .../system/io/.svn/text-base/Writer.php.svn-base | 53 + .../lib/vendor/phing/system/io/BufferedReader.php | 168 + .../lib/vendor/phing/system/io/BufferedWriter.php | 71 + .../lib/vendor/phing/system/io/ConsoleReader.php | 84 + .../lib/vendor/phing/system/io/FileInputStream.php | 76 + .../vendor/phing/system/io/FileOutputStream.php | 71 + .../lib/vendor/phing/system/io/FileReader.php | 41 + .../lib/vendor/phing/system/io/FileSystem.php | 686 + .../lib/vendor/phing/system/io/FileWriter.php | 42 + .../lib/vendor/phing/system/io/FilterReader.php | 68 + .../lib/vendor/phing/system/io/IOException.php | 27 + .../lib/vendor/phing/system/io/InputStream.php | 178 + .../vendor/phing/system/io/InputStreamReader.php | 126 + .../lib/vendor/phing/system/io/OutputStream.php | 108 + .../vendor/phing/system/io/OutputStreamWriter.php | 84 + .../lib/vendor/phing/system/io/PhingFile.php | 882 + .../lib/vendor/phing/system/io/Reader.php | 91 + .../lib/vendor/phing/system/io/StringReader.php | 84 + .../lib/vendor/phing/system/io/UnixFileSystem.php | 278 + .../lib/vendor/phing/system/io/Win32FileSystem.php | 477 + .../lib/vendor/phing/system/io/WinNTFileSystem.php | 35 + .../lib/vendor/phing/system/io/Writer.php | 53 + .../lib/vendor/phing/system/lang/.svn/all-wcprops | 35 + .../lib/vendor/phing/system/lang/.svn/entries | 198 + .../lang/.svn/prop-base/Character.php.svn-base | 5 + .../lang/.svn/prop-base/EventObject.php.svn-base | 5 + .../prop-base/FileNotFoundException.php.svn-base | 5 + .../prop-base/NullPointerException.php.svn-base | 5 + .../.svn/prop-base/SecurityException.php.svn-base | 5 + .../lang/.svn/text-base/Character.php.svn-base | 49 + .../lang/.svn/text-base/EventObject.php.svn-base | 52 + .../text-base/FileNotFoundException.php.svn-base | 26 + .../text-base/NullPointerException.php.svn-base | 26 + .../.svn/text-base/SecurityException.php.svn-base | 26 + .../lib/vendor/phing/system/lang/Character.php | 49 + .../lib/vendor/phing/system/lang/EventObject.php | 52 + .../phing/system/lang/FileNotFoundException.php | 26 + .../phing/system/lang/NullPointerException.php | 26 + .../vendor/phing/system/lang/SecurityException.php | 26 + .../lib/vendor/phing/system/util/.svn/all-wcprops | 29 + .../lib/vendor/phing/system/util/.svn/entries | 164 + .../util/.svn/prop-base/Message.php.svn-base | 5 + .../util/.svn/prop-base/Properties.php.svn-base | 5 + .../util/.svn/prop-base/Register.php.svn-base | 5 + .../system/util/.svn/prop-base/Timer.php.svn-base | 5 + .../util/.svn/text-base/Message.php.svn-base | 9 + .../util/.svn/text-base/Properties.php.svn-base | 272 + .../util/.svn/text-base/Register.php.svn-base | 115 + .../system/util/.svn/text-base/Timer.php.svn-base | 96 + .../lib/vendor/phing/system/util/Message.php | 9 + .../lib/vendor/phing/system/util/Properties.php | 272 + .../lib/vendor/phing/system/util/Register.php | 115 + .../lib/vendor/phing/system/util/Timer.php | 96 + .../lib/vendor/phing/tasks/.svn/all-wcprops | 11 + .../lib/vendor/phing/tasks/.svn/entries | 68 + .../.svn/prop-base/defaults.properties.svn-base | 5 + .../.svn/text-base/defaults.properties.svn-base | 86 + .../lib/vendor/phing/tasks/defaults.properties | 86 + .../lib/vendor/phing/tasks/ext/.svn/all-wcprops | 119 + .../lib/vendor/phing/tasks/ext/.svn/entries | 704 + .../ext/.svn/prop-base/CapsuleTask.php.svn-base | 5 + .../.svn/prop-base/ExtractBaseTask.php.svn-base | 5 + .../ext/.svn/prop-base/FtpDeployTask.php.svn-base | 5 + .../tasks/ext/.svn/prop-base/MailTask.php.svn-base | 9 + .../ext/.svn/prop-base/ManifestTask.php.svn-base | 5 + .../.svn/prop-base/PackageAsPathTask.php.svn-base | 5 + .../.svn/prop-base/PearPackage2Task.php.svn-base | 5 + .../.svn/prop-base/PearPackageTask.php.svn-base | 5 + .../ext/.svn/prop-base/PhpLintTask.php.svn-base | 5 + .../ext/.svn/prop-base/ScpSendTask.php.svn-base | 5 + .../ext/.svn/prop-base/SmartyTask.php.svn-base | 5 + .../tasks/ext/.svn/prop-base/TarTask.php.svn-base | 5 + .../ext/.svn/prop-base/UntarTask.php.svn-base | 5 + .../ext/.svn/prop-base/UnzipTask.php.svn-base | 5 + .../ext/.svn/prop-base/XmlLintTask.php.svn-base | 5 + .../prop-base/ZendCodeAnalyzerTask.php.svn-base | 5 + .../tasks/ext/.svn/prop-base/ZipTask.php.svn-base | 9 + .../ext/.svn/text-base/CapsuleTask.php.svn-base | 478 + .../.svn/text-base/ExtractBaseTask.php.svn-base | 183 + .../ext/.svn/text-base/FtpDeployTask.php.svn-base | 176 + .../ext/.svn/text-base/JslLintTask.php.svn-base | 184 + .../tasks/ext/.svn/text-base/MailTask.php.svn-base | 77 + .../ext/.svn/text-base/ManifestTask.php.svn-base | 341 + .../.svn/text-base/PackageAsPathTask.php.svn-base | 65 + .../.svn/text-base/PearPackage2Task.php.svn-base | 270 + .../.svn/text-base/PearPackageTask.php.svn-base | 421 + .../.svn/text-base/PhpCodeSnifferTask.php.svn-base | 326 + .../ext/.svn/text-base/PhpLintTask.php.svn-base | 159 + .../ext/.svn/text-base/ScpSendTask.php.svn-base | 192 + .../ext/.svn/text-base/SmartyTask.php.svn-base | 610 + .../tasks/ext/.svn/text-base/TarTask.php.svn-base | 426 + .../ext/.svn/text-base/UntarTask.php.svn-base | 89 + .../ext/.svn/text-base/UnzipTask.php.svn-base | 68 + .../ext/.svn/text-base/XmlLintTask.php.svn-base | 135 + .../text-base/ZendCodeAnalyzerTask.php.svn-base | 182 + .../tasks/ext/.svn/text-base/ZipTask.php.svn-base | 265 + .../lib/vendor/phing/tasks/ext/CapsuleTask.php | 478 + .../lib/vendor/phing/tasks/ext/ExtractBaseTask.php | 183 + .../lib/vendor/phing/tasks/ext/FtpDeployTask.php | 176 + .../lib/vendor/phing/tasks/ext/JslLintTask.php | 184 + .../lib/vendor/phing/tasks/ext/MailTask.php | 77 + .../lib/vendor/phing/tasks/ext/ManifestTask.php | 341 + .../vendor/phing/tasks/ext/PackageAsPathTask.php | 65 + .../vendor/phing/tasks/ext/PearPackage2Task.php | 270 + .../lib/vendor/phing/tasks/ext/PearPackageTask.php | 421 + .../vendor/phing/tasks/ext/PhpCodeSnifferTask.php | 326 + .../lib/vendor/phing/tasks/ext/PhpLintTask.php | 159 + .../lib/vendor/phing/tasks/ext/ScpSendTask.php | 192 + .../lib/vendor/phing/tasks/ext/SmartyTask.php | 610 + .../lib/vendor/phing/tasks/ext/TarTask.php | 426 + .../lib/vendor/phing/tasks/ext/UntarTask.php | 89 + .../lib/vendor/phing/tasks/ext/UnzipTask.php | 68 + .../lib/vendor/phing/tasks/ext/XmlLintTask.php | 135 + .../phing/tasks/ext/ZendCodeAnalyzerTask.php | 182 + .../lib/vendor/phing/tasks/ext/ZipTask.php | 265 + .../phing/tasks/ext/coverage/.svn/all-wcprops | 35 + .../vendor/phing/tasks/ext/coverage/.svn/entries | 198 + .../.svn/prop-base/CoverageMerger.php.svn-base | 9 + .../.svn/prop-base/CoverageMergerTask.php.svn-base | 5 + .../.svn/prop-base/CoverageReportTask.php.svn-base | 9 + .../CoverageReportTransformer.php.svn-base | 9 + .../.svn/prop-base/CoverageSetupTask.php.svn-base | 9 + .../.svn/text-base/CoverageMerger.php.svn-base | 137 + .../.svn/text-base/CoverageMergerTask.php.svn-base | 92 + .../.svn/text-base/CoverageReportTask.php.svn-base | 414 + .../CoverageReportTransformer.php.svn-base | 120 + .../.svn/text-base/CoverageSetupTask.php.svn-base | 158 + .../phing/tasks/ext/coverage/CoverageMerger.php | 137 + .../tasks/ext/coverage/CoverageMergerTask.php | 92 + .../tasks/ext/coverage/CoverageReportTask.php | 414 + .../ext/coverage/CoverageReportTransformer.php | 120 + .../phing/tasks/ext/coverage/CoverageSetupTask.php | 158 + .../vendor/phing/tasks/ext/creole/.svn/all-wcprops | 17 + .../lib/vendor/phing/tasks/ext/creole/.svn/entries | 96 + .../.svn/prop-base/CreoleSQLExecTask.php.svn-base | 5 + .../creole/.svn/prop-base/CreoleTask.php.svn-base | 5 + .../.svn/text-base/CreoleSQLExecTask.php.svn-base | 590 + .../creole/.svn/text-base/CreoleTask.php.svn-base | 242 + .../phing/tasks/ext/creole/CreoleSQLExecTask.php | 590 + .../vendor/phing/tasks/ext/creole/CreoleTask.php | 242 + .../phing/tasks/ext/dbdeploy/.svn/all-wcprops | 41 + .../vendor/phing/tasks/ext/dbdeploy/.svn/entries | 232 + .../.svn/prop-base/DbDeployTask.php.svn-base | 5 + .../.svn/text-base/DbDeployTask.php.svn-base | 192 + .../.svn/text-base/DbmsSyntax.php.svn-base | 34 + .../.svn/text-base/DbmsSyntaxFactory.php.svn-base | 59 + .../.svn/text-base/DbmsSyntaxMsSql.php.svn-base | 37 + .../.svn/text-base/DbmsSyntaxMysql.php.svn-base | 37 + .../.svn/text-base/DbmsSyntaxSQLite.php.svn-base | 37 + .../phing/tasks/ext/dbdeploy/DbDeployTask.php | 192 + .../vendor/phing/tasks/ext/dbdeploy/DbmsSyntax.php | 34 + .../phing/tasks/ext/dbdeploy/DbmsSyntaxFactory.php | 59 + .../phing/tasks/ext/dbdeploy/DbmsSyntaxMsSql.php | 37 + .../phing/tasks/ext/dbdeploy/DbmsSyntaxMysql.php | 37 + .../phing/tasks/ext/dbdeploy/DbmsSyntaxSQLite.php | 37 + .../phing/tasks/ext/ioncube/.svn/all-wcprops | 23 + .../vendor/phing/tasks/ext/ioncube/.svn/entries | 130 + .../.svn/prop-base/IoncubeComment.php.svn-base | 9 + .../.svn/prop-base/IoncubeEncoderTask.php.svn-base | 9 + .../.svn/prop-base/IoncubeLicenseTask.php.svn-base | 9 + .../.svn/text-base/IoncubeComment.php.svn-base | 43 + .../.svn/text-base/IoncubeEncoderTask.php.svn-base | 487 + .../.svn/text-base/IoncubeLicenseTask.php.svn-base | 143 + .../phing/tasks/ext/ioncube/IoncubeComment.php | 43 + .../phing/tasks/ext/ioncube/IoncubeEncoderTask.php | 487 + .../phing/tasks/ext/ioncube/IoncubeLicenseTask.php | 143 + .../vendor/phing/tasks/ext/pdo/.svn/all-wcprops | 41 + .../lib/vendor/phing/tasks/ext/pdo/.svn/entries | 232 + .../.svn/text-base/PDOResultFormatter.php.svn-base | 84 + .../PDOSQLExecFormatterElement.php.svn-base | 312 + .../pdo/.svn/text-base/PDOSQLExecTask.php.svn-base | 614 + .../ext/pdo/.svn/text-base/PDOTask.php.svn-base | 217 + .../text-base/PlainPDOResultFormatter.php.svn-base | 130 + .../text-base/XMLPDOResultFormatter.php.svn-base | 141 + .../phing/tasks/ext/pdo/PDOResultFormatter.php | 84 + .../tasks/ext/pdo/PDOSQLExecFormatterElement.php | 312 + .../vendor/phing/tasks/ext/pdo/PDOSQLExecTask.php | 614 + .../lib/vendor/phing/tasks/ext/pdo/PDOTask.php | 217 + .../tasks/ext/pdo/PlainPDOResultFormatter.php | 130 + .../phing/tasks/ext/pdo/XMLPDOResultFormatter.php | 141 + .../phing/tasks/ext/pearpackage/.svn/all-wcprops | 11 + .../phing/tasks/ext/pearpackage/.svn/entries | 62 + .../.svn/prop-base/Fileset.php.svn-base | 5 + .../.svn/text-base/Fileset.php.svn-base | 231 + .../vendor/phing/tasks/ext/pearpackage/Fileset.php | 231 + .../vendor/phing/tasks/ext/phpdoc/.svn/all-wcprops | 23 + .../lib/vendor/phing/tasks/ext/phpdoc/.svn/entries | 130 + .../prop-base/PhingPhpDocumentorSetup.php.svn-base | 5 + .../PhpDocumentorExternalTask.php.svn-base | 9 + .../.svn/prop-base/PhpDocumentorTask.php.svn-base | 5 + .../text-base/PhingPhpDocumentorSetup.php.svn-base | 210 + .../PhpDocumentorExternalTask.php.svn-base | 261 + .../.svn/text-base/PhpDocumentorTask.php.svn-base | 460 + .../tasks/ext/phpdoc/PhingPhpDocumentorSetup.php | 210 + .../tasks/ext/phpdoc/PhpDocumentorExternalTask.php | 261 + .../phing/tasks/ext/phpdoc/PhpDocumentorTask.php | 460 + .../phing/tasks/ext/phpunit/.svn/all-wcprops | 41 + .../vendor/phing/tasks/ext/phpunit/.svn/entries | 238 + .../phpunit/.svn/prop-base/BatchTest.php.svn-base | 9 + .../.svn/prop-base/FormatterElement.php.svn-base | 9 + .../.svn/prop-base/PHPUnitReportTask.php.svn-base | 9 + .../.svn/prop-base/PHPUnitTask.php.svn-base | 9 + .../.svn/prop-base/PHPUnitTestRunner.php.svn-base | 9 + .../.svn/prop-base/PHPUnitUtil.php.svn-base | 9 + .../phpunit/.svn/text-base/BatchTest.php.svn-base | 182 + .../.svn/text-base/FormatterElement.php.svn-base | 150 + .../.svn/text-base/PHPUnitReportTask.php.svn-base | 186 + .../.svn/text-base/PHPUnitTask.php.svn-base | 390 + .../.svn/text-base/PHPUnitTestRunner.php.svn-base | 140 + .../.svn/text-base/PHPUnitUtil.php.svn-base | 131 + .../vendor/phing/tasks/ext/phpunit/BatchTest.php | 182 + .../phing/tasks/ext/phpunit/FormatterElement.php | 150 + .../phing/tasks/ext/phpunit/PHPUnitReportTask.php | 186 + .../vendor/phing/tasks/ext/phpunit/PHPUnitTask.php | 390 + .../phing/tasks/ext/phpunit/PHPUnitTestRunner.php | 140 + .../vendor/phing/tasks/ext/phpunit/PHPUnitUtil.php | 131 + .../tasks/ext/phpunit/phpunit2/.svn/all-wcprops | 29 + .../phing/tasks/ext/phpunit/phpunit2/.svn/entries | 164 + .../prop-base/PHPUnit2ResultFormatter.php.svn-base | 9 + .../PlainPHPUnit2ResultFormatter.php.svn-base | 9 + .../SummaryPHPUnit2ResultFormatter.php.svn-base | 9 + .../XMLPHPUnit2ResultFormatter.php.svn-base | 9 + .../text-base/PHPUnit2ResultFormatter.php.svn-base | 157 + .../PlainPHPUnit2ResultFormatter.php.svn-base | 116 + .../SummaryPHPUnit2ResultFormatter.php.svn-base | 57 + .../XMLPHPUnit2ResultFormatter.php.svn-base | 116 + .../phpunit/phpunit2/PHPUnit2ResultFormatter.php | 157 + .../phpunit2/PlainPHPUnit2ResultFormatter.php | 116 + .../phpunit2/SummaryPHPUnit2ResultFormatter.php | 57 + .../phpunit2/XMLPHPUnit2ResultFormatter.php | 116 + .../tasks/ext/phpunit/phpunit3/.svn/all-wcprops | 29 + .../phing/tasks/ext/phpunit/phpunit3/.svn/entries | 164 + .../text-base/PHPUnit3ResultFormatter.php.svn-base | 200 + .../PlainPHPUnit3ResultFormatter.php.svn-base | 123 + .../SummaryPHPUnit3ResultFormatter.php.svn-base | 58 + .../XMLPHPUnit3ResultFormatter.php.svn-base | 116 + .../phpunit/phpunit3/PHPUnit3ResultFormatter.php | 200 + .../phpunit3/PlainPHPUnit3ResultFormatter.php | 123 + .../phpunit3/SummaryPHPUnit3ResultFormatter.php | 58 + .../phpunit3/XMLPHPUnit3ResultFormatter.php | 116 + .../phing/tasks/ext/simpletest/.svn/all-wcprops | 41 + .../vendor/phing/tasks/ext/simpletest/.svn/entries | 232 + .../SimpleTestCountResultFormatter.php.svn-base | 5 + .../SimpleTestFormatterElement.php.svn-base | 5 + .../SimpleTestPlainResultFormatter.php.svn-base | 5 + .../SimpleTestResultFormatter.php.svn-base | 5 + .../SimpleTestSummaryResultFormatter.php.svn-base | 5 + .../.svn/prop-base/SimpleTestTask.php.svn-base | 5 + .../SimpleTestCountResultFormatter.php.svn-base | 51 + .../SimpleTestFormatterElement.php.svn-base | 61 + .../SimpleTestPlainResultFormatter.php.svn-base | 94 + .../SimpleTestResultFormatter.php.svn-base | 161 + .../SimpleTestSummaryResultFormatter.php.svn-base | 53 + .../.svn/text-base/SimpleTestTask.php.svn-base | 237 + .../simpletest/SimpleTestCountResultFormatter.php | 51 + .../ext/simpletest/SimpleTestFormatterElement.php | 61 + .../simpletest/SimpleTestPlainResultFormatter.php | 94 + .../ext/simpletest/SimpleTestResultFormatter.php | 161 + .../SimpleTestSummaryResultFormatter.php | 53 + .../phing/tasks/ext/simpletest/SimpleTestTask.php | 237 + .../vendor/phing/tasks/ext/svn/.svn/all-wcprops | 35 + .../lib/vendor/phing/tasks/ext/svn/.svn/entries | 198 + .../svn/.svn/prop-base/SvnBaseTask.php.svn-base | 9 + .../.svn/prop-base/SvnCheckoutTask.php.svn-base | 5 + .../svn/.svn/prop-base/SvnExportTask.php.svn-base | 9 + .../prop-base/SvnLastRevisionTask.php.svn-base | 9 + .../svn/.svn/prop-base/SvnUpdateTask.php.svn-base | 5 + .../svn/.svn/text-base/SvnBaseTask.php.svn-base | 321 + .../.svn/text-base/SvnCheckoutTask.php.svn-base | 49 + .../svn/.svn/text-base/SvnExportTask.php.svn-base | 70 + .../text-base/SvnLastRevisionTask.php.svn-base | 74 + .../svn/.svn/text-base/SvnUpdateTask.php.svn-base | 49 + .../lib/vendor/phing/tasks/ext/svn/SvnBaseTask.php | 321 + .../vendor/phing/tasks/ext/svn/SvnCheckoutTask.php | 49 + .../vendor/phing/tasks/ext/svn/SvnExportTask.php | 70 + .../phing/tasks/ext/svn/SvnLastRevisionTask.php | 74 + .../vendor/phing/tasks/ext/svn/SvnUpdateTask.php | 49 + .../lib/vendor/phing/tasks/system/.svn/all-wcprops | 227 + .../lib/vendor/phing/tasks/system/.svn/entries | 1289 + .../system/.svn/prop-base/AdhocTask.php.svn-base | 5 + .../.svn/prop-base/AdhocTaskdefTask.php.svn-base | 5 + .../.svn/prop-base/AdhocTypedefTask.php.svn-base | 5 + .../system/.svn/prop-base/AppendTask.php.svn-base | 5 + .../.svn/prop-base/AvailableTask.php.svn-base | 5 + .../system/.svn/prop-base/ChmodTask.php.svn-base | 5 + .../system/.svn/prop-base/ChownTask.php.svn-base | 5 + .../.svn/prop-base/ConditionTask.php.svn-base | 5 + .../system/.svn/prop-base/CopyTask.php.svn-base | 5 + .../system/.svn/prop-base/CvsPassTask.php.svn-base | 5 + .../system/.svn/prop-base/CvsTask.php.svn-base | 5 + .../system/.svn/prop-base/DeleteTask.php.svn-base | 5 + .../system/.svn/prop-base/EchoTask.php.svn-base | 5 + .../system/.svn/prop-base/ExecTask.php.svn-base | 5 + .../system/.svn/prop-base/ExitTask.php.svn-base | 5 + .../system/.svn/prop-base/ForeachTask.php.svn-base | 5 + .../system/.svn/prop-base/IfTask.php.svn-base | 5 + .../.svn/prop-base/IncludePathTask.php.svn-base | 5 + .../system/.svn/prop-base/InputTask.php.svn-base | 5 + .../.svn/prop-base/MatchingTask.php.svn-base | 5 + .../system/.svn/prop-base/MkdirTask.php.svn-base | 5 + .../system/.svn/prop-base/MoveTask.php.svn-base | 5 + .../.svn/prop-base/PhingCallTask.php.svn-base | 5 + .../system/.svn/prop-base/PhingTask.php.svn-base | 5 + .../system/.svn/prop-base/PhpEvalTask.php.svn-base | 5 + .../.svn/prop-base/PropertyPromptTask.php.svn-base | 5 + .../.svn/prop-base/PropertyTask.php.svn-base | 5 + .../.svn/prop-base/ReflexiveTask.php.svn-base | 5 + .../.svn/prop-base/ResolvePathTask.php.svn-base | 5 + .../.svn/prop-base/SequentialTask.php.svn-base | 5 + .../system/.svn/prop-base/TaskdefTask.php.svn-base | 5 + .../system/.svn/prop-base/TouchTask.php.svn-base | 5 + .../system/.svn/prop-base/TstampTask.php.svn-base | 5 + .../system/.svn/prop-base/TypedefTask.php.svn-base | 5 + .../.svn/prop-base/UpToDateTask.php.svn-base | 5 + .../system/.svn/prop-base/WarnTask.php.svn-base | 5 + .../system/.svn/prop-base/XsltTask.php.svn-base | 5 + .../system/.svn/text-base/AdhocTask.php.svn-base | 88 + .../.svn/text-base/AdhocTaskdefTask.php.svn-base | 90 + .../.svn/text-base/AdhocTypedefTask.php.svn-base | 71 + .../system/.svn/text-base/AppendTask.php.svn-base | 240 + .../.svn/text-base/AvailableTask.php.svn-base | 135 + .../system/.svn/text-base/ChmodTask.php.svn-base | 203 + .../system/.svn/text-base/ChownTask.php.svn-base | 195 + .../.svn/text-base/ConditionTask.php.svn-base | 74 + .../system/.svn/text-base/CopyTask.php.svn-base | 408 + .../system/.svn/text-base/CvsPassTask.php.svn-base | 173 + .../system/.svn/text-base/CvsTask.php.svn-base | 540 + .../system/.svn/text-base/DeleteTask.php.svn-base | 277 + .../system/.svn/text-base/EchoTask.php.svn-base | 107 + .../system/.svn/text-base/ExecTask.php.svn-base | 266 + .../system/.svn/text-base/ExitTask.php.svn-base | 118 + .../system/.svn/text-base/ForeachTask.php.svn-base | 138 + .../system/.svn/text-base/IfTask.php.svn-base | 224 + .../.svn/text-base/IncludePathTask.php.svn-base | 115 + .../system/.svn/text-base/InputTask.php.svn-base | 146 + .../.svn/text-base/MatchingTask.php.svn-base | 361 + .../system/.svn/text-base/MkdirTask.php.svn-base | 64 + .../system/.svn/text-base/MoveTask.php.svn-base | 247 + .../.svn/text-base/PhingCallTask.php.svn-base | 161 + .../system/.svn/text-base/PhingTask.php.svn-base | 623 + .../system/.svn/text-base/PhpEvalTask.php.svn-base | 169 + .../.svn/text-base/PropertyPromptTask.php.svn-base | 234 + .../.svn/text-base/PropertyTask.php.svn-base | 438 + .../.svn/text-base/ReflexiveTask.php.svn-base | 155 + .../.svn/text-base/ResolvePathTask.php.svn-base | 122 + .../.svn/text-base/SequentialTask.php.svn-base | 57 + .../system/.svn/text-base/TaskdefTask.php.svn-base | 127 + .../system/.svn/text-base/TouchTask.php.svn-base | 170 + .../system/.svn/text-base/TstampTask.php.svn-base | 168 + .../system/.svn/text-base/TypedefTask.php.svn-base | 125 + .../.svn/text-base/UpToDateTask.php.svn-base | 217 + .../system/.svn/text-base/WarnTask.php.svn-base | 35 + .../system/.svn/text-base/XsltTask.php.svn-base | 81 + .../lib/vendor/phing/tasks/system/AdhocTask.php | 88 + .../vendor/phing/tasks/system/AdhocTaskdefTask.php | 90 + .../vendor/phing/tasks/system/AdhocTypedefTask.php | 71 + .../lib/vendor/phing/tasks/system/AppendTask.php | 240 + .../vendor/phing/tasks/system/AvailableTask.php | 135 + .../lib/vendor/phing/tasks/system/ChmodTask.php | 203 + .../lib/vendor/phing/tasks/system/ChownTask.php | 195 + .../vendor/phing/tasks/system/ConditionTask.php | 74 + .../lib/vendor/phing/tasks/system/CopyTask.php | 408 + .../lib/vendor/phing/tasks/system/CvsPassTask.php | 173 + .../lib/vendor/phing/tasks/system/CvsTask.php | 540 + .../lib/vendor/phing/tasks/system/DeleteTask.php | 277 + .../lib/vendor/phing/tasks/system/EchoTask.php | 107 + .../lib/vendor/phing/tasks/system/ExecTask.php | 266 + .../lib/vendor/phing/tasks/system/ExitTask.php | 118 + .../lib/vendor/phing/tasks/system/ForeachTask.php | 138 + .../lib/vendor/phing/tasks/system/IfTask.php | 224 + .../vendor/phing/tasks/system/IncludePathTask.php | 115 + .../lib/vendor/phing/tasks/system/InputTask.php | 146 + .../lib/vendor/phing/tasks/system/MatchingTask.php | 361 + .../lib/vendor/phing/tasks/system/MkdirTask.php | 64 + .../lib/vendor/phing/tasks/system/MoveTask.php | 247 + .../vendor/phing/tasks/system/PhingCallTask.php | 161 + .../lib/vendor/phing/tasks/system/PhingTask.php | 623 + .../lib/vendor/phing/tasks/system/PhpEvalTask.php | 169 + .../phing/tasks/system/PropertyPromptTask.php | 234 + .../lib/vendor/phing/tasks/system/PropertyTask.php | 438 + .../vendor/phing/tasks/system/ReflexiveTask.php | 155 + .../vendor/phing/tasks/system/ResolvePathTask.php | 122 + .../vendor/phing/tasks/system/SequentialTask.php | 57 + .../lib/vendor/phing/tasks/system/TaskdefTask.php | 127 + .../lib/vendor/phing/tasks/system/TouchTask.php | 170 + .../lib/vendor/phing/tasks/system/TstampTask.php | 168 + .../lib/vendor/phing/tasks/system/TypedefTask.php | 125 + .../lib/vendor/phing/tasks/system/UpToDateTask.php | 217 + .../lib/vendor/phing/tasks/system/WarnTask.php | 35 + .../lib/vendor/phing/tasks/system/XsltTask.php | 81 + .../phing/tasks/system/condition/.svn/all-wcprops | 77 + .../phing/tasks/system/condition/.svn/entries | 436 + .../.svn/prop-base/AndCondition.php.svn-base | 5 + .../.svn/prop-base/Condition.php.svn-base | 5 + .../.svn/prop-base/ConditionBase.php.svn-base | 5 + .../.svn/prop-base/ContainsCondition.php.svn-base | 5 + .../.svn/prop-base/EqualsCondition.php.svn-base | 5 + .../.svn/prop-base/IsFalseCondition.php.svn-base | 5 + .../.svn/prop-base/IsSetCondition.php.svn-base | 5 + .../.svn/prop-base/IsTrueCondition.php.svn-base | 5 + .../.svn/prop-base/NotCondition.php.svn-base | 5 + .../.svn/prop-base/OrCondition.php.svn-base | 5 + .../.svn/prop-base/OsCondition.php.svn-base | 5 + .../ReferenceExistsCondition.php.svn-base | 5 + .../.svn/text-base/AndCondition.php.svn-base | 46 + .../.svn/text-base/Condition.php.svn-base | 38 + .../.svn/text-base/ConditionBase.php.svn-base | 195 + .../.svn/text-base/ContainsCondition.php.svn-base | 76 + .../.svn/text-base/EqualsCondition.php.svn-base | 78 + .../.svn/text-base/IsFalseCondition.php.svn-base | 60 + .../.svn/text-base/IsSetCondition.php.svn-base | 53 + .../.svn/text-base/IsTrueCondition.php.svn-base | 59 + .../.svn/text-base/NotCondition.php.svn-base | 48 + .../.svn/text-base/OrCondition.php.svn-base | 46 + .../.svn/text-base/OsCondition.php.svn-base | 63 + .../ReferenceExistsCondition.php.svn-base | 52 + .../phing/tasks/system/condition/AndCondition.php | 46 + .../phing/tasks/system/condition/Condition.php | 38 + .../phing/tasks/system/condition/ConditionBase.php | 195 + .../tasks/system/condition/ContainsCondition.php | 76 + .../tasks/system/condition/EqualsCondition.php | 78 + .../tasks/system/condition/IsFalseCondition.php | 60 + .../tasks/system/condition/IsSetCondition.php | 53 + .../tasks/system/condition/IsTrueCondition.php | 59 + .../phing/tasks/system/condition/NotCondition.php | 48 + .../phing/tasks/system/condition/OrCondition.php | 46 + .../phing/tasks/system/condition/OsCondition.php | 63 + .../system/condition/ReferenceExistsCondition.php | 52 + .../lib/vendor/phing/types/.svn/all-wcprops | 119 + .../lib/vendor/phing/types/.svn/entries | 677 + .../.svn/prop-base/AbstractFileSet.php.svn-base | 5 + .../types/.svn/prop-base/Commandline.php.svn-base | 5 + .../types/.svn/prop-base/DataType.php.svn-base | 5 + .../types/.svn/prop-base/Description.php.svn-base | 5 + .../phing/types/.svn/prop-base/DirSet.php.svn-base | 5 + .../types/.svn/prop-base/FileList.php.svn-base | 5 + .../types/.svn/prop-base/FileSet.php.svn-base | 5 + .../types/.svn/prop-base/FilterChain.php.svn-base | 5 + .../phing/types/.svn/prop-base/Mapper.php.svn-base | 5 + .../types/.svn/prop-base/Parameter.php.svn-base | 5 + .../.svn/prop-base/Parameterizable.php.svn-base | 5 + .../phing/types/.svn/prop-base/Path.php.svn-base | 5 + .../types/.svn/prop-base/PatternSet.php.svn-base | 5 + .../.svn/prop-base/PhingFilterReader.php.svn-base | 5 + .../types/.svn/prop-base/Reference.php.svn-base | 5 + .../.svn/prop-base/RegularExpression.php.svn-base | 5 + .../types/.svn/prop-base/TokenReader.php.svn-base | 5 + .../types/.svn/prop-base/TokenSource.php.svn-base | 5 + .../.svn/prop-base/defaults.properties.svn-base | 5 + .../.svn/text-base/AbstractFileSet.php.svn-base | 570 + .../types/.svn/text-base/Commandline.php.svn-base | 467 + .../types/.svn/text-base/DataType.php.svn-base | 182 + .../types/.svn/text-base/Description.php.svn-base | 53 + .../phing/types/.svn/text-base/DirSet.php.svn-base | 49 + .../types/.svn/text-base/FileList.php.svn-base | 224 + .../types/.svn/text-base/FileSet.php.svn-base | 56 + .../types/.svn/text-base/FilterChain.php.svn-base | 176 + .../phing/types/.svn/text-base/Mapper.php.svn-base | 207 + .../types/.svn/text-base/Parameter.php.svn-base | 99 + .../.svn/text-base/Parameterizable.php.svn-base | 32 + .../phing/types/.svn/text-base/Path.php.svn-base | 450 + .../types/.svn/text-base/PatternSet.php.svn-base | 491 + .../.svn/text-base/PhingFilterReader.php.svn-base | 136 + .../types/.svn/text-base/Reference.php.svn-base | 56 + .../.svn/text-base/RegularExpression.php.svn-base | 105 + .../types/.svn/text-base/TokenReader.php.svn-base | 66 + .../types/.svn/text-base/TokenSource.php.svn-base | 157 + .../.svn/text-base/defaults.properties.svn-base | 13 + .../lib/vendor/phing/types/AbstractFileSet.php | 570 + .../lib/vendor/phing/types/Commandline.php | 467 + .../lib/vendor/phing/types/DataType.php | 182 + .../lib/vendor/phing/types/Description.php | 53 + .../lib/vendor/phing/types/DirSet.php | 49 + .../lib/vendor/phing/types/FileList.php | 224 + .../lib/vendor/phing/types/FileSet.php | 56 + .../lib/vendor/phing/types/FilterChain.php | 176 + .../lib/vendor/phing/types/Mapper.php | 207 + .../lib/vendor/phing/types/Parameter.php | 99 + .../lib/vendor/phing/types/Parameterizable.php | 32 + .../sfPropelPlugin/lib/vendor/phing/types/Path.php | 450 + .../lib/vendor/phing/types/PatternSet.php | 491 + .../lib/vendor/phing/types/PhingFilterReader.php | 136 + .../lib/vendor/phing/types/Reference.php | 56 + .../lib/vendor/phing/types/RegularExpression.php | 105 + .../lib/vendor/phing/types/TokenReader.php | 66 + .../lib/vendor/phing/types/TokenSource.php | 157 + .../lib/vendor/phing/types/defaults.properties | 13 + .../vendor/phing/types/selectors/.svn/all-wcprops | 149 + .../lib/vendor/phing/types/selectors/.svn/entries | 844 + .../.svn/prop-base/AndSelector.php.svn-base | 5 + .../.svn/prop-base/BaseExtendSelector.php.svn-base | 5 + .../.svn/prop-base/BaseSelector.php.svn-base | 5 + .../prop-base/BaseSelectorContainer.php.svn-base | 5 + .../prop-base/ContainsRegexpSelector.php.svn-base | 5 + .../.svn/prop-base/ContainsSelector.php.svn-base | 5 + .../.svn/prop-base/DateSelector.php.svn-base | 5 + .../.svn/prop-base/DependSelector.php.svn-base | 5 + .../.svn/prop-base/DepthSelector.php.svn-base | 5 + .../.svn/prop-base/ExtendFileSelector.php.svn-base | 5 + .../.svn/prop-base/ExtendSelector.php.svn-base | 5 + .../.svn/prop-base/FileSelector.php.svn-base | 5 + .../.svn/prop-base/FilenameSelector.php.svn-base | 5 + .../.svn/prop-base/MajoritySelector.php.svn-base | 5 + .../.svn/prop-base/NoneSelector.php.svn-base | 5 + .../.svn/prop-base/NotSelector.php.svn-base | 5 + .../.svn/prop-base/OrSelector.php.svn-base | 5 + .../.svn/prop-base/PresentSelector.php.svn-base | 5 + .../.svn/prop-base/SelectSelector.php.svn-base | 5 + .../.svn/prop-base/SelectorContainer.php.svn-base | 5 + .../.svn/prop-base/SelectorScanner.php.svn-base | 5 + .../.svn/prop-base/SelectorUtils.php.svn-base | 5 + .../.svn/prop-base/SizeSelector.php.svn-base | 5 + .../.svn/prop-base/TypeSelector.php.svn-base | 5 + .../.svn/text-base/AndSelector.php.svn-base | 67 + .../.svn/text-base/BaseExtendSelector.php.svn-base | 62 + .../.svn/text-base/BaseSelector.php.svn-base | 84 + .../text-base/BaseSelectorContainer.php.svn-base | 270 + .../text-base/ContainsRegexpSelector.php.svn-base | 164 + .../.svn/text-base/ContainsSelector.php.svn-base | 151 + .../.svn/text-base/DateSelector.php.svn-base | 214 + .../.svn/text-base/DependSelector.php.svn-base | 151 + .../.svn/text-base/DepthSelector.php.svn-base | 158 + .../.svn/text-base/ExtendFileSelector.php.svn-base | 43 + .../.svn/text-base/ExtendSelector.php.svn-base | 124 + .../.svn/text-base/FileSelector.php.svn-base | 47 + .../.svn/text-base/FilenameSelector.php.svn-base | 157 + .../.svn/text-base/MajoritySelector.php.svn-base | 92 + .../.svn/text-base/NoneSelector.php.svn-base | 71 + .../.svn/text-base/NotSelector.php.svn-base | 59 + .../.svn/text-base/OrSelector.php.svn-base | 72 + .../.svn/text-base/PresentSelector.php.svn-base | 154 + .../.svn/text-base/SelectSelector.php.svn-base | 124 + .../.svn/text-base/SelectorContainer.php.svn-base | 141 + .../.svn/text-base/SelectorScanner.php.svn-base | 55 + .../.svn/text-base/SelectorUtils.php.svn-base | 440 + .../.svn/text-base/SizeSelector.php.svn-base | 228 + .../.svn/text-base/TypeSelector.php.svn-base | 113 + .../vendor/phing/types/selectors/AndSelector.php | 67 + .../phing/types/selectors/BaseExtendSelector.php | 62 + .../vendor/phing/types/selectors/BaseSelector.php | 84 + .../types/selectors/BaseSelectorContainer.php | 270 + .../types/selectors/ContainsRegexpSelector.php | 164 + .../phing/types/selectors/ContainsSelector.php | 151 + .../vendor/phing/types/selectors/DateSelector.php | 214 + .../phing/types/selectors/DependSelector.php | 151 + .../vendor/phing/types/selectors/DepthSelector.php | 158 + .../phing/types/selectors/ExtendFileSelector.php | 43 + .../phing/types/selectors/ExtendSelector.php | 124 + .../vendor/phing/types/selectors/FileSelector.php | 47 + .../phing/types/selectors/FilenameSelector.php | 157 + .../phing/types/selectors/MajoritySelector.php | 92 + .../vendor/phing/types/selectors/NoneSelector.php | 71 + .../vendor/phing/types/selectors/NotSelector.php | 59 + .../vendor/phing/types/selectors/OrSelector.php | 72 + .../phing/types/selectors/PresentSelector.php | 154 + .../phing/types/selectors/SelectSelector.php | 124 + .../phing/types/selectors/SelectorContainer.php | 141 + .../phing/types/selectors/SelectorScanner.php | 55 + .../vendor/phing/types/selectors/SelectorUtils.php | 440 + .../vendor/phing/types/selectors/SizeSelector.php | 228 + .../vendor/phing/types/selectors/TypeSelector.php | 113 + .../lib/vendor/phing/util/.svn/all-wcprops | 47 + .../lib/vendor/phing/util/.svn/entries | 269 + .../.svn/prop-base/DirectoryScanner.php.svn-base | 5 + .../.svn/prop-base/ExtendedFileStream.php.svn-base | 9 + .../util/.svn/prop-base/FileUtils.php.svn-base | 5 + .../util/.svn/prop-base/LogWriter.php.svn-base | 9 + .../util/.svn/prop-base/PathTokenizer.php.svn-base | 9 + .../.svn/prop-base/SourceFileScanner.php.svn-base | 5 + .../util/.svn/prop-base/StringHelper.php.svn-base | 5 + .../.svn/text-base/DirectoryScanner.php.svn-base | 712 + .../.svn/text-base/ExtendedFileStream.php.svn-base | 132 + .../util/.svn/text-base/FileUtils.php.svn-base | 294 + .../util/.svn/text-base/LogWriter.php.svn-base | 95 + .../util/.svn/text-base/PathTokenizer.php.svn-base | 245 + .../.svn/text-base/SourceFileScanner.php.svn-base | 159 + .../util/.svn/text-base/StringHelper.php.svn-base | 208 + .../lib/vendor/phing/util/DirectoryScanner.php | 712 + .../lib/vendor/phing/util/ExtendedFileStream.php | 132 + .../lib/vendor/phing/util/FileUtils.php | 294 + .../lib/vendor/phing/util/LogWriter.php | 95 + .../lib/vendor/phing/util/PathTokenizer.php | 245 + .../lib/vendor/phing/util/SourceFileScanner.php | 159 + .../lib/vendor/phing/util/StringHelper.php | 208 + .../lib/vendor/phing/util/regexp/.svn/all-wcprops | 23 + .../lib/vendor/phing/util/regexp/.svn/entries | 130 + .../regexp/.svn/prop-base/PregEngine.php.svn-base | 5 + .../util/regexp/.svn/prop-base/Regexp.php.svn-base | 5 + .../.svn/prop-base/RegexpEngine.php.svn-base | 5 + .../regexp/.svn/text-base/PregEngine.php.svn-base | 104 + .../util/regexp/.svn/text-base/Regexp.php.svn-base | 167 + .../.svn/text-base/RegexpEngine.php.svn-base | 73 + .../lib/vendor/phing/util/regexp/PregEngine.php | 104 + .../lib/vendor/phing/util/regexp/Regexp.php | 167 + .../lib/vendor/phing/util/regexp/RegexpEngine.php | 73 + .../lib/vendor/propel-generator/.svn/all-wcprops | 35 + .../lib/vendor/propel-generator/.svn/dir-prop-base | 6 + .../lib/vendor/propel-generator/.svn/entries | 210 + .../.svn/prop-base/build-propel.xml.svn-base | 5 + .../.svn/prop-base/build.xml.svn-base | 5 + .../.svn/prop-base/default.properties.svn-base | 5 + .../.svn/text-base/build-propel.xml.svn-base | 542 + .../text-base/build.properties-sample.svn-base | 194 + .../.svn/text-base/build.xml-local.svn-base | 124 + .../.svn/text-base/build.xml.svn-base | 188 + .../.svn/text-base/default.properties.svn-base | 264 + .../vendor/propel-generator/bin/.svn/all-wcprops | 17 + .../lib/vendor/propel-generator/bin/.svn/entries | 96 + .../bin/.svn/prop-base/propel-gen.bat.svn-base | 5 + .../bin/.svn/prop-base/propel-gen.svn-base | 5 + .../bin/.svn/text-base/propel-gen.bat.svn-base | 47 + .../bin/.svn/text-base/propel-gen.svn-base | 67 + .../lib/vendor/propel-generator/bin/propel-gen | 67 + .../lib/vendor/propel-generator/bin/propel-gen.bat | 47 + .../lib/vendor/propel-generator/build-propel.xml | 542 + .../propel-generator/build.properties-sample | 194 + .../lib/vendor/propel-generator/build.xml | 188 + .../lib/vendor/propel-generator/build.xml-local | 124 + .../propel-generator/classes/.svn/all-wcprops | 5 + .../vendor/propel-generator/classes/.svn/entries | 31 + .../classes/propel/.svn/all-wcprops | 5 + .../propel-generator/classes/propel/.svn/entries | 34 + .../classes/propel/engine/.svn/all-wcprops | 17 + .../classes/propel/engine/.svn/entries | 108 + .../.svn/prop-base/EngineException.php.svn-base | 9 + .../.svn/prop-base/GeneratorConfig.php.svn-base | 9 + .../.svn/text-base/EngineException.php.svn-base | 33 + .../.svn/text-base/GeneratorConfig.php.svn-base | 229 + .../classes/propel/engine/EngineException.php | 33 + .../classes/propel/engine/GeneratorConfig.php | 229 + .../propel/engine/behavior/.svn/all-wcprops | 29 + .../classes/propel/engine/behavior/.svn/entries | 164 + ...AlternativeCodingStandardsBehavior.php.svn-base | 5 + .../.svn/prop-base/AutoAddPkBehavior.php.svn-base | 9 + .../.svn/prop-base/SoftDeleteBehavior.php.svn-base | 5 + .../prop-base/TimestampableBehavior.php.svn-base | 5 + ...AlternativeCodingStandardsBehavior.php.svn-base | 135 + .../.svn/text-base/AutoAddPkBehavior.php.svn-base | 66 + .../.svn/text-base/SoftDeleteBehavior.php.svn-base | 259 + .../text-base/TimestampableBehavior.php.svn-base | 88 + .../AlternativeCodingStandardsBehavior.php | 135 + .../propel/engine/behavior/AutoAddPkBehavior.php | 66 + .../propel/engine/behavior/SoftDeleteBehavior.php | 259 + .../engine/behavior/TimestampableBehavior.php | 88 + .../classes/propel/engine/builder/.svn/all-wcprops | 11 + .../classes/propel/engine/builder/.svn/entries | 71 + .../.svn/prop-base/DataModelBuilder.php.svn-base | 9 + .../.svn/text-base/DataModelBuilder.php.svn-base | 496 + .../propel/engine/builder/DataModelBuilder.php | 496 + .../propel/engine/builder/om/.svn/all-wcprops | 29 + .../classes/propel/engine/builder/om/.svn/entries | 167 + .../om/.svn/prop-base/ClassTools.php.svn-base | 9 + .../om/.svn/prop-base/OMBuilder.php.svn-base | 9 + .../om/.svn/prop-base/ObjectBuilder.php.svn-base | 9 + .../om/.svn/prop-base/PeerBuilder.php.svn-base | 9 + .../om/.svn/text-base/ClassTools.php.svn-base | 131 + .../om/.svn/text-base/OMBuilder.php.svn-base | 368 + .../om/.svn/text-base/ObjectBuilder.php.svn-base | 187 + .../om/.svn/text-base/PeerBuilder.php.svn-base | 299 + .../propel/engine/builder/om/ClassTools.php | 131 + .../classes/propel/engine/builder/om/OMBuilder.php | 368 + .../propel/engine/builder/om/ObjectBuilder.php | 187 + .../propel/engine/builder/om/PeerBuilder.php | 299 + .../propel/engine/builder/om/php5/.svn/all-wcprops | 83 + .../propel/engine/builder/om/php5/.svn/entries | 470 + .../PHP5ExtensionNodeBuilder.php.svn-base | 9 + .../PHP5ExtensionNodePeerBuilder.php.svn-base | 9 + .../PHP5ExtensionObjectBuilder.php.svn-base | 9 + .../PHP5ExtensionPeerBuilder.php.svn-base | 9 + .../prop-base/PHP5InterfaceBuilder.php.svn-base | 9 + .../PHP5MultiExtendObjectBuilder.php.svn-base | 9 + .../prop-base/PHP5NestedSetBuilder.php.svn-base | 9 + .../PHP5NestedSetPeerBuilder.php.svn-base | 9 + .../.svn/prop-base/PHP5NodeBuilder.php.svn-base | 9 + .../prop-base/PHP5NodePeerBuilder.php.svn-base | 9 + .../.svn/prop-base/PHP5ObjectBuilder.php.svn-base | 9 + .../.svn/prop-base/PHP5PeerBuilder.php.svn-base | 9 + .../prop-base/PHP5TableMapBuilder.php.svn-base | 5 + .../PHP5ExtensionNodeBuilder.php.svn-base | 122 + .../PHP5ExtensionNodePeerBuilder.php.svn-base | 123 + .../PHP5ExtensionObjectBuilder.php.svn-base | 169 + .../PHP5ExtensionPeerBuilder.php.svn-base | 146 + .../text-base/PHP5InterfaceBuilder.php.svn-base | 119 + .../PHP5MultiExtendObjectBuilder.php.svn-base | 202 + .../text-base/PHP5NestedSetBuilder.php.svn-base | 1145 + .../PHP5NestedSetPeerBuilder.php.svn-base | 1737 + .../.svn/text-base/PHP5NodeBuilder.php.svn-base | 1115 + .../text-base/PHP5NodePeerBuilder.php.svn-base | 765 + .../.svn/text-base/PHP5ObjectBuilder.php.svn-base | 4071 + .../.svn/text-base/PHP5PeerBuilder.php.svn-base | 2645 + .../text-base/PHP5TableMapBuilder.php.svn-base | 340 + .../builder/om/php5/PHP5ExtensionNodeBuilder.php | 122 + .../om/php5/PHP5ExtensionNodePeerBuilder.php | 123 + .../builder/om/php5/PHP5ExtensionObjectBuilder.php | 169 + .../builder/om/php5/PHP5ExtensionPeerBuilder.php | 146 + .../builder/om/php5/PHP5InterfaceBuilder.php | 119 + .../om/php5/PHP5MultiExtendObjectBuilder.php | 202 + .../builder/om/php5/PHP5NestedSetBuilder.php | 1145 + .../builder/om/php5/PHP5NestedSetPeerBuilder.php | 1737 + .../engine/builder/om/php5/PHP5NodeBuilder.php | 1115 + .../engine/builder/om/php5/PHP5NodePeerBuilder.php | 765 + .../engine/builder/om/php5/PHP5ObjectBuilder.php | 4071 + .../engine/builder/om/php5/PHP5PeerBuilder.php | 2645 + .../engine/builder/om/php5/PHP5TableMapBuilder.php | 340 + .../propel/engine/builder/sql/.svn/all-wcprops | 17 + .../classes/propel/engine/builder/sql/.svn/entries | 111 + .../sql/.svn/prop-base/DDLBuilder.php.svn-base | 9 + .../sql/.svn/prop-base/DataSQLBuilder.php.svn-base | 9 + .../sql/.svn/text-base/DDLBuilder.php.svn-base | 177 + .../sql/.svn/text-base/DataSQLBuilder.php.svn-base | 264 + .../propel/engine/builder/sql/DDLBuilder.php | 177 + .../propel/engine/builder/sql/DataSQLBuilder.php | 264 + .../engine/builder/sql/mssql/.svn/all-wcprops | 17 + .../propel/engine/builder/sql/mssql/.svn/entries | 96 + .../.svn/prop-base/MssqlDDLBuilder.php.svn-base | 9 + .../prop-base/MssqlDataSQLBuilder.php.svn-base | 9 + .../.svn/text-base/MssqlDDLBuilder.php.svn-base | 185 + .../text-base/MssqlDataSQLBuilder.php.svn-base | 48 + .../engine/builder/sql/mssql/MssqlDDLBuilder.php | 185 + .../builder/sql/mssql/MssqlDataSQLBuilder.php | 48 + .../engine/builder/sql/mysql/.svn/all-wcprops | 17 + .../propel/engine/builder/sql/mysql/.svn/entries | 96 + .../.svn/prop-base/MysqlDDLBuilder.php.svn-base | 9 + .../prop-base/MysqlDataSQLBuilder.php.svn-base | 9 + .../.svn/text-base/MysqlDDLBuilder.php.svn-base | 425 + .../text-base/MysqlDataSQLBuilder.php.svn-base | 33 + .../engine/builder/sql/mysql/MysqlDDLBuilder.php | 425 + .../builder/sql/mysql/MysqlDataSQLBuilder.php | 33 + .../engine/builder/sql/oracle/.svn/all-wcprops | 17 + .../propel/engine/builder/sql/oracle/.svn/entries | 96 + .../.svn/prop-base/OracleDDLBuilder.php.svn-base | 9 + .../prop-base/OracleDataSQLBuilder.php.svn-base | 9 + .../.svn/text-base/OracleDDLBuilder.php.svn-base | 176 + .../text-base/OracleDataSQLBuilder.php.svn-base | 34 + .../engine/builder/sql/oracle/OracleDDLBuilder.php | 176 + .../builder/sql/oracle/OracleDataSQLBuilder.php | 34 + .../engine/builder/sql/pgsql/.svn/all-wcprops | 17 + .../propel/engine/builder/sql/pgsql/.svn/entries | 96 + .../.svn/prop-base/PgsqlDDLBuilder.php.svn-base | 9 + .../prop-base/PgsqlDataSQLBuilder.php.svn-base | 9 + .../.svn/text-base/PgsqlDDLBuilder.php.svn-base | 316 + .../text-base/PgsqlDataSQLBuilder.php.svn-base | 113 + .../engine/builder/sql/pgsql/PgsqlDDLBuilder.php | 316 + .../builder/sql/pgsql/PgsqlDataSQLBuilder.php | 113 + .../engine/builder/sql/sqlite/.svn/all-wcprops | 17 + .../propel/engine/builder/sql/sqlite/.svn/entries | 96 + .../.svn/prop-base/SqliteDDLBuilder.php.svn-base | 9 + .../prop-base/SqliteDataSQLBuilder.php.svn-base | 9 + .../.svn/text-base/SqliteDDLBuilder.php.svn-base | 130 + .../text-base/SqliteDataSQLBuilder.php.svn-base | 47 + .../engine/builder/sql/sqlite/SqliteDDLBuilder.php | 130 + .../builder/sql/sqlite/SqliteDataSQLBuilder.php | 47 + .../propel/engine/builder/util/.svn/all-wcprops | 17 + .../propel/engine/builder/util/.svn/entries | 99 + .../DefaultEnglishPluralizer.php.svn-base | 9 + .../util/.svn/prop-base/Pluralizer.php.svn-base | 9 + .../DefaultEnglishPluralizer.php.svn-base | 43 + .../util/.svn/text-base/Pluralizer.php.svn-base | 38 + .../builder/util/DefaultEnglishPluralizer.php | 43 + .../propel/engine/builder/util/Pluralizer.php | 38 + .../engine/builder/util/transform/.svn/all-wcprops | 11 + .../engine/builder/util/transform/.svn/entries | 62 + .../.svn/prop-base/XmlToDataSQL.php.svn-base | 9 + .../.svn/text-base/XmlToDataSQL.php.svn-base | 276 + .../engine/builder/util/transform/XmlToDataSQL.php | 276 + .../propel/engine/database/.svn/all-wcprops | 5 + .../classes/propel/engine/database/.svn/entries | 37 + .../propel/engine/database/model/.svn/all-wcprops | 137 + .../propel/engine/database/model/.svn/entries | 776 + .../model/.svn/prop-base/AppData.php.svn-base | 9 + .../model/.svn/prop-base/Behavior.php.svn-base | 5 + .../model/.svn/prop-base/Column.php.svn-base | 9 + .../.svn/prop-base/ColumnDefaultValue.php.svn-base | 9 + .../prop-base/ConstraintNameGenerator.php.svn-base | 9 + .../model/.svn/prop-base/Database.php.svn-base | 9 + .../model/.svn/prop-base/Domain.php.svn-base | 9 + .../model/.svn/prop-base/ForeignKey.php.svn-base | 9 + .../model/.svn/prop-base/IDMethod.php.svn-base | 9 + .../.svn/prop-base/IdMethodParameter.php.svn-base | 9 + .../model/.svn/prop-base/Index.php.svn-base | 9 + .../model/.svn/prop-base/Inheritance.php.svn-base | 9 + .../model/.svn/prop-base/NameFactory.php.svn-base | 9 + .../.svn/prop-base/NameGenerator.php.svn-base | 9 + .../.svn/prop-base/PhpNameGenerator.php.svn-base | 9 + .../model/.svn/prop-base/PropelTypes.php.svn-base | 9 + .../model/.svn/prop-base/Rule.php.svn-base | 9 + .../model/.svn/prop-base/Table.php.svn-base | 9 + .../model/.svn/prop-base/Unique.php.svn-base | 9 + .../model/.svn/prop-base/Validator.php.svn-base | 9 + .../model/.svn/prop-base/VendorInfo.php.svn-base | 9 + .../model/.svn/prop-base/XMLElement.php.svn-base | 9 + .../model/.svn/text-base/AppData.php.svn-base | 216 + .../model/.svn/text-base/Behavior.php.svn-base | 184 + .../model/.svn/text-base/Column.php.svn-base | 1184 + .../.svn/text-base/ColumnDefaultValue.php.svn-base | 101 + .../text-base/ConstraintNameGenerator.php.svn-base | 84 + .../model/.svn/text-base/Database.php.svn-base | 588 + .../model/.svn/text-base/Domain.php.svn-base | 396 + .../model/.svn/text-base/ForeignKey.php.svn-base | 442 + .../model/.svn/text-base/IDMethod.php.svn-base | 46 + .../.svn/text-base/IdMethodParameter.php.svn-base | 119 + .../model/.svn/text-base/Index.php.svn-base | 286 + .../model/.svn/text-base/Inheritance.php.svn-base | 158 + .../model/.svn/text-base/NameFactory.php.svn-base | 88 + .../.svn/text-base/NameGenerator.php.svn-base | 83 + .../.svn/text-base/PhpNameGenerator.php.svn-base | 175 + .../model/.svn/text-base/PropelTypes.php.svn-base | 331 + .../model/.svn/text-base/Rule.php.svn-base | 204 + .../model/.svn/text-base/Table.php.svn-base | 1429 + .../model/.svn/text-base/Unique.php.svn-base | 68 + .../model/.svn/text-base/Validator.php.svn-base | 194 + .../model/.svn/text-base/VendorInfo.php.svn-base | 182 + .../model/.svn/text-base/XMLElement.php.svn-base | 192 + .../propel/engine/database/model/AppData.php | 216 + .../propel/engine/database/model/Behavior.php | 184 + .../propel/engine/database/model/Column.php | 1184 + .../engine/database/model/ColumnDefaultValue.php | 101 + .../database/model/ConstraintNameGenerator.php | 84 + .../propel/engine/database/model/Database.php | 588 + .../propel/engine/database/model/Domain.php | 396 + .../propel/engine/database/model/ForeignKey.php | 442 + .../propel/engine/database/model/IDMethod.php | 46 + .../engine/database/model/IdMethodParameter.php | 119 + .../classes/propel/engine/database/model/Index.php | 286 + .../propel/engine/database/model/Inheritance.php | 158 + .../propel/engine/database/model/NameFactory.php | 88 + .../propel/engine/database/model/NameGenerator.php | 83 + .../engine/database/model/PhpNameGenerator.php | 175 + .../propel/engine/database/model/PropelTypes.php | 331 + .../classes/propel/engine/database/model/Rule.php | 204 + .../classes/propel/engine/database/model/Table.php | 1429 + .../propel/engine/database/model/Unique.php | 68 + .../propel/engine/database/model/Validator.php | 194 + .../propel/engine/database/model/VendorInfo.php | 182 + .../propel/engine/database/model/XMLElement.php | 192 + .../engine/database/reverse/.svn/all-wcprops | 17 + .../propel/engine/database/reverse/.svn/entries | 111 + .../.svn/prop-base/BaseSchemaParser.php.svn-base | 9 + .../.svn/prop-base/SchemaParser.php.svn-base | 9 + .../.svn/text-base/BaseSchemaParser.php.svn-base | 198 + .../.svn/text-base/SchemaParser.php.svn-base | 71 + .../engine/database/reverse/BaseSchemaParser.php | 198 + .../engine/database/reverse/SchemaParser.php | 71 + .../engine/database/reverse/mssql/.svn/all-wcprops | 11 + .../engine/database/reverse/mssql/.svn/entries | 62 + .../.svn/prop-base/MssqlSchemaParser.php.svn-base | 9 + .../.svn/text-base/MssqlSchemaParser.php.svn-base | 248 + .../database/reverse/mssql/MssqlSchemaParser.php | 248 + .../engine/database/reverse/mysql/.svn/all-wcprops | 11 + .../engine/database/reverse/mysql/.svn/entries | 62 + .../.svn/prop-base/MysqlSchemaParser.php.svn-base | 9 + .../.svn/text-base/MysqlSchemaParser.php.svn-base | 337 + .../database/reverse/mysql/MysqlSchemaParser.php | 337 + .../database/reverse/oracle/.svn/all-wcprops | 11 + .../engine/database/reverse/oracle/.svn/entries | 62 + .../.svn/prop-base/OracleSchemaParser.php.svn-base | 5 + .../.svn/text-base/OracleSchemaParser.php.svn-base | 230 + .../database/reverse/oracle/OracleSchemaParser.php | 230 + .../engine/database/reverse/pgsql/.svn/all-wcprops | 11 + .../engine/database/reverse/pgsql/.svn/entries | 62 + .../.svn/prop-base/PgsqlSchemaParser.php.svn-base | 9 + .../.svn/text-base/PgsqlSchemaParser.php.svn-base | 545 + .../database/reverse/pgsql/PgsqlSchemaParser.php | 545 + .../database/reverse/sqlite/.svn/all-wcprops | 11 + .../engine/database/reverse/sqlite/.svn/entries | 62 + .../.svn/prop-base/SqliteSchemaParser.php.svn-base | 9 + .../.svn/text-base/SqliteSchemaParser.php.svn-base | 203 + .../database/reverse/sqlite/SqliteSchemaParser.php | 203 + .../engine/database/transform/.svn/all-wcprops | 11 + .../propel/engine/database/transform/.svn/entries | 62 + .../.svn/prop-base/XmlToAppData.php.svn-base | 9 + .../.svn/text-base/XmlToAppData.php.svn-base | 409 + .../engine/database/transform/XmlToAppData.php | 409 + .../propel/engine/platform/.svn/all-wcprops | 47 + .../classes/propel/engine/platform/.svn/entries | 266 + .../.svn/prop-base/DefaultPlatform.php.svn-base | 9 + .../.svn/prop-base/MssqlPlatform.php.svn-base | 9 + .../.svn/prop-base/MysqlPlatform.php.svn-base | 9 + .../.svn/prop-base/OraclePlatform.php.svn-base | 9 + .../.svn/prop-base/PgsqlPlatform.php.svn-base | 9 + .../platform/.svn/prop-base/Platform.php.svn-base | 9 + .../.svn/prop-base/SqlitePlatform.php.svn-base | 9 + .../.svn/text-base/DefaultPlatform.php.svn-base | 309 + .../.svn/text-base/MssqlPlatform.php.svn-base | 117 + .../.svn/text-base/MysqlPlatform.php.svn-base | 120 + .../.svn/text-base/OraclePlatform.php.svn-base | 99 + .../.svn/text-base/PgsqlPlatform.php.svn-base | 128 + .../platform/.svn/text-base/Platform.php.svn-base | 192 + .../.svn/text-base/SqlitePlatform.php.svn-base | 97 + .../propel/engine/platform/DefaultPlatform.php | 309 + .../propel/engine/platform/MssqlPlatform.php | 117 + .../propel/engine/platform/MysqlPlatform.php | 120 + .../propel/engine/platform/OraclePlatform.php | 99 + .../propel/engine/platform/PgsqlPlatform.php | 128 + .../classes/propel/engine/platform/Platform.php | 192 + .../propel/engine/platform/SqlitePlatform.php | 97 + .../classes/propel/phing/.svn/all-wcprops | 77 + .../classes/propel/phing/.svn/entries | 436 + .../AbstractPropelDataModelTask.php.svn-base | 9 + .../prop-base/PropelConvertConfTask.php.svn-base | 9 + .../PropelCreoleTransformTask.php.svn-base | 9 + .../.svn/prop-base/PropelDataDTDTask.php.svn-base | 9 + .../.svn/prop-base/PropelDataDumpTask.php.svn-base | 9 + .../PropelDataModelTemplateTask.php.svn-base | 9 + .../.svn/prop-base/PropelDataSQLTask.php.svn-base | 9 + .../.svn/prop-base/PropelGraphvizTask.php.svn-base | 9 + .../phing/.svn/prop-base/PropelOMTask.php.svn-base | 9 + .../.svn/prop-base/PropelSQLExec.php.svn-base | 9 + .../.svn/prop-base/PropelSQLTask.php.svn-base | 9 + .../prop-base/PropelSchemaReverseTask.php.svn-base | 5 + .../AbstractPropelDataModelTask.php.svn-base | 611 + .../text-base/PropelConvertConfTask.php.svn-base | 312 + .../PropelCreoleTransformTask.php.svn-base | 829 + .../.svn/text-base/PropelDataDTDTask.php.svn-base | 80 + .../.svn/text-base/PropelDataDumpTask.php.svn-base | 365 + .../PropelDataModelTemplateTask.php.svn-base | 228 + .../.svn/text-base/PropelDataSQLTask.php.svn-base | 204 + .../.svn/text-base/PropelGraphvizTask.php.svn-base | 181 + .../phing/.svn/text-base/PropelOMTask.php.svn-base | 212 + .../.svn/text-base/PropelSQLExec.php.svn-base | 711 + .../.svn/text-base/PropelSQLTask.php.svn-base | 261 + .../text-base/PropelSchemaReverseTask.php.svn-base | 556 + .../propel/phing/AbstractPropelDataModelTask.php | 611 + .../classes/propel/phing/PropelConvertConfTask.php | 312 + .../propel/phing/PropelCreoleTransformTask.php | 829 + .../classes/propel/phing/PropelDataDTDTask.php | 80 + .../classes/propel/phing/PropelDataDumpTask.php | 365 + .../propel/phing/PropelDataModelTemplateTask.php | 228 + .../classes/propel/phing/PropelDataSQLTask.php | 204 + .../classes/propel/phing/PropelGraphvizTask.php | 181 + .../classes/propel/phing/PropelOMTask.php | 212 + .../classes/propel/phing/PropelSQLExec.php | 711 + .../classes/propel/phing/PropelSQLTask.php | 261 + .../propel/phing/PropelSchemaReverseTask.php | 556 + .../lib/vendor/propel-generator/default.properties | 264 + .../vendor/propel-generator/pear/.svn/all-wcprops | 41 + .../lib/vendor/propel-generator/pear/.svn/entries | 232 + .../BuildPropelGenPEARPackageTask.php.svn-base | 9 + .../.svn/prop-base/build-pear-package.xml.svn-base | 5 + .../pear/.svn/prop-base/build.properties.svn-base | 5 + .../pear/.svn/prop-base/pear-build.xml.svn-base | 5 + .../BuildPropelGenPEARPackageTask.php.svn-base | 270 + .../.svn/text-base/build-pear-package.xml.svn-base | 143 + .../pear/.svn/text-base/build.properties.svn-base | 5 + .../pear/.svn/text-base/pear-build.xml.svn-base | 125 + .../.svn/text-base/pear-propel-gen.bat.svn-base | 24 + .../pear/.svn/text-base/pear-propel-gen.svn-base | 18 + .../pear/BuildPropelGenPEARPackageTask.php | 270 + .../propel-generator/pear/build-pear-package.xml | 143 + .../vendor/propel-generator/pear/build.properties | 5 + .../vendor/propel-generator/pear/pear-build.xml | 125 + .../vendor/propel-generator/pear/pear-propel-gen | 18 + .../propel-generator/pear/pear-propel-gen.bat | 24 + .../propel-generator/resources/.svn/all-wcprops | 5 + .../vendor/propel-generator/resources/.svn/entries | 37 + .../resources/dtd/.svn/all-wcprops | 11 + .../propel-generator/resources/dtd/.svn/entries | 62 + .../dtd/.svn/text-base/database.dtd.svn-base | 176 + .../propel-generator/resources/dtd/database.dtd | 176 + .../resources/xsd/.svn/all-wcprops | 17 + .../propel-generator/resources/xsd/.svn/entries | 96 + .../.svn/prop-base/custom_datatypes.xsd.svn-base | 5 + .../xsd/.svn/prop-base/database.xsd.svn-base | 5 + .../.svn/text-base/custom_datatypes.xsd.svn-base | 8 + .../xsd/.svn/text-base/database.xsd.svn-base | 397 + .../resources/xsd/custom_datatypes.xsd | 8 + .../propel-generator/resources/xsd/database.xsd | 397 + .../resources/xsl/.svn/all-wcprops | 11 + .../propel-generator/resources/xsl/.svn/entries | 62 + .../xsl/.svn/prop-base/database.xsl.svn-base | 5 + .../xsl/.svn/text-base/database.xsl.svn-base | 292 + .../propel-generator/resources/xsl/database.xsl | 292 + .../lib/vendor/propel/.svn/all-wcprops | 17 + .../sfPropelPlugin/lib/vendor/propel/.svn/entries | 114 + .../propel/.svn/prop-base/Propel.php.svn-base | 9 + .../.svn/prop-base/PropelException.php.svn-base | 9 + .../propel/.svn/text-base/Propel.php.svn-base | 841 + .../.svn/text-base/PropelException.php.svn-base | 61 + .../sfPropelPlugin/lib/vendor/propel/Propel.php | 841 + .../lib/vendor/propel/PropelException.php | 61 + .../lib/vendor/propel/adapter/.svn/all-wcprops | 47 + .../lib/vendor/propel/adapter/.svn/entries | 269 + .../adapter/.svn/prop-base/DBAdapter.php.svn-base | 9 + .../adapter/.svn/prop-base/DBMSSQL.php.svn-base | 9 + .../adapter/.svn/prop-base/DBMySQL.php.svn-base | 9 + .../adapter/.svn/prop-base/DBNone.php.svn-base | 9 + .../adapter/.svn/prop-base/DBOracle.php.svn-base | 9 + .../adapter/.svn/prop-base/DBPostgres.php.svn-base | 9 + .../adapter/.svn/prop-base/DBSQLite.php.svn-base | 9 + .../adapter/.svn/text-base/DBAdapter.php.svn-base | 306 + .../adapter/.svn/text-base/DBMSSQL.php.svn-base | 194 + .../adapter/.svn/text-base/DBMySQL.php.svn-base | 156 + .../adapter/.svn/text-base/DBNone.php.svn-base | 115 + .../adapter/.svn/text-base/DBOracle.php.svn-base | 143 + .../adapter/.svn/text-base/DBPostgres.php.svn-base | 152 + .../adapter/.svn/text-base/DBSQLite.php.svn-base | 127 + .../lib/vendor/propel/adapter/DBAdapter.php | 306 + .../lib/vendor/propel/adapter/DBMSSQL.php | 194 + .../lib/vendor/propel/adapter/DBMySQL.php | 156 + .../lib/vendor/propel/adapter/DBNone.php | 115 + .../lib/vendor/propel/adapter/DBOracle.php | 143 + .../lib/vendor/propel/adapter/DBPostgres.php | 152 + .../lib/vendor/propel/adapter/DBSQLite.php | 127 + .../vendor/propel/adapter/MSSQL/.svn/all-wcprops | 23 + .../lib/vendor/propel/adapter/MSSQL/.svn/entries | 130 + .../prop-base/MssqlDateTime.class.php.svn-base | 5 + .../.svn/prop-base/MssqlDebugPDO.php.svn-base | 5 + .../.svn/prop-base/MssqlPropelPDO.php.svn-base | 5 + .../text-base/MssqlDateTime.class.php.svn-base | 27 + .../.svn/text-base/MssqlDebugPDO.php.svn-base | 110 + .../.svn/text-base/MssqlPropelPDO.php.svn-base | 110 + .../propel/adapter/MSSQL/MssqlDateTime.class.php | 27 + .../vendor/propel/adapter/MSSQL/MssqlDebugPDO.php | 110 + .../vendor/propel/adapter/MSSQL/MssqlPropelPDO.php | 110 + .../lib/vendor/propel/logger/.svn/all-wcprops | 17 + .../lib/vendor/propel/logger/.svn/entries | 96 + .../logger/.svn/prop-base/BasicLogger.php.svn-base | 9 + .../.svn/prop-base/MojaviLogAdapter.php.svn-base | 9 + .../logger/.svn/text-base/BasicLogger.php.svn-base | 103 + .../.svn/text-base/MojaviLogAdapter.php.svn-base | 170 + .../lib/vendor/propel/logger/BasicLogger.php | 103 + .../lib/vendor/propel/logger/MojaviLogAdapter.php | 170 + .../lib/vendor/propel/map/.svn/all-wcprops | 35 + .../lib/vendor/propel/map/.svn/entries | 198 + .../map/.svn/prop-base/ColumnMap.php.svn-base | 9 + .../map/.svn/prop-base/DatabaseMap.php.svn-base | 9 + .../map/.svn/prop-base/RelationMap.php.svn-base | 5 + .../map/.svn/prop-base/TableMap.php.svn-base | 9 + .../map/.svn/prop-base/ValidatorMap.php.svn-base | 9 + .../map/.svn/text-base/ColumnMap.php.svn-base | 475 + .../map/.svn/text-base/DatabaseMap.php.svn-base | 200 + .../map/.svn/text-base/RelationMap.php.svn-base | 218 + .../map/.svn/text-base/TableMap.php.svn-base | 654 + .../map/.svn/text-base/ValidatorMap.php.svn-base | 103 + .../lib/vendor/propel/map/ColumnMap.php | 475 + .../lib/vendor/propel/map/DatabaseMap.php | 200 + .../lib/vendor/propel/map/RelationMap.php | 218 + .../lib/vendor/propel/map/TableMap.php | 654 + .../lib/vendor/propel/map/ValidatorMap.php | 103 + .../lib/vendor/propel/om/.svn/all-wcprops | 35 + .../lib/vendor/propel/om/.svn/entries | 198 + .../om/.svn/prop-base/BaseObject.php.svn-base | 9 + .../NestedSetRecursiveIterator.php.svn-base | 9 + .../om/.svn/prop-base/NodeObject.php.svn-base | 9 + .../om/.svn/prop-base/Persistent.php.svn-base | 9 + .../prop-base/PreOrderNodeIterator.php.svn-base | 9 + .../om/.svn/text-base/BaseObject.php.svn-base | 266 + .../NestedSetRecursiveIterator.php.svn-base | 88 + .../om/.svn/text-base/NodeObject.php.svn-base | 334 + .../om/.svn/text-base/Persistent.php.svn-base | 118 + .../text-base/PreOrderNodeIterator.php.svn-base | 90 + .../lib/vendor/propel/om/BaseObject.php | 266 + .../propel/om/NestedSetRecursiveIterator.php | 88 + .../lib/vendor/propel/om/NodeObject.php | 334 + .../lib/vendor/propel/om/Persistent.php | 118 + .../lib/vendor/propel/om/PreOrderNodeIterator.php | 90 + .../lib/vendor/propel/util/.svn/all-wcprops | 77 + .../lib/vendor/propel/util/.svn/entries | 436 + .../util/.svn/prop-base/BasePeer.php.svn-base | 9 + .../util/.svn/prop-base/Criteria.php.svn-base | 9 + .../util/.svn/prop-base/DebugPDO.php.svn-base | 9 + .../.svn/prop-base/DebugPDOStatement.php.svn-base | 9 + .../propel/util/.svn/prop-base/Join.php.svn-base | 5 + .../util/.svn/prop-base/NodePeer.php.svn-base | 9 + .../.svn/prop-base/PropelColumnTypes.php.svn-base | 9 + .../prop-base/PropelConfiguration.php.svn-base | 9 + .../PropelConfigurationIterator.php.svn-base | 9 + .../.svn/prop-base/PropelDateTime.php.svn-base | 9 + .../util/.svn/prop-base/PropelPDO.php.svn-base | 9 + .../util/.svn/prop-base/PropelPager.php.svn-base | 9 + .../util/.svn/text-base/BasePeer.php.svn-base | 1064 + .../util/.svn/text-base/Criteria.php.svn-base | 1754 + .../util/.svn/text-base/DebugPDO.php.svn-base | 550 + .../.svn/text-base/DebugPDOStatement.php.svn-base | 134 + .../propel/util/.svn/text-base/Join.php.svn-base | 251 + .../util/.svn/text-base/NodePeer.php.svn-base | 379 + .../.svn/text-base/PropelColumnTypes.php.svn-base | 95 + .../text-base/PropelConfiguration.php.svn-base | 170 + .../PropelConfigurationIterator.php.svn-base | 114 + .../.svn/text-base/PropelDateTime.php.svn-base | 87 + .../util/.svn/text-base/PropelPDO.php.svn-base | 268 + .../util/.svn/text-base/PropelPager.php.svn-base | 607 + .../lib/vendor/propel/util/BasePeer.php | 1064 + .../lib/vendor/propel/util/Criteria.php | 1754 + .../lib/vendor/propel/util/DebugPDO.php | 550 + .../lib/vendor/propel/util/DebugPDOStatement.php | 134 + .../sfPropelPlugin/lib/vendor/propel/util/Join.php | 251 + .../lib/vendor/propel/util/NodePeer.php | 379 + .../lib/vendor/propel/util/PropelColumnTypes.php | 95 + .../lib/vendor/propel/util/PropelConfiguration.php | 170 + .../propel/util/PropelConfigurationIterator.php | 114 + .../lib/vendor/propel/util/PropelDateTime.php | 87 + .../lib/vendor/propel/util/PropelPDO.php | 268 + .../lib/vendor/propel/util/PropelPager.php | 607 + .../lib/vendor/propel/validator/.svn/all-wcprops | 77 + .../lib/vendor/propel/validator/.svn/entries | 436 + .../.svn/prop-base/BasicValidator.php.svn-base | 9 + .../.svn/prop-base/MatchValidator.php.svn-base | 9 + .../.svn/prop-base/MaxLengthValidator.php.svn-base | 9 + .../.svn/prop-base/MaxValueValidator.php.svn-base | 9 + .../.svn/prop-base/MinLengthValidator.php.svn-base | 9 + .../.svn/prop-base/MinValueValidator.php.svn-base | 9 + .../.svn/prop-base/NotMatchValidator.php.svn-base | 9 + .../.svn/prop-base/RequiredValidator.php.svn-base | 9 + .../.svn/prop-base/TypeValidator.php.svn-base | 9 + .../.svn/prop-base/UniqueValidator.php.svn-base | 9 + .../prop-base/ValidValuesValidator.php.svn-base | 9 + .../.svn/prop-base/ValidationFailed.php.svn-base | 9 + .../.svn/text-base/BasicValidator.php.svn-base | 46 + .../.svn/text-base/MatchValidator.php.svn-base | 79 + .../.svn/text-base/MaxLengthValidator.php.svn-base | 50 + .../.svn/text-base/MaxValueValidator.php.svn-base | 54 + .../.svn/text-base/MinLengthValidator.php.svn-base | 47 + .../.svn/text-base/MinValueValidator.php.svn-base | 54 + .../.svn/text-base/NotMatchValidator.php.svn-base | 77 + .../.svn/text-base/RequiredValidator.php.svn-base | 49 + .../.svn/text-base/TypeValidator.php.svn-base | 44 + .../.svn/text-base/UniqueValidator.php.svn-base | 59 + .../text-base/ValidValuesValidator.php.svn-base | 44 + .../.svn/text-base/ValidationFailed.php.svn-base | 126 + .../lib/vendor/propel/validator/BasicValidator.php | 46 + .../lib/vendor/propel/validator/MatchValidator.php | 79 + .../vendor/propel/validator/MaxLengthValidator.php | 50 + .../vendor/propel/validator/MaxValueValidator.php | 54 + .../vendor/propel/validator/MinLengthValidator.php | 47 + .../vendor/propel/validator/MinValueValidator.php | 54 + .../vendor/propel/validator/NotMatchValidator.php | 77 + .../vendor/propel/validator/RequiredValidator.php | 49 + .../lib/vendor/propel/validator/TypeValidator.php | 44 + .../vendor/propel/validator/UniqueValidator.php | 59 + .../propel/validator/ValidValuesValidator.php | 44 + .../vendor/propel/validator/ValidationFailed.php | 126 + .../sfPropelPlugin/lib/widget/.svn/all-wcprops | 11 + .../plugins/sfPropelPlugin/lib/widget/.svn/entries | 62 + .../sfWidgetFormPropelChoice.class.php.svn-base | 13 + .../sfWidgetFormPropelChoice.class.php.svn-base | 108 + .../lib/widget/sfWidgetFormPropelChoice.class.php | 108 + .../plugins/sfPropelPlugin/test/.svn/all-wcprops | 5 + .../lib/plugins/sfPropelPlugin/test/.svn/entries | 40 + .../sfPropelPlugin/test/bin/.svn/all-wcprops | 11 + .../plugins/sfPropelPlugin/test/bin/.svn/entries | 62 + .../test/bin/.svn/prop-base/prove.php.svn-base | 9 + .../test/bin/.svn/text-base/prove.php.svn-base | 31 + .../lib/plugins/sfPropelPlugin/test/bin/prove.php | 31 + .../sfPropelPlugin/test/bootstrap/.svn/all-wcprops | 17 + .../sfPropelPlugin/test/bootstrap/.svn/entries | 96 + .../.svn/prop-base/functional.php.svn-base | 13 + .../bootstrap/.svn/prop-base/unit.php.svn-base | 13 + .../.svn/text-base/functional.php.svn-base | 55 + .../bootstrap/.svn/text-base/unit.php.svn-base | 20 + .../sfPropelPlugin/test/bootstrap/functional.php | 55 + .../plugins/sfPropelPlugin/test/bootstrap/unit.php | 20 + .../test/functional/.svn/all-wcprops | 29 + .../sfPropelPlugin/test/functional/.svn/entries | 170 + .../.svn/prop-base/formTest.php.svn-base | 13 + .../.svn/prop-base/i18nTest.php.svn-base | 13 + .../.svn/prop-base/pagerTest.php.svn-base | 9 + .../.svn/prop-base/poolingTest.php.svn-base | 9 + .../.svn/text-base/formTest.php.svn-base | 280 + .../.svn/text-base/i18nTest.php.svn-base | 159 + .../.svn/text-base/pagerTest.php.svn-base | 39 + .../.svn/text-base/poolingTest.php.svn-base | 30 + .../test/functional/crud/.svn/all-wcprops | 65 + .../test/functional/crud/.svn/entries | 368 + .../crud/.svn/prop-base/crud10Test.php.svn-base | 13 + .../crud/.svn/prop-base/crud2Test.php.svn-base | 13 + .../crud/.svn/prop-base/crud3Test.php.svn-base | 13 + .../crud/.svn/prop-base/crud6Test.php.svn-base | 13 + .../crud/.svn/prop-base/crud7Test.php.svn-base | 13 + .../crud/.svn/prop-base/crud9Test.php.svn-base | 13 + .../.svn/prop-base/crudBrowser.class.php.svn-base | 13 + .../crud/.svn/prop-base/rest1Test.php.svn-base | 13 + .../crud/.svn/prop-base/rest2Test.php.svn-base | 13 + .../.svn/prop-base/restBrowser.class.php.svn-base | 13 + .../crud/.svn/text-base/crud10Test.php.svn-base | 21 + .../crud/.svn/text-base/crud2Test.php.svn-base | 21 + .../crud/.svn/text-base/crud3Test.php.svn-base | 21 + .../crud/.svn/text-base/crud6Test.php.svn-base | 21 + .../crud/.svn/text-base/crud7Test.php.svn-base | 21 + .../crud/.svn/text-base/crud9Test.php.svn-base | 21 + .../.svn/text-base/crudBrowser.class.php.svn-base | 359 + .../crud/.svn/text-base/rest1Test.php.svn-base | 21 + .../crud/.svn/text-base/rest2Test.php.svn-base | 21 + .../.svn/text-base/restBrowser.class.php.svn-base | 36 + .../test/functional/crud/crud10Test.php | 21 + .../test/functional/crud/crud2Test.php | 21 + .../test/functional/crud/crud3Test.php | 21 + .../test/functional/crud/crud6Test.php | 21 + .../test/functional/crud/crud7Test.php | 21 + .../test/functional/crud/crud9Test.php | 21 + .../test/functional/crud/crudBrowser.class.php | 359 + .../test/functional/crud/rest1Test.php | 21 + .../test/functional/crud/rest2Test.php | 21 + .../test/functional/crud/restBrowser.class.php | 36 + .../test/functional/fixtures/.svn/all-wcprops | 11 + .../test/functional/fixtures/.svn/entries | 86 + .../fixtures/.svn/prop-base/symfony.svn-base | 5 + .../fixtures/.svn/text-base/symfony.svn-base | 15 + .../test/functional/fixtures/apps/.svn/all-wcprops | 5 + .../test/functional/fixtures/apps/.svn/entries | 37 + .../fixtures/apps/backend_compat/.svn/all-wcprops | 5 + .../fixtures/apps/backend_compat/.svn/entries | 43 + .../apps/backend_compat/config/.svn/all-wcprops | 59 + .../apps/backend_compat/config/.svn/entries | 334 + .../backend_compatConfiguration.class.php.svn-base | 13 + .../config/.svn/text-base/app.yml.svn-base | 2 + .../backend_compatConfiguration.class.php.svn-base | 8 + .../config/.svn/text-base/cache.yml.svn-base | 4 + .../config/.svn/text-base/factories.yml.svn-base | 17 + .../config/.svn/text-base/filters.yml.svn-base | 9 + .../config/.svn/text-base/routing.yml.svn-base | 15 + .../config/.svn/text-base/security.yml.svn-base | 2 + .../config/.svn/text-base/settings.yml.svn-base | 20 + .../config/.svn/text-base/view.yml.svn-base | 17 + .../fixtures/apps/backend_compat/config/app.yml | 2 + .../config/backend_compatConfiguration.class.php | 8 + .../fixtures/apps/backend_compat/config/cache.yml | 4 + .../apps/backend_compat/config/factories.yml | 17 + .../apps/backend_compat/config/filters.yml | 9 + .../apps/backend_compat/config/routing.yml | 15 + .../apps/backend_compat/config/security.yml | 2 + .../apps/backend_compat/config/settings.yml | 20 + .../fixtures/apps/backend_compat/config/view.yml | 17 + .../apps/backend_compat/i18n/.svn/all-wcprops | 5 + .../fixtures/apps/backend_compat/i18n/.svn/entries | 28 + .../apps/backend_compat/lib/.svn/all-wcprops | 11 + .../fixtures/apps/backend_compat/lib/.svn/entries | 62 + .../lib/.svn/prop-base/myUser.class.php.svn-base | 13 + .../lib/.svn/text-base/myUser.class.php.svn-base | 5 + .../apps/backend_compat/lib/myUser.class.php | 5 + .../apps/backend_compat/modules/.svn/all-wcprops | 5 + .../apps/backend_compat/modules/.svn/entries | 40 + .../modules/article/.svn/all-wcprops | 5 + .../backend_compat/modules/article/.svn/entries | 37 + .../modules/article/actions/.svn/all-wcprops | 11 + .../modules/article/actions/.svn/entries | 62 + .../.svn/prop-base/actions.class.php.svn-base | 13 + .../.svn/text-base/actions.class.php.svn-base | 17 + .../modules/article/actions/actions.class.php | 17 + .../modules/article/config/.svn/all-wcprops | 11 + .../modules/article/config/.svn/entries | 62 + .../config/.svn/text-base/generator.yml.svn-base | 5 + .../modules/article/config/generator.yml | 5 + .../modules/article/templates/.svn/all-wcprops | 11 + .../modules/article/templates/.svn/entries | 62 + .../templates/.svn/prop-base/_body.php.svn-base | 13 + .../templates/.svn/text-base/_body.php.svn-base | 9 + .../modules/article/templates/_body.php | 9 + .../backend_compat/modules/error/.svn/all-wcprops | 5 + .../apps/backend_compat/modules/error/.svn/entries | 37 + .../modules/error/actions/.svn/all-wcprops | 11 + .../modules/error/actions/.svn/entries | 62 + .../.svn/prop-base/actions.class.php.svn-base | 13 + .../.svn/text-base/actions.class.php.svn-base | 13 + .../modules/error/actions/actions.class.php | 13 + .../modules/error/config/.svn/all-wcprops | 11 + .../modules/error/config/.svn/entries | 62 + .../config/.svn/text-base/generator.yml.svn-base | 5 + .../modules/error/config/generator.yml | 5 + .../modules/error/templates/.svn/all-wcprops | 5 + .../modules/error/templates/.svn/entries | 28 + .../modules/inheritance/.svn/all-wcprops | 5 + .../modules/inheritance/.svn/entries | 37 + .../modules/inheritance/actions/.svn/all-wcprops | 11 + .../modules/inheritance/actions/.svn/entries | 62 + .../.svn/prop-base/actions.class.php.svn-base | 13 + .../.svn/text-base/actions.class.php.svn-base | 28 + .../modules/inheritance/actions/actions.class.php | 28 + .../modules/inheritance/config/.svn/all-wcprops | 11 + .../modules/inheritance/config/.svn/entries | 62 + .../config/.svn/text-base/generator.yml.svn-base | 5 + .../modules/inheritance/config/generator.yml | 5 + .../modules/inheritance/templates/.svn/all-wcprops | 5 + .../modules/inheritance/templates/.svn/entries | 28 + .../modules/validation/.svn/all-wcprops | 5 + .../backend_compat/modules/validation/.svn/entries | 40 + .../modules/validation/actions/.svn/all-wcprops | 11 + .../modules/validation/actions/.svn/entries | 62 + .../.svn/prop-base/actions.class.php.svn-base | 13 + .../.svn/text-base/actions.class.php.svn-base | 13 + .../modules/validation/actions/actions.class.php | 13 + .../modules/validation/config/.svn/all-wcprops | 11 + .../modules/validation/config/.svn/entries | 62 + .../config/.svn/text-base/generator.yml.svn-base | 5 + .../modules/validation/config/generator.yml | 5 + .../modules/validation/templates/.svn/all-wcprops | 5 + .../modules/validation/templates/.svn/entries | 28 + .../modules/validation/validate/.svn/all-wcprops | 11 + .../modules/validation/validate/.svn/entries | 62 + .../validate/.svn/text-base/edit.yml.svn-base | 13 + .../modules/validation/validate/edit.yml | 13 + .../apps/backend_compat/templates/.svn/all-wcprops | 11 + .../apps/backend_compat/templates/.svn/entries | 62 + .../templates/.svn/prop-base/layout.php.svn-base | 13 + .../templates/.svn/text-base/layout.php.svn-base | 21 + .../apps/backend_compat/templates/layout.php | 21 + .../functional/fixtures/apps/crud/.svn/all-wcprops | 5 + .../functional/fixtures/apps/crud/.svn/entries | 43 + .../fixtures/apps/crud/config/.svn/all-wcprops | 59 + .../fixtures/apps/crud/config/.svn/entries | 334 + .../prop-base/crudConfiguration.class.php.svn-base | 13 + .../crud/config/.svn/text-base/app.yml.svn-base | 2 + .../crud/config/.svn/text-base/cache.yml.svn-base | 4 + .../text-base/crudConfiguration.class.php.svn-base | 8 + .../config/.svn/text-base/factories.yml.svn-base | 17 + .../config/.svn/text-base/filters.yml.svn-base | 9 + .../config/.svn/text-base/routing.yml.svn-base | 27 + .../config/.svn/text-base/security.yml.svn-base | 2 + .../config/.svn/text-base/settings.yml.svn-base | 24 + .../crud/config/.svn/text-base/view.yml.svn-base | 17 + .../functional/fixtures/apps/crud/config/app.yml | 2 + .../functional/fixtures/apps/crud/config/cache.yml | 4 + .../apps/crud/config/crudConfiguration.class.php | 8 + .../fixtures/apps/crud/config/factories.yml | 17 + .../fixtures/apps/crud/config/filters.yml | 9 + .../fixtures/apps/crud/config/routing.yml | 27 + .../fixtures/apps/crud/config/security.yml | 2 + .../fixtures/apps/crud/config/settings.yml | 24 + .../functional/fixtures/apps/crud/config/view.yml | 17 + .../fixtures/apps/crud/i18n/.svn/all-wcprops | 5 + .../fixtures/apps/crud/i18n/.svn/entries | 28 + .../fixtures/apps/crud/lib/.svn/all-wcprops | 11 + .../functional/fixtures/apps/crud/lib/.svn/entries | 62 + .../lib/.svn/prop-base/myUser.class.php.svn-base | 13 + .../lib/.svn/text-base/myUser.class.php.svn-base | 5 + .../fixtures/apps/crud/lib/myUser.class.php | 5 + .../fixtures/apps/crud/modules/.svn/all-wcprops | 5 + .../fixtures/apps/crud/modules/.svn/entries | 31 + .../apps/crud/modules/error/.svn/all-wcprops | 5 + .../fixtures/apps/crud/modules/error/.svn/entries | 40 + .../crud/modules/error/actions/.svn/all-wcprops | 11 + .../apps/crud/modules/error/actions/.svn/entries | 62 + .../.svn/prop-base/actions.class.php.svn-base | 13 + .../.svn/text-base/actions.class.php.svn-base | 13 + .../crud/modules/error/actions/actions.class.php | 13 + .../crud/modules/error/config/.svn/all-wcprops | 11 + .../apps/crud/modules/error/config/.svn/entries | 62 + .../config/.svn/text-base/generator.yml.svn-base | 5 + .../apps/crud/modules/error/config/generator.yml | 5 + .../apps/crud/modules/error/lib/.svn/all-wcprops | 5 + .../apps/crud/modules/error/lib/.svn/entries | 28 + .../crud/modules/error/templates/.svn/all-wcprops | 5 + .../apps/crud/modules/error/templates/.svn/entries | 28 + .../fixtures/apps/crud/templates/.svn/all-wcprops | 11 + .../fixtures/apps/crud/templates/.svn/entries | 62 + .../templates/.svn/prop-base/layout.php.svn-base | 13 + .../templates/.svn/text-base/layout.php.svn-base | 21 + .../fixtures/apps/crud/templates/layout.php | 21 + .../fixtures/apps/frontend/.svn/all-wcprops | 5 + .../functional/fixtures/apps/frontend/.svn/entries | 43 + .../fixtures/apps/frontend/config/.svn/all-wcprops | 59 + .../fixtures/apps/frontend/config/.svn/entries | 334 + .../frontendConfiguration.class.php.svn-base | 13 + .../config/.svn/text-base/app.yml.svn-base | 2 + .../config/.svn/text-base/cache.yml.svn-base | 4 + .../config/.svn/text-base/factories.yml.svn-base | 17 + .../config/.svn/text-base/filters.yml.svn-base | 8 + .../frontendConfiguration.class.php.svn-base | 8 + .../config/.svn/text-base/routing.yml.svn-base | 15 + .../config/.svn/text-base/security.yml.svn-base | 2 + .../config/.svn/text-base/settings.yml.svn-base | 29 + .../config/.svn/text-base/view.yml.svn-base | 17 + .../fixtures/apps/frontend/config/app.yml | 2 + .../fixtures/apps/frontend/config/cache.yml | 4 + .../fixtures/apps/frontend/config/factories.yml | 17 + .../fixtures/apps/frontend/config/filters.yml | 8 + .../config/frontendConfiguration.class.php | 8 + .../fixtures/apps/frontend/config/routing.yml | 15 + .../fixtures/apps/frontend/config/security.yml | 2 + .../fixtures/apps/frontend/config/settings.yml | 29 + .../fixtures/apps/frontend/config/view.yml | 17 + .../fixtures/apps/frontend/i18n/.svn/all-wcprops | 5 + .../fixtures/apps/frontend/i18n/.svn/entries | 28 + .../fixtures/apps/frontend/lib/.svn/all-wcprops | 11 + .../fixtures/apps/frontend/lib/.svn/entries | 62 + .../lib/.svn/prop-base/myUser.class.php.svn-base | 13 + .../lib/.svn/text-base/myUser.class.php.svn-base | 5 + .../fixtures/apps/frontend/lib/myUser.class.php | 5 + .../apps/frontend/modules/.svn/all-wcprops | 5 + .../fixtures/apps/frontend/modules/.svn/entries | 46 + .../frontend/modules/attachment/.svn/all-wcprops | 5 + .../apps/frontend/modules/attachment/.svn/entries | 34 + .../modules/attachment/actions/.svn/all-wcprops | 11 + .../modules/attachment/actions/.svn/entries | 62 + .../.svn/prop-base/actions.class.php.svn-base | 13 + .../.svn/text-base/actions.class.php.svn-base | 51 + .../modules/attachment/actions/actions.class.php | 51 + .../modules/attachment/templates/.svn/all-wcprops | 11 + .../modules/attachment/templates/.svn/entries | 62 + .../.svn/prop-base/indexSuccess.php.svn-base | 13 + .../.svn/text-base/indexSuccess.php.svn-base | 10 + .../modules/attachment/templates/indexSuccess.php | 10 + .../apps/frontend/modules/choice/.svn/all-wcprops | 5 + .../apps/frontend/modules/choice/.svn/entries | 34 + .../modules/choice/actions/.svn/all-wcprops | 11 + .../frontend/modules/choice/actions/.svn/entries | 62 + .../.svn/prop-base/actions.class.php.svn-base | 9 + .../.svn/text-base/actions.class.php.svn-base | 50 + .../modules/choice/actions/actions.class.php | 50 + .../modules/choice/templates/.svn/all-wcprops | 11 + .../frontend/modules/choice/templates/.svn/entries | 62 + .../.svn/prop-base/articleSuccess.php.svn-base | 9 + .../.svn/text-base/articleSuccess.php.svn-base | 10 + .../modules/choice/templates/articleSuccess.php | 10 + .../apps/frontend/modules/i18n/.svn/all-wcprops | 5 + .../apps/frontend/modules/i18n/.svn/entries | 34 + .../frontend/modules/i18n/actions/.svn/all-wcprops | 11 + .../frontend/modules/i18n/actions/.svn/entries | 62 + .../.svn/prop-base/actions.class.php.svn-base | 13 + .../.svn/text-base/actions.class.php.svn-base | 48 + .../modules/i18n/actions/actions.class.php | 48 + .../modules/i18n/templates/.svn/all-wcprops | 23 + .../frontend/modules/i18n/templates/.svn/entries | 130 + .../.svn/prop-base/indexSuccess.php.svn-base | 13 + .../.svn/prop-base/movieSuccess.php.svn-base | 13 + .../.svn/prop-base/productsSuccess.php.svn-base | 9 + .../.svn/text-base/indexSuccess.php.svn-base | 8 + .../.svn/text-base/movieSuccess.php.svn-base | 10 + .../.svn/text-base/productsSuccess.php.svn-base | 5 + .../modules/i18n/templates/indexSuccess.php | 8 + .../modules/i18n/templates/movieSuccess.php | 10 + .../modules/i18n/templates/productsSuccess.php | 5 + .../apps/frontend/modules/pager/.svn/all-wcprops | 5 + .../apps/frontend/modules/pager/.svn/entries | 34 + .../modules/pager/actions/.svn/all-wcprops | 11 + .../frontend/modules/pager/actions/.svn/entries | 62 + .../.svn/prop-base/actions.class.php.svn-base | 9 + .../.svn/text-base/actions.class.php.svn-base | 10 + .../modules/pager/actions/actions.class.php | 10 + .../modules/pager/templates/.svn/all-wcprops | 11 + .../frontend/modules/pager/templates/.svn/entries | 62 + .../.svn/prop-base/interfacesSuccess.php.svn-base | 9 + .../.svn/text-base/interfacesSuccess.php.svn-base | 7 + .../modules/pager/templates/interfacesSuccess.php | 7 + .../apps/frontend/modules/pooling/.svn/all-wcprops | 5 + .../apps/frontend/modules/pooling/.svn/entries | 31 + .../modules/pooling/actions/.svn/all-wcprops | 11 + .../frontend/modules/pooling/actions/.svn/entries | 62 + .../.svn/prop-base/actions.class.php.svn-base | 9 + .../.svn/text-base/actions.class.php.svn-base | 35 + .../modules/pooling/actions/actions.class.php | 35 + .../apps/frontend/modules/unique/.svn/all-wcprops | 5 + .../apps/frontend/modules/unique/.svn/entries | 34 + .../modules/unique/actions/.svn/all-wcprops | 11 + .../frontend/modules/unique/actions/.svn/entries | 62 + .../.svn/prop-base/actions.class.php.svn-base | 13 + .../.svn/text-base/actions.class.php.svn-base | 74 + .../modules/unique/actions/actions.class.php | 74 + .../modules/unique/templates/.svn/all-wcprops | 23 + .../frontend/modules/unique/templates/.svn/entries | 130 + .../.svn/prop-base/articleSuccess.php.svn-base | 13 + .../.svn/prop-base/categorySuccess.php.svn-base | 13 + .../.svn/prop-base/editSuccess.php.svn-base | 13 + .../.svn/text-base/articleSuccess.php.svn-base | 10 + .../.svn/text-base/categorySuccess.php.svn-base | 10 + .../.svn/text-base/editSuccess.php.svn-base | 10 + .../modules/unique/templates/articleSuccess.php | 10 + .../modules/unique/templates/categorySuccess.php | 10 + .../modules/unique/templates/editSuccess.php | 10 + .../apps/frontend/templates/.svn/all-wcprops | 11 + .../fixtures/apps/frontend/templates/.svn/entries | 62 + .../templates/.svn/prop-base/layout.php.svn-base | 13 + .../templates/.svn/text-base/layout.php.svn-base | 21 + .../fixtures/apps/frontend/templates/layout.php | 21 + .../functional/fixtures/cache/.svn/all-wcprops | 5 + .../functional/fixtures/cache/.svn/dir-prop-base | 6 + .../test/functional/fixtures/cache/.svn/entries | 28 + .../functional/fixtures/config/.svn/all-wcprops | 41 + .../functional/fixtures/config/.svn/dir-prop-base | 6 + .../test/functional/fixtures/config/.svn/entries | 232 + .../ProjectConfiguration.class.php.svn-base | 13 + .../ProjectConfiguration.class.php.svn-base | 85 + .../config/.svn/text-base/databases.yml.svn-base | 11 + .../config/.svn/text-base/propel.ini.svn-base | 55 + .../config/.svn/text-base/properties.ini.svn-base | 2 + .../.svn/text-base/rsync_exclude.txt.svn-base | 5 + .../config/.svn/text-base/schema.xml.svn-base | 105 + .../fixtures/config/ProjectConfiguration.class.php | 85 + .../test/functional/fixtures/config/databases.yml | 11 + .../test/functional/fixtures/config/propel.ini | 55 + .../test/functional/fixtures/config/properties.ini | 2 + .../functional/fixtures/config/rsync_exclude.txt | 5 + .../test/functional/fixtures/config/schema.xml | 105 + .../test/functional/fixtures/data/.svn/all-wcprops | 11 + .../functional/fixtures/data/.svn/dir-prop-base | 7 + .../test/functional/fixtures/data/.svn/entries | 68 + .../.svn/text-base/environment.migrated.svn-base | 0 .../functional/fixtures/data/environment.migrated | 0 .../fixtures/data/fixtures/.svn/all-wcprops | 11 + .../functional/fixtures/data/fixtures/.svn/entries | 62 + .../fixtures/.svn/text-base/fixtures.yml.svn-base | 62 + .../functional/fixtures/data/fixtures/fixtures.yml | 62 + .../fixtures/data/migrations/.svn/all-wcprops | 5 + .../fixtures/data/migrations/.svn/entries | 28 + .../test/functional/fixtures/lib/.svn/all-wcprops | 5 + .../test/functional/fixtures/lib/.svn/entries | 37 + .../fixtures/lib/filter/.svn/all-wcprops | 65 + .../fixtures/lib/filter/.svn/dir-prop-base | 6 + .../functional/fixtures/lib/filter/.svn/entries | 368 + .../prop-base/ArticleFormFilter.class.php.svn-base | 9 + .../AttachmentFormFilter.class.php.svn-base | 9 + .../prop-base/AuthorFormFilter.class.php.svn-base | 9 + .../BaseFormFilterPropel.class.php.svn-base | 9 + .../prop-base/BookFormFilter.class.php.svn-base | 9 + .../CategoryFormFilter.class.php.svn-base | 9 + .../prop-base/MovieFormFilter.class.php.svn-base | 9 + .../MovieI18nFormFilter.class.php.svn-base | 9 + .../prop-base/ProductFormFilter.class.php.svn-base | 9 + .../ProductI18nFormFilter.class.php.svn-base | 9 + .../text-base/ArticleFormFilter.class.php.svn-base | 16 + .../AttachmentFormFilter.class.php.svn-base | 16 + .../text-base/AuthorFormFilter.class.php.svn-base | 16 + .../BaseFormFilterPropel.class.php.svn-base | 16 + .../text-base/BookFormFilter.class.php.svn-base | 16 + .../CategoryFormFilter.class.php.svn-base | 16 + .../text-base/MovieFormFilter.class.php.svn-base | 16 + .../MovieI18nFormFilter.class.php.svn-base | 16 + .../text-base/ProductFormFilter.class.php.svn-base | 16 + .../ProductI18nFormFilter.class.php.svn-base | 16 + .../lib/filter/ArticleFormFilter.class.php | 16 + .../lib/filter/AttachmentFormFilter.class.php | 16 + .../fixtures/lib/filter/AuthorFormFilter.class.php | 16 + .../lib/filter/BaseFormFilterPropel.class.php | 16 + .../fixtures/lib/filter/BookFormFilter.class.php | 16 + .../lib/filter/CategoryFormFilter.class.php | 16 + .../fixtures/lib/filter/MovieFormFilter.class.php | 16 + .../lib/filter/MovieI18nFormFilter.class.php | 16 + .../lib/filter/ProductFormFilter.class.php | 16 + .../lib/filter/ProductI18nFormFilter.class.php | 16 + .../functional/fixtures/lib/form/.svn/all-wcprops | 71 + .../fixtures/lib/form/.svn/dir-prop-base | 6 + .../test/functional/fixtures/lib/form/.svn/entries | 402 + .../.svn/prop-base/ArticleForm.class.php.svn-base | 13 + .../prop-base/AttachmentForm.class.php.svn-base | 13 + .../.svn/prop-base/AuthorForm.class.php.svn-base | 13 + .../.svn/prop-base/BaseForm.class.php.svn-base | 9 + .../prop-base/BaseFormPropel.class.php.svn-base | 13 + .../.svn/prop-base/BookForm.class.php.svn-base | 13 + .../.svn/prop-base/CategoryForm.class.php.svn-base | 13 + .../.svn/prop-base/MovieForm.class.php.svn-base | 13 + .../prop-base/MovieI18nForm.class.php.svn-base | 13 + .../.svn/prop-base/ProductForm.class.php.svn-base | 9 + .../prop-base/ProductI18nForm.class.php.svn-base | 9 + .../.svn/text-base/ArticleForm.class.php.svn-base | 30 + .../text-base/AttachmentForm.class.php.svn-base | 20 + .../.svn/text-base/AuthorForm.class.php.svn-base | 15 + .../.svn/text-base/BaseForm.class.php.svn-base | 13 + .../text-base/BaseFormPropel.class.php.svn-base | 14 + .../.svn/text-base/BookForm.class.php.svn-base | 15 + .../.svn/text-base/CategoryForm.class.php.svn-base | 15 + .../.svn/text-base/MovieForm.class.php.svn-base | 16 + .../text-base/MovieI18nForm.class.php.svn-base | 15 + .../.svn/text-base/ProductForm.class.php.svn-base | 15 + .../text-base/ProductI18nForm.class.php.svn-base | 15 + .../fixtures/lib/form/ArticleForm.class.php | 30 + .../fixtures/lib/form/AttachmentForm.class.php | 20 + .../fixtures/lib/form/AuthorForm.class.php | 15 + .../fixtures/lib/form/BaseForm.class.php | 13 + .../fixtures/lib/form/BaseFormPropel.class.php | 14 + .../fixtures/lib/form/BookForm.class.php | 15 + .../fixtures/lib/form/CategoryForm.class.php | 15 + .../fixtures/lib/form/MovieForm.class.php | 16 + .../fixtures/lib/form/MovieI18nForm.class.php | 15 + .../fixtures/lib/form/ProductForm.class.php | 15 + .../fixtures/lib/form/ProductI18nForm.class.php | 15 + .../functional/fixtures/lib/model/.svn/all-wcprops | 125 + .../fixtures/lib/model/.svn/dir-prop-base | 7 + .../functional/fixtures/lib/model/.svn/entries | 708 + .../lib/model/.svn/prop-base/Article.php.svn-base | 13 + .../model/.svn/prop-base/ArticlePeer.php.svn-base | 13 + .../model/.svn/prop-base/Attachment.php.svn-base | 13 + .../.svn/prop-base/AttachmentPeer.php.svn-base | 13 + .../lib/model/.svn/prop-base/Author.php.svn-base | 13 + .../.svn/prop-base/AuthorArticle.php.svn-base | 13 + .../.svn/prop-base/AuthorArticlePeer.php.svn-base | 13 + .../model/.svn/prop-base/AuthorPeer.php.svn-base | 13 + .../lib/model/.svn/prop-base/Book.php.svn-base | 13 + .../lib/model/.svn/prop-base/BookPeer.php.svn-base | 13 + .../lib/model/.svn/prop-base/Category.php.svn-base | 13 + .../model/.svn/prop-base/CategoryPeer.php.svn-base | 13 + .../lib/model/.svn/prop-base/Movie.php.svn-base | 13 + .../model/.svn/prop-base/MovieI18n.php.svn-base | 13 + .../.svn/prop-base/MovieI18nPeer.php.svn-base | 13 + .../model/.svn/prop-base/MoviePeer.php.svn-base | 13 + .../lib/model/.svn/prop-base/Product.php.svn-base | 9 + .../model/.svn/prop-base/ProductI18n.php.svn-base | 9 + .../.svn/prop-base/ProductI18nPeer.php.svn-base | 9 + .../model/.svn/prop-base/ProductPeer.php.svn-base | 9 + .../lib/model/.svn/text-base/Article.php.svn-base | 23 + .../model/.svn/text-base/ArticlePeer.php.svn-base | 12 + .../model/.svn/text-base/Attachment.php.svn-base | 16 + .../.svn/text-base/AttachmentPeer.php.svn-base | 12 + .../lib/model/.svn/text-base/Author.php.svn-base | 28 + .../.svn/text-base/AuthorArticle.php.svn-base | 23 + .../.svn/text-base/AuthorArticlePeer.php.svn-base | 12 + .../model/.svn/text-base/AuthorPeer.php.svn-base | 12 + .../lib/model/.svn/text-base/Book.php.svn-base | 27 + .../lib/model/.svn/text-base/BookPeer.php.svn-base | 12 + .../lib/model/.svn/text-base/Category.php.svn-base | 27 + .../model/.svn/text-base/CategoryPeer.php.svn-base | 19 + .../lib/model/.svn/text-base/Movie.php.svn-base | 12 + .../model/.svn/text-base/MovieI18n.php.svn-base | 12 + .../.svn/text-base/MovieI18nPeer.php.svn-base | 12 + .../model/.svn/text-base/MoviePeer.php.svn-base | 12 + .../lib/model/.svn/text-base/Product.php.svn-base | 24 + .../model/.svn/text-base/ProductI18n.php.svn-base | 24 + .../.svn/text-base/ProductI18nPeer.php.svn-base | 13 + .../model/.svn/text-base/ProductPeer.php.svn-base | 13 + .../test/functional/fixtures/lib/model/Article.php | 23 + .../functional/fixtures/lib/model/ArticlePeer.php | 12 + .../functional/fixtures/lib/model/Attachment.php | 16 + .../fixtures/lib/model/AttachmentPeer.php | 12 + .../test/functional/fixtures/lib/model/Author.php | 28 + .../fixtures/lib/model/AuthorArticle.php | 23 + .../fixtures/lib/model/AuthorArticlePeer.php | 12 + .../functional/fixtures/lib/model/AuthorPeer.php | 12 + .../test/functional/fixtures/lib/model/Book.php | 27 + .../functional/fixtures/lib/model/BookPeer.php | 12 + .../functional/fixtures/lib/model/Category.php | 27 + .../functional/fixtures/lib/model/CategoryPeer.php | 19 + .../test/functional/fixtures/lib/model/Movie.php | 12 + .../functional/fixtures/lib/model/MovieI18n.php | 12 + .../fixtures/lib/model/MovieI18nPeer.php | 12 + .../functional/fixtures/lib/model/MoviePeer.php | 12 + .../test/functional/fixtures/lib/model/Product.php | 24 + .../functional/fixtures/lib/model/ProductI18n.php | 24 + .../fixtures/lib/model/ProductI18nPeer.php | 13 + .../functional/fixtures/lib/model/ProductPeer.php | 13 + .../test/functional/fixtures/log/.svn/all-wcprops | 5 + .../functional/fixtures/log/.svn/dir-prop-base | 6 + .../test/functional/fixtures/log/.svn/entries | 28 + .../functional/fixtures/plugins/.svn/all-wcprops | 5 + .../test/functional/fixtures/plugins/.svn/entries | 28 + .../test/functional/fixtures/symfony | 15 + .../test/functional/fixtures/test/.svn/all-wcprops | 5 + .../test/functional/fixtures/test/.svn/entries | 31 + .../fixtures/test/functional/.svn/all-wcprops | 5 + .../fixtures/test/functional/.svn/entries | 28 + .../sfPropelPlugin/test/functional/formTest.php | 280 + .../sfPropelPlugin/test/functional/i18nTest.php | 159 + .../sfPropelPlugin/test/functional/pagerTest.php | 39 + .../sfPropelPlugin/test/functional/poolingTest.php | 30 + .../sfPropelPlugin/test/unit/.svn/all-wcprops | 17 + .../plugins/sfPropelPlugin/test/unit/.svn/entries | 114 + .../unit/.svn/prop-base/sfMixerTest.php.svn-base | 13 + .../sfPropelDatabaseSchemaTest.php.svn-base | 13 + .../unit/.svn/text-base/sfMixerTest.php.svn-base | 170 + .../sfPropelDatabaseSchemaTest.php.svn-base | 88 + .../test/unit/database/.svn/all-wcprops | 11 + .../sfPropelPlugin/test/unit/database/.svn/entries | 62 + .../prop-base/sfPropelDatabaseTest.php.svn-base | 13 + .../text-base/sfPropelDatabaseTest.php.svn-base | 59 + .../test/unit/database/sfPropelDatabaseTest.php | 59 + .../test/unit/debug/.svn/all-wcprops | 11 + .../sfPropelPlugin/test/unit/debug/.svn/entries | 62 + .../sfWebDebugPanelPropelTest.php.svn-base | 9 + .../sfWebDebugPanelPropelTest.php.svn-base | 57 + .../test/unit/debug/sfWebDebugPanelPropelTest.php | 57 + .../test/unit/fixtures/.svn/all-wcprops | 23 + .../sfPropelPlugin/test/unit/fixtures/.svn/entries | 130 + .../.svn/text-base/new_schema.yml.svn-base | 113 + .../fixtures/.svn/text-base/schema.xml.svn-base | 119 + .../fixtures/.svn/text-base/schema.yml.svn-base | 95 + .../test/unit/fixtures/new_schema.yml | 113 + .../sfPropelPlugin/test/unit/fixtures/schema.xml | 119 + .../sfPropelPlugin/test/unit/fixtures/schema.yml | 95 + .../sfPropelPlugin/test/unit/form/.svn/all-wcprops | 11 + .../sfPropelPlugin/test/unit/form/.svn/entries | 62 + .../.svn/prop-base/sfFormPropelTest.php.svn-base | 9 + .../.svn/text-base/sfFormPropelTest.php.svn-base | 37 + .../test/unit/form/sfFormPropelTest.php | 37 + .../sfPropelPlugin/test/unit/sfMixerTest.php | 170 + .../test/unit/sfPropelDatabaseSchemaTest.php | 88 + .../sfPropelPlugin/test/unit/task/.svn/all-wcprops | 11 + .../sfPropelPlugin/test/unit/task/.svn/entries | 62 + .../task/.svn/prop-base/sfPhingTest.php.svn-base | 9 + .../task/.svn/text-base/sfPhingTest.php.svn-base | 18 + .../sfPropelPlugin/test/unit/task/sfPhingTest.php | 18 + .../test/unit/validator/.svn/all-wcprops | 11 + .../test/unit/validator/.svn/entries | 62 + .../sfValidatorPropelUniqueTest.php.svn-base | 9 + .../sfValidatorPropelUniqueTest.php.svn-base | 58 + .../unit/validator/sfValidatorPropelUniqueTest.php | 58 + .../plugins/sfPropelPlugin/web/.svn/all-wcprops | 5 + .../lib/plugins/sfPropelPlugin/web/.svn/entries | 34 + .../sfPropelPlugin/web/css/.svn/all-wcprops | 17 + .../plugins/sfPropelPlugin/web/css/.svn/entries | 96 + .../web/css/.svn/prop-base/default.css.svn-base | 5 + .../web/css/.svn/prop-base/global.css.svn-base | 5 + .../web/css/.svn/text-base/default.css.svn-base | 271 + .../web/css/.svn/text-base/global.css.svn-base | 34 + .../lib/plugins/sfPropelPlugin/web/css/default.css | 271 + .../lib/plugins/sfPropelPlugin/web/css/global.css | 34 + .../sfPropelPlugin/web/images/.svn/all-wcprops | 83 + .../plugins/sfPropelPlugin/web/images/.svn/entries | 470 + .../web/images/.svn/prop-base/asc.png.svn-base | 9 + .../web/images/.svn/prop-base/default.png.svn-base | 9 + .../web/images/.svn/prop-base/delete.png.svn-base | 9 + .../web/images/.svn/prop-base/desc.png.svn-base | 9 + .../web/images/.svn/prop-base/edit.png.svn-base | 9 + .../web/images/.svn/prop-base/error.png.svn-base | 9 + .../web/images/.svn/prop-base/first.png.svn-base | 9 + .../web/images/.svn/prop-base/last.png.svn-base | 9 + .../web/images/.svn/prop-base/list.png.svn-base | 9 + .../web/images/.svn/prop-base/new.png.svn-base | 9 + .../web/images/.svn/prop-base/next.png.svn-base | 9 + .../images/.svn/prop-base/previous.png.svn-base | 9 + .../web/images/.svn/prop-base/tick.png.svn-base | 9 + .../web/images/.svn/text-base/asc.png.svn-base | Bin 0 -> 287 bytes .../web/images/.svn/text-base/default.png.svn-base | Bin 0 -> 267 bytes .../web/images/.svn/text-base/delete.png.svn-base | Bin 0 -> 325 bytes .../web/images/.svn/text-base/desc.png.svn-base | Bin 0 -> 285 bytes .../web/images/.svn/text-base/edit.png.svn-base | Bin 0 -> 411 bytes .../web/images/.svn/text-base/error.png.svn-base | Bin 0 -> 438 bytes .../web/images/.svn/text-base/first.png.svn-base | Bin 0 -> 435 bytes .../web/images/.svn/text-base/last.png.svn-base | Bin 0 -> 436 bytes .../web/images/.svn/text-base/list.png.svn-base | Bin 0 -> 267 bytes .../web/images/.svn/text-base/new.png.svn-base | Bin 0 -> 288 bytes .../web/images/.svn/text-base/next.png.svn-base | Bin 0 -> 448 bytes .../images/.svn/text-base/previous.png.svn-base | Bin 0 -> 452 bytes .../web/images/.svn/text-base/tick.png.svn-base | Bin 0 -> 344 bytes .../lib/plugins/sfPropelPlugin/web/images/asc.png | Bin 0 -> 287 bytes .../plugins/sfPropelPlugin/web/images/default.png | Bin 0 -> 267 bytes .../plugins/sfPropelPlugin/web/images/delete.png | Bin 0 -> 325 bytes .../lib/plugins/sfPropelPlugin/web/images/desc.png | Bin 0 -> 285 bytes .../lib/plugins/sfPropelPlugin/web/images/edit.png | Bin 0 -> 411 bytes .../plugins/sfPropelPlugin/web/images/error.png | Bin 0 -> 438 bytes .../plugins/sfPropelPlugin/web/images/first.png | Bin 0 -> 435 bytes .../lib/plugins/sfPropelPlugin/web/images/last.png | Bin 0 -> 436 bytes .../lib/plugins/sfPropelPlugin/web/images/list.png | Bin 0 -> 267 bytes .../lib/plugins/sfPropelPlugin/web/images/new.png | Bin 0 -> 288 bytes .../lib/plugins/sfPropelPlugin/web/images/next.png | Bin 0 -> 448 bytes .../plugins/sfPropelPlugin/web/images/previous.png | Bin 0 -> 452 bytes .../lib/plugins/sfPropelPlugin/web/images/tick.png | Bin 0 -> 344 bytes lib/vendor/symfony/lib/request/.svn/all-wcprops | 17 + lib/vendor/symfony/lib/request/.svn/entries | 96 + .../.svn/prop-base/sfRequest.class.php.svn-base | 13 + .../.svn/prop-base/sfWebRequest.class.php.svn-base | 13 + .../.svn/text-base/sfRequest.class.php.svn-base | 328 + .../.svn/text-base/sfWebRequest.class.php.svn-base | 975 + lib/vendor/symfony/lib/request/sfRequest.class.php | 328 + .../symfony/lib/request/sfWebRequest.class.php | 975 + lib/vendor/symfony/lib/response/.svn/all-wcprops | 17 + lib/vendor/symfony/lib/response/.svn/entries | 96 + .../.svn/prop-base/sfResponse.class.php.svn-base | 13 + .../prop-base/sfWebResponse.class.php.svn-base | 13 + .../.svn/text-base/sfResponse.class.php.svn-base | 169 + .../text-base/sfWebResponse.class.php.svn-base | 874 + .../symfony/lib/response/sfResponse.class.php | 169 + .../symfony/lib/response/sfWebResponse.class.php | 874 + lib/vendor/symfony/lib/routing/.svn/all-wcprops | 47 + lib/vendor/symfony/lib/routing/.svn/entries | 266 + .../prop-base/sfObjectRoute.class.php.svn-base | 13 + .../sfObjectRouteCollection.class.php.svn-base | 13 + .../prop-base/sfPatternRouting.class.php.svn-base | 13 + .../prop-base/sfRequestRoute.class.php.svn-base | 13 + .../.svn/prop-base/sfRoute.class.php.svn-base | 13 + .../prop-base/sfRouteCollection.class.php.svn-base | 13 + .../.svn/prop-base/sfRouting.class.php.svn-base | 13 + .../text-base/sfObjectRoute.class.php.svn-base | 240 + .../sfObjectRouteCollection.class.php.svn-base | 226 + .../text-base/sfPatternRouting.class.php.svn-base | 530 + .../text-base/sfRequestRoute.class.php.svn-base | 107 + .../.svn/text-base/sfRoute.class.php.svn-base | 856 + .../text-base/sfRouteCollection.class.php.svn-base | 110 + .../.svn/text-base/sfRouting.class.php.svn-base | 283 + .../symfony/lib/routing/sfObjectRoute.class.php | 240 + .../lib/routing/sfObjectRouteCollection.class.php | 226 + .../symfony/lib/routing/sfPatternRouting.class.php | 530 + .../symfony/lib/routing/sfRequestRoute.class.php | 107 + lib/vendor/symfony/lib/routing/sfRoute.class.php | 856 + .../lib/routing/sfRouteCollection.class.php | 110 + lib/vendor/symfony/lib/routing/sfRouting.class.php | 283 + lib/vendor/symfony/lib/storage/.svn/all-wcprops | 65 + lib/vendor/symfony/lib/storage/.svn/entries | 368 + .../sfCacheSessionStorage.class.php.svn-base | 9 + .../sfDatabaseSessionStorage.class.php.svn-base | 13 + .../sfMySQLSessionStorage.class.php.svn-base | 13 + .../sfMySQLiSessionStorage.class.php.svn-base | 13 + .../.svn/prop-base/sfNoStorage.class.php.svn-base | 13 + .../sfPDOSessionStorage.class.php.svn-base | 13 + .../sfPostgreSQLSessionStorage.class.php.svn-base | 13 + .../prop-base/sfSessionStorage.class.php.svn-base | 13 + .../sfSessionTestStorage.class.php.svn-base | 13 + .../.svn/prop-base/sfStorage.class.php.svn-base | 13 + .../sfCacheSessionStorage.class.php.svn-base | 283 + .../sfDatabaseSessionStorage.class.php.svn-base | 205 + .../sfMySQLSessionStorage.class.php.svn-base | 216 + .../sfMySQLiSessionStorage.class.php.svn-base | 80 + .../.svn/text-base/sfNoStorage.class.php.svn-base | 93 + .../sfPDOSessionStorage.class.php.svn-base | 174 + .../sfPostgreSQLSessionStorage.class.php.svn-base | 161 + .../text-base/sfSessionStorage.class.php.svn-base | 185 + .../sfSessionTestStorage.class.php.svn-base | 171 + .../.svn/text-base/sfStorage.class.php.svn-base | 126 + .../lib/storage/sfCacheSessionStorage.class.php | 283 + .../lib/storage/sfDatabaseSessionStorage.class.php | 205 + .../lib/storage/sfMySQLSessionStorage.class.php | 216 + .../lib/storage/sfMySQLiSessionStorage.class.php | 80 + .../symfony/lib/storage/sfNoStorage.class.php | 93 + .../lib/storage/sfPDOSessionStorage.class.php | 174 + .../storage/sfPostgreSQLSessionStorage.class.php | 161 + .../symfony/lib/storage/sfSessionStorage.class.php | 185 + .../lib/storage/sfSessionTestStorage.class.php | 171 + lib/vendor/symfony/lib/storage/sfStorage.class.php | 126 + lib/vendor/symfony/lib/task/.svn/all-wcprops | 29 + lib/vendor/symfony/lib/task/.svn/entries | 197 + .../.svn/prop-base/sfBaseTask.class.php.svn-base | 13 + .../sfCommandApplicationTask.class.php.svn-base | 13 + .../.svn/prop-base/sfFilesystem.class.php.svn-base | 13 + .../task/.svn/prop-base/sfTask.class.php.svn-base | 13 + .../.svn/text-base/sfBaseTask.class.php.svn-base | 392 + .../sfCommandApplicationTask.class.php.svn-base | 166 + .../.svn/text-base/sfFilesystem.class.php.svn-base | 487 + .../task/.svn/text-base/sfTask.class.php.svn-base | 664 + lib/vendor/symfony/lib/task/app/.svn/all-wcprops | 11 + lib/vendor/symfony/lib/task/app/.svn/entries | 62 + .../prop-base/sfAppRoutesTask.class.php.svn-base | 13 + .../text-base/sfAppRoutesTask.class.php.svn-base | 166 + .../symfony/lib/task/app/sfAppRoutesTask.class.php | 166 + lib/vendor/symfony/lib/task/cache/.svn/all-wcprops | 11 + lib/vendor/symfony/lib/task/cache/.svn/entries | 62 + .../prop-base/sfCacheClearTask.class.php.svn-base | 13 + .../text-base/sfCacheClearTask.class.php.svn-base | 257 + .../lib/task/cache/sfCacheClearTask.class.php | 257 + .../symfony/lib/task/configure/.svn/all-wcprops | 11 + lib/vendor/symfony/lib/task/configure/.svn/entries | 62 + .../sfConfigureAuthorTask.class.php.svn-base | 13 + .../sfConfigureAuthorTask.class.php.svn-base | 73 + .../task/configure/sfConfigureAuthorTask.class.php | 73 + .../symfony/lib/task/generator/.svn/all-wcprops | 35 + lib/vendor/symfony/lib/task/generator/.svn/entries | 201 + .../prop-base/sfGenerateAppTask.class.php.svn-base | 13 + .../sfGenerateModuleTask.class.php.svn-base | 13 + .../sfGenerateProjectTask.class.php.svn-base | 13 + .../sfGenerateTaskTask.class.php.svn-base | 9 + .../sfGeneratorBaseTask.class.php.svn-base | 13 + .../text-base/sfGenerateAppTask.class.php.svn-base | 167 + .../sfGenerateModuleTask.class.php.svn-base | 116 + .../sfGenerateProjectTask.class.php.svn-base | 169 + .../sfGenerateTaskTask.class.php.svn-base | 190 + .../sfGeneratorBaseTask.class.php.svn-base | 21 + .../lib/task/generator/sfGenerateAppTask.class.php | 167 + .../task/generator/sfGenerateModuleTask.class.php | 116 + .../task/generator/sfGenerateProjectTask.class.php | 169 + .../task/generator/sfGenerateTaskTask.class.php | 190 + .../task/generator/sfGeneratorBaseTask.class.php | 21 + .../lib/task/generator/skeleton/.svn/all-wcprops | 5 + .../lib/task/generator/skeleton/.svn/entries | 37 + .../task/generator/skeleton/app/.svn/all-wcprops | 5 + .../lib/task/generator/skeleton/app/.svn/entries | 37 + .../generator/skeleton/app/app/.svn/all-wcprops | 5 + .../task/generator/skeleton/app/app/.svn/entries | 43 + .../skeleton/app/app/config/.svn/all-wcprops | 59 + .../generator/skeleton/app/app/config/.svn/entries | 334 + .../ApplicationConfiguration.class.php.svn-base | 13 + .../app/app/config/.svn/prop-base/app.yml.svn-base | 13 + .../app/config/.svn/prop-base/cache.yml.svn-base | 13 + .../config/.svn/prop-base/factories.yml.svn-base | 13 + .../app/config/.svn/prop-base/filters.yml.svn-base | 13 + .../app/config/.svn/prop-base/routing.yml.svn-base | 13 + .../config/.svn/prop-base/security.yml.svn-base | 13 + .../config/.svn/prop-base/settings.yml.svn-base | 13 + .../app/config/.svn/prop-base/view.yml.svn-base | 13 + .../ApplicationConfiguration.class.php.svn-base | 8 + .../app/app/config/.svn/text-base/app.yml.svn-base | 5 + .../app/config/.svn/text-base/cache.yml.svn-base | 7 + .../config/.svn/text-base/factories.yml.svn-base | 42 + .../app/config/.svn/text-base/filters.yml.svn-base | 10 + .../app/config/.svn/text-base/routing.yml.svn-base | 16 + .../config/.svn/text-base/security.yml.svn-base | 5 + .../config/.svn/text-base/settings.yml.svn-base | 35 + .../app/config/.svn/text-base/view.yml.svn-base | 20 + .../app/config/ApplicationConfiguration.class.php | 8 + .../task/generator/skeleton/app/app/config/app.yml | 5 + .../generator/skeleton/app/app/config/cache.yml | 7 + .../skeleton/app/app/config/factories.yml | 42 + .../generator/skeleton/app/app/config/filters.yml | 10 + .../generator/skeleton/app/app/config/routing.yml | 16 + .../generator/skeleton/app/app/config/security.yml | 5 + .../generator/skeleton/app/app/config/settings.yml | 35 + .../generator/skeleton/app/app/config/view.yml | 20 + .../lib/task/generator/skeleton/app/app/i18n/.sf | 0 .../skeleton/app/app/i18n/.svn/all-wcprops | 11 + .../generator/skeleton/app/app/i18n/.svn/entries | 62 + .../app/app/i18n/.svn/text-base/.sf.svn-base | 0 .../skeleton/app/app/lib/.sf/.svn/all-wcprops | 5 + .../skeleton/app/app/lib/.sf/.svn/entries | 28 + .../skeleton/app/app/lib/.svn/all-wcprops | 11 + .../generator/skeleton/app/app/lib/.svn/entries | 65 + .../lib/.svn/prop-base/myUser.class.php.svn-base | 13 + .../lib/.svn/text-base/myUser.class.php.svn-base | 5 + .../skeleton/app/app/lib/myUser.class.php | 5 + .../task/generator/skeleton/app/app/modules/.sf | 0 .../skeleton/app/app/modules/.svn/all-wcprops | 11 + .../skeleton/app/app/modules/.svn/entries | 62 + .../app/app/modules/.svn/text-base/.sf.svn-base | 0 .../skeleton/app/app/templates/.svn/all-wcprops | 11 + .../skeleton/app/app/templates/.svn/entries | 62 + .../templates/.svn/prop-base/layout.php.svn-base | 13 + .../templates/.svn/text-base/layout.php.svn-base | 14 + .../skeleton/app/app/templates/layout.php | 14 + .../generator/skeleton/app/lib/.svn/all-wcprops | 5 + .../task/generator/skeleton/app/lib/.svn/entries | 28 + .../generator/skeleton/app/web/.svn/all-wcprops | 11 + .../task/generator/skeleton/app/web/.svn/entries | 62 + .../app/web/.svn/prop-base/index.php.svn-base | 13 + .../app/web/.svn/text-base/index.php.svn-base | 7 + .../lib/task/generator/skeleton/app/web/index.php | 7 + .../generator/skeleton/module/.svn/all-wcprops | 5 + .../task/generator/skeleton/module/.svn/entries | 34 + .../skeleton/module/module/.svn/all-wcprops | 5 + .../generator/skeleton/module/module/.svn/entries | 34 + .../module/module/actions/.svn/all-wcprops | 11 + .../skeleton/module/module/actions/.svn/entries | 62 + .../.svn/prop-base/actions.class.php.svn-base | 13 + .../.svn/text-base/actions.class.php.svn-base | 22 + .../module/module/actions/actions.class.php | 22 + .../module/module/templates/.svn/all-wcprops | 11 + .../skeleton/module/module/templates/.svn/entries | 62 + .../.svn/prop-base/indexSuccess.php.svn-base | 13 + .../.svn/text-base/indexSuccess.php.svn-base | 0 .../module/module/templates/indexSuccess.php | 0 .../skeleton/module/test/.svn/all-wcprops | 11 + .../generator/skeleton/module/test/.svn/entries | 62 + .../test/.svn/prop-base/actionsTest.php.svn-base | 13 + .../test/.svn/text-base/actionsTest.php.svn-base | 19 + .../generator/skeleton/module/test/actionsTest.php | 19 + .../generator/skeleton/project/.svn/all-wcprops | 11 + .../task/generator/skeleton/project/.svn/entries | 89 + .../project/.svn/text-base/symfony.svn-base | 14 + .../lib/task/generator/skeleton/project/apps/.sf | 0 .../skeleton/project/apps/.svn/all-wcprops | 11 + .../generator/skeleton/project/apps/.svn/entries | 62 + .../project/apps/.svn/text-base/.sf.svn-base | 0 .../lib/task/generator/skeleton/project/cache/.sf | 0 .../skeleton/project/cache/.svn/all-wcprops | 11 + .../generator/skeleton/project/cache/.svn/entries | 62 + .../project/cache/.svn/text-base/.sf.svn-base | 0 .../skeleton/project/config/.svn/all-wcprops | 23 + .../generator/skeleton/project/config/.svn/entries | 130 + .../ProjectConfiguration.class.php.svn-base | 13 + .../config/.svn/prop-base/properties.ini.svn-base | 13 + .../.svn/prop-base/rsync_exclude.txt.svn-base | 13 + .../ProjectConfiguration.class.php.svn-base | 11 + .../config/.svn/text-base/properties.ini.svn-base | 4 + .../.svn/text-base/rsync_exclude.txt.svn-base | 15 + .../project/config/ProjectConfiguration.class.php | 11 + .../skeleton/project/config/properties.ini | 4 + .../skeleton/project/config/rsync_exclude.txt | 15 + .../lib/task/generator/skeleton/project/data/.sf | 0 .../skeleton/project/data/.svn/all-wcprops | 11 + .../generator/skeleton/project/data/.svn/entries | 65 + .../project/data/.svn/text-base/.sf.svn-base | 0 .../project/data/fixtures/.svn/all-wcprops | 11 + .../skeleton/project/data/fixtures/.svn/entries | 62 + .../fixtures/.svn/prop-base/fixtures.yml.svn-base | 9 + .../fixtures/.svn/text-base/fixtures.yml.svn-base | 17 + .../skeleton/project/data/fixtures/fixtures.yml | 17 + .../lib/task/generator/skeleton/project/lib/.sf | 0 .../skeleton/project/lib/.svn/all-wcprops | 11 + .../generator/skeleton/project/lib/.svn/entries | 65 + .../project/lib/.svn/text-base/.sf.svn-base | 0 .../skeleton/project/lib/form/.svn/all-wcprops | 11 + .../skeleton/project/lib/form/.svn/entries | 62 + .../.svn/prop-base/BaseForm.class.php.svn-base | 9 + .../.svn/text-base/BaseForm.class.php.svn-base | 13 + .../skeleton/project/lib/form/BaseForm.class.php | 13 + .../lib/task/generator/skeleton/project/log/.sf | 0 .../skeleton/project/log/.svn/all-wcprops | 11 + .../generator/skeleton/project/log/.svn/entries | 62 + .../project/log/.svn/text-base/.sf.svn-base | 0 .../task/generator/skeleton/project/plugins/.sf | 0 .../skeleton/project/plugins/.svn/all-wcprops | 11 + .../skeleton/project/plugins/.svn/entries | 62 + .../project/plugins/.svn/text-base/.sf.svn-base | 0 .../lib/task/generator/skeleton/project/symfony | 14 + .../lib/task/generator/skeleton/project/test/.sf | 0 .../skeleton/project/test/.svn/all-wcprops | 11 + .../generator/skeleton/project/test/.svn/entries | 71 + .../project/test/.svn/text-base/.sf.svn-base | 0 .../project/test/bootstrap/.svn/all-wcprops | 17 + .../skeleton/project/test/bootstrap/.svn/entries | 96 + .../.svn/prop-base/functional.php.svn-base | 13 + .../bootstrap/.svn/prop-base/unit.php.svn-base | 13 + .../.svn/text-base/functional.php.svn-base | 26 + .../bootstrap/.svn/text-base/unit.php.svn-base | 26 + .../skeleton/project/test/bootstrap/functional.php | 26 + .../skeleton/project/test/bootstrap/unit.php | 26 + .../generator/skeleton/project/test/functional/.sf | 0 .../project/test/functional/.svn/all-wcprops | 11 + .../skeleton/project/test/functional/.svn/entries | 62 + .../test/functional/.svn/text-base/.sf.svn-base | 0 .../task/generator/skeleton/project/test/unit/.sf | 0 .../skeleton/project/test/unit/.svn/all-wcprops | 11 + .../skeleton/project/test/unit/.svn/entries | 62 + .../project/test/unit/.svn/text-base/.sf.svn-base | 0 .../task/generator/skeleton/project/web/.htaccess | 22 + .../skeleton/project/web/.svn/all-wcprops | 17 + .../generator/skeleton/project/web/.svn/entries | 108 + .../project/web/.svn/prop-base/.htaccess.svn-base | 13 + .../project/web/.svn/prop-base/robots.txt.svn-base | 13 + .../project/web/.svn/text-base/.htaccess.svn-base | 22 + .../project/web/.svn/text-base/robots.txt.svn-base | 2 + .../skeleton/project/web/css/.svn/all-wcprops | 11 + .../skeleton/project/web/css/.svn/entries | 62 + .../web/css/.svn/prop-base/main.css.svn-base | 13 + .../web/css/.svn/text-base/main.css.svn-base | 0 .../generator/skeleton/project/web/css/main.css | 0 .../task/generator/skeleton/project/web/images/.sf | 0 .../skeleton/project/web/images/.svn/all-wcprops | 11 + .../skeleton/project/web/images/.svn/entries | 62 + .../project/web/images/.svn/text-base/.sf.svn-base | 0 .../lib/task/generator/skeleton/project/web/js/.sf | 0 .../skeleton/project/web/js/.svn/all-wcprops | 11 + .../generator/skeleton/project/web/js/.svn/entries | 62 + .../project/web/js/.svn/text-base/.sf.svn-base | 0 .../task/generator/skeleton/project/web/robots.txt | 2 + .../generator/skeleton/project/web/uploads/.sf | 0 .../skeleton/project/web/uploads/.svn/all-wcprops | 11 + .../skeleton/project/web/uploads/.svn/entries | 65 + .../web/uploads/.svn/text-base/.sf.svn-base | 0 .../skeleton/project/web/uploads/assets/.sf | 0 .../project/web/uploads/assets/.svn/all-wcprops | 11 + .../project/web/uploads/assets/.svn/entries | 62 + .../web/uploads/assets/.svn/text-base/.sf.svn-base | 0 lib/vendor/symfony/lib/task/help/.svn/all-wcprops | 17 + lib/vendor/symfony/lib/task/help/.svn/entries | 96 + .../.svn/prop-base/sfHelpTask.class.php.svn-base | 13 + .../.svn/prop-base/sfListTask.class.php.svn-base | 13 + .../.svn/text-base/sfHelpTask.class.php.svn-base | 133 + .../.svn/text-base/sfListTask.class.php.svn-base | 177 + .../symfony/lib/task/help/sfHelpTask.class.php | 133 + .../symfony/lib/task/help/sfListTask.class.php | 177 + lib/vendor/symfony/lib/task/i18n/.svn/all-wcprops | 17 + lib/vendor/symfony/lib/task/i18n/.svn/entries | 96 + .../prop-base/sfI18nExtractTask.class.php.svn-base | 13 + .../prop-base/sfI18nFindTask.class.php.svn-base | 13 + .../text-base/sfI18nExtractTask.class.php.svn-base | 131 + .../text-base/sfI18nFindTask.class.php.svn-base | 142 + .../lib/task/i18n/sfI18nExtractTask.class.php | 131 + .../symfony/lib/task/i18n/sfI18nFindTask.class.php | 142 + lib/vendor/symfony/lib/task/log/.svn/all-wcprops | 17 + lib/vendor/symfony/lib/task/log/.svn/entries | 96 + .../prop-base/sfLogClearTask.class.php.svn-base | 13 + .../prop-base/sfLogRotateTask.class.php.svn-base | 13 + .../text-base/sfLogClearTask.class.php.svn-base | 45 + .../text-base/sfLogRotateTask.class.php.svn-base | 160 + .../symfony/lib/task/log/sfLogClearTask.class.php | 45 + .../symfony/lib/task/log/sfLogRotateTask.class.php | 160 + .../symfony/lib/task/plugin/.svn/all-wcprops | 47 + lib/vendor/symfony/lib/task/plugin/.svn/entries | 266 + .../sfPluginAddChannelTask.class.php.svn-base | 13 + .../prop-base/sfPluginBaseTask.class.php.svn-base | 13 + .../sfPluginInstallTask.class.php.svn-base | 13 + .../prop-base/sfPluginListTask.class.php.svn-base | 13 + .../sfPluginPublishAssetsTask.class.php.svn-base | 13 + .../sfPluginUninstallTask.class.php.svn-base | 13 + .../sfPluginUpgradeTask.class.php.svn-base | 13 + .../sfPluginAddChannelTask.class.php.svn-base | 53 + .../text-base/sfPluginBaseTask.class.php.svn-base | 21 + .../sfPluginInstallTask.class.php.svn-base | 124 + .../text-base/sfPluginListTask.class.php.svn-base | 55 + .../sfPluginPublishAssetsTask.class.php.svn-base | 101 + .../sfPluginUninstallTask.class.php.svn-base | 77 + .../sfPluginUpgradeTask.class.php.svn-base | 66 + .../task/plugin/sfPluginAddChannelTask.class.php | 53 + .../lib/task/plugin/sfPluginBaseTask.class.php | 21 + .../lib/task/plugin/sfPluginInstallTask.class.php | 124 + .../lib/task/plugin/sfPluginListTask.class.php | 55 + .../plugin/sfPluginPublishAssetsTask.class.php | 101 + .../task/plugin/sfPluginUninstallTask.class.php | 77 + .../lib/task/plugin/sfPluginUpgradeTask.class.php | 66 + .../symfony/lib/task/project/.svn/all-wcprops | 53 + lib/vendor/symfony/lib/task/project/.svn/entries | 303 + ...fProjectClearControllersTask.class.php.svn-base | 13 + .../sfProjectDeployTask.class.php.svn-base | 13 + .../sfProjectDisableTask.class.php.svn-base | 13 + .../sfProjectEnableTask.class.php.svn-base | 13 + .../sfProjectOptimizeTask.class.php.svn-base | 9 + .../sfProjectPermissionsTask.class.php.svn-base | 13 + .../sfProjectSendEmailsTask.class.php.svn-base | 9 + .../sfProjectValidateTask.class.php.svn-base | 13 + ...fProjectClearControllersTask.class.php.svn-base | 78 + .../sfProjectDeployTask.class.php.svn-base | 211 + .../sfProjectDisableTask.class.php.svn-base | 79 + .../sfProjectEnableTask.class.php.svn-base | 84 + .../sfProjectOptimizeTask.class.php.svn-base | 189 + .../sfProjectPermissionsTask.class.php.svn-base | 119 + .../sfProjectSendEmailsTask.class.php.svn-base | 65 + .../sfProjectValidateTask.class.php.svn-base | 102 + .../sfProjectClearControllersTask.class.php | 78 + .../lib/task/project/sfProjectDeployTask.class.php | 211 + .../task/project/sfProjectDisableTask.class.php | 79 + .../lib/task/project/sfProjectEnableTask.class.php | 84 + .../task/project/sfProjectOptimizeTask.class.php | 189 + .../project/sfProjectPermissionsTask.class.php | 119 + .../task/project/sfProjectSendEmailsTask.class.php | 65 + .../task/project/sfProjectValidateTask.class.php | 102 + .../lib/task/project/validation/.svn/all-wcprops | 53 + .../lib/task/project/validation/.svn/entries | 300 + ...fDeprecatedClassesValidation.class.php.svn-base | 13 + ...ConfigurationFilesValidation.class.php.svn-base | 13 + ...fDeprecatedHelpersValidation.class.php.svn-base | 13 + ...fDeprecatedMethodsValidation.class.php.svn-base | 13 + ...fDeprecatedPluginsValidation.class.php.svn-base | 13 + ...DeprecatedSettingsValidation.class.php.svn-base | 13 + .../sfParameterHolderValidation.class.php.svn-base | 13 + .../.svn/prop-base/sfValidation.class.php.svn-base | 13 + ...fDeprecatedClassesValidation.class.php.svn-base | 93 + ...ConfigurationFilesValidation.class.php.svn-base | 74 + ...fDeprecatedHelpersValidation.class.php.svn-base | 88 + ...fDeprecatedMethodsValidation.class.php.svn-base | 101 + ...fDeprecatedPluginsValidation.class.php.svn-base | 64 + ...DeprecatedSettingsValidation.class.php.svn-base | 78 + .../sfParameterHolderValidation.class.php.svn-base | 65 + .../.svn/text-base/sfValidation.class.php.svn-base | 116 + .../sfDeprecatedClassesValidation.class.php | 93 + ...eprecatedConfigurationFilesValidation.class.php | 74 + .../sfDeprecatedHelpersValidation.class.php | 88 + .../sfDeprecatedMethodsValidation.class.php | 101 + .../sfDeprecatedPluginsValidation.class.php | 64 + .../sfDeprecatedSettingsValidation.class.php | 78 + .../sfParameterHolderValidation.class.php | 65 + .../task/project/validation/sfValidation.class.php | 116 + lib/vendor/symfony/lib/task/sfBaseTask.class.php | 392 + .../lib/task/sfCommandApplicationTask.class.php | 166 + lib/vendor/symfony/lib/task/sfFilesystem.class.php | 487 + lib/vendor/symfony/lib/task/sfTask.class.php | 664 + .../symfony/lib/task/symfony/.svn/all-wcprops | 17 + lib/vendor/symfony/lib/task/symfony/.svn/entries | 96 + .../.svn/prop-base/lime_symfony.php.svn-base | 9 + .../prop-base/sfSymfonyTestTask.class.php.svn-base | 9 + .../.svn/text-base/lime_symfony.php.svn-base | 23 + .../text-base/sfSymfonyTestTask.class.php.svn-base | 126 + .../symfony/lib/task/symfony/lime_symfony.php | 23 + .../lib/task/symfony/sfSymfonyTestTask.class.php | 126 + lib/vendor/symfony/lib/task/test/.svn/all-wcprops | 41 + lib/vendor/symfony/lib/task/test/.svn/entries | 232 + .../prop-base/sfLimeHarness.class.php.svn-base | 9 + .../prop-base/sfTestAllTask.class.php.svn-base | 13 + .../prop-base/sfTestBaseTask.class.php.svn-base | 9 + .../sfTestCoverageTask.class.php.svn-base | 13 + .../sfTestFunctionalTask.class.php.svn-base | 13 + .../prop-base/sfTestUnitTask.class.php.svn-base | 13 + .../text-base/sfLimeHarness.class.php.svn-base | 23 + .../text-base/sfTestAllTask.class.php.svn-base | 117 + .../text-base/sfTestBaseTask.class.php.svn-base | 38 + .../sfTestCoverageTask.class.php.svn-base | 109 + .../sfTestFunctionalTask.class.php.svn-base | 122 + .../text-base/sfTestUnitTask.class.php.svn-base | 117 + .../symfony/lib/task/test/sfLimeHarness.class.php | 23 + .../symfony/lib/task/test/sfTestAllTask.class.php | 117 + .../symfony/lib/task/test/sfTestBaseTask.class.php | 38 + .../lib/task/test/sfTestCoverageTask.class.php | 109 + .../lib/task/test/sfTestFunctionalTask.class.php | 122 + .../symfony/lib/task/test/sfTestUnitTask.class.php | 117 + lib/vendor/symfony/lib/test/.svn/all-wcprops | 65 + lib/vendor/symfony/lib/test/.svn/entries | 371 + .../prop-base/sfTestBrowser.class.php.svn-base | 13 + .../prop-base/sfTestFunctional.class.php.svn-base | 13 + .../sfTestFunctionalBase.class.php.svn-base | 13 + .../.svn/prop-base/sfTester.class.php.svn-base | 13 + .../.svn/prop-base/sfTesterForm.class.php.svn-base | 13 + .../prop-base/sfTesterMailer.class.php.svn-base | 9 + .../prop-base/sfTesterRequest.class.php.svn-base | 13 + .../prop-base/sfTesterResponse.class.php.svn-base | 13 + .../.svn/prop-base/sfTesterUser.class.php.svn-base | 13 + .../prop-base/sfTesterViewCache.class.php.svn-base | 13 + .../text-base/sfTestBrowser.class.php.svn-base | 56 + .../text-base/sfTestFunctional.class.php.svn-base | 67 + .../sfTestFunctionalBase.class.php.svn-base | 513 + .../.svn/text-base/sfTester.class.php.svn-base | 88 + .../.svn/text-base/sfTesterForm.class.php.svn-base | 256 + .../text-base/sfTesterMailer.class.php.svn-base | 275 + .../text-base/sfTesterRequest.class.php.svn-base | 152 + .../text-base/sfTesterResponse.class.php.svn-base | 489 + .../.svn/text-base/sfTesterUser.class.php.svn-base | 112 + .../text-base/sfTesterViewCache.class.php.svn-base | 130 + .../symfony/lib/test/sfTestBrowser.class.php | 56 + .../symfony/lib/test/sfTestFunctional.class.php | 67 + .../lib/test/sfTestFunctionalBase.class.php | 513 + lib/vendor/symfony/lib/test/sfTester.class.php | 88 + lib/vendor/symfony/lib/test/sfTesterForm.class.php | 256 + .../symfony/lib/test/sfTesterMailer.class.php | 275 + .../symfony/lib/test/sfTesterRequest.class.php | 152 + .../symfony/lib/test/sfTesterResponse.class.php | 489 + lib/vendor/symfony/lib/test/sfTesterUser.class.php | 112 + .../symfony/lib/test/sfTesterViewCache.class.php | 130 + lib/vendor/symfony/lib/test/w3/.svn/all-wcprops | 5 + lib/vendor/symfony/lib/test/w3/.svn/entries | 31 + lib/vendor/symfony/lib/test/w3/TR/.svn/all-wcprops | 5 + lib/vendor/symfony/lib/test/w3/TR/.svn/entries | 43 + .../symfony/lib/test/w3/TR/html4/.svn/all-wcprops | 35 + .../symfony/lib/test/w3/TR/html4/.svn/entries | 198 + .../TR/html4/.svn/text-base/HTMLlat1.ent.svn-base | 194 + .../html4/.svn/text-base/HTMLspecial.ent.svn-base | 77 + .../html4/.svn/text-base/HTMLsymbol.ent.svn-base | 241 + .../w3/TR/html4/.svn/text-base/loose.dtd.svn-base | 1093 + .../w3/TR/html4/.svn/text-base/strict.dtd.svn-base | 870 + .../symfony/lib/test/w3/TR/html4/HTMLlat1.ent | 194 + .../symfony/lib/test/w3/TR/html4/HTMLspecial.ent | 77 + .../symfony/lib/test/w3/TR/html4/HTMLsymbol.ent | 241 + lib/vendor/symfony/lib/test/w3/TR/html4/loose.dtd | 1093 + lib/vendor/symfony/lib/test/w3/TR/html4/strict.dtd | 870 + .../symfony/lib/test/w3/TR/ruby/.svn/all-wcprops | 11 + .../symfony/lib/test/w3/TR/ruby/.svn/entries | 62 + .../ruby/.svn/text-base/xhtml-ruby-1.mod.svn-base | 242 + .../symfony/lib/test/w3/TR/ruby/xhtml-ruby-1.mod | 242 + .../w3/TR/xhtml-modularization/.svn/all-wcprops | 5 + .../test/w3/TR/xhtml-modularization/.svn/entries | 31 + .../TR/xhtml-modularization/DTD/.svn/all-wcprops | 137 + .../w3/TR/xhtml-modularization/DTD/.svn/entries | 776 + .../DTD/.svn/text-base/xhtml-base-1.mod.svn-base | 53 + .../DTD/.svn/text-base/xhtml-bdo-1.mod.svn-base | 47 + .../.svn/text-base/xhtml-csismap-1.mod.svn-base | 114 + .../DTD/.svn/text-base/xhtml-edit-1.mod.svn-base | 66 + .../DTD/.svn/text-base/xhtml-form-1.mod.svn-base | 291 + .../.svn/text-base/xhtml-framework-1.mod.svn-base | 97 + .../.svn/text-base/xhtml-hypertext-1.mod.svn-base | 54 + .../DTD/.svn/text-base/xhtml-image-1.mod.svn-base | 50 + .../.svn/text-base/xhtml-inlstyle-1.mod.svn-base | 34 + .../DTD/.svn/text-base/xhtml-legacy-1.mod.svn-base | 400 + .../DTD/.svn/text-base/xhtml-link-1.mod.svn-base | 59 + .../DTD/.svn/text-base/xhtml-list-1.mod.svn-base | 129 + .../DTD/.svn/text-base/xhtml-meta-1.mod.svn-base | 47 + .../DTD/.svn/text-base/xhtml-object-1.mod.svn-base | 60 + .../DTD/.svn/text-base/xhtml-param-1.mod.svn-base | 48 + .../DTD/.svn/text-base/xhtml-pres-1.mod.svn-base | 38 + .../DTD/.svn/text-base/xhtml-script-1.mod.svn-base | 67 + .../.svn/text-base/xhtml-ssismap-1.mod.svn-base | 32 + .../DTD/.svn/text-base/xhtml-struct-1.mod.svn-base | 136 + .../DTD/.svn/text-base/xhtml-style-1.mod.svn-base | 48 + .../DTD/.svn/text-base/xhtml-table-1.mod.svn-base | 333 + .../DTD/.svn/text-base/xhtml-text-1.mod.svn-base | 52 + .../TR/xhtml-modularization/DTD/xhtml-base-1.mod | 53 + .../w3/TR/xhtml-modularization/DTD/xhtml-bdo-1.mod | 47 + .../xhtml-modularization/DTD/xhtml-csismap-1.mod | 114 + .../TR/xhtml-modularization/DTD/xhtml-edit-1.mod | 66 + .../TR/xhtml-modularization/DTD/xhtml-form-1.mod | 291 + .../xhtml-modularization/DTD/xhtml-framework-1.mod | 97 + .../xhtml-modularization/DTD/xhtml-hypertext-1.mod | 54 + .../TR/xhtml-modularization/DTD/xhtml-image-1.mod | 50 + .../xhtml-modularization/DTD/xhtml-inlstyle-1.mod | 34 + .../TR/xhtml-modularization/DTD/xhtml-legacy-1.mod | 400 + .../TR/xhtml-modularization/DTD/xhtml-link-1.mod | 59 + .../TR/xhtml-modularization/DTD/xhtml-list-1.mod | 129 + .../TR/xhtml-modularization/DTD/xhtml-meta-1.mod | 47 + .../TR/xhtml-modularization/DTD/xhtml-object-1.mod | 60 + .../TR/xhtml-modularization/DTD/xhtml-param-1.mod | 48 + .../TR/xhtml-modularization/DTD/xhtml-pres-1.mod | 38 + .../TR/xhtml-modularization/DTD/xhtml-script-1.mod | 67 + .../xhtml-modularization/DTD/xhtml-ssismap-1.mod | 32 + .../TR/xhtml-modularization/DTD/xhtml-struct-1.mod | 136 + .../TR/xhtml-modularization/DTD/xhtml-style-1.mod | 48 + .../TR/xhtml-modularization/DTD/xhtml-table-1.mod | 333 + .../TR/xhtml-modularization/DTD/xhtml-text-1.mod | 52 + .../symfony/lib/test/w3/TR/xhtml1/.svn/all-wcprops | 5 + .../symfony/lib/test/w3/TR/xhtml1/.svn/entries | 31 + .../lib/test/w3/TR/xhtml1/DTD/.svn/all-wcprops | 41 + .../symfony/lib/test/w3/TR/xhtml1/DTD/.svn/entries | 232 + .../DTD/.svn/text-base/xhtml-lat1.ent.svn-base | 196 + .../DTD/.svn/text-base/xhtml-special.ent.svn-base | 80 + .../DTD/.svn/text-base/xhtml-symbol.ent.svn-base | 237 + .../.svn/text-base/xhtml1-frameset.dtd.svn-base | 1235 + .../DTD/.svn/text-base/xhtml1-strict.dtd.svn-base | 978 + .../text-base/xhtml1-transitional.dtd.svn-base | 1201 + .../lib/test/w3/TR/xhtml1/DTD/xhtml-lat1.ent | 196 + .../lib/test/w3/TR/xhtml1/DTD/xhtml-special.ent | 80 + .../lib/test/w3/TR/xhtml1/DTD/xhtml-symbol.ent | 237 + .../lib/test/w3/TR/xhtml1/DTD/xhtml1-frameset.dtd | 1235 + .../lib/test/w3/TR/xhtml1/DTD/xhtml1-strict.dtd | 978 + .../test/w3/TR/xhtml1/DTD/xhtml1-transitional.dtd | 1201 + .../lib/test/w3/TR/xhtml11/.svn/all-wcprops | 5 + .../symfony/lib/test/w3/TR/xhtml11/.svn/entries | 31 + .../lib/test/w3/TR/xhtml11/DTD/.svn/all-wcprops | 11 + .../lib/test/w3/TR/xhtml11/DTD/.svn/entries | 62 + .../DTD/.svn/text-base/xhtml11.dtd.svn-base | 294 + .../symfony/lib/test/w3/TR/xhtml11/DTD/xhtml11.dtd | 294 + lib/vendor/symfony/lib/user/.svn/all-wcprops | 23 + lib/vendor/symfony/lib/user/.svn/entries | 130 + .../sfBasicSecurityUser.class.php.svn-base | 13 + .../prop-base/sfSecurityUser.class.php.svn-base | 13 + .../user/.svn/prop-base/sfUser.class.php.svn-base | 13 + .../sfBasicSecurityUser.class.php.svn-base | 300 + .../text-base/sfSecurityUser.class.php.svn-base | 64 + .../user/.svn/text-base/sfUser.class.php.svn-base | 335 + .../symfony/lib/user/sfBasicSecurityUser.class.php | 300 + .../symfony/lib/user/sfSecurityUser.class.php | 64 + lib/vendor/symfony/lib/user/sfUser.class.php | 335 + lib/vendor/symfony/lib/util/.svn/all-wcprops | 71 + lib/vendor/symfony/lib/util/.svn/entries | 402 + .../.svn/prop-base/sfBrowser.class.php.svn-base | 13 + .../prop-base/sfBrowserBase.class.php.svn-base | 13 + .../.svn/prop-base/sfCallable.class.php.svn-base | 13 + .../sfClassManipulator.class.php.svn-base | 9 + .../.svn/prop-base/sfContext.class.php.svn-base | 13 + .../prop-base/sfDomCssSelector.class.php.svn-base | 13 + .../.svn/prop-base/sfFinder.class.php.svn-base | 13 + .../.svn/prop-base/sfInflector.class.php.svn-base | 13 + .../sfNamespacedParameterHolder.class.php.svn-base | 13 + .../prop-base/sfParameterHolder.class.php.svn-base | 13 + .../.svn/prop-base/sfToolkit.class.php.svn-base | 13 + .../.svn/text-base/sfBrowser.class.php.svn-base | 169 + .../text-base/sfBrowserBase.class.php.svn-base | 1023 + .../.svn/text-base/sfCallable.class.php.svn-base | 64 + .../sfClassManipulator.class.php.svn-base | 314 + .../.svn/text-base/sfContext.class.php.svn-base | 613 + .../text-base/sfDomCssSelector.class.php.svn-base | 626 + .../.svn/text-base/sfFinder.class.php.svn-base | 793 + .../.svn/text-base/sfInflector.class.php.svn-base | 121 + .../sfNamespacedParameterHolder.class.php.svn-base | 384 + .../text-base/sfParameterHolder.class.php.svn-base | 200 + .../.svn/text-base/sfToolkit.class.php.svn-base | 611 + lib/vendor/symfony/lib/util/sfBrowser.class.php | 169 + .../symfony/lib/util/sfBrowserBase.class.php | 1023 + lib/vendor/symfony/lib/util/sfCallable.class.php | 64 + .../symfony/lib/util/sfClassManipulator.class.php | 314 + lib/vendor/symfony/lib/util/sfContext.class.php | 613 + .../symfony/lib/util/sfDomCssSelector.class.php | 626 + lib/vendor/symfony/lib/util/sfFinder.class.php | 793 + lib/vendor/symfony/lib/util/sfInflector.class.php | 121 + .../lib/util/sfNamespacedParameterHolder.class.php | 384 + .../symfony/lib/util/sfParameterHolder.class.php | 200 + lib/vendor/symfony/lib/util/sfToolkit.class.php | 611 + lib/vendor/symfony/lib/validator/.svn/all-wcprops | 173 + lib/vendor/symfony/lib/validator/.svn/entries | 983 + .../prop-base/sfValidatedFile.class.php.svn-base | 9 + .../prop-base/sfValidatorAnd.class.php.svn-base | 13 + .../prop-base/sfValidatorBase.class.php.svn-base | 13 + .../sfValidatorBoolean.class.php.svn-base | 13 + .../sfValidatorCSRFToken.class.php.svn-base | 13 + .../sfValidatorCallback.class.php.svn-base | 13 + .../prop-base/sfValidatorChoice.class.php.svn-base | 13 + .../prop-base/sfValidatorDate.class.php.svn-base | 13 + .../sfValidatorDateRange.class.php.svn-base | 13 + .../sfValidatorDateTime.class.php.svn-base | 13 + .../sfValidatorDecorator.class.php.svn-base | 13 + .../prop-base/sfValidatorEmail.class.php.svn-base | 13 + .../prop-base/sfValidatorError.class.php.svn-base | 13 + .../sfValidatorErrorSchema.class.php.svn-base | 13 + .../prop-base/sfValidatorFile.class.php.svn-base | 13 + .../sfValidatorFromDescription.class.php.svn-base | 13 + .../sfValidatorInteger.class.php.svn-base | 13 + .../prop-base/sfValidatorNumber.class.php.svn-base | 13 + .../prop-base/sfValidatorOr.class.php.svn-base | 13 + .../prop-base/sfValidatorPass.class.php.svn-base | 13 + .../prop-base/sfValidatorRegex.class.php.svn-base | 13 + .../prop-base/sfValidatorSchema.class.php.svn-base | 13 + .../sfValidatorSchemaCompare.class.php.svn-base | 13 + .../sfValidatorSchemaFilter.class.php.svn-base | 13 + .../sfValidatorSchemaForEach.class.php.svn-base | 13 + .../prop-base/sfValidatorString.class.php.svn-base | 13 + .../prop-base/sfValidatorTime.class.php.svn-base | 9 + .../prop-base/sfValidatorUrl.class.php.svn-base | 13 + .../text-base/sfValidatedFile.class.php.svn-base | 657 + .../text-base/sfValidatorAnd.class.php.svn-base | 168 + .../text-base/sfValidatorBase.class.php.svn-base | 498 + .../sfValidatorBoolean.class.php.svn-base | 60 + .../sfValidatorCSRFToken.class.php.svn-base | 45 + .../sfValidatorCallback.class.php.svn-base | 49 + .../text-base/sfValidatorChoice.class.php.svn-base | 137 + .../text-base/sfValidatorDate.class.php.svn-base | 261 + .../sfValidatorDateRange.class.php.svn-base | 65 + .../sfValidatorDateTime.class.php.svn-base | 30 + .../sfValidatorDecorator.class.php.svn-base | 171 + .../text-base/sfValidatorEmail.class.php.svn-base | 32 + .../text-base/sfValidatorError.class.php.svn-base | 156 + .../sfValidatorErrorSchema.class.php.svn-base | 340 + .../text-base/sfValidatorFile.class.php.svn-base | 299 + .../sfValidatorFromDescription.class.php.svn-base | 387 + .../sfValidatorInteger.class.php.svn-base | 74 + .../text-base/sfValidatorNumber.class.php.svn-base | 74 + .../text-base/sfValidatorOr.class.php.svn-base | 146 + .../text-base/sfValidatorPass.class.php.svn-base | 36 + .../text-base/sfValidatorRegex.class.php.svn-base | 74 + .../text-base/sfValidatorSchema.class.php.svn-base | 399 + .../sfValidatorSchemaCompare.class.php.svn-base | 159 + .../sfValidatorSchemaFilter.class.php.svn-base | 75 + .../sfValidatorSchemaForEach.class.php.svn-base | 49 + .../text-base/sfValidatorString.class.php.svn-base | 71 + .../text-base/sfValidatorTime.class.php.svn-base | 151 + .../text-base/sfValidatorUrl.class.php.svn-base | 59 + .../symfony/lib/validator/i18n/.svn/all-wcprops | 23 + lib/vendor/symfony/lib/validator/i18n/.svn/entries | 130 + ...sfValidatorI18nChoiceCountry.class.php.svn-base | 13 + ...fValidatorI18nChoiceLanguage.class.php.svn-base | 13 + ...fValidatorI18nChoiceTimezone.class.php.svn-base | 9 + ...sfValidatorI18nChoiceCountry.class.php.svn-base | 55 + ...fValidatorI18nChoiceLanguage.class.php.svn-base | 55 + ...fValidatorI18nChoiceTimezone.class.php.svn-base | 37 + .../i18n/sfValidatorI18nChoiceCountry.class.php | 55 + .../i18n/sfValidatorI18nChoiceLanguage.class.php | 55 + .../i18n/sfValidatorI18nChoiceTimezone.class.php | 37 + .../lib/validator/sfValidatedFile.class.php | 657 + .../symfony/lib/validator/sfValidatorAnd.class.php | 168 + .../lib/validator/sfValidatorBase.class.php | 498 + .../lib/validator/sfValidatorBoolean.class.php | 60 + .../lib/validator/sfValidatorCSRFToken.class.php | 45 + .../lib/validator/sfValidatorCallback.class.php | 49 + .../lib/validator/sfValidatorChoice.class.php | 137 + .../lib/validator/sfValidatorDate.class.php | 261 + .../lib/validator/sfValidatorDateRange.class.php | 65 + .../lib/validator/sfValidatorDateTime.class.php | 30 + .../lib/validator/sfValidatorDecorator.class.php | 171 + .../lib/validator/sfValidatorEmail.class.php | 32 + .../lib/validator/sfValidatorError.class.php | 156 + .../lib/validator/sfValidatorErrorSchema.class.php | 340 + .../lib/validator/sfValidatorFile.class.php | 299 + .../validator/sfValidatorFromDescription.class.php | 387 + .../lib/validator/sfValidatorInteger.class.php | 74 + .../lib/validator/sfValidatorNumber.class.php | 74 + .../symfony/lib/validator/sfValidatorOr.class.php | 146 + .../lib/validator/sfValidatorPass.class.php | 36 + .../lib/validator/sfValidatorRegex.class.php | 74 + .../lib/validator/sfValidatorSchema.class.php | 399 + .../validator/sfValidatorSchemaCompare.class.php | 159 + .../validator/sfValidatorSchemaFilter.class.php | 75 + .../validator/sfValidatorSchemaForEach.class.php | 49 + .../lib/validator/sfValidatorString.class.php | 71 + .../lib/validator/sfValidatorTime.class.php | 151 + .../symfony/lib/validator/sfValidatorUrl.class.php | 59 + lib/vendor/symfony/lib/vendor/.svn/all-wcprops | 5 + lib/vendor/symfony/lib/vendor/.svn/dir-prop-base | 6 + lib/vendor/symfony/lib/vendor/.svn/entries | 31 + .../symfony/lib/vendor/lime/.svn/all-wcprops | 11 + lib/vendor/symfony/lib/vendor/lime/.svn/entries | 62 + .../vendor/lime/.svn/prop-base/lime.php.svn-base | 13 + .../vendor/lime/.svn/text-base/lime.php.svn-base | 1500 + lib/vendor/symfony/lib/vendor/lime/lime.php | 1500 + .../lib/vendor/swiftmailer/.svn/all-wcprops | 35 + .../symfony/lib/vendor/swiftmailer/.svn/entries | 204 + .../.svn/text-base/mime_types.php.svn-base | 76 + .../.svn/text-base/preferences.php.svn-base | 20 + .../.svn/text-base/swift_init.php.svn-base | 21 + .../.svn/text-base/swift_required.php.svn-base | 22 + .../text-base/swift_required_pear.php.svn-base | 22 + .../vendor/swiftmailer/classes/.svn/all-wcprops | 11 + .../lib/vendor/swiftmailer/classes/.svn/entries | 65 + .../classes/.svn/text-base/Swift.php.svn-base | 57 + .../lib/vendor/swiftmailer/classes/Swift.php | 57 + .../swiftmailer/classes/Swift/.svn/all-wcprops | 221 + .../vendor/swiftmailer/classes/Swift/.svn/entries | 1288 + .../Swift/.svn/text-base/Attachment.php.svn-base | 75 + .../.svn/text-base/CharacterReader.php.svn-base | 60 + .../text-base/CharacterReaderFactory.php.svn-base | 29 + .../.svn/text-base/CharacterStream.php.svn-base | 86 + .../.svn/text-base/ConfigurableSpool.php.svn-base | 59 + .../text-base/DependencyContainer.php.svn-base | 349 + .../text-base/DependencyException.php.svn-base | 30 + .../Swift/.svn/text-base/EmbeddedFile.php.svn-base | 73 + .../Swift/.svn/text-base/Encoder.php.svn-base | 32 + .../Swift/.svn/text-base/Encoding.php.svn-base | 70 + .../.svn/text-base/FailoverTransport.php.svn-base | 48 + .../Swift/.svn/text-base/FileSpool.php.svn-base | 116 + .../Swift/.svn/text-base/FileStream.php.svn-base | 28 + .../Swift/.svn/text-base/Filterable.php.svn-base | 34 + .../Swift/.svn/text-base/Image.php.svn-base | 62 + .../.svn/text-base/InputByteStream.php.svn-base | 72 + .../Swift/.svn/text-base/IoException.php.svn-base | 30 + .../Swift/.svn/text-base/KeyCache.php.svn-base | 99 + .../text-base/LoadBalancedTransport.php.svn-base | 48 + .../.svn/text-base/MailTransport.php.svn-base | 48 + .../Swift/.svn/text-base/Mailer.php.svn-base | 173 + .../Swift/.svn/text-base/Message.php.svn-base | 87 + .../Swift/.svn/text-base/MimePart.php.svn-base | 65 + .../.svn/text-base/NullTransport.php.svn-base | 38 + .../.svn/text-base/OutputByteStream.php.svn-base | 41 + .../Swift/.svn/text-base/Preferences.php.svn-base | 76 + .../ReplacementFilterFactory.php.svn-base | 27 + .../text-base/RfcComplianceException.php.svn-base | 30 + .../.svn/text-base/SendmailTransport.php.svn-base | 48 + .../.svn/text-base/SmtpTransport.php.svn-base | 56 + .../Swift/.svn/text-base/Spool.php.svn-base | 50 + .../.svn/text-base/SpoolTransport.php.svn-base | 44 + .../Swift/.svn/text-base/StreamFilter.php.svn-base | 33 + .../.svn/text-base/SwiftException.php.svn-base | 28 + .../Swift/.svn/text-base/Transport.php.svn-base | 60 + .../.svn/text-base/TransportException.php.svn-base | 31 + .../swiftmailer/classes/Swift/Attachment.php | 75 + .../classes/Swift/ByteStream/.svn/all-wcprops | 23 + .../classes/Swift/ByteStream/.svn/entries | 130 + .../AbstractFilterableInputStream.php.svn-base | 178 + .../.svn/text-base/ArrayByteStream.php.svn-base | 190 + .../.svn/text-base/FileByteStream.php.svn-base | 177 + .../ByteStream/AbstractFilterableInputStream.php | 178 + .../classes/Swift/ByteStream/ArrayByteStream.php | 190 + .../classes/Swift/ByteStream/FileByteStream.php | 177 + .../swiftmailer/classes/Swift/CharacterReader.php | 60 + .../classes/Swift/CharacterReader/.svn/all-wcprops | 23 + .../classes/Swift/CharacterReader/.svn/entries | 130 + .../text-base/GenericFixedWidthReader.php.svn-base | 96 + .../.svn/text-base/UsAsciiReader.php.svn-base | 83 + .../.svn/text-base/Utf8Reader.php.svn-base | 183 + .../CharacterReader/GenericFixedWidthReader.php | 96 + .../Swift/CharacterReader/UsAsciiReader.php | 83 + .../classes/Swift/CharacterReader/Utf8Reader.php | 183 + .../classes/Swift/CharacterReaderFactory.php | 29 + .../Swift/CharacterReaderFactory/.svn/all-wcprops | 11 + .../Swift/CharacterReaderFactory/.svn/entries | 62 + .../SimpleCharacterReaderFactory.php.svn-base | 119 + .../SimpleCharacterReaderFactory.php | 119 + .../swiftmailer/classes/Swift/CharacterStream.php | 86 + .../classes/Swift/CharacterStream/.svn/all-wcprops | 17 + .../classes/Swift/CharacterStream/.svn/entries | 96 + .../text-base/ArrayCharacterStream.php.svn-base | 319 + .../.svn/text-base/NgCharacterStream.php.svn-base | 300 + .../Swift/CharacterStream/ArrayCharacterStream.php | 319 + .../Swift/CharacterStream/NgCharacterStream.php | 300 + .../classes/Swift/ConfigurableSpool.php | 59 + .../classes/Swift/DependencyContainer.php | 349 + .../classes/Swift/DependencyException.php | 30 + .../swiftmailer/classes/Swift/EmbeddedFile.php | 73 + .../vendor/swiftmailer/classes/Swift/Encoder.php | 32 + .../classes/Swift/Encoder/.svn/all-wcprops | 23 + .../swiftmailer/classes/Swift/Encoder/.svn/entries | 130 + .../.svn/text-base/Base64Encoder.php.svn-base | 63 + .../Encoder/.svn/text-base/QpEncoder.php.svn-base | 263 + .../.svn/text-base/Rfc2231Encoder.php.svn-base | 89 + .../classes/Swift/Encoder/Base64Encoder.php | 63 + .../classes/Swift/Encoder/QpEncoder.php | 263 + .../classes/Swift/Encoder/Rfc2231Encoder.php | 89 + .../vendor/swiftmailer/classes/Swift/Encoding.php | 70 + .../classes/Swift/Events/.svn/all-wcprops | 95 + .../swiftmailer/classes/Swift/Events/.svn/entries | 538 + .../.svn/text-base/CommandEvent.php.svn-base | 67 + .../.svn/text-base/CommandListener.php.svn-base | 29 + .../Swift/Events/.svn/text-base/Event.php.svn-base | 39 + .../.svn/text-base/EventDispatcher.php.svn-base | 81 + .../.svn/text-base/EventListener.php.svn-base | 19 + .../Events/.svn/text-base/EventObject.php.svn-base | 65 + .../.svn/text-base/ResponseEvent.php.svn-base | 65 + .../.svn/text-base/ResponseListener.php.svn-base | 29 + .../Events/.svn/text-base/SendEvent.php.svn-base | 127 + .../.svn/text-base/SendListener.php.svn-base | 35 + .../text-base/SimpleEventDispatcher.php.svn-base | 175 + .../text-base/TransportChangeEvent.php.svn-base | 31 + .../text-base/TransportChangeListener.php.svn-base | 53 + .../text-base/TransportExceptionEvent.php.svn-base | 50 + .../TransportExceptionListener.php.svn-base | 30 + .../classes/Swift/Events/CommandEvent.php | 67 + .../classes/Swift/Events/CommandListener.php | 29 + .../swiftmailer/classes/Swift/Events/Event.php | 39 + .../classes/Swift/Events/EventDispatcher.php | 81 + .../classes/Swift/Events/EventListener.php | 19 + .../classes/Swift/Events/EventObject.php | 65 + .../classes/Swift/Events/ResponseEvent.php | 65 + .../classes/Swift/Events/ResponseListener.php | 29 + .../swiftmailer/classes/Swift/Events/SendEvent.php | 127 + .../classes/Swift/Events/SendListener.php | 35 + .../classes/Swift/Events/SimpleEventDispatcher.php | 175 + .../classes/Swift/Events/TransportChangeEvent.php | 31 + .../Swift/Events/TransportChangeListener.php | 53 + .../Swift/Events/TransportExceptionEvent.php | 50 + .../Swift/Events/TransportExceptionListener.php | 30 + .../classes/Swift/FailoverTransport.php | 48 + .../vendor/swiftmailer/classes/Swift/FileSpool.php | 116 + .../swiftmailer/classes/Swift/FileStream.php | 28 + .../swiftmailer/classes/Swift/Filterable.php | 34 + .../lib/vendor/swiftmailer/classes/Swift/Image.php | 62 + .../swiftmailer/classes/Swift/InputByteStream.php | 72 + .../swiftmailer/classes/Swift/IoException.php | 30 + .../vendor/swiftmailer/classes/Swift/KeyCache.php | 99 + .../classes/Swift/KeyCache/.svn/all-wcprops | 35 + .../classes/Swift/KeyCache/.svn/entries | 198 + .../.svn/text-base/ArrayKeyCache.php.svn-base | 209 + .../.svn/text-base/DiskKeyCache.php.svn-base | 316 + .../text-base/KeyCacheInputStream.php.svn-base | 53 + .../.svn/text-base/NullKeyCache.php.svn-base | 110 + .../SimpleKeyCacheInputStream.php.svn-base | 131 + .../classes/Swift/KeyCache/ArrayKeyCache.php | 209 + .../classes/Swift/KeyCache/DiskKeyCache.php | 316 + .../classes/Swift/KeyCache/KeyCacheInputStream.php | 53 + .../classes/Swift/KeyCache/NullKeyCache.php | 110 + .../Swift/KeyCache/SimpleKeyCacheInputStream.php | 131 + .../classes/Swift/LoadBalancedTransport.php | 48 + .../swiftmailer/classes/Swift/MailTransport.php | 48 + .../vendor/swiftmailer/classes/Swift/Mailer.php | 173 + .../classes/Swift/Mailer/.svn/all-wcprops | 17 + .../swiftmailer/classes/Swift/Mailer/.svn/entries | 96 + .../text-base/ArrayRecipientIterator.php.svn-base | 59 + .../.svn/text-base/RecipientIterator.php.svn-base | 34 + .../Swift/Mailer/ArrayRecipientIterator.php | 59 + .../classes/Swift/Mailer/RecipientIterator.php | 34 + .../vendor/swiftmailer/classes/Swift/Message.php | 87 + .../classes/Swift/Mime/.svn/all-wcprops | 107 + .../swiftmailer/classes/Swift/Mime/.svn/entries | 615 + .../Mime/.svn/text-base/Attachment.php.svn-base | 143 + .../.svn/text-base/CharsetObserver.php.svn-base | 26 + .../.svn/text-base/ContentEncoder.php.svn-base | 41 + .../Mime/.svn/text-base/EmbeddedFile.php.svn-base | 51 + .../.svn/text-base/EncodingObserver.php.svn-base | 28 + .../Swift/Mime/.svn/text-base/Header.php.svn-base | 85 + .../Mime/.svn/text-base/HeaderEncoder.php.svn-base | 28 + .../Mime/.svn/text-base/HeaderFactory.php.svn-base | 72 + .../Mime/.svn/text-base/HeaderSet.php.svn-base | 170 + .../Swift/Mime/.svn/text-base/Message.php.svn-base | 230 + .../Mime/.svn/text-base/MimeEntity.php.svn-base | 108 + .../Mime/.svn/text-base/MimePart.php.svn-base | 196 + .../text-base/ParameterizedHeader.php.svn-base | 35 + .../text-base/SimpleHeaderFactory.php.svn-base | 187 + .../.svn/text-base/SimpleHeaderSet.php.svn-base | 396 + .../Mime/.svn/text-base/SimpleMessage.php.svn-base | 609 + .../.svn/text-base/SimpleMimeEntity.php.svn-base | 793 + .../swiftmailer/classes/Swift/Mime/Attachment.php | 143 + .../classes/Swift/Mime/CharsetObserver.php | 26 + .../classes/Swift/Mime/ContentEncoder.php | 41 + .../Swift/Mime/ContentEncoder/.svn/all-wcprops | 23 + .../classes/Swift/Mime/ContentEncoder/.svn/entries | 130 + .../text-base/Base64ContentEncoder.php.svn-base | 81 + .../text-base/PlainContentEncoder.php.svn-base | 175 + .../.svn/text-base/QpContentEncoder.php.svn-base | 117 + .../Mime/ContentEncoder/Base64ContentEncoder.php | 81 + .../Mime/ContentEncoder/PlainContentEncoder.php | 175 + .../Swift/Mime/ContentEncoder/QpContentEncoder.php | 117 + .../classes/Swift/Mime/EmbeddedFile.php | 51 + .../classes/Swift/Mime/EncodingObserver.php | 28 + .../swiftmailer/classes/Swift/Mime/Header.php | 85 + .../classes/Swift/Mime/HeaderEncoder.php | 28 + .../Swift/Mime/HeaderEncoder/.svn/all-wcprops | 17 + .../classes/Swift/Mime/HeaderEncoder/.svn/entries | 96 + .../text-base/Base64HeaderEncoder.php.svn-base | 36 + .../.svn/text-base/QpHeaderEncoder.php.svn-base | 99 + .../Mime/HeaderEncoder/Base64HeaderEncoder.php | 36 + .../Swift/Mime/HeaderEncoder/QpHeaderEncoder.php | 99 + .../classes/Swift/Mime/HeaderFactory.php | 72 + .../swiftmailer/classes/Swift/Mime/HeaderSet.php | 170 + .../classes/Swift/Mime/Headers/.svn/all-wcprops | 47 + .../classes/Swift/Mime/Headers/.svn/entries | 266 + .../.svn/text-base/AbstractHeader.php.svn-base | 596 + .../Headers/.svn/text-base/DateHeader.php.svn-base | 118 + .../text-base/IdentificationHeader.php.svn-base | 161 + .../.svn/text-base/MailboxHeader.php.svn-base | 316 + .../text-base/ParameterizedHeader.php.svn-base | 274 + .../Headers/.svn/text-base/PathHeader.php.svn-base | 126 + .../.svn/text-base/UnstructuredHeader.php.svn-base | 108 + .../classes/Swift/Mime/Headers/AbstractHeader.php | 596 + .../classes/Swift/Mime/Headers/DateHeader.php | 118 + .../Swift/Mime/Headers/IdentificationHeader.php | 161 + .../classes/Swift/Mime/Headers/MailboxHeader.php | 316 + .../Swift/Mime/Headers/ParameterizedHeader.php | 274 + .../classes/Swift/Mime/Headers/PathHeader.php | 126 + .../Swift/Mime/Headers/UnstructuredHeader.php | 108 + .../swiftmailer/classes/Swift/Mime/Message.php | 230 + .../swiftmailer/classes/Swift/Mime/MimeEntity.php | 108 + .../swiftmailer/classes/Swift/Mime/MimePart.php | 196 + .../classes/Swift/Mime/ParameterizedHeader.php | 35 + .../classes/Swift/Mime/SimpleHeaderFactory.php | 187 + .../classes/Swift/Mime/SimpleHeaderSet.php | 396 + .../classes/Swift/Mime/SimpleMessage.php | 609 + .../classes/Swift/Mime/SimpleMimeEntity.php | 793 + .../vendor/swiftmailer/classes/Swift/MimePart.php | 65 + .../swiftmailer/classes/Swift/NullTransport.php | 38 + .../swiftmailer/classes/Swift/OutputByteStream.php | 41 + .../classes/Swift/Plugins/.svn/all-wcprops | 83 + .../swiftmailer/classes/Swift/Plugins/.svn/entries | 482 + .../.svn/text-base/AntiFloodPlugin.php.svn-base | 147 + .../text-base/BandwidthMonitorPlugin.php.svn-base | 173 + .../.svn/text-base/BlackholePlugin.php.svn-base | 37 + .../.svn/text-base/DecoratorPlugin.php.svn-base | 201 + .../Plugins/.svn/text-base/Logger.php.svn-base | 37 + .../.svn/text-base/LoggerPlugin.php.svn-base | 160 + .../text-base/PopBeforeSmtpPlugin.php.svn-base | 288 + .../.svn/text-base/RedirectingPlugin.php.svn-base | 109 + .../Plugins/.svn/text-base/Reporter.php.svn-base | 36 + .../.svn/text-base/ReporterPlugin.php.svn-base | 82 + .../Plugins/.svn/text-base/Sleeper.php.svn-base | 26 + .../.svn/text-base/ThrottlerPlugin.php.svn-base | 188 + .../Plugins/.svn/text-base/Timer.php.svn-base | 26 + .../classes/Swift/Plugins/AntiFloodPlugin.php | 147 + .../Swift/Plugins/BandwidthMonitorPlugin.php | 173 + .../classes/Swift/Plugins/BlackholePlugin.php | 37 + .../Swift/Plugins/Decorator/.svn/all-wcprops | 11 + .../classes/Swift/Plugins/Decorator/.svn/entries | 62 + .../.svn/text-base/Replacements.php.svn-base | 36 + .../Swift/Plugins/Decorator/Replacements.php | 36 + .../classes/Swift/Plugins/DecoratorPlugin.php | 201 + .../swiftmailer/classes/Swift/Plugins/Logger.php | 37 + .../classes/Swift/Plugins/LoggerPlugin.php | 160 + .../classes/Swift/Plugins/Loggers/.svn/all-wcprops | 17 + .../classes/Swift/Plugins/Loggers/.svn/entries | 96 + .../.svn/text-base/ArrayLogger.php.svn-base | 73 + .../Loggers/.svn/text-base/EchoLogger.php.svn-base | 64 + .../classes/Swift/Plugins/Loggers/ArrayLogger.php | 73 + .../classes/Swift/Plugins/Loggers/EchoLogger.php | 64 + .../classes/Swift/Plugins/Pop/.svn/all-wcprops | 17 + .../classes/Swift/Plugins/Pop/.svn/entries | 96 + .../Pop/.svn/text-base/Pop3Connection.php.svn-base | 36 + .../Pop/.svn/text-base/Pop3Exception.php.svn-base | 34 + .../classes/Swift/Plugins/Pop/Pop3Connection.php | 36 + .../classes/Swift/Plugins/Pop/Pop3Exception.php | 34 + .../classes/Swift/Plugins/PopBeforeSmtpPlugin.php | 288 + .../classes/Swift/Plugins/RedirectingPlugin.php | 109 + .../swiftmailer/classes/Swift/Plugins/Reporter.php | 36 + .../classes/Swift/Plugins/ReporterPlugin.php | 82 + .../Swift/Plugins/Reporters/.svn/all-wcprops | 17 + .../classes/Swift/Plugins/Reporters/.svn/entries | 96 + .../.svn/text-base/HitReporter.php.svn-base | 63 + .../.svn/text-base/HtmlReporter.php.svn-base | 47 + .../Swift/Plugins/Reporters/HitReporter.php | 63 + .../Swift/Plugins/Reporters/HtmlReporter.php | 47 + .../swiftmailer/classes/Swift/Plugins/Sleeper.php | 26 + .../classes/Swift/Plugins/ThrottlerPlugin.php | 188 + .../swiftmailer/classes/Swift/Plugins/Timer.php | 26 + .../swiftmailer/classes/Swift/Preferences.php | 76 + .../classes/Swift/ReplacementFilterFactory.php | 27 + .../classes/Swift/RfcComplianceException.php | 30 + .../classes/Swift/SendmailTransport.php | 48 + .../swiftmailer/classes/Swift/SmtpTransport.php | 56 + .../lib/vendor/swiftmailer/classes/Swift/Spool.php | 50 + .../swiftmailer/classes/Swift/SpoolTransport.php | 44 + .../swiftmailer/classes/Swift/StreamFilter.php | 33 + .../classes/Swift/StreamFilters/.svn/all-wcprops | 23 + .../classes/Swift/StreamFilters/.svn/entries | 130 + .../ByteArrayReplacementFilter.php.svn-base | 188 + .../text-base/StringReplacementFilter.php.svn-base | 66 + .../StringReplacementFilterFactory.php.svn-base | 53 + .../StreamFilters/ByteArrayReplacementFilter.php | 188 + .../StreamFilters/StringReplacementFilter.php | 66 + .../StringReplacementFilterFactory.php | 53 + .../swiftmailer/classes/Swift/SwiftException.php | 28 + .../vendor/swiftmailer/classes/Swift/Transport.php | 60 + .../classes/Swift/Transport/.svn/all-wcprops | 89 + .../classes/Swift/Transport/.svn/entries | 507 + .../text-base/AbstractSmtpTransport.php.svn-base | 543 + .../.svn/text-base/EsmtpHandler.php.svn-base | 82 + .../.svn/text-base/EsmtpTransport.php.svn-base | 339 + .../.svn/text-base/FailoverTransport.php.svn-base | 97 + .../Transport/.svn/text-base/IoBuffer.php.svn-base | 65 + .../text-base/LoadBalancedTransport.php.svn-base | 188 + .../.svn/text-base/MailInvoker.php.svn-base | 36 + .../.svn/text-base/MailTransport.php.svn-base | 242 + .../.svn/text-base/NullTransport.php.svn-base | 90 + .../.svn/text-base/SendmailTransport.php.svn-base | 173 + .../.svn/text-base/SimpleMailInvoker.php.svn-base | 58 + .../.svn/text-base/SmtpAgent.php.svn-base | 36 + .../.svn/text-base/SpoolTransport.php.svn-base | 115 + .../.svn/text-base/StreamBuffer.php.svn-base | 276 + .../Swift/Transport/AbstractSmtpTransport.php | 543 + .../classes/Swift/Transport/Esmtp/.svn/all-wcprops | 17 + .../classes/Swift/Transport/Esmtp/.svn/entries | 99 + .../Esmtp/.svn/text-base/AuthHandler.php.svn-base | 262 + .../.svn/text-base/Authenticator.php.svn-base | 38 + .../Swift/Transport/Esmtp/Auth/.svn/all-wcprops | 23 + .../Swift/Transport/Esmtp/Auth/.svn/entries | 130 + .../text-base/CramMd5Authenticator.php.svn-base | 88 + .../.svn/text-base/LoginAuthenticator.php.svn-base | 58 + .../.svn/text-base/PlainAuthenticator.php.svn-base | 57 + .../Transport/Esmtp/Auth/CramMd5Authenticator.php | 88 + .../Transport/Esmtp/Auth/LoginAuthenticator.php | 58 + .../Transport/Esmtp/Auth/PlainAuthenticator.php | 57 + .../classes/Swift/Transport/Esmtp/AuthHandler.php | 262 + .../Swift/Transport/Esmtp/Authenticator.php | 38 + .../classes/Swift/Transport/EsmtpHandler.php | 82 + .../classes/Swift/Transport/EsmtpTransport.php | 339 + .../classes/Swift/Transport/FailoverTransport.php | 97 + .../classes/Swift/Transport/IoBuffer.php | 65 + .../Swift/Transport/LoadBalancedTransport.php | 188 + .../classes/Swift/Transport/MailInvoker.php | 36 + .../classes/Swift/Transport/MailTransport.php | 242 + .../classes/Swift/Transport/NullTransport.php | 90 + .../classes/Swift/Transport/SendmailTransport.php | 173 + .../classes/Swift/Transport/SimpleMailInvoker.php | 58 + .../classes/Swift/Transport/SmtpAgent.php | 36 + .../classes/Swift/Transport/SpoolTransport.php | 115 + .../classes/Swift/Transport/StreamBuffer.php | 276 + .../classes/Swift/TransportException.php | 31 + .../swiftmailer/dependency_maps/.svn/all-wcprops | 23 + .../swiftmailer/dependency_maps/.svn/entries | 130 + .../.svn/text-base/cache_deps.php.svn-base | 25 + .../.svn/text-base/mime_deps.php.svn-base | 97 + .../.svn/text-base/transport_deps.php.svn-base | 70 + .../swiftmailer/dependency_maps/cache_deps.php | 25 + .../swiftmailer/dependency_maps/mime_deps.php | 97 + .../swiftmailer/dependency_maps/transport_deps.php | 70 + .../symfony/lib/vendor/swiftmailer/mime_types.php | 76 + .../symfony/lib/vendor/swiftmailer/preferences.php | 20 + .../symfony/lib/vendor/swiftmailer/swift_init.php | 21 + .../lib/vendor/swiftmailer/swift_required.php | 22 + .../lib/vendor/swiftmailer/swift_required_pear.php | 22 + lib/vendor/symfony/lib/view/.svn/all-wcprops | 35 + lib/vendor/symfony/lib/view/.svn/entries | 198 + .../.svn/prop-base/sfPHPView.class.php.svn-base | 13 + .../prop-base/sfPartialView.class.php.svn-base | 13 + .../view/.svn/prop-base/sfView.class.php.svn-base | 13 + .../sfViewCacheManager.class.php.svn-base | 13 + .../sfViewParameterHolder.class.php.svn-base | 13 + .../.svn/text-base/sfPHPView.class.php.svn-base | 201 + .../text-base/sfPartialView.class.php.svn-base | 165 + .../view/.svn/text-base/sfView.class.php.svn-base | 572 + .../sfViewCacheManager.class.php.svn-base | 1055 + .../sfViewParameterHolder.class.php.svn-base | 189 + lib/vendor/symfony/lib/view/sfPHPView.class.php | 201 + .../symfony/lib/view/sfPartialView.class.php | 165 + lib/vendor/symfony/lib/view/sfView.class.php | 572 + .../symfony/lib/view/sfViewCacheManager.class.php | 1055 + .../lib/view/sfViewParameterHolder.class.php | 189 + lib/vendor/symfony/lib/widget/.svn/all-wcprops | 173 + lib/vendor/symfony/lib/widget/.svn/entries | 983 + .../.svn/prop-base/sfWidget.class.php.svn-base | 13 + .../.svn/prop-base/sfWidgetForm.class.php.svn-base | 13 + .../sfWidgetFormChoice.class.php.svn-base | 13 + .../prop-base/sfWidgetFormDate.class.php.svn-base | 13 + .../sfWidgetFormDateRange.class.php.svn-base | 13 + .../sfWidgetFormDateTime.class.php.svn-base | 13 + .../sfWidgetFormFilterDate.class.php.svn-base | 13 + .../sfWidgetFormFilterInput.class.php.svn-base | 13 + .../prop-base/sfWidgetFormInput.class.php.svn-base | 13 + .../sfWidgetFormInputCheckbox.class.php.svn-base | 13 + .../sfWidgetFormInputFile.class.php.svn-base | 13 + ...fWidgetFormInputFileEditable.class.php.svn-base | 13 + .../sfWidgetFormInputHidden.class.php.svn-base | 13 + .../sfWidgetFormInputPassword.class.php.svn-base | 13 + .../sfWidgetFormInputText.class.php.svn-base | 13 + .../sfWidgetFormSchema.class.php.svn-base | 13 + .../sfWidgetFormSchemaDecorator.class.php.svn-base | 13 + .../sfWidgetFormSchemaForEach.class.php.svn-base | 13 + .../sfWidgetFormSchemaFormatter.class.php.svn-base | 13 + ...idgetFormSchemaFormatterList.class.php.svn-base | 13 + ...dgetFormSchemaFormatterTable.class.php.svn-base | 13 + .../sfWidgetFormSelect.class.php.svn-base | 13 + .../sfWidgetFormSelectCheckbox.class.php.svn-base | 13 + .../sfWidgetFormSelectMany.class.php.svn-base | 13 + .../sfWidgetFormSelectRadio.class.php.svn-base | 13 + .../sfWidgetFormTextarea.class.php.svn-base | 13 + .../prop-base/sfWidgetFormTime.class.php.svn-base | 13 + .../.svn/text-base/sfWidget.class.php.svn-base | 406 + .../.svn/text-base/sfWidgetForm.class.php.svn-base | 354 + .../sfWidgetFormChoice.class.php.svn-base | 144 + .../sfWidgetFormChoiceBase.class.php.svn-base | 89 + .../text-base/sfWidgetFormDate.class.php.svn-base | 132 + .../sfWidgetFormDateRange.class.php.svn-base | 85 + .../sfWidgetFormDateTime.class.php.svn-base | 137 + .../sfWidgetFormFilterDate.class.php.svn-base | 70 + .../sfWidgetFormFilterInput.class.php.svn-base | 65 + .../text-base/sfWidgetFormInput.class.php.svn-base | 57 + .../sfWidgetFormInputCheckbox.class.php.svn-base | 84 + .../sfWidgetFormInputFile.class.php.svn-base | 36 + ...fWidgetFormInputFileEditable.class.php.svn-base | 112 + .../sfWidgetFormInputHidden.class.php.svn-base | 36 + .../sfWidgetFormInputPassword.class.php.svn-base | 58 + .../sfWidgetFormInputText.class.php.svn-base | 35 + .../sfWidgetFormSchema.class.php.svn-base | 866 + .../sfWidgetFormSchemaDecorator.class.php.svn-base | 355 + .../sfWidgetFormSchemaForEach.class.php.svn-base | 36 + .../sfWidgetFormSchemaFormatter.class.php.svn-base | 346 + ...idgetFormSchemaFormatterList.class.php.svn-base | 26 + ...dgetFormSchemaFormatterTable.class.php.svn-base | 26 + .../sfWidgetFormSelect.class.php.svn-base | 114 + .../sfWidgetFormSelectCheckbox.class.php.svn-base | 129 + .../sfWidgetFormSelectMany.class.php.svn-base | 35 + .../sfWidgetFormSelectRadio.class.php.svn-base | 124 + .../sfWidgetFormTextarea.class.php.svn-base | 51 + .../text-base/sfWidgetFormTime.class.php.svn-base | 107 + .../symfony/lib/widget/i18n/.svn/all-wcprops | 47 + lib/vendor/symfony/lib/widget/i18n/.svn/entries | 266 + ...fWidgetFormI18nChoiceCountry.class.php.svn-base | 9 + ...WidgetFormI18nChoiceCurrency.class.php.svn-base | 9 + ...WidgetFormI18nChoiceLanguage.class.php.svn-base | 9 + ...WidgetFormI18nChoiceTimezone.class.php.svn-base | 9 + .../sfWidgetFormI18nDate.class.php.svn-base | 13 + .../sfWidgetFormI18nDateTime.class.php.svn-base | 13 + .../sfWidgetFormI18nTime.class.php.svn-base | 13 + ...fWidgetFormI18nChoiceCountry.class.php.svn-base | 57 + ...WidgetFormI18nChoiceCurrency.class.php.svn-base | 57 + ...WidgetFormI18nChoiceLanguage.class.php.svn-base | 57 + ...WidgetFormI18nChoiceTimezone.class.php.svn-base | 54 + .../sfWidgetFormI18nDate.class.php.svn-base | 81 + .../sfWidgetFormI18nDateTime.class.php.svn-base | 60 + .../sfWidgetFormI18nTime.class.php.svn-base | 74 + .../i18n/sfWidgetFormI18nChoiceCountry.class.php | 57 + .../i18n/sfWidgetFormI18nChoiceCurrency.class.php | 57 + .../i18n/sfWidgetFormI18nChoiceLanguage.class.php | 57 + .../i18n/sfWidgetFormI18nChoiceTimezone.class.php | 54 + .../lib/widget/i18n/sfWidgetFormI18nDate.class.php | 81 + .../widget/i18n/sfWidgetFormI18nDateTime.class.php | 60 + .../lib/widget/i18n/sfWidgetFormI18nTime.class.php | 74 + lib/vendor/symfony/lib/widget/sfWidget.class.php | 406 + .../symfony/lib/widget/sfWidgetForm.class.php | 354 + .../lib/widget/sfWidgetFormChoice.class.php | 144 + .../lib/widget/sfWidgetFormChoiceBase.class.php | 89 + .../symfony/lib/widget/sfWidgetFormDate.class.php | 132 + .../lib/widget/sfWidgetFormDateRange.class.php | 85 + .../lib/widget/sfWidgetFormDateTime.class.php | 137 + .../lib/widget/sfWidgetFormFilterDate.class.php | 70 + .../lib/widget/sfWidgetFormFilterInput.class.php | 65 + .../symfony/lib/widget/sfWidgetFormInput.class.php | 57 + .../lib/widget/sfWidgetFormInputCheckbox.class.php | 84 + .../lib/widget/sfWidgetFormInputFile.class.php | 36 + .../widget/sfWidgetFormInputFileEditable.class.php | 112 + .../lib/widget/sfWidgetFormInputHidden.class.php | 36 + .../lib/widget/sfWidgetFormInputPassword.class.php | 58 + .../lib/widget/sfWidgetFormInputText.class.php | 35 + .../lib/widget/sfWidgetFormSchema.class.php | 866 + .../widget/sfWidgetFormSchemaDecorator.class.php | 355 + .../lib/widget/sfWidgetFormSchemaForEach.class.php | 36 + .../widget/sfWidgetFormSchemaFormatter.class.php | 346 + .../sfWidgetFormSchemaFormatterList.class.php | 26 + .../sfWidgetFormSchemaFormatterTable.class.php | 26 + .../lib/widget/sfWidgetFormSelect.class.php | 114 + .../widget/sfWidgetFormSelectCheckbox.class.php | 129 + .../lib/widget/sfWidgetFormSelectMany.class.php | 35 + .../lib/widget/sfWidgetFormSelectRadio.class.php | 124 + .../lib/widget/sfWidgetFormTextarea.class.php | 51 + .../symfony/lib/widget/sfWidgetFormTime.class.php | 107 + lib/vendor/symfony/lib/yaml/.svn/all-wcprops | 29 + lib/vendor/symfony/lib/yaml/.svn/entries | 164 + .../lib/yaml/.svn/text-base/sfYaml.php.svn-base | 135 + .../yaml/.svn/text-base/sfYamlDumper.php.svn-base | 60 + .../yaml/.svn/text-base/sfYamlInline.php.svn-base | 442 + .../yaml/.svn/text-base/sfYamlParser.php.svn-base | 600 + lib/vendor/symfony/lib/yaml/sfYaml.php | 135 + lib/vendor/symfony/lib/yaml/sfYamlDumper.php | 60 + lib/vendor/symfony/lib/yaml/sfYamlInline.php | 442 + lib/vendor/symfony/lib/yaml/sfYamlParser.php | 600 + lib/vendor/symfony/licenses/.svn/all-wcprops | 29 + lib/vendor/symfony/licenses/.svn/entries | 164 + .../licenses/.svn/text-base/LICENSE.ICU.svn-base | 35 + .../licenses/.svn/text-base/LICENSE.lime.svn-base | 7 + .../licenses/.svn/text-base/LICENSE.prado.svn-base | 28 + .../.svn/text-base/LICENSE.swiftmailer.svn-base | 165 + lib/vendor/symfony/licenses/LICENSE.ICU | 35 + lib/vendor/symfony/licenses/LICENSE.lime | 7 + lib/vendor/symfony/licenses/LICENSE.prado | 28 + lib/vendor/symfony/licenses/LICENSE.swiftmailer | 165 + lib/vendor/symfony/package.xml.tmpl | 102 + lib/vendor/symfony/test/.svn/all-wcprops | 5 + lib/vendor/symfony/test/.svn/entries | 43 + lib/vendor/symfony/test/bin/.svn/all-wcprops | 17 + lib/vendor/symfony/test/bin/.svn/entries | 96 + .../test/bin/.svn/prop-base/coverage.php.svn-base | 13 + .../test/bin/.svn/prop-base/loc.php.svn-base | 13 + .../test/bin/.svn/text-base/coverage.php.svn-base | 35 + .../test/bin/.svn/text-base/loc.php.svn-base | 45 + lib/vendor/symfony/test/bin/coverage.php | 35 + lib/vendor/symfony/test/bin/loc.php | 45 + lib/vendor/symfony/test/bootstrap/.svn/all-wcprops | 23 + lib/vendor/symfony/test/bootstrap/.svn/entries | 130 + .../.svn/prop-base/functional.php.svn-base | 13 + .../bootstrap/.svn/prop-base/task.php.svn-base | 13 + .../bootstrap/.svn/prop-base/unit.php.svn-base | 13 + .../.svn/text-base/functional.php.svn-base | 73 + .../bootstrap/.svn/text-base/task.php.svn-base | 22 + .../bootstrap/.svn/text-base/unit.php.svn-base | 68 + lib/vendor/symfony/test/bootstrap/functional.php | 73 + lib/vendor/symfony/test/bootstrap/task.php | 22 + lib/vendor/symfony/test/bootstrap/unit.php | 68 + .../symfony/test/functional/.svn/all-wcprops | 77 + lib/vendor/symfony/test/functional/.svn/entries | 439 + .../.svn/prop-base/authTest.php.svn-base | 13 + .../.svn/prop-base/autoloadTest.php.svn-base | 13 + .../.svn/prop-base/cacheTest.php.svn-base | 13 + .../.svn/prop-base/escapingTest.php.svn-base | 13 + .../.svn/prop-base/filterTest.php.svn-base | 13 + .../.svn/prop-base/formatTest.php.svn-base | 13 + .../.svn/prop-base/genericTest.php.svn-base | 13 + .../.svn/prop-base/httpcacheTest.php.svn-base | 13 + .../.svn/prop-base/i18nFormTest.php.svn-base | 9 + .../.svn/prop-base/i18nTest.php.svn-base | 13 + .../.svn/prop-base/prodTest.php.svn-base | 13 + .../.svn/prop-base/sfTestBrowserTest.php.svn-base | 13 + .../.svn/text-base/authTest.php.svn-base | 67 + .../.svn/text-base/autoloadTest.php.svn-base | 40 + .../.svn/text-base/cacheTest.php.svn-base | 513 + .../.svn/text-base/escapingTest.php.svn-base | 50 + .../.svn/text-base/filterTest.php.svn-base | 45 + .../.svn/text-base/formatTest.php.svn-base | 125 + .../.svn/text-base/genericTest.php.svn-base | 236 + .../.svn/text-base/httpcacheTest.php.svn-base | 61 + .../.svn/text-base/i18nFormTest.php.svn-base | 79 + .../.svn/text-base/i18nTest.php.svn-base | 104 + .../.svn/text-base/prodTest.php.svn-base | 82 + .../.svn/text-base/sfTestBrowserTest.php.svn-base | 263 + lib/vendor/symfony/test/functional/authTest.php | 67 + .../symfony/test/functional/autoloadTest.php | 40 + lib/vendor/symfony/test/functional/cacheTest.php | 513 + .../symfony/test/functional/escapingTest.php | 50 + lib/vendor/symfony/test/functional/filterTest.php | 45 + .../test/functional/fixtures/.svn/all-wcprops | 11 + .../symfony/test/functional/fixtures/.svn/entries | 83 + .../fixtures/.svn/prop-base/symfony.svn-base | 5 + .../fixtures/.svn/text-base/symfony.svn-base | 15 + .../test/functional/fixtures/apps/.svn/all-wcprops | 5 + .../test/functional/fixtures/apps/.svn/entries | 37 + .../fixtures/apps/cache/.svn/all-wcprops | 5 + .../functional/fixtures/apps/cache/.svn/entries | 43 + .../fixtures/apps/cache/config/.svn/all-wcprops | 59 + .../fixtures/apps/cache/config/.svn/entries | 334 + .../cacheConfiguration.class.php.svn-base | 13 + .../cache/config/.svn/text-base/app.yml.svn-base | 2 + .../cache/config/.svn/text-base/cache.yml.svn-base | 4 + .../cacheConfiguration.class.php.svn-base | 8 + .../config/.svn/text-base/factories.yml.svn-base | 17 + .../config/.svn/text-base/filters.yml.svn-base | 9 + .../config/.svn/text-base/routing.yml.svn-base | 15 + .../config/.svn/text-base/security.yml.svn-base | 2 + .../config/.svn/text-base/settings.yml.svn-base | 22 + .../cache/config/.svn/text-base/view.yml.svn-base | 17 + .../functional/fixtures/apps/cache/config/app.yml | 2 + .../fixtures/apps/cache/config/cache.yml | 4 + .../apps/cache/config/cacheConfiguration.class.php | 8 + .../fixtures/apps/cache/config/factories.yml | 17 + .../fixtures/apps/cache/config/filters.yml | 9 + .../fixtures/apps/cache/config/routing.yml | 15 + .../fixtures/apps/cache/config/security.yml | 2 + .../fixtures/apps/cache/config/settings.yml | 22 + .../functional/fixtures/apps/cache/config/view.yml | 17 + .../fixtures/apps/cache/i18n/.svn/all-wcprops | 5 + .../fixtures/apps/cache/i18n/.svn/entries | 28 + .../fixtures/apps/cache/lib/.svn/all-wcprops | 11 + .../fixtures/apps/cache/lib/.svn/entries | 62 + .../lib/.svn/prop-base/myUser.class.php.svn-base | 13 + .../lib/.svn/text-base/myUser.class.php.svn-base | 5 + .../fixtures/apps/cache/lib/myUser.class.php | 5 + .../fixtures/apps/cache/modules/.svn/all-wcprops | 5 + .../fixtures/apps/cache/modules/.svn/entries | 37 + .../apps/cache/modules/cache/.svn/all-wcprops | 5 + .../fixtures/apps/cache/modules/cache/.svn/entries | 43 + .../cache/modules/cache/actions/.svn/all-wcprops | 17 + .../apps/cache/modules/cache/actions/.svn/entries | 96 + .../.svn/prop-base/actions.class.php.svn-base | 13 + .../.svn/prop-base/components.class.php.svn-base | 13 + .../.svn/text-base/actions.class.php.svn-base | 104 + .../.svn/text-base/components.class.php.svn-base | 36 + .../cache/modules/cache/actions/actions.class.php | 104 + .../modules/cache/actions/components.class.php | 36 + .../cache/modules/cache/config/.svn/all-wcprops | 11 + .../apps/cache/modules/cache/config/.svn/entries | 62 + .../cache/config/.svn/text-base/cache.yml.svn-base | 62 + .../apps/cache/modules/cache/config/cache.yml | 62 + .../apps/cache/modules/cache/data/.svn/all-wcprops | 11 + .../apps/cache/modules/cache/data/.svn/entries | 62 + .../cache/data/.svn/prop-base/ok48.png.svn-base | 5 + .../cache/data/.svn/text-base/ok48.png.svn-base | Bin 0 -> 3106 bytes .../apps/cache/modules/cache/data/ok48.png | Bin 0 -> 3106 bytes .../apps/cache/modules/cache/lib/.svn/all-wcprops | 5 + .../apps/cache/modules/cache/lib/.svn/entries | 28 + .../cache/modules/cache/templates/.svn/all-wcprops | 125 + .../cache/modules/cache/templates/.svn/entries | 708 + .../_anotherCacheablePartial.php.svn-base | 13 + .../prop-base/_cacheableComponent.php.svn-base | 13 + .../.svn/prop-base/_cacheablePartial.php.svn-base | 13 + .../.svn/prop-base/_component.php.svn-base | 13 + .../_contextualCacheableComponent.php.svn-base | 13 + .../_contextualCacheablePartial.php.svn-base | 13 + .../prop-base/_contextualComponent.php.svn-base | 13 + .../.svn/prop-base/_contextualPartial.php.svn-base | 13 + .../templates/.svn/prop-base/_partial.php.svn-base | 13 + .../.svn/prop-base/actionSuccess.php.svn-base | 13 + .../prop-base/anotherPartialSuccess.php.svn-base | 13 + .../.svn/prop-base/componentSuccess.php.svn-base | 13 + .../.svn/prop-base/imageSuccess.php.svn-base | 13 + .../.svn/prop-base/indexSuccess.php.svn-base | 13 + .../.svn/prop-base/listSuccess.php.svn-base | 9 + .../.svn/prop-base/multiBisSuccess.php.svn-base | 13 + .../.svn/prop-base/multiSuccess.php.svn-base | 13 + .../.svn/prop-base/pageSuccess.php.svn-base | 13 + .../.svn/prop-base/partialSuccess.php.svn-base | 13 + .../prop-base/specificCacheKeySuccess.php.svn-base | 13 + .../_anotherCacheablePartial.php.svn-base | 10 + .../text-base/_cacheableComponent.php.svn-base | 6 + .../.svn/text-base/_cacheablePartial.php.svn-base | 8 + .../.svn/text-base/_component.php.svn-base | 1 + .../_contextualCacheableComponent.php.svn-base | 1 + .../_contextualCacheablePartial.php.svn-base | 1 + .../text-base/_contextualComponent.php.svn-base | 1 + .../.svn/text-base/_contextualPartial.php.svn-base | 1 + .../templates/.svn/text-base/_partial.php.svn-base | 1 + .../.svn/text-base/actionSuccess.php.svn-base | 1 + .../text-base/anotherPartialSuccess.php.svn-base | 1 + .../.svn/text-base/componentSuccess.php.svn-base | 2 + .../.svn/text-base/imageSuccess.php.svn-base | 1 + .../.svn/text-base/indexSuccess.php.svn-base | 3 + .../.svn/text-base/listSuccess.php.svn-base | 1 + .../.svn/text-base/multiBisSuccess.php.svn-base | 10 + .../.svn/text-base/multiSuccess.php.svn-base | 30 + .../.svn/text-base/pageSuccess.php.svn-base | 1 + .../.svn/text-base/partialSuccess.php.svn-base | 1 + .../text-base/specificCacheKeySuccess.php.svn-base | 5 + .../cache/templates/_anotherCacheablePartial.php | 10 + .../cache/templates/_cacheableComponent.php | 6 + .../modules/cache/templates/_cacheablePartial.php | 8 + .../cache/modules/cache/templates/_component.php | 1 + .../templates/_contextualCacheableComponent.php | 1 + .../templates/_contextualCacheablePartial.php | 1 + .../cache/templates/_contextualComponent.php | 1 + .../modules/cache/templates/_contextualPartial.php | 1 + .../cache/modules/cache/templates/_partial.php | 1 + .../modules/cache/templates/actionSuccess.php | 1 + .../cache/templates/anotherPartialSuccess.php | 1 + .../modules/cache/templates/componentSuccess.php | 2 + .../cache/modules/cache/templates/imageSuccess.php | 1 + .../cache/modules/cache/templates/indexSuccess.php | 3 + .../cache/modules/cache/templates/listSuccess.php | 1 + .../modules/cache/templates/multiBisSuccess.php | 10 + .../cache/modules/cache/templates/multiSuccess.php | 30 + .../cache/modules/cache/templates/pageSuccess.php | 1 + .../modules/cache/templates/partialSuccess.php | 1 + .../cache/templates/specificCacheKeySuccess.php | 5 + .../apps/cache/modules/httpcache/.svn/all-wcprops | 5 + .../apps/cache/modules/httpcache/.svn/entries | 37 + .../modules/httpcache/actions/.svn/all-wcprops | 11 + .../cache/modules/httpcache/actions/.svn/entries | 62 + .../.svn/prop-base/actions.class.php.svn-base | 13 + .../.svn/text-base/actions.class.php.svn-base | 28 + .../modules/httpcache/actions/actions.class.php | 28 + .../modules/httpcache/config/.svn/all-wcprops | 11 + .../cache/modules/httpcache/config/.svn/entries | 62 + .../config/.svn/text-base/cache.yml.svn-base | 11 + .../apps/cache/modules/httpcache/config/cache.yml | 11 + .../modules/httpcache/templates/.svn/all-wcprops | 11 + .../cache/modules/httpcache/templates/.svn/entries | 62 + .../.svn/prop-base/indexSuccess.php.svn-base | 13 + .../.svn/text-base/indexSuccess.php.svn-base | 1 + .../modules/httpcache/templates/indexSuccess.php | 1 + .../apps/cache/modules/nocache/.svn/all-wcprops | 5 + .../apps/cache/modules/nocache/.svn/entries | 40 + .../cache/modules/nocache/actions/.svn/all-wcprops | 11 + .../cache/modules/nocache/actions/.svn/entries | 62 + .../.svn/prop-base/actions.class.php.svn-base | 13 + .../.svn/text-base/actions.class.php.svn-base | 20 + .../modules/nocache/actions/actions.class.php | 20 + .../cache/modules/nocache/config/.svn/all-wcprops | 11 + .../apps/cache/modules/nocache/config/.svn/entries | 62 + .../config/.svn/text-base/cache.yml.svn-base | 2 + .../apps/cache/modules/nocache/config/cache.yml | 2 + .../cache/modules/nocache/lib/.svn/all-wcprops | 5 + .../apps/cache/modules/nocache/lib/.svn/entries | 28 + .../modules/nocache/templates/.svn/all-wcprops | 11 + .../cache/modules/nocache/templates/.svn/entries | 62 + .../.svn/prop-base/indexSuccess.php.svn-base | 13 + .../.svn/text-base/indexSuccess.php.svn-base | 3 + .../modules/nocache/templates/indexSuccess.php | 3 + .../fixtures/apps/cache/templates/.svn/all-wcprops | 17 + .../fixtures/apps/cache/templates/.svn/entries | 96 + .../templates/.svn/prop-base/image.php.svn-base | 13 + .../templates/.svn/prop-base/layout.php.svn-base | 13 + .../templates/.svn/text-base/image.php.svn-base | 1 + .../templates/.svn/text-base/layout.php.svn-base | 25 + .../fixtures/apps/cache/templates/image.php | 1 + .../fixtures/apps/cache/templates/layout.php | 25 + .../fixtures/apps/frontend/.svn/all-wcprops | 5 + .../functional/fixtures/apps/frontend/.svn/entries | 43 + .../fixtures/apps/frontend/config/.svn/all-wcprops | 59 + .../fixtures/apps/frontend/config/.svn/entries | 337 + .../frontendConfiguration.class.php.svn-base | 13 + .../config/.svn/text-base/app.yml.svn-base | 2 + .../config/.svn/text-base/cache.yml.svn-base | 4 + .../config/.svn/text-base/factories.yml.svn-base | 17 + .../config/.svn/text-base/filters.yml.svn-base | 11 + .../frontendConfiguration.class.php.svn-base | 42 + .../config/.svn/text-base/routing.yml.svn-base | 19 + .../config/.svn/text-base/security.yml.svn-base | 2 + .../config/.svn/text-base/settings.yml.svn-base | 25 + .../config/.svn/text-base/view.yml.svn-base | 24 + .../fixtures/apps/frontend/config/app.yml | 2 + .../fixtures/apps/frontend/config/cache.yml | 4 + .../frontend/config/dirmyconfig/.svn/all-wcprops | 11 + .../apps/frontend/config/dirmyconfig/.svn/entries | 62 + .../.svn/text-base/myconfig.yml.svn-base | 0 .../apps/frontend/config/dirmyconfig/myconfig.yml | 0 .../fixtures/apps/frontend/config/factories.yml | 17 + .../fixtures/apps/frontend/config/filters.yml | 11 + .../config/frontendConfiguration.class.php | 42 + .../fixtures/apps/frontend/config/routing.yml | 19 + .../fixtures/apps/frontend/config/security.yml | 2 + .../fixtures/apps/frontend/config/settings.yml | 25 + .../fixtures/apps/frontend/config/view.yml | 24 + .../fixtures/apps/frontend/i18n/.svn/all-wcprops | 5 + .../fixtures/apps/frontend/i18n/.svn/entries | 28 + .../fixtures/apps/frontend/lib/.svn/all-wcprops | 35 + .../fixtures/apps/frontend/lib/.svn/entries | 198 + .../myAppsFrontendLibClass.class.php.svn-base | 13 + .../.svn/prop-base/myAutoload.class.php.svn-base | 13 + .../prop-base/myAutoloadedClass.class.php.svn-base | 13 + .../lib/.svn/prop-base/myFilter.class.php.svn-base | 13 + .../lib/.svn/prop-base/myUser.class.php.svn-base | 13 + .../myAppsFrontendLibClass.class.php.svn-base | 9 + .../.svn/text-base/myAutoload.class.php.svn-base | 16 + .../text-base/myAutoloadedClass.class.php.svn-base | 9 + .../lib/.svn/text-base/myFilter.class.php.svn-base | 22 + .../lib/.svn/text-base/myUser.class.php.svn-base | 5 + .../frontend/lib/myAppsFrontendLibClass.class.php | 9 + .../apps/frontend/lib/myAutoload.class.php | 16 + .../apps/frontend/lib/myAutoloadedClass.class.php | 9 + .../fixtures/apps/frontend/lib/myFilter.class.php | 22 + .../fixtures/apps/frontend/lib/myUser.class.php | 5 + .../apps/frontend/modules/.svn/all-wcprops | 5 + .../fixtures/apps/frontend/modules/.svn/entries | 88 + .../modules/assetInclusion/.svn/all-wcprops | 5 + .../frontend/modules/assetInclusion/.svn/entries | 37 + .../assetInclusion/actions/.svn/all-wcprops | 11 + .../modules/assetInclusion/actions/.svn/entries | 62 + .../.svn/prop-base/actions.class.php.svn-base | 13 + .../.svn/text-base/actions.class.php.svn-base | 16 + .../assetInclusion/actions/actions.class.php | 16 + .../modules/assetInclusion/config/.svn/all-wcprops | 11 + .../modules/assetInclusion/config/.svn/entries | 62 + .../config/.svn/text-base/view.yml.svn-base | 7 + .../modules/assetInclusion/config/view.yml | 7 + .../assetInclusion/templates/.svn/all-wcprops | 11 + .../modules/assetInclusion/templates/.svn/entries | 62 + .../.svn/prop-base/indexSuccess.php.svn-base | 13 + .../.svn/text-base/indexSuccess.php.svn-base | 1 + .../assetInclusion/templates/indexSuccess.php | 1 + .../apps/frontend/modules/auth/.svn/all-wcprops | 5 + .../apps/frontend/modules/auth/.svn/entries | 34 + .../frontend/modules/auth/actions/.svn/all-wcprops | 11 + .../frontend/modules/auth/actions/.svn/entries | 62 + .../.svn/prop-base/actions.class.php.svn-base | 13 + .../.svn/text-base/actions.class.php.svn-base | 33 + .../modules/auth/actions/actions.class.php | 33 + .../modules/auth/templates/.svn/all-wcprops | 11 + .../frontend/modules/auth/templates/.svn/entries | 62 + .../.svn/prop-base/basicSuccess.php.svn-base | 13 + .../.svn/text-base/basicSuccess.php.svn-base | 3 + .../modules/auth/templates/basicSuccess.php | 3 + .../frontend/modules/autoload/.svn/all-wcprops | 5 + .../apps/frontend/modules/autoload/.svn/entries | 37 + .../modules/autoload/actions/.svn/all-wcprops | 11 + .../frontend/modules/autoload/actions/.svn/entries | 62 + .../.svn/prop-base/actions.class.php.svn-base | 13 + .../.svn/text-base/actions.class.php.svn-base | 25 + .../modules/autoload/actions/actions.class.php | 25 + .../frontend/modules/autoload/lib/.svn/all-wcprops | 11 + .../frontend/modules/autoload/lib/.svn/entries | 62 + ...psFrontendModulesAutoloadLib.class.php.svn-base | 13 + ...psFrontendModulesAutoloadLib.class.php.svn-base | 9 + .../lib/myAppsFrontendModulesAutoloadLib.class.php | 9 + .../modules/autoload/templates/.svn/all-wcprops | 17 + .../modules/autoload/templates/.svn/entries | 96 + .../.svn/prop-base/indexSuccess.php.svn-base | 13 + .../.svn/prop-base/myAutoloadSuccess.php.svn-base | 13 + .../.svn/text-base/indexSuccess.php.svn-base | 4 + .../.svn/text-base/myAutoloadSuccess.php.svn-base | 1 + .../modules/autoload/templates/indexSuccess.php | 4 + .../autoload/templates/myAutoloadSuccess.php | 1 + .../apps/frontend/modules/browser/.svn/all-wcprops | 5 + .../apps/frontend/modules/browser/.svn/entries | 34 + .../modules/browser/actions/.svn/all-wcprops | 11 + .../frontend/modules/browser/actions/.svn/entries | 62 + .../.svn/prop-base/actions.class.php.svn-base | 13 + .../.svn/text-base/actions.class.php.svn-base | 62 + .../modules/browser/actions/actions.class.php | 62 + .../modules/browser/templates/.svn/all-wcprops | 23 + .../modules/browser/templates/.svn/entries | 130 + .../prop-base/redirectTarget1Success.php.svn-base | 9 + .../templateCustomCustomSuccess.php.svn-base | 13 + .../prop-base/templateCustomSuccess.php.svn-base | 13 + .../text-base/redirectTarget1Success.php.svn-base | 1 + .../templateCustomCustomSuccess.php.svn-base | 1 + .../text-base/templateCustomSuccess.php.svn-base | 1 + .../browser/templates/redirectTarget1Success.php | 1 + .../templates/templateCustomCustomSuccess.php | 1 + .../browser/templates/templateCustomSuccess.php | 1 + .../configFiltersSimpleFilter/.svn/all-wcprops | 5 + .../modules/configFiltersSimpleFilter/.svn/entries | 40 + .../actions/.svn/all-wcprops | 11 + .../configFiltersSimpleFilter/actions/.svn/entries | 62 + .../.svn/prop-base/actions.class.php.svn-base | 13 + .../.svn/text-base/actions.class.php.svn-base | 16 + .../actions/actions.class.php | 16 + .../config/.svn/all-wcprops | 11 + .../configFiltersSimpleFilter/config/.svn/entries | 62 + .../config/.svn/text-base/filters.yml.svn-base | 14 + .../configFiltersSimpleFilter/config/filters.yml | 14 + .../configFiltersSimpleFilter/lib/.svn/all-wcprops | 11 + .../configFiltersSimpleFilter/lib/.svn/entries | 62 + ...figFiltersSimpleFilterFilter.class.php.svn-base | 13 + ...figFiltersSimpleFilterFilter.class.php.svn-base | 12 + .../lib/configFiltersSimpleFilterFilter.class.php | 12 + .../templates/.svn/all-wcprops | 11 + .../templates/.svn/entries | 62 + .../.svn/prop-base/indexSuccess.php.svn-base | 13 + .../.svn/text-base/indexSuccess.php.svn-base | 1 + .../templates/indexSuccess.php | 1 + .../modules/configModuleDisabled/.svn/all-wcprops | 5 + .../modules/configModuleDisabled/.svn/entries | 37 + .../configModuleDisabled/actions/.svn/all-wcprops | 11 + .../configModuleDisabled/actions/.svn/entries | 62 + .../.svn/prop-base/actions.class.php.svn-base | 13 + .../.svn/text-base/actions.class.php.svn-base | 16 + .../configModuleDisabled/actions/actions.class.php | 16 + .../configModuleDisabled/config/.svn/all-wcprops | 11 + .../configModuleDisabled/config/.svn/entries | 62 + .../config/.svn/text-base/module.yml.svn-base | 2 + .../modules/configModuleDisabled/config/module.yml | 2 + .../templates/.svn/all-wcprops | 11 + .../configModuleDisabled/templates/.svn/entries | 62 + .../.svn/prop-base/indexSuccess.php.svn-base | 13 + .../.svn/text-base/indexSuccess.php.svn-base | 0 .../templates/indexSuccess.php | 0 .../configSecurityIsSecure/.svn/all-wcprops | 5 + .../modules/configSecurityIsSecure/.svn/entries | 37 + .../actions/.svn/all-wcprops | 11 + .../configSecurityIsSecure/actions/.svn/entries | 62 + .../.svn/prop-base/actions.class.php.svn-base | 13 + .../.svn/text-base/actions.class.php.svn-base | 16 + .../actions/actions.class.php | 16 + .../configSecurityIsSecure/config/.svn/all-wcprops | 11 + .../configSecurityIsSecure/config/.svn/entries | 62 + .../config/.svn/text-base/security.yml.svn-base | 3 + .../configSecurityIsSecure/config/security.yml | 3 + .../templates/.svn/all-wcprops | 11 + .../configSecurityIsSecure/templates/.svn/entries | 62 + .../.svn/prop-base/indexSuccess.php.svn-base | 13 + .../.svn/text-base/indexSuccess.php.svn-base | 0 .../templates/indexSuccess.php | 0 .../configSecurityIsSecureAction/.svn/all-wcprops | 5 + .../configSecurityIsSecureAction/.svn/entries | 37 + .../actions/.svn/all-wcprops | 11 + .../actions/.svn/entries | 62 + .../.svn/prop-base/actions.class.php.svn-base | 13 + .../.svn/text-base/actions.class.php.svn-base | 16 + .../actions/actions.class.php | 16 + .../config/.svn/all-wcprops | 11 + .../config/.svn/entries | 62 + .../config/.svn/text-base/security.yml.svn-base | 3 + .../config/security.yml | 3 + .../templates/.svn/all-wcprops | 11 + .../templates/.svn/entries | 62 + .../.svn/prop-base/indexSuccess.php.svn-base | 13 + .../.svn/text-base/indexSuccess.php.svn-base | 0 .../templates/indexSuccess.php | 0 .../configSettingsMaxForwards/.svn/all-wcprops | 5 + .../modules/configSettingsMaxForwards/.svn/entries | 34 + .../actions/.svn/all-wcprops | 11 + .../configSettingsMaxForwards/actions/.svn/entries | 62 + .../.svn/prop-base/actions.class.php.svn-base | 13 + .../.svn/text-base/actions.class.php.svn-base | 17 + .../actions/actions.class.php | 17 + .../templates/.svn/all-wcprops | 11 + .../templates/.svn/entries | 62 + .../.svn/prop-base/indexSuccess.php.svn-base | 13 + .../.svn/text-base/indexSuccess.php.svn-base | 0 .../templates/indexSuccess.php | 0 .../modules/configViewHasLayout/.svn/all-wcprops | 5 + .../modules/configViewHasLayout/.svn/entries | 37 + .../configViewHasLayout/actions/.svn/all-wcprops | 11 + .../configViewHasLayout/actions/.svn/entries | 62 + .../.svn/prop-base/actions.class.php.svn-base | 13 + .../.svn/text-base/actions.class.php.svn-base | 16 + .../configViewHasLayout/actions/actions.class.php | 16 + .../configViewHasLayout/config/.svn/all-wcprops | 11 + .../configViewHasLayout/config/.svn/entries | 62 + .../config/.svn/text-base/view.yml.svn-base | 2 + .../modules/configViewHasLayout/config/view.yml | 2 + .../configViewHasLayout/templates/.svn/all-wcprops | 11 + .../configViewHasLayout/templates/.svn/entries | 62 + .../prop-base/withoutLayoutSuccess.php.svn-base | 13 + .../text-base/withoutLayoutSuccess.php.svn-base | 1 + .../templates/withoutLayoutSuccess.php | 1 + .../apps/frontend/modules/cookie/.svn/all-wcprops | 5 + .../apps/frontend/modules/cookie/.svn/entries | 31 + .../modules/cookie/actions/.svn/all-wcprops | 11 + .../frontend/modules/cookie/actions/.svn/entries | 62 + .../.svn/prop-base/actions.class.php.svn-base | 13 + .../.svn/text-base/actions.class.php.svn-base | 31 + .../modules/cookie/actions/actions.class.php | 31 + .../frontend/modules/escaping/.svn/all-wcprops | 5 + .../apps/frontend/modules/escaping/.svn/entries | 34 + .../modules/escaping/actions/.svn/all-wcprops | 11 + .../frontend/modules/escaping/actions/.svn/entries | 62 + .../.svn/prop-base/actions.class.php.svn-base | 13 + .../.svn/text-base/actions.class.php.svn-base | 29 + .../modules/escaping/actions/actions.class.php | 29 + .../modules/escaping/templates/.svn/all-wcprops | 23 + .../modules/escaping/templates/.svn/entries | 130 + .../.svn/prop-base/_partial1.php.svn-base | 9 + .../.svn/prop-base/_partial2.php.svn-base | 9 + .../.svn/prop-base/indexSuccess.php.svn-base | 13 + .../.svn/text-base/_partial1.php.svn-base | 6 + .../.svn/text-base/_partial2.php.svn-base | 4 + .../.svn/text-base/indexSuccess.php.svn-base | 4 + .../modules/escaping/templates/_partial1.php | 6 + .../modules/escaping/templates/_partial2.php | 4 + .../modules/escaping/templates/indexSuccess.php | 4 + .../frontend/modules/exception/.svn/all-wcprops | 5 + .../apps/frontend/modules/exception/.svn/entries | 31 + .../modules/exception/actions/.svn/all-wcprops | 11 + .../modules/exception/actions/.svn/entries | 62 + .../.svn/prop-base/actions.class.php.svn-base | 13 + .../.svn/text-base/actions.class.php.svn-base | 27 + .../modules/exception/actions/actions.class.php | 27 + .../apps/frontend/modules/filter/.svn/all-wcprops | 5 + .../apps/frontend/modules/filter/.svn/entries | 31 + .../modules/filter/actions/.svn/all-wcprops | 11 + .../frontend/modules/filter/actions/.svn/entries | 62 + .../.svn/prop-base/actions.class.php.svn-base | 13 + .../.svn/text-base/actions.class.php.svn-base | 22 + .../modules/filter/actions/actions.class.php | 22 + .../apps/frontend/modules/format/.svn/all-wcprops | 5 + .../apps/frontend/modules/format/.svn/entries | 34 + .../modules/format/actions/.svn/all-wcprops | 11 + .../frontend/modules/format/actions/.svn/entries | 62 + .../.svn/prop-base/actions.class.php.svn-base | 13 + .../.svn/text-base/actions.class.php.svn-base | 46 + .../modules/format/actions/actions.class.php | 46 + .../modules/format/templates/.svn/all-wcprops | 47 + .../frontend/modules/format/templates/.svn/entries | 266 + .../.svn/prop-base/_js_header.js.php.svn-base | 13 + .../.svn/prop-base/indexSuccess.css.php.svn-base | 13 + .../prop-base/indexSuccess.iphone.php.svn-base | 13 + .../.svn/prop-base/indexSuccess.js.php.svn-base | 13 + .../.svn/prop-base/indexSuccess.php.svn-base | 13 + .../.svn/prop-base/indexSuccess.xml.php.svn-base | 13 + .../.svn/prop-base/jsSuccess.js.php.svn-base | 13 + .../.svn/text-base/_js_header.js.php.svn-base | 1 + .../.svn/text-base/indexSuccess.css.php.svn-base | 1 + .../text-base/indexSuccess.iphone.php.svn-base | 1 + .../.svn/text-base/indexSuccess.js.php.svn-base | 3 + .../.svn/text-base/indexSuccess.php.svn-base | 1 + .../.svn/text-base/indexSuccess.xml.php.svn-base | 1 + .../.svn/text-base/jsSuccess.js.php.svn-base | 1 + .../modules/format/templates/_js_header.js.php | 1 + .../modules/format/templates/indexSuccess.css.php | 1 + .../format/templates/indexSuccess.iphone.php | 1 + .../modules/format/templates/indexSuccess.js.php | 3 + .../modules/format/templates/indexSuccess.php | 1 + .../modules/format/templates/indexSuccess.xml.php | 1 + .../modules/format/templates/jsSuccess.js.php | 1 + .../frontend/modules/notfound/.svn/all-wcprops | 5 + .../apps/frontend/modules/notfound/.svn/entries | 31 + .../modules/notfound/actions/.svn/all-wcprops | 11 + .../frontend/modules/notfound/actions/.svn/entries | 62 + .../.svn/prop-base/actions.class.php.svn-base | 13 + .../.svn/text-base/actions.class.php.svn-base | 19 + .../modules/notfound/actions/actions.class.php | 19 + .../frontend/modules/presentation/.svn/all-wcprops | 5 + .../frontend/modules/presentation/.svn/entries | 34 + .../modules/presentation/actions/.svn/all-wcprops | 11 + .../modules/presentation/actions/.svn/entries | 62 + .../.svn/prop-base/actions.class.php.svn-base | 13 + .../.svn/text-base/actions.class.php.svn-base | 22 + .../modules/presentation/actions/actions.class.php | 22 + .../presentation/templates/.svn/all-wcprops | 17 + .../modules/presentation/templates/.svn/entries | 96 + .../.svn/prop-base/fooSuccess.php.svn-base | 13 + .../.svn/prop-base/indexSuccess.php.svn-base | 13 + .../.svn/text-base/fooSuccess.php.svn-base | 1 + .../.svn/text-base/indexSuccess.php.svn-base | 2 + .../modules/presentation/templates/fooSuccess.php | 1 + .../presentation/templates/indexSuccess.php | 2 + .../frontend/modules/renderText/.svn/all-wcprops | 5 + .../apps/frontend/modules/renderText/.svn/entries | 31 + .../modules/renderText/actions/.svn/all-wcprops | 11 + .../modules/renderText/actions/.svn/entries | 62 + .../.svn/prop-base/actions.class.php.svn-base | 13 + .../.svn/text-base/actions.class.php.svn-base | 17 + .../modules/renderText/actions/actions.class.php | 17 + .../modules/sfConfigPlugin/.svn/all-wcprops | 5 + .../frontend/modules/sfConfigPlugin/.svn/entries | 31 + .../modules/sfConfigPlugin/config/.svn/all-wcprops | 17 + .../modules/sfConfigPlugin/config/.svn/entries | 99 + .../config/.svn/text-base/filters.yml.svn-base | 0 .../config/.svn/text-base/view.yml.svn-base | 0 .../config/dirmyconfig/.svn/all-wcprops | 11 + .../sfConfigPlugin/config/dirmyconfig/.svn/entries | 62 + .../.svn/text-base/myconfig.yml.svn-base | 0 .../sfConfigPlugin/config/dirmyconfig/myconfig.yml | 0 .../modules/sfConfigPlugin/config/filters.yml | 0 .../modules/sfConfigPlugin/config/view.yml | 0 .../apps/frontend/modules/view/.svn/all-wcprops | 5 + .../apps/frontend/modules/view/.svn/entries | 37 + .../frontend/modules/view/actions/.svn/all-wcprops | 11 + .../frontend/modules/view/actions/.svn/entries | 62 + .../.svn/prop-base/actions.class.php.svn-base | 13 + .../.svn/text-base/actions.class.php.svn-base | 25 + .../modules/view/actions/actions.class.php | 25 + .../frontend/modules/view/config/.svn/all-wcprops | 11 + .../apps/frontend/modules/view/config/.svn/entries | 62 + .../view/config/.svn/text-base/view.yml.svn-base | 16 + .../apps/frontend/modules/view/config/view.yml | 16 + .../modules/view/templates/.svn/all-wcprops | 23 + .../frontend/modules/view/templates/.svn/entries | 130 + .../.svn/prop-base/fooSuccess.php.svn-base | 13 + .../.svn/prop-base/imageSuccess.php.svn-base | 13 + .../.svn/prop-base/plainSuccess.php.svn-base | 13 + .../.svn/text-base/fooSuccess.php.svn-base | 1 + .../.svn/text-base/imageSuccess.php.svn-base | 1 + .../.svn/text-base/plainSuccess.php.svn-base | 1 + .../frontend/modules/view/templates/fooSuccess.php | 1 + .../modules/view/templates/imageSuccess.php | 1 + .../modules/view/templates/plainSuccess.php | 1 + .../apps/frontend/templates/.svn/all-wcprops | 23 + .../fixtures/apps/frontend/templates/.svn/entries | 130 + .../.svn/prop-base/layout.iphone.php.svn-base | 13 + .../templates/.svn/prop-base/layout.php.svn-base | 13 + .../.svn/prop-base/layout.xml.php.svn-base | 13 + .../.svn/text-base/layout.iphone.php.svn-base | 21 + .../templates/.svn/text-base/layout.php.svn-base | 21 + .../.svn/text-base/layout.xml.php.svn-base | 3 + .../apps/frontend/templates/layout.iphone.php | 21 + .../fixtures/apps/frontend/templates/layout.php | 21 + .../apps/frontend/templates/layout.xml.php | 3 + .../functional/fixtures/apps/i18n/.svn/all-wcprops | 5 + .../functional/fixtures/apps/i18n/.svn/entries | 43 + .../fixtures/apps/i18n/config/.svn/all-wcprops | 59 + .../fixtures/apps/i18n/config/.svn/entries | 334 + .../prop-base/i18nConfiguration.class.php.svn-base | 13 + .../i18n/config/.svn/text-base/app.yml.svn-base | 2 + .../i18n/config/.svn/text-base/cache.yml.svn-base | 4 + .../config/.svn/text-base/factories.yml.svn-base | 17 + .../config/.svn/text-base/filters.yml.svn-base | 8 + .../text-base/i18nConfiguration.class.php.svn-base | 10 + .../config/.svn/text-base/routing.yml.svn-base | 7 + .../config/.svn/text-base/security.yml.svn-base | 2 + .../config/.svn/text-base/settings.yml.svn-base | 25 + .../i18n/config/.svn/text-base/view.yml.svn-base | 17 + .../functional/fixtures/apps/i18n/config/app.yml | 2 + .../functional/fixtures/apps/i18n/config/cache.yml | 4 + .../fixtures/apps/i18n/config/factories.yml | 17 + .../fixtures/apps/i18n/config/filters.yml | 8 + .../apps/i18n/config/i18nConfiguration.class.php | 10 + .../fixtures/apps/i18n/config/routing.yml | 7 + .../fixtures/apps/i18n/config/security.yml | 2 + .../fixtures/apps/i18n/config/settings.yml | 25 + .../functional/fixtures/apps/i18n/config/view.yml | 17 + .../fixtures/apps/i18n/i18n/.svn/all-wcprops | 17 + .../fixtures/apps/i18n/i18n/.svn/entries | 96 + .../i18n/.svn/text-base/messages.fr.xml.svn-base | 15 + .../i18n/i18n/.svn/text-base/other.fr.xml.svn-base | 11 + .../fixtures/apps/i18n/i18n/messages.fr.xml | 15 + .../fixtures/apps/i18n/i18n/other.fr.xml | 11 + .../fixtures/apps/i18n/lib/.svn/all-wcprops | 11 + .../functional/fixtures/apps/i18n/lib/.svn/entries | 62 + .../lib/.svn/prop-base/myUser.class.php.svn-base | 13 + .../lib/.svn/text-base/myUser.class.php.svn-base | 5 + .../fixtures/apps/i18n/lib/myUser.class.php | 5 + .../fixtures/apps/i18n/modules/.svn/all-wcprops | 5 + .../fixtures/apps/i18n/modules/.svn/entries | 34 + .../apps/i18n/modules/i18n/.svn/all-wcprops | 5 + .../fixtures/apps/i18n/modules/i18n/.svn/entries | 43 + .../i18n/modules/i18n/actions/.svn/all-wcprops | 11 + .../apps/i18n/modules/i18n/actions/.svn/entries | 62 + .../.svn/prop-base/actions.class.php.svn-base | 13 + .../.svn/text-base/actions.class.php.svn-base | 47 + .../i18n/modules/i18n/actions/actions.class.php | 47 + .../apps/i18n/modules/i18n/config/.svn/all-wcprops | 5 + .../apps/i18n/modules/i18n/config/.svn/entries | 28 + .../apps/i18n/modules/i18n/i18n/.svn/all-wcprops | 23 + .../apps/i18n/modules/i18n/i18n/.svn/entries | 130 + .../i18n/.svn/text-base/custom.fr.xml.svn-base | 19 + .../i18n/.svn/text-base/messages.fr.xml.svn-base | 35 + .../i18n/i18n/.svn/text-base/other.fr.xml.svn-base | 11 + .../apps/i18n/modules/i18n/i18n/custom.fr.xml | 19 + .../apps/i18n/modules/i18n/i18n/messages.fr.xml | 35 + .../apps/i18n/modules/i18n/i18n/other.fr.xml | 11 + .../apps/i18n/modules/i18n/lib/.svn/all-wcprops | 17 + .../apps/i18n/modules/i18n/lib/.svn/entries | 96 + .../I18nCustomCatalogueForm.class.php.svn-base | 9 + .../lib/.svn/prop-base/I18nForm.class.php.svn-base | 9 + .../I18nCustomCatalogueForm.class.php.svn-base | 9 + .../lib/.svn/text-base/I18nForm.class.php.svn-base | 24 + .../i18n/lib/I18nCustomCatalogueForm.class.php | 9 + .../apps/i18n/modules/i18n/lib/I18nForm.class.php | 24 + .../i18n/modules/i18n/templates/.svn/all-wcprops | 17 + .../apps/i18n/modules/i18n/templates/.svn/entries | 96 + .../.svn/prop-base/i18nFormSuccess.php.svn-base | 9 + .../.svn/prop-base/indexSuccess.php.svn-base | 13 + .../.svn/text-base/i18nFormSuccess.php.svn-base | 8 + .../.svn/text-base/indexSuccess.php.svn-base | 13 + .../modules/i18n/templates/i18nFormSuccess.php | 8 + .../i18n/modules/i18n/templates/indexSuccess.php | 13 + .../i18n/modules/sfI18NPlugin/.svn/all-wcprops | 5 + .../apps/i18n/modules/sfI18NPlugin/.svn/entries | 31 + .../modules/sfI18NPlugin/i18n/.svn/all-wcprops | 11 + .../i18n/modules/sfI18NPlugin/i18n/.svn/entries | 62 + .../i18n/.svn/text-base/messages.fr.xml.svn-base | 11 + .../i18n/modules/sfI18NPlugin/i18n/messages.fr.xml | 11 + .../fixtures/apps/i18n/templates/.svn/all-wcprops | 11 + .../fixtures/apps/i18n/templates/.svn/entries | 62 + .../templates/.svn/prop-base/layout.php.svn-base | 13 + .../templates/.svn/text-base/layout.php.svn-base | 21 + .../fixtures/apps/i18n/templates/layout.php | 21 + .../functional/fixtures/cache/.svn/all-wcprops | 5 + .../functional/fixtures/cache/.svn/dir-prop-base | 6 + .../test/functional/fixtures/cache/.svn/entries | 28 + .../functional/fixtures/config/.svn/all-wcprops | 41 + .../test/functional/fixtures/config/.svn/entries | 235 + .../ProjectConfiguration.class.php.svn-base | 13 + .../ProjectConfiguration.class.php.svn-base | 13 + .../config/.svn/text-base/databases.yml.svn-base | 6 + .../config/.svn/text-base/filters.yml.svn-base | 8 + .../config/.svn/text-base/propel.ini.svn-base | 48 + .../config/.svn/text-base/properties.ini.svn-base | 3 + .../config/.svn/text-base/view.yml.svn-base | 0 .../fixtures/config/ProjectConfiguration.class.php | 13 + .../test/functional/fixtures/config/databases.yml | 6 + .../fixtures/config/dirmyconfig/.svn/all-wcprops | 11 + .../fixtures/config/dirmyconfig/.svn/entries | 62 + .../.svn/text-base/myconfig.yml.svn-base | 0 .../fixtures/config/dirmyconfig/myconfig.yml | 0 .../test/functional/fixtures/config/filters.yml | 8 + .../test/functional/fixtures/config/propel.ini | 48 + .../test/functional/fixtures/config/properties.ini | 3 + .../test/functional/fixtures/config/view.yml | 0 .../test/functional/fixtures/data/.svn/all-wcprops | 11 + .../functional/fixtures/data/.svn/dir-prop-base | 6 + .../test/functional/fixtures/data/.svn/entries | 65 + .../.svn/text-base/environment.migrated.svn-base | 0 .../functional/fixtures/data/environment.migrated | 0 .../functional/fixtures/data/sql/.svn/all-wcprops | 5 + .../test/functional/fixtures/data/sql/.svn/entries | 28 + .../test/functional/fixtures/lib/.svn/all-wcprops | 17 + .../test/functional/fixtures/lib/.svn/entries | 99 + .../lib/.svn/prop-base/ExtendMe.class.php.svn-base | 9 + .../.svn/prop-base/myLibClass.class.php.svn-base | 13 + .../lib/.svn/text-base/ExtendMe.class.php.svn-base | 5 + .../.svn/text-base/myLibClass.class.php.svn-base | 9 + .../functional/fixtures/lib/ExtendMe.class.php | 5 + .../functional/fixtures/lib/form/.svn/all-wcprops | 11 + .../test/functional/fixtures/lib/form/.svn/entries | 62 + .../.svn/prop-base/BaseForm.class.php.svn-base | 9 + .../.svn/text-base/BaseForm.class.php.svn-base | 13 + .../fixtures/lib/form/BaseForm.class.php | 13 + .../functional/fixtures/lib/myLibClass.class.php | 9 + .../test/functional/fixtures/log/.svn/all-wcprops | 5 + .../functional/fixtures/log/.svn/dir-prop-base | 6 + .../test/functional/fixtures/log/.svn/entries | 28 + .../functional/fixtures/plugins/.svn/all-wcprops | 5 + .../test/functional/fixtures/plugins/.svn/entries | 37 + .../plugins/sfAutoloadPlugin/.svn/all-wcprops | 5 + .../fixtures/plugins/sfAutoloadPlugin/.svn/entries | 40 + .../sfAutoloadPlugin/config/.svn/all-wcprops | 23 + .../plugins/sfAutoloadPlugin/config/.svn/entries | 130 + .../.svn/prop-base/NotInLib.class.php.svn-base | 9 + .../config/.svn/prop-base/autoload.yml.svn-base | 9 + ...fAutoloadPluginConfiguration.class.php.svn-base | 9 + .../.svn/text-base/NotInLib.class.php.svn-base | 5 + .../config/.svn/text-base/autoload.yml.svn-base | 11 + ...fAutoloadPluginConfiguration.class.php.svn-base | 5 + .../sfAutoloadPlugin/config/NotInLib.class.php | 5 + .../plugins/sfAutoloadPlugin/config/autoload.yml | 11 + .../config/sfAutoloadPluginConfiguration.class.php | 5 + .../plugins/sfAutoloadPlugin/lib/.svn/all-wcprops | 17 + .../plugins/sfAutoloadPlugin/lib/.svn/entries | 99 + .../.svn/prop-base/BaseExtendMe.class.php.svn-base | 9 + .../lib/.svn/prop-base/ExtendMe.class.php.svn-base | 9 + .../.svn/text-base/BaseExtendMe.class.php.svn-base | 5 + .../lib/.svn/text-base/ExtendMe.class.php.svn-base | 5 + .../sfAutoloadPlugin/lib/BaseExtendMe.class.php | 5 + .../sfAutoloadPlugin/lib/ExtendMe.class.php | 5 + .../sfAutoloadPlugin/lib/vendor/.svn/all-wcprops | 11 + .../sfAutoloadPlugin/lib/vendor/.svn/entries | 62 + .../ExcludedFromAutoload.class.php.svn-base | 9 + .../ExcludedFromAutoload.class.php.svn-base | 5 + .../lib/vendor/ExcludedFromAutoload.class.php | 5 + .../sfAutoloadPlugin/modules/.svn/all-wcprops | 5 + .../plugins/sfAutoloadPlugin/modules/.svn/entries | 31 + .../modules/autoloadPlugin/.svn/all-wcprops | 5 + .../modules/autoloadPlugin/.svn/entries | 37 + .../autoloadPlugin/actions/.svn/all-wcprops | 11 + .../modules/autoloadPlugin/actions/.svn/entries | 62 + .../.svn/prop-base/actions.class.php.svn-base | 13 + .../.svn/text-base/actions.class.php.svn-base | 11 + .../autoloadPlugin/actions/actions.class.php | 11 + .../modules/autoloadPlugin/lib/.svn/all-wcprops | 11 + .../modules/autoloadPlugin/lib/.svn/entries | 62 + ...uginModulesAutoloadPluginLib.class.php.svn-base | 13 + ...uginModulesAutoloadPluginLib.class.php.svn-base | 9 + ...utoloadPluginModulesAutoloadPluginLib.class.php | 9 + .../autoloadPlugin/templates/.svn/all-wcprops | 11 + .../modules/autoloadPlugin/templates/.svn/entries | 62 + .../.svn/prop-base/indexSuccess.php.svn-base | 13 + .../.svn/text-base/indexSuccess.php.svn-base | 3 + .../autoloadPlugin/templates/indexSuccess.php | 3 + .../plugins/sfAutoloadPlugin/test/.svn/all-wcprops | 5 + .../plugins/sfAutoloadPlugin/test/.svn/entries | 34 + .../test/functional/.svn/all-wcprops | 17 + .../sfAutoloadPlugin/test/functional/.svn/entries | 99 + .../.svn/prop-base/BarFunctionalTest.php.svn-base | 9 + .../.svn/prop-base/FooFunctionalTest.php.svn-base | 9 + .../.svn/text-base/BarFunctionalTest.php.svn-base | 0 .../.svn/text-base/FooFunctionalTest.php.svn-base | 0 .../test/functional/BarFunctionalTest.php | 0 .../test/functional/FooFunctionalTest.php | 0 .../test/functional/nested/.svn/all-wcprops | 11 + .../test/functional/nested/.svn/entries | 62 + .../prop-base/NestedFunctionalTest.php.svn-base | 9 + .../text-base/NestedFunctionalTest.php.svn-base | 0 .../functional/nested/NestedFunctionalTest.php | 0 .../sfAutoloadPlugin/test/unit/.svn/all-wcprops | 17 + .../sfAutoloadPlugin/test/unit/.svn/entries | 99 + .../unit/.svn/prop-base/BarUnitTest.php.svn-base | 9 + .../unit/.svn/prop-base/FooUnitTest.php.svn-base | 9 + .../unit/.svn/text-base/BarUnitTest.php.svn-base | 0 .../unit/.svn/text-base/FooUnitTest.php.svn-base | 0 .../sfAutoloadPlugin/test/unit/BarUnitTest.php | 0 .../sfAutoloadPlugin/test/unit/FooUnitTest.php | 0 .../test/unit/nested/.svn/all-wcprops | 11 + .../sfAutoloadPlugin/test/unit/nested/.svn/entries | 62 + .../.svn/prop-base/NestedUnitTest.php.svn-base | 9 + .../.svn/text-base/NestedUnitTest.php.svn-base | 0 .../test/unit/nested/NestedUnitTest.php | 0 .../plugins/sfConfigPlugin/.svn/all-wcprops | 5 + .../fixtures/plugins/sfConfigPlugin/.svn/entries | 34 + .../plugins/sfConfigPlugin/config/.svn/all-wcprops | 17 + .../plugins/sfConfigPlugin/config/.svn/entries | 99 + .../config/.svn/text-base/filters.yml.svn-base | 7 + .../config/.svn/text-base/view.yml.svn-base | 0 .../config/dirmyconfig/.svn/all-wcprops | 11 + .../sfConfigPlugin/config/dirmyconfig/.svn/entries | 62 + .../.svn/text-base/myconfig.yml.svn-base | 0 .../sfConfigPlugin/config/dirmyconfig/myconfig.yml | 0 .../plugins/sfConfigPlugin/config/filters.yml | 7 + .../plugins/sfConfigPlugin/config/view.yml | 0 .../sfConfigPlugin/modules/.svn/all-wcprops | 5 + .../plugins/sfConfigPlugin/modules/.svn/entries | 31 + .../modules/sfConfigPlugin/.svn/all-wcprops | 5 + .../modules/sfConfigPlugin/.svn/entries | 31 + .../modules/sfConfigPlugin/config/.svn/all-wcprops | 17 + .../modules/sfConfigPlugin/config/.svn/entries | 99 + .../config/.svn/text-base/filters.yml.svn-base | 0 .../config/.svn/text-base/view.yml.svn-base | 0 .../config/dirmyconfig/.svn/all-wcprops | 11 + .../sfConfigPlugin/config/dirmyconfig/.svn/entries | 62 + .../.svn/text-base/myconfig.yml.svn-base | 0 .../sfConfigPlugin/config/dirmyconfig/myconfig.yml | 0 .../modules/sfConfigPlugin/config/filters.yml | 0 .../modules/sfConfigPlugin/config/view.yml | 0 .../fixtures/plugins/sfI18NPlugin/.svn/all-wcprops | 5 + .../fixtures/plugins/sfI18NPlugin/.svn/entries | 34 + .../plugins/sfI18NPlugin/i18n/.svn/all-wcprops | 11 + .../plugins/sfI18NPlugin/i18n/.svn/entries | 62 + .../i18n/.svn/text-base/messages.fr.xml.svn-base | 11 + .../plugins/sfI18NPlugin/i18n/messages.fr.xml | 11 + .../plugins/sfI18NPlugin/modules/.svn/all-wcprops | 5 + .../plugins/sfI18NPlugin/modules/.svn/entries | 31 + .../modules/sfI18NPlugin/.svn/all-wcprops | 5 + .../sfI18NPlugin/modules/sfI18NPlugin/.svn/entries | 37 + .../modules/sfI18NPlugin/actions/.svn/all-wcprops | 11 + .../modules/sfI18NPlugin/actions/.svn/entries | 62 + .../.svn/prop-base/actions.class.php.svn-base | 13 + .../.svn/text-base/actions.class.php.svn-base | 24 + .../modules/sfI18NPlugin/actions/actions.class.php | 24 + .../modules/sfI18NPlugin/i18n/.svn/all-wcprops | 11 + .../modules/sfI18NPlugin/i18n/.svn/entries | 62 + .../i18n/.svn/text-base/messages.fr.xml.svn-base | 23 + .../modules/sfI18NPlugin/i18n/messages.fr.xml | 23 + .../sfI18NPlugin/templates/.svn/all-wcprops | 11 + .../modules/sfI18NPlugin/templates/.svn/entries | 62 + .../.svn/prop-base/indexSuccess.php.svn-base | 13 + .../.svn/text-base/indexSuccess.php.svn-base | 16 + .../sfI18NPlugin/templates/indexSuccess.php | 16 + .../symfony/test/functional/fixtures/symfony | 15 + lib/vendor/symfony/test/functional/formatTest.php | 125 + lib/vendor/symfony/test/functional/genericTest.php | 236 + .../symfony/test/functional/httpcacheTest.php | 61 + .../symfony/test/functional/i18nFormTest.php | 79 + lib/vendor/symfony/test/functional/i18nTest.php | 104 + lib/vendor/symfony/test/functional/prodTest.php | 82 + .../symfony/test/functional/sfTestBrowserTest.php | 263 + lib/vendor/symfony/test/other/.svn/all-wcprops | 11 + lib/vendor/symfony/test/other/.svn/entries | 65 + .../other/.svn/prop-base/tasksTest.php.svn-base | 13 + .../other/.svn/text-base/tasksTest.php.svn-base | 170 + .../symfony/test/other/fixtures/.svn/all-wcprops | 11 + .../symfony/test/other/fixtures/.svn/entries | 71 + .../fixtures/.svn/prop-base/factories.yml.svn-base | 9 + .../fixtures/.svn/text-base/factories.yml.svn-base | 27 + .../symfony/test/other/fixtures/factories.yml | 27 + .../test/other/fixtures/propel/.svn/all-wcprops | 29 + .../test/other/fixtures/propel/.svn/entries | 164 + .../propel/.svn/text-base/Category.php.svn-base | 9 + .../propel/.svn/text-base/databases.yml.svn-base | 5 + .../propel/.svn/text-base/propel.ini.svn-base | 40 + .../propel/.svn/text-base/schema.yml.svn-base | 11 + .../test/other/fixtures/propel/Category.php | 9 + .../test/other/fixtures/propel/databases.yml | 5 + .../symfony/test/other/fixtures/propel/propel.ini | 40 + .../symfony/test/other/fixtures/propel/schema.yml | 11 + .../test/other/fixtures/task/.svn/all-wcprops | 23 + .../symfony/test/other/fixtures/task/.svn/entries | 130 + .../task/.svn/prop-base/aTask.class.php.svn-base | 9 + .../.svn/prop-base/myPluginTask.class.php.svn-base | 9 + .../task/.svn/prop-base/zTask.class.php.svn-base | 9 + .../task/.svn/text-base/aTask.class.php.svn-base | 12 + .../.svn/text-base/myPluginTask.class.php.svn-base | 12 + .../task/.svn/text-base/zTask.class.php.svn-base | 12 + .../test/other/fixtures/task/aTask.class.php | 12 + .../other/fixtures/task/myPluginTask.class.php | 12 + .../test/other/fixtures/task/zTask.class.php | 12 + .../test/other/fixtures/test/.svn/all-wcprops | 11 + .../symfony/test/other/fixtures/test/.svn/entries | 68 + .../.svn/text-base/result-harness.txt.svn-base | 9 + .../fixtures/test/functional/.svn/all-wcprops | 17 + .../other/fixtures/test/functional/.svn/entries | 96 + .../.svn/text-base/result-harness.txt.svn-base | 8 + .../functional/.svn/text-base/result.txt.svn-base | 7 + .../fixtures/test/functional/result-harness.txt | 8 + .../test/other/fixtures/test/functional/result.txt | 7 + .../test/other/fixtures/test/result-harness.txt | 9 + .../test/other/fixtures/test/unit/.svn/all-wcprops | 23 + .../test/other/fixtures/test/unit/.svn/entries | 130 + .../test/unit/.svn/prop-base/testTest.php.svn-base | 13 + .../.svn/text-base/result-harness.txt.svn-base | 3 + .../test/unit/.svn/text-base/result.txt.svn-base | 3 + .../test/unit/.svn/text-base/testTest.php.svn-base | 7 + .../other/fixtures/test/unit/result-harness.txt | 3 + .../test/other/fixtures/test/unit/result.txt | 3 + .../test/other/fixtures/test/unit/testTest.php | 7 + lib/vendor/symfony/test/other/tasksTest.php | 170 + lib/vendor/symfony/test/unit/.svn/all-wcprops | 29 + lib/vendor/symfony/test/unit/.svn/entries | 254 + .../prop-base/sfContextMock.class.php.svn-base | 13 + .../sfEventDispatcherTest.class.php.svn-base | 13 + .../sfParameterHolderTest.class.php.svn-base | 13 + .../text-base/sfContextMock.class.php.svn-base | 127 + .../sfEventDispatcherTest.class.php.svn-base | 51 + .../.svn/text-base/sfNoRouting.class.php.svn-base | 105 + .../sfParameterHolderTest.class.php.svn-base | 57 + .../symfony/test/unit/action/.svn/all-wcprops | 11 + lib/vendor/symfony/test/unit/action/.svn/entries | 62 + .../.svn/prop-base/sfComponentTest.php.svn-base | 13 + .../.svn/text-base/sfComponentTest.php.svn-base | 58 + .../symfony/test/unit/action/sfComponentTest.php | 58 + .../symfony/test/unit/addon/.svn/all-wcprops | 11 + lib/vendor/symfony/test/unit/addon/.svn/entries | 62 + .../addon/.svn/text-base/sfPagerTest.php.svn-base | 43 + lib/vendor/symfony/test/unit/addon/sfPagerTest.php | 43 + .../symfony/test/unit/autoload/.svn/all-wcprops | 17 + lib/vendor/symfony/test/unit/autoload/.svn/entries | 96 + .../.svn/prop-base/sfCoreAutoloadTest.php.svn-base | 9 + .../prop-base/sfSimpleAutoloadTest.php.svn-base | 9 + .../.svn/text-base/sfCoreAutoloadTest.php.svn-base | 16 + .../text-base/sfSimpleAutoloadTest.php.svn-base | 19 + .../test/unit/autoload/sfCoreAutoloadTest.php | 16 + .../test/unit/autoload/sfSimpleAutoloadTest.php | 19 + .../symfony/test/unit/cache/.svn/all-wcprops | 65 + lib/vendor/symfony/test/unit/cache/.svn/entries | 368 + .../.svn/prop-base/sfAPCCacheTest.php.svn-base | 13 + .../sfCacheDriverTests.class.php.svn-base | 13 + .../cache/.svn/prop-base/sfCacheTest.php.svn-base | 13 + .../prop-base/sfEAcceleratorCacheTest.php.svn-base | 13 + .../.svn/prop-base/sfFileCacheTest.php.svn-base | 13 + .../prop-base/sfFunctionCacheTest.php.svn-base | 13 + .../prop-base/sfMemcacheCacheTest.php.svn-base | 13 + .../.svn/prop-base/sfNoCacheTest.php.svn-base | 13 + .../.svn/prop-base/sfSQLiteCacheTest.php.svn-base | 13 + .../.svn/prop-base/sfXCacheCacheTest.php.svn-base | 13 + .../.svn/text-base/sfAPCCacheTest.php.svn-base | 42 + .../sfCacheDriverTests.class.php.svn-base | 181 + .../cache/.svn/text-base/sfCacheTest.php.svn-base | 35 + .../text-base/sfEAcceleratorCacheTest.php.svn-base | 36 + .../.svn/text-base/sfFileCacheTest.php.svn-base | 40 + .../text-base/sfFunctionCacheTest.php.svn-base | 109 + .../text-base/sfMemcacheCacheTest.php.svn-base | 69 + .../.svn/text-base/sfNoCacheTest.php.svn-base | 28 + .../.svn/text-base/sfSQLiteCacheTest.php.svn-base | 55 + .../.svn/text-base/sfXCacheCacheTest.php.svn-base | 36 + .../symfony/test/unit/cache/sfAPCCacheTest.php | 42 + .../test/unit/cache/sfCacheDriverTests.class.php | 181 + lib/vendor/symfony/test/unit/cache/sfCacheTest.php | 35 + .../test/unit/cache/sfEAcceleratorCacheTest.php | 36 + .../symfony/test/unit/cache/sfFileCacheTest.php | 40 + .../test/unit/cache/sfFunctionCacheTest.php | 109 + .../test/unit/cache/sfMemcacheCacheTest.php | 69 + .../symfony/test/unit/cache/sfNoCacheTest.php | 28 + .../symfony/test/unit/cache/sfSQLiteCacheTest.php | 55 + .../symfony/test/unit/cache/sfXCacheCacheTest.php | 36 + .../symfony/test/unit/command/.svn/all-wcprops | 35 + lib/vendor/symfony/test/unit/command/.svn/entries | 198 + .../sfCommandArgumentSetTest.php.svn-base | 13 + .../prop-base/sfCommandArgumentTest.php.svn-base | 13 + .../prop-base/sfCommandManagerTest.php.svn-base | 13 + .../prop-base/sfCommandOptionSetTest.php.svn-base | 13 + .../prop-base/sfCommandOptionTest.php.svn-base | 13 + .../sfCommandArgumentSetTest.php.svn-base | 142 + .../text-base/sfCommandArgumentTest.php.svn-base | 94 + .../text-base/sfCommandManagerTest.php.svn-base | 166 + .../text-base/sfCommandOptionSetTest.php.svn-base | 144 + .../text-base/sfCommandOptionTest.php.svn-base | 127 + .../test/unit/command/sfCommandArgumentSetTest.php | 142 + .../test/unit/command/sfCommandArgumentTest.php | 94 + .../test/unit/command/sfCommandManagerTest.php | 166 + .../test/unit/command/sfCommandOptionSetTest.php | 144 + .../test/unit/command/sfCommandOptionTest.php | 127 + .../symfony/test/unit/config/.svn/all-wcprops | 65 + lib/vendor/symfony/test/unit/config/.svn/entries | 371 + .../prop-base/sfConfigHandlerTest.php.svn-base | 13 + .../.svn/prop-base/sfConfigTest.php.svn-base | 13 + ...DefineEnvironmentConfigHandlerTest.php.svn-base | 13 + .../sfFilterConfigHandlerTest.php.svn-base | 13 + .../sfGeneratorConfigHandlerTest.php.svn-base | 13 + .../sfPluginConfigurationTest.php.svn-base | 9 + .../sfProjectConfigurationTest.php.svn-base | 9 + .../sfSimpleYamlConfigHandlerTest.php.svn-base | 13 + .../prop-base/sfViewConfigHandlerTest.php.svn-base | 13 + .../prop-base/sfYamlConfigHandlerTest.php.svn-base | 13 + .../text-base/sfConfigHandlerTest.php.svn-base | 54 + .../.svn/text-base/sfConfigTest.php.svn-base | 53 + ...DefineEnvironmentConfigHandlerTest.php.svn-base | 33 + .../sfFilterConfigHandlerTest.php.svn-base | 100 + .../sfGeneratorConfigHandlerTest.php.svn-base | 96 + .../sfPluginConfigurationTest.php.svn-base | 76 + .../sfProjectConfigurationTest.php.svn-base | 72 + .../sfSimpleYamlConfigHandlerTest.php.svn-base | 33 + .../text-base/sfViewConfigHandlerTest.php.svn-base | 351 + .../text-base/sfYamlConfigHandlerTest.php.svn-base | 85 + .../test/unit/config/fixtures/.svn/all-wcprops | 5 + .../symfony/test/unit/config/fixtures/.svn/entries | 40 + .../.svn/all-wcprops | 23 + .../sfDefineEnvironmentConfigHandler/.svn/entries | 130 + .../.svn/prop-base/prefix_result.php.svn-base | 13 + .../.svn/text-base/prefix_all.yml.svn-base | 15 + .../.svn/text-base/prefix_default.yml.svn-base | 11 + .../.svn/text-base/prefix_result.php.svn-base | 13 + .../prefix_all.yml | 15 + .../prefix_default.yml | 11 + .../prefix_result.php | 13 + .../sfFilterConfigHandler/.svn/all-wcprops | 59 + .../fixtures/sfFilterConfigHandler/.svn/entries | 334 + .../.svn/prop-base/result.php.svn-base | 13 + .../.svn/text-base/condition.yml.svn-base | 14 + .../.svn/text-base/default_filters.yml.svn-base | 12 + .../.svn/text-base/disable.yml.svn-base | 13 + .../.svn/text-base/filters.yml.svn-base | 11 + .../.svn/text-base/no_class.yml.svn-base | 5 + .../.svn/text-base/no_execution.yml.svn-base | 7 + .../.svn/text-base/no_rendering.yml.svn-base | 7 + .../.svn/text-base/not_disabled.yml.svn-base | 2 + .../.svn/text-base/result.php.svn-base | 25 + .../fixtures/sfFilterConfigHandler/condition.yml | 14 + .../sfFilterConfigHandler/default_filters.yml | 12 + .../fixtures/sfFilterConfigHandler/disable.yml | 13 + .../fixtures/sfFilterConfigHandler/filters.yml | 11 + .../fixtures/sfFilterConfigHandler/no_class.yml | 5 + .../sfFilterConfigHandler/no_execution.yml | 7 + .../sfFilterConfigHandler/no_rendering.yml | 7 + .../sfFilterConfigHandler/not_disabled.yml | 2 + .../fixtures/sfFilterConfigHandler/result.php | 25 + .../sfGeneratorConfigHandler/.svn/all-wcprops | 41 + .../fixtures/sfGeneratorConfigHandler/.svn/entries | 232 + .../.svn/text-base/empty.yml.svn-base | 0 .../.svn/text-base/no_generator_class.yml.svn-base | 4 + .../text-base/no_generator_section.yml.svn-base | 2 + .../.svn/text-base/root_edit_section.yml.svn-base | 7 + .../text-base/root_fields_section.yml.svn-base | 7 + .../.svn/text-base/root_list_section.yml.svn-base | 7 + .../fixtures/sfGeneratorConfigHandler/empty.yml | 0 .../no_generator_class.yml | 4 + .../no_generator_section.yml | 2 + .../sfGeneratorConfigHandler/root_edit_section.yml | 7 + .../root_fields_section.yml | 7 + .../sfGeneratorConfigHandler/root_list_section.yml | 7 + .../sfSimpleYamlConfigHandler/.svn/all-wcprops | 17 + .../sfSimpleYamlConfigHandler/.svn/entries | 96 + .../.svn/text-base/config.yml.svn-base | 3 + .../.svn/text-base/config_bis.yml.svn-base | 3 + .../fixtures/sfSimpleYamlConfigHandler/config.yml | 3 + .../sfSimpleYamlConfigHandler/config_bis.yml | 3 + .../test/unit/config/sfConfigHandlerTest.php | 54 + .../symfony/test/unit/config/sfConfigTest.php | 53 + .../sfDefineEnvironmentConfigHandlerTest.php | 33 + .../test/unit/config/sfFilterConfigHandlerTest.php | 100 + .../unit/config/sfGeneratorConfigHandlerTest.php | 96 + .../test/unit/config/sfPluginConfigurationTest.php | 76 + .../unit/config/sfProjectConfigurationTest.php | 72 + .../unit/config/sfSimpleYamlConfigHandlerTest.php | 33 + .../test/unit/config/sfViewConfigHandlerTest.php | 351 + .../test/unit/config/sfYamlConfigHandlerTest.php | 85 + .../symfony/test/unit/controller/.svn/all-wcprops | 17 + .../symfony/test/unit/controller/.svn/entries | 96 + .../.svn/prop-base/sfControllerTest.php.svn-base | 13 + .../prop-base/sfWebControllerTest.php.svn-base | 13 + .../.svn/text-base/sfControllerTest.php.svn-base | 28 + .../text-base/sfWebControllerTest.php.svn-base | 214 + .../test/unit/controller/sfControllerTest.php | 28 + .../test/unit/controller/sfWebControllerTest.php | 214 + .../symfony/test/unit/database/.svn/all-wcprops | 11 + lib/vendor/symfony/test/unit/database/.svn/entries | 62 + .../.svn/prop-base/sfDatabaseTest.php.svn-base | 13 + .../.svn/text-base/sfDatabaseTest.php.svn-base | 30 + .../symfony/test/unit/database/sfDatabaseTest.php | 30 + .../symfony/test/unit/debug/.svn/all-wcprops | 23 + lib/vendor/symfony/test/unit/debug/.svn/entries | 130 + .../debug/.svn/prop-base/sfDebugTest.php.svn-base | 9 + .../debug/.svn/prop-base/sfTimerTest.php.svn-base | 9 + .../.svn/prop-base/sfWebDebugTest.php.svn-base | 9 + .../debug/.svn/text-base/sfDebugTest.php.svn-base | 19 + .../debug/.svn/text-base/sfTimerTest.php.svn-base | 31 + .../.svn/text-base/sfWebDebugTest.php.svn-base | 58 + lib/vendor/symfony/test/unit/debug/sfDebugTest.php | 19 + lib/vendor/symfony/test/unit/debug/sfTimerTest.php | 31 + .../symfony/test/unit/debug/sfWebDebugTest.php | 58 + .../symfony/test/unit/escaper/.svn/all-wcprops | 29 + lib/vendor/symfony/test/unit/escaper/.svn/entries | 164 + .../sfOutputEscaperArrayDecoratorTest.php.svn-base | 13 + ...sfOutputEscaperObjectDecoratorTest.php.svn-base | 13 + .../prop-base/sfOutputEscaperSafeTest.php.svn-base | 13 + .../prop-base/sfOutputEscaperTest.php.svn-base | 13 + .../sfOutputEscaperArrayDecoratorTest.php.svn-base | 91 + ...sfOutputEscaperObjectDecoratorTest.php.svn-base | 98 + .../text-base/sfOutputEscaperSafeTest.php.svn-base | 92 + .../text-base/sfOutputEscaperTest.php.svn-base | 158 + .../escaper/sfOutputEscaperArrayDecoratorTest.php | 91 + .../escaper/sfOutputEscaperObjectDecoratorTest.php | 98 + .../test/unit/escaper/sfOutputEscaperSafeTest.php | 92 + .../test/unit/escaper/sfOutputEscaperTest.php | 158 + .../symfony/test/unit/exception/.svn/all-wcprops | 11 + .../symfony/test/unit/exception/.svn/entries | 62 + .../.svn/prop-base/sfExceptionsTest.php.svn-base | 13 + .../.svn/text-base/sfExceptionsTest.php.svn-base | 44 + .../test/unit/exception/sfExceptionsTest.php | 44 + .../symfony/test/unit/filter/.svn/all-wcprops | 11 + lib/vendor/symfony/test/unit/filter/.svn/entries | 62 + .../.svn/prop-base/sfFilterTest.php.svn-base | 13 + .../.svn/text-base/sfFilterTest.php.svn-base | 52 + .../symfony/test/unit/filter/sfFilterTest.php | 52 + lib/vendor/symfony/test/unit/form/.svn/all-wcprops | 23 + lib/vendor/symfony/test/unit/form/.svn/entries | 133 + .../prop-base/sfFormFieldSchemaTest.php.svn-base | 13 + .../.svn/prop-base/sfFormFieldTest.php.svn-base | 13 + .../form/.svn/prop-base/sfFormTest.php.svn-base | 13 + .../text-base/sfFormFieldSchemaTest.php.svn-base | 105 + .../.svn/text-base/sfFormFieldTest.php.svn-base | 233 + .../form/.svn/text-base/sfFormTest.php.svn-base | 981 + .../symfony/test/unit/form/addon/.svn/all-wcprops | 11 + .../symfony/test/unit/form/addon/.svn/entries | 62 + .../.svn/prop-base/sfFormSymfonyTest.php.svn-base | 9 + .../.svn/text-base/sfFormSymfonyTest.php.svn-base | 85 + .../test/unit/form/addon/sfFormSymfonyTest.php | 85 + .../test/unit/form/sfFormFieldSchemaTest.php | 105 + .../symfony/test/unit/form/sfFormFieldTest.php | 233 + lib/vendor/symfony/test/unit/form/sfFormTest.php | 981 + .../symfony/test/unit/generator/.svn/all-wcprops | 17 + .../symfony/test/unit/generator/.svn/entries | 96 + .../.svn/prop-base/sfGeneratorTest.php.svn-base | 13 + ...delGeneratorConfigurationFieldTest.php.svn-base | 9 + .../.svn/text-base/sfGeneratorTest.php.svn-base | 25 + ...delGeneratorConfigurationFieldTest.php.svn-base | 36 + .../test/unit/generator/sfGeneratorTest.php | 25 + .../sfModelGeneratorConfigurationFieldTest.php | 36 + .../symfony/test/unit/helper/.svn/all-wcprops | 65 + lib/vendor/symfony/test/unit/helper/.svn/entries | 371 + .../.svn/prop-base/AssetHelperTest.php.svn-base | 13 + .../.svn/prop-base/DateHelperTest.php.svn-base | 13 + .../.svn/prop-base/EscapingHelperTest.php.svn-base | 13 + .../JavascriptBaseHelperTest.php.svn-base | 9 + .../.svn/prop-base/NumberHelperTest.php.svn-base | 13 + .../.svn/prop-base/PartialHelperTest.php.svn-base | 9 + .../.svn/prop-base/TagHelperTest.php.svn-base | 13 + .../helper/.svn/prop-base/TestObject.php.svn-base | 13 + .../.svn/prop-base/TextHelperTest.php.svn-base | 13 + .../.svn/prop-base/UrlHelperTest.php.svn-base | 13 + .../.svn/text-base/AssetHelperTest.php.svn-base | 280 + .../.svn/text-base/DateHelperTest.php.svn-base | 108 + .../.svn/text-base/EscapingHelperTest.php.svn-base | 44 + .../JavascriptBaseHelperTest.php.svn-base | 44 + .../.svn/text-base/NumberHelperTest.php.svn-base | 37 + .../.svn/text-base/PartialHelperTest.php.svn-base | 64 + .../.svn/text-base/TagHelperTest.php.svn-base | 65 + .../helper/.svn/text-base/TestObject.php.svn-base | 45 + .../.svn/text-base/TextHelperTest.php.svn-base | 138 + .../.svn/text-base/UrlHelperTest.php.svn-base | 149 + .../symfony/test/unit/helper/AssetHelperTest.php | 280 + .../symfony/test/unit/helper/DateHelperTest.php | 108 + .../test/unit/helper/EscapingHelperTest.php | 44 + .../test/unit/helper/JavascriptBaseHelperTest.php | 44 + .../symfony/test/unit/helper/NumberHelperTest.php | 37 + .../symfony/test/unit/helper/PartialHelperTest.php | 64 + .../symfony/test/unit/helper/TagHelperTest.php | 65 + lib/vendor/symfony/test/unit/helper/TestObject.php | 45 + .../symfony/test/unit/helper/TextHelperTest.php | 138 + .../symfony/test/unit/helper/UrlHelperTest.php | 149 + .../test/unit/helper/fixtures/.svn/all-wcprops | 11 + .../symfony/test/unit/helper/fixtures/.svn/entries | 62 + .../fixtures/.svn/prop-base/tiny_mce.js.svn-base | 5 + .../fixtures/.svn/text-base/tiny_mce.js.svn-base | 0 .../symfony/test/unit/helper/fixtures/tiny_mce.js | 0 lib/vendor/symfony/test/unit/i18n/.svn/all-wcprops | 65 + lib/vendor/symfony/test/unit/i18n/.svn/entries | 374 + .../unit/i18n/.svn/prop-base/dataTest.php.svn-base | 13 + .../.svn/prop-base/sfChoiceFormatTest.php.svn-base | 13 + .../.svn/prop-base/sfCultureInfoTest.php.svn-base | 13 + .../i18n/.svn/prop-base/sfI18NTest.php.svn-base | 13 + .../prop-base/sfMessageSourceTest.php.svn-base | 13 + .../sfMessageSource_AggregateTest.php.svn-base | 13 + .../sfMessageSource_FileTest.php.svn-base | 13 + .../sfMessageSource_SQLiteTest.php.svn-base | 13 + .../sfMessageSource_XLIFFTest.php.svn-base | 13 + .../prop-base/sfNumberFormatInfoTest.php.svn-base | 13 + .../unit/i18n/.svn/text-base/dataTest.php.svn-base | 112 + .../.svn/text-base/sfChoiceFormatTest.php.svn-base | 163 + .../.svn/text-base/sfCultureInfoTest.php.svn-base | 281 + .../i18n/.svn/text-base/sfI18NTest.php.svn-base | 133 + .../text-base/sfMessageSourceTest.php.svn-base | 35 + .../sfMessageSource_AggregateTest.php.svn-base | 82 + .../sfMessageSource_FileTest.php.svn-base | 52 + .../sfMessageSource_SQLiteTest.php.svn-base | 99 + .../sfMessageSource_XLIFFTest.php.svn-base | 74 + .../text-base/sfNumberFormatInfoTest.php.svn-base | 135 + lib/vendor/symfony/test/unit/i18n/dataTest.php | 112 + .../test/unit/i18n/extract/.svn/all-wcprops | 29 + .../symfony/test/unit/i18n/extract/.svn/entries | 164 + .../.svn/prop-base/sfI18nExtractTest.php.svn-base | 13 + .../prop-base/sfI18nPhpExtractorTest.php.svn-base | 13 + .../sfI18nYamlGeneratorExtractorTest.php.svn-base | 13 + .../sfI18nYamlValidateExtractorTest.php.svn-base | 13 + .../.svn/text-base/sfI18nExtractTest.php.svn-base | 56 + .../text-base/sfI18nPhpExtractorTest.php.svn-base | 83 + .../sfI18nYamlGeneratorExtractorTest.php.svn-base | 63 + .../sfI18nYamlValidateExtractorTest.php.svn-base | 44 + .../test/unit/i18n/extract/sfI18nExtractTest.php | 56 + .../unit/i18n/extract/sfI18nPhpExtractorTest.php | 83 + .../extract/sfI18nYamlGeneratorExtractorTest.php | 63 + .../extract/sfI18nYamlValidateExtractorTest.php | 44 + .../test/unit/i18n/fixtures/.svn/all-wcprops | 23 + .../symfony/test/unit/i18n/fixtures/.svn/entries | 130 + .../.svn/text-base/messages.fr.xml.svn-base | 23 + .../.svn/text-base/messages.fr_BE.xml.svn-base | 15 + .../.svn/text-base/messages_bis.fr.xml.svn-base | 11 + .../test/unit/i18n/fixtures/messages.fr.xml | 23 + .../test/unit/i18n/fixtures/messages.fr_BE.xml | 15 + .../test/unit/i18n/fixtures/messages_bis.fr.xml | 11 + .../symfony/test/unit/i18n/sfChoiceFormatTest.php | 163 + .../symfony/test/unit/i18n/sfCultureInfoTest.php | 281 + lib/vendor/symfony/test/unit/i18n/sfI18NTest.php | 133 + .../symfony/test/unit/i18n/sfMessageSourceTest.php | 35 + .../unit/i18n/sfMessageSource_AggregateTest.php | 82 + .../test/unit/i18n/sfMessageSource_FileTest.php | 52 + .../test/unit/i18n/sfMessageSource_SQLiteTest.php | 99 + .../test/unit/i18n/sfMessageSource_XLIFFTest.php | 74 + .../test/unit/i18n/sfNumberFormatInfoTest.php | 135 + lib/vendor/symfony/test/unit/log/.svn/all-wcprops | 53 + lib/vendor/symfony/test/unit/log/.svn/entries | 300 + .../prop-base/sfAggregateLoggerTest.php.svn-base | 13 + .../prop-base/sfConsoleLoggerTest.php.svn-base | 13 + .../.svn/prop-base/sfFileLoggerTest.php.svn-base | 13 + .../log/.svn/prop-base/sfLoggerTest.php.svn-base | 13 + .../prop-base/sfLoggerWrapperTest.php.svn-base | 13 + .../.svn/prop-base/sfStreamLoggerTest.php.svn-base | 13 + .../.svn/prop-base/sfVarLoggerTest.php.svn-base | 13 + .../text-base/sfAggregateLoggerTest.php.svn-base | 57 + .../text-base/sfConsoleLoggerTest.php.svn-base | 20 + .../.svn/text-base/sfFileLoggerTest.php.svn-base | 89 + .../log/.svn/text-base/sfLoggerTest.php.svn-base | 105 + .../text-base/sfLoggerWrapperTest.php.svn-base | 43 + .../.svn/text-base/sfStreamLoggerTest.php.svn-base | 22 + .../.svn/text-base/sfVarLoggerTest.php.svn-base | 34 + .../text-base/sfWebDebugLoggerTest.php.svn-base | 25 + .../test/unit/log/sfAggregateLoggerTest.php | 57 + .../symfony/test/unit/log/sfConsoleLoggerTest.php | 20 + .../symfony/test/unit/log/sfFileLoggerTest.php | 89 + lib/vendor/symfony/test/unit/log/sfLoggerTest.php | 105 + .../symfony/test/unit/log/sfLoggerWrapperTest.php | 43 + .../symfony/test/unit/log/sfStreamLoggerTest.php | 22 + .../symfony/test/unit/log/sfVarLoggerTest.php | 34 + .../symfony/test/unit/log/sfWebDebugLoggerTest.php | 25 + .../symfony/test/unit/mailer/.svn/all-wcprops | 11 + lib/vendor/symfony/test/unit/mailer/.svn/entries | 65 + .../.svn/prop-base/sfMailerTest.php.svn-base | 9 + .../.svn/text-base/sfMailerTest.php.svn-base | 184 + .../test/unit/mailer/fixtures/.svn/all-wcprops | 23 + .../symfony/test/unit/mailer/fixtures/.svn/entries | 130 + .../prop-base/TestMailMessage.class.php.svn-base | 9 + .../TestMailerTransport.class.php.svn-base | 9 + .../.svn/prop-base/TestSpool.class.php.svn-base | 9 + .../text-base/TestMailMessage.class.php.svn-base | 19 + .../TestMailerTransport.class.php.svn-base | 60 + .../.svn/text-base/TestSpool.class.php.svn-base | 63 + .../unit/mailer/fixtures/TestMailMessage.class.php | 19 + .../mailer/fixtures/TestMailerTransport.class.php | 60 + .../test/unit/mailer/fixtures/TestSpool.class.php | 63 + .../symfony/test/unit/mailer/sfMailerTest.php | 184 + .../symfony/test/unit/plugin/.svn/all-wcprops | 41 + lib/vendor/symfony/test/unit/plugin/.svn/entries | 235 + .../sfPearDownloaderTest.class.php.svn-base | 13 + .../prop-base/sfPearEnvironmentTest.php.svn-base | 13 + .../prop-base/sfPearRestPluginTest.php.svn-base | 13 + .../prop-base/sfPearRestTest.class.php.svn-base | 13 + .../prop-base/sfPluginManagerTest.php.svn-base | 13 + .../sfPluginTestHelper.class.php.svn-base | 13 + .../sfPearDownloaderTest.class.php.svn-base | 44 + .../text-base/sfPearEnvironmentTest.php.svn-base | 72 + .../text-base/sfPearRestPluginTest.php.svn-base | 66 + .../text-base/sfPearRestTest.class.php.svn-base | 47 + .../text-base/sfPluginManagerTest.php.svn-base | 267 + .../sfPluginTestHelper.class.php.svn-base | 28 + .../test/unit/plugin/fixtures/.svn/all-wcprops | 5 + .../symfony/test/unit/plugin/fixtures/.svn/entries | 37 + .../unit/plugin/fixtures/http/.svn/all-wcprops | 5 + .../test/unit/plugin/fixtures/http/.svn/entries | 31 + .../http/pear.example.com/.svn/all-wcprops | 11 + .../fixtures/http/pear.example.com/.svn/entries | 68 + .../.svn/text-base/channel.xml.svn-base | 14 + .../http/pear.example.com/REST/.svn/all-wcprops | 5 + .../http/pear.example.com/REST/.svn/entries | 34 + .../http/pear.example.com/REST/p/.svn/all-wcprops | 5 + .../http/pear.example.com/REST/p/.svn/entries | 34 + .../REST/p/sffooplugin/.svn/all-wcprops | 11 + .../REST/p/sffooplugin/.svn/entries | 62 + .../p/sffooplugin/.svn/text-base/info.xml.svn-base | 11 + .../pear.example.com/REST/p/sffooplugin/info.xml | 11 + .../REST/p/sftestplugin/.svn/all-wcprops | 11 + .../REST/p/sftestplugin/.svn/entries | 62 + .../sftestplugin/.svn/text-base/info.xml.svn-base | 11 + .../pear.example.com/REST/p/sftestplugin/info.xml | 11 + .../http/pear.example.com/REST/r/.svn/all-wcprops | 5 + .../http/pear.example.com/REST/r/.svn/entries | 34 + .../REST/r/sffooplugin/.svn/all-wcprops | 23 + .../REST/r/sffooplugin/.svn/entries | 130 + .../sffooplugin/.svn/text-base/1.0.0.xml.svn-base | 16 + .../.svn/text-base/allreleases.xml.svn-base | 6 + .../.svn/text-base/deps.1.0.0.txt.svn-base | 1 + .../pear.example.com/REST/r/sffooplugin/1.0.0.xml | 16 + .../REST/r/sffooplugin/allreleases.xml | 6 + .../REST/r/sffooplugin/deps.1.0.0.txt | 1 + .../REST/r/sftestplugin/.svn/all-wcprops | 71 + .../REST/r/sftestplugin/.svn/entries | 402 + .../sftestplugin/.svn/text-base/1.0.0.xml.svn-base | 16 + .../sftestplugin/.svn/text-base/1.0.3.xml.svn-base | 16 + .../sftestplugin/.svn/text-base/1.0.4.xml.svn-base | 16 + .../sftestplugin/.svn/text-base/1.1.3.xml.svn-base | 16 + .../sftestplugin/.svn/text-base/1.1.4.xml.svn-base | 16 + .../.svn/text-base/allreleases.xml.svn-base | 10 + .../.svn/text-base/deps.1.0.0.txt.svn-base | 1 + .../.svn/text-base/deps.1.0.3.txt.svn-base | 1 + .../.svn/text-base/deps.1.0.4.txt.svn-base | 1 + .../.svn/text-base/deps.1.1.3.txt.svn-base | 1 + .../.svn/text-base/deps.1.1.4.txt.svn-base | 1 + .../pear.example.com/REST/r/sftestplugin/1.0.0.xml | 16 + .../pear.example.com/REST/r/sftestplugin/1.0.3.xml | 16 + .../pear.example.com/REST/r/sftestplugin/1.0.4.xml | 16 + .../pear.example.com/REST/r/sftestplugin/1.1.3.xml | 16 + .../pear.example.com/REST/r/sftestplugin/1.1.4.xml | 16 + .../REST/r/sftestplugin/allreleases.xml | 10 + .../REST/r/sftestplugin/deps.1.0.0.txt | 1 + .../REST/r/sftestplugin/deps.1.0.3.txt | 1 + .../REST/r/sftestplugin/deps.1.0.4.txt | 1 + .../REST/r/sftestplugin/deps.1.1.3.txt | 1 + .../REST/r/sftestplugin/deps.1.1.4.txt | 1 + .../fixtures/http/pear.example.com/channel.xml | 14 + .../http/pear.example.com/get/.svn/all-wcprops | 5 + .../http/pear.example.com/get/.svn/entries | 34 + .../get/sfFooPlugin/.svn/all-wcprops | 11 + .../pear.example.com/get/sfFooPlugin/.svn/entries | 62 + .../.svn/prop-base/sfFooPlugin-1.0.0.tgz.svn-base | 5 + .../.svn/text-base/sfFooPlugin-1.0.0.tgz.svn-base | Bin 0 -> 835 bytes .../get/sfFooPlugin/sfFooPlugin-1.0.0.tgz | Bin 0 -> 835 bytes .../get/sfTestPlugin/.svn/all-wcprops | 35 + .../pear.example.com/get/sfTestPlugin/.svn/entries | 198 + .../.svn/prop-base/sfTestPlugin-1.0.0.tgz.svn-base | 5 + .../.svn/prop-base/sfTestPlugin-1.0.3.tgz.svn-base | 5 + .../.svn/prop-base/sfTestPlugin-1.0.4.tgz.svn-base | 5 + .../.svn/prop-base/sfTestPlugin-1.1.3.tgz.svn-base | 5 + .../.svn/prop-base/sfTestPlugin-1.1.4.tgz.svn-base | 5 + .../.svn/text-base/sfTestPlugin-1.0.0.tgz.svn-base | Bin 0 -> 816 bytes .../.svn/text-base/sfTestPlugin-1.0.3.tgz.svn-base | Bin 0 -> 819 bytes .../.svn/text-base/sfTestPlugin-1.0.4.tgz.svn-base | Bin 0 -> 815 bytes .../.svn/text-base/sfTestPlugin-1.1.3.tgz.svn-base | Bin 0 -> 825 bytes .../.svn/text-base/sfTestPlugin-1.1.4.tgz.svn-base | Bin 0 -> 823 bytes .../get/sfTestPlugin/sfTestPlugin-1.0.0.tgz | Bin 0 -> 816 bytes .../get/sfTestPlugin/sfTestPlugin-1.0.3.tgz | Bin 0 -> 819 bytes .../get/sfTestPlugin/sfTestPlugin-1.0.4.tgz | Bin 0 -> 815 bytes .../get/sfTestPlugin/sfTestPlugin-1.1.3.tgz | Bin 0 -> 825 bytes .../get/sfTestPlugin/sfTestPlugin-1.1.4.tgz | Bin 0 -> 823 bytes .../plugin/fixtures/sfFooPlugin/.svn/all-wcprops | 11 + .../unit/plugin/fixtures/sfFooPlugin/.svn/entries | 65 + .../.svn/text-base/package.xml.svn-base | 60 + .../unit/plugin/fixtures/sfFooPlugin/package.xml | 60 + .../sfFooPlugin/sfFooPlugin-1.0.0/.svn/all-wcprops | 11 + .../sfFooPlugin/sfFooPlugin-1.0.0/.svn/entries | 62 + .../.svn/text-base/VERSION.svn-base | 1 + .../fixtures/sfFooPlugin/sfFooPlugin-1.0.0/VERSION | 1 + .../plugin/fixtures/sfTestPlugin/.svn/all-wcprops | 5 + .../unit/plugin/fixtures/sfTestPlugin/.svn/entries | 43 + .../sfTestPlugin-1.0.0/.svn/all-wcprops | 11 + .../sfTestPlugin/sfTestPlugin-1.0.0/.svn/entries | 65 + .../.svn/text-base/package.xml.svn-base | 53 + .../sfTestPlugin/sfTestPlugin-1.0.0/package.xml | 53 + .../sfTestPlugin-1.0.0/.svn/all-wcprops | 11 + .../sfTestPlugin-1.0.0/.svn/entries | 62 + .../.svn/text-base/VERSION.svn-base | 1 + .../sfTestPlugin-1.0.0/sfTestPlugin-1.0.0/VERSION | 1 + .../sfTestPlugin-1.0.3/.svn/all-wcprops | 11 + .../sfTestPlugin/sfTestPlugin-1.0.3/.svn/entries | 65 + .../.svn/text-base/package.xml.svn-base | 53 + .../sfTestPlugin/sfTestPlugin-1.0.3/package.xml | 53 + .../sfTestPlugin-1.0.3/.svn/all-wcprops | 11 + .../sfTestPlugin-1.0.3/.svn/entries | 62 + .../.svn/text-base/VERSION.svn-base | 1 + .../sfTestPlugin-1.0.3/sfTestPlugin-1.0.3/VERSION | 1 + .../sfTestPlugin-1.0.4/.svn/all-wcprops | 11 + .../sfTestPlugin/sfTestPlugin-1.0.4/.svn/entries | 65 + .../.svn/text-base/package.xml.svn-base | 53 + .../sfTestPlugin/sfTestPlugin-1.0.4/package.xml | 53 + .../sfTestPlugin-1.0.4/.svn/all-wcprops | 11 + .../sfTestPlugin-1.0.4/.svn/entries | 62 + .../.svn/text-base/VERSION.svn-base | 1 + .../sfTestPlugin-1.0.4/sfTestPlugin-1.0.4/VERSION | 1 + .../sfTestPlugin-1.1.3/.svn/all-wcprops | 11 + .../sfTestPlugin/sfTestPlugin-1.1.3/.svn/entries | 65 + .../.svn/text-base/package.xml.svn-base | 53 + .../sfTestPlugin/sfTestPlugin-1.1.3/package.xml | 53 + .../sfTestPlugin-1.1.3/.svn/all-wcprops | 11 + .../sfTestPlugin-1.1.3/.svn/entries | 62 + .../.svn/text-base/VERSION.svn-base | 1 + .../sfTestPlugin-1.1.3/sfTestPlugin-1.1.3/VERSION | 1 + .../sfTestPlugin-1.1.4/.svn/all-wcprops | 11 + .../sfTestPlugin/sfTestPlugin-1.1.4/.svn/entries | 65 + .../.svn/text-base/package.xml.svn-base | 53 + .../sfTestPlugin/sfTestPlugin-1.1.4/package.xml | 53 + .../sfTestPlugin-1.1.4/.svn/all-wcprops | 11 + .../sfTestPlugin-1.1.4/.svn/entries | 62 + .../.svn/text-base/VERSION.svn-base | 1 + .../sfTestPlugin-1.1.4/sfTestPlugin-1.1.4/VERSION | 1 + .../unit/plugin/sfPearDownloaderTest.class.php | 44 + .../test/unit/plugin/sfPearEnvironmentTest.php | 72 + .../test/unit/plugin/sfPearRestPluginTest.php | 66 + .../test/unit/plugin/sfPearRestTest.class.php | 47 + .../test/unit/plugin/sfPluginManagerTest.php | 267 + .../test/unit/plugin/sfPluginTestHelper.class.php | 28 + .../symfony/test/unit/request/.svn/all-wcprops | 17 + lib/vendor/symfony/test/unit/request/.svn/entries | 96 + .../.svn/prop-base/sfRequestTest.php.svn-base | 17 + .../.svn/prop-base/sfWebRequestTest.php.svn-base | 13 + .../.svn/text-base/sfRequestTest.php.svn-base | 89 + .../.svn/text-base/sfWebRequestTest.php.svn-base | 377 + .../symfony/test/unit/request/sfRequestTest.php | 89 + .../symfony/test/unit/request/sfWebRequestTest.php | 377 + .../symfony/test/unit/response/.svn/all-wcprops | 17 + lib/vendor/symfony/test/unit/response/.svn/entries | 96 + .../.svn/prop-base/sfResponseTest.php.svn-base | 13 + .../.svn/prop-base/sfWebResponseTest.php.svn-base | 13 + .../.svn/text-base/sfResponseTest.php.svn-base | 54 + .../.svn/text-base/sfWebResponseTest.php.svn-base | 300 + .../symfony/test/unit/response/sfResponseTest.php | 54 + .../test/unit/response/sfWebResponseTest.php | 300 + .../symfony/test/unit/routing/.svn/all-wcprops | 35 + lib/vendor/symfony/test/unit/routing/.svn/entries | 198 + .../sfObjectRouteCollectionTest.php.svn-base | 9 + .../.svn/prop-base/sfObjectRouteTest.php.svn-base | 9 + .../prop-base/sfPatternRoutingTest.php.svn-base | 13 + .../.svn/prop-base/sfRequestRouteTest.php.svn-base | 9 + .../.svn/prop-base/sfRouteTest.php.svn-base | 13 + .../sfObjectRouteCollectionTest.php.svn-base | 126 + .../.svn/text-base/sfObjectRouteTest.php.svn-base | 44 + .../text-base/sfPatternRoutingTest.php.svn-base | 629 + .../.svn/text-base/sfRequestRouteTest.php.svn-base | 49 + .../.svn/text-base/sfRouteTest.php.svn-base | 273 + .../unit/routing/sfObjectRouteCollectionTest.php | 126 + .../test/unit/routing/sfObjectRouteTest.php | 44 + .../test/unit/routing/sfPatternRoutingTest.php | 629 + .../test/unit/routing/sfRequestRouteTest.php | 49 + .../symfony/test/unit/routing/sfRouteTest.php | 273 + .../symfony/test/unit/sfContextMock.class.php | 127 + .../test/unit/sfEventDispatcherTest.class.php | 51 + lib/vendor/symfony/test/unit/sfNoRouting.class.php | 105 + .../test/unit/sfParameterHolderTest.class.php | 57 + .../symfony/test/unit/storage/.svn/all-wcprops | 47 + lib/vendor/symfony/test/unit/storage/.svn/entries | 266 + .../sfCacheSessionStorageTest.php.svn-base | 9 + .../.svn/prop-base/sfMySQLStorageTest.php.svn-base | 9 + .../prop-base/sfMySQLiStorageTest.php.svn-base | 9 + .../.svn/prop-base/sfNoStorageTest.php.svn-base | 13 + .../prop-base/sfPDOSessionStorageTest.php.svn-base | 13 + .../.svn/prop-base/sfStorageTest.php.svn-base | 13 + .../sfCacheSessionStorageTest.php.svn-base | 66 + .../.svn/text-base/sfMySQLStorageTest.php.svn-base | 149 + .../text-base/sfMySQLiStorageTest.php.svn-base | 153 + .../.svn/text-base/sfNoStorageTest.php.svn-base | 21 + .../text-base/sfPDOSessionStorageTest.php.svn-base | 111 + .../text-base/sfSessionStorageTest.php.svn-base | 61 + .../.svn/text-base/sfStorageTest.php.svn-base | 26 + .../unit/storage/sfCacheSessionStorageTest.php | 66 + .../test/unit/storage/sfMySQLStorageTest.php | 149 + .../test/unit/storage/sfMySQLiStorageTest.php | 153 + .../symfony/test/unit/storage/sfNoStorageTest.php | 21 + .../test/unit/storage/sfPDOSessionStorageTest.php | 111 + .../test/unit/storage/sfSessionStorageTest.php | 61 + .../symfony/test/unit/storage/sfStorageTest.php | 26 + lib/vendor/symfony/test/unit/task/.svn/all-wcprops | 23 + lib/vendor/symfony/test/unit/task/.svn/entries | 133 + .../.svn/prop-base/sfBaseTaskTest.php.svn-base | 9 + .../.svn/prop-base/sfFilesystemTest.php.svn-base | 9 + .../task/.svn/prop-base/sfTaskTest.php.svn-base | 9 + .../.svn/text-base/sfBaseTaskTest.php.svn-base | 100 + .../.svn/text-base/sfFilesystemTest.php.svn-base | 65 + .../task/.svn/text-base/sfTaskTest.php.svn-base | 116 + .../symfony/test/unit/task/cache/.svn/all-wcprops | 11 + .../symfony/test/unit/task/cache/.svn/entries | 62 + .../prop-base/sfCacheClearTaskTest.php.svn-base | 13 + .../text-base/sfCacheClearTaskTest.php.svn-base | 35 + .../test/unit/task/cache/sfCacheClearTaskTest.php | 35 + .../symfony/test/unit/task/sfBaseTaskTest.php | 100 + .../symfony/test/unit/task/sfFilesystemTest.php | 65 + lib/vendor/symfony/test/unit/task/sfTaskTest.php | 116 + lib/vendor/symfony/test/unit/test/.svn/all-wcprops | 11 + lib/vendor/symfony/test/unit/test/.svn/entries | 62 + .../prop-base/sfTestFunctionalTest.php.svn-base | 9 + .../text-base/sfTestFunctionalTest.php.svn-base | 70 + .../test/unit/test/sfTestFunctionalTest.php | 70 + lib/vendor/symfony/test/unit/user/.svn/all-wcprops | 17 + lib/vendor/symfony/test/unit/user/.svn/entries | 96 + .../prop-base/sfBasicSecurityUserTest.php.svn-base | 13 + .../user/.svn/prop-base/sfUserTest.php.svn-base | 13 + .../text-base/sfBasicSecurityUserTest.php.svn-base | 169 + .../user/.svn/text-base/sfUserTest.php.svn-base | 100 + .../test/unit/user/sfBasicSecurityUserTest.php | 169 + lib/vendor/symfony/test/unit/user/sfUserTest.php | 100 + lib/vendor/symfony/test/unit/util/.svn/all-wcprops | 65 + lib/vendor/symfony/test/unit/util/.svn/entries | 371 + .../util/.svn/prop-base/sfBrowserTest.php.svn-base | 13 + .../.svn/prop-base/sfCallableTest.php.svn-base | 13 + .../prop-base/sfClassManipulatorTest.php.svn-base | 9 + .../util/.svn/prop-base/sfContextTest.php.svn-base | 13 + .../prop-base/sfDomCssSelectorTest.php.svn-base | 13 + .../util/.svn/prop-base/sfFinderTest.php.svn-base | 13 + .../.svn/prop-base/sfInflectorTest.php.svn-base | 13 + .../sfNamespacedParameterHolderTest.php.svn-base | 13 + .../prop-base/sfParameterHolderTest.php.svn-base | 13 + .../util/.svn/prop-base/sfToolkitTest.php.svn-base | 13 + .../util/.svn/text-base/sfBrowserTest.php.svn-base | 355 + .../.svn/text-base/sfCallableTest.php.svn-base | 53 + .../text-base/sfClassManipulatorTest.php.svn-base | 271 + .../util/.svn/text-base/sfContextTest.php.svn-base | 102 + .../text-base/sfDomCssSelectorTest.php.svn-base | 209 + .../util/.svn/text-base/sfFinderTest.php.svn-base | 229 + .../.svn/text-base/sfInflectorTest.php.svn-base | 31 + .../sfNamespacedParameterHolderTest.php.svn-base | 215 + .../text-base/sfParameterHolderTest.php.svn-base | 135 + .../util/.svn/text-base/sfToolkitTest.php.svn-base | 253 + .../test/unit/util/fixtures/.svn/all-wcprops | 5 + .../symfony/test/unit/util/fixtures/.svn/entries | 34 + .../unit/util/fixtures/finder/.svn/all-wcprops | 23 + .../test/unit/util/fixtures/finder/.svn/entries | 133 + .../finder/.svn/text-base/FILE5.txt.svn-base | 0 .../fixtures/finder/.svn/text-base/file1.svn-base | 7 + .../finder/.svn/text-base/file2.txt.svn-base | 0 .../test/unit/util/fixtures/finder/FILE5.txt | 0 .../util/fixtures/finder/dir1/.svn/all-wcprops | 23 + .../unit/util/fixtures/finder/dir1/.svn/entries | 133 + .../finder/dir1/.svn/prop-base/file12.php.svn-base | 13 + .../finder/dir1/.svn/text-base/file11.svn-base | 0 .../finder/dir1/.svn/text-base/file12.php.svn-base | 0 .../finder/dir1/.svn/text-base/file13.svn-base | 0 .../fixtures/finder/dir1/dir2/.svn/all-wcprops | 29 + .../util/fixtures/finder/dir1/dir2/.svn/entries | 170 + .../dir1/dir2/.svn/prop-base/file21.php.svn-base | 13 + .../dir1/dir2/.svn/text-base/file21.php.svn-base | 0 .../dir1/dir2/.svn/text-base/file22.svn-base | 0 .../dir1/dir2/.svn/text-base/file23.svn-base | 0 .../dir1/dir2/.svn/text-base/file24.svn-base | 0 .../finder/dir1/dir2/dir3/.svn/all-wcprops | 11 + .../fixtures/finder/dir1/dir2/dir3/.svn/entries | 62 + .../dir1/dir2/dir3/.svn/text-base/file31.svn-base | 0 .../util/fixtures/finder/dir1/dir2/dir3/file31 | 0 .../finder/dir1/dir2/dir4/.svn/all-wcprops | 11 + .../fixtures/finder/dir1/dir2/dir4/.svn/entries | 62 + .../dir1/dir2/dir4/.svn/text-base/file41.svn-base | 0 .../util/fixtures/finder/dir1/dir2/dir4/file41 | 0 .../unit/util/fixtures/finder/dir1/dir2/file21.php | 0 .../unit/util/fixtures/finder/dir1/dir2/file22 | 0 .../unit/util/fixtures/finder/dir1/dir2/file23 | 0 .../unit/util/fixtures/finder/dir1/dir2/file24 | 0 .../test/unit/util/fixtures/finder/dir1/file11 | 0 .../test/unit/util/fixtures/finder/dir1/file12.php | 0 .../test/unit/util/fixtures/finder/dir1/file13 | 0 .../symfony/test/unit/util/fixtures/finder/file1 | 7 + .../test/unit/util/fixtures/finder/file2.txt | 0 .../fixtures/finder_permissions/.svn/all-wcprops | 5 + .../util/fixtures/finder_permissions/.svn/entries | 31 + .../finder_permissions/secret/.svn/all-wcprops | 11 + .../finder_permissions/secret/.svn/entries | 62 + .../secret/.svn/text-base/passwd.svn-base | 1 + .../util/fixtures/finder_permissions/secret/passwd | 1 + .../symfony/test/unit/util/sfBrowserTest.php | 355 + .../symfony/test/unit/util/sfCallableTest.php | 53 + .../test/unit/util/sfClassManipulatorTest.php | 271 + .../symfony/test/unit/util/sfContextTest.php | 102 + .../test/unit/util/sfDomCssSelectorTest.php | 209 + lib/vendor/symfony/test/unit/util/sfFinderTest.php | 229 + .../symfony/test/unit/util/sfInflectorTest.php | 31 + .../unit/util/sfNamespacedParameterHolderTest.php | 215 + .../test/unit/util/sfParameterHolderTest.php | 135 + .../symfony/test/unit/util/sfToolkitTest.php | 253 + .../symfony/test/unit/validator/.svn/all-wcprops | 167 + .../symfony/test/unit/validator/.svn/entries | 949 + .../.svn/prop-base/sfValidatorAndTest.php.svn-base | 13 + .../prop-base/sfValidatorBaseTest.php.svn-base | 13 + .../prop-base/sfValidatorBooleanTest.php.svn-base | 13 + .../sfValidatorCSRFTokenTest.php.svn-base | 13 + .../prop-base/sfValidatorCallbackTest.php.svn-base | 13 + .../prop-base/sfValidatorChoiceTest.php.svn-base | 13 + .../sfValidatorDateRangeTest.php.svn-base | 13 + .../prop-base/sfValidatorDateTest.php.svn-base | 13 + .../prop-base/sfValidatorDateTimeTest.php.svn-base | 13 + .../sfValidatorDecoratorTest.php.svn-base | 13 + .../prop-base/sfValidatorEmailTest.php.svn-base | 13 + .../sfValidatorErrorSchemaTest.php.svn-base | 13 + .../prop-base/sfValidatorErrorTest.php.svn-base | 13 + .../prop-base/sfValidatorFileTest.php.svn-base | 13 + .../sfValidatorFromDescriptionTest.php.svn-base | 13 + .../prop-base/sfValidatorIntegerTest.php.svn-base | 13 + .../prop-base/sfValidatorNumberTest.php.svn-base | 13 + .../.svn/prop-base/sfValidatorOrTest.php.svn-base | 13 + .../prop-base/sfValidatorPassTest.php.svn-base | 13 + .../prop-base/sfValidatorRegexTest.php.svn-base | 13 + .../sfValidatorSchemaCompareTest.php.svn-base | 13 + .../sfValidatorSchemaFilterTest.php.svn-base | 13 + .../sfValidatorSchemaForEachTest.php.svn-base | 13 + .../prop-base/sfValidatorSchemaTest.php.svn-base | 13 + .../prop-base/sfValidatorStringTest.php.svn-base | 13 + .../prop-base/sfValidatorTimeTest.php.svn-base | 9 + .../.svn/prop-base/sfValidatorUrlTest.php.svn-base | 13 + .../.svn/text-base/sfValidatorAndTest.php.svn-base | 131 + .../text-base/sfValidatorBaseTest.php.svn-base | 246 + .../text-base/sfValidatorBooleanTest.php.svn-base | 54 + .../sfValidatorCSRFTokenTest.php.svn-base | 47 + .../text-base/sfValidatorCallbackTest.php.svn-base | 65 + .../text-base/sfValidatorChoiceTest.php.svn-base | 98 + .../sfValidatorDateRangeTest.php.svn-base | 71 + .../text-base/sfValidatorDateTest.php.svn-base | 246 + .../text-base/sfValidatorDateTimeTest.php.svn-base | 23 + .../sfValidatorDecoratorTest.php.svn-base | 122 + .../text-base/sfValidatorEmailTest.php.svn-base | 46 + .../sfValidatorErrorSchemaTest.php.svn-base | 172 + .../text-base/sfValidatorErrorTest.php.svn-base | 91 + .../text-base/sfValidatorFileTest.php.svn-base | 295 + .../sfValidatorFromDescriptionTest.php.svn-base | 125 + .../text-base/sfValidatorIntegerTest.php.svn-base | 101 + .../text-base/sfValidatorNumberTest.php.svn-base | 88 + .../.svn/text-base/sfValidatorOrTest.php.svn-base | 106 + .../text-base/sfValidatorPassTest.php.svn-base | 20 + .../text-base/sfValidatorRegexTest.php.svn-base | 89 + .../sfValidatorSchemaCompareTest.php.svn-base | 121 + .../sfValidatorSchemaFilterTest.php.svn-base | 55 + .../sfValidatorSchemaForEachTest.php.svn-base | 38 + .../text-base/sfValidatorSchemaTest.php.svn-base | 398 + .../text-base/sfValidatorStringTest.php.svn-base | 88 + .../text-base/sfValidatorTimeTest.php.svn-base | 142 + .../.svn/text-base/sfValidatorUrlTest.php.svn-base | 61 + .../test/unit/validator/i18n/.svn/all-wcprops | 23 + .../symfony/test/unit/validator/i18n/.svn/entries | 130 + .../sfValidatorI18nChoiceCountryTest.php.svn-base | 13 + .../sfValidatorI18nChoiceLanguageTest.php.svn-base | 13 + .../sfValidatorI18nChoiceTimezoneTest.php.svn-base | 9 + .../sfValidatorI18nChoiceCountryTest.php.svn-base | 34 + .../sfValidatorI18nChoiceLanguageTest.php.svn-base | 34 + .../sfValidatorI18nChoiceTimezoneTest.php.svn-base | 21 + .../i18n/sfValidatorI18nChoiceCountryTest.php | 34 + .../i18n/sfValidatorI18nChoiceLanguageTest.php | 34 + .../i18n/sfValidatorI18nChoiceTimezoneTest.php | 21 + .../test/unit/validator/sfValidatorAndTest.php | 131 + .../test/unit/validator/sfValidatorBaseTest.php | 246 + .../test/unit/validator/sfValidatorBooleanTest.php | 54 + .../unit/validator/sfValidatorCSRFTokenTest.php | 47 + .../unit/validator/sfValidatorCallbackTest.php | 65 + .../test/unit/validator/sfValidatorChoiceTest.php | 98 + .../unit/validator/sfValidatorDateRangeTest.php | 71 + .../test/unit/validator/sfValidatorDateTest.php | 246 + .../unit/validator/sfValidatorDateTimeTest.php | 23 + .../unit/validator/sfValidatorDecoratorTest.php | 122 + .../test/unit/validator/sfValidatorEmailTest.php | 46 + .../unit/validator/sfValidatorErrorSchemaTest.php | 172 + .../test/unit/validator/sfValidatorErrorTest.php | 91 + .../test/unit/validator/sfValidatorFileTest.php | 295 + .../validator/sfValidatorFromDescriptionTest.php | 125 + .../test/unit/validator/sfValidatorIntegerTest.php | 101 + .../test/unit/validator/sfValidatorNumberTest.php | 88 + .../test/unit/validator/sfValidatorOrTest.php | 106 + .../test/unit/validator/sfValidatorPassTest.php | 20 + .../test/unit/validator/sfValidatorRegexTest.php | 89 + .../validator/sfValidatorSchemaCompareTest.php | 121 + .../unit/validator/sfValidatorSchemaFilterTest.php | 55 + .../validator/sfValidatorSchemaForEachTest.php | 38 + .../test/unit/validator/sfValidatorSchemaTest.php | 398 + .../test/unit/validator/sfValidatorStringTest.php | 88 + .../test/unit/validator/sfValidatorTimeTest.php | 142 + .../test/unit/validator/sfValidatorUrlTest.php | 61 + lib/vendor/symfony/test/unit/view/.svn/all-wcprops | 23 + lib/vendor/symfony/test/unit/view/.svn/entries | 130 + .../prop-base/sfViewCacheManagerTest.php.svn-base | 13 + .../sfViewParameterHolderTest.php.svn-base | 13 + .../view/.svn/prop-base/sfViewTest.php.svn-base | 13 + .../text-base/sfViewCacheManagerTest.php.svn-base | 304 + .../sfViewParameterHolderTest.php.svn-base | 123 + .../view/.svn/text-base/sfViewTest.php.svn-base | 81 + .../test/unit/view/sfViewCacheManagerTest.php | 304 + .../test/unit/view/sfViewParameterHolderTest.php | 123 + lib/vendor/symfony/test/unit/view/sfViewTest.php | 81 + .../symfony/test/unit/widget/.svn/all-wcprops | 161 + lib/vendor/symfony/test/unit/widget/.svn/entries | 915 + .../prop-base/sfWidgetFormChoiceTest.php.svn-base | 13 + .../sfWidgetFormDateRangeTest.php.svn-base | 5 + .../prop-base/sfWidgetFormDateTest.php.svn-base | 13 + .../sfWidgetFormDateTimeTest.php.svn-base | 13 + .../sfWidgetFormFilterDateTest.php.svn-base | 5 + .../sfWidgetFormFilterInputTest.php.svn-base | 5 + .../sfWidgetFormInputCheckboxTest.php.svn-base | 13 + .../sfWidgetFormInputFileEditableTest.php.svn-base | 13 + .../sfWidgetFormInputFileTest.php.svn-base | 13 + .../sfWidgetFormInputHiddenTest.php.svn-base | 13 + .../sfWidgetFormInputPasswordTest.php.svn-base | 13 + .../sfWidgetFormInputTextTest.php.svn-base | 13 + .../sfWidgetFormSchemaDecoratorTest.php.svn-base | 13 + .../sfWidgetFormSchemaForEachTest.php.svn-base | 13 + ...fWidgetFormSchemaFormatterListTest.php.svn-base | 13 + ...WidgetFormSchemaFormatterTableTest.php.svn-base | 13 + .../sfWidgetFormSchemaFormatterTest.php.svn-base | 13 + .../prop-base/sfWidgetFormSchemaTest.php.svn-base | 13 + .../sfWidgetFormSelectCheckboxTest.php.svn-base | 13 + .../sfWidgetFormSelectManyTest.php.svn-base | 13 + .../sfWidgetFormSelectRadioTest.php.svn-base | 13 + .../prop-base/sfWidgetFormSelectTest.php.svn-base | 13 + .../.svn/prop-base/sfWidgetFormTest.php.svn-base | 13 + .../sfWidgetFormTextareaTest.php.svn-base | 13 + .../prop-base/sfWidgetFormTimeTest.php.svn-base | 13 + .../.svn/prop-base/sfWidgetTest.php.svn-base | 13 + .../text-base/sfWidgetFormChoiceTest.php.svn-base | 121 + .../sfWidgetFormDateRangeTest.php.svn-base | 48 + .../text-base/sfWidgetFormDateTest.php.svn-base | 144 + .../sfWidgetFormDateTimeTest.php.svn-base | 154 + .../sfWidgetFormFilterDateTest.php.svn-base | 49 + .../sfWidgetFormFilterInputTest.php.svn-base | 39 + .../sfWidgetFormInputCheckboxTest.php.svn-base | 28 + .../sfWidgetFormInputFileEditableTest.php.svn-base | 80 + .../sfWidgetFormInputFileTest.php.svn-base | 19 + .../sfWidgetFormInputHiddenTest.php.svn-base | 23 + .../sfWidgetFormInputPasswordTest.php.svn-base | 24 + .../sfWidgetFormInputTextTest.php.svn-base | 25 + .../sfWidgetFormSchemaDecoratorTest.php.svn-base | 75 + .../sfWidgetFormSchemaForEachTest.php.svn-base | 26 + ...fWidgetFormSchemaFormatterListTest.php.svn-base | 40 + ...WidgetFormSchemaFormatterTableTest.php.svn-base | 40 + .../sfWidgetFormSchemaFormatterTest.php.svn-base | 180 + .../text-base/sfWidgetFormSchemaTest.php.svn-base | 489 + .../sfWidgetFormSelectCheckboxTest.php.svn-base | 132 + .../sfWidgetFormSelectManyTest.php.svn-base | 21 + .../sfWidgetFormSelectRadioTest.php.svn-base | 125 + .../text-base/sfWidgetFormSelectTest.php.svn-base | 139 + .../.svn/text-base/sfWidgetFormTest.php.svn-base | 117 + .../sfWidgetFormTextareaTest.php.svn-base | 26 + .../text-base/sfWidgetFormTimeTest.php.svn-base | 152 + .../.svn/text-base/sfWidgetTest.php.svn-base | 167 + .../symfony/test/unit/widget/i18n/.svn/all-wcprops | 47 + .../symfony/test/unit/widget/i18n/.svn/entries | 266 + .../sfWidgetFormI18nChoiceCountryTest.php.svn-base | 9 + ...sfWidgetFormI18nChoiceCurrencyTest.php.svn-base | 9 + ...sfWidgetFormI18nChoiceLanguageTest.php.svn-base | 9 + ...sfWidgetFormI18nChoiceTimezoneTest.php.svn-base | 9 + .../sfWidgetFormI18nDateTest.php.svn-base | 13 + .../sfWidgetFormI18nDateTimeTest.php.svn-base | 13 + .../sfWidgetFormI18nTimeTest.php.svn-base | 13 + .../sfWidgetFormI18nChoiceCountryTest.php.svn-base | 56 + ...sfWidgetFormI18nChoiceCurrencyTest.php.svn-base | 55 + ...sfWidgetFormI18nChoiceLanguageTest.php.svn-base | 51 + ...sfWidgetFormI18nChoiceTimezoneTest.php.svn-base | 36 + .../sfWidgetFormI18nDateTest.php.svn-base | 48 + .../sfWidgetFormI18nDateTimeTest.php.svn-base | 22 + .../sfWidgetFormI18nTimeTest.php.svn-base | 27 + .../i18n/sfWidgetFormI18nChoiceCountryTest.php | 56 + .../i18n/sfWidgetFormI18nChoiceCurrencyTest.php | 55 + .../i18n/sfWidgetFormI18nChoiceLanguageTest.php | 51 + .../i18n/sfWidgetFormI18nChoiceTimezoneTest.php | 36 + .../unit/widget/i18n/sfWidgetFormI18nDateTest.php | 48 + .../widget/i18n/sfWidgetFormI18nDateTimeTest.php | 22 + .../unit/widget/i18n/sfWidgetFormI18nTimeTest.php | 27 + .../test/unit/widget/sfWidgetFormChoiceTest.php | 121 + .../test/unit/widget/sfWidgetFormDateRangeTest.php | 48 + .../test/unit/widget/sfWidgetFormDateTest.php | 144 + .../test/unit/widget/sfWidgetFormDateTimeTest.php | 154 + .../unit/widget/sfWidgetFormFilterDateTest.php | 49 + .../unit/widget/sfWidgetFormFilterInputTest.php | 39 + .../unit/widget/sfWidgetFormInputCheckboxTest.php | 28 + .../widget/sfWidgetFormInputFileEditableTest.php | 80 + .../test/unit/widget/sfWidgetFormInputFileTest.php | 19 + .../unit/widget/sfWidgetFormInputHiddenTest.php | 23 + .../unit/widget/sfWidgetFormInputPasswordTest.php | 24 + .../test/unit/widget/sfWidgetFormInputTextTest.php | 25 + .../widget/sfWidgetFormSchemaDecoratorTest.php | 75 + .../unit/widget/sfWidgetFormSchemaForEachTest.php | 26 + .../widget/sfWidgetFormSchemaFormatterListTest.php | 40 + .../sfWidgetFormSchemaFormatterTableTest.php | 40 + .../widget/sfWidgetFormSchemaFormatterTest.php | 180 + .../test/unit/widget/sfWidgetFormSchemaTest.php | 489 + .../unit/widget/sfWidgetFormSelectCheckboxTest.php | 132 + .../unit/widget/sfWidgetFormSelectManyTest.php | 21 + .../unit/widget/sfWidgetFormSelectRadioTest.php | 125 + .../test/unit/widget/sfWidgetFormSelectTest.php | 139 + .../symfony/test/unit/widget/sfWidgetFormTest.php | 117 + .../test/unit/widget/sfWidgetFormTextareaTest.php | 26 + .../test/unit/widget/sfWidgetFormTimeTest.php | 152 + .../symfony/test/unit/widget/sfWidgetTest.php | 167 + log/companyfront_dev.log | 28 + plugins/.channels/.alias/pear.txt | 1 + plugins/.channels/.alias/pecl.txt | 1 + plugins/.channels/.alias/phpdocs.txt | 1 + plugins/.channels/.alias/symfony-plugins.txt | 1 + plugins/.channels/.alias/symfony.txt | 1 + plugins/.channels/__uri.reg | 1 + plugins/.channels/doc.php.net.reg | 1 + plugins/.channels/pear.php.net.reg | 1 + plugins/.channels/pear.symfony-project.com.reg | 1 + plugins/.channels/pecl.php.net.reg | 1 + plugins/.channels/plugins.symfony-project.org.reg | 1 + plugins/.depdb | 1 + plugins/.depdblock | 0 plugins/.filemap | 1 + plugins/.lock | 0 .../.channel.pear.symfony-project.com/symfony.reg | 4 + .../sfdoctrineguardplugin.reg | 1 + plugins/sfDoctrineGuardPlugin/.DS_Store | Bin 0 -> 6148 bytes plugins/sfDoctrineGuardPlugin/LICENSE | 7 + plugins/sfDoctrineGuardPlugin/README | 305 + plugins/sfDoctrineGuardPlugin/VERSION | 1 + .../config/doctrine/schema.yml | 182 + .../sfDoctrineGuardPluginConfiguration.class.php | 40 + .../data/fixtures/fixtures.yml | 64 + .../data/fixtures/fixtures.yml.sample | 20 + plugins/sfDoctrineGuardPlugin/data/tasks/.sf | 0 plugins/sfDoctrineGuardPlugin/i18n/sf_guard.es.xml | 33 + plugins/sfDoctrineGuardPlugin/i18n/sf_guard.fr.xml | 33 + .../PluginsfGuardGroupFormFilter.class.php | 13 + .../PluginsfGuardPermissionFormFilter.class.php | 13 + .../doctrine/PluginsfGuardUserFormFilter.class.php | 13 + .../BasesfGuardRequestForgotPasswordForm.class.php | 42 + .../form/doctrine/PluginsfGuardGroupForm.class.php | 28 + .../doctrine/PluginsfGuardPermissionForm.class.php | 25 + .../form/doctrine/PluginsfGuardUserForm.class.php | 13 + .../BasesfGuardChangeUserPasswordForm.class.php | 27 + .../doctrine/base/BasesfGuardFormSignin.class.php | 40 + .../base/BasesfGuardRegisterForm.class.php | 27 + .../base/BasesfGuardUserAdminForm.class.php | 40 + .../sfGuardChangeUserPasswordForm.class.php | 19 + .../lib/form/doctrine/sfGuardFormSignin.class.php | 19 + .../form/doctrine/sfGuardRegisterForm.class.php | 19 + .../form/doctrine/sfGuardUserAdminForm.class.php | 19 + .../sfGuardRequestForgotPasswordForm.class.php | 19 + .../doctrine/PluginsfGuardForgotPassword.class.php | 16 + .../PluginsfGuardForgotPasswordTable.class.php | 7 + .../model/doctrine/PluginsfGuardGroup.class.php | 13 + .../PluginsfGuardGroupPermission.class.php | 13 + .../PluginsfGuardGroupPermissionTable.class.php | 13 + .../doctrine/PluginsfGuardGroupTable.class.php | 13 + .../doctrine/PluginsfGuardPermission.class.php | 13 + .../PluginsfGuardPermissionTable.class.php | 13 + .../doctrine/PluginsfGuardRememberKey.class.php | 13 + .../PluginsfGuardRememberKeyTable.class.php | 13 + .../lib/model/doctrine/PluginsfGuardUser.class.php | 292 + .../doctrine/PluginsfGuardUserGroup.class.php | 18 + .../doctrine/PluginsfGuardUserGroupTable.class.php | 13 + .../doctrine/PluginsfGuardUserPermission.class.php | 18 + .../PluginsfGuardUserPermissionTable.class.php | 13 + .../doctrine/PluginsfGuardUserTable.class.php | 48 + .../lib/routing/sfGuardRouting.class.php | 118 + .../lib/sfGuardBasicSecurityFilter.class.php | 56 + .../lib/sfGuardRememberMeFilter.class.php | 58 + .../lib/task/sfGuardAddGroupTask.class.php | 66 + .../lib/task/sfGuardAddPermissionTask.class.php | 66 + .../lib/task/sfGuardChangePasswordTask.class.php | 70 + .../lib/task/sfGuardCreateUserTask.class.php | 71 + .../task/sfGuardPromoteSuperAdminTask.class.php | 70 + .../lib/user/sfGuardSecurityUser.class.php | 391 + .../lib/validator/sfGuardValidatorUser.class.php | 69 + .../modules/sfGuardAuth/actions/actions.class.php | 22 + .../sfGuardAuth/actions/components.class.php | 22 + .../modules/sfGuardAuth/config/security.yml | 8 + .../lib/BasesfGuardAuthActions.class.php | 89 + .../lib/BasesfGuardAuthComponents.class.php | 10 + .../modules/sfGuardAuth/templates/_signin_form.php | 25 + .../sfGuardAuth/templates/secureSuccess.php | 9 + .../sfGuardAuth/templates/signinSuccess.php | 5 + .../actions/actions.class.php | 15 + .../lib/BasesfGuardForgotPasswordActions.class.php | 95 + .../templates/_new_password.php | 7 + .../templates/_send_request.php | 8 + .../templates/changeSuccess.php | 13 + .../templates/indexSuccess.php | 16 + .../modules/sfGuardGroup/actions/actions.class.php | 16 + .../modules/sfGuardGroup/config/generator.yml | 25 + .../sfGuardGroupGeneratorConfiguration.class.php | 13 + .../lib/sfGuardGroupGeneratorHelper.class.php | 13 + .../sfGuardPermission/actions/actions.class.php | 16 + .../modules/sfGuardPermission/config/generator.yml | 25 + ...GuardPermissionGeneratorConfiguration.class.php | 13 + .../lib/sfGuardPermissionGeneratorHelper.class.php | 13 + .../sfGuardRegister/actions/actions.class.php | 15 + .../sfGuardRegister/actions/components.class.php | 7 + .../lib/BasesfGuardRegisterActions.class.php | 27 + .../lib/BasesfGuardRegisterComponents.class.php | 9 + .../modules/sfGuardRegister/templates/_form.php | 14 + .../sfGuardRegister/templates/indexSuccess.php | 4 + .../modules/sfGuardUser/actions/actions.class.php | 16 + .../modules/sfGuardUser/config/generator.yml | 31 + .../lib/BasesfGuardUserActions.class.php | 20 + .../sfGuardUserGeneratorConfiguration.class.php | 13 + .../lib/sfGuardUserGeneratorHelper.class.php | 13 + .../sfDoctrineGuardPlugin-5.0.0.tgz | Bin 0 -> 46420 bytes symfony | 14 + test/bootstrap/functional.php | 26 + test/bootstrap/unit.php | 26 + web/.htaccess | 22 + web/companyfront_dev.php | 13 + web/css/main.css | 0 web/index.php | 7 + web/robots.txt | 2 + 9576 files changed, 1736295 insertions(+) create mode 100644 apps/companyfront/config/app.yml create mode 100644 apps/companyfront/config/cache.yml create mode 100644 apps/companyfront/config/companyfrontConfiguration.class.php create mode 100644 apps/companyfront/config/factories.yml create mode 100644 apps/companyfront/config/filters.yml create mode 100644 apps/companyfront/config/routing.yml create mode 100644 apps/companyfront/config/security.yml create mode 100644 apps/companyfront/config/settings.yml create mode 100644 apps/companyfront/config/view.yml create mode 100644 apps/companyfront/lib/myUser.class.php create mode 100644 apps/companyfront/templates/layout.php create mode 100644 cache/.pear/0347254fe6eb400739516195ceb484a0rest.cachefile create mode 100644 cache/.pear/0347254fe6eb400739516195ceb484a0rest.cacheid create mode 100644 cache/.pear/0aff874a354386585d1840261335091arest.cachefile create mode 100644 cache/.pear/0aff874a354386585d1840261335091arest.cacheid create mode 100644 cache/.pear/259dde20c1d2bf951782270764915737rest.cachefile create mode 100644 cache/.pear/259dde20c1d2bf951782270764915737rest.cacheid create mode 100644 cache/.pear/30eb3f1cd3bf6bb47747f5e078d97660rest.cachefile create mode 100644 cache/.pear/30eb3f1cd3bf6bb47747f5e078d97660rest.cacheid create mode 100644 cache/.pear/5605980e6948e5ad78961c777f14356arest.cachefile create mode 100644 cache/.pear/5605980e6948e5ad78961c777f14356arest.cacheid create mode 100644 cache/.pear/7a91cdd3d8362cfffa8c8273763e2a38rest.cachefile create mode 100644 cache/.pear/7a91cdd3d8362cfffa8c8273763e2a38rest.cacheid create mode 100644 cache/.pear/80da9e0f7387525f48fdf3657810a752rest.cachefile create mode 100644 cache/.pear/80da9e0f7387525f48fdf3657810a752rest.cacheid create mode 100644 cache/.pear/821d1f671999524ace3ebbd21a6d24c9rest.cachefile create mode 100644 cache/.pear/821d1f671999524ace3ebbd21a6d24c9rest.cacheid create mode 100644 cache/.pear/bcea26b5cf41001b44938f63fed67b06rest.cachefile create mode 100644 cache/.pear/bcea26b5cf41001b44938f63fed67b06rest.cacheid create mode 100644 cache/.pear/bfdecce74933a8dce083abd6d6e4f649rest.cachefile create mode 100644 cache/.pear/bfdecce74933a8dce083abd6d6e4f649rest.cacheid create mode 100644 cache/.pear/d563942ef8f24a139e7563a83576c32frest.cachefile create mode 100644 cache/.pear/d563942ef8f24a139e7563a83576c32frest.cacheid create mode 100644 cache/.pear/e5f1f469a19c6b85c19ba8f2261b8e2arest.cachefile create mode 100644 cache/.pear/e5f1f469a19c6b85c19ba8f2261b8e2arest.cacheid create mode 100644 cache/.pear/package.xml create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0.tgz create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/.DS_Store create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/LICENSE create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/README create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/VERSION create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/config/doctrine/schema.yml create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/config/sfDoctrineGuardPluginConfiguration.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/data/fixtures/fixtures.yml.sample create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/data/tasks/.sf create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/i18n/sf_guard.es.xml create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/i18n/sf_guard.fr.xml create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/filter/doctrine/PluginsfGuardGroupFormFilter.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/filter/doctrine/PluginsfGuardPermissionFormFilter.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/filter/doctrine/PluginsfGuardUserFormFilter.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/base/BasesfGuardRequestForgotPasswordForm.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/PluginsfGuardGroupForm.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/PluginsfGuardPermissionForm.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/PluginsfGuardUserForm.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/base/BasesfGuardChangeUserPasswordForm.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/base/BasesfGuardFormSignin.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/base/BasesfGuardRegisterForm.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/base/BasesfGuardUserAdminForm.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/sfGuardChangeUserPasswordForm.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/sfGuardFormSignin.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/sfGuardRegisterForm.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/sfGuardUserAdminForm.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/sfGuardRequestForgotPasswordForm.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardForgotPassword.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardForgotPasswordTable.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardGroup.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardGroupPermission.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardGroupPermissionTable.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardGroupTable.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardPermission.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardPermissionTable.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardRememberKey.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardRememberKeyTable.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardUser.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardUserGroup.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardUserGroupTable.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardUserPermission.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardUserPermissionTable.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardUserTable.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/routing/sfGuardRouting.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/sfGuardBasicSecurityFilter.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/sfGuardRememberMeFilter.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/task/sfGuardAddGroupTask.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/task/sfGuardAddPermissionTask.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/task/sfGuardChangePasswordTask.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/task/sfGuardCreateUserTask.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/task/sfGuardPromoteSuperAdminTask.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/user/sfGuardSecurityUser.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/validator/sfGuardValidatorUser.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardAuth/actions/actions.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardAuth/actions/components.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardAuth/config/security.yml create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardAuth/lib/BasesfGuardAuthActions.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardAuth/lib/BasesfGuardAuthComponents.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardAuth/templates/_signin_form.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardAuth/templates/secureSuccess.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardAuth/templates/signinSuccess.php create mode 100755 cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardForgotPassword/actions/actions.class.php create mode 100755 cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardForgotPassword/lib/BasesfGuardForgotPasswordActions.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardForgotPassword/templates/_new_password.php create mode 100755 cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardForgotPassword/templates/_send_request.php create mode 100755 cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardForgotPassword/templates/changeSuccess.php create mode 100755 cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardForgotPassword/templates/indexSuccess.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardGroup/actions/actions.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardGroup/config/generator.yml create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardGroup/lib/sfGuardGroupGeneratorConfiguration.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardGroup/lib/sfGuardGroupGeneratorHelper.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardPermission/actions/actions.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardPermission/config/generator.yml create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardPermission/lib/sfGuardPermissionGeneratorConfiguration.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardPermission/lib/sfGuardPermissionGeneratorHelper.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardRegister/actions/actions.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardRegister/actions/components.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardRegister/lib/BasesfGuardRegisterActions.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardRegister/lib/BasesfGuardRegisterComponents.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardRegister/templates/_form.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardRegister/templates/indexSuccess.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardUser/actions/actions.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardUser/config/generator.yml create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardUser/lib/BasesfGuardUserActions.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardUser/lib/sfGuardUserGeneratorConfiguration.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardUser/lib/sfGuardUserGeneratorHelper.class.php create mode 100644 cache/.pear/sfDoctrineGuardPlugin-5.0.0/sfDoctrineGuardPlugin-5.0.0.tgz create mode 100644 cache/companyfront/dev/config/config_app.yml.php create mode 100644 cache/companyfront/dev/config/config_autoload.yml.php create mode 100644 cache/companyfront/dev/config/config_config_handlers.yml.php create mode 100644 cache/companyfront/dev/config/config_databases.yml.php create mode 100644 cache/companyfront/dev/config/config_factories.yml.php create mode 100644 cache/companyfront/dev/config/config_routing.yml.php create mode 100644 cache/companyfront/dev/config/config_settings.yml.php create mode 100644 cache/companyfront/dev/config/modules_default_config_filters.yml.php create mode 100644 cache/companyfront/dev/config/modules_default_config_module.yml.php create mode 100644 cache/companyfront/dev/config/modules_default_config_security.yml.php create mode 100644 cache/companyfront/dev/config/modules_default_config_view.yml.php create mode 100644 cache/project_autoload.cache create mode 100644 config/ProjectConfiguration.class.php create mode 100644 config/databases.yml create mode 100644 config/doctrine/schema.yml create mode 100644 config/properties.ini create mode 100644 config/rsync_exclude.txt create mode 100644 cscope.out create mode 100644 data/fixtures/fixtures.yml create mode 100644 data/sql/schema.sql create mode 100644 lib/filter/doctrine/AdDescriptionFormFilter.class.php create mode 100644 lib/filter/doctrine/AdFormFilter.class.php create mode 100644 lib/filter/doctrine/BaseFormFilterDoctrine.class.php create mode 100644 lib/filter/doctrine/CityFormFilter.class.php create mode 100644 lib/filter/doctrine/CompanyCategoryDescriptionFormFilter.class.php create mode 100644 lib/filter/doctrine/CompanyCategoryFormFilter.class.php create mode 100644 lib/filter/doctrine/CompanyDescriptionFormFilter.class.php create mode 100644 lib/filter/doctrine/CompanyFormFilter.class.php create mode 100644 lib/filter/doctrine/CountryFormFilter.class.php create mode 100644 lib/filter/doctrine/GeneralCategoryDescriptionFormFilter.class.php create mode 100644 lib/filter/doctrine/GeneralCategoryFormFilter.class.php create mode 100644 lib/filter/doctrine/LanguageFormFilter.class.php create mode 100644 lib/filter/doctrine/OfficeAdsFormFilter.class.php create mode 100644 lib/filter/doctrine/OfficeFormFilter.class.php create mode 100644 lib/filter/doctrine/RegionFormFilter.class.php create mode 100644 lib/filter/doctrine/UserBasketFormFilter.class.php create mode 100644 lib/filter/doctrine/base/BaseAdDescriptionFormFilter.class.php create mode 100644 lib/filter/doctrine/base/BaseAdFormFilter.class.php create mode 100644 lib/filter/doctrine/base/BaseCityFormFilter.class.php create mode 100644 lib/filter/doctrine/base/BaseCompanyCategoryDescriptionFormFilter.class.php create mode 100644 lib/filter/doctrine/base/BaseCompanyCategoryFormFilter.class.php create mode 100644 lib/filter/doctrine/base/BaseCompanyDescriptionFormFilter.class.php create mode 100644 lib/filter/doctrine/base/BaseCompanyFormFilter.class.php create mode 100644 lib/filter/doctrine/base/BaseCountryFormFilter.class.php create mode 100644 lib/filter/doctrine/base/BaseGeneralCategoryDescriptionFormFilter.class.php create mode 100644 lib/filter/doctrine/base/BaseGeneralCategoryFormFilter.class.php create mode 100644 lib/filter/doctrine/base/BaseLanguageFormFilter.class.php create mode 100644 lib/filter/doctrine/base/BaseOfficeAdsFormFilter.class.php create mode 100644 lib/filter/doctrine/base/BaseOfficeFormFilter.class.php create mode 100644 lib/filter/doctrine/base/BaseRegionFormFilter.class.php create mode 100644 lib/filter/doctrine/base/BaseUserBasketFormFilter.class.php create mode 100644 lib/filter/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardGroupFormFilter.class.php create mode 100644 lib/filter/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardPermissionFormFilter.class.php create mode 100644 lib/filter/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardUserFormFilter.class.php create mode 100644 lib/filter/doctrine/sfDoctrineGuardPlugin/sfGuardGroupFormFilter.class.php create mode 100644 lib/filter/doctrine/sfDoctrineGuardPlugin/sfGuardPermissionFormFilter.class.php create mode 100644 lib/filter/doctrine/sfDoctrineGuardPlugin/sfGuardUserFormFilter.class.php create mode 100644 lib/form/BaseForm.class.php create mode 100644 lib/form/doctrine/AdDescriptionForm.class.php create mode 100644 lib/form/doctrine/AdForm.class.php create mode 100644 lib/form/doctrine/BaseFormDoctrine.class.php create mode 100644 lib/form/doctrine/CityForm.class.php create mode 100644 lib/form/doctrine/CompanyCategoryDescriptionForm.class.php create mode 100644 lib/form/doctrine/CompanyCategoryForm.class.php create mode 100644 lib/form/doctrine/CompanyDescriptionForm.class.php create mode 100644 lib/form/doctrine/CompanyForm.class.php create mode 100644 lib/form/doctrine/CountryForm.class.php create mode 100644 lib/form/doctrine/GeneralCategoryDescriptionForm.class.php create mode 100644 lib/form/doctrine/GeneralCategoryForm.class.php create mode 100644 lib/form/doctrine/LanguageForm.class.php create mode 100644 lib/form/doctrine/OfficeAdsForm.class.php create mode 100644 lib/form/doctrine/OfficeForm.class.php create mode 100644 lib/form/doctrine/RegionForm.class.php create mode 100644 lib/form/doctrine/UserBasketForm.class.php create mode 100644 lib/form/doctrine/base/BaseAdDescriptionForm.class.php create mode 100644 lib/form/doctrine/base/BaseAdForm.class.php create mode 100644 lib/form/doctrine/base/BaseCityForm.class.php create mode 100644 lib/form/doctrine/base/BaseCompanyCategoryDescriptionForm.class.php create mode 100644 lib/form/doctrine/base/BaseCompanyCategoryForm.class.php create mode 100644 lib/form/doctrine/base/BaseCompanyDescriptionForm.class.php create mode 100644 lib/form/doctrine/base/BaseCompanyForm.class.php create mode 100644 lib/form/doctrine/base/BaseCountryForm.class.php create mode 100644 lib/form/doctrine/base/BaseGeneralCategoryDescriptionForm.class.php create mode 100644 lib/form/doctrine/base/BaseGeneralCategoryForm.class.php create mode 100644 lib/form/doctrine/base/BaseLanguageForm.class.php create mode 100644 lib/form/doctrine/base/BaseOfficeAdsForm.class.php create mode 100644 lib/form/doctrine/base/BaseOfficeForm.class.php create mode 100644 lib/form/doctrine/base/BaseRegionForm.class.php create mode 100644 lib/form/doctrine/base/BaseUserBasketForm.class.php create mode 100644 lib/form/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardGroupForm.class.php create mode 100644 lib/form/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardPermissionForm.class.php create mode 100644 lib/form/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardUserForm.class.php create mode 100644 lib/form/doctrine/sfDoctrineGuardPlugin/sfGuardGroupForm.class.php create mode 100644 lib/form/doctrine/sfDoctrineGuardPlugin/sfGuardPermissionForm.class.php create mode 100644 lib/form/doctrine/sfDoctrineGuardPlugin/sfGuardUserForm.class.php create mode 100644 lib/model/doctrine/Ad.class.php create mode 100644 lib/model/doctrine/AdDescription.class.php create mode 100644 lib/model/doctrine/AdDescriptionTable.class.php create mode 100644 lib/model/doctrine/AdTable.class.php create mode 100644 lib/model/doctrine/City.class.php create mode 100644 lib/model/doctrine/CityTable.class.php create mode 100644 lib/model/doctrine/Company.class.php create mode 100644 lib/model/doctrine/CompanyCategory.class.php create mode 100644 lib/model/doctrine/CompanyCategoryDescription.class.php create mode 100644 lib/model/doctrine/CompanyCategoryDescriptionTable.class.php create mode 100644 lib/model/doctrine/CompanyCategoryTable.class.php create mode 100644 lib/model/doctrine/CompanyDescription.class.php create mode 100644 lib/model/doctrine/CompanyDescriptionTable.class.php create mode 100644 lib/model/doctrine/CompanyTable.class.php create mode 100644 lib/model/doctrine/Country.class.php create mode 100644 lib/model/doctrine/CountryTable.class.php create mode 100644 lib/model/doctrine/GeneralCategory.class.php create mode 100644 lib/model/doctrine/GeneralCategoryDescription.class.php create mode 100644 lib/model/doctrine/GeneralCategoryDescriptionTable.class.php create mode 100644 lib/model/doctrine/GeneralCategoryTable.class.php create mode 100644 lib/model/doctrine/Language.class.php create mode 100644 lib/model/doctrine/LanguageTable.class.php create mode 100644 lib/model/doctrine/Office.class.php create mode 100644 lib/model/doctrine/OfficeAds.class.php create mode 100644 lib/model/doctrine/OfficeAdsTable.class.php create mode 100644 lib/model/doctrine/OfficeTable.class.php create mode 100644 lib/model/doctrine/Region.class.php create mode 100644 lib/model/doctrine/RegionTable.class.php create mode 100644 lib/model/doctrine/UserBasket.class.php create mode 100644 lib/model/doctrine/UserBasketTable.class.php create mode 100644 lib/model/doctrine/base/BaseAd.class.php create mode 100644 lib/model/doctrine/base/BaseAdDescription.class.php create mode 100644 lib/model/doctrine/base/BaseCity.class.php create mode 100644 lib/model/doctrine/base/BaseCompany.class.php create mode 100644 lib/model/doctrine/base/BaseCompanyCategory.class.php create mode 100644 lib/model/doctrine/base/BaseCompanyCategoryDescription.class.php create mode 100644 lib/model/doctrine/base/BaseCompanyDescription.class.php create mode 100644 lib/model/doctrine/base/BaseCountry.class.php create mode 100644 lib/model/doctrine/base/BaseGeneralCategory.class.php create mode 100644 lib/model/doctrine/base/BaseGeneralCategoryDescription.class.php create mode 100644 lib/model/doctrine/base/BaseLanguage.class.php create mode 100644 lib/model/doctrine/base/BaseOffice.class.php create mode 100644 lib/model/doctrine/base/BaseOfficeAds.class.php create mode 100644 lib/model/doctrine/base/BaseRegion.class.php create mode 100644 lib/model/doctrine/base/BaseUserBasket.class.php create mode 100644 lib/model/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardForgotPassword.class.php create mode 100644 lib/model/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardGroup.class.php create mode 100644 lib/model/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardGroupPermission.class.php create mode 100644 lib/model/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardPermission.class.php create mode 100644 lib/model/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardRememberKey.class.php create mode 100644 lib/model/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardUser.class.php create mode 100644 lib/model/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardUserGroup.class.php create mode 100644 lib/model/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardUserPermission.class.php create mode 100644 lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardForgotPassword.class.php create mode 100644 lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardForgotPasswordTable.class.php create mode 100644 lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardGroup.class.php create mode 100644 lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardGroupPermission.class.php create mode 100644 lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardGroupPermissionTable.class.php create mode 100644 lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardGroupTable.class.php create mode 100644 lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardPermission.class.php create mode 100644 lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardPermissionTable.class.php create mode 100644 lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardRememberKey.class.php create mode 100644 lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardRememberKeyTable.class.php create mode 100644 lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardUser.class.php create mode 100644 lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardUserGroup.class.php create mode 100644 lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardUserGroupTable.class.php create mode 100644 lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardUserPermission.class.php create mode 100644 lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardUserPermissionTable.class.php create mode 100644 lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardUserTable.class.php create mode 100644 lib/vendor/symfony/.svn/all-wcprops create mode 100644 lib/vendor/symfony/.svn/dir-prop-base create mode 100644 lib/vendor/symfony/.svn/entries create mode 100644 lib/vendor/symfony/.svn/text-base/CHANGELOG.svn-base create mode 100644 lib/vendor/symfony/.svn/text-base/COPYRIGHT.svn-base create mode 100644 lib/vendor/symfony/.svn/text-base/LICENSE.svn-base create mode 100644 lib/vendor/symfony/.svn/text-base/README.svn-base create mode 100644 lib/vendor/symfony/.svn/text-base/package.xml.tmpl.svn-base create mode 100644 lib/vendor/symfony/CHANGELOG create mode 100644 lib/vendor/symfony/COPYRIGHT create mode 100644 lib/vendor/symfony/LICENSE create mode 100644 lib/vendor/symfony/README create mode 100644 lib/vendor/symfony/data/.svn/all-wcprops create mode 100644 lib/vendor/symfony/data/.svn/entries create mode 100644 lib/vendor/symfony/data/bin/.svn/all-wcprops create mode 100644 lib/vendor/symfony/data/bin/.svn/entries create mode 100644 lib/vendor/symfony/data/bin/.svn/prop-base/changelog.php.svn-base create mode 100644 lib/vendor/symfony/data/bin/.svn/prop-base/check_configuration.php.svn-base create mode 100644 lib/vendor/symfony/data/bin/.svn/prop-base/create_sandbox.sh.svn-base create mode 100644 lib/vendor/symfony/data/bin/.svn/prop-base/release.php.svn-base create mode 100644 lib/vendor/symfony/data/bin/.svn/prop-base/sandbox_installer.php.svn-base create mode 100644 lib/vendor/symfony/data/bin/.svn/prop-base/symfony.bat.svn-base create mode 100644 lib/vendor/symfony/data/bin/.svn/prop-base/symfony.svn-base create mode 100644 lib/vendor/symfony/data/bin/.svn/text-base/changelog.php.svn-base create mode 100644 lib/vendor/symfony/data/bin/.svn/text-base/check_configuration.php.svn-base create mode 100644 lib/vendor/symfony/data/bin/.svn/text-base/create_sandbox.sh.svn-base create mode 100644 lib/vendor/symfony/data/bin/.svn/text-base/release.php.svn-base create mode 100644 lib/vendor/symfony/data/bin/.svn/text-base/sandbox_installer.php.svn-base create mode 100644 lib/vendor/symfony/data/bin/.svn/text-base/symfony.bat.svn-base create mode 100644 lib/vendor/symfony/data/bin/.svn/text-base/symfony.svn-base create mode 100644 lib/vendor/symfony/data/bin/changelog.php create mode 100644 lib/vendor/symfony/data/bin/check_configuration.php create mode 100755 lib/vendor/symfony/data/bin/create_sandbox.sh create mode 100644 lib/vendor/symfony/data/bin/release.php create mode 100644 lib/vendor/symfony/data/bin/sandbox_installer.php create mode 100644 lib/vendor/symfony/data/bin/sandbox_skeleton/.svn/all-wcprops create mode 100644 lib/vendor/symfony/data/bin/sandbox_skeleton/.svn/entries create mode 100644 lib/vendor/symfony/data/bin/sandbox_skeleton/.svn/text-base/README.svn-base create mode 100644 lib/vendor/symfony/data/bin/sandbox_skeleton/README create mode 100755 lib/vendor/symfony/data/bin/symfony create mode 100644 lib/vendor/symfony/data/bin/symfony.bat create mode 100644 lib/vendor/symfony/data/web/.svn/all-wcprops create mode 100644 lib/vendor/symfony/data/web/.svn/entries create mode 100644 lib/vendor/symfony/data/web/sf/.svn/all-wcprops create mode 100644 lib/vendor/symfony/data/web/sf/.svn/entries create mode 100644 lib/vendor/symfony/data/web/sf/sf_admin/.svn/all-wcprops create mode 100644 lib/vendor/symfony/data/web/sf/sf_admin/.svn/entries create mode 100644 lib/vendor/symfony/data/web/sf/sf_admin/css/.svn/all-wcprops create mode 100644 lib/vendor/symfony/data/web/sf/sf_admin/css/.svn/entries create mode 100644 lib/vendor/symfony/data/web/sf/sf_admin/css/.svn/prop-base/main.css.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_admin/css/.svn/text-base/main.css.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_admin/css/main.css create mode 100644 lib/vendor/symfony/data/web/sf/sf_admin/images/.svn/all-wcprops create mode 100644 lib/vendor/symfony/data/web/sf/sf_admin/images/.svn/entries create mode 100644 lib/vendor/symfony/data/web/sf/sf_admin/images/.svn/prop-base/add.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_admin/images/.svn/prop-base/cancel.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_admin/images/.svn/prop-base/default_icon.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_admin/images/.svn/prop-base/delete.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_admin/images/.svn/prop-base/edit.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_admin/images/.svn/prop-base/error.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_admin/images/.svn/prop-base/filter.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_admin/images/.svn/prop-base/first.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_admin/images/.svn/prop-base/last.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_admin/images/.svn/prop-base/list.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_admin/images/.svn/prop-base/next.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_admin/images/.svn/prop-base/ok.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_admin/images/.svn/prop-base/previous.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_admin/images/.svn/prop-base/reset.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_admin/images/.svn/prop-base/save.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_admin/images/.svn/prop-base/tick.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_admin/images/.svn/text-base/add.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_admin/images/.svn/text-base/cancel.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_admin/images/.svn/text-base/default_icon.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_admin/images/.svn/text-base/delete.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_admin/images/.svn/text-base/edit.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_admin/images/.svn/text-base/error.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_admin/images/.svn/text-base/filter.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_admin/images/.svn/text-base/first.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_admin/images/.svn/text-base/last.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_admin/images/.svn/text-base/list.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_admin/images/.svn/text-base/next.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_admin/images/.svn/text-base/ok.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_admin/images/.svn/text-base/previous.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_admin/images/.svn/text-base/reset.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_admin/images/.svn/text-base/save.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_admin/images/.svn/text-base/tick.png.svn-base create mode 100755 lib/vendor/symfony/data/web/sf/sf_admin/images/add.png create mode 100755 lib/vendor/symfony/data/web/sf/sf_admin/images/cancel.png create mode 100755 lib/vendor/symfony/data/web/sf/sf_admin/images/default_icon.png create mode 100755 lib/vendor/symfony/data/web/sf/sf_admin/images/delete.png create mode 100755 lib/vendor/symfony/data/web/sf/sf_admin/images/edit.png create mode 100755 lib/vendor/symfony/data/web/sf/sf_admin/images/error.png create mode 100755 lib/vendor/symfony/data/web/sf/sf_admin/images/filter.png create mode 100755 lib/vendor/symfony/data/web/sf/sf_admin/images/first.png create mode 100755 lib/vendor/symfony/data/web/sf/sf_admin/images/last.png create mode 100755 lib/vendor/symfony/data/web/sf/sf_admin/images/list.png create mode 100755 lib/vendor/symfony/data/web/sf/sf_admin/images/next.png create mode 100755 lib/vendor/symfony/data/web/sf/sf_admin/images/ok.png create mode 100755 lib/vendor/symfony/data/web/sf/sf_admin/images/previous.png create mode 100755 lib/vendor/symfony/data/web/sf/sf_admin/images/reset.png create mode 100755 lib/vendor/symfony/data/web/sf/sf_admin/images/save.png create mode 100755 lib/vendor/symfony/data/web/sf/sf_admin/images/tick.png create mode 100644 lib/vendor/symfony/data/web/sf/sf_admin/js/.svn/all-wcprops create mode 100644 lib/vendor/symfony/data/web/sf/sf_admin/js/.svn/entries create mode 100644 lib/vendor/symfony/data/web/sf/sf_admin/js/.svn/prop-base/collapse.js.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_admin/js/.svn/prop-base/double_list.js.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_admin/js/.svn/text-base/collapse.js.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_admin/js/.svn/text-base/double_list.js.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_admin/js/collapse.js create mode 100644 lib/vendor/symfony/data/web/sf/sf_admin/js/double_list.js create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/.svn/all-wcprops create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/.svn/entries create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/css/.svn/all-wcprops create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/css/.svn/entries create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/css/.svn/prop-base/ie.css.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/css/.svn/prop-base/screen.css.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/css/.svn/text-base/ie.css.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/css/.svn/text-base/pngfix.htc.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/css/.svn/text-base/screen.css.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/css/ie.css create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/css/pngfix.htc create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/css/screen.css create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/.svn/all-wcprops create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/.svn/entries create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/.svn/prop-base/bg_body.jpg.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/.svn/prop-base/bg_sfTAlert.jpg.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/.svn/prop-base/bg_sfTLock.jpg.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/.svn/prop-base/bg_sfTMessage.jpg.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/.svn/prop-base/sfTLogo.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/.svn/prop-base/trans.gif.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/.svn/text-base/bg_body.jpg.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/.svn/text-base/bg_sfTAlert.jpg.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/.svn/text-base/bg_sfTLock.jpg.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/.svn/text-base/bg_sfTMessage.jpg.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/.svn/text-base/sfTLogo.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/.svn/text-base/trans.gif.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/bg_body.jpg create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/bg_sfTAlert.jpg create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/bg_sfTLock.jpg create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/bg_sfTMessage.jpg create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/icons/.svn/all-wcprops create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/icons/.svn/entries create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/icons/.svn/prop-base/cancel48.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/icons/.svn/prop-base/colour16.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/icons/.svn/prop-base/db16.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/icons/.svn/prop-base/disabled48.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/icons/.svn/prop-base/edit16.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/icons/.svn/prop-base/folder16.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/icons/.svn/prop-base/linkOut16.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/icons/.svn/prop-base/lock48.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/icons/.svn/prop-base/ok48.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/icons/.svn/prop-base/reload16.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/icons/.svn/prop-base/tools48.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/icons/.svn/text-base/cancel48.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/icons/.svn/text-base/colour16.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/icons/.svn/text-base/db16.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/icons/.svn/text-base/disabled48.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/icons/.svn/text-base/edit16.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/icons/.svn/text-base/folder16.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/icons/.svn/text-base/linkOut16.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/icons/.svn/text-base/lock48.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/icons/.svn/text-base/ok48.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/icons/.svn/text-base/reload16.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/icons/.svn/text-base/tools48.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/icons/cancel48.png create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/icons/colour16.png create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/icons/db16.png create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/icons/disabled48.png create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/icons/edit16.png create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/icons/folder16.png create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/icons/linkOut16.png create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/icons/lock48.png create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/icons/ok48.png create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/icons/reload16.png create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/icons/tools48.png create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/sfTLogo.png create mode 100644 lib/vendor/symfony/data/web/sf/sf_default/images/trans.gif create mode 100644 lib/vendor/symfony/data/web/sf/sf_web_debug/.svn/all-wcprops create mode 100644 lib/vendor/symfony/data/web/sf/sf_web_debug/.svn/entries create mode 100644 lib/vendor/symfony/data/web/sf/sf_web_debug/images/.svn/all-wcprops create mode 100644 lib/vendor/symfony/data/web/sf/sf_web_debug/images/.svn/entries create mode 100644 lib/vendor/symfony/data/web/sf/sf_web_debug/images/.svn/prop-base/close.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_web_debug/images/.svn/prop-base/config.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_web_debug/images/.svn/prop-base/database.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_web_debug/images/.svn/prop-base/email.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_web_debug/images/.svn/prop-base/error.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_web_debug/images/.svn/prop-base/info.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_web_debug/images/.svn/prop-base/log.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_web_debug/images/.svn/prop-base/memory.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_web_debug/images/.svn/prop-base/reload.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_web_debug/images/.svn/prop-base/sf.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_web_debug/images/.svn/prop-base/time.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_web_debug/images/.svn/prop-base/toggle.gif.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_web_debug/images/.svn/prop-base/view.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_web_debug/images/.svn/prop-base/warning.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_web_debug/images/.svn/text-base/close.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_web_debug/images/.svn/text-base/config.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_web_debug/images/.svn/text-base/database.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_web_debug/images/.svn/text-base/email.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_web_debug/images/.svn/text-base/error.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_web_debug/images/.svn/text-base/info.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_web_debug/images/.svn/text-base/log.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_web_debug/images/.svn/text-base/memory.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_web_debug/images/.svn/text-base/reload.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_web_debug/images/.svn/text-base/sf.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_web_debug/images/.svn/text-base/time.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_web_debug/images/.svn/text-base/toggle.gif.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_web_debug/images/.svn/text-base/view.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_web_debug/images/.svn/text-base/warning.png.svn-base create mode 100644 lib/vendor/symfony/data/web/sf/sf_web_debug/images/close.png create mode 100755 lib/vendor/symfony/data/web/sf/sf_web_debug/images/config.png create mode 100755 lib/vendor/symfony/data/web/sf/sf_web_debug/images/database.png create mode 100644 lib/vendor/symfony/data/web/sf/sf_web_debug/images/email.png create mode 100644 lib/vendor/symfony/data/web/sf/sf_web_debug/images/error.png create mode 100644 lib/vendor/symfony/data/web/sf/sf_web_debug/images/info.png create mode 100755 lib/vendor/symfony/data/web/sf/sf_web_debug/images/log.png create mode 100755 lib/vendor/symfony/data/web/sf/sf_web_debug/images/memory.png create mode 100644 lib/vendor/symfony/data/web/sf/sf_web_debug/images/reload.png create mode 100644 lib/vendor/symfony/data/web/sf/sf_web_debug/images/sf.png create mode 100755 lib/vendor/symfony/data/web/sf/sf_web_debug/images/time.png create mode 100644 lib/vendor/symfony/data/web/sf/sf_web_debug/images/toggle.gif create mode 100644 lib/vendor/symfony/data/web/sf/sf_web_debug/images/view.png create mode 100644 lib/vendor/symfony/data/web/sf/sf_web_debug/images/warning.png create mode 100644 lib/vendor/symfony/lib/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/.svn/dir-prop-base create mode 100644 lib/vendor/symfony/lib/.svn/entries create mode 100644 lib/vendor/symfony/lib/action/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/action/.svn/entries create mode 100644 lib/vendor/symfony/lib/action/.svn/prop-base/sfAction.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/action/.svn/prop-base/sfActionStack.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/action/.svn/prop-base/sfActionStackEntry.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/action/.svn/prop-base/sfActions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/action/.svn/prop-base/sfComponent.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/action/.svn/prop-base/sfComponents.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/action/.svn/text-base/sfAction.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/action/.svn/text-base/sfActionStack.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/action/.svn/text-base/sfActionStackEntry.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/action/.svn/text-base/sfActions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/action/.svn/text-base/sfComponent.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/action/.svn/text-base/sfComponents.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/action/sfAction.class.php create mode 100644 lib/vendor/symfony/lib/action/sfActionStack.class.php create mode 100644 lib/vendor/symfony/lib/action/sfActionStackEntry.class.php create mode 100644 lib/vendor/symfony/lib/action/sfActions.class.php create mode 100644 lib/vendor/symfony/lib/action/sfComponent.class.php create mode 100644 lib/vendor/symfony/lib/action/sfComponents.class.php create mode 100644 lib/vendor/symfony/lib/addon/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/addon/.svn/entries create mode 100644 lib/vendor/symfony/lib/addon/.svn/prop-base/sfData.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/addon/.svn/prop-base/sfPager.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/addon/.svn/text-base/sfData.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/addon/.svn/text-base/sfPager.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/addon/sfData.class.php create mode 100644 lib/vendor/symfony/lib/addon/sfPager.class.php create mode 100644 lib/vendor/symfony/lib/autoload/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/autoload/.svn/entries create mode 100644 lib/vendor/symfony/lib/autoload/.svn/prop-base/sfAutoload.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/autoload/.svn/prop-base/sfAutoloadAgain.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/autoload/.svn/prop-base/sfCoreAutoload.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/autoload/.svn/prop-base/sfSimpleAutoload.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/autoload/.svn/text-base/sfAutoload.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/autoload/.svn/text-base/sfAutoloadAgain.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/autoload/.svn/text-base/sfCoreAutoload.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/autoload/.svn/text-base/sfSimpleAutoload.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/autoload/sfAutoload.class.php create mode 100644 lib/vendor/symfony/lib/autoload/sfAutoloadAgain.class.php create mode 100644 lib/vendor/symfony/lib/autoload/sfCoreAutoload.class.php create mode 100644 lib/vendor/symfony/lib/autoload/sfSimpleAutoload.class.php create mode 100644 lib/vendor/symfony/lib/cache/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/cache/.svn/entries create mode 100644 lib/vendor/symfony/lib/cache/.svn/prop-base/sfAPCCache.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/cache/.svn/prop-base/sfCache.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/cache/.svn/prop-base/sfEAcceleratorCache.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/cache/.svn/prop-base/sfFileCache.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/cache/.svn/prop-base/sfFunctionCache.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/cache/.svn/prop-base/sfMemcacheCache.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/cache/.svn/prop-base/sfNoCache.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/cache/.svn/prop-base/sfSQLiteCache.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/cache/.svn/prop-base/sfXCacheCache.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/cache/.svn/text-base/sfAPCCache.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/cache/.svn/text-base/sfCache.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/cache/.svn/text-base/sfEAcceleratorCache.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/cache/.svn/text-base/sfFileCache.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/cache/.svn/text-base/sfFunctionCache.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/cache/.svn/text-base/sfMemcacheCache.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/cache/.svn/text-base/sfNoCache.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/cache/.svn/text-base/sfSQLiteCache.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/cache/.svn/text-base/sfXCacheCache.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/cache/sfAPCCache.class.php create mode 100644 lib/vendor/symfony/lib/cache/sfCache.class.php create mode 100644 lib/vendor/symfony/lib/cache/sfEAcceleratorCache.class.php create mode 100644 lib/vendor/symfony/lib/cache/sfFileCache.class.php create mode 100644 lib/vendor/symfony/lib/cache/sfFunctionCache.class.php create mode 100644 lib/vendor/symfony/lib/cache/sfMemcacheCache.class.php create mode 100644 lib/vendor/symfony/lib/cache/sfNoCache.class.php create mode 100644 lib/vendor/symfony/lib/cache/sfSQLiteCache.class.php create mode 100644 lib/vendor/symfony/lib/cache/sfXCacheCache.class.php create mode 100644 lib/vendor/symfony/lib/command/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/command/.svn/entries create mode 100644 lib/vendor/symfony/lib/command/.svn/prop-base/cli.php.svn-base create mode 100644 lib/vendor/symfony/lib/command/.svn/prop-base/sfAnsiColorFormatter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/command/.svn/prop-base/sfCommandApplication.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/command/.svn/prop-base/sfCommandArgument.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/command/.svn/prop-base/sfCommandArgumentSet.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/command/.svn/prop-base/sfCommandArgumentsException.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/command/.svn/prop-base/sfCommandException.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/command/.svn/prop-base/sfCommandLogger.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/command/.svn/prop-base/sfCommandManager.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/command/.svn/prop-base/sfCommandOption.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/command/.svn/prop-base/sfCommandOptionSet.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/command/.svn/prop-base/sfFormatter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/command/.svn/prop-base/sfSymfonyCommandApplication.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/command/.svn/text-base/cli.php.svn-base create mode 100644 lib/vendor/symfony/lib/command/.svn/text-base/sfAnsiColorFormatter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/command/.svn/text-base/sfCommandApplication.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/command/.svn/text-base/sfCommandArgument.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/command/.svn/text-base/sfCommandArgumentSet.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/command/.svn/text-base/sfCommandArgumentsException.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/command/.svn/text-base/sfCommandException.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/command/.svn/text-base/sfCommandLogger.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/command/.svn/text-base/sfCommandManager.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/command/.svn/text-base/sfCommandOption.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/command/.svn/text-base/sfCommandOptionSet.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/command/.svn/text-base/sfFormatter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/command/.svn/text-base/sfSymfonyCommandApplication.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/command/cli.php create mode 100644 lib/vendor/symfony/lib/command/sfAnsiColorFormatter.class.php create mode 100644 lib/vendor/symfony/lib/command/sfCommandApplication.class.php create mode 100644 lib/vendor/symfony/lib/command/sfCommandArgument.class.php create mode 100644 lib/vendor/symfony/lib/command/sfCommandArgumentSet.class.php create mode 100644 lib/vendor/symfony/lib/command/sfCommandArgumentsException.class.php create mode 100644 lib/vendor/symfony/lib/command/sfCommandException.class.php create mode 100644 lib/vendor/symfony/lib/command/sfCommandLogger.class.php create mode 100644 lib/vendor/symfony/lib/command/sfCommandManager.class.php create mode 100644 lib/vendor/symfony/lib/command/sfCommandOption.class.php create mode 100644 lib/vendor/symfony/lib/command/sfCommandOptionSet.class.php create mode 100644 lib/vendor/symfony/lib/command/sfFormatter.class.php create mode 100644 lib/vendor/symfony/lib/command/sfSymfonyCommandApplication.class.php create mode 100644 lib/vendor/symfony/lib/config/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/config/.svn/entries create mode 100644 lib/vendor/symfony/lib/config/.svn/prop-base/sfApplicationConfiguration.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/config/.svn/prop-base/sfAutoloadConfigHandler.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/config/.svn/prop-base/sfCacheConfigHandler.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/config/.svn/prop-base/sfCompileConfigHandler.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/config/.svn/prop-base/sfConfig.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/config/.svn/prop-base/sfConfigCache.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/config/.svn/prop-base/sfConfigHandler.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/config/.svn/prop-base/sfDatabaseConfigHandler.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/config/.svn/prop-base/sfDefineEnvironmentConfigHandler.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/config/.svn/prop-base/sfFactoryConfigHandler.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/config/.svn/prop-base/sfFilterConfigHandler.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/config/.svn/prop-base/sfGeneratorConfigHandler.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/config/.svn/prop-base/sfPluginConfiguration.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/config/.svn/prop-base/sfPluginConfigurationGeneric.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/config/.svn/prop-base/sfProjectConfiguration.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/config/.svn/prop-base/sfRootConfigHandler.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/config/.svn/prop-base/sfRoutingConfigHandler.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/config/.svn/prop-base/sfSecurityConfigHandler.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/config/.svn/prop-base/sfSimpleYamlConfigHandler.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/config/.svn/prop-base/sfViewConfigHandler.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/config/.svn/prop-base/sfYamlConfigHandler.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/config/.svn/text-base/sfApplicationConfiguration.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/config/.svn/text-base/sfAutoloadConfigHandler.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/config/.svn/text-base/sfCacheConfigHandler.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/config/.svn/text-base/sfCompileConfigHandler.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/config/.svn/text-base/sfConfig.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/config/.svn/text-base/sfConfigCache.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/config/.svn/text-base/sfConfigHandler.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/config/.svn/text-base/sfDatabaseConfigHandler.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/config/.svn/text-base/sfDefineEnvironmentConfigHandler.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/config/.svn/text-base/sfFactoryConfigHandler.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/config/.svn/text-base/sfFilterConfigHandler.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/config/.svn/text-base/sfGeneratorConfigHandler.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/config/.svn/text-base/sfPluginConfiguration.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/config/.svn/text-base/sfPluginConfigurationGeneric.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/config/.svn/text-base/sfProjectConfiguration.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/config/.svn/text-base/sfRootConfigHandler.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/config/.svn/text-base/sfRoutingConfigHandler.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/config/.svn/text-base/sfSecurityConfigHandler.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/config/.svn/text-base/sfSimpleYamlConfigHandler.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/config/.svn/text-base/sfViewConfigHandler.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/config/.svn/text-base/sfYamlConfigHandler.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/config/config/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/config/config/.svn/entries create mode 100644 lib/vendor/symfony/lib/config/config/.svn/prop-base/autoload.yml.svn-base create mode 100644 lib/vendor/symfony/lib/config/config/.svn/prop-base/config_handlers.yml.svn-base create mode 100644 lib/vendor/symfony/lib/config/config/.svn/prop-base/core_compile.yml.svn-base create mode 100644 lib/vendor/symfony/lib/config/config/.svn/prop-base/factories.yml.svn-base create mode 100644 lib/vendor/symfony/lib/config/config/.svn/prop-base/module.yml.svn-base create mode 100644 lib/vendor/symfony/lib/config/config/.svn/prop-base/settings.yml.svn-base create mode 100644 lib/vendor/symfony/lib/config/config/.svn/text-base/autoload.yml.svn-base create mode 100644 lib/vendor/symfony/lib/config/config/.svn/text-base/config_handlers.yml.svn-base create mode 100644 lib/vendor/symfony/lib/config/config/.svn/text-base/core_compile.yml.svn-base create mode 100644 lib/vendor/symfony/lib/config/config/.svn/text-base/factories.yml.svn-base create mode 100644 lib/vendor/symfony/lib/config/config/.svn/text-base/filters.yml.svn-base create mode 100644 lib/vendor/symfony/lib/config/config/.svn/text-base/module.yml.svn-base create mode 100644 lib/vendor/symfony/lib/config/config/.svn/text-base/security.yml.svn-base create mode 100644 lib/vendor/symfony/lib/config/config/.svn/text-base/settings.yml.svn-base create mode 100644 lib/vendor/symfony/lib/config/config/.svn/text-base/view.yml.svn-base create mode 100644 lib/vendor/symfony/lib/config/config/autoload.yml create mode 100644 lib/vendor/symfony/lib/config/config/config_handlers.yml create mode 100644 lib/vendor/symfony/lib/config/config/core_compile.yml create mode 100644 lib/vendor/symfony/lib/config/config/factories.yml create mode 100644 lib/vendor/symfony/lib/config/config/filters.yml create mode 100644 lib/vendor/symfony/lib/config/config/module.yml create mode 100644 lib/vendor/symfony/lib/config/config/security.yml create mode 100644 lib/vendor/symfony/lib/config/config/settings.yml create mode 100644 lib/vendor/symfony/lib/config/config/view.yml create mode 100644 lib/vendor/symfony/lib/config/sfApplicationConfiguration.class.php create mode 100644 lib/vendor/symfony/lib/config/sfAutoloadConfigHandler.class.php create mode 100644 lib/vendor/symfony/lib/config/sfCacheConfigHandler.class.php create mode 100644 lib/vendor/symfony/lib/config/sfCompileConfigHandler.class.php create mode 100644 lib/vendor/symfony/lib/config/sfConfig.class.php create mode 100644 lib/vendor/symfony/lib/config/sfConfigCache.class.php create mode 100644 lib/vendor/symfony/lib/config/sfConfigHandler.class.php create mode 100644 lib/vendor/symfony/lib/config/sfDatabaseConfigHandler.class.php create mode 100644 lib/vendor/symfony/lib/config/sfDefineEnvironmentConfigHandler.class.php create mode 100644 lib/vendor/symfony/lib/config/sfFactoryConfigHandler.class.php create mode 100644 lib/vendor/symfony/lib/config/sfFilterConfigHandler.class.php create mode 100644 lib/vendor/symfony/lib/config/sfGeneratorConfigHandler.class.php create mode 100644 lib/vendor/symfony/lib/config/sfPluginConfiguration.class.php create mode 100644 lib/vendor/symfony/lib/config/sfPluginConfigurationGeneric.class.php create mode 100644 lib/vendor/symfony/lib/config/sfProjectConfiguration.class.php create mode 100644 lib/vendor/symfony/lib/config/sfRootConfigHandler.class.php create mode 100644 lib/vendor/symfony/lib/config/sfRoutingConfigHandler.class.php create mode 100644 lib/vendor/symfony/lib/config/sfSecurityConfigHandler.class.php create mode 100644 lib/vendor/symfony/lib/config/sfSimpleYamlConfigHandler.class.php create mode 100644 lib/vendor/symfony/lib/config/sfViewConfigHandler.class.php create mode 100644 lib/vendor/symfony/lib/config/sfYamlConfigHandler.class.php create mode 100644 lib/vendor/symfony/lib/controller/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/controller/.svn/entries create mode 100644 lib/vendor/symfony/lib/controller/.svn/prop-base/sfController.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/controller/.svn/prop-base/sfFrontWebController.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/controller/.svn/prop-base/sfWebController.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/controller/.svn/text-base/sfController.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/controller/.svn/text-base/sfFrontWebController.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/controller/.svn/text-base/sfWebController.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/controller/default/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/controller/default/.svn/entries create mode 100644 lib/vendor/symfony/lib/controller/default/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/controller/default/actions/.svn/entries create mode 100644 lib/vendor/symfony/lib/controller/default/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/controller/default/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/controller/default/actions/actions.class.php create mode 100644 lib/vendor/symfony/lib/controller/default/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/controller/default/templates/.svn/entries create mode 100644 lib/vendor/symfony/lib/controller/default/templates/.svn/prop-base/defaultLayout.php.svn-base create mode 100644 lib/vendor/symfony/lib/controller/default/templates/.svn/prop-base/disabledSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/controller/default/templates/.svn/prop-base/error404Success.php.svn-base create mode 100644 lib/vendor/symfony/lib/controller/default/templates/.svn/prop-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/controller/default/templates/.svn/prop-base/loginSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/controller/default/templates/.svn/prop-base/moduleSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/controller/default/templates/.svn/prop-base/secureSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/controller/default/templates/.svn/text-base/defaultLayout.php.svn-base create mode 100644 lib/vendor/symfony/lib/controller/default/templates/.svn/text-base/disabledSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/controller/default/templates/.svn/text-base/error404Success.php.svn-base create mode 100644 lib/vendor/symfony/lib/controller/default/templates/.svn/text-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/controller/default/templates/.svn/text-base/loginSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/controller/default/templates/.svn/text-base/moduleSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/controller/default/templates/.svn/text-base/secureSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/controller/default/templates/defaultLayout.php create mode 100644 lib/vendor/symfony/lib/controller/default/templates/disabledSuccess.php create mode 100644 lib/vendor/symfony/lib/controller/default/templates/error404Success.php create mode 100644 lib/vendor/symfony/lib/controller/default/templates/indexSuccess.php create mode 100644 lib/vendor/symfony/lib/controller/default/templates/loginSuccess.php create mode 100644 lib/vendor/symfony/lib/controller/default/templates/moduleSuccess.php create mode 100644 lib/vendor/symfony/lib/controller/default/templates/secureSuccess.php create mode 100644 lib/vendor/symfony/lib/controller/sfController.class.php create mode 100644 lib/vendor/symfony/lib/controller/sfFrontWebController.class.php create mode 100644 lib/vendor/symfony/lib/controller/sfWebController.class.php create mode 100644 lib/vendor/symfony/lib/database/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/database/.svn/entries create mode 100644 lib/vendor/symfony/lib/database/.svn/prop-base/sfDatabase.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/database/.svn/prop-base/sfDatabaseManager.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/database/.svn/prop-base/sfMySQLDatabase.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/database/.svn/prop-base/sfMySQLiDatabase.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/database/.svn/prop-base/sfPDODatabase.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/database/.svn/prop-base/sfPostgreSQLDatabase.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/database/.svn/text-base/sfDatabase.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/database/.svn/text-base/sfDatabaseManager.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/database/.svn/text-base/sfMySQLDatabase.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/database/.svn/text-base/sfMySQLiDatabase.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/database/.svn/text-base/sfPDODatabase.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/database/.svn/text-base/sfPostgreSQLDatabase.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/database/sfDatabase.class.php create mode 100644 lib/vendor/symfony/lib/database/sfDatabaseManager.class.php create mode 100644 lib/vendor/symfony/lib/database/sfMySQLDatabase.class.php create mode 100644 lib/vendor/symfony/lib/database/sfMySQLiDatabase.class.php create mode 100644 lib/vendor/symfony/lib/database/sfPDODatabase.class.php create mode 100644 lib/vendor/symfony/lib/database/sfPostgreSQLDatabase.class.php create mode 100644 lib/vendor/symfony/lib/debug/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/debug/.svn/entries create mode 100644 lib/vendor/symfony/lib/debug/.svn/prop-base/sfDebug.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/debug/.svn/prop-base/sfTimer.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/debug/.svn/prop-base/sfTimerManager.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/debug/.svn/prop-base/sfWebDebug.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/debug/.svn/prop-base/sfWebDebugPanel.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/debug/.svn/prop-base/sfWebDebugPanelCache.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/debug/.svn/prop-base/sfWebDebugPanelConfig.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/debug/.svn/prop-base/sfWebDebugPanelLogs.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/debug/.svn/prop-base/sfWebDebugPanelMailer.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/debug/.svn/prop-base/sfWebDebugPanelMemory.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/debug/.svn/prop-base/sfWebDebugPanelSymfonyVersion.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/debug/.svn/prop-base/sfWebDebugPanelTimer.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/debug/.svn/prop-base/sfWebDebugPanelView.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/debug/.svn/text-base/sfDebug.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/debug/.svn/text-base/sfTimer.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/debug/.svn/text-base/sfTimerManager.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/debug/.svn/text-base/sfWebDebug.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/debug/.svn/text-base/sfWebDebugPanel.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/debug/.svn/text-base/sfWebDebugPanelCache.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/debug/.svn/text-base/sfWebDebugPanelConfig.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/debug/.svn/text-base/sfWebDebugPanelLogs.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/debug/.svn/text-base/sfWebDebugPanelMailer.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/debug/.svn/text-base/sfWebDebugPanelMemory.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/debug/.svn/text-base/sfWebDebugPanelSymfonyVersion.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/debug/.svn/text-base/sfWebDebugPanelTimer.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/debug/.svn/text-base/sfWebDebugPanelView.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/debug/sfDebug.class.php create mode 100644 lib/vendor/symfony/lib/debug/sfTimer.class.php create mode 100644 lib/vendor/symfony/lib/debug/sfTimerManager.class.php create mode 100644 lib/vendor/symfony/lib/debug/sfWebDebug.class.php create mode 100644 lib/vendor/symfony/lib/debug/sfWebDebugPanel.class.php create mode 100644 lib/vendor/symfony/lib/debug/sfWebDebugPanelCache.class.php create mode 100644 lib/vendor/symfony/lib/debug/sfWebDebugPanelConfig.class.php create mode 100644 lib/vendor/symfony/lib/debug/sfWebDebugPanelLogs.class.php create mode 100644 lib/vendor/symfony/lib/debug/sfWebDebugPanelMailer.class.php create mode 100644 lib/vendor/symfony/lib/debug/sfWebDebugPanelMemory.class.php create mode 100644 lib/vendor/symfony/lib/debug/sfWebDebugPanelSymfonyVersion.class.php create mode 100644 lib/vendor/symfony/lib/debug/sfWebDebugPanelTimer.class.php create mode 100644 lib/vendor/symfony/lib/debug/sfWebDebugPanelView.class.php create mode 100644 lib/vendor/symfony/lib/escaper/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/escaper/.svn/entries create mode 100644 lib/vendor/symfony/lib/escaper/.svn/prop-base/sfOutputEscaper.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/escaper/.svn/prop-base/sfOutputEscaperArrayDecorator.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/escaper/.svn/prop-base/sfOutputEscaperGetterDecorator.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/escaper/.svn/prop-base/sfOutputEscaperIteratorDecorator.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/escaper/.svn/prop-base/sfOutputEscaperObjectDecorator.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/escaper/.svn/prop-base/sfOutputEscaperSafe.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/escaper/.svn/text-base/sfOutputEscaper.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/escaper/.svn/text-base/sfOutputEscaperArrayDecorator.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/escaper/.svn/text-base/sfOutputEscaperGetterDecorator.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/escaper/.svn/text-base/sfOutputEscaperIteratorDecorator.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/escaper/.svn/text-base/sfOutputEscaperObjectDecorator.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/escaper/.svn/text-base/sfOutputEscaperSafe.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/escaper/sfOutputEscaper.class.php create mode 100644 lib/vendor/symfony/lib/escaper/sfOutputEscaperArrayDecorator.class.php create mode 100644 lib/vendor/symfony/lib/escaper/sfOutputEscaperGetterDecorator.class.php create mode 100644 lib/vendor/symfony/lib/escaper/sfOutputEscaperIteratorDecorator.class.php create mode 100644 lib/vendor/symfony/lib/escaper/sfOutputEscaperObjectDecorator.class.php create mode 100644 lib/vendor/symfony/lib/escaper/sfOutputEscaperSafe.class.php create mode 100644 lib/vendor/symfony/lib/event_dispatcher/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/event_dispatcher/.svn/entries create mode 100644 lib/vendor/symfony/lib/event_dispatcher/.svn/text-base/sfEvent.php.svn-base create mode 100644 lib/vendor/symfony/lib/event_dispatcher/.svn/text-base/sfEventDispatcher.php.svn-base create mode 100644 lib/vendor/symfony/lib/event_dispatcher/sfEvent.php create mode 100644 lib/vendor/symfony/lib/event_dispatcher/sfEventDispatcher.php create mode 100644 lib/vendor/symfony/lib/exception/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/exception/.svn/entries create mode 100644 lib/vendor/symfony/lib/exception/.svn/prop-base/sfCacheException.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/.svn/prop-base/sfConfigurationException.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/.svn/prop-base/sfControllerException.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/.svn/prop-base/sfDatabaseException.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/.svn/prop-base/sfError404Exception.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/.svn/prop-base/sfException.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/.svn/prop-base/sfFactoryException.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/.svn/prop-base/sfFileException.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/.svn/prop-base/sfFilterException.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/.svn/prop-base/sfForwardException.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/.svn/prop-base/sfInitializationException.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/.svn/prop-base/sfParseException.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/.svn/prop-base/sfRenderException.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/.svn/prop-base/sfSecurityException.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/.svn/prop-base/sfStopException.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/.svn/prop-base/sfStorageException.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/.svn/prop-base/sfViewException.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/.svn/text-base/sfCacheException.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/.svn/text-base/sfConfigurationException.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/.svn/text-base/sfControllerException.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/.svn/text-base/sfDatabaseException.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/.svn/text-base/sfError404Exception.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/.svn/text-base/sfException.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/.svn/text-base/sfFactoryException.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/.svn/text-base/sfFileException.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/.svn/text-base/sfFilterException.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/.svn/text-base/sfForwardException.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/.svn/text-base/sfInitializationException.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/.svn/text-base/sfParseException.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/.svn/text-base/sfRenderException.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/.svn/text-base/sfSecurityException.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/.svn/text-base/sfStopException.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/.svn/text-base/sfStorageException.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/.svn/text-base/sfViewException.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/data/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/exception/data/.svn/entries create mode 100644 lib/vendor/symfony/lib/exception/data/.svn/prop-base/error.atom.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/data/.svn/prop-base/error.css.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/data/.svn/prop-base/error.html.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/data/.svn/prop-base/error.js.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/data/.svn/prop-base/error.json.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/data/.svn/prop-base/error.rdf.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/data/.svn/prop-base/error.txt.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/data/.svn/prop-base/error.xml.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/data/.svn/prop-base/exception.atom.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/data/.svn/prop-base/exception.css.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/data/.svn/prop-base/exception.html.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/data/.svn/prop-base/exception.js.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/data/.svn/prop-base/exception.json.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/data/.svn/prop-base/exception.rdf.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/data/.svn/prop-base/exception.txt.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/data/.svn/prop-base/exception.xml.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/data/.svn/prop-base/unavailable.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/data/.svn/text-base/error.atom.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/data/.svn/text-base/error.css.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/data/.svn/text-base/error.html.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/data/.svn/text-base/error.js.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/data/.svn/text-base/error.json.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/data/.svn/text-base/error.rdf.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/data/.svn/text-base/error.txt.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/data/.svn/text-base/error.xml.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/data/.svn/text-base/exception.atom.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/data/.svn/text-base/exception.css.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/data/.svn/text-base/exception.html.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/data/.svn/text-base/exception.js.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/data/.svn/text-base/exception.json.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/data/.svn/text-base/exception.rdf.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/data/.svn/text-base/exception.txt.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/data/.svn/text-base/exception.xml.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/data/.svn/text-base/unavailable.php.svn-base create mode 100644 lib/vendor/symfony/lib/exception/data/error.atom.php create mode 100644 lib/vendor/symfony/lib/exception/data/error.css.php create mode 100644 lib/vendor/symfony/lib/exception/data/error.html.php create mode 100644 lib/vendor/symfony/lib/exception/data/error.js.php create mode 100644 lib/vendor/symfony/lib/exception/data/error.json.php create mode 100644 lib/vendor/symfony/lib/exception/data/error.rdf.php create mode 100644 lib/vendor/symfony/lib/exception/data/error.txt.php create mode 100644 lib/vendor/symfony/lib/exception/data/error.xml.php create mode 100644 lib/vendor/symfony/lib/exception/data/exception.atom.php create mode 100644 lib/vendor/symfony/lib/exception/data/exception.css.php create mode 100644 lib/vendor/symfony/lib/exception/data/exception.html.php create mode 100644 lib/vendor/symfony/lib/exception/data/exception.js.php create mode 100644 lib/vendor/symfony/lib/exception/data/exception.json.php create mode 100644 lib/vendor/symfony/lib/exception/data/exception.rdf.php create mode 100644 lib/vendor/symfony/lib/exception/data/exception.txt.php create mode 100644 lib/vendor/symfony/lib/exception/data/exception.xml.php create mode 100644 lib/vendor/symfony/lib/exception/data/unavailable.php create mode 100644 lib/vendor/symfony/lib/exception/sfCacheException.class.php create mode 100644 lib/vendor/symfony/lib/exception/sfConfigurationException.class.php create mode 100644 lib/vendor/symfony/lib/exception/sfControllerException.class.php create mode 100644 lib/vendor/symfony/lib/exception/sfDatabaseException.class.php create mode 100644 lib/vendor/symfony/lib/exception/sfError404Exception.class.php create mode 100644 lib/vendor/symfony/lib/exception/sfException.class.php create mode 100644 lib/vendor/symfony/lib/exception/sfFactoryException.class.php create mode 100644 lib/vendor/symfony/lib/exception/sfFileException.class.php create mode 100644 lib/vendor/symfony/lib/exception/sfFilterException.class.php create mode 100644 lib/vendor/symfony/lib/exception/sfForwardException.class.php create mode 100644 lib/vendor/symfony/lib/exception/sfInitializationException.class.php create mode 100644 lib/vendor/symfony/lib/exception/sfParseException.class.php create mode 100644 lib/vendor/symfony/lib/exception/sfRenderException.class.php create mode 100644 lib/vendor/symfony/lib/exception/sfSecurityException.class.php create mode 100644 lib/vendor/symfony/lib/exception/sfStopException.class.php create mode 100644 lib/vendor/symfony/lib/exception/sfStorageException.class.php create mode 100644 lib/vendor/symfony/lib/exception/sfViewException.class.php create mode 100644 lib/vendor/symfony/lib/filter/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/filter/.svn/entries create mode 100644 lib/vendor/symfony/lib/filter/.svn/prop-base/sfBasicSecurityFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/filter/.svn/prop-base/sfCacheFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/filter/.svn/prop-base/sfExecutionFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/filter/.svn/prop-base/sfFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/filter/.svn/prop-base/sfFilterChain.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/filter/.svn/prop-base/sfRenderingFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/filter/.svn/text-base/sfBasicSecurityFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/filter/.svn/text-base/sfCacheFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/filter/.svn/text-base/sfCommonFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/filter/.svn/text-base/sfExecutionFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/filter/.svn/text-base/sfFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/filter/.svn/text-base/sfFilterChain.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/filter/.svn/text-base/sfRenderingFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/filter/sfBasicSecurityFilter.class.php create mode 100644 lib/vendor/symfony/lib/filter/sfCacheFilter.class.php create mode 100644 lib/vendor/symfony/lib/filter/sfCommonFilter.class.php create mode 100644 lib/vendor/symfony/lib/filter/sfExecutionFilter.class.php create mode 100644 lib/vendor/symfony/lib/filter/sfFilter.class.php create mode 100644 lib/vendor/symfony/lib/filter/sfFilterChain.class.php create mode 100644 lib/vendor/symfony/lib/filter/sfRenderingFilter.class.php create mode 100644 lib/vendor/symfony/lib/form/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/form/.svn/entries create mode 100644 lib/vendor/symfony/lib/form/.svn/prop-base/sfForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/form/.svn/prop-base/sfFormField.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/form/.svn/prop-base/sfFormFieldSchema.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/form/.svn/text-base/sfForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/form/.svn/text-base/sfFormField.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/form/.svn/text-base/sfFormFieldSchema.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/form/addon/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/form/addon/.svn/entries create mode 100644 lib/vendor/symfony/lib/form/addon/.svn/prop-base/sfFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/form/addon/.svn/prop-base/sfFormObject.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/form/addon/.svn/prop-base/sfFormSymfony.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/form/addon/.svn/text-base/sfFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/form/addon/.svn/text-base/sfFormObject.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/form/addon/.svn/text-base/sfFormSymfony.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/form/addon/sfFormFilter.class.php create mode 100644 lib/vendor/symfony/lib/form/addon/sfFormObject.class.php create mode 100644 lib/vendor/symfony/lib/form/addon/sfFormSymfony.class.php create mode 100644 lib/vendor/symfony/lib/form/sfForm.class.php create mode 100644 lib/vendor/symfony/lib/form/sfFormField.class.php create mode 100644 lib/vendor/symfony/lib/form/sfFormFieldSchema.class.php create mode 100644 lib/vendor/symfony/lib/generator/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/generator/.svn/entries create mode 100644 lib/vendor/symfony/lib/generator/.svn/prop-base/sfGenerator.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/generator/.svn/prop-base/sfGeneratorManager.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/generator/.svn/prop-base/sfModelGenerator.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/generator/.svn/prop-base/sfModelGeneratorConfiguration.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/generator/.svn/prop-base/sfModelGeneratorConfigurationField.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/generator/.svn/prop-base/sfModelGeneratorHelper.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/generator/.svn/text-base/sfGenerator.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/generator/.svn/text-base/sfGeneratorManager.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/generator/.svn/text-base/sfModelGenerator.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/generator/.svn/text-base/sfModelGeneratorConfiguration.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/generator/.svn/text-base/sfModelGeneratorConfigurationField.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/generator/.svn/text-base/sfModelGeneratorHelper.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/generator/sfGenerator.class.php create mode 100644 lib/vendor/symfony/lib/generator/sfGeneratorManager.class.php create mode 100644 lib/vendor/symfony/lib/generator/sfModelGenerator.class.php create mode 100644 lib/vendor/symfony/lib/generator/sfModelGeneratorConfiguration.class.php create mode 100644 lib/vendor/symfony/lib/generator/sfModelGeneratorConfigurationField.class.php create mode 100644 lib/vendor/symfony/lib/generator/sfModelGeneratorHelper.class.php create mode 100644 lib/vendor/symfony/lib/helper/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/helper/.svn/entries create mode 100644 lib/vendor/symfony/lib/helper/.svn/prop-base/AssetHelper.php.svn-base create mode 100644 lib/vendor/symfony/lib/helper/.svn/prop-base/CacheHelper.php.svn-base create mode 100644 lib/vendor/symfony/lib/helper/.svn/prop-base/DateHelper.php.svn-base create mode 100644 lib/vendor/symfony/lib/helper/.svn/prop-base/DebugHelper.php.svn-base create mode 100644 lib/vendor/symfony/lib/helper/.svn/prop-base/EscapingHelper.php.svn-base create mode 100644 lib/vendor/symfony/lib/helper/.svn/prop-base/HelperHelper.php.svn-base create mode 100644 lib/vendor/symfony/lib/helper/.svn/prop-base/I18NHelper.php.svn-base create mode 100644 lib/vendor/symfony/lib/helper/.svn/prop-base/JavascriptBaseHelper.php.svn-base create mode 100644 lib/vendor/symfony/lib/helper/.svn/prop-base/NumberHelper.php.svn-base create mode 100644 lib/vendor/symfony/lib/helper/.svn/prop-base/PartialHelper.php.svn-base create mode 100644 lib/vendor/symfony/lib/helper/.svn/prop-base/TagHelper.php.svn-base create mode 100644 lib/vendor/symfony/lib/helper/.svn/prop-base/TextHelper.php.svn-base create mode 100644 lib/vendor/symfony/lib/helper/.svn/prop-base/UrlHelper.php.svn-base create mode 100644 lib/vendor/symfony/lib/helper/.svn/text-base/AssetHelper.php.svn-base create mode 100644 lib/vendor/symfony/lib/helper/.svn/text-base/CacheHelper.php.svn-base create mode 100644 lib/vendor/symfony/lib/helper/.svn/text-base/DateHelper.php.svn-base create mode 100644 lib/vendor/symfony/lib/helper/.svn/text-base/DebugHelper.php.svn-base create mode 100644 lib/vendor/symfony/lib/helper/.svn/text-base/EscapingHelper.php.svn-base create mode 100644 lib/vendor/symfony/lib/helper/.svn/text-base/HelperHelper.php.svn-base create mode 100644 lib/vendor/symfony/lib/helper/.svn/text-base/I18NHelper.php.svn-base create mode 100644 lib/vendor/symfony/lib/helper/.svn/text-base/JavascriptBaseHelper.php.svn-base create mode 100644 lib/vendor/symfony/lib/helper/.svn/text-base/NumberHelper.php.svn-base create mode 100644 lib/vendor/symfony/lib/helper/.svn/text-base/PartialHelper.php.svn-base create mode 100644 lib/vendor/symfony/lib/helper/.svn/text-base/TagHelper.php.svn-base create mode 100644 lib/vendor/symfony/lib/helper/.svn/text-base/TextHelper.php.svn-base create mode 100644 lib/vendor/symfony/lib/helper/.svn/text-base/UrlHelper.php.svn-base create mode 100644 lib/vendor/symfony/lib/helper/AssetHelper.php create mode 100644 lib/vendor/symfony/lib/helper/CacheHelper.php create mode 100644 lib/vendor/symfony/lib/helper/DateHelper.php create mode 100644 lib/vendor/symfony/lib/helper/DebugHelper.php create mode 100644 lib/vendor/symfony/lib/helper/EscapingHelper.php create mode 100644 lib/vendor/symfony/lib/helper/HelperHelper.php create mode 100644 lib/vendor/symfony/lib/helper/I18NHelper.php create mode 100644 lib/vendor/symfony/lib/helper/JavascriptBaseHelper.php create mode 100644 lib/vendor/symfony/lib/helper/NumberHelper.php create mode 100644 lib/vendor/symfony/lib/helper/PartialHelper.php create mode 100644 lib/vendor/symfony/lib/helper/TagHelper.php create mode 100644 lib/vendor/symfony/lib/helper/TextHelper.php create mode 100644 lib/vendor/symfony/lib/helper/UrlHelper.php create mode 100644 lib/vendor/symfony/lib/i18n/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/i18n/.svn/entries create mode 100644 lib/vendor/symfony/lib/i18n/.svn/prop-base/sfChoiceFormat.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/.svn/prop-base/sfCultureInfo.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/.svn/prop-base/sfDateFormat.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/.svn/prop-base/sfDateTimeFormatInfo.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/.svn/prop-base/sfI18N.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/.svn/prop-base/sfIMessageSource.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/.svn/prop-base/sfMessageFormat.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/.svn/prop-base/sfMessageSource.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/.svn/prop-base/sfMessageSource_Aggregate.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/.svn/prop-base/sfMessageSource_Database.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/.svn/prop-base/sfMessageSource_File.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/.svn/prop-base/sfMessageSource_MySQL.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/.svn/prop-base/sfMessageSource_SQLite.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/.svn/prop-base/sfMessageSource_XLIFF.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/.svn/prop-base/sfMessageSource_gettext.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/.svn/prop-base/sfNumberFormat.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/.svn/prop-base/sfNumberFormatInfo.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/.svn/text-base/sfChoiceFormat.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/.svn/text-base/sfCultureInfo.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/.svn/text-base/sfDateFormat.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/.svn/text-base/sfDateTimeFormatInfo.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/.svn/text-base/sfI18N.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/.svn/text-base/sfIMessageSource.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/.svn/text-base/sfMessageFormat.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/.svn/text-base/sfMessageSource.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/.svn/text-base/sfMessageSource_Aggregate.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/.svn/text-base/sfMessageSource_Database.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/.svn/text-base/sfMessageSource_File.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/.svn/text-base/sfMessageSource_MySQL.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/.svn/text-base/sfMessageSource_SQLite.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/.svn/text-base/sfMessageSource_XLIFF.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/.svn/text-base/sfMessageSource_gettext.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/.svn/text-base/sfNumberFormat.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/.svn/text-base/sfNumberFormatInfo.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/Gettext/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/i18n/Gettext/.svn/entries create mode 100644 lib/vendor/symfony/lib/i18n/Gettext/.svn/prop-base/MO.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/Gettext/.svn/prop-base/PO.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/Gettext/.svn/prop-base/TGettext.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/Gettext/.svn/text-base/MO.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/Gettext/.svn/text-base/PO.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/Gettext/.svn/text-base/TGettext.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/Gettext/MO.php create mode 100644 lib/vendor/symfony/lib/i18n/Gettext/PO.php create mode 100644 lib/vendor/symfony/lib/i18n/Gettext/TGettext.class.php create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/entries create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/af.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/af_NA.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/af_ZA.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/am.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/am_ET.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ar.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ar_AE.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ar_BH.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ar_DZ.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ar_EG.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ar_IQ.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ar_JO.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ar_KW.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ar_LB.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ar_LY.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ar_MA.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ar_OM.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ar_QA.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ar_SA.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ar_SD.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ar_SY.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ar_TN.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ar_YE.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/as.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/as_IN.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/az.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/az_AZ.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/az_Cyrl.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/az_Cyrl_AZ.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/az_Latn.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/az_Latn_AZ.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/be.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/be_BY.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/bg.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/bg_BG.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/bn.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/bn_BD.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/bn_IN.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/bo.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/bo_CN.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/bo_IN.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ca.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ca_ES.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/cs.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/cs_CZ.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/cy.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/cy_GB.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/da.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/da_DK.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/de.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/de_AT.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/de_BE.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/de_CH.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/de_DE.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/de_LI.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/de_LU.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/el.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/el_CY.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/el_GR.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/en.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/en_AU.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/en_BE.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/en_BW.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/en_BZ.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/en_CA.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/en_GB.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/en_HK.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/en_IE.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/en_IN.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/en_JM.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/en_MH.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/en_MT.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/en_NA.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/en_NZ.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/en_PH.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/en_PK.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/en_RH.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/en_SG.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/en_TT.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/en_US.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/en_US_POSIX.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/en_VI.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/en_ZA.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/en_ZW.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/eo.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/es.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/es_AR.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/es_BO.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/es_CL.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/es_CO.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/es_CR.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/es_DO.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/es_EC.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/es_ES.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/es_GT.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/es_HN.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/es_MX.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/es_NI.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/es_PA.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/es_PE.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/es_PR.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/es_PY.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/es_SV.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/es_US.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/es_UY.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/es_VE.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/et.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/et_EE.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/eu.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/eu_ES.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/fa.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/fa_AF.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/fa_IR.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/fi.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/fi_FI.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/fo.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/fo_FO.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/fr.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/fr_BE.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/fr_CA.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/fr_CH.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/fr_FR.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/fr_LU.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/fr_MC.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/fr_SN.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ga.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ga_IE.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/gl.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/gl_ES.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/gsw.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/gsw_CH.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/gu.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/gu_IN.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/gv.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/gv_GB.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ha.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ha_GH.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ha_Latn.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ha_Latn_GH.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ha_Latn_NE.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ha_Latn_NG.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ha_NE.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ha_NG.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/haw.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/haw_US.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/he.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/he2.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/he_IL.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/hi.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/hi_IN.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/hr.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/hr_HR.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/hu.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/hu_HU.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/hy.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/hy_AM.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/hy_AM_REVISED.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/id.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/id_ID.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ii.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ii_CN.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/in.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/in_ID.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/is.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/is_IS.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/it.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/it_CH.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/it_IT.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/iw.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/iw_IL.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ja.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ja_JP.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ja_JP_TRADITIONAL.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ka.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ka_GE.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/kk.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/kk_Cyrl.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/kk_Cyrl_KZ.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/kk_KZ.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/kl.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/kl_GL.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/km.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/km_KH.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/kn.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/kn_IN.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ko.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ko_KR.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/kok.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/kok_IN.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/kw.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/kw_GB.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/lt.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/lt_LT.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/lv.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/lv_LV.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/mk.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/mk_MK.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ml.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ml_IN.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/mr.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/mr_IN.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ms.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ms_BN.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ms_MY.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/mt.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/mt_MT.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/nb.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/nb_NO.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ne.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ne_IN.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ne_NP.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/nl.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/nl_BE.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/nl_NL.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/nn.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/nn_NO.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/no.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/no_NO.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/no_NO_NY.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/om.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/om_ET.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/om_KE.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/or.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/or_IN.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/pa.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/pa_Arab.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/pa_Arab_PK.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/pa_Guru.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/pa_Guru_IN.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/pa_IN.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/pa_PK.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/pl.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/pl_PL.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ps.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ps_AF.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/pt.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/pt_BR.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/pt_PT.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ro.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ro_MD.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ro_RO.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/root.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ru.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ru_RU.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ru_UA.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/sh.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/sh_BA.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/sh_CS.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/sh_YU.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/si.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/si_LK.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/sk.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/sk_SK.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/sl.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/sl_SI.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/so.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/so_DJ.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/so_ET.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/so_KE.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/so_SO.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/sq.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/sq_AL.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/sr.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/sr_BA.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/sr_CS.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/sr_Cyrl.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/sr_Cyrl_BA.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/sr_Cyrl_CS.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/sr_Cyrl_ME.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/sr_Cyrl_RS.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/sr_Cyrl_YU.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/sr_Latn.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/sr_Latn_BA.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/sr_Latn_CS.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/sr_Latn_ME.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/sr_Latn_RS.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/sr_Latn_YU.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/sr_ME.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/sr_RS.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/sr_YU.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/sv.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/sv_FI.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/sv_SE.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/sw.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/sw_KE.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/sw_TZ.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ta.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ta_IN.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/te.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/te_IN.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/th.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/th_TH.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/th_TH_TRADITIONAL.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ti.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ti_ER.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ti_ET.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/tr.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/tr_TR.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/uk.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/uk_UA.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ur.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ur_IN.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/ur_PK.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/uz.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/uz_AF.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/uz_Arab.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/uz_Arab_AF.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/uz_Cyrl.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/uz_Cyrl_UZ.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/uz_Latn.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/uz_Latn_UZ.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/uz_UZ.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/vi.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/vi_VN.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/zh.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/zh_CN.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/zh_HK.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/zh_Hans.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/zh_Hans_CN.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/zh_Hans_HK.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/zh_Hans_MO.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/zh_Hans_SG.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/zh_Hant.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/zh_Hant_HK.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/zh_Hant_MO.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/zh_Hant_TW.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/zh_MO.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/zh_SG.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/zh_TW.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/zu.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/.svn/text-base/zu_ZA.dat.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/data/af.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/af_NA.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/af_ZA.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/am.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/am_ET.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ar.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ar_AE.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ar_BH.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ar_DZ.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ar_EG.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ar_IQ.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ar_JO.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ar_KW.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ar_LB.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ar_LY.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ar_MA.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ar_OM.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ar_QA.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ar_SA.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ar_SD.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ar_SY.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ar_TN.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ar_YE.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/as.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/as_IN.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/az.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/az_AZ.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/az_Cyrl.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/az_Cyrl_AZ.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/az_Latn.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/az_Latn_AZ.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/be.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/be_BY.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/bg.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/bg_BG.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/bn.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/bn_BD.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/bn_IN.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/bo.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/bo_CN.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/bo_IN.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ca.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ca_ES.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/cs.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/cs_CZ.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/cy.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/cy_GB.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/da.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/da_DK.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/de.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/de_AT.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/de_BE.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/de_CH.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/de_DE.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/de_LI.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/de_LU.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/el.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/el_CY.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/el_GR.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/en.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/en_AU.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/en_BE.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/en_BW.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/en_BZ.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/en_CA.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/en_GB.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/en_HK.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/en_IE.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/en_IN.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/en_JM.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/en_MH.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/en_MT.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/en_NA.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/en_NZ.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/en_PH.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/en_PK.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/en_RH.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/en_SG.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/en_TT.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/en_US.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/en_US_POSIX.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/en_VI.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/en_ZA.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/en_ZW.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/eo.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/es.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/es_AR.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/es_BO.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/es_CL.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/es_CO.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/es_CR.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/es_DO.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/es_EC.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/es_ES.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/es_GT.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/es_HN.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/es_MX.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/es_NI.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/es_PA.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/es_PE.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/es_PR.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/es_PY.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/es_SV.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/es_US.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/es_UY.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/es_VE.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/et.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/et_EE.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/eu.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/eu_ES.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/fa.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/fa_AF.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/fa_IR.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/fi.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/fi_FI.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/fo.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/fo_FO.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/fr.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/fr_BE.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/fr_CA.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/fr_CH.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/fr_FR.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/fr_LU.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/fr_MC.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/fr_SN.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ga.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ga_IE.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/gl.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/gl_ES.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/gsw.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/gsw_CH.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/gu.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/gu_IN.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/gv.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/gv_GB.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ha.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ha_GH.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ha_Latn.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ha_Latn_GH.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ha_Latn_NE.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ha_Latn_NG.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ha_NE.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ha_NG.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/haw.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/haw_US.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/he.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/he2.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/he_IL.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/hi.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/hi_IN.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/hr.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/hr_HR.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/hu.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/hu_HU.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/hy.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/hy_AM.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/hy_AM_REVISED.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/id.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/id_ID.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ii.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ii_CN.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/in.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/in_ID.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/is.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/is_IS.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/it.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/it_CH.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/it_IT.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/iw.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/iw_IL.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ja.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ja_JP.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ja_JP_TRADITIONAL.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ka.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ka_GE.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/kk.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/kk_Cyrl.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/kk_Cyrl_KZ.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/kk_KZ.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/kl.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/kl_GL.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/km.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/km_KH.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/kn.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/kn_IN.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ko.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ko_KR.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/kok.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/kok_IN.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/kw.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/kw_GB.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/lt.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/lt_LT.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/lv.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/lv_LV.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/mk.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/mk_MK.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ml.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ml_IN.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/mr.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/mr_IN.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ms.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ms_BN.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ms_MY.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/mt.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/mt_MT.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/nb.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/nb_NO.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ne.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ne_IN.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ne_NP.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/nl.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/nl_BE.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/nl_NL.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/nn.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/nn_NO.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/no.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/no_NO.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/no_NO_NY.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/om.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/om_ET.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/om_KE.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/or.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/or_IN.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/pa.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/pa_Arab.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/pa_Arab_PK.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/pa_Guru.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/pa_Guru_IN.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/pa_IN.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/pa_PK.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/pl.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/pl_PL.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ps.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ps_AF.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/pt.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/pt_BR.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/pt_PT.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ro.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ro_MD.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ro_RO.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/root.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ru.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ru_RU.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ru_UA.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/sh.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/sh_BA.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/sh_CS.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/sh_YU.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/si.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/si_LK.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/sk.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/sk_SK.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/sl.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/sl_SI.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/so.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/so_DJ.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/so_ET.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/so_KE.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/so_SO.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/sq.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/sq_AL.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/sr.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/sr_BA.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/sr_CS.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/sr_Cyrl.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/sr_Cyrl_BA.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/sr_Cyrl_CS.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/sr_Cyrl_ME.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/sr_Cyrl_RS.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/sr_Cyrl_YU.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/sr_Latn.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/sr_Latn_BA.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/sr_Latn_CS.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/sr_Latn_ME.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/sr_Latn_RS.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/sr_Latn_YU.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/sr_ME.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/sr_RS.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/sr_YU.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/sv.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/sv_FI.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/sv_SE.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/sw.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/sw_KE.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/sw_TZ.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ta.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ta_IN.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/te.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/te_IN.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/th.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/th_TH.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/th_TH_TRADITIONAL.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ti.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ti_ER.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ti_ET.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/tr.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/tr_TR.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/uk.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/uk_UA.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ur.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ur_IN.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/ur_PK.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/uz.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/uz_AF.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/uz_Arab.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/uz_Arab_AF.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/uz_Cyrl.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/uz_Cyrl_UZ.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/uz_Latn.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/uz_Latn_UZ.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/uz_UZ.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/vi.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/vi_VN.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/zh.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/zh_CN.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/zh_HK.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/zh_Hans.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/zh_Hans_CN.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/zh_Hans_HK.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/zh_Hans_MO.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/zh_Hans_SG.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/zh_Hant.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/zh_Hant_HK.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/zh_Hant_MO.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/zh_Hant_TW.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/zh_MO.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/zh_SG.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/zh_TW.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/zu.dat create mode 100644 lib/vendor/symfony/lib/i18n/data/zu_ZA.dat create mode 100644 lib/vendor/symfony/lib/i18n/extract/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/i18n/extract/.svn/entries create mode 100644 lib/vendor/symfony/lib/i18n/extract/.svn/prop-base/sfI18nApplicationExtract.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/extract/.svn/prop-base/sfI18nExtract.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/extract/.svn/prop-base/sfI18nExtractorInterface.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/extract/.svn/prop-base/sfI18nModuleExtract.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/extract/.svn/prop-base/sfI18nPhpExtractor.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/extract/.svn/prop-base/sfI18nYamlExtractor.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/extract/.svn/prop-base/sfI18nYamlGeneratorExtractor.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/extract/.svn/prop-base/sfI18nYamlValidateExtractor.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/extract/.svn/text-base/sfI18nApplicationExtract.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/extract/.svn/text-base/sfI18nExtract.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/extract/.svn/text-base/sfI18nExtractorInterface.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/extract/.svn/text-base/sfI18nModuleExtract.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/extract/.svn/text-base/sfI18nPhpExtractor.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/extract/.svn/text-base/sfI18nYamlExtractor.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/extract/.svn/text-base/sfI18nYamlGeneratorExtractor.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/extract/.svn/text-base/sfI18nYamlValidateExtractor.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/i18n/extract/sfI18nApplicationExtract.class.php create mode 100644 lib/vendor/symfony/lib/i18n/extract/sfI18nExtract.class.php create mode 100644 lib/vendor/symfony/lib/i18n/extract/sfI18nExtractorInterface.class.php create mode 100644 lib/vendor/symfony/lib/i18n/extract/sfI18nModuleExtract.class.php create mode 100644 lib/vendor/symfony/lib/i18n/extract/sfI18nPhpExtractor.class.php create mode 100644 lib/vendor/symfony/lib/i18n/extract/sfI18nYamlExtractor.class.php create mode 100644 lib/vendor/symfony/lib/i18n/extract/sfI18nYamlGeneratorExtractor.class.php create mode 100644 lib/vendor/symfony/lib/i18n/extract/sfI18nYamlValidateExtractor.class.php create mode 100644 lib/vendor/symfony/lib/i18n/sfChoiceFormat.class.php create mode 100644 lib/vendor/symfony/lib/i18n/sfCultureInfo.class.php create mode 100644 lib/vendor/symfony/lib/i18n/sfDateFormat.class.php create mode 100644 lib/vendor/symfony/lib/i18n/sfDateTimeFormatInfo.class.php create mode 100644 lib/vendor/symfony/lib/i18n/sfI18N.class.php create mode 100644 lib/vendor/symfony/lib/i18n/sfIMessageSource.class.php create mode 100644 lib/vendor/symfony/lib/i18n/sfMessageFormat.class.php create mode 100644 lib/vendor/symfony/lib/i18n/sfMessageSource.class.php create mode 100644 lib/vendor/symfony/lib/i18n/sfMessageSource_Aggregate.class.php create mode 100644 lib/vendor/symfony/lib/i18n/sfMessageSource_Database.class.php create mode 100644 lib/vendor/symfony/lib/i18n/sfMessageSource_File.class.php create mode 100644 lib/vendor/symfony/lib/i18n/sfMessageSource_MySQL.class.php create mode 100644 lib/vendor/symfony/lib/i18n/sfMessageSource_SQLite.class.php create mode 100644 lib/vendor/symfony/lib/i18n/sfMessageSource_XLIFF.class.php create mode 100644 lib/vendor/symfony/lib/i18n/sfMessageSource_gettext.class.php create mode 100644 lib/vendor/symfony/lib/i18n/sfNumberFormat.class.php create mode 100644 lib/vendor/symfony/lib/i18n/sfNumberFormatInfo.class.php create mode 100644 lib/vendor/symfony/lib/log/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/log/.svn/entries create mode 100644 lib/vendor/symfony/lib/log/.svn/prop-base/sfAggregateLogger.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/log/.svn/prop-base/sfConsoleLogger.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/log/.svn/prop-base/sfFileLogger.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/log/.svn/prop-base/sfLogger.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/log/.svn/prop-base/sfLoggerInterface.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/log/.svn/prop-base/sfLoggerWrapper.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/log/.svn/prop-base/sfNoLogger.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/log/.svn/prop-base/sfStreamLogger.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/log/.svn/prop-base/sfVarLogger.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/log/.svn/prop-base/sfWebDebugLogger.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/log/.svn/text-base/sfAggregateLogger.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/log/.svn/text-base/sfConsoleLogger.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/log/.svn/text-base/sfFileLogger.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/log/.svn/text-base/sfLogger.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/log/.svn/text-base/sfLoggerInterface.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/log/.svn/text-base/sfLoggerWrapper.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/log/.svn/text-base/sfNoLogger.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/log/.svn/text-base/sfStreamLogger.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/log/.svn/text-base/sfVarLogger.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/log/.svn/text-base/sfWebDebugLogger.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/log/sfAggregateLogger.class.php create mode 100644 lib/vendor/symfony/lib/log/sfConsoleLogger.class.php create mode 100644 lib/vendor/symfony/lib/log/sfFileLogger.class.php create mode 100644 lib/vendor/symfony/lib/log/sfLogger.class.php create mode 100644 lib/vendor/symfony/lib/log/sfLoggerInterface.class.php create mode 100644 lib/vendor/symfony/lib/log/sfLoggerWrapper.class.php create mode 100644 lib/vendor/symfony/lib/log/sfNoLogger.class.php create mode 100644 lib/vendor/symfony/lib/log/sfStreamLogger.class.php create mode 100644 lib/vendor/symfony/lib/log/sfVarLogger.class.php create mode 100644 lib/vendor/symfony/lib/log/sfWebDebugLogger.class.php create mode 100644 lib/vendor/symfony/lib/mailer/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/mailer/.svn/entries create mode 100644 lib/vendor/symfony/lib/mailer/.svn/prop-base/sfMailer.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/mailer/.svn/prop-base/sfMailerMessageLoggerPlugin.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/mailer/.svn/text-base/sfMailer.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/mailer/.svn/text-base/sfMailerMessageLoggerPlugin.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/mailer/sfMailer.class.php create mode 100644 lib/vendor/symfony/lib/mailer/sfMailerMessageLoggerPlugin.class.php create mode 100644 lib/vendor/symfony/lib/plugin/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugin/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugin/.svn/prop-base/sfPearConfig.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugin/.svn/prop-base/sfPearDownloader.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugin/.svn/prop-base/sfPearEnvironment.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugin/.svn/prop-base/sfPearFrontendPlugin.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugin/.svn/prop-base/sfPearRest.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugin/.svn/prop-base/sfPearRest10.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugin/.svn/prop-base/sfPearRest11.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugin/.svn/prop-base/sfPearRestPlugin.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugin/.svn/prop-base/sfPluginDependencyException.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugin/.svn/prop-base/sfPluginException.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugin/.svn/prop-base/sfPluginManager.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugin/.svn/prop-base/sfPluginRecursiveDependencyException.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugin/.svn/prop-base/sfPluginRestException.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugin/.svn/prop-base/sfSymfonyPluginManager.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugin/.svn/text-base/sfPearConfig.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugin/.svn/text-base/sfPearDownloader.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugin/.svn/text-base/sfPearEnvironment.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugin/.svn/text-base/sfPearFrontendPlugin.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugin/.svn/text-base/sfPearRest.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugin/.svn/text-base/sfPearRest10.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugin/.svn/text-base/sfPearRest11.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugin/.svn/text-base/sfPearRestPlugin.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugin/.svn/text-base/sfPluginDependencyException.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugin/.svn/text-base/sfPluginException.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugin/.svn/text-base/sfPluginManager.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugin/.svn/text-base/sfPluginRecursiveDependencyException.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugin/.svn/text-base/sfPluginRestException.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugin/.svn/text-base/sfSymfonyPluginManager.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugin/sfPearConfig.class.php create mode 100644 lib/vendor/symfony/lib/plugin/sfPearDownloader.class.php create mode 100644 lib/vendor/symfony/lib/plugin/sfPearEnvironment.class.php create mode 100644 lib/vendor/symfony/lib/plugin/sfPearFrontendPlugin.class.php create mode 100644 lib/vendor/symfony/lib/plugin/sfPearRest.class.php create mode 100644 lib/vendor/symfony/lib/plugin/sfPearRest10.class.php create mode 100644 lib/vendor/symfony/lib/plugin/sfPearRest11.class.php create mode 100644 lib/vendor/symfony/lib/plugin/sfPearRestPlugin.class.php create mode 100644 lib/vendor/symfony/lib/plugin/sfPluginDependencyException.class.php create mode 100644 lib/vendor/symfony/lib/plugin/sfPluginException.class.php create mode 100644 lib/vendor/symfony/lib/plugin/sfPluginManager.class.php create mode 100644 lib/vendor/symfony/lib/plugin/sfPluginRecursiveDependencyException.class.php create mode 100644 lib/vendor/symfony/lib/plugin/sfPluginRestException.class.php create mode 100644 lib/vendor/symfony/lib/plugin/sfSymfonyPluginManager.class.php create mode 100644 lib/vendor/symfony/lib/plugins/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/.svn/dir-prop-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/.svn/prop-base/LICENSE.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/.svn/text-base/LICENSE.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/LICENSE create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/config/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/config/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/config/.svn/prop-base/autoload.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/config/.svn/prop-base/installer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/config/.svn/prop-base/sfDoctrinePluginConfiguration.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/config/.svn/text-base/autoload.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/config/.svn/text-base/installer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/config/.svn/text-base/sfDoctrinePluginConfiguration.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/config/autoload.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/config/installer.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/config/sfDoctrinePluginConfiguration.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/config/skeleton/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/config/skeleton/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/config/skeleton/config/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/config/skeleton/config/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/config/skeleton/config/.svn/text-base/databases.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/config/skeleton/config/databases.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/config/skeleton/config/doctrine/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/config/skeleton/config/doctrine/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/config/skeleton/config/doctrine/.svn/text-base/schema.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/config/skeleton/config/doctrine/schema.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineForm/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineForm/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineForm/default/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineForm/default/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineForm/default/template/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineForm/default/template/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineForm/default/template/.svn/prop-base/sfDoctrineFormBaseTemplate.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineForm/default/template/.svn/prop-base/sfDoctrineFormGeneratedInheritanceTemplate.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineForm/default/template/.svn/prop-base/sfDoctrineFormGeneratedTemplate.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineForm/default/template/.svn/prop-base/sfDoctrineFormPluginTemplate.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineForm/default/template/.svn/prop-base/sfDoctrineFormTemplate.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineForm/default/template/.svn/prop-base/sfDoctrinePluginFormTemplate.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineForm/default/template/.svn/text-base/sfDoctrineFormBaseTemplate.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineForm/default/template/.svn/text-base/sfDoctrineFormGeneratedInheritanceTemplate.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineForm/default/template/.svn/text-base/sfDoctrineFormGeneratedTemplate.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineForm/default/template/.svn/text-base/sfDoctrineFormPluginTemplate.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineForm/default/template/.svn/text-base/sfDoctrineFormTemplate.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineForm/default/template/.svn/text-base/sfDoctrinePluginFormTemplate.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineForm/default/template/sfDoctrineFormBaseTemplate.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineForm/default/template/sfDoctrineFormGeneratedInheritanceTemplate.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineForm/default/template/sfDoctrineFormGeneratedTemplate.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineForm/default/template/sfDoctrineFormPluginTemplate.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineForm/default/template/sfDoctrineFormTemplate.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineForm/default/template/sfDoctrinePluginFormTemplate.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineFormFilter/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineFormFilter/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineFormFilter/default/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineFormFilter/default/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineFormFilter/default/template/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineFormFilter/default/template/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineFormFilter/default/template/.svn/prop-base/sfDoctrineFormFilterBaseTemplate.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineFormFilter/default/template/.svn/prop-base/sfDoctrineFormFilterGeneratedInheritanceTemplate.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineFormFilter/default/template/.svn/prop-base/sfDoctrineFormFilterGeneratedTemplate.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineFormFilter/default/template/.svn/prop-base/sfDoctrineFormFilterPluginTemplate.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineFormFilter/default/template/.svn/prop-base/sfDoctrineFormFilterTemplate.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineFormFilter/default/template/.svn/prop-base/sfDoctrinePluginFormFilterTemplate.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineFormFilter/default/template/.svn/text-base/sfDoctrineFormFilterBaseTemplate.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineFormFilter/default/template/.svn/text-base/sfDoctrineFormFilterGeneratedInheritanceTemplate.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineFormFilter/default/template/.svn/text-base/sfDoctrineFormFilterGeneratedTemplate.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineFormFilter/default/template/.svn/text-base/sfDoctrineFormFilterPluginTemplate.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineFormFilter/default/template/.svn/text-base/sfDoctrineFormFilterTemplate.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineFormFilter/default/template/.svn/text-base/sfDoctrinePluginFormFilterTemplate.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineFormFilter/default/template/sfDoctrineFormFilterBaseTemplate.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineFormFilter/default/template/sfDoctrineFormFilterGeneratedInheritanceTemplate.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineFormFilter/default/template/sfDoctrineFormFilterGeneratedTemplate.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineFormFilter/default/template/sfDoctrineFormFilterPluginTemplate.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineFormFilter/default/template/sfDoctrineFormFilterTemplate.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineFormFilter/default/template/sfDoctrinePluginFormFilterTemplate.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/.svn/prop-base/actionsConfiguration.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/.svn/prop-base/batchAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/.svn/prop-base/configuration.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/.svn/prop-base/createAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/.svn/prop-base/deleteAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/.svn/prop-base/editAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/.svn/prop-base/fieldsConfiguration.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/.svn/prop-base/filterAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/.svn/prop-base/filtersAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/.svn/prop-base/indexAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/.svn/prop-base/newAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/.svn/prop-base/paginationAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/.svn/prop-base/paginationConfiguration.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/.svn/prop-base/processFormAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/.svn/prop-base/sortingAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/.svn/prop-base/sortingConfiguration.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/.svn/prop-base/updateAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/.svn/text-base/actionsConfiguration.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/.svn/text-base/batchAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/.svn/text-base/configuration.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/.svn/text-base/createAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/.svn/text-base/deleteAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/.svn/text-base/editAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/.svn/text-base/fieldsConfiguration.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/.svn/text-base/filterAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/.svn/text-base/filtersAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/.svn/text-base/indexAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/.svn/text-base/newAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/.svn/text-base/paginationAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/.svn/text-base/paginationConfiguration.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/.svn/text-base/processFormAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/.svn/text-base/sortingAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/.svn/text-base/sortingConfiguration.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/.svn/text-base/updateAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/actionsConfiguration.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/batchAction.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/configuration.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/createAction.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/deleteAction.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/editAction.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/fieldsConfiguration.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/filterAction.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/filtersAction.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/indexAction.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/newAction.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/paginationAction.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/paginationConfiguration.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/processFormAction.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/sortingAction.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/sortingConfiguration.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/updateAction.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/skeleton/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/skeleton/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/skeleton/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/skeleton/actions/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/skeleton/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/skeleton/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/skeleton/actions/actions.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/skeleton/config/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/skeleton/config/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/skeleton/config/.svn/text-base/generator.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/skeleton/config/generator.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/skeleton/lib/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/skeleton/lib/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/skeleton/lib/.svn/prop-base/configuration.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/skeleton/lib/.svn/prop-base/helper.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/skeleton/lib/.svn/text-base/configuration.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/skeleton/lib/.svn/text-base/helper.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/skeleton/lib/configuration.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/skeleton/lib/helper.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/skeleton/templates/.sf create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/skeleton/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/skeleton/templates/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/skeleton/templates/.svn/text-base/.sf.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/actions/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/actions/actions.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/lib/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/lib/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/lib/.svn/prop-base/helper.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/lib/.svn/text-base/helper.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/lib/helper.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/prop-base/_assets.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/prop-base/_filters.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/prop-base/_filters_field.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/prop-base/_flashes.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/prop-base/_form.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/prop-base/_form_actions.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/prop-base/_form_field.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/prop-base/_form_fieldset.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/prop-base/_form_footer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/prop-base/_form_header.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/prop-base/_list.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/prop-base/_list_actions.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/prop-base/_list_batch_actions.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/prop-base/_list_field_boolean.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/prop-base/_list_footer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/prop-base/_list_header.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/prop-base/_list_td_actions.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/prop-base/_list_td_batch_actions.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/prop-base/_list_td_stacked.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/prop-base/_list_td_tabular.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/prop-base/_list_th_stacked.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/prop-base/_list_th_tabular.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/prop-base/_pagination.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/prop-base/editSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/prop-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/prop-base/newSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/text-base/_assets.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/text-base/_filters.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/text-base/_filters_field.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/text-base/_flashes.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/text-base/_form.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/text-base/_form_actions.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/text-base/_form_field.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/text-base/_form_fieldset.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/text-base/_form_footer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/text-base/_form_header.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/text-base/_list.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/text-base/_list_actions.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/text-base/_list_batch_actions.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/text-base/_list_field_boolean.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/text-base/_list_footer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/text-base/_list_header.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/text-base/_list_td_actions.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/text-base/_list_td_batch_actions.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/text-base/_list_td_stacked.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/text-base/_list_td_tabular.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/text-base/_list_th_stacked.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/text-base/_list_th_tabular.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/text-base/_pagination.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/text-base/editSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/text-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/.svn/text-base/newSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/_assets.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/_filters.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/_filters_field.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/_flashes.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/_form.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/_form_actions.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/_form_field.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/_form_fieldset.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/_form_footer.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/_form_header.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/_list.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/_list_actions.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/_list_batch_actions.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/_list_field_boolean.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/_list_footer.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/_list_header.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/_list_td_actions.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/_list_td_batch_actions.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/_list_td_stacked.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/_list_td_tabular.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/_list_th_stacked.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/_list_th_tabular.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/_pagination.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/editSuccess.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/indexSuccess.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/newSuccess.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/parts/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/parts/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/parts/.svn/prop-base/createAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/parts/.svn/prop-base/deleteAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/parts/.svn/prop-base/editAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/parts/.svn/prop-base/indexAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/parts/.svn/prop-base/newAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/parts/.svn/prop-base/processFormAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/parts/.svn/prop-base/showAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/parts/.svn/prop-base/updateAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/parts/.svn/text-base/createAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/parts/.svn/text-base/deleteAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/parts/.svn/text-base/editAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/parts/.svn/text-base/indexAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/parts/.svn/text-base/newAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/parts/.svn/text-base/processFormAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/parts/.svn/text-base/showAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/parts/.svn/text-base/updateAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/parts/createAction.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/parts/deleteAction.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/parts/editAction.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/parts/indexAction.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/parts/newAction.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/parts/processFormAction.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/parts/showAction.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/parts/updateAction.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/skeleton/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/skeleton/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/skeleton/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/skeleton/actions/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/skeleton/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/skeleton/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/skeleton/actions/actions.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/skeleton/config/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/skeleton/config/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/skeleton/config/.svn/text-base/generator.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/skeleton/config/generator.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/skeleton/templates/.sf create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/skeleton/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/skeleton/templates/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/skeleton/templates/.svn/text-base/.sf.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/template/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/template/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/template/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/template/actions/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/template/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/template/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/template/actions/actions.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/template/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/template/templates/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/template/templates/.svn/prop-base/_form.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/template/templates/.svn/prop-base/editSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/template/templates/.svn/prop-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/template/templates/.svn/prop-base/newSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/template/templates/.svn/prop-base/showSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/template/templates/.svn/text-base/_form.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/template/templates/.svn/text-base/editSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/template/templates/.svn/text-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/template/templates/.svn/text-base/newSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/template/templates/.svn/text-base/showSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/template/templates/_form.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/template/templates/editSuccess.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/template/templates/indexSuccess.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/template/templates/newSuccess.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/template/templates/showSuccess.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/.svn/text-base/sf_admin.ar.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/.svn/text-base/sf_admin.bg.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/.svn/text-base/sf_admin.ca.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/.svn/text-base/sf_admin.cs.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/.svn/text-base/sf_admin.da.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/.svn/text-base/sf_admin.de.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/.svn/text-base/sf_admin.el.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/.svn/text-base/sf_admin.es.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/.svn/text-base/sf_admin.es_AR.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/.svn/text-base/sf_admin.eu.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/.svn/text-base/sf_admin.fa.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/.svn/text-base/sf_admin.fi.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/.svn/text-base/sf_admin.fr.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/.svn/text-base/sf_admin.hr.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/.svn/text-base/sf_admin.hu.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/.svn/text-base/sf_admin.id.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/.svn/text-base/sf_admin.it.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/.svn/text-base/sf_admin.ja.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/.svn/text-base/sf_admin.lt.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/.svn/text-base/sf_admin.lv.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/.svn/text-base/sf_admin.nl.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/.svn/text-base/sf_admin.no.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/.svn/text-base/sf_admin.pl.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/.svn/text-base/sf_admin.pt.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/.svn/text-base/sf_admin.pt_BR.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/.svn/text-base/sf_admin.ro.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/.svn/text-base/sf_admin.ru.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/.svn/text-base/sf_admin.sk.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/.svn/text-base/sf_admin.sl.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/.svn/text-base/sf_admin.sv.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/.svn/text-base/sf_admin.tr.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/.svn/text-base/sf_admin.uk.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/.svn/text-base/sf_admin.zh_CN.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/.svn/text-base/sf_admin.zh_TW.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/sf_admin.ar.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/sf_admin.bg.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/sf_admin.ca.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/sf_admin.cs.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/sf_admin.da.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/sf_admin.de.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/sf_admin.el.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/sf_admin.es.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/sf_admin.es_AR.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/sf_admin.eu.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/sf_admin.fa.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/sf_admin.fi.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/sf_admin.fr.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/sf_admin.hr.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/sf_admin.hu.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/sf_admin.id.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/sf_admin.it.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/sf_admin.ja.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/sf_admin.lt.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/sf_admin.lv.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/sf_admin.nl.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/sf_admin.no.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/sf_admin.pl.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/sf_admin.pt.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/sf_admin.pt_BR.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/sf_admin.ro.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/sf_admin.ru.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/sf_admin.sk.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/sf_admin.sl.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/sf_admin.sv.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/sf_admin.tr.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/sf_admin.uk.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/sf_admin.zh_CN.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/i18n/sf_admin.zh_TW.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/.svn/prop-base/sfDoctrineException.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/.svn/text-base/sfDoctrineException.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/cli/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/cli/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/cli/.svn/prop-base/sfDoctrineCli.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/cli/.svn/text-base/sfDoctrineCli.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/cli/sfDoctrineCli.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/database/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/database/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/database/.svn/prop-base/sfDoctrineConnectionListener.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/database/.svn/prop-base/sfDoctrineConnectionProfiler.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/database/.svn/prop-base/sfDoctrineDatabase.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/database/.svn/text-base/sfDoctrineConnectionListener.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/database/.svn/text-base/sfDoctrineConnectionProfiler.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/database/.svn/text-base/sfDoctrineDatabase.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/database/sfDoctrineConnectionListener.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/database/sfDoctrineConnectionProfiler.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/database/sfDoctrineDatabase.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/debug/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/debug/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/debug/.svn/prop-base/sfWebDebugPanelDoctrine.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/debug/.svn/text-base/sfWebDebugPanelDoctrine.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/debug/sfWebDebugPanelDoctrine.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/form/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/form/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/form/.svn/prop-base/sfFormDoctrine.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/form/.svn/prop-base/sfFormFilterDoctrine.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/form/.svn/text-base/sfFormDoctrine.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/form/.svn/text-base/sfFormFilterDoctrine.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/form/sfFormDoctrine.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/form/sfFormFilterDoctrine.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/generator/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/generator/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/generator/.svn/prop-base/sfDoctrineColumn.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/generator/.svn/prop-base/sfDoctrineFormFilterGenerator.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/generator/.svn/prop-base/sfDoctrineFormGenerator.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/generator/.svn/prop-base/sfDoctrineGenerator.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/generator/.svn/text-base/sfDoctrineColumn.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/generator/.svn/text-base/sfDoctrineFormFilterGenerator.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/generator/.svn/text-base/sfDoctrineFormGenerator.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/generator/.svn/text-base/sfDoctrineGenerator.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/generator/sfDoctrineColumn.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/generator/sfDoctrineFormFilterGenerator.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/generator/sfDoctrineFormGenerator.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/generator/sfDoctrineGenerator.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/mailer/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/mailer/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/mailer/.svn/prop-base/Swift_DoctrineSpool.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/mailer/.svn/text-base/Swift_DoctrineSpool.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/mailer/Swift_DoctrineSpool.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/pager/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/pager/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/pager/.svn/prop-base/sfDoctrinePager.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/pager/.svn/text-base/sfDoctrinePager.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/pager/sfDoctrinePager.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/record/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/record/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/record/.svn/prop-base/sfDoctrineRecord.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/record/.svn/prop-base/sfDoctrineRecordI18nFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/record/.svn/text-base/sfDoctrineRecord.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/record/.svn/text-base/sfDoctrineRecordI18nFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/record/sfDoctrineRecord.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/record/sfDoctrineRecordI18nFilter.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/routing/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/routing/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/routing/.svn/prop-base/sfDoctrineRoute.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/routing/.svn/prop-base/sfDoctrineRouteCollection.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/routing/.svn/text-base/sfDoctrineRoute.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/routing/.svn/text-base/sfDoctrineRouteCollection.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/routing/sfDoctrineRoute.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/routing/sfDoctrineRouteCollection.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/sfDoctrineException.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/prop-base/sfDoctrineBaseTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/prop-base/sfDoctrineBuildDbTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/prop-base/sfDoctrineBuildFiltersTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/prop-base/sfDoctrineBuildFormsTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/prop-base/sfDoctrineBuildModelTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/prop-base/sfDoctrineBuildSchemaTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/prop-base/sfDoctrineBuildSqlTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/prop-base/sfDoctrineBuildTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/prop-base/sfDoctrineCleanModelFilesTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/prop-base/sfDoctrineConfigureDatabaseTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/prop-base/sfDoctrineCreateModelTablesTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/prop-base/sfDoctrineDataDumpTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/prop-base/sfDoctrineDataLoadTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/prop-base/sfDoctrineDeleteModelFilesTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/prop-base/sfDoctrineDqlTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/prop-base/sfDoctrineDropDbTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/prop-base/sfDoctrineGenerateAdminTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/prop-base/sfDoctrineGenerateMigrationTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/prop-base/sfDoctrineGenerateMigrationsDbTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/prop-base/sfDoctrineGenerateMigrationsDiffTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/prop-base/sfDoctrineGenerateMigrationsModelsTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/prop-base/sfDoctrineGenerateModuleForRouteTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/prop-base/sfDoctrineGenerateModuleTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/prop-base/sfDoctrineInsertSqlTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/prop-base/sfDoctrineMigrateTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/text-base/sfDoctrineBaseTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/text-base/sfDoctrineBuildDbTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/text-base/sfDoctrineBuildFiltersTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/text-base/sfDoctrineBuildFormsTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/text-base/sfDoctrineBuildModelTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/text-base/sfDoctrineBuildSchemaTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/text-base/sfDoctrineBuildSqlTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/text-base/sfDoctrineBuildTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/text-base/sfDoctrineCleanModelFilesTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/text-base/sfDoctrineConfigureDatabaseTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/text-base/sfDoctrineCreateModelTablesTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/text-base/sfDoctrineDataDumpTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/text-base/sfDoctrineDataLoadTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/text-base/sfDoctrineDeleteModelFilesTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/text-base/sfDoctrineDqlTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/text-base/sfDoctrineDropDbTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/text-base/sfDoctrineGenerateAdminTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/text-base/sfDoctrineGenerateMigrationTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/text-base/sfDoctrineGenerateMigrationsDbTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/text-base/sfDoctrineGenerateMigrationsDiffTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/text-base/sfDoctrineGenerateMigrationsModelsTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/text-base/sfDoctrineGenerateModuleForRouteTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/text-base/sfDoctrineGenerateModuleTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/text-base/sfDoctrineInsertSqlTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/.svn/text-base/sfDoctrineMigrateTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineBaseTask.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineBuildDbTask.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineBuildFiltersTask.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineBuildFormsTask.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineBuildModelTask.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineBuildSchemaTask.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineBuildSqlTask.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineBuildTask.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineCleanModelFilesTask.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineConfigureDatabaseTask.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineCreateModelTablesTask.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineDataDumpTask.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineDataLoadTask.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineDeleteModelFilesTask.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineDqlTask.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineDropDbTask.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineGenerateAdminTask.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineGenerateMigrationTask.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineGenerateMigrationsDbTask.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineGenerateMigrationsDiffTask.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineGenerateMigrationsModelsTask.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineGenerateModuleForRouteTask.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineGenerateModuleTask.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineInsertSqlTask.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineMigrateTask.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/test/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/test/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/test/.svn/prop-base/sfTesterDoctrine.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/test/.svn/text-base/sfTesterDoctrine.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/test/sfTesterDoctrine.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/validator/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/validator/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/validator/.svn/prop-base/sfValidatorDoctrineChoice.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/validator/.svn/prop-base/sfValidatorDoctrineUnique.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/validator/.svn/text-base/sfValidatorDoctrineChoice.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/validator/.svn/text-base/sfValidatorDoctrineUnique.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/validator/sfValidatorDoctrineChoice.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/validator/sfValidatorDoctrineUnique.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/.svn/dir-prop-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/.svn/text-base/Doctrine.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/text-base/Access.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/text-base/AuditLog.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/text-base/Builder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/text-base/Cli.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/text-base/Collection.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/text-base/Column.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/text-base/Compiler.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/text-base/Configurable.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/text-base/Connection.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/text-base/Core.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/text-base/Data.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/text-base/DataDict.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/text-base/Event.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/text-base/EventListener.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/text-base/Exception.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/text-base/Export.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/text-base/Expression.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/text-base/File.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/text-base/Formatter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/text-base/Hook.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/text-base/Hydrator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/text-base/I18n.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/text-base/Import.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/text-base/Inflector.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/text-base/IntegrityMapper.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/text-base/Lib.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/text-base/Locator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/text-base/Manager.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/text-base/Migration.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/text-base/Node.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/text-base/Null.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/text-base/Overloadable.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/text-base/Pager.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/text-base/Parser.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/text-base/Query.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/text-base/RawSql.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/text-base/Record.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/text-base/Relation.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/text-base/Search.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/text-base/Sequence.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/text-base/Table.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/text-base/Task.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/text-base/Template.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/text-base/Transaction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/text-base/Tree.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/text-base/Util.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/text-base/Validator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/.svn/text-base/View.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Access.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Adapter/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Adapter/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Adapter/.svn/text-base/Exception.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Adapter/.svn/text-base/Interface.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Adapter/.svn/text-base/Mock.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Adapter/.svn/text-base/Oracle.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Adapter/.svn/text-base/Statement.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Adapter/Exception.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Adapter/Interface.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Adapter/Mock.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Adapter/Oracle.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Adapter/Statement.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Adapter/Statement/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Adapter/Statement/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Adapter/Statement/.svn/text-base/Interface.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Adapter/Statement/.svn/text-base/Mock.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Adapter/Statement/.svn/text-base/Oracle.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Adapter/Statement/Interface.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Adapter/Statement/Mock.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Adapter/Statement/Oracle.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/AuditLog.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/AuditLog/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/AuditLog/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/AuditLog/.svn/text-base/Listener.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/AuditLog/Listener.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/AuditLog/Listener/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/AuditLog/Listener/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/AuditLog/Listener/.svn/text-base/Microtime.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/AuditLog/Listener/Microtime.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Builder.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Cache/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Cache/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Cache/.svn/text-base/Apc.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Cache/.svn/text-base/Array.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Cache/.svn/text-base/Db.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Cache/.svn/text-base/Driver.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Cache/.svn/text-base/Exception.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Cache/.svn/text-base/Interface.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Cache/.svn/text-base/Memcache.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Cache/.svn/text-base/Xcache.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Cache/Apc.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Cache/Array.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Cache/Db.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Cache/Driver.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Cache/Exception.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Cache/Interface.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Cache/Memcache.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Cache/Xcache.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Cli.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Cli/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Cli/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Cli/.svn/text-base/AnsiColorFormatter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Cli/.svn/text-base/Exception.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Cli/.svn/text-base/Formatter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Cli/AnsiColorFormatter.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Cli/Exception.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Cli/Formatter.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Collection.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Collection/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Collection/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Collection/.svn/text-base/Exception.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Collection/.svn/text-base/Iterator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Collection/.svn/text-base/Offset.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Collection/.svn/text-base/OnDemand.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Collection/Exception.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Collection/Iterator.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Collection/Iterator/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Collection/Iterator/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Collection/Iterator/.svn/text-base/Expandable.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Collection/Iterator/.svn/text-base/Normal.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Collection/Iterator/.svn/text-base/Offset.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Collection/Iterator/Expandable.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Collection/Iterator/Normal.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Collection/Iterator/Offset.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Collection/Offset.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Collection/OnDemand.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Column.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Compiler.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Compiler/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Compiler/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Compiler/.svn/text-base/Exception.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Compiler/Exception.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Configurable.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/.svn/text-base/Common.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/.svn/text-base/Db2.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/.svn/text-base/Exception.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/.svn/text-base/Mock.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/.svn/text-base/Module.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/.svn/text-base/Mssql.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/.svn/text-base/Mysql.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/.svn/text-base/Oracle.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/.svn/text-base/Pgsql.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/.svn/text-base/Profiler.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/.svn/text-base/Sqlite.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/.svn/text-base/Statement.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/.svn/text-base/UnitOfWork.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Common.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Db2.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Exception.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Mock.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Module.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Mssql.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Mssql/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Mssql/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Mssql/.svn/text-base/Exception.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Mssql/Exception.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Mysql.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Mysql/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Mysql/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Mysql/.svn/text-base/Exception.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Mysql/Exception.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Oracle.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Oracle/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Oracle/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Oracle/.svn/text-base/Exception.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Oracle/Exception.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Pgsql.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Pgsql/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Pgsql/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Pgsql/.svn/text-base/Exception.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Pgsql/Exception.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Profiler.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Profiler/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Profiler/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Profiler/.svn/text-base/Exception.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Profiler/Exception.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Sqlite.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Sqlite/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Sqlite/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Sqlite/.svn/text-base/Exception.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Sqlite/Exception.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Statement.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/UnitOfWork.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Core.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Data.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Data/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Data/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Data/.svn/text-base/Exception.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Data/.svn/text-base/Export.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Data/.svn/text-base/Import.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Data/Exception.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Data/Export.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Data/Import.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/DataDict.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/DataDict/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/DataDict/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/DataDict/.svn/text-base/Exception.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/DataDict/.svn/text-base/Mssql.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/DataDict/.svn/text-base/Mysql.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/DataDict/.svn/text-base/Oracle.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/DataDict/.svn/text-base/Pgsql.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/DataDict/.svn/text-base/Sqlite.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/DataDict/Exception.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/DataDict/Mssql.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/DataDict/Mysql.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/DataDict/Oracle.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/DataDict/Pgsql.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/DataDict/Sqlite.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Event.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/EventListener.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/EventListener/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/EventListener/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/EventListener/.svn/text-base/Chain.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/EventListener/.svn/text-base/Exception.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/EventListener/.svn/text-base/Interface.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/EventListener/Chain.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/EventListener/Exception.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/EventListener/Interface.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Exception.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Export.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Export/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Export/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Export/.svn/text-base/Exception.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Export/.svn/text-base/Mssql.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Export/.svn/text-base/Mysql.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Export/.svn/text-base/Oracle.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Export/.svn/text-base/Pgsql.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Export/.svn/text-base/Reporter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Export/.svn/text-base/Schema.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Export/.svn/text-base/Sqlite.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Export/Exception.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Export/Mssql.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Export/Mysql.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Export/Oracle.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Export/Pgsql.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Export/Reporter.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Export/Schema.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Export/Sqlite.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Expression.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Expression/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Expression/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Expression/.svn/text-base/Driver.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Expression/.svn/text-base/Exception.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Expression/.svn/text-base/Mock.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Expression/.svn/text-base/Mssql.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Expression/.svn/text-base/Mysql.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Expression/.svn/text-base/Oracle.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Expression/.svn/text-base/Pgsql.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Expression/.svn/text-base/Sqlite.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Expression/Driver.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Expression/Exception.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Expression/Mock.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Expression/Mssql.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Expression/Mysql.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Expression/Oracle.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Expression/Pgsql.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Expression/Sqlite.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/File.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/File/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/File/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/File/.svn/text-base/Index.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/File/Index.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Formatter.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hook.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hook/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hook/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hook/.svn/text-base/Equal.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hook/.svn/text-base/Integer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hook/.svn/text-base/Parser.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hook/.svn/text-base/WordLike.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hook/Equal.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hook/Integer.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hook/Parser.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hook/Parser/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hook/Parser/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hook/Parser/.svn/text-base/Complex.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hook/Parser/Complex.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hook/WordLike.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hydrator.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hydrator/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hydrator/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hydrator/.svn/text-base/Abstract.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hydrator/.svn/text-base/ArrayDriver.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hydrator/.svn/text-base/ArrayHierarchyDriver.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hydrator/.svn/text-base/ArrayShallowDriver.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hydrator/.svn/text-base/Exception.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hydrator/.svn/text-base/Graph.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hydrator/.svn/text-base/NoneDriver.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hydrator/.svn/text-base/RecordDriver.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hydrator/.svn/text-base/RecordHierarchyDriver.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hydrator/.svn/text-base/ScalarDriver.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hydrator/.svn/text-base/SingleScalarDriver.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hydrator/Abstract.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hydrator/ArrayDriver.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hydrator/ArrayHierarchyDriver.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hydrator/ArrayShallowDriver.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hydrator/Exception.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hydrator/Graph.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hydrator/NoneDriver.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hydrator/RecordDriver.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hydrator/RecordHierarchyDriver.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hydrator/ScalarDriver.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hydrator/SingleScalarDriver.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/I18n.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/I18n/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/I18n/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/I18n/.svn/text-base/Exception.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/I18n/Exception.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Import.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Import/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Import/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Import/.svn/text-base/Builder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Import/.svn/text-base/Exception.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Import/.svn/text-base/Mssql.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Import/.svn/text-base/Mysql.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Import/.svn/text-base/Oracle.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Import/.svn/text-base/Pgsql.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Import/.svn/text-base/Schema.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Import/.svn/text-base/Sqlite.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Import/Builder.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Import/Builder/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Import/Builder/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Import/Builder/.svn/text-base/Exception.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Import/Builder/Exception.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Import/Exception.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Import/Mssql.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Import/Mysql.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Import/Oracle.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Import/Pgsql.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Import/Schema.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Import/Sqlite.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Inflector.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/IntegrityMapper.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Lib.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Locator.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Locator/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Locator/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Locator/.svn/text-base/Exception.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Locator/.svn/text-base/Injectable.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Locator/Exception.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Locator/Injectable.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Locking/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Locking/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Locking/.svn/text-base/Exception.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Locking/Exception.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Locking/Manager/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Locking/Manager/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Locking/Manager/.svn/text-base/Pessimistic.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Locking/Manager/Pessimistic.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Manager.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Manager/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Manager/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Manager/.svn/text-base/Exception.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Manager/Exception.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Migration.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Migration/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Migration/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Migration/.svn/text-base/Base.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Migration/.svn/text-base/Builder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Migration/.svn/text-base/Diff.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Migration/.svn/text-base/Exception.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Migration/.svn/text-base/IrreversibleMigrationException.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Migration/.svn/text-base/Process.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Migration/Base.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Migration/Builder.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Migration/Diff.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Migration/Exception.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Migration/IrreversibleMigrationException.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Migration/Process.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Node.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Node/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Node/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Node/.svn/text-base/AdjacencyList.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Node/.svn/text-base/Exception.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Node/.svn/text-base/Interface.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Node/.svn/text-base/MaterializedPath.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Node/.svn/text-base/NestedSet.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Node/AdjacencyList.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Node/AdjacencyList/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Node/AdjacencyList/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Node/AdjacencyList/.svn/text-base/LevelOrderIterator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Node/AdjacencyList/.svn/text-base/PostOrderIterator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Node/AdjacencyList/.svn/text-base/PreOrderIterator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Node/AdjacencyList/LevelOrderIterator.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Node/AdjacencyList/PostOrderIterator.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Node/AdjacencyList/PreOrderIterator.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Node/Exception.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Node/Interface.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Node/MaterializedPath.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Node/MaterializedPath/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Node/MaterializedPath/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Node/MaterializedPath/.svn/text-base/LevelOrderIterator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Node/MaterializedPath/.svn/text-base/PostOrderIterator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Node/MaterializedPath/.svn/text-base/PreOrderIterator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Node/MaterializedPath/LevelOrderIterator.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Node/MaterializedPath/PostOrderIterator.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Node/MaterializedPath/PreOrderIterator.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Node/NestedSet.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Node/NestedSet/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Node/NestedSet/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Node/NestedSet/.svn/text-base/LevelOrderIterator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Node/NestedSet/.svn/text-base/PostOrderIterator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Node/NestedSet/.svn/text-base/PreOrderIterator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Node/NestedSet/LevelOrderIterator.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Node/NestedSet/PostOrderIterator.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Node/NestedSet/PreOrderIterator.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Null.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Overloadable.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Pager.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Pager/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Pager/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Pager/.svn/text-base/Exception.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Pager/.svn/text-base/Layout.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Pager/.svn/text-base/Range.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Pager/Exception.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Pager/Layout.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Pager/Range.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Pager/Range/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Pager/Range/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Pager/Range/.svn/text-base/Jumping.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Pager/Range/.svn/text-base/Sliding.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Pager/Range/Jumping.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Pager/Range/Sliding.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Parser.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Parser/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Parser/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Parser/.svn/text-base/Exception.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Parser/.svn/text-base/Json.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Parser/.svn/text-base/Serialize.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Parser/.svn/text-base/Xml.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Parser/.svn/text-base/Yml.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Parser/Exception.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Parser/Json.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Parser/Serialize.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Parser/Xml.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Parser/Yml.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Parser/sfYaml/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Parser/sfYaml/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Parser/sfYaml/.svn/text-base/sfYaml.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Parser/sfYaml/.svn/text-base/sfYamlDumper.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Parser/sfYaml/.svn/text-base/sfYamlInline.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Parser/sfYaml/.svn/text-base/sfYamlParser.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Parser/sfYaml/sfYaml.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Parser/sfYaml/sfYamlDumper.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Parser/sfYaml/sfYamlInline.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Parser/sfYaml/sfYamlParser.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/.svn/text-base/Abstract.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/.svn/text-base/Check.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/.svn/text-base/Condition.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/.svn/text-base/Exception.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/.svn/text-base/Filter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/.svn/text-base/Forupdate.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/.svn/text-base/From.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/.svn/text-base/Groupby.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/.svn/text-base/Having.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/.svn/text-base/JoinCondition.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/.svn/text-base/Limit.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/.svn/text-base/Offset.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/.svn/text-base/Orderby.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/.svn/text-base/Parser.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/.svn/text-base/Part.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/.svn/text-base/Registry.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/.svn/text-base/Select.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/.svn/text-base/Set.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/.svn/text-base/Tokenizer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/.svn/text-base/Where.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/Abstract.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/Check.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/Condition.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/Exception.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/Filter.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/Filter/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/Filter/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/Filter/.svn/text-base/Chain.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/Filter/.svn/text-base/Interface.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/Filter/Chain.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/Filter/Interface.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/Forupdate.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/From.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/Groupby.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/Having.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/JoinCondition.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/Limit.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/Offset.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/Orderby.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/Parser.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/Part.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/Registry.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/Registry/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/Registry/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/Registry/.svn/text-base/Exception.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/Registry/Exception.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/Select.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/Set.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/Tokenizer.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/Tokenizer/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/Tokenizer/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/Tokenizer/.svn/text-base/Exception.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/Tokenizer/Exception.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/Where.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/RawSql.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/RawSql/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/RawSql/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/RawSql/.svn/text-base/Exception.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/RawSql/Exception.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record/.svn/text-base/Abstract.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record/.svn/text-base/Exception.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record/.svn/text-base/Filter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record/.svn/text-base/Generator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record/.svn/text-base/Iterator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record/.svn/text-base/Listener.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record/.svn/text-base/UnknownPropertyException.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record/Abstract.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record/Exception.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record/Filter.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record/Filter/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record/Filter/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record/Filter/.svn/text-base/Compound.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record/Filter/.svn/text-base/Standard.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record/Filter/Compound.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record/Filter/Standard.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record/Generator.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record/Iterator.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record/Listener.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record/Listener/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record/Listener/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record/Listener/.svn/text-base/Chain.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record/Listener/.svn/text-base/Interface.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record/Listener/Chain.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record/Listener/Interface.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record/State/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record/State/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record/State/.svn/text-base/Exception.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record/State/Exception.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record/UnknownPropertyException.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Relation.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Relation/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Relation/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Relation/.svn/text-base/Association.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Relation/.svn/text-base/Exception.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Relation/.svn/text-base/ForeignKey.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Relation/.svn/text-base/LocalKey.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Relation/.svn/text-base/Nest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Relation/.svn/text-base/Parser.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Relation/Association.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Relation/Association/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Relation/Association/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Relation/Association/.svn/text-base/Self.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Relation/Association/Self.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Relation/Exception.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Relation/ForeignKey.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Relation/LocalKey.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Relation/Nest.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Relation/Parser.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Relation/Parser/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Relation/Parser/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Relation/Parser/.svn/text-base/Exception.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Relation/Parser/Exception.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Search.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Search/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Search/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Search/.svn/text-base/Analyzer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Search/.svn/text-base/Exception.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Search/.svn/text-base/File.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Search/.svn/text-base/Indexer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Search/.svn/text-base/Listener.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Search/.svn/text-base/Parser.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Search/.svn/text-base/Query.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Search/.svn/text-base/Record.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Search/Analyzer.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Search/Analyzer/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Search/Analyzer/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Search/Analyzer/.svn/text-base/Exception.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Search/Analyzer/.svn/text-base/Interface.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Search/Analyzer/.svn/text-base/Standard.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Search/Analyzer/.svn/text-base/Utf8.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Search/Analyzer/Exception.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Search/Analyzer/Interface.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Search/Analyzer/Standard.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Search/Analyzer/Utf8.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Search/Exception.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Search/File.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Search/Indexer.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Search/Indexer/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Search/Indexer/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Search/Indexer/.svn/text-base/Dir.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Search/Indexer/.svn/text-base/Exception.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Search/Indexer/Dir.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Search/Indexer/Exception.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Search/Listener.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Search/Parser.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Search/Query.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Search/Record.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Sequence.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Sequence/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Sequence/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Sequence/.svn/text-base/Db2.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Sequence/.svn/text-base/Exception.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Sequence/.svn/text-base/Mssql.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Sequence/.svn/text-base/Mysql.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Sequence/.svn/text-base/Oracle.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Sequence/.svn/text-base/Pgsql.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Sequence/.svn/text-base/Sqlite.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Sequence/Db2.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Sequence/Exception.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Sequence/Mssql.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Sequence/Mysql.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Sequence/Oracle.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Sequence/Pgsql.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Sequence/Sqlite.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Table.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Table/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Table/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Table/.svn/text-base/Exception.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Table/.svn/text-base/Repository.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Table/Exception.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Table/Repository.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Table/Repository/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Table/Repository/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Table/Repository/.svn/text-base/Exception.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Table/Repository/Exception.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/.svn/text-base/BuildAll.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/.svn/text-base/BuildAllLoad.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/.svn/text-base/BuildAllReload.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/.svn/text-base/Compile.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/.svn/text-base/CreateDb.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/.svn/text-base/CreateTables.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/.svn/text-base/Dql.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/.svn/text-base/DropDb.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/.svn/text-base/DumpData.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/.svn/text-base/Exception.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/.svn/text-base/GenerateMigration.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/.svn/text-base/GenerateMigrationsDb.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/.svn/text-base/GenerateMigrationsDiff.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/.svn/text-base/GenerateMigrationsModels.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/.svn/text-base/GenerateModelsDb.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/.svn/text-base/GenerateModelsYaml.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/.svn/text-base/GenerateSql.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/.svn/text-base/GenerateYamlDb.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/.svn/text-base/GenerateYamlModels.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/.svn/text-base/LoadData.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/.svn/text-base/Migrate.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/.svn/text-base/RebuildDb.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/BuildAll.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/BuildAllLoad.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/BuildAllReload.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/Compile.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/CreateDb.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/CreateTables.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/Dql.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/DropDb.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/DumpData.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/Exception.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/GenerateMigration.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/GenerateMigrationsDb.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/GenerateMigrationsDiff.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/GenerateMigrationsModels.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/GenerateModelsDb.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/GenerateModelsYaml.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/GenerateSql.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/GenerateYamlDb.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/GenerateYamlModels.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/LoadData.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/Migrate.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/RebuildDb.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Template.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Template/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Template/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Template/.svn/text-base/Geographical.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Template/.svn/text-base/I18n.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Template/.svn/text-base/NestedSet.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Template/.svn/text-base/Searchable.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Template/.svn/text-base/Sluggable.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Template/.svn/text-base/SoftDelete.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Template/.svn/text-base/Timestampable.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Template/.svn/text-base/Versionable.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Template/Geographical.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Template/I18n.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Template/Listener/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Template/Listener/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Template/Listener/.svn/text-base/Sluggable.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Template/Listener/.svn/text-base/SoftDelete.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Template/Listener/.svn/text-base/Timestampable.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Template/Listener/Sluggable.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Template/Listener/SoftDelete.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Template/Listener/Timestampable.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Template/NestedSet.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Template/Searchable.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Template/Sluggable.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Template/SoftDelete.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Template/Timestampable.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Template/Versionable.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Transaction.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Transaction/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Transaction/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Transaction/.svn/text-base/Exception.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Transaction/.svn/text-base/Mock.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Transaction/.svn/text-base/Mssql.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Transaction/.svn/text-base/Mysql.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Transaction/.svn/text-base/Oracle.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Transaction/.svn/text-base/Pgsql.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Transaction/.svn/text-base/Sqlite.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Transaction/Exception.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Transaction/Mock.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Transaction/Mssql.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Transaction/Mysql.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Transaction/Oracle.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Transaction/Pgsql.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Transaction/Sqlite.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Tree.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Tree/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Tree/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Tree/.svn/text-base/AdjacencyList.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Tree/.svn/text-base/Exception.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Tree/.svn/text-base/Interface.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Tree/.svn/text-base/MaterializedPath.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Tree/.svn/text-base/NestedSet.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Tree/AdjacencyList.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Tree/Exception.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Tree/Interface.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Tree/MaterializedPath.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Tree/NestedSet.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Util.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/.svn/prop-base/Readonly.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/.svn/text-base/Country.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/.svn/text-base/Creditcard.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/.svn/text-base/Date.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/.svn/text-base/Driver.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/.svn/text-base/Email.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/.svn/text-base/ErrorStack.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/.svn/text-base/Exception.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/.svn/text-base/Future.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/.svn/text-base/Htmlcolor.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/.svn/text-base/Ip.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/.svn/text-base/Minlength.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/.svn/text-base/Nospace.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/.svn/text-base/Notblank.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/.svn/text-base/Notnull.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/.svn/text-base/Past.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/.svn/text-base/Range.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/.svn/text-base/Readonly.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/.svn/text-base/Regexp.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/.svn/text-base/Time.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/.svn/text-base/Timestamp.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/.svn/text-base/Unique.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/.svn/text-base/Unsigned.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/.svn/text-base/Usstate.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/Country.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/Creditcard.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/Date.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/Driver.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/Email.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/ErrorStack.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/Exception.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/Future.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/Htmlcolor.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/Ip.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/Minlength.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/Nospace.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/Notblank.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/Notnull.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/Past.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/Range.php create mode 100755 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/Readonly.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/Regexp.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/Time.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/Timestamp.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/Unique.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/Unsigned.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/Usstate.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/View.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/View/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/View/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/View/.svn/text-base/Exception.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/View/Exception.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/widget/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/widget/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/widget/.svn/prop-base/sfWidgetFormDoctrineChoice.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/widget/.svn/text-base/sfWidgetFormDoctrineChoice.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/widget/sfWidgetFormDoctrineChoice.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/bin/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/bin/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/bin/.svn/prop-base/coverage.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/bin/.svn/prop-base/prove.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/bin/.svn/text-base/coverage.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/bin/.svn/text-base/prove.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/bin/coverage.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/bin/prove.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/bootstrap/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/bootstrap/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/bootstrap/.svn/prop-base/functional.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/bootstrap/.svn/prop-base/unit.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/bootstrap/.svn/text-base/functional.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/bootstrap/.svn/text-base/unit.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/bootstrap/functional.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/bootstrap/unit.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/.svn/prop-base/ActionRedirectTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/.svn/prop-base/AdminGenBrowser.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/.svn/prop-base/AdminGenTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/.svn/prop-base/EnvironmentSetupTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/.svn/prop-base/FormGeneratorTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/.svn/prop-base/FormTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/.svn/prop-base/I18nTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/.svn/prop-base/PagerTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/.svn/prop-base/RouteTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/.svn/prop-base/SchemaMergeTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/.svn/prop-base/UniqueTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/.svn/prop-base/UploadTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/.svn/prop-base/sfDoctrineRecordTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/.svn/text-base/ActionRedirectTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/.svn/text-base/AdminGenBrowser.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/.svn/text-base/AdminGenTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/.svn/text-base/EnvironmentSetupTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/.svn/text-base/FormGeneratorTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/.svn/text-base/FormTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/.svn/text-base/I18nTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/.svn/text-base/PagerTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/.svn/text-base/RouteTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/.svn/text-base/SchemaMergeTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/.svn/text-base/UniqueTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/.svn/text-base/UploadTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/.svn/text-base/sfDoctrineRecordTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/ActionRedirectTest.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/AdminGenBrowser.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/AdminGenTest.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/EnvironmentSetupTest.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/FormGeneratorTest.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/FormTest.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/I18nTest.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/PagerTest.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/RouteTest.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/SchemaMergeTest.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/Ticket/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/Ticket/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/Ticket/.svn/prop-base/5269Test.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/Ticket/.svn/prop-base/7774Test.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/Ticket/.svn/text-base/5269Test.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/Ticket/.svn/text-base/7774Test.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/Ticket/5269Test.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/Ticket/7774Test.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/UniqueTest.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/UploadTest.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/.svn/prop-base/symfony.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/.svn/text-base/symfony.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/config/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/config/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/config/.svn/prop-base/backendConfiguration.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/config/.svn/text-base/app.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/config/.svn/text-base/backendConfiguration.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/config/.svn/text-base/cache.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/config/.svn/text-base/factories.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/config/.svn/text-base/filters.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/config/.svn/text-base/routing.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/config/.svn/text-base/security.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/config/.svn/text-base/settings.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/config/.svn/text-base/view.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/config/app.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/config/backendConfiguration.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/config/cache.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/config/factories.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/config/filters.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/config/routing.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/config/security.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/config/settings.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/config/view.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/i18n/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/i18n/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/lib/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/lib/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/lib/.svn/prop-base/myUser.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/lib/.svn/text-base/myUser.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/lib/myUser.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/modules/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/modules/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/modules/doctrine_route_test/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/modules/doctrine_route_test/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/modules/doctrine_route_test/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/modules/doctrine_route_test/actions/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/modules/doctrine_route_test/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/modules/doctrine_route_test/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/modules/doctrine_route_test/actions/actions.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/modules/doctrine_route_test/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/modules/doctrine_route_test/templates/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/modules/doctrine_route_test/templates/.svn/prop-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/modules/doctrine_route_test/templates/.svn/text-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/modules/doctrine_route_test/templates/indexSuccess.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/modules/my_articles/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/modules/my_articles/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/modules/my_articles/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/modules/my_articles/actions/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/modules/my_articles/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/modules/my_articles/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/modules/my_articles/actions/actions.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/modules/my_articles/config/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/modules/my_articles/config/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/modules/my_articles/config/.svn/text-base/generator.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/modules/my_articles/config/generator.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/modules/my_articles/lib/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/modules/my_articles/lib/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/modules/my_articles/lib/.svn/prop-base/my_articlesGeneratorConfiguration.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/modules/my_articles/lib/.svn/prop-base/my_articlesGeneratorHelper.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/modules/my_articles/lib/.svn/text-base/my_articlesGeneratorConfiguration.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/modules/my_articles/lib/.svn/text-base/my_articlesGeneratorHelper.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/modules/my_articles/lib/my_articlesGeneratorConfiguration.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/modules/my_articles/lib/my_articlesGeneratorHelper.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/templates/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/templates/.svn/prop-base/layout.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/templates/.svn/text-base/layout.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/templates/layout.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/config/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/config/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/config/.svn/prop-base/frontendConfiguration.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/config/.svn/text-base/app.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/config/.svn/text-base/cache.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/config/.svn/text-base/factories.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/config/.svn/text-base/filters.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/config/.svn/text-base/frontendConfiguration.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/config/.svn/text-base/routing.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/config/.svn/text-base/security.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/config/.svn/text-base/settings.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/config/.svn/text-base/view.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/config/app.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/config/cache.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/config/factories.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/config/filters.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/config/frontendConfiguration.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/config/routing.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/config/security.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/config/settings.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/config/view.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/i18n/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/i18n/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/lib/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/lib/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/lib/.svn/prop-base/myUser.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/lib/.svn/text-base/myUser.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/lib/myUser.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/modules/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/modules/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/modules/articles/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/modules/articles/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/modules/articles/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/modules/articles/actions/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/modules/articles/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/modules/articles/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/modules/articles/actions/actions.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/modules/articles/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/modules/articles/templates/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/modules/articles/templates/.svn/prop-base/editSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/modules/articles/templates/.svn/prop-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/modules/articles/templates/.svn/prop-base/showSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/modules/articles/templates/.svn/text-base/editSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/modules/articles/templates/.svn/text-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/modules/articles/templates/.svn/text-base/showSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/modules/articles/templates/editSuccess.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/modules/articles/templates/indexSuccess.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/modules/articles/templates/showSuccess.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/modules/attachment/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/modules/attachment/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/modules/attachment/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/modules/attachment/actions/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/modules/attachment/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/modules/attachment/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/modules/attachment/actions/actions.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/modules/attachment/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/modules/attachment/templates/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/modules/attachment/templates/.svn/prop-base/editableInput.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/modules/attachment/templates/.svn/prop-base/editableSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/modules/attachment/templates/.svn/prop-base/indexInput.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/modules/attachment/templates/.svn/prop-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/modules/attachment/templates/.svn/text-base/editableInput.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/modules/attachment/templates/.svn/text-base/editableSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/modules/attachment/templates/.svn/text-base/indexInput.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/modules/attachment/templates/.svn/text-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/modules/attachment/templates/editableInput.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/modules/attachment/templates/editableSuccess.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/modules/attachment/templates/indexInput.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/modules/attachment/templates/indexSuccess.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/templates/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/templates/.svn/prop-base/layout.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/templates/.svn/text-base/layout.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/templates/layout.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/cache/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/cache/.svn/dir-prop-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/cache/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/config/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/config/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/config/.svn/prop-base/ProjectConfiguration.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/config/.svn/text-base/ProjectConfiguration.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/config/.svn/text-base/databases.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/config/.svn/text-base/properties.ini.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/config/.svn/text-base/rsync_exclude.txt.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/config/.svn/text-base/schema.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/config/ProjectConfiguration.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/config/databases.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/config/doctrine/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/config/doctrine/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/config/doctrine/.svn/prop-base/linked_schema.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/config/doctrine/.svn/text-base/linked_schema.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/config/doctrine/.svn/text-base/schema.yml.svn-base create mode 120000 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/config/doctrine/linked_schema.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/config/doctrine/schema.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/config/properties.ini create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/config/rsync_exclude.txt create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/config/schema.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/data/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/data/.svn/dir-prop-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/data/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/data/.svn/prop-base/linked_schema.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/data/.svn/text-base/linked_schema.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/data/fixtures/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/data/fixtures/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/data/fixtures/.svn/prop-base/pager.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/data/fixtures/.svn/text-base/fixtures.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/data/fixtures/.svn/text-base/pager.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/data/fixtures/fixtures.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/data/fixtures/pager.yml create mode 100755 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/data/linked_schema.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/data/sql/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/data/sql/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/data/sql/.svn/text-base/schema.sql.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/data/sql/schema.sql create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/.svn/prop-base/myDoctrineRecord.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/.svn/text-base/myDoctrineRecord.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/.svn/prop-base/ArticleFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/.svn/prop-base/ArticleTranslationFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/.svn/prop-base/AttachmentFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/.svn/prop-base/AuthorFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/.svn/prop-base/AuthorInheritanceConcreteFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/.svn/prop-base/AuthorInheritanceFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/.svn/prop-base/BaseFormFilterDoctrine.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/.svn/prop-base/BlogArticleFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/.svn/prop-base/BlogArticleTranslationFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/.svn/prop-base/BlogAuthorFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/.svn/prop-base/CamelCaseFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/.svn/prop-base/DefaultValueTestFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/.svn/prop-base/FormGeneratorTest2FormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/.svn/prop-base/GroupFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/.svn/prop-base/PermissionFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/.svn/prop-base/ProfileFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/.svn/prop-base/ResourceTypeFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/.svn/prop-base/SubscriptionFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/.svn/prop-base/UniqueTestFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/.svn/prop-base/UserFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/.svn/text-base/ArticleFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/.svn/text-base/ArticleTranslationFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/.svn/text-base/AttachmentFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/.svn/text-base/AuthorFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/.svn/text-base/AuthorInheritanceConcreteFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/.svn/text-base/AuthorInheritanceFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/.svn/text-base/BaseFormFilterDoctrine.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/.svn/text-base/BlogArticleFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/.svn/text-base/BlogArticleTranslationFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/.svn/text-base/BlogAuthorFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/.svn/text-base/CamelCaseFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/.svn/text-base/DefaultValueTestFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/.svn/text-base/FormGeneratorTest2FormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/.svn/text-base/GroupFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/.svn/text-base/PermissionFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/.svn/text-base/ProfileFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/.svn/text-base/ResourceTypeFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/.svn/text-base/SubscriptionFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/.svn/text-base/UniqueTestFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/.svn/text-base/UserFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/ArticleFormFilter.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/ArticleTranslationFormFilter.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/AttachmentFormFilter.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/AuthorFormFilter.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/AuthorInheritanceConcreteFormFilter.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/AuthorInheritanceFormFilter.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/BaseFormFilterDoctrine.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/BlogArticleFormFilter.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/BlogArticleTranslationFormFilter.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/BlogAuthorFormFilter.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/CamelCaseFormFilter.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/DefaultValueTestFormFilter.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/FormGeneratorTest2FormFilter.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/GroupFormFilter.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/PermissionFormFilter.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/ProfileFormFilter.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/ResourceTypeFormFilter.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/SettingsPlugin/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/SettingsPlugin/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/SettingsPlugin/.svn/prop-base/SettingFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/SettingsPlugin/.svn/text-base/SettingFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/SettingsPlugin/SettingFormFilter.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/SettingsPlugin/base/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/SettingsPlugin/base/.svn/dir-prop-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/SettingsPlugin/base/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/SubscriptionFormFilter.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/UniqueTestFormFilter.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/UserFormFilter.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/base/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/base/.svn/dir-prop-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/base/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/.svn/prop-base/BaseForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/.svn/text-base/BaseForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/BaseForm.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/.svn/prop-base/ArticleForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/.svn/prop-base/ArticleTranslationForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/.svn/prop-base/AttachmentForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/.svn/prop-base/AuthorForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/.svn/prop-base/AuthorInheritanceConcreteForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/.svn/prop-base/AuthorInheritanceForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/.svn/prop-base/BaseFormDoctrine.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/.svn/prop-base/BlogArticleForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/.svn/prop-base/BlogArticleTranslationForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/.svn/prop-base/BlogAuthorForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/.svn/prop-base/CamelCaseForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/.svn/prop-base/DefaultValueTestForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/.svn/prop-base/FormGeneratorTestForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/.svn/prop-base/GroupForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/.svn/prop-base/PermissionForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/.svn/prop-base/ProfileForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/.svn/prop-base/ResourceTypeForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/.svn/prop-base/SubscriptionForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/.svn/prop-base/UniqueTestForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/.svn/prop-base/UserForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/.svn/text-base/ArticleForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/.svn/text-base/ArticleTranslationForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/.svn/text-base/AttachmentForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/.svn/text-base/AuthorForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/.svn/text-base/AuthorInheritanceConcreteForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/.svn/text-base/AuthorInheritanceForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/.svn/text-base/BaseFormDoctrine.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/.svn/text-base/BlogArticleForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/.svn/text-base/BlogArticleTranslationForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/.svn/text-base/BlogAuthorForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/.svn/text-base/CamelCaseForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/.svn/text-base/DefaultValueTestForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/.svn/text-base/FormGeneratorTestForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/.svn/text-base/GroupForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/.svn/text-base/PermissionForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/.svn/text-base/ProfileForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/.svn/text-base/ResourceTypeForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/.svn/text-base/SubscriptionForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/.svn/text-base/UniqueTestForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/.svn/text-base/UserForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/ArticleForm.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/ArticleTranslationForm.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/AttachmentForm.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/AuthorForm.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/AuthorInheritanceConcreteForm.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/AuthorInheritanceForm.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/BaseFormDoctrine.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/BlogArticleForm.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/BlogArticleTranslationForm.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/BlogAuthorForm.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/CamelCaseForm.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/DefaultValueTestForm.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/FormGeneratorTestForm.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/GroupForm.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/PermissionForm.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/ProfileForm.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/ResourceTypeForm.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/SettingsPlugin/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/SettingsPlugin/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/SettingsPlugin/.svn/prop-base/SettingForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/SettingsPlugin/.svn/text-base/SettingForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/SettingsPlugin/SettingForm.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/SettingsPlugin/base/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/SettingsPlugin/base/.svn/dir-prop-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/SettingsPlugin/base/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/SubscriptionForm.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/UniqueTestForm.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/UserForm.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/base/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/base/.svn/dir-prop-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/base/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/migration/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/migration/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/migration/doctrine/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/migration/doctrine/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/prop-base/Article.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/prop-base/ArticleTable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/prop-base/Attachment.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/prop-base/AttachmentTable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/prop-base/Author.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/prop-base/AuthorInheritance.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/prop-base/AuthorInheritanceConcrete.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/prop-base/AuthorInheritanceConcreteTable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/prop-base/AuthorInheritanceTable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/prop-base/AuthorTable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/prop-base/BlogArticle.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/prop-base/BlogArticleTable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/prop-base/BlogAuthor.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/prop-base/BlogAuthorTable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/prop-base/CamelCase.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/prop-base/CamelCaseTable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/prop-base/DefaultValueTest.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/prop-base/DefaultValueTestTable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/prop-base/FormGeneratorTest.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/prop-base/FormGeneratorTest2.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/prop-base/FormGeneratorTest2Table.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/prop-base/FormGeneratorTestTable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/prop-base/Group.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/prop-base/GroupPermission.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/prop-base/GroupPermissionTable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/prop-base/GroupTable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/prop-base/ModelFromLinkedSchema.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/prop-base/ModelFromLinkedSchemaTable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/prop-base/Permission.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/prop-base/PermissionTable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/prop-base/Profile.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/prop-base/ProfileTable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/prop-base/ResourceType.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/prop-base/ResourceTypeTable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/prop-base/Subscription.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/prop-base/SubscriptionTable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/prop-base/UniqueTest.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/prop-base/UniqueTestTable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/prop-base/User.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/prop-base/UserGroup.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/prop-base/UserGroupTable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/prop-base/UserPermission.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/prop-base/UserPermissionTable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/prop-base/UserTable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/text-base/Article.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/text-base/ArticleTable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/text-base/Attachment.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/text-base/AttachmentTable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/text-base/Author.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/text-base/AuthorInheritance.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/text-base/AuthorInheritanceConcrete.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/text-base/AuthorInheritanceConcreteTable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/text-base/AuthorInheritanceTable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/text-base/AuthorTable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/text-base/BlogArticle.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/text-base/BlogArticleTable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/text-base/BlogAuthor.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/text-base/BlogAuthorTable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/text-base/CamelCase.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/text-base/CamelCaseTable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/text-base/DefaultValueTest.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/text-base/DefaultValueTestTable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/text-base/FormGeneratorTest.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/text-base/FormGeneratorTest2.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/text-base/FormGeneratorTest2Table.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/text-base/FormGeneratorTest3.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/text-base/FormGeneratorTest3Table.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/text-base/FormGeneratorTestTable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/text-base/Group.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/text-base/GroupPermission.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/text-base/GroupPermissionTable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/text-base/GroupTable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/text-base/ModelFromLinkedSchema.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/text-base/ModelFromLinkedSchemaTable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/text-base/ModelWithNumberInColumn.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/text-base/ModelWithNumberInColumnTable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/text-base/Permission.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/text-base/PermissionTable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/text-base/Profile.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/text-base/ProfileTable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/text-base/ResourceType.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/text-base/ResourceTypeTable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/text-base/Subscription.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/text-base/SubscriptionTable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/text-base/UniqueTest.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/text-base/UniqueTestTable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/text-base/User.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/text-base/UserGroup.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/text-base/UserGroupTable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/text-base/UserPermission.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/text-base/UserPermissionTable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/.svn/text-base/UserTable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/Article.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/ArticleTable.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/Attachment.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/AttachmentTable.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/Author.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/AuthorInheritance.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/AuthorInheritanceConcrete.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/AuthorInheritanceConcreteTable.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/AuthorInheritanceTable.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/AuthorTable.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/BlogArticle.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/BlogArticleTable.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/BlogAuthor.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/BlogAuthorTable.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/CamelCase.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/CamelCaseTable.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/DefaultValueTest.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/DefaultValueTestTable.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/FormGeneratorTest.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/FormGeneratorTest2.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/FormGeneratorTest2Table.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/FormGeneratorTest3.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/FormGeneratorTest3Table.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/FormGeneratorTestTable.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/Group.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/GroupPermission.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/GroupPermissionTable.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/GroupTable.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/ModelFromLinkedSchema.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/ModelFromLinkedSchemaTable.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/ModelWithNumberInColumn.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/ModelWithNumberInColumnTable.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/Permission.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/PermissionTable.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/Profile.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/ProfileTable.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/ResourceType.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/ResourceTypeTable.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/SettingsPlugin/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/SettingsPlugin/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/SettingsPlugin/.svn/prop-base/Setting.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/SettingsPlugin/.svn/prop-base/SettingTable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/SettingsPlugin/.svn/text-base/Setting.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/SettingsPlugin/.svn/text-base/SettingTable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/SettingsPlugin/Setting.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/SettingsPlugin/SettingTable.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/SettingsPlugin/base/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/SettingsPlugin/base/.svn/dir-prop-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/SettingsPlugin/base/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/Subscription.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/SubscriptionTable.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/UniqueTest.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/UniqueTestTable.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/User.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/UserGroup.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/UserGroupTable.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/UserPermission.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/UserPermissionTable.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/UserTable.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/base/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/base/.svn/dir-prop-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/base/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/myDoctrineRecord.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/log/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/log/.svn/dir-prop-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/log/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/plugins/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/plugins/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/plugins/SettingsPlugin/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/plugins/SettingsPlugin/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/plugins/SettingsPlugin/config/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/plugins/SettingsPlugin/config/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/plugins/SettingsPlugin/config/doctrine/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/plugins/SettingsPlugin/config/doctrine/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/plugins/SettingsPlugin/config/doctrine/.svn/prop-base/schema.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/plugins/SettingsPlugin/config/doctrine/.svn/text-base/schema.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/plugins/SettingsPlugin/config/doctrine/schema.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/plugins/SettingsPlugin/lib/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/plugins/SettingsPlugin/lib/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/plugins/SettingsPlugin/lib/filter/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/plugins/SettingsPlugin/lib/filter/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/plugins/SettingsPlugin/lib/filter/doctrine/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/plugins/SettingsPlugin/lib/filter/doctrine/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/plugins/SettingsPlugin/lib/filter/doctrine/.svn/prop-base/PluginSettingFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/plugins/SettingsPlugin/lib/filter/doctrine/.svn/text-base/PluginSettingFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/plugins/SettingsPlugin/lib/filter/doctrine/PluginSettingFormFilter.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/plugins/SettingsPlugin/lib/form/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/plugins/SettingsPlugin/lib/form/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/plugins/SettingsPlugin/lib/form/doctrine/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/plugins/SettingsPlugin/lib/form/doctrine/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/plugins/SettingsPlugin/lib/form/doctrine/.svn/prop-base/PluginSettingForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/plugins/SettingsPlugin/lib/form/doctrine/.svn/text-base/PluginSettingForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/plugins/SettingsPlugin/lib/form/doctrine/PluginSettingForm.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/plugins/SettingsPlugin/lib/model/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/plugins/SettingsPlugin/lib/model/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/plugins/SettingsPlugin/lib/model/doctrine/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/plugins/SettingsPlugin/lib/model/doctrine/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/plugins/SettingsPlugin/lib/model/doctrine/.svn/prop-base/PluginSetting.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/plugins/SettingsPlugin/lib/model/doctrine/.svn/prop-base/PluginSettingTable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/plugins/SettingsPlugin/lib/model/doctrine/.svn/text-base/PluginSetting.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/plugins/SettingsPlugin/lib/model/doctrine/.svn/text-base/PluginSettingTable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/plugins/SettingsPlugin/lib/model/doctrine/PluginSetting.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/plugins/SettingsPlugin/lib/model/doctrine/PluginSettingTable.class.php create mode 100755 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/symfony create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/test/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/test/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/test/functional/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/test/functional/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/sfDoctrineRecordTest.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/unit/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/unit/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/unit/.svn/prop-base/sfDoctrineColumnTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/unit/.svn/prop-base/sfDoctrineDatabaseTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/unit/.svn/text-base/autoloaderTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/unit/.svn/text-base/sfDoctrineColumnTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/unit/.svn/text-base/sfDoctrineDatabaseTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/unit/autoloaderTest.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/unit/form/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/unit/form/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/unit/form/.svn/prop-base/sfFormDoctrineTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/unit/form/.svn/prop-base/sfFormFilterDoctrineTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/unit/form/.svn/text-base/sfFormDoctrineTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/unit/form/.svn/text-base/sfFormFilterDoctrineTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/unit/form/sfFormDoctrineTest.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/unit/form/sfFormFilterDoctrineTest.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/unit/pager/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/unit/pager/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/unit/pager/.svn/prop-base/sfDoctrinePagerTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/unit/pager/.svn/text-base/sfDoctrinePagerTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/unit/pager/sfDoctrinePagerTest.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/unit/record/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/unit/record/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/unit/record/.svn/prop-base/sfDoctrineRecordTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/unit/record/.svn/text-base/sfDoctrineRecordTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/unit/record/sfDoctrineRecordTest.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/unit/sfDoctrineColumnTest.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/unit/sfDoctrineDatabaseTest.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/unit/validator/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/unit/validator/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/unit/validator/.svn/prop-base/sfValidatorDoctrineChoiceTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/unit/validator/.svn/text-base/sfValidatorDoctrineChoiceTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/unit/validator/sfValidatorDoctrineChoiceTest.php create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/css/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/css/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/css/.svn/prop-base/default.css.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/css/.svn/prop-base/global.css.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/css/.svn/text-base/default.css.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/css/.svn/text-base/global.css.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/css/default.css create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/css/global.css create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/images/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/images/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/images/.svn/prop-base/asc.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/images/.svn/prop-base/default.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/images/.svn/prop-base/delete.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/images/.svn/prop-base/desc.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/images/.svn/prop-base/edit.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/images/.svn/prop-base/error.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/images/.svn/prop-base/first.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/images/.svn/prop-base/last.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/images/.svn/prop-base/list.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/images/.svn/prop-base/new.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/images/.svn/prop-base/next.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/images/.svn/prop-base/previous.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/images/.svn/prop-base/tick.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/images/.svn/text-base/asc.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/images/.svn/text-base/default.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/images/.svn/text-base/delete.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/images/.svn/text-base/desc.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/images/.svn/text-base/edit.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/images/.svn/text-base/error.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/images/.svn/text-base/first.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/images/.svn/text-base/last.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/images/.svn/text-base/list.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/images/.svn/text-base/new.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/images/.svn/text-base/next.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/images/.svn/text-base/previous.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/images/.svn/text-base/tick.png.svn-base create mode 100755 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/images/asc.png create mode 100755 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/images/default.png create mode 100755 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/images/delete.png create mode 100755 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/images/desc.png create mode 100755 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/images/edit.png create mode 100755 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/images/error.png create mode 100755 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/images/first.png create mode 100755 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/images/last.png create mode 100755 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/images/list.png create mode 100755 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/images/new.png create mode 100755 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/images/next.png create mode 100755 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/images/previous.png create mode 100755 lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web/images/tick.png create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/.svn/text-base/LICENSE.Agavi.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/.svn/text-base/LICENSE.Propel.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/.svn/text-base/LICENSE.phing.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/.svn/text-base/LICENSE.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/LICENSE create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/LICENSE.Agavi create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/LICENSE.Propel create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/LICENSE.phing create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/config/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/config/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/config/.svn/prop-base/installer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/config/.svn/prop-base/sfPropelPluginConfiguration.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/config/.svn/text-base/autoload.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/config/.svn/text-base/installer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/config/.svn/text-base/sfPropelPluginConfiguration.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/config/autoload.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/config/installer.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/config/sfPropelPluginConfiguration.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/config/skeleton/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/config/skeleton/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/config/skeleton/config/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/config/skeleton/config/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/config/skeleton/config/.svn/prop-base/propel.ini.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/config/skeleton/config/.svn/text-base/databases.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/config/skeleton/config/.svn/text-base/propel.ini.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/config/skeleton/config/.svn/text-base/schema.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/config/skeleton/config/databases.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/config/skeleton/config/propel.ini create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/config/skeleton/config/schema.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelForm/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelForm/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelForm/default/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelForm/default/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelForm/default/template/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelForm/default/template/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelForm/default/template/.svn/prop-base/sfPropelFormBaseTemplate.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelForm/default/template/.svn/prop-base/sfPropelFormGeneratedTemplate.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelForm/default/template/.svn/prop-base/sfPropelFormTemplate.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelForm/default/template/.svn/text-base/sfPropelFormBaseTemplate.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelForm/default/template/.svn/text-base/sfPropelFormGeneratedTemplate.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelForm/default/template/.svn/text-base/sfPropelFormTemplate.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelForm/default/template/sfPropelFormBaseTemplate.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelForm/default/template/sfPropelFormGeneratedTemplate.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelForm/default/template/sfPropelFormTemplate.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelFormFilter/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelFormFilter/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelFormFilter/default/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelFormFilter/default/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelFormFilter/default/template/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelFormFilter/default/template/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelFormFilter/default/template/.svn/prop-base/sfPropelFormFilterBaseTemplate.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelFormFilter/default/template/.svn/prop-base/sfPropelFormFilterGeneratedTemplate.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelFormFilter/default/template/.svn/prop-base/sfPropelFormFilterTemplate.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelFormFilter/default/template/.svn/text-base/sfPropelFormFilterBaseTemplate.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelFormFilter/default/template/.svn/text-base/sfPropelFormFilterGeneratedTemplate.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelFormFilter/default/template/.svn/text-base/sfPropelFormFilterTemplate.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelFormFilter/default/template/sfPropelFormFilterBaseTemplate.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelFormFilter/default/template/sfPropelFormFilterGeneratedTemplate.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelFormFilter/default/template/sfPropelFormFilterTemplate.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/.svn/prop-base/actionsConfiguration.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/.svn/prop-base/batchAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/.svn/prop-base/configuration.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/.svn/prop-base/createAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/.svn/prop-base/deleteAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/.svn/prop-base/editAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/.svn/prop-base/fieldsConfiguration.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/.svn/prop-base/filterAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/.svn/prop-base/filtersAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/.svn/prop-base/indexAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/.svn/prop-base/newAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/.svn/prop-base/paginationAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/.svn/prop-base/paginationConfiguration.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/.svn/prop-base/processFormAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/.svn/prop-base/sortingAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/.svn/prop-base/sortingConfiguration.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/.svn/prop-base/updateAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/.svn/text-base/actionsConfiguration.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/.svn/text-base/batchAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/.svn/text-base/configuration.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/.svn/text-base/createAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/.svn/text-base/deleteAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/.svn/text-base/editAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/.svn/text-base/fieldsConfiguration.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/.svn/text-base/filterAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/.svn/text-base/filtersAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/.svn/text-base/indexAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/.svn/text-base/newAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/.svn/text-base/paginationAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/.svn/text-base/paginationConfiguration.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/.svn/text-base/processFormAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/.svn/text-base/sortingAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/.svn/text-base/sortingConfiguration.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/.svn/text-base/updateAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/actionsConfiguration.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/batchAction.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/configuration.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/createAction.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/deleteAction.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/editAction.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/fieldsConfiguration.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/filterAction.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/filtersAction.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/indexAction.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/newAction.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/paginationAction.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/paginationConfiguration.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/processFormAction.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/sortingAction.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/sortingConfiguration.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/updateAction.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/skeleton/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/skeleton/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/skeleton/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/skeleton/actions/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/skeleton/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/skeleton/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/skeleton/actions/actions.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/skeleton/config/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/skeleton/config/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/skeleton/config/.svn/text-base/generator.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/skeleton/config/generator.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/skeleton/lib/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/skeleton/lib/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/skeleton/lib/.svn/prop-base/configuration.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/skeleton/lib/.svn/prop-base/helper.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/skeleton/lib/.svn/text-base/configuration.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/skeleton/lib/.svn/text-base/helper.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/skeleton/lib/configuration.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/skeleton/lib/helper.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/skeleton/templates/.sf create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/skeleton/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/skeleton/templates/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/skeleton/templates/.svn/text-base/.sf.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/actions/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/actions/actions.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/lib/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/lib/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/lib/.svn/prop-base/helper.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/lib/.svn/text-base/helper.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/lib/helper.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/prop-base/_assets.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/prop-base/_filters.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/prop-base/_filters_field.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/prop-base/_flashes.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/prop-base/_form.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/prop-base/_form_actions.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/prop-base/_form_field.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/prop-base/_form_fieldset.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/prop-base/_form_footer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/prop-base/_form_header.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/prop-base/_list.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/prop-base/_list_actions.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/prop-base/_list_batch_actions.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/prop-base/_list_field_boolean.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/prop-base/_list_footer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/prop-base/_list_header.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/prop-base/_list_td_actions.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/prop-base/_list_td_batch_actions.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/prop-base/_list_td_stacked.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/prop-base/_list_td_tabular.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/prop-base/_list_th_stacked.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/prop-base/_list_th_tabular.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/prop-base/_pagination.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/prop-base/editSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/prop-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/prop-base/newSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/text-base/_assets.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/text-base/_filters.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/text-base/_filters_field.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/text-base/_flashes.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/text-base/_form.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/text-base/_form_actions.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/text-base/_form_field.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/text-base/_form_fieldset.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/text-base/_form_footer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/text-base/_form_header.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/text-base/_list.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/text-base/_list_actions.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/text-base/_list_batch_actions.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/text-base/_list_field_boolean.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/text-base/_list_footer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/text-base/_list_header.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/text-base/_list_td_actions.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/text-base/_list_td_batch_actions.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/text-base/_list_td_stacked.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/text-base/_list_td_tabular.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/text-base/_list_th_stacked.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/text-base/_list_th_tabular.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/text-base/_pagination.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/text-base/editSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/text-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/.svn/text-base/newSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/_assets.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/_filters.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/_filters_field.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/_flashes.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/_form.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/_form_actions.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/_form_field.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/_form_fieldset.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/_form_footer.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/_form_header.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/_list.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/_list_actions.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/_list_batch_actions.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/_list_field_boolean.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/_list_footer.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/_list_header.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/_list_td_actions.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/_list_td_batch_actions.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/_list_td_stacked.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/_list_td_tabular.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/_list_th_stacked.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/_list_th_tabular.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/_pagination.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/editSuccess.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/indexSuccess.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/newSuccess.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/parts/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/parts/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/parts/.svn/prop-base/createAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/parts/.svn/prop-base/deleteAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/parts/.svn/prop-base/editAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/parts/.svn/prop-base/indexAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/parts/.svn/prop-base/newAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/parts/.svn/prop-base/processFormAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/parts/.svn/prop-base/showAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/parts/.svn/prop-base/updateAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/parts/.svn/text-base/createAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/parts/.svn/text-base/deleteAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/parts/.svn/text-base/editAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/parts/.svn/text-base/indexAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/parts/.svn/text-base/newAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/parts/.svn/text-base/processFormAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/parts/.svn/text-base/showAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/parts/.svn/text-base/updateAction.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/parts/createAction.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/parts/deleteAction.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/parts/editAction.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/parts/indexAction.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/parts/newAction.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/parts/processFormAction.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/parts/showAction.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/parts/updateAction.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/skeleton/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/skeleton/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/skeleton/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/skeleton/actions/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/skeleton/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/skeleton/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/skeleton/actions/actions.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/skeleton/config/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/skeleton/config/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/skeleton/config/.svn/prop-base/generator.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/skeleton/config/.svn/text-base/generator.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/skeleton/config/generator.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/skeleton/templates/.sf create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/skeleton/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/skeleton/templates/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/skeleton/templates/.svn/text-base/.sf.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/template/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/template/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/template/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/template/actions/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/template/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/template/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/template/actions/actions.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/template/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/template/templates/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/template/templates/.svn/prop-base/_form.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/template/templates/.svn/prop-base/editSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/template/templates/.svn/prop-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/template/templates/.svn/prop-base/newSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/template/templates/.svn/prop-base/showSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/template/templates/.svn/text-base/_form.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/template/templates/.svn/text-base/editSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/template/templates/.svn/text-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/template/templates/.svn/text-base/newSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/template/templates/.svn/text-base/showSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/template/templates/_form.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/template/templates/editSuccess.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/template/templates/indexSuccess.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/template/templates/newSuccess.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/template/templates/showSuccess.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/.svn/text-base/sf_admin.ar.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/.svn/text-base/sf_admin.bg.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/.svn/text-base/sf_admin.ca.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/.svn/text-base/sf_admin.cs.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/.svn/text-base/sf_admin.da.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/.svn/text-base/sf_admin.de.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/.svn/text-base/sf_admin.el.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/.svn/text-base/sf_admin.es.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/.svn/text-base/sf_admin.es_AR.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/.svn/text-base/sf_admin.eu.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/.svn/text-base/sf_admin.fa.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/.svn/text-base/sf_admin.fi.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/.svn/text-base/sf_admin.fr.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/.svn/text-base/sf_admin.hr.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/.svn/text-base/sf_admin.hu.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/.svn/text-base/sf_admin.id.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/.svn/text-base/sf_admin.it.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/.svn/text-base/sf_admin.ja.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/.svn/text-base/sf_admin.lt.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/.svn/text-base/sf_admin.lv.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/.svn/text-base/sf_admin.nl.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/.svn/text-base/sf_admin.no.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/.svn/text-base/sf_admin.pl.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/.svn/text-base/sf_admin.pt.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/.svn/text-base/sf_admin.pt_BR.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/.svn/text-base/sf_admin.ro.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/.svn/text-base/sf_admin.ru.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/.svn/text-base/sf_admin.sk.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/.svn/text-base/sf_admin.sl.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/.svn/text-base/sf_admin.sv.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/.svn/text-base/sf_admin.tr.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/.svn/text-base/sf_admin.uk.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/.svn/text-base/sf_admin.zh_CN.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/.svn/text-base/sf_admin.zh_TW.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/sf_admin.ar.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/sf_admin.bg.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/sf_admin.ca.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/sf_admin.cs.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/sf_admin.da.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/sf_admin.de.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/sf_admin.el.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/sf_admin.es.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/sf_admin.es_AR.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/sf_admin.eu.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/sf_admin.fa.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/sf_admin.fi.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/sf_admin.fr.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/sf_admin.hr.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/sf_admin.hu.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/sf_admin.id.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/sf_admin.it.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/sf_admin.ja.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/sf_admin.lt.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/sf_admin.lv.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/sf_admin.nl.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/sf_admin.no.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/sf_admin.pl.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/sf_admin.pt.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/sf_admin.pt_BR.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/sf_admin.ro.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/sf_admin.ru.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/sf_admin.sk.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/sf_admin.sl.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/sf_admin.sv.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/sf_admin.tr.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/sf_admin.uk.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/sf_admin.zh_CN.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/i18n/sf_admin.zh_TW.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/addon/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/addon/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/addon/.svn/prop-base/sfMixer.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/addon/.svn/prop-base/sfPropel.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/addon/.svn/prop-base/sfPropelBehavior.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/addon/.svn/prop-base/sfPropelData.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/addon/.svn/prop-base/sfPropelDatabaseSchema.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/addon/.svn/prop-base/sfPropelManyToMany.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/addon/.svn/prop-base/sfPropelPager.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/addon/.svn/text-base/sfMixer.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/addon/.svn/text-base/sfPropel.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/addon/.svn/text-base/sfPropelBehavior.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/addon/.svn/text-base/sfPropelData.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/addon/.svn/text-base/sfPropelDatabaseSchema.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/addon/.svn/text-base/sfPropelManyToMany.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/addon/.svn/text-base/sfPropelPager.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/addon/sfMixer.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/addon/sfPropel.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/addon/sfPropelBehavior.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/addon/sfPropelData.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/addon/sfPropelDatabaseSchema.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/addon/sfPropelManyToMany.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/addon/sfPropelPager.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/behavior/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/behavior/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/behavior/.svn/prop-base/SfPropelBehaviorBase.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/behavior/.svn/prop-base/SfPropelBehaviorI18n.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/behavior/.svn/prop-base/SfPropelBehaviorI18nTranslation.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/behavior/.svn/prop-base/SfPropelBehaviorSymfony.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/behavior/.svn/prop-base/SfPropelBehaviorSymfonyBehaviors.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/behavior/.svn/prop-base/SfPropelBehaviorTimestampable.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/behavior/.svn/text-base/SfPropelBehaviorBase.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/behavior/.svn/text-base/SfPropelBehaviorI18n.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/behavior/.svn/text-base/SfPropelBehaviorI18nTranslation.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/behavior/.svn/text-base/SfPropelBehaviorSymfony.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/behavior/.svn/text-base/SfPropelBehaviorSymfonyBehaviors.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/behavior/.svn/text-base/SfPropelBehaviorTimestampable.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/behavior/SfPropelBehaviorBase.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/behavior/SfPropelBehaviorI18n.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/behavior/SfPropelBehaviorI18nTranslation.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/behavior/SfPropelBehaviorSymfony.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/behavior/SfPropelBehaviorSymfonyBehaviors.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/behavior/SfPropelBehaviorTimestampable.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/database/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/database/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/database/.svn/prop-base/sfPropelDatabase.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/database/.svn/text-base/sfPropelDatabase.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/database/sfPropelDatabase.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/debug/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/debug/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/debug/.svn/prop-base/sfWebDebugPanelPropel.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/debug/.svn/text-base/sfWebDebugPanelPropel.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/debug/sfWebDebugPanelPropel.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/form/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/form/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/form/.svn/prop-base/sfFormFilterPropel.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/form/.svn/prop-base/sfFormPropel.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/form/.svn/text-base/sfFormFilterPropel.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/form/.svn/text-base/sfFormPropel.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/form/sfFormFilterPropel.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/form/sfFormPropel.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/generator/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/generator/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/generator/.svn/prop-base/sfPropelFormFilterGenerator.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/generator/.svn/prop-base/sfPropelFormGenerator.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/generator/.svn/prop-base/sfPropelGenerator.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/generator/.svn/text-base/sfPropelFormFilterGenerator.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/generator/.svn/text-base/sfPropelFormGenerator.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/generator/.svn/text-base/sfPropelGenerator.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/generator/sfPropelFormFilterGenerator.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/generator/sfPropelFormGenerator.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/generator/sfPropelGenerator.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/log/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/log/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/log/.svn/prop-base/sfPropelLogger.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/log/.svn/text-base/sfPropelLogger.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/log/sfPropelLogger.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/mailer/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/mailer/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/mailer/.svn/prop-base/Swift_PropelSpool.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/mailer/.svn/text-base/Swift_PropelSpool.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/mailer/Swift_PropelSpool.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/routing/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/routing/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/routing/.svn/prop-base/sfPropelRoute.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/routing/.svn/prop-base/sfPropelRouteCollection.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/routing/.svn/text-base/sfPropelRoute.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/routing/.svn/text-base/sfPropelRouteCollection.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/routing/sfPropelRoute.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/routing/sfPropelRouteCollection.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/.svn/prop-base/sfPhing.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/.svn/prop-base/sfPhingListener.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/.svn/prop-base/sfPropelBaseTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/.svn/prop-base/sfPropelBuildAllLoadTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/.svn/prop-base/sfPropelBuildAllTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/.svn/prop-base/sfPropelBuildFiltersTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/.svn/prop-base/sfPropelBuildFormsTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/.svn/prop-base/sfPropelBuildModelTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/.svn/prop-base/sfPropelBuildSchemaTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/.svn/prop-base/sfPropelBuildSqlTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/.svn/prop-base/sfPropelBuildTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/.svn/prop-base/sfPropelConfigureDatabaseTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/.svn/prop-base/sfPropelDataDumpTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/.svn/prop-base/sfPropelDataLoadTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/.svn/prop-base/sfPropelGenerateAdminTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/.svn/prop-base/sfPropelGenerateModuleForRouteTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/.svn/prop-base/sfPropelGenerateModuleTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/.svn/prop-base/sfPropelGraphvizTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/.svn/prop-base/sfPropelInsertSqlTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/.svn/prop-base/sfPropelSchemaToXmlTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/.svn/prop-base/sfPropelSchemaToYmlTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/.svn/text-base/sfPhing.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/.svn/text-base/sfPhingListener.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/.svn/text-base/sfPropelBaseTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/.svn/text-base/sfPropelBuildAllLoadTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/.svn/text-base/sfPropelBuildAllTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/.svn/text-base/sfPropelBuildFiltersTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/.svn/text-base/sfPropelBuildFormsTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/.svn/text-base/sfPropelBuildModelTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/.svn/text-base/sfPropelBuildSchemaTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/.svn/text-base/sfPropelBuildSqlTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/.svn/text-base/sfPropelBuildTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/.svn/text-base/sfPropelConfigureDatabaseTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/.svn/text-base/sfPropelDataDumpTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/.svn/text-base/sfPropelDataLoadTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/.svn/text-base/sfPropelGenerateAdminTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/.svn/text-base/sfPropelGenerateModuleForRouteTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/.svn/text-base/sfPropelGenerateModuleTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/.svn/text-base/sfPropelGraphvizTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/.svn/text-base/sfPropelInsertSqlTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/.svn/text-base/sfPropelSchemaToXmlTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/.svn/text-base/sfPropelSchemaToYmlTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/phing/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/phing/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/phing/.svn/text-base/phing_default_overrides.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/phing/phing_default_overrides create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/phing/tasks/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/phing/tasks/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/phing/tasks/.svn/text-base/defaults.properties.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/phing/tasks/defaults.properties create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/phing/types/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/phing/types/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/phing/types/.svn/text-base/defaults.properties.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/phing/types/defaults.properties create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/sfPhing.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/sfPhingListener.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/sfPropelBaseTask.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/sfPropelBuildAllLoadTask.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/sfPropelBuildAllTask.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/sfPropelBuildFiltersTask.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/sfPropelBuildFormsTask.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/sfPropelBuildModelTask.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/sfPropelBuildSchemaTask.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/sfPropelBuildSqlTask.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/sfPropelBuildTask.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/sfPropelConfigureDatabaseTask.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/sfPropelDataDumpTask.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/sfPropelDataLoadTask.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/sfPropelGenerateAdminTask.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/sfPropelGenerateModuleForRouteTask.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/sfPropelGenerateModuleTask.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/sfPropelGraphvizTask.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/sfPropelInsertSqlTask.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/sfPropelSchemaToXmlTask.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/sfPropelSchemaToYmlTask.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/test/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/test/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/test/.svn/prop-base/sfTesterPropel.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/test/.svn/text-base/sfTesterPropel.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/test/sfTesterPropel.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/validator/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/validator/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/validator/.svn/prop-base/sfValidatorPropelChoice.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/validator/.svn/prop-base/sfValidatorPropelUnique.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/validator/.svn/text-base/sfValidatorPropelChoice.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/validator/.svn/text-base/sfValidatorPropelUnique.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/validator/sfValidatorPropelChoice.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/validator/sfValidatorPropelUnique.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/.svn/dir-prop-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/.svn/prop-base/BuildEvent.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/.svn/prop-base/BuildException.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/.svn/prop-base/BuildListener.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/.svn/prop-base/BuildLogger.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/.svn/prop-base/IntrospectionHelper.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/.svn/prop-base/Phing.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/.svn/prop-base/Project.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/.svn/prop-base/ProjectComponent.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/.svn/prop-base/RuntimeConfigurable.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/.svn/prop-base/Target.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/.svn/prop-base/Task.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/.svn/prop-base/TaskAdapter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/.svn/prop-base/TaskContainer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/.svn/prop-base/UnknownElement.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/.svn/text-base/BuildEvent.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/.svn/text-base/BuildException.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/.svn/text-base/BuildListener.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/.svn/text-base/BuildLogger.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/.svn/text-base/ConfigurationException.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/.svn/text-base/IntrospectionHelper.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/.svn/text-base/Phing.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/.svn/text-base/Project.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/.svn/text-base/ProjectComponent.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/.svn/text-base/RuntimeConfigurable.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/.svn/text-base/Target.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/.svn/text-base/Task.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/.svn/text-base/TaskAdapter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/.svn/text-base/TaskContainer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/.svn/text-base/UnknownElement.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/BuildEvent.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/BuildException.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/BuildListener.php create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/BuildLogger.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/ConfigurationException.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/IntrospectionHelper.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/Phing.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/Project.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/ProjectComponent.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/RuntimeConfigurable.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/Target.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/Task.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/TaskAdapter.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/TaskContainer.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/UnknownElement.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/.svn/prop-base/BaseFilterReader.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/.svn/prop-base/BaseParamFilterReader.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/.svn/prop-base/ChainableReader.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/.svn/prop-base/ExpandProperties.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/.svn/prop-base/HeadFilter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/.svn/prop-base/LineContains.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/.svn/prop-base/LineContainsRegexp.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/.svn/prop-base/PrefixLines.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/.svn/prop-base/ReplaceRegexp.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/.svn/prop-base/ReplaceTokens.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/.svn/prop-base/StripLineBreaks.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/.svn/prop-base/StripLineComments.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/.svn/prop-base/StripPhpComments.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/.svn/prop-base/TabToSpaces.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/.svn/prop-base/TailFilter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/.svn/prop-base/TidyFilter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/.svn/prop-base/TranslateGettext.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/.svn/prop-base/XsltFilter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/.svn/text-base/BaseFilterReader.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/.svn/text-base/BaseParamFilterReader.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/.svn/text-base/ChainableReader.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/.svn/text-base/ExpandProperties.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/.svn/text-base/HeadFilter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/.svn/text-base/LineContains.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/.svn/text-base/LineContainsRegexp.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/.svn/text-base/PrefixLines.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/.svn/text-base/ReplaceRegexp.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/.svn/text-base/ReplaceTokens.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/.svn/text-base/StripLineBreaks.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/.svn/text-base/StripLineComments.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/.svn/text-base/StripPhpComments.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/.svn/text-base/StripWhitespace.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/.svn/text-base/TabToSpaces.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/.svn/text-base/TailFilter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/.svn/text-base/TidyFilter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/.svn/text-base/TranslateGettext.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/.svn/text-base/XincludeFilter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/.svn/text-base/XsltFilter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/BaseFilterReader.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/BaseParamFilterReader.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/ChainableReader.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/ExpandProperties.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/HeadFilter.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/LineContains.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/LineContainsRegexp.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/PrefixLines.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/ReplaceRegexp.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/ReplaceTokens.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/StripLineBreaks.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/StripLineComments.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/StripPhpComments.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/StripWhitespace.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/TabToSpaces.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/TailFilter.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/TidyFilter.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/TranslateGettext.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/XincludeFilter.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/XsltFilter.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/util/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/util/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/util/.svn/prop-base/ChainReaderHelper.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/util/.svn/prop-base/IniFileTokenReader.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/util/.svn/text-base/ChainReaderHelper.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/util/.svn/text-base/IniFileTokenReader.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/util/ChainReaderHelper.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/util/IniFileTokenReader.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/input/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/input/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/input/.svn/prop-base/DefaultInputHandler.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/input/.svn/prop-base/InputHandler.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/input/.svn/prop-base/InputRequest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/input/.svn/prop-base/MultipleChoiceInputRequest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/input/.svn/prop-base/PropertyFileInputHandler.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/input/.svn/prop-base/YesNoInputRequest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/input/.svn/text-base/DefaultInputHandler.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/input/.svn/text-base/InputHandler.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/input/.svn/text-base/InputRequest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/input/.svn/text-base/MultipleChoiceInputRequest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/input/.svn/text-base/PropertyFileInputHandler.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/input/.svn/text-base/YesNoInputRequest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/input/DefaultInputHandler.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/input/InputHandler.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/input/InputRequest.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/input/MultipleChoiceInputRequest.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/input/PropertyFileInputHandler.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/input/YesNoInputRequest.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/lib/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/lib/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/lib/.svn/prop-base/Capsule.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/lib/.svn/prop-base/Zip.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/lib/.svn/text-base/Capsule.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/lib/.svn/text-base/Zip.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/lib/Capsule.php create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/lib/Zip.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/listener/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/listener/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/listener/.svn/prop-base/AnsiColorLogger.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/listener/.svn/prop-base/DefaultLogger.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/listener/.svn/prop-base/NoBannerLogger.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/listener/.svn/prop-base/PearLogListener.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/listener/.svn/prop-base/XmlLogger.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/listener/.svn/prop-base/defaults.properties.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/listener/.svn/text-base/AnsiColorLogger.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/listener/.svn/text-base/DefaultLogger.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/listener/.svn/text-base/NoBannerLogger.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/listener/.svn/text-base/PearLogListener.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/listener/.svn/text-base/StreamRequiredBuildLogger.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/listener/.svn/text-base/XmlLogger.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/listener/.svn/text-base/defaults.properties.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/listener/AnsiColorLogger.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/listener/DefaultLogger.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/listener/NoBannerLogger.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/listener/PearLogListener.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/listener/StreamRequiredBuildLogger.php create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/listener/XmlLogger.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/listener/defaults.properties create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/mappers/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/mappers/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/mappers/.svn/prop-base/FileNameMapper.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/mappers/.svn/prop-base/FlattenMapper.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/mappers/.svn/prop-base/GlobMapper.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/mappers/.svn/prop-base/IdentityMapper.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/mappers/.svn/prop-base/MergeMapper.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/mappers/.svn/prop-base/RegexpMapper.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/mappers/.svn/text-base/FileNameMapper.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/mappers/.svn/text-base/FlattenMapper.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/mappers/.svn/text-base/GlobMapper.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/mappers/.svn/text-base/IdentityMapper.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/mappers/.svn/text-base/MergeMapper.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/mappers/.svn/text-base/RegexpMapper.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/mappers/FileNameMapper.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/mappers/FlattenMapper.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/mappers/GlobMapper.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/mappers/IdentityMapper.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/mappers/MergeMapper.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/mappers/RegexpMapper.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/.svn/prop-base/AbstractHandler.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/.svn/prop-base/AbstractSAXParser.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/.svn/prop-base/DataTypeHandler.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/.svn/prop-base/ExpatParseException.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/.svn/prop-base/ExpatParser.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/.svn/prop-base/Location.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/.svn/prop-base/NestedElementHandler.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/.svn/prop-base/ProjectConfigurator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/.svn/prop-base/ProjectHandler.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/.svn/prop-base/RootHandler.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/.svn/prop-base/TargetHandler.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/.svn/prop-base/TaskHandler.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/.svn/text-base/AbstractHandler.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/.svn/text-base/AbstractSAXParser.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/.svn/text-base/DataTypeHandler.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/.svn/text-base/ExpatParseException.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/.svn/text-base/ExpatParser.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/.svn/text-base/Location.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/.svn/text-base/NestedElementHandler.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/.svn/text-base/ProjectConfigurator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/.svn/text-base/ProjectHandler.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/.svn/text-base/RootHandler.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/.svn/text-base/TargetHandler.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/.svn/text-base/TaskHandler.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/AbstractHandler.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/AbstractSAXParser.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/DataTypeHandler.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/ExpatParseException.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/ExpatParser.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/Location.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/NestedElementHandler.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/ProjectConfigurator.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/ProjectHandler.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/RootHandler.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/TargetHandler.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/TaskHandler.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/.svn/prop-base/BufferedReader.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/.svn/prop-base/BufferedWriter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/.svn/prop-base/ConsoleReader.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/.svn/prop-base/FileReader.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/.svn/prop-base/FileSystem.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/.svn/prop-base/FileWriter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/.svn/prop-base/FilterReader.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/.svn/prop-base/IOException.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/.svn/prop-base/PhingFile.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/.svn/prop-base/Reader.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/.svn/prop-base/StringReader.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/.svn/prop-base/UnixFileSystem.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/.svn/prop-base/Win32FileSystem.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/.svn/prop-base/WinNTFileSystem.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/.svn/prop-base/Writer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/.svn/text-base/BufferedReader.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/.svn/text-base/BufferedWriter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/.svn/text-base/ConsoleReader.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/.svn/text-base/FileInputStream.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/.svn/text-base/FileOutputStream.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/.svn/text-base/FileReader.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/.svn/text-base/FileSystem.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/.svn/text-base/FileWriter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/.svn/text-base/FilterReader.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/.svn/text-base/IOException.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/.svn/text-base/InputStream.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/.svn/text-base/InputStreamReader.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/.svn/text-base/OutputStream.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/.svn/text-base/OutputStreamWriter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/.svn/text-base/PhingFile.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/.svn/text-base/Reader.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/.svn/text-base/StringReader.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/.svn/text-base/UnixFileSystem.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/.svn/text-base/Win32FileSystem.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/.svn/text-base/WinNTFileSystem.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/.svn/text-base/Writer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/BufferedReader.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/BufferedWriter.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/ConsoleReader.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/FileInputStream.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/FileOutputStream.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/FileReader.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/FileSystem.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/FileWriter.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/FilterReader.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/IOException.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/InputStream.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/InputStreamReader.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/OutputStream.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/OutputStreamWriter.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/PhingFile.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/Reader.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/StringReader.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/UnixFileSystem.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/Win32FileSystem.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/WinNTFileSystem.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/Writer.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/lang/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/lang/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/lang/.svn/prop-base/Character.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/lang/.svn/prop-base/EventObject.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/lang/.svn/prop-base/FileNotFoundException.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/lang/.svn/prop-base/NullPointerException.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/lang/.svn/prop-base/SecurityException.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/lang/.svn/text-base/Character.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/lang/.svn/text-base/EventObject.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/lang/.svn/text-base/FileNotFoundException.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/lang/.svn/text-base/NullPointerException.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/lang/.svn/text-base/SecurityException.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/lang/Character.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/lang/EventObject.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/lang/FileNotFoundException.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/lang/NullPointerException.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/lang/SecurityException.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/util/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/util/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/util/.svn/prop-base/Message.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/util/.svn/prop-base/Properties.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/util/.svn/prop-base/Register.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/util/.svn/prop-base/Timer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/util/.svn/text-base/Message.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/util/.svn/text-base/Properties.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/util/.svn/text-base/Register.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/util/.svn/text-base/Timer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/util/Message.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/util/Properties.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/util/Register.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/util/Timer.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/.svn/prop-base/defaults.properties.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/.svn/text-base/defaults.properties.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/defaults.properties create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/.svn/prop-base/CapsuleTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/.svn/prop-base/ExtractBaseTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/.svn/prop-base/FtpDeployTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/.svn/prop-base/MailTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/.svn/prop-base/ManifestTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/.svn/prop-base/PackageAsPathTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/.svn/prop-base/PearPackage2Task.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/.svn/prop-base/PearPackageTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/.svn/prop-base/PhpLintTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/.svn/prop-base/ScpSendTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/.svn/prop-base/SmartyTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/.svn/prop-base/TarTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/.svn/prop-base/UntarTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/.svn/prop-base/UnzipTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/.svn/prop-base/XmlLintTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/.svn/prop-base/ZendCodeAnalyzerTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/.svn/prop-base/ZipTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/.svn/text-base/CapsuleTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/.svn/text-base/ExtractBaseTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/.svn/text-base/FtpDeployTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/.svn/text-base/JslLintTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/.svn/text-base/MailTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/.svn/text-base/ManifestTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/.svn/text-base/PackageAsPathTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/.svn/text-base/PearPackage2Task.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/.svn/text-base/PearPackageTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/.svn/text-base/PhpCodeSnifferTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/.svn/text-base/PhpLintTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/.svn/text-base/ScpSendTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/.svn/text-base/SmartyTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/.svn/text-base/TarTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/.svn/text-base/UntarTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/.svn/text-base/UnzipTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/.svn/text-base/XmlLintTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/.svn/text-base/ZendCodeAnalyzerTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/.svn/text-base/ZipTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/CapsuleTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ExtractBaseTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/FtpDeployTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/JslLintTask.php create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/MailTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ManifestTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/PackageAsPathTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/PearPackage2Task.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/PearPackageTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/PhpCodeSnifferTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/PhpLintTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ScpSendTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/SmartyTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/TarTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/UntarTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/UnzipTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/XmlLintTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ZendCodeAnalyzerTask.php create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ZipTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/coverage/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/coverage/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/coverage/.svn/prop-base/CoverageMerger.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/coverage/.svn/prop-base/CoverageMergerTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/coverage/.svn/prop-base/CoverageReportTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/coverage/.svn/prop-base/CoverageReportTransformer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/coverage/.svn/prop-base/CoverageSetupTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/coverage/.svn/text-base/CoverageMerger.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/coverage/.svn/text-base/CoverageMergerTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/coverage/.svn/text-base/CoverageReportTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/coverage/.svn/text-base/CoverageReportTransformer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/coverage/.svn/text-base/CoverageSetupTask.php.svn-base create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/coverage/CoverageMerger.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/coverage/CoverageMergerTask.php create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/coverage/CoverageReportTask.php create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/coverage/CoverageReportTransformer.php create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/coverage/CoverageSetupTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/creole/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/creole/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/creole/.svn/prop-base/CreoleSQLExecTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/creole/.svn/prop-base/CreoleTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/creole/.svn/text-base/CreoleSQLExecTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/creole/.svn/text-base/CreoleTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/creole/CreoleSQLExecTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/creole/CreoleTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/.svn/prop-base/DbDeployTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/.svn/text-base/DbDeployTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/.svn/text-base/DbmsSyntax.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/.svn/text-base/DbmsSyntaxFactory.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/.svn/text-base/DbmsSyntaxMsSql.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/.svn/text-base/DbmsSyntaxMysql.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/.svn/text-base/DbmsSyntaxSQLite.php.svn-base create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/DbDeployTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/DbmsSyntax.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/DbmsSyntaxFactory.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/DbmsSyntaxMsSql.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/DbmsSyntaxMysql.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/DbmsSyntaxSQLite.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ioncube/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ioncube/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ioncube/.svn/prop-base/IoncubeComment.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ioncube/.svn/prop-base/IoncubeEncoderTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ioncube/.svn/prop-base/IoncubeLicenseTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ioncube/.svn/text-base/IoncubeComment.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ioncube/.svn/text-base/IoncubeEncoderTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ioncube/.svn/text-base/IoncubeLicenseTask.php.svn-base create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ioncube/IoncubeComment.php create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ioncube/IoncubeEncoderTask.php create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ioncube/IoncubeLicenseTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/.svn/text-base/PDOResultFormatter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/.svn/text-base/PDOSQLExecFormatterElement.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/.svn/text-base/PDOSQLExecTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/.svn/text-base/PDOTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/.svn/text-base/PlainPDOResultFormatter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/.svn/text-base/XMLPDOResultFormatter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/PDOResultFormatter.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/PDOSQLExecFormatterElement.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/PDOSQLExecTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/PDOTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/PlainPDOResultFormatter.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/XMLPDOResultFormatter.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pearpackage/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pearpackage/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pearpackage/.svn/prop-base/Fileset.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pearpackage/.svn/text-base/Fileset.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pearpackage/Fileset.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpdoc/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpdoc/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpdoc/.svn/prop-base/PhingPhpDocumentorSetup.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpdoc/.svn/prop-base/PhpDocumentorExternalTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpdoc/.svn/prop-base/PhpDocumentorTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpdoc/.svn/text-base/PhingPhpDocumentorSetup.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpdoc/.svn/text-base/PhpDocumentorExternalTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpdoc/.svn/text-base/PhpDocumentorTask.php.svn-base create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpdoc/PhingPhpDocumentorSetup.php create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpdoc/PhpDocumentorExternalTask.php create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpdoc/PhpDocumentorTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/prop-base/BatchTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/prop-base/FormatterElement.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/prop-base/PHPUnitReportTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/prop-base/PHPUnitTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/prop-base/PHPUnitTestRunner.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/prop-base/PHPUnitUtil.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/text-base/BatchTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/text-base/FormatterElement.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/text-base/PHPUnitReportTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/text-base/PHPUnitTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/text-base/PHPUnitTestRunner.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/text-base/PHPUnitUtil.php.svn-base create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/BatchTest.php create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/FormatterElement.php create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/PHPUnitReportTask.php create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/PHPUnitTask.php create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/PHPUnitTestRunner.php create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/PHPUnitUtil.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/.svn/prop-base/PHPUnit2ResultFormatter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/.svn/prop-base/PlainPHPUnit2ResultFormatter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/.svn/prop-base/SummaryPHPUnit2ResultFormatter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/.svn/prop-base/XMLPHPUnit2ResultFormatter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/.svn/text-base/PHPUnit2ResultFormatter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/.svn/text-base/PlainPHPUnit2ResultFormatter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/.svn/text-base/SummaryPHPUnit2ResultFormatter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/.svn/text-base/XMLPHPUnit2ResultFormatter.php.svn-base create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/PHPUnit2ResultFormatter.php create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/PlainPHPUnit2ResultFormatter.php create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/SummaryPHPUnit2ResultFormatter.php create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/XMLPHPUnit2ResultFormatter.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit3/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit3/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit3/.svn/text-base/PHPUnit3ResultFormatter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit3/.svn/text-base/PlainPHPUnit3ResultFormatter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit3/.svn/text-base/SummaryPHPUnit3ResultFormatter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit3/.svn/text-base/XMLPHPUnit3ResultFormatter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit3/PHPUnit3ResultFormatter.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit3/PlainPHPUnit3ResultFormatter.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit3/SummaryPHPUnit3ResultFormatter.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit3/XMLPHPUnit3ResultFormatter.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/prop-base/SimpleTestCountResultFormatter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/prop-base/SimpleTestFormatterElement.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/prop-base/SimpleTestPlainResultFormatter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/prop-base/SimpleTestResultFormatter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/prop-base/SimpleTestSummaryResultFormatter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/prop-base/SimpleTestTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/text-base/SimpleTestCountResultFormatter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/text-base/SimpleTestFormatterElement.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/text-base/SimpleTestPlainResultFormatter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/text-base/SimpleTestResultFormatter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/text-base/SimpleTestSummaryResultFormatter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/text-base/SimpleTestTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/SimpleTestCountResultFormatter.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/SimpleTestFormatterElement.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/SimpleTestPlainResultFormatter.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/SimpleTestResultFormatter.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/SimpleTestSummaryResultFormatter.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/SimpleTestTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/.svn/prop-base/SvnBaseTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/.svn/prop-base/SvnCheckoutTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/.svn/prop-base/SvnExportTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/.svn/prop-base/SvnLastRevisionTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/.svn/prop-base/SvnUpdateTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/.svn/text-base/SvnBaseTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/.svn/text-base/SvnCheckoutTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/.svn/text-base/SvnExportTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/.svn/text-base/SvnLastRevisionTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/.svn/text-base/SvnUpdateTask.php.svn-base create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/SvnBaseTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/SvnCheckoutTask.php create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/SvnExportTask.php create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/SvnLastRevisionTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/SvnUpdateTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/AdhocTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/AdhocTaskdefTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/AdhocTypedefTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/AppendTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/AvailableTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/ChmodTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/ChownTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/ConditionTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/CopyTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/CvsPassTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/CvsTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/DeleteTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/EchoTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/ExecTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/ExitTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/ForeachTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/IfTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/IncludePathTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/InputTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/MatchingTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/MkdirTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/MoveTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/PhingCallTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/PhingTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/PhpEvalTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/PropertyPromptTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/PropertyTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/ReflexiveTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/ResolvePathTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/SequentialTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/TaskdefTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/TouchTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/TstampTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/TypedefTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/UpToDateTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/WarnTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/XsltTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/AdhocTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/AdhocTaskdefTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/AdhocTypedefTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/AppendTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/AvailableTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/ChmodTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/ChownTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/ConditionTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/CopyTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/CvsPassTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/CvsTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/DeleteTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/EchoTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/ExecTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/ExitTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/ForeachTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/IfTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/IncludePathTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/InputTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/MatchingTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/MkdirTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/MoveTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/PhingCallTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/PhingTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/PhpEvalTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/PropertyPromptTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/PropertyTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/ReflexiveTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/ResolvePathTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/SequentialTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/TaskdefTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/TouchTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/TstampTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/TypedefTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/UpToDateTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/WarnTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/XsltTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/AdhocTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/AdhocTaskdefTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/AdhocTypedefTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/AppendTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/AvailableTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/ChmodTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/ChownTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/ConditionTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/CopyTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/CvsPassTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/CvsTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/DeleteTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/EchoTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/ExecTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/ExitTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/ForeachTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/IfTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/IncludePathTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/InputTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/MatchingTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/MkdirTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/MoveTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/PhingCallTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/PhingTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/PhpEvalTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/PropertyPromptTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/PropertyTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/ReflexiveTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/ResolvePathTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/SequentialTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/TaskdefTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/TouchTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/TstampTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/TypedefTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/UpToDateTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/WarnTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/XsltTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/prop-base/AndCondition.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/prop-base/Condition.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/prop-base/ConditionBase.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/prop-base/ContainsCondition.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/prop-base/EqualsCondition.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/prop-base/IsFalseCondition.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/prop-base/IsSetCondition.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/prop-base/IsTrueCondition.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/prop-base/NotCondition.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/prop-base/OrCondition.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/prop-base/OsCondition.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/prop-base/ReferenceExistsCondition.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/text-base/AndCondition.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/text-base/Condition.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/text-base/ConditionBase.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/text-base/ContainsCondition.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/text-base/EqualsCondition.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/text-base/IsFalseCondition.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/text-base/IsSetCondition.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/text-base/IsTrueCondition.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/text-base/NotCondition.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/text-base/OrCondition.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/text-base/OsCondition.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/text-base/ReferenceExistsCondition.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/AndCondition.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/Condition.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/ConditionBase.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/ContainsCondition.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/EqualsCondition.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/IsFalseCondition.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/IsSetCondition.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/IsTrueCondition.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/NotCondition.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/OrCondition.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/OsCondition.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/ReferenceExistsCondition.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/AbstractFileSet.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/Commandline.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/DataType.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/Description.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/DirSet.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/FileList.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/FileSet.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/FilterChain.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/Mapper.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/Parameter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/Parameterizable.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/Path.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/PatternSet.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/PhingFilterReader.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/Reference.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/RegularExpression.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/TokenReader.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/TokenSource.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/defaults.properties.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/AbstractFileSet.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/Commandline.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/DataType.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/Description.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/DirSet.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/FileList.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/FileSet.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/FilterChain.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/Mapper.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/Parameter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/Parameterizable.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/Path.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/PatternSet.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/PhingFilterReader.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/Reference.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/RegularExpression.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/TokenReader.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/TokenSource.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/defaults.properties.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/AbstractFileSet.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/Commandline.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/DataType.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/Description.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/DirSet.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/FileList.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/FileSet.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/FilterChain.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/Mapper.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/Parameter.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/Parameterizable.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/Path.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/PatternSet.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/PhingFilterReader.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/Reference.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/RegularExpression.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/TokenReader.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/TokenSource.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/defaults.properties create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/AndSelector.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/BaseExtendSelector.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/BaseSelector.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/BaseSelectorContainer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/ContainsRegexpSelector.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/ContainsSelector.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/DateSelector.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/DependSelector.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/DepthSelector.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/ExtendFileSelector.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/ExtendSelector.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/FileSelector.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/FilenameSelector.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/MajoritySelector.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/NoneSelector.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/NotSelector.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/OrSelector.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/PresentSelector.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/SelectSelector.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/SelectorContainer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/SelectorScanner.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/SelectorUtils.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/SizeSelector.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/TypeSelector.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/AndSelector.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/BaseExtendSelector.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/BaseSelector.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/BaseSelectorContainer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/ContainsRegexpSelector.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/ContainsSelector.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/DateSelector.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/DependSelector.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/DepthSelector.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/ExtendFileSelector.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/ExtendSelector.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/FileSelector.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/FilenameSelector.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/MajoritySelector.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/NoneSelector.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/NotSelector.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/OrSelector.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/PresentSelector.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/SelectSelector.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/SelectorContainer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/SelectorScanner.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/SelectorUtils.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/SizeSelector.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/TypeSelector.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/AndSelector.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/BaseExtendSelector.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/BaseSelector.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/BaseSelectorContainer.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/ContainsRegexpSelector.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/ContainsSelector.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/DateSelector.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/DependSelector.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/DepthSelector.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/ExtendFileSelector.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/ExtendSelector.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/FileSelector.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/FilenameSelector.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/MajoritySelector.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/NoneSelector.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/NotSelector.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/OrSelector.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/PresentSelector.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/SelectSelector.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/SelectorContainer.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/SelectorScanner.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/SelectorUtils.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/SizeSelector.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/TypeSelector.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/prop-base/DirectoryScanner.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/prop-base/ExtendedFileStream.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/prop-base/FileUtils.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/prop-base/LogWriter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/prop-base/PathTokenizer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/prop-base/SourceFileScanner.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/prop-base/StringHelper.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/text-base/DirectoryScanner.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/text-base/ExtendedFileStream.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/text-base/FileUtils.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/text-base/LogWriter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/text-base/PathTokenizer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/text-base/SourceFileScanner.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/text-base/StringHelper.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/DirectoryScanner.php create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/ExtendedFileStream.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/FileUtils.php create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/LogWriter.php create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/PathTokenizer.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/SourceFileScanner.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/StringHelper.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/regexp/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/regexp/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/regexp/.svn/prop-base/PregEngine.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/regexp/.svn/prop-base/Regexp.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/regexp/.svn/prop-base/RegexpEngine.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/regexp/.svn/text-base/PregEngine.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/regexp/.svn/text-base/Regexp.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/regexp/.svn/text-base/RegexpEngine.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/regexp/PregEngine.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/regexp/Regexp.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/regexp/RegexpEngine.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/.svn/dir-prop-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/.svn/prop-base/build-propel.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/.svn/prop-base/build.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/.svn/prop-base/default.properties.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/.svn/text-base/build-propel.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/.svn/text-base/build.properties-sample.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/.svn/text-base/build.xml-local.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/.svn/text-base/build.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/.svn/text-base/default.properties.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/bin/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/bin/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/bin/.svn/prop-base/propel-gen.bat.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/bin/.svn/prop-base/propel-gen.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/bin/.svn/text-base/propel-gen.bat.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/bin/.svn/text-base/propel-gen.svn-base create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/bin/propel-gen create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/bin/propel-gen.bat create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/build-propel.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/build.properties-sample create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/build.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/build.xml-local create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/.svn/prop-base/EngineException.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/.svn/prop-base/GeneratorConfig.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/.svn/text-base/EngineException.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/.svn/text-base/GeneratorConfig.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/EngineException.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/GeneratorConfig.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/.svn/prop-base/AlternativeCodingStandardsBehavior.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/.svn/prop-base/AutoAddPkBehavior.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/.svn/prop-base/SoftDeleteBehavior.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/.svn/prop-base/TimestampableBehavior.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/.svn/text-base/AlternativeCodingStandardsBehavior.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/.svn/text-base/AutoAddPkBehavior.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/.svn/text-base/SoftDeleteBehavior.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/.svn/text-base/TimestampableBehavior.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/AlternativeCodingStandardsBehavior.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/AutoAddPkBehavior.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/SoftDeleteBehavior.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/TimestampableBehavior.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/.svn/prop-base/DataModelBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/.svn/text-base/DataModelBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/DataModelBuilder.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/.svn/prop-base/ClassTools.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/.svn/prop-base/OMBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/.svn/prop-base/ObjectBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/.svn/prop-base/PeerBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/.svn/text-base/ClassTools.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/.svn/text-base/OMBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/.svn/text-base/ObjectBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/.svn/text-base/PeerBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/ClassTools.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/OMBuilder.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/ObjectBuilder.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/PeerBuilder.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5ExtensionNodeBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5ExtensionNodePeerBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5ExtensionObjectBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5ExtensionPeerBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5InterfaceBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5MultiExtendObjectBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5NestedSetBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5NestedSetPeerBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5NodeBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5NodePeerBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5ObjectBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5PeerBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5TableMapBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5ExtensionNodeBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5ExtensionNodePeerBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5ExtensionObjectBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5ExtensionPeerBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5InterfaceBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5MultiExtendObjectBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5NestedSetBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5NestedSetPeerBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5NodeBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5NodePeerBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5ObjectBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5PeerBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5TableMapBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5ExtensionNodeBuilder.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5ExtensionNodePeerBuilder.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5ExtensionObjectBuilder.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5ExtensionPeerBuilder.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5InterfaceBuilder.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5MultiExtendObjectBuilder.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5NestedSetBuilder.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5NestedSetPeerBuilder.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5NodeBuilder.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5NodePeerBuilder.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5ObjectBuilder.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5PeerBuilder.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5TableMapBuilder.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/.svn/prop-base/DDLBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/.svn/prop-base/DataSQLBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/.svn/text-base/DDLBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/.svn/text-base/DataSQLBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/DDLBuilder.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/DataSQLBuilder.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mssql/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mssql/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mssql/.svn/prop-base/MssqlDDLBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mssql/.svn/prop-base/MssqlDataSQLBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mssql/.svn/text-base/MssqlDDLBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mssql/.svn/text-base/MssqlDataSQLBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mssql/MssqlDDLBuilder.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mssql/MssqlDataSQLBuilder.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mysql/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mysql/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mysql/.svn/prop-base/MysqlDDLBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mysql/.svn/prop-base/MysqlDataSQLBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mysql/.svn/text-base/MysqlDDLBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mysql/.svn/text-base/MysqlDataSQLBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mysql/MysqlDDLBuilder.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mysql/MysqlDataSQLBuilder.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/oracle/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/oracle/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/oracle/.svn/prop-base/OracleDDLBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/oracle/.svn/prop-base/OracleDataSQLBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/oracle/.svn/text-base/OracleDDLBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/oracle/.svn/text-base/OracleDataSQLBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/oracle/OracleDDLBuilder.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/oracle/OracleDataSQLBuilder.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/pgsql/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/pgsql/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/pgsql/.svn/prop-base/PgsqlDDLBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/pgsql/.svn/prop-base/PgsqlDataSQLBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/pgsql/.svn/text-base/PgsqlDDLBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/pgsql/.svn/text-base/PgsqlDataSQLBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/pgsql/PgsqlDDLBuilder.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/pgsql/PgsqlDataSQLBuilder.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/sqlite/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/sqlite/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/sqlite/.svn/prop-base/SqliteDDLBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/sqlite/.svn/prop-base/SqliteDataSQLBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/sqlite/.svn/text-base/SqliteDDLBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/sqlite/.svn/text-base/SqliteDataSQLBuilder.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/sqlite/SqliteDDLBuilder.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/sqlite/SqliteDataSQLBuilder.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/.svn/prop-base/DefaultEnglishPluralizer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/.svn/prop-base/Pluralizer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/.svn/text-base/DefaultEnglishPluralizer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/.svn/text-base/Pluralizer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/DefaultEnglishPluralizer.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/Pluralizer.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/transform/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/transform/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/transform/.svn/prop-base/XmlToDataSQL.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/transform/.svn/text-base/XmlToDataSQL.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/transform/XmlToDataSQL.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/AppData.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/Behavior.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/Column.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/ColumnDefaultValue.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/ConstraintNameGenerator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/Database.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/Domain.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/ForeignKey.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/IDMethod.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/IdMethodParameter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/Index.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/Inheritance.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/NameFactory.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/NameGenerator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/PhpNameGenerator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/PropelTypes.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/Rule.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/Table.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/Unique.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/Validator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/VendorInfo.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/XMLElement.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/AppData.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/Behavior.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/Column.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/ColumnDefaultValue.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/ConstraintNameGenerator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/Database.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/Domain.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/ForeignKey.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/IDMethod.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/IdMethodParameter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/Index.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/Inheritance.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/NameFactory.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/NameGenerator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/PhpNameGenerator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/PropelTypes.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/Rule.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/Table.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/Unique.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/Validator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/VendorInfo.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/XMLElement.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/AppData.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Behavior.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Column.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/ColumnDefaultValue.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/ConstraintNameGenerator.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Database.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Domain.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/ForeignKey.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/IDMethod.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/IdMethodParameter.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Index.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Inheritance.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/NameFactory.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/NameGenerator.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/PhpNameGenerator.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/PropelTypes.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Rule.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Table.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Unique.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Validator.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/VendorInfo.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/XMLElement.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/.svn/prop-base/BaseSchemaParser.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/.svn/prop-base/SchemaParser.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/.svn/text-base/BaseSchemaParser.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/.svn/text-base/SchemaParser.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/BaseSchemaParser.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/SchemaParser.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/mssql/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/mssql/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/mssql/.svn/prop-base/MssqlSchemaParser.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/mssql/.svn/text-base/MssqlSchemaParser.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/mssql/MssqlSchemaParser.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/mysql/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/mysql/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/mysql/.svn/prop-base/MysqlSchemaParser.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/mysql/.svn/text-base/MysqlSchemaParser.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/mysql/MysqlSchemaParser.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/oracle/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/oracle/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/oracle/.svn/prop-base/OracleSchemaParser.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/oracle/.svn/text-base/OracleSchemaParser.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/oracle/OracleSchemaParser.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/pgsql/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/pgsql/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/pgsql/.svn/prop-base/PgsqlSchemaParser.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/pgsql/.svn/text-base/PgsqlSchemaParser.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/pgsql/PgsqlSchemaParser.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/sqlite/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/sqlite/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/sqlite/.svn/prop-base/SqliteSchemaParser.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/sqlite/.svn/text-base/SqliteSchemaParser.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/sqlite/SqliteSchemaParser.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/transform/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/transform/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/transform/.svn/prop-base/XmlToAppData.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/transform/.svn/text-base/XmlToAppData.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/transform/XmlToAppData.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/prop-base/DefaultPlatform.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/prop-base/MssqlPlatform.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/prop-base/MysqlPlatform.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/prop-base/OraclePlatform.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/prop-base/PgsqlPlatform.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/prop-base/Platform.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/prop-base/SqlitePlatform.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/text-base/DefaultPlatform.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/text-base/MssqlPlatform.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/text-base/MysqlPlatform.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/text-base/OraclePlatform.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/text-base/PgsqlPlatform.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/text-base/Platform.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/text-base/SqlitePlatform.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/DefaultPlatform.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/MssqlPlatform.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/MysqlPlatform.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/OraclePlatform.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/PgsqlPlatform.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/Platform.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/SqlitePlatform.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/prop-base/AbstractPropelDataModelTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/prop-base/PropelConvertConfTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/prop-base/PropelCreoleTransformTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/prop-base/PropelDataDTDTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/prop-base/PropelDataDumpTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/prop-base/PropelDataModelTemplateTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/prop-base/PropelDataSQLTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/prop-base/PropelGraphvizTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/prop-base/PropelOMTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/prop-base/PropelSQLExec.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/prop-base/PropelSQLTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/prop-base/PropelSchemaReverseTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/text-base/AbstractPropelDataModelTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/text-base/PropelConvertConfTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/text-base/PropelCreoleTransformTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/text-base/PropelDataDTDTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/text-base/PropelDataDumpTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/text-base/PropelDataModelTemplateTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/text-base/PropelDataSQLTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/text-base/PropelGraphvizTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/text-base/PropelOMTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/text-base/PropelSQLExec.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/text-base/PropelSQLTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/text-base/PropelSchemaReverseTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/AbstractPropelDataModelTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelConvertConfTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelCreoleTransformTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelDataDTDTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelDataDumpTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelDataModelTemplateTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelDataSQLTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelGraphvizTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelOMTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelSQLExec.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelSQLTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelSchemaReverseTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/default.properties create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/.svn/prop-base/BuildPropelGenPEARPackageTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/.svn/prop-base/build-pear-package.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/.svn/prop-base/build.properties.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/.svn/prop-base/pear-build.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/.svn/text-base/BuildPropelGenPEARPackageTask.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/.svn/text-base/build-pear-package.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/.svn/text-base/build.properties.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/.svn/text-base/pear-build.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/.svn/text-base/pear-propel-gen.bat.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/.svn/text-base/pear-propel-gen.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/BuildPropelGenPEARPackageTask.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/build-pear-package.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/build.properties create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/pear-build.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/pear-propel-gen create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/pear-propel-gen.bat create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/dtd/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/dtd/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/dtd/.svn/text-base/database.dtd.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/dtd/database.dtd create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsd/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsd/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsd/.svn/prop-base/custom_datatypes.xsd.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsd/.svn/prop-base/database.xsd.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsd/.svn/text-base/custom_datatypes.xsd.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsd/.svn/text-base/database.xsd.svn-base create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsd/custom_datatypes.xsd create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsd/database.xsd create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsl/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsl/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsl/.svn/prop-base/database.xsl.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsl/.svn/text-base/database.xsl.svn-base create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsl/database.xsl create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/.svn/prop-base/Propel.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/.svn/prop-base/PropelException.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/.svn/text-base/Propel.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/.svn/text-base/PropelException.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/Propel.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/PropelException.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/prop-base/DBAdapter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/prop-base/DBMSSQL.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/prop-base/DBMySQL.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/prop-base/DBNone.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/prop-base/DBOracle.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/prop-base/DBPostgres.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/prop-base/DBSQLite.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/text-base/DBAdapter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/text-base/DBMSSQL.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/text-base/DBMySQL.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/text-base/DBNone.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/text-base/DBOracle.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/text-base/DBPostgres.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/text-base/DBSQLite.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/DBAdapter.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/DBMSSQL.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/DBMySQL.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/DBNone.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/DBOracle.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/DBPostgres.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/DBSQLite.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/MSSQL/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/MSSQL/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/MSSQL/.svn/prop-base/MssqlDateTime.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/MSSQL/.svn/prop-base/MssqlDebugPDO.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/MSSQL/.svn/prop-base/MssqlPropelPDO.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/MSSQL/.svn/text-base/MssqlDateTime.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/MSSQL/.svn/text-base/MssqlDebugPDO.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/MSSQL/.svn/text-base/MssqlPropelPDO.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/MSSQL/MssqlDateTime.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/MSSQL/MssqlDebugPDO.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/MSSQL/MssqlPropelPDO.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/logger/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/logger/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/logger/.svn/prop-base/BasicLogger.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/logger/.svn/prop-base/MojaviLogAdapter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/logger/.svn/text-base/BasicLogger.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/logger/.svn/text-base/MojaviLogAdapter.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/logger/BasicLogger.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/logger/MojaviLogAdapter.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/.svn/prop-base/ColumnMap.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/.svn/prop-base/DatabaseMap.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/.svn/prop-base/RelationMap.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/.svn/prop-base/TableMap.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/.svn/prop-base/ValidatorMap.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/.svn/text-base/ColumnMap.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/.svn/text-base/DatabaseMap.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/.svn/text-base/RelationMap.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/.svn/text-base/TableMap.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/.svn/text-base/ValidatorMap.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/ColumnMap.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/DatabaseMap.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/RelationMap.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/TableMap.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/ValidatorMap.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/.svn/prop-base/BaseObject.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/.svn/prop-base/NestedSetRecursiveIterator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/.svn/prop-base/NodeObject.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/.svn/prop-base/Persistent.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/.svn/prop-base/PreOrderNodeIterator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/.svn/text-base/BaseObject.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/.svn/text-base/NestedSetRecursiveIterator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/.svn/text-base/NodeObject.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/.svn/text-base/Persistent.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/.svn/text-base/PreOrderNodeIterator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/BaseObject.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/NestedSetRecursiveIterator.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/NodeObject.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/Persistent.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/PreOrderNodeIterator.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/prop-base/BasePeer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/prop-base/Criteria.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/prop-base/DebugPDO.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/prop-base/DebugPDOStatement.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/prop-base/Join.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/prop-base/NodePeer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/prop-base/PropelColumnTypes.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/prop-base/PropelConfiguration.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/prop-base/PropelConfigurationIterator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/prop-base/PropelDateTime.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/prop-base/PropelPDO.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/prop-base/PropelPager.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/text-base/BasePeer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/text-base/Criteria.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/text-base/DebugPDO.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/text-base/DebugPDOStatement.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/text-base/Join.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/text-base/NodePeer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/text-base/PropelColumnTypes.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/text-base/PropelConfiguration.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/text-base/PropelConfigurationIterator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/text-base/PropelDateTime.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/text-base/PropelPDO.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/text-base/PropelPager.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/BasePeer.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/Criteria.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/DebugPDO.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/DebugPDOStatement.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/Join.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/NodePeer.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/PropelColumnTypes.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/PropelConfiguration.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/PropelConfigurationIterator.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/PropelDateTime.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/PropelPDO.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/PropelPager.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/prop-base/BasicValidator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/prop-base/MatchValidator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/prop-base/MaxLengthValidator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/prop-base/MaxValueValidator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/prop-base/MinLengthValidator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/prop-base/MinValueValidator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/prop-base/NotMatchValidator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/prop-base/RequiredValidator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/prop-base/TypeValidator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/prop-base/UniqueValidator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/prop-base/ValidValuesValidator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/prop-base/ValidationFailed.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/text-base/BasicValidator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/text-base/MatchValidator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/text-base/MaxLengthValidator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/text-base/MaxValueValidator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/text-base/MinLengthValidator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/text-base/MinValueValidator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/text-base/NotMatchValidator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/text-base/RequiredValidator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/text-base/TypeValidator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/text-base/UniqueValidator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/text-base/ValidValuesValidator.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/text-base/ValidationFailed.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/BasicValidator.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/MatchValidator.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/MaxLengthValidator.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/MaxValueValidator.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/MinLengthValidator.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/MinValueValidator.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/NotMatchValidator.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/RequiredValidator.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/TypeValidator.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/UniqueValidator.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/ValidValuesValidator.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/ValidationFailed.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/widget/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/widget/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/widget/.svn/prop-base/sfWidgetFormPropelChoice.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/widget/.svn/text-base/sfWidgetFormPropelChoice.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/widget/sfWidgetFormPropelChoice.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bin/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bin/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bin/.svn/prop-base/prove.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bin/.svn/text-base/prove.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bin/prove.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bootstrap/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bootstrap/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bootstrap/.svn/prop-base/functional.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bootstrap/.svn/prop-base/unit.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bootstrap/.svn/text-base/functional.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bootstrap/.svn/text-base/unit.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bootstrap/functional.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bootstrap/unit.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/.svn/prop-base/formTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/.svn/prop-base/i18nTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/.svn/prop-base/pagerTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/.svn/prop-base/poolingTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/.svn/text-base/formTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/.svn/text-base/i18nTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/.svn/text-base/pagerTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/.svn/text-base/poolingTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/prop-base/crud10Test.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/prop-base/crud2Test.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/prop-base/crud3Test.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/prop-base/crud6Test.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/prop-base/crud7Test.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/prop-base/crud9Test.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/prop-base/crudBrowser.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/prop-base/rest1Test.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/prop-base/rest2Test.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/prop-base/restBrowser.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/text-base/crud10Test.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/text-base/crud2Test.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/text-base/crud3Test.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/text-base/crud6Test.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/text-base/crud7Test.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/text-base/crud9Test.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/text-base/crudBrowser.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/text-base/rest1Test.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/text-base/rest2Test.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/text-base/restBrowser.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/crud10Test.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/crud2Test.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/crud3Test.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/crud6Test.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/crud7Test.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/crud9Test.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/crudBrowser.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/rest1Test.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/rest2Test.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/restBrowser.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/.svn/prop-base/symfony.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/.svn/text-base/symfony.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/.svn/prop-base/backend_compatConfiguration.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/.svn/text-base/app.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/.svn/text-base/backend_compatConfiguration.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/.svn/text-base/cache.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/.svn/text-base/factories.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/.svn/text-base/filters.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/.svn/text-base/routing.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/.svn/text-base/security.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/.svn/text-base/settings.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/.svn/text-base/view.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/app.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/backend_compatConfiguration.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/cache.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/factories.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/filters.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/routing.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/security.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/settings.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/view.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/i18n/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/i18n/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/lib/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/lib/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/lib/.svn/prop-base/myUser.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/lib/.svn/text-base/myUser.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/lib/myUser.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/actions/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/actions/actions.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/config/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/config/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/config/.svn/text-base/generator.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/config/generator.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/templates/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/templates/.svn/prop-base/_body.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/templates/.svn/text-base/_body.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/templates/_body.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/actions/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/actions/actions.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/config/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/config/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/config/.svn/text-base/generator.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/config/generator.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/templates/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/actions/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/actions/actions.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/config/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/config/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/config/.svn/text-base/generator.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/config/generator.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/templates/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/actions/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/actions/actions.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/config/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/config/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/config/.svn/text-base/generator.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/config/generator.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/templates/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/validate/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/validate/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/validate/.svn/text-base/edit.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/validate/edit.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/templates/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/templates/.svn/prop-base/layout.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/templates/.svn/text-base/layout.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/templates/layout.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/.svn/prop-base/crudConfiguration.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/.svn/text-base/app.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/.svn/text-base/cache.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/.svn/text-base/crudConfiguration.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/.svn/text-base/factories.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/.svn/text-base/filters.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/.svn/text-base/routing.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/.svn/text-base/security.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/.svn/text-base/settings.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/.svn/text-base/view.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/app.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/cache.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/crudConfiguration.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/factories.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/filters.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/routing.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/security.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/settings.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/view.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/i18n/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/i18n/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/lib/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/lib/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/lib/.svn/prop-base/myUser.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/lib/.svn/text-base/myUser.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/lib/myUser.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/error/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/error/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/error/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/error/actions/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/error/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/error/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/error/actions/actions.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/error/config/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/error/config/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/error/config/.svn/text-base/generator.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/error/config/generator.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/error/lib/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/error/lib/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/error/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/error/templates/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/templates/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/templates/.svn/prop-base/layout.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/templates/.svn/text-base/layout.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/templates/layout.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/.svn/prop-base/frontendConfiguration.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/.svn/text-base/app.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/.svn/text-base/cache.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/.svn/text-base/factories.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/.svn/text-base/filters.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/.svn/text-base/frontendConfiguration.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/.svn/text-base/routing.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/.svn/text-base/security.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/.svn/text-base/settings.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/.svn/text-base/view.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/app.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/cache.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/factories.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/filters.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/frontendConfiguration.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/routing.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/security.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/settings.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/view.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/i18n/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/i18n/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/lib/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/lib/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/lib/.svn/prop-base/myUser.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/lib/.svn/text-base/myUser.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/lib/myUser.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/attachment/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/attachment/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/attachment/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/attachment/actions/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/attachment/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/attachment/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/attachment/actions/actions.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/attachment/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/attachment/templates/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/attachment/templates/.svn/prop-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/attachment/templates/.svn/text-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/attachment/templates/indexSuccess.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/actions/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/actions/actions.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/templates/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/templates/.svn/prop-base/articleSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/templates/.svn/text-base/articleSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/templates/articleSuccess.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/actions/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/actions/actions.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/.svn/prop-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/.svn/prop-base/movieSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/.svn/prop-base/productsSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/.svn/text-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/.svn/text-base/movieSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/.svn/text-base/productsSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/indexSuccess.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/movieSuccess.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/productsSuccess.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/actions/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/actions/actions.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/templates/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/templates/.svn/prop-base/interfacesSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/templates/.svn/text-base/interfacesSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/templates/interfacesSuccess.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pooling/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pooling/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pooling/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pooling/actions/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pooling/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pooling/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pooling/actions/actions.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/actions/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/actions/actions.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/.svn/prop-base/articleSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/.svn/prop-base/categorySuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/.svn/prop-base/editSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/.svn/text-base/articleSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/.svn/text-base/categorySuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/.svn/text-base/editSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/articleSuccess.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/categorySuccess.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/editSuccess.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/templates/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/templates/.svn/prop-base/layout.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/templates/.svn/text-base/layout.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/templates/layout.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/cache/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/cache/.svn/dir-prop-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/cache/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/.svn/dir-prop-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/.svn/prop-base/ProjectConfiguration.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/.svn/text-base/ProjectConfiguration.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/.svn/text-base/databases.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/.svn/text-base/propel.ini.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/.svn/text-base/properties.ini.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/.svn/text-base/rsync_exclude.txt.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/.svn/text-base/schema.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/ProjectConfiguration.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/databases.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/propel.ini create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/properties.ini create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/rsync_exclude.txt create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/schema.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/data/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/data/.svn/dir-prop-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/data/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/data/.svn/text-base/environment.migrated.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/data/environment.migrated create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/data/fixtures/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/data/fixtures/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/data/fixtures/.svn/text-base/fixtures.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/data/fixtures/fixtures.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/data/migrations/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/data/migrations/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/dir-prop-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/prop-base/ArticleFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/prop-base/AttachmentFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/prop-base/AuthorFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/prop-base/BaseFormFilterPropel.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/prop-base/BookFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/prop-base/CategoryFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/prop-base/MovieFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/prop-base/MovieI18nFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/prop-base/ProductFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/prop-base/ProductI18nFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/text-base/ArticleFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/text-base/AttachmentFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/text-base/AuthorFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/text-base/BaseFormFilterPropel.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/text-base/BookFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/text-base/CategoryFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/text-base/MovieFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/text-base/MovieI18nFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/text-base/ProductFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/text-base/ProductI18nFormFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/ArticleFormFilter.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/AttachmentFormFilter.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/AuthorFormFilter.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/BaseFormFilterPropel.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/BookFormFilter.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/CategoryFormFilter.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/MovieFormFilter.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/MovieI18nFormFilter.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/ProductFormFilter.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/ProductI18nFormFilter.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/.svn/dir-prop-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/.svn/prop-base/ArticleForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/.svn/prop-base/AttachmentForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/.svn/prop-base/AuthorForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/.svn/prop-base/BaseForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/.svn/prop-base/BaseFormPropel.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/.svn/prop-base/BookForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/.svn/prop-base/CategoryForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/.svn/prop-base/MovieForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/.svn/prop-base/MovieI18nForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/.svn/prop-base/ProductForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/.svn/prop-base/ProductI18nForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/.svn/text-base/ArticleForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/.svn/text-base/AttachmentForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/.svn/text-base/AuthorForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/.svn/text-base/BaseForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/.svn/text-base/BaseFormPropel.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/.svn/text-base/BookForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/.svn/text-base/CategoryForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/.svn/text-base/MovieForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/.svn/text-base/MovieI18nForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/.svn/text-base/ProductForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/.svn/text-base/ProductI18nForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/ArticleForm.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/AttachmentForm.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/AuthorForm.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/BaseForm.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/BaseFormPropel.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/BookForm.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/CategoryForm.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/MovieForm.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/MovieI18nForm.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/ProductForm.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/ProductI18nForm.class.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/dir-prop-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/prop-base/Article.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/prop-base/ArticlePeer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/prop-base/Attachment.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/prop-base/AttachmentPeer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/prop-base/Author.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/prop-base/AuthorArticle.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/prop-base/AuthorArticlePeer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/prop-base/AuthorPeer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/prop-base/Book.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/prop-base/BookPeer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/prop-base/Category.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/prop-base/CategoryPeer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/prop-base/Movie.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/prop-base/MovieI18n.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/prop-base/MovieI18nPeer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/prop-base/MoviePeer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/prop-base/Product.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/prop-base/ProductI18n.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/prop-base/ProductI18nPeer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/prop-base/ProductPeer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/text-base/Article.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/text-base/ArticlePeer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/text-base/Attachment.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/text-base/AttachmentPeer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/text-base/Author.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/text-base/AuthorArticle.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/text-base/AuthorArticlePeer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/text-base/AuthorPeer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/text-base/Book.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/text-base/BookPeer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/text-base/Category.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/text-base/CategoryPeer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/text-base/Movie.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/text-base/MovieI18n.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/text-base/MovieI18nPeer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/text-base/MoviePeer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/text-base/Product.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/text-base/ProductI18n.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/text-base/ProductI18nPeer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/text-base/ProductPeer.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/Article.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/ArticlePeer.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/Attachment.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/AttachmentPeer.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/Author.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/AuthorArticle.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/AuthorArticlePeer.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/AuthorPeer.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/Book.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/BookPeer.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/Category.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/CategoryPeer.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/Movie.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/MovieI18n.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/MovieI18nPeer.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/MoviePeer.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/Product.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/ProductI18n.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/ProductI18nPeer.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/ProductPeer.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/log/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/log/.svn/dir-prop-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/log/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/plugins/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/plugins/.svn/entries create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/symfony create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/test/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/test/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/test/functional/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/test/functional/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/formTest.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/i18nTest.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/pagerTest.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/poolingTest.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/.svn/prop-base/sfMixerTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/.svn/prop-base/sfPropelDatabaseSchemaTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/.svn/text-base/sfMixerTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/.svn/text-base/sfPropelDatabaseSchemaTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/database/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/database/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/database/.svn/prop-base/sfPropelDatabaseTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/database/.svn/text-base/sfPropelDatabaseTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/database/sfPropelDatabaseTest.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/debug/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/debug/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/debug/.svn/prop-base/sfWebDebugPanelPropelTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/debug/.svn/text-base/sfWebDebugPanelPropelTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/debug/sfWebDebugPanelPropelTest.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/fixtures/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/fixtures/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/fixtures/.svn/text-base/new_schema.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/fixtures/.svn/text-base/schema.xml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/fixtures/.svn/text-base/schema.yml.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/fixtures/new_schema.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/fixtures/schema.xml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/fixtures/schema.yml create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/form/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/form/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/form/.svn/prop-base/sfFormPropelTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/form/.svn/text-base/sfFormPropelTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/form/sfFormPropelTest.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/sfMixerTest.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/sfPropelDatabaseSchemaTest.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/task/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/task/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/task/.svn/prop-base/sfPhingTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/task/.svn/text-base/sfPhingTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/task/sfPhingTest.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/validator/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/validator/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/validator/.svn/prop-base/sfValidatorPropelUniqueTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/validator/.svn/text-base/sfValidatorPropelUniqueTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/validator/sfValidatorPropelUniqueTest.php create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/css/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/css/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/css/.svn/prop-base/default.css.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/css/.svn/prop-base/global.css.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/css/.svn/text-base/default.css.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/css/.svn/text-base/global.css.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/css/default.css create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/css/global.css create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/entries create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/asc.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/default.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/delete.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/desc.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/edit.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/error.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/first.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/last.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/list.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/new.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/next.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/previous.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/tick.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/text-base/asc.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/text-base/default.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/text-base/delete.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/text-base/desc.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/text-base/edit.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/text-base/error.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/text-base/first.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/text-base/last.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/text-base/list.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/text-base/new.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/text-base/next.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/text-base/previous.png.svn-base create mode 100644 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/text-base/tick.png.svn-base create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/asc.png create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/default.png create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/delete.png create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/desc.png create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/edit.png create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/error.png create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/first.png create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/last.png create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/list.png create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/new.png create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/next.png create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/previous.png create mode 100755 lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/tick.png create mode 100644 lib/vendor/symfony/lib/request/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/request/.svn/entries create mode 100644 lib/vendor/symfony/lib/request/.svn/prop-base/sfRequest.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/request/.svn/prop-base/sfWebRequest.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/request/.svn/text-base/sfRequest.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/request/.svn/text-base/sfWebRequest.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/request/sfRequest.class.php create mode 100644 lib/vendor/symfony/lib/request/sfWebRequest.class.php create mode 100644 lib/vendor/symfony/lib/response/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/response/.svn/entries create mode 100644 lib/vendor/symfony/lib/response/.svn/prop-base/sfResponse.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/response/.svn/prop-base/sfWebResponse.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/response/.svn/text-base/sfResponse.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/response/.svn/text-base/sfWebResponse.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/response/sfResponse.class.php create mode 100644 lib/vendor/symfony/lib/response/sfWebResponse.class.php create mode 100644 lib/vendor/symfony/lib/routing/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/routing/.svn/entries create mode 100644 lib/vendor/symfony/lib/routing/.svn/prop-base/sfObjectRoute.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/routing/.svn/prop-base/sfObjectRouteCollection.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/routing/.svn/prop-base/sfPatternRouting.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/routing/.svn/prop-base/sfRequestRoute.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/routing/.svn/prop-base/sfRoute.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/routing/.svn/prop-base/sfRouteCollection.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/routing/.svn/prop-base/sfRouting.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/routing/.svn/text-base/sfObjectRoute.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/routing/.svn/text-base/sfObjectRouteCollection.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/routing/.svn/text-base/sfPatternRouting.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/routing/.svn/text-base/sfRequestRoute.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/routing/.svn/text-base/sfRoute.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/routing/.svn/text-base/sfRouteCollection.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/routing/.svn/text-base/sfRouting.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/routing/sfObjectRoute.class.php create mode 100644 lib/vendor/symfony/lib/routing/sfObjectRouteCollection.class.php create mode 100644 lib/vendor/symfony/lib/routing/sfPatternRouting.class.php create mode 100644 lib/vendor/symfony/lib/routing/sfRequestRoute.class.php create mode 100644 lib/vendor/symfony/lib/routing/sfRoute.class.php create mode 100644 lib/vendor/symfony/lib/routing/sfRouteCollection.class.php create mode 100644 lib/vendor/symfony/lib/routing/sfRouting.class.php create mode 100644 lib/vendor/symfony/lib/storage/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/storage/.svn/entries create mode 100644 lib/vendor/symfony/lib/storage/.svn/prop-base/sfCacheSessionStorage.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/storage/.svn/prop-base/sfDatabaseSessionStorage.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/storage/.svn/prop-base/sfMySQLSessionStorage.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/storage/.svn/prop-base/sfMySQLiSessionStorage.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/storage/.svn/prop-base/sfNoStorage.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/storage/.svn/prop-base/sfPDOSessionStorage.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/storage/.svn/prop-base/sfPostgreSQLSessionStorage.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/storage/.svn/prop-base/sfSessionStorage.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/storage/.svn/prop-base/sfSessionTestStorage.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/storage/.svn/prop-base/sfStorage.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/storage/.svn/text-base/sfCacheSessionStorage.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/storage/.svn/text-base/sfDatabaseSessionStorage.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/storage/.svn/text-base/sfMySQLSessionStorage.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/storage/.svn/text-base/sfMySQLiSessionStorage.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/storage/.svn/text-base/sfNoStorage.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/storage/.svn/text-base/sfPDOSessionStorage.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/storage/.svn/text-base/sfPostgreSQLSessionStorage.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/storage/.svn/text-base/sfSessionStorage.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/storage/.svn/text-base/sfSessionTestStorage.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/storage/.svn/text-base/sfStorage.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/storage/sfCacheSessionStorage.class.php create mode 100644 lib/vendor/symfony/lib/storage/sfDatabaseSessionStorage.class.php create mode 100644 lib/vendor/symfony/lib/storage/sfMySQLSessionStorage.class.php create mode 100644 lib/vendor/symfony/lib/storage/sfMySQLiSessionStorage.class.php create mode 100644 lib/vendor/symfony/lib/storage/sfNoStorage.class.php create mode 100644 lib/vendor/symfony/lib/storage/sfPDOSessionStorage.class.php create mode 100644 lib/vendor/symfony/lib/storage/sfPostgreSQLSessionStorage.class.php create mode 100644 lib/vendor/symfony/lib/storage/sfSessionStorage.class.php create mode 100644 lib/vendor/symfony/lib/storage/sfSessionTestStorage.class.php create mode 100644 lib/vendor/symfony/lib/storage/sfStorage.class.php create mode 100644 lib/vendor/symfony/lib/task/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/task/.svn/entries create mode 100644 lib/vendor/symfony/lib/task/.svn/prop-base/sfBaseTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/.svn/prop-base/sfCommandApplicationTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/.svn/prop-base/sfFilesystem.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/.svn/prop-base/sfTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/.svn/text-base/sfBaseTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/.svn/text-base/sfCommandApplicationTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/.svn/text-base/sfFilesystem.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/.svn/text-base/sfTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/app/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/task/app/.svn/entries create mode 100644 lib/vendor/symfony/lib/task/app/.svn/prop-base/sfAppRoutesTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/app/.svn/text-base/sfAppRoutesTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/app/sfAppRoutesTask.class.php create mode 100644 lib/vendor/symfony/lib/task/cache/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/task/cache/.svn/entries create mode 100644 lib/vendor/symfony/lib/task/cache/.svn/prop-base/sfCacheClearTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/cache/.svn/text-base/sfCacheClearTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/cache/sfCacheClearTask.class.php create mode 100644 lib/vendor/symfony/lib/task/configure/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/task/configure/.svn/entries create mode 100644 lib/vendor/symfony/lib/task/configure/.svn/prop-base/sfConfigureAuthorTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/configure/.svn/text-base/sfConfigureAuthorTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/configure/sfConfigureAuthorTask.class.php create mode 100644 lib/vendor/symfony/lib/task/generator/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/task/generator/.svn/entries create mode 100644 lib/vendor/symfony/lib/task/generator/.svn/prop-base/sfGenerateAppTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/.svn/prop-base/sfGenerateModuleTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/.svn/prop-base/sfGenerateProjectTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/.svn/prop-base/sfGenerateTaskTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/.svn/prop-base/sfGeneratorBaseTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/.svn/text-base/sfGenerateAppTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/.svn/text-base/sfGenerateModuleTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/.svn/text-base/sfGenerateProjectTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/.svn/text-base/sfGenerateTaskTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/.svn/text-base/sfGeneratorBaseTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/sfGenerateAppTask.class.php create mode 100644 lib/vendor/symfony/lib/task/generator/sfGenerateModuleTask.class.php create mode 100644 lib/vendor/symfony/lib/task/generator/sfGenerateProjectTask.class.php create mode 100644 lib/vendor/symfony/lib/task/generator/sfGenerateTaskTask.class.php create mode 100644 lib/vendor/symfony/lib/task/generator/sfGeneratorBaseTask.class.php create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/.svn/entries create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/.svn/entries create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/.svn/entries create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/entries create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/prop-base/ApplicationConfiguration.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/prop-base/app.yml.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/prop-base/cache.yml.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/prop-base/factories.yml.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/prop-base/filters.yml.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/prop-base/routing.yml.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/prop-base/security.yml.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/prop-base/settings.yml.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/prop-base/view.yml.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/text-base/ApplicationConfiguration.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/text-base/app.yml.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/text-base/cache.yml.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/text-base/factories.yml.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/text-base/filters.yml.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/text-base/routing.yml.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/text-base/security.yml.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/text-base/settings.yml.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/text-base/view.yml.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/ApplicationConfiguration.class.php create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/app.yml create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/cache.yml create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/factories.yml create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/filters.yml create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/routing.yml create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/security.yml create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/settings.yml create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/view.yml create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/i18n/.sf create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/i18n/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/i18n/.svn/entries create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/i18n/.svn/text-base/.sf.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/lib/.sf/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/lib/.sf/.svn/entries create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/lib/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/lib/.svn/entries create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/lib/.svn/prop-base/myUser.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/lib/.svn/text-base/myUser.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/lib/myUser.class.php create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/modules/.sf create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/modules/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/modules/.svn/entries create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/modules/.svn/text-base/.sf.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/templates/.svn/entries create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/templates/.svn/prop-base/layout.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/templates/.svn/text-base/layout.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/app/templates/layout.php create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/lib/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/lib/.svn/entries create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/web/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/web/.svn/entries create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/web/.svn/prop-base/index.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/web/.svn/text-base/index.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/app/web/index.php create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/module/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/module/.svn/entries create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/module/module/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/module/module/.svn/entries create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/module/module/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/module/module/actions/.svn/entries create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/module/module/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/module/module/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/module/module/actions/actions.class.php create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/module/module/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/module/module/templates/.svn/entries create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/module/module/templates/.svn/prop-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/module/module/templates/.svn/text-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/module/module/templates/indexSuccess.php create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/module/test/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/module/test/.svn/entries create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/module/test/.svn/prop-base/actionsTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/module/test/.svn/text-base/actionsTest.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/module/test/actionsTest.php create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/.svn/entries create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/.svn/text-base/symfony.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/apps/.sf create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/apps/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/apps/.svn/entries create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/apps/.svn/text-base/.sf.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/cache/.sf create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/cache/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/cache/.svn/entries create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/cache/.svn/text-base/.sf.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/config/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/config/.svn/entries create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/config/.svn/prop-base/ProjectConfiguration.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/config/.svn/prop-base/properties.ini.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/config/.svn/prop-base/rsync_exclude.txt.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/config/.svn/text-base/ProjectConfiguration.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/config/.svn/text-base/properties.ini.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/config/.svn/text-base/rsync_exclude.txt.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/config/ProjectConfiguration.class.php create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/config/properties.ini create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/config/rsync_exclude.txt create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/data/.sf create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/data/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/data/.svn/entries create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/data/.svn/text-base/.sf.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/data/fixtures/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/data/fixtures/.svn/entries create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/data/fixtures/.svn/prop-base/fixtures.yml.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/data/fixtures/.svn/text-base/fixtures.yml.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/data/fixtures/fixtures.yml create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/lib/.sf create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/lib/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/lib/.svn/entries create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/lib/.svn/text-base/.sf.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/lib/form/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/lib/form/.svn/entries create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/lib/form/.svn/prop-base/BaseForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/lib/form/.svn/text-base/BaseForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/lib/form/BaseForm.class.php create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/log/.sf create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/log/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/log/.svn/entries create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/log/.svn/text-base/.sf.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/plugins/.sf create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/plugins/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/plugins/.svn/entries create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/plugins/.svn/text-base/.sf.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/symfony create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/test/.sf create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/test/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/test/.svn/entries create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/test/.svn/text-base/.sf.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/test/bootstrap/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/test/bootstrap/.svn/entries create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/test/bootstrap/.svn/prop-base/functional.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/test/bootstrap/.svn/prop-base/unit.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/test/bootstrap/.svn/text-base/functional.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/test/bootstrap/.svn/text-base/unit.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/test/bootstrap/functional.php create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/test/bootstrap/unit.php create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/test/functional/.sf create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/test/functional/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/test/functional/.svn/entries create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/test/functional/.svn/text-base/.sf.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/test/unit/.sf create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/test/unit/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/test/unit/.svn/entries create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/test/unit/.svn/text-base/.sf.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/web/.htaccess create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/web/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/web/.svn/entries create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/web/.svn/prop-base/.htaccess.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/web/.svn/prop-base/robots.txt.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/web/.svn/text-base/.htaccess.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/web/.svn/text-base/robots.txt.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/web/css/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/web/css/.svn/entries create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/web/css/.svn/prop-base/main.css.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/web/css/.svn/text-base/main.css.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/web/css/main.css create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/web/images/.sf create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/web/images/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/web/images/.svn/entries create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/web/images/.svn/text-base/.sf.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/web/js/.sf create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/web/js/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/web/js/.svn/entries create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/web/js/.svn/text-base/.sf.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/web/robots.txt create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/web/uploads/.sf create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/web/uploads/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/web/uploads/.svn/entries create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/web/uploads/.svn/text-base/.sf.svn-base create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/web/uploads/assets/.sf create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/web/uploads/assets/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/web/uploads/assets/.svn/entries create mode 100644 lib/vendor/symfony/lib/task/generator/skeleton/project/web/uploads/assets/.svn/text-base/.sf.svn-base create mode 100644 lib/vendor/symfony/lib/task/help/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/task/help/.svn/entries create mode 100644 lib/vendor/symfony/lib/task/help/.svn/prop-base/sfHelpTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/help/.svn/prop-base/sfListTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/help/.svn/text-base/sfHelpTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/help/.svn/text-base/sfListTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/help/sfHelpTask.class.php create mode 100644 lib/vendor/symfony/lib/task/help/sfListTask.class.php create mode 100644 lib/vendor/symfony/lib/task/i18n/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/task/i18n/.svn/entries create mode 100644 lib/vendor/symfony/lib/task/i18n/.svn/prop-base/sfI18nExtractTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/i18n/.svn/prop-base/sfI18nFindTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/i18n/.svn/text-base/sfI18nExtractTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/i18n/.svn/text-base/sfI18nFindTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/i18n/sfI18nExtractTask.class.php create mode 100644 lib/vendor/symfony/lib/task/i18n/sfI18nFindTask.class.php create mode 100644 lib/vendor/symfony/lib/task/log/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/task/log/.svn/entries create mode 100644 lib/vendor/symfony/lib/task/log/.svn/prop-base/sfLogClearTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/log/.svn/prop-base/sfLogRotateTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/log/.svn/text-base/sfLogClearTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/log/.svn/text-base/sfLogRotateTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/log/sfLogClearTask.class.php create mode 100644 lib/vendor/symfony/lib/task/log/sfLogRotateTask.class.php create mode 100644 lib/vendor/symfony/lib/task/plugin/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/task/plugin/.svn/entries create mode 100644 lib/vendor/symfony/lib/task/plugin/.svn/prop-base/sfPluginAddChannelTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/plugin/.svn/prop-base/sfPluginBaseTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/plugin/.svn/prop-base/sfPluginInstallTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/plugin/.svn/prop-base/sfPluginListTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/plugin/.svn/prop-base/sfPluginPublishAssetsTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/plugin/.svn/prop-base/sfPluginUninstallTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/plugin/.svn/prop-base/sfPluginUpgradeTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/plugin/.svn/text-base/sfPluginAddChannelTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/plugin/.svn/text-base/sfPluginBaseTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/plugin/.svn/text-base/sfPluginInstallTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/plugin/.svn/text-base/sfPluginListTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/plugin/.svn/text-base/sfPluginPublishAssetsTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/plugin/.svn/text-base/sfPluginUninstallTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/plugin/.svn/text-base/sfPluginUpgradeTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/plugin/sfPluginAddChannelTask.class.php create mode 100644 lib/vendor/symfony/lib/task/plugin/sfPluginBaseTask.class.php create mode 100644 lib/vendor/symfony/lib/task/plugin/sfPluginInstallTask.class.php create mode 100644 lib/vendor/symfony/lib/task/plugin/sfPluginListTask.class.php create mode 100644 lib/vendor/symfony/lib/task/plugin/sfPluginPublishAssetsTask.class.php create mode 100644 lib/vendor/symfony/lib/task/plugin/sfPluginUninstallTask.class.php create mode 100644 lib/vendor/symfony/lib/task/plugin/sfPluginUpgradeTask.class.php create mode 100644 lib/vendor/symfony/lib/task/project/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/task/project/.svn/entries create mode 100644 lib/vendor/symfony/lib/task/project/.svn/prop-base/sfProjectClearControllersTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/project/.svn/prop-base/sfProjectDeployTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/project/.svn/prop-base/sfProjectDisableTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/project/.svn/prop-base/sfProjectEnableTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/project/.svn/prop-base/sfProjectOptimizeTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/project/.svn/prop-base/sfProjectPermissionsTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/project/.svn/prop-base/sfProjectSendEmailsTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/project/.svn/prop-base/sfProjectValidateTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/project/.svn/text-base/sfProjectClearControllersTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/project/.svn/text-base/sfProjectDeployTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/project/.svn/text-base/sfProjectDisableTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/project/.svn/text-base/sfProjectEnableTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/project/.svn/text-base/sfProjectOptimizeTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/project/.svn/text-base/sfProjectPermissionsTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/project/.svn/text-base/sfProjectSendEmailsTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/project/.svn/text-base/sfProjectValidateTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/project/sfProjectClearControllersTask.class.php create mode 100644 lib/vendor/symfony/lib/task/project/sfProjectDeployTask.class.php create mode 100644 lib/vendor/symfony/lib/task/project/sfProjectDisableTask.class.php create mode 100644 lib/vendor/symfony/lib/task/project/sfProjectEnableTask.class.php create mode 100644 lib/vendor/symfony/lib/task/project/sfProjectOptimizeTask.class.php create mode 100644 lib/vendor/symfony/lib/task/project/sfProjectPermissionsTask.class.php create mode 100644 lib/vendor/symfony/lib/task/project/sfProjectSendEmailsTask.class.php create mode 100644 lib/vendor/symfony/lib/task/project/sfProjectValidateTask.class.php create mode 100644 lib/vendor/symfony/lib/task/project/validation/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/task/project/validation/.svn/entries create mode 100644 lib/vendor/symfony/lib/task/project/validation/.svn/prop-base/sfDeprecatedClassesValidation.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/project/validation/.svn/prop-base/sfDeprecatedConfigurationFilesValidation.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/project/validation/.svn/prop-base/sfDeprecatedHelpersValidation.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/project/validation/.svn/prop-base/sfDeprecatedMethodsValidation.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/project/validation/.svn/prop-base/sfDeprecatedPluginsValidation.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/project/validation/.svn/prop-base/sfDeprecatedSettingsValidation.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/project/validation/.svn/prop-base/sfParameterHolderValidation.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/project/validation/.svn/prop-base/sfValidation.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/project/validation/.svn/text-base/sfDeprecatedClassesValidation.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/project/validation/.svn/text-base/sfDeprecatedConfigurationFilesValidation.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/project/validation/.svn/text-base/sfDeprecatedHelpersValidation.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/project/validation/.svn/text-base/sfDeprecatedMethodsValidation.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/project/validation/.svn/text-base/sfDeprecatedPluginsValidation.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/project/validation/.svn/text-base/sfDeprecatedSettingsValidation.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/project/validation/.svn/text-base/sfParameterHolderValidation.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/project/validation/.svn/text-base/sfValidation.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/project/validation/sfDeprecatedClassesValidation.class.php create mode 100644 lib/vendor/symfony/lib/task/project/validation/sfDeprecatedConfigurationFilesValidation.class.php create mode 100644 lib/vendor/symfony/lib/task/project/validation/sfDeprecatedHelpersValidation.class.php create mode 100644 lib/vendor/symfony/lib/task/project/validation/sfDeprecatedMethodsValidation.class.php create mode 100644 lib/vendor/symfony/lib/task/project/validation/sfDeprecatedPluginsValidation.class.php create mode 100644 lib/vendor/symfony/lib/task/project/validation/sfDeprecatedSettingsValidation.class.php create mode 100644 lib/vendor/symfony/lib/task/project/validation/sfParameterHolderValidation.class.php create mode 100644 lib/vendor/symfony/lib/task/project/validation/sfValidation.class.php create mode 100644 lib/vendor/symfony/lib/task/sfBaseTask.class.php create mode 100644 lib/vendor/symfony/lib/task/sfCommandApplicationTask.class.php create mode 100644 lib/vendor/symfony/lib/task/sfFilesystem.class.php create mode 100644 lib/vendor/symfony/lib/task/sfTask.class.php create mode 100644 lib/vendor/symfony/lib/task/symfony/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/task/symfony/.svn/entries create mode 100644 lib/vendor/symfony/lib/task/symfony/.svn/prop-base/lime_symfony.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/symfony/.svn/prop-base/sfSymfonyTestTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/symfony/.svn/text-base/lime_symfony.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/symfony/.svn/text-base/sfSymfonyTestTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/symfony/lime_symfony.php create mode 100644 lib/vendor/symfony/lib/task/symfony/sfSymfonyTestTask.class.php create mode 100644 lib/vendor/symfony/lib/task/test/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/task/test/.svn/entries create mode 100644 lib/vendor/symfony/lib/task/test/.svn/prop-base/sfLimeHarness.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/test/.svn/prop-base/sfTestAllTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/test/.svn/prop-base/sfTestBaseTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/test/.svn/prop-base/sfTestCoverageTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/test/.svn/prop-base/sfTestFunctionalTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/test/.svn/prop-base/sfTestUnitTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/test/.svn/text-base/sfLimeHarness.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/test/.svn/text-base/sfTestAllTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/test/.svn/text-base/sfTestBaseTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/test/.svn/text-base/sfTestCoverageTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/test/.svn/text-base/sfTestFunctionalTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/test/.svn/text-base/sfTestUnitTask.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/task/test/sfLimeHarness.class.php create mode 100644 lib/vendor/symfony/lib/task/test/sfTestAllTask.class.php create mode 100644 lib/vendor/symfony/lib/task/test/sfTestBaseTask.class.php create mode 100644 lib/vendor/symfony/lib/task/test/sfTestCoverageTask.class.php create mode 100644 lib/vendor/symfony/lib/task/test/sfTestFunctionalTask.class.php create mode 100644 lib/vendor/symfony/lib/task/test/sfTestUnitTask.class.php create mode 100644 lib/vendor/symfony/lib/test/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/test/.svn/entries create mode 100644 lib/vendor/symfony/lib/test/.svn/prop-base/sfTestBrowser.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/test/.svn/prop-base/sfTestFunctional.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/test/.svn/prop-base/sfTestFunctionalBase.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/test/.svn/prop-base/sfTester.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/test/.svn/prop-base/sfTesterForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/test/.svn/prop-base/sfTesterMailer.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/test/.svn/prop-base/sfTesterRequest.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/test/.svn/prop-base/sfTesterResponse.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/test/.svn/prop-base/sfTesterUser.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/test/.svn/prop-base/sfTesterViewCache.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/test/.svn/text-base/sfTestBrowser.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/test/.svn/text-base/sfTestFunctional.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/test/.svn/text-base/sfTestFunctionalBase.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/test/.svn/text-base/sfTester.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/test/.svn/text-base/sfTesterForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/test/.svn/text-base/sfTesterMailer.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/test/.svn/text-base/sfTesterRequest.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/test/.svn/text-base/sfTesterResponse.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/test/.svn/text-base/sfTesterUser.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/test/.svn/text-base/sfTesterViewCache.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/test/sfTestBrowser.class.php create mode 100644 lib/vendor/symfony/lib/test/sfTestFunctional.class.php create mode 100644 lib/vendor/symfony/lib/test/sfTestFunctionalBase.class.php create mode 100644 lib/vendor/symfony/lib/test/sfTester.class.php create mode 100644 lib/vendor/symfony/lib/test/sfTesterForm.class.php create mode 100644 lib/vendor/symfony/lib/test/sfTesterMailer.class.php create mode 100644 lib/vendor/symfony/lib/test/sfTesterRequest.class.php create mode 100644 lib/vendor/symfony/lib/test/sfTesterResponse.class.php create mode 100644 lib/vendor/symfony/lib/test/sfTesterUser.class.php create mode 100644 lib/vendor/symfony/lib/test/sfTesterViewCache.class.php create mode 100644 lib/vendor/symfony/lib/test/w3/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/test/w3/.svn/entries create mode 100644 lib/vendor/symfony/lib/test/w3/TR/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/test/w3/TR/.svn/entries create mode 100644 lib/vendor/symfony/lib/test/w3/TR/html4/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/test/w3/TR/html4/.svn/entries create mode 100644 lib/vendor/symfony/lib/test/w3/TR/html4/.svn/text-base/HTMLlat1.ent.svn-base create mode 100644 lib/vendor/symfony/lib/test/w3/TR/html4/.svn/text-base/HTMLspecial.ent.svn-base create mode 100644 lib/vendor/symfony/lib/test/w3/TR/html4/.svn/text-base/HTMLsymbol.ent.svn-base create mode 100644 lib/vendor/symfony/lib/test/w3/TR/html4/.svn/text-base/loose.dtd.svn-base create mode 100644 lib/vendor/symfony/lib/test/w3/TR/html4/.svn/text-base/strict.dtd.svn-base create mode 100644 lib/vendor/symfony/lib/test/w3/TR/html4/HTMLlat1.ent create mode 100644 lib/vendor/symfony/lib/test/w3/TR/html4/HTMLspecial.ent create mode 100644 lib/vendor/symfony/lib/test/w3/TR/html4/HTMLsymbol.ent create mode 100644 lib/vendor/symfony/lib/test/w3/TR/html4/loose.dtd create mode 100644 lib/vendor/symfony/lib/test/w3/TR/html4/strict.dtd create mode 100644 lib/vendor/symfony/lib/test/w3/TR/ruby/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/test/w3/TR/ruby/.svn/entries create mode 100644 lib/vendor/symfony/lib/test/w3/TR/ruby/.svn/text-base/xhtml-ruby-1.mod.svn-base create mode 100644 lib/vendor/symfony/lib/test/w3/TR/ruby/xhtml-ruby-1.mod create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/.svn/entries create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/entries create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-base-1.mod.svn-base create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-bdo-1.mod.svn-base create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-csismap-1.mod.svn-base create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-edit-1.mod.svn-base create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-form-1.mod.svn-base create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-framework-1.mod.svn-base create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-hypertext-1.mod.svn-base create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-image-1.mod.svn-base create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-inlstyle-1.mod.svn-base create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-legacy-1.mod.svn-base create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-link-1.mod.svn-base create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-list-1.mod.svn-base create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-meta-1.mod.svn-base create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-object-1.mod.svn-base create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-param-1.mod.svn-base create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-pres-1.mod.svn-base create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-script-1.mod.svn-base create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-ssismap-1.mod.svn-base create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-struct-1.mod.svn-base create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-style-1.mod.svn-base create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-table-1.mod.svn-base create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-text-1.mod.svn-base create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-base-1.mod create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-bdo-1.mod create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-csismap-1.mod create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-edit-1.mod create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-form-1.mod create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-framework-1.mod create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-hypertext-1.mod create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-image-1.mod create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-inlstyle-1.mod create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-legacy-1.mod create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-link-1.mod create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-list-1.mod create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-meta-1.mod create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-object-1.mod create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-param-1.mod create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-pres-1.mod create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-script-1.mod create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-ssismap-1.mod create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-struct-1.mod create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-style-1.mod create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-table-1.mod create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-text-1.mod create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml1/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml1/.svn/entries create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/.svn/entries create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/.svn/text-base/xhtml-lat1.ent.svn-base create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/.svn/text-base/xhtml-special.ent.svn-base create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/.svn/text-base/xhtml-symbol.ent.svn-base create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/.svn/text-base/xhtml1-frameset.dtd.svn-base create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/.svn/text-base/xhtml1-strict.dtd.svn-base create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/.svn/text-base/xhtml1-transitional.dtd.svn-base create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/xhtml-lat1.ent create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/xhtml-special.ent create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/xhtml-symbol.ent create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/xhtml1-frameset.dtd create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/xhtml1-strict.dtd create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/xhtml1-transitional.dtd create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml11/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml11/.svn/entries create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml11/DTD/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml11/DTD/.svn/entries create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml11/DTD/.svn/text-base/xhtml11.dtd.svn-base create mode 100644 lib/vendor/symfony/lib/test/w3/TR/xhtml11/DTD/xhtml11.dtd create mode 100644 lib/vendor/symfony/lib/user/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/user/.svn/entries create mode 100644 lib/vendor/symfony/lib/user/.svn/prop-base/sfBasicSecurityUser.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/user/.svn/prop-base/sfSecurityUser.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/user/.svn/prop-base/sfUser.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/user/.svn/text-base/sfBasicSecurityUser.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/user/.svn/text-base/sfSecurityUser.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/user/.svn/text-base/sfUser.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/user/sfBasicSecurityUser.class.php create mode 100644 lib/vendor/symfony/lib/user/sfSecurityUser.class.php create mode 100644 lib/vendor/symfony/lib/user/sfUser.class.php create mode 100644 lib/vendor/symfony/lib/util/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/util/.svn/entries create mode 100644 lib/vendor/symfony/lib/util/.svn/prop-base/sfBrowser.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/util/.svn/prop-base/sfBrowserBase.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/util/.svn/prop-base/sfCallable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/util/.svn/prop-base/sfClassManipulator.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/util/.svn/prop-base/sfContext.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/util/.svn/prop-base/sfDomCssSelector.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/util/.svn/prop-base/sfFinder.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/util/.svn/prop-base/sfInflector.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/util/.svn/prop-base/sfNamespacedParameterHolder.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/util/.svn/prop-base/sfParameterHolder.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/util/.svn/prop-base/sfToolkit.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/util/.svn/text-base/sfBrowser.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/util/.svn/text-base/sfBrowserBase.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/util/.svn/text-base/sfCallable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/util/.svn/text-base/sfClassManipulator.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/util/.svn/text-base/sfContext.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/util/.svn/text-base/sfDomCssSelector.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/util/.svn/text-base/sfFinder.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/util/.svn/text-base/sfInflector.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/util/.svn/text-base/sfNamespacedParameterHolder.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/util/.svn/text-base/sfParameterHolder.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/util/.svn/text-base/sfToolkit.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/util/sfBrowser.class.php create mode 100644 lib/vendor/symfony/lib/util/sfBrowserBase.class.php create mode 100644 lib/vendor/symfony/lib/util/sfCallable.class.php create mode 100644 lib/vendor/symfony/lib/util/sfClassManipulator.class.php create mode 100644 lib/vendor/symfony/lib/util/sfContext.class.php create mode 100644 lib/vendor/symfony/lib/util/sfDomCssSelector.class.php create mode 100644 lib/vendor/symfony/lib/util/sfFinder.class.php create mode 100644 lib/vendor/symfony/lib/util/sfInflector.class.php create mode 100644 lib/vendor/symfony/lib/util/sfNamespacedParameterHolder.class.php create mode 100644 lib/vendor/symfony/lib/util/sfParameterHolder.class.php create mode 100644 lib/vendor/symfony/lib/util/sfToolkit.class.php create mode 100644 lib/vendor/symfony/lib/validator/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/validator/.svn/entries create mode 100644 lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatedFile.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorAnd.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorBase.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorBoolean.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorCSRFToken.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorCallback.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorChoice.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorDate.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorDateRange.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorDateTime.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorDecorator.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorEmail.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorError.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorErrorSchema.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorFile.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorFromDescription.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorInteger.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorNumber.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorOr.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorPass.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorRegex.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorSchema.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorSchemaCompare.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorSchemaFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorSchemaForEach.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorString.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorTime.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorUrl.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatedFile.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorAnd.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorBase.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorBoolean.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorCSRFToken.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorCallback.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorChoice.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorDate.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorDateRange.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorDateTime.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorDecorator.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorEmail.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorError.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorErrorSchema.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorFile.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorFromDescription.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorInteger.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorNumber.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorOr.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorPass.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorRegex.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorSchema.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorSchemaCompare.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorSchemaFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorSchemaForEach.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorString.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorTime.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorUrl.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/i18n/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/validator/i18n/.svn/entries create mode 100644 lib/vendor/symfony/lib/validator/i18n/.svn/prop-base/sfValidatorI18nChoiceCountry.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/i18n/.svn/prop-base/sfValidatorI18nChoiceLanguage.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/i18n/.svn/prop-base/sfValidatorI18nChoiceTimezone.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/i18n/.svn/text-base/sfValidatorI18nChoiceCountry.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/i18n/.svn/text-base/sfValidatorI18nChoiceLanguage.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/i18n/.svn/text-base/sfValidatorI18nChoiceTimezone.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/validator/i18n/sfValidatorI18nChoiceCountry.class.php create mode 100644 lib/vendor/symfony/lib/validator/i18n/sfValidatorI18nChoiceLanguage.class.php create mode 100644 lib/vendor/symfony/lib/validator/i18n/sfValidatorI18nChoiceTimezone.class.php create mode 100644 lib/vendor/symfony/lib/validator/sfValidatedFile.class.php create mode 100644 lib/vendor/symfony/lib/validator/sfValidatorAnd.class.php create mode 100644 lib/vendor/symfony/lib/validator/sfValidatorBase.class.php create mode 100644 lib/vendor/symfony/lib/validator/sfValidatorBoolean.class.php create mode 100644 lib/vendor/symfony/lib/validator/sfValidatorCSRFToken.class.php create mode 100644 lib/vendor/symfony/lib/validator/sfValidatorCallback.class.php create mode 100644 lib/vendor/symfony/lib/validator/sfValidatorChoice.class.php create mode 100644 lib/vendor/symfony/lib/validator/sfValidatorDate.class.php create mode 100644 lib/vendor/symfony/lib/validator/sfValidatorDateRange.class.php create mode 100644 lib/vendor/symfony/lib/validator/sfValidatorDateTime.class.php create mode 100644 lib/vendor/symfony/lib/validator/sfValidatorDecorator.class.php create mode 100644 lib/vendor/symfony/lib/validator/sfValidatorEmail.class.php create mode 100644 lib/vendor/symfony/lib/validator/sfValidatorError.class.php create mode 100644 lib/vendor/symfony/lib/validator/sfValidatorErrorSchema.class.php create mode 100644 lib/vendor/symfony/lib/validator/sfValidatorFile.class.php create mode 100644 lib/vendor/symfony/lib/validator/sfValidatorFromDescription.class.php create mode 100644 lib/vendor/symfony/lib/validator/sfValidatorInteger.class.php create mode 100644 lib/vendor/symfony/lib/validator/sfValidatorNumber.class.php create mode 100644 lib/vendor/symfony/lib/validator/sfValidatorOr.class.php create mode 100644 lib/vendor/symfony/lib/validator/sfValidatorPass.class.php create mode 100644 lib/vendor/symfony/lib/validator/sfValidatorRegex.class.php create mode 100644 lib/vendor/symfony/lib/validator/sfValidatorSchema.class.php create mode 100644 lib/vendor/symfony/lib/validator/sfValidatorSchemaCompare.class.php create mode 100644 lib/vendor/symfony/lib/validator/sfValidatorSchemaFilter.class.php create mode 100644 lib/vendor/symfony/lib/validator/sfValidatorSchemaForEach.class.php create mode 100644 lib/vendor/symfony/lib/validator/sfValidatorString.class.php create mode 100644 lib/vendor/symfony/lib/validator/sfValidatorTime.class.php create mode 100644 lib/vendor/symfony/lib/validator/sfValidatorUrl.class.php create mode 100644 lib/vendor/symfony/lib/vendor/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/vendor/.svn/dir-prop-base create mode 100644 lib/vendor/symfony/lib/vendor/.svn/entries create mode 100644 lib/vendor/symfony/lib/vendor/lime/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/vendor/lime/.svn/entries create mode 100644 lib/vendor/symfony/lib/vendor/lime/.svn/prop-base/lime.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/lime/.svn/text-base/lime.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/lime/lime.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/.svn/entries create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/.svn/text-base/mime_types.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/.svn/text-base/preferences.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/.svn/text-base/swift_init.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/.svn/text-base/swift_required.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/.svn/text-base/swift_required_pear.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/.svn/entries create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/.svn/text-base/Swift.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/entries create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/Attachment.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/CharacterReader.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/CharacterReaderFactory.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/CharacterStream.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/ConfigurableSpool.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/DependencyContainer.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/DependencyException.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/EmbeddedFile.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/Encoder.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/Encoding.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/FailoverTransport.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/FileSpool.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/FileStream.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/Filterable.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/Image.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/InputByteStream.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/IoException.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/KeyCache.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/LoadBalancedTransport.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/MailTransport.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/Mailer.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/Message.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/MimePart.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/NullTransport.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/OutputByteStream.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/Preferences.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/ReplacementFilterFactory.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/RfcComplianceException.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/SendmailTransport.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/SmtpTransport.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/Spool.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/SpoolTransport.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/StreamFilter.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/SwiftException.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/Transport.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/TransportException.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Attachment.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/ByteStream/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/ByteStream/.svn/entries create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/ByteStream/.svn/text-base/AbstractFilterableInputStream.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/ByteStream/.svn/text-base/ArrayByteStream.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/ByteStream/.svn/text-base/FileByteStream.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/ByteStream/AbstractFilterableInputStream.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/ByteStream/ArrayByteStream.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/ByteStream/FileByteStream.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReader.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReader/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReader/.svn/entries create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReader/.svn/text-base/GenericFixedWidthReader.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReader/.svn/text-base/UsAsciiReader.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReader/.svn/text-base/Utf8Reader.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReader/GenericFixedWidthReader.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReader/UsAsciiReader.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReader/Utf8Reader.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReaderFactory.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReaderFactory/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReaderFactory/.svn/entries create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReaderFactory/.svn/text-base/SimpleCharacterReaderFactory.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReaderFactory/SimpleCharacterReaderFactory.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterStream.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterStream/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterStream/.svn/entries create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterStream/.svn/text-base/ArrayCharacterStream.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterStream/.svn/text-base/NgCharacterStream.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterStream/ArrayCharacterStream.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterStream/NgCharacterStream.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/ConfigurableSpool.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/DependencyContainer.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/DependencyException.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/EmbeddedFile.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Encoder.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Encoder/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Encoder/.svn/entries create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Encoder/.svn/text-base/Base64Encoder.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Encoder/.svn/text-base/QpEncoder.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Encoder/.svn/text-base/Rfc2231Encoder.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Encoder/Base64Encoder.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Encoder/QpEncoder.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Encoder/Rfc2231Encoder.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Encoding.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/.svn/entries create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/.svn/text-base/CommandEvent.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/.svn/text-base/CommandListener.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/.svn/text-base/Event.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/.svn/text-base/EventDispatcher.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/.svn/text-base/EventListener.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/.svn/text-base/EventObject.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/.svn/text-base/ResponseEvent.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/.svn/text-base/ResponseListener.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/.svn/text-base/SendEvent.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/.svn/text-base/SendListener.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/.svn/text-base/SimpleEventDispatcher.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/.svn/text-base/TransportChangeEvent.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/.svn/text-base/TransportChangeListener.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/.svn/text-base/TransportExceptionEvent.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/.svn/text-base/TransportExceptionListener.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/CommandEvent.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/CommandListener.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/Event.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/EventDispatcher.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/EventListener.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/EventObject.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/ResponseEvent.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/ResponseListener.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/SendEvent.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/SendListener.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/SimpleEventDispatcher.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/TransportChangeEvent.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/TransportChangeListener.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/TransportExceptionEvent.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/TransportExceptionListener.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/FailoverTransport.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/FileSpool.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/FileStream.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Filterable.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Image.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/InputByteStream.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/IoException.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/KeyCache.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/KeyCache/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/KeyCache/.svn/entries create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/KeyCache/.svn/text-base/ArrayKeyCache.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/KeyCache/.svn/text-base/DiskKeyCache.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/KeyCache/.svn/text-base/KeyCacheInputStream.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/KeyCache/.svn/text-base/NullKeyCache.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/KeyCache/.svn/text-base/SimpleKeyCacheInputStream.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/KeyCache/ArrayKeyCache.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/KeyCache/DiskKeyCache.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/KeyCache/KeyCacheInputStream.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/KeyCache/NullKeyCache.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/KeyCache/SimpleKeyCacheInputStream.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/LoadBalancedTransport.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/MailTransport.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mailer.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mailer/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mailer/.svn/entries create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mailer/.svn/text-base/ArrayRecipientIterator.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mailer/.svn/text-base/RecipientIterator.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mailer/ArrayRecipientIterator.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mailer/RecipientIterator.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Message.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/.svn/entries create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/.svn/text-base/Attachment.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/.svn/text-base/CharsetObserver.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/.svn/text-base/ContentEncoder.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/.svn/text-base/EmbeddedFile.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/.svn/text-base/EncodingObserver.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/.svn/text-base/Header.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/.svn/text-base/HeaderEncoder.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/.svn/text-base/HeaderFactory.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/.svn/text-base/HeaderSet.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/.svn/text-base/Message.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/.svn/text-base/MimeEntity.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/.svn/text-base/MimePart.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/.svn/text-base/ParameterizedHeader.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/.svn/text-base/SimpleHeaderFactory.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/.svn/text-base/SimpleHeaderSet.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/.svn/text-base/SimpleMessage.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/.svn/text-base/SimpleMimeEntity.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Attachment.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/CharsetObserver.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/ContentEncoder.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/ContentEncoder/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/ContentEncoder/.svn/entries create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/ContentEncoder/.svn/text-base/Base64ContentEncoder.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/ContentEncoder/.svn/text-base/PlainContentEncoder.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/ContentEncoder/.svn/text-base/QpContentEncoder.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/ContentEncoder/Base64ContentEncoder.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/ContentEncoder/PlainContentEncoder.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/ContentEncoder/QpContentEncoder.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/EmbeddedFile.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/EncodingObserver.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Header.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/HeaderEncoder.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/HeaderEncoder/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/HeaderEncoder/.svn/entries create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/HeaderEncoder/.svn/text-base/Base64HeaderEncoder.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/HeaderEncoder/.svn/text-base/QpHeaderEncoder.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/HeaderEncoder/Base64HeaderEncoder.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/HeaderEncoder/QpHeaderEncoder.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/HeaderFactory.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/HeaderSet.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/.svn/entries create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/.svn/text-base/AbstractHeader.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/.svn/text-base/DateHeader.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/.svn/text-base/IdentificationHeader.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/.svn/text-base/MailboxHeader.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/.svn/text-base/ParameterizedHeader.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/.svn/text-base/PathHeader.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/.svn/text-base/UnstructuredHeader.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/AbstractHeader.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/DateHeader.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/IdentificationHeader.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/MailboxHeader.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/ParameterizedHeader.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/PathHeader.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/UnstructuredHeader.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Message.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/MimeEntity.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/MimePart.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/ParameterizedHeader.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/SimpleHeaderFactory.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/SimpleHeaderSet.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/SimpleMessage.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/SimpleMimeEntity.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/MimePart.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/NullTransport.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/OutputByteStream.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/.svn/entries create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/.svn/text-base/AntiFloodPlugin.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/.svn/text-base/BandwidthMonitorPlugin.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/.svn/text-base/BlackholePlugin.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/.svn/text-base/DecoratorPlugin.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/.svn/text-base/Logger.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/.svn/text-base/LoggerPlugin.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/.svn/text-base/PopBeforeSmtpPlugin.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/.svn/text-base/RedirectingPlugin.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/.svn/text-base/Reporter.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/.svn/text-base/ReporterPlugin.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/.svn/text-base/Sleeper.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/.svn/text-base/ThrottlerPlugin.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/.svn/text-base/Timer.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/AntiFloodPlugin.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/BandwidthMonitorPlugin.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/BlackholePlugin.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Decorator/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Decorator/.svn/entries create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Decorator/.svn/text-base/Replacements.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Decorator/Replacements.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/DecoratorPlugin.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Logger.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/LoggerPlugin.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Loggers/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Loggers/.svn/entries create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Loggers/.svn/text-base/ArrayLogger.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Loggers/.svn/text-base/EchoLogger.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Loggers/ArrayLogger.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Loggers/EchoLogger.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Pop/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Pop/.svn/entries create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Pop/.svn/text-base/Pop3Connection.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Pop/.svn/text-base/Pop3Exception.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Pop/Pop3Connection.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Pop/Pop3Exception.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/PopBeforeSmtpPlugin.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/RedirectingPlugin.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Reporter.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/ReporterPlugin.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Reporters/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Reporters/.svn/entries create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Reporters/.svn/text-base/HitReporter.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Reporters/.svn/text-base/HtmlReporter.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Reporters/HitReporter.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Reporters/HtmlReporter.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Sleeper.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/ThrottlerPlugin.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Timer.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Preferences.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/ReplacementFilterFactory.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/RfcComplianceException.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/SendmailTransport.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/SmtpTransport.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Spool.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/SpoolTransport.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/StreamFilter.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/StreamFilters/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/StreamFilters/.svn/entries create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/StreamFilters/.svn/text-base/ByteArrayReplacementFilter.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/StreamFilters/.svn/text-base/StringReplacementFilter.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/StreamFilters/.svn/text-base/StringReplacementFilterFactory.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/StreamFilters/ByteArrayReplacementFilter.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/StreamFilters/StringReplacementFilter.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/StreamFilters/StringReplacementFilterFactory.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/SwiftException.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/.svn/entries create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/.svn/text-base/AbstractSmtpTransport.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/.svn/text-base/EsmtpHandler.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/.svn/text-base/EsmtpTransport.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/.svn/text-base/FailoverTransport.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/.svn/text-base/IoBuffer.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/.svn/text-base/LoadBalancedTransport.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/.svn/text-base/MailInvoker.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/.svn/text-base/MailTransport.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/.svn/text-base/NullTransport.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/.svn/text-base/SendmailTransport.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/.svn/text-base/SimpleMailInvoker.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/.svn/text-base/SmtpAgent.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/.svn/text-base/SpoolTransport.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/.svn/text-base/StreamBuffer.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/AbstractSmtpTransport.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/.svn/entries create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/.svn/text-base/AuthHandler.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/.svn/text-base/Authenticator.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/Auth/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/Auth/.svn/entries create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/Auth/.svn/text-base/CramMd5Authenticator.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/Auth/.svn/text-base/LoginAuthenticator.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/Auth/.svn/text-base/PlainAuthenticator.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/Auth/CramMd5Authenticator.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/Auth/LoginAuthenticator.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/Auth/PlainAuthenticator.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/AuthHandler.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/Authenticator.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/EsmtpHandler.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/EsmtpTransport.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/FailoverTransport.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/IoBuffer.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/LoadBalancedTransport.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/MailInvoker.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/MailTransport.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/NullTransport.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/SendmailTransport.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/SimpleMailInvoker.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/SmtpAgent.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/SpoolTransport.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/StreamBuffer.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/TransportException.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/dependency_maps/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/dependency_maps/.svn/entries create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/dependency_maps/.svn/text-base/cache_deps.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/dependency_maps/.svn/text-base/mime_deps.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/dependency_maps/.svn/text-base/transport_deps.php.svn-base create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/dependency_maps/cache_deps.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/dependency_maps/mime_deps.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/dependency_maps/transport_deps.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/mime_types.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/preferences.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/swift_init.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/swift_required.php create mode 100644 lib/vendor/symfony/lib/vendor/swiftmailer/swift_required_pear.php create mode 100644 lib/vendor/symfony/lib/view/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/view/.svn/entries create mode 100644 lib/vendor/symfony/lib/view/.svn/prop-base/sfPHPView.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/view/.svn/prop-base/sfPartialView.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/view/.svn/prop-base/sfView.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/view/.svn/prop-base/sfViewCacheManager.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/view/.svn/prop-base/sfViewParameterHolder.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/view/.svn/text-base/sfPHPView.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/view/.svn/text-base/sfPartialView.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/view/.svn/text-base/sfView.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/view/.svn/text-base/sfViewCacheManager.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/view/.svn/text-base/sfViewParameterHolder.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/view/sfPHPView.class.php create mode 100644 lib/vendor/symfony/lib/view/sfPartialView.class.php create mode 100644 lib/vendor/symfony/lib/view/sfView.class.php create mode 100644 lib/vendor/symfony/lib/view/sfViewCacheManager.class.php create mode 100644 lib/vendor/symfony/lib/view/sfViewParameterHolder.class.php create mode 100644 lib/vendor/symfony/lib/widget/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/widget/.svn/entries create mode 100644 lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidget.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormChoice.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormDate.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormDateRange.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormDateTime.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormFilterDate.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormFilterInput.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormInput.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormInputCheckbox.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormInputFile.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormInputFileEditable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormInputHidden.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormInputPassword.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormInputText.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormSchema.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormSchemaDecorator.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormSchemaForEach.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormSchemaFormatter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormSchemaFormatterList.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormSchemaFormatterTable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormSelect.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormSelectCheckbox.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormSelectMany.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormSelectRadio.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormTextarea.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormTime.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/text-base/sfWidget.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetForm.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormChoice.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormChoiceBase.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormDate.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormDateRange.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormDateTime.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormFilterDate.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormFilterInput.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormInput.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormInputCheckbox.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormInputFile.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormInputFileEditable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormInputHidden.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormInputPassword.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormInputText.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormSchema.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormSchemaDecorator.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormSchemaForEach.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormSchemaFormatter.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormSchemaFormatterList.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormSchemaFormatterTable.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormSelect.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormSelectCheckbox.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormSelectMany.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormSelectRadio.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormTextarea.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormTime.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/i18n/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/widget/i18n/.svn/entries create mode 100644 lib/vendor/symfony/lib/widget/i18n/.svn/prop-base/sfWidgetFormI18nChoiceCountry.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/i18n/.svn/prop-base/sfWidgetFormI18nChoiceCurrency.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/i18n/.svn/prop-base/sfWidgetFormI18nChoiceLanguage.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/i18n/.svn/prop-base/sfWidgetFormI18nChoiceTimezone.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/i18n/.svn/prop-base/sfWidgetFormI18nDate.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/i18n/.svn/prop-base/sfWidgetFormI18nDateTime.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/i18n/.svn/prop-base/sfWidgetFormI18nTime.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/i18n/.svn/text-base/sfWidgetFormI18nChoiceCountry.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/i18n/.svn/text-base/sfWidgetFormI18nChoiceCurrency.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/i18n/.svn/text-base/sfWidgetFormI18nChoiceLanguage.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/i18n/.svn/text-base/sfWidgetFormI18nChoiceTimezone.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/i18n/.svn/text-base/sfWidgetFormI18nDate.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/i18n/.svn/text-base/sfWidgetFormI18nDateTime.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/i18n/.svn/text-base/sfWidgetFormI18nTime.class.php.svn-base create mode 100644 lib/vendor/symfony/lib/widget/i18n/sfWidgetFormI18nChoiceCountry.class.php create mode 100644 lib/vendor/symfony/lib/widget/i18n/sfWidgetFormI18nChoiceCurrency.class.php create mode 100644 lib/vendor/symfony/lib/widget/i18n/sfWidgetFormI18nChoiceLanguage.class.php create mode 100644 lib/vendor/symfony/lib/widget/i18n/sfWidgetFormI18nChoiceTimezone.class.php create mode 100644 lib/vendor/symfony/lib/widget/i18n/sfWidgetFormI18nDate.class.php create mode 100644 lib/vendor/symfony/lib/widget/i18n/sfWidgetFormI18nDateTime.class.php create mode 100644 lib/vendor/symfony/lib/widget/i18n/sfWidgetFormI18nTime.class.php create mode 100644 lib/vendor/symfony/lib/widget/sfWidget.class.php create mode 100644 lib/vendor/symfony/lib/widget/sfWidgetForm.class.php create mode 100644 lib/vendor/symfony/lib/widget/sfWidgetFormChoice.class.php create mode 100644 lib/vendor/symfony/lib/widget/sfWidgetFormChoiceBase.class.php create mode 100644 lib/vendor/symfony/lib/widget/sfWidgetFormDate.class.php create mode 100644 lib/vendor/symfony/lib/widget/sfWidgetFormDateRange.class.php create mode 100644 lib/vendor/symfony/lib/widget/sfWidgetFormDateTime.class.php create mode 100644 lib/vendor/symfony/lib/widget/sfWidgetFormFilterDate.class.php create mode 100644 lib/vendor/symfony/lib/widget/sfWidgetFormFilterInput.class.php create mode 100644 lib/vendor/symfony/lib/widget/sfWidgetFormInput.class.php create mode 100644 lib/vendor/symfony/lib/widget/sfWidgetFormInputCheckbox.class.php create mode 100644 lib/vendor/symfony/lib/widget/sfWidgetFormInputFile.class.php create mode 100644 lib/vendor/symfony/lib/widget/sfWidgetFormInputFileEditable.class.php create mode 100644 lib/vendor/symfony/lib/widget/sfWidgetFormInputHidden.class.php create mode 100644 lib/vendor/symfony/lib/widget/sfWidgetFormInputPassword.class.php create mode 100644 lib/vendor/symfony/lib/widget/sfWidgetFormInputText.class.php create mode 100644 lib/vendor/symfony/lib/widget/sfWidgetFormSchema.class.php create mode 100644 lib/vendor/symfony/lib/widget/sfWidgetFormSchemaDecorator.class.php create mode 100644 lib/vendor/symfony/lib/widget/sfWidgetFormSchemaForEach.class.php create mode 100644 lib/vendor/symfony/lib/widget/sfWidgetFormSchemaFormatter.class.php create mode 100644 lib/vendor/symfony/lib/widget/sfWidgetFormSchemaFormatterList.class.php create mode 100644 lib/vendor/symfony/lib/widget/sfWidgetFormSchemaFormatterTable.class.php create mode 100644 lib/vendor/symfony/lib/widget/sfWidgetFormSelect.class.php create mode 100644 lib/vendor/symfony/lib/widget/sfWidgetFormSelectCheckbox.class.php create mode 100644 lib/vendor/symfony/lib/widget/sfWidgetFormSelectMany.class.php create mode 100644 lib/vendor/symfony/lib/widget/sfWidgetFormSelectRadio.class.php create mode 100644 lib/vendor/symfony/lib/widget/sfWidgetFormTextarea.class.php create mode 100644 lib/vendor/symfony/lib/widget/sfWidgetFormTime.class.php create mode 100644 lib/vendor/symfony/lib/yaml/.svn/all-wcprops create mode 100644 lib/vendor/symfony/lib/yaml/.svn/entries create mode 100644 lib/vendor/symfony/lib/yaml/.svn/text-base/sfYaml.php.svn-base create mode 100644 lib/vendor/symfony/lib/yaml/.svn/text-base/sfYamlDumper.php.svn-base create mode 100644 lib/vendor/symfony/lib/yaml/.svn/text-base/sfYamlInline.php.svn-base create mode 100644 lib/vendor/symfony/lib/yaml/.svn/text-base/sfYamlParser.php.svn-base create mode 100644 lib/vendor/symfony/lib/yaml/sfYaml.php create mode 100644 lib/vendor/symfony/lib/yaml/sfYamlDumper.php create mode 100644 lib/vendor/symfony/lib/yaml/sfYamlInline.php create mode 100644 lib/vendor/symfony/lib/yaml/sfYamlParser.php create mode 100644 lib/vendor/symfony/licenses/.svn/all-wcprops create mode 100644 lib/vendor/symfony/licenses/.svn/entries create mode 100644 lib/vendor/symfony/licenses/.svn/text-base/LICENSE.ICU.svn-base create mode 100644 lib/vendor/symfony/licenses/.svn/text-base/LICENSE.lime.svn-base create mode 100644 lib/vendor/symfony/licenses/.svn/text-base/LICENSE.prado.svn-base create mode 100644 lib/vendor/symfony/licenses/.svn/text-base/LICENSE.swiftmailer.svn-base create mode 100644 lib/vendor/symfony/licenses/LICENSE.ICU create mode 100644 lib/vendor/symfony/licenses/LICENSE.lime create mode 100644 lib/vendor/symfony/licenses/LICENSE.prado create mode 100644 lib/vendor/symfony/licenses/LICENSE.swiftmailer create mode 100644 lib/vendor/symfony/package.xml.tmpl create mode 100644 lib/vendor/symfony/test/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/.svn/entries create mode 100644 lib/vendor/symfony/test/bin/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/bin/.svn/entries create mode 100644 lib/vendor/symfony/test/bin/.svn/prop-base/coverage.php.svn-base create mode 100644 lib/vendor/symfony/test/bin/.svn/prop-base/loc.php.svn-base create mode 100644 lib/vendor/symfony/test/bin/.svn/text-base/coverage.php.svn-base create mode 100644 lib/vendor/symfony/test/bin/.svn/text-base/loc.php.svn-base create mode 100644 lib/vendor/symfony/test/bin/coverage.php create mode 100644 lib/vendor/symfony/test/bin/loc.php create mode 100644 lib/vendor/symfony/test/bootstrap/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/bootstrap/.svn/entries create mode 100644 lib/vendor/symfony/test/bootstrap/.svn/prop-base/functional.php.svn-base create mode 100644 lib/vendor/symfony/test/bootstrap/.svn/prop-base/task.php.svn-base create mode 100644 lib/vendor/symfony/test/bootstrap/.svn/prop-base/unit.php.svn-base create mode 100644 lib/vendor/symfony/test/bootstrap/.svn/text-base/functional.php.svn-base create mode 100644 lib/vendor/symfony/test/bootstrap/.svn/text-base/task.php.svn-base create mode 100644 lib/vendor/symfony/test/bootstrap/.svn/text-base/unit.php.svn-base create mode 100644 lib/vendor/symfony/test/bootstrap/functional.php create mode 100644 lib/vendor/symfony/test/bootstrap/task.php create mode 100644 lib/vendor/symfony/test/bootstrap/unit.php create mode 100644 lib/vendor/symfony/test/functional/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/.svn/prop-base/authTest.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/.svn/prop-base/autoloadTest.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/.svn/prop-base/cacheTest.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/.svn/prop-base/escapingTest.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/.svn/prop-base/filterTest.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/.svn/prop-base/formatTest.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/.svn/prop-base/genericTest.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/.svn/prop-base/httpcacheTest.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/.svn/prop-base/i18nFormTest.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/.svn/prop-base/i18nTest.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/.svn/prop-base/prodTest.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/.svn/prop-base/sfTestBrowserTest.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/.svn/text-base/authTest.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/.svn/text-base/autoloadTest.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/.svn/text-base/cacheTest.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/.svn/text-base/escapingTest.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/.svn/text-base/filterTest.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/.svn/text-base/formatTest.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/.svn/text-base/genericTest.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/.svn/text-base/httpcacheTest.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/.svn/text-base/i18nFormTest.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/.svn/text-base/i18nTest.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/.svn/text-base/prodTest.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/.svn/text-base/sfTestBrowserTest.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/authTest.php create mode 100644 lib/vendor/symfony/test/functional/autoloadTest.php create mode 100644 lib/vendor/symfony/test/functional/cacheTest.php create mode 100644 lib/vendor/symfony/test/functional/escapingTest.php create mode 100644 lib/vendor/symfony/test/functional/filterTest.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/.svn/prop-base/symfony.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/.svn/text-base/symfony.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/config/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/config/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/config/.svn/prop-base/cacheConfiguration.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/config/.svn/text-base/app.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/config/.svn/text-base/cache.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/config/.svn/text-base/cacheConfiguration.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/config/.svn/text-base/factories.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/config/.svn/text-base/filters.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/config/.svn/text-base/routing.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/config/.svn/text-base/security.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/config/.svn/text-base/settings.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/config/.svn/text-base/view.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/config/app.yml create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/config/cache.yml create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/config/cacheConfiguration.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/config/factories.yml create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/config/filters.yml create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/config/routing.yml create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/config/security.yml create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/config/settings.yml create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/config/view.yml create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/i18n/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/i18n/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/lib/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/lib/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/lib/.svn/prop-base/myUser.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/lib/.svn/text-base/myUser.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/lib/myUser.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/actions/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/actions/.svn/prop-base/components.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/actions/.svn/text-base/components.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/actions/actions.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/actions/components.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/config/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/config/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/config/.svn/text-base/cache.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/config/cache.yml create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/data/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/data/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/data/.svn/prop-base/ok48.png.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/data/.svn/text-base/ok48.png.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/data/ok48.png create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/lib/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/lib/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/_anotherCacheablePartial.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/_cacheableComponent.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/_cacheablePartial.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/_component.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/_contextualCacheableComponent.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/_contextualCacheablePartial.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/_contextualComponent.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/_contextualPartial.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/_partial.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/actionSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/anotherPartialSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/componentSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/imageSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/listSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/multiBisSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/multiSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/pageSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/partialSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/specificCacheKeySuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/_anotherCacheablePartial.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/_cacheableComponent.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/_cacheablePartial.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/_component.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/_contextualCacheableComponent.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/_contextualCacheablePartial.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/_contextualComponent.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/_contextualPartial.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/_partial.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/actionSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/anotherPartialSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/componentSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/imageSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/listSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/multiBisSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/multiSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/pageSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/partialSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/specificCacheKeySuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/_anotherCacheablePartial.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/_cacheableComponent.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/_cacheablePartial.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/_component.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/_contextualCacheableComponent.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/_contextualCacheablePartial.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/_contextualComponent.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/_contextualPartial.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/_partial.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/actionSuccess.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/anotherPartialSuccess.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/componentSuccess.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/imageSuccess.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/indexSuccess.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/listSuccess.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/multiBisSuccess.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/multiSuccess.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/pageSuccess.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/partialSuccess.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/specificCacheKeySuccess.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/actions/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/actions/actions.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/config/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/config/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/config/.svn/text-base/cache.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/config/cache.yml create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/templates/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/templates/.svn/prop-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/templates/.svn/text-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/templates/indexSuccess.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/actions/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/actions/actions.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/config/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/config/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/config/.svn/text-base/cache.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/config/cache.yml create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/lib/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/lib/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/templates/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/templates/.svn/prop-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/templates/.svn/text-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/templates/indexSuccess.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/templates/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/templates/.svn/prop-base/image.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/templates/.svn/prop-base/layout.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/templates/.svn/text-base/image.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/templates/.svn/text-base/layout.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/templates/image.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/cache/templates/layout.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/.svn/prop-base/frontendConfiguration.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/.svn/text-base/app.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/.svn/text-base/cache.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/.svn/text-base/factories.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/.svn/text-base/filters.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/.svn/text-base/frontendConfiguration.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/.svn/text-base/routing.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/.svn/text-base/security.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/.svn/text-base/settings.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/.svn/text-base/view.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/app.yml create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/cache.yml create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/dirmyconfig/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/dirmyconfig/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/dirmyconfig/.svn/text-base/myconfig.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/dirmyconfig/myconfig.yml create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/factories.yml create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/filters.yml create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/frontendConfiguration.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/routing.yml create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/security.yml create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/settings.yml create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/view.yml create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/i18n/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/i18n/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/lib/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/lib/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/lib/.svn/prop-base/myAppsFrontendLibClass.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/lib/.svn/prop-base/myAutoload.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/lib/.svn/prop-base/myAutoloadedClass.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/lib/.svn/prop-base/myFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/lib/.svn/prop-base/myUser.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/lib/.svn/text-base/myAppsFrontendLibClass.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/lib/.svn/text-base/myAutoload.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/lib/.svn/text-base/myAutoloadedClass.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/lib/.svn/text-base/myFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/lib/.svn/text-base/myUser.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/lib/myAppsFrontendLibClass.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/lib/myAutoload.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/lib/myAutoloadedClass.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/lib/myFilter.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/lib/myUser.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/assetInclusion/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/assetInclusion/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/assetInclusion/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/assetInclusion/actions/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/assetInclusion/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/assetInclusion/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/assetInclusion/actions/actions.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/assetInclusion/config/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/assetInclusion/config/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/assetInclusion/config/.svn/text-base/view.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/assetInclusion/config/view.yml create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/assetInclusion/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/assetInclusion/templates/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/assetInclusion/templates/.svn/prop-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/assetInclusion/templates/.svn/text-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/assetInclusion/templates/indexSuccess.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/auth/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/auth/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/auth/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/auth/actions/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/auth/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/auth/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/auth/actions/actions.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/auth/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/auth/templates/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/auth/templates/.svn/prop-base/basicSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/auth/templates/.svn/text-base/basicSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/auth/templates/basicSuccess.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/actions/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/actions/actions.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/lib/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/lib/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/lib/.svn/prop-base/myAppsFrontendModulesAutoloadLib.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/lib/.svn/text-base/myAppsFrontendModulesAutoloadLib.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/lib/myAppsFrontendModulesAutoloadLib.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/templates/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/templates/.svn/prop-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/templates/.svn/prop-base/myAutoloadSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/templates/.svn/text-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/templates/.svn/text-base/myAutoloadSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/templates/indexSuccess.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/templates/myAutoloadSuccess.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/actions/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/actions/actions.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/templates/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/templates/.svn/prop-base/redirectTarget1Success.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/templates/.svn/prop-base/templateCustomCustomSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/templates/.svn/prop-base/templateCustomSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/templates/.svn/text-base/redirectTarget1Success.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/templates/.svn/text-base/templateCustomCustomSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/templates/.svn/text-base/templateCustomSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/templates/redirectTarget1Success.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/templates/templateCustomCustomSuccess.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/templates/templateCustomSuccess.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/actions/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/actions/actions.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/config/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/config/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/config/.svn/text-base/filters.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/config/filters.yml create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/lib/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/lib/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/lib/.svn/prop-base/configFiltersSimpleFilterFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/lib/.svn/text-base/configFiltersSimpleFilterFilter.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/lib/configFiltersSimpleFilterFilter.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/templates/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/templates/.svn/prop-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/templates/.svn/text-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/templates/indexSuccess.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/actions/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/actions/actions.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/config/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/config/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/config/.svn/text-base/module.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/config/module.yml create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/templates/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/templates/.svn/prop-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/templates/.svn/text-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/templates/indexSuccess.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/actions/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/actions/actions.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/config/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/config/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/config/.svn/text-base/security.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/config/security.yml create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/templates/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/templates/.svn/prop-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/templates/.svn/text-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/templates/indexSuccess.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/actions/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/actions/actions.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/config/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/config/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/config/.svn/text-base/security.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/config/security.yml create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/templates/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/templates/.svn/prop-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/templates/.svn/text-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/templates/indexSuccess.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/actions/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/actions/actions.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/templates/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/templates/.svn/prop-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/templates/.svn/text-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/templates/indexSuccess.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/actions/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/actions/actions.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/config/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/config/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/config/.svn/text-base/view.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/config/view.yml create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/templates/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/templates/.svn/prop-base/withoutLayoutSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/templates/.svn/text-base/withoutLayoutSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/templates/withoutLayoutSuccess.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/cookie/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/cookie/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/cookie/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/cookie/actions/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/cookie/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/cookie/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/cookie/actions/actions.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/actions/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/actions/actions.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/templates/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/templates/.svn/prop-base/_partial1.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/templates/.svn/prop-base/_partial2.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/templates/.svn/prop-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/templates/.svn/text-base/_partial1.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/templates/.svn/text-base/_partial2.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/templates/.svn/text-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/templates/_partial1.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/templates/_partial2.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/templates/indexSuccess.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/exception/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/exception/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/exception/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/exception/actions/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/exception/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/exception/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/exception/actions/actions.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/filter/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/filter/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/filter/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/filter/actions/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/filter/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/filter/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/filter/actions/actions.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/actions/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/actions/actions.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/prop-base/_js_header.js.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/prop-base/indexSuccess.css.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/prop-base/indexSuccess.iphone.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/prop-base/indexSuccess.js.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/prop-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/prop-base/indexSuccess.xml.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/prop-base/jsSuccess.js.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/text-base/_js_header.js.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/text-base/indexSuccess.css.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/text-base/indexSuccess.iphone.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/text-base/indexSuccess.js.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/text-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/text-base/indexSuccess.xml.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/text-base/jsSuccess.js.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/_js_header.js.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/indexSuccess.css.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/indexSuccess.iphone.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/indexSuccess.js.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/indexSuccess.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/indexSuccess.xml.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/jsSuccess.js.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/notfound/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/notfound/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/notfound/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/notfound/actions/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/notfound/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/notfound/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/notfound/actions/actions.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/actions/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/actions/actions.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/templates/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/templates/.svn/prop-base/fooSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/templates/.svn/prop-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/templates/.svn/text-base/fooSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/templates/.svn/text-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/templates/fooSuccess.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/templates/indexSuccess.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/renderText/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/renderText/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/renderText/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/renderText/actions/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/renderText/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/renderText/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/renderText/actions/actions.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin/config/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin/config/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin/config/.svn/text-base/filters.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin/config/.svn/text-base/view.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin/config/dirmyconfig/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin/config/dirmyconfig/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin/config/dirmyconfig/.svn/text-base/myconfig.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin/config/dirmyconfig/myconfig.yml create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin/config/filters.yml create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin/config/view.yml create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/actions/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/actions/actions.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/config/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/config/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/config/.svn/text-base/view.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/config/view.yml create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/templates/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/templates/.svn/prop-base/fooSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/templates/.svn/prop-base/imageSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/templates/.svn/prop-base/plainSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/templates/.svn/text-base/fooSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/templates/.svn/text-base/imageSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/templates/.svn/text-base/plainSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/templates/fooSuccess.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/templates/imageSuccess.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/templates/plainSuccess.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/templates/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/templates/.svn/prop-base/layout.iphone.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/templates/.svn/prop-base/layout.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/templates/.svn/prop-base/layout.xml.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/templates/.svn/text-base/layout.iphone.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/templates/.svn/text-base/layout.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/templates/.svn/text-base/layout.xml.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/templates/layout.iphone.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/templates/layout.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/frontend/templates/layout.xml.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/.svn/prop-base/i18nConfiguration.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/.svn/text-base/app.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/.svn/text-base/cache.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/.svn/text-base/factories.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/.svn/text-base/filters.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/.svn/text-base/i18nConfiguration.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/.svn/text-base/routing.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/.svn/text-base/security.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/.svn/text-base/settings.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/.svn/text-base/view.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/app.yml create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/cache.yml create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/factories.yml create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/filters.yml create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/i18nConfiguration.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/routing.yml create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/security.yml create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/settings.yml create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/view.yml create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/i18n/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/i18n/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/i18n/.svn/text-base/messages.fr.xml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/i18n/.svn/text-base/other.fr.xml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/i18n/messages.fr.xml create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/i18n/other.fr.xml create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/lib/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/lib/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/lib/.svn/prop-base/myUser.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/lib/.svn/text-base/myUser.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/lib/myUser.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/actions/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/actions/actions.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/config/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/config/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/i18n/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/i18n/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/i18n/.svn/text-base/custom.fr.xml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/i18n/.svn/text-base/messages.fr.xml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/i18n/.svn/text-base/other.fr.xml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/i18n/custom.fr.xml create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/i18n/messages.fr.xml create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/i18n/other.fr.xml create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/lib/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/lib/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/lib/.svn/prop-base/I18nCustomCatalogueForm.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/lib/.svn/prop-base/I18nForm.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/lib/.svn/text-base/I18nCustomCatalogueForm.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/lib/.svn/text-base/I18nForm.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/lib/I18nCustomCatalogueForm.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/lib/I18nForm.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/templates/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/templates/.svn/prop-base/i18nFormSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/templates/.svn/prop-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/templates/.svn/text-base/i18nFormSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/templates/.svn/text-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/templates/i18nFormSuccess.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/templates/indexSuccess.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/sfI18NPlugin/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/sfI18NPlugin/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/sfI18NPlugin/i18n/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/sfI18NPlugin/i18n/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/sfI18NPlugin/i18n/.svn/text-base/messages.fr.xml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/sfI18NPlugin/i18n/messages.fr.xml create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/templates/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/templates/.svn/prop-base/layout.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/templates/.svn/text-base/layout.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/apps/i18n/templates/layout.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/cache/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/cache/.svn/dir-prop-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/cache/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/config/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/config/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/config/.svn/prop-base/ProjectConfiguration.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/config/.svn/text-base/ProjectConfiguration.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/config/.svn/text-base/databases.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/config/.svn/text-base/filters.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/config/.svn/text-base/propel.ini.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/config/.svn/text-base/properties.ini.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/config/.svn/text-base/view.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/config/ProjectConfiguration.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/config/databases.yml create mode 100644 lib/vendor/symfony/test/functional/fixtures/config/dirmyconfig/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/config/dirmyconfig/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/config/dirmyconfig/.svn/text-base/myconfig.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/config/dirmyconfig/myconfig.yml create mode 100644 lib/vendor/symfony/test/functional/fixtures/config/filters.yml create mode 100644 lib/vendor/symfony/test/functional/fixtures/config/propel.ini create mode 100644 lib/vendor/symfony/test/functional/fixtures/config/properties.ini create mode 100644 lib/vendor/symfony/test/functional/fixtures/config/view.yml create mode 100644 lib/vendor/symfony/test/functional/fixtures/data/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/data/.svn/dir-prop-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/data/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/data/.svn/text-base/environment.migrated.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/data/environment.migrated create mode 100644 lib/vendor/symfony/test/functional/fixtures/data/sql/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/data/sql/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/lib/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/lib/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/lib/.svn/prop-base/ExtendMe.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/lib/.svn/prop-base/myLibClass.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/lib/.svn/text-base/ExtendMe.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/lib/.svn/text-base/myLibClass.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/lib/ExtendMe.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/lib/form/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/lib/form/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/lib/form/.svn/prop-base/BaseForm.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/lib/form/.svn/text-base/BaseForm.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/lib/form/BaseForm.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/lib/myLibClass.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/log/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/log/.svn/dir-prop-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/log/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/config/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/config/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/config/.svn/prop-base/NotInLib.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/config/.svn/prop-base/autoload.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/config/.svn/prop-base/sfAutoloadPluginConfiguration.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/config/.svn/text-base/NotInLib.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/config/.svn/text-base/autoload.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/config/.svn/text-base/sfAutoloadPluginConfiguration.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/config/NotInLib.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/config/autoload.yml create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/config/sfAutoloadPluginConfiguration.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/lib/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/lib/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/lib/.svn/prop-base/BaseExtendMe.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/lib/.svn/prop-base/ExtendMe.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/lib/.svn/text-base/BaseExtendMe.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/lib/.svn/text-base/ExtendMe.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/lib/BaseExtendMe.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/lib/ExtendMe.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/lib/vendor/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/lib/vendor/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/lib/vendor/.svn/prop-base/ExcludedFromAutoload.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/lib/vendor/.svn/text-base/ExcludedFromAutoload.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/lib/vendor/ExcludedFromAutoload.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/modules/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/modules/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/modules/autoloadPlugin/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/modules/autoloadPlugin/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/modules/autoloadPlugin/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/modules/autoloadPlugin/actions/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/modules/autoloadPlugin/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/modules/autoloadPlugin/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/modules/autoloadPlugin/actions/actions.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/modules/autoloadPlugin/lib/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/modules/autoloadPlugin/lib/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/modules/autoloadPlugin/lib/.svn/prop-base/myPluginsSfAutoloadPluginModulesAutoloadPluginLib.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/modules/autoloadPlugin/lib/.svn/text-base/myPluginsSfAutoloadPluginModulesAutoloadPluginLib.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/modules/autoloadPlugin/lib/myPluginsSfAutoloadPluginModulesAutoloadPluginLib.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/modules/autoloadPlugin/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/modules/autoloadPlugin/templates/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/modules/autoloadPlugin/templates/.svn/prop-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/modules/autoloadPlugin/templates/.svn/text-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/modules/autoloadPlugin/templates/indexSuccess.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/.svn/prop-base/BarFunctionalTest.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/.svn/prop-base/FooFunctionalTest.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/.svn/text-base/BarFunctionalTest.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/.svn/text-base/FooFunctionalTest.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/BarFunctionalTest.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/FooFunctionalTest.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/nested/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/nested/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/nested/.svn/prop-base/NestedFunctionalTest.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/nested/.svn/text-base/NestedFunctionalTest.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/nested/NestedFunctionalTest.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/.svn/prop-base/BarUnitTest.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/.svn/prop-base/FooUnitTest.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/.svn/text-base/BarUnitTest.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/.svn/text-base/FooUnitTest.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/BarUnitTest.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/FooUnitTest.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/nested/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/nested/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/nested/.svn/prop-base/NestedUnitTest.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/nested/.svn/text-base/NestedUnitTest.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/nested/NestedUnitTest.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/config/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/config/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/config/.svn/text-base/filters.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/config/.svn/text-base/view.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/config/dirmyconfig/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/config/dirmyconfig/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/config/dirmyconfig/.svn/text-base/myconfig.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/config/dirmyconfig/myconfig.yml create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/config/filters.yml create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/config/view.yml create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin/config/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin/config/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin/config/.svn/text-base/filters.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin/config/.svn/text-base/view.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin/config/dirmyconfig/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin/config/dirmyconfig/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin/config/dirmyconfig/.svn/text-base/myconfig.yml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin/config/dirmyconfig/myconfig.yml create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin/config/filters.yml create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin/config/view.yml create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/i18n/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/i18n/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/i18n/.svn/text-base/messages.fr.xml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/i18n/messages.fr.xml create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/actions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/actions/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/actions/.svn/prop-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/actions/.svn/text-base/actions.class.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/actions/actions.class.php create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/i18n/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/i18n/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/i18n/.svn/text-base/messages.fr.xml.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/i18n/messages.fr.xml create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/templates/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/templates/.svn/entries create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/templates/.svn/prop-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/templates/.svn/text-base/indexSuccess.php.svn-base create mode 100644 lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/templates/indexSuccess.php create mode 100755 lib/vendor/symfony/test/functional/fixtures/symfony create mode 100644 lib/vendor/symfony/test/functional/formatTest.php create mode 100644 lib/vendor/symfony/test/functional/genericTest.php create mode 100644 lib/vendor/symfony/test/functional/httpcacheTest.php create mode 100644 lib/vendor/symfony/test/functional/i18nFormTest.php create mode 100644 lib/vendor/symfony/test/functional/i18nTest.php create mode 100644 lib/vendor/symfony/test/functional/prodTest.php create mode 100644 lib/vendor/symfony/test/functional/sfTestBrowserTest.php create mode 100644 lib/vendor/symfony/test/other/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/other/.svn/entries create mode 100644 lib/vendor/symfony/test/other/.svn/prop-base/tasksTest.php.svn-base create mode 100644 lib/vendor/symfony/test/other/.svn/text-base/tasksTest.php.svn-base create mode 100644 lib/vendor/symfony/test/other/fixtures/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/other/fixtures/.svn/entries create mode 100644 lib/vendor/symfony/test/other/fixtures/.svn/prop-base/factories.yml.svn-base create mode 100644 lib/vendor/symfony/test/other/fixtures/.svn/text-base/factories.yml.svn-base create mode 100644 lib/vendor/symfony/test/other/fixtures/factories.yml create mode 100644 lib/vendor/symfony/test/other/fixtures/propel/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/other/fixtures/propel/.svn/entries create mode 100644 lib/vendor/symfony/test/other/fixtures/propel/.svn/text-base/Category.php.svn-base create mode 100644 lib/vendor/symfony/test/other/fixtures/propel/.svn/text-base/databases.yml.svn-base create mode 100644 lib/vendor/symfony/test/other/fixtures/propel/.svn/text-base/propel.ini.svn-base create mode 100644 lib/vendor/symfony/test/other/fixtures/propel/.svn/text-base/schema.yml.svn-base create mode 100644 lib/vendor/symfony/test/other/fixtures/propel/Category.php create mode 100644 lib/vendor/symfony/test/other/fixtures/propel/databases.yml create mode 100644 lib/vendor/symfony/test/other/fixtures/propel/propel.ini create mode 100644 lib/vendor/symfony/test/other/fixtures/propel/schema.yml create mode 100644 lib/vendor/symfony/test/other/fixtures/task/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/other/fixtures/task/.svn/entries create mode 100644 lib/vendor/symfony/test/other/fixtures/task/.svn/prop-base/aTask.class.php.svn-base create mode 100644 lib/vendor/symfony/test/other/fixtures/task/.svn/prop-base/myPluginTask.class.php.svn-base create mode 100644 lib/vendor/symfony/test/other/fixtures/task/.svn/prop-base/zTask.class.php.svn-base create mode 100644 lib/vendor/symfony/test/other/fixtures/task/.svn/text-base/aTask.class.php.svn-base create mode 100644 lib/vendor/symfony/test/other/fixtures/task/.svn/text-base/myPluginTask.class.php.svn-base create mode 100644 lib/vendor/symfony/test/other/fixtures/task/.svn/text-base/zTask.class.php.svn-base create mode 100644 lib/vendor/symfony/test/other/fixtures/task/aTask.class.php create mode 100644 lib/vendor/symfony/test/other/fixtures/task/myPluginTask.class.php create mode 100644 lib/vendor/symfony/test/other/fixtures/task/zTask.class.php create mode 100644 lib/vendor/symfony/test/other/fixtures/test/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/other/fixtures/test/.svn/entries create mode 100644 lib/vendor/symfony/test/other/fixtures/test/.svn/text-base/result-harness.txt.svn-base create mode 100644 lib/vendor/symfony/test/other/fixtures/test/functional/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/other/fixtures/test/functional/.svn/entries create mode 100644 lib/vendor/symfony/test/other/fixtures/test/functional/.svn/text-base/result-harness.txt.svn-base create mode 100644 lib/vendor/symfony/test/other/fixtures/test/functional/.svn/text-base/result.txt.svn-base create mode 100644 lib/vendor/symfony/test/other/fixtures/test/functional/result-harness.txt create mode 100644 lib/vendor/symfony/test/other/fixtures/test/functional/result.txt create mode 100644 lib/vendor/symfony/test/other/fixtures/test/result-harness.txt create mode 100644 lib/vendor/symfony/test/other/fixtures/test/unit/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/other/fixtures/test/unit/.svn/entries create mode 100644 lib/vendor/symfony/test/other/fixtures/test/unit/.svn/prop-base/testTest.php.svn-base create mode 100644 lib/vendor/symfony/test/other/fixtures/test/unit/.svn/text-base/result-harness.txt.svn-base create mode 100644 lib/vendor/symfony/test/other/fixtures/test/unit/.svn/text-base/result.txt.svn-base create mode 100644 lib/vendor/symfony/test/other/fixtures/test/unit/.svn/text-base/testTest.php.svn-base create mode 100644 lib/vendor/symfony/test/other/fixtures/test/unit/result-harness.txt create mode 100644 lib/vendor/symfony/test/other/fixtures/test/unit/result.txt create mode 100644 lib/vendor/symfony/test/other/fixtures/test/unit/testTest.php create mode 100644 lib/vendor/symfony/test/other/tasksTest.php create mode 100644 lib/vendor/symfony/test/unit/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/.svn/prop-base/sfContextMock.class.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/.svn/prop-base/sfEventDispatcherTest.class.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/.svn/prop-base/sfParameterHolderTest.class.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/.svn/text-base/sfContextMock.class.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/.svn/text-base/sfEventDispatcherTest.class.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/.svn/text-base/sfNoRouting.class.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/.svn/text-base/sfParameterHolderTest.class.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/action/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/action/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/action/.svn/prop-base/sfComponentTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/action/.svn/text-base/sfComponentTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/action/sfComponentTest.php create mode 100644 lib/vendor/symfony/test/unit/addon/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/addon/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/addon/.svn/text-base/sfPagerTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/addon/sfPagerTest.php create mode 100644 lib/vendor/symfony/test/unit/autoload/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/autoload/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/autoload/.svn/prop-base/sfCoreAutoloadTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/autoload/.svn/prop-base/sfSimpleAutoloadTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/autoload/.svn/text-base/sfCoreAutoloadTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/autoload/.svn/text-base/sfSimpleAutoloadTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/autoload/sfCoreAutoloadTest.php create mode 100644 lib/vendor/symfony/test/unit/autoload/sfSimpleAutoloadTest.php create mode 100644 lib/vendor/symfony/test/unit/cache/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/cache/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/cache/.svn/prop-base/sfAPCCacheTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/cache/.svn/prop-base/sfCacheDriverTests.class.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/cache/.svn/prop-base/sfCacheTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/cache/.svn/prop-base/sfEAcceleratorCacheTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/cache/.svn/prop-base/sfFileCacheTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/cache/.svn/prop-base/sfFunctionCacheTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/cache/.svn/prop-base/sfMemcacheCacheTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/cache/.svn/prop-base/sfNoCacheTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/cache/.svn/prop-base/sfSQLiteCacheTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/cache/.svn/prop-base/sfXCacheCacheTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/cache/.svn/text-base/sfAPCCacheTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/cache/.svn/text-base/sfCacheDriverTests.class.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/cache/.svn/text-base/sfCacheTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/cache/.svn/text-base/sfEAcceleratorCacheTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/cache/.svn/text-base/sfFileCacheTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/cache/.svn/text-base/sfFunctionCacheTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/cache/.svn/text-base/sfMemcacheCacheTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/cache/.svn/text-base/sfNoCacheTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/cache/.svn/text-base/sfSQLiteCacheTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/cache/.svn/text-base/sfXCacheCacheTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/cache/sfAPCCacheTest.php create mode 100644 lib/vendor/symfony/test/unit/cache/sfCacheDriverTests.class.php create mode 100644 lib/vendor/symfony/test/unit/cache/sfCacheTest.php create mode 100644 lib/vendor/symfony/test/unit/cache/sfEAcceleratorCacheTest.php create mode 100644 lib/vendor/symfony/test/unit/cache/sfFileCacheTest.php create mode 100644 lib/vendor/symfony/test/unit/cache/sfFunctionCacheTest.php create mode 100644 lib/vendor/symfony/test/unit/cache/sfMemcacheCacheTest.php create mode 100644 lib/vendor/symfony/test/unit/cache/sfNoCacheTest.php create mode 100644 lib/vendor/symfony/test/unit/cache/sfSQLiteCacheTest.php create mode 100644 lib/vendor/symfony/test/unit/cache/sfXCacheCacheTest.php create mode 100644 lib/vendor/symfony/test/unit/command/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/command/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/command/.svn/prop-base/sfCommandArgumentSetTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/command/.svn/prop-base/sfCommandArgumentTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/command/.svn/prop-base/sfCommandManagerTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/command/.svn/prop-base/sfCommandOptionSetTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/command/.svn/prop-base/sfCommandOptionTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/command/.svn/text-base/sfCommandArgumentSetTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/command/.svn/text-base/sfCommandArgumentTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/command/.svn/text-base/sfCommandManagerTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/command/.svn/text-base/sfCommandOptionSetTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/command/.svn/text-base/sfCommandOptionTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/command/sfCommandArgumentSetTest.php create mode 100644 lib/vendor/symfony/test/unit/command/sfCommandArgumentTest.php create mode 100644 lib/vendor/symfony/test/unit/command/sfCommandManagerTest.php create mode 100644 lib/vendor/symfony/test/unit/command/sfCommandOptionSetTest.php create mode 100644 lib/vendor/symfony/test/unit/command/sfCommandOptionTest.php create mode 100644 lib/vendor/symfony/test/unit/config/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/config/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/config/.svn/prop-base/sfConfigHandlerTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/config/.svn/prop-base/sfConfigTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/config/.svn/prop-base/sfDefineEnvironmentConfigHandlerTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/config/.svn/prop-base/sfFilterConfigHandlerTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/config/.svn/prop-base/sfGeneratorConfigHandlerTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/config/.svn/prop-base/sfPluginConfigurationTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/config/.svn/prop-base/sfProjectConfigurationTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/config/.svn/prop-base/sfSimpleYamlConfigHandlerTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/config/.svn/prop-base/sfViewConfigHandlerTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/config/.svn/prop-base/sfYamlConfigHandlerTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/config/.svn/text-base/sfConfigHandlerTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/config/.svn/text-base/sfConfigTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/config/.svn/text-base/sfDefineEnvironmentConfigHandlerTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/config/.svn/text-base/sfFilterConfigHandlerTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/config/.svn/text-base/sfGeneratorConfigHandlerTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/config/.svn/text-base/sfPluginConfigurationTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/config/.svn/text-base/sfProjectConfigurationTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/config/.svn/text-base/sfSimpleYamlConfigHandlerTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/config/.svn/text-base/sfViewConfigHandlerTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/config/.svn/text-base/sfYamlConfigHandlerTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfDefineEnvironmentConfigHandler/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfDefineEnvironmentConfigHandler/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfDefineEnvironmentConfigHandler/.svn/prop-base/prefix_result.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfDefineEnvironmentConfigHandler/.svn/text-base/prefix_all.yml.svn-base create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfDefineEnvironmentConfigHandler/.svn/text-base/prefix_default.yml.svn-base create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfDefineEnvironmentConfigHandler/.svn/text-base/prefix_result.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfDefineEnvironmentConfigHandler/prefix_all.yml create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfDefineEnvironmentConfigHandler/prefix_default.yml create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfDefineEnvironmentConfigHandler/prefix_result.php create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/.svn/prop-base/result.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/.svn/text-base/condition.yml.svn-base create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/.svn/text-base/default_filters.yml.svn-base create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/.svn/text-base/disable.yml.svn-base create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/.svn/text-base/filters.yml.svn-base create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/.svn/text-base/no_class.yml.svn-base create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/.svn/text-base/no_execution.yml.svn-base create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/.svn/text-base/no_rendering.yml.svn-base create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/.svn/text-base/not_disabled.yml.svn-base create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/.svn/text-base/result.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/condition.yml create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/default_filters.yml create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/disable.yml create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/filters.yml create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/no_class.yml create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/no_execution.yml create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/no_rendering.yml create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/not_disabled.yml create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/result.php create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/.svn/text-base/empty.yml.svn-base create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/.svn/text-base/no_generator_class.yml.svn-base create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/.svn/text-base/no_generator_section.yml.svn-base create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/.svn/text-base/root_edit_section.yml.svn-base create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/.svn/text-base/root_fields_section.yml.svn-base create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/.svn/text-base/root_list_section.yml.svn-base create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/empty.yml create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/no_generator_class.yml create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/no_generator_section.yml create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/root_edit_section.yml create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/root_fields_section.yml create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/root_list_section.yml create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfSimpleYamlConfigHandler/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfSimpleYamlConfigHandler/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfSimpleYamlConfigHandler/.svn/text-base/config.yml.svn-base create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfSimpleYamlConfigHandler/.svn/text-base/config_bis.yml.svn-base create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfSimpleYamlConfigHandler/config.yml create mode 100644 lib/vendor/symfony/test/unit/config/fixtures/sfSimpleYamlConfigHandler/config_bis.yml create mode 100644 lib/vendor/symfony/test/unit/config/sfConfigHandlerTest.php create mode 100644 lib/vendor/symfony/test/unit/config/sfConfigTest.php create mode 100644 lib/vendor/symfony/test/unit/config/sfDefineEnvironmentConfigHandlerTest.php create mode 100644 lib/vendor/symfony/test/unit/config/sfFilterConfigHandlerTest.php create mode 100644 lib/vendor/symfony/test/unit/config/sfGeneratorConfigHandlerTest.php create mode 100644 lib/vendor/symfony/test/unit/config/sfPluginConfigurationTest.php create mode 100644 lib/vendor/symfony/test/unit/config/sfProjectConfigurationTest.php create mode 100644 lib/vendor/symfony/test/unit/config/sfSimpleYamlConfigHandlerTest.php create mode 100644 lib/vendor/symfony/test/unit/config/sfViewConfigHandlerTest.php create mode 100644 lib/vendor/symfony/test/unit/config/sfYamlConfigHandlerTest.php create mode 100644 lib/vendor/symfony/test/unit/controller/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/controller/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/controller/.svn/prop-base/sfControllerTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/controller/.svn/prop-base/sfWebControllerTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/controller/.svn/text-base/sfControllerTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/controller/.svn/text-base/sfWebControllerTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/controller/sfControllerTest.php create mode 100644 lib/vendor/symfony/test/unit/controller/sfWebControllerTest.php create mode 100644 lib/vendor/symfony/test/unit/database/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/database/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/database/.svn/prop-base/sfDatabaseTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/database/.svn/text-base/sfDatabaseTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/database/sfDatabaseTest.php create mode 100644 lib/vendor/symfony/test/unit/debug/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/debug/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/debug/.svn/prop-base/sfDebugTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/debug/.svn/prop-base/sfTimerTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/debug/.svn/prop-base/sfWebDebugTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/debug/.svn/text-base/sfDebugTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/debug/.svn/text-base/sfTimerTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/debug/.svn/text-base/sfWebDebugTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/debug/sfDebugTest.php create mode 100644 lib/vendor/symfony/test/unit/debug/sfTimerTest.php create mode 100644 lib/vendor/symfony/test/unit/debug/sfWebDebugTest.php create mode 100644 lib/vendor/symfony/test/unit/escaper/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/escaper/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/escaper/.svn/prop-base/sfOutputEscaperArrayDecoratorTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/escaper/.svn/prop-base/sfOutputEscaperObjectDecoratorTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/escaper/.svn/prop-base/sfOutputEscaperSafeTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/escaper/.svn/prop-base/sfOutputEscaperTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/escaper/.svn/text-base/sfOutputEscaperArrayDecoratorTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/escaper/.svn/text-base/sfOutputEscaperObjectDecoratorTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/escaper/.svn/text-base/sfOutputEscaperSafeTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/escaper/.svn/text-base/sfOutputEscaperTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/escaper/sfOutputEscaperArrayDecoratorTest.php create mode 100644 lib/vendor/symfony/test/unit/escaper/sfOutputEscaperObjectDecoratorTest.php create mode 100644 lib/vendor/symfony/test/unit/escaper/sfOutputEscaperSafeTest.php create mode 100644 lib/vendor/symfony/test/unit/escaper/sfOutputEscaperTest.php create mode 100644 lib/vendor/symfony/test/unit/exception/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/exception/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/exception/.svn/prop-base/sfExceptionsTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/exception/.svn/text-base/sfExceptionsTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/exception/sfExceptionsTest.php create mode 100644 lib/vendor/symfony/test/unit/filter/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/filter/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/filter/.svn/prop-base/sfFilterTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/filter/.svn/text-base/sfFilterTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/filter/sfFilterTest.php create mode 100644 lib/vendor/symfony/test/unit/form/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/form/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/form/.svn/prop-base/sfFormFieldSchemaTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/form/.svn/prop-base/sfFormFieldTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/form/.svn/prop-base/sfFormTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/form/.svn/text-base/sfFormFieldSchemaTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/form/.svn/text-base/sfFormFieldTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/form/.svn/text-base/sfFormTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/form/addon/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/form/addon/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/form/addon/.svn/prop-base/sfFormSymfonyTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/form/addon/.svn/text-base/sfFormSymfonyTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/form/addon/sfFormSymfonyTest.php create mode 100644 lib/vendor/symfony/test/unit/form/sfFormFieldSchemaTest.php create mode 100644 lib/vendor/symfony/test/unit/form/sfFormFieldTest.php create mode 100644 lib/vendor/symfony/test/unit/form/sfFormTest.php create mode 100644 lib/vendor/symfony/test/unit/generator/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/generator/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/generator/.svn/prop-base/sfGeneratorTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/generator/.svn/prop-base/sfModelGeneratorConfigurationFieldTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/generator/.svn/text-base/sfGeneratorTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/generator/.svn/text-base/sfModelGeneratorConfigurationFieldTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/generator/sfGeneratorTest.php create mode 100644 lib/vendor/symfony/test/unit/generator/sfModelGeneratorConfigurationFieldTest.php create mode 100644 lib/vendor/symfony/test/unit/helper/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/helper/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/helper/.svn/prop-base/AssetHelperTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/helper/.svn/prop-base/DateHelperTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/helper/.svn/prop-base/EscapingHelperTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/helper/.svn/prop-base/JavascriptBaseHelperTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/helper/.svn/prop-base/NumberHelperTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/helper/.svn/prop-base/PartialHelperTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/helper/.svn/prop-base/TagHelperTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/helper/.svn/prop-base/TestObject.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/helper/.svn/prop-base/TextHelperTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/helper/.svn/prop-base/UrlHelperTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/helper/.svn/text-base/AssetHelperTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/helper/.svn/text-base/DateHelperTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/helper/.svn/text-base/EscapingHelperTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/helper/.svn/text-base/JavascriptBaseHelperTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/helper/.svn/text-base/NumberHelperTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/helper/.svn/text-base/PartialHelperTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/helper/.svn/text-base/TagHelperTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/helper/.svn/text-base/TestObject.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/helper/.svn/text-base/TextHelperTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/helper/.svn/text-base/UrlHelperTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/helper/AssetHelperTest.php create mode 100644 lib/vendor/symfony/test/unit/helper/DateHelperTest.php create mode 100644 lib/vendor/symfony/test/unit/helper/EscapingHelperTest.php create mode 100644 lib/vendor/symfony/test/unit/helper/JavascriptBaseHelperTest.php create mode 100644 lib/vendor/symfony/test/unit/helper/NumberHelperTest.php create mode 100644 lib/vendor/symfony/test/unit/helper/PartialHelperTest.php create mode 100644 lib/vendor/symfony/test/unit/helper/TagHelperTest.php create mode 100644 lib/vendor/symfony/test/unit/helper/TestObject.php create mode 100644 lib/vendor/symfony/test/unit/helper/TextHelperTest.php create mode 100644 lib/vendor/symfony/test/unit/helper/UrlHelperTest.php create mode 100644 lib/vendor/symfony/test/unit/helper/fixtures/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/helper/fixtures/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/helper/fixtures/.svn/prop-base/tiny_mce.js.svn-base create mode 100644 lib/vendor/symfony/test/unit/helper/fixtures/.svn/text-base/tiny_mce.js.svn-base create mode 100644 lib/vendor/symfony/test/unit/helper/fixtures/tiny_mce.js create mode 100644 lib/vendor/symfony/test/unit/i18n/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/i18n/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/i18n/.svn/prop-base/dataTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/i18n/.svn/prop-base/sfChoiceFormatTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/i18n/.svn/prop-base/sfCultureInfoTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/i18n/.svn/prop-base/sfI18NTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/i18n/.svn/prop-base/sfMessageSourceTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/i18n/.svn/prop-base/sfMessageSource_AggregateTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/i18n/.svn/prop-base/sfMessageSource_FileTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/i18n/.svn/prop-base/sfMessageSource_SQLiteTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/i18n/.svn/prop-base/sfMessageSource_XLIFFTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/i18n/.svn/prop-base/sfNumberFormatInfoTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/i18n/.svn/text-base/dataTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/i18n/.svn/text-base/sfChoiceFormatTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/i18n/.svn/text-base/sfCultureInfoTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/i18n/.svn/text-base/sfI18NTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/i18n/.svn/text-base/sfMessageSourceTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/i18n/.svn/text-base/sfMessageSource_AggregateTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/i18n/.svn/text-base/sfMessageSource_FileTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/i18n/.svn/text-base/sfMessageSource_SQLiteTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/i18n/.svn/text-base/sfMessageSource_XLIFFTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/i18n/.svn/text-base/sfNumberFormatInfoTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/i18n/dataTest.php create mode 100644 lib/vendor/symfony/test/unit/i18n/extract/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/i18n/extract/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/i18n/extract/.svn/prop-base/sfI18nExtractTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/i18n/extract/.svn/prop-base/sfI18nPhpExtractorTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/i18n/extract/.svn/prop-base/sfI18nYamlGeneratorExtractorTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/i18n/extract/.svn/prop-base/sfI18nYamlValidateExtractorTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/i18n/extract/.svn/text-base/sfI18nExtractTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/i18n/extract/.svn/text-base/sfI18nPhpExtractorTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/i18n/extract/.svn/text-base/sfI18nYamlGeneratorExtractorTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/i18n/extract/.svn/text-base/sfI18nYamlValidateExtractorTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/i18n/extract/sfI18nExtractTest.php create mode 100644 lib/vendor/symfony/test/unit/i18n/extract/sfI18nPhpExtractorTest.php create mode 100644 lib/vendor/symfony/test/unit/i18n/extract/sfI18nYamlGeneratorExtractorTest.php create mode 100644 lib/vendor/symfony/test/unit/i18n/extract/sfI18nYamlValidateExtractorTest.php create mode 100644 lib/vendor/symfony/test/unit/i18n/fixtures/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/i18n/fixtures/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/i18n/fixtures/.svn/text-base/messages.fr.xml.svn-base create mode 100644 lib/vendor/symfony/test/unit/i18n/fixtures/.svn/text-base/messages.fr_BE.xml.svn-base create mode 100644 lib/vendor/symfony/test/unit/i18n/fixtures/.svn/text-base/messages_bis.fr.xml.svn-base create mode 100644 lib/vendor/symfony/test/unit/i18n/fixtures/messages.fr.xml create mode 100644 lib/vendor/symfony/test/unit/i18n/fixtures/messages.fr_BE.xml create mode 100644 lib/vendor/symfony/test/unit/i18n/fixtures/messages_bis.fr.xml create mode 100644 lib/vendor/symfony/test/unit/i18n/sfChoiceFormatTest.php create mode 100644 lib/vendor/symfony/test/unit/i18n/sfCultureInfoTest.php create mode 100644 lib/vendor/symfony/test/unit/i18n/sfI18NTest.php create mode 100644 lib/vendor/symfony/test/unit/i18n/sfMessageSourceTest.php create mode 100644 lib/vendor/symfony/test/unit/i18n/sfMessageSource_AggregateTest.php create mode 100644 lib/vendor/symfony/test/unit/i18n/sfMessageSource_FileTest.php create mode 100644 lib/vendor/symfony/test/unit/i18n/sfMessageSource_SQLiteTest.php create mode 100644 lib/vendor/symfony/test/unit/i18n/sfMessageSource_XLIFFTest.php create mode 100644 lib/vendor/symfony/test/unit/i18n/sfNumberFormatInfoTest.php create mode 100644 lib/vendor/symfony/test/unit/log/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/log/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/log/.svn/prop-base/sfAggregateLoggerTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/log/.svn/prop-base/sfConsoleLoggerTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/log/.svn/prop-base/sfFileLoggerTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/log/.svn/prop-base/sfLoggerTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/log/.svn/prop-base/sfLoggerWrapperTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/log/.svn/prop-base/sfStreamLoggerTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/log/.svn/prop-base/sfVarLoggerTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/log/.svn/text-base/sfAggregateLoggerTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/log/.svn/text-base/sfConsoleLoggerTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/log/.svn/text-base/sfFileLoggerTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/log/.svn/text-base/sfLoggerTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/log/.svn/text-base/sfLoggerWrapperTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/log/.svn/text-base/sfStreamLoggerTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/log/.svn/text-base/sfVarLoggerTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/log/.svn/text-base/sfWebDebugLoggerTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/log/sfAggregateLoggerTest.php create mode 100644 lib/vendor/symfony/test/unit/log/sfConsoleLoggerTest.php create mode 100644 lib/vendor/symfony/test/unit/log/sfFileLoggerTest.php create mode 100644 lib/vendor/symfony/test/unit/log/sfLoggerTest.php create mode 100644 lib/vendor/symfony/test/unit/log/sfLoggerWrapperTest.php create mode 100644 lib/vendor/symfony/test/unit/log/sfStreamLoggerTest.php create mode 100644 lib/vendor/symfony/test/unit/log/sfVarLoggerTest.php create mode 100644 lib/vendor/symfony/test/unit/log/sfWebDebugLoggerTest.php create mode 100644 lib/vendor/symfony/test/unit/mailer/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/mailer/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/mailer/.svn/prop-base/sfMailerTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/mailer/.svn/text-base/sfMailerTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/mailer/fixtures/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/mailer/fixtures/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/mailer/fixtures/.svn/prop-base/TestMailMessage.class.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/mailer/fixtures/.svn/prop-base/TestMailerTransport.class.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/mailer/fixtures/.svn/prop-base/TestSpool.class.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/mailer/fixtures/.svn/text-base/TestMailMessage.class.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/mailer/fixtures/.svn/text-base/TestMailerTransport.class.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/mailer/fixtures/.svn/text-base/TestSpool.class.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/mailer/fixtures/TestMailMessage.class.php create mode 100644 lib/vendor/symfony/test/unit/mailer/fixtures/TestMailerTransport.class.php create mode 100644 lib/vendor/symfony/test/unit/mailer/fixtures/TestSpool.class.php create mode 100644 lib/vendor/symfony/test/unit/mailer/sfMailerTest.php create mode 100644 lib/vendor/symfony/test/unit/plugin/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/plugin/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/plugin/.svn/prop-base/sfPearDownloaderTest.class.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/.svn/prop-base/sfPearEnvironmentTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/.svn/prop-base/sfPearRestPluginTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/.svn/prop-base/sfPearRestTest.class.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/.svn/prop-base/sfPluginManagerTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/.svn/prop-base/sfPluginTestHelper.class.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/.svn/text-base/sfPearDownloaderTest.class.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/.svn/text-base/sfPearEnvironmentTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/.svn/text-base/sfPearRestPluginTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/.svn/text-base/sfPearRestTest.class.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/.svn/text-base/sfPluginManagerTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/.svn/text-base/sfPluginTestHelper.class.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/.svn/text-base/channel.xml.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/REST/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/REST/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/REST/p/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/REST/p/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/REST/p/sffooplugin/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/REST/p/sffooplugin/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/REST/p/sffooplugin/.svn/text-base/info.xml.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/REST/p/sffooplugin/info.xml create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/REST/p/sftestplugin/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/REST/p/sftestplugin/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/REST/p/sftestplugin/.svn/text-base/info.xml.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/REST/p/sftestplugin/info.xml create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/REST/r/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/REST/r/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/REST/r/sffooplugin/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/REST/r/sffooplugin/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/REST/r/sffooplugin/.svn/text-base/1.0.0.xml.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/REST/r/sffooplugin/.svn/text-base/allreleases.xml.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/REST/r/sffooplugin/.svn/text-base/deps.1.0.0.txt.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/REST/r/sffooplugin/1.0.0.xml create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/REST/r/sffooplugin/allreleases.xml create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/REST/r/sffooplugin/deps.1.0.0.txt create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/REST/r/sftestplugin/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/REST/r/sftestplugin/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/REST/r/sftestplugin/.svn/text-base/1.0.0.xml.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/REST/r/sftestplugin/.svn/text-base/1.0.3.xml.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/REST/r/sftestplugin/.svn/text-base/1.0.4.xml.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/REST/r/sftestplugin/.svn/text-base/1.1.3.xml.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/REST/r/sftestplugin/.svn/text-base/1.1.4.xml.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/REST/r/sftestplugin/.svn/text-base/allreleases.xml.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/REST/r/sftestplugin/.svn/text-base/deps.1.0.0.txt.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/REST/r/sftestplugin/.svn/text-base/deps.1.0.3.txt.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/REST/r/sftestplugin/.svn/text-base/deps.1.0.4.txt.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/REST/r/sftestplugin/.svn/text-base/deps.1.1.3.txt.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/REST/r/sftestplugin/.svn/text-base/deps.1.1.4.txt.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/REST/r/sftestplugin/1.0.0.xml create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/REST/r/sftestplugin/1.0.3.xml create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/REST/r/sftestplugin/1.0.4.xml create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/REST/r/sftestplugin/1.1.3.xml create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/REST/r/sftestplugin/1.1.4.xml create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/REST/r/sftestplugin/allreleases.xml create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/REST/r/sftestplugin/deps.1.0.0.txt create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/REST/r/sftestplugin/deps.1.0.3.txt create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/REST/r/sftestplugin/deps.1.0.4.txt create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/REST/r/sftestplugin/deps.1.1.3.txt create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/REST/r/sftestplugin/deps.1.1.4.txt create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/channel.xml create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/get/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/get/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/get/sfFooPlugin/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/get/sfFooPlugin/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/get/sfFooPlugin/.svn/prop-base/sfFooPlugin-1.0.0.tgz.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/get/sfFooPlugin/.svn/text-base/sfFooPlugin-1.0.0.tgz.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/get/sfFooPlugin/sfFooPlugin-1.0.0.tgz create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/get/sfTestPlugin/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/get/sfTestPlugin/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/get/sfTestPlugin/.svn/prop-base/sfTestPlugin-1.0.0.tgz.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/get/sfTestPlugin/.svn/prop-base/sfTestPlugin-1.0.3.tgz.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/get/sfTestPlugin/.svn/prop-base/sfTestPlugin-1.0.4.tgz.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/get/sfTestPlugin/.svn/prop-base/sfTestPlugin-1.1.3.tgz.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/get/sfTestPlugin/.svn/prop-base/sfTestPlugin-1.1.4.tgz.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/get/sfTestPlugin/.svn/text-base/sfTestPlugin-1.0.0.tgz.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/get/sfTestPlugin/.svn/text-base/sfTestPlugin-1.0.3.tgz.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/get/sfTestPlugin/.svn/text-base/sfTestPlugin-1.0.4.tgz.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/get/sfTestPlugin/.svn/text-base/sfTestPlugin-1.1.3.tgz.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/get/sfTestPlugin/.svn/text-base/sfTestPlugin-1.1.4.tgz.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/get/sfTestPlugin/sfTestPlugin-1.0.0.tgz create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/get/sfTestPlugin/sfTestPlugin-1.0.3.tgz create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/get/sfTestPlugin/sfTestPlugin-1.0.4.tgz create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/get/sfTestPlugin/sfTestPlugin-1.1.3.tgz create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/http/pear.example.com/get/sfTestPlugin/sfTestPlugin-1.1.4.tgz create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfFooPlugin/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfFooPlugin/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfFooPlugin/.svn/text-base/package.xml.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfFooPlugin/package.xml create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfFooPlugin/sfFooPlugin-1.0.0/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfFooPlugin/sfFooPlugin-1.0.0/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfFooPlugin/sfFooPlugin-1.0.0/.svn/text-base/VERSION.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfFooPlugin/sfFooPlugin-1.0.0/VERSION create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfTestPlugin/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfTestPlugin/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfTestPlugin/sfTestPlugin-1.0.0/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfTestPlugin/sfTestPlugin-1.0.0/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfTestPlugin/sfTestPlugin-1.0.0/.svn/text-base/package.xml.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfTestPlugin/sfTestPlugin-1.0.0/package.xml create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfTestPlugin/sfTestPlugin-1.0.0/sfTestPlugin-1.0.0/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfTestPlugin/sfTestPlugin-1.0.0/sfTestPlugin-1.0.0/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfTestPlugin/sfTestPlugin-1.0.0/sfTestPlugin-1.0.0/.svn/text-base/VERSION.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfTestPlugin/sfTestPlugin-1.0.0/sfTestPlugin-1.0.0/VERSION create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfTestPlugin/sfTestPlugin-1.0.3/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfTestPlugin/sfTestPlugin-1.0.3/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfTestPlugin/sfTestPlugin-1.0.3/.svn/text-base/package.xml.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfTestPlugin/sfTestPlugin-1.0.3/package.xml create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfTestPlugin/sfTestPlugin-1.0.3/sfTestPlugin-1.0.3/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfTestPlugin/sfTestPlugin-1.0.3/sfTestPlugin-1.0.3/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfTestPlugin/sfTestPlugin-1.0.3/sfTestPlugin-1.0.3/.svn/text-base/VERSION.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfTestPlugin/sfTestPlugin-1.0.3/sfTestPlugin-1.0.3/VERSION create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfTestPlugin/sfTestPlugin-1.0.4/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfTestPlugin/sfTestPlugin-1.0.4/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfTestPlugin/sfTestPlugin-1.0.4/.svn/text-base/package.xml.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfTestPlugin/sfTestPlugin-1.0.4/package.xml create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfTestPlugin/sfTestPlugin-1.0.4/sfTestPlugin-1.0.4/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfTestPlugin/sfTestPlugin-1.0.4/sfTestPlugin-1.0.4/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfTestPlugin/sfTestPlugin-1.0.4/sfTestPlugin-1.0.4/.svn/text-base/VERSION.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfTestPlugin/sfTestPlugin-1.0.4/sfTestPlugin-1.0.4/VERSION create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfTestPlugin/sfTestPlugin-1.1.3/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfTestPlugin/sfTestPlugin-1.1.3/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfTestPlugin/sfTestPlugin-1.1.3/.svn/text-base/package.xml.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfTestPlugin/sfTestPlugin-1.1.3/package.xml create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfTestPlugin/sfTestPlugin-1.1.3/sfTestPlugin-1.1.3/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfTestPlugin/sfTestPlugin-1.1.3/sfTestPlugin-1.1.3/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfTestPlugin/sfTestPlugin-1.1.3/sfTestPlugin-1.1.3/.svn/text-base/VERSION.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfTestPlugin/sfTestPlugin-1.1.3/sfTestPlugin-1.1.3/VERSION create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfTestPlugin/sfTestPlugin-1.1.4/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfTestPlugin/sfTestPlugin-1.1.4/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfTestPlugin/sfTestPlugin-1.1.4/.svn/text-base/package.xml.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfTestPlugin/sfTestPlugin-1.1.4/package.xml create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfTestPlugin/sfTestPlugin-1.1.4/sfTestPlugin-1.1.4/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfTestPlugin/sfTestPlugin-1.1.4/sfTestPlugin-1.1.4/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfTestPlugin/sfTestPlugin-1.1.4/sfTestPlugin-1.1.4/.svn/text-base/VERSION.svn-base create mode 100644 lib/vendor/symfony/test/unit/plugin/fixtures/sfTestPlugin/sfTestPlugin-1.1.4/sfTestPlugin-1.1.4/VERSION create mode 100644 lib/vendor/symfony/test/unit/plugin/sfPearDownloaderTest.class.php create mode 100644 lib/vendor/symfony/test/unit/plugin/sfPearEnvironmentTest.php create mode 100644 lib/vendor/symfony/test/unit/plugin/sfPearRestPluginTest.php create mode 100644 lib/vendor/symfony/test/unit/plugin/sfPearRestTest.class.php create mode 100644 lib/vendor/symfony/test/unit/plugin/sfPluginManagerTest.php create mode 100644 lib/vendor/symfony/test/unit/plugin/sfPluginTestHelper.class.php create mode 100644 lib/vendor/symfony/test/unit/request/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/request/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/request/.svn/prop-base/sfRequestTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/request/.svn/prop-base/sfWebRequestTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/request/.svn/text-base/sfRequestTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/request/.svn/text-base/sfWebRequestTest.php.svn-base create mode 100755 lib/vendor/symfony/test/unit/request/sfRequestTest.php create mode 100644 lib/vendor/symfony/test/unit/request/sfWebRequestTest.php create mode 100644 lib/vendor/symfony/test/unit/response/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/response/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/response/.svn/prop-base/sfResponseTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/response/.svn/prop-base/sfWebResponseTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/response/.svn/text-base/sfResponseTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/response/.svn/text-base/sfWebResponseTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/response/sfResponseTest.php create mode 100644 lib/vendor/symfony/test/unit/response/sfWebResponseTest.php create mode 100644 lib/vendor/symfony/test/unit/routing/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/routing/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/routing/.svn/prop-base/sfObjectRouteCollectionTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/routing/.svn/prop-base/sfObjectRouteTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/routing/.svn/prop-base/sfPatternRoutingTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/routing/.svn/prop-base/sfRequestRouteTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/routing/.svn/prop-base/sfRouteTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/routing/.svn/text-base/sfObjectRouteCollectionTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/routing/.svn/text-base/sfObjectRouteTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/routing/.svn/text-base/sfPatternRoutingTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/routing/.svn/text-base/sfRequestRouteTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/routing/.svn/text-base/sfRouteTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/routing/sfObjectRouteCollectionTest.php create mode 100644 lib/vendor/symfony/test/unit/routing/sfObjectRouteTest.php create mode 100644 lib/vendor/symfony/test/unit/routing/sfPatternRoutingTest.php create mode 100644 lib/vendor/symfony/test/unit/routing/sfRequestRouteTest.php create mode 100644 lib/vendor/symfony/test/unit/routing/sfRouteTest.php create mode 100644 lib/vendor/symfony/test/unit/sfContextMock.class.php create mode 100644 lib/vendor/symfony/test/unit/sfEventDispatcherTest.class.php create mode 100644 lib/vendor/symfony/test/unit/sfNoRouting.class.php create mode 100644 lib/vendor/symfony/test/unit/sfParameterHolderTest.class.php create mode 100644 lib/vendor/symfony/test/unit/storage/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/storage/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/storage/.svn/prop-base/sfCacheSessionStorageTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/storage/.svn/prop-base/sfMySQLStorageTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/storage/.svn/prop-base/sfMySQLiStorageTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/storage/.svn/prop-base/sfNoStorageTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/storage/.svn/prop-base/sfPDOSessionStorageTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/storage/.svn/prop-base/sfStorageTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/storage/.svn/text-base/sfCacheSessionStorageTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/storage/.svn/text-base/sfMySQLStorageTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/storage/.svn/text-base/sfMySQLiStorageTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/storage/.svn/text-base/sfNoStorageTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/storage/.svn/text-base/sfPDOSessionStorageTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/storage/.svn/text-base/sfSessionStorageTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/storage/.svn/text-base/sfStorageTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/storage/sfCacheSessionStorageTest.php create mode 100644 lib/vendor/symfony/test/unit/storage/sfMySQLStorageTest.php create mode 100644 lib/vendor/symfony/test/unit/storage/sfMySQLiStorageTest.php create mode 100644 lib/vendor/symfony/test/unit/storage/sfNoStorageTest.php create mode 100644 lib/vendor/symfony/test/unit/storage/sfPDOSessionStorageTest.php create mode 100644 lib/vendor/symfony/test/unit/storage/sfSessionStorageTest.php create mode 100644 lib/vendor/symfony/test/unit/storage/sfStorageTest.php create mode 100644 lib/vendor/symfony/test/unit/task/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/task/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/task/.svn/prop-base/sfBaseTaskTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/task/.svn/prop-base/sfFilesystemTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/task/.svn/prop-base/sfTaskTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/task/.svn/text-base/sfBaseTaskTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/task/.svn/text-base/sfFilesystemTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/task/.svn/text-base/sfTaskTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/task/cache/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/task/cache/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/task/cache/.svn/prop-base/sfCacheClearTaskTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/task/cache/.svn/text-base/sfCacheClearTaskTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/task/cache/sfCacheClearTaskTest.php create mode 100644 lib/vendor/symfony/test/unit/task/sfBaseTaskTest.php create mode 100644 lib/vendor/symfony/test/unit/task/sfFilesystemTest.php create mode 100644 lib/vendor/symfony/test/unit/task/sfTaskTest.php create mode 100644 lib/vendor/symfony/test/unit/test/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/test/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/test/.svn/prop-base/sfTestFunctionalTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/test/.svn/text-base/sfTestFunctionalTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/test/sfTestFunctionalTest.php create mode 100644 lib/vendor/symfony/test/unit/user/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/user/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/user/.svn/prop-base/sfBasicSecurityUserTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/user/.svn/prop-base/sfUserTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/user/.svn/text-base/sfBasicSecurityUserTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/user/.svn/text-base/sfUserTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/user/sfBasicSecurityUserTest.php create mode 100644 lib/vendor/symfony/test/unit/user/sfUserTest.php create mode 100644 lib/vendor/symfony/test/unit/util/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/util/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/util/.svn/prop-base/sfBrowserTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/util/.svn/prop-base/sfCallableTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/util/.svn/prop-base/sfClassManipulatorTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/util/.svn/prop-base/sfContextTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/util/.svn/prop-base/sfDomCssSelectorTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/util/.svn/prop-base/sfFinderTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/util/.svn/prop-base/sfInflectorTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/util/.svn/prop-base/sfNamespacedParameterHolderTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/util/.svn/prop-base/sfParameterHolderTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/util/.svn/prop-base/sfToolkitTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/util/.svn/text-base/sfBrowserTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/util/.svn/text-base/sfCallableTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/util/.svn/text-base/sfClassManipulatorTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/util/.svn/text-base/sfContextTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/util/.svn/text-base/sfDomCssSelectorTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/util/.svn/text-base/sfFinderTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/util/.svn/text-base/sfInflectorTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/util/.svn/text-base/sfNamespacedParameterHolderTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/util/.svn/text-base/sfParameterHolderTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/util/.svn/text-base/sfToolkitTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/util/fixtures/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/util/fixtures/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/util/fixtures/finder/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/util/fixtures/finder/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/util/fixtures/finder/.svn/text-base/FILE5.txt.svn-base create mode 100644 lib/vendor/symfony/test/unit/util/fixtures/finder/.svn/text-base/file1.svn-base create mode 100644 lib/vendor/symfony/test/unit/util/fixtures/finder/.svn/text-base/file2.txt.svn-base create mode 100644 lib/vendor/symfony/test/unit/util/fixtures/finder/FILE5.txt create mode 100644 lib/vendor/symfony/test/unit/util/fixtures/finder/dir1/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/util/fixtures/finder/dir1/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/util/fixtures/finder/dir1/.svn/prop-base/file12.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/util/fixtures/finder/dir1/.svn/text-base/file11.svn-base create mode 100644 lib/vendor/symfony/test/unit/util/fixtures/finder/dir1/.svn/text-base/file12.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/util/fixtures/finder/dir1/.svn/text-base/file13.svn-base create mode 100644 lib/vendor/symfony/test/unit/util/fixtures/finder/dir1/dir2/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/util/fixtures/finder/dir1/dir2/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/util/fixtures/finder/dir1/dir2/.svn/prop-base/file21.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/util/fixtures/finder/dir1/dir2/.svn/text-base/file21.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/util/fixtures/finder/dir1/dir2/.svn/text-base/file22.svn-base create mode 100644 lib/vendor/symfony/test/unit/util/fixtures/finder/dir1/dir2/.svn/text-base/file23.svn-base create mode 100644 lib/vendor/symfony/test/unit/util/fixtures/finder/dir1/dir2/.svn/text-base/file24.svn-base create mode 100644 lib/vendor/symfony/test/unit/util/fixtures/finder/dir1/dir2/dir3/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/util/fixtures/finder/dir1/dir2/dir3/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/util/fixtures/finder/dir1/dir2/dir3/.svn/text-base/file31.svn-base create mode 100644 lib/vendor/symfony/test/unit/util/fixtures/finder/dir1/dir2/dir3/file31 create mode 100644 lib/vendor/symfony/test/unit/util/fixtures/finder/dir1/dir2/dir4/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/util/fixtures/finder/dir1/dir2/dir4/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/util/fixtures/finder/dir1/dir2/dir4/.svn/text-base/file41.svn-base create mode 100644 lib/vendor/symfony/test/unit/util/fixtures/finder/dir1/dir2/dir4/file41 create mode 100644 lib/vendor/symfony/test/unit/util/fixtures/finder/dir1/dir2/file21.php create mode 100644 lib/vendor/symfony/test/unit/util/fixtures/finder/dir1/dir2/file22 create mode 100644 lib/vendor/symfony/test/unit/util/fixtures/finder/dir1/dir2/file23 create mode 100644 lib/vendor/symfony/test/unit/util/fixtures/finder/dir1/dir2/file24 create mode 100644 lib/vendor/symfony/test/unit/util/fixtures/finder/dir1/file11 create mode 100644 lib/vendor/symfony/test/unit/util/fixtures/finder/dir1/file12.php create mode 100644 lib/vendor/symfony/test/unit/util/fixtures/finder/dir1/file13 create mode 100644 lib/vendor/symfony/test/unit/util/fixtures/finder/file1 create mode 100644 lib/vendor/symfony/test/unit/util/fixtures/finder/file2.txt create mode 100644 lib/vendor/symfony/test/unit/util/fixtures/finder_permissions/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/util/fixtures/finder_permissions/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/util/fixtures/finder_permissions/secret/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/util/fixtures/finder_permissions/secret/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/util/fixtures/finder_permissions/secret/.svn/text-base/passwd.svn-base create mode 100644 lib/vendor/symfony/test/unit/util/fixtures/finder_permissions/secret/passwd create mode 100644 lib/vendor/symfony/test/unit/util/sfBrowserTest.php create mode 100644 lib/vendor/symfony/test/unit/util/sfCallableTest.php create mode 100644 lib/vendor/symfony/test/unit/util/sfClassManipulatorTest.php create mode 100644 lib/vendor/symfony/test/unit/util/sfContextTest.php create mode 100644 lib/vendor/symfony/test/unit/util/sfDomCssSelectorTest.php create mode 100644 lib/vendor/symfony/test/unit/util/sfFinderTest.php create mode 100644 lib/vendor/symfony/test/unit/util/sfInflectorTest.php create mode 100644 lib/vendor/symfony/test/unit/util/sfNamespacedParameterHolderTest.php create mode 100644 lib/vendor/symfony/test/unit/util/sfParameterHolderTest.php create mode 100644 lib/vendor/symfony/test/unit/util/sfToolkitTest.php create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/prop-base/sfValidatorAndTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/prop-base/sfValidatorBaseTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/prop-base/sfValidatorBooleanTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/prop-base/sfValidatorCSRFTokenTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/prop-base/sfValidatorCallbackTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/prop-base/sfValidatorChoiceTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/prop-base/sfValidatorDateRangeTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/prop-base/sfValidatorDateTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/prop-base/sfValidatorDateTimeTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/prop-base/sfValidatorDecoratorTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/prop-base/sfValidatorEmailTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/prop-base/sfValidatorErrorSchemaTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/prop-base/sfValidatorErrorTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/prop-base/sfValidatorFileTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/prop-base/sfValidatorFromDescriptionTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/prop-base/sfValidatorIntegerTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/prop-base/sfValidatorNumberTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/prop-base/sfValidatorOrTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/prop-base/sfValidatorPassTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/prop-base/sfValidatorRegexTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/prop-base/sfValidatorSchemaCompareTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/prop-base/sfValidatorSchemaFilterTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/prop-base/sfValidatorSchemaForEachTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/prop-base/sfValidatorSchemaTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/prop-base/sfValidatorStringTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/prop-base/sfValidatorTimeTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/prop-base/sfValidatorUrlTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/text-base/sfValidatorAndTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/text-base/sfValidatorBaseTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/text-base/sfValidatorBooleanTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/text-base/sfValidatorCSRFTokenTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/text-base/sfValidatorCallbackTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/text-base/sfValidatorChoiceTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/text-base/sfValidatorDateRangeTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/text-base/sfValidatorDateTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/text-base/sfValidatorDateTimeTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/text-base/sfValidatorDecoratorTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/text-base/sfValidatorEmailTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/text-base/sfValidatorErrorSchemaTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/text-base/sfValidatorErrorTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/text-base/sfValidatorFileTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/text-base/sfValidatorFromDescriptionTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/text-base/sfValidatorIntegerTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/text-base/sfValidatorNumberTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/text-base/sfValidatorOrTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/text-base/sfValidatorPassTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/text-base/sfValidatorRegexTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/text-base/sfValidatorSchemaCompareTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/text-base/sfValidatorSchemaFilterTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/text-base/sfValidatorSchemaForEachTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/text-base/sfValidatorSchemaTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/text-base/sfValidatorStringTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/text-base/sfValidatorTimeTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/.svn/text-base/sfValidatorUrlTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/i18n/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/validator/i18n/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/validator/i18n/.svn/prop-base/sfValidatorI18nChoiceCountryTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/i18n/.svn/prop-base/sfValidatorI18nChoiceLanguageTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/i18n/.svn/prop-base/sfValidatorI18nChoiceTimezoneTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/i18n/.svn/text-base/sfValidatorI18nChoiceCountryTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/i18n/.svn/text-base/sfValidatorI18nChoiceLanguageTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/i18n/.svn/text-base/sfValidatorI18nChoiceTimezoneTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/validator/i18n/sfValidatorI18nChoiceCountryTest.php create mode 100644 lib/vendor/symfony/test/unit/validator/i18n/sfValidatorI18nChoiceLanguageTest.php create mode 100644 lib/vendor/symfony/test/unit/validator/i18n/sfValidatorI18nChoiceTimezoneTest.php create mode 100644 lib/vendor/symfony/test/unit/validator/sfValidatorAndTest.php create mode 100644 lib/vendor/symfony/test/unit/validator/sfValidatorBaseTest.php create mode 100644 lib/vendor/symfony/test/unit/validator/sfValidatorBooleanTest.php create mode 100644 lib/vendor/symfony/test/unit/validator/sfValidatorCSRFTokenTest.php create mode 100644 lib/vendor/symfony/test/unit/validator/sfValidatorCallbackTest.php create mode 100644 lib/vendor/symfony/test/unit/validator/sfValidatorChoiceTest.php create mode 100644 lib/vendor/symfony/test/unit/validator/sfValidatorDateRangeTest.php create mode 100644 lib/vendor/symfony/test/unit/validator/sfValidatorDateTest.php create mode 100644 lib/vendor/symfony/test/unit/validator/sfValidatorDateTimeTest.php create mode 100644 lib/vendor/symfony/test/unit/validator/sfValidatorDecoratorTest.php create mode 100644 lib/vendor/symfony/test/unit/validator/sfValidatorEmailTest.php create mode 100644 lib/vendor/symfony/test/unit/validator/sfValidatorErrorSchemaTest.php create mode 100644 lib/vendor/symfony/test/unit/validator/sfValidatorErrorTest.php create mode 100644 lib/vendor/symfony/test/unit/validator/sfValidatorFileTest.php create mode 100644 lib/vendor/symfony/test/unit/validator/sfValidatorFromDescriptionTest.php create mode 100644 lib/vendor/symfony/test/unit/validator/sfValidatorIntegerTest.php create mode 100644 lib/vendor/symfony/test/unit/validator/sfValidatorNumberTest.php create mode 100644 lib/vendor/symfony/test/unit/validator/sfValidatorOrTest.php create mode 100644 lib/vendor/symfony/test/unit/validator/sfValidatorPassTest.php create mode 100644 lib/vendor/symfony/test/unit/validator/sfValidatorRegexTest.php create mode 100644 lib/vendor/symfony/test/unit/validator/sfValidatorSchemaCompareTest.php create mode 100644 lib/vendor/symfony/test/unit/validator/sfValidatorSchemaFilterTest.php create mode 100644 lib/vendor/symfony/test/unit/validator/sfValidatorSchemaForEachTest.php create mode 100644 lib/vendor/symfony/test/unit/validator/sfValidatorSchemaTest.php create mode 100644 lib/vendor/symfony/test/unit/validator/sfValidatorStringTest.php create mode 100644 lib/vendor/symfony/test/unit/validator/sfValidatorTimeTest.php create mode 100644 lib/vendor/symfony/test/unit/validator/sfValidatorUrlTest.php create mode 100644 lib/vendor/symfony/test/unit/view/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/view/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/view/.svn/prop-base/sfViewCacheManagerTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/view/.svn/prop-base/sfViewParameterHolderTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/view/.svn/prop-base/sfViewTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/view/.svn/text-base/sfViewCacheManagerTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/view/.svn/text-base/sfViewParameterHolderTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/view/.svn/text-base/sfViewTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/view/sfViewCacheManagerTest.php create mode 100644 lib/vendor/symfony/test/unit/view/sfViewParameterHolderTest.php create mode 100644 lib/vendor/symfony/test/unit/view/sfViewTest.php create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/prop-base/sfWidgetFormChoiceTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/prop-base/sfWidgetFormDateRangeTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/prop-base/sfWidgetFormDateTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/prop-base/sfWidgetFormDateTimeTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/prop-base/sfWidgetFormFilterDateTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/prop-base/sfWidgetFormFilterInputTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/prop-base/sfWidgetFormInputCheckboxTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/prop-base/sfWidgetFormInputFileEditableTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/prop-base/sfWidgetFormInputFileTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/prop-base/sfWidgetFormInputHiddenTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/prop-base/sfWidgetFormInputPasswordTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/prop-base/sfWidgetFormInputTextTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/prop-base/sfWidgetFormSchemaDecoratorTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/prop-base/sfWidgetFormSchemaForEachTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/prop-base/sfWidgetFormSchemaFormatterListTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/prop-base/sfWidgetFormSchemaFormatterTableTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/prop-base/sfWidgetFormSchemaFormatterTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/prop-base/sfWidgetFormSchemaTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/prop-base/sfWidgetFormSelectCheckboxTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/prop-base/sfWidgetFormSelectManyTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/prop-base/sfWidgetFormSelectRadioTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/prop-base/sfWidgetFormSelectTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/prop-base/sfWidgetFormTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/prop-base/sfWidgetFormTextareaTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/prop-base/sfWidgetFormTimeTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/prop-base/sfWidgetTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/text-base/sfWidgetFormChoiceTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/text-base/sfWidgetFormDateRangeTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/text-base/sfWidgetFormDateTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/text-base/sfWidgetFormDateTimeTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/text-base/sfWidgetFormFilterDateTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/text-base/sfWidgetFormFilterInputTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/text-base/sfWidgetFormInputCheckboxTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/text-base/sfWidgetFormInputFileEditableTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/text-base/sfWidgetFormInputFileTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/text-base/sfWidgetFormInputHiddenTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/text-base/sfWidgetFormInputPasswordTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/text-base/sfWidgetFormInputTextTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/text-base/sfWidgetFormSchemaDecoratorTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/text-base/sfWidgetFormSchemaForEachTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/text-base/sfWidgetFormSchemaFormatterListTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/text-base/sfWidgetFormSchemaFormatterTableTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/text-base/sfWidgetFormSchemaFormatterTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/text-base/sfWidgetFormSchemaTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/text-base/sfWidgetFormSelectCheckboxTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/text-base/sfWidgetFormSelectManyTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/text-base/sfWidgetFormSelectRadioTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/text-base/sfWidgetFormSelectTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/text-base/sfWidgetFormTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/text-base/sfWidgetFormTextareaTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/text-base/sfWidgetFormTimeTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/.svn/text-base/sfWidgetTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/i18n/.svn/all-wcprops create mode 100644 lib/vendor/symfony/test/unit/widget/i18n/.svn/entries create mode 100644 lib/vendor/symfony/test/unit/widget/i18n/.svn/prop-base/sfWidgetFormI18nChoiceCountryTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/i18n/.svn/prop-base/sfWidgetFormI18nChoiceCurrencyTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/i18n/.svn/prop-base/sfWidgetFormI18nChoiceLanguageTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/i18n/.svn/prop-base/sfWidgetFormI18nChoiceTimezoneTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/i18n/.svn/prop-base/sfWidgetFormI18nDateTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/i18n/.svn/prop-base/sfWidgetFormI18nDateTimeTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/i18n/.svn/prop-base/sfWidgetFormI18nTimeTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/i18n/.svn/text-base/sfWidgetFormI18nChoiceCountryTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/i18n/.svn/text-base/sfWidgetFormI18nChoiceCurrencyTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/i18n/.svn/text-base/sfWidgetFormI18nChoiceLanguageTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/i18n/.svn/text-base/sfWidgetFormI18nChoiceTimezoneTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/i18n/.svn/text-base/sfWidgetFormI18nDateTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/i18n/.svn/text-base/sfWidgetFormI18nDateTimeTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/i18n/.svn/text-base/sfWidgetFormI18nTimeTest.php.svn-base create mode 100644 lib/vendor/symfony/test/unit/widget/i18n/sfWidgetFormI18nChoiceCountryTest.php create mode 100644 lib/vendor/symfony/test/unit/widget/i18n/sfWidgetFormI18nChoiceCurrencyTest.php create mode 100644 lib/vendor/symfony/test/unit/widget/i18n/sfWidgetFormI18nChoiceLanguageTest.php create mode 100644 lib/vendor/symfony/test/unit/widget/i18n/sfWidgetFormI18nChoiceTimezoneTest.php create mode 100644 lib/vendor/symfony/test/unit/widget/i18n/sfWidgetFormI18nDateTest.php create mode 100644 lib/vendor/symfony/test/unit/widget/i18n/sfWidgetFormI18nDateTimeTest.php create mode 100644 lib/vendor/symfony/test/unit/widget/i18n/sfWidgetFormI18nTimeTest.php create mode 100644 lib/vendor/symfony/test/unit/widget/sfWidgetFormChoiceTest.php create mode 100644 lib/vendor/symfony/test/unit/widget/sfWidgetFormDateRangeTest.php create mode 100644 lib/vendor/symfony/test/unit/widget/sfWidgetFormDateTest.php create mode 100644 lib/vendor/symfony/test/unit/widget/sfWidgetFormDateTimeTest.php create mode 100644 lib/vendor/symfony/test/unit/widget/sfWidgetFormFilterDateTest.php create mode 100644 lib/vendor/symfony/test/unit/widget/sfWidgetFormFilterInputTest.php create mode 100644 lib/vendor/symfony/test/unit/widget/sfWidgetFormInputCheckboxTest.php create mode 100644 lib/vendor/symfony/test/unit/widget/sfWidgetFormInputFileEditableTest.php create mode 100644 lib/vendor/symfony/test/unit/widget/sfWidgetFormInputFileTest.php create mode 100644 lib/vendor/symfony/test/unit/widget/sfWidgetFormInputHiddenTest.php create mode 100644 lib/vendor/symfony/test/unit/widget/sfWidgetFormInputPasswordTest.php create mode 100644 lib/vendor/symfony/test/unit/widget/sfWidgetFormInputTextTest.php create mode 100644 lib/vendor/symfony/test/unit/widget/sfWidgetFormSchemaDecoratorTest.php create mode 100644 lib/vendor/symfony/test/unit/widget/sfWidgetFormSchemaForEachTest.php create mode 100644 lib/vendor/symfony/test/unit/widget/sfWidgetFormSchemaFormatterListTest.php create mode 100644 lib/vendor/symfony/test/unit/widget/sfWidgetFormSchemaFormatterTableTest.php create mode 100644 lib/vendor/symfony/test/unit/widget/sfWidgetFormSchemaFormatterTest.php create mode 100644 lib/vendor/symfony/test/unit/widget/sfWidgetFormSchemaTest.php create mode 100644 lib/vendor/symfony/test/unit/widget/sfWidgetFormSelectCheckboxTest.php create mode 100644 lib/vendor/symfony/test/unit/widget/sfWidgetFormSelectManyTest.php create mode 100644 lib/vendor/symfony/test/unit/widget/sfWidgetFormSelectRadioTest.php create mode 100644 lib/vendor/symfony/test/unit/widget/sfWidgetFormSelectTest.php create mode 100644 lib/vendor/symfony/test/unit/widget/sfWidgetFormTest.php create mode 100644 lib/vendor/symfony/test/unit/widget/sfWidgetFormTextareaTest.php create mode 100644 lib/vendor/symfony/test/unit/widget/sfWidgetFormTimeTest.php create mode 100644 lib/vendor/symfony/test/unit/widget/sfWidgetTest.php create mode 100644 log/companyfront_dev.log create mode 100644 plugins/.channels/.alias/pear.txt create mode 100644 plugins/.channels/.alias/pecl.txt create mode 100644 plugins/.channels/.alias/phpdocs.txt create mode 100644 plugins/.channels/.alias/symfony-plugins.txt create mode 100644 plugins/.channels/.alias/symfony.txt create mode 100644 plugins/.channels/__uri.reg create mode 100644 plugins/.channels/doc.php.net.reg create mode 100644 plugins/.channels/pear.php.net.reg create mode 100644 plugins/.channels/pear.symfony-project.com.reg create mode 100644 plugins/.channels/pecl.php.net.reg create mode 100644 plugins/.channels/plugins.symfony-project.org.reg create mode 100644 plugins/.depdb create mode 100644 plugins/.depdblock create mode 100644 plugins/.filemap create mode 100644 plugins/.lock create mode 100644 plugins/.registry/.channel.pear.symfony-project.com/symfony.reg create mode 100644 plugins/.registry/.channel.plugins.symfony-project.org/sfdoctrineguardplugin.reg create mode 100644 plugins/sfDoctrineGuardPlugin/.DS_Store create mode 100644 plugins/sfDoctrineGuardPlugin/LICENSE create mode 100644 plugins/sfDoctrineGuardPlugin/README create mode 100644 plugins/sfDoctrineGuardPlugin/VERSION create mode 100644 plugins/sfDoctrineGuardPlugin/config/doctrine/schema.yml create mode 100644 plugins/sfDoctrineGuardPlugin/config/sfDoctrineGuardPluginConfiguration.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/data/fixtures/fixtures.yml create mode 100644 plugins/sfDoctrineGuardPlugin/data/fixtures/fixtures.yml.sample create mode 100644 plugins/sfDoctrineGuardPlugin/data/tasks/.sf create mode 100644 plugins/sfDoctrineGuardPlugin/i18n/sf_guard.es.xml create mode 100644 plugins/sfDoctrineGuardPlugin/i18n/sf_guard.fr.xml create mode 100644 plugins/sfDoctrineGuardPlugin/lib/filter/doctrine/PluginsfGuardGroupFormFilter.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/lib/filter/doctrine/PluginsfGuardPermissionFormFilter.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/lib/filter/doctrine/PluginsfGuardUserFormFilter.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/lib/form/base/BasesfGuardRequestForgotPasswordForm.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/lib/form/doctrine/PluginsfGuardGroupForm.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/lib/form/doctrine/PluginsfGuardPermissionForm.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/lib/form/doctrine/PluginsfGuardUserForm.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/lib/form/doctrine/base/BasesfGuardChangeUserPasswordForm.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/lib/form/doctrine/base/BasesfGuardFormSignin.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/lib/form/doctrine/base/BasesfGuardRegisterForm.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/lib/form/doctrine/base/BasesfGuardUserAdminForm.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/lib/form/doctrine/sfGuardChangeUserPasswordForm.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/lib/form/doctrine/sfGuardFormSignin.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/lib/form/doctrine/sfGuardRegisterForm.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/lib/form/doctrine/sfGuardUserAdminForm.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/lib/form/sfGuardRequestForgotPasswordForm.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/lib/model/doctrine/PluginsfGuardForgotPassword.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/lib/model/doctrine/PluginsfGuardForgotPasswordTable.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/lib/model/doctrine/PluginsfGuardGroup.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/lib/model/doctrine/PluginsfGuardGroupPermission.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/lib/model/doctrine/PluginsfGuardGroupPermissionTable.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/lib/model/doctrine/PluginsfGuardGroupTable.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/lib/model/doctrine/PluginsfGuardPermission.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/lib/model/doctrine/PluginsfGuardPermissionTable.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/lib/model/doctrine/PluginsfGuardRememberKey.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/lib/model/doctrine/PluginsfGuardRememberKeyTable.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/lib/model/doctrine/PluginsfGuardUser.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/lib/model/doctrine/PluginsfGuardUserGroup.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/lib/model/doctrine/PluginsfGuardUserGroupTable.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/lib/model/doctrine/PluginsfGuardUserPermission.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/lib/model/doctrine/PluginsfGuardUserPermissionTable.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/lib/model/doctrine/PluginsfGuardUserTable.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/lib/routing/sfGuardRouting.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/lib/sfGuardBasicSecurityFilter.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/lib/sfGuardRememberMeFilter.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/lib/task/sfGuardAddGroupTask.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/lib/task/sfGuardAddPermissionTask.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/lib/task/sfGuardChangePasswordTask.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/lib/task/sfGuardCreateUserTask.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/lib/task/sfGuardPromoteSuperAdminTask.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/lib/user/sfGuardSecurityUser.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/lib/validator/sfGuardValidatorUser.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/modules/sfGuardAuth/actions/actions.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/modules/sfGuardAuth/actions/components.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/modules/sfGuardAuth/config/security.yml create mode 100644 plugins/sfDoctrineGuardPlugin/modules/sfGuardAuth/lib/BasesfGuardAuthActions.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/modules/sfGuardAuth/lib/BasesfGuardAuthComponents.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/modules/sfGuardAuth/templates/_signin_form.php create mode 100644 plugins/sfDoctrineGuardPlugin/modules/sfGuardAuth/templates/secureSuccess.php create mode 100644 plugins/sfDoctrineGuardPlugin/modules/sfGuardAuth/templates/signinSuccess.php create mode 100644 plugins/sfDoctrineGuardPlugin/modules/sfGuardForgotPassword/actions/actions.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/modules/sfGuardForgotPassword/lib/BasesfGuardForgotPasswordActions.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/modules/sfGuardForgotPassword/templates/_new_password.php create mode 100644 plugins/sfDoctrineGuardPlugin/modules/sfGuardForgotPassword/templates/_send_request.php create mode 100644 plugins/sfDoctrineGuardPlugin/modules/sfGuardForgotPassword/templates/changeSuccess.php create mode 100644 plugins/sfDoctrineGuardPlugin/modules/sfGuardForgotPassword/templates/indexSuccess.php create mode 100644 plugins/sfDoctrineGuardPlugin/modules/sfGuardGroup/actions/actions.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/modules/sfGuardGroup/config/generator.yml create mode 100644 plugins/sfDoctrineGuardPlugin/modules/sfGuardGroup/lib/sfGuardGroupGeneratorConfiguration.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/modules/sfGuardGroup/lib/sfGuardGroupGeneratorHelper.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/modules/sfGuardPermission/actions/actions.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/modules/sfGuardPermission/config/generator.yml create mode 100644 plugins/sfDoctrineGuardPlugin/modules/sfGuardPermission/lib/sfGuardPermissionGeneratorConfiguration.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/modules/sfGuardPermission/lib/sfGuardPermissionGeneratorHelper.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/modules/sfGuardRegister/actions/actions.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/modules/sfGuardRegister/actions/components.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/modules/sfGuardRegister/lib/BasesfGuardRegisterActions.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/modules/sfGuardRegister/lib/BasesfGuardRegisterComponents.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/modules/sfGuardRegister/templates/_form.php create mode 100644 plugins/sfDoctrineGuardPlugin/modules/sfGuardRegister/templates/indexSuccess.php create mode 100644 plugins/sfDoctrineGuardPlugin/modules/sfGuardUser/actions/actions.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/modules/sfGuardUser/config/generator.yml create mode 100644 plugins/sfDoctrineGuardPlugin/modules/sfGuardUser/lib/BasesfGuardUserActions.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/modules/sfGuardUser/lib/sfGuardUserGeneratorConfiguration.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/modules/sfGuardUser/lib/sfGuardUserGeneratorHelper.class.php create mode 100644 plugins/sfDoctrineGuardPlugin/sfDoctrineGuardPlugin-5.0.0.tgz create mode 100755 symfony create mode 100644 test/bootstrap/functional.php create mode 100644 test/bootstrap/unit.php create mode 100644 web/.htaccess create mode 100644 web/companyfront_dev.php create mode 100644 web/css/main.css create mode 100644 web/index.php create mode 100644 web/robots.txt diff --git a/apps/companyfront/config/app.yml b/apps/companyfront/config/app.yml new file mode 100644 index 0000000..f88da69 --- /dev/null +++ b/apps/companyfront/config/app.yml @@ -0,0 +1,5 @@ +# You can find more information about this file on the symfony website: +# http://www.symfony-project.org/reference/1_4/en/11-App + +# default values +#all: diff --git a/apps/companyfront/config/cache.yml b/apps/companyfront/config/cache.yml new file mode 100644 index 0000000..4eecbf7 --- /dev/null +++ b/apps/companyfront/config/cache.yml @@ -0,0 +1,7 @@ +# You can find more information about this file on the symfony website: +# http://www.symfony-project.org/reference/1_4/en/09-Cache + +default: + enabled: false + with_layout: false + lifetime: 86400 diff --git a/apps/companyfront/config/companyfrontConfiguration.class.php b/apps/companyfront/config/companyfrontConfiguration.class.php new file mode 100644 index 0000000..4ae437e --- /dev/null +++ b/apps/companyfront/config/companyfrontConfiguration.class.php @@ -0,0 +1,8 @@ + + web_debug: true + cache: false + no_script_name: false + etag: false + +test: + .settings: + error_reporting: + cache: false + web_debug: false + no_script_name: false + etag: false + +all: + .settings: + # Form security secret (CSRF protection) + csrf_secret: 626f467f074a698f59eb00d786be7418125ef433 + + # Output escaping settings + escaping_strategy: true + escaping_method: ESC_SPECIALCHARS + + # Enable the database manager + use_database: true diff --git a/apps/companyfront/config/view.yml b/apps/companyfront/config/view.yml new file mode 100644 index 0000000..407733d --- /dev/null +++ b/apps/companyfront/config/view.yml @@ -0,0 +1,20 @@ +# You can find more information about this file on the symfony website: +# http://www.symfony-project.org/reference/1_4/en/13-View + +default: + http_metas: + content-type: text/html + + metas: + #title: symfony project + #description: symfony project + #keywords: symfony, project + #language: en + #robots: index, follow + + stylesheets: [main.css] + + javascripts: [] + + has_layout: true + layout: layout diff --git a/apps/companyfront/lib/myUser.class.php b/apps/companyfront/lib/myUser.class.php new file mode 100644 index 0000000..4c79302 --- /dev/null +++ b/apps/companyfront/lib/myUser.class.php @@ -0,0 +1,5 @@ + + + + + + + + + + + + + + diff --git a/cache/.pear/0347254fe6eb400739516195ceb484a0rest.cachefile b/cache/.pear/0347254fe6eb400739516195ceb484a0rest.cachefile new file mode 100644 index 0000000..cf9d6c7 --- /dev/null +++ b/cache/.pear/0347254fe6eb400739516195ceb484a0rest.cachefile @@ -0,0 +1 @@ +a:4:{s:7:"attribs";a:2:{s:5:"xmlns";s:40:"http://pear.php.net/dtd/rest.allreleases";s:18:"xsi:schemaLocation";s:85:"http://pear.php.net/dtd/rest.allreleases http://pear.php.net/dtd/rest.allreleases.xsd";}s:1:"p";s:21:"sfDoctrineGuardPlugin";s:1:"c";s:27:"plugins.symfony-project.org";s:1:"r";a:5:{i:0;a:2:{s:1:"v";s:5:"5.0.0";s:1:"s";s:6:"stable";}i:1;a:2:{s:1:"v";s:5:"4.0.3";s:1:"s";s:6:"stable";}i:2;a:2:{s:1:"v";s:5:"4.0.2";s:1:"s";s:6:"stable";}i:3;a:2:{s:1:"v";s:5:"4.0.1";s:1:"s";s:6:"stable";}i:4;a:2:{s:1:"v";s:5:"4.0.0";s:1:"s";s:6:"stable";}}} \ No newline at end of file diff --git a/cache/.pear/0347254fe6eb400739516195ceb484a0rest.cacheid b/cache/.pear/0347254fe6eb400739516195ceb484a0rest.cacheid new file mode 100644 index 0000000..f45633d --- /dev/null +++ b/cache/.pear/0347254fe6eb400739516195ceb484a0rest.cacheid @@ -0,0 +1 @@ +a:2:{s:3:"age";i:1336675411;s:10:"lastChange";b:0;} \ No newline at end of file diff --git a/cache/.pear/0aff874a354386585d1840261335091arest.cachefile b/cache/.pear/0aff874a354386585d1840261335091arest.cachefile new file mode 100644 index 0000000..c4dd14a --- /dev/null +++ b/cache/.pear/0aff874a354386585d1840261335091arest.cachefile @@ -0,0 +1 @@ +s:27:"a:1:{s:8:"required";a:0:{}}"; \ No newline at end of file diff --git a/cache/.pear/0aff874a354386585d1840261335091arest.cacheid b/cache/.pear/0aff874a354386585d1840261335091arest.cacheid new file mode 100644 index 0000000..58ff06b --- /dev/null +++ b/cache/.pear/0aff874a354386585d1840261335091arest.cacheid @@ -0,0 +1 @@ +a:2:{s:3:"age";i:1336675414;s:10:"lastChange";b:0;} \ No newline at end of file diff --git a/cache/.pear/259dde20c1d2bf951782270764915737rest.cachefile b/cache/.pear/259dde20c1d2bf951782270764915737rest.cachefile new file mode 100644 index 0000000..09c0fa2 --- /dev/null +++ b/cache/.pear/259dde20c1d2bf951782270764915737rest.cachefile @@ -0,0 +1 @@ +a:14:{s:7:"attribs";a:2:{s:5:"xmlns";s:36:"http://pear.php.net/dtd/rest.release";s:18:"xsi:schemaLocation";s:77:"http://pear.php.net/dtd/rest.release http://pear.php.net/dtd/rest.release.xsd";}s:1:"p";a:2:{s:7:"attribs";a:1:{s:10:"xlink:href";s:29:"/REST/p/sfdoctrineguardplugin";}s:8:"_content";s:21:"sfDoctrineGuardPlugin";}s:1:"c";s:27:"plugins.symfony-project.org";s:1:"v";s:5:"4.0.0";s:2:"st";s:6:"stable";s:1:"l";s:11:"MIT license";s:1:"m";s:16:"Jonathan H. Wage";s:1:"s";s:27:"Identity management plugin.";s:1:"d";s:27:"Identity management plugin.";s:2:"da";s:10:"2009-12-01";s:1:"n";s:0:"";s:1:"f";s:5:"15713";s:1:"g";s:88:"http://plugins.symfony-project.org/get/sfDoctrineGuardPlugin/sfDoctrineGuardPlugin-4.0.0";s:1:"x";a:1:{s:7:"attribs";a:1:{s:10:"xlink:href";s:17:"package.4.0.0.xml";}}} \ No newline at end of file diff --git a/cache/.pear/259dde20c1d2bf951782270764915737rest.cacheid b/cache/.pear/259dde20c1d2bf951782270764915737rest.cacheid new file mode 100644 index 0000000..58ff06b --- /dev/null +++ b/cache/.pear/259dde20c1d2bf951782270764915737rest.cacheid @@ -0,0 +1 @@ +a:2:{s:3:"age";i:1336675414;s:10:"lastChange";b:0;} \ No newline at end of file diff --git a/cache/.pear/30eb3f1cd3bf6bb47747f5e078d97660rest.cachefile b/cache/.pear/30eb3f1cd3bf6bb47747f5e078d97660rest.cachefile new file mode 100644 index 0000000..27bdb02 --- /dev/null +++ b/cache/.pear/30eb3f1cd3bf6bb47747f5e078d97660rest.cachefile @@ -0,0 +1 @@ +a:14:{s:7:"attribs";a:2:{s:5:"xmlns";s:36:"http://pear.php.net/dtd/rest.release";s:18:"xsi:schemaLocation";s:77:"http://pear.php.net/dtd/rest.release http://pear.php.net/dtd/rest.release.xsd";}s:1:"p";a:2:{s:7:"attribs";a:1:{s:10:"xlink:href";s:29:"/REST/p/sfdoctrineguardplugin";}s:8:"_content";s:21:"sfDoctrineGuardPlugin";}s:1:"c";s:27:"plugins.symfony-project.org";s:1:"v";s:5:"4.0.3";s:2:"st";s:6:"stable";s:1:"l";s:11:"MIT license";s:1:"m";s:16:"Jonathan H. Wage";s:1:"s";s:27:"Identity management plugin.";s:1:"d";s:27:"Identity management plugin.";s:2:"da";s:10:"2010-07-19";s:1:"n";s:0:"";s:1:"f";s:5:"36516";s:1:"g";s:88:"http://plugins.symfony-project.org/get/sfDoctrineGuardPlugin/sfDoctrineGuardPlugin-4.0.3";s:1:"x";a:1:{s:7:"attribs";a:1:{s:10:"xlink:href";s:17:"package.4.0.3.xml";}}} \ No newline at end of file diff --git a/cache/.pear/30eb3f1cd3bf6bb47747f5e078d97660rest.cacheid b/cache/.pear/30eb3f1cd3bf6bb47747f5e078d97660rest.cacheid new file mode 100644 index 0000000..2cf8882 --- /dev/null +++ b/cache/.pear/30eb3f1cd3bf6bb47747f5e078d97660rest.cacheid @@ -0,0 +1 @@ +a:2:{s:3:"age";i:1336675413;s:10:"lastChange";b:0;} \ No newline at end of file diff --git a/cache/.pear/5605980e6948e5ad78961c777f14356arest.cachefile b/cache/.pear/5605980e6948e5ad78961c777f14356arest.cachefile new file mode 100644 index 0000000..c4dd14a --- /dev/null +++ b/cache/.pear/5605980e6948e5ad78961c777f14356arest.cachefile @@ -0,0 +1 @@ +s:27:"a:1:{s:8:"required";a:0:{}}"; \ No newline at end of file diff --git a/cache/.pear/5605980e6948e5ad78961c777f14356arest.cacheid b/cache/.pear/5605980e6948e5ad78961c777f14356arest.cacheid new file mode 100644 index 0000000..6afb885 --- /dev/null +++ b/cache/.pear/5605980e6948e5ad78961c777f14356arest.cacheid @@ -0,0 +1 @@ +a:2:{s:3:"age";i:1336675412;s:10:"lastChange";b:0;} \ No newline at end of file diff --git a/cache/.pear/7a91cdd3d8362cfffa8c8273763e2a38rest.cachefile b/cache/.pear/7a91cdd3d8362cfffa8c8273763e2a38rest.cachefile new file mode 100644 index 0000000..0c93a31 --- /dev/null +++ b/cache/.pear/7a91cdd3d8362cfffa8c8273763e2a38rest.cachefile @@ -0,0 +1 @@ +a:14:{s:7:"attribs";a:2:{s:5:"xmlns";s:36:"http://pear.php.net/dtd/rest.release";s:18:"xsi:schemaLocation";s:77:"http://pear.php.net/dtd/rest.release http://pear.php.net/dtd/rest.release.xsd";}s:1:"p";a:2:{s:7:"attribs";a:1:{s:10:"xlink:href";s:29:"/REST/p/sfdoctrineguardplugin";}s:8:"_content";s:21:"sfDoctrineGuardPlugin";}s:1:"c";s:27:"plugins.symfony-project.org";s:1:"v";s:5:"5.0.0";s:2:"st";s:6:"stable";s:1:"l";s:11:"MIT license";s:1:"m";s:16:"Jonathan H. Wage";s:1:"s";s:27:"Identity management plugin.";s:1:"d";s:27:"Identity management plugin.";s:2:"da";s:10:"2010-07-19";s:1:"n";s:0:"";s:1:"f";s:5:"70101";s:1:"g";s:88:"http://plugins.symfony-project.org/get/sfDoctrineGuardPlugin/sfDoctrineGuardPlugin-5.0.0";s:1:"x";a:1:{s:7:"attribs";a:1:{s:10:"xlink:href";s:17:"package.5.0.0.xml";}}} \ No newline at end of file diff --git a/cache/.pear/7a91cdd3d8362cfffa8c8273763e2a38rest.cacheid b/cache/.pear/7a91cdd3d8362cfffa8c8273763e2a38rest.cacheid new file mode 100644 index 0000000..6afb885 --- /dev/null +++ b/cache/.pear/7a91cdd3d8362cfffa8c8273763e2a38rest.cacheid @@ -0,0 +1 @@ +a:2:{s:3:"age";i:1336675412;s:10:"lastChange";b:0;} \ No newline at end of file diff --git a/cache/.pear/80da9e0f7387525f48fdf3657810a752rest.cachefile b/cache/.pear/80da9e0f7387525f48fdf3657810a752rest.cachefile new file mode 100644 index 0000000..c4dd14a --- /dev/null +++ b/cache/.pear/80da9e0f7387525f48fdf3657810a752rest.cachefile @@ -0,0 +1 @@ +s:27:"a:1:{s:8:"required";a:0:{}}"; \ No newline at end of file diff --git a/cache/.pear/80da9e0f7387525f48fdf3657810a752rest.cacheid b/cache/.pear/80da9e0f7387525f48fdf3657810a752rest.cacheid new file mode 100644 index 0000000..2cf8882 --- /dev/null +++ b/cache/.pear/80da9e0f7387525f48fdf3657810a752rest.cacheid @@ -0,0 +1 @@ +a:2:{s:3:"age";i:1336675413;s:10:"lastChange";b:0;} \ No newline at end of file diff --git a/cache/.pear/821d1f671999524ace3ebbd21a6d24c9rest.cachefile b/cache/.pear/821d1f671999524ace3ebbd21a6d24c9rest.cachefile new file mode 100644 index 0000000..ee44017 --- /dev/null +++ b/cache/.pear/821d1f671999524ace3ebbd21a6d24c9rest.cachefile @@ -0,0 +1 @@ +a:14:{s:7:"attribs";a:2:{s:5:"xmlns";s:36:"http://pear.php.net/dtd/rest.release";s:18:"xsi:schemaLocation";s:77:"http://pear.php.net/dtd/rest.release http://pear.php.net/dtd/rest.release.xsd";}s:1:"p";a:2:{s:7:"attribs";a:1:{s:10:"xlink:href";s:29:"/REST/p/sfdoctrineguardplugin";}s:8:"_content";s:21:"sfDoctrineGuardPlugin";}s:1:"c";s:27:"plugins.symfony-project.org";s:1:"v";s:5:"4.0.1";s:2:"st";s:6:"stable";s:1:"l";s:11:"MIT license";s:1:"m";s:16:"Jonathan H. Wage";s:1:"s";s:27:"Identity management plugin.";s:1:"d";s:27:"Identity management plugin.";s:2:"da";s:10:"2009-12-01";s:1:"n";s:0:"";s:1:"f";s:5:"17952";s:1:"g";s:88:"http://plugins.symfony-project.org/get/sfDoctrineGuardPlugin/sfDoctrineGuardPlugin-4.0.1";s:1:"x";a:1:{s:7:"attribs";a:1:{s:10:"xlink:href";s:17:"package.4.0.1.xml";}}} \ No newline at end of file diff --git a/cache/.pear/821d1f671999524ace3ebbd21a6d24c9rest.cacheid b/cache/.pear/821d1f671999524ace3ebbd21a6d24c9rest.cacheid new file mode 100644 index 0000000..58ff06b --- /dev/null +++ b/cache/.pear/821d1f671999524ace3ebbd21a6d24c9rest.cacheid @@ -0,0 +1 @@ +a:2:{s:3:"age";i:1336675414;s:10:"lastChange";b:0;} \ No newline at end of file diff --git a/cache/.pear/bcea26b5cf41001b44938f63fed67b06rest.cachefile b/cache/.pear/bcea26b5cf41001b44938f63fed67b06rest.cachefile new file mode 100644 index 0000000..c4dd14a --- /dev/null +++ b/cache/.pear/bcea26b5cf41001b44938f63fed67b06rest.cachefile @@ -0,0 +1 @@ +s:27:"a:1:{s:8:"required";a:0:{}}"; \ No newline at end of file diff --git a/cache/.pear/bcea26b5cf41001b44938f63fed67b06rest.cacheid b/cache/.pear/bcea26b5cf41001b44938f63fed67b06rest.cacheid new file mode 100644 index 0000000..2cf8882 --- /dev/null +++ b/cache/.pear/bcea26b5cf41001b44938f63fed67b06rest.cacheid @@ -0,0 +1 @@ +a:2:{s:3:"age";i:1336675413;s:10:"lastChange";b:0;} \ No newline at end of file diff --git a/cache/.pear/bfdecce74933a8dce083abd6d6e4f649rest.cachefile b/cache/.pear/bfdecce74933a8dce083abd6d6e4f649rest.cachefile new file mode 100644 index 0000000..ae29e0b --- /dev/null +++ b/cache/.pear/bfdecce74933a8dce083abd6d6e4f649rest.cachefile @@ -0,0 +1 @@ +a:14:{s:7:"attribs";a:2:{s:5:"xmlns";s:36:"http://pear.php.net/dtd/rest.release";s:18:"xsi:schemaLocation";s:77:"http://pear.php.net/dtd/rest.release http://pear.php.net/dtd/rest.release.xsd";}s:1:"p";a:2:{s:7:"attribs";a:1:{s:10:"xlink:href";s:29:"/REST/p/sfdoctrineguardplugin";}s:8:"_content";s:21:"sfDoctrineGuardPlugin";}s:1:"c";s:27:"plugins.symfony-project.org";s:1:"v";s:5:"4.0.2";s:2:"st";s:6:"stable";s:1:"l";s:11:"MIT license";s:1:"m";s:16:"Jonathan H. Wage";s:1:"s";s:27:"Identity management plugin.";s:1:"d";s:27:"Identity management plugin.";s:2:"da";s:10:"2010-07-16";s:1:"n";s:0:"";s:1:"f";s:5:"22854";s:1:"g";s:88:"http://plugins.symfony-project.org/get/sfDoctrineGuardPlugin/sfDoctrineGuardPlugin-4.0.2";s:1:"x";a:1:{s:7:"attribs";a:1:{s:10:"xlink:href";s:17:"package.4.0.2.xml";}}} \ No newline at end of file diff --git a/cache/.pear/bfdecce74933a8dce083abd6d6e4f649rest.cacheid b/cache/.pear/bfdecce74933a8dce083abd6d6e4f649rest.cacheid new file mode 100644 index 0000000..2cf8882 --- /dev/null +++ b/cache/.pear/bfdecce74933a8dce083abd6d6e4f649rest.cacheid @@ -0,0 +1 @@ +a:2:{s:3:"age";i:1336675413;s:10:"lastChange";b:0;} \ No newline at end of file diff --git a/cache/.pear/d563942ef8f24a139e7563a83576c32frest.cachefile b/cache/.pear/d563942ef8f24a139e7563a83576c32frest.cachefile new file mode 100644 index 0000000..c4dd14a --- /dev/null +++ b/cache/.pear/d563942ef8f24a139e7563a83576c32frest.cachefile @@ -0,0 +1 @@ +s:27:"a:1:{s:8:"required";a:0:{}}"; \ No newline at end of file diff --git a/cache/.pear/d563942ef8f24a139e7563a83576c32frest.cacheid b/cache/.pear/d563942ef8f24a139e7563a83576c32frest.cacheid new file mode 100644 index 0000000..6afb885 --- /dev/null +++ b/cache/.pear/d563942ef8f24a139e7563a83576c32frest.cacheid @@ -0,0 +1 @@ +a:2:{s:3:"age";i:1336675412;s:10:"lastChange";b:0;} \ No newline at end of file diff --git a/cache/.pear/e5f1f469a19c6b85c19ba8f2261b8e2arest.cachefile b/cache/.pear/e5f1f469a19c6b85c19ba8f2261b8e2arest.cachefile new file mode 100644 index 0000000..e2d2c9e --- /dev/null +++ b/cache/.pear/e5f1f469a19c6b85c19ba8f2261b8e2arest.cachefile @@ -0,0 +1 @@ +a:9:{s:7:"attribs";a:2:{s:5:"xmlns";s:36:"http://pear.php.net/dtd/rest.package";s:18:"xsi:schemaLocation";s:77:"http://pear.php.net/dtd/rest.package http://pear.php.net/dtd/rest.package.xsd";}s:1:"n";s:21:"sfDoctrineGuardPlugin";s:1:"c";s:27:"plugins.symfony-project.org";s:2:"ca";a:2:{s:7:"attribs";a:1:{s:10:"xlink:href";s:23:"/REST/c/symfony-plugins";}s:8:"_content";s:15:"symfony-plugins";}s:1:"l";s:11:"MIT license";s:2:"lu";s:38:"http://www.symfony-project.org/license";s:1:"s";s:27:"Identity management plugin.";s:1:"d";s:27:"Identity management plugin.";s:1:"r";a:1:{s:7:"attribs";a:1:{s:10:"xlink:href";s:29:"/REST/r/sfdoctrineguardplugin";}}} \ No newline at end of file diff --git a/cache/.pear/e5f1f469a19c6b85c19ba8f2261b8e2arest.cacheid b/cache/.pear/e5f1f469a19c6b85c19ba8f2261b8e2arest.cacheid new file mode 100644 index 0000000..6afb885 --- /dev/null +++ b/cache/.pear/e5f1f469a19c6b85c19ba8f2261b8e2arest.cacheid @@ -0,0 +1 @@ +a:2:{s:3:"age";i:1336675412;s:10:"lastChange";b:0;} \ No newline at end of file diff --git a/cache/.pear/package.xml b/cache/.pear/package.xml new file mode 100644 index 0000000..4b82b90 --- /dev/null +++ b/cache/.pear/package.xml @@ -0,0 +1,147 @@ + + + sfDoctrineGuardPlugin + plugins.symfony-project.org + Identity management plugin. + Identity management plugin. + + Jonathan H. Wage + jwage + jonwage@gmail.com + yes + + 2010-07-19 + + + 5.0.0 + 5.0.0 + + + stable + stable + + MIT license + +- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5.0.0 + + + 1.4.1 + + + + + + + + + 5.0.0 + 5.0.0 + + + stable + stable + + MIT license + MIT + 2010-07-19 + +* jwage: packaged sfDoctrineGuardPlugin 5.0.0 + + + + diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0.tgz b/cache/.pear/sfDoctrineGuardPlugin-5.0.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..c2b0aec455edb2b3b826ebd289e2917fd2d57752 GIT binary patch literal 71660 zcmV(tKgHnYU@qxy>|&;5=Wc23z`)MP z%*f0H^8X=W{!cjB+5abGW@Guk5C6A-u&}WGW?|-FW#wcAVP@fAX667PX8->bfd3vfGj=onf2Q~UD*pdR#r6Nd{{IJYjBb`b|8JM^zYNU5#`gc%{w%D& z*?+VB-|Wx+-}~RJY^7XU?-% zRdbna5?_X>MuQ`_92q&^j#BjJwDI@*RLm3SoNPC7bT$MD8JwR+GK4c4U!dVOWxx`y zUshTT8<)dUY78@?{iHC9{+`>UzeL;6q$_;6F^+}3ZC~Q)C%2la{7m_b{k0%-mo3*` zpTF*&Rqi3|*bj#vJDhdlo~`gOgHSfRtu3(Iel3QK%)OXx@%i1SGyDp5W>rFqY{+2a zZ;h7Z<}z_z1Z3Tp@|2S-6C-0OR!Q?l1|F)n0d|MoZ61z0p?a!u5!951D(Z4$>|b%h z8y58u$^wt8*h?)^|K-JYh#@%@sJ4~9ngqNW8ujLxMbE6t9cG*J!P3R~7tJhJ346ED z?vUUAx>c$QCtG>E9ZG6SDjinS!Y>gYWr{bweoIK^h$!vaXjI9VT5lDH+q4=pIjfgI zeQO+GNp49c#B+rebcfTo7%$(8wbUIk!93GSE$lPl4bx3$nSi5g->`YosJS1UNn~T% z*pZ2G@`&^vMbz_2m~W+8APVlWL;yUSya~^G%pPbTx}DM|GZf!9pxlM7pUh5JrO6>n|S0usS==9S95_EOmaWTJb|x z@(dQ7igqdm3w*+H^&jZ0zo~`tI~jNj*sbwOw6aXEXDO;ra?o$@Yo-5!i|z;DS$H0vfAEn6}%YUtAEJ7)D~ICZMXp4tXLbFVPWOYHkb%S*9;KzGn0y z8ihi*gC$-WzydTcV zLx&$p-RU#fuaa1pPPl48qtXJ(aAQFmHAMKwkQ314q~>6iS!yX1@|GN$sS`Ve$y9T3 zH6!^Z6%!#O5ITKAm}Jts=+Z(F3EInYdJ+&32KY)^Gc$sdHxQWlAt{{o&2h*(Z{NBJNtJ!+HXq+9P0<%Cdc0>&b(4|Eq3YX;M84I{z70krl z5rlnr?4?SH8eNp9?&1q?;k4t}MD?e}yaV{Z;pF0&Ziv{{d@u`gf3th1v<()#_u(_J zq)w`ps0)HevCs+c-(zbjuXxAtI|qe|EmnR@#kf#Xodpr6${~Rs{b}rkTTRYG0g0e- z3-g0ij=-6n^xluhK@4>@z#!M2`NLkn9%|>eRwV(5E{LQx#5Cj1W*Fy&HODAEQKP7` zd>1iLcD-+jsC33MI#YT z8?;#xht9XW;88?dU3?xEPDPWzce|EOW6IK%*t!K_9Ei{CMN$-4JwdBen8Oel&@PA4 zX#lRT?4}IW0xpzc zUYvQ(NACLI;<`z2knY|nZi1*P8mh{|=!t0< zN`%K zpUfMdnUI^T6gF5kZtYYt3f=hVh!F_$KxIp{`3!M>O`)vv^9_-LKFAUiA=%Qc3yRqg z2j3HMbxrn6Xfw!Jn4yy-@`?UJA%;aan*KsAl;&|`*81tUQ z6=D7)bY)N|nn+ZB9v4rhf4yCHNLq3R!oSyvwAKGWPNV**CJq!XD6Hlc+V`G;Yt-Ac z+k7-58?4rz-K!PLsYw{+5C&jGFSxy((*^Q+p`>yH-l=1f#z5 zcNjjluXo%TE2L6K;P)wf{V15tTGLUYWlZ+;7E?Jlvn2&;GmTM$6jtCA{Ci{CNr|7r z4DB_~aLkn})q$nyj$&)&aWRKjph!I!Y{)?Jj&W^~nQ{ zFbamioaJPPo&XhkXmEIoJ)!v~sBw`^4;aECE{*nZgYw|1m&yh$yphalf91TmvgQLf z>Jywa2nH4MXj(?KVdHT>gE|HULA_Eq(qwtT`LDFwXqD4}_IWr`2}t2_imQy+wyyZ+ zV9LqHYHG*=a?pEj@$@h|iD`2oFbg;q0_d5yR1{8Z#DW@7|crR5-4{`3iK^*5E8n=#^}jz1Y9^Rfp@++ zOY=A^bc1tDh}3gg{e!ad$iPBs~FO z=IeCWd~P*S#Og`%KLW&iD|!kNF2ZSM>PkZM@FoKAW*{$NmYR|t7fUSTA@I4q={=ta zdMN9}$-^!Rr|R5PAyN6@*UHLnE%fM5CqYek>i>2s_-VCteV+c#1KK`w(fE$+( zo|g8Lh#Uf$Bh-e)4a68O>V~SMH=Kn@ri>(}Bqxuqq?Rf;cfaxTZYQ3|v_ndi#}Eb; z{(Vl;oxITEXOKQ{$Yh)Q`CJqD>V{D-B1C#;VkB=w@DGwEg#o7E*Rc^hy0&_8D%dK2 zz#nl`t|lazw(?Ur93zDOvVJeMAV-iK=Z}ge=*C}HLIo9|_HeXP(K(csLOQTU?Wc{& z)PYhM$sRp?&ssCq1=%2qjC7M2Pq#9`ON!r`Vu&Ad0Oa-cuOroeNL*-NU=jGXsT%M)FK+Oc^+k5V=!)HPYM z(;Ewh5B&G4LBdhBkRc6b&KiyQqTU&Kt_{Q{nb)*yh+}9^F^!T=AGPSvkDnfS zLAKUu4&$2FUzNxyD6{WRbOwT(O}+;+2BI=PM(@^cov@7fVOEpWPe1&|hT@in4lAH1 zi?xozM0iRh#zxHke(z2ORYk#YBPi8lvRna+OqT<_GFkiCX5|)WaI_!=&7YMewQ|CR znWLX1MqQ5LL%Ig*R&O#HRVOK>8uhrzm1=~A0D_yc)LGV}L2(JH1b&`iByO1Z?CV@4 z9Rv=M%dy(e5y<{Vd)E_&KvY_ECpV`ckkyt~YCLJIzO0npOqY|JlT)~kv2t<~W5p#; zUc%Dht}NuqAS*A$9XBB<)MSr?TBJs(zdMHK)M2+#(4zT~*^TF_lXR|UjxwrMv+|>_ zA}MCICQ&LXDL|{6u~~>T!Ik(ovhUK%Y=WPTAJ0mW)MkLtu-0=7jZH`^c~B@vIH>u7 zLZD73kI2oGlaFA8%!5yIsept;g(OFiM~5jaOX>GVM;pVH5yeJU=Q-@574b9o3-0P9IpSsTk0-+QbJh@rh~wd5J~t=n8(+MbK31+$KwL~QS^P9I zK`ff!^t+@0&!H~-Ub4eKe~$SwL}Y@fge!xYM?pUhs?*>zfEeoT>nyN(=EK(@lvIh! zs?t;=iI>Y(4Hcn7XN zl+&XqYMg9O8nvw(W;O_e7EeCvKWPY57tx zBZ%HMol9g@v6T*Z?5%>GBcEuYe4Hzm5mu~d0$llUR3cM!+mpeUv8%PS=Kd-;hgi%SUVAl+K z3m&V4dA~eiO=3<&V6fenDfGeB*BeC8Bm6(5Uu8`kLDpkN2@IpL)5np9E&DalK|!Bs><6pKkHZXjR$w&u zW0?I#RBz+&Pj>d~eCFKr7(RlE%>7kEhnUUkKAR_rq|D1W#Ky>1faKEkr!mN8J79^D za0`mFGKK1*^U+K)G{O~6ZHxhgHf7blfU)5DLuDuXDN~@ZI8(Xi*eNw>$#!Cd&_q;EGxGDJNoiObGCY^@&Gf71XEEjecS9;#q<9Vbcs183oY$gUm*VSaDuk zp6twAjWYO|8lfhW2d`vzjy>8?%b>B9NjsALL_-{ZqMZ>CjYC;}s;NAW$8yb72;;GDU^-h{b*l(MrV2w9Sz=S{c?9 zt+FuYRwKf1C`Ppw^nUQ83kUXro$ezVXUe8tcm)cG8Ue&33OvPhrGHbwye?YP;qrn5 z&nn=cx;ShbC4CEAj20;|m1YzWk@6IY+gt1AP&uM`<`5yWNB$zTU1-ku_3^WBzB+AY zx2qN3B;p+Wz#~po74} zhV@?FAv{n+Y8Z!m)k$!Sb^^& z&&Ua}daaf&Yqd#9xlO#>FYYFWf@cXXEEw?UOif5Hh_m|8A_X?<9AG8EY~f@GSzJ}b zpSi1cHTfX|)|#OEQs{6EFLL#maak%Gn}V7wQ!*v_I9@{-B~aMB5v?ypI)V|I*dEPx z*U&QvT`}>S-}DZagfzG|vGs=Ls-^=1ci`AIGq?`H&-F9vM3UB@TS&|s>^y^nUKAjy zLabrGgjmA4c?JV`YvP+ZwpytqmE&(=pNy^gMLhkrw4EK}U735^tc$_eWK2i&7mE4p zBOrC&Y2CySksM$HI7b5XnkKA`AJEc7d7tbR_(Tcb(@CS_zLdn~n4@>iW9`aA!`A{DWQNl3anO=?oia(BO?|pOC zE;^Ogco;(}cFT6vL6r4a!#UxRiK4azaMOWbD*xQogsBYhGDr;Es!SuCNtN& z{MMk`-7AswOgI>7(}JNAi~~F18vWu1s=5RMw^Z(GsWivXK;rhEL96k$pBWXzg_0Gp z_*V+3fRbtX-W|Na1p0`tzF$nojr{L@rJsFfRL$=0(jbyq_Uj%!@6rvH?3{vRoWD~@ zD5zu_kL`@%hPub2L|Dks#Sh?a{)QWuFsajGR7JnWTo9J3jK-_4lo}J*`#QI=_(u?n zihtA!RN(Pb1^;YW@+-;#wGH4F`iP@@9*L;3e|lDSyyOb_Eoy10BLC4w6NshqzVjK2 zKM{Fu^p`rE05X2O4bC@!|7qU;bKsjy7@ANoc{id`UM8e(5HJUjei)w06X{Oud@`DUJ|WNzx==i zi4Woq62;*+W;&U4lEiBma5wQAFM2$nRfCwbmq{GxG(}^W2hx*O+OH>cdaRM_y;xVn zvk_ZWSsl{Wad26YXNCuUcO!!AmZ?nyqWcnyHw?@`d)?t*Dn$nhlOpJXu`w*B1G*t( zKuT)alx7$)cSz5=7P6b=r~`lH4Rni&Ls0~J!FsdpOYAgoa(%!|a<6OQa^gh}qbK{V z3>1tBug!3D%Tr85F**DlT@M3SR%Yb1yOD$nbjZtVre+qnl+hHrOR zkUbMSAX?dhRI=HSqfExp9V?B9)R>QJ$0*$y*IU^NW9F{ACiAC$1L!(U=?cHnhwH!d zC!UXi6RE%jS=ms*iBA!6!Bg2Zy7#q`>D$mEI;=Mq)s<0NDe^ah_pv-^ab~$MMwf?8 z*yXw|;b;5MXW=@n>e>C+!jzl+7BRIznqPl-5?xvwa*lqTd4`u1Pt!=)KNCN+lxa-k z$}orC;NCDB0d&=uGeke-r##dvgX*Kjc?Kr1F{*{znGr`YX)&o71(;hcBjLeM^8%a_ z=&{*d(A4c+kZ>6N_A}Oz)z%PTN z4yB?%j0>&C!qSb!iNiOIQ!|%H`ByD@6+RdWs_Xu19*^e>DL?O*v&|InJlmn`4=@;e z7l`HBNc?mRlzsvF%1-J1Jb`k2vGiFj`spZ2#|ScW8$gAu%4TR9opajW`SvqmAeC<8 z+g6B*GC2B0nCcpEUUDHbuSa=I(YZvg&>q-iOPFAq8rFe~syk0~MquqB5(s zoJs_locIj?{1&IdWB5iR__XrfH_g=PH?t?4w$-hupjIG(LANf#BUc0Ak##dUksLQo zuJU<4_D&#h85lAH0<)RFdu+>h?_)c5iPkQolhU)SHSHSH~u^{7MQk)Gh^cVd@2 zHD3TU*3TV35eWckCUH8_fhWfceN2IOe|~0jFd?lQVu?Ri=Ib zwg15}n+Grfr=l@J$vX^rFbqUj3emnbd~M8CGaUnBHfW@R{t_xa+X9?eo(aG~Y4GSG(QqcvQBy=y2T7$tLe4&nUe^ zZjuP_VAe1?u3#A07qH+Zv?I7X#r+lkOXgwo=kxqyg=jOd+;c;e_j;gU_JQwHpU0Ep z#9oqlF6PFFJ7*B4ceem)_ba#YlOmXq#sHA&k>LYy`*ZtWm$M#c(tb2|{7BiPB01+Q z7(9bZrrUu8m3@uX`tyE5>5~xmvZIy#{oh>HL)~_A2AFNV0iOB%^rc7ud*Q8cr6duF zm70Y!MbJHJ1$^(sCr4S}>c&4zaH^z$4NyXsAL&EyMBWutz%{JzEi-pc#_x#wN3q{Q zND_;kD%cuwzfR2sf=UG0xuCuDdF0*+d$=(U z9~26o{0rm^)W@dwwEHQ%R?fi+sX59LZaopcftV=!o?lH3S8)$|R#+aRf^tC%?=0az zzb`?z?3(*;33KA*aH+BF2f5;h5&Wt!&jMYWP=I()T^}UNZn-}o^tKA8QCT?wj;PfJ z8g%zUQY$17lH`Tbo3>z& z&JN5o>ajuRF**@WAw}0|8q6nb)OpY=nR3OKecb*PgKwNjrYu^#-{LmODU$9Z+AGDE zgY8Uc-;srj$G6v*v5~J0O;TO#@l?mX-vO@_vdrpv^pYQBMBHa-k5of~jZcr)#g4P+ikM&!k1_vdIblLuape_}7^i##<|3Q>rzqM)ct(^xyac zA1)<#RYwyGR#mpv9LV~CEXWCqsMT2GId1SGv^zM)JINv~z4@^0;@%WDOM4|%ejNf7 zlRTWsN{-?xlF4rVAH&e$l6?1Omv|QW#|s!ZoMU|XzAfge98g?{(j<-yNi}jl$mXo7 zJFXKyPyIEU$iHitN=5Arv-UbM1>zI=^Wk=14yj*r?O3w#s$r=_==26Ljt3T16s=R zU+nP0WNu#)k8^p%@i5LJj|S-Xpc{^?6RH=Uu$ymS9zOy68w?qh9RGqD8l)MYCd^|3 zO!>J?^P(z$TE=Rk)W4}Rl-s@429_jDe9UYgU?jed4MA*^!aW=2Dg>X*Bd7vl>mdH< zjSQ#NuP_qCKlqY=U(vy&*NQwbgT+l=uuOVZYPZ0}zWwmr9Z90HeK?z0>di^WY5V_; z3GHL8??nTaH11PSIOsu!cQuAYV)C;Pm%_5RxG?{YD6B)moP6yTmZ=GRq}~82xxsh2 zfvQ|UTMoL{!#>5;AEuTqj=PCDnC`0=sBwkt!G^NIo%AG5;Hvyo9?1(A7~Zr)&pesl z{#RnF5R*C4?y5qdn|sx0V@X7I5)fKZu>M%-*5lwII!Dt(M7P0 zZRNS-t^f_WF2%s0xQ4e$c-2}m)~`Q?y6ONyeE-;*+=wd$Fuhe$+R#(LtoP3xDk1u4 zUyQV`3RPyh;J*)TVV()24-_@?BI|Zsulrs~w04PO$agK%T+1`l-2}?SDz3~6J&oEeLPA|pbh1*TLeN$Z|3=1r9im86Vc}n4JU!E7Di|JZgW0b<^eUV*Rj)7eyIUeM)>)G@JFsW%x1cw-6qGhX8>*|j7JXuulr^9g9&b|#C#0hG zi7pe?3k2;snXAxVoqS^>X z?wpTc+wYVnZ}7$X7>CiMIy(lb1A!bDN*bv|avZwd$GFLsBJ+3)GH`=&352q4Tq8R^ zks8S%yDd+Y4w~JnF8H67zNVkznGyjY3~9^gTiU4StaJJaABD zJCjuiF|rG^$p6SVVB>P$qWK9bGucs5z-GCoFLl$#G#LS9r-HAF$l!DU?L_(%5` z>>OsUH837Mn;je-3P14}Y{o5-yq;J5o6N{5Q8VO#1N4Iy46`Ju(Jt9Y{Ep4Yk#wmN zip)qjRjgoL)*Xsf-4}?y1Rf^Z*B61gVau-Dt$( zuqAHHI4T!@46)csyco1&DENT&sEk!Ky#IMIG%g~8teUr?J0TpITH_)!?G6`QIovj> zQkKbYZOA${%+eC^qQ4c`GLurUxJD&=3@0^~QGe?-w+u#Wi_n_E8RMXQHNPZF` zcE%lKm&QU>4n}Ly5Czh!xmm5CCWPzeGEWy3URMSCKrE_{@vqvb9Cy{1c_&JFxd5YVRH%*a#dyd{(7=R0 zh-W}7*5Ln~T<(%@!EGKF5Mz#U8u}YVhz60^1UHv86w2fl7X)#%gXnJ2AIcqmM%giA z`Zwic`{LuUF86&iVH;193cN-z6QgRDHS$B+awMfweg_R<43{Z{V*D}w`qQ+wk;A9q z5opRXDi5$dk5+;43sOa)QMSwSx!kQMg~n1nYg{=xFw-p3h>)$g$TVVU4v-#L1=Fao z6rnJ9jF``{(yJqF z=YLEp0Pi<2v18j7J?9OX%Y9@66|DEH-X>*Fak%IxyX~nl#kvb2bSHwtpBPIxLOxQ8l5c5BW(C0uH_tg~>7f)Rh5iYJSdQe78YljPNOH)zA=H zKhag7!3C;k5hG?BU(ttB>B4(4q$&v{7Ovpb#OgX=_*p9Jyv!H!b7`VR&*}D5@i?0| z*Rxh8HTNQp^yv}>(5=hFKf2D#Wju<2aVh+kx3q7?a7I+$isNB(fQjT~Uf{|Sa8(Al zwZ~iqQa_Txqd@l8Nuw#g&!klTRdhPlCZsFdm9kB@0_;0}cIfqq?+0nR3u-t^?%q~1 zm~Qb)2QPrOBETR+>CD0z&mk;twT-kUL4pObYiUFIy2uK5Qt4<4p-*my2|`lny-LkV zLN>9rIkCu0#{sy&V^l6J30s^{6?qYq^luwtW$B!n1qF4ho~Z>FZ^q+ELkH{t0s1d3K3DK#QSneR;|konF(S=&QC3rf~GVArE`TB+!O3ARXCy< zsUuU=+S{+79S_p2FJUu_C1ePPa%z0Ug`p)aZ+iDk>=Q6Hv4HP`Uz-gRsPF;cz?%go z2U+re_mu(bl719XvrqH|Cmak7S>qRHuN7Ry9Eo}stBu)qSR#~&yzU@iM`m_H z)tHkvIf`5OV{BpJ{(D)<*w&oU+b|&@MGmo@LxL>;=#2Bhsr7QY^P~H+~9A{tZ@B}!ee72w{ z#F<|J=EHsho4S{mfW99)(k+2!4m2M|;E8pTdo*D#`*^Wf zhulu`z`+{bC9H4kDwno>sou-iC)GqBQEK@=bmu#0^hKD|7TuMmBNRP=z>qy+iWoZV z%hy*~C6K7DqzDL3$&MG^gWm1vUvdT%V_8ZD@{>(=t5SzC46yaGLMk>Cw@>Si3*`(e^=X}`0R795)Xa$k%(&-ll0-qM=d3;6A#(0;AA*l`%WYvw7~ihGW&-ek?- zsAsD1ylOlWoeD!~HVyjc>J2Vvx_Hljwn|FBU$$IsB~Dv0*XYHDP5tnTbLBU>Rf+6t zD)nU%tzZ8RIM$3Qb$cW)^e z-RUbK^BKIH=}-~-YnuFA&jsLO0L7i4is_NkLuMWZB$<`fWXu6MK%jueD={5eGlJd0 zbAei?VgTkAs%x}+PSs%i%HcI5>5-b;dw!u)_*;geI>erWQR&K_G>`l+k-?j$EHc2* zC2P4s56_JD7F*S~MQPg|G+ zj?W~s!5Xm!qI8aW!f1!5OjK+D{O31*Ua~MCBz}s?MJ=@buAQsLSffJt1Z71BAq6#9 z@Uu%6fdHB%!lpdvRky)#u8m7~zsu0SsHAiNguM#Hx*j!nNok;Bi|g06^(*3nXS(|l zjIcLQcH34KloY*O@b{NZt^Q)Y%hMpoWBFFUU??pBBE=1z=>WVm&NGa;zc)#}qZGnslPN*e9@7%_t@~Rjwv=1Fe zl0;kZ{Vu6-gC;(ep@9&hZ-16%C}O54X2drq^JO9DXo#r?a=xtPLkI`rcSlv+A ziq?x9`}O%}g{H;($cFz!u|mu?smL--6O^1kL%E5%73oTRTmIg_cr6O)owfFb`7REs znjIN~crff)-jqEFJ>R0iiyA?vK2DrrQtQcYq!0uUa>5XVkWHT?u6iZSGQ{h9YAt7n zg1d_AJAz}zj*gzuYYuPSxd|T`-<+3Cn5s$6+8649Y13r(9k72zzBAJ}_y^-L2Vo>v z)Twr^;RbiP(Iqf5J-o%Sv=;WW zJx9SvNyQsBArv>MvIe_-wL4yHGq0Fu29>E^5h6A2FNp6}q@>kT~gpnBjG)cMo%56KUBi&Kw@<99q1%a z{!8<#6zh*h#qepZB2RrFtF!tjhJ$m-kj_A*xVMa^cc6Z4uIc*<9wlscfbe2SA z(eDuwDtkNi#6@d3sN;5|zrWU58-%`+!sXY-QQwVzAJ!Dt3Lm6y zsprRwcBJOm>N7N{o{SZjEkI+lubF7k`0aVEvsKQ?Q|s_W!~*IRTZRVV74=B$jc!!- zC}`430o0V(_q_-7d=lk%Dg#)|TK}eS2XXj218!XX*dj*1!mhnv*X3=eah+t9c<3R^ z%%gcAPFVZ}(g;y~g&B{-LDXSl61QrOLpvTdqku;k4-bK~;^R5?F9=HCzFztLrhrJFKmOcI;AA3t^nkYQ( z5sm+JtUmn*k&x6!_2IBUup|eK^9F^-6EEvoVW$<{a%V9>nv~&iTDCPvWHMc9Stv@c zQYC0fTlj0f9$+IB>jv}tINJ6OjOIYBd@gfRlH66GfJWn3wY8Obmzy?lB31KCV)$1V z!dAtO3-3!omwmtf6iGqixke8~*%l4UnEkd!kHmKumHecCprr0r&pXcg;hqERQv#FI z^Fpq-S=Vg|?MCtVRfNh=@k22CyMG~2|Jb8beF{hc+adS%l|cV`1N?UZwDtTlgv<@h)xYpG z<)|vpACWA{jfK3NRj`uH$jLx!)b@~)!p1aLK#%q-%|NZ)XSBh_)PhTmRv%$)9w8_U z=lqs#M)U-s1LLKYxR&B-wrBe5uP@8!CmFqJV=pFz>A4!&i%1CpgP&abYJAw7EaA4y zY;TO;ch-8oo1mqc>|42^xn7pNWWFca@~9s30$T+dF5b8uJ47pnKXcC@Hq#tL99+mq zi-`Nz_jsU4Qj29s{iy^LQ#p9A%Vd)%81bXUm!Z^`*=sf1#f2CT=Xpy!m%rEtvbPMVQZT6xwGuj&gKZKgZ$^GY8eLw80x>TGDb43_?$|w7s(1kCq({)+>l6Q8XT~>8wiB zTwtIe$I6li_++hXAX)OPPsAW+)(;ltqeDEva}hXkGgz0TS7N{&dY{plyMitROicgAh{RyvAwbQ}xPPOiZIr~9 zJg>zri+{J_Ma1gRtkXSV&#Q8)=m=MvbLtZ4d88?`fl3_>9NoZL%;;Qh>Gq*pYZ4jQ zuBtJnSg7knHIhFc|F0jGS=L~P`zjLPsd9b~60GME5*5w1E^`oCbr;K0Jo3xN-J<`< zA{v-6P*%GL+fsGUQ_+G};q0g~$9`#`#E^a&%8(lShj@nBK5Yk%pWSM~@j0xW{VW zKJbq%)%PC?Jc=>5tJ6N??A8PaUU-hc_rSsKrReO1A;4&G9HvYSGnFF7H4XDNk7hgQ zf}hJ045>Lhb!f7r56u zMm?Tf8gtBO8_glS zV4^2j<=Huab`x-v+X}|>4k*6+Ci=Da2&}95#Mw5%@r z8kbhd13AEY6CC#l?(393K@t@{0WKO29l(^^5kNJ;_YqlUiMLvX>7%R4_^oUZLt9Oq z;~x|Z_3ze~rN2_SoZL!(?m9#GZ<1?FTSP_zN*V30$HJX}9K=J)cw-LsWDvYI>GJm0 zc&bGHH4Y>@_Le0Qej^h0J8brC(L3v>|C)g|Fk%`ks5RzqZ zb-H;()pd1t9Trx2J0)iDD>)bB30C&oq8R{Q_;g@exk#R%MC$Ji}f3U=&pi>hPB+a$&<5*8hStmiz7o8jy0 zE{S}r;A94mffKL$Z#Wu0IF~aBX(X9s-suA^hcIFnKCxd8leSQuG##iI4obgEQUBI{ zG;8Vs(U*beD4HQZBM5sUK$Y8{v1cLRV5dn+OA zl7z7x`82*{t<3)7yLHn$^EUqXpyz$6fkw2hSpsoc{!cgYp%Qx1*`rrNE*6(Ct<3x1 z4B1~qINajO#>q*LYve8h{KH-J5kzWQhx*p)Ck+vJGwoEr$(5owWR)gHDc{o@N=X%K* z9WN|kDeQ;@aS6hA*UcT04bl_)Z=Oj#eP}o|Sn*CpsLWHb+3?#$nB^yW=@`^nf3egQ z)TK-Y_s6Z{{pg(f)-d^{NQ2(tHHhxU^dPI0jbwhRmiVxZ{dBsr*ug222(0UD9zc2& z6Meb6IBWImjs>{Q4ywdy_HPcpqKe+4nO!y{ZT6N+z(XoLt`oDPz?KG8phcTlW5ONM zwMchOP<`(G{QQ4RKQJ3T*{A;r1OmzmQR8eNdSlPqX5Pe%yNWhr?&YHv0IvMB~H;mYwKqEdS2@={$4Lzi;uce_$+y z%-E=GWXZrwAQ@?78SM|wi8+XJRLq2`Cz5;ToLh@l>~LMFwtWg$@6--f?4Zxb3tN{M z(&~TJ_D#2=98gY=ag%98tG;!4Q|ip^ycIt`bl|K~;3w#8-%8*PKTSopY`fSvzg+rx z6%T%=;TYUlat0bswhjX2XuxR_?wyoltg$gqumNLv5{xd!|Ty5*o21xm-b?Z>}lg!Z){X zql#wjJ3TS%LU*Rr3juuxsG>moFFVZApoDK~H?GV_zuu~b;a9=Z>JdESd_tiB z*>w#Qj?61-Er%+d*~{fv{&+l?tYaRvTO!wN!2*8Aj;GPUtK^hTv4!7H9CyTc4}&B3 z%<%;qFgyxKv--ZybF`v6e<~CSSVNs9G-#cMqqfq$zwcLLk|-(zDw9ViKwJ(3y*tE# zXf8c(b18E`-628GBAJonSy=c$>Q$nl=iK$#)q?3LT!n7g^(w=;p@;!#2bik>(ku2I z5~-#bRrshkl0Wg>mA9#~h){|GSNU0)`XedGZ{tJdHTE%li-DE^TR}+vn?P{)l@{)O zq2P7tr;kw>y<7iPL?Gu~fN{3ae*6cZRvdVClK0(5_zv)t49TJX=>=&Ty1ptt11sG6u~yLenN1e_3moRS9Fn*e4X4ZQl%-@zS+J*m7_Pz5Os-=rN6PAnf zp!b%fgPUrl_+Lp7lLDEj)E5EaU{ahgB@B#?JIRI0r%wENP+N+E%0}3aGFwIT3B!J#8Abx_!p~Obt71#@EVzTQbrm0SAqWE`9mBN3Y&(YfWi*ag%6#GT5 z)=K+d^F?>~&YpNvZLAtfkm6BEPJAm@Dk^~PRgmPHK;&Ft`Y^&CFR(4`!|;#6NaL@{ zAa{Ol84XUDHnH>{u#Usi$`$JiK0jf9_}e?Bgsil;;Gdl1y?MZjla;4)Kt9*khD zb(Qpe^Yv`8!j%2jR840A@VoY5y#%ei2qk%asmHAgX)o*8+3|Zm((^XMexk0;8v()E~TMhe~GxK=>q8|e9 zc|m*TRGq(hZ-Ev%$AH_P1a}IcW-F|l2_*2J1N4YTqSCTseOw{qIUs8%ZNVMJ>Fkqe z@E))cJI@R3A$$e+Z6Fc2NhQ8-&}=$5hI8qezD1}4*q3-LT_Dq*l8DkE6!v3WN;3}X z_F+iHoWth>iypWlqKz1x;FkI}FAn=cpP0gLfoQHGrJg^YA@hLc=Y$MMu|~ zhSKCzBih}cy~%OJ4IqT`p9cK91FriP@csj+WB_CQZh!Kh2Y{MR&`-7VCv(y`mI+MN zt{<=FKbL;*uD^f@=&e9A>GNEm9`A=?+-H6W=Z%MyK5BZk$#boDsWm-*!6BM9a{-#( zS9g-*JHPVN9?heo2vCs=SeG$l;q$U5T?UN26y!ybYlIil7yGyK(~)#ev=uNV4O~q6 zY3jgyXPWBy&VN1!J{J!D%m0FH-h7`%X6#*D5@?Tecb$a>M{^&vEIoPtXV2s*3!IVy zE-nD+BK~Vu){VTMK8}1er=N($WhlY-B{!&rlT4x=A&i-a*@^Z{^HlDUa*U3uj%XDL z5cNJ^-f0kT_Vrt@3{xZ|XMAHX=ZNqe-(QEbaEQWVY5J8JLVGOMX4@yP>xc%lSLxOl z3zmTAqvY?J%V}rmp5eP{-w$@Dy?KskDL3(dc zo!~kRGzh6EBi(bU#fQcH#EVGc6n zQ}M$o(oE%Y8SJ2j(%S-}YoAlGL}!#<*{Q92nDHX!;6b1S-S9UBCmhhoAcOXQ*?9+T zYu3KYeD81a=Fn&_XTLR4n>E5|3MyK|#2(w>ovq|KqNF?{@>5+c)Q=JBSgFq(IO^2H zpK^ruX+i0v3gP#^ci|0Q!6kNW4||Fw9@nnJ&S+aS6&{Kr;^It37HPLyC88hJ-)OzE zO>)?nKHx+yF!CnhP+1)7h0|mY)(@MSr<}$3ox;Wc2k>`Mb_|b9fC&1`?%AIMpgwjG z>^IP4>c_Cu6ZpFM0K}Z~VOI>OnV!A@+tY9eq!K*CF!TX;o>}<|^so%zSpZP3xd3G; zw;q8t$RCCq6A3F+Un~6As0(hADuU`N0QX|x|Lj3Vz^gfAS7}P(7`{LZb!sl>sbf2xN3qP#2?m!?9twuD z*wBc@Mf$5D^-k~3QRb$(t(=0Ry`$3)NPtDHiA(}e$#FVa=cwkL@v=<*gP`_y&jHZM1P+^m9g zyXflj@i2me-Rd0zwx*o zb)C1_;V~qyT{7W;TgHb-RgNY2&-ZXr;|xJg6)=mlSiCT(8uxy ze7ibc7T}A$ukdeLx^sn*;O4*7=y7wgFp0#=&dV7^RZ)Odoeupjf5bu}eedXt2Z*_Q{9QK8LVTotXg`WUg(}C{x z0@=AzT+oQ?7f=pDW3hR;pD2rq#BG@}e}{~@{#%%gCd?3;Oz zVLh)j3*cf};hVY;(s(ol$^NPkSI7&@St!6tEVpSgUYAuMp?B1BB(|ZncbL@*%#yW8 zStgT2?*R4Fh#~kP{XIu@BS$JyBTNa83h&kY0W}%z1F>RN%hhAN>cq8AoYn#X75aHs zDp9dUHyc@Ba9k;Y*bMfzTjn*ebP~5Q~!2aqBq=^(`r$YwWj3 z_VBuY6u@5R7?bO4VDWrlzq^>pB+H{fO^GqEP6F;4{3A@_)VC z8p?G$n6)ptq6n5fjfp$e$Os=YZ?awQbxMe2-~^5ALaK&OkO}go-S34bDx!LRsC($8 z;e#WK7jCq7cJt}0bJ8Pc7My$u*%BwE$_v!dXt*}w+-J;oN$3QnB|PYjwUzToNQvMT zp>hW?Dx+iVQk(cO;I3egCN8VL#%m|FY32HO<`4tZx~)L|iAau*S`*OCzME)qDGfU# zZjPe_Xn~IaGV+2cEEAz)?4dxb0&!cxi6d5Yl^Rh|hJVpxH(_!$g{Pj|U_4f@w}xM6 zfp#B2Rc1tw@o$&jx2ucg5uJPMIt%y(N`>6nS#MPI`~q6cZiar$eZ+~4a=)bJP>X@LUm9E^qYgR=eF;Lc-=7V2P)BZrHqX|(T7 z?2ZHu-`_5^FL)(Sc>??Nhm7VN4!bVJWdH3;Y2W2vVWcm*NGKAQ<`q0qp91e)bMGP7 zWJL2XJP6)i|HMKu1Q5`5KCAV2>phqqX(WV&h-_O9knIhU&d?)_VlHx+r}=21N*Q>C zhOnwYueEZQc|k-mO@<<_e&$!SI1PcnLPysrJ@60**K?`qm)XmOAi+2JWy+`Gza76&%fhikT$L)6DqJ zk1i1IDYmB0yRLKx%~;1wnKrR6SJGCcJ5M-nonKSCc8O~EWM;wNHt5oHgZeYvs^{4q zB(s@xn|X?cQ8&K=qc6~Q>8n()sO;9NQp!jxb<=t_7?#*U6vU}m$4}&Zm4tnnt43L( zsUiydhML852ytVWA->{DxujE~KNqozV~Tw+=m;Mt!7M-{c8;eb!0F_sDH9X4QdAs`W{K`bqJa5L9P z${aVL7MhXJo>9$;#dTa8%TWw&dR(3JHYa>jaRub1EE4p{38Z!pWr2e%?;4|wj`Tfp zwOP$KO4W+sY5``?sCN{e>`|)VDJ1tvTUPP3=kb`>h1(^c)B{`$T=3f|McZSXZBS?z5_w=wEs4N|o@wxkI31Fw z&y0&K)`yyroWw?WexoyU4%MhGa^lH`kPzda>mX8m?fB#ID^MO?zY}M_x{Q7Blz#JY z8M0ypk*u&0Yw;MgQC%I27%j8F;F|^0AR3DwKQ);7L(m-q* z--HyfLm`A-nfjy25}%OE=2qw@0OAwLS3vx(Du}cndrvN{g9w`7xeEcz*0}`_MUBxMR6;Y6a13 zk_7PzLRA8F1kcpETf4N3s%2+PH|nT)r(;2^8l)?&Ne~)ugbm7cJ@+)KBk?sh{d2T1 zzC7z`qGAlo70FuEXnS6pq!X8)@`P~$`bIR^dPExtm`Z(a8>1!|EFOP)KL&m2vhwbJ zI$R3-Hioj<-CRX!9H1$<89VTJlKCq+@%IQcT|Wi#+i8lLdi(E!O}mzt!9H;+HbcPa>lcSEFwEnPoO9AR>QDw*V7U+N3s)r;x3SsHsNvo9v-}5Y zCuOz1hjDS^JwaNq7l@%78G@6*9RszUnZXpmP%?~z<3}3Glf~6av1RF*V&r)l_s$sc zn$+|n+Bck>yK3=;#Uh)+oT+25sl+pmDx)Cbq${GR67`-!gc~;%G8HeCogDmhB4*?B zyYa!Cmj?v|Jv#ge6j(8jS|9{r@~N3x&OvH3AlS?>5=|{lfStC_$r%NK#uM8h?c#bl zn=nUS&fAuG3v!Z@uO7JTW%AAobs$Qh7v-Rsv+e^Hxh<#$ID+t|ZL-fSwmx&S4d3;> zagbM}>g`Y6Gvz6f?tB!@iktA6>ScI;`{)9B`?EgBIReLy*KcTQj2MGYg%TGg2;pR- zUQrwPnFHIPgnl;|XT=FfN+ACF>~9Fcp?tpz)-p|ZJNaOeQP4CZxY8dyA{guTiG&w| zu;?#YcilIlW%;dcd3NtahXu3zf_;WE*6RNuWgZ7wR0RblS>(P*oRco8XedVZU>-xehi~V00unb1lJUFjdBt!thiY zZ9NT|DBlaugu|C7;|bR4b)nS8l^ekbXX@#3U?WyS%6hR1zY89oAAYuO+x9HNTw1h0 z0LgR(hPQBEE%t{h1*P{t&!_BiUX9k3Qfm2~)*O*>#M=y|b-kN&-HfutIfHni>kI>w z44xVI&gLn+bfjCkR5T#xi642cGVz;cAdFuM;wY}9)Bg8wr+`J--9V)2Q8?dn8yCa9 z42&#(d`{^yFf#1>=LN2ac?6|o7N=kGkhi#8&IxWqNwq@Y+yXG9kKM4I=zM*_MkPbC zG7KWsI?ITsn&1ak8MR56+nmbskC8z-Y1}3uVUXTlyouGcH;Gh|_WD5zxEgGpNmK58?VMr}dwPf8a^y9+ezesqP_Aw$aS# zG{orKw8)tn+sKskajVvPEBZx-ULI_OY0* ziJbl$z>7k%{0jHqup=O6exZ47k*hfqE7rW$n#whT0^Jg(W-;XP^H57KAM)fizSNcG zWS$XtZ7gDAPeht-58{R#Y8XE)WU2G7OsV%}*iMyN|EjPJQQzlJwn&sy3~@*I{*_%ST{61nPYkc?Ot#x?`o)_FTx9^<5PiY8tqH zehPe6JsNynTBbYjvOONtA>{z$vupdV4H;_*)$|1%FvT6cZoAHz-hRJ0`rlaUz8d)5mKnM} zD*``bfKQCiW4#M5x2 z?K>O5o78dY3efYN$*%4BL?pufUJ*5X+YMVWB zBVzno2}wDM`>$40`F`duXISCAZ{H(xfRPZQ>T{<~h%4Lus#@2+_BM^_v^HW7)qfV(k< z-g83<0?u1xOx^Op?bEKC9-pz2{9l3|U+KsO{*SqP>z#96$3y`?VB}CwThTohd;4#FNsr!1gD#8E#=w+t~dGCJwUcW8iWY86<=ZP$a=sV_&f$#3` z6jQ*?6_tSXj?eLns3-r^`g~hJvzw^<&!p~*sUxq;k2ewESly7$?@$!^=fQlh&+j!( z5U}d#e_lP+2lz^8Lf&yZve&&0IL0bMBTC!j{TW`3I_hix*v%*8y$r$9jtDISJpEh> zJikkp0-qYd`@TQw^q$i$3Ez)z1zb*MOxyC^`>LOIUOgjZ60Z2a)-Q>sHLJ1%N_yXW z>ja#4I7>7Q0J9}T0KZGgzCNd`Q%C=nH=n2V!cWIq|4VJa_kH$U*Ts)+l_$XDTozez z&-=q4`2NL206e|~IvQ(Ew!c6l-;FtT|2#8w-jq4|FP&fJ|74zh9dH5y-d*cHxBg4> zSWA%a4fNiSB<#9gs{47kFR^vx30Q3c{P3ptoX+yU;`Dj1O&R*_q*yZg-z>^Q61tD=KP>m|<4ym?YYO@wtgoJJVi90>0(%qiyg`B9 z&r>ge|84*;;OoWrw(C1(gv#;fr=O0o`|ZWl6Zke>YuURHaF5sbxhUw>e)sb=bptG# z+k5@$%6oYm0_Vh*bZEaPir@Lzw|4xQTz%brJ6|zW5%3*K2Yy-t9x~5>2LM0UOV?A! ze7x?$kB6`>BHG=%=JbFgp;O&w(Kh<;k8eR>8)s^r?*czB5~pF;<2*d0_s)f(BlX#~ z2cFN^-nR1z=bZ18{aXIZBxg>;+uib3-pd9NLErmNrX}FAun(|@-1lAypFkwN$I16| zPKONKDcY`nqB_4<&0W@h&7Zpp2!3z#0`K>i z&J2BTe-7q=UI(0g4>xCfA1S13Ux(*gC!Btoy%+bs237QG0s;Z6JDHLWZ?9M{6Me2g zs=RjNn+ATzUXlC*L$9fU*9y+ro;QEaZB|k) zj?Z1(Yi?Pe(G)Zh*LC`y_vVtLHueYnyT71c^~b^)-w(g{Rio(~Vb59LZ_DjZ-E0A1 zVINbz$Hr&C(>itADXx4^jZaYtkg}= zbAIDg1a6Sk^&I)G?Y-#ccaeNH-}anz9_@MUy&AmC`!5N8&dx>Osz77qxn4=WFbm-md>>rsegV-~Q)F4RZI{()qpUf4u&-y4QO(H@0iPTPfgi z)#@1VT%En^`kr9$bUZ`UO4KdcbMW>&2Y6c7B&^-`p5gx*;@tD{{fKdV`*}KyneBcb z)a<+WZS}Ks2CCQj@0#xQ-2H$T83t?)gB$uDZbB#Uds=-yI`A5Ntuqj{YYN=eS#}%v z*0`JymG-&#)pNMtT>xHoANPQa-{Xa!@q#}0+P6RYKgb5p;g1fuz{MF!D0oG|$Gmib z`_ufH-hJOK;MrO&Ztq>$bAHdKB*1AVh{{8L$H#ZiJiqf|YY@w@<<^qdVdJsoGXPiz ze8fWL=l<@P>-(J5VDojnD(}AP)v)jR z8;C3_)ZJIdT`JGpd8$)z|Ky8X?(5K2t6JM?*|LMM%SW@JpAXb{!^wu8=8ebTR!Ze z+it7?!z=5Wn_nDq)*6?igoE8$^Z6rCE1tnKcK4?Ei1pvJh+wZynlfJJNl+F{H0(7< z(G6Dti>*PMqW;XobUVmKSSo5iSWDI>r%H77mL&~+5eh)Hci}a4e+&>&l zD{cPyYWW&uI~A7n(EU4|$K5sdo~_IBN(&nP5>wBvp4v^#Pez+9xa(~7;Lj< z&e#l7)5udV)eW0+BN>l@$~(51CLevoCpdjbj56rawAE_E*5iH#f(Q!jG=m!W4yvp$150QF|qYDkdSN$g-fS3k&>XV6M8L_FZMZt#mj#al(=3!vx{m z1S?8*o}dt_Wv!z2BOr*7^!Wyg%5p>MYO>1dkORgaiz;sw+PFs4*Fgs>;K|HvSV|CA zd|{iI<@7z~!go}R-|grSt#CHcNR!}FT+ryovKJZATerTQOVCAowLyW_eVil+O;tEP zhE3}GLK@IYh47Va=3BHGKbR{YuAdl#XE_R1k(F|y7vK*&7aoWgZrT>YB%&nonvc3DFd*YC8r+nb+3Kbz|W|7vKY%= zxQy&Cmgfm1!6~#atn)6li1E~Gs^|z>kidWY9#dL@Xe5gGGL|<+?+U$OyN(=HiCwf zN3>FP7gBN4F9KhbfgEbF{g(wts&2pe{Jd;hb{Xsd#<$VR<`!7MIa(h_SdQ9HShM?g z7hZ+eI{?x9nnqtKrQ9~C_=?U*O?8=^O?4?qzr7hCFI8LCgUes9xJ@`OJ=bDa2Ok5T zAQZ;-F+EZbgDq{rsj1K2RF+*Ze9&805o`>xDr)HLqmLF#RnsO`HWecUe!A)Q8GcIK z1`^Y}#u_APqX2z6aJ6y|*Ief~jEh)*^{lYwqPIVh7Y+K`qwcoCC=@UHWaje4N3Ov# zm>nWbdk$o%pvt!ZWgSXfuBp3Lc`8;r0TSI5FKMklOkPQp0b#U|Uw;8TeK7Vi?K*=X zU8l4S25bY?&s1aEwW17k^T46N)~ldDJNm+kIOnRimTnEq!uzG_g;xU0i*N;f%N?KD z$gZm@I7fv|a)q}-wf+0a&I^j44Msw=sc)@`#|Un*_iW&gZ|lXAaJSos5mwpD+2her zQM#oh;+vb|nox+Vuvb>ID7zAs5B4Uc*JXwdl{$$+0#aTtmkpRv-PW2A%MyRWztWq+ zJ6H9oX8WPXoIi&F+&uie0^ZsS`#*V?5%m2k(O%o07wFXxJkEZ&QC2g3(_e|5_)uEN zFJV^+-_pPCqYO8;dXAq3M(-Q<4;LaMYNK&&x|TFt*<~P8lx&n^pg$kZXX*LUq)>aY zf9oLt&4e4Yy&PA27{L*cYZC6}jgSxM08)ZHMVYcGSQCn%PEZ8lwWTQ`NxdBvLmj^g zYwQMJJMLNGW?hx*tJP^HJsfiE)r%P>MmCd0nyr!9h|%*XfWG-nLmPQeRyd{I!bm5K8A zj-kVvs{N}l%Ex}Ptg-g@ejN9}-yxjNTt!z&ZYsnKb%P(Kko~%pIpUwx%tgiElr)7B zl(Hi+i9Qh}o_6Ga`>CC(7XovRiVAO|%L-gnfcQrJaT$w8AxVzHG1ZxoJ(F_fxQUHm zGatF7Cr#-k4d}sIr=T6m!AG+iE=9OLS0ouS@buW1#CWS-fq)uiu@pi(UcPBckCv6mFpV{|p*L`9!DOMVY%XNeEzCChXXfF)P4OlY(tov{rm% z*)8H`L*^5hMq_lqi~6(TOuXEUD_Z!)FzHmvbKA$K9KWo_=U7j=+Q60UYNQ)%*(=Zv z^4R5Q&;8#4_GxTmVayMfXalc~skBIr(vWPpdD< z6>tct(=fbE4Q;sllXYythMtJ92Tl#Uw8lR0SXRL$XMp4WarbP&KWAKQ9rXZdz^VpA z>2|Pu>PdKuF`6F6jP=mbF}IwQph{F4U^VjmP*=Hp!+?1P6~djVb_0|M2z*4ICGpxz0*{SPEVJB$x*m*Gr*d6D-Pz$#M- zRB&MKy0lKPPQ6@&cEg#RVj@iRj^#C%O{5Uf>RBlk@U()IPwTt}b_TANX%+$kP|<7; zDFfIG9L#N z^D(1)@B$AR;Erq4S#{%)Q>a7sc8DPvO$+gY8G$mfjerfbf7sd+X%eMFsHv(+Lob7Z zgsTyWaSI-tCWs~=r5>Vl7>WRW)EpQjB8k5d0A0@2X>b)D+Mx>MLDPD#NsDxGOaPlA zIKBIAUzeH?7;#pE8qDua5GgrV=;E*#FEB5?y}A1nFMQV)7bmu^H4C{h$rxE~jgeI3~Op03e9_^HTlW1Y@Aw%@h6&vt5P_xW< z`iN5V29&S#Se8t?oSWmlKKn2GBgXH(=LdlCV$8}LFtrhAxYqTd^RxFCD5z|5Uw0*! z%EReu7;!RGt3&UFP=m{IQq)1%N;U3HW|GzI!GzBuGji z+j|_Z$_GF^#@OB5Tz_vp9$C)4yyW!;$PBL)rDuyF6~R=)pw}6}y&#@4fRix49AyNn z4B!sIgy2}DqV;V#TsizYPw`9zj}PN!wq*jbUC7re8p}Q_>Ti|E9_-&D&_?TDcm426 zQQ(06&EnR~w+k_Yup>@%B#(;gBFvB;?t7R{&`$anA^=1*SFDS*o-nWY-;sbLaAHox zNaXmy2|&&;_T%Q_2e^ukN^Ur*wZbr&HZTi*O`&OW7#sO zRrTGd{(UID>;F1v8;<7?3c4fMu)^Zr-@gyI2lV~@vEKy%0;JePr}#6sZXFTEi9&Fk z2Qnfj!k&YEzl#6TqlmKq1wCxyT(ND=B5o(fnSf;v)+?k+4h5Z0g5NB}>E z9mY$6KG;G2_xC4IqSKm*aPh}L1no1!Db@rZm285_utv}@=j)97TOjO9lf8u;*wXT4 zI0cNL1sXz`9=2LE2tJU}l{VdBvISugpXyD9;`czR?;{+iv*#|Nem`yY<2?Q?k`Qv# zCrd0#g*ey$`2?i+Rw8}G5S|u=Uz|~i} zjim(KDU1{k(6bbmrzi}3WHsO{1*k5-Kh@c6eteDTF9BLRkrQC2$EH(Vf-7q)*M-$P zy3SxZ{{lP39t|1jfH6;X)c-br`fNYOR{XvG7)GSfmAv~=sW0a-ISZNt$Ugc`8IWbK zf$lO-dn~d4^=W}`PHj^&STVDW2dcB-LFjW8>24Z6sN+pO@J=oJj3bxGF1GyrtHOop z2|qBR`nyq+aTBql4Yg%fVz!r4aVux=QKV_G#^;BFFLv~dm_csCNJ6H z>?n>!xq_H1Y1YuZ`wVZZQlzvUDv&!_+i57X5nYCOL~F)&&OHf7T?7P7V=cJ(SS`Z` zFPuLhlgn@y?;C-7@C3d1XvHc-Ve%av@LXnuWgwbm{ z3!FRix;I@5IBS_~0&*AbY^vC&dOEucNS1S2Tvg$6{SpoU_|1!cQ;1${9*hc2SQ7IK z7EdmQFF-`6j)^*oDddkH*>9*DNxNPkb`a8k{ zOz=kI$5OUSrXql8mY-2*|B}GH+OB!?kcrUBjOm{O^J+WzK1+IX6c}-JyM{|+c*B>B z^9OF=fBuY`6r_TEnA#6qVeo;P-d`yh$xVagyMo@HA^3mYZ6OJ;DB^Jxe>0oyn7fmk zOm^r0!E5&CV*VtZEz*E)-;vW$Ck{|3wy+LAj*Ff`OQDBPx)ylL(-5$0^5^Mt5ZJdQ z3$cNzIX8cTWls~GR4KA z#Jg~^yLh&XjweFho;qKg8hhMkiWLWI0M9$ANuLiC>^ht|ajFXix5Xfj;`J=fk1Z-RgRyE{}9vrT+A zmftZ{BE_5o@Y~(gnm`kwzc$YVC*KWQ95l7JfS%Vtrd_rvrhYTeP?wy(dQuZrlpUeU zfm$V`a@i|7O#5_VOm1#};k>Zb3=!VjD#pdH(`-%X2msgH_X6i0`o;j~Ue5QI=}*lt zcJKS?$pE~U!b{)#>G{aO{i9=V<`|5{&v*$*kxNq<4NcM|oN^a7%Ju~?idoF69xE|F z4_7mgF9@*H9znubRRl=mtw@HY{|iu8js5{N6;)pVU(WMW0Hjlx3@*`^)?f@TZvmul zACD8~`H+Ft{Xk1!#ISM9T({=3Fqwr7PgavZ))mr~e7OiTx>ow-WicfCBSJK&ezIEVs%MS*6&HplCdL zn<=e9`4=Qu=P3oYN=|>&sXZ8}{{mXDo z@4q&c03xR>3vveuk~j8Zd^i?-a25gdX+D6dvmZZYU3WmsWZ=NXXTIJ_e%;BQCL~bf z9MJo#KI4b(2B32b+++9_uOLB`9JpL%Y)eT?Jz zWgbYzAPRE&dEn;bDJA5dx5k}g8&=I^1~NDelT1P2(%cQhvT5lQh!6tioKNC>sU%&! zfuU}=i;)T@F=3$4guXcITw&mi?+Ba38GrNbC^TX092-Z)tQy*%652HI^!e~dgS^h>*^mmJ;kzx{E%c62Ih1%i(GL&j3m&}a@cLOHXbH0Un$I*IOuG1LS#c$C zj-?a*bi+Mt!dAH;Ie3)~^RcPrv9r=<3&vz=dKL0h_I}c+kMB+G0>r3P!oGUY{H8lD z$-G1}FgQFbPI36wX?Jx+mYKKD(TXK@Dve{d6cZ6Xf1FPQh z6nF56nTAE*EtEjGX0)>D{1W-X0ww@o(Em~R5W2MVREJ#K7MJZxofB=7#(P-d*43x# zKkX*eKG&z=tz=qzEK6CahJ|mEzi;!P96|af0;}hPD!T91GVp|ALUr?8l(Cl9DovVO z$G#Q&cqjH!V$&kEWZm$Xwz%cHS`<4;?k(?dL8~I#;%l#oS^av@;sX z7HJ1&x}w{YtJ0 z7;)c&k|fEOB$`&}k!iZnY)Gc2tTIljDGkZ6vZ2Z?L9Xs7A|A$3P8;ZZ!wa5-cl5-~ zBU<2OweORkUzxi+FKre1%QNPAcFq?=uHJp7b?{Uv5JUsXQEhpwf&fWgE&=2q;( z`_DlSfeK>#4gHuA9je-2RRX7|qR@Hi^ScnghcF0N9EsM@8PUZ%wneX3^XCX-DFR!I zx0|eXK}KqdMBfjQ)3zS+_v$0n%|z&=y=>$+yQ7nJ&Vdm#n=|+%YFNNiQHC+>WwBG$ z>J{J2QJxMs!Z@4%=T#0Yg-00Xnb|v5cQeRa7ve?kGpGdA(h7)lF>_5xgIJ|+M0qj} zpZuM8us6%1nLOt}PW45}f@H7_4SrUdGj#~JXt6Z`={=SThBpe0jQm*F6p0!>Q`w@1G7yjwzsEXvtMQM8_GozsE1|XA$ILg*C~jV)zQLBZ zb)_lj6xj!+L6=<^$2DqkiT$H`EEAUp9waKs-ka|RF)rj6n~eVbhM_6P=NIx66Cy_x z4=1S_h5Hks#R}IEw-QUfFqzVq%Hv!ZaXPF$&!Z6-Al_L`(GJ&LL)>{LG?y6<=_i(m zrlQEcp$4iwhY|f%1V-EY%iJex_16-^uZgD*^yF_{!fX`lcjKsvbjd&SD&EW!JS$6D z%4p-%@?bgq^h0{XHw(Y5RKiF|?BmH+eBnBZFIRZs-$~g&;ahh9EnkEF{V|E}d@YR1 z{-CllyOwLCaQLyg@p0A4_$ zzh1<@Z?PLk=yvt(eua_^{hpBaL57pPpJsU=+W$1-Qs;retVZxheKPO)U8g+2qn<(_ zG!~3TL^>TJ_>|{^QAodo3{ZYHkl_yy<9%;=HtXj$@<%Y?3E6$T!$#idr=s33%C{V? zI{v3FA2`F@qVm)B{Ehq?^Fvhpe`4<~z@pl^#&JMYL`70iP)0&RI;BOVL8L@NhZvwxI}W%Q+g)#kk0VxZgq^GA&ou|*rbSGtiw`rHF4UBHtK-8 zFx}n49L{nEEiJ zFIXh;TQJ^S?qmv~1o`x+iahju-sd#a6?c0as#pR>rYfI1_i0}SPU}VOU)#x2+~)Y z>?5PA@n{#hfc94U)Wmq9{MDE`Q2_67NN2k)|uCwmFcwIQ9%Sfp*=3dW7dsC_weF9 zOlh4Rt4G8n#6=w)E?-mTj+9Jz-q+ycHA=rX%ap3h)>}dJT@3@F$*~JOM9j=q$7im$ zsH-7QR!Ucy+RW9^{qU4OUPY^qi5Q_Ix-8f0Ojd7#YP9tC(bnL%g=Q&~VTcZpQ< z(KNej@E2taD}*{^1>T~0`FIE7gdY3#O4Q<#?F(#m!y$|2B7)#tXw;Rbl$NNb7ac06 zow_=DD5!Gy;*gV*am}l0+)KEGX>JX28l5igAA2Z1*TvjExm?OAj4xE`!B;gZ_89>u ze~@XX_u}cP!H524*!Zvk;%zVI3BJR8Y4Z5w7{Olmc?n9?fq;>vLC%ofIHQcjTvc%< z%BT1;#NFhkS$a~7h>$Y1@LPuzoTfCRIYJU?uN)nCe`cO6W7q>U`x_53b!pY$BGKBMbXC&ygp z9GB&#=T?zLP_8kqfO;X58ysPxaauR#Q*ThX#nUu4&3@iyhj_1ZbqW;;qG59 z=*?n&VAIlC#?3)m<_+V z{En)Nuiq23?*wTU1CDgU(5o7f08d>Po|hk@#!pC!?HaDJQF;1~eBlb1Rh)8(u!=I0 z7VOKp7d=v*spWl5ZERJ6i`&DYe~4MIlbi{x*?P}6RMYmLe*9Cl14pIb^2pn*AgY#v zj_D&*C(P?P^TKmw;CC*yp74v;jykM)yQAiM;oM6!neLmV$^~T4aqnBvbG7zY56-)y zGDFee(S$`u^kC*^^ev}8oYMkwY$S8L+}jMF$rj{U5P0`x(?~U+v8VrdtHU_|IfVn& zGxq>iI6Z{3A=!grZ$sf;`Nmrm#5;EPF8FyT6$+Q$n=|0rrOC{m*{nb_S9)I&zT2ZQ z+I3}NerAZ})41`d$3u=9d}HNI@5RF0x-kZe6Txu{PwBYg$S$9>@A9(WbJuuBeOND_ z0-F+^CL14Bq3}sDdz+cXA(Z{p$n0cwt;Zl9)nfsY%yJ@yk1t09&x-R6Cvw3O`aR3= z2l1;ODM~c?M;sZ%LzLE$r5wpBK2iK!i%X@zxeJ*(ULW73epo2#wSM^{JwX;V$cgS$ zMWemU-F2;<-Q5zx4%u!}_7ztT#jLD8pR6@yf*-1SB(CJs)ism(MFm#;rsI{uN!2o2vDdsmu{EEs=r1=wkj(W84ComAdzSDk=PM$4kZ$`)DKHnXQ-=g|n znZL}r0DMb0blQL&mTP_2C7G&AkNeK~$j6s2NM{P3Bgq_KovBPL9toBf5>Y4fS7j|Z zPfh#u-Gx`?jLjj|&d{A|r*Avx#B@}h)G7u{(*2YDej9{gF_aO1d|eKH%HX>6KeOaqoImGN-RD8~eLmnd9tnTEZ*YF&&PR zE}*_VaJ$E!uLMy64jc)&zK0!luwCxNldNKDsEeo%RPf=e>*lnwji+xMX5n4tw=Kb= z5$cEYmHXWVSvf?VsrGAFO|mUL9pp{=f;QlB{f-mOdGsmqld5#Y6zyrEsdrZSA(I1bA+^-0zU?;;( zlS2#E8Loy9iRzA`EmqKXXIyW#(S2MzQs5G6LK^#Ux#_qPyc><=lH^#kW*ahzLLBx`|BaZ=Km=G`~MhpuLE?HNjFkb9A3OS}JChkU8bh-i{z;9+03>#_T9 zHMi4Bw?}7dUiNNCJNnN3SlLHCb9~NAHBE)RGlcQM7ZlIAX%7^<DPkAwSUfE`_@!BN3lvdH3R*!z$d; zr?}2qrZ)*F&d*klMu&JlmyMtH%k=EG;OyW^)8xW4dm!|(Y?`aSj4{1$KL z_WOF0@1gyy!~B*Ae?P6@6EwbLUAkj09T&zA@p$g&+pk;gQ^dj(8TL-|^js+8(t#XH zUiN78UO}k9iT!m~udkxdzCpuT7j=NW3LS9|?J8|jMwm@<@Z6ODWm4Am)nx&)77p|% z^tSrVqrUtv;?6iIcdC^h8x3x}A$H#4!K3VR9IdM>B2yo=7!wzjXqJVpKRpe(cz#yz z;K{0eZ^r717+)Wcy>mquk6)h<> zHdZb%AWYW8cfPJiskZdy{$lf(rQab;|;z@gW2?o_$^T_Kc#1;S`7ij|sHHAsRei-Irq zKM$)hs9)Zjr+t>^uB$LZeb0jv33@<0tNOAyGOO^+RiH$%CNIM)_vJ~Nu)%3eEjq-g-PdE6qg=VKDejLHzs#Dn_1VT zlitjSVnq3emnum>@o7JAK>Y|0*!sl~n1i54QeMPXrSp#*9aZ!4vIrc z?|N&@DUrQri0Xs>!HaOc-SV?jY35Z5JISVA<0{xVUza@i>0{t@q8jB3QdXqx2iv%_ z1WsA^S-H`5Z8z{B`AT5Mv?oLP(+W5Dd=L-+R9GQGsu8f@-qK-3-+!K7mQbvz+;nho@ zBL#!=&b3+Aw_H1pe9Z5Qca!kaX{YGgZ{xop6IYn_c17GsraIcaFN!u^eD1`4)!j}n z^&*F?48s`)ZXGdUi4VOZp>)6esegs@jx@qVT;>?t9@cIrp&I9wcFdK#J{#|4t;QjNPpeYkUH~hE7RtFim3z^`FTG19j-vd<^Fm|# zbBwCHdi~1grsp5k+z%Z*#c4!lF~d#uk#UdjB^#yUWw#rX=TQcabwh<)>~fw>5=Y5g zd2KJatXX%YM=UFY@@1|@4|{IfVaV%hwv^(CMU%VWhn=lTBX{}^l0A~Yr>j4bBS~>0 z%DY9hYqb-P-l@{-R71wQ)mIFzYO8OqWSJ_>&bl? zJ8v29%OEgcptI4BdVE&5?L+!G8zSgr)8$E`sXHAFmqss#Wh4)ph-LAfUCJR$QaIe| ze1~{|yY~K3+}X(@liqzP)_u*N%JDAm^R%&k#yJl&;T{*ioy3NdhoVqCp2k|bSs4`f{2+Y_RQx0Hb!89ZI%z9UueF2m~J$rRfAv5YRu06cArtwNlt=Ff?Zq+Rku*>9HvFVW@!xP z2Vpf<9HFcnZOPQS`BBWV`$}*RhS0zSW&72Fl=txNRiO4aN45$cx$x>}*?IRn^6FfXmA2=COD}ot90-^( zDwgqnu{($)C(s9WYk&u>K1NC&m@9KT5=cN|ywqkI8)dZ<-dUd4qH;lzxaXx(n~e80>}^R2i3X8{|1 z=lyEKpgo`G^JR+hg_$;GA(Q>NjLb)FUx(gHB*G=X`P_IAb|YLxcFeqZEOOb7-?m|C zu0i-M_k6za%UEGi+MU__ha0$zZAPkhoi+&R-AP+^zBYpEW-BXAuWU?*2V+PP{iB3W zc|5AR=}RAWc@CXubHu-H$`^QCCjU8=F|mIT9h}EOlNZtszt`1NcydT3xvx@L_*zxx zK@%6%oY?n|bh|heW2zoF)CrusuyD-xFja7qRkTX9{WO&W|M_m*O%x$`dNRC#$jiAU-f=$P3am5}))qwKPM>GH|P$`q9abw-@?*SChprz=%TLrAT<)$rzz$s}5^F z#?o37L6ewjze}AbJ8%T=(7_B68Y^C|?7@u6eXc(D9Uu9&z}~u$2rsxapsU6PZ|)K` z%4tkyLx-eX7O9$+xRG9rwn#>IcTKwPM&a39hVc5orD;?qp>00PbFf21#DK$qG&$*h z+)0L*3G-cVn%o)=p_(LaOI*8xf4AI>+~4NL(O7zvO=E;~`>hC7l6iwZl`cxD_Dkow zTD#k>e{4e3w#e)>wl(#iZ+AX@wc{A{3hnW@;F+Z88xDIt=fg#(GHA0>VrDclH7+#N zEo7ARy<4bx6c{Rj;I!bAYJp3;_l2llK>`yuC=B zBYdDj_|!9_GdeG4^goSS*1UDo2Ziqo6_E0+JAAE8i5Ty--~mt1*9Ts`x*_GKcH`L& zJ8|OX8&*Po z?B3V<(`qH9_cgD&e+Vy|Qd~@VGXCmbFGJ{&`=6NgTdJ=OFH6*>Kfae8rhYkS2Td?4 zTbz8gex`)(9w&0y>Go>8ZE(X%s!#T3bjobWQaqZG_u3=wd;$~tkT&wU*hr>ym*b{` zy^PVHo9!zlmpebQiOipJD6urTPRQUx6nHaKnazGVl&F&aG*##RktXiPmm5A^T^=mb zyfm6u6L{Z3a+WRo#PCD#gT#AUhmnT|Wh9Ms)LLssI`v+&;v-XaD$E~&*&knQ9y;&Z zdExe@;Kn%Prs{{5`RRg|;mfqUCoIoI&tN`>?R2nWn0cXH?!X1i=di=7R=`rNty8WK z(fuuaZp68FXd4W!GQssC;KutrU*C+Nb(?($8_#N2I`Zs@nl}xRk4EW*k1ieOIo_Oj zgSt5G`_OnN}W#A zC+I-YIYv)bTyrv4b8iiS@$O2HOW5D)c(zMLULDO5S{2OMsxiCJ;7UesCch}Ckwt~> zgx#u>~qD~%F@c5If-_F)xx2TuRorz(=dVTkLFOAlU8wKJv-r^dB z9ZL|RWMKu1FjSdyyimF?kw>O>uG*kHTSr0<-$=O1nEg7#u(PE<&5+)c{Ui@{v=Jny z%D8C{@+tRyvSwo@6`h1-Bcf;wiLB)~FYryBw>W&pM%kUz(sItbZt7+X|6~I71V=s9 zKqAE+W;Lxea_;h^C6c|RPiBOtxtcBa*zX_erTlDo;*g%W>(#M)pBwdU!)uCW&*OV} zJrJVG^>q-bGO0M*5KluBUUVhw!D{dhvd^Er`17Bp&;_!wPlRjt4K@yj^5X7DHt0W> zcP9xHM9}v#u9=gJy!uA9>@2d4YfALKP%dpKsD_QEpVVLekZR_v;?Wv6wpp_dI(4trf&J=V9n&HqL0gF~vfPXx?ou3|I3rY1uhN8o+VdQ`SS^n?cwWdi z+5X@WJi*QpX7j3f`j3=7O;n@PQ_R#V2Z!-{!0)Yg&@z|6aI8O*ws_==tGT;9wW_rf!gbt(+zp`(T*52(rh3r*#&Nkifm)DOSDf;EtYeeblAX!^jW|B6i=D zlGiJ&>eC&)yi(>9LxXi0#c3X6RA(Ohz9ZK-CI9|`e{NYHp*CMvoEPPl`Z4^bcW=;) z?_527v+)itxX!#^q0P_ujP6cZ(Sjb<$i4iw&fuP)ots-J%2Ft)&&pzWl&ev*(N)Rq zcNgBWN3^nE+WHPf8S@^z`(F@ghq%_BmrCqX-fTt(Bwj zsYgwD1O&_qxfA*U@y1~nlF!+wC+rOnd_&yjjAxunYc$qECX=?5ek4~*<=P^1)}oi~ zToH2?6GeMK5y-2N)n=Zd89HYaao1Em5H>m{)Mg z>AV9Mh}HR{$c@vre!MY*SIDDZM;cx&dD!-5rXcQvQdlBQPio5^lCWLt!m@R(SmG z7`zkCh$t>Y9J&#oxViyzS)am$o}hg*3`++RKlfn9w}`i%e4#Y!>_`OlCuPP}i6PvuhL zjS#`udf7#Mq(bS{-tmTUP7LmDQI>MNLo-^}8Kz0(bb(m7mB9pd#jkX-GM0AKh&bk9 z_6)PYiF>qY-t4(K7W#f45|}97zWY~<`gr*2)^^?Q_o9-$&kgY_G*NrLU`i5(Oo2hGnm-+^V-GZxs91jwq1?{v7H$;BU9*mw2>gL(Q)d+_zx(bRC)Ck=KfnW8yCNbGyu`sxbiz>Xj?+&}s~!O6e4@!mlr( z^R<1@e65pUyJECf+u~9+Q+Ecng?3FkoVVqH)BU(g)3MtSYBEG#u5NCo>R7LA_OSq) z9U-e`mHeU$yNKeP7`z1Z{cow!4__o|cDm!CSE)^Cb{WoT@w9#*Nr{FX##@xsb8PHV z%C%KUMf8o;!FjZX=J1`Nl1y>*(%VLK@sSBJ1N0rQ&?CYmab(V!ESVoZ_1slHviH8J z-swmhv-1tZ`tForQ@KYA3k!*#U!X>49N7Er?#=5VhoiHC;5XZ}DscfE0vgHJSG|kjv zw`pH^sjf4nIxRUD1<)x#+fm6z{&@B|zWwGTpv3Wg|PL=R0 zot+)*`s7MGw|5X9kFyC~z_8GFKzF%>!|eNN0hRyGCF5czLkVGFD_(n?8)1Oo%(|L z+8=Nm>2bJ+%$OBSBSa_(MV6DQOVokA;(d*c@Lh83C4U6GA+ z>!Lup(b}^N68opy?3C}4C zZF0!-bj@ofok6o|9t}a^vCp7~VwWW@B9+l|ZRnt=@{xz9D6BX?<3oaBBSbYi`GVq6 z`(lJ{MyW-a6b?Jilsq6ai$XtV9&~MLS#mwljHXww-(iQRJT0Ytok{M!MiO#&oo%tp-b+v=7x`PqE;vuUGo)K z(292B=pqqxKn(YjhCPLZjpoplOxDJvJQaJ@hfe)``IJ*7joP*7*Iww>kN8g{!0#71 zyU^oz`p}E30Zxo)c=nzd=uWhGj)%F38S@Bj+p~Jo8CO$e75(CG2r?im9A9%7>SH zmtOGmymR<@rKU>gSC4$rhZ{=H7ot^06CchlbniZm)@+ra+nW&c(C5U?L4gGv<{{rV zX!S)nD*@1v&@z__9h>|?0v5cgnCCZot#g^}Sss4*?YR?KK^^h^_;&^6VTGW{qb8Q= zpAIIf%CXO}77hC6v-y(8H5myR#n3n_XB_8LaDOS{pzjcn#B-EsfpZY^k!#U#OR+$t zvq0E0=Uo;2NVN03>$q6`-dTyF7ifNn3;Oj+4_YvH$D(%c)L@(+vW{{>XhrcJ`XG3< zqY@oWIW8fk)jB8v4_MW*K_ge6b?$t8VkA)W$;5rr@Mm1f2d346D)jF8`D)lo* z^q}~nE2GARmFft+B;VJ|`jcVdpUVU$>V#pojRFUvKk~!wM7f2_h$+?l>YlX-$sf(i(GHK19MuFjr$Jgk_fbEja7~BD3(- zwZdxB3g3x^)(#gb5r!RN_mUr$7ZwE<)Vjmy23`$fK5#8~h40MWWy}Yz-|WMGamzrr zSFT~Up(ky)d--!ae#fr(gtVH$STu!mNuW}q)=tVv*Vsmu2{iTSGB_s@J6H#_U|ZE z+4u3d6J1lb>H9?O!b5whMz9xI3}rg$yT=}Aog?cA^W1U9QIH**qai(}CqzFYnEX zO?QbhdR=>MVxoF`#I8u9BZVa9o$bWF=Sh15;+v;P%FD-g<-`RxB!6-asT4W+D9>HP zfq^u-?sBUF!EN%hSjaz4!A9IdbMG-Qg*gw~+%yG9N%`3x#66MT>Q37PRKk{MS ziHlCPwLBD`WhPXYWrlk@nitMn_vh{O&y5z!n>Z0cOKVyF`dPqhpL_wj{M4{_m;1?V zRD9_gLWaV%s%ibetw!jqdH>xwN0Z;*kXjh@d8G&IPE~!}(ZSl)L1@IuAPDOx%eRT! zkDs<${w`? z0$Up6!XT*N)l-Q>^_eFYY9A3~B@sx$_3BFE!xaK9Nng7jjy}9ve%^pU?~Pt(Z$-r{ zd1ddd8_E-Jj_09V60VwAHp4+8eDV`zj(e92>FkKaf-mn!%+!$f?X7QP8 ziWcWzGTpw!Z{8Rs^~|$$r^by_B+2j03ljLel@=bFzh+|-p?vyMG}3#>Df%iG$pcc^ z{fJ^nZl{RMp)-~-CnY8nKk64D(iSL$3YeoZ(oVE7kscnF)u=frbKPkd>B}xt3tfBv zREikxs}5#ic`Ek?KuS*@la`;CpQXFkOMUKH=%?6+Ww0YYE)!yE&mTDUAcxho?F@usq?(wM(^KIsoH_B@&aMuvL*>t()zdpS zqy?=cksT(WI*4${R2OHXiQ4VEpQ0sGW^CWy__xdmH=A}$Cbeq!P zBG`8sxqmmDJ)8zadBv+>)o1M1ZNdWw3Pi>H-3&k5#VOnCH8H`WQU=?ZqB;7>qJyeq zU)+z~gG=D)Xm=p^;{xjA@L5fW5=j^T9cx>c7`5VC6rSu6-K?@>LuIWky(3qvF3q15 zZ95b5$ko&A!bxJWBglvZ-L7KQoRfRapCnt`M8;o{n?6BsHR!=9$pH{jHqHuA3es65K`|0cIkMUOO+L-1|Tb?jI;}kb@e0-41C|%35kh|R} zsOU<{?moO|8^zt07Uhm@bmtGslHQ9pcCWW`^3~d^;6d;;S|l%N1!;TZ*#xM)TYhWn>?Y9QI4Rb(R`h)tjf=O(J+Blge5LpW1@kXuN91 z%;VFL!tt<%5BuDR`H%a?jo(D%pLXNUpbFH&zZ9!^mTu9L#^Hdd@rB%zcgXoY0g9Jv zIYi>ShLK$~>ZK0hf{XZa1di74iw_^n^tf^C*iEqq!Ox58s)YGul6UG2L_3x^PEhZ8 zDMC$?>*XPzze20^AY&0}#t8|3*sHxGr>(IDTrA3wH6@R9S3Lgt^BZ+qq7)}X!V-en zkbU!$q8hnDZ=LMWB5i}qfvX9(snKy)mwi~~smR~VzN;q~wlHXVY+<84tfK8H{J|CZ z{%s5Mo!}JBE1H>mosUQ}u2_92;v(REX_an|99z2Gf6re5*8KqX5V~ZSI$l1g1Isyd z!vN;Cl9U=X@j)+bqinx|)FP&7 zJmyQvBv3T1@5MlR(jp4&9pHHN60xR}iqx6gC&(Y2H+#xAHy?G%n78qcTXG}M^Xc6c z63W9|98IpP&s#sGFc@ukDg^*?W=n7c0uDr z3R#y9PLmm{QW5wCTP?=9zBD8&k%6=3qlg%xUhsm?K0W;yxD zk0uB6hRq)SeDdI}C8Ce`3v^MkH)>-SEmy^oi_DoqaC;J_!Wc%<=le--TzH(Kn`KBr zcy-1-bhI=$On2<);Hwi|v$V7EAbLc~bd4xpy%%+CSSvQqVP`LvaS#t2v%$m6Z?SEaDcqr()oQ~YGw4vjwg-6gMbvL#Um_T)UVSrXfk9f?rF>LHnZ^Uvvfi22j{v{Ywz5b2)ys`8Q&!N z(`>}Gxqb(HhO))e!g*5j5>MZ74k-IVNn)tYeXBaCa@ADx)n++*+#Bp~`V@EwYh*oE zd#nD5USI)LqG{z9Ug7#)v*z)B*yoF~geltn17K~3s(v;+Za$UyK-o*~Lq?PzHL6=k znH@#a5>CavuEvcxe)x{tq0m8Y5YYj@tXox!UGWVUhG(QBuZ#pnl*5H4q^PEn{ABO@ zO1*E|_ufmV@QNaX4N2*Pft*ZB{pE^Vwgc)}f${`VlQ7~izaR;wioKEcN8^ zr!_jjd@`$B@U57d)%2pJKGg%pi`rNBL<`?tom90{v=Mo%?5I=^#?#o*qBkDNj2uO^ z4W5c7JDhoB|Clg{^EUM@lWYDgN6zdX-cWs#%#7iLE#^G$ znK_!tPSd

T3tPkF-#=%N+0O-zBs6lp6E{v^eM)>hjH-H{D@xR?}!5n;Q2N=OZ|a zn_ym+vh}3UY|*-AIo3m0!>oZoFyF%S^7X+J8ufg7vaftUBh8@uh$3SBGbY)`-BhN) z)GNr@#FL7((FgjDe^z+GyE7|AFXYLXw3T?+E9I9L4^Xle3!Htc+`NFI$d0xn^Ly}I z5veIgIJMHNM;YmqOx0nwQ$HZ_bKk|1`PpS9R*szA>e~xqRr@XD-p65_xQ2^Ifehdo)37a z-R`)P$JI`AqGw1YWrQh`>Bl^WPI+ZzauY)nWw>?KDNjr0+s0NL|5!8O&{6W_$N>`p z%eyI2kSiBJBKOMX|_%R9nO%!s85y zwwUrExI^SovI}|dl{MUw&foX%QC%YJ!=d1=5A@88cZ=>H<0y!f5h`hgc3yp5TrSDn z-C0TgkbaQWJ2C_D^!h_cka5spG0URZ$g8$v$SgV=^nrr~6xS(K8(nVF4R@rQ9jxmM zs&l`0X5!%J@!1a}`X0AG-zo5rpWiF{#D2aw%gaQZ%$anrw($Wmr)s~~gkk49j?4G- zTznQroZc5?atXx~{>*9Wim^i6(+55?ACersA0-}03@7wA){SbU3n|lkFZ#%Np@yY- zNvWIsnRMMd-`d7u=##o}?4V`_P{OIn~Q7NkGa(**v zK9Zw5)sw_?{0l2MMM{mcrNW)->rdTPif;FagWgAcq!X&QBWCP+Tm^o&kniZbH**1_C?@>bGM`VCqmxeu`1Vo#xt^V`Hn7^#Q=!~ zTSQ3Lb6+LW2w@UZrZ>v6S81=QmE;QWYO#)ds*?hNIoeo^UX{H%@lyDTsB-A@Wk z6-}Suu(~%nLz1#lmlBVKSJdpQnPE`g3GrZ_I5jcqV8)0b&Q(syI@^X!J)3y%M#FQ{ z8b;G8-^EYTkqw-J617T>rA7kzOqMQp=f(#$?(NFF6c(lPq$5~4{<-f3kw>qY`+S2; z+gy)_jZD`ck+ZQKO1{-!R}5ht&Gy2d>r>#kN`51I*J^K4RJPyhn;;J1a)rd;d6BZ< z8l($RWEuP7bt~-(n_U_z(t8E6>Z}VTrX!0I5yww!6zoUqTip^LcNgySL!2QQ>QK)- zk$fz$Dl~d&cqU`9_DHwPWYqb7w>X>f8qOd(zk%hnSn79sDt5nLu2xMMTNJ6Md*8e? z=FaAHjkZPq-q^c|^q9KWxB?&Bx@*Oikr(!?be!}~O_8t}_Gf;7{k3U_Ez~DyT9NkA z&V8_8TGx?IKDKC)fo7kQfzDBTgRAC`nUcus6c$I!IA|oRKumlCyo0u}3~Flm**EfN zse*k71qRT1snrDt(fLcFrOkyi;*HNyQOBgE z?pP{x9pv+|XJ(_}IZt=`)<>$im1kB(I=4ULu~$1wA3kC8h&j-sY0s5Rfzye6)AQV5 z-gHU&k^IyfY4E_2L!Rey=60pcK~yhaPIB>M<*FokuzEv+c)xdp=pI9NwyAj@b6<06 zQnm+&>Wn!{j5P3wiFdB{-5N85*c#&<8L#uOlf960xR7<@K4;xqWTTSfjwQMmL0 zg4&nP*B!!7^BY@v9$g5O5i)ksyv(&^RV{@ySUsTwBvREP=A*bMjo^?foL5qX2jB@CfGVtnDNXfG6hi)7k95i|dPWQVfD>$S( zaQ-(Hq{$h$5efl?L1b+W5XR>$ZB3ytc76^n4lYiPGwNV<6dVEhn{#jhMSzbF`{d%| z{`$$q%?JFz;pXP!;pP(H<>d$Jxdr(I_;5g6{|JS@D7HwH0RjZVv9q&dH#R^S{HWir z+W+?!+|#zk+&DPIz@G#-Yfl`;?Yk1J|My+N+X`Dpcf1X-@UR`_QuD9c@Kk>JWAzpui)}N==pI6tOxa^Kcjx;G|px~@O=m1Km9F#U&Z;c6M(mtETq~p7PS66wf?-i z_Wa`r{3(CRpYo^t+vR8Hf0j@~&VOPK%qgEBKmQNT|FGrD`JW&!4i~ooKR+K1i2t9M z{8#1w`1#+j)*oqttyhCsL97fR2xW*2)Di_ja2Qz{Adwu_X4bzk$Is7yxp)M*_`g2? z<>BW7#Nf~Q@4rw)C4e;~B;;fz1hIlN%%Dh+3Dgn-0-n|e2owlz0z#QVKu8BG6FAHP zs57!KFokenIx`!wfMg5|p%57892^CK89^Zkkf;f^hQoTJ=G6L7c54LO9AbpxFoIi& z1H&;8WZ(!abQ4=kOOO%V+5rJIHA8_6V8$Rzs1XE)1n_{Fz!6pkC@37p2C}w<7yxyb zp%6RlI3;;0>9gw67*JTGQDz1xkevY%WDG?DB5i1kf*6DBpeQq-1t16sw?!C1fQgK; z1aM-g#^P}f0XKpmkq{&nDji~7)7dJZ(KZu80n2S%Ck6Q<%h=3wF zv7#u(#hBXO0 zYhVQdi2>lH;4l-Ysj#pq1jWn*$PyT70yf1E1zuYl@TOR-4Fto0kxXnLCZx#**-R`V zgjm>66A&}un%pp8RDfL^ij;vOkSHmDd(15BO~;Ra-Ny(HLjeq97Y9(#L_!eEESPbU zFkpGD;I_zZ#;sujpuY_SHHeKZ1c|}`0e(qgdoph!dJWpzzfKzfZ2(vsb_py6M?kRr z&@eExgfKIGv&f1N2POcx5dva>f~eX;5Dv^t01MVZtrdU(7z~0?fJ0$GBL{{mknMMU z?93nt2&R3L#TF0;022v-z3UinaCVKi3^o{AZD9a)8?c- zslXtZYD_aQ!P;;a!nJ?bgk+28u#0a96t=Gmp$p;P*#CcJ|7`)B{;m`F*Zn_1eqNqG z{@=e*erx^LHBNoqq+sOquQ-4|_y2f!`1p9g_5XM=>;K39`=2j=&;R2A){!0fN8tY- zp5T9_leE3ofq1!i1o+k+Btdp=0T8!;U^WB59>RcC!rH-24@w>eML`WLp^ocL)OPd04Y4$D=Tb>u zhQLr~ph#;2z!(Bu8H~UDtpR|8VA?@jD%W6r0|j$c8A~v7{SOVSe~rX)cB5{akp>8a zfdhyEZjF&GBuEmrUIWPfdfg9QJLo3e%s-`qZ5#C1zDy~$HshKXvF1Slr~%M~g}2P` z6}<1EY<2pMZMu7sfPeykFaZg~c*9NEa8fuqF+m0pkASc%3yefTtsrn))YlFn;JHYm z*40Q3ZfU&c#H@|PxNrbgMqm80t&7gI>CUW!`bvT}+#Hv$WJwKzvPHnw{D}1GvVQiGH}ySVtDyg?VGT zEiU{9B(d!{1~`;!%@{9oW9%C7zro)xqc_%for;Y~MZRO8It29<_kO~;Uy+U6LiT#! zFJx~OG&2L_HUxhoZtH!KKVr_t48M{Lz)weEcL4+l21j8@#mW_c1onq16wpKv5D*w+ zB;UaDCk*(~2`dI$eqzF^uZ9@H;egeFVRu1Ez%Xfjg9RLe1Yoj2l4s8VrUhmU#jx;e z(OZY{Lw*AkNNu9PyahY9&1uCzD1s5eQS)&}bcK?R)>$779Zt(WI6$FG3tG;V7 z%C_T83@nk~1K4&v_P0Dz-PRg{kTkXe!mi&$X}x}9`};LRSiV<)U&#sJ0T_Ug7}P)p z7~H;+kKbG==vTCDuEvIPZpRal#P;>u@CqdSh1q|dwv9;rKcnmGK>sVUerQ&<*@S=) z7YW$MFPOn$-=@d5^#wK=v+izad~qkRwNT^jwQ@6S_q|?jHf`YY6@)E$1{e&o#swhS z2lRN`rY#P{wmar}XpfnOZ3|XnYYWP@271i`e&H`*h%p1#l1SU{lNf+ts4>%;;3L+A z24Fol^YcT)y9Lx&D~8=ezUpEGuo3Y^*O1I#HyaomZ*Ba7gQTV9IS9fEigmNF-T!u1rmI2^h0KO**WC=Ijpl@w3fRqx@poFPs20|-jjC@f55(RYiogmT7~_NewM3f*!~y&@0ALlk`2i8);RF8R72x9f zk{9~oQvsG71Pn#4H~fu!)|W&TySOpL5`xM7Y^hq$Tdj>S1_PmwC^l#HJx|%N4j!<- zuz$-EmaPD{B$&RZ3aeZgxfxU_j)! zWpNnRGJTu-^I9)8AOMA10hoRb1S`|PfQ_*T3yeYo0KX@Z`HKULu)vD^)<(>%-*vzm z1uR+LHOX5`8XF^kh=!Q~tS+r~URq6;NljW=MMD}adFG57)5UK_e5*28?5zwOU1dO& z&(~eLTco=?rMtU-ARQ7?0@AsZ(%p?9paRkzONXSONH5);3oQG*{NK;>VV;?J=FZGH z=bp=5zZiwf@94=>+aZ2*ym}>@mugjjgoB?!Fg%bE!=R7O&otJFXN1CtMW5P_PzoC- z1*4SUb-gV}580AbM`S&{2PxS6^ED)|cj-(Lh(wlWi(=W(uyZ5){H_mL$=-BY7RPsI zBV@KtEE&S3{kGIj?gCNt>5Z_Q0!YF(hXM1I(A;Er!P0B=mIz8A^DlkmH3Co4e&^`L ztH^GB>(`1aIMH4O=pHy;vVvxut>1Xi0lEZu*sJ^J;=d2mA8eBjR7$|MhJa}E7Ts^G z%97JlSwE(K14^1T#BP_3t=H6T!hl|Cub*36(yNAaPqE7l>}_@Nyxq)`f_CC^}i zL%T!;5B#;%BRt=gLQ>Ql)xOh(q}b*jBGiI;TgN$=tB_a7k~2g?_ECbn9|Z4EtBD!K zjD2I{4mvfLoU+nI_sAG~>bHU=`Gohgw@b86c&KQdY?;Tvk#~6n1}HykxrSk>Tq02H z|D_!BmxHNR>PFzymTq(;lcpzT*;Jm^D)q?IKLyGLPwN@?)4)Yv-GCxAS)2SS1q09pg(-(g4{BU0`k9oBE$URw*0nnqv zkuX}(E-euk#|-B1UP!9!Tg?LZMoiCRKB~70Nk9g7WE#cLm>pF!*!wT|#fGR#5tkv` zGneDz_J?W8xJu0S+FRYPsO1H3vHJa1^ReL1!o}Q<>_V^qK&S9SQBMDLeBqIZsIXa4 zBD@>w52W$}zI%;EKCxX{Ql)}i7G`9^N@!2w;kn;;fS9` zHem3Zll^9QTJ|tgo*iiF);aM9uyrN`<)JISLp?vDV%PWz!8FjT!HQt=3B|cQPrns4 zcJIw&+S4o1sJ+wJLx$I6=PayAYP+B!1&-WfiTbk zJn&^gtpQ(x6S&IoITZPM_(?WI3ON$G3cT7Nfn6hJAO?tT;2Iiue2w9PzO}i(KiEw+ z$TBoNH8{!+muJ)oGNEj58#M@~N&!VeO++|$wKs=v?1Cv9|(^cBUVbZ6f7Qo+T zsIPU2pSu-(YUGM-MhC<{{PQWn$T}s`yG-&#Z3&^;67WxwcW6k$M8T=eXx*r>SQl_Y zy)lO|=a{7EZfxY0_OS5jX!+A89WCp#Z1O={Eq21!oFf7wg-bR%=JhLaNVw5GAKN%+ z7v&e9*r?uEm*~{CP$13nkLp2!!`na8EY2czca&1m=k{9o!afSNFc^VCv}8}%`Bez} zUClb;Kr5a3Vf}vBi<2I)oYNRZ!W z-v+1+jqzx%oZXgdhMVn%@kfY6^wVSGj;`N#k7SWHTD%V*{?6qVyKaQny1e_h-2Eg6 zyN);lY1ZJ1e6GV8#e! z!Zv~Hk2qJMPly~40YC=;P})?;~Z_{zgddQi+U zmw^?3@>n#U|Fpm{=$JI558}9d0ZLs6r;*F6S(7kx5~pEG$8Vwvk^hXs_1Z_45VI36 zVgu9{*>9kcespBRzn3imqE0q-tC^1$){iX6S0Ef1aQaUe^v2Ql;SqbGQs|ZpqF%pS zjS7tUV~O-?UHnaW25$agg`Gd4f*)|uWZ^3P|JKi-aGicKk9#gB|82Bl_glBMgeS23 z6C%_42~2+d1Z+JKtVV*b06^uT_7=K2UvJL3(V90P%2)A1QiKs_|K z`KK%bfar@ngKO9l)j@zugM7Fe=u)DU)SJ*P{5$9|Wc;@ciSG)_LR&_Q$C^`OU+A%v zhkdL3M{0VvkLG`<@taT(Vh-^=v5(%m5B{;sM?%+E*B|T`JC-^E_+J28(Yrxx$o1}b zIxqLZ+h-cL-n(dB28P@x-Nnyz9ZlB6H&i+&9?SorbKvb;Uf>G@?06rt+AW0)z5~GJ z@RnQXD+@#VfzR||@6Javtxo~uKB)CR7_|cd2LMFT)hz-t_4w1{-jy`>nU+M~PH=Dx z_(emD$!}9hs1JJ~Avm~#jAA_1s&>ka|4>+D3h$0-Oh2M#OtI0s{1c|BhO zh^(s?1h}pDt-~&i?aectZZtxH6=)owB4^acL}B`~TxHyb0Vz83XhsSGAO|5wvW);_ z*&dR&opWb>LG`?khIlLo0F9*uga@Set!^LYeDmu&+oEtDkKfO20VqH`+Xc#N_a;6! z=rv?m5=M1L7kml#rw+G1kQF7kZ`+5+HN#W^AnS_ciLdLM-Vu%Y^bdU=6$f$6@U zx3h)r<%M;9g>{YX26nn~!tY~+oeIAsMbvSL5=S<+WXI$oF)Td(qZ6576xA{4J#P$~ zdxtZ)y0sD{_N{BzTuzH@srN%;i^#g$Kr0-4(zD{XqL$6RSXW*r_iLK?uWFem#`pB1 z@6Ef-IxE@cja*&J6PhC|^k1}yxFefukIt@ngi@ZxTxDz)ByQh1oyUR*+lfHxzYSiO zH3}-z6aEWLpm|Df`V6NGFtH!uj+W7*Dn0m!T9sdvB4wYUsM168)k%N)PVlK>L-@a| zo{h|w`8AACNF(yIZd?6ltUq%=2!a4_2%-Ztr8R~laC%z_60wZr_awySTT=x6Qfn`z z0~9EP*x#Yxh=Xt#^b`j2Z~z6`+3;YWg+gcxw=ZJ!v^-6tz!LQ57?|pYr?7sZd4|ey zNCQrHIkZpCg{xxemhDz+fMuSFvD~4{KH_A~=o?Z7wyVT0lp(?b8}LFW6Si_^V!8-| z&+G&Ic-n^-V3LYg!2EN?*i4BXvkGnH+r~h>tS4QxUpBsPi0Nx|un<)q=dxFTp*eh% zJnA$_Zg~a#?FX;_9bEyt<_Vaz$@~tX`nP7_0h-qZ#>Z;4nZ?chK2UHA6{)qg4rmIC!}1(3PL1m{6Z&3sk;(8v2(J6?Ujl9@O1@5V&(q0k_F*P8RECc;QQ-b&gg-$l5~!v_27=NMEZyDzIVx1MUrzc<$BhEu$uoY>QUG)72 zoLq5M-qF`{)U-x+DM1#vIu+N!-cp>bd0nGbv~e zFAY~7qGQIbx{8VhK2{2L71i%4e_?Xw!`C)kTNg?kJ&1;G$?ved&NUx^QEKryq)X{9 zmVN)vgqOmfl01h6&Vfsga#BP6t64bB@^^Cbbf=B7D#{qLap4JMgtZBYeqxs*+wg}H zGY2}>84oe5vm`m^AsXKAg%#UYB)YIf89&xFf(qd+V8Zf=t>XC^QsZg~2a+=Po}j#m z@r$ap2sRI(fO5L@E2Qu%2P`IZ#5LTrQ3w(e<|_c4by)@b%_OU=cGC9SMQvkJnrX z6Sl$UGff%*f+a0zCIGT`eb8;tQas;*XlFV;LCiqycUKUFYgykX@O{NDf~;&)FS)}E zuKQOH=Mt(_o&Z47(z5{Pu_}tSIfq?;Z2kg*$IPg~R*BWlQr+eUr7&Go)km@FdFg#D zFaG&TaBn<96JfbB!&*hS3^5<+u{5D>PKfvv#HVr zs&)ik*#|zkSuO|4fnj&ih+_UCN6smLv|@K;z^@{aM{QAIotx9b$&lCfKf-!&f@>Ad zWc8?`!{3g28Yk?E@+s_X7A&8F5BzfAJF$y;f2jh6W2+O0j~{PVNykTupGsmKigJOT zy(iUIV3$Q}Ce%L{;3f70z`p4kSl8lsDK3d}mkA3ef0rYr6<9n32-fpzmdqH9h(u2VZXayw1z4G-KudXsXrWX?M?wEGHqGl5K zmkRW!;#^ugyo?^I#<30f%+OH-5X}W^iqqTvtLOHY@Bglgh`)lc?ms}vd>&tZacV$U zF-%5`Q4c-IwE}fui#ze|q4fR0FSu-xe+6slYhWq_PWPX_1Ok#~Faj9XoyXLmS>P5O z=Ma6glqOW}=Y;X?h*^C@tJwz}*AXTH5^$*6_!hXkd~OOw3FhKy!PU6m6-XazrN6)g z@b#j88wDbtA#T2Rz)P6E0-_Xwsrtv5@!jf)ANPQ^56Bnhk#z{v;sc`k8fSp!Fo02o z{|$NC*BqU90o&d+^YKY*;Ju$Mn4xEM2Zv%N{?hu2RFGHtcP%DQf0Kh+=^t6JDYD6LQ94LKf6-3?GwG@K7 zw#a9R0k~{@ru@7ih)$e?T4-Y<+l$?=cb>nLi?$=vLzq{p+4&BYd5lLOyt?&yWO4i?v? z?ysY9Yi>&?=|uZg=ycGVIjrtJc@}Sys=Hsw)|rbq)~TkM$x?m^+zn4j7zHYZ)%aNH z(K~7`RpqK}{dDR3b94y$@wp7PMR;uDCxXVa47cgL3!)l^MC>B3AKl>?Jt2Rvt&T^8 zf(#eiiWQuniiN*Aw7tT=`jAKDQ6SP<@JO$KR>~PcN606X`Vao)fC3vuhtb%HlWtV^ zi}j%_V0eU7X&YbDzN_{1*wUiq%A`Hhxq9+*U=HHB5Oxg zv0SAqeZj)*5|);xepYRooT-IeO|fw6ms-CQgpdELIO2h=u?)(6DEbkQ5YyN8qN01WZ2jP{etxN;91he#< zE&ki{>@Yb_bPSxhD>N7r%9R@7>oo4x82X$3wmgDe>19qghjGniD3JQ+>B?m}!)Md7T7CCfdxa3krpRDc9AI)CgmlaOnBGNbE{TsXw9K z7hLA@Uj*UWW%^h=#;d2EGA!IJBHiSea}r4J{S;j!%6N}f>cCWck6VUU=9)^E*wZ9H zwDKDCgt1`bnrk~)YP0nz8VUR1wUQ7v%cLzk)qk#GS*X9pI+2+-MfOZGIeuq|m)kFq z)rint(6znT^%fFL`~|6@N^85a6ZJkPm!{JO29S0(?Ci#-38 zEjx`jwps?KoE=}Z?vOe&{TowU17Tuoj`MQ@KMsvQdY?O5nUd)m zOq^H=r|now6d)Y|GZiv^ynviJyj{)*WeXoK@t`BUWcM!ExjQ8U3d^kC-5^+yrTYINs%+mIwZ>F|P4X=~;G zCa$P*lkHEta*LcYu#nMbPHeOkKlCeoqBv9UU!<9m4jGOx4w%SSwA4T)Rbd=9`|w|~ zkmC6+DZwtuBz8uHFLA%%UmPt#545zJ_CLfb_)M+AJhy@+NV8;PUF3@2u`lL4P>Wux zj1jMYz0AZ`RQvp^55-=UI+p%R>^n8ta?*Iin%qx|BSDVDn!D#*7wNtJ(BxTz&gSBghg1zp)yssNH{|n`)C@-IUuKxv|B=gug3Q;xUff2jZ#& zmW5PK&P&dh6=Y7Ywhg=lFJ=DQerrXnCZJ6&7W$Ujo3>Ncz3;13tAaN<2gGp90y!JX zZC`D)%4g(KP11r<|9FhHwVv}!9oyw7XIAC>GKac4+)x%D*}Als6x?KdsV>t_mnhcb z0yCI3ymn?Suf$H~+jV2BLyiv03->1&{P<4VLHn)*r!M076oQR_{#acCyMHxW0n46^UHmVjemN128h{{r=gberu02DiKjKt*HzIpsf#6DN|olIB0NV9l9hu#w`~ z71+I!`O2DjWriSp03-KLs6;{$Z#zG$*BAUx^56H*e$tQH;`Ev2wqXQ)Z{OVUqqMN} zZcFK7*~T0ZxN|n+NOimWIvyKd$`Xn-X7adJJ@3Tk!K+ixA@QDY%W=*`GQAt*5nm{7 zc4^bAjkU|hfxT}?=wzAt{xNgKtJQ?ibt(2b@`RbxEo0_b$Iy?<7O90dp9374~oPPD6_@k^$<^o5?h+_S=(vMx`Fk#f4Eg7 zVEtxou>1(IG;xR0cfLh5`!pXf-5@Q(DmPby*?uF#o$Jo)WHJ0wOXx>c35|CcLu7+$ z?{LT2O5({Jns686IOyG8hi559%(d6WKXLh}O#4~5PUraI_Kz)GnAkz}T1Wx^BNZ}p zJd4a;0;*)>L^zvP@r$7+jr7SIN{xKv{5;?)!f3g5WgBiMjibu+LH?u?jLg&7Fse2@ z+sJ4p=S^PP!YG8SHt+4jLjPh1!4j^AlWO3p=9D{OJ9TBUk8OUVRo>ywQC(6wy*Pnl z)U?dcB@07;k-ak-7RU>(eQFlbwt9X;9>|-VPGo?Mo_oXeJ?m_r1;z9m6NvHRh(fn% zs+6d7uEFW7?*hpvDaYmR*R$nJmXarz#s$dG zx=%+qU-(RV(BX?#@OS;zS%GH~5qkA&RyfR+@2n)n;{e#O@l59{Tg{`rFLuo8%r8Ec8R!@sx@NZ6pVZDuiUJe2PRJruHz4_ zbH)J|cE>7UMaj7tpjIyaEu@( zROI}QKK8vW!fo3jk>DWF{@lw!PqQE_tDihd-Q&mD*3)$ghZUhHH5Uhzh%@VLsH`gg zZ+f@N*A~%{T+WyYcx-JUX({(BF!pNM7vk9-cB4G`kP)D!K#1~loJsi~Iw59qm5DcJ zyFHrX$Vka2QTkVGzCn^+giJPbpW0$#_St|(#0`8$-19;Vi}hAWL%AZ}5iQ9ev}sZ0 zN}kcep**o~X!={-MVWI0rSKlQoFtmpD;s`Rqu#mA&6Vxz?SE|NI@5eJ>%EfF!QSwA z0#%sVmZsu!rDheizxs%EzE4(xcnGQ1pukUT4RzWFgE!!#HMDQxL@K%U-Pfb=;E>_w zw@>3A9XZA4!(lV(J31&5g7EMN=V?XdSlpHjniy3_5khpnm0!Pq{~ljT;3=HLkZ2!V z6+>L#OeHj>yo&klfhWDZ88X7@MHwMe*?q_0_wWTwNHRXh%A!IZ$Rrx=+km#suCdDo zjZGLum*ApSiX)$fAJMJ|JeK0i+_of?WQP(9_DzQLm0TVr6v7f<+Kcal2i_8^PWLo- z?c~X!rItv@nOn_goC{yZf{R0GCGYKdSq$jzW5bq&A#TLj^i%H&ap8&@HZmipLaJ{< z);WbiEnl&v-e(Qhe*9n>5Y8OvE}{dHaJ{By;l|>@(KnE&4`D_M7_>uTwgpF@6aRV4 zRl>Kq{XNDW(^7tM6j?GSK8NfZ%XVYj*BUsylOAn@`>Q8k9DasxNKoIL2Bh?e5!o4z zmt;{sSPNZ0$QmhTNj}XaW$GZDT=;E{C(lU9rMEA*u%G-L$n}z=xyBK88GxJtI3&~n z>PR_WNdhw=f!P+_Ep`5jf7B8!8vVtB2LB38d~dz1*dbOTOo(%3B+yp@t3|y?^_e1$ z?LgWa*zK~>Dj6mAfLL64#9BbC)4IM7O)<1Ok5`m0bnt=dQ;;{bv;B;6!Zf9@Yj zx#3nfxfo>^WnI5ut=KbugmN@Ep^~*1p}wsG-b{4^1pH0YfIm}32EdO?i{?h_e=Ru? zrXbX?!P;}8Y2+vQs3|sb@<-Ns4fN0To4`*wGj$r=|45ltl-F}wLbcOgozBkU`=*kQ zGEii3#tFHvsp_X~3|I^}84@ce*-JitdIi>J6KZ{}{I3o?eO%0CULk+OSFKu*!DTx6 ztg<~^3ZJ6VQGnGc2Ye(I{sr-l01$pgtCP1%`P*T@nT>v zHXiYGg({;)OY4d&HR)|+YShVTA~#z!PpNEj)kl9jP6Sd?c&HZg+R}iBH-Vj;cqvFN zcXUDPh(Uvw<%g;r?f_Fu;F`m?_2@$BlrP0v3oMrJLZ!HBDvi&C`zF-WNYH6-iR}%) zS{StMY!mMOQXiz9V9`OmA>);NNzS~>)zLjPZG`wtei)-`C! zs#R??StvQxx6P&w?#_4pN1qu6@P%9OIR=+VwUp-eG)|O$J^m1RP1Mx%rh%O3$lsBP zVA<_!?q8ih0ag6#%i&6(G-YFEJF=F@z#{mlRGP^($dVC3)q4h)71g6W0~3RM@?@6J zA$F7>+kgUg_j?FAoH80#K-O&h*Qyg$^F@ zy`U4}#P|xI9a+7g4*wZsDO!pfWjSp3R`nQ-gz8qW*0rB|nPLHk>P`$q-v+^k(@S8N zA1=NKSt<^k3+pkLi;dVmyDfEbvi9L+K}vKHwTg0QS9<6)||d zAuCNRD>hjdIo`4r(wgx@itrw5rur8neE;Y+>*-rR_&@Z*nGJ~DcoA^!_^WAW0qxvd z@3N5q5X4dIY+;E-k!QBd;PCoTQT<)In8-u-sw#TJJuTQ>w{DE~Z|c^km&aiUp@jO; zOU}*US=K>TqU@84F4lih$oZc>*pyEb!|?ty6L1%?I#V(rc=Kh244!amxg4i@qF=+3 zWc{0~#8W1t616VE!Y?p$Pc6kd1zFC20R=BSX@cg=a zSYZh1FSUMaWu80zs%w-T+5}n%Bi6}V789M4xdE<}I>mx7&)T-HNe*umf`Y^Ds^<6E zW-3m%abP_?Y|nm=XS+*J{=|R8WW%n{X6BY~4q;Oz6=3nu>kwUuhqktTHZrogr4FCR z$J1)V?l7^?>yy7v`&AxcSz!_9>xDfTRzwgZ%(M0YZci>B!ut504 zVfDN}cs;|aus1l$y*FGXrJ`+g|6He}2kaZd+Y<^#+?{Npc7pMzdSCk6q7D)d487X3 zqzn4wG&f$d5#w`t1^dgj{P!}L{8^j^+SJqrmXUqF-IYAtU8>$^yST_9Az!-WtJ8UF z!vEc=E?L+5Tzw|Rnhpq3fJj6cPdmSn>4aJp&#KNs1>o1X=l-6QGt=wck})O0{1eyy z<5iF%tHKlY(fum2c6z?)nbJTD9oSZ)2r{%s+_rYZKr@dff)n=iJghE}z0WpUS6Yh$ ze_OK(DOs)Ns?Ju1(=Dz2XrOCoUH~{NE8Z3%{7EYOfai@BH~d5&G`Y81h|zk9=a&oq z^>Yev09{XfB=W6vSyWwnfErvQ=sJHE6u}{JjMOFsZOr+gt8_|E>bdH}KhUGp;x)i2 zKs)JE#ZYa$bWU-M@NPn;7gdx$ID+8OioKnC-sMtT7|35znH5zx>KQ1Y@BG?Y6%ry` zDiYd1M?XTRHiz*T{@+u33(JpfFXI7o5p^&6CElJtj?uAibeUcthw{)R_qeQPwh zxI1GyEh(=xGxoE)7x^iLPHTK@&&9PSel(T+EPNfp@{<4-56LA4OgGo+;`H!iGG|*< zW3+T2xKfBe1XaxKkpdeGUoT(*uNG$+B@JIiKg}^zkmlbO#2+3`3|Jh1uz7Ou8{zLS zE&V=Lhukcpi1IlVUE-_{`k09Z6knd|D{VR5?A`DOF1X2D<~!}bN_5)cj3^ivZf~e+ z8;BN^oZFkHUS)l6gqj}IjypOt9y?h&<1|V(lU!1=Q(8xJk%eU15L3JQ09j&8FpH3C z$Bd7FSJ!+fML!tX#O*PN*5*VSQcBWW$SuP+d*hh$bHJIutM|L>6jQG>-4y=i53TPf z42{lNtN*?SF#)Wxym?NZt-)-#szbE6n|%my?{}wX2)cT^D*%b22uPx1Wv~qyx88@ z=a*{acnL{a-S@&hU4#F`!45{_gA=tu*#npp#135D<)wtl>Zfy#h6+%wSU$l`;Y+_b zu`74tzB%jVCKrUs!qM`bW48HqeC^l=Tfc{Dzv|(Kx;wbF*>2v!rYQ+V*&e(uzcH@~ z$oh_`k_4ck4_23SXNIsC15l2j%;d9}y|OFS`-MsAB*Hc7h8#RD{eMw}Hf1~R&NXq3 zK?Wzc#hT*Oi73qmxCmDCVmV!}8?;gMZ-97Gw`X2uVI|GQ>Xh9_TS{;B$3eQ%CCy@W zG5kWL;DJFE%vyy6`^3q~E_;fYa%Qy4v$GEi+S19!gi0h@H;KJFAc=QcA>C0-NDF`I zKDGMiMN9}+cyYt(e~@R{Mi0_La30D{F1#Fnzu(#|Dx{JWq+0384q9@20ne>u5`vwt zPUaGSRWuGx^NwT$O=h!pQMN0OGhS0_@^~!oSaLU{{tl`l5XK015Nuo%&PFm;xDSyT z4QTM{*aidt{C)A>4goW|$t4i0H8|umQ2irqABcDML&z3zq}bWMK}U(xm;D~ovGK0A z?xw}^kf@0rFv1or2@tz|t7ns>myC;hqPb!FR+&DX+%0+Z8RgjYoVGI)+{UM#P)13aEREMSjmQygobyO# zF@&pKzKQ6U31TivwzXsOOHQSgR#<+Txm0|O|M`3%r*C9dNGo@7P2;_(-xmTDgmZ_Q z!TjU!YTPbLY5bW}>3cP)`QF}AVP?x2$BZZx*l#`}ZTzVAhCT|Q*%8&6${>2 z5>mq_+mH9jx^Sth>{~O2Zz0602qfANtuQaupXoEo9A9^Q=M;Wv#+RumIbN%Kn0#Yc z&}k>we!E)0O+~`VD|z@>AJixRqZ(7Qy(y<|;r!lTaK->X^CQC@nI*z|YceWrRIYGK zk7#G>X+zP>x8(1S@2{SHha>`IFFpNI80pY}*Z2@1DKnx#j z2iw~Si${>q-d~g+wcagR*akcqMn)D2zh?w39 zR?zB`0gv&ACXN>wXdcMjFeUe9n+pNNEm}mgEOw#HTCohIGbX-dQKnRw+!|Z0!MX0w zyC2lS%%__DT58R59ux;GQA3Q}ED4_1OE{GV3r1qY?c;WZb)o{(Et5_$q_0mn!kS8! zK!<5V%1t*!vJ}KY7#ig}$%kO}6CC>@o<*!-b7KtsclrFds~C?{Z1hN&2|nyvlE^&Sa0tQ2f_@4g1qz73A-HdtrD{ZXbH&}39~z}Efk zUz{gF`njJ5LW1o#_xJfAka{HJ&%y_x99oN1+JS-%4_qA?d2q?w1k~@u_542uzC3bK znpp+S0~KI3*{TMXx>G(iWSQp>n)OsHYHk?^zg*gaaM?2EVa3gD1GO6qxs@ny`Z0Gc zc~<@VQ*qp}k#ZVjy&A!H0>jGc>vharT0&&QL-P44NPiXs@jdC?_H% zFB_29smrG+TJZm)pfgVYX<=fDoP8|XJ6;wrgyo6KRWMtb%eA%XuW_Y1qANf&!(iyv z$l#N7N8214Mxh)W?Y@?0*Zm-HsOd3K7u-I1LoL-)5eEC2z~wypibOOd#kf?V1%*mo z?sIv+LY~D`_b-a?Mf{<%nT89TXtb|>#^!vPv`{HO?j*aPS}sjrVB?fQPDxBZmf{Rx z;L(M$@Xt(-bN^&Fmxd#w!f!C?etR5l%A|{dy=Ql6I!xHtgrEKD462YAW#d{8E?VqG zzZ;)$=@#OhznHw@9_+7%5+AcwdLwNgdef?2}bfBJ#@l z#-*TJ?N@(k=jrh{`uCg?DL%!7kg3zo&83ZiSkqHzZJwub`>6`P9zS56OWiGrmb?dT z_e^>TK_wKQJ%hRmsFb8Sx8&pYc;cYhGa1*gCEx5xI%dPy5{}O!{Id8EWO>Tq@Ormi zb=_|}jGo`NnPMZbJbpFl>34=Cei!`qZM~QyD=a+CD#j{4+1Y#I%;-+2&sc_9K7U)Z z?$S2hgm58Fzt|>3JN!jJNokZ3@>0ZTlRtTzK-?3yc@sYycoj?QX2RK9c8W}c&z=-D zL!(kHHmu5mx56%u(Z`!6giQQPhW~8B^CTVaKy_jKle9g$K)hm|W+mJe)J1cR*S`9?LN} zjyTD%=O%fB#CnMU)lMX zug$)8aTE)#m{8|H{_|OU&d||CU0a?Dl6v#PVvloC<`iW_MxlHy38<1&4zsQQ>mKi3 z`dF50p?0NuNBU`tljAg>^=RNiIiPks$MGy9c}f0r+N@GVN7m`D4&_S{7U5AfRn?3cZwwg`fzJ_Fv$KfRTgg=b#j3?MjsXVsg_s4Kv&M&PkP!jt=Q!tvSt-PgN^#{V`(s z?^M1G@Q81)W)bsZ5jev}oz<2yPRsYmKQWFp<*wtu#hmXMpsG~Fz)zIetsR)F)KJql5Zb#yLnbc*s-m&-ydRWl z>^U0-ys4c4n)4b@5M+P;;XHo31k$xNC-#9if2R?_OrM^>aYsQ$YzA4YySoYVCTux5 z-%8K#zwcT41SET~aN&CSBiaqB`NrQfQg+!G&kR{}eWyM4oiH@w_MG_D{+{=4>W5z` zCw&BJrY6NlK8`@^H_Xb?Mw@iCjN?jscE}hRkX*Uvf6AM;k5}r=!{F7Qt)b0TzzYWI z{*Ai{;E4sDmM0^q^7F5Ozpwr~I{;WUM1T}EQd+2u$g=PC;%J%Y3cze$Y0+CSbw=7fWHrswD!#5$jt~M?`+gE&4K60{)`L#GY;;| zN&(8qE#c==nPv~?`R*q@MDVNdR+YGvHG_(Cnv=nC8RbFIru`wCKZQ+xlrT732nDr} z#l)4b?E~HL*?P8wmwN(3?ES~Iv_Q<<17Z`tZFH3q=41Kp()J6sTz%h=;cW2JDBboZ z0=Df3U&{^Q3Asa`u7r)>k6a8_pgpH-2f8Z&9xvjusZ57ENG+b+(+jB7^$b-rbpX~b z9Ep>M+Tq3z;qj=j7O)MoU3{=$p- z&t7AB@sRz;2mOjoP}b*sMvkj5U+9jmAe!I@vqU=!kxgY(t#;{$bt((P?0#V9+qxdI zg#tn-kry~t`Q`GYJCA~u#`o*#TNWTJqzmx0{7);Xa473y!@H!c>#=V{(Y>^k6&BR# z>r*S`a2^*-qmh%-L&H!hx;Ips){{4q81~TzRO052MQ2Hr2!5l?cVs2Q4@3G70@0@NPCJ6?Y41cOi=WCa+ zYWywFi#ZH0i^F5mZ!5vZ-YmC~lCN7>!3u1|8`#$7U#T?M%s36uTbbk#5Q;(HaWj`7 zRPp4$PX9tP^ezgrB`{dx7O$FFFO9p^f{SQtLGs`Oob#8*!BiX*XW)z|n^jf3XA`5B z94>_J-y0poirVHr5E*Cl*H-juzRBHzyT(xJ^$jB+x>eXj{%!6ZE$*9wPgUf&%(2Py z+(bjiSx)0bGO=SPXt;>ZwkV`62TNtZ^<49j{T z8amRi6_gi$v4@vb(p-@A#IS(HNcp46B%35=lz9A4$_d|BHdJaZQ{UIO@nJMGElYxX z2G9@>7@*4M`W0{>LuyWWyapE|TpKHV{s*ZhBXTSjZG=@f!z$Bp_!V+zpGKma%5kW; zc`i!Ok*rujO2H4-SyN{SFjK`Xf{zGf7k6Fq#qSA{)_8+x!vyJ%0zBeiz|}1K_a&g6 zxw|E+r}q{NigjzcC87^=2z)liLF%8Mgl3Qv`UvBMTo2tJd&)Z}0h*}cZzBOi0Gf<| zhMKwnR9{?|RZpK&3flm~F8DbWX9WVB`19v5lBe>~GUnWZoEH@gl>IjtrW1ZV2pnPZ zx4`O51D{hq_&t^+Wd^~mH9@&u^eFzs$d2-4w@RBx=n?o%4E!-Ky>AL}4X(8l4T9 zZ?+eR{5MC8w+cz$=Awe%rO1lh1XbKZL~Z;l^qu7aL&$M9b}0)C5_t!GQ7=C=t|HpH zP+cHEr|thw)G|V}3-w12z)=Wn`o0Jb)J)G1Y-pcut&y{uEx{z2Va-RrddqV?9V8kt z%^P;#^uFgIY{lUo{#ebZfM_i*FsPydl!7m=t35+*ImyAj2P){V?UeHcO zUN%y=C0ldDcg$$2-`#S+I7)K!*Dr$YtNoHQEI{-o830#(B)b9Y^XC3st!s>XuG6QkhiNX01j*(CxcNxbh01*y+=Up_FH`xZr%;c4$jlx2mQz7W%T zRMbC=NlxVtiL-{2cx&53aeRc2B8O^CdsXe>Sl%PX$N} zBVTq8ih~#2=?xw5z(SFv5J$r}KQ;vyOzUfzv> z`OO7Mb}hBHdCc&xlWwn17tVHRM~)dQ_e&H0xJ+#)$GLyMCv8c1oQ>DRId>}b=qF!j zPPv{v(h_>W;NCS?RuhHz=YaIB9Ei_q1N2|D{Esqe{tDotlcy!e?dksA$u)Sys$gF7 zD~_2XUyhimY73q-VeGierKGT(&lQ&YDA!x{Ro1>|=_l3ns1QeEs9@*wm$DfguH3vmD0n{smvm_*#fFcEp)nGL&X#{DtY2(;q=o@-9ky zX+#5I4m39a@lXq@57!Pbd{=_@U_CGK_!3Z35&QOl+@pZ@0arY*HGjgef!6z74C};w zHyHNGz;Op;o#tX_N9D9qk=8Zr-Ou2z#3_7L4Azq`!Wa4~Nbw&2U&@<&S0VIA6?ayQ zoS0OIBM*!&t$~a#En5uW`Y4Z>&*TN5D!=ZB0468wbYw(z_|W;!DE8OCHuz#TltscR z#y$+|kZ#MT- zY4g1dlkV(^ZPmowZT-a64WxtMeeg5n!?&WBIJ+AL1KZn1Jc7R!0i!QBN*EL_0SlgK z;@Wi}d9qdnwEr`~L6jT-&~d=ux)DLwUeZ8>n)RRlS4*2jecR=JP}QHt@+4B8YX+6190?aH0#imAg|Hs$33Ek~(>rGXpw;Y4>F zLD+2m(t~Wh)cYDMQxV}1t@ch~Iuwi91tYsl$gmDf!d0^Qg1t5OqoV!EqQ50BC_mD56bl$ zege`rZL-ll=ckJq;|?zEx>(q5=^itxO`3E^*2I5UZGzEj2j=buF-yFTHs zf9grUt>Cd(E{-we4e=K6M<@^_Tc@)G)9lMBMPiR0+jTW0H_h(weevhg3vcUCS{6^{ z{;_FriYqeREclS@#qsf8$LrDk%hKA`QC}yDc0o^9QR@0MF6L_g?TKS^#sZfkYV>c& z=ivlz5k`aST0V8Uw;Ah~OK-eng`{x}iJrryCrktq`xz zsNM)z#SHHZizy8SDw)6z<~9t*LcT(YjDRf`XhrEL$#fcGI^mtuG1K^PB^C#oAIj4p zR?}i;x3Q2IXUR%Bxbu*56Z-cV15Ms}6|u|U>idN3RnmPnIINf<`a<&$js9ozU#?8_ z?>%*EMc1fbPz-4qVzyQ?Cf+7ilQB-fvXqO%$%jP!c}YL}_#v(LQKV;gOQ({x;vQR4 z#B5~z`Dg`dlp`C{;0v^!(v3zinoyC1k3R!|p`i8-ujnhbCZX{APnkp7zs|`N_GTiy zVBPo92VYSthdTXKbU}-e4CDk}TA##XaF+>k1Et0JA5R_2q<>sO|Eri*r~lnZX}kYR zq<`%4KiuQ8?Ebq|$(~C}js1_JnECtTsrcNev0`ab;2EJSdTj(qy0KZ&3G%p2LCOhc3>Q8sB-MT{ zh>6pDMJt@!%20N-=s4LWD06Jf)$&_X3e~a|L_4Hpi^Z9>FxwHS=Na^VR zD)hhT^?YB6|C&S63zM%R`G7vzjh3$nUM^C@!u z>}ckJAU}#GHVjeSek$BOmio7rd$cYjYv|A_G%NN%TX{?)K}L9$4&S+G9Pw?IT)_w9 zD}D)2FXW@%ZahV?4ZN!kqKM3TyfxttGjF8vad-DH+Xl2^OV?B4FXd;vnv=I(oD3WX z0{@Q`gxbt=O0M9zhWE846a2&2i6(z+I?tr3(h2@%k7vw3h}Bwha>;XacHT<PHTHD@6;d$DJwNoNUdiWX=R2V z{MY+w&|~dP%0msk3ek8u2?TLv2beby0l6l$P*$={H0l}I7EM1y@%CPev2F3cUFJVl z+MoYbUGL8S8!5}|e}hY~OdoahU(>Z>{DQ0U zW{+7nPoxIMjadbOV2^fl5nIGb71pV&o6dl&Nm&E_*ZTU^;J=|Lh5XN^+{J&`Na^nX z=>6Y)yt1o9GfCA3vdnMr6!-@o9BT5RAuqhaD{r=;n_7mvmw6>*eF_o-=|84k0Nmnt zu@l>r%;wW^BVV@f!&&amt6?YBq%G&iK=oTu-aia__!E86izg?HNi<{U8_Qbxz^v{+ zas@s5j$M*(fKpL!XG(6!jYH7ah1Z62j+A_uy#6R1vQ#ai{rtg!WRJeuw~-WYEgr*c z>HYaD2}8EvacnZdtU}@^NF+jv?^EKFDW(Z4dl`dBI!!jK_tQ~B0AV_f7*OU@^s7i? z+MKh_v-=l6r0yq4&sAW&BmMA19M(_bk3*>l=AzxdME#L6z?BEYf4dpIoXsZ5skqYL zg^oM|fi5E4i{T})Ju*ETk8XPy;HBuKQ2gX#X3yr)GoYqDT~{r+i;_cyvj>RoU&V)bR`E-imfB<4L?To|O9wYL+V*DNF zWbt==v0~(8n;Qw6n@pB#9k^ymq!=6eCZleejObu};RRBt|PLFw# zy#jCoV2)5zamgy|lu-n9SfOv3_Y(yyR=v3C72wG0_je9<`c)%fmjD7$O7^cgSi}Il z$lnb~a5$e;JG|wH)!BTOkYkEN@bOZJ4&TL?zHqx1;4<&}r_8S+HZPn$Ri7=K{i0RY zYCA}rjEh~&uBYKw?%sFu%_TIM6A#73E_4v5P@Q*+B>Dz~up2-n;`QTsb%s6 zwafg-$`bZJiY|BhzfF`S_n)fygW2uk#E-nx>Hicp7ynT;jPCwtGlkvPU|zof_#pei zQ!8#Uk+k|9aJbT!-+NA7Xr((M3cZy{@XyQ-T(N^-1n#bZw-XKl2SweRYlGF|0=rG-T!Q) z9Q_2FD)IY=C)>adwk0xlLoXO#J=uQ$?#2FKo5lkF;rZFKcYl6+B7GYLzAwFf|I4e> zXVUim!NI@1I(_lt;NbbY=Mw+()2Hy+Ysdn_xC0 zaI~O}9eANTM^ys<-S=kRwgi2$t}=t8=5+LqC!7WVs`lu~_SGnK?9n#A*4ZD~V}RHz z@?@KgwAYpUwxww*^Aqtw~d9!LB0aWE6i{8;-><5U4h2mFCx zi)v4=$n5Ex@J8}>=CfcFMD~o#r)U63-w0NM`3@HL8LMro`+ObFB#%V`Co6Y%&b9Z| z-CYoAYELF)L{^_1yLMUF7aTjs#GS37vr^;MX3Hvts8jpV4+qm%#H;rS8 zYU+aMNomq~dMQFxluV_KI>dhUSpO8xBWb(?4gL)WEWz1bXbfKc{lBp-8$52sgm>@p5u%N96DSue|}L&*I0~chB)*TEOks&{0cn|G)qLv(cBp z`}_YVMRSxn;pte(kP5MeHgK;?P=hJ)P~EZ4I+=XB?7cgn*9C$LA>dh zd{>~v7JW;y_C{qf|5q(T({uVCP3`jkZKgEg|H%Gh+efH9j-JHKeM0Ohnj-ecWOe{t z`+!&5SFs&h_i$!MpBH>VU+*hv{cln5L=+yrYE)=YWm!4+x7V*O+-q`U?+4ufXFIk@ zoeFap_Lc2)PHZeua2U}~UxlvC99nCKB-PgFe~Y}zTEb#9se^5yXmW(Y#nV#3{OEwb zgF2YFYfMH@nI%iq&zqLQk{unym7sn!zqzrew@**0@73&9y0OR5FG^k9o)!5FuLSiy z61mfWnt&|+Myv?mjX5_Xq>+K2>E!-j}U?WeDTL2k-)e z+&@+HLqj`M;W7OQk2#dkrl*9O6+fk?pQD5LC+&3-#E@ofF2td&ZMzBJeW+LkJ zS!^eM9ycU@eH5EJ&!<@|DB0fwUU&QH>(h6!o%B)slmb#XBhk~Xee8w*4Uofvw?}k5 zUNGeue-D^c%w+2u&j45eR3Zu)n3_vm*|W{TaHu)1p{XW3GE8kil61k$D!}6qd%!Ra zjRUr&X*hx!NIJIDs)5tx zS_A+;RamSfne4f|d}7I&5kLnA4$w2v4X82!Op8GfOR)!w=glE0(4^L)9n@B3Xp|Xv)(Pw4n>CYbshvSpy$vgXYV+Ivg|~ zO6pb6qWgg}@Bya>w(L8O?C6H&`ZiEqPgXU<^Ze%BpYs3*E$46RfSaBN+d+U-d9V$Z zW}BuyRBT5fevA3zCLDV=!MNoJ{DJ2A1I5q`T`_In@pXBqdPK7g#rJ@ER*#^ZIJD^6 zF=gAAfgT_Y&>T}44$07yhqg@Qf$qBvyUr4YHo!+*({+GBIJ#vF026K9B0w%R(|6&7 zv|#s3i9s8<8>&7muW1Z`Ch8tA8aZ#ob>pUA4Cs)`TC(V^=a#I}HEo1X3r?Al(JL^B-#%d+A0JFsM! ztwOXRP#g;gpgEKczrNpPu}f1d;Bb}=Y-iy4Ixu<-xQ%A`rscc#P$_i0Ml!G2ma2P> zqWA^~6-4of1<0)%s;8;|bQ#8f6MAG+0pHm{v>5;_xov>3M-0W59ZNSrV3NI|=K`ZK zv-s6~05okzi&2=mqv*tSP16~ut|1ds_8e#E`{uwjiETC=1*LE;`ZWfoVJh0tR6tNP zP_QFIUsfE~RY3+AYOVTBXOhq(!yTxOAvf)O zsSVI=+w(!L(`?%v4m8bG4ApS~4opY(G;P?v^Y*|GGQKKn?!dB48_s(`adi+cTvOA4 zxs#?Nh;J9#H5(FP_^ z7=u99o^B2XnyG6pQSjjE8$-)z-FIuCGhLIQ{0>qaobQ1L7>?y?o(HSpdcufCGUB$lm~dSf1?r9!S)-HXORk4WRWhXr||qp{fwiRLB76kO5~;2YA0ekiCK0 zW)yAvCLm9%mf{YED18tc2*5xmvf>ic@@zRn_NFX!ULtz1pKYXB+m(I1Rj@o@sLIe7 zXpSYrnO4zs!yIG;4b-?KZZ2L-)1%LA_=!t^s>rS`gScwA9u!j@X!t+P(S3hGcj9KY z>eCtM@ITocxI@)79inThXM=n*9H=1Lc~(`QOioWlmsXt)KuWbVPXnpVa5dF79aAN; z52yvF2HC1y*Jm_i7z3MD9a@?t+i(a0?x^dUIJim9uX4lGX} zR`i?8ExJ5X!_fc)x8cyjQ@WvBLwo20@w7p%km2+sH|swKbfp>N+YD-;XsS=(_^tqz zGv(osI0GUN4BxUq$n%;FN`OK!_i95C!~uaG_5l_`*L>H8ATC6c9=@kQIQZxghb{vTn-WaOi995YF^Y#Q><7y8=p>mTG82 z)lq=(*gAlL1tPZXI0~HXZK778BH>0s#h!1P4HW zsOjcV0TIB0t*{N(u7c0T<7y2Xj;aDV_CdN+du=R+6h1q`!F6pb%5R)7ow zVi_Q%;sSTDJVOTtrNGhDGBs5JCR#<73q3C-2)mXCq6iRT$5v6hftnV>F$N$u08zB7 zD00$yj!nnU+cRiiwm>K%o(;TlD8s3lpyZ&Mss?1jBUL1_ZXinus>T40A>IHmWZ>D3 zZ^6#MBM=vjA=Mz%jYVM6jipr89B3v;Y84P^|PT7WRSMdbe z>r$j}V8WRPj$Z=<4gi+sg8<+d1cA)x<_nt;fw`pNAutSa07k-63!keF!Jt z>(7Mp1walnh%9yoEIm6b) zrmdyMty0dsRcdbF3VgrTz%^|SYvkTkSprLmUF<(g)c*J|HX-+H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0enablePlugins(array( + 'sfDoctrinePlugin', + 'sfDoctrineGuardPlugin', + '...' + )); + } + } + + * Rebuild your model + + symfony doctrine:build-model + symfony doctrine:build-sql + + * Update you database tables by starting from scratch (it will delete all + the existing tables, then re-create them): + + symfony doctrine:insert-sql + + or do everything with one command + + symfony doctrine-build-all-reload frontend + + or you can just create the new tables by using the generated SQL + statements in `data/sql/plugins.sfGuardAuth.lib.model.schema.sql` + + * Load default fixtures (optional - it creates a superadmin user) + + mkdir data/fixtures/ + cp plugins/sfDoctrineGuardPlugin/data/fixtures/fixtures.yml.sample data/fixtures/sfGuard.yml + + symfony doctrine:data-load frontend # replace frontend with the name of one of your application + + * Enable one or more modules in your `settings.yml` (optional) + * For your backend application: sfGuardUser, sfGuardGroup, sfGuardPermission + + all: + .settings: + enabled_modules: [default, sfGuardGroup, sfGuardUser, sfGuardPermission] + + * For your frontend application: sfGuardAuth + + all: + .settings: + enabled_modules: [default, sfGuardAuth] + + * Clear you cache + + symfony cc + + * Optionally add the "Remember Me" filter to `filters.yml` above the security filter: + + [yml] + remember_me: + class: sfGuardRememberMeFilter + + security: ~ + +### Secure your application ### + +To secure a symfony application: + + * Enable the module `sfGuardAuth` in `settings.yml` + + all: + .settings: + enabled_modules: [..., sfGuardAuth] + + * Change the default login and secure modules in `settings.yml` + + login_module: sfGuardAuth + login_action: signin + + secure_module: sfGuardAuth + secure_action: secure + + * Change the parent class in `myUser.class.php` + + class myUser extends sfGuardSecurityUser + { + } + + * Optionally add the following routing rules to `routing.yml` + + sf_guard_signin: + url: /login + param: { module: sfGuardAuth, action: signin } + + sf_guard_signout: + url: /logout + param: { module: sfGuardAuth, action: signout } + + sf_guard_password: + url: /request_password + param: { module: sfGuardAuth, action: password } + + You can customize the `url` parameter of each route. + N.B.: You must have a `@homepage` routing rule (used when a user sign out) + + These routes are automatically registered by the plugin if the module `sfGuardAuth` + is enabled unless you defined `sf_guard_plugin_routes_register` to false + in the `app.yml` configuration file: + + all: + sf_guard_plugin: + routes_register: false + + * Secure some modules or your entire application in `security.yml` + + default: + is_secure: true + + * You're done. Now, if you try to access a secure page, you will be redirected + to the login page. + If you have loaded the default fixture file, try to login with `admin` as + username and `admin` as password. + +## Manage your users, permissions and groups ## + +To be able to manage your users, permissions and groups, `sfDoctrineGuardPlugin` comes +with 3 modules that can be integrated in your backend application. +These modules are auto-generated thanks to the symfony admin generator. + + * Enable the modules in `settings.yml` + + all: + .settings: + enabled_modules: [..., sfGuardGroup, sfGuardPermission, sfGuardUser] + + * Access the modules with the default route: + + http://www.example.com/backend.php/sfGuardUser + +## Customize sfGuardAuth module templates ## + +By default, `sfGuardAuth` module comes with 2 very simple templates: + + * `signinSuccess.php` + * `secureSuccess.php` + +If you want to customize one of these templates: + + * Create a `sfGuardAuth` module in your application (don't use the + `init-module` task, just create a `sfGuardAuth` directory) + + * Create a template with the name of the template you want to customize in + the `sfGuardAuth/templates` directory + + * symfony now renders your template instead of the default one + +## Customize `sfGuardAuth` module actions ## + +If you want to customize or add methods to the sfGuardAuth: + + * Create a `sfGuardAuth` module in your application + + * Create an `actions.class.php` file in your `actions` directory that inherit + from `BasesfGuardAuthActions` (don't forget to include the `BasesfGuardAuthActions` + as it can't be autoloaded by symfony) + + renderText('This is a new sfGuardAuth action.'); + } + } + +## `sfGuardSecurityUser` class ## + +This class inherits from the `sfBasicSecurityUser` class from symfony and is +used for the `user` object in your symfony application. +(because you changed the `myUser` base class earlier) + +So, to access it, you can use the standard `$this->getUser()` in your actions +or `$sf_user` in your templates. + +`sfGuardSecurityUser` adds some methods: + + * `signIn()` and `signOut()` methods + * `getGuardUser()` that returns the `sfGuardUser` object + * a bunch of proxy methods to access directly the `sfGuardUser` object + +For example, to get the current username: + + $this->getUser()->getGuardUser()->getUsername() + + // or via the proxy method + $this->getUser()->getUsername() + +## Super administrator flag ## + +`sfDoctrineGuardPlugin` has a notion of super administrator. A user that is a super +administrator bypasses all credential checks. + +The super administrator flag cannot be set on the web, you must set the flag +directly in the database or use the pake task: + + symfony guard:promote admin + +## Validators ## + +`sfDoctrineGuardPlugin` comes with a validator that you can use in your modules: +`sfGuardUserValidator`. + +This validator is used by the `sfGuardAuth` module to validate a user and +password and automatically signin the user. + +## Check the user password with an external method ## + +If you don't want to store the password in the database because you already +have a LDAP server, a .htaccess file or if you store your passwords in another +table, you can provide your own `checkPassword` callable (static method or +function) in `app.yml`: + + all: + sf_guard_plugin: + check_password_callable: [MyLDAPClass, checkPassword] + +When symfony will call the `$this->getUser()->checkPassword()` method, it will +call your method or function. Your function must takes 2 parameters, the first +one is the username and the second one is the password. It must returns true +or false. Here is a template for such a function: + + function checkLDAPPassword($username, $password) + { + $user = LDAP::getUser($username); + if ($user->checkPassword($password)) + { + return true; + } + else + { + return false; + } + } + +## Change the algorithm used to store passwords ## + +By default, passwords are stored as a `sha1()` hash. But you can change this +with any callable in `app.yml`: + + all: + sf_guard_plugin: + algorithm_callable: [MyCryptoClass, MyCryptoMethod] + +or: + + all: + sf_guard_plugin: + algorithm_callable: md5 + +As the algorithm is stored for each user, you can change your mind later +without the need to regenerate all passwords for the current users. + +## Change the name or expiration period of the "Remember Me" cookie ## + +By default, the "Remember Me" feature creates a cookie named `sfRemember` +that will last 15 days. You can change this behavior in `app.yml`: + + all: + sf_guard_plugin: + remember_key_expiration_age: 2592000 # 30 days in seconds + remember_cookie_name: myAppRememberMe + +## Customize `sfGuardAuth` redirect handling ## + +If you want to redirect the user to his profile after a success login or +define a logout site. + +You can change the redirect values in `app.yml`: + + all: + sf_guard_plugin: + success_signin_url: @my_route?param=value # the plugin use the referer as default + success_signout_url: module/action # the plugin use the referer as default \ No newline at end of file diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/VERSION b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/VERSION new file mode 100644 index 0000000..ee90284 --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/VERSION @@ -0,0 +1 @@ +1.0.4 diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/config/doctrine/schema.yml b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/config/doctrine/schema.yml new file mode 100644 index 0000000..eff91b9 --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/config/doctrine/schema.yml @@ -0,0 +1,182 @@ +sfGuardGroup: + actAs: [Timestampable] + columns: + name: + type: string(255) + unique: true + description: string(1000) + relations: + Users: + class: sfGuardUser + refClass: sfGuardUserGroup + local: group_id + foreign: user_id + foreignAlias: Groups + Permissions: + class: sfGuardPermission + local: group_id + foreign: permission_id + refClass: sfGuardGroupPermission + foreignAlias: Groups + +sfGuardPermission: + actAs: [Timestampable] + columns: + name: + type: string(255) + unique: true + description: string(1000) + +sfGuardGroupPermission: + options: + symfony: + form: false + filter: false + actAs: [Timestampable] + columns: + group_id: + type: integer + primary: true + permission_id: + type: integer + primary: true + relations: + Group: + class: sfGuardGroup + local: group_id + onDelete: CASCADE + Permission: + class: sfGuardPermission + local: permission_id + onDelete: CASCADE + +sfGuardUser: + actAs: [Timestampable] + columns: + first_name: string(255) + last_name: string(255) + email_address: + type: string(255) + notnull: true + unique: true + username: + type: string(128) + notnull: true + unique: true + algorithm: + type: string(128) + default: sha1 + notnull: true + salt: string(128) + password: string(128) + is_active: + type: boolean + default: 1 + is_super_admin: + type: boolean + default: false + last_login: + type: timestamp + indexes: + is_active_idx: + fields: [is_active] + relations: + Groups: + class: sfGuardGroup + local: user_id + foreign: group_id + refClass: sfGuardUserGroup + foreignAlias: Users + Permissions: + class: sfGuardPermission + local: user_id + foreign: permission_id + refClass: sfGuardUserPermission + foreignAlias: Users + +sfGuardUserPermission: + options: + symfony: + form: false + filter: false + actAs: [Timestampable] + columns: + user_id: + type: integer + primary: true + permission_id: + type: integer + primary: true + relations: + User: + class: sfGuardUser + local: user_id + onDelete: CASCADE + Permission: + class: sfGuardPermission + local: permission_id + onDelete: CASCADE + +sfGuardUserGroup: + options: + symfony: + form: false + filter: false + actAs: [Timestampable] + columns: + user_id: + type: integer + primary: true + group_id: + type: integer + primary: true + relations: + User: + class: sfGuardUser + local: user_id + onDelete: CASCADE + Group: + class: sfGuardGroup + local: group_id + onDelete: CASCADE + +sfGuardRememberKey: + options: + symfony: + form: false + filter: false + actAs: [Timestampable] + columns: + user_id: integer + remember_key: string(32) + ip_address: string(50) + relations: + User: + class: sfGuardUser + local: user_id + foreignAlias: RememberKeys + foreignType: one + onDelete: CASCADE + +sfGuardForgotPassword: + options: + symfony: + form: false + filter: false + actAs: [Timestampable] + columns: + user_id: + type: integer + notnull: true + unique_key: string(255) + expires_at: + type: timestamp + notnull: true + relations: + User: + class: sfGuardUser + local: user_id + type: one + foreignType: one + foreignAlias: ForgotPassword + onDelete: CASCADE \ No newline at end of file diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/config/sfDoctrineGuardPluginConfiguration.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/config/sfDoctrineGuardPluginConfiguration.class.php new file mode 100644 index 0000000..2c88ef3 --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/config/sfDoctrineGuardPluginConfiguration.class.php @@ -0,0 +1,40 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfDoctrineGuardPlugin configuration. + * + * @package sfDoctrineGuardPlugin + * @subpackage config + * @author Fabien Potencier + * @author Jonathan H. Wage + * @version SVN: $Id: sfDoctrineGuardPluginConfiguration.class.php 25546 2009-12-17 23:27:55Z Jonathan.Wage $ + */ +class sfDoctrineGuardPluginConfiguration extends sfPluginConfiguration +{ + /** + * @see sfPluginConfiguration + */ + public function initialize() + { + if (sfConfig::get('app_sf_guard_plugin_routes_register', true) && in_array('sfGuardAuth', sfConfig::get('sf_enabled_modules', array()))) + { + $this->dispatcher->connect('routing.load_configuration', array('sfGuardRouting', 'listenToRoutingLoadConfigurationEvent')); + } + + foreach (array('sfGuardUser', 'sfGuardGroup', 'sfGuardPermission', 'sfGuardRegister', 'sfGuardForgotPassword') as $module) + { + if (in_array($module, sfConfig::get('sf_enabled_modules', array()))) + { + $this->dispatcher->connect('routing.load_configuration', array('sfGuardRouting', 'addRouteFor'.str_replace('sfGuard', '', $module))); + } + } + } +} diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/data/fixtures/fixtures.yml.sample b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/data/fixtures/fixtures.yml.sample new file mode 100644 index 0000000..e6ca49b --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/data/fixtures/fixtures.yml.sample @@ -0,0 +1,20 @@ +sfGuardUser: + User_admin: + first_name: John + last_name: Doe + email_address: john.doe@gmail.com + username: admin + password: admin + is_super_admin: true + Groups: [Group_admin] + +sfGuardGroup: + Group_admin: + name: admin + description: Administrator group + Permissions: [Permission_admin] + +sfGuardPermission: + Permission_admin: + name: admin + description: Administrator permission \ No newline at end of file diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/data/tasks/.sf b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/data/tasks/.sf new file mode 100644 index 0000000..e69de29 diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/i18n/sf_guard.es.xml b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/i18n/sf_guard.es.xml new file mode 100644 index 0000000..123beae --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/i18n/sf_guard.es.xml @@ -0,0 +1,33 @@ + + + + +

+ + + Username + Usuario + + + Password + Contraseña + + + Remember + Recordar + + + Signin + Conectar + + + Forgot your password? + ¿Olvidó su contraseña? + + + You don't have the required permission to access this page. + No tiene los permisos requeridos para acceder a esta página. + + + + \ No newline at end of file diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/i18n/sf_guard.fr.xml b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/i18n/sf_guard.fr.xml new file mode 100644 index 0000000..957ee7a --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/i18n/sf_guard.fr.xml @@ -0,0 +1,33 @@ + + + + +
+ + + Username + Nom d'utilisateur + + + Password + Mot de passe + + + Remember + Se rappeler + + + Signin + Se connecter + + + Forgot your password? + Mot de passe oublié ? + + + You don't have the required permission to access this page. + Vous n'avez pas les permissions nécessaires pour accéder à cette page. + + + + \ No newline at end of file diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/filter/doctrine/PluginsfGuardGroupFormFilter.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/filter/doctrine/PluginsfGuardGroupFormFilter.class.php new file mode 100644 index 0000000..915f694 --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/filter/doctrine/PluginsfGuardGroupFormFilter.class.php @@ -0,0 +1,13 @@ + + * @version SVN: $Id: PluginsfGuardGroupFormFilter.class.php 23536 2009-11-02 21:41:21Z Kris.Wallsmith $ + */ +abstract class PluginsfGuardGroupFormFilter extends BasesfGuardGroupFormFilter +{ +} diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/filter/doctrine/PluginsfGuardPermissionFormFilter.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/filter/doctrine/PluginsfGuardPermissionFormFilter.class.php new file mode 100644 index 0000000..88b9eb0 --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/filter/doctrine/PluginsfGuardPermissionFormFilter.class.php @@ -0,0 +1,13 @@ + + * @version SVN: $Id: PluginsfGuardPermissionFormFilter.class.php 23536 2009-11-02 21:41:21Z Kris.Wallsmith $ + */ +abstract class PluginsfGuardPermissionFormFilter extends BasesfGuardPermissionFormFilter +{ +} diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/filter/doctrine/PluginsfGuardUserFormFilter.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/filter/doctrine/PluginsfGuardUserFormFilter.class.php new file mode 100644 index 0000000..92de204 --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/filter/doctrine/PluginsfGuardUserFormFilter.class.php @@ -0,0 +1,13 @@ + + * @version SVN: $Id: PluginsfGuardUserFormFilter.class.php 23536 2009-11-02 21:41:21Z Kris.Wallsmith $ + */ +abstract class PluginsfGuardUserFormFilter extends BasesfGuardUserFormFilter +{ +} diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/base/BasesfGuardRequestForgotPasswordForm.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/base/BasesfGuardRequestForgotPasswordForm.class.php new file mode 100644 index 0000000..e97e057 --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/base/BasesfGuardRequestForgotPasswordForm.class.php @@ -0,0 +1,42 @@ + + * @version SVN: $Id: BasesfGuardRequestForgotPasswordForm.class.php 23536 2009-11-02 21:41:21Z Kris.Wallsmith $ + */ +class BasesfGuardRequestForgotPasswordForm extends BaseForm +{ + public function setup() + { + $this->widgetSchema['email_address'] = new sfWidgetFormInput(); + $this->validatorSchema['email_address'] = new sfValidatorString(); + + $this->widgetSchema->setNameFormat('forgot_password[%s]'); + } + + public function isValid() + { + $valid = parent::isValid(); + if ($valid) + { + $values = $this->getValues(); + $this->user = Doctrine_Core::getTable('sfGuardUser') + ->createQuery('u') + ->where('u.email_address = ?', $values['email_address']) + ->fetchOne(); + + if ($this->user) + { + return true; + } else { + return false; + } + } else { + return false; + } + } +} \ No newline at end of file diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/PluginsfGuardGroupForm.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/PluginsfGuardGroupForm.class.php new file mode 100644 index 0000000..b16a97a --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/PluginsfGuardGroupForm.class.php @@ -0,0 +1,28 @@ + + * @version SVN: $Id: PluginsfGuardGroupForm.class.php 24629 2009-12-01 00:34:36Z Jonathan.Wage $ + */ +abstract class PluginsfGuardGroupForm extends BasesfGuardGroupForm +{ + /** + * @see sfForm + */ + public function setupInheritance() + { + parent::setupInheritance(); + + unset( + $this['created_at'], + $this['updated_at'] + ); + + $this->widgetSchema['users_list']->setLabel('Users'); + $this->widgetSchema['permissions_list']->setLabel('Permissions'); + } +} \ No newline at end of file diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/PluginsfGuardPermissionForm.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/PluginsfGuardPermissionForm.class.php new file mode 100644 index 0000000..d5c8a68 --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/PluginsfGuardPermissionForm.class.php @@ -0,0 +1,25 @@ + + * @version SVN: $Id: PluginsfGuardPermissionForm.class.php 24629 2009-12-01 00:34:36Z Jonathan.Wage $ + */ +abstract class PluginsfGuardPermissionForm extends BasesfGuardPermissionForm +{ + /** + * @see sfForm + */ + public function setupInheritance() + { + parent::setupInheritance(); + + unset($this['created_at'], $this['updated_at']); + + $this->widgetSchema['groups_list']->setLabel('Groups'); + $this->widgetSchema['users_list']->setLabel('Users'); + } +} diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/PluginsfGuardUserForm.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/PluginsfGuardUserForm.class.php new file mode 100644 index 0000000..29a03de --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/PluginsfGuardUserForm.class.php @@ -0,0 +1,13 @@ + + * @version SVN: $Id: PluginsfGuardUserForm.class.php 23536 2009-11-02 21:41:21Z Kris.Wallsmith $ + */ +abstract class PluginsfGuardUserForm extends BasesfGuardUserForm +{ +} diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/base/BasesfGuardChangeUserPasswordForm.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/base/BasesfGuardChangeUserPasswordForm.class.php new file mode 100644 index 0000000..d82c056 --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/base/BasesfGuardChangeUserPasswordForm.class.php @@ -0,0 +1,27 @@ + + * @version SVN: $Id: BasesfGuardChangeUserPasswordForm.class.php 23536 2009-11-02 21:41:21Z Kris.Wallsmith $ + */ +class BasesfGuardChangeUserPasswordForm extends BasesfGuardUserForm +{ + public function setup() + { + parent::setup(); + + $this->useFields(array('password')); + + $this->widgetSchema['password'] = new sfWidgetFormInputPassword(); + $this->validatorSchema['password']->setOption('required', true); + $this->widgetSchema['password_again'] = new sfWidgetFormInputPassword(); + $this->validatorSchema['password_again'] = clone $this->validatorSchema['password']; + $this->validatorSchema['password_again']->setOption('required', true); + + $this->mergePostValidator(new sfValidatorSchemaCompare('password', sfValidatorSchemaCompare::EQUAL, 'password_again', array(), array('invalid' => 'The two passwords must be the same.'))); + } +} \ No newline at end of file diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/base/BasesfGuardFormSignin.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/base/BasesfGuardFormSignin.class.php new file mode 100644 index 0000000..b0a1778 --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/base/BasesfGuardFormSignin.class.php @@ -0,0 +1,40 @@ + + * @author Jonathan H. Wage + * @version SVN: $Id: BasesfGuardFormSignin.class.php 25546 2009-12-17 23:27:55Z Jonathan.Wage $ + */ +class BasesfGuardFormSignin extends BaseForm +{ + /** + * @see sfForm + */ + public function setup() + { + $this->setWidgets(array( + 'username' => new sfWidgetFormInputText(), + 'password' => new sfWidgetFormInputPassword(array('type' => 'password')), + 'remember' => new sfWidgetFormInputCheckbox(), + )); + + $this->setValidators(array( + 'username' => new sfValidatorString(), + 'password' => new sfValidatorString(), + 'remember' => new sfValidatorBoolean(), + )); + + if (sfConfig::get('app_sf_guard_plugin_allow_login_with_email', true)) + { + $this->widgetSchema['username']->setLabel('Username or E-Mail'); + } + + $this->validatorSchema->setPostValidator(new sfGuardValidatorUser()); + + $this->widgetSchema->setNameFormat('signin[%s]'); + } +} \ No newline at end of file diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/base/BasesfGuardRegisterForm.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/base/BasesfGuardRegisterForm.class.php new file mode 100644 index 0000000..7e8e39c --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/base/BasesfGuardRegisterForm.class.php @@ -0,0 +1,27 @@ + + * @version SVN: $Id: BasesfGuardChangeUserPasswordForm.class.php 23536 2009-11-02 21:41:21Z Kris.Wallsmith $ + */ +class BasesfGuardRegisterForm extends sfGuardUserAdminForm +{ + public function setup() + { + parent::setup(); + + unset( + $this['is_active'], + $this['is_super_admin'], + $this['updated_at'], + $this['groups_list'], + $this['permissions_list'] + ); + + $this->validatorSchema['password']->setOption('required', true); + } +} \ No newline at end of file diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/base/BasesfGuardUserAdminForm.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/base/BasesfGuardUserAdminForm.class.php new file mode 100644 index 0000000..b385e1f --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/base/BasesfGuardUserAdminForm.class.php @@ -0,0 +1,40 @@ + + * @version SVN: $Id: BasesfGuardUserAdminForm.class.php 25546 2009-12-17 23:27:55Z Jonathan.Wage $ + */ +class BasesfGuardUserAdminForm extends BasesfGuardUserForm +{ + /** + * @see sfForm + */ + public function setup() + { + parent::setup(); + + unset( + $this['last_login'], + $this['created_at'], + $this['updated_at'], + $this['salt'], + $this['algorithm'] + ); + + $this->widgetSchema['groups_list']->setLabel('Groups'); + $this->widgetSchema['permissions_list']->setLabel('Permissions'); + + $this->widgetSchema['password'] = new sfWidgetFormInputPassword(); + $this->validatorSchema['password']->setOption('required', false); + $this->widgetSchema['password_again'] = new sfWidgetFormInputPassword(); + $this->validatorSchema['password_again'] = clone $this->validatorSchema['password']; + + $this->widgetSchema->moveField('password_again', 'after', 'password'); + + $this->mergePostValidator(new sfValidatorSchemaCompare('password', sfValidatorSchemaCompare::EQUAL, 'password_again', array(), array('invalid' => 'The two passwords must be the same.'))); + } +} \ No newline at end of file diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/sfGuardChangeUserPasswordForm.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/sfGuardChangeUserPasswordForm.class.php new file mode 100644 index 0000000..b9f68fa --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/sfGuardChangeUserPasswordForm.class.php @@ -0,0 +1,19 @@ + + * @version SVN: $Id: sfGuardChangeUserPasswordForm.class.php 23536 2009-11-02 21:41:21Z Kris.Wallsmith $ + */ +class sfGuardChangeUserPasswordForm extends BasesfGuardChangeUserPasswordForm +{ + /** + * @see sfForm + */ + public function configure() + { + } +} \ No newline at end of file diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/sfGuardFormSignin.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/sfGuardFormSignin.class.php new file mode 100644 index 0000000..ef86877 --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/sfGuardFormSignin.class.php @@ -0,0 +1,19 @@ + + * @version SVN: $Id: sfGuardFormSignin.class.php 23536 2009-11-02 21:41:21Z Kris.Wallsmith $ + */ +class sfGuardFormSignin extends BasesfGuardFormSignin +{ + /** + * @see sfForm + */ + public function configure() + { + } +} diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/sfGuardRegisterForm.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/sfGuardRegisterForm.class.php new file mode 100644 index 0000000..6816142 --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/sfGuardRegisterForm.class.php @@ -0,0 +1,19 @@ + + * @version SVN: $Id: BasesfGuardChangeUserPasswordForm.class.php 23536 2009-11-02 21:41:21Z Kris.Wallsmith $ + */ +class sfGuardRegisterForm extends BasesfGuardRegisterForm +{ + /** + * @see sfForm + */ + public function configure() + { + } +} \ No newline at end of file diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/sfGuardUserAdminForm.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/sfGuardUserAdminForm.class.php new file mode 100644 index 0000000..b05a4bc --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/sfGuardUserAdminForm.class.php @@ -0,0 +1,19 @@ + + * @version SVN: $Id: sfGuardUserAdminForm.class.php 23536 2009-11-02 21:41:21Z Kris.Wallsmith $ + */ +class sfGuardUserAdminForm extends BasesfGuardUserAdminForm +{ + /** + * @see sfForm + */ + public function configure() + { + } +} diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/sfGuardRequestForgotPasswordForm.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/sfGuardRequestForgotPasswordForm.class.php new file mode 100644 index 0000000..8e3f85c --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/sfGuardRequestForgotPasswordForm.class.php @@ -0,0 +1,19 @@ + + * @version SVN: $Id: BasesfGuardRequestForgotPasswordForm.class.php 23536 2009-11-02 21:41:21Z Kris.Wallsmith $ + */ +class sfGuardRequestForgotPasswordForm extends BasesfGuardRequestForgotPasswordForm +{ + /** + * @see sfForm + */ + public function configure() + { + } +} \ No newline at end of file diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardForgotPassword.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardForgotPassword.class.php new file mode 100644 index 0000000..408798f --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardForgotPassword.class.php @@ -0,0 +1,16 @@ + + * @version SVN: $Id: Builder.php 6820 2009-11-30 17:27:49Z jwage $ + */ +abstract class PluginsfGuardForgotPassword extends BasesfGuardForgotPassword +{ + +} \ No newline at end of file diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardForgotPasswordTable.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardForgotPasswordTable.class.php new file mode 100644 index 0000000..1d97f0a --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardForgotPasswordTable.class.php @@ -0,0 +1,7 @@ + + * @version SVN: $Id: PluginsfGuardGroup.class.php 23793 2009-11-11 17:42:50Z Kris.Wallsmith $ + */ +abstract class PluginsfGuardGroup extends BasesfGuardGroup +{ +} diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardGroupPermission.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardGroupPermission.class.php new file mode 100644 index 0000000..ccd4555 --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardGroupPermission.class.php @@ -0,0 +1,13 @@ + + * @version SVN: $Id: PluginsfGuardGroupPermission.class.php 23793 2009-11-11 17:42:50Z Kris.Wallsmith $ + */ +abstract class PluginsfGuardGroupPermission extends BasesfGuardGroupPermission +{ +} diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardGroupPermissionTable.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardGroupPermissionTable.class.php new file mode 100644 index 0000000..23ae1f6 --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardGroupPermissionTable.class.php @@ -0,0 +1,13 @@ + + * @version SVN: $Id: PluginsfGuardGroupPermissionTable.class.php 23793 2009-11-11 17:42:50Z Kris.Wallsmith $ + */ +abstract class PluginsfGuardGroupPermissionTable extends Doctrine_Table +{ +} diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardGroupTable.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardGroupTable.class.php new file mode 100644 index 0000000..02faf42 --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardGroupTable.class.php @@ -0,0 +1,13 @@ + + * @version SVN: $Id: PluginsfGuardGroupTable.class.php 23793 2009-11-11 17:42:50Z Kris.Wallsmith $ + */ +abstract class PluginsfGuardGroupTable extends Doctrine_Table +{ +} diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardPermission.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardPermission.class.php new file mode 100644 index 0000000..5a1a314 --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardPermission.class.php @@ -0,0 +1,13 @@ + + * @version SVN: $Id: PluginsfGuardPermission.class.php 23793 2009-11-11 17:42:50Z Kris.Wallsmith $ + */ +abstract class PluginsfGuardPermission extends BasesfGuardPermission +{ +} diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardPermissionTable.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardPermissionTable.class.php new file mode 100644 index 0000000..ff0815b --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardPermissionTable.class.php @@ -0,0 +1,13 @@ + + * @version SVN: $Id: PluginsfGuardPermissionTable.class.php 23793 2009-11-11 17:42:50Z Kris.Wallsmith $ + */ +abstract class PluginsfGuardPermissionTable extends Doctrine_Table +{ +} diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardRememberKey.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardRememberKey.class.php new file mode 100644 index 0000000..c57a17d --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardRememberKey.class.php @@ -0,0 +1,13 @@ + + * @version SVN: $Id: PluginsfGuardRememberKey.class.php 23793 2009-11-11 17:42:50Z Kris.Wallsmith $ + */ +abstract class PluginsfGuardRememberKey extends BasesfGuardRememberKey +{ +} diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardRememberKeyTable.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardRememberKeyTable.class.php new file mode 100644 index 0000000..e1418e0 --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardRememberKeyTable.class.php @@ -0,0 +1,13 @@ + + * @version SVN: $Id: PluginsfGuardRememberKeyTable.class.php 23793 2009-11-11 17:42:50Z Kris.Wallsmith $ + */ +abstract class PluginsfGuardRememberKeyTable extends Doctrine_Table +{ +} diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardUser.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardUser.class.php new file mode 100644 index 0000000..5c774c5 --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardUser.class.php @@ -0,0 +1,292 @@ + + * @version SVN: $Id: PluginsfGuardUser.class.php 25605 2009-12-18 18:55:55Z Jonathan.Wage $ + */ +abstract class PluginsfGuardUser extends BasesfGuardUser +{ + protected + $_groups = null, + $_permissions = null, + $_allPermissions = null; + + /** + * Returns the string representation of the object: "Full Name (username)" + * + * @return string + */ + public function __toString() + { + return (string) $this->getName().' ('.$this->getUsername().')'; + } + + /** + * Returns the first and last name of the user concatenated together + * + * @return string $name + */ + public function getName() + { + return trim($this->getFirstName().' '.$this->getLastName()); + } + + /** + * Sets the user password. + * + * @param string $password + */ + public function setPassword($password) + { + if (!$password && 0 == strlen($password)) + { + return; + } + + if (!$salt = $this->getSalt()) + { + $salt = md5(rand(100000, 999999).$this->getUsername()); + $this->setSalt($salt); + } + $modified = $this->getModified(); + if ((!$algorithm = $this->getAlgorithm()) || (isset($modified['algorithm']) && $modified['algorithm'] == $this->getTable()->getDefaultValueOf('algorithm'))) + { + $algorithm = sfConfig::get('app_sf_guard_plugin_algorithm_callable', 'sha1'); + } + $algorithmAsStr = is_array($algorithm) ? $algorithm[0].'::'.$algorithm[1] : $algorithm; + if (!is_callable($algorithm)) + { + throw new sfException(sprintf('The algorithm callable "%s" is not callable.', $algorithmAsStr)); + } + $this->setAlgorithm($algorithmAsStr); + + $this->_set('password', call_user_func_array($algorithm, array($salt.$password))); + } + + /** + * Returns whether or not the given password is valid. + * + * @param string $password + * @return boolean + */ + public function checkPassword($password) + { + if ($callable = sfConfig::get('app_sf_guard_plugin_check_password_callable')) + { + return call_user_func_array($callable, array($this->getUsername(), $password, $this)); + } + else + { + return $this->checkPasswordByGuard($password); + } + } + + /** + * Returns whether or not the given password is valid. + * + * @param string $password + * @return boolean + * @throws sfException + */ + public function checkPasswordByGuard($password) + { + $algorithm = $this->getAlgorithm(); + if (false !== $pos = strpos($algorithm, '::')) + { + $algorithm = array(substr($algorithm, 0, $pos), substr($algorithm, $pos + 2)); + } + if (!is_callable($algorithm)) + { + throw new sfException(sprintf('The algorithm callable "%s" is not callable.', $algorithm)); + } + + return $this->getPassword() == call_user_func_array($algorithm, array($this->getSalt().$password)); + } + + /** + * Adds the user a new group from its name. + * + * @param string $name The group name + * @param Doctrine_Connection $con A Doctrine_Connection object + * @throws sfException + */ + public function addGroupByName($name, $con = null) + { + $group = Doctrine_Core::getTable('sfGuardGroup')->findOneByName($name); + if (!$group) + { + throw new sfException(sprintf('The group "%s" does not exist.', $name)); + } + + $ug = new sfGuardUserGroup(); + $ug->setUser($this); + $ug->setGroup($group); + + $ug->save($con); + } + + /** + * Adds the user a permission from its name. + * + * @param string $name The permission name + * @param Doctrine_Connection $con A Doctrine_Connection object + * @throws sfException + */ + public function addPermissionByName($name, $con = null) + { + $permission = Doctrine_Core::getTable('sfGuardPermission')->findOneByName($name); + if (!$permission) + { + throw new sfException(sprintf('The permission "%s" does not exist.', $name)); + } + + $up = new sfGuardUserPermission(); + $up->setUser($this); + $up->setPermission($permission); + + $up->save($con); + } + + /** + * Checks whether or not the user belongs to the given group. + * + * @param string $name The group name + * @return boolean + */ + public function hasGroup($name) + { + $this->loadGroupsAndPermissions(); + return isset($this->_groups[$name]); + } + + /** + * Returns all related groups names. + * + * @return array + */ + public function getGroupNames() + { + $this->loadGroupsAndPermissions(); + return array_keys($this->_groups); + } + + /** + * Returns whether or not the user has the given permission. + * + * @return boolean + */ + public function hasPermission($name) + { + $this->loadGroupsAndPermissions(); + return isset($this->_allPermissions[$name]); + } + + /** + * Returns an array of all user's permissions names. + * + * @return array + */ + public function getPermissionNames() + { + $this->loadGroupsAndPermissions(); + return array_keys($this->_allPermissions); + } + + /** + * Returns an array containing all permissions, including groups permissions + * and single permissions. + * + * @return array + */ + public function getAllPermissions() + { + if (!$this->_allPermissions) + { + $this->_allPermissions = array(); + $permissions = $this->getPermissions(); + foreach ($permissions as $permission) + { + $this->_allPermissions[$permission->getName()] = $permission; + } + + foreach ($this->getGroups() as $group) + { + foreach ($group->getPermissions() as $permission) + { + $this->_allPermissions[$permission->getName()] = $permission; + } + } + } + + return $this->_allPermissions; + } + + /** + * Returns an array of all permission names. + * + * @return array + */ + public function getAllPermissionNames() + { + return array_keys($this->getAllPermissions()); + } + + /** + * Loads the user's groups and permissions. + * + */ + public function loadGroupsAndPermissions() + { + $this->getAllPermissions(); + + if (!$this->_permissions) + { + $permissions = $this->getPermissions(); + foreach ($permissions as $permission) + { + $this->_permissions[$permission->getName()] = $permission; + } + } + + if (!$this->_groups) + { + $groups = $this->getGroups(); + foreach ($groups as $group) + { + $this->_groups[$group->getName()] = $group; + } + } + } + + /** + * Reloads the user's groups and permissions. + */ + public function reloadGroupsAndPermissions() + { + $this->_groups = null; + $this->_permissions = null; + $this->_allPermissions = null; + } + + /** + * Sets the password hash. + * + * @param string $v + */ + public function setPasswordHash($v) + { + if (!is_null($v) && !is_string($v)) + { + $v = (string) $v; + } + + if ($this->password !== $v) + { + $this->_set('password', $v); + } + } +} diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardUserGroup.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardUserGroup.class.php new file mode 100644 index 0000000..85fa0ed --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardUserGroup.class.php @@ -0,0 +1,18 @@ + + * @version SVN: $Id: PluginsfGuardUserGroup.class.php 25546 2009-12-17 23:27:55Z Jonathan.Wage $ + */ +abstract class PluginsfGuardUserGroup extends BasesfGuardUserGroup +{ + public function postSave($event) + { + parent::postSave($event); + $this->getUser()->reloadGroupsAndPermissions(); + } +} diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardUserGroupTable.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardUserGroupTable.class.php new file mode 100644 index 0000000..d986584 --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardUserGroupTable.class.php @@ -0,0 +1,13 @@ + + * @version SVN: $Id: PluginsfGuardUserGroupTable.class.php 23793 2009-11-11 17:42:50Z Kris.Wallsmith $ + */ +abstract class PluginsfGuardUserGroupTable extends Doctrine_Table +{ +} diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardUserPermission.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardUserPermission.class.php new file mode 100644 index 0000000..d983d71 --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardUserPermission.class.php @@ -0,0 +1,18 @@ + + * @version SVN: $Id: PluginsfGuardUserPermission.class.php 25546 2009-12-17 23:27:55Z Jonathan.Wage $ + */ +abstract class PluginsfGuardUserPermission extends BasesfGuardUserPermission +{ + public function postSave($event) + { + parent::postSave($event); + $this->getUser()->reloadGroupsAndPermissions(); + } +} diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardUserPermissionTable.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardUserPermissionTable.class.php new file mode 100644 index 0000000..fbfec18 --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardUserPermissionTable.class.php @@ -0,0 +1,13 @@ + + * @version SVN: $Id: PluginsfGuardUserPermissionTable.class.php 23793 2009-11-11 17:42:50Z Kris.Wallsmith $ + */ +abstract class PluginsfGuardUserPermissionTable extends Doctrine_Table +{ +} diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardUserTable.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardUserTable.class.php new file mode 100644 index 0000000..7ff4767 --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardUserTable.class.php @@ -0,0 +1,48 @@ + + * @version SVN: $Id: PluginsfGuardUserTable.class.php 25546 2009-12-17 23:27:55Z Jonathan.Wage $ + */ +abstract class PluginsfGuardUserTable extends Doctrine_Table +{ + /** + * Retrieves a sfGuardUser object by username and is_active flag. + * + * @param string $username The username + * @param boolean $isActive The user's status + * + * @return sfGuardUser + */ + public function retrieveByUsername($username, $isActive = true) + { + $query = Doctrine_Core::getTable('sfGuardUser')->createQuery('u') + ->where('u.username = ?', $username) + ->addWhere('u.is_active = ?', $isActive) + ; + + return $query->fetchOne(); + } + + /** + * Retrieves a sfGuardUser object by username or email_address and is_active flag. + * + * @param string $username The username + * @param boolean $isActive The user's status + * + * @return sfGuardUser + */ + public function retrieveByUsernameOrEmailAddress($username, $isActive = true) + { + $query = Doctrine_Core::getTable('sfGuardUser')->createQuery('u') + ->where('u.username = ? OR u.email_address = ?', array($username, $username)) + ->addWhere('u.is_active = ?', $isActive) + ; + + return $query->fetchOne(); + } +} diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/routing/sfGuardRouting.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/routing/sfGuardRouting.class.php new file mode 100644 index 0000000..c9bc719 --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/routing/sfGuardRouting.class.php @@ -0,0 +1,118 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * + * @package symfony + * @subpackage plugin + * @author Fabien Potencier + * @version SVN: $Id: sfGuardRouting.class.php 25546 2009-12-17 23:27:55Z Jonathan.Wage $ + */ +class sfGuardRouting +{ + /** + * Listens to the routing.load_configuration event. + * + * @param sfEvent An sfEvent instance + * @static + */ + static public function listenToRoutingLoadConfigurationEvent(sfEvent $event) + { + $r = $event->getSubject(); + + // preprend our routes + $r->prependRoute('sf_guard_signin', new sfRoute('/guard/login', array('module' => 'sfGuardAuth', 'action' => 'signin'))); + $r->prependRoute('sf_guard_signout', new sfRoute('/guard/logout', array('module' => 'sfGuardAuth', 'action' => 'signout'))); + } + + static public function addRouteForForgotPassword(sfEvent $event) + { + $r = $event->getSubject(); + + $r->prependRoute('sf_guard_forgot_password', new sfRoute('/guard/forgot_password', array('module' => 'sfGuardForgotPassword', 'action' => 'index'))); + $r->prependRoute('sf_guard_forgot_password_change', new sfDoctrineRoute('/guard/forgot_password/:unique_key', array( + 'module' => 'sfGuardForgotPassword', + 'action' => 'change' + ), array( + 'sf_method' => array('get', 'post') + ), array( + 'model' => 'sfGuardForgotPassword', + 'type' => 'object' + ))); + } + + /** + * Adds an sfDoctrineRouteCollection collection to manage users. + * + * @param sfEvent $event + * @static + */ + static public function addRouteForUser(sfEvent $event) + { + $event->getSubject()->prependRoute('sf_guard_user', new sfDoctrineRouteCollection(array( + 'name' => 'sf_guard_user', + 'model' => 'sfGuardUser', + 'module' => 'sfGuardUser', + 'prefix_path' => 'guard/users', + 'with_wildcard_routes' => true, + 'collection_actions' => array('filter' => 'post', 'batch' => 'post'), + 'requirements' => array(), + ))); + } + + /** + * Adds an sfDoctrineRouteCollection collection to manage groups. + * + * @param sfEvent $event + * @static + */ + static public function addRouteForGroup(sfEvent $event) + { + $event->getSubject()->prependRoute('sf_guard_group', new sfDoctrineRouteCollection(array( + 'name' => 'sf_guard_group', + 'model' => 'sfGuardGroup', + 'module' => 'sfGuardGroup', + 'prefix_path' => 'guard/groups', + 'with_wildcard_routes' => true, + 'collection_actions' => array('filter' => 'post', 'batch' => 'post'), + 'requirements' => array(), + ))); + } + + /** + * Adds an sfDoctrineRouteCollection collection to manage permissions. + * + * @param sfEvent $event + * @static + */ + static public function addRouteForPermission(sfEvent $event) + { + $event->getSubject()->prependRoute('sf_guard_permission', new sfDoctrineRouteCollection(array( + 'name' => 'sf_guard_permission', + 'model' => 'sfGuardPermission', + 'module' => 'sfGuardPermission', + 'prefix_path' => 'guard/permissions', + 'with_wildcard_routes' => true, + 'collection_actions' => array('filter' => 'post', 'batch' => 'post'), + 'requirements' => array(), + ))); + } + + /** + * Adds an sfRoute for registration. + * + * @param sfEvent $event + * @static + */ + static public function addRouteForRegister(sfEvent $event) + { + $event->getSubject()->prependRoute('sf_guard_register', new sfRoute('/guard/register', array('module' => 'sfGuardRegister', 'action' => 'index'))); + } +} \ No newline at end of file diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/sfGuardBasicSecurityFilter.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/sfGuardBasicSecurityFilter.class.php new file mode 100644 index 0000000..2720726 --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/sfGuardBasicSecurityFilter.class.php @@ -0,0 +1,56 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Processes the "remember me" cookie. + * + * @package symfony + * @subpackage plugin + * @author Fabien Potencier + * @version SVN: $Id: sfGuardBasicSecurityFilter.class.php 27166 2010-01-25 21:04:41Z Kris.Wallsmith $ + * + * @deprecated Use {@link sfGuardRememberMeFilter} instead + */ +class sfGuardBasicSecurityFilter extends sfBasicSecurityFilter +{ + /** + * Executes the filter chain. + * + * @param sfFilterChain $filterChain + */ + public function execute($filterChain) + { + $cookieName = sfConfig::get('app_sf_guard_plugin_remember_cookie_name', 'sfRemember'); + + if ($this->isFirstCall()) + { + // deprecated notice + $this->context->getEventDispatcher()->notify(new sfEvent($this, 'application.log', array(sprintf('The filter "%s" is deprecated. Use "sfGuardRememberMeFilter" instead.', __CLASS__), 'priority' => sfLogger::NOTICE))); + + if ( + $this->context->getUser()->isAnonymous() + && + $cookie = $this->context->getRequest()->getCookie($cookieName) + ) + { + $q = Doctrine_Core::getTable('sfGuardRememberKey')->createQuery('r') + ->innerJoin('r.User u') + ->where('r.remember_key = ?', $cookie); + + if ($q->count()) + { + $this->context->getUser()->signIn($q->fetchOne()->User); + } + } + } + + parent::execute($filterChain); + } +} \ No newline at end of file diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/sfGuardRememberMeFilter.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/sfGuardRememberMeFilter.class.php new file mode 100644 index 0000000..7ee152c --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/sfGuardRememberMeFilter.class.php @@ -0,0 +1,58 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Processes the "remember me" cookie. + * + * This filter should be added to the application filters.yml file **above** + * the security filter: + * + * remember_me: + * class: sfGuardRememberMeFilter + * + * security: ~ + * + * @package symfony + * @subpackage plugin + * @author Fabien Potencier + * @version SVN: $Id: sfGuardRememberMeFilter.class.php 27166 2010-01-25 21:04:41Z Kris.Wallsmith $ + */ +class sfGuardRememberMeFilter extends sfFilter +{ + /** + * Executes the filter chain. + * + * @param sfFilterChain $filterChain + */ + public function execute($filterChain) + { + $cookieName = sfConfig::get('app_sf_guard_plugin_remember_cookie_name', 'sfRemember'); + + if ( + $this->isFirstCall() + && + $this->context->getUser()->isAnonymous() + && + $cookie = $this->context->getRequest()->getCookie($cookieName) + ) + { + $q = Doctrine_Core::getTable('sfGuardRememberKey')->createQuery('r') + ->innerJoin('r.User u') + ->where('r.remember_key = ?', $cookie); + + if ($q->count()) + { + $this->context->getUser()->signIn($q->fetchOne()->User); + } + } + + $filterChain->execute(); + } +} diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/task/sfGuardAddGroupTask.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/task/sfGuardAddGroupTask.class.php new file mode 100644 index 0000000..ad9eb80 --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/task/sfGuardAddGroupTask.class.php @@ -0,0 +1,66 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Add a group to a user. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id: sfGuardAddGroupTask.class.php 25546 2009-12-17 23:27:55Z Jonathan.Wage $ + */ +class sfGuardAddGroupTask extends sfBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('username', sfCommandArgument::REQUIRED, 'The user name'), + new sfCommandArgument('group', sfCommandArgument::REQUIRED, 'The group name'), + )); + + $this->addOptions(array( + new sfCommandOption('application', null, sfCommandOption::PARAMETER_OPTIONAL, 'The application name', null), + new sfCommandOption('env', null, sfCommandOption::PARAMETER_REQUIRED, 'The environment', 'dev'), + )); + + $this->namespace = 'guard'; + $this->name = 'add-group'; + $this->briefDescription = 'Adds a group to a user'; + + $this->detailedDescription = <<configuration); + + $user = Doctrine_Core::getTable('sfGuardUser')->findOneByUsername($arguments['username']); + if (!$user) + { + throw new sfCommandException(sprintf('User "%s" does not exist.', $arguments['username'])); + } + + $user->addGroupByName($arguments['group']); + + $this->logSection('guard', sprintf('Add group %s to user %s', $arguments['group'], $arguments['username'])); + } +} \ No newline at end of file diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/task/sfGuardAddPermissionTask.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/task/sfGuardAddPermissionTask.class.php new file mode 100644 index 0000000..9e31ec9 --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/task/sfGuardAddPermissionTask.class.php @@ -0,0 +1,66 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Add a permission to a user. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id: sfGuardAddPermissionTask.class.php 25546 2009-12-17 23:27:55Z Jonathan.Wage $ + */ +class sfGuardAddPermissionTask extends sfBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('username', sfCommandArgument::REQUIRED, 'The user name'), + new sfCommandArgument('permission', sfCommandArgument::REQUIRED, 'The permission name'), + )); + + $this->addOptions(array( + new sfCommandOption('application', null, sfCommandOption::PARAMETER_OPTIONAL, 'The application name', null), + new sfCommandOption('env', null, sfCommandOption::PARAMETER_REQUIRED, 'The environment', 'dev'), + )); + + $this->namespace = 'guard'; + $this->name = 'add-permission'; + $this->briefDescription = 'Adds a permission to a user'; + + $this->detailedDescription = <<configuration); + + $user = Doctrine_Core::getTable('sfGuardUser')->findOneByUsername($arguments['username']); + if (!$user) + { + throw new sfCommandException(sprintf('User "%s" does not exist.', $arguments['username'])); + } + + $user->addPermissionByName($arguments['permission']); + + $this->logSection('guard', sprintf('Add permission %s to user %s', $arguments['permission'], $arguments['username'])); + } +} \ No newline at end of file diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/task/sfGuardChangePasswordTask.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/task/sfGuardChangePasswordTask.class.php new file mode 100644 index 0000000..4bd1db7 --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/task/sfGuardChangePasswordTask.class.php @@ -0,0 +1,70 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Promotes a user as a super administrator. + * + * @package symfony + * @subpackage task + * @author Hugo Hamon + * @version SVN: $Id: sfGuardChangePasswordTask.class.php 25546 2009-12-17 23:27:55Z Jonathan.Wage $ + */ +class sfGuardChangePasswordTask extends sfBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('username', sfCommandArgument::REQUIRED, 'The user name'), + new sfCommandArgument('password', sfCommandArgument::REQUIRED, 'The new password'), + )); + + $this->addOptions(array( + new sfCommandOption('application', null, sfCommandOption::PARAMETER_OPTIONAL, 'The application name', null), + new sfCommandOption('env', null, sfCommandOption::PARAMETER_REQUIRED, 'The environment', 'dev'), + )); + + $this->namespace = 'guard'; + $this->name = 'change-password'; + $this->briefDescription = 'Changes the password of the user'; + + $this->detailedDescription = <<configuration); + + $user = Doctrine_Core::getTable('sfGuardUser')->findOneByUsername($arguments['username']); + + if (!$user) + { + throw new sfException(sprintf('User identified by "%s" username does not exist or is not active.', $arguments['username'])); + } + + $user->setPassword($arguments['password']); + $user->save(); + + $this->logSection('guard', sprintf('Password of user identified by "%s" has been changed', $arguments['username'])); + } +} \ No newline at end of file diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/task/sfGuardCreateUserTask.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/task/sfGuardCreateUserTask.class.php new file mode 100644 index 0000000..57cf8f3 --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/task/sfGuardCreateUserTask.class.php @@ -0,0 +1,71 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Create a new user. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @author Jonathan H. Wage + * @version SVN: $Id: sfGuardCreateUserTask.class.php 28922 2010-03-31 13:53:45Z noel $ + */ +class sfGuardCreateUserTask extends sfBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('email_address', sfCommandArgument::REQUIRED, 'The email address'), + new sfCommandArgument('username', sfCommandArgument::REQUIRED, 'The username'), + new sfCommandArgument('password', sfCommandArgument::REQUIRED, 'The password'), + new sfCommandArgument('first_name', sfCommandArgument::OPTIONAL, 'The first name'), + new sfCommandArgument('last_name', sfCommandArgument::OPTIONAL, 'The last name'), + )); + + $this->addOptions(array( + new sfCommandOption('is-super-admin', null, sfCommandOption::PARAMETER_NONE, 'Whether the user is a super admin', null), + new sfCommandOption('application', null, sfCommandOption::PARAMETER_OPTIONAL, 'The application name', null), + new sfCommandOption('env', null, sfCommandOption::PARAMETER_REQUIRED, 'The environment', 'dev'), + )); + + $this->namespace = 'guard'; + $this->name = 'create-user'; + $this->briefDescription = 'Creates a user'; + + $this->detailedDescription = <<configuration); + + $user = new sfGuardUser(); + $user->setEmailAddress($arguments['email_address']); + $user->setUsername($arguments['username']); + $user->setPassword($arguments['password']); + $user->setFirstName($arguments['first_name']); + $user->setLastName($arguments['last_name']); + $user->setIsActive(true); + $user->setIsSuperAdmin($options['is-super-admin']); + $user->save(); + + $this->logSection('guard', sprintf('Create user "%s"', $arguments['username'])); + } +} \ No newline at end of file diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/task/sfGuardPromoteSuperAdminTask.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/task/sfGuardPromoteSuperAdminTask.class.php new file mode 100644 index 0000000..35ce5eb --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/task/sfGuardPromoteSuperAdminTask.class.php @@ -0,0 +1,70 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Promotes a user as a super administrator. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @author Hugo Hamon + * @version SVN: $Id: sfGuardPromoteSuperAdminTask.class.php 25546 2009-12-17 23:27:55Z Jonathan.Wage $ + */ +class sfGuardPromoteSuperAdminTask extends sfBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('username', sfCommandArgument::REQUIRED, 'The user name'), + )); + + $this->addOptions(array( + new sfCommandOption('application', null, sfCommandOption::PARAMETER_OPTIONAL, 'The application name', null), + new sfCommandOption('env', null, sfCommandOption::PARAMETER_REQUIRED, 'The environment', 'dev'), + )); + + $this->namespace = 'guard'; + $this->name = 'promote'; + $this->briefDescription = 'Promotes a user as a super administrator'; + + $this->detailedDescription = <<configuration); + + $user = Doctrine_Core::getTable('sfGuardUser')->retrieveByUsername($arguments['username']); + + if (!$user) + { + throw new sfException(sprintf('User identified by "%s" username does not exist or is not active.', $arguments['username'])); + } + + $user->setIsSuperAdmin(true); + $user->save(); + + $this->logSection('guard', sprintf('User identified by "%s" username has been promoted as super administrator', $arguments['username'])); + } +} \ No newline at end of file diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/user/sfGuardSecurityUser.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/user/sfGuardSecurityUser.class.php new file mode 100644 index 0000000..9a3b1ba --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/user/sfGuardSecurityUser.class.php @@ -0,0 +1,391 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * + * @package symfony + * @subpackage plugin + * @author Fabien Potencier + * @version SVN: $Id: sfGuardSecurityUser.class.php 30264 2010-07-16 16:59:21Z Jonathan.Wage $ + */ +class sfGuardSecurityUser extends sfBasicSecurityUser +{ + protected $user = null; + + /** + * Initializes the sfGuardSecurityUser object. + * + * @param sfEventDispatcher $dispatcher The event dispatcher object + * @param sfStorage $storage The session storage object + * @param array $options An array of options + */ + public function initialize(sfEventDispatcher $dispatcher, sfStorage $storage, $options = array()) + { + parent::initialize($dispatcher, $storage, $options); + + if (!$this->isAuthenticated()) + { + // remove user if timeout + $this->getAttributeHolder()->removeNamespace('sfGuardSecurityUser'); + $this->user = null; + } + } + + /** + * Returns the referer uri. + * + * @param string $default The default uri to return + * @return string $referer The referer + */ + public function getReferer($default) + { + $referer = $this->getAttribute('referer', $default); + $this->getAttributeHolder()->remove('referer'); + + return $referer; + } + + /** + * Sets the referer. + * + * @param string $referer + */ + public function setReferer($referer) + { + if (!$this->hasAttribute('referer')) + { + $this->setAttribute('referer', $referer); + } + } + + /** + * Returns whether or not the user has the given credential. + * + * @param string $credential The credential name + * @param boolean $useAnd Whether or not to use an AND condition + * @return boolean + */ + public function hasCredential($credential, $useAnd = true) + { + if (empty($credential)) + { + return true; + } + + if (!$this->getGuardUser()) + { + return false; + } + + if ($this->getGuardUser()->getIsSuperAdmin()) + { + return true; + } + + return parent::hasCredential($credential, $useAnd); + } + + /** + * Returns whether or not the user is a super admin. + * + * @return boolean + */ + public function isSuperAdmin() + { + return $this->getGuardUser() ? $this->getGuardUser()->getIsSuperAdmin() : false; + } + + /** + * Returns whether or not the user is anonymous. + * + * @return boolean + */ + public function isAnonymous() + { + return !$this->isAuthenticated(); + } + + /** + * Signs in the user on the application. + * + * @param sfGuardUser $user The sfGuardUser id + * @param boolean $remember Whether or not to remember the user + * @param Doctrine_Connection $con A Doctrine_Connection object + */ + public function signIn($user, $remember = false, $con = null) + { + // signin + $this->setAttribute('user_id', $user->getId(), 'sfGuardSecurityUser'); + $this->setAuthenticated(true); + $this->clearCredentials(); + $this->addCredentials($user->getAllPermissionNames()); + + // save last login + $user->setLastLogin(date('Y-m-d H:i:s')); + $user->save($con); + + // remember? + if ($remember) + { + $expiration_age = sfConfig::get('app_sf_guard_plugin_remember_key_expiration_age', 15 * 24 * 3600); + + // remove old keys + Doctrine_Core::getTable('sfGuardRememberKey')->createQuery() + ->delete() + ->where('created_at < ?', date('Y-m-d H:i:s', time() - $expiration_age)) + ->execute(); + + // remove other keys from this user + Doctrine_Core::getTable('sfGuardRememberKey')->createQuery() + ->delete() + ->where('user_id = ?', $user->getId()) + ->execute(); + + // generate new keys + $key = $this->generateRandomKey(); + + // save key + $rk = new sfGuardRememberKey(); + $rk->setRememberKey($key); + $rk->setUser($user); + $rk->setIpAddress($_SERVER['REMOTE_ADDR']); + $rk->save($con); + + // make key as a cookie + $remember_cookie = sfConfig::get('app_sf_guard_plugin_remember_cookie_name', 'sfRemember'); + sfContext::getInstance()->getResponse()->setCookie($remember_cookie, $key, time() + $expiration_age); + } + } + + /** + * Returns a random generated key. + * + * @param int $len The key length + * @return string + */ + protected function generateRandomKey($len = 20) + { + return base_convert(sha1(uniqid(mt_rand(), true)), 16, 36); + } + + /** + * Signs out the user. + * + */ + public function signOut() + { + $this->getAttributeHolder()->removeNamespace('sfGuardSecurityUser'); + $this->user = null; + $this->clearCredentials(); + $this->setAuthenticated(false); + $expiration_age = sfConfig::get('app_sf_guard_plugin_remember_key_expiration_age', 15 * 24 * 3600); + $remember_cookie = sfConfig::get('app_sf_guard_plugin_remember_cookie_name', 'sfRemember'); + sfContext::getInstance()->getResponse()->setCookie($remember_cookie, '', time() - $expiration_age); + } + + /** + * Returns the related sfGuardUser. + * + * @return sfGuardUser + */ + public function getGuardUser() + { + if (!$this->user && $id = $this->getAttribute('user_id', null, 'sfGuardSecurityUser')) + { + $this->user = Doctrine_Core::getTable('sfGuardUser')->find($id); + + if (!$this->user) + { + // the user does not exist anymore in the database + $this->signOut(); + + throw new sfException('The user does not exist anymore in the database.'); + } + } + + return $this->user; + } + + /** + * Returns the string representation of the object. + * + * @return string + */ + public function __toString() + { + return $this->getGuardUser()->__toString(); + } + + /** + * Returns the sfGuardUser object's username. + * + * @return string + */ + public function getUsername() + { + return $this->getGuardUser()->getUsername(); + } + + /** + * Returns the name(first and last) of the user + * + * @return string + */ + public function getName() + { + return $this->getGuardUser()->getName(); + } + + /** + * Returns the sfGuardUser object's email. + * + * @return string + */ + public function getEmail() + { + return $this->getGuardUser()->getEmail(); + } + + /** + * Sets the user's password. + * + * @param string $password The password + * @param Doctrine_Collection $con A Doctrine_Connection object + */ + public function setPassword($password, $con = null) + { + $this->getGuardUser()->setPassword($password); + $this->getGuardUser()->save($con); + } + + /** + * Returns whether or not the given password is valid. + * + * @return boolean + */ + public function checkPassword($password) + { + return $this->getGuardUser()->checkPassword($password); + } + + /** + * Returns whether or not the user belongs to the given group. + * + * @param string $name The group name + * @return boolean + */ + public function hasGroup($name) + { + return $this->getGuardUser() ? $this->getGuardUser()->hasGroup($name) : false; + } + + /** + * Returns the user's groups. + * + * @return array|Doctrine_Collection + */ + public function getGroups() + { + return $this->getGuardUser() ? $this->getGuardUser()->getGroups() : array(); + } + + /** + * Returns the user's group names. + * + * @return array + */ + public function getGroupNames() + { + return $this->getGuardUser() ? $this->getGuardUser()->getGroupNames() : array(); + } + + /** + * Returns whether or not the user has the given permission. + * + * @param string $name The permission name + * @return string + */ + public function hasPermission($name) + { + return $this->getGuardUser() ? $this->getGuardUser()->hasPermission($name) : false; + } + + /** + * Returns the Doctrine_Collection of single sfGuardPermission objects. + * + * @return Doctrine_Collection + */ + public function getPermissions() + { + return $this->getGuardUser()->getPermissions(); + } + + /** + * Returns the array of permissions names. + * + * @return array + */ + public function getPermissionNames() + { + return $this->getGuardUser() ? $this->getGuardUser()->getPermissionNames() : array(); + } + + /** + * Returns the array of all permissions. + * + * @return array + */ + public function getAllPermissions() + { + return $this->getGuardUser() ? $this->getGuardUser()->getAllPermissions() : array(); + } + + /** + * Returns the array of all permissions names. + * + * @return array + */ + public function getAllPermissionNames() + { + return $this->getGuardUser() ? $this->getGuardUser()->getAllPermissionNames() : array(); + } + + /** + * Returns the related profile object. + * + * @return Doctrine_Record + */ + public function getProfile() + { + return $this->getGuardUser() ? $this->getGuardUser()->getProfile() : null; + } + + /** + * Adds a group from its name to the current user. + * + * @param string $name The group name + * @param Doctrine_Connection $con A Doctrine_Connection object + */ + public function addGroupByName($name, $con = null) + { + return $this->getGuardUser()->addGroupByName($name, $con); + } + + /** + * Adds a permission from its name to the current user. + * + * @param string $name The permission name + * @param Doctrine_Connection $con A Doctrine_Connection object + */ + public function addPermissionByName($name, $con = null) + { + return $this->getGuardUser()->addPermissionByName($name, $con); + } +} diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/validator/sfGuardValidatorUser.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/validator/sfGuardValidatorUser.class.php new file mode 100644 index 0000000..6bffa43 --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/validator/sfGuardValidatorUser.class.php @@ -0,0 +1,69 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * + * @package symfony + * @subpackage plugin + * @author Fabien Potencier + * @version SVN: $Id: sfGuardValidatorUser.class.php 25546 2009-12-17 23:27:55Z Jonathan.Wage $ + */ +class sfGuardValidatorUser extends sfValidatorBase +{ + public function configure($options = array(), $messages = array()) + { + $this->addOption('username_field', 'username'); + $this->addOption('password_field', 'password'); + $this->addOption('throw_global_error', false); + + $this->setMessage('invalid', 'The username and/or password is invalid.'); + } + + protected function doClean($values) + { + $username = isset($values[$this->getOption('username_field')]) ? $values[$this->getOption('username_field')] : ''; + $password = isset($values[$this->getOption('password_field')]) ? $values[$this->getOption('password_field')] : ''; + + $allowEmail = sfConfig::get('app_sf_guard_plugin_allow_login_with_email', true); + $method = $allowEmail ? 'retrieveByUsernameOrEmailAddress' : 'retrieveByUsername'; + + // don't allow to sign in with an empty username + if ($username) + { + if ($callable = sfConfig::get('app_sf_guard_plugin_retrieve_by_username_callable')) + { + $user = call_user_func_array($callable, array($username)); + } else { + $user = $this->getTable()->retrieveByUsername($username); + } + // user exists? + if($user) + { + // password is ok? + if ($user->getIsActive() && $user->checkPassword($password)) + { + return array_merge($values, array('user' => $user)); + } + } + } + + if ($this->getOption('throw_global_error')) + { + throw new sfValidatorError($this, 'invalid'); + } + + throw new sfValidatorErrorSchema($this, array($this->getOption('username_field') => new sfValidatorError($this, 'invalid'))); + } + + protected function getTable() + { + return Doctrine::getTable('sfGuardUser'); + } +} diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardAuth/actions/actions.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardAuth/actions/actions.class.php new file mode 100644 index 0000000..74af6c0 --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardAuth/actions/actions.class.php @@ -0,0 +1,22 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../lib/BasesfGuardAuthActions.class.php'); + +/** + * + * @package symfony + * @subpackage plugin + * @author Fabien Potencier + * @version SVN: $Id: actions.class.php 23319 2009-10-25 12:22:23Z Kris.Wallsmith $ + */ +class sfGuardAuthActions extends BasesfGuardAuthActions +{ +} diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardAuth/actions/components.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardAuth/actions/components.class.php new file mode 100644 index 0000000..fc7dc33 --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardAuth/actions/components.class.php @@ -0,0 +1,22 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../lib/BasesfGuardAuthComponents.class.php'); + +/** + * + * @package symfony + * @subpackage plugin + * @author Fabien Potencier + * @version SVN: $Id: components.class.php 23319 2009-10-25 12:22:23Z Kris.Wallsmith $ + */ +class sfGuardAuthComponents extends BasesfGuardAuthComponents +{ +} \ No newline at end of file diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardAuth/config/security.yml b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardAuth/config/security.yml new file mode 100644 index 0000000..9e9163c --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardAuth/config/security.yml @@ -0,0 +1,8 @@ +secure: + is_secure: false + +signin: + is_secure: false + +signout: + is_secure: false diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardAuth/lib/BasesfGuardAuthActions.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardAuth/lib/BasesfGuardAuthActions.class.php new file mode 100644 index 0000000..3da937d --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardAuth/lib/BasesfGuardAuthActions.class.php @@ -0,0 +1,89 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * + * @package symfony + * @subpackage plugin + * @author Fabien Potencier + * @version SVN: $Id: BasesfGuardAuthActions.class.php 23800 2009-11-11 23:30:50Z Kris.Wallsmith $ + */ +class BasesfGuardAuthActions extends sfActions +{ + public function executeSignin($request) + { + $user = $this->getUser(); + if ($user->isAuthenticated()) + { + return $this->redirect('@homepage'); + } + + $class = sfConfig::get('app_sf_guard_plugin_signin_form', 'sfGuardFormSignin'); + $this->form = new $class(); + + if ($request->isMethod('post')) + { + $this->form->bind($request->getParameter('signin')); + if ($this->form->isValid()) + { + $values = $this->form->getValues(); + $this->getUser()->signin($values['user'], array_key_exists('remember', $values) ? $values['remember'] : false); + + // always redirect to a URL set in app.yml + // or to the referer + // or to the homepage + $signinUrl = sfConfig::get('app_sf_guard_plugin_success_signin_url', $user->getReferer($request->getReferer())); + + return $this->redirect('' != $signinUrl ? $signinUrl : '@homepage'); + } + } + else + { + if ($request->isXmlHttpRequest()) + { + $this->getResponse()->setHeaderOnly(true); + $this->getResponse()->setStatusCode(401); + + return sfView::NONE; + } + + // if we have been forwarded, then the referer is the current URL + // if not, this is the referer of the current request + $user->setReferer($this->getContext()->getActionStack()->getSize() > 1 ? $request->getUri() : $request->getReferer()); + + $module = sfConfig::get('sf_login_module'); + if ($this->getModuleName() != $module) + { + return $this->redirect($module.'/'.sfConfig::get('sf_login_action')); + } + + $this->getResponse()->setStatusCode(401); + } + } + + public function executeSignout($request) + { + $this->getUser()->signOut(); + + $signoutUrl = sfConfig::get('app_sf_guard_plugin_success_signout_url', $request->getReferer()); + + $this->redirect('' != $signoutUrl ? $signoutUrl : '@homepage'); + } + + public function executeSecure($request) + { + $this->getResponse()->setStatusCode(403); + } + + public function executePassword($request) + { + throw new sfException('This method is not yet implemented.'); + } +} diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardAuth/lib/BasesfGuardAuthComponents.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardAuth/lib/BasesfGuardAuthComponents.class.php new file mode 100644 index 0000000..7f1a8c7 --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardAuth/lib/BasesfGuardAuthComponents.class.php @@ -0,0 +1,10 @@ +form = new $class(); + } +} \ No newline at end of file diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardAuth/templates/_signin_form.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardAuth/templates/_signin_form.php new file mode 100644 index 0000000..51ab057 --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardAuth/templates/_signin_form.php @@ -0,0 +1,25 @@ + + +
+ + + + + + + + + +
+ + + getRouting()->getRoutes() ?> + + + + + +   + +
+
\ No newline at end of file diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardAuth/templates/secureSuccess.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardAuth/templates/secureSuccess.php new file mode 100644 index 0000000..e1e6330 --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardAuth/templates/secureSuccess.php @@ -0,0 +1,9 @@ + + +

+ +

getRequest()->getUri() ?>

+ +

+ + \ No newline at end of file diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardAuth/templates/signinSuccess.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardAuth/templates/signinSuccess.php new file mode 100644 index 0000000..e119fee --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardAuth/templates/signinSuccess.php @@ -0,0 +1,5 @@ + + +

+ + $form)) ?> \ No newline at end of file diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardForgotPassword/actions/actions.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardForgotPassword/actions/actions.class.php new file mode 100755 index 0000000..550fa5a --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardForgotPassword/actions/actions.class.php @@ -0,0 +1,15 @@ +getUser()->isAuthenticated()) + { + $this->redirect('@homepage'); + } + } + + public function executeIndex($request) + { + $this->form = new sfGuardRequestForgotPasswordForm(); + + if ($request->isMethod('post')) + { + $this->form->bind($request->getParameter($this->form->getName())); + if ($this->form->isValid()) + { + $this->user = $this->form->user; + $this->_deleteOldUserForgotPasswordRecords(); + + $forgotPassword = new sfGuardForgotPassword(); + $forgotPassword->user_id = $this->form->user->id; + $forgotPassword->unique_key = md5(rand() + time()); + $forgotPassword->expires_at = new Doctrine_Expression('NOW()'); + $forgotPassword->save(); + + $message = Swift_Message::newInstance() + ->setFrom(sfConfig::get('app_sf_guard_plugin_default_from_email', 'from@noreply.com')) + ->setTo($this->form->user->email_address) + ->setSubject('Forgot Password Request for '.$this->form->user->username) + ->setBody($this->getPartial('sfGuardForgotPassword/send_request', array('user' => $this->form->user, 'forgot_password' => $forgotPassword))) + ->setContentType('text/html') + ; + + $this->getMailer()->send($message); + + $this->getUser()->setFlash('notice', 'Check your e-mail! You should receive something shortly!'); + $this->redirect('@sf_guard_signin'); + } else { + $this->getUser()->setFlash('error', 'Invalid e-mail address!'); + } + } + } + + public function executeChange($request) + { + $this->forgotPassword = $this->getRoute()->getObject(); + $this->user = $this->forgotPassword->User; + $this->form = new sfGuardChangeUserPasswordForm($this->user); + + if ($request->isMethod('post')) + { + $this->form->bind($request->getParameter($this->form->getName())); + if ($this->form->isValid()) + { + $this->form->save(); + + $this->_deleteOldUserForgotPasswordRecords(); + + $message = Swift_Message::newInstance() + ->setFrom(sfConfig::get('app_sf_guard_plugin_default_from_email', 'from@noreply.com')) + ->setTo($this->user->email_address) + ->setSubject('New Password for '.$this->user->username) + ->setBody($this->getPartial('sfGuardForgotPassword/new_password', array('user' => $this->user, 'password' => $request['sf_guard_user']['password']))) + ; + + $this->getMailer()->send($message); + + $this->getUser()->setFlash('notice', 'Password updated successfully!'); + $this->redirect('@sf_guard_signin'); + } + } + } + + private function _deleteOldUserForgotPasswordRecords() + { + Doctrine_Core::getTable('sfGuardForgotPassword') + ->createQuery('p') + ->delete() + ->where('p.user_id = ?', $this->user->id) + ->execute(); + } +} \ No newline at end of file diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardForgotPassword/templates/_new_password.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardForgotPassword/templates/_new_password.php new file mode 100644 index 0000000..f8b5594 --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardForgotPassword/templates/_new_password.php @@ -0,0 +1,7 @@ + + $user->getFirstName()), 'sf_guard') ?>, + + + +: getUsername() ?> +: \ No newline at end of file diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardForgotPassword/templates/_send_request.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardForgotPassword/templates/_send_request.php new file mode 100755 index 0000000..a0b10a4 --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardForgotPassword/templates/_send_request.php @@ -0,0 +1,8 @@ + + $user->getFirstName()), 'sf_guard') ?>,

+ +

+ +

+ +unique_key, 'absolute=true') ?> \ No newline at end of file diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardForgotPassword/templates/changeSuccess.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardForgotPassword/templates/changeSuccess.php new file mode 100755 index 0000000..7293add --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardForgotPassword/templates/changeSuccess.php @@ -0,0 +1,13 @@ + +

$user->getName()), 'sf_guard') ?>

+ +

+ +
+ + + + + +
+
\ No newline at end of file diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardForgotPassword/templates/indexSuccess.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardForgotPassword/templates/indexSuccess.php new file mode 100755 index 0000000..967ef29 --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardForgotPassword/templates/indexSuccess.php @@ -0,0 +1,16 @@ + +

+ +

+ + +

+ +
+ + + + + +
+
\ No newline at end of file diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardGroup/actions/actions.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardGroup/actions/actions.class.php new file mode 100644 index 0000000..55f10c1 --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardGroup/actions/actions.class.php @@ -0,0 +1,16 @@ +getUser()->isAuthenticated()) + { + $this->getUser()->setFlash('notice', 'You are already registered and signed in!'); + $this->redirect('@homepage'); + } + + $this->form = new sfGuardRegisterForm(); + + if ($request->isMethod('post')) + { + $this->form->bind($request->getParameter($this->form->getName())); + if ($this->form->isValid()) + { + $user = $this->form->save(); + $this->getUser()->signIn($user); + + $this->redirect('@homepage'); + } + } + } +} \ No newline at end of file diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardRegister/lib/BasesfGuardRegisterComponents.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardRegister/lib/BasesfGuardRegisterComponents.class.php new file mode 100644 index 0000000..d09dbbe --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardRegister/lib/BasesfGuardRegisterComponents.class.php @@ -0,0 +1,9 @@ +form = new sfGuardRegisterForm(); + } +} \ No newline at end of file diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardRegister/templates/_form.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardRegister/templates/_form.php new file mode 100644 index 0000000..ab60fb7 --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardRegister/templates/_form.php @@ -0,0 +1,14 @@ + + +
+ + + + + + + +
+ +
+
\ No newline at end of file diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardRegister/templates/indexSuccess.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardRegister/templates/indexSuccess.php new file mode 100644 index 0000000..8c4ce00 --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardRegister/templates/indexSuccess.php @@ -0,0 +1,4 @@ + +

+ + $form)) ?> \ No newline at end of file diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardUser/actions/actions.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardUser/actions/actions.class.php new file mode 100644 index 0000000..3322e8a --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardUser/actions/actions.class.php @@ -0,0 +1,16 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * + * @package symfony + * @subpackage plugin + * @author Fabien Potencier + * @version SVN: $Id: BasesfGuardUserActions.class.php 24574 2009-11-30 12:00:04Z fabien $ + */ +class BasesfGuardUserActions extends autosfGuardUserActions +{ +} diff --git a/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardUser/lib/sfGuardUserGeneratorConfiguration.class.php b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardUser/lib/sfGuardUserGeneratorConfiguration.class.php new file mode 100644 index 0000000..47377d5 --- /dev/null +++ b/cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardUser/lib/sfGuardUserGeneratorConfiguration.class.php @@ -0,0 +1,13 @@ +sL@DC{H!f+z)UX?dnhWG5>HX*G|XeMNpKvK))p zmLth|8MB_9IU`NHyR+Gul`JO#+EQp~8`|=?fzlL6fs&SlcW443kjqW^1D99QKvP~9 zXyTGUDJ1+P4czZM=D9Pwvyv=J&Mw5-ojH&1ob$cUcfM0s)Fa9qN*}FOHl3&s51(u% zL;mKnGWpAk^f%8-yda931R)~|d{&YKaT7d%U)&~s(;9r5maQ~6Zqt>EFb!?WK`~w5 zbjp23x5LVF3#efkW^HS~kmmb2R8vjOsLgHdKQOy%IN!g0TiA}||GaJ2iz6d-q%_j?`FgsB>=Dh@Mpz@mUfH6pSV!8_Ag_l7ul!NVa7!;P zE~XcywAq*&5qVx1xoq#A8Fe02m0_a>%T`kn)Uu4CMIP=kRmCQtcI=GnSR#GY(zpb} zOi~87)xWKe8?7l-w9V3YnyTF}YUskI($Mx-nsY{NbcDQvGU~iitD(xaI(crTt);4N z)|Q6r4f9H*+ITWXN1Q@X-fC8>N@Ho;q=ss?VJ~r2r3U?0;TK2SNRN&hJ^yahabQT+klRR zOi>n#a(;A#{Dj90Z%NY)1g%(Tn+$8gkB&G$Nw0Ood5pi}9=)2QfMjK(0y7k7ri^T* zwH5l*X~bW1v|^~JW+ATG2;z3c+K#ZY{oD3V&T{O>sPmK{k!d4qTi-D5g?$ICF>5xg zo<*S1j0T67V{88iMmu<-8x_P=H5u>#2pb6~pOsXk@|u#(7Yb5Yl_fC?kL0YB2b!Xl zp-tVG8_^iHj!-H~FI6l3T*ItD30MN9pBstjBQIzLQPCAy%*(Q*O1hNS6iLnUS%SQe(R&Yf$yvX+zOTwam%ysnpJQOFgtx}ud;0hP;nr*quG zh;AIUn+;^SU+@6amQt-(P=c;9f|ggcLSE$M$(qv zxm~27f{=wFWK=#=Ry76XL`_DyjHYE_3I(TKL&(=)_DXYj+R_00(Il%Q71V5A)?k)2 zK`G?387-67${8^uE7^jkm7`nN8_8N1ctJ0e%W7Fs#B2@$76`J=i)u!bd0mw=PU{t; z43l25QNzPAy7HDz(BQ&`*{ts}8`WK;R5vJ4$P0WKLM;obDr96G<@f*y(8EX>*xJYi@DJ;H8eP>ymJPknnf89@chPKU7?y6J zKsiClOL`V*QVy?9A*ZT5pW%g^lqnZPxdjS$8p7a=gWQ=zcs`a3izf222K1TX^=w(x zRY{O?c^#O9r1KfEkWUT^?s>+Ts~KG}sC+rE18wIOUN4vVaz@Unx&jFA(K%iuRL^Tao1Oe01U?p;rlFeocf>IWc-o*^ybr{pCMy*>A^t`0$c|n%s zjF46IvYz1!qJ|_z7IY05X*>wgOro2<%UNF0dEg6}7f9u-P$-~+#upSG@%fCdChR-N z9J<0lq-NDJNQ-hNC+C46l}ru+2Q#*pNJhICG>(dc0mPJv} z#hhGFRT(Kckl|S^Q_d?LyIn4|WdOT!iY#UFIUdF$p0KLcp;;JtjQ``p`0y%ez;5!x?TfaQFKuTwF5wr6~rq5R#wyU zIuK(yBPd7eULilP?s zlB5c!ktkIN-i%;073>7O{8jSzO0~pH~n_afuwvESdEOJZ!MF} z=cQ~$QjvhoT3s&W}G`lijz9P%zoGNJ=%!jHWts4lIM}EAl=0w0c zP;r0}=HW+9<8@sFMO%>y1$B84bUzVNR#Q|Y#C)FQBy$UDda^^_q1GGr&NFUl$q{&&4ccmlQao5Ia!rNC0ovl zh}VI_z?|T7u~R$VK#Gkh?sV539aI&4ytwb<3z_Nzp+~ z1jPhpfKg{u(3nL%S3sJm=-EP`zXhdYKuf0E=_SsCZhPfLRaZ5c2V@1#2*c%(B+0;` zKrPaADZrswUtsUx6j1>NDTon0I&ya}>b|>d z4p>ZHK{D7MSyhw;%n_8VAb>%jp{zSV;CamovRvA1+Vf;1!mL@&->xK|j+6qQ&z7-c zHLqx8DVNhE_>&Pq5t9;itD4oiS;LO~u1Hkn6|lN8g&Y`rd5z~Y1yH$w{pJg>#sX^B zv*VCwi<`{bFQ_>%XC)D|DPXZk7l6wP`LdSfrF>4!D(yPNi|lhJ;b&vrPqwP$qykvf zS)}FiN?uk#%gTdhofQkfCi!fa5R5Nt-V2f_mOCd#s`CipsnU8VXoG`8>~OWsMgUUg#DCmFP=d;issGfT1W4 zhF2a)LKZbZ5wP=kR8~M`$#)BaQPa@Tt{^B2pr%NmJb;8#K@nE?OqSOQ1zl1LVDy(` zARyZBN(dvH6J@C&mIdHIN(N9N2dcMHE(>7#D@ZJ~?UxCkIaEUptjZ*mJ|N%KTuw%E zL6&4yP(aWNVm=FG0QQAvS4Vc~(=o_{3!T1~z55JY5ZEA+#BxsNRXHbviJt@QQBicY zEEM$RfwLP`>fNb5Dp*?*k|k9YK}qKGqOPe5$VNfTNqk0#!vN17SqU0|6~v>w2C6Jy z&Ipnwh#)2;B#NpiNTBF-?tFQ;Ajz3*4vy);)fdMG-i&4obJE<_Z~L48W(rcvOLJ z0Gx69sj~;N66`>rsR3;YDoBc)CTBoe31GP9vXUr(NEMQHy*%|;&1s;U08cI}B6fga zZ;V`)^PolmdsOnBdJjo$=lL?^wa({2O+uOilCr>qQH`)BA!bDh*oB4)%Yd+J5m*leUd`vSU_6QW zE;{XAM9MJNS*;+8D&`hok>>MR;E|%5fqBU0<9G$OuUEtxWw7j}OiocX;K{mx17yni zf-Zm&F7t}suG{4?#e5d5A+XHyG8hIqNe6|XEF+9*ik_2WnK9`xgkoePav8R87SvD$ z2jif;#EZO!V8$h-tY$MBQnGp{2>edq6|>^JhIA3o4(|qPvJMJ-md~mp2&ZyRlK5o- z(>?nY3K=;EJP(O{SyNRoV9Mp30CI{KRYA(QPT};5<`p!z4^IZOOWK!AOwUYC?Tct|bVM^6B$Cq?S~;qrI+!DurP^Wu2g7zEUO`;Gif1Eqotq|ugz-Fh+-N>>c!x4 zzA$1OmmH2WC6TvY46)a}K4kr#w z9iA%|K}#lllv-I8b1o2SOIr1X^0p1;jSA=G0s*~TD5SStP;W$7FBb~z<&uZ?!jyLm z?e&_&B|>lF;-5J;BKSOxL|qr1P=1Yzq$7^Z4;_pXKg{_@K04xC3*VA%>U}oQrwtDs ziI41F&GSEeHYetS=YK>I-uKS`tj+p+UW6i0IB2S4R*^e6Yg7>oxmw3NxQF0{YF3)n znpGq$4@(gGjpOX4IxrIpqsZKVD9eNFd9!9*)r2>8qlw5P-$@a-ya4NuD*#&|3L0x4 zD@~Tu0nwJAhNn-l7Y(G3x4a`GVFfCts#J>H9DYP@qN9 zj745~W^@clUV&u&*4^^n%a*Z(0-4$Y+1CQcNn6RjXy|bdX5F{IOzsuEVO5LxuTrs) z^Nj4^72Rja#^cO+a7+g1W^*py)Efpq=HwetU`4vA8p2zbj9QVTGhUjtogiFo=yQB* zW_)btL)xnMmHLkT_UK{f-V4D+$(a3tE6aJ1B~xZNC!Gcty!t~ z7AXP|F$KqBups8UYD}rjnGM69uXbt;3`3<^vEkLcBE79Jc_I3hH>GiXMrPl>+T8T+w#c9-b0+31W-oLI@aj)FoX5RWyt; z?%P8#bYUeXj7Y}ZLN6WJe~?)cnX)p59s^e*ejbdJzdtnj#p_p!tn$z&?-yJzSaQTwO^CKj5Zh~r6T}}!}KMQ@%*|g4xLwWoIbp~ zSr2j;-?Ui40<#1a%o^%AwZYxzb%pV*LYNBqz}$Q4$kDn1Q(sc-c=;FA>Z+}c9h&o) zr3fxzaQfp`Yc=ivZcbe<$Nm?yd^TkN=b&KE{$HE?AFyhDeIw`fap!Tf^M=I{4>|m; zD-D}7bts*@+_y7Od5gokq*RL3mfGo4wP!V*bkpYb0Q4=_#{hw+8!*MzM-wr1c3TAat^++MBS$4|NX2?^e zY0txu@n`uH7icD&UxOQM$(=##FyA(=GjqwlBDZA{TOeH!HV14oljTI7FANLfu#n?K zsVL@(vV4ULMVf%Hh0HCfn4kyX!Z2VB7maw^cQr6LvPvA8R)k{8;rAo(Z@pOt)B%jD zk=;kYAHz13ig64LV5WaHmAX1NVCl4hVsQ@H11Y6mFF6?uN;J1g37;GGPCBG3rlOSsckQ(HGShvur3C;#yB6pHmiDgZ% z*W`(qVo=`jF9hRCrGe)FveYYzirlie5d7zi(V1*K-Oj()_FdbzKK=h46Q8V(|DSL5 z|4UL%>dF5#^#40bEdJ|vCiy*mRN&0l!frnD*=eE(A0NkE2^G?s=@Upn#~mY0(q+g& z7Jd_Qc6mxZ^Da4L&K)EVXt6^WS^iOT;+KB4@7IVqdz(f`Tj|4~_^PQdz$d^T+V@foSN z{_7_HBZm_}p1pHweD?DF6Wq~?q3hiK0~dh##q|%5j9j*7a@Verk)5+UIrep8Uq9!M zaxoPP6fd(5_6^Qm2ST7~*fs*Cf;5IB44OErAp4!xY^|SzK5170;7Ak-vGz=`7LA%x z+1fu>G0RG&pBZ?=6{Q9kJBPORqgp?QnHYAoZ0!fl47-bt+WjnUXC5gUYK*X7Wm99p zKJWt=YRwvMg7vV?RUb!b``ZpM*)=-C9(W}Hl|VCv54U`*KDyt06Z`@)HP^NDTFHaUgFCR3M19Xng%!QE$a zwt;GhtC$vR1-_6|Pz^&fi4R914FaBX3WwdAT>Y+hW4cLq9@6NDLldJo=^VmgUW6pK z_2Q$~T zpbE@@{8H+5R6!?R8<-(pbgU7eHP;CI)5@9HyL{INxOJ)yTw*pYu9kuZk70nh3bK5S z!K=GIfZI~=t|wQ=69A3h^#QCK-1RO_ML?2H7d_RWC;vy5pLw}E|Boz({J#<}53qPM)`pu6wo@~1me?5@GY`$g!7{uJ0N$rm z$$%7lAVsmk%?Eh!9P3bufI%V*TLLsK(wBd{1WEv~5}v`l zLq!H9fOrXcG~hY9tWKjVt6(#X_xR z$XSa}@L{lMYe5#B*mIISmHmG!x??M${FlVA{h!J8|Sy=c1RYH?NI zeq5REKU$!}rBm#PLQm}X?zLP-{Erkq|B(~2z4IR@SN?lTyP8scU7UODfWXT; z>KNH*w8bAj&`4gyonVY{2f$-0B^?ETS#c@nWDQ~Yk>Yd~fC3TWRB#1OYz0^TGNFRQ zsi;KpDIIQmPQruu_QvOtdZcU~b$|$KEEe*lWrE?gI4jx>ExvFB+-~6uXfB-=fD@i1 z1qISvq^WjF_&jon_yHV+A@Uq(P*ZY8O;wLQN*PrKQcfTm2UIaJycahaJj@xb&yXgf zRFc*Uf(8b=@%+#mI{Xfwo)U3t%m3(`Zo8EKf*9Wa7jv>8^yL3Z_WyfJ%Uu5S0XFLd-;D(F8>d*v2|hs zcH;ao__$(=F3@gA$L@;kyX3;a%ir0;x9LV@B)e}T32?^JmWOUu)M(xxv{M4I#BZw5 z6b-4i-ryEl<8Q#1VIj3{9Nc8Dbi;VKFd^}^n=i+{f%KzvP z_zvm+I@^CjCM5r}z5U;lBL7$Y{Ks0z|4vBBiJ7ceaHT&la6Dg>GDRsHE&UT6`)GUM zW0_jOWNjYIYg?(QC{7^=6ltRyBvb%8OLSu8N62H6t9te1d5;}$JpLa%(9lK*boT$X z*nhIr^Z%V}{=aJHf7V&b{7|L?&6 z9iK-h^}qA^ua^9uSxM~a|0kROufqASHRt@TIC(Z1 z55N?9^uPA>e@euDpV(dCu4BHVOLnggI!VbrJ#aNl=4H`;varwO^dCO|DaskSm;dGD z(Z4T%5!1ZyjsuRycyaVX`*p1sw2kmw3F*g#cecjOt`3R!tv~snEbOZb`VZ%S%<{eX zuaijsz1Xi9(vOV$iirzbFB1L)(0{V9pDyS>oc}#5h&}p0dGsF)cfkyRL=|##sD{W* z6V^tM{IS76E8zf%B7uV8pX*u$NJRh3OZ$?T{&P~x{(r8Q|K()Re=q;biWP(;xnDXJ zUPINP6a80B4OL<`0D^!o`}{|1{#P-V<9qi1$@c$;Z+`GY2jRzV$JN z&71d)?S<#u=;qB6d&egCY~I|C5j2g8h8l#*vw4wsiCp42A%_EkGleTSf(Qxr0)o>M z;|lOk;MINWFvMl`=%3_Hiev(v=wA@|u>U`s;d}JIcJxol-;rgV7TLvhH-Q#;ygm`U z_c>woPXa(z!T%@oE&6}&{_m3_|7plCS@UIY`jgrxA?P=t!siN-E8PVFOZSXel=Ff5BvZ5Oz-}uli~mOB>#rf_fNR0-(JgK zuL}N}(0_X+pfmkP-2c?u|3A6(zu}aCwNdpqrj~zV=-;^|`XaQ{RsrZt|CyHj&%N`1 zCxiZ-73HcM(BT(}j;l)iz8<3EdED0&i^83Grj%4lR*FE$p3~D{6ReA0DE}ZOZJ)PgnUt! zW0QS$I`1DBWyETI2^`3m6N|khd0E^* z;AwJ0pG8v{lIsh&2C6rZg=)4!!hlVkyfn*r3X5F-E@*?pDf+nq=L&(re$p5VEoPVg z(bi(4i%TWjbnZ)VbI`D=1GMg-@76`!;lN-z#SNs=-c#qc0{mt$@<>(~`bZq4AM%ApT3aknVH?>V@eIDO495XI%3vM8GbS}iuTlShoRz@b)3DKt6+!co4pp z(_(Ft#sfXIZvTq?wV`30iZOTBFSkvkm+_1 z&sy{=Je6Ln^uo|V@_i@Lm1c$BIXa~e_$m#CXUh*_qWeQw@sbK`0(Xh?v0C$rkP1$d zTX4(*dWFVu!g!J<)q6F_ZTA&C$RA3libcR??~!nbEBcCflY2Ha=Rn|ZF*rJVzF{u1 zJhu}^RYddVT6Mr~8>R)PX!XYLG{^OyWAy{LT+OuIhiQCwYH&=0!2!F7<1KHvLNK>g z2`{=o11;{Wgh{i6>8oY7oHVlpC(}OS8I0#(i}QpZ;cHp&XfW;184Do)T$+S&lBBgs zxq!>i%Jd?d_;VomYMoBZVT(KIiLj5f>E7q-p|n?nG|N&JTx@(> zZB&n}t-#PPSR!)THv|4FZBOE&aXSckSbo|_wwkR&^6rG{$nrcICONCQvoRN|n^?~P z*x^e6MQnyc_Q<$QNt*J_BO*A`Ht zxUtArRD3gL8LJyLZK{U+ZTk@WY}#Pg zI77i8Xrh^jA__WcST?~D(n;u6t>&DY$KACC2#{|2_U0TBO5_SH%E^K+XlVxU`F*~3 z$^wiGrYixG_`I#SItvKYt>>*M; z4w2{!Ulso#T$HM}M=5d>U!?3KI95g#vo;4vXZqwJLE2?;qJ%okykar>AQKn9`LJRt zlqFbWHQzE@&YZDcn0n8&K5CaABrP6lqq+fehXyLdu4J}6u41Jlj7!4k+gX(aN{n&V zz;Z`H`Y0ViOIBzo-Kn2sHSuvxpIYOEOGJzs;^>joJj@<6l^O-jU2g$f%--`#2GcU($w%PhP1x7v^nfcv7kW3&#{&_ zD`NrB2f~hr=mAFEaoOtgVt0GEet~-6txqLuooWte4nT@J&kY2s0n)dycMp;{SPuH? z_)kuNXA;yft-^S{U#L>!~zmYm|sE6dl z8PYmd0sX>s8B1^xcpE` z0!i1ScNT(0V)hqez16PU14R9N8+C6XiJN*iv@x({AtWlm>c>Ff7ues5f74d+lMps6 z0L0!_!$OOnnhn#1nm9NXqQy?w1qkK*-l3;dKKhmJ|0X#D-Z}qMIR9%lEBE5RPuBh~ zwc9rE$cC3rKSBD3PV_IzV$1yxS-xlgpDg;{kfh#1;HxX;J5Y6S@1tRWptd;0zqilAByetA zClZ^ui*bM^=m86e(<{ncgrC)Mv~pYAdb7;&+!DFrY};~M3~P+GI_o*90fX(P6%{4z z3u=$|Skqx$u;d2pxd09M`rFFcji!Gu_^KvqEF}ooz|G=N4SHGW#kkf$s+n>e`NP{5 z=Rp*~qqI8@TeAKc&~&<=0Yk*&^8)zCon#%$6B z2J9!f&`SVN16kGvU-7BN1Rl*89n88|e{O1;Yo>#fOxKx(;rU>6@#F*|%7)uJ=p_Ha zn!s89-76sI&qUY0C6)iVOj!R1?W}kI!y3zfH@CZPfTT0<#f}ZzIdsE>GslEHRt~rU zb#Mi89k;Lx_#-*(gHI``W__t)%+0f7KZc5G7Qj)%_d$@uO+#EAI2}A&Fwi2Yw`X#E zV&BXJZi)a6Lfz&T6^qjh%tFge9L2SWm3V9`bC%g`fF+}Xf|4depJ_cUY7T`stk~2& zb!QDOuW2E)ZZ(?VwG_0qpr*11UsY9eqx%@8r?C^EL)0FyK7rqGV>S0H zXielMa_8y_d@xOQWeok<8Zbd1nKc=hI0|Fj4*+R;!096FC)t7zy3mI-;JQg9v3nQ# z$Ou;_=i~sd00qcEk;SSGZ^Q5474DlzBX;Mg1dSaFADn;Wh#KDgqXzk+N)(U`6mWU~eMRssXNjULl<^@V$Z8uvAiWT51gtD8phx>24Z4lto2HBgs=|s` zDIb6=RCH+75s!vjoiNO!q3x@JdIZu{$350+Qsld^rFdKH3l;BxesnFKTKE?ip1qn# z=!@N76-@MCUUhWzH=PtG_ea-hiwQ>wa6XA-yL;fb+JuXYfVJ!Gj#J+S7Mx5eW0#Ki|Drzds--*&b> z$mt?aK*ludsL!3-^iHy-Txl9iD*|JhB8P+9jfj>YNj3nz2~J~)g_A&q3l)p|$EL^j zPRveBm!|g5PEPF`+rxnI)#li&kb}}g?Ycy@g(O{t#tpTMhFQaNg2keS7UITFj&lJy z;LQ`N9i`3>zsIj&o`&hX2VR#O2GVyTOKlhgCR~*2CSj^f1^d;ItpMd~!MdZPqZ3oR z`tT4A5@3pMzt>Fe+ckBFP%PF*B6=v|4i2VA9G(|yfTLtgZ$zi9_4T=khgp~HVoVi; z3q1!8e2hHT6k90+U8VZ~z*c=MA#tIjNW}`y7R8|>@9g9dx5cEG=sok1paZ~OVr(?r zL+Cq$&zYu!H`Wf&aq!AB9XW{;#M1t*!p&i+kJvN?;r%u2d5Yw)+%P2LnE=&JBmo zviB6jl`Dq66-cTbM$zmFR79`22t6^XuXttApPea*#^@{GQyVw5+Sr=a%2(fq<6SF| zJ``!EMf$tws7iLD|BaJ9XYVTbqzYgs{ZGh+&wt61)I0yx)Bn~=|J&a%s{pXYm^w}) zqHtETj=y52P4`30m1={#n{y_&Td4y5j?TmP^gR9!%)17}noRL)M}jNT{8}4+Dye>6 zm{8|taT{)hp4PV_t&c`A4ZG9XQSGB>8p=@P%M8Cv-7f@3K>4dwa7IgzwzQC=WLj?j z(K=wLNk<8!kE@93fsyLm1l7~%C@~Nb+psjRmQRx#^XJ-fo<>!1)I5I$_AEgX&!>`B znOLoi(NM=|B``cJ^jC@|F4n$ zPZ68tT|dcgUtcqh($4Kpb3|_+z0#~|WutD%KKIAeQ+svCNZLG5euNMUPbE_q*%ev?cMv>ju9c~v<~;XBY#rCP@+0?evoi@CO$!>^}iC-#j`PE5Bm z&Nh~>J#@psK*$I{cJM^EPgxIg(nBp3lR4#=Yn}LSTk}`&@wC<|?lo-w8Xm7|tuV<> zcn^>>>#c8RFmo8gykWpuv4dd-v{Ji@=^jmI|6z@7rf&3q<|g%KC7~J6(f^+b`~S1N z)YJca`u{2B|6e7uU=_9zI#BY8b`m1nKJ_*edM^LvX_0k`9-TGFq(r$)-IBrK*DLD@ zdyLjNS#73V_Wb)N$-f_!sOl7P@COvq2$i*4)wAOeTz@{pZ4Hw|6bbhH{HLn_AFrjO z{{tp98-~3Uyl;J_=l?`8(~|!^Bg(m+{=fe9f6x#!!|+eGmkH{G#d=3m9Vda6oMGQ;FOhYldwo72_CFYNGm~iDKeU zlc~|+-rUDq${z7h&lZ@n_Zg9|Gn=7a^ zq$|yeP1f7_4mEJh4o%k>N`A?zIgQVH9ksi6ZkiSuaJus+zG5wHjheB66nl-eB&TjT zhkNY&dbI~b87SHFHdlDD5^ZL#)37byuvyvY>mET*Keig^7*(@rEpJ?7PW9Gd#fp^( zCS=S3l$UBFAIOx2B9Pn}@)YBW{i{5RDy6lkSO_mu<7DqVLT$uVKv zlQo)mc*qCUR=S`ucbkJCrpY1uV)-O)uw-aX!fT2&8g{|76TH5r0xRbC9x&$%Ok=~N zHTRZH&%Nn?>A?_n9jh<%CU#2D2mq2ZGh)YX4}LzNDR_{V4_AjZZgfz&}!!=N+K@Iu%HA4qrjbUUYI`O|$MULQCO1*xr4=*uPmpHVQmqnXzdNtpuje zD9K>mI;TTK!2|v>9G;Rve}j(8FLG3bxbV0*y(RY`1;|M`{|4ZC!O93Jj zs6R6NYO?O`)R$%^rZ1V8KA4)G*gG{lQ5xI1bK2dDc4~x4hCp9cju7ands{WlBL;G7 zIVevbcS$F-k`ovN3+{~7GXqF-Hkh2Gy-AiVn90Ctuq42cAwOZXn zCtqGb4ST?vSA+qaI@Ztzs&)xOjrl#{-SAh)4gv3pmAzobxdN}lh1FR0Of~K3`>9uE z`Ni3N$)rw;+#*8MDYFJleJ!YBRcIpBj<=uR!N{%1Ey-5mam=Ek%L}=bp=L zAuK%7UiMTSx?LHKUy-)uG7f_b03;rR41?NwkvOnWSEmi_@hDhvZlLg~?eHDsF1fkA z#_cwFThGaQN_(94+6b%4H?H<5!OUZlHQfU0qkGNF864rri{XVK>?oCNbB12K+AT~13d8n*Y5 zd^}`D;s@1n0L)9VN`qjnB^gLE$F-NgBMFX%@(^{!j-g*)Ch*ll)|MudVQduV1%YV6 z04lB+^4+#eS#Km7bcxl0n{ty2ricr6c!~2Mc@$u$^FLy?CI44O;Cu0Z zz55@Zx>0{IWVWJ{Ie|8PaewY}d^Cr~{Dtj#_t;Hq%o=b@P&zCHr)7#d1Q0qNv+fDy zp(FelDMw(*{oWB)l=)nVsEyeD(adq|D;U@Ug`3FoO^ojzV~|0}c8VPIypD^*bgI0Hj__X;WEkis`aQMkRa`iFaMe6U;_E;Sf` z5XoiL6SyR8ZisWaR`BFde8m}YX(pT$R|os0$R z&Q54cn4FjsvRQUWNEjAnP85oKrkD|~;4W$y7FY_EidDrkw8b5vhBy65v<-IvD*`(z zM(s#Av~4e2pp28_hI6+l16mYFl}KRzvs5--j7&U zl6$JzSJ2_Q z5{^=a#!bA~L}{}0J?7jTY7~q6re=YR2M2>8IN^{P|6m>eT{u*oe$GADtLw&VMYJ-F zt^#$=W}apzuF6|?r^VI)pe8X@J_*NE7?K8BvOb zz&6tUFg7O=mcs52Dk7+M6&`mJmfxrE`nBCQGwcMjLlZgz%$lkZo&SJ8Hr3O11In&* zfFqL5dWXU{n*J9i^KOoRchdjF9N%*PD=+r^zdikL{po+s3}Mk|&6~}N#+4D?mx7+y z_L)CB4=rh>m#P&C;(6yOWpe@1e#y)-6^IorIvo+4nDO{3DzZl$N9e8?r;hn*I}I1P zSFc;;HJ+<A~Nv{fMQ-0J5oNQXLH>{ofubNu3f-Lv?Phbcm3c+d1`I|@&=pg?=^k>8Szp^Ct zmC@+J)(UJVna2`V5Q`%GUrHijeS>#}YxLZJsO`DyH>Um9j{gI;)y*2t_tseibmae8 zA)NmgBtVb<_xS&M=l|moRIqMEKorTYTnczo5GM${5?B`WSnh`A|1=V8#PKd*&&Epq zf4m^J?Ehxup8s!c)*mk<_Add;FR>pqNUpDsrlg5~XEyD~mp!UFb?HBe5!5C9%YqP& z|IW$1`=5LI-%~siyc3y$?w03yrn?F7e;f-g@kN<$tGh)v>vNHNhI_0pdxl5`oQ8xr zcSAwVfk;vRwL`vG%?_DKgC}M@d(=b(U31|)I;S%y0f_f!pI1xR2G#bi*uG1@17~#f$2RsX95nihLyw0 zrN0Vh5~e@1Y4l46MZ96sQ5|R`j6AoRD&7xt5T)6u1QLz;GNO9x=REWWvc#itiaUF& zAFS>EA4RSe&At5q{4b8s4j@+;5ihG&cH4H{-Fu1MooLN4v>PcJYE0ECOa3H*ZL7@K ziruuvftwCwcp+l^mVOCvY8>mcZ^9do7wH7xFXGz<77)E|0C08@)&prnctLA{RKSK6 zIHU*|6KJPq+C!Ad8^IL9Op-bE*ktwj0^C`8HnzC#U|Dh|=eRB5gD_(C2zxSvb2ATe z+c*I)qaP;@Gz@ZdH3m`KdD=o1tybg&#H8mRXn|A|M}UHR$y=Jtg&-C!-n!^9=*Y^a zQzNN#90b(w=VMCl`Xxt;Kw7pok_GIFDA5whto(VDwlJe)S%ePt97=DyTy1EXb-g|C ztCgDD4xboOZAag3mZgpzc*h`Gx`<6d1(d|j*{~Z-mN1LPw<+QaKah6NPJ?@gNW3@uXex@#L?Z<|2|281QQ5(l@Z6gFbYL`uIX&X}?eXVXG-EC*3 zMtsFaZQV3&w~F1^=IXSgw#KPu#i}a+qS(L97t=Lr)ap11?ou6X?YElcs$utY#6S%U zrc@e8F`nYfI7)}b#xvq?*53nZWlO^(;e%KW)JuWjH+VsESGvDQdY;(<+6VBE#Djnv7kf5VvGDy#w#tW9DXbL}?ui zhzdhLpP*1T<7}Wg!?Ll@AYy>$*2-4>{G{V_n~EIZrAm!m3_wdQb8znS5nFR{bHqVT z_~sxje5L3=I)YJr+bO~S>7LIFHKA5=|1&SQ-v2E0_W#xc|DPAbq%&pKt+QGB)H#HC z1gBU>@ab-P!6n5C;1W67`k~_@dSZ;+NayZpv#0x+%F46>d;6rV*m9`m|SE{}j~!=nz+f z{>2R6LjO|l{>Sw||H8Iz6eXY%p_NMTMk2nw$xkCALGzB~)F8h|P7VBRa9tD5Q_udR zYN6vm?BXNPG@KXS?9AA{)78VT=4L2{85+=%qZ(`ivP z_IumzzRmc^qT#*y%dsg#ue3%D)J>GUAmUIIk>~SxkDV7dK`Ki5qL@n(9~n7CQDKsi z1=l2UK0T5i*|Ep0&FwL2M@~>5e9T|Re!|K=AK({KP7=9IdwT479rOS0*g(x8@M;CHSD27=vxeqd|JDjH3KG*9ciy>@&LV0kb611H?Cc;0l_ea5n;L91y>(O--xv2!NDGL7w1gidC8Qe! zM7orQOG$V4C8Q+;l`iQ{X}FYhcVDEDZf?%Q^L>85wPwxyF?-gWn6u}sefIlxj?5S7 zW70vh@01HTtd0MT3o73Q_yPl_j_+T7DJYpGJH<^MglBg4%p+sP?xQ6+m}8wV^Emi* zlokKuB=-GU%F@KRD+&slAZeZ?aUWPbSt%B${a}%HGTdoe{cy$cpubF{8!_T}*3_pk z@iT<4q3#@BY1(6ZfTtsfM{5Rg&z}0>qFG?k`Jb&7&DO3JW=Zr{oM*efNcUVL2SVQZ_{nd+SVkq$YRQOs{_9(v5R^2Sk2{EBf^8b z9)2xuWxVVCIM(tnhlsgpe-JKQAVu7sZS>1EvDklcv>)giV-84appFss#JoK_Wle}$ zT|bX4oOEvYrF8nTG4`nd4EakY4>%*i;XSsG8MAW|K;Y;cVAsaqkbsQmT0L7F)`UgnQ;FTQAA;bM2GhpQ_sdMl@4ZAtFs=8u#?<^0V);S=tA ztQt5Sr}$B%5~}uUWXc)cqON7vyL~A}pJO+R)tYShu`h(^^y($F+_G5L=zEwFc6cuF zY1D3okpv+FgW#WbsMB0mJFdfI{P9>?jZW3&O3+k)bg!}t{z(YS ziO>e~hsJnaqSy!K?}=g+=RZ`5aW$n+@-j0_|D=*W4EL8+JI71ThT4K1WpJdB@R$6+HLpK%0D#^LI#S-(=$*0PHa@dGsr5l*M}RCoWSr`zIM;|q}< zcGGuHe#@l&PjNcVIab=|%pB%%IPkL2xSlV==bk!ncDKAA7*V_)Q^tUf09iZzFz{aX zatGl0W(Sfo2u5iCefOwA3?eub?O@2l_a!o04{u&7 z5BEO*H6<4>-3rBDN*I>;DzQKAq~*d{Xd<;JDcdfTW-4yl>8CLrS@SCz2;ilTniM0% z&|Rsv`!y_L?qz&+0o8Uv2hWMPS$yv+hX6cN96z1nVlX@lsXO`A(dbI&gA=E#5eaH@73>eczobGbehQ&5O{@@kxsA>%IT@JF!G-8)*HJ~IU_&&Xlp8#uo#J)vJSWcD7Jx1 z3Cyl3U3ZkkIbdV7`PD=n?FYm!YDr9kA zb{>;y-3DLaK;M0`XHqowIQN&Q9bt*o{r4@KzneZtx#6|1O1PTDin)JM;oFxIFy6Hy zi7y=4Rm4u02M=n(3B6CFr1nGpT>#60`4a!YI_W@s&^bEqwinQM!@H@O-kVaUu}$Kw z@`T@iMjr>kJf8ze6wQFO@?j2OA^`^_Ao3za&U`+YlBHEy-q!e+*mKk8Z<8DH<&&Er zJHNTYq_l6K9M_uf08LS#Hhsb-;0~%>3d9`CNIX+(Ad)pz__u*>`*z5<7BZ#`%zk^! zI(`(AjCG;%ZV!Rmg1&!wNP?zS*f=Rq_w1Z>Yl64uBpx=ocb{#^-t9kUUSCyU>;o`6 z18_w@HmktOg4lkQ;RR*+JOZ_@b8GCJC(LI^2bOd$P1N0V6ab>Qf)LKc-Q5 ztseQ453%OPhaYCIX19`$&Sehh@z$S|mbv}VRRxG(A;E7s%qUL=9y4NJcLKckSK#V$ zw8*8yat?-zm8GFlgb`|4OBa0yn%-A^-oCcX*E0 zt($z8!Ilp$4bE!LYkz7o|A<&&%2)FWeQop4((?VIr9JTuT~#I9L;1zE!jvy`(5*`< zb%z{b^ZHSR7xe#Bczq{?$sOwhz6!~^HOmAOhBl1_+w#P;G@~(vhRt@#6x(%Y2KR!a z!VXqfG%+(g65nXpY<5keII{Zc2CP1(9>fRj6DB?u@NHpMytqopJBo?TgYSOpi z2C7Nnpp}uN1vcb@)G67Fmy(XmCmpbN5%50^@>A;Sx}>`sUh9Vo6!@L++@t-qhiUBgLWa55u@$`4nr zh{bLBzANXso4EIj?rHs&QvCmwV-8W3s@Z{(dGV=bTUz`Ci0`By1zrz}mHPtMnL&da z=3{r4*}=ixMafZ$&uf09wYEj+G=38vI3oVy)>I~5E4V-X%r+}K9Q(a?e>kDdir!aR zl3#is{MZt>SihyWcYVwiKGxuG}?{g zOTi8#=4pJ9c-?+)LBU;i8ZO96GGZ4G3Krj?!_S(v~j{*RbgfEab2yJb`2 zGhrq!EY+(%>4qpR<;hqVt4}><%nE~|6(Bb;VSK z4~aW@+G$>HddA<9lD5Y<*1eiWPvc1NP9Vui_PQ^#FXsH3h|t(+#=3+UQNpB#d#n87 z{O-V07pL=qn+KN%F`wSu+>w>B=vLFzMub~dNB#`I3$T21vilGwWi|IGOq@fM+Puz3 zG*j|6v=6r{y=J&wn@X)ei~*F0g2>*HtjQh^`zt?)45_E^w|dGuH*8}GW**lF%+ zqbJr&Gd|4Z1k*a(a37oqTBv|Zyg{Tb3 z*u%k$=@}R1D`Nc3c&nMcKTwf#T})f0xyZa+>a{lCy=_PYl1edSDryhhoCbJ1OK0VL z5XB>2KEid89r~J^gLpPO%hZyg^1c5XyC-!#=N}37cXZ4LeE*0&d#9g?S#DYTyrQ~Y zXp*LVVMlM}@sh)*F--M&xuQmHX!cA#RdSg_qs6kS1~a#-fh&{4YiE~9gV0P>o7DMN zN)&CFL3;5FXqLBAY-egL@2cfq6Oj@5HNkO5;{u*6*ws8Pk1o22ZZZA*{RH<5;-chz z`4ZP;OkMtN#e3o=tcT4~zuvjMIDvYMll_TxYhqlz@@a=GksVL#12IwpzDZ7QYQmz zi`w6Kox!2j53BU?*q&I|mL7}GhigU+In^MK;^EMropu=i-YE?a+B0xX!YmC$wFcaY zSBIa47-0Var{{*V+9u=0JL6(jhSD};Ges{LYc-HP8+gu5-S|SZG3v*m1Lbwqa&y#? z0cPi4+=}$LA*uC}%hpfDgQf(Q(buy79Zh%I+ZkCaTx2s$;j#wpZ%f?_3m9;hsXTAM zG^HO*6~*e2xJk1)p|_n;)Boy`$*sAH)mOu5&+eCA)Bo~mZj{%fPQSNXTm^O(s_b%s z{W~OGfF6SYG-PW(qHW}1v@{e`p(I!+x9BloZ!=KX8W5PtNU-SHy;X!|uUfts=7_6W zH}eJoj)a8uYXE`+9G23-T{6_B3j=#QNr2 z-b~&k*hD?8AGTyp)L-ur+py9huMu(c7F~+Fl}v}! z+^XaqPey4yh5B`$gcF4t(Iq)#{cyI=mUgA_Ftx|XvNa-lY35BZmj_xPC>L%D)y!b# z8|R~UzxH_Io$6@izUj&Jw~1<(H^brU-HEbY$;J(hS37cS(<%8Q{VVHmlmmq_SD)#G znC@X#8}noa*J`dNDE91mXxtI`CU>Ro37gYWWoju)h4Ig>l{a%j7#fOf0>gW1fm(8b ze3gUzact2Akp3pc?3c9hd{2-GC8Elyafn%}qWGc!O0JjJqgXbW(Hpzt(b!yS9aw~syjk_NCY{-ndtmjL!MT(}1Fo%@=yNq~w zzsy*Mbpw_Vzm#0E#vnpkvkPXOQ1*q-1|NRb&}mbAHv2s4a4ZPL4ti~0`NY4@BeDs@ z)<&E*V~M%cbrpA}iG=)?%(_U?$g`pBnb}#Fr+e<|NZ=1zY4r~_Nhbd>eAwJp1^W15 zdV@T!++AulnN4R}RhrlzL#%JfE?9kqVs)`onJ>Ss*(GuwCcdC9ST9Df_lmv|r4TqN zzn``{joDM{;>wO4JY`*rBb#1~{W;?9U?YoV3kKGmYnfUihm9Ncpp z^Y<@n(XSnGwa>}CYeyD$*~y=_{22>>C>FmLwwH{WaC(}xCI6TW@9>OsCRrSR-qINH2CQ!XU)e)t6R(nASO>&r?bh)&65(2nmk%e)i_m$- zd`&$)ocR=6uDFUL?ey#=-on^-eg4Fx96_&wAZd(%7|DDln63=T*4NAbl#R$RdhN|K zKK@qWYo^e6LUYQ1&&tGvPoW~ahrN-;l_J*m?w`Bkk22MmpjvVm%Agq$Z1-)^VF$~J zDLGl_Jmu-v-A0T)**I%6mX}^2%b>mmcG@D{%Mb}!R6kh-+CtcYh1&f(ky&nf=vQn1 zA$gQ*nf8xz#>sE*nHHW_Cb370k1cz(Dy!()w#Rpp4SsHS&Hwrl$CJ}Cj9enx;n{ed z*f^Oh(-TUXrNJ8J0V6k-}9-Pz-**%Z@vDq?X6mCIwYy^6o%=e};6JENwgbnipET&nIqQ;VU6c~pk^V$!?UCg(Sq8I25) zRg3B^zhl7EWId{`I|1i}#-~!cUl6WPiJnZvuyE+m?(!K& zwK-4tzHIW$$V)=i*n6^iDZbDaT-mqv7MTgsO7DrEBYNs1XkNok!VRp_y!PO{DjNFc z3@4_2I}Age0Wn0fPi%UMmp!-4Ir-myvOTzTOlkJpodxB3oyiyX1g-sMp}&>2F^)+dslv`1d#lS>L;2=A zG83oo1?NVSaxi=eaBZ)xYdipdxAwbb6KVEoh|iQ_v6f`^mzIsr|0Vr^DxfO#5{let)De7 zcZw`qzb`_usAkW7U7$azHcZL6iOx;Zw(W}>8~H&FW|2Yu1Kv5e6#-J!!oj* z23XoRUCotfR=EUwymx2=8{-mkC;vfQB4K%Va;Gfroh1f%LVnh^hNXaoXlp zWs3pie&7?}F_8nX%T$DTxgV4W0M7U5dqEjwWR`SumTDdpSYC{bu7zv^Ca6N+5KDwN z)z6x)BlS|qNg+tz%oBl-MpRy#A&+g-TqFdqcezNifyAsD$SH`Y+bY1PHfRg72?yO1 zg9%#~tQvlva3iU=sEJ?#B92pVgbeow0D@Y-(`SP0TiP; zDlaVq0zV&u7z%*z6#lVlj+>;d!k|+j=ka;S0cTg>q2s%4@E){<9x*?AeTIhHLQtnI zCIu$JYGoP|;D5aUYKLzB_xjirutO?+vnv5YUKENzcB&yEe|Zyj?$s>7y|Ah5jJ5O;J%bjeHj$T}sU(;VhZiL-Pg z2It4E3iZwW%EdiUT#PHeOTLhx^E?w)>AQGHyE)M8i-c{Y(Ffn)LH*9NAeSY^Xc*o3 z@+HkJkS7XHQOZT$K&9^A#1E31-B%uz)&$)e0s|X}l=yR4;nep$gyRu>?2EcpZTHng zu`g()1(gMs_|~@X2{s9w$g1f=5Hr%E7UV$>YcfIm%^>i3aV_itN{^nmJ>y{r*^~lb z?RtiwBcZVCp^!_+3r3@KIP6rW?Op4gRD?+IF5}4`MDqqL>LAE>`|o8(ZMK9YcrX~a zWAH}YO9vhFg6n-Dh-z@Bx~L@bCz}i^Vm>Jo_!cmy2|_R5-lNt8nuBge4uai*3EuXS zhg?P;woJiyiF1Wx~i5W$K&3KUi zRDY7R``RnsPIX{?zvHYcV5m6nxr`4ojnpjoItRMkKION|7$OerF9qL?>#uW|-7T%Y zIrpC<1}@Wsrj)?f5uUuAr-PMA!LXgXjYd-Fw&i9|CTc3lOd~!N-PR)MeIG#}V4N()ST2ph~I<^@j%o zFeEPnuzL)+TIi3q-rJd$@QyAMUJtfrsH5+wPf=OF9T*R>rUO0*xFy0}7|0_sEXiyN7;k z5o#ru)=S334fvM5D|&SCe)HjQ0i+`x*q;U zPf$p(6womRKd@aP9hY`Lh46IWCf=Wc&rveL2gkL+7pK1J5Vw0n5OA?f34O@Qf&>gQ z237f$oln_#80YbOoxQPj4cH(591ICUGE60N@@~R6jwb_pkE?h=>z&6BA}-yqbJupH zL=qZI8tfnNph~5GwsRje-;||q=6?R_PYVMW!6kiderafxhwO3{1|be-PxQG0ZJR?b zhNq_55vFOKvWVTw$Y|Gxhv=6NGdI1qL5GZqorlYaa~Zb>-Ghz$ft(?ij>dCU-|tE2 zBbcu>aP{zm_o24{p$VSpS}X-0kL&0CzE=NT2uCf-Y`Xseb9Z@{c^y0JucI!p@0BIa z{Fl_JHoAB4Y!i&H8e!k=^I*2N$f@HRha{F*?Pb5gc`{**ztdjeqv~xlmq^45Gq@9i^sLqD?u=?9;3DBZrxap7hQ}y+ng;b> zopUv$h7-YpWrC{UGY67rDgToOtErb=2avb6>j>j4X`leYo9DBF2)S8iZ#llBt8G1O zWNZds4Q3_C-)EyY0}~;K7e{HJ`%^?x*N)?rgzGfuDy|lc_-ULMvM7~M4f3DwF1>tM zl#g%RVU#+aEDc7b=s*6KhJACBeO((sjrWz{>k8u}6ZZ!ZOZM3-M{-v z2zaf-Rp#bWAQwHU6sN!LG4{DuM4Innc?gYqbSnoWq#;LPrQkc7;CNp~nTKk+&EUZd z+taC_EySN{($0gq!%O)`zy7cY?LL_r+H~HmkoGxgb`80$%G&gVC7IpqPB1nzb}DuK zeYl+h-z@9DtXcP;kV5v0K>Y&Y@vaZ(o9+0?PFSBl(V;6!# zRtK;_f!nKiNm9Och-()KGvx9c##Vjli(1=Gv%qSPJ;oAaKr2v#j_Z^siq_lSB zy7wLoEZv<#K@Bg#*F-1a)%)Sf+{?;)5abpGkjl$;LTbfI)Fs;Yjq)#V0%^+vU0P~% zYaq6x;~rgivc9MPYDhA({~l(3UM+b~Ny`3ooS@iP;&(LjZ_814+qRb-0s8ell9(1N zM~9}G`W97*Yo~Oft+~2uJC%IYc>GdX>XBESPDA;Wewn9YQi?c}_O!yq!b0}?xA0Jd z#5cZQH_wW81pbY`lj%14sZH0u7nX@1M{tT!cqW?9?`YPdX*zK=9#R7#T^x@78QwGp zO2HeutFTKvXpO=eCd?*_s?;(S36&2s+6@Rul#lQ3LEh(Be;<=53Kf(xuBUu9M0ofo zYDq*&OVdlWF;uR?NHHmPJyX411JUm#D6g1ko>4)F8>Twp720!c^NO~( zNi3ds*+zjcHU*-pES+Q&Tx`2~XmDy+Q|;SPLjo43Ww#6{bjdN7Bz}Fk42n}=_=8nh zId>jjzvM|-Jcsv#XxX)v)Uj&TUy6;yzrJ;%6IC&XD)rRBw2Sn`Z{-b_sed#t>U2iT4b*&wj zRoHMy68?1GnXCBpR$K^9GzORw z-w>MOP?q8i{#>jAH9vy78KQ+5>Kx?pginog6R$QJoN&GpwbU|mmN~Ro3^{dx zPVhY)`-jb1{_)5tw;+?DdJU6c`Dn>2TV%)e-MYD8sPNLc@61;b@r~|<`_Lq#e0z3t zLyidyc5^fIsZd$|ny&Xmp*gg&=UlBATI!R;Db;`MBX{kYCC6H@{l$!=G!|N1pko

D*Bo*vv&^lpq&#IKU9K&aj~63azk2k_S3Mx3)m@qf>c^hP9!5&UzBloeU`gm<3Y7jJZUC$h$9)r zeq0)%uuwfpk6SwrY@fp`gw}+G+CxN`pEg#~1b`YpZOQ84X%!Gvw0vIUOh><1fO{e+ z`wp@->|!d^+&&UL>8iL@W5TZEecRFApsGA%P8yPT6MVX1yA|Gp zTVAtbD)0Wa2J>|YRg==#6}|Ck;1c!$n|LNq>7A&#^U?e?gAz8Y;gNmru>lj^r|L>B zhTkOEZv%H<+hOP>zYF9kYlz#>_SRpJRXhARN3XshH)FgGyLFQj5x1dAo|uuvEWkZv zj$61~H=7dZ*>2hRgHqv2mNLcEEBlCT_OyziO1`$%cf6aBQ;tfn|1G^Lgu{GnC%W3c zCqqiBU8r>J9K#Aj8fUN&I|zHLYECm%Dmlv>4@aHYPS;yj$IG-3dsYRf|F`46OhT4V z&a1b#^H!ygOX66PE6svlq4^?%bqO!a$a-E@Z~odO(vk2FA@)DzFx5&ea||mw;WGcI zJO7`c?p&B@YZF-gLrrNHtyG=n`paqMsozeuMDf^3vXO%D@jrF=)XFv@`ldpSrCE=N z?(W+1aEm94@*wvBQ}VBD)h!C8WAPub_gB3TQTt3S81YR@0%1xH8hHD?CkvN^O|`BA zw8V8Mw;D?xCR-!9ahPv?YR}8fztF|)O&s3^sMXts3qAR1IEB%lUm2MHY#CQkt+BI4 zd+e)W5)OqG-M6K>NOdjwH%|u(q)cZh()zw0|2$1+NHZ#F!N*!52(r>!_be~PT>a~k z@93A`lNEPl$CQ0iQ^U1{W#fNWc_;Cn%J1a@#hN!gpSe>o#? zN)Z3Od?RG3QQVwxw)>#>dtmd?ja;V}+?=ZP?%;Z-zc9^KiTJ@wb4fPBQ_e55NnS{c zEr5Cz$L~1Zi0u=zMiNPGx2OY_dF|SgEdQKT(!Y|kf(y@2V@=Ne*V*5QPsH7WXk+arAmhm7c6wX`(!0o$B$V>=%UICLTG#Ha^x$Q~ z*7i(HbWI$sL&uz+r;rLxs+NOxJRaieaFSc{=LfQG>bE9O0c*K>LqFHWE*|Wsq}53m z)8?dqxxgP}#0xW2Q>jKYG2L((qH0P~BffRFmG`$jFQ|6vyKlP`Ae{8nuB-aQG3w)z z?fj|e&B&kCly^<1NWZnw7-OB7Hr9zk7mHP@_Zv177O{O8&N&5UH^=k2K9CV4-mIMhuMa9U zGvS54%P*!^z`ol5EmOj`dr84@@TSu(e8x#K7WZpKviha#mjQj-68R9(K2? znb7Q=!h-X-(tHmcfZn_(A$@iy;+v~nd{stF*Qi<ggIS>h@1MDiEhy^6kM&XkZS96Z<8$TD4c6Od2MwihbgLgX+sP58&{;& za#8$QZq&2({p;w525R1j5#6m#{u_TkHy^)?o3ha0F=h~D%8$V1WcE_AS-%kKKk`xH ztX`N~|IF&;CFRGw<@q{aFf-u)9&r*(c~Oo<_AT6z-(Vp?Rmdh`GGaQ3cQD=vyRauS z!P3v$qWrg%!V4~)vYgi8F;}GB@RYz_M+>%=Q?+uvqfj~d-&`Rz&cmPtPMiM*^$6!9 zEdPia2KtSvedc_@75R+spOs3xG(%g=+oQD>Aulqa*I!izO@5_Cp2$pbXQ;K&$k&Ed zlF3Xd?T&}J6*lypx@++dcUa^TFlKVybLsEYwAqfr&o4Pml|)0fag6E**4gnuo9N74 z8$pWXr%-Hmg1IH3-s{qGQ8hCfZ}`QnjntGyk$vnHj+wwm{MTN8=l6YIo>LB{Me-6Z`wvv`=-A_RV{=SYBXEkHrWW7m$Cfz0xB90Y_2 zXXy?&-35n!T3cR5Y~aEe{Dc20eQC4!dp=KS_1y2j?tB7mHtBNV7n>f3>S1jI;64NfhbNHEMjoiu#&&tZ7n{VHtwc02?S)E; zzbCRL=zHBGEb)4Vq8L)?(BY6~2bVo2dAg&?LE((s_e!{>$}-|*C{cf?DYwz3&rWU6 z)-orVaP{}a@BR0I7w29!*#9uzt1nNIZzVAz7KZ`f_DD6L*5qG+HP@9Nc0{jOLW|L& zm$;fnEvdgtJoDhs2tWKkxR#F51fkAXYtVO%@?1}=E31D}l;YwLR=x5jgD3_U9I&S_tuqq2qf0*5KSQQ{<>~`iT$&72S7zl1 zp`b!Q?I`sP!6Ha^{1>X!>*f{?%|e2okYj|PZgwwj89@x+l3qcthb!~IPp;#g&dyFz zYu7urQ+Ic{-61LiOND7!3M7U2RrnOO=7e{|`){zB`R;bo!*zOT`|%@aY<`eK)?7|p zo*$@vRI*(~rbunmq`Gwmv`Vq8E zD87x0*A@;cx48@sh5%3?@GX3+0}Oya2+EI1WvrdMJ{@L^pmFa_j~R))4SRd9_}qjw z*7-T!fTer+`e%McTUDu6UhL-xuXiKtF$!E4kvX9R!6N3;^zlOYej422F6wVl2;hCY zJ@3m|wAnjyM7rBoOM0?bBW$2*8BjLzKnx`viPRVR{U7lAHxe`kL~{ZlT&wM7n|hh6 zS6n5H7cT_EsF?OmM!(Q^;e6V9x|=4HGfRfLS?!^@{#E#1*46Y?a_NsJho)!*I5n_> z1o?cN<*mJ31dxc4N|sPGxU~QU=++wCmQvN+vGOk=fXF{wFaR1TkWEpha$GQf1Kii- zdHae1Nfs1HNc%6JiQh=b0t(bjZe(WqqG#p>U9+ldh{uWH-oEYLdmDkG|1w<;M_!b) zSK2A);xTyVmxEcr_^2{er4X&6)jIEfVEWI5#7}Jd77U(&$}RlG*lv+5bl|SJgj`KI z;99^;qy(%xLv&N?unI>GnLbiH+ewoM#)rm#c!XEfR4mJVYU?;45cvhPD_n!#Z~^f* zwe0^^(GW-Y&_b}^cTjXHS1~Mz?bCcNue;1=@GCfE{|%|?Dd4Sg1Lgnv_)SZrL=3I0 z2^6eXuGkI+`tS~Qlsh>jad%fGvD*!t(|0^#It25!P6}qmM}n{z>n;W@hbG6!0-2Rk&O&&l%j^yHsbY|2nY4lSa$ch!7Rm+dhR2KM>dztQU zS3>f0gAL`#~7U_Jo@kD(^(d1 z@k~~y8uS0h*v4cHeIN>K`tg1vR)jkE$=-7(`j@!OpZO!X_1&cp-6gymPo>=rELXuf zGZzk(LStR+o%zi3*}pw?33Gyy{(|Y7W`o9v{RDk@G+qnlIP%Xv-S&{R!Y_NSVZii} zR{z5x`>(yXCsm5f4}72|6Da=%9ISI8NS0h;UlBUiLw*8*OC56;w3m-T52TX5(9(g-nI76!wL_&mgm+Sk zM|SI&!Mn<-X?2_TrJXhJKMlUcR_rbQw3JvZrm9vwkA|pvq>4M7_7SlC?c)a=4d=*@ zXu^WdlLdHYn*Yv zYSGq!{1c}#%p<+}^s}T4(g%0tZ=)WIv?~l0Ja&|F1zLzh07gq%3y(cy1%R8I`u3(6 z^ZzCxEeEgdgTK81yLdD_#oZ(Fb2UGldVLY7`jgPr$UgD+;#$ru-I1Hq(XCTltWB@R zSJm2Ojzzne6)ctWqC;)%&@srlu-+c6!B|Z6IN->WWj2eR>v;bS$XXQ#rZ%nsNxBZU z*IO);pok=q=0lHD9cjxsw(MRRoOzPjBDwxb*xjx z1qE?++vZkE)i=82x7*>v;tVm@sxX_BxlQhUg zmq;|%B-Ee5m^^xs<4GHfr&mN2VUK0(WEGOof866!twwI`%4Po!0K+Es{L*6yfJV>) zH@|`N8W=D-39Pq2E9)Qsq!J#)7*C2^k5nsrj{C`SD|N+-xM&D^_K4ON0zf?gdEOAq zE%*{vtAo~j=vV~KGlAMI-@W>0p7LFC4qM;iEhrwH6&WmC3T(qPCl0BPk-WZ2fDXp1*-oz^ z%)k6*UqCh?wYTAIWVs^DsLYE=kM$FW4?#QV5x~X*q&f}e2MWupb|7cT=%sp)P!Wjc z{u4Qs59mK6TmGYk%>OJp${ifx5DEBHbO#f*xpw4kwg!8LJxc(73PhOt@HKtD_J3N^ z$ZNAojD$lVz#c?92iE631$>uaptErFb-c7+V-X3e;FCN*DIu=XaXB)B=y){}SWvVA!FPzhuUWkbW%jHHc zroWRoujH9U?q})aMT12jP%|P>ij`gwXf_IIg{~f;?uPB}^%D7M+(BUbhktr6uU)${ zhVX6B!^O;n9*w0O9N&%!wL7SvtseogdA8J6$K6k?sJC0 zFR#WHk*itgsyl`!sQr%*E+Ea~j*4Gi=XTigZ7#p=SM8wDzgGZ`Lz#Gwju5nMV&uT2Qga9*hoi3Ns+nrSZf=i$`i|9sCa+J_#uI(TKK zLQ_A=8-}ecRzINnGmVw_iS%cY8%4<<%pKjKU%Y5%V>B$|BQfz_2GT5xMq)R>o~|;b z|H^Y>)yH>oZ5ULrt8cwYYSE)Jm82h(^8mfejClWXW81r>*qExmzxvcC-s$)1%G_=< zR#4-H3h$RH`kaGkZMCXcRlX69ziIRr_4OTeIp*62b)4Mmf+YF3M4h&+HYU4d!depT z6x-X=`B#2ibUgx3I2p1en-27@EITA?1Zb6Lc9oNZjH7%UA{Rw*ge9~=dDQIc)R{jg z^M_P9x;64rq3ECNyO&l@Aqs3dk;pFcpz*fjSAO#8l)}E{`!tfvoSR0>k9un>t}ote zIyA0O=HR=Pnt_Pz-`U^nvV@v*HslC!LMtC~H8<#)cn9QRHd+{>69!paLCKPlAtPWU z-lGfer%+ZNYg21k6Lnmub>nQ*gGCmsogj4o88(tZJZ}cpQaGKdY*lgVXHd+)9;Pvc z!%Quu7Z3Y%jA8aFL@yO&Yo|qDf3>yOY1Cia4J_ZH+jH&^qQ(%mO`319W}+Nf>0CI6QR5}s#J368LUoKZwQ$kk<-rc!Ypc~s zQc=ZhC;xcLtG4Q>)Dy$@t&W8sBzt1|a8 zp-5Hx=Yu0Di^6+Y9P*7YMZwzx*$amp#qqz|;ztQ}Nxw5T53&l(S+UDAriygLb0|;D z+31>vb$)`JI;)#2lxFl?4rR>v#okPW1{I$&@X*4-zA61T_r7s~o0Ox2+<|#)%r1Se z>NV&URTgfUEyl?OYxLFdv;BJR?x_45xeXJ=&(XgLRShpwZtr;&#%ljm&l7AyN# ziKkhg3SXg1kiVFCJ}+wT)8o}}9pS&A+ZEG<&^=DjBXGk6-{M`T$9>W5sVpYc)X``^ z4tQHY-}N$#R*{4gsViCtWoVSbDY-b~1 zMx9k-P(rS5_St{U`2^juN68{XZVJ;a2#$-~Di=>ACw6j;u%8YK1|v?g30Qq1UmRG& zs5+Z49y*ARa&9r-QZn7uPFP1V)#o&`7FZD2Ds<&swXC^k!Eb70)PzJ8;lv z{&Z)L5R)&mXJEOc(xLQ!#-XBqP)N}cTdQ-&Pv3aNo}P_8i<2U0{UPv;#=KT^TOErW zqtkYr2xB5veB+lxbCx%r-^Vi!70d459q;(S=oYuv#470ceC^B!PE;($tbUZ4T9~|j zFEdqPt;I5^XuQOLb8PjHYo-`kz+D>BurRQbnPQY0srvD2buaBmSxbB5XonmvcY69O zFVd~;zaNarzL~yR0`)vi`B7^blCAy-(WW;>e_?opXsf(hXGRauOqc|*ChG-^Wyyn7 zp5VNHJJh~eMZYTxb?wbKZkzSg(ebDLA&v zHhI4H>V3s4Skpxx<&pYqqxrwL_#9>QQnJ1Zvi}h)Mln|o5`K?15Fl(zSor$i%xEg) zhq!w|^!|Y1w76bqh+=ycYb#-AHB{Lb~PLM(}xsImL%12DYDatrxAr@!%^Und9 zi_hoYJRiA%Q>37bUuHeChgrmyrzw4(*74^X5nq@y&?X;dSI5eh;_f#YIGcHErxVG{ z?40;&A&{`G=y*Yb2*x6WAo{)eZ~heX7uqth{k|YJ3(jU|bvzRtUWQT07}i5|==ulR z`6)=JCyErqy?NoHV7K%|zgmF}Nh0ZjW$7W-7mo(t!}w7p@Ei*I+O~)40L-}$7E-rj z0D|=qkad^99yS@S3y&2#CMsvbrCdTyklrRzg80|N*OeU#r@Gdl0;T#MUmWK!&}cWp zIv2z6pI*X`X&_v{oM;E40?X^z7YBB_3IIGRe7)#2E@JF4-z)Qo9v2lreKPdTcYqQG zouAA^pU0qOl5R-7hua*~&C%s`L9u~lMFM6+;MFASKH7%kyh%a4oyi~2`V=7_D@~>YhGcP z2t%G5W(OsfcDBC%;g;opn%mv;LDKnnv11q~hi-&$CPK)g zazM76?HkB-Y~dO3M|Ro=PboRU^eXhvFT}AQ-=UKT;F#cj5bSW%4w(X{gJ&OnddccN zKR!Hqd3Jpk{zZxo!fcU;J{Km?8{#inLWKs2&Gfk^Wy z;IF+7b4JT=kQqvQ@>QcQm#QCr9_Hdi_!F0YY;7k&xy>OPviomo3Sc5U=K{Jnm`!|8 z7%(6y1zPAJO<+%o$|DePuvgo~HUauE1s3J9vSN~8MQ|F>n<%uZ?Fv}vs1Ydf)l|UD z)m{Ne?b!xvQk<;AU^Jr1;3>yI}Z42~h>CtxD7~VAHhja`p615}% zMX2b`$`Ox;TYWOjy#QAgJCW(-v_se*I7WjX3vzY&1>!|vA|L3#z|B!p+ z075oMED`qxg4kllN4vRe2#Msj97EMacq8wS++@1P6?quOf{!Y1BV{krt%D>B(!2{v z(~uPq0|(*xjESqfI>4FtVK4?&C@r(qN*wpVnoDm7gVUpb{rULx=qd2+Wb1>SF3JRC zO|yymytvKmBx@^`runoYFs2iBIC$QOcnOwd1JIk{G)gQ?0#z(D7`!?-J$P~S`sj3c z^6K^R$;*T10vM?_5wpS$O7G0;l1@G}>8dbpsO5*j1m^_BqDw#2jh`Lo0&>936RsV# zzAL`RS1?bzeBN`f?a-&*QyMv;&tSr$TsJ9FWh>vWOJfTt-_6(E-`_tvdA5N=c*B4h zr2YQK@yll?ZyCj+K2p)c06Tco-b;91p#j3lnBR!bTie)35f52coMOxvgbP0h4t$I~ zcdgj6fv(yc0AN`kYe-!5BXv;0d1NJYl%1X2A&&x%iPT351~KJKTpon z^-Xk(~J5v*lQ7XSy8y~dVSk7uC)t7L5X$4Y3k$GCA+{Hpw zavA;aknK5VSHU+`02k?hYPWd)%h2`p`LDJ9cU$`3t1uV?z>#3;m`21R(QJxek!kb& zkl?1;;7_yjfc#{QfqwTd;CuT5zXS800I@bx{N|D1jWoYmxT!}ZWh}}E3CD? z8)Y}M9GZO{;PGsLX(LS$RCfX z&;u*gxg)Np@lhfW72B{pua>0A9mu)1lBZQw5;ae*Af7cy;`t?Mm5tTPI(^c2p;ex@ z-oE16WqNoauV&&=5s{>rA3|7G@66o^AS;6jX}wJ|hw}1xpm-St^p!+yvzozShDn>I zSnjrN)04UWd}{yiAv>DGkHak!0kBB_H_c-HmkvBz>;G&0|CaQBj@Tma`W?G{rDhVP zo&3}$OmE-+b1*?P{ox!Byfw5KYKWF-y}qV_wV*1yioUC>MAZj|KInk8FbU|W(n!d) zbsr6c+)2Pj>O8AKk{XLFg{2LU)!QFM+oQHsc8Suk9@>H-!S7sZ1TS97)V$&J3a6D= zOHhGX=DW-?Z(_x~Jb8Hpp!_P*VyF4A{eqR>$a4CUjWtI7yTZ&`WT>&i(al`)QjfAp z=H%M0F~72^1S$Ln`q3IsF-1TyPHeH%HcR;R$?Kz+hsQ^!^Nh2HrUD(N+Ba*d2vl`9;J6W&|w%zF9l88U|h;Ipb|9?eh!3wq! z7Etnyb`mPv{`@u*)-M0+X^~To9*Z@|rbKy7-BQ3I>y^`nJyvU+qP9>j*Z%!G^6ytA zs`^YE{5gfRLSK<60*AKVZ@<^y91ied{+p|EFo4 zQvUajW^~v3|NYnhK|}29!awFZ6VxY*^{%EmqJx#(5$^l$u4)q192ot9rZ!N~$Fr$hB8) zC9ltL@$W~N1_}kdgI8K^6>e49+anx=4;G8R{T$2wh8DM<6stDZ(IjS_42T4#YzPe^3MTEaeReA7Vz(q^Qux8$Py}Z zb>nrWP6&Ionkq5>&De$lWx7mXC9tgMy7Nko3FAJV@Vvu25>$`*g4Wz^4uY5`huo;; zli1+UcawzI9BEv1!ORo9Qd7AVlf4JR`2y1zX0(>xvYELz<(C-@RoAgfnK#iX!6N`z z&diD(yXW|P%e8Qjf7~7Ky5y&UKZsh}72XYTjrm5Vys+8*K4V77qk`n2AE!R|D-BTx zd(2#*=xt)2B<7GEW+|tbem_i_!nBRUd;_owssSjZb>JV}RFniLS*HR?PVfp^@nVq! z>r{022YOY^gPq;?i~h|KjcM+Y$c)WvxI-{~_E`q&@|^B41rPYkZgEPsLGS!&&e#VzMuMLmS3IS*G%e^bF4^E1`+jJl_7@ z0wa6Gh(OY^+Sj}@BCpt1T8a!4e*0VUh_UcWdpT2e_;zJAepT9**EkHa1(0M6vIuJV zB5`1$sZLwivo&6t>|0J(G(ODjruvaSK_xfJ5o6xv*!`QWlL zJmi*nxj_-$mJhOB3*eVa0{gN7pq2B=f&;HNsVv}d86ZW4IexCfdAvF9o;2c94y3NL z2GiWUH?RifxW}Zw8XK@?1}d8<`496|B)xA5{{eTKrBeiI{ReC0yVvm|I2Y7;UjcT* zRj;eQygS6EqhNBL-f_W)$kJ@h!IJdKr7Z8?(r!GS=KE1{FV#)FLxt8B`-UW%s7Pim zfM7cg|51VNbA>x=ZWaEnq$L=Q*!yTc9=0O&gIYKM;iXv7AVh0T2GY!No#pRnf}@2z zL`$(_=vT@FzA9ubHQ5Yft2i$R#0Um3O2v?L+b(Clm1wXeR_AWYZ7!H9F4(ObTe_hr zr3}9T7MC1uH%H}ClT8UT3rZV}YID~&9azqpxRP-dTfFJ8Zm?=qp3)T$aLKhxEWc?O zu&{}G%|4~5Q|crtQyp^h##VxqNmDSO#C1@Wz+Q+2=8yDazD9}22a^%El8SDS<}&|N z>=G1{i;5cxtJK2zY^c7W+HC)_#8}CURZE~xG;QVNS~r=yd96Lv8y#00|Hn)KjPXo@ z0DnmyG>-yYbpA&(OZmS#s=~ zW(~L{C>@c7X_=}H0ThnMWan;%o=->YYQF5C{C72V();()I@vM!x;o6IIy@f*wlx~k zFl2G+$p%7Um*E8;!B)$kFpk$M9N|Z#+=C^Ty(6Ni@VPQkTe17&28ZY?*m?woXEc%~ zM!LrsWDt#$B5yKzRWoJVZ<*fIyg2Ajt>nZ_I)ugD7G`}>x258uTi!2Aq{Wtin%3=%LVA6_t_AgY7&}Wa{ zcE(Pu31J~uxjVUe{6YRQ@^sgLy>p;7c8`3+4I~cT(7qa`3z{_1%C@?*oeAl*43=ZH zhKPtmaT#_}yL3DDcDijq{zfQJNOh~(lJo79n&UQUt68J+?#YaEAK=l^_u2exJ(9Ou za{c24t`gk^@4uH`rn4@>sKklxZMMh6pVzq)x20xs<0Z05HyqOtIDCIVK3HxJm)fpBh?KJGBP_|A+aW2}%AXvnuXqMiGPaWH0vQ&v5gctZFt+Ei z#0-CmntGy()^6E-5jy#O(*MQm=Z*$EW4F_-EdQ6Tc00xMKZdcs|7)%P-`??m2Xq2) zc4ae-*&NeN5g*k~G8WuBJ7F$i60NJ6rZ^;|?rH|n)Pd3&bkskQKZJe+mcnQhjd6w^ zr6Y84)1O7#ke^Wz_+jKv-WNmLUQpiG-`Iuk)N;$#Mg?SbXN~yVd_sWSA!&XeCZ?72 ztD}Z_3y1igJo2(1wXUS}RI^lA(#`p@zvSBa%A$RWYJeZHEH{U+3Kd6lq=lFSF%U#P z)WzXJLwt`sfAk0yGpyoWZHb5ye4mPGIRqQ@>-1X8^kDGoY|7bzU?83hm^MR;%^HN* zOb`OkHxGx0&kxSdhC_@}hQHI&-v8kE1n^Sg^100ofwmua8(Dc6|nJ;tvdy)R9b(PZnuZp(z|E~4F`=|dUGlZfs zx(H??m)I2drJyIVeI{q;;U%N?)p*1~{N3*?JNQ6(zieiO3M7gSl8%^7EO`8w4#Xou z7~Ku()G?`c((r)%=e<>4>$%F3nrlJzEVe7@onM@)nO7Qf8s|nqV_H(z%Ie)*&ng6S zuUf-uqF*hkUDfDTf8AJ-UX|0PWYo!>Y`U>GY@Yld2kvY{qxAYuUTEyXzmO{Wp*Q1GY_r z3FdoSECLqte^V{y{{;!K=KpK{f8Y84VFeZ3TMV1@vs()c>cbT512cW32sux3m7Zkmz3mmOm6fc#z!222V*-|1Oxtl`q#+_4(3& z6C-Fz`ZrXy82{Zh*7rZJ^}jDX5_}Pvf$r8*6rsDR@PCX2*Oh^x%+=kho0VMTnc-gR z%RXb00n?B$=WZdWITtA^UppklYA(o3nm@S{Qc%fZ!nRsJTm)k}#bhmoB<6=BgD5C{kCj6fwf9`w`7xrQ+8C*Vpfb5y}(_nR; z%Dweg1c->7IT*N$c{{~s!%ott92}m#ew&>Bl>-y@_J}pQw5}qOEG_PyS>)%_=a@4A z1Fd1@P`Q+=Ad?8>%%;^Z6BNmY$w&2b*f8=unmM>1m>|k59OV*?Nf}YI^-CVgfh_fC z+#+8;mcja7{xKkBG|%<}@L!D3&LLM35&vyG`YDd5>E282?nF7m&`;EIX?QXjUCBuT z=T!QUi2Dt z6y@8ky;i#p0`B*dm{Pia&Cw#4mTit?0lT6~v{W)HIgipKVU%2p(4k&J>2sHB4lRqW zzt8;%->(f=jd ze}{{<0v7py^y2*=y0Z5F->&^vX&O|xcG=BgnKyTVfxvWZIjiJtYw7DS(^b=dOo8v? z?Yn#O3e67yS+xIWm`3UTPh}ndaeMTSM>2;ObTmct^H}Y@Y=JHJWMgBW5fxYc9&hrZ z)VT-(-aZ{)Zk2lc}-h2XNxF2Ke))Pjs`>`FkS5JicD7E^Cb@#m} zwI>zZkG&v>(<*WJB-Ls6W0yF=D4JRTqPF=&is{<-CsRy$4Ak6U zhQqCv;3-nZQ9dj&o;|r)xd+zDqcC9MgQy02!(8wiykNO2(_bt-&-YJCZJqt>GQqVO>uKCK~DIV zAT505=)b>*DE{QL;QxHj=Zu?BH@W{=G0OKptLy#0`@sJ%v?A%81k>nikv{dDB99{mFy0es9j5U&@psBm3v>1CR>g&=8hL^XUayQ z7e~SFoM6d8S#pPSjODf%BG*HtV^di((9JN7s7Qm7kw%!hDrv7+|1;G8_z+h?|48#i z`q$U@Ki&uWSD!4SC;^qIWh%jqM7+I8rjfn8c_(seuwN{v27cSV*M#%s*?(LuOdNUU@pLs>Z8q+g;j> zuPj>JoBt!4GW<$w8q#H=+4Qy@A$k5+7MPMO9&vl?87la=yLS z-uvNsFgbtjPu_o`K9rijiT#AizLMh?dRN!TSI^h%`5yEC<=DY`roY_vUm*WYt)mt8 ze{@w{@BiGU{1=iM*E11<%%YcWfT3*}g!y7Xs=IZY<#~JBmY? zBU0Kkn=kI?2i8qPdXyaN&E1<-4trP-I@cs-Zhnlw@x-Mc>thh4owoESHY=GQ|1-At z_bDUgiVRWQm zRlXVrW+-2smca<)bLZ8Z_%Mm$Nc-3|w)lO58KH?Q& z?6Qy6%adQXwp;VsVK)=yrbVOu0M7)Cm^pg4bHsoXa5sjaP!Fa2|CbGD0 zeTaGP)BLe5{Pn{m27l?=~4d!h^+v3A@QmLcoD{PdR)c-Of~cQMkA} z&8jnP7cTCWF~@ha^2O{nYa9K3+W%4{m`t%1&Yp$)|GHU<|1{U}Uw6L$SJ?Xd$tT~k z8*5q0v2QchoO_z4#Aoc0Wg8Q6xwu=nvr+8fN46o4aRZnBXv8%<`34TAdnAZ9V2zMc zBk5fZ)q9kKT*O%lXm)QeYqZejt4tg%ZZo~B;34c@u7v(&!=r}&=lK6rRq2%Izq3C7 z``Od~z8&s8VgHnfm>oJ1rW1U#DYN77;Fe7t3z}zKLZBRIR?_KUf)|_exE{Q`yb#A& z8*)?+3)+^Bg_jzmwUcj-*jK~>yX`%~ht5(SQ^ZoHUtajm1-r0hGP>e-DKo8E>i~SS zFd8fe3br|ngDnK<5WB&R(zZRokg!djKKBv=icytANLFA1OhMA|GOpqUoqD9|9#~D z%N-3$qWCv*%nsXm%FhKr^$>K*OUe{%gn;Swz+{PSfrg8$Kj6Jt4$HJnBFm%bJ+1Du z+|x7kBm~Gab25aR2Yg=+uXE(421^liV_RZFoIAL_9Qw4!=x!`bPSZWcwKVy1_&>X7 z{yGWZ7x{m?N-_Vh(bd-X|J`Q%SJU`!85Mp{Cp5%MKo7<3(ELU*IRgAf&Hls$(!7Xr zR$dMyuZbg{8#&GzS(MD}))K2TXo{g@09a7*eiZ@YOVhtd0DGRSQiBYz3-f>LMf&e_ zO?6HGxA95W5i_}_mkXshk-XhtH@aEl0n;M@G3aP0N@t%uL9vWNbW8`N__5qEzb*%K zz{wD($__yPOznvQyWyL?XZLHZ;b~@Bm;U5@HnPG(C;!Rspc?^C8kPFzFWKqy z;WVV4|8XFXL1<*>=_nWwZn9C%>R|;2BrCv4VjwiJksrl_bZ0;I;}I0+oC;s1Z(Kiu z@m>wco5#o&cZf?PC-kR0!zJHecZXKIlY|ez_qRz10_snLil!=BLWfK=#IAP;@YAu+ zqV@Qbv_0zjWuTAXA^NpB@SERqH_x}5Nu>$BEY-mn5mtV!T791S-?Cajqy7KF`G5R( zeg5w@^}i~;N@OK;a_f3GO4c$6w*vjEx{KVwy|abIAI8NutE2y-y58LWGn8WfHx&x5 z>HmJvKlcmXC&Djc+A1lYx4oFudAWywxz!T%|0-1;mvjOx^#ACk{6AfDP5<}U|C6D@ z>YYFpZ7=o&WtDE~4$4}(H$I^Zq&beEQlVzN>3a0PoD*oF|Hmljf7I6de-G9FBU8`= zcLGiGLs^99wuFrqp$Ne8E+hKwZ4KhC`Md$6!Fo$am|48buGOcr`+ZRb6 zm0evWsxmM-gO2hi!VsZ~GZY3~mB+bI1i8RxO#jZJi~kzZzgE2ePwT3k_4(fiLjP6Q zKOzgLq@9W@1?M*T04V5-(f?EWZz>2H(!UC9xETMXt>Zs#mHtb)jO&Em{4B<~1j3Q` zE47o{r{x5eH%V^1An_h%Y_aebs!>QS_bR>Tjk+w06sFW;Ib)<8d`+?@FG_;UJ9%Jv zkE=2sC;2buq&tKuJf3Vll5>1Eo5p+w!!>jNeE5IuJf{Mri^pV7w$RzOPT)`U;f<0|DzY}KSNj7=Ra?c{#SATbN`hO)b94crT=TBe_81NHH!EDX&rN||KHB%6P*9yH1)tw{>+j=EP3X~^XbTqvU4(NW?Adp z@+SlGS2D6}3Q%pPx5I3)SKFJ3hq>n95Fw1=)g2m2?n$USE3^Y0NAYkJ0Dae_kx7?7 zV>h@|=$9$=DA`||SaP$x&V;EHbJ+XUPOr>L;X=cWG@e7}-Rs#gUU@qeY$ zDenIp>-=B0s{idV?TOvG;Q1qpw-%t)Mgost0edy}g2@#T+7r9kb<5dCMW?e1|ClAE ziR^pqNqd?+`9Uhvn~&o5#|-6P-ZoL5j2+?$63 zM0!UQq=@t?)ld?8mu~32cR_j)LYGdE00|vL0R<`2dxs!OuYz=>`T;?zkgWUPz1f@H zi=Ek<^|?70XXgCQ%$fH+^WHoqh=k8(W>JyqcfCK{t`Vf#b?ywus|$~()$$R-!t4gO zrjpXF@O+oVJ2;}bf>e1V5~Iy_*GdSH6i&jEf?5wa<6A1gy5gz6Y2OyY2;Cb-RUOqD z(k6crJ3+tC(i?*4or?XjD#7#8T=i|OA4<21R3qC(jkt)xdIw@0&SJa2 zO|#PL2y>o|bDhmAU3<&RG8Ohl?os?k>EYbf`Bre{xdn~5qdB?mE1w@9Y{JjRkI#y_ zHX^#Oo7#5e6LC+ABGQ-Wo>$2qj9=Gd|F!sy2LK+e;)X-{=Zel;Zr`s_sodNu-rNdf zFC;f^qKjhXbp)jfe=2&$ls`zu_B4@`>FzK`iab1<}bx_oYp51B@dD zzM4=N!6BHrN-VG?`R5?J&a^)n(6cM~%c2Ois|Z7HT+P3yo=T5iMTCW({~G?nR$&NS z(Oli(!^8Cy#Nm*JK_7|#^McEW@s3-08l#|1xqF8=k0b*$uIzzTcsTC#V;JSM?da7> zJ`>ZkXBzVMB=d&?zO3d5R2z7JjBn7@V5g6Ce2+4bz}~Khmx7~$dZBJxPbA@+{dxhU zI#bm?^n^=mR?H`nUNvgdp+m-pzy(x>KoPClYP+a3iA?#OYR@bzI~TOfJfMl_d!v9b z5u6f74RXF^xZOKO8ANQPI6v-7?_j-hu=y1^yC|Wuuq)Un5*q18RLT}cg?k1P%-&~f zTX>DH6{InMd1#xtPnqT*OsuIA!d6N3BAMYEP{x?>rJccU9g2PKXj@fe3=Z7%aajkp zy{$@P>dCBQ6^*=GR9m}fD?$3$$5mIP*EPV^ySDD+fwfuSan#dCjSx*rBE0)-WN~`d zs`u~pctJ(&1Pv(b-mb?k$foxLsRAz>w8!BBm`h+ngAQUrt zGF@8kc)CUo^ZqB@25y7%$DDfLbLmo9cVRiCL)0j(v9E8|FSn;ze1Cb@=)%Xw&?9`( zu#^3(6B-B@7IJyBQ$8#lp$Cf%71pyx>DPg z40dx32X8H&93U5dh`auZ?2wTP4-dOMJ&l24_IIXDcwE#cZlSK{+b5$gS%GtgUcypr?LF^D78|lMf3I!_db21Yt_S1- zqj5_IY-_@L*dkUINVt#RNw)&lBew*ldgWbx+PyNilgCN>SdqY|Ey^Pk@ZRt`u2sOT#^skAL&)kl5$1B?4a=Jo+F|rtvR|HTmkjvvJXE-o*?V{Y zJJ{#^lK!ZX8~>(&{E8{~7!=X<+RzB;Yhl!>YjIiWPg#dL<9~DF+14nOm9ABORkI6x z9YrPmZR5Q#2s6xWv3PUr`;q0DjY@9coNk?I`**MH!sl9Uw;6_EZh`%)uc7YaH?Kzx z@+b8fw=?={35@-bNOOJO>(PXuV{vf$XY}1JQxNN>y_+99{tqC=K5&i}?WN65RJPj6 zW>L&#a~;_>L6a)_ag$fthMbHjNosB_^>D49gcsX>b5{@?(;m$O);ErD4HGOcR6P`~g{jTuFD6?G8${UKaBcWKkFhjFoNrrhm+0 z6Td@Ts3q$GO6u*pMqmA7+~ajj&G|Y?_$|W@Z=6Wid=%b{@og3SDG4pNl2s zjg?<@hIMX{anrl1&jpiOirXlqP?CKygI3k&SpYB;YXkm{QQ-(V+8sQ;aW={g;C)7{ z$TD(4rl^)ft+|6dLk&erZb@Xk!%_sPda6>aqCc5{6i*u3NQY6$*g#f|%>Tm781a9_P+0-t`|JDFEP? zqsZeIDj#EkQLLYdx1>7O5=~oZ5`vHdM0w>3{tkJsw(fjai3gU|6J@Qj;P|sGr!1ZY z#C0O2CYX40M&9a6fSI8o=~tzfnybRQ;&Zvc)?H@>EZtd>H#+C-8}x?}$qL5~T_c9d zrxA=>BC^m#{cWus42uI;T6?^Qugd=Gb(Zlz6bbJ?|CwaDcbGF`jp}ahK$3+YCaS~+ z=-0`-X-*2GCuccz3b998n&HAWT#^)Ec&@D{ADUDbpKacRxS^o}K#*|5J?525(mg%n z0MZW>!fbrv@(m zS$W0fECMk!Pxz8YUV`Xj7w=Tb))FXsJFuugrq9U%pC%fVff<>sGl1T`m z@oo^CjFUen!waBz9;Qs?Pa!8GvLqQ-xwJbJw4=92tQ?H#=CEu!3a4PpxqA)!(e6{+ z!ZD*P`OeNn@g`rW#;3&DM|X!wmi+%NGchCn{dt&pSo*@c7^9FRM0eBN6w4( zb7*M{4xgosvhgkLflu;Z8~tn7b?Cs zPT5V>`E(VwqjwXGoX1OZRXqyw{oz~}pnI(t+-L=0kE-_MUBCGC{7fn?1ul&7lpAFc z2>9|_=LL+`5??vDMWHsV!%c5@>y7OU2{El>G@p>I>h`Zh$8d6ieI$?LH>z>#{MQb1 z%K;|*HWU?&nc(9BbO(X~@g`D2FaPusK}I?itt0G*=s<|IvoR29szxzeQx`%(x^<<) zChyAbdECFO9S>$UY?iK}Wqw#75mv(a5FoEo2u1Q^5vp#4gyq!$YK4w?eD%S5b(eFCv;9v? zy?GK@J8PeVL=jm%O&M=_pdJ%gx#CS!fvZ-Ujo?xH3giG4G0>8Sv!{WhU zeEG^L)%#4}6vk7iYdmEb)gz}w)SR8T_ZQfLMpOMawP1iff$S-x+UQQ%t)iCl9zz(( z!Zm0cG!Y&JQ>#9=jl9DzJHTYNL!Nxl&_I?L>iu?hR4&AYU%nDPzvT&MVA1emqUvnk0(T zef?F6m7C4cx9CAfpI3~rSl zf9l;dETcQ-)r!C7-RpQ^fNH5Hs}#*j`s!#d96`k(Cp6|W=XIqdQc}9MhPfXYm5K^B z=Kox;$-8nq_+C7~)x7i+z_~w&s(+QaAtuIa?zzY$kz?jYPUjeU5%-S$6X3Ml74gu8 zan(12HQcVvfzAFY*ZkYqyXO!Z=2s@uQq+#=H(SUKJQmp6S2qswqB>W zD2V~86=Bre+{Jm=yWM%({sEE^4^Z~$Urw!`_FpD}!@6BOZ$%FX%glU*d7eTwWNn8Y z`I1ICWPMe3F#B!ELvvyNR$#LBYFr$9ge;w|-$WpbWUvocvo~<<*D}~6kQ{%NzYEK9 z`+v;ar-R|x2s{7)fWr|0N)VL`fChZPU;YRGx3TIosHUFo|2pHp_kaIu_rLnTMW0AY qivRV0|6d^b=cOe`|JK1@{_>Z<{D0%$00030{{sNu+N}Km5(5Bn8J5ie literal 0 HcmV?d00001 diff --git a/cache/companyfront/dev/config/config_app.yml.php b/cache/companyfront/dev/config/config_app.yml.php new file mode 100644 index 0000000..e69de29 diff --git a/cache/companyfront/dev/config/config_autoload.yml.php b/cache/companyfront/dev/config/config_autoload.yml.php new file mode 100644 index 0000000..bc1acc8 --- /dev/null +++ b/cache/companyfront/dev/config/config_autoload.yml.php @@ -0,0 +1,267 @@ + '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/modules/sfGuardAuth/lib/BasesfGuardAuthActions.class.php', + 'sfGuardAuth/basesfguardauthcomponents' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/modules/sfGuardAuth/lib/BasesfGuardAuthComponents.class.php', + 'sfGuardForgotPassword/basesfguardforgotpasswordactions' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/modules/sfGuardForgotPassword/lib/BasesfGuardForgotPasswordActions.class.php', + 'sfGuardGroup/sfguardgroupgeneratorconfiguration' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/modules/sfGuardGroup/lib/sfGuardGroupGeneratorConfiguration.class.php', + 'sfGuardGroup/sfguardgroupgeneratorhelper' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/modules/sfGuardGroup/lib/sfGuardGroupGeneratorHelper.class.php', + 'sfGuardPermission/sfguardpermissiongeneratorconfiguration' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/modules/sfGuardPermission/lib/sfGuardPermissionGeneratorConfiguration.class.php', + 'sfGuardPermission/sfguardpermissiongeneratorhelper' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/modules/sfGuardPermission/lib/sfGuardPermissionGeneratorHelper.class.php', + 'sfGuardRegister/basesfguardregisteractions' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/modules/sfGuardRegister/lib/BasesfGuardRegisterActions.class.php', + 'sfGuardRegister/basesfguardregistercomponents' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/modules/sfGuardRegister/lib/BasesfGuardRegisterComponents.class.php', + 'sfGuardUser/basesfguarduseractions' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/modules/sfGuardUser/lib/BasesfGuardUserActions.class.php', + 'sfGuardUser/sfguardusergeneratorconfiguration' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/modules/sfGuardUser/lib/sfGuardUserGeneratorConfiguration.class.php', + 'sfGuardUser/sfguardusergeneratorhelper' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/modules/sfGuardUser/lib/sfGuardUserGeneratorHelper.class.php', + + // sfDoctrineGuardPlugin_lib + 'pluginsfguardgroupformfilter' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/filter/doctrine/PluginsfGuardGroupFormFilter.class.php', + 'pluginsfguardpermissionformfilter' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/filter/doctrine/PluginsfGuardPermissionFormFilter.class.php', + 'pluginsfguarduserformfilter' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/filter/doctrine/PluginsfGuardUserFormFilter.class.php', + 'basesfguardrequestforgotpasswordform' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/form/base/BasesfGuardRequestForgotPasswordForm.class.php', + 'basesfguardchangeuserpasswordform' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/form/doctrine/base/BasesfGuardChangeUserPasswordForm.class.php', + 'basesfguardformsignin' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/form/doctrine/base/BasesfGuardFormSignin.class.php', + 'basesfguardregisterform' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/form/doctrine/base/BasesfGuardRegisterForm.class.php', + 'basesfguarduseradminform' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/form/doctrine/base/BasesfGuardUserAdminForm.class.php', + 'pluginsfguardgroupform' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/form/doctrine/PluginsfGuardGroupForm.class.php', + 'pluginsfguardpermissionform' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/form/doctrine/PluginsfGuardPermissionForm.class.php', + 'pluginsfguarduserform' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/form/doctrine/PluginsfGuardUserForm.class.php', + 'sfguardchangeuserpasswordform' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/form/doctrine/sfGuardChangeUserPasswordForm.class.php', + 'sfguardformsignin' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/form/doctrine/sfGuardFormSignin.class.php', + 'sfguardregisterform' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/form/doctrine/sfGuardRegisterForm.class.php', + 'sfguarduseradminform' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/form/doctrine/sfGuardUserAdminForm.class.php', + 'sfguardrequestforgotpasswordform' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/form/sfGuardRequestForgotPasswordForm.class.php', + 'pluginsfguardforgotpassword' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/model/doctrine/PluginsfGuardForgotPassword.class.php', + 'pluginsfguardforgotpasswordtable' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/model/doctrine/PluginsfGuardForgotPasswordTable.class.php', + 'pluginsfguardgroup' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/model/doctrine/PluginsfGuardGroup.class.php', + 'pluginsfguardgrouppermission' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/model/doctrine/PluginsfGuardGroupPermission.class.php', + 'pluginsfguardgrouppermissiontable' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/model/doctrine/PluginsfGuardGroupPermissionTable.class.php', + 'pluginsfguardgrouptable' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/model/doctrine/PluginsfGuardGroupTable.class.php', + 'pluginsfguardpermission' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/model/doctrine/PluginsfGuardPermission.class.php', + 'pluginsfguardpermissiontable' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/model/doctrine/PluginsfGuardPermissionTable.class.php', + 'pluginsfguardrememberkey' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/model/doctrine/PluginsfGuardRememberKey.class.php', + 'pluginsfguardrememberkeytable' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/model/doctrine/PluginsfGuardRememberKeyTable.class.php', + 'pluginsfguarduser' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/model/doctrine/PluginsfGuardUser.class.php', + 'pluginsfguardusergroup' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/model/doctrine/PluginsfGuardUserGroup.class.php', + 'pluginsfguardusergrouptable' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/model/doctrine/PluginsfGuardUserGroupTable.class.php', + 'pluginsfguarduserpermission' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/model/doctrine/PluginsfGuardUserPermission.class.php', + 'pluginsfguarduserpermissiontable' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/model/doctrine/PluginsfGuardUserPermissionTable.class.php', + 'pluginsfguardusertable' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/model/doctrine/PluginsfGuardUserTable.class.php', + 'sfguardrouting' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/routing/sfGuardRouting.class.php', + 'sfguardaddgrouptask' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/task/sfGuardAddGroupTask.class.php', + 'sfguardaddpermissiontask' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/task/sfGuardAddPermissionTask.class.php', + 'sfguardchangepasswordtask' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/task/sfGuardChangePasswordTask.class.php', + 'sfguardcreateusertask' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/task/sfGuardCreateUserTask.class.php', + 'sfguardpromotesuperadmintask' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/task/sfGuardPromoteSuperAdminTask.class.php', + 'sfguardsecurityuser' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/user/sfGuardSecurityUser.class.php', + 'sfguardvalidatoruser' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/validator/sfGuardValidatorUser.class.php', + 'sfguardbasicsecurityfilter' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/sfGuardBasicSecurityFilter.class.php', + 'sfguardremembermefilter' => '/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/sfGuardRememberMeFilter.class.php', + + // sfDoctrinePlugin_module_libs + + // sfDoctrinePlugin_lib + 'sftesterdoctrine' => '/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/test/sfTesterDoctrine.class.php', + 'sfdoctrineinsertsqltask' => '/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineInsertSqlTask.class.php', + 'sfdoctrinegeneratemoduleforroutetask' => '/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineGenerateModuleForRouteTask.class.php', + 'sfdoctrinecleanmodelfilestask' => '/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineCleanModelFilesTask.class.php', + 'sfdoctrinemigratetask' => '/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineMigrateTask.class.php', + 'sfdoctrinebuildfilterstask' => '/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineBuildFiltersTask.class.php', + 'sfdoctrinegeneratemigrationsmodelstask' => '/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineGenerateMigrationsModelsTask.class.php', + 'sfdoctrinegeneratemigrationsdbtask' => '/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineGenerateMigrationsDbTask.class.php', + 'sfdoctrinebuildtask' => '/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineBuildTask.class.php', + 'sfdoctrinedatadumptask' => '/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineDataDumpTask.class.php', + 'sfdoctrinegeneratemoduletask' => '/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineGenerateModuleTask.class.php', + 'sfdoctrinegenerateadmintask' => '/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineGenerateAdminTask.class.php', + 'sfdoctrinegeneratemigrationtask' => '/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineGenerateMigrationTask.class.php', + 'sfdoctrinebuilddbtask' => '/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineBuildDbTask.class.php', + 'sfdoctrinebuildformstask' => '/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineBuildFormsTask.class.php', + 'sfdoctrineconfiguredatabasetask' => '/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineConfigureDatabaseTask.class.php', + 'sfdoctrinedeletemodelfilestask' => '/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineDeleteModelFilesTask.class.php', + 'sfdoctrinedataloadtask' => '/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineDataLoadTask.class.php', + 'sfdoctrinedropdbtask' => '/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineDropDbTask.class.php', + 'sfdoctrinebasetask' => '/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineBaseTask.class.php', + 'sfdoctrinecreatemodeltables' => '/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineCreateModelTablesTask.class.php', + 'sfdoctrinebuildsqltask' => '/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineBuildSqlTask.class.php', + 'sfdoctrinedqltask' => '/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineDqlTask.class.php', + 'sfdoctrinebuildschematask' => '/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineBuildSchemaTask.class.php', + 'sfdoctrinebuildmodeltask' => '/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineBuildModelTask.class.php', + 'sfdoctrinegeneratemigrationsdifftask' => '/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineGenerateMigrationsDiffTask.class.php', + 'sfformfilterdoctrine' => '/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/form/sfFormFilterDoctrine.class.php', + 'sfformdoctrine' => '/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/form/sfFormDoctrine.class.php', + 'sfwidgetformdoctrinechoice' => '/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/widget/sfWidgetFormDoctrineChoice.class.php', + 'sfdoctrinedatabase' => '/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/database/sfDoctrineDatabase.class.php', + 'sfdoctrineconnectionlistener' => '/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/database/sfDoctrineConnectionListener.class.php', + 'sfdoctrineconnectionprofiler' => '/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/database/sfDoctrineConnectionProfiler.class.php', + 'sfvalidatordoctrineunique' => '/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/validator/sfValidatorDoctrineUnique.class.php', + 'sfvalidatordoctrinechoice' => '/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/validator/sfValidatorDoctrineChoice.class.php', + 'sfwebdebugpaneldoctrine' => '/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/debug/sfWebDebugPanelDoctrine.class.php', + 'sfdoctrinegenerator' => '/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/generator/sfDoctrineGenerator.class.php', + 'sfdoctrineformgenerator' => '/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/generator/sfDoctrineFormGenerator.class.php', + 'sfdoctrinecolumn' => '/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/generator/sfDoctrineColumn.class.php', + 'sfdoctrineformfiltergenerator' => '/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/generator/sfDoctrineFormFilterGenerator.class.php', + 'sfdoctrinecli' => '/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/cli/sfDoctrineCli.class.php', + 'sfdoctrineroutecollection' => '/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/routing/sfDoctrineRouteCollection.class.php', + 'sfdoctrineroute' => '/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/routing/sfDoctrineRoute.class.php', + 'swift_doctrinespool' => '/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/mailer/Swift_DoctrineSpool.class.php', + 'sfdoctrinepager' => '/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/pager/sfDoctrinePager.class.php', + 'sfdoctrinerecordi18nfilter' => '/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/record/sfDoctrineRecordI18nFilter.class.php', + 'sfdoctrinerecord' => '/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/record/sfDoctrineRecord.class.php', + 'sfdoctrineexception' => '/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/sfDoctrineException.class.php', + + // project + 'baseform' => '/home/gustavo/symfonyreloaded/lib/form/BaseForm.class.php', + 'baseformdoctrine' => '/home/gustavo/symfonyreloaded/lib/form/doctrine/BaseFormDoctrine.class.php', + 'basesfguardgroupform' => '/home/gustavo/symfonyreloaded/lib/form/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardGroupForm.class.php', + 'basesfguardpermissionform' => '/home/gustavo/symfonyreloaded/lib/form/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardPermissionForm.class.php', + 'basesfguarduserform' => '/home/gustavo/symfonyreloaded/lib/form/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardUserForm.class.php', + 'sfguardgroupform' => '/home/gustavo/symfonyreloaded/lib/form/doctrine/sfDoctrineGuardPlugin/sfGuardGroupForm.class.php', + 'sfguardpermissionform' => '/home/gustavo/symfonyreloaded/lib/form/doctrine/sfDoctrineGuardPlugin/sfGuardPermissionForm.class.php', + 'sfguarduserform' => '/home/gustavo/symfonyreloaded/lib/form/doctrine/sfDoctrineGuardPlugin/sfGuardUserForm.class.php', + 'basecompanyform' => '/home/gustavo/symfonyreloaded/lib/form/doctrine/base/BaseCompanyForm.class.php', + 'basecompanydescriptionform' => '/home/gustavo/symfonyreloaded/lib/form/doctrine/base/BaseCompanyDescriptionForm.class.php', + 'baseofficeform' => '/home/gustavo/symfonyreloaded/lib/form/doctrine/base/BaseOfficeForm.class.php', + 'basecountryform' => '/home/gustavo/symfonyreloaded/lib/form/doctrine/base/BaseCountryForm.class.php', + 'baseregionform' => '/home/gustavo/symfonyreloaded/lib/form/doctrine/base/BaseRegionForm.class.php', + 'basecityform' => '/home/gustavo/symfonyreloaded/lib/form/doctrine/base/BaseCityForm.class.php', + 'baselanguageform' => '/home/gustavo/symfonyreloaded/lib/form/doctrine/base/BaseLanguageForm.class.php', + 'baseadform' => '/home/gustavo/symfonyreloaded/lib/form/doctrine/base/BaseAdForm.class.php', + 'baseaddescriptionform' => '/home/gustavo/symfonyreloaded/lib/form/doctrine/base/BaseAdDescriptionForm.class.php', + 'baseofficeadsform' => '/home/gustavo/symfonyreloaded/lib/form/doctrine/base/BaseOfficeAdsForm.class.php', + 'baseuserbasketform' => '/home/gustavo/symfonyreloaded/lib/form/doctrine/base/BaseUserBasketForm.class.php', + 'basecompanycategoryform' => '/home/gustavo/symfonyreloaded/lib/form/doctrine/base/BaseCompanyCategoryForm.class.php', + 'basecompanycategorydescriptionform' => '/home/gustavo/symfonyreloaded/lib/form/doctrine/base/BaseCompanyCategoryDescriptionForm.class.php', + 'basegeneralcategoryform' => '/home/gustavo/symfonyreloaded/lib/form/doctrine/base/BaseGeneralCategoryForm.class.php', + 'basegeneralcategorydescriptionform' => '/home/gustavo/symfonyreloaded/lib/form/doctrine/base/BaseGeneralCategoryDescriptionForm.class.php', + 'companyform' => '/home/gustavo/symfonyreloaded/lib/form/doctrine/CompanyForm.class.php', + 'companydescriptionform' => '/home/gustavo/symfonyreloaded/lib/form/doctrine/CompanyDescriptionForm.class.php', + 'officeform' => '/home/gustavo/symfonyreloaded/lib/form/doctrine/OfficeForm.class.php', + 'countryform' => '/home/gustavo/symfonyreloaded/lib/form/doctrine/CountryForm.class.php', + 'regionform' => '/home/gustavo/symfonyreloaded/lib/form/doctrine/RegionForm.class.php', + 'cityform' => '/home/gustavo/symfonyreloaded/lib/form/doctrine/CityForm.class.php', + 'languageform' => '/home/gustavo/symfonyreloaded/lib/form/doctrine/LanguageForm.class.php', + 'adform' => '/home/gustavo/symfonyreloaded/lib/form/doctrine/AdForm.class.php', + 'addescriptionform' => '/home/gustavo/symfonyreloaded/lib/form/doctrine/AdDescriptionForm.class.php', + 'officeadsform' => '/home/gustavo/symfonyreloaded/lib/form/doctrine/OfficeAdsForm.class.php', + 'userbasketform' => '/home/gustavo/symfonyreloaded/lib/form/doctrine/UserBasketForm.class.php', + 'companycategoryform' => '/home/gustavo/symfonyreloaded/lib/form/doctrine/CompanyCategoryForm.class.php', + 'companycategorydescriptionform' => '/home/gustavo/symfonyreloaded/lib/form/doctrine/CompanyCategoryDescriptionForm.class.php', + 'generalcategoryform' => '/home/gustavo/symfonyreloaded/lib/form/doctrine/GeneralCategoryForm.class.php', + 'generalcategorydescriptionform' => '/home/gustavo/symfonyreloaded/lib/form/doctrine/GeneralCategoryDescriptionForm.class.php', + 'baseformfilterdoctrine' => '/home/gustavo/symfonyreloaded/lib/filter/doctrine/BaseFormFilterDoctrine.class.php', + 'basesfguardgroupformfilter' => '/home/gustavo/symfonyreloaded/lib/filter/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardGroupFormFilter.class.php', + 'basesfguardpermissionformfilter' => '/home/gustavo/symfonyreloaded/lib/filter/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardPermissionFormFilter.class.php', + 'basesfguarduserformfilter' => '/home/gustavo/symfonyreloaded/lib/filter/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardUserFormFilter.class.php', + 'sfguardgroupformfilter' => '/home/gustavo/symfonyreloaded/lib/filter/doctrine/sfDoctrineGuardPlugin/sfGuardGroupFormFilter.class.php', + 'sfguardpermissionformfilter' => '/home/gustavo/symfonyreloaded/lib/filter/doctrine/sfDoctrineGuardPlugin/sfGuardPermissionFormFilter.class.php', + 'sfguarduserformfilter' => '/home/gustavo/symfonyreloaded/lib/filter/doctrine/sfDoctrineGuardPlugin/sfGuardUserFormFilter.class.php', + 'basecompanyformfilter' => '/home/gustavo/symfonyreloaded/lib/filter/doctrine/base/BaseCompanyFormFilter.class.php', + 'basecompanydescriptionformfilter' => '/home/gustavo/symfonyreloaded/lib/filter/doctrine/base/BaseCompanyDescriptionFormFilter.class.php', + 'baseofficeformfilter' => '/home/gustavo/symfonyreloaded/lib/filter/doctrine/base/BaseOfficeFormFilter.class.php', + 'basecountryformfilter' => '/home/gustavo/symfonyreloaded/lib/filter/doctrine/base/BaseCountryFormFilter.class.php', + 'baseregionformfilter' => '/home/gustavo/symfonyreloaded/lib/filter/doctrine/base/BaseRegionFormFilter.class.php', + 'basecityformfilter' => '/home/gustavo/symfonyreloaded/lib/filter/doctrine/base/BaseCityFormFilter.class.php', + 'baselanguageformfilter' => '/home/gustavo/symfonyreloaded/lib/filter/doctrine/base/BaseLanguageFormFilter.class.php', + 'baseadformfilter' => '/home/gustavo/symfonyreloaded/lib/filter/doctrine/base/BaseAdFormFilter.class.php', + 'baseaddescriptionformfilter' => '/home/gustavo/symfonyreloaded/lib/filter/doctrine/base/BaseAdDescriptionFormFilter.class.php', + 'baseofficeadsformfilter' => '/home/gustavo/symfonyreloaded/lib/filter/doctrine/base/BaseOfficeAdsFormFilter.class.php', + 'baseuserbasketformfilter' => '/home/gustavo/symfonyreloaded/lib/filter/doctrine/base/BaseUserBasketFormFilter.class.php', + 'basecompanycategoryformfilter' => '/home/gustavo/symfonyreloaded/lib/filter/doctrine/base/BaseCompanyCategoryFormFilter.class.php', + 'basecompanycategorydescriptionformfilter' => '/home/gustavo/symfonyreloaded/lib/filter/doctrine/base/BaseCompanyCategoryDescriptionFormFilter.class.php', + 'basegeneralcategoryformfilter' => '/home/gustavo/symfonyreloaded/lib/filter/doctrine/base/BaseGeneralCategoryFormFilter.class.php', + 'basegeneralcategorydescriptionformfilter' => '/home/gustavo/symfonyreloaded/lib/filter/doctrine/base/BaseGeneralCategoryDescriptionFormFilter.class.php', + 'companyformfilter' => '/home/gustavo/symfonyreloaded/lib/filter/doctrine/CompanyFormFilter.class.php', + 'companydescriptionformfilter' => '/home/gustavo/symfonyreloaded/lib/filter/doctrine/CompanyDescriptionFormFilter.class.php', + 'officeformfilter' => '/home/gustavo/symfonyreloaded/lib/filter/doctrine/OfficeFormFilter.class.php', + 'countryformfilter' => '/home/gustavo/symfonyreloaded/lib/filter/doctrine/CountryFormFilter.class.php', + 'regionformfilter' => '/home/gustavo/symfonyreloaded/lib/filter/doctrine/RegionFormFilter.class.php', + 'cityformfilter' => '/home/gustavo/symfonyreloaded/lib/filter/doctrine/CityFormFilter.class.php', + 'languageformfilter' => '/home/gustavo/symfonyreloaded/lib/filter/doctrine/LanguageFormFilter.class.php', + 'adformfilter' => '/home/gustavo/symfonyreloaded/lib/filter/doctrine/AdFormFilter.class.php', + 'addescriptionformfilter' => '/home/gustavo/symfonyreloaded/lib/filter/doctrine/AdDescriptionFormFilter.class.php', + 'officeadsformfilter' => '/home/gustavo/symfonyreloaded/lib/filter/doctrine/OfficeAdsFormFilter.class.php', + 'userbasketformfilter' => '/home/gustavo/symfonyreloaded/lib/filter/doctrine/UserBasketFormFilter.class.php', + 'companycategoryformfilter' => '/home/gustavo/symfonyreloaded/lib/filter/doctrine/CompanyCategoryFormFilter.class.php', + 'companycategorydescriptionformfilter' => '/home/gustavo/symfonyreloaded/lib/filter/doctrine/CompanyCategoryDescriptionFormFilter.class.php', + 'generalcategoryformfilter' => '/home/gustavo/symfonyreloaded/lib/filter/doctrine/GeneralCategoryFormFilter.class.php', + 'generalcategorydescriptionformfilter' => '/home/gustavo/symfonyreloaded/lib/filter/doctrine/GeneralCategoryDescriptionFormFilter.class.php', + + // project_model + 'basesfguardgroup' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardGroup.class.php', + 'basesfguardpermission' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardPermission.class.php', + 'basesfguardgrouppermission' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardGroupPermission.class.php', + 'basesfguarduser' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardUser.class.php', + 'basesfguarduserpermission' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardUserPermission.class.php', + 'basesfguardusergroup' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardUserGroup.class.php', + 'basesfguardrememberkey' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardRememberKey.class.php', + 'basesfguardforgotpassword' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardForgotPassword.class.php', + 'sfguardgrouptable' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardGroupTable.class.php', + 'sfguardgroup' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardGroup.class.php', + 'sfguardpermissiontable' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardPermissionTable.class.php', + 'sfguardpermission' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardPermission.class.php', + 'sfguardgrouppermissiontable' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardGroupPermissionTable.class.php', + 'sfguardgrouppermission' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardGroupPermission.class.php', + 'sfguardusertable' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardUserTable.class.php', + 'sfguarduser' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardUser.class.php', + 'sfguarduserpermissiontable' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardUserPermissionTable.class.php', + 'sfguarduserpermission' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardUserPermission.class.php', + 'sfguardusergrouptable' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardUserGroupTable.class.php', + 'sfguardusergroup' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardUserGroup.class.php', + 'sfguardrememberkeytable' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardRememberKeyTable.class.php', + 'sfguardrememberkey' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardRememberKey.class.php', + 'sfguardforgotpasswordtable' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardForgotPasswordTable.class.php', + 'sfguardforgotpassword' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardForgotPassword.class.php', + 'basecompany' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/base/BaseCompany.class.php', + 'basecompanydescription' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/base/BaseCompanyDescription.class.php', + 'baseoffice' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/base/BaseOffice.class.php', + 'basecountry' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/base/BaseCountry.class.php', + 'baseregion' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/base/BaseRegion.class.php', + 'basecity' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/base/BaseCity.class.php', + 'baselanguage' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/base/BaseLanguage.class.php', + 'basead' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/base/BaseAd.class.php', + 'baseaddescription' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/base/BaseAdDescription.class.php', + 'baseofficeads' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/base/BaseOfficeAds.class.php', + 'baseuserbasket' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/base/BaseUserBasket.class.php', + 'basecompanycategory' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/base/BaseCompanyCategory.class.php', + 'basecompanycategorydescription' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/base/BaseCompanyCategoryDescription.class.php', + 'basegeneralcategory' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/base/BaseGeneralCategory.class.php', + 'basegeneralcategorydescription' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/base/BaseGeneralCategoryDescription.class.php', + 'companytable' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/CompanyTable.class.php', + 'company' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/Company.class.php', + 'companydescriptiontable' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/CompanyDescriptionTable.class.php', + 'companydescription' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/CompanyDescription.class.php', + 'officetable' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/OfficeTable.class.php', + 'office' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/Office.class.php', + 'countrytable' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/CountryTable.class.php', + 'country' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/Country.class.php', + 'regiontable' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/RegionTable.class.php', + 'region' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/Region.class.php', + 'citytable' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/CityTable.class.php', + 'city' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/City.class.php', + 'languagetable' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/LanguageTable.class.php', + 'language' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/Language.class.php', + 'adtable' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/AdTable.class.php', + 'ad' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/Ad.class.php', + 'addescriptiontable' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/AdDescriptionTable.class.php', + 'addescription' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/AdDescription.class.php', + 'officeadstable' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/OfficeAdsTable.class.php', + 'officeads' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/OfficeAds.class.php', + 'userbaskettable' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/UserBasketTable.class.php', + 'userbasket' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/UserBasket.class.php', + 'companycategorytable' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/CompanyCategoryTable.class.php', + 'companycategory' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/CompanyCategory.class.php', + 'companycategorydescriptiontable' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/CompanyCategoryDescriptionTable.class.php', + 'companycategorydescription' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/CompanyCategoryDescription.class.php', + 'generalcategorytable' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/GeneralCategoryTable.class.php', + 'generalcategory' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/GeneralCategory.class.php', + 'generalcategorydescriptiontable' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/GeneralCategoryDescriptionTable.class.php', + 'generalcategorydescription' => '/home/gustavo/symfonyreloaded/lib/model/doctrine/GeneralCategoryDescription.class.php', + + // application + 'myuser' => '/home/gustavo/symfonyreloaded/apps/companyfront/lib/myUser.class.php', + + // modules +); diff --git a/cache/companyfront/dev/config/config_config_handlers.yml.php b/cache/companyfront/dev/config/config_config_handlers.yml.php new file mode 100644 index 0000000..0bb41f5 --- /dev/null +++ b/cache/companyfront/dev/config/config_config_handlers.yml.php @@ -0,0 +1,24 @@ +handlers['config/autoload.yml'] = new sfAutoloadConfigHandler(); +$this->handlers['config/databases.yml'] = new sfDatabaseConfigHandler(); +$this->handlers['config/settings.yml'] = new sfDefineEnvironmentConfigHandler(array ( + 'prefix' => 'sf_', +)); +$this->handlers['config/app.yml'] = new sfDefineEnvironmentConfigHandler(array ( + 'prefix' => 'app_', +)); +$this->handlers['config/factories.yml'] = new sfFactoryConfigHandler(); +$this->handlers['config/core_compile.yml'] = new sfCompileConfigHandler(); +$this->handlers['config/filters.yml'] = new sfFilterConfigHandler(); +$this->handlers['config/routing.yml'] = new sfRoutingConfigHandler(); +$this->handlers['modules/*/config/generator.yml'] = new sfGeneratorConfigHandler(); +$this->handlers['modules/*/config/view.yml'] = new sfViewConfigHandler(); +$this->handlers['modules/*/config/security.yml'] = new sfSecurityConfigHandler(); +$this->handlers['modules/*/config/cache.yml'] = new sfCacheConfigHandler(); +$this->handlers['modules/*/config/module.yml'] = new sfDefineEnvironmentConfigHandler(array ( + 'prefix' => 'mod_', + 'module' => true, +)); diff --git a/cache/companyfront/dev/config/config_databases.yml.php b/cache/companyfront/dev/config/config_databases.yml.php new file mode 100644 index 0000000..448bcbf --- /dev/null +++ b/cache/companyfront/dev/config/config_databases.yml.php @@ -0,0 +1,11 @@ + new sfDoctrineDatabase(array ( + 'dsn' => 'pgsql:host=localhost;dbname=mobileadvertising', + 'username' => 'postgres', + 'password' => NULL, + 'name' => 'doctrine', +)),); diff --git a/cache/companyfront/dev/config/config_factories.yml.php b/cache/companyfront/dev/config/config_factories.yml.php new file mode 100644 index 0000000..1e6515f --- /dev/null +++ b/cache/companyfront/dev/config/config_factories.yml.php @@ -0,0 +1,161 @@ +factories['logger'] = new $class($this->dispatcher, array_merge(array('auto_shutdown' => false), sfConfig::get('sf_factory_logger_parameters', array ( + 'level' => 'debug', +)))); + +$logger = new sfWebDebugLogger($this->dispatcher, array_merge(array('auto_shutdown' => false), array ( + 'level' => 'debug', + 'xdebug_logging' => false, + 'web_debug_class' => 'sfWebDebug', +))); +$this->factories['logger']->addLogger($logger); + +$logger = new sfFileLogger($this->dispatcher, array_merge(array('auto_shutdown' => false), array ( + 'level' => 'debug', + 'file' => '/home/gustavo/symfonyreloaded/log/companyfront_dev.log', +))); +$this->factories['logger']->addLogger($logger); + + + if (sfConfig::get('sf_i18n')) + { + $class = sfConfig::get('sf_factory_i18n', 'sfI18N'); + $cache = new sfFileCache(array ( + 'automatic_cleaning_factor' => 0, + 'cache_dir' => '/home/gustavo/symfonyreloaded/cache/companyfront/dev/i18n', + 'lifetime' => 31556926, + 'prefix' => '/home/gustavo/symfonyreloaded/apps/companyfront/i18n', +)); + $this->factories['i18n'] = new $class($this->configuration, $cache, array ( + 'source' => 'XLIFF', + 'debug' => false, + 'untranslated_prefix' => '[T]', + 'untranslated_suffix' => '[/T]', +)); + sfWidgetFormSchemaFormatter::setTranslationCallable(array($this->factories['i18n'], '__')); + } + + $class = sfConfig::get('sf_factory_controller', 'sfFrontWebController'); + $this->factories['controller'] = new $class($this); + $class = sfConfig::get('sf_factory_request', 'sfWebRequest'); + $this->factories['request'] = new $class($this->dispatcher, array(), array(), sfConfig::get('sf_factory_request_parameters', array ( + 'logging' => '1', + 'path_info_array' => 'SERVER', + 'path_info_key' => 'PATH_INFO', + 'relative_url_root' => NULL, + 'formats' => + array ( + 'txt' => 'text/plain', + 'js' => + array ( + 0 => 'application/javascript', + 1 => 'application/x-javascript', + 2 => 'text/javascript', + ), + 'css' => 'text/css', + 'json' => + array ( + 0 => 'application/json', + 1 => 'application/x-json', + ), + 'xml' => + array ( + 0 => 'text/xml', + 1 => 'application/xml', + 2 => 'application/x-xml', + ), + 'rdf' => 'application/rdf+xml', + 'atom' => 'application/atom+xml', + ), + 'no_script_name' => false, +)), sfConfig::get('sf_factory_request_attributes', array())); + $class = sfConfig::get('sf_factory_response', 'sfWebResponse'); + $this->factories['response'] = new $class($this->dispatcher, sfConfig::get('sf_factory_response_parameters', array_merge(array('http_protocol' => isset($_SERVER['SERVER_PROTOCOL']) ? $_SERVER['SERVER_PROTOCOL'] : null), array ( + 'logging' => '1', + 'charset' => 'utf-8', + 'send_http_headers' => true, +)))); + if ($this->factories['request'] instanceof sfWebRequest + && $this->factories['response'] instanceof sfWebResponse + && 'HEAD' == $this->factories['request']->getMethod()) + { + $this->factories['response']->setHeaderOnly(true); + } + + $class = sfConfig::get('sf_factory_routing', 'sfPatternRouting'); + $cache = null; + +$this->factories['routing'] = new $class($this->dispatcher, $cache, array_merge(array('auto_shutdown' => false, 'context' => $this->factories['request']->getRequestContext()), sfConfig::get('sf_factory_routing_parameters', array ( + 'load_configuration' => true, + 'suffix' => '', + 'default_module' => 'default', + 'default_action' => 'index', + 'debug' => '1', + 'logging' => '1', + 'generate_shortest_url' => true, + 'extra_parameters_as_query_string' => true, + 'cache' => NULL, +)))); +if ($parameters = $this->factories['routing']->parse($this->factories['request']->getPathInfo())) +{ + $this->factories['request']->addRequestParameters($parameters); +} + + $class = sfConfig::get('sf_factory_storage', 'sfSessionStorage'); + $this->factories['storage'] = new $class(array_merge(array( +'auto_shutdown' => false, 'session_id' => $this->getRequest()->getParameter('symfony'), +), sfConfig::get('sf_factory_storage_parameters', array ( + 'session_name' => 'symfony', +)))); + $class = sfConfig::get('sf_factory_user', 'myUser'); + $this->factories['user'] = new $class($this->dispatcher, $this->factories['storage'], array_merge(array('auto_shutdown' => false, 'culture' => $this->factories['request']->getParameter('sf_culture')), sfConfig::get('sf_factory_user_parameters', array ( + 'timeout' => 1800, + 'logging' => '1', + 'use_flash' => true, + 'default_culture' => 'en', +)))); + + if (sfConfig::get('sf_cache')) + { + $class = sfConfig::get('sf_factory_view_cache', 'sfFileCache'); + $cache = new $class(sfConfig::get('sf_factory_view_cache_parameters', array ( + 'automatic_cleaning_factor' => 0, + 'cache_dir' => '/home/gustavo/symfonyreloaded/cache/companyfront/dev/template', + 'lifetime' => 86400, + 'prefix' => '/home/gustavo/symfonyreloaded/apps/companyfront/template', +))); + $this->factories['viewCacheManager'] = new sfViewCacheManager($this, $cache, array ( + 'cache_key_use_vary_headers' => true, + 'cache_key_use_host_name' => true, +)); + } + else + { + $this->factories['viewCacheManager'] = null; + } + +require_once sfConfig::get('sf_symfony_lib_dir').'/vendor/swiftmailer/classes/Swift.php'; +Swift::registerAutoload(); +sfMailer::initialize(); +$this->setMailerConfiguration(array_merge(array('class' => sfConfig::get('sf_factory_mailer', 'sfMailer')), sfConfig::get('sf_factory_mailer_parameters', array ( + 'logging' => '1', + 'charset' => 'utf-8', + 'delivery_strategy' => 'none', + 'transport' => + array ( + 'class' => 'Swift_SmtpTransport', + 'param' => + array ( + 'host' => 'localhost', + 'port' => 25, + 'encryption' => NULL, + 'username' => NULL, + 'password' => NULL, + ), + ), +)))); + diff --git a/cache/companyfront/dev/config/config_routing.yml.php b/cache/companyfront/dev/config/config_routing.yml.php new file mode 100644 index 0000000..4c7ba6f --- /dev/null +++ b/cache/companyfront/dev/config/config_routing.yml.php @@ -0,0 +1,6 @@ +routes['homepage'] = unserialize('C:7:"sfRoute":1069:{a:11:{i:0;a:2:{i:0;a:4:{i:0;s:9:"separator";i:1;s:0:"";i:2;s:1:"/";i:3;N;}i:1;a:3:{i:0;s:9:"separator";i:1;s:1:"/";i:2;s:1:"/";}}i:1;a:8:{s:18:"load_configuration";b:1;s:6:"suffix";s:0:"";s:14:"default_module";s:7:"default";s:14:"default_action";s:5:"index";s:5:"debug";s:1:"1";s:7:"logging";s:1:"1";s:21:"generate_shortest_url";b:1;s:32:"extra_parameters_as_query_string";b:1;}i:2;a:15:{s:6:"suffix";s:0:"";s:17:"variable_prefixes";a:1:{i:0;s:1:":";}s:18:"segment_separators";a:2:{i:0;s:1:"/";i:1;s:1:".";}s:14:"variable_regex";s:8:"[\\w\\d_]+";s:10:"text_regex";s:3:".+?";s:21:"generate_shortest_url";b:1;s:32:"extra_parameters_as_query_string";b:1;s:18:"load_configuration";b:1;s:14:"default_module";s:7:"default";s:14:"default_action";s:5:"index";s:5:"debug";s:1:"1";s:7:"logging";s:1:"1";s:21:"variable_prefix_regex";s:6:"(?:\\:)";s:24:"segment_separators_regex";s:8:"(?:/|\\.)";s:22:"variable_content_regex";s:7:"[^/\\.]+";}i:3;s:1:"/";i:4;s:0:"";i:5;s:6:"#^/$#x";i:6;a:0:{}i:7;a:2:{s:6:"module";s:7:"default";s:6:"action";s:5:"index";}i:8;a:0:{}i:9;s:1:"/";i:10;b:0;}}'); +$this->routes['default_index'] = unserialize('C:7:"sfRoute":1144:{a:11:{i:0;a:2:{i:0;a:4:{i:0;s:9:"separator";i:1;s:0:"";i:2;s:1:"/";i:3;N;}i:1;a:4:{i:0;s:8:"variable";i:1;s:1:"/";i:2;s:7:":module";i:3;s:6:"module";}}i:1;a:8:{s:18:"load_configuration";b:1;s:6:"suffix";s:0:"";s:14:"default_module";s:7:"default";s:14:"default_action";s:5:"index";s:5:"debug";s:1:"1";s:7:"logging";s:1:"1";s:21:"generate_shortest_url";b:1;s:32:"extra_parameters_as_query_string";b:1;}i:2;a:15:{s:6:"suffix";s:0:"";s:17:"variable_prefixes";a:1:{i:0;s:1:":";}s:18:"segment_separators";a:2:{i:0;s:1:"/";i:1;s:1:".";}s:14:"variable_regex";s:8:"[\\w\\d_]+";s:10:"text_regex";s:3:".+?";s:21:"generate_shortest_url";b:1;s:32:"extra_parameters_as_query_string";b:1;s:18:"load_configuration";b:1;s:14:"default_module";s:7:"default";s:14:"default_action";s:5:"index";s:5:"debug";s:1:"1";s:7:"logging";s:1:"1";s:21:"variable_prefix_regex";s:6:"(?:\\:)";s:24:"segment_separators_regex";s:8:"(?:/|\\.)";s:22:"variable_content_regex";s:7:"[^/\\.]+";}i:3;s:8:"/:module";i:4;s:0:"";i:5;s:25:"#^/(?P[^/\\.]+)$#x";i:6;a:1:{s:6:"module";s:7:":module";}i:7;a:1:{s:6:"action";s:5:"index";}i:8;a:1:{s:6:"module";s:7:"[^/\\.]+";}i:9;s:0:"";i:10;b:0;}}'); +$this->routes['default'] = unserialize('C:7:"sfRoute":1477:{a:11:{i:0;a:6:{i:0;a:4:{i:0;s:9:"separator";i:1;s:0:"";i:2;s:1:"/";i:3;N;}i:1;a:4:{i:0;s:8:"variable";i:1;s:1:"/";i:2;s:7:":module";i:3;s:6:"module";}i:2;a:4:{i:0;s:9:"separator";i:1;s:0:"";i:2;s:1:"/";i:3;N;}i:3;a:4:{i:0;s:8:"variable";i:1;s:1:"/";i:2;s:7:":action";i:3;s:6:"action";}i:4;a:4:{i:0;s:9:"separator";i:1;s:0:"";i:2;s:1:"/";i:3;N;}i:5;a:4:{i:0;s:4:"text";i:1;s:1:"/";i:2;s:1:"*";i:3;N;}}i:1;a:8:{s:18:"load_configuration";b:1;s:6:"suffix";s:0:"";s:14:"default_module";s:7:"default";s:14:"default_action";s:5:"index";s:5:"debug";s:1:"1";s:7:"logging";s:1:"1";s:21:"generate_shortest_url";b:1;s:32:"extra_parameters_as_query_string";b:1;}i:2;a:15:{s:6:"suffix";s:0:"";s:17:"variable_prefixes";a:1:{i:0;s:1:":";}s:18:"segment_separators";a:2:{i:0;s:1:"/";i:1;s:1:".";}s:14:"variable_regex";s:8:"[\\w\\d_]+";s:10:"text_regex";s:3:".+?";s:21:"generate_shortest_url";b:1;s:32:"extra_parameters_as_query_string";b:1;s:18:"load_configuration";b:1;s:14:"default_module";s:7:"default";s:14:"default_action";s:5:"index";s:5:"debug";s:1:"1";s:7:"logging";s:1:"1";s:21:"variable_prefix_regex";s:6:"(?:\\:)";s:24:"segment_separators_regex";s:8:"(?:/|\\.)";s:22:"variable_content_regex";s:7:"[^/\\.]+";}i:3;s:18:"/:module/:action/*";i:4;s:0:"";i:5;s:69:"#^/(?P[^/\\.]+)/(?P[^/\\.]+)(?:(?:/(?P<_star>.*))?)?$#x";i:6;a:2:{s:6:"module";s:7:":module";s:6:"action";s:7:":action";}i:7;a:0:{}i:8;a:2:{s:6:"module";s:7:"[^/\\.]+";s:6:"action";s:7:"[^/\\.]+";}i:9;s:0:"";i:10;b:0;}}'); diff --git a/cache/companyfront/dev/config/config_settings.yml.php b/cache/companyfront/dev/config/config_settings.yml.php new file mode 100644 index 0000000..663b52c --- /dev/null +++ b/cache/companyfront/dev/config/config_settings.yml.php @@ -0,0 +1,38 @@ + 'default', + 'sf_error_404_action' => 'error404', + 'sf_login_module' => 'default', + 'sf_login_action' => 'login', + 'sf_secure_module' => 'default', + 'sf_secure_action' => 'secure', + 'sf_module_disabled_module' => 'default', + 'sf_module_disabled_action' => 'disabled', + 'sf_use_database' => true, + 'sf_i18n' => false, + 'sf_compressed' => false, + 'sf_check_lock' => false, + 'sf_csrf_secret' => '626f467f074a698f59eb00d786be7418125ef433', + 'sf_escaping_strategy' => true, + 'sf_escaping_method' => 'ESC_SPECIALCHARS', + 'sf_no_script_name' => false, + 'sf_cache' => false, + 'sf_etag' => false, + 'sf_web_debug' => true, + 'sf_error_reporting' => 32767, + 'sf_file_link_format' => NULL, + 'sf_admin_web_dir' => '/sf/sf_admin', + 'sf_web_debug_web_dir' => '/sf/sf_web_debug', + 'sf_standard_helpers' => array ( + 0 => 'Partial', + 1 => 'Cache', +), + 'sf_enabled_modules' => array ( + 0 => 'default', +), + 'sf_charset' => 'utf-8', + 'sf_logging_enabled' => true, + 'sf_default_culture' => 'en', +)); diff --git a/cache/companyfront/dev/config/modules_default_config_filters.yml.php b/cache/companyfront/dev/config/modules_default_config_filters.yml.php new file mode 100644 index 0000000..e290848 --- /dev/null +++ b/cache/companyfront/dev/config/modules_default_config_filters.yml.php @@ -0,0 +1,25 @@ +register($filter); + +// does this action require security? +if ($actionInstance->isSecure()) +{ + +list($class, $parameters) = (array) sfConfig::get('sf_security_filter', array('sfBasicSecurityFilter', array ( +))); +$filter = new $class(sfContext::getInstance(), $parameters); +$this->register($filter); +} + +list($class, $parameters) = (array) sfConfig::get('sf_execution_filter', array('sfExecutionFilter', array ( +))); +$filter = new $class(sfContext::getInstance(), $parameters); +$this->register($filter); + diff --git a/cache/companyfront/dev/config/modules_default_config_module.yml.php b/cache/companyfront/dev/config/modules_default_config_module.yml.php new file mode 100644 index 0000000..b23948d --- /dev/null +++ b/cache/companyfront/dev/config/modules_default_config_module.yml.php @@ -0,0 +1,7 @@ + true, + 'mod_default_view_class' => 'sfPHP', +)); diff --git a/cache/companyfront/dev/config/modules_default_config_security.yml.php b/cache/companyfront/dev/config/modules_default_config_security.yml.php new file mode 100644 index 0000000..cf2a563 --- /dev/null +++ b/cache/companyfront/dev/config/modules_default_config_security.yml.php @@ -0,0 +1,9 @@ +security = array ( + 'all' => + array ( + 'is_secure' => false, + ), +); diff --git a/cache/companyfront/dev/config/modules_default_config_view.yml.php b/cache/companyfront/dev/config/modules_default_config_view.yml.php new file mode 100644 index 0000000..f48e82a --- /dev/null +++ b/cache/companyfront/dev/config/modules_default_config_view.yml.php @@ -0,0 +1,24 @@ +context->getResponse(); + + + $templateName = sfConfig::get('symfony.view.'.$this->moduleName.'_'.$this->actionName.'_template', $this->actionName); + $this->setTemplate($templateName.$this->viewName.$this->getExtension()); + + + + if (null !== $layout = sfConfig::get('symfony.view.'.$this->moduleName.'_'.$this->actionName.'_layout')) + { + $this->setDecoratorTemplate(false === $layout ? false : $layout.$this->getExtension()); + } + else if (null === $this->getDecoratorTemplate() && !$this->context->getRequest()->isXmlHttpRequest()) + { + $this->setDecoratorTemplate('' == 'layout' ? false : 'layout'.$this->getExtension()); + } + $response->addHttpMeta('content-type', 'text/html', false); + + $response->addStylesheet('main.css', '', array ()); + + diff --git a/cache/project_autoload.cache b/cache/project_autoload.cache new file mode 100644 index 0000000..0783de1 --- /dev/null +++ b/cache/project_autoload.cache @@ -0,0 +1 @@ +a:3:{i:0;a:261:{s:28:"pluginsfguardgroupformfilter";s:118:"/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/filter/doctrine/PluginsfGuardGroupFormFilter.class.php";s:33:"pluginsfguardpermissionformfilter";s:123:"/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/filter/doctrine/PluginsfGuardPermissionFormFilter.class.php";s:27:"pluginsfguarduserformfilter";s:117:"/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/filter/doctrine/PluginsfGuardUserFormFilter.class.php";s:36:"basesfguardrequestforgotpasswordform";s:120:"/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/form/base/BasesfGuardRequestForgotPasswordForm.class.php";s:33:"basesfguardchangeuserpasswordform";s:126:"/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/form/doctrine/base/BasesfGuardChangeUserPasswordForm.class.php";s:21:"basesfguardformsignin";s:114:"/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/form/doctrine/base/BasesfGuardFormSignin.class.php";s:23:"basesfguardregisterform";s:116:"/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/form/doctrine/base/BasesfGuardRegisterForm.class.php";s:24:"basesfguarduseradminform";s:117:"/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/form/doctrine/base/BasesfGuardUserAdminForm.class.php";s:22:"pluginsfguardgroupform";s:110:"/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/form/doctrine/PluginsfGuardGroupForm.class.php";s:27:"pluginsfguardpermissionform";s:115:"/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/form/doctrine/PluginsfGuardPermissionForm.class.php";s:21:"pluginsfguarduserform";s:109:"/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/form/doctrine/PluginsfGuardUserForm.class.php";s:29:"sfguardchangeuserpasswordform";s:117:"/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/form/doctrine/sfGuardChangeUserPasswordForm.class.php";s:17:"sfguardformsignin";s:105:"/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/form/doctrine/sfGuardFormSignin.class.php";s:19:"sfguardregisterform";s:107:"/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/form/doctrine/sfGuardRegisterForm.class.php";s:20:"sfguarduseradminform";s:108:"/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/form/doctrine/sfGuardUserAdminForm.class.php";s:32:"sfguardrequestforgotpasswordform";s:111:"/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/form/sfGuardRequestForgotPasswordForm.class.php";s:27:"pluginsfguardforgotpassword";s:116:"/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/model/doctrine/PluginsfGuardForgotPassword.class.php";s:32:"pluginsfguardforgotpasswordtable";s:121:"/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/model/doctrine/PluginsfGuardForgotPasswordTable.class.php";s:18:"pluginsfguardgroup";s:107:"/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/model/doctrine/PluginsfGuardGroup.class.php";s:28:"pluginsfguardgrouppermission";s:117:"/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/model/doctrine/PluginsfGuardGroupPermission.class.php";s:33:"pluginsfguardgrouppermissiontable";s:122:"/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/model/doctrine/PluginsfGuardGroupPermissionTable.class.php";s:23:"pluginsfguardgrouptable";s:112:"/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/model/doctrine/PluginsfGuardGroupTable.class.php";s:23:"pluginsfguardpermission";s:112:"/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/model/doctrine/PluginsfGuardPermission.class.php";s:28:"pluginsfguardpermissiontable";s:117:"/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/model/doctrine/PluginsfGuardPermissionTable.class.php";s:24:"pluginsfguardrememberkey";s:113:"/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/model/doctrine/PluginsfGuardRememberKey.class.php";s:29:"pluginsfguardrememberkeytable";s:118:"/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/model/doctrine/PluginsfGuardRememberKeyTable.class.php";s:17:"pluginsfguarduser";s:106:"/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/model/doctrine/PluginsfGuardUser.class.php";s:22:"pluginsfguardusergroup";s:111:"/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/model/doctrine/PluginsfGuardUserGroup.class.php";s:27:"pluginsfguardusergrouptable";s:116:"/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/model/doctrine/PluginsfGuardUserGroupTable.class.php";s:27:"pluginsfguarduserpermission";s:116:"/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/model/doctrine/PluginsfGuardUserPermission.class.php";s:32:"pluginsfguarduserpermissiontable";s:121:"/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/model/doctrine/PluginsfGuardUserPermissionTable.class.php";s:22:"pluginsfguardusertable";s:111:"/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/model/doctrine/PluginsfGuardUserTable.class.php";s:14:"sfguardrouting";s:96:"/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/routing/sfGuardRouting.class.php";s:19:"sfguardaddgrouptask";s:98:"/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/task/sfGuardAddGroupTask.class.php";s:24:"sfguardaddpermissiontask";s:103:"/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/task/sfGuardAddPermissionTask.class.php";s:25:"sfguardchangepasswordtask";s:104:"/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/task/sfGuardChangePasswordTask.class.php";s:21:"sfguardcreateusertask";s:100:"/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/task/sfGuardCreateUserTask.class.php";s:28:"sfguardpromotesuperadmintask";s:107:"/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/task/sfGuardPromoteSuperAdminTask.class.php";s:19:"sfguardsecurityuser";s:98:"/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/user/sfGuardSecurityUser.class.php";s:20:"sfguardvalidatoruser";s:104:"/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/validator/sfGuardValidatorUser.class.php";s:26:"sfguardbasicsecurityfilter";s:100:"/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/sfGuardBasicSecurityFilter.class.php";s:23:"sfguardremembermefilter";s:97:"/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib/sfGuardRememberMeFilter.class.php";s:16:"sftesterdoctrine";s:113:"/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/test/sfTesterDoctrine.class.php";s:23:"sfdoctrineinsertsqltask";s:120:"/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineInsertSqlTask.class.php";s:36:"sfdoctrinegeneratemoduleforroutetask";s:133:"/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineGenerateModuleForRouteTask.class.php";s:29:"sfdoctrinecleanmodelfilestask";s:126:"/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineCleanModelFilesTask.class.php";s:21:"sfdoctrinemigratetask";s:118:"/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineMigrateTask.class.php";s:26:"sfdoctrinebuildfilterstask";s:123:"/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineBuildFiltersTask.class.php";s:38:"sfdoctrinegeneratemigrationsmodelstask";s:135:"/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineGenerateMigrationsModelsTask.class.php";s:34:"sfdoctrinegeneratemigrationsdbtask";s:131:"/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineGenerateMigrationsDbTask.class.php";s:19:"sfdoctrinebuildtask";s:116:"/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineBuildTask.class.php";s:22:"sfdoctrinedatadumptask";s:119:"/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineDataDumpTask.class.php";s:28:"sfdoctrinegeneratemoduletask";s:125:"/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineGenerateModuleTask.class.php";s:27:"sfdoctrinegenerateadmintask";s:124:"/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineGenerateAdminTask.class.php";s:31:"sfdoctrinegeneratemigrationtask";s:128:"/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineGenerateMigrationTask.class.php";s:21:"sfdoctrinebuilddbtask";s:118:"/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineBuildDbTask.class.php";s:24:"sfdoctrinebuildformstask";s:121:"/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineBuildFormsTask.class.php";s:31:"sfdoctrineconfiguredatabasetask";s:128:"/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineConfigureDatabaseTask.class.php";s:30:"sfdoctrinedeletemodelfilestask";s:127:"/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineDeleteModelFilesTask.class.php";s:22:"sfdoctrinedataloadtask";s:119:"/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineDataLoadTask.class.php";s:20:"sfdoctrinedropdbtask";s:117:"/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineDropDbTask.class.php";s:18:"sfdoctrinebasetask";s:115:"/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineBaseTask.class.php";s:27:"sfdoctrinecreatemodeltables";s:128:"/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineCreateModelTablesTask.class.php";s:22:"sfdoctrinebuildsqltask";s:119:"/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineBuildSqlTask.class.php";s:17:"sfdoctrinedqltask";s:114:"/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineDqlTask.class.php";s:25:"sfdoctrinebuildschematask";s:122:"/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineBuildSchemaTask.class.php";s:24:"sfdoctrinebuildmodeltask";s:121:"/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineBuildModelTask.class.php";s:36:"sfdoctrinegeneratemigrationsdifftask";s:133:"/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineGenerateMigrationsDiffTask.class.php";s:20:"sfformfilterdoctrine";s:117:"/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/form/sfFormFilterDoctrine.class.php";s:14:"sfformdoctrine";s:111:"/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/form/sfFormDoctrine.class.php";s:26:"sfwidgetformdoctrinechoice";s:125:"/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/widget/sfWidgetFormDoctrineChoice.class.php";s:18:"sfdoctrinedatabase";s:119:"/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/database/sfDoctrineDatabase.class.php";s:28:"sfdoctrineconnectionlistener";s:129:"/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/database/sfDoctrineConnectionListener.class.php";s:28:"sfdoctrineconnectionprofiler";s:129:"/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/database/sfDoctrineConnectionProfiler.class.php";s:25:"sfvalidatordoctrineunique";s:127:"/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/validator/sfValidatorDoctrineUnique.class.php";s:25:"sfvalidatordoctrinechoice";s:127:"/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/validator/sfValidatorDoctrineChoice.class.php";s:23:"sfwebdebugpaneldoctrine";s:121:"/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/debug/sfWebDebugPanelDoctrine.class.php";s:19:"sfdoctrinegenerator";s:121:"/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/generator/sfDoctrineGenerator.class.php";s:23:"sfdoctrineformgenerator";s:125:"/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/generator/sfDoctrineFormGenerator.class.php";s:16:"sfdoctrinecolumn";s:118:"/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/generator/sfDoctrineColumn.class.php";s:29:"sfdoctrineformfiltergenerator";s:131:"/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/generator/sfDoctrineFormFilterGenerator.class.php";s:13:"sfdoctrinecli";s:109:"/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/cli/sfDoctrineCli.class.php";s:25:"sfdoctrineroutecollection";s:125:"/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/routing/sfDoctrineRouteCollection.class.php";s:15:"sfdoctrineroute";s:115:"/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/routing/sfDoctrineRoute.class.php";s:19:"swift_doctrinespool";s:118:"/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/mailer/Swift_DoctrineSpool.class.php";s:15:"sfdoctrinepager";s:113:"/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/pager/sfDoctrinePager.class.php";s:26:"sfdoctrinerecordi18nfilter";s:125:"/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/record/sfDoctrineRecordI18nFilter.class.php";s:16:"sfdoctrinerecord";s:115:"/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/record/sfDoctrineRecord.class.php";s:19:"sfdoctrineexception";s:111:"/home/gustavo/symfonyreloaded/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/sfDoctrineException.class.php";s:8:"baseform";s:57:"/home/gustavo/symfonyreloaded/lib/form/BaseForm.class.php";s:16:"baseformdoctrine";s:74:"/home/gustavo/symfonyreloaded/lib/form/doctrine/BaseFormDoctrine.class.php";s:20:"basesfguardgroupform";s:105:"/home/gustavo/symfonyreloaded/lib/form/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardGroupForm.class.php";s:25:"basesfguardpermissionform";s:110:"/home/gustavo/symfonyreloaded/lib/form/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardPermissionForm.class.php";s:19:"basesfguarduserform";s:104:"/home/gustavo/symfonyreloaded/lib/form/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardUserForm.class.php";s:16:"sfguardgroupform";s:96:"/home/gustavo/symfonyreloaded/lib/form/doctrine/sfDoctrineGuardPlugin/sfGuardGroupForm.class.php";s:21:"sfguardpermissionform";s:101:"/home/gustavo/symfonyreloaded/lib/form/doctrine/sfDoctrineGuardPlugin/sfGuardPermissionForm.class.php";s:15:"sfguarduserform";s:95:"/home/gustavo/symfonyreloaded/lib/form/doctrine/sfDoctrineGuardPlugin/sfGuardUserForm.class.php";s:15:"basecompanyform";s:78:"/home/gustavo/symfonyreloaded/lib/form/doctrine/base/BaseCompanyForm.class.php";s:26:"basecompanydescriptionform";s:89:"/home/gustavo/symfonyreloaded/lib/form/doctrine/base/BaseCompanyDescriptionForm.class.php";s:14:"baseofficeform";s:77:"/home/gustavo/symfonyreloaded/lib/form/doctrine/base/BaseOfficeForm.class.php";s:15:"basecountryform";s:78:"/home/gustavo/symfonyreloaded/lib/form/doctrine/base/BaseCountryForm.class.php";s:14:"baseregionform";s:77:"/home/gustavo/symfonyreloaded/lib/form/doctrine/base/BaseRegionForm.class.php";s:12:"basecityform";s:75:"/home/gustavo/symfonyreloaded/lib/form/doctrine/base/BaseCityForm.class.php";s:20:"basecompanycategform";s:83:"/home/gustavo/symfonyreloaded/lib/form/doctrine/base/BaseCompanyCategForm.class.php";s:31:"basecompanycategdescriptionform";s:94:"/home/gustavo/symfonyreloaded/lib/form/doctrine/base/BaseCompanyCategDescriptionForm.class.php";s:20:"basegeneralcategform";s:83:"/home/gustavo/symfonyreloaded/lib/form/doctrine/base/BaseGeneralCategForm.class.php";s:31:"basegeneralcategdescriptionform";s:94:"/home/gustavo/symfonyreloaded/lib/form/doctrine/base/BaseGeneralCategDescriptionForm.class.php";s:16:"baselanguageform";s:79:"/home/gustavo/symfonyreloaded/lib/form/doctrine/base/BaseLanguageForm.class.php";s:10:"baseadform";s:73:"/home/gustavo/symfonyreloaded/lib/form/doctrine/base/BaseAdForm.class.php";s:21:"baseaddescriptionform";s:84:"/home/gustavo/symfonyreloaded/lib/form/doctrine/base/BaseAdDescriptionForm.class.php";s:17:"baseofficeadsform";s:80:"/home/gustavo/symfonyreloaded/lib/form/doctrine/base/BaseOfficeAdsForm.class.php";s:18:"baseuserbasketform";s:81:"/home/gustavo/symfonyreloaded/lib/form/doctrine/base/BaseUserBasketForm.class.php";s:23:"basecompanycategoryform";s:86:"/home/gustavo/symfonyreloaded/lib/form/doctrine/base/BaseCompanyCategoryForm.class.php";s:34:"basecompanycategorydescriptionform";s:97:"/home/gustavo/symfonyreloaded/lib/form/doctrine/base/BaseCompanyCategoryDescriptionForm.class.php";s:23:"basegeneralcategoryform";s:86:"/home/gustavo/symfonyreloaded/lib/form/doctrine/base/BaseGeneralCategoryForm.class.php";s:34:"basegeneralcategorydescriptionform";s:97:"/home/gustavo/symfonyreloaded/lib/form/doctrine/base/BaseGeneralCategoryDescriptionForm.class.php";s:11:"companyform";s:69:"/home/gustavo/symfonyreloaded/lib/form/doctrine/CompanyForm.class.php";s:22:"companydescriptionform";s:80:"/home/gustavo/symfonyreloaded/lib/form/doctrine/CompanyDescriptionForm.class.php";s:10:"officeform";s:68:"/home/gustavo/symfonyreloaded/lib/form/doctrine/OfficeForm.class.php";s:11:"countryform";s:69:"/home/gustavo/symfonyreloaded/lib/form/doctrine/CountryForm.class.php";s:10:"regionform";s:68:"/home/gustavo/symfonyreloaded/lib/form/doctrine/RegionForm.class.php";s:8:"cityform";s:66:"/home/gustavo/symfonyreloaded/lib/form/doctrine/CityForm.class.php";s:16:"companycategform";s:74:"/home/gustavo/symfonyreloaded/lib/form/doctrine/CompanyCategForm.class.php";s:27:"companycategdescriptionform";s:85:"/home/gustavo/symfonyreloaded/lib/form/doctrine/CompanyCategDescriptionForm.class.php";s:16:"generalcategform";s:74:"/home/gustavo/symfonyreloaded/lib/form/doctrine/GeneralCategForm.class.php";s:27:"generalcategdescriptionform";s:85:"/home/gustavo/symfonyreloaded/lib/form/doctrine/GeneralCategDescriptionForm.class.php";s:12:"languageform";s:70:"/home/gustavo/symfonyreloaded/lib/form/doctrine/LanguageForm.class.php";s:6:"adform";s:64:"/home/gustavo/symfonyreloaded/lib/form/doctrine/AdForm.class.php";s:17:"addescriptionform";s:75:"/home/gustavo/symfonyreloaded/lib/form/doctrine/AdDescriptionForm.class.php";s:13:"officeadsform";s:71:"/home/gustavo/symfonyreloaded/lib/form/doctrine/OfficeAdsForm.class.php";s:14:"userbasketform";s:72:"/home/gustavo/symfonyreloaded/lib/form/doctrine/UserBasketForm.class.php";s:19:"companycategoryform";s:77:"/home/gustavo/symfonyreloaded/lib/form/doctrine/CompanyCategoryForm.class.php";s:30:"companycategorydescriptionform";s:88:"/home/gustavo/symfonyreloaded/lib/form/doctrine/CompanyCategoryDescriptionForm.class.php";s:19:"generalcategoryform";s:77:"/home/gustavo/symfonyreloaded/lib/form/doctrine/GeneralCategoryForm.class.php";s:30:"generalcategorydescriptionform";s:88:"/home/gustavo/symfonyreloaded/lib/form/doctrine/GeneralCategoryDescriptionForm.class.php";s:22:"baseformfilterdoctrine";s:82:"/home/gustavo/symfonyreloaded/lib/filter/doctrine/BaseFormFilterDoctrine.class.php";s:26:"basesfguardgroupformfilter";s:113:"/home/gustavo/symfonyreloaded/lib/filter/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardGroupFormFilter.class.php";s:31:"basesfguardpermissionformfilter";s:118:"/home/gustavo/symfonyreloaded/lib/filter/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardPermissionFormFilter.class.php";s:25:"basesfguarduserformfilter";s:112:"/home/gustavo/symfonyreloaded/lib/filter/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardUserFormFilter.class.php";s:22:"sfguardgroupformfilter";s:104:"/home/gustavo/symfonyreloaded/lib/filter/doctrine/sfDoctrineGuardPlugin/sfGuardGroupFormFilter.class.php";s:27:"sfguardpermissionformfilter";s:109:"/home/gustavo/symfonyreloaded/lib/filter/doctrine/sfDoctrineGuardPlugin/sfGuardPermissionFormFilter.class.php";s:21:"sfguarduserformfilter";s:103:"/home/gustavo/symfonyreloaded/lib/filter/doctrine/sfDoctrineGuardPlugin/sfGuardUserFormFilter.class.php";s:21:"basecompanyformfilter";s:86:"/home/gustavo/symfonyreloaded/lib/filter/doctrine/base/BaseCompanyFormFilter.class.php";s:32:"basecompanydescriptionformfilter";s:97:"/home/gustavo/symfonyreloaded/lib/filter/doctrine/base/BaseCompanyDescriptionFormFilter.class.php";s:20:"baseofficeformfilter";s:85:"/home/gustavo/symfonyreloaded/lib/filter/doctrine/base/BaseOfficeFormFilter.class.php";s:21:"basecountryformfilter";s:86:"/home/gustavo/symfonyreloaded/lib/filter/doctrine/base/BaseCountryFormFilter.class.php";s:20:"baseregionformfilter";s:85:"/home/gustavo/symfonyreloaded/lib/filter/doctrine/base/BaseRegionFormFilter.class.php";s:18:"basecityformfilter";s:83:"/home/gustavo/symfonyreloaded/lib/filter/doctrine/base/BaseCityFormFilter.class.php";s:26:"basecompanycategformfilter";s:91:"/home/gustavo/symfonyreloaded/lib/filter/doctrine/base/BaseCompanyCategFormFilter.class.php";s:37:"basecompanycategdescriptionformfilter";s:102:"/home/gustavo/symfonyreloaded/lib/filter/doctrine/base/BaseCompanyCategDescriptionFormFilter.class.php";s:26:"basegeneralcategformfilter";s:91:"/home/gustavo/symfonyreloaded/lib/filter/doctrine/base/BaseGeneralCategFormFilter.class.php";s:37:"basegeneralcategdescriptionformfilter";s:102:"/home/gustavo/symfonyreloaded/lib/filter/doctrine/base/BaseGeneralCategDescriptionFormFilter.class.php";s:22:"baselanguageformfilter";s:87:"/home/gustavo/symfonyreloaded/lib/filter/doctrine/base/BaseLanguageFormFilter.class.php";s:16:"baseadformfilter";s:81:"/home/gustavo/symfonyreloaded/lib/filter/doctrine/base/BaseAdFormFilter.class.php";s:27:"baseaddescriptionformfilter";s:92:"/home/gustavo/symfonyreloaded/lib/filter/doctrine/base/BaseAdDescriptionFormFilter.class.php";s:23:"baseofficeadsformfilter";s:88:"/home/gustavo/symfonyreloaded/lib/filter/doctrine/base/BaseOfficeAdsFormFilter.class.php";s:24:"baseuserbasketformfilter";s:89:"/home/gustavo/symfonyreloaded/lib/filter/doctrine/base/BaseUserBasketFormFilter.class.php";s:29:"basecompanycategoryformfilter";s:94:"/home/gustavo/symfonyreloaded/lib/filter/doctrine/base/BaseCompanyCategoryFormFilter.class.php";s:40:"basecompanycategorydescriptionformfilter";s:105:"/home/gustavo/symfonyreloaded/lib/filter/doctrine/base/BaseCompanyCategoryDescriptionFormFilter.class.php";s:29:"basegeneralcategoryformfilter";s:94:"/home/gustavo/symfonyreloaded/lib/filter/doctrine/base/BaseGeneralCategoryFormFilter.class.php";s:40:"basegeneralcategorydescriptionformfilter";s:105:"/home/gustavo/symfonyreloaded/lib/filter/doctrine/base/BaseGeneralCategoryDescriptionFormFilter.class.php";s:17:"companyformfilter";s:77:"/home/gustavo/symfonyreloaded/lib/filter/doctrine/CompanyFormFilter.class.php";s:28:"companydescriptionformfilter";s:88:"/home/gustavo/symfonyreloaded/lib/filter/doctrine/CompanyDescriptionFormFilter.class.php";s:16:"officeformfilter";s:76:"/home/gustavo/symfonyreloaded/lib/filter/doctrine/OfficeFormFilter.class.php";s:17:"countryformfilter";s:77:"/home/gustavo/symfonyreloaded/lib/filter/doctrine/CountryFormFilter.class.php";s:16:"regionformfilter";s:76:"/home/gustavo/symfonyreloaded/lib/filter/doctrine/RegionFormFilter.class.php";s:14:"cityformfilter";s:74:"/home/gustavo/symfonyreloaded/lib/filter/doctrine/CityFormFilter.class.php";s:22:"companycategformfilter";s:82:"/home/gustavo/symfonyreloaded/lib/filter/doctrine/CompanyCategFormFilter.class.php";s:33:"companycategdescriptionformfilter";s:93:"/home/gustavo/symfonyreloaded/lib/filter/doctrine/CompanyCategDescriptionFormFilter.class.php";s:22:"generalcategformfilter";s:82:"/home/gustavo/symfonyreloaded/lib/filter/doctrine/GeneralCategFormFilter.class.php";s:33:"generalcategdescriptionformfilter";s:93:"/home/gustavo/symfonyreloaded/lib/filter/doctrine/GeneralCategDescriptionFormFilter.class.php";s:18:"languageformfilter";s:78:"/home/gustavo/symfonyreloaded/lib/filter/doctrine/LanguageFormFilter.class.php";s:12:"adformfilter";s:72:"/home/gustavo/symfonyreloaded/lib/filter/doctrine/AdFormFilter.class.php";s:23:"addescriptionformfilter";s:83:"/home/gustavo/symfonyreloaded/lib/filter/doctrine/AdDescriptionFormFilter.class.php";s:19:"officeadsformfilter";s:79:"/home/gustavo/symfonyreloaded/lib/filter/doctrine/OfficeAdsFormFilter.class.php";s:20:"userbasketformfilter";s:80:"/home/gustavo/symfonyreloaded/lib/filter/doctrine/UserBasketFormFilter.class.php";s:25:"companycategoryformfilter";s:85:"/home/gustavo/symfonyreloaded/lib/filter/doctrine/CompanyCategoryFormFilter.class.php";s:36:"companycategorydescriptionformfilter";s:96:"/home/gustavo/symfonyreloaded/lib/filter/doctrine/CompanyCategoryDescriptionFormFilter.class.php";s:25:"generalcategoryformfilter";s:85:"/home/gustavo/symfonyreloaded/lib/filter/doctrine/GeneralCategoryFormFilter.class.php";s:36:"generalcategorydescriptionformfilter";s:96:"/home/gustavo/symfonyreloaded/lib/filter/doctrine/GeneralCategoryDescriptionFormFilter.class.php";s:16:"basesfguardgroup";s:102:"/home/gustavo/symfonyreloaded/lib/model/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardGroup.class.php";s:21:"basesfguardpermission";s:107:"/home/gustavo/symfonyreloaded/lib/model/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardPermission.class.php";s:26:"basesfguardgrouppermission";s:112:"/home/gustavo/symfonyreloaded/lib/model/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardGroupPermission.class.php";s:15:"basesfguarduser";s:101:"/home/gustavo/symfonyreloaded/lib/model/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardUser.class.php";s:25:"basesfguarduserpermission";s:111:"/home/gustavo/symfonyreloaded/lib/model/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardUserPermission.class.php";s:20:"basesfguardusergroup";s:106:"/home/gustavo/symfonyreloaded/lib/model/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardUserGroup.class.php";s:22:"basesfguardrememberkey";s:108:"/home/gustavo/symfonyreloaded/lib/model/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardRememberKey.class.php";s:25:"basesfguardforgotpassword";s:111:"/home/gustavo/symfonyreloaded/lib/model/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardForgotPassword.class.php";s:17:"sfguardgrouptable";s:98:"/home/gustavo/symfonyreloaded/lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardGroupTable.class.php";s:12:"sfguardgroup";s:93:"/home/gustavo/symfonyreloaded/lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardGroup.class.php";s:22:"sfguardpermissiontable";s:103:"/home/gustavo/symfonyreloaded/lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardPermissionTable.class.php";s:17:"sfguardpermission";s:98:"/home/gustavo/symfonyreloaded/lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardPermission.class.php";s:27:"sfguardgrouppermissiontable";s:108:"/home/gustavo/symfonyreloaded/lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardGroupPermissionTable.class.php";s:22:"sfguardgrouppermission";s:103:"/home/gustavo/symfonyreloaded/lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardGroupPermission.class.php";s:16:"sfguardusertable";s:97:"/home/gustavo/symfonyreloaded/lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardUserTable.class.php";s:11:"sfguarduser";s:92:"/home/gustavo/symfonyreloaded/lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardUser.class.php";s:26:"sfguarduserpermissiontable";s:107:"/home/gustavo/symfonyreloaded/lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardUserPermissionTable.class.php";s:21:"sfguarduserpermission";s:102:"/home/gustavo/symfonyreloaded/lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardUserPermission.class.php";s:21:"sfguardusergrouptable";s:102:"/home/gustavo/symfonyreloaded/lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardUserGroupTable.class.php";s:16:"sfguardusergroup";s:97:"/home/gustavo/symfonyreloaded/lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardUserGroup.class.php";s:23:"sfguardrememberkeytable";s:104:"/home/gustavo/symfonyreloaded/lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardRememberKeyTable.class.php";s:18:"sfguardrememberkey";s:99:"/home/gustavo/symfonyreloaded/lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardRememberKey.class.php";s:26:"sfguardforgotpasswordtable";s:107:"/home/gustavo/symfonyreloaded/lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardForgotPasswordTable.class.php";s:21:"sfguardforgotpassword";s:102:"/home/gustavo/symfonyreloaded/lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardForgotPassword.class.php";s:11:"basecompany";s:75:"/home/gustavo/symfonyreloaded/lib/model/doctrine/base/BaseCompany.class.php";s:22:"basecompanydescription";s:86:"/home/gustavo/symfonyreloaded/lib/model/doctrine/base/BaseCompanyDescription.class.php";s:10:"baseoffice";s:74:"/home/gustavo/symfonyreloaded/lib/model/doctrine/base/BaseOffice.class.php";s:11:"basecountry";s:75:"/home/gustavo/symfonyreloaded/lib/model/doctrine/base/BaseCountry.class.php";s:10:"baseregion";s:74:"/home/gustavo/symfonyreloaded/lib/model/doctrine/base/BaseRegion.class.php";s:8:"basecity";s:72:"/home/gustavo/symfonyreloaded/lib/model/doctrine/base/BaseCity.class.php";s:16:"basecompanycateg";s:80:"/home/gustavo/symfonyreloaded/lib/model/doctrine/base/BaseCompanyCateg.class.php";s:27:"basecompanycategdescription";s:91:"/home/gustavo/symfonyreloaded/lib/model/doctrine/base/BaseCompanyCategDescription.class.php";s:16:"basegeneralcateg";s:80:"/home/gustavo/symfonyreloaded/lib/model/doctrine/base/BaseGeneralCateg.class.php";s:27:"basegeneralcategdescription";s:91:"/home/gustavo/symfonyreloaded/lib/model/doctrine/base/BaseGeneralCategDescription.class.php";s:12:"baselanguage";s:76:"/home/gustavo/symfonyreloaded/lib/model/doctrine/base/BaseLanguage.class.php";s:6:"basead";s:70:"/home/gustavo/symfonyreloaded/lib/model/doctrine/base/BaseAd.class.php";s:17:"baseaddescription";s:81:"/home/gustavo/symfonyreloaded/lib/model/doctrine/base/BaseAdDescription.class.php";s:13:"baseofficeads";s:77:"/home/gustavo/symfonyreloaded/lib/model/doctrine/base/BaseOfficeAds.class.php";s:14:"baseuserbasket";s:78:"/home/gustavo/symfonyreloaded/lib/model/doctrine/base/BaseUserBasket.class.php";s:19:"basecompanycategory";s:83:"/home/gustavo/symfonyreloaded/lib/model/doctrine/base/BaseCompanyCategory.class.php";s:30:"basecompanycategorydescription";s:94:"/home/gustavo/symfonyreloaded/lib/model/doctrine/base/BaseCompanyCategoryDescription.class.php";s:19:"basegeneralcategory";s:83:"/home/gustavo/symfonyreloaded/lib/model/doctrine/base/BaseGeneralCategory.class.php";s:30:"basegeneralcategorydescription";s:94:"/home/gustavo/symfonyreloaded/lib/model/doctrine/base/BaseGeneralCategoryDescription.class.php";s:12:"companytable";s:71:"/home/gustavo/symfonyreloaded/lib/model/doctrine/CompanyTable.class.php";s:7:"company";s:66:"/home/gustavo/symfonyreloaded/lib/model/doctrine/Company.class.php";s:23:"companydescriptiontable";s:82:"/home/gustavo/symfonyreloaded/lib/model/doctrine/CompanyDescriptionTable.class.php";s:18:"companydescription";s:77:"/home/gustavo/symfonyreloaded/lib/model/doctrine/CompanyDescription.class.php";s:11:"officetable";s:70:"/home/gustavo/symfonyreloaded/lib/model/doctrine/OfficeTable.class.php";s:6:"office";s:65:"/home/gustavo/symfonyreloaded/lib/model/doctrine/Office.class.php";s:12:"countrytable";s:71:"/home/gustavo/symfonyreloaded/lib/model/doctrine/CountryTable.class.php";s:7:"country";s:66:"/home/gustavo/symfonyreloaded/lib/model/doctrine/Country.class.php";s:11:"regiontable";s:70:"/home/gustavo/symfonyreloaded/lib/model/doctrine/RegionTable.class.php";s:6:"region";s:65:"/home/gustavo/symfonyreloaded/lib/model/doctrine/Region.class.php";s:9:"citytable";s:68:"/home/gustavo/symfonyreloaded/lib/model/doctrine/CityTable.class.php";s:4:"city";s:63:"/home/gustavo/symfonyreloaded/lib/model/doctrine/City.class.php";s:17:"companycategtable";s:76:"/home/gustavo/symfonyreloaded/lib/model/doctrine/CompanyCategTable.class.php";s:12:"companycateg";s:71:"/home/gustavo/symfonyreloaded/lib/model/doctrine/CompanyCateg.class.php";s:28:"companycategdescriptiontable";s:87:"/home/gustavo/symfonyreloaded/lib/model/doctrine/CompanyCategDescriptionTable.class.php";s:23:"companycategdescription";s:82:"/home/gustavo/symfonyreloaded/lib/model/doctrine/CompanyCategDescription.class.php";s:17:"generalcategtable";s:76:"/home/gustavo/symfonyreloaded/lib/model/doctrine/GeneralCategTable.class.php";s:12:"generalcateg";s:71:"/home/gustavo/symfonyreloaded/lib/model/doctrine/GeneralCateg.class.php";s:28:"generalcategdescriptiontable";s:87:"/home/gustavo/symfonyreloaded/lib/model/doctrine/GeneralCategDescriptionTable.class.php";s:23:"generalcategdescription";s:82:"/home/gustavo/symfonyreloaded/lib/model/doctrine/GeneralCategDescription.class.php";s:13:"languagetable";s:72:"/home/gustavo/symfonyreloaded/lib/model/doctrine/LanguageTable.class.php";s:8:"language";s:67:"/home/gustavo/symfonyreloaded/lib/model/doctrine/Language.class.php";s:7:"adtable";s:66:"/home/gustavo/symfonyreloaded/lib/model/doctrine/AdTable.class.php";s:2:"ad";s:61:"/home/gustavo/symfonyreloaded/lib/model/doctrine/Ad.class.php";s:18:"addescriptiontable";s:77:"/home/gustavo/symfonyreloaded/lib/model/doctrine/AdDescriptionTable.class.php";s:13:"addescription";s:72:"/home/gustavo/symfonyreloaded/lib/model/doctrine/AdDescription.class.php";s:14:"officeadstable";s:73:"/home/gustavo/symfonyreloaded/lib/model/doctrine/OfficeAdsTable.class.php";s:9:"officeads";s:68:"/home/gustavo/symfonyreloaded/lib/model/doctrine/OfficeAds.class.php";s:15:"userbaskettable";s:74:"/home/gustavo/symfonyreloaded/lib/model/doctrine/UserBasketTable.class.php";s:10:"userbasket";s:69:"/home/gustavo/symfonyreloaded/lib/model/doctrine/UserBasket.class.php";s:20:"companycategorytable";s:79:"/home/gustavo/symfonyreloaded/lib/model/doctrine/CompanyCategoryTable.class.php";s:15:"companycategory";s:74:"/home/gustavo/symfonyreloaded/lib/model/doctrine/CompanyCategory.class.php";s:31:"companycategorydescriptiontable";s:90:"/home/gustavo/symfonyreloaded/lib/model/doctrine/CompanyCategoryDescriptionTable.class.php";s:26:"companycategorydescription";s:85:"/home/gustavo/symfonyreloaded/lib/model/doctrine/CompanyCategoryDescription.class.php";s:20:"generalcategorytable";s:79:"/home/gustavo/symfonyreloaded/lib/model/doctrine/GeneralCategoryTable.class.php";s:15:"generalcategory";s:74:"/home/gustavo/symfonyreloaded/lib/model/doctrine/GeneralCategory.class.php";s:31:"generalcategorydescriptiontable";s:90:"/home/gustavo/symfonyreloaded/lib/model/doctrine/GeneralCategoryDescriptionTable.class.php";s:26:"generalcategorydescription";s:85:"/home/gustavo/symfonyreloaded/lib/model/doctrine/GeneralCategoryDescription.class.php";}i:1;a:1:{i:4;s:63:"/home/gustavo/symfonyreloaded/plugins/sfDoctrineGuardPlugin/lib";}i:2;a:0:{}} \ No newline at end of file diff --git a/config/ProjectConfiguration.class.php b/config/ProjectConfiguration.class.php new file mode 100644 index 0000000..1015543 --- /dev/null +++ b/config/ProjectConfiguration.class.php @@ -0,0 +1,13 @@ +enablePlugins('sfDoctrinePlugin'); + $this->enablePlugins('sfDoctrineGuardPlugin'); + } +} diff --git a/config/databases.yml b/config/databases.yml new file mode 100644 index 0000000..592be6f --- /dev/null +++ b/config/databases.yml @@ -0,0 +1,10 @@ +# You can find more information about this file on the symfony website: +# http://www.symfony-project.org/reference/1_4/en/07-Databases + +all: + doctrine: + class: sfDoctrineDatabase + param: + dsn: 'pgsql:host=localhost;dbname=mobileadvertising' + username: postgres + password: null diff --git a/config/doctrine/schema.yml b/config/doctrine/schema.yml new file mode 100644 index 0000000..685b535 --- /dev/null +++ b/config/doctrine/schema.yml @@ -0,0 +1,141 @@ +# +# MOBIADS schema +# +# Hopefully good enough. +# + +Company: + columns: + user_id: { type: integer (4), notnull: true } + company_cif: { type: string(255), notnull: true, unique: true } + relations: + User: { class: sfGuardUser, local: user_id, onDelete: CASCADE } + +CompanyDescription: + columns: + company_id: { type: integer, notnull: true } + language_id: { type: integer, notnull: true } + company_name: { type: string(255), notnull: true } + relations: + Company: { onDelete: CASCADE, local: company_id, foreign: id } + Language: { onDelete: CASCADE, local: language_id, foreign: id } + +Office: + actAs: + Timestampable: + columns: + company_id: { type: integer, notnull: true } + city_id: { type: integer } + office_gps: { type: blob } + office_street_address: { type: string(255), notnull: true } + office_zip: { type: string(32), notnull: true } + relations: + Company: { onDelete: CASCADE, local: company_id, foreign: id } + City: { onDelete: SET NULL, local: city_id, foreign: id } + +Country: + columns: + country_name: { type: string(80), notnull: true } + iso_code_2: { type: string(2), notnull: true } + iso_code_3: { type: string(3), notnull: true } + +Region: + columns: + country_id: { type: integer, notnull: true } + region_name: { type: string(64), notnull: true } #Dummy name if there is not Region + relations: + Country: { onDelete: CASCADE, local: country_id, foreign: id } + +City: + columns: + city_name: { type: string(64), notnull: true } + region_id: { type: integer, notnull: true } + relations: + Region: { onDelete: CASCADE, local: region_id, foreign: id } + +CompanyCategory: + actAs: + Timestampable: + NestedSet: + hasManyRoots: true + rootColumnName: root_id + columns: + company_id: { type: integer, notnull: true } + general_categ_id: { type: integer } + relations: + Company: { onDelete: CASCADE, local: company_id, foreign: id } + GeneralCategory: { onDelete: SET NULL, local: general_categ_id, foreign: id } + +CompanyCategoryDescription: + columns: + language_id: { type: integer, notnull: true } + company_categ_id: { type: integer, notnull: true } + company_categ_name: { type: string (255), notnull: true } + company_categ_description: { type: text } + relations: + Language: { onDelete: CASCADE, local: language_id, foreign: id } + CompanyCategory: { onDelete: CASCADE, local: company_categ_id, foreign: id } + +GeneralCategory: + actAs: + Timestampable: + NestedSet: + hasManyRoots: true + rootColumnName: root_id + +GeneralCategoryDescription: + columns: + language_id: { type: integer, notnull: true } + general_categ_id: { type: integer, notnull: true } + general_categ_name: { type: string (255), notnull: true, unique: true } + general_categ_description: { type: text } + relations: + Language: { onDelete: CASCADE, local: language_id, foreign: id } + GeneralCategory: { onDelete: CASCADE, local: general_categ_id, foreign: id } + +Language: + columns: + language_name: { type: string (255), notnull: true, unique: true } + code: { type: string (3), notnull: true, unique: true } #Using ISO 639-3 + +Ad: + actAs: [Timestampable] + columns: + company_id: { type: integer, notnull: true } + company_categ_id: { type: integer } + ad_mobile_image_link: { type: string (3000), notnull: true } + relations: + Company: { onDelete: CASCADE, local: company_id, foreign: id } + CompanyCategory: { onDelete: SET NULL, local: company_categ_id, foreign: id } + +AdDescription: + columns: + language_id: { type: integer, notnull: true } + ad_id: { type: integer, notnull: true } + ad_name: { type: string (255), notnull: true } + ad_description: { type: text } + ad_mobile_text: { type: string (500), notnull: true } + ad_link: { type: string (3000), notnull: true } + relations: + Language: { onDelete: CASCADE, local: language_id, foreign: id } + Ad: { onDelete: CASCADE, local: ad_id, foreign: id } + +OfficeAds: + columns: + office_id: { type: integer (4), notnull: true } + ad_id: { type: integer, notnull: true } + relations: + Office: { onDelete: CASCADE, local: office_id, foreign: id } + Ad: { onDelete: CASCADE, local: ad_id, foreign: id } + +UserBasket: + columns: + user_id: { type: integer (4), notnull: true } + general_categ_id: { type: integer, notnull: true } + relations: + User: + class: sfGuardUser + local: user_id + onDelete: CASCADE + GeneralCategory: { onDelete: CASCADE, local: general_categ_id, foreign: id } + diff --git a/config/properties.ini b/config/properties.ini new file mode 100644 index 0000000..379c387 --- /dev/null +++ b/config/properties.ini @@ -0,0 +1,4 @@ +[symfony] + name=mobiads + author=Your name here + orm=Doctrine diff --git a/config/rsync_exclude.txt b/config/rsync_exclude.txt new file mode 100644 index 0000000..8e1f05b --- /dev/null +++ b/config/rsync_exclude.txt @@ -0,0 +1,15 @@ +# Project files +/cache/* +/log/* +/web/*_dev.php +/web/uploads/* + +# SCM files +.arch-params +.bzr +_darcs +.git +.hg +.monotone +.svn +CVS diff --git a/cscope.out b/cscope.out new file mode 100644 index 0000000..f75531a --- /dev/null +++ b/cscope.out @@ -0,0 +1,895116 @@ +cscope 15 $HOME/symfonyreloaded/mobiads 0005508700 + @apps/companyfront/config/companyfrontConfiguration.class.php + +1 + +2 < +html + + gxmÊs +="h‰p://www.w3.Üg/1999/xhtml" +xml +: +Ïng +="en"†ang="en"> + +3 < +h—d +> + +4 + +5 + +6 + +7 < +lšk + +»l +="shÜtcuˆicÚ" +h»f +="/favicon.ico" /> + +8 + +9 + +10 + +11 < +body +> + +12 + +13 + +14 + + @cache/.pear/sfDoctrineGuardPlugin-5.0.0/config/sfDoctrineGuardPluginConfiguration.class.php + +1 +di¥©ch” +-> + `cÚÃù +('routšg.lßd_cÚfigu¿tiÚ', + `¬¿y +('sfGuardRouting', 'listenToRoutingLoadConfigurationEvent')); + +32 + `fܗch + ( + `¬¿y +('sfGu¬dU£r', 'sfGu¬dGroup', 'sfGu¬dP”missiÚ', 'sfGu¬dRegi¡”', 'sfGu¬dFÜgÙPasswÜd'è +as + +$moduË +) + +34 ià( + `š_¬¿y +( +$moduË +, +sfCÚfig +:: + `g‘ +('sf_’abËd_moduËs', + `¬¿y +()))) + +36 +$this +-> +di¥©ch” +-> + `cÚÃù +('routšg.lßd_cÚfigu¿tiÚ', + `¬¿y +('sfGu¬dRoutšg', 'addRou‹FÜ'. + `¡r_»¶aû +('sfGu¬d', '', +$moduË +))); + +40 + } +} + + @cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/filter/doctrine/PluginsfGuardGroupFormFilter.class.php + +1 +widg‘Schema +['emaž_add»ss'] = +Ãw + + `sfWidg‘FÜmIÅut +(); + +16 +$this +-> +v®id©ÜSchema +['emaž_add»ss'] = +Ãw + + `sfV®id©ÜSŒšg +(); + +18 +$this +-> +widg‘Schema +-> + `£tNameFÜm© +('forgot_password[%s]'); + +21 +public + +funùiÚ + + $isV®id +() + +23 +$v®id + = +·»Á +:: + `isV®id +(); + +24 ià( +$v®id +) + +26 +$v®ues + = +$this +-> + `g‘V®ues +(); + +27 +$this +-> +u£r + = +Doùrše_CÜe +:: + `g‘TabË +('sfGuardUser') + +28 -> + `ü—‹Qu”y +('u') + +29 -> + `wh”e +('u.emaž_add»s ð?', +$v®ues +['email_address']) + +30 -> + `ãtchOà +(); + +32 ià( +$this +-> +u£r +) + +34  +Œue +; + +36  +çl£ +; + +39  +çl£ +; + +41 + } +} + + @cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/PluginsfGuardGroupForm.class.php + +1 +widg‘Schema +['u£rs_li¡']-> + `£tLab– +('Users'); + +26 +$this +-> +widg‘Schema +['³rmissiÚs_li¡']-> + `£tLab– +('Permissions'); + +28 + } +} + + @cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/PluginsfGuardPermissionForm.class.php + +1 +widg‘Schema +['groups_li¡']-> + `£tLab– +('Groups'); + +23 +$this +-> +widg‘Schema +['u£rs_li¡']-> + `£tLab– +('Users'); + +25 + } +} + + @cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/PluginsfGuardUserForm.class.php + +1 + `u£F›lds +( + `¬¿y +('password')); + +19 +$this +-> +widg‘Schema +['·sswÜd'] = +Ãw + + `sfWidg‘FÜmIÅutPasswÜd +(); + +20 +$this +-> +v®id©ÜSchema +['·sswÜd']-> + `£tO±iÚ +('»quœed', +Œue +); + +21 +$this +-> +widg‘Schema +['·sswÜd_agaš'] = +Ãw + + `sfWidg‘FÜmIÅutPasswÜd +(); + +22 +$this +-> +v®id©ÜSchema +['·sswÜd_agaš'] = +þÚe + $this->validatorSchema['password']; + +23 +$this +-> +v®id©ÜSchema +['·sswÜd_agaš']-> + `£tO±iÚ +('»quœed', +Œue +); + +25 +$this +-> + `m”gePo¡V®id©Ü +( +Ãw + + `sfV®id©ÜSchemaCom·» +('·sswÜd', +sfV®id©ÜSchemaCom·» +:: +EQUAL +, '·sswÜd_agaš', + `¬¿y +(),‡rray('invalid' => 'Thewo…asswords must behe same.'))); + +27 + } +} + + @cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/base/BasesfGuardFormSignin.class.php + +1 + `£tWidg‘s +( + `¬¿y +( + +20 'u£ºame' => +Ãw + + `sfWidg‘FÜmIÅutText +(), + +21 '·sswÜd' => +Ãw + + `sfWidg‘FÜmIÅutPasswÜd +( + `¬¿y +('type' => 'password')), + +22 '»memb”' => +Ãw + + `sfWidg‘FÜmIÅutCheckbox +(), + +25 +$this +-> + `£tV®id©Üs +( + `¬¿y +( + +26 'u£ºame' => +Ãw + + `sfV®id©ÜSŒšg +(), + +27 '·sswÜd' => +Ãw + + `sfV®id©ÜSŒšg +(), + +28 '»memb”' => +Ãw + + `sfV®id©ÜBoޗn +(), + +31 ià( +sfCÚfig +:: + `g‘ +('­p_sf_gu¬d_¶ugš_®low_logš_w™h_emaž', +Œue +)) + +33 +$this +-> +widg‘Schema +['u£ºame']-> + `£tLab– +('Username or E-Mail'); + +36 +$this +-> +v®id©ÜSchema +-> + `£tPo¡V®id©Ü +( +Ãw + + `sfGu¬dV®id©ÜU£r +()); + +38 +$this +-> +widg‘Schema +-> + `£tNameFÜm© +('signin[%s]'); + +40 + } +} + + @cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/base/BasesfGuardRegisterForm.class.php + +1 +v®id©ÜSchema +['·sswÜd']-> + `£tO±iÚ +('»quœed', +Œue +); + +27 + } +} + + @cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/base/BasesfGuardUserAdminForm.class.php + +1 +widg‘Schema +['groups_li¡']-> + `£tLab– +('Groups'); + +29 +$this +-> +widg‘Schema +['³rmissiÚs_li¡']-> + `£tLab– +('Permissions'); + +31 +$this +-> +widg‘Schema +['·sswÜd'] = +Ãw + + `sfWidg‘FÜmIÅutPasswÜd +(); + +32 +$this +-> +v®id©ÜSchema +['·sswÜd']-> + `£tO±iÚ +('»quœed', +çl£ +); + +33 +$this +-> +widg‘Schema +['·sswÜd_agaš'] = +Ãw + + `sfWidg‘FÜmIÅutPasswÜd +(); + +34 +$this +-> +v®id©ÜSchema +['·sswÜd_agaš'] = +þÚe + $this->validatorSchema['password']; + +36 +$this +-> +widg‘Schema +-> + `moveF›ld +('password_again', 'after', 'password'); + +38 +$this +-> + `m”gePo¡V®id©Ü +( +Ãw + + `sfV®id©ÜSchemaCom·» +('·sswÜd', +sfV®id©ÜSchemaCom·» +:: +EQUAL +, '·sswÜd_agaš', + `¬¿y +(),‡rray('invalid' => 'Thewo…asswords must behe same.'))); + +40 + } +} + + @cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/form/doctrine/sfGuardChangeUserPasswordForm.class.php + +1 + `g‘Name +().' ('.$this-> + `g‘U£ºame +().')'; + +33 +public + +funùiÚ + + $g‘Name +() + +35  + `Œim +( +$this +-> + `g‘Fœ¡Name +().' '.$this-> + `g‘La¡Name +()); + +36 + } +} + +43 +public + +funùiÚ + + $£tPasswÜd +( +$·sswÜd +) + +45 ià(! +$·sswÜd + && 0 =ð + `¡¾’ +($password)) + +50 ià(! +$§É + = +$this +-> + `g‘S®t +()) + +52 +$§É + = + `md5 +( + `¿nd +(100000, 999999). +$this +-> + `g‘U£ºame +()); + +53 +$this +-> + `£tS®t +( +$§É +); + +55 +$modif›d + = +$this +-> + `g‘Modif›d +(); + +56 ià((! +$®gܙhm + = +$this +-> + `g‘Algܙhm +()è|| ( + `is£t +( +$modif›d +['®gܙhm']è&& $modif›d['®gܙhm'] =ð$this-> + `g‘TabË +()-> + `g‘DeçuÉV®ueOf +('algorithm'))) + +58 +$®gܙhm + = +sfCÚfig +:: + `g‘ +('app_sf_guard_plugin_algorithm_callable', 'sha1'); + +60 +$®gܙhmAsSŒ + = + `is_¬¿y +( +$®gܙhm +) ? $algorithm[0].'::'.$algorithm[1] : $algorithm; + +61 ià(! + `is_ÿÎabË +( +$®gܙhm +)) + +63 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('Th®gܙhm c®ÏbË "%s" i nÙ c®ÏbË.', +$®gܙhmAsSŒ +)); + +65 +$this +-> + `£tAlgܙhm +( +$®gܙhmAsSŒ +); + +67 +$this +-> + `_£t +('·sswÜd', + `ÿÎ_u£r_func_¬¿y +( +$®gܙhm +, + `¬¿y +( +$§É +. +$·sswÜd +))); + +68 + } +} + +76 +public + +funùiÚ + + $checkPasswÜd +( +$·sswÜd +) + +78 ià( +$ÿÎabË + = +sfCÚfig +:: + `g‘ +('app_sf_guard_plugin_check_password_callable')) + +80  + `ÿÎ_u£r_func_¬¿y +( +$ÿÎabË +, + `¬¿y +( +$this +-> + `g‘U£ºame +(), +$·sswÜd +, $this)); + +84  +$this +-> + `checkPasswÜdByGu¬d +( +$·sswÜd +); + +86 + } +} + +95 +public + +funùiÚ + + $checkPasswÜdByGu¬d +( +$·sswÜd +) + +97 +$®gܙhm + = +$this +-> + `g‘Algܙhm +(); + +98 ià( +çl£ + !=ð +$pos + = + `¡½os +( +$®gܙhm +, '::')) + +100 +$®gܙhm + = + `¬¿y +( + `sub¡r +($®gܙhm, 0, +$pos +), substr($algorithm, $pos + 2)); + +102 ià(! + `is_ÿÎabË +( +$®gܙhm +)) + +104 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('Th®gܙhm c®ÏbË "%s" i nÙ c®ÏbË.', +$®gܙhm +)); + +107  +$this +-> + `g‘PasswÜd +(è=ð + `ÿÎ_u£r_func_¬¿y +( +$®gܙhm +, + `¬¿y +($this-> + `g‘S®t +(). +$·sswÜd +)); + +108 + } +} + +117 +public + +funùiÚ + + $addGroupByName +( +$Çme +, +$cÚ + = +nuÎ +) + +119 +$group + = +Doùrše_CÜe +:: + `g‘TabË +('sfGu¬dGroup')-> + `fšdOÃByName +( +$Çme +); + +120 ià(! +$group +) + +122 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('Thgrou°"%s" dÛ nكxi¡.', +$Çme +)); + +125 +$ug + = +Ãw + + `sfGu¬dU£rGroup +(); + +126 +$ug +-> + `£tU£r +( +$this +); + +127 +$ug +-> + `£tGroup +( +$group +); + +129 +$ug +-> + `§ve +( +$cÚ +); + +130 + } +} + +139 +public + +funùiÚ + + $addP”missiÚByName +( +$Çme +, +$cÚ + = +nuÎ +) + +141 +$³rmissiÚ + = +Doùrše_CÜe +:: + `g‘TabË +('sfGu¬dP”missiÚ')-> + `fšdOÃByName +( +$Çme +); + +142 ià(! +$³rmissiÚ +) + +144 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('Th³rmissiÚ "%s" dÛ nكxi¡.', +$Çme +)); + +147 +$up + = +Ãw + + `sfGu¬dU£rP”missiÚ +(); + +148 +$up +-> + `£tU£r +( +$this +); + +149 +$up +-> + `£tP”missiÚ +( +$³rmissiÚ +); + +151 +$up +-> + `§ve +( +$cÚ +); + +152 + } +} + +160 +public + +funùiÚ + + $hasGroup +( +$Çme +) + +162 +$this +-> + `lßdGroupsAndP”missiÚs +(); + +163  + `is£t +( +$this +-> +_groups +[ +$Çme +]); + +164 + } +} + +171 +public + +funùiÚ + + $g‘GroupNames +() + +173 +$this +-> + `lßdGroupsAndP”missiÚs +(); + +174  + `¬¿y_keys +( +$this +-> +_groups +); + +175 + } +} + +182 +public + +funùiÚ + + $hasP”missiÚ +( +$Çme +) + +184 +$this +-> + `lßdGroupsAndP”missiÚs +(); + +185  + `is£t +( +$this +-> +_®lP”missiÚs +[ +$Çme +]); + +186 + } +} + +193 +public + +funùiÚ + + $g‘P”missiÚNames +() + +195 +$this +-> + `lßdGroupsAndP”missiÚs +(); + +196  + `¬¿y_keys +( +$this +-> +_®lP”missiÚs +); + +197 + } +} + +205 +public + +funùiÚ + + $g‘AÎP”missiÚs +() + +207 ià(! +$this +-> +_®lP”missiÚs +) + +209 +$this +-> +_®lP”missiÚs + = + `¬¿y +(); + +210 +$³rmissiÚs + = +$this +-> + `g‘P”missiÚs +(); + +211 + `fܗch + ( +$³rmissiÚs + +as + +$³rmissiÚ +) + +213 +$this +-> +_®lP”missiÚs +[ +$³rmissiÚ +-> + `g‘Name +()] = $permission; + +216 + `fܗch + ( +$this +-> + `g‘Groups +(è +as + +$group +) + +218 + `fܗch + ( +$group +-> + `g‘P”missiÚs +(è +as + +$³rmissiÚ +) + +220 +$this +-> +_®lP”missiÚs +[ +$³rmissiÚ +-> + `g‘Name +()] = $permission; + +225  +$this +-> +_®lP”missiÚs +; + +226 + } +} + +233 +public + +funùiÚ + + $g‘AÎP”missiÚNames +() + +235  + `¬¿y_keys +( +$this +-> + `g‘AÎP”missiÚs +()); + +236 + } +} + +242 +public + +funùiÚ + + $lßdGroupsAndP”missiÚs +() + +244 +$this +-> + `g‘AÎP”missiÚs +(); + +246 ià(! +$this +-> +_³rmissiÚs +) + +248 +$³rmissiÚs + = +$this +-> + `g‘P”missiÚs +(); + +249 + `fܗch + ( +$³rmissiÚs + +as + +$³rmissiÚ +) + +251 +$this +-> +_³rmissiÚs +[ +$³rmissiÚ +-> + `g‘Name +()] = $permission; + +255 ià(! +$this +-> +_groups +) + +257 +$groups + = +$this +-> + `g‘Groups +(); + +258 + `fܗch + ( +$groups + +as + +$group +) + +260 +$this +-> +_groups +[ +$group +-> + `g‘Name +()] = $group; + +263 + } +} + +268 +public + +funùiÚ + + $»lßdGroupsAndP”missiÚs +() + +270 +$this +-> +_groups + = +nuÎ +; + +271 +$this +-> +_³rmissiÚs + = +nuÎ +; + +272 +$this +-> +_®lP”missiÚs + = +nuÎ +; + +273 + } +} + +280 +public + +funùiÚ + + $£tPasswÜdHash +( +$v +) + +282 ià(! + `is_nuÎ +( +$v +è&& ! + `is_¡ršg +($v)) + +284 +$v + = ( +¡ršg +) $v; + +287 ià( +$this +-> +·sswÜd + !=ð +$v +) + +289 +$this +-> + `_£t +('·sswÜd', +$v +); + +291 + } +} + + @cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardUserGroup.class.php + +1 + `g‘U£r +()-> + `»lßdGroupsAndP”missiÚs +(); + +18 + } +} + + @cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardUserGroupTable.class.php + +1 + `g‘U£r +()-> + `»lßdGroupsAndP”missiÚs +(); + +18 + } +} + + @cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/model/doctrine/PluginsfGuardUserPermissionTable.class.php + +1 + `ü—‹Qu”y +('u') + +24 -> + `wh”e +('u.u£ºamð?', +$u£ºame +) + +25 -> + `addWh”e +('u.is_aùivð?', +$isAùive +) + +28  +$qu”y +-> + `ãtchOà +(); + +39 +public + +funùiÚ + + $»Œ›veByU£ºameOrEmažAdd»ss +( +$u£ºame +, +$isAùive + = +Œue +) + +41 +$qu”y + = +Doùrše_CÜe +:: + `g‘TabË +('sfGu¬dU£r')-> + `ü—‹Qu”y +('u') + +42 -> + `wh”e +('u.u£ºamð? OR u.emaž_add»s ð?', + `¬¿y +( +$u£ºame +, $username)) + +43 -> + `addWh”e +('u.is_aùivð?', +$isAùive +) + +46  +$qu”y +-> + `ãtchOà +(); + +47 + } +} + + @cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/routing/sfGuardRouting.class.php + +1 + `g‘Subjeù +(); + +31 +$r +-> + `´•’dRou‹ +('sf_gu¬d_signš', +Ãw + + `sfRou‹ +('/gu¬d/logš', + `¬¿y +('module' => 'sfGuardAuth', 'action' => 'signin'))); + +32 +$r +-> + `´•’dRou‹ +('sf_gu¬d_signout', +Ãw + + `sfRou‹ +('/gu¬d/logout', + `¬¿y +('module' => 'sfGuardAuth', 'action' => 'signout'))); + +35  +public + +funùiÚ + + $addRou‹FÜFÜgÙPasswÜd +( +sfEv’t + +$ev’t +) + +37 +$r + = +$ev’t +-> + `g‘Subjeù +(); + +39 +$r +-> + `´•’dRou‹ +('sf_gu¬d_fÜgÙ_·sswÜd', +Ãw + + `sfRou‹ +('/gu¬d/fÜgÙ_·sswÜd', + `¬¿y +('module' => 'sfGuardForgotPassword', 'action' => 'index'))); + +40 +$r +-> + `´•’dRou‹ +('sf_gu¬d_fÜgÙ_·sswÜd_chªge', +Ãw + + `sfDoùršeRou‹ +('/gu¬d/fÜgÙ_·sswÜd/:unique_key', + `¬¿y +( + +43 ), + `¬¿y +( + +44 'sf_m‘hod' => + `¬¿y +('get', 'post') + +45 ), + `¬¿y +( + +49 + } +} + +57  +public + +funùiÚ + + $addRou‹FÜU£r +( +sfEv’t + +$ev’t +) + +59 +$ev’t +-> + `g‘Subjeù +()-> + `´•’dRou‹ +('sf_gu¬d_u£r', +Ãw + + `sfDoùršeRou‹CÞËùiÚ +( + `¬¿y +( + +64 'w™h_wždÿrd_rou‹s' => +Œue +, + +65 'cÞËùiÚ_aùiÚs' => + `¬¿y +('filter' => 'post', 'batch' => 'post'), + +66 '»quœem’ts' => + `¬¿y +(), + +68 + } +} + +76  +public + +funùiÚ + + $addRou‹FÜGroup +( +sfEv’t + +$ev’t +) + +78 +$ev’t +-> + `g‘Subjeù +()-> + `´•’dRou‹ +('sf_gu¬d_group', +Ãw + + `sfDoùršeRou‹CÞËùiÚ +( + `¬¿y +( + +83 'w™h_wždÿrd_rou‹s' => +Œue +, + +84 'cÞËùiÚ_aùiÚs' => + `¬¿y +('filter' => 'post', 'batch' => 'post'), + +85 '»quœem’ts' => + `¬¿y +(), + +87 + } +} + +95  +public + +funùiÚ + + $addRou‹FÜP”missiÚ +( +sfEv’t + +$ev’t +) + +97 +$ev’t +-> + `g‘Subjeù +()-> + `´•’dRou‹ +('sf_gu¬d_³rmissiÚ', +Ãw + + `sfDoùršeRou‹CÞËùiÚ +( + `¬¿y +( + +102 'w™h_wždÿrd_rou‹s' => +Œue +, + +103 'cÞËùiÚ_aùiÚs' => + `¬¿y +('filter' => 'post', 'batch' => 'post'), + +104 '»quœem’ts' => + `¬¿y +(), + +106 + } +} + +114  +public + +funùiÚ + + $addRou‹FÜRegi¡” +( +sfEv’t + +$ev’t +) + +116 +$ev’t +-> + `g‘Subjeù +()-> + `´•’dRou‹ +('sf_gu¬d_»gi¡”', +Ãw + + `sfRou‹ +('/gu¬d/»gi¡”', + `¬¿y +('module' => 'sfGuardRegister', 'action' => 'index'))); + +117 + } +} + + @cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/sfGuardBasicSecurityFilter.class.php + +1 + `isFœ¡C®l +()) + +35 +$this +-> +cڋxt +-> + `g‘Ev’tDi¥©ch” +()-> + `nÙify +( +Ãw + + `sfEv’t +($this, '­¶iÿtiÚ.log', + `¬¿y +( + `¥rštf +('Thfž‹¸"%s" i d•»ÿ‹d. U£ "sfGu¬dRememb”MeFž‹r" in¡—d.', +__CLASS__ +), '´iܙy' => +sfLogg” +:: +NOTICE +))); + +38 +$this +-> +cڋxt +-> + `g‘U£r +()-> + `isAnÚymous +() + +40 +$cook› + = +$this +-> +cڋxt +-> + `g‘Reque¡ +()-> + `g‘Cook› +( +$cook›Name +) + +43 +$q + = +Doùrše_CÜe +:: + `g‘TabË +('sfGu¬dRememb”Key')-> + `ü—‹Qu”y +('r') + +44 -> + `šÃrJoš +('r.User u') + +45 -> + `wh”e +('r.»memb”_key = ?', +$cook› +); + +47 ià( +$q +-> + `couÁ +()) + +49 +$this +-> +cڋxt +-> + `g‘U£r +()-> + `signIn +( +$q +-> + `ãtchOà +()-> +U£r +); + +54 +·»Á +:: + `execu‹ +( +$fž‹rChaš +); + +56 + } +} + + @cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/sfGuardRememberMeFilter.class.php + +1 + `isFœ¡C®l +() + +41 +$this +-> +cڋxt +-> + `g‘U£r +()-> + `isAnÚymous +() + +43 +$cook› + = +$this +-> +cڋxt +-> + `g‘Reque¡ +()-> + `g‘Cook› +( +$cook›Name +) + +46 +$q + = +Doùrše_CÜe +:: + `g‘TabË +('sfGu¬dRememb”Key')-> + `ü—‹Qu”y +('r') + +47 -> + `šÃrJoš +('r.User u') + +48 -> + `wh”e +('r.»memb”_key = ?', +$cook› +); + +50 ià( +$q +-> + `couÁ +()) + +52 +$this +-> +cڋxt +-> + `g‘U£r +()-> + `signIn +( +$q +-> + `ãtchOà +()-> +U£r +); + +56 +$fž‹rChaš +-> + `execu‹ +(); + +58 + } +} + + @cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/task/sfGuardAddGroupTask.class.php + +1 + `addArgum’ts +( + `¬¿y +( + +27 +Ãw + + `sfCommªdArgum’t +('u£ºame', +sfCommªdArgum’t +:: +REQUIRED +, 'The user‚ame'), + +28 +Ãw + + `sfCommªdArgum’t +('group', +sfCommªdArgum’t +:: +REQUIRED +, 'The group‚ame'), + +31 +$this +-> + `addO±iÚs +( + `¬¿y +( + +32 +Ãw + + `sfCommªdO±iÚ +('­¶iÿtiÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL +, 'The‡pplication‚ame',‚ull), + +33 +Ãw + + `sfCommªdO±iÚ +('’v', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Theƒnvironment', 'dev'), + +36 +$this +-> +Çme¥aû + = 'guard'; + +37 +$this +-> +Çme + = 'add-group'; + +38 +$this +-> +br›fDesütiÚ + = 'Adds‡ groupo‡ user'; + +40 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +41 +The + [ +gu¬d +: +add +- +group +| +INFO +] +sk + +adds + +a + grou° +to +‡ +u£r +: + +43 [./ +symfÚy + +gu¬d +: +add +- +group + +çb›n + +admš +| +INFO +] + +45 +The + +u£r + +ªd + +the + +group + +mu¡ + +exi¡ + +š +h +d©aba£ +. + +46 +EOF +; + +52 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +54 +$d©aba£Mªag” + = +Ãw + + `sfD©aba£Mªag” +( +$this +-> +cÚfigu¿tiÚ +); + +56 +$u£r + = +Doùrše_CÜe +:: + `g‘TabË +('sfGu¬dU£r')-> + `fšdOÃByU£ºame +( +$¬gum’ts +['username']); + +57 ià(! +$u£r +) + +59 +throw + +Ãw + + `sfCommªdExû±iÚ +( + `¥rštf +('U£¸"%s" dÛ nكxi¡.', +$¬gum’ts +['username'])); + +62 +$u£r +-> + `addGroupByName +( +$¬gum’ts +['group']); + +64 +$this +-> + `logSeùiÚ +('gu¬d', + `¥rštf +('Add grou°% tØu£¸%s', +$¬gum’ts +['group'], $arguments['username'])); + +65 + } +} + + @cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/task/sfGuardAddPermissionTask.class.php + +1 + `addArgum’ts +( + `¬¿y +( + +27 +Ãw + + `sfCommªdArgum’t +('u£ºame', +sfCommªdArgum’t +:: +REQUIRED +, 'The user‚ame'), + +28 +Ãw + + `sfCommªdArgum’t +('³rmissiÚ', +sfCommªdArgum’t +:: +REQUIRED +, 'The…ermission‚ame'), + +31 +$this +-> + `addO±iÚs +( + `¬¿y +( + +32 +Ãw + + `sfCommªdO±iÚ +('­¶iÿtiÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL +, 'The‡pplication‚ame',‚ull), + +33 +Ãw + + `sfCommªdO±iÚ +('’v', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Theƒnvironment', 'dev'), + +36 +$this +-> +Çme¥aû + = 'guard'; + +37 +$this +-> +Çme + = 'add-permission'; + +38 +$this +-> +br›fDesütiÚ + = 'Adds‡…ermissiono‡ user'; + +40 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +41 +The + [ +gu¬d +: +add +- +³rmissiÚ +| +INFO +] +sk + +adds + +a +…”missiÚ +to +‡ +u£r +: + +43 [./ +symfÚy + +gu¬d +: +add +- +³rmissiÚ + +çb›n + +admš +| +INFO +] + +45 +The + +u£r + +ªd + +the + +³rmissiÚ + +mu¡ + +exi¡ + +š +h +d©aba£ +. + +46 +EOF +; + +52 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +54 +$d©aba£Mªag” + = +Ãw + + `sfD©aba£Mªag” +( +$this +-> +cÚfigu¿tiÚ +); + +56 +$u£r + = +Doùrše_CÜe +:: + `g‘TabË +('sfGu¬dU£r')-> + `fšdOÃByU£ºame +( +$¬gum’ts +['username']); + +57 ià(! +$u£r +) + +59 +throw + +Ãw + + `sfCommªdExû±iÚ +( + `¥rštf +('U£¸"%s" dÛ nكxi¡.', +$¬gum’ts +['username'])); + +62 +$u£r +-> + `addP”missiÚByName +( +$¬gum’ts +['permission']); + +64 +$this +-> + `logSeùiÚ +('gu¬d', + `¥rštf +('Add…”missiÚ % tØu£¸%s', +$¬gum’ts +['permission'], $arguments['username'])); + +65 + } +} + + @cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/task/sfGuardChangePasswordTask.class.php + +1 + `addArgum’ts +( + `¬¿y +( + +27 +Ãw + + `sfCommªdArgum’t +('u£ºame', +sfCommªdArgum’t +:: +REQUIRED +, 'The user‚ame'), + +28 +Ãw + + `sfCommªdArgum’t +('·sswÜd', +sfCommªdArgum’t +:: +REQUIRED +, 'The‚ew…assword'), + +31 +$this +-> + `addO±iÚs +( + `¬¿y +( + +32 +Ãw + + `sfCommªdO±iÚ +('­¶iÿtiÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL +, 'The‡pplication‚ame',‚ull), + +33 +Ãw + + `sfCommªdO±iÚ +('’v', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Theƒnvironment', 'dev'), + +36 +$this +-> +Çme¥aû + = 'guard'; + +37 +$this +-> +Çme + = 'change-password'; + +38 +$this +-> +br›fDesütiÚ + = 'Changeshe…assword ofhe user'; + +40 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +41 +The + [ +gu¬d +: +chªge +- +·sswÜd +| +INFO +] +sk + +®lows + +to + chªg +a + +u£r +'s…assword: + +43 [./ +symfÚy + +gu¬d +: +chªge +- +·sswÜd + +çb›n + +chªgeme +| +INFO +] + +44 +EOF +; + +54 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +56 +$d©aba£Mªag” + = +Ãw + + `sfD©aba£Mªag” +( +$this +-> +cÚfigu¿tiÚ +); + +58 +$u£r + = +Doùrše_CÜe +:: + `g‘TabË +('sfGu¬dU£r')-> + `fšdOÃByU£ºame +( +$¬gum’ts +['username']); + +60 ià(! +$u£r +) + +62 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('U£¸id’tif›d by "%s" u£ºamdÛ nكxi¡ o¸i nهùive.', +$¬gum’ts +['username'])); + +65 +$u£r +-> + `£tPasswÜd +( +$¬gum’ts +['password']); + +66 +$u£r +-> + `§ve +(); + +68 +$this +-> + `logSeùiÚ +('gu¬d', + `¥rštf +('PasswÜd oàu£¸id’tif›d by "%s" ha b“Àchªged', +$¬gum’ts +['username'])); + +69 + } +} + + @cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/task/sfGuardCreateUserTask.class.php + +1 + `addArgum’ts +( + `¬¿y +( + +28 +Ãw + + `sfCommªdArgum’t +('emaž_add»ss', +sfCommªdArgum’t +:: +REQUIRED +, 'Theƒmail‡ddress'), + +29 +Ãw + + `sfCommªdArgum’t +('u£ºame', +sfCommªdArgum’t +:: +REQUIRED +, 'The username'), + +30 +Ãw + + `sfCommªdArgum’t +('·sswÜd', +sfCommªdArgum’t +:: +REQUIRED +, 'The…assword'), + +31 +Ãw + + `sfCommªdArgum’t +('fœ¡_Çme', +sfCommªdArgum’t +:: +OPTIONAL +, 'The first‚ame'), + +32 +Ãw + + `sfCommªdArgum’t +('Ï¡_Çme', +sfCommªdArgum’t +:: +OPTIONAL +, 'The†ast‚ame'), + +35 +$this +-> + `addO±iÚs +( + `¬¿y +( + +36 +Ãw + + `sfCommªdO±iÚ +('is-su³r-admš', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Whetherhe user is‡ super‡dmin',‚ull), + +37 +Ãw + + `sfCommªdO±iÚ +('­¶iÿtiÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL +, 'The‡pplication‚ame',‚ull), + +38 +Ãw + + `sfCommªdO±iÚ +('’v', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Theƒnvironment', 'dev'), + +41 +$this +-> +Çme¥aû + = 'guard'; + +42 +$this +-> +Çme + = 'create-user'; + +43 +$this +-> +br›fDesütiÚ + = 'Creates‡ user'; + +45 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +46 +The + [ +gu¬d +: +ü—‹ +- +u£r +| +INFO +] +sk + +ü—‹s + +a + user: + +48 [./ +symfÚy + +gu¬d +: +ü—‹ +- +u£r + +maž +@ +exam¶e +. +com + +çb›n + +·sswÜd + +Fab›n + +POTENCIER +| +INFO +] + +49 +EOF +; + +55 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +57 +$d©aba£Mªag” + = +Ãw + + `sfD©aba£Mªag” +( +$this +-> +cÚfigu¿tiÚ +); + +59 +$u£r + = +Ãw + + `sfGu¬dU£r +(); + +60 +$u£r +-> + `£tEmažAdd»ss +( +$¬gum’ts +['email_address']); + +61 +$u£r +-> + `£tU£ºame +( +$¬gum’ts +['username']); + +62 +$u£r +-> + `£tPasswÜd +( +$¬gum’ts +['password']); + +63 +$u£r +-> + `£tFœ¡Name +( +$¬gum’ts +['first_name']); + +64 +$u£r +-> + `£tLa¡Name +( +$¬gum’ts +['last_name']); + +65 +$u£r +-> + `£tIsAùive +( +Œue +); + +66 +$u£r +-> + `£tIsSu³rAdmš +( +$ÝtiÚs +['is-super-admin']); + +67 +$u£r +-> + `§ve +(); + +69 +$this +-> + `logSeùiÚ +('gu¬d', + `¥rštf +('C»©u£¸"%s"', +$¬gum’ts +['username'])); + +70 + } +} + + @cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/task/sfGuardPromoteSuperAdminTask.class.php + +1 + `addArgum’ts +( + `¬¿y +( + +28 +Ãw + + `sfCommªdArgum’t +('u£ºame', +sfCommªdArgum’t +:: +REQUIRED +, 'The user‚ame'), + +31 +$this +-> + `addO±iÚs +( + `¬¿y +( + +32 +Ãw + + `sfCommªdO±iÚ +('­¶iÿtiÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL +, 'The‡pplication‚ame',‚ull), + +33 +Ãw + + `sfCommªdO±iÚ +('’v', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Theƒnvironment', 'dev'), + +36 +$this +-> +Çme¥aû + = 'guard'; + +37 +$this +-> +Çme + = 'promote'; + +38 +$this +-> +br›fDesütiÚ + = 'Promotes‡ user‡s‡ super‡dministrator'; + +40 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +41 +The + [ +gu¬d +: +´omÙe +| +INFO +] +sk + +´omÙes + +a + +u£r + +as +‡ +su³r + +admši¡¿tÜ +: + +43 [./ +symfÚy + +gu¬d +: +´omÙe + +çb›n +| +INFO +] + +44 +EOF +; + +54 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +56 +$d©aba£Mªag” + = +Ãw + + `sfD©aba£Mªag” +( +$this +-> +cÚfigu¿tiÚ +); + +58 +$u£r + = +Doùrše_CÜe +:: + `g‘TabË +('sfGu¬dU£r')-> + `»Œ›veByU£ºame +( +$¬gum’ts +['username']); + +60 ià(! +$u£r +) + +62 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('U£¸id’tif›d by "%s" u£ºamdÛ nكxi¡ o¸i nهùive.', +$¬gum’ts +['username'])); + +65 +$u£r +-> + `£tIsSu³rAdmš +( +Œue +); + +66 +$u£r +-> + `§ve +(); + +68 +$this +-> + `logSeùiÚ +('gu¬d', + `¥rštf +('U£¸id’tif›d by "%s" u£ºamha b“À´omÙed‡ su³¸admši¡¿tÜ', +$¬gum’ts +['username'])); + +69 + } +} + + @cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/user/sfGuardSecurityUser.class.php + +1 + `isAuth’tiÿ‹d +()) + +36 +$this +-> + `g‘A‰ribu‹HÞd” +()-> + `»moveName¥aû +('sfGuardSecurityUser'); + +37 +$this +-> +u£r + = +nuÎ +; + +47 +public + +funùiÚ + + $g‘Reã»r +( +$deçuÉ +) + +49 +$»ã»r + = +$this +-> + `g‘A‰ribu‹ +('»ã»r', +$deçuÉ +); + +50 +$this +-> + `g‘A‰ribu‹HÞd” +()-> + `»move +('referer'); + +52  +$»ã»r +; + +53 + } +} + +60 +public + +funùiÚ + + $£tReã»r +( +$»ã»r +) + +62 ià(! +$this +-> + `hasA‰ribu‹ +('referer')) + +64 +$this +-> + `£tA‰ribu‹ +('»ã»r', +$»ã»r +); + +66 + } +} + +75 +public + +funùiÚ + + $hasC»d’tŸl +( +$üed’tŸl +, +$u£And + = +Œue +) + +77 ià( + `em±y +( +$üed’tŸl +)) + +79  +Œue +; + +82 ià(! +$this +-> + `g‘Gu¬dU£r +()) + +84  +çl£ +; + +87 ià( +$this +-> + `g‘Gu¬dU£r +()-> + `g‘IsSu³rAdmš +()) + +89  +Œue +; + +92  +·»Á +:: + `hasC»d’tŸl +( +$üed’tŸl +, +$u£And +); + +93 + } +} + +100 +public + +funùiÚ + + $isSu³rAdmš +() + +102  +$this +-> + `g‘Gu¬dU£r +(è? $this->g‘Gu¬dU£r()-> + `g‘IsSu³rAdmš +(è: +çl£ +; + +103 + } +} + +110 +public + +funùiÚ + + $isAnÚymous +() + +112  ! +$this +-> + `isAuth’tiÿ‹d +(); + +113 + } +} + +122 +public + +funùiÚ + + $signIn +( +$u£r +, +$»memb” + = +çl£ +, +$cÚ + = +nuÎ +) + +125 +$this +-> + `£tA‰ribu‹ +('u£r_id', +$u£r +-> + `g‘Id +(), 'sfGuardSecurityUser'); + +126 +$this +-> + `£tAuth’tiÿ‹d +( +Œue +); + +127 +$this +-> + `þ—rC»d’tŸls +(); + +128 +$this +-> + `addC»d’tŸls +( +$u£r +-> + `g‘AÎP”missiÚNames +()); + +131 +$u£r +-> + `£tLa¡Logš +( + `d©e +('Y-m-d H:i:s')); + +132 +$u£r +-> + `§ve +( +$cÚ +); + +135 ià( +$»memb” +) + +137 +$expœ©iÚ_age + = +sfCÚfig +:: + `g‘ +('app_sf_guard_plugin_remember_key_expiration_age', 15 * 24 * 3600); + +140 +Doùrše_CÜe +:: + `g‘TabË +('sfGu¬dRememb”Key')-> + `ü—‹Qu”y +() + +141 -> + `d–‘e +() + +142 -> + `wh”e +('ü—‹d_© < ?', + `d©e +('Y-m-d H:i:s', + `time +(è- +$expœ©iÚ_age +)) + +143 -> + `execu‹ +(); + +146 +Doùrše_CÜe +:: + `g‘TabË +('sfGu¬dRememb”Key')-> + `ü—‹Qu”y +() + +147 -> + `d–‘e +() + +148 -> + `wh”e +('u£r_id = ?', +$u£r +-> + `g‘Id +()) + +149 -> + `execu‹ +(); + +152 +$key + = +$this +-> + `g’”©eRªdomKey +(); + +155 +$rk + = +Ãw + + `sfGu¬dRememb”Key +(); + +156 +$rk +-> + `£tRememb”Key +( +$key +); + +157 +$rk +-> + `£tU£r +( +$u£r +); + +158 +$rk +-> + `£tIpAdd»ss +( +$_SERVER +['REMOTE_ADDR']); + +159 +$rk +-> + `§ve +( +$cÚ +); + +162 +$»memb”_cook› + = +sfCÚfig +:: + `g‘ +('app_sf_guard_plugin_remember_cookie_name', 'sfRemember'); + +163 +sfCڋxt +:: + `g‘In¡ªû +()-> + `g‘Re¥Ú£ +()-> + `£tCook› +( +$»memb”_cook› +, +$key +, + `time +(è+ +$expœ©iÚ_age +); + +165 + } +} + +173 +´Ùeùed + +funùiÚ + + $g’”©eRªdomKey +( +$Ën + = 20) + +175  + `ba£_cÚv”t +( + `sha1 +( + `uniqid +( + `mt_¿nd +(), +Œue +)), 16, 36); + +176 + } +} + +182 +public + +funùiÚ + + $signOut +() + +184 +$this +-> + `g‘A‰ribu‹HÞd” +()-> + `»moveName¥aû +('sfGuardSecurityUser'); + +185 +$this +-> +u£r + = +nuÎ +; + +186 +$this +-> + `þ—rC»d’tŸls +(); + +187 +$this +-> + `£tAuth’tiÿ‹d +( +çl£ +); + +188 +$expœ©iÚ_age + = +sfCÚfig +:: + `g‘ +('app_sf_guard_plugin_remember_key_expiration_age', 15 * 24 * 3600); + +189 +$»memb”_cook› + = +sfCÚfig +:: + `g‘ +('app_sf_guard_plugin_remember_cookie_name', 'sfRemember'); + +190 +sfCڋxt +:: + `g‘In¡ªû +()-> + `g‘Re¥Ú£ +()-> + `£tCook› +( +$»memb”_cook› +, '', + `time +(è- +$expœ©iÚ_age +); + +191 + } +} + +198 +public + +funùiÚ + + $g‘Gu¬dU£r +() + +200 ià(! +$this +-> +u£r + && +$id + = $this-> + `g‘A‰ribu‹ +('u£r_id', +nuÎ +, 'sfGuardSecurityUser')) + +202 +$this +-> +u£r + = +Doùrše_CÜe +:: + `g‘TabË +('sfGu¬dU£r')-> + `fšd +( +$id +); + +204 ià(! +$this +-> +u£r +) + +207 +$this +-> + `signOut +(); + +209 +throw + +Ãw + + `sfExû±iÚ +('The user does‚otƒxist‡nymore inhe database.'); + +213  +$this +-> +u£r +; + +214 + } +} + +221 +public + +funùiÚ + + $__toSŒšg +() + +223  +$this +-> + `g‘Gu¬dU£r +()-> + `__toSŒšg +(); + +224 + } +} + +231 +public + +funùiÚ + + $g‘U£ºame +() + +233  +$this +-> + `g‘Gu¬dU£r +()-> + `g‘U£ºame +(); + +234 + } +} + +241 +public + +funùiÚ + + $g‘Name +() + +243  +$this +-> + `g‘Gu¬dU£r +()-> + `g‘Name +(); + +244 + } +} + +251 +public + +funùiÚ + + $g‘Emaž +() + +253  +$this +-> + `g‘Gu¬dU£r +()-> + `g‘Emaž +(); + +254 + } +} + +262 +public + +funùiÚ + + $£tPasswÜd +( +$·sswÜd +, +$cÚ + = +nuÎ +) + +264 +$this +-> + `g‘Gu¬dU£r +()-> + `£tPasswÜd +( +$·sswÜd +); + +265 +$this +-> + `g‘Gu¬dU£r +()-> + `§ve +( +$cÚ +); + +266 + } +} + +273 +public + +funùiÚ + + $checkPasswÜd +( +$·sswÜd +) + +275  +$this +-> + `g‘Gu¬dU£r +()-> + `checkPasswÜd +( +$·sswÜd +); + +276 + } +} + +284 +public + +funùiÚ + + $hasGroup +( +$Çme +) + +286  +$this +-> + `g‘Gu¬dU£r +(è? $this->g‘Gu¬dU£r()-> + `hasGroup +( +$Çme +è: +çl£ +; + +287 + } +} + +294 +public + +funùiÚ + + $g‘Groups +() + +296  +$this +-> + `g‘Gu¬dU£r +(è? $this->g‘Gu¬dU£r()-> + `g‘Groups +(è: + `¬¿y +(); + +297 + } +} + +304 +public + +funùiÚ + + $g‘GroupNames +() + +306  +$this +-> + `g‘Gu¬dU£r +(è? $this->g‘Gu¬dU£r()-> + `g‘GroupNames +(è: + `¬¿y +(); + +307 + } +} + +315 +public + +funùiÚ + + $hasP”missiÚ +( +$Çme +) + +317  +$this +-> + `g‘Gu¬dU£r +(è? $this->g‘Gu¬dU£r()-> + `hasP”missiÚ +( +$Çme +è: +çl£ +; + +318 + } +} + +325 +public + +funùiÚ + + $g‘P”missiÚs +() + +327  +$this +-> + `g‘Gu¬dU£r +()-> + `g‘P”missiÚs +(); + +328 + } +} + +335 +public + +funùiÚ + + $g‘P”missiÚNames +() + +337  +$this +-> + `g‘Gu¬dU£r +(è? $this->g‘Gu¬dU£r()-> + `g‘P”missiÚNames +(è: + `¬¿y +(); + +338 + } +} + +345 +public + +funùiÚ + + $g‘AÎP”missiÚs +() + +347  +$this +-> + `g‘Gu¬dU£r +(è? $this->g‘Gu¬dU£r()-> + `g‘AÎP”missiÚs +(è: + `¬¿y +(); + +348 + } +} + +355 +public + +funùiÚ + + $g‘AÎP”missiÚNames +() + +357  +$this +-> + `g‘Gu¬dU£r +(è? $this->g‘Gu¬dU£r()-> + `g‘AÎP”missiÚNames +(è: + `¬¿y +(); + +358 + } +} + +365 +public + +funùiÚ + + $g‘Profže +() + +367  +$this +-> + `g‘Gu¬dU£r +(è? $this->g‘Gu¬dU£r()-> + `g‘Profže +(è: +nuÎ +; + +368 + } +} + +376 +public + +funùiÚ + + $addGroupByName +( +$Çme +, +$cÚ + = +nuÎ +) + +378  +$this +-> + `g‘Gu¬dU£r +()-> + `addGroupByName +( +$Çme +, +$cÚ +); + +379 + } +} + +387 +public + +funùiÚ + + $addP”missiÚByName +( +$Çme +, +$cÚ + = +nuÎ +) + +389  +$this +-> + `g‘Gu¬dU£r +()-> + `addP”missiÚByName +( +$Çme +, +$cÚ +); + +390 + } +} + + @cache/.pear/sfDoctrineGuardPlugin-5.0.0/lib/validator/sfGuardValidatorUser.class.php + +1 + `addO±iÚ +('username_field', 'username'); + +23 +$this +-> + `addO±iÚ +('password_field', 'password'); + +24 +$this +-> + `addO±iÚ +('throw_glob®_”rÜ', +çl£ +); + +26 +$this +-> + `£tMes§ge +('invalid', 'The username‡nd/or…assword is invalid.'); + +29 +´Ùeùed + +funùiÚ + + $doC˪ +( +$v®ues +) + +31 +$u£ºame + = + `is£t +( +$v®ues +[ +$this +-> + `g‘O±iÚ +('username_field')]) ? $values[$this->getOption('username_field')] : ''; + +32 +$·sswÜd + = + `is£t +( +$v®ues +[ +$this +-> + `g‘O±iÚ +('password_field')]) ? $values[$this->getOption('password_field')] : ''; + +34 +$®lowEmaž + = +sfCÚfig +:: + `g‘ +('­p_sf_gu¬d_¶ugš_®low_logš_w™h_emaž', +Œue +); + +35 +$m‘hod + = +$®lowEmaž + ? 'retrieveByUsernameOrEmailAddress' : 'retrieveByUsername'; + +38 ià( +$u£ºame +) + +40 ià( +$ÿÎabË + = +sfCÚfig +:: + `g‘ +('app_sf_guard_plugin_retrieve_by_username_callable')) + +42 +$u£r + = + `ÿÎ_u£r_func_¬¿y +( +$ÿÎabË +, + `¬¿y +( +$u£ºame +)); + +44 +$u£r + = +$this +-> + `g‘TabË +()-> + `»Œ›veByU£ºame +( +$u£ºame +); + +47 if( +$u£r +) + +50 ià( +$u£r +-> + `g‘IsAùive +(è&& $u£r-> + `checkPasswÜd +( +$·sswÜd +)) + +52  + `¬¿y_m”ge +( +$v®ues +, + `¬¿y +('u£r' => +$u£r +)); + +57 ià( +$this +-> + `g‘O±iÚ +('throw_global_error')) + +59 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'invalid'); + +62 +throw + +Ãw + + `sfV®id©ÜE¼ÜSchema +( +$this +, + `¬¿y +($this-> + `g‘O±iÚ +('u£ºame_f›ld'è=>‚ew + `sfV®id©ÜE¼Ü +($this, 'invalid'))); + +63 + } +} + +65 +´Ùeùed + +funùiÚ + + $g‘TabË +() + +67  +Doùrše +:: + `g‘TabË +('sfGuardUser'); + +68 + } +} + + @cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardAuth/actions/actions.class.php + +1 + `g‘U£r +(); + +23 ià( +$u£r +-> + `isAuth’tiÿ‹d +()) + +25  +$this +-> + `»dœeù +('@homepage'); + +28 +$þass + = +sfCÚfig +:: + `g‘ +('app_sf_guard_plugin_signin_form', 'sfGuardFormSignin'); + +29 +$this +-> +fÜm + = +Ãw + + `$þass +(); + +31 ià( +$»que¡ +-> + `isM‘hod +('post')) + +33 +$this +-> +fÜm +-> + `bšd +( +$»que¡ +-> + `g‘P¬am‘” +('signin')); + +34 ià( +$this +-> +fÜm +-> + `isV®id +()) + +36 +$v®ues + = +$this +-> +fÜm +-> + `g‘V®ues +(); + +37 +$this +-> + `g‘U£r +()-> + `signš +( +$v®ues +['u£r'], + `¬¿y_key_exi¡s +('»memb”', $v®uesè? $v®ues['»memb”'] : +çl£ +); + +42 +$signšU¾ + = +sfCÚfig +:: + `g‘ +('­p_sf_gu¬d_¶ugš_sucûss_signš_u¾', +$u£r +-> + `g‘Reã»r +( +$»que¡ +->getReferer())); + +44  +$this +-> + `»dœeù +('' !ð +$signšU¾ + ? $signinUrl : '@homepage'); + +49 ià( +$»que¡ +-> + `isXmlH‰pReque¡ +()) + +51 +$this +-> + `g‘Re¥Ú£ +()-> + `£tH—d”OÆy +( +Œue +); + +52 +$this +-> + `g‘Re¥Ú£ +()-> + `£tStusCode +(401); + +54  +sfV›w +:: +NONE +; + +59 +$u£r +-> + `£tReã»r +( +$this +-> + `g‘Cڋxt +()-> + `g‘AùiÚSck +()-> + `g‘Size +(è> 1 ? +$»que¡ +-> + `g‘Uri +(è: $»que¡-> + `g‘Reã»r +()); + +61 +$moduË + = +sfCÚfig +:: + `g‘ +('sf_login_module'); + +62 ià( +$this +-> + `g‘ModuËName +(è!ð +$moduË +) + +64  +$this +-> + `»dœeù +( +$moduË +.'/'. +sfCÚfig +:: + `g‘ +('sf_login_action')); + +67 +$this +-> + `g‘Re¥Ú£ +()-> + `£tStusCode +(401); + +71 +public + +funùiÚ + + $execu‹Signout +( +$»que¡ +) + +73 +$this +-> + `g‘U£r +()-> + `signOut +(); + +75 +$signoutU¾ + = +sfCÚfig +:: + `g‘ +('­p_sf_gu¬d_¶ugš_sucûss_signout_u¾', +$»que¡ +-> + `g‘Reã»r +()); + +77 +$this +-> + `»dœeù +('' !ð +$signoutU¾ + ? $signoutUrl : '@homepage'); + +78 + } +} + +80 +public + +funùiÚ + + $execu‹Secu» +( +$»que¡ +) + +82 +$this +-> + `g‘Re¥Ú£ +()-> + `£tStusCode +(403); + +83 + } +} + +85 +public + +funùiÚ + + $execu‹PasswÜd +( +$»que¡ +) + +87 +throw + +Ãw + + `sfExû±iÚ +('This method is‚ot yet implemented.'); + +88 + } +} + + @cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardAuth/lib/BasesfGuardAuthComponents.class.php + +1 +fÜm + = +Ãw + + `$þass +(); + +10 + } +} + + @cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardAuth/templates/_signin_form.php + +1 + +3 < +fÜm + + gaùiÚ +="" +m‘hod +="post"> + +4 < +bË +> + +5 < +tbody +> + +6 + +7 + +8 < +tfoÙ +> + +9 < +Œ +> + +10 < +td + +cÞ¥ª +="2"> + +11 < +šput + +ty³ +="subm™" +v®ue +="" /> + +13 +g‘Routšg +()-> +g‘Rou‹s +() ?> + +14 + +15 < +a + +h»f +=""> + +16 + +18 + +19 & +nb¥ +; < +a + + gh»f +=""> + +20 + +21 + +22 + +23 + +24 + +25 + + @cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardAuth/templates/secureSuccess.php + +1 + +3 < + gh2 +> + +5 < + gp +> +g‘Reque¡ +()-> +g‘Uri +(è?> + +7 < +h3 +> + +9 + + @cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardAuth/templates/signinSuccess.php + +1 + +3 < + gh1 +> + +5 +$fÜm +)) ?> + + @cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardForgotPassword/actions/actions.class.php + +1 + `g‘U£r +()-> + `isAuth’tiÿ‹d +()) + +17 +$this +-> + `»dœeù +('@homepage'); + +21 +public + +funùiÚ + + $execu‹Index +( +$»que¡ +) + +23 +$this +-> +fÜm + = +Ãw + + `sfGu¬dReque¡FÜgÙPasswÜdFÜm +(); + +25 ià( +$»que¡ +-> + `isM‘hod +('post')) + +27 +$this +-> +fÜm +-> + `bšd +( +$»que¡ +-> + `g‘P¬am‘” +($this->fÜm-> + `g‘Name +())); + +28 ià( +$this +-> +fÜm +-> + `isV®id +()) + +30 +$this +-> +u£r + = $this-> +fÜm +->user; + +31 +$this +-> + `_d–‘eOldU£rFÜgÙPasswÜdRecÜds +(); + +33 +$fÜgÙPasswÜd + = +Ãw + + `sfGu¬dFÜgÙPasswÜd +(); + +34 +$fÜgÙPasswÜd +-> +u£r_id + = +$this +-> +fÜm +-> +u£r +-> +id +; + +35 +$fÜgÙPasswÜd +-> +unique_key + = + `md5 +( + `¿nd +(è+ + `time +()); + +36 +$fÜgÙPasswÜd +-> +expœes_© + = +Ãw + + `Doùrše_Ex´essiÚ +('NOW()'); + +37 +$fÜgÙPasswÜd +-> + `§ve +(); + +39 +$mes§ge + = +Swiá_Mes§ge +:: + `ÃwIn¡ªû +() + +40 -> + `£tFrom +( +sfCÚfig +:: + `g‘ +('app_sf_guard_plugin_default_from_email', 'from@noreply.com')) + +41 -> + `£tTo +( +$this +-> +fÜm +-> +u£r +-> +emaž_add»ss +) + +42 -> + `£tSubjeù +('FÜgÙ PasswÜd Reque¡ fÜ '. +$this +-> +fÜm +-> +u£r +-> +u£ºame +) + +43 -> + `£tBody +( +$this +-> + `g‘P¬tŸl +('sfGu¬dFÜgÙPasswÜd/£nd_»que¡', + `¬¿y +('u£r' => $this-> +fÜm +-> +u£r +, 'fÜgÙ_·sswÜd' => +$fÜgÙPasswÜd +))) + +44 -> + `£tCڋÁTy³ +('text/html') + +47 +$this +-> + `g‘Maž” +()-> + `£nd +( +$mes§ge +); + +49 +$this +-> + `g‘U£r +()-> + `£tFÏsh +('notice', 'Check yourƒ-mail! You should„eceive something shortly!'); + +50 +$this +-> + `»dœeù +('@sf_guard_signin'); + +52 +$this +-> + `g‘U£r +()-> + `£tFÏsh +('error', 'Invalidƒ-mail‡ddress!'); + +55 + } +} + +57 +public + +funùiÚ + + $execu‹Chªge +( +$»que¡ +) + +59 +$this +-> +fÜgÙPasswÜd + = $this-> + `g‘Rou‹ +()-> + `g‘Objeù +(); + +60 +$this +-> +u£r + = $this-> +fÜgÙPasswÜd +-> +U£r +; + +61 +$this +-> +fÜm + = +Ãw + + `sfGu¬dChªgeU£rPasswÜdFÜm +($this-> +u£r +); + +63 ià( +$»que¡ +-> + `isM‘hod +('post')) + +65 +$this +-> +fÜm +-> + `bšd +( +$»que¡ +-> + `g‘P¬am‘” +($this->fÜm-> + `g‘Name +())); + +66 ià( +$this +-> +fÜm +-> + `isV®id +()) + +68 +$this +-> +fÜm +-> + `§ve +(); + +70 +$this +-> + `_d–‘eOldU£rFÜgÙPasswÜdRecÜds +(); + +72 +$mes§ge + = +Swiá_Mes§ge +:: + `ÃwIn¡ªû +() + +73 -> + `£tFrom +( +sfCÚfig +:: + `g‘ +('app_sf_guard_plugin_default_from_email', 'from@noreply.com')) + +74 -> + `£tTo +( +$this +-> +u£r +-> +emaž_add»ss +) + +75 -> + `£tSubjeù +('New PasswÜd fÜ '. +$this +-> +u£r +-> +u£ºame +) + +76 -> + `£tBody +( +$this +-> + `g‘P¬tŸl +('sfGu¬dFÜgÙPasswÜd/Ãw_·sswÜd', + `¬¿y +('u£r' => $this-> +u£r +, '·sswÜd' => +$»que¡ +['sf_guard_user']['password']))) + +79 +$this +-> + `g‘Maž” +()-> + `£nd +( +$mes§ge +); + +81 +$this +-> + `g‘U£r +()-> + `£tFÏsh +('notice', 'Password updated successfully!'); + +82 +$this +-> + `»dœeù +('@sf_guard_signin'); + +85 + } +} + +87 +´iv©e + +funùiÚ + + $_d–‘eOldU£rFÜgÙPasswÜdRecÜds +() + +89 +Doùrše_CÜe +:: + `g‘TabË +('sfGuardForgotPassword') + +90 -> + `ü—‹Qu”y +('p') + +91 -> + `d–‘e +() + +92 -> + `wh”e +('p.u£r_id = ?', +$this +-> +u£r +-> +id +) + +93 -> + `execu‹ +(); + +94 + } +} + + @cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardForgotPassword/templates/_new_password.php + +1 + +2 +$u£r +-> +g‘Fœ¡Name +()), 'sf_guard') ?>, + +4 + +6 : +g‘U£ºame +() ?> + +7 : + + @cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardForgotPassword/templates/_send_request.php + +1 + +2 +$u£r +-> +g‘Fœ¡Name +()), 'sf_gu¬d'è?>,< + gbr +/>
+ +4 < + gbr +/>
+ +6 < + gbr +/>
+ +8 +unique_key +, 'absolute=true') ?> + + @cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardForgotPassword/templates/changeSuccess.php + +1 + +2 < + gh2 +> +$u£r +-> +g‘Name +()), 'sf_guard') ?> + +4 < + gh3 +> + +6 < +fÜm + + gaùiÚ +="g‘P¬am‘”('unique_key')è?>" +m‘hod +="POST"> + +7 < +bË +> + +8 < +tbody +> + +9 + +10 + +11 < +tfoÙ +>< +Œ +>< +td +>< +šput + +ty³ +="subm™" +Çme +="chªge" +v®ue +="" /> + +12 + +13 + + @cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardForgotPassword/templates/indexSuccess.php + +1 + +2 < + gh2 +> + +4 < + gp +> + +5 + +6 + +7 + +9 < +fÜm + + gaùiÚ +="" +m‘hod +="post"> + +10 < +bË +> + +11 < +tbody +> + +12 + +13 + +14 < +tfoÙ +>< +Œ +>< +td +>< +šput + +ty³ +="subm™" +Çme +="chªge" +v®ue +="" /> + +15 + +16 + + @cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardGroup/actions/actions.class.php + +1 + `g‘U£r +()-> + `isAuth’tiÿ‹d +()) + +9 +$this +-> + `g‘U£r +()-> + `£tFÏsh +('notice', 'You‡re‡lready„egistered‡nd signed in!'); + +10 +$this +-> + `»dœeù +('@homepage'); + +13 +$this +-> +fÜm + = +Ãw + + `sfGu¬dRegi¡”FÜm +(); + +15 ià( +$»que¡ +-> + `isM‘hod +('post')) + +17 +$this +-> +fÜm +-> + `bšd +( +$»que¡ +-> + `g‘P¬am‘” +($this->fÜm-> + `g‘Name +())); + +18 ià( +$this +-> +fÜm +-> + `isV®id +()) + +20 +$u£r + = +$this +-> +fÜm +-> + `§ve +(); + +21 +$this +-> + `g‘U£r +()-> + `signIn +( +$u£r +); + +23 +$this +-> + `»dœeù +('@homepage'); + +27 + } +} + + @cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardRegister/lib/BasesfGuardRegisterComponents.class.php + +1 +fÜm + = +Ãw + + `sfGu¬dRegi¡”FÜm +(); + +9 + } +} + + @cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardRegister/templates/_form.php + +1 + +3 < +fÜm + + gaùiÚ +="" +m‘hod +="post"> + +4 < +bË +> + +5 + +6 < +tfoÙ +> + +7 < +Œ +> + +8 < +td + +cÞ¥ª +="2"> + +9 < +šput + +ty³ +="subm™" +Çme +="»gi¡”" +v®ue +="" /> + +10 + +11 + +12 + +13 + +14 + + @cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardRegister/templates/indexSuccess.php + +1 + +2 < + gh1 +> + +4 +$fÜm +)) ?> + + @cache/.pear/sfDoctrineGuardPlugin-5.0.0/modules/sfGuardUser/actions/actions.class.php + +1 + ghªdËrs +['cÚfig/autÞßd.yml'] = +Ãw + +sfAutÞßdCÚfigHªdËr +(); + +6 + g$this +-> + ghªdËrs +['cÚfig/d©aba£s.yml'] = +Ãw + +sfD©aba£CÚfigHªdËr +(); + +7 + g$this +-> + ghªdËrs +['cÚfig/£‰šgs.yml'] = +Ãw + +sfDefšeEnvœÚm’tCÚfigHªdËr +( +¬¿y + ( + +10 + g$this +-> + ghªdËrs +['cÚfig/­p.yml'] = +Ãw + +sfDefšeEnvœÚm’tCÚfigHªdËr +( +¬¿y + ( + +13 + g$this +-> + ghªdËrs +['cÚfig/çùܛs.yml'] = +Ãw + +sfFaùÜyCÚfigHªdËr +(); + +14 + g$this +-> + ghªdËrs +['cÚfig/cÜe_compže.yml'] = +Ãw + +sfCompžeCÚfigHªdËr +(); + +15 + g$this +-> + ghªdËrs +['cÚfig/fž‹rs.yml'] = +Ãw + +sfFž‹rCÚfigHªdËr +(); + +16 + g$this +-> + ghªdËrs +['cÚfig/routšg.yml'] = +Ãw + +sfRoutšgCÚfigHªdËr +(); + +17 + g$this +-> + ghªdËrs +['moduËs/*/cÚfig/g’”©Ü.yml'] = +Ãw + +sfG’”©ÜCÚfigHªdËr +(); + +18 + g$this +-> + ghªdËrs +['moduËs/*/cÚfig/v›w.yml'] = +Ãw + +sfV›wCÚfigHªdËr +(); + +19 + g$this +-> + ghªdËrs +['moduËs/*/cÚfig/£cur™y.yml'] = +Ãw + +sfSecur™yCÚfigHªdËr +(); + +20 + g$this +-> + ghªdËrs +['moduËs/*/cÚfig/ÿche.yml'] = +Ãw + +sfCacheCÚfigHªdËr +(); + +21 + g$this +-> + ghªdËrs +['moduËs/*/cÚfig/moduË.yml'] = +Ãw + +sfDefšeEnvœÚm’tCÚfigHªdËr +( +¬¿y + ( + +23 'moduË' => +Œue +, + + @cache/companyfront/dev/config/config_databases.yml.php + +1 +Ãw + +sfDoùršeD©aba£ +( +¬¿y + ( + +9 '·sswÜd' => +NULL +, + + @cache/companyfront/dev/config/config_factories.yml.php + +1 + gçùܛs +['logg”'] = +Ãw + +$þass +( +$this +-> +di¥©ch” +, +¬¿y_m”ge +( +¬¿y +('auto_shutdown' => +çl£ +), +sfCÚfig +:: +g‘ +('sf_factory_logger_parameters',‡rray ( + +10 + g$logg” + = +Ãw + +sfWebDebugLogg” +( +$this +-> +di¥©ch” +, +¬¿y_m”ge +( +¬¿y +('auto_shutdown' => +çl£ +),‡rray ( + +12 'xdebug_loggšg' => +çl£ +, + +15 + g$this +-> + gçùܛs +['logg”']-> +addLogg” +( +$logg” +); + +17 + g$logg” + = +Ãw + +sfFžeLogg” +( +$this +-> +di¥©ch” +, +¬¿y_m”ge +( +¬¿y +('auto_shutdown' => +çl£ +),‡rray ( + +21 + g$this +-> + gçùܛs +['logg”']-> +addLogg” +( +$logg” +); + +24 ià( + gsfCÚfig +:: +g‘ +('sf_i18n')) + +26 +$þass + = +sfCÚfig +:: +g‘ +('sf_factory_i18n', 'sfI18N'); + +27 + g$ÿche + = +Ãw + +sfFžeCache +( +¬¿y + ( + +33 + g$this +-> + gçùܛs +['i18n'] = +Ãw + +$þass +( +$this +-> +cÚfigu¿tiÚ +, +$ÿche +, +¬¿y + ( + +35 'debug' => +çl£ +, + +39 + gsfWidg‘FÜmSchemaFÜm©‹r +:: +£tT¿n¦©iÚC®ÏbË +( +¬¿y +( +$this +-> +çùܛs +['i18n'], '__')); + +42 + g$þass + = +sfCÚfig +:: +g‘ +('sf_factory_controller', 'sfFrontWebController'); + +43 + g$this +-> + gçùܛs +['cڌÞËr'] = +Ãw + +$þass +( +$this +); + +44 + g$þass + = +sfCÚfig +:: +g‘ +('sf_factory_request', 'sfWebRequest'); + +45 + g$this +-> + gçùܛs +['»que¡'] = +Ãw + +$þass +( +$this +-> +di¥©ch” +, +¬¿y +(),‡¼ay(), +sfCÚfig +:: +g‘ +('sf_factory_request_parameters',‡rray ( + +49 '»Ïtive_u¾_roÙ' => +NULL +, + +51 +¬¿y + ( + +54 +¬¿y + ( + +61 +¬¿y + ( + +66 +¬¿y + ( + +74 'no_süt_Çme' => +çl£ +, + +75 )), +sfCÚfig +:: +g‘ +('sf_çùÜy_»que¡_©Œibu‹s', +¬¿y +())); + +76 + g$þass + = +sfCÚfig +:: +g‘ +('sf_factory_response', 'sfWebResponse'); + +77 + g$this +-> + gçùܛs +['»¥Ú£'] = +Ãw + +$þass +( +$this +-> +di¥©ch” +, +sfCÚfig +:: +g‘ +('sf_çùÜy_»¥Ú£_·¿m‘”s', +¬¿y_m”ge +( +¬¿y +('h‰p_´ÙocÞ' => +is£t +( +$_SERVER +['SERVER_PROTOCOL']è? $_SERVER['SERVER_PROTOCOL'] : +nuÎ +),‡rray ( + +80 '£nd_h‰p_h—d”s' => +Œue +, + +82 ià( + g$this +-> + gçùܛs +['»que¡'] +š¡ªûof + + gsfWebReque¡ + + +83 && + g$this +-> + gçùܛs +['»¥Ú£'] +š¡ªûof + + gsfWebRe¥Ú£ + + +84 && 'HEAD' =ð +$this +-> +çùܛs +['»que¡']-> + $g‘M‘hod +()) + +86 +$this +-> +çùܛs +['»¥Ú£']-> + `£tH—d”OÆy +( +Œue +); + +87 + } +} + +89 + g$þass + = +sfCÚfig +:: +g‘ +('sf_factory_routing', 'sfPatternRouting'); + +90 + g$ÿche + = +nuÎ +; + +92 + g$this +-> + gçùܛs +['routšg'] = +Ãw + +$þass +( +$this +-> +di¥©ch” +, +$ÿche +, +¬¿y_m”ge +( +¬¿y +('auto_shutdown' => +çl£ +, 'cڋxt' => $this-> +çùܛs +['»que¡']-> +g‘Reque¡Cڋxt +()), +sfCÚfig +:: +g‘ +('sf_factory_routing_parameters',‡rray ( + +93 'lßd_cÚfigu¿tiÚ' => +Œue +, + +99 'g’”©e_sh܋¡_u¾' => +Œue +, + +100 'exŒa_·¿m‘”s_as_qu”y_¡ršg' => +Œue +, + +101 'ÿche' => +NULL +, + +103 ià( + g$·¿m‘”s + = +$this +-> +çùܛs +['routšg']-> +·r£ +($this->çùܛs['»que¡']-> + $g‘P©hInfo +())) + +105 +$this +-> +çùܛs +['»que¡']-> + `addReque¡P¬am‘”s +( +$·¿m‘”s +); + +106 + } +} + +108 + g$þass + = +sfCÚfig +:: +g‘ +('sf_factory_storage', 'sfSessionStorage'); + +109 + g$this +-> + gçùܛs +['¡Üage'] = +Ãw + +$þass +( +¬¿y_m”ge +( +¬¿y +( + +110 'auto_shutdown' => +çl£ +, '£ssiÚ_id' => +$this +-> +g‘Reque¡ +()-> +g‘P¬am‘” +('symfony'), + +111 ), +sfCÚfig +:: +g‘ +('sf_çùÜy_¡Üage_·¿m‘”s', +¬¿y + ( + +114 + g$þass + = +sfCÚfig +:: +g‘ +('sf_factory_user', 'myUser'); + +115 + g$this +-> + gçùܛs +['u£r'] = +Ãw + +$þass +( +$this +-> +di¥©ch” +, $this-> +çùܛs +['¡Üage'], +¬¿y_m”ge +( +¬¿y +('auto_shutdown' => +çl£ +, 'cuÉu»' => $this->çùܛs['»que¡']-> +g‘P¬am‘” +('sf_cuÉu»')), +sfCÚfig +:: +g‘ +('sf_factory_user_parameters',‡rray ( + +118 'u£_æash' => +Œue +, + +122 ià( + gsfCÚfig +:: +g‘ +('sf_cache')) + +124 +$þass + = +sfCÚfig +:: +g‘ +('sf_factory_view_cache', 'sfFileCache'); + +125 + g$ÿche + = +Ãw + +$þass +( +sfCÚfig +:: +g‘ +('sf_çùÜy_v›w_ÿche_·¿m‘”s', +¬¿y + ( + +131 + g$this +-> + gçùܛs +['v›wCacheMªag”'] = +Ãw + +sfV›wCacheMªag” +( +$this +, +$ÿche +, +¬¿y + ( + +132 'ÿche_key_u£_v¬y_h—d”s' => +Œue +, + +133 'ÿche_key_u£_ho¡_Çme' => +Œue +, + +138 + g$this +-> + gçùܛs +['v›wCacheMªag”'] = +nuÎ +; + +141 +»quœe_Úû + + gsfCÚfig +:: +g‘ +('sf_symfony_lib_dir').'/vendor/swiftmailer/classes/Swift.php'; + +142 + gSwiá +:: +»gi¡”AutÞßd +(); + +143 + gsfMaž” +:: +š™Ÿlize +(); + +144 + g$this +-> +£tMaž”CÚfigu¿tiÚ +( +¬¿y_m”ge +( +¬¿y +('þass' => +sfCÚfig +:: +g‘ +('sf_factory_mailer', 'sfMailer')), sfConfig::get('sf_factory_mailer_parameters',‡rray ( + +149 +¬¿y + ( + +152 +¬¿y + ( + +155 '’üy±iÚ' => +NULL +, + +156 'u£ºame' => +NULL +, + +157 '·sswÜd' => +NULL +, + + @cache/companyfront/dev/config/config_routing.yml.php + +1 + grou‹s +['hom•age'] = +un£rŸlize +('C:7:"sfRoute":1069:{a:11:{i:0;a:2:{i:0;a:4:{i:0;s:9:"separator";i:1;s:0:"";i:2;s:1:"/";i:3;N;}i:1;a:3:{i:0;s:9:"separator";i:1;s:1:"/";i:2;s:1:"/";}}i:1;a:8:{s:18:"load_configuration";b:1;s:6:"suffix";s:0:"";s:14:"default_module";s:7:"default";s:14:"default_action";s:5:"index";s:5:"debug";s:1:"1";s:7:"logging";s:1:"1";s:21:"generate_shortest_url";b:1;s:32:"extra_parameters_as_query_string";b:1;}i:2;a:15:{s:6:"suffix";s:0:"";s:17:"variable_prefixes";a:1:{i:0;s:1:":";}s:18:"segment_separators";a:2:{i:0;s:1:"/";i:1;s:1:".";}s:14:"variable_regex";s:8:"[\\w\\d_]+";s:10:"text_regex";s:3:".+?";s:21:"generate_shortest_url";b:1;s:32:"extra_parameters_as_query_string";b:1;s:18:"load_configuration";b:1;s:14:"default_module";s:7:"default";s:14:"default_action";s:5:"index";s:5:"debug";s:1:"1";s:7:"logging";s:1:"1";s:21:"variable_prefix_regex";s:6:"(?:\\:)";s:24:"segment_separators_regex";s:8:"(?:/|\\.)";s:22:"variable_content_regex";s:7:"[^/\\.]+";}i:3;s:1:"/";i:4;s:0:"";i:5;s:6:"#^/$#x";i:6;a:0:{}i:7;a:2:{s:6:"module";s:7:"default";s:6:"action";s:5:"index";}i:8;a:0:{}i:9;s:1:"/";i:10;b:0;}}'); + +5 + g$this +-> + grou‹s +['deçuÉ_šdex'] = +un£rŸlize +('C:7:"sfRoute":1144:{a:11:{i:0;a:2:{i:0;a:4:{i:0;s:9:"separator";i:1;s:0:"";i:2;s:1:"/";i:3;N;}i:1;a:4:{i:0;s:8:"variable";i:1;s:1:"/";i:2;s:7:":module";i:3;s:6:"module";}}i:1;a:8:{s:18:"load_configuration";b:1;s:6:"suffix";s:0:"";s:14:"default_module";s:7:"default";s:14:"default_action";s:5:"index";s:5:"debug";s:1:"1";s:7:"logging";s:1:"1";s:21:"generate_shortest_url";b:1;s:32:"extra_parameters_as_query_string";b:1;}i:2;a:15:{s:6:"suffix";s:0:"";s:17:"variable_prefixes";a:1:{i:0;s:1:":";}s:18:"segment_separators";a:2:{i:0;s:1:"/";i:1;s:1:".";}s:14:"variable_regex";s:8:"[\\w\\d_]+";s:10:"text_regex";s:3:".+?";s:21:"generate_shortest_url";b:1;s:32:"extra_parameters_as_query_string";b:1;s:18:"load_configuration";b:1;s:14:"default_module";s:7:"default";s:14:"default_action";s:5:"index";s:5:"debug";s:1:"1";s:7:"logging";s:1:"1";s:21:"variable_prefix_regex";s:6:"(?:\\:)";s:24:"segment_separators_regex";s:8:"(?:/|\\.)";s:22:"variable_content_regex";s:7:"[^/\\.]+";}i:3;s:8:"/:module";i:4;s:0:"";i:5;s:25:"#^/(?P[^/\\.]+)$#x";i:6;a:1:{s:6:"module";s:7:":module";}i:7;a:1:{s:6:"action";s:5:"index";}i:8;a:1:{s:6:"module";s:7:"[^/\\.]+";}i:9;s:0:"";i:10;b:0;}}'); + +6 + g$this +-> + grou‹s +['deçuÉ'] = +un£rŸlize +('C:7:"sfRoute":1477:{a:11:{i:0;a:6:{i:0;a:4:{i:0;s:9:"separator";i:1;s:0:"";i:2;s:1:"/";i:3;N;}i:1;a:4:{i:0;s:8:"variable";i:1;s:1:"/";i:2;s:7:":module";i:3;s:6:"module";}i:2;a:4:{i:0;s:9:"separator";i:1;s:0:"";i:2;s:1:"/";i:3;N;}i:3;a:4:{i:0;s:8:"variable";i:1;s:1:"/";i:2;s:7:":action";i:3;s:6:"action";}i:4;a:4:{i:0;s:9:"separator";i:1;s:0:"";i:2;s:1:"/";i:3;N;}i:5;a:4:{i:0;s:4:"text";i:1;s:1:"/";i:2;s:1:"*";i:3;N;}}i:1;a:8:{s:18:"load_configuration";b:1;s:6:"suffix";s:0:"";s:14:"default_module";s:7:"default";s:14:"default_action";s:5:"index";s:5:"debug";s:1:"1";s:7:"logging";s:1:"1";s:21:"generate_shortest_url";b:1;s:32:"extra_parameters_as_query_string";b:1;}i:2;a:15:{s:6:"suffix";s:0:"";s:17:"variable_prefixes";a:1:{i:0;s:1:":";}s:18:"segment_separators";a:2:{i:0;s:1:"/";i:1;s:1:".";}s:14:"variable_regex";s:8:"[\\w\\d_]+";s:10:"text_regex";s:3:".+?";s:21:"generate_shortest_url";b:1;s:32:"extra_parameters_as_query_string";b:1;s:18:"load_configuration";b:1;s:14:"default_module";s:7:"default";s:14:"default_action";s:5:"index";s:5:"debug";s:1:"1";s:7:"logging";s:1:"1";s:21:"variable_prefix_regex";s:6:"(?:\\:)";s:24:"segment_separators_regex";s:8:"(?:/|\\.)";s:22:"variable_content_regex";s:7:"[^/\\.]+";}i:3;s:18:"/:module/:action/*";i:4;s:0:"";i:5;s:69:"#^/(?P[^/\\.]+)/(?P[^/\\.]+)(?:(?:/(?P<_star>.*))?)?$#x";i:6;a:2:{s:6:"module";s:7:":module";s:6:"action";s:7:":action";}i:7;a:0:{}i:8;a:2:{s:6:"module";s:7:"[^/\\.]+";s:6:"action";s:7:"[^/\\.]+";}i:9;s:0:"";i:10;b:0;}}'); + + @cache/companyfront/dev/config/config_settings.yml.php + +1 +Œue +, + +14 'sf_i18n' => +çl£ +, + +15 'sf_com´es£d' => +çl£ +, + +16 'sf_check_lock' => +çl£ +, + +18 'sf_esÿpšg_¡¿‹gy' => +Œue +, + +20 'sf_no_süt_Çme' => +çl£ +, + +21 'sf_ÿche' => +çl£ +, + +22 'sf_‘ag' => +çl£ +, + +23 'sf_web_debug' => +Œue +, + +25 'sf_fže_lšk_fÜm©' => +NULL +, + +28 'sf_¡ªd¬d_h–³rs' => +¬¿y + ( + +32 'sf_’abËd_moduËs' => +¬¿y + ( + +36 'sf_loggšg_’abËd' => +Œue +, + + @cache/companyfront/dev/config/modules_default_config_filters.yml.php + +1 ( + g$fž‹r +); + +12 ià( + g$aùiÚIn¡ªû +-> + $isSecu» +()) + +15 + `li¡ +( +$þass +, +$·¿m‘”s +èð( +¬¿y +è +sfCÚfig +:: + `g‘ +('sf_£cur™y_fž‹r', + `¬¿y +('sfBasicSecurityFilter',‡rray ( + +17 +$fž‹r + = +Ãw + + `$þass +( +sfCڋxt +:: + `g‘In¡ªû +(), +$·¿m‘”s +); + +18 +$this +->( +$fž‹r +); + +19 + } +} + +21 +li¡ +( +$þass +, +$·¿m‘”s +èð( +¬¿y +è +sfCÚfig +:: +g‘ +('sf_execution_filter',‡rray('sfExecutionFilter',‡rray ( + +23 + g$fž‹r + = +Ãw + +$þass +( +sfCڋxt +:: +g‘In¡ªû +(), +$·¿m‘”s +); + +24 + g$this +->( + g$fž‹r +); + + @cache/companyfront/dev/config/modules_default_config_module.yml.php + +1 +Œue +, + + @cache/companyfront/dev/config/modules_default_config_security.yml.php + +1 + g£cur™y + = +¬¿y + ( + +6 +¬¿y + ( + +7 'is_£cu»' => +çl£ +, + + @cache/companyfront/dev/config/modules_default_config_view.yml.php + +1 +cڋxt +-> +g‘Re¥Ú£ +(); + +7 + g$‹m¶©eName + = +sfCÚfig +:: +g‘ +('symfÚy.v›w.'. +$this +-> +moduËName +.'_'.$this-> +aùiÚName +.'_template', $this->actionName); + +8 + g$this +-> +£tTem¶©e +( +$‹m¶©eName +. +$this +-> +v›wName +.$this-> +g‘Ex‹nsiÚ +()); + +12 ià( + gnuÎ + !=ð +$Ïyout + = +sfCÚfig +:: +g‘ +('symfÚy.v›w.'. +$this +-> +moduËName +.'_'.$this-> +aùiÚName +.'_layout')) + +14 +$this +-> +£tDecÜ©ÜTem¶©e +( +çl£ + ==ð +$Ïyout + ? f®£ : $Ïyout.$this-> +g‘Ex‹nsiÚ +()); + +16 ià( + gnuÎ + ==ð +$this +-> +g‘DecÜ©ÜTem¶©e +(è&& !$this-> +cڋxt +-> +g‘Reque¡ +()-> + $isXmlH‰pReque¡ +()) + +18 +$this +-> + `£tDecÜ©ÜTem¶©e +('' =ð'Ïyout' ? +çl£ + : 'Ïyout'.$this-> + `g‘Ex‹nsiÚ +()); + +19 + } +} + +20 + g$»¥Ú£ +-> +addH‰pM‘a +('cڋÁ-ty³', '‹xt/html', +çl£ +); + +22 + g$»¥Ú£ +-> +addStyËsh“t +('maš.css', '', +¬¿y + ()); + + @config/ProjectConfiguration.class.php + +1 + `’abËPlugšs +('sfDoctrinePlugin'); + +11 +$this +-> + `’abËPlugšs +('sfDoctrineGuardPlugin'); + +13 + } +} + + @lib/filter/doctrine/AdDescriptionFormFilter.class.php + +1 + `£tWidg‘s +( + `¬¿y +( + +16 'Ïnguage_id' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('Lªguage'), 'add_em±y' => +Œue +)), + +17 'ad_id' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('Ad'), 'add_em±y' => +Œue +)), + +18 'ad_Çme' => +Ãw + + `sfWidg‘FÜmFž‹rIÅut +( + `¬¿y +('w™h_em±y' => +çl£ +)), + +19 'ad_desütiÚ' => +Ãw + + `sfWidg‘FÜmFž‹rIÅut +(), + +20 'ad_mobže_‹xt' => +Ãw + + `sfWidg‘FÜmFž‹rIÅut +( + `¬¿y +('w™h_em±y' => +çl£ +)), + +21 'ad_lšk' => +Ãw + + `sfWidg‘FÜmFž‹rIÅut +( + `¬¿y +('w™h_em±y' => +çl£ +)), + +24 +$this +-> + `£tV®id©Üs +( + `¬¿y +( + +25 'Ïnguage_id' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('»quœed' => +çl£ +, 'mod–' => +$this +-> + `g‘R–©edMod–Name +('Language'), 'column' => 'id')), + +26 'ad_id' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('»quœed' => +çl£ +, 'mod–' => +$this +-> + `g‘R–©edMod–Name +('Ad'), 'column' => 'id')), + +27 'ad_Çme' => +Ãw + + `sfV®id©ÜPass +( + `¬¿y +('»quœed' => +çl£ +)), + +28 'ad_desütiÚ' => +Ãw + + `sfV®id©ÜPass +( + `¬¿y +('»quœed' => +çl£ +)), + +29 'ad_mobže_‹xt' => +Ãw + + `sfV®id©ÜPass +( + `¬¿y +('»quœed' => +çl£ +)), + +30 'ad_lšk' => +Ãw + + `sfV®id©ÜPass +( + `¬¿y +('»quœed' => +çl£ +)), + +33 +$this +-> +widg‘Schema +-> + `£tNameFÜm© +('ad_description_filters[%s]'); + +35 +$this +-> +”rÜSchema + = +Ãw + + `sfV®id©ÜE¼ÜSchema +($this-> +v®id©ÜSchema +); + +37 +$this +-> + `£tupInh”™ªû +(); + +39 +·»Á +:: + `£tup +(); + +42 +public + +funùiÚ + + $g‘Mod–Name +() + +45 + } +} + +47 +public + +funùiÚ + + $g‘F›lds +() + +49  + `¬¿y +( + +58 + } +} + + @lib/filter/doctrine/base/BaseAdFormFilter.class.php + +1 + `£tWidg‘s +( + `¬¿y +( + +16 'com·ny_id' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('Com·ny'), 'add_em±y' => +Œue +)), + +17 'com·ny_ÿ‹g_id' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('Com·nyC©egÜy'), 'add_em±y' => +Œue +)), + +18 'ad_mobže_image_lšk' => +Ãw + + `sfWidg‘FÜmFž‹rIÅut +( + `¬¿y +('w™h_em±y' => +çl£ +)), + +19 'ü—‹d_©' => +Ãw + + `sfWidg‘FÜmFž‹rD©e +( + `¬¿y +('äom_d©e' =>‚ew + `sfWidg‘FÜmD©e +(), 'to_d©e' =>‚ew sfWidg‘FÜmD©e(), 'w™h_em±y' => +çl£ +)), + +20 'upd©ed_©' => +Ãw + + `sfWidg‘FÜmFž‹rD©e +( + `¬¿y +('äom_d©e' =>‚ew + `sfWidg‘FÜmD©e +(), 'to_d©e' =>‚ew sfWidg‘FÜmD©e(), 'w™h_em±y' => +çl£ +)), + +23 +$this +-> + `£tV®id©Üs +( + `¬¿y +( + +24 'com·ny_id' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('»quœed' => +çl£ +, 'mod–' => +$this +-> + `g‘R–©edMod–Name +('Company'), 'column' => 'id')), + +25 'com·ny_ÿ‹g_id' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('»quœed' => +çl£ +, 'mod–' => +$this +-> + `g‘R–©edMod–Name +('CompanyCategory'), 'column' => 'id')), + +26 'ad_mobže_image_lšk' => +Ãw + + `sfV®id©ÜPass +( + `¬¿y +('»quœed' => +çl£ +)), + +27 'ü—‹d_©' => +Ãw + + `sfV®id©ÜD©eRªge +( + `¬¿y +('»quœed' => +çl£ +, 'äom_d©e' =>‚ew + `sfV®id©ÜD©eTime +(array('required' => false, 'datetime_output' => 'Y-m-d 00:00:00')), 'to_date' =>‚ew sfValidatorDateTime(array('required' => false, 'datetime_output' => 'Y-m-d 23:59:59')))), + +28 'upd©ed_©' => +Ãw + + `sfV®id©ÜD©eRªge +( + `¬¿y +('»quœed' => +çl£ +, 'äom_d©e' =>‚ew + `sfV®id©ÜD©eTime +(array('required' => false, 'datetime_output' => 'Y-m-d 00:00:00')), 'to_date' =>‚ew sfValidatorDateTime(array('required' => false, 'datetime_output' => 'Y-m-d 23:59:59')))), + +31 +$this +-> +widg‘Schema +-> + `£tNameFÜm© +('ad_filters[%s]'); + +33 +$this +-> +”rÜSchema + = +Ãw + + `sfV®id©ÜE¼ÜSchema +($this-> +v®id©ÜSchema +); + +35 +$this +-> + `£tupInh”™ªû +(); + +37 +·»Á +:: + `£tup +(); + +40 +public + +funùiÚ + + $g‘Mod–Name +() + +43 + } +} + +45 +public + +funùiÚ + + $g‘F›lds +() + +47  + `¬¿y +( + +55 + } +} + + @lib/filter/doctrine/base/BaseCityFormFilter.class.php + +1 + `£tWidg‘s +( + `¬¿y +( + +16 'c™y_Çme' => +Ãw + + `sfWidg‘FÜmFž‹rIÅut +( + `¬¿y +('w™h_em±y' => +çl£ +)), + +17 '»giÚ_id' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('RegiÚ'), 'add_em±y' => +Œue +)), + +20 +$this +-> + `£tV®id©Üs +( + `¬¿y +( + +21 'c™y_Çme' => +Ãw + + `sfV®id©ÜPass +( + `¬¿y +('»quœed' => +çl£ +)), + +22 '»giÚ_id' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('»quœed' => +çl£ +, 'mod–' => +$this +-> + `g‘R–©edMod–Name +('Region'), 'column' => 'id')), + +25 +$this +-> +widg‘Schema +-> + `£tNameFÜm© +('city_filters[%s]'); + +27 +$this +-> +”rÜSchema + = +Ãw + + `sfV®id©ÜE¼ÜSchema +($this-> +v®id©ÜSchema +); + +29 +$this +-> + `£tupInh”™ªû +(); + +31 +·»Á +:: + `£tup +(); + +34 +public + +funùiÚ + + $g‘Mod–Name +() + +37 + } +} + +39 +public + +funùiÚ + + $g‘F›lds +() + +41  + `¬¿y +( + +46 + } +} + + @lib/filter/doctrine/base/BaseCompanyCategoryDescriptionFormFilter.class.php + +1 + `£tWidg‘s +( + `¬¿y +( + +16 'Ïnguage_id' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('Lªguage'), 'add_em±y' => +Œue +)), + +17 'com·ny_ÿ‹g_id' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('Com·nyC©egÜy'), 'add_em±y' => +Œue +)), + +18 'com·ny_ÿ‹g_Çme' => +Ãw + + `sfWidg‘FÜmFž‹rIÅut +( + `¬¿y +('w™h_em±y' => +çl£ +)), + +19 'com·ny_ÿ‹g_desütiÚ' => +Ãw + + `sfWidg‘FÜmFž‹rIÅut +(), + +22 +$this +-> + `£tV®id©Üs +( + `¬¿y +( + +23 'Ïnguage_id' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('»quœed' => +çl£ +, 'mod–' => +$this +-> + `g‘R–©edMod–Name +('Language'), 'column' => 'id')), + +24 'com·ny_ÿ‹g_id' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('»quœed' => +çl£ +, 'mod–' => +$this +-> + `g‘R–©edMod–Name +('CompanyCategory'), 'column' => 'id')), + +25 'com·ny_ÿ‹g_Çme' => +Ãw + + `sfV®id©ÜPass +( + `¬¿y +('»quœed' => +çl£ +)), + +26 'com·ny_ÿ‹g_desütiÚ' => +Ãw + + `sfV®id©ÜPass +( + `¬¿y +('»quœed' => +çl£ +)), + +29 +$this +-> +widg‘Schema +-> + `£tNameFÜm© +('company_category_description_filters[%s]'); + +31 +$this +-> +”rÜSchema + = +Ãw + + `sfV®id©ÜE¼ÜSchema +($this-> +v®id©ÜSchema +); + +33 +$this +-> + `£tupInh”™ªû +(); + +35 +·»Á +:: + `£tup +(); + +38 +public + +funùiÚ + + $g‘Mod–Name +() + +41 + } +} + +43 +public + +funùiÚ + + $g‘F›lds +() + +45  + `¬¿y +( + +52 + } +} + + @lib/filter/doctrine/base/BaseCompanyCategoryFormFilter.class.php + +1 + `£tWidg‘s +( + `¬¿y +( + +16 'com·ny_id' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('Com·ny'), 'add_em±y' => +Œue +)), + +17 'g’”®_ÿ‹g_id' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('G’”®C©egÜy'), 'add_em±y' => +Œue +)), + +18 'ü—‹d_©' => +Ãw + + `sfWidg‘FÜmFž‹rD©e +( + `¬¿y +('äom_d©e' =>‚ew + `sfWidg‘FÜmD©e +(), 'to_d©e' =>‚ew sfWidg‘FÜmD©e(), 'w™h_em±y' => +çl£ +)), + +19 'upd©ed_©' => +Ãw + + `sfWidg‘FÜmFž‹rD©e +( + `¬¿y +('äom_d©e' =>‚ew + `sfWidg‘FÜmD©e +(), 'to_d©e' =>‚ew sfWidg‘FÜmD©e(), 'w™h_em±y' => +çl£ +)), + +20 'roÙ_id' => +Ãw + + `sfWidg‘FÜmFž‹rIÅut +(), + +21 'lá' => +Ãw + + `sfWidg‘FÜmFž‹rIÅut +(), + +22 'rgt' => +Ãw + + `sfWidg‘FÜmFž‹rIÅut +(), + +23 'Ëv–' => +Ãw + + `sfWidg‘FÜmFž‹rIÅut +(), + +26 +$this +-> + `£tV®id©Üs +( + `¬¿y +( + +27 'com·ny_id' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('»quœed' => +çl£ +, 'mod–' => +$this +-> + `g‘R–©edMod–Name +('Company'), 'column' => 'id')), + +28 'g’”®_ÿ‹g_id' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('»quœed' => +çl£ +, 'mod–' => +$this +-> + `g‘R–©edMod–Name +('GeneralCategory'), 'column' => 'id')), + +29 'ü—‹d_©' => +Ãw + + `sfV®id©ÜD©eRªge +( + `¬¿y +('»quœed' => +çl£ +, 'äom_d©e' =>‚ew + `sfV®id©ÜD©eTime +(array('required' => false, 'datetime_output' => 'Y-m-d 00:00:00')), 'to_date' =>‚ew sfValidatorDateTime(array('required' => false, 'datetime_output' => 'Y-m-d 23:59:59')))), + +30 'upd©ed_©' => +Ãw + + `sfV®id©ÜD©eRªge +( + `¬¿y +('»quœed' => +çl£ +, 'äom_d©e' =>‚ew + `sfV®id©ÜD©eTime +(array('required' => false, 'datetime_output' => 'Y-m-d 00:00:00')), 'to_date' =>‚ew sfValidatorDateTime(array('required' => false, 'datetime_output' => 'Y-m-d 23:59:59')))), + +31 'roÙ_id' => +Ãw + + `sfV®id©ÜSchemaFž‹r +('‹xt',‚ew + `sfV®id©ÜIÁeg” +( + `¬¿y +('»quœed' => +çl£ +))), + +32 'lá' => +Ãw + + `sfV®id©ÜSchemaFž‹r +('‹xt',‚ew + `sfV®id©ÜIÁeg” +( + `¬¿y +('»quœed' => +çl£ +))), + +33 'rgt' => +Ãw + + `sfV®id©ÜSchemaFž‹r +('‹xt',‚ew + `sfV®id©ÜIÁeg” +( + `¬¿y +('»quœed' => +çl£ +))), + +34 'Ëv–' => +Ãw + + `sfV®id©ÜSchemaFž‹r +('‹xt',‚ew + `sfV®id©ÜIÁeg” +( + `¬¿y +('»quœed' => +çl£ +))), + +37 +$this +-> +widg‘Schema +-> + `£tNameFÜm© +('company_category_filters[%s]'); + +39 +$this +-> +”rÜSchema + = +Ãw + + `sfV®id©ÜE¼ÜSchema +($this-> +v®id©ÜSchema +); + +41 +$this +-> + `£tupInh”™ªû +(); + +43 +·»Á +:: + `£tup +(); + +46 +public + +funùiÚ + + $g‘Mod–Name +() + +49 + } +} + +51 +public + +funùiÚ + + $g‘F›lds +() + +53  + `¬¿y +( + +64 + } +} + + @lib/filter/doctrine/base/BaseCompanyDescriptionFormFilter.class.php + +1 + `£tWidg‘s +( + `¬¿y +( + +16 'com·ny_id' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('Com·ny'), 'add_em±y' => +Œue +)), + +17 'Ïnguage_id' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('Lªguage'), 'add_em±y' => +Œue +)), + +18 'com·ny_Çme' => +Ãw + + `sfWidg‘FÜmFž‹rIÅut +( + `¬¿y +('w™h_em±y' => +çl£ +)), + +21 +$this +-> + `£tV®id©Üs +( + `¬¿y +( + +22 'com·ny_id' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('»quœed' => +çl£ +, 'mod–' => +$this +-> + `g‘R–©edMod–Name +('Company'), 'column' => 'id')), + +23 'Ïnguage_id' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('»quœed' => +çl£ +, 'mod–' => +$this +-> + `g‘R–©edMod–Name +('Language'), 'column' => 'id')), + +24 'com·ny_Çme' => +Ãw + + `sfV®id©ÜPass +( + `¬¿y +('»quœed' => +çl£ +)), + +27 +$this +-> +widg‘Schema +-> + `£tNameFÜm© +('company_description_filters[%s]'); + +29 +$this +-> +”rÜSchema + = +Ãw + + `sfV®id©ÜE¼ÜSchema +($this-> +v®id©ÜSchema +); + +31 +$this +-> + `£tupInh”™ªû +(); + +33 +·»Á +:: + `£tup +(); + +36 +public + +funùiÚ + + $g‘Mod–Name +() + +39 + } +} + +41 +public + +funùiÚ + + $g‘F›lds +() + +43  + `¬¿y +( + +49 + } +} + + @lib/filter/doctrine/base/BaseCompanyFormFilter.class.php + +1 + `£tWidg‘s +( + `¬¿y +( + +16 'u£r_id' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('U£r'), 'add_em±y' => +Œue +)), + +17 'com·ny_cif' => +Ãw + + `sfWidg‘FÜmFž‹rIÅut +( + `¬¿y +('w™h_em±y' => +çl£ +)), + +20 +$this +-> + `£tV®id©Üs +( + `¬¿y +( + +21 'u£r_id' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('»quœed' => +çl£ +, 'mod–' => +$this +-> + `g‘R–©edMod–Name +('User'), 'column' => 'id')), + +22 'com·ny_cif' => +Ãw + + `sfV®id©ÜPass +( + `¬¿y +('»quœed' => +çl£ +)), + +25 +$this +-> +widg‘Schema +-> + `£tNameFÜm© +('company_filters[%s]'); + +27 +$this +-> +”rÜSchema + = +Ãw + + `sfV®id©ÜE¼ÜSchema +($this-> +v®id©ÜSchema +); + +29 +$this +-> + `£tupInh”™ªû +(); + +31 +·»Á +:: + `£tup +(); + +34 +public + +funùiÚ + + $g‘Mod–Name +() + +37 + } +} + +39 +public + +funùiÚ + + $g‘F›lds +() + +41  + `¬¿y +( + +46 + } +} + + @lib/filter/doctrine/base/BaseCountryFormFilter.class.php + +1 + `£tWidg‘s +( + `¬¿y +( + +16 'couÁry_Çme' => +Ãw + + `sfWidg‘FÜmFž‹rIÅut +( + `¬¿y +('w™h_em±y' => +çl£ +)), + +17 'iso_code_2' => +Ãw + + `sfWidg‘FÜmFž‹rIÅut +( + `¬¿y +('w™h_em±y' => +çl£ +)), + +18 'iso_code_3' => +Ãw + + `sfWidg‘FÜmFž‹rIÅut +( + `¬¿y +('w™h_em±y' => +çl£ +)), + +21 +$this +-> + `£tV®id©Üs +( + `¬¿y +( + +22 'couÁry_Çme' => +Ãw + + `sfV®id©ÜPass +( + `¬¿y +('»quœed' => +çl£ +)), + +23 'iso_code_2' => +Ãw + + `sfV®id©ÜPass +( + `¬¿y +('»quœed' => +çl£ +)), + +24 'iso_code_3' => +Ãw + + `sfV®id©ÜPass +( + `¬¿y +('»quœed' => +çl£ +)), + +27 +$this +-> +widg‘Schema +-> + `£tNameFÜm© +('country_filters[%s]'); + +29 +$this +-> +”rÜSchema + = +Ãw + + `sfV®id©ÜE¼ÜSchema +($this-> +v®id©ÜSchema +); + +31 +$this +-> + `£tupInh”™ªû +(); + +33 +·»Á +:: + `£tup +(); + +36 +public + +funùiÚ + + $g‘Mod–Name +() + +39 + } +} + +41 +public + +funùiÚ + + $g‘F›lds +() + +43  + `¬¿y +( + +49 + } +} + + @lib/filter/doctrine/base/BaseGeneralCategoryDescriptionFormFilter.class.php + +1 + `£tWidg‘s +( + `¬¿y +( + +16 'Ïnguage_id' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('Lªguage'), 'add_em±y' => +Œue +)), + +17 'g’”®_ÿ‹g_id' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('G’”®C©egÜy'), 'add_em±y' => +Œue +)), + +18 'g’”®_ÿ‹g_Çme' => +Ãw + + `sfWidg‘FÜmFž‹rIÅut +( + `¬¿y +('w™h_em±y' => +çl£ +)), + +19 'g’”®_ÿ‹g_desütiÚ' => +Ãw + + `sfWidg‘FÜmFž‹rIÅut +(), + +22 +$this +-> + `£tV®id©Üs +( + `¬¿y +( + +23 'Ïnguage_id' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('»quœed' => +çl£ +, 'mod–' => +$this +-> + `g‘R–©edMod–Name +('Language'), 'column' => 'id')), + +24 'g’”®_ÿ‹g_id' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('»quœed' => +çl£ +, 'mod–' => +$this +-> + `g‘R–©edMod–Name +('GeneralCategory'), 'column' => 'id')), + +25 'g’”®_ÿ‹g_Çme' => +Ãw + + `sfV®id©ÜPass +( + `¬¿y +('»quœed' => +çl£ +)), + +26 'g’”®_ÿ‹g_desütiÚ' => +Ãw + + `sfV®id©ÜPass +( + `¬¿y +('»quœed' => +çl£ +)), + +29 +$this +-> +widg‘Schema +-> + `£tNameFÜm© +('general_category_description_filters[%s]'); + +31 +$this +-> +”rÜSchema + = +Ãw + + `sfV®id©ÜE¼ÜSchema +($this-> +v®id©ÜSchema +); + +33 +$this +-> + `£tupInh”™ªû +(); + +35 +·»Á +:: + `£tup +(); + +38 +public + +funùiÚ + + $g‘Mod–Name +() + +41 + } +} + +43 +public + +funùiÚ + + $g‘F›lds +() + +45  + `¬¿y +( + +52 + } +} + + @lib/filter/doctrine/base/BaseGeneralCategoryFormFilter.class.php + +1 + `£tWidg‘s +( + `¬¿y +( + +16 'ü—‹d_©' => +Ãw + + `sfWidg‘FÜmFž‹rD©e +( + `¬¿y +('äom_d©e' =>‚ew + `sfWidg‘FÜmD©e +(), 'to_d©e' =>‚ew sfWidg‘FÜmD©e(), 'w™h_em±y' => +çl£ +)), + +17 'upd©ed_©' => +Ãw + + `sfWidg‘FÜmFž‹rD©e +( + `¬¿y +('äom_d©e' =>‚ew + `sfWidg‘FÜmD©e +(), 'to_d©e' =>‚ew sfWidg‘FÜmD©e(), 'w™h_em±y' => +çl£ +)), + +18 'roÙ_id' => +Ãw + + `sfWidg‘FÜmFž‹rIÅut +(), + +19 'lá' => +Ãw + + `sfWidg‘FÜmFž‹rIÅut +(), + +20 'rgt' => +Ãw + + `sfWidg‘FÜmFž‹rIÅut +(), + +21 'Ëv–' => +Ãw + + `sfWidg‘FÜmFž‹rIÅut +(), + +24 +$this +-> + `£tV®id©Üs +( + `¬¿y +( + +25 'ü—‹d_©' => +Ãw + + `sfV®id©ÜD©eRªge +( + `¬¿y +('»quœed' => +çl£ +, 'äom_d©e' =>‚ew + `sfV®id©ÜD©eTime +(array('required' => false, 'datetime_output' => 'Y-m-d 00:00:00')), 'to_date' =>‚ew sfValidatorDateTime(array('required' => false, 'datetime_output' => 'Y-m-d 23:59:59')))), + +26 'upd©ed_©' => +Ãw + + `sfV®id©ÜD©eRªge +( + `¬¿y +('»quœed' => +çl£ +, 'äom_d©e' =>‚ew + `sfV®id©ÜD©eTime +(array('required' => false, 'datetime_output' => 'Y-m-d 00:00:00')), 'to_date' =>‚ew sfValidatorDateTime(array('required' => false, 'datetime_output' => 'Y-m-d 23:59:59')))), + +27 'roÙ_id' => +Ãw + + `sfV®id©ÜSchemaFž‹r +('‹xt',‚ew + `sfV®id©ÜIÁeg” +( + `¬¿y +('»quœed' => +çl£ +))), + +28 'lá' => +Ãw + + `sfV®id©ÜSchemaFž‹r +('‹xt',‚ew + `sfV®id©ÜIÁeg” +( + `¬¿y +('»quœed' => +çl£ +))), + +29 'rgt' => +Ãw + + `sfV®id©ÜSchemaFž‹r +('‹xt',‚ew + `sfV®id©ÜIÁeg” +( + `¬¿y +('»quœed' => +çl£ +))), + +30 'Ëv–' => +Ãw + + `sfV®id©ÜSchemaFž‹r +('‹xt',‚ew + `sfV®id©ÜIÁeg” +( + `¬¿y +('»quœed' => +çl£ +))), + +33 +$this +-> +widg‘Schema +-> + `£tNameFÜm© +('general_category_filters[%s]'); + +35 +$this +-> +”rÜSchema + = +Ãw + + `sfV®id©ÜE¼ÜSchema +($this-> +v®id©ÜSchema +); + +37 +$this +-> + `£tupInh”™ªû +(); + +39 +·»Á +:: + `£tup +(); + +42 +public + +funùiÚ + + $g‘Mod–Name +() + +45 + } +} + +47 +public + +funùiÚ + + $g‘F›lds +() + +49  + `¬¿y +( + +58 + } +} + + @lib/filter/doctrine/base/BaseLanguageFormFilter.class.php + +1 + `£tWidg‘s +( + `¬¿y +( + +16 'Ïnguage_Çme' => +Ãw + + `sfWidg‘FÜmFž‹rIÅut +( + `¬¿y +('w™h_em±y' => +çl£ +)), + +17 'code' => +Ãw + + `sfWidg‘FÜmFž‹rIÅut +( + `¬¿y +('w™h_em±y' => +çl£ +)), + +20 +$this +-> + `£tV®id©Üs +( + `¬¿y +( + +21 'Ïnguage_Çme' => +Ãw + + `sfV®id©ÜPass +( + `¬¿y +('»quœed' => +çl£ +)), + +22 'code' => +Ãw + + `sfV®id©ÜPass +( + `¬¿y +('»quœed' => +çl£ +)), + +25 +$this +-> +widg‘Schema +-> + `£tNameFÜm© +('language_filters[%s]'); + +27 +$this +-> +”rÜSchema + = +Ãw + + `sfV®id©ÜE¼ÜSchema +($this-> +v®id©ÜSchema +); + +29 +$this +-> + `£tupInh”™ªû +(); + +31 +·»Á +:: + `£tup +(); + +34 +public + +funùiÚ + + $g‘Mod–Name +() + +37 + } +} + +39 +public + +funùiÚ + + $g‘F›lds +() + +41  + `¬¿y +( + +46 + } +} + + @lib/filter/doctrine/base/BaseOfficeAdsFormFilter.class.php + +1 + `£tWidg‘s +( + `¬¿y +( + +16 'offiû_id' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('Offiû'), 'add_em±y' => +Œue +)), + +17 'ad_id' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('Ad'), 'add_em±y' => +Œue +)), + +20 +$this +-> + `£tV®id©Üs +( + `¬¿y +( + +21 'offiû_id' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('»quœed' => +çl£ +, 'mod–' => +$this +-> + `g‘R–©edMod–Name +('Office'), 'column' => 'id')), + +22 'ad_id' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('»quœed' => +çl£ +, 'mod–' => +$this +-> + `g‘R–©edMod–Name +('Ad'), 'column' => 'id')), + +25 +$this +-> +widg‘Schema +-> + `£tNameFÜm© +('office_ads_filters[%s]'); + +27 +$this +-> +”rÜSchema + = +Ãw + + `sfV®id©ÜE¼ÜSchema +($this-> +v®id©ÜSchema +); + +29 +$this +-> + `£tupInh”™ªû +(); + +31 +·»Á +:: + `£tup +(); + +34 +public + +funùiÚ + + $g‘Mod–Name +() + +37 + } +} + +39 +public + +funùiÚ + + $g‘F›lds +() + +41  + `¬¿y +( + +46 + } +} + + @lib/filter/doctrine/base/BaseOfficeFormFilter.class.php + +1 + `£tWidg‘s +( + `¬¿y +( + +16 'com·ny_id' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('Com·ny'), 'add_em±y' => +Œue +)), + +17 'c™y_id' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('C™y'), 'add_em±y' => +Œue +)), + +18 'offiû_gps' => +Ãw + + `sfWidg‘FÜmFž‹rIÅut +(), + +19 'offiû_¡»‘_add»ss' => +Ãw + + `sfWidg‘FÜmFž‹rIÅut +( + `¬¿y +('w™h_em±y' => +çl£ +)), + +20 'offiû_z' => +Ãw + + `sfWidg‘FÜmFž‹rIÅut +( + `¬¿y +('w™h_em±y' => +çl£ +)), + +21 'ü—‹d_©' => +Ãw + + `sfWidg‘FÜmFž‹rD©e +( + `¬¿y +('äom_d©e' =>‚ew + `sfWidg‘FÜmD©e +(), 'to_d©e' =>‚ew sfWidg‘FÜmD©e(), 'w™h_em±y' => +çl£ +)), + +22 'upd©ed_©' => +Ãw + + `sfWidg‘FÜmFž‹rD©e +( + `¬¿y +('äom_d©e' =>‚ew + `sfWidg‘FÜmD©e +(), 'to_d©e' =>‚ew sfWidg‘FÜmD©e(), 'w™h_em±y' => +çl£ +)), + +25 +$this +-> + `£tV®id©Üs +( + `¬¿y +( + +26 'com·ny_id' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('»quœed' => +çl£ +, 'mod–' => +$this +-> + `g‘R–©edMod–Name +('Company'), 'column' => 'id')), + +27 'c™y_id' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('»quœed' => +çl£ +, 'mod–' => +$this +-> + `g‘R–©edMod–Name +('City'), 'column' => 'id')), + +28 'offiû_gps' => +Ãw + + `sfV®id©ÜPass +( + `¬¿y +('»quœed' => +çl£ +)), + +29 'offiû_¡»‘_add»ss' => +Ãw + + `sfV®id©ÜPass +( + `¬¿y +('»quœed' => +çl£ +)), + +30 'offiû_z' => +Ãw + + `sfV®id©ÜPass +( + `¬¿y +('»quœed' => +çl£ +)), + +31 'ü—‹d_©' => +Ãw + + `sfV®id©ÜD©eRªge +( + `¬¿y +('»quœed' => +çl£ +, 'äom_d©e' =>‚ew + `sfV®id©ÜD©eTime +(array('required' => false, 'datetime_output' => 'Y-m-d 00:00:00')), 'to_date' =>‚ew sfValidatorDateTime(array('required' => false, 'datetime_output' => 'Y-m-d 23:59:59')))), + +32 'upd©ed_©' => +Ãw + + `sfV®id©ÜD©eRªge +( + `¬¿y +('»quœed' => +çl£ +, 'äom_d©e' =>‚ew + `sfV®id©ÜD©eTime +(array('required' => false, 'datetime_output' => 'Y-m-d 00:00:00')), 'to_date' =>‚ew sfValidatorDateTime(array('required' => false, 'datetime_output' => 'Y-m-d 23:59:59')))), + +35 +$this +-> +widg‘Schema +-> + `£tNameFÜm© +('office_filters[%s]'); + +37 +$this +-> +”rÜSchema + = +Ãw + + `sfV®id©ÜE¼ÜSchema +($this-> +v®id©ÜSchema +); + +39 +$this +-> + `£tupInh”™ªû +(); + +41 +·»Á +:: + `£tup +(); + +44 +public + +funùiÚ + + $g‘Mod–Name +() + +47 + } +} + +49 +public + +funùiÚ + + $g‘F›lds +() + +51  + `¬¿y +( + +61 + } +} + + @lib/filter/doctrine/base/BaseRegionFormFilter.class.php + +1 + `£tWidg‘s +( + `¬¿y +( + +16 'couÁry_id' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('CouÁry'), 'add_em±y' => +Œue +)), + +17 '»giÚ_Çme' => +Ãw + + `sfWidg‘FÜmFž‹rIÅut +( + `¬¿y +('w™h_em±y' => +çl£ +)), + +20 +$this +-> + `£tV®id©Üs +( + `¬¿y +( + +21 'couÁry_id' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('»quœed' => +çl£ +, 'mod–' => +$this +-> + `g‘R–©edMod–Name +('Country'), 'column' => 'id')), + +22 '»giÚ_Çme' => +Ãw + + `sfV®id©ÜPass +( + `¬¿y +('»quœed' => +çl£ +)), + +25 +$this +-> +widg‘Schema +-> + `£tNameFÜm© +('region_filters[%s]'); + +27 +$this +-> +”rÜSchema + = +Ãw + + `sfV®id©ÜE¼ÜSchema +($this-> +v®id©ÜSchema +); + +29 +$this +-> + `£tupInh”™ªû +(); + +31 +·»Á +:: + `£tup +(); + +34 +public + +funùiÚ + + $g‘Mod–Name +() + +37 + } +} + +39 +public + +funùiÚ + + $g‘F›lds +() + +41  + `¬¿y +( + +46 + } +} + + @lib/filter/doctrine/base/BaseUserBasketFormFilter.class.php + +1 + `£tWidg‘s +( + `¬¿y +( + +16 'u£r_id' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('U£r'), 'add_em±y' => +Œue +)), + +17 'g’”®_ÿ‹g_id' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('G’”®C©egÜy'), 'add_em±y' => +Œue +)), + +20 +$this +-> + `£tV®id©Üs +( + `¬¿y +( + +21 'u£r_id' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('»quœed' => +çl£ +, 'mod–' => +$this +-> + `g‘R–©edMod–Name +('User'), 'column' => 'id')), + +22 'g’”®_ÿ‹g_id' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('»quœed' => +çl£ +, 'mod–' => +$this +-> + `g‘R–©edMod–Name +('GeneralCategory'), 'column' => 'id')), + +25 +$this +-> +widg‘Schema +-> + `£tNameFÜm© +('user_basket_filters[%s]'); + +27 +$this +-> +”rÜSchema + = +Ãw + + `sfV®id©ÜE¼ÜSchema +($this-> +v®id©ÜSchema +); + +29 +$this +-> + `£tupInh”™ªû +(); + +31 +·»Á +:: + `£tup +(); + +34 +public + +funùiÚ + + $g‘Mod–Name +() + +37 + } +} + +39 +public + +funùiÚ + + $g‘F›lds +() + +41  + `¬¿y +( + +46 + } +} + + @lib/filter/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardGroupFormFilter.class.php + +1 + `£tWidg‘s +( + `¬¿y +( + +16 'Çme' => +Ãw + + `sfWidg‘FÜmFž‹rIÅut +(), + +17 'desütiÚ' => +Ãw + + `sfWidg‘FÜmFž‹rIÅut +(), + +18 'ü—‹d_©' => +Ãw + + `sfWidg‘FÜmFž‹rD©e +( + `¬¿y +('äom_d©e' =>‚ew + `sfWidg‘FÜmD©e +(), 'to_d©e' =>‚ew sfWidg‘FÜmD©e(), 'w™h_em±y' => +çl£ +)), + +19 'upd©ed_©' => +Ãw + + `sfWidg‘FÜmFž‹rD©e +( + `¬¿y +('äom_d©e' =>‚ew + `sfWidg‘FÜmD©e +(), 'to_d©e' =>‚ew sfWidg‘FÜmD©e(), 'w™h_em±y' => +çl£ +)), + +20 'u£rs_li¡' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('muɝË' => +Œue +, 'model' => 'sfGuardUser')), + +21 '³rmissiÚs_li¡' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('muɝË' => +Œue +, 'model' => 'sfGuardPermission')), + +24 +$this +-> + `£tV®id©Üs +( + `¬¿y +( + +25 'Çme' => +Ãw + + `sfV®id©ÜPass +( + `¬¿y +('»quœed' => +çl£ +)), + +26 'desütiÚ' => +Ãw + + `sfV®id©ÜPass +( + `¬¿y +('»quœed' => +çl£ +)), + +27 'ü—‹d_©' => +Ãw + + `sfV®id©ÜD©eRªge +( + `¬¿y +('»quœed' => +çl£ +, 'äom_d©e' =>‚ew + `sfV®id©ÜD©eTime +(array('required' => false, 'datetime_output' => 'Y-m-d 00:00:00')), 'to_date' =>‚ew sfValidatorDateTime(array('required' => false, 'datetime_output' => 'Y-m-d 23:59:59')))), + +28 'upd©ed_©' => +Ãw + + `sfV®id©ÜD©eRªge +( + `¬¿y +('»quœed' => +çl£ +, 'äom_d©e' =>‚ew + `sfV®id©ÜD©eTime +(array('required' => false, 'datetime_output' => 'Y-m-d 00:00:00')), 'to_date' =>‚ew sfValidatorDateTime(array('required' => false, 'datetime_output' => 'Y-m-d 23:59:59')))), + +29 'u£rs_li¡' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('muɝË' => +Œue +, 'mod–' => 'sfGu¬dU£r', '»quœed' => +çl£ +)), + +30 '³rmissiÚs_li¡' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('muɝË' => +Œue +, 'mod–' => 'sfGu¬dP”missiÚ', '»quœed' => +çl£ +)), + +33 +$this +-> +widg‘Schema +-> + `£tNameFÜm© +('sf_guard_group_filters[%s]'); + +35 +$this +-> +”rÜSchema + = +Ãw + + `sfV®id©ÜE¼ÜSchema +($this-> +v®id©ÜSchema +); + +37 +$this +-> + `£tupInh”™ªû +(); + +39 +·»Á +:: + `£tup +(); + +42 +public + +funùiÚ + + $addU£rsLi¡CÞumnQu”y +( +Doùrše_Qu”y + +$qu”y +, +$f›ld +, +$v®ues +) + +44 ià(! + `is_¬¿y +( +$v®ues +)) + +46 +$v®ues + = + `¬¿y +($values); + +49 ià(! + `couÁ +( +$v®ues +)) + +54 +$qu”y + + +55 -> + `ËáJoš +( +$qu”y +-> + `g‘RoÙAlŸs +().'.sfGuardUserGroup sfGuardUserGroup') + +56 -> + `ªdWh”eIn +('sfGu¬dU£rGroup.u£r_id', +$v®ues +) + +58 + } +} + +60 +public + +funùiÚ + + $addP”missiÚsLi¡CÞumnQu”y +( +Doùrše_Qu”y + +$qu”y +, +$f›ld +, +$v®ues +) + +62 ià(! + `is_¬¿y +( +$v®ues +)) + +64 +$v®ues + = + `¬¿y +($values); + +67 ià(! + `couÁ +( +$v®ues +)) + +72 +$qu”y + + +73 -> + `ËáJoš +( +$qu”y +-> + `g‘RoÙAlŸs +().'.sfGuardGroupPermission sfGuardGroupPermission') + +74 -> + `ªdWh”eIn +('sfGu¬dGroupP”missiÚ.³rmissiÚ_id', +$v®ues +) + +76 + } +} + +78 +public + +funùiÚ + + $g‘Mod–Name +() + +81 + } +} + +83 +public + +funùiÚ + + $g‘F›lds +() + +85  + `¬¿y +( + +94 + } +} + + @lib/filter/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardPermissionFormFilter.class.php + +1 + `£tWidg‘s +( + `¬¿y +( + +16 'Çme' => +Ãw + + `sfWidg‘FÜmFž‹rIÅut +(), + +17 'desütiÚ' => +Ãw + + `sfWidg‘FÜmFž‹rIÅut +(), + +18 'ü—‹d_©' => +Ãw + + `sfWidg‘FÜmFž‹rD©e +( + `¬¿y +('äom_d©e' =>‚ew + `sfWidg‘FÜmD©e +(), 'to_d©e' =>‚ew sfWidg‘FÜmD©e(), 'w™h_em±y' => +çl£ +)), + +19 'upd©ed_©' => +Ãw + + `sfWidg‘FÜmFž‹rD©e +( + `¬¿y +('äom_d©e' =>‚ew + `sfWidg‘FÜmD©e +(), 'to_d©e' =>‚ew sfWidg‘FÜmD©e(), 'w™h_em±y' => +çl£ +)), + +20 'groups_li¡' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('muɝË' => +Œue +, 'model' => 'sfGuardGroup')), + +21 'u£rs_li¡' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('muɝË' => +Œue +, 'model' => 'sfGuardUser')), + +24 +$this +-> + `£tV®id©Üs +( + `¬¿y +( + +25 'Çme' => +Ãw + + `sfV®id©ÜPass +( + `¬¿y +('»quœed' => +çl£ +)), + +26 'desütiÚ' => +Ãw + + `sfV®id©ÜPass +( + `¬¿y +('»quœed' => +çl£ +)), + +27 'ü—‹d_©' => +Ãw + + `sfV®id©ÜD©eRªge +( + `¬¿y +('»quœed' => +çl£ +, 'äom_d©e' =>‚ew + `sfV®id©ÜD©eTime +(array('required' => false, 'datetime_output' => 'Y-m-d 00:00:00')), 'to_date' =>‚ew sfValidatorDateTime(array('required' => false, 'datetime_output' => 'Y-m-d 23:59:59')))), + +28 'upd©ed_©' => +Ãw + + `sfV®id©ÜD©eRªge +( + `¬¿y +('»quœed' => +çl£ +, 'äom_d©e' =>‚ew + `sfV®id©ÜD©eTime +(array('required' => false, 'datetime_output' => 'Y-m-d 00:00:00')), 'to_date' =>‚ew sfValidatorDateTime(array('required' => false, 'datetime_output' => 'Y-m-d 23:59:59')))), + +29 'groups_li¡' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('muɝË' => +Œue +, 'mod–' => 'sfGu¬dGroup', '»quœed' => +çl£ +)), + +30 'u£rs_li¡' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('muɝË' => +Œue +, 'mod–' => 'sfGu¬dU£r', '»quœed' => +çl£ +)), + +33 +$this +-> +widg‘Schema +-> + `£tNameFÜm© +('sf_guard_permission_filters[%s]'); + +35 +$this +-> +”rÜSchema + = +Ãw + + `sfV®id©ÜE¼ÜSchema +($this-> +v®id©ÜSchema +); + +37 +$this +-> + `£tupInh”™ªû +(); + +39 +·»Á +:: + `£tup +(); + +42 +public + +funùiÚ + + $addGroupsLi¡CÞumnQu”y +( +Doùrše_Qu”y + +$qu”y +, +$f›ld +, +$v®ues +) + +44 ià(! + `is_¬¿y +( +$v®ues +)) + +46 +$v®ues + = + `¬¿y +($values); + +49 ià(! + `couÁ +( +$v®ues +)) + +54 +$qu”y + + +55 -> + `ËáJoš +( +$qu”y +-> + `g‘RoÙAlŸs +().'.sfGuardGroupPermission sfGuardGroupPermission') + +56 -> + `ªdWh”eIn +('sfGu¬dGroupP”missiÚ.group_id', +$v®ues +) + +58 + } +} + +60 +public + +funùiÚ + + $addU£rsLi¡CÞumnQu”y +( +Doùrše_Qu”y + +$qu”y +, +$f›ld +, +$v®ues +) + +62 ià(! + `is_¬¿y +( +$v®ues +)) + +64 +$v®ues + = + `¬¿y +($values); + +67 ià(! + `couÁ +( +$v®ues +)) + +72 +$qu”y + + +73 -> + `ËáJoš +( +$qu”y +-> + `g‘RoÙAlŸs +().'.sfGuardUserPermission sfGuardUserPermission') + +74 -> + `ªdWh”eIn +('sfGu¬dU£rP”missiÚ.u£r_id', +$v®ues +) + +76 + } +} + +78 +public + +funùiÚ + + $g‘Mod–Name +() + +81 + } +} + +83 +public + +funùiÚ + + $g‘F›lds +() + +85  + `¬¿y +( + +94 + } +} + + @lib/filter/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardUserFormFilter.class.php + +1 + `£tWidg‘s +( + `¬¿y +( + +16 'fœ¡_Çme' => +Ãw + + `sfWidg‘FÜmFž‹rIÅut +(), + +17 'Ï¡_Çme' => +Ãw + + `sfWidg‘FÜmFž‹rIÅut +(), + +18 'emaž_add»ss' => +Ãw + + `sfWidg‘FÜmFž‹rIÅut +( + `¬¿y +('w™h_em±y' => +çl£ +)), + +19 'u£ºame' => +Ãw + + `sfWidg‘FÜmFž‹rIÅut +( + `¬¿y +('w™h_em±y' => +çl£ +)), + +20 '®gܙhm' => +Ãw + + `sfWidg‘FÜmFž‹rIÅut +( + `¬¿y +('w™h_em±y' => +çl£ +)), + +21 '§É' => +Ãw + + `sfWidg‘FÜmFž‹rIÅut +(), + +22 '·sswÜd' => +Ãw + + `sfWidg‘FÜmFž‹rIÅut +(), + +23 'is_aùive' => +Ãw + + `sfWidg‘FÜmChoiû +( + `¬¿y +('choices' =>‡rray('' => 'yes or‚o', 1 => 'yes', 0 => 'no'))), + +24 'is_su³r_admš' => +Ãw + + `sfWidg‘FÜmChoiû +( + `¬¿y +('choices' =>‡rray('' => 'yes or‚o', 1 => 'yes', 0 => 'no'))), + +25 'Ï¡_logš' => +Ãw + + `sfWidg‘FÜmFž‹rD©e +( + `¬¿y +('äom_d©e' =>‚ew + `sfWidg‘FÜmD©e +(), 'to_date' =>‚ew sfWidgetFormDate())), + +26 'ü—‹d_©' => +Ãw + + `sfWidg‘FÜmFž‹rD©e +( + `¬¿y +('äom_d©e' =>‚ew + `sfWidg‘FÜmD©e +(), 'to_d©e' =>‚ew sfWidg‘FÜmD©e(), 'w™h_em±y' => +çl£ +)), + +27 'upd©ed_©' => +Ãw + + `sfWidg‘FÜmFž‹rD©e +( + `¬¿y +('äom_d©e' =>‚ew + `sfWidg‘FÜmD©e +(), 'to_d©e' =>‚ew sfWidg‘FÜmD©e(), 'w™h_em±y' => +çl£ +)), + +28 'groups_li¡' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('muɝË' => +Œue +, 'model' => 'sfGuardGroup')), + +29 '³rmissiÚs_li¡' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('muɝË' => +Œue +, 'model' => 'sfGuardPermission')), + +32 +$this +-> + `£tV®id©Üs +( + `¬¿y +( + +33 'fœ¡_Çme' => +Ãw + + `sfV®id©ÜPass +( + `¬¿y +('»quœed' => +çl£ +)), + +34 'Ï¡_Çme' => +Ãw + + `sfV®id©ÜPass +( + `¬¿y +('»quœed' => +çl£ +)), + +35 'emaž_add»ss' => +Ãw + + `sfV®id©ÜPass +( + `¬¿y +('»quœed' => +çl£ +)), + +36 'u£ºame' => +Ãw + + `sfV®id©ÜPass +( + `¬¿y +('»quœed' => +çl£ +)), + +37 '®gܙhm' => +Ãw + + `sfV®id©ÜPass +( + `¬¿y +('»quœed' => +çl£ +)), + +38 '§É' => +Ãw + + `sfV®id©ÜPass +( + `¬¿y +('»quœed' => +çl£ +)), + +39 '·sswÜd' => +Ãw + + `sfV®id©ÜPass +( + `¬¿y +('»quœed' => +çl£ +)), + +40 'is_aùive' => +Ãw + + `sfV®id©ÜChoiû +( + `¬¿y +('»quœed' => +çl£ +, 'choices' =>‡rray('', 1, 0))), + +41 'is_su³r_admš' => +Ãw + + `sfV®id©ÜChoiû +( + `¬¿y +('»quœed' => +çl£ +, 'choices' =>‡rray('', 1, 0))), + +42 'Ï¡_logš' => +Ãw + + `sfV®id©ÜD©eRªge +( + `¬¿y +('»quœed' => +çl£ +, 'äom_d©e' =>‚ew + `sfV®id©ÜD©eTime +(array('required' => false, 'datetime_output' => 'Y-m-d 00:00:00')), 'to_date' =>‚ew sfValidatorDateTime(array('required' => false, 'datetime_output' => 'Y-m-d 23:59:59')))), + +43 'ü—‹d_©' => +Ãw + + `sfV®id©ÜD©eRªge +( + `¬¿y +('»quœed' => +çl£ +, 'äom_d©e' =>‚ew + `sfV®id©ÜD©eTime +(array('required' => false, 'datetime_output' => 'Y-m-d 00:00:00')), 'to_date' =>‚ew sfValidatorDateTime(array('required' => false, 'datetime_output' => 'Y-m-d 23:59:59')))), + +44 'upd©ed_©' => +Ãw + + `sfV®id©ÜD©eRªge +( + `¬¿y +('»quœed' => +çl£ +, 'äom_d©e' =>‚ew + `sfV®id©ÜD©eTime +(array('required' => false, 'datetime_output' => 'Y-m-d 00:00:00')), 'to_date' =>‚ew sfValidatorDateTime(array('required' => false, 'datetime_output' => 'Y-m-d 23:59:59')))), + +45 'groups_li¡' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('muɝË' => +Œue +, 'mod–' => 'sfGu¬dGroup', '»quœed' => +çl£ +)), + +46 '³rmissiÚs_li¡' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('muɝË' => +Œue +, 'mod–' => 'sfGu¬dP”missiÚ', '»quœed' => +çl£ +)), + +49 +$this +-> +widg‘Schema +-> + `£tNameFÜm© +('sf_guard_user_filters[%s]'); + +51 +$this +-> +”rÜSchema + = +Ãw + + `sfV®id©ÜE¼ÜSchema +($this-> +v®id©ÜSchema +); + +53 +$this +-> + `£tupInh”™ªû +(); + +55 +·»Á +:: + `£tup +(); + +58 +public + +funùiÚ + + $addGroupsLi¡CÞumnQu”y +( +Doùrše_Qu”y + +$qu”y +, +$f›ld +, +$v®ues +) + +60 ià(! + `is_¬¿y +( +$v®ues +)) + +62 +$v®ues + = + `¬¿y +($values); + +65 ià(! + `couÁ +( +$v®ues +)) + +70 +$qu”y + + +71 -> + `ËáJoš +( +$qu”y +-> + `g‘RoÙAlŸs +().'.sfGuardUserGroup sfGuardUserGroup') + +72 -> + `ªdWh”eIn +('sfGu¬dU£rGroup.group_id', +$v®ues +) + +74 + } +} + +76 +public + +funùiÚ + + $addP”missiÚsLi¡CÞumnQu”y +( +Doùrše_Qu”y + +$qu”y +, +$f›ld +, +$v®ues +) + +78 ià(! + `is_¬¿y +( +$v®ues +)) + +80 +$v®ues + = + `¬¿y +($values); + +83 ià(! + `couÁ +( +$v®ues +)) + +88 +$qu”y + + +89 -> + `ËáJoš +( +$qu”y +-> + `g‘RoÙAlŸs +().'.sfGuardUserPermission sfGuardUserPermission') + +90 -> + `ªdWh”eIn +('sfGu¬dU£rP”missiÚ.³rmissiÚ_id', +$v®ues +) + +92 + } +} + +94 +public + +funùiÚ + + $g‘Mod–Name +() + +97 + } +} + +99 +public + +funùiÚ + + $g‘F›lds +() + +101  + `¬¿y +( + +118 + } +} + + @lib/filter/doctrine/sfDoctrineGuardPlugin/sfGuardGroupFormFilter.class.php + +1 + `£tWidg‘s +( + `¬¿y +( + +18 'id' => +Ãw + + `sfWidg‘FÜmIÅutHidd’ +(), + +19 'Ïnguage_id' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('Lªguage'), 'add_em±y' => +çl£ +)), + +20 'ad_id' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('Ad'), 'add_em±y' => +çl£ +)), + +21 'ad_Çme' => +Ãw + + `sfWidg‘FÜmIÅutText +(), + +22 'ad_desütiÚ' => +Ãw + + `sfWidg‘FÜmIÅutText +(), + +23 'ad_mobže_‹xt' => +Ãw + + `sfWidg‘FÜmTex»a +(), + +24 'ad_lšk' => +Ãw + + `sfWidg‘FÜmTex»a +(), + +27 +$this +-> + `£tV®id©Üs +( + `¬¿y +( + +28 'id' => +Ãw + + `sfV®id©ÜChoiû +( + `¬¿y +('choiûs' =>‡¼ay( +$this +-> + `g‘Objeù +()-> + `g‘ +('id')), 'em±y_v®ue' => $this->g‘Objeù()->g‘('id'), '»quœed' => +çl£ +)), + +29 'Ïnguage_id' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('Language'))), + +30 'ad_id' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('Ad'))), + +31 'ad_Çme' => +Ãw + + `sfV®id©ÜSŒšg +( + `¬¿y +('max_length' => 255)), + +32 'ad_desütiÚ' => +Ãw + + `sfV®id©ÜPass +( + `¬¿y +('»quœed' => +çl£ +)), + +33 'ad_mobže_‹xt' => +Ãw + + `sfV®id©ÜSŒšg +( + `¬¿y +('max_length' => 500)), + +34 'ad_lšk' => +Ãw + + `sfV®id©ÜSŒšg +( + `¬¿y +('max_length' => 3000)), + +37 +$this +-> +widg‘Schema +-> + `£tNameFÜm© +('ad_description[%s]'); + +39 +$this +-> +”rÜSchema + = +Ãw + + `sfV®id©ÜE¼ÜSchema +($this-> +v®id©ÜSchema +); + +41 +$this +-> + `£tupInh”™ªû +(); + +43 +·»Á +:: + `£tup +(); + +46 +public + +funùiÚ + + $g‘Mod–Name +() + +49 + } +} + + @lib/form/doctrine/base/BaseAdForm.class.php + +1 + `£tWidg‘s +( + `¬¿y +( + +18 'id' => +Ãw + + `sfWidg‘FÜmIÅutHidd’ +(), + +19 'com·ny_id' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('Com·ny'), 'add_em±y' => +çl£ +)), + +20 'com·ny_ÿ‹g_id' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('Com·nyC©egÜy'), 'add_em±y' => +Œue +)), + +21 'ad_mobže_image_lšk' => +Ãw + + `sfWidg‘FÜmTex»a +(), + +22 'ü—‹d_©' => +Ãw + + `sfWidg‘FÜmD©eTime +(), + +23 'upd©ed_©' => +Ãw + + `sfWidg‘FÜmD©eTime +(), + +26 +$this +-> + `£tV®id©Üs +( + `¬¿y +( + +27 'id' => +Ãw + + `sfV®id©ÜChoiû +( + `¬¿y +('choiûs' =>‡¼ay( +$this +-> + `g‘Objeù +()-> + `g‘ +('id')), 'em±y_v®ue' => $this->g‘Objeù()->g‘('id'), '»quœed' => +çl£ +)), + +28 'com·ny_id' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('Company'))), + +29 'com·ny_ÿ‹g_id' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('Com·nyC©egÜy'), '»quœed' => +çl£ +)), + +30 'ad_mobže_image_lšk' => +Ãw + + `sfV®id©ÜSŒšg +( + `¬¿y +('max_length' => 3000)), + +31 'ü—‹d_©' => +Ãw + + `sfV®id©ÜD©eTime +(), + +32 'upd©ed_©' => +Ãw + + `sfV®id©ÜD©eTime +(), + +35 +$this +-> +widg‘Schema +-> + `£tNameFÜm© +('ad[%s]'); + +37 +$this +-> +”rÜSchema + = +Ãw + + `sfV®id©ÜE¼ÜSchema +($this-> +v®id©ÜSchema +); + +39 +$this +-> + `£tupInh”™ªû +(); + +41 +·»Á +:: + `£tup +(); + +44 +public + +funùiÚ + + $g‘Mod–Name +() + +47 + } +} + + @lib/form/doctrine/base/BaseCityForm.class.php + +1 + `£tWidg‘s +( + `¬¿y +( + +18 'id' => +Ãw + + `sfWidg‘FÜmIÅutHidd’ +(), + +19 'c™y_Çme' => +Ãw + + `sfWidg‘FÜmIÅutText +(), + +20 '»giÚ_id' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('RegiÚ'), 'add_em±y' => +çl£ +)), + +23 +$this +-> + `£tV®id©Üs +( + `¬¿y +( + +24 'id' => +Ãw + + `sfV®id©ÜChoiû +( + `¬¿y +('choiûs' =>‡¼ay( +$this +-> + `g‘Objeù +()-> + `g‘ +('id')), 'em±y_v®ue' => $this->g‘Objeù()->g‘('id'), '»quœed' => +çl£ +)), + +25 'c™y_Çme' => +Ãw + + `sfV®id©ÜSŒšg +( + `¬¿y +('max_length' => 64)), + +26 '»giÚ_id' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('Region'))), + +29 +$this +-> +widg‘Schema +-> + `£tNameFÜm© +('city[%s]'); + +31 +$this +-> +”rÜSchema + = +Ãw + + `sfV®id©ÜE¼ÜSchema +($this-> +v®id©ÜSchema +); + +33 +$this +-> + `£tupInh”™ªû +(); + +35 +·»Á +:: + `£tup +(); + +38 +public + +funùiÚ + + $g‘Mod–Name +() + +41 + } +} + + @lib/form/doctrine/base/BaseCompanyCategoryDescriptionForm.class.php + +1 + `£tWidg‘s +( + `¬¿y +( + +18 'id' => +Ãw + + `sfWidg‘FÜmIÅutHidd’ +(), + +19 'Ïnguage_id' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('Lªguage'), 'add_em±y' => +çl£ +)), + +20 'com·ny_ÿ‹g_id' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('Com·nyC©egÜy'), 'add_em±y' => +çl£ +)), + +21 'com·ny_ÿ‹g_Çme' => +Ãw + + `sfWidg‘FÜmIÅutText +(), + +22 'com·ny_ÿ‹g_desütiÚ' => +Ãw + + `sfWidg‘FÜmIÅutText +(), + +25 +$this +-> + `£tV®id©Üs +( + `¬¿y +( + +26 'id' => +Ãw + + `sfV®id©ÜChoiû +( + `¬¿y +('choiûs' =>‡¼ay( +$this +-> + `g‘Objeù +()-> + `g‘ +('id')), 'em±y_v®ue' => $this->g‘Objeù()->g‘('id'), '»quœed' => +çl£ +)), + +27 'Ïnguage_id' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('Language'))), + +28 'com·ny_ÿ‹g_id' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('CompanyCategory'))), + +29 'com·ny_ÿ‹g_Çme' => +Ãw + + `sfV®id©ÜSŒšg +( + `¬¿y +('max_length' => 255)), + +30 'com·ny_ÿ‹g_desütiÚ' => +Ãw + + `sfV®id©ÜPass +( + `¬¿y +('»quœed' => +çl£ +)), + +33 +$this +-> +widg‘Schema +-> + `£tNameFÜm© +('company_category_description[%s]'); + +35 +$this +-> +”rÜSchema + = +Ãw + + `sfV®id©ÜE¼ÜSchema +($this-> +v®id©ÜSchema +); + +37 +$this +-> + `£tupInh”™ªû +(); + +39 +·»Á +:: + `£tup +(); + +42 +public + +funùiÚ + + $g‘Mod–Name +() + +45 + } +} + + @lib/form/doctrine/base/BaseCompanyCategoryForm.class.php + +1 + `£tWidg‘s +( + `¬¿y +( + +18 'id' => +Ãw + + `sfWidg‘FÜmIÅutHidd’ +(), + +19 'com·ny_id' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('Com·ny'), 'add_em±y' => +çl£ +)), + +20 'g’”®_ÿ‹g_id' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('G’”®C©egÜy'), 'add_em±y' => +Œue +)), + +21 'ü—‹d_©' => +Ãw + + `sfWidg‘FÜmD©eTime +(), + +22 'upd©ed_©' => +Ãw + + `sfWidg‘FÜmD©eTime +(), + +23 'roÙ_id' => +Ãw + + `sfWidg‘FÜmIÅutText +(), + +24 'lá' => +Ãw + + `sfWidg‘FÜmIÅutText +(), + +25 'rgt' => +Ãw + + `sfWidg‘FÜmIÅutText +(), + +26 'Ëv–' => +Ãw + + `sfWidg‘FÜmIÅutText +(), + +29 +$this +-> + `£tV®id©Üs +( + `¬¿y +( + +30 'id' => +Ãw + + `sfV®id©ÜChoiû +( + `¬¿y +('choiûs' =>‡¼ay( +$this +-> + `g‘Objeù +()-> + `g‘ +('id')), 'em±y_v®ue' => $this->g‘Objeù()->g‘('id'), '»quœed' => +çl£ +)), + +31 'com·ny_id' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('Company'))), + +32 'g’”®_ÿ‹g_id' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('G’”®C©egÜy'), '»quœed' => +çl£ +)), + +33 'ü—‹d_©' => +Ãw + + `sfV®id©ÜD©eTime +(), + +34 'upd©ed_©' => +Ãw + + `sfV®id©ÜD©eTime +(), + +35 'roÙ_id' => +Ãw + + `sfV®id©ÜIÁeg” +( + `¬¿y +('»quœed' => +çl£ +)), + +36 'lá' => +Ãw + + `sfV®id©ÜIÁeg” +( + `¬¿y +('»quœed' => +çl£ +)), + +37 'rgt' => +Ãw + + `sfV®id©ÜIÁeg” +( + `¬¿y +('»quœed' => +çl£ +)), + +38 'Ëv–' => +Ãw + + `sfV®id©ÜIÁeg” +( + `¬¿y +('»quœed' => +çl£ +)), + +41 +$this +-> +widg‘Schema +-> + `£tNameFÜm© +('company_category[%s]'); + +43 +$this +-> +”rÜSchema + = +Ãw + + `sfV®id©ÜE¼ÜSchema +($this-> +v®id©ÜSchema +); + +45 +$this +-> + `£tupInh”™ªû +(); + +47 +·»Á +:: + `£tup +(); + +50 +public + +funùiÚ + + $g‘Mod–Name +() + +53 + } +} + + @lib/form/doctrine/base/BaseCompanyDescriptionForm.class.php + +1 + `£tWidg‘s +( + `¬¿y +( + +18 'id' => +Ãw + + `sfWidg‘FÜmIÅutHidd’ +(), + +19 'com·ny_id' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('Com·ny'), 'add_em±y' => +çl£ +)), + +20 'Ïnguage_id' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('Lªguage'), 'add_em±y' => +çl£ +)), + +21 'com·ny_Çme' => +Ãw + + `sfWidg‘FÜmIÅutText +(), + +24 +$this +-> + `£tV®id©Üs +( + `¬¿y +( + +25 'id' => +Ãw + + `sfV®id©ÜChoiû +( + `¬¿y +('choiûs' =>‡¼ay( +$this +-> + `g‘Objeù +()-> + `g‘ +('id')), 'em±y_v®ue' => $this->g‘Objeù()->g‘('id'), '»quœed' => +çl£ +)), + +26 'com·ny_id' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('Company'))), + +27 'Ïnguage_id' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('Language'))), + +28 'com·ny_Çme' => +Ãw + + `sfV®id©ÜSŒšg +( + `¬¿y +('max_length' => 255)), + +31 +$this +-> +widg‘Schema +-> + `£tNameFÜm© +('company_description[%s]'); + +33 +$this +-> +”rÜSchema + = +Ãw + + `sfV®id©ÜE¼ÜSchema +($this-> +v®id©ÜSchema +); + +35 +$this +-> + `£tupInh”™ªû +(); + +37 +·»Á +:: + `£tup +(); + +40 +public + +funùiÚ + + $g‘Mod–Name +() + +43 + } +} + + @lib/form/doctrine/base/BaseCompanyForm.class.php + +1 + `£tWidg‘s +( + `¬¿y +( + +18 'id' => +Ãw + + `sfWidg‘FÜmIÅutHidd’ +(), + +19 'u£r_id' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('U£r'), 'add_em±y' => +çl£ +)), + +20 'com·ny_cif' => +Ãw + + `sfWidg‘FÜmIÅutText +(), + +23 +$this +-> + `£tV®id©Üs +( + `¬¿y +( + +24 'id' => +Ãw + + `sfV®id©ÜChoiû +( + `¬¿y +('choiûs' =>‡¼ay( +$this +-> + `g‘Objeù +()-> + `g‘ +('id')), 'em±y_v®ue' => $this->g‘Objeù()->g‘('id'), '»quœed' => +çl£ +)), + +25 'u£r_id' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('User'))), + +26 'com·ny_cif' => +Ãw + + `sfV®id©ÜSŒšg +( + `¬¿y +('max_length' => 255)), + +29 +$this +-> +v®id©ÜSchema +-> + `£tPo¡V®id©Ü +( + +30 +Ãw + + `sfV®id©ÜDoùršeUnique +( + `¬¿y +('model' => 'Company', 'column' =>‡rray('company_cif'))) + +33 +$this +-> +widg‘Schema +-> + `£tNameFÜm© +('company[%s]'); + +35 +$this +-> +”rÜSchema + = +Ãw + + `sfV®id©ÜE¼ÜSchema +($this-> +v®id©ÜSchema +); + +37 +$this +-> + `£tupInh”™ªû +(); + +39 +·»Á +:: + `£tup +(); + +42 +public + +funùiÚ + + $g‘Mod–Name +() + +45 + } +} + + @lib/form/doctrine/base/BaseCountryForm.class.php + +1 + `£tWidg‘s +( + `¬¿y +( + +18 'id' => +Ãw + + `sfWidg‘FÜmIÅutHidd’ +(), + +19 'couÁry_Çme' => +Ãw + + `sfWidg‘FÜmIÅutText +(), + +20 'iso_code_2' => +Ãw + + `sfWidg‘FÜmIÅutText +(), + +21 'iso_code_3' => +Ãw + + `sfWidg‘FÜmIÅutText +(), + +24 +$this +-> + `£tV®id©Üs +( + `¬¿y +( + +25 'id' => +Ãw + + `sfV®id©ÜChoiû +( + `¬¿y +('choiûs' =>‡¼ay( +$this +-> + `g‘Objeù +()-> + `g‘ +('id')), 'em±y_v®ue' => $this->g‘Objeù()->g‘('id'), '»quœed' => +çl£ +)), + +26 'couÁry_Çme' => +Ãw + + `sfV®id©ÜSŒšg +( + `¬¿y +('max_length' => 80)), + +27 'iso_code_2' => +Ãw + + `sfV®id©ÜSŒšg +( + `¬¿y +('max_length' => 2)), + +28 'iso_code_3' => +Ãw + + `sfV®id©ÜSŒšg +( + `¬¿y +('max_length' => 3)), + +31 +$this +-> +widg‘Schema +-> + `£tNameFÜm© +('country[%s]'); + +33 +$this +-> +”rÜSchema + = +Ãw + + `sfV®id©ÜE¼ÜSchema +($this-> +v®id©ÜSchema +); + +35 +$this +-> + `£tupInh”™ªû +(); + +37 +·»Á +:: + `£tup +(); + +40 +public + +funùiÚ + + $g‘Mod–Name +() + +43 + } +} + + @lib/form/doctrine/base/BaseGeneralCategoryDescriptionForm.class.php + +1 + `£tWidg‘s +( + `¬¿y +( + +18 'id' => +Ãw + + `sfWidg‘FÜmIÅutHidd’ +(), + +19 'Ïnguage_id' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('Lªguage'), 'add_em±y' => +çl£ +)), + +20 'g’”®_ÿ‹g_id' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('G’”®C©egÜy'), 'add_em±y' => +çl£ +)), + +21 'g’”®_ÿ‹g_Çme' => +Ãw + + `sfWidg‘FÜmIÅutText +(), + +22 'g’”®_ÿ‹g_desütiÚ' => +Ãw + + `sfWidg‘FÜmIÅutText +(), + +25 +$this +-> + `£tV®id©Üs +( + `¬¿y +( + +26 'id' => +Ãw + + `sfV®id©ÜChoiû +( + `¬¿y +('choiûs' =>‡¼ay( +$this +-> + `g‘Objeù +()-> + `g‘ +('id')), 'em±y_v®ue' => $this->g‘Objeù()->g‘('id'), '»quœed' => +çl£ +)), + +27 'Ïnguage_id' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('Language'))), + +28 'g’”®_ÿ‹g_id' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('GeneralCategory'))), + +29 'g’”®_ÿ‹g_Çme' => +Ãw + + `sfV®id©ÜSŒšg +( + `¬¿y +('max_length' => 255)), + +30 'g’”®_ÿ‹g_desütiÚ' => +Ãw + + `sfV®id©ÜPass +( + `¬¿y +('»quœed' => +çl£ +)), + +33 +$this +-> +v®id©ÜSchema +-> + `£tPo¡V®id©Ü +( + +34 +Ãw + + `sfV®id©ÜDoùršeUnique +( + `¬¿y +('model' => 'GeneralCategoryDescription', 'column' =>‡rray('general_categ_name'))) + +37 +$this +-> +widg‘Schema +-> + `£tNameFÜm© +('general_category_description[%s]'); + +39 +$this +-> +”rÜSchema + = +Ãw + + `sfV®id©ÜE¼ÜSchema +($this-> +v®id©ÜSchema +); + +41 +$this +-> + `£tupInh”™ªû +(); + +43 +·»Á +:: + `£tup +(); + +46 +public + +funùiÚ + + $g‘Mod–Name +() + +49 + } +} + + @lib/form/doctrine/base/BaseGeneralCategoryForm.class.php + +1 + `£tWidg‘s +( + `¬¿y +( + +18 'id' => +Ãw + + `sfWidg‘FÜmIÅutHidd’ +(), + +19 'ü—‹d_©' => +Ãw + + `sfWidg‘FÜmD©eTime +(), + +20 'upd©ed_©' => +Ãw + + `sfWidg‘FÜmD©eTime +(), + +21 'roÙ_id' => +Ãw + + `sfWidg‘FÜmIÅutText +(), + +22 'lá' => +Ãw + + `sfWidg‘FÜmIÅutText +(), + +23 'rgt' => +Ãw + + `sfWidg‘FÜmIÅutText +(), + +24 'Ëv–' => +Ãw + + `sfWidg‘FÜmIÅutText +(), + +27 +$this +-> + `£tV®id©Üs +( + `¬¿y +( + +28 'id' => +Ãw + + `sfV®id©ÜChoiû +( + `¬¿y +('choiûs' =>‡¼ay( +$this +-> + `g‘Objeù +()-> + `g‘ +('id')), 'em±y_v®ue' => $this->g‘Objeù()->g‘('id'), '»quœed' => +çl£ +)), + +29 'ü—‹d_©' => +Ãw + + `sfV®id©ÜD©eTime +(), + +30 'upd©ed_©' => +Ãw + + `sfV®id©ÜD©eTime +(), + +31 'roÙ_id' => +Ãw + + `sfV®id©ÜIÁeg” +( + `¬¿y +('»quœed' => +çl£ +)), + +32 'lá' => +Ãw + + `sfV®id©ÜIÁeg” +( + `¬¿y +('»quœed' => +çl£ +)), + +33 'rgt' => +Ãw + + `sfV®id©ÜIÁeg” +( + `¬¿y +('»quœed' => +çl£ +)), + +34 'Ëv–' => +Ãw + + `sfV®id©ÜIÁeg” +( + `¬¿y +('»quœed' => +çl£ +)), + +37 +$this +-> +widg‘Schema +-> + `£tNameFÜm© +('general_category[%s]'); + +39 +$this +-> +”rÜSchema + = +Ãw + + `sfV®id©ÜE¼ÜSchema +($this-> +v®id©ÜSchema +); + +41 +$this +-> + `£tupInh”™ªû +(); + +43 +·»Á +:: + `£tup +(); + +46 +public + +funùiÚ + + $g‘Mod–Name +() + +49 + } +} + + @lib/form/doctrine/base/BaseLanguageForm.class.php + +1 + `£tWidg‘s +( + `¬¿y +( + +18 'id' => +Ãw + + `sfWidg‘FÜmIÅutHidd’ +(), + +19 'Ïnguage_Çme' => +Ãw + + `sfWidg‘FÜmIÅutText +(), + +20 'code' => +Ãw + + `sfWidg‘FÜmIÅutText +(), + +23 +$this +-> + `£tV®id©Üs +( + `¬¿y +( + +24 'id' => +Ãw + + `sfV®id©ÜChoiû +( + `¬¿y +('choiûs' =>‡¼ay( +$this +-> + `g‘Objeù +()-> + `g‘ +('id')), 'em±y_v®ue' => $this->g‘Objeù()->g‘('id'), '»quœed' => +çl£ +)), + +25 'Ïnguage_Çme' => +Ãw + + `sfV®id©ÜSŒšg +( + `¬¿y +('max_length' => 255)), + +26 'code' => +Ãw + + `sfV®id©ÜSŒšg +( + `¬¿y +('max_length' => 3)), + +29 +$this +-> +v®id©ÜSchema +-> + `£tPo¡V®id©Ü +( + +30 +Ãw + + `sfV®id©ÜAnd +( + `¬¿y +( + +31 +Ãw + + `sfV®id©ÜDoùršeUnique +( + `¬¿y +('model' => 'Language', 'column' =>‡rray('language_name'))), + +32 +Ãw + + `sfV®id©ÜDoùršeUnique +( + `¬¿y +('model' => 'Language', 'column' =>‡rray('code'))), + +36 +$this +-> +widg‘Schema +-> + `£tNameFÜm© +('language[%s]'); + +38 +$this +-> +”rÜSchema + = +Ãw + + `sfV®id©ÜE¼ÜSchema +($this-> +v®id©ÜSchema +); + +40 +$this +-> + `£tupInh”™ªû +(); + +42 +·»Á +:: + `£tup +(); + +45 +public + +funùiÚ + + $g‘Mod–Name +() + +48 + } +} + + @lib/form/doctrine/base/BaseOfficeAdsForm.class.php + +1 + `£tWidg‘s +( + `¬¿y +( + +18 'id' => +Ãw + + `sfWidg‘FÜmIÅutHidd’ +(), + +19 'offiû_id' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('Offiû'), 'add_em±y' => +çl£ +)), + +20 'ad_id' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('Ad'), 'add_em±y' => +çl£ +)), + +23 +$this +-> + `£tV®id©Üs +( + `¬¿y +( + +24 'id' => +Ãw + + `sfV®id©ÜChoiû +( + `¬¿y +('choiûs' =>‡¼ay( +$this +-> + `g‘Objeù +()-> + `g‘ +('id')), 'em±y_v®ue' => $this->g‘Objeù()->g‘('id'), '»quœed' => +çl£ +)), + +25 'offiû_id' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('Office'))), + +26 'ad_id' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('Ad'))), + +29 +$this +-> +widg‘Schema +-> + `£tNameFÜm© +('office_ads[%s]'); + +31 +$this +-> +”rÜSchema + = +Ãw + + `sfV®id©ÜE¼ÜSchema +($this-> +v®id©ÜSchema +); + +33 +$this +-> + `£tupInh”™ªû +(); + +35 +·»Á +:: + `£tup +(); + +38 +public + +funùiÚ + + $g‘Mod–Name +() + +41 + } +} + + @lib/form/doctrine/base/BaseOfficeForm.class.php + +1 + `£tWidg‘s +( + `¬¿y +( + +18 'id' => +Ãw + + `sfWidg‘FÜmIÅutHidd’ +(), + +19 'com·ny_id' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('Com·ny'), 'add_em±y' => +çl£ +)), + +20 'c™y_id' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('C™y'), 'add_em±y' => +Œue +)), + +21 'offiû_gps' => +Ãw + + `sfWidg‘FÜmTex»a +(), + +22 'offiû_¡»‘_add»ss' => +Ãw + + `sfWidg‘FÜmIÅutText +(), + +23 'offiû_z' => +Ãw + + `sfWidg‘FÜmIÅutText +(), + +24 'ü—‹d_©' => +Ãw + + `sfWidg‘FÜmD©eTime +(), + +25 'upd©ed_©' => +Ãw + + `sfWidg‘FÜmD©eTime +(), + +28 +$this +-> + `£tV®id©Üs +( + `¬¿y +( + +29 'id' => +Ãw + + `sfV®id©ÜChoiû +( + `¬¿y +('choiûs' =>‡¼ay( +$this +-> + `g‘Objeù +()-> + `g‘ +('id')), 'em±y_v®ue' => $this->g‘Objeù()->g‘('id'), '»quœed' => +çl£ +)), + +30 'com·ny_id' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('Company'))), + +31 'c™y_id' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('C™y'), '»quœed' => +çl£ +)), + +32 'offiû_gps' => +Ãw + + `sfV®id©ÜSŒšg +( + `¬¿y +('»quœed' => +çl£ +)), + +33 'offiû_¡»‘_add»ss' => +Ãw + + `sfV®id©ÜSŒšg +( + `¬¿y +('max_length' => 255)), + +34 'offiû_z' => +Ãw + + `sfV®id©ÜSŒšg +( + `¬¿y +('max_length' => 32)), + +35 'ü—‹d_©' => +Ãw + + `sfV®id©ÜD©eTime +(), + +36 'upd©ed_©' => +Ãw + + `sfV®id©ÜD©eTime +(), + +39 +$this +-> +widg‘Schema +-> + `£tNameFÜm© +('office[%s]'); + +41 +$this +-> +”rÜSchema + = +Ãw + + `sfV®id©ÜE¼ÜSchema +($this-> +v®id©ÜSchema +); + +43 +$this +-> + `£tupInh”™ªû +(); + +45 +·»Á +:: + `£tup +(); + +48 +public + +funùiÚ + + $g‘Mod–Name +() + +51 + } +} + + @lib/form/doctrine/base/BaseRegionForm.class.php + +1 + `£tWidg‘s +( + `¬¿y +( + +18 'id' => +Ãw + + `sfWidg‘FÜmIÅutHidd’ +(), + +19 'couÁry_id' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('CouÁry'), 'add_em±y' => +çl£ +)), + +20 '»giÚ_Çme' => +Ãw + + `sfWidg‘FÜmIÅutText +(), + +23 +$this +-> + `£tV®id©Üs +( + `¬¿y +( + +24 'id' => +Ãw + + `sfV®id©ÜChoiû +( + `¬¿y +('choiûs' =>‡¼ay( +$this +-> + `g‘Objeù +()-> + `g‘ +('id')), 'em±y_v®ue' => $this->g‘Objeù()->g‘('id'), '»quœed' => +çl£ +)), + +25 'couÁry_id' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('Country'))), + +26 '»giÚ_Çme' => +Ãw + + `sfV®id©ÜSŒšg +( + `¬¿y +('max_length' => 64)), + +29 +$this +-> +widg‘Schema +-> + `£tNameFÜm© +('region[%s]'); + +31 +$this +-> +”rÜSchema + = +Ãw + + `sfV®id©ÜE¼ÜSchema +($this-> +v®id©ÜSchema +); + +33 +$this +-> + `£tupInh”™ªû +(); + +35 +·»Á +:: + `£tup +(); + +38 +public + +funùiÚ + + $g‘Mod–Name +() + +41 + } +} + + @lib/form/doctrine/base/BaseUserBasketForm.class.php + +1 + `£tWidg‘s +( + `¬¿y +( + +18 'id' => +Ãw + + `sfWidg‘FÜmIÅutHidd’ +(), + +19 'u£r_id' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('U£r'), 'add_em±y' => +çl£ +)), + +20 'g’”®_ÿ‹g_id' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('G’”®C©egÜy'), 'add_em±y' => +çl£ +)), + +23 +$this +-> + `£tV®id©Üs +( + `¬¿y +( + +24 'id' => +Ãw + + `sfV®id©ÜChoiû +( + `¬¿y +('choiûs' =>‡¼ay( +$this +-> + `g‘Objeù +()-> + `g‘ +('id')), 'em±y_v®ue' => $this->g‘Objeù()->g‘('id'), '»quœed' => +çl£ +)), + +25 'u£r_id' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('User'))), + +26 'g’”®_ÿ‹g_id' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('mod–' => +$this +-> + `g‘R–©edMod–Name +('GeneralCategory'))), + +29 +$this +-> +widg‘Schema +-> + `£tNameFÜm© +('user_basket[%s]'); + +31 +$this +-> +”rÜSchema + = +Ãw + + `sfV®id©ÜE¼ÜSchema +($this-> +v®id©ÜSchema +); + +33 +$this +-> + `£tupInh”™ªû +(); + +35 +·»Á +:: + `£tup +(); + +38 +public + +funùiÚ + + $g‘Mod–Name +() + +41 + } +} + + @lib/form/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardGroupForm.class.php + +1 + `£tWidg‘s +( + `¬¿y +( + +18 'id' => +Ãw + + `sfWidg‘FÜmIÅutHidd’ +(), + +19 'Çme' => +Ãw + + `sfWidg‘FÜmIÅutText +(), + +20 'desütiÚ' => +Ãw + + `sfWidg‘FÜmTex»a +(), + +21 'ü—‹d_©' => +Ãw + + `sfWidg‘FÜmD©eTime +(), + +22 'upd©ed_©' => +Ãw + + `sfWidg‘FÜmD©eTime +(), + +23 'u£rs_li¡' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('muɝË' => +Œue +, 'model' => 'sfGuardUser')), + +24 '³rmissiÚs_li¡' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('muɝË' => +Œue +, 'model' => 'sfGuardPermission')), + +27 +$this +-> + `£tV®id©Üs +( + `¬¿y +( + +28 'id' => +Ãw + + `sfV®id©ÜChoiû +( + `¬¿y +('choiûs' =>‡¼ay( +$this +-> + `g‘Objeù +()-> + `g‘ +('id')), 'em±y_v®ue' => $this->g‘Objeù()->g‘('id'), '»quœed' => +çl£ +)), + +29 'Çme' => +Ãw + + `sfV®id©ÜSŒšg +( + `¬¿y +('max_Ëngth' => 255, '»quœed' => +çl£ +)), + +30 'desütiÚ' => +Ãw + + `sfV®id©ÜSŒšg +( + `¬¿y +('max_Ëngth' => 1000, '»quœed' => +çl£ +)), + +31 'ü—‹d_©' => +Ãw + + `sfV®id©ÜD©eTime +(), + +32 'upd©ed_©' => +Ãw + + `sfV®id©ÜD©eTime +(), + +33 'u£rs_li¡' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('muɝË' => +Œue +, 'mod–' => 'sfGu¬dU£r', '»quœed' => +çl£ +)), + +34 '³rmissiÚs_li¡' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('muɝË' => +Œue +, 'mod–' => 'sfGu¬dP”missiÚ', '»quœed' => +çl£ +)), + +37 +$this +-> +v®id©ÜSchema +-> + `£tPo¡V®id©Ü +( + +38 +Ãw + + `sfV®id©ÜDoùršeUnique +( + `¬¿y +('model' => 'sfGuardGroup', 'column' =>‡rray('name'))) + +41 +$this +-> +widg‘Schema +-> + `£tNameFÜm© +('sf_guard_group[%s]'); + +43 +$this +-> +”rÜSchema + = +Ãw + + `sfV®id©ÜE¼ÜSchema +($this-> +v®id©ÜSchema +); + +45 +$this +-> + `£tupInh”™ªû +(); + +47 +·»Á +:: + `£tup +(); + +50 +public + +funùiÚ + + $g‘Mod–Name +() + +53 + } +} + +55 +public + +funùiÚ + + $upd©eDeçuÉsFromObjeù +() + +57 +·»Á +:: + `upd©eDeçuÉsFromObjeù +(); + +59 ià( + `is£t +( +$this +-> +widg‘Schema +['users_list'])) + +61 +$this +-> + `£tDeçuÉ +('u£rs_li¡', $this-> +objeù +-> +U£rs +-> + `g‘Prim¬yKeys +()); + +64 ià( + `is£t +( +$this +-> +widg‘Schema +['permissions_list'])) + +66 +$this +-> + `£tDeçuÉ +('³rmissiÚs_li¡', $this-> +objeù +-> +P”missiÚs +-> + `g‘Prim¬yKeys +()); + +69 + } +} + +71 +´Ùeùed + +funùiÚ + + $doSave +( +$cÚ + = +nuÎ +) + +73 +$this +-> + `§veU£rsLi¡ +( +$cÚ +); + +74 +$this +-> + `§veP”missiÚsLi¡ +( +$cÚ +); + +76 +·»Á +:: + `doSave +( +$cÚ +); + +77 + } +} + +79 +public + +funùiÚ + + $§veU£rsLi¡ +( +$cÚ + = +nuÎ +) + +81 ià(! +$this +-> + `isV®id +()) + +83 +throw + +$this +-> + `g‘E¼ÜSchema +(); + +86 ià(! + `is£t +( +$this +-> +widg‘Schema +['users_list'])) + +92 ià( +nuÎ + ==ð +$cÚ +) + +94 +$cÚ + = +$this +-> + `g‘CÚÃùiÚ +(); + +97 +$exi¡šg + = +$this +-> +objeù +-> +U£rs +-> + `g‘Prim¬yKeys +(); + +98 +$v®ues + = +$this +-> + `g‘V®ue +('users_list'); + +99 ià(! + `is_¬¿y +( +$v®ues +)) + +101 +$v®ues + = + `¬¿y +(); + +104 +$uƚk + = + `¬¿y_diff +( +$exi¡šg +, +$v®ues +); + +105 ià( + `couÁ +( +$uƚk +)) + +107 +$this +-> +objeù +-> + `uƚk +('U£rs', + `¬¿y_v®ues +( +$uƚk +)); + +110 +$lšk + = + `¬¿y_diff +( +$v®ues +, +$exi¡šg +); + +111 ià( + `couÁ +( +$lšk +)) + +113 +$this +-> +objeù +-> + `lšk +('U£rs', + `¬¿y_v®ues +( +$lšk +)); + +115 + } +} + +117 +public + +funùiÚ + + $§veP”missiÚsLi¡ +( +$cÚ + = +nuÎ +) + +119 ià(! +$this +-> + `isV®id +()) + +121 +throw + +$this +-> + `g‘E¼ÜSchema +(); + +124 ià(! + `is£t +( +$this +-> +widg‘Schema +['permissions_list'])) + +130 ià( +nuÎ + ==ð +$cÚ +) + +132 +$cÚ + = +$this +-> + `g‘CÚÃùiÚ +(); + +135 +$exi¡šg + = +$this +-> +objeù +-> +P”missiÚs +-> + `g‘Prim¬yKeys +(); + +136 +$v®ues + = +$this +-> + `g‘V®ue +('permissions_list'); + +137 ià(! + `is_¬¿y +( +$v®ues +)) + +139 +$v®ues + = + `¬¿y +(); + +142 +$uƚk + = + `¬¿y_diff +( +$exi¡šg +, +$v®ues +); + +143 ià( + `couÁ +( +$uƚk +)) + +145 +$this +-> +objeù +-> + `uƚk +('P”missiÚs', + `¬¿y_v®ues +( +$uƚk +)); + +148 +$lšk + = + `¬¿y_diff +( +$v®ues +, +$exi¡šg +); + +149 ià( + `couÁ +( +$lšk +)) + +151 +$this +-> +objeù +-> + `lšk +('P”missiÚs', + `¬¿y_v®ues +( +$lšk +)); + +153 + } +} + + @lib/form/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardPermissionForm.class.php + +1 + `£tWidg‘s +( + `¬¿y +( + +18 'id' => +Ãw + + `sfWidg‘FÜmIÅutHidd’ +(), + +19 'Çme' => +Ãw + + `sfWidg‘FÜmIÅutText +(), + +20 'desütiÚ' => +Ãw + + `sfWidg‘FÜmTex»a +(), + +21 'ü—‹d_©' => +Ãw + + `sfWidg‘FÜmD©eTime +(), + +22 'upd©ed_©' => +Ãw + + `sfWidg‘FÜmD©eTime +(), + +23 'groups_li¡' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('muɝË' => +Œue +, 'model' => 'sfGuardGroup')), + +24 'u£rs_li¡' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('muɝË' => +Œue +, 'model' => 'sfGuardUser')), + +27 +$this +-> + `£tV®id©Üs +( + `¬¿y +( + +28 'id' => +Ãw + + `sfV®id©ÜChoiû +( + `¬¿y +('choiûs' =>‡¼ay( +$this +-> + `g‘Objeù +()-> + `g‘ +('id')), 'em±y_v®ue' => $this->g‘Objeù()->g‘('id'), '»quœed' => +çl£ +)), + +29 'Çme' => +Ãw + + `sfV®id©ÜSŒšg +( + `¬¿y +('max_Ëngth' => 255, '»quœed' => +çl£ +)), + +30 'desütiÚ' => +Ãw + + `sfV®id©ÜSŒšg +( + `¬¿y +('max_Ëngth' => 1000, '»quœed' => +çl£ +)), + +31 'ü—‹d_©' => +Ãw + + `sfV®id©ÜD©eTime +(), + +32 'upd©ed_©' => +Ãw + + `sfV®id©ÜD©eTime +(), + +33 'groups_li¡' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('muɝË' => +Œue +, 'mod–' => 'sfGu¬dGroup', '»quœed' => +çl£ +)), + +34 'u£rs_li¡' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('muɝË' => +Œue +, 'mod–' => 'sfGu¬dU£r', '»quœed' => +çl£ +)), + +37 +$this +-> +v®id©ÜSchema +-> + `£tPo¡V®id©Ü +( + +38 +Ãw + + `sfV®id©ÜDoùršeUnique +( + `¬¿y +('model' => 'sfGuardPermission', 'column' =>‡rray('name'))) + +41 +$this +-> +widg‘Schema +-> + `£tNameFÜm© +('sf_guard_permission[%s]'); + +43 +$this +-> +”rÜSchema + = +Ãw + + `sfV®id©ÜE¼ÜSchema +($this-> +v®id©ÜSchema +); + +45 +$this +-> + `£tupInh”™ªû +(); + +47 +·»Á +:: + `£tup +(); + +50 +public + +funùiÚ + + $g‘Mod–Name +() + +53 + } +} + +55 +public + +funùiÚ + + $upd©eDeçuÉsFromObjeù +() + +57 +·»Á +:: + `upd©eDeçuÉsFromObjeù +(); + +59 ià( + `is£t +( +$this +-> +widg‘Schema +['groups_list'])) + +61 +$this +-> + `£tDeçuÉ +('groups_li¡', $this-> +objeù +-> +Groups +-> + `g‘Prim¬yKeys +()); + +64 ià( + `is£t +( +$this +-> +widg‘Schema +['users_list'])) + +66 +$this +-> + `£tDeçuÉ +('u£rs_li¡', $this-> +objeù +-> +U£rs +-> + `g‘Prim¬yKeys +()); + +69 + } +} + +71 +´Ùeùed + +funùiÚ + + $doSave +( +$cÚ + = +nuÎ +) + +73 +$this +-> + `§veGroupsLi¡ +( +$cÚ +); + +74 +$this +-> + `§veU£rsLi¡ +( +$cÚ +); + +76 +·»Á +:: + `doSave +( +$cÚ +); + +77 + } +} + +79 +public + +funùiÚ + + $§veGroupsLi¡ +( +$cÚ + = +nuÎ +) + +81 ià(! +$this +-> + `isV®id +()) + +83 +throw + +$this +-> + `g‘E¼ÜSchema +(); + +86 ià(! + `is£t +( +$this +-> +widg‘Schema +['groups_list'])) + +92 ià( +nuÎ + ==ð +$cÚ +) + +94 +$cÚ + = +$this +-> + `g‘CÚÃùiÚ +(); + +97 +$exi¡šg + = +$this +-> +objeù +-> +Groups +-> + `g‘Prim¬yKeys +(); + +98 +$v®ues + = +$this +-> + `g‘V®ue +('groups_list'); + +99 ià(! + `is_¬¿y +( +$v®ues +)) + +101 +$v®ues + = + `¬¿y +(); + +104 +$uƚk + = + `¬¿y_diff +( +$exi¡šg +, +$v®ues +); + +105 ià( + `couÁ +( +$uƚk +)) + +107 +$this +-> +objeù +-> + `uƚk +('Groups', + `¬¿y_v®ues +( +$uƚk +)); + +110 +$lšk + = + `¬¿y_diff +( +$v®ues +, +$exi¡šg +); + +111 ià( + `couÁ +( +$lšk +)) + +113 +$this +-> +objeù +-> + `lšk +('Groups', + `¬¿y_v®ues +( +$lšk +)); + +115 + } +} + +117 +public + +funùiÚ + + $§veU£rsLi¡ +( +$cÚ + = +nuÎ +) + +119 ià(! +$this +-> + `isV®id +()) + +121 +throw + +$this +-> + `g‘E¼ÜSchema +(); + +124 ià(! + `is£t +( +$this +-> +widg‘Schema +['users_list'])) + +130 ià( +nuÎ + ==ð +$cÚ +) + +132 +$cÚ + = +$this +-> + `g‘CÚÃùiÚ +(); + +135 +$exi¡šg + = +$this +-> +objeù +-> +U£rs +-> + `g‘Prim¬yKeys +(); + +136 +$v®ues + = +$this +-> + `g‘V®ue +('users_list'); + +137 ià(! + `is_¬¿y +( +$v®ues +)) + +139 +$v®ues + = + `¬¿y +(); + +142 +$uƚk + = + `¬¿y_diff +( +$exi¡šg +, +$v®ues +); + +143 ià( + `couÁ +( +$uƚk +)) + +145 +$this +-> +objeù +-> + `uƚk +('U£rs', + `¬¿y_v®ues +( +$uƚk +)); + +148 +$lšk + = + `¬¿y_diff +( +$v®ues +, +$exi¡šg +); + +149 ià( + `couÁ +( +$lšk +)) + +151 +$this +-> +objeù +-> + `lšk +('U£rs', + `¬¿y_v®ues +( +$lšk +)); + +153 + } +} + + @lib/form/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardUserForm.class.php + +1 + `£tWidg‘s +( + `¬¿y +( + +18 'id' => +Ãw + + `sfWidg‘FÜmIÅutHidd’ +(), + +19 'fœ¡_Çme' => +Ãw + + `sfWidg‘FÜmIÅutText +(), + +20 'Ï¡_Çme' => +Ãw + + `sfWidg‘FÜmIÅutText +(), + +21 'emaž_add»ss' => +Ãw + + `sfWidg‘FÜmIÅutText +(), + +22 'u£ºame' => +Ãw + + `sfWidg‘FÜmIÅutText +(), + +23 '®gܙhm' => +Ãw + + `sfWidg‘FÜmIÅutText +(), + +24 '§É' => +Ãw + + `sfWidg‘FÜmIÅutText +(), + +25 '·sswÜd' => +Ãw + + `sfWidg‘FÜmIÅutText +(), + +26 'is_aùive' => +Ãw + + `sfWidg‘FÜmIÅutCheckbox +(), + +27 'is_su³r_admš' => +Ãw + + `sfWidg‘FÜmIÅutCheckbox +(), + +28 'Ï¡_logš' => +Ãw + + `sfWidg‘FÜmD©eTime +(), + +29 'ü—‹d_©' => +Ãw + + `sfWidg‘FÜmD©eTime +(), + +30 'upd©ed_©' => +Ãw + + `sfWidg‘FÜmD©eTime +(), + +31 'groups_li¡' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('muɝË' => +Œue +, 'model' => 'sfGuardGroup')), + +32 '³rmissiÚs_li¡' => +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('muɝË' => +Œue +, 'model' => 'sfGuardPermission')), + +35 +$this +-> + `£tV®id©Üs +( + `¬¿y +( + +36 'id' => +Ãw + + `sfV®id©ÜChoiû +( + `¬¿y +('choiûs' =>‡¼ay( +$this +-> + `g‘Objeù +()-> + `g‘ +('id')), 'em±y_v®ue' => $this->g‘Objeù()->g‘('id'), '»quœed' => +çl£ +)), + +37 'fœ¡_Çme' => +Ãw + + `sfV®id©ÜSŒšg +( + `¬¿y +('max_Ëngth' => 255, '»quœed' => +çl£ +)), + +38 'Ï¡_Çme' => +Ãw + + `sfV®id©ÜSŒšg +( + `¬¿y +('max_Ëngth' => 255, '»quœed' => +çl£ +)), + +39 'emaž_add»ss' => +Ãw + + `sfV®id©ÜSŒšg +( + `¬¿y +('max_length' => 255)), + +40 'u£ºame' => +Ãw + + `sfV®id©ÜSŒšg +( + `¬¿y +('max_length' => 128)), + +41 '®gܙhm' => +Ãw + + `sfV®id©ÜSŒšg +( + `¬¿y +('max_Ëngth' => 128, '»quœed' => +çl£ +)), + +42 '§É' => +Ãw + + `sfV®id©ÜSŒšg +( + `¬¿y +('max_Ëngth' => 128, '»quœed' => +çl£ +)), + +43 '·sswÜd' => +Ãw + + `sfV®id©ÜSŒšg +( + `¬¿y +('max_Ëngth' => 128, '»quœed' => +çl£ +)), + +44 'is_aùive' => +Ãw + + `sfV®id©ÜBoޗn +( + `¬¿y +('»quœed' => +çl£ +)), + +45 'is_su³r_admš' => +Ãw + + `sfV®id©ÜBoޗn +( + `¬¿y +('»quœed' => +çl£ +)), + +46 'Ï¡_logš' => +Ãw + + `sfV®id©ÜD©eTime +( + `¬¿y +('»quœed' => +çl£ +)), + +47 'ü—‹d_©' => +Ãw + + `sfV®id©ÜD©eTime +(), + +48 'upd©ed_©' => +Ãw + + `sfV®id©ÜD©eTime +(), + +49 'groups_li¡' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('muɝË' => +Œue +, 'mod–' => 'sfGu¬dGroup', '»quœed' => +çl£ +)), + +50 '³rmissiÚs_li¡' => +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('muɝË' => +Œue +, 'mod–' => 'sfGu¬dP”missiÚ', '»quœed' => +çl£ +)), + +53 +$this +-> +v®id©ÜSchema +-> + `£tPo¡V®id©Ü +( + +54 +Ãw + + `sfV®id©ÜAnd +( + `¬¿y +( + +55 +Ãw + + `sfV®id©ÜDoùršeUnique +( + `¬¿y +('model' => 'sfGuardUser', 'column' =>‡rray('email_address'))), + +56 +Ãw + + `sfV®id©ÜDoùršeUnique +( + `¬¿y +('model' => 'sfGuardUser', 'column' =>‡rray('username'))), + +60 +$this +-> +widg‘Schema +-> + `£tNameFÜm© +('sf_guard_user[%s]'); + +62 +$this +-> +”rÜSchema + = +Ãw + + `sfV®id©ÜE¼ÜSchema +($this-> +v®id©ÜSchema +); + +64 +$this +-> + `£tupInh”™ªû +(); + +66 +·»Á +:: + `£tup +(); + +69 +public + +funùiÚ + + $g‘Mod–Name +() + +72 + } +} + +74 +public + +funùiÚ + + $upd©eDeçuÉsFromObjeù +() + +76 +·»Á +:: + `upd©eDeçuÉsFromObjeù +(); + +78 ià( + `is£t +( +$this +-> +widg‘Schema +['groups_list'])) + +80 +$this +-> + `£tDeçuÉ +('groups_li¡', $this-> +objeù +-> +Groups +-> + `g‘Prim¬yKeys +()); + +83 ià( + `is£t +( +$this +-> +widg‘Schema +['permissions_list'])) + +85 +$this +-> + `£tDeçuÉ +('³rmissiÚs_li¡', $this-> +objeù +-> +P”missiÚs +-> + `g‘Prim¬yKeys +()); + +88 + } +} + +90 +´Ùeùed + +funùiÚ + + $doSave +( +$cÚ + = +nuÎ +) + +92 +$this +-> + `§veGroupsLi¡ +( +$cÚ +); + +93 +$this +-> + `§veP”missiÚsLi¡ +( +$cÚ +); + +95 +·»Á +:: + `doSave +( +$cÚ +); + +96 + } +} + +98 +public + +funùiÚ + + $§veGroupsLi¡ +( +$cÚ + = +nuÎ +) + +100 ià(! +$this +-> + `isV®id +()) + +102 +throw + +$this +-> + `g‘E¼ÜSchema +(); + +105 ià(! + `is£t +( +$this +-> +widg‘Schema +['groups_list'])) + +111 ià( +nuÎ + ==ð +$cÚ +) + +113 +$cÚ + = +$this +-> + `g‘CÚÃùiÚ +(); + +116 +$exi¡šg + = +$this +-> +objeù +-> +Groups +-> + `g‘Prim¬yKeys +(); + +117 +$v®ues + = +$this +-> + `g‘V®ue +('groups_list'); + +118 ià(! + `is_¬¿y +( +$v®ues +)) + +120 +$v®ues + = + `¬¿y +(); + +123 +$uƚk + = + `¬¿y_diff +( +$exi¡šg +, +$v®ues +); + +124 ià( + `couÁ +( +$uƚk +)) + +126 +$this +-> +objeù +-> + `uƚk +('Groups', + `¬¿y_v®ues +( +$uƚk +)); + +129 +$lšk + = + `¬¿y_diff +( +$v®ues +, +$exi¡šg +); + +130 ià( + `couÁ +( +$lšk +)) + +132 +$this +-> +objeù +-> + `lšk +('Groups', + `¬¿y_v®ues +( +$lšk +)); + +134 + } +} + +136 +public + +funùiÚ + + $§veP”missiÚsLi¡ +( +$cÚ + = +nuÎ +) + +138 ià(! +$this +-> + `isV®id +()) + +140 +throw + +$this +-> + `g‘E¼ÜSchema +(); + +143 ià(! + `is£t +( +$this +-> +widg‘Schema +['permissions_list'])) + +149 ià( +nuÎ + ==ð +$cÚ +) + +151 +$cÚ + = +$this +-> + `g‘CÚÃùiÚ +(); + +154 +$exi¡šg + = +$this +-> +objeù +-> +P”missiÚs +-> + `g‘Prim¬yKeys +(); + +155 +$v®ues + = +$this +-> + `g‘V®ue +('permissions_list'); + +156 ià(! + `is_¬¿y +( +$v®ues +)) + +158 +$v®ues + = + `¬¿y +(); + +161 +$uƚk + = + `¬¿y_diff +( +$exi¡šg +, +$v®ues +); + +162 ià( + `couÁ +( +$uƚk +)) + +164 +$this +-> +objeù +-> + `uƚk +('P”missiÚs', + `¬¿y_v®ues +( +$uƚk +)); + +167 +$lšk + = + `¬¿y_diff +( +$v®ues +, +$exi¡šg +); + +168 ià( + `couÁ +( +$lšk +)) + +170 +$this +-> +objeù +-> + `lšk +('P”missiÚs', + `¬¿y_v®ues +( +$lšk +)); + +172 + } +} + + @lib/form/doctrine/sfDoctrineGuardPlugin/sfGuardGroupForm.class.php + +1 + `£tTabËName +('ad'); + +41 +$this +-> + `hasCÞumn +('com·ny_id', 'š‹g”', +nuÎ +, + `¬¿y +( + +43 'nÙnuÎ' => +Œue +, + +45 +$this +-> + `hasCÞumn +('com·ny_ÿ‹g_id', 'š‹g”', +nuÎ +, + `¬¿y +( + +48 +$this +-> + `hasCÞumn +('ad_mobže_image_lšk', '¡ršg', 3000, + `¬¿y +( + +50 'nÙnuÎ' => +Œue +, + +55 +public + +funùiÚ + + $£tUp +() + +57 +·»Á +:: + `£tUp +(); + +58 +$this +-> + `hasOà +('Com·ny', + `¬¿y +( + +63 +$this +-> + `hasOà +('Com·nyC©egÜy', + `¬¿y +( + +68 +$this +-> + `hasMªy +('AdDesütiÚ', + `¬¿y +( + +72 +$this +-> + `hasMªy +('OffiûAds', + `¬¿y +( + +76 +$time¡am·bË0 + = +Ãw + + `Doùrše_Tem¶©e_Time¡am·bË +( + `¬¿y +( + +78 +$this +-> + `aùAs +( +$time¡am·bË0 +); + +79 + } +} + + @lib/model/doctrine/base/BaseAdDescription.class.php + +1 + `£tTabËName +('ad_description'); + +44 +$this +-> + `hasCÞumn +('Ïnguage_id', 'š‹g”', +nuÎ +, + `¬¿y +( + +46 'nÙnuÎ' => +Œue +, + +48 +$this +-> + `hasCÞumn +('ad_id', 'š‹g”', +nuÎ +, + `¬¿y +( + +50 'nÙnuÎ' => +Œue +, + +52 +$this +-> + `hasCÞumn +('ad_Çme', '¡ršg', 255, + `¬¿y +( + +54 'nÙnuÎ' => +Œue +, + +57 +$this +-> + `hasCÞumn +('ad_desütiÚ', '‹xt', +nuÎ +, + `¬¿y +( + +60 +$this +-> + `hasCÞumn +('ad_mobže_‹xt', '¡ršg', 500, + `¬¿y +( + +62 'nÙnuÎ' => +Œue +, + +65 +$this +-> + `hasCÞumn +('ad_lšk', '¡ršg', 3000, + `¬¿y +( + +67 'nÙnuÎ' => +Œue +, + +72 +public + +funùiÚ + + $£tUp +() + +74 +·»Á +:: + `£tUp +(); + +75 +$this +-> + `hasOà +('Lªguage', + `¬¿y +( + +80 +$this +-> + `hasOà +('Ad', + `¬¿y +( + +84 + } +} + + @lib/model/doctrine/base/BaseCity.class.php + +1 + `£tTabËName +('city'); + +32 +$this +-> + `hasCÞumn +('c™y_Çme', '¡ršg', 64, + `¬¿y +( + +34 'nÙnuÎ' => +Œue +, + +37 +$this +-> + `hasCÞumn +('»giÚ_id', 'š‹g”', +nuÎ +, + `¬¿y +( + +39 'nÙnuÎ' => +Œue +, + +43 +public + +funùiÚ + + $£tUp +() + +45 +·»Á +:: + `£tUp +(); + +46 +$this +-> + `hasOà +('RegiÚ', + `¬¿y +( + +51 +$this +-> + `hasMªy +('Offiû', + `¬¿y +( + +54 + } +} + + @lib/model/doctrine/base/BaseCompany.class.php + +1 + `£tTabËName +('company'); + +41 +$this +-> + `hasCÞumn +('u£r_id', 'š‹g”', 4, + `¬¿y +( + +43 'nÙnuÎ' => +Œue +, + +46 +$this +-> + `hasCÞumn +('com·ny_cif', '¡ršg', 255, + `¬¿y +( + +48 'nÙnuÎ' => +Œue +, + +49 'unique' => +Œue +, + +54 +public + +funùiÚ + + $£tUp +() + +56 +·»Á +:: + `£tUp +(); + +57 +$this +-> + `hasOà +('sfGu¬dU£¸a U£r', + `¬¿y +( + +62 +$this +-> + `hasMªy +('Com·nyDesütiÚ', + `¬¿y +( + +66 +$this +-> + `hasMªy +('Offiû', + `¬¿y +( + +70 +$this +-> + `hasMªy +('Com·nyC©egÜy', + `¬¿y +( + +74 +$this +-> + `hasMªy +('Ad', + `¬¿y +( + +77 + } +} + + @lib/model/doctrine/base/BaseCompanyCategory.class.php + +1 + `£tTabËName +('company_category'); + +38 +$this +-> + `hasCÞumn +('com·ny_id', 'š‹g”', +nuÎ +, + `¬¿y +( + +40 'nÙnuÎ' => +Œue +, + +42 +$this +-> + `hasCÞumn +('g’”®_ÿ‹g_id', 'š‹g”', +nuÎ +, + `¬¿y +( + +47 +public + +funùiÚ + + $£tUp +() + +49 +·»Á +:: + `£tUp +(); + +50 +$this +-> + `hasOà +('Com·ny', + `¬¿y +( + +55 +$this +-> + `hasOà +('G’”®C©egÜy', + `¬¿y +( + +60 +$this +-> + `hasMªy +('Com·nyC©egÜyDesütiÚ', + `¬¿y +( + +64 +$this +-> + `hasMªy +('Ad', + `¬¿y +( + +68 +$time¡am·bË0 + = +Ãw + + `Doùrše_Tem¶©e_Time¡am·bË +(); + +69 +$áed£t0 + = +Ãw + + `Doùrše_Tem¶©e_Ne¡edS‘ +( + `¬¿y +( + +70 'hasMªyRoÙs' => +Œue +, + +73 +$this +-> + `aùAs +( +$time¡am·bË0 +); + +74 +$this +-> + `aùAs +( +$áed£t0 +); + +75 + } +} + + @lib/model/doctrine/base/BaseCompanyCategoryDescription.class.php + +1 + `£tTabËName +('company_category_description'); + +38 +$this +-> + `hasCÞumn +('Ïnguage_id', 'š‹g”', +nuÎ +, + `¬¿y +( + +40 'nÙnuÎ' => +Œue +, + +42 +$this +-> + `hasCÞumn +('com·ny_ÿ‹g_id', 'š‹g”', +nuÎ +, + `¬¿y +( + +44 'nÙnuÎ' => +Œue +, + +46 +$this +-> + `hasCÞumn +('com·ny_ÿ‹g_Çme', '¡ršg', 255, + `¬¿y +( + +48 'nÙnuÎ' => +Œue +, + +51 +$this +-> + `hasCÞumn +('com·ny_ÿ‹g_desütiÚ', '‹xt', +nuÎ +, + `¬¿y +( + +56 +public + +funùiÚ + + $£tUp +() + +58 +·»Á +:: + `£tUp +(); + +59 +$this +-> + `hasOà +('Lªguage', + `¬¿y +( + +64 +$this +-> + `hasOà +('Com·nyC©egÜy', + `¬¿y +( + +68 + } +} + + @lib/model/doctrine/base/BaseCompanyDescription.class.php + +1 + `£tTabËName +('company_description'); + +35 +$this +-> + `hasCÞumn +('com·ny_id', 'š‹g”', +nuÎ +, + `¬¿y +( + +37 'nÙnuÎ' => +Œue +, + +39 +$this +-> + `hasCÞumn +('Ïnguage_id', 'š‹g”', +nuÎ +, + `¬¿y +( + +41 'nÙnuÎ' => +Œue +, + +43 +$this +-> + `hasCÞumn +('com·ny_Çme', '¡ršg', 255, + `¬¿y +( + +45 'nÙnuÎ' => +Œue +, + +50 +public + +funùiÚ + + $£tUp +() + +52 +·»Á +:: + `£tUp +(); + +53 +$this +-> + `hasOà +('Com·ny', + `¬¿y +( + +58 +$this +-> + `hasOà +('Lªguage', + `¬¿y +( + +62 + } +} + + @lib/model/doctrine/base/BaseCountry.class.php + +1 + `£tTabËName +('country'); + +32 +$this +-> + `hasCÞumn +('couÁry_Çme', '¡ršg', 80, + `¬¿y +( + +34 'nÙnuÎ' => +Œue +, + +37 +$this +-> + `hasCÞumn +('iso_code_2', '¡ršg', 2, + `¬¿y +( + +39 'nÙnuÎ' => +Œue +, + +42 +$this +-> + `hasCÞumn +('iso_code_3', '¡ršg', 3, + `¬¿y +( + +44 'nÙnuÎ' => +Œue +, + +49 +public + +funùiÚ + + $£tUp +() + +51 +·»Á +:: + `£tUp +(); + +52 +$this +-> + `hasMªy +('RegiÚ', + `¬¿y +( + +55 + } +} + + @lib/model/doctrine/base/BaseGeneralCategory.class.php + +1 + `£tTabËName +('general_category'); + +31 +public + +funùiÚ + + $£tUp +() + +33 +·»Á +:: + `£tUp +(); + +34 +$this +-> + `hasMªy +('Com·nyC©egÜy', + `¬¿y +( + +38 +$this +-> + `hasMªy +('G’”®C©egÜyDesütiÚ', + `¬¿y +( + +42 +$this +-> + `hasMªy +('U£rBask‘', + `¬¿y +( + +46 +$time¡am·bË0 + = +Ãw + + `Doùrše_Tem¶©e_Time¡am·bË +(); + +47 +$áed£t0 + = +Ãw + + `Doùrše_Tem¶©e_Ne¡edS‘ +( + `¬¿y +( + +48 'hasMªyRoÙs' => +Œue +, + +51 +$this +-> + `aùAs +( +$time¡am·bË0 +); + +52 +$this +-> + `aùAs +( +$áed£t0 +); + +53 + } +} + + @lib/model/doctrine/base/BaseGeneralCategoryDescription.class.php + +1 + `£tTabËName +('general_category_description'); + +38 +$this +-> + `hasCÞumn +('Ïnguage_id', 'š‹g”', +nuÎ +, + `¬¿y +( + +40 'nÙnuÎ' => +Œue +, + +42 +$this +-> + `hasCÞumn +('g’”®_ÿ‹g_id', 'š‹g”', +nuÎ +, + `¬¿y +( + +44 'nÙnuÎ' => +Œue +, + +46 +$this +-> + `hasCÞumn +('g’”®_ÿ‹g_Çme', '¡ršg', 255, + `¬¿y +( + +48 'nÙnuÎ' => +Œue +, + +49 'unique' => +Œue +, + +52 +$this +-> + `hasCÞumn +('g’”®_ÿ‹g_desütiÚ', '‹xt', +nuÎ +, + `¬¿y +( + +57 +public + +funùiÚ + + $£tUp +() + +59 +·»Á +:: + `£tUp +(); + +60 +$this +-> + `hasOà +('Lªguage', + `¬¿y +( + +65 +$this +-> + `hasOà +('G’”®C©egÜy', + `¬¿y +( + +69 + } +} + + @lib/model/doctrine/base/BaseLanguage.class.php + +1 + `£tTabËName +('language'); + +38 +$this +-> + `hasCÞumn +('Ïnguage_Çme', '¡ršg', 255, + `¬¿y +( + +40 'nÙnuÎ' => +Œue +, + +41 'unique' => +Œue +, + +44 +$this +-> + `hasCÞumn +('code', '¡ršg', 3, + `¬¿y +( + +46 'nÙnuÎ' => +Œue +, + +47 'unique' => +Œue +, + +52 +public + +funùiÚ + + $£tUp +() + +54 +·»Á +:: + `£tUp +(); + +55 +$this +-> + `hasMªy +('Com·nyDesütiÚ', + `¬¿y +( + +59 +$this +-> + `hasMªy +('Com·nyC©egÜyDesütiÚ', + `¬¿y +( + +63 +$this +-> + `hasMªy +('G’”®C©egÜyDesütiÚ', + `¬¿y +( + +67 +$this +-> + `hasMªy +('AdDesütiÚ', + `¬¿y +( + +70 + } +} + + @lib/model/doctrine/base/BaseOffice.class.php + +1 + `£tTabËName +('office'); + +44 +$this +-> + `hasCÞumn +('com·ny_id', 'š‹g”', +nuÎ +, + `¬¿y +( + +46 'nÙnuÎ' => +Œue +, + +48 +$this +-> + `hasCÞumn +('c™y_id', 'š‹g”', +nuÎ +, + `¬¿y +( + +51 +$this +-> + `hasCÞumn +('offiû_gps', 'blob', +nuÎ +, + `¬¿y +( + +54 +$this +-> + `hasCÞumn +('offiû_¡»‘_add»ss', '¡ršg', 255, + `¬¿y +( + +56 'nÙnuÎ' => +Œue +, + +59 +$this +-> + `hasCÞumn +('offiû_z', '¡ršg', 32, + `¬¿y +( + +61 'nÙnuÎ' => +Œue +, + +66 +public + +funùiÚ + + $£tUp +() + +68 +·»Á +:: + `£tUp +(); + +69 +$this +-> + `hasOà +('Com·ny', + `¬¿y +( + +74 +$this +-> + `hasOà +('C™y', + `¬¿y +( + +79 +$this +-> + `hasMªy +('OffiûAds', + `¬¿y +( + +83 +$time¡am·bË0 + = +Ãw + + `Doùrše_Tem¶©e_Time¡am·bË +(); + +84 +$this +-> + `aùAs +( +$time¡am·bË0 +); + +85 + } +} + + @lib/model/doctrine/base/BaseOfficeAds.class.php + +1 + `£tTabËName +('office_ads'); + +32 +$this +-> + `hasCÞumn +('offiû_id', 'š‹g”', 4, + `¬¿y +( + +34 'nÙnuÎ' => +Œue +, + +37 +$this +-> + `hasCÞumn +('ad_id', 'š‹g”', +nuÎ +, + `¬¿y +( + +39 'nÙnuÎ' => +Œue +, + +43 +public + +funùiÚ + + $£tUp +() + +45 +·»Á +:: + `£tUp +(); + +46 +$this +-> + `hasOà +('Offiû', + `¬¿y +( + +51 +$this +-> + `hasOà +('Ad', + `¬¿y +( + +55 + } +} + + @lib/model/doctrine/base/BaseRegion.class.php + +1 + `£tTabËName +('region'); + +32 +$this +-> + `hasCÞumn +('couÁry_id', 'š‹g”', +nuÎ +, + `¬¿y +( + +34 'nÙnuÎ' => +Œue +, + +36 +$this +-> + `hasCÞumn +('»giÚ_Çme', '¡ršg', 64, + `¬¿y +( + +38 'nÙnuÎ' => +Œue +, + +43 +public + +funùiÚ + + $£tUp +() + +45 +·»Á +:: + `£tUp +(); + +46 +$this +-> + `hasOà +('CouÁry', + `¬¿y +( + +51 +$this +-> + `hasMªy +('C™y', + `¬¿y +( + +54 + } +} + + @lib/model/doctrine/base/BaseUserBasket.class.php + +1 + `£tTabËName +('user_basket'); + +32 +$this +-> + `hasCÞumn +('u£r_id', 'š‹g”', 4, + `¬¿y +( + +34 'nÙnuÎ' => +Œue +, + +37 +$this +-> + `hasCÞumn +('g’”®_ÿ‹g_id', 'š‹g”', +nuÎ +, + `¬¿y +( + +39 'nÙnuÎ' => +Œue +, + +43 +public + +funùiÚ + + $£tUp +() + +45 +·»Á +:: + `£tUp +(); + +46 +$this +-> + `hasOà +('sfGu¬dU£¸a U£r', + `¬¿y +( + +51 +$this +-> + `hasOà +('G’”®C©egÜy', + `¬¿y +( + +55 + } +} + + @lib/model/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardForgotPassword.class.php + +1 + `£tTabËName +('sf_guard_forgot_password'); + +32 +$this +-> + `hasCÞumn +('u£r_id', 'š‹g”', +nuÎ +, + `¬¿y +( + +34 'nÙnuÎ' => +Œue +, + +36 +$this +-> + `hasCÞumn +('unique_key', '¡ršg', 255, + `¬¿y +( + +40 +$this +-> + `hasCÞumn +('expœes_©', 'time¡amp', +nuÎ +, + `¬¿y +( + +42 'nÙnuÎ' => +Œue +, + +45 +$this +-> + `ÝtiÚ +('symfÚy', + `¬¿y +( + +46 'fÜm' => +çl£ +, + +47 'fž‹r' => +çl£ +, + +51 +public + +funùiÚ + + $£tUp +() + +53 +·»Á +:: + `£tUp +(); + +54 +$this +-> + `hasOà +('sfGu¬dU£¸a U£r', + `¬¿y +( + +59 +$time¡am·bË0 + = +Ãw + + `Doùrše_Tem¶©e_Time¡am·bË +( + `¬¿y +( + +61 +$this +-> + `aùAs +( +$time¡am·bË0 +); + +62 + } +} + + @lib/model/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardGroup.class.php + +1 + `£tTabËName +('sf_guard_group'); + +38 +$this +-> + `hasCÞumn +('Çme', '¡ršg', 255, + `¬¿y +( + +40 'unique' => +Œue +, + +43 +$this +-> + `hasCÞumn +('desütiÚ', '¡ršg', 1000, + `¬¿y +( + +49 +public + +funùiÚ + + $£tUp +() + +51 +·»Á +:: + `£tUp +(); + +52 +$this +-> + `hasMªy +('sfGu¬dU£¸a U£rs', + `¬¿y +( + +57 +$this +-> + `hasMªy +('sfGu¬dP”missiڇ P”missiÚs', + `¬¿y +( + +62 +$this +-> + `hasMªy +('sfGu¬dGroupP”missiÚ', + `¬¿y +( + +66 +$this +-> + `hasMªy +('sfGu¬dU£rGroup', + `¬¿y +( + +70 +$time¡am·bË0 + = +Ãw + + `Doùrše_Tem¶©e_Time¡am·bË +( + `¬¿y +( + +72 +$this +-> + `aùAs +( +$time¡am·bË0 +); + +73 + } +} + + @lib/model/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardGroupPermission.class.php + +1 + `£tTabËName +('sf_guard_group_permission'); + +32 +$this +-> + `hasCÞumn +('group_id', 'š‹g”', +nuÎ +, + `¬¿y +( + +34 '´im¬y' => +Œue +, + +36 +$this +-> + `hasCÞumn +('³rmissiÚ_id', 'š‹g”', +nuÎ +, + `¬¿y +( + +38 '´im¬y' => +Œue +, + +41 +$this +-> + `ÝtiÚ +('symfÚy', + `¬¿y +( + +42 'fÜm' => +çl£ +, + +43 'fž‹r' => +çl£ +, + +47 +public + +funùiÚ + + $£tUp +() + +49 +·»Á +:: + `£tUp +(); + +50 +$this +-> + `hasOà +('sfGu¬dGrou°a Group', + `¬¿y +( + +55 +$this +-> + `hasOà +('sfGu¬dP”missiڇ P”missiÚ', + `¬¿y +( + +60 +$time¡am·bË0 + = +Ãw + + `Doùrše_Tem¶©e_Time¡am·bË +( + `¬¿y +( + +62 +$this +-> + `aùAs +( +$time¡am·bË0 +); + +63 + } +} + + @lib/model/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardPermission.class.php + +1 + `£tTabËName +('sf_guard_permission'); + +38 +$this +-> + `hasCÞumn +('Çme', '¡ršg', 255, + `¬¿y +( + +40 'unique' => +Œue +, + +43 +$this +-> + `hasCÞumn +('desütiÚ', '¡ršg', 1000, + `¬¿y +( + +49 +public + +funùiÚ + + $£tUp +() + +51 +·»Á +:: + `£tUp +(); + +52 +$this +-> + `hasMªy +('sfGu¬dGrou°a Groups', + `¬¿y +( + +57 +$this +-> + `hasMªy +('sfGu¬dGroupP”missiÚ', + `¬¿y +( + +61 +$this +-> + `hasMªy +('sfGu¬dU£¸a U£rs', + `¬¿y +( + +66 +$this +-> + `hasMªy +('sfGu¬dU£rP”missiÚ', + `¬¿y +( + +70 +$time¡am·bË0 + = +Ãw + + `Doùrše_Tem¶©e_Time¡am·bË +( + `¬¿y +( + +72 +$this +-> + `aùAs +( +$time¡am·bË0 +); + +73 + } +} + + @lib/model/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardRememberKey.class.php + +1 + `£tTabËName +('sf_guard_remember_key'); + +32 +$this +-> + `hasCÞumn +('u£r_id', 'š‹g”', +nuÎ +, + `¬¿y +( + +35 +$this +-> + `hasCÞumn +('»memb”_key', '¡ršg', 32, + `¬¿y +( + +39 +$this +-> + `hasCÞumn +('_add»ss', '¡ršg', 50, + `¬¿y +( + +44 +$this +-> + `ÝtiÚ +('symfÚy', + `¬¿y +( + +45 'fÜm' => +çl£ +, + +46 'fž‹r' => +çl£ +, + +50 +public + +funùiÚ + + $£tUp +() + +52 +·»Á +:: + `£tUp +(); + +53 +$this +-> + `hasOà +('sfGu¬dU£¸a U£r', + `¬¿y +( + +58 +$time¡am·bË0 + = +Ãw + + `Doùrše_Tem¶©e_Time¡am·bË +( + `¬¿y +( + +60 +$this +-> + `aùAs +( +$time¡am·bË0 +); + +61 + } +} + + @lib/model/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardUser.class.php + +1 + `£tTabËName +('sf_guard_user'); + +74 +$this +-> + `hasCÞumn +('fœ¡_Çme', '¡ršg', 255, + `¬¿y +( + +78 +$this +-> + `hasCÞumn +('Ï¡_Çme', '¡ršg', 255, + `¬¿y +( + +82 +$this +-> + `hasCÞumn +('emaž_add»ss', '¡ršg', 255, + `¬¿y +( + +84 'nÙnuÎ' => +Œue +, + +85 'unique' => +Œue +, + +88 +$this +-> + `hasCÞumn +('u£ºame', '¡ršg', 128, + `¬¿y +( + +90 'nÙnuÎ' => +Œue +, + +91 'unique' => +Œue +, + +94 +$this +-> + `hasCÞumn +('®gܙhm', '¡ršg', 128, + `¬¿y +( + +97 'nÙnuÎ' => +Œue +, + +100 +$this +-> + `hasCÞumn +('§É', '¡ršg', 128, + `¬¿y +( + +104 +$this +-> + `hasCÞumn +('·sswÜd', '¡ršg', 128, + `¬¿y +( + +108 +$this +-> + `hasCÞumn +('is_aùive', 'boޗn', +nuÎ +, + `¬¿y +( + +112 +$this +-> + `hasCÞumn +('is_su³r_admš', 'boޗn', +nuÎ +, + `¬¿y +( + +114 'deçuÉ' => +çl£ +, + +116 +$this +-> + `hasCÞumn +('Ï¡_logš', 'time¡amp', +nuÎ +, + `¬¿y +( + +121 +$this +-> + `šdex +('is_aùive_idx', + `¬¿y +( + +123 + `¬¿y +( + +129 +public + +funùiÚ + + $£tUp +() + +131 +·»Á +:: + `£tUp +(); + +132 +$this +-> + `hasMªy +('sfGu¬dGrou°a Groups', + `¬¿y +( + +137 +$this +-> + `hasMªy +('sfGu¬dP”missiڇ P”missiÚs', + `¬¿y +( + +142 +$this +-> + `hasMªy +('sfGu¬dU£rP”missiÚ', + `¬¿y +( + +146 +$this +-> + `hasMªy +('sfGu¬dU£rGroup', + `¬¿y +( + +150 +$this +-> + `hasOà +('sfGu¬dRememb”Key‡ Rememb”Keys', + `¬¿y +( + +154 +$this +-> + `hasOà +('sfGu¬dFÜgÙPasswÜd‡ FÜgÙPasswÜd', + `¬¿y +( + +158 +$this +-> + `hasMªy +('Com·ny', + `¬¿y +( + +162 +$this +-> + `hasMªy +('U£rBask‘', + `¬¿y +( + +166 +$time¡am·bË0 + = +Ãw + + `Doùrše_Tem¶©e_Time¡am·bË +( + `¬¿y +( + +168 +$this +-> + `aùAs +( +$time¡am·bË0 +); + +169 + } +} + + @lib/model/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardUserGroup.class.php + +1 + `£tTabËName +('sf_guard_user_group'); + +32 +$this +-> + `hasCÞumn +('u£r_id', 'š‹g”', +nuÎ +, + `¬¿y +( + +34 '´im¬y' => +Œue +, + +36 +$this +-> + `hasCÞumn +('group_id', 'š‹g”', +nuÎ +, + `¬¿y +( + +38 '´im¬y' => +Œue +, + +41 +$this +-> + `ÝtiÚ +('symfÚy', + `¬¿y +( + +42 'fÜm' => +çl£ +, + +43 'fž‹r' => +çl£ +, + +47 +public + +funùiÚ + + $£tUp +() + +49 +·»Á +:: + `£tUp +(); + +50 +$this +-> + `hasOà +('sfGu¬dU£¸a U£r', + `¬¿y +( + +55 +$this +-> + `hasOà +('sfGu¬dGrou°a Group', + `¬¿y +( + +60 +$time¡am·bË0 + = +Ãw + + `Doùrše_Tem¶©e_Time¡am·bË +( + `¬¿y +( + +62 +$this +-> + `aùAs +( +$time¡am·bË0 +); + +63 + } +} + + @lib/model/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardUserPermission.class.php + +1 + `£tTabËName +('sf_guard_user_permission'); + +32 +$this +-> + `hasCÞumn +('u£r_id', 'š‹g”', +nuÎ +, + `¬¿y +( + +34 '´im¬y' => +Œue +, + +36 +$this +-> + `hasCÞumn +('³rmissiÚ_id', 'š‹g”', +nuÎ +, + `¬¿y +( + +38 '´im¬y' => +Œue +, + +41 +$this +-> + `ÝtiÚ +('symfÚy', + `¬¿y +( + +42 'fÜm' => +çl£ +, + +43 'fž‹r' => +çl£ +, + +47 +public + +funùiÚ + + $£tUp +() + +49 +·»Á +:: + `£tUp +(); + +50 +$this +-> + `hasOà +('sfGu¬dU£¸a U£r', + `¬¿y +( + +55 +$this +-> + `hasOà +('sfGu¬dP”missiڇ P”missiÚ', + `¬¿y +( + +60 +$time¡am·bË0 + = +Ãw + + `Doùrše_Tem¶©e_Time¡am·bË +( + `¬¿y +( + +62 +$this +-> + `aùAs +( +$time¡am·bË0 +); + +63 + } +} + + @lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardForgotPassword.class.php + +1 +execu‹ +('svn info --xml'); + +37 + g$šfo + = +Ãw + +Sim¶eXMLEËm’t +( +$out +); + +39 +li¡ +( +$out +, +$”r +èð +$fžesy¡em +-> +execu‹ +( +v¥rštf +('svÀlog % --xmÈ%s', +¬¿y_m­ +('esÿ³sh–Ïrg', +¬¿y +( + +40 +$¬gv +[1], + +41 ( +¡ršg +è +$šfo +-> +’Œy +-> +»pos™Üy +-> +roÙ +. +$¬gv +[2], + +43 + g$log + = +Ãw + +Sim¶eXMLEËm’t +( +$out +); + +45 +fܗch + ( +$log +-> +log’Œy + +as + +$log’Œy +) + +47 +echo + +¥rštf +(' * [%d] %s', +$log’Œy +['»visiÚ'], +Œim +( +´eg_»¶aû +('/\s*\[[\d\., ]+\]\s*/', '', ( +¡ršg +è$log’Œy-> +msg +))); + +48 +echo + + gPHP_EOL +; + + @lib/vendor/symfony/data/bin/check_configuration.php + +1

';
+
+44 
+	}
+}
+
+46 
+	gecho
+ "********************************\n";
+
+47 
+	gecho
+ "* *\n";
+
+48 
+	gecho
+ "* symfony„equirements check *\n";
+
+49 
+	gecho
+ "* *\n";
+
+50 
+	gecho
+ "********************************\n\n";
+
+52 
+echo
+ 
+¥rštf
+("php.š˜u£d by PHP: %s\n\n", 
+g‘_ši_·th
+());
+
+54 ià(
+	$is_þi
+())
+
+56 
+echo
+ "** WARNING **\n";
+
+57 
+echo
+ "* The PHP CLI can use‡ different…hp.ini file\n";
+
+58 
+echo
+ "*hanhe one used with your web server.\n";
+
+59 ià('\\' =ð
+DIRECTORY_SEPARATOR
+)
+
+61 
+echo
+ "* (especially onhe Windows…latform)\n";
+
+63 
+echo
+ "* Ifhis ishe case,…lease†aunchhis\n";
+
+64 
+echo
+ "* utility from your web server.\n";
+
+65 
+echo
+ "** WARNING **\n";
+
+66 
+	}
+}
+
+69 
+	gecho
+ "\n** Mandatory„equirements **\n\n";
+
+70 
+check
+(
+v”siÚ_com·»
+(
+phpv”siÚ
+(), '5.2.4', '>='), 
+¥rštf
+('PHP v”siÚ i ©†—¡ 5.2.4 (%s)',…hpv”siÚ()), 'Cu¼’ˆv”siÚ i '.phpv”siÚ(), 
+Œue
+);
+
+73 
+	gecho
+ "\n** Optional checks **\n\n";
+
+74 
+check
+(
+þass_exi¡s
+('PDO'), 'PDO i š¡®Ëd', 'In¡®ÈPDO (mªd©Üy fÜ Prݖ‡nd Doùrše)', 
+çl£
+);
+
+75 ià(
+þass_exi¡s
+('PDO'))
+
+77 
+	g$driv”s
+ = 
+PDO
+::
+g‘AvažabËDriv”s
+();
+
+78 
+check
+(
+couÁ
+(
+$driv”s
+), 'PDO ha somdriv” š¡®Ëd: '.
+im¶ode
+(', ', $drivers), 'Install PDO drivers (mandatory for Propel‡nd Doctrine)');
+
+80 
+check
+(
+þass_exi¡s
+('DomDocum’t'), 'PHP-XML moduË i š¡®Ëd', 'In¡®ÈªdƒÇbˁhphp-xmÈmoduË (»quœed by Prݖ)', 
+çl£
+);
+
+81 
+check
+(
+þass_exi¡s
+('XSLTProûssÜ'), 'XSL moduË i š¡®Ëd', 'In¡®ÈªdƒÇbˁhXSL moduË (»comm’ded fÜ Prݖ)', 
+çl£
+);
+
+82 
+check
+(
+funùiÚ_exi¡s
+('tok’_g‘_®l'), 'Thtok’_g‘_®l(èfunùiÚ i avažabË', 'In¡®ÈªdƒÇbˁhTok’iz”ƒx‹nsiÚ (highly„ecomm’ded)', 
+çl£
+);
+
+83 
+check
+(
+funùiÚ_exi¡s
+('mb_¡¾’'), 'Thmb_¡¾’(èfunùiÚ i avažabË', 'In¡®ÈªdƒÇbˁhmb¡ršgƒx‹nsiÚ', 
+çl£
+);
+
+84 
+check
+(
+funùiÚ_exi¡s
+('icÚv'), 'ThicÚv(èfunùiÚ i avažabË', 'In¡®ÈªdƒÇbˁhicÚvƒx‹nsiÚ', 
+çl£
+);
+
+85 
+check
+(
+funùiÚ_exi¡s
+('utf8_decode'), 'Thutf8_decode(èi avažabË', 'In¡®ÈªdƒÇbˁhXMLƒx‹nsiÚ', 
+çl£
+);
+
+86 
+check
+(
+funùiÚ_exi¡s
+('posix_i§‰y'), 'Thposix_i§‰y(èi avažabË', 'In¡®ÈªdƒÇbˁhphp_posixƒx‹nsiÚ (u£dØcÞÜizedhCLI ouut)', 
+çl£
+);
+
+88 
+	g$acûË¿tÜ
+ =
+
+89 (
+funùiÚ_exi¡s
+('­c_¡Üe'è&& 
+ši_g‘
+('apc.enabled'))
+
+91 
+funùiÚ_exi¡s
+('—cûË¿tÜ_put'è&& 
+ši_g‘
+('eaccelerator.enable')
+
+93 
+funùiÚ_exi¡s
+('xcache_set')
+
+95 
+check
+(
+$acûË¿tÜ
+, 'A PHP‡cûË¿tÜ i š¡®Ëd', 'In¡®È¨PHP‡cûË¿t܆ikAPC (highly„ecomm’ded)', 
+çl£
+);
+
+97 
+check
+(!
+ši_g‘
+('shÜt_ݒ_g'), 'php.š˜ha shÜt_ݒ_g s‘Øoff', 'S‘ iˆtØofàš…hp.ši', 
+çl£
+);
+
+98 
+check
+(!
+ši_g‘
+('magic_quÙes_gpc'), 'php.š˜ha magic_quÙes_gpø£ˆtØoff', 'S‘ iˆtØofàš…hp.ši', 
+çl£
+);
+
+99 
+check
+(!
+ši_g‘
+('»gi¡”_glob®s'), 'php.š˜ha »gi¡”_glob® £ˆtØoff', 'S‘ iˆtØofàš…hp.ši', 
+çl£
+);
+
+100 
+check
+(!
+ši_g‘
+('£ssiÚ.auto_¡¬t'), 'php.š˜ha £ssiÚ.auto_¡¬ˆ£ˆtØoff', 'S‘ iˆtØofàš…hp.ši', 
+çl£
+);
+
+102 
+check
+(
+v”siÚ_com·»
+(
+phpv”siÚ
+(), '5.2.9', '!='), 'PHP v”siÚ i nÙ 5.2.9', 'PHP 5.2.9 brok¬¿y_unique(èªd sfToÞk™::¬¿yD“pM”ge(). U£ 5.2.10 in¡—d [Tick‘ #6211]', 
+çl£
+);
+
+104 ià(!
+	$is_þi
+())
+
+106 
+echo
+ '
'; + +107 + } +} + + @lib/vendor/symfony/data/bin/release.php + +1 +execu‹ +('svÀ¡©u -u '. +g‘cwd +()); + +44 ià( +´eg_m©ch +('/Stu agaš¡„evisiÚ\:\s+(\d+)\s*$/im', +$»suÉ +, +$m©ch +)) + +46 + g$v”siÚ + = +$m©ch +[1]; + +49 ià(! +is£t +( +$v”siÚ +)) + +51 +throw + +Ãw + +Exû±iÚ +('Unableo find†ast SVN„evision.'); + +55 + g$v”siÚ + = +$v”siÚ_´efix +.'.'. +$v”siÚ +; + +59 + g$v”siÚ + = +$¬gv +[1]; + +62 +´št + +¥rštf +("R–—sšg symfÚy v”siÚ \"%s\".\n", +$v”siÚ +); + +65 +li¡ +( +$»suÉ +èð +$fžesy¡em +-> +execu‹ +('php data/bin/symfony symfony:test'); + +67 ià(0 !ð +$»suÉ +) + +69 +throw + +Ãw + +Exû±iÚ +('Someests failed. Release…rocess‡borted!'); + +72 ià( +is_fže +('package.xml')) + +74 + g$fžesy¡em +-> +»move +( +g‘cwd +(). +DIRECTORY_SEPARATOR +.'package.xml'); + +77 + g$fžesy¡em +-> +cÝy +( +g‘cwd +().'/package.xml.tmpl', getcwd().'/package.xml'); + +80 + g$fšd” + = +sfFšd” +:: +ty³ +('fže')-> +»Ïtive +(); + +81 + g$xml_þas£s + = ''; + +82 + g$dœs + = +¬¿y +('lib' => 'php', 'data' => 'data'); + +83 +fܗch + ( +$dœs + +as + +$dœ + => +$rÞe +) + +85 +$þass_fžes + = +$fšd” +-> +š +( +$dœ +); + +86 +fܗch + ( +$þass_fžes + +as + +$fže +) + +88 + g$xml_þas£s + .ð''."\n"; + +93 + g$fžesy¡em +-> +»¶aûTok’s +( +g‘cwd +(). +DIRECTORY_SEPARATOR +.'·ckage.xml', '##', '##', +¬¿y +( + +94 'SYMFONY_VERSION' => +$v”siÚ +, + +95 'CURRENT_DATE' => +d©e +('Y-m-d'), + +96 'CLASS_FILES' => +$xml_þas£s +, + +97 'STABILITY' => +$¡abž™y +, + +100 +li¡ +( +$»suÉs +èð +$fžesy¡em +-> +execu‹ +('pear…ackage'); + +101 +echo + + g$»suÉs +; + +103 + g$fžesy¡em +-> +»move +( +g‘cwd +(). +DIRECTORY_SEPARATOR +.'package.xml'); + +105 +ex™ +(0); + + @lib/vendor/symfony/data/bin/sandbox_installer.php + +1 +š¡®lDœ +( +dœÇme +( +__FILE__ +).'/sandbox_skeleton'); + +5 + g$this +-> +logSeùiÚ +('install', 'add symfony CLI for Windows users'); + +6 + g$this +-> +g‘Fžesy¡em +()-> +cÝy +( +dœÇme +( +__FILE__ +).'/symfÚy.b©', +sfCÚfig +:: +g‘ +('sf_root_dir').'/symfony.bat'); + +8 + g$this +-> +logSeùiÚ +('install', 'add LICENSE'); + +9 + g$this +-> +g‘Fžesy¡em +()-> +cÝy +( +dœÇme +( +__FILE__ +).'/../../LICENSE', +sfCÚfig +:: +g‘ +('sf_root_dir').'/LICENSE'); + +11 + g$this +-> +logSeùiÚ +('install', 'defaulto sqlite'); + +12 + g$this +-> +runTask +('cÚfigu»:d©aba£', +¥rštf +("'sql™e:%s/§ndbox.db'", +sfCÚfig +:: +g‘ +('sf_data_dir'))); + +14 + g$this +-> +logSeùiÚ +('install', 'create‡n‡pplication'); + +15 + g$this +-> +runTask +('generate:app', 'frontend'); + +17 + g$this +-> +logSeùiÚ +('install', 'publish‡ssets'); + +18 + g$this +-> +runTask +('plugin:publish-assets'); + +20 + g$this +-> +logSeùiÚ +('install', 'fix sqlite database…ermissions'); + +21 +touch +( +sfCÚfig +:: +g‘ +('sf_data_dir').'/sandbox.db'); + +22 +chmod +( +sfCÚfig +:: +g‘ +('sf_data_dir'), 0777); + +23 +chmod +( +sfCÚfig +:: +g‘ +('sf_data_dir').'/sandbox.db', 0777); + +25 + g$this +-> +logSeùiÚ +('install', 'add‡nƒmpty file inƒmpty directories'); + +26 + g$£’ + = +¬¿y +(); + +27 +fܗch + ( +Ãw + +RecursiveI‹¿tÜI‹¿tÜ +Òew +RecursiveDœeùÜyI‹¿tÜ +( +sfCÚfig +:: +g‘ +('sf_roÙ_dœ')), RecursiveI‹¿tÜI‹¿tÜ:: +CHILD_FIRST +è +as + +$·th + => +$™em +) + +29 ià( +$™em +-> +isDœ +(è&& !$™em-> +isLšk +(è&& ! +is£t +( +$£’ +[ +$·th +])) + +31 +touch +( +$™em +-> +g‘R—lP©h +().'/.sf'); + +34 + g$£’ +[ +$™em +-> +g‘P©h +()] = +Œue +; + + @lib/vendor/symfony/lib/action/sfAction.class.php + +1 + `g‘CÚfigCache +()-> + `checkCÚfig +('moduËs/'. +$this +-> + `g‘ModuËName +().'/cÚfig/£cur™y.yml', +Œue +)) + +42 + `»quœe +( +$fže +); + +51 +public + +funùiÚ + + $´eExecu‹ +() + +53 + } +} + +60 +public + +funùiÚ + + $po¡Execu‹ +() + +62 + } +} + +72 +public + +funùiÚ + + $fÜw¬d404 +( +$mes§ge + = +nuÎ +) + +74 +throw + +Ãw + + `sfE¼Ü404Exû±iÚ +( +$this +-> + `g‘404Mes§ge +( +$mes§ge +)); + +75 + } +} + +85 +public + +funùiÚ + + $fÜw¬d404UÆess +( +$cÚd™iÚ +, +$mes§ge + = +nuÎ +) + +87 ià(! +$cÚd™iÚ +) + +89 +throw + +Ãw + + `sfE¼Ü404Exû±iÚ +( +$this +-> + `g‘404Mes§ge +( +$mes§ge +)); + +91 + } +} + +101 +public + +funùiÚ + + $fÜw¬d404If +( +$cÚd™iÚ +, +$mes§ge + = +nuÎ +) + +103 ià( +$cÚd™iÚ +) + +105 +throw + +Ãw + + `sfE¼Ü404Exû±iÚ +( +$this +-> + `g‘404Mes§ge +( +$mes§ge +)); + +107 + } +} + +114 +public + +funùiÚ + + $»dœeù404 +() + +116  +$this +-> + `»dœeù +('/'. +sfCÚfig +:: + `g‘ +('sf_error_404_module').'/'.sfConfig::get('sf_error_404_action')); + +117 + } +} + +129 +public + +funùiÚ + + $fÜw¬d +( +$moduË +, +$aùiÚ +) + +131 ià( +sfCÚfig +:: + `g‘ +('sf_logging_enabled')) + +133 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, '­¶iÿtiÚ.log', + `¬¿y +( + `¥rštf +('FÜw¬dØaùiÚ "%s/%s"', +$moduË +, +$aùiÚ +)))); + +136 +$this +-> + `g‘CڌÞËr +()-> + `fÜw¬d +( +$moduË +, +$aùiÚ +); + +138 +throw + +Ãw + + `sfStÝExû±iÚ +(); + +139 + } +} + +152 +public + +funùiÚ + + $fÜw¬dIf +( +$cÚd™iÚ +, +$moduË +, +$aùiÚ +) + +154 ià( +$cÚd™iÚ +) + +156 +$this +-> + `fÜw¬d +( +$moduË +, +$aùiÚ +); + +158 + } +} + +171 +public + +funùiÚ + + $fÜw¬dUÆess +( +$cÚd™iÚ +, +$moduË +, +$aùiÚ +) + +173 ià(! +$cÚd™iÚ +) + +175 +$this +-> + `fÜw¬d +( +$moduË +, +$aùiÚ +); + +177 + } +} + +193 +public + +funùiÚ + + $»dœeù +( +$u¾ +, +$¡©usCode + = 302) + +196 ià( + `is_objeù +( +$¡©usCode +è|| + `is_¬¿y +($statusCode)) + +198 +$u¾ + = + `¬¿y_m”ge +( + `¬¿y +('sf_rou‹' => $u¾), + `is_objeù +( +$¡©usCode +) ?‡rray('sf_subject' => $statusCode) : $statusCode); + +199 +$¡©usCode + = + `func_num_¬gs +(è>ð3 ? + `func_g‘_¬g +(2) : 302; + +202 +$this +-> + `g‘CڌÞËr +()-> + `»dœeù +( +$u¾ +, 0, +$¡©usCode +); + +204 +throw + +Ãw + + `sfStÝExû±iÚ +(); + +205 + } +} + +220 +public + +funùiÚ + + $»dœeùIf +( +$cÚd™iÚ +, +$u¾ +, +$¡©usCode + = 302) + +222 ià( +$cÚd™iÚ +) + +225 +$¬gum’ts + = + `func_g‘_¬gs +(); + +226 + `ÿÎ_u£r_func_¬¿y +( + `¬¿y +( +$this +, '»dœeù'), + `¬¿y_¦iû +( +$¬gum’ts +, 1)); + +228 + } +} + +243 +public + +funùiÚ + + $»dœeùUÆess +( +$cÚd™iÚ +, +$u¾ +, +$¡©usCode + = 302) + +245 ià(! +$cÚd™iÚ +) + +248 +$¬gum’ts + = + `func_g‘_¬gs +(); + +249 + `ÿÎ_u£r_func_¬¿y +( + `¬¿y +( +$this +, '»dœeù'), + `¬¿y_¦iû +( +$¬gum’ts +, 1)); + +251 + } +} + +264 +public + +funùiÚ + + $»nd”Text +( +$‹xt +) + +266 +$this +-> + `g‘Re¥Ú£ +()-> + `£tCڋÁ +($this->g‘Re¥Ú£()-> + `g‘CڋÁ +(). +$‹xt +); + +268  +sfV›w +:: +NONE +; + +269 + } +} + +285 +public + +funùiÚ + + $g‘P¬tŸl +( +$‹m¶©eName +, +$v¬s + = +nuÎ +) + +287 +$this +-> + `g‘Cڋxt +()-> + `g‘CÚfigu¿tiÚ +()-> + `lßdH–³rs +('Partial'); + +289 +$v¬s + = +nuÎ + !=ð$v¬ ? $v¬ : +$this +-> +v¬HÞd” +-> + `g‘AÎ +(); + +291  + `g‘_·¹Ÿl +( +$‹m¶©eName +, +$v¬s +); + +292 + } +} + +308 +public + +funùiÚ + + $»nd”P¬tŸl +( +$‹m¶©eName +, +$v¬s + = +nuÎ +) + +310  +$this +-> + `»nd”Text +($this-> + `g‘P¬tŸl +( +$‹m¶©eName +, +$v¬s +)); + +311 + } +} + +328 +public + +funùiÚ + + $g‘Compڒt +( +$moduËName +, +$compڒtName +, +$v¬s + = +nuÎ +) + +330 +$this +-> + `g‘Cڋxt +()-> + `g‘CÚfigu¿tiÚ +()-> + `lßdH–³rs +('Partial'); + +332 +$v¬s + = +nuÎ + !=ð$v¬ ? $v¬ : +$this +-> +v¬HÞd” +-> + `g‘AÎ +(); + +334  + `g‘_compڒt +( +$moduËName +, +$compڒtName +, +$v¬s +); + +335 + } +} + +352 +public + +funùiÚ + + $»nd”Compڒt +( +$moduËName +, +$compڒtName +, +$v¬s + = +nuÎ +) + +354  +$this +-> + `»nd”Text +($this-> + `g‘Compڒt +( +$moduËName +, +$compڒtName +, +$v¬s +)); + +355 + } +} + +362 +public + +funùiÚ + + $g‘Secur™yCÚfigu¿tiÚ +() + +364  +$this +-> +£cur™y +; + +365 + } +} + +372 +public + +funùiÚ + + $£tSecur™yCÚfigu¿tiÚ +( +$£cur™y +) + +374 +$this +-> +£cur™y + = +$£cur™y +; + +375 + } +} + +385 +public + +funùiÚ + + $g‘Secur™yV®ue +( +$Çme +, +$deçuÉ + = +nuÎ +) + +387 +$aùiÚName + = + `¡¹Þow” +( +$this +-> + `g‘AùiÚName +()); + +389 ià( + `is£t +( +$this +-> +£cur™y +[ +$aùiÚName +][ +$Çme +])) + +391  +$this +-> +£cur™y +[ +$aùiÚName +][ +$Çme +]; + +394 ià( + `is£t +( +$this +-> +£cur™y +['®l'][ +$Çme +])) + +396  +$this +-> +£cur™y +['®l'][ +$Çme +]; + +399  +$deçuÉ +; + +400 + } +} + +407 +public + +funùiÚ + + $isSecu» +() + +409  +$this +-> + `g‘Secur™yV®ue +('is_£cu»', +çl£ +); + +410 + } +} + +417 +public + +funùiÚ + + $g‘C»d’tŸl +() + +419  +$this +-> + `g‘Secur™yV®ue +('credentials'); + +420 + } +} + +430 +public + +funùiÚ + + $£tTem¶©e +( +$Çme +, +$moduË + = +nuÎ +) + +432 ià( +sfCÚfig +:: + `g‘ +('sf_logging_enabled')) + +434 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, '­¶iÿtiÚ.log', + `¬¿y +( + `¥rštf +('Chªg‹m¶©tØ"%s/%s"', +nuÎ + ==ð +$moduË + ? 'CURRENT' : $moduË, +$Çme +)))); + +437 ià( +nuÎ + !=ð +$moduË +) + +439 +$Çme + = +sfCÚfig +:: + `g‘ +('sf_­p_dœ').'/moduËs/'. +$moduË +.'/templates/'.$name; + +442 +sfCÚfig +:: + `£t +('symfÚy.v›w.'. +$this +-> + `g‘ModuËName +().'_'.$this-> + `g‘AùiÚName +().'_‹m¶©e', +$Çme +); + +443 + } +} + +455 +public + +funùiÚ + + $g‘Tem¶©e +() + +457  +sfCÚfig +:: + `g‘ +('symfÚy.v›w.'. +$this +-> + `g‘ModuËName +().'_'.$this-> + `g‘AùiÚName +().'_template'); + +458 + } +} + +469 +public + +funùiÚ + + $£tLayout +( +$Çme +) + +471 ià( +sfCÚfig +:: + `g‘ +('sf_logging_enabled')) + +473 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, '­¶iÿtiÚ.log', + `¬¿y +( + `¥rštf +('ChªgÏyouˆtØ"%s"', +$Çme +)))); + +476 +sfCÚfig +:: + `£t +('symfÚy.v›w.'. +$this +-> + `g‘ModuËName +().'_'.$this-> + `g‘AùiÚName +().'_Ïyout', +$Çme +); + +477 + } +} + +487 +public + +funùiÚ + + $g‘Layout +() + +489  +sfCÚfig +:: + `g‘ +('symfÚy.v›w.'. +$this +-> + `g‘ModuËName +().'_'.$this-> + `g‘AùiÚName +().'_layout'); + +490 + } +} + +497 +public + +funùiÚ + + $£tV›wCÏss +( +$þass +) + +499 +sfCÚfig +:: + `£t +('mod_'. + `¡¹Þow” +( +$this +-> + `g‘ModuËName +()).'_v›w_þass', +$þass +); + +500 + } +} + +507 +public + +funùiÚ + + $g‘Rou‹ +() + +509  +$this +-> + `g‘Reque¡ +()-> + `g‘A‰ribu‹ +('sf_route'); + +510 + } +} + +519 +´Ùeùed + +funùiÚ + + $g‘404Mes§ge +( +$mes§ge + = +nuÎ +) + +521  +nuÎ + ==ð +$mes§ge + ? + `¥rštf +('Thi »que¡ ha b“ÀfÜw¬dedØ¨404ƒ¼Ü…agbyhaùiÚ "%s/%s".', +$this +-> + `g‘ModuËName +(), $this-> + `g‘AùiÚName +()) : $message; + +522 + } +} + + @lib/vendor/symfony/lib/action/sfActionStack.class.php + +1 +¡ack +[] = +$aùiÚEÁry +; + +43  +$aùiÚEÁry +; + +53 +public + +funùiÚ + + $g‘EÁry +( +$šdex +) + +55 +$»tv® + = +nuÎ +; + +57 ià( +$šdex + > -1 && $šdex < + `couÁ +( +$this +-> +¡ack +)) + +59 +$»tv® + = +$this +-> +¡ack +[ +$šdex +]; + +62  +$»tv® +; + +63 + } +} + +70 +public + +funùiÚ + + $pÝEÁry +() + +72  + `¬¿y_pÝ +( +$this +-> +¡ack +); + +73 + } +} + +80 +public + +funùiÚ + + $g‘Fœ¡EÁry +() + +82 +$»tv® + = +nuÎ +; + +84 ià( + `is£t +( +$this +-> +¡ack +[0])) + +86 +$»tv® + = +$this +-> +¡ack +[0]; + +89  +$»tv® +; + +90 + } +} + +97 +public + +funùiÚ + + $g‘La¡EÁry +() + +99 +$couÁ + = + `couÁ +( +$this +-> +¡ack +); + +100 +$»tv® + = +nuÎ +; + +102 ià( + `is£t +( +$this +-> +¡ack +[0])) + +104 +$»tv® + = +$this +-> +¡ack +[ +$couÁ + - 1]; + +107  +$»tv® +; + +108 + } +} + +115 +public + +funùiÚ + + $g‘Size +() + +117  + `couÁ +( +$this +-> +¡ack +); + +118 + } +} + + @lib/vendor/symfony/lib/action/sfActionStackEntry.class.php + +1 +aùiÚName + = +$aùiÚName +; + +39 +$this +-> +aùiÚIn¡ªû + = +$aùiÚIn¡ªû +; + +40 +$this +-> +moduËName + = +$moduËName +; + +48 +public + +funùiÚ + + $g‘AùiÚName +() + +50  +$this +-> +aùiÚName +; + +51 + } +} + +58 +public + +funùiÚ + + $g‘AùiÚIn¡ªû +() + +60  +$this +-> +aùiÚIn¡ªû +; + +61 + } +} + +68 +public + +funùiÚ + + $g‘ModuËName +() + +70  +$this +-> +moduËName +; + +71 + } +} + +80 +public + + gfunùiÚ + & + $g‘P»£Á©iÚ +() + +82  +$this +-> +´e£Á©iÚ +; + +83 + } +} + +90 +public + +funùiÚ + + $£tP»£Á©iÚ +(& +$´e£Á©iÚ +) + +92 +$this +-> +´e£Á©iÚ + =& +$´e£Á©iÚ +; + +93 + } +} + + @lib/vendor/symfony/lib/action/sfActions.class.php + +1 + `g‘AùiÚName +()); + +42 ià( +$aùiÚToRun + === 'execute') + +45 +throw + +Ãw + + `sfIn™Ÿliz©iÚExû±iÚ +( + `¥rštf +('sfAùiÚ in™Ÿliz©iÚ fažed fÜ moduË "%s". Th”wa nØaùiÚ giv’.', +$this +-> + `g‘ModuËName +())); + +48 ià(! + `is_ÿÎabË +( + `¬¿y +( +$this +, +$aùiÚToRun +))) + +51 +throw + +Ãw + + `sfIn™Ÿliz©iÚExû±iÚ +( + `¥rštf +('sfAùiÚ in™Ÿliz©iÚ fažed fÜ moduË "%s",‡ùiÚ "%s". You mu¡ c»©¨"%s" m‘hod.', +$this +-> + `g‘ModuËName +(), $this-> + `g‘AùiÚName +(), +$aùiÚToRun +)); + +54 ià( +sfCÚfig +:: + `g‘ +('sf_logging_enabled')) + +56 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, '­¶iÿtiÚ.log', + `¬¿y +( + `¥rštf +('C®È"%s->%s()"', + `g‘_þass +($this), +$aùiÚToRun +)))); + +60  +$this +-> + `$aùiÚToRun +( +$»que¡ +); + +62 + } +} + + @lib/vendor/symfony/lib/action/sfComponent.class.php + +1 + `š™Ÿlize +( +$cڋxt +, +$moduËName +, +$aùiÚName +); + +50 +public + +funùiÚ + + $š™Ÿlize +( +$cڋxt +, +$moduËName +, +$aùiÚName +) + +52 +$this +-> +moduËName + = +$moduËName +; + +53 +$this +-> +aùiÚName + = +$aùiÚName +; + +54 +$this +-> +cڋxt + = +$cڋxt +; + +55 +$this +-> +di¥©ch” + = +$cڋxt +-> + `g‘Ev’tDi¥©ch” +(); + +56 +$this +-> +v¬HÞd” + = +Ãw + + `sfP¬am‘”HÞd” +(); + +57 +$this +-> +»que¡ + = +$cڋxt +-> + `g‘Reque¡ +(); + +58 +$this +-> +»¥Ú£ + = +$cڋxt +-> + `g‘Re¥Ú£ +(); + +59 +$this +-> +»que¡P¬am‘”HÞd” + = $this-> +»que¡ +-> + `g‘P¬am‘”HÞd” +(); + +60 + } +} + +77 +ab¡¿ù + +funùiÚ + +execu‹ +( +$»que¡ +); + +84 +public + +funùiÚ + + $g‘ModuËName +() + +86  +$this +-> +moduËName +; + +87 + } +} + +94 +public + +funùiÚ + + $g‘AùiÚName +() + +96  +$this +-> +aùiÚName +; + +97 + } +} + +104 +public + +fš® + +funùiÚ + + $g‘Cڋxt +() + +106  +$this +-> +cڋxt +; + +107 + } +} + +114 +public + +fš® + +funùiÚ + + $g‘Logg” +() + +116  +$this +-> +cڋxt +-> + `g‘Logg” +(); + +117 + } +} + +129 +public + +funùiÚ + +logMes§ge +( +$mes§ge +, +$´iܙy + = 'info') + +131 ià( +sfCÚfig +:: +g‘ +('sf_logging_enabled')) + +133 +$this +-> +di¥©ch” +-> +nÙify +( +Ãw + +sfEv’t +($this, '­¶iÿtiÚ.log', +¬¿y +( +$mes§ge +, '´iܙy' => +cÚ¡ªt +('sfLogg”::'. +¡¹ouµ” +( +$´iܙy +))))); + +149 +public + +funùiÚ + + $g‘Reque¡P¬am‘” +( +$Çme +, +$deçuÉ + = +nuÎ +) + +151  +$this +-> +»que¡P¬am‘”HÞd” +-> + `g‘ +( +$Çme +, +$deçuÉ +); + +152 + } +} + +164 +public + +funùiÚ + + $hasReque¡P¬am‘” +( +$Çme +) + +166  +$this +-> +»que¡P¬am‘”HÞd” +-> + `has +( +$Çme +); + +167 + } +} + +178 +public + +funùiÚ + + $g‘Reque¡ +() + +180  +$this +-> +»que¡ +; + +181 + } +} + +192 +public + +funùiÚ + + $g‘Re¥Ú£ +() + +194  +$this +-> +»¥Ú£ +; + +195 + } +} + +206 +public + +funùiÚ + + $g‘CڌÞËr +() + +208  +$this +-> +cڋxt +-> + `g‘CڌÞËr +(); + +209 + } +} + +224 +public + +funùiÚ + +g’”©eU¾ +( +$rou‹ +, +$·¿ms + = +¬¿y +(), +$absÞu‹ + = +çl£ +) + +226  +$this +-> +cڋxt +-> +g‘Routšg +()-> +g’”©e +( +$rou‹ +, +$·¿ms +, +$absÞu‹ +); + +238 +public + +funùiÚ + + $g‘U£r +() + +240  +$this +-> +cڋxt +-> + `g‘U£r +(); + +241 + } +} + +248 +public + +funùiÚ + + $g‘Maž” +() + +250  +$this +-> + `g‘Cڋxt +()-> + `g‘Maž” +(); + +251 + } +} + +264 +public + +funùiÚ + + $£tV¬ +( +$Çme +, +$v®ue +, +$§ã + = +çl£ +) + +266 +$this +-> +v¬HÞd” +-> + `£t +( +$Çme +, +$§ã + ? +Ãw + + `sfOuutEsÿ³rSaã +( +$v®ue +) : $value); + +267 + } +} + +276 +public + +funùiÚ + + $g‘V¬ +( +$Çme +) + +278  +$this +-> +v¬HÞd” +-> + `g‘ +( +$Çme +); + +279 + } +} + +286 +public + +funùiÚ + + $g‘V¬HÞd” +() + +288  +$this +-> +v¬HÞd” +; + +289 + } +} + +305 +public + +funùiÚ + + $__£t +( +$key +, +$v®ue +) + +307  +$this +-> +v¬HÞd” +-> + `£tByRef +( +$key +, +$v®ue +); + +308 + } +} + +323 +public + + gfunùiÚ + & + $__g‘ +( +$key +) + +325  +$this +-> +v¬HÞd” +-> + `g‘ +( +$key +); + +326 + } +} + +339 +public + +funùiÚ + + $__is£t +( +$Çme +) + +341  +$this +-> +v¬HÞd” +-> + `has +( +$Çme +); + +342 + } +} + +353 +public + +funùiÚ + + $__un£t +( +$Çme +) + +355 +$this +-> +v¬HÞd” +-> + `»move +( +$Çme +); + +356 + } +} + +368 +public + +funùiÚ + + $__ÿÎ +( +$m‘hod +, +$¬gum’ts +) + +370 +$ev’t + = +$this +-> +di¥©ch” +-> + `nÙifyUÁž +( +Ãw + + `sfEv’t +($this, 'compڒt.m‘hod_nÙ_found', + `¬¿y +('m‘hod' => +$m‘hod +, '¬gum’ts' => +$¬gum’ts +))); + +371 ià(! +$ev’t +-> + `isProûs£d +()) + +373 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('C®ÈtØundefšed m‘hod %s::%s.', + `g‘_þass +( +$this +), +$m‘hod +)); + +376  +$ev’t +-> + `g‘R‘uºV®ue +(); + +377 + } +} + + @lib/vendor/symfony/lib/action/sfComponents.class.php + +1 +d–‘eCu¼’tD©a + = +$boޗn +; + +43 +public + +funùiÚ + + $g‘D–‘eCu¼’tD©a +() + +45  +$this +-> +d–‘eCu¼’tD©a +; + +46 + } +} + +53 +´Ùeùed + +funùiÚ + + $doLßdD©aFromFže +( +$fže +) + +56 +$d©a + = +sfYaml +:: + `lßd +( +$fže +); + +58 +$this +-> + `lßdD©aFromA¼ay +( +$d©a +); + +59 + } +} + +66 +ab¡¿ù + +public + +funùiÚ + +lßdD©aFromA¼ay +( +$d©a +); + +74 +´Ùeùed + +funùiÚ + + $doLßdD©a +( +¬¿y + +$fžes +) + +76 +$this +-> +objeù_»ã»nûs + = + `¬¿y +(); + +77 +$this +-> +m­s + = + `¬¿y +(); + +79 + `fܗch + ( +$fžes + +as + +$fže +) + +81 +$this +-> + `doLßdD©aFromFže +( +$fže +); + +83 + } +} + +97 +public + +funùiÚ + + $g‘Fžes +( +$–em’t + = +nuÎ +) + +99 ià( +nuÎ + ==ð +$–em’t +) + +101 +$–em’t + = +sfCÚfig +:: + `g‘ +('sf_data_dir').'/fixtures'; + +104 +$fžes + = + `¬¿y +(); + +105 ià( + `is_¬¿y +( +$–em’t +)) + +107 + `fܗch + ( +$–em’t + +as + +$e +) + +109 +$fžes + = + `¬¿y_m”ge +($fžes, +$this +-> + `g‘Fžes +( +$e +)); + +112 ià( + `is_fže +( +$–em’t +)) + +114 +$fžes +[] = +$–em’t +; + +116 ià( + `is_dœ +( +$–em’t +)) + +118 +$fžes + = +sfFšd” +:: + `ty³ +('fže')-> + `Çme +('*.yml')-> + `sÜt_by_Çme +()-> + `š +( +$–em’t +); + +122 +throw + +Ãw + + `sfIn™Ÿliz©iÚExû±iÚ +( + `¥rštf +('You mu¡ givª‡¼ay,‡ dœeùÜy o¸¨fžtØsfD©a::g‘Fžes(è(% giv’).', +$–em’t +)); + +125 +$fžes + = + `¬¿y_unique +($files); + +126 + `sÜt +( +$fžes +); + +128  +$fžes +; + +129 + } +} + + @lib/vendor/symfony/lib/addon/sfPager.class.php + +1 +£tCÏss +( +$þass +); + +48 + g$this +-> +£tMaxP”Page +( +$maxP”Page +); + +49 + g$this +-> + g·¿m‘”HÞd” + = +Ãw + +sfP¬am‘”HÞd” +(); + +57 +ab¡¿ù + +public + +funùiÚ + +š™ +(); + +64 +ab¡¿ù + +public + +funùiÚ + +g‘ResuÉs +(); + +73 +ab¡¿ù + +´Ùeùed + +funùiÚ + +»Œ›veObjeù +( +$off£t +); + +80 +public + +funùiÚ + +g‘Cu¼’tMaxLšk +() + +82  + g$this +-> + gcu¼’tMaxLšk +; + +90 +public + +funùiÚ + +g‘MaxRecÜdLim™ +() + +92  + g$this +-> + gmaxRecÜdLim™ +; + +100 +public + +funùiÚ + +£tMaxRecÜdLim™ +( +$lim™ +) + +102 + g$this +-> + gmaxRecÜdLim™ + = +$lim™ +; + +112 +public + +funùiÚ + +g‘Lšks +( +$nb_lšks + = 5) + +114 +$lšks + = +¬¿y +(); + +115 + g$tmp + = +$this +-> +·ge + - +æoÜ +( +$nb_lšks + / 2); + +116 + g$check + = +$this +-> +Ï¡Page + - +$nb_lšks + + 1; + +117 + g$lim™ + = +$check + > 0 ? $check : 1; + +118 + g$begš + = +$tmp + > 0 ? ($tm°> +$lim™ + ? $limit : $tmp) : 1; + +120 + g$i + = (è +$begš +; + +121  + g$i + < + g$begš + + + g$nb_lšks + && $˜<ð +$this +-> +Ï¡Page +) + +123 +$lšks +[] = +$i +++; + +126 + g$this +-> + gcu¼’tMaxLšk + = +couÁ +( +$lšks +) ? $links[count($links) - 1] : 1; + +128  + g$lšks +; + +136 +public + +funùiÚ + +haveToPagš©e +() + +138  + g$this +-> +g‘MaxP”Page +(è&& $this-> +g‘NbResuÉs +() > $this->getMaxPerPage(); + +146 +public + +funùiÚ + +g‘CursÜ +() + +148  + g$this +-> + gcursÜ +; + +156 +public + +funùiÚ + +£tCursÜ +( +$pos +) + +158 ià( + g$pos + < 1) + +160 + g$this +-> + gcursÜ + = 1; + +162 ià( + g$pos + > + g$this +-> + gnbResuÉs +) + +164 + g$this +-> + gcursÜ + = +$this +-> +nbResuÉs +; + +168 + g$this +-> + gcursÜ + = +$pos +; + +179 +public + +funùiÚ + +g‘ObjeùByCursÜ +( +$pos +) + +181 + g$this +-> +£tCursÜ +( +$pos +); + +183  + g$this +-> +g‘Cu¼’t +(); + +191 +public + +funùiÚ + +g‘Cu¼’t +() + +193  + g$this +-> +»Œ›veObjeù +( +$this +-> +cursÜ +); + +201 +public + +funùiÚ + +g‘Next +() + +203 ià( + g$this +-> + gcursÜ + + 1 > $this-> + gnbResuÉs +) + +205  + gnuÎ +; + +209  + g$this +-> +»Œ›veObjeù +( +$this +-> +cursÜ + + 1); + +218 +public + +funùiÚ + +g‘P»vious +() + +220 ià( + g$this +-> + gcursÜ + - 1 < 1) + +222  + gnuÎ +; + +226  + g$this +-> +»Œ›veObjeù +( +$this +-> +cursÜ + - 1); + +235 +public + +funùiÚ + +g‘Fœ¡Indiû +() + +237 ià( + g$this +-> + g·ge + == 0) + +243  ( + g$this +-> + g·ge + - 1è* $this-> + gmaxP”Page + + 1; + +252 +public + +funùiÚ + +g‘La¡Indiû +() + +254 ià( + g$this +-> + g·ge + == 0) + +256  +$this +-> +nbResuÉs +; + +260 ià( + g$this +-> +·ge + * $this-> + gmaxP”Page + >ð +$this +-> +nbResuÉs +) + +262  +$this +-> +nbResuÉs +; + +266  + g$this +-> +·ge + * $this-> + gmaxP”Page +; + +276 +public + +funùiÚ + +g‘CÏss +() + +278  + g$this +-> + gþass +; + +286 +public + +funùiÚ + +£tCÏss +( +$þass +) + +288 + g$this +-> + gþass + = +$þass +; + +296 +public + +funùiÚ + +g‘NbResuÉs +() + +298  + g$this +-> + gnbResuÉs +; + +306 +´Ùeùed + +funùiÚ + +£tNbResuÉs +( +$nb +) + +308 + g$this +-> + gnbResuÉs + = +$nb +; + +316 +public + +funùiÚ + +g‘Fœ¡Page +() + +326 +public + +funùiÚ + +g‘La¡Page +() + +328  + g$this +-> + gÏ¡Page +; + +336 +´Ùeùed + +funùiÚ + +£tLa¡Page +( +$·ge +) + +338 + g$this +-> + gÏ¡Page + = +$·ge +; + +340 ià( + g$this +-> +g‘Page +(è> + g$·ge +) + +342 + g$this +-> +£tPage +( +$·ge +); + +351 +public + +funùiÚ + +g‘Page +() + +353  + g$this +-> + g·ge +; + +361 +public + +funùiÚ + +g‘NextPage +() + +363  +mš +( +$this +-> +g‘Page +(è+ 1, $this-> +g‘La¡Page +()); + +371 +public + +funùiÚ + +g‘P»viousPage +() + +373  +max +( +$this +-> +g‘Page +(è- 1, $this-> +g‘Fœ¡Page +()); + +381 +public + +funùiÚ + +£tPage +( +$·ge +) + +383 + g$this +-> + g·ge + = +štv® +( +$·ge +); + +385 ià( + g$this +-> + g·ge + <= 0) + +388 +$this +-> +·ge + = $this-> +g‘MaxP”Page +() ? 1 : 0; + +397 +public + +funùiÚ + +g‘MaxP”Page +() + +399  + g$this +-> + gmaxP”Page +; + +407 +public + +funùiÚ + +£tMaxP”Page +( +$max +) + +409 ià( + g$max + > 0) + +411 + g$this +-> + gmaxP”Page + = +$max +; + +412 ià( + g$this +-> + g·ge + == 0) + +414 +$this +-> +·ge + = 1; + +417 ià( + g$max + == 0) + +419 +$this +-> +maxP”Page + = 0; + +420 + g$this +-> + g·ge + = 0; + +424 + g$this +-> + gmaxP”Page + = 1; + +425 ià( + g$this +-> + g·ge + == 0) + +427 +$this +-> +·ge + = 1; + +437 +public + +funùiÚ + +isFœ¡Page +() + +439  1 =ð +$this +-> +·ge +; + +447 +public + +funùiÚ + +isLa¡Page +() + +449  + g$this +-> + g·ge + =ð +$this +-> +Ï¡Page +; + +457 +public + +funùiÚ + +g‘P¬am‘”HÞd” +() + +459  + g$this +-> + g·¿m‘”HÞd” +; + +470 +public + +funùiÚ + +g‘P¬am‘” +( +$Çme +, +$deçuÉ + = +nuÎ +) + +472  +$this +-> +·¿m‘”HÞd” +-> +g‘ +( +$Çme +, +$deçuÉ +); + +482 +public + +funùiÚ + +hasP¬am‘” +( +$Çme +) + +484  + g$this +-> + g·¿m‘”HÞd” +-> +has +( +$Çme +); + +493 +public + +funùiÚ + +£tP¬am‘” +( +$Çme +, +$v®ue +) + +495 + g$this +-> + g·¿m‘”HÞd” +-> +£t +( +$Çme +, +$v®ue +); + +503 +´Ùeùed + +funùiÚ + +isI‹¿tÜIn™Ÿlized +() + +505  + gnuÎ + !=ð +$this +-> +»suÉs +; + +511 +´Ùeùed + +funùiÚ + +š™ŸlizeI‹¿tÜ +() + +513 + g$this +-> + g»suÉs + = +$this +-> +g‘ResuÉs +(); + +514 + g$this +-> + g»suÉsCouÁ” + = +couÁ +( +$this +-> +»suÉs +); + +520 +´Ùeùed + +funùiÚ + +»£tI‹¿tÜ +() + +522 + g$this +-> + g»suÉs + = +nuÎ +; + +523 + g$this +-> + g»suÉsCouÁ” + = 0; + +531 +public + +funùiÚ + +cu¼’t +() + +533 ià(! + g$this +-> +isI‹¿tÜIn™Ÿlized +()) + +535 + g$this +-> +š™ŸlizeI‹¿tÜ +(); + +538  +cu¼’t +( +$this +-> +»suÉs +); + +546 +public + +funùiÚ + +key +() + +548 ià(! + g$this +-> +isI‹¿tÜIn™Ÿlized +()) + +550 + g$this +-> +š™ŸlizeI‹¿tÜ +(); + +553  +key +( +$this +-> +»suÉs +); + +561 +public + +funùiÚ + +Ãxt +() + +563 ià(! + g$this +-> +isI‹¿tÜIn™Ÿlized +()) + +565 + g$this +-> +š™ŸlizeI‹¿tÜ +(); + +568 -- + g$this +-> + g»suÉsCouÁ” +; + +570  +Ãxt +( +$this +-> +»suÉs +); + +578 +public + +funùiÚ + +»wšd +() + +580 ià(! + g$this +-> +isI‹¿tÜIn™Ÿlized +()) + +582 + g$this +-> +š™ŸlizeI‹¿tÜ +(); + +585 + g$this +-> + g»suÉsCouÁ” + = +couÁ +( +$this +-> +»suÉs +); + +587  +»£t +( +$this +-> +»suÉs +); + +595 +public + +funùiÚ + +v®id +() + +597 ià(! + g$this +-> +isI‹¿tÜIn™Ÿlized +()) + +599 + g$this +-> +š™ŸlizeI‹¿tÜ +(); + +602  + g$this +-> + g»suÉsCouÁ” + > 0; + +610 +public + +funùiÚ + +couÁ +() + +612  + g$this +-> +g‘NbResuÉs +(); + + @lib/vendor/symfony/lib/autoload/sfAutoload.class.php + +1 +ov”rid’ +[ +$þass +] = +$·th +; + +88 +$this +-> +þas£s +[ +$þass +] = +$·th +; + +89 + } +} + +98 +public + +funùiÚ + + $g‘CÏssP©h +( +$þass +) + +100 +$þass + = + `¡¹Þow” +($class); + +102  + `is£t +( +$this +-> +þas£s +[ +$þass +]è? $this->þas£s[$þass] : +nuÎ +; + +103 + } +} + +112 +public + +funùiÚ + + $»lßdCÏs£s +( +$fÜû + = +çl£ +) + +115 ià( +£lf +:: +$äeshCache + && ! +$fÜû +) + +117  +çl£ +; + +120 +$cÚfigu¿tiÚ + = +sfProjeùCÚfigu¿tiÚ +:: + `g‘Aùive +(); + +121 ià(! +$cÚfigu¿tiÚ + || !$cÚfigu¿tiÚ +š¡ªûof + +sfAµliÿtiÚCÚfigu¿tiÚ +) + +123  +çl£ +; + +126 +£lf +:: +$äeshCache + = +Œue +; + +127 ià( + `fže_exi¡s +( +$cÚfigu¿tiÚ +-> + `g‘CÚfigCache +()-> + `g‘CacheName +('config/autoload.yml'))) + +129 +£lf +:: +$äeshCache + = +çl£ +; + +130 ià( +$fÜû +) + +132 + `uƚk +( +$cÚfigu¿tiÚ +-> + `g‘CÚfigCache +()-> + `g‘CacheName +('config/autoload.yml')); + +136 +$fže + = +$cÚfigu¿tiÚ +-> + `g‘CÚfigCache +()-> + `checkCÚfig +('config/autoload.yml'); + +138 +$this +-> +þas£s + = + `šþude +( +$fže +); + +140 + `fܗch + ( +$this +-> +ov”rid’ + +as + +$þass + => +$·th +) + +142 +$this +-> +þas£s +[ +$þass +] = +$·th +; + +145  +Œue +; + +146 + } +} + +155 +public + +funùiÚ + + $autÞßd +( +$þass +) + +158 ià(! +$this +-> +þas£s +) + +160 +£lf +:: + `»lßdCÏs£s +(); + +163  +£lf +:: + `lßdCÏss +( +$þass +); + +164 + } +} + +173 +public + +funùiÚ + + $lßdCÏss +( +$þass +) + +175 +$þass + = + `¡¹Þow” +($class); + +178 ià( + `þass_exi¡s +( +$þass +, +çl£ +è|| + `š‹rçû_exi¡s +($class, false)) + +180  +Œue +; + +184 ià( + `is£t +( +$this +-> +þas£s +[ +$þass +])) + +186 +Œy + + +188 +»quœe + +$this +-> +þas£s +[ +$þass +]; + +190 + `ÿtch + ( +sfExû±iÚ + +$e +) + +192 +$e +-> + `´štSckT¿û +(); + +194 + `ÿtch + ( +Exû±iÚ + +$e +) + +196 +sfExû±iÚ +:: + `ü—‹FromExû±iÚ +( +$e +)-> + `´štSckT¿û +(); + +199  +Œue +; + +204 +sfCڋxt +:: + `hasIn¡ªû +() + +206 ( +$moduË + = +sfCڋxt +:: + `g‘In¡ªû +()-> + `g‘ModuËName +()) + +208 + `is£t +( +$this +-> +þas£s +[ +$moduË +.'/'. +$þass +]) + +211 +Œy + + +213 +»quœe + +$this +-> +þas£s +[ +$moduË +.'/'. +$þass +]; + +215 + `ÿtch + ( +sfExû±iÚ + +$e +) + +217 +$e +-> + `´štSckT¿û +(); + +219 + `ÿtch + ( +Exû±iÚ + +$e +) + +221 +sfExû±iÚ +:: + `ü—‹FromExû±iÚ +( +$e +)-> + `´štSckT¿û +(); + +224  +Œue +; + +227  +çl£ +; + +228 + } +} + + @lib/vendor/symfony/lib/autoload/sfAutoloadAgain.class.php + +1 +»lßded +) + +62  +çl£ +; + +65 +$autÞßds + = + `¥l_autÞßd_funùiÚs +(); + +68 ià( + `v”siÚ_com·» +( +PHP_VERSION +, '5.2.11', '>=')) + +70 + `fܗch + ( +$autÞßds + +as + +$pos™iÚ + => +$autÞßd +) + +72 ià( +$this + ==ð +$autÞßd +[0]) + +80 +$pos™iÚ + = + `¬¿y_£¬ch +( + `¬¿y +( +__CLASS__ +, 'autÞßd'), +$autÞßds +, +Œue +); + +83 ià( + `is£t +( +$autÞßds +[ +$pos™iÚ + + 1])) + +85 +$this +-> + `uÄegi¡” +(); + +86 +$this +->(); + +89 + `¥l_autÞßd_ÿÎ +( +$þass +); + +91  + `þass_exi¡s +( +$þass +, +çl£ +è|| + `š‹rçû_exi¡s +($class, false); + +94 +$autÞßd + = +sfAutÞßd +:: + `g‘In¡ªû +(); + +95 +$autÞßd +-> + `»lßdCÏs£s +( +Œue +); + +97 +$this +-> +»lßded + = +Œue +; + +99  +$autÞßd +-> + `autÞßd +( +$þass +); + +100 + } +} + +107 +public + +funùiÚ + + $isRegi¡”ed +() + +109  +$this +-> +»gi¡”ed +; + +110 + } +} + +115 +public + +funùiÚ + () + +117 ià(! +$this +-> + `isRegi¡”ed +()) + +119 + `¥l_autÞßd_»gi¡” +( + `¬¿y +( +$this +, 'autoload')); + +120 +$this +-> +»gi¡”ed + = +Œue +; + +122 + } +} + +127 +public + +funùiÚ + + $uÄegi¡” +() + +129 + `¥l_autÞßd_uÄegi¡” +( + `¬¿y +( +$this +, 'autoload')); + +130 +$this +-> +»gi¡”ed + = +çl£ +; + +131 + } +} + + @lib/vendor/symfony/lib/autoload/sfCoreAutoload.class.php + +1 +ba£Dœ + = + `»®·th +( + `dœÇme +( +__FILE__ +).'/..'); + +47  +public + +funùiÚ + + $g‘In¡ªû +() + +49 ià(! + `is£t +( +£lf +:: +$š¡ªû +)) + +51 +£lf +:: +$š¡ªû + = +Ãw + + `sfCÜeAutÞßd +(); + +54  +£lf +:: +$š¡ªû +; + +55 + } +} + +62  +public + +funùiÚ + () + +64 ià( +£lf +:: +$»gi¡”ed +) + +69 + `ši_£t +('unserialize_callback_func', 'spl_autoload_call'); + +70 ià( +çl£ + ==ð + `¥l_autÞßd_»gi¡” +( + `¬¿y +( +£lf +:: + `g‘In¡ªû +(), 'autoload'))) + +72 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('UÇbˁػgi¡” %s::autÞßd‡ ª‡utÞßdšg m‘hod.', + `g‘_þass +( +£lf +:: + `g‘In¡ªû +()))); + +75 +£lf +:: +$»gi¡”ed + = +Œue +; + +76 + } +} + +83  +public + +funùiÚ + + $uÄegi¡” +() + +85 + `¥l_autÞßd_uÄegi¡” +( + `¬¿y +( +£lf +:: + `g‘In¡ªû +(), 'autoload')); + +86 +£lf +:: +$»gi¡”ed + = +çl£ +; + +87 + } +} + +96 +public + +funùiÚ + + $autÞßd +( +$þass +) + +98 ià( +$·th + = +$this +-> + `g‘CÏssP©h +( +$þass +)) + +100 +»quœe + +$·th +; + +102  +Œue +; + +105  +çl£ +; + +106 + } +} + +115 +public + +funùiÚ + + $g‘CÏssP©h +( +$þass +) + +117 +$þass + = + `¡¹Þow” +($class); + +119 ià(! + `is£t +( +$this +-> +þas£s +[ +$þass +])) + +121  +nuÎ +; + +124  +$this +-> +ba£Dœ +.'/'.$this-> +þas£s +[ +$þass +]; + +125 + } +} + +132 +public + +funùiÚ + + $g‘Ba£Dœ +() + +134  +$this +-> +ba£Dœ +; + +135 + } +} + +142  +public + +funùiÚ + + $make +() + +144 +$libDœ + = + `¡r_»¶aû +( +DIRECTORY_SEPARATOR +, '/', + `»®·th +( + `dœÇme +( +__FILE__ +).DIRECTORY_SEPARATOR.'..')); + +145 +»quœe_Úû + +$libDœ +.'/util/sfFinder.class.php'; + +147 +$fžes + = +sfFšd” +:: + `ty³ +('file') + +148 -> + `´uà +('plugins') + +149 -> + `´uà +('vendor') + +150 -> + `´uà +('skeleton') + +151 -> + `´uà +('default') + +152 -> + `´uà +('helper') + +153 -> + `Çme +('*.php') + +154 -> + `š +( +$libDœ +) + +157 + `sÜt +( +$fžes +, +SORT_STRING +); + +159 +$þas£s + = ''; + +160 + `fܗch + ( +$fžes + +as + +$fže +) + +162 +$fže + = + `¡r_»¶aû +( +DIRECTORY_SEPARATOR +, '/', $file); + +163 +$þass + = + `ba£Çme +( +$fže +, +çl£ + ==ð + `¡½os +($file, '.class.php') ? '.php' : '.class.php'); + +165 +$cڋÁs + = + `fže_g‘_cڋÁs +( +$fže +); + +166 ià( +çl£ + !=ð + `¡ros +( +$cڋÁs +, 'þas '. +$þass +) || false !== stripos($contents, 'interface '.$class)) + +168 +$þas£s + .ð + `¥rštf +(" '%s' => '%s',\n", + `¡¹Þow” +( +$þass +), + `sub¡r +( + `¡r_»¶aû +( +$libDœ +, '', +$fže +), 1)); + +172 +$cڋÁ + = + `´eg_»¶aû +('/´Ùeùed \$þas£ ð¬¿y *\(.*?\);/s', + `¥rštf +("´Ùeùed \$þas£ ð¬¿y(\n%  );", +$þas£s +), + `fže_g‘_cڋÁs +( +__FILE__ +)); + +174 + `fže_put_cڋÁs +( +__FILE__ +, +$cڋÁ +); + +175 + } +} + +179 +´Ùeùed + + g$þas£s + = +¬¿y +( + + @lib/vendor/symfony/lib/autoload/sfSimpleAutoload.class.php + +1 +ÿcheFže + = +$ÿcheFže +; + +44 +$this +-> + `lßdCache +(); + +54  +public + +funùiÚ + + $g‘In¡ªû +( +$ÿcheFže + = +nuÎ +) + +56 ià(! + `is£t +( +£lf +:: +$š¡ªû +)) + +58 +£lf +:: +$š¡ªû + = +Ãw + + `sfSim¶eAutÞßd +( +$ÿcheFže +); + +61  +£lf +:: +$š¡ªû +; + +62 + } +} + +69  +public + +funùiÚ + () + +71 ià( +£lf +:: +$»gi¡”ed +) + +76 + `ši_£t +('unserialize_callback_func', 'spl_autoload_call'); + +77 ià( +çl£ + ==ð + `¥l_autÞßd_»gi¡” +( + `¬¿y +( +£lf +:: + `g‘In¡ªû +(), 'autoload'))) + +79 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('UÇbˁػgi¡” %s::autÞßd‡ ª‡utÞßdšg m‘hod.', + `g‘_þass +( +£lf +:: + `g‘In¡ªû +()))); + +82 ià( +£lf +:: + `g‘In¡ªû +()-> +ÿcheFže +) + +84 + `»gi¡”_shutdown_funùiÚ +( + `¬¿y +( +£lf +:: + `g‘In¡ªû +(), 'saveCache')); + +87 +£lf +:: +$»gi¡”ed + = +Œue +; + +88 + } +} + +95  +public + +funùiÚ + + $uÄegi¡” +() + +97 + `¥l_autÞßd_uÄegi¡” +( + `¬¿y +( +£lf +:: + `g‘In¡ªû +(), 'autoload')); + +98 +£lf +:: +$»gi¡”ed + = +çl£ +; + +99 + } +} + +108 +public + +funùiÚ + + $autÞßd +( +$þass +) + +110 +$þass + = + `¡¹Þow” +($class); + +113 ià( + `þass_exi¡s +( +$þass +, +çl£ +è|| + `š‹rçû_exi¡s +($class, false)) + +115  +Œue +; + +119 ià( + `is£t +( +$this +-> +þas£s +[ +$þass +])) + +121 +Œy + + +123 +»quœe + +$this +-> +þas£s +[ +$þass +]; + +125 + `ÿtch + ( +sfExû±iÚ + +$e +) + +127 +$e +-> + `´štSckT¿û +(); + +129 + `ÿtch + ( +Exû±iÚ + +$e +) + +131 +sfExû±iÚ +:: + `ü—‹FromExû±iÚ +( +$e +)-> + `´štSckT¿û +(); + +134  +Œue +; + +137  +çl£ +; + +138 + } +} + +143 +public + +funùiÚ + + $lßdCache +() + +145 ià(! +$this +-> +ÿcheFže + || ! + `is_»adabË +($this->cacheFile)) + +150 + `li¡ +( +$this +-> +þas£s +, $this-> +dœs +, $this-> +fžes +èð + `un£rŸlize +( + `fže_g‘_cڋÁs +($this-> +ÿcheFže +)); + +152 +$this +-> +ÿcheLßded + = +Œue +; + +153 +$this +-> +ÿcheChªged + = +çl£ +; + +154 + } +} + +159 +public + +funùiÚ + + $§veCache +() + +161 ià( +$this +-> +ÿcheChªged +) + +163 ià( + `is_wr™abË +( + `dœÇme +( +$this +-> +ÿcheFže +))) + +165 + `fže_put_cڋÁs +( +$this +-> +ÿcheFže +, + `£rŸlize +( + `¬¿y +($this-> +þas£s +, $this-> +dœs +, $this-> +fžes +))); + +168 +$this +-> +ÿcheChªged + = +çl£ +; + +170 + } +} + +175 +public + +funùiÚ + + $»lßd +() + +177 +$this +-> +þas£s + = + `¬¿y +(); + +178 +$this +-> +ÿcheLßded + = +çl£ +; + +180 + `fܗch + ( +$this +-> +dœs + +as + +$dœ +) + +182 +$this +-> + `addDœeùÜy +( +$dœ +); + +185 + `fܗch + ( +$this +-> +fžes + +as + +$fže +) + +187 +$this +-> + `addFže +( +$fže +); + +190 + `fܗch + ( +$this +-> +ov”rid’ + +as + +$þass + => +$·th +) + +192 +$this +-> +þas£s +[ +$þass +] = +$·th +; + +195 +$this +-> +ÿcheLßded + = +Œue +; + +196 +$this +-> +ÿcheChªged + = +Œue +; + +197 + } +} + +202 +public + +funùiÚ + + $»moveCache +() + +204 @ + `uƚk +( +$this +-> +ÿcheFže +); + +205 + } +} + +213 +public + +funùiÚ + +addDœeùÜy +( +$dœ +, +$ext + = '.php') + +215 +$fšd” + = +sfFšd” +:: +ty³ +('fže')-> +fÞlow_lšk +()-> +Çme +('*'. +$ext +); + +217 ià( + g$dœs + = +glob +( +$dœ +)) + +219 +fܗch + ( +$dœs + +as + +$dœ +) + +221 ià( +çl£ + !=ð +$key + = +¬¿y_£¬ch +( +$dœ +, +$this +-> +dœs +)) + +223 +un£t +( +$this +-> +dœs +[ +$key +]); + +224 + g$this +-> + gdœs +[] = +$dœ +; + +226 ià( + g$this +-> + gÿcheLßded +) + +233 + g$this +-> + gdœs +[] = +$dœ +; + +236 + g$this +-> + gÿcheChªged + = +Œue +; + +237 + g$this +-> +addFžes +( +$fšd” +-> +š +( +$dœ +), +çl£ +); + +248 +public + +funùiÚ + + $addFžes +( +¬¿y + +$fžes +, +$»gi¡” + = +Œue +) + +250 + `fܗch + ( +$fžes + +as + +$fže +) + +252 +$this +-> + `addFže +( +$fže +, +$»gi¡” +); + +254 + } +} + +262 +public + +funùiÚ + + $addFže +( +$fže +, +$»gi¡” + = +Œue +) + +264 ià(! + `is_fže +( +$fže +)) + +269 ià( + `š_¬¿y +( +$fže +, +$this +-> +fžes +)) + +271 ià( +$this +-> +ÿcheLßded +) + +278 ià( +$»gi¡” +) + +280 +$this +-> +fžes +[] = +$fže +; + +284 ià( +$»gi¡” +) + +286 +$this +-> +ÿcheChªged + = +Œue +; + +289 + `´eg_m©ch_®l +('~^\s*(?:ab¡¿ù\s+|fš®\s+)?(?:þass|š‹rçû)\s+(\w+)~mi', + `fže_g‘_cڋÁs +( +$fže +), +$þas£s +); + +290 + `fܗch + ( +$þas£s +[1] +as + +$þass +) + +292 +$this +-> +þas£s +[ + `¡¹Þow” +( +$þass +)] = +$fže +; + +294 + } +} + +302 +public + +funùiÚ + + $£tCÏssP©h +( +$þass +, +$·th +) + +304 +$þass + = + `¡¹Þow” +($class); + +306 +$this +-> +ov”rid’ +[ +$þass +] = +$·th +; + +308 +$this +-> +þas£s +[ +$þass +] = +$·th +; + +309 + } +} + +318 +public + +funùiÚ + + $g‘CÏssP©h +( +$þass +) + +320 +$þass + = + `¡¹Þow” +($class); + +322  + `is£t +( +$this +-> +þas£s +[ +$þass +]è? $this->þas£s[$þass] : +nuÎ +; + +323 + } +} + +332 +public + +funùiÚ + + $lßdCÚfigu¿tiÚ +( +¬¿y + +$fžes +) + +334 +$cÚfig + = +Ãw + + `sfAutÞßdCÚfigHªdËr +(); + +335 + `fܗch + ( +$cÚfig +-> + `ev®u©e +( +$fžes +è +as + +$þass + => +$fže +) + +337 +$this +-> + `£tCÏssP©h +( +$þass +, +$fže +); + +339 + } +} + + @lib/vendor/symfony/lib/cache/sfAPCCache.class.php + +1 + `ãtch +($this-> + `g‘O±iÚ +('´efix'). +$key +, +$has +); + +46  +$has + ? +$v®ue + : +$deçuÉ +; + +47 + } +} + +52 +public + +funùiÚ + + $has +( +$key +) + +54 +$this +-> + `ãtch +($this-> + `g‘O±iÚ +('´efix'). +$key +, +$has +); + +55  +$has +; + +56 + } +} + +58 +´iv©e + +funùiÚ + + $ãtch +( +$key +, & +$sucûss +) + +60 +$has + = +nuÎ +; + +61 +$v®ue + = + `­c_ãtch +( +$key +, +$has +); + +63 ià( +nuÎ + !=ð +$has +) + +65 +$sucûss + = +$has +; + +69 +$sucûss + = +$v®ue + !=ð +çl£ +; + +71  +$v®ue +; + +72 + } +} + +78 +public + +funùiÚ + + $£t +( +$key +, +$d©a +, +$liãtime + = +nuÎ +) + +80  + `­c_¡Üe +( +$this +-> + `g‘O±iÚ +('´efix'). +$key +, +$d©a +, $this-> + `g‘Liãtime +( +$liãtime +)); + +81 + } +} + +86 +public + +funùiÚ + + $»move +( +$key +) + +88  + `­c_d–‘e +( +$this +-> + `g‘O±iÚ +('´efix'). +$key +); + +89 + } +} + +94 +public + +funùiÚ + +þ—n +( +$mode + = +sfCache +:: +ALL +) + +96 ià( +sfCache +:: +ALL + ==ð +$mode +) + +98  +­c_þ—r_ÿche +('user'); + +105 +public + +funùiÚ + + $g‘La¡Modif›d +( +$key +) + +107 ià( +$šfo + = +$this +-> + `g‘CacheInfo +( +$key +)) + +109  +$šfo +['ü—tiÚ_time'] + $šfo['‰l'] > + `time +() ? $info['mtime'] : 0; + +113 + } +} + +118 +public + +funùiÚ + + $g‘Timeout +( +$key +) + +120 ià( +$šfo + = +$this +-> + `g‘CacheInfo +( +$key +)) + +122  +$šfo +['ü—tiÚ_time'] + $šfo['‰l'] > + `time +() ? $info['creation_time'] + $info['ttl'] : 0; + +126 + } +} + +131 +public + +funùiÚ + + $»moveP©‹º +( +$·‰”n +) + +133 +$šfos + = + `­c_ÿche_šfo +('user'); + +134 ià(! + `is_¬¿y +( +$šfos +['cache_list'])) + +139 +$»gexp + = +£lf +:: + `·‰”nToRegexp +( +$this +-> + `g‘O±iÚ +('´efix'). +$·‰”n +); + +141 + `fܗch + ( +$šfos +['ÿche_li¡'] +as + +$šfo +) + +143 ià( + `´eg_m©ch +( +$»gexp +, +$šfo +['info'])) + +145 + `­c_d–‘e +( +$šfo +['info']); + +148 + } +} + +150 +´Ùeùed + +funùiÚ + + $g‘CacheInfo +( +$key +) + +152 +$šfos + = + `­c_ÿche_šfo +('user'); + +154 ià( + `is_¬¿y +( +$šfos +['cache_list'])) + +156 + `fܗch + ( +$šfos +['ÿche_li¡'] +as + +$šfo +) + +158 ià( +$this +-> + `g‘O±iÚ +('´efix'). +$key + =ð +$šfo +['info']) + +160  +$šfo +; + +165  +nuÎ +; + +166 + } +} + + @lib/vendor/symfony/lib/cache/sfCache.class.php + +1 + `š™Ÿlize +( +$ÝtiÚs +); + +55 +public + +funùiÚ + + `š™Ÿlize +( +$ÝtiÚs + = + $¬¿y +()) + +57 +$this +-> +ÝtiÚs + = + `¬¿y_m”ge +( + `¬¿y +( + +60 '´efix' => + `md5 +( + `dœÇme +( +__FILE__ +)), + +61 ), +$ÝtiÚs +); + +63 +$this +-> +ÝtiÚs +['´efix'] .ð +£lf +:: +SEPARATOR +; + +64 + } +} + +74 +ab¡¿ù + +public + +funùiÚ + +g‘ +( +$key +, +$deçuÉ + = +nuÎ +); + +83 +ab¡¿ù + +public + +funùiÚ + +has +( +$key +); + +94 +ab¡¿ù + +public + +funùiÚ + +£t +( +$key +, +$d©a +, +$liãtime + = +nuÎ +); + +103 +ab¡¿ù + +public + +funùiÚ + +»move +( +$key +); + +114 +ab¡¿ù + +public + +funùiÚ + +»moveP©‹º +( +$·‰”n +); + +125 +ab¡¿ù + +public + +funùiÚ + +þ—n +( +$mode + = +£lf +:: +ALL +); + +134 +ab¡¿ù + +public + +funùiÚ + +g‘Timeout +( +$key +); + +143 +ab¡¿ù + +public + +funùiÚ + +g‘La¡Modif›d +( +$key +); + +152 +public + +funùiÚ + + $g‘Mªy +( +$keys +) + +154 +$d©a + = + `¬¿y +(); + +155 + `fܗch + ( +$keys + +as + +$key +) + +157 +$d©a +[ +$key +] = +$this +-> + `g‘ +($key); + +160  +$d©a +; + +161 + } +} + +170 +public + +funùiÚ + + $g‘Liãtime +( +$liãtime +) + +172  +nuÎ + ==ð +$liãtime + ? +$this +-> + `g‘O±iÚ +('lifetime') : $lifetime; + +173 + } +} + +180 +public + +funùiÚ + + $g‘Back’d +() + +182 +throw + +Ãw + + `sfExû±iÚ +('This cache class does‚ot have‡ backend object.'); + +183 + } +} + +193 +public + +funùiÚ + + $g‘O±iÚ +( +$Çme +, +$deçuÉ + = +nuÎ +) + +195  + `is£t +( +$this +-> +ÝtiÚs +[ +$Çme +]è? $this->ÝtiÚs[$Çme] : +$deçuÉ +; + +196 + } +} + +204 +public + +funùiÚ + + $£tO±iÚ +( +$Çme +, +$v®ue +) + +206  +$this +-> +ÝtiÚs +[ +$Çme +] = +$v®ue +; + +207 + } +} + +221 +´Ùeùed + +funùiÚ + + $·‰”nToRegexp +( +$·‰”n +) + +223 +$»gexp + = + `¡r_»¶aû +( + +224 + `¬¿y +('\\*\\*', '\\*'), + +225 + `¬¿y +('.+?', '[^'. + `´eg_quÙe +( +sfCache +:: +SEPARATOR +, '#').']+'), + +226 + `´eg_quÙe +( +$·‰”n +, '#') + +229  '#^'. +$»gexp +.'$#'; + +230 + } +} + + @lib/vendor/symfony/lib/cache/sfEAcceleratorCache.class.php + +1 + `g‘O±iÚ +('´efix'). +$key +); + +47  +nuÎ + ==ð +$v®ue + ? +$deçuÉ + : $value; + +48 + } +} + +53 +public + +funùiÚ + + $has +( +$key +) + +55  +nuÎ + !=ð + `—cûË¿tÜ_g‘ +( +$this +-> + `g‘O±iÚ +('´efix'. +$key +)); + +56 + } +} + +61 +public + +funùiÚ + + $£t +( +$key +, +$d©a +, +$liãtime + = +nuÎ +) + +63  + `—cûË¿tÜ_put +( +$this +-> + `g‘O±iÚ +('´efix'). +$key +, +$d©a +, $this-> + `g‘Liãtime +( +$liãtime +)); + +64 + } +} + +69 +public + +funùiÚ + + $»move +( +$key +) + +71  + `—cûË¿tÜ_rm +( +$this +-> + `g‘O±iÚ +('´efix'). +$key +); + +72 + } +} + +77 +public + +funùiÚ + + $»moveP©‹º +( +$·‰”n +) + +79 +$šfos + = + `—cûË¿tÜ_li¡_keys +(); + +81 ià( + `is_¬¿y +( +$šfos +)) + +83 +$»gexp + = +£lf +:: + `·‰”nToRegexp +( +$this +-> + `g‘O±iÚ +('´efix'). +$·‰”n +); + +85 + `fܗch + ( +$šfos + +as + +$šfo +) + +87 ià( + `´eg_m©ch +( +$»gexp +, +$šfo +['name'])) + +89 + `—cûË¿tÜ_rm +( +$this +-> + `g‘O±iÚ +('´efix'). +$key +); + +93 + } +} + +98 +public + +funùiÚ + +þ—n +( +$mode + = +sfCache +:: +ALL +) + +100 ià( +sfCache +:: +OLD + ==ð +$mode +) + +102  +—cûË¿tÜ_gc +(); + +105 + g$šfos + = +—cûË¿tÜ_li¡_keys +(); + +106 ià( +is_¬¿y +( +$šfos +)) + +108 +fܗch + ( +$šfos + +as + +$šfo +) + +110 ià( + gçl£ + !=ð +¡½os +( +$šfo +['Çme'], +$this +-> +g‘O±iÚ +('prefix'))) + +113 + g$key + = 0 ==ð +¡½os +( +$šfo +['Çme'], ':'è? +sub¡r +($info['name'], 1) : $info['name']; + +114 ià(! +—cûË¿tÜ_rm +( +$key +)) + +116  + gçl£ +; + +122  + gŒue +; + +128 +public + +funùiÚ + + $g‘La¡Modif›d +( +$key +) + +130 ià( +$šfo + = +$this +-> + `g‘CacheInfo +( +$key +)) + +132  +$šfo +['created']; + +136 + } +} + +141 +public + +funùiÚ + + $g‘Timeout +( +$key +) + +143 ià( +$šfo + = +$this +-> + `g‘CacheInfo +( +$key +)) + +145  -1 =ð +$šfo +['ttl'] ? 0 : $info['created'] + $info['ttl']; + +149 + } +} + +151 +´Ùeùed + +funùiÚ + + $g‘CacheInfo +( +$key +) + +153 +$šfos + = + `—cûË¿tÜ_li¡_keys +(); + +155 ià( + `is_¬¿y +( +$šfos +)) + +157 + `fܗch + ( +$šfos + +as + +$šfo +) + +159 ià( +$this +-> + `g‘O±iÚ +('´efix'). +$key + =ð +$šfo +['name']) + +161  +$šfo +; + +166  +nuÎ +; + +167 + } +} + + @lib/vendor/symfony/lib/cache/sfFileCache.class.php + +1 + `g‘O±iÚ +('cache_dir')) + +44 +throw + +Ãw + + `sfIn™Ÿliz©iÚExû±iÚ +('You must…ass‡ "cache_dir" optiono initialize‡ sfFileCache object.'); + +47 +$this +-> + `£tÿche_dœ +($this-> + `g‘O±iÚ +('cache_dir')); + +53 +public + +funùiÚ + + $g‘ +( +$key +, +$deçuÉ + = +nuÎ +) + +55 +$fže_·th + = +$this +-> + `g‘FžeP©h +( +$key +); + +56 ià(! + `fže_exi¡s +( +$fže_·th +)) + +58  +$deçuÉ +; + +61 +$d©a + = +$this +-> + `»ad +( +$fže_·th +, +£lf +:: +READ_DATA +); + +63 ià( +$d©a +[ +£lf +:: +READ_DATA +] ==ð +nuÎ +) + +65  +$deçuÉ +; + +68  +$d©a +[ +£lf +:: +READ_DATA +]; + +69 + } +} + +74 +public + +funùiÚ + + $has +( +$key +) + +76 +$·th + = +$this +-> + `g‘FžeP©h +( +$key +); + +77  + `fže_exi¡s +( +$·th +è&& +$this +-> + `isV®id +($path); + +78 + } +} + +83 +public + +funùiÚ + + $£t +( +$key +, +$d©a +, +$liãtime + = +nuÎ +) + +85 ià( +$this +-> + `g‘O±iÚ +('autom©ic_þ—nšg_çùÜ'è> 0 && + `¿nd +(1, $this->getOption('automatic_cleaning_factor')) == 1) + +87 +$this +-> + `þ—n +( +sfCache +:: +OLD +); + +90  +$this +-> + `wr™e +($this-> + `g‘FžeP©h +( +$key +), +$d©a +, + `time +(è+ $this-> + `g‘Liãtime +( +$liãtime +)); + +91 + } +} + +96 +public + +funùiÚ + + $»move +( +$key +) + +98  @ + `uƚk +( +$this +-> + `g‘FžeP©h +( +$key +)); + +99 + } +} + +104 +public + +funùiÚ + + $»moveP©‹º +( +$·‰”n +) + +106 ià( +çl£ + !=ð + `¡½os +( +$·‰”n +, '**')) + +108 +$·‰”n + = + `¡r_»¶aû +( +sfCache +:: +SEPARATOR +, +DIRECTORY_SEPARATOR +, $·‰”n). +£lf +:: +EXTENSION +; + +110 +$»gexp + = +£lf +:: + `·‰”nToRegexp +( +$·‰”n +); + +111 +$·ths + = + `¬¿y +(); + +112 + `fܗch + ( +Ãw + + `RecursiveI‹¿tÜI‹¿tÜ +Òew + `RecursiveDœeùÜyI‹¿tÜ +( +$this +-> + `g‘O±iÚ +('ÿche_dœ'))è +as + +$·th +) + +114 ià( + `´eg_m©ch +( +$»gexp +, + `¡r_»¶aû +( +$this +-> + `g‘O±iÚ +('ÿche_dœ'). +DIRECTORY_SEPARATOR +, '', +$·th +))) + +116 +$·ths +[] = +$·th +; + +122 +$·ths + = + `glob +( +$this +-> + `g‘O±iÚ +('ÿche_dœ'). +DIRECTORY_SEPARATOR +. + `¡r_»¶aû +( +sfCache +:: +SEPARATOR +, DIRECTORY_SEPARATOR, +$·‰”n +). +£lf +:: +EXTENSION +); + +125 + `fܗch + ( +$·ths + +as + +$·th +) + +127 ià( + `is_dœ +( +$·th +)) + +129 +sfToÞk™ +:: + `þ—rDœeùÜy +( +$·th +); + +133 @ + `uƚk +( +$·th +); + +136 + } +} + +141 +public + +funùiÚ + +þ—n +( +$mode + = +sfCache +:: +ALL +) + +143 ià(! +is_dœ +( +$this +-> +g‘O±iÚ +('cache_dir'))) + +145  +Œue +; + +148 + g$»suÉ + = +Œue +; + +149 +fܗch + ( +Ãw + +RecursiveI‹¿tÜI‹¿tÜ +Òew +RecursiveDœeùÜyI‹¿tÜ +( +$this +-> +g‘O±iÚ +('ÿche_dœ'))è +as + +$fže +) + +151 ià( + gsfCache +:: +ALL + =ð +$mode + || ! +$this +-> +isV®id +( +$fže +)) + +153 +$»suÉ + = @ +uƚk +( +$fže +) && $result; + +157  + g$»suÉ +; + +163 +public + +funùiÚ + + $g‘Timeout +( +$key +) + +165 +$·th + = +$this +-> + `g‘FžeP©h +( +$key +); + +167 ià(! + `fže_exi¡s +( +$·th +)) + +172 +$d©a + = +$this +-> + `»ad +( +$·th +, +£lf +:: +READ_TIMEOUT +); + +174  +$d©a +[ +£lf +:: +READ_TIMEOUT +] < + `time +() ? 0 : $data[self::READ_TIMEOUT]; + +175 + } +} + +180 +public + +funùiÚ + + $g‘La¡Modif›d +( +$key +) + +182 +$·th + = +$this +-> + `g‘FžeP©h +( +$key +); + +184 ià(! + `fže_exi¡s +( +$·th +)) + +189 +$d©a + = +$this +-> + `»ad +( +$·th +, +£lf +:: +READ_TIMEOUT + | s–f:: +READ_LAST_MODIFIED +); + +191 ià( +$d©a +[ +£lf +:: +READ_TIMEOUT +] < + `time +()) + +195  +$d©a +[ +£lf +:: +READ_LAST_MODIFIED +]; + +196 + } +} + +198 +´Ùeùed + +funùiÚ + + $isV®id +( +$·th +) + +200 +$d©a + = +$this +-> + `»ad +( +$·th +, +£lf +:: +READ_TIMEOUT +); + +201  + `time +(è< +$d©a +[ +£lf +:: +READ_TIMEOUT +]; + +202 + } +} + +211 +´Ùeùed + +funùiÚ + + $g‘FžeP©h +( +$key +) + +213  +$this +-> + `g‘O±iÚ +('ÿche_dœ'). +DIRECTORY_SEPARATOR +. + `¡r_»¶aû +( +sfCache +:: +SEPARATOR +, DIRECTORY_SEPARATOR, +$key +). +£lf +:: +EXTENSION +; + +214 + } +} + +229 +´Ùeùed + +funùiÚ + +»ad +( +$·th +, +$ty³ + = +£lf +:: +READ_DATA +) + +231 ià(! +$å + = @ +fݒ +( +$·th +, 'rb')) + +233 +throw + +Ãw + +sfCacheExû±iÚ +( +¥rštf +('UÇbˁػad cachfž"%s".', +$·th +)); + +236 @ +æock +( +$å +, +LOCK_SH +); + +237 + g$d©a +[ +£lf +:: +READ_TIMEOUT +] = +štv® +(@ +¡»am_g‘_cڋÁs +( +$å +, 12, 0)); + +238 ià( + g$ty³ + !ð +£lf +:: +READ_TIMEOUT + && +time +(è< +$d©a +[self::READ_TIMEOUT]) + +240 ià( +$ty³ + & +£lf +:: +READ_LAST_MODIFIED +) + +242 +$d©a +[ +£lf +:: +READ_LAST_MODIFIED +] = +štv® +(@ +¡»am_g‘_cڋÁs +( +$å +, 12, 12)); + +244 ià( + g$ty³ + & + g£lf +:: +READ_DATA +) + +246 +f£ek +( +$å +, 0, +SEEK_END +); + +247 + g$Ëngth + = +á–l +( +$å +) - 24; + +248 +f£ek +( +$å +, 24); + +249 + g$d©a +[ +£lf +:: +READ_DATA +] = @ +ä—d +( +$å +, +$Ëngth +); + +254 + g$d©a +[ +£lf +:: +READ_LAST_MODIFIED +] = +nuÎ +; + +255 + g$d©a +[ +£lf +:: +READ_DATA +] = +nuÎ +; + +257 @ +æock +( +$å +, +LOCK_UN +); + +258 @ +fþo£ +( +$å +); + +260  + g$d©a +; + +274 +´Ùeùed + +funùiÚ + + $wr™e +( +$·th +, +$d©a +, +$timeout +) + +276 +$cu¼’t_umask + = + `umask +(); + +277 + `umask +(0000); + +279 ià(! + `is_dœ +( + `dœÇme +( +$·th +))) + +282 + `mkdœ +( + `dœÇme +( +$·th +), 0777, +Œue +); + +285 +$tmpFže + = + `‹m²am +( + `dœÇme +( +$·th +), + `ba£Çme +($path)); + +287 ià(! +$å + = @ + `fݒ +( +$tmpFže +, 'wb')) + +289 +throw + +Ãw + + `sfCacheExû±iÚ +( + `¥rštf +('UÇbˁØwr™ÿchfž"%s".', +$tmpFže +)); + +292 @ + `fwr™e +( +$å +, + `¡r_·d +( +$timeout +, 12, 0, +STR_PAD_LEFT +)); + +293 @ + `fwr™e +( +$å +, + `¡r_·d +( + `time +(), 12, 0, +STR_PAD_LEFT +)); + +294 @ + `fwr™e +( +$å +, +$d©a +); + +295 @ + `fþo£ +( +$å +); + +300 ià(!@ + `»Çme +( +$tmpFže +, +$·th +)) + +302 ià( + `cÝy +( +$tmpFže +, +$·th +)) + +304 + `uƚk +( +$tmpFže +); + +308 + `chmod +( +$·th +, 0666); + +309 + `umask +( +$cu¼’t_umask +); + +311  +Œue +; + +312 + } +} + +319 +´Ùeùed + +funùiÚ + + $£tÿche_dœ +( +$ÿche_dœ +) + +322 ià( +DIRECTORY_SEPARATOR + =ð + `sub¡r +( +$ÿche_dœ +, -1)) + +324 +$ÿche_dœ + = + `sub¡r +($cache_dir, 0, -1); + +328 ià(! + `is_dœ +( +$ÿche_dœ +)) + +330 +$cu¼’t_umask + = + `umask +(0000); + +331 @ + `mkdœ +( +$ÿche_dœ +, 0777, +Œue +); + +332 + `umask +( +$cu¼’t_umask +); + +334 + } +} + + @lib/vendor/symfony/lib/cache/sfFunctionCache.class.php + +1 +ÿche + = +$ÿche +; + +48 +public + +funùiÚ + + `ÿÎ +( +$ÿÎabË +, +$¬gum’ts + = + $¬¿y +()) + +51 +$key + = +$this +-> + `compu‹CacheKey +( +$ÿÎabË +, +$¬gum’ts +); + +53 +$£rŸlized + = +$this +-> +ÿche +-> + `g‘ +( +$key +); + +54 ià( +$£rŸlized + !=ð +nuÎ +) + +56 +$d©a + = + `un£rŸlize +( +$£rŸlized +); + +60 +$d©a + = + `¬¿y +(); + +62 ià(! + `is_ÿÎabË +( +$ÿÎabË +)) + +64 +throw + +Ãw + + `sfExû±iÚ +('The first‡rgumento call() must be‡ valid callable.'); + +67 + `ob_¡¬t +(); + +68 + `ob_im¶ic™_æush +( +çl£ +); + +70 +Œy + + +72 +$d©a +['»suÉ'] = + `ÿÎ_u£r_func_¬¿y +( +$ÿÎabË +, +$¬gum’ts +); + +74 + `ÿtch + ( +Exû±iÚ + +$e +) + +76 + `ob_’d_þ—n +(); + +77 +throw + +$e +; + +80 +$d©a +['ouut'] = + `ob_g‘_þ—n +(); + +82 +$this +-> +ÿche +-> + `£t +( +$key +, + `£rŸlize +( +$d©a +)); + +85 +echo + +$d©a +['output']; + +87  +$d©a +['result']; + +88 + } +} + +95 +public + +funùiÚ + + $g‘Cache +() + +97  +$this +-> +ÿche +; + +98 + } +} + +108 +public + +funùiÚ + +compu‹CacheKey +( +$ÿÎabË +, +$¬gum’ts + = + $¬¿y +()) + +110  + `md5 +( + `£rŸlize +( +$ÿÎabË +).£rŸlize( +$¬gum’ts +)); + +111 + } +} + + @lib/vendor/symfony/lib/cache/sfMemcacheCache.class.php + +1 + `g‘O±iÚ +('memcache')) + +52 +$this +-> +memÿche + = $this-> + `g‘O±iÚ +('memcache'); + +56 +$this +-> +memÿche + = +Ãw + + `Memÿche +(); + +58 ià( +$this +-> + `g‘O±iÚ +('servers')) + +60 + `fܗch + ( +$this +-> + `g‘O±iÚ +('£rv”s'è +as + +$£rv” +) + +62 +$pÜt + = + `is£t +( +$£rv” +['port']) ? $server['port'] : 11211; + +63 ià(! +$this +-> +memÿche +-> + `addS”v” +( +$£rv” +['ho¡'], +$pÜt +, + `is£t +($£rv”['³rsi¡’t']è? $£rv”['³rsi¡’t'] : +Œue +)) + +65 +throw + +Ãw + + `sfIn™Ÿliz©iÚExû±iÚ +( + `¥rštf +('UÇbˁØcÚÃùØthmemÿch£rv” (%s:%s).', +$£rv” +['ho¡'], +$pÜt +)); + +71 +$m‘hod + = +$this +-> + `g‘O±iÚ +('³rsi¡’t', +Œue +) ? 'pconnect' : 'connect'; + +72 ià(! +$this +-> +memÿche +-> + `$m‘hod +($this-> + `g‘O±iÚ +('host', 'localhost'), $this->getOption('port', 11211), $this->getOption('timeout', 1))) + +74 +throw + +Ãw + + `sfIn™Ÿliz©iÚExû±iÚ +( + `¥rštf +('UÇbˁØcÚÃùØthmemÿch£rv” (%s:%s).', +$this +-> + `g‘O±iÚ +('host', 'localhost'), $this->getOption('port', 11211))); + +83 +public + +funùiÚ + + $g‘Back’d +() + +85  +$this +-> +memÿche +; + +86 + } +} + +91 +public + +funùiÚ + + $g‘ +( +$key +, +$deçuÉ + = +nuÎ +) + +93 +$v®ue + = +$this +-> +memÿche +-> + `g‘ +($this-> + `g‘O±iÚ +('´efix'). +$key +); + +95  +çl£ + ==ð +$v®ue + ? +$deçuÉ + : $value; + +96 + } +} + +101 +public + +funùiÚ + + $has +( +$key +) + +103  !( +çl£ + ==ð +$this +-> +memÿche +-> + `g‘ +($this-> + `g‘O±iÚ +('´efix'). +$key +)); + +104 + } +} + +109 +public + +funùiÚ + + $£t +( +$key +, +$d©a +, +$liãtime + = +nuÎ +) + +111 +$liãtime + = +nuÎ + ==ð$liãtim? +$this +-> + `g‘O±iÚ +('lifetime') : $lifetime; + +114 +$this +-> + `£tM‘ad©a +( +$key +, +$liãtime +); + +117 ià( +$this +-> + `g‘O±iÚ +('¡ÜeCacheInfo', +çl£ +)) + +119 +$this +-> + `£tCacheInfo +( +$key +); + +122 ià( +çl£ + !=ð +$this +-> +memÿche +-> + `»¶aû +($this-> + `g‘O±iÚ +('´efix'). +$key +, +$d©a +, f®£, + `time +(è+ +$liãtime +)) + +124  +Œue +; + +127  +$this +-> +memÿche +-> + `£t +($this-> + `g‘O±iÚ +('´efix'). +$key +, +$d©a +, +çl£ +, + `time +(è+ +$liãtime +); + +128 + } +} + +133 +public + +funùiÚ + + $»move +( +$key +) + +136 +$this +-> +memÿche +-> + `d–‘e +($this-> + `g‘O±iÚ +('´efix').'_m‘ad©a'. +£lf +:: +SEPARATOR +. +$key +, 0); + +137 ià( +$this +-> + `g‘O±iÚ +('¡ÜeCacheInfo', +çl£ +)) + +139 +$this +-> + `£tCacheInfo +( +$key +, +Œue +); + +141  +$this +-> +memÿche +-> + `d–‘e +($this-> + `g‘O±iÚ +('´efix'). +$key +, 0); + +142 + } +} + +147 +public + +funùiÚ + +þ—n +( +$mode + = +sfCache +:: +ALL +) + +149 ià( +sfCache +:: +ALL + ==ð +$mode +) + +151  +$this +-> +memÿche +-> +æush +(); + +158 +public + +funùiÚ + + $g‘La¡Modif›d +( +$key +) + +160 ià( +çl£ + ==ð( +$»tv® + = +$this +-> + `g‘M‘ad©a +( +$key +))) + +165  +$»tv® +['lastModified']; + +166 + } +} + +171 +public + +funùiÚ + + $g‘Timeout +( +$key +) + +173 ià( +çl£ + ==ð( +$»tv® + = +$this +-> + `g‘M‘ad©a +( +$key +))) + +178  +$»tv® +['timeout']; + +179 + } +} + +184 +public + +funùiÚ + + $»moveP©‹º +( +$·‰”n +) + +186 ià(! +$this +-> + `g‘O±iÚ +('¡ÜeCacheInfo', +çl£ +)) + +188 +throw + +Ãw + + `sfCacheExû±iÚ +('To usehe "removePattern" method, you must sethe "storeCacheInfo" optiono "true".'); + +191 +$»gexp + = +£lf +:: + `·‰”nToRegexp +( +$this +-> + `g‘O±iÚ +('´efix'). +$·‰”n +); + +192 + `fܗch + ( +$this +-> + `g‘CacheInfo +(è +as + +$key +) + +194 ià( + `´eg_m©ch +( +$»gexp +, +$key +)) + +196 +$this +-> + `»move +( + `sub¡r +( +$key +, + `¡¾’ +($this-> + `g‘O±iÚ +('prefix')))); + +199 + } +} + +204 +public + +funùiÚ + + $g‘Mªy +( +$keys +) + +206 +$v®ues + = + `¬¿y +(); + +207 + `fܗch + ( +$this +-> +memÿche +-> + `g‘ +( + `¬¿y_m­ +( + `ü—‹_funùiÚ +('$k', '»tuº "'.$this-> + `g‘O±iÚ +('´efix').'".$k;'), +$keys +)è +as + +$key + => +$v®ue +) + +209 +$v®ues +[ + `¡r_»¶aû +( +$this +-> + `g‘O±iÚ +('´efix'), '', +$key +)] = +$v®ue +; + +212  +$v®ues +; + +213 + } +} + +222 +´Ùeùed + +funùiÚ + + $g‘M‘ad©a +( +$key +) + +224  +$this +-> +memÿche +-> + `g‘ +($this-> + `g‘O±iÚ +('´efix').'_m‘ad©a'. +£lf +:: +SEPARATOR +. +$key +); + +225 + } +} + +233 +´Ùeùed + +funùiÚ + + $£tM‘ad©a +( +$key +, +$liãtime +) + +235 +$this +-> +memÿche +-> + `£t +($this-> + `g‘O±iÚ +('´efix').'_m‘ad©a'. +£lf +:: +SEPARATOR +. +$key +, + `¬¿y +('Ï¡Modif›d' => + `time +(), 'timeout' =>ime(è+ +$liãtime +), +çl£ +, $lifetime); + +236 + } +} + +244 +´Ùeùed + +funùiÚ + + $£tCacheInfo +( +$key +, +$d–‘e + = +çl£ +) + +246 +$keys + = +$this +-> +memÿche +-> + `g‘ +($this-> + `g‘O±iÚ +('prefix').'_metadata'); + +247 ià(! + `is_¬¿y +( +$keys +)) + +249 +$keys + = + `¬¿y +(); + +252 ià( +$d–‘e +) + +254 ià(( +$k + = + `¬¿y_£¬ch +( +$this +-> + `g‘O±iÚ +('´efix'). +$key +, +$keys +)è!=ð +çl£ +) + +256 + `un£t +( +$keys +[ +$k +]); + +261 ià(! + `š_¬¿y +( +$this +-> + `g‘O±iÚ +('´efix'). +$key +, +$keys +)) + +263 +$keys +[] = +$this +-> + `g‘O±iÚ +('´efix'). +$key +; + +267 +$this +-> +memÿche +-> + `£t +($this-> + `g‘O±iÚ +('´efix').'_m‘ad©a', +$keys +, 0); + +268 + } +} + +273 +´Ùeùed + +funùiÚ + + $g‘CacheInfo +() + +275 +$keys + = +$this +-> +memÿche +-> + `g‘ +($this-> + `g‘O±iÚ +('prefix').'_metadata'); + +276 ià(! + `is_¬¿y +( +$keys +)) + +278  + `¬¿y +(); + +281  +$keys +; + +282 + } +} + + @lib/vendor/symfony/lib/cache/sfNoCache.class.php + +1 + `g‘O±iÚ +('database')) + +47 +throw + +Ãw + + `sfIn™Ÿliz©iÚExû±iÚ +('You must…ass‡ "database" optiono initialize‡ sfSQLiteCache object.'); + +50 +$this +-> + `£tD©aba£ +($this-> + `g‘O±iÚ +('database')); + +56 +public + +funùiÚ + + $g‘Back’d +() + +58  +$this +-> +dbh +; + +59 + } +} + +64 +public + +funùiÚ + + $g‘ +( +$key +, +$deçuÉ + = +nuÎ +) + +66 +$d©a + = +$this +-> +dbh +-> + `sšgËQu”y +( + `¥rštf +("SELECT d©¨FROM cachWHERE key = '%s' ANDimeouˆ> %d", + `sql™e_esÿ³_¡ršg +( +$key +), + `time +())); + +68  +nuÎ + ==ð +$d©a + ? +$deçuÉ + : $data; + +69 + } +} + +74 +public + +funùiÚ + + $has +( +$key +) + +76  ( +boޗn +è +$this +-> +dbh +-> + `qu”y +( + `¥rštf +("SELECT key FROM cachWHERE key = '%s' ANDimeouˆ> %d", + `sql™e_esÿ³_¡ršg +( +$key +), + `time +()))-> + `numRows +(); + +77 + } +} + +82 +public + +funùiÚ + + $£t +( +$key +, +$d©a +, +$liãtime + = +nuÎ +) + +84 ià( +$this +-> + `g‘O±iÚ +('autom©ic_þ—nšg_çùÜ'è> 0 && + `¿nd +(1, $this->getOption('automatic_cleaning_factor')) == 1) + +86 +$this +-> + `þ—n +( +sfCache +:: +OLD +); + +89  ( +boޗn +è +$this +-> +dbh +-> + `qu”y +( + `¥rštf +("INSERT OR REPLACE INTO cach(key, d©a,imeout,†a¡_modif›dèVALUES ('%s', '%s', %d, %d)", + `sql™e_esÿ³_¡ršg +( +$key +), sql™e_esÿ³_¡ršg( +$d©a +), + `time +(è+ $this-> + `g‘Liãtime +( +$liãtime +),ime())); + +90 + } +} + +95 +public + +funùiÚ + + $»move +( +$key +) + +97  ( +boޗn +è +$this +-> +dbh +-> + `qu”y +( + `¥rštf +("DELETE FROM cachWHERE key = '%s'", + `sql™e_esÿ³_¡ršg +( +$key +))); + +98 + } +} + +103 +public + +funùiÚ + + $»moveP©‹º +( +$·‰”n +) + +105  ( +boޗn +è +$this +-> +dbh +-> + `qu”y +( + `¥rštf +("DELETE FROM cachWHERE REGEXP('%s', key)", + `sql™e_esÿ³_¡ršg +( +£lf +:: + `·‰”nToRegexp +( +$·‰”n +)))); + +106 + } +} + +111 +public + +funùiÚ + +þ—n +( +$mode + = +sfCache +:: +ALL +) + +113  ( +boޗn +è +$this +-> +dbh +-> +qu”y +("DELETE FROM cache".( +sfCache +:: +OLD + =ð +$mode + ? +¥rštf +(" WHEREimeouˆ< '%s'", +time +()è: ''))-> +numRows +(); + +119 +public + +funùiÚ + + $g‘Timeout +( +$key +) + +121 +$rs + = +$this +-> +dbh +-> + `qu”y +( + `¥rštf +("SELECTimeouˆFROM cachWHERE key = '%s' ANDimeouˆ> %d", + `sql™e_esÿ³_¡ršg +( +$key +), + `time +())); + +123  +$rs +-> + `numRows +(è? + `štv® +($rs-> + `ãtchSšgË +()) : 0; + +124 + } +} + +129 +public + +funùiÚ + + $g‘La¡Modif›d +( +$key +) + +131 +$rs + = +$this +-> +dbh +-> + `qu”y +( + `¥rštf +("SELECT†a¡_modif›d FROM cachWHERE key = '%s' ANDimeouˆ> %d", + `sql™e_esÿ³_¡ršg +( +$key +), + `time +())); + +133  +$rs +-> + `numRows +(è? + `štv® +($rs-> + `ãtchSšgË +()) : 0; + +134 + } +} + +141 +´Ùeùed + +funùiÚ + + $£tD©aba£ +( +$d©aba£ +) + +143 +$this +-> +d©aba£ + = +$d©aba£ +; + +145 +$Ãw + = +çl£ +; + +146 ià(':memÜy:' =ð +$d©aba£ +) + +148 +$Ãw + = +Œue +; + +150 ià(! + `is_fže +( +$d©aba£ +)) + +152 +$Ãw + = +Œue +; + +155 +$dœ + = + `dœÇme +( +$d©aba£ +); + +156 +$cu¼’t_umask + = + `umask +(0000); + +157 ià(! + `is_dœ +( +$dœ +)) + +159 @ + `mkdœ +( +$dœ +, 0777, +Œue +); + +162 + `touch +( +$d©aba£ +); + +163 + `umask +( +$cu¼’t_umask +); + +166 ià(! +$this +-> +dbh + = +Ãw + + `SQL™eD©aba£ +($this-> +d©aba£ +, 0644, +$”rmsg +)) + +168 +throw + +Ãw + + `sfCacheExû±iÚ +( + `¥rštf +('UÇbˁØcÚÃùØSQL™d©aba£: %s.', +$”rmsg +)); + +171 +$this +-> +dbh +-> + `ü—‹FunùiÚ +('»gexp', + `¬¿y +($this, 'removePatternRegexpCallback'), 2); + +173 ià( +$Ãw +) + +175 +$this +-> + `ü—‹Schema +(); + +177 + } +} + +182 +public + +funùiÚ + + $»moveP©‹ºRegexpC®lback +( +$»gexp +, +$key +) + +184  + `´eg_m©ch +( +$»gexp +, +$key +); + +185 + } +} + +190 +public + +funùiÚ + + $g‘Mªy +( +$keys +) + +192 +$rows + = +$this +-> +dbh +-> + `¬¿yQu”y +( + `¥rštf +("SELECT key, d©¨FROM cachWHERE key IN ('%s'èANDimeouˆ> %d", + `im¶ode +('\', \'', + `¬¿y_m­ +('sql™e_esÿ³_¡ršg', +$keys +)), + `time +())); + +194 +$d©a + = + `¬¿y +(); + +195 + `fܗch + ( +$rows + +as + +$row +) + +197 +$d©a +[ +$row +['key']] = $row['data']; + +200  +$d©a +; + +201 + } +} + +208 +´Ùeùed + +funùiÚ + + $ü—‹Schema +() + +210 +$¡©em’ts + = + `¬¿y +( + +212 [ +key +] + `VARCHAR +(255), + +213 [ +d©a +] +LONGVARCHAR +, + +214 [ +timeout +] +TIMESTAMP +, + +215 [ +Ï¡_modif›d +] +TIMESTAMP + + +220 + `fܗch + ( +$¡©em’ts + +as + +$¡©em’t +) + +222 ià(! +$this +-> +dbh +-> + `qu”y +( +$¡©em’t +)) + +224 +throw + +Ãw + + `sfCacheExû±iÚ +( + `sql™e_”rÜ_¡ršg +( +$this +-> +dbh +-> + `Ï¡E¼Ü +())); + +227 + } +} + + @lib/vendor/symfony/lib/cache/sfXCacheCache.class.php + +1 + `g‘Ba£V®ue +( +$key +); + +53 ià(! + `is_¬¿y +( +$£t +è|| ! + `¬¿y_key_exi¡s +('data', $set)) + +56  +$deçuÉ +; + +59  +$£t +['data']; + +60 + } +} + +65 +public + +funùiÚ + + $has +( +$key +) + +67  + `xÿche_is£t +( +$this +-> + `g‘O±iÚ +('´efix'). +$key +); + +68 + } +} + +73 +public + +funùiÚ + + $£t +( +$key +, +$d©a +, +$liãtime + = +nuÎ +) + +75 +$liãtime + = +$this +-> + `g‘Liãtime +($lifetime); + +77 +$£t + = + `¬¿y +( + +78 'timeout' => + `time +(è+ +$liãtime +, + +79 'd©a' => +$d©a +, + +80 'ùime' => + `time +() + +83  + `xÿche_£t +( +$this +-> + `g‘O±iÚ +('´efix'). +$key +, +$£t +, +$liãtime +); + +84 + } +} + +89 +public + +funùiÚ + + $»move +( +$key +) + +91  + `xÿche_un£t +( +$this +-> + `g‘O±iÚ +('´efix'). +$key +); + +92 + } +} + +97 +public + +funùiÚ + +þ—n +( +$mode + = +sfCache +:: +ALL +) + +99 ià( +$mode + !=ð +sfCache +:: +ALL +) + +101  +Œue +; + +104 + g$this +-> +checkAuth +(); + +106  + g$i + = 0, + g$max + = +xÿche_couÁ +( +XC_TYPE_VAR +); $i < $max; $i++) + +108 ià( + gçl£ + ==ð +xÿche_þ—r_ÿche +( +XC_TYPE_VAR +, +$i +)) + +110  + gçl£ +; + +114  + gŒue +; + +120 +public + +funùiÚ + + $g‘La¡Modif›d +( +$key +) + +122 +$£t + = +$this +-> + `g‘Ba£V®ue +( +$key +); + +124 ià(! + `is_¬¿y +( +$£t +è|| ! + `¬¿y_key_exi¡s +('ctime', $set)) + +130  +$£t +['ctime']; + +131 + } +} + +136 +public + +funùiÚ + + $g‘Timeout +( +$key +) + +139 +$£t + = +$this +-> + `g‘Ba£V®ue +( +$key +); + +141 ià(! + `is_¬¿y +( +$£t +è|| ! + `¬¿y_key_exi¡s +('timeout', $set)) + +147  +$£t +['timeout']; + +148 + } +} + +150 +public + +funùiÚ + + $g‘Ba£V®ue +( +$key +) + +152  + `xÿche_is£t +( +$this +-> + `g‘O±iÚ +('´efix'). +$key +è? + `xÿche_g‘ +($this->g‘O±iÚ('´efix').$keyè: +nuÎ +; + +153 + } +} + +158 +public + +funùiÚ + + $»moveP©‹º +( +$·‰”n +) + +160 +$this +-> + `checkAuth +(); + +162 +$»gexp + = +£lf +:: + `·‰”nToRegexp +( +$this +-> + `g‘O±iÚ +('´efix'). +$·‰”n +); + +164  +$i + = 0, +$max + = + `xÿche_couÁ +( +XC_TYPE_VAR +); $i < $max; $i++) + +166 +$šfos + = + `xÿche_li¡ +( +XC_TYPE_VAR +, +$i +); + +167 ià(! + `is_¬¿y +( +$šfos +['cache_list'])) + +172 + `fܗch + ( +$šfos +['ÿche_li¡'] +as + +$šfo +) + +174 ià( + `´eg_m©ch +( +$»gexp +, +$šfo +['name'])) + +176 + `xÿche_un£t +( +$šfo +['name']); + +180 + } +} + +182 +public + +funùiÚ + + $g‘CacheInfo +( +$key +) + +184 +$this +-> + `checkAuth +(); + +186  +$i + = 0, +$max + = + `xÿche_couÁ +( +XC_TYPE_VAR +); $i < $max; $i++) + +188 +$šfos + = + `xÿche_li¡ +( +XC_TYPE_VAR +, +$i +); + +190 ià( + `is_¬¿y +( +$šfos +['cache_list'])) + +192 + `fܗch + ( +$šfos +['ÿche_li¡'] +as + +$šfo +) + +194 ià( +$this +-> + `g‘O±iÚ +('´efix'). +$key + =ð +$šfo +['name']) + +196  +$šfo +; + +202  +nuÎ +; + +203 + } +} + +205 +´Ùeùed + +funùiÚ + + $checkAuth +() + +207 ià( + `ši_g‘ +('xcache.admin.enable_auth')) + +209 +throw + +Ãw + + `sfCÚfigu¿tiÚExû±iÚ +('To use‡ll features ofhe "sfXCacheCache" class, you must set "xcache.admin.enable_auth"o "Off" in your…hp.ini.'); + +211 + } +} + + @lib/vendor/symfony/lib/command/cli.php + +1 +»®·th +( +dœÇme +( +__FILE__ +).'/..'))); + +20 + g$¡©usCode + = +$­¶iÿtiÚ +-> +run +(); + +22 + $ÿtch + ( +Exû±iÚ + +$e +) + +24 ià(! + `is£t +( +$­¶iÿtiÚ +)) + +26 +throw + +$e +; + +29 +$­¶iÿtiÚ +-> + `»nd”Exû±iÚ +( +$e +); + +30 +$¡©usCode + = +$e +-> + `g‘Code +(); + +32 + `ex™ +( + `is_num”ic +( +$¡©usCode +) && $statusCode ? $statusCode : 1); + +33 + } +} + +35 +ex™ +( +is_num”ic +( +$¡©usCode +) ? $statusCode : 0); + + @lib/vendor/symfony/lib/command/sfAnsiColorFormatter.class.php + +1 +¬¿y +('bg' => '»d', 'fg' => 'wh™e', 'bÞd' => +Œue +), + +24 'INFO' => +¬¿y +('fg' => 'g»’', 'bÞd' => +Œue +), + +25 'COMMENT' => +¬¿y +('fg' => 'yellow'), + +26 'QUESTION' => +¬¿y +('bg' => 'cyª', 'fg' => 'bÏck', 'bÞd' => +çl£ +), + +28 + m$ÝtiÚs + = +¬¿y +('bold' => 1, 'underscore' => 4, 'blink' => 5, 'reverse' => 7, 'conceal' => 8), + +29 + m$fÜeground + = +¬¿y +('black' => 30, 'red' => 31, 'green' => 32, 'yellow' => 33, 'blue' => 34, 'magenta' => 35, 'cyan' => 36, 'white' => 37), + +30 + m$background + = +¬¿y +('black' => 40, 'red' => 41, 'green' => 42, 'yellow' => 43, 'blue' => 44, 'magenta' => 45, 'cyan' => 46, 'white' => 47); + +38 +public + +funùiÚ + +£tStyË +( +$Çme +, +$ÝtiÚs + = + $¬¿y +()) + +40 +$this +-> +¡yËs +[ +$Çme +] = +$ÝtiÚs +; + +51 +public + +funùiÚ + + `fÜm© +( +$‹xt + = '', +$·¿m‘”s + = + $¬¿y +()) + +53 ià(! + `is_¬¿y +( +$·¿m‘”s +) && 'NONE' == $parameters) + +55  +$‹xt +; + +58 ià(! + `is_¬¿y +( +$·¿m‘”s +è&& + `is£t +( +$this +-> +¡yËs +[$parameters])) + +60 +$·¿m‘”s + = +$this +-> +¡yËs +[$parameters]; + +63 +$codes + = + `¬¿y +(); + +64 ià( + `is£t +( +$·¿m‘”s +['fg'])) + +66 +$codes +[] = +$this +-> +fÜeground +[ +$·¿m‘”s +['fg']]; + +68 ià( + `is£t +( +$·¿m‘”s +['bg'])) + +70 +$codes +[] = +$this +-> +background +[ +$·¿m‘”s +['bg']]; + +72 + `fܗch + ( +$this +-> +ÝtiÚs + +as + +$ÝtiÚ + => +$v®ue +) + +74 ià( + `is£t +( +$·¿m‘”s +[ +$ÝtiÚ +]) && $parameters[$option]) + +76 +$codes +[] = +$v®ue +; + +80  "\033[". + `im¶ode +(';', +$codes +).'m'. +$‹xt +."\033[0m"; + +81 + } +} + +91 +public + +funùiÚ + +fÜm©SeùiÚ +( +$£ùiÚ +, +$‹xt +, +$size + = +nuÎ +, +$¡yË + = 'INFO') + +93 ià( +nuÎ + ==ð +$size +) + +95 +$size + = +$this +-> +size +; + +98 + g$¡yË + = +¬¿y_key_exi¡s +( +$¡yË +, +$this +-> +¡yËs +) ? $style : 'INFO'; + +99 + g$width + = 9 + +¡¾’ +( +$this +-> +fÜm© +('', +$¡yË +)); + +101  +¥rštf +(">> %-{$width} %s", +$this +-> +fÜm© +( +$£ùiÚ +, +$¡yË +), $this-> +exû½t +( +$‹xt +, +$size + - 4 - ( +¡¾’ +($section) > 9 ? strlen($section) : 9))); + +112 +public + +funùiÚ + + $exû½t +( +$‹xt +, +$size + = +nuÎ +) + +114 ià(! +$size +) + +116 +$size + = +$this +-> +size +; + +119 ià( + `¡¾’ +( +$‹xt +è< +$size +) + +121  +$‹xt +; + +124 +$subsize + = + `æoÜ +(( +$size + - 3) / 2); + +126  + `sub¡r +( +$‹xt +, 0, +$subsize +). +$this +-> + `fÜm© +('...', 'INFO').substr($text, -$subsize); + +127 + } +} + + @lib/vendor/symfony/lib/command/sfCommandApplication.class.php + +1 +di¥©ch” + = +$di¥©ch” +; + +44 +$this +-> +fÜm©‹r + = +nuÎ + ==ð +$fÜm©‹r + ? $this-> + `guessBe¡FÜm©‹r +( +STDOUT +) : $formatter; + +45 +$this +-> +ÝtiÚs + = +$ÝtiÚs +; + +47 +$this +-> + `fixCgi +(); + +49 +$¬gum’tS‘ + = +Ãw + + `sfCommªdArgum’tS‘ +( + `¬¿y +( + +50 +Ãw + + `sfCommªdArgum’t +('sk', +sfCommªdArgum’t +:: +REQUIRED +, 'Theaskoƒxecute'), + +52 +$ÝtiÚS‘ + = +Ãw + + `sfCommªdO±iÚS‘ +( + `¬¿y +( + +53 +Ãw + + `sfCommªdO±iÚ +('--h–p', '-H', +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Displayhis help message.'), + +54 +Ãw + + `sfCommªdO±iÚ +('--qu›t', '-q', +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Do‚ot†og messageso standard output.'), + +55 +Ãw + + `sfCommªdO±iÚ +('--Œaû', '-t', +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Turn on invoke/executeracing,ƒnable full backtrace.'), + +56 +Ãw + + `sfCommªdO±iÚ +('--v”siÚ', '-V', +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Displayhe…rogram version.'), + +57 +Ãw + + `sfCommªdO±iÚ +('--cÞÜ', '', +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Forces ANSI color output.'), + +59 +$this +-> +commªdMªag” + = +Ãw + + `sfCommªdMªag” +( +$¬gum’tS‘ +, +$ÝtiÚS‘ +); + +61 +$this +-> + `cÚfigu» +(); + +63 +$this +-> + `»gi¡”Tasks +(); + +69 +ab¡¿ù + +public + +funùiÚ + + `cÚfigu» +(); + +78 +public + +funùiÚ + + $g‘O±iÚ +( +$Çme +) + +80  + `is£t +( +$this +-> +ÝtiÚs +[ +$Çme +]è? $this->ÝtiÚs[$Çme] : +nuÎ +; + +81 + } +} + +88 +public + +funùiÚ + + $g‘FÜm©‹r +() + +90  +$this +-> +fÜm©‹r +; + +91 + } +} + +98 +public + +funùiÚ + + $£tFÜm©‹r +( +sfFÜm©‹r + +$fÜm©‹r +) + +100 +$this +-> +fÜm©‹r + = +$fÜm©‹r +; + +102 + `fܗch + ( +$this +-> + `g‘Tasks +(è +as + +$sk +) + +104 +$sk +-> + `£tFÜm©‹r +( +$fÜm©‹r +); + +106 + } +} + +108 +public + +funùiÚ + + $þ—rTasks +() + +110 +$this +-> +sks + = + `¬¿y +(); + +111 + } +} + +120 +public + +funùiÚ + + $»gi¡”Tasks +( +$sks + = +nuÎ +) + +122 ià( +nuÎ + ==ð +$sks +) + +124 +$sks + = +$this +-> + `autodiscov”Tasks +(); + +127 + `fܗch + ( +$sks + +as + +$sk +) + +129 +$this +-> + `»gi¡”Task +( +$sk +); + +131 + } +} + +138 +public + +funùiÚ + + $»gi¡”Task +( +sfTask + +$sk +) + +140 ià( + `is£t +( +$this +-> +sks +[ +$sk +-> + `g‘FuÎName +()])) + +142 +throw + +Ãw + + `sfCommªdExû±iÚ +( + `¥rštf +('Thsk‚amed "%s" iÀ"%s"ask i ®»ady„egi¡”ed byh"%s"ask.', +$sk +-> + `g‘FuÎName +(), + `g‘_þass +($sk), g‘_þass( +$this +-> +sks +[$task->getFullName()]))); + +145 +$this +-> +sks +[ +$sk +-> + `g‘FuÎName +()] = $task; + +147 + `fܗch + ( +$sk +-> + `g‘AlŸ£s +(è +as + +$®Ÿs +) + +149 ià( + `is£t +( +$this +-> +sks +[ +$®Ÿs +])) + +151 +throw + +Ãw + + `sfCommªdExû±iÚ +( + `¥rštf +('Aask‚amed "%s" i ®»ady„egi¡”ed.', +$®Ÿs +)); + +154 +$this +-> +sks +[ +$®Ÿs +] = +$sk +; + +156 + } +} + +163 +public + +funùiÚ + + $autodiscov”Tasks +() + +165 +$sks + = + `¬¿y +(); + +166 + `fܗch + ( + `g‘_deþ¬ed_þas£s +(è +as + +$þass +) + +168 +$r + = +Ãw + + `ReæeùiÚCÏss +( +$þass +); + +170 ià( +$r +-> + `isSubþassOf +('sfTask'è&& !$r-> + `isAb¡¿ù +()) + +172 +$sks +[] = +Ãw + + `$þass +( +$this +-> +di¥©ch” +, $this-> +fÜm©‹r +); + +176  +$sks +; + +177 + } +} + +184 +public + +funùiÚ + + $g‘Tasks +() + +186  +$this +-> +sks +; + +187 + } +} + +196 +public + +funùiÚ + + $g‘Task +( +$Çme +) + +198 ià(! + `is£t +( +$this +-> +sks +[ +$Çme +])) + +200 +throw + +Ãw + + `sfCommªdExû±iÚ +( + `¥rštf +('Thsk "%s" dÛ nكxi¡.', +$Çme +)); + +203  +$this +-> +sks +[ +$Çme +]; + +204 + } +} + +213 +public + +funùiÚ + + $run +( +$ÝtiÚs + = +nuÎ +) + +215 +$this +-> + `hªdËO±iÚs +( +$ÝtiÚs +); + +216 +$¬gum’ts + = +$this +-> +commªdMªag” +-> + `g‘Argum’tV®ues +(); + +218 +$this +-> +cu¼’tTask + = $this-> + `g‘TaskToExecu‹ +( +$¬gum’ts +['task']); + +220 +$»t + = +$this +-> +cu¼’tTask +-> + `runFromCLI +($this-> +commªdMªag” +, $this-> +commªdO±iÚs +); + +222 +$this +-> +cu¼’tTask + = +nuÎ +; + +224  +$»t +; + +225 + } +} + +232 +public + +funùiÚ + + $g‘Name +() + +234  +$this +-> +Çme +; + +235 + } +} + +242 +public + +funùiÚ + + $£tName +( +$Çme +) + +244 +$this +-> +Çme + = +$Çme +; + +245 + } +} + +252 +public + +funùiÚ + + $g‘V”siÚ +() + +254  +$this +-> +v”siÚ +; + +255 + } +} + +262 +public + +funùiÚ + + $£tV”siÚ +( +$v”siÚ +) + +264 +$this +-> +v”siÚ + = +$v”siÚ +; + +265 + } +} + +272 +public + +funùiÚ + + $g‘LÚgV”siÚ +() + +274  + `¥rštf +('% v”siÚ %s', +$this +-> + `g‘Name +(), $this-> +fÜm©‹r +-> + `fÜm© +($this-> + `g‘V”siÚ +(), 'INFO'))."\n"; + +275 + } +} + +282 +public + +funùiÚ + + $isV”bo£ +() + +284  +$this +-> +v”bo£ +; + +285 + } +} + +292 +public + +funùiÚ + + $w™hT¿û +() + +294  +$this +-> +Œaû +; + +295 + } +} + +300 +public + +funùiÚ + + $h–p +() + +302 +$mes§ges + = + `¬¿y +( + +303 +$this +-> +fÜm©‹r +-> + `fÜm© +('Usage:', 'COMMENT'), + +304 + `¥rštf +(" % [ÝtiÚs]ask_Çm[¬gum’ts]\n", +$this +-> + `g‘Name +()), + +305 +$this +-> +fÜm©‹r +-> + `fÜm© +('Options:', 'COMMENT'), + +308 + `fܗch + ( +$this +-> +commªdMªag” +-> + `g‘O±iÚS‘ +()-> + `g‘O±iÚs +(è +as + +$ÝtiÚ +) + +310 +$mes§ges +[] = + `¥rštf +(' %-24s %s %s', + +311 +$this +-> +fÜm©‹r +-> + `fÜm© +('--'. +$ÝtiÚ +-> + `g‘Name +(), 'INFO'), + +312 +$ÝtiÚ +-> + `g‘ShÜtcut +(è? +$this +-> +fÜm©‹r +-> + `fÜm© +('-'.$option->getShortcut(), 'INFO') : ' ', + +313 +$ÝtiÚ +-> + `g‘H–p +() + +317 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, 'commªd.log', +$mes§ges +)); + +318 + } +} + +325 +´Ùeùed + +funùiÚ + + $hªdËO±iÚs +( +$ÝtiÚs + = +nuÎ +) + +327 +$this +-> +commªdMªag” +-> + `´oûss +( +$ÝtiÚs +); + +328 +$this +-> +commªdO±iÚs + = +$ÝtiÚs +; + +332 ià( +$this +-> +commªdMªag” +-> + `g‘O±iÚS‘ +()-> + `hasO±iÚ +('cÞÜ'è&& +çl£ + !=ð$this->commªdMªag”-> + `g‘O±iÚV®ue +('color')) + +334 +$this +-> + `£tFÜm©‹r +( +Ãw + + `sfAnsiCÞÜFÜm©‹r +()); + +337 ià( +$this +-> +commªdMªag” +-> + `g‘O±iÚS‘ +()-> + `hasO±iÚ +('qu›t'è&& +çl£ + !=ð$this->commªdMªag”-> + `g‘O±iÚV®ue +('quiet')) + +339 +$this +-> +v”bo£ + = +çl£ +; + +342 ià( +$this +-> +commªdMªag” +-> + `g‘O±iÚS‘ +()-> + `hasO±iÚ +('Œaû'è&& +çl£ + !=ð$this->commªdMªag”-> + `g‘O±iÚV®ue +('trace')) + +344 +$this +-> +v”bo£ + = +Œue +; + +345 +$this +-> +Œaû + = +Œue +; + +348 ià( +$this +-> +commªdMªag” +-> + `g‘O±iÚS‘ +()-> + `hasO±iÚ +('h–p'è&& +çl£ + !=ð$this->commªdMªag”-> + `g‘O±iÚV®ue +('help')) + +350 +$this +-> + `h–p +(); + +351 + `ex™ +(0); + +354 ià( +$this +-> +commªdMªag” +-> + `g‘O±iÚS‘ +()-> + `hasO±iÚ +('v”siÚ'è&& +çl£ + !=ð$this->commªdMªag”-> + `g‘O±iÚV®ue +('version')) + +356 +echo + +$this +-> + `g‘LÚgV”siÚ +(); + +357 + `ex™ +(0); + +359 + } +} + +366 +public + +funùiÚ + + $»nd”Exû±iÚ +( +$e +) + +368 +$t™Ë + = + `¥rštf +(' [%s] ', + `g‘_þass +( +$e +)); + +369 +$Ën + = +$this +-> + `¡¾’ +( +$t™Ë +); + +370 +$lšes + = + `¬¿y +(); + +371 + `fܗch + ( + `ex¶ode +("\n", +$e +-> + `g‘Mes§ge +()è +as + +$lše +) + +373 +$lšes +[] = + `¥rštf +(' %  ', +$lše +); + +374 +$Ën + = + `max +( +$this +-> + `¡¾’ +( +$lše +) + 4, $len); + +377 +$mes§ges + = + `¬¿y +( + `¡r_»³© +(' ', +$Ën +)); + +379 ià( +$this +-> +Œaû +) + +381 +$mes§ges +[] = +$t™Ë +. + `¡r_»³© +(' ', +$Ën + - +$this +-> + `¡¾’ +($title)); + +384 + `fܗch + ( +$lšes + +as + +$lše +) + +386 +$mes§ges +[] = +$lše +. + `¡r_»³© +(' ', +$Ën + - +$this +-> + `¡¾’ +($line)); + +389 +$mes§ges +[] = + `¡r_»³© +(' ', +$Ën +); + +391 + `fwr™e +( +STDERR +, "\n"); + +392 + `fܗch + ( +$mes§ges + +as + +$mes§ge +) + +394 + `fwr™e +( +STDERR +, +$this +-> +fÜm©‹r +-> + `fÜm© +( +$mes§ge +, 'ERROR', STDERR)."\n"); + +396 + `fwr™e +( +STDERR +, "\n"); + +398 ià( +nuÎ + !=ð +$this +-> +cu¼’tTask + && +$e + +š¡ªûof + +sfCommªdArgum’tsExû±iÚ +) + +400 + `fwr™e +( +STDERR +, +$this +-> +fÜm©‹r +-> + `fÜm© +( + `¥rštf +($this-> +cu¼’tTask +-> + `g‘SynÝsis +(), $this-> + `g‘Name +()), 'INFO', STDERR)."\n"); + +401 + `fwr™e +( +STDERR +, "\n"); + +404 ià( +$this +-> +Œaû +) + +406 + `fwr™e +( +STDERR +, +$this +-> +fÜm©‹r +-> + `fÜm© +("Exceptionrace:\n", 'COMMENT')); + +409 +$Œaû + = +$e +-> + `g‘T¿û +(); + +410 + `¬¿y_unshiá +( +$Œaû +, + `¬¿y +( + +412 'fže' => +$e +-> + `g‘Fže +(è!ð +nuÎ + ? $e->getFile() : 'n/a', + +413 'lše' => +$e +-> + `g‘Lše +(è!ð +nuÎ + ? $e->getLine() : 'n/a', + +414 '¬gs' => + `¬¿y +(), + +417  +$i + = 0, +$couÁ + = + `couÁ +( +$Œaû +); $i < $count; $i++) + +419 +$þass + = + `is£t +( +$Œaû +[ +$i +]['class']) ? $trace[$i]['class'] : ''; + +420 +$ty³ + = + `is£t +( +$Œaû +[ +$i +]['type']) ? $trace[$i]['type'] : ''; + +421 +$funùiÚ + = +$Œaû +[ +$i +]['function']; + +422 +$fže + = + `is£t +( +$Œaû +[ +$i +]['file']) ? $trace[$i]['file'] : 'n/a'; + +423 +$lše + = + `is£t +( +$Œaû +[ +$i +]['line']) ? $trace[$i]['line'] : 'n/a'; + +425 + `fwr™e +( +STDERR +, + `¥rštf +(" %s%s% © %s:%s\n", +$þass +, +$ty³ +, +$funùiÚ +, +$this +-> +fÜm©‹r +-> + `fÜm© +( +$fže +, 'INFO', STDERR), $this->fÜm©‹r->fÜm©( +$lše +, 'INFO', STDERR))); + +428 + `fwr™e +( +STDERR +, "\n"); + +430 + } +} + +439 +public + +funùiÚ + + $g‘TaskToExecu‹ +( +$Çme +) + +442 ià( +çl£ + !=ð +$pos + = + `¡½os +( +$Çme +, ':')) + +444 +$Çme¥aû + = + `sub¡r +( +$Çme +, 0, +$pos +); + +445 +$Çme + = + `sub¡r +($Çme, +$pos + + 1); + +447 +$Çme¥aûs + = + `¬¿y +(); + +448 + `fܗch + ( +$this +-> +sks + +as + +$sk +) + +450 ià( +$sk +-> + `g‘Name¥aû +(è&& ! + `š_¬¿y +($sk->g‘Name¥aû(), +$Çme¥aûs +)) + +452 +$Çme¥aûs +[] = +$sk +-> + `g‘Name¥aû +(); + +455 +$abb»v + = +$this +-> + `g‘Abb»vŸtiÚs +( +$Çme¥aûs +); + +457 ià(! + `is£t +( +$abb»v +[ +$Çme¥aû +])) + +459 +throw + +Ãw + + `sfCommªdExû±iÚ +( + `¥rštf +('Th”¬n؏sk defšed iÀth"%s"‚ame¥aû.', +$Çme¥aû +)); + +461 ià( + `couÁ +( +$abb»v +[ +$Çme¥aû +]) > 1) + +463 +throw + +Ãw + + `sfCommªdExû±iÚ +( + `¥rštf +('ThÇme¥aû "%s" i ambiguou (%s).', +$Çme¥aû +, + `im¶ode +(', ', +$abb»v +[$namespace]))); + +467 +$Çme¥aû + = +$abb»v +[$namespace][0]; + +472 +$Çme¥aû + = ''; + +476 +$sks + = + `¬¿y +(); + +477 + `fܗch + ( +$this +-> +sks + +as + +$skName + => +$sk +) + +479 ià( +$skName + =ð +$sk +-> + `g‘FuÎName +(è&& $sk-> + `g‘Name¥aû +(è=ð +$Çme¥aû +) + +481 +$sks +[] = +$sk +-> + `g‘Name +(); + +485 +$abb»v + = +$this +-> + `g‘Abb»vŸtiÚs +( +$sks +); + +486 ià( + `is£t +( +$abb»v +[ +$Çme +]è&& + `couÁ +($abbrev[$name]) == 1) + +488  +$this +-> + `g‘Task +( +$Çme¥aû + ? $Çme¥aû.':'. +$abb»v +[ +$Çme +][0] : $abbrev[$name][0]); + +492 +$®Ÿ£s + = + `¬¿y +(); + +493 + `fܗch + ( +$this +-> +sks + +as + +$skName + => +$sk +) + +495 ià( +$skName + =ð +$sk +-> + `g‘FuÎName +()) + +497 + `fܗch + ( +$sk +-> + `g‘AlŸ£s +(è +as + +$®Ÿs +) + +499 +$®Ÿ£s +[] = +$®Ÿs +; + +504 +$abb»v + = +$this +-> + `g‘Abb»vŸtiÚs +( +$®Ÿ£s +); + +505 +$fuÎName + = +$Çme¥aû + ? $Çme¥aû.':'. +$Çme + : $name; + +506 ià(! + `is£t +( +$abb»v +[ +$fuÎName +])) + +508 +throw + +Ãw + + `sfCommªdExû±iÚ +( + `¥rštf +('Task "%s" i nÙ defšed.', +$fuÎName +)); + +510 ià( + `couÁ +( +$abb»v +[ +$fuÎName +]) > 1) + +512 +throw + +Ãw + + `sfCommªdExû±iÚ +( + `¥rštf +('Task "%s" i ambiguou (%s).', +$fuÎName +, + `im¶ode +(', ', +$abb»v +[$fullName]))); + +516  +$this +-> + `g‘Task +( +$abb»v +[ +$fuÎName +][0]); + +518 + } +} + +520 +´Ùeùed + +funùiÚ + + $¡¾’ +( +$¡ršg +) + +522 ià(! + `funùiÚ_exi¡s +('mb_strlen')) { + +523  + `¡¾’ +( +$¡ršg +); + +526 ià( +çl£ + ==ð +$’codšg + = + `mb_d‘eù_’codšg +( +$¡ršg +)) { + +527  + `¡¾’ +( +$¡ršg +); + +530  + `mb_¡¾’ +( +$¡ršg +, +$’codšg +); + +531 + } +} + +538 +´Ùeùed + +funùiÚ + + $fixCgi +() + +541 @ + `ob_’d_æush +(); + +542 + `ob_im¶ic™_æush +( +Œue +); + +545 + `£t_time_lim™ +(0); + +546 + `ši_£t +('Œack_”rÜs', +Œue +); + +547 + `ši_£t +('html_”rÜs', +çl£ +); + +548 + `ši_£t +('magic_quÙes_ruÁime', +çl£ +); + +550 ià( +çl£ + ==ð + `¡½os +( +PHP_SAPI +, 'cgi')) + +556 + `defše +('STDIN', + `fݒ +('php://stdin', 'r')); + +557 + `defše +('STDOUT', + `fݒ +('php://stdout', 'w')); + +558 + `defše +('STDERR', + `fݒ +('php://stderr', 'w')); + +561 ià( + `is£t +( +$_SERVER +['PWD'])) + +563 + `chdœ +( +$_SERVER +['PWD']); + +567 + `»gi¡”_shutdown_funùiÚ +( + `ü—‹_funùiÚ +('', 'fclose(STDIN); fclose(STDOUT); fclose(STDERR);„eturnrue;')); + +568 + } +} + +575 +´Ùeùed + +funùiÚ + + $g‘Abb»vŸtiÚs +( +$Çmes +) + +577 +$abb»vs + = + `¬¿y +(); + +578 +$bË + = + `¬¿y +(); + +580 + `fܗch + ( +$Çmes + +as + +$Çme +) + +582  +$Ën + = + `¡¾’ +( +$Çme +) - 1; $len > 0; --$len) + +584 +$abb»v + = + `sub¡r +( +$Çme +, 0, +$Ën +); + +585 ià(! + `¬¿y_key_exi¡s +( +$abb»v +, +$bË +)) + +587 +$bË +[ +$abb»v +] = 1; + +591 ++ +$bË +[ +$abb»v +]; + +594 +$£’ + = +$bË +[ +$abb»v +]; + +595 ià( +$£’ + == 1) + +598 +$abb»vs +[ +$abb»v +] = + `¬¿y +( +$Çme +); + +600 ià( +$£’ + == 2) + +604 +$abb»vs +[ +$abb»v +][] = +$Çme +; + +615 + `fܗch + ( +$Çmes + +as + +$Çme +) + +617 +$abb»vs +[ +$Çme +] = + `¬¿y +($name); + +620  +$abb»vs +; + +621 + } +} + +635 +´Ùeùed + +funùiÚ + + $isSŒ—mSuµÜtsCÞÜs +( +$¡»am +) + +637 ià( +DIRECTORY_SEPARATOR + == '\\') + +639  +çl£ + !=ð + `g‘’v +('ANSICON'); + +643  + `funùiÚ_exi¡s +('posix_i§‰y'è&& @ + `posix_i§‰y +( +$¡»am +); + +645 + } +} + +654 +´Ùeùed + +funùiÚ + + $guessBe¡FÜm©‹r +( +$¡»am +) + +656  +$this +-> + `isSŒ—mSuµÜtsCÞÜs +( +$¡»am +è? +Ãw + + `sfAnsiCÞÜFÜm©‹r +(è:‚ew + `sfFÜm©‹r +(); + +657 + } +} + + @lib/vendor/symfony/lib/command/sfCommandArgument.class.php + +1 7) + +48 +throw + +Ãw + +sfCommªdExû±iÚ +( +¥rštf +('Argum’ˆmod"%s" i nÙ v®id.', +$mode +)); + +51 + m$this +-> + mÇme + = +$Çme +; + +52 + m$this +-> + mmode + = +$mode +; + +53 + m$this +-> + mh–p + = +$h–p +; + +55 + m$this +-> +£tDeçuÉ +( +$deçuÉ +); + +63 +public + +funùiÚ + + $g‘Name +() + +65  +$this +-> +Çme +; + +66 + } +} + +73 +public + +funùiÚ + + $isRequœed +() + +75  +£lf +:: +REQUIRED + ==ð(£lf::REQUIRED & +$this +-> +mode +); + +76 + } +} + +83 +public + +funùiÚ + + $isA¼ay +() + +85  +£lf +:: +IS_ARRAY + ==ð(£lf::IS_ARRAY & +$this +-> +mode +); + +86 + } +} + +93 +public + +funùiÚ + + $£tDeçuÉ +( +$deçuÉ + = +nuÎ +) + +95 ià( +£lf +:: +REQUIRED + ==ð +$this +-> +mode + && +nuÎ + !=ð +$deçuÉ +) + +97 +throw + +Ãw + + `sfCommªdExû±iÚ +('Cannot set‡ default valueƒxcept for sfCommandParameter::OPTIONAL mode.'); + +100 ià( +$this +-> + `isA¼ay +()) + +102 ià( +nuÎ + ==ð +$deçuÉ +) + +104 +$deçuÉ + = + `¬¿y +(); + +106 ià(! + `is_¬¿y +( +$deçuÉ +)) + +108 +throw + +Ãw + + `sfCommªdExû±iÚ +('A default value for‡n‡rray‡rgument must be‡n‡rray.'); + +112 +$this +-> = +$deçuÉ +; + +113 + } +} + +120 +public + +funùiÚ + + $g‘DeçuÉ +() + +122  +$this +->; + +123 + } +} + +130 +public + +funùiÚ + + $g‘H–p +() + +132  +$this +-> +h–p +; + +133 + } +} + + @lib/vendor/symfony/lib/command/sfCommandArgumentSet.class.php + +1 + `£tArgum’ts +( +$¬gum’ts +); + +42 +public + +funùiÚ + + `£tArgum’ts +( +$¬gum’ts + = + $¬¿y +()) + +44 +$this +-> +¬gum’ts + = + `¬¿y +(); + +45 +$this +-> +»quœedCouÁ + = 0; + +46 +$this +-> +hasO±iÚ® + = +çl£ +; + +47 +$this +-> + `addArgum’ts +( +$¬gum’ts +); + +48 + } +} + +55 +public + +funùiÚ + +addArgum’ts +( +$¬gum’ts + = + $¬¿y +()) + +57 ià( +nuÎ + !=ð +$¬gum’ts +) + +59 + `fܗch + ( +$¬gum’ts + +as + +$¬gum’t +) + +61 +$this +-> + `addArgum’t +( +$¬gum’t +); + +64 + } +} + +71 +public + +funùiÚ + + $addArgum’t +( +sfCommªdArgum’t + +$¬gum’t +) + +73 ià( + `is£t +( +$this +-> +¬gum’ts +[ +$¬gum’t +-> + `g‘Name +()])) + +75 +throw + +Ãw + + `sfCommªdExû±iÚ +( + `¥rštf +('AÀ¬gum’ˆw™h‚am"%s"‡Ì—dyƒxi¡.', +$¬gum’t +-> + `g‘Name +())); + +78 ià( +$this +-> +hasAnA¼ayArgum’t +) + +80 +throw + +Ãw + + `sfCommªdExû±iÚ +('Cannot‡dd‡n‡rgument‡fter‡n‡rray‡rgument.'); + +83 ià( +$¬gum’t +-> + `isRequœed +(è&& +$this +-> +hasO±iÚ® +) + +85 +throw + +Ãw + + `sfCommªdExû±iÚ +('Cannot‡dd‡„equired‡rgument‡fter‡n optional one.'); + +88 ià( +$¬gum’t +-> + `isA¼ay +()) + +90 +$this +-> +hasAnA¼ayArgum’t + = +Œue +; + +93 ià( +$¬gum’t +-> + `isRequœed +()) + +95 ++ +$this +-> +»quœedCouÁ +; + +99 +$this +-> +hasO±iÚ® + = +Œue +; + +102 +$this +-> +¬gum’ts +[ +$¬gum’t +-> + `g‘Name +()] = $argument; + +103 + } +} + +112 +public + +funùiÚ + + $g‘Argum’t +( +$Çme +) + +114 ià(! +$this +-> + `hasArgum’t +( +$Çme +)) + +116 +throw + +Ãw + + `sfCommªdExû±iÚ +( + `¥rštf +('Th"%s"‡rgum’ˆdÛ nكxi¡.', +$Çme +)); + +119  +$this +-> +¬gum’ts +[ +$Çme +]; + +120 + } +} + +129 +public + +funùiÚ + + $hasArgum’t +( +$Çme +) + +131  + `is£t +( +$this +-> +¬gum’ts +[ +$Çme +]); + +132 + } +} + +139 +public + +funùiÚ + + $g‘Argum’ts +() + +141  +$this +-> +¬gum’ts +; + +142 + } +} + +149 +public + +funùiÚ + + $g‘Argum’tCouÁ +() + +151  +$this +-> +hasAnA¼ayArgum’t + ? +PHP_INT_MAX + : + `couÁ +($this-> +¬gum’ts +); + +152 + } +} + +159 +public + +funùiÚ + + $g‘Argum’tRequœedCouÁ +() + +161  +$this +-> +»quœedCouÁ +; + +162 + } +} + +169 +public + +funùiÚ + + $g‘DeçuÉs +() + +171 +$v®ues + = + `¬¿y +(); + +172 + `fܗch + ( +$this +-> +¬gum’ts + +as + +$¬gum’t +) + +174 +$v®ues +[ +$¬gum’t +-> + `g‘Name +()] = $¬gum’t-> + `g‘DeçuÉ +(); + +177  +$v®ues +; + +178 + } +} + + @lib/vendor/symfony/lib/command/sfCommandArgumentsException.class.php + +1 + `cÚÃù +('commªd.log', + `¬¿y +( +$this +, 'listenToLogEvent')); + +30  +·»Á +:: + `š™Ÿlize +( +$di¥©ch” +, +$ÝtiÚs +); + +38 +public + +funùiÚ + + $li¡’ToLogEv’t +( +sfEv’t + +$ev’t +) + +40 +$´iܙy + = + `is£t +( +$ev’t +['´iܙy']è? $ev’t['´iܙy'] : +£lf +:: +INFO +; + +42 +$´efix + = ''; + +43 ià('­¶iÿtiÚ.log' =ð +$ev’t +-> + `g‘Name +()) + +45 +$subjeù + = +$ev’t +-> + `g‘Subjeù +(); + +46 +$subjeù + = + `is_objeù +($subjeùè? + `g‘_þass +($subjeùè: ( + `is_¡ršg +($subject) ? $subject : 'main'); + +48 +$´efix + = '>> '. +$subjeù +.' '; + +51 + `fܗch + ( +$ev’t +-> + `g‘P¬am‘”s +(è +as + +$key + => +$mes§ge +) + +53 ià('´iܙy' ==ð +$key +) + +58 +$this +-> + `log +( + `¥rštf +('%s%s', +$´efix +, +$mes§ge +), +$´iܙy +); + +60 + } +} + + @lib/vendor/symfony/lib/command/sfCommandManager.class.php + +1 + `£tArgum’tS‘ +( +$¬gum’tS‘ +); + +44 ià( +nuÎ + ==ð +$ÝtiÚS‘ +) + +46 +$ÝtiÚS‘ + = +Ãw + + `sfCommªdO±iÚS‘ +(); + +48 +$this +-> + `£tO±iÚS‘ +( +$ÝtiÚS‘ +); + +56 +public + +funùiÚ + + $£tArgum’tS‘ +( +sfCommªdArgum’tS‘ + +$¬gum’tS‘ +) + +58 +$this +-> +¬gum’tS‘ + = +$¬gum’tS‘ +; + +59 + } +} + +66 +public + +funùiÚ + + $g‘Argum’tS‘ +() + +68  +$this +-> +¬gum’tS‘ +; + +69 + } +} + +76 +public + +funùiÚ + + $£tO±iÚS‘ +( +sfCommªdO±iÚS‘ + +$ÝtiÚS‘ +) + +78 +$this +-> +ÝtiÚS‘ + = +$ÝtiÚS‘ +; + +79 + } +} + +86 +public + +funùiÚ + + $g‘O±iÚS‘ +() + +88  +$this +-> +ÝtiÚS‘ +; + +89 + } +} + +96 +public + +funùiÚ + + $´oûss +( +$¬gum’ts + = +nuÎ +) + +98 ià( +nuÎ + ==ð +$¬gum’ts +) + +100 +$¬gum’ts + = +$_SERVER +['argv']; + +103 ià( + `is£t +( +$¬gum’ts +[0]) && '-' != $arguments[0][0]) + +105 + `¬¿y_shiá +( +$¬gum’ts +); + +108 ià(! + `is_¬¿y +( +$¬gum’ts +)) + +111 +$¬gum’ts + = + `´eg_»¶aû +('/(\'|")(.+?)\\1/e', "str_replace(' ', '=PLACEHOLDER=', '\\2')", $arguments); + +112 +$¬gum’ts + = + `´eg_¥l™ +('/\s+/', $arguments); + +113 +$¬gum’ts + = + `¡r_»¶aû +('=PLACEHOLDER=', ' ', $arguments); + +116 +$this +-> +¬gum’ts + = +$¬gum’ts +; + +117 +$this +-> +ÝtiÚV®ues + = $this-> +ÝtiÚS‘ +-> + `g‘DeçuÉs +(); + +118 +$this +-> +¬gum’tV®ues + = $this-> +¬gum’tS‘ +-> + `g‘DeçuÉs +(); + +119 +$this +-> +·r£dArgum’tV®ues + = + `¬¿y +(); + +120 +$this +-> +”rÜs + = + `¬¿y +(); + +122 ! + `š_¬¿y +( +$¬gum’t + = + `¬¿y_shiá +( +$this +-> +¬gum’ts +), + `¬¿y +('', +nuÎ +))) + +124 ià('--' =ð +$¬gum’t +) + +127 +$this +-> +·r£dArgum’tV®ues + = + `¬¿y_m”ge +($this->·r£dArgum’tV®ues, $this-> +¬gum’ts +); + +131 ià('--' =ð + `sub¡r +( +$¬gum’t +, 0, 2)) + +133 +$this +-> + `·r£LÚgO±iÚ +( + `sub¡r +( +$¬gum’t +, 2)); + +135 ià('-' =ð +$¬gum’t +[0]) + +137 +$this +-> + `·r£ShÜtO±iÚ +( + `sub¡r +( +$¬gum’t +, 1)); + +141 +$this +-> +·r£dArgum’tV®ues +[] = +$¬gum’t +; + +145 +$pos™iÚ + = 0; + +146 + `fܗch + ( +$this +-> +¬gum’tS‘ +-> + `g‘Argum’ts +(è +as + +$¬gum’t +) + +148 ià( + `¬¿y_key_exi¡s +( +$pos™iÚ +, +$this +-> +·r£dArgum’tV®ues +)) + +150 ià( +$¬gum’t +-> + `isA¼ay +()) + +152 +$this +-> +¬gum’tV®ues +[ +$¬gum’t +-> + `g‘Name +()] = + `¬¿y_¦iû +($this-> +·r£dArgum’tV®ues +, +$pos™iÚ +); + +157 +$this +-> +¬gum’tV®ues +[ +$¬gum’t +-> + `g‘Name +()] = $this-> +·r£dArgum’tV®ues +[ +$pos™iÚ +]; + +160 ++ +$pos™iÚ +; + +163 +$this +-> +¬gum’ts + = +$¬gum’ts +; + +165 ià( + `couÁ +( +$this +-> +·r£dArgum’tV®ues +è< $this-> +¬gum’tS‘ +-> + `g‘Argum’tRequœedCouÁ +()) + +167 +$this +-> +”rÜs +[] = 'Notƒnough‡rguments.'; + +169 ià( + `couÁ +( +$this +-> +·r£dArgum’tV®ues +è> $this-> +¬gum’tS‘ +-> + `g‘Argum’tCouÁ +()) + +171 +$this +-> +”rÜs +[] = + `¥rštf +('ToØmªy‡rgum’t ("%s" giv’).', + `im¶ode +(' ', $this-> +·r£dArgum’tV®ues +)); + +173 + } +} + +180 +public + +funùiÚ + + $isV®id +() + +182  + `couÁ +( +$this +-> +”rÜs +è? +çl£ + : +Œue +; + +183 + } +} + +190 +public + +funùiÚ + + $g‘E¼Üs +() + +192  +$this +-> +”rÜs +; + +193 + } +} + +200 +public + +funùiÚ + + $g‘Argum’tV®ues +() + +202  +$this +-> +¬gum’tV®ues +; + +203 + } +} + +212 +public + +funùiÚ + + $g‘Argum’tV®ue +( +$Çme +) + +214 ià(! +$this +-> +¬gum’tS‘ +-> + `hasArgum’t +( +$Çme +)) + +216 +throw + +Ãw + + `sfCommªdExû±iÚ +( + `¥rštf +('Th"%s"‡rgum’ˆdÛ nكxi¡.', +$Çme +)); + +219  +$this +-> +¬gum’tV®ues +[ +$Çme +]; + +220 + } +} + +227 +public + +funùiÚ + + $g‘O±iÚV®ues +() + +229  +$this +-> +ÝtiÚV®ues +; + +230 + } +} + +239 +public + +funùiÚ + + $g‘O±iÚV®ue +( +$Çme +) + +241 ià(! +$this +-> +ÝtiÚS‘ +-> + `hasO±iÚ +( +$Çme +)) + +243 +throw + +Ãw + + `sfCommªdExû±iÚ +( + `¥rštf +('Th"%s" o±iÚ dÛ nكxi¡.', +$Çme +)); + +246  +$this +-> +ÝtiÚV®ues +[ +$Çme +]; + +247 + } +} + +254 +´Ùeùed + +funùiÚ + + $·r£ShÜtO±iÚ +( +$¬gum’t +) + +257  +$i + = 0, +$couÁ + = + `¡¾’ +( +$¬gum’t +); $i < $count; $i++) + +259 +$shÜtcut + = +$¬gum’t +[ +$i +]; + +260 +$v®ue + = +Œue +; + +262 ià(! +$this +-> +ÝtiÚS‘ +-> + `hasShÜtcut +( +$shÜtcut +)) + +264 +$this +-> +”rÜs +[] = + `¥rštf +('ThÝtiÚ "-%s" dÛ nكxi¡.', +$shÜtcut +); + +268 +$ÝtiÚ + = +$this +-> +ÝtiÚS‘ +-> + `g‘O±iÚFÜShÜtcut +( +$shÜtcut +); + +271 ià( +$ÝtiÚ +-> + `isP¬am‘”Requœed +()) + +273 ià( +$i + + 1 < + `¡¾’ +( +$¬gum’t +)) + +275 +$v®ue + = + `sub¡r +( +$¬gum’t +, +$i + + 1); + +276 +$this +-> + `£tO±iÚ +( +$ÝtiÚ +, +$v®ue +); + +282 ià( + `couÁ +( +$this +-> +¬gum’ts +) && $this->arguments[0][0] != '-') + +284 +$v®ue + = + `¬¿y_shiá +( +$this +-> +¬gum’ts +); + +285 +$this +-> + `£tO±iÚ +( +$ÝtiÚ +, +$v®ue +); + +290 +$this +-> +”rÜs +[] = + `¥rštf +('O±iÚ "-%s"„equœe ª‡rgum’t', +$shÜtcut +); + +291 +$v®ue + = +nuÎ +; + +295 ià( +$ÝtiÚ +-> + `isP¬am‘”O±iÚ® +()) + +297 ià( + `sub¡r +( +$¬gum’t +, +$i + + 1) != '') + +299 +$v®ue + = + `sub¡r +( +$¬gum’t +, +$i + + 1); + +304 ià( + `couÁ +( +$this +-> +¬gum’ts +) && $this->arguments[0][0] != '-') + +306 +$v®ue + = + `¬¿y_shiá +( +$this +-> +¬gum’ts +); + +310 +$v®ue + = +$ÝtiÚ +-> + `g‘DeçuÉ +(); + +314 +$this +-> + `£tO±iÚ +( +$ÝtiÚ +, +$v®ue +); + +318 +$this +-> + `£tO±iÚ +( +$ÝtiÚ +, +$v®ue +); + +320 + } +} + +327 +´Ùeùed + +funùiÚ + + $·r£LÚgO±iÚ +( +$¬gum’t +) + +329 ià( +çl£ + !=ð + `¡½os +( +$¬gum’t +, '=')) + +331 + `li¡ +( +$Çme +, +$v®ue +èð + `ex¶ode +('=', +$¬gum’t +, 2); + +333 ià(! +$this +-> +ÝtiÚS‘ +-> + `hasO±iÚ +( +$Çme +)) + +335 +$this +-> +”rÜs +[] = + `¥rštf +('Th"--%s" o±iÚ dÛ nكxi¡.', +$Çme +); + +339 +$ÝtiÚ + = +$this +-> +ÝtiÚS‘ +-> + `g‘O±iÚ +( +$Çme +); + +341 ià(! +$ÝtiÚ +-> + `acû±P¬am‘” +()) + +343 +$this +-> +”rÜs +[] = + `¥rštf +('O±iÚ "--%s" dÛ nفakª‡rgum’t.', +$Çme +); + +344 +$v®ue + = +Œue +; + +349 +$Çme + = +$¬gum’t +; + +351 ià(! +$this +-> +ÝtiÚS‘ +-> + `hasO±iÚ +( +$Çme +)) + +353 +$this +-> +”rÜs +[] = + `¥rštf +('Th"--%s" o±iÚ dÛ nكxi¡.', +$Çme +); + +357 +$ÝtiÚ + = +$this +-> +ÝtiÚS‘ +-> + `g‘O±iÚ +( +$Çme +); + +359 ià( +$ÝtiÚ +-> + `isP¬am‘”Requœed +()) + +361 +$this +-> +”rÜs +[] = + `¥rštf +('O±iÚ "--%s"„equœe ª‡rgum’t.', +$Çme +); + +364 +$v®ue + = +$ÝtiÚ +-> + `acû±P¬am‘” +(è? $ÝtiÚ-> + `g‘DeçuÉ +(è: +Œue +; + +367 +$this +-> + `£tO±iÚ +( +$ÝtiÚ +, +$v®ue +); + +368 + } +} + +370 +public + +funùiÚ + + $£tO±iÚ +( +sfCommªdO±iÚ + +$ÝtiÚ +, +$v®ue +) + +372 ià( +$ÝtiÚ +-> + `isA¼ay +()) + +374 +$this +-> +ÝtiÚV®ues +[ +$ÝtiÚ +-> + `g‘Name +()][] = +$v®ue +; + +378 +$this +-> +ÝtiÚV®ues +[ +$ÝtiÚ +-> + `g‘Name +()] = +$v®ue +; + +380 + } +} + + @lib/vendor/symfony/lib/command/sfCommandOption.class.php + +1 15) + +69 +throw + +Ãw + +sfCommªdExû±iÚ +( +¥rštf +('O±iÚ mod"%s" i nÙ v®id.', +$mode +)); + +72 + m$this +-> + mÇme + = +$Çme +; + +73 + m$this +-> + mshÜtcut + = +$shÜtcut +; + +74 + m$this +-> + mmode + = +$mode +; + +75 + m$this +-> + mh–p + = +$h–p +; + +77 + m$this +-> +£tDeçuÉ +( +$deçuÉ +); + +85 +public + +funùiÚ + + $g‘ShÜtcut +() + +87  +$this +-> +shÜtcut +; + +88 + } +} + +95 +public + +funùiÚ + + $g‘Name +() + +97  +$this +-> +Çme +; + +98 + } +} + +105 +public + +funùiÚ + + $acû±P¬am‘” +() + +107  +$this +-> + `isP¬am‘”Requœed +(è|| $this-> + `isP¬am‘”O±iÚ® +(); + +108 + } +} + +115 +public + +funùiÚ + + $isP¬am‘”Requœed +() + +117  +£lf +:: +PARAMETER_REQUIRED + ==ð(£lf::PARAMETER_REQUIRED & +$this +-> +mode +); + +118 + } +} + +125 +public + +funùiÚ + + $isP¬am‘”O±iÚ® +() + +127  +£lf +:: +PARAMETER_OPTIONAL + ==ð(£lf::PARAMETER_OPTIONAL & +$this +-> +mode +); + +128 + } +} + +135 +public + +funùiÚ + + $isA¼ay +() + +137  +£lf +:: +IS_ARRAY + ==ð(£lf::IS_ARRAY & +$this +-> +mode +); + +138 + } +} + +145 +public + +funùiÚ + + $£tDeçuÉ +( +$deçuÉ + = +nuÎ +) + +147 ià( +£lf +:: +PARAMETER_NONE + ==ð(£lf::PARAMETER_NONE & +$this +-> +mode +è&& +nuÎ + !=ð +$deçuÉ +) + +149 +throw + +Ãw + + `sfCommªdExû±iÚ +('Cannot set‡ default value when using sfCommandOption::PARAMETER_NONE mode.'); + +152 ià( +$this +-> + `isA¼ay +()) + +154 ià( +nuÎ + ==ð +$deçuÉ +) + +156 +$deçuÉ + = + `¬¿y +(); + +158 ià(! + `is_¬¿y +( +$deçuÉ +)) + +160 +throw + +Ãw + + `sfCommªdExû±iÚ +('A default value for‡n‡rray option must be‡n‡rray.'); + +164 +$this +-> = $this-> + `acû±P¬am‘” +(è? +$deçuÉ + : +çl£ +; + +165 + } +} + +172 +public + +funùiÚ + + $g‘DeçuÉ +() + +174  +$this +->; + +175 + } +} + +182 +public + +funùiÚ + + $g‘H–p +() + +184  +$this +-> +h–p +; + +185 + } +} + + @lib/vendor/symfony/lib/command/sfCommandOptionSet.class.php + +1 + `£tO±iÚs +( +$ÝtiÚs +); + +40 +public + +funùiÚ + + `£tO±iÚs +( +$ÝtiÚs + = + $¬¿y +()) + +42 +$this +-> +ÝtiÚs + = + `¬¿y +(); + +43 +$this +-> +shÜtcuts + = + `¬¿y +(); + +44 +$this +-> + `addO±iÚs +( +$ÝtiÚs +); + +45 + } +} + +52 +public + +funùiÚ + +addO±iÚs +( +$ÝtiÚs + = + $¬¿y +()) + +54 + `fܗch + ( +$ÝtiÚs + +as + +$ÝtiÚ +) + +56 +$this +-> + `addO±iÚ +( +$ÝtiÚ +); + +58 + } +} + +65 +public + +funùiÚ + + $addO±iÚ +( +sfCommªdO±iÚ + +$ÝtiÚ +) + +67 ià( + `is£t +( +$this +-> +ÝtiÚs +[ +$ÝtiÚ +-> + `g‘Name +()])) + +69 +throw + +Ãw + + `sfCommªdExû±iÚ +( + `¥rštf +('AÀÝtiڂamed "%s"‡Ì—dyƒxi¡.', +$ÝtiÚ +-> + `g‘Name +())); + +71 ià( + `is£t +( +$this +-> +shÜtcuts +[ +$ÝtiÚ +-> + `g‘ShÜtcut +()])) + +73 +throw + +Ãw + + `sfCommªdExû±iÚ +( + `¥rštf +('AÀÝtiÚ w™h shÜtcuˆ"%s"‡Ì—dyƒxi¡.', +$ÝtiÚ +-> + `g‘ShÜtcut +())); + +76 +$this +-> +ÝtiÚs +[ +$ÝtiÚ +-> + `g‘Name +()] = $option; + +77 ià( +$ÝtiÚ +-> + `g‘ShÜtcut +()) + +79 +$this +-> +shÜtcuts +[ +$ÝtiÚ +-> + `g‘ShÜtcut +()] = $ÝtiÚ-> + `g‘Name +(); + +81 + } +} + +90 +public + +funùiÚ + + $g‘O±iÚ +( +$Çme +) + +92 ià(! +$this +-> + `hasO±iÚ +( +$Çme +)) + +94 +throw + +Ãw + + `sfCommªdExû±iÚ +( + `¥rštf +('Th"--%s" o±iÚ dÛ nكxi¡.', +$Çme +)); + +97  +$this +-> +ÝtiÚs +[ +$Çme +]; + +98 + } +} + +107 +public + +funùiÚ + + $hasO±iÚ +( +$Çme +) + +109  + `is£t +( +$this +-> +ÝtiÚs +[ +$Çme +]); + +110 + } +} + +117 +public + +funùiÚ + + $g‘O±iÚs +() + +119  +$this +-> +ÝtiÚs +; + +120 + } +} + +129 +public + +funùiÚ + + $hasShÜtcut +( +$Çme +) + +131  + `is£t +( +$this +-> +shÜtcuts +[ +$Çme +]); + +132 + } +} + +139 +public + +funùiÚ + + $g‘O±iÚFÜShÜtcut +( +$shÜtcut +) + +141  +$this +-> + `g‘O±iÚ +($this-> + `shÜtcutToName +( +$shÜtcut +)); + +142 + } +} + +149 +public + +funùiÚ + + $g‘DeçuÉs +() + +151 +$v®ues + = + `¬¿y +(); + +152 + `fܗch + ( +$this +-> +ÝtiÚs + +as + +$ÝtiÚ +) + +154 +$v®ues +[ +$ÝtiÚ +-> + `g‘Name +()] = $ÝtiÚ-> + `g‘DeçuÉ +(); + +157  +$v®ues +; + +158 + } +} + +167 +´Ùeùed + +funùiÚ + + $shÜtcutToName +( +$shÜtcut +) + +169 ià(! + `is£t +( +$this +-> +shÜtcuts +[ +$shÜtcut +])) + +171 +throw + +Ãw + + `sfCommªdExû±iÚ +( + `¥rštf +('Th"-%s" o±iÚ dÛ nكxi¡.', +$shÜtcut +)); + +174  +$this +-> +shÜtcuts +[ +$shÜtcut +]; + +175 + } +} + + @lib/vendor/symfony/lib/command/sfFormatter.class.php + +1 &1'))è? ( +š‹g” +) shell_exec('tput cols') : 78; + +35 +$maxLšeSize + = 78; + +39 +$this +-> +size + = +$maxLšeSize +; + +48 +public + +funùiÚ + + `£tStyË +( +$Çme +, +$ÝtiÚs + = + $¬¿y +()) + +50 + } +} + +60 +public + +funùiÚ + +fÜm© +( +$‹xt + = '', +$·¿m‘”s + = + $¬¿y +()) + +62  +$‹xt +; + +63 + } +} + +72 +public + +funùiÚ + + $fÜm©SeùiÚ +( +$£ùiÚ +, +$‹xt +, +$size + = +nuÎ +) + +74 ià(! +$size +) + +76 +$size + = +$this +-> +size +; + +79 +$£ùiÚ + = + `¥rštf +('>> %-9s ', $section); + +81  +$£ùiÚ +. +$this +-> + `exû½t +( +$‹xt +, +$size + - + `¡¾’ +($section)); + +82 + } +} + +92 +public + +funùiÚ + + $exû½t +( +$‹xt +, +$size + = +nuÎ +) + +94 ià(! +$size +) + +96 +$size + = +$this +-> +size +; + +99 ià( + `¡¾’ +( +$‹xt +è< +$size +) + +101  +$‹xt +; + +104 +$subsize + = + `æoÜ +(( +$size + - 3) / 2); + +106  + `sub¡r +( +$‹xt +, 0, +$subsize +).'...'.substr($text, -$subsize); + +107 + } +} + +114 +public + +funùiÚ + + $£tMaxLšeSize +( +$size +) + +116 +$this +-> +size + = +$size +; + +117 + } +} + + @lib/vendor/symfony/lib/command/sfSymfonyCommandApplication.class.php + +1 +ÝtiÚs +['symfony_lib_dir'])) + +30 +throw + +Ãw + + `sfIn™Ÿliz©iÚExû±iÚ +('You must…ass‡ "symfony_lib_dir" option.'); + +33 +$cÚfigu¿tiÚFže + = + `g‘cwd +().'/config/ProjectConfiguration.class.php'; + +34 ià( + `is_»adabË +( +$cÚfigu¿tiÚFže +)) + +36 +»quœe_Úû + +$cÚfigu¿tiÚFže +; + +37 +$cÚfigu¿tiÚ + = +Ãw + + `ProjeùCÚfigu¿tiÚ +( + `g‘cwd +(), +$this +-> +di¥©ch” +); + +41 +$cÚfigu¿tiÚ + = +Ãw + + `sfProjeùCÚfigu¿tiÚ +( + `g‘cwd +(), +$this +-> +di¥©ch” +); + +45 +$this +-> + `£tName +('symfony'); + +46 +$this +-> + `£tV”siÚ +( +SYMFONY_VERSION +); + +48 +$this +-> + `lßdTasks +( +$cÚfigu¿tiÚ +); + +58 +public + +funùiÚ + + $run +( +$ÝtiÚs + = +nuÎ +) + +60 +$this +-> + `hªdËO±iÚs +( +$ÝtiÚs +); + +61 +$¬gum’ts + = +$this +-> +commªdMªag” +-> + `g‘Argum’tV®ues +(); + +63 ià(! + `is£t +( +$¬gum’ts +['task'])) + +65 +$¬gum’ts +['task'] = 'list'; + +66 +$this +-> +commªdO±iÚs + .ð +$¬gum’ts +['task']; + +69 +$this +-> +cu¼’tTask + = $this-> + `g‘TaskToExecu‹ +( +$¬gum’ts +['task']); + +71 ià( +$this +-> +cu¼’tTask + +š¡ªûof + +sfCommªdAµliÿtiÚTask +) + +73 +$this +-> +cu¼’tTask +-> + `£tCommªdAµliÿtiÚ +($this); + +76 +$»t + = +$this +-> +cu¼’tTask +-> + `runFromCLI +($this-> +commªdMªag” +, $this-> +commªdO±iÚs +); + +78 +$this +-> +cu¼’tTask + = +nuÎ +; + +80  +$»t +; + +81 + } +} + +90 +public + +funùiÚ + + $lßdTasks +( +sfProjeùCÚfigu¿tiÚ + +$cÚfigu¿tiÚ +) + +93 +$dœs + = + `¬¿y +( +sfCÚfig +:: + `g‘ +('sf_symfony_lib_dir').'/task'); + +96 + `fܗch + ( +$cÚfigu¿tiÚ +-> + `g‘PlugšP©hs +(è +as + +$·th +) + +98 ià( + `is_dœ +( +$skP©h + = +$·th +.'/lib/task')) + +100 +$dœs +[] = +$skP©h +; + +105 +$dœs +[] = +sfCÚfig +:: + `g‘ +('sf_lib_dir').'/task'; + +107 +$fšd” + = +sfFšd” +:: + `ty³ +('fže')-> + `Çme +('*Task.class.php'); + +108 + `fܗch + ( +$fšd” +-> + `š +( +$dœs +è +as + +$fže +) + +110 +$this +-> +skFžes +[ + `ba£Çme +( +$fže +, '.class.php')] = $file; + +114 + `¥l_autÞßd_»gi¡” +( + `¬¿y +( +$this +, 'autoloadTask')); + +117 + `fܗch + ( +$this +-> +skFžes + +as + +$sk + => +$fže +) + +120 + `þass_exi¡s +( +$sk +, +Œue +); + +124 + `¥l_autÞßd_uÄegi¡” +( + `¬¿y +( +$this +, 'autoloadTask')); + +125 + } +} + +134 +public + +funùiÚ + + $autÞßdTask +( +$þass +) + +136 ià( + `is£t +( +$this +-> +skFžes +[ +$þass +])) + +138 +»quœe_Úû + +$this +-> +skFžes +[ +$þass +]; + +140  +Œue +; + +143  +çl£ +; + +144 + } +} + +149 +public + +funùiÚ + + $g‘LÚgV”siÚ +() + +151  + `¥rštf +('% v”siÚ % (%s)', +$this +-> + `g‘Name +(), $this-> +fÜm©‹r +-> + `fÜm© +($this-> + `g‘V”siÚ +(), 'INFO'), +sfCÚfig +:: + `g‘ +('sf_symfony_lib_dir'))."\n"; + +152 + } +} + + @lib/vendor/symfony/lib/config/sfApplicationConfiguration.class.php + +1 +’vœÚm’t + = +$’vœÚm’t +; + +44 +$this +-> +debug + = ( +boޗn +è +$debug +; + +45 +$this +-> +­¶iÿtiÚ + = + `¡r_»¶aû +('CÚfigu¿tiÚ', '', + `g‘_þass +($this)); + +47 +·»Á +:: + `__cÚ¡ruù +( +$roÙDœ +, +$di¥©ch” +); + +49 +$this +-> + `cÚfigu» +(); + +51 +$this +-> + `š™CÚfigu¿tiÚ +(); + +53 ià( +sfCÚfig +:: + `g‘ +('sf_check_lock')) + +55 +$this +-> + `checkLock +(); + +58 ià( + `fže_exi¡s +( +$fže + = +sfCÚfig +:: + `g‘ +('sf_app_cache_dir').'/config/configuration.php')) + +60 +$this +-> +ÿche + = +»quœe + +$fže +; + +63 +$this +-> + `š™Ÿlize +(); + +66 +$this +-> +cÚfig + = +sfCÚfig +:: + `g‘AÎ +(); + +74 +public + +funùiÚ + + $cÚfigu» +() + +76 + } +} + +83 +public + +funùiÚ + + $š™Ÿlize +() + +85 + } +} + +87 +public + +funùiÚ + + $aùiv©e +() + +89 +sfCÚfig +:: + `þ—r +(); + +90 +sfCÚfig +:: + `add +( +$this +-> +cÚfig +); + +91 + } +} + +96 +public + +funùiÚ + + $š™CÚfigu¿tiÚ +() + +98 +$cÚfigCache + = +$this +-> + `g‘CÚfigCache +(); + +101 ià( +$this +-> + `isDebug +(è&& ! +sfWebDebugPª–Tim” +:: + `isS¹ed +()) + +103 +sfWebDebugPª–Tim” +:: + `¡¬tTime +(); + +107 ià(! +$this +-> + `isDebug +(è&& ! +sfCÚfig +:: + `g‘ +('sf_‹¡'è&& ! +£lf +:: +$cÜeLßded +) + +109 +$cÚfigCache +-> + `impÜt +('cÚfig/cÜe_compže.yml', +çl£ +); + +113 +$this +-> +di¥©ch” +-> + `cÚÃù +('autÞßd.fž‹r_cÚfig', + `¬¿y +($this, 'filterAutoloadConfig')); + +114 +sfAutÞßd +:: + `g‘In¡ªû +()->(); + +115 ià( +$this +-> + `isDebug +()) + +117 +sfAutÞßdAgaš +:: + `g‘In¡ªû +()->(); + +121 + `šþude +( +$cÚfigCache +-> + `checkCÚfig +('config/settings.yml')); + +122 ià( +$fže + = +$cÚfigCache +-> + `checkCÚfig +('cÚfig/­p.yml', +Œue +)) + +124 + `šþude +( +$fže +); + +127 ià( +çl£ + !=ð +sfCÚfig +:: + `g‘ +('sf_csrf_secret')) + +129 +sfFÜm +:: + `’abËCSRFPrÙeùiÚ +( +sfCÚfig +:: + `g‘ +('sf_csrf_secret')); + +132 +sfWidg‘ +:: + `£tCh¬£t +( +sfCÚfig +:: + `g‘ +('sf_charset')); + +133 +sfV®id©ÜBa£ +:: + `£tCh¬£t +( +sfCÚfig +:: + `g‘ +('sf_charset')); + +136 ià( +$deçuÉ_timezÚe + = +sfCÚfig +:: + `g‘ +('sf_default_timezone')) + +138 + `d©e_deçuÉ_timezÚe_£t +( +$deçuÉ_timezÚe +); + +140 ià( +sfCÚfig +:: + `g‘ +('sf_fÜû_deçuÉ_timezÚe', +Œue +)) + +142 + `d©e_deçuÉ_timezÚe_£t +(@ + `d©e_deçuÉ_timezÚe_g‘ +()); + +146 + `ši_£t +('di¥Ïy_”rÜs', +$this +-> + `isDebug +() ? 'on' : 'off'); + +147 + `”rÜ_»pÜtšg +( +sfCÚfig +:: + `g‘ +('sf_error_reporting')); + +150 +$this +-> + `š™ŸlizePlugšs +(); + +153 ià(! +£lf +:: +$cÜeLßded + && +sfCÚfig +:: + `g‘ +('sf_compressed')) + +155 + `ob_¡¬t +('ob_gzhandler'); + +158 +£lf +:: +$cÜeLßded + = +Œue +; + +159 + } +} + +164 +´Ùeùed + +funùiÚ + + $š™ŸlizePlugšs +() + +166 + `fܗch + ( +$this +-> +¶ugšCÚfigu¿tiÚs + +as + +$Çme + => +$cÚfigu¿tiÚ +) + +169 +çl£ + ==ð +$cÚfigu¿tiÚ +-> + `š™Ÿlize +() + +171 + `is_»adabË +( +$cÚfig + = +$cÚfigu¿tiÚ +-> + `g‘RoÙDœ +().'/config/config.php') + +174 +»quœe + +$cÚfig +; + +177 + } +} + +187 +public + +funùiÚ + + $fž‹rAutÞßdCÚfig +( +sfEv’t + +$ev’t +, +¬¿y + +$cÚfig +) + +189 + `fܗch + ( +$this +-> +¶ugšCÚfigu¿tiÚs + +as + +$Çme + => +$cÚfigu¿tiÚ +) + +191 +$cÚfig + = +$cÚfigu¿tiÚ +-> + `fž‹rAutÞßdCÚfig +( +$ev’t +, $config); + +194  +$cÚfig +; + +195 + } +} + +202 +public + +funùiÚ + + $g‘CÚfigCache +() + +204 ià( +nuÎ + ==ð +$this +-> +cÚfigCache +) + +206 +$this +-> +cÚfigCache + = +Ãw + + `sfCÚfigCache +($this); + +209  +$this +-> +cÚfigCache +; + +210 + } +} + +217 +public + +funùiÚ + + $checkLock +() + +220 +$this +-> + `hasLockFže +( +sfCÚfig +:: + `g‘ +('sf_d©a_dœ'). +DIRECTORY_SEPARATOR +.$this-> + `g‘AµliÿtiÚ +().'_'.$this-> + `g‘EnvœÚm’t +().'-cli.lck', 5) + +222 +$this +-> + `hasLockFže +( +sfCÚfig +:: + `g‘ +('sf_d©a_dœ'). +DIRECTORY_SEPARATOR +.$this-> + `g‘AµliÿtiÚ +().'_'.$this-> + `g‘EnvœÚm’t +().'.lck') + +226 +$fžes + = + `¬¿y +( + +227 +sfCÚfig +:: + `g‘ +('sf_app_config_dir').'/unavailable.php', + +228 +sfCÚfig +:: + `g‘ +('sf_config_dir').'/unavailable.php', + +229 +sfCÚfig +:: + `g‘ +('sf_web_dir').'/errors/unavailable.php', + +230 +$this +-> + `g‘SymfÚyLibDœ +().'/exception/data/unavailable.php', + +233 + `fܗch + ( +$fžes + +as + +$fže +) + +235 ià( + `is_»adabË +( +$fže +)) + +237 + `h—d” +("HTTP/1.1 503 Service Temporarily Unavailable"); + +238 + `h—d” +("Status: 503 Service Temporarily Unavailable"); + +240 +šþude + +$fže +; + +245 + `d› +(1); + +247 + } +} + +257 +´Ùeùed + +funùiÚ + + $hasLockFže +( +$lockFže +, +$maxLockFžeLiãTime + = 0) + +259 +$isLocked + = +çl£ +; + +260 ià( + `is_»adabË +( +$lockFže +è&& ( +$Ï¡_acûss + = + `fž—time +($lockFile))) + +262 +$now + = + `time +(); + +263 +$timeDiff + = +$now + - +$Ï¡_acûss +; + +265 ià(! +$maxLockFžeLiãTime + || +$timeDiff + < $maxLockFileLifeTime) + +267 +$isLocked + = +Œue +; + +271 +$isLocked + = @ + `uƚk +( +$lockFže +è? +çl£ + : +Œue +; + +275  +$isLocked +; + +276 + } +} + +283 +public + +funùiÚ + + $£tRoÙDœ +( +$roÙDœ +) + +285 +·»Á +:: + `£tRoÙDœ +( +$roÙDœ +); + +287 +sfCÚfig +:: + `add +( + `¬¿y +( + +288 'sf_­p' => +$this +-> + `g‘AµliÿtiÚ +(), + +289 'sf_’vœÚm’t' => +$this +-> + `g‘EnvœÚm’t +(), + +290 'sf_debug' => +$this +-> + `isDebug +(), + +293 +$this +-> + `£tAµDœ +( +sfCÚfig +:: + `g‘ +('sf_­ps_dœ'). +DIRECTORY_SEPARATOR +.$this-> + `g‘AµliÿtiÚ +()); + +294 + } +} + +301 +public + +funùiÚ + + $£tAµDœ +( +$­pDœ +) + +303 +sfCÚfig +:: + `add +( + `¬¿y +( + +304 'sf_­p_dœ' => +$­pDœ +, + +307 'sf_­p_cÚfig_dœ' => +$­pDœ +. +DIRECTORY_SEPARATOR +.'config', + +308 'sf_­p_lib_dœ' => +$­pDœ +. +DIRECTORY_SEPARATOR +.'lib', + +309 'sf_­p_moduË_dœ' => +$­pDœ +. +DIRECTORY_SEPARATOR +.'modules', + +310 'sf_­p_‹m¶©e_dœ' => +$­pDœ +. +DIRECTORY_SEPARATOR +.'templates', + +311 'sf_­p_i18n_dœ' => +$­pDœ +. +DIRECTORY_SEPARATOR +.'i18n', + +313 + } +} + +318 +public + +funùiÚ + + $£tCacheDœ +( +$ÿcheDœ +) + +320 +·»Á +:: + `£tCacheDœ +( +$ÿcheDœ +); + +322 +sfCÚfig +:: + `add +( + `¬¿y +( + +323 'sf_­p_ba£_ÿche_dœ' => +$ÿcheDœ +. +DIRECTORY_SEPARATOR +. +$this +-> + `g‘AµliÿtiÚ +(), + +324 'sf_­p_ÿche_dœ' => +$­pCacheDœ + = +$ÿcheDœ +. +DIRECTORY_SEPARATOR +. +$this +-> + `g‘AµliÿtiÚ +().DIRECTORY_SEPARATOR.$this-> + `g‘EnvœÚm’t +(), + +327 'sf_‹m¶©e_ÿche_dœ' => +$­pCacheDœ +. +DIRECTORY_SEPARATOR +.'template', + +328 'sf_i18n_ÿche_dœ' => +$­pCacheDœ +. +DIRECTORY_SEPARATOR +.'i18n', + +329 'sf_cÚfig_ÿche_dœ' => +$­pCacheDœ +. +DIRECTORY_SEPARATOR +.'config', + +330 'sf_‹¡_ÿche_dœ' => +$­pCacheDœ +. +DIRECTORY_SEPARATOR +.'test', + +331 'sf_moduË_ÿche_dœ' => +$­pCacheDœ +. +DIRECTORY_SEPARATOR +.'modules', + +333 + } +} + +342 +public + +funùiÚ + + $g‘CڌÞËrDœs +( +$moduËName +) + +344 ià(! + `is£t +( +$this +-> +ÿche +['g‘CڌÞËrDœs'][ +$moduËName +])) + +346 +$dœs + = + `¬¿y +(); + +348 +$dœs +[ +sfCÚfig +:: + `g‘ +('sf_­p_moduË_dœ').'/'. +$moduËName +.'/aùiÚs'] = +çl£ +; + +350 + `fܗch + ( +$this +-> + `g‘PlugšP©hs +(è +as + +$·th +) + +352 ià( + `is_dœ +( +$dœ + = +$·th +.'/moduËs/'. +$moduËName +.'/actions')) + +354 +$dœs +[ +$dœ +] = +Œue +; + +358 ià( + `is_dœ +( +$dœ + = +$this +-> + `g‘SymfÚyLibDœ +().'/cڌÞËr/'. +$moduËName +.'/actions')) + +360 +$dœs +[ +$dœ +] = +Œue +; + +363 +$this +-> +ÿche +['g‘CڌÞËrDœs'][ +$moduËName +] = +$dœs +; + +366  +$this +-> +ÿche +['g‘CڌÞËrDœs'][ +$moduËName +]; + +367 + } +} + +376 +public + +funùiÚ + + $g‘LibDœs +( +$moduËName +) + +378 +$dœs + = + `¬¿y +(); + +380 +$dœs +[] = +sfCÚfig +:: + `g‘ +('sf_­p_moduË_dœ').'/'. +$moduËName +.'/lib'; + +381 +$dœs + = + `¬¿y_m”ge +($dœs, +$this +-> + `g‘PlugšSubP©hs +('/moduËs/'. +$moduËName +.'/lib')); + +382 +$dœs +[] = +$this +-> + `g‘SymfÚyLibDœ +().'/cڌÞËr/'. +$moduËName +.'/lib'; + +383 +$dœs +[] = +sfCÚfig +:: + `g‘ +('sf_moduË_ÿche_dœ').'/auto'. + `ucfœ¡ +( +$moduËName +.'/lib'); + +385  +$dœs +; + +386 + } +} + +395 +public + +funùiÚ + + $g‘Tem¶©eDœs +( +$moduËName +) + +397 +$dœs + = + `¬¿y +(); + +399 +$dœs +[] = +sfCÚfig +:: + `g‘ +('sf_­p_moduË_dœ').'/'. +$moduËName +.'/templates'; + +400 +$dœs + = + `¬¿y_m”ge +($dœs, +$this +-> + `g‘PlugšSubP©hs +('/moduËs/'. +$moduËName +.'/templates')); + +401 +$dœs +[] = +$this +-> + `g‘SymfÚyLibDœ +().'/cڌÞËr/'. +$moduËName +.'/templates'; + +402 +$dœs +[] = +sfCÚfig +:: + `g‘ +('sf_moduË_ÿche_dœ').'/auto'. + `ucfœ¡ +( +$moduËName +.'/templates'); + +404  +$dœs +; + +405 + } +} + +414 +public + +funùiÚ + +g‘H–³rDœs +( +$moduËName + = '') + +416 +$dœs + = +¬¿y +(); + +418 ià( + g$moduËName +) + +420 + g$dœs +[] = +sfCÚfig +:: +g‘ +('sf_­p_moduË_dœ').'/'. +$moduËName +.'/lib/helper'; + +422 + g$dœs + = +¬¿y_m”ge +( +$dœs +, +$this +-> +g‘PlugšSubP©hs +('/moduËs/'. +$moduËName +.'/lib/helper')); + +425  +¬¿y_m”ge +( + +426 +$dœs +, + +427 +¬¿y +( + +428 +sfCÚfig +:: +g‘ +('sf_app_lib_dir').'/helper', + +429 +sfCÚfig +:: +g‘ +('sf_lib_dir').'/helper', + +431 +$this +-> +g‘PlugšSubP©hs +('/lib/helper'), + +432 +¬¿y +( +$this +-> +g‘SymfÚyLibDœ +().'/helper') + +444 +public + +funùiÚ + + $g‘Tem¶©eDœ +( +$moduËName +, +$‹m¶©eFže +) + +446 ià(! + `is£t +( +$this +-> +ÿche +['g‘Tem¶©eDœ'][ +$moduËName +][ +$‹m¶©eFže +])) + +448 +$this +-> +ÿche +['g‘Tem¶©eDœ'][ +$moduËName +][ +$‹m¶©eFže +] = +nuÎ +; + +449 + `fܗch + ( +$this +-> + `g‘Tem¶©eDœs +( +$moduËName +è +as + +$dœ +) + +451 ià( + `is_»adabË +( +$dœ +.'/'. +$‹m¶©eFže +)) + +453 +$this +-> +ÿche +['g‘Tem¶©eDœ'][ +$moduËName +][ +$‹m¶©eFže +] = +$dœ +; + +459  +$this +-> +ÿche +['g‘Tem¶©eDœ'][ +$moduËName +][ +$‹m¶©eFže +]; + +460 + } +} + +470 +public + +funùiÚ + + $g‘Tem¶©eP©h +( +$moduËName +, +$‹m¶©eFže +) + +472 +$dœ + = +$this +-> + `g‘Tem¶©eDœ +( +$moduËName +, +$‹m¶©eFže +); + +474  +$dœ + ? $dœ.'/'. +$‹m¶©eFže + : +nuÎ +; + +475 + } +} + +479 +public + +funùiÚ + + $g‘PlugšP©hs +() + +481 ià(! + `is£t +( +$this +-> +ÿche +['getPluginPaths'])) + +483 +$this +-> +ÿche +['g‘PlugšP©hs'] = +·»Á +:: + `g‘PlugšP©hs +(); + +486  +$this +-> +ÿche +['getPluginPaths']; + +487 + } +} + +494 +public + +funùiÚ + + $g‘DecÜ©ÜDœs +() + +496  + `¬¿y +( +sfCÚfig +:: + `g‘ +('sf_app_template_dir')); + +497 + } +} + +506 +public + +funùiÚ + + $g‘DecÜ©ÜDœ +( +$‹m¶©e +) + +508 + `fܗch + ( +$this +-> + `g‘DecÜ©ÜDœs +(è +as + +$dœ +) + +510 ià( + `is_»adabË +( +$dœ +.'/'. +$‹m¶©e +)) + +512  +$dœ +; + +515 + } +} + +522 +public + +funùiÚ + + $g‘I18NGlob®Dœs +() + +524 +$dœs + = + `¬¿y +(); + +527 ià( + `is_dœ +( +$dœ + = +sfCÚfig +:: + `g‘ +('sf_app_i18n_dir'))) + +529 +$dœs +[] = +$dœ +; + +533  + `¬¿y_m”ge +( +$dœs +, +$this +-> + `g‘PlugšSubP©hs +('/i18n')); + +534 + } +} + +543 +public + +funùiÚ + + $g‘I18NDœs +( +$moduËName +) + +545 +$dœs + = + `¬¿y +(); + +548 ià( + `is_dœ +( +$dœ + = +sfCÚfig +:: + `g‘ +('sf_­p_moduË_dœ').'/'. +$moduËName +.'/i18n')) + +550 +$dœs +[] = +$dœ +; + +554 ià( + `is_dœ +( +$dœ + = +sfCÚfig +:: + `g‘ +('sf_app_i18n_dir'))) + +556 +$dœs +[] = +$dœ +; + +559  + `¬¿y_m”ge +( + +560 +$dœs +, + +561 +$this +-> + `g‘PlugšSubP©hs +('/moduËs/'. +$moduËName +.'/i18n'), + +562 +$this +-> + `g‘PlugšSubP©hs +('/i18n') + +564 + } +} + +573 +public + +funùiÚ + + $g‘CÚfigP©hs +( +$cÚfigP©h +) + +575 +$glob®CÚfigP©h + = + `ba£Çme +( + `dœÇme +( +$cÚfigP©h +)).'/'.basename($configPath); + +577 +$fžes + = + `¬¿y +( + +578 +$this +-> + `g‘SymfÚyLibDœ +().'/cÚfig/'. +$glob®CÚfigP©h +, + +581 + `fܗch + ( +$this +-> + `g‘PlugšP©hs +(è +as + +$·th +) + +583 ià( + `is_fže +( +$fže + = +$·th +.'/'. +$glob®CÚfigP©h +)) + +585 +$fžes +[] = +$fže +; + +589 +$fžes + = + `¬¿y_m”ge +($fžes, + `¬¿y +( + +590 +$this +-> + `g‘RoÙDœ +().'/'. +$glob®CÚfigP©h +, + +591 +$this +-> + `g‘RoÙDœ +().'/'. +$cÚfigP©h +, + +592 +sfCÚfig +:: + `g‘ +('sf_­p_dœ').'/'. +$glob®CÚfigP©h +, + +593 +sfCÚfig +:: + `g‘ +('sf_­p_ÿche_dœ').'/'. +$cÚfigP©h +, + +596 + `fܗch + ( +$this +-> + `g‘PlugšP©hs +(è +as + +$·th +) + +598 ià( + `is_fže +( +$fže + = +$·th +.'/'. +$cÚfigP©h +)) + +600 +$fžes +[] = +$fže +; + +604 +$fžes +[] = +sfCÚfig +:: + `g‘ +('sf_­p_dœ').'/'. +$cÚfigP©h +; + +606 +$cÚfigs + = + `¬¿y +(); + +607 + `fܗch + ( + `¬¿y_unique +( +$fžes +è +as + +$fže +) + +609 ià( + `is_»adabË +( +$fže +)) + +611 +$cÚfigs +[] = +$fže +; + +615  +$cÚfigs +; + +616 + } +} + +624 +public + +funùiÚ + +lßdH–³rs +( +$h–³rs +, +$moduËName + = '') + +626 +fܗch + (( +¬¿y +è +$h–³rs + +as + +$h–³rName +) + +628 ià( +is£t +( +£lf +:: +$lßdedH–³rs +[ +$h–³rName +])) + +633 ià( +is£t +( +$this +-> +ÿche +['lßdedH–³rs'][ +$moduËName +][ +$h–³rName +])) + +635 +šþude_Úû + + g$this +-> + gÿche +['lßdedH–³rs'][ +$moduËName +][ +$h–³rName +]; + +637 ià( +is£t +( +$this +-> +ÿche +['lßdedH–³rs'][''][ +$h–³rName +])) + +639 +šþude_Úû + + g$this +-> + gÿche +['lßdedH–³rs'][''][ +$h–³rName +]; + +643 + g$fžeName + = +$h–³rName +.'Helper.php'; + +645 ià(! +is£t +( +$dœs +)) + +647 + g$dœs + = +$this +-> +g‘H–³rDœs +( +$moduËName +); + +650 +fܗch + ( +$dœs + +as + +$dœ +) + +652 + g$šþuded + = +çl£ +; + +653 ià( +is_»adabË +( +$dœ +.'/'. +$fžeName +)) + +655 +šþude_Úû + + g$dœ +.'/'. + g$fžeName +; + +656 + g$šþuded + = +Œue +; + +661 ià(! + g$šþuded +) + +663 +throw + +Ãw + +Inv®idArgum’tExû±iÚ +( +¥rštf +('UÇbˁØlßd "%sH–³r.php" h–³¸š: %s.', +$h–³rName +, +im¶ode +(', ', +¬¿y_m­ +( +¬¿y +('sfDebug', 'sh܋nFžeP©h'), +$dœs +)))); + +667 + g£lf +:: +$lßdedH–³rs +[ +$h–³rName +] = +Œue +; + +676 +public + +funùiÚ + + $g‘AµliÿtiÚ +() + +678  +$this +-> +­¶iÿtiÚ +; + +679 + } +} + +686 +public + +funùiÚ + + $g‘EnvœÚm’t +() + +688  +$this +-> +’vœÚm’t +; + +689 + } +} + +696 +public + +funùiÚ + + $isDebug +() + +698  +$this +-> +debug +; + +699 + } +} + + @lib/vendor/symfony/lib/config/sfAutoloadConfigHandler.class.php + +1 + `š™Ÿlize +( + `¬¿y +('required_categories' =>‡rray('autoload'))); + +37 +$d©a + = + `¬¿y +(); + +38 + `fܗch + ( +$this +-> + `·r£ +( +$cÚfigFžes +è +as + +$Çme + => +$m­pšg +) + +40 +$d©a +[] = + `¥rštf +("\À // %s", +$Çme +); + +42 + `fܗch + ( +$m­pšg + +as + +$þass + => +$fže +) + +44 +$d©a +[] = + `¥rštf +(" '%s' => '%s',", +$þass +, + `¡r_»¶aû +('\\', '\\\\', +$fže +)); + +49  + `¥rštf +(" + `·r£ +( +$cÚfigFžes +è +as + +$m­pšg +) + +60 + `fܗch + ( +$m­pšg + +as + +$þass + => +$fže +) + +62 +$m­pšgs +[ +$þass +] = +$fže +; + +66  +$m­pšgs +; + +67 + } +} + +69 +´Ùeùed + +funùiÚ + + $·r£ +( +¬¿y + +$cÚfigFžes +) + +72 +$cÚfig + = +£lf +:: + `g‘CÚfigu¿tiÚ +( +$cÚfigFžes +); + +74 +$m­pšgs + = + `¬¿y +(); + +75 + `fܗch + ( +$cÚfig +['autÞßd'] +as + +$Çme + => +$’Œy +) + +77 +$m­pšg + = + `¬¿y +(); + +80 ià( + `is£t +( +$’Œy +['files'])) + +83 + `fܗch + ( +$’Œy +['fžes'] +as + +$þass + => +$fže +) + +85 +$m­pšg +[ + `¡¹Þow” +( +$þass +)] = +$fže +; + +91 +$ext + = + `is£t +( +$’Œy +['ext']) ? $entry['ext'] : '.php'; + +92 +$·th + = +$’Œy +['path']; + +95 + `»quœe_Úû +( +sfCÚfig +:: + `g‘ +('sf_symfony_lib_dir').'/util/sfFinder.class.php'); + +96 +$fšd” + = +sfFšd” +:: + `ty³ +('fže')-> + `Çme +('*'. +$ext +)-> + `fÞlow_lšk +(); + +99 +$»cursive + = + `is£t +( +$’Œy +['»cursive']è? $’Œy['»cursive'] : +çl£ +; + +100 ià(! +$»cursive +) + +102 +$fšd” +-> + `maxd•th +(0); + +106 ià( + `is£t +( +$’Œy +['exþude']è&& + `is_¬¿y +($entry['exclude'])) + +108 +$fšd” +-> + `´uà +( +$’Œy +['exþude'])-> + `disÿrd +($entry['exclude']); + +111 ià( +$m©ches + = + `glob +( +$·th +)) + +113 + `fܗch + ( +$fšd” +-> + `š +( +$m©ches +è +as + +$fže +) + +115 +$m­pšg + = + `¬¿y_m”ge +($m­pšg, +$this +-> + `·r£Fže +( +$·th +, +$fže +, + `is£t +( +$’Œy +['prefix']) ? $entry['prefix'] : '')); + +120 +$m­pšgs +[ +$Çme +] = +$m­pšg +; + +123  +$m­pšgs +; + +124 + } +} + +126  +public + +funùiÚ + + $·r£Fže +( +$·th +, +$fže +, +$´efix +) + +128 +$m­pšg + = + `¬¿y +(); + +129 + `´eg_m©ch_®l +('~^\s*(?:ab¡¿ù\s+|fš®\s+)?(?:þass|š‹rçû)\s+(\w+)~mi', + `fže_g‘_cڋÁs +( +$fže +), +$þas£s +); + +130 + `fܗch + ( +$þas£s +[1] +as + +$þass +) + +132 +$loÿlP»fix + = ''; + +133 ià( +$´efix +) + +136 + `´eg_m©ch +('~^'. + `¡r_»¶aû +('\*', '(.+?)', + `´eg_quÙe +(¡r_»¶aû('/', +DIRECTORY_SEPARATOR +, +$·th +), '~')).'~', sŒ_»¶aû('/', DIRECTORY_SEPARATOR, +$fže +), +$m©ch +); + +137 ià( + `is£t +( +$m©ch +[ +$´efix +])) + +139 +$loÿlP»fix + = +$m©ch +[ +$´efix +].'/'; + +143 +$m­pšg +[ +$loÿlP»fix +. + `¡¹Þow” +( +$þass +)] = +$fže +; + +146  +$m­pšg +; + +147 + } +} + +152  +public + +funùiÚ + + $g‘CÚfigu¿tiÚ +( +¬¿y + +$cÚfigFžes +) + +154 +$cÚfigu¿tiÚ + = +sfProjeùCÚfigu¿tiÚ +:: + `g‘Aùive +(); + +156 +$¶ugšP©hs + = +$cÚfigu¿tiÚ +-> + `g‘PlugšP©hs +(); + +157 +$¶ugšCÚfigFžes + = + `¬¿y +(); + +160 + `fܗch + ( +$cÚfigFžes + +as + +$i + => +$cÚfigFže +) + +162 +$cÚfigFžeP©h + = + `¡r_»¶aû +( +DIRECTORY_SEPARATOR +, '/', +$cÚfigFže +); + +163 +$·th + = + `¡r_»¶aû +( +DIRECTORY_SEPARATOR +, '/', + `»®·th +( + `još +('/', + `¬¿y_¦iû +( + `ex¶ode +('/', +$cÚfigFžeP©h +), 0, -2)))); + +164 ià( + `š_¬¿y +( +$·th +, +$¶ugšP©hs +)) + +166 +$¶ugšCÚfigFžes +[] = +$cÚfigFže +; + +167 + `un£t +( +$cÚfigFžes +[ +$i +]); + +171 +$cÚfigFžes + = + `¬¿y_m”ge +( +$¶ugšCÚfigFžes +, $configFiles); + +173 +$cÚfig + = +£lf +:: + `»¶aûCÚ¡ªts +(£lf:: + `·r£Yamls +( +$cÚfigFžes +)); + +175 + `fܗch + ( +$cÚfig +['autÞßd'] +as + +$Çme + => +$v®ues +) + +177 ià( + `is£t +( +$v®ues +['path'])) + +179 +$cÚfig +['autÞßd'][ +$Çme +]['·th'] = +£lf +:: + `»¶aûP©h +( +$v®ues +['path']); + +183 +$ev’t + = +$cÚfigu¿tiÚ +-> + `g‘Ev’tDi¥©ch” +()-> + `fž‹r +( +Ãw + + `sfEv’t +( +__CLASS__ +, 'autÞßd.fž‹r_cÚfig'), +$cÚfig +); + +184 +$cÚfig + = +$ev’t +-> + `g‘R‘uºV®ue +(); + +186  +$cÚfig +; + +187 + } +} + + @lib/vendor/symfony/lib/config/sfCacheConfigHandler.class.php + +1 +yamlCÚfig + = +£lf +:: + `g‘CÚfigu¿tiÚ +( +$cÚfigFžes +); + +41 +$d©a + = + `¬¿y +(); + +42 +$fœ¡ + = +Œue +; + +43 + `fܗch + ( +$this +-> +yamlCÚfig + +as + +$aùiÚName + => +$v®ues +) + +45 ià( +$aùiÚName + == 'all') + +50 +$d©a +[] = +$this +-> + `addCache +( +$aùiÚName +); + +52 +$fœ¡ + = +çl£ +; + +56 +$d©a +[] = +$this +-> + `addCache +('DEFAULT'); + +59 +$»tv® + = + `¥rštf +(" + `g‘CÚfigV®ue +('’abËd', +$aùiÚName +); + +82 +$w™hLayout + = +$this +-> + `g‘CÚfigV®ue +('w™h_Ïyout', +$aùiÚName +) ? 'true' : 'false'; + +85 +$liãTime + = ! +$’abËd + ? '0' : +$this +-> + `g‘CÚfigV®ue +('liãtime', +$aùiÚName +, '0'); + +88 +$þ›ÁLiãtime + = ! +$’abËd + ? '0' : +$this +-> + `g‘CÚfigV®ue +('þ›Á_liãtime', +$aùiÚName +, +$liãTime +, '0'); + +91 +$cڋxtu® + = +$this +-> + `g‘CÚfigV®ue +('cڋxtu®', +$aùiÚName +) ? 'true' : 'false'; + +94 +$v¬y + = +$this +-> + `g‘CÚfigV®ue +('v¬y', +$aùiÚName +, + `¬¿y +()); + +95 ià(! + `is_¬¿y +( +$v¬y +)) + +97 +$v¬y + = + `¬¿y +($vary); + +101 +$d©a +[] = + `¥rštf +("\$this->addCache(\$moduleName, '%s',‡rray('withLayout' => %s, 'lifeTime' => %s, 'clientLifeTime' => %s, 'contextual' => %s, 'vary' => %s));\n", + +102 +$aùiÚName +, +$w™hLayout +, +$liãTime +, +$þ›ÁLiãtime +, +$cڋxtu® +, + `¡r_»¶aû +("\n", '', + `v¬_expÜt +( +$v¬y +, +Œue +))); + +104  + `im¶ode +("\n", +$d©a +); + +105 + } +} + +110  +public + +funùiÚ + + $g‘CÚfigu¿tiÚ +( +¬¿y + +$cÚfigFžes +) + +112  +£lf +:: + `橋nCÚfigu¿tiÚ +(£lf:: + `·r£Yamls +( +$cÚfigFžes +)); + +113 + } +} + + @lib/vendor/symfony/lib/config/sfCompileConfigHandler.class.php + +1 '', + +69 +$cڋÁs + = + `¡r_»¶aû +("\r", "\n", $contents); + +72 +$cڋÁs + = + `´eg_»¶aû +( + `¬¿y +('/\s+$/Sm', '/\n+/S'), "\n", $contents); + +75 +$d©a + .ð"\n". +$cڋÁs +; + +79 +$»tv® + = + `¥rštf +(" + `g‘CÚfigCache +(); + +96 +$cÚfigCache +-> + `checkCÚfig +( +$cÚfigFže +); + +98 +$cÚfig + = "// '$cÚfigFže' cÚfig fže\n". + `fže_g‘_cڋÁs +( +$cÚfigCache +-> + `g‘CacheName +( +$cÚfigFže +)); + +100  +$cÚfig +; + +101 + } +} + +106  +public + +funùiÚ + + $g‘CÚfigu¿tiÚ +( +¬¿y + +$cÚfigFžes +) + +108 +$cÚfig + = + `¬¿y +(); + +109 + `fܗch + ( +$cÚfigFžes + +as + +$cÚfigFže +) + +111 +$cÚfig + = + `¬¿y_m”ge +($cÚfig, +£lf +:: + `·r£Yaml +( +$cÚfigFže +)); + +114  +£lf +:: + `»¶aûP©h +(£lf:: + `»¶aûCÚ¡ªts +( +$cÚfig +)); + +115 + } +} + + @lib/vendor/symfony/lib/config/sfConfig.class.php + +1 +cÚfigu¿tiÚ + = +$cÚfigu¿tiÚ +; + +49 +´Ùeùed + +funùiÚ + + $ÿÎHªdËr +( +$hªdËr +, +$cÚfigs +, +$ÿche +) + +51 ià( + `couÁ +( +$this +-> +hªdËrs +) == 0) + +54 +$this +-> + `lßdCÚfigHªdËrs +(); + +57 ià( + `couÁ +( +$this +-> +u£rHªdËrs +) != 0) + +60 +$this +-> + `m”geU£rCÚfigHªdËrs +(); + +64 +$hªdËrIn¡ªû + = +nuÎ +; + +66 +$hªdËr + = + `¡r_»¶aû +( +DIRECTORY_SEPARATOR +, '/', $handler); + +69 +$ba£Çme + = + `ba£Çme +( +$hªdËr +); + +70 ià( + `is£t +( +$this +-> +hªdËrs +[ +$hªdËr +])) + +73 +$hªdËrIn¡ªû + = +$this +-> + `g‘HªdËr +( +$hªdËr +); + +75 ià( + `is£t +( +$this +-> +hªdËrs +[ +$ba£Çme +])) + +78 +$hªdËrIn¡ªû + = +$this +-> + `g‘HªdËr +( +$ba£Çme +); + +83 + `fܗch + ( + `¬¿y_keys +( +$this +-> +hªdËrs +è +as + +$key +) + +86 +$·‰”n + = + `¡¹r +( +$key +, + `¬¿y +('.' => '\.', '*' => '(.*?)')); + +87 +$m©ches + = + `¬¿y +(); + +90 ià( + `´eg_m©ch +('#'. +$·‰”n +.'$#', +$hªdËr +, +$m©ches +)) + +92 +$hªdËrIn¡ªû + = +$this +-> + `g‘HªdËr +( +$key +); + +93 + `¬¿y_shiá +( +$m©ches +); + +94 +$hªdËrIn¡ªû +-> + `g‘P¬am‘”HÞd” +()-> + `£t +('wždÿrdV®ues', +$m©ches +); + +101 ià(! +$hªdËrIn¡ªû +) + +104 +throw + +Ãw + + `sfCÚfigu¿tiÚExû±iÚ +( + `¥rštf +('CÚfigu¿tiÚ fž"%s" dÛ nÙ hav¨»gi¡”ed hªdËr.', + `im¶ode +(', ', +$cÚfigs +))); + +108 +$d©a + = +$hªdËrIn¡ªû +-> + `execu‹ +( +$cÚfigs +); + +110 +$this +-> + `wr™eCacheFže +( +$hªdËr +, +$ÿche +, +$d©a +); + +111 + } +} + +120 +´Ùeùed + +funùiÚ + + $g‘HªdËr +( +$Çme +) + +122 ià( + `is_¬¿y +( +$this +-> +hªdËrs +[ +$Çme +])) + +124 +$þass + = +$this +-> +hªdËrs +[ +$Çme +][0]; + +125 +$this +-> +hªdËrs +[ +$Çme +] = +Ãw + + `$þass +($this->handlers[$name][1]); + +128  +$this +-> +hªdËrs +[ +$Çme +]; + +129 + } +} + +149 +public + +funùiÚ + + $checkCÚfig +( +$cÚfigP©h +, +$ÝtiÚ® + = +çl£ +) + +151 ià( +sfCÚfig +:: + `g‘ +('sf_debug') && sfConfig::get('sf_logging_enabled')) + +153 +$tim” + = +sfTim”Mªag” +:: + `g‘Tim” +('Configuration'); + +157 +$ÿche + = +$this +-> + `g‘CacheName +( +$cÚfigP©h +); + +159 ià(! +sfCÚfig +:: + `g‘ +('sf_debug'è&& !sfCÚfig::g‘('sf_‹¡'è&& + `is_»adabË +( +$ÿche +)) + +161  +$ÿche +; + +164 ià(! +sfToÞk™ +:: + `isP©hAbsÞu‹ +( +$cÚfigP©h +)) + +166 +$fžes + = +$this +-> +cÚfigu¿tiÚ +-> + `g‘CÚfigP©hs +( +$cÚfigP©h +); + +170 +$fžes + = + `is_»adabË +( +$cÚfigP©h +è? + `¬¿y +($configPath) :‡rray(); + +173 ià(! + `is£t +( +$fžes +[0])) + +175 ià( +$ÝtiÚ® +) + +177  +nuÎ +; + +181 +throw + +Ãw + + `sfCÚfigu¿tiÚExû±iÚ +( + `¥rštf +('CÚfigu¿tiÚ "%s" dÛ nكxi¡ o¸i uėdabË.', +$cÚfigP©h +)); + +185 +$mtime + = 0; + +186 + `fܗch + ( +$fžes + +as + +$fže +) + +188 ià( + `fžemtime +( +$fže +è> +$mtime +) + +190 +$mtime + = + `fžemtime +( +$fže +); + +194 ià(! + `is_»adabË +( +$ÿche +è|| +$mtime + > + `fžemtime +($cache)) + +197 +$this +-> + `ÿÎHªdËr +( +$cÚfigP©h +, +$fžes +, +$ÿche +); + +200 ià( +sfCÚfig +:: + `g‘ +('sf_debug') && sfConfig::get('sf_logging_enabled')) + +202 +$tim” +-> + `addTime +(); + +205  +$ÿche +; + +206 + } +} + +211 +public + +funùiÚ + + $þ—r +() + +213 +sfToÞk™ +:: + `þ—rDœeùÜy +( +sfCÚfig +:: + `g‘ +('sf_config_cache_dir')); + +214 + } +} + +223 +public + +funùiÚ + + $g‘CacheName +( +$cÚfig +) + +225 ià( + `¡¾’ +( +$cÚfig +è> 3 && + `ùy³_®pha +($config[0]) && $config[1] == ':' && ($config[2] == '\\' || $config[2] == '/')) + +228 +$cÚfig + = + `sub¡r +($config, 3); + +232 +$cÚfig + = + `¡r_»¶aû +( + `¬¿y +('\\', '/', ' '), '_', $config); + +233 +$cÚfig + .= '.php'; + +235  +sfCÚfig +:: + `g‘ +('sf_cÚfig_ÿche_dœ').'/'. +$cÚfig +; + +236 + } +} + +247 +public + +funùiÚ + + $impÜt +( +$cÚfig +, +$Úû + = +Œue +, +$ÝtiÚ® + = +çl£ +) + +249 +$ÿche + = +$this +-> + `checkCÚfig +( +$cÚfig +, +$ÝtiÚ® +); + +251 ià( +$ÝtiÚ® + && ! +$ÿche +) + +257 ià( +$Úû +) + +259 + `šþude_Úû +( +$ÿche +); + +263 + `šþude +( +$ÿche +); + +265 + } +} + +272 +´Ùeùed + +funùiÚ + + $lßdCÚfigHªdËrs +() + +275 +$this +-> +hªdËrs +['cÚfig_hªdËrs.yml'] = +Ãw + + `sfRoÙCÚfigHªdËr +(); + +279 +»quœe + +$this +-> + `checkCÚfig +('config/config_handlers.yml'); + +284 ià(! + `is_»adabË +( +$sf_­p_moduË_dœ + = +sfCÚfig +:: + `g‘ +('sf_app_module_dir'))) + +290 +$ignÜe + = + `¬¿y +('.', '..', 'CVS', '.svn'); + +293 +$å + = + `ݒdœ +( +$sf_­p_moduË_dœ +); + +296 ( +$dœeùÜy + = + `»addœ +( +$å +)è!=ð +çl£ +) + +298 ià( + `š_¬¿y +( +$dœeùÜy +, +$ignÜe +)) + +303 +$cÚfigP©h + = +$sf_­p_moduË_dœ +.'/'. +$dœeùÜy +.'/config/config_handlers.yml'; + +305 ià( + `is_»adabË +( +$cÚfigP©h +)) + +308 +$·¿ms + = + `¬¿y +('moduË_Ëv–' => +Œue +, 'moduË_Çme' => +$dœeùÜy +); + +310 +$this +-> +hªdËrs +['cÚfig_hªdËrs.yml']-> + `š™Ÿlize +( +$·¿ms +); + +314 +$cÚfigP©h + = 'moduËs/'. +$dœeùÜy +.'/config/config_handlers.yml'; + +316 +»quœe + +$this +-> + `checkCÚfig +( +$cÚfigP©h +); + +321 + `þo£dœ +( +$å +); + +322 + } +} + +333 +´Ùeùed + +funùiÚ + + $wr™eCacheFže +( +$cÚfig +, +$ÿche +, +$d©a +) + +335 +$cu¼’t_umask + = + `umask +(0000); + +336 ià(! + `is_dœ +( + `dœÇme +( +$ÿche +))) + +338 ià( +çl£ + ==ð@ + `mkdœ +( + `dœÇme +( +$ÿche +), 0777, +Œue +)) + +340 +throw + +Ãw + + `sfCacheExû±iÚ +( + `¥rštf +('FažedØmakÿchdœeùÜy "%s" whžg’”©šg cachfÜ cÚfigu¿tiÚ fž"%s".', + `dœÇme +( +$ÿche +), +$cÚfig +)); + +344 +$tmpFže + = + `‹m²am +( + `dœÇme +( +$ÿche +), + `ba£Çme +($cache)); + +346 ià(! +$å + = @ + `fݒ +( +$tmpFže +, 'wb')) + +348 +throw + +Ãw + + `sfCacheExû±iÚ +( + `¥rštf +('FažedØwr™ÿchfž"%s" g’”©ed from cÚfigu¿tiÚ fž"%s".', +$tmpFže +, +$cÚfig +)); + +351 @ + `fwr™e +( +$å +, +$d©a +); + +352 @ + `fþo£ +( +$å +); + +357 ià(!@ + `»Çme +( +$tmpFže +, +$ÿche +)) + +359 ià( + `cÝy +( +$tmpFže +, +$ÿche +)) + +361 + `uƚk +( +$tmpFže +); + +365 + `chmod +( +$ÿche +, 0666); + +366 + `umask +( +$cu¼’t_umask +); + +367 + } +} + +376 +public + +funùiÚ + +»gi¡”CÚfigHªdËr +( +$hªdËr +, +$þass +, +$·¿ms + = + $¬¿y +()) + +378 +$this +-> +u£rHªdËrs +[ +$hªdËr +] = +Ãw + + `$þass +( +$·¿ms +); + +379 + } +} + +386 +´Ùeùed + +funùiÚ + + $m”geU£rCÚfigHªdËrs +() + +389 +$this +-> +hªdËrs + = + `¬¿y_m”ge +($this->hªdËrs, $this-> +u£rHªdËrs +); + +391 +$this +-> +u£rHªdËrs + = + `¬¿y +(); + +392 + } +} + + @lib/vendor/symfony/lib/config/sfConfigHandler.class.php + +1 + `š™Ÿlize +( +$·¿m‘”s +); + +47 +public + +funùiÚ + + $š™Ÿlize +( +$·¿m‘”s + = +nuÎ +) + +49 +$this +-> +·¿m‘”HÞd” + = +Ãw + + `sfP¬am‘”HÞd” +(); + +50 +$this +-> +·¿m‘”HÞd” +-> + `add +( +$·¿m‘”s +); + +51 + } +} + +63 +ab¡¿ù + +public + +funùiÚ + +execu‹ +( +$cÚfigFžes +); + +74  +public + +funùiÚ + + $»¶aûCÚ¡ªts +( +$v®ue +) + +76 ià( + `is_¬¿y +( +$v®ue +)) + +78 + `¬¿y_w®k_»cursive +( +$v®ue +, + `ü—‹_funùiÚ +('&$value', '$value = sfToolkit::replaceConstants($value);')); + +82 +$v®ue + = +sfToÞk™ +:: + `»¶aûCÚ¡ªts +($value); + +85  +$v®ue +; + +86 + } +} + +95  +public + +funùiÚ + + $»¶aûP©h +( +$·th +) + +97 ià( + `is_¬¿y +( +$·th +)) + +99 + `¬¿y_w®k_»cursive +( +$·th +, + `ü—‹_funùiÚ +('&$path', '$path = sfConfigHandler::replacePath($path);')); + +103 ià(! +sfToÞk™ +:: + `isP©hAbsÞu‹ +( +$·th +)) + +106 +$·th + = +sfCÚfig +:: + `g‘ +('sf_app_dir').'/'.$path; + +110  +$·th +; + +111 + } +} + +118 +public + +funùiÚ + + $g‘P¬am‘”HÞd” +() + +120  +$this +-> +·¿m‘”HÞd” +; + +121 + } +} + +129  +public + +funùiÚ + + $g‘CÚfigu¿tiÚ +( +¬¿y + +$cÚfigFžes +) + +131 +throw + +Ãw + + `LogicExû±iÚ +('You must callhe ::getConfiguration() method on‡ concrete config handler class'); + +132 + } +} + + @lib/vendor/symfony/lib/config/sfDatabaseConfigHandler.class.php + +1 + `·r£ +( +$cÚfigFžes +); + +39 + `fܗch + ( +$šþudes + +as + +$i + => +$šþude +) + +41 +$šþudes +[ +$i +] = + `¥rštf +("»quœe_Úû('%s');", +$šþude +); + +44 + `fܗch + ( +$d©a + +as + +$Çme + => +$d©aba£ +) + +46 +$d©a +[ +$Çme +] = + `¥rštf +("\n'%s' =>‚ew %s(%s),", $Çme, +$d©aba£ +[0], + `v¬_expÜt +($d©aba£[1], +Œue +)); + +50  + `¥rštf +(" + `·r£ +( +$cÚfigFžes +); + +60 + `fܗch + ( +$šþudes + +as + +$i + => +$šþude +) + +62 + `»quœe_Úû +( +$šþude +); + +65 +$d©aba£s + = + `¬¿y +(); + +66 + `fܗch + ( +$d©a + +as + +$Çme + => +$d©aba£ +) + +68 +$d©aba£s +[ +$Çme +] = +Ãw + +$d©aba£ +[0]($database[1]); + +71  +$d©aba£s +; + +72 + } +} + +74 +´Ùeùed + +funùiÚ + + $·r£ +( +$cÚfigFžes +) + +77 +$cÚfig + = +£lf +:: + `g‘CÚfigu¿tiÚ +( +$cÚfigFžes +); + +80 +$d©a + = + `¬¿y +(); + +81 +$d©aba£s + = + `¬¿y +(); + +82 +$šþudes + = + `¬¿y +(); + +85 + `fܗch + ( +$cÚfig + +as + +$Çme + => +$dbCÚfig +) + +88 ià( + `š_¬¿y +( +$Çme +, +$d©aba£s +)) + +91 +throw + +Ãw + + `sfP¬£Exû±iÚ +( + `¥rštf +('CÚfigu¿tiÚ fž"%s" s³cif› ´eviou¦y„egi¡”ed c©egÜy "%s".', +$cÚfigFžes +[0], +$Çme +)); + +95 +$d©aba£s +[] = +$Çme +; + +98 ià(! + `is£t +( +$dbCÚfig +['class'])) + +101 +throw + +Ãw + + `sfP¬£Exû±iÚ +( + `¥rštf +('CÚfigu¿tiÚ fž"%s" s³cif› ÿ‹gÜy "%s" w™h missšg cÏs key.', +$cÚfigFžes +[0], +$Çme +)); + +104 ià( + `is£t +( +$dbCÚfig +['file'])) + +107 ià(! + `is_»adabË +( +$dbCÚfig +['file'])) + +110 +throw + +Ãw + + `sfP¬£Exû±iÚ +( + `¥rštf +('CÚfigu¿tiÚ fž"%s" s³cif› þas "%s" w™h‚Úexi¡’ˆÜ uėdabË fž"%s".', +$cÚfigFžes +[0], +$dbCÚfig +['class'], $dbConfig['file'])); + +114 +$šþudes +[] = +$dbCÚfig +['file']; + +118 +$·¿m‘”s + = + `¬¿y +(); + +119 ià( + `is£t +( +$dbCÚfig +['param'])) + +121 +$·¿m‘”s + = +$dbCÚfig +['param']; + +123 +$·¿m‘”s +['Çme'] = +$Çme +; + +126 +$d©a +[ +$Çme +] = + `¬¿y +( +$dbCÚfig +['þass'], +$·¿m‘”s +); + +129  + `¬¿y +( +$šþudes +, +$d©a +); + +130 + } +} + +135  +public + +funùiÚ + + $g‘CÚfigu¿tiÚ +( +¬¿y + +$cÚfigFžes +) + +137 +$cÚfig + = +£lf +:: + `»¶aûCÚ¡ªts +(£lf:: + `橋nCÚfigu¿tiÚW™hEnvœÚm’t +(£lf:: + `·r£Yamls +( +$cÚfigFžes +))); + +139 + `fܗch + ( +$cÚfig + +as + +$Çme + => +$dbCÚfig +) + +141 ià( + `is£t +( +$dbCÚfig +['file'])) + +143 +$cÚfig +[ +$Çme +]['fže'] = +£lf +:: + `»¶aûP©h +( +$dbCÚfig +['file']); + +147  +$cÚfig +; + +148 + } +} + + @lib/vendor/symfony/lib/config/sfDefineEnvironmentConfigHandler.class.php + +1 + `g‘P¬am‘”HÞd” +()-> + `g‘ +('prefix', '')); + +36 ià( +$this +-> + `g‘P¬am‘”HÞd” +()-> + `g‘ +('moduË', +çl£ +)) + +38 +$wždÿrdV®ues + = +$this +-> + `g‘P¬am‘”HÞd” +()-> + `g‘ +('wildcardValues'); + +40 +$moduËName + = +$wždÿrdV®ues + ? + `¡¹Þow” +($wildcardValues[0]) : "'.strtolower(\$moduleName).'"; + +41 +$´efix + .ð +$moduËName +."_"; + +45 +$cÚfig + = +£lf +:: + `g‘CÚfigu¿tiÚ +( +$cÚfigFžes +); + +47 +$v®ues + = + `¬¿y +(); + +48 + `fܗch + ( +$cÚfig + +as + +$ÿ‹gÜy + => +$keys +) + +50 +$v®ues + = + `¬¿y_m”ge +($v®ues, +$this +-> + `g‘V®ues +( +$´efix +, +$ÿ‹gÜy +, +$keys +)); + +53 +$d©a + = ''; + +54 + `fܗch + ( +$v®ues + +as + +$key + => +$v®ue +) + +56 +$d©a + .ð + `¥rštf +(" '%s' => %s,\n", +$key +, + `v¬_expÜt +( +$v®ue +, +Œue +)); + +60 +$»tv® + = ''; + +61 ià( +$v®ues +) + +63 +$»tv® + = " + `fixC©egÜyV®ue +( +$´efix +. + `¡¹Þow” +( +$ÿ‹gÜy +), '', +$keys +); + +87  + `¬¿y +( +$key + => +$v®ue +); + +90 +$v®ues + = + `¬¿y +(); + +92 +$ÿ‹gÜy + = +$this +-> + `fixC©egÜyName +($ÿ‹gÜy, +$´efix +); + +95 + `fܗch + ( +$keys + +as + +$key + => +$v®ue +) + +97 + `li¡ +( +$key +, +$v®ue +èð +$this +-> + `fixC©egÜyV®ue +( +$ÿ‹gÜy +, $key, $value); + +98 +$v®ues +[ +$key +] = +$v®ue +; + +101  +$v®ues +; + +102 + } +} + +113 +´Ùeùed + +funùiÚ + + $fixC©egÜyV®ue +( +$ÿ‹gÜy +, +$key +, +$v®ue +) + +115  + `¬¿y +( +$ÿ‹gÜy +. +$key +, +$v®ue +); + +116 + } +} + +126 +´Ùeùed + +funùiÚ + + $fixC©egÜyName +( +$ÿ‹gÜy +, +$´efix +) + +129 ià( +$ÿ‹gÜy +[0] != '.') + +131 +$ÿ‹gÜy + = +$´efix +.$category.'_'; + +135 +$ÿ‹gÜy + = +$´efix +; + +138  +$ÿ‹gÜy +; + +139 + } +} + +144  +public + +funùiÚ + + $g‘CÚfigu¿tiÚ +( +¬¿y + +$cÚfigFžes +) + +146  +£lf +:: + `»¶aûCÚ¡ªts +(£lf:: + `橋nCÚfigu¿tiÚW™hEnvœÚm’t +(£lf:: + `·r£Yamls +( +$cÚfigFžes +))); + +147 + } +} + + @lib/vendor/symfony/lib/config/sfFactoryConfigHandler.class.php + +1 çùܛs['cڌÞËr'] =‚ew \$þass(\$this);", +$þass +); + +93 +$·¿m‘”s +['no_süt_Çme'] = +sfCÚfig +:: + `g‘ +('sf_no_script_name'); + +94 +$š¡ªûs +[] = + `¥rštf +(" \$þas ðsfCÚfig::g‘('sf_çùÜy_»que¡', '%s');\À \$this->çùܛs['»que¡'] =‚ew \$þass(\$this->di¥©ch”,‡¼ay(),‡¼ay(), sfCÚfig::g‘('sf_çùÜy_»que¡_·¿m‘”s', %s), sfCÚfig::g‘('sf_çùÜy_»que¡_©Œibu‹s',‡¼ay()));", +$þass +, + `v¬_expÜt +( +$·¿m‘”s +, +Œue +)); + +98 +$š¡ªûs +[] = + `¥rštf +(" \$þas ðsfCÚfig::g‘('sf_çùÜy_»¥Ú£', '%s');\À \$this->çùܛs['»¥Ú£'] =‚ew \$þass(\$this->di¥©ch”, sfCÚfig::g‘('sf_çùÜy_»¥Ú£_·¿m‘”s',‡¼ay_m”ge×¼ay('h‰p_´ÙocÞ' => is£t(\$_SERVER['SERVER_PROTOCOL']è? \$_SERVER['SERVER_PROTOCOL'] :‚uÎ), %s)));", +$þass +, + `v¬_expÜt +( +$·¿m‘”s +, +Œue +)); + +100 +$š¡ªûs +[] = + `¥rštf +(" if (\$this->factories['request'] instanceof sfWebRequest \n && \$this->factories['response'] instanceof sfWebResponse \n && 'HEAD' == \$this->factories['request']->getMethod())\n { \n \$this->factories['response']->setHeaderOnly(true);\n }\n"); + +104 +$deçuÉP¬am‘”s + = + `¬¿y +(); + +105 +$deçuÉP¬am‘”s +[] = + `¥rštf +("'auto_shutdown' => f®£, '£ssiÚ_id' => \$this->g‘Reque¡()->g‘P¬am‘”('%s'),", +$·¿m‘”s +['session_name']); + +106 ià( + `is_subþass_of +( +$þass +, 'sfDatabaseSessionStorage')) + +108 +$deçuÉP¬am‘”s +[] = + `¥rštf +("'d©aba£' => \$this->g‘D©aba£Mªag”()->g‘D©aba£('%s'),", + `is£t +( +$·¿m‘”s +['database']) ? $parameters['database'] : 'default'); + +109 + `un£t +( +$·¿m‘”s +['database']); + +112 +$š¡ªûs +[] = + `¥rštf +(" \$þas ðsfCÚfig::g‘('sf_çùÜy_¡Üage', '%s');\À \$this->çùܛs['¡Üage'] =‚ew \$þass×¼ay_m”ge×¼ay(\n%s\n), sfCÚfig::g‘('sf_çùÜy_¡Üage_·¿m‘”s', %s)));", +$þass +, + `im¶ode +("\n", +$deçuÉP¬am‘”s +), + `v¬_expÜt +( +$·¿m‘”s +, +Œue +)); + +116 +$š¡ªûs +[] = + `¥rštf +(" \$þas ðsfCÚfig::g‘('sf_çùÜy_u£r', '%s');\À \$this->çùܛs['u£r'] =‚ew \$þass(\$this->di¥©ch”, \$this->çùܛs['¡Üage'],‡¼ay_m”ge×¼ay('auto_shutdown' => f®£, 'cuÉu»' => \$this->çùܛs['»que¡']->g‘P¬am‘”('sf_cuÉu»')), sfCÚfig::g‘('sf_çùÜy_u£r_·¿m‘”s', %s)));", +$þass +, + `v¬_expÜt +( +$·¿m‘”s +, +Œue +)); + +120 +$š¡ªûs +[] = + `¥rštf +("\n if (sfConfig::get('sf_cache'))\n {\n". + +129 +$þass +, + `v¬_expÜt +( +$·¿m‘”s +, +Œue +), +$cÚfig +['view_cache_manager']['class'], var_export($config['view_cache_manager']['param'],rue)); + +133 ià( + `is£t +( +$·¿m‘”s +['cache'])) + +135 +$ÿche + = + `¥rštf +(" \$ÿchðÃw %s(%s);\n", +$·¿m‘”s +['ÿche']['þass'], + `v¬_expÜt +($·¿m‘”s['ÿche']['·¿m'], +Œue +)); + +136 + `un£t +( +$·¿m‘”s +['cache']); + +140 +$ÿche + = " \$cache =‚ull;\n"; + +143 +$š¡ªûs +[] = + `¥rštf +("\n if (sfConfig::get('sf_i18n'))\n {\n". + +149 , +$þass +, +$ÿche +, + `v¬_expÜt +( +$·¿m‘”s +, +Œue +) + +154 ià( + `is£t +( +$·¿m‘”s +['cache'])) + +156 +$ÿche + = + `¥rštf +(" \$ÿchðÃw %s(%s);\n", +$·¿m‘”s +['ÿche']['þass'], + `v¬_expÜt +($·¿m‘”s['ÿche']['·¿m'], +Œue +)); + +157 + `un£t +( +$·¿m‘”s +['cache']); + +161 +$ÿche + = " \$cache =‚ull;\n"; + +164 +$š¡ªûs +[] = + `¥rštf +(" \$class = sfConfig::get('sf_factory_routing', '%s');\n". + +171 +$þass +, +$ÿche +, + `v¬_expÜt +( +$·¿m‘”s +, +Œue +) + +176 +$logg”s + = ''; + +177 ià( + `is£t +( +$·¿m‘”s +['loggers'])) + +179 + `fܗch + ( +$·¿m‘”s +['logg”s'] +as + +$Çme + => +$keys +) + +181 ià( + `is£t +( +$keys +['enabled']) && !$keys['enabled']) + +186 ià(! + `is£t +( +$keys +['class'])) + +189 +throw + +Ãw + + `sfP¬£Exû±iÚ +( + `¥rštf +('CÚfigu¿tiÚ fž"%s" s³cif› logg” "%s" w™h missšg cÏs key.', +$cÚfigFžes +[0], +$Çme +)); + +192 +$cÚd™iÚ + = +Œue +; + +193 ià( + `is£t +( +$keys +['param']['condition'])) + +195 +$cÚd™iÚ + = +$keys +['param']['condition']; + +196 + `un£t +( +$keys +['param']['condition']); + +199 ià( +$cÚd™iÚ +) + +202 +$logg”s + .ð + `¥rštf +("\n\$logger =‚ew %s(\$this->dispatcher,‡rray_merge(array('auto_shutdown' => false), %s));\n\$this->factories['logger']->addLogger(\$logger);\n", + +203 +$keys +['class'], + +204 + `is£t +( +$keys +['·¿m']è? + `v¬_expÜt +($keys['·¿m'], +Œue +) : 'array()' + +209 + `un£t +( +$·¿m‘”s +['loggers']); + +212 +$š¡ªûs +[] = + `¥rštf +( + +215 , +$þass +, + `v¬_expÜt +( +$·¿m‘”s +, +Œue +), +$logg”s +); + +219 +$š¡ªûs +[] = + `¥rštf +( + +224 , +$þass +, + `v¬_expÜt +( +$·¿m‘”s +, +Œue +)); + +230 +$»tv® + = + `¥rštf +(" +$v®ues +) + +248 ià( + `is£t +( +$v®ues +['file'])) + +250 +$cÚfig +[ +$çùÜy +]['fže'] = +£lf +:: + `»¶aûP©h +( +$v®ues +['file']); + +254  +$cÚfig +; + +255 + } +} + + @lib/vendor/symfony/lib/config/sfFilterConfigHandler.class.php + +1 +$keys +) + +48 ià( + `is£t +( +$keys +['enabled']) && !$keys['enabled']) + +53 ià(! + `is£t +( +$keys +['class'])) + +56 +throw + +Ãw + + `sfP¬£Exû±iÚ +( + `¥rštf +('CÚfigu¿tiÚ fž"%s" s³cif› ÿ‹gÜy "%s" w™h missšg cÏs key.', +$cÚfigFžes +[0], +$ÿ‹gÜy +)); + +59 +$þass + = +$keys +['class']; + +61 ià( + `is£t +( +$keys +['file'])) + +63 ià(! + `is_»adabË +( +$keys +['file'])) + +66 +throw + +Ãw + + `sfP¬£Exû±iÚ +( + `¥rštf +('CÚfigu¿tiÚ fž"%s" s³cif› þas "%s" w™h‚Úexi¡’ˆÜ uėdabË fž"%s".', +$cÚfigFžes +[0], +$þass +, +$keys +['file'])); + +70 +$šþudes +[] = + `¥rštf +("»quœe_Úû('%s');\n", +$keys +['file']); + +73 +$cÚd™iÚ + = +Œue +; + +74 ià( + `is£t +( +$keys +['param']['condition'])) + +76 +$cÚd™iÚ + = +$keys +['param']['condition']; + +77 + `un£t +( +$keys +['param']['condition']); + +80 +$ty³ + = + `is£t +( +$keys +['·¿m']['ty³']è? $keys['·¿m']['ty³'] : +nuÎ +; + +81 + `un£t +( +$keys +['param']['type']); + +83 ià( +$cÚd™iÚ +) + +86 +$·¿m‘”s + = + `is£t +( +$keys +['·¿m']è? + `v¬_expÜt +($keys['·¿m'], +Œue +) : 'null'; + +89 ià('£cur™y' =ð +$ty³ +) + +91 +$d©a +[] = +$this +-> + `addSecur™yFž‹r +( +$ÿ‹gÜy +, +$þass +, +$·¿m‘”s +); + +95 +$d©a +[] = +$this +-> + `addFž‹r +( +$ÿ‹gÜy +, +$þass +, +$·¿m‘”s +); + +98 ià('»nd”šg' =ð +$ty³ +) + +100 +$»nd”šg + = +Œue +; + +103 ià('executiÚ' =ð +$ty³ +) + +105 +$executiÚ + = +Œue +; + +110 ià(! +$»nd”šg +) + +112 +throw + +Ãw + + `sfP¬£Exû±iÚ +( + `¥rštf +('CÚfigu¿tiÚ fž"%s" mu¡„egi¡”‡ fž‹¸oàty³ "»nd”šg".', +$cÚfigFžes +[0])); + +115 ià(! +$executiÚ +) + +117 +throw + +Ãw + + `sfP¬£Exû±iÚ +( + `¥rštf +('CÚfigu¿tiÚ fž"%s" mu¡„egi¡”‡ fž‹¸oàty³ "executiÚ".', +$cÚfigFžes +[0])); + +121 +$»tv® + = + `¥rštf +(" + `isSecu» +()) + +162 { +$this +-> + `addFž‹r +( +$ÿ‹gÜy +, +$þass +, +$·¿m‘”s +)} + +164 +EOF +; + +165 + } +} + +170  +public + +funùiÚ + + $g‘CÚfigu¿tiÚ +( +¬¿y + +$cÚfigFžes +) + +172 +$cÚfig + = +£lf +:: + `·r£Yaml +( +$cÚfigFžes +[0]); + +173 + `fܗch + ( + `¬¿y_¦iû +( +$cÚfigFžes +, 1è +as + +$i + => +$cÚfigFže +) + +176 +$´evious + = +$cÚfig +; + +178 +$cÚfig + = + `¬¿y +(); + +179 + `fܗch + ( +£lf +:: + `·r£Yaml +( +$cÚfigFže +è +as + +$key + => +$v®ue +) + +181 +$v®ue + = ( +¬¿y +) $value; + +182 +$cÚfig +[ +$key +] = + `is£t +( +$´evious +[$key]è? +sfToÞk™ +:: + `¬¿yD“pM”ge +($´evious[$key], +$v®ue +) : $value; + +186 + `fܗch + ( + `¬¿y_keys +( +$´evious +è +as + +$key +) + +188 ià(! + `is£t +( +$cÚfig +[ +$key +])) + +190 +throw + +Ãw + + `sfCÚfigu¿tiÚExû±iÚ +( + `¥rštf +('Thfž‹¸Çm"%s" i defšed iÀ"%s" buˆnم»£Á iÀ"%s" fže. TØdi§bˇ fž‹r,‡dd‡ "’abËd" key w™h‡ f®£ v®ue.', +$key +, +$cÚfigFžes +[ +$i +], +$cÚfigFže +)); + +195 +$cÚfig + = +£lf +:: + `»¶aûCÚ¡ªts +($config); + +197 + `fܗch + ( +$cÚfig + +as + +$ÿ‹gÜy + => +$keys +) + +199 ià( + `is£t +( +$keys +['file'])) + +201 +$cÚfig +[ +$ÿ‹gÜy +]['fže'] = +£lf +:: + `»¶aûP©h +( +$keys +['file']); + +205  +$cÚfig +; + +206 + } +} + + @lib/vendor/symfony/lib/config/sfGeneratorConfigHandler.class.php + +1 + `g‘CÚfigu¿tiÚ +()); + +65 +$g’”©ÜP¬am + = ( + `is£t +( +$cÚfig +['·¿m']è? $cÚfig['·¿m'] : + `¬¿y +()); + +68 + `´eg_m©ch +('#.*/moduËs/([^/]+)/#', + `¡r_»¶aû +('\\', '/', +$cÚfigFžes +[0]), +$m©ch +); + +69 +$g’”©ÜP¬am +['moduËName'] = +$m©ch +[1]; + +72 +$»tv® + = " + `g’”©e +( +$þass +, +$·¿m‘”s +); + +83 + } +} + +88  +public + +funùiÚ + + $g‘CÚfigu¿tiÚ +( +¬¿y + +$cÚfigFžes +) + +90  +£lf +:: + `·r£Yamls +( +$cÚfigFžes +); + +91 + } +} + + @lib/vendor/symfony/lib/config/sfPluginConfiguration.class.php + +1 +cÚfigu¿tiÚ + = +$cÚfigu¿tiÚ +; + +37 +$this +-> +di¥©ch” + = +$cÚfigu¿tiÚ +-> + `g‘Ev’tDi¥©ch” +(); + +38 +$this +-> +roÙDœ + = +nuÎ + ==ð +$roÙDœ + ? $this-> + `guessRoÙDœ +(è: + `»®·th +($rootDir); + +39 +$this +-> +Çme + = +nuÎ + ==ð +$Çme + ? $this-> + `guessName +() : $name; + +41 +$this +-> + `£tup +(); + +42 +$this +-> + `cÚfigu» +(); + +44 ià(! +$this +-> +cÚfigu¿tiÚ + +š¡ªûof + +sfAµliÿtiÚCÚfigu¿tiÚ +) + +46 +$this +-> + `š™ŸlizeAutÞßd +(); + +47 +$this +-> + `š™Ÿlize +(); + +56 +public + +funùiÚ + + $£tup +() + +58 + } +} + +65 +public + +funùiÚ + + $cÚfigu» +() + +67 + } +} + +76 +public + +funùiÚ + + $š™Ÿlize +() + +78 + } +} + +85 +public + +funùiÚ + + $g‘RoÙDœ +() + +87  +$this +-> +roÙDœ +; + +88 + } +} + +95 +public + +funùiÚ + + $g‘Name +() + +97  +$this +-> +Çme +; + +98 + } +} + +109 +public + +funùiÚ + + $š™ŸlizeAutÞßd +() + +111 +$autÞßd + = +sfSim¶eAutÞßd +:: + `g‘In¡ªû +( +sfCÚfig +:: + `g‘ +('sf_cache_dir').'/project_autoload.cache'); + +113 ià( + `is_»adabË +( +$fže + = +$this +-> +roÙDœ +.'/config/autoload.yml')) + +115 +$this +-> +cÚfigu¿tiÚ +-> + `g‘Ev’tDi¥©ch” +()-> + `cÚÃù +('autÞßd.fž‹r_cÚfig', + `¬¿y +($this, 'filterAutoloadConfig')); + +116 +$autÞßd +-> + `lßdCÚfigu¿tiÚ +( + `¬¿y +( +$fže +)); + +117 +$this +-> +cÚfigu¿tiÚ +-> + `g‘Ev’tDi¥©ch” +()-> + `discÚÃù +('autÞßd.fž‹r_cÚfig', + `¬¿y +($this, 'filterAutoloadConfig')); + +121 +$autÞßd +-> + `addDœeùÜy +( +$this +-> +roÙDœ +.'/lib'); + +124 +$autÞßd +->(); + +125 + } +} + +135 +public + +funùiÚ + + $fž‹rAutÞßdCÚfig +( +sfEv’t + +$ev’t +, +¬¿y + +$cÚfig +) + +138 ià(! + `is£t +( +$cÚfig +['autÞßd'][ +$this +-> +Çme +.'_lib'])) + +140 +$cÚfig +['autÞßd'] = + `¬¿y_m”ge +( + `¬¿y +( + +141 +$this +-> +Çme +.'_lib' => + `¬¿y +( + +142 '·th' => +$this +-> +roÙDœ +.'/lib', + +143 '»cursive' => +Œue +, + +145 ), +$cÚfig +['autoload']); + +148 ià(! + `is£t +( +$cÚfig +['autÞßd'][ +$this +-> +Çme +.'_module_libs'])) + +150 +$cÚfig +['autÞßd'] = + `¬¿y_m”ge +( + `¬¿y +( + +151 +$this +-> +Çme +.'_moduË_libs' => + `¬¿y +( + +152 '·th' => +$this +-> +roÙDœ +.'/modules/*/lib', + +153 '»cursive' => +Œue +, + +156 ), +$cÚfig +['autoload']); + +159  +$cÚfig +; + +160 + } +} + +165 +public + +funùiÚ + + $cÚÃùTe¡s +() + +167 +$this +-> +di¥©ch” +-> + `cÚÃù +('sk.‹¡.fž‹r_‹¡_fžes', + `¬¿y +($this, 'filterTestFiles')); + +168 + } +} + +178 +public + +funùiÚ + + $fž‹rTe¡Fžes +( +sfEv’t + +$ev’t +, +$fžes +) + +180 +$sk + = +$ev’t +-> + `g‘Subjeù +(); + +182 ià( +$sk + +š¡ªûof + +sfTe¡AÎTask +) + +184 +$dœeùÜy + = +$this +-> +roÙDœ +.'/test'; + +185 +$Çmes + = + `¬¿y +(); + +187 ià( +$sk + +š¡ªûof + +sfTe¡FunùiÚ®Task +) + +189 +$dœeùÜy + = +$this +-> +roÙDœ +.'/test/functional'; + +190 +$Çmes + = +$ev’t +['arguments']['controller']; + +192 ià( +$sk + +š¡ªûof + +sfTe¡Un™Task +) + +194 +$dœeùÜy + = +$this +-> +roÙDœ +.'/test/unit'; + +195 +$Çmes + = +$ev’t +['arguments']['name']; + +198 ià(! + `couÁ +( +$Çmes +)) + +200 +$Çmes + = + `¬¿y +('*'); + +203 + `fܗch + ( +$Çmes + +as + +$Çme +) + +205 +$fšd” + = +sfFšd” +:: + `ty³ +('fže')-> + `fÞlow_lšk +()-> + `Çme +( + `ba£Çme +( +$Çme +).'Test.php'); + +206 +$fžes + = + `¬¿y_m”ge +($fžes, +$fšd” +-> + `š +( +$dœeùÜy +.'/'. + `dœÇme +( +$Çme +))); + +209  + `¬¿y_unique +( +$fžes +); + +210 + } +} + +217 +´Ùeùed + +funùiÚ + + $guessRoÙDœ +() + +219 +$r + = +Ãw + + `ReæeùiÚCÏss +( + `g‘_þass +( +$this +)); + +220  + `»®·th +( + `dœÇme +( +$r +-> + `g‘Fž’ame +()).'/..'); + +221 + } +} + +228 +´Ùeùed + +funùiÚ + + $guessName +() + +230  + `sub¡r +( + `g‘_þass +( +$this +), 0, -13); + +231 + } +} + + @lib/vendor/symfony/lib/config/sfPluginConfigurationGeneric.class.php + +1 +roÙDœ + = +nuÎ + ==ð +$roÙDœ + ? +£lf +:: + `guessRoÙDœ +(è: + `»®·th +($rootDir); + +48 +$this +-> +symfÚyLibDœ + = + `»®·th +( + `dœÇme +( +__FILE__ +).'/..'); + +49 +$this +-> +di¥©ch” + = +nuÎ + ==ð +$di¥©ch” + ? +Ãw + + `sfEv’tDi¥©ch” +() : $dispatcher; + +51 + `ši_£t +('magic_quotes_runtime', 'off'); + +53 +sfCÚfig +:: + `£t +('sf_symfÚy_lib_dœ', +$this +-> +symfÚyLibDœ +); + +55 +$this +-> + `£tRoÙDœ +($this-> +roÙDœ +); + +58 +sfFÜmSymfÚy +:: + `£tEv’tDi¥©ch” +( +$this +-> +di¥©ch” +); + +60 +$this +-> + `£tup +(); + +62 +$this +-> + `lßdPlugšs +(); + +63 +$this +-> + `£tupPlugšs +(); + +71 +public + +funùiÚ + + $£tup +() + +73 + } +} + +78 +public + +funùiÚ + + $lßdPlugšs +() + +80 + `fܗch + ( +$this +-> + `g‘PlugšP©hs +(è +as + +$·th +) + +82 ià( +çl£ + ==ð +$¶ugš + = + `¬¿y_£¬ch +( +$·th +, +$this +-> +ov”ridd’PlugšP©hs +)) + +84 +$¶ugš + = + `ba£Çme +( +$·th +); + +86 +$þass + = +$¶ugš +.'Configuration'; + +88 ià( + `is_»adabË +( +$fže + = + `¥rštf +('%s/cÚfig/%s.þass.php', +$·th +, +$þass +))) + +90 +»quœe_Úû + +$fže +; + +91 +$cÚfigu¿tiÚ + = +Ãw + + `$þass +( +$this +, +$·th +, +$¶ugš +); + +95 +$cÚfigu¿tiÚ + = +Ãw + + `sfPlugšCÚfigu¿tiÚG’”ic +( +$this +, +$·th +, +$¶ugš +); + +98 +$this +-> +¶ugšCÚfigu¿tiÚs +[ +$¶ugš +] = +$cÚfigu¿tiÚ +; + +101 +$this +-> +¶ugšsLßded + = +Œue +; + +102 + } +} + +109 +public + +funùiÚ + + $£tupPlugšs +() + +111 + } +} + +118 +public + +funùiÚ + + $£tRoÙDœ +( +$roÙDœ +) + +120 +$this +-> +roÙDœ + = +$roÙDœ +; + +122 +sfCÚfig +:: + `add +( + `¬¿y +( + +123 'sf_roÙ_dœ' => +$roÙDœ +, + +126 'sf_­ps_dœ' => +$roÙDœ +. +DIRECTORY_SEPARATOR +.'apps', + +127 'sf_lib_dœ' => +$roÙDœ +. +DIRECTORY_SEPARATOR +.'lib', + +128 'sf_log_dœ' => +$roÙDœ +. +DIRECTORY_SEPARATOR +.'log', + +129 'sf_d©a_dœ' => +$roÙDœ +. +DIRECTORY_SEPARATOR +.'data', + +130 'sf_cÚfig_dœ' => +$roÙDœ +. +DIRECTORY_SEPARATOR +.'config', + +131 'sf_‹¡_dœ' => +$roÙDœ +. +DIRECTORY_SEPARATOR +.'test', + +132 'sf_¶ugšs_dœ' => +$roÙDœ +. +DIRECTORY_SEPARATOR +.'plugins', + +135 +$this +-> + `£tWebDœ +( +$roÙDœ +. +DIRECTORY_SEPARATOR +.'web'); + +136 +$this +-> + `£tCacheDœ +( +$roÙDœ +. +DIRECTORY_SEPARATOR +.'cache'); + +137 + } +} + +144 +public + +funùiÚ + + $g‘RoÙDœ +() + +146  +$this +-> +roÙDœ +; + +147 + } +} + +154 +public + +funùiÚ + + $£tCacheDœ +( +$ÿcheDœ +) + +156 +sfCÚfig +:: + `£t +('sf_ÿche_dœ', +$ÿcheDœ +); + +157 + } +} + +164 +public + +funùiÚ + + $£tLogDœ +( +$logDœ +) + +166 +sfCÚfig +:: + `£t +('sf_log_dœ', +$logDœ +); + +167 + } +} + +174 +public + +funùiÚ + + $£tWebDœ +( +$webDœ +) + +176 +sfCÚfig +:: + `add +( + `¬¿y +( + +177 'sf_web_dœ' => +$webDœ +, + +178 'sf_u¶ßd_dœ' => +$webDœ +. +DIRECTORY_SEPARATOR +.'uploads', + +180 + } +} + +188 +public + +funùiÚ + + $g‘Mod–Dœs +() + +190  + `¬¿y_m”ge +( + +191 +$this +-> + `g‘PlugšSubP©hs +('/lib/model'), + +192 + `¬¿y +( +sfCÚfig +:: + `g‘ +('sf_lib_dir').'/model') + +194 + } +} + +204 +public + +funùiÚ + + $g‘G’”©ÜTem¶©eDœs +( +$þass +, +$theme +) + +206  + `¬¿y_m”ge +( + +207 + `¬¿y +( +sfCÚfig +:: + `g‘ +('sf_d©a_dœ').'/g’”©Ü/'. +$þass +.'/'. +$theme +.'/template'), + +208 +$this +-> + `g‘PlugšSubP©hs +('/d©a/g’”©Ü/'. +$þass +.'/'. +$theme +.'/template'), + +209 + `¬¿y +( +sfCÚfig +:: + `g‘ +('sf_d©a_dœ').'/g’”©Ü/'. +$þass +.'/default/template'), + +210 +$this +-> + `g‘PlugšSubP©hs +('/d©a/g’”©Ü/'. +$þass +.'/default/template') + +212 + } +} + +222 +public + +funùiÚ + + $g‘G’”©ÜSk–‘ÚDœs +( +$þass +, +$theme +) + +224  + `¬¿y_m”ge +( + +225 + `¬¿y +( +sfCÚfig +:: + `g‘ +('sf_d©a_dœ').'/g’”©Ü/'. +$þass +.'/'. +$theme +.'/skeleton'), + +226 +$this +-> + `g‘PlugšSubP©hs +('/d©a/g’”©Ü/'. +$þass +.'/'. +$theme +.'/skeleton'), + +227 + `¬¿y +( +sfCÚfig +:: + `g‘ +('sf_d©a_dœ').'/g’”©Ü/'. +$þass +.'/default/skeleton'), + +228 +$this +-> + `g‘PlugšSubP©hs +('/d©a/g’”©Ü/'. +$þass +.'/default/skeleton') + +230 + } +} + +243 +public + +funùiÚ + + $g‘G’”©ÜTem¶©e +( +$þass +, +$theme +, +$·th +) + +245 +$dœs + = +$this +-> + `g‘G’”©ÜTem¶©eDœs +( +$þass +, +$theme +); + +246 + `fܗch + ( +$dœs + +as + +$dœ +) + +248 ià( + `is_»adabË +( +$dœ +.'/'. +$·th +)) + +250  +$dœ +.'/'. +$·th +; + +254 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('UÇbˁØlßd "%s" g’”©Üem¶©š: %s.', +$·th +, + `im¶ode +(', ', +$dœs +))); + +255 + } +} + +264 +public + +funùiÚ + + $g‘CÚfigP©hs +( +$cÚfigP©h +) + +266 +$glob®CÚfigP©h + = + `ba£Çme +( + `dœÇme +( +$cÚfigP©h +)).'/'.basename($configPath); + +268 +$fžes + = + `¬¿y +( + +269 +$this +-> + `g‘SymfÚyLibDœ +().'/cÚfig/'. +$glob®CÚfigP©h +, + +272 + `fܗch + ( +$this +-> + `g‘PlugšP©hs +(è +as + +$·th +) + +274 ià( + `is_fže +( +$fže + = +$·th +.'/'. +$glob®CÚfigP©h +)) + +276 +$fžes +[] = +$fže +; + +280 +$fžes + = + `¬¿y_m”ge +($fžes, + `¬¿y +( + +281 +$this +-> + `g‘RoÙDœ +().'/'. +$glob®CÚfigP©h +, + +282 +$this +-> + `g‘RoÙDœ +().'/'. +$cÚfigP©h +, + +285 + `fܗch + ( +$this +-> + `g‘PlugšP©hs +(è +as + +$·th +) + +287 ià( + `is_fže +( +$fže + = +$·th +.'/'. +$cÚfigP©h +)) + +289 +$fžes +[] = +$fže +; + +293 +$cÚfigs + = + `¬¿y +(); + +294 + `fܗch + ( + `¬¿y_unique +( +$fžes +è +as + +$fže +) + +296 ià( + `is_»adabË +( +$fže +)) + +298 +$cÚfigs +[] = +$fže +; + +302  +$cÚfigs +; + +303 + } +} + +312 +public + +funùiÚ + + $£tPlugšs +( +¬¿y + +$¶ugšs +) + +314 ià( +$this +-> +¶ugšsLßded +) + +316 +throw + +Ãw + + `LogicExû±iÚ +('Plugins have‡lready been†oaded.'); + +319 +$this +-> +¶ugšs + = +$¶ugšs +; + +321 +$this +-> +¶ugšP©hs + = + `¬¿y +(); + +322 + } +} + +329 +public + +funùiÚ + + $’abËPlugšs +( +$¶ugšs +) + +331 ià(! + `is_¬¿y +( +$¶ugšs +)) + +333 ià( + `func_num_¬gs +() > 1) + +335 +$¶ugšs + = + `func_g‘_¬gs +(); + +339 +$¶ugšs + = + `¬¿y +($plugins); + +343 +$this +-> + `£tPlugšs +( + `¬¿y_m”ge +($this-> +¶ugšs +, +$¶ugšs +)); + +344 + } +} + +353 +public + +funùiÚ + + $di§bËPlugšs +( +$¶ugšs +) + +355 ià( +$this +-> +¶ugšsLßded +) + +357 +throw + +Ãw + + `LogicExû±iÚ +('Plugins have‡lready been†oaded.'); + +360 ià(! + `is_¬¿y +( +$¶ugšs +)) + +362 +$¶ugšs + = + `¬¿y +($plugins); + +365 + `fܗch + ( +$¶ugšs + +as + +$¶ugš +) + +367 ià( +çl£ + !=ð +$pos + = + `¬¿y_£¬ch +( +$¶ugš +, +$this +-> +¶ugšs +)) + +369 + `un£t +( +$this +-> +¶ugšs +[ +$pos +]); + +373 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('Th¶ugš "%s" dÛ nكxi¡.', +$¶ugš +)); + +377 +$this +-> +¶ugšP©hs + = + `¬¿y +(); + +378 + } +} + +387 +public + +funùiÚ + +’abËAÎPlugšsExû± +( +$¶ugšs + = + $¬¿y +()) + +389 ià( +$this +-> +¶ugšsLßded +) + +391 +throw + +Ãw + + `LogicExû±iÚ +('Plugins have‡lready been†oaded.'); + +394 +$this +-> +¶ugšs + = + `¬¿y_keys +($this-> + `g‘AÎPlugšP©hs +()); + +396 + `sÜt +( +$this +-> +¶ugšs +); + +398 +$this +-> + `di§bËPlugšs +( +$¶ugšs +); + +399 + } +} + +406 +public + +funùiÚ + + $g‘Plugšs +() + +408  +$this +-> +¶ugšs +; + +409 + } +} + +418 +public + +funùiÚ + +g‘PlugšSubP©hs +( +$subP©h + = '') + +420 ià( +¬¿y_key_exi¡s +( +$subP©h +, +$this +-> +¶ugšP©hs +)) + +422  +$this +-> +¶ugšP©hs +[ +$subP©h +]; + +425 + g$this +-> + g¶ugšP©hs +[ +$subP©h +] = +¬¿y +(); + +426 + g$¶ugšP©hs + = +$this +-> +g‘PlugšP©hs +(); + +427 +fܗch + ( +$¶ugšP©hs + +as + +$¶ugšP©h +) + +429 ià( +is_dœ +( +$¶ugšP©h +. +$subP©h +)) + +431 + g$this +-> + g¶ugšP©hs +[ +$subP©h +][] = +$¶ugšP©h +.$subPath; + +435  + g$this +-> + g¶ugšP©hs +[ +$subP©h +]; + +445 +public + +funùiÚ + + $g‘PlugšP©hs +() + +447 ià(! + `is£t +( +$this +-> +¶ugšP©hs +[''])) + +449 +$¶ugšP©hs + = +$this +-> + `g‘AÎPlugšP©hs +(); + +451 +$this +-> +¶ugšP©hs +[''] = + `¬¿y +(); + +452 + `fܗch + ( +$this +-> + `g‘Plugšs +(è +as + +$¶ugš +) + +454 ià( + `is£t +( +$¶ugšP©hs +[ +$¶ugš +])) + +456 +$this +-> +¶ugšP©hs +[''][] = +$¶ugšP©hs +[ +$¶ugš +]; + +460 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('Th¶ugš "%s" dÛ nكxi¡.', +$¶ugš +)); + +465  +$this +-> +¶ugšP©hs +['']; + +466 + } +} + +473 +public + +funùiÚ + + $g‘AÎPlugšP©hs +() + +475 +$¶ugšP©hs + = + `¬¿y +(); + +479 +$fšd” + = +sfFšd” +:: + `ty³ +('dœ')-> + `maxd•th +(0)-> + `ignÜe_v”siÚ_cÚŒÞ +( +çl£ +)-> + `fÞlow_lšk +()-> + `Çme +('*Plugin'); + +480 +$dœs + = + `¬¿y +( + +481 +$this +-> + `g‘SymfÚyLibDœ +().'/plugins', + +482 +sfCÚfig +:: + `g‘ +('sf_plugins_dir'), + +485 + `fܗch + ( +$fšd” +-> + `š +( +$dœs +è +as + +$·th +) + +487 +$¶ugšP©hs +[ + `ba£Çme +( +$·th +)] = $path; + +490 + `fܗch + ( +$this +-> +ov”ridd’PlugšP©hs + +as + +$¶ugš + => +$·th +) + +492 +$¶ugšP©hs +[ +$¶ugš +] = +$·th +; + +495  +$¶ugšP©hs +; + +496 + } +} + +508 +public + +funùiÚ + + $£tPlugšP©h +( +$¶ugš +, +$·th +) + +510 +$this +-> +ov”ridd’PlugšP©hs +[ +$¶ugš +] = + `»®·th +( +$·th +); + +511 + } +} + +520 +public + +funùiÚ + + $g‘PlugšCÚfigu¿tiÚ +( +$Çme +) + +522 ià(! + `is£t +( +$this +-> +¶ugšCÚfigu¿tiÚs +[ +$Çme +])) + +524 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('Th”i nØcÚfigu¿tiÚ objeù f܁h"%s" objeù.', +$Çme +)); + +527  +$this +-> +¶ugšCÚfigu¿tiÚs +[ +$Çme +]; + +528 + } +} + +535 +public + +funùiÚ + + $g‘Ev’tDi¥©ch” +() + +537  +$this +-> +di¥©ch” +; + +538 + } +} + +545 +public + +funùiÚ + + $g‘SymfÚyLibDœ +() + +547  +$this +-> +symfÚyLibDœ +; + +548 + } +} + +555  +public + +funùiÚ + + $g‘Aùive +() + +557 ià(! +£lf +:: + `hasAùive +()) + +559 +throw + +Ãw + + `RuÁimeExû±iÚ +('There is‚o‡ctive configuration.'); + +562  +£lf +:: +$aùive +; + +563 + } +} + +570  +public + +funùiÚ + + $hasAùive +() + +572  +nuÎ + !=ð +£lf +:: +$aùive +; + +573 + } +} + +580  +public + +funùiÚ + + $guessRoÙDœ +() + +582 +$r + = +Ãw + + `ReæeùiÚCÏss +('ProjectConfiguration'); + +584  + `»®·th +( + `dœÇme +( +$r +-> + `g‘FžeName +()).'/..'); + +585 + } +} + +598  +public + +funùiÚ + + $g‘AµliÿtiÚCÚfigu¿tiÚ +( +$­¶iÿtiÚ +, +$’vœÚm’t +, +$debug +, +$roÙDœ + = +nuÎ +, +sfEv’tDi¥©ch” + +$di¥©ch” + =‚ull) + +600 +$þass + = +$­¶iÿtiÚ +.'Configuration'; + +602 ià( +nuÎ + ==ð +$roÙDœ +) + +604 +$roÙDœ + = +£lf +:: + `guessRoÙDœ +(); + +607 ià(! + `fže_exi¡s +( +$fže + = +$roÙDœ +.'/­ps/'. +$­¶iÿtiÚ +.'/cÚfig/'. +$þass +.'.class.php')) + +609 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('Th­¶iÿtiÚ "%s" dÛ nكxi¡.', +$­¶iÿtiÚ +)); + +612 +»quœe_Úû + +$fže +; + +614  +Ãw + + `$þass +( +$’vœÚm’t +, +$debug +, +$roÙDœ +, +$di¥©ch” +); + +615 + } +} + +625 +public + +funùiÚ + + $__ÿÎ +( +$m‘hod +, +$¬gum’ts +) + +627 +$ev’t + = +$this +-> +di¥©ch” +-> + `nÙifyUÁž +( +Ãw + + `sfEv’t +($this, 'cÚfigu¿tiÚ.m‘hod_nÙ_found', + `¬¿y +('m‘hod' => +$m‘hod +, '¬gum’ts' => +$¬gum’ts +))); + +628 ià(! +$ev’t +-> + `isProûs£d +()) + +630 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('C®ÈtØundefšed m‘hod %s::%s.', + `g‘_þass +( +$this +), +$m‘hod +)); + +633  +$ev’t +-> + `g‘R‘uºV®ue +(); + +634 + } +} + + @lib/vendor/symfony/lib/config/sfRootConfigHandler.class.php + +1 + `g‘P¬am‘”HÞd” +()-> + `g‘ +('moduË_Ëv–'è==ð +Œue +è?ru: +çl£ +; + +40 ià( +$moduËLev– +) + +43 +$moduËName + = +$this +-> + `g‘P¬am‘”HÞd” +()-> + `g‘ +('module_name'); + +47 +$d©a + = + `¬¿y +(); + +48 +$šþudes + = + `¬¿y +(); + +51 + `fܗch + ( +$cÚfig + +as + +$ÿ‹gÜy + => +$keys +) + +53 ià( +$moduËLev– +) + +57 +$ÿ‹gÜy + = 'moduËs/'. +$moduËName +.'/'.$category; + +60 ià(! + `is£t +( +$keys +['class'])) + +63 +throw + +Ãw + + `sfP¬£Exû±iÚ +( + `¥rštf +('CÚfigu¿tiÚ fž"%s" s³cif› ÿ‹gÜy "%s" w™h missšg cÏs key.', +$cÚfigFžes +[0], +$ÿ‹gÜy +)); + +66 +$þass + = +$keys +['class']; + +68 ià( + `is£t +( +$keys +['file'])) + +70 ià(! + `is_»adabË +( +$keys +['file'])) + +73 +throw + +Ãw + + `sfP¬£Exû±iÚ +( + `¥rštf +('CÚfigu¿tiÚ fž"%s" s³cif› þas "%s" w™h‚Úexi¡’ˆÜ uėdabË fž"%s".', +$cÚfigFžes +[0], +$þass +, +$keys +['file'])); + +77 +$šþudes +[] = + `¥rštf +("»quœe_Úû('%s');", +$keys +['file']); + +81 +$·¿m‘”s + = ( + `is£t +( +$keys +['·¿m']è? + `v¬_expÜt +($keys['·¿m'], +Œue +è: +nuÎ +); + +84 +$d©a +[] = + `¥rštf +("\$this->hªdËrs['%s'] =‚ew %s(%s);", +$ÿ‹gÜy +, +$þass +, +$·¿m‘”s +); + +88 +$»tv® + = + `¥rštf +(" +$keys +) + +105 ià( + `is£t +( +$keys +['file'])) + +107 +$cÚfig +[ +$ÿ‹gÜy +]['fže'] = +£lf +:: + `»¶aûP©h +( +$keys +['file']); + +111  +$cÚfig +; + +112 + } +} + + @lib/vendor/symfony/lib/config/sfRoutingConfigHandler.class.php + +1 + `g‘O±iÚs +(); + +32 + `un£t +( +$ÝtiÚs +['cache']); + +34 +$d©a + = + `¬¿y +(); + +35 + `fܗch + ( +$this +-> + `·r£ +( +$cÚfigFžes +è +as + +$Çme + => +$rou‹CÚfig +) + +37 +$r + = +Ãw + + `ReæeùiÚCÏss +( +$rou‹CÚfig +[0]); + +38 +$rou‹ + = +$r +-> + `ÃwIn¡ªûArgs +( +$rou‹CÚfig +[1]); + +40 +$rou‹s + = +$rou‹ + +š¡ªûof + +sfRou‹CÞËùiÚ + ? $rou‹ : + `¬¿y +( +$Çme + => $route); + +41 + `fܗch + ( +sfP©‹ºRoutšg +:: + `橋nRou‹s +( +$rou‹s +è +as + +$Çme + => +$rou‹ +) + +43 +$rou‹ +-> + `£tDeçuÉO±iÚs +( +$ÝtiÚs +); + +44 +$d©a +[] = + `¥rštf +('$this->rou‹s[\'%s\'] = un£rŸlize(%s);', +$Çme +, + `v¬_expÜt +( + `£rŸlize +( +$rou‹ +), +Œue +)); + +48  + `¥rštf +("g‘CÚfigu¿tiÚ()-> + `g‘CÚfigP©hs +('config/factories.yml')); + +57  +$cÚfig +['routing']['param']; + +58 + } +} + +60 +public + +funùiÚ + + $ev®u©e +( +$cÚfigFžes +) + +62 +$rou‹Defš™iÚs + = +$this +-> + `·r£ +( +$cÚfigFžes +); + +64 +$rou‹s + = + `¬¿y +(); + +65 + `fܗch + ( +$rou‹Defš™iÚs + +as + +$Çme + => +$rou‹ +) + +67 +$r + = +Ãw + + `ReæeùiÚCÏss +( +$rou‹ +[0]); + +68 +$rou‹s +[ +$Çme +] = +$r +-> + `ÃwIn¡ªûArgs +( +$rou‹ +[1]); + +71  +$rou‹s +; + +72 + } +} + +74 +´Ùeùed + +funùiÚ + + $·r£ +( +$cÚfigFžes +) + +77 +$cÚfig + = +£lf +:: + `g‘CÚfigu¿tiÚ +( +$cÚfigFžes +); + +80 +$rou‹s + = + `¬¿y +(); + +81 + `fܗch + ( +$cÚfig + +as + +$Çme + => +$·¿ms +) + +84 ( + `is£t +( +$·¿ms +['type']) && 'collection' == $params['type']) + +86 ( + `is£t +( +$·¿ms +['þass']è&& +çl£ + !=ð + `¡½os +($params['class'], 'Collection')) + +89 +$ÝtiÚs + = + `is£t +( +$·¿ms +['ÝtiÚs']è? $·¿ms['ÝtiÚs'] : + `¬¿y +(); + +90 +$ÝtiÚs +['Çme'] = +$Çme +; + +91 +$ÝtiÚs +['»quœem’ts'] = + `is£t +( +$·¿ms +['»quœem’ts']è? $·¿ms['»quœem’ts'] : + `¬¿y +(); + +93 +$rou‹s +[ +$Çme +] = + `¬¿y +( + `is£t +( +$·¿ms +['þass']è? $·¿ms['þass'] : 'sfRou‹CÞËùiÚ',‡¼ay( +$ÝtiÚs +)); + +97 +$rou‹s +[ +$Çme +] = + `¬¿y +( + `is£t +( +$·¿ms +['class']) ? $params['class'] : 'sfRoute',‡rray( + +98 +$·¿ms +['url'] ? $params['url'] : '/', + +99 + `is£t +( +$·¿ms +['·¿ms']è? $·¿ms['·¿ms'] : (is£t($·¿ms['·¿m']è? $·¿ms['·¿m'] : + `¬¿y +()), + +100 + `is£t +( +$·¿ms +['»quœem’ts']è? $·¿ms['»quœem’ts'] : + `¬¿y +(), + +101 + `is£t +( +$·¿ms +['ÝtiÚs']è? $·¿ms['ÝtiÚs'] : + `¬¿y +(), + +106  +$rou‹s +; + +107 + } +} + +112  +public + +funùiÚ + + $g‘CÚfigu¿tiÚ +( +¬¿y + +$cÚfigFžes +) + +114  +£lf +:: + `·r£Yamls +( +$cÚfigFžes +); + +115 + } +} + + @lib/vendor/symfony/lib/config/sfSecurityConfigHandler.class.php + +1 +yamlCÚfig + = +£lf +:: + `g‘CÚfigu¿tiÚ +( +$cÚfigFžes +); + +38 +$d©a + = + `¬¿y +(); + +40 +$d©a +[] = "\$response = \$this->context->getResponse();\n\n"; + +43 +$fœ¡ + = +Œue +; + +44 + `fܗch + ( +$this +-> +yamlCÚfig + +as + +$v›wName + => +$v®ues +) + +46 ià( +$v›wName + == 'all') + +51 +$d©a +[] = ( +$fœ¡ + ? '' : 'else ')."if (\$this->actionName.\$this->viewName == '$viewName')\n". + +53 +$d©a +[] = +$this +-> + `addTem¶©e +( +$v›wName +); + +54 +$d©a +[] = "}\n"; + +56 +$fœ¡ + = +çl£ +; + +60 +$d©a +[] = ( +$fœ¡ + ? '' : "else\n{")."\n"; + +61 +$d©a +[] = +$this +-> + `addTem¶©e +( +$v›wName +); + +62 +$d©a +[] = ( +$fœ¡ + ? '' : "}")."\n\n"; + +65 +$fœ¡ + = +Œue +; + +66 + `fܗch + ( +$this +-> +yamlCÚfig + +as + +$v›wName + => +$v®ues +) + +68 ià( +$v›wName + == 'all') + +73 +$d©a +[] = ( +$fœ¡ + ? '' : 'else ')."if (\$templateName.\$this->viewName == '$viewName')\n". + +76 +$d©a +[] = +$this +-> + `addLayout +( +$v›wName +); + +77 +$d©a +[] = +$this +-> + `addCompڒtSlÙs +( +$v›wName +); + +78 +$d©a +[] = +$this +-> + `addHtmlH—d +( +$v›wName +); + +79 +$d©a +[] = +$this +-> + `addEsÿpšg +( +$v›wName +); + +81 +$d©a +[] = +$this +-> + `addHtmlAs£t +( +$v›wName +); + +83 +$d©a +[] = "}\n"; + +85 +$fœ¡ + = +çl£ +; + +89 +$d©a +[] = ( +$fœ¡ + ? '' : "else\n{")."\n"; + +91 +$d©a +[] = +$this +-> + `addLayout +(); + +92 +$d©a +[] = +$this +-> + `addCompڒtSlÙs +(); + +93 +$d©a +[] = +$this +-> + `addHtmlH—d +(); + +94 +$d©a +[] = +$this +-> + `addEsÿpšg +(); + +96 +$d©a +[] = +$this +-> + `addHtmlAs£t +(); + +97 +$d©a +[] = ( +$fœ¡ + ? '' : "}")."\n"; + +100 +$»tv® + = + `¥rštf +(" + `m”geCÚfigV®ue +('compڒts', +$v›wName +); + +120 + `fܗch + ( +$compڒts + +as + +$Çme + => +$compڒt +) + +122 ià(! + `is_¬¿y +( +$compڒt +è|| + `couÁ +($component) < 1) + +124 +$compڒt + = + `¬¿y +( +nuÎ +,‚ull); + +127 +$d©a + .= " \$this->setComponentSlot('$name', '{$component[0]}', '{$component[1]}');\n"; + +128 +$d©a + .= " if (sfConfig::get('sf_logging_enabled')) \$this->context->getEventDispatcher()->notify(new sfEvent(\$this, 'application.log',‡rray(sprintf('Set component \"%s\" (%s/%s)', '$name', '{$component[0]}', '{$component[1]}'))));\n"; + +131  +$d©a +; + +132 + } +} + +141 +´Ùeùed + +funùiÚ + +addTem¶©e +( +$v›wName + = '') + +143 +$d©a + = ''; + +145 + g$‹m¶©eName + = +$this +-> +g‘CÚfigV®ue +('‹m¶©e', +$v›wName +); + +146 + g$deçuÉTem¶©eName + = +$‹m¶©eName + ? "'$templateName'" : '$this->actionName'; + +148 + g$d©a + .= " \$templateName = sfConfig::get('symfony.view.'.\$this->moduleName.'_'.\$this->actionName.'_template', $defaultTemplateName);\n"; + +149 + g$d©a + .= " \$this->setTemplate(\$templateName.\$this->viewName.\$this->getExtension());\n"; + +151  + g$d©a +; + +161 +´Ùeùed + +funùiÚ + +addLayout +( +$v›wName + = '') + +164 +$hasLoÿlLayout + = +is£t +( +$this +-> +yamlCÚfig +[ +$v›wName +]['Ïyout']è|| (is£t($this->yamlCÚfig[$v›wName]è&& +¬¿y_key_exi¡s +('has_layout', $this->yamlConfig[$viewName])); + +167 + g$Ïyout + = +$this +-> +g‘CÚfigV®ue +('has_Ïyout', +$v›wName +è? + g$this +->g‘CÚfigV®ue('Ïyout', $v›wNameè: +çl£ +; + +170 + g$d©a + = <<< +EOF + + +171 ià( +nuÎ + !=ð\ +$Ïyout + = +sfCÚfig +:: +g‘ +('symfÚy.v›w.'.\ +$this +-> +moduËName +.'_'.\$this-> +aùiÚName +.'_layout')) + +173 \ +$this +-> +£tDecÜ©ÜTem¶©e +( +çl£ + ==ð\ +$Ïyout + ? f®£ : \$Ïyout.\$this-> +g‘Ex‹nsiÚ +()); + +175 + gEOF +; + +177 ià( + g$hasLoÿlLayout +) + +180 + g$d©a + .ð<<< +EOF + + +184 \ +$this +-> +£tDecÜ©ÜTem¶©e +('' =ð'$Ïyout' ? +çl£ + : '$Ïyout'.\$this-> +g‘Ex‹nsiÚ +()); + +187 + gEOF +; + +195 + g$d©a + .ð<<< +EOF + + +197 ià( +nuÎ + ==ð\ +$this +-> +g‘DecÜ©ÜTem¶©e +(è&& !\$this-> +cڋxt +-> +g‘Reque¡ +()-> +isXmlH‰pReque¡ +()) + +199 \ +$this +-> +£tDecÜ©ÜTem¶©e +('' =ð'$Ïyout' ? +çl£ + : '$Ïyout'.\$this-> +g‘Ex‹nsiÚ +()); + +202 + gEOF +; + +205  + g$d©a +; + +215 +´Ùeùed + +funùiÚ + +addHtmlH—d +( +$v›wName + = '') + +217 +$d©a + = +¬¿y +(); + +219 +fܗch + ( +$this +-> +m”geCÚfigV®ue +('h‰p_m‘as', +$v›wName +è +as + +$h‰³quiv + => +$cڋÁ +) + +221 +$d©a +[] = +¥rštf +(" \$»¥Ú£->addH‰pM‘a('%s', '%s', f®£);", +$h‰³quiv +, +¡r_»¶aû +('\'', '\\\'', +$cڋÁ +)); + +224 +fܗch + ( +$this +-> +m”geCÚfigV®ue +('m‘as', +$v›wName +è +as + +$Çme + => +$cڋÁ +) + +226 +$d©a +[] = +¥rštf +(" \$»¥Ú£->addM‘a('%s', '%s', f®£, f®£);", +$Çme +, +¡r_»¶aû +('\'', '\\\'', +´eg_»¶aû +('/&(?=\w+;)/', '&', +html¥ecŸlch¬s +( +$cڋÁ +, +ENT_QUOTES +, +sfCÚfig +:: +g‘ +('sf_charset'))))); + +229  +im¶ode +("\n", +$d©a +)."\n"; + +239 +´Ùeùed + +funùiÚ + +addHtmlAs£t +( +$v›wName + = '') + +242 +$¡yËsh“ts + = +$this +-> +m”geCÚfigV®ue +('¡yËsh“ts', +$v›wName +); + +243 + g$css + = +$this +-> +addAs£ts +('StyËsh“t', +$¡yËsh“ts +); + +246 + g$javasüts + = +$this +-> +m”geCÚfigV®ue +('javasüts', +$v›wName +); + +247 + g$js + = +$this +-> +addAs£ts +('Javasüt', +$javasüts +); + +249  +im¶ode +("\n", +¬¿y_m”ge +( +$css +, +$js +))."\n"; + +259 +´iv©e + +funùiÚ + + $addAs£ts +( +$ty³ +, +$as£ts +){ + +260 +$tmp + = + `¬¿y +(); + +261 + `fܗch + (( +¬¿y +è +$as£ts + +as + +$as£t +) + +263 +$pos™iÚ + = ''; + +264 ià( + `is_¬¿y +( +$as£t +)) + +266 +$key + = + `key +( +$as£t +); + +267 +$ÝtiÚs + = +$as£t +[ +$key +]; + +268 ià( + `is£t +( +$ÝtiÚs +['position'])) + +270 +$pos™iÚ + = +$ÝtiÚs +['position']; + +271 + `un£t +( +$ÝtiÚs +['position']); + +276 +$key + = +$as£t +; + +277 +$ÝtiÚs + = + `¬¿y +(); + +280 ià('-*' =ð +$key +) + +282 +$tmp + = + `¬¿y +(); + +284 ià('-' =ð +$key +[0]) + +286 + `un£t +( +$tmp +[ + `sub¡r +( +$key +, 1)]); + +290 +$tmp +[ +$key +] = + `¥rštf +(" \$»¥Ú£->add%s('%s', '%s', %s);", +$ty³ +, $key, +$pos™iÚ +, + `¡r_»¶aû +("\n", '', + `v¬_expÜt +( +$ÝtiÚs +, +Œue +))); + +293  + `¬¿y_v®ues +( +$tmp +); + +294 + } +} + +303 +´Ùeùed + +funùiÚ + +addEsÿpšg +( +$v›wName + = '') + +305 +$d©a + = +¬¿y +(); + +307 + g$esÿpšg + = +$this +-> +g‘CÚfigV®ue +('esÿpšg', +$v›wName +); + +309 ià( +is£t +( +$esÿpšg +['method'])) + +311 + g$d©a +[] = +¥rštf +(" \$this->g‘A‰ribu‹HÞd”()->£tEsÿpšgM‘hod(%s);", +v¬_expÜt +( +$esÿpšg +['m‘hod'], +Œue +)); + +314  +im¶ode +("\n", +$d©a +)."\n"; + +320  +public + +funùiÚ + + $g‘CÚfigu¿tiÚ +( +¬¿y + +$cÚfigFžes +) + +322  +£lf +:: + `m”geCÚfig +(£lf:: + `·r£Yamls +( +$cÚfigFžes +)); + +323 + } +} + +325  +´Ùeùed + +funùiÚ + + $m”geCÚfig +( +$cÚfig +) + +328 +$cÚfig +['®l']['¡yËsh“ts'] = + `¬¿y_m”ge +( + `is£t +($cÚfig['deçuÉ']['¡yËsh“ts']è&& + `is_¬¿y +($cÚfig['deçuÉ']['¡yËsh“ts']è? $cÚfig['deçuÉ']['¡yËsh“ts'] : + `¬¿y +(), isset($config['all']['stylesheets']) && is_array($config['all']['stylesheets']) ? $config['all']['stylesheets'] :‡rray()); + +329 + `un£t +( +$cÚfig +['default']['stylesheets']); + +331 +$cÚfig +['®l']['javasüts'] = + `¬¿y_m”ge +( + `is£t +($cÚfig['deçuÉ']['javasüts']è&& + `is_¬¿y +($cÚfig['deçuÉ']['javasüts']è? $cÚfig['deçuÉ']['javasüts'] : + `¬¿y +(), isset($config['all']['javascripts']) && is_array($config['all']['javascripts']) ? $config['all']['javascripts'] :‡rray()); + +332 + `un£t +( +$cÚfig +['default']['javascripts']); + +335 +$cÚfig +['®l'] = +sfToÞk™ +:: + `¬¿yD“pM”ge +( + +336 + `is£t +( +$cÚfig +['deçuÉ']è&& + `is_¬¿y +($cÚfig['deçuÉ']è? $cÚfig['deçuÉ'] : + `¬¿y +(), + +337 + `is£t +( +$cÚfig +['®l']è&& + `is_¬¿y +($cÚfig['®l']è? $cÚfig['®l'] : + `¬¿y +() + +340 + `un£t +( +$cÚfig +['default']); + +342  +£lf +:: + `»¶aûCÚ¡ªts +( +$cÚfig +); + +343 + } +} + + @lib/vendor/symfony/lib/config/sfYamlConfigHandler.class.php + +1 +$v®ue +) + +41 ià( +nuÎ + !=ð +$v®ue +) + +43 +$v®ues +[ +$’v +] = +$v®ue +; + +47 +$cÚfig + = +sfToÞk™ +:: + `¬¿yD“pM”ge +($cÚfig, +$v®ues +); + +50  +$cÚfig +; + +63  +public + +funùiÚ + + $·r£Yaml +( +$cÚfigFže +) + +65 ià(! + `is_»adabË +( +$cÚfigFže +)) + +68 +throw + +Ãw + + `sfCÚfigu¿tiÚExû±iÚ +( + `¥rštf +('CÚfigu¿tiÚ fž"%s" dÛ nكxi¡ o¸i nل—dabË.', +$cÚfigFže +)); + +72 +$cÚfig + = +sfYaml +:: + `lßd +( +$cÚfigFže +); + +74 ià( +$cÚfig + ==ð +çl£ +) + +77 +throw + +Ãw + + `sfP¬£Exû±iÚ +( + `¥rštf +('CÚfigu¿tiÚ fž"%s" could‚Ù b·r£d', +$cÚfigFže +)); + +80  +nuÎ + ==ð +$cÚfig + ? + `¬¿y +() : $config; + +81 + } +} + +91 +´Ùeùed + +funùiÚ + + $m”geCÚfigV®ue +( +$keyName +, +$ÿ‹gÜy +) + +93 +$v®ues + = + `¬¿y +(); + +95 ià( + `is£t +( +$this +-> +yamlCÚfig +['®l'][ +$keyName +]è&& + `is_¬¿y +($this->yamlConfig['all'][$keyName])) + +97 +$v®ues + = +$this +-> +yamlCÚfig +['®l'][ +$keyName +]; + +100 ià( +$ÿ‹gÜy + && + `is£t +( +$this +-> +yamlCÚfig +[$ÿ‹gÜy][ +$keyName +]è&& + `is_¬¿y +($this->yamlConfig[$category][$keyName])) + +102 +$v®ues + = + `¬¿y_m”ge +($v®ues, +$this +-> +yamlCÚfig +[ +$ÿ‹gÜy +][ +$keyName +]); + +105  +$v®ues +; + +106 + } +} + +117 +´Ùeùed + +funùiÚ + + $g‘CÚfigV®ue +( +$keyName +, +$ÿ‹gÜy +, +$deçuÉV®ue + = +nuÎ +) + +119 ià( + `is£t +( +$this +-> +yamlCÚfig +[ +$ÿ‹gÜy +][ +$keyName +])) + +121  +$this +-> +yamlCÚfig +[ +$ÿ‹gÜy +][ +$keyName +]; + +123 ià( + `is£t +( +$this +-> +yamlCÚfig +['®l'][ +$keyName +])) + +125  +$this +-> +yamlCÚfig +['®l'][ +$keyName +]; + +128  +$deçuÉV®ue +; + +129 + } +} + +131  +public + +funùiÚ + + $橋nCÚfigu¿tiÚ +( +$cÚfig +) + +133 +$cÚfig +['®l'] = +sfToÞk™ +:: + `¬¿yD“pM”ge +( + +134 + `is£t +( +$cÚfig +['deçuÉ']è&& + `is_¬¿y +($cÚfig['deçuÉ']è? $cÚfig['deçuÉ'] : + `¬¿y +(), + +135 + `is£t +( +$cÚfig +['®l']è&& + `is_¬¿y +($cÚfig['®l']è? $cÚfig['®l'] : + `¬¿y +() + +138 + `un£t +( +$cÚfig +['default']); + +140  +$cÚfig +; + +141 + } +} + +150  +public + +funùiÚ + + $橋nCÚfigu¿tiÚW™hEnvœÚm’t +( +$cÚfig +) + +152  +sfToÞk™ +:: + `¬¿yD“pM”ge +( + +153 + `is£t +( +$cÚfig +['deçuÉ']è&& + `is_¬¿y +($cÚfig['deçuÉ']è? $cÚfig['deçuÉ'] : + `¬¿y +(), + +154 + `is£t +( +$cÚfig +['®l']è&& + `is_¬¿y +($cÚfig['®l']è? $cÚfig['®l'] : + `¬¿y +(), + +155 + `is£t +( +$cÚfig +[ +sfCÚfig +:: + `g‘ +('sf_’vœÚm’t')]è&& + `is_¬¿y +($cÚfig[sfCÚfig::g‘('sf_’vœÚm’t')]è? $cÚfig[sfCÚfig::g‘('sf_’vœÚm’t')] : + `¬¿y +() + +157 + } +} + + @lib/vendor/symfony/lib/controller/default/actions/actions.class.php + +1 + +2 < +html + + gxmÊs +="h‰p://www.w3.Üg/1999/xhtml" +xml +: +Ïng +="en"†ang="en"> + +3 < +h—d +> + +5 + +6 + +7 + +8 + +9 + +10 + +12 < +lšk + + g»l +="shÜtcuˆicÚ" +h»f +="/favicon.ico" /> + +14 + +18 + +19 < +body +> + +20 < +div + +þass +="sfTContainer"> + +21 'symfony PHP Framework', 'class' => 'sfTLogo', 'size' => '186x39')), 'http://www.symfony-project.org/') ?> + +22 + +23 + +24 + +25 + + @lib/vendor/symfony/lib/controller/default/templates/disabledSuccess.php + +1 + +3 < +div + + gþass +="sfTMessageContainer sfTAlert"> + +4 'module disabled', 'class' => 'sfTMessageIcon', 'size' => '48x48')) ?> + +5 < +div + +þass +="sfTMessageWrap"> + +6 < +h1 +> +This + +ModuË + +is + +UÇvažabË + + +7 < +h5 +> +This + +moduË + +has + +b“n + +di§bËd +. + +8 + +9 + +10 < +dl + +þass +="sfTMessageInfo"> + +12 < +dt +> +Wh© +'s‚ext + +13 < +dd +> + +14 < +ul + +þass +="sfTIconList"> + +15 < +li + +þass +="sfTLškMes§ge">< +a + +h»f +="javasüt:hi¡Üy.go(-1)"> +Back + +to + +´evious + +·ge +
+ +16 < +li + +þass +="sfTLškMes§ge"> + +17 + +18 + +19 + + @lib/vendor/symfony/lib/controller/default/templates/error404Success.php + +1 + +3 < +div + + gþass +="sfTMessageContainer sfTAlert"> + +4 'page‚ot found', 'class' => 'sfTMessageIcon', 'size' => '48x48')) ?> + +5 < +div + +þass +="sfTMessageWrap"> + +6 < +h1 +> +OÝs +! +Page + +NÙ + +Found + + +7 < +h5 +> +The + +£rv” + +»tuºed + +a + 404 +»¥Ú£ +. + +8 + +9 + +10 < +dl + +þass +="sfTMessageInfo"> + +11 < +dt +> +Did + +you + +ty³ + +the + +URL +? + +12 < +dd +> +You + +may + +have + +ty³d + +the + + $add»ss + ( +URL +è +šcÜ»ùly +. +Check + +™ + +to + +make + +su» + +you +'ve gotheƒxact„ight spelling, capitalization,ƒtc. + +14 < +dt +> +Did + +you + +fÞlow + +a + +lšk + +äom + +somewh”e + +© + +this + +s™e +? + +15 < +dd +> +If + +you + +»ached + +this + +·ge + +äom + +ªÙh” + +·¹ + +of +hi  +s™e +, +¶—£ + +emaž + +us + +© + +so + +we + +ÿn + +cÜ»ù + +our + +mi¡ake +. + +17 < +dt +> +Did + +you + +fÞlow + +a + +lšk + +äom + +ªÙh” + +s™e +? + +18 < +dd +> +Lšks + +äom + +Ùh” + +s™es + +ÿn + +som‘imes + +be + +outd©ed + +Ü + +mis¥–Ëd +. +Emaž + +us + +© + +wh”e + +you + +ÿme + from +ªd + +we + cª +Œy + +to + +cڏù + +the + oth” +s™e + +š + +Üd” +Ø +fix +h +´obËm +. + +20 < +dt +> +Wh© +'s‚ext + +21 < +dd +> + +22 < +ul + +þass +="sfTIconList"> + +23 < +li + +þass +="sfTLškMes§ge">< +a + +h»f +="javasüt:hi¡Üy.go(-1)"> +Back + +to + +´evious + +·ge + + +24 < +li + +þass +="sfTLškMes§ge"> + +25 + +26 + +27 + + @lib/vendor/symfony/lib/controller/default/templates/indexSuccess.php + +1 + +3 < +div + + gþass +="sfTMessageContainer sfTMessage"> + +4 'ok', 'class' => 'sfTMessageIcon', 'size' => '48x48')) ?> + +5 < +div + +þass +="sfTMessageWrap"> + +6 < +h1 +> +SymfÚy + +Projeù + +C»©ed + + +7 < +h5 +> +CÚg¿tuÏtiÚs +! +You + +have + +sucûssfuÎy + +ü—‹d + +your + +symfÚy + +´ojeù +. + +8 + +9 + +10 < +dl + +þass +="sfTMessageInfo"> + +11 < +dt +> +Projeù + +£tup + +sucûssful + + +12 < +dd +> +This + +´ojeù + +u£s + +the + +symfÚy + +lib¿r›s +. +If + +you + +£e + +no + +image + +š + +this + +·ge +, you +may + +Ãed + +to + +cÚfigu» + +your + +web + +£rv” + +so + +th© + +™ + +gašs + +acûss +Ø + gthe + < + gcode +> + gsymfÚy_d©a +/ + gweb +/ + gsf +/ + gdœeùÜy +. + +14 < + gdt +> +This + +is + +a + +‹mpܬy + + g·ge + + +15 < + gdd +> +This + +·ge + +is + +·¹ + +of + +the + + gsymfÚy + < + gcode +> + gmoduË +. +It + +wžl + +di§µ—r + +as + +soÚ +‡  +you + +defše + + ga + + ghom•age + +rou‹ + +š + + gyour + + groutšg +. + gyml +. + +17 < + gdt +> + gWh© +'s‚ext + +18 < + gdd +> + +19 < +ul + + gþass +="sfTIconList"> + +20 < +li + +þass +="sfTD©aba£Mes§ge"> +C»©e + +your + +d©a + +mod– + + +21 < +li + +þass +="sfTCÞÜMes§ge"> +Cu¡omize + +the + +Ïyout + +of +h +g’”©ed + +‹m¶©es + + +22 < +li + +þass +="sfTLškMes§ge"> + +23 + +24 + +25 + + @lib/vendor/symfony/lib/controller/default/templates/loginSuccess.php + +1 + +3 < +div + + gþass +="sfTMessageContainer sfTLock"> + +4 'login„equired', 'class' => 'sfTMessageIcon', 'size' => '48x48')) ?> + +5 < +div + +þass +="sfTMessageWrap"> + +6 < +h1 +> +Logš + +Requœed + + +7 < +h5 +> +This + +·ge + +is + +nÙ + +public +. + +8 + +9 + +10 < +dl + +þass +="sfTMessageInfo"> + +11 < +dt +> +How + +to + +acûss + +this + +·ge + + +12 < +dd +> +You + +mu¡ + +´oûed + +to + +the + +logš + +·ge + +ªd + +’‹r + +your + +id +‡nd +·sswÜd +. + +14 < +dt +> +Wh© +'s Next + +15 < +dd +> + +16 < +ul + +þass +="sfTIconList"> + +17 < +li + +þass +="sfTLškMes§ge"> + +18 < +li + +þass +="sfTLškMes§ge">< +a + +h»f +="javasüt:hi¡Üy.go(-1)"> +Back + +to + +´evious + +·ge + + +19 + +20 + +21 + + @lib/vendor/symfony/lib/controller/default/templates/moduleSuccess.php + +1 + +3 < +div + + gþass +="sfTMessageContainer sfTMessage"> + +4 'module created', 'class' => 'sfTMessageIcon', 'size' => '48x48')) ?> + +5 < +div + +þass +="sfTMessageWrap"> + +6 < +h1 +> +ModuË + "g‘('moduË'è?>" +ü—‹d + + +7 < +h5 +> +CÚg¿tuÏtiÚs +! +You + +have + +sucûssfuÎy + +ü—‹d + +a + +symfÚy + +moduË +. + +8 + +9 + +10 < +dl + +þass +="sfTMessageInfo"> + +11 < +dt +> +This + +is + +a + +‹mpܬy + +·ge + + +12 < +dd +> +This + +·ge + +is + +·¹ + +of + +the + +symfÚy + < +code +> +moduË +. +It + +wžl + +di§µ—r + +as + +soÚ +‡  +you + +ov”ride +h +šdex + +aùiÚ + +š +h +Ãw + module. + +14 < +dt +> +Wh© +'s‚ext + +15 < +dd +> + +16 < +ul + +þass +="sfTIconList"> + +17 < +li + +þass +="sfTDœeùÜyMes§ge"> +Brow£ + +to + +the + < +code +> +­ps +/ +g‘CÚfigu¿tiÚ +()-> +g‘AµliÿtiÚ +(è?>/ +moduËs +/ +g‘ +('moduË'è?>/ +dœeùÜy + + +18 < +li + +þass +="sfTEd™Mes§ge"> +In + < +code +> +aùiÚs +/aùiÚs.þass. +php +, +ed™ + + gthe + < + gcode +> +execu‹Index +() +m‘hod + +ªd + +»move + +the + + gfš® + + gfÜw¬d + + +19 < +li + + gþass +="sfTCÞÜMes§ge"> +Cu¡omize + +the + < +code +> +‹m¶©es +/ +šdexSucûss +. +php + +‹m¶©e + + +20 < +li + +þass +="sfTLškMes§ge"> + +21 + +22 + +23 + + @lib/vendor/symfony/lib/controller/default/templates/secureSuccess.php + +1 + +3 < +div + + gþass +="sfTMessageContainer sfTLock"> + +4 'credentials„equired', 'class' => 'sfTMessageIcon', 'size' => '48x48')) ?> + +5 < +div + +þass +="sfTMessageWrap"> + +6 < +h1 +> +C»d’tŸls + +Requœed + + +7 < +h5 +> +This + +·ge + +is + +š + +a + +»¡riùed + +¬— +. + +8 + +9 + +10 < +dl + +þass +="sfTMessageInfo"> + +11 < +dt +> +You + dØ +nÙ + +have + +the + +´Ý” + +üed’tŸls + +to + +acûss + +this + +·ge + + +12 < +dd +> +Ev’ + +though + +you + +¬e + +®»ady + +logged + +š +, +this + +·ge + +»quœes + +¥ecŸl + +üed’tŸls + +th© + you +cu¼’Žy + + gdÚ +'t have. + +14 < + gdt +> +How + +to + +acûss + +this + + g·ge + + +15 < + gdd +> +You + +mu¡ + +ask + +a + +s™e + +admši¡¿tÜ + +to + +g¿Á + +you + +some + +¥ecŸl + + güed’tŸls +. + +17 < + gdt +> + gWh© +'s‚ext + +18 < + gdd +> + +19 < +ul + + gþass +="sfTIconList"> + +20 < +li + +þass +="sfTLškMes§ge">< +a + +h»f +="javasüt:hi¡Üy.go(-1)"> +Back + +to + +´evious + +·ge + + +21 + +22 + +23 + + @lib/vendor/symfony/lib/controller/sfController.class.php + +1 + `š™Ÿlize +( +$cڋxt +); + +45 +public + +funùiÚ + + $š™Ÿlize +( +$cڋxt +) + +47 +$this +-> +cڋxt + = +$cڋxt +; + +48 +$this +-> +di¥©ch” + = +$cڋxt +-> + `g‘Ev’tDi¥©ch” +(); + +49 + } +} + +59 +public + +funùiÚ + + $compڒtExi¡s +( +$moduËName +, +$compڒtName +) + +61  +$this +-> + `cڌÞËrExi¡s +( +$moduËName +, +$compڒtName +, 'compڒt', +çl£ +); + +62 + } +} + +72 +public + +funùiÚ + + $aùiÚExi¡s +( +$moduËName +, +$aùiÚName +) + +74  +$this +-> + `cڌÞËrExi¡s +( +$moduËName +, +$aùiÚName +, 'aùiÚ', +çl£ +); + +75 + } +} + +91 +´Ùeùed + +funùiÚ + + $cڌÞËrExi¡s +( +$moduËName +, +$cڌÞËrName +, +$ex‹nsiÚ +, +$throwExû±iÚs +) + +93 +$dœs + = +$this +-> +cڋxt +-> + `g‘CÚfigu¿tiÚ +()-> + `g‘CڌÞËrDœs +( +$moduËName +); + +94 + `fܗch + ( +$dœs + +as + +$dœ + => +$checkEÇbËd +) + +97 ià( +$checkEÇbËd + && ! + `š_¬¿y +( +$moduËName +, +sfCÚfig +:: + `g‘ +('sf_’abËd_moduËs')è&& + `is_»adabË +( +$dœ +)) + +99 +throw + +Ãw + + `sfCÚfigu¿tiÚExû±iÚ +( + `¥rštf +('ThmoduË "%s" i nكÇbËd.', +$moduËName +)); + +103 +$this +-> +cڋxt +-> + `g‘CÚfigCache +()-> + `impÜt +('moduËs/'. +$moduËName +.'/cÚfig/g’”©Ü.yml', +çl£ +, +Œue +); + +106 +$þassFže + = + `¡¹Þow” +( +$ex‹nsiÚ +); + +107 +$þassSuffix + = + `ucfœ¡ +( + `¡¹Þow” +( +$ex‹nsiÚ +)); + +108 +$fže + = +$dœ +.'/'. +$cڌÞËrName +. +$þassSuffix +.'.class.php'; + +109 ià( + `is_»adabË +( +$fže +)) + +112 + `»quœe_Úû +( +$fže +); + +114 +$this +-> +cڌÞËrCÏs£s +[ +$moduËName +.'_'. +$cڌÞËrName +.'_'. +$þassSuffix +] = $controllerName.$classSuffix; + +116  +Œue +; + +119 +$moduË_fže + = +$dœ +.'/'. +$þassFže +.'s.class.php'; + +120 ià( + `is_»adabË +( +$moduË_fže +)) + +123 + `»quœe_Úû +( +$moduË_fže +); + +125 ià(! + `þass_exi¡s +( +$moduËName +. +$þassSuffix +.'s', +çl£ +)) + +127 ià( +$throwExû±iÚs +) + +129 +throw + +Ãw + + `sfCڌÞËrExû±iÚ +( + `¥rštf +('Th”i nØ"%s" cÏs š you¸aùiÚ fž"%s".', +$moduËName +. +$þassSuffix +.'s', +$moduË_fže +)); + +132  +çl£ +; + +136 ià(! + `š_¬¿y +('execu‹'. + `ucfœ¡ +( +$cڌÞËrName +), + `g‘_þass_m‘hods +( +$moduËName +. +$þassSuffix +.'s'))) + +138 ià( +$throwExû±iÚs +) + +140 +throw + +Ãw + + `sfCڌÞËrExû±iÚ +( + `¥rštf +('Th”i nØ"%s" m‘hod iÀyou¸aùiÚ cÏs "%s".', 'execu‹'. + `ucfœ¡ +( +$cڌÞËrName +), +$moduËName +. +$þassSuffix +.'s')); + +143  +çl£ +; + +146 +$this +-> +cڌÞËrCÏs£s +[ +$moduËName +.'_'. +$cڌÞËrName +.'_'. +$þassSuffix +] = $moduleName.$classSuffix.'s'; + +147  +Œue +; + +152 ià( +$throwExû±iÚs + && +sfCÚfig +:: + `g‘ +('sf_debug')) + +154 +$dœs + = + `¬¿y_m­ +( + `¬¿y +('sfDebug', 'sh܋nFžeP©h'), + `¬¿y_keys +($dirs)); + +156 +throw + +Ãw + + `sfCڌÞËrExû±iÚ +( + `¥rštf +('CڌÞ˸"%s/%s" dÛ nكxi¡ in: %s.', +$moduËName +, +$cڌÞËrName +, + `im¶ode +(', ', +$dœs +))); + +159  +çl£ +; + +160 + } +} + +173 +public + +funùiÚ + + $fÜw¬d +( +$moduËName +, +$aùiÚName +) + +176 +$moduËName + = + `´eg_»¶aû +('/[^a-z0-9_]+/i', '', $moduleName); + +177 +$aùiÚName + = + `´eg_»¶aû +('/[^a-z0-9_]+/i', '', $actionName); + +179 ià( +$this +-> + `g‘AùiÚSck +()-> + `g‘Size +(è>ð$this-> +maxFÜw¬ds +) + +182 +throw + +Ãw + + `sfFÜw¬dExû±iÚ +('Too many forwards have been detected forhis„equest.'); + +186 +$this +-> +cڋxt +-> + `g‘CÚfigCache +()-> + `impÜt +('moduËs/'. +$moduËName +.'/cÚfig/g’”©Ü.yml', +çl£ +, +Œue +); + +188 ià(! +$this +-> + `aùiÚExi¡s +( +$moduËName +, +$aùiÚName +)) + +191 ià( +sfCÚfig +:: + `g‘ +('sf_logging_enabled')) + +193 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, '­¶iÿtiÚ.log', + `¬¿y +( + `¥rštf +('AùiÚ "%s/%s" dÛ nكxi¡', +$moduËName +, +$aùiÚName +)))); + +196 +throw + +Ãw + + `sfE¼Ü404Exû±iÚ +( + `¥rštf +('AùiÚ "%s/%s" dÛ nكxi¡.', +$moduËName +, +$aùiÚName +)); + +200 +$aùiÚIn¡ªû + = +$this +-> + `g‘AùiÚ +( +$moduËName +, +$aùiÚName +); + +203 +$this +-> + `g‘AùiÚSck +()-> + `addEÁry +( +$moduËName +, +$aùiÚName +, +$aùiÚIn¡ªû +); + +206 +$v›wCÏss + = +sfCÚfig +:: + `g‘ +('mod_'. + `¡¹Þow” +( +$moduËName +).'_v›w_þass', +çl£ +); + +207 + `»quœe +( +$this +-> +cڋxt +-> + `g‘CÚfigCache +()-> + `checkCÚfig +('moduËs/'. +$moduËName +.'/config/module.yml')); + +208 ià( +çl£ + !=ð +$v›wCÏss +) + +210 +sfCÚfig +:: + `£t +('mod_'. + `¡¹Þow” +( +$moduËName +).'_v›w_þass', +$v›wCÏss +); + +214 ià( +sfCÚfig +:: + `g‘ +('mod_'. + `¡¹Þow” +( +$moduËName +).'_enabled')) + +217 +$moduËCÚfig + = +sfCÚfig +:: + `g‘ +('sf_­p_moduË_dœ').'/'. +$moduËName +.'/config/config.php'; + +218 ià( + `is_»adabË +( +$moduËCÚfig +)) + +220 + `»quœe_Úû +( +$moduËCÚfig +); + +224 +$fž‹rChaš + = +Ãw + + `sfFž‹rChaš +(); + +225 +$fž‹rChaš +-> + `lßdCÚfigu¿tiÚ +( +$aùiÚIn¡ªû +); + +227 +$this +-> +cڋxt +-> + `g‘Ev’tDi¥©ch” +()-> + `nÙify +( +Ãw + + `sfEv’t +($this, 'cڌÞËr.chªge_aùiÚ', + `¬¿y +('moduË' => +$moduËName +, 'aùiÚ' => +$aùiÚName +))); + +229 ià( +$moduËName + =ð +sfCÚfig +:: + `g‘ +('sf_”rÜ_404_moduË'è&& +$aùiÚName + == sfConfig::get('sf_error_404_action')) + +231 +$this +-> +cڋxt +-> + `g‘Re¥Ú£ +()-> + `£tStusCode +(404); + +232 +$this +-> +cڋxt +-> + `g‘Re¥Ú£ +()-> + `£tH‰pH—d” +('Status', '404 Not Found'); + +234 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, 'cڌÞËr.·ge_nÙ_found', + `¬¿y +('moduË' => +$moduËName +, 'aùiÚ' => +$aùiÚName +))); + +238 +$fž‹rChaš +-> + `execu‹ +(); + +242 +$moduËName + = +sfCÚfig +:: + `g‘ +('sf_module_disabled_module'); + +243 +$aùiÚName + = +sfCÚfig +:: + `g‘ +('sf_module_disabled_action'); + +245 ià(! +$this +-> + `aùiÚExi¡s +( +$moduËName +, +$aùiÚName +)) + +248 +throw + +Ãw + + `sfCÚfigu¿tiÚExû±iÚ +( + `¥rštf +('Inv®id cÚfigu¿tiÚ s‘tšgs: [sf_moduË_di§bËd_moduË] "%s", [sf_moduË_di§bËd_aùiÚ] "%s".', +$moduËName +, +$aùiÚName +)); + +251 +$this +-> + `fÜw¬d +( +$moduËName +, +$aùiÚName +); + +253 + } +} + +263 +public + +funùiÚ + + $g‘AùiÚ +( +$moduËName +, +$aùiÚName +) + +265  +$this +-> + `g‘CڌÞËr +( +$moduËName +, +$aùiÚName +, 'action'); + +266 + } +} + +276 +public + +funùiÚ + + $g‘Compڒt +( +$moduËName +, +$compڒtName +) + +278  +$this +-> + `g‘CڌÞËr +( +$moduËName +, +$compڒtName +, 'component'); + +279 + } +} + +292 +´Ùeùed + +funùiÚ + + $g‘CڌÞËr +( +$moduËName +, +$cڌÞËrName +, +$ex‹nsiÚ +) + +294 +$þassSuffix + = + `ucfœ¡ +( + `¡¹Þow” +( +$ex‹nsiÚ +)); + +295 ià(! + `is£t +( +$this +-> +cڌÞËrCÏs£s +[ +$moduËName +.'_'. +$cڌÞËrName +.'_'. +$þassSuffix +])) + +297 +$this +-> + `cڌÞËrExi¡s +( +$moduËName +, +$cڌÞËrName +, +$ex‹nsiÚ +, +Œue +); + +300 +$þass + = +$this +-> +cڌÞËrCÏs£s +[ +$moduËName +.'_'. +$cڌÞËrName +.'_'. +$þassSuffix +]; + +303 +$moduËCÏss + = +$moduËName +.'_'. +$þass +; + +305 ià( + `þass_exi¡s +( +$moduËCÏss +, +çl£ +)) + +307 +$þass + = +$moduËCÏss +; + +310  +Ãw + + `$þass +( +$this +-> +cڋxt +, +$moduËName +, +$cڌÞËrName +); + +311 + } +} + +318 +public + +funùiÚ + + $g‘AùiÚSck +() + +320  +$this +-> +cڋxt +-> + `g‘AùiÚSck +(); + +321 + } +} + +330 +public + +funùiÚ + + $g‘R’d”Mode +() + +332  +$this +-> +»nd”Mode +; + +333 + } +} + +344 +public + +funùiÚ + + $g‘V›w +( +$moduËName +, +$aùiÚName +, +$v›wName +) + +347 +$fže + = +sfCÚfig +:: + `g‘ +('sf_­p_moduË_dœ').'/'. +$moduËName +.'/v›w/'. +$aùiÚName +. +$v›wName +.'View.class.php'; + +349 ià( + `is_»adabË +( +$fže +)) + +351 + `»quœe_Úû +( +$fže +); + +353 +$þass + = +$aùiÚName +. +$v›wName +.'View'; + +356 +$moduËCÏss + = +$moduËName +.'_'. +$þass +; + +358 ià( + `þass_exi¡s +( +$moduËCÏss +, +çl£ +)) + +360 +$þass + = +$moduËCÏss +; + +366 +$þass + = +sfCÚfig +:: + `g‘ +('mod_'. + `¡¹Þow” +( +$moduËName +).'_view_class', 'sfPHP').'View'; + +369  +Ãw + + `$þass +( +$this +-> +cڋxt +, +$moduËName +, +$aùiÚName +, +$v›wName +); + +370 + } +} + +381 +public + +funùiÚ + + $g‘P»£Á©iÚFÜ +( +$moduË +, +$aùiÚ +, +$v›wName + = +nuÎ +) + +383 ià( +sfCÚfig +:: + `g‘ +('sf_logging_enabled')) + +385 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, '­¶iÿtiÚ.log', + `¬¿y +( + `¥rštf +('G‘…»£Á©iÚ f܇ùiÚ "%s/%s" (v›w cÏss: "%s")', +$moduË +, +$aùiÚ +, +$v›wName +)))); + +389 +$»nd”Mode + = +$this +-> + `g‘R’d”Mode +(); + +392 +$this +-> + `£tR’d”Mode +( +sfV›w +:: +RENDER_VAR +); + +395 +$aùiÚSck + = +$this +-> + `g‘AùiÚSck +(); + +398 +$šdex + = +$aùiÚSck +-> + `g‘Size +(); + +401 ià( +$v›wName +) + +403 +$cu¼’tV›wName + = +sfCÚfig +:: + `g‘ +('mod_'. + `¡¹Þow” +( +$moduË +).'_view_class'); + +404 +sfCÚfig +:: + `£t +('mod_'. + `¡¹Þow” +( +$moduË +).'_v›w_þass', +$v›wName +); + +407 +Œy + + +410 +$this +-> + `fÜw¬d +( +$moduË +, +$aùiÚ +); + +412 + `ÿtch + ( +Exû±iÚ + +$e +) + +415 +$this +-> + `£tR’d”Mode +( +$»nd”Mode +); + +418 ià( +$v›wName +) + +420 +sfCÚfig +:: + `£t +('mod_'. + `¡¹Þow” +( +$moduË +).'_v›w_þass', +$cu¼’tV›wName +); + +423 +throw + +$e +; + +427 +$aùiÚEÁry + = +$aùiÚSck +-> + `g‘EÁry +( +$šdex +); + +430 +$´e£Á©iÚ + =& +$aùiÚEÁry +-> + `g‘P»£Á©iÚ +(); + +433 +$this +-> + `£tR’d”Mode +( +$»nd”Mode +); + +436 +$nb + = +$aùiÚSck +-> + `g‘Size +(è- +$šdex +; + +437  +$nb +-- > 0) + +439 +$aùiÚEÁry + = +$aùiÚSck +-> + `pÝEÁry +(); + +441 ià( +$aùiÚEÁry +-> + `g‘ModuËName +(è=ð +sfCÚfig +:: + `g‘ +('sf_logš_moduË'è&& $aùiÚEÁry-> + `g‘AùiÚName +() == sfConfig::get('sf_login_action')) + +443 +throw + +Ãw + + `sfExû±iÚ +('Your‡ction is secured, buthe user is‚ot‡uthenticated.'); + +445 ià( +$aùiÚEÁry +-> + `g‘ModuËName +(è=ð +sfCÚfig +:: + `g‘ +('sf_£cu»_moduË'è&& $aùiÚEÁry-> + `g‘AùiÚName +() == sfConfig::get('sf_secure_action')) + +447 +throw + +Ãw + + `sfExû±iÚ +('Your‡ction is secured, buthe user does‚ot have‡ccess.'); + +452 ià( +$v›wName +) + +454 +sfCÚfig +:: + `£t +('mod_'. + `¡¹Þow” +( +$moduË +).'_v›w_þass', +$cu¼’tV›wName +); + +457  +$´e£Á©iÚ +; + +458 + } +} + +472 +public + +funùiÚ + + $£tR’d”Mode +( +$mode +) + +474 ià( +$mode + =ð +sfV›w +:: +RENDER_CLIENT + || $mod=ðsfV›w:: +RENDER_VAR + || $mod=ðsfV›w:: +RENDER_NONE +) + +476 +$this +-> +»nd”Mode + = +$mode +; + +482 +throw + +Ãw + + `sfR’d”Exû±iÚ +( + `¥rštf +('Inv®id„’d”šg mode: %s.', +$mode +)); + +483 + } +} + +490 +public + +funùiÚ + + $šCLI +() + +492  0 =ð + `¡ºÿ£cmp +( +PHP_SAPI +, 'cli', 3); + +493 + } +} + +503 +public + +funùiÚ + + $__ÿÎ +( +$m‘hod +, +$¬gum’ts +) + +505 +$ev’t + = +$this +-> +di¥©ch” +-> + `nÙifyUÁž +( +Ãw + + `sfEv’t +($this, 'cڌÞËr.m‘hod_nÙ_found', + `¬¿y +('m‘hod' => +$m‘hod +, '¬gum’ts' => +$¬gum’ts +))); + +506 ià(! +$ev’t +-> + `isProûs£d +()) + +508 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('C®ÈtØundefšed m‘hod %s::%s.', + `g‘_þass +( +$this +), +$m‘hod +)); + +511  +$ev’t +-> + `g‘R‘uºV®ue +(); + +512 + } +} + + @lib/vendor/symfony/lib/controller/sfFrontWebController.class.php + +1 +cڋxt +-> + `g‘Reque¡ +(); + +39 +$moduËName + = +$»que¡ +-> + `g‘P¬am‘” +('module'); + +40 +$aùiÚName + = +$»que¡ +-> + `g‘P¬am‘” +('action'); + +42 ià( + `em±y +( +$moduËName +è||ƒm±y( +$aùiÚName +)) + +44 +throw + +Ãw + + `sfE¼Ü404Exû±iÚ +( + `¥rštf +('Em±y moduˇnd/܇ùiڇᔅ¬sšghURL "%s" (%s/%s).', +$»que¡ +-> + `g‘P©hInfo +(), +$moduËName +, +$aùiÚName +)); + +48 +$this +-> + `fÜw¬d +( +$moduËName +, +$aùiÚName +); + +50 + `ÿtch + ( +sfExû±iÚ + +$e +) + +52 +$e +-> + `´štSckT¿û +(); + +54 + `ÿtch + ( +Exû±iÚ + +$e +) + +56 +sfExû±iÚ +:: + `ü—‹FromExû±iÚ +( +$e +)-> + `´štSckT¿û +(); + +59 + } +} + + @lib/vendor/symfony/lib/controller/sfWebController.class.php + +1 +cÚv”tU¾SŒšgToP¬am‘”s +($parameters); + +64 ià( +is_¬¿y +( +$·¿m‘”s +)) + +66 ià( +is£t +( +$·¿m‘”s +['sf_route'])) + +68 + m$rou‹ + = +$·¿m‘”s +['sf_route']; + +69 +un£t +( +$·¿m‘”s +['sf_route']); + +74 + m$u¾ + = +$this +-> +cڋxt +-> +g‘Routšg +()-> +g’”©e +( +$rou‹ +, +$·¿m‘”s +, +$absÞu‹ +); + +76 ià( + m$äagm’t +) + +78 + m$u¾ + .ð'#'. +$äagm’t +; + +81  + m$u¾ +; + +91 +public + +funùiÚ + + $cÚv”tU¾SŒšgToP¬am‘”s +( +$u¾ +) + +93 +$giv’U¾ + = +$u¾ +; + +95 +$·¿ms + = + `¬¿y +(); + +96 +$qu”ySŒšg + = ''; + +97 +$rou‹ + = ''; + +100 ià(! +$u¾ +) + +102 +$u¾ + = '/'; + +106 ià( +$pos + = + `¡½os +( +$u¾ +, '?')) + +108 +$qu”ySŒšg + = + `sub¡r +( +$u¾ +, +$pos + + 1); + +109 +$u¾ + = + `sub¡r +($u¾, 0, +$pos +); + +117 ià( +$u¾ +[0] == '/') + +119 +$u¾ + = + `sub¡r +($url, 1); + +123 ià( +$u¾ +[0] == '@') + +125 +$rou‹ + = + `sub¡r +( +$u¾ +, 1); + +127 ià( +çl£ + !=ð + `¡½os +( +$u¾ +, '/')) + +129 + `li¡ +( +$·¿ms +['moduË'], $·¿ms['aùiÚ']èð + `ex¶ode +('/', +$u¾ +); + +131 ià(! +$qu”ySŒšg +) + +133 +$rou‹ + = +$giv’U¾ +; + +137 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('AÀš‹º® URI mu¡ cڏš‡ moduˇnd‡ÀaùiÚ (moduË/aùiÚè("%s" giv’).', +$giv’U¾ +)); + +141 ià( +$qu”ySŒšg +) + +143 +$m©ched + = + `´eg_m©ch_®l +('/ + +148 (?=&[^&=]+=è| +$ + #fÞlowed +by + +ªÙh” + +key +ð +Ü + +the + +’d + +of +h +¡ršg + + +150 / +x +', $queryString, $matches, PREG_SET_ORDER | PREG_OFFSET_CAPTURE); + +151 + `fܗch + ( +$m©ches + +as + +$m©ch +) + +153 +$·¿ms +[ + `u¾decode +( +$m©ch +[1][0])] = urldecode($match[2][0]); + +157 ià(! +$m©ched +) + +159 +throw + +Ãw + + `sfP¬£Exû±iÚ +( + `¥rštf +('UÇbˁطr£ qu”y sŒšg "%s".', +$qu”ySŒšg +)); + +163  + `¬¿y +( +$rou‹ +, +$·¿ms +); + +164 + } +} + +176 +public + +funùiÚ + + $»dœeù +( +$u¾ +, +$d–ay + = 0, +$¡©usCode + = 302) + +178 ià( + `em±y +( +$u¾ +)) + +180 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +('Cannot„edirecto‡nƒmpty URL.'); + +183 +$u¾ + = +$this +-> + `g’U¾ +($u¾, +Œue +); + +185 +$u¾ + = + `¡r_»¶aû +('&', '&', $url); + +187 ià( +sfCÚfig +:: + `g‘ +('sf_logging_enabled')) + +189 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, '­¶iÿtiÚ.log', + `¬¿y +( + `¥rštf +('RedœeùØ"%s"', +$u¾ +)))); + +193 +$»¥Ú£ + = +$this +-> +cڋxt +-> + `g‘Re¥Ú£ +(); + +194 +$»¥Ú£ +-> + `þ—rH‰pH—d”s +(); + +195 +$»¥Ú£ +-> + `£tStusCode +( +$¡©usCode +); + +199 ià( +$¡©usCode + == 201 || ($statusCode >= 300 && $statusCode < 400)) + +201 +$»¥Ú£ +-> + `£tH‰pH—d” +('LoÿtiÚ', +$u¾ +); + +204 +$»¥Ú£ +-> + `£tCڋÁ +( + `¥rštf +('', +$d–ay +, + `html¥ecŸlch¬s +( +$u¾ +, +ENT_QUOTES +, +sfCÚfig +:: + `g‘ +('sf_charset')))); + +205 +$»¥Ú£ +-> + `£nd +(); + +206 + } +} + + @lib/vendor/symfony/lib/database/sfDatabase.class.php + +1 + `š™Ÿlize +( +$·¿m‘”s +); + +48 +public + +funùiÚ + + `š™Ÿlize +( +$·¿m‘”s + = + $¬¿y +()) + +50 +$this +-> +·¿m‘”HÞd” + = +Ãw + + `sfP¬am‘”HÞd” +(); + +51 +$this +-> +·¿m‘”HÞd” +-> + `add +( +$·¿m‘”s +); + +52 + } +} + +59 +ab¡¿ù + +funùiÚ + +cÚÃù +(); + +71 +public + +funùiÚ + + $g‘CÚÃùiÚ +() + +73 ià( +nuÎ + ==ð +$this +-> +cÚÃùiÚ +) + +75 +$this +-> + `cÚÃù +(); + +78  +$this +-> +cÚÃùiÚ +; + +79 + } +} + +88 +public + +funùiÚ + + $g‘Resourû +() + +90 ià( +nuÎ + ==ð +$this +-> +»sourû +) + +92 +$this +-> + `cÚÃù +(); + +95  +$this +-> +»sourû +; + +96 + } +} + +103 +public + +funùiÚ + + $g‘P¬am‘”HÞd” +() + +105  +$this +-> +·¿m‘”HÞd” +; + +106 + } +} + +122 +public + +funùiÚ + + $g‘P¬am‘” +( +$Çme +, +$deçuÉ + = +nuÎ +) + +124  +$this +-> +·¿m‘”HÞd” +-> + `g‘ +( +$Çme +, +$deçuÉ +); + +125 + } +} + +140 +public + +funùiÚ + + $hasP¬am‘” +( +$Çme +) + +142  +$this +-> +·¿m‘”HÞd” +-> + `has +( +$Çme +); + +143 + } +} + +157 +public + +funùiÚ + + $£tP¬am‘” +( +$Çme +, +$v®ue +) + +159 +$this +-> +·¿m‘”HÞd” +-> + `£t +( +$Çme +, +$v®ue +); + +160 + } +} + +169 +ab¡¿ù + +funùiÚ + +shutdown +(); + + @lib/vendor/symfony/lib/database/sfDatabaseManager.class.php + +1 + `š™Ÿlize +( +$cÚfigu¿tiÚ +); + +38 ià(! + `is£t +( +$ÝtiÚs +['auto_shutdown']) || $options['auto_shutdown']) + +40 + `»gi¡”_shutdown_funùiÚ +( + `¬¿y +( +$this +, 'shutdown')); + +53 +public + +funùiÚ + + $š™Ÿlize +( +sfProjeùCÚfigu¿tiÚ + +$cÚfigu¿tiÚ +) + +55 +$this +-> +cÚfigu¿tiÚ + = +$cÚfigu¿tiÚ +; + +57 +$this +-> + `lßdCÚfigu¿tiÚ +(); + +58 + } +} + +63 +public + +funùiÚ + + $lßdCÚfigu¿tiÚ +() + +65 ià( +$this +-> +cÚfigu¿tiÚ + +š¡ªûof + +sfAµliÿtiÚCÚfigu¿tiÚ +) + +67 +$d©aba£s + = + `šþude +( +$this +-> +cÚfigu¿tiÚ +-> + `g‘CÚfigCache +()-> + `checkCÚfig +('config/databases.yml')); + +71 +$cÚfigHªdËr + = +Ãw + + `sfD©aba£CÚfigHªdËr +(); + +72 +$d©aba£s + = +$cÚfigHªdËr +-> + `ev®u©e +( + `¬¿y +( +$this +-> +cÚfigu¿tiÚ +-> + `g‘RoÙDœ +().'/config/databases.yml')); + +75 + `fܗch + ( +$d©aba£s + +as + +$Çme + => +$d©aba£ +) + +77 +$this +-> + `£tD©aba£ +( +$Çme +, +$d©aba£ +); + +79 + } +} + +87 +public + +funùiÚ + + $£tD©aba£ +( +$Çme +, +sfD©aba£ + +$d©aba£ +) + +89 +$this +-> +d©aba£s +[ +$Çme +] = +$d©aba£ +; + +90 + } +} + +101 +public + +funùiÚ + +g‘D©aba£ +( +$Çme + = 'default') + +103 ià( +is£t +( +$this +-> +d©aba£s +[ +$Çme +])) + +105  +$this +-> +d©aba£s +[ +$Çme +]; + +109 +throw + +Ãw + +sfD©aba£Exû±iÚ +( +¥rštf +('D©aba£ "%s" dÛ nكxi¡.', +$Çme +)); + +117 +public + +funùiÚ + + $g‘Names +() + +119  + `¬¿y_keys +( +$this +-> +d©aba£s +); + +120 + } +} + +129 +public + +funùiÚ + + $shutdown +() + +132 + `fܗch + ( +$this +-> +d©aba£s + +as + +$d©aba£ +) + +134 +$d©aba£ +-> + `shutdown +(); + +136 + } +} + + @lib/vendor/symfony/lib/database/sfMySQLDatabase.class.php + +1 + `g‘P¬am‘” +('database'); + +39 +$ho¡ + = +$this +-> + `g‘P¬am‘” +('host', 'localhost'); + +40 +$·sswÜd + = +$this +-> + `g‘P¬am‘” +('password'); + +41 +$u£ºame + = +$this +-> + `g‘P¬am‘” +('username'); + +42 +$’codšg + = +$this +-> + `g‘P¬am‘” +('encoding'); + +45 +$cÚÃù + = +$this +-> + `g‘CÚÃùM‘hod +($this-> + `g‘P¬am‘” +('³rsi¡’t', +çl£ +)); + +46 ià( +$·sswÜd + =ð +nuÎ +) + +48 ià( +$u£ºame + =ð +nuÎ +) + +50 +$this +-> +cÚÃùiÚ + = @ + `$cÚÃù +( +$ho¡ +); + +54 +$this +-> +cÚÃùiÚ + = @ + `$cÚÃù +( +$ho¡ +, +$u£ºame +); + +59 +$this +-> +cÚÃùiÚ + = @ + `$cÚÃù +( +$ho¡ +, +$u£ºame +, +$·sswÜd +); + +63 ià( +$this +-> +cÚÃùiÚ + ==ð +çl£ +) + +66 +throw + +Ãw + + `sfD©aba£Exû±iÚ +('Failedo create‡ MySQLDatabase connection.'); + +70 ià( +$this +-> + `£ËùD©aba£ +( +$d©aba£ +)) + +73 +throw + +Ãw + + `sfD©aba£Exû±iÚ +( + `¥rštf +('FažedØ£Ëù MySQLD©aba£ "%s".', +$d©aba£ +)); + +77 ià( +$’codšg +) + +79 @ + `mysql_qu”y +("SET NAMES '". +$’codšg +."'", +$this +-> +cÚÃùiÚ +); + +84 +$this +-> +»sourû + = $this-> +cÚÃùiÚ +; + +93 +´Ùeùed + +funùiÚ + + $g‘CÚÃùM‘hod +( +$³rsi¡’t +) + +95  +$³rsi¡’t + ? 'mysql_pconnect' : 'mysql_connect'; + +96 + } +} + +105 +´Ùeùed + +funùiÚ + + $£ËùD©aba£ +( +$d©aba£ +) + +107  ( +$d©aba£ + !ð +nuÎ + && !@ + `mysql_£Ëù_db +($d©aba£, +$this +-> +cÚÃùiÚ +)); + +108 + } +} + +117 +public + +funùiÚ + + $shutdown +() + +119 ià( +$this +-> +cÚÃùiÚ + !ð +nuÎ +) + +121 @ + `mysql_þo£ +( +$this +-> +cÚÃùiÚ +); + +123 + } +} + + @lib/vendor/symfony/lib/database/sfMySQLiDatabase.class.php + +1 +cÚÃùiÚ +, $database)); + +43 + } +} + +50 +public + +funùiÚ + + $shutdown +() + +52 ià( +$this +-> +cÚÃùiÚ + !ð +nuÎ +) + +54 @ + `mysqli_þo£ +( +$this +-> +cÚÃùiÚ +); + +56 + } +} + + @lib/vendor/symfony/lib/database/sfPDODatabase.class.php + +1 + `g‘P¬am‘” +('dsn')) + +35 +throw + +Ãw + + `sfD©aba£Exû±iÚ +('Database configuration is missinghe "dsn"…arameter.'); + +38 +Œy + + +40 +$pdo_þass + = +$this +-> + `g‘P¬am‘” +('class', 'PDO'); + +41 +$u£ºame + = +$this +-> + `g‘P¬am‘” +('username'); + +42 +$·sswÜd + = +$this +-> + `g‘P¬am‘” +('password'); + +43 +$³rsi¡’t + = +$this +-> + `g‘P¬am‘” +('persistent'); + +45 +$ÝtiÚs + = ( +$³rsi¡’t +è? + `¬¿y +( +PDO +:: +ATTR_PERSISTENT + => +Œue +) :‡rray(); + +47 +$this +-> +cÚÃùiÚ + = +Ãw + + `$pdo_þass +( +$d¢ +, +$u£ºame +, +$·sswÜd +, +$ÝtiÚs +); + +50 + `ÿtch + ( +PDOExû±iÚ + +$e +) + +52 +throw + +Ãw + + `sfD©aba£Exû±iÚ +( +$e +-> + `g‘Mes§ge +()); + +56 ià( +sfCÚfig +:: + `g‘ +('sf_debug')) + +58 +$this +-> +cÚÃùiÚ +-> + `£tA‰ribu‹ +( +PDO +:: +ATTR_ERRMODE +, PDO:: +ERRMODE_EXCEPTION +); + +62 +$this +-> +cÚÃùiÚ +-> + `£tA‰ribu‹ +( +PDO +:: +ATTR_ERRMODE +, PDO:: +ERRMODE_SILENT +); + +66 +$com·bž™y + = +$this +-> + `g‘P¬am‘” +('compat'); + +67 ià( +$com·bž™y +) + +69 +$this +-> +cÚÃùiÚ +-> + `£tA‰ribu‹ +( +PDO +:: +ATTR_CASE +, PDO:: +CASE_NATURAL +); + +73 +$nuÎs + = +$this +-> + `g‘P¬am‘” +('nulls'); + +74 ià( +$nuÎs +) + +76 +$this +-> +cÚÃùiÚ +-> + `£tA‰ribu‹ +( +PDO +:: +ATTR_ORACLE_NULLS +, PDO:: +NULL_EMPTY_STRING +); + +80 +$autocomm™ + = +$this +-> + `g‘P¬am‘” +('autocommit'); + +81 ià( +$autocomm™ +) + +83 +$this +-> +cÚÃùiÚ +-> + `£tA‰ribu‹ +( +PDO +:: +ATTR_AUTOCOMMIT +, +Œue +); + +86 +$this +-> +»sourû + = $this-> +cÚÃùiÚ +; + +95 +public + +funùiÚ + + $shutdown +() + +97 ià( +$this +-> +cÚÃùiÚ + !=ð +nuÎ +) + +99 @ +$this +-> +cÚÃùiÚ + = +nuÎ +; + +101 + } +} + +110 +public + +funùiÚ + + $__ÿÎ +( +$m‘hod +, +$¬gum’ts +) + +112  +$this +-> + `g‘CÚÃùiÚ +()-> + `$m‘hod +( +$¬gum’ts +); + +113 + } +} + + @lib/vendor/symfony/lib/database/sfPostgreSQLDatabase.class.php + +1 + `g‘P¬am‘” +('database'); + +40 +$ho¡ + = +$this +-> + `g‘P¬am‘” +('host'); + +41 +$·sswÜd + = +$this +-> + `g‘P¬am‘” +('password'); + +42 +$pÜt + = +$this +-> + `g‘P¬am‘” +('port'); + +43 +$u£ºame + = +$this +-> + `g‘P¬am‘” +('username'); + +46 +$¡ršg + = ( +$d©aba£ + !ð +nuÎ + ? (' dbname=' .$database) : ''). + +47 ( +$ho¡ + !ð +nuÎ + ? (' host=' .$host) : ''). + +48 ( +$·sswÜd + !ð +nuÎ + ? ('…assword=' .$password) : ''). + +49 ( +$pÜt + !ð +nuÎ + ? ('…ort=' .$port) : ''). + +50 ( +$u£ºame + !ð +nuÎ + ? (' user=' .$username) : ''); + +53 +$³rsi¡’t + = +$this +-> + `g‘P¬am‘” +('³rsi¡’t', +çl£ +); + +54 +$cÚÃù + = +$³rsi¡’t + ? 'pg_pconnect' : 'pg_connect'; + +56 +$this +-> +cÚÃùiÚ + = @ + `$cÚÃù +( +$¡ršg +); + +59 ià( +$this +-> +cÚÃùiÚ + ==ð +çl£ +) + +62 +throw + +Ãw + + `sfD©aba£Exû±iÚ +('Failedo create‡ PostgreSQLDatabase connection.'); + +67 +$this +-> +»sourû + = $this-> +cÚÃùiÚ +; + +75 +public + +funùiÚ + + $shutdown +() + +77 ià( +$this +-> +cÚÃùiÚ + !ð +nuÎ +) + +79 @ + `pg_þo£ +( +$this +-> +cÚÃùiÚ +); + +81 + } +} + + @lib/vendor/symfony/lib/debug/sfDebug.class.php + +1 +SYMFONY_VERSION +, + +30 '·th' => +sfCÚfig +:: + `g‘ +('sf_symfony_lib_dir'), + +39 +public +  +funùiÚ + + $phpInfoAsA¼ay +() + +41 +$v®ues + = + `¬¿y +( + +42 'php' => + `phpv”siÚ +(), + +43 'os' => + `php_uÇme +(), + +44 'ex‹nsiÚs' => + `g‘_lßded_ex‹nsiÚs +(), + +47 + `Çtÿ£sÜt +( +$v®ues +['extensions']); + +50 ià( +$v®ues +['extensions']) + +52 + `fܗch +( +$v®ues +['ex‹nsiÚs'] +as + +$key + => +$ex‹nsiÚ +) + +54 +$v®ues +['ex‹nsiÚs'][ +$key +] = + `phpv”siÚ +( +$ex‹nsiÚ +è? + `¥rštf +('%s (%s)', $extension,…hpversion($extension)) : $extension; + +58  +$v®ues +; + +59 + } +} + +66 +public +  +funùiÚ + + $glob®sAsA¼ay +() + +68 +$v®ues + = + `¬¿y +(); + +69 + `fܗch + ( + `¬¿y +('cook›', '£rv”', 'g‘', 'po¡', 'fžes', '’v', '£ssiÚ'è +as + +$Çme +) + +71 ià(! + `is£t +( +$GLOBALS +['_'. + `¡¹ouµ” +( +$Çme +)])) + +76 +$v®ues +[ +$Çme +] = + `¬¿y +(); + +77 + `fܗch + ( +$GLOBALS +['_'. + `¡¹ouµ” +( +$Çme +)] +as + +$key + => +$v®ue +) + +79 +$v®ues +[ +$Çme +][ +$key +] = +$v®ue +; + +81 + `ksÜt +( +$v®ues +[ +$Çme +]); + +84 + `ksÜt +( +$v®ues +); + +86  +$v®ues +; + +87 + } +} + +94 +public +  +funùiÚ + + $£‰šgsAsA¼ay +() + +96 +$cÚfig + = +sfCÚfig +:: + `g‘AÎ +(); + +98 + `ksÜt +( +$cÚfig +); + +100  +$cÚfig +; + +101 + } +} + +110 +public +  +funùiÚ + + $»que¡AsA¼ay +( +sfReque¡ + +$»que¡ + = +nuÎ +) + +112 ià(! +$»que¡ +) + +114  + `¬¿y +(); + +117  + `¬¿y +( + +118 'ÝtiÚs' => +$»que¡ +-> + `g‘O±iÚs +(), + +119 '·¿m‘”HÞd”' => +£lf +:: + `橋nP¬am‘”HÞd” +( +$»que¡ +-> + `g‘P¬am‘”HÞd” +(), +Œue +), + +120 '©Œibu‹HÞd”' => +£lf +:: + `橋nP¬am‘”HÞd” +( +$»que¡ +-> + `g‘A‰ribu‹HÞd” +(), +Œue +), + +122 + } +} + +131 +public +  +funùiÚ + + $»¥Ú£AsA¼ay +( +sfRe¥Ú£ + +$»¥Ú£ + = +nuÎ +) + +133 ià(! +$»¥Ú£ +) + +135  + `¬¿y +(); + +138  + `¬¿y +( + +139 '¡©us' => + `¬¿y +('code' => +$»¥Ú£ +-> + `g‘StusCode +(), '‹xt' => $»¥Ú£-> + `g‘StusText +()), + +140 'ÝtiÚs' => +$»¥Ú£ +-> + `g‘O±iÚs +(), + +141 'cook›s' => + `m‘hod_exi¡s +( +$»¥Ú£ +, 'g‘Cook›s'è? $»¥Ú£-> + `g‘Cook›s +(è: + `¬¿y +(), + +142 'h‰pH—d”s' => + `m‘hod_exi¡s +( +$»¥Ú£ +, 'g‘H‰pH—d”s'è? $»¥Ú£-> + `g‘H‰pH—d”s +(è: + `¬¿y +(), + +143 'javasüts' => + `m‘hod_exi¡s +( +$»¥Ú£ +, 'g‘Javasüts'è? $»¥Ú£-> + `g‘Javasüts +('ALL'è: + `¬¿y +(), + +144 '¡yËsh“ts' => + `m‘hod_exi¡s +( +$»¥Ú£ +, 'g‘StyËsh“ts'è? $»¥Ú£-> + `g‘StyËsh“ts +('ALL'è: + `¬¿y +(), + +145 'm‘as' => + `m‘hod_exi¡s +( +$»¥Ú£ +, 'g‘M‘as'è? $»¥Ú£-> + `g‘M‘as +(è: + `¬¿y +(), + +146 'h‰pM‘as' => + `m‘hod_exi¡s +( +$»¥Ú£ +, 'g‘H‰pM‘as'è? $»¥Ú£-> + `g‘H‰pM‘as +(è: + `¬¿y +(), + +148 + } +} + +157 +public +  +funùiÚ + + $u£rAsA¼ay +( +sfU£r + +$u£r + = +nuÎ +) + +159 ià(! +$u£r +) + +161  + `¬¿y +(); + +164 +$d©a + = + `¬¿y +( + +165 'ÝtiÚs' => +$u£r +-> + `g‘O±iÚs +(), + +166 '©Œibu‹HÞd”' => +£lf +:: + `橋nP¬am‘”HÞd” +( +$u£r +-> + `g‘A‰ribu‹HÞd” +(), +Œue +), + +167 'cuÉu»' => +$u£r +-> + `g‘CuÉu» +(), + +170 ià( +$u£r + +š¡ªûof + +sfBasicSecur™yU£r +) + +172 +$d©a + = + `¬¿y_m”ge +($d©a, + `¬¿y +( + +173 'auth’tiÿ‹d' => +$u£r +-> + `isAuth’tiÿ‹d +(), + +174 'üed’tŸls' => +$u£r +-> + `g‘C»d’tŸls +(), + +175 'Ï¡Reque¡' => +$u£r +-> + `g‘La¡Reque¡Time +(), + +179  +$d©a +; + +180 + } +} + +190 +public +  +funùiÚ + + $橋nP¬am‘”HÞd” +( +$·¿m‘”HÞd” +, +$»moveObjeùs + = +çl£ +) + +192 +$v®ues + = + `¬¿y +(); + +193 ià( +$·¿m‘”HÞd” + +š¡ªûof + +sfName¥aûdP¬am‘”HÞd” +) + +195 + `fܗch + ( +$·¿m‘”HÞd” +-> + `g‘Name¥aûs +(è +as + +$ns +) + +197 +$v®ues +[ +$ns +] = + `¬¿y +(); + +198 + `fܗch + ( +$·¿m‘”HÞd” +-> + `g‘AÎ +( +$ns +è +as + +$key + => +$v®ue +) + +200 +$v®ues +[ +$ns +][ +$key +] = +$v®ue +; + +202 + `ksÜt +( +$v®ues +[ +$ns +]); + +207 + `fܗch + ( +$·¿m‘”HÞd” +-> + `g‘AÎ +(è +as + +$key + => +$v®ue +) + +209 +$v®ues +[ +$key +] = +$v®ue +; + +213 ià( +$»moveObjeùs +) + +215 +$v®ues + = +£lf +:: + `»moveObjeùs +($values); + +218 + `ksÜt +( +$v®ues +); + +220  +$v®ues +; + +221 + } +} + +230 +public +  +funùiÚ + + $»moveObjeùs +( +$v®ues +) + +232 +$nv®ues + = + `¬¿y +(); + +233 + `fܗch + ( +$v®ues + +as + +$key + => +$v®ue +) + +235 ià( + `is_¬¿y +( +$v®ue +)) + +237 +$nv®ues +[ +$key +] = +£lf +:: + `»moveObjeùs +( +$v®ue +); + +239 ià( + `is_objeù +( +$v®ue +)) + +241 +$nv®ues +[ +$key +] = + `¥rštf +('% Objeù()', + `g‘_þass +( +$v®ue +)); + +245 +$nv®ues +[ +$key +] = +$v®ue +; + +249  +$nv®ues +; + +250 + } +} + +259  +public + +funùiÚ + + $sh܋nFžeP©h +( +$fže +) + +261 + `fܗch + ( + `¬¿y +('sf_roÙ_dœ', 'sf_symfÚy_lib_dœ'è +as + +$key +) + +263 ià(0 ==ð + `¡½os +( +$fže +, +$v®ue + = +sfCÚfig +:: + `g‘ +( +$key +))) + +265 +$fže + = + `¡r_»¶aû +( +$v®ue +, + `¡¹ouµ” +( +$key +), $file); + +270  +$fže +; + +271 + } +} + + @lib/vendor/symfony/lib/debug/sfTimer.class.php + +1 +Çme + = +$Çme +; + +35 + m$this +-> +¡¬tTim” +(); + +41 +public + +funùiÚ + + $¡¬tTim” +() + +43 +$this +-> +¡¬tTime + = + `miüÙime +( +Œue +); + +44 + } +} + +51 +public + +funùiÚ + + $addTime +() + +53 +$¥’d + = + `miüÙime +( +Œue +è- +$this +-> +¡¬tTime +; + +54 +$this +-> +tÙ®Time + +ð +$¥’d +; + +55 ++ +$this +-> +ÿÎs +; + +57  +$¥’d +; + +58 + } +} + +65 +public + +funùiÚ + + $g‘C®ls +() + +67  +$this +-> +ÿÎs +; + +68 + } +} + +75 +public + +funùiÚ + + $g‘EÏp£dTime +() + +77 ià( +nuÎ + ==ð +$this +-> +tÙ®Time +) + +79 +$this +-> + `addTime +(); + +82  +$this +-> +tÙ®Time +; + +83 + } +} + + @lib/vendor/symfony/lib/debug/sfTimerManager.class.php + +1 + `¡¬tTim” +(); + +41  +£lf +:: +$tim”s +[ +$Çme +]; + +49 +public +  +funùiÚ + + $g‘Tim”s +() + +51  +£lf +:: +$tim”s +; + +52 + } +} + +57 +public +  +funùiÚ + + $þ—rTim”s +() + +59 +£lf +:: +$tim”s + = + `¬¿y +(); + +60 + } +} + + @lib/vendor/symfony/lib/debug/sfWebDebug.class.php + +1 +di¥©ch” + = +$di¥©ch” +; + +42 +$this +-> +logg” + = +$logg” +; + +43 +$this +-> +ÝtiÚs + = +$ÝtiÚs +; + +45 ià(! + `is£t +( +$this +-> +ÝtiÚs +['image_root_path'])) + +47 +$this +-> +ÝtiÚs +['image_root_path'] = ''; + +50 ià(! + `is£t +( +$this +-> +ÝtiÚs +['request_parameters'])) + +52 +$this +-> +ÝtiÚs +['»que¡_·¿m‘”s'] = + `¬¿y +(); + +55 +$this +-> + `cÚfigu» +(); + +57 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, 'debug.web.load_panels')); + +63 +public + +funùiÚ + + $cÚfigu» +() + +65 +$this +-> + `£tPª– +('symfÚy_v”siÚ', +Ãw + + `sfWebDebugPª–SymfÚyV”siÚ +($this)); + +66 ià( +sfCÚfig +:: + `g‘ +('sf_debug') && sfConfig::get('sf_cache')) + +68 +$this +-> + `£tPª– +('ÿche', +Ãw + + `sfWebDebugPª–Cache +($this)); + +70 ià( +sfCÚfig +:: + `g‘ +('sf_logging_enabled')) + +72 +$this +-> + `£tPª– +('cÚfig', +Ãw + + `sfWebDebugPª–CÚfig +($this)); + +73 +$this +-> + `£tPª– +('v›w', +Ãw + + `sfWebDebugPª–V›w +($this)); + +75 +$this +-> + `£tPª– +('logs', +Ãw + + `sfWebDebugPª–Logs +($this)); + +76 +$this +-> + `£tPª– +('memÜy', +Ãw + + `sfWebDebugPª–MemÜy +($this)); + +77 ià( +sfCÚfig +:: + `g‘ +('sf_debug')) + +79 +$this +-> + `£tPª– +('time', +Ãw + + `sfWebDebugPª–Tim” +($this)); + +82 +$this +-> + `£tPª– +('maž”', +Ãw + + `sfWebDebugPª–Maž” +($this)); + +83 + } +} + +90 +public + +funùiÚ + + $g‘Logg” +() + +92  +$this +-> +logg” +; + +93 + } +} + +100 +public + +funùiÚ + + $g‘Ev’tDi¥©ch” +() + +102  +$this +-> +di¥©ch” +; + +103 + } +} + +110 +public + +funùiÚ + + $g‘Pª–s +() + +112  +$this +-> +·Ãls +; + +113 + } +} + +121 +public + +funùiÚ + + $£tPª– +( +$Çme +, +sfWebDebugPª– + +$·Ãl +) + +123 +$this +-> +·Ãls +[ +$Çme +] = +$·Ãl +; + +124 + } +} + +131 +public + +funùiÚ + + $»movePª– +( +$Çme +) + +133 + `un£t +( +$this +-> +·Ãls +[ +$Çme +]); + +134 + } +} + +143 +public + +funùiÚ + + $g‘O±iÚ +( +$Çme +, +$deçuÉ + = +nuÎ +) + +145  + `is£t +( +$this +-> +ÝtiÚs +[ +$Çme +]è? $this->ÝtiÚs[$Çme] : +$deçuÉ +; + +146 + } +} + +155 +public + +funùiÚ + + $šjeùToÞb¬ +( +$cڋÁ +) + +157 ià( + `funùiÚ_exi¡s +('mb_stripos')) + +159 +$posFunùiÚ + = 'mb_stripos'; + +160 +$po¤FunùiÚ + = 'mb_strripos'; + +161 +$sub¡rFunùiÚ + = 'mb_substr'; + +165 +$posFunùiÚ + = 'stripos'; + +166 +$po¤FunùiÚ + = 'strripos'; + +167 +$sub¡rFunùiÚ + = 'substr'; + +170 ià( +çl£ + !=ð +$pos + = + `$posFunùiÚ +( +$cڋÁ +, '')) + +172 +$¡yËs + = '<¡yˁy³="‹xt/css">'. + `¡r_»¶aû +( + `¬¿y +("\r", "\n"), ' ', +$this +-> + `g‘StyËsh“t +()).''; + +173 +$cڋÁ + = + `$sub¡rFunùiÚ +($cڋÁ, 0, +$pos +). +$¡yËs +.$substrFunction($content, $pos); + +176 +$debug + = +$this +-> + `asHtml +(); + +177 ià( +çl£ + ==ð +$pos + = + `$po¤FunùiÚ +( +$cڋÁ +, '')) + +179 +$cڋÁ + .ð +$debug +; + +183 +$cڋÁ + = + `$sub¡rFunùiÚ +($cڋÁ, 0, +$pos +).''. +$this +-> + `g‘Javasüt +().''. +$debug +.$substrFunction($content, $pos); + +186  +$cڋÁ +; + +187 + } +} + +194 +public + +funùiÚ + + $asHtml +() + +196 +$cu¼’t + = + `is£t +( +$this +-> +ÝtiÚs +['»que¡_·¿m‘”s']['sfWebDebugPª–']è? $this->ÝtiÚs['»que¡_·¿m‘”s']['sfWebDebugPª–'] : +nuÎ +; + +198 +$t™Ës + = + `¬¿y +(); + +199 +$·Ãls + = + `¬¿y +(); + +200 + `fܗch + ( +$this +-> +·Ãls + +as + +$Çme + => +$·Ãl +) + +202 ià( +$t™Ë + = +$·Ãl +-> + `g‘T™Ë +()) + +204 ià(( +$cڋÁ + = +$·Ãl +-> + `g‘Pª–CڋÁ +()è|| $·Ãl-> + `g‘T™ËU¾ +()) + +206 +$id + = + `¥rštf +('sfWebDebug%sD‘ažs', +$Çme +); + +207 +$t™Ës +[] = + `¥rštf +('%s', + +208 +$·Ãl +-> + `g‘Stus +(è? ' cÏss="sfWebDebug'. + `ucfœ¡ +( +$this +-> + `g‘Priܙy +($panel->getStatus())).'"' : '', + +209 +$·Ãl +-> + `g‘Pª–T™Ë +(), + +210 +$·Ãl +-> + `g‘T™ËU¾ +() ? $panel->getTitleUrl() : '#', + +211 +$·Ãl +-> + `g‘T™ËU¾ +(è? '' : ' onþick="sfWebDebugShowD‘ažsFÜ(\''. +$id +.'\');„eturn false;"', + +212 +$t™Ë + + +214 +$·Ãls +[] = + `¥rštf +('

%s

%s
', + +215 +$id +, + +216 +$Çme + =ð +$cu¼’t + ? 'block' : 'none', + +217 +$·Ãl +-> + `g‘Pª–T™Ë +(), + +218 +$cڋÁ + + +223 +$t™Ës +[] = + `¥rštf +('
  • %s
  • ', +$t™Ë +); + +229 < +div + +id +="sfWebDebug"> + +230 < +div + +id +="sfWebDebugBar"> + +231 < +a + +h»f +="#" +Úþick +="sfWebDebugToggËM’u();„‘uº f®£;">< +img + +¤c +="'.$this->ÝtiÚs['image_roÙ_·th'].'/sf.²g" +®t +="Debugoolbar" /> + +233 < +ul + +id +="sfWebDebugD‘ažs" +þass +="sfWebDebugMenu"> + +235 < +li + +þass +="last"> + +236 < +a + +h»f +="#" +Úþick +="docum’t.g‘EËm’tById(\'sfWebDebug\').¡yË.di¥Ïy=\'nÚe\';„‘uº f®£;">< +img + +¤c +="'.$this->ÝtiÚs['image_roÙ_·th'].'/þo£.²g" +®t +="Close" /> + +237 + +238 + +239 + +242 + +244 + } +} + +253 +public + +funùiÚ + + $g‘Priܙy +( +$v®ue +) + +255 ià( +$v®ue + >ð +sfLogg” +:: +INFO +) + +259 ià( +$v®ue + >ð +sfLogg” +:: +WARNING +) + +267 + } +} + +274 +public + +funùiÚ + + $g‘Javasüt +() + +276  <<< +EOF + + +278 +funùiÚ + + `sfWebDebugG‘EËm’tsByCÏssName +( +¡rCÏss +, +¡rTag +, +objCÚtElm +) + +281 +¡rTag + = strTag || "*"; + +282 +objCÚtElm + = objCÚtElm || +docum’t +; + +283 +v¬ + +objCÞl + = ( +¡rTag + =ð'*' && +docum’t +. +®l +è? docum’t.®È: +objCÚtElm +. + `g‘EËm’tsByTagName +(strTag); + +284 +v¬ + +¬r + = +Ãw + + `A¼ay +(); + +285 +v¬ + +d–im + = +¡rCÏss +. + `šdexOf +('|') != -1 ? '|' : ' '; + +286 +v¬ + +¬rCÏss + = +¡rCÏss +. + `¥l™ +( +d–im +); + +287 +v¬ + +j + = +objCÞl +. +Ëngth +; + +288  +v¬ + +i + = 0; i < +j +; i++) { + +289 if( +objCÞl +[ +i +]. +þassName + =ð +undefšed +) ; + +290 +v¬ + +¬rObjCÏss + = +objCÞl +[ +i +]. +þassName +. +¥l™ + ? objCÞl[i].þassName. + `¥l™ +(' ') : []; + +291 ià( +d–im + =ð' ' && +¬rCÏss +. +Ëngth + > +¬rObjCÏss +.length) ; + +292 +v¬ + +c + = 0; + +293 +com·risÚLoÝ +: + +295 +v¬ + +l + = +¬rObjCÏss +. +Ëngth +; + +296  +v¬ + +k + = 0; k < +l +; k++) { + +297 +v¬ + +n + = +¬rCÏss +. +Ëngth +; + +298  +v¬ + +m + = 0; m < +n +; m++) { + +299 ià( +¬rCÏss +[ +m +] =ð +¬rObjCÏss +[ +k +]è +c +++; + +300 ià(Ð +d–im + =ð'|' && +c + =ð1è|| (d–im =ð' ' && c =ð +¬rCÏss +. +Ëngth +)) { + +301 +¬r +. + `push +( +objCÞl +[ +i +]); + +302  +com·risÚLoÝ +; + +308  +¬r +; + +311 +funùiÚ + + `sfWebDebugToggËM’u +() + +313 +v¬ + +–em’t + = +docum’t +. + `g‘EËm’tById +('sfWebDebugDetails'); + +315 +v¬ + +ÿcheEËm’ts + = + `sfWebDebugG‘EËm’tsByCÏssName +('sfWebDebugCache'); + +316 +v¬ + +mašCacheEËm’ts + = + `sfWebDebugG‘EËm’tsByCÏssName +('sfWebDebugActionCache'); + +317 +v¬ + +·ÃlEËm’ts + = + `sfWebDebugG‘EËm’tsByCÏssName +('sfWebDebugTop'); + +319 ià( +–em’t +. +¡yË +. +di¥Ïy + != 'none') + +321  +v¬ + +i + = 0; i < +·ÃlEËm’ts +. +Ëngth +; ++i) + +323 +·ÃlEËm’ts +[ +i +]. +¡yË +. +di¥Ïy + = 'none'; + +327  +v¬ + +i + = 0; i < +ÿcheEËm’ts +. +Ëngth +; ++i) + +329 +ÿcheEËm’ts +[ +i +]. +¡yË +. +di¥Ïy + = 'none'; + +331  +v¬ + +i + = 0; i < +mašCacheEËm’ts +. +Ëngth +; ++i) + +333 +mašCacheEËm’ts +[ +i +]. +¡yË +. +bÜd” + = 'none'; + +338  +v¬ + +i + = 0; i < +ÿcheEËm’ts +. +Ëngth +; ++i) + +340 +ÿcheEËm’ts +[ +i +]. +¡yË +. +di¥Ïy + = ''; + +342  +v¬ + +i + = 0; i < +mašCacheEËm’ts +. +Ëngth +; ++i) + +344 +mašCacheEËm’ts +[ +i +]. +¡yË +. +bÜd” + = '1px solid #f00'; + +348 + `sfWebDebugToggË +('sfWebDebugDetails'); + +349 + `sfWebDebugToggË +('sfWebDebugShowMenu'); + +350 + `sfWebDebugToggË +('sfWebDebugHideMenu'); + +353 +funùiÚ + + `sfWebDebugShowD‘ažsFÜ +( +–em’t +) + +355 ià( +ty³of + +–em’t + == 'string') + +356 +–em’t + = +docum’t +. + `g‘EËm’tById +(element); + +358 +v¬ + +·ÃlEËm’ts + = + `sfWebDebugG‘EËm’tsByCÏssName +('sfWebDebugTop'); + +359  +v¬ + +i + = 0; i < +·ÃlEËm’ts +. +Ëngth +; ++i) + +361 ià( +·ÃlEËm’ts +[ +i +] !ð +–em’t +) + +363 +·ÃlEËm’ts +[ +i +]. +¡yË +. +di¥Ïy + = 'none'; + +367 + `sfWebDebugToggË +( +–em’t +); + +370 +funùiÚ + + `sfWebDebugToggË +( +–em’t +) + +372 ià( +ty³of + +–em’t + == 'string') + +373 +–em’t + = +docum’t +. + `g‘EËm’tById +(element); + +375 ià( +–em’t +) + +376 +–em’t +. +¡yË +. +di¥Ïy + =ƒlement.style.display == 'none' ? '' : 'none'; + +379 +funùiÚ + + `sfWebDebugToggËMes§ges +( +kÏss +) + +381 +v¬ + +–em’ts + = + `sfWebDebugG‘EËm’tsByCÏssName +( +kÏss +); + +383 +v¬ + +x + = +–em’ts +. +Ëngth +; + +384  +v¬ + +i + = 0; i < +x +; ++i) + +386 + `sfWebDebugToggË +( +–em’ts +[ +i +]); + +390 +funùiÚ + + `sfWebDebugToggËAÎLogLšes +( +show +, +kÏss +) + +392 +v¬ + +–em’ts + = + `sfWebDebugG‘EËm’tsByCÏssName +( +kÏss +); + +393 +v¬ + +x + = +–em’ts +. +Ëngth +; + +394  +v¬ + +i + = 0; i < +x +; ++i) + +396 +–em’ts +[ +i +]. +¡yË +. +di¥Ïy + = +show + ? '' : 'none'; + +400 +funùiÚ + + `sfWebDebugShowOÆyLogLšes +( +ty³ +) + +402 +v¬ + +ty³s + = +Ãw + + `A¼ay +(); + +403 +ty³s +[0] = 'info'; + +404 +ty³s +[1] = 'warning'; + +405 +ty³s +[2] = 'error'; + +406  +kÏss + +š + +ty³s +) + +408 +v¬ + +–em’ts + = + `sfWebDebugG‘EËm’tsByCÏssName +('sfWebDebug' + +ty³s +[ +kÏss +]. + `sub¡ršg +(0, 1). + `toUµ”Ca£ +(è+y³s[kÏss].sub¡ršg(1,y³s[kÏss]. +Ëngth +)); + +409 +v¬ + +x + = +–em’ts +. +Ëngth +; + +410  +v¬ + +i + = 0; i < +x +; ++i) + +412 ià('Œ' =ð +–em’ts +[ +i +]. +gName +. + `toLow”Ca£ +()) + +414 +–em’ts +[ +i +]. +¡yË +. +di¥Ïy + = ( +ty³ + =ð +ty³s +[ +kÏss +]) ? '' : 'none'; + +420 +EOF +; + +421 + } +} + +428 +public + +funùiÚ + + $g‘StyËsh“t +() + +430  <<< +EOF + + +433 +·ddšg +: 0; + +434 +m¬gš +: 0; + +435 +fÚt +- +çmžy +: +ArŸl +, +§ns +- +£rif +; + +436 +fÚt +- +size +: 12 +px +; + +437 +cÞÜ +: #333; + +438 +‹xt +- +®ign +: +Ëá +; + +439 +lše +- +height +: 12 +px +; + +442 #sfWebDebug +a +, #sfWebDebug‡: +hov” + + +444 +‹xt +- +decÜ©iÚ +: +nÚe +; + +445 +bÜd” +: +nÚe +; + +446 +background +- +cÞÜ +: +Œª¥¬’t +; + +447 +cÞÜ +: #000; + +450 #sfWebDebug +img + + +452 : +nÚe +; + +453 +m¬gš +: 0; + +454 +bÜd” +: 0; + +455 +di¥Ïy +: +šlše +; + +460 +pos™iÚ +: +absÞu‹ +; + +461 +m¬gš +: 0; + +462 +·ddšg +: 1 +px + 0; + +463 +right +: 0 +px +; + +464 +tÝ +: 0 +px +; + +465 +Ýac™y +: 0.80; + +466 +fž‹r +: + `®pha +( +Ýac™y +:80); + +467 +z +- +šdex +: 10000; + +468 +wh™e +- +¥aû +: +now¿p +; + +469 +background +- +cÞÜ +: #ddd; + +472 #sfWebDebugB¬[ +id +] + +474 +pos™iÚ +: +fixed +; + +477 #sfWebDebugB¬ +img + + +479 +v”tiÿl +- +®ign +: +middË +; + +482 #sfWebDebugB¬ . +sfWebDebugM’u + + +484 +·ddšg +: 5 +px +; + +485 +·ddšg +- +Ëá +: 0; + +486 +di¥Ïy +: +šlše +; + +487 +m¬gš +: 0; + +490 #sfWebDebugB¬ . +sfWebDebugM’u + +li + + +492 +di¥Ïy +: +šlše +; + +493 +li¡ +- +¡yË +: +nÚe +; + +494 +m¬gš +: 0; + +495 +·ddšg +: 0 6 +px +; + +498 #sfWebDebugB¬ . +sfWebDebugM’u + +li +. +Ï¡ + + +500 +m¬gš +: 0; + +501 +·ddšg +: 0; + +502 +bÜd” +: 0; + +505 #sfWebDebugD©aba£D‘až  +li + + +507 +m¬gš +: 0; + +508 +m¬gš +- +Ëá +: 30 +px +; + +509 +·ddšg +: 5 +px + 0; + +512 #sfWebDebugShÜtMes§ge  +li + + +514 +m¬gš +- +bÙtom +: 10 +px +; + +515 +·ddšg +: 5 +px +; + +516 +background +- +cÞÜ +: #ddd; + +519 #sfWebDebugShÜtMes§ge  +li + + +521 +li¡ +- +¡yË +: +nÚe +; + +526 +m¬gš +- +right +: 7 +px +; + +529 #sfWebDebug +´e + + +531 +lše +- +height +: 1.3; + +532 +m¬gš +- +bÙtom +: 10 +px +; + +535 #sfWebDebug +h1 + + +537 +fÚt +- +size +: 16 +px +; + +538 +fÚt +- +weight +: +bÞd +; + +539 +m¬gš +: 20 +px + 0; + +540 +·ddšg +: 0; + +541 +bÜd” +: 0 +px +; + +542 +background +- +cÞÜ +: #eee; + +545 #sfWebDebug +h2 + + +547 +fÚt +- +size +: 14 +px +; + +548 +fÚt +- +weight +: +bÞd +; + +549 +m¬gš +: 10 +px + 0; + +550 +·ddšg +: 0; + +551 +bÜd” +: 0 +px +; + +552 +background +: +nÚe +; + +555 #sfWebDebug +h3 + + +557 +fÚt +- +size +: 12 +px +; + +558 +fÚt +- +weight +: +bÞd +; + +559 +m¬gš +: 10 +px + 0; + +560 +·ddšg +: 0; + +561 +bÜd” +: 0 +px +; + +562 +background +: +nÚe +; + +565 #sfWebDebug . +sfWebDebugTÝ + + +567 +pos™iÚ +: +absÞu‹ +; + +568 +Ëá +: 0 +px +; + +569 +tÝ +: 0 +px +; + +570 +width +: 98%; + +571 +·ddšg +: 0 1%; + +572 +m¬gš +: 0; + +573 +z +- +šdex +: 9999; + +574 +background +- +cÞÜ +: #efefef; + +575 +bÜd” +- +bÙtom +: 1 +px + +sÞid + #aaa; + +580 +m¬gš +: 0; + +581 +·ddšg +: 3 +px +; + +582 +fÚt +- +size +: 11 +px +; + +587 +m¬gš +- +bÙtom +: 5 +px +; + +590 #sfWebDebugLogM’u +li + + +592 +di¥Ïy +: +šlše +; + +593 +li¡ +- +¡yË +: +nÚe +; + +594 +m¬gš +: 0; + +595 +·ddšg +: 0 5 +px +; + +596 +bÜd” +- +right +: 1 +px + +sÞid + #aaa; + +601 +di¥Ïy +: +šlše +; + +602 +·ddšg +: 5 +px +; + +603 +background +- +cÞÜ +: #ddd; + +604 +bÜd” +: 1 +px + +sÞid + #aaa; + +605 +m¬gš +: 20 +px + 0; + +608 #sfWebDebugCÚfigSumm¬y +li + + +610 +li¡ +- +¡yË +: +nÚe +; + +611 +di¥Ïy +: +šlše +; + +612 +m¬gš +: 0; + +613 +·ddšg +: 0 5 +px +; + +616 #sfWebDebugCÚfigSumm¬y +li +. +Ï¡ + + +618 +bÜd” +: 0; + +621 . +sfWebDebugInfo +, .sfWebDebugInfØ +td + + +623 +background +- +cÞÜ +: #ddd; + +626 . +sfWebDebugW¬nšg +, .sfWebDebugW¬nšg +td + + +628 +background +- +cÞÜ +: +ܪge + ! +imp܏Á +; + +631 . +sfWebDebugE¼Ü +, .sfWebDebugE¼Ü +td + + +633 +background +- +cÞÜ +: #f99 ! +imp܏Á +; + +636 . +sfWebDebugLogNumb” + + +638 +width +: 1%; + +641 . +sfWebDebugLogTy³ + + +643 +width +: 1%; + +644 +wh™e +- +¥aû +: +now¿p +; + +647 . +sfWebDebugLogTy³ +, #sfWebDebug .sfWebDebugLogTy³ +a + + +649 +cÞÜ +: +d¬kg»’ +; + +652 #sfWebDebug . +sfWebDebugLogTy³ + +a +: +hov” + + +654 +‹xt +- +decÜ©iÚ +: +und”lše +; + +657 . +sfWebDebugLogInfo + + +659 +cÞÜ +: +blue +; + +662 . +isÚ + + +664 +cÞÜ +: #3 +f3 +; + +665 +m¬gš +- +right +: 5 +px +; + +668 . +isoff + + +670 +cÞÜ +: #f33; + +671 +m¬gš +- +right +: 5 +px +; + +672 +‹xt +- +decÜ©iÚ +: +lše +- +through +; + +675 . +sfWebDebugLogs + + +677 +·ddšg +: 0; + +678 +m¬gš +: 0; + +679 +bÜd” +: 1 +px + +sÞid + #999; + +680 +fÚt +- +çmžy +: +ArŸl +; + +681 +fÚt +- +size +: 11 +px +; + +684 . +sfWebDebugLogs + +Œ + + +686 +·ddšg +: 0; + +687 +m¬gš +: 0; + +688 +bÜd” +: 0; + +691 . +sfWebDebugLogs + +td + + +693 +m¬gš +: 0; + +694 +bÜd” +: 0; + +695 +·ddšg +: 1 +px + 3px; + +696 +v”tiÿl +- +®ign +: +tÝ +; + +699 . +sfWebDebugLogs + +th + + +701 +m¬gš +: 0; + +702 +bÜd” +: 0; + +703 +·ddšg +: 3 +px + 5px; + +704 +v”tiÿl +- +®ign +: +tÝ +; + +705 +background +- +cÞÜ +: #999; + +706 +cÞÜ +: #eee; + +707 +wh™e +- +¥aû +: +now¿p +; + +710 . +sfWebDebugDebugInfo + + +712 +cÞÜ +: #999; + +713 +fÚt +- +size +: 11 +px +; + +714 +m¬gš +: 5 +px + 0 5px 10px; + +715 +·ddšg +: 2 +px + 0 2px 5px; + +716 +bÜd” +- +Ëá +: 1 +px + +sÞid + #aaa; + +717 +lše +- +height +: 1.25e +m +; + +720 . +sfWebDebugDebugInfo + . +sfWebDebugLogInfo +, + +721 . +sfWebDebugDebugInfo + +a +. +sfWebDebugFžeLšk + + +723 +cÞÜ +: #333 ! +imp܏Á +; + +726 . +sfWebDebugCache + + +728 +·ddšg +: 0; + +729 +m¬gš +: 0; + +730 +fÚt +- +çmžy +: +ArŸl +; + +731 +pos™iÚ +: +absÞu‹ +; + +732 +ov”æow +: +hidd’ +; + +733 +z +- +šdex +: 995; + +734 +fÚt +- +size +: 9 +px +; + +735 +·ddšg +: 2 +px +; + +736 +fž‹r +: + `®pha +( +Ýac™y +=85); + +737 - +moz +- +Ýac™y +:0.85; + +738 +Ýac™y +: 0.85; + +743 +m¬gš +- +Ëá +: 0; + +744 +·ddšg +: 1 +px + 4px; + +745 +background +- +cÞÜ +: #666; + +746 +cÞÜ +: #fff; + +749 #sfWebDebugv›wD‘až  +ul + + +751 +·ddšg +- +Ëá +: 2e +m +; + +752 +m¬gš +: .5e +m + 0; + +753 +li¡ +- +¡yË +: +nÚe +; + +756 #sfWebDebugv›wD‘až  +li + + +758 +m¬gš +- +bÙtom +: .5e +m +; + +761 #sfWebDebug . +sfWebDebugD©aTy³ +, + +762 #sfWebDebug . +sfWebDebugD©aTy³ + +a + + +764 +cÞÜ +: #666; + +765 +fÚt +- +¡yË +: +™®ic +; + +768 #sfWebDebug . +sfWebDebugD©aTy³ + +a +: +hov” + + +770 +‹xt +- +decÜ©iÚ +: +und”lše +; + +775 +m¬gš +- +bÙtom +: 10 +px +; + +778 #sfWebDebugD©aba£Log  +Þ + + +780 +m¬gš +: 0; + +781 +·ddšg +: 0; + +782 +m¬gš +- +Ëá +: 20 +px +; + +783 +li¡ +- +¡yË +: +decim® +; + +786 #sfWebDebugD©aba£Log  +li + + +788 +·ddšg +: 6 +px +; + +791 #sfWebDebugD©aba£Log  +li +: +Áh +- + `chžd +( +odd +) + +793 +background +- +cÞÜ +: #CCC; + +796 . +sfWebDebugD©aba£Qu”y + + +798 +m¬gš +- +bÙtom +: .5e +m +; + +799 +m¬gš +- +tÝ +: 0; + +802 . +sfWebDebugD©aba£LogInfo + + +804 +cÞÜ +: #666; + +805 +fÚt +- +size +: 11 +px +; + +808 . +sfWebDebugD©aba£Qu”y + . +sfWebDebugLogInfo + + +810 +cÞÜ +: #909; + +811 +fÚt +- +weight +: +bÞd +; + +814 . +sfWebDebugHighlight + + +816 +background +: #FFC; + +818 +EOF +; + +819 + } +} + + @lib/vendor/symfony/lib/debug/sfWebDebugPanel.class.php + +1 +webDebug + = +$webDebug +; + +40 +public + +funùiÚ + + $g‘T™ËU¾ +() + +42 + } +} + +49 +ab¡¿ù + +public + +funùiÚ + +g‘T™Ë +(); + +56 +ab¡¿ù + +public + +funùiÚ + +g‘Pª–T™Ë +(); + +63 +ab¡¿ù + +public + +funùiÚ + +g‘Pª–CڋÁ +(); + +70 +public + +funùiÚ + + $g‘Stus +() + +72  +$this +-> +¡©us +; + +73 + } +} + +80 +public + +funùiÚ + + $£tStus +( +$¡©us +) + +82 +$this +-> +¡©us + = +$¡©us +; + +83 + } +} + +93 +public + +funùiÚ + +g‘ToggËr +( +$–em’t +, +$t™Ë + = 'Toggle details') + +95  '<¨h»f="#" onþick="sfWebDebugToggË(\''. +$–em’t +.'\');„‘uº f®£;"™Ë="'. +$t™Ë +.'">'; + +105 +public + +funùiÚ + + $g‘ToggËabËDebugSck +( +$debugSck +) + +107  +$i + = 1; + +109 ià(! +$debugSck +) + +114 +$–em’t + = + `g‘_þass +( +$this +).'Debug'. +$i +++; + +115 +$keys + = + `¬¿y_»v”£ +( + `¬¿y_keys +( +$debugSck +)); + +117 +$html + = +$this +-> + `g‘ToggËr +( +$–em’t +, 'Toggle debug stack'); + +118 +$html + .ð'\n"; + +142  +$html +; + +143 + } +} + +154 +public + +funùiÚ + + $fÜm©FžeLšk +( +$fže +, +$lše + = +nuÎ +, +$‹xt + =‚ull) + +157 ià( +$fže + && ! +sfToÞk™ +:: + `isP©hAbsÞu‹ +($file)) + +159 ià( +nuÎ + ==ð +$‹xt +) + +161 +$‹xt + = +$fže +; + +165 +$r + = +Ãw + + `ReæeùiÚCÏss +( +$fže +); + +166 +$fže + = +$r +-> + `g‘FžeName +(); + +169 +$shÜtFže + = +sfDebug +:: + `sh܋nFžeP©h +( +$fže +); + +171 ià( +$lškFÜm© + = +sfCÚfig +:: + `g‘ +('sf_fže_lšk_fÜm©', + `ši_g‘ +('xdebug.file_link_format'))) + +174  + `¥rštf +( + +176 + `html¥ecŸlch¬s +( + `¡¹r +( +$lškFÜm© +, + `¬¿y +('%f' => +$fže +, '%l' => +$lše +)), +ENT_QUOTES +, +sfCÚfig +:: + `g‘ +('sf_charset')), + +177 + `html¥ecŸlch¬s +( +$shÜtFže +, +ENT_QUOTES +, +sfCÚfig +:: + `g‘ +('sf_charset')), + +178 +nuÎ + ==ð +$‹xt + ? +$shÜtFže + : $text); + +180 ià( +nuÎ + ==ð +$‹xt +) + +183  +$shÜtFže +; + +188  + `¥rštf +('<¥ª™Ë="%s">%s', +$shÜtFže +, +$‹xt +); + +190 + } +} + +199 +public + +funùiÚ + + $fÜm©Sql +( +$sql +) + +201  + `´eg_»¶aû +('/\b(UPDATE|SET|SELECT|FROM|AS|LIMIT|ASC|COUNT|DESC|WHERE|LEFT JOIN|INNER JOIN|RIGHT JOIN|ORDER BY|GROUP BY|IN|LIKE|DISTINCT|DELETE|INSERT|INTO|VALUES)\b/', '<¥ª cÏss="sfWebDebugLogInfo">\\1', +$sql +); + +202 + } +} + + @lib/vendor/symfony/lib/debug/sfWebDebugPanelCache.class.php + +1 +webDebug +-> + `g‘O±iÚ +('image_root_path').'/reload.png"‡lt="Reload" />'; + +27 +public + +funùiÚ + + $g‘T™ËU¾ +() + +29 +$qu”ySŒšg + = + `·r£_u¾ +( +$_SERVER +['REQUEST_URI'], +PHP_URL_QUERY +); + +31 ià( +çl£ + ==ð + `¡½os +( +$qu”ySŒšg +, '_sf_ignore_cache')) + +33  + `¥rštf +('?%s_sf_ignÜe_ÿche=1', +$qu”ySŒšg + ? $queryString.'&' : ''); + +37  '?'. +$qu”ySŒšg +; + +39 + } +} + +41 +public + +funùiÚ + + $g‘Pª–T™Ë +() + +44 + } +} + +46 +public + +funùiÚ + + $g‘Pª–CڋÁ +() + +48 + } +} + + @lib/vendor/symfony/lib/debug/sfWebDebugPanelConfig.class.php + +1 +webDebug +-> + `g‘O±iÚ +('image_root_path').'/config.png"‡lt="Config" /> config'; + +26 +public + +funùiÚ + + $g‘Pª–T™Ë +() + +29 + } +} + +31 +public + +funùiÚ + + $g‘Pª–CڋÁ +() + +33 +$cÚfig + = + `¬¿y +( + +34 'debug' => +sfCÚfig +:: + `g‘ +('sf_debug') ? 'on' : 'off', + +35 'xdebug' => + `ex‹nsiÚ_lßded +('xdebug') ? 'on' : 'off', + +36 'loggšg' => +sfCÚfig +:: + `g‘ +('sf_logging_enabled') ? 'on' : 'off', + +37 'ÿche' => +sfCÚfig +:: + `g‘ +('sf_cache') ? 'on' : 'off', + +38 'com´essiÚ' => +sfCÚfig +:: + `g‘ +('sf_compressed') ? 'on' : 'off', + +39 'tok’iz”' => + `funùiÚ_exi¡s +('token_get_all') ? 'on' : 'off', + +40 '—cûË¿tÜ' => + `ex‹nsiÚ_lßded +('—cûË¿tÜ'è&& + `ši_g‘ +('eaccelerator.enable') ? 'on' : 'off', + +41 '­c' => + `ex‹nsiÚ_lßded +('­c'è&& + `ši_g‘ +('apc.enabled') ? 'on' : 'off', + +42 'xÿche' => + `ex‹nsiÚ_lßded +('xÿche'è&& + `ši_g‘ +('xcache.cacher') ? 'on' : 'off', + +45 +$html + = '
      '; + +46 + `fܗch + ( +$cÚfig + +as + +$key + => +$v®ue +) + +48 +$html + .ð''.$key.''; + +50 +$html + .= '
    '; + +52 +$cڋxt + = +sfCڋxt +:: + `g‘In¡ªû +(); + +53 +$html + .ð +$this +-> + `fÜm©A¼ayAsHtml +('»que¡', +sfDebug +:: + `»que¡AsA¼ay +( +$cڋxt +-> + `g‘Reque¡ +())); + +54 +$html + .ð +$this +-> + `fÜm©A¼ayAsHtml +('»¥Ú£', +sfDebug +:: + `»¥Ú£AsA¼ay +( +$cڋxt +-> + `g‘Re¥Ú£ +())); + +55 +$html + .ð +$this +-> + `fÜm©A¼ayAsHtml +('u£r', +sfDebug +:: + `u£rAsA¼ay +( +$cڋxt +-> + `g‘U£r +())); + +56 +$html + .ð +$this +-> + `fÜm©A¼ayAsHtml +('£‰šgs', +sfDebug +:: + `£‰šgsAsA¼ay +()); + +57 +$html + .ð +$this +-> + `fÜm©A¼ayAsHtml +('glob®s', +sfDebug +:: + `glob®sAsA¼ay +()); + +58 +$html + .ð +$this +-> + `fÜm©A¼ayAsHtml +('php', +sfDebug +:: + `phpInfoAsA¼ay +()); + +59 +$html + .ð +$this +-> + `fÜm©A¼ayAsHtml +('symfÚy', +sfDebug +:: + `symfÚyInfoAsA¼ay +()); + +61  +$html +; + +62 + } +} + +72 +´Ùeùed + +funùiÚ + + $fÜm©A¼ayAsHtml +( +$id +, +$v®ues +) + +74 +$id + = + `ucfœ¡ +( + `¡¹Þow” +($id)); + +77 < +h2 +>'.$id.' '.$this->g‘ToggËr(' +sfWebDebug +'.$id).' + +78 < +div + +id +="sfWebDebug'.$id.'" +¡yË +="di¥Ïy:‚Úe">< +´e +>'.html¥ecŸlch¬s(sfYaml::dump(sfDebug::»moveObjeùs($v®ues)), ENT_QUOTES, sfCÚfig::g‘(' +sf_ch¬£t +')).' + +80 + } +} + + @lib/vendor/symfony/lib/debug/sfWebDebugPanelLogs.class.php + +1 +webDebug +-> + `g‘O±iÚ +('image_root_path').'/log.png"‡lt="Log" />†ogs'; + +26 +public + +funùiÚ + + $g‘Pª–T™Ë +() + +29 + } +} + +31 +public + +funùiÚ + + $g‘Pª–CڋÁ +() + +33 +$ev’t + = +$this +-> +webDebug +-> + `g‘Ev’tDi¥©ch” +()-> + `fž‹r +( +Ãw + + `sfEv’t +($this, 'debug.web.fž‹r_logs'), $this->webDebug-> + `g‘Logg” +()-> + `g‘Logs +()); + +34 +$logs + = +$ev’t +-> + `g‘R‘uºV®ue +(); + +36 +$html + = ' + +37 < +Œ +> + +38 < +th +># + +39 < +th +> +ty³ + + +40 < +th +> +mes§ge + + +41 '."\n"; + +42 +$lše_nb + = 0; + +43 + `fܗch + ( +$logs + +as + +$log +) + +45 +$´iܙy + = +$this +-> +webDebug +-> + `g‘Priܙy +( +$log +['priority']); + +48 ià( +$log +['´iܙy'] < +$this +-> + `g‘Stus +()) + +50 +$this +-> + `£tStus +( +$log +['priority']); + +53 ++ +$lše_nb +; + +54 +$html + .ð + `¥rštf +("\n", + +55 + `ucfœ¡ +( +$´iܙy +), + +56 +$log +['type'], + +57 +$lše_nb +, + +58 '', + +59 + `þass_exi¡s +( +$log +['ty³'], +çl£ +è? +$this +-> + `fÜm©FžeLšk +($log['type']) : $log['type'], + +60 +$this +-> + `fÜm©LogLše +( +$log +['message']), + +61 +$this +-> + `g‘ToggËabËDebugSck +( +$log +['debug_backtrace']) + +64 +$html + .= '
    %s%s %s%s %s
    '; + +66 +$ty³s + = + `¬¿y +(); + +67 + `fܗch + ( +$this +-> +webDebug +-> + `g‘Logg” +()-> + `g‘Ty³s +(è +as + +$ty³ +) + +69 +$ty³s +[] = '<¨h»f="#" onþick="sfWebDebugToggËMes§ges(\''. +$ty³ +.'\');„eturn false;">'.$type.''; + +73 < +ul + +id +="sfWebDebugLogMenu"> + +74 < +li +>< +a + +h»f +="#" +Úþick +="sfWebDebugToggËAÎLogLšesÑrue, \'sfWebDebugLogLše\');„‘uº f®£;">[ +®l +] + +75 < +li +>< +a + +h»f +="#" +Úþick +="sfWebDebugToggËAÎLogLšes(çl£, \'sfWebDebugLogLše\');„‘uº f®£;">[ +nÚe +] + +76 < +li +>< +a + +h»f +="#" +Úþick +="sfWebDebugShowOÆyLogLšes(\'šfo\');„‘uº f®£;">< +img + +¤c +="'.$this->webDebug->g‘O±iÚ('image_roÙ_·th').'/šfo.²g" +®t +="Show only infos" /> + +77 < +li +>< +a + +h»f +="#" +Úþick +="sfWebDebugShowOÆyLogLšes(\'w¬nšg\');„‘uº f®£;">< +img + +¤c +="'.$this->webDebug->g‘O±iÚ('image_roÙ_·th').'/w¬nšg.²g" +®t +="Show only warnings" /> + +78 < +li +>< +a + +h»f +="#" +Úþick +="sfWebDebugShowOÆyLogLšes(\'”rÜ\');„‘uº f®£;">< +img + +¤c +="'.$this->webDebug->g‘O±iÚ('image_roÙ_·th').'/”rÜ.²g" +®t +="Show onlyƒrrors" /> + +79 < +li +>'.implode("\n
  • ", $types).'
  • + +80 + +81 < +div + +id +="sfWebDebugLogLines">'.$html.' + +83 + } +} + +92 +´Ùeùed + +funùiÚ + + $fÜm©LogLše +( +$logLše +) + +94  +$cÚ¡ªts +; + +96 ià(! +$cÚ¡ªts +) + +98 + `fܗch + ( + `¬¿y +('sf_­p_dœ', 'sf_roÙ_dœ', 'sf_symfÚy_lib_dœ'è +as + +$cÚ¡ªt +) + +100 +$cÚ¡ªts +[ + `»®·th +( +sfCÚfig +:: + `g‘ +( +$cÚ¡ªt +)). +DIRECTORY_SEPARATOR +] = $constant.DIRECTORY_SEPARATOR; + +105 +$logLše + = + `html¥ecŸlch¬s +($logLše, +ENT_QUOTES +, +sfCÚfig +:: + `g‘ +('sf_charset')); + +108 +$logLše + = + `¡r_»¶aû +( + `¬¿y_keys +( +$cÚ¡ªts +), + `¬¿y_v®ues +($constants), $logLine); + +110 +$logLše + = +sfToÞk™ +:: + `´egŒ +($logLše, + `¬¿y +('/"(.+?)"/s' => '"\\1"', + +115 +$logLše + = +$this +-> + `fÜm©Sql +($logLine); + +118 ià( + `¡½os +( +$logLše +, 'DSN'è!=ð +çl£ +) + +120 +$logLše + = + `´eg_»¶aû +("/=>\s+'?[^'\s,]+'?/", "=> '****'", $logLine); + +123  +$logLše +; + +124 + } +} + + @lib/vendor/symfony/lib/debug/sfWebDebugPanelMailer.class.php + +1 +webDebug +-> + `g‘Ev’tDi¥©ch” +()-> + `cÚÃù +('maž”.cÚfigu»', + `¬¿y +($this, 'listenForMailerConfigure')); + +35 +public + +funùiÚ + + $g‘T™Ë +() + +37 ià( +$this +-> +maž” + && ( +$logg” + = $this->maž”-> + `g‘Logg” +()è&& $logg”-> + `couÁMes§ges +()) + +39  ' '. +$logg” +-> + `couÁMes§ges +(); + +41 + } +} + +43 +public + +funùiÚ + + $g‘Pª–T™Ë +() + +46 + } +} + +48 +public + +funùiÚ + + $g‘Pª–CڋÁ +() + +50 +$logg” + = +$this +-> +maž” +-> + `g‘Logg” +(); + +52 ià(! +$logg” + || ! +$mes§ges + = $logg”-> + `g‘Mes§ges +()) + +54  +çl£ +; + +57 +$html + = + `¬¿y +(); + +60 +$¡¿‹gy + = +$this +-> +maž” +-> + `g‘D–iv”ySŒ©egy +(); + +61 +$html +[] = '

    Configuration

    '; + +62 +$html +[] = 'D–iv”y sŒ©egy: '. +$¡¿‹gy +; + +64 ià( +sfMaž” +:: +SINGLE_ADDRESS + =ð +$¡¿‹gy +) + +66 +$html +[] = ' - ®Èemaž ¬d–iv”edo: '. +$this +-> +maž” +-> + `g‘D–iv”yAdd»ss +(); + +70 +$html +[] = '

    Email sent

    '; + +71 + `fܗch + ( +$mes§ges + +as + +$mes§ge +) + +73 +$html +[] = +$this +-> + `»nd”Mes§geInfÜm©iÚ +( +$mes§ge +); + +76  + `im¶ode +("\n", +$html +); + +77 + } +} + +79 +´Ùeùed + +funùiÚ + + $»nd”Mes§geInfÜm©iÚ +( +Swiá_Mes§ge + +$mes§ge +) + +81  +$i + = 0; + +83 +$i +++; + +85 +$to + = +nuÎ + ==ð +$mes§ge +-> + `g‘To +(è? '' : + `im¶ode +(', ', + `¬¿y_keys +($message->getTo())); + +87 +$html + = + `¬¿y +(); + +88 +$html +[] = + `¥rštf +('

    % Ño: %sè%s

    ', +$mes§ge +-> + `g‘Subjeù +(), +$to +, +$this +-> + `g‘ToggËr +('sfWebDebugMažTem¶©e'. +$i +)); + +89 +$html +[] = '
    '; + +90 +$html +[] = '<´e>'. + `htmËÁ™›s +( +$mes§ge +-> + `toSŒšg +(), +ENT_QUOTES +, $mes§ge-> + `g‘Ch¬£t +()).''; + +91 +$html +[] = '
    '; + +93  + `im¶ode +("\n", +$html +); + +94 + } +} + +101 +public + +funùiÚ + + $li¡’FÜMaž”CÚfigu» +( +sfEv’t + +$ev’t +) + +103 +$this +-> +maž” + = +$ev’t +-> + `g‘Subjeù +(); + +104 + } +} + + @lib/vendor/symfony/lib/debug/sfWebDebugPanelMemory.class.php + +1 +webDebug +-> + `g‘O±iÚ +('image_roÙ_·th').'/memÜy.²g"‡É="MemÜy" /> '. +$tÙ®MemÜy +.' KB'; + +28 +public + +funùiÚ + + $g‘Pª–T™Ë +() + +30 + } +} + +32 +public + +funùiÚ + + $g‘Pª–CڋÁ +() + +34 + } +} + + @lib/vendor/symfony/lib/debug/sfWebDebugPanelSymfonyVersion.class.php + +1 '. +SYMFONY_VERSION +.''; + +26 +public + +funùiÚ + + $g‘Pª–T™Ë +() + +28 + } +} + +30 +public + +funùiÚ + + $g‘Pª–CڋÁ +() + +32 + } +} + + @lib/vendor/symfony/lib/debug/sfWebDebugPanelTimer.class.php + +1 +webDebug +-> + `g‘Ev’tDi¥©ch” +()-> + `cÚÃù +('debug.web.fž‹r_logs', + `¬¿y +($this, 'filterLogs')); + +36 +public + +funùiÚ + + $g‘T™Ë +() + +38  ' '.$this-> + `g‘TÙ®Time +().' ms'; + +39 + } +} + +41 +public + +funùiÚ + + $g‘Pª–T™Ë +() + +44 + } +} + +46 +public + +funùiÚ + + $g‘Pª–CڋÁ +() + +48 ià( +sfTim”Mªag” +:: + `g‘Tim”s +()) + +50 +$tÙ®Time + = +$this +-> + `g‘TÙ®Time +(); + +51 +$·Ãl + = ''; + +52 + `fܗch + ( +sfTim”Mªag” +:: + `g‘Tim”s +(è +as + +$Çme + => +$tim” +) + +54 +$·Ãl + .ð + `¥rštf +('<Œ>', +$Çme +, +$tim” +-> + `g‘C®ls +(), $tim”-> + `g‘EÏp£dTime +(è* 1000, +$tÙ®Time + ? ($timer->getElapsedTime() * 1000 * 100 / $totalTime) : 'N/A'); + +56 +$·Ãl + .= '
    typecallstime (ms)time (%)
    %s%d%.2f%d
    '; + +58  +$·Ãl +; + +60 + } +} + +62 +public + +funùiÚ + + $fž‹rLogs +( +sfEv’t + +$ev’t +, +$logs +) + +64 +$ÃwLogs + = + `¬¿y +(); + +65 + `fܗch + ( +$logs + +as + +$log +) + +67 ià('sfWebDebugLogg”' !ð +$log +['type']) + +69 +$ÃwLogs +[] = +$log +; + +73  +$ÃwLogs +; + +74 + } +} + +76  +public + +funùiÚ + + $¡¬tTime +() + +78 +£lf +:: +$¡¬tTime + = + `miüÙime +( +Œue +); + +79 + } +} + +81  +public + +funùiÚ + + $isS¹ed +() + +83  +nuÎ + !=ð +£lf +:: +$¡¬tTime +; + +84 + } +} + +86 +´Ùeùed + +funùiÚ + + $g‘TÙ®Time +() + +88  +nuÎ + !=ð +£lf +:: +$¡¬tTime + ? + `¥rštf +('%.0f', ( + `miüÙime +( +Œue +) - self::$startTime) * 1000) : 0; + +89 + } +} + + @lib/vendor/symfony/lib/debug/sfWebDebugPanelView.class.php + +1 +webDebug +-> + `g‘Ev’tDi¥©ch” +()-> + `cÚÃù +('cڌÞËr.chªge_aùiÚ', + `¬¿y +($this, 'listenForChangeAction')); + +35 +$this +-> +webDebug +-> + `g‘Ev’tDi¥©ch” +()-> + `cÚÃù +('‹m¶©e.fž‹r_·¿m‘”s', + `¬¿y +($this, 'filterTemplateParameters')); + +43 +public + +funùiÚ + + $li¡’FÜChªgeAùiÚ +( +sfEv’t + +$ev’t +) + +45 +$this +-> +aùiÚs + = + `¬¿y +(); + +46 +$this +-> +·¹Ÿls + = + `¬¿y +(); + +47 + } +} + +57 +public + +funùiÚ + + $fž‹rTem¶©eP¬am‘”s +( +sfEv’t + +$ev’t +, +$·¿m‘”s +) + +59 +$’Œy + = + `¬¿y +('·¿m‘”s' => +$·¿m‘”s +); + +61 ià('aùiÚ' =ð +$·¿m‘”s +['sf_ty³'] && +$fže + = +$this +-> + `g‘La¡Tem¶©e +()) + +63 +$this +-> +aùiÚs +[] = +$’Œy + + + `¬¿y +('fže' => +$fže +); + +65 ià('·¹Ÿl' =ð +$·¿m‘”s +['sf_ty³'] && +$fže + = +$this +-> + `g‘La¡Tem¶©e +('sfPartialView')) + +67 +$this +-> +·¹Ÿls +[] = +$’Œy + + + `¬¿y +('fže' => +$fže +); + +70  +$·¿m‘”s +; + +71 + } +} + +80 +´Ùeùed + +funùiÚ + +g‘La¡Tem¶©e +( +$þass + = 'sfPHPView') + +82 +fܗch + ( +¬¿y_»v”£ +( +$this +-> +webDebug +-> +g‘Logg” +()-> +g‘Logs +()è +as + +$log +) + +85 ( +$þass + =ð +$log +['ty³'] || ( +þass_exi¡s +($log['ty³'], +çl£ +è&& +is_subþass_of +($log['type'], $class))) + +87 +´eg_m©ch +('/^R’d” "(.*)"$/', +$log +['mes§ge'], +$m©ch +) + +90  + g$m©ch +[1]; + +98 +public + +funùiÚ + + $g‘T™Ë +() + +100 ià( + `couÁ +( +$this +-> +aùiÚs +è|| couÁ($this-> +·¹Ÿls +)) + +102  ' view'; + +104 + } +} + +109 +public + +funùiÚ + + $g‘Pª–T™Ë +() + +112 + } +} + +117 +public + +funùiÚ + + $g‘Pª–CڋÁ +() + +119 +$html + = + `¬¿y +(); + +121 + `fܗch + ( +$this +-> +aùiÚs + +as + +$aùiÚ +) + +123 +$html +[] = +$this +-> + `»nd”Tem¶©eInfÜm©iÚ +( +$aùiÚ +['file'], $action['parameters']); + +126 + `fܗch + ( +$this +-> +·¹Ÿls + +as + +$·¹Ÿl +) + +128 +$html +[] = +$this +-> + `»nd”Tem¶©eInfÜm©iÚ +( +$·¹Ÿl +['file'], $partial['parameters'], 'Partial'); + +131  + `još +("\n", +$html +); + +132 + } +} + +145 +´Ùeùed + +funùiÚ + +»nd”Tem¶©eInfÜm©iÚ +( +$fže +, +$·¿m‘”s +, +$Ïb– + = 'Template') + +147  +$i + = 0; + +149 + g$·¿m‘”s + = +$this +-> +fž‹rCÜeP¬am‘”s +( +$·¿m‘”s +); + +150 + g$i +++; + +152 + g$html + = +¬¿y +(); + +153 + g$html +[] = +¥rštf +('

    %s: % %s

    ', +$Ïb– +, +$this +-> +fÜm©FžeLšk +( +$fže +, +nuÎ +, $this-> +sh܋nTem¶©eP©h +($fže)), $this-> +g‘ToggËr +('sfWebDebugV›wTem¶©e'. +$i +)); + +154 + g$html +[] = '
    '; + +155 ià( +couÁ +( +$·¿m‘”s +)) + +157 + g$html +[] = '

    Parameters:

    '; + +158 + g$html +[] = '
      '; + +159 +fܗch + ( +$·¿m‘”s + +as + +$Çme + => +$·¿m‘” +) + +161 +$´e£Á©iÚ + = '
    • '. +$this +-> +fÜm©P¬am‘”AsHtml +( +$Çme +, +$·¿m‘” +).'
    • '; + +162 + g$html +[] = +$this +-> +webDebug +-> +g‘Ev’tDi¥©ch” +()-> +fž‹r +( +Ãw + +sfEv’t +($this, 'debug.web.v›w.fž‹r_·¿m‘”_html', +¬¿y +('·¿m‘”' => +$·¿m‘” +)), +$´e£Á©iÚ +)-> +g‘R‘uºV®ue +(); + +164 + g$html +[] = '
    '; + +168 + g$html +[] = '

    No…arameters were…assedohisemplate.

    '; + +170 + g$html +[] = '
    '; + +172  +još +("\n", +$html +); + +183 +´Ùeùed + +funùiÚ + + $fÜm©P¬am‘”AsHtml +( +$Çme +, +$·¿m‘” +) + +185 ià(! + `m‘hod_exi¡s +( +$this +, +$m‘hod + = 'fÜm©'. + `ucwÜds +( + `g‘ty³ +( +$·¿m‘” +)).'AsHtml')) + +187 +$m‘hod + = 'getParameterDescription'; + +190  +$this +-> + `$m‘hod +( +$Çme +, +$·¿m‘” +); + +191 + } +} + +201 +´Ùeùed + +funùiÚ + + $fÜm©ObjeùAsHtml +( +$Çme +, +$·¿m‘” +) + +203 ià( +$·¿m‘” + +š¡ªûof + +sfFÜm +) + +205  +$this +-> + `fÜm©FÜmAsHtml +( +$Çme +, +$·¿m‘” +); + +209  +$this +-> + `g‘P¬am‘”DesütiÚ +( +$Çme +, +$·¿m‘” +); + +211 + } +} + +221 +´Ùeùed + +funùiÚ + + $fÜm©FÜmAsHtml +( +$Çme +, +sfFÜm + +$fÜm +) + +223  +$i + = 0; + +225 +$i +++; + +227 ià( +$fÜm +-> + `hasE¼Üs +(è&& +sfLogg” +:: +NOTICE + < +$this +-> + `g‘Stus +()) + +229 +$this +-> + `£tStus +( +sfLogg” +:: +NOTICE +); + +232 +$html + = + `¬¿y +(); + +233 +$html +[] = +$this +-> + `g‘P¬am‘”DesütiÚ +( +$Çme +, +$fÜm +, $fÜm-> + `hasE¼Üs +(è? '$%s' : +nuÎ +); + +234 +$html +[] = +$this +-> + `g‘ToggËr +('sfWebDebugV›wFÜm'. +$i +); + +235 +$html +[] = ''; + +245  + `još +("\n", +$html +); + +246 + } +} + +256 +´Ùeùed + +funùiÚ + +fÜm©FÜmF›ldSchemaAsHtml +( +sfFÜmF›ldSchema + +$f›ldSchema +, +$ÇmeFÜm© + = '%s') + +258 +$html + = +¬¿y +(); + +260 +fܗch + ( +$f›ldSchema + +as + +$f›ld +) + +262 + g$Çme + = +¥rštf +( +$ÇmeFÜm© +, +$this +-> +v¬ExpÜt +( +$f›ld +-> +g‘Name +())); + +263 ià( +$f›ld + +š¡ªûof + + gsfFÜmF›ldSchema +) + +265 + g$html +[] = +$this +-> +fÜm©FÜmF›ldSchemaAsHtml +( +$f›ld +, +$Çme +.'[%s]'); + +269 + g$html +[] = '
  • '; + +270 + g$html +[] = +$this +-> +g‘P¬am‘”DesütiÚ +( +$Çme +, +$f›ld +-> +g‘Widg‘ +()); + +272 ià( + g$f›ld +-> +hasE¼Ü +()) + +274 + g$html +[] = +¥rštf +('

    <¥ª cÏss="sfWebDebugW¬nšg">%s

    ', +$f›ld +-> +g‘E¼Ü +()); + +277 + g$html +[] = '
  • '; + +281  +još +("\n", +$html +); + +292 +´Ùeùed + +funùiÚ + + $g‘P¬am‘”DesütiÚ +( +$Çme +, +$·¿m‘” +, +$ÇmeFÜm© + = +nuÎ +, +$ty³FÜm© + =‚ull) + +294 ià( +nuÎ + ==ð +$ÇmeFÜm© +) + +296 +$ÇmeFÜm© + = '$%s'; + +299 ià( +nuÎ + ==ð +$ty³FÜm© +) + +301 +$ty³FÜm© + = '(%s)'; + +304  + `¥rštf +( +$ÇmeFÜm© +.' '. +$ty³FÜm© +, +$Çme +, + `is_objeù +( +$·¿m‘” +è? +$this +-> + `fÜm©FžeLšk +( + `g‘_þass +($·¿m‘”)è: + `g‘ty³ +($parameter)); + +305 + } +} + +314 +´Ùeùed + +funùiÚ + + $sh܋nTem¶©eP©h +( +$·th +) + +316 +$·th + = + `»®·th +($path); + +319 +$£p + = + `´eg_quÙe +( +DIRECTORY_SEPARATOR +); + +320 ià( + `´eg_m©ch +('#moduËs'. +$£p +.'(\w+)'.$£p.'‹m¶©es'.$£p.'(.*)$#', +$·th +, +$m©ch +)) + +322  +$m©ch +[1].' … '.$match[2]; + +325  + `¡r_»¶aû +('SF_ROOT_DIR'. +DIRECTORY_SEPARATOR +, '', +sfDebug +:: + `sh܋nFžeP©h +( +$·th +)); + +326 + } +} + +335 +´Ùeùed + +funùiÚ + + $fž‹rCÜeP¬am‘”s +( +$·¿m‘”s +) + +337 +$fž‹»d + = + `¬¿y +(); + +339 + `fܗch + ( +$·¿m‘”s + +as + +$Çme + => +$v®ue +) + +341 ià(0 !=ð + `¡½os +( +$Çme +, 'sf_')) + +343 +$fž‹»d +[ +$Çme +] = +$v®ue +; + +347  +$fž‹»d +; + +348 + } +} + +357 +´Ùeùed + +funùiÚ + + $v¬ExpÜt +( +$v®ue +) + +359 ià( + `is_num”ic +( +$v®ue +)) + +361 +$v®ue + = ( +š‹g” +) $value; + +364  + `v¬_expÜt +( +$v®ue +, +Œue +); + +365 + } +} + + @lib/vendor/symfony/lib/escaper/sfOutputEscaper.class.php + +1 +v®ue + = +$v®ue +; + +50 +$this +-> +esÿpšgM‘hod + = +$esÿpšgM‘hod +; + +82 +public +  +funùiÚ + + $esÿ³ +( +$esÿpšgM‘hod +, +$v®ue +) + +84 ià( +nuÎ + ==ð +$v®ue +) + +86  +$v®ue +; + +90 ià( + `is_sÿÏr +( +$v®ue +)) + +92  + `ÿÎ_u£r_func +( +$esÿpšgM‘hod +, +$v®ue +); + +95 ià( + `is_¬¿y +( +$v®ue +)) + +97  +Ãw + + `sfOuutEsÿ³rA¼ayDecÜ©Ü +( +$esÿpšgM‘hod +, +$v®ue +); + +100 ià( + `is_objeù +( +$v®ue +)) + +102 ià( +$v®ue + +š¡ªûof + +sfOuutEsÿ³r +) + +105 +$cÝy + = +þÚe + +$v®ue +; + +107 +$cÝy +-> +esÿpšgM‘hod + = +$esÿpšgM‘hod +; + +109  +$cÝy +; + +111 ià( +£lf +:: + `isCÏssM¬kedAsSaã +( + `g‘_þass +( +$v®ue +))) + +115  +$v®ue +; + +117 ià( +$v®ue + +š¡ªûof + +sfOuutEsÿ³rSaã +) + +121  +$v®ue +-> + `g‘V®ue +(); + +123 ià( +$v®ue + +š¡ªûof + +T¿v”§bË +) + +125  +Ãw + + `sfOuutEsÿ³rI‹¿tÜDecÜ©Ü +( +$esÿpšgM‘hod +, +$v®ue +); + +129  +Ãw + + `sfOuutEsÿ³rObjeùDecÜ©Ü +( +$esÿpšgM‘hod +, +$v®ue +); + +134 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('UÇbˁØesÿ³ v®u"%s".', + `v¬_expÜt +( +$v®ue +, +Œue +))); + +135 + } +} + +146  +public + +funùiÚ + + $uÃsÿ³ +( +$v®ue +) + +148 ià( +nuÎ + ==ð +$v®ue + || + `is_boÞ +($value)) + +150  +$v®ue +; + +153 ià( + `is_sÿÏr +( +$v®ue +)) + +155  + `html_’t™y_decode +( +$v®ue +, +ENT_QUOTES +, +sfCÚfig +:: + `g‘ +('sf_charset')); + +157 + `–£if + ( + `is_¬¿y +( +$v®ue +)) + +159 + `fܗch + ( +$v®ue + +as + +$Çme + => +$v +) + +161 +$v®ue +[ +$Çme +] = +£lf +:: + `uÃsÿ³ +( +$v +); + +164  +$v®ue +; + +166 + `–£if + ( + `is_objeù +( +$v®ue +)) + +168  +$v®ue + +š¡ªûof + +sfOuutEsÿ³r + ? $v®ue-> + `g‘RawV®ue +() : $value; + +171  +$v®ue +; + +172 + } +} + +181  +public + +funùiÚ + + $isCÏssM¬kedAsSaã +( +$þass +) + +183 ià( + `š_¬¿y +( +$þass +, +£lf +:: +$§ãCÏs£s +)) + +185  +Œue +; + +188 + `fܗch + ( +£lf +:: +$§ãCÏs£s + +as + +$§ãCÏss +) + +190 ià( + `is_subþass_of +( +$þass +, +$§ãCÏss +)) + +192  +Œue +; + +196  +çl£ +; + +197 + } +} + +204  +public + +funùiÚ + + $m¬kCÏs£sAsSaã +( +¬¿y + +$þas£s +) + +206 +£lf +:: +$§ãCÏs£s + = + `¬¿y_unique +( + `¬¿y_m”ge +(£lf::$§ãCÏs£s, +$þas£s +)); + +207 + } +} + +214  +public + +funùiÚ + + $m¬kCÏssAsSaã +( +$þass +) + +216 +£lf +:: + `m¬kCÏs£sAsSaã +( + `¬¿y +( +$þass +)); + +217 + } +} + +227 +public + +funùiÚ + + $g‘RawV®ue +() + +229  +$this +-> +v®ue +; + +230 + } +} + +239 +public + +funùiÚ + + $__g‘ +( +$v¬ +) + +241  +$this +-> + `esÿ³ +($this-> +esÿpšgM‘hod +, $this-> +v®ue +-> +$v¬ +); + +242 + } +} + + @lib/vendor/symfony/lib/escaper/sfOutputEscaperArrayDecorator.class.php + +1 + gcouÁ + = +couÁ +( +$this +-> +v®ue +); + +44 +public + +funùiÚ + +»wšd +() + +46 +»£t +( +$this +-> +v®ue +); + +48 + g$this +-> + gcouÁ + = +couÁ +( +$this +-> +v®ue +); + +56 +public + +funùiÚ + +key +() + +58  +key +( +$this +-> +v®ue +); + +69 +public + +funùiÚ + +cu¼’t +() + +71  + gsfOuutEsÿ³r +:: +esÿ³ +( +$this +-> +esÿpšgM‘hod +, +cu¼’t +($this-> +v®ue +)); + +77 +public + +funùiÚ + +Ãxt +() + +79 +Ãxt +( +$this +-> +v®ue +); + +81 + g$this +-> + gcouÁ +--; + +93 +public + +funùiÚ + +v®id +() + +95  + g$this +-> + gcouÁ + > 0; + +105 +public + +funùiÚ + +off£tExi¡s +( +$off£t +) + +107  +is£t +( +$this +-> +v®ue +[ +$off£t +]); + +117 +public + +funùiÚ + +off£tG‘ +( +$off£t +) + +119  + gsfOuutEsÿ³r +:: +esÿ³ +( +$this +-> +esÿpšgM‘hod +, $this-> +v®ue +[ +$off£t +]); + +134 +public + +funùiÚ + +off£tS‘ +( +$off£t +, +$v®ue +) + +136 +throw + +Ãw + +sfExû±iÚ +('Cannot set values.'); + +150 +public + +funùiÚ + +off£tUn£t +( +$off£t +) + +152 +throw + +Ãw + +sfExû±iÚ +('Cannot unset values.'); + +160 +public + +funùiÚ + +couÁ +() + +162  +couÁ +( +$this +-> +v®ue +); + +172 +public + +funùiÚ + +g‘Raw +( +$key +) + +174  + g$this +-> + gv®ue +[ +$key +]; + + @lib/vendor/symfony/lib/escaper/sfOutputEscaperGetterDecorator.class.php + +1 +esÿpšgM‘hod +; + +52  +sfOuutEsÿ³r +:: + `esÿ³ +( +$esÿpšgM‘hod +, +$this +-> + `g‘Raw +( +$key +)); + +54 + } +} + + @lib/vendor/symfony/lib/escaper/sfOutputEscaperIteratorDecorator.class.php + +1 + g™”©Ü + = +Ãw + +I‹¿tÜI‹¿tÜ +( +$v®ue +); + +59 +public + +funùiÚ + +»wšd +() + +61  + g$this +-> + g™”©Ü +-> +»wšd +(); + +69 +public + +funùiÚ + +cu¼’t +() + +71  + gsfOuutEsÿ³r +:: +esÿ³ +( +$this +-> +esÿpšgM‘hod +, $this-> +™”©Ü +-> +cu¼’t +()); + +79 +public + +funùiÚ + +key +() + +81  + g$this +-> + g™”©Ü +-> +key +(); + +87 +public + +funùiÚ + +Ãxt +() + +89  + g$this +-> + g™”©Ü +-> +Ãxt +(); + +98 +public + +funùiÚ + +v®id +() + +100  + g$this +-> + g™”©Ü +-> +v®id +(); + +110 +public + +funùiÚ + +off£tExi¡s +( +$off£t +) + +112  +is£t +( +$this +-> +v®ue +[ +$off£t +]); + +122 +public + +funùiÚ + +off£tG‘ +( +$off£t +) + +124  + gsfOuutEsÿ³r +:: +esÿ³ +( +$this +-> +esÿpšgM‘hod +, $this-> +v®ue +[ +$off£t +]); + +139 +public + +funùiÚ + +off£tS‘ +( +$off£t +, +$v®ue +) + +141 +throw + +Ãw + +sfExû±iÚ +('Cannot set values.'); + +155 +public + +funùiÚ + +off£tUn£t +( +$off£t +) + +157 +throw + +Ãw + +sfExû±iÚ +('Cannot unset values.'); + + @lib/vendor/symfony/lib/escaper/sfOutputEscaperObjectDecorator.class.php + +1 0) + +49 +$esÿpšgM‘hod + = +$¬gs +[ + `couÁ +($args) - 1]; + +50 ià( + `is_¡ršg +( +$esÿpšgM‘hod +è&& + `sub¡r +($escapingMethod, 0, 4) === 'esc_') + +52 + `¬¿y_pÝ +( +$¬gs +); + +56 +$esÿpšgM‘hod + = +$this +-> +esÿpšgM‘hod +; + +61 +$esÿpšgM‘hod + = +$this +-> +esÿpšgM‘hod +; + +64 +$v®ue + = + `ÿÎ_u£r_func_¬¿y +( + `¬¿y +( +$this +-> +v®ue +, +$m‘hod +), +$¬gs +); + +66  +sfOuutEsÿ³r +:: + `esÿ³ +( +$esÿpšgM‘hod +, +$v®ue +); + +81 +public + +funùiÚ + + $g‘Raw +( +$key +) + +83 ià(! + `is_ÿÎabË +( + `¬¿y +( +$this +-> +v®ue +, 'get'))) + +85 +throw + +Ãw + + `sfExû±iÚ +('Object does‚ot have‡ callable get() method.'); + +88  +$this +-> +v®ue +-> + `g‘ +( +$key +); + +89 + } +} + +96 +public + +funùiÚ + + $__toSŒšg +() + +98  +$this +-> + `esÿ³ +($this-> +esÿpšgM‘hod +, ( +¡ršg +è$this-> +v®ue +); + +99 + } +} + +106 +public + +funùiÚ + + $__is£t +( +$key +) + +108  + `is£t +( +$this +-> +v®ue +-> +$key +); + +109 + } +} + +118 +public + +funùiÚ + + $couÁ +() + +120  + `couÁ +( +$this +-> +v®ue +); + +121 + } +} + + @lib/vendor/symfony/lib/escaper/sfOutputEscaperSafe.class.php + +1 +v®ue + = +$v®ue +; + +33 ià( + `is_¬¿y +( +$v®ue +è|| + `is_objeù +($value)) + +35 +·»Á +:: + `__cÚ¡ruù +( +$v®ue +); + +39 +public + +funùiÚ + + $__toSŒšg +() + +41  ( +¡ršg +è +$this +-> +v®ue +; + +42 + } +} + +44 +public + +funùiÚ + + $__g‘ +( +$key +) + +46  +$this +-> +v®ue +-> +$key +; + +47 + } +} + +49 +public + +funùiÚ + + $__£t +( +$key +, +$v®ue +) + +51 +$this +-> +v®ue +-> +$key + = +$v®ue +; + +52 + } +} + +54 +public + +funùiÚ + + $__ÿÎ +( +$m‘hod +, +$¬gum’ts +) + +56  + `ÿÎ_u£r_func_¬¿y +( + `¬¿y +( +$this +-> +v®ue +, +$m‘hod +), +$¬gum’ts +); + +57 + } +} + +59 +public + +funùiÚ + + $__is£t +( +$key +) + +61  + `is£t +( +$this +-> +v®ue +-> +$key +); + +62 + } +} + +64 +public + +funùiÚ + + $__un£t +( +$key +) + +66 + `un£t +( +$this +-> +v®ue +-> +$key +); + +67 + } +} + +74 +public + +funùiÚ + + $g‘V®ue +() + +76  +$this +-> +v®ue +; + +77 + } +} + + @lib/vendor/symfony/lib/event_dispatcher/sfEvent.php + +1 +subjeù + = +$subjeù +; + +38 +$this +-> +Çme + = +$Çme +; + +40 +$this +-> +·¿m‘”s + = +$·¿m‘”s +; + +48 +public + +funùiÚ + + $g‘Subjeù +() + +50  +$this +-> +subjeù +; + +51 + } +} + +58 +public + +funùiÚ + + $g‘Name +() + +60  +$this +-> +Çme +; + +61 + } +} + +68 +public + +funùiÚ + + $£tR‘uºV®ue +( +$v®ue +) + +70 +$this +-> +v®ue + = +$v®ue +; + +71 + } +} + +78 +public + +funùiÚ + + $g‘R‘uºV®ue +() + +80  +$this +-> +v®ue +; + +81 + } +} + +88 +public + +funùiÚ + + $£tProûs£d +( +$´oûs£d +) + +90 +$this +-> +´oûs£d + = ( +boޗn +è +$´oûs£d +; + +91 + } +} + +98 +public + +funùiÚ + + $isProûs£d +() + +100  +$this +-> +´oûs£d +; + +101 + } +} + +108 +public + +funùiÚ + + $g‘P¬am‘”s +() + +110  +$this +-> +·¿m‘”s +; + +111 + } +} + +120 +public + +funùiÚ + + $off£tExi¡s +( +$Çme +) + +122  + `¬¿y_key_exi¡s +( +$Çme +, +$this +-> +·¿m‘”s +); + +123 + } +} + +132 +public + +funùiÚ + + $off£tG‘ +( +$Çme +) + +134 ià(! + `¬¿y_key_exi¡s +( +$Çme +, +$this +-> +·¿m‘”s +)) + +136 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('Thev’ˆ"%s" ha nØ"%s"…¬am‘”.', +$this +-> +Çme +, +$Çme +)); + +139  +$this +-> +·¿m‘”s +[ +$Çme +]; + +140 + } +} + +148 +public + +funùiÚ + + $off£tS‘ +( +$Çme +, +$v®ue +) + +150 +$this +-> +·¿m‘”s +[ +$Çme +] = +$v®ue +; + +151 + } +} + +158 +public + +funùiÚ + + $off£tUn£t +( +$Çme +) + +160 + `un£t +( +$this +-> +·¿m‘”s +[ +$Çme +]); + +161 + } +} + + @lib/vendor/symfony/lib/event_dispatcher/sfEventDispatcher.php + +1 +li¡’”s +[ +$Çme +])) + +38 +$this +-> +li¡’”s +[ +$Çme +] = + `¬¿y +(); + +41 +$this +-> +li¡’”s +[ +$Çme +][] = +$li¡’” +; + +52 +public + +funùiÚ + + $discÚÃù +( +$Çme +, +$li¡’” +) + +54 ià(! + `is£t +( +$this +-> +li¡’”s +[ +$Çme +])) + +56  +çl£ +; + +59 + `fܗch + ( +$this +-> +li¡’”s +[ +$Çme +] +as + +$i + => +$ÿÎabË +) + +61 ià( +$li¡’” + ==ð +$ÿÎabË +) + +63 + `un£t +( +$this +-> +li¡’”s +[ +$Çme +][ +$i +]); + +66 + } +} + +75 +public + +funùiÚ + + $nÙify +( +sfEv’t + +$ev’t +) + +77 + `fܗch + ( +$this +-> + `g‘Li¡’”s +( +$ev’t +-> + `g‘Name +()è +as + +$li¡’” +) + +79 + `ÿÎ_u£r_func +( +$li¡’” +, +$ev’t +); + +82  +$ev’t +; + +83 + } +} + +92 +public + +funùiÚ + + $nÙifyUÁž +( +sfEv’t + +$ev’t +) + +94 + `fܗch + ( +$this +-> + `g‘Li¡’”s +( +$ev’t +-> + `g‘Name +()è +as + +$li¡’” +) + +96 ià( + `ÿÎ_u£r_func +( +$li¡’” +, +$ev’t +)) + +98 +$ev’t +-> + `£tProûs£d +( +Œue +); + +103  +$ev’t +; + +104 + } +} + +114 +public + +funùiÚ + + $fž‹r +( +sfEv’t + +$ev’t +, +$v®ue +) + +116 + `fܗch + ( +$this +-> + `g‘Li¡’”s +( +$ev’t +-> + `g‘Name +()è +as + +$li¡’” +) + +118 +$v®ue + = + `ÿÎ_u£r_func_¬¿y +( +$li¡’” +, + `¬¿y +( +$ev’t +, $value)); + +121 +$ev’t +-> + `£tR‘uºV®ue +( +$v®ue +); + +123  +$ev’t +; + +124 + } +} + +133 +public + +funùiÚ + + $hasLi¡’”s +( +$Çme +) + +135 ià(! + `is£t +( +$this +-> +li¡’”s +[ +$Çme +])) + +137 +$this +-> +li¡’”s +[ +$Çme +] = + `¬¿y +(); + +140  ( +boޗn +è + `couÁ +( +$this +-> +li¡’”s +[ +$Çme +]); + +141 + } +} + +150 +public + +funùiÚ + + $g‘Li¡’”s +( +$Çme +) + +152 ià(! + `is£t +( +$this +-> +li¡’”s +[ +$Çme +])) + +154  + `¬¿y +(); + +157  +$this +-> +li¡’”s +[ +$Çme +]; + +158 + } +} + + @lib/vendor/symfony/lib/exception/data/error.atom.php + +1 + + @lib/vendor/symfony/lib/exception/data/error.css.php + + @lib/vendor/symfony/lib/exception/data/error.html.php + +1 + +3 + +5 < +html + +xmÊs +="h‰p://www.w3.Üg/1999/xhtml" +xml +: +Ïng +="en"†ang="en"> + +6 < +h—d +> + +8 < +m‘a + +h‰p +- +equiv +="CڋÁ-Ty³" +cڋÁ +="text/html; charset=utf-8" /> + +9 < +m‘a + +Çme +="t™Ë" +cڋÁ +="symfony…roject" /> + +10 < +m‘a + +Çme +="robÙs" +cڋÁ +="index, follow" /> + +11 < +m‘a + +Çme +="desütiÚ" +cڋÁ +="symfony…roject" /> + +12 < +m‘a + +Çme +="keywÜds" +cڋÁ +="symfony,…roject" /> + +13 < +m‘a + +Çme +="Ïnguage" +cڋÁ +="en" /> + +14 < +t™Ë +> +symfÚy + +´ojeù + + +16 < +lšk + +»l +="shÜtcuˆicÚ" +h»f +="/favicon.ico" /> + +17 < +lšk + +»l +="¡yËsh“t" +ty³ +="‹xt/css" +medŸ +="sü“n" +h»f +="/sf/sf_default/css/screen.css" /> + +18 + +22 + +23 < +body +> + +24 < +div + +þass +="sfTContainer"> + +25 < +a + +t™Ë +="symfÚy webs™e" +h»f +="h‰p://www.symfÚy-´ojeù.Üg/">< +img + +®t +="symfÚy PHP F¿mewÜk" +þass +="sfTLogo" +¤c +="/sf/sf_deçuÉ/images/sfTLogo.²g" +height +="39" +width +="186" /> + +26 < +div + +þass +="sfTMessageContainer sfTAlert"> + +27 < +img + +®t +="·gnÙ found" +þass +="sfTMes§geIcÚ" +¤c +="/sf/sf_deçuÉ/images/icÚs/toÞs48.²g" +height +="48" +width +="48" /> + +28 < +div + +þass +="sfTMessageWrap"> + +29 < +h1 +> +OÝs +! +An + +E¼Ü + +Occu¼ed + + +30 < +h5 +> +The + +£rv” + +»tuºed + +a + " ". + +31 + +32 + +34 < +dl + +þass +="sfTMessageInfo"> + +35 < +dt +> +Som‘hšg + +is + +brok’ + + +36 < +dd +> +PËa£ + +e +- +maž + +us + +© + [ +emaž +] +ªd + +Ët + u  +know + +wh© + +you + +w”e + +došg + +wh’ + +this + +”rÜ + +occu¼ed +. +We + +wžl + +fix + +™ + +as + +soÚ +‡  +possibË +. + +37 +SÜry +  +ªy + +šcÚv’›nû + +ÿu£d +. + +39 < +dt +> +Wh© +'s‚ext + +40 < +dd +> + +41 < +ul + +þass +="sfTIconList"> + +42 < +li + +þass +="sfTLškMes§ge">< +a + +h»f +="javasüt:hi¡Üy.go(-1)"> +Back + +to + +´evious + +·ge + + +43 < +li + +þass +="sfTLškMes§ge">< +a + +h»f +="/"> +Go + +to + +Hom•age + + +44 + +45 + +46 + +47 + +48 + +49 + + @lib/vendor/symfony/lib/exception/data/error.js.php + + @lib/vendor/symfony/lib/exception/data/error.json.php + +1 +¬¿y +( + +3 'code' => +$code +, + +4 'mes§ge' => +$‹xt +, + + @lib/vendor/symfony/lib/exception/data/error.rdf.php + +1 + + @lib/vendor/symfony/lib/exception/data/error.txt.php + +1 + gOÝs +! +An + +E¼Ü + + gOccu¼ed + + +4 +The + +£rv” + +»tuºed + +a + " ". + +6 +PËa£ + +e +- +maž + +us + +© + [ +emaž +] +ªd + +Ët + u  +know + +wh© + +you + +w”e + +došg + +wh’ + +this + + +7 +”rÜ + +occu¼ed +. +We + +wžl + +fix + +™ + +as + +soÚ +‡  +possibË +. +SÜry +  +ªy + + +8 +šcÚv’›nû + +ÿu£d +. + + @lib/vendor/symfony/lib/exception/data/error.xml.php + +1 ', +sfCÚfig +:: +g‘ +('sf_charset', 'UTF-8'))."\n" ?> + +2 < +”rÜ + + gcode +="" +mes§ge +="" /> + + @lib/vendor/symfony/lib/exception/data/exception.atom.php + +1 + + @lib/vendor/symfony/lib/exception/data/exception.css.php + + @lib/vendor/symfony/lib/exception/data/exception.html.php + +1 + +2 < +html + + gxmÊs +="h‰p://www.w3.Üg/1999/xhtml" +xml +: +Ïng +="en"†ang="en"> + +3 < +h—d +> + +4 < +m‘a + +h‰p +- +equiv +="CڋÁ-Ty³" +cڋÁ +="text/html; charset=utf-8"/> + +5 < +t™Ë +>: + +6 < +¡yË + + gty³ +="text/css"> + +7 +body + { +m¬gš +: 0; + g·ddšg +: 20 +px +; + gm¬gš +- + gtÝ +: 20px; + gbackground +- + gcÞÜ +: #eee } + +8 +body +, + gtd +, + gth + { + gfÚt +: 11 +px + +V”dªa +, + gArŸl +, + g§ns +- + g£rif +; + gcÞÜ +: #333 } + +9 +a + { +cÞÜ +: #333 } + +10 +h1 + { +m¬gš +: 0 0 0 10 +px +; + g·ddšg +: 10px 0 10px 0; + gfÚt +- + gweight +: +bÞd +; fÚt- + gsize +: 120% } + +11 +h2 + { +m¬gš +: 0; + g·ddšg +: 5 +px + 0; + gfÚt +- + gsize +: 110% } + +12 +ul + { +·ddšg +- +Ëá +: 20 +px +; + gli¡ +- + g¡yË +: +decim® + } + +13 +ul + +li + { +·ddšg +- +bÙtom +: 5 +px +; + gm¬gš +: 0 } + +14 +Þ + { +fÚt +- +çmžy +: +mÚo¥aû +; + gwh™e +- + g¥aû +: +´e +; + gli¡ +- + g¡yË +- + gpos™iÚ +: +šside +; + gm¬gš +: 0; + g·ddšg +: 10 +px + 0 } + +15 +Þ + +li + { +m¬gš +: -5 +px +; + g·ddšg +: 0 } + +16 +Þ + . +£Ëùed + { +fÚt +- +weight +: +bÞd +; + gbackground +- + gcÞÜ +: #ddd; + g·ddšg +: 2 +px + 0 } + +17 +bË +. +v¬s + { +·ddšg +: 0; + gm¬gš +: 0; + gbÜd” +: 1 +px + +sÞid + #999; + gbackground +- + gcÞÜ +: #fff; } + +18 + gbË +. +v¬s + + gth + { + g·ddšg +: 2 +px +; + gbackground +- + gcÞÜ +: #ddd; + gfÚt +- + gweight +: +bÞd + } + +19 +bË +. +v¬s + +td + { +·ddšg +: 2 +px +; + gfÚt +- + gçmžy +: +mÚo¥aû +; + gwh™e +- + g¥aû +: +´e + } + +20 +p +. +”rÜ + { +·ddšg +: 10 +px +; + gbackground +- + gcÞÜ +: #f00; + gfÚt +- + gweight +: +bÞd +; + g‹xt +- + g®ign +: +ûÁ” +; - + gmoz +- + gbÜd” +- + g¿dius +: 10px; - + gwebk™ +-border-radius: 10px; border-radius: 10px; } + +21 + gp +. +”rÜ + + ga + { + gcÞÜ +: #fff } + +22 #maš { +·ddšg +: 30 +px + 40px; +bÜd” +: 1px +sÞid + #ddd; +background +- +cÞÜ +: #fff; +‹xt +- +®ign +: +Ëá +; - +moz +-bÜd”- +¿dius +: 10px; - +webk™ +-bÜd”-¿dius: 10px; bÜd”-¿dius: 10px; +mš +- +width +: 770px; +max +-width: 770px } + +23 #mes§g{ +·ddšg +: 10 +px +; +m¬gš +- +bÙtom +: 10px; +background +- +cÞÜ +: #“e; - +moz +- +bÜd” +- +¿dius +: 10px; - +webk™ +-border-radius: 10px; border-radius: 10px; } + +24 + ga +. + gfže_lšk + { + g‹xt +- + gdecÜ©iÚ +: +nÚe +; } + +25 + ga +. + gfže_lšk +: +hov” + { +‹xt +- +decÜ©iÚ +: +und”lše +; } + +26 . + gcode +, #sf_£‰šgs, #sf_»que¡, #sf_»¥Ú£, #sf_u£r, #sf_glob® { + gov”æow +:‡uto; } + +27 + +28 < +süt + + gty³ +="text/javascript"> + +29 +funùiÚ + + $toggË +( +id +) + +31 +– + = +docum’t +. + `g‘EËm’tById +( +id +);ƒl. +¡yË +. +di¥Ïy + =ƒl.style.display == 'none' ? 'block' : 'none'; + +32 + } +} + +33 + +34 + +35 < + gbody +> + +36 < + gûÁ” +>< +div + + gid +="main"> + +37 < +div + +¡yË +="æßt:„ight">< +img + +¤c +="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAZCAYAAAAiwE4nAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAEfklEQVRIx7VUa0wUVxT+Znd2FxZk0YKACAtaGwEDUhUTBTEIItmKYk3UNqalD7StMSQ1JKatP5omTYyx0VRrjPERX7XWAG2t9GVi3drU2h+gi4BCWV67lOe6O/uYmXtPf0BRrMBK6UlObmbON9935p6HQEQI1o7uXeSy1dsjHn2Xlpr0oKzililoEiIKymvOr9q+pzyZZN894moHcbWDZN892lOeTN9fKHgrWB5NsInZ7joOrtv4JgR2F4r0AxTpRwisEes2bsNtW+eBYHmCEqw8kVsp6oy6jMUFYIoTxFUQqWBqNzIWr4aoC9NVnlxZNSWC1mqLsa6ubd36zbug+m3gXBlypoCYAuavx4Ytu1Fbay+2VluME/GJEwHsnT3WpLlzhbi4Z6D46gBosP/gVQDA669kIzJSRWxcApLnPie0dw3cALBw0k1z5dyKrIqyWHL1/Eye7n3kcX5MH75fRAAIAJUUZ5Cnez9JPYfI1XuDKsriqOZcbtakm6alte/yqsIi6LVt4KobxAIAqSPxwUEJxAPgqgcG0YH8NS+gxT5wZVI1/PrU0q1O54OoFfmvQZZsIBYA5zIy0maOYFZmJ4GYAuIyZG8jcvLfgMPhmnHlbG7pUws2NfUeWVvyMpj3d3DVB84C4MyPxNkP+8I0TQRn/qGY6gP316J4w6uob3AceirBzw9nnBD1RmN65nLIUhOIBUBcBjEZ5viQEZx5thFcdQ+50o+A5w7SM5dBFHWhFz5bdOpJ3MLjq63mdHrIr7f6PaXbPtBGht4DUwYAQXikyVTkb/gKtbYBNFpzYYoY3egarR6D7jCcPmtly5ZEh6/ZWucfdyycPep3ycmJ2phoAzx9ziERLoMzN4hJAICI8KEkp4VxcCaP+p4zGdHTw2FOiNB2OTzfAMgf80qrjmem1zf256zf9B6kvmvgqgeqrw2qvx1cGQRxBcQV5GRFIGepaeT5cfdJXbAUPY+79z15l47MWzDmH7a3P/g2Ly9X4O6LkKUWEPeOMbwMpnANiClPDkOBXteL3OXxQnNL72UA5n/V8NLR9Bdrb/ddLN+5VvD23wTA8d9MgNH0LD759DrS5oeUbN7RWjXqSu//OXi8sCBFkN11IFJAxMZ0e4cP12+6xsUQqZC9nShclYTWtsDJUTU8cyDlsE7URqTMC4Eiu8fN+/JVF7I3NuGlna2wlDaPi1VkN1LnR0GvF00n95kPAICm+tgcQ9N9V5ll9Tz4JSem2vySE5bCFDS3+t+uPjbHIA64dF/MioU2aoYGXndgQgJLngnWL0PR1iUje0n4hHimBhA1XYA5IVz8q1eu0oSGqCc6HV4ihAIQgso6MV4flNhDUR/iYqbBI1GqZtM7zVUzZ4p3rl5rQIgxesqvVCsa0O8y4Lc/nGp8rLhcBIA7Df7C7hlKe2ZGojYmZsGUCsqygvOnf6FZsbrtm3bY+wUigiAIC/funlXR0RXYgv/BzAmGn979qGvXyOALghAJQAtAB0A/fIrDY6MNurj/LBqADW8OFYACQB4+2d80or7Ra0ZtxAAAAABJRU5ErkJggg==" /> + +38 < +h1 +> | | + +39 < +h2 + +id +="mes§ge">', +html¥ecŸlch¬s +( +$mes§ge +, +ENT_QUOTES +, +sfCÚfig +:: +g‘ +('sf_ch¬£t', 'UTF-8'))è?> + +40 < + gh2 +> +¡ack + + gŒaû + + +41 < + gul +>< + gli +>
  • ', +$Œaûs +) ?>
  • + +43 < + gh2 +> +symfÚy + + g£‰šgs + < +a + + gh»f +="#" +Úþick +="toggË('sf_£‰šgs');„‘uº f®£;">... + +44 < +div + +id +="sf_£‰šgs" +¡yË +="di¥Ïy:‚Úe"> + +46 < +h2 +> +»que¡ + < +a + +h»f +="#" +Úþick +="toggle('sf_request');„eturn false;">... + +47 < +div + +id +="sf_»que¡" +¡yË +="di¥Ïy:‚Úe"> + +49 < +h2 +> +»¥Ú£ + < +a + +h»f +="#" +Úþick +="toggle('sf_response');„eturn false;">... + +50 < +div + +id +="sf_»¥Ú£" +¡yË +="di¥Ïy:‚Úe"> + +52 < +h2 +> +u£r + < +a + +h»f +="#" +Úþick +="toggle('sf_user');„eturn false;">... + +53 < +div + +id +="sf_u£r" +¡yË +="di¥Ïy:‚Úe"> + +55 < +h2 +> +glob® + +v¬s + < +a + +h»f +="#" +Úþick +="toggle('sf_globals');„eturn false;">... + +56 < +div + +id +="sf_glob®s" +¡yË +="di¥Ïy:‚Úe"> + +58 < +p + +id +="footer"> + +59 +symfÚy + +v +. -…h°< +br + /> + +60  +h–p + +»sÞvšg + +this + +issue +, +¶—£ + + gvis™ + < +a + + gh»f +="h‰p://www.symfÚy-´ojeù.Üg/"> +h‰p +: + +61 + +62 + +63 + +64 + + @lib/vendor/symfony/lib/exception/data/exception.js.php + + @lib/vendor/symfony/lib/exception/data/exception.json.php + +1 +¬¿y +( + +3 'code' => +$code +, + +4 'mes§ge' => +$mes§ge +, + +5 'debug' => +¬¿y +( + +6 'Çme' => +$Çme +, + +7 'mes§ge' => +$mes§ge +, + +8 'Œaûs' => +$Œaûs +, + + @lib/vendor/symfony/lib/exception/data/exception.rdf.php + +1 + + @lib/vendor/symfony/lib/exception/data/exception.txt.php + +1 [ +exû±iÚ +] + +2 [ +mes§ge +] + +3 0): ?> + +4 [ +¡ack + +Œaû +] + +5 + +6 + +8 + +9 + +10 [ +symfÚy +] +v +. (symfÚy- +´ojeù +. +Üg +) + +11 [ +PHP +] +v +. + + @lib/vendor/symfony/lib/exception/data/exception.xml.php + +1 ', +sfCÚfig +:: +g‘ +('sf_charset', 'UTF-8'))."\n" ?> + +2 < +”rÜ + + gcode +="" +mes§ge +=""> + +3 < +debug +> + +4 < +Çme +> + +5 < +mes§ge +> + +6 < + gŒaûs +> + +7 + +8 < +Œaû +> + +9 + +10 + +11 + +12 + + @lib/vendor/symfony/lib/exception/data/unavailable.php + +1 + +3 + +5 < +html + +xmÊs +="h‰p://www.w3.Üg/1999/xhtml" +xml +: +Ïng +="en"†ang="en"> + +6 < +h—d +> + +8 < +m‘a + +h‰p +- +equiv +="CڋÁ-Ty³" +cڋÁ +="text/html; charset=" /> + +9 < +m‘a + +Çme +="t™Ë" +cڋÁ +="symfony…roject" /> + +10 < +m‘a + +Çme +="robÙs" +cڋÁ +="index, follow" /> + +11 < +m‘a + +Çme +="desütiÚ" +cڋÁ +="symfony…roject" /> + +12 < +m‘a + +Çme +="keywÜds" +cڋÁ +="symfony,…roject" /> + +13 < +m‘a + +Çme +="Ïnguage" +cڋÁ +="en" /> + +14 < +t™Ë +> +symfÚy + +´ojeù + + +16 < +lšk + +»l +="shÜtcuˆicÚ" +h»f +="/favicon.ico" /> + +17 < +lšk + +»l +="¡yËsh“t" +ty³ +="‹xt/css" +medŸ +="sü“n" +h»f +="/sf/sf_default/css/screen.css" /> + +18 + +22 + +23 < +body +> + +24 < +div + +þass +="sfTContainer"> + +25 < +a + +t™Ë +="symfÚy webs™e" +h»f +="h‰p://www.symfÚy-´ojeù.Üg/">< +img + +®t +="symfÚy PHP F¿mewÜk" +þass +="sfTLogo" +¤c +="/sf/sf_deçuÉ/images/sfTLogo.²g" +height +="39" +width +="186" /> + +26 < +div + +þass +="sfTMessageContainer sfTAlert"> + +27 < +img + +®t +="·gnÙ found" +þass +="sfTMes§geIcÚ" +¤c +="/sf/sf_deçuÉ/images/icÚs/toÞs48.²g" +height +="48" +width +="48" /> + +28 < +div + +þass +="sfTMessageWrap"> + +29 < +h1 +> +Webs™e + +Tempܬžy + +UÇvažabË + + +30 < +h5 +> +PËa£ + +Œy + +agaš + +š + +a + +ãw + +£cÚds +... + +31 + +32 + +34 < +dl + +þass +="sfTMessageInfo"> + +35 < +dt +> +Wh© +'s‚ext + +36 < +dd +> + +37 < +ul + +þass +="sfTIconList"> + +38 < +li + +þass +="sfTR–ßdMes§ge">< +a + +h»f +="javasüt:wšdow.loÿtiÚ.»lßd()"> +Try + +agaš +: +R–ßd + +Page + + +39 + +40 + +41 + +42 + +43 + +44 + + @lib/vendor/symfony/lib/exception/sfCacheException.class.php + +1 +w¿µedExû±iÚ + ? $this : $this->wrappedException; + +28 ià( +sfCÚfig +:: + `g‘ +('sf_debug')) + +30 +$»¥Ú£ + = +sfCڋxt +:: + `g‘In¡ªû +()-> + `g‘Re¥Ú£ +(); + +31 ià( +nuÎ + ==ð +$»¥Ú£ +) + +33 +$»¥Ú£ + = +Ãw + + `sfWebRe¥Ú£ +( +sfCڋxt +:: + `g‘In¡ªû +()-> + `g‘Ev’tDi¥©ch” +()); + +34 +sfCڋxt +:: + `g‘In¡ªû +()-> + `£tRe¥Ú£ +( +$»¥Ú£ +); + +37 +$»¥Ú£ +-> + `£tStusCode +(404); + +39  +·»Á +:: + `´štSckT¿û +(); + +44 ià(! +sfCÚfig +:: + `g‘ +('sf_test')) + +46 + `”rÜ_log +( +$this +-> + `g‘Mes§ge +()); + +49 +sfCڋxt +:: + `g‘In¡ªû +()-> + `g‘CڌÞËr +()-> + `fÜw¬d +( +sfCÚfig +:: + `g‘ +('sf_error_404_module'), sfConfig::get('sf_error_404_action')); + +52 + } +} + + @lib/vendor/symfony/lib/exception/sfException.class.php + +1 + `g‘Mes§ge +())); + +41 +$exû±iÚ +-> + `£tW¿µedExû±iÚ +( +$e +); + +42 +£lf +:: +$Ï¡Exû±iÚ + = +$e +; + +44  +$exû±iÚ +; + +52 +public + +funùiÚ + + $£tW¿µedExû±iÚ +( +Exû±iÚ + +$e +) + +54 +$this +-> +w¿µedExû±iÚ + = +$e +; + +56 +£lf +:: +$Ï¡Exû±iÚ + = +$e +; + +57 + } +} + +64  +public + +funùiÚ + + $g‘La¡Exû±iÚ +() + +66  +£lf +:: +$Ï¡Exû±iÚ +; + +67 + } +} + +72  +public + +funùiÚ + + $þ—rLa¡Exû±iÚ +() + +74 +£lf +:: +$Ï¡Exû±iÚ + = +nuÎ +; + +75 + } +} + +80 +public + +funùiÚ + + $´štSckT¿û +() + +82 ià( +nuÎ + ==ð +$this +-> +w¿µedExû±iÚ +) + +84 +$this +-> + `£tW¿µedExû±iÚ +($this); + +87 +$exû±iÚ + = +$this +-> +w¿µedExû±iÚ +; + +89 ià(! +sfCÚfig +:: + `g‘ +('sf_test')) + +92 + `”rÜ_log +( +$exû±iÚ +-> + `g‘Mes§ge +()); + +95  + `ob_g‘_Ëv– +()) + +97 ià(! + `ob_’d_þ—n +()) + +103 ià( +sfCÚfig +:: + `g‘ +('sf_compressed')) { + +104 + `ob_¡¬t +('ob_gzhandler'); + +107 + `h—d” +('HTTP/1.0 500 Internal Server Error'); + +110 +Œy + + +112 +$this +-> + `ouutSckT¿û +( +$exû±iÚ +); + +114 + `ÿtch + ( +Exû±iÚ + +$e +) + +118 ià(! +sfCÚfig +:: + `g‘ +('sf_test')) + +120 + `ex™ +(1); + +122 + } +} + +127  +´Ùeùed + +funùiÚ + + $ouutSckT¿û +( +Exû±iÚ + +$exû±iÚ +) + +129 +$fÜm© + = 'html'; + +130 +$code + = '500'; + +131 +$‹xt + = 'Internal Server Error'; + +133 +$»¥Ú£ + = +nuÎ +; + +134 ià( + `þass_exi¡s +('sfCڋxt', +çl£ +è&& +sfCڋxt +:: + `hasIn¡ªû +(è&& + `is_objeù +( +$»que¡ + = sfCڋxt:: + `g‘In¡ªû +()-> + `g‘Reque¡ +()è&& is_objeù( +$»¥Ú£ + = sfCڋxt::g‘In¡ªû()-> + `g‘Re¥Ú£ +())) + +136 +$di¥©ch” + = +sfCڋxt +:: + `g‘In¡ªû +()-> + `g‘Ev’tDi¥©ch” +(); + +138 ià( +sfCÚfig +:: + `g‘ +('sf_logging_enabled')) + +140 +$di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +( +$exû±iÚ +, '­¶iÿtiÚ.log', + `¬¿y +($exû±iÚ-> + `g‘Mes§ge +(), '´iܙy' => +sfLogg” +:: +ERR +))); + +143 +$ev’t + = +$di¥©ch” +-> + `nÙifyUÁž +( +Ãw + + `sfEv’t +( +$exû±iÚ +, 'application.throw_exception')); + +144 ià( +$ev’t +-> + `isProûs£d +()) + +149 ià( +$»¥Ú£ +-> + `g‘StusCode +() < 300) + +152 +$»¥Ú£ +-> + `£tStusCode +(500); + +155 +$»¥Ú£ +-> + `£tCڋÁTy³ +('text/html'); + +157 ià(! +sfCÚfig +:: + `g‘ +('sf_test')) + +159 + `fܗch + ( +$»¥Ú£ +-> + `g‘H‰pH—d”s +(è +as + +$Çme + => +$v®ue +) + +161 + `h—d” +( +$Çme +.': '. +$v®ue +); + +165 +$code + = +$»¥Ú£ +-> + `g‘StusCode +(); + +166 +$‹xt + = +$»¥Ú£ +-> + `g‘StusText +(); + +168 +$fÜm© + = +$»que¡ +-> + `g‘Reque¡FÜm© +(); + +169 ià(! +$fÜm© +) + +171 +$fÜm© + = 'html'; + +174 ià( +$mimeTy³ + = +$»que¡ +-> + `g‘MimeTy³ +( +$fÜm© +)) + +176 +$»¥Ú£ +-> + `£tCڋÁTy³ +( +$mimeTy³ +); + +182 ià(! +sfCÚfig +:: + `g‘ +('sf_test')) + +184 + `h—d” +('CڋÁ-Ty³:ext/html; ch¬£t='. +sfCÚfig +:: + `g‘ +('sf_charset', 'utf-8')); + +189 ià(! +sfCÚfig +:: + `g‘ +('sf_debug')) + +191 ià( +$‹m¶©e + = +£lf +:: + `g‘Tem¶©eP©hFÜE¼Ü +( +$fÜm© +, +çl£ +)) + +193 +šþude + +$‹m¶©e +; + +199 ià(0 =ð + `¡ºÿ£cmp +( +PHP_SAPI +, 'cli', 3)) + +201 +$fÜm© + = 'txt'; + +204 +$mes§ge + = +nuÎ + ==ð +$exû±iÚ +-> + `g‘Mes§ge +() ? 'n/a' : $exception->getMessage(); + +205 +$Çme + = + `g‘_þass +( +$exû±iÚ +); + +206 +$Œaûs + = +£lf +:: + `g‘T¿ûs +( +$exû±iÚ +, +$fÜm© +); + +209 +$sf_£‰šgs + = ''; + +210 +$£‰šgsTabË + = +$»que¡TabË + = +$»¥Ú£TabË + = +$glob®sTabË + = +$u£rTabË + = ''; + +211 ià( + `þass_exi¡s +('sfCڋxt', +çl£ +è&& +sfCڋxt +:: + `hasIn¡ªû +()) + +213 +$cڋxt + = +sfCڋxt +:: + `g‘In¡ªû +(); + +214 +$£‰šgsTabË + = +£lf +:: + `fÜm©A¼ayAsHtml +( +sfDebug +:: + `£‰šgsAsA¼ay +()); + +215 +$»que¡TabË + = +£lf +:: + `fÜm©A¼ayAsHtml +( +sfDebug +:: + `»que¡AsA¼ay +( +$cڋxt +-> + `g‘Reque¡ +())); + +216 +$»¥Ú£TabË + = +£lf +:: + `fÜm©A¼ayAsHtml +( +sfDebug +:: + `»¥Ú£AsA¼ay +( +$cڋxt +-> + `g‘Re¥Ú£ +())); + +217 +$u£rTabË + = +£lf +:: + `fÜm©A¼ayAsHtml +( +sfDebug +:: + `u£rAsA¼ay +( +$cڋxt +-> + `g‘U£r +())); + +218 +$glob®sTabË + = +£lf +:: + `fÜm©A¼ayAsHtml +( +sfDebug +:: + `glob®sAsA¼ay +()); + +221 ià( + `is£t +( +$»¥Ú£ +) && $response) + +223 +$»¥Ú£ +-> + `£ndH‰pH—d”s +(); + +226 ià( +$‹m¶©e + = +£lf +:: + `g‘Tem¶©eP©hFÜE¼Ü +( +$fÜm© +, +Œue +)) + +228 ià( + `is£t +( +$di¥©ch” +)) + +230 + `ob_¡¬t +(); + +231 +šþude + +$‹m¶©e +; + +232 +$cڋÁ + = + `ob_g‘_þ—n +(); + +234 +$ev’t + = +$di¥©ch” +-> + `fž‹r +( +Ãw + + `sfEv’t +( +$»¥Ú£ +, '»¥Ú£.fž‹r_cڋÁ'), +$cڋÁ +); + +236 +echo + +$ev’t +-> + `g‘R‘uºV®ue +(); + +240 +šþude + +$‹m¶©e +; + +245 + } +} + +256  +public + +funùiÚ + + $g‘Tem¶©eP©hFÜE¼Ü +( +$fÜm© +, +$debug +) + +258 +$‹m¶©eP©hs + = + `¬¿y +( + +259 +sfCÚfig +:: + `g‘ +('sf_app_config_dir').'/error', + +260 +sfCÚfig +:: + `g‘ +('sf_config_dir').'/error', + +261 + `dœÇme +( +__FILE__ +).'/data', + +264 +$‹m¶©e + = + `¥rštf +('%s.%s.php', +$debug + ? 'exû±iÚ' : '”rÜ', +$fÜm© +); + +265 + `fܗch + ( +$‹m¶©eP©hs + +as + +$·th +) + +267 ià( +nuÎ + !=ð +$·th + && + `is_»adabË +( +$fže + = $·th.'/'. +$‹m¶©e +)) + +269  +$fže +; + +273  +çl£ +; + +274 + } +} + +284  +´Ùeùed + +funùiÚ + +g‘T¿ûs +( +$exû±iÚ +, +$fÜm© + = 'txt') + +286 +$ŒaûD©a + = +$exû±iÚ +-> +g‘T¿û +(); + +287 +¬¿y_unshiá +( +$ŒaûD©a +, +¬¿y +( + +289 'fže' => +$exû±iÚ +-> +g‘Fže +(è!ð +nuÎ + ? $exception->getFile() :‚ull, + +290 'lše' => +$exû±iÚ +-> +g‘Lše +(è!ð +nuÎ + ? $exception->getLine() :‚ull, + +291 '¬gs' => +¬¿y +(), + +294 + g$Œaûs + = +¬¿y +(); + +295 ià( + g$fÜm© + == 'html') + +297 +$lšeFÜm© + = 'at %s%s%s(%s)
    in %s†ine %s ...
      %s
    '; + +301 + g$lšeFÜm© + = 'at %s%s%s(%s) in %s†ine %s'; + +304  + g$i + = 0, + g$couÁ + = +couÁ +( +$ŒaûD©a +); $i < $count; $i++) + +306 + g$lše + = +is£t +( +$ŒaûD©a +[ +$i +]['lše']è? $ŒaûD©a[$i]['lše'] : +nuÎ +; + +307 + g$fže + = +is£t +( +$ŒaûD©a +[ +$i +]['fže']è? $ŒaûD©a[$i]['fže'] : +nuÎ +; + +308 + g$¬gs + = +is£t +( +$ŒaûD©a +[ +$i +]['¬gs']è? $ŒaûD©a[$i]['¬gs'] : +¬¿y +(); + +309 + g$Œaûs +[] = +¥rštf +( +$lšeFÜm© +, + +310 ( +is£t +( +$ŒaûD©a +[ +$i +]['class']) ? $traceData[$i]['class'] : ''), + +311 ( +is£t +( +$ŒaûD©a +[ +$i +]['type']) ? $traceData[$i]['type'] : ''), + +312 +$ŒaûD©a +[ +$i +]['function'], + +313 +£lf +:: +fÜm©Args +( +$¬gs +, +çl£ +, +$fÜm© +), + +314 +£lf +:: +fÜm©Fže +( +$fže +, +$lše +, +$fÜm© +, +nuÎ + ==ð$fž? 'n/a' : +sfDebug +:: +sh܋nFžeP©h +($file)), + +315 +nuÎ + ==ð +$lše + ? 'n/a' : $line, + +316 'Œaû_'. +$i +, + +317 'Œaû_'. +$i +, + +318 +$i + == 0 ? 'block' : 'none', + +319 +£lf +:: +fžeExû½t +( +$fže +, +$lše +) + +323  + g$Œaûs +; + +333  +´Ùeùed + +funùiÚ + + $fÜm©A¼ayAsHtml +( +$v®ues +) + +335  '<´e>'. +£lf +:: + `esÿ³ +(@ +sfYaml +:: + `dump +( +$v®ues +)).''; + +336 + } +} + +346  +´Ùeùed + +funùiÚ + + $fžeExû½t +( +$fže +, +$lše +) + +348 ià( + `is_»adabË +( +$fže +)) + +350 +$cڋÁ + = + `´eg_¥l™ +('##', + `´eg_»¶aû +('/^(.*)<\/code>$/s', '$1', + `highlight_fže +( +$fže +, +Œue +))); + +352 +$lšes + = + `¬¿y +(); + +353  +$i + = + `max +( +$lše + - 3, 1), +$max + = + `mš +($lš+ 3, + `couÁ +( +$cڋÁ +)); $i <= $max; $i++) + +355 +$lšes +[] = ''. +$cڋÁ +[$i - 1].''; + +358  '<Þ s¹="'. + `max +( +$lše + - 3, 1).'">'. + `im¶ode +("\n", +$lšes +).''; + +360 + } +} + +371  +´Ùeùed + +funùiÚ + +fÜm©Args +( +$¬gs +, +$sšgË + = +çl£ +, +$fÜm© + = 'html') + +373 +$»suÉ + = +¬¿y +(); + +375 +$sšgË + +ªd + + g$¬gs + = +¬¿y +( +$¬gs +); + +377 +fܗch + ( +$¬gs + +as + +$key + => +$v®ue +) + +379 ià( +is_objeù +( +$v®ue +)) + +381 +$fÜm©‹dV®ue + = ( +$fÜm© + =ð'html' ? 'objeù' : 'objeù'). +¥rštf +("('%s')", +g‘_þass +( +$v®ue +)); + +383 ià( +is_¬¿y +( +$v®ue +)) + +385 + g$fÜm©‹dV®ue + = ( +$fÜm© + =ð'html' ? '¬¿y' : '¬¿y'). +¥rštf +("(%s)", +£lf +:: +fÜm©Args +( +$v®ue +)); + +387 ià( +is_¡ršg +( +$v®ue +)) + +389 + g$fÜm©‹dV®ue + = ( +$fÜm© + =ð'html' ? +¥rštf +("'%s'", +£lf +:: +esÿ³ +( +$v®ue +)) : "'$value'"); + +391 ià( + gnuÎ + ==ð +$v®ue +) + +393 +$fÜm©‹dV®ue + = ( +$fÜm© + == 'html' ? 'null' : 'null'); + +397 + g$fÜm©‹dV®ue + = +$v®ue +; + +400 + g$»suÉ +[] = +is_št +( +$key +è? +$fÜm©‹dV®ue + : +¥rštf +("'%s' => %s", +£lf +:: +esÿ³ +($key), $formattedValue); + +403  +im¶ode +(', ', +$»suÉ +); + +416  +´Ùeùed + +funùiÚ + +fÜm©Fže +( +$fže +, +$lše +, +$fÜm© + = 'html', +$‹xt + = +nuÎ +) + +418 ià( +nuÎ + ==ð +$‹xt +) + +420 +$‹xt + = +$fže +; + +423 ià('html' =ð +$fÜm© + && +$fže + && +$lše + && +$lškFÜm© + = +sfCÚfig +:: +g‘ +('sf_fže_lšk_fÜm©', +ši_g‘ +('xdebug.file_link_format'))) + +425 + g$lšk + = +¡¹r +( +$lškFÜm© +, +¬¿y +('%f' => +$fže +, '%l' => +$lše +)); + +426 + g$‹xt + = +¥rštf +('<¨h»f="%s"™Ë="ClickØÝ’hi fže" cÏss="fže_lšk">%s', +$lšk +, +$‹xt +); + +429  + g$‹xt +; + +439  +´Ùeùed + +funùiÚ + + $esÿ³ +( +$v®ue +) + +441 ià(! + `is_¡ršg +( +$v®ue +)) + +443  +$v®ue +; + +446  + `html¥ecŸlch¬s +( +$v®ue +, +ENT_QUOTES +, +sfCÚfig +:: + `g‘ +('sf_charset', 'UTF-8')); + +447 + } +} + + @lib/vendor/symfony/lib/exception/sfFactoryException.class.php + +1 +cڋxt +-> + `g‘ModuËName +()è&& (sfCÚfig::g‘('sf_logš_aùiÚ'è=ð$this->cڋxt-> + `g‘AùiÚName +()) + +36 ( +sfCÚfig +:: + `g‘ +('sf_£cu»_moduË'è=ð +$this +-> +cڋxt +-> + `g‘ModuËName +()è&& (sfCÚfig::g‘('sf_£cu»_aùiÚ'è=ð$this->cڋxt-> + `g‘AùiÚName +()) + +39 +$fž‹rChaš +-> + `execu‹ +(); + +47 ià(! +$this +-> +cڋxt +-> + `g‘U£r +()-> + `isAuth’tiÿ‹d +()) + +49 ià( +sfCÚfig +:: + `g‘ +('sf_logging_enabled')) + +51 +$this +-> +cڋxt +-> + `g‘Ev’tDi¥©ch” +()-> + `nÙify +( +Ãw + + `sfEv’t +($this, '­¶iÿtiÚ.log', + `¬¿y +( + `¥rštf +('AùiÚ "%s/%s"„equœe auth’tiÿtiÚ, fÜw¬dšgØ"%s/%s"', $this->cڋxt-> + `g‘ModuËName +(), $this->cڋxt-> + `g‘AùiÚName +(), +sfCÚfig +:: + `g‘ +('sf_login_module'), sfConfig::get('sf_login_action'))))); + +55 +$this +-> + `fÜw¬dToLogšAùiÚ +(); + +59 +$üed’tŸl + = +$this +-> + `g‘U£rC»d’tŸl +(); + +60 ià( +nuÎ + !=ð +$üed’tŸl + && ! +$this +-> +cڋxt +-> + `g‘U£r +()-> + `hasC»d’tŸl +($credential)) + +62 ià( +sfCÚfig +:: + `g‘ +('sf_logging_enabled')) + +64 +$this +-> +cڋxt +-> + `g‘Ev’tDi¥©ch” +()-> + `nÙify +( +Ãw + + `sfEv’t +($this, '­¶iÿtiÚ.log', + `¬¿y +( + `¥rštf +('AùiÚ "%s/%s"„equœe üed’tŸl "%s", fÜw¬dšgØ"%s/%s"', $this->cڋxt-> + `g‘ModuËName +(), $this->cڋxt-> + `g‘AùiÚName +(), +sfYaml +:: + `dump +( +$üed’tŸl +, 0), +sfCÚfig +:: + `g‘ +('sf_secure_module'), sfConfig::get('sf_secure_action'))))); + +68 +$this +-> + `fÜw¬dToSecu»AùiÚ +(); + +72 +$fž‹rChaš +-> + `execu‹ +(); + +80 +´Ùeùed + +funùiÚ + + $fÜw¬dToSecu»AùiÚ +() + +82 +$this +-> +cڋxt +-> + `g‘CڌÞËr +()-> + `fÜw¬d +( +sfCÚfig +:: + `g‘ +('sf_secure_module'), sfConfig::get('sf_secure_action')); + +84 +throw + +Ãw + + `sfStÝExû±iÚ +(); + +85 + } +} + +92 +´Ùeùed + +funùiÚ + + $fÜw¬dToLogšAùiÚ +() + +94 +$this +-> +cڋxt +-> + `g‘CڌÞËr +()-> + `fÜw¬d +( +sfCÚfig +:: + `g‘ +('sf_login_module'), sfConfig::get('sf_login_action')); + +96 +throw + +Ãw + + `sfStÝExû±iÚ +(); + +97 + } +} + +104 +´Ùeùed + +funùiÚ + + $g‘U£rC»d’tŸl +() + +106  +$this +-> +cڋxt +-> + `g‘CڌÞËr +()-> + `g‘AùiÚSck +()-> + `g‘La¡EÁry +()-> + `g‘AùiÚIn¡ªû +()-> + `g‘C»d’tŸl +(); + +107 + } +} + + @lib/vendor/symfony/lib/filter/sfCacheFilter.class.php + +1 +ÿcheMªag” + = +$cڋxt +-> + `g‘V›wCacheMªag” +(); + +43 +$this +-> +»que¡ + = +$cڋxt +-> + `g‘Reque¡ +(); + +44 +$this +-> +»¥Ú£ + = +$cڋxt +-> + `g‘Re¥Ú£ +(); + +45 +$this +-> +routšg + = +$cڋxt +-> + `g‘Routšg +(); + +53 +public + +funùiÚ + + $execu‹ +( +$fž‹rChaš +) + +56 ià(! +sfCÚfig +:: + `g‘ +('sf_cache')) + +58 +$fž‹rChaš +-> + `execu‹ +(); + +63 ià( +$this +-> + `execu‹BefÜeExecutiÚ +()) + +65 +$fž‹rChaš +-> + `execu‹ +(); + +68 +$this +-> + `execu‹BefÜeR’d”šg +(); + +69 + } +} + +71 +public + +funùiÚ + + $execu‹BefÜeExecutiÚ +() + +73 +$uri + = +$this +-> +ÿcheMªag” +-> + `g‘Cu¼’tCacheKey +(); + +75 ià( +nuÎ + ==ð +$uri +) + +77  +Œue +; + +81 +$ÿch—bË + = +$this +-> +ÿcheMªag” +-> + `isCach—bË +( +$uri +); + +82 ià( +$ÿch—bË + && +$this +-> +ÿcheMªag” +-> + `w™hLayout +( +$uri +)) + +84 +$šCache + = +$this +-> +ÿcheMªag” +-> + `g‘PageCache +( +$uri +); + +85 +$this +-> +ÿche +[ +$uri +] = +$šCache +; + +87 ià( +$šCache +) + +90 +$this +-> +»¥Ú£ + = $this-> +cڋxt +-> + `g‘Re¥Ú£ +(); + +93  +çl£ +; + +97  +Œue +; + +98 + } +} + +103 +public + +funùiÚ + + $execu‹BefÜeR’d”šg +() + +106 ià(200 !ð +$this +-> +»¥Ú£ +-> + `g‘StusCode +()) + +111 +$uri + = +$this +-> +ÿcheMªag” +-> + `g‘Cu¼’tCacheKey +(); + +114 ià( + `is£t +( +$this +-> +ÿche +[ +$uri +]è&& +çl£ + === $this->cache[$uri]) + +116 +$this +-> + `£tCacheExpœ©iÚ +( +$uri +); + +117 +$this +-> + `£tCacheV®id©iÚ +( +$uri +); + +120 + `fܗch + ( +$this +-> +ÿcheMªag” +-> + `g‘V¬y +( +$uri +, '·ge'è +as + +$v¬y +) + +122 +$this +-> +»¥Ú£ +-> + `addV¬yH‰pH—d” +( +$v¬y +); + +125 +$this +-> +ÿcheMªag” +-> + `£tPageCache +( +$uri +); + +129 +$this +-> + `checkCacheV®id©iÚ +(); + +130 + } +} + +137 +´Ùeùed + +funùiÚ + + $£tCacheExpœ©iÚ +( +$uri +) + +143 ià(! +$liãtime + = +$this +-> +ÿcheMªag” +-> + `g‘Cl›ÁLiãTime +( +$uri +, 'page')) + +148 ià( +$this +-> +»¥Ú£ +-> + `hasH‰pH—d” +('Last-Modified')) + +153 ià(! +$this +-> +»¥Ú£ +-> + `hasH‰pH—d” +('Expires')) + +155 +$this +-> +»¥Ú£ +-> + `£tH‰pH—d” +('Expœes', $this->»¥Ú£-> + `g‘D©e +( + `time +(è+ +$liãtime +), +çl£ +); + +156 +$this +-> +»¥Ú£ +-> + `addCacheCڌÞH‰pH—d” +('max-age', +$liãtime +); + +158 + } +} + +166 +´Ùeùed + +funùiÚ + + $£tCacheV®id©iÚ +( +$uri +) + +171 ià( +$this +-> +ÿcheMªag” +-> + `g‘Cl›ÁLiãTime +( +$uri +, 'page')) + +176 ià(! +$this +-> +»¥Ú£ +-> + `hasH‰pH—d” +('Last-Modified')) + +178 +$this +-> +»¥Ú£ +-> + `£tH‰pH—d” +('La¡-Modif›d', $this->»¥Ú£-> + `g‘D©e +( + `time +()), +çl£ +); + +181 ià( +sfCÚfig +:: + `g‘ +('sf_etag')) + +183 +$‘ag + = '"'. + `md5 +( +$this +-> +»¥Ú£ +-> + `g‘CڋÁ +()).'"'; + +184 +$this +-> +»¥Ú£ +-> + `£tH‰pH—d” +('ETag', +$‘ag +); + +186 + } +} + +191 +´Ùeùed + +funùiÚ + + $checkCacheV®id©iÚ +() + +194 ià( +sfCÚfig +:: + `g‘ +('sf_etag')) + +196 +$‘ag + = '"'. + `md5 +( +$this +-> +»¥Ú£ +-> + `g‘CڋÁ +()).'"'; + +198 ià( +$this +-> +»que¡ +-> + `g‘H‰pH—d” +('IF_NONE_MATCH'è=ð +$‘ag +) + +200 +$this +-> +»¥Ú£ +-> + `£tStusCode +(304); + +201 +$this +-> +»¥Ú£ +-> + `£tH—d”OÆy +( +Œue +); + +203 ià( +sfCÚfig +:: + `g‘ +('sf_logging_enabled')) + +205 +$this +-> +cڋxt +-> + `g‘Ev’tDi¥©ch” +()-> + `nÙify +( +Ãw + + `sfEv’t +($this, '­¶iÿtiÚ.log', + `¬¿y +('ETag matches If-None-Match (send 304)'))); + +212 ià( +$this +-> +»¥Ú£ +-> + `hasH‰pH—d” +('La¡-Modif›d'è&& (! +sfCÚfig +:: + `g‘ +('sf_debug') || sfConfig::get('sf_test'))) + +214 +$Ï¡Modif›d + = +$this +-> +»¥Ú£ +-> + `g‘H‰pH—d” +('Last-Modified'); + +215 ià( +$this +-> +»que¡ +-> + `g‘H‰pH—d” +('IF_MODIFIED_SINCE'è=ð +$Ï¡Modif›d +) + +217 +$this +-> +»¥Ú£ +-> + `£tStusCode +(304); + +218 +$this +-> +»¥Ú£ +-> + `£tH—d”OÆy +( +Œue +); + +220 ià( +sfCÚfig +:: + `g‘ +('sf_logging_enabled')) + +222 +$this +-> +cڋxt +-> + `g‘Ev’tDi¥©ch” +()-> + `nÙify +( +Ãw + + `sfEv’t +($this, '­¶iÿtiÚ.log', + `¬¿y +('Last-Modified matches If-Modified-Since (send 304)'))); + +226 + } +} + + @lib/vendor/symfony/lib/filter/sfCommonFilter.class.php + +1 + `execu‹ +(); + +32 +$»¥Ú£ + = +$this +-> +cڋxt +-> + `g‘Re¥Ú£ +(); + +35 +$cڋÁ + = +$»¥Ú£ +-> + `g‘CڋÁ +(); + +36 ià( +çl£ + !=ð( +$pos + = + `¡½os +( +$cڋÁ +, ''))) + +38 +$this +-> +cڋxt +-> + `g‘CÚfigu¿tiÚ +()-> + `lßdH–³rs +( + `¬¿y +('Tag', 'Asset')); + +39 +$html + = ''; + +40 ià(! +sfCÚfig +:: + `g‘ +('symfÚy.as£t.javasüts_šþuded', +çl£ +)) + +42 +$html + .ð + `g‘_javasüts +( +$»¥Ú£ +); + +44 ià(! +sfCÚfig +:: + `g‘ +('symfÚy.as£t.¡yËsh“ts_šþuded', +çl£ +)) + +46 +$html + .ð + `g‘_¡yËsh“ts +( +$»¥Ú£ +); + +49 ià( +$html +) + +51 +$»¥Ú£ +-> + `£tCڋÁ +( + `sub¡r +( +$cڋÁ +, 0, +$pos +). +$html +.substr($content, $pos)); + +55 +sfCÚfig +:: + `£t +('symfÚy.as£t.javasüts_šþuded', +çl£ +); + +56 +sfCÚfig +:: + `£t +('symfÚy.as£t.¡yËsh“ts_šþuded', +çl£ +); + +58 + } +} + + @lib/vendor/symfony/lib/filter/sfExecutionFilter.class.php + +1 +cڋxt +-> + `g‘CڌÞËr +()-> + `g‘AùiÚSck +()-> + `g‘La¡EÁry +()-> + `g‘AùiÚIn¡ªû +(); + +38 ià( +sfCÚfig +:: + `g‘ +('sf_debug') && sfConfig::get('sf_logging_enabled')) + +40 +$tim” + = +sfTim”Mªag” +:: + `g‘Tim” +( + `¥rštf +('AùiÚ "%s/%s"', +$aùiÚIn¡ªû +-> + `g‘ModuËName +(), $aùiÚIn¡ªû-> + `g‘AùiÚName +())); + +42 +$v›wName + = +$this +-> + `hªdËAùiÚ +( +$fž‹rChaš +, +$aùiÚIn¡ªû +); + +44 +$tim” +-> + `addTime +(); + +45 +$tim” + = +sfTim”Mªag” +:: + `g‘Tim” +( + `¥rštf +('V›w "%s" fÜ "%s/%s"', +$v›wName +, +$aùiÚIn¡ªû +-> + `g‘ModuËName +(), $aùiÚIn¡ªû-> + `g‘AùiÚName +())); + +47 +$this +-> + `hªdËV›w +( +$fž‹rChaš +, +$aùiÚIn¡ªû +, +$v›wName +); + +49 +$tim” +-> + `addTime +(); + +53 +$v›wName + = +$this +-> + `hªdËAùiÚ +( +$fž‹rChaš +, +$aùiÚIn¡ªû +); + +54 +$this +-> + `hªdËV›w +( +$fž‹rChaš +, +$aùiÚIn¡ªû +, +$v›wName +); + +66 +´Ùeùed + +funùiÚ + + $hªdËAùiÚ +( +$fž‹rChaš +, +$aùiÚIn¡ªû +) + +68 ià( +sfCÚfig +:: + `g‘ +('sf_cache')) + +70 +$uri + = +$this +-> +cڋxt +-> + `g‘V›wCacheMªag” +()-> + `g‘Cu¼’tCacheKey +(); + +71 ià( +nuÎ + !=ð +$uri + && +$this +-> +cڋxt +-> + `g‘V›wCacheMªag” +()-> + `hasAùiÚCache +($uri)) + +74  +sfV›w +:: +SUCCESS +; + +78  +$this +-> + `execu‹AùiÚ +( +$aùiÚIn¡ªû +); + +79 + } +} + +88 +´Ùeùed + +funùiÚ + + $execu‹AùiÚ +( +$aùiÚIn¡ªû +) + +91 +$aùiÚIn¡ªû +-> + `´eExecu‹ +(); + +92 +$v›wName + = +$aùiÚIn¡ªû +-> + `execu‹ +( +$this +-> +cڋxt +-> + `g‘Reque¡ +()); + +93 +$aùiÚIn¡ªû +-> + `po¡Execu‹ +(); + +95  +nuÎ + ==ð +$v›wName + ? +sfV›w +:: +SUCCESS + : $viewName; + +96 + } +} + +105 +´Ùeùed + +funùiÚ + + $hªdËV›w +( +$fž‹rChaš +, +$aùiÚIn¡ªû +, +$v›wName +) + +107  +$v›wName +) + +109  +sfV›w +:: +HEADER_ONLY +: + +110 +$this +-> +cڋxt +-> + `g‘Re¥Ú£ +()-> + `£tH—d”OÆy +( +Œue +); + +112  +sfV›w +:: +NONE +: + +116 +$this +-> + `execu‹V›w +( +$aùiÚIn¡ªû +-> + `g‘ModuËName +(), $aùiÚIn¡ªû-> + `g‘AùiÚName +(), +$v›wName +, $aùiÚIn¡ªû-> + `g‘V¬HÞd” +()-> + `g‘AÎ +()); + +117 + } +} + +135 +´Ùeùed + +funùiÚ + + $execu‹V›w +( +$moduËName +, +$aùiÚName +, +$v›wName +, +$v›wA‰ribu‹s +) + +137 +$cڌÞËr + = +$this +-> +cڋxt +-> + `g‘CڌÞËr +(); + +140 +$v›w + = +$cڌÞËr +-> + `g‘V›w +( +$moduËName +, +$aùiÚName +, +$v›wName +); + +143 +$v›w +-> + `execu‹ +(); + +146 +$v›w +-> + `g‘A‰ribu‹HÞd” +()-> + `add +( +$v›wA‰ribu‹s +); + +149  +$cڌÞËr +-> + `g‘R’d”Mode +()) + +151  +sfV›w +:: +RENDER_NONE +: + +154  +sfV›w +:: +RENDER_CLIENT +: + +155 +$v›wD©a + = +$v›w +-> + `»nd” +(); + +156 +$this +-> +cڋxt +-> + `g‘Re¥Ú£ +()-> + `£tCڋÁ +( +$v›wD©a +); + +159  +sfV›w +:: +RENDER_VAR +: + +160 +$v›wD©a + = +$v›w +-> + `»nd” +(); + +161 +$cڌÞËr +-> + `g‘AùiÚSck +()-> + `g‘La¡EÁry +()-> + `£tP»£Á©iÚ +( +$v›wD©a +); + +164 + } +} + + @lib/vendor/symfony/lib/filter/sfFilter.class.php + +1 + `š™Ÿlize +( +$cڋxt +, +$·¿m‘”s +); + +48 +public + +funùiÚ + + `š™Ÿlize +( +$cڋxt +, +$·¿m‘”s + = + $¬¿y +()) + +50 +$this +-> +cڋxt + = +$cڋxt +; + +52 +$this +-> +·¿m‘”HÞd” + = +Ãw + + `sfP¬am‘”HÞd” +(); + +53 +$this +-> +·¿m‘”HÞd” +-> + `add +( +$·¿m‘”s +); + +55  +Œue +; + +56 + } +} + +63 +´Ùeùed + +funùiÚ + + $isFœ¡C®l +() + +65 +$þass + = + `g‘_þass +( +$this +); + +66 ià( + `is£t +( +£lf +:: +$fž‹rC®Ëd +[ +$þass +])) + +68  +çl£ +; + +72 +£lf +:: +$fž‹rC®Ëd +[ +$þass +] = +Œue +; + +74  +Œue +; + +76 + } +} + +83 +public + +fš® + +funùiÚ + + $g‘Cڋxt +() + +85  +$this +-> +cڋxt +; + +86 + } +} + +93 +public + +funùiÚ + + $g‘P¬am‘”HÞd” +() + +95  +$this +-> +·¿m‘”HÞd” +; + +96 + } +} + +112 +public + +funùiÚ + + $g‘P¬am‘” +( +$Çme +, +$deçuÉ + = +nuÎ +) + +114  +$this +-> +·¿m‘”HÞd” +-> + `g‘ +( +$Çme +, +$deçuÉ +); + +115 + } +} + +130 +public + +funùiÚ + + $hasP¬am‘” +( +$Çme +) + +132  +$this +-> +·¿m‘”HÞd” +-> + `has +( +$Çme +); + +133 + } +} + +147 +public + +funùiÚ + + $£tP¬am‘” +( +$Çme +, +$v®ue +) + +149  +$this +-> +·¿m‘”HÞd” +-> + `£t +( +$Çme +, +$v®ue +); + +150 + } +} + + @lib/vendor/symfony/lib/filter/sfFilterChain.class.php + +1 + `g‘CÚfigCache +()-> + `checkCÚfig +('moduËs/'. +$aùiÚIn¡ªû +-> + `g‘ModuËName +().'/config/filters.yml')); + +40 +public + +funùiÚ + + $execu‹ +() + +43 ++ +$this +-> +šdex +; + +45 ià( +$this +-> +šdex + < + `couÁ +($this-> +chaš +)) + +47 ià( +sfCÚfig +:: + `g‘ +('sf_logging_enabled')) + +49 +sfCڋxt +:: + `g‘In¡ªû +()-> + `g‘Ev’tDi¥©ch” +()-> + `nÙify +( +Ãw + + `sfEv’t +( +$this +, '­¶iÿtiÚ.log', + `¬¿y +( + `¥rštf +('Executšg fž‹¸"%s"', + `g‘_þass +($this-> +chaš +[$this-> +šdex +]))))); + +53 +$this +-> +chaš +[$this-> +šdex +]-> + `execu‹ +($this); + +55 + } +} + +64 +public + +funùiÚ + + $hasFž‹r +( +$þass +) + +66 + `fܗch + ( +$this +-> +chaš + +as + +$fž‹r +) + +68 ià( +$fž‹r + +š¡ªûof + +$þass +) + +70  +Œue +; + +74  +çl£ +; + +75 + } +} + +82 +public + +funùiÚ + ( +$fž‹r +) + +84 +$this +-> +chaš +[] = +$fž‹r +; + +85 + } +} + + @lib/vendor/symfony/lib/filter/sfRenderingFilter.class.php + +1 + `execu‹ +(); + +36 +$»¥Ú£ + = +$this +-> +cڋxt +-> + `g‘Re¥Ú£ +(); + +39 ià( +sfFÜm +:: + `hasToSŒšgExû±iÚ +()) + +41 +throw + +sfFÜm +:: + `g‘ToSŒšgExû±iÚ +(); + +43 ià( +sfFÜmF›ld +:: + `hasToSŒšgExû±iÚ +()) + +45 +throw + +sfFÜmF›ld +:: + `g‘ToSŒšgExû±iÚ +(); + +49 ià( +sfV›w +:: +RENDER_VAR + !ð +$this +-> +cڋxt +-> + `g‘CڌÞËr +()-> + `g‘R’d”Mode +()) + +51 +$»¥Ú£ +-> + `£nd +(); + +54 + } +} + + @lib/vendor/symfony/lib/form/addon/sfFormFilter.class.php + +1 +isNew +; + +73 +public + +funùiÚ + + $g‘Objeù +() + +75  +$this +-> +objeù +; + +76 + } +} + +87 +public + +funùiÚ + + $bšdAndSave +( +$š‹dV®ues +, +$š‹dFžes + = +nuÎ +, +$cÚ + =‚ull) + +89 +$this +-> + `bšd +( +$š‹dV®ues +, +$š‹dFžes +); + +90 ià( +$this +-> + `isV®id +()) + +92 +$this +-> + `§ve +( +$cÚ +); + +94  +Œue +; + +97  +çl£ +; + +98 + } +} + +114 +public + +funùiÚ + + $§ve +( +$cÚ + = +nuÎ +) + +116 ià(! +$this +-> + `isV®id +()) + +118 +throw + +$this +-> + `g‘E¼ÜSchema +(); + +121 ià( +nuÎ + ==ð +$cÚ +) + +123 +$cÚ + = +$this +-> + `g‘CÚÃùiÚ +(); + +126 +Œy + + +128 +$cÚ +-> + `begšT¿n§ùiÚ +(); + +130 +$this +-> + `doSave +( +$cÚ +); + +132 +$cÚ +-> + `comm™ +(); + +134 + `ÿtch + ( +Exû±iÚ + +$e +) + +136 +$cÚ +-> + `rÞlBack +(); + +138 +throw + +$e +; + +141  +$this +-> + `g‘Objeù +(); + +142 + } +} + +152 +´Ùeùed + +funùiÚ + + $doSave +( +$cÚ + = +nuÎ +) + +154 ià( +nuÎ + ==ð +$cÚ +) + +156 +$cÚ + = +$this +-> + `g‘CÚÃùiÚ +(); + +159 +$this +-> + `upd©eObjeù +(); + +161 +$this +-> + `g‘Objeù +()-> + `§ve +( +$cÚ +); + +164 +$this +-> + `§veEmbeddedFÜms +( +$cÚ +); + +165 + } +} + +174 +public + +funùiÚ + + $upd©eObjeù +( +$v®ues + = +nuÎ +) + +176 ià( +nuÎ + ==ð +$v®ues +) + +178 +$v®ues + = +$this +-> +v®ues +; + +181 +$v®ues + = +$this +-> + `´oûssV®ues +($values); + +183 +$this +-> + `doUpd©eObjeù +( +$v®ues +); + +186 +$this +-> + `upd©eObjeùEmbeddedFÜms +( +$v®ues +); + +188  +$this +-> + `g‘Objeù +(); + +189 + } +} + +197 +public + +funùiÚ + + $upd©eObjeùEmbeddedFÜms +( +$v®ues +, +$fÜms + = +nuÎ +) + +199 ià( +nuÎ + ==ð +$fÜms +) + +201 +$fÜms + = +$this +-> +embeddedFÜms +; + +204 + `fܗch + ( +$fÜms + +as + +$Çme + => +$fÜm +) + +206 ià(! + `is£t +( +$v®ues +[ +$Çme +]è|| ! + `is_¬¿y +($values[$name])) + +211 ià( +$fÜm + +š¡ªûof + +sfFÜmObjeù +) + +213 +$fÜm +-> + `upd©eObjeù +( +$v®ues +[ +$Çme +]); + +217 +$this +-> + `upd©eObjeùEmbeddedFÜms +( +$v®ues +[ +$Çme +], +$fÜm +-> + `g‘EmbeddedFÜms +()); + +220 + } +} + +228 +public + +funùiÚ + + $§veEmbeddedFÜms +( +$cÚ + = +nuÎ +, +$fÜms + =‚ull) + +230 ià( +nuÎ + ==ð +$cÚ +) + +232 +$cÚ + = +$this +-> + `g‘CÚÃùiÚ +(); + +235 ià( +nuÎ + ==ð +$fÜms +) + +237 +$fÜms + = +$this +-> +embeddedFÜms +; + +240 + `fܗch + ( +$fÜms + +as + +$fÜm +) + +242 ià( +$fÜm + +š¡ªûof + +sfFÜmObjeù +) + +244 +$fÜm +-> + `g‘Objeù +()-> + `§ve +( +$cÚ +); + +245 +$fÜm +-> + `§veEmbeddedFÜms +( +$cÚ +); + +249 +$this +-> + `§veEmbeddedFÜms +( +$cÚ +, +$fÜm +-> + `g‘EmbeddedFÜms +()); + +252 + } +} + +269 +public + +funùiÚ + +»nd”FÜmTag +( +$u¾ +, +¬¿y + +$©Œibu‹s + = + $¬¿y +()) + +271 ià(! + `is£t +( +$©Œibu‹s +['method'])) + +273 +$©Œibu‹s +['m‘hod'] = +$this +-> + `isNew +() ? 'post' : 'put'; + +276  +·»Á +:: + `»nd”FÜmTag +( +$u¾ +, +$©Œibu‹s +); + +277 + } +} + +279 +´Ùeùed + +funùiÚ + + $ÿm–ize +( +$‹xt +) + +281  + `´eg_»¶aû +( + `¬¿y +('#/(.?)#e', '/(^|_|-)+(.)/e'),‡¼ay("'::'.¡¹ouµ”('\\1')", "¡¹ouµ”('\\2')"), +$‹xt +); + +282 + } +} + + @lib/vendor/symfony/lib/form/addon/sfFormSymfony.class.php + +1 +nÙify +( +Ãw + +sfEv’t +( +$this +, 'form.post_configure')); + +46  +public + +funùiÚ + + $£tEv’tDi¥©ch” +( +sfEv’tDi¥©ch” + +$di¥©ch” + = +nuÎ +) + +48 +£lf +:: +$di¥©ch” + = $dispatcher; + +49 + } +} + +56  +public + +funùiÚ + + $g‘Ev’tDi¥©ch” +() + +58  +£lf +:: +$di¥©ch” +; + +59 + } +} + +66 +´Ùeùed + +funùiÚ + + $doBšd +( +¬¿y + +$v®ues +) + +68 ià( +£lf +:: +$di¥©ch” +) + +70 +$v®ues + = +£lf +:: +$di¥©ch” +-> + `fž‹r +( +Ãw + + `sfEv’t +( +$this +, 'fÜm.fž‹r_v®ues'), $v®ues)-> + `g‘R‘uºV®ue +(); + +73 +Œy + + +75 +·»Á +:: + `doBšd +( +$v®ues +); + +77 + `ÿtch + ( +sfV®id©ÜE¼Ü + +$”rÜ +) + +79 ià( +£lf +:: +$di¥©ch” +) + +81 +£lf +:: +$di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +( +$this +, 'fÜm.v®id©iÚ_”rÜ', + `¬¿y +('”rÜ' => +$”rÜ +))); + +84 +throw + +$”rÜ +; + +86 + } +} + +96 +public + +funùiÚ + + $__ÿÎ +( +$m‘hod +, +$¬gum’ts +) + +98 ià( +£lf +:: +$di¥©ch” +) + +100 +$ev’t + = +£lf +:: +$di¥©ch” +-> + `nÙifyUÁž +( +Ãw + + `sfEv’t +( +$this +, 'fÜm.m‘hod_nÙ_found', + `¬¿y +('m‘hod' => +$m‘hod +, '¬gum’ts' => +$¬gum’ts +))); + +101 ià( +$ev’t +-> + `isProûs£d +()) + +103  +$ev’t +-> + `g‘R‘uºV®ue +(); + +107 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('C®ÈtØundefšed m‘hod %s::%s.', + `g‘_þass +( +$this +), +$m‘hod +)); + +108 + } +} + + @lib/vendor/symfony/lib/form/sfForm.class.php + +1 +£tDeçuÉs +( +$deçuÉs +); + +62 + g$this +-> + gÝtiÚs + = +$ÝtiÚs +; + +63 + g$this +-> + gloÿlCSRFSeü‘ + = +$CSRFSeü‘ +; + +65 + g$this +-> + gv®id©ÜSchema + = +Ãw + +sfV®id©ÜSchema +(); + +66 + g$this +-> + gwidg‘Schema + = +Ãw + +sfWidg‘FÜmSchema +(); + +67 + g$this +-> + g”rÜSchema + = +Ãw + +sfV®id©ÜE¼ÜSchema +( +$this +-> +v®id©ÜSchema +); + +69 + g$this +-> +£tup +(); + +70 + g$this +-> +cÚfigu» +(); + +72 + g$this +-> +addCSRFPrÙeùiÚ +( +$this +-> +loÿlCSRFSeü‘ +); + +73 + g$this +-> +»£tFÜmF›lds +(); + +83 +public + +funùiÚ + +__toSŒšg +() + +85 + gŒy + + +87  + g$this +-> +»nd” +(); + +89 +ÿtch + ( +Exû±iÚ + +$e +) + +91 + g£lf +:: +£tToSŒšgExû±iÚ +( +$e +); + +94  'Exû±iÚ: '. + g$e +-> +g‘Mes§ge +(); + +101 +public + +funùiÚ + +cÚfigu» +() + +114 +public + +funùiÚ + +£tup +() + +125 +public + +funùiÚ + +»nd” +( +$©Œibu‹s + = +¬¿y +()) + +127  +$this +-> +g‘FÜmF›ldSchema +()-> +»nd” +( +$©Œibu‹s +); + +138 +public + +funùiÚ + +»nd”Usšg +( +$fÜm©‹rName +, +$©Œibu‹s + = +¬¿y +()) + +140 +$cu¼’tFÜm©‹rName + = +$this +-> +widg‘Schema +-> +g‘FÜmFÜm©‹rName +(); + +142 + g$this +-> + gwidg‘Schema +-> +£tFÜmFÜm©‹rName +( +$fÜm©‹rName +); + +144 + g$ouut + = +$this +-> +»nd” +( +$©Œibu‹s +); + +146 + g$this +-> + gwidg‘Schema +-> +£tFÜmFÜm©‹rName +( +$cu¼’tFÜm©‹rName +); + +148  + g$ouut +; + +160 +public + +funùiÚ + +»nd”Hidd’F›lds +( +$»cursive + = +Œue +) + +162  +$this +-> +g‘FÜmF›ldSchema +()-> +»nd”Hidd’F›lds +( +$»cursive +); + +170 +public + +funùiÚ + +»nd”Glob®E¼Üs +() + +172  + g$this +-> + gwidg‘Schema +-> +g‘FÜmFÜm©‹r +()-> +fÜm©E¼ÜsFÜRow +( +$this +-> +g‘Glob®E¼Üs +()); + +180 +public + +funùiÚ + +hasGlob®E¼Üs +() + +182  ( + gBoޗn +è +couÁ +( +$this +-> +g‘Glob®E¼Üs +()); + +190 +public + +funùiÚ + +g‘Glob®E¼Üs +() + +192  + g$this +-> + gwidg‘Schema +-> +g‘Glob®E¼Üs +( +$this +-> +g‘E¼ÜSchema +()); + +203 +public + +funùiÚ + +bšd +( +¬¿y + +$š‹dV®ues + = +nuÎ +,‡¼ay +$š‹dFžes + =‚ull) + +205 +$this +-> +š‹dV®ues + = +$š‹dV®ues +; + +206 + g$this +-> + gš‹dFžes + = +$š‹dFžes +; + +207 + g$this +-> + gisBound + = +Œue +; + +208 + g$this +-> +»£tFÜmF›lds +(); + +210 ià( + gnuÎ + ==ð +$this +-> +š‹dV®ues +) + +212 +$this +-> +š‹dV®ues + = +¬¿y +(); + +215 ià( + gnuÎ + ==ð +$this +-> +š‹dFžes +) + +217 ià( +$this +-> +isMuɝ¬t +()) + +219 +throw + +Ãw + +Inv®idArgum’tExû±iÚ +('This form is multipart, which means you‚eedo supply‡ files‡rray‡she bind() method second‡rgument.'); + +222 + g$this +-> + gš‹dFžes + = +¬¿y +(); + +225 + gŒy + + +227 + g$this +-> +doBšd +( +£lf +:: +d“pA¼ayUniÚ +( +$this +-> +š‹dV®ues +, s–f:: +cÚv”tFžeInfÜm©iÚ +($this-> +š‹dFžes +))); + +228 + g$this +-> + g”rÜSchema + = +Ãw + +sfV®id©ÜE¼ÜSchema +( +$this +-> +v®id©ÜSchema +); + +231 +un£t +( +$this +-> +v®ues +[ +£lf +:: +$CSRFF›ldName +]); + +233 +ÿtch + ( +sfV®id©ÜE¼ÜSchema + +$e +) + +235 + g$this +-> + gv®ues + = +¬¿y +(); + +236 + g$this +-> + g”rÜSchema + = +$e +; + +245 +´Ùeùed + +funùiÚ + +doBšd +( +¬¿y + +$v®ues +) + +247 + g$this +-> + gv®ues + = +$this +-> +v®id©ÜSchema +-> +þ—n +( +$v®ues +); + +255 +public + +funùiÚ + +isBound +() + +257  + g$this +-> + gisBound +; + +265 +public + +funùiÚ + +g‘Taš‹dV®ues +() + +267 ià(! + g$this +-> + gisBound +) + +269  +¬¿y +(); + +272  + g$this +-> + gš‹dV®ues +; + +282 +public + +funùiÚ + +isV®id +() + +284 ià(! + g$this +-> + gisBound +) + +286  + gçl£ +; + +289  0 =ð +couÁ +( +$this +-> +”rÜSchema +); + +299 +public + +funùiÚ + +hasE¼Üs +() + +301 ià(! + g$this +-> + gisBound +) + +303  + gçl£ +; + +306  +couÁ +( +$this +-> +”rÜSchema +) > 0; + +316 +public + +funùiÚ + +g‘V®ues +() + +318  + g$this +-> + gisBound + ? $this-> + gv®ues + : +¬¿y +(); + +329 +public + +funùiÚ + +g‘V®ue +( +$f›ld +) + +331  ( + g$this +-> + gisBound + && +is£t +( +$this +-> +v®ues +[ +$f›ld +])è? $this-> + gv®ues +[$f›ld] : +nuÎ +; + +341 +public + +funùiÚ + +g‘Name +() + +343 ià('[%s]' !ð +sub¡r +( +$ÇmeFÜm© + = +$this +-> +widg‘Schema +-> +g‘NameFÜm© +(), -4)) + +345  + gçl£ +; + +348  +¡r_»¶aû +('[%s]', '', +$ÇmeFÜm© +); + +356 +public + +funùiÚ + +g‘E¼ÜSchema +() + +358  + g$this +-> + g”rÜSchema +; + +368 +public + +funùiÚ + +embedFÜm +( +$Çme +, +sfFÜm + +$fÜm +, +$decÜ©Ü + = +nuÎ +) + +370 +$Çme + = ( +¡ršg +) $name; + +371 ià( + gŒue + ==ð +$this +-> +isBound +(è|| +Œue + ==ð +$fÜm +->isBound()) + +373 +throw + +Ãw + +LogicExû±iÚ +('A bound form cannot beƒmbedded'); + +376 + g$this +-> + gembeddedFÜms +[ +$Çme +] = +$fÜm +; + +378 + g$fÜm + = +þÚe + +$fÜm +; + +379 +un£t +( +$fÜm +[ +£lf +:: +$CSRFF›ldName +]); + +381 + g$widg‘Schema + = +$fÜm +-> +g‘Widg‘Schema +(); + +383 + g$this +-> +£tDeçuÉ +( +$Çme +, +$fÜm +-> +g‘DeçuÉs +()); + +385 + g$decÜ©Ü + = +nuÎ + ==ð +$decÜ©Ü + ? +$widg‘Schema +-> +g‘FÜmFÜm©‹r +()-> +g‘DecÜ©ÜFÜm© +() : $decorator; + +387 + g$this +-> + gwidg‘Schema +[ +$Çme +] = +Ãw + +sfWidg‘FÜmSchemaDecÜ©Ü +( +$widg‘Schema +, +$decÜ©Ü +); + +388 + g$this +-> + gv®id©ÜSchema +[ +$Çme +] = +$fÜm +-> +g‘V®id©ÜSchema +(); + +390 + g$this +-> +»£tFÜmF›lds +(); + +405 +public + +funùiÚ + +embedFÜmFÜEach +( +$Çme +, +sfFÜm + +$fÜm +, +$n +, +$decÜ©Ü + = +nuÎ +, +$šÃrDecÜ©Ü + =‚uÎ, +$ÝtiÚs + = +¬¿y +(), +$©Œibu‹s + =‡¼ay(), +$Ïb–s + =‡rray()) + +407 ià( +Œue + ==ð +$this +-> +isBound +(è||ru==ð +$fÜm +->isBound()) + +409 +throw + +Ãw + +LogicExû±iÚ +('A bound form cannot beƒmbedded'); + +412 + g$this +-> + gembeddedFÜms +[ +$Çme +] = +Ãw + +sfFÜm +(); + +414 + g$fÜm + = +þÚe + +$fÜm +; + +415 +un£t +( +$fÜm +[ +£lf +:: +$CSRFF›ldName +]); + +417 + g$widg‘Schema + = +$fÜm +-> +g‘Widg‘Schema +(); + +420 + g$deçuÉs + = +¬¿y +(); + +421  + g$i + = 0; $˜< + g$n +; $i++) + +423 + g$deçuÉs +[ +$i +] = +$fÜm +-> +g‘DeçuÉs +(); + +425 + g$this +-> + gembeddedFÜms +[ +$Çme +]-> +embedFÜm +( +$i +, +$fÜm +); + +428 + g$this +-> +£tDeçuÉ +( +$Çme +, +$deçuÉs +); + +430 + g$decÜ©Ü + = +nuÎ + ==ð +$decÜ©Ü + ? +$widg‘Schema +-> +g‘FÜmFÜm©‹r +()-> +g‘DecÜ©ÜFÜm© +() : $decorator; + +431 + g$šÃrDecÜ©Ü + = +nuÎ + ==ð +$šÃrDecÜ©Ü + ? +$widg‘Schema +-> +g‘FÜmFÜm©‹r +()-> +g‘DecÜ©ÜFÜm© +() : $innerDecorator; + +433 + g$this +-> + gwidg‘Schema +[ +$Çme +] = +Ãw + +sfWidg‘FÜmSchemaDecÜ©Ü +Òew +sfWidg‘FÜmSchemaFÜEach +Òew sfWidg‘FÜmSchemaDecÜ©Ü( +$widg‘Schema +, +$šÃrDecÜ©Ü +), +$n +, +$ÝtiÚs +, +$©Œibu‹s +), +$decÜ©Ü +); + +434 + g$this +-> + gv®id©ÜSchema +[ +$Çme +] = +Ãw + +sfV®id©ÜSchemaFÜEach +( +$fÜm +-> +g‘V®id©ÜSchema +(), +$n +); + +437  + g$i + = 0; $˜< + g$n +; $i++) + +439 ià(! +is£t +( +$Ïb–s +[ +$i +])) + +441 + g$Ïb–s +[ +$i +] = +¥rštf +('% (%s)', +$this +-> +widg‘Schema +-> +g‘FÜmFÜm©‹r +()-> +g’”©eLab–Name +( +$Çme +), $i); + +445 + g$this +-> + gwidg‘Schema +[ +$Çme +]-> +£tLab–s +( +$Ïb–s +); + +447 + g$this +-> +»£tFÜmF›lds +(); + +455 +public + +funùiÚ + +g‘EmbeddedFÜms +() + +457  + g$this +-> + gembeddedFÜms +; + +469 +public + +funùiÚ + +g‘EmbeddedFÜm +( +$Çme +) + +471 ià(! +is£t +( +$this +-> +embeddedFÜms +[ +$Çme +])) + +473 +throw + +Ãw + +Inv®idArgum’tExû±iÚ +( +¥rštf +('Th”i nØembedded "%s" fÜm.', +$Çme +)); + +476  + g$this +-> + gembeddedFÜms +[ +$Çme +]; + +487 +public + +funùiÚ + +m”geFÜm +( +sfFÜm + +$fÜm +) + +489 ià( + gŒue + ==ð +$this +-> +isBound +(è|| +Œue + ==ð +$fÜm +->isBound()) + +491 +throw + +Ãw + +LogicExû±iÚ +('A bound form cannot be merged'); + +494 + g$fÜm + = +þÚe + +$fÜm +; + +495 +un£t +( +$fÜm +[ +£lf +:: +$CSRFF›ldName +]); + +497 + g$this +-> + gdeçuÉs + = +$fÜm +-> +g‘DeçuÉs +(è+ +$this +-> +deçuÉs +; + +499 +fܗch + ( +$fÜm +-> +g‘Widg‘Schema +()-> +g‘Pos™iÚs +(è +as + +$f›ld +) + +501 + g$this +-> + gwidg‘Schema +[ +$f›ld +] = +$fÜm +-> +g‘Widg‘ +($field); + +504 +fܗch + ( +$fÜm +-> +g‘V®id©ÜSchema +()-> +g‘F›lds +(è +as + +$f›ld + => +$v®id©Ü +) + +506 +$this +-> +v®id©ÜSchema +[ +$f›ld +] = +$v®id©Ü +; + +509 + g$this +-> +g‘Widg‘Schema +()-> +£tLab–s +( +$fÜm +->g‘Widg‘Schema()-> +g‘Lab–s +(è+ +$this +->getWidgetSchema()->getLabels()); + +510 + g$this +-> +g‘Widg‘Schema +()-> +£tH–ps +( +$fÜm +->g‘Widg‘Schema()-> +g‘H–ps +(è+ +$this +->getWidgetSchema()->getHelps()); + +512 + g$this +-> +m”geP»V®id©Ü +( +$fÜm +-> +g‘V®id©ÜSchema +()-> +g‘P»V®id©Ü +()); + +513 + g$this +-> +m”gePo¡V®id©Ü +( +$fÜm +-> +g‘V®id©ÜSchema +()-> +g‘Po¡V®id©Ü +()); + +515 + g$this +-> +»£tFÜmF›lds +(); + +523 +public + +funùiÚ + +m”geP»V®id©Ü +( +sfV®id©ÜBa£ + +$v®id©Ü + = +nuÎ +) + +525 ià( +nuÎ + ==ð +$v®id©Ü +) + +530 ià( + gnuÎ + ==ð +$this +-> +v®id©ÜSchema +-> +g‘P»V®id©Ü +()) + +532 +$this +-> +v®id©ÜSchema +-> +£tP»V®id©Ü +( +$v®id©Ü +); + +536 + g$this +-> + gv®id©ÜSchema +-> +£tP»V®id©Ü +( +Ãw + +sfV®id©ÜAnd +( +¬¿y +( + +537 +$this +-> +v®id©ÜSchema +-> +g‘P»V®id©Ü +(), + +538 +$v®id©Ü +, + +548 +public + +funùiÚ + +m”gePo¡V®id©Ü +( +sfV®id©ÜBa£ + +$v®id©Ü + = +nuÎ +) + +550 ià( +nuÎ + ==ð +$v®id©Ü +) + +555 ià( + gnuÎ + ==ð +$this +-> +v®id©ÜSchema +-> +g‘Po¡V®id©Ü +()) + +557 +$this +-> +v®id©ÜSchema +-> +£tPo¡V®id©Ü +( +$v®id©Ü +); + +561 + g$this +-> + gv®id©ÜSchema +-> +£tPo¡V®id©Ü +( +Ãw + +sfV®id©ÜAnd +( +¬¿y +( + +562 +$this +-> +v®id©ÜSchema +-> +g‘Po¡V®id©Ü +(), + +563 +$v®id©Ü +, + +575 +public + +funùiÚ + +£tV®id©Üs +( +¬¿y + +$v®id©Üs +) + +577 + g$this +-> +£tV®id©ÜSchema +( +Ãw + +sfV®id©ÜSchema +( +$v®id©Üs +)); + +579  + g$this +; + +590 +public + +funùiÚ + +£tV®id©Ü +( +$Çme +, +sfV®id©ÜBa£ + +$v®id©Ü +) + +592 + g$this +-> + gv®id©ÜSchema +[ +$Çme +] = +$v®id©Ü +; + +594 + g$this +-> +»£tFÜmF›lds +(); + +596  + g$this +; + +606 +public + +funùiÚ + +g‘V®id©Ü +( +$Çme +) + +608 ià(! +is£t +( +$this +-> +v®id©ÜSchema +[ +$Çme +])) + +610 +throw + +Ãw + +Inv®idArgum’tExû±iÚ +( +¥rštf +('Thv®id©Ü "%s" dÛ nكxi¡.', +$Çme +)); + +613  + g$this +-> + gv®id©ÜSchema +[ +$Çme +]; + +623 +public + +funùiÚ + +£tV®id©ÜSchema +( +sfV®id©ÜSchema + +$v®id©ÜSchema +) + +625 + g$this +-> + gv®id©ÜSchema + = +$v®id©ÜSchema +; + +627 + g$this +-> +»£tFÜmF›lds +(); + +629  + g$this +; + +637 +public + +funùiÚ + +g‘V®id©ÜSchema +() + +639  + g$this +-> + gv®id©ÜSchema +; + +649 +public + +funùiÚ + +£tWidg‘s +( +¬¿y + +$widg‘s +) + +651 + g$this +-> +£tWidg‘Schema +( +Ãw + +sfWidg‘FÜmSchema +( +$widg‘s +)); + +653  + g$this +; + +664 +public + +funùiÚ + +£tWidg‘ +( +$Çme +, +sfWidg‘FÜm + +$widg‘ +) + +666 + g$this +-> + gwidg‘Schema +[ +$Çme +] = +$widg‘ +; + +668 + g$this +-> +»£tFÜmF›lds +(); + +670  + g$this +; + +680 +public + +funùiÚ + +g‘Widg‘ +( +$Çme +) + +682 ià(! +is£t +( +$this +-> +widg‘Schema +[ +$Çme +])) + +684 +throw + +Ãw + +Inv®idArgum’tExû±iÚ +( +¥rštf +('Thwidg‘ "%s" dÛ nكxi¡.', +$Çme +)); + +687  + g$this +-> + gwidg‘Schema +[ +$Çme +]; + +697 +public + +funùiÚ + +£tWidg‘Schema +( +sfWidg‘FÜmSchema + +$widg‘Schema +) + +699 + g$this +-> + gwidg‘Schema + = +$widg‘Schema +; + +701 + g$this +-> +»£tFÜmF›lds +(); + +703  + g$this +; + +711 +public + +funùiÚ + +g‘Widg‘Schema +() + +713  + g$this +-> + gwidg‘Schema +; + +721 +public + +funùiÚ + +g‘StyËsh“ts +() + +723  + g$this +-> + gwidg‘Schema +-> +g‘StyËsh“ts +(); + +731 +public + +funùiÚ + +g‘JavaSüts +() + +733  + g$this +-> + gwidg‘Schema +-> +g‘JavaSüts +(); + +741 +public + +funùiÚ + +g‘O±iÚs +() + +743  + g$this +-> + gÝtiÚs +; + +754 +public + +funùiÚ + +£tO±iÚ +( +$Çme +, +$v®ue +) + +756 + g$this +-> + gÝtiÚs +[ +$Çme +] = +$v®ue +; + +758  + g$this +; + +769 +public + +funùiÚ + +g‘O±iÚ +( +$Çme +, +$deçuÉ + = +nuÎ +) + +771  +is£t +( +$this +-> +ÝtiÚs +[ +$Çme +]è? $this->ÝtiÚs[$Çme] : +$deçuÉ +; + +782 +public + +funùiÚ + +£tDeçuÉ +( +$Çme +, +$deçuÉ +) + +784 + g$this +-> + gdeçuÉs +[ +$Çme +] = +$deçuÉ +; + +786 + g$this +-> +»£tFÜmF›lds +(); + +788  + g$this +; + +798 +public + +funùiÚ + +g‘DeçuÉ +( +$Çme +) + +800  +is£t +( +$this +-> +deçuÉs +[ +$Çme +]è? + g$this +-> + gdeçuÉs +[$Çme] : +nuÎ +; + +810 +public + +funùiÚ + +hasDeçuÉ +( +$Çme +) + +812  +¬¿y_key_exi¡s +( +$Çme +, +$this +-> +deçuÉs +); + +824 +public + +funùiÚ + +£tDeçuÉs +( +$deçuÉs +) + +826 + g$this +-> + gdeçuÉs + = +nuÎ + ==ð +$deçuÉs + ? +¬¿y +() : $defaults; + +828 ià( + g$this +-> +isCSRFPrÙeùed +()) + +830 + g$this +-> +£tDeçuÉ +( +£lf +:: +$CSRFF›ldName +, +$this +-> +g‘CSRFTok’ +($this-> +loÿlCSRFSeü‘ + ? $this->loÿlCSRFSeü‘ : s–f:: +$CSRFSeü‘ +)); + +833 + g$this +-> +»£tFÜmF›lds +(); + +835  + g$this +; + +843 +public + +funùiÚ + +g‘DeçuÉs +() + +845  + g$this +-> + gdeçuÉs +; + +855 +public + +funùiÚ + +addCSRFPrÙeùiÚ +( +$£ü‘ + = +nuÎ +) + +857 ià( +nuÎ + ==ð +$£ü‘ +) + +859 +$£ü‘ + = +$this +-> +loÿlCSRFSeü‘ +; + +862 ià( + gçl£ + ==ð +$£ü‘ + || ( +nuÎ + ==ð$£ü‘ && +çl£ + ==ð +£lf +:: +$CSRFSeü‘ +)) + +864  +$this +; + +867 ià( + gnuÎ + ==ð +$£ü‘ +) + +869 ià( +nuÎ + ==ð +£lf +:: +$CSRFSeü‘ +) + +871 +£lf +:: +$CSRFSeü‘ + = +md5 +( +__FILE__ +. +php_uÇme +()); + +874 + g$£ü‘ + = +£lf +:: +$CSRFSeü‘ +; + +877 + g$tok’ + = +$this +-> +g‘CSRFTok’ +( +$£ü‘ +); + +879 + g$this +-> + gv®id©ÜSchema +[ +£lf +:: +$CSRFF›ldName +] = +Ãw + +sfV®id©ÜCSRFTok’ +( +¬¿y +('tok’' => +$tok’ +)); + +880 + g$this +-> + gwidg‘Schema +[ +£lf +:: +$CSRFF›ldName +] = +Ãw + +sfWidg‘FÜmIÅutHidd’ +(); + +881 + g$this +-> +£tDeçuÉ +( +£lf +:: +$CSRFF›ldName +, +$tok’ +); + +883  + g$this +; + +896 +public + +funùiÚ + +g‘CSRFTok’ +( +$£ü‘ + = +nuÎ +) + +898 ià( +nuÎ + ==ð +$£ü‘ +) + +900 +$£ü‘ + = +$this +-> +loÿlCSRFSeü‘ + ? $this->loÿlCSRFSeü‘ : +£lf +:: +$CSRFSeü‘ +; + +903  +md5 +( +$£ü‘ +. +£ssiÚ_id +(). +g‘_þass +( +$this +)); + +909 +public + +funùiÚ + +isCSRFPrÙeùed +() + +911  + gnuÎ + !=ð +$this +-> +v®id©ÜSchema +[ +£lf +:: +$CSRFF›ldName +]; + +919  +public + +funùiÚ + +£tCSRFF›ldName +( +$Çme +) + +921 + g£lf +:: +$CSRFF›ldName + = +$Çme +; + +929  +public + +funùiÚ + +g‘CSRFF›ldName +() + +931  + g£lf +:: +$CSRFF›ldName +; + +939 +public + +funùiÚ + +’abËLoÿlCSRFPrÙeùiÚ +( +$£ü‘ + = +nuÎ +) + +941 +$this +-> +loÿlCSRFSeü‘ + = +nuÎ + ==ð +$£ü‘ + ? +Œue + : $secret; + +947 +public + +funùiÚ + +di§bËLoÿlCSRFPrÙeùiÚ +() + +949 + g$this +-> + gloÿlCSRFSeü‘ + = +çl£ +; + +961  +public + +funùiÚ + +’abËCSRFPrÙeùiÚ +( +$£ü‘ + = +nuÎ +) + +963 +£lf +:: +$CSRFSeü‘ + = +$£ü‘ +; + +969  +public + +funùiÚ + +di§bËCSRFPrÙeùiÚ +() + +971 + g£lf +:: +$CSRFSeü‘ + = +çl£ +; + +979 +public + +funùiÚ + +isMuɝ¬t +() + +981  + g$this +-> + gwidg‘Schema +-> +ÃedsMuɝ¬tFÜm +(); + +999 +public + +funùiÚ + +»nd”FÜmTag +( +$u¾ +, +¬¿y + +$©Œibu‹s + =‡rray()) + +1001 +$©Œibu‹s +['aùiÚ'] = +$u¾ +; + +1002 + g$©Œibu‹s +['m‘hod'] = +is£t +( +$©Œibu‹s +['m‘hod']è? +¡¹Þow” +($attributes['method']) : 'post'; + +1003 ià( + g$this +-> +isMuɝ¬t +()) + +1005 + g$©Œibu‹s +['enctype'] = 'multipart/form-data'; + +1008 + g$html + = ''; + +1009 ià(! +š_¬¿y +( +$©Œibu‹s +['m‘hod'], +¬¿y +('get', 'post'))) + +1011 + g$html + = +$this +-> +g‘Widg‘Schema +()-> +»nd”Tag +('šput', +¬¿y +('ty³' => 'hidd’', 'Çme' => 'sf_m‘hod', 'v®ue' => +$©Œibu‹s +['m‘hod'], 'id' => +çl£ +)); + +1012 + g$©Œibu‹s +['method'] = 'post'; + +1015  +¥rštf +('', +$this +-> +g‘Widg‘Schema +()-> +©Œibu‹sToHtml +( +$©Œibu‹s +)). + g$html +; + +1018 +public + +funùiÚ + +»£tFÜmF›lds +() + +1020 + g$this +-> + gfÜmF›lds + = +¬¿y +(); + +1021 + g$this +-> + gfÜmF›ldSchema + = +nuÎ +; + +1031 +public + +funùiÚ + +off£tExi¡s +( +$Çme +) + +1033  +is£t +( +$this +-> +widg‘Schema +[ +$Çme +]); + +1043 +public + +funùiÚ + +off£tG‘ +( +$Çme +) + +1045 ià(! +is£t +( +$this +-> +fÜmF›lds +[ +$Çme +])) + +1047 ià(! + g$widg‘ + = +$this +-> +widg‘Schema +[ +$Çme +]) + +1049 +throw + +Ãw + +Inv®idArgum’tExû±iÚ +( +¥rštf +('Widg‘ "%s" dÛ nكxi¡.', +$Çme +)); + +1052 ià( + g$this +-> + gisBound +) + +1054 + g$v®ue + = +is£t +( +$this +-> +š‹dV®ues +[ +$Çme +]è? $this->š‹dV®ues[$Çme] : +nuÎ +; + +1056 ià( +is£t +( +$this +-> +deçuÉs +[ +$Çme +])) + +1058 + g$v®ue + = +$this +-> +deçuÉs +[ +$Çme +]; + +1062 + g$v®ue + = +$widg‘ + +š¡ªûof + +sfWidg‘FÜmSchema + ? $widg‘-> +g‘DeçuÉs +(è: $widg‘-> +g‘DeçuÉ +(); + +1065 + g$þass + = +$widg‘ + +š¡ªûof + +sfWidg‘FÜmSchema + ? 'sfFormFieldSchema' : 'sfFormField'; + +1067 + g$this +-> + gfÜmF›lds +[ +$Çme +] = +Ãw + +$þass +( +$widg‘ +, +$this +-> +g‘FÜmF›ldSchema +(), $Çme, +$v®ue +, $this-> +”rÜSchema +[$name]); + +1070  + g$this +-> + gfÜmF›lds +[ +$Çme +]; + +1081 +public + +funùiÚ + +off£tS‘ +( +$off£t +, +$v®ue +) + +1083 +throw + +Ãw + +LogicExû±iÚ +('Cannot update form fields.'); + +1093 +public + +funùiÚ + +off£tUn£t +( +$off£t +) + +1095 +un£t +( + +1096 +$this +-> +widg‘Schema +[ +$off£t +], + +1097 +$this +-> +v®id©ÜSchema +[ +$off£t +], + +1098 +$this +-> +deçuÉs +[ +$off£t +], + +1099 +$this +-> +š‹dV®ues +[ +$off£t +], + +1100 +$this +-> +v®ues +[ +$off£t +], + +1101 +$this +-> +embeddedFÜms +[ +$off£t +] + +1104 + g$this +-> +»£tFÜmF›lds +(); + +1115 +public + +funùiÚ + +u£F›lds +( +¬¿y + +$f›lds + =‡¼ay(), +$Üd”ed + = +Œue +) + +1117 +$hidd’ + = +¬¿y +(); + +1119 +fܗch + ( +$this + +as + +$Çme + => +$f›ld +) + +1121 ià( +$f›ld +-> +isHidd’ +()) + +1123 +$hidd’ +[] = +$Çme +; + +1125 ià(! +š_¬¿y +( +$Çme +, +$f›lds +)) + +1127 +un£t +( +$this +[ +$Çme +]); + +1131 ià( + g$Üd”ed +) + +1133 + g$this +-> + gwidg‘Schema +-> +£tPos™iÚs +( +¬¿y_m”ge +( +$f›lds +, +$hidd’ +)); + +1142 +public + +funùiÚ + +g‘FÜmF›ldSchema +() + +1144 ià( + gnuÎ + ==ð +$this +-> +fÜmF›ldSchema +) + +1146 +$v®ues + = +$this +-> +isBound + ? $this-> +š‹dV®ues + : $this-> +deçuÉs + + $this-> +widg‘Schema +-> +g‘DeçuÉs +(); + +1148 + g$this +-> + gfÜmF›ldSchema + = +Ãw + +sfFÜmF›ldSchema +( +$this +-> +widg‘Schema +, +nuÎ +,‚uÎ, +$v®ues +, $this-> +”rÜSchema +); + +1151  + g$this +-> + gfÜmF›ldSchema +; + +1157 +public + +funùiÚ + +»wšd +() + +1159 + g$this +-> + gf›ldNames + = +$this +-> +widg‘Schema +-> +g‘Pos™iÚs +(); + +1161 +»£t +( +$this +-> +f›ldNames +); + +1162 + g$this +-> + gcouÁ + = +couÁ +( +$this +-> +f›ldNames +); + +1170 +public + +funùiÚ + +key +() + +1172  +cu¼’t +( +$this +-> +f›ldNames +); + +1180 +public + +funùiÚ + +cu¼’t +() + +1182  + g$this +[ +cu¼’t +( +$this +-> +f›ldNames +)]; + +1188 +public + +funùiÚ + +Ãxt +() + +1190 +Ãxt +( +$this +-> +f›ldNames +); + +1191 -- + g$this +-> + gcouÁ +; + +1199 +public + +funùiÚ + +v®id +() + +1201  + g$this +-> + gcouÁ + > 0; + +1209 +public + +funùiÚ + +couÁ +() + +1211  +couÁ +( +$this +-> +g‘FÜmF›ldSchema +()); + +1223  +public + +funùiÚ + +cÚv”tFžeInfÜm©iÚ +( +¬¿y + +$š‹dFžes +) + +1225 + g$fžes + = +¬¿y +(); + +1226 +fܗch + ( +$š‹dFžes + +as + +$key + => +$d©a +) + +1228 +$fžes +[ +$key +] = +£lf +:: +fixPhpFžesA¼ay +( +$d©a +); + +1231  + g$fžes +; + +1234  +´Ùeùed + +funùiÚ + +fixPhpFžesA¼ay +( +$d©a +) + +1236 + g$fžeKeys + = +¬¿y +('error', 'name', 'size', 'tmp_name', 'type'); + +1237 + g$keys + = +¬¿y_keys +( +$d©a +); + +1238 +sÜt +( +$keys +); + +1240 ià( + g$fžeKeys + !ð +$keys + || ! +is£t +( +$d©a +['Çme']è|| ! +is_¬¿y +($data['name'])) + +1242  +$d©a +; + +1245 + g$fžes + = +$d©a +; + +1246 +fܗch + ( +$fžeKeys + +as + +$k +) + +1248 +un£t +( +$fžes +[ +$k +]); + +1250 +fܗch + ( +¬¿y_keys +( +$d©a +['Çme']è +as + +$key +) + +1252 + g$fžes +[ +$key +] = +£lf +:: +fixPhpFžesA¼ay +( +¬¿y +( + +1253 '”rÜ' => +$d©a +['”rÜ'][ +$key +], + +1254 'Çme' => +$d©a +['Çme'][ +$key +], + +1255 'ty³' => +$d©a +['ty³'][ +$key +], + +1256 'tmp_Çme' => +$d©a +['tmp_Çme'][ +$key +], + +1257 'size' => +$d©a +['size'][ +$key +], + +1261  + g$fžes +; + +1271  +public + +funùiÚ + +hasToSŒšgExû±iÚ +() + +1273  + gnuÎ + !=ð +£lf +:: +$toSŒšgExû±iÚ +; + +1283  +public + +funùiÚ + +g‘ToSŒšgExû±iÚ +() + +1285  + g£lf +:: +$toSŒšgExû±iÚ +; + +1295  +public + +funùiÚ + +£tToSŒšgExû±iÚ +( +Exû±iÚ + +$e +) + +1297 ià( + gnuÎ + ==ð +£lf +:: +$toSŒšgExû±iÚ +) + +1299 +£lf +:: +$toSŒšgExû±iÚ + = +$e +; + +1303 +public + +funùiÚ + +__þÚe +() + +1305 + g$this +-> + gwidg‘Schema + = +þÚe + +$this +-> +widg‘Schema +; + +1306 + g$this +-> + gv®id©ÜSchema + = +þÚe + +$this +-> +v®id©ÜSchema +; + +1309 ià( + g$this +-> +isBound +()) + +1311 + g$this +-> +bšd +( +$this +-> +š‹dV®ues +, $this-> +š‹dFžes +); + +1323  +´Ùeùed + +funùiÚ + +d“pA¼ayUniÚ +( +$¬¿y1 +, +$¬¿y2 +) + +1325 +fܗch + ( +$¬¿y2 + +as + +$key + => +$v®ue +) + +1327 ià( +is_¬¿y +( +$v®ue +è&& +is£t +( +$¬¿y1 +[ +$key +]) && is_array($array1[$key])) + +1329 +$¬¿y1 +[ +$key +] = +£lf +:: +d“pA¼ayUniÚ +($¬¿y1[$key], +$v®ue +); + +1333 + g$¬¿y1 +[ +$key +] = +$v®ue +; + +1337  + g$¬¿y1 +; + + @lib/vendor/symfony/lib/form/sfFormField.class.php + +1 +widg‘ + = +$widg‘ +; + +43 +$this +-> +·»Á + = +$·»Á +; + +44 +$this +-> +Çme + = +$Çme +; + +45 +$this +-> +v®ue + = +$v®ue +; + +46 +$this +-> +”rÜ + = +$”rÜ +; + +54 +public + +funùiÚ + + $__toSŒšg +() + +56 +Œy + + +58  +$this +-> + `»nd” +(); + +60 + `ÿtch + ( +Exû±iÚ + +$e +) + +62 +£lf +:: + `£tToSŒšgExû±iÚ +( +$e +); + +65  'Exû±iÚ: '. +$e +-> + `g‘Mes§ge +(); + +67 + } +} + +76  +public + +funùiÚ + + $hasToSŒšgExû±iÚ +() + +78  +nuÎ + !=ð +£lf +:: +$toSŒšgExû±iÚ +; + +79 + } +} + +88  +public + +funùiÚ + + $g‘ToSŒšgExû±iÚ +() + +90  +£lf +:: +$toSŒšgExû±iÚ +; + +91 + } +} + +100  +public + +funùiÚ + + $£tToSŒšgExû±iÚ +( +Exû±iÚ + +$e +) + +102 ià( +nuÎ + ==ð +£lf +:: +$toSŒšgExû±iÚ +) + +104 +£lf +:: +$toSŒšgExû±iÚ + = +$e +; + +106 + } +} + +115 +funùiÚ + +»nd” +( +$©Œibu‹s + = + $¬¿y +()) + +117 ià( +$this +-> +·»Á +) + +119  +$this +-> +·»Á +-> + `g‘Widg‘ +()-> + `»nd”F›ld +($this-> +Çme +, $this-> +v®ue +, +$©Œibu‹s +, $this-> +”rÜ +); + +123  +$this +-> +widg‘ +-> + `»nd” +($this-> +Çme +, $this-> +v®ue +, +$©Œibu‹s +, $this-> +”rÜ +); + +125 + } +} + +140 +public + +funùiÚ + +»nd”Row +( +$©Œibu‹s + = +¬¿y +(), +$Ïb– + = +nuÎ +, +$h–p + =‚ull) + +142 ià( +nuÎ + ==ð +$this +-> +·»Á +) + +144 +throw + +Ãw + +LogicExû±iÚ +( +¥rštf +('UÇbˁػnd”hrow fÜ "%s".', +$this +-> +Çme +)); + +147 + g$f›ld + = +$this +-> +·»Á +-> +g‘Widg‘ +()-> +»nd”F›ld +($this-> +Çme +, $this-> +v®ue +, ! +is_¬¿y +( +$©Œibu‹s +è? +¬¿y +(è: $©Œibu‹s, $this-> +”rÜ +); + +149 + g$”rÜ + = +$this +-> +”rÜ + +š¡ªûof + +sfV®id©ÜE¼ÜSchema + ? $this->”rÜ-> +g‘Glob®E¼Üs +() : $this->error; + +151 + g$h–p + = +nuÎ + ==ð +$h–p + ? +$this +-> +·»Á +-> +g‘Widg‘ +()-> +g‘H–p +($this-> +Çme +) : $help; + +153  +¡¹r +( +$this +-> +·»Á +-> +g‘Widg‘ +()-> +g‘FÜmFÜm©‹r +()-> +fÜm©Row +($this-> +»nd”Lab– +( +$Ïb– +), +$f›ld +, +$”rÜ +, +$h–p +), +¬¿y +('%hidden_fields%' => '')); + +163 +public + +funùiÚ + + $»nd”E¼Ü +() + +165 ià( +nuÎ + ==ð +$this +-> +·»Á +) + +167 +throw + +Ãw + + `LogicExû±iÚ +( + `¥rštf +('UÇbˁػnd”h”rÜ fÜ "%s".', +$this +-> +Çme +)); + +170 +$”rÜ + = +$this +-> + `g‘Widg‘ +(è +š¡ªûof + +sfWidg‘FÜmSchema + ? $this->g‘Widg‘()-> + `g‘Glob®E¼Üs +($this-> +”rÜ +) : $this->error; + +172  +$this +-> +·»Á +-> + `g‘Widg‘ +()-> + `g‘FÜmFÜm©‹r +()-> + `fÜm©E¼ÜsFÜRow +( +$”rÜ +); + +173 + } +} + +180 +public + +funùiÚ + + $»nd”H–p +() + +182 ià( +nuÎ + ==ð +$this +-> +·»Á +) + +184 +throw + +Ãw + + `LogicExû±iÚ +( + `¥rštf +('UÇbˁػnd”hh–°fÜ "%s".', +$this +-> +Çme +)); + +187  +$this +-> +·»Á +-> + `g‘Widg‘ +()-> + `g‘FÜmFÜm©‹r +()-> + `fÜm©H–p +($this->·»Á->g‘Widg‘()-> + `g‘H–p +($this-> +Çme +)); + +188 + } +} + +198 +public + +funùiÚ + +»nd”Lab– +( +$Ïb– + = +nuÎ +, +$©Œibu‹s + = + $¬¿y +()) + +200 ià( +nuÎ + ==ð +$this +-> +·»Á +) + +202 +throw + +Ãw + + `LogicExû±iÚ +( + `¥rštf +('UÇbˁػnd”hÏb– fÜ "%s".', +$this +-> +Çme +)); + +205 ià( +nuÎ + !=ð +$Ïb– +) + +207 +$cu¼’tLab– + = +$this +-> +·»Á +-> + `g‘Widg‘ +()-> + `g‘Lab– +($this-> +Çme +); + +208 +$this +-> +·»Á +-> + `g‘Widg‘ +()-> + `£tLab– +($this-> +Çme +, +$Ïb– +); + +211 +$html + = +$this +-> +·»Á +-> + `g‘Widg‘ +()-> + `g‘FÜmFÜm©‹r +()-> + `g’”©eLab– +($this-> +Çme +, +$©Œibu‹s +); + +213 ià( +nuÎ + !=ð +$Ïb– +) + +215 +$this +-> +·»Á +-> + `g‘Widg‘ +()-> + `£tLab– +($this-> +Çme +, +$cu¼’tLab– +); + +218  +$html +; + +219 + } +} + +226 +public + +funùiÚ + + $»nd”Lab–Name +() + +228 ià( +nuÎ + ==ð +$this +-> +·»Á +) + +230 +throw + +Ãw + + `LogicExû±iÚ +( + `¥rštf +('UÇbˁػnd”hÏb–‚amfÜ "%s".', +$this +-> +Çme +)); + +233  +$this +-> +·»Á +-> + `g‘Widg‘ +()-> + `g‘FÜmFÜm©‹r +()-> + `g’”©eLab–Name +($this-> +Çme +); + +234 + } +} + +241 +public + +funùiÚ + + $»nd”Name +() + +243  +$this +-> +·»Á + ? $this->·»Á-> + `g‘Widg‘ +()-> + `g’”©eName +($this-> +Çme +) : $this->name; + +244 + } +} + +251 +public + +funùiÚ + + $»nd”Id +() + +253  +$this +-> +widg‘ +-> + `g’”©eId +($this-> +·»Á + ? $this->·»Á-> + `g‘Widg‘ +()-> + `g’”©eName +($this-> +Çme +è: $this->Çme, $this-> +v®ue +); + +254 + } +} + +261 +public + +funùiÚ + + $isHidd’ +() + +263  +$this +-> +widg‘ +-> + `isHidd’ +(); + +264 + } +} + +271 +public + +funùiÚ + + $g‘Name +() + +273  +$this +-> +Çme +; + +274 + } +} + +281 +public + +funùiÚ + + $g‘V®ue +() + +283  +$this +-> +v®ue +; + +284 + } +} + +291 +public + +funùiÚ + + $g‘Widg‘ +() + +293  +$this +-> +widg‘ +; + +294 + } +} + +301 +public + +funùiÚ + + $g‘P¬’t +() + +303  +$this +-> +·»Á +; + +304 + } +} + +311 +public + +funùiÚ + + $g‘E¼Ü +() + +313  +$this +-> +”rÜ +; + +314 + } +} + +321 +public + +funùiÚ + + $hasE¼Ü +() + +323  +nuÎ + !=ð +$this +-> +”rÜ + && + `couÁ +($this->error); + +324 + } +} + + @lib/vendor/symfony/lib/form/sfFormFieldSchema.class.php + +1 + gf›ldNames + = +$widg‘ +-> +g‘Pos™iÚs +(); + +49 +public + +funùiÚ + +»nd”Hidd’F›lds +( +$»cursive + = +Œue +) + +51 +$ouut + = ''; + +53 +fܗch + ( +$this +-> +g‘Hidd’F›lds +( +$»cursive +è +as + +$f›ld +) + +55 + g$ouut + .ð +$f›ld +-> +»nd” +(); + +58  + g$ouut +; + +68 +public + +funùiÚ + +g‘Hidd’F›lds +( +$»cursive + = +Œue +) + +70 +$f›lds + = +¬¿y +(); + +72 +fܗch + ( +$this + +as + +$Çme + => +$f›ld +) + +74 ià( +$f›ld + +š¡ªûof + +sfFÜmF›ldSchema + && +$»cursive +) + +76 +$f›lds + = +¬¿y_m”ge +($f›lds, +$f›ld +-> +g‘Hidd’F›lds +( +$»cursive +)); + +78 ià( + g$f›ld +-> +isHidd’ +()) + +80 + g$f›lds +[] = +$f›ld +; + +84  + g$f›lds +; + +94 +public + +funùiÚ + +off£tExi¡s +( +$Çme +) + +96  +is£t +( +$this +-> +widg‘ +[ +$Çme +]); + +106 +public + +funùiÚ + +off£tG‘ +( +$Çme +) + +108 ià(! +is£t +( +$this +-> +f›lds +[ +$Çme +])) + +110 ià( + gnuÎ + ==ð +$widg‘ + = +$this +-> +widg‘ +[ +$Çme +]) + +112 +throw + +Ãw + +Inv®idArgum’tExû±iÚ +( +¥rštf +('Widg‘ "%s" dÛ nكxi¡.', +$Çme +)); + +115 + g$”rÜ + = +is£t +( +$this +-> +”rÜ +[ +$Çme +]è? $this->”rÜ[$Çme] : +nuÎ +; + +117 ià( +$widg‘ + +š¡ªûof + + gsfWidg‘FÜmSchema +) + +119 + g$þass + = 'sfFormFieldSchema'; + +121 ià( + g$”rÜ + && ! +$”rÜ + +š¡ªûof + + gsfV®id©ÜE¼ÜSchema +) + +123 + g$”rÜ + = +Ãw + +sfV®id©ÜE¼ÜSchema +( +$”rÜ +-> +g‘V®id©Ü +(), +¬¿y +($error)); + +128 + g$þass + = 'sfFormField'; + +131 + g$this +-> + gf›lds +[ +$Çme +] = +Ãw + +$þass +( +$widg‘ +, +$this +, $Çme, +is£t +($this-> +v®ue +[$Çme]è? $this->v®ue[$Çme] : +nuÎ +, +$”rÜ +); + +134  + g$this +-> + gf›lds +[ +$Çme +]; + +145 +public + +funùiÚ + +off£tS‘ +( +$off£t +, +$v®ue +) + +147 +throw + +Ãw + +LogicExû±iÚ +('Cannot update form fields (read-only).'); + +157 +public + +funùiÚ + +off£tUn£t +( +$off£t +) + +159 +throw + +Ãw + +LogicExû±iÚ +('Cannot„emove form fields (read-only).'); + +165 +public + +funùiÚ + +»wšd +() + +167 +»£t +( +$this +-> +f›ldNames +); + +168 + g$this +-> + gcouÁ + = +couÁ +( +$this +-> +f›ldNames +); + +176 +public + +funùiÚ + +key +() + +178  +cu¼’t +( +$this +-> +f›ldNames +); + +186 +public + +funùiÚ + +cu¼’t +() + +188  + g$this +[ +cu¼’t +( +$this +-> +f›ldNames +)]; + +194 +public + +funùiÚ + +Ãxt +() + +196 +Ãxt +( +$this +-> +f›ldNames +); + +197 -- + g$this +-> + gcouÁ +; + +205 +public + +funùiÚ + +v®id +() + +207  + g$this +-> + gcouÁ + > 0; + +215 +public + +funùiÚ + +couÁ +() + +217  +couÁ +( +$this +-> +f›ldNames +); + + @lib/vendor/symfony/lib/generator/sfGenerator.class.php + +1 + `š™Ÿlize +( +$g’”©ÜMªag” +); + +43 +public + +funùiÚ + + $š™Ÿlize +( +sfG’”©ÜMªag” + +$g’”©ÜMªag” +) + +45 +$this +-> +g’”©ÜMªag” + = +$g’”©ÜMªag” +; + +46 + } +} + +55 +ab¡¿ù + +public + +funùiÚ + +g’”©e +( +$·¿ms + = +¬¿y +()); + +63 +´Ùeùed + +funùiÚ + +g’”©ePhpFžes +( +$g’”©edModuËName +, +$fžes + = + $¬¿y +()) + +65 + `fܗch + ( +$fžes + +as + +$fže +) + +67 +$this +-> + `g‘G’”©ÜMªag” +()-> + `§ve +( +$g’”©edModuËName +.'/'. +$fže +, $this-> + `ev®Tem¶©e +($file)); + +69 + } +} + +78 +´Ùeùed + +funùiÚ + + $ev®Tem¶©e +( +$‹m¶©eFže +) + +80 +$‹m¶©eFže + = +$this +-> +g’”©ÜMªag” +-> + `g‘CÚfigu¿tiÚ +()-> + `g‘G’”©ÜTem¶©e +($this-> + `g‘G’”©ÜCÏss +(), $this-> + `g‘Theme +(), $templateFile); + +83 + `ob_¡¬t +(); + +84 + `»quœe +( +$‹m¶©eFže +); + +85 +$cڋÁ + = + `ob_g‘_þ—n +(); + +88  +$this +-> + `»¶aûPhpM¬ks +( +$cڋÁ +); + +89 + } +} + +98 +´Ùeùed + +funùiÚ + + $»¶aûPhpM¬ks +( +$‹xt +) + +101  + `¡r_»¶aû +( + `¬¿y +('[?php', '[?=', '?]'),‡¼ay(''), +$‹xt +); + +102 + } +} + +109 +public + +funùiÚ + + $g‘G’”©ÜCÏss +() + +111  +$this +-> +g’”©ÜCÏss +; + +112 + } +} + +119 +public + +funùiÚ + + $£tG’”©ÜCÏss +( +$g’”©ÜCÏss +) + +121 +$this +-> +g’”©ÜCÏss + = +$g’”©ÜCÏss +; + +122 + } +} + +129 +´Ùeùed + +funùiÚ + + $g‘G’”©ÜMªag” +() + +131  +$this +-> +g’”©ÜMªag” +; + +132 + } +} + +139 +public + +funùiÚ + + $g‘G’”©edModuËName +() + +141  +$this +-> +g’”©edModuËName +; + +142 + } +} + +149 +public + +funùiÚ + + $£tG’”©edModuËName +( +$moduËName +) + +151 +$this +-> +g’”©edModuËName + = +$moduËName +; + +152 + } +} + +159 +public + +funùiÚ + + $g‘ModuËName +() + +161  +$this +-> +moduËName +; + +162 + } +} + +169 +public + +funùiÚ + + $£tModuËName +( +$moduËName +) + +171 +$this +-> +moduËName + = +$moduËName +; + +172 + } +} + +179 +public + +funùiÚ + + $g‘Theme +() + +181  +$this +-> +theme +; + +182 + } +} + +189 +public + +funùiÚ + + $£tTheme +( +$theme +) + +191 +$this +-> +theme + = +$theme +; + +192 + } +} + + @lib/vendor/symfony/lib/generator/sfGeneratorManager.class.php + +1 +cÚfigu¿tiÚ + = +$cÚfigu¿tiÚ +; + +34 +$this +-> +ba£P©h + = +$ba£P©h +; + +42 +public + +funùiÚ + + $g‘CÚfigu¿tiÚ +() + +44  +$this +-> +cÚfigu¿tiÚ +; + +45 + } +} + +52 +public + +funùiÚ + + $g‘Ba£P©h +() + +54 ià( +nuÎ + ==ð +$this +-> +ba£P©h +) + +57 +$this +-> +ba£P©h + = +sfCÚfig +:: + `g‘ +('sf_module_cache_dir'); + +60  +$this +-> +ba£P©h +; + +61 + } +} + +68 +public + +funùiÚ + + $£tBa£P©h +( +$ba£P©h +) + +70 +$this +-> +ba£P©h + = +$ba£P©h +; + +71 + } +} + +79 +public + +funùiÚ + + $§ve +( +$·th +, +$cڋÁ +) + +81 +$·th + = +$this +-> + `g‘Ba£P©h +(). +DIRECTORY_SEPARATOR +.$path; + +83 ià(! + `is_dœ +( + `dœÇme +( +$·th +))) + +85 +$cu¼’t_umask + = + `umask +(0000); + +86 ià( +çl£ + ==ð@ + `mkdœ +( + `dœÇme +( +$·th +), 0777, +Œue +)) + +88 +throw + +Ãw + + `sfCacheExû±iÚ +( + `¥rštf +('FažedØmakÿchdœeùÜy "%s".', + `dœÇme +( +$·th +))); + +90 + `umask +( +$cu¼’t_umask +); + +93 ià( +çl£ + ==ð +$»t + = @ + `fže_put_cڋÁs +( +$·th +, +$cڋÁ +)) + +95 +throw + +Ãw + + `sfCacheExû±iÚ +( + `¥rštf +('FažedØwr™ÿchfž"%s".', +$·th +)); + +98  +$»t +; + +99 + } +} + +109 +public + +funùiÚ + + $g’”©e +( +$g’”©ÜCÏss +, +$·¿m +) + +111 +$g’”©Ü + = +Ãw + + `$g’”©ÜCÏss +( +$this +); + +113  +$g’”©Ü +-> + `g’”©e +( +$·¿m +); + +114 + } +} + + @lib/vendor/symfony/lib/generator/sfModelGenerator.class.php + +1 + `v®id©eP¬am‘”s +( +$·¿ms +); + +40 +$this +-> +mod–CÏss + = $this-> +·¿ms +['model_class']; + +43 +$this +-> + `£tModuËName +($this-> +·¿ms +['moduleName']); + +44 +$this +-> + `£tG’”©edModuËName +('auto'. + `ucfœ¡ +($this-> +·¿ms +['moduleName'])); + +47 +$theme + = + `is£t +( +$this +-> +·¿ms +['theme']) ? $this->params['theme'] : 'default'; + +48 +$this +-> + `£tTheme +( +$theme +); + +49 +$themeDœ + = +$this +-> +g’”©ÜMªag” +-> + `g‘CÚfigu¿tiÚ +()-> + `g‘G’”©ÜTem¶©e +($this-> + `g‘G’”©ÜCÏss +(), +$theme +, ''); + +50 ià(! + `is_dœ +( +$themeDœ +)) + +52 +throw + +Ãw + + `sfCÚfigu¿tiÚExû±iÚ +( + `¥rštf +('Ththem"%s" dÛ nكxi¡.', +$theme +)); + +56 +$this +-> + `cÚfigu» +(); + +58 +$this +-> +cÚfigu¿tiÚ + = $this-> + `lßdCÚfigu¿tiÚ +(); + +61 +$this +-> + `g’”©ePhpFžes +($this-> +g’”©edModuËName +, +sfFšd” +:: + `ty³ +('fže')-> + `»Ïtive +()-> + `š +( +$themeDœ +)); + +64 ià( + `fže_exi¡s +( +$fže + = +$this +-> +g’”©ÜMªag” +-> + `g‘Ba£P©h +().'/'.$this-> + `g‘G’”©edModuËName +().'/lib/helper.php')) + +66 @ + `»Çme +( +$fže +, +$this +-> +g’”©ÜMªag” +-> + `g‘Ba£P©h +().'/'.$this-> + `g‘G’”©edModuËName +().'/lib/Ba£'. + `ucfœ¡ +($this-> +moduËName +).'GeneratorHelper.class.php'); + +69  "»quœe_Úû(sfCÚfig::g‘('sf_moduË_ÿche_dœ').'/". +$this +-> +g’”©edModuËName +."/actions/actions.class.php');"; + +77 +public + +funùiÚ + + $g‘AùiÚsBa£CÏss +() + +79  + `is£t +( +$this +-> +·¿ms +['actions_base_class']) ? $this->params['actions_base_class'] : 'sfActions'; + +80 + } +} + +87 +public + +funùiÚ + + $g‘Mod–CÏss +() + +89  +$this +-> +mod–CÏss +; + +90 + } +} + +99 +public + +funùiÚ + + $g‘Prim¬yKeys +( +$fœ¡Oà + = +çl£ +) + +101  +$fœ¡Oà + ? +$this +-> +´im¬yKey +[0] : $this->primaryKey; + +102 + } +} + +109 +public + +funùiÚ + + $g‘SšguÏrName +() + +111  + `is£t +( +$this +-> +·¿ms +['sšguÏr']è? $this->·¿ms['sšguÏr'] : +sfInæeùÜ +:: + `und”scÜe +($this-> + `g‘Mod–CÏss +()); + +112 + } +} + +119 +public + +funùiÚ + + $g‘Plu¿lName +() + +121  + `is£t +( +$this +-> +·¿ms +['¶u¿l']è? $this->·¿ms['¶u¿l'] : $this-> + `g‘SšguÏrName +().'_list'; + +122 + } +} + +129 +public + +funùiÚ + + $g‘I18nC©®ogue +() + +131  + `is£t +( +$this +-> +·¿ms +['i18n_catalogue']) ? $this->params['i18n_catalogue'] : 'messages'; + +132 + } +} + +142 +public + +funùiÚ + + $g‘R‘r›veByPkP¬amsFÜAùiÚ +( +$šd’t +) + +144 +$·¿ms + = + `¬¿y +(); + +145 + `fܗch + ( +$this +-> + `g‘Prim¬yKeys +(è +as + +$pk +) + +147 +$·¿ms +[] = + `¥rštf +("\$»que¡->g‘P¬am‘”('%s')", +sfInæeùÜ +:: + `und”scÜe +( +$pk +)); + +150  + `im¶ode +(",\n". + `¡r_»³© +(' ', + `max +(0, +$šd’t + - + `¡¾’ +( +$this +-> + `g‘SšguÏrName +().$this-> +mod–CÏss +))), +$·¿ms +); + +151 + } +} + +160 +public + +funùiÚ + +g‘Prim¬yKeyU¾P¬ams +( +$´efix + = '', +$fuÎ + = +çl£ +) + +162 +$·¿ms + = +¬¿y +(); + +163 +fܗch + ( +$this +-> +g‘Prim¬yKeys +(è +as + +$pk +) + +165 + g$f›ldName + = +sfInæeùÜ +:: +und”scÜe +( +$pk +); + +167 ià( + g$fuÎ +) + +169 + g$·¿ms +[] = +¥rštf +("%s='.%s->%s()", +$f›ldName +, +$´efix +, +$this +-> +g‘CÞumnG‘‹r +($f›ldName, +çl£ +)); + +173 + g$·¿ms +[] = +¥rštf +("%s='.%s", +$f›ldName +, +$this +-> +g‘CÞumnG‘‹r +($f›ldName, +Œue +, +$´efix +)); + +177  +im¶ode +(".'&", +$·¿ms +); + +183 +ab¡¿ù + +´Ùeùed + +funùiÚ + +cÚfigu» +(); + +185 +ab¡¿ù + +public + +funùiÚ + +g‘Ty³ +( +$cÞumn +); + +187 +ab¡¿ù + +public + +funùiÚ + +g‘AÎF›ldNames +(); + +200 +ab¡¿ù + +public + +funùiÚ + +g‘CÞumnG‘‹r +( +$cÞumn +, +$dev–Ýed + = +çl£ + , +$´efix + = ''); + +202 +ab¡¿ù + +public + +funùiÚ + +g‘MªyToMªyTabËs +(); + +213 +public + +funùiÚ + + $g‘LškToAùiÚ +( +$aùiÚName +, +$·¿ms +, +$pk_lšk + = +çl£ +) + +215 +$aùiÚ + = + `is£t +( +$·¿ms +['aùiÚ']è? $·¿ms['aùiÚ'] : 'Li¡'. +sfInæeùÜ +:: + `ÿm–ize +( +$aùiÚName +); + +217 +$u¾_·¿ms + = +$pk_lšk + ? '?'. +$this +-> + `g‘Prim¬yKeyU¾P¬ams +() : '\''; + +219  '[?ph°echØlšk_to(__(\''. +$·¿ms +['Ïb–'].'\',‡¼ay(), \''. +$this +-> + `g‘I18nC©®ogue +().'\'), \''.$this-> + `g‘ModuËName +().'/'. +$aùiÚ +. +$u¾_·¿ms +.', '.$this-> + `asPhp +($params['params']).') ?]'; + +220 + } +} + +230 +public + +funùiÚ + +addC»d’tŸlCÚd™iÚ +( +$cڋÁ +, +$·¿ms + = + $¬¿y +()) + +232 ià( + `is£t +( +$·¿ms +['credentials'])) + +234 +$üed’tŸls + = +$this +-> + `asPhp +( +$·¿ms +['credentials']); + +236  <<< +EOF + + +237 [? +php + ià(\ +$sf_u£r +-> + `hasC»d’tŸl +( +$üed’tŸls +)): ?] + +238 +$cڋÁ + + +239 [? +php + +’dif +; ?] + +241 +EOF +; + +245  +$cڋÁ +; + +247 + } +} + +256 +public + +funùiÚ + + $»nd”F›ld +( +$f›ld +) + +258 +$html + = +$this +-> + `g‘CÞumnG‘‹r +( +$f›ld +-> + `g‘Name +(), +Œue +); + +260 ià( +$»nd”” + = +$f›ld +-> + `g‘R’d”” +()) + +262 +$html + = + `¥rštf +("$htmÈ? c®l_u£r_func_¬¿y(%s,‡¼ay_m”ge×¼ay(%s), %s)è: '&nb¥;'", +$this +-> + `asPhp +( +$»nd”” +), $html, $this->asPhp( +$f›ld +-> + `g‘R’d””Argum’ts +())); + +264 ià( +$f›ld +-> + `isCompڒt +()) + +266  + `¥rštf +("g‘_compڒt('%s', '%s',‡¼ay('ty³' => 'li¡', '%s' => \$%s))", +$this +-> + `g‘ModuËName +(), +$f›ld +-> + `g‘Name +(), $this-> + `g‘SšguÏrName +(), $this->getSingularName()); + +268 ià( +$f›ld +-> + `isP¬tŸl +()) + +270  + `¥rštf +("g‘_·¹Ÿl('%s/%s',‡¼ay('ty³' => 'li¡', '%s' => \$%s))", +$this +-> + `g‘ModuËName +(), +$f›ld +-> + `g‘Name +(), $this-> + `g‘SšguÏrName +(), $this->getSingularName()); + +272 ià('D©e' =ð +$f›ld +-> + `g‘Ty³ +()) + +274 +$html + = + `¥rštf +("çl£ !=ð¡¹Ùime($htmlè? fÜm©_d©e(%s, \"%s\"è: '&nb¥;'", $html, +$f›ld +-> + `g‘CÚfig +('date_format', 'f')); + +276 ià('Boޗn' =ð +$f›ld +-> + `g‘Ty³ +()) + +278 +$html + = + `¥rštf +("g‘_·¹Ÿl('%s/li¡_f›ld_boޗn',‡¼ay('v®ue' => %s))", +$this +-> + `g‘ModuËName +(), $html); + +281 ià( +$f›ld +-> + `isLšk +()) + +283 +$html + = + `¥rštf +("lšk_to(%s, '%s', \$%s)", $html, +$this +-> + `g‘U¾FÜAùiÚ +('ed™'), $this-> + `g‘SšguÏrName +()); + +286  +$html +; + +287 + } +} + +296 +public + +funùiÚ + + $g‘I18NSŒšg +( +$key +) + +298 +$v®ue + = +$this +-> +cÚfigu¿tiÚ +-> + `g‘V®ue +( +$key +, '', +Œue +); + +300 +$·¹s + = + `ex¶ode +('.', +$key +); + +301 +$cڋxt + = +$·¹s +[0]; + +304 + `´eg_m©ch_®l +('/%%([^%]+)%%/', +$v®ue +, +$m©ches +, +PREG_PATTERN_ORDER +); + +305 +$f›lds + = + `¬¿y +(); + +306 + `fܗch + ( +$m©ches +[1] +as + +$Çme +) + +308 +$f›lds +[] = +$Çme +; + +311 +$v¬s + = + `¬¿y +(); + +312 + `fܗch + ( +$this +-> +cÚfigu¿tiÚ +-> + `g‘CڋxtCÚfigu¿tiÚ +( +$cڋxt +, +$f›lds +è +as + +$f›ld +) + +314 +$v¬s +[] = '\'%%'. +$f›ld +-> + `g‘Name +().'%%\' => '. +$this +-> + `»nd”F›ld +($field); + +317  + `¥rštf +("__('%s',‡¼ay(%s), '%s')", +$v®ue +, + `im¶ode +(', ', +$v¬s +), +$this +-> + `g‘I18nC©®ogue +()); + +318 + } +} + +325 +public + +funùiÚ + + $g‘FÜmObjeù +() + +327 ià( +nuÎ + ==ð +$this +-> +fÜmObjeù +) + +329 +$þass + = +nuÎ + ==ð +$this +-> +cÚfigu¿tiÚ + ? $this-> + `g‘Mod–CÏss +().'FÜm' : $this->cÚfigu¿tiÚ-> + `g‘FÜmCÏss +(); + +331 +$this +-> +fÜmObjeù + = +Ãw + + `$þass +(); + +334  +$this +-> +fÜmObjeù +; + +335 + } +} + +342 +public + +funùiÚ + + $g‘FÜmMuɝ¬tHtml +() + +344 ià( + `is£t +( +$this +-> +·¿ms +['non_verbose_templates']) && $this->params['non_verbose_templates']) + +350  +$this +-> + `g‘FÜmObjeù +()-> + `isMuɝ¬t +() ? 'ƒnctype="multipart/form-data"' : ''; + +352 + } +} + +359 +´Ùeùed + +funùiÚ + + $v®id©eP¬am‘”s +( +$·¿ms +) + +361 + `fܗch + ( + `¬¿y +('mod–_þass', 'moduËName'è +as + +$key +) + +363 ià(! + `is£t +( +$·¿ms +[ +$key +])) + +365 +throw + +Ãw + + `sfP¬£Exû±iÚ +( + `¥rštf +('sfMod–G’”©Ü mu¡ hav¨"%s"…¬am‘”.', +$key +)); + +369 ià(! + `þass_exi¡s +( +$·¿ms +['model_class'])) + +371 +throw + +Ãw + + `sfIn™Ÿliz©iÚExû±iÚ +( + `¥rštf +('UÇbˁØg’”©¨moduË f܂Ú-exi¡’ˆmod– "%s".', +$·¿ms +['model_class'])); + +374 +$this +-> +cÚfig + = + `is£t +( +$·¿ms +['cÚfig']è? $·¿ms['cÚfig'] : + `¬¿y +(); + +376 + `un£t +( +$·¿ms +['config']); + +377 +$this +-> +·¿ms + = +$·¿ms +; + +378 + } +} + +383 +´Ùeùed + +funùiÚ + + $lßdCÚfigu¿tiÚ +() + +385 +Œy + + +387 +$this +-> +g’”©ÜMªag” +-> + `g‘CÚfigu¿tiÚ +()-> + `g‘G’”©ÜTem¶©e +($this-> + `g‘G’”©ÜCÏss +(), $this-> + `g‘Theme +(), '../parts/configuration.php'); + +389 + `ÿtch + ( +sfExû±iÚ + +$e +) + +391  +nuÎ +; + +394 +$cÚfig + = +$this +-> + `g‘G’”©ÜMªag” +()-> + `g‘CÚfigu¿tiÚ +(); + +395 ià(! +$cÚfig + +š¡ªûof + +sfAµliÿtiÚCÚfigu¿tiÚ +) + +397 +throw + +Ãw + + `LogicExû±iÚ +('The sfModelGenerator can only operates with‡n‡pplication configuration.'); + +400 +$ba£P©h + = +$this +-> + `g‘G’”©edModuËName +().'/lib/Ba£'. + `ucfœ¡ +($this-> + `g‘ModuËName +()).'GeneratorConfiguration.class.php'; + +401 +$this +-> + `g‘G’”©ÜMªag” +()-> + `§ve +( +$ba£P©h +, $this-> + `ev®Tem¶©e +('../parts/configuration.php')); + +403 +»quœe_Úû + +$this +-> + `g‘G’”©ÜMªag” +()-> + `g‘Ba£P©h +().'/'. +$ba£P©h +; + +405 +$þass + = 'Ba£'. + `ucfœ¡ +( +$this +-> + `g‘ModuËName +()).'GeneratorConfiguration'; + +406 + `fܗch + ( +$cÚfig +-> + `g‘LibDœs +( +$this +-> + `g‘ModuËName +()è +as + +$dœ +) + +408 ià(! + `is_fže +( +$cÚfigu¿tiÚ + = +$dœ +.'/'. +$this +-> + `g‘ModuËName +().'GeneratorConfiguration.class.php')) + +413 +»quœe_Úû + +$cÚfigu¿tiÚ +; + +414 +$þass + = +$this +-> + `g‘ModuËName +().'GeneratorConfiguration'; + +419 + `fܗch + ( +$this +-> +cÚfig + +as + +$cڋxt + => +$v®ue +) + +421 ià(! +$v®ue +) + +426 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('You¸g’”©Ü cÚfigu¿tiÚ cڏš som”rÜ f܁h"%s" cڋxt. ThfÞlowšg cÚfigu¿tiÚ cªnÙ b·r£d: %s.', +$cڋxt +, +$this +-> + `asPhp +( +$v®ue +))); + +429  +Ãw + + `$þass +(); + +430 + } +} + +437 +public + +funùiÚ + + $g‘U¾FÜAùiÚ +( +$aùiÚ +) + +439 ià( + `is£t +( +$this +-> +·¿ms +['route_prefix'])) + +441  'li¡' =ð +$aùiÚ + ? +$this +-> +·¿ms +['route_prefix'] : $this->params['route_prefix'].'_'.$action; + +445  +$this +-> + `g‘ModuËName +().'/'. +$aùiÚ +; + +447 + } +} + +449 +public + +funùiÚ + + $asPhp +( +$v¬ŸbË +) + +451  + `¡r_»¶aû +( + `¬¿y +("\n", '¬¿y ('),‡¼ay('', '¬¿y('), + `v¬_expÜt +( +$v¬ŸbË +, +Œue +)); + +452 + } +} + +454 +public + +funùiÚ + + $esÿ³SŒšg +( +$¡ršg +) + +456  + `¡r_»¶aû +("'", "\\'", +$¡ršg +); + +457 + } +} + + @lib/vendor/symfony/lib/generator/sfModelGeneratorConfiguration.class.php + +1 + `compže +(); + +76 +´Ùeùed + +funùiÚ + + $compže +() + +78 +$cÚfig + = +$this +-> + `g‘CÚfig +(); + +84 +$this +-> +cÚfigu¿tiÚ + = + `¬¿y +( + +85 'li¡' => + `¬¿y +( + +86 'f›lds' => + `¬¿y +(), + +87 'Ïyout' => +$this +-> + `g‘Li¡Layout +(), + +88 't™Ë' => +$this +-> + `g‘Li¡T™Ë +(), + +89 'aùiÚs' => +$this +-> + `g‘Li¡AùiÚs +(), + +90 'objeù_aùiÚs' => +$this +-> + `g‘Li¡ObjeùAùiÚs +(), + +91 '·¿ms' => +$this +-> + `g‘Li¡P¬ams +(), + +93 'fž‹r' => + `¬¿y +( + +94 'f›lds' => + `¬¿y +(), + +96 'fÜm' => + `¬¿y +( + +97 'f›lds' => + `¬¿y +(), + +99 'Ãw' => + `¬¿y +( + +100 'f›lds' => + `¬¿y +(), + +101 't™Ë' => +$this +-> + `g‘NewT™Ë +(), + +102 'aùiÚs' => +$this +-> + `g‘NewAùiÚs +(è? $this->g‘NewAùiÚs(è: $this-> + `g‘FÜmAùiÚs +(), + +104 'ed™' => + `¬¿y +( + +105 'f›lds' => + `¬¿y +(), + +106 't™Ë' => +$this +-> + `g‘Ed™T™Ë +(), + +107 'aùiÚs' => +$this +-> + `g‘Ed™AùiÚs +(è? $this->g‘Ed™AùiÚs(è: $this-> + `g‘FÜmAùiÚs +(), + +111 + `fܗch + ( + `¬¿y_keys +( +$cÚfig +['deçuÉ']è +as + +$f›ld +) + +113 +$fÜmCÚfig + = + `¬¿y_m”ge +( +$cÚfig +['deçuÉ'][ +$f›ld +], + `is£t +($cÚfig['fÜm'][$f›ld]è? $cÚfig['fÜm'][$f›ld] : + `¬¿y +()); + +115 +$this +-> +cÚfigu¿tiÚ +['li¡']['f›lds'][ +$f›ld +] = +Ãw + + `sfMod–G’”©ÜCÚfigu¿tiÚF›ld +($f›ld, + `¬¿y_m”ge +( + `¬¿y +('Ïb–' => +sfInæeùÜ +:: + `humªize +(sfInæeùÜ:: + `und”scÜe +($f›ld))), +$cÚfig +['deçuÉ'][$f›ld], + `is£t +($config['list'][$field]) ? $config['list'][$field] :‡rray())); + +116 +$this +-> +cÚfigu¿tiÚ +['fž‹r']['f›lds'][ +$f›ld +] = +Ãw + + `sfMod–G’”©ÜCÚfigu¿tiÚF›ld +($f›ld, + `¬¿y_m”ge +( +$cÚfig +['deçuÉ'][$f›ld], + `is£t +($cÚfig['fž‹r'][$f›ld]è? $cÚfig['fž‹r'][$f›ld] : + `¬¿y +())); + +117 +$this +-> +cÚfigu¿tiÚ +['Ãw']['f›lds'][ +$f›ld +] = +Ãw + + `sfMod–G’”©ÜCÚfigu¿tiÚF›ld +($f›ld, + `¬¿y_m”ge +( +$fÜmCÚfig +, + `is£t +( +$cÚfig +['Ãw'][$f›ld]è? $cÚfig['Ãw'][$f›ld] : + `¬¿y +())); + +118 +$this +-> +cÚfigu¿tiÚ +['ed™']['f›lds'][ +$f›ld +] = +Ãw + + `sfMod–G’”©ÜCÚfigu¿tiÚF›ld +($f›ld, + `¬¿y_m”ge +( +$fÜmCÚfig +, + `is£t +( +$cÚfig +['ed™'][$f›ld]è? $cÚfig['ed™'][$f›ld] : + `¬¿y +())); + +122 + `fܗch + ( +$this +-> + `g‘Li¡Di¥Ïy +(è +as + +$f›ld +) + +124 + `li¡ +( +$f›ld +, +$æag +èð +sfMod–G’”©ÜCÚfigu¿tiÚF›ld +:: + `¥l™F›ldW™hFÏg +($field); + +126 +$this +-> +cÚfigu¿tiÚ +['li¡']['f›lds'][ +$f›ld +] = +Ãw + + `sfMod–G’”©ÜCÚfigu¿tiÚF›ld +($f›ld, + `¬¿y_m”ge +( + +127 + `¬¿y +('ty³' => 'Text', 'Ïb–' => +sfInæeùÜ +:: + `humªize +(sfInæeùÜ:: + `und”scÜe +( +$f›ld +))), + +128 + `is£t +( +$cÚfig +['deçuÉ'][ +$f›ld +]è? $cÚfig['deçuÉ'][$f›ld] : + `¬¿y +(), + +129 + `is£t +( +$cÚfig +['li¡'][ +$f›ld +]è? $cÚfig['li¡'][$f›ld] : + `¬¿y +(), + +130 + `¬¿y +('æag' => +$æag +) + +135 + `fܗch + ( + `¬¿y +('ed™', 'Ãw'è +as + +$cڋxt +) + +137 + `fܗch + ( +$this +-> +cÚfigu¿tiÚ +[ +$cڋxt +]['aùiÚs'] +as + +$aùiÚ + => +$·¿m‘”s +) + +139 +$this +-> +cÚfigu¿tiÚ +[ +$cڋxt +]['aùiÚs'][ +$aùiÚ +] = $this-> + `fixAùiÚP¬am‘”s +($aùiÚ, +$·¿m‘”s +); + +144 + `fܗch + ( +$this +-> +cÚfigu¿tiÚ +['li¡']['aùiÚs'] +as + +$aùiÚ + => +$·¿m‘”s +) + +146 +$this +-> +cÚfigu¿tiÚ +['li¡']['aùiÚs'][ +$aùiÚ +] = $this-> + `fixAùiÚP¬am‘”s +($aùiÚ, +$·¿m‘”s +); + +150 +$this +-> +cÚfigu¿tiÚ +['li¡']['b©ch_aùiÚs'] = + `¬¿y +(); + +151 + `fܗch + ( +$this +-> + `g‘Li¡B©chAùiÚs +(è +as + +$aùiÚ + => +$·¿m‘”s +) + +153 +$·¿m‘”s + = +$this +-> + `fixAùiÚP¬am‘”s +( +$aùiÚ +, $parameters); + +155 +$aùiÚ + = 'b©ch'. + `ucfœ¡ +(0 ==ð + `¡½os +($aùiÚ, '_'è? + `sub¡r +($action, 1) : $action); + +157 +$this +-> +cÚfigu¿tiÚ +['li¡']['b©ch_aùiÚs'][ +$aùiÚ +] = +$·¿m‘”s +; + +161 + `fܗch + ( +$this +-> +cÚfigu¿tiÚ +['li¡']['objeù_aùiÚs'] +as + +$aùiÚ + => +$·¿m‘”s +) + +163 +$this +-> +cÚfigu¿tiÚ +['li¡']['objeù_aùiÚs'][ +$aùiÚ +] = $this-> + `fixAùiÚP¬am‘”s +($aùiÚ, +$·¿m‘”s +); + +167 +$this +-> +cÚfigu¿tiÚ +['li¡']['di¥Ïy'] = + `¬¿y +(); + +168 + `fܗch + ( +$this +-> + `g‘Li¡Di¥Ïy +(è +as + +$Çme +) + +170 + `li¡ +( +$Çme +, +$æag +èð +sfMod–G’”©ÜCÚfigu¿tiÚF›ld +:: + `¥l™F›ldW™hFÏg +($name); + +171 ià(! + `is£t +( +$this +-> +cÚfigu¿tiÚ +['li¡']['f›lds'][ +$Çme +])) + +173 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('Thf›ld "%s" dÛ nكxi¡.', +$Çme +)); + +175 +$f›ld + = +$this +-> +cÚfigu¿tiÚ +['li¡']['f›lds'][ +$Çme +]; + +176 +$f›ld +-> + `£tFÏg +( +$æag +); + +177 +$this +-> +cÚfigu¿tiÚ +['li¡']['di¥Ïy'][ +$Çme +] = +$f›ld +; + +182 +$this +-> + `·r£V¬ŸbËs +('list', 'params'); + +183 +$this +-> + `·r£V¬ŸbËs +('edit', 'title'); + +184 +$this +-> + `·r£V¬ŸbËs +('list', 'title'); + +185 +$this +-> + `·r£V¬ŸbËs +('new', 'title'); + +188 +$this +-> +cÚfigu¿tiÚ +['üed’tŸls'] = + `¬¿y +( + +189 'li¡' => + `¬¿y +(), + +190 'Ãw' => + `¬¿y +(), + +191 'ü—‹' => + `¬¿y +(), + +192 'ed™' => + `¬¿y +(), + +193 'upd©e' => + `¬¿y +(), + +194 'd–‘e' => + `¬¿y +(), + +196 + `fܗch + ( +$this +-> + `g‘AùiÚsDeçuÉ +(è +as + +$aùiÚ + => +$·¿ms +) + +198 ià(0 ==ð + `¡½os +( +$aùiÚ +, '_')) + +200 +$aùiÚ + = + `sub¡r +($action, 1); + +203 +$this +-> +cÚfigu¿tiÚ +['üed’tŸls'][ +$aùiÚ +] = + `is£t +( +$·¿ms +['üed’tŸls']è? $·¿ms['üed’tŸls'] : + `¬¿y +(); + +204 +$this +-> +cÚfigu¿tiÚ +['üed’tŸls']['b©ch'. + `ucfœ¡ +( +$aùiÚ +)] = + `is£t +( +$·¿ms +['üed’tŸls']è? $·¿ms['üed’tŸls'] : + `¬¿y +(); + +206 +$this +-> +cÚfigu¿tiÚ +['credentials']['create'] = $this->configuration['credentials']['new']; + +207 +$this +-> +cÚfigu¿tiÚ +['credentials']['update'] = $this->configuration['credentials']['edit']; + +208 + } +} + +210 +´Ùeùed + +funùiÚ + + $·r£V¬ŸbËs +( +$cڋxt +, +$key +) + +212 + `´eg_m©ch_®l +('/%%([^%]+)%%/', +$this +-> +cÚfigu¿tiÚ +[ +$cڋxt +][ +$key +], +$m©ches +, +PREG_PATTERN_ORDER +); + +213 + `fܗch + ( +$m©ches +[1] +as + +$Çme +) + +215 + `li¡ +( +$Çme +, +$æag +èð +sfMod–G’”©ÜCÚfigu¿tiÚF›ld +:: + `¥l™F›ldW™hFÏg +($name); + +216 ià(! + `is£t +( +$this +-> +cÚfigu¿tiÚ +[ +$cڋxt +]['f›lds'][ +$Çme +])) + +218 +$this +-> +cÚfigu¿tiÚ +[ +$cڋxt +]['f›lds'][ +$Çme +] = +Ãw + + `sfMod–G’”©ÜCÚfigu¿tiÚF›ld +($Çme, + `¬¿y_m”ge +( + +219 + `¬¿y +('ty³' => 'Text', 'Ïb–' => +sfInæeùÜ +:: + `humªize +(sfInæeùÜ:: + `und”scÜe +( +$Çme +))), + +220 + `is£t +( +$cÚfig +['deçuÉ'][ +$Çme +]è? $cÚfig['deçuÉ'][$Çme] : + `¬¿y +(), + +221 + `is£t +( +$cÚfig +[ +$cڋxt +][ +$Çme +]è? $cÚfig[$cڋxt][$Çme] : + `¬¿y +(), + +222 + `¬¿y +('æag' => +$æag +) + +227 +$this +-> +cÚfigu¿tiÚ +[ +$cڋxt +]['f›lds'][ +$Çme +]-> + `£tFÏg +( +$æag +); + +230 +$this +-> +cÚfigu¿tiÚ +[ +$cڋxt +][ +$key +] = + `¡r_»¶aû +('%%'. +$æag +. +$Çme +.'%%', '%%'.$name.'%%', $this->configuration[$context][$key]); + +232 + } +} + +234 +public + +funùiÚ + + $g‘CڋxtCÚfigu¿tiÚ +( +$cڋxt +, +$f›lds + = +nuÎ +) + +236 ià(! + `is£t +( +$this +-> +cÚfigu¿tiÚ +[ +$cڋxt +])) + +238 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('Thcڋxˆ"%s" dÛ nكxi¡.', +$cڋxt +)); + +241 ià( +nuÎ + ==ð +$f›lds +) + +243  +$this +-> +cÚfigu¿tiÚ +[ +$cڋxt +]; + +246 +$f + = + `¬¿y +(); + +247 + `fܗch + ( +$f›lds + +as + +$f›ld +) + +249 +$f +[ +$f›ld +] = +$this +-> +cÚfigu¿tiÚ +[ +$cڋxt +]['fields'][$field]; + +252  +$f +; + +253 + } +} + +255 +public + +funùiÚ + + $g‘F›ldCÚfigu¿tiÚ +( +$cڋxt +, +$f›ld +) + +257 ià(! + `is£t +( +$this +-> +cÚfigu¿tiÚ +[ +$cڋxt +])) + +259 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('Thcڋxˆ"%s" dÛ nكxi¡.', +$cڋxt +)); + +262 ià(! + `is£t +( +$this +-> +cÚfigu¿tiÚ +[ +$cڋxt +]['f›lds'][ +$f›ld +])) + +264 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('F›ld "%s" dÛ nكxi¡.', +$f›ld +)); + +267  +$this +-> +cÚfigu¿tiÚ +[ +$cڋxt +]['f›lds'][ +$f›ld +]; + +268 + } +} + +279 +public + +funùiÚ + + $g‘V®ue +( +$key +, +$deçuÉ + = +nuÎ +, +$esÿ³d + = +çl£ +) + +281 ià( + `´eg_m©ch +('/^(?P[^\.]+)\.f›lds\.(?P[^\.]+)\.(?P.+)$/', +$key +, +$m©ches +)) + +283 +$v + = +$this +-> + `g‘F›ldCÚfigu¿tiÚ +( +$m©ches +['cڋxt'], $m©ches['f›ld'])-> + `g‘CÚfig +($m©ches['key'], +$deçuÉ +); + +285 ià( + `´eg_m©ch +('/^(?P[^\.]+)\.(?P.+)$/', +$key +, +$m©ches +)) + +287 +$v + = +sfMod–G’”©ÜCÚfigu¿tiÚ +:: + `g‘F›ldCÚfigV®ue +( +$this +-> + `g‘CڋxtCÚfigu¿tiÚ +( +$m©ches +['cڋxt']), $m©ches['key'], +$deçuÉ +); + +291 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('CÚfigu¿tiÚ key "%s" i šv®id.', +$key +)); + +294  +$esÿ³d + ? + `¡r_»¶aû +("'", "\\'", +$v +) : $v; + +295 + } +} + +305 +public + +funùiÚ + + $g‘FÜmFž‹rF›lds +( +sfFÜm + +$fÜm +) + +307 +$cÚfig + = +$this +-> + `g‘CÚfig +(); + +309 ià( +$this +-> + `g‘Fž‹rDi¥Ïy +()) + +311 +$f›lds + = + `¬¿y +(); + +312 + `fܗch + ( +$this +-> + `g‘Fž‹rDi¥Ïy +(è +as + +$Çme +) + +314 + `li¡ +( +$Çme +, +$æag +èð +sfMod–G’”©ÜCÚfigu¿tiÚF›ld +:: + `¥l™F›ldW™hFÏg +($name); + +315 ià(! + `is£t +( +$this +-> +cÚfigu¿tiÚ +['fž‹r']['f›lds'][ +$Çme +])) + +317 +$this +-> +cÚfigu¿tiÚ +['fž‹r']['f›lds'][ +$Çme +] = +Ãw + + `sfMod–G’”©ÜCÚfigu¿tiÚF›ld +($Çme, + `¬¿y_m”ge +( + +318 + `is£t +( +$cÚfig +['deçuÉ'][ +$Çme +]è? $cÚfig['deçuÉ'][$Çme] : + `¬¿y +(), + +319 + `is£t +( +$cÚfig +['fž‹r'][ +$Çme +]è? $cÚfig['fž‹r'][$Çme] : + `¬¿y +(), + +320 + `¬¿y +('is_»®' => +çl£ +, 'ty³' => 'Text', 'æag' => +$æag +) + +323 +$f›ld + = +$this +-> +cÚfigu¿tiÚ +['fž‹r']['f›lds'][ +$Çme +]; + +324 +$f›ld +-> + `£tFÏg +( +$æag +); + +325 +$f›lds +[ +$Çme +] = +$f›ld +; + +328  +$f›lds +; + +331 +$f›lds + = + `¬¿y +(); + +332 + `fܗch + ( +$fÜm +-> + `g‘Widg‘Schema +()-> + `g‘Pos™iÚs +(è +as + +$Çme +) + +334 +$f›lds +[ +$Çme +] = +Ãw + + `sfMod–G’”©ÜCÚfigu¿tiÚF›ld +($Çme, + `¬¿y_m”ge +( + +335 + `¬¿y +('type' => 'Text'), + +336 + `is£t +( +$cÚfig +['deçuÉ'][ +$Çme +]è? $cÚfig['deçuÉ'][$Çme] : + `¬¿y +(), + +337 + `is£t +( +$cÚfig +['fž‹r'][ +$Çme +]è? $cÚfig['fž‹r'][$Çme] : + `¬¿y +(), + +338 + `¬¿y +('is_»®' => +çl£ +) + +342  +$f›lds +; + +343 + } +} + +354 +public + +funùiÚ + + $g‘FÜmF›lds +( +sfFÜm + +$fÜm +, +$cڋxt +) + +356 +$cÚfig + = +$this +-> + `g‘CÚfig +(); + +358 +$m‘hod + = + `¥rštf +('g‘%sDi¥Ïy', + `ucfœ¡ +( +$cڋxt +)); + +359 ià(! +$f›ld£ts + = +$this +-> + `$m‘hod +()) + +361 +$f›ld£ts + = +$this +-> + `g‘FÜmDi¥Ïy +(); + +364 ià( +$f›ld£ts +) + +366 +$f›lds + = + `¬¿y +(); + +369 ià(! + `is_¬¿y +( + `»£t +( +$f›ld£ts +))) + +371 +$f›ld£ts + = + `¬¿y +('NONE' => $fieldsets); + +374 + `fܗch + ( +$f›ld£ts + +as + +$f›ld£t + => +$Çmes +) + +376 ià(! +$Çmes +) + +381 +$f›lds +[ +$f›ld£t +] = + `¬¿y +(); + +383 + `fܗch + ( +$Çmes + +as + +$Çme +) + +385 + `li¡ +( +$Çme +, +$æag +èð +sfMod–G’”©ÜCÚfigu¿tiÚF›ld +:: + `¥l™F›ldW™hFÏg +($name); + +386 ià(! + `is£t +( +$this +-> +cÚfigu¿tiÚ +[ +$cڋxt +]['f›lds'][ +$Çme +])) + +388 +$this +-> +cÚfigu¿tiÚ +[ +$cڋxt +]['f›lds'][ +$Çme +] = +Ãw + + `sfMod–G’”©ÜCÚfigu¿tiÚF›ld +($Çme, + `¬¿y_m”ge +( + +389 + `is£t +( +$cÚfig +['deçuÉ'][ +$Çme +]è? $cÚfig['deçuÉ'][$Çme] : + `¬¿y +(), + +390 + `is£t +( +$cÚfig +['fÜm'][ +$Çme +]è? $cÚfig['fÜm'][$Çme] : + `¬¿y +(), + +391 + `is£t +( +$cÚfig +[ +$cڋxt +][ +$Çme +]è? $cÚfig[$cڋxt][$Çme] : + `¬¿y +(), + +392 + `¬¿y +('is_»®' => +çl£ +, 'ty³' => 'Text', 'æag' => +$æag +) + +396 +$f›ld + = +$this +-> +cÚfigu¿tiÚ +[ +$cڋxt +]['f›lds'][ +$Çme +]; + +397 +$f›ld +-> + `£tFÏg +( +$æag +); + +398 +$f›lds +[ +$f›ld£t +][ +$Çme +] = +$f›ld +; + +402  +$f›lds +; + +405 +$f›lds + = + `¬¿y +(); + +406 + `fܗch + ( +$fÜm +-> + `g‘Widg‘Schema +()-> + `g‘Pos™iÚs +(è +as + +$Çme +) + +408 +$f›lds +[ +$Çme +] = +Ãw + + `sfMod–G’”©ÜCÚfigu¿tiÚF›ld +($Çme, + `¬¿y_m”ge +( + +409 + `¬¿y +('type' => 'Text'), + +410 + `is£t +( +$cÚfig +['deçuÉ'][ +$Çme +]è? $cÚfig['deçuÉ'][$Çme] : + `¬¿y +(), + +411 + `is£t +( +$cÚfig +['fÜm'][ +$Çme +]è? $cÚfig['fÜm'][$Çme] : + `¬¿y +(), + +412 + `is£t +( +$cÚfig +[ +$cڋxt +][ +$Çme +]è? $cÚfig[$cڋxt][$Çme] : + `¬¿y +(), + +413 + `¬¿y +('is_»®' => +çl£ +) + +417  + `¬¿y +('NONE' => +$f›lds +); + +418 + } +} + +429  +public + +funùiÚ + + $g‘F›ldCÚfigV®ue +( +$cÚfig +, +$key +, +$deçuÉ + = +nuÎ +) + +431 +$»f + =& +$cÚfig +; + +432 +$·¹s + = + `ex¶ode +('.', +$key +); + +433 +$couÁ + = + `couÁ +( +$·¹s +); + +434  +$i + = 0; $˜< +$couÁ +; $i++) + +436 +$·¹Key + = +$·¹s +[ +$i +]; + +437 ià(! + `is£t +( +$»f +[ +$·¹Key +])) + +439  +$deçuÉ +; + +442 ià( +$couÁ + =ð +$i + + 1) + +444  +$»f +[ +$·¹Key +]; + +448 +$»f + =& $»f[ +$·¹Key +]; + +452  +$deçuÉ +; + +453 + } +} + +455 +public + +funùiÚ + + $g‘C»d’tŸls +( +$aùiÚ +) + +457 ià(0 ==ð + `¡½os +( +$aùiÚ +, '_')) + +459 +$aùiÚ + = + `sub¡r +($action, 1); + +462  + `is£t +( +$this +-> +cÚfigu¿tiÚ +['üed’tŸls'][ +$aùiÚ +]è? $this->cÚfigu¿tiÚ['üed’tŸls'][$aùiÚ] : + `¬¿y +(); + +463 + } +} + +465 +public + +funùiÚ + + $g‘Pag” +( +$mod– +) + +467 +$þass + = +$this +-> + `g‘Pag”CÏss +(); + +469  +Ãw + + `$þass +( +$mod– +, +$this +-> + `g‘Pag”MaxP”Page +()); + +470 + } +} + +480 +public + +funùiÚ + +g‘FÜm +( +$objeù + = +nuÎ +, +$ÝtiÚs + = + $¬¿y +()) + +482 +$þass + = +$this +-> + `g‘FÜmCÏss +(); + +484  +Ãw + + `$þass +( +$objeù +, + `¬¿y_m”ge +( +$this +-> + `g‘FÜmO±iÚs +(), +$ÝtiÚs +)); + +485 + } +} + +487 +public + +funùiÚ + + $g‘FÜmO±iÚs +() + +489  + `¬¿y +(); + +490 + } +} + +492 +public + +funùiÚ + + $g‘Fž‹rFÜm +( +$fž‹rs +) + +494 +$þass + = +$this +-> + `g‘Fž‹rFÜmCÏss +(); + +496  +Ãw + + `$þass +( +$fž‹rs +, +$this +-> + `g‘Fž‹rFÜmO±iÚs +()); + +497 + } +} + +499 +public + +funùiÚ + + $g‘Fž‹rFÜmO±iÚs +() + +501  + `¬¿y +(); + +502 + } +} + +504 +public + +funùiÚ + + $g‘Fž‹rDeçuÉs +() + +506  + `¬¿y +(); + +507 + } +} + +509 +´Ùeùed + +funùiÚ + + $m­F›ldName +( +sfMod–G’”©ÜCÚfigu¿tiÚF›ld + +$f›ld +) + +511  +$f›ld +-> + `g‘Name +(); + +512 + } +} + +514 +´Ùeùed + +funùiÚ + + $fixAùiÚP¬am‘”s +( +$aùiÚ +, +$·¿m‘”s +) + +516 ià( +nuÎ + ==ð +$·¿m‘”s +) + +518 +$·¿m‘”s + = + `¬¿y +(); + +521 ià(! + `is£t +( +$·¿m‘”s +['params'])) + +523 +$·¿m‘”s +['·¿ms'] = + `¬¿y +(); + +526 ià('_d–‘e' =ð +$aùiÚ + && ! + `is£t +( +$·¿m‘”s +['confirm'])) + +528 +$·¿m‘”s +['confirm'] = 'Are you sure?'; + +531 +$·¿m‘”s +['þass_suffix'] = + `¡¹Þow” +('_' =ð +$aùiÚ +[0] ? + `sub¡r +($action, 1) : $action); + +534 +$deçuÉs + = +$this +-> + `g‘AùiÚsDeçuÉ +(); + +535 ià( + `is£t +( +$deçuÉs +[ +$aùiÚ +])) + +537 +$·¿m‘”s + = + `¬¿y_m”ge +( +$deçuÉs +[ +$aùiÚ +], $parameters); + +540 ià( + `is£t +( +$·¿m‘”s +['label'])) + +542 +$Ïb– + = +$·¿m‘”s +['label']; + +544 ià('_' !ð +$aùiÚ +[0]) + +546 +$Ïb– + = +$aùiÚ +; + +550 +$Ïb– + = '_li¡' =ð +$aùiÚ + ? 'BackØli¡' : + `sub¡r +($action, 1); + +553 +$·¿m‘”s +['Ïb–'] = +sfInæeùÜ +:: + `humªize +( +$Ïb– +); + +555  +$·¿m‘”s +; + +556 + } +} + +558 +´Ùeùed + +funùiÚ + + $g‘CÚfig +() + +560  + `¬¿y +( + +561 'deçuÉ' => +$this +-> + `g‘F›ldsDeçuÉ +(), + +562 'li¡' => +$this +-> + `g‘F›ldsLi¡ +(), + +563 'fž‹r' => +$this +-> + `g‘F›ldsFž‹r +(), + +564 'fÜm' => +$this +-> + `g‘F›ldsFÜm +(), + +565 'Ãw' => +$this +-> + `g‘F›ldsNew +(), + +566 'ed™' => +$this +-> + `g‘F›ldsEd™ +(), + +568 + } +} + + @lib/vendor/symfony/lib/generator/sfModelGeneratorConfigurationField.class.php + +1 +Çme + = +$Çme +; + +26 +$this +-> +cÚfig + = +$cÚfig +; + +28 ià( + `is£t +( +$this +-> +cÚfig +['flag'])) + +30 +$this +-> + `£tFÏg +($this-> +cÚfig +['flag']); + +31 + `un£t +( +$this +-> +cÚfig +['flag']); + +40 +public + +funùiÚ + + $g‘Name +() + +42  +$this +-> +Çme +; + +43 + } +} + +56 +public + +funùiÚ + + $g‘CÚfig +( +$key + = +nuÎ +, +$deçuÉ + =‚uÎ, +$esÿ³d + = +çl£ +) + +58 ià( +nuÎ + ==ð +$key +) + +60  +$this +-> +cÚfig +; + +63 +$v®ue + = +sfMod–G’”©ÜCÚfigu¿tiÚ +:: + `g‘F›ldCÚfigV®ue +( +$this +-> +cÚfig +, +$key +, +$deçuÉ +); + +65  +$esÿ³d + ? + `¡r_»¶aû +("'", "\\'", +$v®ue +) : $value; + +66 + } +} + +73 +public + +funùiÚ + + $g‘Ty³ +() + +75  +$this +-> +cÚfig +['type']; + +76 + } +} + +83 +public + +funùiÚ + + $isR—l +() + +85  + `is£t +( +$this +-> +cÚfig +['is_»®']è? $this->cÚfig['is_»®'] : +çl£ +; + +86 + } +} + +93 +public + +funùiÚ + + $isP¬tŸl +() + +95  + `is£t +( +$this +-> +cÚfig +['is_·¹Ÿl']è? $this->cÚfig['is_·¹Ÿl'] : +çl£ +; + +96 + } +} + +103 +public + +funùiÚ + + $£tP¬tŸl +( +$boޗn +) + +105 +$this +-> +cÚfig +['is_·¹Ÿl'] = +$boޗn +; + +106 + } +} + +113 +public + +funùiÚ + + $isCompڒt +() + +115  + `is£t +( +$this +-> +cÚfig +['is_compڒt']è? $this->cÚfig['is_compڒt'] : +çl£ +; + +116 + } +} + +123 +public + +funùiÚ + + $£tCompڒt +( +$boޗn +) + +125 +$this +-> +cÚfig +['is_compڒt'] = +$boޗn +; + +126 + } +} + +133 +public + +funùiÚ + + $isLšk +() + +135  + `is£t +( +$this +-> +cÚfig +['is_lšk']è? $this->cÚfig['is_lšk'] : +çl£ +; + +136 + } +} + +143 +public + +funùiÚ + + $£tLšk +( +$boޗn +) + +145 +$this +-> +cÚfig +['is_lšk'] = +$boޗn +; + +146 + } +} + +153 +public + +funùiÚ + + $£tR’d”” +( +$»nd”” +) + +155 +$this +-> +cÚfig +['»nd””'] = +$»nd”” +; + +156 + } +} + +163 +public + +funùiÚ + + $g‘R’d”” +() + +165  + `is£t +( +$this +-> +cÚfig +['»nd””']è? $this->cÚfig['»nd””'] : +nuÎ +; + +166 + } +} + +173 +public + +funùiÚ + + $£tR’d””Argum’ts +( +¬¿y + +$¬gum’ts +) + +175 +$this +-> +cÚfig +['»nd””_¬gum’ts'] = +$¬gum’ts +; + +176 + } +} + +183 +public + +funùiÚ + + $g‘R’d””Argum’ts +() + +185  + `is£t +( +$this +-> +cÚfig +['»nd””_¬gum’ts']è? $this->cÚfig['»nd””_¬gum’ts'] : + `¬¿y +(); + +186 + } +} + +188  +public + +funùiÚ + + $¥l™F›ldW™hFÏg +( +$f›ld +) + +190 ià( + `š_¬¿y +( +$æag + = +$f›ld +[0], + `¬¿y +('=', '_', '~'))) + +192 +$f›ld + = + `sub¡r +($field, 1); + +196 +$æag + = +nuÎ +; + +199  + `¬¿y +( +$f›ld +, +$æag +); + +200 + } +} + +209 +public + +funùiÚ + + $£tFÏg +( +$æag +) + +211 ià( +nuÎ + ==ð +$æag +) + +216  +$æag +) + +219 +$this +-> + `£tLšk +( +Œue +); + +222 +$this +-> + `£tP¬tŸl +( +Œue +); + +225 +$this +-> + `£tCompڒt +( +Œue +); + +228 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('FÏg "%s" dÛ nكxi¡.', +$æag +)); + +230 + } +} + +243 +public + +funùiÚ + + $g‘FÏg +() + +245 ià( +$this +-> + `isLšk +()) + +249 ià( +$this +-> + `isP¬tŸl +()) + +253 ià( +$this +-> + `isCompڒt +()) + +259 + } +} + + @lib/vendor/symfony/lib/generator/sfModelGeneratorHelper.class.php + +1 '. + `lšk_to +( + `__ +( +$·¿ms +['Ïb–'], + `¬¿y +(), 'sf_admš'), '@'. +$this +-> + `g‘U¾FÜAùiÚ +('new')).''; + +20 +public + +funùiÚ + + $lškToEd™ +( +$objeù +, +$·¿ms +) + +22  ''. + `lšk_to +( + `__ +( +$·¿ms +['Ïb–'], + `¬¿y +(), 'sf_admš'), +$this +-> + `g‘U¾FÜAùiÚ +('ed™'), +$objeù +).''; + +23 + } +} + +25 +public + +funùiÚ + + $lškToD–‘e +( +$objeù +, +$·¿ms +) + +27 ià( +$objeù +-> + `isNew +()) + +32  ''. + `lšk_to +( + `__ +( +$·¿ms +['Ïb–'], + `¬¿y +(), 'sf_admš'), +$this +-> + `g‘U¾FÜAùiÚ +('d–‘e'), +$objeù +,‡¼ay('m‘hod' => 'd–‘e', 'cÚfœm' => ! + `em±y +($params['confirm']) ? __($params['confirm'],‡rray(), 'sf_admin') : $params['confirm'])).''; + +33 + } +} + +35 +public + +funùiÚ + + $lškToLi¡ +( +$·¿ms +) + +37  ''. + `lšk_to +( + `__ +( +$·¿ms +['Ïb–'], + `¬¿y +(), 'sf_admš'), '@'. +$this +-> + `g‘U¾FÜAùiÚ +('list')).''; + +38 + } +} + +40 +public + +funùiÚ + + $lškToSave +( +$objeù +, +$·¿ms +) + +42  '<špuˆty³="subm™" v®ue="'. + `__ +( +$·¿ms +['Ïb–'], + `¬¿y +(), 'sf_admin').'" />'; + +43 + } +} + +45 +public + +funùiÚ + + $lškToSaveAndAdd +( +$objeù +, +$·¿ms +) + +47 ià(! +$objeù +-> + `isNew +()) + +52  '<špuˆty³="subm™" v®ue="'. + `__ +( +$·¿ms +['Ïb–'], + `¬¿y +(), 'sf_admin').'"‚ame="_save_and_add" />'; + +53 + } +} + + @lib/vendor/symfony/lib/helper/AssetHelper.php + +1 + `is£t +( +$g_ÝtiÚs +['rel']) ? $tag_options['rel'] : 'alternate', + +50 'ty³' => + `is£t +( +$g_ÝtiÚs +['ty³']è? $g_ÝtiÚs['ty³'] : '­¶iÿtiÚ/'. +$ty³ +.'+xml', + +51 't™Ë' => + `is£t +( +$g_ÝtiÚs +['t™Ë']è? $g_ÝtiÚs['t™Ë'] : + `ucfœ¡ +( +$ty³ +), + +52 'h»f' => + `u¾_fÜ +( +$u¾ +, +Œue +) + +54 + } +} + +76 +funùiÚ + + $javasüt_·th +( +$sourû +, +$absÞu‹ + = +çl£ +) + +78  + `_compu‹_public_·th +( +$sourû +, +sfCÚfig +:: + `g‘ +('sf_web_js_dœ_Çme', 'js'), 'js', +$absÞu‹ +); + +79 + } +} + +99 +funùiÚ + + $javasüt_šþude_g +() + +101 +$sourûs + = + `func_g‘_¬gs +(); + +102 +$sourûO±iÚs + = ( + `func_num_¬gs +(è> 1 && + `is_¬¿y +( +$sourûs +[func_num_¬gs(è- 1])è? + `¬¿y_pÝ +($sourûsè: + `¬¿y +(); + +104 +$html + = ''; + +105 + `fܗch + ( +$sourûs + +as + +$sourû +) + +107 +$absÞu‹ + = +çl£ +; + +108 ià( + `is£t +( +$sourûO±iÚs +['absolute'])) + +110 + `un£t +( +$sourûO±iÚs +['absolute']); + +111 +$absÞu‹ + = +Œue +; + +114 +$cÚd™iÚ + = +nuÎ +; + +115 ià( + `is£t +( +$sourûO±iÚs +['condition'])) + +117 +$cÚd™iÚ + = +$sourûO±iÚs +['condition']; + +118 + `un£t +( +$sourûO±iÚs +['condition']); + +121 ià(! + `is£t +( +$sourûO±iÚs +['raw_name'])) + +123 +$sourû + = + `javasüt_·th +($sourû, +$absÞu‹ +); + +127 + `un£t +( +$sourûO±iÚs +['raw_name']); + +130 +$ÝtiÚs + = + `¬¿y_m”ge +( + `¬¿y +('ty³' => '‹xt/javasüt', '¤c' => +$sourû +), +$sourûO±iÚs +); + +131 +$g + = + `cڋÁ_g +('süt', '', +$ÝtiÚs +); + +133 ià( +nuÎ + !=ð +$cÚd™iÚ +) + +135 +$g + = + `comm’t_as_cÚd™iÚ® +( +$cÚd™iÚ +, $tag); + +138 +$html + .ð +$g +."\n"; + +141  +$html +; + +142 + } +} + +164 +funùiÚ + + $¡yËsh“t_·th +( +$sourû +, +$absÞu‹ + = +çl£ +) + +166  + `_compu‹_public_·th +( +$sourû +, +sfCÚfig +:: + `g‘ +('sf_web_css_dœ_Çme', 'css'), 'css', +$absÞu‹ +); + +167 + } +} + +197 +funùiÚ + + $¡yËsh“t_g +() + +199 +$sourûs + = + `func_g‘_¬gs +(); + +200 +$sourûO±iÚs + = ( + `func_num_¬gs +(è> 1 && + `is_¬¿y +( +$sourûs +[func_num_¬gs(è- 1])è? + `¬¿y_pÝ +($sourûsè: + `¬¿y +(); + +202 +$html + = ''; + +203 + `fܗch + ( +$sourûs + +as + +$sourû +) + +205 +$absÞu‹ + = +çl£ +; + +206 ià( + `is£t +( +$sourûO±iÚs +['absolute'])) + +208 + `un£t +( +$sourûO±iÚs +['absolute']); + +209 +$absÞu‹ + = +Œue +; + +212 +$cÚd™iÚ + = +nuÎ +; + +213 ià( + `is£t +( +$sourûO±iÚs +['condition'])) + +215 +$cÚd™iÚ + = +$sourûO±iÚs +['condition']; + +216 + `un£t +( +$sourûO±iÚs +['condition']); + +219 ià(! + `is£t +( +$sourûO±iÚs +['raw_name'])) + +221 +$sourû + = + `¡yËsh“t_·th +($sourû, +$absÞu‹ +); + +225 + `un£t +( +$sourûO±iÚs +['raw_name']); + +228 +$ÝtiÚs + = + `¬¿y_m”ge +( + `¬¿y +('»l' => '¡yËsh“t', 'ty³' => '‹xt/css', 'medŸ' => 'sü“n', 'h»f' => +$sourû +), +$sourûO±iÚs +); + +229 +$g + = + `g +('lšk', +$ÝtiÚs +); + +231 ià( +nuÎ + !=ð +$cÚd™iÚ +) + +233 +$g + = + `comm’t_as_cÚd™iÚ® +( +$cÚd™iÚ +, $tag); + +236 +$html + .ð +$g +."\n"; + +239  +$html +; + +240 + } +} + +247 +funùiÚ + +u£_¡yËsh“t +( +$css +, +$pos™iÚ + = '', +$ÝtiÚs + = + $¬¿y +()) + +249 +sfCڋxt +:: + `g‘In¡ªû +()-> + `g‘Re¥Ú£ +()-> + `addStyËsh“t +( +$css +, +$pos™iÚ +, +$ÝtiÚs +); + +250 + } +} + +257 +funùiÚ + +u£_javasüt +( +$js +, +$pos™iÚ + = '', +$ÝtiÚs + = + $¬¿y +()) + +259 +sfCڋxt +:: + `g‘In¡ªû +()-> + `g‘Re¥Ú£ +()-> + `addJavasüt +( +$js +, +$pos™iÚ +, +$ÝtiÚs +); + +260 + } +} + +267 +funùiÚ + + $decÜ©e_w™h +( +$Ïyout +) + +269 ià( +çl£ + ==ð +$Ïyout +) + +271 +sfCڋxt +:: + `g‘In¡ªû +()-> + `g‘ +('v›w_š¡ªû')-> + `£tDecÜ©Ü +( +çl£ +); + +275 +sfCڋxt +:: + `g‘In¡ªû +()-> + `g‘ +('v›w_š¡ªû')-> + `£tDecÜ©ÜTem¶©e +( +$Ïyout +); + +277 + } +} + +299 +funùiÚ + + $image_·th +( +$sourû +, +$absÞu‹ + = +çl£ +) + +301  + `_compu‹_public_·th +( +$sourû +, +sfCÚfig +:: + `g‘ +('sf_web_images_dœ_Çme', 'images'), '²g', +$absÞu‹ +); + +302 + } +} + +326 +funùiÚ + +image_g +( +$sourû +, +$ÝtiÚs + = + $¬¿y +()) + +328 ià(! +$sourû +) + +333 +$ÝtiÚs + = + `_·r£_©Œibu‹s +($options); + +335 +$absÞu‹ + = +çl£ +; + +336 ià( + `is£t +( +$ÝtiÚs +['absolute'])) + +338 + `un£t +( +$ÝtiÚs +['absolute']); + +339 +$absÞu‹ + = +Œue +; + +342 ià(! + `is£t +( +$ÝtiÚs +['raw_name'])) + +344 +$ÝtiÚs +['¤c'] = + `image_·th +( +$sourû +, +$absÞu‹ +); + +348 +$ÝtiÚs +['¤c'] = +$sourû +; + +349 + `un£t +( +$ÝtiÚs +['raw_name']); + +352 ià( + `is£t +( +$ÝtiÚs +['alt_title'])) + +355 ià(! + `is£t +( +$ÝtiÚs +['alt'])) + +357 +$ÝtiÚs +['alt'] = $options['alt_title']; + +359 ià(! + `is£t +( +$ÝtiÚs +['title'])) + +361 +$ÝtiÚs +['title'] = $options['alt_title']; + +363 + `un£t +( +$ÝtiÚs +['alt_title']); + +366 ià( + `is£t +( +$ÝtiÚs +['size'])) + +368 + `li¡ +( +$ÝtiÚs +['width'], $ÝtiÚs['height']èð + `ex¶ode +('x', $options['size'], 2); + +369 + `un£t +( +$ÝtiÚs +['size']); + +372  + `g +('img', +$ÝtiÚs +); + +373 + } +} + +375 +funùiÚ + + $_compu‹_public_·th +( +$sourû +, +$dœ +, +$ext +, +$absÞu‹ + = +çl£ +) + +377 ià( + `¡½os +( +$sourû +, '://') || strpos($source, '//') === 0) + +379  +$sourû +; + +382 +$»que¡ + = +sfCڋxt +:: + `g‘In¡ªû +()-> + `g‘Reque¡ +(); + +383 +$sf_»Ïtive_u¾_roÙ + = +$»que¡ +-> + `g‘R–©iveU¾RoÙ +(); + +384 ià(0 !=ð + `¡½os +( +$sourû +, '/')) + +386 +$sourû + = +$sf_»Ïtive_u¾_roÙ +.'/'. +$dœ +.'/'.$source; + +389 +$qu”y_¡ršg + = ''; + +390 ià( +çl£ + !=ð +$pos + = + `¡½os +( +$sourû +, '?')) + +392 +$qu”y_¡ršg + = + `sub¡r +( +$sourû +, +$pos +); + +393 +$sourû + = + `sub¡r +($sourû, 0, +$pos +); + +396 ià( +çl£ + ==ð + `¡½os +( + `ba£Çme +( +$sourû +), '.')) + +398 +$sourû + .ð'.'. +$ext +; + +401 ià( +$sf_»Ïtive_u¾_roÙ + && 0 !=ð + `¡½os +( +$sourû +, $sf_relative_url_root)) + +403 +$sourû + = +$sf_»Ïtive_u¾_roÙ +.$source; + +406 ià( +$absÞu‹ +) + +408 +$sourû + = 'h‰p'.( +$»que¡ +-> + `isSecu» +(è? 's' : '').'://'.$»que¡-> + `g‘Ho¡ +().$source; + +411  +$sourû +. +$qu”y_¡ršg +; + +412 + } +} + +434 +funùiÚ + + $šþude_m‘as +() + +436 +$cڋxt + = +sfCڋxt +:: + `g‘In¡ªû +(); + +437 +$i18n + = +sfCÚfig +:: + `g‘ +('sf_i18n'è? +$cڋxt +-> + `g‘I18N +(è: +nuÎ +; + +438 + `fܗch + ( +$cڋxt +-> + `g‘Re¥Ú£ +()-> + `g‘M‘as +(è +as + +$Çme + => +$cڋÁ +) + +440 +echo + + `g +('m‘a', + `¬¿y +('Çme' => +$Çme +, 'cڋÁ' => +nuÎ + ==ð +$i18n + ? +$cڋÁ + : $i18n-> + `__ +($content)))."\n"; + +442 + } +} + +460 +funùiÚ + + $šþude_h‰p_m‘as +() + +462 + `fܗch + ( +sfCڋxt +:: + `g‘In¡ªû +()-> + `g‘Re¥Ú£ +()-> + `g‘H‰pM‘as +(è +as + +$h‰³quiv + => +$v®ue +) + +464 +echo + + `g +('m‘a', + `¬¿y +('h‰p-equiv' => +$h‰³quiv +, 'cڋÁ' => +$v®ue +))."\n"; + +466 + } +} + +476 +funùiÚ + + $šþude_t™Ë +() + +478 +$t™Ë + = +sfCڋxt +:: + `g‘In¡ªû +()-> + `g‘Re¥Ú£ +()-> + `g‘T™Ë +(); + +480 +echo + + `cڋÁ_g +('t™Ë', +$t™Ë +)."\n"; + +481 + } +} + +492 +funùiÚ + + $g‘_javasüts +() + +494 +$»¥Ú£ + = +sfCڋxt +:: + `g‘In¡ªû +()-> + `g‘Re¥Ú£ +(); + +495 +sfCÚfig +:: + `£t +('symfÚy.as£t.javasüts_šþuded', +Œue +); + +497 +$html + = ''; + +498 + `fܗch + ( +$»¥Ú£ +-> + `g‘Javasüts +(è +as + +$fže + => +$ÝtiÚs +) + +500 +$html + .ð + `javasüt_šþude_g +( +$fže +, +$ÝtiÚs +); + +503  +$html +; + +504 + } +} + +511 +funùiÚ + + $šþude_javasüts +() + +513 +echo + + `g‘_javasüts +(); + +514 + } +} + +525 +funùiÚ + + $g‘_¡yËsh“ts +() + +527 +$»¥Ú£ + = +sfCڋxt +:: + `g‘In¡ªû +()-> + `g‘Re¥Ú£ +(); + +528 +sfCÚfig +:: + `£t +('symfÚy.as£t.¡yËsh“ts_šþuded', +Œue +); + +530 +$html + = ''; + +531 + `fܗch + ( +$»¥Ú£ +-> + `g‘StyËsh“ts +(è +as + +$fže + => +$ÝtiÚs +) + +533 +$html + .ð + `¡yËsh“t_g +( +$fže +, +$ÝtiÚs +); + +536  +$html +; + +537 + } +} + +544 +funùiÚ + + $šþude_¡yËsh“ts +() + +546 +echo + + `g‘_¡yËsh“ts +(); + +547 + } +} + +561 +funùiÚ + +dyÇmic_javasüt_šþude_g +( +$uri +, +$absÞu‹ + = +çl£ +, +$ÝtiÚs + = + $¬¿y +()) + +563 +$ÝtiÚs +['¿w_Çme'] = +Œue +; + +565  + `javasüt_šþude_g +( + `_dyÇmic_·th +( +$uri +, 'js', +$absÞu‹ +), +$ÝtiÚs +); + +566 + } +} + +576 +funùiÚ + +u£_dyÇmic_javasüt +( +$js +, +$pos™iÚ + = '', +$ÝtiÚs + = + $¬¿y +()) + +578 +$ÝtiÚs +['¿w_Çme'] = +Œue +; + +580  + `u£_javasüt +( + `_dyÇmic_·th +( +$js +, 'js'), +$pos™iÚ +, +$ÝtiÚs +); + +581 + } +} + +591 +funùiÚ + +u£_dyÇmic_¡yËsh“t +( +$css +, +$pos™iÚ + = '', +$ÝtiÚs + = + $¬¿y +()) + +593 +$ÝtiÚs +['¿w_Çme'] = +Œue +; + +595  + `u£_¡yËsh“t +( + `_dyÇmic_·th +( +$css +, 'css'), +$pos™iÚ +, +$ÝtiÚs +); + +596 + } +} + +598 +funùiÚ + + $_dyÇmic_·th +( +$uri +, +$fÜm© +, +$absÞu‹ + = +çl£ +) + +600  + `u¾_fÜ +( +$uri +.( +çl£ + ==ð + `¡½os +($uri, '?'è? '?' : '&').'sf_fÜm©='. +$fÜm© +, +$absÞu‹ +); + +601 + } +} + +621 +funùiÚ + + $g‘_javasüts_fÜ_fÜm +( +sfFÜm + +$fÜm +) + +623 +$html + = ''; + +624 + `fܗch + ( +$fÜm +-> + `g‘Javasüts +(è +as + +$fže +) + +626 +$html + .ð + `javasüt_šþude_g +( +$fže +); + +629  +$html +; + +630 + } +} + +637 +funùiÚ + + $šþude_javasüts_fÜ_fÜm +( +sfFÜm + +$fÜm +) + +639 +echo + + `g‘_javasüts_fÜ_fÜm +( +$fÜm +); + +640 + } +} + +647 +funùiÚ + + $u£_javasüts_fÜ_fÜm +( +sfFÜm + +$fÜm +) + +649 +$»¥Ú£ + = +sfCڋxt +:: + `g‘In¡ªû +()-> + `g‘Re¥Ú£ +(); + +651 + `fܗch + ( +$fÜm +-> + `g‘Javasüts +(è +as + +$fže +) + +653 +$»¥Ú£ +-> + `addJavasüt +( +$fže +); + +655 + } +} + +675 +funùiÚ + + $g‘_¡yËsh“ts_fÜ_fÜm +( +sfFÜm + +$fÜm +) + +677 +$html + = ''; + +678 + `fܗch + ( +$fÜm +-> + `g‘StyËsh“ts +(è +as + +$fže + => +$medŸ +) + +680 +$html + .ð + `¡yËsh“t_g +( +$fže +, + `¬¿y +('medŸ' => +$medŸ +)); + +683  +$html +; + +684 + } +} + +691 +funùiÚ + + $šþude_¡yËsh“ts_fÜ_fÜm +( +sfFÜm + +$fÜm +) + +693 +echo + + `g‘_¡yËsh“ts_fÜ_fÜm +( +$fÜm +); + +694 + } +} + +701 +funùiÚ + + $u£_¡yËsh“ts_fÜ_fÜm +( +sfFÜm + +$fÜm +) + +703 +$»¥Ú£ + = +sfCڋxt +:: + `g‘In¡ªû +()-> + `g‘Re¥Ú£ +(); + +705 + `fܗch + ( +$fÜm +-> + `g‘StyËsh“ts +(è +as + +$fže + => +$medŸ +) + +707 +$»¥Ú£ +-> + `addStyËsh“t +( +$fže +, '', + `¬¿y +('medŸ' => +$medŸ +)); + +709 + } +} + + @lib/vendor/symfony/lib/helper/CacheHelper.php + +1 + `g‘V›wCacheMªag” +(); + +39 ià( +sfCÚfig +:: + `g‘ +('symfony.cache.started')) + +41 +throw + +Ãw + + `sfCacheExû±iÚ +('Cache‡lready started.'); + +44 +$d©a + = +$ÿche +-> + `¡¬t +( +$Çme +, +$liãTime +); + +46 ià( +nuÎ + ==ð +$d©a +) + +48 +sfCÚfig +:: + `£t +('symfÚy.ÿche.¡¬‹d', +Œue +); + +49 +sfCÚfig +:: + `£t +('symfÚy.ÿche.cu¼’t_Çme', +$Çme +); + +51  +çl£ +; + +55 +echo + +$d©a +; + +57  +Œue +; + +59 + } +} + +61 +funùiÚ + + $ÿche_§ve +() + +63 ià(! +sfCÚfig +:: + `g‘ +('sf_cache')) + +65  +nuÎ +; + +68 ià(! +sfCÚfig +:: + `g‘ +('symfony.cache.started')) + +70 +throw + +Ãw + + `sfCacheExû±iÚ +('Cache‚ot started.'); + +73 +$d©a + = +sfCڋxt +:: + `g‘In¡ªû +()-> + `g‘V›wCacheMªag” +()-> + `¡Ý +( +sfCÚfig +:: + `g‘ +('symfony.cache.current_name', '')); + +75 +sfCÚfig +:: + `£t +('symfÚy.ÿche.¡¬‹d', +çl£ +); + +76 +sfCÚfig +:: + `£t +('symfÚy.ÿche.cu¼’t_Çme', +nuÎ +); + +78 +echo + +$d©a +; + +79 + } +} + + @lib/vendor/symfony/lib/helper/DateHelper.php + +1 +g‘U£r +()-> +g‘CuÉu» +(); + +50 ià(! + g$ch¬£t +) + +52 + g$ch¬£t + = +sfCÚfig +:: +g‘ +('sf_charset'); + +55 ià(! +is£t +( +$d©eFÜm©s +[ +$cuÉu» +])) + +57 + g$d©eFÜm©s +[ +$cuÉu» +] = +Ãw + +sfD©eFÜm© +($culture); + +60  + g$d©eFÜm©s +[ +$cuÉu» +]-> +fÜm© +( +$d©e +, +$fÜm© +, +nuÎ +, +$ch¬£t +); + +63 +funùiÚ + +fÜm©_d©‘ime +( +$d©e +, +$fÜm© + = 'F', +$cuÉu» + = +nuÎ +, +$ch¬£t + =‚ull) + +65  +fÜm©_d©e +( +$d©e +, +$fÜm© +, +$cuÉu» +, +$ch¬£t +); + +68 +funùiÚ + + $di¡ªû_of_time_š_wÜds +( +$äom_time +, +$to_time + = +nuÎ +, +$šþude_£cÚds + = +çl£ +) + +70 +$to_time + = $to_time? $to_time: + `time +(); + +72 +$di¡ªû_š_mšu‹s + = + `æoÜ +( + `abs +( +$to_time + - +$äom_time +) / 60); + +73 +$di¡ªû_š_£cÚds + = + `æoÜ +( + `abs +( +$to_time + - +$äom_time +)); + +75 +$¡ršg + = ''; + +76 +$·¿m‘”s + = + `¬¿y +(); + +78 ià( +$di¡ªû_š_mšu‹s + <= 1) + +80 ià(! +$šþude_£cÚds +) + +82 +$¡ršg + = +$di¡ªû_š_mšu‹s + == 0 ? 'lesshan‡ minute' : '1 minute'; + +86 ià( +$di¡ªû_š_£cÚds + <= 5) + +88 +$¡ršg + = 'lesshan 5 seconds'; + +90 ià( +$di¡ªû_š_£cÚds + >= 6 && $distance_in_seconds <= 10) + +92 +$¡ršg + = 'lesshan 10 seconds'; + +94 ià( +$di¡ªû_š_£cÚds + >= 11 && $distance_in_seconds <= 20) + +96 +$¡ršg + = 'lesshan 20 seconds'; + +98 ià( +$di¡ªû_š_£cÚds + >= 21 && $distance_in_seconds <= 40) + +100 +$¡ršg + = 'half‡ minute'; + +102 ià( +$di¡ªû_š_£cÚds + >= 41 && $distance_in_seconds <= 59) + +104 +$¡ršg + = 'lesshan‡ minute'; + +108 +$¡ršg + = '1 minute'; + +112 ià( +$di¡ªû_š_mšu‹s + >= 2 && $distance_in_minutes <= 44) + +114 +$¡ršg + = '%minutes% minutes'; + +115 +$·¿m‘”s +['%mšu‹s%'] = +$di¡ªû_š_mšu‹s +; + +117 ià( +$di¡ªû_š_mšu‹s + >= 45 && $distance_in_minutes <= 89) + +119 +$¡ršg + = 'about 1 hour'; + +121 ià( +$di¡ªû_š_mšu‹s + >= 90 && $distance_in_minutes <= 1439) + +123 +$¡ršg + = 'about %hours% hours'; + +124 +$·¿m‘”s +['%hours%'] = + `round +( +$di¡ªû_š_mšu‹s + / 60); + +126 ià( +$di¡ªû_š_mšu‹s + >= 1440 && $distance_in_minutes <= 2879) + +128 +$¡ršg + = '1 day'; + +130 ià( +$di¡ªû_š_mšu‹s + >= 2880 && $distance_in_minutes <= 43199) + +132 +$¡ršg + = '%days% days'; + +133 +$·¿m‘”s +['%days%'] = + `round +( +$di¡ªû_š_mšu‹s + / 1440); + +135 ià( +$di¡ªû_š_mšu‹s + >= 43200 && $distance_in_minutes <= 86399) + +137 +$¡ršg + = 'about 1 month'; + +139 ià( +$di¡ªû_š_mšu‹s + >= 86400 && $distance_in_minutes <= 525959) + +141 +$¡ršg + = '%months% months'; + +142 +$·¿m‘”s +['%mÚths%'] = + `round +( +$di¡ªû_š_mšu‹s + / 43200); + +144 ià( +$di¡ªû_š_mšu‹s + >= 525960 && $distance_in_minutes <= 1051919) + +146 +$¡ršg + = 'about 1 year'; + +150 +$¡ršg + = 'over %years% years'; + +151 +$·¿m‘”s +['%y—rs%'] = + `æoÜ +( +$di¡ªû_š_mšu‹s + / 525960); + +154 ià( +sfCÚfig +:: + `g‘ +('sf_i18n')) + +156 +»quœe_Úû + + `dœÇme +( +__FILE__ +).'/I18NHelper.php'; + +158  + `__ +( +$¡ršg +, +$·¿m‘”s +); + +162  + `¡¹r +( +$¡ršg +, +$·¿m‘”s +); + +164 + } +} + +167 +funùiÚ + + $time_ago_š_wÜds +( +$äom_time +, +$šþude_£cÚds + = +çl£ +) + +169  + `di¡ªû_of_time_š_wÜds +( +$äom_time +, + `time +(), +$šþude_£cÚds +); + +170 + } +} + + @lib/vendor/symfony/lib/helper/DebugHelper.php + +1 +g‘Ev’tDi¥©ch” +()-> +nÙify +( +Ãw + +sfEv’t +( +nuÎ +, '­¶iÿtiÚ.log', +¬¿y +( +$mes§ge +, '´iܙy' => +cÚ¡ªt +('sfLogg”::'. +¡¹ouµ” +( +$´iܙy +))))); + + @lib/vendor/symfony/lib/helper/EscapingHelper.php + +1 + `g‘CÚfigu¿tiÚ +()-> + `lßdH–³rs +( + `func_g‘_¬gs +(), $cڋxt-> + `g‘ModuËName +()); + +25 + } +} + + @lib/vendor/symfony/lib/helper/I18NHelper.php + +1 +g‘I18N +()-> +__ +( +$‹xt +, +$¬gs +, +$ÿlogue +); + +28 ià( +em±y +( +$¬gs +)) + +30 + g$¬gs + = +¬¿y +(); + +34 +fܗch + ( +$¬gs + +as + +$key + => +$v®ue +) + +36 ià( +is_objeù +( +$v®ue +è&& +m‘hod_exi¡s +($value, '__toString')) + +38 +$¬gs +[ +$key +] = +$v®ue +-> +__toSŒšg +(); + +42  +¡¹r +( +$‹xt +, +$¬gs +); + +63 +funùiÚ + +fÜm©_numb”_choiû +( +$‹xt +, +$¬gs + = +¬¿y +(), +$numb” +, +$ÿlogue + = 'messages') + +65 +$Œª¦©ed + = +__ +( +$‹xt +, +$¬gs +, +$ÿlogue +); + +67 + g$choiû + = +Ãw + +sfChoiûFÜm© +(); + +69 + g$»tv® + = +$choiû +-> +fÜm© +( +$Œª¦©ed +, +$numb” +); + +71 ià( + g$»tv® + ==ð +çl£ +) + +73 +throw + +Ãw + +sfExû±iÚ +( +¥rštf +('UÇbˁطr£ you¸choiû "%s".', +$Œª¦©ed +)); + +76  + g$»tv® +; + +79 +funùiÚ + + $fÜm©_couÁry +( +$couÁry_iso +, +$cuÉu» + = +nuÎ +) + +81 +$c + = +sfCuÉu»Info +:: + `g‘In¡ªû +( +$cuÉu» + ==ð +nuÎ + ? +sfCڋxt +::g‘In¡ªû()-> + `g‘U£r +()-> + `g‘CuÉu» +() : $culture); + +82 +$couÁr›s + = +$c +-> + `g‘CouÁr›s +(); + +84  + `is£t +( +$couÁr›s +[ +$couÁry_iso +]) ? $countries[$country_iso] : ''; + +85 + } +} + +87 +funùiÚ + + $fÜm©_Ïnguage +( +$Ïnguage_iso +, +$cuÉu» + = +nuÎ +) + +89 +$c + = +sfCuÉu»Info +:: + `g‘In¡ªû +( +$cuÉu» + ==ð +nuÎ + ? +sfCڋxt +::g‘In¡ªû()-> + `g‘U£r +()-> + `g‘CuÉu» +() : $culture); + +90 +$Ïnguages + = +$c +-> + `g‘Lªguages +(); + +92  + `is£t +( +$Ïnguages +[ +$Ïnguage_iso +]) ? $languages[$language_iso] : ''; + +93 + } +} + + @lib/vendor/symfony/lib/helper/JavascriptBaseHelper.php + +1 'text/javascript')); + +86 + `ob_¡¬t +(); + +88 + } +} + +90 +funùiÚ + + $’d_javasüt_g +() + +92 +echo + + `javasüt_g +( + `ob_g‘_þ—n +()); + +93 + } +} + +95 +funùiÚ + + $javasüt_cd©a_£ùiÚ +( +$cڋÁ +) + +97  "\n//". + `cd©a_£ùiÚ +("\n$content\n//")."\n"; + +98 + } +} + +104 +funùiÚ + + $if_javasüt +() + +106 ià(! +sfCڋxt +:: + `g‘In¡ªû +()-> + `g‘Reque¡ +()-> + `isXmlH‰pReque¡ +()) + +108 + `ob_¡¬t +(); + +110 + } +} + +116 +funùiÚ + + $’d_if_javasüt +() + +118 ià(! +sfCڋxt +:: + `g‘In¡ªû +()-> + `g‘Reque¡ +()-> + `isXmlH‰pReque¡ +()) + +120 +$cڋÁ + = + `ob_g‘_þ—n +(); + +121 +echo + + `javasüt_g +("docum’t.wr™e('" . + `esc_js_no_’t™›s +( +$cڋÁ +) . "');"); + +123 + } +} + +132 +funùiÚ + + $¬¿y_Ü_¡ršg_fÜ_javasüt +( +$ÝtiÚ +) + +134 ià( + `is_¬¿y +( +$ÝtiÚ +)) + +136  "['". + `još +('\',\'', +$ÝtiÚ +)."']"; + +138 ià( + `is_¡ršg +( +$ÝtiÚ +) && $option[0] != "'") + +142  +$ÝtiÚ +; + +143 + } +} + +151 +funùiÚ + + $ÝtiÚs_fÜ_javasüt +( +$ÝtiÚs +) + +153 +$Ýts + = + `¬¿y +(); + +154 + `fܗch + ( +$ÝtiÚs + +as + +$key + => +$v®ue +) + +156 ià( + `is_¬¿y +( +$v®ue +)) + +158 +$v®ue + = + `ÝtiÚs_fÜ_javasüt +($value); + +160 +$Ýts +[] = +$key +.":". + `boޗn_fÜ_javasüt +( +$v®ue +); + +162 + `sÜt +( +$Ýts +); + +164  '{'. + `još +(', ', +$Ýts +).'}'; + +165 + } +} + +174 +funùiÚ + + $boޗn_fÜ_javasüt +( +$boÞ +) + +176 ià( + `is_boÞ +( +$boÞ +)) + +178  ( +$boÞ +=== +Œue + ? 'true' : 'false'); + +180  +$boÞ +; + +181 + } +} + + @lib/vendor/symfony/lib/helper/NumberHelper.php + +1 + `fÜm© +( +$numb” +); + +30 + } +} + +32 +funùiÚ + + $fÜm©_cu¼’cy +( +$amouÁ +, +$cu¼’cy + = +nuÎ +, +$cuÉu» + =‚ull) + +34 ià( +nuÎ + ==ð +$amouÁ +) + +36  +nuÎ +; + +39 +$numb”FÜm© + = +Ãw + + `sfNumb”FÜm© +( + `_cu¼’t_Ïnguage +( +$cuÉu» +)); + +41  +$numb”FÜm© +-> + `fÜm© +( +$amouÁ +, 'c', +$cu¼’cy +); + +42 + } +} + +44 +funùiÚ + + $_cu¼’t_Ïnguage +( +$cuÉu» +) + +46  +$cuÉu» + ? $cuÉu» : +sfCڋxt +:: + `g‘In¡ªû +()-> + `g‘U£r +()-> + `g‘CuÉu» +(); + +47 + } +} + + @lib/vendor/symfony/lib/helper/PartialHelper.php + +1 + `g‘ +('view_instance'); + +60 ià(! +$v›wIn¡ªû +-> + `hasCompڒtSlÙ +( +$Çme +)) + +63 +throw + +Ãw + + `sfCÚfigu¿tiÚExû±iÚ +( + `¥rštf +('Thcompڒˆ¦Ù "%s" i nÙ s‘.', +$Çme +)); + +66 ià( +$compڒtSlÙ + = +$v›wIn¡ªû +-> + `g‘CompڒtSlÙ +( +$Çme +)) + +68  + `g‘_compڒt +( +$compڒtSlÙ +[0], $compڒtSlÙ[1], +$v¬s +); + +70 + } +} + +78 +funùiÚ + + $has_compڒt_¦Ù +( +$Çme +) + +80 +$v›wIn¡ªû + = +sfCڋxt +:: + `g‘In¡ªû +()-> + `g‘ +('view_instance'); + +83 ià(! +$v›wIn¡ªû +-> + `hasCompڒtSlÙ +( +$Çme +)) + +85  +çl£ +; + +89 ià( +$v›wIn¡ªû +-> + `g‘CompڒtSlÙ +( +$Çme +)) + +91  +Œue +; + +94  +çl£ +; + +95 + } +} + +113 +funùiÚ + +šþude_compڒt +( +$moduËName +, +$compڒtName +, +$v¬s + = + $¬¿y +()) + +115 +echo + + `g‘_compڒt +( +$moduËName +, +$compڒtName +, +$v¬s +); + +116 + } +} + +134 +funùiÚ + +g‘_compڒt +( +$moduËName +, +$compڒtName +, +$v¬s + = + $¬¿y +()) + +136 +$cڋxt + = +sfCڋxt +:: + `g‘In¡ªû +(); + +137 +$aùiÚName + = '_'. +$compڒtName +; + +139 + `»quœe +( +$cڋxt +-> + `g‘CÚfigCache +()-> + `checkCÚfig +('moduËs/'. +$moduËName +.'/config/module.yml')); + +141 +$þass + = +sfCÚfig +:: + `g‘ +('mod_'. + `¡¹Þow” +( +$moduËName +).'_partial_view_class', 'sf').'PartialView'; + +142 +$v›w + = +Ãw + + `$þass +( +$cڋxt +, +$moduËName +, +$aùiÚName +, ''); + +143 +$v›w +-> + `£tP¬tŸlV¬s +( +Œue + ==ð +sfCÚfig +:: + `g‘ +('sf_esÿpšg_¡¿‹gy'è? +sfOuutEsÿ³r +:: + `uÃsÿ³ +( +$v¬s +) : $vars); + +145 ià( +$»tv® + = +$v›w +-> + `g‘Cache +()) + +147  +$»tv® +; + +150 +$®lV¬s + = + `_ÿÎ_compڒt +( +$moduËName +, +$compڒtName +, +$v¬s +); + +152 ià( +nuÎ + !=ð +$®lV¬s +) + +155 +$v›w +-> + `g‘A‰ribu‹HÞd” +()-> + `add +( +$®lV¬s +); + +157  +$v›w +-> + `»nd” +(); + +159 + } +} + +180 +funùiÚ + +šþude_·¹Ÿl +( +$‹m¶©eName +, +$v¬s + = + $¬¿y +()) + +182 +echo + + `g‘_·¹Ÿl +( +$‹m¶©eName +, +$v¬s +); + +183 + } +} + +200 +funùiÚ + +g‘_·¹Ÿl +( +$‹m¶©eName +, +$v¬s + = + $¬¿y +()) + +202 +$cڋxt + = +sfCڋxt +:: + `g‘In¡ªû +(); + +205 ià( +çl£ + !=ð +$£p + = + `¡½os +( +$‹m¶©eName +, '/')) + +207 +$moduËName + = + `sub¡r +( +$‹m¶©eName +, 0, +$£p +); + +208 +$‹m¶©eName + = + `sub¡r +($‹m¶©eName, +$£p + + 1); + +212 +$moduËName + = +$cڋxt +-> + `g‘AùiÚSck +()-> + `g‘La¡EÁry +()-> + `g‘ModuËName +(); + +214 +$aùiÚName + = '_'. +$‹m¶©eName +; + +216 +$þass + = +sfCÚfig +:: + `g‘ +('mod_'. + `¡¹Þow” +( +$moduËName +).'_partial_view_class', 'sf').'PartialView'; + +217 +$v›w + = +Ãw + + `$þass +( +$cڋxt +, +$moduËName +, +$aùiÚName +, ''); + +218 +$v›w +-> + `£tP¬tŸlV¬s +( +Œue + ==ð +sfCÚfig +:: + `g‘ +('sf_esÿpšg_¡¿‹gy'è? +sfOuutEsÿ³r +:: + `uÃsÿ³ +( +$v¬s +) : $vars); + +220  +$v›w +-> + `»nd” +(); + +221 + } +} + +231 +funùiÚ + + $¦Ù +( +$Çme +, +$v®ue + = +nuÎ +) + +233 +$cڋxt + = +sfCڋxt +:: + `g‘In¡ªû +(); + +234 +$»¥Ú£ + = +$cڋxt +-> + `g‘Re¥Ú£ +(); + +236 +$¦Ù_Çmes + = +sfCÚfig +:: + `g‘ +('symfÚy.v›w.¦Ù_Çmes', + `¬¿y +()); + +237 ià( + `š_¬¿y +( +$Çme +, +$¦Ù_Çmes +)) + +239 +throw + +Ãw + + `sfCacheExû±iÚ +( + `¥rštf +('A slقamed "%s" i ®»ady s¹ed.', +$Çme +)); + +242 ià( +sfCÚfig +:: + `g‘ +('sf_logging_enabled')) + +244 +$cڋxt +-> + `g‘Ev’tDi¥©ch” +()-> + `nÙify +( +Ãw + + `sfEv’t +( +nuÎ +, '­¶iÿtiÚ.log', + `¬¿y +( + `¥rštf +('S‘ slÙ "%s"', +$Çme +)))); + +247 ià( +nuÎ + !=ð +$v®ue +) + +249 +$»¥Ú£ +-> + `£tSlÙ +( +$Çme +, +$v®ue +); + +254 +$¦Ù_Çmes +[] = +$Çme +; + +256 +$»¥Ú£ +-> + `£tSlÙ +( +$Çme +, ''); + +257 +sfCÚfig +:: + `£t +('symfÚy.v›w.¦Ù_Çmes', +$¦Ù_Çmes +); + +259 + `ob_¡¬t +(); + +260 + `ob_im¶ic™_æush +(0); + +261 + } +} + +268 +funùiÚ + + $’d_¦Ù +() + +270 +$cڋÁ + = + `ob_g‘_þ—n +(); + +272 +$»¥Ú£ + = +sfCڋxt +:: + `g‘In¡ªû +()-> + `g‘Re¥Ú£ +(); + +273 +$¦Ù_Çmes + = +sfCÚfig +:: + `g‘ +('symfÚy.v›w.¦Ù_Çmes', + `¬¿y +()); + +274 ià(! +$¦Ù_Çmes +) + +276 +throw + +Ãw + + `sfCacheExû±iÚ +('No slot started.'); + +279 +$Çme + = + `¬¿y_pÝ +( +$¦Ù_Çmes +); + +281 +$»¥Ú£ +-> + `£tSlÙ +( +$Çme +, +$cڋÁ +); + +282 +sfCÚfig +:: + `£t +('symfÚy.v›w.¦Ù_Çmes', +$¦Ù_Çmes +); + +283 + } +} + +293 +funùiÚ + + $has_¦Ù +( +$Çme +) + +295  + `¬¿y_key_exi¡s +( +$Çme +, +sfCڋxt +:: + `g‘In¡ªû +()-> + `g‘Re¥Ú£ +()-> + `g‘SlÙs +()); + +296 + } +} + +311 +funùiÚ + +šþude_¦Ù +( +$Çme +, +$deçuÉ + = '') + +313  ( +$v + = +g‘_¦Ù +( +$Çme +, +$deçuÉ +)è? +´št + + g$v + : +çl£ +; + +330 +funùiÚ + +g‘_¦Ù +( +$Çme +, +$deçuÉ + = '') + +332 +$cڋxt + = +sfCڋxt +:: +g‘In¡ªû +(); + +333 + g$¦Ùs + = +$cڋxt +-> +g‘Re¥Ú£ +()-> +g‘SlÙs +(); + +335 ià( + gsfCÚfig +:: +g‘ +('sf_logging_enabled')) + +337 +$cڋxt +-> +g‘Ev’tDi¥©ch” +()-> +nÙify +( +Ãw + +sfEv’t +( +nuÎ +, '­¶iÿtiÚ.log', +¬¿y +( +¥rštf +('G‘ slÙ "%s"', +$Çme +)))); + +340  +is£t +( +$¦Ùs +[ +$Çme +]è? + g$¦Ùs +[$Çme] : +$deçuÉ +; + +343 +funùiÚ + + $_ÿÎ_compڒt +( +$moduËName +, +$compڒtName +, +$v¬s +) + +345 +$cڋxt + = +sfCڋxt +:: + `g‘In¡ªû +(); + +347 +$cڌÞËr + = +$cڋxt +-> + `g‘CڌÞËr +(); + +349 ià(! +$cڌÞËr +-> + `compڒtExi¡s +( +$moduËName +, +$compڒtName +)) + +352 +throw + +Ãw + + `sfCÚfigu¿tiÚExû±iÚ +( + `¥rštf +('ThcompڒˆdÛ nكxi¡: "%s", "%s".', +$moduËName +, +$compڒtName +)); + +356 +$compڒtIn¡ªû + = +$cڌÞËr +-> + `g‘Compڒt +( +$moduËName +, +$compڒtName +); + +359 + `»quœe +( +$cڋxt +-> + `g‘CÚfigCache +()-> + `checkCÚfig +('moduËs/'. +$moduËName +.'/config/module.yml')); + +362 +$compڒtIn¡ªû +-> + `g‘V¬HÞd” +()-> + `add +( +Œue + ==ð +sfCÚfig +:: + `g‘ +('sf_esÿpšg_¡¿‹gy'è? +sfOuutEsÿ³r +:: + `uÃsÿ³ +( +$v¬s +) : $vars); + +365 +$compڒtToRun + = 'execu‹'. + `ucfœ¡ +( +$compڒtName +); + +366 ià(! + `m‘hod_exi¡s +( +$compڒtIn¡ªû +, +$compڒtToRun +)) + +368 ià(! + `m‘hod_exi¡s +( +$compڒtIn¡ªû +, 'execute')) + +371 +throw + +Ãw + + `sfIn™Ÿliz©iÚExû±iÚ +( + `¥rštf +('sfCompڒˆš™Ÿliz©iÚ fažed fÜ moduË "%s", compڒˆ"%s".', +$moduËName +, +$compڒtName +)); + +374 +$compڒtToRun + = 'execute'; + +377 ià( +sfCÚfig +:: + `g‘ +('sf_logging_enabled')) + +379 +$cڋxt +-> + `g‘Ev’tDi¥©ch” +()-> + `nÙify +( +Ãw + + `sfEv’t +( +nuÎ +, '­¶iÿtiÚ.log', + `¬¿y +( + `¥rštf +('C®È"%s->%s()'.'"', +$moduËName +, +$compڒtToRun +)))); + +383 ià( +sfCÚfig +:: + `g‘ +('sf_debug') && sfConfig::get('sf_logging_enabled')) + +385 +$tim” + = +sfTim”Mªag” +:: + `g‘Tim” +( + `¥rštf +('Compڒˆ"%s/%s"', +$moduËName +, +$compڒtName +)); + +388 +$»tv® + = +$compڒtIn¡ªû +-> + `$compڒtToRun +( +$cڋxt +-> + `g‘Reque¡ +()); + +390 ià( +sfCÚfig +:: + `g‘ +('sf_debug') && sfConfig::get('sf_logging_enabled')) + +392 +$tim” +-> + `addTime +(); + +395  +sfV›w +:: +NONE + =ð +$»tv® + ? +nuÎ + : +$compڒtIn¡ªû +-> + `g‘V¬HÞd” +()-> + `g‘AÎ +(); + +396 + } +} + + @lib/vendor/symfony/lib/helper/TagHelper.php + +1 ' : ' />'); + +40 +funùiÚ + +cڋÁ_g +( +$Çme +, +$cڋÁ + = '', +$ÝtiÚs + = + $¬¿y +()) + +42 ià(! +$Çme +) + +47  '<'. +$Çme +. + `_g_ÝtiÚs +( +$ÝtiÚs +).'>'. +$cڋÁ +.''; + +48 + } +} + +50 +funùiÚ + + $cd©a_£ùiÚ +( +$cڋÁ +) + +53 + } +} + +65 +funùiÚ + + $comm’t_as_cÚd™iÚ® +( +$cÚd™iÚ +, +$cڋÁ +) + +68 + } +} + +73 +funùiÚ + +esÿ³_javasüt +( +$javasüt + = '') + +75 +$javasüt + = +´eg_»¶aû +('/\r\n|\n|\r/', "\\n", $javascript); + +76 + g$javasüt + = +´eg_»¶aû +('/(["\'])/', '\\\\\1', +$javasüt +); + +78  + g$javasüt +; + +87 +funùiÚ + + $esÿ³_Úû +( +$html +) + +89  + `fix_doubË_esÿ³ +( + `html¥ecŸlch¬s +( +$html +, +ENT_COMPAT +, +sfCÚfig +:: + `g‘ +('sf_charset'))); + +90 + } +} + +98 +funùiÚ + + $fix_doubË_esÿ³ +( +$esÿ³d +) + +100  + `´eg_»¶aû +('/&([a-z]+|(#\d+)|(#x[\da-f]+));/i', '&$1;', +$esÿ³d +); + +101 + } +} + +103 +funùiÚ + +_g_ÝtiÚs +( +$ÝtiÚs + = + $¬¿y +()) + +105 +$ÝtiÚs + = + `_·r£_©Œibu‹s +($options); + +107 +$html + = ''; + +108 + `fܗch + ( +$ÝtiÚs + +as + +$key + => +$v®ue +) + +110 +$html + .ð' '. +$key +.'="'. + `esÿ³_Úû +( +$v®ue +).'"'; + +113  +$html +; + +114 + } +} + +116 +funùiÚ + + $_·r£_©Œibu‹s +( +$¡ršg +) + +118  + `is_¬¿y +( +$¡ršg +è? $¡ršg : +sfToÞk™ +:: + `¡ršgToA¼ay +($string); + +119 + } +} + +121 +funùiÚ + + $_g‘_ÝtiÚ +(& +$ÝtiÚs +, +$Çme +, +$deçuÉ + = +nuÎ +) + +123 ià( + `¬¿y_key_exi¡s +( +$Çme +, +$ÝtiÚs +)) + +125 +$v®ue + = +$ÝtiÚs +[ +$Çme +]; + +126 + `un£t +( +$ÝtiÚs +[ +$Çme +]); + +130 +$v®ue + = +$deçuÉ +; + +133  +$v®ue +; + +134 + } +} + +158 +funùiÚ + + $g‘_id_äom_Çme +( +$Çme +, +$v®ue + = +nuÎ +) + +161 ià( + `¡r¡r +( +$Çme +, '[')) + +163 +$Çme + = + `¡r_»¶aû +( + `¬¿y +('[]', '][', '[', ']'),‡¼ay((( +$v®ue + !ð +nuÎ +) ? '_'.$value : ''), '_', '_', ''), $name); + +166  +$Çme +; + +167 + } +} + +175 +funùiÚ + + $_cÚv”t_ÝtiÚs +( +$ÝtiÚs +) + +177 +$ÝtiÚs + = + `_·r£_©Œibu‹s +($options); + +179 + `fܗch + ( + `¬¿y +('di§bËd', '»adÚly', 'muɝË'è +as + +$©Œibu‹ +) + +181 ià( + `¬¿y_key_exi¡s +( +$©Œibu‹ +, +$ÝtiÚs +)) + +183 ià( +$ÝtiÚs +[ +$©Œibu‹ +]) + +185 +$ÝtiÚs +[ +$©Œibu‹ +] = $attribute; + +189 + `un£t +( +$ÝtiÚs +[ +$©Œibu‹ +]); + +194  +$ÝtiÚs +; + +195 + } +} + + @lib/vendor/symfony/lib/helper/TextHelper.php + +1 + g$Ëngth +) + +44 + g$Œunÿ‹_‹xt + = +$sub¡r +( +$‹xt +, 0, +$Ëngth + - +$¡¾’ +( +$Œunÿ‹_¡ršg +)); + +45 ià( + g$Œunÿ‹_Ï¡¥aû +) + +47 + g$Œunÿ‹_‹xt + = +´eg_»¶aû +('/\s+?(\S+)?$/', '', +$Œunÿ‹_‹xt +); + +49 + g$‹xt + = +$Œunÿ‹_‹xt +. +$Œunÿ‹_¡ršg +; + +52 if( + g$mb¡ršg +) + +54 @ +mb_š‹º®_’codšg +( +$Þd_’codšg +); + +57  + g$‹xt +; + +72 +funùiÚ + +highlight_‹xt +( +$‹xt +, +$ph¿£ +, +$highligh‹r + = '\\1') + +74 ià( +em±y +( +$‹xt +)) + +79 ià( +em±y +( +$ph¿£ +)) + +81  + g$‹xt +; + +84 ià( +is_¬¿y +( +$ph¿£ +è +Ü + ($ph¿£ +š¡ªûof + +sfOuutEsÿ³rA¼ayDecÜ©Ü +)) + +86 +fܗch + ( +$ph¿£ + +as + +$wÜd +) + +88 + g$·‰”n +[] = '/('. +´eg_quÙe +( +$wÜd +, '/').')/i'; + +89 + g$»¶aûm’t +[] = +$highligh‹r +; + +94 + g$·‰”n + = '/('. +´eg_quÙe +( +$ph¿£ +, '/').')/i'; + +95 + g$»¶aûm’t + = +$highligh‹r +; + +98  +´eg_»¶aû +( +$·‰”n +, +$»¶aûm’t +, +$‹xt +); + +109 +funùiÚ + +exû½t_‹xt +( +$‹xt +, +$ph¿£ +, +$¿dius + = 100, +$exû½t_¡ršg + = '...', +$exû½t_¥aû + = +çl£ +) + +111 ià( +$‹xt + =ð'' || +$ph¿£ + == '') + +116 + g$mb¡ršg + = +ex‹nsiÚ_lßded +('mbstring'); + +117 if( + g$mb¡ršg +) + +119 + g$Þd_’codšg + = +mb_š‹º®_’codšg +(); + +120 @ +mb_š‹º®_’codšg +( +mb_d‘eù_’codšg +( +$‹xt +)); + +122 + g$¡¾’ + = ( +$mb¡ršg +) ? 'mb_strlen' : 'strlen'; + +123 + g$¡½os + = ( +$mb¡ršg +) ? 'mb_strpos' : 'strpos'; + +124 + g$¡¹Þow” + = ( +$mb¡ršg +) ? 'mb_strtolower' : 'strtolower'; + +125 + g$sub¡r + = ( +$mb¡ršg +) ? 'mb_substr' : 'substr'; + +127 + g$found_pos + = +$¡½os +( +$¡¹Þow” +( +$‹xt +), $¡¹Þow”( +$ph¿£ +)); + +128 + g$»tuº_¡ršg + = ''; + +129 ià( + g$found_pos + !=ð +çl£ +) + +131 +$¡¬t_pos + = +max +( +$found_pos + - +$¿dius +, 0); + +132 + g$’d_pos + = +mš +( +$found_pos + + +$¡¾’ +( +$ph¿£ +è+ +$¿dius +, $¡¾’( +$‹xt +)); + +133 + g$exû½t + = +$sub¡r +( +$‹xt +, +$¡¬t_pos +, +$’d_pos + - $start_pos); + +134 + g$´efix + = ( +$¡¬t_pos + > 0è? +$exû½t_¡ršg + : ''; + +135 + g$po¡fix + = +$’d_pos + < +$¡¾’ +( +$‹xt +è? +$exû½t_¡ršg + : ''; + +137 ià( + g$exû½t_¥aû +) + +140 if( + g$´efix +) + +142 + g$exû½t + = +´eg_»¶aû +('/^(\S+)?\s+?/', ' ', +$exû½t +); + +144 if( + g$po¡fix +) + +146 + g$exû½t + = +´eg_»¶aû +('/\s+?(\S+)?$/', ' ', +$exû½t +); + +150 + g$»tuº_¡ršg + = +$´efix +. +$exû½t +. +$po¡fix +; + +153 if( + g$mb¡ršg +) + +155 @ +mb_š‹º®_’codšg +( +$Þd_’codšg +); + +157  + g$»tuº_¡ršg +; + +163 +funùiÚ + + $w¿p_‹xt +( +$‹xt +, +$lše_width + = 80) + +165  + `´eg_»¶aû +('/(.{1,'. +$lše_width +.'})(\s+|$)/s', "\\1\n",…»g_»¶aû("/\n/", "\n\n", +$‹xt +)); + +166 + } +} + +174 +funùiÚ + +sim¶e_fÜm©_‹xt +( +$‹xt +, +$ÝtiÚs + = + $¬¿y +()) + +176 +$css + = ( + `is£t +( +$ÝtiÚs +['class'])) ? ' class="'.$options['class'].'"' : ''; + +178 +$‹xt + = +sfToÞk™ +:: + `´egŒ +($‹xt, + `¬¿y +("/(\r\n|\r)/" => "\n", + +182 +$‹xt + = + `¡r_»¶aû +("\n", "\n
    ", $text); + +183  ''. +$‹xt +.'

    '; + +184 + } +} + +195 +funùiÚ + +auto_lšk_‹xt +( +$‹xt +, +$lšk + = '®l', +$h»f_ÝtiÚs + = +¬¿y +(), +$Œunÿ‹ + = +çl£ +, +$Œunÿ‹_Ën + = 35, +$·d + = '...') + +197 ià( +$lšk + == 'all') + +199  +_auto_lšk_u¾s +( +_auto_lšk_emaž_add»s£s +( +$‹xt +), +$h»f_ÝtiÚs +, +$Œunÿ‹ +, +$Œunÿ‹_Ën +, +$·d +); + +201 ià( + g$lšk + == 'email_addresses') + +203  +_auto_lšk_emaž_add»s£s +( +$‹xt +); + +205 ià( + g$lšk + == 'urls') + +207  +_auto_lšk_u¾s +( +$‹xt +, +$h»f_ÝtiÚs +, +$Œunÿ‹ +, +$Œunÿ‹_Ën +, +$·d +); + +214 +funùiÚ + + $¡r_lšks_‹xt +( +$‹xt +) + +216  + `´eg_»¶aû +('/]*>(.*?)<\/a>/s', '\\1', +$‹xt +); + +217 + } +} + +219 ià(! +defšed +('SF_AUTO_LINK_RE')) + +221 +defše +('SF_AUTO_LINK_RE', '~ + +222 Ð#Ëadšg +‹xt + + +223 <\ +w ++.*?>| #Ëadšg +HTML + +g +, +Ü + + +225 ^ #begšnšg +of + +lše + + +228 (?: +h‰ps +?: + +229 (?: +www +\.) #www.* + +232 [-\ +w +]+ #subdomaš +Ü + +domaš + + +233 (?:\.[-\ +w +]+)* #»maššg +subdomašs + +Ü + +domaš + + +234 (?::\ +d ++)? #port + +235 (?:/(?:(?:[\~\ +w +\+%-]|(?:[,.;:][^\ +s$ +]))+)?)* #path + +236 (?:\?[\ +w +\+%&=.;-]+)? #qu”y +¡ršg + + +237 (?:\#[\ +w +\-/\?!=]*)? #Œažšg +ªchÜ + + +239 ([[: +punù +:]]|\ +s +|<| +$ +è#Œažšg +‹xt + + +240 ~ +x +'); + +246 +funùiÚ + +_auto_lšk_u¾s +( +$‹xt +, +$h»f_ÝtiÚs + = +¬¿y +(), +$Œunÿ‹ + = +çl£ +, +$Œunÿ‹_Ën + = 40, +$·d + = '...') + +248 +$h»f_ÝtiÚs + = +_g_ÝtiÚs +($href_options); + +250 +$ÿÎback_funùiÚ + = ' + +251 ià( +´eg_m©ch +("/\'.sub¡r($m©ches[2].$m©ches[3], 0, '. +$Œunÿ‹_Ën +.').\''. +$·d +.'\'.$matches[4]; + +267 +$ÿÎback_funùiÚ + .= ' + +270  +$m©ches +[1].\'<¨h»f="\'.($m©ches[2] =ð"www." ? "h‰p://www." : $m©ches[2]).$m©ches[3].\'"'. +$h»f_ÝtiÚs +.'>\'.$matches[2].$matches[3].\'\'.$matches[4]; + +274  +´eg_»¶aû_ÿÎback +( + +275 +SF_AUTO_LINK_RE +, + +276 +ü—‹_funùiÚ +('$m©ches', +$ÿÎback_funùiÚ +), + +277 +$‹xt + + +284 +funùiÚ + + $_auto_lšk_emaž_add»s£s +( +$‹xt +) + +287  + `´eg_»¶aû +("#(^|[\À])([a-z0-9&\-_\.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+)#i", "\\1<¨h»f=\"mažto:\\2@\\3\">\\2@\\3", +$‹xt +); + +292 + } +} + + @lib/vendor/symfony/lib/helper/UrlHelper.php + +1 +$rou‹Name +), + `is_objeù +($params) ?‡rray('sf_subject' => $params) : $params); + +27  + `lšk_to1 +( +$Çme +, +$·¿ms +, +$ÝtiÚs +); + +28 + } +} + +33 +funùiÚ + +lšk_to1 +( +$Çme +, +$š‹º®_uri +, +$ÝtiÚs + = + $¬¿y +()) + +35 +$html_ÝtiÚs + = + `_·r£_©Œibu‹s +( +$ÝtiÚs +); + +37 +$html_ÝtiÚs + = + `_cÚv”t_ÝtiÚs_to_javasüt +($html_options); + +39 +$absÞu‹ + = +çl£ +; + +40 ià( + `is£t +( +$html_ÝtiÚs +['absolute_url'])) + +42 +$html_ÝtiÚs +['absolute'] = $html_options['absolute_url']; + +43 + `un£t +( +$html_ÝtiÚs +['absolute_url']); + +45 ià( + `is£t +( +$html_ÝtiÚs +['absolute'])) + +47 +$absÞu‹ + = ( +boޗn +è +$html_ÝtiÚs +['absolute']; + +48 + `un£t +( +$html_ÝtiÚs +['absolute']); + +51 +$html_ÝtiÚs +['h»f'] = + `u¾_fÜ +( +$š‹º®_uri +, +$absÞu‹ +); + +53 ià( + `is£t +( +$html_ÝtiÚs +['query_string'])) + +55 +$html_ÝtiÚs +['href'] .= '?'.$html_options['query_string']; + +56 + `un£t +( +$html_ÝtiÚs +['query_string']); + +59 ià( + `is£t +( +$html_ÝtiÚs +['anchor'])) + +61 +$html_ÝtiÚs +['href'] .= '#'.$html_options['anchor']; + +62 + `un£t +( +$html_ÝtiÚs +['anchor']); + +65 ià( + `is_objeù +( +$Çme +)) + +67 ià( + `m‘hod_exi¡s +( +$Çme +, '__toString')) + +69 +$Çme + = $Çme-> + `__toSŒšg +(); + +73 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('Objeù oàþas "%s" cªnÙ bcÚv”‹dØ¡ršg (PËa£ c»©¨__toSŒšg(èm‘hod).', + `g‘_þass +( +$Çme +))); + +77 ià(! + `¡¾’ +( +$Çme +)) + +79 +$Çme + = +$html_ÝtiÚs +['href']; + +82  + `cڋÁ_g +('a', +$Çme +, +$html_ÝtiÚs +); + +83 + } +} + +88 +funùiÚ + +u¾_fÜ2 +( +$rou‹Name +, +$·¿ms + = +¬¿y +(), +$absÞu‹ + = +çl£ +) + +90 +$·¿ms + = +¬¿y_m”ge +( +¬¿y +('sf_rou‹' => +$rou‹Name +), +is_objeù +($params) ?‡rray('sf_subject' => $params) : $params); + +92  +u¾_fÜ1 +( +$·¿ms +, +$absÞu‹ +); + +98 +funùiÚ + + $u¾_fÜ1 +( +$š‹º®_uri +, +$absÞu‹ + = +çl£ +) + +100  +sfCڋxt +:: + `g‘In¡ªû +()-> + `g‘CڌÞËr +()-> + `g’U¾ +( +$š‹º®_uri +, +$absÞu‹ +); + +101 + } +} + +121 +funùiÚ + + $u¾_fÜ +() + +124 +$¬gum’ts + = + `func_g‘_¬gs +(); + +125 ià( + `is_¬¿y +( +$¬gum’ts +[0]è|| '@' =ð + `sub¡r +($¬gum’ts[0], 0, 1è|| +çl£ + !=ð + `¡½os +($arguments[0], '/')) + +127  + `ÿÎ_u£r_func_¬¿y +('u¾_fÜ1', +$¬gum’ts +); + +131  + `ÿÎ_u£r_func_¬¿y +('u¾_fÜ2', +$¬gum’ts +); + +133 + } +} + +174 +funùiÚ + + $lšk_to +() + +177 +$¬gum’ts + = + `func_g‘_¬gs +(); + +178 ià( + `em±y +( +$¬gum’ts +[1]è|| + `is_¬¿y +($¬gum’ts[1]è|| '@' =ð + `sub¡r +($¬gum’ts[1], 0, 1è|| +çl£ + !=ð + `¡½os +($arguments[1], '/')) + +180  + `ÿÎ_u£r_func_¬¿y +('lšk_to1', +$¬gum’ts +); + +184 ià(! + `¬¿y_key_exi¡s +(2, +$¬gum’ts +)) + +186 +$¬gum’ts +[2] = + `¬¿y +(); + +188  + `ÿÎ_u£r_func_¬¿y +('lšk_to2', +$¬gum’ts +); + +190 + } +} + +192 +funùiÚ + + $u¾_fÜ_fÜm +( +sfFÜmObjeù + +$fÜm +, +$rou‹P»fix +) + +194 +$fÜm© + = '%s/%s'; + +195 ià('@' =ð +$rou‹P»fix +[0]) + +197 +$fÜm© + = '%s_%s'; + +198 +$rou‹P»fix + = + `sub¡r +($routePrefix, 1); + +201 +$uri + = + `¥rštf +( +$fÜm© +, +$rou‹P»fix +, +$fÜm +-> + `g‘Objeù +()-> + `isNew +() ? 'create' : 'update'); + +203  + `u¾_fÜ +( +$uri +, +$fÜm +-> + `g‘Objeù +()); + +204 + } +} + +206 +funùiÚ + +fÜm_g_fÜ +( +sfFÜm + +$fÜm +, +$rou‹P»fix +, +$©Œibu‹s + = + $¬¿y +()) + +208  +$fÜm +-> + `»nd”FÜmTag +( + `u¾_fÜ_fÜm +($fÜm, +$rou‹P»fix +), +$©Œibu‹s +); + +209 + } +} + +243 +funùiÚ + + $lšk_to_if +() + +245 +$¬gum’ts + = + `func_g‘_¬gs +(); + +246 ià( + `em±y +( +$¬gum’ts +[2]è|| '@' =ð + `sub¡r +($¬gum’ts[2], 0, 1è|| +çl£ + !=ð + `¡½os +($arguments[2], '/')) + +248 + `li¡ +( +$cÚd™iÚ +, +$Çme +, +$·¿ms +, +$ÝtiÚs +èð + `¬¿y_·d +( +$¬gum’ts +, 4, +nuÎ +); + +252 + `li¡ +( +$cÚd™iÚ +, +$Çme +, +$rou‹Name +, +$·¿ms +, +$ÝtiÚs +èð + `¬¿y_·d +( +$¬gum’ts +, 5, +nuÎ +); + +253 +$·¿ms + = + `¬¿y_m”ge +( + `¬¿y +('sf_rou‹' => +$rou‹Name +), + `is_objeù +($·¿msè?‡¼ay('sf_subjeù' => $·¿msè: ( +¬¿y +) $params); + +256 +$html_ÝtiÚs + = + `_·r£_©Œibu‹s +( +$ÝtiÚs +); + +257 ià( +$cÚd™iÚ +) + +259 + `un£t +( +$html_ÝtiÚs +['tag']); + +260  + `lšk_to1 +( +$Çme +, +$·¿ms +, +$html_ÝtiÚs +); + +264 + `un£t +( +$html_ÝtiÚs +['query_string']); + +265 + `un£t +( +$html_ÝtiÚs +['absolute_url']); + +266 + `un£t +( +$html_ÝtiÚs +['absolute']); + +268 +$g + = + `_g‘_ÝtiÚ +( +$html_ÝtiÚs +, 'tag', 'span'); + +270  + `cڋÁ_g +( +$g +, +$Çme +, +$html_ÝtiÚs +); + +272 + } +} + +306 +funùiÚ + + $lšk_to_uÆess +() + +308 +$¬gum’ts + = + `func_g‘_¬gs +(); + +309 +$¬gum’ts +[0] = !$arguments[0]; + +310  + `ÿÎ_u£r_func_¬¿y +('lšk_to_if', +$¬gum’ts +); + +311 + } +} + +320 +funùiÚ + + $public_·th +( +$·th +, +$absÞu‹ + = +çl£ +) + +322 +$»que¡ + = +sfCڋxt +:: + `g‘In¡ªû +()-> + `g‘Reque¡ +(); + +323 +$roÙ + = +$»que¡ +-> + `g‘R–©iveU¾RoÙ +(); + +325 ià( +$absÞu‹ +) + +327 +$sourû + = 'http'; + +328 ià( +$»que¡ +-> + `isSecu» +()) + +330 +$sourû + .= 's'; + +332 +$sourû + .='://'. +$»que¡ +-> + `g‘Ho¡ +(). +$roÙ +; + +336 +$sourû + = +$roÙ +; + +339 ià( + `sub¡r +( +$·th +, 0, 1) != '/') + +341 +$·th + = '/'.$path; + +344  +$sourû +. +$·th +; + +345 + } +} + +372 +funùiÚ + +bu‰Ú_to +( +$Çme +, +$š‹º®_uri +, +$ÝtiÚs + = + $¬¿y +()) + +374 +$html_ÝtiÚs + = + `_·r£_©Œibu‹s +( +$ÝtiÚs +); + +375 +$html_ÝtiÚs +['v®ue'] = +$Çme +; + +377 ià( + `is£t +( +$html_ÝtiÚs +['post']) && $html_options['post']) + +379 ià( + `is£t +( +$html_ÝtiÚs +['popup'])) + +381 +throw + +Ãw + + `sfCÚfigu¿tiÚExû±iÚ +('You can\'t use "popup"‡nd "post"ogether.'); + +383 +$html_ÝtiÚs +['type'] = 'submit'; + +384 + `un£t +( +$html_ÝtiÚs +['post']); + +385 +$html_ÝtiÚs + = + `_cÚv”t_ÝtiÚs_to_javasüt +($html_options); + +387  + `fÜm_g +( +$š‹º®_uri +, + `¬¿y +('m‘hod' => 'po¡', 'þass' => 'bu‰Ú_to')). + `cڋÁ_g +('div', + `g +('šput', +$html_ÝtiÚs +)).''; + +390 +$u¾ + = + `u¾_fÜ +( +$š‹º®_uri +); + +391 ià( + `is£t +( +$html_ÝtiÚs +['query_string'])) + +393 +$u¾ + = $u¾.'?'. +$html_ÝtiÚs +['query_string']; + +394 + `un£t +( +$html_ÝtiÚs +['query_string']); + +396 ià( + `is£t +( +$html_ÝtiÚs +['anchor'])) + +398 +$u¾ + = $u¾.'#'. +$html_ÝtiÚs +['anchor']; + +399 + `un£t +( +$html_ÝtiÚs +['anchor']); + +401 +$u¾ + = "'".$url."'"; + +402 +$html_ÝtiÚs +['type'] = 'button'; + +404 ià( + `is£t +( +$html_ÝtiÚs +['popup'])) + +406 +$html_ÝtiÚs + = + `_cÚv”t_ÝtiÚs_to_javasüt +($html_ÝtiÚs, +$u¾ +); + +407 + `un£t +( +$html_ÝtiÚs +['popup']); + +411 +$html_ÝtiÚs +['Úþick'] = "docum’t.loÿtiÚ.h»f=". +$u¾ +.";"; + +412 +$html_ÝtiÚs + = + `_cÚv”t_ÝtiÚs_to_javasüt +($html_options); + +415  + `g +('šput', +$html_ÝtiÚs +); + +416 + } +} + +437 +funùiÚ + +fÜm_g +( +$u¾_fÜ_ÝtiÚs + = '', +$ÝtiÚs + = + $¬¿y +()) + +439 +$ÝtiÚs + = + `_·r£_©Œibu‹s +($options); + +441 +$html_ÝtiÚs + = +$ÝtiÚs +; + +443 +$html_ÝtiÚs +['m‘hod'] = + `is£t +($html_ÝtiÚs['m‘hod']è? + `¡¹Þow” +($html_options['method']) : 'post'; + +445 ià( + `_g‘_ÝtiÚ +( +$html_ÝtiÚs +, 'multipart')) + +447 +$html_ÝtiÚs +['enctype'] = 'multipart/form-data'; + +450 +$html_ÝtiÚs +['aùiÚ'] = + `u¾_fÜ +( +$u¾_fÜ_ÝtiÚs +); + +452 +$html + = ''; + +453 ià(! + `š_¬¿y +( +$html_ÝtiÚs +['m‘hod'], + `¬¿y +('get', 'post'))) + +455 +$html + = + `g +('šput', + `¬¿y +('ty³' => 'hidd’', 'Çme' => 'sf_m‘hod', 'v®ue' => +$html_ÝtiÚs +['method'])); + +456 +$html_ÝtiÚs +['method'] = 'post'; + +459  + `g +('fÜm', +$html_ÝtiÚs +, +Œue +). +$html +; + +460 + } +} + +491 +funùiÚ + +maž_to +( +$emaž +, +$Çme + = '', +$ÝtiÚs + = +¬¿y +(), +$deçuÉ_v®ue + = + $¬¿y +()) + +493 +$html_ÝtiÚs + = + `_·r£_©Œibu‹s +( +$ÝtiÚs +); + +495 +$html_ÝtiÚs + = + `_cÚv”t_ÝtiÚs_to_javasüt +($html_options); + +497 +$deçuÉ_tmp + = + `_·r£_©Œibu‹s +( +$deçuÉ_v®ue +); + +498 +$deçuÉ + = + `¬¿y +(); + +499 + `fܗch + ( +$deçuÉ_tmp + +as + +$key + => +$v®ue +) + +501 +$deçuÉ +[] = + `u¾’code +( +$key +).'='.u¾’code( +$v®ue +); + +503 +$ÝtiÚs + = + `couÁ +( +$deçuÉ +è? '?'. + `im¶ode +('&', $default) : ''; + +505 ià( + `is£t +( +$html_ÝtiÚs +['encode']) && $html_options['encode']) + +507 + `un£t +( +$html_ÝtiÚs +['encode']); + +508 +$html_ÝtiÚs +['h»f'] = + `_’codeText +('mažto:'. +$emaž +. +$ÝtiÚs +); + +509 ià(! +$Çme +) + +511 +$Çme + = + `_’codeText +( +$emaž +); + +516 +$html_ÝtiÚs +['h»f'] = 'mažto:'. +$emaž +. +$ÝtiÚs +; + +517 ià(! +$Çme +) + +519 +$Çme + = +$emaž +; + +523  + `cڋÁ_g +('a', +$Çme +, +$html_ÝtiÚs +); + +524 + } +} + +526 +funùiÚ + +_cÚv”t_ÝtiÚs_to_javasüt +( +$html_ÝtiÚs +, +$u¾ + = 'this.href') + +529 +$cÚfœm + = +is£t +( +$html_ÝtiÚs +['confirm']) ? $html_options['confirm'] : ''; + +530 +un£t +( +$html_ÝtiÚs +['confirm']); + +533 + g$pÝup + = +is£t +( +$html_ÝtiÚs +['popup']) ? $html_options['popup'] : ''; + +534 +un£t +( +$html_ÝtiÚs +['popup']); + +537 + g$m‘hod + = +is£t +( +$html_ÝtiÚs +['m‘hod']è? $html_ÝtiÚs['m‘hod'] : (is£t($html_ÝtiÚs['po¡']è&& $html_ÝtiÚs['po¡'] ? 'po¡' : +çl£ +); + +538 +un£t +( +$html_ÝtiÚs +['post'], $html_options['method']); + +540 + g$Úþick + = +is£t +( +$html_ÝtiÚs +['onclick']) ? $html_options['onclick'] : ''; + +542 ià( + g$pÝup + && + g$m‘hod +) + +544 +throw + +Ãw + +sfCÚfigu¿tiÚExû±iÚ +('You can\'t use "popup", "method"‡nd "post" inhe same†ink.'); + +546 ià( + g$cÚfœm + && + g$pÝup +) + +548 + g$html_ÝtiÚs +['Úþick'] = +$Úþick +.'ià('. +_cÚfœm_javasüt_funùiÚ +( +$cÚfœm +).'è{ '. +_pÝup_javasüt_funùiÚ +( +$pÝup +, +$u¾ +).' };return false;'; + +550 ià( + g$cÚfœm + && + g$m‘hod +) + +552 + g$html_ÝtiÚs +['Úþick'] = +$Úþick +.'ià('. +_cÚfœm_javasüt_funùiÚ +( +$cÚfœm +).'è{ '. +_m‘hod_javasüt_funùiÚ +( +$m‘hod +).' };return false;'; + +554 ià( + g$cÚfœm +) + +556 ià( + g$Úþick +) + +558 + g$html_ÝtiÚs +['Úþick'] = 'ià('. +_cÚfœm_javasüt_funùiÚ +( +$cÚfœm +).'è{„‘uº '. +$Úþick +.'}ƒlse„eturn false;'; + +562 + g$html_ÝtiÚs +['Úþick'] = '»tuº '. +_cÚfœm_javasüt_funùiÚ +( +$cÚfœm +).';'; + +565 ià( + g$m‘hod +) + +567 + g$html_ÝtiÚs +['Úþick'] = +$Úþick +. +_m‘hod_javasüt_funùiÚ +( +$m‘hod +).'return false;'; + +569 ià( + g$pÝup +) + +571 + g$html_ÝtiÚs +['Úþick'] = +$Úþick +. +_pÝup_javasüt_funùiÚ +( +$pÝup +, +$u¾ +).'return false;'; + +574  + g$html_ÝtiÚs +; + +577 +funùiÚ + + $_cÚfœm_javasüt_funùiÚ +( +$cÚfœm +) + +579  "cÚfœm('". + `esÿ³_javasüt +( +$cÚfœm +)."')"; + +580 + } +} + +582 +funùiÚ + +_pÝup_javasüt_funùiÚ +( +$pÝup +, +$u¾ + = '') + +584 ià( +is_¬¿y +( +$pÝup +)) + +586 ià( +is£t +( +$pÝup +[1])) + +588  "v¬ w=wšdow.ݒ(". +$u¾ +.",'". +$pÝup +[0]."','".$popup[1]."');w.focus();"; + +592  "v¬ w=wšdow.ݒ(". + g$u¾ +.",'". + g$pÝup +[0]."');w.focus();"; + +597  "v¬ w=wšdow.ݒ(". + g$u¾ +.");w.focus();"; + +601 +funùiÚ + + $_po¡_javasüt_funùiÚ +() + +603  + `_m‘hod_javasüt_funùiÚ +('POST'); + +604 + } +} + +606 +funùiÚ + + $_m‘hod_javasüt_funùiÚ +( +$m‘hod +) + +608 +$funùiÚ + = "var f = document.createElement('form'); f.style.display = 'none';his.parentNode.appendChild(f); f.method = 'post'; f.action =his.href;"; + +610 ià('po¡' !ð + `¡¹Þow” +( +$m‘hod +)) + +612 +$funùiÚ + .= "var m = document.createElement('input'); m.setAttribute('type', 'hidden'); "; + +613 +$funùiÚ + .ð + `¥rštf +("m.£tA‰ribu‹('Çme', 'sf_m‘hod'); m.£tA‰ribu‹('v®ue', '%s'); f.­³ndChžd(m);", + `¡¹Þow” +( +$m‘hod +)); + +617 +$fÜm + = +Ãw + + `Ba£FÜm +(); + +618 ià( +$fÜm +-> + `isCSRFPrÙeùed +()) + +620 +$funùiÚ + .= "var m = document.createElement('input'); m.setAttribute('type', 'hidden'); "; + +621 +$funùiÚ + .ð + `¥rštf +("m.£tA‰ribu‹('Çme', '%s'); m.£tA‰ribu‹('v®ue', '%s'); f.­³ndChžd(m);", +$fÜm +-> + `g‘CSRFF›ldName +(), $fÜm-> + `g‘CSRFTok’ +()); + +624 +$funùiÚ + .= "f.submit();"; + +626  +$funùiÚ +; + +627 + } +} + +629 +funùiÚ + + $_’codeText +( +$‹xt +) + +631 +$’coded_‹xt + = ''; + +633  +$i + = 0; $˜< + `¡¾’ +( +$‹xt +); $i++) + +635 +$ch¬ + = +$‹xt +{ +$i +}; + +636 +$r + = + `¿nd +(0, 100); + +638 #roughly 10% +¿w +, 45% +hex +, 45% +dec + + +640 ià( +$r + > 90 && +$ch¬ + != '@') + +642 +$’coded_‹xt + .ð +$ch¬ +; + +644 ià( +$r + < 45) + +646 +$’coded_‹xt + .ð'&#x'. + `dechex +( + `Üd +( +$ch¬ +)).';'; + +650 +$’coded_‹xt + .ð'&#'. + `Üd +( +$ch¬ +).';'; + +654  +$’coded_‹xt +; + +655 + } +} + + @lib/vendor/symfony/lib/i18n/Gettext/MO.php + +1 +fže + = +$fže +; + +75 +funùiÚ + + $_»ad +( +$by‹s + = 1) + +77 ià(0 < +$by‹s + = + `abs +($bytes)) { + +78  + `ä—d +( +$this +-> +_hªdË +, +$by‹s +); + +80  +nuÎ +; + +81 + } +} + +90 +funùiÚ + + $_»adIÁ +( +$big’dŸn + = +çl£ +) + +93 +$uÅacked + = + `uÅack +( +$big’dŸn + ? 'N' : 'V', +$this +-> + `_»ad +(4)); + +94  + `¬¿y_shiá +( +$uÅacked +); + +95 + } +} + +104 +funùiÚ + + $_wr™eIÁ +( +$št +) + +106  +$this +-> + `_wr™e +( + `·ck +($this-> +wr™eBigEndŸn + ? 'N' : 'V', (è +$št +)); + +107 + } +} + +116 +funùiÚ + + $_wr™e +( +$d©a +) + +118  + `fwr™e +( +$this +-> +_hªdË +, +$d©a +); + +119 + } +} + +128 +funùiÚ + + $_wr™eSŒ +( +$¡ršg +) + +130  +$this +-> + `_wr™e +( +$¡ršg + . "\0"); + +131 + } +} + +141 +funùiÚ + + $_»adSŒ +( +$·¿ms +) + +143 + `f£ek +( +$this +-> +_hªdË +, +$·¿ms +['offset']); + +144  +$this +-> + `_»ad +( +$·¿ms +['length']); + +145 + } +} + +154 +funùiÚ + + $lßd +( +$fže + = +nuÎ +) + +156 ià(! + `is£t +( +$fže +)) { + +157 +$fže + = +$this +-> +fže +; + +161 ià(! + `is_»sourû +( +$this +-> +_hªdË + = @ + `fݒ +( +$fže +, 'rb'))) { + +162  +çl£ +; + +165 ià(!@ + `æock +( +$this +-> +_hªdË +, +LOCK_SH +)) { + +166 @ + `fþo£ +( +$this +-> +_hªdË +); + +167  +çl£ +; + +173 +$uÅacked + = + `uÅack +('c', +$this +-> + `_»ad +(4)); + +174  +$magic + = + `¬¿y_shiá +( +$uÅacked +)) + +177 +$be + = +çl£ +; + +181 +$be + = +Œue +; + +185  +çl£ +; + +189 ià(0 !=ð( +$_»v + = +$this +-> + `_»adIÁ +( +$be +))) { + +190  +çl£ +; + +194 +$couÁ + = +$this +-> + `_»adIÁ +( +$be +); + +197 +$off£t_Üigš® + = +$this +-> + `_»adIÁ +( +$be +); + +199 +$off£t_Œª¦© + = +$this +-> + `_»adIÁ +( +$be +); + +202 + `f£ek +( +$this +-> +_hªdË +, +$off£t_Üigš® +); + +204 +$Üigš® + = + `¬¿y +(); + +205  +$i + = 0; $˜< +$couÁ +; $i++) { + +206 +$Üigš® +[ +$i +] = + `¬¿y +( + +207 'Ëngth' => +$this +-> + `_»adIÁ +( +$be +), + +208 'off£t' => +$this +-> + `_»adIÁ +( +$be +) + +213 + `f£ek +( +$this +-> +_hªdË +, +$off£t_Œª¦© +); + +215 +$Œª¦© + = + `¬¿y +(); + +216  +$i + = 0; $˜< +$couÁ +; $i++) { + +217 +$Œª¦© +[ +$i +] = + `¬¿y +( + +218 'Ëngth' => +$this +-> + `_»adIÁ +( +$be +), + +219 'off£t' => +$this +-> + `_»adIÁ +( +$be +) + +224  +$i + = 0; $˜< +$couÁ +; $i++) { + +225 +$this +-> +¡ršgs +[$this-> + `_»adSŒ +( +$Üigš® +[ +$i +])] = + +226 +$this +-> + `_»adSŒ +( +$Œª¦© +[ +$i +]); + +230 @ + `æock +( +$this +-> +_hªdË +, +LOCK_UN +); + +231 @ + `fþo£ +( +$this +-> +_hªdË +); + +232 +$this +-> +_hªdË + = +nuÎ +; + +235 ià( + `is£t +( +$this +-> +¡ršgs +[''])) { + +236 +$this +-> +m‘a + = +·»Á +:: + `m‘a2¬¿y +($this-> +¡ršgs +['']); + +237 + `un£t +( +$this +-> +¡ršgs +['']); + +240  +Œue +; + +241 + } +} + +250 +funùiÚ + + $§ve +( +$fže + = +nuÎ +) + +252 ià(! + `is£t +( +$fže +)) { + +253 +$fže + = +$this +-> +fže +; + +257 ià(! + `is_»sourû +( +$this +-> +_hªdË + = @ + `fݒ +( +$fže +, 'wb'))) { + +258  +çl£ +; + +261 ià(!@ + `æock +( +$this +-> +_hªdË +, +LOCK_EX +)) { + +262 @ + `fþo£ +( +$this +-> +_hªdË +); + +263  +çl£ +; + +267 ià( +$this +-> +wr™eBigEndŸn +) { + +268 +$this +-> + `_wr™e +( + `·ck +('c*', 0x95, 0x04, 0x12, 0xde)); + +270 +$this +-> + `_wr™e +( + `·ck +('c*', 0xde, 0x12, 0x04, 0x95)); + +274 +$this +-> + `_wr™eIÁ +(0); + +276 +$couÁ + = + `couÁ +( +$this +-> +¡ršgs +è+ ( +$m‘a + = (couÁ($this-> +m‘a +) ? 1 : 0)); + +278 +$this +-> + `_wr™eIÁ +( +$couÁ +); + +280 +$off£t + = 28; + +282 +$this +-> + `_wr™eIÁ +( +$off£t +); + +284 +$off£t + +ð( +$couÁ + * 8); + +286 +$this +-> + `_wr™eIÁ +( +$off£t +); + +289 +$this +-> + `_wr™eIÁ +(0); + +291 +$off£t + +ð( +$couÁ + * 8); + +293 +$this +-> + `_wr™eIÁ +( +$off£t +); + +296 ià( +$m‘a +) { + +297 +$m‘a + = ''; + +298 + `fܗch + ( +$this +-> +m‘a + +as + +$key + => +$v® +) { + +299 +$m‘a + .ð +$key + . ': ' . +$v® + . "\n"; + +301 +$¡ršgs + = + `¬¿y +('' => +$m‘a +è+ +$this +-> +¡ršgs +; + +303 +$¡ršgs + = +$this +-> +¡ršgs +; + +307 + `fܗch + ( + `¬¿y_keys +( +$¡ršgs +è +as + +$o +) { + +308 +$Ën + = + `¡¾’ +( +$o +); + +309 +$this +-> + `_wr™eIÁ +( +$Ën +); + +310 +$this +-> + `_wr™eIÁ +( +$off£t +); + +311 +$off£t + +ð +$Ën + + 1; + +315 + `fܗch + ( +$¡ršgs + +as + +$t +) { + +316 +$Ën + = + `¡¾’ +( +$t +); + +317 +$this +-> + `_wr™eIÁ +( +$Ën +); + +318 +$this +-> + `_wr™eIÁ +( +$off£t +); + +319 +$off£t + +ð +$Ën + + 1; + +323 + `fܗch + ( + `¬¿y_keys +( +$¡ršgs +è +as + +$o +) { + +324 +$this +-> + `_wr™eSŒ +( +$o +); + +328 + `fܗch + ( +$¡ršgs + +as + +$t +) { + +329 +$this +-> + `_wr™eSŒ +( +$t +); + +333 @ + `æock +( +$this +-> +_hªdË +, +LOCK_UN +); + +334 @ + `fþo£ +( +$this +-> +_hªdË +); + +335  +Œue +; + +336 + } +} + + @lib/vendor/symfony/lib/i18n/Gettext/PO.php + +1 +fže + = +$fže +; + +57 +funùiÚ + + $lßd +( +$fže + = +nuÎ +) + +59 ià(! + `is£t +( +$fže +)) { + +60 +$fže + = +$this +-> +fže +; + +64 ià(! +$cڋÁs + = @ + `fže +( +$fže +)) { + +65  +çl£ +; + +67 +$cڋÁs + = + `im¶ode +('', $contents); + +70 +$m©ched + = + `´eg_m©ch_®l +( + +73 +$cڋÁs +, +$m©ches + + +75 + `un£t +( +$cڋÁs +); + +77 ià(! +$m©ched +) { + +78  +çl£ +; + +82  +$i + = 0; $˜< +$m©ched +; $i++) { + +83 +$msgid + = + `´eg_»¶aû +( + +84 '/\s*msgid\s*"(.*)"\s*/s', '\\1', +$m©ches +[1][ +$i +]); + +85 +$msg¡r +ð + `´eg_»¶aû +( + +86 '/\s*msg¡r\s*"(.*)"\s*/s', '\\1', +$m©ches +[4][ +$i +]); + +87 +$this +-> +¡ršgs +[ +·»Á +:: + `´•¬e +( +$msgid +)] =…¬’t::´•¬e( +$msg¡r +); + +91 ià( + `is£t +( +$this +-> +¡ršgs +[''])) { + +92 +$this +-> +m‘a + = +·»Á +:: + `m‘a2¬¿y +($this-> +¡ršgs +['']); + +93 + `un£t +( +$this +-> +¡ršgs +['']); + +96  +Œue +; + +97 + } +} + +106 +funùiÚ + + $§ve +( +$fže + = +nuÎ +) + +108 ià(! + `is£t +( +$fže +)) { + +109 +$fže + = +$this +-> +fže +; + +113 ià(! + `is_»sourû +( +$fh + = @ + `fݒ +( +$fže +, 'w'))) { + +114  +çl£ +; + +118 ià(! + `æock +( +$fh +, +LOCK_EX +)) { + +119 + `fþo£ +( +$fh +); + +120  +çl£ +; + +123 ià( + `couÁ +( +$this +-> +m‘a +)) { + +124 +$m‘a + = 'msgid ""' . "\nmsgstr " . '""' . "\n"; + +125 + `fܗch + ( +$this +-> +m‘a + +as + +$k + => +$v +) { + +126 +$m‘a + .ð'"' . +$k + . ': ' . +$v + . '\n"' . "\n"; + +128 + `fwr™e +( +$fh +, +$m‘a + . "\n"); + +131 + `fܗch + ( +$this +-> +¡ršgs + +as + +$o + => +$t +) { + +132 + `fwr™e +( +$fh +, + +133 'msgid "' . +·»Á +:: + `´•¬e +( +$o +, +Œue +) . '"' . "\n" . + +134 'msg¡¸"' . +·»Á +:: + `´•¬e +( +$t +, +Œue +) . '"' . "\n\n" + +139 @ + `æock +( +$fh +, +LOCK_UN +); + +140 @ + `fþo£ +( +$fh +); + +141  +Œue +; + +142 + } +} + + @lib/vendor/symfony/lib/i18n/Gettext/TGettext.class.php + +1 + `lßd +())) { + +119  +$e +; + +122 +$MO + = +$PO +-> + `toMO +(); + +123 ià( +Œue + !=ð( +$e + = +$MO +-> + `§ve +( +$mofže +))) { + +124  +$e +; + +126 + `un£t +( +$PO +, +$MO +); + +128  +Œue +; + +129 + } +} + +140 +funùiÚ + + $´•¬e +( +$¡ršg +, +$»v”£ + = +çl£ +) + +142 ià( +$»v”£ +) { + +143 +$sm­ + = + `¬¿y +('"', "\n", "\t", "\r"); + +144 +$rm­ + = + `¬¿y +('\"', '\\n"' . "\n" . '"', '\\t', '\\r'); + +145  ( +¡ršg +è + `¡r_»¶aû +( +$sm­ +, +$rm­ +, +$¡ršg +); + +147 +$¡ršg + = + `´eg_»¶aû +('/"\s+"/', '', $string); + +148 +$sm­ + = + `¬¿y +('\\n', '\\r', '\\t', '\"'); + +149 +$rm­ + = + `¬¿y +("\n", "\r", "\t", '"'); + +150  ( +¡ršg +è + `¡r_»¶aû +( +$sm­ +, +$rm­ +, +$¡ršg +); + +152 + } +} + +162 +funùiÚ + + $m‘a2¬¿y +( +$m‘a +) + +164 +$¬¿y + = + `¬¿y +(); + +165 + `fܗch + ( + `ex¶ode +("\n", +$m‘a +è +as + +$šfo +) { + +166 ià( +$šfo + = + `Œim +($info)) { + +167 + `li¡ +( +$key +, +$v®ue +èð + `ex¶ode +(':', +$šfo +, 2); + +168 +$¬¿y +[ + `Œim +( +$key +)] =rim( +$v®ue +); + +171  +$¬¿y +; + +172 + } +} + +198 +funùiÚ + + $toA¼ay +() + +200  + `¬¿y +('m‘a' => +$this +-> +m‘a +, '¡ršgs' => $this-> +¡ršgs +); + +201 + } +} + +228 +funùiÚ + + $äomA¼ay +( +$¬¿y +) + +230 ià(! + `¬¿y_key_exi¡s +('¡ršgs', +$¬¿y +)) { + +231 ià( + `couÁ +( +$¬¿y +) != 2) { + +232  +çl£ +; + +234 + `li¡ +( +$this +-> +m‘a +, $this-> +¡ršgs +èð +$¬¿y +; + +237 +$this +-> +m‘a + = @ +$¬¿y +['meta']; + +238 +$this +-> +¡ršgs + = @ +$¬¿y +['strings']; + +240  +Œue +; + +241 + } +} + +249 +funùiÚ + + $toMO +() + +251 +šþude_Úû + + `dœÇme +( +__FILE__ +).'/MO.php'; + +252 +$MO + = +Ãw + +TG‘‹xt_MO +; + +253 +$MO +-> + `äomA¼ay +( +$this +-> + `toA¼ay +()); + +254  +$MO +; + +255 + } +} + +263 +funùiÚ + + $toPO +() + +265 +šþude_Úû + + `dœÇme +( +__FILE__ +).'/PO.php'; + +266 +$PO + = +Ãw + +TG‘‹xt_PO +; + +267 +$PO +-> + `äomA¼ay +( +$this +-> + `toA¼ay +()); + +268  +$PO +; + +269 + } +} + + @lib/vendor/symfony/lib/i18n/extract/sfI18nApplicationExtract.class.php + +1 +exŒaùObjeùs + = + `¬¿y +(); + +29 +$moduËNames + = +sfFšd” +:: + `ty³ +('dœ')-> + `maxd•th +(0)-> + `»Ïtive +()-> + `š +( +sfCÚfig +:: + `g‘ +('sf_app_module_dir')); + +30 + `fܗch + ( +$moduËNames + +as + +$moduËName +) + +32 +$this +-> +exŒaùObjeùs +[] = +Ãw + + `sfI18nModuËExŒaù +($this-> +i18n +, $this-> +cuÉu» +, + `¬¿y +('moduË' => +$moduËName +)); + +41 +public + +funùiÚ + + $exŒaù +() + +43 + `fܗch + ( +$this +-> +exŒaùObjeùs + +as + +$exŒaùObjeù +) + +45 +$exŒaùObjeù +-> + `exŒaù +(); + +49 +$this +-> + `exŒaùFromPhpFžes +( +sfCÚfig +:: + `g‘ +('sf_app_template_dir')); + +52 +$this +-> + `exŒaùFromPhpFžes +( +sfCÚfig +:: + `g‘ +('sf_app_lib_dir')); + +53 + } +} + +58 +public + +funùiÚ + + $g‘Cu¼’tMes§ges +() + +60  + `¬¿y_unique +( + `¬¿y_m”ge +( +$this +-> +cu¼’tMes§ges +, $this-> + `agg»g©eMes§ges +('getCurrentMessages'))); + +61 + } +} + +66 +public + +funùiÚ + + $g‘AÎS“nMes§ges +() + +68  + `¬¿y_unique +( + `¬¿y_m”ge +( +$this +-> +®lS“nMes§ges +, $this-> + `agg»g©eMes§ges +('getAllSeenMessages'))); + +69 + } +} + +71 +´Ùeùed + +funùiÚ + + $agg»g©eMes§ges +( +$m‘hod +) + +73 +$mes§ges + = + `¬¿y +(); + +74 + `fܗch + ( +$this +-> +exŒaùObjeùs + +as + +$exŒaùObjeù +) + +76 +$mes§ges + = + `¬¿y_m”ge +($mes§ges, +$exŒaùObjeù +-> + `$m‘hod +()); + +79  + `¬¿y_unique +( +$mes§ges +); + +80 + } +} + + @lib/vendor/symfony/lib/i18n/extract/sfI18nExtract.class.php + +1 + `š™Ÿlize +( +$i18n +, +$cuÉu» +, +$·¿m‘”s +); + +44 +funùiÚ + + `š™Ÿlize +( +sfI18N + +$i18n +, +$cuÉu» +, +$·¿m‘”s + = + $¬¿y +()) + +46 +$this +-> +®lS“nMes§ges + = + `¬¿y +(); + +47 +$this +-> +ÃwMes§ges + = + `¬¿y +(); + +48 +$this +-> +cu¼’tMes§ges + = + `¬¿y +(); + +50 +$this +-> +cuÉu» + = +$cuÉu» +; + +51 +$this +-> +·¿m‘”s + = +$·¿m‘”s +; + +53 +$this +-> +i18n + = +$i18n +; + +55 +$this +-> + `cÚfigu» +(); + +57 +$this +-> + `lßdMes§geSourûs +(); + +58 +$this +-> + `lßdCu¼’tMes§ges +(); + +59 + } +} + +64 +public + +funùiÚ + + $cÚfigu» +() + +66 + } +} + +73 +ab¡¿ù + +public + +funùiÚ + +exŒaù +(); + +81 +public + +funùiÚ + + $§veNewMes§ges +() + +83 +$mes§geSourû + = +$this +-> +i18n +-> + `g‘Mes§geSourû +(); + +84 + `fܗch + ( +$this +-> + `g‘NewMes§ges +(è +as + +$mes§ge +) + +86 +$mes§geSourû +-> + `­³nd +( +$mes§ge +); + +89 +$mes§geSourû +-> + `§ve +(); + +90 + } +} + +98 +public + +funùiÚ + + $d–‘eOldMes§ges +() + +100 +$mes§geSourû + = +$this +-> +i18n +-> + `g‘Mes§geSourû +(); + +101 + `fܗch + ( +$this +-> + `g‘OldMes§ges +(è +as + +$mes§ge +) + +103 +$mes§geSourû +-> + `d–‘e +( +$mes§ge +); + +105 + } +} + +112 +fš® + +public + +funùiÚ + + $g‘NewMes§ges +() + +114  + `¬¿y_diff +( +$this +-> + `g‘AÎS“nMes§ges +(), $this-> + `g‘Cu¼’tMes§ges +()); + +115 + } +} + +122 +public + +funùiÚ + + $g‘Cu¼’tMes§ges +() + +124  +$this +-> +cu¼’tMes§ges +; + +125 + } +} + +132 +public + +funùiÚ + + $g‘AÎS“nMes§ges +() + +134  +$this +-> +®lS“nMes§ges +; + +135 + } +} + +145 +fš® + +public + +funùiÚ + + $g‘OldMes§ges +() + +147  + `¬¿y_diff +( +$this +-> + `g‘Cu¼’tMes§ges +(), $this-> + `g‘AÎS“nMes§ges +()); + +148 + } +} + +153 +´Ùeùed + +funùiÚ + + $lßdMes§geSourûs +() + +155 +$this +-> +i18n +-> + `g‘Mes§geSourû +()-> + `£tCuÉu» +($this-> +cuÉu» +); + +156 +$this +-> +i18n +-> + `g‘Mes§geSourû +()-> + `lßd +(); + +157 + } +} + +162 +´Ùeùed + +funùiÚ + + $lßdCu¼’tMes§ges +() + +164 +$this +-> +cu¼’tMes§ges + = + `¬¿y +(); + +165 + `fܗch + ( +$this +-> +i18n +-> + `g‘Mes§geSourû +()-> + `»ad +(è +as + +$ÿlogue + => +$Œª¦©iÚs +) + +167 + `fܗch + ( +$Œª¦©iÚs + +as + +$key + => +$v®ues +) + +169 +$this +-> +cu¼’tMes§ges +[] = +$key +; + +172 + } +} + +179 +´Ùeùed + +funùiÚ + + $exŒaùFromPhpFžes +( +$dœ +) + +181 +$phpExŒaùÜ + = +Ãw + + `sfI18nPhpExŒaùÜ +(); + +183 +$fžes + = +sfFšd” +:: + `ty³ +('fže')-> + `Çme +('*.php'); + +184 +$mes§ges + = + `¬¿y +(); + +185 + `fܗch + ( +$fžes +-> + `š +( +$dœ +è +as + +$fže +) + +187 +$mes§ges + = + `¬¿y_m”ge +($mes§ges, +$phpExŒaùÜ +-> + `exŒaù +( + `fže_g‘_cڋÁs +( +$fže +))); + +190 +$this +-> + `upd©eMes§ges +( +$mes§ges +); + +191 + } +} + +198 +´Ùeùed + +funùiÚ + + $upd©eMes§ges +( +$mes§ges +) + +200 +$this +-> +®lS“nMes§ges + = + `¬¿y_unique +( + `¬¿y_m”ge +($this->®lS“nMes§ges, +$mes§ges +)); + +201 + } +} + + @lib/vendor/symfony/lib/i18n/extract/sfI18nExtractorInterface.class.php + +1 +·¿m‘”s +['module'])) + +28 +throw + +Ãw + + `sfExû±iÚ +('You must give‡ "module"…arameter whenƒxtracting for‡ module.'); + +31 +$this +-> +moduË + = $this-> +·¿m‘”s +['module']; + +33 +$ÝtiÚs + = +$this +-> +i18n +-> + `g‘O±iÚs +(); + +34 +$dœs + = +$this +-> +i18n +-> + `isMes§geSourûFžeBa£d +( +$ÝtiÚs +['sourû']è? $this->i18n-> + `g‘CÚfigu¿tiÚ +()-> + `g‘I18NDœs +($this-> +moduË +è: +nuÎ +; + +35 +$this +-> +i18n +-> + `£tMes§geSourû +( +$dœs +, $this-> +cuÉu» +); + +43 +public + +funùiÚ + + $exŒaù +() + +46 +$moduËDœ + = +sfCÚfig +:: + `g‘ +('sf_­p_moduË_dœ').'/'. +$this +-> +moduË +; + +47 +$this +-> + `exŒaùFromPhpFžes +( + `¬¿y +( + +48 +$moduËDœ +.'/actions', + +49 +$moduËDœ +.'/lib', + +50 +$moduËDœ +.'/templates', + +54 +$g’”©Ü + = +$moduËDœ +.'/config/generator.yml'; + +55 ià( + `fže_exi¡s +( +$g’”©Ü +)) + +57 +$yamlExŒaùÜ + = +Ãw + + `sfI18nYamlG’”©ÜExŒaùÜ +(); + +58 +$this +-> + `upd©eMes§ges +( +$yamlExŒaùÜ +-> + `exŒaù +( + `fže_g‘_cڋÁs +( +$g’”©Ü +))); + +62 +$v®id©eFžes + = + `glob +( +$moduËDœ +.'/validate/*.yml'); + +63 ià( + `is_¬¿y +( +$v®id©eFžes +)) + +65 + `fܗch + ( +$v®id©eFžes + +as + +$v®id©eFže +) + +67 +$yamlExŒaùÜ + = +Ãw + + `sfI18nYamlV®id©eExŒaùÜ +(); + +68 +$this +-> + `upd©eMes§ges +( +$yamlExŒaùÜ +-> + `exŒaù +( + `fže_g‘_cڋÁs +( +$v®id©eFže +))); + +71 + } +} + + @lib/vendor/symfony/lib/i18n/extract/sfI18nPhpExtractor.class.php + +1 +¡ršgs + = + `¬¿y +(); + +32 +$cÚfig + = +sfYaml +:: + `lßd +( +$cڋÁ +); + +34 ià(! + `is£t +( +$cÚfig +['generator']['param']['config'])) + +36  + `¬¿y +(); + +39 +$·¿ms + = +$cÚfig +['generator']['param']['config']; + +42 + `fܗch + ( + `¬¿y +('li¡', 'ed™', 'Ãw'è +as + +$£ùiÚ +) + +44 ià( + `is£t +( +$·¿ms +[ +$£ùiÚ +]['title'])) + +46 +$this +-> +¡ršgs +[] = +$·¿ms +[ +$£ùiÚ +]['title']; + +51 ià( + `is£t +( +$·¿ms +['fields'])) + +53 +$this +-> + `g‘FromF›lds +( +$·¿ms +['fields']); + +56 ià( + `is£t +( +$·¿ms +['list']['fields'])) + +58 +$this +-> + `g‘FromF›lds +( +$·¿ms +['list']['fields']); + +61 ià( + `is£t +( +$·¿ms +['edit']['fields'])) + +63 +$this +-> + `g‘FromF›lds +( +$·¿ms +['edit']['fields']); + +66 ià( + `is£t +( +$·¿ms +['new']['fields'])) + +68 +$this +-> + `g‘FromF›lds +( +$·¿ms +['new']['fields']); + +72 + `fܗch + ( + `¬¿y +('ed™', 'Ãw'è +as + +$£ùiÚ +) + +74 ià( + `is£t +( +$·¿ms +[ +$£ùiÚ +]['display']) && !isset($params[$section]['display'][0])) + +76 + `fܗch + ( + `¬¿y_keys +( +$·¿ms +[ +$£ùiÚ +]['di¥Ïy']è +as + +$¡ršg +) + +78 ià('NONE' !ð +$¡ršg +) + +80 +$this +-> +¡ršgs +[] = +$¡ršg +; + +86  +$this +-> +¡ršgs +; + +89 +´Ùeùed + +funùiÚ + + $g‘FromF›lds +( +$f›lds +) + +91 + `fܗch + ( +$f›lds + +as + +$f›ld + => +$ÝtiÚs +) + +93 ià( + `is£t +( +$ÝtiÚs +['name'])) + +95 +$this +-> +¡ršgs +[] = +$ÝtiÚs +['name']; + +98 ià( + `is£t +( +$ÝtiÚs +['label'])) + +100 +$this +-> +¡ršgs +[] = +$ÝtiÚs +['label']; + +103 ià( + `is£t +( +$ÝtiÚs +['help'])) + +105 +$this +-> +¡ršgs +[] = +$ÝtiÚs +['help']; + +108 + } +} + + @lib/vendor/symfony/lib/i18n/extract/sfI18nYamlValidateExtractor.class.php + +1 +$v®id©iÚ +) + +39 + `fܗch + ( +$v®id©iÚ + +as + +$ty³ + => +$·¿m‘”s +) + +41 ià(! + `is_¬¿y +( +$·¿m‘”s +)) + +46 + `fܗch + ( +$·¿m‘”s + +as + +$key + => +$v®ue +) + +48 ià( + `´eg_m©ch +('/(msg|”rÜ)$/', +$key +)) + +50 +$¡ršgs +[] = +$v®ue +; + +58 ià( + `is£t +( +$cÚfig +['validators'])) + +60 + `fܗch + ( + `¬¿y_keys +( +$cÚfig +['v®id©Üs']è +as + +$Çme +) + +62 ià(! + `is£t +( +$cÚfig +['v®id©Üs'][ +$Çme +]['param'])) + +67 + `fܗch + ( +$cÚfig +['v®id©Üs'][ +$Çme +]['·¿m'] +as + +$key + => +$v®ue +) + +69 ià( + `´eg_m©ch +('/(msg|”rÜ)$/', +$key +)) + +71 +$¡ršgs +[] = +$v®ue +; + +80 ià( + `is£t +( +$cÚfig +['names'])) + +82 + `fܗch + ( +$cÚfig +['Çmes'] +as + +$key + => +$v®ue +) + +84 ià( + `is£t +( +$v®ue +['required_msg'])) + +86 +$¡ršgs +[] = +$v®ue +['required_msg']; + +92 + `fܗch + ( +$cÚfig + +as + +$key + => +$v®ue +) + +94 ià( + `is£t +( +$v®ue +['param']) && isset($value['class'])) + +96 + `fܗch + ( +$v®ue +['·¿m'] +as + +$key + => $value) + +98 ià( + `´eg_m©ch +('/(msg|”rÜ)$/', +$key +)) + +100 +$¡ršgs +[] = +$v®ue +; + +106  +$¡ršgs +; + +108 + } +} + + @lib/vendor/symfony/lib/i18n/sfChoiceFormat.class.php + +1 <%\|&\(\)]+|[\)\]\}]/ms'; + +68 +´Ùeùed + + m$·r£ + = '/(?:^\s*|\s*\|)([\(\[\{]([-Inf\d:\s]+,?[\+Inf\d\s:\?\-=!><%\|&\(\)]*)+[\)\]\}])\s*/'; + +73 +´Ùeùed + + m$šf +; + +78 +public + +funùiÚ + + $__cÚ¡ruù +() + +80 +$this +-> +šf + = - + `log +(0); + +90 +public + +funùiÚ + + $isV®id +( +$numb” +, +$£t +) + +92 +$n + = + `´eg_m©ch_®l +( +$this +-> +v®id©e +, +$£t +, +$m©ches +, +PREG_SET_ORDER +); + +94 ià( +$n + < 3) + +96 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('Inv®id s‘ "%s".', +$£t +)); + +99 ià( + `´eg_m©ch +('/\{\s*n:([^\}]+)\}/', +$£t +, +$def +)) + +101  +$this +-> + `isV®idS‘NÙ©iÚ +( +$numb” +, +$def +[1]); + +104 +$ËáB¿ck‘ + = +$m©ches +[0][0]; + +105 +$rightB¿ck‘ + = +$m©ches +[ +$n + - 1][0]; + +107 +$i + = 0; + +108 +$–em’ts + = + `¬¿y +(); + +110 + `fܗch + ( +$m©ches + +as + +$m©ch +) + +112 +$¡ršg + = +$m©ch +[0]; + +113 ià( +$i + !ð0 && $˜!ð +$n + - 1 && +$¡ršg + !== ',') + +115 ià( +$¡ršg + == '-Inf') + +117 +$–em’ts +[] = -1 * +$this +-> +šf +; + +119 ià( +$¡ršg + == '+Inf' || $string == 'Inf') + +121 +$–em’ts +[] = +$this +-> +šf +; + +125 +$–em’ts +[] = + `æßtv® +( +$¡ršg +); + +128 +$i +++; + +130 +$tÙ® + = + `couÁ +( +$–em’ts +); + +131 +$numb” + = + `æßtv® +($number); + +133 ià( +$ËáB¿ck‘ + =ð'{' && +$rightB¿ck‘ + == '}') + +135  + `š_¬¿y +( +$numb” +, +$–em’ts +); + +138 +$Ëá + = +çl£ +; + +139 ià( +$ËáB¿ck‘ + == '[') + +141 +$Ëá + = +$numb” + >ð +$–em’ts +[0]; + +143 ià( +$ËáB¿ck‘ + == '(') + +145 +$Ëá + = +$numb” + > +$–em’ts +[0]; + +148 +$right + = +çl£ +; + +149 ià( +$rightB¿ck‘ + == ']') + +151 +$right + = +$numb” + <ð +$–em’ts +[ +$tÙ® + - 1]; + +153 ià( +$rightB¿ck‘ + == ')') + +155 +$right + = +$numb” + < +$–em’ts +[ +$tÙ® + - 1]; + +158 ià( +$Ëá + && +$right +) + +160  +Œue +; + +163  +çl£ +; + +164 + } +} + +166 +´Ùeùed + +funùiÚ + + $isV®idS‘NÙ©iÚ +( +$numb” +, +$£t +) + +168 +$¡r + = '$»suÉ = '. + `¡r_»¶aû +('n', '$numb”', +$£t +).';'; + +169 +Œy + + +171 + `ev® +( +$¡r +); + +172  +$»suÉ +; + +174 + `ÿtch + ( +Exû±iÚ + +$e +) + +176  +çl£ +; + +178 + } +} + +186 +public + +funùiÚ + + $·r£ +( +$¡ršg +) + +188 +$n + = + `´eg_m©ch_®l +( +$this +-> +·r£ +, +$¡ršg +, +$m©ches +, +PREG_OFFSET_CAPTURE +); + +189 +$£ts + = + `¬¿y +(); + +190 + `fܗch + ( +$m©ches +[1] +as + +$m©ch +) + +192 +$£ts +[] = +$m©ch +[0]; + +195 +$off£t + = +$m©ches +[0]; + +196 +$¡ršgs + = + `¬¿y +(); + +197  +$i + = 0; $˜< +$n +; $i++) + +199 +$Ën + = + `¡¾’ +( +$off£t +[ +$i +][0]); + +200 +$begš + = +$i + =ð0 ? +$Ën + : +$off£t +[$i][1] + $len; + +201 +$’d + = +$i + =ð +$n + - 1 ? + `¡¾’ +( +$¡ršg +è: +$off£t +[$i + 1][1]; + +202 +$¡ršgs +[] = + `sub¡r +( +$¡ršg +, +$begš +, +$’d + - $begin); + +205  + `¬¿y +( +$£ts +, +$¡ršgs +); + +206 + } +} + +215 +public + +funùiÚ + + $fÜm© +( +$¡ršg +, +$numb” +) + +217 + `li¡ +( +$£ts +, +$¡ršgs +èð +$this +-> + `·r£ +( +$¡ršg +); + +218 +$tÙ® + = + `couÁ +( +$£ts +); + +219  +$i + = 0; $˜< +$tÙ® +; $i++) + +221 ià( +$this +-> + `isV®id +( +$numb” +, +$£ts +[ +$i +])) + +223  +$¡ršgs +[ +$i +]; + +227  +çl£ +; + +228 + } +} + + @lib/vendor/symfony/lib/i18n/sfCultureInfo.class.php + +1 + `g‘Name +(); + +151 + } +} + +160 +public + +funùiÚ + + $__g‘ +( +$Çme +) + +162 +$g‘Prݔty + = 'g‘'. +$Çme +; + +163 ià( + `š_¬¿y +( +$g‘Prݔty +, +$this +-> +´Ý”t›s +)) + +165  +$this +-> + `$g‘Prݔty +(); + +169 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('Prݔty % dÛ nكxi¡s.', +$Çme +)); + +171 + } +} + +180 +public + +funùiÚ + + $__£t +( +$Çme +, +$v®ue +) + +182 +$£tPrݔty + = '£t'. +$Çme +; + +183 ià( + `š_¬¿y +( +$£tPrݔty +, +$this +-> +´Ý”t›s +)) + +185 +$this +-> + `$£tPrݔty +( +$v®ue +); + +189 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('Prݔty % ÿÀnÙ b£t.', +$Çme +)); + +191 + } +} + +202 +public + +funùiÚ + +__cÚ¡ruù +( +$cuÉu» + = 'en') + +204 +$this +-> +´Ý”t›s + = +g‘_þass_m‘hods +($this); + +206 ià( +em±y +( +$cuÉu» +)) + +208 + g$cuÉu» + = 'en'; + +211 + g$this +-> + gd©aDœ + = +£lf +:: +d©aDœ +(); + +212 + g$this +-> + gd©aFžeExt + = +£lf +:: +fžeExt +(); + +214 + g$this +-> +£tCuÉu» +( +$cuÉu» +); + +216 + g$this +-> +lßdCuÉu»D©a +('root'); + +217 + g$this +-> +lßdCuÉu»D©a +( +$cuÉu» +); + +226 +´Ùeùed +  +funùiÚ + + $d©aDœ +() + +228  + `dœÇme +( +__FILE__ +).'/data/'; + +229 + } +} + +236 +´Ùeùed +  +funùiÚ + + $fžeExt +() + +239 + } +} + +248  +public + +funùiÚ + + $v®idCuÉu» +( +$cuÉu» +) + +250 ià( + `´eg_m©ch +('/^[a-z]{2}(_[A-Z]{2,5}){0,2}$/', +$cuÉu» +)) + +252  + `is_fže +( +£lf +:: + `d©aDœ +(). +$cuÉu» +.£lf:: + `fžeExt +()); + +255  +çl£ +; + +256 + } +} + +264 +´Ùeùed + +funùiÚ + + $£tCuÉu» +( +$cuÉu» +) + +266 ià(! + `em±y +( +$cuÉu» +)) + +268 ià(! + `´eg_m©ch +('/^[a-z]{2}(_[A-Z]{2,5}){0,2}$/', +$cuÉu» +)) + +270 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('Inv®id cuÉu» suµl›d: %s', +$cuÉu» +)); + +274 +$this +-> +cuÉu» + = +$cuÉu» +; + +275 + } +} + +282 +´Ùeùed + +funùiÚ + + $lßdCuÉu»D©a +( +$cuÉu» +) + +284 +$fže_·¹s + = + `ex¶ode +('_', +$cuÉu» +); + +285 +$cu¼’t_·¹ + = +$fže_·¹s +[0]; + +287 +$fžes + = + `¬¿y +( +$cu¼’t_·¹ +); + +289  +$i + = 1, +$max + = + `couÁ +( +$fže_·¹s +); $i < $max; $i++) + +291 +$cu¼’t_·¹ + .ð'_'. +$fže_·¹s +[ +$i +]; + +292 +$fžes +[] = +$cu¼’t_·¹ +; + +295 + `fܗch + ( +$fžes + +as + +$fže +) + +297 +$fž’ame + = +$this +-> +d©aDœ +. +$fže +.$this-> +d©aFžeExt +; + +299 ià( + `is_fže +( +$fž’ame +è=ð +çl£ +) + +301 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('D©¨fžfÜ "%s" wa nÙ found.', +$fže +)); + +304 ià( + `š_¬¿y +( +$fž’ame +, +$this +-> +d©aFžes +è=ð +çl£ +) + +306 + `¬¿y_unshiá +( +$this +-> +d©aFžes +, +$fže +); + +308 +$d©a + = & +$this +-> + `g‘D©a +( +$fž’ame +); + +309 +$this +-> +d©a +[ +$fže +] = & +$d©a +; + +311 ià( + `is£t +( +$d©a +['__ALIAS'])) + +313 +$this +-> + `lßdCuÉu»D©a +( +$d©a +['__ALIAS']); + +315 + `un£t +( +$d©a +); + +318 + } +} + +328 +´Ùeùed + + gfunùiÚ + & + $g‘D©a +( +$fž’ame +) + +330  +$d©a + = + `¬¿y +(); + +331  +$fžes + = + `¬¿y +(); + +333 ià(! + `š_¬¿y +( +$fž’ame +, +$fžes +)) + +335 +$d©a +[ +$fž’ame +] = + `un£rŸlize +( + `fže_g‘_cڋÁs +($filename)); + +336 +$fžes +[] = +$fž’ame +; + +339  +$d©a +[ +$fž’ame +]; + +340 + } +} + +357 +´Ùeùed + +funùiÚ + +fšdInfo +( +$·th + = '/', +$m”ge + = +çl£ +) + +359 +$»suÉ + = +¬¿y +(); + +360 +fܗch + ( +$this +-> +d©aFžes + +as + +$£ùiÚ +) + +362 + g$šfo + = +$this +-> +£¬chA¼ay +($this-> +d©a +[ +$£ùiÚ +], +$·th +); + +364 ià( + g$šfo +) + +366 ià( + g$m”ge +) + +368 + g$»suÉ + = +$this +-> +¬¿y_add +( +$»suÉ +, +$šfo +); + +372  + g$šfo +; + +377  + g$»suÉ +; + +385 +´iv©e + +funùiÚ + + $¬¿y_add +( +$¬¿y1 +, +$¬¿y2 +) + +387 + `fܗch + ( +$¬¿y2 + +as + +$key + => +$v®ue +) + +389 ià( + `is£t +( +$¬¿y1 +[ +$key +])) + +391 if( + `is_¬¿y +( +$¬¿y1 +[ +$key +]è&& is_¬¿y( +$v®ue +)) + +393 +$¬¿y1 +[ +$key +] = +$this +-> + `¬¿y_add +($¬¿y1[$key], +$v®ue +); + +398 +$¬¿y1 +[ +$key +] = +$v®ue +; + +401  +$¬¿y1 +; + +402 + } +} + +413 +´Ùeùed + +funùiÚ + +£¬chA¼ay +( +$šfo +, +$·th + = '/') + +415 +$šdex + = +ex¶ode +('/', +$·th +); + +417 + g$¬¿y + = +$šfo +; + +419  + g$i + = 0, + g$max + = +couÁ +( +$šdex +); $i < $max; $i++) + +421 + g$k + = +$šdex +[ +$i +]; + +422 ià( + g$i + < + g$max + - 1 && +is£t +( +$¬¿y +[ +$k +])) + +424 + g$¬¿y + = +$¬¿y +[ +$k +]; + +426 ià( + g$i + =ð +$max + - 1 && +is£t +( +$¬¿y +[ +$k +])) + +428  +$¬¿y +[ +$k +]; + +439 +public + +funùiÚ + + $g‘Name +() + +441  +$this +-> +cuÉu» +; + +442 + } +} + +450 +public + +funùiÚ + + $g‘D©eTimeFÜm© +() + +452 ià( +nuÎ + ==ð +$this +-> +d©eTimeFÜm© +) + +454 +$ÿËnd¬ + = +$this +-> + `g‘C®’d¬ +(); + +455 +$šfo + = +$this +-> + `fšdInfo +("ÿËnd¬/{$ÿËnd¬}", +Œue +); + +456 +$this +-> + `£tD©eTimeFÜm© +( +Ãw + + `sfD©eTimeFÜm©Info +( +$šfo +)); + +459  +$this +-> +d©eTimeFÜm© +; + +460 + } +} + +467 +public + +funùiÚ + + $£tD©eTimeFÜm© +( +$d©eTimeFÜm© +) + +469 +$this +-> +d©eTimeFÜm© + = +$d©eTimeFÜm© +; + +470 + } +} + +477 +public + +funùiÚ + + $g‘C®’d¬ +() + +479  +$this +-> + `fšdInfo +('calendar/default'); + +480 + } +} + +489 +public + +funùiÚ + + $g‘N©iveName +() + +491 +$Ïng + = + `sub¡r +( +$this +-> +cuÉu» +, 0, 2); + +492 +$»g + = + `sub¡r +( +$this +-> +cuÉu» +, 3, 2); + +493 +$Ïnguage + = +$this +-> + `fšdInfo +("Languages/{$lang}"); + +494 +$»giÚ + = +$this +-> + `fšdInfo +("Countries/{$reg}"); + +495 ià( +$»giÚ +) + +497  +$Ïnguage +.' ('. +$»giÚ +.')'; + +501  +$Ïnguage +; + +503 + } +} + +512 +public + +funùiÚ + + $g‘EnglishName +() + +514 +$Ïng + = + `sub¡r +( +$this +-> +cuÉu» +, 0, 2); + +515 +$»g + = + `sub¡r +( +$this +-> +cuÉu» +, 3, 2); + +516 +$cuÉu» + = +$this +-> + `g‘Inv¬ŸÁCuÉu» +(); + +518 +$Ïnguage + = +$cuÉu» +-> + `fšdInfo +("Languages/{$lang}"); + +519 ià( + `couÁ +( +$Ïnguage +) == 0) + +521  +$this +-> +cuÉu» +; + +524 +$»giÚ + = +$cuÉu» +-> + `fšdInfo +("Countries/{$reg}"); + +526  +$»giÚ + ? +$Ïnguage +.' ('.$region.')' : $language; + +527 + } +} + +537  +funùiÚ + + $g‘Inv¬ŸÁCuÉu» +() + +539  +$šv¬ŸÁ +; + +541 ià( +nuÎ + ==ð +$šv¬ŸÁ +) + +543 +$šv¬ŸÁ + = +Ãw + + `sfCuÉu»Info +(); + +546  +$šv¬ŸÁ +; + +547 + } +} + +556 +public + +funùiÚ + + $g‘IsNeuŒ®CuÉu» +() + +558  + `¡¾’ +( +$this +-> +cuÉu» +) == 2; + +559 + } +} + +567 +public + +funùiÚ + + $g‘Numb”FÜm© +() + +569 ià( +nuÎ + ==ð +$this +-> +numb”FÜm© +) + +571 +$–em’ts + = +$this +-> + `fšdInfo +('NumberElements'); + +572 +$·‰”ns + = +$this +-> + `fšdInfo +('NumberPatterns'); + +573 +$cu¼’c›s + = +$this +-> + `g‘Cu¼’c›s +( +nuÎ +, +Œue +); + +574 +$d©a + = + `¬¿y +('Numb”EËm’ts' => +$–em’ts +, 'Numb”P©‹ºs' => +$·‰”ns +, 'Cu¼’c›s' => +$cu¼’c›s +); + +576 +$this +-> + `£tNumb”FÜm© +( +Ãw + + `sfNumb”FÜm©Info +( +$d©a +)); + +579  +$this +-> +numb”FÜm© +; + +580 + } +} + +587 +public + +funùiÚ + + $£tNumb”FÜm© +( +$numb”FÜm© +) + +589 +$this +-> +numb”FÜm© + = +$numb”FÜm© +; + +590 + } +} + +598 +public + +funùiÚ + + $g‘P¬’t +() + +600 ià( + `¡¾’ +( +$this +-> +cuÉu» +) == 2) + +602  +$this +-> + `g‘Inv¬ŸÁCuÉu» +(); + +605  +Ãw + + `sfCuÉu»Info +( + `sub¡r +( +$this +-> +cuÉu» +, 0, 2)); + +606 + } +} + +618  +funùiÚ + +g‘CuÉu»s +( +$ty³ + = +sfCuÉu»Info +:: +ALL +) + +620 +$d©aDœ + = +sfCuÉu»Info +:: +d©aDœ +(); + +621 + g$d©aExt + = +sfCuÉu»Info +:: +fžeExt +(); + +622 + g$dœ + = +dœ +( +$d©aDœ +); + +624 + g$ÃuŒ® + = +¬¿y +(); + +625 + g$¥ecific + = +¬¿y +(); + +627  + gçl£ + !=ð( +$’Œy + = +$dœ +-> +»ad +())) + +629 ià( +is_fže +( +$d©aDœ +. +$’Œy +è&& +sub¡r +($’Œy, -4è=ð +$d©aExt + && $entry != 'root'.$dataExt) + +631 +$cuÉu» + = +sub¡r +( +$’Œy +, 0, -4); + +632 ià( +¡¾’ +( +$cuÉu» +) == 2) + +634 +$ÃuŒ® +[] = +$cuÉu» +; + +638 + g$¥ecific +[] = +$cuÉu» +; + +642 + g$dœ +-> +þo£ +(); + +644  + g$ty³ +) + +646  + gsfCuÉu»Info +:: +ALL +: + +647 +$®l + = +¬¿y_m”ge +( +$ÃuŒ® +, +$¥ecific +); + +648 +sÜt +( +$®l +); + +649  + g$®l +; + +651  + gsfCuÉu»Info +:: +NEUTRAL +: + +652  +$ÃuŒ® +; + +654  + gsfCuÉu»Info +:: +SPECIFIC +: + +655  +$¥ecific +; + +667 +public + +funùiÚ + + $g‘CouÁry +( +$code +) + +669 +$couÁr›s + = +$this +-> + `fšdInfo +('CouÁr›s', +Œue +); + +671 ià(! + `is£t +( +$couÁr›s +[ +$code +])) + +673 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('ThcouÁry % dÛ nكxi¡.', +$code +)); + +676  +$couÁr›s +[ +$code +]; + +677 + } +} + +686 +public + +funùiÚ + + $g‘Cu¼’cy +( +$code +) + +688 +$cu¼’c›s + = +$this +-> + `fšdInfo +('Cu¼’c›s', +Œue +); + +690 ià(! + `is£t +( +$cu¼’c›s +[ +$code +])) + +692 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('Thcu¼’cy % dÛ nكxi¡.', +$code +)); + +695  +$cu¼’c›s +[ +$code +][1]; + +696 + } +} + +705 +public + +funùiÚ + + $g‘Lªguage +( +$code +) + +707 +$Ïnguages + = +$this +-> + `fšdInfo +('Lªguages', +Œue +); + +709 ià(! + `is£t +( +$Ïnguages +[ +$code +])) + +711 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('ThÏnguag% dÛ nكxi¡.', +$code +)); + +714  +$Ïnguages +[ +$code +]; + +715 + } +} + +724 +public + +funùiÚ + + $g‘CouÁr›s +( +$couÁr›s + = +nuÎ +) + +727 +$®lCouÁr›s + = + `¬¿y +(); + +728 + `fܗch + ( +$this +-> + `fšdInfo +('CouÁr›s', +Œue +è +as + +$key + => +$v®ue +) + +730 ià(! + `is_št +( +$key +)) + +732 +$®lCouÁr›s +[ +$key +] = +$v®ue +; + +737 ià( +nuÎ + !=ð +$couÁr›s +) + +739 ià( +$´obËms + = + `¬¿y_diff +( +$couÁr›s +, + `¬¿y_keys +( +$®lCouÁr›s +))) + +741 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('ThfÞlowšg couÁr› dØnكxi¡: %s.', + `im¶ode +(', ', +$´obËms +))); + +744 +$®lCouÁr›s + = + `¬¿y_š‹r£ù_key +($®lCouÁr›s, + `¬¿y_æ +( +$couÁr›s +)); + +747 +$this +-> + `sÜtA¼ay +( +$®lCouÁr›s +); + +749  +$®lCouÁr›s +; + +750 + } +} + +760 +public + +funùiÚ + + $g‘Cu¼’c›s +( +$cu¼’c›s + = +nuÎ +, +$fuÎ + = +çl£ +) + +762 +$®lCu¼’c›s + = +$this +-> + `fšdInfo +('Cu¼’c›s', +Œue +); + +765 ià( +nuÎ + !=ð +$cu¼’c›s +) + +767 ià( +$´obËms + = + `¬¿y_diff +( +$cu¼’c›s +, + `¬¿y_keys +( +$®lCu¼’c›s +))) + +769 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('ThfÞlowšg cu¼’c› dØnكxi¡: %s.', + `im¶ode +(', ', +$´obËms +))); + +772 +$®lCu¼’c›s + = + `¬¿y_š‹r£ù_key +($®lCu¼’c›s, + `¬¿y_æ +( +$cu¼’c›s +)); + +775 +$tmp + = + `¬¿y +(); + +776 + `fܗch + ( +$®lCu¼’c›s + +as + +$key + => +$v®ue +) + +778 +$®lCu¼’c›s +[ +$key +] = +$v®ue +[1]; + +779 +$tmp +[ +$key +] = +$v®ue +[0]; + +782 +$this +-> + `sÜtA¼ay +( +$®lCu¼’c›s +); + +784 ià( +$fuÎ +) + +786 + `fܗch + ( +$®lCu¼’c›s + +as + +$key + => +$v®ue +) + +788 +$®lCu¼’c›s +[ +$key +] = + `¬¿y +( +$tmp +[$key], +$v®ue +); + +792  +$®lCu¼’c›s +; + +793 + } +} + +802 +public + +funùiÚ + + $g‘Lªguages +( +$Ïnguages + = +nuÎ +) + +804 +$®lLªguages + = +$this +-> + `fšdInfo +('Lªguages', +Œue +); + +807 ià( +nuÎ + !=ð +$Ïnguages +) + +809 ià( +$´obËms + = + `¬¿y_diff +( +$Ïnguages +, + `¬¿y_keys +( +$®lLªguages +))) + +811 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('ThfÞlowšg†ªguage dØnكxi¡: %s.', + `im¶ode +(', ', +$´obËms +))); + +814 +$®lLªguages + = + `¬¿y_š‹r£ù_key +($®lLªguages, + `¬¿y_æ +( +$Ïnguages +)); + +817 +$this +-> + `sÜtA¼ay +( +$®lLªguages +); + +819  +$®lLªguages +; + +820 + } +} + +827 +public + +funùiÚ + + $g‘Süts +() + +829  +$this +-> + `fšdInfo +('Süts', +Œue +); + +830 + } +} + +837 +public + +funùiÚ + + $g‘TimeZÚes +() + +841 +$m‘ad©a + = +$this +-> + `fšdInfo +('zÚeSŒšgs', +Œue +); + +843 +$timeZÚes + = +$this +-> + `fšdInfo +('TimeZÚes', +Œue +); + +844 + `fܗch + ( +$timeZÚes + +as + +$key + => +$v®ue +) + +846 +$timeZÚes +[ +$key +] = +$m‘ad©a +['m‘a:'. +$v®ue +]; + +847 +$timeZÚes +[ +$key +]['identifier'] = $key; + +848 +$timeZÚes +[ +$key +]['c™y'] = + `¡r_»¶aû +('_', ' ', + `sub¡r +($key, + `¡½os +($key, '/') + 1)); + +850  +$timeZÚes +; + +851 + } +} + +858 +public + +funùiÚ + + $sÜtA¼ay +(& +$¬¿y +) + +860 +$ÞdLoÿË + = + `£ŽoÿË +( +LC_COLLATE +, 0); + +861 + `£ŽoÿË +( +LC_COLLATE +, +$this +-> + `g‘Name +()); + +862 + `asÜt +( +$¬¿y +, +SORT_LOCALE_STRING +); + +863 + `£ŽoÿË +( +LC_COLLATE +, +$ÞdLoÿË +); + +864 + } +} + + @lib/vendor/symfony/lib/i18n/sfDateFormat.class.php + +1 +fÜm©Info + = +sfD©eTimeFÜm©Info +:: + `g‘Inv¬ŸÁInfo +(); + +90 ià( +$fÜm©Info + +š¡ªûof + +sfCuÉu»Info +) + +92 +$this +-> +fÜm©Info + = +$fÜm©Info +-> +D©eTimeFÜm© +; + +94 ià( +$fÜm©Info + +š¡ªûof + +sfD©eTimeFÜm©Info +) + +96 +$this +-> +fÜm©Info + = +$fÜm©Info +; + +100 +$this +-> +fÜm©Info + = +sfD©eTimeFÜm©Info +:: + `g‘In¡ªû +( +$fÜm©Info +); + +103 +$this +-> +m‘hods + = + `g‘_þass_m‘hods +($this); + +114 +public + +funùiÚ + + $g‘D©e +( +$time +, +$·‰”n + = +nuÎ +) + +116 ià( +nuÎ + ==ð +$time +) + +118  +nuÎ +; + +122 +$isSŒšg + = ( +¡ršg +è +$time + !== (string) () $time; + +124 ià( +$isSŒšg +) + +126 ià(! +$·‰”n +) + +128 ià( + `¡¾’ +( +$time +) == 10) + +130 +$·‰”n + = 'i'; + +134 +$·‰”n + = 'I'; + +138 +$·‰”n + = +$this +-> + `g‘P©‹º +($pattern); + +139 +$tok’s + = +$this +-> + `g‘Tok’s +( +$·‰”n +); + +140 +$´egP©‹º + = ''; + +141 +$m©chNames + = + `¬¿y +(); + +144 +$®lowsAÎCh¬s += +Œue +; + +145 + `fܗch + ( +$tok’s + +as + +$tok’ +) + +147 ià( +$m©chName + = +$this +-> + `g‘FunùiÚName +( +$tok’ +)) + +149 +$®lowsAÎCh¬s + = +çl£ +; + +150 +$´egP©‹º + .= '(\d+)'; + +151 +$m©chNames +[] = +$m©chName +; + +155 ià(! +$®lowsAÎCh¬s +) + +157 +$®lowsAÎCh¬s + = +Œue +; + +158 +$´egP©‹º + .= '[^\d]+'; + +162 + `´eg_m©ch +('@'. +$´egP©‹º +.'@', +$time +, +$m©ches +); + +164 + `¬¿y_shiá +( +$m©ches +); + +166 ià( + `couÁ +( +$m©chNames +è=ðcouÁ( +$m©ches +)) + +168 +$d©e + = + `¬¿y_combše +( +$m©chNames +, +$m©ches +); + +170 ià( + `¡¾’ +( +$d©e +['year']) == 2) + +172 +$d©e +['y—r'] = + `d©e +('Y', + `mktime +(0, 0, 0, 1, 1, $date['year'])); + +174 +$d©e + = + `¬¿y_m­ +('intval', $date); + +179 ià(! + `is£t +( +$d©e +)) + +181 ià( +$isSŒšg +) + +183 +$num”iÿlTime + = @ + `¡¹Ùime +( +$time +); + +184 ià( +$num”iÿlTime + ==ð +çl£ +) + +186 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('Impossibˁطr£ d©"%s" w™h fÜm© "%s".', +$time +, +$·‰”n +)); + +191 +$num”iÿlTime + = +$time +; + +193 +$d©e + = @ + `g‘d©e +( +$num”iÿlTime +); + +197 + `fܗch + ( + `¬¿y +('hours', 'mšu‹s', '£cÚds'è +as + +$timeDiv +) + +199 ià(! + `is£t +( +$d©e +[ +$timeDiv +])) + +201 +$d©e +[ +$timeDiv +] = 0; + +205  +$d©e +; + +206 + } +} + +217 +public + +funùiÚ + +fÜm© +( +$time +, +$·‰”n + = 'F', +$šputP©‹º + = +nuÎ +, +$ch¬£t + = 'UTF-8') + +219 +$d©e + = +$this +-> +g‘D©e +( +$time +, +$šputP©‹º +); + +221 ià( + gnuÎ + ==ð +$·‰”n +) + +223 +$·‰”n + = 'F'; + +226 + g$·‰”n + = +$this +-> +g‘P©‹º +( +$·‰”n +); + +227 + g$tok’s + = +$this +-> +g‘Tok’s +( +$·‰”n +); + +229  + g$i + = 0, + g$max + = +couÁ +( +$tok’s +); $i < $max; $i++) + +231 + g$·‰”n + = +$tok’s +[ +$i +]; + +232 ià( + g$·‰”n +{0} =ð"'" && +$·‰”n +{ +¡¾’ +($pattern) - 1} == "'") + +234 +$tok’s +[ +$i +] = +¡r_»¶aû +('``````', '\'', +´eg_»¶aû +('/(^\')|(\'$)/', '', +$·‰”n +)); + +236 ià( + g$·‰”n + == '``````') + +238 +$tok’s +[ +$i +] = '\''; + +242 + g$funùiÚ + = +ucfœ¡ +( +$this +-> +g‘FunùiÚName +( +$·‰”n +)); + +243 ià( + g$funùiÚ + !ð +nuÎ +) + +245 +$fName + = 'g‘'. +$funùiÚ +; + +246 ià( +š_¬¿y +( +$fName +, +$this +-> +m‘hods +)) + +248 + g$tok’s +[ +$i +] = +$this +-> +$fName +( +$d©e +, +$·‰”n +); + +252 +throw + +Ãw + +sfExû±iÚ +( +¥rštf +('FunùiÚ % nÙ found.', +$funùiÚ +)); + +258  + gsfToÞk™ +:: +I18N_toEncodšg +( +im¶ode +('', +$tok’s +), +$ch¬£t +); + +267 +´Ùeùed + +funùiÚ + + $g‘FunùiÚName +( +$tok’ +) + +269 ià( + `is£t +( +$this +-> +tok’s +[ +$tok’ +{0}])) + +271  +$this +-> +tok’s +[ +$tok’ +{0}]; + +273 + } +} + +287 +public + +funùiÚ + + $g‘P©‹º +( +$·‰”n +) + +289 ià( + `is_¬¿y +( +$·‰”n +è&& + `couÁ +($pattern) == 2) + +291  +$this +-> +fÜm©Info +-> + `fÜm©D©eTime +($this-> + `g‘P©‹º +( +$·‰”n +[0]), $this->getPattern($pattern[1])); + +294  +$·‰”n +) + +297  +$this +-> +fÜm©Info +-> +ShÜtD©eP©‹º +; + +300  +$this +-> +fÜm©Info +-> +LÚgD©eP©‹º +; + +303  +$this +-> +fÜm©Info +-> +MediumD©eP©‹º +; + +306  +$this +-> +fÜm©Info +-> +FuÎD©eP©‹º +; + +309  +$this +-> +fÜm©Info +-> +ShÜtTimeP©‹º +; + +312  +$this +-> +fÜm©Info +-> +LÚgTimeP©‹º +; + +315  +$this +-> +fÜm©Info +-> +MediumTimeP©‹º +; + +318  +$this +-> +fÜm©Info +-> +FuÎTimeP©‹º +; + +321  +$this +-> +fÜm©Info +-> + `fÜm©D©eTime +($this->fÜm©Info-> +LÚgD©eP©‹º +, $this->fÜm©Info-> +ShÜtTimeP©‹º +); + +324  +$this +-> +fÜm©Info +-> + `fÜm©D©eTime +($this->fÜm©Info-> +LÚgD©eP©‹º +, $this->fÜm©Info-> +LÚgTimeP©‹º +); + +327  +$this +-> +fÜm©Info +-> + `fÜm©D©eTime +($this->fÜm©Info-> +ShÜtD©eP©‹º +, $this->fÜm©Info-> +ShÜtTimeP©‹º +); + +330  +$this +-> +fÜm©Info +-> + `fÜm©D©eTime +($this->fÜm©Info-> +ShÜtD©eP©‹º +, $this->fÜm©Info-> +LÚgTimeP©‹º +); + +360  +$·‰”n +; + +362 + } +} + +371 +public + +funùiÚ + + $g‘IÅutP©‹º +( +$·‰”n +) + +373 +$·‰”n + = +$this +-> + `g‘P©‹º +($pattern); + +375 +$·‰”n + = + `¡¹r +($·‰”n, + `¬¿y +('yyyy' => 'Y', 'h'=>'H', 'z'=>'', 'a'=>'')); + +376 +$·‰”n + = + `¡¹r +($·‰”n, + `¬¿y +('yy'=>'yyyy', 'Y'=>'yyyy')); + +378  + `Œim +( +$·‰”n +); + +379 + } +} + +390 +´Ùeùed + +funùiÚ + + $g‘Tok’s +( +$·‰”n +) + +392 +$ch¬ + = +nuÎ +; + +393 +$tok’s + = + `¬¿y +(); + +394 +$tok’ + = +nuÎ +; + +396 +$‹xt + = +çl£ +; + +398  +$i + = 0, +$max + = + `¡¾’ +( +$·‰”n +); $i < $max; $i++) + +400 ià( +$ch¬ + =ð +nuÎ + || +$·‰”n +{ +$i +} =ð$ch¬ || +$‹xt +) + +402 +$tok’ + .ð +$·‰”n +{ +$i +}; + +406 +$tok’s +[] = + `¡r_»¶aû +("''", "'", +$tok’ +); + +407 +$tok’ + = +$·‰”n +{ +$i +}; + +410 ià( +$·‰”n +{ +$i +} =ð"'" && +$‹xt + =ð +çl£ +) + +412 +$‹xt + = +Œue +; + +414 ià( +$‹xt + && +$·‰”n +{ +$i +} =ð"'" && +$ch¬ + == "'") + +416 +$‹xt + = +Œue +; + +418 ià( +$‹xt + && +$ch¬ + !ð"'" && +$·‰”n +{ +$i +} == "'") + +420 +$‹xt + = +çl£ +; + +423 +$ch¬ + = +$·‰”n +{ +$i +}; + +426 +$tok’s +[] = +$tok’ +; + +428  +$tok’s +; + +429 + } +} + +432 +´Ùeùed + +funùiÚ + + $g‘UnixD©e +( +$d©e +) + +434  + `g‘d©e +( + `mktime +( +$d©e +['hours'], $date['minutes'], $date['seconds'], $date['mon'], $date['mday'], $date['year'])); + +435 + } +} + +446 +´Ùeùed + +funùiÚ + +g‘Y—r +( +$d©e +, +$·‰”n + = 'yyyy') + +448 +$y—r + = +$d©e +['year']; + +449  + g$·‰”n +) + +452  +sub¡r +( +$y—r +, 2); + +456  +$y—r +; + +458 +throw + +Ãw + +sfExû±iÚ +('The…attern for year isƒither "y", "yy", "yyy" or "yyyy".'); + +474 +´Ùeùed + +funùiÚ + +g‘MÚ +( +$d©e +, +$·‰”n + = 'M') + +476 +$mÚth + = +$d©e +['mon']; + +478  + g$·‰”n +) + +481  +$mÚth +; + +483  +¡r_·d +( +$mÚth +, 2, '0', +STR_PAD_LEFT +); + +485  +$this +-> +fÜm©Info +-> +Abb»vŸ‹dMÚthNames +[ +$mÚth + - 1]; + +487  +$this +-> +fÜm©Info +-> +MÚthNames +[ +$mÚth + - 1]; + +489  +$this +-> +fÜm©Info +-> +N¬rowMÚthNames +[ +$mÚth + - 1]; + +491 +throw + +Ãw + +sfExû±iÚ +('The…attern for month is "M", "MM", "MMM", "MMMM", "MMMMM".'); + +506 +´Ùeùed + +funùiÚ + +g‘Wday +( +$d©e +, +$·‰”n + = 'EEEE') + +509 ià(! +is£t +( +$d©e +['wday'])) + +511 +$d©e + = +$this +-> +g‘UnixD©e +($date); + +513 + g$day + = +$d©e +['wday']; + +515  + g$·‰”n +) + +518  +$day +; + +521  +$this +-> +fÜm©Info +-> +N¬rowDayNames +[ +$day +]; + +523  +$this +-> +fÜm©Info +-> +Abb»vŸ‹dDayNames +[ +$day +]; + +526  +$this +-> +fÜm©Info +-> +DayNames +[ +$day +]; + +529 +throw + +Ãw + +sfExû±iÚ +('The…attern for day ofhe week is "E", "EE", "EEE", or "EEEE".'); + +541 +´Ùeùed + +funùiÚ + +g‘Mday +( +$d©e +, +$·‰”n + = 'd') + +543 +$day + = +$d©e +['mday']; + +545  + g$·‰”n +) + +548  +$day +; + +550  +¡r_·d +( +$day +, 2, '0', +STR_PAD_LEFT +); + +552  +$this +-> +g‘Wday +( +$d©e +); + +554 +throw + +Ãw + +sfExû±iÚ +('The…attern for day ofhe month is "d", "dd" or "dddd".'); + +566 +´Ùeùed + +funùiÚ + +g‘E¿ +( +$d©e +, +$·‰”n + = 'G') + +568 ià( +$·‰”n + != 'G') + +570 +throw + +Ãw + +sfExû±iÚ +('The…attern forƒra is "G".'); + +573  + g$this +-> + gfÜm©Info +-> +g‘E¿ +( +$d©e +['year'] > 0 ? 1 : 0); + +584 +´Ùeùed + +funùiÚ + +g‘Hours +( +$d©e +, +$·‰”n + = 'H') + +586 +$hour + = +$d©e +['hours']; + +588  + g$·‰”n +) + +591  +$hour +; + +593  +¡r_·d +( +$hour +, 2, '0', +STR_PAD_LEFT +); + +595 +throw + +Ãw + +sfExû±iÚ +('The…attern for 24 hour format is "H" or "HH".'); + +606 +´Ùeùed + +funùiÚ + +g‘AMPM +( +$d©e +, +$·‰”n + = 'a') + +608 ià( +$·‰”n + != 'a') + +610 +throw + +Ãw + +sfExû±iÚ +('The…attern for AM/PM marker is "a".'); + +613  + g$this +-> + gfÜm©Info +-> + gAMPMM¬k”s +[ +štv® +( +$d©e +['hours'] / 12)]; + +624 +´Ùeùed + +funùiÚ + +g‘Hour12 +( +$d©e +, +$·‰”n + = 'h') + +626 +$hour + = +$d©e +['hours']; + +627 + g$hour + = ( +$hour + == 12 | $hour == 0) ? 12 : $hour % 12; + +629  + g$·‰”n +) + +632  +$hour +; + +634  +¡r_·d +( +$hour +, 2, '0', +STR_PAD_LEFT +); + +636 +throw + +Ãw + +sfExû±iÚ +('The…attern for 24 hour format is "H" or "HH".'); + +648 +´Ùeùed + +funùiÚ + +g‘Mšu‹s +( +$d©e +, +$·‰”n + = 'm') + +650 +$mšu‹s + = +$d©e +['minutes']; + +652  + g$·‰”n +) + +655  +$mšu‹s +; + +657  +¡r_·d +( +$mšu‹s +, 2, '0', +STR_PAD_LEFT +); + +659 +throw + +Ãw + +sfExû±iÚ +('The…attern for minutes is "m" or "mm".'); + +671 +´Ùeùed + +funùiÚ + +g‘SecÚds +( +$d©e +, +$·‰”n + = 's') + +673 +$£cÚds + = +$d©e +['seconds']; + +675  + g$·‰”n +) + +678  +$£cÚds +; + +680  +¡r_·d +( +$£cÚds +, 2, '0', +STR_PAD_LEFT +); + +682 +throw + +Ãw + +sfExû±iÚ +('The…attern for seconds is "s" or "ss".'); + +694 +´Ùeùed + +funùiÚ + +g‘TimeZÚe +( +$d©e +, +$·‰”n + = 'z') + +697  +$·‰”n +) + +700 +$·‰”n + = 'T'; + +703 +$·‰”n + = 'O'; + +705 +throw + +Ãw + +sfExû±iÚ +('The…attern forime zone is "z" or "Z".'); + +708  @ +d©e +( +$·‰”n +, @ +mktime +( +$d©e +['hours'], $date['minutes'], $date['seconds'], $date['mon'], $date['mday'], $date['year'])); + +718 +´Ùeùed + +funùiÚ + +g‘Yday +( +$d©e +, +$·‰”n + = 'D') + +720 ià( +$·‰”n + != 'D') + +722 +throw + +Ãw + +sfExû±iÚ +('The…attern for day in year is "D".'); + +725  + g$d©e +['yday']; + +735 +´Ùeùed + +funùiÚ + +g‘DayInMÚth +( +$d©e +, +$·‰”n + = 'FF') + +737  +$·‰”n +) + +740  @ +d©e +('j', @ +mktime +(0, 0, 0, +$d©e +['mon'], $date['mday'], $date['year'])); + +743  @ +d©e +('d', @ +mktime +(0, 0, 0, +$d©e +['mon'], $date['mday'], $date['year'])); + +746 +throw + +Ãw + +sfExû±iÚ +('The…attern for day in month is "F" or "FF".'); + +757 +´Ùeùed + +funùiÚ + +g‘W“kInY—r +( +$d©e +, +$·‰”n + = 'w') + +759 ià( +$·‰”n + != 'w') + +761 +throw + +Ãw + +sfExû±iÚ +('The…attern for week in year is "w".'); + +764  @ +d©e +('W', @ +mktime +(0, 0, 0, +$d©e +['mon'], $date['mday'], $date['year'])); + +774 +´Ùeùed + +funùiÚ + +g‘W“kInMÚth +( +$d©e +, +$·‰”n + = 'W') + +776 ià( +$·‰”n + != 'W') + +778 +throw + +Ãw + +sfExû±iÚ +('The…attern for week in month is "W".'); + +781  @ +d©e +('W', @ +mktime +(0, 0, 0, +$d©e +['mon'], $date['mday'], $date['year'])) - date('W', mktime(0, 0, 0, $date['mon'], 1, $date['year'])); + +791 +´Ùeùed + +funùiÚ + +g‘HourInDay +( +$d©e +, +$·‰”n + = 'k') + +793 ià( +$·‰”n + != 'k') + +795 +throw + +Ãw + +sfExû±iÚ +('The…attern for hour in day is "k".'); + +798  + g$d©e +['hours'] + 1; + +808 +´Ùeùed + +funùiÚ + +g‘HourInAMPM +( +$d©e +, +$·‰”n + = 'K') + +810 ià( +$·‰”n + != 'K') + +812 +throw + +Ãw + +sfExû±iÚ +('The…attern for hour in AM/PM is "K".'); + +815  ( + g$d©e +['hours'] + 1) % 12; + + @lib/vendor/symfony/lib/i18n/sfDateTimeFormatInfo.class.php + +1 +´Ý”t›s +)) + +97  +$this +-> + `$g‘Prݔty +(); + +101 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('Prݔty % dÛ nكxi¡s.', +$Çme +)); + +109 +funùiÚ + + $__£t +( +$Çme +, +$v®ue +) + +111 +$£tPrݔty + = '£t'. +$Çme +; + +112 ià( + `š_¬¿y +( +$£tPrݔty +, +$this +-> +´Ý”t›s +)) + +114 +$this +-> + `$£tPrݔty +( +$v®ue +); + +118 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('Prݔty % ÿÀnÙ b£t.', +$Çme +)); + +120 + } +} + +132 +funùiÚ + +__cÚ¡ruù +( +$d©a + = + $¬¿y +()) + +134 +$this +-> +´Ý”t›s + = + `g‘_þass_m‘hods +($this); + +136 ià( + `em±y +( +$d©a +)) + +138 +throw + +Ãw + + `sfExû±iÚ +('Please…rovidehe ICU datao initialize.'); + +141 +$this +-> +d©a + = +$d©a +; + +142 + } +} + +149 +´Ùeùed + +funùiÚ + + $g‘D©a +() + +151  +$this +-> +d©a +; + +152 + } +} + +159  +funùiÚ + + $g‘Inv¬ŸÁInfo +() + +161  +$šv¬ŸÁ +; + +163 ià( +nuÎ + ==ð +$šv¬ŸÁ +) + +165 +$šv¬ŸÁ + = +sfCuÉu»Info +:: + `g‘Inv¬ŸÁCuÉu» +()-> +D©eTimeFÜm© +; + +168  +$šv¬ŸÁ +; + +169 + } +} + +178  +funùiÚ + + $g‘In¡ªû +( +$cuÉu» + = +nuÎ +) + +180 ià( +$cuÉu» + +š¡ªûof + +sfCuÉu»Info +) + +182  +$cuÉu» +-> +D©eTimeFÜm© +; + +184 ià( + `is_¡ršg +( +$cuÉu» +)) + +186  +sfCuÉu»Info +:: + `g‘In¡ªû +( +$cuÉu» +)-> +D©eTimeFÜm© +; + +190  +sfCuÉu»Info +:: + `g‘Inv¬ŸÁCuÉu» +()-> +D©eTimeFÜm© +; + +192 + } +} + +202 +funùiÚ + + $g‘Abb»vŸ‹dDayNames +() + +204  +$this +-> +d©a +['dayNames']['format']['abbreviated']; + +205 + } +} + +215 +funùiÚ + + $£tAbb»vŸ‹dDayNames +( +$v®ue +) + +217 +$this +-> +d©a +['dayNames']['fÜm©']['abb»vŸ‹d'] = +$v®ue +; + +218 + } +} + +228 +funùiÚ + + $g‘N¬rowDayNames +() + +230  +$this +-> +d©a +['dayNames']['stand-alone']['narrow']; + +231 + } +} + +241 +funùiÚ + + $£tN¬rowDayNames +( +$v®ue +) + +243 +$this +-> +d©a +['dayNames']['¡ªd-®Úe']['Ǽow'] = +$v®ue +; + +244 + } +} + +254 +funùiÚ + + $g‘DayNames +() + +256  +$this +-> +d©a +['dayNames']['format']['wide']; + +257 + } +} + +268 +funùiÚ + + $£tDayNames +( +$v®ue +) + +270 +$this +-> +d©a +['dayNames']['fÜm©']['wide'] = +$v®ue +; + +271 + } +} + +281 +funùiÚ + + $g‘N¬rowMÚthNames +() + +283  +$this +-> +d©a +['monthNames']['stand-alone']['narrow']; + +284 + } +} + +294 +funùiÚ + + $£tN¬rowMÚthNames +( +$v®ue +) + +296 +$this +-> +d©a +['mÚthNames']['¡ªd-®Úe']['Ǽow'] = +$v®ue +; + +297 + } +} + +309 +funùiÚ + + $g‘Abb»vŸ‹dMÚthNames +() + +311 ià( + `is£t +( +$this +-> +d©a +['monthNames']['format']['abbreviated'])) + +313  +$this +-> +d©a +['monthNames']['format']['abbreviated']; + +317  +$this +-> +d©a +['monthNames']['format']['wide']; + +319 + } +} + +330 +funùiÚ + + $£tAbb»vŸ‹dMÚthNames +( +$v®ue +) + +332 +$this +-> +d©a +['mÚthNames']['fÜm©']['abb»vŸ‹d'] = +$v®ue +; + +333 + } +} + +344 +funùiÚ + + $g‘MÚthNames +() + +346  +$this +-> +d©a +['monthNames']['format']['wide']; + +347 + } +} + +358 +funùiÚ + + $£tMÚthNames +( +$v®ue +) + +360 +$this +-> +d©a +['mÚthNames']['fÜm©']['wide'] = +$v®ue +; + +361 + } +} + +369 +funùiÚ + + $g‘E¿ +( +$”a +) + +371  +$this +-> +d©a +['”as']['abb»vŸ‹d'][ +$”a +]; + +372 + } +} + +380 +funùiÚ + + $g‘AMDesigÇtÜ +() + +382 +$»suÉ + = +$this +-> + `g‘AMPMM¬k”s +(); + +384  +$»suÉ +[0]; + +385 + } +} + +392 +funùiÚ + + $£tAMDesigÇtÜ +( +$v®ue +) + +394 +$m¬k”s + = +$this +-> + `g‘AMPMM¬k”s +(); + +395 +$m¬k”s +[0] = +$v®ue +; + +396 +$this +-> + `£tAMPMM¬k”s +( +$m¬k”s +); + +397 + } +} + +405 +funùiÚ + + $g‘PMDesigÇtÜ +() + +407 +$»suÉ + = +$this +-> + `g‘AMPMM¬k”s +(); + +409  +$»suÉ +[1]; + +410 + } +} + +417 +funùiÚ + + $£tPMDesigÇtÜ +( +$v®ue +) + +419 +$m¬k”s + = +$this +-> + `g‘AMPMM¬k”s +(); + +420 +$m¬k”s +[1] = +$v®ue +; + +421 +$this +-> + `£tAMPMM¬k”s +( +$m¬k”s +); + +422 + } +} + +430 +funùiÚ + + $g‘AMPMM¬k”s +() + +432  +$this +-> +d©a +['AmPmMarkers']; + +433 + } +} + +441 +funùiÚ + + $£tAMPMM¬k”s +( +$v®ue +) + +443 +$this +-> +d©a +['AmPmM¬k”s'] = +$v®ue +; + +444 + } +} + +452 +funùiÚ + + $g‘FuÎTimeP©‹º +() + +454  +$this +-> +d©a +['DateTimePatterns'][0]; + +455 + } +} + +463 +funùiÚ + + $g‘LÚgTimeP©‹º +() + +465  +$this +-> +d©a +['DateTimePatterns'][1]; + +466 + } +} + +474 +funùiÚ + + $g‘MediumTimeP©‹º +() + +476  +$this +-> +d©a +['DateTimePatterns'][2]; + +477 + } +} + +485 +funùiÚ + + $g‘ShÜtTimeP©‹º +() + +487  +$this +-> +d©a +['DateTimePatterns'][3]; + +488 + } +} + +495 +funùiÚ + + $g‘FuÎD©eP©‹º +() + +497  +$this +-> +d©a +['DateTimePatterns'][4]; + +498 + } +} + +505 +funùiÚ + + $g‘LÚgD©eP©‹º +() + +507  +$this +-> +d©a +['DateTimePatterns'][5]; + +508 + } +} + +515 +funùiÚ + + $g‘MediumD©eP©‹º +() + +517  +$this +-> +d©a +['DateTimePatterns'][6]; + +518 + } +} + +526 +funùiÚ + + $g‘ShÜtD©eP©‹º +() + +528  +$this +-> +d©a +['DateTimePatterns'][7]; + +529 + } +} + +537 +funùiÚ + + $g‘D©eTimeOrd”P©‹º +() + +539  +$this +-> +d©a +['DateTimePatterns'][8]; + +540 + } +} + +548 +funùiÚ + + $fÜm©D©eTime +( +$d©e +, +$time +) + +550  + `¡r_»¶aû +( + `¬¿y +('{0}','{1}'),‡¼ay( +$time +, +$d©e +), +$this +-> + `g‘D©eTimeOrd”P©‹º +()); + +551 + } +} + + @lib/vendor/symfony/lib/i18n/sfI18N.class.php + +1 + `š™Ÿlize +( +$cÚfigu¿tiÚ +, +$ÿche +, +$ÝtiÚs +); + +56 +public + +funùiÚ + + `š™Ÿlize +( +sfAµliÿtiÚCÚfigu¿tiÚ + +$cÚfigu¿tiÚ +, +sfCache + +$ÿche + = +nuÎ +, +$ÝtiÚs + = + $¬¿y +()) + +58 +$this +-> +cÚfigu¿tiÚ + = +$cÚfigu¿tiÚ +; + +59 +$this +-> +di¥©ch” + = +$cÚfigu¿tiÚ +-> + `g‘Ev’tDi¥©ch” +(); + +60 +$this +-> +ÿche + = +$ÿche +; + +62 ià( + `is£t +( +$ÝtiÚs +['culture'])) + +64 +$this +-> + `£tCuÉu» +( +$ÝtiÚs +['culture']); + +65 + `un£t +( +$ÝtiÚs +['culture']); + +68 +$this +-> +ÝtiÚs + = + `¬¿y_m”ge +( + `¬¿y +( + +70 'debug' => +çl£ +, + +74 ), +$ÝtiÚs +); + +76 +$this +-> +di¥©ch” +-> + `cÚÃù +('u£r.chªge_cuÉu»', + `¬¿y +($this, 'listenToChangeCultureEvent')); + +78 if( +$this +-> + `isMes§geSourûFžeBa£d +($this-> +ÝtiÚs +['source'])) + +80 +$this +-> +di¥©ch” +-> + `cÚÃù +('cڌÞËr.chªge_aùiÚ', + `¬¿y +($this, 'listenToChangeActionEvent')); + +82 + } +} + +89 +public + +funùiÚ + + $g‘O±iÚs +() + +91  +$this +-> +ÝtiÚs +; + +92 + } +} + +99 +public + +funùiÚ + + $g‘CÚfigu¿tiÚ +() + +101  +$this +-> +cÚfigu¿tiÚ +; + +102 + } +} + +110 +public + +funùiÚ + + $£tMes§geSourû +( +$dœs +, +$cuÉu» + = +nuÎ +) + +112 ià( +nuÎ + ==ð +$dœs +) + +114 +$this +-> +mes§geSourû + = $this-> + `ü—‹Mes§geSourû +(); + +118 +$this +-> +mes§geSourû + = +sfMes§geSourû +:: + `çùÜy +('Agg»g©e', + `¬¿y_m­ +( + `¬¿y +($this, 'ü—‹Mes§geSourû'), +$dœs +)); + +121 ià( +nuÎ + !=ð +$this +-> +ÿche +) + +123 +$this +-> +mes§geSourû +-> + `£tCache +($this-> +ÿche +); + +126 ià( +nuÎ + !=ð +$cuÉu» +) + +128 +$this +-> + `£tCuÉu» +( +$cuÉu» +); + +132 +$this +-> +mes§geSourû +-> + `£tCuÉu» +($this-> +cuÉu» +); + +135 +$this +-> +mes§geFÜm© + = +nuÎ +; + +136 + } +} + +145 +public + +funùiÚ + + $ü—‹Mes§geSourû +( +$dœ + = +nuÎ +) + +147  +sfMes§geSourû +:: + `çùÜy +( +$this +-> +ÝtiÚs +['sourû'], +£lf +:: + `isMes§geSourûFžeBa£d +($this->ÝtiÚs['sourû']è? +$dœ + : $this->options['database']); + +148 + } +} + +155 +public + +funùiÚ + + $g‘CuÉu» +() + +157  +$this +-> +cuÉu» +; + +158 + } +} + +165 +public + +funùiÚ + + $£tCuÉu» +( +$cuÉu» +) + +167 +$this +-> +cuÉu» + = +$cuÉu» +; + +170 + `£ŽoÿË +( +LC_ALL +, 'en_US.utf8', 'en_US.UTF8', 'en_US.utf-8', 'en_US.UTF-8'); + +171 + `£ŽoÿË +( +LC_COLLATE +, +$cuÉu» +.'.utf8', $culture.'.UTF8', $culture.'.utf-8', $culture.'.UTF-8'); + +172 + `£ŽoÿË +( +LC_CTYPE +, +$cuÉu» +.'.utf8', $culture.'.UTF8', $culture.'.utf-8', $culture.'.UTF-8'); + +173 + `£ŽoÿË +( +LC_MONETARY +, +$cuÉu» +.'.utf8', $culture.'.UTF8', $culture.'.utf-8', $culture.'.UTF-8'); + +174 + `£ŽoÿË +( +LC_TIME +, +$cuÉu» +.'.utf8', $culture.'.UTF8', $culture.'.utf-8', $culture.'.UTF-8'); + +176 ià( +$this +-> +mes§geSourû +) + +178 +$this +-> +mes§geSourû +-> + `£tCuÉu» +( +$cuÉu» +); + +179 +$this +-> +mes§geFÜm© + = +nuÎ +; + +181 + } +} + +188 +public + +funùiÚ + + $g‘Mes§geSourû +() + +190 ià(! + `is£t +( +$this +-> +mes§geSourû +)) + +192 +$dœs + = ( +$this +-> + `isMes§geSourûFžeBa£d +($this-> +ÝtiÚs +['sourû'])è? $this-> +cÚfigu¿tiÚ +-> + `g‘I18NGlob®Dœs +(è: +nuÎ +; + +193 +$this +-> + `£tMes§geSourû +( +$dœs +, $this-> +cuÉu» +); + +196  +$this +-> +mes§geSourû +; + +197 + } +} + +204 +public + +funùiÚ + + $g‘Mes§geFÜm© +() + +206 ià(! + `is£t +( +$this +-> +mes§geFÜm© +)) + +208 +$this +-> +mes§geFÜm© + = +Ãw + + `sfMes§geFÜm© +($this-> + `g‘Mes§geSourû +(), +sfCÚfig +:: + `g‘ +('sf_charset')); + +210 ià( +$this +-> +ÝtiÚs +['debug']) + +212 +$this +-> +mes§geFÜm© +-> + `£tUÁ¿n¦©edPS +( + `¬¿y +($this-> +ÝtiÚs +['untranslated_prefix'], $this->options['untranslated_suffix'])); + +216  +$this +-> +mes§geFÜm© +; + +217 + } +} + +228 +public + +funùiÚ + +__ +( +$¡ršg +, +$¬gs + = +¬¿y +(), +$ÿlogue + = 'messages') + +230  +$this +-> +g‘Mes§geFÜm© +()-> +fÜm© +( +$¡ršg +, +$¬gs +, +$ÿlogue +); + +241 +public + +funùiÚ + + $g‘CouÁry +( +$iso +, +$cuÉu» + = +nuÎ +) + +243 +$c + = +sfCuÉu»Info +:: + `g‘In¡ªû +( +nuÎ + ==ð +$cuÉu» + ? +$this +-> +cuÉu» + : $culture); + +244 +$couÁr›s + = +$c +-> + `g‘CouÁr›s +(); + +246  ( + `¬¿y_key_exi¡s +( +$iso +, +$couÁr›s +)) ? $countries[$iso] : ''; + +247 + } +} + +256 +public + +funùiÚ + + $g‘N©iveName +( +$cuÉu» +) + +258  +sfCuÉu»Info +:: + `g‘In¡ªû +( +$cuÉu» +)-> + `g‘N©iveName +(); + +259 + } +} + +269 +public + +funùiÚ + + $g‘Time¡ampFÜCuÉu» +( +$d©eTime +, +$cuÉu» + = +nuÎ +) + +271 + `li¡ +( +$day +, +$mÚth +, +$y—r +èð +$this +-> + `g‘D©eFÜCuÉu» +( +$d©eTime +, +nuÎ + ==ð +$cuÉu» + ? $this-> +cuÉu» + : $culture); + +272 + `li¡ +( +$hour +, +$mšu‹ +èð +$this +-> + `g‘TimeFÜCuÉu» +( +$d©eTime +, +nuÎ + ==ð +$cuÉu» + ? $this-> +cuÉu» + : $culture); + +274  +nuÎ + ==ð +$day + ?‚uÎ : + `mktime +( +$hour +, +$mšu‹ +, 0, +$mÚth +, $day, +$y—r +); + +275 + } +} + +285 +public + +funùiÚ + + $g‘D©eFÜCuÉu» +( +$d©e +, +$cuÉu» + = +nuÎ +) + +287 ià(! +$d©e +) + +289  +nuÎ +; + +292 +$d©eFÜm©Info + = @ +sfD©eTimeFÜm©Info +:: + `g‘In¡ªû +( +nuÎ + ==ð +$cuÉu» + ? +$this +-> +cuÉu» + : $culture); + +293 +$d©eFÜm© + = +$d©eFÜm©Info +-> + `g‘ShÜtD©eP©‹º +(); + +296 +$d©eRegexp + = + `´eg_»¶aû +('/[dmy]+/i', '(\d+)', + `´eg_quÙe +( +$d©eFÜm© +)); + +299 +$a + = + `¬¿y +( + +300 'd' => + `¡½os +( +$d©eFÜm© +, 'd'), + +301 'm' => + `¡½os +( +$d©eFÜm© +, 'M'), + +302 'y' => + `¡½os +( +$d©eFÜm© +, 'y'), + +304 +$tmp + = + `¬¿y_æ +( +$a +); + +305 + `ksÜt +( +$tmp +); + +306 +$i + = 0; + +307 +$c + = + `¬¿y +(); + +308 + `fܗch + ( +$tmp + +as + +$v®ue +è +$c +[++ +$i +] = $value; + +309 +$d©ePos™iÚs + = + `¬¿y_æ +( +$c +); + +312 ià( + `´eg_m©ch +("~$d©eRegexp~", +$d©e +, +$m©ches +)) + +315  + `¬¿y +( +$m©ches +[ +$d©ePos™iÚs +['d']], $matches[$datePositions['m']], $matches[$datePositions['y']]); + +319  +nuÎ +; + +321 + } +} + +331 +public + +funùiÚ + + $g‘TimeFÜCuÉu» +( +$time +, +$cuÉu» + = +nuÎ +) + +333 ià(! +$time +)  0; + +335 +$cuÉu» + = +nuÎ + ==ð$cuÉu» ? +$this +-> +cuÉu» + : $culture; + +337 +$timeFÜm©Info + = @ +sfD©eTimeFÜm©Info +:: + `g‘In¡ªû +( +$cuÉu» +); + +338 +$timeFÜm© + = +$timeFÜm©Info +-> + `g‘ShÜtTimeP©‹º +(); + +341 +$timeRegexp + = + `´eg_»¶aû +( + `¬¿y +('/[hm]+/i', '/a/'),‡¼ay('(\d+)', '(\w+)'), + `´eg_quÙe +( +$timeFÜm© +)); + +344 +$timePos™iÚs + = + `¬¿y +( + +345 'h' => + `¡½os +( +$timeFÜm© +, 'H'è!=ð +çl£ + ? strpos($timeFormat, 'H') : strpos($timeFormat, 'h'), + +346 'm' => + `¡½os +( +$timeFÜm© +, 'm'), + +347 'a' => + `¡½os +( +$timeFÜm© +, 'a') + +349 + `asÜt +( +$timePos™iÚs +); + +350 +$i + = 0; + +354 + `fܗch + ( +$timePos™iÚs + +as + +$key + => +$v®ue +) + +356 ià( +$v®ue + !=ð +çl£ +) + +358 +$timePos™iÚs +[ +$key +] = ++ +$i +; + +363 ià( + `´eg_m©ch +("~$timeRegexp~", +$time +, +$m©ches +)) + +366 ià( +$timePos™iÚs +['a'] !=ð +çl£ +) + +368 ià( + `¡rÿ£cmp +( +$m©ches +[ +$timePos™iÚs +['a']], +$timeFÜm©Info +-> + `g‘AMDesigÇtÜ +()) == 0) + +370 +$hour + = +$m©ches +[ +$timePos™iÚs +['h']]; + +372 ià( + `¡rÿ£cmp +( +$m©ches +[ +$timePos™iÚs +['a']], +$timeFÜm©Info +-> + `g‘PMDesigÇtÜ +()) == 0) + +374 +$hour + = +$m©ches +[ +$timePos™iÚs +['h']] + 12; + +380 +$hour + = +$m©ches +[ +$timePos™iÚs +['h']]; + +385 +$hour + = +$m©ches +[ +$timePos™iÚs +['h']]; + +389  + `¬¿y +( +$hour +, +$m©ches +[ +$timePos™iÚs +['m']]); + +393  +nuÎ +; + +395 + } +} + +404  +public + +funùiÚ + + $isMes§geSourûFžeBa£d +( +$sourû +) + +406 +$þass + = 'sfMes§geSourû_'. +$sourû +; + +408  + `þass_exi¡s +( +$þass +è&& + `is_subþass_of +($class, 'sfMessageSource_File'); + +409 + } +} + +417 +public + +funùiÚ + + $li¡’ToChªgeCuÉu»Ev’t +( +sfEv’t + +$ev’t +) + +420 +$this +-> + `£tCuÉu» +( +$ev’t +['culture']); + +421 + } +} + +429 +public + +funùiÚ + + $li¡’ToChªgeAùiÚEv’t +( +sfEv’t + +$ev’t +) + +432 +$this +-> + `£tMes§geSourû +($this-> +cÚfigu¿tiÚ +-> + `g‘I18NDœs +( +$ev’t +['module'])); + +433 + } +} + + @lib/vendor/symfony/lib/i18n/sfIMessageSource.class.php + +1 +sourû + = +$sourû +; + +101 + m$this +-> +£tCh¬£t +( +$ch¬£t +); + +109 +public + +funùiÚ + + $£tCh¬£t +( +$ch¬£t +) + +111 +$this +-> +ch¬£t + = +$ch¬£t +; + +112 + } +} + +119 +public + +funùiÚ + + $g‘Ch¬£t +() + +121  +$this +-> +ch¬£t +; + +122 + } +} + +132 +´Ùeùed + +funùiÚ + + $lßdC©®ogue +( +$ÿlogue +) + +134 ià( + `š_¬¿y +( +$ÿlogue +, +$this +-> +ÿlogues +)) + +139 ià( +$this +-> +sourû +-> + `lßd +( +$ÿlogue +)) + +141 +$this +-> +mes§ges +[ +$ÿlogue +] = $this-> +sourû +-> + `»ad +(); + +142 +$this +-> +ÿlogues +[] = +$ÿlogue +; + +144 + } +} + +159 +public + +funùiÚ + +fÜm© +( +$¡ršg +, +$¬gs + = +¬¿y +(), +$ÿlogue + = +nuÎ +, +$ch¬£t + =‚ull) + +162 +$¡ršg + = ( +¡ršg +) $string; + +163 ià( +em±y +( +$ch¬£t +)) + +165 + g$ch¬£t + = +$this +-> +g‘Ch¬£t +(); + +168 + g$s + = +$this +-> +fÜm©SŒšg +( +sfToÞk™ +:: +I18N_toUTF8 +( +$¡ršg +, +$ch¬£t +), +$¬gs +, +$ÿlogue +); + +170  + gsfToÞk™ +:: +I18N_toEncodšg +( +$s +, +$ch¬£t +); + +181 +´Ùeùed + +funùiÚ + +fÜm©SŒšg +( +$¡ršg +, +$¬gs + = +¬¿y +(), +$ÿlogue + = +nuÎ +) + +183 ià( +em±y +( +$¬gs +)) + +185 +$¬gs + = +¬¿y +(); + +188 ià( +em±y +( +$ÿlogue +)) + +190 + g$ÿlogue + = +em±y +( +$this +-> +ÿlogue +) ? 'messages' : $this->catalogue; + +193 + g$this +-> +lßdC©®ogue +( +$ÿlogue +); + +195 +fܗch + ( +$this +-> +mes§ges +[ +$ÿlogue +] +as + +$v¬ŸÁ +) + +198 ià( +is£t +( +$v¬ŸÁ +[ +$¡ršg +])) + +200 + g$rg‘ + = +$v¬ŸÁ +[ +$¡ršg +]; + +203 ià( +is_¬¿y +( +$rg‘ +)) + +205 + g$rg‘ + = +¬¿y_shiá +( +$rg‘ +); + +209 ià( +em±y +( +$rg‘ +)) + +211  + g$this +-> + gpo¡süt +[0].$this-> +»¶aûArgs +( +$¡ršg +, +$¬gs +).$this->postscript[1]; + +213  + g$this +-> +»¶aûArgs +( +$rg‘ +, +$¬gs +); + +218 + g$this +-> + gsourû +-> +­³nd +( +$¡ršg +); + +220  + g$this +-> + gpo¡süt +[0].$this-> +»¶aûArgs +( +$¡ršg +, +$¬gs +).$this->postscript[1]; + +223 +´Ùeùed + +funùiÚ + + $»¶aûArgs +( +$¡ršg +, +$¬gs +) + +226 + `fܗch + ( +$¬gs + +as + +$key + => +$v®ue +) + +228 ià( + `is_objeù +( +$v®ue +è&& + `m‘hod_exi¡s +($value, '__toString')) + +230 +$¬gs +[ +$key +] = +$v®ue +-> + `__toSŒšg +(); + +234  + `¡¹r +( +$¡ršg +, +$¬gs +); + +235 + } +} + +242 +funùiÚ + + $g‘Sourû +() + +244  +$this +-> +sourû +; + +245 + } +} + +254 +funùiÚ + + $£tUÁ¿n¦©edPS +( +$po¡süt +) + +256 ià( + `is_¬¿y +( +$po¡süt +è&& + `couÁ +($postscript) >= 2) + +258 +$this +-> +po¡süt +[0] = +$po¡süt +[0]; + +259 +$this +-> +po¡süt +[1] = +$po¡süt +[1]; + +261 + } +} + + @lib/vendor/symfony/lib/i18n/sfMessageSource.class.php + +1 +g‘C©®ogueLi¡ +( +$ÿlogue +); + +161 + g$this +-> + gmes§ges + = +¬¿y +(); + +163 +fܗch + ( +$v¬ŸÁs + +as + +$v¬ŸÁ +) + +165 + g$sourû + = +$this +-> +g‘Sourû +( +$v¬ŸÁ +); + +167 ià( + g$this +-> +isV®idSourû +( +$sourû +è=ð +çl£ +) + +172 + g$lßdD©a + = +Œue +; + +174 ià( + g$this +-> + gÿche +) + +176 + g$Ï¡Modif›d + = +$this +-> +g‘La¡Modif›d +( +$sourû +); + +177 ià( + g$Ï¡Modif›d + >ð0 && +$Ï¡Modif›d + < +$this +-> +ÿche +-> +g‘La¡Modif›d +( +$v¬ŸÁ +.':'.$this-> +cuÉu» +)) + +179 +$d©a + = +un£rŸlize +( +$this +-> +ÿche +-> +g‘ +( +$v¬ŸÁ +.':'.$this-> +cuÉu» +)); + +181 ià( +is_¬¿y +( +$d©a +)) + +183 + g$this +-> + gmes§ges +[ +$v¬ŸÁ +] = +$d©a +; + +184 + g$lßdD©a + = +çl£ +; + +187 +un£t +( +$d©a +); + +191 ià( + g$lßdD©a +) + +193 + g$d©a + = & +$this +-> +lßdD©a +( +$sourû +); + +194 ià( +is_¬¿y +( +$d©a +)) + +196 + g$this +-> + gmes§ges +[ +$v¬ŸÁ +] = +$d©a +; + +197 ià( + g$this +-> + gÿche +) + +199 + g$this +-> + gÿche +-> +£t +( +$v¬ŸÁ +.':'. +$this +-> +cuÉu» +, +£rŸlize +( +$d©a +)); + +203 +un£t +( +$d©a +); + +207  + gŒue +; + +215 +public + +funùiÚ + + $»ad +() + +217  +$this +-> +mes§ges +; + +218 + } +} + +225 +public + +funùiÚ + + $g‘Cache +() + +227  +$this +-> +ÿche +; + +228 + } +} + +235 +public + +funùiÚ + + $£tCache +( +sfCache + +$ÿche +) + +237 +$this +-> +ÿche + = +$ÿche +; + +238 + } +} + +246 +public + +funùiÚ + + $­³nd +( +$mes§ge +) + +248 ià(! + `š_¬¿y +( +$mes§ge +, +$this +-> +uÁ¿n¦©ed +)) + +250 +$this +-> +uÁ¿n¦©ed +[] = +$mes§ge +; + +252 + } +} + +259 +public + +funùiÚ + + $£tCuÉu» +( +$cuÉu» +) + +261 +$this +-> +cuÉu» + = +$cuÉu» +; + +262 + } +} + +269 +public + +funùiÚ + + $g‘CuÉu» +() + +271  +$this +-> +cuÉu» +; + +272 + } +} + +280 +´Ùeùed + +funùiÚ + + $g‘La¡Modif›d +( +$sourû +) + +283 + } +} + +292 +public + + gfunùiÚ + & + $lßdD©a +( +$v¬ŸÁ +) + +294  + `¬¿y +(); + +295 + } +} + +303 +public + +funùiÚ + + $g‘Sourû +( +$v¬ŸÁ +) + +305  +$v¬ŸÁ +; + +306 + } +} + +314 +public + +funùiÚ + + $isV®idSourû +( +$sourû +) + +316  +çl£ +; + +317 + } +} + +326 +public + +funùiÚ + + $g‘C©®ogueLi¡ +( +$ÿlogue +) + +328  + `¬¿y +(); + +329 + } +} + + @lib/vendor/symfony/lib/i18n/sfMessageSource_Aggregate.class.php + +1 +mes§geSourûs + = +$mes§geSourûs +; + +39 +public + +funùiÚ + + $£tCuÉu» +( +$cuÉu» +) + +41 +·»Á +:: + `£tCuÉu» +( +$cuÉu» +); + +43 + `fܗch + ( +$this +-> +mes§geSourûs + +as + +$mes§geSourû +) + +45 +$mes§geSourû +-> + `£tCuÉu» +( +$cuÉu» +); + +47 + } +} + +49 +´Ùeùed + +funùiÚ + + $g‘La¡Modif›d +( +$sourûs +) + +51 +$Ï¡Modif›d + = + `time +(); + +52 + `fܗch + ( +$sourûs + +as + +$sourû +) + +54 ià(0 !=ð +$sourûLa¡Modif›d + = +$sourû +[0]-> + `g‘La¡Modif›d +($source[1])) + +56 +$Ï¡Modif›d + = + `mš +($Ï¡Modif›d, +$sourûLa¡Modif›d +); + +60  +$Ï¡Modif›d +; + +61 + } +} + +63 +public + +funùiÚ + + $isV®idSourû +( +$sourûs +) + +65 + `fܗch + ( +$sourûs + +as + +$sourû +) + +67 ià( +çl£ + ==ð +$sourû +[0]-> + `isV®idSourû +($source[1])) + +72  +Œue +; + +75  +çl£ +; + +76 + } +} + +78 +public + +funùiÚ + + $g‘Sourû +( +$v¬ŸÁ +) + +80 +$sourûs + = + `¬¿y +(); + +81 + `fܗch + ( +$this +-> +mes§geSourûs + +as + +$mes§geSourû +) + +83 +$sourûs +[] = + `¬¿y +( +$mes§geSourû +, $mes§geSourû-> + `g‘Sourû +( + `¡r_»¶aû +($mes§geSourû-> + `g‘Id +(), '', +$v¬ŸÁ +))); + +86  +$sourûs +; + +87 + } +} + +89 +public + + gfunùiÚ + & + $lßdD©a +( +$sourûs +) + +91 +$mes§ges + = + `¬¿y +(); + +92 + `fܗch + ( +$sourûs + +as + +$sourû +) + +94 ià( +çl£ + ==ð +$sourû +[0]-> + `isV®idSourû +($source[1])) + +99 +$d©a + = +$sourû +[0]-> + `lßdD©a +($source[1]); + +100 ià( + `is_¬¿y +( +$d©a +)) + +102 +$mes§ges + = + `¬¿y_m”ge +( +$d©a +, $messages); + +106  +$mes§ges +; + +107 + } +} + +109 +public + +funùiÚ + + $g‘C©®ogueLi¡ +( +$ÿlogue +) + +111 +$v¬ŸÁs + = + `¬¿y +(); + +112 + `fܗch + ( +$this +-> +mes§geSourûs + +as + +$mes§geSourû +) + +114 + `fܗch + ( +$mes§geSourû +-> + `g‘C©®ogueLi¡ +( +$ÿlogue +è +as + +$v¬ŸÁ +) + +116 +$v¬ŸÁs +[] = +$mes§geSourû +-> + `g‘Id +(). +$v¬ŸÁ +; + +120  +$v¬ŸÁs +; + +121 + } +} + +123 +public + +funùiÚ + + $­³nd +( +$mes§ge +) + +126 ià( + `couÁ +( +$this +-> +mes§geSourûs +)) + +128 +$this +-> +mes§geSourûs +[0]-> + `­³nd +( +$mes§ge +); + +130 + } +} + +132 +public + +funùiÚ + +upd©e +( +$‹xt +, +$rg‘ +, +$comm’ts +, +$ÿlogue + = 'messages') + +135 +fܗch + ( +$this +-> +mes§geSourûs + +as + +$mes§geSourû +) + +137 ià( +$mes§geSourû +-> +upd©e +( +$‹xt +, +$rg‘ +, +$comm’ts +, +$ÿlogue +)) + +139  +Œue +; + +143  + gçl£ +; + +146 +public + +funùiÚ + +d–‘e +( +$mes§ge +, +$ÿlogue + = 'messages') + +148 +$»tv® + = +çl£ +; + +149 +fܗch + ( +$this +-> +mes§geSourûs + +as + +$mes§geSourû +) + +151 ià( + g$mes§geSourû +-> +d–‘e +( +$mes§ge +, +$ÿlogue +)) + +153 + g$»tv® + = +Œue +; + +157  + g$»tv® +; + +160 +public + +funùiÚ + +§ve +( +$ÿlogue + = 'messages') + +162 +$»tv® + = +çl£ +; + +163 +fܗch + ( +$this +-> +mes§geSourûs + +as + +$mes§geSourû +) + +165 ià( + g$mes§geSourû +-> +§ve +( +$ÿlogue +)) + +167 + g$»tv® + = +Œue +; + +171  + g$»tv® +; + +174 +public + +funùiÚ + + $g‘Id +() + +176 +$id + = ''; + +177 + `fܗch + ( +$this +-> +mes§geSourûs + +as + +$mes§geSourû +) + +179 +$id + .ð +$mes§geSourû +-> + `g‘Id +(); + +182  + `md5 +( +$id +); + +183 + } +} + +185 +public + +funùiÚ + + $ÿlogues +() + +187 +throw + +Ãw + + `sfExû±iÚ +('The "catalogues()" method is‚ot implemented forhis message source.'); + +188 + } +} + + @lib/vendor/symfony/lib/i18n/sfMessageSource_Database.class.php + +1 +çl£ +, + +50 'dbsyÁax' => +çl£ +, + +51 'u£ºame' => +çl£ +, + +52 '·sswÜd' => +çl£ +, + +53 '´ÙocÞ' => +çl£ +, + +54 'ho¡¥ec' => +çl£ +, + +55 'pÜt' => +çl£ +, + +56 'sock‘' => +çl£ +, + +57 'd©aba£' => +çl£ + + +61 ià(( +$pos + = + `¡½os +( +$d¢ +, '://')è!=ð +çl£ +) + +63 +$¡r + = + `sub¡r +( +$d¢ +, 0, +$pos +); + +64 +$d¢ + = + `sub¡r +($d¢, +$pos + + 3); + +68 +$¡r + = +$d¢ +; + +69 +$d¢ + = +NULL +; + +74 ià( + `´eg_m©ch +('|^(.+?)\((.*?)\)$|', +$¡r +, +$¬r +)) + +76 +$·r£d +['ph±y³'] = +$¬r +[1]; + +77 +$·r£d +['dbsyÁax'] = ( + `em±y +( +$¬r +[2])) ? $arr[1] : $arr[2]; + +81 +$·r£d +['ph±y³'] = +$¡r +; + +82 +$·r£d +['dbsyÁax'] = +$¡r +; + +85 ià( + `em±y +( +$d¢ +)) + +87  +$·r£d +; + +92 ià(( +$© + = + `¡¼pos +( +$d¢ +,'@')è!=ð +çl£ +) + +94 +$¡r + = + `sub¡r +( +$d¢ +, 0, +$© +); + +95 +$d¢ + = + `sub¡r +($d¢, +$© + + 1); + +96 ià(( +$pos + = + `¡½os +( +$¡r +, ':')è!=ð +çl£ +) + +98 +$·r£d +['u£ºame'] = + `¿wu¾decode +( + `sub¡r +( +$¡r +, 0, +$pos +)); + +99 +$·r£d +['·sswÜd'] = + `¿wu¾decode +( + `sub¡r +( +$¡r +, +$pos + + 1)); + +103 +$·r£d +['u£ºame'] = + `¿wu¾decode +( +$¡r +); + +110 ià( + `´eg_m©ch +('|^([^(]+)\((.*?)\)/?(.*?)$|', +$d¢ +, +$m©ch +)) + +112 +$´Ùo + = +$m©ch +[1]; + +113 +$´Ùo_Ýts + = (! + `em±y +( +$m©ch +[2])è? $m©ch[2] : +çl£ +; + +114 +$d¢ + = +$m©ch +[3]; + +119 ià( + `¡½os +( +$d¢ +, '+'è!=ð +çl£ +) + +121 + `li¡ +( +$´Ùo +, +$d¢ +èð + `ex¶ode +('+', $dsn, 2); + +123 ià( + `¡½os +( +$d¢ +, '/'è!=ð +çl£ +) + +125 + `li¡ +( +$´Ùo_Ýts +, +$d¢ +èð + `ex¶ode +('/', $dsn, 2); + +129 +$´Ùo_Ýts + = +$d¢ +; + +130 +$d¢ + = +nuÎ +; + +135 +$·r£d +['´ÙocÞ'] = (! + `em±y +( +$´Ùo +)) ? $proto : 'tcp'; + +136 +$´Ùo_Ýts + = + `¿wu¾decode +($proto_opts); + +137 ià( +$·r£d +['protocol'] == 'tcp') + +139 ià( + `¡½os +( +$´Ùo_Ýts +, ':'è!=ð +çl£ +) + +141 + `li¡ +( +$·r£d +['ho¡¥ec'], $·r£d['pÜt']èð + `ex¶ode +(':', +$´Ùo_Ýts +); + +145 +$·r£d +['ho¡¥ec'] = +$´Ùo_Ýts +; + +148 ià( +$·r£d +['protocol'] == 'unix') + +150 +$·r£d +['sock‘'] = +$´Ùo_Ýts +; + +155 ià(! + `em±y +( +$d¢ +)) + +158 ià(( +$pos + = + `¡½os +( +$d¢ +, '?')è==ð +çl£ +) + +160 +$·r£d +['d©aba£'] = +$d¢ +; + +165 +$·r£d +['d©aba£'] = + `sub¡r +( +$d¢ +, 0, +$pos +); + +166 +$d¢ + = + `sub¡r +($d¢, +$pos + + 1); + +167 ià( + `¡½os +( +$d¢ +, '&'è!=ð +çl£ +) + +169 +$Ýts + = + `ex¶ode +('&', +$d¢ +); + +173 +$Ýts + = + `¬¿y +( +$d¢ +); + +175 + `fܗch + ( +$Ýts + +as + +$Ýt +) + +177 + `li¡ +( +$key +, +$v®ue +èð + `ex¶ode +('=', +$Ýt +); + +178 ià(! + `is£t +( +$·r£d +[ +$key +])) + +180 +$·r£d +[ +$key +] = + `¿wu¾decode +( +$v®ue +); + +186  +$·r£d +; + +195 +public + +funùiÚ + + $g‘C©®ogueLi¡ +( +$ÿlogue +) + +197 +$v¬ŸÁs + = + `ex¶ode +('_', +$this +-> +cuÉu» +); + +199 +$ÿlogues + = + `¬¿y +( +$ÿlogue +); + +201 +$v¬ŸÁ + = +nuÎ +; + +203  +$i + = 0, +$max + = + `couÁ +( +$v¬ŸÁs +); $i < $max; $i++) + +205 ià( + `¡¾’ +( +$v¬ŸÁs +[ +$i +]) > 0) + +207 +$v¬ŸÁ + .ð$v¬ŸÁ ? '_'. +$v¬ŸÁs +[ +$i +] : $variants[$i]; + +208 +$ÿlogues +[] = +$ÿlogue +.'.'. +$v¬ŸÁ +; + +212  + `¬¿y_»v”£ +( +$ÿlogues +); + +213 + } +} + +215 +public + +funùiÚ + + $g‘Id +() + +217  + `md5 +( +$this +-> +sourû +); + +218 + } +} + + @lib/vendor/symfony/lib/i18n/sfMessageSource_File.class.php + +1 +sourû + = ( +¡ršg +è +$sourû +; + +57 +public + +funùiÚ + + $g‘La¡Modif›d +( +$sourû +) + +59  + `is_fže +( +$sourû +è? + `fžemtime +($source) : 0; + +60 + } +} + +68 +public + +funùiÚ + + $g‘Sourû +( +$v¬ŸÁ +) + +70  +$this +-> +sourû +.'/'. +$v¬ŸÁ +; + +71 + } +} + +79 +public + +funùiÚ + + $isV®idSourû +( +$sourû +) + +81  + `is_fže +( +$sourû +); + +82 + } +} + +90 +public + +funùiÚ + + $g‘C©®ogueLi¡ +( +$ÿlogue +) + +92 +$v¬ŸÁs + = + `ex¶ode +('_', +$this +-> +cuÉu» +); + +93 +$sourû + = +$ÿlogue +. +$this +-> +d©aExt +; + +95 +$ÿlogues + = + `¬¿y +( +$sourû +); + +97 +$v¬ŸÁ + = +nuÎ +; + +99  +$i + = 0, +$max + = + `couÁ +( +$v¬ŸÁs +); $i < $max; $i++) + +101 ià( + `¡¾’ +( +$v¬ŸÁs +[ +$i +]) > 0) + +103 +$v¬ŸÁ + .ð$v¬ŸÁ ? '_'. +$v¬ŸÁs +[ +$i +] : $variants[$i]; + +104 +$ÿlogues +[] = +$ÿlogue +. +$this +-> +d©aS•¬©Ü +. +$v¬ŸÁ +.$this-> +d©aExt +; + +108 +$byDœ + = +$this +-> + `g‘C©®ogueByDœ +( +$ÿlogue +); + +109 +$ÿlogues + = + `¬¿y_m”ge +( +$byDœ +, + `¬¿y_»v”£ +($catalogues)); + +111  +$ÿlogues +; + +112 + } +} + +122 +´Ùeùed + +funùiÚ + + $g‘C©®ogueByDœ +( +$ÿlogue +) + +124 +$v¬ŸÁs + = + `ex¶ode +('_', +$this +-> +cuÉu» +); + +125 +$ÿlogues + = + `¬¿y +(); + +127 +$v¬ŸÁ + = +nuÎ +; + +129  +$i + = 0, +$max + = + `couÁ +( +$v¬ŸÁs +); $i < $max; $i++) + +131 ià( + `¡¾’ +( +$v¬ŸÁs +[ +$i +]) > 0) + +133 +$v¬ŸÁ + .ð$v¬ŸÁ ? '_'. +$v¬ŸÁs +[ +$i +] : $variants[$i]; + +134 +$ÿlogues +[] = +$v¬ŸÁ +.'/'. +$ÿlogue +. +$this +-> +d©aExt +; + +138  + `¬¿y_»v”£ +( +$ÿlogues +); + +139 + } +} + +148 +public + +funùiÚ + + $ÿlogues +() + +150  +$this +-> + `g‘C©®ogues +(); + +151 + } +} + +160 +´Ùeùed + +funùiÚ + + $g‘C©®ogues +( +$dœ + = +nuÎ +, +$v¬ŸÁ + =‚ull) + +162 +$dœ + = $dœ ? $dœ : +$this +-> + `g‘Sourû +( +$v¬ŸÁ +); + +163 +$fžes + = + `sÿndœ +( +$dœ +); + +165 +$ÿlogue + = + `¬¿y +(); + +167 + `fܗch + ( +$fžes + +as + +$fže +) + +169 ià( + `is_dœ +( +$dœ +.'/'. +$fže +è&& + `´eg_m©ch +('/^[a-z]{2}(_[A-Z]{2,3})?$/', $file)) + +171 +$ÿlogue + = + `¬¿y_m”ge +($ÿlogue, +$this +-> + `g‘C©®ogues +( +$dœ +.'/'. +$fže +, $file)); + +174 +$pos + = + `¡½os +( +$fže +, +$this +-> +d©aExt +); + +175 ià( +$pos + > 0 && + `sub¡r +( +$fže +, -1 * + `¡¾’ +( +$this +-> +d©aExt +)) == $this->dataExt) + +177 +$Çme + = + `sub¡r +( +$fže +, 0, +$pos +); + +178 +$dÙ + = + `¡¼pos +( +$Çme +, +$this +-> +d©aS•¬©Ü +); + +179 +$cuÉu» + = +$v¬ŸÁ +; + +180 +$ÿt + = +$Çme +; + +181 ià( + `is_št +( +$dÙ +)) + +183 +$cuÉu» + = + `sub¡r +( +$Çme +, +$dÙ + + 1, + `¡¾’ +($name)); + +184 +$ÿt + = + `sub¡r +( +$Çme +, 0, +$dÙ +); + +186 +$d‘ažs +[0] = +$ÿt +; + +187 +$d‘ažs +[1] = +$cuÉu» +; + +189 +$ÿlogue +[] = +$d‘ažs +; + +192 + `sÜt +( +$ÿlogue +); + +194  +$ÿlogue +; + +195 + } +} + +197 +public + +funùiÚ + + $g‘Id +() + +199  + `md5 +( +$this +-> +sourû +); + +200 + } +} + + @lib/vendor/symfony/lib/i18n/sfMessageSource_MySQL.class.php + +1 +sourû + = ( +¡ršg +è +$sourû +; + +122 +$this +-> +d¢ + = $this-> + `·r£DSN +($this-> +sourû +); + +123 +$this +-> +db + = $this-> + `cÚÃù +(); + +129 +funùiÚ + + $__de¡ruù +() + +131 @ + `mysql_þo£ +( +$this +-> +db +); + +132 + } +} + +140 +´Ùeùed + +funùiÚ + + $cÚÃù +() + +142 +$d¢šfo + = +$this +-> +d¢ +; + +144 ià( + `is£t +( +$d¢šfo +['protocol']) && $dsninfo['protocol'] == 'unix') + +146 +$dbho¡ + = ':'. +$d¢šfo +['socket']; + +150 +$dbho¡ + = +$d¢šfo +['hostspec'] ? $dsninfo['hostspec'] : 'localhost'; + +151 ià(! + `em±y +( +$d¢šfo +['port'])) + +153 +$dbho¡ + .ð':'. +$d¢šfo +['port']; + +156 +$u£r + = +$d¢šfo +['username']; + +157 +$pw + = +$d¢šfo +['password']; + +159 +$cÚÃù_funùiÚ + = 'mysql_connect'; + +161 ià(! + `funùiÚ_exi¡s +( +$cÚÃù_funùiÚ +)) + +163 +throw + +Ãw + + `RuÁimeExû±iÚ +('The function mysql_connect() does‚otƒxist. Please confirm MySQL isƒnabled in…hp.ini'); + +166 ià( +$dbho¡ + && +$u£r + && +$pw +) + +168 +$cÚn + = @ + `$cÚÃù_funùiÚ +( +$dbho¡ +, +$u£r +, +$pw +); + +170 + `–£if + ( +$dbho¡ + && +$u£r +) + +172 +$cÚn + = @ + `$cÚÃù_funùiÚ +( +$dbho¡ +, +$u£r +); + +174 + `–£if + ( +$dbho¡ +) + +176 +$cÚn + = @ + `$cÚÃù_funùiÚ +( +$dbho¡ +); + +180 +$cÚn + = +çl£ +; + +183 ià( + `em±y +( +$cÚn +)) + +185 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('E¼Ü iÀcÚÃùšgØ%s.', +$d¢šfo +)); + +188 ià( +$d¢šfo +['database']) + +190 ià(!@ + `mysql_£Ëù_db +( +$d¢šfo +['d©aba£'], +$cÚn +)) + +192 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('E¼Ü iÀcÚÃùšg d©aba£, d¢: %s.', +$d¢šfo +)); + +197 +throw + +Ãw + + `sfExû±iÚ +('Please…rovide‡ database for messageranslation.'); + +200  +$cÚn +; + +201 + } +} + +208 +public + +funùiÚ + + $cÚÃùiÚ +() + +210  +$this +-> +db +; + +211 + } +} + +219 +public + + gfunùiÚ + & + $lßdD©a +( +$v¬ŸÁ +) + +221 +$v¬ŸÁ + = + `mysql_»®_esÿ³_¡ršg +($v¬ŸÁ, +$this +-> +db +); + +223 +$¡©em’t + = + +225 +FROM + +Œªs_un™ + +t +, +ÿlogue + +c + + +226 +WHERE + +c +. +ÿt_id + = +t +.cat_id + +227 +AND + +c +. +Çme + = '{$variant}' + +228 +ORDER + +BY + +id + +ASC +"; + +230 +$rs + = + `mysql_qu”y +( +$¡©em’t +, +$this +-> +db +); + +232 +$»suÉ + = + `¬¿y +(); + +234  +$row + = + `mysql_ãtch_¬¿y +( +$rs +, +MYSQL_NUM +)) + +236 +$sourû + = +$row +[1]; + +237 +$»suÉ +[ +$sourû +][] = +$row +[2]; + +238 +$»suÉ +[ +$sourû +][] = +$row +[0]; + +239 +$»suÉ +[ +$sourû +][] = +$row +[3]; + +242  +$»suÉ +; + +243 + } +} + +252 +´Ùeùed + +funùiÚ + + $g‘La¡Modif›d +( +$sourû +) + +254 +$sourû + = + `mysql_»®_esÿ³_¡ršg +($sourû, +$this +-> +db +); + +256 +$rs + = + `mysql_qu”y +("SELECT d©e_modif›d FROM c©®oguWHERE‚amð'{$sourû}'", +$this +-> +db +); + +258 +$»suÉ + = +$rs + ? + `štv® +( + `mysql_»suÉ +($rs, 0)) : 0; + +260  +$»suÉ +; + +261 + } +} + +269 +public + +funùiÚ + + $isV®idSourû +( +$v¬ŸÁ +) + +271 +$v¬ŸÁ + = + `mysql_»®_esÿ³_¡ršg + ($v¬ŸÁ, +$this +-> +db +); + +273 +$rs + = + `mysql_qu”y +("SELECT COUNT(*èFROM c©®oguWHERE‚amð'{$v¬ŸÁ}'", +$this +-> +db +); + +275 +$row + = + `mysql_ãtch_¬¿y +( +$rs +, +MYSQL_NUM +); + +277 +$»suÉ + = +$row + && $row[0] == '1'; + +279  +$»suÉ +; + +280 + } +} + +288 +´Ùeùed + +funùiÚ + +g‘C©®ogueD‘ažs +( +$ÿlogue + = 'messages') + +290 ià( +em±y +( +$ÿlogue +)) + +292 +$ÿlogue + = 'messages'; + +295 + g$v¬ŸÁ + = +$ÿlogue +.'.'. +$this +-> +cuÉu» +; + +297 + g$Çme + = +mysql_»®_esÿ³_¡ršg +( +$this +-> +g‘Sourû +( +$v¬ŸÁ +), $this-> +db +); + +299 + g$rs + = +mysql_qu”y +("SELECT c©_id FROM c©®oguWHERE‚amð'{$Çme}'", +$this +-> +db +); + +301 ià( +mysql_num_rows +( +$rs +) != 1) + +303  +çl£ +; + +306 + g$ÿt_id + = +štv® +( +mysql_»suÉ +( +$rs +, 0)); + +309 + g$rs + = +mysql_qu”y +("SELECT COUNT(*èFROM¿ns_un™ WHERE c©_id = {$ÿt_id}", +$this +-> +db +); + +311 + g$couÁ + = +štv® +( +mysql_»suÉ +( +$rs +, 0)); + +313  +¬¿y +( +$ÿt_id +, +$v¬ŸÁ +, +$couÁ +); + +321 +´Ùeùed + +funùiÚ + + $upd©eC©®ogueTime +( +$ÿt_id +, +$v¬ŸÁ +) + +323 +$time + = + `time +(); + +325 +$»suÉ + = + `mysql_qu”y +("UPDATE c©®oguSET d©e_modif›d = {$time} WHERE c©_id = {$ÿt_id}", +$this +-> +db +); + +327 ià( +$this +-> +ÿche +) + +329 +$this +-> +ÿche +-> + `»move +( +$v¬ŸÁ +.':'.$this-> +cuÉu» +); + +332  +$»suÉ +; + +333 + } +} + +343 +funùiÚ + +§ve +( +$ÿlogue + = 'messages') + +345 +$mes§ges + = +$this +-> +uÁ¿n¦©ed +; + +347 ià( +couÁ +( +$mes§ges +) <= 0) + +349  +çl£ +; + +352 + g$d‘ažs + = +$this +-> +g‘C©®ogueD‘ažs +( +$ÿlogue +); + +354 ià( + g$d‘ažs +) + +356 +li¡ +( +$ÿt_id +, +$v¬ŸÁ +, +$couÁ +èð +$d‘ažs +; + +360  + gçl£ +; + +363 ià( + g$ÿt_id + <= 0) + +365  +çl£ +; + +367 + g$š£¹ed + = 0; + +369 + g$time + = +time +(); + +371 +fܗch + ( +$mes§ges + +as + +$mes§ge +) + +373 + g$couÁ +++; + +374 + g$š£¹ed +++; + +375 + g$mes§ge + = +mysql_»®_esÿ³_¡ršg +( +$mes§ge +, +$this +-> +db +); + +376 + g$¡©em’t + = "INSERT INTOrans_unit + +377 ( +ÿt_id +, + gid +, + gsourû +, + gd©e_added +è + gVALUES + + +378 ({ + g$ÿt_id +}, { + g$couÁ +},'{$mes§ge}', + g$time +)"; + +379 +mysql_qu”y +( +$¡©em’t +, +$this +-> +db +); + +381 ià( + g$š£¹ed + > 0) + +383 + g$this +-> +upd©eC©®ogueTime +( +$ÿt_id +, +$v¬ŸÁ +); + +386  + g$š£¹ed + > 0; + +396 +funùiÚ + +d–‘e +( +$mes§ge +, +$ÿlogue + = 'messages') + +398 +$d‘ažs + = +$this +-> +g‘C©®ogueD‘ažs +( +$ÿlogue +); + +399 ià( + g$d‘ažs +) + +401 +li¡ +( +$ÿt_id +, +$v¬ŸÁ +, +$couÁ +èð +$d‘ažs +; + +405  + gçl£ +; + +408 + g$‹xt + = +mysql_»®_esÿ³_¡ršg +( +$mes§ge +, +$this +-> +db +); + +410 + g$¡©em’t + = "DELETE FROMrans_unit WHERE cat_id = {$cat_id} AND source = '{$message}'"; + +411 + g$d–‘ed + = +çl£ +; + +413 +mysql_qu”y +( +$¡©em’t +, +$this +-> +db +); + +415 ià( +mysql_afãùed_rows +( +$this +-> +db +) == 1) + +417 +$d–‘ed + = +$this +-> +upd©eC©®ogueTime +( +$ÿt_id +, +$v¬ŸÁ +); + +420  + g$d–‘ed +; + +432 +funùiÚ + +upd©e +( +$‹xt +, +$rg‘ +, +$comm’ts +, +$ÿlogue + = 'messages') + +434 +$d‘ažs + = +$this +-> +g‘C©®ogueD‘ažs +( +$ÿlogue +); + +435 ià( + g$d‘ažs +) + +437 +li¡ +( +$ÿt_id +, +$v¬ŸÁ +, +$couÁ +èð +$d‘ažs +; + +441  + gçl£ +; + +444 + g$comm’ts + = +mysql_»®_esÿ³_¡ršg +( +$comm’ts +, +$this +-> +db +); + +445 + g$rg‘ + = +mysql_»®_esÿ³_¡ršg +( +$rg‘ +, +$this +-> +db +); + +446 + g$‹xt + = +mysql_»®_esÿ³_¡ršg +( +$‹xt +, +$this +-> +db +); + +448 + g$time + = +time +(); + +450 + g$¡©em’t + = "UPDATErans_unit SETarget = '{$target}', comments = '{$comments}', date_modified = '{$time}' WHERE cat_id = {$cat_id} AND source = '{$text}'"; + +452 + g$upd©ed + = +çl£ +; + +454 +mysql_qu”y +( +$¡©em’t +, +$this +-> +db +); + +455 ià( +mysql_afãùed_rows +( +$this +-> +db +) == 1) + +457 +$upd©ed + = +$this +-> +upd©eC©®ogueTime +( +$ÿt_id +, +$v¬ŸÁ +); + +460  + g$upd©ed +; + +468 +funùiÚ + + $ÿlogues +() + +470 +$¡©em’t + = 'SELECT‚ame FROM catalogue ORDER BY‚ame'; + +471 +$rs + = + `mysql_qu”y +( +$¡©em’t +, +$this +-> +db +); + +472 +$»suÉ + = + `¬¿y +(); + +473  +$row + = + `mysql_ãtch_¬¿y +( +$rs +, +MYSQL_NUM +)) + +475 +$d‘ažs + = + `ex¶ode +('.', +$row +[0]); + +476 ià(! + `is£t +( +$d‘ažs +[1])) + +478 +$d‘ažs +[1] = +nuÎ +; + +481 +$»suÉ +[] = +$d‘ažs +; + +484  +$»suÉ +; + +485 + } +} + + @lib/vendor/symfony/lib/i18n/sfMessageSource_SQLite.class.php + +1 + `·r£DSN +(( +¡ršg +è +$sourû +); + +105 +$this +-> +sourû + = +$d¢ +['database']; + +114 +public + +funùiÚ + & + $lßdD©a +( +$v¬ŸÁ +) + +116 +$v¬ŸÁ + = + `sql™e_esÿ³_¡ršg +($variant); + +118 +$¡©em’t + = + +120 +FROM + +Œªs_un™ + +t +, +ÿlogue + +c + + +121 +WHERE + +c +. +ÿt_id + = +t +.cat_id + +122 +AND + +c +. +Çme + = '{$variant}' + +123 +ORDER + +BY + +id + +ASC +"; + +125 +$db + = + `sql™e_ݒ +( +$this +-> +sourû +); + +126 +$rs + = + `sql™e_qu”y +( +$¡©em’t +, +$db +); + +128 +$»suÉ + = + `¬¿y +(); + +130  +$row + = + `sql™e_ãtch_¬¿y +( +$rs +, +SQLITE_NUM +)) + +132 +$sourû + = +$row +[1]; + +133 +$»suÉ +[ +$sourû +][] = +$row +[2]; + +134 +$»suÉ +[ +$sourû +][] = +$row +[0]; + +135 +$»suÉ +[ +$sourû +][] = +$row +[3]; + +138 + `sql™e_þo£ +( +$db +); + +140  +$»suÉ +; + +141 + } +} + +150 +´Ùeùed + +funùiÚ + + $g‘La¡Modif›d +( +$sourû +) + +152 +$sourû + = + `sql™e_esÿ³_¡ršg +($source); + +154 +$db + = + `sql™e_ݒ +( +$this +-> +sourû +); + +156 +$rs + = + `sql™e_qu”y +("SELECT d©e_modif›d FROM c©®oguWHERE‚amð'{$sourû}'", +$db +); + +158 +$»suÉ + = +$rs + ? + `štv® +( + `sql™e_ãtch_sšgË +($rs)) : 0; + +160 + `sql™e_þo£ +( +$db +); + +162  +$»suÉ +; + +163 + } +} + +171 +public + +funùiÚ + + $isV®idSourû +( +$v¬ŸÁ +) + +173 +$v¬ŸÁ + = + `sql™e_esÿ³_¡ršg +($variant); + +174 +$db + = + `sql™e_ݒ +( +$this +-> +sourû +); + +175 +$rs + = + `sql™e_qu”y +("SELECT COUNT(*èFROM c©®oguWHERE‚amð'{$v¬ŸÁ}'", +$db +); + +176 +$»suÉ + = +$rs + && + `štv® +( + `sql™e_ãtch_sšgË +($rs)); + +177 + `sql™e_þo£ +( +$db +); + +179  +$»suÉ +; + +180 + } +} + +188 +´Ùeùed + +funùiÚ + +g‘C©®ogueD‘ažs +( +$ÿlogue + = 'messages') + +190 ià( +em±y +( +$ÿlogue +)) + +192 +$ÿlogue + = 'messages'; + +195 + g$v¬ŸÁ + = +$ÿlogue +.'.'. +$this +-> +cuÉu» +; + +197 + g$Çme + = +sql™e_esÿ³_¡ršg +( +$this +-> +g‘Sourû +( +$v¬ŸÁ +)); + +199 + g$db + = +sql™e_ݒ +( +$this +-> +sourû +); + +201 + g$rs + = +sql™e_qu”y +("SELECT c©_id FROM c©®oguWHERE‚amð'{$Çme}'", +$db +); + +203 ià( +sql™e_num_rows +( +$rs +) != 1) + +205  +çl£ +; + +208 + g$ÿt_id + = +štv® +( +sql™e_ãtch_sšgË +( +$rs +)); + +211 + g$rs + = +sql™e_qu”y +("SELECT couÁ(msg_idèFROM¿ns_un™ WHERE c©_id = {$ÿt_id}", +$db +); + +213 + g$couÁ + = +štv® +( +sql™e_ãtch_sšgË +( +$rs +)); + +215 +sql™e_þo£ +( +$db +); + +217  +¬¿y +( +$ÿt_id +, +$v¬ŸÁ +, +$couÁ +); + +225 +´Ùeùed + +funùiÚ + + $upd©eC©®ogueTime +( +$ÿt_id +, +$v¬ŸÁ +, +$db +) + +227 +$time + = + `time +(); + +229 +$»suÉ + = + `sql™e_qu”y +("UPDATE c©®oguSET d©e_modif›d = {$time} WHERE c©_id = {$ÿt_id}", +$db +); + +231 ià( +$this +-> +ÿche +) + +233 +$this +-> +ÿche +-> + `»move +( +$v¬ŸÁ +.':'.$this-> +cuÉu» +); + +236  +$»suÉ +; + +237 + } +} + +247 +funùiÚ + +§ve +( +$ÿlogue + = 'messages') + +249 +$mes§ges + = +$this +-> +uÁ¿n¦©ed +; + +251 ià( +couÁ +( +$mes§ges +) <= 0) + +253  +çl£ +; + +256 + g$d‘ažs + = +$this +-> +g‘C©®ogueD‘ažs +( +$ÿlogue +); + +258 ià( + g$d‘ažs +) + +260 +li¡ +( +$ÿt_id +, +$v¬ŸÁ +, +$couÁ +èð +$d‘ažs +; + +264  + gçl£ +; + +267 ià( + g$ÿt_id + <= 0) + +269  +çl£ +; + +271 + g$š£¹ed + = 0; + +273 + g$db + = +sql™e_ݒ +( +$this +-> +sourû +); + +274 + g$time + = +time +(); + +276 +fܗch + ( +$mes§ges + +as + +$mes§ge +) + +278 + g$mes§ge + = +sql™e_esÿ³_¡ršg +( +$mes§ge +); + +279 ià( +sql™e_qu”y +("INSERT INTO¿ns_un™ (ÿt_id, id, sourû, d©e_addedèVALUES ({$ÿt_id}, {$couÁ}, '{$mes§ge}', $time)", +$db +)) + +281 + g$couÁ +++; + +282 + g$š£¹ed +++; + +285 ià( + g$š£¹ed + > 0) + +287 + g$this +-> +upd©eC©®ogueTime +( +$ÿt_id +, +$v¬ŸÁ +, +$db +); + +290 +sql™e_þo£ +( +$db +); + +292  + g$š£¹ed + > 0; + +304 +funùiÚ + +upd©e +( +$‹xt +, +$rg‘ +, +$comm’ts +, +$ÿlogue + = 'messages') + +306 +$d‘ažs + = +$this +-> +g‘C©®ogueD‘ažs +( +$ÿlogue +); + +307 ià( + g$d‘ažs +) + +309 +li¡ +( +$ÿt_id +, +$v¬ŸÁ +, +$couÁ +èð +$d‘ažs +; + +313  + gçl£ +; + +316 + g$comm’ts + = +sql™e_esÿ³_¡ršg +( +$comm’ts +); + +317 + g$rg‘ + = +sql™e_esÿ³_¡ršg +( +$rg‘ +); + +318 + g$‹xt + = +sql™e_esÿ³_¡ršg +( +$‹xt +); + +320 + g$time + = +time +(); + +322 + g$db + = +sql™e_ݒ +( +$this +-> +sourû +); + +324 +sql™e_qu”y +("UPDATE¿ns_un™ SET¬g‘ = '{$rg‘}', comm’t ð'{$comm’ts}', d©e_modif›d = '{$time}' WHERE c©_id = {$ÿt_id} AND sourû = '{$‹xt}'", +$db +); + +326 ià( +sql™e_chªges +( +$db +)) + +328 + g$this +-> +upd©eC©®ogueTime +( +$ÿt_id +, +$v¬ŸÁ +, +$db +); + +329 + g$upd©ed + = +Œue +; + +333 + g$upd©ed + = +çl£ +; + +336 +sql™e_þo£ +( +$db +); + +338  + g$upd©ed +; + +348 +funùiÚ + +d–‘e +( +$mes§ge +, +$ÿlogue + = 'messages') + +350 +$d‘ažs + = +$this +-> +g‘C©®ogueD‘ažs +( +$ÿlogue +); + +351 ià( + g$d‘ažs +) + +353 +li¡ +( +$ÿt_id +, +$v¬ŸÁ +, +$couÁ +èð +$d‘ažs +; + +357  + gçl£ +; + +360 + g$db + = +sql™e_ݒ +( +$this +-> +sourû +); + +361 + g$‹xt + = +sql™e_esÿ³_¡ršg +( +$mes§ge +); + +363 +sql™e_qu”y +("DELETE FROM¿ns_un™ WHERE c©_id = {$ÿt_id} AND sourû = '{$mes§ge}'", +$db +); + +365 ià( +sql™e_chªges +( +$db +)) + +367 + g$this +-> +upd©eC©®ogueTime +( +$ÿt_id +, +$v¬ŸÁ +, +$db +); + +368 + g$d–‘ed + = +Œue +; + +372 + g$d–‘ed + = +çl£ +; + +375 +sql™e_þo£ +( +$db +); + +377  + g$d–‘ed +; + +385 +funùiÚ + + $ÿlogues +() + +387 +$db + = + `sql™e_ݒ +( +$this +-> +sourû +); + +388 +$¡©em’t + = 'SELECT‚ame FROM catalogue ORDER BY‚ame'; + +389 +$rs + = + `sql™e_qu”y +( +$¡©em’t +, +$db +); + +390 +$»suÉ + = + `¬¿y +(); + +391  +$row + = + `sql™e_ãtch_¬¿y +( +$rs +, +SQLITE_NUM +)) + +393 +$d‘ažs + = + `ex¶ode +('.', +$row +[0]); + +394 ià(! + `is£t +( +$d‘ažs +[1])) + +396 +$d‘ažs +[1] = +nuÎ +; + +399 +$»suÉ +[] = +$d‘ažs +; + +401 + `sql™e_þo£ +( +$db +); + +403  +$»suÉ +; + +404 + } +} + + @lib/vendor/symfony/lib/i18n/sfMessageSource_XLIFF.class.php + +1 + `x·th +('//trans-unit'); + +64 +$Œª¦©iÚs + = + `¬¿y +(); + +66 + `fܗch + ( +$Œª¦©iÚUn™ + +as + +$un™ +) + +68 +$sourû + = ( +¡ršg +è +$un™ +-> +sourû +; + +69 +$Œª¦©iÚs +[ +$sourû +][] = ( +¡ršg +è +$un™ +-> +rg‘ +; + +70 +$Œª¦©iÚs +[ +$sourû +][] = ( +¡ršg +è +$un™ +['id']; + +71 +$Œª¦©iÚs +[ +$sourû +][] = ( +¡ršg +è +$un™ +-> +nÙe +; + +74  +$Œª¦©iÚs +; + +84 +´Ùeùed + +funùiÚ + + $ü—‹DOMDocum’t +( +$xml + = +nuÎ +) + +86 +$domimp + = +Ãw + + `DOMIm¶em’tiÚ +(); + +87 +$doùy³ + = +$domimp +-> + `ü—‹Docum’tTy³ +('xliff', '-//XLIFF//DTD XLIFF//EN', 'http://www.oasis-open.org/committees/xliff/documents/xliff.dtd'); + +88 +$dom + = +$domimp +-> + `ü—‹Docum’t +('', '', +$doùy³ +); + +89 +$dom +-> +fÜm©Ouut + = +Œue +; + +90 +$dom +-> +´e£rveWh™eS·û + = +çl£ +; + +92 ià( +nuÎ + !=ð +$xml + && + `is_¡ršg +($xml)) + +95 ià(! + `´eg_m©ch +('/<\?xml/', +$xml +)) + +97 +$xml + = ''."\n".$xml; + +100 +$dom +-> + `lßdXML +( +$xml +); + +103  +$dom +; + +104 + } +} + +115 +´Ùeùed + +funùiÚ + +g‘V¬ŸÁs +( +$ÿlogue + = 'messages') + +117 ià( +nuÎ + ==ð +$ÿlogue +) + +119 +$ÿlogue + = 'messages'; + +122 +fܗch + ( +$this +-> +g‘C©®ogueLi¡ +( +$ÿlogue +è +as + +$v¬ŸÁ +) + +124 + g$fže + = +$this +-> +g‘Sourû +( +$v¬ŸÁ +); + +125 ià( +is_fže +( +$fže +)) + +127  +¬¿y +( +$v¬ŸÁ +, +$fže +); + +131  + gçl£ +; + +142 +public + +funùiÚ + +§ve +( +$ÿlogue + = 'messages') + +144 +$mes§ges + = +$this +-> +uÁ¿n¦©ed +; + +145 ià( +couÁ +( +$mes§ges +) <= 0) + +147  +çl£ +; + +150 + g$v¬ŸÁs + = +$this +-> +g‘V¬ŸÁs +( +$ÿlogue +); + +151 ià( + g$v¬ŸÁs +) + +153 +li¡ +( +$v¬ŸÁ +, +$fž’ame +èð +$v¬ŸÁs +; + +157 +li¡ +( +$v¬ŸÁ +, +$fž’ame +èð +$this +-> +ü—‹Mes§geTem¶©e +( +$ÿlogue +); + +160 ià( +is_wr™abË +( +$fž’ame +è=ð +çl£ +) + +162 +throw + +Ãw + +sfExû±iÚ +( +¥rštf +("UÇbˁاvtØfž%s, fžmu¡ bwr™abË.", +$fž’ame +)); + +166 + g$dom + = +$this +-> +ü—‹DOMDocum’t +(); + +167 @ + g$dom +-> +lßd +( +$fž’ame +); + +170 + g$x·th + = +Ãw + +DomXP©h +( +$dom +); + +171 + g$body + = +$x·th +-> +qu”y +('//body')-> +™em +(0); + +173 ià( + gnuÎ + ==ð +$body +) + +176 +$this +-> +ü—‹Mes§geTem¶©e +( +$ÿlogue +); + +177 + g$dom +-> +lßd +( +$fž’ame +); + +178 + g$x·th + = +Ãw + +DomXP©h +( +$dom +); + +179 + g$body + = +$x·th +-> +qu”y +('//body')-> +™em +(0); + +183 + g$Ï¡Nodes + = +$x·th +-> +qu”y +('//trans-unit[not(@id <=…receding-sibling::trans-unit/@id)‡nd‚ot(@id <= following-sibling::trans-unit/@id)]'); + +184 ià( + gnuÎ + !=ð +$Ï¡ + = +$Ï¡Nodes +-> +™em +(0)) + +186 +$couÁ + = +štv® +( +$Ï¡ +-> +g‘A‰ribu‹ +('id')); + +190 + g$couÁ + = 0; + +194 +fܗch + ( +$mes§ges + +as + +$mes§ge +) + +196 + g$un™ + = +$dom +-> +ü—‹EËm’t +('trans-unit'); + +197 + g$un™ +-> +£tA‰ribu‹ +('id', ++ +$couÁ +); + +199 + g$sourû + = +$dom +-> +ü—‹EËm’t +('source'); + +200 + g$sourû +-> +­³ndChžd +( +$dom +-> +ü—‹TextNode +( +$mes§ge +)); + +201 + g$rg‘ + = +$dom +-> +ü—‹EËm’t +('target'); + +202 + g$rg‘ +-> +­³ndChžd +( +$dom +-> +ü—‹TextNode +('')); + +204 + g$un™ +-> +­³ndChžd +( +$sourû +); + +205 + g$un™ +-> +­³ndChžd +( +$rg‘ +); + +207 + g$body +-> +­³ndChžd +( +$un™ +); + +210 + g$fžeNode + = +$x·th +-> +qu”y +('//fže')-> +™em +(0); + +211 + g$fžeNode +-> +£tA‰ribu‹ +('d©e', @ +d©e +('Y-m-d\TH:i:s\Z')); + +213 + g$dom + = +$this +-> +ü—‹DOMDocum’t +( +$dom +-> +§veXML +()); + +216 + g$dom +-> +§ve +( +$fž’ame +); + +217 ià( + g$this +-> + gÿche +) + +219 + g$this +-> + gÿche +-> +»move +( +$v¬ŸÁ +.':'. +$this +-> +cuÉu» +); + +222  + gŒue +; + +234 +public + +funùiÚ + +upd©e +( +$‹xt +, +$rg‘ +, +$comm’ts +, +$ÿlogue + = 'messages') + +236 +$v¬ŸÁs + = +$this +-> +g‘V¬ŸÁs +( +$ÿlogue +); + +237 ià( + g$v¬ŸÁs +) + +239 +li¡ +( +$v¬ŸÁ +, +$fž’ame +èð +$v¬ŸÁs +; + +243  + gçl£ +; + +246 ià( +is_wr™abË +( +$fž’ame +è=ð +çl£ +) + +248 +throw + +Ãw + +sfExû±iÚ +( +¥rštf +("UÇbˁØupd©fž%s, fžmu¡ bwr™abË.", +$fž’ame +)); + +252 + g$dom + = +$this +-> +ü—‹DOMDocum’t +(); + +253 + g$dom +-> +lßd +( +$fž’ame +); + +256 + g$x·th + = +Ãw + +DomXP©h +( +$dom +); + +257 + g$un™s + = +$x·th +-> +qu”y +('//trans-unit'); + +260 +fܗch + ( +$un™s + +as + +$un™ +) + +262 + g$found + = +çl£ +; + +263 + g$rg‘‹d + = +çl£ +; + +264 + g$comm’‹d + = +çl£ +; + +268 +fܗch + ( +$un™ +-> +chždNodes + +as + +$node +) + +271 ià( + g$node +-> + gnodeName + =ð'sourû' && +$node +-> +fœ¡Chžd +-> +whÞeText + =ð +$‹xt +) + +273 +$found + = +Œue +; + +277 ià( + g$found +) + +280 ià( + g$node +-> + gnodeName + == 'target') + +282 +$node +-> +nodeV®ue + = +$rg‘ +; + +283 + g$rg‘‹d + = +Œue +; + +287 ià(! +em±y +( +$comm’ts +è&& + g$node +-> + gnodeName + == 'note') + +289 +$node +-> +nodeV®ue + = +$comm’ts +; + +290 + g$comm’‹d + = +Œue +; + +296 ià( + g$found + && ! + g$rg‘‹d +) + +298 + g$rg‘Node + = +$dom +-> +ü—‹EËm’t +('target'); + +299 + g$rg‘Node +-> +­³ndChžd +( +$dom +-> +ü—‹TextNode +( +$rg‘ +)); + +300 + g$un™ +-> +­³ndChžd +( +$rg‘Node +); + +304 ià( + g$found + && ! + g$comm’‹d + && ! +em±y +( +$comm’ts +)) + +306 + g$comm’tsNode + = +$dom +-> +ü—‹EËm’t +('note'); + +307 + g$comm’tsNode +-> +­³ndChžd +( +$dom +-> +ü—‹TextNode +( +$comm’ts +)); + +308 + g$un™ +-> +­³ndChžd +( +$comm’tsNode +); + +312 ià( + g$found +) + +318 + g$fžeNode + = +$x·th +-> +qu”y +('//fže')-> +™em +(0); + +319 + g$fžeNode +-> +£tA‰ribu‹ +('d©e', @ +d©e +('Y-m-d\TH:i:s\Z')); + +321 ià( + g$dom +-> +§ve +( +$fž’ame +) > 0) + +323 ià( + g$this +-> + gÿche +) + +325 + g$this +-> + gÿche +-> +»move +( +$v¬ŸÁ +.':'. +$this +-> +cuÉu» +); + +328  + gŒue +; + +331  + gçl£ +; + +341 +public + +funùiÚ + +d–‘e +( +$mes§ge +, +$ÿlogue +='messages') + +343 +$v¬ŸÁs + = +$this +-> +g‘V¬ŸÁs +( +$ÿlogue +); + +344 ià( + g$v¬ŸÁs +) + +346 +li¡ +( +$v¬ŸÁ +, +$fž’ame +èð +$v¬ŸÁs +; + +350  + gçl£ +; + +353 ià( +is_wr™abË +( +$fž’ame +è=ð +çl£ +) + +355 +throw + +Ãw + +sfExû±iÚ +( +¥rštf +("UÇbˁØmodify fž%s, fžmu¡ bwr™abË.", +$fž’ame +)); + +359 + g$dom + = +$this +-> +ü—‹DOMDocum’t +(); + +360 + g$dom +-> +lßd +( +$fž’ame +); + +363 + g$x·th + = +Ãw + +DomXP©h +( +$dom +); + +364 + g$un™s + = +$x·th +-> +qu”y +('//trans-unit'); + +367 +fܗch + ( +$un™s + +as + +$un™ +) + +371 +fܗch + ( +$un™ +-> +chždNodes + +as + +$node +) + +374 ià( + g$node +-> + gnodeName + =ð'sourû' && +$node +-> +fœ¡Chžd +-> +whÞeText + =ð +$mes§ge +) + +377 +$un™ +-> +·»ÁNode +-> +»moveChžd +($unit); + +379 + g$fžeNode + = +$x·th +-> +qu”y +('//fže')-> +™em +(0); + +380 + g$fžeNode +-> +£tA‰ribu‹ +('d©e', @ +d©e +('Y-m-d\TH:i:s\Z')); + +382 ià( + g$dom +-> +§ve +( +$fž’ame +) > 0) + +384 ià(! +em±y +( +$this +-> +ÿche +)) + +386 + g$this +-> + gÿche +-> +»move +( +$v¬ŸÁ +.':'. +$this +-> +cuÉu» +); + +389  + gŒue +; + +393  + gçl£ +; + +399  + gçl£ +; + +402 +´Ùeùed + +funùiÚ + + $ü—‹Mes§geTem¶©e +( +$ÿlogue +) + +404 ià( +nuÎ + ==ð +$ÿlogue +) + +406 +$ÿlogue + = 'messages'; + +409 +$v¬ŸÁs + = +$this +-> + `g‘C©®ogueLi¡ +( +$ÿlogue +); + +410 +$v¬ŸÁ + = + `¬¿y_shiá +( +$v¬ŸÁs +); + +411 +$fže + = +$this +-> + `g‘Sourû +( +$v¬ŸÁ +); + +412 +$dœ + = + `dœÇme +( +$fže +); + +413 ià(! + `is_dœ +( +$dœ +)) + +415 @ + `mkdœ +( +$dœ +); + +416 @ + `chmod +( +$dœ +, 0777); + +419 ià(! + `is_dœ +( +$dœ +)) + +421 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +("UÇbˁØü—‹ dœeùÜy %s.", +$dœ +)); + +424 +$dom + = +$this +-> + `ü—‹DOMDocum’t +($this-> + `g‘Tem¶©e +( +$ÿlogue +)); + +425 + `fže_put_cڋÁs +( +$fže +, +$dom +-> + `§veXML +()); + +426 + `chmod +( +$fže +, 0777); + +428  + `¬¿y +( +$v¬ŸÁ +, +$fže +); + +429 + } +} + +431 +´Ùeùed + +funùiÚ + + $g‘Tem¶©e +( +$ÿlogue +) + +433 +$d©e + = + `d©e +('c'); + +435  <<< +EOD + + +436 + +437 + +438 < +xliff + +v”siÚ +="1.0"> + +439 < +fže + +sourû +- +Ïnguage +="EN" +rg‘ +-Ïnguage="{$this->cuÉu»}" +d©©y³ +="¶aš‹xt" +Üigš® +="$ÿlogue" +d©e +="$d©e" +´oduù +- +Çme +="$catalogue"> + +440 < +h—d” + /> + +441 < +body +> + +442 + +443 + +444 + +445 +EOD +; + +446 + } +} + + @lib/vendor/symfony/lib/i18n/sfMessageSource_gettext.class.php + +1 + `lßd +(); + +58 +$»suÉ + = +$mo +-> + `toA¼ay +(); + +60 +$»suÉs + = + `¬¿y +(); + +61 +$couÁ + = 0; + +62 + `fܗch + ( +$»suÉ +['¡ršgs'] +as + +$sourû + => +$rg‘ +) + +64 +$»suÉs +[ +$sourû +][] = +$rg‘ +; + +65 +$»suÉs +[ +$sourû +][] = +$couÁ +++; + +66 +$»suÉs +[ +$sourû +][] = ''; + +69  +$»suÉs +; + +81 +´Ùeùed + +funùiÚ + + `g‘V¬ŸÁs +( +$ÿlogue + = 'messages') + +83 ià( + `em±y +( +$ÿlogue +)) + +85 +$ÿlogue + = 'messages'; + +88 + `fܗch + ( +$this +-> + `g‘C©®ogueLi¡ +( +$ÿlogue +è +as + +$v¬ŸÁ +) + +90 +$fže + = +$this +-> + `g‘Sourû +( +$v¬ŸÁ +); + +91 +$po + = +$this +-> + `g‘POFže +( +$fže +); + +92 ià( + `is_fže +( +$fže +è|| is_fže( +$po +)) + +94  + `¬¿y +( +$v¬ŸÁ +, +$fže +, +$po +); + +98  +çl£ +; + +99 + } +} + +101 +´Ùeùed + +funùiÚ + + $g‘POFže +( +$MOFže +) + +103  + `sub¡r +( +$MOFže +, 0, + `¡¾’ +($MOFžeè- sŒËn( +$this +-> +d©aExt +)).$this-> +poExt +; + +104 + } +} + +114 +funùiÚ + +§ve +( +$ÿlogue + = 'messages') + +116 +$mes§ges + = +$this +-> +uÁ¿n¦©ed +; + +118 ià( +couÁ +( +$mes§ges +) <= 0) + +120  +çl£ +; + +123 + g$v¬ŸÁs + = +$this +-> +g‘V¬ŸÁs +( +$ÿlogue +); + +125 ià( + g$v¬ŸÁs +) + +127 +li¡ +( +$v¬ŸÁ +, +$MOFže +, +$POFže +èð +$v¬ŸÁs +; + +131 +li¡ +( +$v¬ŸÁ +, +$MOFže +, +$POFže +èð +$this +-> +ü—‹Mes§geTem¶©e +( +$ÿlogue +); + +134 ià( +is_wr™abË +( +$MOFže +è=ð +çl£ +) + +136 +throw + +Ãw + +sfExû±iÚ +( +¥rštf +("UÇbˁاvtØfž%s, fžmu¡ bwr™abË.", +$MOFže +)); + +138 ià( +is_wr™abË +( +$POFže +è=ð +çl£ +) + +140 +throw + +Ãw + +sfExû±iÚ +( +¥rštf +("UÇbˁاvtØfž%s, fžmu¡ bwr™abË.", +$POFže +)); + +144 + g$¡ršgs + = +¬¿y +(); + +145 +fܗch + ( +$mes§ges + +as + +$mes§ge +) + +147 + g$¡ršgs +[ +$mes§ge +] = ''; + +151 + g$po + = +TG‘‹xt +:: +çùÜy +('PO', +$POFže +); + +152 + g$po +-> +lßd +(); + +153 + g$»suÉ + = +$po +-> +toA¼ay +(); + +155 + g$exi¡šg + = +couÁ +( +$»suÉ +['strings']); + +158 + g$»suÉ +['¡ršgs'] = +¬¿y_m”ge +( +$»suÉ +['¡ršgs'], +$¡ršgs +); + +160 + g$Ãw + = +couÁ +( +$»suÉ +['strings']); + +162 ià( + g$Ãw + > + g$exi¡šg +) + +165 + g$»suÉ +['m‘a']['PO-RevisiÚ-D©e'] = @ +d©e +('Y-m-d H:i:s'); + +167 + g$po +-> +äomA¼ay +( +$»suÉ +); + +168 + g$mo + = +$po +-> +toMO +(); + +169 ià( + g$po +-> +§ve +(è&& + g$mo +->§ve( +$MOFže +)) + +171 ià( + g$this +-> + gÿche +) + +173 + g$this +-> + gÿche +-> +»move +( +$v¬ŸÁ +.':'. +$this +-> +cuÉu» +); + +176  + gŒue +; + +180  + gçl£ +; + +184  + gçl£ +; + +194 +funùiÚ + +d–‘e +( +$mes§ge +, +$ÿlogue + = 'messages') + +196 +$v¬ŸÁs + = +$this +-> +g‘V¬ŸÁs +( +$ÿlogue +); + +197 ià( + g$v¬ŸÁs +) + +199 +li¡ +( +$v¬ŸÁ +, +$MOFže +, +$POFže +èð +$v¬ŸÁs +; + +203  + gçl£ +; + +206 ià( +is_wr™abË +( +$MOFže +è=ð +çl£ +) + +208 +throw + +Ãw + +sfExû±iÚ +( +¥rštf +("UÇbˁØmodify fž%s, fžmu¡ bwr™abË.", +$MOFže +)); + +211 ià( +is_wr™abË +( +$POFže +è=ð +çl£ +) + +213 +throw + +Ãw + +sfExû±iÚ +( +¥rštf +("UÇbˁØmodify fž%s, fžmu¡ bwr™abË.", +$POFže +)); + +216 + g$po + = +TG‘‹xt +:: +çùÜy +('PO', +$POFže +); + +217 + g$po +-> +lßd +(); + +218 + g$»suÉ + = +$po +-> +toA¼ay +(); + +220 +fܗch + ( +$»suÉ +['¡ršgs'] +as + +$¡ršg + => +$v®ue +) + +222 ià( +$¡ršg + =ð +$mes§ge +) + +224 +$»suÉ +['m‘a']['PO-RevisiÚ-D©e'] = @ +d©e +('Y-m-d H:i:s'); + +225 +un£t +( +$»suÉ +['¡ršgs'][ +$¡ršg +]); + +227 + g$po +-> +äomA¼ay +( +$»suÉ +); + +228 + g$mo + = +$po +-> +toMO +(); + +229 ià( + g$po +-> +§ve +(è&& + g$mo +->§ve( +$MOFže +)) + +231 ià( + g$this +-> + gÿche +) + +233 + g$this +-> + gÿche +-> +»move +( +$v¬ŸÁ +.':'. +$this +-> +cuÉu» +); + +236  + gŒue +; + +240  + gçl£ +; + +245  + gçl£ +; + +257 +funùiÚ + +upd©e +( +$‹xt +, +$rg‘ +, +$comm’ts +, +$ÿlogue + = 'messages') + +259 +$v¬ŸÁs + = +$this +-> +g‘V¬ŸÁs +( +$ÿlogue +); + +260 ià( + g$v¬ŸÁs +) + +262 +li¡ +( +$v¬ŸÁ +, +$MOFže +, +$POFže +èð +$v¬ŸÁs +; + +266  + gçl£ +; + +269 ià( +is_wr™abË +( +$MOFže +è=ð +çl£ +) + +271 +throw + +Ãw + +sfExû±iÚ +( +¥rštf +("UÇbˁØupd©fž%s, fžmu¡ bwr™abË.", +$MOFže +)); + +274 ià( +is_wr™abË +( +$POFže +è=ð +çl£ +) + +276 +throw + +Ãw + +sfExû±iÚ +( +¥rštf +("UÇbˁØupd©fž%s, fžmu¡ bwr™abË.", +$POFže +)); + +279 + g$po + = +TG‘‹xt +:: +çùÜy +('PO', +$POFže +); + +280 + g$po +-> +lßd +(); + +281 + g$»suÉ + = +$po +-> +toA¼ay +(); + +283 +fܗch + ( +$»suÉ +['¡ršgs'] +as + +$¡ršg + => +$v®ue +) + +285 ià( +$¡ršg + =ð +$‹xt +) + +287 +$»suÉ +['¡ršgs'][ +$¡ršg +] = +$rg‘ +; + +288 + g$»suÉ +['m‘a']['PO-RevisiÚ-D©e'] = @ +d©e +('Y-m-d H:i:s'); + +290 + g$po +-> +äomA¼ay +( +$»suÉ +); + +291 + g$mo + = +$po +-> +toMO +(); + +293 ià( + g$po +-> +§ve +(è&& + g$mo +->§ve( +$MOFže +)) + +295 ià( + g$this +-> + gÿche +) + +297 + g$this +-> + gÿche +-> +»move +( +$v¬ŸÁ +.':'. +$this +-> +cuÉu» +); + +300  + gŒue +; + +304  + gçl£ +; + +309  + gçl£ +; + +312 +´Ùeùed + +funùiÚ + + $ü—‹Mes§geTem¶©e +( +$ÿlogue +) + +314 ià( +nuÎ + ==ð +$ÿlogue +) + +316 +$ÿlogue + = 'messages'; + +319 +$v¬ŸÁs + = +$this +-> + `g‘C©®ogueLi¡ +( +$ÿlogue +); + +320 +$v¬ŸÁ + = + `¬¿y_shiá +( +$v¬ŸÁs +); + +321 +$mo_fže + = +$this +-> + `g‘Sourû +( +$v¬ŸÁ +); + +322 +$po_fže + = +$this +-> + `g‘POFže +( +$mo_fže +); + +324 +$dœ + = + `dœÇme +( +$mo_fže +); + +325 ià(! + `is_dœ +( +$dœ +)) + +327 @ + `mkdœ +( +$dœ +); + +328 @ + `chmod +( +$dœ +, 0777); + +331 ià(! + `is_dœ +( +$dœ +)) + +333 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +("UÇbˁØü—‹ dœeùÜy %s.", +$dœ +)); + +336 +$po + = +TG‘‹xt +:: + `çùÜy +('PO', +$po_fže +); + +337 +$»suÉ +['m‘a']['PO-RevisiÚ-D©e'] = + `d©e +('Y-m-d H:i:s'); + +338 +$»suÉ +['¡ršgs'] = + `¬¿y +(); + +340 +$po +-> + `äomA¼ay +( +$»suÉ +); + +341 +$mo + = +$po +-> + `toMO +(); + +342 ià( +$po +-> + `§ve +(è&& +$mo +->§ve( +$mo_fže +)) + +344  + `¬¿y +( +$v¬ŸÁ +, +$mo_fže +, +$po_fže +); + +348 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +("UÇbˁØü—‹ fž% ªd %s.", +$po_fže +, +$mo_fže +)); + +350 + } +} + + @lib/vendor/symfony/lib/i18n/sfNumberFormat.class.php + +1 +fÜm©Info + = +sfNumb”FÜm©Info +:: + `g‘Inv¬ŸÁInfo +(); + +87 ià( +$fÜm©Info + +š¡ªûof + +sfCuÉu»Info +) + +89 +$this +-> +fÜm©Info + = +$fÜm©Info +-> + `g‘Numb”FÜm© +(); + +91 ià( +$fÜm©Info + +š¡ªûof + +sfNumb”FÜm©Info +) + +93 +$this +-> +fÜm©Info + = +$fÜm©Info +; + +97 +$this +-> +fÜm©Info + = +sfNumb”FÜm©Info +:: + `g‘In¡ªû +( +$fÜm©Info +); + +115 +funùiÚ + + `fÜm© +( +$numb” +, +$·‰”n + = 'd', +$cu¼’cy + = 'USD', +$ch¬£t + = 'UTF-8') + +117 +$this +-> + `£tP©‹º +( +$·‰”n +); + +119 ià( + `¡¹Þow” +( +$·‰”n +) == 'p') + +121 +$numb” + = $number * 100; + +126 +$´ecisiÚ + = + `ši_£t +('precision', 14); + +127 +$¡ršg + = +$this +-> + `fixFlßt +( +$numb” +); + +128 + `ši_£t +('´ecisiÚ', +$´ecisiÚ +); + +130 +$decim® + = +$this +-> + `fÜm©Decim® +( +$¡ršg +); + +131 +$š‹g” + = +$this +-> + `fÜm©IÁeg” +($this-> + `fixFlßt +( + `abs +( +$numb” +))); + +133 +$»suÉ + = ( + `¡¾’ +( +$decim® +è> 0è? +$š‹g” +.$decimal : $integer; + +136 ià( +$numb” + >= 0) + +138 +$suffix + = +$this +-> +fÜm©Info +-> +Pos™iveP©‹º +; + +140 ià( +$numb” + < 0) + +142 +$suffix + = +$this +-> +fÜm©Info +-> +Neg©iveP©‹º +; + +146 +$»suÉ + = +$suffix +[0].$result.$suffix[1]; + +149 +$symbÞ + = @ +$this +-> +fÜm©Info +-> + `g‘Cu¼’cySymbÞ +( +$cu¼’cy +); + +150 ià( +nuÎ + ==ð +$symbÞ +) + +152 +$symbÞ + = +$cu¼’cy +; + +155 +$»suÉ + = + `¡r_»¶aû +('¤', +$symbÞ +, $result); + +157  +sfToÞk™ +:: + `I18N_toEncodšg +( +$»suÉ +, +$ch¬£t +); + +158 + } +} + +166 +´Ùeùed + +funùiÚ + + $fÜm©IÁeg” +( +$¡ršg +) + +168 +$¡ršg + = ( +¡ršg +) $string; + +170 +$dp + = + `¡½os +( +$¡ršg +, '.'); + +172 ià( + `is_št +( +$dp +)) + +174 +$¡ršg + = + `sub¡r +($¡ršg, 0, +$dp +); + +177 +$š‹g” + = ''; + +179 +$dig™Size + = +$this +-> +fÜm©Info +-> + `g‘Dig™Size +(); + +180 +$¡ršg + = + `¡r_·d +($¡ršg, +$dig™Size +, '0', +STR_PAD_LEFT +); + +182 +$Ën + = + `¡¾’ +( +$¡ršg +); + +184 +$groupS•¬©Ü + = +$this +-> +fÜm©Info +-> +GroupS•¬©Ü +; + +185 +$groupSize + = +$this +-> +fÜm©Info +-> +GroupSizes +; + +187 +$fœ¡Group + = +Œue +; + +188 +$muÉiGroup + = + `is_št +( +$groupSize +[1]); + +189 +$couÁ + = 0; + +191 ià( + `is_št +( +$groupSize +[0])) + +194  +$i + = 0; $˜< +$Ën +; $i++) + +196 +$ch¬ + = +$¡ršg +{ +$Ën + - +$i + - 1}; + +198 ià( +$muÉiGroup + && +$couÁ + == 0) + +200 ià( +$i + !ð0 && $˜% +$groupSize +[0] == 0) + +202 +$š‹g” + = +$groupS•¬©Ü +.$integer; + +203 +$couÁ +++; + +206 ià( +$muÉiGroup + && +$couÁ + >= 1) + +208 ià( +$i + !ð0 && ($˜- +$groupSize +[0]) % $groupSize[1] == 0) + +210 +$š‹g” + = +$groupS•¬©Ü +.$integer; + +211 +$couÁ +++; + +216 ià( +$i + !ð0 && $˜% +$groupSize +[0] == 0) + +218 +$š‹g” + = +$groupS•¬©Ü +.$integer; + +219 +$couÁ +++; + +223 +$š‹g” + = +$ch¬ +.$integer; + +228 +$š‹g” + = +$¡ršg +; + +231  +$š‹g” +; + +232 + } +} + +240 +´Ùeùed + +funùiÚ + + $fÜm©Decim® +( +$¡ršg +) + +242 +$dp + = + `¡½os +( +$¡ršg +, '.'); + +243 +$decim® + = ''; + +245 +$decim®Dig™s + = +$this +-> +fÜm©Info +-> +Decim®Dig™s +; + +246 +$decim®S•¬©Ü + = +$this +-> +fÜm©Info +-> +Decim®S•¬©Ü +; + +248 ià( + `is_št +( +$dp +)) + +250 ià( +$decim®Dig™s + == -1) + +252 +$decim® + = + `sub¡r +( +$¡ršg +, +$dp + + 1); + +254 ià( + `is_št +( +$decim®Dig™s +)) + +256 ià( +çl£ + ==ð +$pos + = + `¡½os +( +$¡ršg +, '.')) + +258 +$decim® + = + `¡r_·d +($decim®, +$decim®Dig™s +, '0'); + +262 +$decim® + = + `sub¡r +( +$¡ršg +, +$pos + + 1); + +263 ià( + `¡¾’ +( +$decim® +è<ð +$decim®Dig™s +) + +265 +$decim® + = + `¡r_·d +($decim®, +$decim®Dig™s +, '0'); + +269 +$decim® + = + `sub¡r +($decim®, 0, +$decim®Dig™s +); + +275  +$decim® +; + +278  +$decim®S•¬©Ü +. +$decim® +; + +280 ià( +$decim®Dig™s + > 0) + +282  +$decim®S•¬©Ü +. + `¡r_·d +( +$decim® +, +$decim®Dig™s +, '0'); + +285  +$decim® +; + +286 + } +} + +295 +´Ùeùed + +funùiÚ + + $£tP©‹º +( +$·‰”n +) + +297  +$·‰”n +) + +301 +$this +-> +fÜm©Info +-> + `£tP©‹º +( +sfNumb”FÜm©Info +:: +CURRENCY +); + +305 +$this +-> +fÜm©Info +-> + `£tP©‹º +( +sfNumb”FÜm©Info +:: +DECIMAL +); + +309 +$this +-> +fÜm©Info +-> + `£tP©‹º +( +sfNumb”FÜm©Info +:: +SCIENTIFIC +); + +313 +$this +-> +fÜm©Info +-> + `£tP©‹º +( +sfNumb”FÜm©Info +:: +PERCENTAGE +); + +316 +$this +-> +fÜm©Info +-> + `£tP©‹º +( +$·‰”n +); + +319 + } +} + +321 +´Ùeùed + +funùiÚ + + $fixFlßt +( +$æßt +) + +323 +$¡ršg + = ( +¡ršg +è +$æßt +; + +325 ià( +çl£ + ==ð + `¡r¡r +( +$æßt +, 'E')) + +327  +$¡ršg +; + +330 + `li¡ +( +$signifiÿnd +, +$exp +èð + `ex¶ode +('E', +$¡ršg +); + +331 + `li¡ +(, +$decim® +èð + `ex¶ode +('.', +$signifiÿnd +); + +332 ià('-' ==ð +$exp +[0]) { + +333 +$exp + = + `¡r_»¶aû +('-', '', $exp); + +335  '0.'. + `¡r_»³© +('0', +$exp +). + `¡r_»¶aû +('.', '', +$signifiÿnd +); + +337 +$exp + = + `¡r_»¶aû +('+', '', $expè- + `¡¾’ +( +$decim® +); + +339  + `¡r_»¶aû +('.', '', +$signifiÿnd +). + `¡r_»³© +('0', +$exp +); + +341 + } +} + + @lib/vendor/symfony/lib/i18n/sfNumberFormatInfo.class.php + +1 +´Ý”t›s +)) + +81  +$this +-> + `$g‘Prݔty +(); + +85 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('Prݔty % dÛ nكxi¡s.', +$Çme +)); + +93 +funùiÚ + + $__£t +( +$Çme +, +$v®ue +) + +95 +$£tPrݔty + = '£t'. +$Çme +; + +96 ià( + `š_¬¿y +( +$£tPrݔty +, +$this +-> +´Ý”t›s +)) + +98 +$this +-> + `$£tPrݔty +( +$v®ue +); + +102 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('Prݔty % ÿÀnÙ b£t.', +$Çme +)); + +104 + } +} + +117 +funùiÚ + +__cÚ¡ruù +( +$d©a + = +¬¿y +(), +$ty³ + = +sfNumb”FÜm©Info +:: +DECIMAL +) + +119 +$this +-> +´Ý”t›s + = +g‘_þass_m‘hods +($this); + +121 ià( +em±y +( +$d©a +)) + +123 +throw + +Ãw + +sfExû±iÚ +('Please…rovidehe ICU datao initialize.'); + +126 + g$this +-> + gd©a + = +$d©a +; + +128 + g$this +-> +£tP©‹º +( +$ty³ +); + +138 +funùiÚ + +£tP©‹º +( +$ty³ + = +sfNumb”FÜm©Info +:: +DECIMAL +) + +140 ià( +is_št +( +$ty³ +)) + +142 +$this +-> +·‰”n + = $this-> +·r£P©‹º +($this-> +d©a +['Numb”P©‹ºs'][ +$ty³ +]); + +146 + g$this +-> + g·‰”n + = +$this +-> +·r£P©‹º +( +$ty³ +); + +149 + g$this +-> + g·‰”n +['ÃgInáy'] = +$this +-> +d©a +['NumberElements'][6].$this->data['NumberElements'][9]; + +151 + g$this +-> + g·‰”n +['posInáy'] = +$this +-> +d©a +['NumberElements'][11].$this->data['NumberElements'][9]; + +154 +funùiÚ + + $g‘P©‹º +() + +156  +$this +-> +·‰”n +; + +157 + } +} + +164  +public + +funùiÚ + +g‘Inv¬ŸÁInfo +( +$ty³ + = +sfNumb”FÜm©Info +:: +DECIMAL +) + +166  +$šv¬ŸÁ +; + +167 ià( + gnuÎ + ==ð +$šv¬ŸÁ +) + +169 +$cuÉu» + = +sfCuÉu»Info +:: +g‘Inv¬ŸÁCuÉu» +(); + +170 + g$šv¬ŸÁ + = +$cuÉu» +-> +Numb”FÜm© +; + +171 + g$šv¬ŸÁ +-> +£tP©‹º +( +$ty³ +); + +174  + g$šv¬ŸÁ +; + +189 +public +  +funùiÚ + +g‘In¡ªû +( +$cuÉu» + = +nuÎ +, +$ty³ + = +sfNumb”FÜm©Info +:: +DECIMAL +) + +191 ià( +$cuÉu» + +š¡ªûof + +sfCuÉu»Info +) + +193 +$fÜm©Info + = +$cuÉu» +-> +g‘Numb”FÜm© +(); + +194 + g$fÜm©Info +-> +£tP©‹º +( +$ty³ +); + +196  + g$fÜm©Info +; + +198 ià( +is_¡ršg +( +$cuÉu» +)) + +200 + g$sfCuÉu»Info + = +sfCuÉu»Info +:: +g‘In¡ªû +( +$cuÉu» +); + +201 + g$fÜm©Info + = +$sfCuÉu»Info +-> +g‘Numb”FÜm© +(); + +202 + g$fÜm©Info +-> +£tP©‹º +( +$ty³ +); + +204  + g$fÜm©Info +; + +208 + g$sfCuÉu»Info + = +sfCuÉu»Info +:: +g‘In¡ªû +(); + +209 + g$fÜm©Info + = +$sfCuÉu»Info +-> +g‘Numb”FÜm© +(); + +210 + g$fÜm©Info +-> +£tP©‹º +( +$ty³ +); + +212  + g$fÜm©Info +; + +222 +public +  +funùiÚ + + $g‘Cu¼’cyIn¡ªû +( +$cuÉu» + = +nuÎ +) + +224  +£lf +:: + `g‘In¡ªû +( +$cuÉu» +, s–f:: +CURRENCY +); + +225 + } +} + +233 +public +  +funùiÚ + + $g‘P”ûÁageIn¡ªû +( +$cuÉu» + = +nuÎ +) + +235  +£lf +:: + `g‘In¡ªû +( +$cuÉu» +, s–f:: +PERCENTAGE +); + +236 + } +} + +244 +public +  +funùiÚ + + $g‘Sc›ÁificIn¡ªû +( +$cuÉu» + = +nuÎ +) + +246  +£lf +:: + `g‘In¡ªû +( +$cuÉu» +, s–f:: +SCIENTIFIC +); + +247 + } +} + +255 +´Ùeùed + +funùiÚ + + $·r£P©‹º +( +$·‰”n +) + +257 +$·‰”n + = + `ex¶ode +(';', $pattern); + +259 +$Ãg©ive + = +nuÎ +; + +260 ià( + `couÁ +( +$·‰”n +) > 1) + +262 +$Ãg©ive + = +$·‰”n +[1]; + +264 +$·‰”n + = $pattern[0]; + +266 +$comma + = ','; + +267 +$dÙ + = '.'; + +268 +$dig™ + = '0'; + +269 +$hash + = '#'; + +272 +$groupPos1 + = + `¡¼pos +( +$·‰”n +, +$comma +); + +273 +$decim®Pos + = + `¡¼pos +( +$·‰”n +, +$dÙ +); + +275 +$groupPos2 + = +çl£ +; + +276 +$groupSize1 + = +çl£ +; + +277 +$groupSize2 + = +çl£ +; + +278 +$decim®Pošts + = + `is_št +( +$decim®Pos +è? -1 : +çl£ +; + +280 +$šfo +['Ãg©ive'] = +$Ãg©ive +; + +281 +$šfo +['pos™ive'] = +$·‰”n +; + +283 +$posfix + = +$this +-> + `g‘P»Po¡fix +( +$·‰”n +); + +284 +$šfo +['posP»f'] = +$posfix +[0]; + +285 +$šfo +['posPo¡'] = +$posfix +[1]; + +287 ià( +$Ãg©ive +) + +290 +$´efixPo¡fix + = +$this +-> + `g‘P»Po¡fix +( +$Ãg©ive +); + +291 +$šfo +['ÃgP»f'] = +$´efixPo¡fix +[0]; + +292 +$šfo +['ÃgPo¡'] = +$´efixPo¡fix +[1]; + +299 +$šfo +['ÃgP»f'] = +$this +-> + `g‘Neg©iveSign +().$info['posPref']; + +300 +$šfo +['negPost'] = $info['posPost']; + +303 ià( + `is_št +( +$groupPos1 +)) + +306 +$groupPos2 + = + `¡¼pos +( + `sub¡r +( +$·‰”n +, 0, +$groupPos1 +), +$comma +); + +309 ià( + `is_št +( +$decim®Pos +)) + +311 +$groupSize1 + = +$decim®Pos + - +$groupPos1 + - 1; + +317  +$i + = + `¡¾’ +( +$·‰”n +) - 1; $i >= 0; $i--) + +319 ià( +$·‰”n +{ +$i +} =ð +$dig™ + || $·‰”n{$i} =ð +$hash +) + +321 +$groupSize1 + = +$i + - +$groupPos1 +; + +328 ià( + `is_št +( +$groupPos2 +)) + +330 +$groupSize2 + = +$groupPos1 + - +$groupPos2 + - 1; + +334 ià( + `is_št +( +$decim®Pos +)) + +336  +$i + = + `¡¾’ +( +$·‰”n +) - 1; $i >= 0; $i--) + +338 ià( +$·‰”n +{ +$i +} =ð +$dÙ +) + +342 ià( +$·‰”n +{ +$i +} =ð +$dig™ +) + +344 +$decim®Pošts + = +$i + - +$decim®Pos +; + +350 +$dig™P©‹º + = + `is_št +( +$decim®Pos +è? + `sub¡r +( +$·‰”n +, 0, $decimalPos) : $pattern; + +351 +$dig™P©‹º + = + `´eg_»¶aû +('/[^0]/', '', $digitPattern); + +353 +$šfo +['groupPos1'] = +$groupPos1 +; + +354 +$šfo +['groupSize1'] = +$groupSize1 +; + +355 +$šfo +['groupPos2'] = +$groupPos2 +; + +356 +$šfo +['groupSize2'] = +$groupSize2 +; + +357 +$šfo +['decim®Pos'] = +$decim®Pos +; + +358 +$šfo +['decim®Pošts'] = +$decim®Pošts +; + +359 +$šfo +['dig™Size'] = + `¡¾’ +( +$dig™P©‹º +); + +361  +$šfo +; + +362 + } +} + +370 +´Ùeùed + +funùiÚ + + $g‘P»Po¡fix +( +$·‰”n +) + +372 +$»gexp + = '/[#,\.0]+/'; + +373 +$»suÉ + = + `´eg_¥l™ +( +$»gexp +, +$·‰”n +); + +375  + `¬¿y +( +$»suÉ +[0], $result[1]); + +376 + } +} + +383 +funùiÚ + + $g‘Decim®Dig™s +() + +385  +$this +-> +·‰”n +['decimalPoints']; + +386 + } +} + +393 +funùiÚ + + $£tDecim®Dig™s +( +$v®ue +) + +395  +$this +-> +·‰”n +['decim®Pošts'] = +$v®ue +; + +396 + } +} + +403 +funùiÚ + + $g‘Dig™Size +() + +405  +$this +-> +·‰”n +['digitSize']; + +406 + } +} + +413 +funùiÚ + + $£tDig™Size +( +$v®ue +) + +415 +$this +-> +·‰”n +['dig™Size'] = +$v®ue +; + +416 + } +} + +423 +funùiÚ + + $g‘Decim®S•¬©Ü +() + +425  +$this +-> +d©a +['NumberElements'][0]; + +426 + } +} + +433 +funùiÚ + + $£tDecim®S•¬©Ü +( +$v®ue +) + +435  +$this +-> +d©a +['Numb”EËm’ts'][0] = +$v®ue +; + +436 + } +} + +444 +funùiÚ + + $g‘GroupS•¬©Ü +() + +446  +$this +-> +d©a +['NumberElements'][1]; + +447 + } +} + +454 +funùiÚ + + $£tGroupS•¬©Ü +( +$v®ue +) + +456  +$this +-> +d©a +['Numb”EËm’ts'][1] = +$v®ue +; + +457 + } +} + +467 +funùiÚ + + $g‘GroupSizes +() + +469 +$group1 + = +$this +-> +·‰”n +['groupSize1']; + +470 +$group2 + = +$this +-> +·‰”n +['groupSize2']; + +472  + `¬¿y +( +$group1 +, +$group2 +); + +473 + } +} + +483 +funùiÚ + + $£tGroupSizes +( +$groupSize +) + +485 +$this +-> +·‰”n +['groupSize1'] = +$groupSize +[0]; + +486 +$this +-> +·‰”n +['groupSize2'] = +$groupSize +[1]; + +487 + } +} + +496 +funùiÚ + + $g‘Neg©iveP©‹º +() + +498 +$´efix + = +$this +-> +·‰”n +['negPref']; + +499 +$po¡fix + = +$this +-> +·‰”n +['negPost']; + +501  + `¬¿y +( +$´efix +, +$po¡fix +); + +502 + } +} + +511 +funùiÚ + + $£tNeg©iveP©‹º +( +$·‰”n +) + +513 +$this +-> +·‰”n +['ÃgP»f'] = +$·‰”n +[0]; + +514 +$this +-> +·‰”n +['ÃgPo¡'] = +$·‰”n +[1]; + +515 + } +} + +524 +funùiÚ + + $g‘Pos™iveP©‹º +() + +526 +$´efix + = +$this +-> +·‰”n +['posPref']; + +527 +$po¡fix + = +$this +-> +·‰”n +['posPost']; + +529  + `¬¿y +( +$´efix +, +$po¡fix +); + +530 + } +} + +539 +funùiÚ + + $£tPos™iveP©‹º +( +$·‰”n +) + +541 +$this +-> +·‰”n +['posP»f'] = +$·‰”n +[0]; + +542 +$this +-> +·‰”n +['posPo¡'] = +$·‰”n +[1]; + +543 + } +} + +550 +funùiÚ + +g‘Cu¼’cySymbÞ +( +$cu¼’cy + = 'USD') + +552 ià( +is£t +( +$this +-> +·‰”n +['symbol'])) + +554  +$this +-> +·‰”n +['symbol']; + +558  + g$this +-> + gd©a +['Cu¼’c›s'][ +$cu¼’cy +][0]; + +567 +funùiÚ + + $£tCu¼’cySymbÞ +( +$symbÞ +) + +569 +$this +-> +·‰”n +['symbÞ'] = +$symbÞ +; + +570 + } +} + +577 +funùiÚ + + $g‘Neg©iveInfš™ySymbÞ +() + +579  +$this +-> +·‰”n +['negInfty']; + +580 + } +} + +587 +funùiÚ + + $£tNeg©iveInfš™ySymbÞ +( +$v®ue +) + +589 +$this +-> +·‰”n +['ÃgInáy'] = +$v®ue +; + +590 + } +} + +597 +funùiÚ + + $g‘Pos™iveInfš™ySymbÞ +() + +599  +$this +-> +·‰”n +['posInfty']; + +600 + } +} + +607 +funùiÚ + + $£tPos™iveInfš™ySymbÞ +( +$v®ue +) + +609 +$this +-> +·‰”n +['posInáy'] = +$v®ue +; + +610 + } +} + +617 +funùiÚ + + $g‘Neg©iveSign +() + +619  +$this +-> +d©a +['NumberElements'][6]; + +620 + } +} + +627 +funùiÚ + + $£tNeg©iveSign +( +$v®ue +) + +629 +$this +-> +d©a +['Numb”EËm’ts'][6] = +$v®ue +; + +630 + } +} + +637 +funùiÚ + + $g‘Pos™iveSign +() + +639  +$this +-> +d©a +['NumberElements'][11]; + +640 + } +} + +647 +funùiÚ + + $£tPos™iveSign +( +$v®ue +) + +649 +$this +-> +d©a +['Numb”EËm’ts'][11] = +$v®ue +; + +650 + } +} + +657 +funùiÚ + + $g‘NaNSymbÞ +() + +659  +$this +-> +d©a +['NumberElements'][10]; + +660 + } +} + +667 +funùiÚ + + $£tNaNSymbÞ +( +$v®ue +) + +669 +$this +-> +d©a +['Numb”EËm’ts'][10] = +$v®ue +; + +670 + } +} + +677 +funùiÚ + + $g‘P”ûÁSymbÞ +() + +679  +$this +-> +d©a +['NumberElements'][3]; + +680 + } +} + +687 +funùiÚ + + $£tP”ûÁSymbÞ +( +$v®ue +) + +689 +$this +-> +d©a +['Numb”EËm’ts'][3] = +$v®ue +; + +690 + } +} + +697 +funùiÚ + + $g‘P”MžËSymbÞ +() + +699  +$this +-> +d©a +['NumberElements'][8]; + +700 + } +} + +707 +funùiÚ + + $£tP”MžËSymbÞ +( +$v®ue +) + +709 +$this +-> +d©a +['Numb”EËm’ts'][8] = +$v®ue +; + +710 + } +} + + @lib/vendor/symfony/lib/log/sfAggregateLogger.class.php + +1 +di¥©ch” + = +$di¥©ch” +; + +40 ià( + `is£t +( +$ÝtiÚs +['loggers'])) + +42 ià(! + `is_¬¿y +( +$ÝtiÚs +['loggers'])) + +44 +$ÝtiÚs +['logg”s'] = + `¬¿y +($options['loggers']); + +47 +$this +-> + `addLogg”s +( +$ÝtiÚs +['loggers']); + +50  +·»Á +:: + `š™Ÿlize +( +$di¥©ch” +, +$ÝtiÚs +); + +58 +public + +funùiÚ + + $g‘Logg”s +() + +60  +$this +-> +logg”s +; + +61 + } +} + +68 +public + +funùiÚ + + $addLogg”s +( +$logg”s +) + +70 + `fܗch + ( +$logg”s + +as + +$logg” +) + +72 +$this +-> + `addLogg” +( +$logg” +); + +74 + } +} + +81 +public + +funùiÚ + + $addLogg” +( +sfLogg” + +$logg” +) + +83 +$this +-> +logg”s +[] = +$logg” +; + +85 +$this +-> +di¥©ch” +-> + `discÚÃù +('­¶iÿtiÚ.log', + `¬¿y +( +$logg” +, 'listenToLogEvent')); + +86 + } +} + +94 +´Ùeùed + +funùiÚ + + $doLog +( +$mes§ge +, +$´iܙy +) + +96 + `fܗch + ( +$this +-> +logg”s + +as + +$logg” +) + +98 +$logg” +-> + `log +( +$mes§ge +, +$´iܙy +); + +100 + } +} + +105 +public + +funùiÚ + + $shutdown +() + +107 + `fܗch + ( +$this +-> +logg”s + +as + +$logg” +) + +109 +$logg” +-> + `shutdown +(); + +112 +$this +-> +logg”s + = + `¬¿y +(); + +113 + } +} + + @lib/vendor/symfony/lib/log/sfConsoleLogger.class.php + +1 +fÜm© + = +$ÝtiÚs +['format']; + +56 ià( + `is£t +( +$ÝtiÚs +['time_format'])) + +58 +$this +-> +timeFÜm© + = +$ÝtiÚs +['time_format']; + +61 ià( + `is£t +( +$ÝtiÚs +['type'])) + +63 +$this +-> +ty³ + = +$ÝtiÚs +['type']; + +66 +$dœ + = + `dœÇme +( +$ÝtiÚs +['file']); + +67 ià(! + `is_dœ +( +$dœ +)) + +69 + `mkdœ +( +$dœ +, + `is£t +( +$ÝtiÚs +['dœ_mode']è? $ÝtiÚs['dœ_mode'] : 0777, +Œue +); + +72 +$fžeExi¡s + = + `fže_exi¡s +( +$ÝtiÚs +['file']); + +73 ià(! + `is_wr™abË +( +$dœ +è|| ( +$fžeExi¡s + && !is_wr™abË( +$ÝtiÚs +['file']))) + +75 +throw + +Ãw + + `sfFžeExû±iÚ +( + `¥rštf +('UÇbˁØÝ’hlog fž"%s" fÜ wr™šg.', +$ÝtiÚs +['file'])); + +78 +$this +-> +å + = + `fݒ +( +$ÝtiÚs +['file'], 'a'); + +79 ià(! +$fžeExi¡s +) + +81 + `chmod +( +$ÝtiÚs +['fže'], + `is£t +($options['file_mode']) ? $options['file_mode'] : 0666); + +84  +·»Á +:: + `š™Ÿlize +( +$di¥©ch” +, +$ÝtiÚs +); + +93 +´Ùeùed + +funùiÚ + + $doLog +( +$mes§ge +, +$´iܙy +) + +95 + `æock +( +$this +-> +å +, +LOCK_EX +); + +96 + `fwr™e +( +$this +-> +å +, + `¡¹r +($this-> +fÜm© +, + `¬¿y +( + +97 '%ty³%' => +$this +-> +ty³ +, + +98 '%mes§ge%' => +$mes§ge +, + +99 '%time%' => + `¡ráime +( +$this +-> +timeFÜm© +), + +100 '%´iܙy%' => +$this +-> + `g‘Priܙy +( +$´iܙy +), + +101 '%EOL%' => +PHP_EOL +, + +103 + `æock +( +$this +-> +å +, +LOCK_UN +); + +104 + } +} + +113 +´Ùeùed + +funùiÚ + + $g‘Priܙy +( +$´iܙy +) + +115  +sfLogg” +:: + `g‘PriܙyName +( +$´iܙy +); + +116 + } +} + +121 +public + +funùiÚ + + $shutdown +() + +123 ià( + `is_»sourû +( +$this +-> +å +)) + +125 + `fþo£ +( +$this +-> +å +); + +127 + } +} + + @lib/vendor/symfony/lib/log/sfLogger.class.php + +1 + `š™Ÿlize +( +$di¥©ch” +, +$ÝtiÚs +); + +54 ià(! + `is£t +( +$ÝtiÚs +['auto_shutdown']) || $options['auto_shutdown']) + +56 + `»gi¡”_shutdown_funùiÚ +( + `¬¿y +( +$this +, 'shutdown')); + +74 +public + +funùiÚ + + `š™Ÿlize +( +sfEv’tDi¥©ch” + +$di¥©ch” +, +$ÝtiÚs + = + $¬¿y +()) + +76 +$this +-> +di¥©ch” + = +$di¥©ch” +; + +77 +$this +-> +ÝtiÚs + = +$ÝtiÚs +; + +79 ià( + `is£t +( +$this +-> +ÝtiÚs +['level'])) + +81 +$this +-> + `£tLogLev– +($this-> +ÝtiÚs +['level']); + +84 +$di¥©ch” +-> + `cÚÃù +('­¶iÿtiÚ.log', + `¬¿y +( +$this +, 'listenToLogEvent')); + +85 + } +} + +90 +public + +funùiÚ + + $g‘O±iÚs +() + +92  +$this +-> +ÝtiÚs +; + +93 + } +} + +98 +public + +funùiÚ + + $£tO±iÚ +( +$Çme +, +$v®ue +) + +100 +$this +-> +ÝtiÚs +[ +$Çme +] = +$v®ue +; + +101 + } +} + +108 +public + +funùiÚ + + $g‘LogLev– +() + +110  +$this +-> +Ëv– +; + +111 + } +} + +118 +public + +funùiÚ + + $£tLogLev– +( +$Ëv– +) + +120 ià(! + `is_št +( +$Ëv– +)) + +122 +$Ëv– + = + `cÚ¡ªt +('sfLogg”::'. + `¡¹ouµ” +($level)); + +125 +$this +-> +Ëv– + = +$Ëv– +; + +126 + } +} + +134 +public + +funùiÚ + +log +( +$mes§ge +, +$´iܙy + = +£lf +:: +INFO +) + +136 ià( +$this +-> +g‘LogLev– +(è< +$´iܙy +) + +138  +çl£ +; + +141  + g$this +-> +doLog +( +$mes§ge +, +$´iܙy +); + +150 +ab¡¿ù + +´Ùeùed + +funùiÚ + +doLog +( +$mes§ge +, +$´iܙy +); + +157 +public + +funùiÚ + + $em”g +( +$mes§ge +) + +159 +$this +-> + `log +( +$mes§ge +, +£lf +:: +EMERG +); + +160 + } +} + +167 +public + +funùiÚ + + $®”t +( +$mes§ge +) + +169 +$this +-> + `log +( +$mes§ge +, +£lf +:: +ALERT +); + +170 + } +} + +177 +public + +funùiÚ + + $ü™ +( +$mes§ge +) + +179 +$this +-> + `log +( +$mes§ge +, +£lf +:: +CRIT +); + +180 + } +} + +187 +public + +funùiÚ + + $”r +( +$mes§ge +) + +189 +$this +-> + `log +( +$mes§ge +, +£lf +:: +ERR +); + +190 + } +} + +197 +public + +funùiÚ + + $w¬nšg +( +$mes§ge +) + +199 +$this +-> + `log +( +$mes§ge +, +£lf +:: +WARNING +); + +200 + } +} + +207 +public + +funùiÚ + + $nÙiû +( +$mes§ge +) + +209 +$this +-> + `log +( +$mes§ge +, +£lf +:: +NOTICE +); + +210 + } +} + +217 +public + +funùiÚ + + $šfo +( +$mes§ge +) + +219 +$this +-> + `log +( +$mes§ge +, +£lf +:: +INFO +); + +220 + } +} + +227 +public + +funùiÚ + + $debug +( +$mes§ge +) + +229 +$this +-> + `log +( +$mes§ge +, +£lf +:: +DEBUG +); + +230 + } +} + +237 +public + +funùiÚ + + $li¡’ToLogEv’t +( +sfEv’t + +$ev’t +) + +239 +$´iܙy + = + `is£t +( +$ev’t +['´iܙy']è? $ev’t['´iܙy'] : +£lf +:: +INFO +; + +241 +$subjeù + = +$ev’t +-> + `g‘Subjeù +(); + +242 +$subjeù + = + `is_objeù +($subjeùè? + `g‘_þass +($subjeùè: ( + `is_¡ršg +($subject) ? $subject : 'main'); + +243 + `fܗch + ( +$ev’t +-> + `g‘P¬am‘”s +(è +as + +$key + => +$mes§ge +) + +245 ià('´iܙy' ==ð +$key +) + +250 +$this +-> + `log +( + `¥rštf +('{%s} %s', +$subjeù +, +$mes§ge +), +$´iܙy +); + +252 + } +} + +259 +public + +funùiÚ + + $shutdown +() + +261 + } +} + +272  +public + +funùiÚ + + $g‘PriܙyName +( +$´iܙy +) + +274  +$Ëv–s + = + `¬¿y +( + +275 +£lf +:: +EMERG + => 'emerg', + +276 +£lf +:: +ALERT + => 'alert', + +277 +£lf +:: +CRIT + => 'crit', + +278 +£lf +:: +ERR + => 'err', + +279 +£lf +:: +WARNING + => 'warning', + +280 +£lf +:: +NOTICE + => 'notice', + +281 +£lf +:: +INFO + => 'info', + +282 +£lf +:: +DEBUG + => 'debug', + +285 ià(! + `is£t +( +$Ëv–s +[ +$´iܙy +])) + +287 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('Th´iܙy†ev– "%s" dÛ nكxi¡.', +$´iܙy +)); + +290  +$Ëv–s +[ +$´iܙy +]; + +291 + } +} + + @lib/vendor/symfony/lib/log/sfLoggerInterface.class.php + +1 +logg” + = +$logg” +; + +40 +´Ùeùed + +funùiÚ + + $doLog +( +$mes§ge +, +$´iܙy +) + +42 +$this +-> +logg” +-> + `log +( +$mes§ge +, +$´iܙy +); + +43 + } +} + + @lib/vendor/symfony/lib/log/sfNoLogger.class.php + +1 +¡»am + = +$ÝtiÚs +['stream']; + +52  +·»Á +:: + `š™Ÿlize +( +$di¥©ch” +, +$ÝtiÚs +); + +60 +public + +funùiÚ + + $£tSŒ—m +( +$¡»am +) + +62 +$this +-> +¡»am + = +$¡»am +; + +63 + } +} + +71 +´Ùeùed + +funùiÚ + + $doLog +( +$mes§ge +, +$´iܙy +) + +73 + `fwr™e +( +$this +-> +¡»am +, +$mes§ge +. +PHP_EOL +); + +74 + `æush +(); + +75 + } +} + + @lib/vendor/symfony/lib/log/sfVarLogger.class.php + +1 +xdebugLoggšg + = + `is£t +( +$ÝtiÚs +['xdebug_loggšg']è? $ÝtiÚs['xdebug_loggšg'] : +çl£ +; + +42 ià( + `is£t +( +$_GET +['XDEBUG_SESSION_START']è|| is£t( +$_COOKIE +['XDEBUG_SESSION'])) + +44 +$this +-> +xdebugLoggšg + = +çl£ +; + +47  +·»Á +:: + `š™Ÿlize +( +$di¥©ch” +, +$ÝtiÚs +); + +63 +public + +funùiÚ + + $g‘Logs +() + +65  +$this +-> +logs +; + +66 + } +} + +73 +public + +funùiÚ + + $g‘Ty³s +() + +75 +$ty³s + = + `¬¿y +(); + +76 + `fܗch + ( +$this +-> +logs + +as + +$log +) + +78 ià(! + `š_¬¿y +( +$log +['ty³'], +$ty³s +)) + +80 +$ty³s +[] = +$log +['type']; + +84 + `sÜt +( +$ty³s +); + +86  +$ty³s +; + +87 + } +} + +94 +public + +funùiÚ + + $g‘Priܙ›s +() + +96 +$´iܙ›s + = + `¬¿y +(); + +97 + `fܗch + ( +$this +-> +logs + +as + +$log +) + +99 ià(! + `š_¬¿y +( +$log +['´iܙy'], +$´iܙ›s +)) + +101 +$´iܙ›s +[] = +$log +['priority']; + +105 + `sÜt +( +$´iܙ›s +); + +107  +$´iܙ›s +; + +108 + } +} + +115 +public + +funùiÚ + + $g‘Highe¡Priܙy +() + +117 +$´iܙy + = 1000; + +118 + `fܗch + ( +$this +-> +logs + +as + +$log +) + +120 ià( +$log +['´iܙy'] < +$´iܙy +) + +122 +$´iܙy + = +$log +['priority']; + +126  +$´iܙy +; + +127 + } +} + +135 +´Ùeùed + +funùiÚ + + $doLog +( +$mes§ge +, +$´iܙy +) + +138 +$ty³ + = 'sfOther'; + +139 ià( + `´eg_m©ch +('/^\s*{([^}]+)}\s*(.+?)$/s', +$mes§ge +, +$m©ches +)) + +141 +$ty³ + = +$m©ches +[1]; + +142 +$mes§ge + = +$m©ches +[2]; + +145 +$this +-> +logs +[] = + `¬¿y +( + +146 '´iܙy' => +$´iܙy +, + +147 '´iܙy_Çme' => +$this +-> + `g‘PriܙyName +( +$´iܙy +), + +148 'time' => + `time +(), + +149 'mes§ge' => +$mes§ge +, + +150 'ty³' => +$ty³ +, + +151 'debug_backŒaû' => +$this +-> + `g‘DebugBackŒaû +(), + +153 + } +} + +162 +´Ùeùed + +funùiÚ + + $g‘DebugBackŒaû +() + +165 ià(! +$this +-> +xdebugLoggšg + || ! + `funùiÚ_exi¡s +('debug_backtrace')) + +167  + `¬¿y +(); + +170 +$Œaûs + = + `debug_backŒaû +(); + +173 + `fܗch + ( +$Œaûs + +as + +$i + => +$Œaû +) + +175 +$þass + = + `is£t +( +$Œaû +['þass']è? $Œaû['þass'] : + `sub¡r +( +$fže + = + `ba£Çme +($Œaû['fže']), 0, + `¡½os +($file, '.')); + +178 ! + `þass_exi¡s +( +$þass +) + +180 (! + `š_¬¿y +( +$þass +, + `¬¿y +('sfLogg”', 'sfEv’tDi¥©ch”')è&& ! + `is_subþass_of +($class, 'sfLogger') && !is_subclass_of($class, 'sfEventDispatcher')) + +183 +$Œaûs + = + `¬¿y_¦iû +($Œaûs, +$i +); + +188  +$Œaûs +; + +189 + } +} + + @lib/vendor/symfony/lib/log/sfWebDebugLogger.class.php + +1 +cڋxt + = +sfCڋxt +:: + `g‘In¡ªû +(); + +44 +$this +-> +webDebugCÏss + = + `is£t +( +$ÝtiÚs +['web_debug_class']) ? $options['web_debug_class'] : 'sfWebDebug'; + +46 ià( +sfCÚfig +:: + `g‘ +('sf_web_debug')) + +48 +$di¥©ch” +-> + `cÚÃù +('cڋxt.lßd_çùܛs', + `¬¿y +( +$this +, 'listenForLoadFactories')); + +49 +$di¥©ch” +-> + `cÚÃù +('»¥Ú£.fž‹r_cڋÁ', + `¬¿y +( +$this +, 'filterResponseContent')); + +52 +$this +-> + `»gi¡”E¼ÜHªdËr +(); + +54  +·»Á +:: + `š™Ÿlize +( +$di¥©ch” +, +$ÝtiÚs +); + +60 +´Ùeùed + +funùiÚ + + $»gi¡”E¼ÜHªdËr +() + +62 + `£t_”rÜ_hªdËr +( + `¬¿y +( +$this +,'handlePhpError')); + +63 + } +} + +78 +public + +funùiÚ + +hªdËPhpE¼Ü +( +$”ºo +, +$”r¡r +, +$”rfže +, +$”¾še +, +$”rcڋxt + = + $¬¿y +()) + +80 ià(( +$”ºo + & + `”rÜ_»pÜtšg +()) == 0) + +82  +çl£ +; + +85 +$mes§ge + = + `¥rštf +(' %% © % Ú†š% (%s)', +$”rfže +, +$”¾še +, + `¡r_»¶aû +('%', '%%', +$”r¡r +)); + +86  +$”ºo +) + +88  +E_STRICT +: + +89 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, '­¶iÿtiÚ.log', + `¬¿y +('´iܙy' => +sfLogg” +:: +ERR +, + `¥rštf +( +$mes§ge +, 'Strict‚otice')))); + +91  +E_NOTICE +: + +92 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, '­¶iÿtiÚ.log', + `¬¿y +('´iܙy' => +sfLogg” +:: +NOTICE +, + `¥rštf +( +$mes§ge +, 'Notice')))); + +94  +E_WARNING +: + +95 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, '­¶iÿtiÚ.log', + `¬¿y +('´iܙy' => +sfLogg” +:: +WARNING +, + `¥rštf +( +$mes§ge +, 'Warning')))); + +97  +E_RECOVERABLE_ERROR +: + +98 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, '­¶iÿtiÚ.log', + `¬¿y +('´iܙy' => +sfLogg” +:: +ERR +, + `¥rštf +( +$mes§ge +, 'Error')))); + +102  +çl£ +; + +103 + } +} + +110 +public + +funùiÚ + + $li¡’FÜLßdFaùܛs +( +sfEv’t + +$ev’t +) + +112 +$·th + = + `¥rštf +('%s/%s/images', +$ev’t +-> + `g‘Subjeù +()-> + `g‘Reque¡ +()-> + `g‘R–©iveU¾RoÙ +(), +sfCÚfig +:: + `g‘ +('sf_web_debug_web_dir')); + +113 +$·th + = + `¡r_»¶aû +('//', '/', $path); + +115 +$this +-> +webDebug + = +Ãw + $this-> + `webDebugCÏss +($this-> +di¥©ch” +, $this, + `¬¿y +( + +116 'image_roÙ_·th' => +$·th +, + +117 '»que¡_·¿m‘”s' => +$ev’t +-> + `g‘Subjeù +()-> + `g‘Reque¡ +()-> + `g‘P¬am‘”HÞd” +()-> + `g‘AÎ +(), + +119 + } +} + +129 +public + +funùiÚ + + $fž‹rRe¥Ú£CڋÁ +( +sfEv’t + +$ev’t +, +$cڋÁ +) + +131 ià(! +sfCÚfig +:: + `g‘ +('sf_web_debug')) + +133  +$cڋÁ +; + +137 +$mes§ges + = + `¬¿y +(); + +138 + `fܗch + ( +sfTim”Mªag” +:: + `g‘Tim”s +(è +as + +$Çme + => +$tim” +) + +140 +$mes§ges +[] = + `¥rštf +('% %.2àm (%d)', +$Çme +, +$tim” +-> + `g‘EÏp£dTime +(è* 1000, $tim”-> + `g‘C®ls +()); + +142 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, '­¶iÿtiÚ.log', +$mes§ges +)); + +149 +$»¥Ú£ + = +$ev’t +-> + `g‘Subjeù +(); + +150 +$»que¡ + = +$this +-> +cڋxt +-> + `g‘Reque¡ +(); + +152 +nuÎ + ==ð +$this +-> +webDebug + + +154 ! +$this +-> +cڋxt +-> + `has +('request') + +156 ! +$this +-> +cڋxt +-> + `has +('response') + +158 ! +$this +-> +cڋxt +-> + `has +('controller') + +160 +$»que¡ +-> + `isXmlH‰pReque¡ +() + +162 + `¡½os +( +$»¥Ú£ +-> + `g‘CڋÁTy³ +(), 'html'è==ð +çl£ + + +164 '3' =ð + `sub¡r +( +$»¥Ú£ +-> + `g‘StusCode +(), 0, 1) + +166 +$this +-> +cڋxt +-> + `g‘CڌÞËr +()-> + `g‘R’d”Mode +(è!ð +sfV›w +:: +RENDER_CLIENT + + +168 +$»¥Ú£ +-> + `isH—d”OÆy +() + +171  +$cڋÁ +; + +174  +$this +-> +webDebug +-> + `šjeùToÞb¬ +( +$cڋÁ +); + +175 + } +} + + @lib/vendor/symfony/lib/mailer/sfMailer.class.php + +1 +çl£ +, + +63 'Œª¥Üt' => + `¬¿y +( + +65 '·¿m' => + `¬¿y +(), + +67 ), +$ÝtiÚs +); + +69 +$cÚ¡ªtName + = 'sfMaž”::'. + `¡¹ouµ” +( +$ÝtiÚs +['delivery_strategy']); + +70 +$this +-> +¡¿‹gy + = + `defšed +( +$cÚ¡ªtName +è? + `cÚ¡ªt +($cÚ¡ªtNameè: +çl£ +; + +71 ià(! +$this +-> +¡¿‹gy +) + +73 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('UnknowÀmaž d–iv”y sŒ©egy "%s" (should bÚoà»®time, spoÞ, sšgË_add»ss, o¸nÚe)', +$ÝtiÚs +['delivery_strategy'])); + +77 +$þass + = +$ÝtiÚs +['transport']['class']; + +78 +$Œª¥Üt + = +Ãw + + `$þass +(); + +79 ià( + `is£t +( +$ÝtiÚs +['transport']['param'])) + +81 + `fܗch + ( +$ÝtiÚs +['Œª¥Üt']['·¿m'] +as + +$key + => +$v®ue +) + +83 +$m‘hod + = '£t'. + `ucfœ¡ +( +$key +); + +84 ià( + `m‘hod_exi¡s +( +$Œª¥Üt +, +$m‘hod +)) + +86 +$Œª¥Üt +-> + `$m‘hod +( +$v®ue +); + +88 + `–£if + ( + `m‘hod_exi¡s +( +$Œª¥Üt +, 'getExtensionHandlers')) + +90 + `fܗch + ( +$Œª¥Üt +-> + `g‘Ex‹nsiÚHªdËrs +(è +as + +$hªdËr +) + +92 ià( + `š_¬¿y +( + `¡¹Þow” +( +$m‘hod +), + `¬¿y_m­ +('¡¹Þow”', ( +¬¿y +è +$hªdËr +-> + `expo£MixšM‘hods +()))) + +94 +$Œª¥Üt +-> + `$m‘hod +( +$v®ue +); + +100 +$this +-> +»®timeT¿n¥Üt + = +$Œª¥Üt +; + +102 ià( +sfMaž” +:: +SPOOL + =ð +$this +-> +¡¿‹gy +) + +104 ià(! + `is£t +( +$ÝtiÚs +['spool_class'])) + +106 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +('Forhe spool mail delivery strategy, you must‡lso define‡ spool_class option'); + +108 +$¬gum’ts + = + `is£t +( +$ÝtiÚs +['¥oÞ_¬gum’ts']è? $ÝtiÚs['¥oÞ_¬gum’ts'] : + `¬¿y +(); + +110 ià( +$¬gum’ts +) + +112 +$r + = +Ãw + + `ReæeùiÚCÏss +( +$ÝtiÚs +['spool_class']); + +113 +$this +-> +¥oÞ + = +$r +-> + `ÃwIn¡ªûArgs +( +$¬gum’ts +); + +117 +$this +-> +¥oÞ + = +Ãw + +$ÝtiÚs +['spool_class']; + +120 +$Œª¥Üt + = +Ãw + + `Swiá_SpoÞT¿n¥Üt +( +$this +-> +¥oÞ +); + +122 + `–£if + ( +sfMaž” +:: +SINGLE_ADDRESS + =ð +$this +-> +¡¿‹gy +) + +124 ià(! + `is£t +( +$ÝtiÚs +['delivery_address'])) + +126 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +('Forhe single_address mail delivery strategy, you must‡lso define‡ delivery_address option'); + +129 +$this +-> +add»ss + = +$ÝtiÚs +['delivery_address']; + +131 +$Œª¥Üt +-> + `»gi¡”Plugš +( +$this +-> +»dœeùšgPlugš + = +Ãw + + `Swiá_Plugšs_RedœeùšgPlugš +($this-> +add»ss +)); + +134 +·»Á +:: + `__cÚ¡ruù +( +$Œª¥Üt +); + +137 ià( +$ÝtiÚs +['logging']) + +139 +$this +-> +logg” + = +Ãw + + `sfMaž”Mes§geLogg”Plugš +( +$di¥©ch” +); + +141 +$Œª¥Üt +-> + `»gi¡”Plugš +( +$this +-> +logg” +); + +144 ià( +sfMaž” +:: +NONE + =ð +$this +-> +¡¿‹gy +) + +147 +$Œª¥Üt +-> + `»gi¡”Plugš +( +Ãw + + `Swiá_Plugšs_BÏckhÞePlugš +()); + +151 +Swiá_P»ã»nûs +:: + `g‘In¡ªû +()-> + `£tCh¬£t +( +$ÝtiÚs +['charset']); + +153 +$di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +( +$this +, 'mailer.configure')); + +161 +public + +funùiÚ + + $g‘R—ÉimeT¿n¥Üt +() + +163  +$this +-> +»®timeT¿n¥Üt +; + +164 + } +} + +171 +public + +funùiÚ + + $£tR—ÉimeT¿n¥Üt +( +Swiá_T¿n¥Üt + +$Œª¥Üt +) + +173 +$this +-> +»®timeT¿n¥Üt + = +$Œª¥Üt +; + +174 + } +} + +181 +public + +funùiÚ + + $g‘Logg” +() + +183  +$this +-> +logg” +; + +184 + } +} + +191 +public + +funùiÚ + + $£tLogg” +( +$logg” +) + +193 +$this +-> +logg” + = +$logg” +; + +194 + } +} + +201 +public + +funùiÚ + + $g‘D–iv”ySŒ©egy +() + +203  +$this +-> +¡¿‹gy +; + +204 + } +} + +211 +public + +funùiÚ + + $g‘D–iv”yAdd»ss +() + +213  +$this +-> +add»ss +; + +214 + } +} + +221 +public + +funùiÚ + + $£tD–iv”yAdd»ss +( +$add»ss +) + +223 +$this +-> +add»ss + = +$add»ss +; + +225 ià( +sfMaž” +:: +SINGLE_ADDRESS + =ð +$this +-> +¡¿‹gy +) + +227 +$this +-> +»dœeùšgPlugš +-> + `£tRec›Á +( +$add»ss +); + +229 + } +} + +241 +public + +funùiÚ + + $compo£ +( +$äom + = +nuÎ +, +$to + =‚uÎ, +$subjeù + =‚uÎ, +$body + =‚ull) + +243  +Swiá_Mes§ge +:: + `ÃwIn¡ªû +() + +244 -> + `£tFrom +( +$äom +) + +245 -> + `£tTo +( +$to +) + +246 -> + `£tSubjeù +( +$subjeù +) + +247 -> + `£tBody +( +$body +) + +249 + } +} + +261 +public + +funùiÚ + + $compo£AndS’d +( +$äom +, +$to +, +$subjeù +, +$body +) + +263  +$this +-> + `£nd +($this-> + `compo£ +( +$äom +, +$to +, +$subjeù +, +$body +)); + +264 + } +} + +271 +public + +funùiÚ + + $£ndNextImmedŸ‹ly +() + +273 +$this +-> +fÜû + = +Œue +; + +275  +$this +; + +276 + } +} + +286 +public + +funùiÚ + + $£nd +( +Swiá_Mime_Mes§ge + +$mes§ge +, & +$çžedRec›Ás + = +nuÎ +) + +288 ià( +$this +-> +fÜû +) + +290 +$this +-> +fÜû + = +çl£ +; + +292 ià(! +$this +-> +»®timeT¿n¥Üt +-> + `isS¹ed +()) + +294 +$this +-> +»®timeT¿n¥Üt +-> + `¡¬t +(); + +297  +$this +-> +»®timeT¿n¥Üt +-> + `£nd +( +$mes§ge +, +$çžedRec›Ás +); + +300  +·»Á +:: + `£nd +( +$mes§ge +, +$çžedRec›Ás +); + +301 + } +} + +312 +public + +funùiÚ + + $æushQueue +(& +$çžedRec›Ás + = +nuÎ +) + +314  +$this +-> + `g‘SpoÞ +()-> + `æushQueue +($this-> +»®timeT¿n¥Üt +, +$çžedRec›Ás +); + +315 + } +} + +317 +public + +funùiÚ + + $g‘SpoÞ +() + +319 ià( +£lf +:: +SPOOL + !ð +$this +-> +¡¿‹gy +) + +321 +throw + +Ãw + + `LogicExû±iÚ +( + `¥rštf +('You cª oÆy s’d mes§ge šh¥oÞ iàthd–iv”y sŒ©egy i "¥oÞ" (% i thcu¼’ˆ¡¿‹gy).', +$this +-> +¡¿‹gy +)); + +324  +$this +-> +¥oÞ +; + +325 + } +} + +327  +public + +funùiÚ + + $š™Ÿlize +() + +329 +»quœe_Úû + +sfCÚfig +:: + `g‘ +('sf_symfony_lib_dir').'/vendor/swiftmailer/swift_init.php'; + +330 + } +} + + @lib/vendor/symfony/lib/mailer/sfMailerMessageLoggerPlugin.class.php + +1 +di¥©ch” + = +$di¥©ch” +; + +38 +public + +funùiÚ + + $þ—r +() + +40 +$this +-> +mes§ges + = + `¬¿y +(); + +41 + } +} + +48 +public + +funùiÚ + + $g‘Mes§ges +() + +50  +$this +-> +mes§ges +; + +51 + } +} + +58 +public + +funùiÚ + + $couÁMes§ges +() + +60  + `couÁ +( +$this +-> +mes§ges +); + +61 + } +} + +68 +public + +funùiÚ + + $befÜeS’dP”fÜmed +( +Swiá_Ev’ts_S’dEv’t + +$evt +) + +70 +$this +-> +mes§ges +[] = +$mes§ge + = +þÚe + +$evt +-> + `g‘Mes§ge +(); + +72 +$to + = +nuÎ + ==ð +$mes§ge +-> + `g‘To +(è? '' : + `im¶ode +(', ', + `¬¿y_keys +($message->getTo())); + +74 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, '­¶iÿtiÚ.log', + `¬¿y +( + `¥rštf +('S’dšgƒmaž "%s"Ø"%s"', +$mes§ge +-> + `g‘Subjeù +(), +$to +)))); + +75 + } +} + +82 +public + +funùiÚ + + $£ndP”fÜmed +( +Swiá_Ev’ts_S’dEv’t + +$evt +) + +84 + } +} + + @lib/vendor/symfony/lib/plugin/sfPearConfig.class.php + +1 + `š™Ÿlize +( +$di¥©ch” +, +$ÝtiÚs +); + +67 +public + +funùiÚ + + `š™Ÿlize +( +sfEv’tDi¥©ch” + +$di¥©ch” +, +$ÝtiÚs + = + $¬¿y +()) + +69 +$this +-> +di¥©ch” + = +$di¥©ch” +; + +72 ià(! + `is£t +( +$ÝtiÚs +['plugin_dir'])) + +74 +throw + +Ãw + + `sfCÚfigu¿tiÚExû±iÚ +('You must…rovide‡ "plugin_dir" option.'); + +77 ià(! + `is£t +( +$ÝtiÚs +['cache_dir'])) + +79 +throw + +Ãw + + `sfCÚfigu¿tiÚExû±iÚ +('You must…rovide‡ "cache_dir" option.'); + +82 ià(! + `is_dœ +( +$ÝtiÚs +['cache_dir'])) + +84 + `mkdœ +( +$ÝtiÚs +['ÿche_dœ'], 0777, +Œue +); + +87 ià(! + `is£t +( +$ÝtiÚs +['rest_base_class'])) + +89 +$ÝtiÚs +['rest_base_class'] = 'sfPearRest'; + +92 ià(! + `is£t +( +$ÝtiÚs +['downloader_base_class'])) + +94 +$ÝtiÚs +['downloader_base_class'] = 'sfPearDownloader'; + +97 +$this +-> +ÝtiÚs + = +$ÝtiÚs +; + +100 +$this +-> + `š™ŸlizeCÚfigu¿tiÚ +( +$ÝtiÚs +['plugin_dir'], $options['cache_dir']); + +101 +$this +-> + `š™ŸlizeRegi¡ry +(); + +102 +$this +-> + `š™ŸlizeFrڋnd +(); + +105 +$this +-> +»¡ + = +Ãw + + `sfP—rRe¡Plugš +($this-> +cÚfig +, + `¬¿y +('ba£_þass' => +$ÝtiÚs +['rest_base_class'])); + +106 +$this +-> +»¡ +-> + `£tChªÃl +($this-> +cÚfig +-> + `g‘ +('default_channel')); + +107 + } +} + +116 +public + +funùiÚ + + $g‘O±iÚ +( +$Çme +) + +118  + `is£t +( +$this +-> +ÝtiÚs +[ +$Çme +]è? $this->ÝtiÚs[$Çme] : +nuÎ +; + +119 + } +} + +128 +public + +funùiÚ + + $hasO±iÚ +( +$Çme +) + +130  + `is£t +( +$this +-> +ÝtiÚs +[ +$Çme +]); + +131 + } +} + +139 +public + +funùiÚ + + $£tO±iÚ +( +$Çme +, +$v®ue +) + +141 +$this +-> +ÝtiÚs +[ +$Çme +] = +$v®ue +; + +142 + } +} + +149 +public + +funùiÚ + + $g‘Re¡ +() + +151  +$this +-> +»¡ +; + +152 + } +} + +159 +public + +funùiÚ + + $g‘CÚfig +() + +161  +$this +-> +cÚfig +; + +162 + } +} + +169 +public + +funùiÚ + + $g‘Frڋnd +() + +171  +$this +-> +äڋnd +; + +172 + } +} + +179 +public + +funùiÚ + + $g‘Regi¡ry +() + +181  +$this +-> +»gi¡ry +; + +182 + } +} + +190 +public + +funùiÚ + + $»gi¡”ChªÃl +( +$chªÃl +, +$isDeçuÉ + = +çl£ +) + +192 +$this +-> +cÚfig +-> + `£t +('auto_discov”', +Œue +); + +194 ià(! +$this +-> +»gi¡ry +-> + `chªÃlExi¡s +( +$chªÃl +, +Œue +)) + +196 +$þass + = +$this +-> +ÝtiÚs +['downloader_base_class']; + +197 +$dowÆßd” + = +Ãw + + `$þass +( +$this +-> +äڋnd +, + `¬¿y +(), $this-> +cÚfig +); + +198 ià(! +$dowÆßd” +-> + `discov” +( +$chªÃl +)) + +200 +throw + +Ãw + + `sfPlugšExû±iÚ +( + `¥rštf +('UÇbˁػgi¡” chªÃÈ"%s"', +$chªÃl +)); + +204 ià( +$isDeçuÉ +) + +206 +$this +-> +cÚfig +-> + `£t +('deçuÉ_chªÃl', +$chªÃl +); + +207 +$this +-> +»¡ +-> + `£tChªÃl +( +$chªÃl +); + +209 + } +} + +214 +´Ùeùed + +funùiÚ + + $š™ŸlizeFrڋnd +() + +216 +$this +-> +äڋnd + = +PEAR_Frڋnd +:: + `sšgËtÚ +('sfPearFrontendPlugin'); + +217 ià( +PEAR +:: + `isE¼Ü +( +$this +-> +äڋnd +)) + +219 +throw + +Ãw + + `sfPlugšExû±iÚ +( + `¥rštf +('UÇbˁؚ™ŸlizPEAR Frڋnd objeù: %s', +$this +-> +äڋnd +-> + `g‘Mes§ge +())); + +222 +$this +-> +äڋnd +-> + `£tEv’tDi¥©ch” +($this-> +di¥©ch” +); + +223 + } +} + +228 +´Ùeùed + +funùiÚ + + $š™ŸlizeRegi¡ry +() + +230 +$this +-> +»gi¡ry + = $this-> +cÚfig +-> + `g‘Regi¡ry +(); + +231 ià( +PEAR +:: + `isE¼Ü +( +$this +-> +»gi¡ry +)) + +233 +throw + +Ãw + + `sfPlugšExû±iÚ +( + `¥rštf +('UÇbˁؚ™ŸlizPEAR„egi¡ry: %s', +$this +-> +»gi¡ry +-> + `g‘Mes§ge +())); + +235 + } +} + +243 +public + +funùiÚ + + $š™ŸlizeCÚfigu¿tiÚ +( +$¶ugšDœ +, +$ÿcheDœ +) + +245 +$this +-> +cÚfig + = +$GLOBALS +['_PEAR_CÚfig_š¡ªû'] = +Ãw + + `sfP—rCÚfig +(); + +248 +$this +-> +cÚfig +-> + `£t +('php_dœ', +$¶ugšDœ +); + +249 +$this +-> +cÚfig +-> + `£t +('d©a_dœ', +$¶ugšDœ +); + +250 +$this +-> +cÚfig +-> + `£t +('‹¡_dœ', +$¶ugšDœ +); + +251 +$this +-> +cÚfig +-> + `£t +('doc_dœ', +$¶ugšDœ +); + +252 +$this +-> +cÚfig +-> + `£t +('bš_dœ', +$¶ugšDœ +); + +254 if( +$this +-> + `hasO±iÚ +('preferred_state')) + +256 +$this +-> +cÚfig +-> + `£t +('´eã¼ed_¡©e', $this-> + `g‘O±iÚ +('preferred_state')); + +260 +$this +-> +cÚfig +-> + `£t +('ÿche_dœ', +$ÿcheDœ +); + +261 +$this +-> +cÚfig +-> + `£t +('dowÆßd_dœ', +$ÿcheDœ +); + +262 +$this +-> +cÚfig +-> + `£t +('‹mp_dœ', +$ÿcheDœ +); + +264 +$this +-> +cÚfig +-> + `£t +('verbose', 1); + +265 + } +} + + @lib/vendor/symfony/lib/plugin/sfPearFrontendPlugin.class.php + +1 +di¥©ch” + = +$di¥©ch” +; + +37 +public + +funùiÚ + + $_di¥ÏyLše +( +$‹xt +) + +39 +$this +-> + `_di¥Ïy +( +$‹xt +); + +40 + } +} + +42 +public + +funùiÚ + + $_di¥Ïy +( +$‹xt +) + +44 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, '­¶iÿtiÚ.log', $this-> + `¥l™LÚgLše +( +$‹xt +))); + +45 + } +} + +47 +´Ùeùed + +funùiÚ + + $¥l™LÚgLše +( +$‹xt +) + +49 +$lšes + = ''; + +50 + `fܗch + ( + `ex¶ode +("\n", +$‹xt +è +as + +$lÚglše +) + +52 + `fܗch + ( + `ex¶ode +("\n", + `wÜdw¿p +( +$lÚglše +, 62)è +as + +$lše +) + +54 ià( +$lše + = + `Œim +($line)) + +56 +$lšes +[] = +$lše +; + +61  +$lšes +; + +62 + } +} + + @lib/vendor/symfony/lib/plugin/sfPearRest.class.php + +1 +_»¡ + = +Ãw + + `$þass +( +$cÚfig +, +$ÝtiÚs +); + +32 + } +} + + @lib/vendor/symfony/lib/plugin/sfPearRest11.class.php + +1 +_»¡ + = +Ãw + + `$þass +( +$cÚfig +, +$ÝtiÚs +); + +32 + } +} + + @lib/vendor/symfony/lib/plugin/sfPearRestPlugin.class.php + +1 +cÚfig + = +$cÚfig +; + +38 +$this +-> +»¡10 + = +Ãw + + `sfP—rRe¡10 +( +$cÚfig +, +$ÝtiÚs +); + +46 +public + +funùiÚ + + $£tChªÃl +( +$chªÃl +) + +48 +$this +-> +chªÃl + = +$chªÃl +; + +49 +$this +-> +»¡Ba£ + = $this-> + `g‘RESTBa£ +( +$chªÃl +); + +50 + } +} + +57 +´Ùeùed + +funùiÚ + + $g‘RESTBa£ +( +$chªÃlName +) + +59 +$chªÃl + = +$this +-> +cÚfig +-> + `g‘Regi¡ry +()-> + `g‘ChªÃl +( +$chªÃlName +); + +60 ià( +PEAR +:: + `isE¼Ü +( +$chªÃl +)) + +62 +throw + +Ãw + + `sfPlugšExû±iÚ +( + `¥rštf +('UÇbˁؚ™ŸlizchªÃÈ"%s"', +$chªÃl +-> + `g‘Mes§ge +())); + +65 +$mœrÜ + = +$this +-> +cÚfig +-> + `g‘ +('´eã¼ed_mœrÜ', +nuÎ +, +$chªÃlName +); + +67 ià(! +$chªÃl +-> + `suµÜtsREST +( +$mœrÜ +)) + +69 +throw + +Ãw + + `sfPlugšRe¡Exû±iÚ +( + `¥rštf +('ThchªÃÈ"%s" dÛ nÙ suµÜˆthREST…rÙocÞ', +$chªÃlName +)); + +72  +$chªÃl +-> + `g‘Ba£URL +('REST1.1', +$mœrÜ +); + +73 + } +} + +83 +public + +funùiÚ + + $g‘PlugšLiûn£ +( +$¶ugš +, +$v”siÚ +) + +85 +$šfo + = +$this +-> + `·ckageInfo +($this-> +»¡Ba£ +, +$¶ugš +); + +87 ià( +PEAR +:: + `isE¼Ü +( +$šfo +)) + +89 +throw + +Ãw + + `sfPlugšRe¡Exû±iÚ +( + `¥rštf +('UÇbˁØg‘…lugš†iûnû infÜm©iÚ f܅lugš "%s": %s', +$¶ugš +, +$šfo +-> + `g‘Mes§ge +())); + +92 ià( +nuÎ + ==ð +$šfo +) + +95  +nuÎ +; + +98 ià(! + `is£t +( +$šfo +['liûn£']è|| +nuÎ + === $info['license']) + +100 +throw + +Ãw + + `Exû±iÚ +('No†icense found forhis…lugin!'); + +103  +$šfo +['»Ëa£s'][ +$v”siÚ +]['license']; + +104 + } +} + +114 +public + +funùiÚ + + $g‘PlugšV”siÚs +( +$¶ugš +, +$¡abž™y + = +nuÎ +) + +116 +$®Ì–—£s + = +$this +-> +_»¡ +-> + `»Œ›veD©a +($this-> +»¡Ba£ +.'r/'. + `¡¹Þow” +( +$¶ugš +).'/allreleases.xml'); + +117 ià( +PEAR +:: + `isE¼Ü +( +$®Ì–—£s +)) + +119 +throw + +Ãw + + `sfPlugšRe¡Exû±iÚ +( + `¥rštf +('UÇbˁØg‘ infÜm©iÚ f܅lugš "%s": %s', +$¶ugš +, +$®Ì–—£s +-> + `g‘Mes§ge +())); + +122 ià(! + `is£t +( +$®Ì–—£s +['r']è|| (is£t($®Ì–—£s['r']è&& ! + `is_¬¿y +($®Ì–—£s['r']è|| ! + `couÁ +($allreleases['r']))) + +124 +throw + +Ãw + + `sfPlugšRe¡Exû±iÚ +( + `¥rštf +('NØ»Ëa£‡važabË f܅lugš "%s"', +$¶ugš +)); + +127 ià(! + `is£t +( +$®Ì–—£s +['r'][0])) + +129 +$®Ì–—£s +['r'] = + `¬¿y +($allreleases['r']); + +132 +$v”siÚs + = + `¬¿y +(); + +133 +$®lowedS‹s + = +$this +-> + `g‘AÎowedS‹s +( +$¡abž™y +); + +134 + `fܗch + ( +$®Ì–—£s +['r'] +as + +$»Ëa£ +) + +136 ià(! + `is£t +( +$®lowedS‹s +[ +$»Ëa£ +['s']])) + +141 +$v”siÚs +[] = +$»Ëa£ +['v']; + +144 ià(! + `couÁ +( +$v”siÚs +)) + +146 +throw + +Ãw + + `sfPlugšExû±iÚ +( + `¥rštf +('NØ»Ëa£‡važabË f܅lugš "%s" iÀ¡©"%s"', +$¶ugš +, +$¡abž™y +)); + +149  +$v”siÚs +; + +150 + } +} + +160 +public + +funùiÚ + + $g‘PlugšD•’d’c›s +( +$¶ugš +, +$v”siÚ +) + +162 +$d•’d’c›s + = +$this +-> +_»¡ +-> + `»Œ›veD©a +($this-> +»¡Ba£ +.'r/'. + `¡¹Þow” +( +$¶ugš +).'/d•s.'. +$v”siÚ +.'.txt'); + +163 ià( +PEAR +:: + `isE¼Ü +( +$d•’d’c›s +)) + +165 +throw + +Ãw + + `sfPlugšRe¡Exû±iÚ +( + `¥rštf +('UÇbˁØg‘ d•’d’c› šfÜm©iÚ f܅lugš "%s": %s', +$¶ugš +, +$d•’d’c›s +-> + `g‘Mes§ge +())); + +168  + `un£rŸlize +( +$d•’d’c›s +); + +169 + } +} + +180 +public + +funùiÚ + + $g‘PlugšDowÆßdURL +( +$¶ugš +, +$v”siÚ +, +$¡abž™y +) + +182 +$š¡®Ëd + = +$this +-> +cÚfig +-> + `g‘Regi¡ry +()-> + `·ckageInfo +( +$¶ugš +, 'v”siÚ', $this-> +chªÃl +); + +183 ià( +$š¡®Ëd + >ð +$v”siÚ +) + +185 +throw + +Ãw + + `sfPlugšExû±iÚ +( + `¥rštf +('Plugš "%s" v”siÚ "%s" i ®»ady in¡®Ëd (your›dØš¡®Èv”siÚ "%s")', +$¶ugš +, +$š¡®Ëd +, +$v”siÚ +)); + +188 +$šfo + = +$this +-> + `g‘DowÆßdURL +($this-> +»¡Ba£ +, + `¬¿y +('chªÃl' => $this-> +chªÃl +, '·ckage' => +$¶ugš +, 'v”siÚ' => +$v”siÚ +), +$¡abž™y +, +$š¡®Ëd +); + +189 ià( +PEAR +:: + `isE¼Ü +( +$šfo +)) + +191 +throw + +Ãw + + `sfPlugšRe¡Exû±iÚ +( + `¥rštf +('UÇbˁØg‘ dowÆßd infÜm©iÚ f܅lugš "% | % | %s": %s', +$¶ugš +, +$v”siÚ +, +$¡abž™y +, +$šfo +-> + `g‘Mes§ge +())); + +194 ià(! + `is£t +( +$šfo +['url'])) + +196 +throw + +Ãw + + `sfPlugšRe¡Exû±iÚ +( + `¥rštf +('Plugš "%s" cªnÙ bš¡®Ëd (NØURL found)', +$¶ugš +)); + +199  +$šfo +['u¾'].( + `ex‹nsiÚ_lßded +('zlib') ? '.tgz' : '.tar'); + +200 + } +} + +209 +´Ùeùed + +funùiÚ + + $g‘AÎowedS‹s +( +$¡abž™y + = +nuÎ +) + +211 +$¡abž™y + = +nuÎ + ==ð$¡abž™y ? +$this +-> +cÚfig +-> + `g‘ +('´eã¼ed_¡©e',‚uÎ, $this-> +chªÃl +) : $stability; + +213  + `¬¿y_æ +( +$this +-> + `b‘‹rS‹s +( +$¡abž™y +, +Œue +)); + +214 + } +} + +222 +public + +funùiÚ + + $__ÿÎ +( +$m‘hod +, +$¬gum’ts +) + +224 ià( + `m‘hod_exi¡s +( +$this +-> +»¡10 +, +$m‘hod +)) + +226  + `ÿÎ_u£r_func_¬¿y +( + `¬¿y +( +$this +-> +»¡10 +, +$m‘hod +), +$¬gum’ts +); + +228 + } +} + + @lib/vendor/symfony/lib/plugin/sfPluginDependencyException.class.php + +1 + `š™Ÿlize +( +$di¥©ch” +, +$’vœÚm’t +); + +45 +public + +funùiÚ + + $š™Ÿlize +( +sfEv’tDi¥©ch” + +$di¥©ch” +, +sfP—rEnvœÚm’t + +$’vœÚm’t +) + +47 +$this +-> +di¥©ch” + = +$di¥©ch” +; + +48 +$this +-> +’vœÚm’t + = +$’vœÚm’t +; + +51 +$this +-> + `cÚfigu» +(); + +52 + } +} + +57 +public + +funùiÚ + + $cÚfigu» +() + +59 + } +} + +66 +public + +funùiÚ + + $g‘EnvœÚm’t +() + +68  +$this +-> +’vœÚm’t +; + +69 + } +} + +76 +public + +funùiÚ + + $g‘In¡®ËdPlugšs +() + +78 +$š¡®Ëd + = + `¬¿y +(); + +79 + `fܗch + ( +$this +-> +’vœÚm’t +-> + `g‘Regi¡ry +()-> + `·ckageInfo +( +nuÎ +,‚uÎ,‚uÎè +as + +$chªÃl + => +$·ckages +) + +81 + `fܗch + ( +$·ckages + +as + +$·ckage +) + +83 +$š¡®Ëd +[] = +$this +-> +’vœÚm’t +-> + `g‘Regi¡ry +()-> + `g‘Package +( + `is£t +( +$·ckage +['·ckage']è? $·ckage['·ckage'] : $·ckage['Çme'], +$chªÃl +); + +87  +$š¡®Ëd +; + +88 + } +} + +108 +public + +funùiÚ + +š¡®lPlugš +( +$¶ugš +, +$ÝtiÚs + = + $¬¿y +()) + +110 +$this +-> +š¡®lšg + = + `¬¿y +(); + +112  +$this +-> + `doIn¡®lPlugš +( +$¶ugš +, +$ÝtiÚs +); + +113 + } +} + +120 +´Ùeùed + +funùiÚ + +doIn¡®lPlugš +( +$¶ugš +, +$ÝtiÚs + = + $¬¿y +()) + +122 +$chªÃl + = + `is£t +( +$ÝtiÚs +['chªÃl']è? $ÝtiÚs['chªÃl'] : +$this +-> +’vœÚm’t +-> + `g‘CÚfig +()-> + `g‘ +('default_channel'); + +123 +$¡abž™y + = + `is£t +( +$ÝtiÚs +['¡abž™y']è? $ÝtiÚs['¡abž™y'] : +$this +-> +’vœÚm’t +-> + `g‘CÚfig +()-> + `g‘ +('´eã¼ed_¡©e', +nuÎ +, +$chªÃl +); + +124 +$v”siÚ + = + `is£t +( +$ÝtiÚs +['v”siÚ']è? $ÝtiÚs['v”siÚ'] : +nuÎ +; + +126 +$isPackage + = +Œue +; + +127 ià(0 ==ð + `¡½os +( +$¶ugš +, 'h‰p://'è|| + `fže_exi¡s +($plugin)) + +129 ià(0 ==ð + `¡½os +( +$¶ugš +, 'http://plugins.symfony-project.')) + +131 +throw + +Ãw + + `sfPlugšExû±iÚ +("Youryo install‡ symfony 1.0…lugin.\nPlease„eadhe help message ofhisasko know howo install‡…lugin forhe current version of symfony."); + +134 +$dowÆßd + = +$¶ugš +; + +135 +$isPackage + = +çl£ +; + +137 ià( +çl£ + !=ð + `¡½os +( +$¶ugš +, '/')) + +139 + `li¡ +( +$chªÃl +, +$¶ugš +èð + `ex¶ode +('/', $plugin); + +142 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, '¶ugš.´e_š¡®l', + `¬¿y +('chªÃl' => +$chªÃl +, '¶ugš' => +$¶ugš +, 'is_·ckage' => +$isPackage +))); + +144 ià( +$isPackage +) + +146 +$this +-> +’vœÚm’t +-> + `g‘Re¡ +()-> + `£tChªÃl +( +$chªÃl +); + +148 ià(! + `´eg_m©ch +( +PEAR_COMMON_PACKAGE_NAME_PREG +, +$¶ugš +)) + +150 +throw + +Ãw + + `sfPlugšExû±iÚ +( + `¥rštf +('Plugš‚am"%s" i nه v®id…ackagÇme', +$¶ugš +)); + +153 ià(! +$v”siÚ +) + +155 +$v”siÚ + = +$this +-> + `g‘PlugšV”siÚ +( +$¶ugš +, +$¡abž™y +); + +159 ià(! +$this +-> + `isPlugšCom·tibË +( +$¶ugš +, +$v”siÚ +)) + +161 +throw + +Ãw + + `sfPlugšD•’d’cyExû±iÚ +( + `¥rštf +('Plugš "%s" iÀv”siÚ "%s" i nÙ com·tibË w™hhcu¼’ˆ­¶iÿtiÚ', +$¶ugš +, +$v”siÚ +)); + +165 ià(! + `´eg_m©ch +( +PEAR_COMMON_PACKAGE_VERSION_PREG +, +$v”siÚ +)) + +167 +throw + +Ãw + + `sfPlugšExû±iÚ +( + `¥rštf +('Plugš v”siÚ "%s" i nه v®id v”siÚ', +$v”siÚ +)); + +170 +$exi¡šg + = +$this +-> +’vœÚm’t +-> + `g‘Regi¡ry +()-> + `·ckageInfo +( +$¶ugš +, 'v”siÚ', +$chªÃl +); + +171 ià( + `v”siÚ_com·» +( +$exi¡šg +, +$v”siÚ +) === 0) + +173 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, '­¶iÿtiÚ.log', + `¬¿y +('Plugin is‡lready installed'))); + +175  +Œue +; + +179 ià( + `is£t +( +$this +-> +š¡®lšg +[ +$chªÃl +.'/'. +$¶ugš +])) + +181  +Œue +; + +185 +$dowÆßd + = +$this +-> +’vœÚm’t +-> + `g‘Re¡ +()-> + `g‘PlugšDowÆßdURL +( +$¶ugš +, +$v”siÚ +, +$¡abž™y +); + +186 ià( +PEAR +:: + `isE¼Ü +( +$dowÆßd +)) + +188 +throw + +Ãw + + `sfPlugšExû±iÚ +( + `¥rštf +('ProbËm dowÆßdšgh¶ugš "%s": %s', +$¶ugš +, +$dowÆßd +-> + `g‘Mes§ge +())); + +193 +$þass + = +$this +-> +’vœÚm’t +-> + `g‘O±iÚ +('downloader_base_class'); + +194 +$dowÆßd” + = +Ãw + + `$þass +( +$this +, + `¬¿y +('upg¿de' => +Œue +), $this-> +’vœÚm’t +-> + `g‘CÚfig +()); + +196 +$this +-> +š¡®lšg +[ +$chªÃl +.'/'. +$¶ugš +] = +Œue +; + +198 ià( +$isPackage +) + +200 +$this +-> + `checkPlugšD•’d’c›s +( +$¶ugš +, +$v”siÚ +, + `¬¿y +( + +201 'š¡®l_d•s' => + `is£t +( +$ÝtiÚs +['š¡®l_d•s']è? ( +boÞ +è$ÝtiÚs['š¡®l_d•s'] : +çl£ +, + +202 '¡abž™y' => +$¡abž™y +, + +207 +$dowÆßded + = +$dowÆßd” +-> + `dowÆßd +( + `¬¿y +( +$dowÆßd +)); + +208 ià( +PEAR +:: + `isE¼Ü +( +$dowÆßded +)) + +210 +throw + +Ãw + + `sfPlugšExû±iÚ +( + `¥rštf +('ProbËm wh’ dowÆßdšg "%s": %s', +$dowÆßd +, +$dowÆßded +-> + `g‘Mes§ge +())); + +212 +$”rÜs + = +$dowÆßd” +-> + `g‘E¼ÜMsgs +(); + +213 ià( + `couÁ +( +$”rÜs +)) + +215 +$”r + = + `¬¿y +(); + +216 + `fܗch + ( +$”rÜs + +as + +$”rÜ +) + +218 +$”r +[] = +$”rÜ +; + +221 ià(! + `couÁ +( +$dowÆßded +)) + +223 +throw + +Ãw + + `sfPlugšExû±iÚ +( + `¥rštf +('Plugš "%s" in¡®ÏtiÚ fažed: %s', +$¶ugš +, + `im¶ode +("\n", +$”r +))); + +227 +$¶ugšPackage + = +$dowÆßded +[0]; + +229 +$š¡®Ër + = +Ãw + + `PEAR_In¡®Ër +( +$this +); + +230 +$š¡®Ër +-> + `£tO±iÚs +( + `¬¿y +('upg¿de' => +Œue +)); + +231 +$·ckages + = + `¬¿y +( +$¶ugšPackage +); + +232 +$š¡®Ër +-> + `sÜtPackagesFÜIn¡®l +( +$·ckages +); + +233 +PEAR +:: + `¡©icPushE¼ÜHªdlšg +( +PEAR_ERROR_RETURN +); + +234 +$”r + = +$š¡®Ër +-> + `£tDowÆßdedPackages +( +$·ckages +); + +235 ià( +PEAR +:: + `isE¼Ü +( +$”r +)) + +237 +PEAR +:: + `¡©icPÝE¼ÜHªdlšg +(); + +238 +throw + +Ãw + + `sfPlugšExû±iÚ +( +$”r +-> + `g‘Mes§ge +()); + +241 +$šfo + = +$š¡®Ër +-> + `š¡®l +( +$¶ugšPackage +, + `¬¿y +('upg¿de' => +Œue +)); + +242 +PEAR +:: + `¡©icPÝE¼ÜHªdlšg +(); + +243 ià( +PEAR +:: + `isE¼Ü +( +$šfo +)) + +245 +throw + +Ãw + + `sfPlugšExû±iÚ +( + `¥rštf +('In¡®ÏtiÚ oà"%s"…lugš fažed: %s', +$¶ugš +, +$šfo +-> + `g‘Mes§ge +())); + +248 ià( + `is_¬¿y +( +$šfo +)) + +250 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, '­¶iÿtiÚ.log', + `¬¿y +( + `¥rštf +('In¡®ÏtiÚ sucûssfuÈf܅lugš "%s"', +$¶ugš +)))); + +252 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, '¶ugš.po¡_š¡®l', + `¬¿y +('chªÃl' => +$chªÃl +, '¶ugš' => +$¶ugšPackage +-> + `g‘Package +()))); + +254 + `un£t +( +$this +-> +š¡®lšg +[ +$chªÃl +.'/'. +$¶ugš +]); + +256  +$¶ugšPackage +-> + `g‘Package +(); + +260 +throw + +Ãw + + `sfPlugšExû±iÚ +( + `¥rštf +('In¡®ÏtiÚ oà"%s"…lugš fažed', +$¶ugš +)); + +262 + } +} + +270 +public + +funùiÚ + + $unš¡®lPlugš +( +$¶ugš +, +$chªÃl + = +nuÎ +) + +272 ià( +çl£ + !=ð + `¡½os +( +$¶ugš +, '/')) + +274 + `li¡ +( +$chªÃl +, +$¶ugš +èð + `ex¶ode +('/', $plugin); + +277 +$chªÃl + = +nuÎ + ==ð$chªÃÈ? +$this +-> +’vœÚm’t +-> + `g‘CÚfig +()-> + `g‘ +('default_channel') : $channel; + +279 +$exi¡šg + = +$this +-> +’vœÚm’t +-> + `g‘Regi¡ry +()-> + `·ckageInfo +( +$¶ugš +, 'v”siÚ', +$chªÃl +); + +280 ià( +nuÎ + ==ð +$exi¡šg +) + +282 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, '­¶iÿtiÚ.log', + `¬¿y +( + `¥rštf +('Plugš "%s" i nÙ in¡®Ëd', +$¶ugš +)))); + +284  +çl£ +; + +287 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, '¶ugš.´e_unš¡®l', + `¬¿y +('chªÃl' => +$chªÃl +, '¶ugš' => +$¶ugš +))); + +289 +$·ckage + = +$this +-> +’vœÚm’t +-> + `g‘Regi¡ry +()-> + `·r£PackageName +( +$¶ugš +, +$chªÃl +); + +291 +$š¡®Ër + = +Ãw + + `PEAR_In¡®Ër +( +$this +); + +292 +$·ckages + = + `¬¿y +( +$this +-> +’vœÚm’t +-> + `g‘Regi¡ry +()-> + `g‘Package +( +$¶ugš +, +$chªÃl +)); + +293 +$š¡®Ër +-> + `£tUnš¡®lPackages +( +$·ckages +); + +294 +$»t + = +$š¡®Ër +-> + `unš¡®l +( +$·ckage +); + +295 ià( +PEAR +:: + `isE¼Ü +( +$»t +)) + +297 +throw + +Ãw + + `sfPlugšExû±iÚ +( + `¥rštf +('ProbËm unš¡®lšg…lugš "%s": %s', +$¶ugš +, +$»t +-> + `g‘Mes§ge +())); + +300 ià( +$»t +) + +302 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, '­¶iÿtiÚ.log', + `¬¿y +( + `¥rštf +('Unš¡®ÏtiÚ sucûssfuÈf܅lugš "%s"', +$¶ugš +)))); + +304 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, '¶ugš.po¡_unš¡®l', + `¬¿y +('chªÃl' => +$chªÃl +, '¶ugš' => +$¶ugš +))); + +308 +throw + +Ãw + + `sfPlugšExû±iÚ +( + `¥rštf +('Unš¡®ÏtiÚ oà"%s"…lugš fažed', +$¶ugš +)); + +311  +$»t +; + +312 + } +} + +326 +public + +funùiÚ + + $checkPlugšD•’d’c›s +( +$¶ugš +, +$v”siÚ +, +$ÝtiÚs + = +çl£ +) + +328 +$d•’d’c›s + = +$this +-> +’vœÚm’t +-> + `g‘Re¡ +()-> + `g‘PlugšD•’d’c›s +( +$¶ugš +, +$v”siÚ +); + +330 ià(! + `is£t +( +$d•’d’c›s +['required']) || !isset($dependencies['required']['package'])) + +335 +$d•s + = +$d•’d’c›s +['required']['package']; + +336 ià(! + `is£t +( +$d•s +[0])) + +338 +$d•s + = + `¬¿y +($deps); + +341 + `fܗch + ( +$d•s + +as + +$d•’d’cy +) + +343 ià(! +$this +-> + `checkD•’d’cy +( +$d•’d’cy +)) + +345 +$v”siÚ + = ( + `is£t +( +$d•’d’cy +['min']) ? ' >= '.$dependency['min'] : '').(isset($dependency['max']) ? ' <= '.$dependency['max'] : '').(isset($dependency['exclude']) ? 'ƒxclude '.$dependency['exclude'] : ''); + +347 ià( + `is£t +( +$ÝtiÚs +['install_deps']) && $options['install_deps']) + +349 +Œy + + +351 +$this +-> + `doIn¡®lPlugš +( +$d•’d’cy +['Çme'], + `¬¿y_m”ge +( +$ÝtiÚs +, + `¬¿y +('channel' => $dependency['channel']))); + +353 + `ÿtch + ( +sfExû±iÚ + +$e +) + +355 +throw + +Ãw + + `sfPlugšRecursiveD•’d’cyExû±iÚ +( + `¥rštf +('UÇbˁؚ¡®È¶ugš "%s" (v”siÚ %sèbeÿu£ iˆd•’d Ú…lugš "%s" which cªnÙ bš¡®Ëd‡utom©iÿÎy: %s', +$¶ugš +, +$v”siÚ +, +$d•’d’cy +['Çme'], +$e +-> + `g‘Mes§ge +())); + +361 +throw + +Ãw + + `sfPlugšD•’d’cyExû±iÚ +( + `¥rštf +('UÇbˁؚ¡®È¶ugš "%s" (v”siÚ %sèbeÿu£ iˆd•’d Ú…lugš "%s" which i nÙ in¡®Ëd (š¡®Èd•’d’c› by hªd o¸u£h--š¡®l_d• ÝtiÚ f܇utom©iøš¡®ÏtiÚ).', +$¶ugš +, +$v”siÚ +, +$d•’d’cy +['name'])); + +364 + } +} + +374 +public + +funùiÚ + + $g‘PlugšV”siÚ +( +$¶ugš +, +$¡abž™y + = +nuÎ +) + +376 +$v”siÚs + = +$this +-> +’vœÚm’t +-> + `g‘Re¡ +()-> + `g‘PlugšV”siÚs +( +$¶ugš +, +$¡abž™y +); + +377 + `fܗch + ( +$v”siÚs + +as + +$v”siÚ +) + +379 ià(! +$this +-> + `isPlugšCom·tibË +( +$¶ugš +, +$v”siÚ +)) + +384  +$v”siÚ +; + +387 +throw + +Ãw + + `sfPlugšD•’d’cyExû±iÚ +( + `¥rštf +('NØ»Ëa£‡važabË f܅lugš "%s" iÀ¡©"%s"h© s©isf› th­¶iÿtiڄequœem’ts.', +$¶ugš +, +$¡abž™y +)); + +388 + } +} + +398 +public + +funùiÚ + + $isPlugšCom·tibË +( +$¶ugš +, +$v”siÚ +) + +400 +$d•’d’c›s + = +$this +-> +’vœÚm’t +-> + `g‘Re¡ +()-> + `g‘PlugšD•’d’c›s +( +$¶ugš +, +$v”siÚ +); + +402 ià(! + `is£t +( +$d•’d’c›s +['required']) || !isset($dependencies['required']['package'])) + +404  +Œue +; + +407 +$d•s + = +$d•’d’c›s +['required']['package']; + +408 ià(! + `is£t +( +$d•s +[0])) + +410 +$d•s + = + `¬¿y +($deps); + +413 + `fܗch + ( +$d•s + +as + +$d•’d’cy +) + +415 ià(! +$this +-> + `isPlugšCom·tibËW™hD•’d’cy +( +$d•’d’cy +)) + +417  +çl£ +; + +421  +Œue +; + +422 + } +} + +434 +public + +funùiÚ + +g‘PlugšLiûn£ +( +$¶ugš +, +$ÝtiÚs + = + $¬¿y +()) + +436 +$chªÃl + = + `is£t +( +$ÝtiÚs +['chªÃl']è? $ÝtiÚs['chªÃl'] : +$this +-> +’vœÚm’t +-> + `g‘CÚfig +()-> + `g‘ +('default_channel'); + +437 +$¡abž™y + = + `is£t +( +$ÝtiÚs +['¡abž™y']è? $ÝtiÚs['¡abž™y'] : +$this +-> +’vœÚm’t +-> + `g‘CÚfig +()-> + `g‘ +('´eã¼ed_¡©e', +nuÎ +, +$chªÃl +); + +438 +$v”siÚ + = + `is£t +( +$ÝtiÚs +['v”siÚ']è? $ÝtiÚs['v”siÚ'] : +nuÎ +; + +440 +$»¡ + = +$this +-> +’vœÚm’t +-> + `g‘Re¡ +(); + +441 +$»¡ +-> + `£tChªÃl +( +nuÎ + ==ð +$chªÃl + ? +$this +-> +’vœÚm’t +-> + `g‘CÚfig +()-> + `g‘ +('default_channel') : $channel); + +443 ià( +nuÎ + ==ð +$v”siÚ +) + +445 +Œy + + +447 +$v”siÚ + = +$this +-> + `g‘PlugšV”siÚ +( +$¶ugš +, +$¡abž™y +); + +449 + `ÿtch + ( +Exû±iÚ + +$e +) + +452  +çl£ +; + +457 ià(! +$this +-> + `isPlugšCom·tibË +( +$¶ugš +, +$v”siÚ +)) + +459 +throw + +Ãw + + `sfPlugšD•’d’cyExû±iÚ +( + `¥rštf +('Plugš "%s" iÀv”siÚ "%s" i nÙ com·tibË w™hhcu¼’ˆ­¶iÿtiÚ', +$¶ugš +, +$v”siÚ +)); + +463  +$»¡ +-> + `g‘PlugšLiûn£ +( +$¶ugš +, +$v”siÚ +); + +464 + } +} + +473 +´Ùeùed + +funùiÚ + + $isPlugšCom·tibËW™hD•’d’cy +( +$d•’d’cy +) + +475  +Œue +; + +476 + } +} + +485 +´Ùeùed + +funùiÚ + + $checkD•’d’cy +( +$d•’d’cy +) + +487 +$d•’d’cyCheck” + = +Ãw + + `PEAR_D•’d’cy2 +( +$this +-> +’vœÚm’t +-> + `g‘CÚfig +(), + `¬¿y +(),‡rray('package' => '', 'channel' => '')); + +489 +PEAR +:: + `¡©icPushE¼ÜHªdlšg +( +PEAR_ERROR_RETURN +); + +490 +$e + = +$d•’d’cyCheck” +-> + `v®id©ePackageD•’d’cy +( +$d•’d’cy +, +Œue +, + `¬¿y +()); + +491 +PEAR +:: + `¡©icPÝE¼ÜHªdlšg +(); + +492 ià( +PEAR +:: + `isE¼Ü +( +$e +)) + +494  +çl£ +; + +497  +Œue +; + +498 + } +} + + @lib/vendor/symfony/lib/plugin/sfPluginRecursiveDependencyException.class.php + +1 + `g‘O±iÚ +('web_dir')) + +39 +throw + +Ãw + + `sfPlugšExû±iÚ +('You must…rovide‡ "web_dir" option.'); + +46 +public + +funùiÚ + + $cÚfigu» +() + +49 +$this +-> +’vœÚm’t +-> + `»gi¡”ChªÃl +('³¬.symfÚy-´ojeù.com', +Œue +); + +52 +$this +-> +’vœÚm’t +-> + `»gi¡”ChªÃl +('¶ugšs.symfÚy-´ojeù.Üg', +Œue +); + +55 +$this +-> + `»gi¡”SymfÚyPackage +(); + +58 +$this +-> +di¥©ch” +-> + `cÚÃù +('¶ugš.po¡_š¡®l', + `¬¿y +($this, 'listenToPluginPostInstall')); + +59 +$this +-> +di¥©ch” +-> + `cÚÃù +('¶ugš.po¡_unš¡®l', + `¬¿y +($this, 'listenToPluginPostUninstall')); + +60 + } +} + +67 +public + +funùiÚ + + $š¡®lWebCڋÁ +( +$¶ugš +, +$sourûDœeùÜy +) + +69 +$webDœ + = +$sourûDœeùÜy +. +DIRECTORY_SEPARATOR +. +$¶ugš +.DIRECTORY_SEPARATOR.'web'; + +70 ià( + `is_dœ +( +$webDœ +)) + +72 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, '­¶iÿtiÚ.log', + `¬¿y +('Installing web data for…lugin'))); + +74 +$fžesy¡em + = +Ãw + + `sfFžesy¡em +(); + +75 +$fžesy¡em +-> + `»ÏtiveSymlšk +( +$webDœ +, +$this +-> +’vœÚm’t +-> + `g‘O±iÚ +('web_dœ'). +DIRECTORY_SEPARATOR +. +$¶ugš +, +Œue +); + +77 + } +} + +84 +public + +funùiÚ + + $unš¡®lWebCڋÁ +( +$¶ugš +) + +86 +$rg‘Dœ + = +$this +-> +’vœÚm’t +-> + `g‘O±iÚ +('web_dœ'). +DIRECTORY_SEPARATOR +. +$¶ugš +; + +87 ià( + `is_dœ +( +$rg‘Dœ +)) + +89 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, '­¶iÿtiÚ.log', + `¬¿y +('Uninstalling web data for…lugin'))); + +91 +$fžesy¡em + = +Ãw + + `sfFžesy¡em +(); + +93 ià( + `is_lšk +( +$rg‘Dœ +)) + +95 +$fžesy¡em +-> + `»move +( +$rg‘Dœ +); + +99 +$fžesy¡em +-> + `»move +( +sfFšd” +:: + `ty³ +('ªy')-> + `š +( +$rg‘Dœ +)); + +100 +$fžesy¡em +-> + `»move +( +$rg‘Dœ +); + +103 + } +} + +114  +public + +funùiÚ + + $’abËPlugš +( +$¶ugš +, +$cÚfigDœ +) + +116 ià(! +$cÚfigDœ +) + +118 +throw + +Ãw + + `sfPlugšExû±iÚ +('You must…rovide‡ "config_dir" option.'); + +121 +$mªuÏtÜ + = +sfCÏssMªuÏtÜ +:: + `äomFže +( +$cÚfigDœ +.'/ProjectConfiguration.class.php'); + +122 +$mªuÏtÜ +-> + `w¿pM‘hod +('£tup', '', + `¥rštf +('$this->’abËPlugšs(\'%s\');', +$¶ugš +)); + +123 +$mªuÏtÜ +-> + `§ve +(); + +124 + } +} + +135  +public + +funùiÚ + + $di§bËPlugš +( +$¶ugš +, +$cÚfigDœ +) + +137 ià(! +$cÚfigDœ +) + +139 +throw + +Ãw + + `sfPlugšExû±iÚ +('You must…rovide‡ "config_dir" option.'); + +142 +$fže + = +$cÚfigDœ +.'/ProjectConfiguration.class.php'; + +143 +$sourû + = + `fže_g‘_cڋÁs +( +$fže +); + +145 +$sourû + = + `´eg_»¶aû +( + `¥rštf +('# *\$this\->’abËPlugšs\×¼ay\(([^\)]+), *\'%s\'([^\)]*)\)\)#', +$¶ugš +), '$this->enablePlugins(array($1$2))', $source); + +146 +$sourû + = + `´eg_»¶aû +( + `¥rštf +('# *\$this\->’abËPlugšs\×¼ay\(\'%s\', *([^\)]*)\)\)#', +$¶ugš +), '$this->enablePlugins(array($1))', $source); + +147 +$sourû + = + `´eg_»¶aû +( + `¥rštf +('# *\$this\->’abËPlugšs\(\'%s\'\); *\n?#', +$¶ugš +), '', $source); + +148 +$sourû + = + `´eg_»¶aû +( + `¥rštf +('# *\$this\->’abËPlugšs\×¼ay\(\'%s\'\)\); *\n?#', +$¶ugš +), '', $source); + +149 +$sourû + = + `´eg_»¶aû +( + `¥rštf +('# *\$this\->’abËPlugšs\×¼ay\(\)\); *\n?#', +$¶ugš +), '', $source); + +151 + `fže_put_cڋÁs +( +$fže +, +$sourû +); + +152 + } +} + +159 +public + +funùiÚ + + $li¡’ToPlugšPo¡In¡®l +( +$ev’t +) + +161 +$this +-> + `š¡®lWebCڋÁ +( +$ev’t +['¶ugš'], + `is£t +($ev’t['¶ugš_dœ']è? $ev’t['¶ugš_dœ'] : $this-> +’vœÚm’t +-> + `g‘O±iÚ +('plugin_dir')); + +163 +$this +-> + `’abËPlugš +( +$ev’t +['¶ugš'], $this-> +’vœÚm’t +-> + `g‘O±iÚ +('config_dir')); + +164 + } +} + +171 +public + +funùiÚ + + $li¡’ToPlugšPo¡Unš¡®l +( +$ev’t +) + +173 +$this +-> + `unš¡®lWebCڋÁ +( +$ev’t +['plugin']); + +175 +$this +-> + `di§bËPlugš +( +$ev’t +['¶ugš'], $this-> +’vœÚm’t +-> + `g‘O±iÚ +('config_dir')); + +176 + } +} + +181 +´Ùeùed + +funùiÚ + + $»gi¡”SymfÚyPackage +() + +183 +$symfÚy + = +Ãw + + `PEAR_PackageFže_v2_rw +(); + +184 +$symfÚy +-> + `£tPackage +('symfony'); + +185 +$symfÚy +-> + `£tChªÃl +('pear.symfony-project.com'); + +186 +$symfÚy +-> + `£tCÚfig +( +$this +-> +’vœÚm’t +-> + `g‘CÚfig +()); + +187 +$symfÚy +-> + `£tPackageTy³ +('php'); + +188 +$symfÚy +-> + `£tAPIV”siÚ +( + `´eg_»¶aû +('/\d+(\-\w+)?$/', '0', +SYMFONY_VERSION +)); + +189 +$symfÚy +-> + `£tAPISbž™y +( +çl£ + ==ð + `¡½os +( +SYMFONY_VERSION +, 'DEV') ? 'stable' : 'beta'); + +190 +$symfÚy +-> + `£tR–—£V”siÚ +( + `´eg_»¶aû +('/\-\w+$/', '', +SYMFONY_VERSION +)); + +191 +$symfÚy +-> + `£tR–—£Sbž™y +( +çl£ + ==ð + `¡½os +( +SYMFONY_VERSION +, 'DEV') ? 'stable' : 'beta'); + +192 +$symfÚy +-> + `£tD©e +( + `d©e +('Y-m-d')); + +193 +$symfÚy +-> + `£tDesütiÚ +('symfony'); + +194 +$symfÚy +-> + `£tSumm¬y +('symfony'); + +195 +$symfÚy +-> + `£tLiûn£ +('MIT License'); + +196 +$symfÚy +-> + `þ—rCڋÁs +(); + +197 +$symfÚy +-> + `»£tFž–i¡ +(); + +198 +$symfÚy +-> + `addMašš” +('lead', 'fabpot', 'Fabien Potencier', 'fabien.potencier@symfony-project.com'); + +199 +$symfÚy +-> + `£tNÙes +('-'); + +200 +$symfÚy +-> + `£tP—rš¡®ËrD• +('1.4.3'); + +201 +$symfÚy +-> + `£tPhpD• +('5.2.4'); + +203 +$this +-> +’vœÚm’t +-> + `g‘Regi¡ry +()-> + `d–‘ePackage +('symfony', 'pear.symfony-project.com'); + +204 ià(! +$this +-> +’vœÚm’t +-> + `g‘Regi¡ry +()-> + `addPackage2 +( +$symfÚy +)) + +206 +throw + +Ãw + + `sfPlugšExû±iÚ +('Unableo„egisterhe symfony…ackage'); + +208 + } +} + +217 +´Ùeùed + +funùiÚ + + $isPlugšCom·tibËW™hD•’d’cy +( +$d•’d’cy +) + +219 ià( + `is£t +( +$d•’d’cy +['channel']) && 'symfony' == $dependency['name'] && 'pear.symfony-project.com' == $dependency['channel']) + +221  +$this +-> + `checkD•’d’cy +( +$d•’d’cy +); + +224  +Œue +; + +225 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/config/installer.php + +1 +š¡®lDœ +( +dœÇme +( +__FILE__ +).'/skeleton'); + +4 + g$this +-> +’abËPlugš +('sfDoctrinePlugin'); + +5 + g$this +-> +»lßdTasks +(); + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/config/sfDoctrinePluginConfiguration.class.php + +1 +di¥©ch” +-> + `cÚÃù +('debug.web.lßd_·Ãls', + `¬¿y +('sfWebDebugPanelDoctrine', 'listenToAddPanelEvent')); + +40 ià(! + `þass_exi¡s +('Doùrše_CÜe', +çl£ +)) + +42 +»quœe_Úû + +sfCÚfig +:: + `g‘ +('sf_doùrše_dœ', + `»®·th +( + `dœÇme +( +__FILE__ +).'/../lib/vendor/doctrine')).'/Doctrine/Core.php'; + +44 + `¥l_autÞßd_»gi¡” +( + `¬¿y +('Doctrine_Core', 'autoload')); + +46 +$mªag” + = +Doùrše_Mªag” +:: + `g‘In¡ªû +(); + +47 +$mªag” +-> + `£tA‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_EXPORT +, Doùrše_CÜe:: +EXPORT_ALL +); + +48 +$mªag” +-> + `£tA‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_VALIDATE +, Doùrše_CÜe:: +VALIDATE_NONE +); + +49 +$mªag” +-> + `£tA‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_RECURSIVE_MERGE_FIXTURES +, +Œue +); + +50 +$mªag” +-> + `£tA‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_AUTO_ACCESSOR_OVERRIDE +, +Œue +); + +51 +$mªag” +-> + `£tA‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_AUTOLOAD_TABLE_CLASSES +, +Œue +); + +54 +$mªag” +-> + `£tDeçuÉA‰ribu‹s +(); + +56 ià( + `m‘hod_exi¡s +( +$this +-> +cÚfigu¿tiÚ +, 'configureDoctrine')) + +58 +$this +-> +cÚfigu¿tiÚ +-> + `cÚfigu»Doùrše +( +$mªag” +); + +61 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +( +$mªag” +, 'doctrine.configure')); + +64 +$this +-> +di¥©ch” +-> + `cÚÃù +('u£r.chªge_cuÉu»', + `¬¿y +('sfDoctrineRecord', 'listenToChangeCultureEvent')); + +72 +public + +funùiÚ + + $g‘Mod–Bužd”O±iÚs +() + +74 +$ÝtiÚs + = + `¬¿y +( + +75 'g’”©eBa£CÏs£s' => +Œue +, + +76 'g’”©eTabËCÏs£s' => +Œue +, + +84 +$ÝtiÚs + = + `¬¿y_m”ge +($ÝtiÚs, +sfCÚfig +:: + `g‘ +('doùrše_mod–_bužd”_ÝtiÚs', + `¬¿y +())); + +87 +$ÝtiÚs + = +$this +-> +di¥©ch” +-> + `fž‹r +( +Ãw + + `sfEv’t +($this, 'doùrše.fž‹r_mod–_bužd”_ÝtiÚs'), $ÝtiÚs)-> + `g‘R‘uºV®ue +(); + +89  +$ÝtiÚs +; + +90 + } +} + +97 +public + +funùiÚ + + $g‘CliCÚfig +() + +99 +$cÚfig + = + `¬¿y +( + +100 'd©a_fixtu»s_·th' => + `¬¿y_m”ge +( + `¬¿y +( +sfCÚfig +:: + `g‘ +('sf_d©a_dœ').'/fixtu»s'), +$this +-> +cÚfigu¿tiÚ +-> + `g‘PlugšSubP©hs +('/data/fixtures')), + +101 'mod–s_·th' => +sfCÚfig +:: + `g‘ +('sf_lib_dir').'/model/doctrine', + +102 'mig¿tiÚs_·th' => +sfCÚfig +:: + `g‘ +('sf_lib_dir').'/migration/doctrine', + +103 'sql_·th' => +sfCÚfig +:: + `g‘ +('sf_data_dir').'/sql', + +104 'yaml_schema_·th' => +sfCÚfig +:: + `g‘ +('sf_config_dir').'/doctrine', + +108 +$cÚfig + = +$this +-> +di¥©ch” +-> + `fž‹r +( +Ãw + + `sfEv’t +($this, 'doùrše.fž‹r_þi_cÚfig'), $cÚfig)-> + `g‘R‘uºV®ue +(); + +110  +$cÚfig +; + +111 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineForm/default/template/sfDoctrineFormBaseTemplate.php + +1 [? +php + + +11 +ab¡¿ù + cÏs  + cBa£FÜmDoùrše + +ex‹nds + +sfFÜmDoùrše + + +13 +public + +funùiÚ + + $£tup +() + +16 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineForm/default/template/sfDoctrineFormGeneratedInheritanceTemplate.php + +1 [? +php + + +13 +ab¡¿ù + +þass + +Ba£ + +mod–Name + ?> +FÜm + +ex‹nds + +g‘FÜmCÏssToEx‹nd +(). +PHP_EOL + ?> + +15 +´Ùeùed + +funùiÚ + +£tupInh”™ªû +() + +17 +·»Á +:: +£tupInh”™ªû +(); + +19 +g‘CÞumns +(è +as + +$cÞumn +): ?> + +20 +$this +-> +widg‘Schema + ['g‘F›ldName(è?>'] = +Ãw + +g‘Widg‘CÏssFÜCÞumn +( +$cÞumn +è?>( +g‘Widg‘O±iÚsFÜCÞumn +($column) ?>); + +21 + g$this +-> + gv®id©ÜSchema +['g‘F›ldName(è?>'] = +Ãw + +g‘V®id©ÜCÏssFÜCÞumn +( +$cÞumn +è?>( +g‘V®id©ÜO±iÚsFÜCÞumn +($column) ?>); + +23 + +24 +g‘MªyToMªyR–©iÚs +(è +as + +$»ÏtiÚ +): ?> + +25 +$this +-> +widg‘Schema + ['und”scÜe($»ÏtiÚ[' +®Ÿs +']è?>_li¡'] = +Ãw + +sfWidg‘FÜmDoùršeChoiû +( +¬¿y +('muɝË' => +Œue +, 'mod–' => 'g‘O±iÚ(' +Çme +') ?>')); + +26 + g$this +-> + gv®id©ÜSchema +['und”scÜe($»ÏtiÚ[' +®Ÿs +']è?>_li¡'] = +Ãw + +sfV®id©ÜDoùršeChoiû +( +¬¿y +('muɝË' => +Œue +, 'mod–' => 'g‘O±iÚ(' +Çme +'è?>', '»quœed' => +çl£ +)); + +28 + +29 + g$this +-> + gwidg‘Schema +-> +£tNameFÜm© +('underscore($this->modelName) ?>[%s]'); + +32 +public + +funùiÚ + +g‘Mod–Name +() + +37 +g‘MªyToMªyR–©iÚs +()): ?> + +38 +public + +funùiÚ + +upd©eDeçuÉsFromObjeù +() + +40 +·»Á +:: +upd©eDeçuÉsFromObjeù +(); + +42 +g‘MªyToMªyR–©iÚs +(è +as + +$»ÏtiÚ +): ?> + +43 ià( +is£t +( +$this +-> +widg‘Schema +['und”scÜe($»ÏtiÚ[' +®Ÿs +']) ?>_list'])) + +45 +$this +-> +£tDeçuÉ +('und”scÜe($»ÏtiÚ[' +®Ÿs +']è?>_li¡', $this-> +objeù +->-> +g‘Prim¬yKeys +()); + +48 + +51 +´Ùeùed + +funùiÚ + +doSave +( +$cÚ + = +nuÎ +) + +53 +g‘MªyToMªyR–©iÚs +(è +as + +$»ÏtiÚ +): ?> + +54 +$this +-> +§ve + +Li¡ +( +$cÚ +); + +55 + +57 + g·»Á +:: +doSave +( +$cÚ +); + +60 +g‘MªyToMªyR–©iÚs +(è +as + +$»ÏtiÚ +): ?> + +61 +public + +funùiÚ + +§ve + +Li¡ +( +$cÚ + = +nuÎ +) + +63 ià(! +$this +-> +isV®id +()) + +65 +throw + +$this +-> +g‘E¼ÜSchema +(); + +68 ià(! +is£t +( +$this +-> +widg‘Schema +['und”scÜe($»ÏtiÚ[' +®Ÿs +']) ?>_list'])) + +74 ià( + gnuÎ + ==ð +$cÚ +) + +76 +$cÚ + = +$this +-> +g‘CÚÃùiÚ +(); + +79 + g$exi¡šg + = +$this +-> +objeù +->-> +g‘Prim¬yKeys +(); + +80 + g$v®ues + = +$this +-> +g‘V®ue +('und”scÜe($»ÏtiÚ[' +®Ÿs +']) ?>_list'); + +81 ià(! +is_¬¿y +( +$v®ues +)) + +83 + g$v®ues + = +¬¿y +(); + +86 + g$uƚk + = +¬¿y_diff +( +$exi¡šg +, +$v®ues +); + +87 ià( +couÁ +( +$uƚk +)) + +89 + g$this +-> + gobjeù +-> +uƚk +('', +¬¿y_v®ues +( +$uƚk +)); + +92 + g$lšk + = +¬¿y_diff +( +$v®ues +, +$exi¡šg +); + +93 ià( +couÁ +( +$lšk +)) + +95 + g$this +-> + gobjeù +-> +lšk +('', +¬¿y_v®ues +( +$lšk +)); + +99 + +100 + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineForm/default/template/sfDoctrineFormGeneratedTemplate.php + +1 [? +php + + +13 +ab¡¿ù + +þass + +Ba£ + +mod–Name + ?> +FÜm + +ex‹nds + +g‘FÜmCÏssToEx‹nd +(). +PHP_EOL + ?> + +15 +public + +funùiÚ + +£tup +() + +17 +$this +-> +£tWidg‘s +( +¬¿y +( + +18 +g‘CÞumns +(è +as + +$cÞumn +): ?> + +19 'g‘F›ldName(è?>' +g‘CÞumnNameMaxL’gth +(è- +¡¾’ +( +$cÞumn +-> +g‘F›ldName +())è?> => +Ãw + +g‘Widg‘CÏssFÜCÞumn +($cÞumnè?>( +g‘Widg‘O±iÚsFÜCÞumn +($column) ?>), + +20 + +21 +g‘MªyToMªyR–©iÚs +(è +as + +$»ÏtiÚ +): ?> + +22 'und”scÜe($»ÏtiÚ[' +®Ÿs +']è?>_li¡' +g‘CÞumnNameMaxL’gth +(è- +¡¾’ +($this-> +und”scÜe +( +$»ÏtiÚ +['®Ÿs']).'_li¡')è?> => +Ãw + +sfWidg‘FÜmDoùršeChoiû +( +¬¿y +('muɝË' => +Œue +, 'mod–' => 'g‘O±iÚ(' +Çme +') ?>')), + +23 + +26 + g$this +-> +£tV®id©Üs +( +¬¿y +( + +27 +g‘CÞumns +(è +as + +$cÞumn +): ?> + +28 'g‘F›ldName(è?>' +g‘CÞumnNameMaxL’gth +(è- +¡¾’ +( +$cÞumn +-> +g‘F›ldName +())è?> => +Ãw + +g‘V®id©ÜCÏssFÜCÞumn +($cÞumnè?>( +g‘V®id©ÜO±iÚsFÜCÞumn +($column) ?>), + +29 + +30 +g‘MªyToMªyR–©iÚs +(è +as + +$»ÏtiÚ +): ?> + +31 'und”scÜe($»ÏtiÚ[' +®Ÿs +']è?>_li¡' +g‘CÞumnNameMaxL’gth +(è- +¡¾’ +($this-> +und”scÜe +( +$»ÏtiÚ +['®Ÿs']).'_li¡')è?> => +Ãw + +sfV®id©ÜDoùršeChoiû +( +¬¿y +('muɝË' => +Œue +, 'mod–' => 'g‘O±iÚ(' +Çme +'è?>', '»quœed' => +çl£ +)), + +32 + +35 +g‘UniqueCÞumnNames +()): ?> + +36 +$this +-> +v®id©ÜSchema +-> +£tPo¡V®id©Ü +( + +37 1): ?> + +38 +Ãw + +sfV®id©ÜAnd +( +¬¿y +( + +39 + +40 +Ãw + +sfV®id©ÜDoùršeUnique +( +¬¿y +('mod–' => 'bË->g‘O±iÚ(' +Çme +') ?>', 'column' =>‡rray(''))), + +41 + +43 + +44 +Ãw + +sfV®id©ÜDoùršeUnique +( +¬¿y +('mod–' => 'bË->g‘O±iÚ(' +Çme +') ?>', 'column' =>‡rray(''))) + +45 + +48 + +49 + g$this +-> + gwidg‘Schema +-> +£tNameFÜm© +('underscore($this->modelName) ?>[%s]'); + +51 + g$this +-> + g”rÜSchema + = +Ãw + +sfV®id©ÜE¼ÜSchema +( +$this +-> +v®id©ÜSchema +); + +53 + g$this +-> +£tupInh”™ªû +(); + +55 + g·»Á +:: +£tup +(); + +58 +public + +funùiÚ + +g‘Mod–Name +() + +63 +g‘MªyToMªyR–©iÚs +()): ?> + +64 +public + +funùiÚ + +upd©eDeçuÉsFromObjeù +() + +66 +·»Á +:: +upd©eDeçuÉsFromObjeù +(); + +68 +g‘MªyToMªyR–©iÚs +(è +as + +$»ÏtiÚ +): ?> + +69 ià( +is£t +( +$this +-> +widg‘Schema +['und”scÜe($»ÏtiÚ[' +®Ÿs +']) ?>_list'])) + +71 +$this +-> +£tDeçuÉ +('und”scÜe($»ÏtiÚ[' +®Ÿs +']è?>_li¡', $this-> +objeù +->-> +g‘Prim¬yKeys +()); + +74 + +77 +´Ùeùed + +funùiÚ + +doSave +( +$cÚ + = +nuÎ +) + +79 +g‘MªyToMªyR–©iÚs +(è +as + +$»ÏtiÚ +): ?> + +80 +$this +-> +§ve + +Li¡ +( +$cÚ +); + +81 + +83 + g·»Á +:: +doSave +( +$cÚ +); + +86 +g‘MªyToMªyR–©iÚs +(è +as + +$»ÏtiÚ +): ?> + +87 +public + +funùiÚ + +§ve + +Li¡ +( +$cÚ + = +nuÎ +) + +89 ià(! +$this +-> +isV®id +()) + +91 +throw + +$this +-> +g‘E¼ÜSchema +(); + +94 ià(! +is£t +( +$this +-> +widg‘Schema +['und”scÜe($»ÏtiÚ[' +®Ÿs +']) ?>_list'])) + +100 ià( + gnuÎ + ==ð +$cÚ +) + +102 +$cÚ + = +$this +-> +g‘CÚÃùiÚ +(); + +105 + g$exi¡šg + = +$this +-> +objeù +->-> +g‘Prim¬yKeys +(); + +106 + g$v®ues + = +$this +-> +g‘V®ue +('und”scÜe($»ÏtiÚ[' +®Ÿs +']) ?>_list'); + +107 ià(! +is_¬¿y +( +$v®ues +)) + +109 + g$v®ues + = +¬¿y +(); + +112 + g$uƚk + = +¬¿y_diff +( +$exi¡šg +, +$v®ues +); + +113 ià( +couÁ +( +$uƚk +)) + +115 + g$this +-> + gobjeù +-> +uƚk +('', +¬¿y_v®ues +( +$uƚk +)); + +118 + g$lšk + = +¬¿y_diff +( +$v®ues +, +$exi¡šg +); + +119 ià( +couÁ +( +$lšk +)) + +121 + g$this +-> + gobjeù +-> +lšk +('', +¬¿y_v®ues +( +$lšk +)); + +125 + +126 + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineForm/default/template/sfDoctrineFormPluginTemplate.php + +1 [? +php + + +11 +ab¡¿ù + +þass + +Plugš + +bË +-> +g‘O±iÚ +('Çme'è?> +FÜm + +ex‹nds + +Ba£ +table->getOption('name') ?>Form + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineForm/default/template/sfDoctrineFormTemplate.php + +1 [? +php + + +11 +þass + +bË +-> +g‘O±iÚ +('Çme'è?> +FÜm + +ex‹nds + +Ba£ +table->getOption('name') ?>Form + +13 +g‘P¬’tMod– +()): ?> + +17 +public + +funùiÚ + +cÚfigu» +() + +19 +·»Á +:: +cÚfigu» +(); + +21 + +22 +public + +funùiÚ + +cÚfigu» +() + +25 + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineForm/default/template/sfDoctrinePluginFormTemplate.php + +1 [? +php + + +11 +þass + +bË +-> +g‘O±iÚ +('Çme'è?> +FÜm + +ex‹nds + +Plugš +table->getOption('name') ?>Form + +13 +g‘P¬’tMod– +()): ?> + +17 +public + +funùiÚ + +cÚfigu» +() + +19 +·»Á +:: +cÚfigu» +(); + +21 + +22 +public + +funùiÚ + +cÚfigu» +() + +25 + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineFormFilter/default/template/sfDoctrineFormFilterBaseTemplate.php + +1 [? +php + + +11 +ab¡¿ù + cÏs  + cBa£FÜmFž‹rDoùrše + +ex‹nds + +sfFÜmFž‹rDoùrše + + +13 +public + +funùiÚ + + $£tup +() + +16 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineFormFilter/default/template/sfDoctrineFormFilterGeneratedInheritanceTemplate.php + +1 [? +php + + +11 +ab¡¿ù + +þass + +Ba£ + +bË +-> +g‘O±iÚ +('Çme'è?> +FÜmFž‹r + +ex‹nds + +g‘FÜmCÏssToEx‹nd +(). +PHP_EOL + ?> + +13 +´Ùeùed + +funùiÚ + +£tupInh”™ªû +() + +15 +·»Á +:: +£tupInh”™ªû +(); + +17 +g‘CÞumns +(è +as + +$cÞumn +): ?> + +18 +$this +-> +widg‘Schema + ['g‘F›ldName(è?>'] = +Ãw + +g‘Widg‘CÏssFÜCÞumn +( +$cÞumn +è?>( +g‘Widg‘O±iÚsFÜCÞumn +($column) ?>); + +19 + g$this +-> + gv®id©ÜSchema +['g‘F›ldName(è?>'] = +g‘V®id©ÜFÜCÞumn +( +$cÞumn +) ?>; + +21 + +22 +g‘MªyToMªyR–©iÚs +(è +as + +$»ÏtiÚ +): ?> + +23 +$this +-> +widg‘Schema + ['und”scÜe($»ÏtiÚ[' +®Ÿs +']è?>_li¡'] = +Ãw + +sfWidg‘FÜmDoùršeChoiû +( +¬¿y +('muɝË' => +Œue +, 'mod–' => 'g‘O±iÚ(' +Çme +') ?>')); + +24 + g$this +-> + gv®id©ÜSchema +['und”scÜe($»ÏtiÚ[' +®Ÿs +']è?>_li¡'] = +Ãw + +sfV®id©ÜDoùršeChoiû +( +¬¿y +('muɝË' => +Œue +, 'mod–' => 'g‘O±iÚ(' +Çme +'è?>', '»quœed' => +çl£ +)); + +26 + +27 + g$this +-> + gwidg‘Schema +-> +£tNameFÜm© +('underscore($this->modelName) ?>_filters[%s]'); + +30 +g‘MªyToMªyR–©iÚs +(è +as + +$»ÏtiÚ +): ?> + +31 +public + +funùiÚ + +add + +Li¡CÞumnQu”y +( +Doùrše_Qu”y + +$qu”y +, +$f›ld +, +$v®ues +) + +33 ià(! +is_¬¿y +( +$v®ues +)) + +35 + g$v®ues + = +¬¿y +( +$v®ues +); + +38 ià(! +couÁ +( +$v®ues +)) + +43 + g$qu”y + + +44 -> +ËáJoš +( +$qu”y +-> +g‘RoÙAlŸs +().'.g‘O±iÚ(' +Çme +') ?> getOption('name') ?>') + +45 -> +ªdWh”eIn +('g‘O±iÚ(' +Çme +'è?>.g‘FÜeignF›ldName(è?>', +$v®ues +) + +49 + +50 +public + +funùiÚ + +g‘Mod–Name +() + +54 +g‘CÞumns +()è|| couÁ($this-> +g‘MªyToMªyR–©iÚs +())): ?> + +56 +public + +funùiÚ + +g‘F›lds +() + +58  +¬¿y_m”ge +( +·»Á +:: +g‘F›lds +(), +¬¿y +( + +59 +g‘CÞumns +(è +as + +$cÞumn +): ?> + +61 + +62 +g‘MªyToMªyR–©iÚs +(è +as + +$»ÏtiÚ +): ?> + +63 'und”scÜe($»ÏtiÚ[' +®Ÿs +']) ?>_list' => 'ManyKey', + +64 + +67 + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineFormFilter/default/template/sfDoctrineFormFilterGeneratedTemplate.php + +1 [? +php + + +11 +ab¡¿ù + +þass + +Ba£ + +bË +-> +g‘O±iÚ +('Çme'è?> +FÜmFž‹r + +ex‹nds + +g‘FÜmCÏssToEx‹nd +(). +PHP_EOL + ?> + +13 +public + +funùiÚ + +£tup +() + +15 +$this +-> +£tWidg‘s +( +¬¿y +( + +16 +g‘CÞumns +(è +as + +$cÞumn +): ?> + +17 +isPrim¬yKey +())  ?> + +18 'g‘F›ldName(è?>' +g‘CÞumnNameMaxL’gth +(è- +¡¾’ +( +$cÞumn +-> +g‘F›ldName +())è?> => +Ãw + +g‘Widg‘CÏssFÜCÞumn +($cÞumnè?>( +g‘Widg‘O±iÚsFÜCÞumn +($column) ?>), + +19 + +20 +g‘MªyToMªyR–©iÚs +(è +as + +$»ÏtiÚ +): ?> + +21 'und”scÜe($»ÏtiÚ[' +®Ÿs +']è?>_li¡' +g‘CÞumnNameMaxL’gth +(è- +¡¾’ +($this-> +und”scÜe +( +$»ÏtiÚ +['®Ÿs']).'_li¡')è?> => +Ãw + +sfWidg‘FÜmDoùršeChoiû +( +¬¿y +('muɝË' => +Œue +, 'mod–' => 'g‘O±iÚ(' +Çme +') ?>')), + +22 + +25 + g$this +-> +£tV®id©Üs +( +¬¿y +( + +26 +g‘CÞumns +(è +as + +$cÞumn +): ?> + +27 +isPrim¬yKey +())  ?> + +28 'g‘F›ldName(è?>' +g‘CÞumnNameMaxL’gth +(è- +¡¾’ +( +$cÞumn +-> +g‘F›ldName +())è?> => +g‘V®id©ÜFÜCÞumn +($column) ?>, + +29 + +30 +g‘MªyToMªyR–©iÚs +(è +as + +$»ÏtiÚ +): ?> + +31 'und”scÜe($»ÏtiÚ[' +®Ÿs +']è?>_li¡' +g‘CÞumnNameMaxL’gth +(è- +¡¾’ +($this-> +und”scÜe +( +$»ÏtiÚ +['®Ÿs']).'_li¡')è?> => +Ãw + +sfV®id©ÜDoùršeChoiû +( +¬¿y +('muɝË' => +Œue +, 'mod–' => 'g‘O±iÚ(' +Çme +'è?>', '»quœed' => +çl£ +)), + +32 + +35 + g$this +-> + gwidg‘Schema +-> +£tNameFÜm© +('underscore($this->modelName) ?>_filters[%s]'); + +37 + g$this +-> + g”rÜSchema + = +Ãw + +sfV®id©ÜE¼ÜSchema +( +$this +-> +v®id©ÜSchema +); + +39 + g$this +-> +£tupInh”™ªû +(); + +41 + g·»Á +:: +£tup +(); + +44 +g‘MªyToMªyR–©iÚs +(è +as + +$»ÏtiÚ +): ?> + +45 +public + +funùiÚ + +add + +Li¡CÞumnQu”y +( +Doùrše_Qu”y + +$qu”y +, +$f›ld +, +$v®ues +) + +47 ià(! +is_¬¿y +( +$v®ues +)) + +49 + g$v®ues + = +¬¿y +( +$v®ues +); + +52 ià(! +couÁ +( +$v®ues +)) + +57 + g$qu”y + + +58 -> +ËáJoš +( +$qu”y +-> +g‘RoÙAlŸs +().'.g‘O±iÚ(' +Çme +') ?> getOption('name') ?>') + +59 -> +ªdWh”eIn +('g‘O±iÚ(' +Çme +'è?>.g‘FÜeignF›ldName(è?>', +$v®ues +) + +63 + +64 +public + +funùiÚ + +g‘Mod–Name +() + +69 +public + +funùiÚ + +g‘F›lds +() + +71  +¬¿y +( + +72 +g‘CÞumns +(è +as + +$cÞumn +): ?> + +73 'g‘F›ldName(è?>' +g‘CÞumnNameMaxL’gth +(è- +¡¾’ +( +$cÞumn +-> +g‘F›ldName +())) ?> => 'getType($column) ?>', + +74 + +75 +g‘MªyToMªyR–©iÚs +(è +as + +$»ÏtiÚ +): ?> + +76 'und”scÜe($»ÏtiÚ[' +®Ÿs +']è?>_li¡' +g‘CÞumnNameMaxL’gth +(è- +¡¾’ +($this-> +und”scÜe +( +$»ÏtiÚ +['alias']).'_list')) ?> => 'ManyKey', + +77 + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineFormFilter/default/template/sfDoctrineFormFilterPluginTemplate.php + +1 [? +php + + +11 +ab¡¿ù + +þass + +Plugš + +bË +-> +g‘O±iÚ +('Çme'è?> +FÜmFž‹r + +ex‹nds + +Ba£ +table->getOption('name') ?>FormFilter + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineFormFilter/default/template/sfDoctrineFormFilterTemplate.php + +1 [? +php + + +11 +þass + +bË +-> +g‘O±iÚ +('Çme'è?> +FÜmFž‹r + +ex‹nds + +Ba£ +table->getOption('name') ?>FormFilter + +13 +g‘P¬’tMod– +()): ?> + +17 +public + +funùiÚ + +cÚfigu» +() + +19 +·»Á +:: +cÚfigu» +(); + +21 + +22 +public + +funùiÚ + +cÚfigu» +() + +25 + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineFormFilter/default/template/sfDoctrinePluginFormFilterTemplate.php + +1 [? +php + + +11 +þass + +bË +-> +g‘O±iÚ +('Çme'è?> +FÜmFž‹r + +ex‹nds + +Plugš +table->getOption('name') ?>FormFilter + +13 +g‘P¬’tMod– +()): ?> + +17 +public + +funùiÚ + +cÚfigu» +() + +19 +·»Á +:: +cÚfigu» +(); + +21 + +22 +public + +funùiÚ + +cÚfigu» +() + +25 + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/actionsConfiguration.php + +1 +public + +funùiÚ + + $g‘AùiÚsDeçuÉ +() + +3  + `asPhp +( + `is£t +($this-> +cÚfig +['aùiÚs']è? $this->cÚfig['aùiÚs'] : + `¬¿y +()) ?>; + +4 +cÚfig +['actions']) ?> + +5 + } +} + +7 +public + +funùiÚ + + $g‘FÜmAùiÚs +() + +9  + `asPhp +( + `is£t +($this-> +cÚfig +['fÜm']['aùiÚs']è? $this->cÚfig['fÜm']['aùiÚs'] : + `¬¿y +('_d–‘e' => +nuÎ +, '_list' =>‚ull, '_save' =>‚ull, '_save_and_add' =>‚ull)) ?>; + +10 +cÚfig +['form']['actions']) ?> + +11 + } +} + +13 +public + +funùiÚ + + $g‘NewAùiÚs +() + +15  + `asPhp +( + `is£t +($this-> +cÚfig +['Ãw']['aùiÚs']è? $this->cÚfig['Ãw']['aùiÚs'] : + `¬¿y +()) ?>; + +16 +cÚfig +['new']['actions']) ?> + +17 + } +} + +19 +public + +funùiÚ + + $g‘Ed™AùiÚs +() + +21  + `asPhp +( + `is£t +($this-> +cÚfig +['ed™']['aùiÚs']è? $this->cÚfig['ed™']['aùiÚs'] : + `¬¿y +()) ?>; + +22 +cÚfig +['edit']['actions']) ?> + +23 + } +} + +25 +public + +funùiÚ + + $g‘Li¡ObjeùAùiÚs +() + +27  + `asPhp +( + `is£t +($this-> +cÚfig +['li¡']['objeù_aùiÚs']è? $this->cÚfig['li¡']['objeù_aùiÚs'] : + `¬¿y +('_ed™' => +nuÎ +, '_delete' =>‚ull)) ?>; + +28 +cÚfig +['list']['object_actions']) ?> + +29 + } +} + +31 +public + +funùiÚ + + $g‘Li¡AùiÚs +() + +33  + `asPhp +( + `is£t +($this-> +cÚfig +['li¡']['aùiÚs']è? $this->cÚfig['li¡']['aùiÚs'] : + `¬¿y +('_Ãw' => +nuÎ +)) ?>; + +34 +cÚfig +['list']['actions']) ?> + +35 + } +} + +37 +public + +funùiÚ + + $g‘Li¡B©chAùiÚs +() + +39  + `asPhp +( + `is£t +($this-> +cÚfig +['li¡']['b©ch_aùiÚs']è? $this->cÚfig['li¡']['b©ch_aùiÚs'] : + `¬¿y +('_d–‘e' => +nuÎ +)) ?>; + +40 +cÚfig +['list']['batch_actions']) ?> + +41 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/batchAction.php + +1 +public + +funùiÚ + + $execu‹B©ch +( +sfWebReque¡ + +$»que¡ +) + +3 +$»que¡ +-> + `checkCSRFPrÙeùiÚ +(); + +5 ià(! +$ids + = +$»que¡ +-> + `g‘P¬am‘” +('ids')) + +7 +$this +-> + `g‘U£r +()-> + `£tFÏsh +('error', 'You must‡t†east select one item.'); + +9 +$this +-> + `»dœeù +('@g‘U¾FÜAùiÚ(' +li¡ +') ?>'); + +12 ià(! +$aùiÚ + = +$»que¡ +-> + `g‘P¬am‘” +('batch_action')) + +14 +$this +-> + `g‘U£r +()-> + `£tFÏsh +('error', 'You must select‡n‡ctionoƒxecute onhe selected items.'); + +16 +$this +-> + `»dœeù +('@g‘U¾FÜAùiÚ(' +li¡ +') ?>'); + +19 ià(! + `m‘hod_exi¡s +( +$this +, +$m‘hod + = 'execu‹'. + `ucfœ¡ +( +$aùiÚ +))) + +21 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('You mu¡ c»©¨"%s" m‘hod f܇ùiÚ "%s"', +$m‘hod +, +$aùiÚ +)); + +24 ià(! +$this +-> + `g‘U£r +()-> + `hasC»d’tŸl +($this-> +cÚfigu¿tiÚ +-> + `g‘C»d’tŸls +( +$aùiÚ +))) + +26 +$this +-> + `fÜw¬d +( +sfCÚfig +:: + `g‘ +('sf_secure_module'), sfConfig::get('sf_secure_action')); + +29 +$v®id©Ü + = +Ãw + + `sfV®id©ÜDoùršeChoiû +( + `¬¿y +('muɝË' => +Œue +, 'model' => 'getModelClass() ?>')); + +30 +Œy + + +33 +$ids + = +$v®id©Ü +-> + `þ—n +($ids); + +36 +$this +-> + `$m‘hod +( +$»que¡ +); + +38 + `ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +40 +$this +-> + `g‘U£r +()-> + `£tFÏsh +('error', 'A…roblem occurs when deletinghe selected items‡s some items do‚otƒxist‡nymore.'); + +43 +$this +-> + `»dœeù +('@g‘U¾FÜAùiÚ(' +li¡ +') ?>'); + +44 + } +} + +46 +´Ùeùed + +funùiÚ + + $execu‹B©chD–‘e +( +sfWebReque¡ + +$»que¡ +) + +48 +$ids + = +$»que¡ +-> + `g‘P¬am‘” +('ids'); + +50 +$»cÜds + = +Doùrše_Qu”y +:: + `ü—‹ +() + +51 -> + `äom +('getModelClass() ?>') + +52 -> + `wh”eIn +('g‘Prim¬yKeysÑrueè?>', +$ids +) + +53 -> + `execu‹ +(); + +55 + `fܗch + ( +$»cÜds + +as + +$»cÜd +) + +57 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, 'admš.d–‘e_objeù', + `¬¿y +('objeù' => +$»cÜd +))); + +59 +$»cÜd +-> + `d–‘e +(); + +62 +$this +-> + `g‘U£r +()-> + `£tFÏsh +('notice', 'The selected items have been deleted successfully.'); + +63 +$this +-> + `»dœeù +('@g‘U¾FÜAùiÚ(' +li¡ +') ?>'); + +64 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/configuration.php + +1 [? +php + + +11 +ab¡¿ù + +þass + +Ba£ + +g‘ModuËName +()è?> +G’”©ÜCÚfigu¿tiÚ + +ex‹nds + +sfMod–G’”©ÜCÚfigu¿tiÚ + + +13 + +15 + +22 +public + +funùiÚ + +g‘FÜmCÏss +() + +24  'cÚfig[' +fÜm +'][' +þass +']è? $this->cÚfig['fÜm']['þass'] : $this->g‘Mod–CÏss().' +FÜm +' ?>'; + +25 +cÚfig +['form']['class']) ?> + +28 +public + +funùiÚ + +hasFž‹rFÜm +() + +30  +cÚfig +['fž‹r']['þass']è|| + gçl£ + !== $this->config['filter']['class'] ? 'true' : 'false' ?>; + +38 +public + +funùiÚ + +g‘Fž‹rFÜmCÏss +() + +40  'cÚfig[' + gfž‹r +'][' + gþass +']è&& !š_¬¿y($this->cÚfig['fž‹r']['þass'],‡¼ayÒuÎ,rue, f®£),rueè? $this->cÚfig['fž‹r']['þass'] : $this->g‘Mod–CÏss().' + gFÜmFž‹r +' ?>'; + +41 +cÚfig +['filter']['class']) ?> + +44 + +46 + +48 +public + +funùiÚ + +g‘TabËM‘hod +() + +50  'cÚfig[' + gli¡ +'][' + gbË_m‘hod +']) ? $this->config['list']['table_method'] :‚ull ?>'; + +51 +cÚfig +['list']['table_method']) ?> + +54 +public + +funùiÚ + +g‘TabËCouÁM‘hod +() + +56  'cÚfig[' + gli¡ +'][' + gbË_couÁ_m‘hod +']) ? $this->config['list']['table_count_method'] :‚ull ?>'; + +57 +cÚfig +['list']['table_count_method']) ?> + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/createAction.php + +1 +public + +funùiÚ + + $execu‹C»©e +( +sfWebReque¡ + +$»que¡ +) + +3 +$this +-> +fÜm + = $this-> +cÚfigu¿tiÚ +-> + `g‘FÜm +(); + +4 +$this +-> + `g‘SšguÏrName +(è?> = $this-> +fÜm +-> + `g‘Objeù +(); + +6 +$this +-> + `´oûssFÜm +( +$»que¡ +, $this-> +fÜm +); + +8 +$this +-> + `£tTem¶©e +('new'); + +9 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/deleteAction.php + +1 +public + +funùiÚ + + $execu‹D–‘e +( +sfWebReque¡ + +$»que¡ +) + +3 +$»que¡ +-> + `checkCSRFPrÙeùiÚ +(); + +5 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, 'admš.d–‘e_objeù', + `¬¿y +('objeù' => $this-> + `g‘Rou‹ +()-> + `g‘Objeù +()))); + +7 ià( +$this +-> + `g‘Rou‹ +()-> + `g‘Objeù +()-> + `d–‘e +()) + +9 +$this +-> + `g‘U£r +()-> + `£tFÏsh +('notice', 'The item was deleted successfully.'); + +12 +$this +-> + `»dœeù +('@g‘U¾FÜAùiÚ(' +li¡ +') ?>'); + +13 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/editAction.php + +1 +public + +funùiÚ + + $execu‹Ed™ +( +sfWebReque¡ + +$»que¡ +) + +3 +$this +-> + `g‘SšguÏrName +(è?> = $this-> + `g‘Rou‹ +()-> + `g‘Objeù +(); + +4 +$this +-> +fÜm + = $this-> +cÚfigu¿tiÚ +-> + `g‘FÜm +($this-> + `g‘SšguÏrName +() ?>); + +5 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/fieldsConfiguration.php + +1 +public + +funùiÚ + + $g‘Li¡P¬ams +() + +3  + `asPhp +( + `is£t +($this-> +cÚfig +['li¡']['·¿ms']è? $this->cÚfig['li¡']['·¿ms'] : '%%'. + `im¶ode +('%% - %%', is£t($this->cÚfig['li¡']['di¥Ïy']è? $this->cÚfig['li¡']['di¥Ïy'] : $this-> + `g‘AÎF›ldNames +( +çl£ +)).'%%') ?>; + +4 +cÚfig +['list']['params']) ?> + +5 + } +} + +7 +public + +funùiÚ + + $g‘Li¡Layout +() + +9  'cÚfig[' +li¡ +'][' +Ïyout +']è? $this->cÚfig['li¡']['Ïyout'] : ' +buÏr +' ?>'; + +10 +cÚfig +['list']['layout']) ?> + +11 + } +} + +13 +public + +funùiÚ + + $g‘Li¡T™Ë +() + +15  'esÿ³SŒšg(is£t($this->cÚfig[' +li¡ +'][' +t™Ë +']è? $this->cÚfig['li¡']['t™Ë'] : sfInæeùÜ::humªize($this->g‘ModuËName()).' +Li¡ +') ?>'; + +16 +cÚfig +['list']['title']) ?> + +17 + } +} + +19 +public + +funùiÚ + + $g‘Ed™T™Ë +() + +21  'esÿ³SŒšg(is£t($this->cÚfig[' +ed™ +'][' +t™Ë +']è? $this->cÚfig['ed™']['t™Ë'] : ' +Ed™ + '.sfInflector::humanize($this->getModuleName())) ?>'; + +22 +cÚfig +['edit']['title']) ?> + +23 + } +} + +25 +public + +funùiÚ + + $g‘NewT™Ë +() + +27  'esÿ³SŒšg(is£t($this->cÚfig[' +Ãw +'][' +t™Ë +']è? $this->cÚfig['Ãw']['t™Ë'] : ' +New + '.sfInflector::humanize($this->getModuleName())) ?>'; + +28 +cÚfig +['new']['title']) ?> + +29 + } +} + +31 +public + +funùiÚ + + $g‘Fž‹rDi¥Ïy +() + +33  + `asPhp +( + `is£t +($this-> +cÚfig +['fž‹r']['di¥Ïy']è? $this->cÚfig['fž‹r']['di¥Ïy'] : + `¬¿y +()) ?>; + +34 +cÚfig +['filter']['display']) ?> + +35 + } +} + +37 +public + +funùiÚ + + $g‘FÜmDi¥Ïy +() + +39  + `asPhp +( + `is£t +($this-> +cÚfig +['fÜm']['di¥Ïy']è? $this->cÚfig['fÜm']['di¥Ïy'] : + `¬¿y +()) ?>; + +40 +cÚfig +['form']['display']) ?> + +41 + } +} + +43 +public + +funùiÚ + + $g‘Ed™Di¥Ïy +() + +45  + `asPhp +( + `is£t +($this-> +cÚfig +['ed™']['di¥Ïy']è? $this->cÚfig['ed™']['di¥Ïy'] : + `¬¿y +()) ?>; + +46 +cÚfig +['edit']['display']) ?> + +47 + } +} + +49 +public + +funùiÚ + + $g‘NewDi¥Ïy +() + +51  + `asPhp +( + `is£t +($this-> +cÚfig +['Ãw']['di¥Ïy']è? $this->cÚfig['Ãw']['di¥Ïy'] : + `¬¿y +()) ?>; + +52 +cÚfig +['new']['display']) ?> + +53 + } +} + +55 +public + +funùiÚ + + $g‘Li¡Di¥Ïy +() + +57 +cÚfig +['list']['display'])): ?> + +58  + `asPhp +($this-> +cÚfig +['list']['display']) ?>; + +59 +cÚfig +['list']['hide'])): ?> + +60  + `asPhp +( + `¬¿y_diff +($this-> + `g‘AÎF›ldNames +( +çl£ +), $this-> +cÚfig +['list']['hide'])) ?>; + +61 + +62  + `asPhp +($this-> + `g‘AÎF›ldNames +( +çl£ +)) ?>; + +63 + +64 +cÚfig +['list']['display'], $this->config['list']['hide']) ?> + +65 + } +} + +67 +public + +funùiÚ + + $g‘F›ldsDeçuÉ +() + +69  + `¬¿y +( + +70 + `g‘DeçuÉF›ldsCÚfigu¿tiÚ +(è +as + +$Çme + => +$·¿ms +): ?> + +71 '' => + `asPhp +( +$·¿ms +) ?>, + +72 + +74 + } +} + +76 + +77 +public + +funùiÚ + +g‘F›lds +() + +79  +¬¿y +( + +80 +g‘F›ldsCÚfigu¿tiÚ +( +$cڋxt +è +as + +$Çme + => +$·¿ms +): ?> + +81 '' => +asPhp +( +$·¿ms +) ?>, + +82 + +86 + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/filterAction.php + +1 +public + +funùiÚ + + $execu‹Fž‹r +( +sfWebReque¡ + +$»que¡ +) + +3 +$this +-> + `£tPage +(1); + +5 ià( +$»que¡ +-> + `hasP¬am‘” +('_reset')) + +7 +$this +-> + `£tFž‹rs +($this-> +cÚfigu¿tiÚ +-> + `g‘Fž‹rDeçuÉs +()); + +9 +$this +-> + `»dœeù +('@g‘U¾FÜAùiÚ(' +li¡ +') ?>'); + +12 +$this +-> +fž‹rs + = $this-> +cÚfigu¿tiÚ +-> + `g‘Fž‹rFÜm +($this-> + `g‘Fž‹rs +()); + +14 +$this +-> +fž‹rs +-> + `bšd +( +$»que¡ +-> + `g‘P¬am‘” +($this->fž‹rs-> + `g‘Name +())); + +15 ià( +$this +-> +fž‹rs +-> + `isV®id +()) + +17 +$this +-> + `£tFž‹rs +($this-> +fž‹rs +-> + `g‘V®ues +()); + +19 +$this +-> + `»dœeù +('@g‘U¾FÜAùiÚ(' +li¡ +') ?>'); + +22 +$this +-> +·g” + = $this-> + `g‘Pag” +(); + +23 +$this +-> +sÜt + = $this-> + `g‘SÜt +(); + +25 +$this +-> + `£tTem¶©e +('index'); + +26 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/filtersAction.php + +1 +´Ùeùed + +funùiÚ + + $g‘Fž‹rs +() + +3  +$this +-> + `g‘U£r +()-> + `g‘A‰ribu‹ +('g‘ModuËName(è?>.fž‹rs', $this-> +cÚfigu¿tiÚ +-> + `g‘Fž‹rDeçuÉs +(), 'admin_module'); + +4 + } +} + +6 +´Ùeùed + +funùiÚ + + $£tFž‹rs +( +¬¿y + +$fž‹rs +) + +8  +$this +-> + `g‘U£r +()-> + `£tA‰ribu‹ +('g‘ModuËName(è?>.fž‹rs', +$fž‹rs +, 'admin_module'); + +9 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/indexAction.php + +1 +public + +funùiÚ + + $execu‹Index +( +sfWebReque¡ + +$»que¡ +) + +4 ià( +$»que¡ +-> + `g‘P¬am‘” +('sÜt'è&& +$this +-> + `isV®idSÜtCÞumn +($request->getParameter('sort'))) + +6 +$this +-> + `£tSÜt +( + `¬¿y +( +$»que¡ +-> + `g‘P¬am‘” +('sort'), $request->getParameter('sort_type'))); + +10 ià( +$»que¡ +-> + `g‘P¬am‘” +('page')) + +12 +$this +-> + `£tPage +( +$»que¡ +-> + `g‘P¬am‘” +('page')); + +15 +$this +-> +·g” + = $this-> + `g‘Pag” +(); + +16 +$this +-> +sÜt + = $this-> + `g‘SÜt +(); + +17 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/newAction.php + +1 +public + +funùiÚ + + $execu‹New +( +sfWebReque¡ + +$»que¡ +) + +3 +$this +-> +fÜm + = $this-> +cÚfigu¿tiÚ +-> + `g‘FÜm +(); + +4 +$this +-> + `g‘SšguÏrName +(è?> = $this-> +fÜm +-> + `g‘Objeù +(); + +5 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/paginationAction.php + +1 +´Ùeùed + +funùiÚ + + $g‘Pag” +() + +3 +$·g” + = +$this +-> +cÚfigu¿tiÚ +-> + `g‘Pag” +('getModelClass() ?>'); + +4 +$·g” +-> + `£tQu”y +( +$this +-> + `buždQu”y +()); + +5 +$·g” +-> + `£tPage +( +$this +-> + `g‘Page +()); + +6 +$·g” +-> + `š™ +(); + +8  +$·g” +; + +9 + } +} + +11 +´Ùeùed + +funùiÚ + + $£tPage +( +$·ge +) + +13 +$this +-> + `g‘U£r +()-> + `£tA‰ribu‹ +('g‘ModuËName(è?>.·ge', +$·ge +, 'admin_module'); + +14 + } +} + +16 +´Ùeùed + +funùiÚ + + $g‘Page +() + +18  +$this +-> + `g‘U£r +()-> + `g‘A‰ribu‹ +('getModuleName() ?>.page', 1, 'admin_module'); + +19 + } +} + +21 +´Ùeùed + +funùiÚ + + $buždQu”y +() + +23 +$bËM‘hod + = +$this +-> +cÚfigu¿tiÚ +-> + `g‘TabËM‘hod +(); + +24 +cÚfigu¿tiÚ +-> + `hasFž‹rFÜm +()): ?> + +25 ià( +nuÎ + ==ð +$this +-> +fž‹rs +) + +27 +$this +-> +fž‹rs + = $this-> +cÚfigu¿tiÚ +-> + `g‘Fž‹rFÜm +($this-> + `g‘Fž‹rs +()); + +30 +$this +-> +fž‹rs +-> + `£tTabËM‘hod +( +$bËM‘hod +); + +32 +$qu”y + = +$this +-> +fž‹rs +-> + `buždQu”y +($this-> + `g‘Fž‹rs +()); + +33 + +34 +$qu”y + = +Doùrše_CÜe +:: + `g‘TabË +('getModelClass() ?>') + +35 -> + `ü—‹Qu”y +('a'); + +37 ià( +$bËM‘hod +) + +39 +$qu”y + = +Doùrše_CÜe +:: + `g‘TabË +('g‘Mod–CÏss(è?>')-> + `$bËM‘hod +($query); + +41 + +43 +$this +-> + `addSÜtQu”y +( +$qu”y +); + +45 +$ev’t + = +$this +-> +di¥©ch” +-> + `fž‹r +( +Ãw + + `sfEv’t +($this, 'admš.bužd_qu”y'), +$qu”y +); + +46 +$qu”y + = +$ev’t +-> + `g‘R‘uºV®ue +(); + +48  +$qu”y +; + +49 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/paginationConfiguration.php + +1 +public + +funùiÚ + + $g‘Pag”CÏss +() + +3  'cÚfig[' +li¡ +'][' +·g”_þass +']è? $this->cÚfig['li¡']['·g”_þass'] : ' +sfDoùršePag” +' ?>'; + +4 +cÚfig +['list']['pager_class']) ?> + +5 + } +} + +7 +public + +funùiÚ + + $g‘Pag”MaxP”Page +() + +9  +cÚfig +['li¡']['max_³r_·ge']è? ( +š‹g” +) $this->config['list']['max_per_page'] : 20 ?>; + +10 +cÚfig +['list']['max_per_page']) ?> + +11 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/processFormAction.php + +1 +´Ùeùed + +funùiÚ + + $´oûssFÜm +( +sfWebReque¡ + +$»que¡ +, +sfFÜm + +$fÜm +) + +3 +$fÜm +-> + `bšd +( +$»que¡ +-> + `g‘P¬am‘” +($fÜm-> + `g‘Name +()), $»que¡-> + `g‘Fžes +($form->getName())); + +4 ià( +$fÜm +-> + `isV®id +()) + +6 +$nÙiû + = +$fÜm +-> + `g‘Objeù +()-> + `isNew +() ? 'The item was created successfully.' : 'The item was updated successfully.'; + +8 +Œy + { + +9 +$ + + `g‘SšguÏrName +(è?> = +$fÜm +-> + `§ve +(); + +10 } + `ÿtch + ( +Doùrše_V®id©Ü_Exû±iÚ + +$e +) { + +12 +$”rÜSck + = +$fÜm +-> + `g‘Objeù +()-> + `g‘E¼ÜSck +(); + +14 +$mes§ge + = + `g‘_þass +( +$fÜm +-> + `g‘Objeù +()è. ' ha ' . + `couÁ +( +$”rÜSck +è. " f›ld" . (couÁ($”rÜSckè> 1 ? 's' : +nuÎ +) . " with validationƒrrors: "; + +15 + `fܗch + ( +$”rÜSck + +as + +$f›ld + => +$”rÜs +) { + +16 +$mes§ge + .ð"$f›ld (" . + `im¶ode +(", ", +$”rÜs +) . "), "; + +18 +$mes§ge + = + `Œim +($message, ', '); + +20 +$this +-> + `g‘U£r +()-> + `£tFÏsh +('”rÜ', +$mes§ge +); + +21  +sfV›w +:: +SUCCESS +; + +24 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, 'admš.§ve_objeù', + `¬¿y +('objeù' => +$ + + `g‘SšguÏrName +() ?>))); + +26 ià( +$»que¡ +-> + `hasP¬am‘” +('_save_and_add')) + +28 +$this +-> + `g‘U£r +()-> + `£tFÏsh +('nÙiû', +$nÙiû +.' You can‡dd‡nother one below.'); + +30 +$this +-> + `»dœeù +('@g‘U¾FÜAùiÚ(' +Ãw +') ?>'); + +34 +$this +-> + `g‘U£r +()-> + `£tFÏsh +('nÙiû', +$nÙiû +); + +36 +$this +-> + `»dœeù +( + `¬¿y +('sf_rou‹' => 'g‘U¾FÜAùiÚ(' +ed™ +'è?>', 'sf_subjeù' => +$ + + `g‘SšguÏrName +() ?>)); + +41 +$this +-> + `g‘U£r +()-> + `£tFÏsh +('”rÜ', 'Th™em ha nÙ b“À§ved dutØsom”rÜs.', +çl£ +); + +43 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/sortingAction.php + +1 +´Ùeùed + +funùiÚ + + $addSÜtQu”y +( +$qu”y +) + +3 ià( + `¬¿y +( +nuÎ +,‚uÎè=ð( +$sÜt + = +$this +-> + `g‘SÜt +())) + +8 ià(! + `š_¬¿y +( + `¡¹Þow” +( +$sÜt +[1]), + `¬¿y +('asc', 'desc'))) + +10 +$sÜt +[1] = 'asc'; + +13 +$qu”y +-> + `addOrd”By +( +$sÜt +[0] . ' ' . $sort[1]); + +14 + } +} + +16 +´Ùeùed + +funùiÚ + + $g‘SÜt +() + +18 ià( +nuÎ + !=ð +$sÜt + = +$this +-> + `g‘U£r +()-> + `g‘A‰ribu‹ +('getModuleName() ?>.sort',‚ull, 'admin_module')) + +20  +$sÜt +; + +23 +$this +-> + `£tSÜt +($this-> +cÚfigu¿tiÚ +-> + `g‘DeçuÉSÜt +()); + +25  +$this +-> + `g‘U£r +()-> + `g‘A‰ribu‹ +('g‘ModuËName(è?>.sÜt', +nuÎ +, 'admin_module'); + +26 + } +} + +28 +´Ùeùed + +funùiÚ + + $£tSÜt +( +¬¿y + +$sÜt +) + +30 ià( +nuÎ + !=ð +$sÜt +[0] &&‚ull === $sort[1]) + +32 +$sÜt +[1] = 'asc'; + +35 +$this +-> + `g‘U£r +()-> + `£tA‰ribu‹ +('g‘ModuËName(è?>.sÜt', +$sÜt +, 'admin_module'); + +36 + } +} + +38 +´Ùeùed + +funùiÚ + + $isV®idSÜtCÞumn +( +$cÞumn +) + +40  +Doùrše_CÜe +:: + `g‘TabË +('g‘Mod–CÏss(è?>')-> + `hasCÞumn +( +$cÞumn +); + +41 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/sortingConfiguration.php + +1 +public + +funùiÚ + + $g‘DeçuÉSÜt +() + +3 +cÚfig +['li¡']['sÜt']è? $this->cÚfig['li¡']['sÜt'] : +çl£ +)): ?> + +4 + +5  + `¬¿y +('', ''); + +6 + +7  + `¬¿y +( +nuÎ +,‚ull); + +8 + +9 +cÚfig +['list']['sort']) ?> + +10 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/parts/updateAction.php + +1 +public + +funùiÚ + + $execu‹Upd©e +( +sfWebReque¡ + +$»que¡ +) + +3 +$this +-> + `g‘SšguÏrName +(è?> = $this-> + `g‘Rou‹ +()-> + `g‘Objeù +(); + +4 +$this +-> +fÜm + = $this-> +cÚfigu¿tiÚ +-> + `g‘FÜm +($this-> + `g‘SšguÏrName +() ?>); + +6 +$this +-> + `´oûssFÜm +( +$»que¡ +, $this-> +fÜm +); + +8 +$this +-> + `£tTem¶©e +('edit'); + +9 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/skeleton/actions/actions.class.php + +1 moduleName) ?>GeneratorConfiguration.class.php'); + +4 +»quœe_Úû +( +dœÇme +( +__FILE__ +).'/../lib/BasemoduleName) ?>GeneratorHelper.class.php'); + +14 +ab¡¿ù + +þass + +g‘G’”©edModuËName +(è?> +AùiÚs + +ex‹nds + +g‘AùiÚsBa£CÏss +()."\n" ?> + +16 +public + +funùiÚ + +´eExecu‹ +() + +18 +$this +-> +cÚfigu¿tiÚ + = +Ãw + +g‘ModuËName +(è?> +G’”©ÜCÚfigu¿tiÚ +(); + +20 ià(! +$this +-> +g‘U£r +()-> +hasC»d’tŸl +($this-> +cÚfigu¿tiÚ +-> +g‘C»d’tŸls +($this-> +g‘AùiÚName +()))) + +22 +$this +-> +fÜw¬d +( +sfCÚfig +:: +g‘ +('sf_secure_module'), sfConfig::get('sf_secure_action')); + +25 +$this +-> +di¥©ch” +-> +nÙify +( +Ãw + +sfEv’t +($this, 'admš.´e_execu‹', +¬¿y +('cÚfigu¿tiÚ' => $this-> +cÚfigu¿tiÚ +))); + +27 +$this +-> +h–³r + = +Ãw + +g‘ModuËName +(è?> +G’”©ÜH–³r +(); + +29 +·»Á +:: +´eExecu‹ +(); + +32 + +34 +cÚfigu¿tiÚ +-> +hasFž‹rFÜm +()): ?> + +35 + +36 + +38 + +40 + +42 + +44 + +46 + +48 +cÚfigu¿tiÚ +-> +g‘V®ue +('list.batch_actions')): ?> + +49 + +50 + +52 + +54 +cÚfigu¿tiÚ +-> +hasFž‹rFÜm +()): ?> + +55 + +56 + +58 + +60 + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/lib/helper.php + +1 [? +php + + +11 +ab¡¿ù + +þass + +Ba£ + +g‘ModuËName +()è?> +G’”©ÜH–³r + +ex‹nds + +sfMod–G’”©ÜH–³r + + +13 +public + +funùiÚ + +g‘U¾FÜAùiÚ +( +$aùiÚ +) + +15  'li¡' =ð +$aùiÚ + ? '·¿ms[' +rou‹_´efix +'] ?>' : 'params['route_prefix'] ?>_'.$action; + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/_assets.php + +1 +·¿ms +['css']è&& ( + g$this +-> + g·¿ms +['css'] !=ð +çl£ +)): ?> + +2 [? +php + +u£_¡yËsh“t +('·¿ms[' +css +'] ?>', 'first') ?] + +3 +·¿ms +['css'])): ?> + +4 [? +php + +u£_¡yËsh“t +('', 'first') ?] + +5 [? +php + +u£_¡yËsh“t +('', 'first') ?] + +6 + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/_filters.php + +1 [? +php + +u£_¡yËsh“ts_fÜ_fÜm +( +$fÜm +) ?] + +2 [? +php + +u£_javasüts_fÜ_fÜm +( +$fÜm +) ?] + +4 < +div + + gþass +="sf_admin_filter"> + +5 [? +php + ià( +$fÜm +-> + $hasGlob®E¼Üs +()): ?] + +6 [? +php + +echo + +$fÜm +-> + `»nd”Glob®E¼Üs +() ?] + +7 [? +php + +’dif +; ?] + +9 < +fÜm + +aùiÚ +="[?ph°echØu¾_fÜ('g‘U¾FÜAùiÚ('cÞËùiÚ'è?>',‡¼ay('aùiÚ' => 'fž‹r')è?]" +m‘hod +="post"> + +10 < +bË + +ûÎ¥acšg +="0"> + +11 < +tfoÙ +> + +12 < +Œ +> + +13 < +td + +cÞ¥ª +="2"> + +14 [? +php + +echo + +$fÜm +-> + `»nd”Hidd’F›lds +() ?] + +15 [? +php + +echo + + `lšk_to +( + `__ +('Re£t', + `¬¿y +(), 'sf_admš'), 'g‘U¾FÜAùiÚ(' +cÞËùiÚ +') ?>',‡rray('action' => 'filter'),‡rray('query_string' => '_reset', 'method' => 'post')) ?] + +16 < +šput + +ty³ +="subm™" +v®ue +="[?phpƒcho __('Filter',‡rray(), 'sf_admin') ?]" /> + +17 + +18 + +19 + +20 < +tbody +> + +21 [? +php + + `fܗch + ( +$cÚfigu¿tiÚ +-> + $g‘FÜmFž‹rF›lds +( +$fÜm +è +as + +$Çme + => +$f›ld +): ?] + +22 [? +php + ià(( + `is£t +( +$fÜm +[ +$Çme +]è&& $fÜm[$Çme]-> + `isHidd’ +()è|| (!is£t($fÜm[$Çme]è&& +$f›ld +-> + $isR—l +()))  ?] + +23 [? +php + + `šþude_·¹Ÿl +('g‘ModuËName(è?>/fž‹rs_f›ld', + `¬¿y +( + +24 'Çme' => +$Çme +, + +25 '©Œibu‹s' => +$f›ld +-> + `g‘CÚfig +('©Œibu‹s', + `¬¿y +()), + +26 'Ïb–' => +$f›ld +-> + `g‘CÚfig +('label'), + +27 'h–p' => +$f›ld +-> + `g‘CÚfig +('help'), + +28 'fÜm' => +$fÜm +, + +29 'f›ld' => +$f›ld +, + +30 'þass' => 'sf_admš_fÜm_row sf_admš_'. + `¡¹Þow” +( +$f›ld +-> + `g‘Ty³ +()).' sf_admš_fž‹r_f›ld_'. +$Çme +, + +32 [? +php + +’dfܗch +; ?] + +33 + +34 + +35 + +36 + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/_filters_field.php + +1 [? +php + ià( +$f›ld +-> + $isP¬tŸl +()): ?] + +2 [? +php + + `šþude_·¹Ÿl +('g‘ModuËName(è?>/'. +$Çme +, + `¬¿y +('ty³' => 'fž‹r', 'fÜm' => +$fÜm +, '©Œibu‹s' => +$©Œibu‹s + +š¡ªûof + +sfOuutEsÿ³r + ? $©Œibu‹s-> + $g‘RawV®ue +(è: +$©Œibu‹s +)) ?] + +3 [? +php + + `–£if + ( +$f›ld +-> + $isCompڒt +()): ?] + +4 [? +php + + `šþude_compڒt +('g‘ModuËName(è?>', +$Çme +, + `¬¿y +('ty³' => 'fž‹r', 'fÜm' => +$fÜm +, '©Œibu‹s' => +$©Œibu‹s + +š¡ªûof + +sfOuutEsÿ³r + ? $©Œibu‹s-> + $g‘RawV®ue +(è: +$©Œibu‹s +)) ?] + +5 [? +php + : ?] + +6 < +Œ + +þass +="[?phpƒcho $class ?]"> + +7 < +td +> + +8 [? +php + +echo + +$fÜm +[ +$Çme +]-> + `»nd”Lab– +( +$Ïb– +) ?] + +9 + +10 < +td +> + +11 [? +php + +echo + +$fÜm +[ +$Çme +]-> + `»nd”E¼Ü +() ?] + +13 [? +php + +echo + +$fÜm +[ +$Çme +]-> + `»nd” +( +$©Œibu‹s + +š¡ªûof + +sfOuutEsÿ³r + ? $©Œibu‹s-> + $g‘RawV®ue +(è: +$©Œibu‹s +) ?] + +15 [? +php + ià( +$h–p + || $h–°ð +$fÜm +[ +$Çme +]-> + $»nd”H–p +()): ?] + +16 < +div + +þass +="h–p">[? +php + +echo + + `__ +( +$h–p +, + `¬¿y +(), 'getI18nCatalogue() ?>') ?] + +17 [? +php + +’dif +; ?] + +18 + +19 + +20 [? +php + +’dif +; ?] + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/_flashes.php + +1 [? +php + ià( +$sf_u£r +-> +hasFÏsh +('notice')): ?] + +2 < +div + +þass +="nÙiû">[? +php + +echo + +__ +( +$sf_u£r +-> +g‘FÏsh +('nÙiû'), +¬¿y +(), 'sf_admš'è?] + +3 [? +php + +’dif +; ?] + +5 [? +php + ià( +$sf_u£r +-> +hasFÏsh +('error')): ?] + +6 < +div + +þass +="”rÜ">[? +php + +echo + +__ +( +$sf_u£r +-> +g‘FÏsh +('”rÜ'), +¬¿y +(), 'sf_admš'è?] + +7 [? +php + +’dif +; ?] + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/_form.php + +1 [? +php + +u£_¡yËsh“ts_fÜ_fÜm +( +$fÜm +) ?] + +2 [? +php + +u£_javasüts_fÜ_fÜm +( +$fÜm +) ?] + +4 < +div + + gþass +="sf_admin_form"> + +5 [? +php + +echo + +fÜm_g_fÜ +( +$fÜm +, '@·¿ms[' +rou‹_´efix +'] ?>') ?] + +6 [? +php + +echo + +$fÜm +-> +»nd”Hidd’F›lds +( +çl£ +) ?] + +8 [? +php + ià( +$fÜm +-> + $hasGlob®E¼Üs +()): ?] + +9 [? +php + +echo + +$fÜm +-> + `»nd”Glob®E¼Üs +() ?] + +10 [? +php + +’dif +; ?] + +12 [? +php + + `fܗch + ( +$cÚfigu¿tiÚ +-> + `g‘FÜmF›lds +( +$fÜm +, $fÜm-> + `isNew +(è? 'Ãw' : 'ed™'è +as + +$f›ld£t + => +$f›lds +): ?] + +13 [? +php + + `šþude_·¹Ÿl +('g‘ModuËName(è?>/fÜm_f›ld£t', + `¬¿y +('g‘SšguÏrName(è?>' => +$ + + `g‘SšguÏrName +(è?>, 'fÜm' => +$fÜm +, 'f›lds' => +$f›lds +, 'f›ld£t' => +$f›ld£t +)) ?] + +14 [? +php + +’dfܗch +; ?] + +16 [? +php + + `šþude_·¹Ÿl +('g‘ModuËName(è?>/fÜm_aùiÚs', + `¬¿y +('g‘SšguÏrName(è?>' => +$ + + `g‘SšguÏrName +(è?>, 'fÜm' => +$fÜm +, 'cÚfigu¿tiÚ' => +$cÚfigu¿tiÚ +, 'h–³r' => +$h–³r +)) ?] + +17 + +18 + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/_form_actions.php + +1 < +ul + + gþass +="sf_admin_actions"> + +2 + +3 + +4 [? +php + ià( +$fÜm +-> + $isNew +()): ?] + +5 + +6 [? +php + : ?] + +7 + +8 +cÚfigu¿tiÚ +-> + `g‘V®ue +( +$aùiÚ +.'.aùiÚs'è +as + +$Çme + => +$·¿ms +): ?> + +9 + +10 + `addC»d’tŸlCÚd™iÚ +('[?ph°echØ$h–³r->lškToD–‘e($fÜm->g‘Objeù(), '.$this-> + `asPhp +( +$·¿ms +).') ?]', $params) ?> + +12 + +13 + `addC»d’tŸlCÚd™iÚ +('[?ph°echØ$h–³r->lškToLi¡('.$this-> + `asPhp +( +$·¿ms +).') ?]', $params) ?> + +15 + +16 + `addC»d’tŸlCÚd™iÚ +('[?ph°echØ$h–³r->lškToSave($fÜm->g‘Objeù(), '.$this-> + `asPhp +( +$·¿ms +).') ?]', $params) ?> + +18 + +19 + `addC»d’tŸlCÚd™iÚ +('[?ph°echØ$h–³r->lškToSaveAndAdd($fÜm->g‘Objeù(), '.$this-> + `asPhp +( +$·¿ms +).') ?]', $params) ?> + +21 + +22 < +li + +þass +="sf_admin_action_"> + +23 [? +php + ià( + `m‘hod_exi¡s +( +$h–³r +, 'linkTo')): ?] + +24 + `addC»d’tŸlCÚd™iÚ +('[?ph°echØ$h–³r->lškTo'. +$m‘hod +.'($fÜm->g‘Objeù(), '.$this-> + `asPhp +( +$·¿ms +).') ?]', $params) ?> + +26 [? +php + : ?] + +27 + `addC»d’tŸlCÚd™iÚ +($this-> + `g‘LškToAùiÚ +( +$Çme +, +$·¿ms +, +Œue +), $params) ?> + +29 [? +php + +’dif +; ?] + +30 + +31 + +32 + +33 + +34 [? +php + +’dif +; ?] + +35 + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/_form_field.php + +1 [? +php + ià( +$f›ld +-> + $isP¬tŸl +()): ?] + +2 [? +php + + `šþude_·¹Ÿl +('g‘ModuËName(è?>/'. +$Çme +, + `¬¿y +('fÜm' => +$fÜm +, '©Œibu‹s' => +$©Œibu‹s + +š¡ªûof + +sfOuutEsÿ³r + ? $©Œibu‹s-> + $g‘RawV®ue +(è: +$©Œibu‹s +)) ?] + +3 [? +php + + `–£if + ( +$f›ld +-> + $isCompڒt +()): ?] + +4 [? +php + + `šþude_compڒt +('g‘ModuËName(è?>', +$Çme +, + `¬¿y +('fÜm' => +$fÜm +, '©Œibu‹s' => +$©Œibu‹s + +š¡ªûof + +sfOuutEsÿ³r + ? $©Œibu‹s-> + $g‘RawV®ue +(è: +$©Œibu‹s +)) ?] + +5 [? +php + : ?] + +6 < +div + +þass +="[?phpƒcho $class ?][?php $form[$name]->hasError()‡nd…rint 'ƒrrors' ?]"> + +7 [? +php + +echo + +$fÜm +[ +$Çme +]-> + `»nd”E¼Ü +() ?] + +8 < +div +> + +9 [? +php + +echo + +$fÜm +[ +$Çme +]-> + `»nd”Lab– +( +$Ïb– +) ?] + +11 < +div + +þass +="cڋÁ">[? +php + +echo + +$fÜm +[ +$Çme +]-> + `»nd” +( +$©Œibu‹s + +š¡ªûof + +sfOuutEsÿ³r + ? $©Œibu‹s-> + $g‘RawV®ue +(è: +$©Œibu‹s +è?] + +13 [? +php + ià( +$h–p +): ?] + +14 < +div + +þass +="h–p">[? +php + +echo + + `__ +( +$h–p +, + `¬¿y +(), 'getI18nCatalogue() ?>') ?] + +15 [? +php + + `–£if + ( +$h–p + = +$fÜm +[ +$Çme +]-> + $»nd”H–p +()): ?] + +16 < +div + +þass +="h–p">[? +php + +echo + +$h–p + ?] + +17 [? +php + +’dif +; ?] + +18 + +19 + +20 [? +php + +’dif +; ?] + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/_form_fieldset.php + +1 < +f›ld£t + + gid +="sf_fieldset_[?phpƒcho…reg_replace('/[^a-z0-9_]/', '_', strtolower($fieldset)) ?]"> + +2 [? +php + ià('NONE' !ð +$f›ld£t +): ?] + +3 < +h2 +>[? +php + +echo + +__ +( +$f›ld£t +, +¬¿y +(), 'g‘I18nC©®ogue(è?>'è?] + +4 [? +php + +’dif +; ?] + +6 [? +php + +fܗch + ( +$f›lds + +as + +$Çme + => +$f›ld +): ?] + +7 [? +php + ià(( +is£t +( +$fÜm +[ +$Çme +]è&& $fÜm[$Çme]-> +isHidd’ +()è|| (!is£t($fÜm[$Çme]è&& +$f›ld +-> + $isR—l +()))  ?] + +8 [? +php + + `šþude_·¹Ÿl +('g‘ModuËName(è?>/fÜm_f›ld', + `¬¿y +( + +9 'Çme' => +$Çme +, + +10 '©Œibu‹s' => +$f›ld +-> + `g‘CÚfig +('©Œibu‹s', + `¬¿y +()), + +11 'Ïb–' => +$f›ld +-> + `g‘CÚfig +('label'), + +12 'h–p' => +$f›ld +-> + `g‘CÚfig +('help'), + +13 'fÜm' => +$fÜm +, + +14 'f›ld' => +$f›ld +, + +15 'þass' => 'sf_admš_fÜm_row sf_admš_'. + `¡¹Þow” +( +$f›ld +-> + `g‘Ty³ +()).' sf_admš_fÜm_f›ld_'. +$Çme +, + +17 [? +php + +’dfܗch +; ?] + +18 + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/_form_footer.php + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/_form_header.php + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/_list.php + +1 < +div + + gþass +="sf_admin_list"> + +2 [? +php + ià(! +$·g” +-> + $g‘NbResuÉs +()): ?] + +3 < +p +>[? +php + +echo + + `__ +('NØ»suÉ', + `¬¿y +(), 'sf_admin') ?]

    + +4 [? +php + : ?] + +5 < +bË + +ûÎ¥acšg +="0"> + +6 < +th—d +> + +7 < +Œ +> + +8 +cÚfigu¿tiÚ +-> + `g‘V®ue +('list.batch_actions')): ?> + +9 < +th + +id +="sf_admš_li¡_b©ch_aùiÚs">< +šput + id="sf_admš_li¡_b©ch_checkbox" +ty³ +="checkbox" +Úþick +="checkAll();" /> + +10 + +11 [? +php + + `šþude_·¹Ÿl +('g‘ModuËName(è?>/li¡_th_cÚfigu¿tiÚ->g‘V®ue(' +li¡ +. +Ïyout +'è?>', + `¬¿y +('sÜt' => +$sÜt +)) ?] + +12 +cÚfigu¿tiÚ +-> + `g‘V®ue +('list.object_actions')): ?> + +13 < +th + +id +="sf_admš_li¡_th_aùiÚs">[? +php + +echo + + `__ +('AùiÚs', + `¬¿y +(), 'sf_admin') ?] + +14 + +15 + +16 + +17 < +tfoÙ +> + +18 < +Œ +> + +19 < +th + +cÞ¥ª +="configuration->getValue('list.display')) + ($this->configuration->getValue('list.object_actions') ? 1 : 0) + ($this->configuration->getValue('list.batch_actions') ? 1 : 0) ?>"> + +20 [? +php + ià( +$·g” +-> + $haveToPagš©e +()): ?] + +21 [? +php + + `šþude_·¹Ÿl +('g‘ModuËName(è?>/·gš©iÚ', + `¬¿y +('·g”' => +$·g” +)) ?] + +22 [? +php + +’dif +; ?] + +24 [? +php + +echo + + `fÜm©_numb”_choiû +('[0]‚Ø»suÉ|[1] 1„esuÉ|(1,+Inf] %1%„esuÉs', + `¬¿y +('%1%' => +$·g” +-> + `g‘NbResuÉs +()), $pager->getNbResults(), 'sf_admin') ?] + +25 [? +php + ià( +$·g” +-> + $haveToPagš©e +()): ?] + +26 [? +php + +echo + + `__ +('Õag%%·ge%%/%%nb_·ges%%)', + `¬¿y +('%%·ge%%' => +$·g” +-> + `g‘Page +(), '%%nb_·ges%%' => $·g”-> + `g‘La¡Page +()), 'sf_admin') ?] + +27 [? +php + +’dif +; ?] + +28 + +29 + +30 + +31 < +tbody +> + +32 [? +php + + `fܗch + ( +$·g” +-> + $g‘ResuÉs +(è +as + +$i + => +$ + + `g‘SšguÏrName +(è?>): +$odd + = + `fmod +(++$i, 2) ? 'odd' : 'even' ?] + +33 < +Œ + +þass +="sf_admin_row [?phpƒcho $odd ?]"> + +34 +cÚfigu¿tiÚ +-> + `g‘V®ue +('list.batch_actions')): ?> + +35 [? +php + + `šþude_·¹Ÿl +('g‘ModuËName(è?>/li¡_td_b©ch_aùiÚs', + `¬¿y +('g‘SšguÏrName(è?>' => +$ + + `g‘SšguÏrName +(è?>, 'h–³r' => +$h–³r +)) ?] + +36 + +37 [? +php + + `šþude_·¹Ÿl +('g‘ModuËName(è?>/li¡_td_cÚfigu¿tiÚ->g‘V®ue(' +li¡ +. +Ïyout +'è?>', + `¬¿y +('g‘SšguÏrName(è?>' => +$ + + `g‘SšguÏrName +() ?>)) ?] + +38 +cÚfigu¿tiÚ +-> + `g‘V®ue +('list.object_actions')): ?> + +39 [? +php + + `šþude_·¹Ÿl +('g‘ModuËName(è?>/li¡_td_aùiÚs', + `¬¿y +('g‘SšguÏrName(è?>' => +$ + + `g‘SšguÏrName +(è?>, 'h–³r' => +$h–³r +)) ?] + +40 + +41 + +42 [? +php + +’dfܗch +; ?] + +43 + +44 + +45 [? +php + +’dif +; ?] + +46 + +47 < +süt + +ty³ +="text/javascript"> + +49 +funùiÚ + + $checkAÎ +() + +51 +v¬ + +boxes + = +docum’t +. + `g‘EËm’tsByTagName +('šput'); v¬ +šdex + = 0; index < boxes. +Ëngth +; index++è{ +box + = boxes[šdex]; ià(box. +ty³ + =ð'checkbox' && box. +þassName + =ð'sf_admš_b©ch_checkbox'èbox. +checked + = docum’t. + `g‘EËm’tById +('sf_admš_li¡_b©ch_checkbox').checked }  +Œue +; + +52 + } +} + +54 + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/_list_actions.php + +1 +cÚfigu¿tiÚ +-> +g‘V®ue +('list.actions')): ?> + +2 +$·¿ms +): ?> + +3 + +4 +addC»d’tŸlCÚd™iÚ +('[?ph°echØ$h–³r->lškToNew('.$this-> +asPhp +( +$·¿ms +).') ?]', $params)."\n" ?> + +5 + +6 < +li + +þass +="sf_admin_action_"> + +7 +addC»d’tŸlCÚd™iÚ +($this-> +g‘LškToAùiÚ +( +$Çme +, +$·¿ms +, +çl£ +), $params)."\n" ?> + +8 + +9 + +10 + +11 + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/_list_batch_actions.php + +1 +cÚfigu¿tiÚ +-> +g‘V®ue +('list.batch_actions')): ?> + +2 < +li + +þass +="sf_admin_batch_actions_choice"> + +3 < +£Ëù + +Çme +="batch_action"> + +4 < +ÝtiÚ + +v®ue +="">[? +php + +echo + +__ +('Choo£‡ÀaùiÚ', +¬¿y +(), 'sf_admš'è?] + +5 +$·¿ms +): ?> + +6 +addC»d’tŸlCÚd™iÚ +('<ÝtiÚ v®ue="'. +$aùiÚ +.'">[?ph°echØ__(\''. +$·¿ms +['label'].'\',‡rray(), \'sf_admin\') ?]', $params) ?> + +8 + +9 + +10 [? +php + +$fÜm + = +Ãw + +Ba£FÜm +(); ià($fÜm-> + $isCSRFPrÙeùed +()): ?] + +11 < +šput + +ty³ +="hidd’" +Çme +="[?ph°echØ$fÜm->g‘CSRFF›ldName(è?]" +v®ue +="[?phpƒcho $form->getCSRFToken() ?]" /> + +12 [? +php + +’dif +; ?] + +13 < +šput + +ty³ +="subm™" +v®ue +="[?phpƒcho __('go',‡rray(), 'sf_admin') ?]" /> + +14 + +15 + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/_list_field_boolean.php + +1 [? +php + ià( +$v®ue +): ?] + +2 [? +php + +echo + +image_g +( +sfCÚfig +:: +g‘ +('sf_admš_moduË_web_dœ').'/images/tick.²g', +¬¿y +('®t' => +__ +('Checked',‡rray(), 'sf_admin'), 'title' => __('Checked',‡rray(), 'sf_admin'))) ?] + +3 [? +php + : ?] + +4 & +nb¥ +; + +5 [? +php + +’dif +; ?] + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/_list_footer.php + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/_list_header.php + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/_list_td_actions.php + +1 < + gtd +> + +2 < +ul + + gþass +="sf_admin_td_actions"> + +3 +cÚfigu¿tiÚ +-> +g‘V®ue +('li¡.objeù_aùiÚs'è +as + +$Çme + => +$·¿ms +): ?> + +4 + +5 +addC»d’tŸlCÚd™iÚ +('[?ph°echØ$h–³r->lškToD–‘e($'.$this-> +g‘SšguÏrName +().', '.$this-> +asPhp +( +$·¿ms +).') ?]', $params) ?> + +7 + +8 +addC»d’tŸlCÚd™iÚ +('[?ph°echØ$h–³r->lškToEd™($'.$this-> +g‘SšguÏrName +().', '.$this-> +asPhp +( +$·¿ms +).') ?]', $params) ?> + +10 + +11 < +li + +þass +="sf_admin_action_"> + +12 +addC»d’tŸlCÚd™iÚ +($this-> +g‘LškToAùiÚ +( +$Çme +, +$·¿ms +, +Œue +), $params) ?> + +14 + +15 + +16 + +17 + +18 + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/_list_td_batch_actions.php + +1 < + gtd +> + +2 < +šput + + gty³ +="checkbox" +Çme +="ids[]" +v®ue +="[?ph°echØ$g‘SšguÏrName(è?>->g‘Prim¬yKey(è?]" +þass +="sf_admin_batch_checkbox" /> + +3 + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/_list_td_stacked.php + +1 < +td + + gcÞ¥ª +="configuration->getValue('list.display')) ?>"> + +2 [? +php + +echo + +g‘I18NSŒšg +('list.params') ?> ?] + +3 + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/_list_td_tabular.php + +1 +cÚfigu¿tiÚ +-> +g‘V®ue +('li¡.di¥Ïy'è +as + +$Çme + => +$f›ld +): ?> + +2 +addC»d’tŸlCÚd™iÚ +( +¥rštf +(<<< +EOF + + +3 < +td + +þass +="sf_admin_%s sf_admin_list_td_%s"> + +4 [? +php + +echo + % +s + ?] + +5 + +7 +EOF + + +8 , +¡¹Þow” +( +$f›ld +-> +g‘Ty³ +()), +$Çme +, +$this +-> +»nd”F›ld +($f›ld)), $f›ld-> +g‘CÚfig +()) ?> + +9 + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/_list_th_stacked.php + +1 [? +php + +šþude_·¹Ÿl +('g‘ModuËName(è?>/li¡_th_buÏr', +¬¿y +('sÜt' => +$sÜt +)) ?] + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/_list_th_tabular.php + +1 +cÚfigu¿tiÚ +-> +g‘V®ue +('li¡.di¥Ïy'è +as + +$Çme + => +$f›ld +): ?> + +2 [? +php + +¦Ù +('sf_admin.current_header') ?] + +3 < +th + +þass +="sf_admin_getType()) ?> sf_admin_list_th_"> + +4 + $isR—l +()): ?> + +5 [? +php + ià('' =ð +$sÜt +[0]): ?] + +6 [? +php + +echo + + `lšk_to +( + `__ +('g‘CÚfig(' +Ïb– +', '',rueè?>', + `¬¿y +(), 'g‘I18nC©®ogue(è?>'), '@g‘U¾FÜAùiÚ(' +li¡ +'è?>',‡¼ay('qu”y_¡ršg' => 'sÜt=&sÜt_ty³='.( +$sÜt +[1] == 'asc' ? 'desc' : 'asc'))) ?] + +7 [? +php + +echo + + `image_g +( +sfCÚfig +:: + `g‘ +('sf_admš_moduË_web_dœ').'/images/'. +$sÜt +[1].'.²g', + `¬¿y +('®t' => + `__ +($sort[1],‡rray(), 'sf_admin'), 'title' => __($sort[1],‡rray(), 'sf_admin'))) ?] + +8 [? +php + : ?] + +9 [? +php + +echo + + `lšk_to +( + `__ +('g‘CÚfig(' +Ïb– +', '',rueè?>', + `¬¿y +(), 'g‘I18nC©®ogue(è?>'), '@g‘U¾FÜAùiÚ(' +li¡ +') ?>',‡rray('query_string' => 'sort=&sort_type=asc')) ?] + +10 [? +php + +’dif +; ?] + +11 + +12 [? +php + +echo + + `__ +('g‘CÚfig(' +Ïb– +', '',rueè?>', + `¬¿y +(), 'getI18nCatalogue() ?>') ?] + +13 + +14 + +15 [? +php + + `’d_¦Ù +(); ?] + +16 + `addC»d’tŸlCÚd™iÚ +("[?ph°šþude_¦Ù('sf_admš.cu¼’t_h—d”'è?]", +$f›ld +-> + `g‘CÚfig +()) ?> + +17 + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/_pagination.php + +1 < +div + + gþass +="sf_admin_pagination"> + +2 < +a + +h»f +="[?phpƒcho url_for('@getUrlForAction('list') ?>') ?]?page=1"> + +3 [? +php + +echo + +image_g +( +sfCÚfig +:: +g‘ +('sf_admš_moduË_web_dœ').'/images/fœ¡.²g', +¬¿y +('®t' => +__ +('First…age',‡rray(), 'sf_admin'), 'title' => __('First…age',‡rray(), 'sf_admin'))) ?] + +4 + +6 < +a + + gh»f +="[?phpƒcho url_for('@getUrlForAction('list') ?>') ?]?page=[?phpƒcho $pager->getPreviousPage() ?]"> + +7 [? +php + +echo + +image_g +( +sfCÚfig +:: +g‘ +('sf_admš_moduË_web_dœ').'/images/´evious.²g', +¬¿y +('®t' => +__ +('Previous…age',‡rray(), 'sf_admin'), 'title' => __('Previous…age',‡rray(), 'sf_admin'))) ?] + +8 + +10 [? +php + +fܗch + ( +$·g” +-> + $g‘Lšks +(è +as + +$·ge +): ?] + +11 [? +php + ià( +$·ge + =ð +$·g” +-> + $g‘Page +()): ?] + +12 [? +php + +echo + +$·ge + ?] + +13 [? +php + : ?] + +14 < +a + +h»f +="[?ph°echØu¾_fÜ('@g‘U¾FÜAùiÚ('li¡'è?>'è?]?·ge=[?ph°echØ$·g?]">[? +php + +echo + +$·ge + ?] + +15 [? +php + +’dif +; ?] + +16 [? +php + +’dfܗch +; ?] + +18 < +a + +h»f +="[?phpƒcho url_for('@getUrlForAction('list') ?>') ?]?page=[?phpƒcho $pager->getNextPage() ?]"> + +19 [? +php + +echo + + `image_g +( +sfCÚfig +:: + `g‘ +('sf_admš_moduË_web_dœ').'/images/Ãxt.²g', + `¬¿y +('®t' => + `__ +('Next…age',‡rray(), 'sf_admin'), 'title' => __('Next…age',‡rray(), 'sf_admin'))) ?] + +20 + +22 < +a + +h»f +="[?phpƒcho url_for('@getUrlForAction('list') ?>') ?]?page=[?phpƒcho $pager->getLastPage() ?]"> + +23 [? +php + +echo + + `image_g +( +sfCÚfig +:: + `g‘ +('sf_admš_moduË_web_dœ').'/images/Ï¡.²g', + `¬¿y +('®t' => + `__ +('Last…age',‡rray(), 'sf_admin'), 'title' => __('Last…age',‡rray(), 'sf_admin'))) ?] + +24 + +25 + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/editSuccess.php + +1 [? +php + +u£_h–³r +('I18N', 'Date') ?] + +2 [? +php + +šþude_·¹Ÿl +('getModuleName() ?>/assets') ?] + +4 < +div + + gid +="sf_admin_container"> + +5 < +h1 +>[? +php + +echo + +g‘I18NSŒšg +('edit.title') ?> ?] + +7 [? +php + +šþude_·¹Ÿl +('getModuleName() ?>/flashes') ?] + +9 < +div + +id +="sf_admin_header"> + +10 [? +php + +šþude_·¹Ÿl +('g‘ModuËName(è?>/fÜm_h—d”', +¬¿y +('g‘SšguÏrName(è?>' => +$ + +g‘SšguÏrName +(è?>, 'fÜm' => +$fÜm +, 'cÚfigu¿tiÚ' => +$cÚfigu¿tiÚ +)) ?] + +11 + +13 < +div + +id +="sf_admin_content"> + +14 [? +php + +šþude_·¹Ÿl +('g‘ModuËName(è?>/fÜm', +¬¿y +('g‘SšguÏrName(è?>' => +$ + +g‘SšguÏrName +(è?>, 'fÜm' => +$fÜm +, 'cÚfigu¿tiÚ' => +$cÚfigu¿tiÚ +, 'h–³r' => +$h–³r +)) ?] + +15 + +17 < +div + +id +="sf_admin_footer"> + +18 [? +php + +šþude_·¹Ÿl +('g‘ModuËName(è?>/fÜm_foٔ', +¬¿y +('g‘SšguÏrName(è?>' => +$ + +g‘SšguÏrName +(è?>, 'fÜm' => +$fÜm +, 'cÚfigu¿tiÚ' => +$cÚfigu¿tiÚ +)) ?] + +19 + +20 + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/indexSuccess.php + +1 [? +php + +u£_h–³r +('I18N', 'Date') ?] + +2 [? +php + +šþude_·¹Ÿl +('getModuleName() ?>/assets') ?] + +4 < +div + + gid +="sf_admin_container"> + +5 < +h1 +>[? +php + +echo + +g‘I18NSŒšg +('list.title') ?> ?] + +7 [? +php + +šþude_·¹Ÿl +('getModuleName() ?>/flashes') ?] + +9 < +div + +id +="sf_admin_header"> + +10 [? +php + +šþude_·¹Ÿl +('g‘ModuËName(è?>/li¡_h—d”', +¬¿y +('·g”' => +$·g” +)) ?] + +11 + +13 +cÚfigu¿tiÚ +-> + $hasFž‹rFÜm +()): ?> + +14 < +div + +id +="sf_admin_bar"> + +15 [? +php + + `šþude_·¹Ÿl +('g‘ModuËName(è?>/fž‹rs', + `¬¿y +('fÜm' => +$fž‹rs +, 'cÚfigu¿tiÚ' => +$cÚfigu¿tiÚ +)) ?] + +16 + +17 + +19 < +div + +id +="sf_admin_content"> + +20 +cÚfigu¿tiÚ +-> + `g‘V®ue +('list.batch_actions')): ?> + +21 < +fÜm + +aùiÚ +="[?ph°echØu¾_fÜ('g‘U¾FÜAùiÚ('cÞËùiÚ'è?>',‡¼ay('aùiÚ' => 'b©ch')è?]" +m‘hod +="post"> + +22 + +23 [? +php + + `šþude_·¹Ÿl +('g‘ModuËName(è?>/li¡', + `¬¿y +('·g”' => +$·g” +, 'sÜt' => +$sÜt +, 'h–³r' => +$h–³r +)) ?] + +24 < +ul + +þass +="sf_admin_actions"> + +25 [? +php + + `šþude_·¹Ÿl +('g‘ModuËName(è?>/li¡_b©ch_aùiÚs', + `¬¿y +('h–³r' => +$h–³r +)) ?] + +26 [? +php + + `šþude_·¹Ÿl +('g‘ModuËName(è?>/li¡_aùiÚs', + `¬¿y +('h–³r' => +$h–³r +)) ?] + +27 + +28 +cÚfigu¿tiÚ +-> + `g‘V®ue +('list.batch_actions')): ?> + +29 + +30 + +31 + +33 < +div + +id +="sf_admin_footer"> + +34 [? +php + + `šþude_·¹Ÿl +('g‘ModuËName(è?>/li¡_foٔ', + `¬¿y +('·g”' => +$·g” +)) ?] + +35 + +36 + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/admin/template/templates/newSuccess.php + +1 [? +php + +u£_h–³r +('I18N', 'Date') ?] + +2 [? +php + +šþude_·¹Ÿl +('getModuleName() ?>/assets') ?] + +4 < +div + + gid +="sf_admin_container"> + +5 < +h1 +>[? +php + +echo + +g‘I18NSŒšg +('new.title') ?> ?] + +7 [? +php + +šþude_·¹Ÿl +('getModuleName() ?>/flashes') ?] + +9 < +div + +id +="sf_admin_header"> + +10 [? +php + +šþude_·¹Ÿl +('g‘ModuËName(è?>/fÜm_h—d”', +¬¿y +('g‘SšguÏrName(è?>' => +$ + +g‘SšguÏrName +(è?>, 'fÜm' => +$fÜm +, 'cÚfigu¿tiÚ' => +$cÚfigu¿tiÚ +)) ?] + +11 + +13 < +div + +id +="sf_admin_content"> + +14 [? +php + +šþude_·¹Ÿl +('g‘ModuËName(è?>/fÜm', +¬¿y +('g‘SšguÏrName(è?>' => +$ + +g‘SšguÏrName +(è?>, 'fÜm' => +$fÜm +, 'cÚfigu¿tiÚ' => +$cÚfigu¿tiÚ +, 'h–³r' => +$h–³r +)) ?] + +15 + +17 < +div + +id +="sf_admin_footer"> + +18 [? +php + +šþude_·¹Ÿl +('g‘ModuËName(è?>/fÜm_foٔ', +¬¿y +('g‘SšguÏrName(è?>' => +$ + +g‘SšguÏrName +(è?>, 'fÜm' => +$fÜm +, 'cÚfigu¿tiÚ' => +$cÚfigu¿tiÚ +)) ?] + +19 + +20 + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/parts/createAction.php + +1 +public + +funùiÚ + + $execu‹C»©e +( +sfWebReque¡ + +$»que¡ +) + +3 +·¿ms +['with_doctrine_route']) && $this->params['with_doctrine_route']): ?> + +4 + +5 +$this +-> + `fÜw¬d404UÆess +( +$»que¡ +-> + `isM‘hod +( +sfReque¡ +:: +POST +)); + +7 + +8 +$this +-> +fÜm + = +Ãw + + `g‘Mod–CÏss +().'Form' ?>(); + +10 +$this +-> + `´oûssFÜm +( +$»que¡ +, $this-> +fÜm +); + +12 +$this +-> + `£tTem¶©e +('new'); + +13 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/parts/deleteAction.php + +1 +public + +funùiÚ + + $execu‹D–‘e +( +sfWebReque¡ + +$»que¡ +) + +3 +$»que¡ +-> + `checkCSRFPrÙeùiÚ +(); + +5 +·¿ms +['with_doctrine_route']) && $this->params['with_doctrine_route']): ?> + +6 +$this +-> + `g‘Rou‹ +()-> + `g‘Objeù +()-> + `d–‘e +(); + +7 + +8 +$this +-> + `fÜw¬d404UÆess +( +$ + + `g‘SšguÏrName +(è?> = +Doùrše_CÜe +:: + `g‘TabË +('g‘Mod–CÏss(è?>')-> + `fšd +( + `¬¿y +( + `g‘R‘r›veByPkP¬amsFÜAùiÚ +(43è?>)), + `¥rštf +('Object getSingularName() ?> does‚otƒxist (%s).', getRetrieveByPkParamsForAction(43) ?>)); + +9 +$ + + `g‘SšguÏrName +(è?>-> + `d–‘e +(); + +10 + +12 +·¿ms +['route_prefix']) && $this->params['route_prefix']): ?> + +13 +$this +-> + `»dœeù +('@g‘U¾FÜAùiÚ(' +li¡ +') ?>'); + +14 + +15 +$this +-> + `»dœeù +('getModuleName() ?>/index'); + +16 + +17 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/parts/editAction.php + +1 +public + +funùiÚ + + $execu‹Ed™ +( +sfWebReque¡ + +$»que¡ +) + +3 +·¿ms +['with_doctrine_route']) && $this->params['with_doctrine_route']): ?> + +4 +$this +-> +fÜm + = +Ãw + + `g‘Mod–CÏss +().'FÜm' ?>($this-> + `g‘Rou‹ +()-> + `g‘Objeù +()); + +5 + +6 +$this +-> + `fÜw¬d404UÆess +( +$ + + `g‘SšguÏrName +(è?> = +Doùrše_CÜe +:: + `g‘TabË +('g‘Mod–CÏss(è?>')-> + `fšd +( + `¬¿y +( + `g‘R‘r›veByPkP¬amsFÜAùiÚ +(43è?>)), + `¥rštf +('Object getSingularName() ?> does‚otƒxist (%s).', getRetrieveByPkParamsForAction(43) ?>)); + +7 +$this +-> +fÜm + = +Ãw + + `g‘Mod–CÏss +().'FÜm' ?>( +$ + + `g‘SšguÏrName +() ?>); + +8 + +9 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/parts/indexAction.php + +1 +public + +funùiÚ + + $execu‹Index +( +sfWebReque¡ + +$»que¡ +) + +3 +·¿ms +['with_doctrine_route']) && $this->params['with_doctrine_route']): ?> + +4 +$this +-> + `g‘Plu¿lName +(è?> = $this-> + `g‘Rou‹ +()-> + `g‘Objeùs +(); + +5 + +6 +$this +-> + `g‘Plu¿lName +(è?> = +Doùrše_CÜe +:: + `g‘TabË +('getModelClass() ?>') + +7 -> + `ü—‹Qu”y +('a') + +8 -> + `execu‹ +(); + +9 + +10 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/parts/newAction.php + +1 +public + +funùiÚ + + $execu‹New +( +sfWebReque¡ + +$»que¡ +) + +3 +$this +-> +fÜm + = +Ãw + + `g‘Mod–CÏss +().'Form' ?>(); + +4 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/parts/processFormAction.php + +1 +´Ùeùed + +funùiÚ + + $´oûssFÜm +( +sfWebReque¡ + +$»que¡ +, +sfFÜm + +$fÜm +) + +3 +$fÜm +-> + `bšd +( +$»que¡ +-> + `g‘P¬am‘” +($fÜm-> + `g‘Name +()), $»que¡-> + `g‘Fžes +($form->getName())); + +4 ià( +$fÜm +-> + `isV®id +()) + +6 +$ + + `g‘SšguÏrName +(è?> = +$fÜm +-> + `§ve +(); + +8 +·¿ms +['route_prefix']) && $this->params['route_prefix']): ?> + +9 +$this +-> + `»dœeù +('@g‘U¾FÜAùiÚ(' +ed™ +') ?>?getPrimaryKeyUrlParams() ?>); + +10 + +11 +$this +-> + `»dœeù +('getModuleName() ?>/edit?getPrimaryKeyUrlParams() ?>); + +12 + +14 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/parts/showAction.php + +1 +public + +funùiÚ + + $execu‹Show +( +sfWebReque¡ + +$»que¡ +) + +3 +·¿ms +['with_doctrine_route']) && $this->params['with_doctrine_route']): ?> + +4 +$this +-> + `g‘SšguÏrName +(è?> = $this-> + `g‘Rou‹ +()-> + `g‘Objeù +(); + +5 + +6 +$this +-> + `g‘SšguÏrName +(è?> = +Doùrše_CÜe +:: + `g‘TabË +('g‘Mod–CÏss(è?>')-> + `fšd +( + `¬¿y +( + `g‘R‘r›veByPkP¬amsFÜAùiÚ +(65) ?>)); + +7 +$this +-> + `fÜw¬d404UÆess +($this-> + `g‘SšguÏrName +() ?>); + +8 + +9 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/parts/updateAction.php + +1 +public + +funùiÚ + + $execu‹Upd©e +( +sfWebReque¡ + +$»que¡ +) + +3 +·¿ms +['with_doctrine_route']) && $this->params['with_doctrine_route']): ?> + +4 +$this +-> +fÜm + = +Ãw + + `g‘Mod–CÏss +().'FÜm' ?>($this-> + `g‘Rou‹ +()-> + `g‘Objeù +()); + +5 + +6 +$this +-> + `fÜw¬d404UÆess +( +$»que¡ +-> + `isM‘hod +( +sfReque¡ +:: +POST +è|| $»que¡->isM‘hod(sfReque¡:: +PUT +)); + +7 +$this +-> + `fÜw¬d404UÆess +( +$ + + `g‘SšguÏrName +(è?> = +Doùrše_CÜe +:: + `g‘TabË +('g‘Mod–CÏss(è?>')-> + `fšd +( + `¬¿y +( + `g‘R‘r›veByPkP¬amsFÜAùiÚ +(43è?>)), + `¥rštf +('Object getSingularName() ?> does‚otƒxist (%s).', getRetrieveByPkParamsForAction(43) ?>)); + +8 +$this +-> +fÜm + = +Ãw + + `g‘Mod–CÏss +().'FÜm' ?>( +$ + + `g‘SšguÏrName +() ?>); + +9 + +11 +$this +-> + `´oûssFÜm +( +$»que¡ +, $this-> +fÜm +); + +13 +$this +-> + `£tTem¶©e +('edit'); + +14 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/skeleton/actions/actions.class.php + +1 +g‘G’”©edModuËName +(è?> +AùiÚs + +ex‹nds + +g‘AùiÚsBa£CÏss +() ?> + +14 + +16 +·¿ms +['w™h_show']è&& + g$this +-> + g·¿ms +['with_show']): ?> + +17 + +19 + +20 + +22 + +24 + +26 + +28 + +30 + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/template/templates/_form.php + +1 [? +php + +u£_¡yËsh“ts_fÜ_fÜm +( +$fÜm +) ?] + +2 [? +php + +u£_javasüts_fÜ_fÜm +( +$fÜm +) ?] + +4 +g‘FÜmObjeù +() ?> + +5 +·¿ms +['route_prefix']) && $this->params['route_prefix']): ?> + +6 [? +php + +echo + +fÜm_g_fÜ +( +$fÜm +, '@·¿ms[' +rou‹_´efix +'] ?>') ?] + +7 + +8 < +fÜm + +aùiÚ +="[?ph°echØu¾_fÜ('g‘ModuËName(è?>/'.($fÜm->g‘Objeù()->isNew(è? 'ü—‹' : 'upd©e').(!$fÜm->g‘Objeù()->isNew(è? '?g‘Prim¬yKeyU¾P¬ams('$fÜm->g‘Objeù()',rueè?> : '')è?]" +m‘hod +="po¡" [? +php + +$fÜm +-> + $isMuɝ¬t +(è +ªd + +´št + 'enctype="multipart/form-data" ' ?]> + +9 [? +php + ià(! +$fÜm +-> + `g‘Objeù +()-> + $isNew +()): ?] + +10 < +šput + +ty³ +="hidd’" +Çme +="sf_m‘hod" +v®ue +="put" /> + +11 [? +php + +’dif +; ?] + +12 + +13 < +bË +> + +14 < +tfoÙ +> + +15 < +Œ +> + +16 < +td + +cÞ¥ª +="2"> + +17 +·¿ms +['non_verbose_templates']) || !$this->params['non_verbose_templates']): ?> + +18 [? +php + +echo + +$fÜm +-> + `»nd”Hidd’F›lds +( +çl£ +) ?] + +19 + +20 +·¿ms +['route_prefix']) && $this->params['route_prefix']): ?> + +21 & +nb¥ +;< +a + +h»f +="[?ph°echØu¾_fÜ('g‘U¾FÜAùiÚ('li¡'è?>'è?]"> +Back + +to + +li¡ + + +22 + +23 & +nb¥ +;< +a + +h»f +="[?ph°echØu¾_fÜ('g‘ModuËName(è?>/šdex'è?]"> +Back + +to + +li¡ + + +24 + +25 [? +php + ià(! +$fÜm +-> + `g‘Objeù +()-> + $isNew +()): ?] + +26 +·¿ms +['route_prefix']) && $this->params['route_prefix']): ?> + +27 & +nb¥ +;[? +php + +echo + + `lšk_to +('D–‘e', 'g‘U¾FÜAùiÚ(' +d–‘e +'è?>', +$fÜm +-> + `g‘Objeù +(), + `¬¿y +('method' => 'delete', 'confirm' => 'Are you sure?')) ?] + +28 + +29 & +nb¥ +;[? +php + +echo + + `lšk_to +('D–‘e', 'g‘ModuËName(è?>/d–‘e?g‘Prim¬yKeyU¾P¬ams(' +$fÜm +-> + `g‘Objeù +()',rueè?>,‡¼ay(' +m‘hod +' => ' +d–‘e +', ' +cÚfœm +' => ' +A» + +you + +su» +?')) ?] + +30 + +31 [? +php + +’dif +; ?] + +32 < +šput + +ty³ +="subm™" +v®ue +="Save" /> + +33 + +34 + +35 + +36 < +tbody +> + +37 +·¿ms +['non_verbose_templates']) && $this->params['non_verbose_templates']): ?> + +38 [? +php + +echo + +$fÜm + ?] + +39 + +40 [? +php + +echo + +$fÜm +-> + `»nd”Glob®E¼Üs +() ?] + +41 +$f›ld +): ià($f›ld-> + $isHidd’ +())  ?> + +42 < +Œ +> + +43 < +th +>[? +php + +echo + +$fÜm +['']-> + `»nd”Lab– +() ?] + +44 < +td +> + +45 [? +php + +echo + +$fÜm +['']-> + `»nd”E¼Ü +() ?] + +46 [? +php + +echo + +$fÜm +[''] ?] + +47 + +48 + +49 + +50 + +51 + +52 + +53 + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/template/templates/editSuccess.php + +1 < + gh1 +> + gEd™ + +g‘SšguÏrName +()è?> + +3 [? +php + +šþude_·¹Ÿl +('fÜm', +¬¿y +('fÜm' => +$fÜm +)) ?] + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/template/templates/indexSuccess.php + +1 < + gh1 +> +g‘Plu¿lName +()è?> +Li¡ + + +3 < +bË +> + +4 < +th—d +> + +5 < +Œ +> + +6 + $g‘CÞumns +(è +as + +$cÞumn +): ?> + +7 < +th +> + `g‘PhpName +())) ?> + +8 + +9 + +10 + +11 < +tbody +> + +12 [? +php + + `fܗch + ( +$ + + `g‘Plu¿lName +(è?> +as + $ + `g‘SšguÏrName +() ?>): ?] + +13 < +Œ +> + +14 + $g‘CÞumns +(è +as + +$cÞumn +): ?> + +15 + $isPrim¬yKey +()): ?> + +16 +·¿ms +['route_prefix']) && $this->params['route_prefix']): ?> + +17 < +td +>< +a + +h»f +="[?ph°echØu¾_fÜ('g‘U¾FÜAùiÚ(is£t($this->·¿ms['w™h_show']è&& $this->·¿ms['w™h_show'] ? 'show' : 'ed™'è?>', $g‘SšguÏrName(è?>è?]">[? +php + +echo + +$ + + `g‘SšguÏrName +(è?>-> +g‘ + + `g‘PhpName +()) ?>() ?] + +18 + +19 < +td +>< +a + +h»f +="[?ph°echØu¾_fÜ('g‘ModuËName(è?>/·¿ms['w™h_show']è&& $this->·¿ms['w™h_show'] ? 'show' : 'ed™' ?>?g‘Prim¬yKeyU¾P¬ams(è?>è?]">[? +php + +echo + +$ + + `g‘SšguÏrName +(è?>-> +g‘ + + `g‘PhpName +()) ?>() ?] + +20 + +21 + +22 < +td +>[? +php + +echo + +$ + + `g‘SšguÏrName +(è?>-> +g‘ + + `g‘PhpName +()) ?>() ?] + +23 + +24 + +25 + +26 [? +php + +’dfܗch +; ?] + +27 + +28 + +30 +·¿ms +['route_prefix']) && $this->params['route_prefix']): ?> + +31 < +a + +h»f +="[?ph°echØu¾_fÜ('g‘U¾FÜAùiÚ('Ãw'è?>'è?]"> +New + + +32 + +33 < +a + +h»f +="[?ph°echØu¾_fÜ('g‘ModuËName(è?>/Ãw'è?]"> +New + + +34 + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/template/templates/newSuccess.php + +1 < + gh1 +> + gNew + +g‘SšguÏrName +()è?> + +3 [? +php + +šþude_·¹Ÿl +('fÜm', +¬¿y +('fÜm' => +$fÜm +)) ?] + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/data/generator/sfDoctrineModule/default/template/templates/showSuccess.php + +1 < + gbË +> + +2 < + gtbody +> + +3 + $g‘CÞumns +(è +as + +$cÞumn +): ?> + +4 < +Œ +> + +5 < +th +> + `g‘PhpName +())) ?>: + +6 < +td +>[? +php + +echo + +$ + + `g‘SšguÏrName +(è?>-> +g‘ + + `g‘PhpName +()) ?>() ?] + +7 + +8 + +9 + +10 + +12 < +hr + /> + +14 +·¿ms +['route_prefix']) && $this->params['route_prefix']): ?> + +15 < +a + +h»f +="[?ph°echØu¾_fÜ('g‘U¾FÜAùiÚ('ed™'è?>', $g‘SšguÏrName(è?>è?]"> +Ed™ + + +16 & +nb¥ +; + +17 < +a + +h»f +="[?ph°echØu¾_fÜ('g‘U¾FÜAùiÚ('li¡'è?>'è?]"> +Li¡ + + +18 + +19 < +a + +h»f +="[?ph°echØu¾_fÜ('g‘ModuËName(è?>/ed™?g‘Prim¬yKeyU¾P¬ams(è?>è?]"> +Ed™ + + +20 & +nb¥ +; + +21 < +a + +h»f +="[?ph°echØu¾_fÜ('g‘ModuËName(è?>/šdex'è?]"> +Li¡ + + +22 + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/cli/sfDoctrineCli.class.php + +1 +symfÚyDi¥©ch” + = +$di¥©ch” +; + +43 +public + +funùiÚ + + $£tSymfÚyFÜm©‹r +( +$fÜm©‹r +) + +45 +$this +-> +symfÚyFÜm©‹r + = +$fÜm©‹r +; + +46 + } +} + +55 +public + +funùiÚ + +nÙify +( +$nÙifiÿtiÚ + = +nuÎ +, +$¡yË + = 'HEADER') + +57 +$this +-> +symfÚyDi¥©ch” +-> +nÙify +( +Ãw + +sfEv’t +($this, 'commªd.log', +¬¿y +($this-> +symfÚyFÜm©‹r +-> +fÜm©SeùiÚ +('doùrše', +$nÙifiÿtiÚ +)))); + +67 +public + +funùiÚ + + $nÙifyExû±iÚ +( +Exû±iÚ + +$exû±iÚ +) + +69 +throw + +$exû±iÚ +; + +70 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/database/sfDoctrineConnectionListener.class.php + +1 +cÚÃùiÚ + = +$cÚÃùiÚ +; + +26 +$this +-> +’codšg + = +$’codšg +; + +29 +public + +funùiÚ + + $po¡CÚÃù +( +Doùrše_Ev’t + +$ev’t +) + +31 +$this +-> +cÚÃùiÚ +-> + `£tCh¬£t +($this-> +’codšg +); + +32 +$this +-> +cÚÃùiÚ +-> + `£tD©eFÜm© +(); + +33 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/database/sfDoctrineConnectionProfiler.class.php + +1 +di¥©ch” + = +$di¥©ch” +; + +31 +$this +-> +ÝtiÚs + = + `¬¿y_m”ge +( + `¬¿y +( + +32 'loggšg' => +çl£ +, + +34 ), +$ÝtiÚs +); + +44 +public + +funùiÚ + + $g‘O±iÚ +( +$Çme +) + +46  + `is£t +( +$this +-> +ÝtiÚs +[ +$Çme +]è? $this->ÝtiÚs[$Çme] : +nuÎ +; + +47 + } +} + +55 +public + +funùiÚ + + $£tO±iÚ +( +$Çme +, +$v®ue +) + +57 +$this +-> +ÝtiÚs +[ +$Çme +] = +$v®ue +; + +58 + } +} + +65 +public + +funùiÚ + + $´eQu”y +( +Doùrše_Ev’t + +$ev’t +) + +67 ià( +$this +-> +ÝtiÚs +['logging']) + +69 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +( +$ev’t +-> + `g‘Invok” +(), '­¶iÿtiÚ.log', + `¬¿y +( + `¥rštf +('qu”y : % - (%s)', $ev’t-> + `g‘Qu”y +(), + `još +(', ', +£lf +:: + `fixP¬ams +($ev’t-> + `g‘P¬ams +())))))); + +72 +sfTim”Mªag” +:: + `g‘Tim” +('Database (Doctrine)'); + +74 +$¬gs + = + `func_g‘_¬gs +(); + +75 +$this +-> + `__ÿÎ +( +__FUNCTION__ +, +$¬gs +); + +76 + } +} + +83 +public + +funùiÚ + + $po¡Qu”y +( +Doùrše_Ev’t + +$ev’t +) + +85 +sfTim”Mªag” +:: + `g‘Tim” +('D©aba£ (Doùrše)')-> + `addTime +(); + +87 +$¬gs + = + `func_g‘_¬gs +(); + +88 +$this +-> + `__ÿÎ +( +__FUNCTION__ +, +$¬gs +); + +90 ià( +$ev’t +-> + `g‘EÏp£dSecs +(è> +$this +-> +ÝtiÚs +['slow_query_threshold']) + +92 +$ev’t +-> +¦owQu”y + = +Œue +; + +94 + } +} + +101 +public + +funùiÚ + + $´eExec +( +Doùrše_Ev’t + +$ev’t +) + +103 ià( +$this +-> +ÝtiÚs +['logging']) + +105 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +( +$ev’t +-> + `g‘Invok” +(), '­¶iÿtiÚ.log', + `¬¿y +( + `¥rštf +('exeø: % - (%s)', $ev’t-> + `g‘Qu”y +(), + `još +(', ', +£lf +:: + `fixP¬ams +($ev’t-> + `g‘P¬ams +())))))); + +108 +sfTim”Mªag” +:: + `g‘Tim” +('Database (Doctrine)'); + +110 +$¬gs + = + `func_g‘_¬gs +(); + +111 +$this +-> + `__ÿÎ +( +__FUNCTION__ +, +$¬gs +); + +112 + } +} + +119 +public + +funùiÚ + + $po¡Exec +( +Doùrše_Ev’t + +$ev’t +) + +121 +sfTim”Mªag” +:: + `g‘Tim” +('D©aba£ (Doùrše)')-> + `addTime +(); + +123 +$¬gs + = + `func_g‘_¬gs +(); + +124 +$this +-> + `__ÿÎ +( +__FUNCTION__ +, +$¬gs +); + +126 ià( +$ev’t +-> + `g‘EÏp£dSecs +(è> +$this +-> +ÝtiÚs +['slow_query_threshold']) + +128 +$ev’t +-> +¦owQu”y + = +Œue +; + +130 + } +} + +137 +public + +funùiÚ + + $´eStmtExecu‹ +( +Doùrše_Ev’t + +$ev’t +) + +139 ià( +$this +-> +ÝtiÚs +['logging']) + +141 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +( +$ev’t +-> + `g‘Invok” +(), '­¶iÿtiÚ.log', + `¬¿y +( + `¥rštf +('execu‹ : % - (%s)', $ev’t-> + `g‘Qu”y +(), + `još +(', ', +£lf +:: + `fixP¬ams +($ev’t-> + `g‘P¬ams +())))))); + +144 +sfTim”Mªag” +:: + `g‘Tim” +('Database (Doctrine)'); + +146 +$¬gs + = + `func_g‘_¬gs +(); + +147 +$this +-> + `__ÿÎ +( +__FUNCTION__ +, +$¬gs +); + +148 + } +} + +155 +public + +funùiÚ + + $po¡StmtExecu‹ +( +Doùrše_Ev’t + +$ev’t +) + +157 +sfTim”Mªag” +:: + `g‘Tim” +('D©aba£ (Doùrše)')-> + `addTime +(); + +159 +$¬gs + = + `func_g‘_¬gs +(); + +160 +$this +-> + `__ÿÎ +( +__FUNCTION__ +, +$¬gs +); + +162 ià( +$ev’t +-> + `g‘EÏp£dSecs +(è> +$this +-> +ÝtiÚs +['slow_query_threshold']) + +164 +$ev’t +-> +¦owQu”y + = +Œue +; + +166 + } +} + +173 +public + +funùiÚ + + $g‘Qu”yExecutiÚEv’ts +() + +175 +$ev’ts + = + `¬¿y +(); + +176 + `fܗch + ( +$this + +as + +$ev’t +) + +178 ià( + `š_¬¿y +( +$ev’t +-> + `g‘Code +(), + `¬¿y +( +Doùrše_Ev’t +:: +CONN_QUERY +, Doùrše_Ev’t:: +CONN_EXEC +, Doùrše_Ev’t:: +STMT_EXECUTE +))) + +180 +$ev’ts +[] = +$ev’t +; + +184  +$ev’ts +; + +185 + } +} + +194  +public + +funùiÚ + + $fixP¬ams +( +$·¿ms +) + +196 + `fܗch + ( +$·¿ms + +as + +$key + => +$·¿m +) + +198 ià( + `¡¾’ +( +$·¿m +) >= 255) + +200 +$·¿ms +[ +$key +] = '['. + `numb”_fÜm© +( + `¡¾’ +( +$·¿m +) / 1024, 2).'Kb]'; + +204  +$·¿ms +; + +205 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/database/sfDoctrineDatabase.class.php + +1 +_doùršeCÚÃùiÚ +) + +59 +$d¢ + = +$this +-> + `g‘P¬am‘” +('dsn'); + +60 +$Çme + = +$this +-> + `g‘P¬am‘” +('name'); + +63 iàÐ! + `¡½os +( +$d¢ +, '://')) + +65 +$d¢ + = + `¬¿y +($d¢, +$this +-> + `g‘P¬am‘” +('username'), $this->getParameter('password')); + +69 +$cÚfigu¿tiÚ + = +sfProjeùCÚfigu¿tiÚ +:: + `g‘Aùive +(); + +70 +$di¥©ch” + = +$cÚfigu¿tiÚ +-> + `g‘Ev’tDi¥©ch” +(); + +71 +$mªag” + = +Doùrše_Mªag” +:: + `g‘In¡ªû +(); + +73 +$this +-> +_doùršeCÚÃùiÚ + = +$mªag” +-> + `ݒCÚÃùiÚ +( +$d¢ +, +$Çme +); + +75 +$©Œibu‹s + = +$this +-> + `g‘P¬am‘” +('©Œibu‹s', + `¬¿y +()); + +76 + `fܗch + ( +$©Œibu‹s + +as + +$Çme + => +$v®ue +) + +78 ià( + `is_¡ršg +( +$Çme +)) + +80 +$¡ršgName + = +$Çme +; + +81 +$Çme + = + `cÚ¡ªt +('Doùrše_CÜe::ATTR_'. + `¡¹ouµ” +($name)); + +84 ià( + `is_¡ršg +( +$v®ue +)) + +86 +$v®ueCÚ¡ªtName + = 'Doùrše_CÜe::'. + `¡¹ouµ” +( +$¡ršgName +).'_'.¡¹ouµ”( +$v®ue +); + +87 +$v®ue + = + `defšed +( +$v®ueCÚ¡ªtName +è? + `cÚ¡ªt +($valueConstantName) : $value; + +90 +$this +-> +_doùršeCÚÃùiÚ +-> + `£tA‰ribu‹ +( +$Çme +, +$v®ue +); + +93 +$’codšg + = +$this +-> + `g‘P¬am‘” +('encoding', 'UTF8'); + +94 +$ev’tLi¡’” + = +Ãw + + `sfDoùršeCÚÃùiÚLi¡’” +( +$this +-> +_doùršeCÚÃùiÚ +, +$’codšg +); + +95 +$this +-> +_doùršeCÚÃùiÚ +-> + `addLi¡’” +( +$ev’tLi¡’” +); + +98 ià( +$this +-> + `g‘P¬am‘” +('´ofž”', +sfCÚfig +:: + `g‘ +('sf_debug'))) + +100 +$this +-> +´ofž” + = +Ãw + + `sfDoùršeCÚÃùiÚProfž” +( +$di¥©ch” +, + `¬¿y +( + +101 'loggšg' => +$this +-> + `g‘P¬am‘” +('loggšg', +sfCÚfig +:: + `g‘ +('sf_logging_enabled')), + +103 +$this +-> +_doùršeCÚÃùiÚ +-> + `addLi¡’” +($this-> +´ofž” +, 'symfony_profiler'); + +107 +$m‘hod + = + `¥rštf +('cÚfigu»DoùršeCÚÃùiÚ%s', + `ucwÜds +( +$this +-> +_doùršeCÚÃùiÚ +-> + `g‘Name +())); + +109 ià( + `m‘hod_exi¡s +( +$cÚfigu¿tiÚ +, 'cÚfigu»DoùršeCÚÃùiÚ'è&& ! m‘hod_exi¡s($cÚfigu¿tiÚ, +$m‘hod +)) + +111 +$cÚfigu¿tiÚ +-> + `cÚfigu»DoùršeCÚÃùiÚ +( +$this +-> +_doùršeCÚÃùiÚ +); + +114 ià( + `m‘hod_exi¡s +( +$cÚfigu¿tiÚ +, +$m‘hod +)) + +116 +$cÚfigu¿tiÚ +-> + `$m‘hod +( +$this +-> +_doùršeCÚÃùiÚ +); + +119 +$di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +( +$mªag” +, 'doùrše.cÚfigu»_cÚÃùiÚ', + `¬¿y +('cÚÃùiÚ' => +$this +-> +_doùršeCÚÃùiÚ +, 'database' => $this))); + +127 +public + +funùiÚ + + $g‘DoùršeCÚÃùiÚ +() + +129  +$this +-> +_doùršeCÚÃùiÚ +; + +130 + } +} + +137 +public + +funùiÚ + + $g‘Profž” +() + +139  +$this +-> +´ofž” +; + +140 + } +} + +147 +public + +funùiÚ + + $cÚÃù +() + +149 +$this +-> +cÚÃùiÚ + = $this-> +_doùršeCÚÃùiÚ +-> + `g‘Dbh +(); + +150 + } +} + +157 +public + +funùiÚ + + $shutdown +() + +159 ià( +$this +-> +cÚÃùiÚ + !=ð +nuÎ +) + +161 +$this +-> +cÚÃùiÚ + = +nuÎ +; + +163 ià( +$this +-> +_doùršeCÚÃùiÚ + !=ð +nuÎ +) + +165 +$this +-> +_doùršeCÚÃùiÚ +-> + `g‘Mªag” +()-> + `þo£CÚÃùiÚ +($this->_doctrineConnection); + +167 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/debug/sfWebDebugPanelDoctrine.class.php + +1 + `g‘DoùršeEv’ts +()) + +32  ' '. + `couÁ +( +$ev’ts +); + +41 +public + +funùiÚ + + $g‘Pª–T™Ë +() + +44 + } +} + +51 +public + +funùiÚ + + $g‘Pª–CڋÁ +() + +54 < +div + +id +="sfWebDebugDatabaseLogs"> + +55 < +h3 +> +Doùrše + +V”siÚ +: '.Doctrine_Core::VERSION.' + +56 < +Þ +>'.implode("\n", $this->getSqlLogs()).' + +57 + +59 + } +} + +64  +public + +funùiÚ + + $li¡’ToAddPª–Ev’t +( +sfEv’t + +$ev’t +) + +66 +$ev’t +-> + `g‘Subjeù +()-> + `£tPª– +('db', +Ãw + + `£lf +($event->getSubject())); + +67 + } +} + +74 +´Ùeùed + +funùiÚ + + $g‘DoùršeEv’ts +() + +76 +$d©aba£Mªag” + = +sfCڋxt +:: + `g‘In¡ªû +()-> + `g‘D©aba£Mªag” +(); + +78 +$ev’ts + = + `¬¿y +(); + +79 ià( +$d©aba£Mªag” +) + +81 + `fܗch + ( +$d©aba£Mªag” +-> + `g‘Names +(è +as + +$Çme +) + +83 +$d©aba£ + = +$d©aba£Mªag” +-> + `g‘D©aba£ +( +$Çme +); + +84 ià( +$d©aba£ + +š¡ªûof + +sfDoùršeD©aba£ + && +$´ofž” + = $d©aba£-> + `g‘Profž” +()) + +86 + `fܗch + ( +$´ofž” +-> + `g‘Qu”yExecutiÚEv’ts +(è +as + +$ev’t +) + +88 +$ev’ts +[ +$ev’t +-> + `g‘Sequ’û +()] = $event; + +95 + `ksÜt +( +$ev’ts +); + +97  +$ev’ts +; + +98 + } +} + +105 +´Ùeùed + +funùiÚ + + $g‘SqlLogs +() + +107 +$logs + = +$this +-> +webDebug +-> + `g‘Logg” +()-> + `g‘Logs +(); + +109 +$html + = + `¬¿y +(); + +110 + `fܗch + ( +$this +-> + `g‘DoùršeEv’ts +(è +as + +$i + => +$ev’t +) + +112 +$cÚn + = +$ev’t +-> + `g‘Invok” +(è +š¡ªûof + +Doùrše_CÚÃùiÚ + ? $ev’t->g‘Invok”(è: $ev’t->g‘Invok”()-> + `g‘CÚÃùiÚ +(); + +113 +$·¿ms + = +sfDoùršeCÚÃùiÚProfž” +:: + `fixP¬ams +( +$ev’t +-> + `g‘P¬ams +()); + +114 +$qu”y + = +$this +-> + `fÜm©Sql +( + `html¥ecŸlch¬s +( +$ev’t +-> + `g‘Qu”y +(), +ENT_QUOTES +, +sfCÚfig +:: + `g‘ +('sf_charset'))); + +117 + `fܗch + ( +$·¿ms + +as + +$·¿m +) + +119 +$·¿m + = + `html¥ecŸlch¬s +($·¿m, +ENT_QUOTES +, +sfCÚfig +:: + `g‘ +('sf_charset')); + +120 +$qu”y + = + `još +( + `v¬_expÜt +( + `is_sÿÏr +( +$·¿m +è? $·¿m : ( +¡ršg +è$·¿m, +Œue +), + `ex¶ode +('?', $query, 2)); + +124 ià( +$ev’t +-> +¦owQu”y + && +$this +-> + `g‘Stus +(è> +sfLogg” +:: +NOTICE +) + +126 +$this +-> + `£tStus +( +sfLogg” +:: +NOTICE +); + +130 +$backŒaû + = +nuÎ +; + +131 + `fܗch + ( +$logs + +as + +$i + => +$log +) + +133 ià(! + `is£t +( +$log +['debug_backŒaû']è|| ! + `couÁ +($log['debug_backtrace'])) + +139 ià( +çl£ + !=ð + `¡½os +( +$log +['mes§ge'], +$ev’t +-> + `g‘Qu”y +())) + +142 + `un£t +( +$logs +[ +$i +]); + +143 +$backŒaû + = '&nb¥;'. +$this +-> + `g‘ToggËabËDebugSck +( +$log +['debug_backtrace']); + +148 +$html +[] = + `¥rštf +(' + +149 < +li +% +s +> + +150 < +p + +þass +="sfWebDebugD©aba£Qu”y">% +s +

    + +151 < +div + +þass +="sfWebDebugD©aba£LogInfo">% +ss +, "%s" +cÚÃùiÚ +% +s + + +152 ', + +153 +$ev’t +-> +¦owQu”y + ? ' class="sfWebDebugWarning"' : '', + +154 +$qu”y +, + +155 + `numb”_fÜm© +( +$ev’t +-> + `g‘EÏp£dSecs +(), 2), + +156 +$cÚn +-> + `g‘Name +(), + +157 +$backŒaû + + +161  +$html +; + +162 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/form/sfFormDoctrine.class.php + +1 +g‘Mod–Name +(); + +37 ià(! + m$objeù +) + +39 + m$this +-> + mobjeù + = +Ãw + +$þass +(); + +43 ià(! +$objeù + +š¡ªûof + + m$þass +) + +45 +throw + +Ãw + +sfExû±iÚ +( +¥rštf +('Th"%s" fÜm oÆy‡cû± ¨"%s" objeù.', +g‘_þass +( +$this +), +$þass +)); + +48 + m$this +-> + mobjeù + = +$objeù +; + +49 + m$this +-> + misNew + = ! +$this +-> +g‘Objeù +()-> +exi¡s +(); + +52 + m·»Á +:: +__cÚ¡ruù +( +¬¿y +(), +$ÝtiÚs +, +$CSRFSeü‘ +); + +54 + m$this +-> +upd©eDeçuÉsFromObjeù +(); + +61 +public + +funùiÚ + + $g‘CÚÃùiÚ +() + +63  +Doùrše_Mªag” +:: + `g‘In¡ªû +()-> + `g‘CÚÃùiÚFÜCompڒt +( +$this +-> + `g‘Mod–Name +()); + +64 + } +} + +72 +public + +funùiÚ + + $embedI18n +( +$cuÉu»s +, +$decÜ©Ü + = +nuÎ +) + +74 ià(! +$this +-> + `isI18n +()) + +76 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('Thmod– "%s" i nÙ iÁ”ÇtiÚ®ized.', +$this +-> + `g‘Mod–Name +())); + +79 +$þass + = +$this +-> + `g‘I18nFÜmCÏss +(); + +80 + `fܗch + ( +$cuÉu»s + +as + +$cuÉu» +) + +82 +$i18nObjeù + = +$this +-> + `g‘Objeù +()-> +T¿n¦©iÚ +[ +$cuÉu» +]; + +83 +$i18n + = +Ãw + + `$þass +( +$i18nObjeù +); + +85 ià( +çl£ + ==ð +$i18nObjeù +-> + `exi¡s +()) + +87 + `un£t +( +$i18n +[ +$this +-> + `g‘I18nMod–Prim¬yKeyName +()], $i18n[$this-> + `g‘I18nMod–I18nF›ld +()]); + +90 +$this +-> + `embedFÜm +( +$cuÉu» +, +$i18n +, +$decÜ©Ü +); + +92 + } +} + +109 +public + +funùiÚ + +embedR–©iÚ +( +$»ÏtiÚName +, +$fÜmCÏss + = +nuÎ +, +$fÜmArgs + = +¬¿y +(), +$šÃrDecÜ©Ü + =‚uÎ, +$decÜ©Ü + =‚ull) + +111 ià( +çl£ + !=ð +$pos + = +¡ros +( +$»ÏtiÚName +, '‡s ')) + +113 + g$f›ldName + = +sub¡r +( +$»ÏtiÚName +, +$pos + + 4); + +114 + g$»ÏtiÚName + = +sub¡r +( +$»ÏtiÚName +, 0, +$pos +); + +118 + g$f›ldName + = +$»ÏtiÚName +; + +121 + g$»ÏtiÚ + = +$this +-> +g‘Objeù +()-> +g‘TabË +()-> +g‘R–©iÚ +( +$»ÏtiÚName +); + +123 + g$r + = +Ãw + +ReæeùiÚCÏss +( +nuÎ + ==ð +$fÜmCÏss + ? +$»ÏtiÚ +-> +g‘CÏss +().'Form' : $formClass); + +125 ià( + gDoùrše_R–©iÚ +:: +ONE + =ð +$»ÏtiÚ +-> +g‘Ty³ +()) + +127 +$this +-> +embedFÜm +( +$f›ldName +, +$r +-> +ÃwIn¡ªûArgs +( +¬¿y_m”ge +( +¬¿y +($this-> +g‘Objeù +()-> +$»ÏtiÚName +), +$fÜmArgs +)), +$decÜ©Ü +); + +131 + g$subFÜm + = +Ãw + +sfFÜm +(); + +133 +fܗch + ( +$this +-> +g‘Objeù +()-> +$»ÏtiÚName + +as + +$šdex + => +$chždObjeù +) + +135 +$fÜm + = +$r +-> +ÃwIn¡ªûArgs +( +¬¿y_m”ge +( +¬¿y +( +$chždObjeù +), +$fÜmArgs +)); + +137 + g$subFÜm +-> +embedFÜm +( +$šdex +, +$fÜm +, +$šÃrDecÜ©Ü +); + +138 + g$subFÜm +-> +g‘Widg‘Schema +()-> +£tLab– +( +$šdex +, ( +¡ršg +è +$chždObjeù +); + +141 + g$this +-> +embedFÜm +( +$f›ldName +, +$subFÜm +, +$decÜ©Ü +); + +148 +´Ùeùed + +funùiÚ + + $doUpd©eObjeù +( +$v®ues +) + +150 +$this +-> + `g‘Objeù +()-> + `äomA¼ay +( +$v®ues +); + +151 + } +} + +165 +public + +funùiÚ + + $´oûssV®ues +( +$v®ues +) + +168 +$v®uesToProûss + = +$v®ues +; + +169 + `fܗch + ( +$v®uesToProûss + +as + +$f›ld + => +$v®ue +) + +171 +$m‘hod + = + `¥rštf +('upd©e%sCÞumn', +$this +-> + `ÿm–ize +( +$f›ld +)); + +173 ià( + `m‘hod_exi¡s +( +$this +, +$m‘hod +)) + +175 ià( +çl£ + ==ð +$»t + = +$this +-> + `$m‘hod +( +$v®ue +)) + +177 + `un£t +( +$v®ues +[ +$f›ld +]); + +181 +$v®ues +[ +$f›ld +] = +$»t +; + +187 ià( +$this +-> +v®id©ÜSchema +[ +$f›ld +] +š¡ªûof + +sfV®id©ÜFže +) + +189 +$v®ues +[ +$f›ld +] = +$this +-> + `´oûssU¶ßdedFže +($f›ld, +nuÎ +, +$v®uesToProûss +); + +194  +$v®ues +; + +195 + } +} + +202 +public + +funùiÚ + + $isI18n +() + +204  +$this +-> + `g‘Objeù +()-> + `g‘TabË +()-> + `hasTem¶©e +('Doctrine_Template_I18n'); + +205 + } +} + +212 +public + +funùiÚ + + $g‘I18nMod–Name +() + +214  +$this +-> + `g‘Objeù +()-> + `g‘TabË +()-> + `g‘Tem¶©e +('Doùrše_Tem¶©e_I18n')-> + `g‘I18n +()-> + `g‘O±iÚ +('className'); + +215 + } +} + +222 +public + +funùiÚ + + $g‘I18nFÜmCÏss +() + +224  +$this +-> + `g‘I18nMod–Name +().'Form'; + +225 + } +} + +232 +public + +funùiÚ + + $g‘I18nMod–Prim¬yKeyName +() + +234 +$´im¬yKey + = +$this +-> + `g‘Objeù +()-> + `g‘TabË +()-> + `g‘Id’tif›r +(); + +236 ià( + `is_¬¿y +( +$´im¬yKey +)) + +238 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('Thmod– "%s" ha compos™´im¬y key ªd cªnÙ bu£d w™h i18n..', +$this +-> + `g‘Mod–Name +())); + +241  +$´im¬yKey +; + +242 + } +} + +249 +public + +funùiÚ + + $g‘I18nMod–I18nF›ld +() + +251  +$this +-> + `g‘Objeù +()-> + `g‘TabË +()-> + `g‘Tem¶©e +('Doùrše_Tem¶©e_I18n')-> + `g‘I18n +()-> + `g‘O±iÚ +('i18nField'); + +252 + } +} + +257 +´Ùeùed + +funùiÚ + + $upd©eDeçuÉsFromObjeù +() + +259 +$deçuÉs + = +$this +-> + `g‘DeçuÉs +(); + +262 ià( +$this +-> + `isNew +()) + +264 +$deçuÉs + = $deçuÉ + +$this +-> + `g‘Objeù +()-> + `toA¼ay +( +çl£ +); + +268 +$deçuÉs + = +$this +-> + `g‘Objeù +()-> + `toA¼ay +( +çl£ +) + $defaults; + +271 + `fܗch + ( +$this +-> +embeddedFÜms + +as + +$Çme + => +$fÜm +) + +273 ià( +$fÜm + +š¡ªûof + +sfFÜmDoùrše +) + +275 +$fÜm +-> + `upd©eDeçuÉsFromObjeù +(); + +276 +$deçuÉs +[ +$Çme +] = +$fÜm +-> + `g‘DeçuÉs +(); + +280 +$this +-> + `£tDeçuÉs +( +$deçuÉs +); + +281 + } +} + +292 +´Ùeùed + +funùiÚ + + $´oûssU¶ßdedFže +( +$f›ld +, +$fž’ame + = +nuÎ +, +$v®ues + =‚ull) + +294 ià(! +$this +-> +v®id©ÜSchema +[ +$f›ld +] +š¡ªûof + +sfV®id©ÜFže +) + +296 +throw + +Ãw + + `LogicExû±iÚ +( + `¥rštf +('You cªnÙ savthcu¼’ˆfžfÜ f›ld "%s"‡ thf›ld i nه fže.', +$f›ld +)); + +299 ià( +nuÎ + ==ð +$v®ues +) + +301 +$v®ues + = +$this +-> +v®ues +; + +304 ià( + `is£t +( +$v®ues +[ +$f›ld +.'_delete']) && $values[$field.'_delete']) + +306 +$this +-> + `»moveFže +( +$f›ld +); + +311 ià(! +$v®ues +[ +$f›ld +]) + +315 +$ÞdV®ues + = +$this +-> + `g‘Objeù +()-> + `g‘Modif›d +( +Œue +, +çl£ +); + +317  + `is£t +( +$ÞdV®ues +[ +$f›ld +]è? $ÞdV®ues[$f›ld] : +$this +-> +objeù +->$field; + +321 ià(! +$this +-> +v®id©ÜSchema +[ +$f›ld +]-> + `g‘O±iÚ +('path')) + +323  +$v®ues +[ +$f›ld +]; + +326 +$this +-> + `»moveFže +( +$f›ld +); + +328  +$this +-> + `§veFže +( +$f›ld +, +$fž’ame +, +$v®ues +[$field]); + +329 + } +} + +336 +´Ùeùed + +funùiÚ + + $»moveFže +( +$f›ld +) + +338 ià(! +$this +-> +v®id©ÜSchema +[ +$f›ld +] +š¡ªûof + +sfV®id©ÜFže +) + +340 +throw + +Ãw + + `LogicExû±iÚ +( + `¥rštf +('You cªnلemovthcu¼’ˆfžfÜ f›ld "%s"‡ thf›ld i nه fže.', +$f›ld +)); + +343 +$dœeùÜy + = +$this +-> +v®id©ÜSchema +[ +$f›ld +]-> + `g‘O±iÚ +('path'); + +344 ià( +$dœeùÜy + && + `is_fže +( +$fže + = $dœeùÜy.'/'. +$this +-> + `g‘Objeù +()-> +$f›ld +)) + +346 + `uƚk +( +$fže +); + +348 + } +} + +359 +´Ùeùed + +funùiÚ + + $§veFže +( +$f›ld +, +$fž’ame + = +nuÎ +, +sfV®id©edFže + +$fže + =‚ull) + +361 ià(! +$this +-> +v®id©ÜSchema +[ +$f›ld +] +š¡ªûof + +sfV®id©ÜFže +) + +363 +throw + +Ãw + + `LogicExû±iÚ +( + `¥rštf +('You cªnÙ savthcu¼’ˆfžfÜ f›ld "%s"‡ thf›ld i nه fže.', +$f›ld +)); + +366 ià( +nuÎ + ==ð +$fže +) + +368 +$fže + = +$this +-> + `g‘V®ue +( +$f›ld +); + +371 +$m‘hod + = + `¥rštf +('g’”©e%sFž’ame', +$this +-> + `ÿm–ize +( +$f›ld +)); + +373 ià( +nuÎ + !=ð +$fž’ame +) + +375  +$fže +-> + `§ve +( +$fž’ame +); + +377 ià( + `m‘hod_exi¡s +( +$this +, +$m‘hod +)) + +379  +$fže +-> + `§ve +( +$this +-> + `$m‘hod +($file)); + +381 ià( + `m‘hod_exi¡s +( +$this +-> + `g‘Objeù +(), +$m‘hod +)) + +383  +$fže +-> + `§ve +( +$this +-> + `g‘Objeù +()-> + `$m‘hod +($file)); + +385 ià( + `m‘hod_exi¡s +( +$this +-> + `g‘Objeù +(), +$m‘hod + = + `¥rštf +('g’”©e%sFž’ame', +$f›ld +))) + +388  +$fže +-> + `§ve +( +$this +-> + `g‘Objeù +()-> + `$m‘hod +($file)); + +392  +$fže +-> + `§ve +(); + +394 + } +} + +399 +´Ùeùed + +funùiÚ + + $£tupInh”™ªû +() + +401 + } +} + +412 +´Ùeùed + +funùiÚ + + $g‘R–©edMod–Name +( +$®Ÿs +) + +414 +$bË + = +Doùrše_CÜe +:: + `g‘TabË +( +$this +-> + `g‘Mod–Name +()); + +416 ià(! +$bË +-> + `hasR–©iÚ +( +$®Ÿs +)) + +418 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('Th"%s" mod– ha nØ"%s"„–©iÚ.', +$this +-> + `g‘Mod–Name +(), +$®Ÿs +)); + +421 +$»ÏtiÚ + = +$bË +-> + `g‘R–©iÚ +( +$®Ÿs +); + +423  +$»ÏtiÚ +['class']; + +424 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/form/sfFormFilterDoctrine.class.php + +1 + `g‘O±iÚ +('table_method'); + +60 +public + +funùiÚ + + $£tTabËM‘hod +( +$bËM‘hod +) + +62 +$this +-> + `£tO±iÚ +('bË_m‘hod', +$bËM‘hod +); + +63 + } +} + +70 +public + +funùiÚ + + $£tQu”y +( +$qu”y +) + +72 +$this +-> + `£tO±iÚ +('qu”y', +$qu”y +); + +73 + } +} + +80 +public + +funùiÚ + + $g‘Qu”y +() + +82 ià(! +$this +-> + `isV®id +()) + +84 +throw + +$this +-> + `g‘E¼ÜSchema +(); + +87  +$this +-> + `buždQu”y +($this-> + `g‘V®ues +()); + +88 + } +} + +104 +public + +funùiÚ + + $´oûssV®ues +( +$v®ues +) + +107 +$Üigš®V®ues + = +$v®ues +; + +108 + `fܗch + ( +$Üigš®V®ues + +as + +$f›ld + => +$v®ue +) + +110 ià( + `m‘hod_exi¡s +( +$this +, +$m‘hod + = + `¥rštf +('cÚv”t%sV®ue', +£lf +:: + `ÿm–ize +( +$f›ld +)))) + +112 ià( +çl£ + ==ð +$»t + = +$this +-> + `$m‘hod +( +$v®ue +)) + +114 + `un£t +( +$v®ues +[ +$f›ld +]); + +118 +$v®ues +[ +$f›ld +] = +$»t +; + +123  +$v®ues +; + +124 + } +} + +133 +public + +funùiÚ + + $buždQu”y +( +¬¿y + +$v®ues +) + +135  +$this +-> + `doBuždQu”y +($this-> + `´oûssV®ues +( +$v®ues +)); + +136 + } +} + +148 +´Ùeùed + +funùiÚ + + $doBuždQu”y +( +¬¿y + +$v®ues +) + +150 +$qu”y + = + `is£t +( +$this +-> +ÝtiÚs +['qu”y']è? +þÚe + $this->ÝtiÚs['qu”y'] : $this-> + `g‘TabË +()-> + `ü—‹Qu”y +('r'); + +152 ià( +$m‘hod + = +$this +-> + `g‘TabËM‘hod +()) + +154 +$tmp + = +$this +-> + `g‘TabË +()-> + `$m‘hod +( +$qu”y +); + +157 ià( +$tmp + +š¡ªûof + +Doùrše_Qu”y +) + +159 +$qu”y + = +$tmp +; + +163 +$f›lds + = +$this +-> + `g‘F›lds +(); + +166 +$Çmes + = + `¬¿y_m”ge +( +$f›lds +, + `¬¿y_diff +( + `¬¿y_keys +( +$this +-> +v®id©ÜSchema +-> + `g‘F›lds +()),‡rray_keys($fields))); + +167 +$f›lds + = + `¬¿y_m”ge +($f›lds, + `¬¿y_combše +( +$Çmes +, + `¬¿y_fžl +(0, + `couÁ +($Çmes), +nuÎ +))); + +169 + `fܗch + ( +$f›lds + +as + +$f›ld + => +$ty³ +) + +171 ià(! + `is£t +( +$v®ues +[ +$f›ld +]è|| +nuÎ + === $values[$field] || '' === $values[$field]) + +176 ià( +$this +-> + `g‘TabË +()-> + `hasF›ld +( +$f›ld +)) + +178 +$m‘hod + = + `¥rštf +('add%sCÞumnQu”y', +£lf +:: + `ÿm–ize +( +$this +-> + `g‘F›ldName +( +$f›ld +))); + +180 ià(! + `m‘hod_exi¡s +( +$this +, +$m‘hod + = + `¥rštf +('add%sCÞumnQu”y', +£lf +:: + `ÿm–ize +( +$f›ld +))è&& +nuÎ + !=ð +$ty³ +) + +182 +throw + +Ãw + + `LogicExû±iÚ +( + `¥rštf +('You mu¡ defš¨"%s" m‘hodØbabˁØfž‹¸w™hh"%s" f›ld.', +$m‘hod +, +$f›ld +)); + +185 ià( + `m‘hod_exi¡s +( +$this +, +$m‘hod +)) + +187 +$this +-> + `$m‘hod +( +$qu”y +, +$f›ld +, +$v®ues +[$field]); + +189 ià( +nuÎ + !=ð +$ty³ +) + +191 ià(! + `m‘hod_exi¡s +( +$this +, +$m‘hod + = + `¥rštf +('add%sQu”y', +$ty³ +))) + +193 +throw + +Ãw + + `LogicExû±iÚ +( + `¥rštf +('UÇbˁØfž‹¸f܁h"%s"y³.', +$ty³ +)); + +196 +$this +-> + `$m‘hod +( +$qu”y +, +$f›ld +, +$v®ues +[$field]); + +200  +$qu”y +; + +201 + } +} + +203 +´Ùeùed + +funùiÚ + + $addFÜeignKeyQu”y +( +Doùrše_Qu”y + +$qu”y +, +$f›ld +, +$v®ue +) + +205 +$f›ldName + = +$this +-> + `g‘F›ldName +( +$f›ld +); + +207 ià( + `is_¬¿y +( +$v®ue +)) + +209 +$qu”y +-> + `ªdWh”eIn +( + `¥rštf +('%s.%s', $qu”y-> + `g‘RoÙAlŸs +(), +$f›ldName +), +$v®ue +); + +213 +$qu”y +-> + `addWh”e +( + `¥rštf +('%s.% ð?', $qu”y-> + `g‘RoÙAlŸs +(), +$f›ldName +), +$v®ue +); + +215 + } +} + +217 +´Ùeùed + +funùiÚ + + $addEnumQu”y +( +Doùrše_Qu”y + +$qu”y +, +$f›ld +, +$v®ue +) + +219 +$f›ldName + = +$this +-> + `g‘F›ldName +( +$f›ld +); + +221 +$qu”y +-> + `addWh”e +( + `¥rštf +('%s.% ð?', $qu”y-> + `g‘RoÙAlŸs +(), +$f›ldName +), +$v®ue +); + +222 + } +} + +224 +´Ùeùed + +funùiÚ + + $addTextQu”y +( +Doùrše_Qu”y + +$qu”y +, +$f›ld +, +$v®ues +) + +226 +$f›ldName + = +$this +-> + `g‘F›ldName +( +$f›ld +); + +228 ià( + `is_¬¿y +( +$v®ues +è&& + `is£t +($values['is_empty']) && $values['is_empty']) + +230 +$qu”y +-> + `addWh”e +( + `¥rštf +('(%s.% IS NULL OR %1$s.%2$ ð?)', $qu”y-> + `g‘RoÙAlŸs +(), +$f›ldName +), + `¬¿y +('')); + +232 ià( + `is_¬¿y +( +$v®ues +è&& + `is£t +($values['text']) && '' != $values['text']) + +234 +$qu”y +-> + `addWh”e +( + `¥rštf +('%s.% LIKE ?', $qu”y-> + `g‘RoÙAlŸs +(), +$f›ldName +), '%'. +$v®ues +['text'].'%'); + +236 + } +} + +238 +´Ùeùed + +funùiÚ + + $addNumb”Qu”y +( +Doùrše_Qu”y + +$qu”y +, +$f›ld +, +$v®ues +) + +240 +$f›ldName + = +$this +-> + `g‘F›ldName +( +$f›ld +); + +242 ià( + `is_¬¿y +( +$v®ues +è&& + `is£t +($values['is_empty']) && $values['is_empty']) + +244 +$qu”y +-> + `addWh”e +( + `¥rštf +('(%s.% IS NULL OR %1$s.%2$ ð?)', $qu”y-> + `g‘RoÙAlŸs +(), +$f›ldName +), + `¬¿y +('')); + +246 ià( + `is_¬¿y +( +$v®ues +è&& + `is£t +($values['text']) && '' !== $values['text']) + +248 +$qu”y +-> + `addWh”e +( + `¥rštf +('%s.% ð?', $qu”y-> + `g‘RoÙAlŸs +(), +$f›ldName +), +$v®ues +['text']); + +250 + } +} + +252 +´Ùeùed + +funùiÚ + + $addBoޗnQu”y +( +Doùrše_Qu”y + +$qu”y +, +$f›ld +, +$v®ue +) + +254 +$f›ldName + = +$this +-> + `g‘F›ldName +( +$f›ld +); + +255 +$qu”y +-> + `addWh”e +( + `¥rštf +('%s.% ð?', $qu”y-> + `g‘RoÙAlŸs +(), +$f›ldName +), +$v®ue +); + +256 + } +} + +258 +´Ùeùed + +funùiÚ + + $addD©eQu”y +( +Doùrše_Qu”y + +$qu”y +, +$f›ld +, +$v®ues +) + +260 +$f›ldName + = +$this +-> + `g‘F›ldName +( +$f›ld +); + +262 ià( + `is£t +( +$v®ues +['is_empty']) && $values['is_empty']) + +264 +$qu”y +-> + `addWh”e +( + `¥rštf +('%s.% IS NULL', $qu”y-> + `g‘RoÙAlŸs +(), +$f›ldName +)); + +268 ià( +nuÎ + !=ð +$v®ues +['from'] &&‚ull !== $values['to']) + +270 +$qu”y +-> + `ªdWh”e +( + `¥rštf +('%s.% >ð?', $qu”y-> + `g‘RoÙAlŸs +(), +$f›ldName +), +$v®ues +['from']); + +271 +$qu”y +-> + `ªdWh”e +( + `¥rštf +('%s.% <ð?', $qu”y-> + `g‘RoÙAlŸs +(), +$f›ldName +), +$v®ues +['to']); + +273 ià( +nuÎ + !=ð +$v®ues +['from']) + +275 +$qu”y +-> + `ªdWh”e +( + `¥rštf +('%s.% >ð?', $qu”y-> + `g‘RoÙAlŸs +(), +$f›ldName +), +$v®ues +['from']); + +277 ià( +nuÎ + !=ð +$v®ues +['to']) + +279 +$qu”y +-> + `ªdWh”e +( + `¥rštf +('%s.% <ð?', $qu”y-> + `g‘RoÙAlŸs +(), +$f›ldName +), +$v®ues +['to']); + +282 + } +} + +287 +´Ùeùed + +funùiÚ + + $£tupInh”™ªû +() + +289 + } +} + +300 +´Ùeùed + +funùiÚ + + $g‘R–©edMod–Name +( +$®Ÿs +) + +302 +$bË + = +Doùrše_CÜe +:: + `g‘TabË +( +$this +-> + `g‘Mod–Name +()); + +304 ià(! +$bË +-> + `hasR–©iÚ +( +$®Ÿs +)) + +306 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('Th"%s" mod– ha nØ"%s"„–©iÚ.', +$this +-> + `g‘Mod–Name +(), +$®Ÿs +)); + +309 +$»ÏtiÚ + = +$bË +-> + `g‘R–©iÚ +( +$®Ÿs +); + +311  +$»ÏtiÚ +['class']; + +312 + } +} + +314 +´Ùeùed + +funùiÚ + + $g‘CÞName +( +$f›ld +) + +316  +$this +-> + `g‘TabË +()-> + `g‘CÞumnName +( +$f›ld +); + +317 + } +} + +319 +´Ùeùed + +funùiÚ + + $g‘F›ldName +( +$cÞName +) + +321  +$this +-> + `g‘TabË +()-> + `g‘F›ldName +( +$cÞName +); + +322 + } +} + +324 +´Ùeùed + +funùiÚ + + $ÿm–ize +( +$‹xt +) + +326  +sfToÞk™ +:: + `´egŒ +( +$‹xt +, + `¬¿y +('#/(.?)#e' => "'::'.strtoupper('\\1')", '/(^|_|-)+(.)/e' => "strtoupper('\\2')")); + +327 + } +} + +329 +´Ùeùed + +funùiÚ + + $g‘TabË +() + +331  +Doùrše_CÜe +:: + `g‘TabË +( +$this +-> + `g‘Mod–Name +()); + +332 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/generator/sfDoctrineColumn.class.php + +1 +Çme + = +$Çme +; + +75 +$this +-> +bË + = +$bË +; + +76 +$this +-> +defš™iÚ + = +$bË +-> + `g‘Defš™iÚOf +( +$Çme +); + +84 +public + +funùiÚ + + $g‘Name +() + +86  +$this +-> +bË +-> + `g‘CÞumnName +($this-> +Çme +); + +87 + } +} + +94 +public + +funùiÚ + + $g‘F›ldName +() + +96  +$this +-> +bË +-> + `g‘F›ldName +($this-> + `g‘Name +()); + +97 + } +} + +104 +public + +funùiÚ + + $g‘PhpName +() + +106  +$this +-> + `g‘F›ldName +(); + +107 + } +} + +114 +public + +funùiÚ + + $g‘DoùršeTy³ +() + +116  + `is£t +( +$this +-> +defš™iÚ +['ty³']è? $this->defš™iÚ['ty³']: +nuÎ +; + +117 + } +} + +124 +public + +funùiÚ + + $g‘Ty³ +() + +126 +$doùršeTy³ + = +$this +-> + `g‘DoùršeTy³ +(); + +129 ià('¡ršg' =ð +$doùršeTy³ + && +nuÎ + !=ð +$this +-> + `g‘Size +() && $this->getSize() <= 255) + +134  +$doùršeTy³ + ? +£lf +:: +$doùršeToSymfÚy +[$doctrineType] : 'VARCHAR'; + +135 + } +} + +142 +public + +funùiÚ + + $g‘Size +() + +144  +$this +-> +defš™iÚ +['length']; + +145 + } +} + +147 +public + +funùiÚ + + $g‘L’gth +() + +149  +$this +-> + `g‘Size +(); + +150 + } +} + +158 +public + +funùiÚ + + $hasDefš™iÚKey +( +$key +) + +160  + `is£t +( +$this +-> +defš™iÚ +[ +$key +]è? +Œue +: +çl£ +; + +161 + } +} + +169 +public + +funùiÚ + + $g‘Defš™iÚKey +( +$key +) + +171 ià( +$this +-> + `hasDefš™iÚKey +( +$key +)) + +173  +$this +-> +defš™iÚ +[ +$key +]; + +175  +çl£ +; + +177 + } +} + +186 +public + +funùiÚ + + $g‘R–©iÚKey +( +$key +) + +188 + `fܗch + ( +$this +-> +bË +-> + `g‘R–©iÚs +(è +as + +$»ÏtiÚ +) + +190 +$loÿl + = ( +¬¿y +è +$»ÏtiÚ +['local']; + +191 +$loÿl + = + `¬¿y_m­ +('strtolower', $local); + +192 ià( + `š_¬¿y +( + `¡¹Þow” +( +$this +-> +Çme +), +$loÿl +)) + +194  +$»ÏtiÚ +[ +$key +]; + +197 + } +} + +204 +public + +funùiÚ + + $isNÙNuÎ +() + +206 ià( + `is£t +( +$this +-> +defš™iÚ +['notnull'])) + +208  +$this +-> +defš™iÚ +['notnull']; + +210 ià( + `is£t +( +$this +-> +defš™iÚ +['notblank'])) + +212  +$this +-> +defš™iÚ +['notblank']; + +214  +çl£ +; + +215 + } +} + +222 +public + +funùiÚ + + $isPrim¬yKey +() + +224 ià( + `is£t +( +$this +-> +defš™iÚ +['primary'])) + +226  +$this +-> +defš™iÚ +['primary']; + +228  +çl£ +; + +229 + } +} + +236 +public + +funùiÚ + + $isFÜeignKey +() + +238 ià( + `is£t +( +$this +-> +fÜeignCÏssName +)) + +240  +Œue +; + +243 ià( +$this +-> + `isPrim¬yKey +()) + +245  +çl£ +; + +248 + `fܗch + ( +$this +-> +bË +-> + `g‘R–©iÚs +(è +as + +$»ÏtiÚ +) + +250 +$loÿl + = ( +¬¿y +è +$»ÏtiÚ +['local']; + +251 +$loÿl + = + `¬¿y_m­ +('strtolower', $local); + +252 ià( + `š_¬¿y +( + `¡¹Þow” +( +$this +-> +Çme +), +$loÿl +)) + +254 +$this +-> +fÜeignCÏssName + = +$»ÏtiÚ +['class']; + +255  +Œue +; + +258  +çl£ +; + +259 + } +} + +266 +public + +funùiÚ + + $g‘FÜeignCÏssName +() + +268 ià( +$this +-> + `isFÜeignKey +()) + +270  +$this +-> +fÜeignCÏssName +; + +272  +çl£ +; + +274 + } +} + +281 +public + +funùiÚ + + $g‘FÜeignTabË +() + +283 ià( +$this +-> + `isFÜeignKey +()) + +285  +Doùrše_CÜe +:: + `g‘TabË +( +$this +-> +fÜeignCÏssName +); + +287  +çl£ +; + +289 + } +} + +297 +public + +funùiÚ + + $£tTabË +( +Doùrše_TabË + +$bË +) + +299 +$this +-> +bË + = +$bË +; + +300 + } +} + +307 +public + +funùiÚ + + $g‘TabË +() + +309  +$this +-> +bË +; + +310 + } +} + +312 +public + +funùiÚ + + $off£tExi¡s +( +$off£t +) + +314  + `is£t +( +$this +-> +defš™iÚ +[ +$off£t +]); + +315 + } +} + +317 +public + +funùiÚ + + $off£tS‘ +( +$off£t +, +$v®ue +) + +319 +$this +-> +defš™iÚ +[ +$off£t +] = +$v®ue +; + +320 + } +} + +322 +public + +funùiÚ + + $off£tG‘ +( +$off£t +) + +324  +$this +-> +defš™iÚ +[ +$off£t +]; + +325 + } +} + +327 +public + +funùiÚ + + $off£tUn£t +( +$off£t +) + +329 + `un£t +( +$this +-> +defš™iÚ +[ +$off£t +]); + +330 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/generator/sfDoctrineFormFilterGenerator.class.php + +1 + `£tG’”©ÜCÏss +('sfDoctrineFormFilter'); + +42 +public + +funùiÚ + + `g’”©e +( +$·¿ms + = + $¬¿y +()) + +44 +$this +-> +·¿ms + = +$·¿ms +; + +46 ià(! + `is£t +( +$this +-> +·¿ms +['model_dir_name'])) + +48 +$this +-> +·¿ms +['model_dir_name'] = 'model'; + +51 ià(! + `is£t +( +$this +-> +·¿ms +['filter_dir_name'])) + +53 +$this +-> +·¿ms +['filter_dir_name'] = 'filter'; + +56 +$mod–s + = +$this +-> + `lßdMod–s +(); + +59 +$fže + = +sfCÚfig +:: + `g‘ +('sf_lib_dir').'/filter/doctrine/BaseFormFilterDoctrine.class.php'; + +60 ià(! + `fže_exi¡s +( +$fže +)) + +62 ià(! + `is_dœ +( +$dœeùÜy + = + `dœÇme +( +$fže +))) + +64 + `mkdœ +( +$dœeùÜy +, 0777, +Œue +); + +67 + `fže_put_cڋÁs +( +$fže +, +$this +-> + `ev®Tem¶©e +('sfDoctrineFormFilterBaseTemplate.php')); + +70 +$¶ugšP©hs + = +$this +-> +g’”©ÜMªag” +-> + `g‘CÚfigu¿tiÚ +()-> + `g‘AÎPlugšP©hs +(); + +73 + `fܗch + ( +$mod–s + +as + +$mod– +) + +75 +$this +-> +bË + = +Doùrše_CÜe +:: + `g‘TabË +( +$mod– +); + +76 +$this +-> +mod–Name + = +$mod– +; + +78 +$ba£Dœ + = +sfCÚfig +:: + `g‘ +('sf_lib_dir') . '/filter/doctrine'; + +80 +$isPlugšMod– + = +$this +-> + `isPlugšMod– +( +$mod– +); + +81 ià( +$isPlugšMod– +) + +83 +$¶ugšName + = +$this +-> + `g‘PlugšNameFÜMod– +( +$mod– +); + +84 +$ba£Dœ + .ð'/' . +$¶ugšName +; + +87 ià(! + `is_dœ +( +$ba£Dœ +.'/base')) + +89 + `mkdœ +( +$ba£Dœ +.'/ba£', 0777, +Œue +); + +92 + `fže_put_cڋÁs +( +$ba£Dœ +.'/ba£/Ba£'. +$mod– +.'FÜmFž‹r.þass.php', +$this +-> + `ev®Tem¶©e +( +nuÎ + ==ð$this-> + `g‘P¬’tMod– +() ? 'sfDoctrineFormFilterGeneratedTemplate.php' : 'sfDoctrineFormFilterGeneratedInheritanceTemplate.php')); + +94 ià( +$isPlugšMod– +) + +96 +$¶ugšBa£Dœ + = +$¶ugšP©hs +[ +$¶ugšName +].'/lib/filter/doctrine'; + +97 ià(! + `fže_exi¡s +( +$þassFže + = +$¶ugšBa£Dœ +.'/Plugš'. +$mod– +.'FormFilter.class.php')) + +99 ià(! + `is_dœ +( +$¶ugšBa£Dœ +)) + +101 + `mkdœ +( +$¶ugšBa£Dœ +, 0777, +Œue +); + +103 + `fže_put_cڋÁs +( +$þassFže +, +$this +-> + `ev®Tem¶©e +('sfDoctrineFormFilterPluginTemplate.php')); + +106 ià(! + `fže_exi¡s +( +$þassFže + = +$ba£Dœ +.'/'. +$mod– +.'FormFilter.class.php')) + +108 ià( +$isPlugšMod– +) + +110 + `fže_put_cڋÁs +( +$þassFže +, +$this +-> + `ev®Tem¶©e +('sfDoctrinePluginFormFilterTemplate.php')); + +112 + `fže_put_cڋÁs +( +$þassFže +, +$this +-> + `ev®Tem¶©e +('sfDoctrineFormFilterTemplate.php')); + +116 + } +} + +124 +public + +funùiÚ + + $g‘Widg‘CÏssFÜCÞumn +( +$cÞumn +) + +126  +$cÞumn +-> + `g‘DoùršeTy³ +()) + +129 +$Çme + = 'Choice'; + +134 +$Çme + = 'FilterDate'; + +137 +$Çme + = 'Choice'; + +140 +$Çme + = 'FilterInput'; + +143 ià( +$cÞumn +-> + `isFÜeignKey +()) + +145 +$Çme + = 'DoctrineChoice'; + +148  + `¥rštf +('sfWidg‘FÜm%s', +$Çme +); + +149 + } +} + +157 +public + +funùiÚ + + $g‘Widg‘O±iÚsFÜCÞumn +( +$cÞumn +) + +159 +$ÝtiÚs + = + `¬¿y +(); + +161 +$w™hEm±y + = +$cÞumn +-> + `isNÙNuÎ +(è&& !$cÞumn-> + `isFÜeignKey +(è? + `¬¿y +("'with_empty' => false") :‡rray(); + +162  +$cÞumn +-> + `g‘DoùršeTy³ +()) + +165 +$ÝtiÚs +[] = "'choices' =>‡rray('' => 'yes or‚o', 1 => 'yes', 0 => 'no')"; + +170 +$ÝtiÚs +[] = "'from_date' =>‚ew sfWidgetFormDate(), 'to_date' =>‚ew sfWidgetFormDate()"; + +171 +$ÝtiÚs + = + `¬¿y_m”ge +($ÝtiÚs, +$w™hEm±y +); + +174 +$v®ues + = + `¬¿y +('' => ''); + +175 +$v®ues + = + `¬¿y_m”ge +($v®ues, +$cÞumn +['values']); + +176 +$v®ues + = + `¬¿y_combše +($values, $values); + +177 +$ÝtiÚs +[] = "'choiûs' => ". +$this +-> + `¬¿yExpÜt +( +$v®ues +); + +180 +$ÝtiÚs + = + `¬¿y_m”ge +($ÝtiÚs, +$w™hEm±y +); + +183 ià( +$cÞumn +-> + `isFÜeignKey +()) + +185 +$ÝtiÚs +[] = + `¥rštf +('\'mod–\' => $this->g‘R–©edMod–Name(\'%s\'), \'add_em±y\' =>rue', +$cÞumn +-> + `g‘R–©iÚKey +('alias')); + +188  + `couÁ +( +$ÝtiÚs +è? + `¥rštf +('¬¿y(%s)', + `im¶ode +(', ', $options)) : ''; + +189 + } +} + +197 +public + +funùiÚ + + $g‘V®id©ÜCÏssFÜCÞumn +( +$cÞumn +) + +199  +$cÞumn +-> + `g‘DoùršeTy³ +()) + +202 +$Çme + = 'Choice'; + +206 +$Çme + = 'Number'; + +209 +$Çme + = 'Integer'; + +214 +$Çme + = 'DateRange'; + +217 +$Çme + = 'Choice'; + +220 +$Çme + = 'Pass'; + +223 ià( +$cÞumn +-> + `isPrim¬ykey +(è|| $cÞumn-> + `isFÜeignKey +()) + +225 +$Çme + = 'DoctrineChoice'; + +228  + `¥rštf +('sfV®id©Ü%s', +$Çme +); + +229 + } +} + +237 +public + +funùiÚ + + $g‘V®id©ÜO±iÚsFÜCÞumn +( +$cÞumn +) + +239 +$ÝtiÚs + = + `¬¿y +('\'required\' => false'); + +241 ià( +$cÞumn +-> + `isFÜeignKey +()) + +243 +$cÞumns + = +$cÞumn +-> + `g‘FÜeignTabË +()-> + `g‘CÞumns +(); + +244 + `fܗch + ( +$cÞumns + +as + +$Çme + => +$cÞ +) + +246 ià( + `is£t +( +$cÞ +['primary']) && $col['primary']) + +252 +$ÝtiÚs +[] = + `¥rštf +('\'mod–\' => $this->g‘R–©edMod–Name(\'%s\'), \'cÞumn\' => \'%s\'', +$cÞumn +-> + `g‘R–©iÚKey +('®Ÿs'), $cÞumn-> + `g‘FÜeignTabË +()-> + `g‘F›ldName +( +$Çme +)); + +254 ià( +$cÞumn +-> + `isPrim¬yKey +()) + +256 +$ÝtiÚs +[] = + `¥rštf +('\'mod–\' => \'%s\', \'cÞumn\' => \'%s\'', +$this +-> +bË +-> + `g‘O±iÚ +('Çme'), +$cÞumn +-> + `g‘F›ldName +()); + +260  +$cÞumn +-> + `g‘DoùršeTy³ +()) + +263 +$ÝtiÚs +[] = "'choices' =>‡rray('', 1, 0)"; + +266 +$ÝtiÚs +[] = "'from_date' =>‚ew sfValidatorDate(array('required' => false)), 'to_date' =>‚ew sfValidatorDateTime(array('required' => false))"; + +270 +$ÝtiÚs +[] = "'from_date' =>‚ew sfValidatorDateTime(array('required' => false, 'datetime_output' => 'Y-m-d 00:00:00')), 'to_date' =>‚ew sfValidatorDateTime(array('required' => false, 'datetime_output' => 'Y-m-d 23:59:59'))"; + +273 +$v®ues + = + `¬¿y_combše +( +$cÞumn +['values'], $column['values']); + +274 +$ÝtiÚs +[] = "'choiûs' => ". +$this +-> + `¬¿yExpÜt +( +$v®ues +); + +279  + `couÁ +( +$ÝtiÚs +è? + `¥rštf +('¬¿y(%s)', + `im¶ode +(', ', $options)) : ''; + +280 + } +} + +282 +public + +funùiÚ + + $g‘V®id©ÜFÜCÞumn +( +$cÞumn +) + +284 +$fÜm© + = 'new %s(%s)'; + +286 ià( + `š_¬¿y +( +$þass + = +$this +-> + `g‘V®id©ÜCÏssFÜCÞumn +( +$cÞumn +), + `¬¿y +('sfValidatorInteger', 'sfValidatorNumber'))) + +288 +$fÜm© + = 'new sfValidatorSchemaFilter(\'text\',‚ew %s(%s))'; + +291  + `¥rštf +( +$fÜm© +, +$þass +, +$this +-> + `g‘V®id©ÜO±iÚsFÜCÞumn +( +$cÞumn +)); + +292 + } +} + +294 +public + +funùiÚ + + $g‘Ty³ +( +$cÞumn +) + +296 ià( +$cÞumn +-> + `isFÜeignKey +()) + +301  +$cÞumn +-> + `g‘DoùršeTy³ +()) + +318 + } +} + +326 +´Ùeùed + +funùiÚ + + $¬¿yExpÜt +( +$v®ues +) + +328 +$php + = + `v¬_expÜt +( +$v®ues +, +Œue +); + +329 +$php + = + `¡r_»¶aû +("\n", '', $php); + +330 +$php + = + `¡r_»¶aû +('array ( ', 'array(', $php); + +331 +$php + = + `¡r_»¶aû +(',)', ')', $php); + +332 +$php + = + `¡r_»¶aû +(' ', ' ', $php); + +333  +$php +; + +334 + } +} + +341 +´Ùeùed + +funùiÚ + + $fž‹rMod–s +( +$mod–s +) + +343 + `fܗch + ( +$mod–s + +as + +$key + => +$mod– +) + +345 +$bË + = +Doùrše_CÜe +:: + `g‘TabË +( +$mod– +); + +346 +$symfÚyO±iÚs + = ( +¬¿y +è +$bË +-> + `g‘O±iÚ +('symfony'); + +348 ià( +$bË +-> + `isG’”©Ü +()) + +350 +$symfÚyO±iÚs + = + `¬¿y_m”ge +(( +¬¿y +è +$bË +-> + `g‘P¬’tG’”©Ü +()-> + `g‘O±iÚ +('table')->getOption('symfony'), $symfonyOptions); + +353 ià( + `is£t +( +$symfÚyO±iÚs +['filter']) && !$symfonyOptions['filter']) + +355 + `un£t +( +$mod–s +[ +$key +]); + +359  +$mod–s +; + +360 + } +} + +367 +public + +funùiÚ + + $g‘FÜmCÏssToEx‹nd +() + +369  +nuÎ + ==ð( +$mod– + = +$this +-> + `g‘P¬’tMod– +()è? 'Ba£FÜmFž‹rDoùrše' : + `¥rštf +('%sFormFilter', $model); + +370 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/generator/sfDoctrineFormGenerator.class.php + +1 + `g‘PlugšMod–s +(); + +49 +$this +-> + `£tG’”©ÜCÏss +('sfDoctrineForm'); + +59 +public + +funùiÚ + + `g’”©e +( +$·¿ms + = + $¬¿y +()) + +61 +$this +-> +·¿ms + = +$·¿ms +; + +63 ià(! + `is£t +( +$this +-> +·¿ms +['model_dir_name'])) + +65 +$this +-> +·¿ms +['model_dir_name'] = 'model'; + +68 ià(! + `is£t +( +$this +-> +·¿ms +['form_dir_name'])) + +70 +$this +-> +·¿ms +['form_dir_name'] = 'form'; + +73 +$mod–s + = +$this +-> + `lßdMod–s +(); + +76 +$fže + = +sfCÚfig +:: + `g‘ +('sf_lib_dir').'/form/doctrine/BaseFormDoctrine.class.php'; + +77 ià(! + `fže_exi¡s +( +$fže +)) + +79 ià(! + `is_dœ +( +$dœeùÜy + = + `dœÇme +( +$fže +))) + +81 + `mkdœ +( +$dœeùÜy +, 0777, +Œue +); + +84 + `fže_put_cڋÁs +( +$fže +, +$this +-> + `ev®Tem¶©e +('sfDoctrineFormBaseTemplate.php')); + +87 +$¶ugšP©hs + = +$this +-> +g’”©ÜMªag” +-> + `g‘CÚfigu¿tiÚ +()-> + `g‘AÎPlugšP©hs +(); + +90 + `fܗch + ( +$mod–s + +as + +$mod– +) + +92 +$this +-> +bË + = +Doùrše_CÜe +:: + `g‘TabË +( +$mod– +); + +93 +$this +-> +mod–Name + = +$mod– +; + +95 +$ba£Dœ + = +sfCÚfig +:: + `g‘ +('sf_lib_dir') . '/form/doctrine'; + +97 +$isPlugšMod– + = +$this +-> + `isPlugšMod– +( +$mod– +); + +98 ià( +$isPlugšMod– +) + +100 +$¶ugšName + = +$this +-> + `g‘PlugšNameFÜMod– +( +$mod– +); + +101 +$ba£Dœ + .ð'/' . +$¶ugšName +; + +104 ià(! + `is_dœ +( +$ba£Dœ +.'/base')) + +106 + `mkdœ +( +$ba£Dœ +.'/ba£', 0777, +Œue +); + +109 + `fže_put_cڋÁs +( +$ba£Dœ +.'/ba£/Ba£'. +$mod– +.'FÜm.þass.php', +$this +-> + `ev®Tem¶©e +( +nuÎ + ==ð$this-> + `g‘P¬’tMod– +() ? 'sfDoctrineFormGeneratedTemplate.php' : 'sfDoctrineFormGeneratedInheritanceTemplate.php')); + +111 ià( +$isPlugšMod– +) + +113 +$¶ugšBa£Dœ + = +$¶ugšP©hs +[ +$¶ugšName +].'/lib/form/doctrine'; + +114 ià(! + `fže_exi¡s +( +$þassFže + = +$¶ugšBa£Dœ +.'/Plugš'. +$mod– +.'Form.class.php')) + +116 ià(! + `is_dœ +( +$¶ugšBa£Dœ +)) + +118 + `mkdœ +( +$¶ugšBa£Dœ +, 0777, +Œue +); + +120 + `fže_put_cڋÁs +( +$þassFže +, +$this +-> + `ev®Tem¶©e +('sfDoctrineFormPluginTemplate.php')); + +123 ià(! + `fže_exi¡s +( +$þassFže + = +$ba£Dœ +.'/'. +$mod– +.'Form.class.php')) + +125 ià( +$isPlugšMod– +) + +127 + `fže_put_cڋÁs +( +$þassFže +, +$this +-> + `ev®Tem¶©e +('sfDoctrinePluginFormTemplate.php')); + +129 + `fže_put_cڋÁs +( +$þassFže +, +$this +-> + `ev®Tem¶©e +('sfDoctrineFormTemplate.php')); + +133 + } +} + +143 +public + +funùiÚ + + $g‘PlugšMod–s +() + +145 ià(! +$this +-> +¶ugšMod–s +) + +147 +$¶ugšs + = +$this +-> +g’”©ÜMªag” +-> + `g‘CÚfigu¿tiÚ +()-> + `g‘Plugšs +(); + +148 +$¶ugšP©hs + = +$this +-> +g’”©ÜMªag” +-> + `g‘CÚfigu¿tiÚ +()-> + `g‘AÎPlugšP©hs +(); + +150 + `fܗch + ( +$¶ugšP©hs + +as + +$¶ugšName + => +$·th +) + +152 ià(! + `š_¬¿y +( +$¶ugšName +, +$¶ugšs +)) + +157 + `fܗch + ( +sfFšd” +:: + `ty³ +('fže')-> + `Çme +('*.php')-> + `š +( +$·th +.'/lib/mod–/doùrše'è +as + $path) + +159 +$šfo + = + `·thšfo +( +$·th +); + +160 +$e + = + `ex¶ode +('.', +$šfo +['filename']); + +161 +$mod–Name + = + `sub¡r +( +$e +[0], 6, + `¡¾’ +($e[0])); + +163 ià( + `þass_exi¡s +( +$e +[0]è&& cÏss_exi¡s( +$mod–Name +)) + +165 +$·»Á + = +Ãw + + `ReæeùiÚCÏss +('Doctrine_Record'); + +166 +$»æeùiÚ + = +Ãw + + `ReæeùiÚCÏss +( +$mod–Name +); + +167 ià( +$»æeùiÚ +-> + `isSubCÏssOf +( +$·»Á +)) + +169 +$this +-> +¶ugšMod–s +[ +$mod–Name +] = +$¶ugšName +; + +171 ià( +$»æeùiÚ +-> + `isIn¡ªtŸbË +()) + +173 +$g’”©Üs + = +Doùrše_CÜe +:: + `g‘TabË +( +$mod–Name +)-> + `g‘G’”©Üs +(); + +174 + `fܗch + ( +$g’”©Üs + +as + +$g’”©Ü +) + +176 +$this +-> +¶ugšMod–s +[ +$g’”©Ü +-> + `g‘O±iÚ +('þassName')] = +$¶ugšName +; + +185  +$this +-> +¶ugšMod–s +; + +186 + } +} + +194 +public + +funùiÚ + + $isPlugšMod– +( +$mod–Name +) + +196  + `is£t +( +$this +-> +¶ugšMod–s +[ +$mod–Name +]è? +Œue +: +çl£ +; + +197 + } +} + +205 +public + +funùiÚ + + $g‘PlugšNameFÜMod– +( +$mod–Name +) + +207 ià( +$this +-> + `isPlugšMod– +( +$mod–Name +)) + +209  +$this +-> +¶ugšMod–s +[ +$mod–Name +]; + +211  +çl£ +; + +213 + } +} + +220 +public + +funùiÚ + + $g‘MªyToMªyR–©iÚs +() + +222 +$»ÏtiÚs + = + `¬¿y +(); + +223 + `fܗch + ( +$this +-> +bË +-> + `g‘R–©iÚs +(è +as + +$»ÏtiÚ +) + +226 +Doùrše_R–©iÚ +:: +MANY + =ð +$»ÏtiÚ +-> + `g‘Ty³ +() + +228 + `is£t +( +$»ÏtiÚ +['refTable']) + +230 ( +nuÎ + ==ð +$this +-> + `g‘P¬’tMod– +(è|| ! +Doùrše_CÜe +:: + `g‘TabË +($this->g‘P¬’tMod–())-> + `hasR–©iÚ +( +$»ÏtiÚ +-> + `g‘AlŸs +())) + +233 +$»ÏtiÚs +[] = +$»ÏtiÚ +; + +237  +$»ÏtiÚs +; + +238 + } +} + +251 +public + +funùiÚ + + $g‘FÜeignKeyNames +() + +253 +$Çmes + = + `¬¿y +(); + +254 + `fܗch + ( +$this +-> +bË +-> + `g‘R–©iÚs +(è +as + +$»ÏtiÚ +) + +256 ià( +$»ÏtiÚ +-> + `g‘Ty³ +(è==ð +Doùrše_R–©iÚ +:: +ONE +) + +258 +$fÜeignDef + = +$»ÏtiÚ +-> + `g‘TabË +()-> + `g‘Defš™iÚOf +($»ÏtiÚ-> + `g‘FÜeignF›ldName +()); + +259 +$Çmes +[] = + `¬¿y +( +$»ÏtiÚ +['bË']-> + `g‘O±iÚ +('Çme'), $»ÏtiÚ-> + `g‘FÜeignF›ldName +(), +$this +-> + `isCÞumnNÙNuÎ +($»ÏtiÚ->g‘FÜeignF›ldName(), +$fÜeignDef +), +çl£ +); + +263 + `fܗch + ( +$this +-> + `g‘MªyToMªyR–©iÚs +(è +as + +$»ÏtiÚ +) + +265 +$Çmes +[] = + `¬¿y +( +$»ÏtiÚ +['bË']-> + `g‘O±iÚ +('Çme'), $»ÏtiÚ['®Ÿs'], +çl£ +, +Œue +); + +268  +$Çmes +; + +269 + } +} + +276 +public + +funùiÚ + + $g‘Prim¬yKey +() + +278 + `fܗch + ( +$this +-> + `g‘CÞumns +(è +as + +$cÞumn +) + +280 ià( +$cÞumn +-> + `isPrim¬yKey +()) + +282  +$cÞumn +; + +285 + } +} + +293 +public + +funùiÚ + + $g‘Widg‘CÏssFÜCÞumn +( +$cÞumn +) + +295  +$cÞumn +-> + `g‘DoùršeTy³ +()) + +298 +$widg‘Subþass + = +nuÎ + ==ð +$cÞumn +-> + `g‘L’gth +() || $column->getLength() > 255 ? 'Textarea' : 'InputText'; + +301 +$widg‘Subþass + = 'InputCheckbox'; + +305 +$widg‘Subþass + = 'Textarea'; + +308 +$widg‘Subþass + = 'Date'; + +311 +$widg‘Subþass + = 'Time'; + +314 +$widg‘Subþass + = 'DateTime'; + +317 +$widg‘Subþass + = 'Choice'; + +320 +$widg‘Subþass + = 'InputText'; + +323 ià( +$cÞumn +-> + `isPrim¬yKey +()) + +325 +$widg‘Subþass + = 'InputHidden'; + +327 ià( +$cÞumn +-> + `isFÜeignKey +()) + +329 +$widg‘Subþass + = 'DoctrineChoice'; + +332  + `¥rštf +('sfWidg‘FÜm%s', +$widg‘Subþass +); + +333 + } +} + +342 +public + +funùiÚ + + $g‘Widg‘O±iÚsFÜCÞumn +( +$cÞumn +) + +344 +$ÝtiÚs + = + `¬¿y +(); + +346 ià( +$cÞumn +-> + `isFÜeignKey +()) + +348 +$ÝtiÚs +[] = + `¥rštf +('\'mod–\' => $this->g‘R–©edMod–Name(\'%s\'), \'add_em±y\' => %s', +$cÞumn +-> + `g‘R–©iÚKey +('®Ÿs'), $cÞumn-> + `isNÙNuÎ +() ? 'false' : 'true'); + +350 ià('’um' =ð +$cÞumn +-> + `g‘DoùršeTy³ +(è&& + `is_subþass_of +( +$this +-> + `g‘Widg‘CÏssFÜCÞumn +($column), 'sfWidgetFormChoiceBase')) + +352 +$ÝtiÚs +[] = '\'choiûs\' => '. +$this +-> + `¬¿yExpÜt +( + `¬¿y_combše +( +$cÞumn +['values'], $column['values'])); + +355  + `couÁ +( +$ÝtiÚs +è? + `¥rštf +('¬¿y(%s)', + `im¶ode +(', ', $options)) : ''; + +356 + } +} + +364 +public + +funùiÚ + + $g‘V®id©ÜCÏssFÜCÞumn +( +$cÞumn +) + +366  +$cÞumn +-> + `g‘DoùršeTy³ +()) + +369 +$v®id©ÜSubþass + = 'Boolean'; + +372 ià( +$cÞumn +-> + `g‘Defš™iÚKey +('email')) + +374 +$v®id©ÜSubþass + = 'Email'; + +376 ià( +$cÞumn +-> + `g‘Defš™iÚKey +('regexp')) + +378 +$v®id©ÜSubþass + = 'Regex'; + +382 +$v®id©ÜSubþass + = 'String'; + +387 +$v®id©ÜSubþass + = 'String'; + +391 +$v®id©ÜSubþass + = 'Number'; + +394 +$v®id©ÜSubþass + = 'Integer'; + +397 +$v®id©ÜSubþass + = 'Date'; + +400 +$v®id©ÜSubþass + = 'Time'; + +403 +$v®id©ÜSubþass + = 'DateTime'; + +406 +$v®id©ÜSubþass + = 'Choice'; + +409 +$v®id©ÜSubþass + = 'Pass'; + +412 ià( +$cÞumn +-> + `isFÜeignKey +()) + +414 +$v®id©ÜSubþass + = 'DoctrineChoice'; + +416 ià( +$cÞumn +-> + `isPrim¬yKey +()) + +418 +$v®id©ÜSubþass + = 'Choice'; + +421  + `¥rštf +('sfV®id©Ü%s', +$v®id©ÜSubþass +); + +422 + } +} + +430 +public + +funùiÚ + + $g‘V®id©ÜO±iÚsFÜCÞumn +( +$cÞumn +) + +432 +$ÝtiÚs + = + `¬¿y +(); + +434 ià( +$cÞumn +-> + `isFÜeignKey +()) + +436 +$ÝtiÚs +[] = + `¥rštf +('\'mod–\' => $this->g‘R–©edMod–Name(\'%s\')', +$cÞumn +-> + `g‘R–©iÚKey +('alias')); + +438 ià( +$cÞumn +-> + `isPrim¬yKey +()) + +440 +$ÝtiÚs +[] = + `¥rštf +('\'choiûs\' =>‡¼ay($this->g‘Objeù()->g‘(\'%s\')), \'em±y_v®ue\' => $this->g‘Objeù()->g‘(\'%1$s\')', +$cÞumn +-> + `g‘F›ldName +()); + +444  +$cÞumn +-> + `g‘DoùršeTy³ +()) + +447 ià( +$cÞumn +['length']) + +449 +$ÝtiÚs +[] = + `¥rštf +('\'max_Ëngth\' => %s', +$cÞumn +['length']); + +451 ià( + `is£t +( +$cÞumn +['minlength'])) + +453 +$ÝtiÚs +[] = + `¥rštf +('\'mš_Ëngth\' => %s', +$cÞumn +['minlength']); + +455 ià( + `is£t +( +$cÞumn +['regexp'])) + +457 +$ÝtiÚs +[] = + `¥rštf +('\'·‰”n\' => \'%s\'', +$cÞumn +['regexp']); + +461 +$ÝtiÚs +[] = '\'choiûs\' => '. +$this +-> + `¬¿yExpÜt +( +$cÞumn +['values']); + +468 ià(! +$cÞumn +-> + `isNÙNuÎ +(è|| $cÞumn-> + `isPrim¬yKey +(è|| $cÞumn-> + `hasDefš™iÚKey +('default')) + +470 +$ÝtiÚs +[] = '\'required\' => false'; + +473  + `couÁ +( +$ÝtiÚs +è? + `¥rštf +('¬¿y(%s)', + `im¶ode +(', ', $options)) : ''; + +474 + } +} + +481 +public + +funùiÚ + + $g‘CÞumnNameMaxL’gth +() + +483 +$max + = 0; + +484 + `fܗch + ( +$this +-> + `g‘CÞumns +(è +as + +$cÞumn +) + +486 ià(( +$m + = + `¡¾’ +( +$cÞumn +-> + `g‘F›ldName +())è> +$max +) + +488 +$max + = +$m +; + +492 + `fܗch + ( +$this +-> + `g‘MªyToMªyR–©iÚs +(è +as + +$»ÏtiÚ +) + +494 ià(( +$m + = + `¡¾’ +( +$this +-> + `und”scÜe +( +$»ÏtiÚ +['®Ÿs']).'_li¡')è> +$max +) + +496 +$max + = +$m +; + +500  +$max +; + +501 + } +} + +508 +public + +funùiÚ + + $g‘Prim¬yKeyCÞumNames +() + +510  +$this +-> +bË +-> + `g‘Id’tif›rCÞumnNames +(); + +511 + } +} + +520 +public + +funùiÚ + + $g‘Prim¬yKeyCÞumNamesAsSŒšg +() + +522  + `¥rštf +('¬¿y(\'%s\')', + `im¶ode +('\', \'', +$this +-> + `g‘Prim¬yKeyCÞumNames +())); + +523 + } +} + +530 +public + +funùiÚ + + $isI18n +() + +532  +$this +-> +bË +-> + `hasR–©iÚ +('Translation'); + +533 + } +} + +540 +public + +funùiÚ + + $g‘I18nMod– +() + +542  +$this +-> +bË +-> + `g‘R–©iÚ +('T¿n¦©iÚ')-> + `g‘TabË +()-> + `ü—‹ +(); + +543 + } +} + +545 +public + +funùiÚ + + $und”scÜe +( +$Çme +) + +547  + `¡¹Þow” +( + `´eg_»¶aû +( + `¬¿y +('/([A-Z]+)([A-Z][a-z])/', '/([a-z\d])([A-Z])/'), '\\1_\\2', +$Çme +)); + +548 + } +} + +555 +public + +funùiÚ + + $g‘CÞumns +() + +557 +$·»ÁMod– + = +$this +-> + `g‘P¬’tMod– +(); + +558 +$·»ÁCÞumns + = +$·»ÁMod– + ? + `¬¿y_keys +( +Doùrše_CÜe +:: + `g‘TabË +($·»ÁMod–)-> + `g‘CÞumns +()è: + `¬¿y +(); + +560 +$cÞumns + = + `¬¿y +(); + +561 + `fܗch + ( + `¬¿y_diff +( + `¬¿y_keys +( +$this +-> +bË +-> + `g‘CÞumns +()), +$·»ÁCÞumns +è +as + +$Çme +) + +563 +$cÞumns +[] = +Ãw + + `sfDoùršeCÞumn +( +$Çme +, +$this +-> +bË +); + +566  +$cÞumns +; + +567 + } +} + +569 +public + +funùiÚ + + $g‘UniqueCÞumnNames +() + +571 +$uniqueCÞumns + = + `¬¿y +(); + +573 + `fܗch + ( +$this +-> + `g‘CÞumns +(è +as + +$cÞumn +) + +575 ià( +$cÞumn +-> + `g‘Defš™iÚKey +('unique')) + +577 +$uniqueCÞumns +[] = + `¬¿y +( +$cÞumn +-> + `g‘F›ldName +()); + +581 +$šdexes + = +$this +-> +bË +-> + `g‘O±iÚ +('indexes'); + +582 + `fܗch + ( +$šdexes + +as + +$Çme + => +$šdex +) + +584 +$šdex +['f›lds'] = ( +¬¿y +) $index['fields']; + +586 ià( + `is£t +( +$šdex +['type']) && $index['type'] == 'unique') + +588 +$tmp + = +$šdex +['fields']; + +589 ià( + `is_¬¿y +( + `¬¿y_shiá +( +$tmp +))) + +591 +$uniqueCÞumns +[] = + `¬¿y_keys +( +$šdex +['fields']); + +593 +$uniqueCÞumns +[] = +$šdex +['fields']; + +598  +$uniqueCÞumns +; + +599 + } +} + +604 +´Ùeùed + +funùiÚ + + $lßdMod–s +() + +606 +Doùrše_CÜe +:: + `lßdMod–s +( +$this +-> +g’”©ÜMªag” +-> + `g‘CÚfigu¿tiÚ +()-> + `g‘Mod–Dœs +()); + +607 +$mod–s + = +Doùrše_CÜe +:: + `g‘LßdedMod–s +(); + +608 +$mod–s + = +Doùrše_CÜe +:: + `š™ŸlizeMod–s +($models); + +609 +$mod–s + = +Doùrše_CÜe +:: + `fž‹rInv®idMod–s +($models); + +610 +$this +-> +mod–s + = $this-> + `fž‹rMod–s +( +$mod–s +); + +612  +$this +-> +mod–s +; + +613 + } +} + +620 +´Ùeùed + +funùiÚ + + $fž‹rMod–s +( +$mod–s +) + +622 + `fܗch + ( +$mod–s + +as + +$key + => +$mod– +) + +624 +$bË + = +Doùrše_CÜe +:: + `g‘TabË +( +$mod– +); + +625 +$symfÚyO±iÚs + = ( +¬¿y +è +$bË +-> + `g‘O±iÚ +('symfony'); + +627 ià( +$bË +-> + `isG’”©Ü +()) + +629 +$symfÚyO±iÚs + = + `¬¿y_m”ge +(( +¬¿y +è +$bË +-> + `g‘P¬’tG’”©Ü +()-> + `g‘O±iÚ +('table')->getOption('symfony'), $symfonyOptions); + +632 ià( + `is£t +( +$symfÚyO±iÚs +['form']) && !$symfonyOptions['form']) + +634 + `un£t +( +$mod–s +[ +$key +]); + +638  +$mod–s +; + +639 + } +} + +647 +´Ùeùed + +funùiÚ + + $¬¿yExpÜt +( +$v®ues +) + +649 +$php + = + `v¬_expÜt +( +$v®ues +, +Œue +); + +650 +$php + = + `¡r_»¶aû +("\n", '', $php); + +651 +$php + = + `¡r_»¶aû +('array ( ', 'array(', $php); + +652 +$php + = + `¡r_»¶aû +(',)', ')', $php); + +653 +$php + = + `¡r_»¶aû +(' ', ' ', $php); + +654  +$php +; + +655 + } +} + +662 +public + +funùiÚ + + $g‘P¬’tMod– +() + +664 +$ba£CÏs£s + = + `¬¿y +( + +669 +$bužd”O±iÚs + = +sfCÚfig +:: + `g‘ +('doùrše_mod–_bužd”_ÝtiÚs', + `¬¿y +()); + +670 ià( + `is£t +( +$bužd”O±iÚs +['baseClassName'])) + +672 +$ba£CÏs£s +[] = +$bužd”O±iÚs +['baseClassName']; + +676 +$mod– + = +$this +-> +mod–Name +; + +677  +$mod– + = + `g‘_·»Á_þass +($model)) + +679 ià( + `š_¬¿y +( +$mod– +, +$ba£CÏs£s +)) + +684 +$r + = +Ãw + + `ReæeùiÚCÏss +( +$mod– +); + +685 ià(! +$r +-> + `isAb¡¿ù +()) + +687  +$r +-> + `g‘Name +(); + +690 + } +} + +697 +public + +funùiÚ + + $g‘FÜmCÏssToEx‹nd +() + +699  +nuÎ + ==ð( +$mod– + = +$this +-> + `g‘P¬’tMod– +()è? 'Ba£FÜmDoùrše' : + `¥rštf +('%sForm', $model); + +700 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/generator/sfDoctrineGenerator.class.php + +1 + `£tG’”©ÜCÏss +('sfDoctrineModule'); + +39 +public + +funùiÚ + + $cÚfigu» +() + +41 +$this +-> +bË + = +Doùrše_CÜe +:: + `g‘TabË +($this-> +mod–CÏss +); + +44 +$this +-> + `lßdPrim¬yKeys +(); + +45 + } +} + +54 +public + +funùiÚ + + $g‘MªyToMªyTabËs +() + +56 +$»ÏtiÚs + = + `¬¿y +(); + +57 + `fܗch + ( +$this +-> +bË +-> + `g‘R–©iÚs +(è +as + +$»ÏtiÚ +) + +59 ià( +$»ÏtiÚ +-> + `g‘Ty³ +(è==ð +Doùrše_R–©iÚ +:: +MANY + && + `is£t +($relation['refTable'])) + +61 +$»ÏtiÚs +[] = +$»ÏtiÚ +; + +64  +$»ÏtiÚs +; + +65 + } +} + +72 +´Ùeùed + +funùiÚ + + $lßdPrim¬yKeys +() + +74 +$this +-> +´im¬yKey + = + `¬¿y +(); + +75 + `fܗch + ( +$this +-> + `g‘CÞumns +(è +as + +$Çme + => +$cÞumn +) + +77 ià( +$cÞumn +-> + `isPrim¬yKey +()) + +79 +$this +-> +´im¬yKey +[] = +$Çme +; + +83 ià(! + `couÁ +( +$this +-> +´im¬yKey +)) + +85 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('CªnÙ g’”©¨moduË f܇ mod– w™houˆ¨´im¬y key (%s)', +$this +-> +mod–CÏss +)); + +87 + } +} + +98 +public + +funùiÚ + +g‘CÞumnG‘‹r +( +$cÞumn +, +$dev–Ýed + = +çl£ +, +$´efix + = '') + +100 +$g‘‹r + = 'g‘'. +sfInæeùÜ +:: +ÿm–ize +( +$cÞumn +); + +101 ià( + g$dev–Ýed +) + +103 + g$g‘‹r + = +¥rštf +('$%s%s->%s()', +$´efix +, +$this +-> +g‘SšguÏrName +(), +$g‘‹r +); + +106  + g$g‘‹r +; + +116 +public + +funùiÚ + + $g‘Ty³ +( +$cÞumn +) + +118 ià( +$cÞumn +-> + `isFÜeignKey +()) + +123  +$cÞumn +-> + `g‘DoùršeTy³ +()) + +137 + } +} + +144 +public + +funùiÚ + + $g‘DeçuÉF›ldsCÚfigu¿tiÚ +() + +146 +$f›lds + = + `¬¿y +(); + +148 +$Çmes + = + `¬¿y +(); + +149 + `fܗch + ( +$this +-> + `g‘CÞumns +(è +as + +$Çme + => +$cÞumn +) + +151 +$Çmes +[] = +$Çme +; + +152 +$f›lds +[ +$Çme +] = + `¬¿y_m”ge +( + `¬¿y +( + +153 'is_lšk' => ( +Boޗn +è +$cÞumn +-> + `isPrim¬yKey +(), + +154 'is_»®' => +Œue +, + +155 'is_·¹Ÿl' => +çl£ +, + +156 'is_compڒt' => +çl£ +, + +157 'ty³' => +$this +-> + `g‘Ty³ +( +$cÞumn +), + +158 ), + `is£t +( +$this +-> +cÚfig +['f›lds'][ +$Çme +]è? $this->cÚfig['f›lds'][$Çme] : + `¬¿y +()); + +161 + `fܗch + ( +$this +-> + `g‘MªyToMªyTabËs +(è +as + +$bËs +) + +163 +$Çme + = +sfInæeùÜ +:: + `und”scÜe +( +$bËs +['alias']).'_list'; + +164 +$Çmes +[] = +$Çme +; + +165 +$f›lds +[ +$Çme +] = + `¬¿y_m”ge +( + `¬¿y +( + +166 'is_lšk' => +çl£ +, + +167 'is_»®' => +çl£ +, + +168 'is_·¹Ÿl' => +çl£ +, + +169 'is_compڒt' => +çl£ +, + +171 ), + `is£t +( +$this +-> +cÚfig +['f›lds'][ +$Çme +]è? $this->cÚfig['f›lds'][$Çme] : + `¬¿y +()); + +174 ià( + `is£t +( +$this +-> +cÚfig +['fields'])) + +176 + `fܗch + ( +$this +-> +cÚfig +['f›lds'] +as + +$Çme + => +$·¿ms +) + +178 ià( + `š_¬¿y +( +$Çme +, +$Çmes +)) + +183 +$f›lds +[ +$Çme +] = + `¬¿y_m”ge +( + `¬¿y +( + +184 'is_lšk' => +çl£ +, + +185 'is_»®' => +çl£ +, + +186 'is_·¹Ÿl' => +çl£ +, + +187 'is_compڒt' => +çl£ +, + +189 ), + `is_¬¿y +( +$·¿ms +è? $·¿m : + `¬¿y +()); + +193 + `un£t +( +$this +-> +cÚfig +['fields']); + +195  +$f›lds +; + +196 + } +} + +205 +public + +funùiÚ + + $g‘F›ldsCÚfigu¿tiÚ +( +$cڋxt +) + +207 +$f›lds + = + `¬¿y +(); + +209 +$Çmes + = + `¬¿y +(); + +210 + `fܗch + ( +$this +-> + `g‘CÞumns +(è +as + +$Çme + => +$cÞumn +) + +212 +$Çmes +[] = +$Çme +; + +213 +$f›lds +[ +$Çme +] = + `is£t +( +$this +-> +cÚfig +[ +$cڋxt +]['f›lds'][$Çme]è? $this->cÚfig[$cڋxt]['f›lds'][$Çme] : + `¬¿y +(); + +216 + `fܗch + ( +$this +-> + `g‘MªyToMªyTabËs +(è +as + +$bËs +) + +218 +$Çme + = +sfInæeùÜ +:: + `und”scÜe +( +$bËs +['alias']).'_list'; + +219 +$Çmes +[] = +$Çme +; + +220 +$f›lds +[ +$Çme +] = + `is£t +( +$this +-> +cÚfig +[ +$cڋxt +]['f›lds'][$Çme]è? $this->cÚfig[$cڋxt]['f›lds'][$Çme] : + `¬¿y +(); + +223 ià( + `is£t +( +$this +-> +cÚfig +[ +$cڋxt +]['fields'])) + +225 + `fܗch + ( +$this +-> +cÚfig +[ +$cڋxt +]['f›lds'] +as + +$Çme + => +$·¿ms +) + +227 ià( + `š_¬¿y +( +$Çme +, +$Çmes +)) + +232 +$f›lds +[ +$Çme +] = + `is_¬¿y +( +$·¿ms +è? $·¿m : + `¬¿y +(); + +236 + `un£t +( +$this +-> +cÚfig +[ +$cڋxt +]['fields']); + +238  +$f›lds +; + +239 + } +} + +248 +public + +funùiÚ + + $g‘AÎF›ldNames +( +$w™hM2M + = +Œue +) + +250 +$Çmes + = + `¬¿y +(); + +251 + `fܗch + ( +$this +-> + `g‘CÞumns +(è +as + +$Çme + => +$cÞumn +) + +253 +$Çmes +[] = +$Çme +; + +256 ià( +$w™hM2M +) + +258 + `fܗch + ( +$this +-> + `g‘MªyToMªyTabËs +(è +as + +$bËs +) + +260 +$Çmes +[] = +sfInæeùÜ +:: + `und”scÜe +( +$bËs +['alias']).'_list'; + +264  +$Çmes +; + +265 + } +} + +272 +public + +funùiÚ + + $g‘CÞumns +() + +274 + `fܗch + ( + `¬¿y_keys +( +$this +-> +bË +-> + `g‘CÞumns +()è +as + +$Çme +) + +276 +$Çme + = +$this +-> +bË +-> + `g‘F›ldName +($name); + +277 +$cÞumns +[ +$Çme +] = +Ãw + + `sfDoùršeCÞumn +($Çme, +$this +-> +bË +); + +280  +$cÞumns +; + +281 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/mailer/Swift_DoctrineSpool.class.php + +1 +mod– + = +$mod– +; + +43 + m$this +-> + mcÞumn + = +$cÞumn +; + +44 + m$this +-> + mm‘hod + = +$m‘hod +; + +52 +public + +funùiÚ + + $isS¹ed +() + +54  +Œue +; + +55 + } +} + +60 +public + +funùiÚ + + $¡¬t +() + +62 + } +} + +67 +public + +funùiÚ + + $¡Ý +() + +69 + } +} + +76 +public + +funùiÚ + + $queueMes§ge +( +Swiá_Mime_Mes§ge + +$mes§ge +) + +78 +$objeù + = +Ãw + +$this +-> +mod– +; + +80 ià(! +$objeù + +š¡ªûof + +Doùrše_RecÜd +) + +82 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +('The mailer message object must be‡ Doctrine_Record object.'); + +85 +$objeù +->{ +$this +-> +cÞumn +} = + `£rŸlize +( +$mes§ge +); + +86 +$objeù +-> + `§ve +(); + +88 +$objeù +-> + `ä“ +( +Œue +); + +89 + } +} + +99 +public + +funùiÚ + + $æushQueue +( +Swiá_T¿n¥Üt + +$Œª¥Üt +, & +$çžedRec›Ás + = +nuÎ +) + +101 +$bË + = +Doùrše_CÜe +:: + `g‘TabË +( +$this +-> +mod– +); + +102 +$objeùs + = +$bË +->{ +$this +-> +m‘hod +}()-> + `lim™ +($this-> + `g‘Mes§geLim™ +())-> + `execu‹ +(); + +104 ià(! +$Œª¥Üt +-> + `isS¹ed +()) + +106 +$Œª¥Üt +-> + `¡¬t +(); + +109 +$couÁ + = 0; + +110 +$time + = + `time +(); + +111 + `fܗch + ( +$objeùs + +as + +$objeù +) + +113 +$mes§ge + = + `un£rŸlize +( +$objeù +->{ +$this +-> +cÞumn +}); + +115 +$objeù +-> + `d–‘e +(); + +117 +Œy + + +119 +$couÁ + +ð +$Œª¥Üt +-> + `£nd +( +$mes§ge +, +$çžedRec›Ás +); + +121 + `ÿtch + ( +Exû±iÚ + +$e +) + +126 ià( +$this +-> + `g‘TimeLim™ +(è&& ( + `time +(è- +$time +) >= $this->getTimeLimit()) + +132  +$couÁ +; + +133 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/pager/sfDoctrinePager.class.php + +1 +bËM‘hodName +; + +43 +public + +funùiÚ + + $£tTabËM‘hod +( +$bËM‘hodName +) + +45 +$this +-> +bËM‘hodName + = +$bËM‘hodName +; + +46 + } +} + +53 +public + +funùiÚ + + $£rŸlize +() + +55 +$v¬s + = + `g‘_objeù_v¬s +( +$this +); + +56 + `un£t +( +$v¬s +['query']); + +57  + `£rŸlize +( +$v¬s +); + +58 + } +} + +65 +public + +funùiÚ + + $un£rŸlize +( +$£rŸlized +) + +67 +$¬¿y + = + `un£rŸlize +( +$£rŸlized +); + +69 + `fܗch + ( +$¬¿y + +as + +$Çme + => +$v®ues +) + +71 +$this +-> +$Çme + = +$v®ues +; + +74 +$this +-> +bËM‘hodC®Ëd + = +çl£ +; + +75 + } +} + +82 +public + +funùiÚ + + $g‘CouÁQu”y +() + +84 +$qu”y + = +þÚe + +$this +-> + `g‘Qu”y +(); + +85 +$qu”y + + +86 -> + `off£t +(0) + +87 -> + `lim™ +(0) + +90  +$qu”y +; + +91 + } +} + +96 +public + +funùiÚ + + $š™ +() + +98 +$this +-> + `»£tI‹¿tÜ +(); + +100 +$couÁQu”y + = +$this +-> + `g‘CouÁQu”y +(); + +101 +$couÁ + = +$couÁQu”y +-> + `couÁ +(); + +103 +$this +-> + `£tNbResuÉs +( +$couÁ +); + +105 +$qu”y + = +$this +-> + `g‘Qu”y +(); + +106 +$qu”y + + +107 -> + `off£t +(0) + +108 -> + `lim™ +(0) + +111 ià(0 =ð +$this +-> + `g‘Page +(è|| 0 =ð$this-> + `g‘MaxP”Page +(è|| 0 =ð$this-> + `g‘NbResuÉs +()) + +113 +$this +-> + `£tLa¡Page +(0); + +117 +$off£t + = ( +$this +-> + `g‘Page +(è- 1è* $this-> + `g‘MaxP”Page +(); + +119 +$this +-> + `£tLa¡Page +( + `ûž +($this-> + `g‘NbResuÉs +(è/ $this-> + `g‘MaxP”Page +())); + +121 +$qu”y + + +122 -> + `off£t +( +$off£t +) + +123 -> + `lim™ +( +$this +-> + `g‘MaxP”Page +()) + +126 + } +} + +133 +public + +funùiÚ + + $g‘Qu”y +() + +135 ià(! +$this +-> +bËM‘hodC®Ëd + && $this-> +bËM‘hodName +) + +137 +$m‘hod + = +$this +-> +bËM‘hodName +; + +138 +$this +-> +qu”y + = +Doùrše_CÜe +:: + `g‘TabË +($this-> + `g‘CÏss +())-> + `$m‘hod +($this->query); + +139 +$this +-> +bËM‘hodC®Ëd + = +Œue +; + +141 ià(! +$this +-> +qu”y +) + +143 +$this +-> +qu”y + = +Doùrše_CÜe +:: + `g‘TabË +($this-> + `g‘CÏss +())-> + `ü—‹Qu”y +(); + +146  +$this +-> +qu”y +; + +147 + } +} + +154 +public + +funùiÚ + + $£tQu”y +( +$qu”y +) + +156 +$this +-> +qu”y + = +$qu”y +; + +157 + } +} + +166 +´Ùeùed + +funùiÚ + + $»Œ›veObjeù +( +$off£t +) + +168 +$qu”yFÜR‘r›ve + = +þÚe + +$this +-> + `g‘Qu”y +(); + +169 +$qu”yFÜR‘r›ve + + +170 -> + `off£t +( +$off£t + - 1) + +171 -> + `lim™ +(1) + +174 +$»suÉs + = +$qu”yFÜR‘r›ve +-> + `execu‹ +(); + +176  +$»suÉs +[0]; + +177 + } +} + +186 +public + +funùiÚ + + $g‘ResuÉs +( +$hyd¿tiÚMode + = +nuÎ +) + +188  +$this +-> + `g‘Qu”y +()-> + `execu‹ +( + `¬¿y +(), +$hyd¿tiÚMode +); + +189 + } +} + +194 +´Ùeùed + +funùiÚ + + $š™ŸlizeI‹¿tÜ +() + +196 +·»Á +:: + `š™ŸlizeI‹¿tÜ +(); + +198 ià( +$this +-> +»suÉs + +š¡ªûof + +Doùrše_CÞËùiÚ +) + +200 +$this +-> +»suÉs + = $this->»suÉs-> + `g‘D©a +(); + +202 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/record/sfDoctrineRecord.class.php + +1 + `g‘TabË +()-> + `hasR–©iÚ +('Translation')) + +37 ià(! +$this +-> + `g‘TabË +()-> + `g‘O±iÚ +('has_symfony_i18n_filter')) + +39 +$this +-> + `g‘TabË +() + +40 -> + `unshiáFž‹r +( +Ãw + + `sfDoùršeRecÜdI18nFž‹r +()) + +41 -> + `£tO±iÚ +('has_symfÚy_i18n_fž‹r', +Œue +) + +52  +public + +funùiÚ + + $li¡’ToChªgeCuÉu»Ev’t +( +sfEv’t + +$ev’t +) + +54 +£lf +:: +$_deçuÉCuÉu» + = +$ev’t +['culture']; + +55 + } +} + +62  +public + +funùiÚ + + $£tDeçuÉCuÉu» +( +$cuÉu» +) + +64 +£lf +:: +$_deçuÉCuÉu» + = +$cuÉu» +; + +65 + } +} + +72  +public + +funùiÚ + + $g‘DeçuÉCuÉu» +() + +74 ià(! +£lf +:: +$_deçuÉCuÉu» +) + +76 +throw + +Ãw + + `sfExû±iÚ +('The default culture has‚ot been set'); + +79  +£lf +:: +$_deçuÉCuÉu» +; + +80 + } +} + +90 +public + +funùiÚ + + $g‘Prim¬yKey +() + +92 +$id’tif›r + = ( +¬¿y +è +$this +-> + `id’tif›r +(); + +93  + `’d +( +$id’tif›r +); + +94 + } +} + +101 +public + +funùiÚ + + $isNew +() + +103  ! +$this +-> + `exi¡s +(); + +104 + } +} + +111 +public + +funùiÚ + + $__toSŒšg +() + +113 +$gues£s + = + `¬¿y +('name', + +121 + `fܗch + ( +$gues£s + +as + +$desütiÚCÞumn +) + +123 +Œy + + +125  ( +¡ršg +è +$this +-> + `g‘ +( +$desütiÚCÞumn +); + +126 } + `ÿtch + ( +Exû±iÚ + +$e +) {} + +129  + `¥rštf +('NØdesütiÚ fÜ objeù oàþas "%s"', +$this +-> + `g‘TabË +()-> + `g‘CompڒtName +()); + +130 + } +} + +140 +public + +funùiÚ + + $__ÿÎ +( +$m‘hod +, +$¬gum’ts +) + +142 +$çžed + = +çl£ +; + +143 +Œy + { + +144 ià( + `š_¬¿y +( +$v”b + = + `sub¡r +( +$m‘hod +, 0, 3), + `¬¿y +('set', 'get'))) + +146 +$Çme + = + `sub¡r +( +$m‘hod +, 3); + +148 +$bË + = +$this +-> + `g‘TabË +(); + +149 ià( +$bË +-> + `hasR–©iÚ +( +$Çme +)) + +151 +$’t™yName + = +$Çme +; + +153 ià( +$bË +-> + `hasF›ld +( +$f›ldName + = $bË-> + `g‘F›ldName +( +$Çme +))) + +155 +$’t™yNameLow” + = + `¡¹Þow” +( +$f›ldName +); + +156 ià( +$bË +-> + `hasF›ld +( +$’t™yNameLow” +)) + +158 +$’t™yName + = +$’t™yNameLow” +; + +160 +$’t™yName + = +$f›ldName +; + +165 +$und”ScÜed + = +$bË +-> + `g‘F›ldName +( +sfInæeùÜ +:: + `und”scÜe +( +$Çme +)); + +166 ià( +$bË +-> + `hasF›ld +( +$und”ScÜed +è|| $bË-> + `hasR–©iÚ +($underScored)) + +168 +$’t™yName + = +$und”ScÜed +; + +169 } ià( +$bË +-> + `hasF›ld +( + `¡¹Þow” +( +$Çme +)è|| $bË-> + `hasR–©iÚ +(strtolower($name))) { + +170 +$’t™yName + = + `¡¹Þow” +( +$Çme +); + +172 +$ÿm–Ca£ + = +$bË +-> + `g‘F›ldName +( +sfInæeùÜ +:: + `ÿm–ize +( +$Çme +)); + +173 +$ÿm–Ca£ + = + `¡¹Þow” +($ÿm–Ca£[0]). + `sub¡r +($ÿm–Ca£, 1, + `¡¾’ +($camelCase)); + +174 ià( +$bË +-> + `hasF›ld +( +$ÿm–Ca£ +è|| $bË-> + `hasR–©iÚ +($camelCase)) + +176 +$’t™yName + = +$ÿm–Ca£ +; + +178 +$’t™yName + = +$und”ScÜed +; + +183  + `ÿÎ_u£r_func_¬¿y +( + +184 + `¬¿y +( +$this +, +$v”b +), + +185 + `¬¿y_m”ge +( + `¬¿y +( +$’t™yName +), +$¬gum’ts +) + +188 +$çžed + = +Œue +; + +190 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +191 +$çžed + = +Œue +; + +193 ià( +$çžed +) + +195 +Œy + + +197  +·»Á +:: + `__ÿÎ +( +$m‘hod +, +$¬gum’ts +); + +198 } + `ÿtch + ( +Doùrše_RecÜd_UnknownPrݔtyExû±iÚ + +$e2 +) {} + +200 ià( + `is£t +( +$e +) && $e) + +202 +throw + +$e +; + +203 } ià( + `is£t +( +$e2 +) && $e2) { + +204 +throw + +$e2 +; + +207 + } +} + +215 +public + +funùiÚ + + $g‘D©eTimeObjeù +( +$d©eF›ldName +) + +217 +$ty³ + = +$this +-> + `g‘TabË +()-> + `g‘Ty³Of +( +$d©eF›ldName +); + +218 ià( +$ty³ + == 'date' || $type == 'timestamp' || $type == 'datetime') + +220  +Ãw + + `D©eTime +( +$this +-> + `g‘ +( +$d©eF›ldName +)); + +224 +throw + +Ãw + + `sfExû±iÚ +('Cannot call getDateTimeObject() on‡ fieldhat is‚ot ofype date orimestamp.'); + +226 + } +} + +235 +public + +funùiÚ + + $£tD©eTimeObjeù +( +$d©eF›ldName +, +D©eTime + +$d©eTimeObjeù +) + +237 +$ty³ + = +$this +-> + `g‘TabË +()-> + `g‘Ty³Of +( +$d©eF›ldName +); + +238 ià( +$ty³ + == 'date' || $type == 'timestamp' || $type == 'datetime') + +240  +$this +-> + `£t +( +$d©eF›ldName +, +$d©eTimeObjeù +-> + `fÜm© +('Y-m-d H:i:s')); + +244 +throw + +Ãw + + `sfExû±iÚ +('Cannot call setDateTimeObject() on‡ fieldhat is‚ot ofype date orimestamp.'); + +246 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/record/sfDoctrineRecordI18nFilter.class.php + +1 + `isBound +()) + +32 +throw + +Ãw + + `LogicExû±iÚ +('The„oute is‚ot bound.'); + +35 +$this +-> +qu”y + = +$qu”y +; + +38 +´Ùeùed + +funùiÚ + + $g‘ObjeùFÜP¬am‘”s +( +$·¿m‘”s +) + +40 +$»suÉs + = +$this +-> + `g‘ObjeùsFÜP¬am‘”s +( +$·¿m‘”s +); + +44 ià( +$»suÉs + +š¡ªûof + +Doùrše_CÞËùiÚ +) + +46 ià( + `couÁ +( +$»suÉs +)) + +48 +$»suÉs + = $»suÉs-> + `g‘Fœ¡ +(); + +50 +$»suÉs + = +nuÎ +; + +54 if(! + `is_objeù +( +$»suÉs +)) + +56 +$»suÉs + = +nuÎ +; + +59  +$»suÉs +; + +60 + } +} + +62 +´Ùeùed + +funùiÚ + + $g‘ObjeùsFÜP¬am‘”s +( +$·¿m‘”s +) + +64 +$bËMod– + = +Doùrše_CÜe +:: + `g‘TabË +( +$this +-> +ÝtiÚs +['model']); + +66 +$v¬ŸbËs + = + `¬¿y +(); + +67 +$v®ues + = + `¬¿y +(); + +68 + `fܗch +( +$this +-> + `g‘R—lV¬ŸbËs +(è +as + +$v¬ŸbË +) + +70 if( +$bËMod– +-> + `hasCÞumn +($bËMod–-> + `g‘CÞumnName +( +$v¬ŸbË +))) + +72 +$v¬ŸbËs +[] = +$v¬ŸbË +; + +73 +$v®ues +[ +$v¬ŸbË +] = +$·¿m‘”s +[$variable]; + +77 ià(! + `is£t +( +$this +-> +ÝtiÚs +['method'])) + +79 ià( +nuÎ + ==ð +$this +-> +qu”y +) + +81 +$q + = +$bËMod– +-> + `ü—‹Qu”y +('a'); + +82 + `fܗch + ( +$v®ues + +as + +$v¬ŸbË + => +$v®ue +) + +84 +$f›ldName + = +$bËMod– +-> + `g‘F›ldName +( +$v¬ŸbË +); + +85 +$q +-> + `ªdWh”e +('a.'. +$f›ldName + . ' = ?', +$·¿m‘”s +[ +$v¬ŸbË +]); + +90 +$q + = +$this +-> +qu”y +; + +92 ià( + `is£t +( +$this +-> +ÝtiÚs +['method_for_query'])) + +94 +$m‘hod + = +$this +-> +ÝtiÚs +['method_for_query']; + +95 +$»suÉs + = +$bËMod– +-> + `$m‘hod +( +$q +); + +99 +$»suÉs + = +$q +-> + `execu‹ +(); + +104 +$m‘hod + = +$this +-> +ÝtiÚs +['method']; + +105 +$»suÉs + = +$bËMod– +-> + `$m‘hod +( +$this +-> + `fž‹rP¬am‘”s +( +$·¿m‘”s +)); + +111 ià( +$»suÉs + +š¡ªûof + +Doùrše_RecÜd +) + +113 +$obj + = +$»suÉs +; + +114 +$»suÉs + = +Ãw + + `Doùrše_CÞËùiÚ +( +$obj +-> + `g‘TabË +()); + +115 +$»suÉs +[] = +$obj +; + +118  +$»suÉs +; + +119 + } +} + +121 +´Ùeùed + +funùiÚ + + $doCÚv”tObjeùToA¼ay +( +$objeù +) + +123 ià( + `is£t +( +$this +-> +ÝtiÚs +['cÚv”t']è|| + `m‘hod_exi¡s +( +$objeù +, 'toParams')) + +125  +·»Á +:: + `doCÚv”tObjeùToA¼ay +( +$objeù +); + +128 +$·¿m‘”s + = + `¬¿y +(); + +129 + `fܗch + ( +$this +-> + `g‘R—lV¬ŸbËs +(è +as + +$v¬ŸbË +) + +131 +Œy + { + +132 +$·¿m‘”s +[ +$v¬ŸbË +] = +$objeù +->$variable; + +133 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +134 +Œy + { + +135 +$m‘hod + = 'g‘'. +sfInæeùÜ +:: + `ÿm–ize +( +$v¬ŸbË +); + +136 +$·¿m‘”s +[ +$v¬ŸbË +] = +$objeù +-> + `$m‘hod +(); + +137 } + `ÿtch + ( +Exû±iÚ + +$e +) {} + +141  +$·¿m‘”s +; + +142 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/routing/sfDoctrineRouteCollection.class.php + +1 +cÚfigu¿tiÚ +-> + `g‘PlugšCÚfigu¿tiÚ +('sfDoùršePlugš')-> + `g‘CliCÚfig +(); + +43 +public + +funùiÚ + + `ÿÎDoùršeCli +( +$sk +, +$¬gs + = + $¬¿y +()) + +45 +$cÚfig + = +$this +-> + `g‘CliCÚfig +(); + +47 +$¬gum’ts + = + `¬¿y +('./symfÚy', +$sk +); + +49 + `fܗch + ( +$¬gs + +as + +$key + => +$¬g +) + +51 ià( + `is£t +( +$cÚfig +[ +$key +])) + +53 +$cÚfig +[ +$key +] = +$¬g +; + +57 +$¬gum’ts +[] = +$¬g +; + +61 +$þi + = +Ãw + + `sfDoùršeCli +( +$cÚfig +); + +62 +$þi +-> + `£tSymfÚyDi¥©ch” +( +$this +-> +di¥©ch” +); + +63 +$þi +-> + `£tSymfÚyFÜm©‹r +( +$this +-> +fÜm©‹r +); + +64 +$þi +-> + `run +( +$¬gum’ts +); + +65 + } +} + +77 +´Ùeùed + +funùiÚ + + $g‘DoùršeD©aba£s +( +sfD©aba£Mªag” + +$d©aba£Mªag” +, +¬¿y + +$Çmes + = +nuÎ +) + +79 +$d©aba£s + = + `¬¿y +(); + +81 ià( +nuÎ + ==ð +$Çmes +) + +83 + `fܗch + ( +$d©aba£Mªag” +-> + `g‘Names +(è +as + +$Çme +) + +85 +$d©aba£ + = +$d©aba£Mªag” +-> + `g‘D©aba£ +( +$Çme +); + +87 ià( +$d©aba£ + +š¡ªûof + +sfDoùršeD©aba£ +) + +89 +$d©aba£s +[ +$Çme +] = +$d©aba£ +; + +95 + `fܗch + ( +$Çmes + +as + +$Çme +) + +97 +$d©aba£ + = +$d©aba£Mªag” +-> + `g‘D©aba£ +( +$Çme +); + +99 ià(! +$d©aba£ + +š¡ªûof + +sfDoùršeD©aba£ +) + +101 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('Thd©aba£ "%s" i nه Doùršd©aba£.', +$Çme +)); + +104 +$d©aba£s +[ +$Çme +] = +$d©aba£ +; + +108  +$d©aba£s +; + +109 + } +} + +131 +´Ùeùed + +funùiÚ + + $´•¬eSchemaFže +( +$yamlSchemaP©h +) + +133 +$mod–s + = + `¬¿y +(); + +134 +$fšd” + = +sfFšd” +:: + `ty³ +('fže')-> + `Çme +('*.yml')-> + `sÜt_by_Çme +()-> + `fÞlow_lšk +(); + +137 + `fܗch + ( +$this +-> +cÚfigu¿tiÚ +-> + `g‘Plugšs +(è +as + +$Çme +) + +139 +$¶ugš + = +$this +-> +cÚfigu¿tiÚ +-> + `g‘PlugšCÚfigu¿tiÚ +( +$Çme +); + +140 + `fܗch + ( +$fšd” +-> + `š +( +$¶ugš +-> + `g‘RoÙDœ +().'/cÚfig/doùrše'è +as + +$schema +) + +142 +$¶ugšMod–s + = ( +¬¿y +è +sfYaml +:: + `lßd +( +$schema +); + +143 +$glob®s + = +$this +-> + `fž‹rSchemaGlob®s +( +$¶ugšMod–s +); + +145 + `fܗch + ( +$¶ugšMod–s + +as + +$mod– + => +$defš™iÚ +) + +148 +$defš™iÚ + = +$this +-> + `ÿnÚiÿlizeMod–Defš™iÚ +( +$mod– +, $definition); + +151 +$defš™iÚ + = + `¬¿y_m”ge +( +$glob®s +, $definition); + +154 +$mod–s +[ +$mod– +] = + `is£t +($mod–s[$mod–]è? +sfToÞk™ +:: + `¬¿yD“pM”ge +($mod–s[$mod–], +$defš™iÚ +) : $definition; + +157 ià(! + `is£t +( +$mod–s +[ +$mod– +]['package'])) + +159 +$mod–s +[ +$mod– +]['·ckage'] = +$¶ugš +-> + `g‘Name +().'.lib.model.doctrine'; + +162 ià(! + `is£t +( +$mod–s +[ +$mod– +]['·ckage_cu¡om_·th']è&& 0 ==ð + `¡½os +($mod–s[$mod–]['·ckage'], +$¶ugš +-> + `g‘Name +())) + +164 +$mod–s +[ +$mod– +]['·ckage_cu¡om_·th'] = +$¶ugš +-> + `g‘RoÙDœ +().'/lib/model/doctrine'; + +171 + `fܗch + ( +$fšd” +-> + `š +( +$yamlSchemaP©h +è +as + +$schema +) + +173 +$´ojeùMod–s + = ( +¬¿y +è +sfYaml +:: + `lßd +( +$schema +); + +174 +$glob®s + = +$this +-> + `fž‹rSchemaGlob®s +( +$´ojeùMod–s +); + +176 + `fܗch + ( +$´ojeùMod–s + +as + +$mod– + => +$defš™iÚ +) + +179 +$defš™iÚ + = +$this +-> + `ÿnÚiÿlizeMod–Defš™iÚ +( +$mod– +, $definition); + +182 +$defš™iÚ + = + `¬¿y_m”ge +( +$glob®s +, $definition); + +185 +$mod–s +[ +$mod– +] = + `is£t +($mod–s[$mod–]è? +sfToÞk™ +:: + `¬¿yD“pM”ge +($mod–s[$mod–], +$defš™iÚ +) : $definition; + +190 +$fže + = + `»®·th +( + `sys_g‘_‹mp_dœ +()).'/doùrše_schema_'. + `¿nd +(11111, 99999).'.yml'; + +191 +$this +-> + `logSeùiÚ +('fže+', +$fže +); + +192 + `fže_put_cڋÁs +( +$fže +, +sfYaml +:: + `dump +( +$mod–s +, 4)); + +194  +$fže +; + +195 + } +} + +206 +´Ùeùed + +funùiÚ + + $fž‹rSchemaGlob®s +(& +$mod–s +) + +208 +$glob®s + = + `¬¿y +(); + +209 +$glob®Keys + = +Doùrše_ImpÜt_Schema +:: + `g‘Glob®Defš™iÚKeys +(); + +211 + `fܗch + ( +$mod–s + +as + +$key + => +$v®ue +) + +213 ià( + `š_¬¿y +( +$key +, +$glob®Keys +)) + +215 +$glob®s +[ +$key +] = +$v®ue +; + +216 + `un£t +( +$mod–s +[ +$key +]); + +220  +$glob®s +; + +221 + } +} + +231 +´Ùeùed + +funùiÚ + + $ÿnÚiÿlizeMod–Defš™iÚ +( +$mod– +, +$defš™iÚ +) + +234 ià( + `is£t +( +$defš™iÚ +['columns'])) + +236 + `fܗch + ( +$defš™iÚ +['cÞumns'] +as + +$key + => +$v®ue +) + +238 ià(! + `is_¬¿y +( +$v®ue +)) + +240 +$defš™iÚ +['cÞumns'][ +$key +] = + `¬¿y +('ty³' => +$v®ue +); + +241 +$v®ue + = +$defš™iÚ +['cÞumns'][ +$key +]; + +245 ià( + `is£t +( +$v®ue +['ty³']è&& + `´eg_m©ch +('/ *(\w+è*\Ð*(\d+)(?: *, *(\d+))? *\)/', $v®ue['ty³'], +$m©ch +)) + +247 +$defš™iÚ +['cÞumns'][ +$key +]['ty³'] = +$m©ch +[1]; + +248 +$defš™iÚ +['cÞumns'][ +$key +]['Ëngth'] = +$m©ch +[2]; + +250 ià( + `is£t +( +$m©ch +[3])) + +252 +$defš™iÚ +['cÞumns'][ +$key +]['sÿË'] = +$m©ch +[3]; + +259 ià( + `is£t +( +$defš™iÚ +['actAs'])) + +261 + `fܗch + ( +$defš™iÚ +['aùAs'] +as + +$key + => +$v®ue +) + +263 ià( + `is_num”ic +( +$key +)) + +265 +$defš™iÚ +['aùAs'][ +$v®ue +] = + `¬¿y +(); + +266 + `un£t +( +$defš™iÚ +['aùAs'][ +$key +]); + +272 ià( + `is£t +( +$defš™iÚ +['listeners'])) + +274 + `fܗch + ( +$defš™iÚ +['li¡’”s'] +as + +$key + => +$v®ue +) + +276 ià( + `is_num”ic +( +$key +)) + +278 +$defš™iÚ +['li¡’”s'][ +$v®ue +] = + `¬¿y +(); + +279 + `un£t +( +$defš™iÚ +['li¡’”s'][ +$key +]); + +284  +$defš™iÚ +; + +285 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineBuildDbTask.class.php + +1 + `addArgum’ts +( + `¬¿y +( + +31 +Ãw + + `sfCommªdArgum’t +('d©aba£', +sfCommªdArgum’t +:: +OPTIONAL + | sfCommªdArgum’t:: +IS_ARRAY +, 'A specific database'), + +34 +$this +-> + `addO±iÚs +( + `¬¿y +( + +35 +Ãw + + `sfCommªdO±iÚ +('­¶iÿtiÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL +, 'Th­¶iÿtiڂame', +Œue +), + +36 +Ãw + + `sfCommªdO±iÚ +('’v', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Theƒnvironment', 'dev'), + +39 +$this +-> +®Ÿ£s + = + `¬¿y +('doctrine:create-db'); + +40 +$this +-> +Çme¥aû + = 'doctrine'; + +41 +$this +-> +Çme + = 'build-db'; + +42 +$this +-> +br›fDesütiÚ + = 'Creates database for current model'; + +44 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +45 +The + [ +doùrše +: +bužd +- +db +| +INFO +] +sk + +ü—‹s + +Úe + +Ü + +mÜe + +d©aba£s + +ba£d + +Ú + + +46 +cÚfigu¿tiÚ + +š + [ +cÚfig +/ +d©aba£s +. +yml +| +COMMENT +]: + +48 [./ +symfÚy + +doùrše +: +bužd +- +db +| +INFO +] + +50 +You + +ÿn + +¥ecify + +wh© + +d©aba£s + +to + +ü—‹ + +by + +´ovidšg + +theœ + +Çmes +: + +52 [./ +symfÚy + +doùrše +: +bužd +- +db + +¦ave1 + +¦ave2 +| +INFO +] + +53 +EOF +; + +59 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +61 +$d©aba£Mªag” + = +Ãw + + `sfD©aba£Mªag” +( +$this +-> +cÚfigu¿tiÚ +); + +62 +$d©aba£s + = +$this +-> + `g‘DoùršeD©aba£s +( +$d©aba£Mªag” +, + `couÁ +( +$¬gum’ts +['d©aba£']è? $¬gum’ts['d©aba£'] : +nuÎ +); + +64 +$’vœÚm’t + = +$this +-> +cÚfigu¿tiÚ + +š¡ªûof + +sfAµliÿtiÚCÚfigu¿tiÚ + ? $this->cÚfigu¿tiÚ-> + `g‘EnvœÚm’t +() : 'all'; + +66 + `fܗch + ( +$d©aba£s + +as + +$Çme + => +$d©aba£ +) + +68 +$this +-> + `logSeùiÚ +('doùrše', + `¥rštf +('C»©šg "%s"ƒnvœÚm’ˆ"%s" d©aba£', +$’vœÚm’t +, +$Çme +)); + +69 +Œy + + +71 +$d©aba£ +-> + `g‘DoùršeCÚÃùiÚ +()-> + `ü—‹D©aba£ +(); + +73 + `ÿtch + ( +Exû±iÚ + +$e +) + +75 +$this +-> + `logSeùiÚ +('doùrše', +$e +-> + `g‘Mes§ge +(), +nuÎ +, 'ERROR'); + +78 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineBuildFiltersTask.class.php + +1 + `addO±iÚs +( + `¬¿y +( + +29 +Ãw + + `sfCommªdO±iÚ +('­¶iÿtiÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL +, 'Th­¶iÿtiڂame', +Œue +), + +30 +Ãw + + `sfCommªdO±iÚ +('’v', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Theƒnvironment', 'dev'), + +31 +Ãw + + `sfCommªdO±iÚ +('mod–-dœ-Çme', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The model dir‚ame', 'model'), + +32 +Ãw + + `sfCommªdO±iÚ +('fž‹r-dœ-Çme', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The filter form dir‚ame', 'filter'), + +33 +Ãw + + `sfCommªdO±iÚ +('g’”©Ü-þass', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The generator class', 'sfDoctrineFormFilterGenerator'), + +36 +$this +-> +Çme¥aû + = 'doctrine'; + +37 +$this +-> +Çme + = 'build-filters'; + +38 +$this +-> +br›fDesütiÚ + = 'Creates filter form classes forhe current model'; + +40 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +41 +The + [ +doùrše +: +bužd +- +fž‹rs +| +INFO +] +sk + +ü—‹s + +fÜm + +fž‹r + +þas£s + +äom + +the + +schema +: + +43 [./ +symfÚy + +doùrše +: +bužd +- +fž‹rs +| +INFO +] + +45 +This + +sk + +ü—‹s + +fÜm + +fž‹r + +þas£s + +ba£d + +Ú + +the + +mod– +. +The + cÏs£  +¬e + + +46 +ü—‹d + +š + [ +lib +/ +doùrše +/ +fž‹r +| +COMMENT +]. + +48 +This + +sk + +Ãv” + +ov”rides + +cu¡om + +þas£s + +š + [ +lib +/ +doùrše +/ +fž‹r +| +COMMENT +]. + +49 +It + +Úly + +»¶aûs + +ba£ + +þas£s + +g’”©ed + +š + [ +lib +/ +doùrše +/ +fž‹r +/ba£| +COMMENT +]. + +50 +EOF +; + +56 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +58 +$this +-> + `logSeùiÚ +('doctrine', 'generating filter form classes'); + +59 +$d©aba£Mªag” + = +Ãw + + `sfD©aba£Mªag” +( +$this +-> +cÚfigu¿tiÚ +); + +60 +$g’”©ÜMªag” + = +Ãw + + `sfG’”©ÜMªag” +( +$this +-> +cÚfigu¿tiÚ +); + +61 +$g’”©ÜMªag” +-> + `g’”©e +( +$ÝtiÚs +['g’”©Ü-þass'], + `¬¿y +( + +62 'mod–_dœ_Çme' => +$ÝtiÚs +['model-dir-name'], + +63 'fž‹r_dœ_Çme' => +$ÝtiÚs +['filter-dir-name'], + +66 +$´Ý”t›s + = + `·r£_ši_fže +( +sfCÚfig +:: + `g‘ +('sf_cÚfig_dœ'). +DIRECTORY_SEPARATOR +.'´Ý”t›s.ši', +Œue +); + +68 +$cÚ¡ªts + = + `¬¿y +( + +69 'PROJECT_NAME' => + `is£t +( +$´Ý”t›s +['symfony']['name']) ? $properties['symfony']['name'] : 'symfony', + +70 'AUTHOR_NAME' => + `is£t +( +$´Ý”t›s +['symfony']['author']) ? $properties['symfony']['author'] : 'Your‚ame here' + +74 +$fšd” + = +sfFšd” +:: + `ty³ +('fže')-> + `Çme +('*.php'); + +75 +$this +-> + `g‘Fžesy¡em +()-> + `»¶aûTok’s +( +$fšd” +-> + `š +( +sfCÚfig +:: + `g‘ +('sf_lib_dœ').'/fž‹r/'), '##', '##', +$cÚ¡ªts +); + +77 +$this +-> + `»lßdAutÞßd +(); + +78 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineBuildFormsTask.class.php + +1 + `addO±iÚs +( + `¬¿y +( + +29 +Ãw + + `sfCommªdO±iÚ +('­¶iÿtiÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL +, 'Th­¶iÿtiڂame', +Œue +), + +30 +Ãw + + `sfCommªdO±iÚ +('’v', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Theƒnvironment', 'dev'), + +31 +Ãw + + `sfCommªdO±iÚ +('mod–-dœ-Çme', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The model dir‚ame', 'model'), + +32 +Ãw + + `sfCommªdO±iÚ +('fÜm-dœ-Çme', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The form dir‚ame', 'form'), + +33 +Ãw + + `sfCommªdO±iÚ +('g’”©Ü-þass', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The generator class', 'sfDoctrineFormGenerator'), + +36 +$this +-> +Çme¥aû + = 'doctrine'; + +37 +$this +-> +Çme + = 'build-forms'; + +38 +$this +-> +br›fDesütiÚ + = 'Creates form classes forhe current model'; + +40 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +41 +The + [ +doùrše +: +bužd +- +fÜms +| +INFO +] +sk + +ü—‹s + +fÜm + +þas£s + +äom + +the + +schema +: + +43 [./ +symfÚy + +doùrše +: +bužd +- +fÜms +| +INFO +] + +45 +This + +sk + +ü—‹s + +fÜm + +þas£s + +ba£d + +Ú + +the + +mod– +. +The + cÏs£  +¬e + +ü—‹d + + +46 +š + [ +lib +/ +doùrše +/ +fÜm +| +COMMENT +]. + +48 +This + +sk + +Ãv” + +ov”rides + +cu¡om + +þas£s + +š + [ +lib +/ +doùrše +/ +fÜm +| +COMMENT +]. + +49 +It + +Úly + +»¶aûs + +ba£ + +þas£s + +g’”©ed + +š + [ +lib +/ +doùrše +/ +fÜm +/ba£| +COMMENT +]. + +50 +EOF +; + +56 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +58 +$this +-> + `logSeùiÚ +('doctrine', 'generating form classes'); + +59 +$d©aba£Mªag” + = +Ãw + + `sfD©aba£Mªag” +( +$this +-> +cÚfigu¿tiÚ +); + +60 +$g’”©ÜMªag” + = +Ãw + + `sfG’”©ÜMªag” +( +$this +-> +cÚfigu¿tiÚ +); + +61 +$g’”©ÜMªag” +-> + `g’”©e +( +$ÝtiÚs +['g’”©Ü-þass'], + `¬¿y +( + +62 'mod–_dœ_Çme' => +$ÝtiÚs +['model-dir-name'], + +63 'fÜm_dœ_Çme' => +$ÝtiÚs +['form-dir-name'], + +66 +$´Ý”t›s + = + `·r£_ši_fže +( +sfCÚfig +:: + `g‘ +('sf_cÚfig_dœ'). +DIRECTORY_SEPARATOR +.'´Ý”t›s.ši', +Œue +); + +68 +$cÚ¡ªts + = + `¬¿y +( + +69 'PROJECT_NAME' => + `is£t +( +$´Ý”t›s +['symfony']['name']) ? $properties['symfony']['name'] : 'symfony', + +70 'AUTHOR_NAME' => + `is£t +( +$´Ý”t›s +['symfony']['author']) ? $properties['symfony']['author'] : 'Your‚ame here' + +74 +$fšd” + = +sfFšd” +:: + `ty³ +('fže')-> + `Çme +('*.php'); + +75 +$this +-> + `g‘Fžesy¡em +()-> + `»¶aûTok’s +( +$fšd” +-> + `š +( +sfCÚfig +:: + `g‘ +('sf_lib_dœ').'/fÜm/'), '##', '##', +$cÚ¡ªts +); + +78 ià(! + `þass_exi¡s +('BaseForm')) + +80 +$fže + = +sfCÚfig +:: + `g‘ +('sf_lib_dœ').'/'. +$ÝtiÚs +['form-dir-name'].'/BaseForm.class.php'; + +81 +$this +-> + `g‘Fžesy¡em +()-> + `cÝy +( +sfCÚfig +:: + `g‘ +('sf_symfÚy_lib_dœ').'/sk/g’”©Ü/sk–‘Ú/´ojeù/lib/fÜm/Ba£FÜm.þass.php', +$fže +); + +82 +$this +-> + `g‘Fžesy¡em +()-> + `»¶aûTok’s +( +$fže +, '##', '##', +$cÚ¡ªts +); + +85 +$this +-> + `»lßdAutÞßd +(); + +86 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineBuildModelTask.class.php + +1 + `addO±iÚs +( + `¬¿y +( + +31 +Ãw + + `sfCommªdO±iÚ +('­¶iÿtiÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL +, 'Th­¶iÿtiڂame', +Œue +), + +32 +Ãw + + `sfCommªdO±iÚ +('’v', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Theƒnvironment', 'dev'), + +35 +$this +-> +Çme¥aû + = 'doctrine'; + +36 +$this +-> +Çme + = 'build-model'; + +37 +$this +-> +br›fDesütiÚ + = 'Creates classes forhe current model'; + +39 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +40 +The + [ +doùrše +: +bužd +- +mod– +| +INFO +] +sk + +ü—‹s + mod– +þas£s + +äom + +the + +schema +: + +42 [./ +symfÚy + +doùrše +: +bužd +- +mod– +| +INFO +] + +44 +The + +sk + +»ad + +the + +schema + +šfÜm©iÚ + +š + [ +cÚfig +/ +doùrše + + +57 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + =‡rray()) + +59 +$this +-> + `logSeùiÚ +('doctrine', 'generating model classes'); + +61 +$cÚfig + = +$this +-> + `g‘CliCÚfig +(); + +62 +$bužd”O±iÚs + = +$this +-> +cÚfigu¿tiÚ +-> + `g‘PlugšCÚfigu¿tiÚ +('sfDoùršePlugš')-> + `g‘Mod–Bužd”O±iÚs +(); + +64 +$¡ubFšd” + = +sfFšd” +:: + `ty³ +('fže')-> + `´uà +('ba£')-> + `Çme +('*'. +$bužd”O±iÚs +['suffix']); + +65 +$befÜe + = +$¡ubFšd” +-> + `š +( +$cÚfig +['models_path']); + +67 +$schema + = +$this +-> + `´•¬eSchemaFže +( +$cÚfig +['yaml_schema_path']); + +69 +$impÜt + = +Ãw + + `Doùrše_ImpÜt_Schema +(); + +70 +$impÜt +-> + `£tO±iÚs +( +$bužd”O±iÚs +); + +71 +$impÜt +-> + `impÜtSchema +( +$schema +, 'yml', +$cÚfig +['models_path']); + +74 + `fܗch + ( +sfYaml +:: + `lßd +( +$schema +è +as + +$mod– + => +$defš™iÚ +) + +76 +$fže + = + `¥rštf +('%s%s/%s/Ba£%s%s', +$cÚfig +['mod–s_·th'], + `is£t +( +$defš™iÚ +['·ckage']è? '/'. + `sub¡r +($defš™iÚ['·ckage'], 0, + `¡½os +($defš™iÚ['·ckage'], '.')è: '', +$bužd”O±iÚs +['ba£CÏs£sDœeùÜy'], +$mod– +, $builderOptions['suffix']); + +77 +$code + = + `fže_g‘_cڋÁs +( +$fže +); + +80 ià( + `´eg_m©ch_®l +('/@´Ý”ty (\w+è\$(\w+)/', +$code +, +$m©ches +, +PREG_SET_ORDER +)) + +82 +$´Ý”t›s + = + `¬¿y +(); + +83 + `fܗch + ( +$m©ches + +as + +$m©ch +) + +85 +$´Ý”t›s +[ +$m©ch +[2]] = $match[1]; + +88 +$ty³Pad + = + `max +( + `¬¿y_m­ +('¡¾’', + `¬¿y_m”ge +( + `¬¿y_v®ues +( +$´Ý”t›s +), + `¬¿y +( +$mod– +)))); + +89 +$ÇmePad + = + `max +( + `¬¿y_m­ +('¡¾’', + `¬¿y_keys +×¼ay_m­( + `¬¿y +('sfInæeùÜ', 'ÿm–ize'), +$´Ý”t›s +)))); + +90 +$£‰”s + = + `¬¿y +(); + +91 +$g‘‹rs + = + `¬¿y +(); + +93 + `fܗch + ( +$´Ý”t›s + +as + +$Çme + => +$ty³ +) + +95 +$ÿm–ized + = +sfInæeùÜ +:: + `ÿm–ize +( +$Çme +); + +96 +$cÞËùiÚ + = 'Doùrše_CÞËùiÚ' =ð +$ty³ +; + +98 +$g‘‹rs +[] = + `¥rštf +('@m‘hod %-'. +$ty³Pad +.' %s%-'.( +$ÇmePad + + 2).' R‘uº thcu¼’ˆ»cÜd\' "%s" %s', +$ty³ +, 'g‘', +$ÿm–ized +.'()', +$Çme +, +$cÞËùiÚ + ? 'collection' : 'value'); + +99 +$£‰”s +[] = + `¥rštf +('@m‘hod %-'. +$ty³Pad +.' %s%-'.( +$ÇmePad + + 2).' S‘ thcu¼’ˆ»cÜd\' "%s" %s', +$mod– +, '£t', +$ÿm–ized +.'()', +$Çme +, +$cÞËùiÚ + ? 'collection' : 'value'); + +103 +$code + = + `¡r_»¶aû +( +$m©ch +[0], $m©ch[0]. +PHP_EOL +.' * '.PHP_EOL.' * '. + `im¶ode +(PHP_EOL.' * ', + `¬¿y_m”ge +( +$g‘‹rs +, +$£‰”s +)), $code); + +104 + `fže_put_cڋÁs +( +$fže +, +$code +); + +108 +$´Ý”t›s + = + `·r£_ši_fže +( +sfCÚfig +:: + `g‘ +('sf_cÚfig_dœ').'/´Ý”t›s.ši', +Œue +); + +109 +$tok’s + = + `¬¿y +( + +110 '##PACKAGE##' => + `is£t +( +$´Ý”t›s +['symfony']['name']) ? $properties['symfony']['name'] : 'symfony', + +112 '##NAME##' => + `is£t +( +$´Ý”t›s +['symfony']['author']) ? $properties['symfony']['author'] : 'Your‚ame here', + +118 +$aᔠ+ = +$¡ubFšd” +-> + `š +( +$cÚfig +['models_path']); + +119 +$this +-> + `g‘Fžesy¡em +()-> + `»¶aûTok’s +( + `¬¿y_diff +( +$aᔠ+, +$befÜe +), '', '', +$tok’s +); + +122 +$ba£Fšd” + = +sfFšd” +:: + `ty³ +('fže')-> + `Çme +('Ba£*'. +$bužd”O±iÚs +['suffix']); + +123 +$ba£DœFšd” + = +sfFšd” +:: + `ty³ +('dœ')-> + `Çme +('base'); + +124 +$this +-> + `g‘Fžesy¡em +()-> + `»¶aûTok’s +( +$ba£Fšd” +-> + `š +( +$ba£DœFšd” +->š( +$cÚfig +['mod–s_·th'])), '', '', +$tok’s +); + +126 +$this +-> + `»lßdAutÞßd +(); + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineBuildSchemaTask.class.php + +1 + `addO±iÚs +( + `¬¿y +( + +31 +Ãw + + `sfCommªdO±iÚ +('­¶iÿtiÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL +, 'Th­¶iÿtiڂame', +Œue +), + +32 +Ãw + + `sfCommªdO±iÚ +('’v', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Theƒnvironment', 'dev'), + +35 +$this +-> +Çme¥aû + = 'doctrine'; + +36 +$this +-> +Çme + = 'build-schema'; + +37 +$this +-> +br›fDesütiÚ + = 'Creates‡ schema from‡nƒxisting database'; + +39 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +40 +The + [ +doùrše +: +bužd +- +schema +| +INFO +] +sk + +šŒo¥eùs + +a + +d©aba£ + +to + +ü—‹ +‡ schema: + +42 [./ +symfÚy + +doùrše +: +bužd +- +schema +| +INFO +] + +44 +The + +sk + +ü—‹s + +a + +yml + +fže + +š + [ +cÚfig +/ +doùrše +| +COMMENT +] + +45 +EOF +; + +51 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +53 +$this +-> + `logSeùiÚ +('doctrine', 'generating yaml schema from database'); + +55 +$d©aba£Mªag” + = +Ãw + + `sfD©aba£Mªag” +( +$this +-> +cÚfigu¿tiÚ +); + +56 +$this +-> + `ÿÎDoùršeCli +('generate-yaml-db'); + +57 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineBuildSqlTask.class.php + +1 + `addO±iÚs +( + `¬¿y +( + +31 +Ãw + + `sfCommªdO±iÚ +('­¶iÿtiÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL +, 'Th­¶iÿtiڂame', +Œue +), + +32 +Ãw + + `sfCommªdO±iÚ +('’v', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Theƒnvironment', 'dev'), + +35 +$this +-> +Çme¥aû + = 'doctrine'; + +36 +$this +-> +Çme + = 'build-sql'; + +37 +$this +-> +br›fDesütiÚ + = 'Creates SQL forhe current model'; + +39 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +40 +The + [ +doùrše +: +bužd +- +sql +| +INFO +] +sk + +ü—‹s + +SQL + +¡©em’ts +  +bË + +ü—tiÚ +: + +42 [./ +symfÚy + +doùrše +: +bužd +- +sql +| +INFO +] + +44 +The + +g’”©ed + +SQL + +is + +Ýtimized +  +the + +d©aba£ + +cÚfigu»d + +š + [ +cÚfig +/ +d©aba£s +. +yml +| +COMMENT +]: + +46 [ +doùrše +. +d©aba£ + = +mysql +| +INFO +] + +47 +EOF +; + +53 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +55 +$this +-> + `logSeùiÚ +('doctrine', 'generating sql for models'); + +57 +$·th + = +sfCÚfig +:: + `g‘ +('sf_data_dir').'/sql'; + +58 ià(! + `is_dœ +( +$·th +)) { + +59 +$this +-> + `g‘Fžesy¡em +()-> + `mkdœs +( +$·th +); + +62 +$d©aba£Mªag” + = +Ãw + + `sfD©aba£Mªag” +( +$this +-> +cÚfigu¿tiÚ +); + +63 +$this +-> + `ÿÎDoùršeCli +('generate-sql'); + +64 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineBuildTask.class.php + +1 + `addO±iÚs +( + `¬¿y +( + +45 +Ãw + + `sfCommªdO±iÚ +('­¶iÿtiÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL +, 'Th­¶iÿtiڂame', +Œue +), + +46 +Ãw + + `sfCommªdO±iÚ +('’v', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Theƒnvironment', 'dev'), + +47 +Ãw + + `sfCommªdO±iÚ +('no-cÚfœm©iÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Whethero force dropping ofhe database'), + +48 +Ãw + + `sfCommªdO±iÚ +('®l', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Buildƒverything‡nd„esethe database'), + +49 +Ãw + + `sfCommªdO±iÚ +('®l-þas£s', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Build‡ll classes'), + +50 +Ãw + + `sfCommªdO±iÚ +('mod–', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Build model classes'), + +51 +Ãw + + `sfCommªdO±iÚ +('fÜms', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Build form classes'), + +52 +Ãw + + `sfCommªdO±iÚ +('fž‹rs', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Build filter classes'), + +53 +Ãw + + `sfCommªdO±iÚ +('sql', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Build SQL'), + +54 +Ãw + + `sfCommªdO±iÚ +('db', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Drop, create,‡ndƒither insert SQL or migratehe database'), + +55 +Ãw + + `sfCommªdO±iÚ +('ªd-mig¿‹', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Migratehe database'), + +56 +Ãw + + `sfCommªdO±iÚ +('ªd-lßd', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL + | sfCommªdO±iÚ:: +IS_ARRAY +, 'Load fixture data'), + +57 +Ãw + + `sfCommªdO±iÚ +('ªd-­³nd', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL + | sfCommªdO±iÚ:: +IS_ARRAY +, 'Append fixture data'), + +60 +$this +-> +Çme¥aû + = 'doctrine'; + +61 +$this +-> +Çme + = 'build'; + +63 +$this +-> +br›fDesütiÚ + = 'Generate code based on your schema'; + +65 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +66 +The + [ +doùrše +: +bužd +| +INFO +] +sk + +g’”©es + +code + +ba£d + +Ú + +your + +schema +: + +68 [./ +symfÚy + +doùrše +: +bužd +| +INFO +] + +70 +You + +mu¡ + +¥ecify + +wh© + +you + +would + +like + +bužt +. +FÜ + +š¡ªû +, you +wªt + +mod– + + +71 +ªd + +fÜm + +þas£s + +bužt + +u£ + +the + [-- +mod– +| +COMMENT +]‡nd [-- +fÜms +|COMMENT] +ÝtiÚs +: + +73 [./ +symfÚy + +doùrše +: +bužd + -- +mod– + -- +fÜms +| +INFO +] + +75 +You + +ÿn + +u£ + +the + [-- +®l +| +COMMENT +] +shÜtcut + +ÝtiÚ +  +you + +would + +like +‡Î +þas£s + +ªd + + +76 +SQL + +fžes + +g’”©ed + +ªd + +the + +d©aba£ + +»bužt +: + +78 [./ +symfÚy + +doùrše +: +bužd + -- +®l +| +INFO +] + +80 +This + +is + +equiv®’t + +to + +rušg + +the + +fÞlowšg + +sks +: + +82 [./ +symfÚy + +doùrše +: +drÝ +- +db +| +INFO +] + +83 [./ +symfÚy + +doùrše +: +bužd +- +db +| +INFO +] + +84 [./ +symfÚy + +doùrše +: +bužd +- +mod– +| +INFO +] + +85 [./ +symfÚy + +doùrše +: +bužd +- +fÜms +| +INFO +] + +86 [./ +symfÚy + +doùrše +: +bužd +- +fž‹rs +| +INFO +] + +87 [./ +symfÚy + +doùrše +: +bužd +- +sql +| +INFO +] + +88 [./ +symfÚy + +doùrše +: +𣹠+- +sql +| +INFO +] + +90 +You + +ÿn + +®so + +g’”©e + +Úly + +þass + +fžes + +by + +usšg + +the + [-- +®l +- +þas£s +| +COMMENT +] +shÜtcut + + +91 +ÝtiÚ +. +Wh’ + +this + o±iÚ +is + +u£d + +®Úe +, +the + +d©aba£ + +wžl + +nÙ + +be + +modif›d +. + +93 [./ +symfÚy + +doùrše +: +bužd + -- +®l +- +þas£s +| +INFO +] + +95 +The + [-- +ªd +- +mig¿‹ +| +COMMENT +] +ÝtiÚ + +wžl + +run + +ªy + +³ndšg + +mig¿tiÚs + +Úû + +the + +bužds + + +96 +¬e + +com¶‘e +: + +98 [./ +symfÚy + +doùrše +: +bužd + -- +db + -- +ªd +- +mig¿‹ +| +INFO +] + +100 +The + [-- +ªd +- +lßd +| +COMMENT +] +ÝtiÚ + +wžl +†ßd +d©a + +äom + +the + +´ojeù +‡nd +¶ugš + + +101 [ +d©a +/ +fixtu»s +/| +COMMENT +] +dœeùܛs +: + +103 [./ +symfÚy + +doùrše +: +bužd + -- +db + -- +ªd +- +mig¿‹ + --ªd- +lßd +| +INFO +] + +105 +To + +¥ecify + +wh© + +fixtu»s + +¬e + +lßded +, +add + +a + +·¿m‘” + +to + +the + [-- +ªd +- +lßd +| +COMMENT +] +ÝtiÚ +: + +107 [./ +symfÚy + +doùrše +: +bužd + -- +®l + -- +ªd +- +lßd +="d©a/fixtu»s/dev/"| +INFO +] + +109 +To + +­³nd + +fixtu» + +d©a + +w™hout + +”asšg + +ªy + +»cÜds + +äom + +the + +d©aba£ +, +šþude + + +110 +the + [-- +ªd +- +­³nd +| +COMMENT +] +ÝtiÚ +: + +112 [./ +symfÚy + +doùrše +: +bužd + -- +®l + -- +ªd +- +­³nd +| +INFO +] + +113 +EOF +; + +119 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +121 ià(! +$mode + = +$this +-> + `ÿlcuϋMode +( +$ÝtiÚs +)) + +123 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +("You mu¡ inþudÚÜ mܐoàthfÞlowšg bužd o±iÚs:\n--%s\n\nS“hi sk' h–°·gfÜ mܐšfÜm©iÚ:\n\À…h°symfÚy h–°doùrše:bužd", + `još +(', --', + `¬¿y_keys +( +$this +-> + `g‘BuždO±iÚs +())))); + +126 ià( +£lf +:: +BUILD_DB + =ð(£lf::BUILD_DB & +$mode +)) + +128 +$sk + = +Ãw + + `sfDoùršeDrÝDbTask +( +$this +-> +di¥©ch” +, $this-> +fÜm©‹r +); + +129 +$sk +-> + `£tCommªdAµliÿtiÚ +( +$this +-> +commªdAµliÿtiÚ +); + +130 +$sk +-> + `£tCÚfigu¿tiÚ +( +$this +-> +cÚfigu¿tiÚ +); + +131 +$»t + = +$sk +-> + `run +( + `¬¿y +(),‡¼ay('no-cÚfœm©iÚ' => +$ÝtiÚs +['no-confirmation'])); + +133 ià( +$»t +) + +135  +$»t +; + +138 +$sk + = +Ãw + + `sfDoùršeBuždDbTask +( +$this +-> +di¥©ch” +, $this-> +fÜm©‹r +); + +139 +$sk +-> + `£tCommªdAµliÿtiÚ +( +$this +-> +commªdAµliÿtiÚ +); + +140 +$sk +-> + `£tCÚfigu¿tiÚ +( +$this +-> +cÚfigu¿tiÚ +); + +141 +$»t + = +$sk +-> + `run +(); + +143 ià( +$»t +) + +145  +$»t +; + +151 ià( +£lf +:: +BUILD_MODEL + =ð(£lf::BUILD_MODEL & +$mode +)) + +153 +$sk + = +Ãw + + `sfDoùršeBuždMod–Task +( +$this +-> +di¥©ch” +, $this-> +fÜm©‹r +); + +154 +$sk +-> + `£tCommªdAµliÿtiÚ +( +$this +-> +commªdAµliÿtiÚ +); + +155 +$sk +-> + `£tCÚfigu¿tiÚ +( +$this +-> +cÚfigu¿tiÚ +); + +156 +$»t + = +$sk +-> + `run +(); + +158 ià( +$»t +) + +160  +$»t +; + +164 ià( +£lf +:: +BUILD_FORMS + =ð(£lf::BUILD_FORMS & +$mode +)) + +166 +$sk + = +Ãw + + `sfDoùršeBuždFÜmsTask +( +$this +-> +di¥©ch” +, $this-> +fÜm©‹r +); + +167 +$sk +-> + `£tCommªdAµliÿtiÚ +( +$this +-> +commªdAµliÿtiÚ +); + +168 +$sk +-> + `£tCÚfigu¿tiÚ +( +$this +-> +cÚfigu¿tiÚ +); + +169 +$»t + = +$sk +-> + `run +(); + +171 ià( +$»t +) + +173  +$»t +; + +177 ià( +£lf +:: +BUILD_FILTERS + =ð(£lf::BUILD_FILTERS & +$mode +)) + +179 +$sk + = +Ãw + + `sfDoùršeBuždFž‹rsTask +( +$this +-> +di¥©ch” +, $this-> +fÜm©‹r +); + +180 +$sk +-> + `£tCommªdAµliÿtiÚ +( +$this +-> +commªdAµliÿtiÚ +); + +181 +$sk +-> + `£tCÚfigu¿tiÚ +( +$this +-> +cÚfigu¿tiÚ +); + +182 +$»t + = +$sk +-> + `run +(); + +184 ià( +$»t +) + +186  +$»t +; + +190 ià( +£lf +:: +BUILD_SQL + =ð(£lf::BUILD_SQL & +$mode +)) + +192 +$sk + = +Ãw + + `sfDoùršeBuždSqlTask +( +$this +-> +di¥©ch” +, $this-> +fÜm©‹r +); + +193 +$sk +-> + `£tCommªdAµliÿtiÚ +( +$this +-> +commªdAµliÿtiÚ +); + +194 +$sk +-> + `£tCÚfigu¿tiÚ +( +$this +-> +cÚfigu¿tiÚ +); + +195 +$»t + = +$sk +-> + `run +(); + +197 ià( +$»t +) + +199  +$»t +; + +203 ià( +$ÝtiÚs +['and-migrate']) + +205 +$sk + = +Ãw + + `sfDoùršeMig¿‹Task +( +$this +-> +di¥©ch” +, $this-> +fÜm©‹r +); + +206 +$sk +-> + `£tCommªdAµliÿtiÚ +( +$this +-> +commªdAµliÿtiÚ +); + +207 +$sk +-> + `£tCÚfigu¿tiÚ +( +$this +-> +cÚfigu¿tiÚ +); + +208 +$»t + = +$sk +-> + `run +(); + +210 ià( +$»t +) + +212  +$»t +; + +215 ià( +£lf +:: +BUILD_DB + =ð(£lf::BUILD_DB & +$mode +)) + +217 +$sk + = +Ãw + + `sfDoùršeIn£¹SqlTask +( +$this +-> +di¥©ch” +, $this-> +fÜm©‹r +); + +218 +$sk +-> + `£tCommªdAµliÿtiÚ +( +$this +-> +commªdAµliÿtiÚ +); + +219 +$sk +-> + `£tCÚfigu¿tiÚ +( +$this +-> +cÚfigu¿tiÚ +); + +220 +$»t + = +$sk +-> + `run +(); + +222 ià( +$»t +) + +224  +$»t +; + +228 ià( + `couÁ +( +$ÝtiÚs +['and-load']) || count($options['and-append'])) + +230 +$sk + = +Ãw + + `sfDoùršeD©aLßdTask +( +$this +-> +di¥©ch” +, $this-> +fÜm©‹r +); + +231 +$sk +-> + `£tCommªdAµliÿtiÚ +( +$this +-> +commªdAµliÿtiÚ +); + +232 +$sk +-> + `£tCÚfigu¿tiÚ +( +$this +-> +cÚfigu¿tiÚ +); + +234 ià( + `couÁ +( +$ÝtiÚs +['and-load'])) + +236 +$»t + = +$sk +-> + `run +( + `¬¿y +( + +237 'dœ_Ü_fže' => + `š_¬¿y +( + `¬¿y +(), +$ÝtiÚs +['ªd-lßd'], +Œue +è? +nuÎ + : $options['and-load'], + +240 ià( +$»t +) + +242  +$»t +; + +246 ià( + `couÁ +( +$ÝtiÚs +['and-append'])) + +248 +$»t + = +$sk +-> + `run +( + `¬¿y +( + +249 'dœ_Ü_fže' => + `š_¬¿y +( + `¬¿y +(), +$ÝtiÚs +['ªd-­³nd'], +Œue +è? +nuÎ + : $options['and-append'], + +250 ), + `¬¿y +( + +251 '­³nd' => +Œue +, + +254 ià( +$»t +) + +256  +$»t +; + +260 + } +} + +269 +´Ùeùed + +funùiÚ + +ÿlcuϋMode +( +$ÝtiÚs + = + $¬¿y +()) + +271 +$mode + = 0; + +272 + `fܗch + ( +$this +-> + `g‘BuždO±iÚs +(è +as + +$Çme + => +$v®ue +) + +274 ià( + `is£t +( +$ÝtiÚs +[ +$Çme +]è&& +Œue + === $options[$name]) + +276 +$mode + = $mod| +$v®ue +; + +280  +$mode +; + +281 + } +} + +288 +´Ùeùed + +funùiÚ + + $g‘BuždO±iÚs +() + +290 +$ÝtiÚs + = + `¬¿y +(); + +291 + `fܗch + ( +$this +-> +ÝtiÚs + +as + +$ÝtiÚ +) + +293 ià( + `defšed +( +$cÚ¡ªt + = +__CLASS__ +.'::OPTION_'. + `¡r_»¶aû +('-', '_', + `¡¹ouµ” +( +$ÝtiÚ +-> + `g‘Name +())))) + +295 +$ÝtiÚs +[ +$ÝtiÚ +-> + `g‘Name +()] = + `cÚ¡ªt +( +$cÚ¡ªt +); + +299  +$ÝtiÚs +; + +300 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineCleanModelFilesTask.class.php + +1 + `addO±iÚs +( + `¬¿y +( + +26 +Ãw + + `sfCommªdO±iÚ +('no-cÚfœm©iÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Do‚ot‡sk for confirmation'), + +29 +$this +-> +®Ÿ£s + = + `¬¿y +('doctrine:clean'); + +30 +$this +-> +Çme¥aû + = 'doctrine'; + +31 +$this +-> +Çme + = 'clean-model-files'; + +32 +$this +-> +br›fDesütiÚ + = 'Delete‡ll generated model classes for models which‚o†ongerƒxist in your YAML schema'; + +34 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +35 +The + [ +doùrše +: +þ—n +- +mod– +- +fžes +| +INFO +] +sk + +d–‘es + mod– +þas£s + +th© + +¬e + +nÙ + + +36 +»´e£Áed + +š + +´ojeù + +Ü + +¶ugš + +schema +. +yml + +fžes +: + +38 [./ +symfÚy + +doùrše +: +þ—n +- +mod– +- +fžes +| +INFO +] + +39 +EOF +; + +45 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +47 +$cÚfig + = +$this +-> + `g‘CliCÚfig +(); + +48 +$chªged + = +çl£ +; + +50 +$d–‘eMod–Fžes + = +Ãw + + `sfDoùršeD–‘eMod–FžesTask +( +$this +-> +di¥©ch” +, $this-> +fÜm©‹r +); + +51 +$d–‘eMod–Fžes +-> + `£tCommªdAµliÿtiÚ +( +$this +-> +commªdAµliÿtiÚ +); + +52 +$d–‘eMod–Fžes +-> + `£tCÚfigu¿tiÚ +( +$this +-> +cÚfigu¿tiÚ +); + +54 +$yamlSchema + = +$this +-> + `g‘YamlSchema +( +$cÚfig +['yaml_schema_path']); + +57 ià( +$mod–sToRemove + = + `¬¿y_diff +( +$this +-> + `g‘FžeMod–s +( +$cÚfig +['mod–s_·th']), + `¬¿y_keys +( +$yamlSchema +))) + +59 +$d–‘eMod–Fžes +-> + `run +( +$mod–sToRemove +, + `¬¿y +('no-cÚfœm©iÚ' => +$ÝtiÚs +['no-confirmation'])); + +60 +$chªged + = +Œue +; + +64 + `fܗch + ( +$yamlSchema + +as + +$mod– + => +$defš™iÚ +) + +66 ià( + `is£t +( +$defš™iÚ +['ÝtiÚs']['symfÚy']['fÜm']è&& !$defš™iÚ['ÝtiÚs']['symfÚy']['fÜm'] && + `þass_exi¡s +( +$mod– +.'Form')) + +68 +$d–‘eMod–Fžes +-> + `run +( + `¬¿y +( +$mod– +),‡¼ay('suffix' =>‡¼ay('FÜm'), 'no-cÚfœm©iÚ' => +$ÝtiÚs +['no-confirmation'])); + +69 +$chªged + = +Œue +; + +72 ià( + `is£t +( +$defš™iÚ +['ÝtiÚs']['symfÚy']['fž‹r']è&& !$defš™iÚ['ÝtiÚs']['symfÚy']['fž‹r'] && + `þass_exi¡s +( +$mod– +.'FormFilter')) + +74 +$d–‘eMod–Fžes +-> + `run +( + `¬¿y +( +$mod– +),‡¼ay('suffix' =>‡¼ay('FÜmFž‹r'), 'no-cÚfœm©iÚ' => +$ÝtiÚs +['no-confirmation'])); + +75 +$chªged + = +Œue +; + +79 ià( +$chªged +) + +81 +$this +-> + `»lßdAutÞßd +(); + +85 +$this +-> + `logSeùiÚ +('doctrine', 'Could‚ot find‡ny fileshat‚eedo be„emoved'); + +87 + } +} + +94 +´Ùeùed + +funùiÚ + + $g‘YamlMod–s +( +$yamlSchemaP©h +) + +96  + `¬¿y_keys +( +$this +-> + `g‘YamlSchema +( +$yamlSchemaP©h +)); + +97 + } +} + +104 +´Ùeùed + +funùiÚ + + $g‘YamlSchema +( +$yamlSchemaP©h +) + +106  ( +¬¿y +è +sfYaml +:: + `lßd +( +$this +-> + `´•¬eSchemaFže +( +$yamlSchemaP©h +)); + +107 + } +} + +114 +´Ùeùed + +funùiÚ + + $g‘FžeMod–s +( +$mod–sP©h +) + +116 +Doùrše_CÜe +:: + `lßdMod–s +( +$mod–sP©h +); + +117  +Doùrše_CÜe +:: + `g‘LßdedMod–s +(); + +118 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineConfigureDatabaseTask.class.php + +1 + `addArgum’ts +( + `¬¿y +( + +27 +Ãw + + `sfCommªdArgum’t +('d¢', +sfCommªdArgum’t +:: +REQUIRED +, 'The database dsn'), + +28 +Ãw + + `sfCommªdArgum’t +('u£ºame', +sfCommªdArgum’t +:: +OPTIONAL +, 'The database username', 'root'), + +29 +Ãw + + `sfCommªdArgum’t +('·sswÜd', +sfCommªdArgum’t +:: +OPTIONAL +, 'The database…assword'), + +32 +$this +-> + `addO±iÚs +( + `¬¿y +( + +33 +Ãw + + `sfCommªdO±iÚ +('’v', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL +, 'Theƒnvironment', 'all'), + +34 +Ãw + + `sfCommªdO±iÚ +('Çme', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL +, 'The connection‚ame', 'doctrine'), + +35 +Ãw + + `sfCommªdO±iÚ +('þass', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL +, 'The database class‚ame', 'sfDoctrineDatabase'), + +36 +Ãw + + `sfCommªdO±iÚ +('­p', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL +, 'The‡pplication‚ame',‚ull), + +39 +$this +-> +Çme¥aû + = 'configure'; + +40 +$this +-> +Çme + = 'database'; + +42 +$this +-> +br›fDesütiÚ + = 'Configure database DSN'; + +44 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +45 +The + [ +cÚfigu» +: +d©aba£ +| +INFO +] +sk + +cÚfigu»s + +the + d©aba£ +DSN + + +46  +a + +´ojeù +: + +48 [./ +symfÚy + +cÚfigu» +: +d©aba£ + +mysql +: +ho¡ += +loÿlho¡ +; +dbÇme += +exam¶e + +roÙ + +mYsEü‘ +| +INFO +] + +50 +By + , +the + +sk + +chªge +h +cÚfigu¿tiÚ +  +®l + +’vœÚm’t +. +If + +you + +wªt + + +51 +to + +chªge + +the + +d¢ +  +a + +¥ecific + +’vœÚm’t +, +u£ +h[ +’v +| +COMMENT +] +ÝtiÚ +: + +53 [./ +symfÚy + +cÚfigu» +: +d©aba£ + -- +’v += +dev + +mysql +: +ho¡ += +loÿlho¡ +; +dbÇme += +exam¶e_dev + +roÙ + +mYsEü‘ +| +INFO +] + +55 +To + +chªge + +the + +cÚfigu¿tiÚ +  +a + +¥ecific + +­¶iÿtiÚ +, +u£ +h[ +­p +| +COMMENT +] +ÝtiÚ +: + +57 [./ +symfÚy + +cÚfigu» +: +d©aba£ + -- +­p += +äڋnd + +mysql +: +ho¡ += +loÿlho¡ +; +dbÇme += +exam¶e + +roÙ + +mYsEü‘ +| +INFO +] + +59 +You + +ÿn + +®so + +¥ecify + +the + +cÚÃùiÚ + +Çme + +ªd +h +d©aba£ + +þass +‚ame: + +61 [./ +symfÚy + +cÚfigu» +: +d©aba£ + -- +Çme += +maš + -- +þass += +ProjeùD©aba£ + +mysql +: +ho¡ += +loÿlho¡ +; +dbÇme += +exam¶e + +roÙ + +mYsEü‘ +| +INFO +] + +62 +EOF +; + +68 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +71 ià( +nuÎ + !=ð +$ÝtiÚs +['app']) + +73 +$fže + = +sfCÚfig +:: + `g‘ +('sf_­ps_dœ').'/'. +$ÝtiÚs +['app'].'/config/databases.yml'; + +77 +$fže + = +sfCÚfig +:: + `g‘ +('sf_config_dir').'/databases.yml'; + +80 +$cÚfig + = + `fže_exi¡s +( +$fže +è? +sfYaml +:: + `lßd +($fžeè: + `¬¿y +(); + +82 +$cÚfig +[ +$ÝtiÚs +['’v']][$ÝtiÚs['Çme']] = + `¬¿y +( + +83 'þass' => +$ÝtiÚs +['class'], + +84 '·¿m' => + `¬¿y_m”ge +( + `is£t +( +$cÚfig +[ +$ÝtiÚs +['’v']][$ÝtiÚs['Çme']]['·¿m']è? $cÚfig[$ÝtiÚs['’v']][$ÝtiÚs['Çme']]['·¿m'] : + `¬¿y +(),‡¼ay('d¢' => +$¬gum’ts +['dsn'], 'username' => $arguments['username'], 'password' => $arguments['password'])), + +87 + `fže_put_cڋÁs +( +$fže +, +sfYaml +:: + `dump +( +$cÚfig +, 4)); + +88 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineCreateModelTablesTask.class.php + +1 + `addArgum’ts +( + `¬¿y +( + +26 +Ãw + + `sfCommªdArgum’t +('mod–s', +sfCommªdArgum’t +:: +IS_ARRAY +, 'Thli¡ oàmod–s', + `¬¿y +()), + +29 +$this +-> + `addO±iÚs +( + `¬¿y +( + +30 +Ãw + + `sfCommªdO±iÚ +('­¶iÿtiÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL +, 'The‡pplication‚ame', 'frontend'), + +31 +Ãw + + `sfCommªdO±iÚ +('’v', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Theƒnvironment', 'dev'), + +34 +$this +-> +Çme¥aû + = 'doctrine'; + +35 +$this +-> +Çme + = 'create-model-tables'; + +36 +$this +-> +br›fDesütiÚ + = 'Drop‡nd„ecreateables for specified models.'; + +38 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +39 +The + [ +doùrše +: +ü—‹ +- +mod– +- +bËs +| +INFO +] +DrÝ + +ªd + +»ü—‹ +abË  +¥ecif›d + +mod–s +: + +41 [./ +symfÚy + +doùrše +: +ü—‹ +- +mod– +- +bËs + +U£r +| +INFO +] + +42 +EOF +; + +45 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +47 +$d©aba£Mªag” + = +Ãw + + `sfD©aba£Mªag” +( +$this +-> +cÚfigu¿tiÚ +); + +49 +$buždMod– + = +Ãw + + `sfDoùršeBuždMod–Task +( +$this +-> +di¥©ch” +, $this-> +fÜm©‹r +); + +50 +$buždMod– +-> + `£tCommªdAµliÿtiÚ +( +$this +-> +commªdAµliÿtiÚ +); + +51 +$buždMod– +-> + `£tCÚfigu¿tiÚ +( +$this +-> +cÚfigu¿tiÚ +); + +52 +$»t + = +$buždMod– +-> + `run +(); + +54 +$cÚÃùiÚs + = + `¬¿y +(); + +55 +$mod–s + = +$¬gum’ts +['models']; + +56 + `fܗch + ( +$mod–s + +as + +$key + => +$mod– +) + +58 +$mod– + = + `Œim +($model); + +59 +$cÚn + = +Doùrše_CÜe +:: + `g‘TabË +( +$mod– +)-> + `g‘CÚÃùiÚ +(); + +60 +$cÚÃùiÚs +[ +$cÚn +-> + `g‘Name +()][] = +$mod– +; + +63 + `fܗch + ( +$cÚÃùiÚs + +as + +$Çme + => +$mod–s +) + +65 +$this +-> + `logSeùiÚ +('doùrše', 'drÝpšg mod–abË fÜ cÚÃùiÚ "'. +$Çme +.'"'); + +67 +$cÚn + = +Doùrše_Mªag” +:: + `g‘In¡ªû +()-> + `g‘CÚÃùiÚ +( +$Çme +); + +68 +$mod–s + = +$cÚn +-> +un™OfWÜk +-> + `buždFlushT»e +($models); + +69 +$mod–s + = + `¬¿y_»v”£ +($models); + +71 + `fܗch + ( +$mod–s + +as + +$mod– +) + +73 +$bËName + = +Doùrše_CÜe +:: + `g‘TabË +( +$mod– +)-> + `g‘O±iÚ +('tableName'); + +75 +$this +-> + `logSeùiÚ +('doùrše', 'drÝpšgabË "'. +$bËName +.'"'); + +77 +Œy + { + +78 +$cÚn +-> +expÜt +-> + `drÝTabË +( +$bËName +); + +80 + `ÿtch + ( +Exû±iÚ + +$e +) + +82 +$this +-> + `logSeùiÚ +('doùrše', 'drÝpšgabË fažed: '. +$e +-> + `g‘Mes§ge +()); + +86 +$this +-> + `logSeùiÚ +('doctrine', 'recreatingables for models'); + +88 +Doùrše_CÜe +:: + `ü—‹TabËsFromA¼ay +( +$mod–s +); + +90 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineDataDumpTask.class.php + +1 + `addArgum’ts +( + `¬¿y +( + +31 +Ãw + + `sfCommªdArgum’t +('rg‘', +sfCommªdArgum’t +:: +OPTIONAL +, 'Thearget filename'), + +34 +$this +-> + `addO±iÚs +( + `¬¿y +( + +35 +Ãw + + `sfCommªdO±iÚ +('­¶iÿtiÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL +, 'Th­¶iÿtiڂame', +Œue +), + +36 +Ãw + + `sfCommªdO±iÚ +('’v', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Theƒnvironment', 'dev'), + +39 +$this +-> +Çme¥aû + = 'doctrine'; + +40 +$this +-> +Çme + = 'data-dump'; + +41 +$this +-> +br›fDesütiÚ + = 'Dumps dataohe fixtures directory'; + +43 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +44 +The + [ +doùrše +: +d©a +- +dump +| +INFO +] +sk + +dumps + +d©aba£ + data: + +46 [./ +symfÚy + +doùrše +: +d©a +- +dump +| +INFO +] + +48 +The + +sk + +dumps + +the + +d©aba£ + +d©a + +š + [d©a/ +fixtu»s +/% +rg‘ +%| +COMMENT +]. + +50 +The + +dump + +fže + +is + +š + +the + +YML + +fÜm© + +ªd + +ÿn + +be + +»imp܋d + +by + +usšg + + +51 +the + [ +doùrše +: +d©a +- +lßd +| +INFO +] +sk +. + +53 [./ +symfÚy + +doùrše +: +d©a +- +lßd +| +INFO +] + +54 +EOF +; + +60 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +62 +$d©aba£Mªag” + = +Ãw + + `sfD©aba£Mªag” +( +$this +-> +cÚfigu¿tiÚ +); + +63 +$cÚfig + = +$this +-> + `g‘CliCÚfig +(); + +65 +$¬gs + = + `¬¿y +( + +66 'd©a_fixtu»s_·th' => +$cÚfig +['data_fixtures_path'][0], + +69 ià(! + `is_dœ +( +$¬gs +['data_fixtures_path'])) + +71 +$this +-> + `g‘Fžesy¡em +()-> + `mkdœs +( +$¬gs +['data_fixtures_path']); + +74 ià( +$¬gum’ts +['target']) + +76 +$fž’ame + = +$¬gum’ts +['target']; + +78 ià(! +sfToÞk™ +:: + `isP©hAbsÞu‹ +( +$fž’ame +)) + +80 +$fž’ame + = +$¬gs +['data_fixtures_path'].'/'.$filename; + +83 +$this +-> + `g‘Fžesy¡em +()-> + `mkdœs +( + `dœÇme +( +$fž’ame +)); + +85 +$¬gs +['d©a_fixtu»s_·th'] = +$fž’ame +; + +88 +$this +-> + `logSeùiÚ +('doùrše', + `¥rštf +('dumpšg d©¨tØfixtu» tØ"%s"', +$¬gs +['data_fixtures_path'])); + +89 +$this +-> + `ÿÎDoùršeCli +('dump-d©a', +$¬gs +); + +90 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineDataLoadTask.class.php + +1 + `addArgum’ts +( + `¬¿y +( + +31 +Ãw + + `sfCommªdArgum’t +('dœ_Ü_fže', +sfCommªdArgum’t +:: +OPTIONAL + | sfCommªdArgum’t:: +IS_ARRAY +, 'Directory or fileo†oad'), + +34 +$this +-> + `addO±iÚs +( + `¬¿y +( + +35 +Ãw + + `sfCommªdO±iÚ +('­¶iÿtiÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL +, 'Th­¶iÿtiڂame', +Œue +), + +36 +Ãw + + `sfCommªdO±iÚ +('’v', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Theƒnvironment', 'dev'), + +37 +Ãw + + `sfCommªdO±iÚ +('­³nd', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Don\'t delete current data inhe database'), + +40 +$this +-> +Çme¥aû + = 'doctrine'; + +41 +$this +-> +Çme + = 'data-load'; + +42 +$this +-> +br›fDesütiÚ + = 'Loads YAML fixture data'; + +44 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +45 +The + [ +doùrše +: +d©a +- +lßd +| +INFO +] +sk + +lßds + d©¨ +fixtu»s + +što + +the + +d©aba£ +: + +47 [./ +symfÚy + +doùrše +: +d©a +- +lßd +| +INFO +] + +49 +The + +sk + +lßds + +d©a + +äom + +®l + +the + +fžes + +found + +š + [d©a/ +fixtu»s +/| +COMMENT +]. + +51 +If + +you + +wªt + +to + +lßd + +d©a + +äom + +¥ecific + +fžes + +Ü + +dœeùܛs +, you +ÿn + +­³nd + + +52 +them + +as + +¬gum’ts +: + +54 [./ +symfÚy + +doùrše +: +d©a +- +lßd + d©a/ +fixtu»s +/ +dev + d©a/fixtu»s/ +u£rs +. +yml +| +INFO +] + +56 +If + +you + +dÚ +'t wantheasko„emoveƒxisting data inhe database, + +57 +u£ + +the + [-- +­³nd +| +COMMENT +] +ÝtiÚ +: + +59 [./ +symfÚy + +doùrše +: +d©a +- +lßd + -- +­³nd +| +INFO +] + +60 +EOF +; + +66 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +68 +$d©aba£Mªag” + = +Ãw + + `sfD©aba£Mªag” +( +$this +-> +cÚfigu¿tiÚ +); + +70 ià(! + `couÁ +( +$¬gum’ts +['dir_or_file'])) + +73 +$cÚfig + = +$this +-> + `g‘CliCÚfig +(); + +74 +$¬gum’ts +['dœ_Ü_fže'] = +$cÚfig +['data_fixtures_path']; + +77 +$doùršeArgum’ts + = + `¬¿y +( + +78 'd©a_fixtu»s_·th' => +$¬gum’ts +['dir_or_file'], + +79 '­³nd' => +$ÝtiÚs +['append'], + +82 + `fܗch + ( +$¬gum’ts +['dœ_Ü_fže'] +as + +$rg‘ +) + +84 +$this +-> + `logSeùiÚ +('doùrše', + `¥rštf +('Lßdšg d©¨fixtu» äom "%s"', +$rg‘ +)); + +87 +$this +-> + `ÿÎDoùršeCli +('lßd-d©a', +$doùršeArgum’ts +); + +88 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineDeleteModelFilesTask.class.php + +1 + `addArgum’ts +( + `¬¿y +( + +26 +Ãw + + `sfCommªdArgum’t +('Çme', +sfCommªdArgum’t +:: +REQUIRED + | sfCommªdArgum’t:: +IS_ARRAY +, 'The‚ame ofhe model you wisho delete‡ll„elated files for.'), + +29 +$this +-> + `addO±iÚs +( + `¬¿y +( + +30 +Ãw + + `sfCommªdO±iÚ +('no-cÚfœm©iÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Do‚ot‡sk for confirmation'), + +31 +Ãw + + `sfCommªdO±iÚ +('´efix', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED + | sfCommªdO±iÚ:: +IS_ARRAY +, 'Class…refixo„emove'), + +32 +Ãw + + `sfCommªdO±iÚ +('suffix', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED + | sfCommªdO±iÚ:: +IS_ARRAY +, 'Class suffixo„emove'), + +33 +Ãw + + `sfCommªdO±iÚ +('ex‹nsiÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED + | sfCommªdO±iÚ:: +IS_ARRAY +, 'Filenameƒxtensiono„emove'), + +36 +$this +-> +Çme¥aû + = 'doctrine'; + +37 +$this +-> +Çme + = 'delete-model-files'; + +38 +$this +-> +br›fDesütiÚ + = 'Delete‡llhe„elated‡uto generated files for‡ given model‚ame.'; + +40 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +41 +The + [ +doùrše +: +d–‘e +- +mod– +- +fžes +| +INFO +] +sk + +d–‘es + +®l + fže  +assocŸ‹d + +w™h + +û¹aš + + +42 +mod–s +: + +44 [./ +symfÚy + +doùrše +: +d–‘e +- +mod– +- +fžes + +A¹iþe + +AuthÜ +| +INFO +] + +45 +EOF +; + +51 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +53 +$·ths + = + `¬¿y_m”ge +( + +54 + `¬¿y +( + +55 +sfCÚfig +:: + `g‘ +('sf_lib_dir').'/model/doctrine', + +56 +sfCÚfig +:: + `g‘ +('sf_lib_dir').'/form/doctrine', + +57 +sfCÚfig +:: + `g‘ +('sf_lib_dir').'/filter/doctrine', + +59 +$this +-> +cÚfigu¿tiÚ +-> + `g‘PlugšSubP©hs +('/lib/model/doctrine'), + +60 +$this +-> +cÚfigu¿tiÚ +-> + `g‘PlugšSubP©hs +('/lib/form/doctrine'), + +61 +$this +-> +cÚfigu¿tiÚ +-> + `g‘PlugšSubP©hs +('/lib/filter/doctrine') + +64 +$´efixP©‹º + = +$this +-> + `v®uesToRegex +( +$ÝtiÚs +['´efix'] ? $ÝtiÚs['´efix'] : + `¬¿y +('', 'Base', 'Plugin')); + +65 +$suffixP©‹º + = +$this +-> + `v®uesToRegex +( +$ÝtiÚs +['suffix'] ? $ÝtiÚs['suffix'] : + `¬¿y +('', 'Table', 'Form', 'FormFilter')); + +66 +$ex‹nsiÚP©‹º + = +$this +-> + `v®uesToRegex +( +$ÝtiÚs +['ex‹nsiÚ'] ? $ÝtiÚs['ex‹nsiÚ'] : + `¬¿y +('.php', '.class.php')); + +68 +$tÙ® + = 0; + +70 + `fܗch + ( +$¬gum’ts +['Çme'] +as + +$mod–Name +) + +72 +$fšd” + = +sfFšd” +:: + `ty³ +('fže')-> + `Çme +('/^'. +$´efixP©‹º +. +$mod–Name +. +$suffixP©‹º +. +$ex‹nsiÚP©‹º +.'$/'); + +73 +$fžes + = +$fšd” +-> + `š +( +$·ths +); + +75 ià( +$fžes +) + +77 ià(! +$ÝtiÚs +['no-cÚfœm©iÚ'] && ! +$this +-> + `askCÚfœm©iÚ +( + `¬¿y_m”ge +( + +78 + `¬¿y +('ThfÞlowšg '. +$mod–Name +.' files will be deleted:', ''), + +79 + `¬¿y_m­ +( + `ü—‹_funùiÚ +('$v', '»tuº \' - \'.sfDebug::sh܋nFžeP©h($v);'), +$fžes +), + +80 + `¬¿y +('', 'Continue? (y/N)') + +81 ), 'QUESTION_LARGE', +çl£ +)) + +83 +$this +-> + `logSeùiÚ +('doùrše', 'AbÜtšg d–‘oà"'. +$mod–Name +.'" files'); + +87 +$this +-> + `logSeùiÚ +('doùrše', 'D–‘šg "'. +$mod–Name +.'" files'); + +88 +$this +-> + `g‘Fžesy¡em +()-> + `»move +( +$fžes +); + +90 +$tÙ® + +ð + `couÁ +( +$fžes +); + +94 +$this +-> + `logSeùiÚ +('doùrše', 'NØfže found f܁hmod–‚amed "'. +$mod–Name +.'"'); + +98 +$this +-> + `logSeùiÚ +('doùrše', 'D–‘ed‡Ù® oà'. +$tÙ® +.' file(s)'); + +99 + } +} + +109 +´Ùeùed + +funùiÚ + +v®uesToRegex +( +$v®ues +, +$d–im™” + = '/') + +111 ià( +çl£ + !=ð +$pos + = +¬¿y_£¬ch +('', +$v®ues +)) + +113 + g$»quœed + = +çl£ +; + +114 +un£t +( +$v®ues +[ +$pos +]); + +118 + g$»quœed + = +Œue +; + +121 ià( +couÁ +( +$v®ues +)) + +123 + g$»gex + = '('; + +124 +fܗch + ( +$v®ues + +as + +$i + => +$v®ue +) + +126 +$»gex + .ð +´eg_quÙe +( +$v®ue +, +$d–im™” +); + +127 ià( +is£t +( +$v®ues +[ +$i + + 1])) + +129 + g$»gex + .= '|'; + +132 + g$»gex + .= ')'; + +134 ià(! + g$»quœed +) + +136 + g$»gex + .= '?'; + +139  + g$»gex +; + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineDqlTask.class.php + +1 + `addArgum’ts +( + `¬¿y +( + +31 +Ãw + + `sfCommªdArgum’t +('dql_qu”y', +sfCommªdArgum’t +:: +REQUIRED +, 'ThDQL qu”yØexecu‹', +nuÎ +), + +32 +Ãw + + `sfCommªdArgum’t +('·¿m‘”', +sfCommªdArgum’t +:: +OPTIONAL + | sfCommªdArgum’t:: +IS_ARRAY +, 'Query…arameter'), + +35 +$this +-> + `addO±iÚs +( + `¬¿y +( + +36 +Ãw + + `sfCommªdO±iÚ +('­¶iÿtiÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL +, 'Th­¶iÿtiڂame', +Œue +), + +37 +Ãw + + `sfCommªdO±iÚ +('’v', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Theƒnvironment', 'dev'), + +38 +Ãw + + `sfCommªdO±iÚ +('show-sql', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Showhe sqlhat would beƒxecuted'), + +39 +Ãw + + `sfCommªdO±iÚ +('bË', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Return„esults inable format'), + +42 +$this +-> +Çme¥aû + = 'doctrine'; + +43 +$this +-> +Çme + = 'dql'; + +44 +$this +-> +br›fDesütiÚ + = 'Execute‡ DQL query‡nd viewhe„esults'; + +46 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +47 +The + [ +doùrše +: +dql +| +INFO +] +sk + +execu‹s + +a + +DQL + +qu”y + +ªd + +di¥Ïys + +the + +fÜm©‹d + + +48 +»suÉs +: + +50 [./ +symfÚy + +doùrše +: +dql + "FROM U£r"| +INFO +] + +52 +You + +ÿn + +show + +the + +SQL + +th© + +would + +be + +execu‹d + +by + +usšg +h[--show- +sql +| +COMMENT +] +ÝtiÚ +: + +54 [./ +symfÚy + +doùrše +: +dql + -- +show +- +sql + "FROM U£r"| +INFO +] + +56 +Provide + +qu”y + +·¿m‘”s + +as + +add™iÚ® + +¬gum’ts +: + +58 [./ +symfÚy + +doùrše +: +dql + "FROM U£¸WHEREƒmaž LIKE ?" "%symfÚy-´ojeù.com"| +INFO +] + +59 +EOF +; + +65 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +67 +$d©aba£Mªag” + = +Ãw + + `sfD©aba£Mªag” +( +$this +-> +cÚfigu¿tiÚ +); + +69 +$dql + = +$¬gum’ts +['dql_query']; + +71 +$q + = +Doùrše_Qu”y +:: + `ü—‹ +() + +72 -> + `·r£DqlQu”y +( +$dql +); + +74 +$this +-> + `logSeùiÚ +('doctrine', 'executing dql query'); + +75 +$this +-> + `log +( + `¥rštf +('DQL: %s', +$dql +)); + +77 ià( +$ÝtiÚs +['show-sql']) + +79 +$this +-> + `log +( + `¥rštf +('SQL: %s', +$q +-> + `g‘SqlQu”y +( +$¬gum’ts +['parameter']))); + +82 +$couÁ + = +$q +-> + `couÁ +( +$¬gum’ts +['parameter']); + +84 ià( +$couÁ +) + +86 ià(! +$ÝtiÚs +['table']) + +88 +$»suÉs + = +$q +-> + `ãtchA¼ay +( +$¬gum’ts +['parameter']); + +90 +$this +-> + `log +( + `¬¿y +( + +91 + `¥rštf +('found % »suÉs', + `numb”_fÜm© +( +$couÁ +)), + +92 +sfYaml +:: + `dump +( +$»suÉs +, 4), + +97 +$»suÉs + = +$q +-> + `execu‹ +( +$¬gum’ts +['·¿m‘”'], +Doùrše_CÜe +:: +HYDRATE_SCALAR +); + +99 +$h—d”s + = + `¬¿y +(); + +102 + `fܗch + ( +$»suÉs + +as + +$»suÉ +) + +104 + `fܗch + ( +$»suÉ + +as + +$f›ld + => +$v®ue +) + +106 ià(! + `is£t +( +$h—d”s +[ +$f›ld +])) + +108 +$h—d”s +[ +$f›ld +] = 0; + +111 +$h—d”s +[ +$f›ld +] = + `max +($h—d”s[$f›ld], + `¡¾’ +( +$this +-> + `»nd”V®ue +( +$v®ue +))); + +116 +$hdr + = '|'; + +117 +$div + = '+'; + +119 + `fܗch + ( +$h—d”s + +as + +$f›ld + => & +$Ëngth +) + +121 ià( +$Ëngth + < + `¡¾’ +( +$f›ld +)) + +123 +$Ëngth + = + `¡¾’ +( +$f›ld +); + +126 +$hdr + .ð' '. + `¡r_·d +( +$f›ld +, +$Ëngth +).' |'; + +127 +$div + .ð + `¡r_»³© +('-', +$Ëngth + + 2).'+'; + +130 +$this +-> + `log +( + `¬¿y +( +$div +, +$hdr +, $div)); + +133 + `fܗch + ( +$»suÉs + +as + +$»suÉ +) + +135 +$lše + = '|'; + +136 + `fܗch + ( +$»suÉ + +as + +$f›ld + => +$v®ue +) + +138 +$lše + .ð' '. + `¡r_·d +( +$this +-> + `»nd”V®ue +( +$v®ue +), +$h—d”s +[ +$f›ld +]).' |'; + +140 +$this +-> + `log +( +$lše +); + +143 +$this +-> + `log +( +$div +); + +146 ià( +$´ofž” + = +$q +-> + `g‘CÚÃùiÚ +()-> + `g‘Li¡’” +()-> + `g‘ +('symfony_profiler')) + +148 +$ev’ts + = +$´ofž” +-> + `g‘Qu”yExecutiÚEv’ts +(); + +149 +$ev’t + = + `¬¿y_pÝ +( +$ev’ts +); + +150 +$this +-> + `log +( + `¥rštf +('% »suÉ (% £c)', + `numb”_fÜm© +( +$couÁ +),‚umb”_fÜm©( +$ev’t +-> + `g‘EÏp£dSecs +(), 2))); + +154 +$this +-> + `log +( + `¥rštf +('% »suÉs', + `numb”_fÜm© +( +$couÁ +))); + +157 +$this +-> + `log +(''); + +162 +$this +-> + `logSeùiÚ +('doctrine', 'no„esults found'); + +164 + } +} + +173 +´Ùeùed + +funùiÚ + + $»nd”V®ue +( +$v®ue +) + +175  +nuÎ + ==ð +$v®ue + ? 'NULL' : $value; + +176 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineDropDbTask.class.php + +1 + `addArgum’ts +( + `¬¿y +( + +31 +Ãw + + `sfCommªdArgum’t +('d©aba£', +sfCommªdArgum’t +:: +OPTIONAL + | sfCommªdArgum’t:: +IS_ARRAY +, 'A specific database'), + +34 +$this +-> + `addO±iÚs +( + `¬¿y +( + +35 +Ãw + + `sfCommªdO±iÚ +('­¶iÿtiÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL +, 'Th­¶iÿtiڂame', +Œue +), + +36 +Ãw + + `sfCommªdO±iÚ +('’v', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Theƒnvironment', 'dev'), + +37 +Ãw + + `sfCommªdO±iÚ +('no-cÚfœm©iÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Whethero force dropping ofhe database') + +40 +$this +-> +Çme¥aû + = 'doctrine'; + +41 +$this +-> +Çme + = 'drop-db'; + +42 +$this +-> +br›fDesütiÚ + = 'Drops database for current model'; + +44 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +45 +The + [ +doùrše +: +drÝ +- +db +| +INFO +] +sk + +drÝs + +Úe + +Ü + +mÜe + +d©aba£s + +ba£d + +Ú + + +46 +cÚfigu¿tiÚ + +š + [ +cÚfig +/ +d©aba£s +. +yml +| +COMMENT +]: + +48 [./ +symfÚy + +doùrše +: +drÝ +- +db +| +INFO +] + +50 +You + +wžl + +be + +´om±ed +  +cÚfœm©iÚ + +befÜe + +ªy + +d©aba£s + +¬e + +drݳd + +uÆess + + +51 +you + +´ovide + +the + [-- +no +- +cÚfœm©iÚ +| +COMMENT +] +ÝtiÚ +: + +53 [./ +symfÚy + +doùrše +: +drÝ +- +db + -- +no +- +cÚfœm©iÚ +| +INFO +] + +55 +You + +ÿn + +¥ecify + +wh© + +d©aba£s + +to + +drÝ + +by + +´ovidšg + +theœ + +Çmes +: + +57 [./ +symfÚy + +doùrše +: +drÝ +- +db + +¦ave1 + +¦ave2 +| +INFO +] + +58 +EOF +; + +64 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +66 +$d©aba£Mªag” + = +Ãw + + `sfD©aba£Mªag” +( +$this +-> +cÚfigu¿tiÚ +); + +67 +$d©aba£s + = +$this +-> + `g‘DoùršeD©aba£s +( +$d©aba£Mªag” +, + `couÁ +( +$¬gum’ts +['d©aba£']è? $¬gum’ts['d©aba£'] : +nuÎ +); + +69 +$’vœÚm’t + = +$this +-> +cÚfigu¿tiÚ + +š¡ªûof + +sfAµliÿtiÚCÚfigu¿tiÚ + ? $this->cÚfigu¿tiÚ-> + `g‘EnvœÚm’t +() : 'all'; + +72 ! +$ÝtiÚs +['no-confirmation'] + +74 ! +$this +-> + `askCÚfœm©iÚ +( + `¬¿y_m”ge +( + +75 + `¬¿y +( + `¥rštf +('Thi commªd wžÈ»mov®Èd©¨šhfÞlowšg "%s" cÚÃùiÚ(s):', +$’vœÚm’t +), ''), + +76 + `¬¿y_m­ +( + `ü—‹_funùiÚ +('$v', '»tuº \' - \'.$v;'), + `¬¿y_keys +( +$d©aba£s +)), + +77 + `¬¿y +('', 'Are you sure you wanto…roceed? (y/N)') + +78 ), 'QUESTION_LARGE', +çl£ +) + +81 +$this +-> + `logSeùiÚ +('doctrine', 'task‡borted'); + +86 + `fܗch + ( +$d©aba£s + +as + +$Çme + => +$d©aba£ +) + +88 +$this +-> + `logSeùiÚ +('doùrše', + `¥rštf +('DrÝpšg "%s" d©aba£', +$Çme +)); + +89 +Œy + + +91 +$d©aba£ +-> + `g‘DoùršeCÚÃùiÚ +()-> + `drÝD©aba£ +(); + +93 + `ÿtch + ( +Exû±iÚ + +$e +) + +95 +$this +-> + `logSeùiÚ +('doùrše', +$e +-> + `g‘Mes§ge +(), +nuÎ +, 'ERROR'); + +98 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineGenerateAdminTask.class.php + +1 + `addArgum’ts +( + `¬¿y +( + +29 +Ãw + + `sfCommªdArgum’t +('­¶iÿtiÚ', +sfCommªdArgum’t +:: +REQUIRED +, 'The‡pplication‚ame'), + +30 +Ãw + + `sfCommªdArgum’t +('rou‹_Ü_mod–', +sfCommªdArgum’t +:: +REQUIRED +, 'The„oute‚ame orhe model class'), + +33 +$this +-> + `addO±iÚs +( + `¬¿y +( + +34 +Ãw + + `sfCommªdO±iÚ +('moduË', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The module‚ame',‚ull), + +35 +Ãw + + `sfCommªdO±iÚ +('theme', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Theheme‚ame', 'admin'), + +36 +Ãw + + `sfCommªdO±iÚ +('sšguÏr', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The singular‚ame',‚ull), + +37 +Ãw + + `sfCommªdO±iÚ +('¶u¿l', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The…lural‚ame',‚ull), + +38 +Ãw + + `sfCommªdO±iÚ +('’v', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Theƒnvironment', 'dev'), + +39 +Ãw + + `sfCommªdO±iÚ +('aùiÚs-ba£-þass', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The base class forhe‡ctions', 'sfActions'), + +42 +$this +-> +Çme¥aû + = 'doctrine'; + +43 +$this +-> +Çme + = 'generate-admin'; + +44 +$this +-> +br›fDesütiÚ + = 'Generates‡ Doctrine‡dmin module'; + +46 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +47 +The + [ +doùrše +: +g’”©e +- +admš +| +INFO +] +sk + +g’”©es + +a + +Doùrše +‡dmš +moduË +: + +49 [./ +symfÚy + +doùrše +: +g’”©e +- +admš + +äڋnd + +A¹iþe +| +INFO +] + +51 +The + +sk + +ü—‹s + +a + +moduË + +š + +the + [% +äڋnd +%| +COMMENT +] +­¶iÿtiÚ + the + +52 [% +A¹iþe +%| +COMMENT +] +mod– +. + +54 +The + +sk + +ü—‹s + +a + +rou‹ +  +you + +š + +the + +­¶iÿtiÚ + [ +routšg +. +yml +| +COMMENT +]. + +56 +You + +ÿn + +®so + +g’”©e + +a + +Doùrše + +admš + +moduË + +by + +·ssšg +‡ +rou‹ + +Çme +: + +58 [./ +symfÚy + +doùrše +: +g’”©e +- +admš + +äڋnd + +¬tiþe +| +INFO +] + +60 +The + +sk + +ü—‹s + +a + +moduË + +š + +the + [% +äڋnd +%| +COMMENT +] +­¶iÿtiÚ + the + +61 [% +¬tiþe +%| +COMMENT +] +rou‹ + +defš™iÚ + +found + +š + [ +routšg +. +yml +|COMMENT]. + +63 +FÜ + +the + +fž‹rs + +ªd + +b©ch + +aùiÚs + +to + +wÜk + +´Ý”ly +, +you + +Ãed +Ø +add + + +64 +the + [ +w™h_wždÿrd_rou‹s +| +COMMENT +] +ÝtiÚ + +to +h +rou‹ +: + +66 +¬tiþe +: + +67 +þass +: +sfDoùršeRou‹CÞËùiÚ + + +68 +ÝtiÚs +: + +69 +mod– +: +A¹iþe + + +70 +w™h_wždÿrd_rou‹s +: +Œue + + +71 +EOF +; + +77 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +80 ià( +çl£ + !=ð( +$rou‹ + = +$this +-> + `g‘Rou‹FromName +( +$¬gum’ts +['route_or_model']))) + +82 +$¬gum’ts +['rou‹'] = +$rou‹ +; + +83 +$¬gum’ts +['route_name'] = $arguments['route_or_model']; + +85  +$this +-> + `g’”©eFÜRou‹ +( +$¬gum’ts +, +$ÝtiÚs +); + +89 ià(! + `þass_exi¡s +( +$¬gum’ts +['route_or_model'])) + +91 +throw + +Ãw + + `sfCommªdExû±iÚ +( + `¥rštf +('Throu‹ "%s" dÛ nكxi¡‡ndh”i nØ"%s" cÏss.', +$¬gum’ts +['route_or_model'], $arguments['route_or_model'])); + +94 +$r + = +Ãw + + `ReæeùiÚCÏss +( +$¬gum’ts +['route_or_model']); + +95 ià(! +$r +-> + `isSubþassOf +('Doctrine_Record')) + +97 +throw + +Ãw + + `sfCommªdExû±iÚ +( + `¥rštf +('"%s" i nه Doùršþass.', +$¬gum’ts +['route_or_model'])); + +101 +$mod– + = +$¬gum’ts +['route_or_model']; + +102 +$Çme + = + `¡¹Þow” +( + `´eg_»¶aû +( + `¬¿y +('/([A-Z]+)([A-Z][a-z])/', '/([a-z\d])([A-Z])/'), '\\1_\\2', +$mod– +)); + +104 ià( + `is£t +( +$ÝtiÚs +['module'])) + +106 +$rou‹ + = +$this +-> + `g‘Rou‹FromName +( +$Çme +); + +107 ià( +$rou‹ + && ! +$this +-> + `checkRou‹ +($rou‹, +$mod– +, +$ÝtiÚs +['module'])) + +109 +$Çme + .ð'_'. +$ÝtiÚs +['module']; + +113 +$routšg + = +sfCÚfig +:: + `g‘ +('sf_app_config_dir').'/routing.yml'; + +114 +$cڋÁ + = + `fže_g‘_cڋÁs +( +$routšg +); + +115 +$rou‹sA¼ay + = +sfYaml +:: + `lßd +( +$cڋÁ +); + +117 ià(! + `is£t +( +$rou‹sA¼ay +[ +$Çme +])) + +119 +$d©aba£Mªag” + = +Ãw + + `sfD©aba£Mªag” +( +$this +-> +cÚfigu¿tiÚ +); + +120 +$´im¬yKey + = +Doùrše_CÜe +:: + `g‘TabË +( +$mod– +)-> + `g‘Id’tif›r +(); + +121 +$moduË + = +$ÝtiÚs +['moduË'] ? $ÝtiÚs['moduË'] : +$Çme +; + +122 +$cڋÁ + = + `¥rštf +(<<< +EOF + + +123 % +s +: + +124 +þass +: +sfDoùršeRou‹CÞËùiÚ + + +125 +ÝtiÚs +: + +126 +mod– +: % +s + + +127 +moduË +: % +s + + +128 +´efix_·th +: /% +s + + +129 +cÞumn +: % +s + + +130 +w™h_wždÿrd_rou‹s +: +Œue + + +133 +EOF + + +134 , +$Çme +, +$mod– +, +$moduË +, + `is£t +( +$ÝtiÚs +['¶u¿l']è? $ÝtiÚs['¶u¿l'] : $moduË, +$´im¬yKey +). +$cڋÁ +; + +136 +$this +-> + `logSeùiÚ +('fže+', +$routšg +); + +138 ià( +çl£ + ==ð + `fže_put_cڋÁs +( +$routšg +, +$cڋÁ +)) + +140 +throw + +Ãw + + `sfCommªdExû±iÚ +( + `¥rštf +('UÇbˁØwr™tØfže, %s.', +$routšg +)); + +144 +$¬gum’ts +['rou‹'] = +$this +-> + `g‘Rou‹FromName +( +$Çme +); + +145 +$¬gum’ts +['rou‹_Çme'] = +$Çme +; + +147  +$this +-> + `g’”©eFÜRou‹ +( +$¬gum’ts +, +$ÝtiÚs +); + +148 + } +} + +150 +´Ùeùed + +funùiÚ + + $g’”©eFÜRou‹ +( +$¬gum’ts +, +$ÝtiÚs +) + +152 +$rou‹O±iÚs + = +$¬gum’ts +['rou‹']-> + `g‘O±iÚs +(); + +154 ià(! +$¬gum’ts +['rou‹'] +š¡ªûof + +sfDoùršeRou‹CÞËùiÚ +) + +156 +throw + +Ãw + + `sfCommªdExû±iÚ +( + `¥rštf +('Throu‹ "%s" i nه DoùršcÞËùiڄou‹.', +$¬gum’ts +['route_name'])); + +159 +$moduË + = +$rou‹O±iÚs +['module']; + +160 +$mod– + = +$rou‹O±iÚs +['model']; + +163 +$sk + = +Ãw + + `sfDoùršeG’”©eModuËTask +( +$this +-> +di¥©ch” +, $this-> +fÜm©‹r +); + +164 +$sk +-> + `£tCommªdAµliÿtiÚ +( +$this +-> +commªdAµliÿtiÚ +); + +165 +$sk +-> + `£tCÚfigu¿tiÚ +( +$this +-> +cÚfigu¿tiÚ +); + +167 +$this +-> + `logSeùiÚ +('­p', + `¥rštf +('G’”©šg‡dmš moduË "%s" fÜ mod– "%s"', +$moduË +, +$mod– +)); + +169  +$sk +-> + `run +( + `¬¿y +( +$¬gum’ts +['­¶iÿtiÚ'], +$moduË +, +$mod– +),‡rray( + +170 'theme' => +$ÝtiÚs +['theme'], + +171 'rou‹-´efix' => +$rou‹O±iÚs +['name'], + +172 'w™h-doùrše-rou‹' => +Œue +, + +173 'g’”©e-š-ÿche' => +Œue +, + +174 'nÚ-v”bo£-‹m¶©es' => +Œue +, + +175 'sšguÏr' => +$ÝtiÚs +['singular'], + +176 '¶u¿l' => +$ÝtiÚs +['plural'], + +177 'aùiÚs-ba£-þass' => +$ÝtiÚs +['actions-base-class'], + +179 + } +} + +181 +´Ùeùed + +funùiÚ + + $g‘Rou‹FromName +( +$Çme +) + +183 +$cÚfig + = +Ãw + + `sfRoutšgCÚfigHªdËr +(); + +184 +$rou‹s + = +$cÚfig +-> + `ev®u©e +( +$this +-> +cÚfigu¿tiÚ +-> + `g‘CÚfigP©hs +('config/routing.yml')); + +186 ià( + `is£t +( +$rou‹s +[ +$Çme +])) + +188  +$rou‹s +[ +$Çme +]; + +191  +çl£ +; + +192 + } +} + +203 +´Ùeùed + +funùiÚ + + $checkRou‹ +( +$rou‹ +, +$mod– +, +$moduË +) + +205 ià( +$rou‹ + +š¡ªûof + +sfDoùršeRou‹CÞËùiÚ +) + +207 +$ÝtiÚs + = +$rou‹ +-> + `g‘O±iÚs +(); + +208  +$mod– + =ð +$ÝtiÚs +['mod–'] && +$moduË + == $options['module']; + +211  +çl£ +; + +212 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineGenerateMigrationTask.class.php + +1 + `addArgum’ts +( + `¬¿y +( + +31 +Ãw + + `sfCommªdArgum’t +('Çme', +sfCommªdArgum’t +:: +REQUIRED +, 'The‚ame ofhe migration'), + +34 +$this +-> + `addO±iÚs +( + `¬¿y +( + +35 +Ãw + + `sfCommªdO±iÚ +('­¶iÿtiÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL +, 'Th­¶iÿtiڂame', +Œue +), + +36 +Ãw + + `sfCommªdO±iÚ +('’v', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Theƒnvironment', 'dev'), + +37 +Ãw + + `sfCommªdO±iÚ +('ed™Ü-cmd', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Open script withhis command upon creation'), + +40 +$this +-> +Çme¥aû + = 'doctrine'; + +41 +$this +-> +Çme + = 'generate-migration'; + +42 +$this +-> +br›fDesütiÚ + = 'Generate migration class'; + +44 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +45 +The + [ +doùrše +: +g’”©e +- +mig¿tiÚ +| +INFO +] +sk + +g’”©es + mig¿tiÚ +‹m¶©e + + +47 [./ +symfÚy + +doùrše +: +g’”©e +- +mig¿tiÚ + +AddU£rEmažCÞumn +| +INFO +] + +49 +You + +ÿn + +´ovide + +ª + [-- +ed™Ü +- +cmd +| +COMMENT +] +ÝtiÚ + +to + +ݒ + +the + +Ãw + +mig¿tiÚ + +þass + +š + +your + + +50 +ed™Ü + +of + +choiû + +upÚ + +ü—tiÚ +: + +52 [./ +symfÚy + +doùrše +: +g’”©e +- +mig¿tiÚ + +AddU£rEmažCÞumn + -- +ed™Ü +- +cmd += +m©e +| +INFO +] + +53 +EOF +; + +59 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +61 +$d©aba£Mªag” + = +Ãw + + `sfD©aba£Mªag” +( +$this +-> +cÚfigu¿tiÚ +); + +62 +$cÚfig + = +$this +-> + `g‘CliCÚfig +(); + +64 +$this +-> + `logSeùiÚ +('doùrše', + `¥rštf +('g’”©šg mig¿tiÚ cÏs Çmed "%s"', +$¬gum’ts +['name'])); + +66 ià(! + `is_dœ +( +$cÚfig +['migrations_path'])) + +68 +$this +-> + `g‘Fžesy¡em +()-> + `mkdœs +( +$cÚfig +['migrations_path']); + +71 +$this +-> + `ÿÎDoùršeCli +('g’”©e-mig¿tiÚ', + `¬¿y +('Çme' => +$¬gum’ts +['name'])); + +73 +$fšd” + = +sfFšd” +:: + `ty³ +('fže')-> + `sÜt_by_Çme +()-> + `Çme +('*.php'); + +74 ià( +$fžes + = +$fšd” +-> + `š +( +$cÚfig +['migrations_path'])) + +76 +$fže + = + `¬¿y_pÝ +( +$fžes +); + +78 +$cڋÁs + = + `fže_g‘_cڋÁs +( +$fže +); + +79 +$cڋÁs + = + `¡¹r +( +sfToÞk™ +:: + `¡rComm’ts +($cڋÁs), + `¬¿y +( + +84 + `fže_put_cڋÁs +( +$fže +, +$cڋÁs +); + +86 ià( + `is£t +( +$ÝtiÚs +['editor-cmd'])) + +88 +$this +-> + `g‘Fžesy¡em +()-> + `execu‹ +( +$ÝtiÚs +['ed™Ü-cmd'].' '. + `esÿ³sh–Ïrg +( +$fže +)); + +91 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineGenerateMigrationsDbTask.class.php + +1 + `addO±iÚs +( + `¬¿y +( + +31 +Ãw + + `sfCommªdO±iÚ +('­¶iÿtiÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL +, 'Th­¶iÿtiڂame', +Œue +), + +32 +Ãw + + `sfCommªdO±iÚ +('’v', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Theƒnvironment', 'dev'), + +35 +$this +-> +Çme¥aû + = 'doctrine'; + +36 +$this +-> +Çme + = 'generate-migrations-db'; + +37 +$this +-> +br›fDesütiÚ + = 'Generate migration classes fromƒxisting database connections'; + +39 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +40 +The + [ +doùrše +: +g’”©e +- +mig¿tiÚs +- +db +| +INFO +] +sk + +g’”©es + +mig¿tiÚ + +þas£s + +äom + + +41 +exi¡šg + +d©aba£ + +cÚÃùiÚs +: + +43 [./ +symfÚy + +doùrše +: +g’”©e +- +mig¿tiÚs +- +db +| +INFO +] + +44 +EOF +; + +50 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +52 +$d©aba£Mªag” + = +Ãw + + `sfD©aba£Mªag” +( +$this +-> +cÚfigu¿tiÚ +); + +53 +$cÚfig + = +$this +-> + `g‘CliCÚfig +(); + +55 +$this +-> + `logSeùiÚ +('doctrine', 'generating migration classes from database'); + +57 ià(! + `is_dœ +( +$cÚfig +['migrations_path'])) + +59 +$this +-> + `g‘Fžesy¡em +()-> + `mkdœs +( +$cÚfig +['migrations_path']); + +62 +$this +-> + `ÿÎDoùršeCli +('g’”©e-mig¿tiÚs-db', + `¬¿y +( + +63 'yaml_schema_·th' => +$this +-> + `´•¬eSchemaFže +( +$cÚfig +['yaml_schema_path']), + +65 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineGenerateMigrationsDiffTask.class.php + +1 + `addO±iÚs +( + `¬¿y +( + +31 +Ãw + + `sfCommªdO±iÚ +('­¶iÿtiÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL +, 'Th­¶iÿtiڂame', +Œue +), + +32 +Ãw + + `sfCommªdO±iÚ +('’v', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Theƒnvironment', 'dev'), + +35 +$this +-> +Çme¥aû + = 'doctrine'; + +36 +$this +-> +Çme + = 'generate-migrations-diff'; + +37 +$this +-> +br›fDesütiÚ + = 'Generate migration classes by…roducing‡ diff between your old‡nd‚ew schema.'; + +39 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +40 +The + [ +doùrše +: +g’”©e +- +mig¿tiÚs +- +diff +| +INFO +] +sk + +g’”©es + +mig¿tiÚ + +þas£s + +by + + +41 +´oducšg + +a + +diff + +b‘w“n + +your + +Þd + +ªd + +Ãw + +schema +. + +43 [./ +symfÚy + +doùrše +: +g’”©e +- +mig¿tiÚs +- +diff +| +INFO +] + +44 +EOF +; + +50 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +52 +$d©aba£Mªag” + = +Ãw + + `sfD©aba£Mªag” +( +$this +-> +cÚfigu¿tiÚ +); + +53 +$cÚfig + = +$this +-> + `g‘CliCÚfig +(); + +55 +$this +-> + `logSeùiÚ +('doctrine', 'generating migration diff'); + +57 ià(! + `is_dœ +( +$cÚfig +['migrations_path'])) + +59 +$this +-> + `g‘Fžesy¡em +()-> + `mkdœs +( +$cÚfig +['migrations_path']); + +62 + `¥l_autÞßd_»gi¡” +( + `¬¿y +('Doctrine_Core', 'modelsAutoload')); + +64 +$this +-> + `ÿÎDoùršeCli +('g’”©e-mig¿tiÚs-diff', + `¬¿y +( + +65 'yaml_schema_·th' => +$this +-> + `´•¬eSchemaFže +( +$cÚfig +['yaml_schema_path']), + +67 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineGenerateMigrationsModelsTask.class.php + +1 + `addO±iÚs +( + `¬¿y +( + +31 +Ãw + + `sfCommªdO±iÚ +('­¶iÿtiÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL +, 'Th­¶iÿtiڂame', +Œue +), + +32 +Ãw + + `sfCommªdO±iÚ +('’v', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Theƒnvironment', 'dev'), + +35 +$this +-> +Çme¥aû + = 'doctrine'; + +36 +$this +-> +Çme + = 'generate-migrations-models'; + +37 +$this +-> +br›fDesütiÚ + = 'Generate migration classes from‡nƒxisting set of models'; + +39 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +40 +The + [ +doùrše +: +g’”©e +- +mig¿tiÚs +- +mod–s +| +INFO +] +sk + +g’”©es + +mig¿tiÚ + +þas£s + + +41 +äom + +ª + +exi¡šg + +£t + +of + +mod–s +: + +43 [./ +symfÚy + +doùrše +: +g’”©e +- +mig¿tiÚs +- +mod–s +| +INFO +] + +44 +EOF +; + +50 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +52 +$d©aba£Mªag” + = +Ãw + + `sfD©aba£Mªag” +( +$this +-> +cÚfigu¿tiÚ +); + +53 +$cÚfig + = +$this +-> + `g‘CliCÚfig +(); + +55 +$this +-> + `logSeùiÚ +('doctrine', 'generating migration classes from models'); + +57 ià(! + `is_dœ +( +$cÚfig +['migrations_path'])) + +59 +$this +-> + `g‘Fžesy¡em +()-> + `mkdœs +( +$cÚfig +['migrations_path']); + +62 +$this +-> + `ÿÎDoùršeCli +('generate-migrations-models'); + +63 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineGenerateModuleForRouteTask.class.php + +1 + `addArgum’ts +( + `¬¿y +( + +29 +Ãw + + `sfCommªdArgum’t +('­¶iÿtiÚ', +sfCommªdArgum’t +:: +REQUIRED +, 'The‡pplication‚ame'), + +30 +Ãw + + `sfCommªdArgum’t +('rou‹', +sfCommªdArgum’t +:: +REQUIRED +, 'The„oute‚ame'), + +33 +$this +-> + `addO±iÚs +( + `¬¿y +( + +34 +Ãw + + `sfCommªdO±iÚ +('theme', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Theheme‚ame', 'default'), + +35 +Ãw + + `sfCommªdO±iÚ +('nÚ-v”bo£-‹m¶©es', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Generate‚on verboseemplates'), + +36 +Ãw + + `sfCommªdO±iÚ +('sšguÏr', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The singular‚ame',‚ull), + +37 +Ãw + + `sfCommªdO±iÚ +('¶u¿l', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The…lural‚ame',‚ull), + +38 +Ãw + + `sfCommªdO±iÚ +('’v', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Theƒnvironment', 'dev'), + +39 +Ãw + + `sfCommªdO±iÚ +('aùiÚs-ba£-þass', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The base class forhe‡ctions', 'sfActions'), + +42 +$this +-> +Çme¥aû + = 'doctrine'; + +43 +$this +-> +Çme + = 'generate-module-for-route'; + +44 +$this +-> +br›fDesütiÚ + = 'Generates‡ Doctrine module for‡„oute definition'; + +46 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +47 +The + [ +doùrše +: +g’”©e +- +moduË +-- +rou‹ +| +INFO +] +sk + +g’”©es + +a + +Doùrše + moduË ¨rou‹ +defš™iÚ +: + +49 [./ +symfÚy + +doùrše +: +g’”©e +- +moduË +-- +rou‹ + +äڋnd + +¬tiþe +| +INFO +] + +51 +The + +sk + +ü—‹s + +a + +moduË + +š + +the + [% +äڋnd +%| +COMMENT +] +­¶iÿtiÚ + the + +52 [% +¬tiþe +%| +COMMENT +] +rou‹ + +defš™iÚ + +found + +š + [ +routšg +. +yml +|COMMENT]. + +53 +EOF +; + +59 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +62 +$cÚfig + = +Ãw + + `sfRoutšgCÚfigHªdËr +(); + +63 +$rou‹s + = +$cÚfig +-> + `ev®u©e +( +$this +-> +cÚfigu¿tiÚ +-> + `g‘CÚfigP©hs +('config/routing.yml')); + +65 ià(! + `is£t +( +$rou‹s +[ +$¬gum’ts +['route']])) + +67 +throw + +Ãw + + `sfCommªdExû±iÚ +( + `¥rštf +('Throu‹ "%s" dÛ nكxi¡.', +$¬gum’ts +['route'])); + +70 +$rou‹O±iÚs + = +$rou‹s +[ +$¬gum’ts +['rou‹']]-> + `g‘O±iÚs +(); + +72 ià(! +$rou‹s +[ +$¬gum’ts +['rou‹']] +š¡ªûof + +sfDoùršeRou‹CÞËùiÚ +) + +74 +throw + +Ãw + + `sfCommªdExû±iÚ +( + `¥rštf +('Throu‹ "%s" i nه DoùršcÞËùiڄou‹.', +$¬gum’ts +['route'])); + +77 +$moduË + = +$rou‹O±iÚs +['module']; + +78 +$mod– + = +$rou‹O±iÚs +['model']; + +81 +$sk + = +Ãw + + `sfDoùršeG’”©eModuËTask +( +$this +-> +di¥©ch” +, $this-> +fÜm©‹r +); + +82 +$sk +-> + `£tCommªdAµliÿtiÚ +( +$this +-> +commªdAµliÿtiÚ +); + +83 +$sk +-> + `£tCÚfigu¿tiÚ +( +$this +-> +cÚfigu¿tiÚ +); + +85 +$this +-> + `logSeùiÚ +('­p', + `¥rštf +('G’”©šg moduË "%s" fÜ mod– "%s"', +$moduË +, +$mod– +)); + +87  +$sk +-> + `run +( + `¬¿y +( +$¬gum’ts +['­¶iÿtiÚ'], +$moduË +, +$mod– +),‡rray( + +88 'theme' => +$ÝtiÚs +['theme'], + +89 'rou‹-´efix' => +$rou‹O±iÚs +['name'], + +90 'w™h-doùrše-rou‹' => +Œue +, + +91 'w™h-show' => +$rou‹O±iÚs +['with_show'], + +92 'nÚ-v”bo£-‹m¶©es' => +$ÝtiÚs +['non-verbose-templates'], + +93 'sšguÏr' => +$ÝtiÚs +['singular'], + +94 '¶u¿l' => +$ÝtiÚs +['plural'], + +95 'aùiÚs-ba£-þass' => +$ÝtiÚs +['actions-base-class'], + +97 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineGenerateModuleTask.class.php + +1 + `addArgum’ts +( + `¬¿y +( + +29 +Ãw + + `sfCommªdArgum’t +('­¶iÿtiÚ', +sfCommªdArgum’t +:: +REQUIRED +, 'The‡pplication‚ame'), + +30 +Ãw + + `sfCommªdArgum’t +('moduË', +sfCommªdArgum’t +:: +REQUIRED +, 'The module‚ame'), + +31 +Ãw + + `sfCommªdArgum’t +('mod–', +sfCommªdArgum’t +:: +REQUIRED +, 'The model class‚ame'), + +34 +$this +-> + `addO±iÚs +( + `¬¿y +( + +35 +Ãw + + `sfCommªdO±iÚ +('theme', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Theheme‚ame', 'default'), + +36 +Ãw + + `sfCommªdO±iÚ +('g’”©e-š-ÿche', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Generatehe module in cache'), + +37 +Ãw + + `sfCommªdO±iÚ +('nÚ-v”bo£-‹m¶©es', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Generate‚on verboseemplates'), + +38 +Ãw + + `sfCommªdO±iÚ +('w™h-show', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Generate‡ show method'), + +39 +Ãw + + `sfCommªdO±iÚ +('sšguÏr', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The singular‚ame',‚ull), + +40 +Ãw + + `sfCommªdO±iÚ +('¶u¿l', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The…lural‚ame',‚ull), + +41 +Ãw + + `sfCommªdO±iÚ +('rou‹-´efix', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The„oute…refix',‚ull), + +42 +Ãw + + `sfCommªdO±iÚ +('w™h-doùrše-rou‹', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Whether you will use‡ Doctrine„oute'), + +43 +Ãw + + `sfCommªdO±iÚ +('’v', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Theƒnvironment', 'dev'), + +44 +Ãw + + `sfCommªdO±iÚ +('aùiÚs-ba£-þass', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The base class forhe‡ctions', 'sfActions'), + +47 +$this +-> +Çme¥aû + = 'doctrine'; + +48 +$this +-> +Çme + = 'generate-module'; + +49 +$this +-> +br›fDesütiÚ + = 'Generates‡ Doctrine module'; + +51 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +52 +The + [ +doùrše +: +g’”©e +- +moduË +| +INFO +] +sk + +g’”©es + +a + +Doùrše + module: + +54 [./ +symfÚy + +doùrše +: +g’”©e +- +moduË + +äڋnd + +¬tiþe + +A¹iþe +| +INFO +] + +56 +The + +sk + +ü—‹s + +a + [% +moduË +%| +COMMENT +] moduË +š + +the + [% +­¶iÿtiÚ +%|COMMENT]‡pplication + +57  +the + +mod– + +þass + [%mod–%| +COMMENT +]. + +59 +You + +ÿn + +®so + +ü—‹ + +ª + +em±y + +moduË + +th© + +šh”™s + +™s + +aùiÚs + +ªd + +‹m¶©es + +äom + + +60 +a + +ruÁime + +g’”©ed + +moduË + +š + [% +sf_­p_ÿche_dœ +%/ +moduËs +/auto%moduË%| +COMMENT +] +by + + +61 +usšg + +the + [-- +g’”©e +- +š +- +ÿche +| +COMMENT +] +ÝtiÚ +: + +63 [./ +symfÚy + +doùrše +: +g’”©e +- +moduË + --g’”©e- +š +- +ÿche + +äڋnd + +¬tiþe + +A¹iþe +| +INFO +] + +65 +The + +g’”©Ü + +ÿn + +u£ + +a + +cu¡omized + +theme + +by + +usšg + +the + [--theme| +COMMENT +] +ÝtiÚ +: + +67 [./ +symfÚy + +doùrše +: +g’”©e +- +moduË + -- +theme +="cu¡om" +äڋnd + +¬tiþe + +A¹iþe +| +INFO +] + +69 +This + +way +, +you + +ÿn + +ü—‹ + +your + +v”y + +own + +moduË + +g’”©Ü + +w™h + you¸owÀ +cÚv’tiÚs +. + +71 +You + +ÿn + +®so + +chªge + +the +  +aùiÚs + +ba£ + + `þass + ( +to + +sfAùiÚs +è +of + + +72 +the + +g’”©ed + +moduËs +: + +74 [./ +symfÚy + +doùrše +: +g’”©e +- +moduË + -- +aùiÚs +- +ba£ +- +þass +="ProjeùAùiÚs" +äڋnd + +¬tiþe + +A¹iþe +| +INFO +] + +75 +EOF +; + +81 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +83 +$d©aba£Mªag” + = +Ãw + + `sfD©aba£Mªag” +( +$this +-> +cÚfigu¿tiÚ +); + +85 +$´Ý”t›s + = + `·r£_ši_fže +( +sfCÚfig +:: + `g‘ +('sf_cÚfig_dœ').'/´Ý”t›s.ši', +Œue +); + +87 +$this +-> +cÚ¡ªts + = + `¬¿y +( + +88 'PROJECT_NAME' => + `is£t +( +$´Ý”t›s +['symfony']['name']) ? $properties['symfony']['name'] : 'symfony', + +89 'APP_NAME' => +$¬gum’ts +['application'], + +90 'MODULE_NAME' => +$¬gum’ts +['module'], + +91 'UC_MODULE_NAME' => + `ucfœ¡ +( +$¬gum’ts +['module']), + +92 'MODEL_CLASS' => +$¬gum’ts +['model'], + +93 'AUTHOR_NAME' => + `is£t +( +$´Ý”t›s +['symfony']['author']) ? $properties['symfony']['author'] : 'Your‚ame here', + +96 +$m‘hod + = +$ÝtiÚs +['generate-in-cache'] ? 'executeInit' : 'executeGenerate'; + +98 +$this +-> + `$m‘hod +( +$¬gum’ts +, +$ÝtiÚs +); + +99 + } +} + +101 +´Ùeùed + +funùiÚ + +execu‹G’”©e +( +$¬gum’ts + = +¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +104 +$tmpDœ + = +sfCÚfig +:: + `g‘ +('sf_ÿche_dœ'). +DIRECTORY_SEPARATOR +.'tmp'.DIRECTORY_SEPARATOR. + `md5 +( + `uniqid +( + `¿nd +(), +Œue +)); + +105 +$g’”©ÜMªag” + = +Ãw + + `sfG’”©ÜMªag” +( +$this +-> +cÚfigu¿tiÚ +, +$tmpDœ +); + +106 +$g’”©ÜMªag” +-> + `g’”©e +('sfDoùršeG’”©Ü', + `¬¿y +( + +107 'mod–_þass' => +$¬gum’ts +['model'], + +108 'moduËName' => +$¬gum’ts +['module'], + +109 'theme' => +$ÝtiÚs +['theme'], + +110 'nÚ_v”bo£_‹m¶©es' => +$ÝtiÚs +['non-verbose-templates'], + +111 'w™h_show' => +$ÝtiÚs +['with-show'], + +112 'sšguÏr' => +$ÝtiÚs +['sšguÏr'] ? $ÝtiÚs['sšguÏr'] : +sfInæeùÜ +:: + `und”scÜe +( +$¬gum’ts +['model']), + +113 '¶u¿l' => +$ÝtiÚs +['¶u¿l'] ? $ÝtiÚs['¶u¿l'] : +sfInæeùÜ +:: + `und”scÜe +( +$¬gum’ts +['model'].'s'), + +114 'rou‹_´efix' => +$ÝtiÚs +['route-prefix'], + +115 'w™h_doùrše_rou‹' => +$ÝtiÚs +['with-doctrine-route'], + +116 'aùiÚs_ba£_þass' => +$ÝtiÚs +['actions-base-class'], + +119 +$moduËDœ + = +sfCÚfig +:: + `g‘ +('sf_­p_moduË_dœ').'/'. +$¬gum’ts +['module']; + +122 +$this +-> + `g‘Fžesy¡em +()-> + `mœrÜ +( +$tmpDœ +. +DIRECTORY_SEPARATOR +.'auto'. + `ucfœ¡ +( +$¬gum’ts +['moduË']), +$moduËDœ +, +sfFšd” +:: + `ty³ +('any')); + +124 ià(! +$ÝtiÚs +['with-show']) + +126 +$this +-> + `g‘Fžesy¡em +()-> + `»move +( +$moduËDœ +.'/templates/showSuccess.php'); + +130 +$fšd” + = +sfFšd” +:: + `ty³ +('fže')-> + `Çme +('*.php'); + +131 +$this +-> + `g‘Fžesy¡em +()-> + `»¶aûTok’s +( +$fšd” +-> + `š +( +$moduËDœ +), '', '', + `¬¿y +('auto'. + `ucfœ¡ +( +$¬gum’ts +['module']) => $arguments['module'])); + +134 +$fšd” + = +sfFšd” +:: + `ty³ +('fže')-> + `Çme +('*.php', '*.yml'); + +135 +$this +-> + `g‘Fžesy¡em +()-> + `»¶aûTok’s +( +$fšd” +-> + `š +( +$moduËDœ +), '##', '##', $this-> +cÚ¡ªts +); + +138 +$this +-> + `g‘Fžesy¡em +()-> + `cÝy +( +sfCÚfig +:: + `g‘ +('sf_symfÚy_lib_dœ'). +DIRECTORY_SEPARATOR +.'sk'.DIRECTORY_SEPARATOR.'g’”©Ü'.DIRECTORY_SEPARATOR.'sk–‘Ú'.DIRECTORY_SEPARATOR.'moduË'.DIRECTORY_SEPARATOR.'‹¡'.DIRECTORY_SEPARATOR.'aùiÚsTe¡.php', sfCÚfig::g‘('sf_‹¡_dœ').DIRECTORY_SEPARATOR.'funùiÚ®'.DIRECTORY_SEPARATOR. +$¬gum’ts +['application'].DIRECTORY_SEPARATOR.$arguments['module'].'ActionsTest.php'); + +141 +$this +-> + `g‘Fžesy¡em +()-> + `»¶aûTok’s +( +sfCÚfig +:: + `g‘ +('sf_‹¡_dœ'). +DIRECTORY_SEPARATOR +.'funùiÚ®'.DIRECTORY_SEPARATOR. +$¬gum’ts +['­¶iÿtiÚ'].DIRECTORY_SEPARATOR.$¬gum’ts['moduË'].'AùiÚsTe¡.php', '##', '##', $this-> +cÚ¡ªts +); + +144 +$this +-> + `g‘Fžesy¡em +()-> + `»move +( +sfFšd” +:: + `ty³ +('ªy')-> + `š +( +$tmpDœ +)); + +145 + } +} + +147 +´Ùeùed + +funùiÚ + +execu‹In™ +( +$¬gum’ts + = +¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +149 +$moduËDœ + = +sfCÚfig +:: + `g‘ +('sf_­p_moduË_dœ').'/'. +$¬gum’ts +['module']; + +152 +$fšd” + = +sfFšd” +:: + `ty³ +('ªy')-> + `disÿrd +('.sf'); + +153 +$dœs + = +$this +-> +cÚfigu¿tiÚ +-> + `g‘G’”©ÜSk–‘ÚDœs +('sfDoùršeModuË', +$ÝtiÚs +['theme']); + +155 + `fܗch + ( +$dœs + +as + +$dœ +) + +157 ià( + `is_dœ +( +$dœ +)) + +159 +$this +-> + `g‘Fžesy¡em +()-> + `mœrÜ +( +$dœ +, +$moduËDœ +, +$fšd” +); + +165 ià( + `fže_exi¡s +( +$cÚfig + = +$moduËDœ +.'/lib/configuration.php')) + +167 ià( + `fže_exi¡s +( +$rg‘ + = +$moduËDœ +.'/lib/'. +$¬gum’ts +['module'].'GeneratorConfiguration.class.php')) + +169 +$this +-> + `g‘Fžesy¡em +()-> + `»move +( +$cÚfig +); + +173 +$this +-> + `g‘Fžesy¡em +()-> + `»Çme +( +$cÚfig +, +$rg‘ +); + +178 ià( + `fže_exi¡s +( +$cÚfig + = +$moduËDœ +.'/lib/helper.php')) + +180 ià( + `fže_exi¡s +( +$rg‘ + = +$moduËDœ +.'/lib/'. +$¬gum’ts +['module'].'GeneratorHelper.class.php')) + +182 +$this +-> + `g‘Fžesy¡em +()-> + `»move +( +$cÚfig +); + +186 +$this +-> + `g‘Fžesy¡em +()-> + `»Çme +( +$cÚfig +, +$rg‘ +); + +191 +$this +-> + `g‘Fžesy¡em +()-> + `cÝy +( +sfCÚfig +:: + `g‘ +('sf_symfÚy_lib_dœ'). +DIRECTORY_SEPARATOR +.'sk'.DIRECTORY_SEPARATOR.'g’”©Ü'.DIRECTORY_SEPARATOR.'sk–‘Ú'.DIRECTORY_SEPARATOR.'moduË'.DIRECTORY_SEPARATOR.'‹¡'.DIRECTORY_SEPARATOR.'aùiÚsTe¡.php', sfCÚfig::g‘('sf_‹¡_dœ').DIRECTORY_SEPARATOR.'funùiÚ®'.DIRECTORY_SEPARATOR. +$¬gum’ts +['application'].DIRECTORY_SEPARATOR.$arguments['module'].'ActionsTest.php'); + +194 +$this +-> + `g‘Fžesy¡em +()-> + `»¶aûTok’s +( +sfCÚfig +:: + `g‘ +('sf_‹¡_dœ'). +DIRECTORY_SEPARATOR +.'funùiÚ®'.DIRECTORY_SEPARATOR. +$¬gum’ts +['­¶iÿtiÚ'].DIRECTORY_SEPARATOR.$¬gum’ts['moduË'].'AùiÚsTe¡.php', '##', '##', $this-> +cÚ¡ªts +); + +197 +$fšd” + = +sfFšd” +:: + `ty³ +('fže')-> + `Çme +('*.php', '*.yml'); + +198 +$this +-> +cÚ¡ªts +['CONFIG'] = + `¥rštf +(<<< +EOF + + +199 +mod–_þass +: % +s + + +200 +theme +: % +s + + +201 +nÚ_v”bo£_‹m¶©es +: % +s + + +202 +w™h_show +: % +s + + +203 +sšguÏr +: % +s + + +204 +¶u¿l +: % +s + + +205 +rou‹_´efix +: % +s + + +206 +w™h_doùrše_rou‹ +: % +s + + +207 +aùiÚs_ba£_þass +: % +s + + +208 +EOF + + +210 +$¬gum’ts +['model'], + +211 +$ÝtiÚs +['theme'], + +212 +$ÝtiÚs +['non-verbose-templates'] ? 'true' : 'false', + +213 +$ÝtiÚs +['with-show'] ? 'true' : 'false', + +214 +$ÝtiÚs +['singular'] ? $options['singular'] : '~', + +215 +$ÝtiÚs +['plural'] ? $options['plural'] : '~', + +216 +$ÝtiÚs +['route-prefix'] ? $options['route-prefix'] : '~', + +217 +$ÝtiÚs +['with-doctrine-route'] ? 'true' : 'false', + +218 +$ÝtiÚs +['actions-base-class'] + +220 +$this +-> + `g‘Fžesy¡em +()-> + `»¶aûTok’s +( +$fšd” +-> + `š +( +$moduËDœ +), '##', '##', $this-> +cÚ¡ªts +); + +221 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineInsertSqlTask.class.php + +1 + `addO±iÚs +( + `¬¿y +( + +31 +Ãw + + `sfCommªdO±iÚ +('­¶iÿtiÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL +, 'Th­¶iÿtiڂame', +Œue +), + +32 +Ãw + + `sfCommªdO±iÚ +('’v', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Theƒnvironment', 'dev'), + +35 +$this +-> +Çme¥aû + = 'doctrine'; + +36 +$this +-> +Çme + = 'insert-sql'; + +37 +$this +-> +br›fDesütiÚ + = 'Inserts SQL for current model'; + +39 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +40 +The + [ +doùrše +: +𣹠+- +sql +| +INFO +] +sk + +ü—‹s + +d©aba£ + +bËs +: + +42 [./ +symfÚy + +doùrše +: +𣹠+- +sql +| +INFO +] + +44 +The + +sk + +cÚÃùs + +to + +the + +d©aba£ + +ªd + +ü—‹s + +bËs +  +®l +he + +45 [ +lib +/ +mod– +/ +doùrše + + +52 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + =‡rray()) + +54 +$this +-> + `logSeùiÚ +('doctrine', 'creatingables'); + +56 +$d©aba£Mªag” + = +Ãw + + `sfD©aba£Mªag” +( +$this +-> +cÚfigu¿tiÚ +); + +57 +$cÚfig + = +$this +-> + `g‘CliCÚfig +(); + +59 +Doùrše_CÜe +:: + `lßdMod–s +( +$cÚfig +['mod–s_·th'], Doùrše_CÜe:: +MODEL_LOADING_CONSERVATIVE +); + +60 +Doùrše_CÜe +:: + `ü—‹TabËsFromA¼ay +(Doùrše_CÜe:: + `g‘LßdedMod–s +()); + +62 +$this +-> + `logSeùiÚ +('doctrine', 'createdables successfully'); + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineMigrateTask.class.php + +1 + `addArgum’ts +( + `¬¿y +( + +31 +Ãw + + `sfCommªdArgum’t +('v”siÚ', +sfCommªdArgum’t +:: +OPTIONAL +, 'The versiono migrateo'), + +34 +$this +-> + `addO±iÚs +( + `¬¿y +( + +35 +Ãw + + `sfCommªdO±iÚ +('­¶iÿtiÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL +, 'Th­¶iÿtiڂame', +Œue +), + +36 +Ãw + + `sfCommªdO±iÚ +('’v', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Theƒnvironment', 'dev'), + +37 +Ãw + + `sfCommªdO±iÚ +('up', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Migrate up one version'), + +38 +Ãw + + `sfCommªdO±iÚ +('down', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Migrate down one version'), + +39 +Ãw + + `sfCommªdO±iÚ +('dry-run', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Do‚ot…ersist migrations'), + +42 +$this +-> +Çme¥aû + = 'doctrine'; + +43 +$this +-> +Çme + = 'migrate'; + +44 +$this +-> +br›fDesütiÚ + = 'Migrates databaseo current/specified version'; + +46 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +47 +The + [ +doùrše +: +mig¿‹ +| +INFO +] +sk + +mig¿‹s + +the + +d©aba£ +: + +49 [./ +symfÚy + +doùrše +: +mig¿‹ +| +INFO +] + +51 +Provide + +a + +v”siÚ + +¬gum’t + +to + +mig¿‹ +Ø¨ +¥ecific + version: + +53 [./ +symfÚy + +doùrše +: +mig¿‹ + 10| +INFO +] + +55 +To + +mig¿tiÚ + +up + +Ü + +down + +Úe + mig¿tiÚ, +u£ + +the + [--up| +COMMENT +] o¸[--down|COMMENT] +ÝtiÚs +: + +57 [./ +symfÚy + +doùrše +: +mig¿‹ + -- +down +| +INFO +] + +59 +If + +your + +d©aba£ + +suµÜts + +rÞlšg + +back + +DDL + +¡©em’ts +, +you + +ÿn + +run + +mig¿tiÚs + + +60 +š + +dry +- +run + +mode + +usšg + +the + [--dry-run| +COMMENT +] +ÝtiÚ +: + +62 [./ +symfÚy + +doùrše +: +mig¿‹ + -- +dry +- +run +| +INFO +] + +63 +EOF +; + +69 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +71 +$d©aba£Mªag” + = +Ãw + + `sfD©aba£Mªag” +( +$this +-> +cÚfigu¿tiÚ +); + +73 +$cÚfig + = +$this +-> + `g‘CliCÚfig +(); + +74 +$mig¿tiÚ + = +Ãw + + `Doùrše_Mig¿tiÚ +( +$cÚfig +['migrations_path']); + +75 +$äom + = +$mig¿tiÚ +-> + `g‘Cu¼’tV”siÚ +(); + +77 ià( + `is_num”ic +( +$¬gum’ts +['version'])) + +79 +$v”siÚ + = +$¬gum’ts +['version']; + +81 ià( +$ÝtiÚs +['up']) + +83 +$v”siÚ + = +$äom + + 1; + +85 ià( +$ÝtiÚs +['down']) + +87 +$v”siÚ + = +$äom + - 1; + +91 +$v”siÚ + = +$mig¿tiÚ +-> + `g‘L©e¡V”siÚ +(); + +94 ià( +$äom + =ð +$v”siÚ +) + +96 +$this +-> + `logSeùiÚ +('doùrše', + `¥rštf +('A̗dy‡ˆmig¿tiÚ v”siÚ %s', +$v”siÚ +)); + +100 +$this +-> + `logSeùiÚ +('doùrše', + `¥rštf +('Mig¿tšg from v”siÚ % tØ%s%s', +$äom +, +$v”siÚ +, +$ÝtiÚs +['dry-run'] ? ' (dry„un)' : '')); + +101 +Œy + + +103 +$mig¿tiÚ_þas£s + = +$mig¿tiÚ +-> + `g‘Mig¿tiÚCÏs£s +(); + +104 if( +$v”siÚ + < +$äom +) + +106  +$i + = () +$äom + - 1; $˜>ð() +$v”siÚ +; $i--) + +108 +$this +-> + `logSeùiÚ +('doùrše', 'executšg mig¿tiÚ : '. +$i + .', cÏss: '. +$mig¿tiÚ_þas£s +[$i]); + +109 +$mig¿tiÚ +-> + `mig¿‹ +( +$i +, +$ÝtiÚs +['dry-run']); + +114  +$i + = () +$äom + + 1; $˜<ð() +$v”siÚ +; $i++) + +116 +$this +-> + `logSeùiÚ +('doùrše', 'executšg mig¿tiÚ : '. +$i +.', cÏss: '. +$mig¿tiÚ_þas£s +[$i]); + +117 +$mig¿tiÚ +-> + `mig¿‹ +( +$i +, +$ÝtiÚs +['dry-run']); + +121 + `ÿtch + ( +Exû±iÚ + +$e +) + +126 ià( +$mig¿tiÚ +-> + `hasE¼Üs +()) + +128 ià( +$this +-> +commªdAµliÿtiÚ + && $this->commªdAµliÿtiÚ-> + `w™hT¿û +()) + +130 +$this +-> + `logSeùiÚ +('doctrine', 'The followingƒrrors occurred:'); + +131 + `fܗch + ( +$mig¿tiÚ +-> + `g‘E¼Üs +(è +as + +$”rÜ +) + +133 +$this +-> +commªdAµliÿtiÚ +-> + `»nd”Exû±iÚ +( +$”rÜ +); + +138 +$this +-> + `logBlock +( + `¬¿y_m”ge +( + +139 + `¬¿y +('The followingƒrrors occurred:', ''), + +140 + `¬¿y_m­ +( + `ü—‹_funùiÚ +('$e', '»tuº \' - \'.$e->g‘Mes§ge();'), +$mig¿tiÚ +-> + `g‘E¼Üs +()) + +147 +$this +-> + `logSeùiÚ +('doctrine', 'Migration complete'); + +148 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/test/sfTesterDoctrine.class.php + +1 + `ü—‹Qu”y +('a'); + +52 ià( + `is_¬¿y +( +$qu”y +)) + +54 +$cÚd™iÚs + = +$qu”y +; + +55 +$qu”y + = $qu”y = +Doùrše_CÜe +:: + `g‘TabË +( +$mod– +) + +56 -> + `ü—‹Qu”y +('a'); + +57 + `fܗch + ( +$cÚd™iÚs + +as + +$cÞumn + => +$cÚd™iÚ +) + +59 +$cÞumn + = +Doùrše_CÜe +:: + `g‘TabË +( +$mod– +)-> + `g‘F›ldName +($column); + +61 ià( +nuÎ + ==ð +$cÚd™iÚ +) + +63 +$qu”y +-> + `ªdWh”e +('a.'. +$cÞumn +.' IS NULL'); + +67 +$ݔ©Ü + = '='; + +68 ià('!' =ð +$cÚd™iÚ +[0]) + +70 +$ݔ©Ü + = +çl£ + !=ð + `¡½os +( +$cÚd™iÚ +, '%') ? 'NOT LIKE' : '!='; + +71 +$cÚd™iÚ + = + `sub¡r +($condition, 1); + +73 ià( +çl£ + !=ð + `¡½os +( +$cÚd™iÚ +, '%')) + +75 +$ݔ©Ü + = 'LIKE'; + +78 +$qu”y +-> + `ªdWh”e +('a.' . +$cÞumn + . ' ' . +$ݔ©Ü + . ' ?', +$cÚd™iÚ +); + +82 +$objeùs + = +$qu”y +-> + `execu‹ +(); + +84 ià( +çl£ + ==ð +$v®ue +) + +86 +$this +-> +‹¡” +-> + `is +( + `couÁ +( +$objeùs +), 0, + `¥rštf +('nØ% objeùh© m©che thü™”Ÿ ha b“Àfound', +$mod– +)); + +88 ià( +Œue + ==ð +$v®ue +) + +90 +$this +-> +‹¡” +-> + `cmp_ok +( + `couÁ +( +$objeùs +), '>', 0, + `¥rštf +('% objeù th© m©che thü™”Ÿ havb“Àfound', +$mod– +)); + +92 ià( + `is_št +( +$v®ue +)) + +94 +$this +-> +‹¡” +-> + `is +( + `couÁ +( +$objeùs +), +$v®ue +, + `¥rštf +('"%s" % objeù havb“Àfound', $v®ue, +$mod– +)); + +98 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +('The "check()" method does‚otakeshis kind of‡rgument.'); + +101  +$this +-> + `g‘ObjeùToR‘uº +(); + +102 + } +} + +109 +public + +funùiÚ + + $debug +( +$lim™ + = +nuÎ +) + +111 ià(! +$d©aba£Mªag” + = +$this +-> +brow£r +-> + `g‘Cڋxt +()-> + `g‘D©aba£Mªag” +()) + +113 +throw + +Ãw + + `LogicCÚÃùiÚ +('The current context does‚ot include‡ database manager.'); + +116 +$ev’ts + = + `¬¿y +(); + +117 + `fܗch + ( +$d©aba£Mªag” +-> + `g‘Names +(è +as + +$Çme +) + +119 +$d©aba£ + = +$d©aba£Mªag” +-> + `g‘D©aba£ +( +$Çme +); + +120 ià( +$d©aba£ + +š¡ªûof + +sfDoùršeD©aba£ + && +$´ofž” + = $d©aba£-> + `g‘Profž” +()) + +122 + `fܗch + ( +$´ofž” +-> + `g‘Qu”yExecutiÚEv’ts +(è +as + +$ev’t +) + +124 +$ev’ts +[ +$ev’t +-> + `g‘Sequ’û +()] = $event; + +130 + `ksÜt +( +$ev’ts +); + +132 ià( + `is_š‹g” +( +$lim™ +)) + +134 +$ev’ts + = + `¬¿y_¦iû +($ev’ts, +$lim™ + * -1); + +136 ià( + `´eg_m©ch +('/^(!)?([^a-zA-Z0-9\\\\]).+?\\2[ims]?$/', +$lim™ +, +$m©ch +)) + +138 ià( +$m©ch +[1] == '!') + +140 +$·‰”n + = + `sub¡r +( +$lim™ +, 1); + +141 +$m©ch + = +çl£ +; + +145 +$·‰”n + = +$lim™ +; + +146 +$m©ch + = +Œue +; + +149 ià( +$lim™ +) + +151 +$sub¡ršg + = +$lim™ +; + +154 +echo + "\nDumping SQLƒxecuted inhe current context:\n\n"; + +156 + `fܗch + ( +$ev’ts + +as + +$ev’t +) + +159 (! + `is£t +( +$·‰”n +è&& !is£t( +$sub¡ršg +)) + +161 ( + `is£t +( +$·‰”n +è&& +$m©ch + =ð + `´eg_m©ch +($·‰”n, +$ev’t +-> + `g‘Qu”y +())) + +163 ( + `is£t +( +$sub¡ršg +è&& +çl£ + !=ð + `¡ros +( +$ev’t +-> + `g‘Qu”y +(), $substring)) + +166 +$cÚn + = +$ev’t +-> + `g‘Invok” +(è +š¡ªûof + +Doùrše_CÚÃùiÚ + ? $ev’t->g‘Invok”(è: $ev’t->g‘Invok”()-> + `g‘CÚÃùiÚ +(); + +168 +echo + +$ev’t +-> + `g‘Qu”y +()."\n"; + +169 +echo + ' P¬am‘”s: '. +sfYaml +:: + `dump +( +sfDoùršeCÚÃùiÚProfž” +:: + `fixP¬ams +( +$ev’t +-> + `g‘P¬ams +()), 0)."\n"; + +170 +echo + ' CÚÃùiÚ: '. +$cÚn +-> + `g‘Name +()."\n"; + +171 +echo + ' Time: '. + `numb”_fÜm© +( +$ev’t +-> + `g‘EÏp£dSecs +(), 2)."s\n\n"; + +175 + `ex™ +(1); + +176 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/validator/sfValidatorDoctrineChoice.class.php + +1 + `addRequœedO±iÚ +('model'); + +41 +$this +-> + `addO±iÚ +('qu”y', +nuÎ +); + +42 +$this +-> + `addO±iÚ +('cÞumn', +nuÎ +); + +43 +$this +-> + `addO±iÚ +('muɝË', +çl£ +); + +44 +$this +-> + `addO±iÚ +('min'); + +45 +$this +-> + `addO±iÚ +('max'); + +47 +$this +-> + `addMes§ge +('min', 'At†east %min% values must be selected (%count% values selected).'); + +48 +$this +-> + `addMes§ge +('max', 'At most %max% values must be selected (%count% values selected).'); + +54 +´Ùeùed + +funùiÚ + + $doC˪ +( +$v®ue +) + +56 ià( +$qu”y + = +$this +-> + `g‘O±iÚ +('query')) + +58 +$qu”y + = +þÚe + $query; + +62 +$qu”y + = +Doùrše_CÜe +:: + `g‘TabË +( +$this +-> + `g‘O±iÚ +('mod–'))-> + `ü—‹Qu”y +(); + +65 ià( +$this +-> + `g‘O±iÚ +('multiple')) + +67 ià(! + `is_¬¿y +( +$v®ue +)) + +69 +$v®ue + = + `¬¿y +($value); + +72 ià( + `is£t +( +$v®ue +[0]) && !$value[0]) + +74 + `un£t +( +$v®ue +[0]); + +77 +$couÁ + = + `couÁ +( +$v®ue +); + +79 ià( +$this +-> + `hasO±iÚ +('mš'è&& +$couÁ + < $this-> + `g‘O±iÚ +('min')) + +81 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'mš', + `¬¿y +('couÁ' => +$couÁ +, 'mš' => $this-> + `g‘O±iÚ +('min'))); + +84 ià( +$this +-> + `hasO±iÚ +('max'è&& +$couÁ + > $this-> + `g‘O±iÚ +('max')) + +86 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'max', + `¬¿y +('couÁ' => +$couÁ +, 'max' => $this-> + `g‘O±iÚ +('max'))); + +89 +$qu”y +-> + `ªdWh”eIn +( + `¥rštf +('%s.%s', $qu”y-> + `g‘RoÙAlŸs +(), +$this +-> + `g‘CÞumn +()), +$v®ue +); + +91 ià( +$qu”y +-> + `couÁ +(è!ðcouÁ( +$v®ue +)) + +93 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'šv®id', + `¬¿y +('v®ue' => +$v®ue +)); + +98 +$qu”y +-> + `ªdWh”e +( + `¥rštf +('%s.% ð?', $qu”y-> + `g‘RoÙAlŸs +(), +$this +-> + `g‘CÞumn +()), +$v®ue +); + +100 ià(! +$qu”y +-> + `couÁ +()) + +102 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'šv®id', + `¬¿y +('v®ue' => +$v®ue +)); + +106  +$v®ue +; + +107 + } +} + +116 +´Ùeùed + +funùiÚ + + $g‘CÞumn +() + +118 +$bË + = +Doùrše_CÜe +:: + `g‘TabË +( +$this +-> + `g‘O±iÚ +('model')); + +119 ià( +$this +-> + `g‘O±iÚ +('column')) + +121 +$cÞumnName + = +$this +-> + `g‘O±iÚ +('column'); + +125 +$id’tif›r + = ( +¬¿y +è +$bË +-> + `g‘Id’tif›r +(); + +126 +$cÞumnName + = + `cu¼’t +( +$id’tif›r +); + +129  +$bË +-> + `g‘CÞumnName +( +$cÞumnName +); + +130 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/validator/sfValidatorDoctrineUnique.class.php + +1 + `addRequœedO±iÚ +('model'); + +58 +$this +-> + `addRequœedO±iÚ +('column'); + +59 +$this +-> + `addO±iÚ +('´im¬y_key', +nuÎ +); + +60 +$this +-> + `addO±iÚ +('cÚÃùiÚ', +nuÎ +); + +61 +$this +-> + `addO±iÚ +('throw_glob®_”rÜ', +çl£ +); + +63 +$this +-> + `£tMes§ge +('invalid', 'An object withhe same "%column%"‡lreadyƒxist.'); + +64 + } +} + +69 +´Ùeùed + +funùiÚ + + $doC˪ +( +$v®ues +) + +71 +$Üigš®V®ues + = +$v®ues +; + +72 +$bË + = +Doùrše_CÜe +:: + `g‘TabË +( +$this +-> + `g‘O±iÚ +('model')); + +73 ià(! + `is_¬¿y +( +$this +-> + `g‘O±iÚ +('column'))) + +75 +$this +-> + `£tO±iÚ +('cÞumn', + `¬¿y +($this-> + `g‘O±iÚ +('column'))); + +79 ià(! + `is_¬¿y +( +$v®ues +)) + +82 +$cÞumns + = +$this +-> + `g‘O±iÚ +('column'); + +83 +$v®ues + = + `¬¿y +( +$cÞumns +[0] => $values); + +86 +$q + = +Doùrše_CÜe +:: + `g‘TabË +( +$this +-> + `g‘O±iÚ +('mod–'))-> + `ü—‹Qu”y +('a'); + +87 + `fܗch + ( +$this +-> + `g‘O±iÚ +('cÞumn'è +as + +$cÞumn +) + +89 +$cÞName + = +$bË +-> + `g‘CÞumnName +( +$cÞumn +); + +90 ià(! + `¬¿y_key_exi¡s +( +$cÞumn +, +$v®ues +)) + +93  +$Üigš®V®ues +; + +96 +$q +-> + `addWh”e +('a.' . +$cÞName + . ' = ?', +$v®ues +[ +$cÞumn +]); + +99 +$objeù + = +$q +-> + `ãtchOà +(); + +102 ià(! +$objeù + || +$this +-> + `isUpd©e +($objeù, +$v®ues +)) + +104  +$Üigš®V®ues +; + +107 +$”rÜ + = +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'šv®id', + `¬¿y +('cÞumn' => + `im¶ode +(', ', $this-> + `g‘O±iÚ +('column')))); + +109 ià( +$this +-> + `g‘O±iÚ +('throw_global_error')) + +111 +throw + +$”rÜ +; + +114 +$cÞumns + = +$this +-> + `g‘O±iÚ +('column'); + +116 +throw + +Ãw + + `sfV®id©ÜE¼ÜSchema +( +$this +, + `¬¿y +( +$cÞumns +[0] => +$”rÜ +)); + +117 + } +} + +127 +´Ùeùed + +funùiÚ + + $isUpd©e +( +Doùrše_RecÜd + +$objeù +, +$v®ues +) + +130 + `fܗch + ( +$this +-> + `g‘Prim¬yKeys +(è +as + +$cÞumn +) + +132 ià(! + `is£t +( +$v®ues +[ +$cÞumn +]è|| +$objeù +->$column != $values[$column]) + +134  +çl£ +; + +138  +Œue +; + +139 + } +} + +146 +´Ùeùed + +funùiÚ + + $g‘Prim¬yKeys +() + +148 ià( +nuÎ + ==ð +$this +-> + `g‘O±iÚ +('primary_key')) + +150 +$´im¬yKeys + = +Doùrše_CÜe +:: + `g‘TabË +( +$this +-> + `g‘O±iÚ +('mod–'))-> + `g‘Id’tif›r +(); + +151 +$this +-> + `£tO±iÚ +('´im¬y_key', +$´im¬yKeys +); + +154 ià(! + `is_¬¿y +( +$this +-> + `g‘O±iÚ +('primary_key'))) + +156 +$this +-> + `£tO±iÚ +('´im¬y_key', + `¬¿y +($this-> + `g‘O±iÚ +('primary_key'))); + +159  +$this +-> + `g‘O±iÚ +('primary_key'); + +160 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine.php + +1 +$v +) { + +44 +$this +-> + `£t +( +$k +, +$v +); + +47  +$this +; + +58 +public + +funùiÚ + + $__£t +( +$Çme +, +$v®ue +) + +60 +$this +-> + `£t +( +$Çme +, +$v®ue +); + +61 + } +} + +70 +public + +funùiÚ + + $__g‘ +( +$Çme +) + +72  +$this +-> + `g‘ +( +$Çme +); + +73 + } +} + +81 +public + +funùiÚ + + $__is£t +( +$Çme +) + +83  +$this +-> + `cڏšs +( +$Çme +); + +84 + } +} + +92 +public + +funùiÚ + + $__un£t +( +$Çme +) + +94  +$this +-> + `»move +( +$Çme +); + +95 + } +} + +103 +public + +funùiÚ + + $off£tExi¡s +( +$off£t +) + +105  +$this +-> + `cڏšs +( +$off£t +); + +106 + } +} + +115 +public + +funùiÚ + + $off£tG‘ +( +$off£t +) + +117  +$this +-> + `g‘ +( +$off£t +); + +118 + } +} + +128 +public + +funùiÚ + + $off£tS‘ +( +$off£t +, +$v®ue +) + +130 iàÐ! + `is£t +( +$off£t +)) { + +131 +$this +-> + `add +( +$v®ue +); + +133 +$this +-> + `£t +( +$off£t +, +$v®ue +); + +135 + } +} + +143 +public + +funùiÚ + + $off£tUn£t +( +$off£t +) + +145  +$this +-> + `»move +( +$off£t +); + +146 + } +} + +154 +public + +funùiÚ + + $»move +( +$off£t +) + +156 +throw + +Ãw + + `Doùrše_Exû±iÚ +('Removi nÙ suµÜ‹d fÜ ' . + `g‘_þass +( +$this +)); + +157 + } +} + +165 +public + +funùiÚ + + $g‘ +( +$off£t +) + +167 +throw + +Ãw + + `Doùrše_Exû±iÚ +('G‘ i nÙ suµÜ‹d fÜ ' . + `g‘_þass +( +$this +)); + +168 + } +} + +177 +public + +funùiÚ + + $£t +( +$off£t +, +$v®ue +) + +179 +throw + +Ãw + + `Doùrše_Exû±iÚ +('S‘ i nÙ suµÜ‹d fÜ ' . + `g‘_þass +( +$this +)); + +180 + } +} + +188 +public + +funùiÚ + + $cڏšs +( +$off£t +) + +190 +throw + +Ãw + + `Doùrše_Exû±iÚ +('Cڏš i nÙ suµÜ‹d fÜ ' . + `g‘_þass +( +$this +)); + +191 + } +} + +199 +public + +funùiÚ + + $add +( +$v®ue +) + +201 +throw + +Ãw + + `Doùrše_Exû±iÚ +('Add i nÙ suµÜ‹d fÜ ' . + `g‘_þass +( +$this +)); + +202 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Adapter/Exception.php + +1 +_Çme + = +$Çme +; + +83 +public + +funùiÚ + +g‘Name +() + +85  + g$this +-> + g_Çme +; + +93 +public + +funùiÚ + +pÝ +() + +95  +¬¿y_pÝ +( +$this +-> +_qu”›s +); + +106 +public + +funùiÚ + +fÜûExû±iÚ +( +$Çme +, +$mes§ge + = '', +$code + = 0) + +108 +$this +-> +_exû±iÚ + = +¬¿y +( +$Çme +, +$mes§ge +, +$code +); + +117 +public + +funùiÚ + +´•¬e +( +$qu”y +) + +119 + g$mock + = +Ãw + +Doùrše_Ad­‹r_S‹m’t_Mock +( +$this +, +$qu”y +); + +120 + g$mock +-> + gqu”ySŒšg + = +$qu”y +; + +122  + g$mock +; + +131 +public + +funùiÚ + +addQu”y +( +$qu”y +) + +133 + g$this +-> + g_qu”›s +[] = +$qu”y +; + +142 +public + +funùiÚ + +qu”y +( +$qu”y +) + +144 + g$this +-> + g_qu”›s +[] = +$qu”y +; + +146 + g$e + = +$this +-> +_exû±iÚ +; + +148 iàÐ! +em±y +( +$e +)) { + +149 + g$Çme + = +$e +[0]; + +151 + g$this +-> + g_exû±iÚ + = +¬¿y +(); + +153 +throw + +Ãw + +$Çme +( +$e +[1], $e[2]); + +156 + g$¡mt + = +Ãw + +Doùrše_Ad­‹r_S‹m’t_Mock +( +$this +, +$qu”y +); + +157 + g$¡mt +-> + gqu”ySŒšg + = +$qu”y +; + +159  + g$¡mt +; + +167 +public + +funùiÚ + +g‘AÎ +() + +169  + g$this +-> + g_qu”›s +; + +178 +public + +funùiÚ + +quÙe +( +$šput +) + +180  "'" . +add¦ashes +( +$šput +) . "'"; + +189 +public + +funùiÚ + +exec +( +$¡©em’t +) + +191 + g$this +-> + g_qu”›s +[] = +$¡©em’t +; + +193 + g$e + = +$this +-> +_exû±iÚ +; + +195 iàÐ! +em±y +( +$e +)) { + +196 + g$Çme + = +$e +[0]; + +198 + g$this +-> + g_exû±iÚ + = +¬¿y +(); + +200 +throw + +Ãw + +$Çme +( +$e +[1], $e[2]); + +212 +public + +funùiÚ + +fÜûLa¡In£¹IdFaž +( +$çž + = +Œue +) + +214 ià( +$çž +) { + +215 +$this +-> +_Ï¡In£¹IdFaž + = +Œue +; + +217 + g$this +-> + g_Ï¡In£¹IdFaž + = +çl£ +; + +226 +public + +funùiÚ + +Ï¡In£¹Id +() + +228 + g$this +-> + g_qu”›s +[] = 'LAST_INSERT_ID()'; + +229 ià( + g$this +-> + g_Ï¡In£¹IdFaž +) { + +230  + gnuÎ +; + +241 +public + +funùiÚ + +couÁ +() + +243  +couÁ +( +$this +-> +_qu”›s +); + +251 +public + +funùiÚ + +begšT¿n§ùiÚ +() + +253 + g$this +-> + g_qu”›s +[] = 'BEGIN TRANSACTION'; + +261 +public + +funùiÚ + +comm™ +() + +263 + g$this +-> + g_qu”›s +[] = 'COMMIT'; + +271 +public + +funùiÚ + +rÞlBack +() + +273 + g$this +-> + g_qu”›s +[] = 'ROLLBACK'; + +276 +public + +funùiÚ + +g‘A‰ribu‹ +( +$©Œibu‹ +) + +278 ià( + g$©Œibu‹ + =ð +Doùrše_CÜe +:: +ATTR_DRIVER_NAME +) { + +279  +¡¹Þow” +( +$this +-> +_Çme +); + +283 +public + +funùiÚ + +”rÜCode +() + +286 +public + +funùiÚ + +”rÜInfo +() + +289 +public + +funùiÚ + +£tA‰ribu‹ +( +$©Œibu‹ +, +$v®ue +) + +292 +public + +funùiÚ + +sql™eC»©eFunùiÚ +() + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Adapter/Oracle.php + +1 "oci8", + +50 +Doùrše_CÜe +:: +ATTR_ERRMODE + => Doùrše_CÜe:: +ERRMODE_SILENT +); + +64 +´Ùeùed + + m$cÚfig + = +¬¿y +( + +65 'dbÇme' => +nuÎ +, + +66 'u£ºame' => +nuÎ +, + +67 '·sswÜd' => +nuÎ +, + +68 'ch¬£t' => +nuÎ +, + +69 '³rsi¡’t' => +çl£ + + +88 +public + +funùiÚ + +__cÚ¡ruù +( +$cÚfig + = +¬¿y +(), +$u£ºame + = +nuÎ +, +$·sswÜd + =‚ull) + +90 ià( +is_¡ršg +( +$cÚfig +)) + +92 +$cÚfig + = +¡r_»¶aû +("oracle:","",$config); + +93 + m$·¹s + = +ex¶ode +(";", +$cÚfig +); + +94 +fܗch +( +$·¹s + +as + +$·¹ +) { + +95 + m$e + = +ex¶ode +("=", +$·¹ +); + +96 + m$key + = +¬¿y_shiá +( +$e +); + +97 + m$this +-> + mcÚfig +[ +$key +] = +im¶ode +('=', +$e +); + +100 ià( + m$u£ºame +) { + +101 + m$this +-> + mcÚfig +['u£ºame'] = +$u£ºame +; + +103 ià( + m$·sswÜd +) { + +104 + m$this +-> + mcÚfig +['·sswÜd'] = +$·sswÜd +; + +107 iàÐ! +is£t +( +$cÚfig +['password']) || ! isset($config['username'])) { + +108 +throw + +Ãw + +Doùrše_Ad­‹r_Exû±iÚ +('config‡rray must have‡t†east‡ username‡nd‡…assword'); + +111 + m$this +-> + mcÚfig +['u£ºame'] = +$cÚfig +['username']; + +112 + m$this +-> + mcÚfig +['·sswÜd'] = +$cÚfig +['password']; + +113 + m$this +-> + mcÚfig +['dbÇme'] = +$cÚfig +['dbname']; + +115 ià( +is£t +( +$cÚfig +['charset'])) { + +116 + m$this +-> + mcÚfig +['ch¬£t'] = +$cÚfig +['charset']; + +119 ià( +is£t +( +$cÚfig +['persistent'])) { + +120 + m$this +-> + mcÚfig +['³rsi¡’t'] = +$cÚfig +['persistent']; + +125 ià( + m$this +-> + mcÚfig +['persistent'] == 'true'){ + +126 +$this +-> +cÚÃùiÚ + = @ +oci_pcÚÃù +($this-> +cÚfig +['username'], $this->config['password'], + +127 +$this +-> +cÚfig +['dbname'], $this->config['charset']); + +129 + m$this +-> + mcÚÃùiÚ + = @ +oci_Ãw_cÚÃù +( +$this +-> +cÚfig +['username'], $this->config['password'], + +130 +$this +-> +cÚfig +['dbname'], $this->config['charset']); + +133 ià( + m$this +-> + mcÚÃùiÚ + ==ð +çl£ +) { + +134 +throw + +Ãw + +Doùrše_Ad­‹r_Exû±iÚ +( +¥rštf +("UÇbˁØCÚÃùØ:'%s'‡ '%s'", +$this +-> +cÚfig +['dbname'], $this->config['username'])); + +144 +public + +funùiÚ + + $´•¬e +( +$qu”y +) + +146 +$¡mt + = +Ãw + + `Doùrše_Ad­‹r_S‹m’t_O¿þe +( +$this +, +$qu”y +, $this-> +execu‹Mode +); + +148  +$¡mt +; + +149 + } +} + +157 +public + +funùiÚ + + $qu”y +( +$qu”y +) + +159 +$¡mt + = +Ãw + + `Doùrše_Ad­‹r_S‹m’t_O¿þe +( +$this +, +$qu”y +, $this-> +execu‹Mode +); + +160 +$¡mt +-> + `execu‹ +(); + +162  +$¡mt +; + +163 + } +} + +171 +public + +funùiÚ + + $quÙe +( +$šput +) + +173  "'" . + `¡r_»¶aû +("'","''", +$šput +) . "'"; + +174 + } +} + +182 +public + +funùiÚ + + $exec +( +$¡©em’t +) + +184 +$¡mt + = +Ãw + + `Doùrše_Ad­‹r_S‹m’t_O¿þe +( +$this +, +$¡©em’t +, $this-> +execu‹Mode +); + +185 +$¡mt +-> + `execu‹ +(); + +186 +$couÁ + = +$¡mt +-> + `rowCouÁ +(); + +188  +$couÁ +; + +189 + } +} + +196 +public + +funùiÚ + + $Ï¡In£¹Id +() + +198 +throw + +Ãw + + `Doùrše_Ad­‹r_Exû±iÚ +("unsupported"); + +199 + } +} + +206 +public + +funùiÚ + + $begšT¿n§ùiÚ +() + +208 +$this +-> +execu‹Mode + = +OCI_DEFAULT +; + +209  +Œue +; + +210 + } +} + +217 +public + +funùiÚ + + $comm™ +() + +219  @ + `oci_comm™ +( +$this +-> +cÚÃùiÚ +); + +220 + } +} + +227 +public + +funùiÚ + + $rÞlBack +() + +229  @ + `oci_rÞlback +( +$this +-> +cÚÃùiÚ +); + +230 + } +} + +239 +public + +funùiÚ + + $£tA‰ribu‹ +( +$©Œibu‹ +, +$v®ue +) + +241  +$©Œibu‹ +) { + +242  +Doùrše_CÜe +:: +ATTR_DRIVER_NAME +: + +244  +Doùrše_CÜe +:: +ATTR_ERRMODE +: + +246  +Doùrše_CÜe +:: +ATTR_CASE +: + +247 ià( +$v®ue + =ð +Doùrše_CÜe +:: +CASE_NATURAL +) { + +250 +throw + +Ãw + + `Doùrše_Ad­‹r_Exû±iÚ +("Unsupported Option for ATTR_CASE: $value"); + +253 +throw + +Ãw + + `Doùrše_Ad­‹r_Exû±iÚ +("Unsupported Attribute: $attribute"); + +254  +çl£ +; + +256 +$this +-> +©Œibu‹s +[ +$©Œibu‹ +] = +$v®ue +; + +257  +Œue +; + +258 + } +} + +267 +public + +funùiÚ + + $g‘A‰ribu‹ +( +$©Œibu‹ +) + +269  +$this +-> +©Œibu‹s +[ +$©Œibu‹ +]; + +270 + } +} + +277 +public + +funùiÚ + + $g‘CÚÃùiÚ +() + +279  +$this +-> +cÚÃùiÚ +; + +280 + } +} + +287 +public + +funùiÚ + + $g‘U£rName +() + +289  +$this +-> +cÚfig +['username']; + +290 + } +} + +292 +public + +funùiÚ + + $”rÜCode +() + +294 ià( + `is_»sourû +( +$this +-> +cÚÃùiÚ +)) { + +295 +$”rÜ + = @ + `oci_”rÜ +( +$this +-> +cÚÃùiÚ +); + +297 +$”rÜ + = @ + `oci_”rÜ +(); + +299  +$”rÜ +['code']; + +300 + } +} + +302 +public + +funùiÚ + + $”rÜInfo +() + +304 ià( + `is_»sourû +( +$this +-> +cÚÃùiÚ +)) { + +305 +$”rÜ + = @ + `oci_”rÜ +( +$this +-> +cÚÃùiÚ +); + +307 +$”rÜ + = @ + `oci_”rÜ +(); + +309  +$”rÜ +['message']; + +310 + } +} + +312 +public + +funùiÚ + + $__de¡ruù +() + +314 ià( + `is_»sourû +( +$this +-> +cÚÃùiÚ +)) { + +315 @ + `oci_rÞlback +( +$this +-> +cÚÃùiÚ +); + +316 @ + `oci_þo£ +( +$this +-> +cÚÃùiÚ +); + +318 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Adapter/Statement.php + +1 +_mock + = +$mock +; + +71 +public + +funùiÚ + + $bšdCÞumn +( +$cÞumn +, +$·¿m +, +$ty³ + = +nuÎ +) + +72 { + } +} + +89 +public + +funùiÚ + + $bšdV®ue +( +$·¿m +, +$v®ue +, +$ty³ + = +nuÎ +) + +90 { + } +} + +120 +public + +funùiÚ + +bšdP¬am +( +$cÞumn +, & +$v¬ŸbË +, +$ty³ + = +nuÎ +, +$Ëngth + =‚uÎ, +$driv”O±iÚs + = + $¬¿y +()) + +123 + } +} + +132 +public + +funùiÚ + + $þo£CursÜ +() + +134  +Œue +; + +135 + } +} + +146 +public + +funùiÚ + + $cÞumnCouÁ +() + +149 + } +} + +159 +public + +funùiÚ + + $”rÜCode +() + +161  + `¬¿y +(); + +162 + } +} + +172 +public + +funùiÚ + + $”rÜInfo +() + +174  + `¬¿y +(); + +175 + } +} + +204 +public + +funùiÚ + +ãtch +( +$ãtchStyË + = +Doùrše_CÜe +:: +FETCH_BOTH +, + +205 +$cursÜOr›Á©iÚ + = +Doùrše_CÜe +:: +FETCH_ORI_NEXT +, + +206 +$cursÜOff£t + = +nuÎ +) + +208  +¬¿y +(); + +225 +public + +funùiÚ + +ãtchAÎ +( +$ãtchMode + = +Doùrše_CÜe +:: +FETCH_BOTH +) + +227  +¬¿y +(); + +246 +public + +funùiÚ + + $execu‹ +( +$·¿ms + = +nuÎ +) + +248 ià( + `is_objeù +( +$this +-> +_mock +)) { + +249 +$this +-> +_mock +-> + `addQu”y +($this-> +qu”ySŒšg +); + +251  +Œue +; + +252 + } +} + +266 +public + +funùiÚ + + $ãtchCÞumn +( +$cÞumnIndex + = 0) + +269 + } +} + +285 +public + +funùiÚ + +ãtchObjeù +( +$þassName + = '¡dCÏss', +$¬gs + = + $¬¿y +()) + +287  +Ãw + + `$þassName +(); + +288 + } +} + +302 +public + +funùiÚ + + $ÃxtRow£t +() + +304  +Œue +; + +305 + } +} + +320 +public + +funùiÚ + + $rowCouÁ +() + +323 + } +} + +342 +public + +funùiÚ + + $g‘CÞumnM‘a +( +$cÞumn +) + +343 { + } +} + +354 +public + +funùiÚ + + $g‘A‰ribu‹ +( +$©Œibu‹ +) + +355 { + } +} + +366 +public + +funùiÚ + + $£tA‰ribu‹ +( +$©Œibu‹ +, +$v®ue +) + +367 { + } +} + +377 +public + +funùiÚ + + $£tF‘chMode +( +$mode +, +$¬g1 + = +nuÎ +, +$¬g2 + =‚ull) + +378 { + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Adapter/Statement/Oracle.php + +1 +cÚÃùiÚ + = +$cÚÃùiÚ +-> + `g‘CÚÃùiÚ +(); + +82 +$this +-> +qu”ySŒšg + = +$qu”y +; + +83 +$this +-> +execu‹Mode + = +$execu‹Mode +; + +84 +$this +-> +©Œibu‹s +[ +Doùrše_CÜe +:: +ATTR_ERRMODE +] = +$cÚÃùiÚ +-> + `g‘A‰ribu‹ +(Doctrine_Core::ATTR_ERRMODE); + +86 +$this +-> + `·r£Qu”y +(); + +99 +public + +funùiÚ + + $bšdCÞumn +( +$cÞumn +, +$·¿m +, +$ty³ + = +nuÎ +) + +101 +throw + +Ãw + + `Doùrše_Ad­‹r_Exû±iÚ +("Unsupported"); + +102 + } +} + +117 +public + +funùiÚ + + $bšdV®ue +( +$·¿m +, +$v®ue +, +$ty³ + = +nuÎ +) + +122 +$this +-> +bšdP¬ams +[] = +$v®ue +; + +123 +$this +-> + `bšdP¬am +( +$·¿m +, $this-> +bšdP¬ams +[ + `couÁ +($this->bšdP¬amsè- 1], +$ty³ +); + +124 + } +} + +152 +public + +funùiÚ + +bšdP¬am +( +$cÞumn +, & +$v¬ŸbË +, +$ty³ + = +nuÎ +, +$Ëngth + =‚uÎ, +$driv”O±iÚs + = + $¬¿y +()) + +154 ià( +$driv”O±iÚs + || +$Ëngth + ) { + +155 +throw + +Ãw + + `Doùrše_Ad­‹r_Exû±iÚ +('Unsupported…arameters:$length, $driverOptions'); + +158 ià( +$Ëngth + ==ð +nuÎ +) { + +159 +$oci_Ëngth + = -1; + +161 +$oci_ty³ + = +SQLT_CHR +; + +163  +$ty³ +) { + +164  +Doùrše_CÜe +:: +PARAM_STR +: + +165 +$oci_ty³ + = +SQLT_CHR +; + +169 ià( + `is_š‹g” +( +$cÞumn +)) { + +170 +$v¬ŸbË_Çme + = ":oci_b_var_$column"; + +172 +$v¬ŸbË_Çme + = +$cÞumn +; + +175 +$¡©us + = @ + `oci_bšd_by_Çme +( +$this +-> +¡©em’t +, +$v¬ŸbË_Çme +, +$v¬ŸbË +, +$oci_Ëngth +, +$oci_ty³ +); + +176 ià( +$¡©us + ==ð +çl£ +) { + +177 +$this +-> + `hªdËE¼Ü +(); + +179  +$¡©us +; + +180 + } +} + +187 +public + +funùiÚ + + $þo£CursÜ +() + +189 +$this +-> +bšdP¬ams + = + `¬¿y +(); + +190  + `oci_ä“_¡©em’t +( +$this +-> +¡©em’t +); + +191 + } +} + +200 +public + +funùiÚ + + $cÞumnCouÁ +() + +202  + `oci_num_f›lds + ( +$this +-> +¡©em’t + ); + +203 + } +} + +211 +public + +funùiÚ + + $”rÜCode +() + +213 +$oci_”rÜ + = +$this +-> + `g‘OciE¼Ü +(); + +214  +$oci_”rÜ +['code']; + +215 + } +} + +223 +public + +funùiÚ + + $”rÜInfo +() + +225 +$oci_”rÜ + = +$this +-> + `g‘OciE¼Ü +(); + +226  +$oci_”rÜ +['message'] . " : " . $oci_error['sqltext']; + +227 + } +} + +229 +´iv©e + +funùiÚ + + $g‘OciE¼Ü +() + +231 ià( + `is_»sourû +( +$this +-> +¡©em’t +)) { + +232 +$oci_”rÜ + = + `oci_”rÜ + ( +$this +-> +¡©em’t +); + +234 +$oci_”rÜ + = + `oci_”rÜ + (); + +237 ià( +$oci_”rÜ +) { + +239 +$this +-> +oci_”rÜs +[] = +$oci_”rÜ +; + +240 } ià( + `couÁ +( +$this +-> +ociE¼Üs +) > 0) { + +241 +$oci_”rÜ + = +$this +-> +ociE¼Üs +[ + `couÁ +($this->ociErrors)-1]; + +243  +$oci_”rÜ +; + +244 + } +} + +260 +public + +funùiÚ + + $execu‹ +( +$·¿ms + = +nuÎ +) + +262 ià( + `is_¬¿y +( +$·¿ms +)) { + +263 + `fܗch + ( +$·¿ms + +as + +$v¬ + => +$v®ue +) { + +264 +$this +-> + `bšdV®ue +( +$v¬ ++1, +$v®ue +); + +268 +$»suÉ + = @ + `oci_execu‹ +( +$this +-> +¡©em’t + , $this-> +execu‹Mode + ); + +270 ià( +$»suÉ + ==ð +çl£ +) { + +271 +$this +-> + `hªdËE¼Ü +(); + +272  +çl£ +; + +274  +Œue +; + +275 + } +} + +304 +public + +funùiÚ + +ãtch +( +$ãtchStyË + = +Doùrše_CÜe +:: +FETCH_BOTH +, +$cursÜOr›Á©iÚ + = Doùrše_CÜe:: +FETCH_ORI_NEXT +, +$cursÜOff£t + = +nuÎ +) + +306  +$ãtchStyË +) { + +307  +Doùrše_CÜe +:: +FETCH_BOTH + : + +308  +oci_ãtch_¬¿y +( +$this +-> +¡©em’t +, +OCI_BOTH + + +OCI_RETURN_NULLS + + +OCI_RETURN_LOBS +); + +310  + gDoùrše_CÜe +:: +FETCH_ASSOC + : + +311  +oci_ãtch_¬¿y +( +$this +-> +¡©em’t +, +OCI_ASSOC + + +OCI_RETURN_NULLS + + +OCI_RETURN_LOBS +); + +313  + gDoùrše_CÜe +:: +FETCH_NUM + : + +314  +oci_ãtch_¬¿y +( +$this +-> +¡©em’t +, +OCI_NUM + + +OCI_RETURN_NULLS + + +OCI_RETURN_LOBS +); + +316  + gDoùrše_CÜe +:: +FETCH_OBJ +: + +317  +oci_ãtch_objeù +( +$this +-> +¡©em’t +, +OCI_NUM + + +OCI_RETURN_NULLS + + +OCI_RETURN_LOBS +); + +320 +throw + +Ãw + +Doùrše_Ad­‹r_Exû±iÚ +("Thi ty³ oàãtch i nÙ suµÜ‹d: ". +$ãtchStyË +); + +355 +public + +funùiÚ + +ãtchAÎ +( +$ãtchStyË + = +Doùrše_CÜe +:: +FETCH_BOTH +, +$cÞnum +=0) + +357 +$ãtchCÞumn + = +çl£ +; + +358 + g$sk + = 0; + +359 + g$maxrows + = -1; + +360 + g$d©a + = +¬¿y +(); + +361 + g$æags + = +OCI_FETCHSTATEMENT_BY_ROW + + +OCI_ASSOC +; + +363 + g$št + = +$ãtchStyË + & +Doùrše_CÜe +:: +FETCH_COLUMN +; + +365 ià( + g$ãtchStyË + =ð +Doùrše_CÜe +:: +FETCH_BOTH +) { + +366 +$æags + = +OCI_BOTH +; + +367 + g$numb”OfRows + = @ +oci_ãtch_®l +( +$this +-> +¡©em’t +, +$d©a +, +$sk +, +$maxrows +, +OCI_FETCHSTATEMENT_BY_ROW + + +OCI_ASSOC + + +OCI_RETURN_LOBS +); + +368 } ià( + g$ãtchStyË + =ð +Doùrše_CÜe +:: +FETCH_ASSOC +) { + +369 +$numb”OfRows + = @ +oci_ãtch_®l +( +$this +-> +¡©em’t +, +$d©a +, +$sk +, +$maxrows +, +OCI_FETCHSTATEMENT_BY_ROW + + +OCI_ASSOC + + +OCI_RETURN_LOBS +); + +370 } ià( + g$ãtchStyË + =ð +Doùrše_CÜe +:: +FETCH_NUM +) { + +371 +$numb”OfRows + = @ +oci_ãtch_®l +( +$this +-> +¡©em’t +, +$d©a +, +$sk +, +$maxrows +, +OCI_FETCHSTATEMENT_BY_ROW + + +OCI_NUM + + +OCI_RETURN_LOBS +); + +372 } ià( + g$ãtchStyË + =ð +Doùrše_CÜe +:: +FETCH_COLUMN +) { + +373  +$row + = @ +oci_ãtch_¬¿y + ( +$this +-> +¡©em’t +, +OCI_NUM ++ +OCI_RETURN_LOBS +)) { + +374 + g$d©a +[] = +$row +[ +$cÞnum +]; + +377 +throw + +Ãw + +Doùrše_Ad­‹r_Exû±iÚ +("UnsuµÜ‹d mode: '" . +$ãtchStyË + . "' "); + +380  + g$d©a +; + +393 +public + +funùiÚ + + $ãtchCÞumn +( +$cÞumnIndex + = 0) + +395 iàÐ! + `is_š‹g” +( +$cÞumnIndex +)) { + +396 +$this +-> + `hªdËE¼Ü +( + `¬¿y +('message'=>"columnIndex…arameter should be‚umeric")); + +398  +çl£ +; + +400 +$row + = +$this +-> + `ãtch +( +Doùrše_CÜe +:: +FETCH_NUM +); + +401  + `is£t +( +$row +[ +$cÞumnIndex +]è? $row[$cÞumnIndex] : +çl£ +; + +402 + } +} + +416 +public + +funùiÚ + +ãtchObjeù +( +$þassName + = '¡dCÏss', +$¬gs + = + $¬¿y +()) + +418 +$row + = +$this +-> + `ãtch +( +Doùrše_CÜe +:: +FETCH_ASSOC +); + +419 ià( +$row + ==ð +çl£ +) { + +420  +çl£ +; + +423 +$š¡ªtŸtiÚ_code + = "\$object =‚ew $className("; + +424 +$fœ¡P¬am += +Œue +; + +425 + `fܗch + ( +$¬gs + +as + +$šdex +=> +$v®ue +) { + +426 iàÐ! +$fœ¡P¬am + ) { + +427 +$š¡ªtŸtiÚ_code + = $instantiation_code . ","; + +429 +$fœ¡P¬am +ð +çl£ +; + +431 iàÐ + `is_¡ršg +( +$šdex +)) { + +432 +$š¡ªtŸtiÚ_code + = $instantiation_code . " \$args['$index']"; + +434 +$š¡ªtŸtiÚ_code + = $instantiation_code . "\$args[$index]"; + +438 +$š¡ªtŸtiÚ_code + = $instantiation_code . ");"; + +440 + `ev® +( +$š¡ªtŸtiÚ_code +); + +443 + `fܗch + ( +$row + +as + +$cÞ + => +$v®ue +) { + +444 +$objeù +-> +$cÞ + = +$v®ue +; + +447  +$objeù +; + +448 + } +} + +465 +public + +funùiÚ + + $g‘CÞumnM‘a +( +$cÞumn +) + +467 ià( + `is_š‹g” +( +$cÞumn +)) { + +468 +$š‹º®_cÞumn + = +$cÞumn + +1; + +470 +$š‹º®_cÞumn + = +$cÞumn +; + +473 +$d©a + = + `¬¿y +(); + +474 +$d©a +['Çtive_ty³'] = + `oci_f›ld_ty³ +( +$this +-> +¡©em’t +, +$š‹º®_cÞumn +); + +475 +$d©a +['flags'] = ""; + +476 +$d©a +['Ën'] = + `oci_f›ld_size +( +$this +-> +¡©em’t +, +$š‹º®_cÞumn +); + +477 +$d©a +['Çme'] = + `oci_f›ld_Çme +( +$this +-> +¡©em’t +, +$š‹º®_cÞumn +); + +478 +$d©a +['´ecisiÚ'] = + `oci_f›ld_´ecisiÚ +( +$this +-> +¡©em’t +, +$š‹º®_cÞumn +); + +480  +$d©a +; + +481 + } +} + +493 +public + +funùiÚ + + $ÃxtRow£t +() + +495 +throw + +Ãw + + `Doùrše_Ad­‹r_Exû±iÚ +("Unsupported"); + +496 + } +} + +509 +public + +funùiÚ + + $rowCouÁ +() + +511  @ + `oci_num_rows +( +$this +-> +¡©em’t +); + +512 + } +} + +521 +public + +funùiÚ + + $£tA‰ribu‹ +( +$©Œibu‹ +, +$v®ue +) + +523  +$©Œibu‹ +) { + +524  +Doùrše_CÜe +:: +ATTR_ERRMODE +; + +527 +throw + +Ãw + + `Doùrše_Ad­‹r_Exû±iÚ +("Unsupported Attribute: $attribute"); + +529 +$this +-> +©Œibu‹s +[ +$©Œibu‹ +] = +$v®ue +; + +530 + } +} + +539 +public + +funùiÚ + + $g‘A‰ribu‹ +( +$©Œibu‹ +) + +541  +$this +-> +©Œibu‹s +[ +$©Œibu‹ +]; + +542 + } +} + +550 +public + +funùiÚ + + $£tF‘chMode +( +$mode +, +$¬g1 + = +nuÎ +, +$¬g2 + =‚ull) + +552 +throw + +Ãw + + `Doùrše_Ad­‹r_Exû±iÚ +("Unsupported"); + +553 + } +} + +555 +´iv©e + +funùiÚ + +hªdËE¼Ü +( +$·¿ms += + $¬¿y +()) + +558  +$this +-> +©Œibu‹s +[ +Doùrše_CÜe +:: +ATTR_ERRMODE +]) { + +559  +Doùrše_CÜe +:: +ERRMODE_EXCEPTION +: + +560 ià( + `is£t +( +$·¿ms +['message'])) { + +561 +throw + +Ãw + + `Doùrše_Ad­‹r_Exû±iÚ +( +$·¿ms +['message']); + +563 +throw + +Ãw + + `Doùrše_Ad­‹r_Exû±iÚ +( +$this +-> + `”rÜInfo +()); + +567  +Doùrše_CÜe +:: +ERRMODE_WARNING +: + +568  +Doùrše_CÜe +:: +ERRMODE_SILENT +: + +571 + } +} + +579 +´iv©e + +funùiÚ + + $·r£Qu”y +( +$qu”y += +nuÎ +) + +581 ià( + `is_nuÎ +( +$qu”y +)) { + +582 +$qu”y + = +$this +-> +qu”ySŒšg +; + +584 +$bšd_šdex + = 1; + +586 +$qu”y + = + `´eg_»¶aû +("/(\?)/e", '":oci_b_var_". $bind_index++' , $query); + +588 +$this +-> +¡©em’t + = @ + `oci_·r£ +($this-> +cÚÃùiÚ +, +$qu”y +); + +590 iàÐ +$this +-> +¡©em’t + =ð +çl£ + ) + +592 +throw + +Ãw + + `Doùrše_Ad­‹r_Exû±iÚ +( +$this +-> + `g‘OciE¼Ü +()); + +595  +$this +-> +¡©em’t +; + +596 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/AuditLog.php + +1 '%CLASS%Version', + +41 'v”siÚ' => +¬¿y +('name' => 'version', + +42 '®Ÿs' => +nuÎ +, + +45 'ÝtiÚs' => +¬¿y +('´im¬y' => +Œue +)), + +46 'bËName' => +çl£ +, + +47 'g’”©eFžes' => +çl£ +, + +48 'bË' => +çl£ +, + +49 '¶ugšTabË' => +çl£ +, + +50 'chžd»n' => +¬¿y +(), + +51 'aud™Log' => +Œue +, + +52 'd–‘eV”siÚs' => +Œue +, + +53 'ÿsÿdeD–‘e' => +Œue +, + +54 'exþudeF›lds' => +¬¿y +(), + +55 '­pLev–D–‘e' => +çl£ +); + +63 +public + +funùiÚ + +__cÚ¡ruù +( +¬¿y + +$ÝtiÚs + = + $¬¿y +()) + +65 +$this +-> +_ÝtiÚs + = +Doùrše_Lib +:: + `¬¿yD“pM”ge +($this->_ÝtiÚs, +$ÝtiÚs +); + +68 +public + +funùiÚ + + $buždR–©iÚ +() + +70 +$this +-> + `buždFÜeignR–©iÚ +('Version'); + +71 +$this +-> + `buždLoÿlR–©iÚ +(); + +72 + } +} + +79 +public + +funùiÚ + + $£tTabËDefš™iÚ +() + +81 +$Çme + = +$this +-> +_ÝtiÚs +['bË']-> + `g‘CompڒtName +(); + +84 +$cÞumns + = +$this +-> +_ÝtiÚs +['bË']-> + `g‘CÞumns +(); + +87 + `fܗch + ( +$cÞumns + +as + +$cÞumn + => +$defš™iÚ +) { + +88 ià( + `š_¬¿y +( +$cÞumn +, +$this +-> +_ÝtiÚs +['excludeFields'])) { + +91 + `un£t +( +$defš™iÚ +['autoincrement']); + +92 + `un£t +( +$defš™iÚ +['sequence']); + +93 + `un£t +( +$defš™iÚ +['unique']); + +95 +$f›ldName + = +$this +-> +_ÝtiÚs +['bË']-> + `g‘F›ldName +( +$cÞumn +); + +96 ià( +$f›ldName + !ð +$cÞumn +) { + +97 +$Çme + = +$cÞumn + . '‡ ' . +$f›ldName +; + +99 +$Çme + = +$f›ldName +; + +102 +$this +-> + `hasCÞumn +( +$Çme +, +$defš™iÚ +['type'], $definition['length'], $definition); + +106 +$this +-> + `hasCÞumn +( + +107 +$this +-> +_ÝtiÚs +['version']['name'], + +108 +$this +-> +_ÝtiÚs +['version']['type'], + +109 +$this +-> +_ÝtiÚs +['version']['length'], + +110 +$this +-> +_ÝtiÚs +['version']['options']); + +111 + } +} + +122 +public + +funùiÚ + +g‘V”siÚ +( +Doùrše_RecÜd + +$»cÜd +, +$v”siÚ +, +$hyd¿tiÚMode + = +Doùrše_CÜe +:: +HYDRATE_ARRAY +, +$asCÞËùiÚ + = +Œue +) + +124 +$þassName + = +$this +-> +_ÝtiÚs +['className']; + +125 + g$m‘hod + = ( +$asCÞËùiÚ +) ? 'execute' : 'fetchOne'; + +127 + g$q + = +Doùrše_CÜe +:: +g‘TabË +( +$þassName +) + +128 -> +ü—‹Qu”y +(); + +130 + g$v®ues + = +¬¿y +(); + +131 +fܗch + (( +¬¿y +è +$this +-> +_ÝtiÚs +['bË']-> +g‘Id’tif›r +(è +as + +$id +) { + +132 + g$cÚd™iÚs +[] = +$þassName + . '.' . +$id + . ' = ?'; + +133 + g$v®ues +[] = +$»cÜd +-> +g‘ +( +$id +); + +136 + g$wh”e + = +im¶ode +(' AND ', +$cÚd™iÚs +è. ' AND ' . + g$þassName + . '.' . + g$this +-> + g_ÝtiÚs +['version']['name'] . ' = ?'; + +138 + g$v®ues +[] = +$v”siÚ +; + +140 + g$q +-> +wh”e +( +$wh”e +); + +142  + g$q +-> +$m‘hod +( +$v®ues +, +$hyd¿tiÚMode +); + +151 +public + +funùiÚ + + $g‘MaxV”siÚ +( +Doùrše_RecÜd + +$»cÜd +) + +153 +$þassName + = +$this +-> +_ÝtiÚs +['className']; + +154 +$£Ëù + = 'MAX(' . +$þassName + . '.' . +$this +-> +_ÝtiÚs +['version']['name'] . ') max_version'; + +156 + `fܗch + (( +¬¿y +è +$this +-> +_ÝtiÚs +['bË']-> + `g‘Id’tif›r +(è +as + +$id +) { + +157 +$cÚd™iÚs +[] = +$þassName + . '.' . +$id + . ' = ?'; + +158 +$v®ues +[] = +$»cÜd +-> + `g‘ +( +$id +); + +161 +$q + = +Doùrše_CÜe +:: + `g‘TabË +( +$þassName +) + +162 -> + `ü—‹Qu”y +() + +163 -> + `£Ëù +( +$£Ëù +) + +164 -> + `wh”e +( + `im¶ode +(' AND ', +$cÚd™iÚs +)); + +166 +$»suÉ + = +$q +-> + `execu‹ +( +$v®ues +, +Doùrše_CÜe +:: +HYDRATE_ARRAY +); + +168  + `is£t +( +$»suÉ +[0]['max_version']) ? $result[0]['max_version']:0; + +169 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/AuditLog/Listener.php + +1 +_aud™Log + = +$aud™Log +; + +59 +public + +funùiÚ + + $´eIn£¹ +( +Doùrše_Ev’t + +$ev’t +) + +61 +$v”siÚ + = +$this +-> +_aud™Log +-> + `g‘O±iÚ +('version'); + +62 +$Çme + = +$v”siÚ +['®Ÿs'] ==ð +nuÎ + ? $version['name'] : $version['alias']; + +64 +$»cÜd + = +$ev’t +-> + `g‘Invok” +(); + +65 +$»cÜd +-> + `£t +( +$Çme +, +$this +-> + `_g‘In™ŸlV”siÚ +($record)); + +66 + } +} + +75 +public + +funùiÚ + + $po¡In£¹ +( +Doùrše_Ev’t + +$ev’t +) + +77 ià( +$this +-> +_aud™Log +-> + `g‘O±iÚ +('auditLog')) { + +78 +$þass + = +$this +-> +_aud™Log +-> + `g‘O±iÚ +('className'); + +80 +$»cÜd + = +$ev’t +-> + `g‘Invok” +(); + +81 +$v”siÚ + = +Ãw + + `$þass +(); + +82 +$v”siÚ +-> + `m”ge +( +$»cÜd +-> + `toA¼ay +(), +çl£ +); + +83 +$v”siÚ +-> + `§ve +(); + +85 + } +} + +94 +public + +funùiÚ + + $´eD–‘e +( +Doùrše_Ev’t + +$ev’t +) + +96 ià( +$this +-> +_aud™Log +-> + `g‘O±iÚ +('auditLog')) { + +97 +$þassName + = +$this +-> +_aud™Log +-> + `g‘O±iÚ +('className'); + +98 +$v”siÚ + = +$this +-> +_aud™Log +-> + `g‘O±iÚ +('version'); + +99 +$Çme + = +$v”siÚ +['®Ÿs'] ==ð +nuÎ + ? $version['name'] : $version['alias']; + +100 +$ev’t +-> + `g‘Invok” +()-> + `£t +( +$Çme +, +nuÎ +); + +102 ià( +$this +-> +_aud™Log +-> + `g‘O±iÚ +('deleteVersions')) { + +103 +$q + = +Doùrše_CÜe +:: + `g‘TabË +( +$þassName +) + +104 -> + `ü—‹Qu”y +('obj') + +105 -> + `d–‘e +(); + +106 + `fܗch + (( +¬¿y +è +$this +-> +_aud™Log +-> + `g‘O±iÚ +('bË')-> + `g‘Id’tif›r +(è +as + +$id +) { + +107 +$cÚd™iÚs +[] = 'obj.' . +$id + . ' = ?'; + +108 +$v®ues +[] = +$ev’t +-> + `g‘Invok” +()-> + `g‘ +( +$id +); + +111 +$rows + = +$q +-> + `wh”e +( + `im¶ode +(' AND ', +$cÚd™iÚs +)) + +112 -> + `execu‹ +( +$v®ues +); + +115 + } +} + +124 +public + +funùiÚ + + $´eUpd©e +( +Doùrše_Ev’t + +$ev’t +) + +126 ià( +$this +-> +_aud™Log +-> + `g‘O±iÚ +('auditLog')) { + +127 +$þass + = +$this +-> +_aud™Log +-> + `g‘O±iÚ +('className'); + +128 +$»cÜd + = +$ev’t +-> + `g‘Invok” +(); + +130 +$v”siÚ + = +$this +-> +_aud™Log +-> + `g‘O±iÚ +('version'); + +131 +$Çme + = +$v”siÚ +['®Ÿs'] ==ð +nuÎ + ? $version['name'] : $version['alias']; + +133 +$»cÜd +-> + `£t +( +$Çme +, +$this +-> + `_g‘NextV”siÚ +($record)); + +135 +$v”siÚ + = +Ãw + + `$þass +(); + +136 +$v”siÚ +-> + `m”ge +( +$»cÜd +-> + `toA¼ay +(), +çl£ +); + +137 +$v”siÚ +-> + `§ve +(); + +139 + } +} + +147 +´Ùeùed + +funùiÚ + + $_g‘In™ŸlV”siÚ +( +Doùrše_RecÜd + +$»cÜd +) + +150 + } +} + +158 +´Ùeùed + +funùiÚ + + $_g‘NextV”siÚ +( +Doùrše_RecÜd + +$»cÜd +) + +160 ià( +$this +-> +_aud™Log +-> + `g‘O±iÚ +('auditLog')) { + +161  ( +$this +-> +_aud™Log +-> + `g‘MaxV”siÚ +( +$»cÜd +) + 1); + +163 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/AuditLog/Listener/Microtime.php + +1 +_aud™Log +-> + `g‘O±iÚ +('version'); + +52 ià(! + `em±y +( +$v”siÚ +['accuracy'])) { + +53 +$this +-> +accu¿cy + = +$v”siÚ +['accuracy']; + +63 +´Ùeùed + +funùiÚ + + $_g‘In™ŸlV”siÚ +( +Doùrše_RecÜd + +$»cÜd +) + +65  +$this +-> + `_miüÙime +(); + +66 + } +} + +74 +´Ùeùed + +funùiÚ + + $_g‘NextV”siÚ +( +Doùrše_RecÜd + +$»cÜd +) + +76  +$this +-> + `_miüÙime +(); + +77 + } +} + +84 +´Ùeùed + +funùiÚ + + $_miüÙime +() + +86 +$v”siÚ + = + `miüÙime +( +Œue +) - 1073741824; + +87 +$v”siÚ + = + `¡r_»¶aû +('.', '', ( +¡ršg +)$version); + +88  + `sub¡r +( +$v”siÚ +, 0, +$this +-> +accu¿cy +); + +89 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Builder.php + +1 +d©a +[ +$id +])) { + +51  +$this +-> +d©a +[ +$id +]; + +53  +çl£ +; + +62 +´Ùeùed + +funùiÚ + + $_doCڏšs +( +$id +) + +64  + `is£t +( +$this +-> +d©a +[ +$id +]); + +65 + } +} + +76 +´Ùeùed + +funùiÚ + + $_doSave +( +$id +, +$d©a +, +$liãTime + = +çl£ +) + +78 +$this +-> +d©a +[ +$id +] = +$d©a +; + +80  +Œue +; + +81 + } +} + +90 +´Ùeùed + +funùiÚ + + $_doD–‘e +( +$id +) + +92 +$exi¡s + = + `is£t +( +$this +-> +d©a +[ +$id +]); + +94 + `un£t +( +$this +-> +d©a +[ +$id +]); + +96  +$exi¡s +; + +97 + } +} + +104 +´Ùeùed + +funùiÚ + + $_g‘CacheKeys +() + +106  + `¬¿y_keys +( +$this +-> +d©a +); + +107 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Cache/Db.php + +1 +_ÝtiÚs + = +$ÝtiÚs +; + +65 +public + +funùiÚ + + $g‘CÚÃùiÚ +() + +67  +$this +-> +_ÝtiÚs +['connection']; + +68 + } +} + +77 +´Ùeùed + +funùiÚ + + $_doF‘ch +( +$id +, +$‹¡CacheV®id™y + = +Œue +) + +79 +$sql + = 'SELECT d©a,ƒxpœFROM ' . +$this +-> +_ÝtiÚs +['tableName'] + +82 ià( +$‹¡CacheV®id™y +) { + +83 +$sql + .ð" AND (expœi nuÎ ORƒxpœ> '" . + `d©e +('Y-m-d H:i:s') . "')"; + +86 +$»suÉ + = +$this +-> + `g‘CÚÃùiÚ +()-> + `execu‹ +( +$sql +, + `¬¿y +( +$id +))-> + `ãtchAÎ +( +Doùrše_CÜe +:: +FETCH_NUM +); + +88 iàÐ! + `is£t +( +$»suÉ +[0])) { + +89  +çl£ +; + +92  + `un£rŸlize +( +$this +-> + `_hex2bš +( +$»suÉ +[0][0])); + +93 + } +} + +101 +´Ùeùed + +funùiÚ + + $_doCڏšs +( +$id +) + +103 +$sql + = 'SELECT id,ƒxpœFROM ' . +$this +-> +_ÝtiÚs +['tableName'] + +106 +$»suÉ + = +$this +-> + `g‘CÚÃùiÚ +()-> + `ãtchOà +( +$sql +, + `¬¿y +( +$id +)); + +108 ià( + `is£t +( +$»suÉ +[0] )) { + +109  + `time +(); + +111  +çl£ +; + +112 + } +} + +123 +´Ùeùed + +funùiÚ + + $_doSave +( +$id +, +$d©a +, +$liãTime + = +çl£ +, +$§veKey + = +Œue +) + +125 ià( +$this +-> + `cڏšs +( +$id +)) { + +127 +$sql + = 'UPDATE ' . +$this +-> +_ÝtiÚs +['tableName'] + +131 ià( +$liãTime +) { + +132 +$expœe + = + `d©e +('Y-m-d H:i:s', + `time +(è+ +$liãTime +); + +134 +$expœe + = +NULL +; + +137 +$·¿ms + = + `¬¿y +( + `bš2hex +( + `£rŸlize +( +$d©a +)), +$expœe +, +$id +); + +140 +$sql + = 'INSERT INTO ' . +$this +-> +_ÝtiÚs +['tableName'] + +143 ià( +$liãTime +) { + +144 +$expœe + = + `d©e +('Y-m-d H:i:s', + `time +(è+ +$liãTime +); + +146 +$expœe + = +NULL +; + +149 +$·¿ms + = + `¬¿y +( +$id +, + `bš2hex +( + `£rŸlize +( +$d©a +)), +$expœe +); + +152  +$this +-> + `g‘CÚÃùiÚ +()-> + `exec +( +$sql +, +$·¿ms +); + +153 + } +} + +162 +´Ùeùed + +funùiÚ + + $_doD–‘e +( +$id +) + +164 +$sql + = 'DELETE FROM ' . +$this +-> +_ÝtiÚs +['tableName'] . ' WHERE id = ?'; + +165  +$this +-> + `g‘CÚÃùiÚ +()-> + `exec +( +$sql +, + `¬¿y +( +$id +)); + +166 + } +} + +173 +public + +funùiÚ + + $ü—‹TabË +() + +175 +$Çme + = +$this +-> +_ÝtiÚs +['tableName']; + +177 +$f›lds + = + `¬¿y +( + +178 'id' => + `¬¿y +( + +182 'd©a' => + `¬¿y +( + +185 'expœe' => + `¬¿y +( + +190 +$ÝtiÚs + = + `¬¿y +( + +191 '´im¬y' => + `¬¿y +('id') + +194 +$this +-> + `g‘CÚÃùiÚ +()-> +expÜt +-> + `ü—‹TabË +( +$Çme +, +$f›lds +, +$ÝtiÚs +); + +195 + } +} + +204 +´Ùeùed + +funùiÚ + + $_hex2bš +( +$hex +) + +206 iàÐ! + `is_¡ršg +( +$hex +)) { + +207  +nuÎ +; + +210 iàÐ! + `ùy³_xdig™ +( +$hex +)) { + +211  +$hex +; + +214  + `·ck +("H*", +$hex +); + +215 + } +} + +222 +´Ùeùed + +funùiÚ + + $_g‘CacheKeys +() + +224 +$sql + = 'SELECT id FROM ' . +$this +-> +_ÝtiÚs +['tableName']; + +225 +$keys + = + `¬¿y +(); + +226 +$»suÉs + = +$this +-> + `g‘CÚÃùiÚ +()-> + `execu‹ +( +$sql +)-> + `ãtchAÎ +( +Doùrše_CÜe +:: +FETCH_NUM +); + +227  +$i + = 0, +$couÁ + = + `couÁ +( +$»suÉs +); $i < $count; $i++) { + +228 +$keys +[] = +$»suÉs +[ +$i +][0]; + +230  +$keys +; + +231 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Cache/Driver.php + +1 +_ÝtiÚs + = +$ÝtiÚs +; + +58 +public + +funùiÚ + + $£tO±iÚ +( +$ÝtiÚ +, +$v®ue +) + +60 ià( + `is£t +( +$this +-> +_ÝtiÚs +[ +$ÝtiÚ +])) { + +61 +$this +-> +_ÝtiÚs +[ +$ÝtiÚ +] = +$v®ue +; + +62  +Œue +; + +64  +çl£ +; + +65 + } +} + +73 +public + +funùiÚ + + $g‘O±iÚ +( +$ÝtiÚ +) + +75 iàÐ! + `is£t +( +$this +-> +_ÝtiÚs +[ +$ÝtiÚ +])) { + +76  +nuÎ +; + +79  +$this +-> +_ÝtiÚs +[ +$ÝtiÚ +]; + +80 + } +} + +89 +public + +funùiÚ + + $ãtch +( +$id +, +$‹¡CacheV®id™y + = +Œue +) + +91 +$key + = +$this +-> + `_g‘Key +( +$id +); + +92  +$this +-> + `_doF‘ch +( +$key +, +$‹¡CacheV®id™y +); + +93 + } +} + +101 +public + +funùiÚ + + $cڏšs +( +$id +) + +103 +$key + = +$this +-> + `_g‘Key +( +$id +); + +104  +$this +-> + `_doCڏšs +( +$key +); + +105 + } +} + +115 +public + +funùiÚ + + $§ve +( +$id +, +$d©a +, +$liãTime + = +çl£ +) + +117 +$key + = +$this +-> + `_g‘Key +( +$id +); + +118  +$this +-> + `_doSave +( +$key +, +$d©a +, +$liãTime +); + +119 + } +} + +129 +public + +funùiÚ + + $d–‘e +( +$id +) + +131 +$key + = +$this +-> + `_g‘Key +( +$id +); + +133 ià( + `¡½os +( +$key +, '*'è!=ð +çl£ +) { + +134  +$this +-> + `d–‘eByRegex +('/' . + `¡r_»¶aû +('*', '.*', +$key +) . '/'); + +137  +$this +-> + `_doD–‘e +( +$key +); + +138 + } +} + +146 +public + +funùiÚ + + $d–‘eByRegex +( +$»gex +) + +148 +$couÁ + = 0; + +149 +$keys + = +$this +-> + `_g‘CacheKeys +(); + +150 ià( + `is_¬¿y +( +$keys +)) { + +151 + `fܗch + ( +$keys + +as + +$key +) { + +152 ià( + `´eg_m©ch +( +$»gex +, +$key +)) { + +153 +$couÁ +++; + +154 +$this +-> + `d–‘e +( +$key +); + +158  +$couÁ +; + +159 + } +} + +167 +public + +funùiÚ + + $d–‘eByP»fix +( +$´efix +) + +169 +$couÁ + = 0; + +170 +$keys + = +$this +-> + `_g‘CacheKeys +(); + +171 ià( + `is_¬¿y +( +$keys +)) { + +172 + `fܗch + ( +$keys + +as + +$key +) { + +173 ià( + `¡½os +( +$key +, +$´efix +) === 0) { + +174 +$couÁ +++; + +175 +$this +-> + `d–‘e +( +$key +); + +179  +$couÁ +; + +180 + } +} + +188 +public + +funùiÚ + + $d–‘eBySuffix +( +$suffix +) + +190 +$couÁ + = 0; + +191 +$keys + = +$this +-> + `_g‘CacheKeys +(); + +192 ià( + `is_¬¿y +( +$keys +)) { + +193 + `fܗch + ( +$keys + +as + +$key +) { + +194 ià( + `sub¡r +( +$key +, -1 * + `¡¾’ +( +$suffix +)) == $suffix) { + +195 +$couÁ +++; + +196 +$this +-> + `d–‘e +( +$key +); + +200  +$couÁ +; + +201 + } +} + +208 +public + +funùiÚ + + $d–‘eAÎ +() + +210 +$couÁ + = 0; + +211 ià( + `is_¬¿y +( +$keys + = +$this +-> + `_g‘CacheKeys +())) { + +212 + `fܗch + ( +$keys + +as + +$key +) { + +213 +$couÁ +++; + +214 +$this +-> + `d–‘e +( +$key +); + +217  +$couÁ +; + +218 + } +} + +226 +´Ùeùed + +funùiÚ + + $_g‘Key +( +$id +) + +228 +$´efix + = + `is£t +( +$this +-> +_ÝtiÚs +['prefix']) ? $this->_options['prefix'] : ''; + +230 iàÐ! +$´efix + || + `¡½os +( +$id +, $prefix) === 0) { + +231  +$id +; + +233  +$´efix + . +$id +; + +235 + } +} + +242 +ab¡¿ù + +´Ùeùed + +funùiÚ + +_g‘CacheKeys +(); + +251 +ab¡¿ù + +´Ùeùed + +funùiÚ + +_doF‘ch +( +$id +, +$‹¡CacheV®id™y + = +Œue +); + +259 +ab¡¿ù + +´Ùeùed + +funùiÚ + +_doCڏšs +( +$id +); + +270 +ab¡¿ù + +´Ùeùed + +funùiÚ + +_doSave +( +$id +, +$d©a +, +$liãTime + = +çl£ +); + +279 +ab¡¿ù + +´Ùeùed + +funùiÚ + +_doD–‘e +( +$id +); + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Cache/Exception.php + +1 $value); + +59 +$this +-> + `£tO±iÚ +('£rv”s', +$v®ue +); + +62 +$this +-> +_memÿche + = +Ãw + +Memÿche +; + +64 + `fܗch + ( +$this +-> +_ÝtiÚs +['£rv”s'] +as + +$£rv” +) { + +65 iàÐ! + `¬¿y_key_exi¡s +('³rsi¡’t', +$£rv” +)) { + +66 +$£rv” +['³rsi¡’t'] = +Œue +; + +68 iàÐ! + `¬¿y_key_exi¡s +('pÜt', +$£rv” +)) { + +69 +$£rv” +['port'] = 11211; + +71 +$this +-> +_memÿche +-> + `addS”v” +( +$£rv” +['host'], $server['port'], $server['persistent']); + +81 +´Ùeùed + +funùiÚ + + $_doF‘ch +( +$id +, +$‹¡CacheV®id™y + = +Œue +) + +83  +$this +-> +_memÿche +-> + `g‘ +( +$id +); + +84 + } +} + +92 +´Ùeùed + +funùiÚ + + $_doCڏšs +( +$id +) + +94  ( +boÞ +è +$this +-> +_memÿche +-> + `g‘ +( +$id +); + +95 + } +} + +106 +´Ùeùed + +funùiÚ + + $_doSave +( +$id +, +$d©a +, +$liãTime + = +çl£ +) + +108 ià( +$this +-> +_ÝtiÚs +['compression']) { + +109 +$æag + = +MEMCACHE_COMPRESSED +; + +111 +$æag + = 0; + +114  +$this +-> +_memÿche +-> + `£t +( +$id +, +$d©a +, +$æag +, +$liãTime +); + +115 + } +} + +124 +´Ùeùed + +funùiÚ + + $_doD–‘e +( +$id +) + +126  +$this +-> +_memÿche +-> + `d–‘e +( +$id +); + +127 + } +} + +134 +´Ùeùed + +funùiÚ + + $_g‘CacheKeys +() + +136 +$keys + = + `¬¿y +(); + +137 +$®lSÏbs + = +$this +-> +_memÿche +-> + `g‘Ex‹ndedSts +('slabs'); + +139 + `fܗch + ( +$®lSÏbs + +as + +$£rv” + => +$¦abs +) { + +140 + `fܗch + ( + `¬¿y_keys +( +$¦abs +è +as + +$¦abId +) { + +141 +$dump + = +$this +-> +_memÿche +-> + `g‘Ex‹ndedSts +('ÿchedump', (è +$¦abId +); + +142 + `fܗch + ( +$dump + +as + +$’Œ›s +) { + +143 ià( +$’Œ›s +) { + +144 +$keys + = + `¬¿y_m”ge +($keys, + `¬¿y_keys +( +$’Œ›s +)); + +149  +$keys +; + +150 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Cache/Xcache.php + +1 + `_doCڏšs +( +$id +è? + `xÿche_g‘ +($idè: +çl£ +; + +60 + } +} + +68 +´Ùeùed + +funùiÚ + + $_doCڏšs +( +$id +) + +70  + `xÿche_is£t +( +$id +); + +71 + } +} + +82 +´Ùeùed + +funùiÚ + + $_doSave +( +$id +, +$d©a +, +$liãTime + = +çl£ +) + +84  + `xÿche_£t +( +$id +, +$d©a +, +$liãTime +); + +85 + } +} + +94 +´Ùeùed + +funùiÚ + + $_doD–‘e +( +$id +) + +96  + `xÿche_un£t +( +$id +); + +97 + } +} + +104 +´Ùeùed + +funùiÚ + + $_g‘CacheKeys +() + +106 +$this +-> + `checkAuth +(); + +107 +$keys + = + `¬¿y +(); + +108  +$i + = 0, +$couÁ + = + `xÿche_couÁ +( +XC_TYPE_VAR +); $i < $count; $i++) { + +109 +$’Œ›s + = + `xÿche_li¡ +( +XC_TYPE_VAR +, +$i +); + +110 ià( + `is_¬¿y +( +$’Œ›s +['cache_list'])) { + +111 + `fܗch + ( +$’Œ›s +['ÿche_li¡'] +as + +$’Œy +) { + +112 +$keys +[] = +$’Œy +['name']; + +116  +$keys +; + +117 + } +} + +125 +´Ùeùed + +funùiÚ + + $checkAuth +() + +127 ià( + `ši_g‘ +('xcache.admin.enable_auth')) { + +128 +throw + +Ãw + + `Doùrše_Cache_Exû±iÚ +('To use‡ll features of Doctrine_Cache_Xcache, you must set "xcache.admin.enable_auth"o "Off" in your…hp.ini.'); + +130 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Cli.php + +1 +£tCÚfig +( +$cÚfig +); + +80 + m$this +-> +£tFÜm©‹r +( +$fÜm©‹r + ? $fÜm©‹¸: +Ãw + +Doùrše_Cli_AnsiCÞÜFÜm©‹r +()); + +81 + m$this +-> +šþudeAndRegi¡”TaskCÏs£s +(); + +87 +public + +funùiÚ + + $£tCÚfig +( +¬¿y + +$cÚfig +) + +89 +$this +-> +_cÚfig + = +$cÚfig +; + +90 + } +} + +95 +public + +funùiÚ + + $g‘CÚfig +() + +97  +$this +-> +_cÚfig +; + +98 + } +} + +103 +public + +funùiÚ + + $£tFÜm©‹r +( +Doùrše_Cli_FÜm©‹r + +$fÜm©‹r +) + +105 +$this +-> +_fÜm©‹r + = +$fÜm©‹r +; + +106 + } +} + +111 +public + +funùiÚ + + $g‘FÜm©‹r +() + +113  +$this +-> +_fÜm©‹r +; + +114 + } +} + +123 +public + +funùiÚ + + $g‘CÚfigV®ue +( +$Çme + ) + +125 ià(! + `is£t +( +$this +-> +_cÚfig +[ +$Çme +])) { + +126 ià( + `func_num_¬gs +() > 1) { + +127  + `func_g‘_¬g +(1); + +130 +throw + +Ãw + + `OutOfBoundsExû±iÚ +("Theƒlement \"{$name}\" does‚otƒxist inhe config"); + +133  +$this +-> +_cÚfig +[ +$Çme +]; + +134 + } +} + +149 +public + +funùiÚ + + $hasCÚfigV®ue +( +$Çme +, +$v®ue + = +nuÎ +, +$¡riù + = +çl£ +) + +151 ià( + `is£t +( +$this +-> +_cÚfig +[ +$Çme +])) { + +152 ià( + `func_num_¬gs +() < 2) { + +153  +Œue +; + +156 ià( +$¡riù +) { + +157  +$this +-> +_cÚfig +[ +$Çme +] ==ð +$v®ue +; + +160  +$this +-> +_cÚfig +[ +$Çme +] =ð +$v®ue +; + +163  +çl£ +; + +164 + } +} + +171 +public + +funùiÚ + + $£tRegi¡”edTasks +( +¬¿y + +$»gi¡”edTask +) + +173 +$this +-> +_»gi¡”edTask + = +$»gi¡”edTask +; + +174 + } +} + +181 +public + +funùiÚ + + $g‘Regi¡”edTasks +() + +183  +$this +-> +_»gi¡”edTask +; + +184 + } +} + +192 +public + +funùiÚ + + $skCÏssIsRegi¡”ed +( +$þassName +) + +194  + `is£t +( +$this +-> +_»gi¡”edTask +[ +$þassName +]); + +195 + } +} + +206 +public + +funùiÚ + + $skNameIsRegi¡”ed +( +$skName +, & +$þassName + = +nuÎ +) + +208 + `fܗch + ( +$this +-> + `g‘Regi¡”edTasks +(è +as + +$cu¼CÏssName + => +$sk +) { + +209 ià( +$sk +-> + `g‘TaskName +(è=ð +$skName +) { + +210 +$þassName + = +$cu¼CÏssName +; + +211  +Œue +; + +215  +çl£ +; + +216 + } +} + +221 +public + +funùiÚ + + $£tTaskIn¡ªû +( +Doùrše_Task + +$sk +) + +223 +$this +-> +_skIn¡ªû + = +$sk +; + +224 + } +} + +229 +public + +funùiÚ + + $g‘TaskIn¡ªû +() + +231  +$this +-> +_skIn¡ªû +; + +232 + } +} + +241 +´Ùeùed + +funùiÚ + + $šþudeAndRegi¡”TaskCÏs£s +() + +243 +$this +-> + `šþudeAndRegi¡”DoùršeTaskCÏs£s +(); + +246 ià( +$this +-> + `g‘CÚfigV®ue +('autÜegi¡”_cu¡om_sks', +Œue +)) { + +247 +$this +-> + `»gi¡”InþudedTaskCÏs£s +(); + +249 + } +} + +258 +´Ùeùed + +funùiÚ + + $šþudeAndRegi¡”DoùršeTaskCÏs£s +( +$dœeùܛs + = +nuÎ +) + +260 ià( + `is_nuÎ +( +$dœeùܛs +)) { + +261 +$dœeùܛs + = +Doùrše_CÜe +:: + `g‘P©h +(è. +DIRECTORY_SEPARATOR + . 'Doctrine' . DIRECTORY_SEPARATOR . 'Task'; + +264 + `fܗch + (( +¬¿y +è +$dœeùܛs + +as + +$dœeùÜy +) { + +265 + `fܗch + ( +$this +-> + `šþudeDoùršeTaskCÏs£s +( +$dœeùÜy +è +as + +$þassName +) { + +266 +$this +-> + `»gi¡”TaskCÏss +( +$þassName +); + +269 + } +} + +287 +´Ùeùed + +funùiÚ + + $šþudeDoùršeTaskCÏs£s +( +$dœeùÜy +) + +289 ià(! + `is_dœ +( +$dœeùÜy +)) { + +290 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +("The directory \"{$directory}\" does‚otƒxist"); + +293 +$skCÏs£sInþuded + = + `¬¿y +(); + +295 +$™”©Ü + = +Ãw + + `RecursiveI‹¿tÜI‹¿tÜ +( + +296 +Ãw + + `RecursiveDœeùÜyI‹¿tÜ +( +$dœeùÜy +), + +297 +RecursiveI‹¿tÜI‹¿tÜ +:: +LEAVES_ONLY + + +300 + `fܗch + ( +$™”©Ü + +as + +$fže +) { + +301 +$ba£Name + = +$fže +-> + `g‘FžeName +(); + +307 +$m©ched + = ( +boÞ +è + `´eg_m©ch +('/^([A-Z].*?)\.php$/', +$ba£Name +, +$m©ches +); + +309 iàÐ! ( +$m©ched + && ( + `¡½os +( +$ba£Name +, '.šc'è==ð +çl£ +))) { + +313 +$ex³ùedCÏssName + = +£lf +:: +TASK_BASE_CLASS + . '_' . +$m©ches +[1]; + +315 iàÐ! + `þass_exi¡s +( +$ex³ùedCÏssName +)) { + +316 + `»quœe_Úû +( +$fže +-> + `g‘P©hName +()); + +320 ià( + `þass_exi¡s +( +$ex³ùedCÏssName +, +çl£ +è&& +$this +-> + `þassIsTask +($expectedClassName)) { + +321 +$skCÏs£sInþuded +[] = +$ex³ùedCÏssName +; + +325  +$skCÏs£sInþuded +; + +326 + } +} + +335 +public + +funùiÚ + + $»gi¡”TaskCÏss +( +$þassName +) + +338 ià( +$this +-> + `skCÏssIsRegi¡”ed +( +$þassName +)) { + +342 iàÐ! + `þass_exi¡s +( +$þassName + )) { + +343 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +("Theask class \"{$className}\" does‚otƒxist"); + +346 iàÐ! +$this +-> + `þassIsTask +( +$þassName +)) { + +347 +throw + +Ãw + + `DomašExû±iÚ +("The class \"{$className}\" is‚ot‡ Doctrine Task"); + +350 +$this +-> +_»gi¡”edTask +[ +$þassName +] = $this-> + `ü—‹TaskIn¡ªû +($className, $this); + +351 + } +} + +359 +´Ùeùed + +funùiÚ + + $þassIsTask +( +$þassName +) + +361 +$»æeùiÚCÏss + = +Ãw + + `ReæeùiÚCÏss +( +$þassName +); + +362  ( +boÞ +è +$»æeùiÚCÏss +-> + `isSubCÏssOf +( +£lf +:: +TASK_BASE_CLASS +); + +363 + } +} + +374 +´Ùeùed + +funùiÚ + + $ü—‹TaskIn¡ªû +( +$þassName +, +Doùrše_Cli + +$þi +) + +376  +Ãw + + `$þassName +( +$þi +); + +377 + } +} + +384 +public + +funùiÚ + + $»gi¡”InþudedTaskCÏs£s +() + +386 + `fܗch + ( + `g‘_deþ¬ed_þas£s +(è +as + +$þassName +) { + +387 ià( +$this +-> + `þassIsTask +( +$þassName +)) { + +388 +$this +-> + `»gi¡”TaskCÏss +( +$þassName +); + +391 + } +} + +400 +public + +funùiÚ + +nÙify +( +$nÙifiÿtiÚ + = +nuÎ +, +$¡yË + = 'HEADER') + +402 +$fÜm©‹r + = +$this +-> +g‘FÜm©‹r +(); + +404 +echo +( + +405 +$fÜm©‹r +-> +fÜm© +( +$this +-> +g‘TaskIn¡ªû +()-> +g‘TaskName +(), 'INFO') . ' - ' . + +406 +$fÜm©‹r +-> +fÜm© +( +$nÙifiÿtiÚ +, +$¡yË +) . "\n" + +416 +´Ùeùed + +funùiÚ + + $fÜm©Exû±iÚMes§ge +( +Exû±iÚ + +$exû±iÚ +) + +418 +$mes§ge + = +$exû±iÚ +-> + `g‘Mes§ge +(); + +420 ià( +Doùrše_CÜe +:: + `debug +()) { + +421 +$mes§ge + .ð"\n" . +$exû±iÚ +-> + `g‘T¿ûAsSŒšg +(); + +424  +$this +-> + `g‘FÜm©‹r +()-> + `fÜm© +( +$mes§ge +, 'ERROR') . "\n"; + +425 + } +} + +436 +´Ùeùed + +funùiÚ + + $nÙifyExû±iÚ +( +Exû±iÚ + +$exû±iÚ +) + +438 +echo + +$this +-> + `fÜm©Exû±iÚMes§ge +( +$exû±iÚ +); + +439 + } +} + +449 +public + +funùiÚ + + $run +( +¬¿y + +$¬gs +) + +451 +Œy + { + +452 +$this +-> + `_run +( +$¬gs +); + +453 } + `ÿtch + ( +Exû±iÚ + +$exû±iÚ +) { + +455 ià( +$this +-> + `g‘CÚfigV®ue +('»throw_exû±iÚs', +çl£ +)) { + +456 +throw + +Ãw + + `$exû±iÚ +( +$this +-> + `fÜm©Exû±iÚMes§ge +( +$exû±iÚ +)); + +459 +$this +-> + `nÙifyExû±iÚ +( +$exû±iÚ +); + +462 ià( +$exû±iÚ + +š¡ªûof + +Doùrše_Cli_Exû±iÚ +) { + +463 +$this +-> + `´štTasks +(); + +466 + } +} + +476 +´Ùeùed + +funùiÚ + + $_run +( +¬¿y + +$¬gs +) + +478 +$this +-> +_sütName + = +$¬gs +[0]; + +480 +$»que¡edTaskName + = + `is£t +( +$¬gs +[1]è? $¬gs[1] : +nuÎ +; + +482 iàÐ! +$»que¡edTaskName + || $requestedTaskName == 'help') { + +483 +$this +-> + `´štTasks +( +nuÎ +, +$»que¡edTaskName + =ð'h–p' ? +Œue + : +çl£ +); + +487 ià( +$»que¡edTaskName + && + `is£t +( +$¬gs +[2]) && $args[2] === 'help') { + +488 +$this +-> + `´štTasks +( +$»que¡edTaskName +, +Œue +); + +492 ià(! +$this +-> + `skNameIsRegi¡”ed +( +$»que¡edTaskName +, +$skCÏssName +)) { + +493 +throw + +Ãw + + `Doùrše_Cli_Exû±iÚ +("Theask \"{$requestedTaskName}\" has‚ot been„egistered"); + +496 +$skIn¡ªû + = +$this +-> + `ü—‹TaskIn¡ªû +( +$skCÏssName +, $this); + +497 +$this +-> + `£tTaskIn¡ªû +( +$skIn¡ªû +); + +498 +$this +-> + `execu‹Task +( +$skIn¡ªû +, $this-> + `´•¬eArgs +( + `¬¿y_¦iû +( +$¬gs +, 2))); + +499 + } +} + +508 +´Ùeùed + +funùiÚ + + $execu‹Task +( +Doùrše_Task + +$sk +, +¬¿y + +$´•¬edArgum’ts +) + +510 +$sk +-> + `£tArgum’ts +( +$´•¬edArgum’ts +); + +512 ià(! +$sk +-> + `v®id©e +()) { + +513 +throw + +Ãw + + `Doùrše_Cli_Exû±iÚ +('Required‡rguments missing'); + +516 +$sk +-> + `execu‹ +(); + +517 + } +} + +527 +´Ùeùed + +funùiÚ + + $´•¬eArgs +( +¬¿y + +$¬gs +) + +529 +$skIn¡ªû + = +$this +-> + `g‘TaskIn¡ªû +(); + +531 +$¬gs + = + `¬¿y_v®ues +($args); + +534 +$´•¬ed + = + `¬¿y +(); + +536 +$»quœedArgum’ts + = +$skIn¡ªû +-> + `g‘RequœedArgum’ts +(); + +537 + `fܗch + ( +$»quœedArgum’ts + +as + +$key + => +$¬g +) { + +538 +$´•¬ed +[ +$¬g +] = +nuÎ +; + +541 +$ÝtiÚ®Argum’ts + = +$skIn¡ªû +-> + `g‘O±iÚ®Argum’ts +(); + +542 + `fܗch + ( +$ÝtiÚ®Argum’ts + +as + +$key + => +$¬g +) { + +543 +$´•¬ed +[ +$¬g +] = +nuÎ +; + +547 + `fܗch + ( +$this +-> + `g‘CÚfig +(è +as + +$key + => +$v®ue +) { + +548 ià( + `¬¿y_key_exi¡s +( +$key +, +$´•¬ed +)) { + +549 +$´•¬ed +[ +$key +] = +$v®ue +; + +554 +$cÝy + = +$¬gs +; + +555 + `fܗch + ( +$´•¬ed + +as + +$key + => +$v®ue +) { + +556 iàÐ! +$v®ue + && ! + `em±y +( +$cÝy +)) { + +557 +$´•¬ed +[ +$key +] = +$cÝy +[0]; + +558 + `un£t +( +$cÝy +[0]); + +559 +$cÝy + = + `¬¿y_v®ues +($copy); + +563  +$´•¬ed +; + +564 + } +} + +573 +public + +funùiÚ + + $´štTasks +( +$skName + = +nuÎ +, +$fuÎ + = +çl£ +) + +575 +$fÜm©‹r + = +$this +-> + `g‘FÜm©‹r +(); + +576 +$cÚfig + = +$this +-> + `g‘CÚfig +(); + +578 +$skIndex + = +$fÜm©‹r +-> + `fÜm© +('Doctrine Command Line Interface', 'HEADER') . "\n\n"; + +580 + `fܗch + ( +$this +-> + `g‘Regi¡”edTasks +(è +as + +$sk +) { + +581 ià( +$skName + && ( + `¡¹Þow” +($skNameè!ð¡¹Þow”( +$sk +-> + `g‘TaskName +()))) { + +585 +$skIndex + .ð +$fÜm©‹r +-> + `fÜm© +( +$this +-> +_sütName + . ' ' . +$sk +-> + `g‘TaskName +(), 'INFO'); + +587 ià( +$fuÎ +) { + +588 +$skIndex + .ð' - ' . +$sk +-> + `g‘DesütiÚ +() . "\n"; + +590 +$¬gs + = ''; + +591 +$¬gs + .ð +$this +-> + `as£mbËArgum’tLi¡ +( +$sk +-> + `g‘RequœedArgum’tsDesütiÚs +(), +$cÚfig +, +$fÜm©‹r +); + +592 +$¬gs + .ð +$this +-> + `as£mbËArgum’tLi¡ +( +$sk +-> + `g‘O±iÚ®Argum’tsDesütiÚs +(), +$cÚfig +, +$fÜm©‹r +); + +594 ià( +$¬gs +) { + +595 +$skIndex + .ð"\n" . +$fÜm©‹r +-> + `fÜm© +('Argum’ts:', 'HEADER'è. "\n" . +$¬gs +; + +599 +$skIndex + .= "\n"; + +602 +echo + +$skIndex +; + +603 + } +} + +611 +´Ùeùed + +funùiÚ + + $as£mbËArgum’tLi¡ +( +¬¿y + +$¬gum’tsDesütiÚs +,‡¼ay +$cÚfig +, +Doùrše_Cli_FÜm©‹r + +$fÜm©‹r +) + +613 +$¬gum’tLi¡ + = ''; + +615 + `fܗch + ( +$¬gum’tsDesütiÚs + +as + +$Çme + => +$desütiÚ +) { + +616 +$¬gum’tLi¡ + .ð +$fÜm©‹r +-> + `fÜm© +( +$Çme +, 'ERROR') . ' - '; + +618 ià( + `is£t +( +$cÚfig +[ +$Çme +])) { + +619 +$¬gum’tLi¡ + .ð +$fÜm©‹r +-> + `fÜm© +( +$cÚfig +[ +$Çme +], 'COMMENT'); + +621 +$¬gum’tLi¡ + .ð +$desütiÚ +; + +624 +$¬gum’tLi¡ + .= "\n"; + +627  +$¬gum’tLi¡ +; + +628 + } +} + +637 +´iv©e + +funùiÚ + + $ü—‹OldStyËTaskLi¡ +( +¬¿y + +$»gi¡”edTask +) + +639 +$skNames + = + `¬¿y +(); + +641 + `fܗch + ( +$»gi¡”edTask + +as + +$þassName + => +$sk +) { + +642 +$skName + = +$sk +-> + `g‘TaskName +(); + +643 +$skNames +[ +$skName +] = $taskName; + +646  +$skNames +; + +647 + } +} + +654 +public + +funùiÚ + + $lßdTasks +( +$dœeùÜy + = +nuÎ +) + +656 +$this +-> + `šþudeAndRegi¡”DoùršeTaskCÏs£s +( +$dœeùÜy +); + +657  +$this +-> + `ü—‹OldStyËTaskLi¡ +($this-> + `g‘Regi¡”edTasks +()); + +658 + } +} + +665 +´Ùeùed + +funùiÚ + + $_g‘TaskCÏssFromArgs +( +¬¿y + +$¬gs +) + +667  +£lf +:: +TASK_BASE_CLASS + . '_' . +Doùrše_InæeùÜ +:: + `þassify +( + `¡r_»¶aû +('-', '_', +$¬gs +[1])); + +668 + } +} + +675 +public + +funùiÚ + + $g‘LßdedTasks +() + +677  +$this +-> + `ü—‹OldStyËTaskLi¡ +($this-> + `g‘Regi¡”edTasks +()); + +678 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Cli/AnsiColorFormatter.php + +1 +¬¿y +('fg' => 'bÏck', 'bÞd' => +Œue +), + +48 'ERROR' => +¬¿y +('bg' => '»d', 'fg' => 'wh™e', 'bÞd' => +Œue +), + +49 'INFO' => +¬¿y +('fg' => 'g»’', 'bÞd' => +Œue +), + +50 'COMMENT' => +¬¿y +('fg' => 'yellow'), + +52 + m$_ÝtiÚs + = +¬¿y +('bold' => 1, 'underscore' => 4, 'blink' => 5, 'reverse' => 7, 'conceal' => 8), + +53 + m$_fÜeground + = +¬¿y +('black' => 30, 'red' => 31, 'green' => 32, 'yellow' => 33, 'blue' => 34, 'magenta' => 35, 'cyan' => 36, 'white' => 37), + +54 + m$_background + = +¬¿y +('black' => 40, 'red' => 41, 'green' => 42, 'yellow' => 43, 'blue' => 44, 'magenta' => 45, 'cyan' => 46, 'white' => 47); + +62 +public + +funùiÚ + +£tStyË +( +$Çme +, +$ÝtiÚs + = + $¬¿y +()) + +64 +$this +-> +_¡yËs +[ +$Çme +] = +$ÝtiÚs +; + +75 +public + +funùiÚ + + `fÜm© +( +$‹xt + = '', +$·¿m‘”s + = + `¬¿y +(), +$¡»am + = +STDOUT +) + +77 iàÐ! +$this +-> + `suµÜtsCÞÜs +( +$¡»am +)) { + +78  +$‹xt +; + +81 iàÐ! + `is_¬¿y +( +$·¿m‘”s +) && 'NONE' == $parameters) { + +82  +$‹xt +; + +85 iàÐ! + `is_¬¿y +( +$·¿m‘”s +è&& + `is£t +( +$this +-> +_¡yËs +[$parameters])) { + +86 +$·¿m‘”s + = +$this +-> +_¡yËs +[$parameters]; + +89 +$codes + = + `¬¿y +(); + +90 ià( + `is£t +( +$·¿m‘”s +['fg'])) { + +91 +$codes +[] = +$this +-> +_fÜeground +[ +$·¿m‘”s +['fg']]; + +94 ià( + `is£t +( +$·¿m‘”s +['bg'])) { + +95 +$codes +[] = +$this +-> +_background +[ +$·¿m‘”s +['bg']]; + +98 + `fܗch + ( +$this +-> +_ÝtiÚs + +as + +$ÝtiÚ + => +$v®ue +) { + +99 ià( + `is£t +( +$·¿m‘”s +[ +$ÝtiÚ +]) && $parameters[$option]) { + +100 +$codes +[] = +$v®ue +; + +104  "\033[". + `im¶ode +(';', +$codes +).'m'. +$‹xt +."\033[0m"; + +105 + } +} + +114 +public + +funùiÚ + + $fÜm©SeùiÚ +( +$£ùiÚ +, +$‹xt +, +$size + = +nuÎ +) + +116 +$width + = 9 + + `¡¾’ +( +$this +-> + `fÜm© +('', 'INFO')); + +118  + `¥rštf +(">> %-${width} %s", +$this +-> + `fÜm© +( +$£ùiÚ +, 'INFO'), $this-> + `exû½t +( +$‹xt +, +$size +)); + +119 + } +} + +129 +public + +funùiÚ + + $exû½t +( +$‹xt +, +$size + = +nuÎ +) + +131 iàÐ! +$size +) { + +132 +$size + = +$this +-> +size +; + +135 ià( + `¡¾’ +( +$‹xt +è< +$size +) { + +136  +$‹xt +; + +139 +$subsize + = + `æoÜ +(( +$size + - 3) / 2); + +141  + `sub¡r +( +$‹xt +, 0, +$subsize +è. +$this +-> + `fÜm© +('...', 'INFO').substr($text, -$subsize); + +142 + } +} + +156 +public + +funùiÚ + + $suµÜtsCÞÜs +( +$¡»am +) + +158  +DIRECTORY_SEPARATOR + !ð'\\' && + `funùiÚ_exi¡s +('posix_i§‰y'è&& @ + `posix_i§‰y +( +$¡»am +); + +159 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Cli/Exception.php + +1 +_size + = +$maxLšeSize +; + +67 +public + +funùiÚ + + `fÜm© +( +$‹xt + = '', +$·¿m‘”s + = + `¬¿y +(), +$¡»am + = +STDOUT +) + +69  +$‹xt +; + +70 + } +} + +79 +public + +funùiÚ + + $fÜm©SeùiÚ +( +$£ùiÚ +, +$‹xt +, +$size + = +nuÎ +) + +81  + `¥rštf +(">> %-$9 %s", +$£ùiÚ +, +$this +-> + `exû½t +( +$‹xt +, +$size +)); + +82 + } +} + +92 +public + +funùiÚ + + $exû½t +( +$‹xt +, +$size + = +nuÎ +) + +94 iàÐ! +$size +) { + +95 +$size + = +$this +-> +_size +; + +98 ià( + `¡¾’ +( +$‹xt +è< +$size +) { + +99  +$‹xt +; + +102 +$subsize + = + `æoÜ +(( +$size + - 3) / 2); + +104  + `sub¡r +( +$‹xt +, 0, +$subsize +).'...'.substr($text, -$subsize); + +105 + } +} + +112 +public + +funùiÚ + + $£tMaxLšeSize +( +$size +) + +114 +$this +-> +_size + = +$size +; + +115 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Collection.php + +1 + g_bË + = +$bË +; + +89 ià( + g$keyCÞumn + ==ð +nuÎ +) { + +90 +$keyCÞumn + = +$bË +-> +g‘BoundQu”yP¬t +('indexBy'); + +93 ià( + g$keyCÞumn + ==ð +nuÎ +) { + +94 +$keyCÞumn + = +$bË +-> +g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_COLL_KEY +); + +97 ià( + g$keyCÞumn + !=ð +nuÎ +) { + +98 +$this +-> +keyCÞumn + = +$keyCÞumn +; + +107 +public +  +funùiÚ + +š™NuÎObjeù +( +Doùrše_NuÎ + +$nuÎ +) + +109 + g£lf +:: +$nuÎ + = $null; + +112 +public +  +funùiÚ + +ü—‹ +( +$bË +, +$keyCÞumn + = +nuÎ +, +$þass + =‚ull) + +114 ià( +is_nuÎ +( +$þass +)) { + +115 iàÐ! +$bË + +š¡ªûof + +Doùrše_TabË +) { + +116 +$bË + = +Doùrše_CÜe +:: +g‘TabË +($table); + +118 + g$þass + = +$bË +-> +g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_COLLECTION_CLASS +); + +121  +Ãw + +$þass +( +$bË +, +$keyCÞumn +); + +129 +public + +funùiÚ + +g‘TabË +() + +131  + g$this +-> + g_bË +; + +140 +public + +funùiÚ + +£tD©a +( +¬¿y + +$d©a +) + +142 + g$this +-> + gd©a + = +$d©a +; + +150 +public + +funùiÚ + +£rŸlize +() + +152 + g$v¬s + = +g‘_objeù_v¬s +( +$this +); + +154 +un£t +( +$v¬s +['reference']); + +155 +un£t +( +$v¬s +['referenceField']); + +156 +un£t +( +$v¬s +['relation']); + +157 +un£t +( +$v¬s +['expandable']); + +158 +un£t +( +$v¬s +['expanded']); + +159 +un£t +( +$v¬s +['generator']); + +161 + g$v¬s +['_bË'] = +$v¬s +['_bË']-> +g‘CompڒtName +(); + +163  +£rŸlize +( +$v¬s +); + +171 +public + +funùiÚ + +un£rŸlize +( +$£rŸlized +) + +173 + g$mªag” + = +Doùrše_Mªag” +:: +g‘In¡ªû +(); + +174 + g$cÚÃùiÚ + = +$mªag” +-> +g‘Cu¼’tCÚÃùiÚ +(); + +176 + g$¬¿y + = +un£rŸlize +( +$£rŸlized +); + +178 +fܗch + ( +$¬¿y + +as + +$Çme + => +$v®ues +) { + +179 +$this +-> +$Çme + = +$v®ues +; + +182 + g$this +-> + g_bË + = +$cÚÃùiÚ +-> +g‘TabË +( +$this +-> +_bË +); + +184 + g$keyCÞumn + = +is£t +( +$¬¿y +['keyCÞumn']è? $¬¿y['keyCÞumn'] : +nuÎ +; + +185 ià( + g$keyCÞumn + ==ð +nuÎ +) { + +186 +$keyCÞumn + = +$this +-> +_bË +-> +g‘BoundQu”yP¬t +('indexBy'); + +189 ià( + g$keyCÞumn + !=ð +nuÎ +) { + +190 +$this +-> +keyCÞumn + = +$keyCÞumn +; + +200 +public + +funùiÚ + +£tKeyCÞumn +( +$cÞumn +) + +202 + g$this +-> + gkeyCÞumn + = +$cÞumn +; + +204  + g$this +; + +212 +public + +funùiÚ + +g‘KeyCÞumn +() + +214  + g$this +-> + gkeyCÞumn +; + +222 +public + +funùiÚ + +g‘D©a +() + +224  + g$this +-> + gd©a +; + +232 +public + +funùiÚ + +g‘Fœ¡ +() + +234  +»£t +( +$this +-> +d©a +); + +242 +public + +funùiÚ + +g‘La¡ +() + +244  +’d +( +$this +-> +d©a +); + +252 +public + +funùiÚ + +’d +() + +254  +’d +( +$this +-> +d©a +); + +262 +public + +funùiÚ + +key +() + +264  +key +( +$this +-> +d©a +); + +272 +public + +funùiÚ + +£tReã»nû +( +Doùrše_RecÜd + +$»cÜd +, +Doùrše_R–©iÚ + +$»ÏtiÚ +) + +274 + g$this +-> + g»ã»nû + = +$»cÜd +; + +275 + g$this +-> + g»ÏtiÚ + = +$»ÏtiÚ +; + +277 ià( +$»ÏtiÚ + +š¡ªûof + + gDoùrše_R–©iÚ_FÜeignKey + || + +278 +$»ÏtiÚ + +š¡ªûof + + gDoùrše_R–©iÚ_LoÿlKey +) { + +279 + g$this +-> + g»ã»nûF›ld + = +$»ÏtiÚ +-> +g‘FÜeignF›ldName +(); + +281 + g$v®ue + = +$»cÜd +-> +g‘ +( +$»ÏtiÚ +-> +g‘LoÿlF›ldName +()); + +283 +fܗch + ( +$this +-> +d©a + +as + +$»cÜd +) { + +284 ià( + g$v®ue + !=ð +nuÎ +) { + +285 +$»cÜd +-> +£t +( +$this +-> +»ã»nûF›ld +, +$v®ue +, +çl£ +); + +287 + g$»cÜd +-> +£t +( +$this +-> +»ã»nûF›ld +, $this-> +»ã»nû +, +çl£ +); + +290 } +–£if + ( +$»ÏtiÚ + +š¡ªûof + +Doùrše_R–©iÚ_AssocŸtiÚ +) { + +300 +public + +funùiÚ + +g‘Reã»nû +() + +302  + g$this +-> + g»ã»nû +; + +311 +public + +funùiÚ + +»move +( +$key +) + +313 + g$»moved + = +$this +-> +d©a +[ +$key +]; + +315 +un£t +( +$this +-> +d©a +[ +$key +]); + +316  + g$»moved +; + +325 +public + +funùiÚ + +cڏšs +( +$key +) + +327  +is£t +( +$this +-> +d©a +[ +$key +]); + +336 +public + +funùiÚ + +£¬ch +( +Doùrše_RecÜd + +$»cÜd +) + +338  +¬¿y_£¬ch +( +$»cÜd +, +$this +-> +d©a +, +Œue +); + +357 +public + +funùiÚ + +g‘ +( +$key +) + +359 iàÐ! +is£t +( +$this +-> +d©a +[ +$key +])) { + +360 + g$»cÜd + = +$this +-> +_bË +-> +ü—‹ +(); + +362 ià( +is£t +( +$this +-> +»ã»nûF›ld +)) { + +363 + g$v®ue + = +$this +-> +»ã»nû +-> +g‘ +($this-> +»ÏtiÚ +-> +g‘LoÿlF›ldName +()); + +365 ià( + g$v®ue + !=ð +nuÎ +) { + +366 +$»cÜd +-> +£t +( +$this +-> +»ã»nûF›ld +, +$v®ue +, +çl£ +); + +368 + g$»cÜd +-> +£t +( +$this +-> +»ã»nûF›ld +, $this-> +»ã»nû +, +çl£ +); + +371 ià( + g$key + ==ð +nuÎ +) { + +372 +$this +-> +d©a +[] = +$»cÜd +; + +374 + g$this +-> + gd©a +[ +$key +] = +$»cÜd +; + +377 ià( +is£t +( +$this +-> +keyCÞumn +)) { + +378 + g$»cÜd +-> +£t +( +$this +-> +keyCÞumn +, +$key +); + +381  + g$»cÜd +; + +384  + g$this +-> + gd©a +[ +$key +]; + +392 +public + +funùiÚ + +g‘Prim¬yKeys +() + +394 + g$li¡ + = +¬¿y +(); + +395 + g$Çme + = +$this +-> +_bË +-> +g‘Id’tif›r +(); + +397 +fܗch + ( +$this +-> +d©a + +as + +$»cÜd +) { + +398 ià( +is_¬¿y +( +$»cÜd +è&& +is£t +($»cÜd[ +$Çme +])) { + +399 + g$li¡ +[] = +$»cÜd +[ +$Çme +]; + +401 + g$li¡ +[] = +$»cÜd +-> +g‘Inüem’‹d +(); + +404  + g$li¡ +; + +412 +public + +funùiÚ + +g‘Keys +() + +414  +¬¿y_keys +( +$this +-> +d©a +); + +423 +public + +funùiÚ + +couÁ +() + +425  +couÁ +( +$this +-> +d©a +); + +435 +public + +funùiÚ + +£t +( +$key +, +$»cÜd +) + +437 ià( +is£t +( +$this +-> +»ã»nûF›ld +)) { + +438 + g$»cÜd +-> +£t +( +$this +-> +»ã»nûF›ld +, $this-> +»ã»nû +, +çl£ +); + +441 + g$this +-> + gd©a +[ +$key +] = +$»cÜd +; + +451 +public + +funùiÚ + +add +( +$»cÜd +, +$key + = +nuÎ +) + +453 ià( +is£t +( +$this +-> +»ã»nûF›ld +)) { + +454 +$v®ue + = +$this +-> +»ã»nû +-> +g‘ +($this-> +»ÏtiÚ +-> +g‘LoÿlF›ldName +()); + +455 ià( + g$v®ue + !=ð +nuÎ +) { + +456 +$»cÜd +-> +£t +( +$this +-> +»ã»nûF›ld +, +$v®ue +, +çl£ +); + +458 + g$»cÜd +-> +£t +( +$this +-> +»ã»nûF›ld +, $this-> +»ã»nû +, +çl£ +); + +460 + g$»ÏtiÚs + = +$this +-> +»ÏtiÚ +['bË']-> +g‘R–©iÚs +(); + +461 +fܗch + ( +$»ÏtiÚs + +as + +$»ÏtiÚ +) { + +462 ià( + g$this +-> + g»ÏtiÚ +['þass'] =ð +$»ÏtiÚ +['loÿlTabË']-> +g‘O±iÚ +('Çme'è&& $»ÏtiÚ-> +g‘Loÿl +(è=ð +$this +-> +»ÏtiÚ +-> +g‘FÜeignF›ldName +()) { + +463 +$»cÜd +-> +$»ÏtiÚ +['®Ÿs'] = +$this +-> +»ã»nû +; + +473 +fܗch + ( +$this +-> +d©a + +as + +$v® +) { + +474 ià( + g$v® + ==ð +$»cÜd +) { + +475  +çl£ +; + +479 ià( +is£t +( +$key +)) { + +480 ià( +is£t +( +$this +-> +d©a +[ +$key +])) { + +481  + gçl£ +; + +483 + g$this +-> + gd©a +[ +$key +] = +$»cÜd +; + +484  + gŒue +; + +487 ià( +is£t +( +$this +-> +keyCÞumn +)) { + +488 + g$v®ue + = +$»cÜd +-> +g‘ +( +$this +-> +keyCÞumn +); + +489 ià( + g$v®ue + ==ð +nuÎ +) { + +490 +throw + +Ãw + +Doùrše_CÞËùiÚ_Exû±iÚ +("Couldn'ˆü—‹ cÞËùiÚ index. RecÜd f›ld '". +$this +-> +keyCÞumn +."' was‚ull."); + +492 + g$this +-> + gd©a +[ +$v®ue +] = +$»cÜd +; + +494 + g$this +-> + gd©a +[] = +$»cÜd +; + +497  + gŒue +; + +506 +public + +funùiÚ + +m”ge +( +Doùrše_CÞËùiÚ + +$cÞl +) + +508 + g$loÿlBa£ + = +$this +-> +g‘TabË +()-> +g‘CompڒtName +(); + +509 + g$Ùh”Ba£ + = +$cÞl +-> +g‘TabË +()-> +g‘CompڒtName +(); + +511 ià( + g$Ùh”Ba£ + !ð +$loÿlBa£ + && ! +is_subþass_of +( +$Ùh”Ba£ +, $localBase) ) { + +512 +throw + +Ãw + +Doùrše_CÞËùiÚ_Exû±iÚ +("Can't merge collections with incompatible„ecordypes"); + +515 +fܗch + ( +$cÞl +-> +g‘D©a +(è +as + +$»cÜd +) { + +516 + g$this +-> +add +( +$»cÜd +); + +519  + g$this +; + +528 +public + +funùiÚ + +lßdR–©ed +( +$Çme + = +nuÎ +) + +530 +$li¡ + = +¬¿y +(); + +531 + g$qu”y + = +$this +-> +_bË +-> +ü—‹Qu”y +(); + +533 iàÐ! +is£t +( +$Çme +)) { + +534 +fܗch + ( +$this +-> +d©a + +as + +$»cÜd +) { + +535 + g$v®ue + = +$»cÜd +-> +g‘Inüem’‹d +(); + +536 ià( + g$v®ue + !=ð +nuÎ +) { + +537 +$li¡ +[] = +$v®ue +; + +540 + g$qu”y +-> +wh”e +( +$this +-> +_bË +-> +g‘CompڒtName +(è. '.id IN (' . +sub¡r +( +¡r_»³© +("?, ", +couÁ +( +$li¡ +)),0,-2) . ')'); + +541 iàÐ! + g$li¡ +) { + +542 + g$qu”y +-> +wh”e +( +$this +-> +_bË +-> +g‘CompڒtName +(è. '.id IN (' . +sub¡r +( +¡r_»³© +("?, ", +couÁ +( +$li¡ +)),0,-2) . ')', $list); + +545  + g$qu”y +; + +548 + g$»l + = +$this +-> +_bË +-> +g‘R–©iÚ +( +$Çme +); + +550 ià( +$»l + +š¡ªûof + + gDoùrše_R–©iÚ_LoÿlKey + || $»Èš¡ªûoà + gDoùrše_R–©iÚ_FÜeignKey +) { + +551 +fܗch + ( +$this +-> +d©a + +as + +$»cÜd +) { + +552 + g$li¡ +[] = +$»cÜd +[ +$»l +-> +g‘Loÿl +()]; + +555 +fܗch + ( +$this +-> +d©a + +as + +$»cÜd +) { + +556 + g$v®ue + = +$»cÜd +-> +g‘Inüem’‹d +(); + +557 ià( + g$v®ue + !=ð +nuÎ +) { + +558 +$li¡ +[] = +$v®ue +; + +563 iàÐ! + g$li¡ +) { + +567 + g$dql + = +$»l +-> +g‘R–©iÚDql +( +couÁ +( +$li¡ +), 'collection'); + +569 + g$cÞl + = +$qu”y +-> +qu”y +( +$dql +, +$li¡ +); + +571 + g$this +-> +pÝuϋR–©ed +( +$Çme +, +$cÞl +); + +581 +public + +funùiÚ + +pÝuϋR–©ed +( +$Çme +, +Doùrše_CÞËùiÚ + +$cÞl +) + +583 + g$»l + = +$this +-> +_bË +-> +g‘R–©iÚ +( +$Çme +); + +584 + g$bË + = +$»l +-> +g‘TabË +(); + +585 + g$fÜeign + = +$»l +-> +g‘FÜeign +(); + +586 + g$loÿl + = +$»l +-> +g‘Loÿl +(); + +588 ià( +$»l + +š¡ªûof + + gDoùrše_R–©iÚ_LoÿlKey +) { + +589 +fܗch + ( +$this +-> +d©a + +as + +$key + => +$»cÜd +) { + +590 +fܗch + ( +$cÞl + +as + +$k + => +$»Ï‹d +) { + +591 ià( +$»Ï‹d +[ +$fÜeign +] =ð +$»cÜd +[ +$loÿl +]) { + +592 +$this +-> +d©a +[ +$key +]-> +£tR–©ed +( +$Çme +, +$»Ï‹d +); + +596 } +–£if + ( +$»l + +š¡ªûof + +Doùrše_R–©iÚ_FÜeignKey +) { + +597 +fܗch + ( +$this +-> +d©a + +as + +$key + => +$»cÜd +) { + +598 iàÐ! +$»cÜd +-> +exi¡s +()) { + +601 + g$sub + = +Doùrše_CÞËùiÚ +:: +ü—‹ +( +$bË +); + +603 +fܗch + ( +$cÞl + +as + +$k + => +$»Ï‹d +) { + +604 ià( +$»Ï‹d +[ +$fÜeign +] =ð +$»cÜd +[ +$loÿl +]) { + +605 +$sub +-> +add +( +$»Ï‹d +); + +606 + g$cÞl +-> +»move +( +$k +); + +610 + g$this +-> + gd©a +[ +$key +]-> +£tR–©ed +( +$Çme +, +$sub +); + +612 } +–£if + ( +$»l + +š¡ªûof + +Doùrše_R–©iÚ_AssocŸtiÚ +) { + +613 + g$id’tif›r + = +$this +-> +_bË +-> +g‘Id’tif›r +(); + +614 + g$asf + = +$»l +-> +g‘AssocŸtiÚFaùÜy +(); + +615 + g$Çme + = +$bË +-> +g‘CompڒtName +(); + +617 +fܗch + ( +$this +-> +d©a + +as + +$key + => +$»cÜd +) { + +618 iàÐ! +$»cÜd +-> +exi¡s +()) { + +621 + g$sub + = +Doùrše_CÞËùiÚ +:: +ü—‹ +( +$bË +); + +622 +fܗch + ( +$cÞl + +as + +$k + => +$»Ï‹d +) { + +623 ià( +$»Ï‹d +-> +g‘ +( +$loÿl +è=ð +$»cÜd +[ +$id’tif›r +]) { + +624 +$sub +-> +add +( +$»Ï‹d +-> +g‘ +( +$Çme +)); + +627 + g$this +-> + gd©a +[ +$key +]-> +£tR–©ed +( +$Çme +, +$sub +); + +638 +public + +funùiÚ + +g‘NÜm®I‹¿tÜ +() + +640  +Ãw + +Doùrše_CÞËùiÚ_I‹¿tÜ_NÜm® +( +$this +); + +655 +public + +funùiÚ + +keSÇpshÙ +() + +657 + g$this +-> + g_¢­shÙ + = +$this +-> +d©a +; + +659  + g$this +; + +667 +public + +funùiÚ + +g‘SÇpshÙ +() + +669  + g$this +-> + g_¢­shÙ +; + +683 +public + +funùiÚ + +´oûssDiff +() + +685 +fܗch + ( +¬¿y_udiff +( +$this +-> +_¢­shÙ +, $this-> +d©a +, +¬¿y +($this, "com·»RecÜds")è +as + +$»cÜd +) { + +686 + g$»cÜd +-> +d–‘e +(); + +689  + g$this +; + +697 +public + +funùiÚ + +toA¼ay +( +$d“p + = +Œue +, +$´efixKey + = +çl£ +) + +699 +$d©a + = +¬¿y +(); + +700 +fܗch + ( +$this + +as + +$key + => +$»cÜd +) { + +702 +$key + = +$´efixKey + ? +g‘_þass +( +$»cÜd +) . '_' .$key:$key; + +704 + g$d©a +[ +$key +] = +$»cÜd +-> +toA¼ay +( +$d“p +, +$´efixKey +); + +707  + g$d©a +; + +717 +public + +funùiÚ + +toKeyV®ueA¼ay +( +$key +, +$v®ue +) + +719 + g$»suÉ + = +¬¿y +(); + +720 +fܗch + ( +$this + +as + +$»cÜd +) { + +721 + g$»suÉ +[ +$»cÜd +-> +$key +] = $»cÜd-> +$v®ue +; + +723  + g$»suÉ +; + +726 +public + +funùiÚ + +toH›¿rchy +() + +728 + g$cÞËùiÚ + = +$this +; + +729 + g$bË + = +$cÞËùiÚ +-> +g‘TabË +(); + +731 iàÐ! + g$bË +-> +isT»e +(è|| ! $bË-> +hasCÞumn +('level')) { + +732 +throw + +Ãw + +Doùrše_Exû±iÚ +('Cannot hydrate modelhat does‚ot implements Tree behavior with `level` column'); + +736 + g$Œ“s + = +Ãw + +Doùrše_CÞËùiÚ +( +$bË +); + +737 + g$l + = 0; + +739 ià( +couÁ +( +$cÞËùiÚ +) > 0) { + +741 + g$¡ack + = +Ãw + +Doùrše_CÞËùiÚ +( +$bË +); + +743 +fܗch + ( +$cÞËùiÚ + +as + +$chžd +) { + +744 + g$™em + = +$chžd +; + +746 + g$™em +-> +m­V®ue +('__chžd»n', +Ãw + +Doùrše_CÞËùiÚ +( +$bË +)); + +749 + g$l + = +couÁ +( +$¡ack +); + +752  + g$l + > 0 && + g$¡ack +[ +$l + - 1]['Ëv–'] >ð +$™em +['level']) { + +753 +¬¿y_pÝ +( +$¡ack +-> +d©a +); + +754 + g$l +--; + +758 ià( + g$l + == 0) { + +760 +$i + = +couÁ +( +$Œ“s +); + +761 + g$Œ“s +[ +$i +] = +$™em +; + +762 + g$¡ack +[] = +$Œ“s +[ +$i +]; + +765 + g$i + = +couÁ +( +$¡ack +[ +$l + - 1]['__children']); + +766 + g$¡ack +[ +$l + - 1]['__chžd»n'][ +$i +] = +$™em +; + +767 + g$¡ack +[] = +$¡ack +[ +$l + - 1]['__chžd»n'][ +$i +]; + +771  + g$Œ“s +; + +780 +public + +funùiÚ + +äomA¼ay +( +$¬¿y +, +$d“p + = +Œue +) + +782 +$d©a + = +¬¿y +(); + +783 +fܗch + ( +$¬¿y + +as + +$rowKey + => +$row +) { + +784 +$this +[ +$rowKey +]-> +äomA¼ay +( +$row +, +$d“p +); + +797 +public + +funùiÚ + +synchrÚizeW™hA¼ay +( +¬¿y + +$¬¿y +) + +799 +fܗch + ( +$this + +as + +$key + => +$»cÜd +) { + +800 ià( +is£t +( +$¬¿y +[ +$key +])) { + +801 +$»cÜd +-> +synchrÚizeW™hA¼ay +( +$¬¿y +[ +$key +]); + +802 +un£t +( +$¬¿y +[ +$key +]); + +805 + g$this +-> +»move +( +$key +); + +809 +fܗch + ( +$¬¿y + +as + +$rowKey + => +$row +) { + +810 +$this +[ +$rowKey +]-> +äomA¼ay +( +$row +); + +814 +public + +funùiÚ + +synchrÚizeFromA¼ay +( +¬¿y + +$¬¿y +) + +816  + g$this +-> +synchrÚizeW™hA¼ay +( +$¬¿y +); + +826 +public + +funùiÚ + +expÜtTo +( +$ty³ +, +$d“p + = +Œue +) + +828 ià( +$ty³ + == 'array') { + +829  +$this +-> +toA¼ay +( +$d“p +); + +831  + gDoùrše_P¬£r +:: +dump +( +$this +-> +toA¼ay +( +$d“p +, +Œue +), +$ty³ +); + +842 +public + +funùiÚ + +impÜtFrom +( +$ty³ +, +$d©a +) + +844 ià( + g$ty³ + == 'array') { + +845  +$this +-> +äomA¼ay +( +$d©a +); + +847  + g$this +-> +äomA¼ay +( +Doùrše_P¬£r +:: +lßd +( +$d©a +, +$ty³ +)); + +856 +public + +funùiÚ + +g‘D–‘eDiff +() + +858  +¬¿y_udiff +( +$this +-> +_¢­shÙ +, $this-> +d©a +, +¬¿y +($this, 'compareRecords')); + +866 +public + +funùiÚ + +g‘In£¹Diff +() + +868  +¬¿y_udiff +( +$this +-> +d©a +, $this-> +_¢­shÙ +, +¬¿y +($this, "compareRecords")); + +878 +´Ùeùed + +funùiÚ + +com·»RecÜds +( +$a +, +$b +) + +880 ià( + g$a +-> +g‘Oid +(è=ð +$b +->getOid()) { + +884  ( + g$a +-> +g‘Oid +(è> + g$b +->getOid()) ? 1 : -1; + +894 +public + +funùiÚ + +§ve +( +Doùrše_CÚÃùiÚ + +$cÚn + = +nuÎ +, +$´oûssDiff + = +Œue +) + +896 ià( +$cÚn + =ð +nuÎ +) { + +897 +$cÚn + = +$this +-> +_bË +-> +g‘CÚÃùiÚ +(); + +900 + gŒy + { + +901 + g$cÚn +-> +begšIÁ”ÇlT¿n§ùiÚ +(); + +903 + g$cÚn +-> + gŒª§ùiÚ +-> +addCÞËùiÚ +( +$this +); + +905 ià( + g$´oûssDiff +) { + +906 + g$this +-> +´oûssDiff +(); + +909 +fܗch + ( +$this +-> +g‘D©a +(è +as + +$key + => +$»cÜd +) { + +910 +$»cÜd +-> +§ve +( +$cÚn +); + +913 + g$cÚn +-> +comm™ +(); + +914 } +ÿtch + ( +Exû±iÚ + +$e +) { + +915 + g$cÚn +-> +rÞlback +(); + +916 +throw + + g$e +; + +919  + g$this +; + +929 +public + +funùiÚ + +»¶aû +( +Doùrše_CÚÃùiÚ + +$cÚn + = +nuÎ +, +$´oûssDiff + = +Œue +) + +931 ià( +$cÚn + =ð +nuÎ +) { + +932 +$cÚn + = +$this +-> +_bË +-> +g‘CÚÃùiÚ +(); + +935 + gŒy + { + +936 + g$cÚn +-> +begšIÁ”ÇlT¿n§ùiÚ +(); + +938 + g$cÚn +-> + gŒª§ùiÚ +-> +addCÞËùiÚ +( +$this +); + +940 ià( + g$´oûssDiff +) { + +941 + g$this +-> +´oûssDiff +(); + +944 +fܗch + ( +$this +-> +g‘D©a +(è +as + +$key + => +$»cÜd +) { + +945 +$»cÜd +-> +»¶aû +( +$cÚn +); + +948 + g$cÚn +-> +comm™ +(); + +949 } +ÿtch + ( +Exû±iÚ + +$e +) { + +950 + g$cÚn +-> +rÞlback +(); + +951 +throw + + g$e +; + +954  + g$this +; + +962 +public + +funùiÚ + +d–‘e +( +Doùrše_CÚÃùiÚ + +$cÚn + = +nuÎ +, +$þ—rCÞl + = +Œue +) + +964 ià( +$cÚn + =ð +nuÎ +) { + +965 +$cÚn + = +$this +-> +_bË +-> +g‘CÚÃùiÚ +(); + +968 + gŒy + { + +969 + g$cÚn +-> +begšIÁ”ÇlT¿n§ùiÚ +(); + +970 + g$cÚn +-> + gŒª§ùiÚ +-> +addCÞËùiÚ +( +$this +); + +972 +fܗch + ( +$this + +as + +$key + => +$»cÜd +) { + +973 +$»cÜd +-> +d–‘e +( +$cÚn +); + +976 + g$cÚn +-> +comm™ +(); + +977 } +ÿtch + ( +Exû±iÚ + +$e +) { + +978 + g$cÚn +-> +rÞlback +(); + +979 +throw + + g$e +; + +982 ià( + g$þ—rCÞl +) { + +983 + g$this +-> +þ—r +(); + +986  + g$this +; + +994 +public + +funùiÚ + +þ—r +() + +996 + g$this +-> + gd©a + = +¬¿y +(); + +1006 +public + +funùiÚ + +ä“ +( +$d“p + = +çl£ +) + +1008 +fܗch + ( +$this +-> +g‘D©a +(è +as + +$key + => +$»cÜd +) { + +1009 iàÐ! ( +$»cÜd + +š¡ªûof + +Doùrše_NuÎ +)) { + +1010 +$»cÜd +-> +ä“ +( +$d“p +); + +1014 + g$this +-> + gd©a + = +¬¿y +(); + +1016 ià( + g$this +-> + g»ã»nû +) { + +1017 + g$this +-> + g»ã»nû +-> +ä“ +( +$d“p +); + +1018 + g$this +-> + g»ã»nû + = +nuÎ +; + +1027 +public + +funùiÚ + +g‘I‹¿tÜ +() + +1029 + g$d©a + = +$this +-> +d©a +; + +1030  +Ãw + +A¼ayI‹¿tÜ +( +$d©a +); + +1038 +public + +funùiÚ + +__toSŒšg +() + +1040  + gDoùrše_Lib +:: +g‘CÞËùiÚAsSŒšg +( +$this +); + +1048 +public + +funùiÚ + +g‘R–©iÚ +() + +1050  + g$this +-> + g»ÏtiÚ +; + +1059 +fš® + +public + +funùiÚ + +isModif›d +() { + +1060 + g$dœty + = ( +couÁ +( +$this +-> +g‘In£¹Diff +()è> 0 || couÁ($this-> +g‘D–‘eDiff +()) > 0); + +1061 iàÐ! + g$dœty +) { + +1062 +fܗch +( +$this + +as + +$»cÜd +) { + +1063 ià( + g$dœty + = +$»cÜd +-> +isModif›d +()) { + +1068  + g$dœty +; + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Collection/Exception.php + +1 +cÞËùiÚ + = +$cÞËùiÚ +; + +68 +$this +-> +keys + = $this-> +cÞËùiÚ +-> + `g‘Keys +(); + +69 +$this +-> +couÁ + = $this-> +cÞËùiÚ +-> + `couÁ +(); + +77 +public + +funùiÚ + + $»wšd +() + +79 +$this +-> +šdex + = 0; + +80 +$i + = +$this +-> +šdex +; + +81 ià( + `is£t +( +$this +-> +keys +[ +$i +])) { + +82 +$this +-> +key + = $this-> +keys +[ +$i +]; + +84 + } +} + +91 +public + +funùiÚ + + $key +() + +93  +$this +-> +key +; + +94 + } +} + +101 +public + +funùiÚ + + $cu¼’t +() + +103  +$this +-> +cÞËùiÚ +-> + `g‘ +($this-> +key +); + +104 + } +} + +111 +public + +funùiÚ + + $Ãxt +() + +113 +$this +-> +šdex +++; + +114 +$i + = +$this +-> +šdex +; + +115 ià( + `is£t +( +$this +-> +keys +[ +$i +])) { + +116 +$this +-> +key + = $this-> +keys +[ +$i +]; + +118 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Collection/Iterator/Expandable.php + +1 +šdex + < $this-> +couÁ +) { + +38  +Œue +; + +39 } + `–£if + ( +$this +-> +šdex + =ð$this-> +couÁ +) { + +40 +$cÞl + = +$this +-> +cÞËùiÚ +-> + `ex·nd +($this-> +šdex +); + +42 ià( +$cÞl + +š¡ªûof + +Doùrše_CÞËùiÚ +) { + +43 +$couÁ + = + `couÁ +( +$cÞl +); + +44 ià( +$couÁ + > 0) { + +45 +$this +-> +keys + = + `¬¿y_m”ge +($this->keys, +$cÞl +-> + `g‘Keys +()); + +46 +$this +-> +couÁ + +ð +$couÁ +; + +47  +Œue +; + +51  +çl£ +; + +54 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Collection/Iterator/Normal.php + +1 +šdex + < $this-> +couÁ +); + +42 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Collection/Iterator/Offset.php + +1 +lim™ + = +$bË +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_COLL_LIMIT +); + +53 +public + +funùiÚ + + $g‘Lim™ +() + +55  +$this +-> +lim™ +; + +56 + } +} + +61 +public + +funùiÚ + + $g‘I‹¿tÜ +() + +63  +Ãw + + `Doùrše_CÞËùiÚ_I‹¿tÜ_Ex·ndabË +( +$this +); + +64 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Collection/OnDemand.php + +1 +_¡mt + = +$¡mt +; + +45 +$this +-> +_hyd¿tÜ + = +$hyd¿tÜ +; + +46 +$this +-> +_bËAlŸsM­ + = +$bËAlŸsM­ +; + +47 +$this +-> +_cu¼’t + = +nuÎ +; + +48 +$this +-> +šdex + = 0; + +50 +$this +-> + `_hyd¿‹Cu¼’t +(); + +53 +´iv©e + +funùiÚ + + $_hyd¿‹Cu¼’t +() + +55 +$»cÜd + = +$this +-> +_hyd¿tÜ +-> + `hyd¿‹ResuÉS‘ +($this-> +_¡mt +); + +56 ià( +$»cÜd + +š¡ªûof + +Doùrše_CÞËùiÚ +) { + +57 +$this +-> +_cu¼’t + = +$»cÜd +-> + `g‘Fœ¡ +(); + +58 } ià( + `is_¬¿y +( +$»cÜd +è&& + `couÁ +($record) == 0) { + +59 +$this +-> +_cu¼’t + = +nuÎ +; + +60 } ià( + `is_¬¿y +( +$»cÜd +è&& + `is£t +($record[0])) { + +61 +$this +-> +_cu¼’t + = +$»cÜd +[0]; + +63 +$this +-> +_cu¼’t + = +$»cÜd +; + +65 + } +} + +67 +public + +funùiÚ + + $»wšd +() + +69 +$this +-> +šdex + = 0; + +70 +$this +-> +_¡mt +-> + `þo£CursÜ +(); + +71 +$this +-> +_¡mt +-> + `execu‹ +(); + +72 +$this +-> +_hyd¿tÜ +-> + `ÚDemªdRe£t +(); + +73 +$this +-> + `_hyd¿‹Cu¼’t +(); + +74 + } +} + +76 +public + +funùiÚ + + $key +() + +78  +$this +-> +šdex +; + +79 + } +} + +81 +public + +funùiÚ + + $cu¼’t +() + +83  +$this +-> +_cu¼’t +; + +84 + } +} + +86 +public + +funùiÚ + + $Ãxt +() + +88 +$this +-> +_cu¼’t + = +nuÎ +; + +89 +$this +-> +šdex +++; + +90 +$this +-> + `_hyd¿‹Cu¼’t +(); + +91 + } +} + +93 +public + +funùiÚ + + $v®id +() + +95 iàÐ! + `is_nuÎ +( +$this +-> +_cu¼’t +è&& $this->_cu¼’ˆ!=ð +çl£ +) { + +96  +Œue +; + +98  +çl£ +; + +99 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Column.php + +1 +nuÎ +, + +47 +public + +funùiÚ + +__cÚ¡ruù +( +¬¿y + +$defš™iÚ + =‡rray()) + +49 +$this +-> +_defš™iÚ + = +$defš™iÚ +; + +61 +public + +funùiÚ + +g‘Defš™iÚ +() + +63  + g$this +-> + g_defš™iÚ +; + +71 +public + +funùiÚ + +cڏšs +( +$Çme +) + +73  +is£t +( +$this +-> +_defš™iÚ +[ +$Çme +]); + +82 +public + +funùiÚ + +g‘ +( +$Çme +) + +84 iàÐ! +is£t +( +$this +-> +_defš™iÚ +[ +$Çme +])) { + +85  + gnuÎ +; + +88  + g$this +-> + g_defš™iÚ +[ +$Çme +]; + +97 +public + +funùiÚ + +£t +( +$Çme +, +$v®ue +) + +99 + g$this +-> + g_defš™iÚ +[ +$Çme +] = +$v®ue +; + +106 +public + +funùiÚ + +g‘EnumV®ues +() + +108 ià( +is£t +( +$this +-> +_defš™iÚ +['values'])) { + +109  + g$this +-> + g_defš™iÚ +['values']; + +111  +¬¿y +(); + +121 +public + +funùiÚ + +’umV®ue +( +$šdex +) + +123 ià( +$šdex + +š¡ªûof + + gDoùrše_NuÎ +) { + +124  + gçl£ +; + +127  +is£t +( +$this +-> +_defš™iÚ +['v®ues'][ +$šdex +]è? + g$this +-> + g_defš™iÚ +['v®ues'][$šdex] : +çl£ +; + +137 +public + +funùiÚ + +’umIndex +( +$f›ld +, +$v®ue +) + +139 + g$v®ues + = +$this +-> +g‘EnumV®ues +( +$f›ld +); + +141  +¬¿y_£¬ch +( +$v®ue +, +$v®ues +); + +149 +public + +funùiÚ + +couÁ +() + +151  +couÁ +( +$this +-> +_defš™iÚ +); + +159 +public + +funùiÚ + +g‘I‹¿tÜ +() + +161  +Ãw + +A¼ayI‹¿tÜ +( +$this +-> +_defš™iÚ +); + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Compiler.php + +1 + `g‘FžeName +()); + +73 ià( + `’d +( +$e +è==ð'php' && + `¡½os +( +$fže +-> + `g‘FžeName +(), '.šc'è==ð +çl£ + + +74 && + `¡½os +( +$fže +-> + `g‘FžeName +(), 'sfYaml'è==ð +çl£ +) { + +75 +»quœe_Úû + +$fže +-> + `g‘P©hName +(); + +79 +$þas£s + = + `¬¿y_m”ge +( + `g‘_deþ¬ed_þas£s +(), + `g‘_deþ¬ed_š‹rçûs +()); + +81 +$»t + = + `¬¿y +(); + +83 + `fܗch + ( +$þas£s + +as + +$þass +) { + +84 +$e + = + `ex¶ode +('_', +$þass +); + +86 ià( +$e +[0] !== 'Doctrine') { + +91 iàÐ! + `em±y +( +$exþudedDriv”s +)) { + +92 + `fܗch + ( +$exþudedDriv”s + +as + +$exþudedDriv” +) { + +93 +$exþudedDriv” + = + `ucfœ¡ +($excludedDriver); + +95 ià( + `š_¬¿y +( +$exþudedDriv” +, +$e +)) { + +101 +$»æ + = +Ãw + + `ReæeùiÚCÏss +( +$þass +); + +102 +$fže + = +$»æ +-> + `g‘FžeName +(); + +104 +$lšes + = + `fže +( +$fže +); + +106 +$¡¬t + = +$»æ +-> + `g‘S¹Lše +() - 1; + +107 +$’d + = +$»æ +-> + `g‘EndLše +(); + +109 +$»t + = + `¬¿y_m”ge +($»t, + `¬¿y_¦iû +( +$lšes +, +$¡¬t +, ( +$’d + - $start))); + +112 ià( +$rg‘ + =ð +nuÎ +) { + +113 +$rg‘ + = +$·th + . +DIRECTORY_SEPARATOR + . 'Doctrine.compiled.php'; + +118 +$å + = @ + `fݒ +( +$rg‘ +, 'w'); + +120 ià( +$å + ==ð +çl£ +) { + +121 +throw + +Ãw + + `Doùrše_Compž”_Exû±iÚ +("Couldn't write compiled data. Failedo open $target"); + +124 + `fwr™e +( +$å +, " + `£tEv’tLi¡’” +( +$v®ue +); + +79  +Doùrše_CÜe +:: +ATTR_COLL_KEY +: + +80 iàÐ! ( +$this + +š¡ªûof + +Doùrše_TabË +)) { + +81 +throw + +Ãw + + `Doùrše_Exû±iÚ +("This‡ttribute can only be set‡table†evel."); + +83 ià( +$v®ue + !=ð +nuÎ + && ! +$this +-> + `hasF›ld +($value)) { + +84 +throw + +Ãw + + `Doùrše_Exû±iÚ +("Couldn't set collection key‡ttribute. No such field '$value'."); + +87  +Doùrše_CÜe +:: +ATTR_CACHE +: + +88  +Doùrše_CÜe +:: +ATTR_RESULT_CACHE +: + +89  +Doùrše_CÜe +:: +ATTR_QUERY_CACHE +: + +90 ià( +$v®ue + !=ð +nuÎ +) { + +91 iàÐ! ( +$v®ue + +š¡ªûof + +Doùrše_Cache_IÁ”çû +)) { + +92 +throw + +Ãw + + `Doùrše_Exû±iÚ +('Cache driver should implement Doctrine_Cache_Interface'); + +96  +Doùrše_CÜe +:: +ATTR_SEQCOL_NAME +: + +97 iàÐ! + `is_¡ršg +( +$v®ue +)) { + +98 +throw + +Ãw + + `Doùrše_Exû±iÚ +('Sequence column‚ame‡ttribute only‡ccepts string values'); + +101  +Doùrše_CÜe +:: +ATTR_FIELD_CASE +: + +102 ià( +$v®ue + !ð0 && $v®u!ð +CASE_LOWER + && $v®u!ð +CASE_UPPER +) + +103 +throw + +Ãw + + `Doùrše_Exû±iÚ +('Field case‡ttribute should beƒither 0, CASE_LOWER or CASE_UPPER constant.'); + +105  +Doùrše_CÜe +:: +ATTR_SEQNAME_FORMAT +: + +106  +Doùrše_CÜe +:: +ATTR_IDXNAME_FORMAT +: + +107  +Doùrše_CÜe +:: +ATTR_TBLNAME_FORMAT +: + +108  +Doùrše_CÜe +:: +ATTR_FKNAME_FORMAT +: + +109 ià( +$this + +š¡ªûof + +Doùrše_TabË +) { + +110 +throw + +Ãw + + `Doùrše_Exû±iÚ +('Sequence / index‚ame format‡ttributes cannot be set' + +116 +$this +-> +©Œibu‹s +[ +$©Œibu‹ +] = +$v®ue +; + +119 +public + +funùiÚ + + $g‘P¬ams +( +$Çme¥aû + = +nuÎ +) + +121 ià( +$Çme¥aû + =ð +nuÎ +) { + +122 +$Çme¥aû + = +$this +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_DEFAULT_PARAM_NAMESPACE +); + +125 iàÐ! + `is£t +( +$this +-> +_·¿ms +[ +$Çme¥aû +])) { + +126  +nuÎ +; + +129  +$this +-> +_·¿ms +[ +$Çme¥aû +]; + +130 + } +} + +132 +public + +funùiÚ + + $g‘P¬amName¥aûs +() + +134  + `¬¿y_keys +( +$this +-> +_·¿ms +); + +135 + } +} + +137 +public + +funùiÚ + + $£tP¬am +( +$Çme +, +$v®ue +, +$Çme¥aû + = +nuÎ +) + +139 ià( +$Çme¥aû + =ð +nuÎ +) { + +140 +$Çme¥aû + = +$this +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_DEFAULT_PARAM_NAMESPACE +); + +143 +$this +-> +_·¿ms +[ +$Çme¥aû +][ +$Çme +] = +$v®ue +; + +145  +$this +; + +146 + } +} + +148 +public + +funùiÚ + + $g‘P¬am +( +$Çme +, +$Çme¥aû + = +nuÎ +) + +150 ià( +$Çme¥aû + =ð +nuÎ +) { + +151 +$Çme¥aû + = +$this +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_DEFAULT_PARAM_NAMESPACE +); + +154 iàÐ! + `is£t +( +$this +-> +_·¿ms +[ +$Çme¥aû +][ +$Çme +])) { + +155 ià( + `is£t +( +$this +-> +·»Á +)) { + +156  +$this +-> +·»Á +-> + `g‘P¬am +( +$Çme +, +$Çme¥aû +); + +158  +nuÎ +; + +161  +$this +-> +_·¿ms +[ +$Çme¥aû +][ +$Çme +]; + +162 + } +} + +174 +public + +funùiÚ + + $£tIm¶ +( +$‹m¶©e +, +$þass +) + +176 +$this +-> +_im¶ +[ +$‹m¶©e +] = +$þass +; + +178  +$this +; + +179 + } +} + +187 +public + +funùiÚ + + $g‘Im¶ +( +$‹m¶©e +) + +189 iàÐ! + `is£t +( +$this +-> +_im¶ +[ +$‹m¶©e +])) { + +190 ià( + `is£t +( +$this +-> +·»Á +)) { + +191  +$this +-> +·»Á +-> + `g‘Im¶ +( +$‹m¶©e +); + +193  +nuÎ +; + +195  +$this +-> +_im¶ +[ +$‹m¶©e +]; + +196 + } +} + +199 +public + +funùiÚ + + $hasIm¶ +( +$‹m¶©e +) + +201 iàÐ! + `is£t +( +$this +-> +_im¶ +[ +$‹m¶©e +])) { + +202 ià( + `is£t +( +$this +-> +·»Á +)) { + +203  +$this +-> +·»Á +-> + `hasIm¶ +( +$‹m¶©e +); + +205  +çl£ +; + +207  +Œue +; + +208 + } +} + +214 +public + +funùiÚ + + $£tEv’tLi¡’” +( +$li¡’” +) + +216  +$this +-> + `£tLi¡’” +( +$li¡’” +); + +217 + } +} + +225 +public + +funùiÚ + + $addRecÜdLi¡’” +( +$li¡’” +, +$Çme + = +nuÎ +) + +227 iàÐ! + `is£t +( +$this +-> +©Œibu‹s +[ +Doùrše_CÜe +:: +ATTR_RECORD_LISTENER +]) || + +228 ! ( +$this +-> +©Œibu‹s +[ +Doùrše_CÜe +:: +ATTR_RECORD_LISTENER +] +š¡ªûof + +Doùrše_RecÜd_Li¡’”_Chaš +)) { + +230 +$this +-> +©Œibu‹s +[ +Doùrše_CÜe +:: +ATTR_RECORD_LISTENER +] = +Ãw + + `Doùrše_RecÜd_Li¡’”_Chaš +(); + +232 +$this +-> +©Œibu‹s +[ +Doùrše_CÜe +:: +ATTR_RECORD_LISTENER +]-> + `add +( +$li¡’” +, +$Çme +); + +234  +$this +; + +235 + } +} + +242 +public + +funùiÚ + + $g‘RecÜdLi¡’” +() + +244 iàÐ! + `is£t +( +$this +-> +©Œibu‹s +[ +Doùrše_CÜe +:: +ATTR_RECORD_LISTENER +])) { + +245 ià( + `is£t +( +$this +-> +·»Á +)) { + +246  +$this +-> +·»Á +-> + `g‘RecÜdLi¡’” +(); + +248  +nuÎ +; + +250  +$this +-> +©Œibu‹s +[ +Doùrše_CÜe +:: +ATTR_RECORD_LISTENER +]; + +251 + } +} + +259 +public + +funùiÚ + + $£tRecÜdLi¡’” +( +$li¡’” +) + +261 iàÐ! ( +$li¡’” + +š¡ªûof + +Doùrše_RecÜd_Li¡’”_IÁ”çû +) + +262 && ! ( +$li¡’” + +š¡ªûof + +Doùrše_Ov”lßdabË +) + +264 +throw + +Ãw + + `Doùrše_Exû±iÚ +("Couldn't setƒventlistener. Record†isteners should implementƒither Doctrine_Record_Listener_Interface or Doctrine_Overloadable"); + +266 +$this +-> +©Œibu‹s +[ +Doùrše_CÜe +:: +ATTR_RECORD_LISTENER +] = +$li¡’” +; + +268  +$this +; + +269 + } +} + +277 +public + +funùiÚ + + $addLi¡’” +( +$li¡’” +, +$Çme + = +nuÎ +) + +279 iàÐ! + `is£t +( +$this +-> +©Œibu‹s +[ +Doùrše_CÜe +:: +ATTR_LISTENER +]) || + +280 ! ( +$this +-> +©Œibu‹s +[ +Doùrše_CÜe +:: +ATTR_LISTENER +] +š¡ªûof + +Doùrše_Ev’tLi¡’”_Chaš +)) { + +282 +$this +-> +©Œibu‹s +[ +Doùrše_CÜe +:: +ATTR_LISTENER +] = +Ãw + + `Doùrše_Ev’tLi¡’”_Chaš +(); + +284 +$this +-> +©Œibu‹s +[ +Doùrše_CÜe +:: +ATTR_LISTENER +]-> + `add +( +$li¡’” +, +$Çme +); + +286  +$this +; + +287 + } +} + +294 +public + +funùiÚ + + $g‘Li¡’” +() + +296 iàÐ! + `is£t +( +$this +-> +©Œibu‹s +[ +Doùrše_CÜe +:: +ATTR_LISTENER +])) { + +297 ià( + `is£t +( +$this +-> +·»Á +)) { + +298  +$this +-> +·»Á +-> + `g‘Li¡’” +(); + +300  +nuÎ +; + +302  +$this +-> +©Œibu‹s +[ +Doùrše_CÜe +:: +ATTR_LISTENER +]; + +303 + } +} + +311 +public + +funùiÚ + + $£tLi¡’” +( +$li¡’” +) + +313 iàÐ! ( +$li¡’” + +š¡ªûof + +Doùrše_Ev’tLi¡’”_IÁ”çû +) + +314 && ! ( +$li¡’” + +š¡ªûof + +Doùrše_Ov”lßdabË +) + +316 +throw + +Ãw + + `Doùrše_Ev’tLi¡’”_Exû±iÚ +("Couldn't setƒventlistener. EventListeners should implementƒither Doctrine_EventListener_Interface or Doctrine_Overloadable"); + +318 +$this +-> +©Œibu‹s +[ +Doùrše_CÜe +:: +ATTR_LISTENER +] = +$li¡’” +; + +320  +$this +; + +321 + } +} + +329 +public + +funùiÚ + + $g‘A‰ribu‹ +( +$©Œibu‹ +) + +331 ià( + `is£t +( +$this +-> +©Œibu‹s +[ +$©Œibu‹ +])) { + +332  +$this +-> +©Œibu‹s +[ +$©Œibu‹ +]; + +335 ià( + `is£t +( +$this +-> +·»Á +)) { + +336  +$this +-> +·»Á +-> + `g‘A‰ribu‹ +( +$©Œibu‹ +); + +338  +nuÎ +; + +339 + } +} + +347 +public + +funùiÚ + + $un£tA‰ribu‹ +( +$©Œibu‹ +) + +349 ià( + `is£t +( +$this +-> +©Œibu‹s +[ +$©Œibu‹ +])) { + +350 + `un£t +( +$this +-> +©Œibu‹s +[ +$©Œibu‹ +]); + +352 + } +} + +360 +public + +funùiÚ + + $g‘A‰ribu‹s +() + +362  +$this +-> +©Œibu‹s +; + +363 + } +} + +370 +public + +funùiÚ + + $£tCh¬£t +( +$ch¬£t +) + +372 +$this +-> + `£tA‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_DEFAULT_TABLE_CHARSET +, +$ch¬£t +); + +373 + } +} + +380 +public + +funùiÚ + + $g‘Ch¬£t +() + +382  +$this +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_DEFAULT_TABLE_CHARSET +); + +383 + } +} + +390 +public + +funùiÚ + + $£tCÞϋ +( +$cÞϋ +) + +392 +$this +-> + `£tA‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_DEFAULT_TABLE_COLLATE +, +$cÞϋ +); + +393 + } +} + +400 +public + +funùiÚ + + $g‘CÞϋ +() + +402  +$this +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_DEFAULT_TABLE_COLLATE +); + +403 + } +} + +412 +public + +funùiÚ + + $£tP¬’t +( +Doùrše_CÚfigu¿bË + +$compڒt +) + +414 +$this +-> +·»Á + = +$compڒt +; + +415 + } +} + +423 +public + +funùiÚ + + $g‘P¬’t +() + +425  +$this +-> +·»Á +; + +426 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection.php + +1 +çl£ +, + +133 'ex´essiÚ' => +çl£ +, + +134 'd©aDiù' => +çl£ +, + +135 'expÜt' => +çl£ +, + +136 'impÜt' => +çl£ +, + +137 '£qu’û' => +çl£ +, + +138 'un™OfWÜk' => +çl£ +, + +139 'fÜm©‹r' => +çl£ +, + +140 'utž' => +çl£ +, + +146 +´Ùeùed + + g$´Ý”t›s + = +¬¿y +('sql_comm’ts' =>‡¼ay×¼ay('¡¬t' => '--', '’d' => "\n", 'esÿ³' => +çl£ +), + +147 +¬¿y +('¡¬t' => '/*', '’d' => '*/', 'esÿ³' => +çl£ +)), + +148 'id’tif›r_quٚg' => +¬¿y +('start' => '"', 'end' => '"','escape' => '"'), + +149 '¡ršg_quٚg' => +¬¿y +('start' => "'", + +151 'esÿ³' => +çl£ +, + +152 'esÿ³_·‰”n' => +çl£ +), + +153 'wždÿrds' => +¬¿y +('%', '_'), + +162 +´Ùeùed + + g$£rv”Info + = +¬¿y +(); + +164 +´Ùeùed + + g$ÝtiÚs + = +¬¿y +(); + +169 +´iv©e +  + g$suµÜ‹dDriv”s + = +¬¿y +( + +176 +´Ùeùed + + g$_couÁ + = 0; + +181 +´Ùeùed + + g$_u£dNames + = +¬¿y +( + +182 'fÜeign_keys' => +¬¿y +(), + +183 'šdexes' => +¬¿y +() + +192 +public + +funùiÚ + +__cÚ¡ruù +( +Doùrše_Mªag” + +$mªag” +, +$ad­‹r +, +$u£r + = +nuÎ +, +$·ss + =‚ull) + +194 ià( +is_objeù +( +$ad­‹r +)) { + +195 iàÐ! ( +$ad­‹r + +š¡ªûof + +PDO +è&& ! +š_¬¿y +('Doùrše_Ad­‹r_IÁ”çû', +þass_im¶em’ts +($adapter))) { + +196 +throw + +Ãw + +Doùrše_CÚÃùiÚ_Exû±iÚ +('First‡rgument should be‡n instance of PDO or implement Doctrine_Adapter_Interface'); + +198 + g$this +-> + gdbh + = +$ad­‹r +; + +200 + g$this +-> + gisCÚÃùed + = +Œue +; + +202 } ià( +is_¬¿y +( +$ad­‹r +)) { + +203 + g$this +-> + g³ndšgA‰ribu‹s +[ +Doùrše_CÜe +:: +ATTR_DRIVER_NAME +] = +$ad­‹r +['scheme']; + +205 + g$this +-> + gÝtiÚs +['d¢'] = +$ad­‹r +['dsn']; + +206 + g$this +-> + gÝtiÚs +['u£ºame'] = +$ad­‹r +['user']; + +207 + g$this +-> + gÝtiÚs +['·sswÜd'] = +$ad­‹r +['pass']; + +209 + g$this +-> + gÝtiÚs +['Ùh”'] = +¬¿y +(); + +210 ià( +is£t +( +$ad­‹r +['other'])) { + +211 + g$this +-> + gÝtiÚs +['Ùh”'] = +¬¿y +( +Doùrše_CÜe +:: +ATTR_PERSISTENT + => +$ad­‹r +['persistent']); + +216 + g$this +-> +£tP¬’t +( +$mªag” +); + +218 + g$this +-> +£tA‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_CASE +, Doùrše_CÜe:: +CASE_NATURAL +); + +219 + g$this +-> +£tA‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_ERRMODE +, Doùrše_CÜe:: +ERRMODE_EXCEPTION +); + +221 + g$this +-> +g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_LISTENER +)-> +ÚO³n +( +$this +); + +229 +public + +funùiÚ + +isCÚÃùed +() + +231  + g$this +-> + gisCÚÃùed +; + +241 +public + +funùiÚ + +g‘O±iÚs +() + +243  + g$this +-> + gÝtiÚs +; + +254 +public + +funùiÚ + +g‘O±iÚ +( +$ÝtiÚ +) + +256 ià( +is£t +( +$this +-> +ÝtiÚs +[ +$ÝtiÚ +])) { + +257  + g$this +-> + gÝtiÚs +[ +$ÝtiÚ +]; + +269 +public + +funùiÚ + +£tO±iÚ +( +$ÝtiÚ +, +$v®ue +) + +271  + g$this +-> + gÝtiÚs +[ +$ÝtiÚ +] = +$v®ue +; + +281 +public + +funùiÚ + +g‘A‰ribu‹ +( +$©Œibu‹ +) + +283 ià( + g$©Œibu‹ + >ð100 && +$©Œibu‹ + < 1000) { + +284 iàÐ! +is£t +( +$this +-> +©Œibu‹s +[ +$©Œibu‹ +])) { + +285  +·»Á +:: +g‘A‰ribu‹ +( +$©Œibu‹ +); + +287  + g$this +-> + g©Œibu‹s +[ +$©Œibu‹ +]; + +290 ià( + g$this +-> + gisCÚÃùed +) { + +291 + gŒy + { + +292  + g$this +-> + gdbh +-> +g‘A‰ribu‹ +( +$©Œibu‹ +); + +293 } +ÿtch + ( +Exû±iÚ + +$e +) { + +294 +throw + +Ãw + +Doùrše_CÚÃùiÚ_Exû±iÚ +('A‰ribu‹ ' . +$©Œibu‹ + . '‚ot found.'); + +297 iàÐ! +is£t +( +$this +-> +³ndšgA‰ribu‹s +[ +$©Œibu‹ +])) { + +298 + g$this +-> +cÚÃù +(); + +299 + g$this +-> +g‘A‰ribu‹ +( +$©Œibu‹ +); + +302  + g$this +-> + g³ndšgA‰ribu‹s +[ +$©Œibu‹ +]; + +309 +public +  +funùiÚ + +g‘AvažabËDriv”s +() + +311  + gPDO +:: +g‘AvažabËDriv”s +(); + +319 +public +  +funùiÚ + +g‘SuµÜ‹dDriv”s +() + +321  + g£lf +:: +$suµÜ‹dDriv”s +; + +335 +public + +funùiÚ + +£tA‰ribu‹ +( +$©Œibu‹ +, +$v®ue +) + +337 ià( + g$©Œibu‹ + >ð100 && +$©Œibu‹ + < 1000) { + +338 +·»Á +:: +£tA‰ribu‹ +( +$©Œibu‹ +, +$v®ue +); + +340 ià( + g$this +-> + gisCÚÃùed +) { + +341 + g$this +-> + gdbh +-> +£tA‰ribu‹ +( +$©Œibu‹ +, +$v®ue +); + +343 + g$this +-> + g³ndšgA‰ribu‹s +[ +$©Œibu‹ +] = +$v®ue +; + +347  + g$this +; + +356 +public + +funùiÚ + +g‘Name +() + +358  + g$this +-> + g_Çme +; + +369 +public + +funùiÚ + +£tName +( +$Çme +) + +371 + g$this +-> + g_Çme + = +$Çme +; + +381 +public + +funùiÚ + +g‘Driv”Name +() + +383  + g$this +-> + gdriv”Name +; + +399 +public + +funùiÚ + +__g‘ +( +$Çme +) + +401 ià( +is£t +( +$this +-> +´Ý”t›s +[ +$Çme +])) { + +402  + g$this +-> + g´Ý”t›s +[ +$Çme +]; + +405 iàÐ! +is£t +( +$this +-> +moduËs +[ +$Çme +])) { + +406 +throw + +Ãw + +Doùrše_CÚÃùiÚ_Exû±iÚ +('UnknowÀmoduË /…rݔty ' . +$Çme +); + +408 ià( + g$this +-> + gmoduËs +[ +$Çme +] ==ð +çl£ +) { + +409  +$Çme +) { + +411 +$this +-> +moduËs +[ +$Çme +] = +Ãw + +Doùrše_CÚÃùiÚ_Un™OfWÜk +($this); + +414 +$this +-> +moduËs +[ +$Çme +] = +Ãw + +Doùrše_FÜm©‹r +($this); + +417 +$þass + = 'Doùrše_' . +ucwÜds +( +$Çme +è. '_' . +$this +-> +g‘Driv”Name +(); + +418 + g$this +-> + gmoduËs +[ +$Çme +] = +Ãw + +$þass +( +$this +); + +422  + g$this +-> + gmoduËs +[ +$Çme +]; + +430 +public + +funùiÚ + +g‘Mªag” +() + +432  + g$this +-> +g‘P¬’t +(); + +440 +public + +funùiÚ + +g‘Dbh +() + +442 + g$this +-> +cÚÃù +(); + +444  + g$this +-> + gdbh +; + +453 +public + +funùiÚ + +cÚÃù +() + +455 ià( + g$this +-> + gisCÚÃùed +) { + +456  + gçl£ +; + +459 + g$ev’t + = +Ãw + +Doùrše_Ev’t +( +$this +, Doùrše_Ev’t:: +CONN_CONNECT +); + +461 + g$this +-> +g‘Li¡’” +()-> +´eCÚÃù +( +$ev’t +); + +463 + g$e + = +ex¶ode +(':', +$this +-> +ÝtiÚs +['dsn']); + +464 + g$found + = +çl£ +; + +466 ià( +ex‹nsiÚ_lßded +('pdo')) { + +467 ià( +š_¬¿y +( +$e +[0], +£lf +:: +g‘AvažabËDriv”s +())) { + +468 +Œy + { + +469 +$this +-> +dbh + = +Ãw + +PDO +($this-> +ÝtiÚs +['dsn'], $this->options['username'], + +470 (! +$this +-> +ÝtiÚs +['password'] ? '':$this->options['password']), $this->options['other']); + +472 + g$this +-> + gdbh +-> +£tA‰ribu‹ +( +PDO +:: +ATTR_ERRMODE +, PDO:: +ERRMODE_EXCEPTION +); + +473 } +ÿtch + ( +PDOExû±iÚ + +$e +) { + +474 +throw + +Ãw + +Doùrše_CÚÃùiÚ_Exû±iÚ +('PDO CÚÃùiÚ E¼Ü: ' . +$e +-> +g‘Mes§ge +()); + +476 + g$found + = +Œue +; + +480 iàÐ! + g$found +) { + +481 + g$þass + = 'Doùrše_Ad­‹r_' . +ucwÜds +( +$e +[0]); + +483 ià( +þass_exi¡s +( +$þass +)) { + +484 + g$this +-> + gdbh + = +Ãw + +$þass +( +$this +-> +ÝtiÚs +['dsn'], $this->options['username'], $this->options['password'], $this->options); + +486 +throw + +Ãw + +Doùrše_CÚÃùiÚ_Exû±iÚ +("Couldn'ˆloÿ‹ driv”‚amed " . +$e +[0]); + +491 +fܗch +( +$this +-> +³ndšgA‰ribu‹s + +as + +$©Œ + => +$v®ue +) { + +493 ià( +$©Œ + =ð +Doùrše_CÜe +:: +ATTR_DRIVER_NAME +) { + +496 + g$this +-> + gdbh +-> +£tA‰ribu‹ +( +$©Œ +, +$v®ue +); + +499 + g$this +-> + gisCÚÃùed + = +Œue +; + +501 + g$this +-> +g‘Li¡’” +()-> +po¡CÚÃù +( +$ev’t +); + +502  + gŒue +; + +505 +public + +funùiÚ + +šüem’tQu”yCouÁ +() + +507 + g$this +-> + g_couÁ +++; + +515 +public + +funùiÚ + +driv”Name +( +$Çme +) + +525 +public + +funùiÚ + +suµÜts +( +$ã©u» +) + +527  ( +is£t +( +$this +-> +suµÜ‹d +[ +$ã©u» +]) + +528 && ( + g$this +-> + gsuµÜ‹d +[ +$ã©u» +] === 'emulated' + +529 || +$this +-> +suµÜ‹d +[ +$ã©u» +])); + +566 +public + +funùiÚ + +»¶aû +( +Doùrše_TabË + +$bË +, +¬¿y + +$f›lds +,‡¼ay +$keys +) + +568 ià( +em±y +( +$keys +)) { + +569 +throw + +Ãw + +Doùrše_CÚÃùiÚ_Exû±iÚ +('Not specified which fields‡re keys'); + +571 + g$id’tif›r + = ( +¬¿y +è +$bË +-> +g‘Id’tif›r +(); + +572 + g$cÚd™iÚ + = +¬¿y +(); + +574 +fܗch + ( +$f›lds + +as + +$f›ldName + => +$v®ue +) { + +575 ià( +š_¬¿y +( +$f›ldName +, +$keys +)) { + +576 ià( +$v®ue + !=ð +nuÎ +) { + +577 +$cÚd™iÚ +[] = +$bË +-> +g‘CÞumnName +( +$f›ldName +) . ' = ?'; + +578 + g$cÚd™iÚV®ues +[] = +$v®ue +; + +583 + g$afãùedRows + = 0; + +584 iàÐ! +em±y +( +$cÚd™iÚ +è&& !ƒm±y( +$cÚd™iÚV®ues +)) { + +585 + g$qu”y + = 'DELETE FROM ' . +$this +-> +quÙeId’tif›r +( +$bË +-> +g‘TabËName +()) + +586 . ' WHERE ' . +im¶ode +(' AND ', +$cÚd™iÚ +); + +588 + g$afãùedRows + = +$this +-> +exec +( +$qu”y +, +$cÚd™iÚV®ues +); + +591 + g$this +-> +𣹠+( +$bË +, +$f›lds +); + +593 + g$afãùedRows +++; + +595  + g$afãùedRows +; + +606 +public + +funùiÚ + +d–‘e +( +Doùrše_TabË + +$bË +, +¬¿y + +$id’tif›r +) + +608 + g$tmp + = +¬¿y +(); + +610 +fܗch + ( +¬¿y_keys +( +$id’tif›r +è +as + +$id +) { + +611 + g$tmp +[] = +$this +-> +quÙeId’tif›r +( +$bË +-> +g‘CÞumnName +( +$id +)) . ' = ?'; + +614 + g$qu”y + = 'DELETE FROM ' + +615 . +$this +-> +quÙeId’tif›r +( +$bË +-> +g‘TabËName +()) + +616 . ' WHERE ' . +im¶ode +(' AND ', +$tmp +); + +618  + g$this +-> +exec +( +$qu”y +, +¬¿y_v®ues +( +$id’tif›r +)); + +630 +public + +funùiÚ + +upd©e +( +Doùrše_TabË + +$bË +, +¬¿y + +$f›lds +,‡¼ay +$id’tif›r +) + +632 ià( +em±y +( +$f›lds +)) { + +633  + gçl£ +; + +636 + g$£t + = +¬¿y +(); + +637 +fܗch + ( +$f›lds + +as + +$f›ldName + => +$v®ue +) { + +638 ià( +$v®ue + +š¡ªûof + +Doùrše_Ex´essiÚ +) { + +639 +$£t +[] = +$this +-> +quÙeId’tif›r +( +$bË +-> +g‘CÞumnName +( +$f›ldName +)è. ' = ' . +$v®ue +-> +g‘Sql +(); + +640 +un£t +( +$f›lds +[ +$f›ldName +]); + +642 + g$£t +[] = +$this +-> +quÙeId’tif›r +( +$bË +-> +g‘CÞumnName +( +$f›ldName +)) . ' = ?'; + +646 + g$·¿ms + = +¬¿y_m”ge +( +¬¿y_v®ues +( +$f›lds +),‡¼ay_v®ues( +$id’tif›r +)); + +648 + g$sql + = 'UPDATE ' . +$this +-> +quÙeId’tif›r +( +$bË +-> +g‘TabËName +()) + +649 . ' SET ' . +im¶ode +(', ', +$£t +) + +650 . ' WHERE ' . +im¶ode +(' = ? AND ', +$this +-> +quÙeMuɝËId’tif›r +( +$bË +-> +g‘Id’tif›rCÞumnNames +())) + +653  + g$this +-> +exec +( +$sql +, +$·¿ms +); + +664 +public + +funùiÚ + +𣹠+( +Doùrše_TabË + +$bË +, +¬¿y + +$f›lds +) + +666 + g$bËName + = +$bË +-> +g‘TabËName +(); + +669 + g$cÞs + = +¬¿y +(); + +671 + g$a + = +¬¿y +(); + +672 +fܗch + ( +$f›lds + +as + +$f›ldName + => +$v®ue +) { + +673 +$cÞs +[] = +$this +-> +quÙeId’tif›r +( +$bË +-> +g‘CÞumnName +( +$f›ldName +)); + +674 ià( +$v®ue + +š¡ªûof + + gDoùrše_Ex´essiÚ +) { + +675 + g$a +[] = +$v®ue +-> +g‘Sql +(); + +676 +un£t +( +$f›lds +[ +$f›ldName +]); + +678 + g$a +[] = '?'; + +683 + g$qu”y + = 'INSERT INTO ' . +$this +-> +quÙeId’tif›r +( +$bËName +) + +684 . ' (' . +im¶ode +(', ', +$cÞs +) . ')' + +685 . ' VALUES (' . +im¶ode +(', ', +$a +) . ')'; + +687  + g$this +-> +exec +( +$qu”y +, +¬¿y_v®ues +( +$f›lds +)); + +722 +public + +funùiÚ + +quÙeId’tif›r +( +$¡r +, +$checkO±iÚ + = +Œue +) + +725 ià( +¡½os +( +$¡r +, '.')) { + +726 +$e + = +ex¶ode +('.', +$¡r +); + +728  + g$this +-> + gfÜm©‹r +-> +quÙeId’tif›r +( +$e +[0], +$checkO±iÚ +) . '.' + +729 . + g$this +-> + gfÜm©‹r +-> +quÙeId’tif›r +( +$e +[1], +$checkO±iÚ +); + +731  + g$this +-> + gfÜm©‹r +-> +quÙeId’tif›r +( +$¡r +, +$checkO±iÚ +); + +743 +public + +funùiÚ + +quÙeMuɝËId’tif›r +( +$¬r +, +$checkO±iÚ + = +Œue +) + +745 +fܗch + ( +$¬r + +as + +$k + => +$v +) { + +746 +$¬r +[ +$k +] = +$this +-> +quÙeId’tif›r +( +$v +, +$checkO±iÚ +); + +749  + g$¬r +; + +762 +public + +funùiÚ + +cÚv”tBoޗns +( +$™em +) + +764  + g$this +-> + gfÜm©‹r +-> +cÚv”tBoޗns +( +$™em +); + +775 +public + +funùiÚ + +quÙe +( +$šput +, +$ty³ + = +nuÎ +) + +777  +$this +-> +fÜm©‹r +-> +quÙe +( +$šput +, +$ty³ +); + +787 +public + +funùiÚ + +£tD©eFÜm© +( +$fÜm© + = +nuÎ +) + +798 +public + +funùiÚ + +ãtchAÎ +( +$¡©em’t +, +¬¿y + +$·¿ms + =‡rray()) + +800  +$this +-> +execu‹ +( +$¡©em’t +, +$·¿ms +)-> +ãtchAÎ +( +Doùrše_CÜe +:: +FETCH_ASSOC +); + +811 +public + +funùiÚ + +ãtchOà +( +$¡©em’t +, +¬¿y + +$·¿ms + =‡¼ay(), +$cÞnum + = 0) + +813  +$this +-> +execu‹ +( +$¡©em’t +, +$·¿ms +)-> +ãtchCÞumn +( +$cÞnum +); + +823 +public + +funùiÚ + +ãtchRow +( +$¡©em’t +, +¬¿y + +$·¿ms + =‡rray()) + +825  +$this +-> +execu‹ +( +$¡©em’t +, +$·¿ms +)-> +ãtch +( +Doùrše_CÜe +:: +FETCH_ASSOC +); + +835 +public + +funùiÚ + +ãtchA¼ay +( +$¡©em’t +, +¬¿y + +$·¿ms + =‡rray()) + +837  +$this +-> +execu‹ +( +$¡©em’t +, +$·¿ms +)-> +ãtch +( +Doùrše_CÜe +:: +FETCH_NUM +); + +848 +public + +funùiÚ + +ãtchCÞumn +( +$¡©em’t +, +¬¿y + +$·¿ms + =‡¼ay(), +$cÞnum + = 0) + +850  +$this +-> +execu‹ +( +$¡©em’t +, +$·¿ms +)-> +ãtchAÎ +( +Doùrše_CÜe +:: +FETCH_COLUMN +, +$cÞnum +); + +860 +public + +funùiÚ + +ãtchAssoc +( +$¡©em’t +, +¬¿y + +$·¿ms + =‡rray()) + +862  +$this +-> +execu‹ +( +$¡©em’t +, +$·¿ms +)-> +ãtchAÎ +( +Doùrše_CÜe +:: +FETCH_ASSOC +); + +872 +public + +funùiÚ + +ãtchBÙh +( +$¡©em’t +, +¬¿y + +$·¿ms + =‡rray()) + +874  +$this +-> +execu‹ +( +$¡©em’t +, +$·¿ms +)-> +ãtchAÎ +( +Doùrše_CÜe +:: +FETCH_BOTH +); + +894 +public + +funùiÚ + +qu”y +( +$qu”y +, +¬¿y + +$·¿ms + =‡¼ay(), +$hyd¿tiÚMode + = +nuÎ +) + +896 +$·r£r + = +Doùrše_Qu”y +:: +ü—‹ +( +$this +); + +897 + g$»s + = +$·r£r +-> +qu”y +( +$qu”y +, +$·¿ms +, +$hyd¿tiÚMode +); + +898 + g$·r£r +-> +ä“ +(); + +900  + g$»s +; + +908 +public + +funùiÚ + +´•¬e +( +$¡©em’t +) + +910 + g$this +-> +cÚÃù +(); + +912 + gŒy + { + +913 + g$ev’t + = +Ãw + +Doùrše_Ev’t +( +$this +, Doùrše_Ev’t:: +CONN_PREPARE +, +$¡©em’t +); + +915 + g$this +-> +g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_LISTENER +)-> +´eP»·» +( +$ev’t +); + +917 + g$¡mt + = +çl£ +; + +919 iàÐ! + g$ev’t +-> + gskO³¿tiÚ +) { + +920 + g$¡mt + = +$this +-> +dbh +-> +´•¬e +( +$¡©em’t +); + +923 + g$this +-> +g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_LISTENER +)-> +po¡P»·» +( +$ev’t +); + +925  +Ãw + +Doùrše_CÚÃùiÚ_S‹m’t +( +$this +, +$¡mt +); + +926 } +ÿtch +( +Doùrše_Ad­‹r_Exû±iÚ + +$e +) { + +927 } +ÿtch +( +PDOExû±iÚ + +$e +) { } + +929 + g$this +-> +»throwExû±iÚ +( +$e +, +$this +, +$¡©em’t +); + +951 +public + +funùiÚ + +qu”yOà +( +$qu”y +, +¬¿y + +$·¿ms + =‡rray()) + +953 +$·r£r + = +Doùrše_Qu”y +:: +ü—‹ +(); + +955 + g$cÞl + = +$·r£r +-> +qu”y +( +$qu”y +, +$·¿ms +); + +956 iàÐ! + g$cÞl +-> +cڏšs +(0)) { + +957  + gçl£ +; + +959  + g$cÞl +[0]; + +971 +public + +funùiÚ + +£Ëù +( +$qu”y +, +$lim™ + = 0, +$off£t + = 0) + +973 ià( +$lim™ + > 0 || +$off£t + > 0) { + +974 +$qu”y + = +$this +-> +modifyLim™Qu”y +($qu”y, +$lim™ +, +$off£t +); + +976  + g$this +-> +execu‹ +( +$qu”y +); + +987 +public + +funùiÚ + +¡ªd®ÚeQu”y +( +$qu”y +, +$·¿ms + = +¬¿y +()) + +989  +$this +-> +execu‹ +( +$qu”y +, +$·¿ms +); + +999 +public + +funùiÚ + +execu‹ +( +$qu”y +, +¬¿y + +$·¿ms + =‡rray()) + +1001 +$this +-> +cÚÃù +(); + +1003 + gŒy + { + +1004 iàÐ! +em±y +( +$·¿ms +)) { + +1005 + g$¡mt + = +$this +-> +´•¬e +( +$qu”y +); + +1006 + g$¡mt +-> +execu‹ +( +$·¿ms +); + +1008  + g$¡mt +; + +1010 + g$ev’t + = +Ãw + +Doùrše_Ev’t +( +$this +, Doùrše_Ev’t:: +CONN_QUERY +, +$qu”y +, +$·¿ms +); + +1012 + g$this +-> +g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_LISTENER +)-> +´eQu”y +( +$ev’t +); + +1014 iàÐ! + g$ev’t +-> + gskO³¿tiÚ +) { + +1015 + g$¡mt + = +$this +-> +dbh +-> +qu”y +( +$qu”y +); + +1016 + g$this +-> + g_couÁ +++; + +1018 + g$this +-> +g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_LISTENER +)-> +po¡Qu”y +( +$ev’t +); + +1020  + g$¡mt +; + +1022 } +ÿtch + ( +Doùrše_Ad­‹r_Exû±iÚ + +$e +) { + +1023 } +ÿtch + ( +PDOExû±iÚ + +$e +) { } + +1025 + g$this +-> +»throwExû±iÚ +( +$e +, +$this +, +$qu”y +); + +1035 +public + +funùiÚ + +exec +( +$qu”y +, +¬¿y + +$·¿ms + =‡rray()) + +1037 +$this +-> +cÚÃù +(); + +1039 + gŒy + { + +1040 iàÐ! +em±y +( +$·¿ms +)) { + +1041 + g$¡mt + = +$this +-> +´•¬e +( +$qu”y +); + +1042 + g$¡mt +-> +execu‹ +( +$·¿ms +); + +1044  + g$¡mt +-> +rowCouÁ +(); + +1046 + g$ev’t + = +Ãw + +Doùrše_Ev’t +( +$this +, Doùrše_Ev’t:: +CONN_EXEC +, +$qu”y +, +$·¿ms +); + +1048 + g$this +-> +g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_LISTENER +)-> +´eExec +( +$ev’t +); + +1049 iàÐ! + g$ev’t +-> + gskO³¿tiÚ +) { + +1050 + g$couÁ + = +$this +-> +dbh +-> +exec +( +$qu”y +); + +1052 + g$this +-> + g_couÁ +++; + +1054 + g$this +-> +g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_LISTENER +)-> +po¡Exec +( +$ev’t +); + +1056  + g$couÁ +; + +1058 } +ÿtch + ( +Doùrše_Ad­‹r_Exû±iÚ + +$e +) { + +1059 } +ÿtch + ( +PDOExû±iÚ + +$e +) { } + +1061 + g$this +-> +»throwExû±iÚ +( +$e +, +$this +, +$qu”y +); + +1069 +public + +funùiÚ + +»throwExû±iÚ +( +Exû±iÚ + +$e +, +$švok” +, +$qu”y + = +nuÎ +) + +1071 +$ev’t + = +Ãw + +Doùrše_Ev’t +( +$this +, Doùrše_Ev’t:: +CONN_ERROR +); + +1073 + g$this +-> +g‘Li¡’” +()-> +´eE¼Ü +( +$ev’t +); + +1075 + g$Çme + = 'Doùrše_CÚÃùiÚ_' . +$this +-> +driv”Name + . '_Exception'; + +1077 + g$mes§ge + = +$e +-> +g‘Mes§ge +(); + +1078 ià( + g$qu”y +) { + +1079 + g$mes§ge + .ð +¥rštf +('. Fažšg Qu”y: "%s"', +$qu”y +); + +1082 + g$exc + = +Ãw + +$Çme +( +$mes§ge +, (è +$e +-> +g‘Code +()); + +1083 iàÐ! +is£t +( +$e +-> +”rÜInfo +è|| ! +is_¬¿y +($e->errorInfo)) { + +1084 + g$e +-> + g”rÜInfo + = +¬¿y +( +nuÎ +,‚ull,‚ull,‚ull); + +1086 + g$exc +-> +´oûssE¼ÜInfo +( +$e +-> +”rÜInfo +); + +1088 ià( + g$this +-> +g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_THROW_EXCEPTIONS +)) { + +1089 +throw + +$exc +; + +1092 + g$this +-> +g‘Li¡’” +()-> +po¡E¼Ü +( +$ev’t +); + +1102 +public + +funùiÚ + +hasTabË +( +$Çme +) + +1104  +is£t +( +$this +-> +bËs +[ +$Çme +]); + +1113 +public + +funùiÚ + +g‘TabË +( +$Çme +) + +1115 ià( +is£t +( +$this +-> +bËs +[ +$Çme +])) { + +1116  + g$this +-> + gbËs +[ +$Çme +]; + +1119 + g$þass + = +¥rštf +( +$this +-> +g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_TABLE_CLASS_FORMAT +), +$Çme +); + +1121 ià( +þass_exi¡s +( +$þass +, +$this +-> +g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_AUTOLOAD_TABLE_CLASSES +)) && + +1122 +š_¬¿y +('Doùrše_TabË', +þass_·»Ás +( +$þass +))) { + +1123 + g$bË + = +Ãw + +$þass +( +$Çme +, +$this +, +Œue +); + +1125 + g$bËCÏss + = +$this +-> +g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_TABLE_CLASS +); + +1126 + g$bË + = +Ãw + +$bËCÏss +( +$Çme +, +$this +, +Œue +); + +1129  + g$bË +; + +1137 +public + +funùiÚ + +g‘TabËs +() + +1139  + g$this +-> + gbËs +; + +1154 +public + +funùiÚ + +g‘I‹¿tÜ +() + +1156  +Ãw + +A¼ayI‹¿tÜ +( +$this +-> +bËs +); + +1164 +public + +funùiÚ + +couÁ +() + +1166  + g$this +-> + g_couÁ +; + +1176 +public + +funùiÚ + +addTabË +( +Doùrše_TabË + +$bË +) + +1178 + g$Çme + = +$bË +-> +g‘CompڒtName +(); + +1180 ià( +is£t +( +$this +-> +bËs +[ +$Çme +])) { + +1181  + gçl£ +; + +1183 + g$this +-> + gbËs +[ +$Çme +] = +$bË +; + +1184  + gŒue +; + +1195 +public + +funùiÚ + +ü—‹ +( +$Çme +) + +1197  + g$this +-> +g‘TabË +( +$Çme +)-> +ü—‹ +(); + +1205 +public + +funùiÚ + +ü—‹Qu”y +() + +1207  + gDoùrše_Qu”y +:: +ü—‹ +(); + +1218 +public + +funùiÚ + +æush +() + +1220 + gŒy + { + +1221 + g$this +-> +begšIÁ”ÇlT¿n§ùiÚ +(); + +1222 + g$this +-> + gun™OfWÜk +-> +§veAÎ +(); + +1223 + g$this +-> +comm™ +(); + +1224 } +ÿtch + ( +Exû±iÚ + +$e +) { + +1225 + g$this +-> +rÞlback +(); + +1226 +throw + + g$e +; + +1236 +public + +funùiÚ + +þ—r +() + +1238 +fܗch + ( +$this +-> +bËs + +as + +$k + => +$bË +) { + +1239 +$bË +-> +g‘R•os™Üy +()-> +eviùAÎ +(); + +1240 + g$bË +-> +þ—r +(); + +1250 +public + +funùiÚ + +eviùTabËs +() + +1252 + g$this +-> + gbËs + = +¬¿y +(); + +1253 + g$this +-> + gexp܋d + = +¬¿y +(); + +1262 +public + +funùiÚ + +þo£ +() + +1264 + g$ev’t + = +Ãw + +Doùrše_Ev’t +( +$this +, Doùrše_Ev’t:: +CONN_CLOSE +); + +1266 + g$this +-> +g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_LISTENER +)-> +´eClo£ +( +$ev’t +); + +1268 + g$this +-> +þ—r +(); + +1270 +un£t +( +$this +-> +dbh +); + +1271 + g$this +-> + gisCÚÃùed + = +çl£ +; + +1273 + g$this +-> +g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_LISTENER +)-> +po¡Clo£ +( +$ev’t +); + +1281 +public + +funùiÚ + +g‘T¿n§ùiÚLev– +() + +1283  + g$this +-> + gŒª§ùiÚ +-> +g‘T¿n§ùiÚLev– +(); + +1292 +public + +funùiÚ + +”rÜCode +() + +1294 + g$this +-> +cÚÃù +(); + +1296  + g$this +-> + gdbh +-> +”rÜCode +(); + +1305 +public + +funùiÚ + +”rÜInfo +() + +1307 + g$this +-> +cÚÃù +(); + +1309  + g$this +-> + gdbh +-> +”rÜInfo +(); + +1317 +public + +funùiÚ + +g‘ResuÉCacheDriv” +() + +1319 iàÐ! + g$this +-> +g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_RESULT_CACHE +)) { + +1320 +throw + +Ãw + +Doùrše_Exû±iÚ +('Result Cache driver‚ot initialized.'); + +1323  + g$this +-> +g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_RESULT_CACHE +); + +1331 +public + +funùiÚ + +g‘Qu”yCacheDriv” +() + +1333 iàÐ! + g$this +-> +g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_QUERY_CACHE +)) { + +1334 +throw + +Ãw + +Doùrše_Exû±iÚ +('Query Cache driver‚ot initialized.'); + +1337  + g$this +-> +g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_QUERY_CACHE +); + +1352 +public + +funùiÚ + +Ï¡In£¹Id +( +$bË + = +nuÎ +, +$f›ld + =‚ull) + +1354  +$this +-> +£qu’û +-> +Ï¡In£¹Id +( +$bË +, +$f›ld +); + +1370 +public + +funùiÚ + +begšT¿n§ùiÚ +( +$§v•ošt + = +nuÎ +) + +1372  +$this +-> +Œª§ùiÚ +-> +begšT¿n§ùiÚ +( +$§v•ošt +); + +1375 +public + +funùiÚ + +begšIÁ”ÇlT¿n§ùiÚ +( +$§v•ošt + = +nuÎ +) + +1377  +$this +-> +Œª§ùiÚ +-> +begšIÁ”ÇlT¿n§ùiÚ +( +$§v•ošt +); + +1393 +public + +funùiÚ + +comm™ +( +$§v•ošt + = +nuÎ +) + +1395  +$this +-> +Œª§ùiÚ +-> +comm™ +( +$§v•ošt +); + +1412 +public + +funùiÚ + +rÞlback +( +$§v•ošt + = +nuÎ +) + +1414  +$this +-> +Œª§ùiÚ +-> +rÞlback +( +$§v•ošt +); + +1424 +public + +funùiÚ + +ü—‹D©aba£ +() + +1426 iàÐ! + g$d¢ + = +$this +-> +g‘O±iÚ +('dsn')) { + +1427 +throw + +Ãw + +Doùrše_CÚÃùiÚ_Exû±iÚ +('You must create your Doctrine_Connection by using‡ valid Doctrine style dsn in ordero usehe create/drop database functionality'); + +1431 + g$šfo + = +$this +-> +g‘Mªag” +()-> +·r£PdoD¢ +( +$d¢ +); + +1434 + g$tmpCÚÃùiÚ + = +$this +-> +g‘TmpCÚÃùiÚ +( +$šfo +); + +1438 + gŒy + { + +1439 + g$tmpCÚÃùiÚ +-> + gexpÜt +-> +ü—‹D©aba£ +( +$šfo +['dbname']); + +1440 } +ÿtch + ( +Exû±iÚ + +$e +) {} + +1443 + g$this +-> +g‘Mªag” +()-> +þo£CÚÃùiÚ +( +$tmpCÚÃùiÚ +); + +1445 ià( +is£t +( +$e +)) { + +1446 +throw + + g$e +; + +1457 +public + +funùiÚ + +drÝD©aba£ +() + +1459 iàÐ! + g$d¢ + = +$this +-> +g‘O±iÚ +('dsn')) { + +1460 +throw + +Ãw + +Doùrše_CÚÃùiÚ_Exû±iÚ +('You must create your Doctrine_Connection by using‡ valid Doctrine style dsn in ordero usehe create/drop database functionality'); + +1464 + g$šfo + = +$this +-> +g‘Mªag” +()-> +·r£PdoD¢ +( +$d¢ +); + +1467 + g$tmpCÚÃùiÚ + = +$this +-> +g‘TmpCÚÃùiÚ +( +$šfo +); + +1471 + gŒy + { + +1472 + g$tmpCÚÃùiÚ +-> + gexpÜt +-> +drÝD©aba£ +( +$šfo +['dbname']); + +1473 } +ÿtch + ( +Exû±iÚ + +$e +) {} + +1476 + g$this +-> +g‘Mªag” +()-> +þo£CÚÃùiÚ +( +$tmpCÚÃùiÚ +); + +1479 ià( +is£t +( +$e +)) { + +1480 +throw + + g$e +; + +1496 +public + +funùiÚ + +g‘TmpCÚÃùiÚ +( +$šfo +) + +1498 + g$pdoD¢ + = +$šfo +['scheme'] . ':'; + +1500 ià( + g$šfo +['unix_socket']) { + +1501 + g$pdoD¢ + .ð'unix_sock‘=' . +$šfo +['unix_socket'] . ';'; + +1504 + g$pdoD¢ + .ð'ho¡=' . +$šfo +['host']; + +1506 ià( + g$šfo +['port']) { + +1507 + g$pdoD¢ + .ð';pÜt=' . +$šfo +['port']; + +1510 ià( +is£t +( +$this +-> +expÜt +-> +tmpCÚÃùiÚD©aba£ +è&& + g$this +-> + gexpÜt +-> + gtmpCÚÃùiÚD©aba£ +) { + +1511 + g$pdoD¢ + .ð';dbÇme=' . +$this +-> +expÜt +-> +tmpCÚÃùiÚD©aba£ +; + +1514 + g$u£ºame + = +$this +-> +g‘O±iÚ +('username'); + +1515 + g$·sswÜd + = +$this +-> +g‘O±iÚ +('password'); + +1517 + g$cÚn + = +$this +-> +g‘Mªag” +()-> +ݒCÚÃùiÚ +( +¬¿y +( +$pdoD¢ +, +$u£ºame +, +$·sswÜd +), 'doùrše_tmp_cÚÃùiÚ', +çl£ +); + +1518 + g$cÚn +-> +£tO±iÚ +('u£ºame', +$u£ºame +); + +1519 + g$cÚn +-> +£tO±iÚ +('·sswÜd', +$·sswÜd +); + +1521  + g$cÚn +; + +1531 +public + +funùiÚ + +modifyLim™Qu”y +( +$qu”y +, +$lim™ + = +çl£ +, +$off£t + = f®£, +$isMª + = false) + +1533  +$qu”y +; + +1542 +public + +funùiÚ + +modifyLim™Subqu”y +( +Doùrše_TabË + +$roÙTabË +, +$qu”y +, +$lim™ + = +çl£ +, + +1543 +$off£t + = +çl£ +, +$isMª + = false) + +1545  +$this +-> +modifyLim™Qu”y +( +$qu”y +, +$lim™ +, +$off£t +, +$isMª +); + +1552 +public + +funùiÚ + +__toSŒšg +() + +1554  + gDoùrše_Lib +:: +g‘CÚÃùiÚAsSŒšg +( +$this +); + +1562 +public + +funùiÚ + +£rŸlize +() + +1564 + g$v¬s + = +g‘_objeù_v¬s +( +$this +); + +1565 + g$v¬s +['dbh'] = +nuÎ +; + +1566 + g$v¬s +['isCÚÃùed'] = +çl£ +; + +1567  +£rŸlize +( +$v¬s +); + +1576 +public + +funùiÚ + +un£rŸlize +( +$£rŸlized +) + +1578 + g$¬¿y + = +un£rŸlize +( +$£rŸlized +); + +1580 +fܗch + ( +$¬¿y + +as + +$Çme + => +$v®ues +) { + +1581 +$this +-> +$Çme + = +$v®ues +; + +1591 +public + +funùiÚ + +g’”©eUniqueR–©iÚFÜeignKeyName +( +Doùrše_R–©iÚ + +$»ÏtiÚ +) + +1593 + g$·¹s + = +¬¿y +( + +1594 +$»ÏtiÚ +['loÿlTabË']-> +g‘TabËName +(), + +1595 +$»ÏtiÚ +-> +g‘LoÿlCÞumnName +(), + +1596 +$»ÏtiÚ +['bË']-> +g‘TabËName +(), + +1597 +$»ÏtiÚ +-> +g‘FÜeignCÞumnName +(), + +1599 + g$key + = +im¶ode +('_', +¬¿y_m”ge +( +$·¹s +, +¬¿y +( +$»ÏtiÚ +['onDelete']),‡rray($relation['onUpdate']))); + +1600 + g$fÜm© + = +$this +-> +g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_FKNAME_FORMAT +); + +1602  + g$this +-> +_g’”©eUniqueName +('fÜeign_keys', +$·¹s +, +$key +, +$fÜm© +, +$this +-> +g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_MAX_IDENTIFIER_LENGTH +)); + +1612 +public + +funùiÚ + +g’”©eUniqueIndexName +( +$bËName +, +$f›lds +) + +1614 + g$f›lds + = ( +¬¿y +è +$f›lds +; + +1615 + g$·¹s + = +¬¿y +( +$bËName +); + +1616 + g$·¹s + = +¬¿y_m”ge +( +$·¹s +, +$f›lds +); + +1617 + g$key + = +im¶ode +('_', +$·¹s +); + +1618 + g$fÜm© + = +$this +-> +g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_IDXNAME_FORMAT +); + +1620  + g$this +-> +_g’”©eUniqueName +('šdexes', +$·¹s +, +$key +, +$fÜm© +, +$this +-> +g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_MAX_IDENTIFIER_LENGTH +)); + +1623 +´Ùeùed + +funùiÚ + +_g’”©eUniqueName +( +$ty³ +, +$·¹s +, +$key +, +$fÜm© + = '%s', +$maxL’gth + = +nuÎ +) + +1625 ià( +is£t +( +$this +-> +_u£dNames +[ +$ty³ +][ +$key +])) { + +1626  +$this +-> +_u£dNames +[ +$ty³ +][ +$key +]; + +1628 ià( + g$maxL’gth + ==ð +nuÎ +) { + +1629 +$maxL’gth + = +$this +-> +´Ý”t›s +['max_identifier_length']; + +1632 + g$g’”©ed + = +im¶ode +('_', +$·¹s +); + +1635 ià( +¡¾’ +( +¥rštf +( +$fÜm© +, +$g’”©ed +)è> + g$maxL’gth +) { + +1636 + g$g’”©ed + = ''; + +1638 +fܗch + ( +$·¹s + +as + +$·¹ +) { + +1639 + g$g’”©ed + .ð +$·¹ +[0]; + +1642 + g$Çme + = +$g’”©ed +; + +1644 + g$Çme + = +$g’”©ed +; + +1647  +š_¬¿y +( +$Çme +, +$this +-> +_u£dNames +[ +$ty³ +])) { + +1648 + g$e + = +ex¶ode +('_', +$Çme +); + +1649 + g$’d + = +’d +( +$e +); + +1651 ià( +is_num”ic +( +$’d +)) { + +1652 +un£t +( +$e +[ +couÁ +($e) - 1]); + +1653 + g$fkName + = +im¶ode +('_', +$e +); + +1654 + g$Çme + = +$fkName + . '_' . ++ +$’d +; + +1656 + g$Çme + .= '_1'; + +1660 + g$this +-> + g_u£dNames +[ +$ty³ +][ +$key +] = +$Çme +; + +1662  + g$Çme +; + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Common.php + +1 'unknownƒrror', + +40 +Doùrše_CÜe +:: +ERR_ALREADY_EXISTS + => 'alreadyƒxists', + +41 +Doùrše_CÜe +:: +ERR_CANNOT_CREATE + => 'can‚ot create', + +42 +Doùrše_CÜe +:: +ERR_CANNOT_ALTER + => 'can‚ot‡lter', + +43 +Doùrše_CÜe +:: +ERR_CANNOT_REPLACE + => 'can‚ot„eplace', + +44 +Doùrše_CÜe +:: +ERR_CANNOT_DELETE + => 'can‚ot delete', + +45 +Doùrše_CÜe +:: +ERR_CANNOT_DROP + => 'can‚ot drop', + +46 +Doùrše_CÜe +:: +ERR_CONSTRAINT + => 'constraint violation', + +47 +Doùrše_CÜe +:: +ERR_CONSTRAINT_NOT_NULL +=> 'null value violates‚ot-null constraint', + +48 +Doùrše_CÜe +:: +ERR_DIVZERO + => 'division by zero', + +49 +Doùrše_CÜe +:: +ERR_INVALID + => 'invalid', + +50 +Doùrše_CÜe +:: +ERR_INVALID_DATE + => 'invalid date orime', + +51 +Doùrše_CÜe +:: +ERR_INVALID_NUMBER + => 'invalid‚umber', + +52 +Doùrše_CÜe +:: +ERR_MISMATCH + => 'mismatch', + +53 +Doùrše_CÜe +:: +ERR_NODBSELECTED + => 'no database selected', + +54 +Doùrše_CÜe +:: +ERR_NOSUCHFIELD + => 'no such field', + +55 +Doùrše_CÜe +:: +ERR_NOSUCHTABLE + => 'no suchable', + +56 +Doùrše_CÜe +:: +ERR_NOT_CAPABLE + => 'Doctrine backend‚ot capable', + +57 +Doùrše_CÜe +:: +ERR_NOT_FOUND + => 'not found', + +58 +Doùrše_CÜe +:: +ERR_NOT_LOCKED + => 'not†ocked', + +59 +Doùrše_CÜe +:: +ERR_SYNTAX + => 'syntaxƒrror', + +60 +Doùrše_CÜe +:: +ERR_UNSUPPORTED + => 'not supported', + +61 +Doùrše_CÜe +:: +ERR_VALUE_COUNT_ON_ROW + => 'value count on„ow', + +62 +Doùrše_CÜe +:: +ERR_INVALID_DSN + => 'invalid DSN', + +63 +Doùrše_CÜe +:: +ERR_CONNECT_FAILED + => 'connect failed', + +64 +Doùrše_CÜe +:: +ERR_NEED_MORE_DATA + => 'insufficient data supplied', + +65 +Doùrše_CÜe +:: +ERR_EXTENSION_NOT_FOUND +=> 'extension‚ot found', + +66 +Doùrše_CÜe +:: +ERR_NOSUCHDB + => 'no such database', + +67 +Doùrše_CÜe +:: +ERR_ACCESS_VIOLATION + => 'insufficient…ermissions', + +68 +Doùrše_CÜe +:: +ERR_LOADMODULE + => 'error while including on demand module', + +69 +Doùrše_CÜe +:: +ERR_TRUNCATED + => 'truncated', + +70 +Doùrše_CÜe +:: +ERR_DEADLOCK + => 'deadlock detected', + +78 +´Ùeùed + + m$p܏bËCode +; + +86 +public + +funùiÚ + + $g‘P܏bËCode +() + +88  +$this +-> +p܏bËCode +; + +97 +public + +funùiÚ + + $g‘P܏bËMes§ge +() + +99  +£lf +:: + `”rÜMes§ge +( +$this +-> +p܏bËCode +); + +100 + } +} + +112 +public + +funùiÚ + + $”rÜMes§ge +( +$v®ue + = +nuÎ +) + +114  + `is£t +( +£lf +:: +$”rÜMes§ges +[ +$v®ue +]) ? + +115 +£lf +:: +$”rÜMes§ges +[ +$v®ue +] : s–f::$”rÜMes§ges[ +Doùrše_CÜe +:: +ERR +]; + +116 + } +} + +128 +public + +funùiÚ + + $´oûssE¼ÜInfo +( +¬¿y + +$”rÜInfo +) + +129 { + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Mock.php + +1 + `g‘Cu¼’tCÚÃùiÚ +(); + +55 +$this +-> +cÚn + = +$cÚn +; + +57 +$e + = + `ex¶ode +('_', + `g‘_þass +( +$this +)); + +59 +$this +-> +moduËName + = +$e +[1]; + +68 +public + +funùiÚ + + $g‘CÚÃùiÚ +() + +70  +$this +-> +cÚn +; + +71 + } +} + +79 +public + +funùiÚ + + $g‘ModuËName +() + +81  +$this +-> +moduËName +; + +82 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Mssql.php + +1 +suµÜ‹d + = + `¬¿y +( + +52 'šdexes' => +Œue +, + +53 'afãùed_rows' => +Œue +, + +54 'Œª§ùiÚs' => +Œue +, + +55 'summ¬y_funùiÚs' => +Œue +, + +56 'Üd”_by_‹xt' => +Œue +, + +59 'LOBs' => +Œue +, + +61 'sub_£Ëùs' => +Œue +, + +62 'auto_šüem’t' => +Œue +, + +63 '´im¬y_key' => +Œue +, + +64 '»suÉ_šŒo¥eùiÚ' => +Œue +, + +68 +$this +-> +´Ý”t›s +['varchar_max_length'] = 8000; + +70 +·»Á +:: + `__cÚ¡ruù +( +$mªag” +, +$ad­‹r +); + +84 +public + +funùiÚ + + $quÙeId’tif›r +( +$id’tif›r +, +$checkO±iÚ + = +çl£ +) + +86 ià( +$checkO±iÚ + && ! +$this +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_QUOTE_IDENTIFIER +)) { + +87  +$id’tif›r +; + +90 ià( + `¡½os +( +$id’tif›r +, '.'è!=ð +çl£ +) { + +91 +$·¹s + = + `ex¶ode +('.', +$id’tif›r +); + +92 +$quÙedP¬ts + = + `¬¿y +(); + +93 + `fܗch + ( +$·¹s + +as + +$p +) { + +94 +$quÙedP¬ts +[] = +$this +-> + `quÙeId’tif›r +( +$p +); + +97  + `im¶ode +('.', +$quÙedP¬ts +); + +100  '[' . + `¡r_»¶aû +(']', ']]', +$id’tif›r +) . ']'; + +101 + } +} + +143 +public + +funùiÚ + + $modifyLim™Qu”y +( +$qu”y +, +$lim™ + = +çl£ +, +$off£t + = f®£, +$isMª + = f®£, +$isSubQu”y + = f®£, +Doùrše_Qu”y + +$qu”yOrigš + = +nuÎ +) + +145 ià( +$lim™ + ==ð +çl£ + || !($limit > 0)) { + +146  +$qu”y +; + +149 +$Üd”by + = + `¡ri¡r +( +$qu”y +, 'ORDER BY'); + +151 ià( +$off£t + !=ð +çl£ + && +$Üd”by + === false) { + +152 +throw + +Ãw + + `Doùrše_CÚÃùiÚ_Exû±iÚ +("OFFSET cannot be used in MSSQL without ORDER BY dueoƒmulation„easons."); + +155 +$couÁ + = + `štv® +( +$lim™ +); + +156 +$off£t + = + `štv® +($offset); + +158 ià( +$off£t + < 0) { + +159 +throw + +Ãw + + `Doùrše_CÚÃùiÚ_Exû±iÚ +("LIMIT‡rgument offset=$offset is‚ot valid"); + +162 +$Üd”bySql + = +$qu”yOrigš +-> + `g‘SqlQu”yP¬t +('orderby'); + +163 +$Üd”byDql + = +$qu”yOrigš +-> + `g‘DqlP¬t +('orderby'); + +165 ià( +$Üd”by + !=ð +çl£ +) { + +166 +$Üd”s + = +$this +-> + `·r£Ord”By +( + `im¶ode +(', ', +$qu”yOrigš +-> + `g‘DqlP¬t +('orderby'))); + +168  +$i + = 0; $˜< + `couÁ +( +$Üd”s +); $i++) { + +169 +$sÜts +[ +$i +] = ( + `¡ros +( +$Üd”s +[$i], ' desc'è!=ð +çl£ +) ? 'DESC' : 'ASC'; + +170 +$Üd”s +[ +$i +] = + `Œim +( + `´eg_»¶aû +('/\s+(ASC|DESC)$/i', '', $orders[$i])); + +172 + `li¡ +( +$f›ldAlŸ£s +[ +$i +], +$f›lds +[$i]èð + `¡r¡r +( +$Üd”s +[$i], '.'è? + `ex¶ode +('.', $Üd”s[$i]è: + `¬¿y +('', $orders[$i]); + +173 +$cÞumnAlŸs +[ +$i +] = +$qu”yOrigš +-> + `g‘SqlTabËAlŸs +($qu”yOrigš-> + `g‘Ex´essiÚOwÃr +( +$Üd”s +[$i])); + +175 +$cmp + = +$qu”yOrigš +-> + `g‘Qu”yCompڒt +($qu”yOrigš-> + `g‘Ex´essiÚOwÃr +( +$Üd”s +[ +$i +])); + +176 +$bËs +[ +$i +] = +$cmp +['table']; + +177 +$cÞumns +[ +$i +] = +$cmp +['bË']-> + `g‘CÞumnName +( +$f›lds +[$i]); + +180 +$®Ÿ£s +[ +$i +] = +$cÞumnAlŸs +[$i] . '__' . +$cÞumns +[$i]; + +185 +$£ËùRegExp + = 'SELECT\s+'; + +186 +$£ËùR•Ïû + = 'SELECT '; + +188 ià( + `´eg_m©ch +('/^SELECT(\s+)DISTINCT/i', +$qu”y +)) { + +189 +$£ËùRegExp + .= 'DISTINCT\s+'; + +190 +$£ËùR•Ïû + .= 'DISTINCT '; + +193 +$f›lds_¡ršg + = + `sub¡r +( +$qu”y +, + `¡¾’ +( +$£ËùR•Ïû +), + `¡½os +($query, ' FROM ') - strlen($selectReplace)); + +194 +$f›ld_¬¿y + = + `ex¶ode +(',', +$f›lds_¡ršg +); + +195 +$f›ld_¬¿y + = + `¬¿y_shiá +($field_array); + +196 +$aux2 + = + `´eg_¥l™ +('/‡ /i', +$f›ld_¬¿y +); + +197 +$aux2 + = + `ex¶ode +('.', + `’d +($aux2)); + +198 +$key_f›ld + = + `Œim +( + `’d +( +$aux2 +)); + +200 +$qu”y + = + `´eg_»¶aû +('/^'. +$£ËùRegExp +.'/i', +$£ËùR•Ïû + . 'TOP ' . ( +$couÁ + + +$off£t +) . ' ', $query); + +202 ià( +$isSubQu”y + ==ð +Œue +) { + +203 +$qu”y + = 'SELECT TOP ' . +$couÁ + . ' ' . +$this +-> + `quÙeId’tif›r +('šÃr_tbl'è. '.' . +$key_f›ld + . ' FROM (' . $query . ') AS ' . $this->quoteIdentifier('inner_tbl'); + +205 +$qu”y + = 'SELECT * FROM (SELECT TOP ' . +$couÁ + . ' * FROM (' . $qu”y . 'èAS ' . +$this +-> + `quÙeId’tif›r +('inner_tbl'); + +208 ià( +$Üd”by + !=ð +çl£ +) { + +209 +$qu”y + .= ' ORDER BY '; + +211  +$i + = 0, +$l + = + `couÁ +( +$Üd”s +); $i < $l; $i++) { + +212 ià( +$i + > 0) { + +213 +$qu”y + .= ', '; + +216 +$qu”y + .ð +$this +-> + `modifyOrd”ByCÞumn +( +$bËs +[ +$i +], +$cÞumns +[$i], $this-> + `quÙeId’tif›r +('šÃr_tbl'è. '.' . $this->quÙeId’tif›r( +$®Ÿ£s +[$i])) . ' '; + +217 +$qu”y + .ð( + `¡ros +( +$sÜts +[ +$i +], 'asc'è!=ð +çl£ +) ? 'DESC' : 'ASC'; + +221 ià( +$isSubQu”y + !=ð +Œue +) { + +222 +$qu”y + .ð'èAS ' . +$this +-> + `quÙeId’tif›r +('outer_tbl'); + +224 ià( +$Üd”by + !=ð +çl£ +) { + +225 +$qu”y + .= ' ORDER BY '; + +227  +$i + = 0, +$l + = + `couÁ +( +$Üd”s +); $i < $l; $i++) { + +228 ià( +$i + > 0) { + +229 +$qu”y + .= ', '; + +232 +$qu”y + .ð +$this +-> + `modifyOrd”ByCÞumn +( +$bËs +[ +$i +], +$cÞumns +[$i], $this-> + `quÙeId’tif›r +('ou‹r_tbl'è. '.' . $this->quÙeId’tif›r( +$®Ÿ£s +[$i])è. ' ' . +$sÜts +[$i]; + +237  +$qu”y +; + +238 + } +} + +245 +´iv©e + +funùiÚ + + $·r£Ord”By +( +$Üd”by +) + +247 +$m©ches + = + `¬¿y +(); + +248 +$chunks + = + `¬¿y +(); + +249 +$tok’s + = + `¬¿y +(); + +250 +$·r£d + = + `¡r_œ•Ïû +('ORDER BY', '', +$Üd”by +); + +252 + `´eg_m©ch_®l +('/(\w+\(.+?\)\s+(ASC|DESC)),?/', +$Üd”by +, +$m©ches +); + +254 +$m©chesW™hEx´essiÚs + = +$m©ches +[1]; + +256 + `fܗch + ( +$m©chesW™hEx´essiÚs + +as + +$m©ch +) { + +257 +$chunks +[] = +$m©ch +; + +258 +$·r£d + = + `¡r_»¶aû +( +$m©ch +, '##' . ( + `couÁ +( +$chunks +) - 1) . '##', $parsed); + +261 +$tok’s + = + `´eg_¥l™ +('/,/', +$·r£d +); + +263  +$i + = 0, +$iMax + = + `couÁ +( +$tok’s +); $i < $iMax; $i++) { + +264 +$tok’s +[ +$i +] = + `Œim +( + `´eg_»¶aû +('/##(\d+)##/e', "\$chunks[\\1]", $tokens[$i])); + +267  +$tok’s +; + +268 + } +} + +280 +public + +funùiÚ + + $modifyOrd”ByCÞumn +( +Doùrše_TabË + +$bË +, +$f›ld +, +$‹rm +) + +282 +$def + = +$bË +-> + `g‘Defš™iÚOf +( +$f›ld +); + +284 ià( +$def +['ty³'] =ð'¡ršg' && $def['Ëngth'] ==ð +NULL +) { + +285 +$‹rm + = 'CAST(' . $term . ' AS varchar(8000))'; + +288  +$‹rm +; + +289 + } +} + +297 +public + +funùiÚ + + $modifyLim™Subqu”y +( +Doùrše_TabË + +$roÙTabË +, +$qu”y +, +$lim™ + = +çl£ +, +$off£t + = f®£, +$isMª + = false) + +299  +$this +-> + `modifyLim™Qu”y +( +$qu”y +, +$lim™ +, +$off£t +, +$isMª +, +Œue +); + +300 + } +} + +308 +public + +funùiÚ + + $g‘S”v”V”siÚ +( +$Çtive + = +çl£ +) + +310 ià( +$this +-> +£rv”Info +) { + +311 +$£rv”Info + = +$this +-> +£rv”Info +; + +313 +$qu”y + = 'SELECT @@VERSION'; + +314 +$£rv”Info + = +$this +-> + `ãtchOà +( +$qu”y +); + +317 +$this +-> +£rv”Info + = +$£rv”Info +; + +318 iàÐ! +$Çtive +) { + +319 ià( + `´eg_m©ch +('/([0-9]+)\.([0-9]+)\.([0-9]+)/', +$£rv”Info +, +$tmp +)) { + +320 +$£rv”Info + = + `¬¿y +( + +321 'majÜ' => +$tmp +[1], + +322 'mšÜ' => +$tmp +[2], + +323 '·tch' => +$tmp +[3], + +324 'exŒa' => +nuÎ +, + +325 'Çtive' => +$£rv”Info +, + +328 +$£rv”Info + = + `¬¿y +( + +329 'majÜ' => +nuÎ +, + +330 'mšÜ' => +nuÎ +, + +331 '·tch' => +nuÎ +, + +332 'exŒa' => +nuÎ +, + +333 'Çtive' => +$£rv”Info +, + +337  +$£rv”Info +; + +338 + } +} + +346 +public + +funùiÚ + + $checkSequ’û +( +$£qName +) + +348 +$qu”y + = 'SELECT * FROM ' . +$£qName +; + +349 +Œy + { + +350 +$this +-> + `exec +( +$qu”y +); + +351 } + `ÿtch +( +Doùrše_CÚÃùiÚ_Exû±iÚ + +$e +) { + +352 ià( +$e +-> + `g‘P܏bËCode +(è=ð +Doùrše_CÜe +:: +ERR_NOSUCHTABLE +) { + +353  +çl£ +; + +356 +throw + +$e +; + +358  +Œue +; + +359 + } +} + +368 +public + +funùiÚ + +execu‹ +( +$qu”y +, +¬¿y + +$·¿ms + = + $¬¿y +()) + +370 if(! + `em±y +( +$·¿ms +)) { + +371 +$qu”y + = +$this +-> + `»¶aûBoundP¬amsW™hIƚeV®uesInQu”y +($qu”y, +$·¿ms +); + +374  +·»Á +:: + `execu‹ +( +$qu”y +, + `¬¿y +()); + +375 + } +} + +384 +public + +funùiÚ + +exec +( +$qu”y +, +¬¿y + +$·¿ms + = + $¬¿y +()) + +386 if(! + `em±y +( +$·¿ms +)) { + +387 +$qu”y + = +$this +-> + `»¶aûBoundP¬amsW™hIƚeV®uesInQu”y +($qu”y, +$·¿ms +); + +390  +·»Á +:: + `exec +( +$qu”y +, + `¬¿y +()); + +391 + } +} + +401 +´Ùeùed + +funùiÚ + + $»¶aûBoundP¬amsW™hIƚeV®uesInQu”y +( +$qu”y +, +¬¿y + +$·¿ms +) { + +403 + `fܗch +( +$·¿ms + +as + +$key + => +$v®ue +) { + +404 +$» + = '/(?<=WHERE|VALUES|SET|JOIN)(.*?)(\?)/'; + +405 +$qu”y + = + `´eg_»¶aû +( +$» +, "\\1##{$key}##", $query, 1); + +408 +$»¶aûm’t + = 'is_null($value) ? \'NULL\' : $this->quote($params[\\1])'; + +409 +$qu”y + = + `´eg_»¶aû +('/##(\d+)##/e', +$»¶aûm’t +, $query); + +411  +$qu”y +; + +413 + } +} + +423 +public + +funùiÚ + + $𣹠+( +Doùrše_TabË + +$bË +, +¬¿y + +$f›lds +) + +425 +$id’tif›rs + = +$bË +-> + `g‘Id’tif›rCÞumnNames +(); + +427 +$£‰šgNuÎId’tif›r + = +çl£ +; + +428 +$f›lds + = + `¬¿y_chªge_key_ÿ£ +($fields); + +429 + `fܗch +( +$id’tif›rs + +as + +$id’tif›r +) { + +430 +$lcId’tif›r + = + `¡¹Þow” +( +$id’tif›r +); + +432 if( + `¬¿y_key_exi¡s +( +$lcId’tif›r +, +$f›lds +)) { + +433 if( + `is_nuÎ +( +$f›lds +[ +$lcId’tif›r +])) { + +434 +$£‰šgNuÎId’tif›r + = +Œue +; + +435 + `un£t +( +$f›lds +[ +$lcId’tif›r +]); + +441 ià( +$£‰šgNuÎId’tif›r +) { + +442 +$couÁ + = +$this +-> + `exec +('INSERT INTO ' . $this-> + `quÙeId’tif›r +( +$bË +-> + `g‘TabËName +()) . ' DEFAULT VALUES'); + +444 if(! +$couÁ +) { + +445  +$couÁ +; + +448 +$id + = +$this +-> + `Ï¡In£¹Id +( +$bË +-> + `g‘TabËName +()); + +450  +$this +-> + `upd©e +( +$bË +, +$f›lds +, + `¬¿y +( +$id +)); + +453  +·»Á +:: + `𣹠+( +$bË +, +$f›lds +); + +454 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Mssql/Exception.php + +1 +Doùrše_CÜe +:: +ERR_VALUE_COUNT_ON_ROW +, + +42 155 => +Doùrše_CÜe +:: +ERR_NOSUCHFIELD +, + +43 170 => +Doùrše_CÜe +:: +ERR_SYNTAX +, + +44 207 => +Doùrše_CÜe +:: +ERR_NOSUCHFIELD +, + +45 208 => +Doùrše_CÜe +:: +ERR_NOSUCHTABLE +, + +46 245 => +Doùrše_CÜe +:: +ERR_INVALID_NUMBER +, + +47 515 => +Doùrše_CÜe +:: +ERR_CONSTRAINT_NOT_NULL +, + +48 547 => +Doùrše_CÜe +:: +ERR_CONSTRAINT +, + +49 1913 => +Doùrše_CÜe +:: +ERR_ALREADY_EXISTS +, + +50 2627 => +Doùrše_CÜe +:: +ERR_CONSTRAINT +, + +51 2714 => +Doùrše_CÜe +:: +ERR_ALREADY_EXISTS +, + +52 3701 => +Doùrše_CÜe +:: +ERR_NOSUCHTABLE +, + +53 8134 => +Doùrše_CÜe +:: +ERR_DIVZERO +, + +66 +public + +funùiÚ + + $´oûssE¼ÜInfo +( +¬¿y + +$”rÜInfo +) + +68 +$code + = +$”rÜInfo +[1]; + +69 ià( + `is£t +( +£lf +:: +$”rÜCodeM­ +[ +$code +])) { + +70 +$this +-> +p܏bËCode + = +£lf +:: +$”rÜCodeM­ +[ +$code +]; + +71  +Œue +; + +73  +çl£ +; + +75 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Mysql.php + +1 + `£tA‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_DEFAULT_TABLE_TYPE +, 'INNODB'); + +50 +$this +-> +suµÜ‹d + = + `¬¿y +( + +52 'šdexes' => +Œue +, + +53 'afãùed_rows' => +Œue +, + +54 'Œª§ùiÚs' => +Œue +, + +55 '§v•ošts' => +çl£ +, + +56 'summ¬y_funùiÚs' => +Œue +, + +57 'Üd”_by_‹xt' => +Œue +, + +59 'lim™_qu”›s' => +Œue +, + +60 'LOBs' => +Œue +, + +61 '»¶aû' => +Œue +, + +62 'sub_£Ëùs' => +Œue +, + +63 'auto_šüem’t' => +Œue +, + +64 '´im¬y_key' => +Œue +, + +65 '»suÉ_šŒo¥eùiÚ' => +Œue +, + +67 'id’tif›r_quٚg' => +Œue +, + +68 '·‰”n_esÿpšg' => +Œue + + +71 +$this +-> +´Ý”t›s +['¡ršg_quٚg'] = + `¬¿y +('start' => "'", + +76 +$this +-> +´Ý”t›s +['id’tif›r_quٚg'] = + `¬¿y +('start' => '`', + +80 +$this +-> +´Ý”t›s +['sql_comm’ts'] = + `¬¿y +( + +81 + `¬¿y +('¡¬t' => '-- ', '’d' => "\n", 'esÿ³' => +çl£ +), + +82 + `¬¿y +('¡¬t' => '#', '’d' => "\n", 'esÿ³' => +çl£ +), + +83 + `¬¿y +('¡¬t' => '/*', '’d' => '*/', 'esÿ³' => +çl£ +), + +86 +$this +-> +´Ý”t›s +['varchar_max_length'] = 255; + +88 +·»Á +:: + `__cÚ¡ruù +( +$mªag” +, +$ad­‹r +); + +99 +public + +funùiÚ + + $cÚÃù +() + +101 +$cÚÃùed + = +·»Á +:: + `cÚÃù +(); + +102 +$this +-> + `£tA‰ribu‹ +( +PDO +:: +ATTR_EMULATE_PREPARES +, +Œue +); + +104  +$cÚÃùed +; + +105 + } +} + +113 +public + +funùiÚ + + $g‘D©aba£Name +() + +115  +$this +-> + `ãtchOà +('SELECT DATABASE()'); + +116 + } +} + +123 +public + +funùiÚ + + $£tCh¬£t +( +$ch¬£t +) + +125 +$qu”y + = 'SET NAMES ' . +$this +-> + `quÙe +( +$ch¬£t +); + +126 +$this +-> + `exec +( +$qu”y +); + +127 +·»Á +:: + `£tCh¬£t +( +$ch¬£t +); + +128 + } +} + +194 +public + +funùiÚ + + $»¶aû +( +Doùrše_TabË + +$bË +, +¬¿y + +$f›lds +,‡¼ay +$keys +) + +196 ià( + `em±y +( +$keys +)) { + +197 +throw + +Ãw + + `Doùrše_CÚÃùiÚ_Exû±iÚ +('Not specified which fields‡re keys'); + +200 +$cÞumns + = + `¬¿y +(); + +201 +$v®ues + = + `¬¿y +(); + +202 +$·¿ms + = + `¬¿y +(); + +203 + `fܗch + ( +$f›lds + +as + +$f›ldName + => +$v®ue +) { + +204 +$cÞumns +[] = +$bË +-> + `g‘CÞumnName +( +$f›ldName +); + +205 +$v®ues +[] = '?'; + +206 +$·¿ms +[] = +$v®ue +; + +209 +$qu”y + = 'REPLACE INTO ' . +$this +-> + `quÙeId’tif›r +( +$bË +-> + `g‘TabËName +()è. ' (' . + `im¶ode +(',', +$cÞumns +è. 'èVALUES (' . im¶ode(',', +$v®ues +) . ')'; + +211  +$this +-> + `exec +( +$qu”y +, +$·¿ms +); + +212 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Mysql/Exception.php + +1 +Doùrše_CÜe +:: +ERR_CANNOT_CREATE +, + +42 1005 => +Doùrše_CÜe +:: +ERR_CANNOT_CREATE +, + +43 1006 => +Doùrše_CÜe +:: +ERR_CANNOT_CREATE +, + +44 1007 => +Doùrše_CÜe +:: +ERR_ALREADY_EXISTS +, + +45 1008 => +Doùrše_CÜe +:: +ERR_CANNOT_DROP +, + +46 1022 => +Doùrše_CÜe +:: +ERR_ALREADY_EXISTS +, + +47 1044 => +Doùrše_CÜe +:: +ERR_ACCESS_VIOLATION +, + +48 1046 => +Doùrše_CÜe +:: +ERR_NODBSELECTED +, + +49 1048 => +Doùrše_CÜe +:: +ERR_CONSTRAINT +, + +50 1049 => +Doùrše_CÜe +:: +ERR_NOSUCHDB +, + +51 1050 => +Doùrše_CÜe +:: +ERR_ALREADY_EXISTS +, + +52 1051 => +Doùrše_CÜe +:: +ERR_NOSUCHTABLE +, + +53 1054 => +Doùrše_CÜe +:: +ERR_NOSUCHFIELD +, + +54 1061 => +Doùrše_CÜe +:: +ERR_ALREADY_EXISTS +, + +55 1062 => +Doùrše_CÜe +:: +ERR_ALREADY_EXISTS +, + +56 1064 => +Doùrše_CÜe +:: +ERR_SYNTAX +, + +57 1091 => +Doùrše_CÜe +:: +ERR_NOT_FOUND +, + +58 1100 => +Doùrše_CÜe +:: +ERR_NOT_LOCKED +, + +59 1136 => +Doùrše_CÜe +:: +ERR_VALUE_COUNT_ON_ROW +, + +60 1142 => +Doùrše_CÜe +:: +ERR_ACCESS_VIOLATION +, + +61 1146 => +Doùrše_CÜe +:: +ERR_NOSUCHTABLE +, + +62 1216 => +Doùrše_CÜe +:: +ERR_CONSTRAINT +, + +63 1217 => +Doùrše_CÜe +:: +ERR_CONSTRAINT +, + +64 1451 => +Doùrše_CÜe +:: +ERR_CONSTRAINT +, + +77 +public + +funùiÚ + + $´oûssE¼ÜInfo +( +¬¿y + +$”rÜInfo +) + +79 +$code + = +$”rÜInfo +[1]; + +80 ià( + `is£t +( +£lf +:: +$”rÜCodeM­ +[ +$code +])) { + +81 +$this +-> +p܏bËCode + = +£lf +:: +$”rÜCodeM­ +[ +$code +]; + +82  +Œue +; + +84  +çl£ +; + +86 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Oracle.php + +1 +suµÜ‹d + = + `¬¿y +( + +43 '£qu’ûs' => +Œue +, + +44 'šdexes' => +Œue +, + +45 'summ¬y_funùiÚs' => +Œue +, + +46 'Üd”_by_‹xt' => +Œue +, + +47 'cu¼’t_id' => +Œue +, + +48 'afãùed_rows' => +Œue +, + +49 'Œª§ùiÚs' => +Œue +, + +50 '§v•ošts' => +Œue +, + +51 'lim™_qu”›s' => +Œue +, + +52 'LOBs' => +Œue +, + +54 'sub_£Ëùs' => +Œue +, + +55 'auto_šüem’t' => +çl£ +, + +56 '´im¬y_key' => +Œue +, + +57 '»suÉ_šŒo¥eùiÚ' => +Œue +, + +58 '´•¬ed_¡©em’ts' => +Œue +, + +59 'id’tif›r_quٚg' => +Œue +, + +60 '·‰”n_esÿpšg' => +Œue +, + +63 +$this +-> +´Ý”t›s +['sql_file_delimiter'] = "\n/\n"; + +64 +$this +-> +´Ý”t›s +['number_max_precision'] = 38; + +65 +$this +-> +´Ý”t›s +['max_identifier_length'] = 30; + +67 +·»Á +:: + `__cÚ¡ruù +( +$mªag” +, +$ad­‹r +); + +71 +$this +-> + `£tP¬am +('varchar2_max_length', 4000); + +73 +$this +-> + `£tP¬am +('ch¬_un™', +nuÎ +); + +80 +public + +funùiÚ + + `£tD©eFÜm© +( +$fÜm© + = 'YYYY-MM-DD HH24:MI:SS') + +82 +$this +-> + `exec +('ALTER SESSION SET NLS_DATE_FORMAT = "' . +$fÜm© + . '"'); + +83 + } +} + +93 +public + +funùiÚ + + $modifyLim™Qu”y +( +$qu”y +, +$lim™ + = +çl£ +, +$off£t + = f®£, +$isMª + = false) + +95  +$this +-> + `_ü—‹Lim™Subqu”y +( +$qu”y +, +$lim™ +, +$off£t +); + +96 + } +} + +98 +´iv©e + +funùiÚ + + $_ü—‹Lim™Subqu”y +( +$qu”y +, +$lim™ +, +$off£t +, +$cÞumn + = +nuÎ +) + +100 +$lim™ + = () $limit; + +101 +$off£t + = () $offset; + +102 ià( + `´eg_m©ch +('/^\s*SELECT/i', +$qu”y +)) { + +103 iàÐ! + `´eg_m©ch +('/\sFROM\s/i', +$qu”y +)) { + +104 +$qu”y + .= " FROM dual"; + +106 ià( +$lim™ + > 0) { + +107 +$max + = +$off£t + + +$lim™ +; + +108 +$cÞumn + = $cÞumÀ==ð +nuÎ + ? '*' : +$this +-> + `quÙeId’tif›r +($column); + +109 ià( +$off£t + > 0) { + +110 +$mš + = +$off£t + + 1; + +111 +$qu”y + = 'SELECT '. +$this +-> + `quÙeId’tif›r +('b').'.'. +$cÞumn +.' FROM ( '. + +112 'SELECT '. +$this +-> + `quÙeId’tif›r +('a').'.*, ROWNUM AS doctrine_rownum FROM ( ' + +113 . +$qu”y + . ' ) ' . +$this +-> + `quÙeId’tif›r +('a') . ' '. + +114 ' ) ' . +$this +-> + `quÙeId’tif›r +('b') . ' '. + +115 'WHERE doùrše_rownum BETWEEN ' . +$mš + . ' AND ' . +$max +; + +117 +$qu”y + = 'SELECT‡.'. +$cÞumn +.' FROM ( ' . $qu”y .' )‡ WHERE ROWNUM <ð' . +$max +; + +121  +$qu”y +; + +122 + } +} + +128 +public + +funùiÚ + + $modifyLim™Subqu”y +( +Doùrše_TabË + +$roÙTabË +, +$qu”y +, +$lim™ + = +çl£ +, + +129 +$off£t + = +çl£ +, +$isMª + = false) + +132 +$cÞumnNames + = +$roÙTabË +-> + `g‘Id’tif›rCÞumnNames +(); + +133 ià( + `couÁ +( +$cÞumnNames +) > 1) { + +134 +throw + +Ãw + + `Doùrše_CÚÃùiÚ_Exû±iÚ +("Composite keys in LIMIT queries‡re " + +137 +$cÞumn + = +$cÞumnNames +[0]; + +138  +$this +-> + `_ü—‹Lim™Subqu”y +( +$qu”y +, +$lim™ +, +$off£t +, +$cÞumn +); + +139 + } +} + +141 +public + +funùiÚ + + $g‘TmpCÚÃùiÚ +( +$šfo +) + +143  +þÚe + +$this +; + +144 + } +} + +150 +public + +funùiÚ + + $quÙe +( +$šput +, +$ty³ + = +nuÎ +) + +152 ià( +$ty³ + === 'boolean') { + +153 ià( +$šput + ==ð +nuÎ +) { + +154  +nuÎ +; + +156  +$šput + ? 1 : 0; + +159  +·»Á +:: + `quÙe +( +$šput +, +$ty³ +); + +161 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Oracle/Exception.php + +1 +Doùrše_CÜe +:: +ERR_CONSTRAINT +, + +42 900 => +Doùrše_CÜe +:: +ERR_SYNTAX +, + +43 904 => +Doùrše_CÜe +:: +ERR_NOSUCHFIELD +, + +44 913 => +Doùrše_CÜe +:: +ERR_VALUE_COUNT_ON_ROW +, + +45 921 => +Doùrše_CÜe +:: +ERR_SYNTAX +, + +46 923 => +Doùrše_CÜe +:: +ERR_SYNTAX +, + +47 942 => +Doùrše_CÜe +:: +ERR_NOSUCHTABLE +, + +48 955 => +Doùrše_CÜe +:: +ERR_ALREADY_EXISTS +, + +49 1400 => +Doùrše_CÜe +:: +ERR_CONSTRAINT_NOT_NULL +, + +50 1401 => +Doùrše_CÜe +:: +ERR_INVALID +, + +51 1407 => +Doùrše_CÜe +:: +ERR_CONSTRAINT_NOT_NULL +, + +52 1418 => +Doùrše_CÜe +:: +ERR_NOT_FOUND +, + +53 1476 => +Doùrše_CÜe +:: +ERR_DIVZERO +, + +54 1722 => +Doùrše_CÜe +:: +ERR_INVALID_NUMBER +, + +55 2289 => +Doùrše_CÜe +:: +ERR_NOSUCHTABLE +, + +56 2291 => +Doùrše_CÜe +:: +ERR_CONSTRAINT +, + +57 2292 => +Doùrše_CÜe +:: +ERR_CONSTRAINT +, + +58 2449 => +Doùrše_CÜe +:: +ERR_CONSTRAINT +, + +71 +public + +funùiÚ + + $´oûssE¼ÜInfo +( +¬¿y + +$”rÜInfo +) + +73 +$code + = +$”rÜInfo +[1]; + +74 ià( + `is£t +( +£lf +:: +$”rÜCodeM­ +[ +$code +])) { + +75 +$this +-> +p܏bËCode + = +£lf +:: +$”rÜCodeM­ +[ +$code +]; + +76  +Œue +; + +78  +çl£ +; + +80 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Pgsql.php + +1 +suµÜ‹d + = + `¬¿y +( + +51 '£qu’ûs' => +Œue +, + +52 'šdexes' => +Œue +, + +53 'afãùed_rows' => +Œue +, + +54 'summ¬y_funùiÚs' => +Œue +, + +55 'Üd”_by_‹xt' => +Œue +, + +56 'Œª§ùiÚs' => +Œue +, + +57 '§v•ošts' => +Œue +, + +58 'cu¼’t_id' => +Œue +, + +59 'lim™_qu”›s' => +Œue +, + +60 'LOBs' => +Œue +, + +62 'sub_£Ëùs' => +Œue +, + +64 '´im¬y_key' => +Œue +, + +65 '»suÉ_šŒo¥eùiÚ' => +Œue +, + +66 '´•¬ed_¡©em’ts' => +Œue +, + +67 'id’tif›r_quٚg' => +Œue +, + +68 '·‰”n_esÿpšg' => +Œue +, + +71 +$this +-> +´Ý”t›s +['¡ršg_quٚg'] = + `¬¿y +('start' => "'", + +76 +$this +-> +´Ý”t›s +['id’tif›r_quٚg'] = + `¬¿y +('start' => '"', + +79 +·»Á +:: + `__cÚ¡ruù +( +$mªag” +, +$ad­‹r +); + +89 +public + +funùiÚ + + $£tCh¬£t +( +$ch¬£t +) + +91 +$qu”y + = 'SET NAMES '. +$this +-> + `quÙe +( +$ch¬£t +); + +92 +$this +-> + `exec +( +$qu”y +); + +93 +·»Á +:: + `£tCh¬£t +( +$ch¬£t +); + +94 + } +} + +106 +public + +funùiÚ + + $cÚv”tBoޗns +( +$™em +) + +108 ià( + `is_¬¿y +( +$™em +)) { + +109 + `fܗch + ( +$™em + +as + +$key + => +$v®ue +) { + +110 ià( + `is_boÞ +( +$v®ue +)) { + +111 +$™em +[ +$key +] = ( +$v®ue +) ? 'true' : 'false'; + +115 ià( + `is_boÞ +( +$™em +è|| + `is_num”ic +($item)) { + +116 +$™em + = ($item) ? 'true' : 'false'; + +119  +$™em +; + +120 + } +} + +131 +public + +funùiÚ + + $modifyLim™Qu”y +( +$qu”y +, +$lim™ + = +çl£ +, +$off£t + = f®£, +$isMª + = false) + +133 ià( +$lim™ + > 0) { + +134 +$qu”y + = + `¹rim +($query); + +136 ià( + `sub¡r +( +$qu”y +, -1) == ';') { + +137 +$qu”y + = + `sub¡r +($query, 0, -1); + +140 ià( +$isMª +) { + +141 +$mª + = + `´eg_»¶aû +('/^(DELETE FROM|UPDATE).*$/', '\\1', +$qu”y +); + +142 +$äom + = +$m©ch +[2]; + +143 +$wh”e + = +$m©ch +[3]; + +144 +$qu”y + = +$mª + . ' ' . +$äom + . ' WHERE ctid=(SELECT ctid FROM ' + +145 . +$äom + . ' ' . +$wh”e + . ' LIMIT ' . () +$lim™ + . ')'; + +148 iàÐ! + `em±y +( +$lim™ +)) { + +149 +$qu”y + .ð' LIMIT ' . () +$lim™ +; + +151 iàÐ! + `em±y +( +$off£t +)) { + +152 +$qu”y + .ð' OFFSET ' . () +$off£t +; + +156  +$qu”y +; + +157 + } +} + +165 +public + +funùiÚ + + $g‘S”v”V”siÚ +( +$Çtive + = +çl£ +) + +167 +$qu”y + = 'SHOW SERVER_VERSION'; + +169 +$£rv”Info + = +$this +-> + `ãtchOà +( +$qu”y +); + +171 iàÐ! +$Çtive +) { + +172 +$tmp + = + `ex¶ode +('.', +$£rv”Info +, 3); + +174 ià( + `em±y +( +$tmp +[2]è&& + `is£t +($tmp[1]) + +175 && + `´eg_m©ch +('/(\d+)(.*)/', +$tmp +[1], +$tmp2 +) + +177 +$£rv”Info + = + `¬¿y +( + +178 'majÜ' => +$tmp +[0], + +179 'mšÜ' => +$tmp2 +[1], + +180 '·tch' => +nuÎ +, + +181 'exŒa' => +$tmp2 +[2], + +182 'Çtive' => +$£rv”Info +, + +185 +$£rv”Info + = + `¬¿y +( + +186 'majÜ' => + `is£t +( +$tmp +[0]è? $tmp[0] : +nuÎ +, + +187 'mšÜ' => + `is£t +( +$tmp +[1]è? $tmp[1] : +nuÎ +, + +188 '·tch' => + `is£t +( +$tmp +[2]è? $tmp[2] : +nuÎ +, + +189 'exŒa' => +nuÎ +, + +190 'Çtive' => +$£rv”Info +, + +194  +$£rv”Info +; + +195 + } +} + +205 +public + +funùiÚ + + $𣹠+( +Doùrše_TabË + +$bË +, +¬¿y + +$f›lds +) + +207 +$bËName + = +$bË +-> + `g‘TabËName +(); + +210 +$cÞs + = + `¬¿y +(); + +212 +$a + = + `¬¿y +(); + +214 + `fܗch + ( +$f›lds + +as + +$f›ldName + => +$v®ue +) { + +215 ià( +$bË +-> + `isId’tif›r +( +$f›ldName +) + +216 && +$bË +-> + `isId’tif›rAutošüem’t +() + +217 && +$v®ue + =ð +nuÎ +) { + +220 + `un£t +( +$f›lds +[ +$f›ldName +]); + +223 +$cÞs +[] = +$this +-> + `quÙeId’tif›r +( +$bË +-> + `g‘CÞumnName +( +$f›ldName +)); + +224 ià( +$v®ue + +š¡ªûof + +Doùrše_Ex´essiÚ +) { + +225 +$a +[] = +$v®ue +-> + `g‘Sql +(); + +226 + `un£t +( +$f›lds +[ +$f›ldName +]); + +228 +$a +[] = '?'; + +232 ià( + `couÁ +( +$f›lds +) == 0) { + +234  +$this +-> + `exec +('INSERT INTO ' . $this-> + `quÙeId’tif›r +( +$bËName +) + +240 +$qu”y + = 'INSERT INTO ' . +$this +-> + `quÙeId’tif›r +( +$bËName +) + +241 . ' (' . + `im¶ode +(', ', +$cÞs +) . ')' + +242 . ' VALUES (' . + `im¶ode +(', ', +$a +) . ')'; + +244  +$this +-> + `exec +( +$qu”y +, + `¬¿y_v®ues +( +$f›lds +)); + +245 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Pgsql/Exception.php + +1 +Doùrše_CÜe +:: +ERR_SYNTAX +, + +45 => +Doùrše_CÜe +:: +ERR_SYNTAX +, + +47 => +Doùrše_CÜe +:: +ERR_SYNTAX +, + +49 => +Doùrše_CÜe +:: +ERR_NOSUCHFIELD +, + +51 => +Doùrše_CÜe +:: +ERR_NOSUCHFIELD +, + +53 => +Doùrše_CÜe +:: +ERR_NOSUCHFIELD +, + +55 => +Doùrše_CÜe +:: +ERR_NOSUCHTABLE +, + +57 => +Doùrše_CÜe +:: +ERR_NOT_FOUND +, + +59 => +Doùrše_CÜe +:: +ERR_ALREADY_EXISTS +, + +61 => +Doùrše_CÜe +:: +ERR_DIVZERO +, + +63 => +Doùrše_CÜe +:: +ERR_INVALID_NUMBER +, + +65 => +Doùrše_CÜe +:: +ERR_INVALID_NUMBER +, + +67 => +Doùrše_CÜe +:: +ERR_INVALID_NUMBER +, + +69 => +Doùrše_CÜe +:: +ERR_INVALID_NUMBER +, + +71 => +Doùrše_CÜe +:: +ERR_INVALID +, + +73 => +Doùrše_CÜe +:: +ERR_ACCESS_VIOLATION +, + +75 => +Doùrše_CÜe +:: +ERR_CONSTRAINT +, + +77 => +Doùrše_CÜe +:: +ERR_CONSTRAINT +, + +79 => +Doùrše_CÜe +:: +ERR_CONSTRAINT_NOT_NULL +, + +81 => +Doùrše_CÜe +:: +ERR_VALUE_COUNT_ON_ROW +, + +98 +public + +funùiÚ + + $´oûssE¼ÜInfo +( +¬¿y + +$”rÜInfo +) + +100 + `fܗch + ( +£lf +:: +$”rÜRegexps + +as + +$»gexp + => +$code +) { + +101 ià( + `´eg_m©ch +( +$»gexp +, +$”rÜInfo +[2])) { + +102 +$this +-> +p܏bËCode + = +$code +; + +103  +Œue +; + +106  +çl£ +; + +108 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Profiler.php + +1 +¡¬t +(); + +95 + g$ev’tSequ’û + = +$a +[0]-> +g‘Sequ’û +(); + +96 iàÐ! +is£t +( +$this +-> +ev’tSequ’ûs +[ +$ev’tSequ’û +])) { + +97 + g$this +-> + gev’ts +[] = +$a +[0]; + +98 + g$this +-> + gev’tSequ’ûs +[ +$ev’tSequ’û +] = +Œue +; + +102 + g$a +[0]-> +’d +(); + +112 +public + +funùiÚ + +g‘ +( +$key +) + +114 ià( +is£t +( +$this +-> +ev’ts +[ +$key +])) { + +115  + g$this +-> + gev’ts +[ +$key +]; + +117  + gnuÎ +; + +126 +public + +funùiÚ + +g‘AÎ +() + +128  + g$this +-> + gev’ts +; + +137 +public + +funùiÚ + +g‘I‹¿tÜ +() + +139  +Ãw + +A¼ayI‹¿tÜ +( +$this +-> +ev’ts +); + +147 +public + +funùiÚ + +couÁ +() + +149  +couÁ +( +$this +-> +ev’ts +); + +157 +public + +funùiÚ + +pÝ +() + +159 + g$ev’t + = +¬¿y_pÝ +( +$this +-> +ev’ts +); + +160 ià( + g$ev’t + !=ð +nuÎ +) + +162 +un£t +( +$this +-> +ev’tSequ’ûs +[ +$ev’t +-> +g‘Sequ’û +()]); + +164  + g$ev’t +; + +173 +public + +funùiÚ + +Ï¡Ev’t +() + +175 ià( +em±y +( +$this +-> +ev’ts +)) { + +176  + gçl£ +; + +179 +’d +( +$this +-> +ev’ts +); + +180  +cu¼’t +( +$this +-> +ev’ts +); + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Profiler/Exception.php + +1 +suµÜ‹d + = + `¬¿y +('sequences' => 'emulated', + +50 'šdexes' => +Œue +, + +51 'afãùed_rows' => +Œue +, + +52 'summ¬y_funùiÚs' => +Œue +, + +53 'Üd”_by_‹xt' => +Œue +, + +55 'lim™_qu”›s' => +Œue +, + +56 'LOBs' => +Œue +, + +57 '»¶aû' => +Œue +, + +58 'Œª§ùiÚs' => +Œue +, + +59 '§v•ošts' => +çl£ +, + +60 'sub_£Ëùs' => +Œue +, + +61 'auto_šüem’t' => +Œue +, + +62 '´im¬y_key' => +Œue +, + +63 '»suÉ_šŒo¥eùiÚ' => +çl£ +, + +65 'id’tif›r_quٚg' => +Œue +, + +66 '·‰”n_esÿpšg' => +çl£ +, + +68 +·»Á +:: + `__cÚ¡ruù +( +$mªag” +, +$ad­‹r +); + +70 ià( +$this +-> +isCÚÃùed +) { + +71 +$this +-> +dbh +-> + `sql™eC»©eFunùiÚ +('mod', + `¬¿y +('Doctrine_Expression_Sqlite', 'modImpl'), 2); + +72 +$this +-> +dbh +-> + `sql™eC»©eFunùiÚ +('cÚÿt', + `¬¿y +('Doctrine_Expression_Sqlite', 'concatImpl')); + +73 +$this +-> +dbh +-> + `sql™eC»©eFunùiÚ +('md5', 'md5', 1); + +74 +$this +-> +dbh +-> + `sql™eC»©eFunùiÚ +('now', + `¬¿y +('Doctrine_Expression_Sqlite', 'nowImpl'), 0); + +84 +public + +funùiÚ + + $cÚÃù +() + +86 ià( +$this +-> +isCÚÃùed +) { + +87  +çl£ +; + +90 +·»Á +:: + `cÚÃù +(); + +92 +$this +-> +dbh +-> + `sql™eC»©eFunùiÚ +('mod', + `¬¿y +('Doctrine_Expression_Sqlite', 'modImpl'), 2); + +93 +$this +-> +dbh +-> + `sql™eC»©eFunùiÚ +('cÚÿt', + `¬¿y +('Doctrine_Expression_Sqlite', 'concatImpl')); + +94 +$this +-> +dbh +-> + `sql™eC»©eFunùiÚ +('md5', 'md5', 1); + +95 +$this +-> +dbh +-> + `sql™eC»©eFunùiÚ +('now', + `¬¿y +('Doctrine_Expression_Sqlite', 'nowImpl'), 0); + +96 + } +} + +103 +public + +funùiÚ + + $ü—‹D©aba£ +() + +105 iàÐ! +$d¢ + = +$this +-> + `g‘O±iÚ +('dsn')) { + +106 +throw + +Ãw + + `Doùrše_CÚÃùiÚ_Exû±iÚ +('You must create your Doctrine_Connection by using‡ valid Doctrine style dsn in ordero usehe create/drop database functionality'); + +109 +$šfo + = +$this +-> + `g‘Mªag” +()-> + `·r£D¢ +( +$d¢ +); + +111 +$this +-> +expÜt +-> + `ü—‹D©aba£ +( +$šfo +['database']); + +112 + } +} + +119 +public + +funùiÚ + + $drÝD©aba£ +() + +121 iàÐ! +$d¢ + = +$this +-> + `g‘O±iÚ +('dsn')) { + +122 +throw + +Ãw + + `Doùrše_CÚÃùiÚ_Exû±iÚ +('You must create your Doctrine_Connection by using‡ valid Doctrine style dsn in ordero usehe create/drop database functionality'); + +125 +$šfo + = +$this +-> + `g‘Mªag” +()-> + `·r£D¢ +( +$d¢ +); + +127 +$this +-> +expÜt +-> + `drÝD©aba£ +( +$šfo +['database']); + +128 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Sqlite/Exception.php + +1 +Doùrše_CÜe +:: +ERR_NOSUCHTABLE +, + +42 '/^nØsuch index:/' => +Doùrše_CÜe +:: +ERR_NOT_FOUND +, + +43 '/^ÑabË|šdexè.*‡Ì—dyƒxi¡s$/' => +Doùrše_CÜe +:: +ERR_ALREADY_EXISTS +, + +44 '/PRIMARY KEY mu¡ bunique/i' => +Doùrše_CÜe +:: +ERR_CONSTRAINT +, + +45 '/i nÙ unique/' => +Doùrše_CÜe +:: +ERR_CONSTRAINT +, + +46 '/cÞumn .*‡»‚Ù unique/i' => +Doùrše_CÜe +:: +ERR_CONSTRAINT +, + +47 '/uniqu’es cÚ¡¿šˆçžed/' => +Doùrše_CÜe +:: +ERR_CONSTRAINT +, + +48 '/may‚Ù bNULL/' => +Doùrše_CÜe +:: +ERR_CONSTRAINT_NOT_NULL +, + +49 '/^nØsuch cÞumn:/' => +Doùrše_CÜe +:: +ERR_NOSUCHFIELD +, + +50 '/cÞumÀnم»£Á iÀbÙhabËs/i' => +Doùrše_CÜe +:: +ERR_NOSUCHFIELD +, + +51 '/^ì ".*": syÁaxƒ¼Ü$/' => +Doùrše_CÜe +:: +ERR_SYNTAX +, + +52 '/[0-9]+ v®ue fÜ [0-9]+ cÞumns/i' => +Doùrše_CÜe +:: +ERR_VALUE_COUNT_ON_ROW +, + +67 +public + +funùiÚ + + $´oûssE¼ÜInfo +( +¬¿y + +$”rÜInfo +) + +69 + `fܗch + ( +£lf +:: +$”rÜRegexps + +as + +$»gexp + => +$code +) { + +70 ià( + `´eg_m©ch +( +$»gexp +, +$”rÜInfo +[2])) { + +72 +$this +-> +p܏bËCode + = +$code +; + +73  +Œue +; + +76  +çl£ +; + +78 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Statement.php + +1 +_cÚn + = +$cÚn +; + +56 +$this +-> +_¡mt + = +$¡mt +; + +58 ià( +$¡mt + ==ð +çl£ +) { + +59 +throw + +Ãw + + `Doùrše_Exû±iÚ +('Unknown statement object given.'); + +69 +public + +funùiÚ + + $g‘CÚÃùiÚ +() + +71  +$this +-> +_cÚn +; + +72 + } +} + +74 +public + +funùiÚ + + $g‘S‹m’t +() + +76  +$this +-> +_¡mt +; + +77 + } +} + +79 +public + +funùiÚ + + $g‘Qu”y +() + +81  +$this +-> +_¡mt +-> +qu”ySŒšg +; + +82 + } +} + +96 +public + +funùiÚ + + $bšdCÞumn +( +$cÞumn +, +$·¿m +, +$ty³ + = +nuÎ +) + +98 ià( +$ty³ + ==ð +nuÎ +) { + +99  +$this +-> +_¡mt +-> + `bšdCÞumn +( +$cÞumn +, +$·¿m +); + +101  +$this +-> +_¡mt +-> + `bšdCÞumn +( +$cÞumn +, +$·¿m +, +$ty³ +); + +103 + } +} + +119 +public + +funùiÚ + + $bšdV®ue +( +$·¿m +, +$v®ue +, +$ty³ + = +nuÎ +) + +121 ià( +$ty³ + ==ð +nuÎ +) { + +122  +$this +-> +_¡mt +-> + `bšdV®ue +( +$·¿m +, +$v®ue +); + +124  +$this +-> +_¡mt +-> + `bšdV®ue +( +$·¿m +, +$v®ue +, +$ty³ +); + +126 + } +} + +155 +public + +funùiÚ + +bšdP¬am +( +$cÞumn +, & +$v¬ŸbË +, +$ty³ + = +nuÎ +, +$Ëngth + =‚uÎ, +$driv”O±iÚs + = + $¬¿y +()) + +157 ià( +$ty³ + ==ð +nuÎ +) { + +158  +$this +-> +_¡mt +-> + `bšdP¬am +( +$cÞumn +, +$v¬ŸbË +); + +160  +$this +-> +_¡mt +-> + `bšdP¬am +( +$cÞumn +, +$v¬ŸbË +, +$ty³ +, +$Ëngth +, +$driv”O±iÚs +); + +162 + } +} + +170 +public + +funùiÚ + + $þo£CursÜ +() + +172  +$this +-> +_¡mt +-> + `þo£CursÜ +(); + +173 + } +} + +183 +public + +funùiÚ + + $cÞumnCouÁ +() + +185  +$this +-> +_¡mt +-> + `cÞumnCouÁ +(); + +186 + } +} + +195 +public + +funùiÚ + + $”rÜCode +() + +197  +$this +-> +_¡mt +-> + `”rÜCode +(); + +198 + } +} + +207 +public + +funùiÚ + + $”rÜInfo +() + +209  +$this +-> +_¡mt +-> + `”rÜInfo +(); + +210 + } +} + +227 +public + +funùiÚ + + $execu‹ +( +$·¿ms + = +nuÎ +) + +229 +Œy + { + +230 +$ev’t + = +Ãw + + `Doùrše_Ev’t +( +$this +, +Doùrše_Ev’t +:: +STMT_EXECUTE +, $this-> + `g‘Qu”y +(), +$·¿ms +); + +231 +$this +-> +_cÚn +-> + `g‘Li¡’” +()-> + `´eStmtExecu‹ +( +$ev’t +); + +233 +$»suÉ + = +Œue +; + +234 iàÐ! +$ev’t +-> +skO³¿tiÚ +) { + +236 ià( +$this +-> +_cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_PORTABILITY +è& Doùrše_CÜe:: +PORTABILITY_EMPTY_TO_NULL +) { + +237 + `fܗch + ( +$·¿ms + +as + +$key + => +$v®ue +) { + +238 ià( +$v®ue + === '') { + +239 +$·¿ms +[ +$key +] = +nuÎ +; + +244 ià( +$·¿ms +) { + +245 +$pos + = 0; + +246 + `fܗch + ( +$·¿ms + +as + +$key + => +$v®ue +) { + +247 +$pos +++; + +248 +$·¿m + = + `is_num”ic +( +$key +è? +$pos + : $key; + +249 ià( + `is_»sourû +( +$v®ue +)) { + +250 +$this +-> +_¡mt +-> + `bšdP¬am +( +$·¿m +, +$·¿ms +[ +$key +], +Doùrše_CÜe +:: +PARAM_LOB +); + +252 +$this +-> +_¡mt +-> + `bšdP¬am +( +$·¿m +, +$·¿ms +[ +$key +]); + +257 +$»suÉ + = +$this +-> +_¡mt +-> + `execu‹ +(); + +259 +$this +-> +_cÚn +-> + `šüem’tQu”yCouÁ +(); + +262 +$this +-> +_cÚn +-> + `g‘Li¡’” +()-> + `po¡StmtExecu‹ +( +$ev’t +); + +264  +$»suÉ +; + +265 } + `ÿtch + ( +PDOExû±iÚ + +$e +) { + +266 } + `ÿtch + ( +Doùrše_Ad­‹r_Exû±iÚ + +$e +) { + +269 +$this +-> +_cÚn +-> + `»throwExû±iÚ +( +$e +, $this); + +271  +çl£ +; + +272 + } +} + +301 +public + +funùiÚ + +ãtch +( +$ãtchMode + = +Doùrše_CÜe +:: +FETCH_BOTH +, + +302 +$cursÜOr›Á©iÚ + = +Doùrše_CÜe +:: +FETCH_ORI_NEXT +, + +303 +$cursÜOff£t + = +nuÎ +) + +305 +$ev’t + = +Ãw + +Doùrše_Ev’t +( +$this +, Doùrše_Ev’t:: +STMT_FETCH +, $this-> +g‘Qu”y +()); + +307 + g$ev’t +-> + gãtchMode + = +$ãtchMode +; + +308 + g$ev’t +-> + gcursÜOr›Á©iÚ + = +$cursÜOr›Á©iÚ +; + +309 + g$ev’t +-> + gcursÜOff£t + = +$cursÜOff£t +; + +311 + g$d©a + = +$this +-> +_cÚn +-> +g‘Li¡’” +()-> +´eF‘ch +( +$ev’t +); + +313 iàÐ! + g$ev’t +-> + gskO³¿tiÚ +) { + +314 + g$d©a + = +$this +-> +_¡mt +-> +ãtch +( +$ãtchMode +, +$cursÜOr›Á©iÚ +, +$cursÜOff£t +); + +317 + g$this +-> + g_cÚn +-> +g‘Li¡’” +()-> +po¡F‘ch +( +$ev’t +); + +319  + g$d©a +; + +335 +public + +funùiÚ + +ãtchAÎ +( +$ãtchMode + = +Doùrše_CÜe +:: +FETCH_BOTH +, + +336 +$cÞumnIndex + = +nuÎ +) + +338 +$ev’t + = +Ãw + +Doùrše_Ev’t +( +$this +, Doùrše_Ev’t:: +STMT_FETCHALL +, $this-> +g‘Qu”y +()); + +339 + g$ev’t +-> + gãtchMode + = +$ãtchMode +; + +340 + g$ev’t +-> + gcÞumnIndex + = +$cÞumnIndex +; + +342 + g$this +-> + g_cÚn +-> +g‘Li¡’” +()-> +´eF‘chAÎ +( +$ev’t +); + +344 iàÐ! + g$ev’t +-> + gskO³¿tiÚ +) { + +345 ià( + g$cÞumnIndex + !=ð +nuÎ +) { + +346 +$d©a + = +$this +-> +_¡mt +-> +ãtchAÎ +( +$ãtchMode +, +$cÞumnIndex +); + +348 + g$d©a + = +$this +-> +_¡mt +-> +ãtchAÎ +( +$ãtchMode +); + +351 + g$ev’t +-> + gd©a + = +$d©a +; + +354 + g$this +-> + g_cÚn +-> +g‘Li¡’” +()-> +po¡F‘chAÎ +( +$ev’t +); + +356  + g$d©a +; + +370 +public + +funùiÚ + + $ãtchCÞumn +( +$cÞumnIndex + = 0) + +372  +$this +-> +_¡mt +-> + `ãtchCÞumn +( +$cÞumnIndex +); + +373 + } +} + +388 +public + +funùiÚ + +ãtchObjeù +( +$þassName + = '¡dCÏss', +$¬gs + = + $¬¿y +()) + +390  +$this +-> +_¡mt +-> + `ãtchObjeù +( +$þassName +, +$¬gs +); + +391 + } +} + +401 +public + +funùiÚ + + $g‘A‰ribu‹ +( +$©Œibu‹ +) + +403  +$this +-> +_¡mt +-> + `g‘A‰ribu‹ +( +$©Œibu‹ +); + +404 + } +} + +422 +public + +funùiÚ + + $g‘CÞumnM‘a +( +$cÞumn +) + +424  +$this +-> +_¡mt +-> + `g‘CÞumnM‘a +( +$cÞumn +); + +425 + } +} + +438 +public + +funùiÚ + + $ÃxtRow£t +() + +440  +$this +-> +_¡mt +-> + `ÃxtRow£t +(); + +441 + } +} + +455 +public + +funùiÚ + + $rowCouÁ +() + +457  +$this +-> +_¡mt +-> + `rowCouÁ +(); + +458 + } +} + +468 +public + +funùiÚ + + $£tA‰ribu‹ +( +$©Œibu‹ +, +$v®ue +) + +470  +$this +-> +_¡mt +-> + `£tA‰ribu‹ +( +$©Œibu‹ +, +$v®ue +); + +471 + } +} + +480 +public + +funùiÚ + + $£tF‘chMode +( +$mode +, +$¬g1 + = +nuÎ +, +$¬g2 + =‚ull) + +482  +$this +-> +_¡mt +-> + `£tF‘chMode +( +$mode +, +$¬g1 +, +$¬g2 +); + +483 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/UnitOfWork.php + +1 + `assignInh”™ªûV®ues +(); + +53 +$cÚn + = +$this +-> + `g‘CÚÃùiÚ +(); + +54 +$cÚn +-> + `cÚÃù +(); + +56 +$¡©e + = +$»cÜd +-> + `¡©e +(); + +57 ià( +$¡©e + ==ð +Doùrše_RecÜd +:: +STATE_LOCKED + || $¡©==ðDoùrše_RecÜd:: +STATE_TLOCKED +) { + +58  +çl£ +; + +61 +$»cÜd +-> + `¡©e +($»cÜd-> + `exi¡s +(è? +Doùrše_RecÜd +:: +STATE_LOCKED + : Doùrše_RecÜd:: +STATE_TLOCKED +); + +63 +Œy + { + +64 +$cÚn +-> + `begšIÁ”ÇlT¿n§ùiÚ +(); + +65 +$»cÜd +-> + `¡©e +( +$¡©e +); + +67 +$ev’t + = +$»cÜd +-> + `švokeSaveHooks +('pre', 'save'); + +68 +$¡©e + = +$»cÜd +-> + `¡©e +(); + +70 +$isV®id + = +Œue +; + +72 iàÐ! +$ev’t +-> +skO³¿tiÚ +) { + +73 +$this +-> + `§veR–©edLoÿlKeys +( +$»cÜd +); + +75  +$¡©e +) { + +76  +Doùrše_RecÜd +:: +STATE_TDIRTY +: + +77  +Doùrše_RecÜd +:: +STATE_TCLEAN +: + +78 ià( +$»¶aû +) { + +79 +$isV®id + = +$this +-> + `»¶aû +( +$»cÜd +); + +81 +$isV®id + = +$this +-> + `𣹠+( +$»cÜd +); + +84  +Doùrše_RecÜd +:: +STATE_DIRTY +: + +85  +Doùrše_RecÜd +:: +STATE_PROXY +: + +86 ià( +$»¶aû +) { + +87 +$isV®id + = +$this +-> + `»¶aû +( +$»cÜd +); + +89 +$isV®id + = +$this +-> + `upd©e +( +$»cÜd +); + +92  +Doùrše_RecÜd +:: +STATE_CLEAN +: + +97 +$®Ÿ£sUƚkInDb + = + `¬¿y +(); + +99 ià( +$isV®id +) { + +101 + `fܗch + ( +$»cÜd +-> + `g‘P’dšgD–‘es +(è +as + +$³ndšgD–‘e +) { + +102 +$³ndšgD–‘e +-> + `d–‘e +(); + +105 + `fܗch + ( +$»cÜd +-> + `g‘P’dšgUƚks +(è +as + +$®Ÿs + => +$ids +) { + +106 ià( +$ids + ==ð +çl£ +) { + +107 +$»cÜd +-> + `uƚkInDb +( +$®Ÿs +, + `¬¿y +()); + +108 +$®Ÿ£sUƚkInDb +[] = +$®Ÿs +; + +109 } ià( +$ids +) { + +110 +$»cÜd +-> + `uƚkInDb +( +$®Ÿs +, + `¬¿y_keys +( +$ids +)); + +111 +$®Ÿ£sUƚkInDb +[] = +$®Ÿs +; + +114 +$»cÜd +-> + `»£tP’dšgUƚks +(); + +116 +$»cÜd +-> + `švokeSaveHooks +('po¡', '§ve', +$ev’t +); + +118 +$cÚn +-> +Œª§ùiÚ +-> + `addInv®id +( +$»cÜd +); + +121 +$¡©e + = +$»cÜd +-> + `¡©e +(); + +123 +$»cÜd +-> + `¡©e +($»cÜd-> + `exi¡s +(è? +Doùrše_RecÜd +:: +STATE_LOCKED + : Doùrše_RecÜd:: +STATE_TLOCKED +); + +125 ià( +$isV®id +) { + +126 +$§veL©” + = +$this +-> + `§veR–©edFÜeignKeys +( +$»cÜd +); + +127 + `fܗch + ( +$§veL©” + +as + +$fk +) { + +128 +$®Ÿs + = +$fk +-> + `g‘AlŸs +(); + +130 ià( +$»cÜd +-> + `hasReã»nû +( +$®Ÿs +)) { + +131 +$obj + = +$»cÜd +-> +$®Ÿs +; + +134 ià( +$obj + && ! ($obj +š¡ªûof + +Doùrše_NuÎ +)) { + +135 +$´oûssDiff + = ! + `š_¬¿y +( +$®Ÿs +, +$®Ÿ£sUƚkInDb +); + +136 +$obj +-> + `§ve +( +$cÚn +, +$´oûssDiff +); + +142 +$this +-> + `§veAssocŸtiÚs +( +$»cÜd +); + +146 +$»cÜd +-> + `¡©e +( +$¡©e +); + +148 +$cÚn +-> + `comm™ +(); + +149 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +152 +$cÚn +-> + `rÞlback +(); + +153 +throw + +$e +; + +156 +$»cÜd +-> + `þ—rInvokedSaveHooks +(); + +158  +Œue +; + +169 +public + +funùiÚ + + $d–‘e +( +Doùrše_RecÜd + +$»cÜd +) + +171 +$d–‘iÚs + = + `¬¿y +(); + +172 +$this +-> + `_cÞËùD–‘iÚs +( +$»cÜd +, +$d–‘iÚs +); + +173  +$this +-> + `_execu‹D–‘iÚs +( +$d–‘iÚs +); + +174 + } +} + +182 +´iv©e + +funùiÚ + + $_cÞËùD–‘iÚs +( +Doùrše_RecÜd + +$»cÜd +, +¬¿y + & +$d–‘iÚs +) + +184 iàÐ! +$»cÜd +-> + `exi¡s +()) { + +188 +$d–‘iÚs +[ +$»cÜd +-> + `g‘Oid +()] = $record; + +189 +$this +-> + `_ÿsÿdeD–‘e +( +$»cÜd +, +$d–‘iÚs +); + +190 + } +} + +198 +´iv©e + +funùiÚ + + $_execu‹D–‘iÚs +( +¬¿y + +$d–‘iÚs +) + +201 +$þassNames + = + `¬¿y +(); + +202 + `fܗch + ( +$d–‘iÚs + +as + +$»cÜd +) { + +203 +$þassNames +[] = +$»cÜd +-> + `g‘TabË +()-> + `g‘CompڒtName +(); + +205 +$þassNames + = + `¬¿y_unique +($classNames); + +208 +$executiÚOrd” + = +$this +-> + `buždFlushT»e +( +$þassNames +); + +211 +Œy + { + +212 +$this +-> +cÚn +-> + `begšIÁ”ÇlT¿n§ùiÚ +(); + +214  +$i + = + `couÁ +( +$executiÚOrd” +) - 1; $i >= 0; $i--) { + +215 +$þassName + = +$executiÚOrd” +[ +$i +]; + +216 +$bË + = +$this +-> +cÚn +-> + `g‘TabË +( +$þassName +); + +219 +$id’tif›rM­s + = + `¬¿y +(); + +220 +$d–‘edRecÜds + = + `¬¿y +(); + +221 + `fܗch + ( +$d–‘iÚs + +as + +$oid + => +$»cÜd +) { + +222 ià( +$»cÜd +-> + `g‘TabË +()-> + `g‘CompڒtName +(è=ð +$þassName +) { + +223 +$v‘o + = +$this +-> + `_´eD–‘e +( +$»cÜd +); + +224 iàÐ! +$v‘o +) { + +225 +$id’tif›rM­s +[] = +$»cÜd +-> + `id’tif›r +(); + +226 +$d–‘edRecÜds +[] = +$»cÜd +; + +227 + `un£t +( +$d–‘iÚs +[ +$oid +]); + +232 ià( + `couÁ +( +$d–‘edRecÜds +) < 1) { + +237 +$·¿ms + = + `¬¿y +(); + +238 +$cÞumnNames + = + `¬¿y +(); + +239 + `fܗch + ( +$id’tif›rM­s + +as + +$idM­ +) { + +240  + `li¡ +( +$f›ldName +, +$v®ue +èð + `—ch +( +$idM­ +)) { + +241 +$·¿ms +[] = +$v®ue +; + +242 +$cÞumnNames +[] = +$bË +-> + `g‘CÞumnName +( +$f›ldName +); + +245 +$cÞumnNames + = + `¬¿y_unique +($columnNames); + +248 +$bËName + = +$bË +-> + `g‘TabËName +(); + +249 +$sql + = "DELETE FROM " . +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$bËName +) . " WHERE "; + +251 ià( +$bË +-> + `isId’tif›rCompos™e +()) { + +252 +$sql + .ð +$this +-> + `_buždSqlCompos™eKeyCÚd™iÚ +( +$cÞumnNames +, + `couÁ +( +$id’tif›rM­s +)); + +253 +$this +-> +cÚn +-> + `exec +( +$sql +, +$·¿ms +); + +255 +$sql + .ð +$this +-> + `_buždSqlSšgËKeyCÚd™iÚ +( +$cÞumnNames +, + `couÁ +( +$·¿ms +)); + +256 +$this +-> +cÚn +-> + `exec +( +$sql +, +$·¿ms +); + +260 + `fܗch + ( +$d–‘edRecÜds + +as + +$»cÜd +) { + +262 +$this +-> + `_d–‘eCTIP¬’ts +( +$bË +, +$»cÜd +); + +264 +$»cÜd +-> + `¡©e +( +Doùrše_RecÜd +:: +STATE_TCLEAN +); + +265 +$»cÜd +-> + `g‘TabË +()-> + `»moveRecÜd +($record); + +266 +$this +-> + `_po¡D–‘e +( +$»cÜd +); + +271 + `fܗch + ( +$d–‘iÚs + +as + +$sk³dRecÜd +) { + +272 +$this +-> + `_po¡D–‘e +( +$sk³dRecÜd +); + +275 +$this +-> +cÚn +-> + `comm™ +(); + +277  +Œue +; + +278 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +279 +$this +-> +cÚn +-> + `rÞlback +(); + +280 +throw + +$e +; + +282 + } +} + +292 +´iv©e + +funùiÚ + + $_buždSqlSšgËKeyCÚd™iÚ +( +$cÞumnNames +, +$numRecÜds +) + +294 +$idCÞumn + = +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$cÞumnNames +[0]); + +295  + `im¶ode +(' OR ', + `¬¿y_fžl +(0, +$numRecÜds +, "$idColumn = ?")); + +296 + } +} + +305 +´iv©e + +funùiÚ + + $_buždSqlCompos™eKeyCÚd™iÚ +( +$cÞumnNames +, +$numRecÜds +) + +307 +$sšgËCÚd™iÚ + = ""; + +308 + `fܗch + ( +$cÞumnNames + +as + +$cÞumnName +) { + +309 +$cÞumnName + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($columnName); + +310 ià( +$sšgËCÚd™iÚ + === "") { + +311 +$sšgËCÚd™iÚ + .= "($columnName = ?"; + +313 +$sšgËCÚd™iÚ + .= " AND $columnName = ?"; + +316 +$sšgËCÚd™iÚ + .= ")"; + +317 +$fuÎCÚd™iÚ + = + `im¶ode +(' OR ', + `¬¿y_fžl +(0, +$numRecÜds +, +$sšgËCÚd™iÚ +)); + +319  +$fuÎCÚd™iÚ +; + +320 + } +} + +334 +´Ùeùed + +funùiÚ + + $_ÿsÿdeD–‘e +( +Doùrše_RecÜd + +$»cÜd +, +¬¿y + & +$d–‘iÚs +) + +336 + `fܗch + ( +$»cÜd +-> + `g‘TabË +()-> + `g‘R–©iÚs +(è +as + +$»ÏtiÚ +) { + +337 ià( +$»ÏtiÚ +-> + `isCasÿdeD–‘e +()) { + +338 +$f›ldName + = +$»ÏtiÚ +-> + `g‘AlŸs +(); + +341 iàÐ! ( +$»ÏtiÚ +-> + `g‘Ty³ +(è=ð +Doùrše_R–©iÚ +:: +ONE + && + `is£t +( +$»cÜd +-> +$f›ldName +))) { + +342 +$»cÜd +-> + `»äeshR–©ed +( +$»ÏtiÚ +-> + `g‘AlŸs +()); + +344 +$»Ï‹dObjeùs + = +$»cÜd +-> + `g‘ +( +$»ÏtiÚ +-> + `g‘AlŸs +()); + +345 ià( +$»Ï‹dObjeùs + +š¡ªûof + +Doùrše_RecÜd + && $»Ï‹dObjeùs-> + `exi¡s +() + +346 && ! + `is£t +( +$d–‘iÚs +[ +$»Ï‹dObjeùs +-> + `g‘Oid +()])) { + +347 +$this +-> + `_cÞËùD–‘iÚs +( +$»Ï‹dObjeùs +, +$d–‘iÚs +); + +348 } ià( +$»Ï‹dObjeùs + +š¡ªûof + +Doùrše_CÞËùiÚ + && + `couÁ +($relatedObjects) > 0) { + +350 + `fܗch + ( +$»Ï‹dObjeùs + +as + +$objeù +) { + +351 iàÐ! + `is£t +( +$d–‘iÚs +[ +$objeù +-> + `g‘Oid +()])) { + +352 +$this +-> + `_cÞËùD–‘iÚs +( +$objeù +, +$d–‘iÚs +); + +358 + } +} + +367 +public + +funùiÚ + + $§veR–©edFÜeignKeys +( +Doùrše_RecÜd + +$»cÜd +) + +369 +$§veL©” + = + `¬¿y +(); + +370 + `fܗch + ( +$»cÜd +-> + `g‘Reã»nûs +(è +as + +$k + => +$v +) { + +371 +$»l + = +$»cÜd +-> + `g‘TabË +()-> + `g‘R–©iÚ +( +$k +); + +372 ià( +$»l + +š¡ªûof + +Doùrše_R–©iÚ_FÜeignKey +) { + +373 +$§veL©” +[ +$k +] = +$»l +; + +377  +$§veL©” +; + +378 + } +} + +387 +public + +funùiÚ + + $§veR–©edLoÿlKeys +( +Doùrše_RecÜd + +$»cÜd +) + +389 +$¡©e + = +$»cÜd +-> + `¡©e +(); + +390 +$»cÜd +-> + `¡©e +($»cÜd-> + `exi¡s +(è? +Doùrše_RecÜd +:: +STATE_LOCKED + : Doùrše_RecÜd:: +STATE_TLOCKED +); + +392 + `fܗch + ( +$»cÜd +-> + `g‘Reã»nûs +(è +as + +$k + => +$v +) { + +393 +$»l + = +$»cÜd +-> + `g‘TabË +()-> + `g‘R–©iÚ +( +$k +); + +395 +$loÿl + = +$»l +-> + `g‘Loÿl +(); + +396 +$fÜeign + = +$»l +-> + `g‘FÜeign +(); + +398 ià( +$»l + +š¡ªûof + +Doùrše_R–©iÚ_LoÿlKey +) { + +400 +$obj + = +$»cÜd +-> + `g‘ +( +$»l +-> + `g‘AlŸs +()); + +403 ià( +$obj + +š¡ªûof + +Doùrše_RecÜd + && $obj-> + `isModif›d +()) { + +404 +$obj +-> + `§ve +( +$this +-> +cÚn +); + +406 +$id + = + `¬¿y_v®ues +( +$obj +-> + `id’tif›r +()); + +408 iàÐ! + `em±y +( +$id +)) { + +409 + `fܗch + (( +¬¿y +è +$»l +-> + `g‘Loÿl +(è +as + +$k + => +$cÞumnName +) { + +410 +$f›ld + = +$»cÜd +-> + `g‘TabË +()-> + `g‘F›ldName +( +$cÞumnName +); + +412 ià( + `is£t +( +$id +[ +$k +]è&& $id[$k] && +$»cÜd +-> + `g‘TabË +()-> + `hasF›ld +( +$f›ld +)) { + +413 +$»cÜd +-> + `£t +( +$f›ld +, +$id +[ +$k +]); + +420 +$»cÜd +-> + `¡©e +( +$¡©e +); + +421 + } +} + +438 +public + +funùiÚ + + $§veAssocŸtiÚs +( +Doùrše_RecÜd + +$»cÜd +) + +440 + `fܗch + ( +$»cÜd +-> + `g‘Reã»nûs +(è +as + +$k + => +$v +) { + +441 +$»l + = +$»cÜd +-> + `g‘TabË +()-> + `g‘R–©iÚ +( +$k +); + +443 ià( +$»l + +š¡ªûof + +Doùrše_R–©iÚ_AssocŸtiÚ +) { + +444 ià( +$this +-> +cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_CASCADE_SAVES +è|| +$v +-> + `isModif›d +()) { + +445 +$v +-> + `§ve +( +$this +-> +cÚn +, +çl£ +); + +448 +$assocTabË + = +$»l +-> + `g‘AssocŸtiÚTabË +(); + +449 + `fܗch + ( +$v +-> + `g‘D–‘eDiff +(è +as + +$r +) { + +450 +$qu”y + = 'DELETE FROM ' . +$assocTabË +-> + `g‘TabËName +() + +451 . ' WHERE ' . +$»l +-> + `g‘FÜeignRefCÞumnName +() . ' = ?' + +452 . ' AND ' . +$»l +-> + `g‘LoÿlRefCÞumnName +() . ' = ?'; + +454 +$this +-> +cÚn +-> + `execu‹ +( +$qu”y +, + `¬¿y +( +$r +-> + `g‘Inüem’‹d +(), +$»cÜd +->getIncremented())); + +457 + `fܗch + ( +$v +-> + `g‘In£¹Diff +(è +as + +$r +) { + +458 +$assocRecÜd + = +$assocTabË +-> + `ü—‹ +(); + +459 +$assocRecÜd +-> + `£t +( +$assocTabË +-> + `g‘F›ldName +( +$»l +-> + `g‘FÜeign +()), +$r +); + +460 +$assocRecÜd +-> + `£t +( +$assocTabË +-> + `g‘F›ldName +( +$»l +-> + `g‘Loÿl +()), +$»cÜd +); + +461 +$this +-> + `§veG¿ph +( +$assocRecÜd +); + +464 +$v +-> + `keSÇpshÙ +(); + +467 + } +} + +474 +´iv©e + +funùiÚ + + $_´eD–‘e +( +Doùrše_RecÜd + +$»cÜd +) + +476 +$ev’t + = +Ãw + + `Doùrše_Ev’t +( +$»cÜd +, +Doùrše_Ev’t +:: +RECORD_DELETE +); + +477 +$»cÜd +-> + `´eD–‘e +( +$ev’t +); + +478 +$»cÜd +-> + `g‘TabË +()-> + `g‘RecÜdLi¡’” +()-> + `´eD–‘e +( +$ev’t +); + +480  +$ev’t +-> +skO³¿tiÚ +; + +481 + } +} + +486 +´iv©e + +funùiÚ + + $_po¡D–‘e +( +Doùrše_RecÜd + +$»cÜd +) + +488 +$ev’t + = +Ãw + + `Doùrše_Ev’t +( +$»cÜd +, +Doùrše_Ev’t +:: +RECORD_DELETE +); + +489 +$»cÜd +-> + `po¡D–‘e +( +$ev’t +); + +490 +$»cÜd +-> + `g‘TabË +()-> + `g‘RecÜdLi¡’” +()-> + `po¡D–‘e +( +$ev’t +); + +491 + } +} + +500 +public + +funùiÚ + + $§veAÎ +() + +503 +$Œ“ + = +$this +-> + `buždFlushT»e +($this-> +cÚn +-> + `g‘TabËs +()); + +506 + `fܗch + ( +$Œ“ + +as + +$Çme +) { + +507 +$bË + = +$this +-> +cÚn +-> + `g‘TabË +( +$Çme +); + +508 + `fܗch + ( +$bË +-> + `g‘R•os™Üy +(è +as + +$»cÜd +) { + +509 +$this +-> + `§veG¿ph +( +$»cÜd +); + +512 + } +} + +520 +public + +funùiÚ + + $upd©e +( +Doùrše_RecÜd + +$»cÜd +) + +522 +$ev’t + = +$»cÜd +-> + `švokeSaveHooks +('pre', 'update');; + +524 ià( +$»cÜd +-> + `isV®id +( +çl£ +, false)) { + +525 +$bË + = +$»cÜd +-> + `g‘TabË +(); + +526 iàÐ! +$ev’t +-> +skO³¿tiÚ +) { + +527 +$id’tif›r + = +$»cÜd +-> + `id’tif›r +(); + +528 ià( +$bË +-> + `g‘O±iÚ +('joinedParents')) { + +530 +$this +-> + `_upd©eCTIRecÜd +( +$bË +, +$»cÜd +); + +533 +$¬¿y + = +$»cÜd +-> + `g‘P»·»d +(); + +534 +$this +-> +cÚn +-> + `upd©e +( +$bË +, +$¬¿y +, +$id’tif›r +); + +536 +$»cÜd +-> + `assignId’tif›r +( +Œue +); + +539 +$»cÜd +-> + `švokeSaveHooks +('po¡', 'upd©e', +$ev’t +); + +541  +Œue +; + +544  +çl£ +; + +545 + } +} + +558 +public + +funùiÚ + + $𣹠+( +Doùrše_RecÜd + +$»cÜd +) + +560 +$ev’t + = +$»cÜd +-> + `švokeSaveHooks +('pre', 'insert'); + +562 ià( +$»cÜd +-> + `isV®id +( +çl£ +, false)) { + +563 +$bË + = +$»cÜd +-> + `g‘TabË +(); + +565 iàÐ! +$ev’t +-> +skO³¿tiÚ +) { + +566 ià( +$bË +-> + `g‘O±iÚ +('joinedParents')) { + +568 +$this +-> + `_š£¹CTIRecÜd +( +$bË +, +$»cÜd +); + +571 +$this +-> + `´oûssSšgËIn£¹ +( +$»cÜd +); + +575 +$bË +-> + `addRecÜd +( +$»cÜd +); + +576 +$»cÜd +-> + `švokeSaveHooks +('po¡', 'š£¹', +$ev’t +); + +578  +Œue +; + +581  +çl£ +; + +582 + } +} + +590 +public + +funùiÚ + + $»¶aû +( +Doùrše_RecÜd + +$»cÜd +) + +592 ià( +$»cÜd +-> + `exi¡s +()) { + +593  +$this +-> + `upd©e +( +$»cÜd +); + +595 ià( +$»cÜd +-> + `isV®id +()) { + +596 +$this +-> + `_assignSequ’û +( +$»cÜd +); + +598 +$§veEv’t + = +$»cÜd +-> + `švokeSaveHooks +('pre', 'save'); + +599 +$š£¹Ev’t + = +$»cÜd +-> + `švokeSaveHooks +('pre', 'insert'); + +601 +$bË + = +$»cÜd +-> + `g‘TabË +(); + +602 +$id’tif›r + = ( +¬¿y +è +$bË +-> + `g‘Id’tif›r +(); + +603 +$d©a + = +$»cÜd +-> + `g‘P»·»d +(); + +605 + `fܗch + ( +$d©a + +as + +$key + => +$v®ue +) { + +606 ià( +$v®ue + +š¡ªûof + +Doùrše_Ex´essiÚ +) { + +607 +$d©a +[ +$key +] = +$v®ue +-> + `g‘Sql +(); + +611 +$»suÉ + = +$this +-> +cÚn +-> + `»¶aû +( +$bË +, +$d©a +, +$id’tif›r +); + +613 +$»cÜd +-> + `švokeSaveHooks +('po¡', 'š£¹', +$š£¹Ev’t +); + +614 +$»cÜd +-> + `švokeSaveHooks +('po¡', '§ve', +$§veEv’t +); + +616 +$this +-> + `_assignId’tif›r +( +$»cÜd +); + +618  +Œue +; + +620  +çl£ +; + +623 + } +} + +634 +public + +funùiÚ + + $´oûssSšgËIn£¹ +( +Doùrše_RecÜd + +$»cÜd +) + +636 +$f›lds + = +$»cÜd +-> + `g‘P»·»d +(); + +637 +$bË + = +$»cÜd +-> + `g‘TabË +(); + +640 ià( + `em±y +( +$f›lds +)) { + +641 + `fܗch + ( +$bË +-> + `g‘F›ldNames +(è +as + +$f›ld +) { + +642 +$f›lds +[ +$f›ld +] = +nuÎ +; + +646 +$this +-> + `_assignSequ’û +( +$»cÜd +, +$f›lds +); + +647 +$this +-> +cÚn +-> + `𣹠+( +$bË +, +$f›lds +); + +648 +$this +-> + `_assignId’tif›r +( +$»cÜd +); + +649 + } +} + +662 +public + +funùiÚ + + $buždFlushT»e +( +¬¿y + +$bËs +) + +666 +$þas£sToOrd” + = + `¬¿y +(); + +667 + `fܗch + ( +$bËs + +as + +$bË +) { + +668 iàÐ! ( +$bË + +š¡ªûof + +Doùrše_TabË +)) { + +669 +$bË + = +$this +-> +cÚn +-> + `g‘TabË +($bË, +çl£ +); + +671 +$þas£sToOrd” +[] = +$bË +-> + `g‘CompڒtName +(); + +673 +$þas£sToOrd” + = + `¬¿y_unique +($classesToOrder); + +675 ià( + `couÁ +( +$þas£sToOrd” +) < 2) { + +676  +$þas£sToOrd” +; + +680 +$æushLi¡ + = + `¬¿y +(); + +681 + `fܗch + ( +$þas£sToOrd” + +as + +$þass +) { + +682 +$bË + = +$this +-> +cÚn +-> + `g‘TabË +( +$þass +, +çl£ +); + +683 +$cu¼’tCÏss + = +$bË +-> + `g‘CompڒtName +(); + +685 +$šdex + = + `¬¿y_£¬ch +( +$cu¼’tCÏss +, +$æushLi¡ +); + +687 ià( +$šdex + ==ð +çl£ +) { + +689 +$æushLi¡ +[] = +$cu¼’tCÏss +; + +690 +$šdex + = + `max +( + `¬¿y_keys +( +$æushLi¡ +)); + +693 +$»ls + = +$bË +-> + `g‘R–©iÚs +(); + +696 + `fܗch + ( +$»ls + +as + +$key + => +$»l +) { + +697 ià( +$»l + +š¡ªûof + +Doùrše_R–©iÚ_FÜeignKey +) { + +698 + `un£t +( +$»ls +[ +$key +]); + +699 + `¬¿y_unshiá +( +$»ls +, +$»l +); + +703 + `fܗch + ( +$»ls + +as + +$»l +) { + +704 +$»Ï‹dCÏssName + = +$»l +-> + `g‘TabË +()-> + `g‘CompڒtName +(); + +706 iàÐ! + `š_¬¿y +( +$»Ï‹dCÏssName +, +$þas£sToOrd” +)) { + +710 +$»Ï‹dCompIndex + = + `¬¿y_£¬ch +( +$»Ï‹dCÏssName +, +$æushLi¡ +); + +711 +$ty³ + = +$»l +-> + `g‘Ty³ +(); + +714 ià( +$»Ï‹dCÏssName + ==ð +$cu¼’tCÏss +) { + +718 ià( +$»l + +š¡ªûof + +Doùrše_R–©iÚ_FÜeignKey +) { + +722 ià( +$»Ï‹dCompIndex + !=ð +çl£ +) { + +724 ià( +$»Ï‹dCompIndex + >ð +$šdex +) { + +729 + `un£t +( +$æushLi¡ +[ +$šdex +]); + +732 + `¬¿y_¥liû +( +$æushLi¡ +, +$»Ï‹dCompIndex +, 0, +$cu¼’tCÏss +); + +733 +$šdex + = +$»Ï‹dCompIndex +; + +735 +$æushLi¡ +[] = +$»Ï‹dCÏssName +; + +738 } ià( +$»l + +š¡ªûof + +Doùrše_R–©iÚ_LoÿlKey +) { + +742 ià( +$»Ï‹dCompIndex + !=ð +çl£ +) { + +744 ià( +$»Ï‹dCompIndex + <ð +$šdex +) { + +749 + `un£t +( +$æushLi¡ +[ +$»Ï‹dCompIndex +]); + +752 + `¬¿y_¥liû +( +$æushLi¡ +, +$šdex +, 0, +$»Ï‹dCÏssName +); + +754 + `¬¿y_unshiá +( +$æushLi¡ +, +$»Ï‹dCÏssName +); + +755 +$šdex +++; + +757 } ià( +$»l + +š¡ªûof + +Doùrše_R–©iÚ_AssocŸtiÚ +) { + +762 +$assocTabË + = +$»l +-> + `g‘AssocŸtiÚFaùÜy +(); + +763 +$assocCÏssName + = +$assocTabË +-> + `g‘CompڒtName +(); + +765 ià( +$»Ï‹dCompIndex + !=ð +çl£ +) { + +766 + `un£t +( +$æushLi¡ +[ +$»Ï‹dCompIndex +]); + +769 + `¬¿y_¥liû +( +$æushLi¡ +, +$šdex +, 0, +$»Ï‹dCÏssName +); + +770 +$šdex +++; + +772 +$šdex3 + = + `¬¿y_£¬ch +( +$assocCÏssName +, +$æushLi¡ +); + +774 ià( +$šdex3 + !=ð +çl£ +) { + +775 ià( +$šdex3 + >ð +$šdex +) { + +779 + `un£t +( +$æushLi¡ +[ +$šdex3 +]); + +780 + `¬¿y_¥liû +( +$æushLi¡ +, +$šdex + - 1, 0, +$assocCÏssName +); + +781 +$šdex + = +$»Ï‹dCompIndex +; + +783 +$æushLi¡ +[] = +$assocCÏssName +; + +789  + `¬¿y_v®ues +( +$æushLi¡ +); + +790 + } +} + +802 +´iv©e + +funùiÚ + + $_d–‘eCTIP¬’ts +( +Doùrše_TabË + +$bË +, +$»cÜd +) + +804 ià( +$bË +-> + `g‘O±iÚ +('joinedParents')) { + +805 + `fܗch + ( + `¬¿y_»v”£ +( +$bË +-> + `g‘O±iÚ +('jošedP¬’ts')è +as + +$·»Á +) { + +806 +$·»ÁTabË + = +$bË +-> + `g‘CÚÃùiÚ +()-> + `g‘TabË +( +$·»Á +); + +807 +$this +-> +cÚn +-> + `d–‘e +( +$·»ÁTabË +, +$»cÜd +-> + `id’tif›r +()); + +810 + } +} + +816 +´iv©e + +funùiÚ + + $_š£¹CTIRecÜd +( +Doùrše_TabË + +$bË +, +Doùrše_RecÜd + +$»cÜd +) + +818 +$d©aS‘ + = +$this +-> + `_fÜm©D©aS‘ +( +$»cÜd +); + +819 +$compڒt + = +$bË +-> + `g‘CompڒtName +(); + +821 +$þas£s + = +$bË +-> + `g‘O±iÚ +('joinedParents'); + +822 +$þas£s +[] = +$compڒt +; + +824 + `fܗch + ( +$þas£s + +as + +$k + => +$·»Á +) { + +825 ià( +$k + === 0) { + +826 +$roÙRecÜd + = +Ãw + + `$·»Á +(); + +827 +$roÙRecÜd +-> + `m”ge +( +$d©aS‘ +[ +$·»Á +]); + +828 +$this +-> + `´oûssSšgËIn£¹ +( +$roÙRecÜd +); + +829 +$»cÜd +-> + `assignId’tif›r +( +$roÙRecÜd +-> + `id’tif›r +()); + +831 + `fܗch + (( +¬¿y +è +$roÙRecÜd +-> + `id’tif›r +(è +as + +$id + => +$v®ue +) { + +832 +$d©aS‘ +[ +$·»Á +][ +$id +] = +$v®ue +; + +835 +$this +-> +cÚn +-> + `𣹠+($this->cÚn-> + `g‘TabË +( +$·»Á +), +$d©aS‘ +[$parent]); + +838 + } +} + +844 +´iv©e + +funùiÚ + + $_upd©eCTIRecÜd +( +Doùrše_TabË + +$bË +, +Doùrše_RecÜd + +$»cÜd +) + +846 +$id’tif›r + = +$»cÜd +-> + `id’tif›r +(); + +847 +$d©aS‘ + = +$this +-> + `_fÜm©D©aS‘ +( +$»cÜd +); + +849 +$compڒt + = +$bË +-> + `g‘CompڒtName +(); + +851 +$þas£s + = +$bË +-> + `g‘O±iÚ +('joinedParents'); + +852 +$þas£s +[] = +$compڒt +; + +854 + `fܗch + ( +$»cÜd + +as + +$f›ld + => +$v®ue +) { + +855 ià( +$v®ue + +š¡ªûof + +Doùrše_RecÜd +) { + +856 iàÐ! +$v®ue +-> + `exi¡s +()) { + +857 +$v®ue +-> + `§ve +(); + +859 +$»cÜd +-> + `£t +( +$f›ld +, +$v®ue +-> + `g‘Inüem’‹d +()); + +863 + `fܗch + ( +$þas£s + +as + +$þass +) { + +864 +$·»ÁTabË + = +$this +-> +cÚn +-> + `g‘TabË +( +$þass +); + +866 iàÐ! + `¬¿y_key_exi¡s +( +$þass +, +$d©aS‘ +)) { + +870 +$this +-> +cÚn +-> + `upd©e +($this->cÚn-> + `g‘TabË +( +$þass +), +$d©aS‘ +[$þass], +$id’tif›r +); + +872 + } +} + +878 +´iv©e + +funùiÚ + + $_fÜm©D©aS‘ +( +Doùrše_RecÜd + +$»cÜd +) + +880 +$bË + = +$»cÜd +-> + `g‘TabË +(); + +881 +$d©aS‘ + = + `¬¿y +(); + +882 +$compڒt + = +$bË +-> + `g‘CompڒtName +(); + +883 +$¬¿y + = +$»cÜd +-> + `g‘P»·»d +(); + +885 + `fܗch + ( +$bË +-> + `g‘CÞumns +(è +as + +$cÞumnName + => +$defš™iÚ +) { + +886 iàÐ! + `is£t +( +$d©aS‘ +[ +$compڒt +])) { + +887 +$d©aS‘ +[ +$compڒt +] = + `¬¿y +(); + +890 iàÐ + `is£t +( +$defš™iÚ +['owÃr']è&& ! is£t( +$d©aS‘ +[$definition['owner']])) { + +891 +$d©aS‘ +[ +$defš™iÚ +['owÃr']] = + `¬¿y +(); + +894 +$f›ldName + = +$bË +-> + `g‘F›ldName +( +$cÞumnName +); + +895 ià( + `is£t +( +$defš™iÚ +['primary']) && $definition['primary']) { + +899 iàÐ! + `¬¿y_key_exi¡s +( +$f›ldName +, +$¬¿y +)) { + +903 ià( + `is£t +( +$defš™iÚ +['owner'])) { + +904 +$d©aS‘ +[ +$defš™iÚ +['owÃr']][ +$f›ldName +] = +$¬¿y +[$fieldName]; + +906 +$d©aS‘ +[ +$compڒt +][ +$f›ldName +] = +$¬¿y +[$fieldName]; + +910  +$d©aS‘ +; + +911 + } +} + +913 +´Ùeùed + +funùiÚ + + $_assignSequ’û +( +Doùrše_RecÜd + +$»cÜd +, & +$f›lds + = +nuÎ +) + +915 +$bË + = +$»cÜd +-> + `g‘TabË +(); + +916 +$£q + = +$bË +-> +£qu’ûName +; + +918 iàÐ! + `em±y +( +$£q +)) { + +919 +$id + = +$this +-> +cÚn +-> +£qu’û +-> + `ÃxtId +( +$£q +); + +920 +$£qName + = +$bË +-> + `g‘Id’tif›r +(); + +921 ià( +$f›lds +) { + +922 +$f›lds +[ +$£qName +] = +$id +; + +925 +$»cÜd +-> + `assignId’tif›r +( +$id +); + +927  +$id +; + +929 + } +} + +931 +´Ùeùed + +funùiÚ + + $_assignId’tif›r +( +Doùrše_RecÜd + +$»cÜd +) + +933 +$bË + = +$»cÜd +-> + `g‘TabË +(); + +934 +$id’tif›r + = +$bË +-> + `g‘Id’tif›r +(); + +935 +$£q + = +$bË +-> +£qu’ûName +; + +937 ià( + `em±y +( +$£q +è&& ! + `is_¬¿y +( +$id’tif›r +) && + +938 +$bË +-> + `g‘Id’tif›rTy³ +(è!ð +Doùrše_CÜe +:: +IDENTIFIER_NATURAL +) { + +939 +$id + = +çl£ +; + +940 ià( +$»cÜd +-> +$id’tif›r + =ð +nuÎ +) { + +941 ià(( +$driv” + = + `¡¹Þow” +( +$this +-> +cÚn +-> + `g‘Driv”Name +())) == 'pgsql') { + +942 +$£q + = +$bË +-> + `g‘TabËName +(è. '_' . $bË-> + `g‘CÞumnName +( +$id’tif›r +); + +943 } + `–£if + ( +$driv” + == 'oracle' || $driver == 'mssql') { + +944 +$£q + = +$bË +-> + `g‘TabËName +(); + +947 +$id + = +$this +-> +cÚn +-> +£qu’û +-> + `Ï¡In£¹Id +( +$£q +); + +949 +$id + = +$»cÜd +-> +$id’tif›r +; + +952 iàÐ! +$id +) { + +953 +throw + +Ãw + + `Doùrše_CÚÃùiÚ_Exû±iÚ +("Couldn't get†ast insert identifier."); + +955 +$»cÜd +-> + `assignId’tif›r +( +$id +); + +957 +$»cÜd +-> + `assignId’tif›r +( +Œue +); + +959 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Core.php + +1 + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_MODEL_LOADING +) : $modelLoading; + +636 +$þassP»fix + = $þassP»fix ==ð +nuÎ + ? +$mªag” +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_MODEL_CLASS_PREFIX +) : $classPrefix; + +638 +$lßdedMod–s + = + `¬¿y +(); + +640 ià( +$dœeùÜy + !=ð +nuÎ +) { + +641 + `fܗch + (( +¬¿y +è +$dœeùÜy + +as + +$dœ +) { + +642 +$dœ + = + `¹rim +($dir, '/'); + +643 iàÐ! + `is_dœ +( +$dœ +)) { + +644 +throw + +Ãw + + `Doùrše_Exû±iÚ +('You must…ass‡ valid…atho‡ directory containing Doctrine models'); + +647 +$™ + = +Ãw + + `RecursiveI‹¿tÜI‹¿tÜ +Òew + `RecursiveDœeùÜyI‹¿tÜ +( +$dœ +), + +648 +RecursiveI‹¿tÜI‹¿tÜ +:: +LEAVES_ONLY +); + +650 + `fܗch + ( +$™ + +as + +$fže +) { + +651 +$e + = + `ex¶ode +('.', +$fže +-> + `g‘FžeName +()); + +653 ià( + `’d +( +$e +è==ð'php' && + `¡½os +( +$fže +-> + `g‘FžeName +(), '.šc'è==ð +çl£ +) { + +654 ià( +$mod–Lßdšg + =ð +Doùrše_CÜe +:: +MODEL_LOADING_PEAR +) { + +655 +$þassName + = + `¡r_»¶aû +( +$dœ + . +DIRECTORY_SEPARATOR +, +nuÎ +, +$fže +-> + `g‘P©hName +()); + +656 +$þassName + = + `¡r_»¶aû +( +DIRECTORY_SEPARATOR +, '_', $className); + +657 +$þassName + = + `sub¡r +($þassName, 0, + `¡½os +($className, '.')); + +659 +$þassName + = +$e +[0]; + +662 ià( +$þassP»fix + && $þassP»fix !ð + `sub¡r +( +$þassName +, 0, + `¡¾’ +($classPrefix))) { + +663 +$þassName + = +$þassP»fix + . $className; + +666 iàÐ! + `þass_exi¡s +( +$þassName +, +çl£ +)) { + +667 ià( +$mod–Lßdšg + =ð +Doùrše_CÜe +:: +MODEL_LOADING_CONSERVATIVE + || $mod–Lßdšg =ðDoùrše_CÜe:: +MODEL_LOADING_PEAR +) { + +668 +£lf +:: + `lßdMod– +( +$þassName +, +$fže +-> + `g‘P©hName +()); + +670 +$lßdedMod–s +[ +$þassName +] = $className; + +672 +$deþ¬edBefÜe + = + `g‘_deþ¬ed_þas£s +(); + +673 + `»quœe_Úû +( +$fže +-> + `g‘P©hName +()); + +674 +$deþ¬edAᔠ+ = + `g‘_deþ¬ed_þas£s +(); + +677 +$foundCÏs£s + = + `¬¿y_¦iû +( +$deþ¬edAᔠ+, + `couÁ +( +$deþ¬edBefÜe +)); + +679 ià( +$foundCÏs£s +) { + +680 + `fܗch + ( +$foundCÏs£s + +as + +$þassName +) { + +681 ià( +£lf +:: + `isV®idMod–CÏss +( +$þassName +)) { + +682 +$lßdedMod–s +[ +$þassName +] = $className; + +684 +£lf +:: + `lßdMod– +( +$þassName +, +$fže +-> + `g‘P©hName +()); + +689 +$´eviou¦yLßded + = + `¬¿y_keys +( +£lf +:: +$_lßdedMod–Fžes +, +$fže +-> + `g‘P©hName +()); + +691 iàÐ! + `em±y +( +$´eviou¦yLßded +)) { + +692 +$´eviou¦yLßded + = + `¬¿y_combše +( + `¬¿y_v®ues +($previouslyLoaded),‡rray_values($previouslyLoaded)); + +693 +$lßdedMod–s + = + `¬¿y_m”ge +($lßdedMod–s, +$´eviou¦yLßded +); + +696 } ià( +£lf +:: + `isV®idMod–CÏss +( +$þassName +)) { + +697 +$lßdedMod–s +[ +$þassName +] = $className; + +704 + `asÜt +( +$lßdedMod–s +); + +706  +$lßdedMod–s +; + +707 + } +} + +718 +public +  +funùiÚ + + $g‘LßdedMod–s +( +$þas£s + = +nuÎ +) + +720 ià( +$þas£s + ==ð +nuÎ +) { + +721 +$þas£s + = + `g‘_deþ¬ed_þas£s +(); + +722 +$þas£s + = + `¬¿y_m”ge +($þas£s, + `¬¿y_keys +( +£lf +:: +$_lßdedMod–Fžes +)); + +725  +£lf +:: + `fž‹rInv®idMod–s +( +$þas£s +); + +726 + } +} + +737 +public +  +funùiÚ + + $š™ŸlizeMod–s +( +$mod–s +) + +739 +$mod–s + = +£lf +:: + `fž‹rInv®idMod–s +($models); + +741 + `fܗch + ( +$mod–s + +as + +$mod– +) { + +742 +$deþ¬edBefÜe + = + `g‘_deþ¬ed_þas£s +(); + +743 +Doùrše_CÜe +:: + `g‘TabË +( +$mod– +); + +745 +$deþ¬edAᔠ+ = + `g‘_deþ¬ed_þas£s +(); + +747 +$foundCÏs£s + = + `¬¿y_¦iû +( +$deþ¬edAᔠ+, + `couÁ +( +$deþ¬edBefÜe +) - 1); + +748 + `fܗch + ( +$foundCÏs£s + +as + +$þass +) { + +749 ià( +£lf +:: + `isV®idMod–CÏss +( +$þass +)) { + +750 +$mod–s +[] = +$þass +; + +755 +$mod–s + = +£lf +:: + `fž‹rInv®idMod–s +($models); + +757  +$mod–s +; + +758 + } +} + +767 +public +  +funùiÚ + + $fž‹rInv®idMod–s +( +$þas£s +) + +769 +$v®idMod–s + = + `¬¿y +(); + +771 + `fܗch + (( +¬¿y +è +$þas£s + +as + +$Çme +) { + +772 ià( +£lf +:: + `isV®idMod–CÏss +( +$Çme +è&& ! + `š_¬¿y +($Çme, +$v®idMod–s +)) { + +773 +$v®idMod–s +[] = +$Çme +; + +777  +$v®idMod–s +; + +778 + } +} + +787 +public +  +funùiÚ + + $isV®idMod–CÏss +( +$þass +) + +789 ià( +$þass + +š¡ªûof + +Doùrše_RecÜd +) { + +790 +$þass + = + `g‘_þass +($class); + +793 ià( + `is_¡ršg +( +$þass +è&& + `þass_exi¡s +($class)) { + +794 +$þass + = +Ãw + + `ReæeùiÚCÏss +($class); + +797 ià( +$þass + +š¡ªûof + +ReæeùiÚCÏss +) { + +801 iàÐ! +$þass +-> + `isAb¡¿ù +(è&& $þass-> + `isSubCÏssOf +('Doctrine_Record')) { + +803  +Œue +; + +807  +çl£ +; + +808 + } +} + +817 +public +  +funùiÚ + + $g‘CÚÃùiÚByTabËName +( +$bËName +) + +819 +$lßdedMod–s + = +£lf +:: + `g‘LßdedMod–s +(); + +821 + `fܗch + ( +$lßdedMod–s + +as + +$Çme +) { + +822 +$bË + = +Doùrše_CÜe +:: + `g‘TabË +( +$Çme +); + +824 ià( +$bË +-> + `g‘TabËName +(è=ð +$bËName +) { + +825  +$bË +-> + `g‘CÚÃùiÚ +(); + +829  +Doùrše_Mªag” +:: + `cÚÃùiÚ +(); + +830 + } +} + +841 +public +  +funùiÚ + +g’”©eMod–sFromDb +( +$dœeùÜy +, +¬¿y + +$cÚÃùiÚs + =‡¼ay(),‡¼ay +$ÝtiÚs + = + $¬¿y +()) + +843  +Doùrše_Mªag” +:: + `cÚÃùiÚ +()-> +impÜt +-> + `impÜtSchema +( +$dœeùÜy +, +$cÚÃùiÚs +, +$ÝtiÚs +); + +844 + } +} + +855 +public +  +funùiÚ + +g’”©eYamlFromDb +( +$yamlP©h +, +¬¿y + +$cÚÃùiÚs + =‡¼ay(),‡¼ay +$ÝtiÚs + = + $¬¿y +()) + +857 +$dœeùÜy + = + `sys_g‘_‹mp_dœ +(è. +DIRECTORY_SEPARATOR + . 'tmp_doctrine_models'; + +859 +$ÝtiÚs +['g’”©eBa£CÏs£s'] = + `is£t +($ÝtiÚs['g’”©eBa£CÏs£s']è? $ÝtiÚs['g’”©eBa£CÏs£s']: +çl£ +; + +860 +$»suÉ + = +Doùrše_CÜe +:: + `g’”©eMod–sFromDb +( +$dœeùÜy +, +$cÚÃùiÚs +, +$ÝtiÚs +); + +862 iàÐ + `em±y +( +$»suÉ +è&& ! + `is_dœ +( +$dœeùÜy +)) { + +863 +throw + +Ãw + + `Doùrše_Exû±iÚ +('No models generated from your databases'); + +866 +$expÜt + = +Ãw + + `Doùrše_ExpÜt_Schema +(); + +868 +$»suÉ + = +$expÜt +-> + `expÜtSchema +( +$yamlP©h +, 'yml', +$dœeùÜy +, + `¬¿y +(), +Doùrše_CÜe +:: +MODEL_LOADING_AGGRESSIVE +); + +870 +Doùrše_Lib +:: + `»moveDœeùܛs +( +$dœeùÜy +); + +872  +$»suÉ +; + +873 + } +} + +883 +public +  +funùiÚ + +g’”©eMod–sFromYaml +( +$yamlP©h +, +$dœeùÜy +, +$ÝtiÚs + = + $¬¿y +()) + +885 +$impÜt + = +Ãw + + `Doùrše_ImpÜt_Schema +(); + +886 +$impÜt +-> + `£tO±iÚs +( +$ÝtiÚs +); + +888  +$impÜt +-> + `impÜtSchema +( +$yamlP©h +, 'yml', +$dœeùÜy +); + +889 + } +} + +897 +public +  +funùiÚ + + $ü—‹TabËsFromMod–s +( +$dœeùÜy + = +nuÎ +) + +899  +Doùrše_Mªag” +:: + `cÚÃùiÚ +()-> +expÜt +-> + `expÜtSchema +( +$dœeùÜy +); + +900 + } +} + +908 +public +  +funùiÚ + + $ü—‹TabËsFromA¼ay +( +$¬¿y +) + +910  +Doùrše_Mªag” +:: + `cÚÃùiÚ +()-> +expÜt +-> + `expÜtCÏs£s +( +$¬¿y +); + +911 + } +} + +919 +public +  +funùiÚ + + $g’”©eSqlFromA¼ay +( +$¬¿y +) + +921  +Doùrše_Mªag” +:: + `cÚÃùiÚ +()-> +expÜt +-> + `expÜtCÏs£sSql +( +$¬¿y +); + +922 + } +} + +931 +public +  +funùiÚ + + $g’”©eSqlFromMod–s +( +$dœeùÜy + = +nuÎ +) + +933 +$cÚn + = +Doùrše_Mªag” +:: + `cÚÃùiÚ +(); + +934 +$sql + = +$cÚn +-> +expÜt +-> + `expÜtSql +( +$dœeùÜy +); + +936 +$bužd + = ''; + +937 + `fܗch + ( +$sql + +as + +$qu”y +) { + +938 +$bužd + .ð +$qu”y +. +$cÚn +-> +sql_fže_d–im™” +; + +941  +$bužd +; + +942 + } +} + +951 +public +  +funùiÚ + + $g’”©eYamlFromMod–s +( +$yamlP©h +, +$dœeùÜy +) + +953 +$expÜt + = +Ãw + + `Doùrše_ExpÜt_Schema +(); + +955  +$expÜt +-> + `expÜtSchema +( +$yamlP©h +, 'yml', +$dœeùÜy +); + +956 + } +} + +964 +public +  +funùiÚ + +ü—‹D©aba£s +( +$¥ecif›dCÚÃùiÚs + = + $¬¿y +()) + +966  +Doùrše_Mªag” +:: + `g‘In¡ªû +()-> + `ü—‹D©aba£s +( +$¥ecif›dCÚÃùiÚs +); + +967 + } +} + +975 +public +  +funùiÚ + +drÝD©aba£s +( +$¥ecif›dCÚÃùiÚs + = + $¬¿y +()) + +977  +Doùrše_Mªag” +:: + `g‘In¡ªû +()-> + `drÝD©aba£s +( +$¥ecif›dCÚÃùiÚs +); + +978 + } +} + +987 +public +  +funùiÚ + + $dumpD©a +( +$yamlP©h +, +$šdividu®Fžes + = +çl£ +) + +989 +$d©a + = +Ãw + + `Doùrše_D©a +(); + +991  +$d©a +-> + `expÜtD©a +( +$yamlP©h +, 'yml', + `¬¿y +(), +$šdividu®Fžes +); + +992 + } +} + +1002 +public +  +funùiÚ + + $lßdD©a +( +$yamlP©h +, +$­³nd + = +çl£ +) + +1004 +$d©a + = +Ãw + + `Doùrše_D©a +(); + +1006  +$d©a +-> + `impÜtD©a +( +$yamlP©h +, 'yml', + `¬¿y +(), +$­³nd +); + +1007 + } +} + +1017 +public +  +funùiÚ + + $mig¿‹ +( +$mig¿tiÚsP©h +, +$to + = +nuÎ +) + +1019 +$mig¿tiÚ + = +Ãw + + `Doùrše_Mig¿tiÚ +( +$mig¿tiÚsP©h +); + +1021  +$mig¿tiÚ +-> + `mig¿‹ +( +$to +); + +1022 + } +} + +1030 +public +  +funùiÚ + + $g’”©eMig¿tiÚCÏss +( +$þassName +, +$mig¿tiÚsP©h +) + +1032 +$bužd” + = +Ãw + + `Doùrše_Mig¿tiÚ_Bužd” +( +$mig¿tiÚsP©h +); + +1034  +$bužd” +-> + `g’”©eMig¿tiÚCÏss +( +$þassName +); + +1035 + } +} + +1044 +public +  +funùiÚ + + $g’”©eMig¿tiÚsFromDb +( +$mig¿tiÚsP©h +) + +1046 +$bužd” + = +Ãw + + `Doùrše_Mig¿tiÚ_Bužd” +( +$mig¿tiÚsP©h +); + +1048  +$bužd” +-> + `g’”©eMig¿tiÚsFromDb +(); + +1049 + } +} + +1059 +public +  +funùiÚ + + $g’”©eMig¿tiÚsFromMod–s +( +$mig¿tiÚsP©h +, +$mod–sP©h + = +nuÎ +, +$mod–Lßdšg + =‚ull) + +1061 +$bužd” + = +Ãw + + `Doùrše_Mig¿tiÚ_Bužd” +( +$mig¿tiÚsP©h +); + +1063  +$bužd” +-> + `g’”©eMig¿tiÚsFromMod–s +( +$mod–sP©h +, +$mod–Lßdšg +); + +1064 + } +} + +1075 +public +  +funùiÚ + + $g’”©eMig¿tiÚsFromDiff +( +$mig¿tiÚsP©h +, +$äom +, +$to +) + +1077 +$diff + = +Ãw + + `Doùrše_Mig¿tiÚ_Diff +( +$äom +, +$to +, +$mig¿tiÚsP©h +); + +1079  +$diff +-> + `g’”©eMig¿tiÚCÏs£s +(); + +1080 + } +} + +1088 +public +  +funùiÚ + + $g‘TabË +( +$compڒtName +) + +1090  +Doùrše_Mªag” +:: + `g‘In¡ªû +()-> + `g‘CÚÃùiÚFÜCompڒt +( +$compڒtName +)-> + `g‘TabË +($componentName); + +1091 + } +} + +1103 +public +  +funùiÚ + +compže +( +$rg‘ + = +nuÎ +, +$šþudedDriv”s + = + $¬¿y +()) + +1105  +Doùrše_Compž” +:: + `compže +( +$rg‘ +, +$šþudedDriv”s +); + +1106 + } +} + +1115 +public +  +funùiÚ + + $autÞßd +( +$þassName +) + +1117 ià( + `¡½os +( +$þassName +, 'sfYaml') === 0) { + +1118 +»quœe + + `dœÇme +( +__FILE__ +è. '/P¬£r/sfYaml/' . +$þassName + . '.php'; + +1120  +Œue +; + +1123 ià(0 !=ð + `¡ros +( +$þassName +, 'Doùrše'è|| + `þass_exi¡s +($þassName, +çl£ +è|| + `š‹rçû_exi¡s +($className, false)) { + +1124  +çl£ +; + +1127 +$þass + = +£lf +:: + `g‘P©h +(è. +DIRECTORY_SEPARATOR + . + `¡r_»¶aû +('_', DIRECTORY_SEPARATOR, +$þassName +) . '.php'; + +1129 ià( + `fže_exi¡s +( +$þass +)) { + +1130 +»quœe + +$þass +; + +1132  +Œue +; + +1135  +çl£ +; + +1136 + } +} + +1138 +public +  +funùiÚ + + $mod–sAutÞßd +( +$þassName +) + +1140 ià( + `þass_exi¡s +( +$þassName +, +çl£ +è|| + `š‹rçû_exi¡s +($className, false)) { + +1141  +çl£ +; + +1144 iàÐ! +£lf +:: +$_mod–sDœeùÜy +) { + +1145 +$lßdedMod–s + = +£lf +:: +$_lßdedMod–Fžes +; + +1147 ià( + `is£t +( +$lßdedMod–s +[ +$þassName +]è&& + `fže_exi¡s +($loadedModels[$className])) { + +1148 +»quœe + +$lßdedMod–s +[ +$þassName +]; + +1150  +Œue +; + +1153 +$þass + = +£lf +:: +$_mod–sDœeùÜy + . +DIRECTORY_SEPARATOR + . + `¡r_»¶aû +('_', DIRECTORY_SEPARATOR, +$þassName +) . '.php'; + +1155 ià( + `fže_exi¡s +( +$þass +)) { + +1156 +»quœe + +$þass +; + +1158  +Œue +; + +1162  +çl£ +; + +1163 + } +} + +1171 +public +  +funùiÚ + + $ex‹nsiÚsAutÞßd +( +$þassName +) + +1173 ià( + `þass_exi¡s +( +$þassName +, +çl£ +è|| + `š‹rçû_exi¡s +($className, false)) { + +1174  +çl£ +; + +1177 +$ex‹nsiÚs + = +Doùrše_Mªag” +:: + `g‘In¡ªû +() + +1178 -> + `g‘Ex‹nsiÚs +(); + +1180 + `fܗch + ( +$ex‹nsiÚs + +as + +$Çme + => +$·th +) { + +1181 +$þass + = +$·th + . +DIRECTORY_SEPARATOR + . + `¡r_»¶aû +('_', DIRECTORY_SEPARATOR, +$þassName +) . '.php'; + +1183 ià( + `fže_exi¡s +( +$þass +)) { + +1184 +»quœe + +$þass +; + +1186  +Œue +; + +1190  +çl£ +; + +1191 + } +} + +1201 +public +  +funùiÚ + +dump +( +$v¬ +, +$ouut + = +Œue +, +$šd’t + = "") + +1203 +$»t + = +¬¿y +(); + +1204  +g‘ty³ +( +$v¬ +)) { + +1206 +$»t +[] = 'Array('; + +1207 + g$šd’t + .= " "; + +1208 +fܗch + ( +$v¬ + +as + +$k + => +$v +) { + +1210 +$»t +[] = +$šd’t + . +$k + . ' : ' . +£lf +:: +dump +( +$v +, +çl£ +, $indent); + +1212 + g$šd’t + = +sub¡r +( +$šd’t +,0, -4); + +1213 + g$»t +[] = +$šd’t + . ")"; + +1216 +$»t +[] = 'Objeù(' . +g‘_þass +( +$v¬ +) . ')'; + +1219 +$»t +[] = +v¬_expÜt +( +$v¬ +, +Œue +); + +1222 ià( + g$ouut +) { + +1223 +´št + +im¶ode +("\n", +$»t +); + +1226  +im¶ode +("\n", +$»t +); + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Data.php + +1 +_fÜm© + = +$fÜm© +; + +103 +public + +funùiÚ + + $g‘FÜm© +() + +105  +$this +-> +_fÜm© +; + +106 + } +} + +115 +public + +funùiÚ + + $g‘FÜm©s +() + +117  +$this +-> +_fÜm©s +; + +118 + } +} + +127 +public + +funùiÚ + + $£tDœeùÜy +( +$dœeùÜy +) + +129 +$this +-> +_dœeùÜy + = +$dœeùÜy +; + +130 + } +} + +139 +public + +funùiÚ + + $g‘DœeùÜy +() + +141  +$this +-> +_dœeùÜy +; + +142 + } +} + +152 +public + +funùiÚ + + $£tMod–s +( +$mod–s +) + +154 +$this +-> +_mod–s + = +$mod–s +; + +155 + } +} + +164 +public + +funùiÚ + + $g‘Mod–s +() + +166  +$this +-> +_mod–s +; + +167 + } +} + +176 +public + +funùiÚ + + $expÜtIndividu®Fžes +( +$boÞ + = +nuÎ +) + +178 ià( +$boÞ + !=ð +nuÎ +) { + +179 +$this +-> +_expÜtIndividu®Fžes + = +$boÞ +; + +182  +$this +-> +_expÜtIndividu®Fžes +; + +183 + } +} + +196 +public + +funùiÚ + +expÜtD©a +( +$dœeùÜy +, +$fÜm© + = 'yml', +$mod–s + = +¬¿y +(), +$_expÜtIndividu®Fžes + = +çl£ +) + +198 +$expÜt + = +Ãw + +Doùrše_D©a_ExpÜt +( +$dœeùÜy +); + +199 + g$expÜt +-> +£tFÜm© +( +$fÜm© +); + +200 + g$expÜt +-> +£tMod–s +( +$mod–s +); + +201 + g$expÜt +-> +expÜtIndividu®Fžes +( +$_expÜtIndividu®Fžes +); + +203  + g$expÜt +-> +doExpÜt +(); + +216 +public + +funùiÚ + +impÜtD©a +( +$dœeùÜy +, +$fÜm© + = 'yml', +$mod–s + = +¬¿y +(), +$­³nd + = +çl£ +) + +218 +$impÜt + = +Ãw + +Doùrše_D©a_ImpÜt +( +$dœeùÜy +); + +219 + g$impÜt +-> +£tFÜm© +( +$fÜm© +); + +220 + g$impÜt +-> +£tMod–s +( +$mod–s +); + +222  + g$impÜt +-> +doImpÜt +( +$­³nd +); + +234 +public + +funùiÚ + + $isR–©iÚ +( +Doùrše_RecÜd + +$»cÜd +, +$f›ldName +) + +236 +$»ÏtiÚs + = +$»cÜd +-> + `g‘TabË +()-> + `g‘R–©iÚs +(); + +238 + `fܗch + ( +$»ÏtiÚs + +as + +$»ÏtiÚ +) { + +239 +$»ÏtiÚD©a + = +$»ÏtiÚ +-> + `toA¼ay +(); + +241 ià( +$»ÏtiÚD©a +['loÿl'] ==ð +$f›ldName +) { + +242  +$»ÏtiÚD©a +; + +247  +çl£ +; + +248 + } +} + +258 +public + +funùiÚ + + $purge +( +$mod–s + = +nuÎ +) + +260 ià( +$mod–s +) { + +261 +$mod–s + = +Doùrše_CÜe +:: + `fž‹rInv®idMod–s +($models); + +263 +$mod–s + = +Doùrše_CÜe +:: + `g‘LßdedMod–s +(); + +266 +$cÚÃùiÚs + = + `¬¿y +(); + +267 + `fܗch + ( +$mod–s + +as + +$mod– +) { + +268 +$cÚÃùiÚs +[ +Doùrše_CÜe +:: + `g‘TabË +( +$mod– +)-> + `g‘CÚÃùiÚ +()-> + `g‘Name +()][] = $model; + +271 + `fܗch + ( +$cÚÃùiÚs + +as + +$cÚÃùiÚ + => +$mod–s +) { + +272 +$mod–s + = +Doùrše_Mªag” +:: + `g‘In¡ªû +()-> + `g‘CÚÃùiÚ +( +$cÚÃùiÚ +)-> +un™OfWÜk +-> + `buždFlushT»e +($models); + +273 +$mod–s + = + `¬¿y_»v”£ +($models); + +274 + `fܗch + ( +$mod–s + +as + +$mod– +) { + +275 +Doùrše_CÜe +:: + `g‘TabË +( +$mod– +)-> + `ü—‹Qu”y +()-> + `d–‘e +()-> + `execu‹ +(); + +278 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Data/Exception.php + +1 + `£tDœeùÜy +( +$dœeùÜy +); + +60 +public + +funùiÚ + + $doExpÜt +() + +62 +$mod–s + = +Doùrše_CÜe +:: + `g‘LßdedMod–s +(); + +63 +$¥ecif›dMod–s + = +$this +-> + `g‘Mod–s +(); + +65 +$d©a + = + `¬¿y +(); + +68 ià( + `em±y +( +$mod–s +)) { + +69 +$mod–s + = +$¥ecif›dMod–s +; + +72 +$mod–s + = +Doùrše_CÜe +:: + `š™ŸlizeMod–s +($models); + +75 +$Üigš®IndexBy + = + `¬¿y +(); + +76 + `fܗch + ( +$mod–s + +AS + +$Çme +) { + +77 +$bË + = +Doùrše_CÜe +:: + `g‘TabË +( +$Çme +); + +78 iàÐ! + `is_nuÎ +( +$šdexBy + = +$bË +-> + `g‘BoundQu”yP¬t +('indexBy'))) { + +79 +$Üigš®IndexBy +[ +$Çme +] = +$šdexBy +; + +80 +$bË +-> + `bšdQu”yP¬t +('šdexBy', +nuÎ +); + +84 + `fܗch + ( +$mod–s + +AS + +$Çme +) { + +85 iàÐ! + `em±y +( +$¥ecif›dMod–s +è +AND + ! + `š_¬¿y +( +$Çme +, $specifiedModels)) { + +89 +$»suÉs + = +Doùrše_CÜe +:: + `g‘TabË +( +$Çme +)-> + `fšdAÎ +(); + +91 ià( +$»suÉs +-> + `couÁ +() > 0) { + +92 +$d©a +[ +$Çme +] = +$»suÉs +; + +97 + `fܗch +( +$Üigš®IndexBy + +AS + +$Çme + => +$šdexBy +) { + +98 +Doùrše_CÜe +:: + `g‘TabË +( +$Çme +)-> + `bšdQu”yP¬t +('šdexBy', +$šdexBy +); + +101 +$d©a + = +$this +-> + `´•¬eD©a +($data); + +103  +$this +-> + `dumpD©a +( +$d©a +); + +104 + } +} + +114 +public + +funùiÚ + + $dumpD©a +( +¬¿y + +$d©a +) + +116 +$dœeùÜy + = +$this +-> + `g‘DœeùÜy +(); + +117 +$fÜm© + = +$this +-> + `g‘FÜm© +(); + +119 ià( +$this +-> + `expÜtIndividu®Fžes +()) { + +120 ià( + `is_¬¿y +( +$dœeùÜy +)) { + +121 +throw + +Ãw + + `Doùrše_D©a_Exû±iÚ +('You must specify‡ single…atho‡ folder in orderoƒxport individual files.'); + +122 } iàÐ! + `is_dœ +( +$dœeùÜy +è&& + `is_fže +($directory)) { + +123 +$dœeùÜy + = + `dœÇme +($directory); + +126 + `fܗch + ( +$d©a + +as + +$þassName + => +$þassD©a +) { + +127 iàÐ! + `em±y +( +$þassD©a +)) { + +128 +Doùrše_P¬£r +:: + `dump +( + `¬¿y +( +$þassName + => +$þassD©a +), +$fÜm© +, +$dœeùÜy +. +DIRECTORY_SEPARATOR +.$className.'.'.$format); + +132 ià( + `is_dœ +( +$dœeùÜy +)) { + +133 +$dœeùÜy + .ð +DIRECTORY_SEPARATOR + . 'd©a.' . +$fÜm© +; + +136 iàÐ! + `em±y +( +$d©a +)) { + +137  +Doùrše_P¬£r +:: + `dump +( +$d©a +, +$fÜm© +, +$dœeùÜy +); + +140 + } +} + +150 +public + +funùiÚ + + $´•¬eD©a +( +$d©a +) + +152 +$´•¬edD©a + = + `¬¿y +(); + +154 + `fܗch + ( +$d©a + +AS + +$þassName + => +$þassD©a +) { + +155 +$´•¬edD©a +[ +$þassName +] = + `¬¿y +(); + +156 +$keyTy³ + = +$þassD©a +-> + `g‘TabË +()-> + `g‘Id’tif›rTy³ +(); + +157 + `fܗch + ( +$þassD©a + +as + +$»cÜd +) { + +158 +$þassName + = + `g‘_þass +( +$»cÜd +); + +159 +$»cÜdKey + = +$þassName + . '_' . + `im¶ode +('_', +$»cÜd +-> + `id’tif›r +()); + +160 +$´•¬edD©a +[ +$þassName +][ +$»cÜdKey +] = + `¬¿y +(); + +163 +$keys + = +$»cÜd +-> + `g‘TabË +()-> + `g‘Id’tif›r +(); + +165 +$»cÜdD©a + = +$»cÜd +-> + `toA¼ay +( +çl£ +); + +167 + `fܗch + ( +$»cÜdD©a + +as + +$key + => +$v®ue +) { + +168 iàÐ! + `is_¬¿y +( +$keys +)) { + +169 +$keys + = + `¬¿y +($keys); + +172 ià( +$keyTy³ + !=ð +Doùrše_CÜe +:: +IDENTIFIER_NATURAL + && + `couÁ +( +$keys +è<ð1 && + `š_¬¿y +( +$key +, $keys)) { + +176 ià( + `is_objeù +( +$»cÜd +[ +$key +])) { + +178 +$v®ue + = + `£rŸlize +( +$»cÜd +[ +$key +]); + +181 ià( +$»ÏtiÚ + = +$this +-> + `isR–©iÚ +( +$»cÜd +, +$key +)) { + +182 iàÐ! +$v®ue +) { + +185 +$»ÏtiÚAlŸs + = +$»ÏtiÚ +['alias']; + +186 +$»ÏtiÚRecÜd + = +$»cÜd +-> +$»ÏtiÚAlŸs +; + +189 ià( +$»ÏtiÚRecÜd + +š¡ªûof + +Doùrše_CÞËùiÚ +) { + +190 +$»ÏtiÚRecÜd + = $»ÏtiÚRecÜd-> + `g‘Fœ¡ +(); + +194 ià( +$»ÏtiÚRecÜd + +š¡ªûof + +Doùrše_NuÎ + || ! $relationRecord) { + +199 +$»ÏtiÚCÏssName + = + `g‘_þass +( +$»ÏtiÚRecÜd +); + +201 +$»ÏtiÚV®ue + = +$»ÏtiÚCÏssName + . '_' . +$v®ue +; + +203 +$´•¬edD©a +[ +$þassName +][ +$»cÜdKey +][ +$»ÏtiÚAlŸs +] = +$»ÏtiÚV®ue +; + +204 } ià( +$»cÜd +-> + `g‘TabË +()-> + `hasF›ld +( +$key +)) { + +205 +$´•¬edD©a +[ +$þassName +][ +$»cÜdKey +][ +$key +] = +$v®ue +; + +211  +$´•¬edD©a +; + +212 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Data/Import.php + +1 + `£tDœeùÜy +( +$dœeùÜy +); + +67 +public + +funùiÚ + + $doP¬sšg +() + +69 +$»cursiveM”ge + = +Doùrše_Mªag” +:: + `g‘In¡ªû +()-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_RECURSIVE_MERGE_FIXTURES +); + +70 +$m”geFunùiÚ + = +$»cursiveM”ge + ==ð +Œue + ? 'array_merge_recursive':'array_merge'; + +71 +$dœeùÜy + = +$this +-> + `g‘DœeùÜy +(); + +73 +$¬¿y + = + `¬¿y +(); + +75 ià( +$dœeùÜy + !=ð +nuÎ +) { + +76 + `fܗch + (( +¬¿y +è +$dœeùÜy + +as + +$dœ +) { + +77 +$e + = + `ex¶ode +('.', +$dœ +); + +80 ià( + `’d +( +$e +) == 'yml') { + +81 +$¬¿y + = + `$m”geFunùiÚ +($¬¿y, +Doùrše_P¬£r +:: + `lßd +( +$dœ +, +$this +-> + `g‘FÜm© +())); + +83 } ià( + `is_dœ +( +$dœ +)) { + +84 +$™ + = +Ãw + + `RecursiveI‹¿tÜI‹¿tÜ +Òew + `RecursiveDœeùÜyI‹¿tÜ +( +$dœ +), + +85 +RecursiveI‹¿tÜI‹¿tÜ +:: +LEAVES_ONLY +); + +86 +$fžesOrd”ed + = + `¬¿y +(); + +87 + `fܗch + ( +$™ + +as + +$fže +) { + +88 +$fžesOrd”ed +[] = +$fže +; + +91 + `Çtÿ£sÜt +( +$fžesOrd”ed +); + +92 + `fܗch + ( +$fžesOrd”ed + +as + +$fže +) { + +93 +$e + = + `ex¶ode +('.', +$fže +-> + `g‘FžeName +()); + +94 ià( + `š_¬¿y +( + `’d +( +$e +), +$this +-> + `g‘FÜm©s +())) { + +95 +$¬¿y + = + `$m”geFunùiÚ +($¬¿y, +Doùrše_P¬£r +:: + `lßd +( +$fže +-> + `g‘P©hName +(), +$this +-> + `g‘FÜm© +())); + +102  +$¬¿y +; + +103 + } +} + +110 +public + +funùiÚ + + $doImpÜt +( +$­³nd + = +çl£ +) + +112 +$¬¿y + = +$this +-> + `doP¬sšg +(); + +114 iàÐ! +$­³nd +) { + +115 +$this +-> + `purge +( + `¬¿y_»v”£ +( + `¬¿y_keys +( +$¬¿y +))); + +118 +$this +-> + `_lßdD©a +( +$¬¿y +); + +119 + } +} + +126 +´Ùeùed + +funùiÚ + + $_buždRows +( +$þassName +, +$d©a +) + +128 +$bË + = +Doùrše_CÜe +:: + `g‘TabË +( +$þassName +); + +130 + `fܗch + ( +$d©a + +as + +$rowKey + => +$row +) { + +132 +$this +-> +_rows +[ +$þassName +][ +$rowKey +] = +$row +; + +134 + `fܗch + (( +¬¿y +è +$row + +as + +$key + => +$v®ue +) { + +135 ià( +$bË +-> + `hasR–©iÚ +( +$key +è&& + `is_¬¿y +( +$v®ue +è&& ! $bË-> + `hasTem¶©e +('Doctrine_Template_I18n')) { + +137 iàÐ! + `is£t +( +$v®ue +[0]è|| (is£t($v®ue[0]è&& + `is_¬¿y +($value[0]))) { + +138 +$»l + = +$bË +-> + `g‘R–©iÚ +( +$key +); + +139 +$»lCÏssName + = +$»l +-> + `g‘TabË +()-> + `g‘O±iÚ +('name'); + +140 +$»lRowKey + = +$rowKey + . '_' . +$»lCÏssName +; + +142 ià( +$»l +-> + `g‘Ty³ +(è=ð +Doùrše_R–©iÚ +:: +ONE +) { + +143 +$v® + = + `¬¿y +( +$»lRowKey + => +$v®ue +); + +144 +$this +-> +_rows +[ +$þassName +][ +$rowKey +][ +$key +] = +$»lRowKey +; + +146 +$v® + = +$v®ue +; + +147 +$this +-> +_rows +[ +$þassName +][ +$rowKey +][ +$key +] = + `¬¿y_keys +( +$v® +); + +150 +$this +-> + `_buždRows +( +$»lCÏssName +, +$v® +); + +155 + } +} + +162 +´Ùeùed + +funùiÚ + + $_buždNe¡edS‘Rows +( +$þassName +, +$d©a +) + +164 + `fܗch + ( +$d©a + +as + +$rowKey + => +$row +) { + +165 +$chžd»n + = + `is£t +( +$row +['chžd»n']è? $row['chžd»n']: + `¬¿y +(); + +166 + `un£t +( +$row +['children']); + +167 +$this +-> +_rows +[ +$þassName +][ +$rowKey +] = +$row +; + +169 +$this +-> + `_buždNe¡edS‘Rows +( +$þassName +, +$chžd»n +); + +171 + } +} + +184 +´Ùeùed + +funùiÚ + + $_g‘Imp܋dObjeù +( +$rowKey +, +Doùrše_RecÜd + +$»cÜd +, +$»ÏtiÚName +, +$»ã¼šgRowKey +) + +186 +$»ÏtiÚ + = +$»cÜd +-> + `g‘TabË +()-> + `g‘R–©iÚ +( +$»ÏtiÚName +); + +187 +$rowKey + = +$this +-> + `_g‘RowKeyP»fix +( +$»ÏtiÚ +-> + `g‘TabË +()) . $rowKey; + +189 iàÐ! + `is£t +( +$this +-> +_imp܋dObjeùs +[ +$rowKey +])) { + +190 +throw + +Ãw + + `Doùrše_D©a_Exû±iÚ +( + +191 + `¥rštf +('Inv®id„ow key s³cif›d: %s,„eã¼edØš %s', +$rowKey +, +$»ã¼šgRowKey +) + +195 +$»Ï‹dRowKeyObjeù + = +$this +-> +_imp܋dObjeùs +[ +$rowKey +]; + +197 +$»ÏtiÚCÏss + = +$»ÏtiÚ +-> + `g‘CÏss +(); + +198 iàÐ! +$»Ï‹dRowKeyObjeù + +š¡ªûof + +$»ÏtiÚCÏss +) { + +199 +throw + +Ãw + + `Doùrše_D©a_Exû±iÚ +( + `¥rštf +( + +201 +$»ã¼šgRowKey +, +$»ÏtiÚ +-> + `g‘CÏss +(), + `g‘_þass +( +$»Ï‹dRowKeyObjeù +) + +205  +$»Ï‹dRowKeyObjeù +; + +206 + } +} + +215 +´Ùeùed + +funùiÚ + + $_´oûssRow +( +$rowKey +, +$row +) + +217 +$obj + = +$this +-> +_imp܋dObjeùs +[ +$rowKey +]; + +219 + `fܗch + (( +¬¿y +è +$row + +as + +$key + => +$v®ue +) { + +220 ià( + `m‘hod_exi¡s +( +$obj +, '£t' . +Doùrše_InæeùÜ +:: + `þassify +( +$key +))) { + +221 +$func + = '£t' . +Doùrše_InæeùÜ +:: + `þassify +( +$key +); + +222 +$obj +-> + `$func +( +$v®ue +); + +223 } ià( +$obj +-> + `g‘TabË +()-> + `hasF›ld +( +$key +)) { + +224 ià( +$obj +-> + `g‘TabË +()-> + `g‘Ty³Of +( +$key +) == 'object') { + +225 +$v®ue + = + `un£rŸlize +($value); + +227 +$obj +-> + `£t +( +$key +, +$v®ue +); + +228 } ià( +$obj +-> + `g‘TabË +()-> + `hasR–©iÚ +( +$key +)) { + +229 ià( + `is_¬¿y +( +$v®ue +)) { + +230 ià( + `is£t +( +$v®ue +[0]è&& ! + `is_¬¿y +($value[0])) { + +231 + `fܗch + ( +$v®ue + +as + +$lšk +) { + +232 ià( +$obj +-> + `g‘TabË +()-> + `g‘R–©iÚ +( +$key +)-> + `g‘Ty³ +(è==ð +Doùrše_R–©iÚ +:: +ONE +) { + +233 +$obj +-> + `£t +( +$key +, +$this +-> + `_g‘Imp܋dObjeù +( +$lšk +, $obj, $key, +$rowKey +)); + +234 } ià( +$obj +-> + `g‘TabË +()-> + `g‘R–©iÚ +( +$key +)-> + `g‘Ty³ +(è==ð +Doùrše_R–©iÚ +:: +MANY +) { + +235 +$»ÏtiÚ + = +$obj +-> +$key +; + +237 +$»ÏtiÚ +[] = +$this +-> + `_g‘Imp܋dObjeù +( +$lšk +, +$obj +, +$key +, +$rowKey +); + +241 +$obj +-> +$key +-> + `äomA¼ay +( +$v®ue +); + +244 +$obj +-> + `£t +( +$key +, +$this +-> + `_g‘Imp܋dObjeù +( +$v®ue +, $obj, $key, +$rowKey +)); + +247 +Œy + { + +248 +$obj +-> +$key + = +$v®ue +; + +249 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +251 ià( + `is_ÿÎabË +( + `¬¿y +( +$obj +, '£t' . +Doùrše_InæeùÜ +:: + `þassify +( +$key +)))) { + +252 +$func + = '£t' . +Doùrše_InæeùÜ +:: + `þassify +( +$key +); + +253 +$obj +-> + `$func +( +$v®ue +); + +255 +throw + +Ãw + + `Doùrše_D©a_Exû±iÚ +('Inv®id fixtu»ƒËm’ˆ"'. +$key + . '" und” "' . +$rowKey + . '"'); + +260 + } +} + +272 +´Ùeùed + +funùiÚ + + $_hasN©u¿lNe¡edS‘FÜm© +( +$þassName +, +¬¿y + & +$d©a +) + +274 ià( +Doùrše_CÜe +:: + `g‘TabË +( +$þassName +)-> + `isT»e +()) { + +275 ià( + `is£t +( +$d©a +['Ne¡edS‘']è&& $d©a['Ne¡edS‘'] =ð +Œue +) { + +276 + `un£t +( +$d©a +['NestedSet']); + +277  +Œue +; + +279 +$fœ¡ + = + `cu¼’t +( +$d©a +); + +280  + `¬¿y_key_exi¡s +('chžd»n', +$fœ¡ +); + +283  +çl£ +; + +285 + } +} + +293 +´Ùeùed + +funùiÚ + + $_lßdD©a +( +¬¿y + +$¬¿y +) + +295 +$áedS‘s + = + `¬¿y +(); + +297 +$¥ecif›dMod–s + = +$this +-> + `g‘Mod–s +(); + +298 +$rows + = + `¬¿y +(); + +300 + `fܗch + ( +$¬¿y + +as + +$þassName + => +$d©a +) { + +301 iàÐ! + `em±y +( +$¥ecif›dMod–s +è&& ! + `š_¬¿y +( +$þassName +, $specifiedModels)) { + +307 ià( +$this +-> + `_hasN©u¿lNe¡edS‘FÜm© +( +$þassName +, +$d©a +)) { + +308 +$áedS‘s +[ +$þassName +][] = +$d©a +; + +309 +$this +-> + `_buždNe¡edS‘Rows +( +$þassName +, +$d©a +); + +311 +$this +-> + `_buždRows +( +$þassName +, +$d©a +); + +315 +$buždRows + = + `¬¿y +(); + +316 + `fܗch + ( +$this +-> +_rows + +as + +$þassName + => +$þassRows +) { + +317 +$rowKeyP»fix + = +$this +-> + `_g‘RowKeyP»fix +( +Doùrše_CÜe +:: + `g‘TabË +( +$þassName +)); + +318 + `fܗch + ( +$þassRows + +as + +$rowKey + => +$row +) { + +319 +$rowKey + = +$rowKeyP»fix + . $rowKey; + +320 +$buždRows +[ +$rowKey +] = +$row +; + +321 +$this +-> +_imp܋dObjeùs +[ +$rowKey +] = +Ãw + + `$þassName +(); + +322 +$this +-> +_imp܋dObjeùs +[ +$rowKey +]-> + `¡©e +('TDIRTY'); + +326 + `fܗch +( +$buždRows + +as + +$rowKey + => +$row +) { + +327 +$this +-> + `_´oûssRow +( +$rowKey +, +$row +); + +331 + `fܗch + ( +$áedS‘s + +as + +$þassName + => +$£ts +) { + +332 + `fܗch + ( +$£ts + +as + +$d©a +) { + +333 +$this +-> + `_lßdNe¡edS‘D©a +( +$þassName +, +$d©a +); + +337 +$mªag” + = +Doùrše_Mªag” +:: + `g‘In¡ªû +(); + +338 + `fܗch + ( +$mªag” + +as + +$cÚÃùiÚ +) { + +339 +$Œ“ + = +$cÚÃùiÚ +-> +un™OfWÜk +-> + `buždFlushT»e +( + `¬¿y_keys +( +$¬¿y +)); + +341 + `fܗch + ( +$Œ“ + +as + +$mod– +) { + +342 + `fܗch + ( +$this +-> +_imp܋dObjeùs + +as + +$obj +) { + +344 ià( +$obj + +š¡ªûof + +$mod– +) { + +345 +$obj +-> + `§ve +(); + +351 + } +} + +361 +´Ùeùed + +funùiÚ + + $_lßdNe¡edS‘D©a +( +$mod– +, +$áedS‘D©a +, +$·»Á + = +nuÎ +) + +363 + `fܗch +( +$áedS‘D©a + +AS + +$rowKey + => +$áedS‘ +) { + +364 +$chžd»n + = + `¬¿y +(); + +365 +$d©a + = + `¬¿y +(); + +367 ià( + `¬¿y_key_exi¡s +('chžd»n', +$áedS‘ +)) { + +368 +$chžd»n + = ( +¬¿y +è +$áedS‘ +['children']; + +369 +$chžd»n + = + `¬¿y_»v”£ +($chžd»n, +Œue +); + +370 + `un£t +( +$áedS‘ +['children']); + +373 +$rowKey + = +$this +-> + `_g‘RowKeyP»fix +( +Doùrše_CÜe +:: + `g‘TabË +( +$mod– +)) . $rowKey; + +375 +$»cÜd + = +$this +-> +_imp܋dObjeùs +[ +$rowKey +]; + +377 + `un£t +( +$this +-> +_imp܋dObjeùs +[ +$rowKey +]); + +379 iàÐ! +$·»Á +) { + +380 +$»cÜd +-> + `§ve +(); + +381 +Doùrše_CÜe +:: + `g‘TabË +( +$mod– +)-> + `g‘T»e +()-> + `ü—‹RoÙ +( +$»cÜd +); + +383 +$·»Á +-> + `g‘Node +()-> + `addChžd +( +$»cÜd +); + +386 ià( + `is_¬¿y +( +$chžd»n +è +AND + ! + `em±y +($children)) { + +387 +$this +-> + `_lßdNe¡edS‘D©a +( +$mod– +, +$chžd»n +, +$»cÜd +); + +390 + } +} + +398 +´Ùeùed + +funùiÚ + + $_g‘RowKeyP»fix +( +Doùrše_TabË + +$bË +) + +400  + `¥rštf +('(%sè', +$bË +-> + `g‘TabËName +()); + +401 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/DataDict.php + +1 +cÚn +-> +v¬ch¬_max_Ëngth +.')') + +80 : (( +$Ëngth + && $Ëngth <ð +$this +-> +cÚn +-> +v¬ch¬_max_Ëngth +) ? 'VARCHAR('.$length.')' : 'TEXT'); + +82 iàÐ! + `em±y +( +$f›ld +['length'])) { + +83 +$Ëngth + = +$f›ld +['length']; + +84 ià( +$Ëngth + <= 8000) { + +85  'VARCHAR('. +$Ëngth +.')'; + +90 iàÐ! + `em±y +( +$f›ld +['length'])) { + +91 +$Ëngth + = +$f›ld +['length']; + +92 ià( +$Ëngth + <= 8000) { + +99  ( + `is£t +( +$f›ld +['unsigned']) && $field['unsigned']) ? 'BIGINT' : 'INT'; + +103  'CHAR(' . + `¡¾’ +('YYYY-MM-DD') . ')'; + +105  'CHAR(' . + `¡¾’ +('HH:MM:SS') . ')'; + +107  'CHAR(' . + `¡¾’ +('YYYY-MM-DD HH:MM:SS') . ')'; + +111 +$Ëngth + = ! + `em±y +( +$f›ld +['length']) ? $field['length'] : 18; + +112 +$sÿË + = ! + `em±y +( +$f›ld +['sÿË']è? $f›ld['sÿË'] : +$this +-> +cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_DECIMAL_PLACES +); + +113  'DECIMAL('. +$Ëngth +.','. +$sÿË +.')'; + +115  +$f›ld +['ty³'] . ( + `is£t +($f›ld['Ëngth']è? '('.$f›ld['Ëngth'].')': +nuÎ +); + +124 +public + +funùiÚ + + $g‘P܏bËDeþ¬©iÚ +( +$f›ld +) + +126 +$db_ty³ + = + `´eg_»¶aû +('/[\d\(\)]/','', + `¡¹Þow” +( +$f›ld +['type']) ); + +127 +$Ëngth + = ( + `is£t +( +$f›ld +['Ëngth']è&& $f›ld['Ëngth'] > 0è? $f›ld['Ëngth'] : +nuÎ +; + +129 +$ty³ + = + `¬¿y +(); + +131 +$unsigÃd + = +$fixed + = +nuÎ +; + +133 iàÐ! + `is£t +( +$f›ld +['name'])) + +134 +$f›ld +['name'] = ''; + +136  +$db_ty³ +) { + +138 +$ty³ +[0] = 'boolean'; + +144 +$ty³ +[0] = 'integer'; + +145 ià( +$Ëngth + == 1) { + +146 +$ty³ +[] = 'boolean'; + +150 +$ty³ +[0] = 'date'; + +155 +$ty³ +[0] = 'timestamp'; + +160 +$ty³ +[0] = 'float'; + +165 +$ty³ +[0] = 'decimal'; + +171 +$fixed + = +çl£ +; + +174 +$ty³ +[0] = 'string'; + +175 ià( +$Ëngth + == '1') { + +176 +$ty³ +[] = 'boolean'; + +177 ià( + `´eg_m©ch +('/^[is|has]/', +$f›ld +['name'])) { + +178 +$ty³ + = + `¬¿y_»v”£ +($type); + +180 } + `–£if + ( + `¡r¡r +( +$db_ty³ +, 'text')) { + +181 +$ty³ +[] = 'clob'; + +183 ià( +$fixed + !=ð +çl£ +) { + +184 +$fixed + = +Œue +; + +189 +$ty³ +[] = 'blob'; + +190 +$Ëngth + = +nuÎ +; + +193 +$ty³ +[] = 'string'; + +194 +$Ëngth + = 36; + +199 +$ty³ +[] = 'string'; + +200 +$Ëngth + = +nuÎ +; + +203 +$ty³ +[] = +$f›ld +['type']; + +204 +$Ëngth + = + `is£t +( +$f›ld +['Ëngth']è? $f›ld['Ëngth']: +nuÎ +; + +207  + `¬¿y +('ty³' => +$ty³ +, + +208 'Ëngth' => +$Ëngth +, + +209 'unsigÃd' => +$unsigÃd +, + +210 'fixed' => +$fixed +); + +211 + } +} + +238 +public + +funùiÚ + + $g‘IÁeg”Deþ¬©iÚ +( +$Çme +, +$f›ld +) + +240 +$deçuÉ + = +$autošc + = ''; + +241 iàÐ! + `em±y +( +$f›ld +['autoincrement'])) { + +242 +$autošc + = ' identity'; + +243 } + `–£if + ( + `¬¿y_key_exi¡s +('deçuÉ', +$f›ld +)) { + +244 ià( +$f›ld +['default'] === '') { + +245 +$f›ld +['deçuÉ'] = + `em±y +($f›ld['nÙnuÎ']è? +nuÎ + : 0; + +248 +$v®ue + = ( + `is_nuÎ +( +$f›ld +['default']) + +250 : +$this +-> +cÚn +-> + `quÙe +( +$f›ld +['default'])); + +253 ià( + `¬¿y_key_exi¡s +('deçuÉCÚ¡¿štName', +$f›ld +)) { + +254 +$deçuÉ + .ð' CONSTRAINT ' . +$f›ld +['defaultConstraintName']; + +257 +$deçuÉ + .ð' DEFAULT ' . +$v®ue +; + +261 +$nÙnuÎ + = ( + `is£t +( +$f›ld +['notnull']) && $field['notnull']) ? ' NOT NULL' : ' NULL'; + +264 +$unsigÃd + = ''; + +265 +$comm’t + = ( + `is£t +( +$f›ld +['comment']) && $field['comment']) + +266 ? " COMMENT " . +$this +-> +cÚn +-> + `quÙe +( +$f›ld +['comment'], 'text') : ''; + +268 +$Çme + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($Çme, +Œue +); + +270  +$Çme + . ' ' . +$this +-> + `g‘N©iveDeþ¬©iÚ +( +$f›ld +è. +$unsigÃd + + +271 . +$deçuÉ + . +$nÙnuÎ + . +$autošc + . +$comm’t +; + +272 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/DataDict/Mysql.php + +1 +cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_USE_NATIVE_ENUM +)) { + +147 +$v®ues + = + `¬¿y +(); + +148 + `fܗch + ( +$f›ld +['v®ues'] +as + +$v®ue +) { + +149 +$v®ues +[] = +$this +-> +cÚn +-> + `quÙe +( +$v®ue +, 'varchar'); + +151  'ENUM('. + `im¶ode +(', ', +$v®ues +).')'; + +153 +$f›ld +['Ëngth'] = + `is£t +($field['length']) && $field['length'] ? $field['length']:255; + +156 ià( +$this +-> +cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_USE_NATIVE_SET +)) { + +157 +$v®ues + = + `¬¿y +(); + +158 + `fܗch + ( +$f›ld +['v®ues'] +as + +$v®ue +) { + +159 +$v®ues +[] = +$this +-> +cÚn +-> + `quÙe +( +$v®ue +, 'varchar'); + +161  'SET('. + `im¶ode +(', ', +$v®ues +).')'; + +163 +$f›ld +['Ëngth'] = + `is£t +($field['length']) && $field['length'] ? $field['length']:255; + +168 iàÐ! + `is£t +( +$f›ld +['length'])) { + +169 ià( + `¬¿y_key_exi¡s +('deçuÉ', +$f›ld +)) { + +170 +$f›ld +['Ëngth'] = +$this +-> +cÚn +-> +v¬ch¬_max_Ëngth +; + +172 +$f›ld +['Ëngth'] = +çl£ +; + +176 +$Ëngth + = ( +$f›ld +['Ëngth'] <ð +$this +-> +cÚn +-> +v¬ch¬_max_Ëngth +è? $f›ld['Ëngth'] : +çl£ +; + +177 +$fixed + = ( + `is£t +( +$f›ld +['fixed'])è? $f›ld['fixed'] : +çl£ +; + +179  +$fixed + ? ( +$Ëngth + ? 'CHAR(' . $length . ')' : 'CHAR(255)') + +180 : ( +$Ëngth + ? 'VARCHAR(' . $length . ')' : 'TEXT'); + +184 iàÐ! + `em±y +( +$f›ld +['length'])) { + +185 +$Ëngth + = +$f›ld +['length']; + +186 ià( +$Ëngth + <= 255) { + +188 } + `–£if + ( +$Ëngth + <= 65532) { + +190 } + `–£if + ( +$Ëngth + <= 16777215) { + +196 iàÐ! + `em±y +( +$f›ld +['length'])) { + +197 +$Ëngth + = +$f›ld +['length']; + +198 ià( +$Ëngth + <= 255) { + +200 } + `–£if + ( +$Ëngth + <= 65532) { + +202 } + `–£if + ( +$Ëngth + <= 16777215) { + +209 iàÐ! + `em±y +( +$f›ld +['length'])) { + +210 +$Ëngth + = +$f›ld +['length']; + +211 ià( +$Ëngth + <= 1) { + +213 } + `–£if + ( +$Ëngth + == 2) { + +215 } + `–£if + ( +$Ëngth + == 3) { + +217 } + `–£if + ( +$Ëngth + == 4) { + +219 } + `–£if + ( +$Ëngth + > 4) { + +233 +$Ëngth + = ! + `em±y +( +$f›ld +['length']) ? $field['length'] : 18; + +234 +$sÿË + = ! + `em±y +( +$f›ld +['sÿË']è? $f›ld['sÿË'] : +$this +-> +cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_DECIMAL_PLACES +); + +235  'FLOAT('. +$Ëngth +.', '. +$sÿË +.')'; + +237 +$Ëngth + = ! + `em±y +( +$f›ld +['length']) ? $field['length'] : 18; + +238 +$sÿË + = ! + `em±y +( +$f›ld +['sÿË']è? $f›ld['sÿË'] : +$this +-> +cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_DECIMAL_PLACES +); + +239  'DOUBLE('. +$Ëngth +.', '. +$sÿË +.')'; + +241 +$Ëngth + = ! + `em±y +( +$f›ld +['length']) ? $field['length'] : 18; + +242 +$sÿË + = ! + `em±y +( +$f›ld +['sÿË']è? $f›ld['sÿË'] : +$this +-> +cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_DECIMAL_PLACES +); + +243  'DECIMAL('. +$Ëngth +.', '. +$sÿË +.')'; + +247  +$f›ld +['ty³'] . ( + `is£t +($f›ld['Ëngth']è? '('.$f›ld['Ëngth'].')': +nuÎ +); + +256 +public + +funùiÚ + + $g‘P܏bËDeþ¬©iÚ +( +¬¿y + +$f›ld +) + +258 +$dbTy³ + = + `¡¹Þow” +( +$f›ld +['type']); + +259 +$dbTy³ + = + `¡¹ok +($dbType, '(), '); + +260 ià( +$dbTy³ + == 'national') { + +261 +$dbTy³ + = + `¡¹ok +('(), '); + +263 ià( + `is£t +( +$f›ld +['length'])) { + +264 +$Ëngth + = +$f›ld +['length']; + +265 +$decim® + = ''; + +267 +$Ëngth + = + `¡¹ok +('(), '); + +268 +$decim® + = + `¡¹ok +('(), '); + +269 iàÐ! +$decim® + ) { + +270 +$decim® + = +nuÎ +; + +273 +$ty³ + = + `¬¿y +(); + +274 +$unsigÃd + = +$fixed + = +nuÎ +; + +276 iàÐ! + `is£t +( +$f›ld +['name'])) { + +277 +$f›ld +['name'] = ''; + +280 +$v®ues + = +nuÎ +; + +281 +$sÿË + = +nuÎ +; + +283  +$dbTy³ +) { + +285 +$ty³ +[] = 'integer'; + +286 +$ty³ +[] = 'boolean'; + +287 ià( + `´eg_m©ch +('/^(is|has)/', +$f›ld +['name'])) { + +288 +$ty³ + = + `¬¿y_»v”£ +($type); + +290 +$unsigÃd + = + `´eg_m©ch +('/ unsigÃd/i', +$f›ld +['type']); + +291 +$Ëngth + = 1; + +294 +$ty³ +[] = 'integer'; + +295 +$unsigÃd + = + `´eg_m©ch +('/ unsigÃd/i', +$f›ld +['type']); + +296 +$Ëngth + = 2; + +299 +$ty³ +[] = 'integer'; + +300 +$unsigÃd + = + `´eg_m©ch +('/ unsigÃd/i', +$f›ld +['type']); + +301 +$Ëngth + = 3; + +305 +$ty³ +[] = 'integer'; + +306 +$unsigÃd + = + `´eg_m©ch +('/ unsigÃd/i', +$f›ld +['type']); + +307 +$Ëngth + = 4; + +310 +$ty³ +[] = 'integer'; + +311 +$unsigÃd + = + `´eg_m©ch +('/ unsigÃd/i', +$f›ld +['type']); + +312 +$Ëngth + = 8; + +320 +$fixed + = +çl£ +; + +323 +$ty³ +[] = 'string'; + +324 ià( +$Ëngth + == '1') { + +325 +$ty³ +[] = 'boolean'; + +326 ià( + `´eg_m©ch +('/^(is|has)/', +$f›ld +['name'])) { + +327 +$ty³ + = + `¬¿y_»v”£ +($type); + +329 } + `–£if + ( + `¡r¡r +( +$dbTy³ +, 'text')) { + +330 +$ty³ +[] = 'clob'; + +331 ià( +$decim® + == 'binary') { + +332 +$ty³ +[] = 'blob'; + +335 ià( +$fixed + !=ð +çl£ +) { + +336 +$fixed + = +Œue +; + +340 +$ty³ +[] = 'enum'; + +341 + `´eg_m©ch_®l +('/\'((?:\'\'|[^\'])*)\'/', +$f›ld +['ty³'], +$m©ches +); + +342 +$Ëngth + = 0; + +343 +$fixed + = +çl£ +; + +344 ià( + `is_¬¿y +( +$m©ches +)) { + +345 + `fܗch + ( +$m©ches +[1] +as + & +$v®ue +) { + +346 +$v®ue + = + `¡r_»¶aû +('\'\'', '\'', $value); + +347 +$Ëngth + = + `max +($Ëngth, + `¡¾’ +( +$v®ue +)); + +349 ià( +$Ëngth + =ð'1' && + `couÁ +( +$m©ches +[1]) == 2) { + +350 +$ty³ +[] = 'boolean'; + +351 ià( + `´eg_m©ch +('/^(is|has)/', +$f›ld +['name'])) { + +352 +$ty³ + = + `¬¿y_»v”£ +($type); + +356 +$v®ues + = +$m©ches +[1]; + +358 +$ty³ +[] = 'integer'; + +361 +$fixed + = +çl£ +; + +362 +$ty³ +[] = 'text'; + +363 +$ty³ +[] = 'integer'; + +366 +$ty³ +[] = 'date'; + +367 +$Ëngth + = +nuÎ +; + +371 +$ty³ +[] = 'timestamp'; + +372 +$Ëngth + = +nuÎ +; + +375 +$ty³ +[] = 'time'; + +376 +$Ëngth + = +nuÎ +; + +381 +$ty³ +[] = 'float'; + +382 +$unsigÃd + = + `´eg_m©ch +('/ unsigÃd/i', +$f›ld +['type']); + +386 ià( +$decim® + !=ð +nuÎ +) { + +387 +$sÿË + = +$decim® +; + +390 +$ty³ +[] = 'decimal'; + +391 +$unsigÃd + = + `´eg_m©ch +('/ unsigÃd/i', +$f›ld +['type']); + +399 +$ty³ +[] = 'blob'; + +400 +$Ëngth + = +nuÎ +; + +403 +$ty³ +[] = 'integer'; + +404 +$ty³ +[] = 'date'; + +405 +$Ëngth + = +nuÎ +; + +408 +$ty³ +[] = 'bit'; + +418 +$ty³ +[] = 'blob'; + +419 +$Ëngth + = +nuÎ +; + +422 +$ty³ +[] = +$f›ld +['type']; + +423 +$Ëngth + = + `is£t +( +$f›ld +['Ëngth']è? $f›ld['Ëngth']: +nuÎ +; + +426 +$Ëngth + = ((è$Ëngth =ð0è? +nuÎ + : () $length; + +427 +$def + = + `¬¿y +('ty³' => +$ty³ +, 'Ëngth' => +$Ëngth +, 'unsigÃd' => +$unsigÃd +, 'fixed' => +$fixed +); + +428 ià( +$v®ues + !=ð +nuÎ +) { + +429 +$def +['v®ues'] = +$v®ues +; + +431 ià( +$sÿË + !=ð +nuÎ +) { + +432 +$def +['sÿË'] = +$sÿË +; + +434  +$def +; + +435 + } +} + +445 +public + +funùiÚ + + $g‘Ch¬£tF›ldDeþ¬©iÚ +( +$ch¬£t +) + +447  'CHARACTER SET ' . +$ch¬£t +; + +448 + } +} + +458 +public + +funùiÚ + + $g‘CÞÏtiÚF›ldDeþ¬©iÚ +( +$cÞÏtiÚ +) + +460  'COLLATE ' . +$cÞÏtiÚ +; + +461 + } +} + +488 +public + +funùiÚ + + $g‘IÁeg”Deþ¬©iÚ +( +$Çme +, +$f›ld +) + +490 +$unique + = ( + `is£t +( +$f›ld +['unique']) && $field['unique']) ? ' UNIQUE' : ''; + +491 +$deçuÉ + = +$autošc + = ''; + +492 iàÐ! + `em±y +( +$f›ld +['autoincrement'])) { + +493 +$autošc + = ' AUTO_INCREMENT'; + +494 } + `–£if + ( + `¬¿y_key_exi¡s +('deçuÉ', +$f›ld +)) { + +495 ià( +$f›ld +['default'] === '') { + +496 +$f›ld +['deçuÉ'] = + `em±y +($f›ld['nÙnuÎ']è? +nuÎ + : 0; + +499 +$deçuÉ + = ' DEFAULT ' . ( + `is_nuÎ +( +$f›ld +['default']) + +501 : +$this +-> +cÚn +-> + `quÙe +( +$f›ld +['default'])); + +504 +$nÙnuÎ + = ( + `is£t +( +$f›ld +['notnull']) && $field['notnull']) ? ' NOT NULL' : ''; + +505 +$unsigÃd + = ( + `is£t +( +$f›ld +['unsigned']) && $field['unsigned']) ? ' UNSIGNED' : ''; + +506 +$comm’t + = ( + `is£t +( +$f›ld +['comment']) && $field['comment']) + +507 ? " COMMENT " . +$this +-> +cÚn +-> + `quÙe +( +$f›ld +['comment'], 'text') : ''; + +509 +$Çme + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($Çme, +Œue +); + +511  +$Çme + . ' ' . +$this +-> + `g‘N©iveDeþ¬©iÚ +( +$f›ld +è. +$unsigÃd + + +512 . +$deçuÉ + . +$unique + . +$nÙnuÎ + . +$autošc + . +$comm’t +; + +513 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/DataDict/Oracle.php + +1 +cÚn +-> + `g‘P¬am +('char_unit'); + +74 +$un™ + = ! + `is_nuÎ +($unit) ? ' '.$unit : ''; + +76 ià( +$Ëngth + && $Ëngth <ð +$this +-> +cÚn +-> + `g‘P¬am +('varchar2_max_length')) { + +77  +$fixed + ? 'CHAR('. +$Ëngth +. +$un™ +.')' : 'VARCHAR2('.$length.$unit.')'; + +85 +$Ëngth + = (! + `em±y +( +$f›ld +['Ëngth'])è? $f›ld['Ëngth'] : +çl£ +; + +86 iàÐ +$Ëngth + && $Ëngth <ð +$this +-> +cÚn +-> +numb”_max_´ecisiÚ +) { + +87 ià( +$Ëngth + <= 1) { + +89 } + `–£if + ( +$Ëngth + == 2) { + +91 } + `–£if + ( +$Ëngth + == 3) { + +93 } + `–£if + ( +$Ëngth + == 4) { + +95 } + `–£if + ( +$Ëngth + <= 8) { + +112 +$sÿË + = ! + `em±y +( +$f›ld +['sÿË']è? $f›ld['sÿË'] : +$this +-> +cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_DECIMAL_PLACES +); + +113  'NUMBER(*,'. +$sÿË +.')'; + +116  +$f›ld +['ty³'] . ( + `is£t +($f›ld['Ëngth']è? '('.$f›ld['Ëngth'].')': +nuÎ +); + +126 +public + +funùiÚ + + $g‘P܏bËDeþ¬©iÚ +( +¬¿y + +$f›ld +) + +128 iàÐ! + `is£t +( +$f›ld +['data_type'])) { + +129 +throw + +Ãw + + `Doùrše_D©aDiù_Exû±iÚ +('Native oracle definition must have‡ data_type key specified'); + +132 +$dbTy³ + = + `¡¹Þow” +( +$f›ld +['data_type']); + +133 +$ty³ + = + `¬¿y +(); + +134 +$Ëngth + = +$unsigÃd + = +$fixed + = +nuÎ +; + +135 iàÐ! + `em±y +( +$f›ld +['data_length'])) { + +136 +$Ëngth + = () +$f›ld +['data_length']; + +139 iàÐ! + `is£t +( +$f›ld +['column_name'])) { + +140 +$f›ld +['column_name'] = ''; + +143  +$dbTy³ +) { + +147 +$ty³ +[] = 'integer'; + +148 ià( +$Ëngth + == '1') { + +149 +$ty³ +[] = 'boolean'; + +150 ià( + `´eg_m©ch +('/^(is|has)/i', +$f›ld +['column_name'])) { + +151 +$ty³ + = + `¬¿y_»v”£ +($type); + +158 +$fixed + = +çl£ +; + +161 +$ty³ +[] = 'string'; + +162 ià( +$Ëngth + == '1') { + +163 +$ty³ +[] = 'boolean'; + +164 ià( + `´eg_m©ch +('/^(is|has)/i', +$f›ld +['column_name'])) { + +165 +$ty³ + = + `¬¿y_»v”£ +($type); + +168 ià( +$fixed + !=ð +çl£ +) { + +169 +$fixed + = +Œue +; + +174 +$ty³ +[] = 'timestamp'; + +175 +$Ëngth + = +nuÎ +; + +178 +$ty³ +[] = 'float'; + +181 iàÐ! + `em±y +( +$f›ld +['data_scale'])) { + +182 +$ty³ +[] = 'decimal'; + +184 +$ty³ +[] = 'integer'; + +185 ià(() +$Ëngth + == '1') { + +186 +$ty³ +[] = 'boolean'; + +187 ià( + `´eg_m©ch +('/^(is|has)/i', +$f›ld +['column_name'])) { + +188 +$ty³ + = + `¬¿y_»v”£ +($type); + +190 +$Ëngth + = 1; + +192 } + `–£if + ( ! + `is_nuÎ +( +$Ëngth +) && ()$length <= 3) { + +193 +$Ëngth + = 1; + +194 } + `–£if + ( ! + `is_nuÎ +( +$Ëngth +) && ()$length <= 5) { + +195 +$Ëngth + = 2; + +196 } + `–£if + ( ! + `is_nuÎ +( +$Ëngth +) && ()$length <= 8) { + +197 +$Ëngth + = 3; + +198 } + `–£if + ( ! + `is_nuÎ +( +$Ëngth +) && ()$length <= 10) { + +199 +$Ëngth + = 4; + +200 } + `–£if + ( ! + `is_nuÎ +( +$Ëngth +) && ()$length <= 20) { + +201 +$Ëngth + = 8; + +206 +$ty³ +[] = 'string'; + +209 +$ty³ +[] = 'clob'; + +215 +$ty³ +[] = 'blob'; + +216 +$Ëngth + = +nuÎ +; + +221 +$ty³ +[] = +$f›ld +['type']; + +222 +$Ëngth + = + `is£t +( +$f›ld +['Ëngth']è? $f›ld['Ëngth']: +nuÎ +; + +225  + `¬¿y +('ty³' => +$ty³ +, + +226 'Ëngth' => +$Ëngth +, + +227 'unsigÃd' => +$unsigÃd +, + +228 'fixed' => +$fixed +); + +229 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/DataDict/Pgsql.php + +1 +cÚn +-> +v¬ch¬_max_Ëngth +.')') + +386 : ( +$Ëngth + ? 'VARCHAR(' .$length . ')' : 'TEXT'); + +394 iàÐ! + `em±y +( +$f›ld +['autoincrement'])) { + +395 iàÐ! + `em±y +( +$f›ld +['length'])) { + +396 +$Ëngth + = +$f›ld +['length']; + +397 ià( +$Ëngth + > 4) { + +403 iàÐ! + `em±y +( +$f›ld +['length'])) { + +404 +$Ëngth + = +$f›ld +['length']; + +405 ià( +$Ëngth + <= 2) { + +407 } + `–£if + ( +$Ëngth + == 3 || $length == 4) { + +409 } + `–£if + ( +$Ëngth + > 4) { + +431 +$Ëngth + = ! + `em±y +( +$f›ld +['length']) ? $field['length'] : 18; + +432 +$sÿË + = ! + `em±y +( +$f›ld +['sÿË']è? $f›ld['sÿË'] : +$this +-> +cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_DECIMAL_PLACES +); + +433  'NUMERIC('. +$Ëngth +.','. +$sÿË +.')'; + +435  +$f›ld +['ty³'] . ( + `is£t +($f›ld['Ëngth']è? '('.$f›ld['Ëngth'].')': +nuÎ +); + +445 +public + +funùiÚ + + $g‘P܏bËDeþ¬©iÚ +( +¬¿y + +$f›ld +) + +447 +$Ëngth + = ( + `is£t +( +$f›ld +['Ëngth'])è? $f›ld['Ëngth'] : +nuÎ +; + +448 ià( +$Ëngth + =ð'-1' && + `is£t +( +$f›ld +['atttypmod'])) { + +449 +$Ëngth + = +$f›ld +['atttypmod'] - 4; + +451 ià(() +$Ëngth + <= 0) { + +452 +$Ëngth + = +nuÎ +; + +454 +$ty³ + = + `¬¿y +(); + +455 +$unsigÃd + = +$fixed + = +nuÎ +; + +457 iàÐ! + `is£t +( +$f›ld +['name'])) { + +458 +$f›ld +['name'] = ''; + +461 +$dbTy³ + = + `¡¹Þow” +( +$f›ld +['type']); + +464 +$deçuÉ + = + `is£t +( +$f›ld +['deçuÉ']è? $f›ld['deçuÉ'] : +nuÎ +; + +465 +$’umName + = +nuÎ +; + +466 ià( + `¡½os +( +$dbTy³ +, '’um'è!=ð +çl£ +){ + +467 +$’umName + = +$dbTy³ +; + +468 +$dbTy³ + = 'enum'; + +471  +$dbTy³ +) { + +473 +$ty³ +[] = 'inet'; + +477 +$ty³ +[] = 'bit'; + +481 +$ty³ +[] = 'integer'; + +482 +$unsigÃd + = +çl£ +; + +483 +$Ëngth + = 2; + +484 ià( +$Ëngth + == '2') { + +485 +$ty³ +[] = 'boolean'; + +486 ià( + `´eg_m©ch +('/^(is|has)/', +$f›ld +['name'])) { + +487 +$ty³ + = + `¬¿y_»v”£ +($type); + +496 +$ty³ +[] = 'integer'; + +497 +$unsigÃd + = +çl£ +; + +498 +$Ëngth + = 4; + +504 +$ty³ +[] = 'integer'; + +505 +$unsigÃd + = +çl£ +; + +506 +$Ëngth + = 8; + +510 +$ty³ +[] = 'boolean'; + +511 +$Ëngth + = 1; + +517 +$fixed + = +çl£ +; + +523 +$ty³ +[] = 'string'; + +524 ià( +$Ëngth + == '1') { + +525 +$ty³ +[] = 'boolean'; + +526 ià( + `´eg_m©ch +('/^(is|has)/', +$f›ld +['name'])) { + +527 +$ty³ + = + `¬¿y_»v”£ +($type); + +529 } + `–£if + ( + `¡r¡r +( +$dbTy³ +, 'text')) { + +530 +$ty³ +[] = 'clob'; + +532 ià( +$fixed + !=ð +çl£ +) { + +533 +$fixed + = +Œue +; + +537 +$ty³ +[] = 'enum'; + +538 +$Ëngth + = $length ? $length :255; + +539 if( +$deçuÉ +) { + +540 +$deçuÉ + = + `´eg_»¶aû +('/\'(\w+)\'.*/', '${1}', $default); + +544 +$ty³ +[] = 'date'; + +545 +$Ëngth + = +nuÎ +; + +551 +$ty³ +[] = 'timestamp'; + +552 +$Ëngth + = +nuÎ +; + +555 +$ty³ +[] = 'time'; + +556 +$Ëngth + = +nuÎ +; + +564 +$ty³ +[] = 'float'; + +569 +$ty³ +[] = 'decimal'; + +584 +$ty³ +[] = 'blob'; + +585 +$Ëngth + = +nuÎ +; + +588 +$ty³ +[] = 'blob'; + +589 +$ty³ +[] = 'clob'; + +590 +$Ëngth + = +nuÎ +; + +593 +$ty³ +[] = 'integer'; + +594 +$ty³ +[] = 'date'; + +595 +$Ëngth + = +nuÎ +; + +598 +$ty³ +[] = +$f›ld +['type']; + +599 +$Ëngth + = + `is£t +( +$f›ld +['Ëngth']è? $f›ld['Ëngth']: +nuÎ +; + +602 +$»t + = + `¬¿y +('ty³' => +$ty³ +, + +603 'Ëngth' => +$Ëngth +, + +604 'unsigÃd' => +$unsigÃd +, + +605 'fixed' => +$fixed +); + +608 ià( +$deçuÉ + !=ð +nuÎ +) { + +609 +$»t +['deçuÉ'] = +$deçuÉ +; + +611 ià( +$’umName + !=ð +nuÎ +) { + +612 +$»t +['’umName'] = +$’umName +; + +614  +$»t +; + +615 + } +} + +639 +public + +funùiÚ + + $g‘IÁeg”Deþ¬©iÚ +( +$Çme +, +$f›ld +) + +647 iàÐ! + `em±y +( +$f›ld +['autoincrement'])) { + +648 +$Çme + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($Çme, +Œue +); + +649  +$Çme + . ' ' . +$this +-> + `g‘N©iveDeþ¬©iÚ +( +$f›ld +); + +652 +$deçuÉ + = ''; + +653 ià( + `¬¿y_key_exi¡s +('deçuÉ', +$f›ld +)) { + +654 ià( +$f›ld +['default'] === '') { + +655 +$f›ld +['deçuÉ'] = + `em±y +($f›ld['nÙnuÎ']è? +nuÎ + : 0; + +658 +$deçuÉ + = ' DEFAULT ' . ( + `is_nuÎ +( +$f›ld +['default']) + +660 : +$this +-> +cÚn +-> + `quÙe +( +$f›ld +['default'], $field['type'])); + +669 +$nÙnuÎ + = + `em±y +( +$f›ld +['notnull']) ? '' : ' NOT NULL'; + +670 +$Çme + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($Çme, +Œue +); + +671  +$Çme + . ' ' . +$this +-> + `g‘N©iveDeþ¬©iÚ +( +$f›ld +è. +$deçuÉ + . +$nÙnuÎ +; + +672 + } +} + +682 +public + +funùiÚ + + $·r£Boޗn +( +$v®ue +) + +684  +$v®ue +; + +685 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/DataDict/Sqlite.php + +1 +cÚn +-> +v¬ch¬_max_Ëngth +.')') + +77 : ( +$Ëngth + ? 'VARCHAR('.$length.')' : 'TEXT'); + +79 iàÐ! + `em±y +( +$f›ld +['length'])) { + +80 +$Ëngth + = +$f›ld +['length']; + +81 ià( +$Ëngth + <= 255) { + +83 } + `–£if + ( +$Ëngth + <= 65535) { + +85 } + `–£if + ( +$Ëngth + <= 16777215) { + +91 iàÐ! + `em±y +( +$f›ld +['length'])) { + +92 +$Ëngth + = +$f›ld +['length']; + +93 ià( +$Ëngth + <= 255) { + +95 } + `–£if + ( +$Ëngth + <= 65535) { + +97 } + `–£if + ( +$Ëngth + <= 16777215) { + +117 +$Ëngth + = ! + `em±y +( +$f›ld +['length']) ? $field['length'] : 18; + +118 +$sÿË + = ! + `em±y +( +$f›ld +['sÿË']è? $f›ld['sÿË'] : +$this +-> +cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_DECIMAL_PLACES +); + +119  'DECIMAL('. +$Ëngth +.','. +$sÿË +.')'; + +121  +$f›ld +['ty³'] . ( + `is£t +($f›ld['Ëngth']è? '('.$f›ld['Ëngth'].')': +nuÎ +); + +130 +public + +funùiÚ + + $g‘P܏bËDeþ¬©iÚ +( +¬¿y + +$f›ld +) + +132 +$e + = + `ex¶ode +('(', +$f›ld +['type']); + +133 +$f›ld +['ty³'] = +$e +[0]; + +134 ià( + `is£t +( +$e +[1])) { + +135 +$Ëngth + = + `Œim +( +$e +[1], ')'); + +136 +$f›ld +['Ëngth'] = +$Ëngth +; + +139 +$dbTy³ + = + `¡¹Þow” +( +$f›ld +['type']); + +141 iàÐ! +$dbTy³ +) { + +142 +throw + +Ãw + + `Doùrše_D©aDiù_Exû±iÚ +('Missing "type" from field definition'); + +145 +$Ëngth + = ( + `is£t +( +$f›ld +['Ëngth'])è? $f›ld['Ëngth'] : +nuÎ +; + +146 +$unsigÃd + = ( + `is£t +( +$f›ld +['unsigÃd'])è? $f›ld['unsigÃd'] : +nuÎ +; + +147 +$fixed + = +nuÎ +; + +148 +$ty³ + = + `¬¿y +(); + +150 iàÐ! + `is£t +( +$f›ld +['name'])) { + +151 +$f›ld +['name'] = ''; + +154  +$dbTy³ +) { + +156 +$ty³ +[] = 'boolean'; + +159 +$ty³ +[] = 'integer'; + +160 +$ty³ +[] = 'boolean'; + +161 ià( + `´eg_m©ch +('/^(is|has)/', +$f›ld +['name'])) { + +162 +$ty³ + = + `¬¿y_»v”£ +($type); + +164 +$unsigÃd + = + `´eg_m©ch +('/ unsigÃd/i', +$f›ld +['type']); + +165 +$Ëngth + = 1; + +168 +$ty³ +[] = 'integer'; + +169 +$unsigÃd + = + `´eg_m©ch +('/ unsigÃd/i', +$f›ld +['type']); + +170 +$Ëngth + = 2; + +173 +$ty³ +[] = 'integer'; + +174 +$unsigÃd + = + `´eg_m©ch +('/ unsigÃd/i', +$f›ld +['type']); + +175 +$Ëngth + = 3; + +180 +$ty³ +[] = 'integer'; + +181 +$unsigÃd + = + `´eg_m©ch +('/ unsigÃd/i', +$f›ld +['type']); + +182 +$Ëngth + = 4; + +186 +$ty³ +[] = 'integer'; + +187 +$unsigÃd + = + `´eg_m©ch +('/ unsigÃd/i', +$f›ld +['type']); + +188 +$Ëngth + = 8; + +201 +$fixed + = +çl£ +; + +203 +$ty³ +[] = 'text'; + +204 ià( +$Ëngth + == '1') { + +205 +$ty³ +[] = 'boolean'; + +206 ià( + `´eg_m©ch +('/^(is|has)/', +$f›ld +['name'])) { + +207 +$ty³ + = + `¬¿y_»v”£ +($type); + +209 } + `–£if + ( + `¡r¡r +( +$dbTy³ +, 'text')) { + +210 +$ty³ +[] = 'clob'; + +212 ià( +$fixed + !=ð +çl£ +) { + +213 +$fixed + = +Œue +; + +217 +$ty³ +[] = 'date'; + +218 +$Ëngth + = +nuÎ +; + +222 +$ty³ +[] = 'timestamp'; + +223 +$Ëngth + = +nuÎ +; + +226 +$ty³ +[] = 'time'; + +227 +$Ëngth + = +nuÎ +; + +232 +$ty³ +[] = 'float'; + +233 +$Ëngth + = +nuÎ +; + +237 +$ty³ +[] = 'decimal'; + +238 +$Ëngth + = +nuÎ +; + +244 +$ty³ +[] = 'blob'; + +245 +$Ëngth + = +nuÎ +; + +248 +$ty³ +[] = 'integer'; + +249 +$ty³ +[] = 'date'; + +250 +$Ëngth + = +nuÎ +; + +253 +$ty³ +[] = +$f›ld +['type']; + +254 +$Ëngth + = + `is£t +( +$f›ld +['Ëngth']è? $f›ld['Ëngth']: +nuÎ +; + +257  + `¬¿y +('ty³' => +$ty³ +, + +258 'Ëngth' => +$Ëngth +, + +259 'unsigÃd' => +$unsigÃd +, + +260 'fixed' => +$fixed +); + +261 + } +} + +289 +public + +funùiÚ + + $g‘IÁeg”Deþ¬©iÚ +( +$Çme +, +¬¿y + +$f›ld +) + +291 +$deçuÉ + = +$autošc + = ''; + +292 +$ty³ + = +$this +-> + `g‘N©iveDeþ¬©iÚ +( +$f›ld +); + +294 +$autošüem’t + = + `is£t +( +$f›ld +['autoincrement']) && $field['autoincrement']; + +296 ià( +$autošüem’t +) { + +297 +$autošc + = ' PRIMARY KEY AUTOINCREMENT'; + +298 +$ty³ + = 'INTEGER'; + +299 } + `–£if + ( + `¬¿y_key_exi¡s +('deçuÉ', +$f›ld +)) { + +300 ià( +$f›ld +['default'] === '') { + +301 +$f›ld +['deçuÉ'] = + `em±y +($f›ld['nÙnuÎ']è? +nuÎ + : 0; + +304 +$deçuÉ + = ' DEFAULT ' . ( + `is_nuÎ +( +$f›ld +['default']) + +306 : +$this +-> +cÚn +-> + `quÙe +( +$f›ld +['default'], $field['type'])); + +313 +$nÙnuÎ + = ( + `is£t +( +$f›ld +['notnull']) && $field['notnull']) ? ' NOT NULL' : ''; + +316 +$unsigÃd + = ( + `is£t +( +$f›ld +['unsigÃd']è&& $f›ld['unsigÃd'] && ! +$autošüem’t +) ? ' UNSIGNED' : ''; + +318 +$Çme + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($Çme, +Œue +); + +319  +$Çme + . ' ' . +$ty³ + . +$unsigÃd + . +$deçuÉ + . +$nÙnuÎ + . +$autošc +; + +320 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Event.php + +1 +_£qu’û + = +£lf +:: +$_ÃxtSequ’û +++; + +129 +$this +-> +_švok” + = +$švok” +; + +130 +$this +-> +_code + = +$code +; + +131 +$this +-> +_qu”y + = +$qu”y +; + +132 +$this +-> +_·¿ms + = +$·¿ms +; + +140 +public + +funùiÚ + + $g‘Qu”y +() + +142  +$this +-> +_qu”y +; + +143 + } +} + +151 +public + +funùiÚ + + $g‘Name +() + +153  +$this +-> +_code +) { + +154  +£lf +:: +CONN_QUERY +: + +156  +£lf +:: +CONN_EXEC +: + +158  +£lf +:: +CONN_PREPARE +: + +160  +£lf +:: +CONN_CONNECT +: + +162  +£lf +:: +CONN_CLOSE +: + +164  +£lf +:: +CONN_ERROR +: + +167  +£lf +:: +STMT_EXECUTE +: + +169  +£lf +:: +STMT_FETCH +: + +171  +£lf +:: +STMT_FETCHALL +: + +174  +£lf +:: +TX_BEGIN +: + +176  +£lf +:: +TX_COMMIT +: + +178  +£lf +:: +TX_ROLLBACK +: + +181  +£lf +:: +SAVEPOINT_CREATE +: + +183  +£lf +:: +SAVEPOINT_ROLLBACK +: + +185  +£lf +:: +SAVEPOINT_COMMIT +: + +188  +£lf +:: +RECORD_DELETE +: + +190  +£lf +:: +RECORD_SAVE +: + +192  +£lf +:: +RECORD_UPDATE +: + +194  +£lf +:: +RECORD_INSERT +: + +196  +£lf +:: +RECORD_SERIALIZE +: + +198  +£lf +:: +RECORD_UNSERIALIZE +: + +200  +£lf +:: +RECORD_DQL_SELECT +: + +202  +£lf +:: +RECORD_DQL_DELETE +: + +204  +£lf +:: +RECORD_DQL_UPDATE +: + +206  +£lf +:: +RECORD_VALIDATE +: + +209 + } +} + +216 +public + +funùiÚ + + $g‘Code +() + +218  +$this +-> +_code +; + +219 + } +} + +228 +public + +funùiÚ + + $__g‘ +( +$ÝtiÚ +) + +230 iàÐ! + `is£t +( +$this +-> +_ÝtiÚs +[ +$ÝtiÚ +])) { + +231  +nuÎ +; + +234  +$this +-> +_ÝtiÚs +[ +$ÝtiÚ +]; + +235 + } +} + +244 +public + +funùiÚ + + $skO³¿tiÚ +() + +246 +$this +-> +_ÝtiÚs +['skO³¿tiÚ'] = +Œue +; + +248  +$this +; + +249 + } +} + +259 +public + +funùiÚ + + $__£t +( +$ÝtiÚ +, +$v®ue +) + +261 +$this +-> +_ÝtiÚs +[ +$ÝtiÚ +] = +$v®ue +; + +263  +$this +; + +264 + } +} + +274 +public + +funùiÚ + + $£t +( +$ÝtiÚ +, & +$v®ue +) + +276 +$this +-> +_ÝtiÚs +[ +$ÝtiÚ +] =& +$v®ue +; + +278  +$this +; + +279 + } +} + +287 +public + +funùiÚ + + $¡¬t +() + +289 +$this +-> +_¡¬‹dMiüÙime + = + `miüÙime +( +Œue +); + +290 + } +} + +298 +public + +funùiÚ + + $hasEnded +() + +300  ( +$this +-> +_’dedMiüÙime + !ð +nuÎ +); + +301 + } +} + +309 +public + +funùiÚ + + $’d +() + +311 +$this +-> +_’dedMiüÙime + = + `miüÙime +( +Œue +); + +313  +$this +; + +314 + } +} + +322 +public + +funùiÚ + + $g‘Sequ’û +() + +324  +$this +-> +_£qu’û +; + +325 + } +} + +334 +public + +funùiÚ + + $g‘Invok” +() + +336  +$this +-> +_švok” +; + +337 + } +} + +346 +public + +funùiÚ + + $£tInvok” +( +$švok” +) + +348 +$this +-> +_švok” + = +$švok” +; + +349 + } +} + +357 +public + +funùiÚ + + $g‘P¬ams +() + +359  +$this +-> +_·¿ms +; + +360 + } +} + +368 +public + +funùiÚ + + $g‘EÏp£dSecs +() + +370 ià( + `is_nuÎ +( +$this +-> +_’dedMiüÙime +)) { + +371  +çl£ +; + +373  ( +$this +-> +_’dedMiüÙime + - $this-> +_¡¬‹dMiüÙime +); + +374 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/EventListener.php + +1 +_li¡’”s +[] = +$li¡’” +; + +60 +$this +-> +_li¡’”s +[ +$Çme +] = +$li¡’” +; + +71 +public + +funùiÚ + + $g‘ +( +$key +) + +73 iàÐ! + `is£t +( +$this +-> +_li¡’”s +[ +$key +])) { + +74  +nuÎ +; + +76  +$this +-> +_li¡’”s +[ +$key +]; + +77 + } +} + +86 +public + +funùiÚ + + $£t +( +$key +, +$li¡’” +) + +88 +$this +-> +_li¡’”s +[ +$key +] = +$li¡’” +; + +89 + } +} + +98 +public + +funùiÚ + + $ÚLßd +( +Doùrše_RecÜd + +$»cÜd +) + +100 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +101 +$li¡’” +-> + `ÚLßd +( +$»cÜd +); + +103 + } +} + +113 +public + +funùiÚ + + $ÚP»Lßd +( +Doùrše_RecÜd + +$»cÜd +) + +115 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +116 +$li¡’” +-> + `ÚP»Lßd +( +$»cÜd +); + +118 + } +} + +127 +public + +funùiÚ + + $ÚS˕ +( +Doùrše_RecÜd + +$»cÜd +) + +129 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +130 +$li¡’” +-> + `ÚS˕ +( +$»cÜd +); + +132 + } +} + +141 +public + +funùiÚ + + $ÚWakeUp +( +Doùrše_RecÜd + +$»cÜd +) + +143 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +144 +$li¡’” +-> + `ÚWakeUp +( +$»cÜd +); + +146 + } +} + +155 +public + +funùiÚ + + $po¡Clo£ +( +Doùrše_Ev’t + +$ev’t +) + +157 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +158 +$li¡’” +-> + `po¡Clo£ +( +$ev’t +); + +160 + } +} + +169 +public + +funùiÚ + + $´eClo£ +( +Doùrše_Ev’t + +$ev’t +) + +171 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +172 +$li¡’” +-> + `´eClo£ +( +$ev’t +); + +174 + } +} + +183 +public + +funùiÚ + + $ÚO³n +( +Doùrše_CÚÃùiÚ + +$cÚÃùiÚ +) + +185 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +186 +$li¡’” +-> + `ÚO³n +( +$cÚÃùiÚ +); + +188 + } +} + +197 +public + +funùiÚ + + $po¡T¿n§ùiÚComm™ +( +Doùrše_Ev’t + +$ev’t +) + +199 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +200 +$li¡’” +-> + `po¡T¿n§ùiÚComm™ +( +$ev’t +); + +202 + } +} + +211 +public + +funùiÚ + + $´eT¿n§ùiÚComm™ +( +Doùrše_Ev’t + +$ev’t +) + +213 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +214 +$li¡’” +-> + `´eT¿n§ùiÚComm™ +( +$ev’t +); + +216 + } +} + +225 +public + +funùiÚ + + $po¡T¿n§ùiÚRÞlback +( +Doùrše_Ev’t + +$ev’t +) + +227 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +228 +$li¡’” +-> + `po¡T¿n§ùiÚRÞlback +( +$ev’t +); + +230 + } +} + +239 +public + +funùiÚ + + $´eT¿n§ùiÚRÞlback +( +Doùrše_Ev’t + +$ev’t +) + +241 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +242 +$li¡’” +-> + `´eT¿n§ùiÚRÞlback +( +$ev’t +); + +244 + } +} + +253 +public + +funùiÚ + + $po¡T¿n§ùiÚBegš +( +Doùrše_Ev’t + +$ev’t +) + +255 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +256 +$li¡’” +-> + `po¡T¿n§ùiÚBegš +( +$ev’t +); + +258 + } +} + +267 +public + +funùiÚ + + $´eT¿n§ùiÚBegš +( +Doùrše_Ev’t + +$ev’t +) + +269 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +270 +$li¡’” +-> + `´eT¿n§ùiÚBegš +( +$ev’t +); + +272 + } +} + +282 +public + +funùiÚ + + $po¡Sav•oštComm™ +( +Doùrše_Ev’t + +$ev’t +) + +284 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +285 +$li¡’” +-> + `po¡Sav•oštComm™ +( +$ev’t +); + +287 + } +} + +297 +public + +funùiÚ + + $´eSav•oštComm™ +( +Doùrše_Ev’t + +$ev’t +) + +299 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +300 +$li¡’” +-> + `´eSav•oštComm™ +( +$ev’t +); + +302 + } +} + +312 +public + +funùiÚ + + $po¡Sav•oštRÞlback +( +Doùrše_Ev’t + +$ev’t +) + +314 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +315 +$li¡’” +-> + `po¡Sav•oštRÞlback +( +$ev’t +); + +317 + } +} + +327 +public + +funùiÚ + + $´eSav•oštRÞlback +( +Doùrše_Ev’t + +$ev’t +) + +329 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +330 +$li¡’” +-> + `´eSav•oštRÞlback +( +$ev’t +); + +332 + } +} + +342 +public + +funùiÚ + + $po¡Sav•oštC»©e +( +Doùrše_Ev’t + +$ev’t +) + +344 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +345 +$li¡’” +-> + `po¡Sav•oštC»©e +( +$ev’t +); + +347 + } +} + +357 +public + +funùiÚ + + $´eSav•oštC»©e +( +Doùrše_Ev’t + +$ev’t +) + +359 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +360 +$li¡’” +-> + `´eSav•oštC»©e +( +$ev’t +); + +362 + } +} + +372 +public + +funùiÚ + + $ÚCÞËùiÚD–‘e +( +Doùrše_CÞËùiÚ + +$cÞËùiÚ +) + +374 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +375 +$li¡’” +-> + `ÚCÞËùiÚD–‘e +( +$cÞËùiÚ +); + +377 + } +} + +386 +public + +funùiÚ + + $ÚP»CÞËùiÚD–‘e +( +Doùrše_CÞËùiÚ + +$cÞËùiÚ +) + +388 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +389 +$li¡’” +-> + `ÚP»CÞËùiÚD–‘e +( +$cÞËùiÚ +); + +391 + } +} + +393 +public + +funùiÚ + + $po¡CÚÃù +( +Doùrše_Ev’t + +$ev’t +) + +395 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +396 +$li¡’” +-> + `po¡CÚÃù +( +$ev’t +); + +398 + } +} + +400 +public + +funùiÚ + + $´eCÚÃù +( +Doùrše_Ev’t + +$ev’t +) + +402 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +403 +$li¡’” +-> + `´eCÚÃù +( +$ev’t +); + +405 + } +} + +407 +public + +funùiÚ + + $´eQu”y +( +Doùrše_Ev’t + +$ev’t +) + +409 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +410 +$li¡’” +-> + `´eQu”y +( +$ev’t +); + +412 + } +} + +414 +public + +funùiÚ + + $po¡Qu”y +( +Doùrše_Ev’t + +$ev’t +) + +416 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +417 +$li¡’” +-> + `po¡Qu”y +( +$ev’t +); + +419 + } +} + +421 +public + +funùiÚ + + $´eP»·» +( +Doùrše_Ev’t + +$ev’t +) + +423 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +424 +$li¡’” +-> + `´eP»·» +( +$ev’t +); + +426 + } +} + +428 +public + +funùiÚ + + $po¡P»·» +( +Doùrše_Ev’t + +$ev’t +) + +430 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +431 +$li¡’” +-> + `po¡P»·» +( +$ev’t +); + +433 + } +} + +435 +public + +funùiÚ + + $´eExec +( +Doùrše_Ev’t + +$ev’t +) + +437 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +438 +$li¡’” +-> + `´eExec +( +$ev’t +); + +440 + } +} + +442 +public + +funùiÚ + + $po¡Exec +( +Doùrše_Ev’t + +$ev’t +) + +444 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +445 +$li¡’” +-> + `po¡Exec +( +$ev’t +); + +447 + } +} + +449 +public + +funùiÚ + + $´eE¼Ü +( +Doùrše_Ev’t + +$ev’t +) + +451 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +452 +$li¡’” +-> + `´eE¼Ü +( +$ev’t +); + +454 + } +} + +456 +public + +funùiÚ + + $po¡E¼Ü +( +Doùrše_Ev’t + +$ev’t +) + +458 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +459 +$li¡’” +-> + `po¡E¼Ü +( +$ev’t +); + +461 + } +} + +463 +public + +funùiÚ + + $´eF‘ch +( +Doùrše_Ev’t + +$ev’t +) + +465 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +466 +$li¡’” +-> + `´eF‘ch +( +$ev’t +); + +468 + } +} + +470 +public + +funùiÚ + + $po¡F‘ch +( +Doùrše_Ev’t + +$ev’t +) + +472 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +473 +$li¡’” +-> + `po¡F‘ch +( +$ev’t +); + +475 + } +} + +477 +public + +funùiÚ + + $´eF‘chAÎ +( +Doùrše_Ev’t + +$ev’t +) + +479 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +480 +$li¡’” +-> + `´eF‘chAÎ +( +$ev’t +); + +482 + } +} + +484 +public + +funùiÚ + + $po¡F‘chAÎ +( +Doùrše_Ev’t + +$ev’t +) + +486 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +487 +$li¡’” +-> + `po¡F‘chAÎ +( +$ev’t +); + +489 + } +} + +491 +public + +funùiÚ + + $´eStmtExecu‹ +( +Doùrše_Ev’t + +$ev’t +) + +493 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +494 +$li¡’” +-> + `´eStmtExecu‹ +( +$ev’t +); + +496 + } +} + +498 +public + +funùiÚ + + $po¡StmtExecu‹ +( +Doùrše_Ev’t + +$ev’t +) + +500 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +501 +$li¡’” +-> + `po¡StmtExecu‹ +( +$ev’t +); + +503 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/EventListener/Exception.php + +1 'unknownƒrror', + +40 +Doùrše_CÜe +:: +ERR_ALREADY_EXISTS + => 'alreadyƒxists', + +41 +Doùrše_CÜe +:: +ERR_CANNOT_CREATE + => 'can‚ot create', + +42 +Doùrše_CÜe +:: +ERR_CANNOT_ALTER + => 'can‚ot‡lter', + +43 +Doùrše_CÜe +:: +ERR_CANNOT_REPLACE + => 'can‚ot„eplace', + +44 +Doùrše_CÜe +:: +ERR_CANNOT_DELETE + => 'can‚ot delete', + +45 +Doùrše_CÜe +:: +ERR_CANNOT_DROP + => 'can‚ot drop', + +46 +Doùrše_CÜe +:: +ERR_CONSTRAINT + => 'constraint violation', + +47 +Doùrše_CÜe +:: +ERR_CONSTRAINT_NOT_NULL +=> 'null value violates‚ot-null constraint', + +48 +Doùrše_CÜe +:: +ERR_DIVZERO + => 'division by zero', + +49 +Doùrše_CÜe +:: +ERR_INVALID + => 'invalid', + +50 +Doùrše_CÜe +:: +ERR_INVALID_DATE + => 'invalid date orime', + +51 +Doùrše_CÜe +:: +ERR_INVALID_NUMBER + => 'invalid‚umber', + +52 +Doùrše_CÜe +:: +ERR_MISMATCH + => 'mismatch', + +53 +Doùrše_CÜe +:: +ERR_NODBSELECTED + => 'no database selected', + +54 +Doùrše_CÜe +:: +ERR_NOSUCHFIELD + => 'no such field', + +55 +Doùrše_CÜe +:: +ERR_NOSUCHTABLE + => 'no suchable', + +56 +Doùrše_CÜe +:: +ERR_NOT_CAPABLE + => 'Doctrine backend‚ot capable', + +57 +Doùrše_CÜe +:: +ERR_NOT_FOUND + => 'not found', + +58 +Doùrše_CÜe +:: +ERR_NOT_LOCKED + => 'not†ocked', + +59 +Doùrše_CÜe +:: +ERR_SYNTAX + => 'syntaxƒrror', + +60 +Doùrše_CÜe +:: +ERR_UNSUPPORTED + => 'not supported', + +61 +Doùrše_CÜe +:: +ERR_VALUE_COUNT_ON_ROW + => 'value count on„ow', + +62 +Doùrše_CÜe +:: +ERR_INVALID_DSN + => 'invalid DSN', + +63 +Doùrše_CÜe +:: +ERR_CONNECT_FAILED + => 'connect failed', + +64 +Doùrše_CÜe +:: +ERR_NEED_MORE_DATA + => 'insufficient data supplied', + +65 +Doùrše_CÜe +:: +ERR_EXTENSION_NOT_FOUND +=> 'extension‚ot found', + +66 +Doùrše_CÜe +:: +ERR_NOSUCHDB + => 'no such database', + +67 +Doùrše_CÜe +:: +ERR_ACCESS_VIOLATION + => 'insufficient…ermissions', + +68 +Doùrše_CÜe +:: +ERR_LOADMODULE + => 'error while including on demand module', + +69 +Doùrše_CÜe +:: +ERR_TRUNCATED + => 'truncated', + +70 +Doùrše_CÜe +:: +ERR_DEADLOCK + => 'deadlock detected', + +82 +public + +funùiÚ + + $”rÜMes§ge +( +$v®ue + = +nuÎ +) + +84 ià( + `is_nuÎ +( +$v®ue +)) { + +85  +£lf +:: +$_”rÜMes§ges +; + +88  + `is£t +( +£lf +:: +$_”rÜMes§ges +[ +$v®ue +]) ? + +89 +£lf +:: +$_”rÜMes§ges +[ +$v®ue +] : s–f::$_”rÜMes§ges[ +Doùrše_CÜe +:: +ERR +]; + +92 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Export.php + +1 +Œue +, + +57 +public + +funùiÚ + + $drÝD©aba£ +( +$d©aba£ +) + +59 + `fܗch + (( +¬¿y +è +$this +-> + `drÝD©aba£Sql +( +$d©aba£ +è +as + +$qu”y +) { + +60 +$this +-> +cÚn +-> + `execu‹ +( +$qu”y +); + +71 +public + +funùiÚ + + $drÝD©aba£Sql +( +$d©aba£ +) + +73 +throw + +Ãw + + `Doùrše_ExpÜt_Exû±iÚ +('Drop database‚ot supported byhis driver.'); + +74 + } +} + +83 +public + +funùiÚ + + $drÝTabËSql +( +$bË +) + +85  'DROP TABLE ' . +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$bË +); + +86 + } +} + +95 +public + +funùiÚ + + $drÝTabË +( +$bË +) + +97 +$this +-> +cÚn +-> + `execu‹ +($this-> + `drÝTabËSql +( +$bË +)); + +98 + } +} + +107 +public + +funùiÚ + + $drÝIndex +( +$bË +, +$Çme +) + +109  +$this +-> +cÚn +-> + `exec +($this-> + `drÝIndexSql +( +$bË +, +$Çme +)); + +110 + } +} + +119 +public + +funùiÚ + + $drÝIndexSql +( +$bË +, +$Çme +) + +121 +$Çme + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($this->cÚn-> +fÜm©‹r +-> + `g‘IndexName +($name)); + +123  'DROP INDEX ' . +$Çme +; + +124 + } +} + +134 +public + +funùiÚ + + $drÝCÚ¡¿št +( +$bË +, +$Çme +, +$´im¬y + = +çl£ +) + +136 +$bË + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($table); + +137 +$Çme + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($name); + +139  +$this +-> +cÚn +-> + `exec +('ALTER TABLE ' . +$bË + . ' DROP CONSTRAINT ' . +$Çme +); + +140 + } +} + +149 +public + +funùiÚ + + $drÝFÜeignKey +( +$bË +, +$Çme +) + +151  +$this +-> + `drÝCÚ¡¿št +( +$bË +, $this-> +cÚn +-> +fÜm©‹r +-> + `g‘FÜeignKeyName +( +$Çme +)); + +152 + } +} + +163 +public + +funùiÚ + + $drÝSequ’û +( +$£qu’ûName +) + +165 +$this +-> +cÚn +-> + `exec +($this-> + `drÝSequ’ûSql +( +$£qu’ûName +)); + +166 + } +} + +176 +public + +funùiÚ + + $drÝSequ’ûSql +( +$£qu’ûName +) + +178 +throw + +Ãw + + `Doùrše_ExpÜt_Exû±iÚ +('Drop sequence‚ot supported byhis driver.'); + +179 + } +} + +188 +public + +funùiÚ + + $ü—‹D©aba£ +( +$d©aba£ +) + +190 +$this +-> +cÚn +-> + `execu‹ +($this-> + `ü—‹D©aba£Sql +( +$d©aba£ +)); + +191 + } +} + +200 +public + +funùiÚ + + $ü—‹D©aba£Sql +( +$d©aba£ +) + +202 +throw + +Ãw + + `Doùrše_ExpÜt_Exû±iÚ +('Create database‚ot supported byhis driver.'); + +203 + } +} + +233 +public + +funùiÚ + +ü—‹TabËSql +( +$Çme +, +¬¿y + +$f›lds +,‡¼ay +$ÝtiÚs + = + $¬¿y +()) + +235 iàÐ! +$Çme +) { + +236 +throw + +Ãw + + `Doùrše_ExpÜt_Exû±iÚ +('no validable‚ame specified'); + +239 ià( + `em±y +( +$f›lds +)) { + +240 +throw + +Ãw + + `Doùrše_ExpÜt_Exû±iÚ +('nØf›ld ¥ecif›d f܁abË ' . +$Çme +); + +243 +$qu”yF›lds + = +$this +-> + `g‘F›ldDeþ¬©iÚLi¡ +( +$f›lds +); + +246 ià( + `is£t +( +$ÝtiÚs +['´im¬y']è&& ! + `em±y +($options['primary'])) { + +247 +$´im¬yKeys + = + `¬¿y_m­ +( + `¬¿y +( +$this +-> +cÚn +, 'quÙeId’tif›r'), + `¬¿y_v®ues +( +$ÝtiÚs +['primary'])); + +248 +$qu”yF›lds + .ð', PRIMARY KEY(' . + `im¶ode +(', ', +$´im¬yKeys +) . ')'; + +251 ià( + `is£t +( +$ÝtiÚs +['šdexes']è&& ! + `em±y +($options['indexes'])) { + +252 + `fܗch +( +$ÝtiÚs +['šdexes'] +as + +$šdex + => +$defš™iÚ +) { + +253 +$šdexDeþ¬©iÚ + = +$this +-> + `g‘IndexDeþ¬©iÚ +( +$šdex +, +$defš™iÚ +); + +255 iàÐ! + `is_nuÎ +( +$šdexDeþ¬©iÚ +)) { + +256 +$qu”yF›lds + .ð', '. +$šdexDeþ¬©iÚ +; + +261 +$qu”y + = 'CREATE TABLE ' . +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$Çme +, +Œue +è. ' (' . +$qu”yF›lds +; + +263 +$check + = +$this +-> + `g‘CheckDeþ¬©iÚ +( +$f›lds +); + +265 iàÐ! + `em±y +( +$check +)) { + +266 +$qu”y + .ð', ' . +$check +; + +269 +$qu”y + .= ')'; + +271 +$sql +[] = +$qu”y +; + +273 ià( + `is£t +( +$ÝtiÚs +['foreignKeys'])) { + +275 + `fܗch + (( +¬¿y +è +$ÝtiÚs +['fÜeignKeys'] +as + +$k + => +$defš™iÚ +) { + +276 ià( + `is_¬¿y +( +$defš™iÚ +)) { + +277 +$sql +[] = +$this +-> + `ü—‹FÜeignKeySql +( +$Çme +, +$defš™iÚ +); + +281  +$sql +; + +282 + } +} + +294 +public + +funùiÚ + +ü—‹TabË +( +$Çme +, +¬¿y + +$f›lds +,‡¼ay +$ÝtiÚs + = + $¬¿y +()) + +298 +$couÁ + = 0; + +299 + `fܗch + ( +$f›lds + +as + +$f›ldName + => +$f›ld +) { + +300 ià( + `is£t +( +$f›ld +['primary']) && $field['primary']) { + +301 ià( +$couÁ + == 0) { + +302 +$ÝtiÚs +['´im¬y'] = + `¬¿y +(); + +304 +$couÁ +++; + +305 +$ÝtiÚs +['´im¬y'][] = +$f›ldName +; + +309 +$sql + = ( +¬¿y +è +$this +-> + `ü—‹TabËSql +( +$Çme +, +$f›lds +, +$ÝtiÚs +); + +311 + `fܗch + ( +$sql + +as + +$qu”y +) { + +312 +$this +-> +cÚn +-> + `execu‹ +( +$qu”y +); + +314 + } +} + +330 +public + +funùiÚ + +ü—‹Sequ’û +( +$£qName +, +$¡¬t + = 1, +¬¿y + +$ÝtiÚs + = + $¬¿y +()) + +332  +$this +-> +cÚn +-> + `execu‹ +($this-> + `ü—‹Sequ’ûSql +( +$£qName +, +$¡¬t + = 1, +$ÝtiÚs +)); + +333 + } +} + +350 +public + +funùiÚ + +ü—‹Sequ’ûSql +( +$£qName +, +$¡¬t + = 1, +¬¿y + +$ÝtiÚs + = + $¬¿y +()) + +352 +throw + +Ãw + + `Doùrše_ExpÜt_Exû±iÚ +('Create sequence‚ot supported byhis driver.'); + +353 + } +} + +376 +public + +funùiÚ + + $ü—‹CÚ¡¿št +( +$bË +, +$Çme +, +$defš™iÚ +) + +378 +$sql + = +$this +-> + `ü—‹CÚ¡¿štSql +( +$bË +, +$Çme +, +$defš™iÚ +); + +380  +$this +-> +cÚn +-> + `exec +( +$sql +); + +381 + } +} + +404 +public + +funùiÚ + + $ü—‹CÚ¡¿štSql +( +$bË +, +$Çme +, +$defš™iÚ +) + +406 +$bË + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($table); + +407 +$Çme + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($this->cÚn-> +fÜm©‹r +-> + `g‘IndexName +($name)); + +408 +$qu”y + = 'ALTER TABLE ' . +$bË + . ' ADD CONSTRAINT ' . +$Çme +; + +410 ià( + `is£t +( +$defš™iÚ +['primary']) && $definition['primary']) { + +411 +$qu”y + .= ' PRIMARY KEY'; + +412 } + `–£if + ( + `is£t +( +$defš™iÚ +['unique']) && $definition['unique']) { + +413 +$qu”y + .= ' UNIQUE'; + +416 +$f›lds + = + `¬¿y +(); + +417 + `fܗch + ( + `¬¿y_keys +( +$defš™iÚ +['f›lds']è +as + +$f›ld +) { + +418 +$f›lds +[] = +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$f›ld +, +Œue +); + +420 +$qu”y + .ð' ('. + `im¶ode +(', ', +$f›lds +) . ')'; + +422  +$qu”y +; + +423 + } +} + +456 +public + +funùiÚ + + $ü—‹Index +( +$bË +, +$Çme +, +¬¿y + +$defš™iÚ +) + +458  +$this +-> +cÚn +-> + `execu‹ +($this-> + `ü—‹IndexSql +( +$bË +, +$Çme +, +$defš™iÚ +)); + +459 + } +} + +470 +public + +funùiÚ + + $ü—‹IndexSql +( +$bË +, +$Çme +, +¬¿y + +$defš™iÚ +) + +472 +$bË + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($table); + +473 +$Çme + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($name); + +474 +$ty³ + = ''; + +476 ià( + `is£t +( +$defš™iÚ +['type'])) { + +477  + `¡¹Þow” +( +$defš™iÚ +['type'])) { + +479 +$ty³ + = + `¡¹ouµ” +( +$defš™iÚ +['type']) . ' '; + +482 +throw + +Ãw + + `Doùrše_ExpÜt_Exû±iÚ +( + +483 'UnknowÀty³ ' . +$defš™iÚ +['ty³'] . ' fÜ index ' . +$Çme + . ' iÀbË ' . +$bË + + +488 +$qu”y + = 'CREATE ' . +$ty³ + . 'INDEX ' . +$Çme + . ' ON ' . +$bË +; + +490 +$f›lds + = + `¬¿y +(); + +491 + `fܗch + ( +$defš™iÚ +['f›lds'] +as + +$f›ld +) { + +492 +$f›lds +[] = +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$f›ld +); + +494 +$qu”y + .ð' (' . + `im¶ode +(', ', +$f›lds +) . ')'; + +496  +$qu”y +; + +497 + } +} + +505 +public + +funùiÚ + + $ü—‹FÜeignKeySql +( +$bË +, +¬¿y + +$defš™iÚ +) + +507 +$bË + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($table); + +508 +$qu”y + = 'ALTER TABLE ' . +$bË + . ' ADD ' . +$this +-> + `g‘FÜeignKeyDeþ¬©iÚ +( +$defš™iÚ +); + +510  +$qu”y +; + +511 + } +} + +520 +public + +funùiÚ + + $ü—‹FÜeignKey +( +$bË +, +¬¿y + +$defš™iÚ +) + +522 +$sql + = +$this +-> + `ü—‹FÜeignKeySql +( +$bË +, +$defš™iÚ +); + +524  +$this +-> +cÚn +-> + `execu‹ +( +$sql +); + +525 + } +} + +616 +public + +funùiÚ + + $®‹rTabË +( +$Çme +, +¬¿y + +$chªges +, +$check + = +çl£ +) + +618 +$sql + = +$this +-> + `®‹rTabËSql +( +$Çme +, +$chªges +, +$check +); + +620 ià( + `is_¡ršg +( +$sql +) && $sql) { + +621 +$this +-> +cÚn +-> + `execu‹ +( +$sql +); + +623 + } +} + +637 +public + +funùiÚ + + $®‹rTabËSql +( +$Çme +, +¬¿y + +$chªges +, +$check + = +çl£ +) + +639 +throw + +Ãw + + `Doùrše_ExpÜt_Exû±iÚ +('Alterable‚ot supported byhis driver.'); + +640 + } +} + +671 +public + +funùiÚ + + $g‘F›ldDeþ¬©iÚLi¡ +( +¬¿y + +$f›lds +) + +673 + `fܗch + ( +$f›lds + +as + +$f›ldName + => +$f›ld +) { + +674 +$qu”y + = +$this +-> + `g‘Deþ¬©iÚ +( +$f›ldName +, +$f›ld +); + +676 +$qu”yF›lds +[] = +$qu”y +; + +678  + `im¶ode +(', ', +$qu”yF›lds +); + +679 + } +} + +717 +public + +funùiÚ + + $g‘Deþ¬©iÚ +( +$Çme +, +¬¿y + +$f›ld +) + +720 +$deçuÉ + = +$this +-> + `g‘DeçuÉF›ldDeþ¬©iÚ +( +$f›ld +); + +722 +$ch¬£t + = ( + `is£t +( +$f›ld +['charset']) && $field['charset']) ? + +723 ' ' . +$this +-> + `g‘Ch¬£tF›ldDeþ¬©iÚ +( +$f›ld +['charset']) : ''; + +725 +$cÞÏtiÚ + = ( + `is£t +( +$f›ld +['collation']) && $field['collation']) ? + +726 ' ' . +$this +-> + `g‘CÞÏtiÚF›ldDeþ¬©iÚ +( +$f›ld +['collation']) : ''; + +728 +$nÙnuÎ + = +$this +-> + `g‘NÙNuÎF›ldDeþ¬©iÚ +( +$f›ld +); + +730 +$unique + = ( + `is£t +( +$f›ld +['unique']) && $field['unique']) ? + +731 ' ' . +$this +-> + `g‘UniqueF›ldDeþ¬©iÚ +() : ''; + +733 +$check + = ( + `is£t +( +$f›ld +['check']) && $field['check']) ? + +734 ' ' . +$f›ld +['check'] : ''; + +736 +$m‘hod + = 'g‘' . +$f›ld +['type'] . 'Declaration'; + +738 +Œy + { + +739 ià( + `m‘hod_exi¡s +( +$this +-> +cÚn +-> +d©aDiù +, +$m‘hod +)) { + +740  +$this +-> +cÚn +-> +d©aDiù +-> + `$m‘hod +( +$Çme +, +$f›ld +); + +742 +$dec + = +$this +-> +cÚn +-> +d©aDiù +-> + `g‘N©iveDeþ¬©iÚ +( +$f›ld +); + +745  +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$Çme +, +Œue +) + +746 . ' ' . +$dec + . +$ch¬£t + . +$deçuÉ + . +$nÙnuÎ + . +$unique + . +$check + . +$cÞÏtiÚ +; + +747 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +748 +throw + +Ãw + + `Doùrše_Exû±iÚ +('Around f›ld ' . +$Çme + . ': ' . +$e +-> + `g‘Mes§ge +()); + +751 + } +} + +761 +public + +funùiÚ + + $g‘DeçuÉF›ldDeþ¬©iÚ +( +$f›ld +) + +763 +$deçuÉ + = ''; + +765 ià( + `¬¿y_key_exi¡s +('deçuÉ', +$f›ld +)) { + +766 ià( +$f›ld +['default'] === '') { + +767 +$f›ld +['deçuÉ'] = + `em±y +($field['notnull']) + +768 ? +nuÎ + : +$this +-> +v®id_deçuÉ_v®ues +[ +$f›ld +['type']]; + +770 ià( +$f›ld +['default'] === '' && + +771 ( +$this +-> +cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_PORTABILITY +è& Doùrše_CÜe:: +PORTABILITY_EMPTY_TO_NULL +)) { + +772 +$f›ld +['deçuÉ'] = +nuÎ +; + +776 ià( +$f›ld +['type'] === 'boolean') { + +777 +$f›ld +['deçuÉ'] = +$this +-> +cÚn +-> + `cÚv”tBoޗns +($field['default']); + +779 +$deçuÉ + = ' DEFAULT ' . ( + `is_nuÎ +( +$f›ld +['default']) + +781 : +$this +-> +cÚn +-> + `quÙe +( +$f›ld +['default'], $field['type'])); + +784  +$deçuÉ +; + +785 + } +} + +796 +public + +funùiÚ + + $g‘NÙNuÎF›ldDeþ¬©iÚ +( +¬¿y + +$defš™iÚ +) + +798  ( + `is£t +( +$defš™iÚ +['notnull']) && $definition['notnull']) ? ' NOT NULL' : ''; + +799 + } +} + +809 +public + +funùiÚ + + $g‘CheckDeþ¬©iÚ +( +¬¿y + +$defš™iÚ +) + +811 +$cÚ¡¿šts + = + `¬¿y +(); + +812 + `fܗch + ( +$defš™iÚ + +as + +$f›ld + => +$def +) { + +813 ià( + `is_¡ršg +( +$def +)) { + +814 +$cÚ¡¿šts +[] = 'CHECK (' . +$def + . ')'; + +816 ià( + `is£t +( +$def +['min'])) { + +817 +$cÚ¡¿šts +[] = 'CHECK (' . +$f›ld + . ' >ð' . +$def +['min'] . ')'; + +820 ià( + `is£t +( +$def +['max'])) { + +821 +$cÚ¡¿šts +[] = 'CHECK (' . +$f›ld + . ' <ð' . +$def +['max'] . ')'; + +826  + `im¶ode +(', ', +$cÚ¡¿šts +); + +827 + } +} + +837 +public + +funùiÚ + + $g‘IndexDeþ¬©iÚ +( +$Çme +, +¬¿y + +$defš™iÚ +) + +839 +$Çme + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($name); + +840 +$ty³ + = ''; + +842 ià( + `is£t +( +$defš™iÚ +['type'])) { + +843 ià( + `¡¹Þow” +( +$defš™iÚ +['type']) == 'unique') { + +844 +$ty³ + = + `¡¹ouµ” +( +$defš™iÚ +['type']) . ' '; + +846 +throw + +Ãw + + `Doùrše_ExpÜt_Exû±iÚ +( + +847 'UnknowÀty³ ' . +$defš™iÚ +['ty³'] . ' fÜ index ' . +$Çme + + +852 iàÐ! + `is£t +( +$defš™iÚ +['f›lds']è|| ! + `is_¬¿y +($definition['fields'])) { + +853 +throw + +Ãw + + `Doùrše_ExpÜt_Exû±iÚ +('NØcÞumn giv’ fÜ index ' . +$Çme +); + +856 +$qu”y + = +$ty³ + . 'INDEX ' . +$Çme +; + +858 +$qu”y + .ð' (' . +$this +-> + `g‘IndexF›ldDeþ¬©iÚLi¡ +( +$defš™iÚ +['fields']) . ')'; + +860  +$qu”y +; + +861 + } +} + +870 +public + +funùiÚ + + $g‘IndexF›ldDeþ¬©iÚLi¡ +( +¬¿y + +$f›lds +) + +872 +$»t + = + `¬¿y +(); + +873 + `fܗch + ( +$f›lds + +as + +$f›ld + => +$defš™iÚ +) { + +874 ià( + `is_¬¿y +( +$defš™iÚ +)) { + +875 +$»t +[] = +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$f›ld +); + +877 +$»t +[] = +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$defš™iÚ +); + +880  + `im¶ode +(', ', +$»t +); + +881 + } +} + +897 +public + +funùiÚ + + $g‘TempܬyTabËQu”y +() + +900 + } +} + +944 +public + +funùiÚ + + $g‘FÜeignKeyDeþ¬©iÚ +( +¬¿y + +$defš™iÚ +) + +946 +$sql + = +$this +-> + `g‘FÜeignKeyBa£Deþ¬©iÚ +( +$defš™iÚ +); + +947 +$sql + .ð +$this +-> + `g‘AdvªûdFÜeignKeyO±iÚs +( +$defš™iÚ +); + +949  +$sql +; + +950 + } +} + +960 +public + +funùiÚ + + $g‘AdvªûdFÜeignKeyO±iÚs +( +¬¿y + +$defš™iÚ +) + +962 +$qu”y + = ''; + +963 iàÐ! + `em±y +( +$defš™iÚ +['onUpdate'])) { + +964 +$qu”y + .ð' ON UPDATE ' . +$this +-> + `g‘FÜeignKeyReã»ÁŸlAùiÚ +( +$defš™iÚ +['onUpdate']); + +966 iàÐ! + `em±y +( +$defš™iÚ +['onDelete'])) { + +967 +$qu”y + .ð' ON DELETE ' . +$this +-> + `g‘FÜeignKeyReã»ÁŸlAùiÚ +( +$defš™iÚ +['onDelete']); + +969  +$qu”y +; + +970 + } +} + +982 +public + +funùiÚ + + $g‘FÜeignKeyReã»ÁŸlAùiÚ +( +$aùiÚ +) + +984 +$uµ” + = + `¡¹ouµ” +( +$aùiÚ +); + +985  +$uµ” +) { + +991  +$uµ” +; + +994 +throw + +Ãw + + `Doùrše_ExpÜt_Exû±iÚ +('UnknowÀfÜeigÀkey„eã»ÁŸÈaùiÚ \'' . +$uµ” + . '\' given.'); + +996 + } +} + +1006 +public + +funùiÚ + + $g‘FÜeignKeyBa£Deþ¬©iÚ +( +¬¿y + +$defš™iÚ +) + +1008 +$sql + = ''; + +1009 ià( + `is£t +( +$defš™iÚ +['name'])) { + +1010 +$sql + .ð'CONSTRAINT ' . +$this +-> +cÚn +-> + `quÙeId’tif›r +($this->cÚn-> +fÜm©‹r +-> + `g‘FÜeignKeyName +( +$defš™iÚ +['name'])) . ' '; + +1012 +$sql + .= 'FOREIGN KEY ('; + +1014 iàÐ! + `is£t +( +$defš™iÚ +['local'])) { + +1015 +throw + +Ãw + + `Doùrše_ExpÜt_Exû±iÚ +('Local„eference field missing from definition.'); + +1017 iàÐ! + `is£t +( +$defš™iÚ +['foreign'])) { + +1018 +throw + +Ãw + + `Doùrše_ExpÜt_Exû±iÚ +('Foreign„eference field missing from definition.'); + +1020 iàÐ! + `is£t +( +$defš™iÚ +['foreignTable'])) { + +1021 +throw + +Ãw + + `Doùrše_ExpÜt_Exû±iÚ +('Foreign„eferenceable missing from definition.'); + +1024 iàÐ! + `is_¬¿y +( +$defš™iÚ +['local'])) { + +1025 +$defš™iÚ +['loÿl'] = + `¬¿y +($definition['local']); + +1027 iàÐ! + `is_¬¿y +( +$defš™iÚ +['foreign'])) { + +1028 +$defš™iÚ +['fÜeign'] = + `¬¿y +($definition['foreign']); + +1031 +$sql + .ð + `im¶ode +(', ', + `¬¿y_m­ +( + `¬¿y +( +$this +-> +cÚn +, 'quÙeId’tif›r'), +$defš™iÚ +['local'])) + +1033 . +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$defš™iÚ +['foreignTable']) . '(' + +1034 . + `im¶ode +(', ', + `¬¿y_m­ +( + `¬¿y +( +$this +-> +cÚn +, 'quÙeId’tif›r'), +$defš™iÚ +['foreign'])) . ')'; + +1036  +$sql +; + +1037 + } +} + +1046 +public + +funùiÚ + + $g‘UniqueF›ldDeþ¬©iÚ +() + +1049 + } +} + +1059 +public + +funùiÚ + + $g‘Ch¬£tF›ldDeþ¬©iÚ +( +$ch¬£t +) + +1062 + } +} + +1072 +public + +funùiÚ + + $g‘CÞÏtiÚF›ldDeþ¬©iÚ +( +$cÞÏtiÚ +) + +1075 + } +} + +1092 +public + +funùiÚ + + $expÜtSchema +( +$dœeùÜy + = +nuÎ +) + +1094 ià( +$dœeùÜy + !=ð +nuÎ +) { + +1095 +$mod–s + = +Doùrše_CÜe +:: + `fž‹rInv®idMod–s +(Doùrše_CÜe:: + `lßdMod–s +( +$dœeùÜy +)); + +1097 +$mod–s + = +Doùrše_CÜe +:: + `g‘LßdedMod–s +(); + +1100 +$this +-> + `expÜtCÏs£s +( +$mod–s +); + +1101 + } +} + +1103 +public + +funùiÚ + + $expÜtS܋dCÏs£sSql +( +$þas£s +, +$groupByCÚÃùiÚ + = +Œue +) + +1105 +$cÚÃùiÚs + = + `¬¿y +(); + +1106 + `fܗch + ( +$þas£s + +as + +$þass +) { + +1107 +$cÚÃùiÚ + = +Doùrše_Mªag” +:: + `g‘In¡ªû +()-> + `g‘CÚÃùiÚFÜCompڒt +( +$þass +); + +1108 +$cÚÃùiÚName + = +$cÚÃùiÚ +-> + `g‘Name +(); + +1110 iàÐ! + `is£t +( +$cÚÃùiÚs +[ +$cÚÃùiÚName +])) { + +1111 +$cÚÃùiÚs +[ +$cÚÃùiÚName +] = + `¬¿y +( + +1112 'ü—‹_bËs' => + `¬¿y +(), + +1113 'ü—‹_£qu’ûs' => + `¬¿y +(), + +1114 'ü—‹_šdexes' => + `¬¿y +(), + +1115 '®‹rs' => + `¬¿y +(), + +1116 'ü—‹_Œigg”s' => + `¬¿y +(), + +1120 +$sql + = +$cÚÃùiÚ +-> +expÜt +-> + `expÜtCÏs£sSql +( + `¬¿y +( +$þass +)); + +1124 + `fܗch + ( +$sql + +as + +$key + => +$qu”y +) { + +1126 ià( + `sub¡r +( +$qu”y +, 0, + `¡¾’ +('CREATE TABLE')) == 'CREATE TABLE') { + +1127 +$cÚÃùiÚs +[ +$cÚÃùiÚName +]['ü—‹_bËs'][] = +$qu”y +; + +1129 + `un£t +( +$sql +[ +$key +]); + +1134 ià( + `sub¡r +( +$qu”y +, 0, + `¡¾’ +('CREATE SEQUENCE')) == 'CREATE SEQUENCE') { + +1135 +$cÚÃùiÚs +[ +$cÚÃùiÚName +]['ü—‹_£qu’ûs'][] = +$qu”y +; + +1137 + `un£t +( +$sql +[ +$key +]); + +1142 ià( + `´eg_g»p +("/CREATE ([^ ]* )?INDEX/", + `¬¿y +( +$qu”y +))) { + +1143 +$cÚÃùiÚs +[ +$cÚÃùiÚName +]['ü—‹_šdexes'][] = +$qu”y +; + +1145 + `un£t +( +$sql +[ +$key +]); + +1150 ià( + `sub¡r +( +$qu”y +, 0, + `¡¾’ +('ALTER TABLE')) == 'ALTER TABLE' + +1151 || + `sub¡r +( +$qu”y +, 0, + `¡¾’ +('DECLARE')) == 'DECLARE') { + +1152 +$cÚÃùiÚs +[ +$cÚÃùiÚName +]['®‹rs'][] = +$qu”y +; + +1154 + `un£t +( +$sql +[ +$key +]); + +1159 ià( + `sub¡r +( +$qu”y +, 0, + `¡¾’ +('CREATE TRIGGER')) == 'CREATE TRIGGER') { + +1160 +$cÚÃùiÚs +[ +$cÚÃùiÚName +]['ü—‹_Œigg”s'][] = +$qu”y +; + +1162 + `un£t +( +$sql +[ +$key +]); + +1167 ià( + `sub¡r +( +$qu”y +, 0, + `¡¾’ +('COMMENT ON')) == 'COMMENT ON') { + +1168 +$cÚÃùiÚs +[ +$cÚÃùiÚName +]['comm’ts'][] = +$qu”y +; + +1170 + `un£t +( +$sql +[ +$key +]); + +1177 +$bužd + = + `¬¿y +(); + +1178 + `fܗch + ( +$cÚÃùiÚs + +as + +$cÚÃùiÚName + => +$sql +) { + +1179 +$bužd +[ +$cÚÃùiÚName +] = + `¬¿y_unique +( + `¬¿y_m”ge +( +$sql +['create_tables'], $sql['create_sequences'], $sql['create_indexes'], $sql['alters'], $sql['create_triggers'])); + +1182 iàÐ! +$groupByCÚÃùiÚ +) { + +1183 +$Ãw + = + `¬¿y +(); + +1184 + `fܗch +( +$bužd + +as + +$cÚÃùiÚÇme + => +$sql +) { + +1185 +$Ãw + = + `¬¿y_unique +( + `¬¿y_m”ge +($Ãw, +$sql +)); + +1187 +$bužd + = +$Ãw +; + +1189  +$bužd +; + +1190 + } +} + +1203 +public + +funùiÚ + + $expÜtCÏs£s +( +¬¿y + +$þas£s +) + +1205 +$qu”›s + = +$this +-> + `expÜtS܋dCÏs£sSql +( +$þas£s +); + +1207 + `fܗch + ( +$qu”›s + +as + +$cÚÃùiÚName + => +$sql +) { + +1208 +$cÚÃùiÚ + = +Doùrše_Mªag” +:: + `g‘In¡ªû +()-> + `g‘CÚÃùiÚ +( +$cÚÃùiÚName +); + +1210 +$cÚÃùiÚ +-> + `begšT¿n§ùiÚ +(); + +1212 + `fܗch + ( +$sql + +as + +$qu”y +) { + +1213 +Œy + { + +1214 +$cÚÃùiÚ +-> + `exec +( +$qu”y +); + +1215 } + `ÿtch + ( +Doùrše_CÚÃùiÚ_Exû±iÚ + +$e +) { + +1217 ià( +$e +-> + `g‘P܏bËCode +(è!=ð +Doùrše_CÜe +:: +ERR_ALREADY_EXISTS +) { + +1218 +$cÚÃùiÚ +-> + `rÞlback +(); + +1219 +throw + +Ãw + + `Doùrše_ExpÜt_Exû±iÚ +( +$e +-> + `g‘Mes§ge +(è. '. Fažšg Qu”y: ' . +$qu”y +); + +1224 +$cÚÃùiÚ +-> + `comm™ +(); + +1226 + } +} + +1237 +public + +funùiÚ + + $expÜtCÏs£sSql +( +¬¿y + +$þas£s +) + +1239 +$mod–s + = +Doùrše_CÜe +:: + `fž‹rInv®idMod–s +( +$þas£s +); + +1241 +$sql + = + `¬¿y +(); + +1243 + `fܗch + ( +$mod–s + +as + +$Çme +) { + +1244 +$»cÜd + = +Ãw + + `$Çme +(); + +1245 +$bË + = +$»cÜd +-> + `g‘TabË +(); + +1246 +$·»Ás + = +$bË +-> + `g‘O±iÚ +('joinedParents'); + +1248 + `fܗch + ( +$·»Ás + +as + +$·»Á +) { + +1249 +$d©a + = +$bË +-> + `g‘CÚÃùiÚ +()-> + `g‘TabË +( +$·»Á +)-> + `g‘Exp܏bËFÜm© +(); + +1251 +$qu”y + = +$this +-> +cÚn +-> +expÜt +-> + `ü—‹TabËSql +( +$d©a +['tableName'], $data['columns'], $data['options']); + +1253 +$sql + = + `¬¿y_m”ge +($sql, ( +¬¿y +è +$qu”y +); + +1257 ià( +$bË +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_EXPORT +è==ðDoùrše_CÜe:: +EXPORT_NONE +) { + +1261 +$d©a + = +$bË +-> + `g‘Exp܏bËFÜm© +(); + +1263 +$qu”y + = +$this +-> +cÚn +-> +expÜt +-> + `ü—‹TabËSql +( +$d©a +['tableName'], $data['columns'], $data['options']); + +1265 ià( + `is_¬¿y +( +$qu”y +)) { + +1266 +$sql + = + `¬¿y_m”ge +($sql, +$qu”y +); + +1268 +$sql +[] = +$qu”y +; + +1271 ià( +$bË +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_EXPORT +è& Doùrše_CÜe:: +EXPORT_PLUGINS +) { + +1272 +$sql + = + `¬¿y_m”ge +($sql, +$this +-> + `expÜtG’”©ÜsSql +( +$bË +)); + +1276 +$bË +-> + `g‘R•os™Üy +()-> + `eviù +( +$»cÜd +-> + `g‘Oid +()); + +1277 + `un£t +( +$»cÜd +); + +1280 +$sql + = + `¬¿y_unique +($sql); + +1282 + `rsÜt +( +$sql +); + +1284  +$sql +; + +1285 + } +} + +1293 +public + +funùiÚ + + $g‘AÎG’”©Üs +( +Doùrše_TabË + +$bË +) + +1295 +$g’”©Üs + = + `¬¿y +(); + +1297 + `fܗch + ( +$bË +-> + `g‘G’”©Üs +(è +as + +$Çme + => +$g’”©Ü +) { + +1298 ià( +$g’”©Ü + ==ð +nuÎ +) { + +1302 +$g’”©Üs +[] = +$g’”©Ü +; + +1304 +$g’”©ÜTabË + = +$g’”©Ü +-> + `g‘TabË +(); + +1306 ià( +$g’”©ÜTabË + +š¡ªûof + +Doùrše_TabË +) { + +1307 +$g’”©Üs + = + `¬¿y_m”ge +($g’”©Üs, +$this +-> + `g‘AÎG’”©Üs +( +$g’”©ÜTabË +)); + +1311  +$g’”©Üs +; + +1312 + } +} + +1321 +public + +funùiÚ + + $expÜtG’”©ÜsSql +( +Doùrše_TabË + +$bË +) + +1323 +$sql + = + `¬¿y +(); + +1325 + `fܗch + ( +$this +-> + `g‘AÎG’”©Üs +( +$bË +è +as + +$Çme + => +$g’”©Ü +) { + +1326 +$bË + = +$g’”©Ü +-> + `g‘TabË +(); + +1329 ià( +$bË + +š¡ªûof + +Doùrše_TabË +) { + +1330 +$d©a + = +$bË +-> + `g‘Exp܏bËFÜm© +(); + +1332 +$qu”y + = +$this +-> +cÚn +-> +expÜt +-> + `ü—‹TabËSql +( +$d©a +['tableName'], $data['columns'], $data['options']); + +1334 +$sql + = + `¬¿y_m”ge +($sql, ( +¬¿y +è +$qu”y +); + +1338  +$sql +; + +1339 + } +} + +1356 +public + +funùiÚ + + $expÜtSql +( +$dœeùÜy + = +nuÎ +) + +1358 ià( +$dœeùÜy + !=ð +nuÎ +) { + +1359 +$mod–s + = +Doùrše_CÜe +:: + `fž‹rInv®idMod–s +(Doùrše_CÜe:: + `lßdMod–s +( +$dœeùÜy +)); + +1361 +$mod–s + = +Doùrše_CÜe +:: + `g‘LßdedMod–s +(); + +1364  +$this +-> + `expÜtS܋dCÏs£sSql +( +$mod–s +, +çl£ +); + +1365 + } +} + +1376 +public + +funùiÚ + + $expÜtTabË +( +Doùrše_TabË + +$bË +) + +1378 +Œy + { + +1379 +$d©a + = +$bË +-> + `g‘Exp܏bËFÜm© +(); + +1381 +$this +-> +cÚn +-> +expÜt +-> + `ü—‹TabË +( +$d©a +['tableName'], $data['columns'], $data['options']); + +1382 } + `ÿtch +( +Doùrše_CÚÃùiÚ_Exû±iÚ + +$e +) { + +1384 ià( +$e +-> + `g‘P܏bËCode +(è!=ð +Doùrše_CÜe +:: +ERR_ALREADY_EXISTS +) { + +1385 +throw + +$e +; + +1388 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Export/Exception.php + +1 +cÚn +-> + `quÙeId’tif›r +($Çme, +Œue +); + +46 +$qu”y + = "CREATE DATABASE $name"; + +47 +$ÝtiÚs + = +$this +-> +cÚn +-> + `g‘O±iÚs +(); + +48 ià( + `is£t +( +$ÝtiÚs +['database_device']) && $options['database_device']) { + +49 +$qu”y +.ð' ON '. +$this +-> +cÚn +-> +ÝtiÚs +['database_device']; + +50 +$qu”y +.ð +$this +-> +cÚn +-> +ÝtiÚs +['database_size'] ? '=' . + +51 +$this +-> +cÚn +-> +ÝtiÚs +['database_size'] : ''; + +53  +$this +-> +cÚn +-> + `¡ªd®ÚeQu”y +( +$qu”y +, + `¬¿y +(), +Œue +); + +62 +public + +funùiÚ + + $drÝD©aba£ +( +$Çme +) + +64 +$Çme + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($Çme, +Œue +); + +65  +$this +-> +cÚn +-> + `¡ªd®ÚeQu”y +('DROP DATABASE ' . +$Çme +, + `¬¿y +(), +Œue +); + +66 + } +} + +74 +public + +funùiÚ + + $g‘TempܬyTabËQu”y +() + +77 + } +} + +79 +public + +funùiÚ + + $drÝIndexSql +( +$bË +, +$Çme +) + +81 +$Çme + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($this->cÚn-> +fÜm©‹r +-> + `g‘IndexName +($name)); + +82 +$bË + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($table); + +84  'DROP INDEX ' . +$Çme + . ' ON ' . +$bË +; + +85 + } +} + +175 +public + +funùiÚ + + $®‹rTabË +( +$Çme +, +¬¿y + +$chªges +, +$check + = +çl£ +) + +177 iàÐ! +$Çme + ) { + +178 +throw + +Ãw + + `Doùrše_ExpÜt_Exû±iÚ +('no validable‚ame specified'); + +181 + `fܗch + ( +$chªges + +as + +$chªgeName + => +$chªge +) { + +182  +$chªgeName +) { + +190 +throw + +Ãw + + `Doùrše_ExpÜt_Exû±iÚ +('®‹rTabË: chªgty³ "' . +$chªgeName + . '"‚ot yet supported'); + +194 ià( +$check +) { + +195  +Œue +; + +199 +$qu”y + = ''; + +200 +$po¡Qu”›s + = ''; + +202 iàÐ! + `em±y +( +$chªges +['name'])) { + +203 +$chªgeName + = +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$chªges +['Çme'], +Œue +); + +205 +$po¡Qu”›s + .ð + `¥rštf +( + +207 +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$Çme +), + +208 +$chªgeName + + +213 iàÐ! + `em±y +( +$chªges +['add']è&& + `is_¬¿y +($changes['add'])) { + +214 + `fܗch + ( +$chªges +['add'] +as + +$f›ldName + => +$f›ld +) { + +215 ià( +$qu”y +) { + +216 +$qu”y + .= ', '; + +218 +$qu”y + .ð'ADD ' . +$this +-> + `g‘Deþ¬©iÚ +( +$f›ldName +, +$f›ld +); + +223 iàÐ! + `em±y +( +$chªges +['»move']è&& + `is_¬¿y +($changes['remove'])) { + +224 ià( +$qu”y +) { + +225 +$qu”y + .= ', '; + +227 +$qu”y + .= 'DROP COLUMN '; + +229 +$drݳd + = + `¬¿y +(); + +230 + `fܗch + ( +$chªges +['»move'] +as + +$f›ldName + => +$f›ld +) { + +232 +$f›ldName + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($f›ldName, +Œue +); + +233 +$drݳd +[] = +$f›ldName +; + +236 +$qu”y + .ð + `im¶ode +(', ', +$drݳd +) . ' '; + +239 +$»Çme + = + `¬¿y +(); + +240 iàÐ! + `em±y +( +$chªges +['»Çme']è&& + `is_¬¿y +($changes['rename'])) { + +241 + `fܗch + ( +$chªges +['»Çme'] +as + +$f›ldName + => +$f›ld +) { + +242 +$»Çme +[ +$f›ld +['Çme']] = +$f›ldName +; + +247 iàÐ! + `em±y +( +$chªges +['chªge']è&& + `is_¬¿y +($changes['change'])) { + +248 ià( +$qu”y +) { + +249 +$qu”y +.= ', '; + +252 +$qu”y + .= "ALTER COLUMN "; + +254 +$®‹»d + = + `¬¿y +(); + +255 + `fܗch + ( +$chªges +['chªge'] +as + +$f›ldName + => +$f›ld +) { + +256 ià( + `is£t +( +$»Çme +[ +$f›ldName +])) { + +257 +$ÞdF›ldName + = +$»Çme +[ +$f›ldName +]; + +258 + `un£t +( +$»Çme +[ +$f›ldName +]); + +260 +$ÞdF›ldName + = +$f›ldName +; + +262 +$ÞdF›ldName + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($ÞdF›ldName, +Œue +); + +264 +$deþ¬©iÚ + = +$this +-> + `g‘Deþ¬©iÚ +( +$f›ldName +, +$f›ld +['definition']); + +266 ià( + `´eg_m©ch +('/(CONSTRAINT\s+([^\s]*)\s+DEFAULT\s+([^\s]*)\s*)|(DEFAULT\s+([^\s]*)\s*)/', +$deþ¬©iÚ +, +$m©ches +)) { + +268 +$®‹»d +[] = + `¡r_»¶aû +( +$m©ches +[0], '', +$deþ¬©iÚ +); + +270 ià( + `couÁ +( +$m©ches +) === 6) { + +272 +$deçuÉName + = 'DF__' . +$Çme + . '__' . +$f›ldName + . '__' . + `mt_¿nd +(); + +273 +$deçuÉV®ue + = +$m©ches +[5]; + +275 +$deçuÉName + = +$m©ches +[2]; + +276 +$deçuÉV®ue + = +$m©ches +[3]; + +279 +$po¡Qu”›s + .ð + `¥rštf +( + +281 +$Çme +, + +282 +$deçuÉName +, + +283 +$deçuÉV®ue +, + +284 +$f›ldName + + +287 +$®‹»d +[] = +$deþ¬©iÚ +; + +291 +$qu”y + .ð + `im¶ode +( + `¥rštf +( + +293 +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$Çme +, +Œue +) + +294 ), +$®‹»d +) . ' '; + +298 iàÐ! + `em±y +( +$»Çme +è&& + `is_¬¿y +($rename)) { + +299 + `fܗch + ( +$»Çme + +as + +$»ÇmeName + => +$»ÇmedF›ld +) { + +301 +$f›ld + = +$chªges +['»Çme'][ +$»ÇmedF›ld +]; + +302 +$»ÇmedF›ld + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($renamedField); + +304 +$po¡Qu”›s + .ð + `¥rštf +( + +306 +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$Çme +), + +307 +$»ÇmedF›ld +, + +308 +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$f›ld +['Çme'], +Œue +) + +313 iàÐ! +$qu”y + && ! +$po¡Qu”›s +) { + +314  +çl£ +; + +317 +$Çme + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($Çme, +Œue +); + +319 +$fš®Qu”y + = ''; + +320 ià( +$qu”y +) { + +321 +$fš®Qu”y + .ð'ALTER TABLE ' . +$Çme + . ' ' . + `Œim +( +$qu”y +) . ';'; + +324 ià( +$po¡Qu”›s +) { + +325 +$fš®Qu”y + .ð +$po¡Qu”›s +; + +328  +$this +-> +cÚn +-> + `exec +( +$fš®Qu”y +); + +329 + } +} + +344 +public + +funùiÚ + +ü—‹Sequ’û +( +$£qName +, +$¡¬t + = 1, +¬¿y + +$ÝtiÚs + = + $¬¿y +()) + +346 +$£qu’ûName + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($this->cÚn-> + `g‘Sequ’ûName +( +$£qName +), +Œue +); + +347 +$£qcÞName + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($this->cÚn-> +ÝtiÚs +['£qcÞ_Çme'], +Œue +); + +348 +$qu”y + = 'CREATE TABLE ' . +$£qu’ûName + . ' (' . +$£qcÞName + . + +349 ' INT PRIMARY KEY CLUSTERED IDENTITY(' . +$¡¬t + . ', 1) NOT NULL)'; + +351 +$»s + = +$this +-> +cÚn +-> + `exec +( +$qu”y +); + +353 ià( +$¡¬t + == 1) { + +354  +Œue +; + +357 +Œy + { + +358 +$qu”y + = 'SET IDENTITY_INSERT ' . +$£qu’ûName + . ' ON ' . + +359 'INSERT INTO ' . +$£qu’ûName + . ' (' . +$£qcÞName + . 'èVALUES ( ' . +$¡¬t + . ')'; + +360 +$»s + = +$this +-> +cÚn +-> + `exec +( +$qu”y +); + +361 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +362 +$»suÉ + = +$this +-> +cÚn +-> + `exec +('DROP TABLE ' . +$£qu’ûName +); + +364  +Œue +; + +365 + } +} + +373 +public + +funùiÚ + + $drÝSequ’ûSql +( +$£qName +) + +375 +$£qu’ûName + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($this->cÚn-> + `g‘Sequ’ûName +( +$£qName +), +Œue +); + +376  'DROP TABLE ' . +$£qu’ûName +; + +377 + } +} + +407 +public + +funùiÚ + +ü—‹TabËSql +( +$Çme +, +¬¿y + +$f›lds +,‡¼ay +$ÝtiÚs + = + $¬¿y +()) + +409 iàÐ! +$Çme +) { + +410 +throw + +Ãw + + `Doùrše_ExpÜt_Exû±iÚ +('no validable‚ame specified'); + +413 ià( + `em±y +( +$f›lds +)) { + +414 +throw + +Ãw + + `Doùrše_ExpÜt_Exû±iÚ +('nØf›ld ¥ecif›d f܁abË ' . +$Çme +); + +418 iàÐ! + `is£t +( +$ÝtiÚs +['primary'])) { + +419 + `fܗch + ( +$f›lds + +as + +$f›ldName + => +$f›ldD©a +) { + +420 ià( + `is£t +( +$f›ldD©a +['primary']) && $fieldData['primary']) { + +421 +$ÝtiÚs +['´im¬y'][ +$f›ldName +] = $fieldName; + +426 ià( + `is£t +( +$ÝtiÚs +['primary'])) { + +427 + `fܗch + ( +$ÝtiÚs +['´im¬y'] +as + +$f›ldName +) { + +428 ià( + `is£t +( +$f›lds +[ +$f›ldName +])) { + +429 +$f›lds +[ +$f›ldName +]['nÙnuÎ'] = +Œue +; + +434 +$qu”yF›lds + = +$this +-> + `g‘F›ldDeþ¬©iÚLi¡ +( +$f›lds +); + +436 ià( + `is£t +( +$ÝtiÚs +['´im¬y']è&& ! + `em±y +($options['primary'])) { + +437 +$´im¬yKeys + = + `¬¿y_m­ +( + `¬¿y +( +$this +-> +cÚn +, 'quÙeId’tif›r'), + `¬¿y_v®ues +( +$ÝtiÚs +['primary'])); + +438 +$qu”yF›lds + .ð', PRIMARY KEY(' . + `im¶ode +(', ', +$´im¬yKeys +) . ')'; + +441 +$qu”y + = 'CREATE TABLE ' . +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$Çme +, +Œue +è. ' (' . +$qu”yF›lds +; + +443 +$check + = +$this +-> + `g‘CheckDeþ¬©iÚ +( +$f›lds +); + +445 iàÐ! + `em±y +( +$check +)) { + +446 +$qu”y + .ð', ' . +$check +; + +449 +$qu”y + .= ')'; + +451 +$sql +[] = +$qu”y +; + +453 ià( + `is£t +( +$ÝtiÚs +['šdexes']è&& ! + `em±y +($options['indexes'])) { + +454 + `fܗch +( +$ÝtiÚs +['šdexes'] +as + +$šdex + => +$defš™iÚ +) { + +455 ià( + `is_¬¿y +( +$defš™iÚ +)) { + +456 +$sql +[] = +$this +-> + `ü—‹IndexSql +( +$Çme +, +$šdex +, +$defš™iÚ +); + +461 ià( + `is£t +( +$ÝtiÚs +['foreignKeys'])) { + +462 + `fܗch + (( +¬¿y +è +$ÝtiÚs +['fÜeignKeys'] +as + +$k + => +$defš™iÚ +) { + +463 ià( + `is_¬¿y +( +$defš™iÚ +)) { + +464 +$sql +[] = +$this +-> + `ü—‹FÜeignKeySql +( +$Çme +, +$defš™iÚ +); + +469  +$sql +; + +470 + } +} + +480 +public + +funùiÚ + + $g‘NÙNuÎF›ldDeþ¬©iÚ +( +¬¿y + +$defš™iÚ +) + +483 ( + `is£t +( +$defš™iÚ +['notnull']) && $definition['notnull']) || + +484 ( + `is£t +( +$defš™iÚ +['primary']) && $definition['primary']) + +486 + } +} + +494 +public + +funùiÚ + + $g‘DeçuÉF›ldDeþ¬©iÚ +( +$f›ld +) + +496 +$deçuÉ + = ''; + +498 ià( + `¬¿y_key_exi¡s +('deçuÉ', +$f›ld +)) { + +499 ià( +$f›ld +['default'] === '') { + +500 +$f›ld +['deçuÉ'] = + `em±y +($field['notnull']) + +501 ? +nuÎ + : +$this +-> +v®id_deçuÉ_v®ues +[ +$f›ld +['type']]; + +503 ià( +$f›ld +['default'] === '' && + +504 ( +$this +-> +cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_PORTABILITY +è& Doùrše_CÜe:: +PORTABILITY_EMPTY_TO_NULL +)) { + +505 +$f›ld +['deçuÉ'] = +nuÎ +; + +509 ià( +$f›ld +['type'] === 'boolean') { + +510 +$f›ld +['deçuÉ'] = +$this +-> +cÚn +-> + `cÚv”tBoޗns +($field['default']); + +513 ià( + `¬¿y_key_exi¡s +('deçuÉCÚ¡¿štName', +$f›ld +)) { + +514 +$deçuÉ + .ð' CONSTRAINT ' . +$f›ld +['defaultConstraintName']; + +517 +$deçuÉ + .ð' DEFAULT ' . ( + `is_nuÎ +( +$f›ld +['default']) + +519 : +$this +-> +cÚn +-> + `quÙe +( +$f›ld +['default'], $field['type'])); + +522  +$deçuÉ +; + +523 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Export/Mysql.php + +1 +cÚn +-> + `quÙeId’tif›r +($table); + +48 iàÐ! +$´im¬y +) { + +49 +$Çme + = 'CONSTRAINT ' . +$this +-> +cÚn +-> + `quÙeId’tif›r +($name); + +51 +$Çme + = 'PRIMARY KEY'; + +54  +$this +-> +cÚn +-> + `exec +('ALTER TABLE ' . +$bË + . ' DROP ' . +$Çme +); + +63 +public + +funùiÚ + + $ü—‹D©aba£Sql +( +$Çme +) + +65  'CREATE DATABASE ' . +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$Çme +, +Œue +); + +66 + } +} + +74 +public + +funùiÚ + + $drÝD©aba£Sql +( +$Çme +) + +76  + `¬¿y +( + +78 'DROP DATABASE ' . +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$Çme +), + +81 + } +} + +117 +public + +funùiÚ + +ü—‹TabËSql +( +$Çme +, +¬¿y + +$f›lds +,‡¼ay +$ÝtiÚs + = + $¬¿y +()) + +119 iàÐ! +$Çme +) + +120 +throw + +Ãw + + `Doùrše_ExpÜt_Exû±iÚ +('no validable‚ame specified'); + +122 ià( + `em±y +( +$f›lds +)) { + +123 +throw + +Ãw + + `Doùrše_ExpÜt_Exû±iÚ +('nØf›ld ¥ecif›d f܁abË "'. +$Çme +.'"'); + +125 +$qu”yF›lds + = +$this +-> + `g‘F›ldDeþ¬©iÚLi¡ +( +$f›lds +); + +128 ià( + `is£t +( +$ÝtiÚs +['foreignKeys'])) { + +129 + `fܗch + ( +$ÝtiÚs +['fÜeignKeys'] +as + +$fk +) { + +130 +$loÿl + = +$fk +['local']; + +131 +$found + = +çl£ +; + +132 ià( + `is£t +( +$ÝtiÚs +['indexes'])) { + +133 + `fܗch + ( +$ÝtiÚs +['šdexes'] +as + +$defš™iÚ +) { + +134 ià( + `is_¡ršg +( +$defš™iÚ +['fields'])) { + +136 +$found + = $found || ( +$loÿl + =ð +$defš™iÚ +['fields']); + +137 } ià( + `š_¬¿y +( +$loÿl +, +$defš™iÚ +['f›lds']è&& + `couÁ +($definition['fields']) === 1) { + +139 +$found + = +Œue +; + +143 ià( + `is£t +( +$ÝtiÚs +['´im¬y']è&& ! + `em±y +($options['primary']) && + +144 + `š_¬¿y +( +$loÿl +, +$ÝtiÚs +['primary'])) { + +146 +$found + = +Œue +; + +149 iàÐ! +$found +) { + +150 ià( + `is_¬¿y +( +$loÿl +)) { + +151 + `fܗch +( +$loÿl + +as + +$loÿlidx +) { + +152 +$ÝtiÚs +['šdexes'][ +$loÿlidx +] = + `¬¿y +('fields' =>‡rray($localidx =>‡rray())); + +155 +$ÝtiÚs +['šdexes'][ +$loÿl +] = + `¬¿y +('fields' =>‡rray($local =>‡rray())); + +162 ià( + `is£t +( +$ÝtiÚs +['šdexes']è&& ! + `em±y +($options['indexes'])) { + +164 +$du³s + = + `¬¿y +(); + +165 + `fܗch + ( +$ÝtiÚs +['šdexes'] +as + +$key + => +$šdex +) { + +166 ià( + `š_¬¿y +( + `¡¹Þow” +( +$key +), +$du³s +)) { + +167 + `un£t +( +$ÝtiÚs +['šdexes'][ +$key +]); + +169 +$du³s +[] = + `¡¹Þow” +( +$key +); + +172 + `un£t +( +$du³s +); + +174 + `fܗch +( +$ÝtiÚs +['šdexes'] +as + +$šdex + => +$defš™iÚ +) { + +175 +$qu”yF›lds + .ð', ' . +$this +-> + `g‘IndexDeþ¬©iÚ +( +$šdex +, +$defš™iÚ +); + +180 ià( + `is£t +( +$ÝtiÚs +['´im¬y']è&& ! + `em±y +($options['primary'])) { + +181 +$keyCÞumns + = + `¬¿y_v®ues +( +$ÝtiÚs +['primary']); + +182 +$keyCÞumns + = + `¬¿y_m­ +( + `¬¿y +( +$this +-> +cÚn +, 'quoteIdentifier'), $keyColumns); + +183 +$qu”yF›lds + .ð', PRIMARY KEY(' . + `im¶ode +(', ', +$keyCÞumns +) . ')'; + +186 +$qu”y + = 'CREATE TABLE ' . +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$Çme +, +Œue +è. ' (' . +$qu”yF›lds + . ')'; + +188 +$ÝtiÚSŒšgs + = + `¬¿y +(); + +190 ià( + `is£t +( +$ÝtiÚs +['comment'])) { + +191 +$ÝtiÚSŒšgs +['comm’t'] = 'COMMENT = ' . +$this +-> +cÚn +-> + `quÙe +( +$ÝtiÚs +['comment'], 'text'); + +193 ià( + `is£t +( +$ÝtiÚs +['charset'])) { + +194 +$ÝtiÚSŒšgs +['ch¬£t'] = 'DEFAULT CHARACTER SET ' . +$ÝtiÚs +['charset']; + +196 ià( + `is£t +( +$ÝtiÚs +['collate'])) { + +197 +$ÝtiÚSŒšgs +['cÞϋ'] = 'COLLATE ' . +$ÝtiÚs +['collate']; + +200 +$ty³ + = +çl£ +; + +203 ià( + `is£t +( +$ÝtiÚs +['type'])) { + +204 +$ty³ + = +$ÝtiÚs +['type']; + +206 +$ty³ + = +$this +-> +cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_DEFAULT_TABLE_TYPE +); + +209 ià( +$ty³ +) { + +210 +$ÝtiÚSŒšgs +[] = 'ENGINE = ' . +$ty³ +; + +213 iàÐ! + `em±y +( +$ÝtiÚSŒšgs +)) { + +214 +$qu”y +.ð' '. + `im¶ode +(' ', +$ÝtiÚSŒšgs +); + +216 +$sql +[] = +$qu”y +; + +218 ià( + `is£t +( +$ÝtiÚs +['foreignKeys'])) { + +220 + `fܗch + (( +¬¿y +è +$ÝtiÚs +['fÜeignKeys'] +as + +$k + => +$defš™iÚ +) { + +221 ià( + `is_¬¿y +( +$defš™iÚ +)) { + +222 +$sql +[] = +$this +-> + `ü—‹FÜeignKeySql +( +$Çme +, +$defš™iÚ +); + +226  +$sql +; + +227 + } +} + +261 +public + +funùiÚ + + $g‘Deþ¬©iÚ +( +$Çme +, +¬¿y + +$f›ld +) + +264 +$deçuÉ + = +$this +-> + `g‘DeçuÉF›ldDeþ¬©iÚ +( +$f›ld +); + +266 +$ch¬£t + = ( + `is£t +( +$f›ld +['charset']) && $field['charset']) ? + +267 ' ' . +$this +-> + `g‘Ch¬£tF›ldDeþ¬©iÚ +( +$f›ld +['charset']) : ''; + +269 +$cÞÏtiÚ + = ( + `is£t +( +$f›ld +['collation']) && $field['collation']) ? + +270 ' ' . +$this +-> + `g‘CÞÏtiÚF›ldDeþ¬©iÚ +( +$f›ld +['collation']) : ''; + +272 +$nÙnuÎ + = ( + `is£t +( +$f›ld +['notnull']) && $field['notnull']) ? ' NOT NULL' : ''; + +274 +$unique + = ( + `is£t +( +$f›ld +['unique']) && $field['unique']) ? + +275 ' ' . +$this +-> + `g‘UniqueF›ldDeþ¬©iÚ +() : ''; + +277 +$check + = ( + `is£t +( +$f›ld +['check']) && $field['check']) ? + +278 ' ' . +$f›ld +['check'] : ''; + +280 +$comm’t + = ( + `is£t +( +$f›ld +['comment']) && $field['comment']) ? + +281 " COMMENT " . +$this +-> +cÚn +-> + `quÙe +( +$f›ld +['comment'], 'text') : ''; + +283 +$m‘hod + = 'g‘' . +$f›ld +['type'] . 'Declaration'; + +285 +Œy + { + +286 ià( + `m‘hod_exi¡s +( +$this +-> +cÚn +-> +d©aDiù +, +$m‘hod +)) { + +287  +$this +-> +cÚn +-> +d©aDiù +-> + `$m‘hod +( +$Çme +, +$f›ld +); + +289 +$dec + = +$this +-> +cÚn +-> +d©aDiù +-> + `g‘N©iveDeþ¬©iÚ +( +$f›ld +); + +292  +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$Çme +, +Œue +) + +293 . ' ' . +$dec + . +$ch¬£t + . +$deçuÉ + . +$nÙnuÎ + . +$comm’t + . +$unique + . +$check + . +$cÞÏtiÚ +; + +294 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +295 +throw + +Ãw + + `Doùrše_Exû±iÚ +('Around f›ld ' . +$Çme + . ': ' . +$e +-> + `g‘Mes§ge +(è. "\n\n" . $e-> + `g‘T¿ûAsSŒšg +() . "\n\n"); + +297 + } +} + +387 +public + +funùiÚ + + $®‹rTabËSql +( +$Çme +, +¬¿y + +$chªges +, +$check + = +çl£ +) + +389 iàÐ! +$Çme +) { + +390 +throw + +Ãw + + `Doùrše_ExpÜt_Exû±iÚ +('no validable‚ame specified'); + +392 + `fܗch + ( +$chªges + +as + +$chªgeName + => +$chªge +) { + +393  +$chªgeName +) { + +401 +throw + +Ãw + + `Doùrše_ExpÜt_Exû±iÚ +('chªgty³ "' . +$chªgeName + . '"‚ot yet supported'); + +405 ià( +$check +) { + +406  +Œue +; + +409 +$qu”y + = ''; + +410 iàÐ! + `em±y +( +$chªges +['name'])) { + +411 +$chªge_Çme + = +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$chªges +['name']); + +412 +$qu”y + .ð'RENAME TO ' . +$chªge_Çme +; + +415 iàÐ! + `em±y +( +$chªges +['add']è&& + `is_¬¿y +($changes['add'])) { + +416 + `fܗch + ( +$chªges +['add'] +as + +$f›ldName + => +$f›ld +) { + +417 ià( +$qu”y +) { + +418 +$qu”y +.= ', '; + +420 +$qu”y +.ð'ADD ' . +$this +-> + `g‘Deþ¬©iÚ +( +$f›ldName +, +$f›ld +); + +424 iàÐ! + `em±y +( +$chªges +['»move']è&& + `is_¬¿y +($changes['remove'])) { + +425 + `fܗch + ( +$chªges +['»move'] +as + +$f›ldName + => +$f›ld +) { + +426 ià( +$qu”y +) { + +427 +$qu”y + .= ', '; + +429 +$f›ldName + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($fieldName); + +430 +$qu”y + .ð'DROP ' . +$f›ldName +; + +434 +$»Çme + = + `¬¿y +(); + +435 iàÐ! + `em±y +( +$chªges +['»Çme']è&& + `is_¬¿y +($changes['rename'])) { + +436 + `fܗch + ( +$chªges +['»Çme'] +as + +$f›ldName + => +$f›ld +) { + +437 +$»Çme +[ +$f›ld +['Çme']] = +$f›ldName +; + +441 iàÐ! + `em±y +( +$chªges +['chªge']è&& + `is_¬¿y +($changes['change'])) { + +442 + `fܗch + ( +$chªges +['chªge'] +as + +$f›ldName + => +$f›ld +) { + +443 ià( +$qu”y +) { + +444 +$qu”y +.= ', '; + +446 ià( + `is£t +( +$»Çme +[ +$f›ldName +])) { + +447 +$ÞdF›ldName + = +$»Çme +[ +$f›ldName +]; + +448 + `un£t +( +$»Çme +[ +$f›ldName +]); + +450 +$ÞdF›ldName + = +$f›ldName +; + +452 +$ÞdF›ldName + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($ÞdF›ldName, +Œue +); + +453 +$qu”y + .ð'CHANGE ' . +$ÞdF›ldName + . ' ' + +454 . +$this +-> + `g‘Deþ¬©iÚ +( +$f›ldName +, +$f›ld +['definition']); + +458 iàÐ! + `em±y +( +$»Çme +è&& + `is_¬¿y +($rename)) { + +459 + `fܗch + ( +$»Çme + +as + +$»ÇmeName + => +$»ÇmedF›ld +) { + +460 ià( +$qu”y +) { + +461 +$qu”y +.= ', '; + +463 +$f›ld + = +$chªges +['»Çme'][ +$»ÇmedF›ld +]; + +464 +$»ÇmedF›ld + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($»ÇmedF›ld, +Œue +); + +465 +$qu”y + .ð'CHANGE ' . +$»ÇmedF›ld + . ' ' + +466 . +$this +-> + `g‘Deþ¬©iÚ +( +$f›ld +['name'], $field['definition']); + +470 iàÐ! +$qu”y +) { + +471  +çl£ +; + +474 +$Çme + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($Çme, +Œue +); + +476  'ALTER TABLE ' . +$Çme + . ' ' . +$qu”y +; + +477 + } +} + +493 +public + +funùiÚ + +ü—‹Sequ’û +( +$£qu’ûName +, +$¡¬t + = 1, +¬¿y + +$ÝtiÚs + = + $¬¿y +()) + +495 +$£qu’ûName + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($£qu’ûName, +Œue +); + +496 +$£qcÞName + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($this->cÚn-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_SEQCOL_NAME +), +Œue +); + +498 +$ÝtiÚsSŒšgs + = + `¬¿y +(); + +500 ià( + `is£t +( +$ÝtiÚs +['comm’t']è&& ! + `em±y +($options['comment'])) { + +501 +$ÝtiÚsSŒšgs +['comm’t'] = 'COMMENT = ' . +$this +-> +cÚn +-> + `quÙe +( +$ÝtiÚs +['comment'], 'string'); + +504 ià( + `is£t +( +$ÝtiÚs +['ch¬£t']è&& ! + `em±y +($options['charset'])) { + +505 +$ÝtiÚsSŒšgs +['ch¬£t'] = 'DEFAULT CHARACTER SET ' . +$ÝtiÚs +['charset']; + +507 ià( + `is£t +( +$ÝtiÚs +['collate'])) { + +508 +$ÝtiÚsSŒšgs +['ch¬£t'] .ð' COLLATE ' . +$ÝtiÚs +['collate']; + +512 +$ty³ + = +çl£ +; + +514 ià( + `is£t +( +$ÝtiÚs +['type'])) { + +515 +$ty³ + = +$ÝtiÚs +['type']; + +517 +$ty³ + = +$this +-> +cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_DEFAULT_TABLE_TYPE +); + +519 ià( +$ty³ +) { + +520 +$ÝtiÚsSŒšgs +[] = 'ENGINE = ' . +$ty³ +; + +524 +Œy + { + +525 +$qu”y + = 'CREATE TABLE ' . +$£qu’ûName + + +526 . ' (' . +$£qcÞName + . ' BIGINT NOT NULL AUTO_INCREMENT, PRIMARY KEY (' + +527 . +$£qcÞName + . ')è' . + `im¶ode +( +$ÝtiÚsSŒšgs +, ' '); + +529 +$»s + = +$this +-> +cÚn +-> + `exec +( +$qu”y +); + +530 } + `ÿtch +( +Doùrše_CÚÃùiÚ_Exû±iÚ + +$e +) { + +531 +throw + +Ãw + + `Doùrše_ExpÜt_Exû±iÚ +('could‚ot create sequenceable'); + +534 ià( +$¡¬t + =ð1 && +$»s + == 1) + +535  +Œue +; + +537 +$qu”y + = 'INSERT INTO ' . +$£qu’ûName + + +538 . ' (' . +$£qcÞName + . 'èVALUES (' . ( +$¡¬t + - 1) . ')'; + +540 +$»s + = +$this +-> +cÚn +-> + `exec +( +$qu”y +); + +542 ià( +$»s + == 1) + +543  +Œue +; + +546 +Œy + { + +547 +$»suÉ + = +$this +-> +cÚn +-> + `exec +('DROP TABLE ' . +$£qu’ûName +); + +548 } + `ÿtch +( +Doùrše_CÚÃùiÚ_Exû±iÚ + +$e +) { + +549 +throw + +Ãw + + `Doùrše_ExpÜt_Exû±iÚ +('could‚ot drop inconsistent sequenceable'); + +553 + } +} + +589 +public + +funùiÚ + + $ü—‹IndexSql +( +$bË +, +$Çme +, +¬¿y + +$defš™iÚ +) + +591 +$bË + = $table; + +592 +$bË + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($bË, +Œue +); + +594 +$Çme + = +$this +-> +cÚn +-> +fÜm©‹r +-> + `g‘IndexName +($name); + +595 +$Çme + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($name); + +596 +$ty³ + = ''; + +597 ià( + `is£t +( +$defš™iÚ +['type'])) { + +598  + `¡¹Þow” +( +$defš™iÚ +['type'])) { + +601 +$ty³ + = + `¡¹ouµ” +( +$defš™iÚ +['type']) . ' '; + +604 +throw + +Ãw + + `Doùrše_ExpÜt_Exû±iÚ +( + +605 'UnknowÀty³ ' . +$defš™iÚ +['ty³'] . ' fÜ index ' . +$Çme + . ' iÀbË ' . +$bË + + +609 +$qu”y + = 'CREATE ' . +$ty³ + . 'INDEX ' . +$Çme + . ' ON ' . +$bË +; + +610 +$qu”y + .ð' (' . +$this +-> + `g‘IndexF›ldDeþ¬©iÚLi¡ +( +$defš™iÚ +['fields']) . ')'; + +612  +$qu”y +; + +613 + } +} + +623 +public + +funùiÚ + + $g‘DeçuÉF›ldDeþ¬©iÚ +( +$f›ld +) + +625 +$deçuÉ + = ''; + +626 ià( + `is£t +( +$f›ld +['default']) && ( ! isset($field['length']) || $field['length'] <= 255)) { + +627 ià( +$f›ld +['default'] === '') { + +628 +$f›ld +['deçuÉ'] = + `em±y +($field['notnull']) + +629 ? +nuÎ + : +$this +-> +v®id_deçuÉ_v®ues +[ +$f›ld +['type']]; + +631 ià( +$f›ld +['default'] === '' + +632 && ( +$this +-> +cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_PORTABILITY +è& Doùrše_CÜe:: +PORTABILITY_EMPTY_TO_NULL +) + +634 +$f›ld +['default'] = ' '; + +639 ià( +$f›ld +['ty³'] =ð'’um' && +$this +-> +cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_USE_NATIVE_ENUM +)) { + +640 +$f›ldTy³ + = 'varchar'; + +642 +$f›ldTy³ + = +$f›ld +['type']; + +645 +$deçuÉ + = ' DEFAULT ' . ( + `is_nuÎ +( +$f›ld +['default']) + +647 : +$this +-> +cÚn +-> + `quÙe +( +$f›ld +['deçuÉ'], +$f›ldTy³ +)); + +651  +$deçuÉ +; + +652 + } +} + +662 +public + +funùiÚ + + $g‘IndexDeþ¬©iÚ +( +$Çme +, +¬¿y + +$defš™iÚ +) + +664 +$Çme + = +$this +-> +cÚn +-> +fÜm©‹r +-> + `g‘IndexName +($name); + +665 +$ty³ + = ''; + +666 ià( + `is£t +( +$defš™iÚ +['type'])) { + +667  + `¡¹Þow” +( +$defš™iÚ +['type'])) { + +670 +$ty³ + = + `¡¹ouµ” +( +$defš™iÚ +['type']) . ' '; + +673 +throw + +Ãw + + `Doùrše_ExpÜt_Exû±iÚ +( + +674 'UnknowÀty³ ' . +$defš™iÚ +['ty³'] . ' fÜ index ' . +$Çme + + +679 iàÐ! + `is£t +( +$defš™iÚ +['fields'])) { + +680 +throw + +Ãw + + `Doùrše_ExpÜt_Exû±iÚ +('NØcÞumn giv’ fÜ index ' . +$Çme +); + +682 iàÐ! + `is_¬¿y +( +$defš™iÚ +['fields'])) { + +683 +$defš™iÚ +['f›lds'] = + `¬¿y +($definition['fields']); + +686 +$qu”y + = +$ty³ + . 'INDEX ' . +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$Çme +); + +688 +$qu”y + .ð' (' . +$this +-> + `g‘IndexF›ldDeþ¬©iÚLi¡ +( +$defš™iÚ +['fields']) . ')'; + +690  +$qu”y +; + +691 + } +} + +700 +public + +funùiÚ + + $g‘IndexF›ldDeþ¬©iÚLi¡ +( +¬¿y + +$f›lds +) + +702 +$deþF›lds + = + `¬¿y +(); + +704 + `fܗch + ( +$f›lds + +as + +$f›ldName + => +$f›ld +) { + +705 +$f›ldSŒšg + = +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$f›ldName +); + +707 ià( + `is_¬¿y +( +$f›ld +)) { + +708 ià( + `is£t +( +$f›ld +['length'])) { + +709 +$f›ldSŒšg + .ð'(' . +$f›ld +['length'] . ')'; + +712 ià( + `is£t +( +$f›ld +['sorting'])) { + +713 +$sÜt + = + `¡¹ouµ” +( +$f›ld +['sorting']); + +714  +$sÜt +) { + +717 +$f›ldSŒšg + .ð' ' . +$sÜt +; + +720 +throw + +Ãw + + `Doùrše_ExpÜt_Exû±iÚ +('Unknown index sorting option given.'); + +724 +$f›ldSŒšg + = +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$f›ld +); + +726 +$deþF›lds +[] = +$f›ldSŒšg +; + +728  + `im¶ode +(', ', +$deþF›lds +); + +729 + } +} + +738 +public + +funùiÚ + + $g‘Ch¬£tF›ldDeþ¬©iÚ +( +$ch¬£t +) + +740  +$this +-> +cÚn +-> +d©aDiù +-> + `g‘Ch¬£tF›ldDeþ¬©iÚ +( +$ch¬£t +); + +741 + } +} + +750 +public + +funùiÚ + + $g‘CÞÏtiÚF›ldDeþ¬©iÚ +( +$cÞÏtiÚ +) + +752  +$this +-> +cÚn +-> +d©aDiù +-> + `g‘CÞÏtiÚF›ldDeþ¬©iÚ +( +$cÞÏtiÚ +); + +753 + } +} + +763 +public + +funùiÚ + + $g‘AdvªûdFÜeignKeyO±iÚs +( +¬¿y + +$defš™iÚ +) + +765 +$qu”y + = ''; + +766 iàÐ! + `em±y +( +$defš™iÚ +['match'])) { + +767 +$qu”y + .ð' MATCH ' . +$defš™iÚ +['match']; + +769 iàÐ! + `em±y +( +$defš™iÚ +['onUpdate'])) { + +770 +$qu”y + .ð' ON UPDATE ' . +$this +-> + `g‘FÜeignKeyReã»ÁŸlAùiÚ +( +$defš™iÚ +['onUpdate']); + +772 iàÐ! + `em±y +( +$defš™iÚ +['onDelete'])) { + +773 +$qu”y + .ð' ON DELETE ' . +$this +-> + `g‘FÜeignKeyReã»ÁŸlAùiÚ +( +$defš™iÚ +['onDelete']); + +775  +$qu”y +; + +776 + } +} + +785 +public + +funùiÚ + + $drÝIndexSql +( +$bË +, +$Çme +) + +787 +$bË + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($bË, +Œue +); + +788 +$Çme + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($this->cÚn-> +fÜm©‹r +-> + `g‘IndexName +($Çme), +Œue +); + +789  'DROP INDEX ' . +$Çme + . ' ON ' . +$bË +; + +790 + } +} + +799 +public + +funùiÚ + + $drÝTabËSql +( +$bË +) + +801 +$bË + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($bË, +Œue +); + +802  'DROP TABLE ' . +$bË +; + +803 + } +} + +812 +public + +funùiÚ + + $drÝFÜeignKey +( +$bË +, +$Çme +) + +814 +$bË + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($table); + +815 +$Çme + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($this->cÚn-> +fÜm©‹r +-> + `g‘FÜeignKeyName +($name)); + +817  +$this +-> +cÚn +-> + `exec +('ALTER TABLE ' . +$bË + . ' DROP FOREIGN KEY ' . +$Çme +); + +818 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Export/Oracle.php + +1 +cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_EMULATE_DATABASE +)) { + +46 +$u£ºame + = +$Çme +; + +47 +$·sswÜd + = +$this +-> +cÚn +-> +d¢ +['·sswÜd'] ? $this->cÚn->d¢['·sswÜd'] : +$Çme +; + +49 +$bË¥aû + = +$this +-> +cÚn +-> +ÝtiÚs +['default_tablespace'] + +50 ? ' DEFAULT TABLESPACE '. +$this +-> +cÚn +-> +ÝtiÚs +['default_tablespace'] : ''; + +52 +$qu”y + = 'CREATE USER ' . +$u£ºame + . ' IDENTIFIED BY ' . +$·sswÜd + . +$bË¥aû +; + +53 +$»suÉ + = +$this +-> +cÚn +-> + `exec +( +$qu”y +); + +55 +Œy + { + +56 +$qu”y + = 'GRANT CREATE SESSION, CREATE TABLE, UNLIMITED TABLESPACE, CREATE SEQUENCE, CREATE TRIGGER TO ' . +$u£ºame +; + +57 +$»suÉ + = +$this +-> +cÚn +-> + `exec +( +$qu”y +); + +58 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +59 +$this +-> + `drÝD©aba£ +( +$u£ºame +); + +62  +Œue +; + +73 +public + +funùiÚ + + $drÝD©aba£ +( +$Çme +) + +75 +$sql + = <<< +SQL + + +76 +BEGIN + + +77 -- +u£r_bËs + +cڏšs + +®so + +m©”Ÿlized + +v›ws + + +78 +FOR + +I + + `IN + ( +SELECT + +bË_Çme + +FROM + +u£r_bËs + +WHERE +abË_Çm +NOT + IN (SELECT +mv›w_Çme + FROM +u£r_mv›ws +)) + +79 +LOOP + + +80 +EXECUTE + +IMMEDIATE + 'DROP TABLE "'|| +I +. +bË_Çme +||'" CASCADE CONSTRAINTS'; + +81 +END + +LOOP +; + +83 +FOR + +I + + `IN + ( +SELECT + +SEQUENCE_NAME + +FROM + +USER_SEQUENCES +) + +84 +LOOP + + +85 +EXECUTE + +IMMEDIATE + 'DROP SEQUENCE "'|| +I +. +SEQUENCE_NAME +||'"'; + +86 +END + +LOOP +; + +87 +END +; + +89 +SQL +; + +91 +$this +-> +cÚn +-> + `exec +( +$sql +); + +93 ià( +$this +-> +cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_EMULATE_DATABASE +)) { + +94 +$u£ºame + = +$Çme +; + +95 +$this +-> +cÚn +-> + `exec +('DROP USER ' . +$u£ºame + . ' CASCADE'); + +97 + } +} + +108 +public + +funùiÚ + + $_makeAutošüem’t +( +$Çme +, +$bË +, +$¡¬t + = 1) + +110 +$sql + = + `¬¿y +(); + +112 iàÐ! +$this +-> +cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_QUOTE_IDENTIFIER +)) { + +113 +$bË + = + `¡¹ouµ” +($table); + +115 +$šdexName + = +$bË + . '_AI_PK'; + +116 +$defš™iÚ + = + `¬¿y +( + +117 '´im¬y' => +Œue +, + +118 'f›lds' => + `¬¿y +( +$Çme + => +Œue +), + +121 +$sql +[] = 'DECLARE + +122 +cÚ¡¿šts_CouÁ + +NUMBER +; + +123 +BEGIN + + +124 +SELECT + + `COUNT +( +CONSTRAINT_NAME +è +INTO + +cÚ¡¿šts_CouÁ + +FROM + +USER_CONSTRAINTS + +WHERE + +TABLE_NAME + = \''. +$bË +.'\' AND CONSTRAINT_TYPE = \'P\'; + +125 +IF + +cÚ¡¿šts_CouÁ + = 0 +THEN + + +126 +EXECUTE + +IMMEDIATE + \''. +$this +-> + `ü—‹CÚ¡¿štSql +( +$bË +, +$šdexName +, +$defš™iÚ +).'\'; + +127 +END + +IF +; + +128 +END +;'; + +130 ià( + `is_nuÎ +( +$¡¬t +)) { + +131 +$qu”y + = 'SELECT MAX(' . +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$Çme +, +Œue +è. 'èFROM ' . $this->cÚn->quÙeId’tif›r( +$bË +,rue); + +132 +$¡¬t + = +$this +-> +cÚn +-> + `ãtchOà +( +$qu”y +); + +134 ++ +$¡¬t +; + +137 +$sql +[] = +$this +-> + `ü—‹Sequ’ûSql +( +$bË +, +$¡¬t +); + +139 +$£qu’ûName + = +$this +-> +cÚn +-> +fÜm©‹r +-> + `g‘Sequ’ûName +( +$bË +); + +140 +$Œigg”Name + = +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$bË + . '_AI_PK', +Œue +); + +141 +$bË + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($bË, +Œue +); + +142 +$Çme + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($Çme, +Œue +); + +143 +$sql +[] = 'CREATE TRIGGER ' . +$Œigg”Name + . ' + +144 +BEFORE + +INSERT + + +145 +ON + ' . $table . ' + +146 +FOR + +EACH + +ROW + + +147 +DECLARE + + +148 +Ï¡_Sequ’û + +NUMBER +; + +149 +Ï¡_In£¹ID + +NUMBER +; + +150 +BEGIN + + +151 + `IF + (: +NEW +.' . $Çm. ' +IS + +NULL + +OR + :NEW.'.$Çme.' = 0è +THEN + + +152 +SELECT + ' . $this->cÚn->quÙeId’tif›r($£qu’ûNameè. '. +NEXTVAL + +INTO + : +NEW +.' . $Çm. ' +FROM + +DUAL +; + +153 +ELSE + + +154 +SELECT + + `NVL +( +La¡_Numb” +, 0è +INTO + +Ï¡_Sequ’û + + +155 +FROM + +U£r_Sequ’ûs + + +156 +WHERE + + `UPPER +( +Sequ’û_Name +èðUPPER(\'' . +$£qu’ûName + . '\'); + +157 +SELECT + : +NEW +.' . $Çm. ' +INTO + +Ï¡_In£¹ID + +FROM + +DUAL +; + +158 + `WHILE + ( +Ï¡_In£¹ID + > +Ï¡_Sequ’û +è +LOOP + + +159 +SELECT + ' . $this->cÚn->quÙeId’tif›r($£qu’ûNameè. '. +NEXTVAL + +INTO + +Ï¡_Sequ’û + +FROM + +DUAL +; + +160 +END + +LOOP +; + +161 +END + +IF +; + +162 +END +;'; + +163  +$sql +; + +164 + } +} + +172 +public + +funùiÚ + + $drÝAutošüem’t +( +$bË +) + +174 +$bË + = + `¡¹ouµ” +($table); + +175 +$Œigg”Name + = +$bË + . '_AI_PK'; + +176 +$Œigg”_Çme_quÙed + = +$this +-> +cÚn +-> + `quÙe +( +$Œigg”Name +); + +177 +$qu”y + = 'SELECTrigger_name FROM user_triggers'; + +178 +$qu”y +.ð' WHERErigg”_Çme='. +$Œigg”_Çme_quÙed +.' ORrigg”_Çme='. + `¡¹ouµ” +($trigger_name_quoted); + +179 +$Œigg” + = +$this +-> +cÚn +-> + `ãtchOà +( +$qu”y +); + +181 ià( +$Œigg” +) { + +182 +$Œigg”_Çme + = +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$bË + . '_AI_PK', +Œue +); + +183 +$Œigg”_sql + = 'DROP TRIGGER ' . +$Œigg”_Çme +; + +186 +$this +-> +cÚn +-> + `exec +( +$Œigg”_sql +); + +189 +$this +-> + `drÝSequ’û +( +$bË +); + +191 +$šdexName + = +$bË + . '_AI_PK'; + +194 +$this +-> + `drÝCÚ¡¿št +( +$bË +, +$šdexName +); + +196 + } +} + +204 +public + +funùiÚ + + $g‘TempܬyTabËQu”y +() + +207 + } +} + +218 +public + +funùiÚ + + $g‘AdvªûdFÜeignKeyO±iÚs +( +¬¿y + +$defš™iÚ +) + +220 +$qu”y + = ''; + +221 ià( + `is£t +( +$defš™iÚ +['ÚD–‘e']è&& + `¡¹ouµ” +( + `Œim +($definition['onDelete'])) != 'NO ACTION') { + +222 +$qu”y + .ð' ON DELETE ' . +$defš™iÚ +['onDelete']; + +224 ià( + `is£t +( +$defš™iÚ +['deferrable'])) { + +225 +$qu”y + .= ' DEFERRABLE'; + +227 +$qu”y + .= ' NOT DEFERRABLE'; + +229 ià( + `is£t +( +$defš™iÚ +['feferred'])) { + +230 +$qu”y + .= ' INITIALLY DEFERRED'; + +232 +$qu”y + .= ' INITIALLY IMMEDIATE'; + +234  +$qu”y +; + +235 + } +} + +268 +public + +funùiÚ + +ü—‹TabË +( +$Çme +, +¬¿y + +$f›lds +,‡¼ay +$ÝtiÚs + = + $¬¿y +()) + +270 +$this +-> +cÚn +-> + `begšT¿n§ùiÚ +(); + +272 + `fܗch + ( +$this +-> + `ü—‹TabËSql +( +$Çme +, +$f›lds +, +$ÝtiÚs +è +as + +$sql +) { + +273 +$this +-> +cÚn +-> + `exec +( +$sql +); + +276 +$this +-> +cÚn +-> + `comm™ +(); + +277 + } +} + +310 +public + +funùiÚ + +ü—‹TabËSql +( +$Çme +, +¬¿y + +$f›lds +,‡¼ay +$ÝtiÚs + = + $¬¿y +()) + +312 +$sql + = +·»Á +:: + `ü—‹TabËSql +( +$Çme +, +$f›lds +, +$ÝtiÚs +); + +314 ià( + `is£t +( +$ÝtiÚs +['comm’t']è&& ! + `em±y +($options['comment'])) { + +315 +$sql +[] = +$this +-> + `_ü—‹TabËComm’tSql +( +$Çme +, +$ÝtiÚs +['comment']); + +318 + `fܗch + ( +$f›lds + +as + +$f›ldName + => +$f›ld +) { + +319 ià( + `is£t +( +$f›ld +['sequence'])) { + +320 +$sql +[] = +$this +-> + `ü—‹Sequ’ûSql +( +$f›ld +['sequence'], 1); + +323 ià( + `is£t +( +$f›ld +['autoincrement']) && $field['autoincrement'] || + +324 ( + `is£t +( +$f›ld +['autošc']è&& +$f›lds +['autoinc'])) { + +325 +$sql + = + `¬¿y_m”ge +($sql, +$this +-> + `_makeAutošüem’t +( +$f›ldName +, +$Çme +)); + +328 ià( + `is£t +( +$f›ld +['comm’t']è&& ! + `em±y +($field['comment'])){ + +329 +$sql +[] = +$this +-> + `_ü—‹CÞumnComm’tSql +( +$Çme +, +$f›ldName +, +$f›ld +['comment']); + +333 ià( + `is£t +( +$ÝtiÚs +['šdexes']è&& ! + `em±y +($options['indexes'])) { + +334 + `fܗch + ( +$ÝtiÚs +['šdexes'] +as + +$šdexName + => +$defš™iÚ +) { + +336 iàÐ! + `is£t +( +$defš™iÚ +['type']) || + +337 ( + `is£t +( +$defš™iÚ +['ty³']è&& + `¡¹Þow” +($definition['type']) != 'unique')) { + +338 +$sql +[] = +$this +-> + `ü—‹IndexSql +( +$Çme +, +$šdexName +, +$defš™iÚ +); + +343  +$sql +; + +344 + } +} + +354 +public + +funùiÚ + + $_ü—‹TabËComm’tSql +( +$bË +, +$comm’t +) + +356  'COMMENT ON TABLE '. +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$bË +, +Œue +). ' IS '.$this->cÚn-> + `quÙe +( +$comm’t +, 'text').''; + +357 + } +} + +368 +public + +funùiÚ + + $_ü—‹CÞumnComm’tSql +( +$bË +, +$cÞumn +, +$comm’t +) + +370  'COMMENT ON COLUMN '. +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$bË +, +Œue +). '.'. $this->cÚn->quÙeId’tif›r( +$cÞumn +,rue). ' IS '.$this->cÚn-> + `quÙe +( +$comm’t +, 'text').''; + +371 + } +} + +379 +public + +funùiÚ + + $drÝTabË +( +$Çme +) + +382 +$»suÉ + = +$this +-> + `drÝAutošüem’t +( +$Çme +); + +383 +$»suÉ + = +·»Á +:: + `drÝTabË +( +$Çme +); + +385  +$»suÉ +; + +386 + } +} + +476 +public + +funùiÚ + + $®‹rTabË +( +$Çme +, +¬¿y + +$chªges +, +$check + = +çl£ +) + +479 + `fܗch + ( +$chªges + +as + +$chªgeName + => +$chªge +) { + +480  +$chªgeName +) { + +488 +throw + +Ãw + + `Doùrše_ExpÜt_Exû±iÚ +('chªgty³ "' . +$chªgeName + . '"‚ot yet supported'); + +492 ià( +$check +) { + +493  +çl£ +; + +496 +$Çme + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($Çme, +Œue +); + +498 iàÐ! + `em±y +( +$chªges +['add']è&& + `is_¬¿y +($changes['add'])) { + +499 +$f›lds + = + `¬¿y +(); + +500 + `fܗch + ( +$chªges +['add'] +as + +$f›ldName + => +$f›ld +) { + +501 +$f›lds +[] = +$this +-> + `g‘Deþ¬©iÚ +( +$f›ldName +, +$f›ld +); + +503 +$»suÉ + = +$this +-> +cÚn +-> + `exec +('ALTER TABLE ' . +$Çme + . ' ADD (' . + `im¶ode +(', ', +$f›lds +) . ')'); + +506 iàÐ! + `em±y +( +$chªges +['chªge']è&& + `is_¬¿y +($changes['change'])) { + +507 +$f›lds + = + `¬¿y +(); + +508 + `fܗch + ( +$chªges +['chªge'] +as + +$f›ldName + => +$f›ld +) { + +509 +$f›lds +[] = +$f›ldName +. ' ' . +$this +-> + `g‘Deþ¬©iÚ +('', +$f›ld +['definition']); + +511 +$»suÉ + = +$this +-> +cÚn +-> + `exec +('ALTER TABLE ' . +$Çme + . ' MODIFY (' . + `im¶ode +(', ', +$f›lds +) . ')'); + +514 iàÐ! + `em±y +( +$chªges +['»Çme']è&& + `is_¬¿y +($changes['rename'])) { + +515 + `fܗch + ( +$chªges +['»Çme'] +as + +$f›ldName + => +$f›ld +) { + +516 +$qu”y + = 'ALTER TABLE ' . +$Çme + . ' RENAME COLUMN ' . +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$f›ldName +, +Œue +) + +517 . ' TO ' . +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$f›ld +['name']); + +519 +$»suÉ + = +$this +-> +cÚn +-> + `exec +( +$qu”y +); + +523 iàÐ! + `em±y +( +$chªges +['»move']è&& + `is_¬¿y +($changes['remove'])) { + +524 +$f›lds + = + `¬¿y +(); + +525 + `fܗch + ( +$chªges +['»move'] +as + +$f›ldName + => +$f›ld +) { + +526 +$f›lds +[] = +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$f›ldName +, +Œue +); + +528 +$»suÉ + = +$this +-> +cÚn +-> + `exec +('ALTER TABLE ' . +$Çme + . ' DROP COLUMN ' . + `im¶ode +(', ', +$f›lds +)); + +531 iàÐ! + `em±y +( +$chªges +['name'])) { + +532 +$chªgeName + = +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$chªges +['Çme'], +Œue +); + +533 +$»suÉ + = +$this +-> +cÚn +-> + `exec +('ALTER TABLE ' . +$Çme + . ' RENAME TO ' . +$chªgeName +); + +535 + } +} + +550 +public + +funùiÚ + +ü—‹Sequ’ûSql +( +$£qName +, +$¡¬t + = 1, +¬¿y + +$ÝtiÚs + = + $¬¿y +()) + +552 +$£qu’ûName + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($this->cÚn-> +fÜm©‹r +-> + `g‘Sequ’ûName +( +$£qName +), +Œue +); + +553 +$qu”y + = 'CREATE SEQUENCE ' . +$£qu’ûName + . ' START WITH ' . +$¡¬t + . ' INCREMENT BY 1 NOCACHE'; + +554 +$qu”y + .ð( +$¡¬t + < 1 ? ' MINVALUE ' . $start : ''); + +555  +$qu”y +; + +556 + } +} + +565 +public + +funùiÚ + + $drÝSequ’ûSql +( +$£qName +) + +567 +$£qu’ûName + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($this->cÚn-> +fÜm©‹r +-> + `g‘Sequ’ûName +( +$£qName +), +Œue +); + +568  'DROP SEQUENCE ' . +$£qu’ûName +; + +569 + } +} + +579 +public + +funùiÚ + + $g‘IndexDeþ¬©iÚ +( +$Çme +, +¬¿y + +$defš™iÚ +) + +581 +$Çme + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($name); + +582 +$ty³ + = ''; + +584 iàÐ + `is£t +( +$defš™iÚ +['type'])) + +586 ià( + `¡¹Þow” +( +$defš™iÚ +['type']) == 'unique') { + +587 +$ty³ + = + `¡¹ouµ” +( +$defš™iÚ +['type']); + +589 +throw + +Ãw + + `Doùrše_ExpÜt_Exû±iÚ +( + +590 'UnknowÀty³ '. +$defš™iÚ +['ty³'] .' fÜ index '. +$Çme + + +595  +nuÎ +; + +598 iàÐ! + `is£t +( +$defš™iÚ +['f›lds']è|| ! + `is_¬¿y +($definition['fields'])) { + +599 +throw + +Ãw + + `Doùrše_ExpÜt_Exû±iÚ +('NØcÞumn giv’ fÜ index '. +$Çme +); + +602 +$qu”y + = 'CONSTRAINT '. +$Çme +.' '. +$ty³ +.' ('. +$this +-> + `g‘IndexF›ldDeþ¬©iÚLi¡ +( +$defš™iÚ +['fields']).')'; + +604  +$qu”y +; + +605 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Export/Pgsql.php + +1 +cÚn +-> + `quÙeId’tif›r +( +$Çme +); + +48  +$qu”y +; + +58 +public + +funùiÚ + + $drÝD©aba£Sql +( +$Çme +) + +60 +$qu”y + = 'DROP DATABASE ' . +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$Çme +); + +62  +$qu”y +; + +63 + } +} + +74 +public + +funùiÚ + + $g‘AdvªûdFÜeignKeyO±iÚs +( +¬¿y + +$defš™iÚ +) + +76 +$qu”y + = ''; + +77 ià( + `is£t +( +$defš™iÚ +['match'])) { + +78 +$qu”y + .ð' MATCH ' . +$defš™iÚ +['match']; + +80 ià( + `is£t +( +$defš™iÚ +['onUpdate'])) { + +81 +$qu”y + .ð' ON UPDATE ' . +$defš™iÚ +['onUpdate']; + +83 ià( + `is£t +( +$defš™iÚ +['onDelete'])) { + +84 +$qu”y + .ð' ON DELETE ' . +$defš™iÚ +['onDelete']; + +86 ià( + `is£t +( +$defš™iÚ +['deferrable'])) { + +87 +$qu”y + .= ' DEFERRABLE'; + +89 +$qu”y + .= ' NOT DEFERRABLE'; + +91 ià( + `is£t +( +$defš™iÚ +['deferred'])) { + +92 +$qu”y + .= ' INITIALLY DEFERRED'; + +94 +$qu”y + .= ' INITIALLY IMMEDIATE'; + +96  +$qu”y +; + +97 + } +} + +110 +public + +funùiÚ + + $®‹rTabËSql +( +$Çme +, +¬¿y + +$chªges +, +$check + = +çl£ +) + +112 + `fܗch + ( +$chªges + +as + +$chªgeName + => +$chªge +) { + +113  +$chªgeName +) { + +121 +throw + +Ãw + + `Doùrše_ExpÜt_Exû±iÚ +('chªgty³ "' . +$chªgeName + . '\"‚ot yet supported'); + +125 ià( +$check +) { + +126  +Œue +; + +129 +$sql + = + `¬¿y +(); + +131 ià( + `is£t +( +$chªges +['add']è&& + `is_¬¿y +($changes['add'])) { + +132 + `fܗch + ( +$chªges +['add'] +as + +$f›ldName + => +$f›ld +) { + +133 +$qu”y + = 'ADD ' . +$this +-> + `g‘Deþ¬©iÚ +( +$f›ldName +, +$f›ld +); + +134 +$sql +[] = 'ALTER TABLE ' . +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$Çme +, +Œue +è. ' ' . +$qu”y +; + +138 ià( + `is£t +( +$chªges +['»move']è&& + `is_¬¿y +($changes['remove'])) { + +139 + `fܗch + ( +$chªges +['»move'] +as + +$f›ldName + => +$f›ld +) { + +140 +$f›ldName + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($f›ldName, +Œue +); + +141 +$qu”y + = 'DROP ' . +$f›ldName +; + +142 +$sql +[] = 'ALTER TABLE ' . +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$Çme +, +Œue +è. ' ' . +$qu”y +; + +146 ià( + `is£t +( +$chªges +['chªge']è&& + `is_¬¿y +($changes['change'])) { + +147 + `fܗch + ( +$chªges +['chªge'] +as + +$f›ldName + => +$f›ld +) { + +148 +$f›ldName + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($f›ldName, +Œue +); + +149 ià( + `is£t +( +$f›ld +['definition']['type'])) { + +150 +$£rv”Info + = +$this +-> +cÚn +-> + `g‘S”v”V”siÚ +(); + +152 ià( + `is_¬¿y +( +$£rv”Info +) && $serverInfo['major'] < 8) { + +153 +throw + +Ãw + + `Doùrše_ExpÜt_Exû±iÚ +('chªgšg cÞumÀty³ fÜ "'. +$f›ld +['type'].'\"„equires PostgreSQL 8.0 or‡bove'); + +155 +$qu”y + = 'ALTER ' . +$f›ldName + . ' TYPE ' . +$this +-> +cÚn +-> +d©aDiù +-> + `g‘N©iveDeþ¬©iÚ +( +$f›ld +['definition']); + +156 +$sql +[] = 'ALTER TABLE ' . +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$Çme +, +Œue +è. ' ' . +$qu”y +; + +158 ià( + `¬¿y_key_exi¡s +('deçuÉ', +$f›ld +['definition'])) { + +159 +$qu”y + = 'ALTER ' . +$f›ldName + . ' SET DEFAULT ' . +$this +-> +cÚn +-> + `quÙe +( +$f›ld +['definition']['default'], $field['definition']['type']); + +160 +$sql +[] = 'ALTER TABLE ' . +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$Çme +, +Œue +è. ' ' . +$qu”y +; + +162 iàÐ + `is£t +( +$f›ld +['definition']['notnull'])) { + +163 +$qu”y + = 'ALTER ' . +$f›ldName + . ' ' . ( +$f›ld +['definition']['notnull'] ? 'SET' : 'DROP') . ' NOT NULL'; + +164 +$sql +[] = 'ALTER TABLE ' . +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$Çme +, +Œue +è. ' ' . +$qu”y +; + +169 ià( + `is£t +( +$chªges +['»Çme']è&& + `is_¬¿y +($changes['rename'])) { + +170 + `fܗch + ( +$chªges +['»Çme'] +as + +$f›ldName + => +$f›ld +) { + +171 +$f›ldName + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($f›ldName, +Œue +); + +172 +$sql +[] = 'ALTER TABLE ' . +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$Çme +, +Œue +è. ' RENAME COLUMN ' . +$f›ldName + . ' TO ' . $this->cÚn->quÙeId’tif›r( +$f›ld +['name'],rue); + +176 +$Çme + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($Çme, +Œue +); + +177 ià( + `is£t +( +$chªges +['name'])) { + +178 +$chªgeName + = +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$chªges +['Çme'], +Œue +); + +179 +$sql +[] = 'ALTER TABLE ' . +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$Çme +, +Œue +è. ' RENAME TO ' . +$chªgeName +; + +182  +$sql +; + +183 + } +} + +274 +public + +funùiÚ + + $®‹rTabË +( +$Çme +, +¬¿y + +$chªges +, +$check + = +çl£ +) + +276 +$sql + = +$this +-> + `®‹rTabËSql +( +$Çme +, +$chªges +, +$check +); + +277 + `fܗch + ( +$sql + +as + +$qu”y +) { + +278 +$this +-> +cÚn +-> + `exec +( +$qu”y +); + +280  +Œue +; + +281 + } +} + +297 +public + +funùiÚ + +ü—‹Sequ’ûSql +( +$£qu’ûName +, +$¡¬t + = 1, +¬¿y + +$ÝtiÚs + = + $¬¿y +()) + +299 +$£qu’ûName + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($this->cÚn-> +fÜm©‹r +-> + `g‘Sequ’ûName +($£qu’ûName), +Œue +); + +300  'CREATE SEQUENCE ' . +$£qu’ûName + . ' INCREMENT 1' . + +301 ( +$¡¬t + < 1 ? ' MINVALUE ' . $start : '') . ' START ' . $start; + +302 + } +} + +309 +public + +funùiÚ + + $drÝSequ’ûSql +( +$£qu’ûName +) + +311 +$£qu’ûName + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($this->cÚn-> +fÜm©‹r +-> + `g‘Sequ’ûName +($£qu’ûName), +Œue +); + +312  'DROP SEQUENCE ' . +$£qu’ûName +; + +313 + } +} + +323 +public + +funùiÚ + +ü—‹TabËSql +( +$Çme +, +¬¿y + +$f›lds +,‡¼ay +$ÝtiÚs + = + $¬¿y +()) + +325 iàÐ! +$Çme +) { + +326 +throw + +Ãw + + `Doùrše_ExpÜt_Exû±iÚ +('no validable‚ame specified'); + +329 ià( + `em±y +( +$f›lds +)) { + +330 +throw + +Ãw + + `Doùrše_ExpÜt_Exû±iÚ +('nØf›ld ¥ecif›d f܁abË ' . +$Çme +); + +333 +$qu”yF›lds + = +$this +-> + `g‘F›ldDeþ¬©iÚLi¡ +( +$f›lds +); + +336 ià( + `is£t +( +$ÝtiÚs +['´im¬y']è&& ! + `em±y +($options['primary'])) { + +337 +$keyCÞumns + = + `¬¿y_v®ues +( +$ÝtiÚs +['primary']); + +338 +$keyCÞumns + = + `¬¿y_m­ +( + `¬¿y +( +$this +-> +cÚn +, 'quoteIdentifier'), $keyColumns); + +339 +$qu”yF›lds + .ð', PRIMARY KEY(' . + `im¶ode +(', ', +$keyCÞumns +) . ')'; + +342 +$qu”y + = 'CREATE TABLE ' . +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$Çme +, +Œue +è. ' (' . +$qu”yF›lds +; + +344 ià( +$check + = +$this +-> + `g‘CheckDeþ¬©iÚ +( +$f›lds +)) { + +345 +$qu”y + .ð', ' . +$check +; + +348 ià( + `is£t +( +$ÝtiÚs +['checks']è&& +$check + = +$this +-> + `g‘CheckDeþ¬©iÚ +($options['checks'])) { + +349 +$qu”y + .ð', ' . +$check +; + +352 +$qu”y + .= ')'; + +354 +$sql +[] = +$qu”y +; + +356 ià( + `is£t +( +$ÝtiÚs +['šdexes']è&& ! + `em±y +($options['indexes'])) { + +357 + `fܗch +( +$ÝtiÚs +['šdexes'] +as + +$šdex + => +$defš™iÚ +) { + +358 +$sql +[] = +$this +-> + `ü—‹IndexSql +( +$Çme +, +$šdex +, +$defš™iÚ +); + +362 ià( + `is£t +( +$ÝtiÚs +['foreignKeys'])) { + +364 + `fܗch + (( +¬¿y +è +$ÝtiÚs +['fÜeignKeys'] +as + +$k + => +$defš™iÚ +) { + +365 ià( + `is_¬¿y +( +$defš™iÚ +)) { + +366 +$sql +[] = +$this +-> + `ü—‹FÜeignKeySql +( +$Çme +, +$defš™iÚ +); + +370 ià( + `is£t +( +$ÝtiÚs +['sequenceName'])) { + +371 +$sql +[] = +$this +-> + `ü—‹Sequ’ûSql +( +$ÝtiÚs +['sequenceName']); + +373  +$sql +; + +374 + } +} + +385 +public + +funùiÚ + + $ü—‹IndexSql +( +$bË +, +$Çme +, +¬¿y + +$defš™iÚ +) + +387 +$qu”y + = +·»Á +:: + `ü—‹IndexSql +( +$bË +, +$Çme +, +$defš™iÚ +); + +388 ià( + `is£t +( +$defš™iÚ +['where'])) { + +389  +$qu”y + . ' WHERE ' . +$defš™iÚ +['where']; + +391  +$qu”y +; + +392 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Export/Reporter.php + +1 +mes§ges +[] = + `¬¿y +( +$code +, +$mes§ge +); + +42 +public + +funùiÚ + + $pÝ +() + +44  + `¬¿y_pÝ +( +$this +-> +mes§ges +); + +45 + } +} + +47 +public + +funùiÚ + + $g‘I‹¿tÜ +() + +49  +Ãw + + `A¼ayI‹¿tÜ +( +$this +-> +mes§ges +); + +50 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Export/Schema.php + +1 +g‘Exp܏bËFÜm© +(); + +73 + m$bË + = +¬¿y +(); + +74 + m$bË +['cÚÃùiÚ'] = +$»cÜdTabË +-> +g‘CÚÃùiÚ +()-> +g‘Name +(); + +75 + m$»move + = +¬¿y +('ptype', 'ntype', 'alltypes'); + +77 +fܗch + ( +$d©a +['cÞumns'] +AS + +$Çme + => +$cÞumn +) { + +78 ià( +is£t +( +$cÞumn +['length']) && $column['length'] && isset($column['scale']) && $column['scale']) { + +79 +$d©a +['cÞumns'][ +$Çme +]['ty³'] = +$cÞumn +['type'] . '(' . $column['length'] . ', ' . $column['scale'] . ')'; + +80 +un£t +( +$d©a +['cÞumns'][ +$Çme +]['length'], $data['columns'][$name]['scale']); + +82 + m$d©a +['cÞumns'][ +$Çme +]['ty³'] = +$cÞumn +['type'] . '(' . $column['length'] . ')'; + +83 +un£t +( +$d©a +['cÞumns'][ +$Çme +]['length']); + +86 +fܗch + ( +$»move + +as + +$v®ue +) { + +87 ià( +is£t +( +$d©a +['cÞumns'][ +$Çme +][ +$v®ue +])) { + +88 +un£t +( +$d©a +['cÞumns'][ +$Çme +][ +$v®ue +]); + +94 ià( +couÁ +( +$d©a +['cÞumns'][ +$Çme +]è==ð1 && +is£t +($data['columns'][$name]['type'])) { + +95 +$ty³ + = +$d©a +['cÞumns'][ +$Çme +]['type']; + +96 +un£t +( +$d©a +['cÞumns'][ +$Çme +]); + +97 + m$d©a +['cÞumns'][ +$Çme +] = +$ty³ +; + +100 + m$bË +['bËName'] = +$d©a +['tableName']; + +101 + m$bË +['cÞumns'] = +$d©a +['columns']; + +103 + m$»ÏtiÚs + = +$»cÜdTabË +-> +g‘R–©iÚs +(); + +104 +fܗch + ( +$»ÏtiÚs + +as + +$key + => +$»ÏtiÚ +) { + +105 +$»ÏtiÚD©a + = +$»ÏtiÚ +-> +toA¼ay +(); + +107 + m$»ÏtiÚKey + = +$»ÏtiÚD©a +['alias']; + +109 ià( +is£t +( +$»ÏtiÚD©a +['»fTabË']è&& + m$»ÏtiÚD©a +['refTable']) { + +110 + m$bË +['»ÏtiÚs'][ +$»ÏtiÚKey +]['»fCÏss'] = +$»ÏtiÚD©a +['»fTabË']-> +g‘CompڒtName +(); + +113 ià( +is£t +( +$»ÏtiÚD©a +['þass']è&& + m$»ÏtiÚD©a +['þass'] && + m$»ÏtiÚ +['þass'] !ð +$»ÏtiÚKey +) { + +114 +$bË +['»ÏtiÚs'][ +$»ÏtiÚKey +]['þass'] = +$»ÏtiÚD©a +['class']; + +117 + m$bË +['»ÏtiÚs'][ +$»ÏtiÚKey +]['loÿl'] = +$»ÏtiÚD©a +['local']; + +118 + m$bË +['»ÏtiÚs'][ +$»ÏtiÚKey +]['fÜeign'] = +$»ÏtiÚD©a +['foreign']; + +120 ià( + m$»ÏtiÚD©a +['ty³'] ==ð +Doùrše_R–©iÚ +:: +ONE +) { + +121 +$bË +['»ÏtiÚs'][ +$»ÏtiÚKey +]['type'] = 'one'; + +122 } ià( + m$»ÏtiÚD©a +['ty³'] ==ð +Doùrše_R–©iÚ +:: +MANY +) { + +123 +$bË +['»ÏtiÚs'][ +$»ÏtiÚKey +]['type'] = 'many'; + +125 + m$bË +['»ÏtiÚs'][ +$»ÏtiÚKey +]['type'] = 'one'; + +129 + m$¬¿y +[ +$þassName +] = +$bË +; + +132  + m$¬¿y +; + +144 +public + +funùiÚ + +expÜtSchema +( +$schema +, +$fÜm© + = 'yml', +$dœeùÜy + = +nuÎ +, +$mod–s + = +¬¿y +(), +$mod–Lßdšg + =‚ull) + +146 +$¬¿y + = +$this +-> +buždSchema +( +$dœeùÜy +, +$mod–s +, +$mod–Lßdšg +); + +148 ià( +is_dœ +( +$schema +)) { + +149 + g$schema + = +$schema + . +DIRECTORY_SEPARATOR + . 'schema.' . +$fÜm© +; + +152  + gDoùrše_P¬£r +:: +dump +( +$¬¿y +, +$fÜm© +, +$schema +); + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Export/Sqlite.php + +1 +cÚn +-> +fÜm©‹r +-> + `g‘IndexName +($name); + +106 +$Çme + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($name); + +107 +$ty³ + = ''; + +109 ià( + `is£t +( +$defš™iÚ +['type'])) { + +110  + `¡¹Þow” +( +$defš™iÚ +['type'])) { + +112 +$ty³ + = + `¡¹ouµ” +( +$defš™iÚ +['type']) . ' '; + +115 +throw + +Ãw + + `Doùrše_ExpÜt_Exû±iÚ +( + +116 'UnknowÀty³ ' . +$defš™iÚ +['ty³'] . ' fÜ index ' . +$Çme + . ' iÀbË ' . +$bË + + +121 +$qu”y + = 'CREATE ' . +$ty³ + . 'INDEX ' . +$Çme + . ' ON ' . +$bË +; + +122 +$qu”y + .ð' (' . +$this +-> + `g‘IndexF›ldDeþ¬©iÚLi¡ +( +$defš™iÚ +['fields']) . ')'; + +124  +$qu”y +; + +125 + } +} + +134 +public + +funùiÚ + + $g‘IndexF›ldDeþ¬©iÚLi¡ +( +¬¿y + +$f›lds +) + +136 +$deþF›lds + = + `¬¿y +(); + +138 + `fܗch + ( +$f›lds + +as + +$f›ldName + => +$f›ld +) { + +139 +$f›ldSŒšg + = +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$f›ldName +); + +141 ià( + `is_¬¿y +( +$f›ld +)) { + +142 ià( + `is£t +( +$f›ld +['sorting'])) { + +143 +$sÜt + = + `¡¹ouµ” +( +$f›ld +['sorting']); + +144  +$sÜt +) { + +147 +$f›ldSŒšg + .ð' ' . +$sÜt +; + +150 +throw + +Ãw + + `Doùrše_ExpÜt_Exû±iÚ +('Unknown index sorting option given.'); + +154 +$f›ldSŒšg + = +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$f›ld +); + +156 +$deþF›lds +[] = +$f›ldSŒšg +; + +158  + `im¶ode +(', ', +$deþF›lds +); + +159 + } +} + +189 +public + +funùiÚ + +ü—‹TabËSql +( +$Çme +, +¬¿y + +$f›lds +,‡¼ay +$ÝtiÚs + = + $¬¿y +()) + +191 iàÐ! +$Çme +) { + +192 +throw + +Ãw + + `Doùrše_ExpÜt_Exû±iÚ +('no validable‚ame specified'); + +195 ià( + `em±y +( +$f›lds +)) { + +196 +throw + +Ãw + + `Doùrše_ExpÜt_Exû±iÚ +('nØf›ld ¥ecif›d f܁abË '. +$Çme +); + +198 +$qu”yF›lds + = +$this +-> + `g‘F›ldDeþ¬©iÚLi¡ +( +$f›lds +); + +200 +$autošc + = +çl£ +; + +201 + `fܗch +( +$f›lds + +as + +$f›ld +) { + +202 ià( + `is£t +( +$f›ld +['autoincrement']) && $field['autoincrement'] || + +203 ( + `is£t +( +$f›ld +['autoinc']) && $field['autoinc'])) { + +204 +$autošc + = +Œue +; + +209 iàÐ! +$autošc + && + `is£t +( +$ÝtiÚs +['´im¬y']è&& ! + `em±y +($options['primary'])) { + +210 +$keyCÞumns + = + `¬¿y_v®ues +( +$ÝtiÚs +['primary']); + +211 +$keyCÞumns + = + `¬¿y_m­ +( + `¬¿y +( +$this +-> +cÚn +, 'quoteIdentifier'), $keyColumns); + +212 +$qu”yF›lds +.ð', PRIMARY KEY('. + `im¶ode +(', ', +$keyCÞumns +).')'; + +215 +$Çme + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($Çme, +Œue +); + +216 +$sql + = 'CREATE TABLE ' . +$Çme + . ' (' . +$qu”yF›lds +; + +218 ià( +$check + = +$this +-> + `g‘CheckDeþ¬©iÚ +( +$f›lds +)) { + +219 +$sql + .ð', ' . +$check +; + +222 ià( + `is£t +( +$ÝtiÚs +['checks']è&& +$check + = +$this +-> + `g‘CheckDeþ¬©iÚ +($options['checks'])) { + +223 +$sql + .ð', ' . +$check +; + +226 +$sql + .= ')'; + +228 +$qu”y +[] = +$sql +; + +230 ià( + `is£t +( +$ÝtiÚs +['šdexes']è&& ! + `em±y +($options['indexes'])) { + +231 + `fܗch + ( +$ÝtiÚs +['šdexes'] +as + +$šdex + => +$defš™iÚ +) { + +232 +$qu”y +[] = +$this +-> + `ü—‹IndexSql +( +$Çme +, +$šdex +, +$defš™iÚ +); + +236  +$qu”y +; + +237 + } +} + +248 +public + +funùiÚ + + $g‘AdvªûdFÜeignKeyO±iÚs +( +¬¿y + +$defš™iÚ +) + +250 +$qu”y + = ''; + +251 ià( + `is£t +( +$defš™iÚ +['match'])) { + +252 +$qu”y + .ð' MATCH ' . +$defš™iÚ +['match']; + +254 ià( + `is£t +( +$defš™iÚ +['onUpdate'])) { + +255 +$qu”y + .ð' ON UPDATE ' . +$defš™iÚ +['onUpdate']; + +257 ià( + `is£t +( +$defš™iÚ +['onDelete'])) { + +258 +$qu”y + .ð' ON DELETE ' . +$defš™iÚ +['onDelete']; + +260 ià( + `is£t +( +$defš™iÚ +['deferrable'])) { + +261 +$qu”y + .= ' DEFERRABLE'; + +263 +$qu”y + .= ' NOT DEFERRABLE'; + +265 ià( + `is£t +( +$defš™iÚ +['feferred'])) { + +266 +$qu”y + .= ' INITIALLY DEFERRED'; + +268 +$qu”y + .= ' INITIALLY IMMEDIATE'; + +270  +$qu”y +; + +271 + } +} + +286 +public + +funùiÚ + +ü—‹Sequ’û +( +$£qName +, +$¡¬t + = 1, +¬¿y + +$ÝtiÚs + = + $¬¿y +()) + +288 +$£qu’ûName + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($this->cÚn-> +fÜm©‹r +-> + `g‘Sequ’ûName +( +$£qName +), +Œue +); + +289 +$£qcÞName + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($this->cÚn-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_SEQCOL_NAME +), +Œue +); + +290 +$qu”y + = 'CREATE TABLE ' . +$£qu’ûName + . ' (' . +$£qcÞName + . ' INTEGER PRIMARY KEY DEFAULT 0 NOT NULL)'; + +292 +$this +-> +cÚn +-> + `exec +( +$qu”y +); + +294 ià( +$¡¬t + == 1) { + +295  +Œue +; + +298 +Œy + { + +299 +$this +-> +cÚn +-> + `exec +('INSERT INTO ' . +$£qu’ûName + . ' (' . +$£qcÞName + . 'èVALUES (' . ( +$¡¬t +-1) . ')'); + +300  +Œue +; + +301 } + `ÿtch +( +Doùrše_CÚÃùiÚ_Exû±iÚ + +$e +) { + +304 +Œy + { + +305 +$»suÉ + = +$db +-> + `exec +('DROP TABLE ' . +$£qu’ûName +); + +306 } + `ÿtch +( +Doùrše_CÚÃùiÚ_Exû±iÚ + +$e +) { + +307 +throw + +Ãw + + `Doùrše_ExpÜt_Exû±iÚ +('could‚ot drop inconsistent sequenceable'); + +310 +throw + +Ãw + + `Doùrše_ExpÜt_Exû±iÚ +('could‚ot create sequenceable'); + +311 + } +} + +319 +public + +funùiÚ + + $drÝSequ’ûSql +( +$£qu’ûName +) + +321 +$£qu’ûName + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($this->cÚn-> +fÜm©‹r +-> + `g‘Sequ’ûName +($£qu’ûName), +Œue +); + +323  'DROP TABLE ' . +$£qu’ûName +; + +324 + } +} + +326 +public + +funùiÚ + + $®‹rTabËSql +( +$Çme +, +¬¿y + +$chªges +, +$check + = +çl£ +) + +328 iàÐ! +$Çme +) { + +329 +throw + +Ãw + + `Doùrše_ExpÜt_Exû±iÚ +('no validable‚ame specified'); + +331 + `fܗch + ( +$chªges + +as + +$chªgeName + => +$chªge +) { + +332  +$chªgeName +) { + +339 +throw + +Ãw + + `Doùrše_ExpÜt_Exû±iÚ +('chªgty³ "' . +$chªgeName + . '"‚ot yet supported'); + +343 ià( +$check +) { + +344  +Œue +; + +347 +$qu”y + = ''; + +348 iàÐ! + `em±y +( +$chªges +['name'])) { + +349 +$chªge_Çme + = +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$chªges +['name']); + +350 +$qu”y + .ð'RENAME TO ' . +$chªge_Çme +; + +353 iàÐ! + `em±y +( +$chªges +['add']è&& + `is_¬¿y +($changes['add'])) { + +354 + `fܗch + ( +$chªges +['add'] +as + +$f›ldName + => +$f›ld +) { + +355 ià( +$qu”y +) { + +356 +$qu”y +.= ', '; + +358 +$qu”y +.ð'ADD ' . +$this +-> + `g‘Deþ¬©iÚ +( +$f›ldName +, +$f›ld +); + +362 +$»Çme + = + `¬¿y +(); + +363 iàÐ! + `em±y +( +$chªges +['»Çme']è&& + `is_¬¿y +($changes['rename'])) { + +364 + `fܗch + ( +$chªges +['»Çme'] +as + +$f›ldName + => +$f›ld +) { + +365 +$»Çme +[ +$f›ld +['Çme']] = +$f›ldName +; + +369 iàÐ! + `em±y +( +$chªges +['chªge']è&& + `is_¬¿y +($changes['change'])) { + +370 + `fܗch + ( +$chªges +['chªge'] +as + +$f›ldName + => +$f›ld +) { + +371 ià( +$qu”y +) { + +372 +$qu”y +.= ', '; + +374 ià( + `is£t +( +$»Çme +[ +$f›ldName +])) { + +375 +$ÞdF›ldName + = +$»Çme +[ +$f›ldName +]; + +376 + `un£t +( +$»Çme +[ +$f›ldName +]); + +378 +$ÞdF›ldName + = +$f›ldName +; + +380 +$ÞdF›ldName + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($ÞdF›ldName, +Œue +); + +381 +$qu”y + .ð'CHANGE ' . +$ÞdF›ldName + . ' ' + +382 . +$this +-> + `g‘Deþ¬©iÚ +( +$f›ldName +, +$f›ld +['definition']); + +386 iàÐ! + `em±y +( +$»Çme +è&& + `is_¬¿y +($rename)) { + +387 + `fܗch + ( +$»Çme + +as + +$»ÇmeName + => +$»ÇmedF›ld +) { + +388 ià( +$qu”y +) { + +389 +$qu”y +.= ', '; + +391 +$f›ld + = +$chªges +['»Çme'][ +$»ÇmedF›ld +]; + +392 +$»ÇmedF›ld + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($»ÇmedF›ld, +Œue +); + +393 +$qu”y + .ð'CHANGE ' . +$»ÇmedF›ld + . ' ' + +394 . +$this +-> + `g‘Deþ¬©iÚ +( +$f›ld +['name'], $field['definition']); + +398 iàÐ! +$qu”y +) { + +399  +çl£ +; + +402 +$Çme + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($Çme, +Œue +); + +404  'ALTER TABLE ' . +$Çme + . ' ' . +$qu”y +; + +405 + } +} + +417 +public + +funùiÚ + + $ü—‹FÜeignKey +( +$bË +, +¬¿y + +$defš™iÚ +) + +419  +çl£ +; + +420 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Expression.php + +1 +_cÚn + = +$cÚn +; + +59 +$this +-> +_tok’iz” + = +Ãw + + `Doùrše_Qu”y_Tok’iz” +(); + +60 +$this +-> + `£tEx´essiÚ +( +$ex´ +); + +69 +public + +funùiÚ + + $g‘CÚÃùiÚ +() + +71 iàÐ! + `is£t +( +$this +-> +_cÚn +)) { + +72  +Doùrše_Mªag” +:: + `cÚÃùiÚ +(); + +75  +$this +-> +_cÚn +; + +76 + } +} + +87 +public + +funùiÚ + + $£tEx´essiÚ +( +$þau£ +) + +89 +$this +-> +_ex´essiÚ + = $this-> + `·r£CÏu£ +( +$þau£ +); + +90 + } +} + +99 +public + +funùiÚ + + $·r£Ex´essiÚ +( +$ex´ +) + +101 +$pos + = + `¡½os +( +$ex´ +, '('); + +102 +$quÙed + = ( + `sub¡r +( +$ex´ +, 0, 1) === "'" && substr($expr, -1) === "'"); + +103 ià( +$pos + ==ð +çl£ + || +$quÙed +) { + +104  +$ex´ +; + +108 +$Çme + = + `sub¡r +( +$ex´ +, 0, +$pos +); + +109 +$¬gSŒ + = + `sub¡r +( +$ex´ +, ( +$pos + + 1), -1); + +112 + `fܗch + ( +$this +-> +_tok’iz” +-> + `b¿ck‘Ex¶ode +( +$¬gSŒ +, ','è +as + +$¬g +) { + +113 +$¬gs +[] = +$this +-> + `·r£CÏu£ +( +$¬g +); + +116  + `ÿÎ_u£r_func_¬¿y +( + `¬¿y +( +$this +-> + `g‘CÚÃùiÚ +()-> +ex´essiÚ +, +$Çme +), +$¬gs +); + +117 + } +} + +126 +public + +funùiÚ + + $·r£CÏu£ +( +$þau£ +) + +128 +$e + = +$this +-> +_tok’iz” +-> + `b¿ck‘Ex¶ode +( +$þau£ +, ' '); + +130 + `fܗch + ( +$e + +as + +$k + => +$ex´ +) { + +131 +$e +[ +$k +] = +$this +-> + `·r£Ex´essiÚ +( +$ex´ +); + +134  + `im¶ode +(' ', +$e +); + +135 + } +} + +142 +public + +funùiÚ + + $g‘Sql +() + +144  +$this +-> +_ex´essiÚ +; + +145 + } +} + +154 +public + +funùiÚ + + $__toSŒšg +() + +156  +$this +-> + `g‘Sql +(); + +157 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Expression/Driver.php + +1 + `g‘Id’tif›r +($column); + +65  'AVG(' . +$cÞumn + . ')'; + +66 + } +} + +77 +public + +funùiÚ + + $couÁ +( +$cÞumn +) + +79 +$cÞumn + = +$this +-> + `g‘Id’tif›r +($column); + +80  'COUNT(' . +$cÞumn + . ')'; + +81 + } +} + +89 +public + +funùiÚ + + $max +( +$cÞumn +) + +91 +$cÞumn + = +$this +-> + `g‘Id’tif›r +($column); + +92  'MAX(' . +$cÞumn + . ')'; + +93 + } +} + +101 +public + +funùiÚ + + $mš +( +$cÞumn +) + +103 +$cÞumn + = +$this +-> + `g‘Id’tif›r +($column); + +104  'MIN(' . +$cÞumn + . ')'; + +105 + } +} + +113 +public + +funùiÚ + + $sum +( +$cÞumn +) + +115 +$cÞumn + = +$this +-> + `g‘Id’tif›r +($column); + +116  'SUM(' . +$cÞumn + . ')'; + +117 + } +} + +128 +public + +funùiÚ + + $md5 +( +$cÞumn +) + +130 +$cÞumn + = +$this +-> + `g‘Id’tif›r +($column); + +131  'MD5(' . +$cÞumn + . ')'; + +132 + } +} + +141 +public + +funùiÚ + + $Ëngth +( +$cÞumn +) + +143 +$cÞumn + = +$this +-> + `g‘Id’tif›r +($column); + +144  'LENGTH(' . +$cÞumn + . ')'; + +145 + } +} + +154 +public + +funùiÚ + + $round +( +$cÞumn +, +$decim®s + = 0) + +156 +$cÞumn + = +$this +-> + `g‘Id’tif›r +($column); + +158  'ROUND(' . +$cÞumn + . ', ' . +$decim®s + . ')'; + +159 + } +} + +169 +public + +funùiÚ + + $mod +( +$ex´essiÚ1 +, +$ex´essiÚ2 +) + +171 +$ex´essiÚ1 + = +$this +-> + `g‘Id’tif›r +($expression1); + +172 +$ex´essiÚ2 + = +$this +-> + `g‘Id’tif›r +($expression2); + +173  'MOD(' . +$ex´essiÚ1 + . ', ' . +$ex´essiÚ2 + . ')'; + +174 + } +} + +183 +public + +funùiÚ + + $Œim +( +$¡r +) + +185  'TRIM(' . +$¡r + . ')'; + +186 + } +} + +195 +public + +funùiÚ + + $¹rim +( +$¡r +) + +197  'RTRIM(' . +$¡r + . ')'; + +198 + } +} + +207 +public + +funùiÚ + + $Érim +( +$¡r +) + +209  'LTRIM(' . +$¡r + . ')'; + +210 + } +} + +220 +public + +funùiÚ + + $uµ” +( +$¡r +) + +222  'UPPER(' . +$¡r + . ')'; + +223 + } +} + +233 +public + +funùiÚ + + $low” +( +$¡r +) + +235  'LOWER(' . +$¡r + . ')'; + +236 + } +} + +246 +public + +funùiÚ + + $loÿ‹ +( +$¡r +, +$sub¡r +) + +248  'LOCATE(' . +$¡r + . ', ' . +$sub¡r + . ')'; + +249 + } +} + +256 +public + +funùiÚ + + $now +() + +259 + } +} + +271 +public + +funùiÚ + + $soundex +( +$v®ue +) + +273 +throw + +Ãw + + `Doùrše_Ex´essiÚ_Exû±iÚ +('SQL soundex function‚ot supported byhis driver.'); + +274 + } +} + +288 +public + +funùiÚ + + $sub¡ršg +( +$v®ue +, +$äom +, +$Ën + = +nuÎ +) + +290 +$v®ue + = +$this +-> + `g‘Id’tif›r +($value); + +291 ià( +$Ën + ==ð +nuÎ +) + +292  'SUBSTRING(' . +$v®ue + . ' FROM ' . +$äom + . ')'; + +294 +$Ën + = +$this +-> + `g‘Id’tif›r +($len); + +295  'SUBSTRING(' . +$v®ue + . ' FROM ' . +$äom + . ' FOR ' . +$Ën + . ')'; + +297 + } +} + +307 +public + +funùiÚ + + $cÚÿt +() + +309 +$¬gs + = + `func_g‘_¬gs +(); + +311  'CONCAT(' . + `još +(', ', ( +¬¿y +è +$¬gs +) . ')'; + +312 + } +} + +319 +public + +funùiÚ + + $nÙ +( +$ex´essiÚ +) + +321 +$ex´essiÚ + = +$this +-> + `g‘Id’tif›r +($expression); + +322  'NOT(' . +$ex´essiÚ + . ')'; + +323 + } +} + +337 +´iv©e + +funùiÚ + + $basicM©h +( +$ty³ +, +¬¿y + +$¬gs +) + +339 +$–em’ts + = +$this +-> + `g‘Id’tif›rs +( +$¬gs +); + +340 ià( + `couÁ +( +$–em’ts +) < 1) { + +343 ià( + `couÁ +( +$–em’ts +) == 1) { + +344  +$–em’ts +[0]; + +346  '(' . + `im¶ode +(' ' . +$ty³ + . ' ', +$–em’ts +) . ')'; + +348 + } +} + +360 +public + +funùiÚ + + $add +( +¬¿y + +$¬gs +) + +362  +$this +-> + `basicM©h +('+', +$¬gs +); + +363 + } +} + +375 +public + +funùiÚ + + $sub +( +¬¿y + +$¬gs +) + +377  +$this +-> + `basicM©h +('-', +$¬gs + ); + +378 + } +} + +390 +public + +funùiÚ + + $mul +( +¬¿y + +$¬gs +) + +392  +$this +-> + `basicM©h +('*', +$¬gs +); + +393 + } +} + +405 +public + +funùiÚ + + $div +( +¬¿y + +$¬gs +) + +407  +$this +-> + `basicM©h +('/', +$¬gs +); + +408 + } +} + +417 +public + +funùiÚ + + $eq +( +$v®ue1 +, +$v®ue2 +) + +419 +$v®ue1 + = +$this +-> + `g‘Id’tif›r +($value1); + +420 +$v®ue2 + = +$this +-> + `g‘Id’tif›r +($value2); + +421  +$v®ue1 + . ' = ' . +$v®ue2 +; + +422 + } +} + +431 +public + +funùiÚ + + $Ãq +( +$v®ue1 +, +$v®ue2 +) + +433 +$v®ue1 + = +$this +-> + `g‘Id’tif›r +($value1); + +434 +$v®ue2 + = +$this +-> + `g‘Id’tif›r +($value2); + +435  +$v®ue1 + . ' <> ' . +$v®ue2 +; + +436 + } +} + +445 +public + +funùiÚ + + $gt +( +$v®ue1 +, +$v®ue2 +) + +447 +$v®ue1 + = +$this +-> + `g‘Id’tif›r +($value1); + +448 +$v®ue2 + = +$this +-> + `g‘Id’tif›r +($value2); + +449  +$v®ue1 + . ' > ' . +$v®ue2 +; + +450 + } +} + +460 +public + +funùiÚ + + $g‹ +( +$v®ue1 +, +$v®ue2 +) + +462 +$v®ue1 + = +$this +-> + `g‘Id’tif›r +($value1); + +463 +$v®ue2 + = +$this +-> + `g‘Id’tif›r +($value2); + +464  +$v®ue1 + . ' >ð' . +$v®ue2 +; + +465 + } +} + +474 +public + +funùiÚ + + $É +( +$v®ue1 +, +$v®ue2 +) + +476 +$v®ue1 + = +$this +-> + `g‘Id’tif›r +($value1); + +477 +$v®ue2 + = +$this +-> + `g‘Id’tif›r +($value2); + +478  +$v®ue1 + . ' < ' . +$v®ue2 +; + +479 + } +} + +489 +public + +funùiÚ + + $Ée +( +$v®ue1 +, +$v®ue2 +) + +491 +$v®ue1 + = +$this +-> + `g‘Id’tif›r +($value1); + +492 +$v®ue2 + = +$this +-> + `g‘Id’tif›r +($value2); + +493  +$v®ue1 + . ' <ð' . +$v®ue2 +; + +494 + } +} + +509 +public + +funùiÚ + + $š +( +$cÞumn +, +$v®ues +) + +511 iàÐ! + `is_¬¿y +( +$v®ues +)) { + +512 +$v®ues + = + `¬¿y +($values); + +514 +$v®ues + = +$this +-> + `g‘Id’tif›rs +($values); + +515 +$cÞumn + = +$this +-> + `g‘Id’tif›r +($column); + +517 ià( + `couÁ +( +$v®ues +) == 0) { + +518 +throw + +Ãw + + `Doùrše_Ex´essiÚ_Exû±iÚ +('Values‡rray for IN operator should‚ot beƒmpty.'); + +520  +$cÞumn + . ' IN (' . + `im¶ode +(', ', +$v®ues +) . ')'; + +521 + } +} + +529 +public + +funùiÚ + + $isNuÎ +( +$ex´essiÚ +) + +531 +$ex´essiÚ + = +$this +-> + `g‘Id’tif›r +($expression); + +532  +$ex´essiÚ + . ' IS NULL'; + +533 + } +} + +541 +public + +funùiÚ + + $isNÙNuÎ +( +$ex´essiÚ +) + +543 +$ex´essiÚ + = +$this +-> + `g‘Id’tif›r +($expression); + +544  +$ex´essiÚ + . ' IS NOT NULL'; + +545 + } +} + +562 +public + +funùiÚ + + $b‘w“n +( +$ex´essiÚ +, +$v®ue1 +, +$v®ue2 +) + +564 +$ex´essiÚ + = +$this +-> + `g‘Id’tif›r +($expression); + +565 +$v®ue1 + = +$this +-> + `g‘Id’tif›r +($value1); + +566 +$v®ue2 + = +$this +-> + `g‘Id’tif›r +($value2); + +567  +$ex´essiÚ + . ' BETWEEN ' . +$v®ue1 + . ' AND ' . +$v®ue2 +; + +568 + } +} + +575 +public + +funùiÚ + + $guid +() + +577 +throw + +Ãw + + `Doùrše_Ex´essiÚ_Exû±iÚ +('method‚ot implemented'); + +578 + } +} + +585 +public + +funùiÚ + + $acos +( +$v®ue +) + +587  'ACOS(' . +$v®ue + . ')'; + +588 + } +} + +596 +public + +funùiÚ + + $sš +( +$v®ue +) + +598  'SIN(' . +$v®ue + . ')'; + +599 + } +} + +606 +public + +funùiÚ + + $pi +() + +609 + } +} + +617 +public + +funùiÚ + + $cos +( +$v®ue +) + +619  'COS(' . +$v®ue + . ')'; + +620 + } +} + +627 +public + +funùiÚ + + $cßËsû +() + +629 +$¬gs + = + `func_g‘_¬gs +(); + +631  'COALESCE(' . + `još +(', ', ( +¬¿y +è +$¬gs +) . ')'; + +632 + } +} + +639 +public + +funùiÚ + + $__ÿÎ +( +$m +, +$a +) + +641 ià( +$this +-> +cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_PORTABILITY +è& Doùrše_CÜe:: +PORTABILITY_EXPR +) { + +642 +throw + +Ãw + + `Doùrše_Ex´essiÚ_Exû±iÚ +('UnknowÀex´essiÚ: ' . +$m +); + +645  +$m + . '(' . + `im¶ode +(', ', +$a +) . ')'; + +646 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Expression/Exception.php + +1 +$v®ue +) { + +93 ià( +$key + % 2) { + +94 +$m©ch + .ð +$v®ue +; + +96 +$m©ch + .ð +$this +-> +cÚn +-> + `esÿ³P©‹º +($this->cÚn-> + `esÿ³ +( +$v®ue +)); + +99 +$m©ch +.= "'"; + +100 +$m©ch +.ð +$this +-> + `·‰”nEsÿ³SŒšg +(); + +101  +$m©ch +; + +102 + } +} + +109 +public + +funùiÚ + + $guid +() + +112 + } +} + +120 +public + +funùiÚ + + $y—r +( +$cÞumn +) + +122 +$cÞumn + = +$this +-> + `g‘Id’tif›r +($column); + +123  'YEAR(' . +$cÞumn + . ')'; + +124 + } +} + +132 +public + +funùiÚ + + $mÚth +( +$cÞumn +) + +134 +$cÞumn + = +$this +-> + `g‘Id’tif›r +($column); + +135  'MONTH(' . +$cÞumn + . ')'; + +136 + } +} + +144 +public + +funùiÚ + + $day +( +$cÞumn +) + +146 +$cÞumn + = +$this +-> + `g‘Id’tif›r +($column); + +147  'DAY(' . +$cÞumn + . ')'; + +148 + } +} + +156 +public + +funùiÚ + + $soundex +( +$cÞumn +) + +158  'SOUNDEX(' . +$cÞumn + . ')'; + +159 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Expression/Oracle.php + +1 + `g‘Id’tif›r +($column); + +57  'MD5(' . +$cÞumn + . ')'; + +70 +public + +funùiÚ + + $sub¡ršg +( +$v®ue +, +$äom +, +$Ën + = +nuÎ +) + +72 +$v®ue + = +$this +-> + `g‘Id’tif›r +($value); + +74 ià( +$Ën + ==ð +nuÎ +) { + +75 +$Ën + = +$this +-> + `g‘Id’tif›r +($len); + +76  'SUBSTR(' . +$v®ue + . ', ' . +$äom + . ')'; + +78  'SUBSTR(' . +$v®ue + . ', ' . +$äom + . ', ' . +$Ën + . ')'; + +80 + } +} + +100 +public + +funùiÚ + + $age +( +$time¡amp1 +, +$time¡amp2 + = +nuÎ +) { + +101 iàÐ +$time¡amp2 + =ð +nuÎ + ) { + +102  'AGE(' . +$time¡amp1 + . ')'; + +104  'AGE(' . +$time¡amp1 + . ', ' . +$time¡amp2 + . ')'; + +105 + } +} + +114 +public + +funùiÚ + + $d©e_·¹ +( +$‹xt +, +$time +) + +116  'DATE_PART(' . +$‹xt + . ', ' . +$time + . ')'; + +117 + } +} + +126 +public + +funùiÚ + + $to_ch¬ +( +$time +, +$‹xt +) { + +127  'TO_CHAR(' . +$time + . ', ' . +$‹xt + . ')'; + +128 + } +} + +136 +public + +funùiÚ + + $cÚÿt +() + +138 +$¬gs + = + `func_g‘_¬gs +(); + +140  + `još +(' || ' , +$¬gs +); + +141 + } +} + +148 +public + +funùiÚ + + $now +() + +151 + } +} + +158 +public + +funùiÚ + + $»gexp +() + +161 + } +} + +169 +public + +funùiÚ + + $¿ndom +() + +172 + } +} + +191 +public + +funùiÚ + + $m©chP©‹º +( +$·‰”n +, +$ݔ©Ü + = +nuÎ +, +$f›ld + =‚ull) + +193 +$m©ch + = ''; + +194 iàÐ! + `is_nuÎ +( +$ݔ©Ü +)) { + +195 +$f›ld + = + `is_nuÎ +($field) ? '' : $field.' '; + +196 +$ݔ©Ü + = + `¡¹ouµ” +($operator); + +197  +$ݔ©Ü +) { + +200 +$m©ch + = +$f›ld +.'ILIKE '; + +204 +$m©ch + = +$f›ld +.'LIKE '; + +207 +throw + +Ãw + + `Doùrše_Ex´essiÚ_Pgsql_Exû±iÚ +('nه suµÜ‹d o³¿t܁y³:'. +$ݔ©Ü +); + +210 +$m©ch +.= "'"; + +211 + `fܗch + ( +$·‰”n + +as + +$key + => +$v®ue +) { + +212 ià( +$key + % 2) { + +213 +$m©ch +.ð +$v®ue +; + +215 +$m©ch +.ð +$this +-> +cÚn +-> + `esÿ³P©‹º +($this->cÚn-> + `esÿ³ +( +$v®ue +)); + +218 +$m©ch +.= "'"; + +219 +$m©ch +.ð +$this +-> + `·‰”nEsÿ³SŒšg +(); + +220  +$m©ch +; + +221 + } +} + +228 +public + +funùiÚ + + $Œª¦©e +( +$¡ršg +, +$äom +, +$to +) + +230 +$Œª¦©e + = 'TRANSLATE(' . +$¡ršg + . ', ' . +$äom + . ', ' . +$to + . ')'; + +231  +$Œª¦©e +; + +232 + } +} + +241 +public + +funùiÚ + + $loÿ‹ +( +$sub¡r +, +$¡r +) + +243  +$this +-> + `pos™iÚ +( +$sub¡r +, +$¡r +); + +244 + } +} + +253 +public + +funùiÚ + + $pos™iÚ +( +$sub¡r +, +$¡r +) + +255 +$sub¡r + = +$this +-> + `g‘Id’tif›r +($substr); + +256 +$¡r + = +$this +-> + `g‘Id’tif›r +($str); + +258  + `¥rštf +('POSITION(% IN %s)', +$sub¡r +, +$¡r +); + +259 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Expression/Sqlite.php + +1 + `hasCÞumn +('url', 'string', 255); + +40 +public + +funùiÚ + + $£tUp +() + +42 +$this +-> + `aùAs +('S—rchabË', + `¬¿y +('className' => 'Doctrine_File_Index', + +43 'f›lds' => + `¬¿y +('url', 'content'))); + +45 +$this +-> + `šdex +('u¾', + `¬¿y +('fields' =>‡rray('url'))); + +46 + } +} + +48 +public + +funùiÚ + + $g‘ +( +$Çme +, +$lßd + = +Œue +) + +50 ià( +$Çme + === 'content') { + +51  + `fže_g‘_cڋÁs +( +·»Á +:: + `g‘ +('url')); + +53  +·»Á +:: + `g‘ +( +$Çme +, +$lßd +); + +54 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/File/Index.php + +1 + `hasCÞumn +('keywÜd', '¡ršg', 255, + `¬¿y +('nÙnuÎ' => +Œue +, + +38 '´im¬y' => +Œue +)); + +40 +$this +-> + `hasCÞumn +('f›ld', '¡ršg', 50, + `¬¿y +('nÙnuÎ' => +Œue +, + +41 '´im¬y' => +Œue +)); + +43 +$this +-> + `hasCÞumn +('pos™iÚ', '¡ršg', 255, + `¬¿y +('nÙnuÎ' => +Œue +, + +44 '´im¬y' => +Œue +)); + +46 +$this +-> + `hasCÞumn +('fže_id', 'š‹g”', 8, + `¬¿y +('nÙnuÎ' => +Œue +, + +47 '´im¬y' => +Œue +)); + +50 +public + +funùiÚ + + $£tUp +() + +52 +$this +-> + `hasOà +('Doùrše_Fže', + `¬¿y +('local' => 'file_id', + +56 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Formatter.php + +1 +¡ršg_quٚg +['escape_pattern']) { + +50  +$‹xt +; + +52 +$tmp + = +$this +-> +cÚn +-> +¡ršg_quٚg +; + +54 +$‹xt + = + `¡r_»¶aû +( +$tmp +['escape_pattern'], + +55 +$tmp +['escape_pattern'] . + +56 +$tmp +['esÿ³_·‰”n'], +$‹xt +); + +58 + `fܗch + ( +$this +-> +wždÿrds + +as + +$wždÿrd +) { + +59 +$‹xt + = + `¡r_»¶aû +( +$wždÿrd +, +$tmp +['escape_pattern'] . $wildcard, $text); + +61  +$‹xt +; + +74 +public + +funùiÚ + + $cÚv”tBoޗns +( +$™em +) + +76 ià( + `is_¬¿y +( +$™em +)) { + +77 + `fܗch + ( +$™em + +as + +$k + => +$v®ue +) { + +78 ià( + `is_boÞ +( +$v®ue +)) { + +79 +$™em +[ +$k +] = (è +$v®ue +; + +83 ià( + `is_boÞ +( +$™em +)) { + +84 +$™em + = () $item; + +87  +$™em +; + +88 + } +} + +122 +public + +funùiÚ + + $quÙeId’tif›r +( +$¡r +, +$checkO±iÚ + = +Œue +) + +124 ià( +$checkO±iÚ + && ! +$this +-> +cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_QUOTE_IDENTIFIER +)) { + +125  +$¡r +; + +127 +$tmp + = +$this +-> +cÚn +-> +id’tif›r_quٚg +; + +128 +$¡r + = + `¡r_»¶aû +( +$tmp +['end'], + +129 +$tmp +['escape'] . + +130 +$tmp +['’d'], +$¡r +); + +132  +$tmp +['¡¬t'] . +$¡r + . $tmp['end']; + +133 + } +} + +145 +public + +funùiÚ + + $quÙeMuɝËId’tif›r +( +$¬r +, +$checkO±iÚ + = +Œue +) + +147 + `fܗch + ( +$¬r + +as + +$k + => +$v +) { + +148 +$¬r +[ +$k +] = +$this +-> + `quÙeId’tif›r +( +$v +, +$checkO±iÚ +); + +151  +$¬r +; + +152 + } +} + +162 +public + +funùiÚ + + $quÙe +( +$šput +, +$ty³ + = +nuÎ +) + +164 ià( +$ty³ + =ð +nuÎ +) { + +165 +$ty³ + = + `g‘ty³ +( +$šput +); + +167  +$ty³ +) { + +174  +$šput +; + +177 +$šput + = + `£rŸlize +($input); + +191  "'" . + `¡r_»¶aû +("'","''", +$šput +) . "'"; + +193 + } +} + +201 +public + +funùiÚ + + $fixSequ’ûName +( +$sqn +) + +203 +$£qP©‹º + = '/^'. + `´eg_»¶aû +('/%s/', '([a-z0-9_]+)', +$this +-> +cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_SEQNAME_FORMAT +)).'$/i'; + +204 +$£qName + = + `´eg_»¶aû +( +$£qP©‹º +, '\\1', +$sqn +); + +206 ià( +$£qName + && ! + `¡rÿ£cmp +( +$sqn +, +$this +-> + `g‘Sequ’ûName +($seqName))) { + +207  +$£qName +; + +209  +$sqn +; + +210 + } +} + +218 +public + +funùiÚ + + $fixIndexName +( +$idx +) + +220 +$šdexP©‹º + = '/^'. + `´eg_»¶aû +('/%s/', '([a-z0-9_]+)', +$this +-> +cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_IDXNAME_FORMAT +)).'$/i'; + +221 +$šdexName + = + `´eg_»¶aû +( +$šdexP©‹º +, '\\1', +$idx +); + +222 ià( +$šdexName + && ! + `¡rÿ£cmp +( +$idx +, +$this +-> + `g‘IndexName +($indexName))) { + +223  +$šdexName +; + +225  +$idx +; + +226 + } +} + +234 +public + +funùiÚ + + $g‘Sequ’ûName +( +$sqn +) + +236  + `¥rštf +( +$this +-> +cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_SEQNAME_FORMAT +), + +237 + `´eg_»¶aû +('/[^a-z0-9_\$.]/i', '_', +$sqn +)); + +238 + } +} + +246 +public + +funùiÚ + + $g‘IndexName +( +$idx +) + +248  + `¥rštf +( +$this +-> +cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_IDXNAME_FORMAT +), + +249 + `´eg_»¶aû +('/[^a-z0-9_\$]/i', '_', +$idx +)); + +250 + } +} + +258 +public + +funùiÚ + + $g‘FÜeignKeyName +( +$fkey +) + +260  + `¥rštf +( +$this +-> +cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_FKNAME_FORMAT +), + +261 + `´eg_»¶aû +('/[^a-z0-9_\$]/i', '_', +$fkey +)); + +262 + } +} + +270 +public + +funùiÚ + + $g‘TabËName +( +$bË +) + +272 +$fÜm© + = +$this +-> +cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_TBLNAME_FORMAT +); + +273  + `¥rštf +( +$fÜm© +, + `¡r_»¶aû +(¥rštf($fÜm©, +nuÎ +),‚uÎ, +$bË +)); + +274 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hook.php + +1 +qu”y + = +Doùrše_Qu”y +:: + `ü—‹ +(); + +83 +$this +-> +qu”y +-> + `·r£DqlQu”y +( +$qu”y +); + +84 } + `–£if + ( +$qu”y + +š¡ªûof + +Doùrše_Qu”y +) { + +85 +$this +-> +qu”y + = +$qu”y +; + +87 +throw + +Ãw + + `Doùrše_Exû±iÚ +('Constructor‡rgument should beƒither Doctrine_Query object or valid DQL query'); + +90 +$this +-> +qu”y +-> + `g‘SqlQu”y +(); + +98 +public + +funùiÚ + + $g‘Qu”y +() + +100  +$this +-> +qu”y +; + +101 + } +} + +109 +public + +funùiÚ + + $£tTy³P¬£r +( +$ty³ +, +$·r£r +) + +111 +$this +-> +ty³P¬£rs +[ +$ty³ +] = +$·r£r +; + +112 + } +} + +120 +public + +funùiÚ + + $£tF›ldP¬£r +( +$f›ld +, +$·r£r +) + +122 +$this +-> +f›ldP¬£rs +[ +$f›ld +] = +$·r£r +; + +123 + } +} + +133 +public + +funùiÚ + + $hookWh”e +( +$·¿ms +) + +135 iàÐ! + `is_¬¿y +( +$·¿ms +)) { + +136  +çl£ +; + +138 + `fܗch + ( +$·¿ms + +as + +$Çme + => +$v®ue +) { + +139 ià( +$v®ue + === '' || $value === '-') { + +142 +$e + = + `ex¶ode +('.', +$Çme +); + +144 ià( + `couÁ +( +$e +) == 2) { + +145 + `li¡ +( +$®Ÿs +, +$cÞumn +èð +$e +; + +147 +$m­ + = +$this +-> +qu”y +-> + `g‘Qu”yCompڒt +( +$®Ÿs +); + +148 +$bË + = +$m­ +['table']; + +150 iàÐ! +$bË +) { + +151 +throw + +Ãw + + `Doùrše_Exû±iÚ +('UnknowÀ®Ÿ ' . +$®Ÿs +); + +154 ià( +$def + = +$bË +-> + `g‘Defš™iÚOf +( +$cÞumn +)) { + +156 +$def +[0] = + `g‘ty³ +( +$v®ue +); + +157 ià( + `is£t +( +$this +-> +ty³P¬£rs +[ +$def +[0]])) { + +158 +$Çme + = +$this +-> +ty³P¬£rs +[ +$def +[0]]; + +159 +$·r£r + = +Ãw + +$Çme +; + +162 +$·r£r +-> + `·r£ +( +$®Ÿs +, +$cÞumn +, +$v®ue +); + +164 +$this +-> +qu”y +-> + `addWh”e +( +$·r£r +-> + `g‘CÚd™iÚ +(), $·r£r-> + `g‘P¬ams +()); + +169  +Œue +; + +170 + } +} + +180 +public + +funùiÚ + + $hookOrd”by +( +$·¿ms +) + +182 iàÐ! + `is_¬¿y +( +$·¿ms +)) { + +183  +çl£ +; + +185 + `fܗch + ( +$·¿ms + +as + +$Çme +) { + +186 +$e + = + `ex¶ode +(' ', +$Çme +); + +188 +$Üd” + = 'ASC'; + +190 ià( + `couÁ +( +$e +) > 1) { + +191 +$Üd” + = ( +$e +[1] == 'DESC') ? 'DESC' : 'ASC'; + +194 +$e + = + `ex¶ode +('.', $e[0]); + +196 ià( + `couÁ +( +$e +) == 2) { + +197 + `li¡ +( +$®Ÿs +, +$cÞumn +èð +$e +; + +199 +$m­ + = +$this +-> +qu”y +-> + `g‘Qu”yCompڒt +( +$®Ÿs +); + +200 +$bË + = +$m­ +['table']; + +202 ià( +$def + = +$bË +-> + `g‘Defš™iÚOf +( +$cÞumn +)) { + +203 +$this +-> +qu”y +-> + `addOrd”By +( +$®Ÿs + . '.' . +$cÞumn + . ' ' . +$Üd” +); + +207  +Œue +; + +208 + } +} + +216 +public + +funùiÚ + + $hookLim™ +( +$lim™ +) + +218 +$this +-> +qu”y +-> + `lim™ +((è +$lim™ +); + +219 + } +} + +226 +public + +funùiÚ + + $hookOff£t +( +$off£t +) + +228 +$this +-> +qu”y +-> + `off£t +((è +$off£t +); + +229 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hook/Equal.php + +1 +·¿ms + = ( +¬¿y +è +$v®ue +; + +50 +$this +-> +cÚd™iÚ + = +$®Ÿs + . '.' . +$f›ld + . ' = ?'; + +52 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hook/Integer.php + +1 +·¿ms +[] = +$v +; + +67 +$a +[] = '(' . +$Çme + . ' > ? AND ' . $name . ' < ?)'; + +69 +$this +-> +·¿ms + +ð + `¬¿y +( +$e2 +[0], $e2[1]); + +73  + `im¶ode +(' OR ', +$a +); + +75 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hook/Parser.php + +1 +cÚd™iÚ +; + +49 +public + +funùiÚ + + $g‘P¬ams +() + +51  +$this +-> +·¿ms +; + +52 + } +} + +66 +ab¡¿ù + +public + +funùiÚ + +·r£ +( +$®Ÿs +, +$f›ld +, +$v®ue +); + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hook/Parser/Complex.php + +1 +_tok’iz” + = +Ãw + + `Doùrše_Qu”y_Tok’iz” +(); + +57 +public + +funùiÚ + + $·r£ +( +$®Ÿs +, +$f›ld +, +$v®ue +) + +59 +$this +-> +cÚd™iÚ + = $this-> + `·r£CÏu£ +( +$®Ÿs +, +$f›ld +, +$v®ue +); + +60 + } +} + +70 +public + +funùiÚ + + $·r£CÏu£ +( +$®Ÿs +, +$f›ld +, +$v®ue +) + +72 +$·¹s + = +$this +-> +_tok’iz” +-> + `quÙeEx¶ode +( +$v®ue +, ' AND '); + +74 ià( + `couÁ +( +$·¹s +) > 1) { + +75 +$»t + = + `¬¿y +(); + +76 + `fܗch + ( +$·¹s + +as + +$·¹ +) { + +77 +$»t +[] = +$this +-> + `·r£SšgË +( +$®Ÿs +, +$f›ld +, +$·¹ +); + +80 +$r + = + `im¶ode +(' AND ', +$»t +); + +82 +$·¹s + = +$this +-> +_tok’iz” +-> + `quÙeEx¶ode +( +$v®ue +, ' OR '); + +83 ià( + `couÁ +( +$·¹s +) > 1) { + +84 +$»t + = + `¬¿y +(); + +85 + `fܗch + ( +$·¹s + +as + +$·¹ +) { + +86 +$»t +[] = +$this +-> + `·r£CÏu£ +( +$®Ÿs +, +$f›ld +, +$·¹ +); + +89 +$r + = + `im¶ode +(' OR ', +$»t +); + +91 +$»t + = +$this +-> + `·r£SšgË +( +$®Ÿs +, +$f›ld +, +$·¹s +[0]); + +92  +$»t +; + +95  '(' . +$r + . ')'; + +96 + } +} + +106 +ab¡¿ù + +public + +funùiÚ + +·r£SšgË +( +$®Ÿs +, +$f›ld +, +$v®ue +); + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hook/WordLike.php + +1 +_tok’iz” +-> + `b¿ck‘Trim +($value, "'", "'"); + +52 +$a +[] = +$®Ÿs + . '.' . +$f›ld + . ' LIKE ?'; + +53 +$this +-> +·¿ms +[] = '%' . +$v®ue + . '%'; + +56 +$e2 + = + `ex¶ode +(' ', +$v®ue +); + +58 + `fܗch + ( +$e2 + +as + +$v +) { + +59 +$v + = + `Œim +($v); + +60 +$a +[] = +$®Ÿs + . '.' . +$f›ld + . ' LIKE ?'; + +61 +$this +-> +·¿ms +[] = '%' . +$v + . '%'; + +64  + `im¶ode +(' OR ', +$a +); + +66 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hydrator.php + +1 +_hyd¿tÜs + = +Doùrše_Mªag” +:: + `g‘In¡ªû +()-> + `g‘Hyd¿tÜs +(); + +58 +public + +funùiÚ + + $£tHyd¿tiÚMode +( +$hyd¿tiÚMode +) + +60 +$this +-> +_hyd¿tiÚMode + = +$hyd¿tiÚMode +; + +61 + } +} + +68 +public + +funùiÚ + + $g‘Hyd¿tiÚMode +() + +70  +$this +-> +_hyd¿tiÚMode +; + +71 + } +} + +78 +public + +funùiÚ + + $£tQu”yCompڒts +( +¬¿y + +$qu”yCompڒts +) + +80 +$this +-> +_qu”yCompڒts + = +$qu”yCompڒts +; + +81 + } +} + +88 +public + +funùiÚ + + $g‘Qu”yCompڒts +() + +90  +$this +-> +_qu”yCompڒts +; + +91 + } +} + +99 +public + +funùiÚ + + $g‘Hyd¿tÜDriv”CÏssName +( +$mode + = +nuÎ +) + +101 ià( +$mode + ==ð +nuÎ +) { + +102 +$mode + = +$this +-> +_hyd¿tiÚMode +; + +105 iàÐ! + `is£t +( +$this +-> +_hyd¿tÜs +[ +$mode +])) { + +106 +throw + +Ãw + + `Doùrše_Hyd¿tÜ_Exû±iÚ +('Inv®id hyd¿tiÚ mod¥ecif›d: '. +$this +-> +_hyd¿tiÚMode +); + +109  +$this +-> +_hyd¿tÜs +[ +$mode +]; + +110 + } +} + +119 +public + +funùiÚ + + $g‘Hyd¿tÜDriv” +( +$mode +, +$bËAlŸ£s +) + +121 +$driv”CÏss + = +$this +-> + `g‘Hyd¿tÜDriv”CÏssName +( +$mode +); + +122 ià( + `is_objeù +( +$driv”CÏss +)) { + +123 ià(! +$driv”CÏss + +š¡ªûOf + +Doùrše_Hyd¿tÜ_Ab¡¿ù +) { + +124 +throw + +Ãw + + `Doùrše_Hyd¿tÜ_Exû±iÚ +('Inv®id hyd¿tiÚ cÏs ¥ecif›d: '. + `g‘_þass +( +$driv”CÏss +)); + +126 +$driv” + = +$driv”CÏss +; + +127 +$driv” +-> + `£tQu”yCompڒts +( +$this +-> +_qu”yCompڒts +); + +128 +$driv” +-> + `£tTabËAlŸ£s +( +$bËAlŸ£s +); + +129 +$driv” +-> + `£tHyd¿tiÚMode +( +$mode +); + +131 +$driv” + = +Ãw + + `$driv”CÏss +( +$this +-> +_qu”yCompڒts +, +$bËAlŸ£s +, +$mode +); + +134  +$driv” +; + +135 + } +} + +145 +public + +funùiÚ + + $hyd¿‹ResuÉS‘ +( +$¡mt +, +$bËAlŸ£s +) + +147 +$driv” + = +$this +-> + `g‘Hyd¿tÜDriv” +($this-> +_hyd¿tiÚMode +, +$bËAlŸ£s +); + +148 +$»suÉ + = +$driv” +-> + `hyd¿‹ResuÉS‘ +( +$¡mt +); + +150  +$»suÉ +; + +151 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hydrator/Abstract.php + +1 + `£tQu”yCompڒts +( +$qu”yCompڒts +); + +44 +$this +-> + `£tTabËAlŸ£s +( +$bËAlŸ£s +); + +45 +$this +-> + `£tHyd¿tiÚMode +( +$hyd¿tiÚMode +); + +54 +public + +funùiÚ + + $£tQu”yCompڒts +( +$qu”yCompڒts +) + +56 +$this +-> +_qu”yCompڒts + = +$qu”yCompڒts +; + +57 + } +} + +65 +public + +funùiÚ + + $£tTabËAlŸ£s +( +$bËAlŸ£s +) + +67 +$this +-> +_bËAlŸ£s + = +$bËAlŸ£s +; + +68 + } +} + +78 +public + +funùiÚ + + $£tHyd¿tiÚMode +( +$hyd¿tiÚMode +) + +80 +$this +-> +_hyd¿tiÚMode + = +$hyd¿tiÚMode +; + +81 + } +} + +83 +public + +funùiÚ + + $g‘RoÙCompڒt +() + +85 +$qu”yCompڒts + = + `¬¿y_v®ues +( +$this +-> +_qu”yCompڒts +); + +86  +$qu”yCompڒts +[0]['table']; + +87 + } +} + +89 +public + +funùiÚ + + $ÚDemªdRe£t +() + +91 +$this +-> +_´iÜRow + = +nuÎ +; + +92 + } +} + +102 +´Ùeùed + +funùiÚ + + $_isIgnÜedName +( +$Çme +) + +104  +$Çme + == 'DOCTRINE_ROWNUM'; + +105 + } +} + +120 +ab¡¿ù + +public + +funùiÚ + +hyd¿‹ResuÉS‘ +( +$¡mt +); + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hydrator/ArrayDriver.php + +1 + `g‘RoÙCompڒt +(); + +41 iàÐ! +$bË +-> + `isT»e +(è|| ! $bË-> + `hasCÞumn +('level')) { + +42 +throw + +Ãw + + `Doùrše_Exû±iÚ +('Cannot hydrate modelhat does‚ot implements Tree behavior with `level` column'); + +46 +$Œ“s + = + `¬¿y +(); + +47 +$l + = 0; + +49 ià( + `couÁ +( +$cÞËùiÚ +) > 0) { + +51 +$¡ack + = + `¬¿y +(); + +53 + `fܗch + ( +$cÞËùiÚ + +as + +$chžd +) { + +54 +$™em + = +$chžd +; + +56 +$™em +['__chžd»n'] = + `¬¿y +(); + +59 +$l + = + `couÁ +( +$¡ack +); + +62  +$l + > 0 && +$¡ack +[$È- 1]['Ëv–'] >ð +$™em +['level']) { + +63 + `¬¿y_pÝ +( +$¡ack +); + +64 +$l +--; + +68 ià( +$l + == 0) { + +70 +$i + = + `couÁ +( +$Œ“s +); + +71 +$Œ“s +[ +$i +] = +$™em +; + +72 +$¡ack +[] = & +$Œ“s +[ +$i +]; + +75 +$i + = + `couÁ +( +$¡ack +[ +$l + - 1]['__children']); + +76 +$¡ack +[ +$l + - 1]['__chžd»n'][ +$i +] = +$™em +; + +77 +$¡ack +[] = & $¡ack[ +$l + - 1]['__chžd»n'][ +$i +]; + +81  +$Œ“s +; + +83 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hydrator/ArrayShallowDriver.php + +1 + `ãtch +( +Doùrše_CÜe +:: +FETCH_ASSOC +)) { + +40 +$»suÉ +[] = +$this +-> + `_g©h”RowD©a +( +$d©a +, +$ÿche +, +çl£ +); + +42  +$»suÉ +; + +44 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hydrator/Exception.php + +1 +_qu”yCompڒts +[ +$®Ÿs +]['m­']è? $this->_qu”yCompڒts[$®Ÿs]['m­'] : +nuÎ +; + +51 +public + +funùiÚ + + $hyd¿‹ResuÉS‘ +( +$¡mt +) + +54 + `»£t +( +$this +-> +_qu”yCompڒts +); + +55 +$roÙAlŸs + = + `key +( +$this +-> +_qu”yCompڒts +); + +56 +$this +-> +_roÙAlŸs + = +$roÙAlŸs +; + +57 +$roÙCompڒtName + = +$this +-> +_qu”yCompڒts +[ +$roÙAlŸs +]['bË']-> + `g‘CompڒtName +(); + +59 +$isSim¶eQu”y + = + `couÁ +( +$this +-> +_qu”yCompڒts +) <= 1; + +61 +$»suÉ + = + `¬¿y +(); + +63 +$š¡ªûs + = + `¬¿y +(); + +65 +$li¡’”s + = + `¬¿y +(); + +67 +$id’tif›rM­ + = + `¬¿y +(); + +69 +$´ev + = + `¬¿y +(); + +74 +$id + = + `¬¿y +(); + +75 +$idTem¶©e + = + `¬¿y +(); + +78 + `fܗch + ( +$this +-> +_qu”yCompڒts + +as + +$dqlAlŸs + => +$d©a +) { + +79 +$compڒtName + = +$d©a +['bË']-> + `g‘CompڒtName +(); + +80 +$š¡ªûs +[ +$compڒtName +] = +$d©a +['bË']-> + `g‘RecÜdIn¡ªû +(); + +81 +$li¡’”s +[ +$compڒtName +] = +$d©a +['bË']-> + `g‘RecÜdLi¡’” +(); + +82 +$id’tif›rM­ +[ +$dqlAlŸs +] = + `¬¿y +(); + +83 +$´ev +[ +$dqlAlŸs +] = +nuÎ +; + +84 +$idTem¶©e +[ +$dqlAlŸs +] = ''; + +86 +$ÿche + = + `¬¿y +(); + +88 +$»suÉ + = +$this +-> + `g‘EËm’tCÞËùiÚ +( +$roÙCompڒtName +); + +89 ià( +$»suÉ + +š¡ªûof + +Doùrše_CÞËùiÚ + && +$šdexF›ld + = +$this +-> + `_g‘Cu¡omIndexF›ld +( +$roÙAlŸs +)) { + +90 +$»suÉ +-> + `£tKeyCÞumn +( +$šdexF›ld +); + +92 ià( +$¡mt + ==ð +çl£ + || $stmt === 0) { + +93  +$»suÉ +; + +97 +$ÿche + = + `¬¿y +(); + +99 +$ev’t + = +Ãw + + `Doùrše_Ev’t +( +nuÎ +, +Doùrše_Ev’t +:: +HYDRATE +,‚ull); + +101 ià( +$this +-> +_hyd¿tiÚMode + =ð +Doùrše_CÜe +:: +HYDRATE_ON_DEMAND +) { + +102 iàÐ! + `is_nuÎ +( +$this +-> +_´iÜRow +)) { + +103 +$d©a + = +$this +-> +_´iÜRow +; + +104 +$this +-> +_´iÜRow + = +nuÎ +; + +106 +$d©a + = +$¡mt +-> + `ãtch +( +Doùrše_CÜe +:: +FETCH_ASSOC +); + +107 iàÐ! +$d©a +) { + +108  +$»suÉ +; + +111 +$aùiveRoÙId’tif›r + = +nuÎ +; + +113 +$d©a + = +$¡mt +-> + `ãtch +( +Doùrše_CÜe +:: +FETCH_ASSOC +); + +114 iàÐ! +$d©a +) { + +115  +$»suÉ +; + +120 +$bË + = +$this +-> +_qu”yCompڒts +[ +$roÙAlŸs +]['table']; + +122 ià( +$bË +-> + `g‘CÚÃùiÚ +()-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_PORTABILITY +è& Doùrše_CÜe:: +PORTABILITY_RTRIM +) { + +123 + `¬¿y_m­ +('¹rim', +$d©a +); + +126 +$id + = +$idTem¶©e +; + +127 +$nÚem±yCompڒts + = + `¬¿y +(); + +128 +$rowD©a + = +$this +-> + `_g©h”RowD©a +( +$d©a +, +$ÿche +, +$id +, +$nÚem±yCompڒts +); + +130 ià( +$this +-> +_hyd¿tiÚMode + =ð +Doùrše_CÜe +:: +HYDRATE_ON_DEMAND +) { + +131 ià( + `is_nuÎ +( +$aùiveRoÙId’tif›r +)) { + +133 +$aùiveRoÙId’tif›r + = +$id +[ +$roÙAlŸs +]; + +134 } ià( +$aùiveRoÙId’tif›r + !ð +$id +[ +$roÙAlŸs +]) { + +136 +$this +-> +_´iÜRow + = +$d©a +; + +137  +$»suÉ +; + +144 +$compڒtName + = +$bË +-> + `g‘CompڒtName +(); + +146 +$ev’t +-> + `£tInvok” +( +$bË +); + +147 +$ev’t +-> + `£t +('d©a', +$rowD©a +[ +$roÙAlŸs +]); + +148 +$li¡’”s +[ +$compڒtName +]-> + `´eHyd¿‹ +( +$ev’t +); + +149 +$š¡ªûs +[ +$compڒtName +]-> + `´eHyd¿‹ +( +$ev’t +); + +151 +$šdex + = +çl£ +; + +154 ià( +$isSim¶eQu”y + || ! + `is£t +( +$id’tif›rM­ +[ +$roÙAlŸs +][ +$id +[$rootAlias]])) { + +155 +$–em’t + = +$this +-> + `g‘EËm’t +( +$rowD©a +[ +$roÙAlŸs +], +$compڒtName +); + +156 +$ev’t +-> + `£t +('d©a', +$–em’t +); + +157 +$li¡’”s +[ +$compڒtName +]-> + `po¡Hyd¿‹ +( +$ev’t +); + +158 +$š¡ªûs +[ +$compڒtName +]-> + `po¡Hyd¿‹ +( +$ev’t +); + +161 ià( +$f›ld + = +$this +-> + `_g‘Cu¡omIndexF›ld +( +$roÙAlŸs +)) { + +162 iàÐ! + `is£t +( +$–em’t +[ +$f›ld +])) { + +163 +throw + +Ãw + + `Doùrše_Hyd¿tÜ_Exû±iÚ +("Couldn't hydrate. Found‡‚on-existent key‚amed '$field'."); + +164 } ià( + `is£t +( +$»suÉ +[ +$–em’t +[ +$f›ld +]])) { + +165 +throw + +Ãw + + `Doùrše_Hyd¿tÜ_Exû±iÚ +("Couldn't hydrate. Found‚on-unique key mapping‚amed '{$element[$field]}' forhe field‚amed '$field'."); + +167 +$»suÉ +[ +$–em’t +[ +$f›ld +]] = $element; + +169 +$»suÉ +[] = +$–em’t +; + +172 +$id’tif›rM­ +[ +$roÙAlŸs +][ +$id +[$roÙAlŸs]] = +$this +-> + `g‘La¡Key +( +$»suÉ +); + +174 +$šdex + = +$id’tif›rM­ +[ +$roÙAlŸs +][ +$id +[$rootAlias]]; + +177 +$this +-> + `£tLa¡EËm’t +( +$´ev +, +$»suÉ +, +$šdex +, +$roÙAlŸs +, +çl£ +); + +178 + `un£t +( +$rowD©a +[ +$roÙAlŸs +]); + +185 + `fܗch + ( +$rowD©a + +as + +$dqlAlŸs + => +$d©a +) { + +186 +$šdex + = +çl£ +; + +187 +$m­ + = +$this +-> +_qu”yCompڒts +[ +$dqlAlŸs +]; + +188 +$bË + = +$m­ +['table']; + +189 +$compڒtName + = +$bË +-> + `g‘CompڒtName +(); + +190 +$ev’t +-> + `£t +('d©a', +$d©a +); + +191 +$ev’t +-> + `£tInvok” +( +$bË +); + +192 +$li¡’”s +[ +$compڒtName +]-> + `´eHyd¿‹ +( +$ev’t +); + +193 +$š¡ªûs +[ +$compڒtName +]-> + `´eHyd¿‹ +( +$ev’t +); + +196 iàÐ! + `is£t +( +$m­ +['parent'])) { + +197 +throw + +Ãw + + `Doùrše_Hyd¿tÜ_Exû±iÚ +( + +198 '"' . +$compڒtName + . '" w™h‡À®Ÿ oà"' . +$dqlAlŸs + . '"' . + +203 +$·»Á + = +$m­ +['parent']; + +204 +$»ÏtiÚ + = +$m­ +['relation']; + +205 +$»ÏtiÚAlŸs + = +$m­ +['»ÏtiÚ']-> + `g‘AlŸs +(); + +207 +$·th + = +$·»Á + . '.' . +$dqlAlŸs +; + +209 iàÐ! + `is£t +( +$´ev +[ +$·»Á +])) { + +210 + `un£t +( +$´ev +[ +$dqlAlŸs +]); + +214 +$šdexF›ld + = +$this +-> + `_g‘Cu¡omIndexF›ld +( +$dqlAlŸs +); + +217 iàÐ! +$»ÏtiÚ +-> + `isOÃToOà +(è&& +$this +-> + `š™R–©ed +( +$´ev +[ +$·»Á +], +$»ÏtiÚAlŸs +, +$šdexF›ld +)) { + +218 +$ÚeToOà + = +çl£ +; + +220 ià( + `is£t +( +$nÚem±yCompڒts +[ +$dqlAlŸs +])) { + +221 +$šdexExi¡s + = + `is£t +( +$id’tif›rM­ +[ +$·th +][ +$id +[ +$·»Á +]][$id[ +$dqlAlŸs +]]); + +222 +$šdex + = +$šdexExi¡s + ? +$id’tif›rM­ +[ +$·th +][ +$id +[ +$·»Á +]][$id[ +$dqlAlŸs +]] : +çl£ +; + +223 +$šdexIsV®id + = +$šdex + !=ð +çl£ + ? + `is£t +( +$´ev +[ +$·»Á +][ +$»ÏtiÚAlŸs +][$index]) : false; + +224 iàÐ! +$šdexExi¡s + || ! +$šdexIsV®id +) { + +225 +$–em’t + = +$this +-> + `g‘EËm’t +( +$d©a +, +$compڒtName +); + +226 +$ev’t +-> + `£t +('d©a', +$–em’t +); + +227 +$li¡’”s +[ +$compڒtName +]-> + `po¡Hyd¿‹ +( +$ev’t +); + +228 +$š¡ªûs +[ +$compڒtName +]-> + `po¡Hyd¿‹ +( +$ev’t +); + +230 ià( +$f›ld + = +$this +-> + `_g‘Cu¡omIndexF›ld +( +$dqlAlŸs +)) { + +231 iàÐ! + `is£t +( +$–em’t +[ +$f›ld +])) { + +232 +throw + +Ãw + + `Doùrše_Hyd¿tÜ_Exû±iÚ +("Couldn't hydrate. Found‡‚on-existent key‚amed '$field'."); + +233 } ià( + `is£t +( +$´ev +[ +$·»Á +][ +$»ÏtiÚAlŸs +][ +$–em’t +[ +$f›ld +]])) { + +234 +throw + +Ãw + + `Doùrše_Hyd¿tÜ_Exû±iÚ +("Couldn't hydrate. Found‚on-unique key mapping‚amed '$field'."); + +236 +$´ev +[ +$·»Á +][ +$»ÏtiÚAlŸs +][ +$–em’t +[ +$f›ld +]] = $element; + +238 +$´ev +[ +$·»Á +][ +$»ÏtiÚAlŸs +][] = +$–em’t +; + +240 +$id’tif›rM­ +[ +$·th +][ +$id +[ +$·»Á +]][$id[ +$dqlAlŸs +]] = +$this +-> + `g‘La¡Key +( +$´ev +[$·»Á][ +$»ÏtiÚAlŸs +]); + +242 +$cÞËùiÚ + = +$´ev +[ +$·»Á +][ +$»ÏtiÚAlŸs +]; + +243 ià( +$cÞËùiÚ + +š¡ªûof + +Doùrše_CÞËùiÚ + && +$šdexF›ld +) { + +244 +$cÞËùiÚ +-> + `£tKeyCÞumn +( +$šdexF›ld +); + +248 +$this +-> + `»gi¡”CÞËùiÚ +( +$cÞËùiÚ +); + +252 +$ÚeToOà + = +Œue +; + +253 iàÐ! + `is£t +( +$nÚem±yCompڒts +[ +$dqlAlŸs +]è&& ! is£t( +$´ev +[ +$·»Á +][ +$»ÏtiÚAlŸs +])) { + +254 +$´ev +[ +$·»Á +][ +$»ÏtiÚAlŸs +] = +$this +-> + `g‘NuÎPoš‹r +(); + +255 } iàÐ! + `is£t +( +$´ev +[ +$·»Á +][ +$»ÏtiÚAlŸs +])) { + +256 +$–em’t + = +$this +-> + `g‘EËm’t +( +$d©a +, +$compڒtName +); + +259 +$ev’t +-> + `£t +('d©a', +$–em’t +); + +260 +$li¡’”s +[ +$compڒtName +]-> + `po¡Hyd¿‹ +( +$ev’t +); + +261 +$š¡ªûs +[ +$compڒtName +]-> + `po¡Hyd¿‹ +( +$ev’t +); + +263 +$´ev +[ +$·»Á +][ +$»ÏtiÚAlŸs +] = +$–em’t +; + +266 ià( +$´ev +[ +$·»Á +][ +$»ÏtiÚAlŸs +] !=ð +nuÎ +) { + +267 +$cÞl + =& +$´ev +[ +$·»Á +][ +$»ÏtiÚAlŸs +]; + +268 +$this +-> + `£tLa¡EËm’t +( +$´ev +, +$cÞl +, +$šdex +, +$dqlAlŸs +, +$ÚeToOà +); + +271 }  +$d©a + = +$¡mt +-> + `ãtch +( +Doùrše_CÜe +:: +FETCH_ASSOC +)); + +273 +$¡mt +-> + `þo£CursÜ +(); + +274 +$this +-> + `æush +(); + +276  +$»suÉ +; + +277 + } +} + +287 +´Ùeùed + +funùiÚ + + $_g©h”RowD©a +(& +$d©a +, & +$ÿche +, & +$id +, & +$nÚem±yCompڒts +) + +289 +$rowD©a + = + `¬¿y +(); + +291 + `fܗch + ( +$d©a + +as + +$key + => +$v®ue +) { + +293 iàÐ! + `is£t +( +$ÿche +[ +$key +])) { + +296 ià( +$this +-> + `_isIgnÜedName +( +$key +)) { + +300 +$e + = + `ex¶ode +('__', +$key +); + +301 +$Ï¡ + = + `¡¹Þow” +( + `¬¿y_pÝ +( +$e +)); + +302 +$ÿche +[ +$key +]['dqlAlŸs'] = +$this +-> +_bËAlŸ£s +[ + `¡¹Þow” +( + `im¶ode +('__', +$e +))]; + +303 +$bË + = +$this +-> +_qu”yCompڒts +[ +$ÿche +[ +$key +]['dqlAlias']]['table']; + +304 +$f›ldName + = +$bË +-> + `g‘F›ldName +( +$Ï¡ +); + +305 +$ÿche +[ +$key +]['f›ldName'] = +$f›ldName +; + +306 ià( +$bË +-> + `isId’tif›r +( +$f›ldName +)) { + +307 +$ÿche +[ +$key +]['isId’tif›r'] = +Œue +; + +309 +$ÿche +[ +$key +]['isId’tif›r'] = +çl£ +; + +311 +$ty³ + = +$bË +-> + `g‘Ty³OfCÞumn +( +$Ï¡ +); + +312 ià( +$ty³ + == 'integer' || $type == 'string') { + +313 +$ÿche +[ +$key +]['isSim¶eTy³'] = +Œue +; + +315 +$ÿche +[ +$key +]['ty³'] = +$ty³ +; + +316 +$ÿche +[ +$key +]['isSim¶eTy³'] = +çl£ +; + +320 +$m­ + = +$this +-> +_qu”yCompڒts +[ +$ÿche +[ +$key +]['dqlAlias']]; + +321 +$bË + = +$m­ +['table']; + +322 +$dqlAlŸs + = +$ÿche +[ +$key +]['dqlAlias']; + +323 +$f›ldName + = +$ÿche +[ +$key +]['fieldName']; + +324 +$agg + = +çl£ +; + +325 ià( + `is£t +( +$this +-> +_qu”yCompڒts +[ +$dqlAlŸs +]['agg'][ +$f›ldName +])) { + +326 +$f›ldName + = +$this +-> +_qu”yCompڒts +[ +$dqlAlŸs +]['agg'][$fieldName]; + +327 +$agg + = +Œue +; + +330 ià( +$ÿche +[ +$key +]['isIdentifier']) { + +331 +$id +[ +$dqlAlŸs +] .ð'|' . +$v®ue +; + +334 ià( +$ÿche +[ +$key +]['isSimpleType']) { + +335 +$´•¬edV®ue + = +$v®ue +; + +337 +$´•¬edV®ue + = +$bË +-> + `´•¬eV®ue +( +$f›ldName +, +$v®ue +, +$ÿche +[ +$key +]['type']); + +343 ià( +$agg +) { + +344 +$rowD©a +[ +$this +-> +_roÙAlŸs +][ +$f›ldName +] = +$´•¬edV®ue +; + +345 ià( + `is£t +( +$rowD©a +[ +$dqlAlŸs +])) { + +346 +$rowD©a +[ +$dqlAlŸs +][ +$f›ldName +] = +$´•¬edV®ue +; + +349 +$rowD©a +[ +$dqlAlŸs +][ +$f›ldName +] = +$´•¬edV®ue +; + +352 iàÐ! + `is£t +( +$nÚem±yCompڒts +[ +$dqlAlŸs +]è&& +$v®ue + !=ð +nuÎ +) { + +353 +$nÚem±yCompڒts +[ +$dqlAlŸs +] = +Œue +; + +357  +$rowD©a +; + +358 + } +} + +360 +ab¡¿ù + +public + +funùiÚ + +g‘EËm’tCÞËùiÚ +( +$compڒt +); + +362 +ab¡¿ù + +public + +funùiÚ + +»gi¡”CÞËùiÚ +( +$cÞl +); + +364 +ab¡¿ù + +public + +funùiÚ + +š™R–©ed +(& +$»cÜd +, +$Çme +, +$keyCÞumn + = +nuÎ +); + +366 +ab¡¿ù + +public + +funùiÚ + +g‘NuÎPoš‹r +(); + +368 +ab¡¿ù + +public + +funùiÚ + +g‘EËm’t +( +¬¿y + +$d©a +, +$compڒt +); + +370 +ab¡¿ù + +public + +funùiÚ + +g‘La¡Key +(& +$cÞl +); + +372 +ab¡¿ù + +public + +funùiÚ + +£tLa¡EËm’t +(& +$´ev +, & +$cÞl +, +$šdex +, +$dqlAlŸs +, +$ÚeToOà +); + +374 +public + +funùiÚ + + $æush +() + +377 + } +} + +393 +´Ùeùed + +funùiÚ + + $_g‘CÏs¢ameToR‘uº +( +¬¿y + & +$d©a +, +$compڒt +) + +395 iàÐ! + `is£t +( +$this +-> +_bËs +[ +$compڒt +])) { + +396 +$this +-> +_bËs +[ +$compڒt +] = +Doùrše_CÜe +:: + `g‘TabË +($component); + +399 iàÐ! ( +$subþas£s + = +$this +-> +_bËs +[ +$compڒt +]-> + `g‘O±iÚ +('subclasses'))) { + +400  +$compڒt +; + +403 +$m©chedCompڒts + = + `¬¿y +( +$compڒt +); + +404 + `fܗch + ( +$subþas£s + +as + +$subþass +) { + +405 +$bË + = +Doùrše_CÜe +:: + `g‘TabË +( +$subþass +); + +406 +$šh”™ªûM­ + = +$bË +-> + `g‘O±iÚ +('inheritanceMap'); + +407 ià( + `couÁ +( +$šh”™ªûM­ +) > 1) { + +408 +$ÃedM©ches + = + `couÁ +( +$šh”™ªûM­ +); + +409 + `fܗch + ( +$šh”™ªûM­ + +as + +$key + => +$v®ue +) { + +410 +$key + = +$this +-> +_bËs +[ +$compڒt +]-> + `g‘F›ldName +($key); + +411 iàÐ + `is£t +( +$d©a +[ +$key +]è&& $d©a[$key] =ð +$v®ue +) { + +412 -- +$ÃedM©ches +; + +415 ià( +$ÃedM©ches + == 0) { + +416 +$m©chedCompڒts +[] = +$bË +-> + `g‘CompڒtName +(); + +419 + `li¡ +( +$key +, +$v®ue +èð + `—ch +( +$šh”™ªûM­ +); + +420 +$key + = +$this +-> +_bËs +[ +$compڒt +]-> + `g‘F›ldName +($key); + +421 iàÐ! + `is£t +( +$d©a +[ +$key +]è|| $d©a[$key] !ð +$v®ue +) { + +424 +$m©chedCompڒts +[] = +$bË +-> + `g‘CompڒtName +(); + +429 +$m©chedCompڒt + = +$m©chedCompڒts +[ + `couÁ +($matchedComponents)-1]; + +431 iàÐ! + `is£t +( +$this +-> +_bËs +[ +$m©chedCompڒt +])) { + +432 +$this +-> +_bËs +[ +$m©chedCompڒt +] = +Doùrše_CÜe +:: + `g‘TabË +($matchedComponent); + +435  +$m©chedCompڒt +; + +436 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hydrator/NoneDriver.php + +1 + `ãtchAÎ +( +PDO +:: +FETCH_NUM +); + +40 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hydrator/RecordDriver.php + +1 +_cÞËùiÚs +[] = +$cÞl +; + +45  +$cÞl +; + +48 +public + +funùiÚ + + $š™R–©ed +(& +$»cÜd +, +$Çme +, +$keyCÞumn + = +nuÎ +) + +50 iàÐ! + `is£t +( +$this +-> +_š™ŸlizedR–©iÚs +[ +$»cÜd +-> + `g‘Oid +()][ +$Çme +])) { + +51 +$»ÏtiÚ + = +$»cÜd +-> + `g‘TabË +()-> + `g‘R–©iÚ +( +$Çme +); + +52 +$cÞl + = +Doùrše_CÞËùiÚ +:: + `ü—‹ +( +$»ÏtiÚ +-> + `g‘TabË +()-> + `g‘CompڒtName +(), +$keyCÞumn +); + +53 +$cÞl +-> + `£tReã»nû +( +$»cÜd +, +$»ÏtiÚ +); + +54 +$»cÜd +[ +$Çme +] = +$cÞl +; + +55 +$this +-> +_š™ŸlizedR–©iÚs +[ +$»cÜd +-> + `g‘Oid +()][ +$Çme +] = +Œue +; + +57  +Œue +; + +58 + } +} + +60 +public + +funùiÚ + + $»gi¡”CÞËùiÚ +( +$cÞl +) + +62 +$this +-> +_cÞËùiÚs +[] = +$cÞl +; + +63 + } +} + +65 +public + +funùiÚ + + $g‘NuÎPoš‹r +() + +67  +£lf +:: +$_nuÎ +; + +68 + } +} + +70 +public + +funùiÚ + + $g‘EËm’t +( +¬¿y + +$d©a +, +$compڒt +) + +72 +$compڒt + = +$this +-> + `_g‘CÏssNameToR‘uº +( +$d©a +, $component); + +74 +$this +-> +_bËs +[ +$compڒt +]-> + `£tD©a +( +$d©a +); + +75 +$»cÜd + = +$this +-> +_bËs +[ +$compڒt +]-> + `g‘RecÜd +(); + +77  +$»cÜd +; + +78 + } +} + +80 +public + +funùiÚ + + $g‘La¡Key +(& +$cÞl +) + +82 +$cÞl +-> + `’d +(); + +84  +$cÞl +-> + `key +(); + +85 + } +} + +95 +public + +funùiÚ + + $£tLa¡EËm’t +(& +$´ev +, & +$cÞl +, +$šdex +, +$dqlAlŸs +, +$ÚeToOà +) + +97 ià( +$cÞl + ==ð +£lf +:: +$_nuÎ +) { + +98 + `un£t +( +$´ev +[ +$dqlAlŸs +]); + +102 ià( +$šdex + !=ð +çl£ +) { + +105 +$´ev +[ +$dqlAlŸs +] = +$cÞl +[ +$šdex +]; + +109 ià( + `couÁ +( +$cÞl +) > 0) { + +110 +$´ev +[ +$dqlAlŸs +] = +$cÞl +-> + `g‘La¡ +(); + +112 + } +} + +114 +public + +funùiÚ + + $æush +() + +117 + `fܗch + ( +$this +-> +_cÞËùiÚs + +as + +$key + => +$cÞl +) { + +118 +$cÞl +-> + `keSÇpshÙ +(); + +120 +$this +-> +_š™ŸlizedR–©iÚs + = +nuÎ +; + +121 +$this +-> +_cÞËùiÚs + = +nuÎ +; + +122 +$this +-> +_bËs + = +nuÎ +; + +123 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hydrator/RecordHierarchyDriver.php + +1 + `toH›¿rchy +(); + +39 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hydrator/ScalarDriver.php + +1 + `ãtch +( +Doùrše_CÜe +:: +FETCH_ASSOC +)) { + +41 +$»suÉ +[] = +$this +-> + `_g©h”RowD©a +( +$d©a +, +$ÿche +); + +44  +$»suÉ +; + +47 +´Ùeùed + +funùiÚ + + $_g©h”RowD©a +( +$d©a +, & +$ÿche +, +$®ŸsP»fix + = +Œue +) + +49 +$rowD©a + = + `¬¿y +(); + +50 + `fܗch + ( +$d©a + +as + +$key + => +$v®ue +) { + +52 iàÐ! + `is£t +( +$ÿche +[ +$key +])) { + +53 ià( +$key + == 'DOCTRINE_ROWNUM') { + +57 +$e + = + `ex¶ode +('__', +$key +); + +58 +$cÞumnName + = + `¡¹Þow” +( + `¬¿y_pÝ +( +$e +)); + +59 +$ÿche +[ +$key +]['dqlAlŸs'] = +$this +-> +_bËAlŸ£s +[ + `¡¹Þow” +( + `im¶ode +('__', +$e +))]; + +60 +$bË + = +$this +-> +_qu”yCompڒts +[ +$ÿche +[ +$key +]['dqlAlias']]['table']; + +62 ià( + `is£t +( +$this +-> +_qu”yCompڒts +[ +$ÿche +[ +$key +]['dqlAlŸs']]['agg'][ +$cÞumnName +])) { + +63 +$f›ldName + = +$this +-> +_qu”yCompڒts +[ +$ÿche +[ +$key +]['dqlAlŸs']]['agg'][ +$cÞumnName +]; + +64 +$ÿche +[ +$key +]['isAgg'] = +Œue +; + +66 +$f›ldName + = +$bË +-> + `g‘F›ldName +( +$cÞumnName +); + +67 +$ÿche +[ +$key +]['isAgg'] = +çl£ +; + +70 +$ÿche +[ +$key +]['f›ldName'] = +$f›ldName +; + +73 +$ty³ + = +$bË +-> + `g‘Ty³OfCÞumn +( +$cÞumnName +); + +74 ià( +$ty³ + == 'integer' || $type == 'string') { + +75 +$ÿche +[ +$key +]['isSim¶eTy³'] = +Œue +; + +77 +$ÿche +[ +$key +]['ty³'] = +$ty³ +; + +78 +$ÿche +[ +$key +]['isSim¶eTy³'] = +çl£ +; + +82 +$bË + = +$this +-> +_qu”yCompڒts +[ +$ÿche +[ +$key +]['dqlAlias']]['table']; + +83 +$dqlAlŸs + = +$ÿche +[ +$key +]['dqlAlias']; + +84 +$f›ldName + = +$ÿche +[ +$key +]['fieldName']; + +86 +$rowD©aKey + = +$®ŸsP»fix + ? +$dqlAlŸs + . '_' . +$f›ldName +:$fieldName; + +88 ià( +$ÿche +[ +$key +]['isSimpleType'] || $cache[$key]['isAgg']) { + +89 +$rowD©a +[ +$rowD©aKey +] = +$v®ue +; + +91 +$rowD©a +[ +$rowD©aKey +] = +$bË +-> + `´•¬eV®ue +( + +92 +$f›ldName +, +$v®ue +, +$ÿche +[ +$key +]['type']); + +95  +$rowD©a +; + +96 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Hydrator/SingleScalarDriver.php + +1 + `ãtchCÞumn +()è!=ð +çl£ +) { + +39 +$»suÉ +[] = +$v® +; + +41 ià( + `couÁ +( +$»suÉ +) === 1) { + +42  +$»suÉ +[0]; + +44  +$»suÉ +; + +47 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/I18n.php + +1 +¬¿y +(), + +39 'g’”©eFžes' => +çl£ +, + +40 'bË' => +çl£ +, + +41 '¶ugšTabË' => +çl£ +, + +42 'chžd»n' => +¬¿y +(), + +46 'ÝtiÚs' => +¬¿y +(), + +47 'ÿsÿdeD–‘e' => +Œue +, + +48 '­pLev–D–‘e'=> +çl£ + + +57 +public + +funùiÚ + + $__cÚ¡ruù +( +$ÝtiÚs +) + +59 +$this +-> +_ÝtiÚs + = +Doùrše_Lib +:: + `¬¿yD“pM”ge +($this->_ÝtiÚs, +$ÝtiÚs +); + +62 +public + +funùiÚ + + $buždR–©iÚ +() + +64 +$this +-> + `buždFÜeignR–©iÚ +('Translation'); + +65 +$this +-> + `buždLoÿlR–©iÚ +(); + +66 + } +} + +74 +public + +funùiÚ + + $£tTabËDefš™iÚ +() + +76 ià( + `em±y +( +$this +-> +_ÝtiÚs +['fields'])) { + +77 +throw + +Ãw + + `Doùrše_I18n_Exû±iÚ +('Fields‚ot set.'); + +80 +$ÝtiÚs + = + `¬¿y +('þassName' => +$this +-> +_ÝtiÚs +['className']); + +82 +$cÞs + = +$this +-> +_ÝtiÚs +['bË']-> + `g‘CÞumns +(); + +84 +$cÞumns + = + `¬¿y +(); + +85 + `fܗch + ( +$cÞs + +as + +$cÞumn + => +$defš™iÚ +) { + +86 +$f›ldName + = +$this +-> +_ÝtiÚs +['bË']-> + `g‘F›ldName +( +$cÞumn +); + +87 ià( + `š_¬¿y +( +$f›ldName +, +$this +-> +_ÝtiÚs +['fields'])) { + +88 ià( +$cÞumn + !ð +$f›ldName +) { + +89 +$cÞumn + .ð'‡ ' . +$f›ldName +; + +91 +$cÞumns +[ +$cÞumn +] = +$defš™iÚ +; + +92 +$this +-> +_ÝtiÚs +['bË']-> + `»moveCÞumn +( +$f›ldName +); + +96 +$this +-> + `hasCÞumns +( +$cÞumns +); + +98 +$deçuÉO±iÚs + = + `¬¿y +( + +99 'fixed' => +Œue +, + +100 '´im¬y' => +Œue + + +102 +$ÝtiÚs + = + `¬¿y_m”ge +( +$deçuÉO±iÚs +, +$this +-> +_ÝtiÚs +['options']); + +104 +$this +-> + `hasCÞumn +($this-> +_ÝtiÚs +['i18nF›ld'], $this->_ÝtiÚs['ty³'], $this->_ÝtiÚs['Ëngth'], +$ÝtiÚs +); + +106 +$this +-> + `bšdQu”yP¬ts +( + `¬¿y +('šdexBy' => $this-> +_ÝtiÚs +['i18nField'])); + +109 +$Üigš®Name + = +$this +-> +_ÝtiÚs +['bË']-> + `g‘CÏs¢ameToR‘uº +(); + +110 +$»ÏtiÚs + = +$this +-> +_ÝtiÚs +['bË']-> + `g‘R–©iÚP¬£r +()-> + `g‘P’dšgR–©iÚs +(); + +111 + `fܗch +( +$»ÏtiÚs + +as + +$bË + => +$»ÏtiÚ +) { + +112 ià( +$bË + !ð +$this +-> +_bË +-> + `g‘TabËName +() ) { + +114 ià( + `is£t +( +$»ÏtiÚ +['loÿl']è&& + `š_¬¿y +($»ÏtiÚ['loÿl'], +$this +-> +_ÝtiÚs +['fields'])) { + +116 +$this +-> +_ÝtiÚs +['bË']-> + `g‘R–©iÚP¬£r +()-> + `un£tP’dšgR–©iÚs +( +$bË +); + +119 +$this +-> +_bË +-> + `g‘R–©iÚP¬£r +()-> + `bšd +( +$bË +, +$»ÏtiÚ +); + +122 +$½ + = +Doùrše_CÜe +:: + `g‘TabË +( +$bË +)-> + `g‘R–©iÚP¬£r +(); + +123 +$Ùh”s + = +$½ +-> + `g‘P’dšgR–©iÚ +( +$Üigš®Name +); + +124 ià( + `is£t +( +$Ùh”s +)) { + +125 +$Ùh”s +['þass'] = +$this +-> +_bË +-> + `g‘CÏs¢ameToR‘uº +(); + +126 +$Ùh”s +['®Ÿs'] = +$this +-> +_bË +-> + `g‘CÏs¢ameToR‘uº +(); + +127 +$½ +-> + `un£tP’dšgR–©iÚs +( +$Üigš®Name +); + +128 +$½ +-> + `bšd +( +$this +-> +_bË +-> + `g‘CÏs¢ameToR‘uº +(è, +$Ùh”s +); + +133 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/I18n/Exception.php + +1 +sql +['listDatabases'])) { + +49 +throw + +Ãw + + `Doùrše_ImpÜt_Exû±iÚ +( +__FUNCTION__ + . '‚ot supported byhis driver.'); + +52  +$this +-> +cÚn +-> + `ãtchCÞumn +($this-> +sql +['listDatabases']); + +60 +public + +funùiÚ + + $li¡FunùiÚs +() + +62 iàÐ! + `is£t +( +$this +-> +sql +['listFunctions'])) { + +63 +throw + +Ãw + + `Doùrše_ImpÜt_Exû±iÚ +( +__FUNCTION__ + . '‚ot supported byhis driver.'); + +66  +$this +-> +cÚn +-> + `ãtchCÞumn +($this-> +sql +['listFunctions']); + +67 + } +} + +75 +public + +funùiÚ + + $li¡Trigg”s +( +$d©aba£ + = +nuÎ +) + +77 +throw + +Ãw + + `Doùrše_ImpÜt_Exû±iÚ +( +__FUNCTION__ + . '‚ot supported byhis driver.'); + +78 + } +} + +86 +public + +funùiÚ + + $li¡Sequ’ûs +( +$d©aba£ + = +nuÎ +) + +88 iàÐ! + `is£t +( +$this +-> +sql +['listSequences'])) { + +89 +throw + +Ãw + + `Doùrše_ImpÜt_Exû±iÚ +( +__FUNCTION__ + . '‚ot supported byhis driver.'); + +92  +$this +-> +cÚn +-> + `ãtchCÞumn +($this-> +sql +['listSequences']); + +93 + } +} + +101 +public + +funùiÚ + + $li¡TabËCÚ¡¿šts +( +$bË +) + +103 +throw + +Ãw + + `Doùrše_ImpÜt_Exû±iÚ +( +__FUNCTION__ + . '‚ot supported byhis driver.'); + +104 + } +} + +125 +public + +funùiÚ + + $li¡TabËR–©iÚs +( +$bË +) + +127 +throw + +Ãw + + `Doùrše_ImpÜt_Exû±iÚ +( +__FUNCTION__ + . '‚ot supported byhis driver.'); + +128 + } +} + +136 +public + +funùiÚ + + $li¡TabËCÞumns +( +$bË +) + +138 +throw + +Ãw + + `Doùrše_ImpÜt_Exû±iÚ +( +__FUNCTION__ + . '‚ot supported byhis driver.'); + +139 + } +} + +147 +public + +funùiÚ + + $li¡TabËIndexes +( +$bË +) + +149 +throw + +Ãw + + `Doùrše_ImpÜt_Exû±iÚ +( +__FUNCTION__ + . '‚ot supported byhis driver.'); + +150 + } +} + +158 +public + +funùiÚ + + $li¡TabËs +( +$d©aba£ + = +nuÎ +) + +160 +throw + +Ãw + + `Doùrše_ImpÜt_Exû±iÚ +( +__FUNCTION__ + . '‚ot supported byhis driver.'); + +161 + } +} + +169 +public + +funùiÚ + + $li¡TabËTrigg”s +( +$bË +) + +171 +throw + +Ãw + + `Doùrše_ImpÜt_Exû±iÚ +( +__FUNCTION__ + . '‚ot supported byhis driver.'); + +172 + } +} + +180 +public + +funùiÚ + + $li¡TabËV›ws +( +$bË +) + +182 +throw + +Ãw + + `Doùrše_ImpÜt_Exû±iÚ +( +__FUNCTION__ + . '‚ot supported byhis driver.'); + +183 + } +} + +190 +public + +funùiÚ + + $li¡U£rs +() + +192 iàÐ! + `is£t +( +$this +-> +sql +['listUsers'])) { + +193 +throw + +Ãw + + `Doùrše_ImpÜt_Exû±iÚ +( +__FUNCTION__ + . '‚ot supported byhis driver.'); + +196  +$this +-> +cÚn +-> + `ãtchCÞumn +($this-> +sql +['listUsers']); + +197 + } +} + +205 +public + +funùiÚ + + $li¡V›ws +( +$d©aba£ + = +nuÎ +) + +207 iàÐ! + `is£t +( +$this +-> +sql +['listViews'])) { + +208 +throw + +Ãw + + `Doùrše_ImpÜt_Exû±iÚ +( +__FUNCTION__ + . '‚ot supported byhis driver.'); + +211  +$this +-> +cÚn +-> + `ãtchCÞumn +($this-> +sql +['listViews']); + +212 + } +} + +220 +public + +funùiÚ + + $d©aba£Exi¡s +( +$d©aba£ +) + +222  + `š_¬¿y +( +$d©aba£ +, +$this +-> + `li¡D©aba£s +()); + +223 + } +} + +231 +public + +funùiÚ + + $funùiÚExi¡s +( +$funùiÚ +) + +233  + `š_¬¿y +( +$funùiÚ +, +$this +-> + `li¡FunùiÚs +()); + +234 + } +} + +243 +public + +funùiÚ + + $Œigg”Exi¡s +( +$Œigg” +, +$d©aba£ + = +nuÎ +) + +245  + `š_¬¿y +( +$Œigg” +, +$this +-> + `li¡Trigg”s +( +$d©aba£ +)); + +246 + } +} + +255 +public + +funùiÚ + + $£qu’ûExi¡s +( +$£qu’û +, +$d©aba£ + = +nuÎ +) + +257  + `š_¬¿y +( +$£qu’û +, +$this +-> + `li¡Sequ’ûs +( +$d©aba£ +)); + +258 + } +} + +267 +public + +funùiÚ + + $bËCÚ¡¿štExi¡s +( +$cÚ¡¿št +, +$bË +) + +269  + `š_¬¿y +( +$cÚ¡¿št +, +$this +-> + `li¡TabËCÚ¡¿šts +( +$bË +)); + +270 + } +} + +279 +public + +funùiÚ + + $bËCÞumnExi¡s +( +$cÞumn +, +$bË +) + +281  + `š_¬¿y +( +$cÞumn +, +$this +-> + `li¡TabËCÞumns +( +$bË +)); + +282 + } +} + +291 +public + +funùiÚ + + $bËIndexExi¡s +( +$šdex +, +$bË +) + +293  + `š_¬¿y +( +$šdex +, +$this +-> + `li¡TabËIndexes +( +$bË +)); + +294 + } +} + +303 +public + +funùiÚ + + $bËExi¡s +( +$bË +, +$d©aba£ + = +nuÎ +) + +305  + `š_¬¿y +( +$bË +, +$this +-> + `li¡TabËs +( +$d©aba£ +)); + +306 + } +} + +315 +public + +funùiÚ + + $bËTrigg”Exi¡s +( +$Œigg” +, +$bË +) + +317  + `š_¬¿y +( +$Œigg” +, +$this +-> + `li¡TabËTrigg”s +( +$bË +)); + +318 + } +} + +327 +public + +funùiÚ + + $bËV›wExi¡s +( +$v›w +, +$bË +) + +329  + `š_¬¿y +( +$v›w +, +$this +-> + `li¡TabËV›ws +( +$bË +)); + +330 + } +} + +338 +public + +funùiÚ + + $u£rExi¡s +( +$u£r +) + +340  + `š_¬¿y +( +$u£r +, +$this +-> + `li¡U£rs +()); + +341 + } +} + +350 +public + +funùiÚ + + $v›wExi¡s +( +$v›w +, +$d©aba£ + = +nuÎ +) + +352  + `š_¬¿y +( +$v›w +, +$this +-> + `li¡V›ws +( +$d©aba£ +)); + +353 + } +} + +364 +public + +funùiÚ + +impÜtSchema +( +$dœeùÜy +, +¬¿y + +$cÚÃùiÚs + =‡¼ay(),‡¼ay +$ÝtiÚs + = + $¬¿y +()) + +366 +$þas£s + = + `¬¿y +(); + +368 +$mªag” + = +Doùrše_Mªag” +:: + `g‘In¡ªû +(); + +369 + `fܗch + ( +$mªag” + +as + +$Çme + => +$cÚÃùiÚ +) { + +372 iàÐ! + `em±y +( +$cÚÃùiÚs +è&& ! + `š_¬¿y +( +$Çme +, $connections)) { + +376 +$bužd” + = +Ãw + + `Doùrše_ImpÜt_Bužd” +(); + +377 +$bužd” +-> + `£tT¬g‘P©h +( +$dœeùÜy +); + +378 +$bužd” +-> + `£tO±iÚs +( +$ÝtiÚs +); + +380 +$defš™iÚs + = + `¬¿y +(); + +382 + `fܗch + ( +$cÚÃùiÚ +-> +impÜt +-> + `li¡TabËs +(è +as + +$bË +) { + +383 +$defš™iÚ + = + `¬¿y +(); + +384 +$defš™iÚ +['bËName'] = +$bË +; + +385 +$defš™iÚ +['þassName'] = +Doùrše_InæeùÜ +:: + `þassify +(Doùrše_InæeùÜ:: + `bËize +( +$bË +)); + +386 +$defš™iÚ +['cÞumns'] = +$cÚÃùiÚ +-> +impÜt +-> + `li¡TabËCÞumns +( +$bË +); + +387 +$defš™iÚ +['cÚÃùiÚ'] = +$cÚÃùiÚ +-> + `g‘Name +(); + +388 +$defš™iÚ +['connectionClassName'] = $definition['className']; + +390 +Œy + { + +391 +$defš™iÚ +['»ÏtiÚs'] = + `¬¿y +(); + +392 +$»ÏtiÚs + = +$cÚÃùiÚ +-> +impÜt +-> + `li¡TabËR–©iÚs +( +$bË +); + +393 +$»lCÏs£s + = + `¬¿y +(); + +394 + `fܗch + ( +$»ÏtiÚs + +as + +$»ÏtiÚ +) { + +395 +$bË + = +$»ÏtiÚ +['table']; + +396 +$þass + = +Doùrše_InæeùÜ +:: + `þassify +(Doùrše_InæeùÜ:: + `bËize +( +$bË +)); + +397 ià( + `š_¬¿y +( +$þass +, +$»lCÏs£s +)) { + +398 +$®Ÿs + = +$þass + . '_' . ( + `couÁ +( +$»lCÏs£s +) + 1); + +400 +$®Ÿs + = +$þass +; + +402 +$»lCÏs£s +[] = +$þass +; + +403 +$defš™iÚ +['»ÏtiÚs'][ +$®Ÿs +] = + `¬¿y +( + +404 '®Ÿs' => +$®Ÿs +, + +405 'þass' => +$þass +, + +406 'loÿl' => +$»ÏtiÚ +['local'], + +407 'fÜeign' => +$»ÏtiÚ +['foreign'] + +410 } + `ÿtch + ( +Exû±iÚ + +$e +) {} + +412 +$defš™iÚs +[ + `¡¹Þow” +( +$defš™iÚ +['className'])] = $definition; + +413 +$þas£s +[] = +$defš™iÚ +['className']; + +417 + `fܗch + ( +$defš™iÚs + +as + +$defš™iÚ +) { + +418 +$þassName + = +$defš™iÚ +['className']; + +419 +$»lCÏs£s + = + `¬¿y +(); + +420 + `fܗch + ( +$defš™iÚ +['»ÏtiÚs'] +as + +$®Ÿs + => +$»ÏtiÚ +) { + +421 ià( + `š_¬¿y +( +$»ÏtiÚ +['þass'], +$»lCÏs£s +è|| + `is£t +( +$defš™iÚs +[$»ÏtiÚ['þass']]['»ÏtiÚs'][ +$þassName +])) { + +422 +$®Ÿs + = +$þassName + . '_' . ( + `couÁ +( +$»lCÏs£s +) + 1); + +424 +$®Ÿs + = +$þassName +; + +426 +$»lCÏs£s +[] = +$»ÏtiÚ +['class']; + +427 +$defš™iÚs +[ + `¡¹Þow” +( +$»ÏtiÚ +['þass'])]['»ÏtiÚs'][ +$®Ÿs +] = + `¬¿y +( + +428 'ty³' => +Doùrše_R–©iÚ +:: +MANY +, + +429 '®Ÿs' => +$®Ÿs +, + +430 'þass' => +$þassName +, + +431 'loÿl' => +$»ÏtiÚ +['foreign'], + +432 'fÜeign' => +$»ÏtiÚ +['local'] + +438 + `fܗch + ( +$defš™iÚs + +as + +$defš™iÚ +) { + +439 +$bužd” +-> + `buždRecÜd +( +$defš™iÚ +); + +443  +$þas£s +; + +444 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Import/Builder.php + +1 + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_TABLE_CLASS +)) { + +199 +$this +-> +_ba£TabËCÏssName + = +$bËCÏss +; + +201 ià( +$þassP»fix + = +$mªag” +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_MODEL_CLASS_PREFIX +)) { + +202 +$this +-> +_þassP»fix + = +$þassP»fix +; + +204 ià( +$bËCÏssFÜm© + = +$mªag” +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_TABLE_CLASS_FORMAT +)) { + +205 +$this +-> +_bËCÏssFÜm© + = +$bËCÏssFÜm© +; + +207 +$this +-> + `lßdTem¶©e +(); + +216 +public + +funùiÚ + + $£tT¬g‘P©h +( +$·th +) + +218 ià( +$·th +) { + +219 iàÐ! +$this +-> +_·ckagesP©h +) { + +220 +$this +-> + `£tO±iÚ +('·ckagesP©h', +$·th + . +DIRECTORY_SEPARATOR + . $this-> +_·ckagesFÞd”Name +); + +223 +$this +-> +_·th + = +$·th +; + +225 + } +} + +235 +public + +funùiÚ + + $g’”©eBa£CÏs£s +( +$boÞ + = +nuÎ +) + +237 ià( +$boÞ + !=ð +nuÎ +) { + +238 +$this +-> +_g’”©eBa£CÏs£s + = +$boÞ +; + +241  +$this +-> +_g’”©eBa£CÏs£s +; + +242 + } +} + +252 +public + +funùiÚ + + $g’”©eTabËCÏs£s +( +$boÞ + = +nuÎ +) + +254 ià( +$boÞ + !=ð +nuÎ +) { + +255 +$this +-> +_g’”©eTabËCÏs£s + = +$boÞ +; + +258  +$this +-> +_g’”©eTabËCÏs£s +; + +259 + } +} + +266 +public + +funùiÚ + + $g‘T¬g‘P©h +() + +268  +$this +-> +_·th +; + +269 + } +} + +277 +public + +funùiÚ + + $£tO±iÚs +( +$ÝtiÚs +) + +279 iàÐ! + `em±y +( +$ÝtiÚs +)) { + +280 + `fܗch + ( +$ÝtiÚs + +as + +$key + => +$v®ue +) { + +281 +$this +-> + `£tO±iÚ +( +$key +, +$v®ue +); + +284 + } +} + +293 +public + +funùiÚ + + $£tO±iÚ +( +$key +, +$v®ue +) + +295 +$Çme + = '£t' . +Doùrše_InæeùÜ +:: + `þassify +( +$key +); + +297 ià( + `m‘hod_exi¡s +( +$this +, +$Çme +)) { + +298 +$this +-> + `$Çme +( +$v®ue +); + +300 +$key + = '_' . $key; + +301 +$this +-> +$key + = +$v®ue +; + +303 + } +} + +312 +public + +funùiÚ + + $lßdTem¶©e +() + +314 ià( + `is£t +( +£lf +:: +$_l +)) { + +318 +£lf +:: +$_l + = '/**' + +319 . '%s' . +PHP_EOL + + +320 . ' */' . +PHP_EOL + + +321 . '%sþas % ex‹nd %s' . +PHP_EOL + + +323 . '%s' . +PHP_EOL + + +324 . '%s' . +PHP_EOL + + +326 + } +} + +334 +public + +funùiÚ + + $buždTabËDefš™iÚ +( +¬¿y + +$defš™iÚ +) + +336 ià( + `is£t +( +$defš™iÚ +['inheritance']['type']) && ($definition['inheritance']['type'] == 'simple' || $definition['inheritance']['type'] == 'column_aggregation')) { + +340 +$»t + = + `¬¿y +(); + +342 +$i + = 0; + +344 ià( + `is£t +( +$defš™iÚ +['inheritance']['type']) && $definition['inheritance']['type'] == 'concrete') { + +345 +$»t +[ +$i +] = "…arent::setTableDefinition();"; + +346 +$i +++; + +349 ià( + `is£t +( +$defš™iÚ +['bËName']è&& ! + `em±y +($definition['tableName'])) { + +350 +$»t +[ +$i +] = " ".'$this->£tTabËName(\''. +$defš™iÚ +['tableName'].'\');'; + +351 +$i +++; + +354 ià( + `is£t +( +$defš™iÚ +['cÞumns']è&& + `is_¬¿y +($defš™iÚ['cÞumns']è&& ! + `em±y +($definition['columns'])) { + +355 +$»t +[ +$i +] = +$this +-> + `buždCÞumns +( +$defš™iÚ +['columns']); + +356 +$i +++; + +359 ià( + `is£t +( +$defš™iÚ +['šdexes']è&& + `is_¬¿y +($defš™iÚ['šdexes']è&& ! + `em±y +($definition['indexes'])) { + +360 +$»t +[ +$i +] = +$this +-> + `buždIndexes +( +$defš™iÚ +['indexes']); + +361 +$i +++; + +364 ià( + `is£t +( +$defš™iÚ +['©Œibu‹s']è&& + `is_¬¿y +($defš™iÚ['©Œibu‹s']è&& ! + `em±y +($definition['attributes'])) { + +365 +$»t +[ +$i +] = +$this +-> + `buždA‰ribu‹s +( +$defš™iÚ +['attributes']); + +366 +$i +++; + +369 ià( + `is£t +( +$defš™iÚ +['ÝtiÚs']è&& + `is_¬¿y +($defš™iÚ['ÝtiÚs']è&& ! + `em±y +($definition['options'])) { + +370 +$»t +[ +$i +] = +$this +-> + `buždO±iÚs +( +$defš™iÚ +['options']); + +371 +$i +++; + +374 ià( + `is£t +( +$defš™iÚ +['checks']è&& + `is_¬¿y +($defš™iÚ['checks']è&& ! + `em±y +($definition['checks'])) { + +375 +$»t +[ +$i +] = +$this +-> + `buždChecks +( +$defš™iÚ +['checks']); + +376 +$i +++; + +379 ià( + `is£t +( +$defš™iÚ +['šh”™ªû']['subþas£s']è&& ! + `em±y +($definition['inheritance']['subclasses'])) { + +380 +$subCÏs£s + = + `¬¿y +(); + +381 + `fܗch + ( +$defš™iÚ +['šh”™ªû']['subþas£s'] +as + +$þassName + => +$def +) { + +382 +$þassName + = +$this +-> +_þassP»fix + . $className; + +383 +$subCÏs£s +[ +$þassName +] = +$def +; + +385 +$»t +[ +$i +] = " ".'$this->£tSubCÏs£s('. +$this +-> + `v¬ExpÜt +( +$subCÏs£s +).');'; + +386 +$i +++; + +389 +$code + = + `im¶ode +( +PHP_EOL +, +$»t +); + +390 +$code + = + `Œim +($code); + +392  +PHP_EOL + . "…ubliøfunùiÚ s‘TabËDefš™iÚ()" . PHP_EOL . ' {' . PHP_EOL . ' ' . +$code + . PHP_EOL . ' }'; + +393 + } +} + +403 +public + +funùiÚ + + $buždS‘Up +( +¬¿y + +$defš™iÚ +) + +405 +$»t + = + `¬¿y +(); + +406 +$i + = 0; + +408 ià( + `is£t +( +$defš™iÚ +['»ÏtiÚs']è&& + `is_¬¿y +($defš™iÚ['»ÏtiÚs']è&& ! + `em±y +($definition['relations'])) { + +409 + `fܗch + ( +$defš™iÚ +['»ÏtiÚs'] +as + +$Çme + => +$»ÏtiÚ +) { + +410 +$þass + = + `is£t +( +$»ÏtiÚ +['þass']è? $»ÏtiÚ['þass']: +$Çme +; + +411 +$®Ÿs + = ( + `is£t +( +$»ÏtiÚ +['®Ÿs']è&& $»ÏtiÚ['®Ÿs'] !=ð +$this +-> +_þassP»fix + . $relation['class']) ? '‡s ' . $relation['alias'] : ''; + +413 iàÐ! + `is£t +( +$»ÏtiÚ +['type'])) { + +414 +$»ÏtiÚ +['ty³'] = +Doùrše_R–©iÚ +:: +ONE +; + +417 ià( +$»ÏtiÚ +['ty³'] ==ð +Doùrše_R–©iÚ +:: +ONE +) { + +418 +$»t +[ +$i +] = " ".'$this->hasOÃ(\'' . +$þass + . +$®Ÿs + . '\''; + +420 +$»t +[ +$i +] = " ".'$this->hasMªy(\'' . +$þass + . +$®Ÿs + . '\''; + +423 +$a + = + `¬¿y +(); + +425 ià( + `is£t +( +$»ÏtiÚ +['refClass'])) { + +426 +$a +[] = '\'»fCÏss\' => ' . +$this +-> + `v¬ExpÜt +( +$»ÏtiÚ +['refClass']); + +429 ià( + `is£t +( +$»ÏtiÚ +['refClassRelationAlias'])) { + +430 +$a +[] = '\'»fCÏssR–©iÚAlŸs\' => ' . +$this +-> + `v¬ExpÜt +( +$»ÏtiÚ +['refClassRelationAlias']); + +433 ià( + `is£t +( +$»ÏtiÚ +['deferred']) && $relation['deferred']) { + +434 +$a +[] = '\'deçuÉ\' => ' . +$this +-> + `v¬ExpÜt +( +$»ÏtiÚ +['deferred']); + +437 ià( + `is£t +( +$»ÏtiÚ +['local']) && $relation['local']) { + +438 +$a +[] = '\'loÿl\' => ' . +$this +-> + `v¬ExpÜt +( +$»ÏtiÚ +['local']); + +441 ià( + `is£t +( +$»ÏtiÚ +['foreign']) && $relation['foreign']) { + +442 +$a +[] = '\'fÜeign\' => ' . +$this +-> + `v¬ExpÜt +( +$»ÏtiÚ +['foreign']); + +445 ià( + `is£t +( +$»ÏtiÚ +['onDelete']) && $relation['onDelete']) { + +446 +$a +[] = '\'ÚD–‘e\' => ' . +$this +-> + `v¬ExpÜt +( +$»ÏtiÚ +['onDelete']); + +449 ià( + `is£t +( +$»ÏtiÚ +['onUpdate']) && $relation['onUpdate']) { + +450 +$a +[] = '\'ÚUpd©e\' => ' . +$this +-> + `v¬ExpÜt +( +$»ÏtiÚ +['onUpdate']); + +453 ià( + `is£t +( +$»ÏtiÚ +['cascade']) && $relation['cascade']) { + +454 +$a +[] = '\'ÿsÿde\' => ' . +$this +-> + `v¬ExpÜt +( +$»ÏtiÚ +['cascade']); + +457 ià( + `is£t +( +$»ÏtiÚ +['equal']) && $relation['equal']) { + +458 +$a +[] = '\'equ®\' => ' . +$this +-> + `v¬ExpÜt +( +$»ÏtiÚ +['equal']); + +461 ià( + `is£t +( +$»ÏtiÚ +['owningSide']) && $relation['owningSide']) { + +462 +$a +[] = '\'ownšgSide\' => ' . +$this +-> + `v¬ExpÜt +( +$»ÏtiÚ +['owningSide']); + +465 ià( + `is£t +( +$»ÏtiÚ +['foreignKeyName']) && $relation['foreignKeyName']) { + +466 +$a +[] = '\'fÜeignKeyName\' => ' . +$this +-> + `v¬ExpÜt +( +$»ÏtiÚ +['foreignKeyName']); + +469 ià( + `is£t +( +$»ÏtiÚ +['orderBy']) && $relation['orderBy']) { + +470 +$a +[] = '\'Üd”By\' => ' . +$this +-> + `v¬ExpÜt +( +$»ÏtiÚ +['orderBy']); + +473 iàÐ! + `em±y +( +$a +)) { + +474 +$»t +[ +$i +] .ð', ' . '¬¿y(' . +PHP_EOL + . + `¡r_»³© +(' ', 13); + +475 +$Ëngth + = + `¡¾’ +( +$»t +[ +$i +]); + +476 +$»t +[ +$i +] .ð + `im¶ode +(',' . +PHP_EOL + . + `¡r_»³© +(' ', 13), +$a +) . ')'; + +479 +$»t +[ +$i +] .ð');'. +PHP_EOL +; + +480 +$i +++; + +484 ià( + `is£t +( +$defš™iÚ +['aùAs']è&& + `is_¬¿y +($defš™iÚ['aùAs']è&& ! + `em±y +($definition['actAs'])) { + +485 +$»t +[ +$i +] = +$this +-> + `buždAùAs +( +$defš™iÚ +['actAs']); + +486 +$i +++; + +489 ià( + `is£t +( +$defš™iÚ +['li¡’”s']è&& + `is_¬¿y +($defš™iÚ['li¡’”s']è&& ! + `em±y +($definition['listeners'])) { + +490 +$»t +[ +$i +] = +$this +-> + `buždLi¡’”s +( +$defš™iÚ +['listeners']); + +491 +$i +++; + +494 +$code + = + `im¶ode +( +PHP_EOL +, +$»t +); + +495 +$code + = + `Œim +($code); + +497 +$code + = "·»Á::£tUp();" . +PHP_EOL + . ' ' . $code; + +500 ià( +$code +) { + +501  '…ubliøfunùiÚ s‘Up()' . +PHP_EOL + . ' {' . PHP_EOL . ' ' . +$code + . PHP_EOL . ' }'; + +503 + } +} + +511 +public + +funùiÚ + + $buždChecks +( +$checks +) + +513 +$bužd + = ''; + +514 + `fܗch + ( +$checks + +as + +$check +) { + +515 +$bužd + .ð" \$this->check('" . +$check + . "');" . +PHP_EOL +; + +517  +$bužd +; + +518 + } +} + +526 +public + +funùiÚ + + $buždCÞumns +( +¬¿y + +$cÞumns +) + +528 +$mªag” + = +Doùrše_Mªag” +:: + `g‘In¡ªû +(); + +529 +$»æ + = +Ãw + + `ReæeùiÚCÏss +( +$this +-> +_ba£CÏssName +); + +531 +$bužd + = +nuÎ +; + +532 + `fܗch + ( +$cÞumns + +as + +$Çme + => +$cÞumn +) { + +534 ià( + `is£t +( +$cÞumn +['Çme']è&& + `¡ros +($column['name'], '‡s ') && isset($column['alias'])) { + +535 +throw + +Ãw + + `Doùrše_ImpÜt_Exû±iÚ +( + +536 + `¥rštf +('Wh’ usšg‡ cÞumÀ®Ÿ you cªnمas ™ vŸ cÞumÀÇmªd cÞumÀ®Ÿ defš™iÚ (cÞumn: %s).', +$cÞumn +['name']) + +541 ià( + `is£t +( +$cÞumn +['alias']) && !isset($column['name'])) { + +542 +$cÞumn +['Çme'] = +$Çme + . '‡s ' . $column['alias']; + +545 +$cÞumnName + = + `is£t +( +$cÞumn +['Çme']è? $cÞumn['Çme']: +$Çme +; + +546 ià( +$mªag” +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_AUTO_ACCESSOR_OVERRIDE +)) { + +547 +$e + = + `ex¶ode +('‡ ', +$cÞumnName +); + +548 +$f›ldName + = + `is£t +( +$e +[1]) ? $e[1] : $e[0]; + +549 +$þassif›d + = +Doùrše_InæeùÜ +:: + `þassify +( +$f›ldName +); + +550 +$g‘‹r + = 'g‘' . +$þassif›d +; + +551 +$£‰” + = '£t' . +$þassif›d +; + +553 ià( +$»æ +-> + `hasM‘hod +( +$g‘‹r +è|| $»æ->hasM‘hod( +$£‰” +)) { + +554 +throw + +Ãw + + `Doùrše_ImpÜt_Exû±iÚ +( + +555 + `¥rštf +('Wh’ usšgh©Œibu‹ ATTR_AUTO_ACCESSOR_OVERRIDE you cªnÙ u£hf›ld‚am"%s" beÿu£ iˆi »£rved by Doùrše. You mu¡ choo£‡nÙh” f›ld‚ame.', +$f›ldName +) + +559 +$bužd + .ð" ".'$this->hasCÞumn(\'' . +$cÞumnName + . '\', \'' . +$cÞumn +['type'] . '\''; + +561 ià( +$cÞumn +['length']) { + +562 +$bužd + .ð', ' . +$cÞumn +['length']; + +564 +$bužd + .= ',‚ull'; + +567 +$ÝtiÚs + = +$cÞumn +; + +570 + `un£t +( +$ÝtiÚs +['name']); + +571 + `un£t +( +$ÝtiÚs +['alltypes']); + +572 + `un£t +( +$ÝtiÚs +['ntype']); + +576 ià( + `is£t +( +$ÝtiÚs +['´im¬y']è&& $ÝtiÚs['´im¬y'] =ð +Œue + && (isset($options['notnull']) && $options['notnull'] ==rue)) { + +577 + `un£t +( +$ÝtiÚs +['notnull']); + +582 ià( + `is£t +( +$ÝtiÚs +['´im¬y']è&& $ÝtiÚs['´im¬y'] =ð +Œue + && (isset($options['default']) && $options['default'] == 0)) { + +583 + `un£t +( +$ÝtiÚs +['default']); + +587 + `fܗch + ( +$ÝtiÚs + +as + +$key + => +$v®ue +) { + +588 ià( + `is_nuÎ +( +$v®ue +è|| ( + `is_¬¿y +($v®ueè&& + `em±y +($value))) { + +589 + `un£t +( +$ÝtiÚs +[ +$key +]); + +593 ià( + `is_¬¿y +( +$ÝtiÚs +è&& ! + `em±y +($options)) { + +594 +$bužd + .ð', ' . +$this +-> + `v¬ExpÜt +( +$ÝtiÚs +); + +597 +$bužd + .ð');' . +PHP_EOL +; + +600  +$bužd +; + +601 + } +} + +609 +public + +funùiÚ + + $buždAcûssÜs +( +¬¿y + +$defš™iÚ +) + +611 +$acûssÜs + = + `¬¿y +(); + +612 + `fܗch + ( + `¬¿y_keys +( +$defš™iÚ +['cÞumns']è +as + +$Çme +) { + +613 +$acûssÜs +[] = +$Çme +; + +616 + `fܗch + ( +$defš™iÚ +['»ÏtiÚs'] +as + +$»ÏtiÚ +) { + +617 +$acûssÜs +[] = +$»ÏtiÚ +['alias']; + +620 +$»t + = ''; + +621 + `fܗch + ( +$acûssÜs + +as + +$Çme +) { + +623 +$»t + .ð +PHP_EOL + . '…ubliøfunùiÚ g‘' . +Doùrše_InæeùÜ +:: + `þassify +(Doùrše_InæeùÜ:: + `bËize +( +$Çme +)) . "(\$load =rue)" . PHP_EOL; + +624 +$»t + .ð" {" . +PHP_EOL +; + +625 +$»t + .ð"„‘uº \$this->g‘('{$Çme}', \$lßd);" . +PHP_EOL +; + +626 +$»t + .ð" }" . +PHP_EOL +; + +629 +$»t + .ð +PHP_EOL + . '…ubliøfunùiÚ s‘' . +Doùrše_InæeùÜ +:: + `þassify +(Doùrše_InæeùÜ:: + `bËize +( +$Çme +)) . "(\${$name}, \$load =rue)" . PHP_EOL; + +630 +$»t + .ð" {" . +PHP_EOL +; + +631 +$»t + .ð"„‘uº \$this->£t('{$Çme}', \${$Çme}, \$lßd);" . +PHP_EOL +; + +632 +$»t + .ð" }" . +PHP_EOL +; + +635  +$»t +; + +636 + } +} + +643 +public + +funùiÚ + + $buždPhpDocs +( +¬¿y + +$defš™iÚ +) + +645 +$»t + = + `¬¿y +(); + +647 +$»t +[] = +$defš™iÚ +['className']; + +648 +$»t +[] = ''; + +649 +$»t +[] = 'This class has been‡uto-generated byhe Doctrine ORM Framework'; + +650 +$»t +[] = ''; + +652 ià(( + `is£t +( +$defš™iÚ +['is_ba£_þass']è&& $defš™iÚ['is_ba£_þass']è|| ! +$this +-> + `g’”©eBa£CÏs£s +()) { + +653 + `fܗch + ( +$defš™iÚ +['cÞumns'] +as + +$Çme + => +$cÞumn +) { + +654 +$Çme + = + `is£t +( +$cÞumn +['name']) ? $column['name']:$name; + +656 ià( + `¡ros +( +$Çme +, '‡s ')) + +658 ià( + `¡½os +( +$Çme +, '‡s')) { + +659 +$·¹s + = + `ex¶ode +('‡ ', +$Çme +); + +661 +$·¹s + = + `ex¶ode +(' AS ', +$Çme +); + +664 ià( + `couÁ +( +$·¹s +) > 1) { + +665 +$f›ldName + = +$·¹s +[1]; + +667 +$f›ldName + = +$·¹s +[0]; + +670 +$Çme + = +$·¹s +[0]; + +672 +$f›ldName + = +$Çme +; + +673 +$Çme + = $name; + +676 +$Çme + = + `Œim +($name); + +677 +$f›ldName + = + `Œim +($fieldName); + +679 +$»t +[] = '@´Ý”ty ' . +$cÞumn +['ty³'] . ' $' . +$f›ldName +; + +682 ià( + `is£t +( +$defš™iÚ +['»ÏtiÚs']è&& ! + `em±y +($definition['relations'])) { + +683 + `fܗch + ( +$defš™iÚ +['»ÏtiÚs'] +as + +$»ÏtiÚ +) { + +684 +$ty³ + = ( + `is£t +( +$»ÏtiÚ +['ty³']è&& $»ÏtiÚ['ty³'] =ð +Doùrše_R–©iÚ +:: +MANY +è? 'Doùrše_CÞËùiÚ' : +$this +-> +_þassP»fix + . $relation['class']; + +685 +$»t +[] = '@´Ý”ty ' . +$ty³ + . ' $' . +$»ÏtiÚ +['alias']; + +688 +$»t +[] = ''; + +691 +$»t +[] = '@·ckag ' . +$this +-> +_phpDocPackage +; + +692 +$»t +[] = '@sub·ckag' . +$this +-> +_phpDocSub·ckage +; + +693 +$»t +[] = '@authÜ ' . +$this +-> +_phpDocName + . ' <' . $this-> +_phpDocEmaž + . '>'; + +694 +$»t +[] = '@version SVN: $Id: Builder.php 7490 2010-03-29 19:53:27Z jwage $'; + +696 +$»t + = ' * ' . + `im¶ode +( +PHP_EOL + . ' * ', $ret); + +697 +$»t + = ' ' . + `Œim +($ret); + +699  +$»t +; + +700 + } +} + +710 +´iv©e + +funùiÚ + + $em™Assign +( +$Ëv– +, +$Çme +, +$ÝtiÚ +) + +713 +$þas¢ame + = +$Çme +; + +714 ià( + `þass_exi¡s +("Doùrše_Tem¶©e_$Çme", +Œue +)) { + +715 +$þas¢ame + = "Doctrine_Template_$name"; + +717  " \$" . + `¡¹Þow” +( +$Çme +è. "$Ëv– =‚ew $þas¢ame($ÝtiÚ);". +PHP_EOL +; + +718 + } +} + +728 +´iv©e + +funùiÚ + + $em™AddChžd +( +$Ëv– +, +$·»Á +, +$Çme +) + +730  " \$" . + `¡¹Þow” +( +$·»Á +è. ( +$Ëv– + - 1è. "->addChžd(\$" . sŒtÞow”( +$Çme +è. "$Ëv–);" . +PHP_EOL +; + +731 + } +} + +741 +´iv©e + +funùiÚ + + $em™AùAs +( +$Ëv– +, +$Çme +) + +743  " \$this->aùAs(\$" . + `¡¹Þow” +( +$Çme +è. "$Ëv–);" . +PHP_EOL +; + +744 + } +} + +750 +public + +funùiÚ + + $buždAùAs +( +$aùAs +) + +752 +$em™‹dAùAs + = + `¬¿y +(); + +753 +$bužd + = +$this +-> + `šÃrBuždAùAs +( +$aùAs +, 0, +nuÎ +, +$em™‹dAùAs +); + +754 + `fܗch +( +$em™‹dAùAs + +as + +$¡r +) { + +755 +$bužd + .ð +$¡r +; + +757  +$bužd +; + +758 + } +} + +769 +´iv©e + +funùiÚ + + $šÃrBuždAùAs +( +$aùAs +, +$Ëv– + = 0, +$·»Á + = +nuÎ +, +¬¿y + & +$em™‹dAùAs +) + +772 ià( + `is_¬¿y +( +$aùAs +è&& + `is£t +($actAs[0]) && !is_array($actAs[0])) { + +773 +$tmp + = + `¬¿y +(); + +774 + `fܗch + ( +$aùAs + +as + +$key + => +$v®ue +) { + +775 ià( + `is_num”ic +( +$key +)) { + +776 +$tmp +[( +¡ršg +) +$v®ue +] = +nuÎ +; + +778 +$tmp +[ +$key +] = +$v®ue +; + +781 +$aùAs + = +$tmp +; + +784 +$bužd + = ''; + +785 +$cu¼’tP¬’t + = +$·»Á +; + +786 ià( + `is_¬¿y +( +$aùAs +)) { + +787 + `fܗch +( +$aùAs + +as + +$‹m¶©e + => +$ÝtiÚs +) { + +788 ià( +$‹m¶©e + == 'actAs') { + +790 +$bužd + .ð +$this +-> + `šÃrBuždAùAs +( +$ÝtiÚs +, +$Ëv– + + 1, +$·»Á +, +$em™‹dAùAs +); + +791 } ià( + `is_¬¿y +( +$ÝtiÚs +)) { + +793 +$»®O±iÚs + = + `¬¿y +(); + +794 +$ËáAùAs + = + `¬¿y +(); + +795 + `fܗch +( +$ÝtiÚs + +as + +$Çme + => +$v®ue +) { + +796 ià( +$Çme + != 'actAs') { + +797 +$»®O±iÚs +[ +$Çme +] = +$ÝtiÚs +[$name]; + +799 +$ËáAùAs +[ +$Çme +] = +$ÝtiÚs +[$name]; + +803 +$ÝtiÚPHP + = +$this +-> + `v¬ExpÜt +( +$»®O±iÚs +); + +804 +$bužd + .ð +$this +-> + `em™Assign +( +$Ëv– +, +$‹m¶©e +, +$ÝtiÚPHP +); + +805 ià( +$Ëv– + == 0) { + +806 +$em™‹dAùAs +[] = +$this +-> + `em™AùAs +( +$Ëv– +, +$‹m¶©e +); + +808 +$bužd + .ð +$this +-> + `em™AddChžd +( +$Ëv– +, +$cu¼’tP¬’t +, +$‹m¶©e +); + +811 +$·»Á + = +$‹m¶©e +; + +812 +$bužd + .ð +$this +-> + `šÃrBuždAùAs +( +$ËáAùAs +, +$Ëv– +, +$‹m¶©e +, +$em™‹dAùAs +); + +814 +$bužd + .ð +$this +-> + `em™Assign +( +$Ëv– +, +$‹m¶©e +, +nuÎ +); + +815 ià( +$Ëv– + == 0) { + +816 +$em™‹dAùAs +[] = +$this +-> + `em™AùAs +( +$Ëv– +, +$‹m¶©e +); + +818 +$bužd + .ð +$this +-> + `em™AddChžd +( +$Ëv– +, +$cu¼’tP¬’t +, +$‹m¶©e +); + +820 +$·»Á + = +$‹m¶©e +; + +824 +$bužd + .ð +$this +-> + `em™Assign +( +$Ëv– +, +$aùAs +, +nuÎ +); + +825 ià( +$Ëv– + == 0) { + +826 +$em™‹dAùAs +[] = +$this +-> + `em™AùAs +( +$Ëv– +, +$aùAs +); + +828 +$bužd + .ð +$this +-> + `em™AddChžd +( +$Ëv– +, +$cu¼’tP¬’t +, +$aùAs +); + +832  +$bužd +; + +833 + } +} + +841 +public + +funùiÚ + + $buždLi¡’”s +( +$li¡’”s +) + +843 +$bužd + = ''; + +845 + `fܗch +( +$li¡’”s + +as + +$Çme + => +$ÝtiÚs +) { + +846 iàÐ! + `is_¬¿y +( +$ÝtiÚs +è&& $ÝtiÚ !=ð +nuÎ +) { + +847 +$Çme + = +$ÝtiÚs +; + +848 +$ÝtiÚs + = +nuÎ +; + +851 +$u£O±iÚs + = ( ! + `em±y +( +$ÝtiÚs +è&& + `is£t +($ÝtiÚs['u£O±iÚs']è&& $ÝtiÚs['u£O±iÚs'] =ð +Œue +) + +853 +$þass + = ( ! + `em±y +( +$ÝtiÚs +è&& + `is£t +($ÝtiÚs['þass'])è? $ÝtiÚs['þass'] : +$Çme +; + +855 +$bužd + .ð" \$this->addLi¡’”Òew " . +$þass + . "(" . +$u£O±iÚs + . "), '" . +$Çme + . "');" . +PHP_EOL +; + +858  +$bužd +; + +859 + } +} + +867 +public + +funùiÚ + + $buždA‰ribu‹s +( +¬¿y + +$©Œibu‹s +) + +869 +$bužd + = +PHP_EOL +; + +870 + `fܗch + ( +$©Œibu‹s + +as + +$key + => +$v®ue +) { + +872 +$v®ues + = + `¬¿y +(); + +873 ià( + `is_boÞ +( +$v®ue +)) + +875 +$v®ues +[] = +$v®ue + ? 'true':'false'; + +877 iàÐ! + `is_¬¿y +( +$v®ue +)) { + +878 +$v®ue + = + `¬¿y +($value); + +881 + `fܗch + ( +$v®ue + +as + +$©Œ +) { + +882 +$cÚ¡ + = "Doùrše_CÜe::" . + `¡¹ouµ” +( +$key +è. "_" . sŒtouµ”( +$©Œ +); + +883 ià( + `defšed +( +$cÚ¡ +)) { + +884 +$v®ues +[] = +$cÚ¡ +; + +886 +$v®ues +[] = "'" . +$©Œ + . "'"; + +891 +$¡ršg + = + `im¶ode +(' ^ ', +$v®ues +); + +892 +$bužd + .ð" \$this->£tA‰ribu‹(Doùrše_CÜe::ATTR_" . + `¡¹ouµ” +( +$key +è. ", " . +$¡ršg + . ");" . +PHP_EOL +; + +895  +$bužd +; + +896 + } +} + +904 +public + +funùiÚ + + $buždO±iÚs +( +¬¿y + +$ÝtiÚs +) + +906 +$bužd + = ''; + +907 + `fܗch + ( +$ÝtiÚs + +as + +$Çme + => +$v®ue +) { + +908 +$bužd + .ð" \$this->ÝtiÚ('$Çme', " . +$this +-> + `v¬ExpÜt +( +$v®ue +è. ");" . +PHP_EOL +; + +911  +$bužd +; + +912 + } +} + +920 +public + +funùiÚ + + $buždIndexes +( +¬¿y + +$šdexes +) + +922 +$bužd + = ''; + +924 + `fܗch + ( +$šdexes + +as + +$šdexName + => +$defš™iÚs +) { + +925 +$bužd + .ð +PHP_EOL + . " \$this->šdex('" . +$šdexName + . "'"; + +926 +$bužd + .ð', ' . +$this +-> + `v¬ExpÜt +( +$defš™iÚs +); + +927 +$bužd + .= ');'; + +930  +$bužd +; + +931 + } +} + +939 +public + +funùiÚ + + $buždToSŒšg +( +¬¿y + +$defš™iÚ +) + +941 iàÐ + `em±y +( +$defš™iÚ +['toString'])) { + +945 +$»t + = +PHP_EOL + . PHP_EOL . '…ublic function __toString()' . PHP_EOL; + +946 +$»t + .ð" {" . +PHP_EOL +; + +947 +$»t + .ð"„‘uº (¡ršgè\$this->". +$defš™iÚ +['toSŒšg'].";" . +PHP_EOL +; + +948 +$»t + .= " }"; + +949  +$»t +; + +950 + } +} + +958 +public + +funùiÚ + + $buždDefš™iÚ +( +¬¿y + +$defš™iÚ +) + +960 iàÐ! + `is£t +( +$defš™iÚ +['className'])) { + +961 +throw + +Ãw + + `Doùrše_ImpÜt_Bužd”_Exû±iÚ +('Missing class‚ame.'); + +963 +$ab¡¿ù + = + `is£t +( +$defš™iÚ +['ab¡¿ù']è&& $defš™iÚ['ab¡¿ù'] ==ð +Œue + ? 'ab¡¿ù ': +nuÎ +; + +964 +$þassName + = +$defš™iÚ +['className']; + +965 +$ex‹nds + = + `is£t +( +$defš™iÚ +['šh”™ªû']['ex‹nds']è? $defš™iÚ['šh”™ªû']['ex‹nds']: +$this +-> +_ba£CÏssName +; + +967 iàÐ! ( + `is£t +( +$defš™iÚ +['no_defš™iÚ']è&& $defš™iÚ['no_defš™iÚ'] ==ð +Œue +)) { + +968 +$bËDefš™iÚCode + = +$this +-> + `buždTabËDefš™iÚ +( +$defš™iÚ +); + +969 +$£tUpCode + = +$this +-> + `buždS‘Up +( +$defš™iÚ +); + +971 +$bËDefš™iÚCode + = +nuÎ +; + +972 +$£tUpCode + = +nuÎ +; + +975 ià( +$bËDefš™iÚCode + && +$£tUpCode +) { + +976 +$£tUpCode + = +PHP_EOL + . $setUpCode; + +979 +$£tUpCode +.ð +$this +-> + `buždToSŒšg +( +$defš™iÚ +); + +981 +$docs + = +PHP_EOL + . +$this +-> + `buždPhpDocs +( +$defš™iÚ +); + +983 +$cڋÁ + = + `¥rštf +( +£lf +:: +$_l +, +$docs +, +$ab¡¿ù +, + +984 +$þassName +, + +985 +$ex‹nds +, + +986 +$bËDefš™iÚCode +, + +987 +$£tUpCode +); + +989  +$cڋÁ +; + +990 + } +} + +1004 +public + +funùiÚ + + $buždRecÜd +( +¬¿y + +$defš™iÚ +) + +1006 iàÐ! + `is£t +( +$defš™iÚ +['className'])) { + +1007 +throw + +Ãw + + `Doùrše_ImpÜt_Bužd”_Exû±iÚ +('Missing class‚ame.'); + +1010 +$defš™iÚ +['topLevelClassName'] = $definition['className']; + +1012 ià( +$this +-> + `g’”©eBa£CÏs£s +()) { + +1013 +$defš™iÚ +['is_·ckage'] = ( + `is£t +($defš™iÚ['·ckage']è&& $defš™iÚ['·ckage']è? +Œue +: +çl£ +; + +1015 ià( +$defš™iÚ +['is_package']) { + +1016 +$e + = + `ex¶ode +('.', + `Œim +( +$defš™iÚ +['package'])); + +1017 +$defš™iÚ +['·ckage_Çme'] = +$e +[0]; + +1019 +$defš™iÚ +['·ckage_·th'] = ! + `em±y +( +$e +è? + `im¶ode +( +DIRECTORY_SEPARATOR +, $e):$definition['package_name']; + +1022 +$tÝLev– + = +$defš™iÚ +; + +1023 + `un£t +( +$tÝLev– +['tableName']); + +1027 +$tÝLev– +['šh”™ªû']['ex‹nds'] = ( + `is£t +($tÝLev–['·ckage']è&& $tÝLev–['·ckage']è? +$this +-> +_·ckagesP»fix + . $tÝLev–['þassName']:$this-> +_ba£CÏssP»fix + . $topLevel['className']; + +1028 +$tÝLev– +['no_defš™iÚ'] = +Œue +; + +1029 +$tÝLev– +['g’”©e_Úû'] = +Œue +; + +1030 +$tÝLev– +['is_maš_þass'] = +Œue +; + +1031 + `un£t +( +$tÝLev– +['connection']); + +1034 ià( + `is£t +( +$defš™iÚ +['package'])) { + +1036 +$·ckageLev– + = +$defš™iÚ +; + +1037 +$·ckageLev– +['þassName'] = +$tÝLev– +['inheritance']['extends']; + +1038 +$·ckageLev– +['šh”™ªû']['ex‹nds'] = +$this +-> +_ba£CÏssP»fix + . +$tÝLev– +['className']; + +1039 +$·ckageLev– +['no_defš™iÚ'] = +Œue +; + +1040 +$·ckageLev– +['ab¡¿ù'] = +Œue +; + +1041 +$·ckageLev– +['ov”ride_·»Á'] = +Œue +; + +1042 +$·ckageLev– +['g’”©e_Úû'] = +Œue +; + +1043 +$·ckageLev– +['is_·ckage_þass'] = +Œue +; + +1044 + `un£t +( +$·ckageLev– +['connection']); + +1046 +$·ckageLev– +['bËCÏssName'] = + `¥rštf +( +$this +-> +_bËCÏssFÜm© +, $packageLevel['className']); + +1047 +$·ckageLev– +['šh”™ªû']['bËEx‹nds'] = + `is£t +( +$defš™iÚ +['šh”™ªû']['ex‹nds']è? + `¥rštf +( +$this +-> +_bËCÏssFÜm© +, $defš™iÚ['šh”™ªû']['ex‹nds']):$this-> +_ba£TabËCÏssName +; + +1049 +$tÝLev– +['bËCÏssName'] = + `¥rštf +( +$this +-> +_bËCÏssFÜm© +, $topLevel['topLevelClassName']); + +1050 +$tÝLev– +['šh”™ªû']['bËEx‹nds'] = + `¥rštf +( +$this +-> +_bËCÏssFÜm© +, +$·ckageLev– +['className']); + +1052 +$tÝLev– +['bËCÏssName'] = + `¥rštf +( +$this +-> +_bËCÏssFÜm© +, $topLevel['className']); + +1053 +$tÝLev– +['šh”™ªû']['bËEx‹nds'] = + `is£t +( +$defš™iÚ +['šh”™ªû']['ex‹nds']è? + `¥rštf +( +$this +-> +_bËCÏssFÜm© +, $defš™iÚ['šh”™ªû']['ex‹nds']):$this-> +_ba£TabËCÏssName +; + +1056 +$ba£CÏss + = +$defš™iÚ +; + +1057 +$ba£CÏss +['þassName'] = +$this +-> + `_g‘Ba£CÏssName +($baseClass['className']); + +1058 +$ba£CÏss +['ab¡¿ù'] = +Œue +; + +1059 +$ba£CÏss +['ov”ride_·»Á'] = +çl£ +; + +1060 +$ba£CÏss +['is_ba£_þass'] = +Œue +; + +1062 +$this +-> + `wr™eDefš™iÚ +( +$ba£CÏss +); + +1064 iàÐ! + `em±y +( +$·ckageLev– +)) { + +1065 +$this +-> + `wr™eDefš™iÚ +( +$·ckageLev– +); + +1068 +$this +-> + `wr™eDefš™iÚ +( +$tÝLev– +); + +1070 +$this +-> + `wr™eDefš™iÚ +( +$defš™iÚ +); + +1072 + } +} + +1074 +´Ùeùed + +funùiÚ + + $_g‘Ba£CÏssName +( +$þassName +) + +1076  +$this +-> +_ba£CÏssP»fix + . +$þassName +; + +1077 + } +} + +1079 +public + +funùiÚ + +buždTabËCÏssDefš™iÚ +( +$þassName +, +$defš™iÚ +, +$ÝtiÚs + = + $¬¿y +()) + +1081 +$ex‹nds + = + `is£t +( +$ÝtiÚs +['ex‹nds']è? $ÝtiÚs['ex‹nds']: +$this +-> +_ba£TabËCÏssName +; + +1082 ià( +$ex‹nds + !=ð +$this +-> +_ba£TabËCÏssName +) { + +1083 +$ex‹nds + = +$this +-> +_þassP»fix + . $extends; + +1086 +$code + = + `¥rštf +(" /** + +1087 * +R‘uºs + +ª + +š¡ªû + +of + +this + +þass +. + +1089 * @ +objeù + % +s + + +1091 +public +  +funùiÚ + + `g‘In¡ªû +() + +1093  +Doùrše_CÜe +:: + `g‘TabË +('%s'); + +1096 +$docBlock + = + `¬¿y +(); + +1097 +$docBlock +[] = +$þassName +; + +1098 +$docBlock +[] = ''; + +1099 +$docBlock +[] = 'This class has been‡uto-generated byhe Doctrine ORM Framework'; + +1100 +$docBlock + = +PHP_EOL +.' * ' . + `im¶ode +(PHP_EOL . ' * ', $docBlock); + +1102 +$cڋÁ + = ' +_eÞStyË +) { + +1114 +$cڋÁ + = + `¡r_»¶aû +( +PHP_EOL +, +$this +-> +_eÞStyË +, $content); + +1117  +$cڋÁ +; + +1118 + } +} + +1125 +public + +funùiÚ + +wr™eTabËCÏssDefš™iÚ +( +¬¿y + +$defš™iÚ +, +$·th +, +$ÝtiÚs + = + $¬¿y +()) + +1127 ià( +$´efix + = +$this +-> +_þassP»fix +) { + +1128 +$þassName + = +$´efix + . +$defš™iÚ +['tableClassName']; + +1129 ià( +$this +-> +_þassP»fixFžes +) { + +1130 +$fžeName + = +$þassName + . +$this +-> +_suffix +; + +1132 +$fžeName + = +$defš™iÚ +['bËCÏssName'] . +$this +-> +_suffix +; + +1134 +$wr™eP©h + = +$·th + . +DIRECTORY_SEPARATOR + . +$fžeName +; + +1136 +$þassName + = +$defš™iÚ +['tableClassName']; + +1137 +$fžeName + = +$þassName + . +$this +-> +_suffix +; + +1140 ià( +$this +-> +_³¬StyË +) { + +1141 +$wr™eP©h + = +$·th + . +DIRECTORY_SEPARATOR + . + `¡r_»¶aû +('_', '/', +$fžeName +); + +1143 +$wr™eP©h + = +$·th + . +DIRECTORY_SEPARATOR + . +$fžeName +; + +1146 +$cڋÁ + = +$this +-> + `buždTabËCÏssDefš™iÚ +( +$þassName +, +$defš™iÚ +, +$ÝtiÚs +); + +1148 +Doùrše_Lib +:: + `makeDœeùܛs +( + `dœÇme +( +$wr™eP©h +)); + +1150 +Doùrše_CÜe +:: + `lßdMod– +( +$þassName +, +$wr™eP©h +); + +1152 iàÐ! + `fže_exi¡s +( +$wr™eP©h +)) { + +1153 + `fže_put_cڋÁs +( +$wr™eP©h +, +$cڋÁ +); + +1155 + } +} + +1164 +´Ùeùed + +funùiÚ + + $_g‘FžeName +( +$Üigš®CÏssName +, +$defš™iÚ +) + +1166 ià( +$this +-> +_þassP»fixFžes +) { + +1167 +$fžeName + = +$defš™iÚ +['þassName'] . +$this +-> +_suffix +; + +1169 +$fžeName + = +$Üigš®CÏssName + . +$this +-> +_suffix +; + +1172 ià( +$this +-> +_³¬StyË +) { + +1173 +$fžeName + = + `¡r_»¶aû +('_', '/', $fileName); + +1176  +$fžeName +; + +1177 + } +} + +1191 +public + +funùiÚ + + $wr™eDefš™iÚ +( +¬¿y + +$defš™iÚ +) + +1193 +$Üigš®CÏssName + = +$defš™iÚ +['className']; + +1194 ià( +$´efix + = +$this +-> +_þassP»fix +) { + +1195 +$defš™iÚ +['þassName'] = +$´efix + . $definition['className']; + +1196 ià( + `is£t +( +$defš™iÚ +['connectionClassName'])) { + +1197 +$defš™iÚ +['cÚÃùiÚCÏssName'] = +$´efix + . $definition['connectionClassName']; + +1199 +$defš™iÚ +['tÝLev–CÏssName'] = +$´efix + . $definition['topLevelClassName']; + +1200 ià( + `is£t +( +$defš™iÚ +['inheritance']['extends'])) { + +1201 +$defš™iÚ +['šh”™ªû']['ex‹nds'] = +$´efix + . $definition['inheritance']['extends']; + +1205 +$defš™iÚCode + = +$this +-> + `buždDefš™iÚ +( +$defš™iÚ +); + +1207 ià( +$´efix +) { + +1208 +$defš™iÚCode + = + `¡r_»¶aû +("this->hasOne('", "this->hasOne('$prefix", $definitionCode); + +1209 +$defš™iÚCode + = + `¡r_»¶aû +("this->hasMany('", "this->hasMany('$prefix", $definitionCode); + +1210 +$defš™iÚCode + = + `¡r_»¶aû +("'refClass' => '", "'refClass' => '$prefix", $definitionCode); + +1213 +$fžeName + = +$this +-> + `_g‘FžeName +( +$Üigš®CÏssName +, +$defš™iÚ +); + +1215 +$·ckagesP©h + = +$this +-> +_·ckagesP©h + ? $this->_·ckagesP©h:$this-> +_·th +; + +1218 ià( + `is£t +( +$defš™iÚ +['is_main_class']) && $definition['is_main_class']) { + +1220 ià( + `is£t +( +$defš™iÚ +['is_package']) && $definition['is_package']) { + +1221 +$wr™eP©h + = +$this +-> +_·th + . +DIRECTORY_SEPARATOR + . +$defš™iÚ +['package_name']; + +1224 +$wr™eP©h + = +$this +-> +_·th +; + +1227 ià( +$this +-> + `g’”©eTabËCÏs£s +()) { + +1228 +$this +-> + `wr™eTabËCÏssDefš™iÚ +( +$defš™iÚ +, +$wr™eP©h +, + `¬¿y +('extends' => $definition['inheritance']['tableExtends'])); + +1232 ià( + `is£t +( +$defš™iÚ +['is_package_class']) && $definition['is_package_class']) { + +1233 ià( + `is£t +( +$defš™iÚ +['package_custom_path'])) { + +1234 +$wr™eP©h + = +$defš™iÚ +['package_custom_path']; + +1236 +$wr™eP©h + = +$·ckagesP©h + . +DIRECTORY_SEPARATOR + . +$defš™iÚ +['package_path']; + +1239 ià( +$this +-> + `g’”©eTabËCÏs£s +()) { + +1240 +$this +-> + `wr™eTabËCÏssDefš™iÚ +( +$defš™iÚ +, +$wr™eP©h +, + `¬¿y +('extends' => $definition['inheritance']['tableExtends'])); + +1244 ià( + `is£t +( +$defš™iÚ +['is_base_class']) && $definition['is_base_class']) { + +1246 ià( + `is£t +( +$defš™iÚ +['is_package']) && $definition['is_package']) { + +1247 +$ba£P©h + = +$this +-> +_·th + . +DIRECTORY_SEPARATOR + . +$defš™iÚ +['package_name']; + +1248 +$wr™eP©h + = +$ba£P©h + . +DIRECTORY_SEPARATOR + . +$this +-> +_ba£CÏs£sDœeùÜy +; + +1251 +$wr™eP©h + = +$this +-> +_·th + . +DIRECTORY_SEPARATOR + . $this-> +_ba£CÏs£sDœeùÜy +; + +1256 ià( + `is£t +( +$wr™eP©h +)) { + +1257 +Doùrše_Lib +:: + `makeDœeùܛs +( +$wr™eP©h +); + +1259 +$wr™eP©h + .ð +DIRECTORY_SEPARATOR + . +$fžeName +; + +1262 +Doùrše_Lib +:: + `makeDœeùܛs +( +$this +-> +_·th +); + +1264 +$wr™eP©h + = +$this +-> +_·th + . +DIRECTORY_SEPARATOR + . +$fžeName +; + +1267 +$code + = "bšdCompڒt('" . +$defš™iÚ +['cÚÃùiÚCÏssName'] . "', '" . $defš™iÚ['cÚÃùiÚ'] . "');" . +PHP_EOL +; + +1274 +$code + .ð +PHP_EOL + . +$defš™iÚCode +; + +1276 ià( +$this +-> +_eÞStyË +) { + +1277 +$code + = + `¡r_»¶aû +( +PHP_EOL +, +$this +-> +_eÞStyË +, $code); + +1280 +Doùrše_Lib +:: + `makeDœeùܛs +( + `dœÇme +( +$wr™eP©h +)); + +1282 ià( + `is£t +( +$defš™iÚ +['g’”©e_Úû']è&& $defš™iÚ['g’”©e_Úû'] ==ð +Œue +) { + +1283 iàÐ! + `fže_exi¡s +( +$wr™eP©h +)) { + +1284 +$by‹s + = + `fže_put_cڋÁs +( +$wr™eP©h +, +$code +); + +1287 +$by‹s + = + `fže_put_cڋÁs +( +$wr™eP©h +, +$code +); + +1290 ià( + `is£t +( +$by‹s +è&& $by‹ ==ð +çl£ +) { + +1291 +throw + +Ãw + + `Doùrše_ImpÜt_Bužd”_Exû±iÚ +("Couldn'ˆwr™fž" . +$wr™eP©h +); + +1294 +Doùrše_CÜe +:: + `lßdMod– +( +$defš™iÚ +['þassName'], +$wr™eP©h +); + +1295 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Import/Builder/Exception.php + +1 +cÚn +-> + `ãtchCÞumn +( +$qu”y +); + +47  + `¬¿y_m­ +( + `¬¿y +( +$this +-> +cÚn +-> +fÜm©‹r +, 'fixSequ’ûName'), +$bËNames +); + +69 +public + +funùiÚ + + $li¡TabËR–©iÚs +( +$bËName +) + +71 +$»ÏtiÚs + = + `¬¿y +(); + +72 +$sql + = 'SELECT o1.Çma bË_Çme, c1.Çma cÞumn_Çme, o2.Çma »ã»nûd_bË_Çme, c2.Çma »ã»nûd_cÞumn_Çme, s.Çma cÚ¡¿št_ÇmFROM sysfÜeignkey fk i” još sysobjeù o1 oÀfk.fkeyid = o1.id i” još sysobjeù o2 oÀfk.rkeyid = o2.id i” još syscÞumn c1 oÀc1.id = o1.id‡nd c1.cÞid = fk.fkey i” još syscÞumn c2 oÀc2.id = o2.id‡nd c2.cÞid = fk.rkey i” još sysobjeù  Ú fk.cÚ¡id = s.id AND o1.Çmð\'' . +$bËName + . '\''; + +73 +$»suÉs + = +$this +-> +cÚn +-> + `ãtchAssoc +( +$sql +); + +74 + `fܗch + ( +$»suÉs + +as + +$»suÉ +) + +76 +$»suÉ + = + `¬¿y_chªge_key_ÿ£ +($»suÉ, +CASE_LOWER +); + +77 +$»ÏtiÚs +[] = + `¬¿y +('bË' => +$»suÉ +['referenced_table_name'], + +78 'loÿl' => +$»suÉ +['column_name'], + +79 'fÜeign' => +$»suÉ +['referenced_column_name']); + +81  +$»ÏtiÚs +; + +82 + } +} + +90 +public + +funùiÚ + + $li¡TabËCÞumns +( +$bË +) + +92 +$sql + = 'EXEC sp_´im¬y_keys_row£ˆ@bË_Çmð' . +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$bË +, +Œue +); + +93 +$»suÉ + = +$this +-> +cÚn +-> + `ãtchAssoc +( +$sql +); + +94 +$´im¬y + = + `¬¿y +(); + +95 + `fܗch + ( +$»suÉ + +as + +$key + => +$v® +) { + +96 +$´im¬y +[] = +$v® +['COLUMN_NAME']; + +99 +$sql + = 'EXEC sp_cÞumn @bË_Çmð' . +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$bË +, +Œue +); + +100 +$»suÉ + = +$this +-> +cÚn +-> + `ãtchAssoc +( +$sql +); + +101 +$cÞumns + = + `¬¿y +(); + +103 + `fܗch + ( +$»suÉ + +as + +$key + => +$v® +) { + +104 +$v® + = + `¬¿y_chªge_key_ÿ£ +($v®, +CASE_LOWER +); + +106 ià( + `¡r¡r +( +$v® +['type_name'], ' ')) { + +107 + `li¡ +( +$ty³ +, +$id’t™y +èð + `ex¶ode +(' ', +$v® +['type_name']); + +109 +$ty³ + = +$v® +['type_name']; + +110 +$id’t™y + = ''; + +113 ià( +$ty³ + == 'varchar') { + +114 +$ty³ + .ð'(' . +$v® +['length'] . ')'; + +117 +$v® +['ty³'] = +$ty³ +; + +118 +$v® +['id’t™y'] = +$id’t™y +; + +119 +$deþ + = +$this +-> +cÚn +-> +d©aDiù +-> + `g‘P܏bËDeþ¬©iÚ +( +$v® +); + +121 +$isId’t™y + = ( +boÞ +è( + `¡¹ouµ” +( + `Œim +( +$id’t™y +)) == 'IDENTITY'); + +122 +$isNuÎabË + = ( +boÞ +è( + `¡¹ouµ” +( + `Œim +( +$v® +['is_nullable'])) == 'NO'); + +123 +$isPrim¬y + = + `š_¬¿y +( +$v® +['cÞumn_Çme'], +$´im¬y +); + +125 +$desütiÚ + = + `¬¿y +( + +126 'Çme' => +$v® +['column_name'], + +127 'Áy³' => +$ty³ +, + +128 'ty³' => +$deþ +['type'][0], + +129 '®Éy³s' => +$deþ +['type'], + +130 'Ëngth' => +$deþ +['length'], + +131 'fixed' => ( +boÞ +è +$deþ +['fixed'], + +132 'unsigÃd' => ( +boÞ +è +$deþ +['unsigned'], + +133 'nÙnuÎ' => +$isId’t™y + ? +Œue + : +$isNuÎabË +, + +134 'deçuÉ' => +$v® +['column_def'], + +135 '´im¬y' => +$isPrim¬y +, + +136 'autošüem’t' => +$isId’t™y +, + +139 +$cÞumns +[ +$v® +['cÞumn_Çme']] = +$desütiÚ +; + +142  +$cÞumns +; + +143 + } +} + +151 +public + +funùiÚ + + $li¡TabËIndexes +( +$bË +) + +154 + } +} + +162 +public + +funùiÚ + + $li¡TabËs +( +$d©aba£ + = +nuÎ +) + +164 +$sql + = "SELECT‚ame FROM sysobjects WHEREype = 'U' AND‚ame <> 'dtproperties' AND‚ame <> 'sysdiagrams' ORDER BY‚ame"; + +166  +$this +-> +cÚn +-> + `ãtchCÞumn +( +$sql +); + +167 + } +} + +174 +public + +funùiÚ + + $li¡Trigg”s +( +$d©aba£ + = +nuÎ +) + +176 +$qu”y + = "SELECT‚ame FROM sysobjects WHERE xtype = 'TR'"; + +178 +$»suÉ + = +$this +-> +cÚn +-> + `ãtchCÞumn +( +$qu”y +); + +180  +$»suÉ +; + +181 + } +} + +189 +public + +funùiÚ + + $li¡TabËTrigg”s +( +$bË +) + +191 +$bË + = +$this +-> +cÚn +-> + `quÙe +($table, 'text'); + +192 +$qu”y + = "SELECT‚amFROM sysobjeù WHERE xty³ = 'TR' AND objeù_ÇmeÕ¬’t_objèð" . +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$bË +, +Œue +); + +194 +$»suÉ + = +$this +-> +cÚn +-> + `ãtchCÞumn +( +$qu”y +); + +196  +$»suÉ +; + +197 + } +} + +205 +public + +funùiÚ + + $li¡TabËV›ws +( +$bË +) + +207 +$keyName + = 'INDEX_NAME'; + +208 +$pkName + = 'PK_NAME'; + +209 ià( +$this +-> +cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_FIELD_CASE +è&& ($this->cÚn->g‘A‰ribu‹(Doùrše_CÜe:: +ATTR_PORTABILITY +è& Doùrše_CÜe:: +PORTABILITY_FIX_CASE +)) { + +210 ià( +$this +-> +cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_FIELD_CASE +è=ð +CASE_LOWER +) { + +211 +$keyName + = + `¡¹Þow” +($keyName); + +212 +$pkName + = + `¡¹Þow” +($pkName); + +214 +$keyName + = + `¡¹ouµ” +($keyName); + +215 +$pkName + = + `¡¹ouµ” +($pkName); + +218 +$bË + = +$this +-> +cÚn +-> + `quÙe +($table, 'text'); + +219 +$qu”y + = 'EXEC sp_¡©i¡ic @bË_Çmð' . +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$bË +, +Œue +); + +220 +$šdexes + = +$this +-> +cÚn +-> + `ãtchCÞumn +( +$qu”y +, +$keyName +); + +222 +$qu”y + = 'EXEC sp_pkey @bË_Çmð' . +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$bË +, +Œue +); + +223 +$pkAÎ + = +$this +-> +cÚn +-> + `ãtchCÞumn +( +$qu”y +, +$pkName +); + +225 +$»suÉ + = + `¬¿y +(); + +227 + `fܗch + ( +$šdexes + +as + +$šdex +) { + +228 iàÐ! + `š_¬¿y +( +$šdex +, +$pkAÎ +è&& $šdex !ð +nuÎ +) { + +229 +$»suÉ +[] = +$this +-> +cÚn +-> +fÜm©‹r +-> + `fixIndexName +( +$šdex +); + +233  +$»suÉ +; + +234 + } +} + +242 +public + +funùiÚ + + $li¡V›ws +( +$d©aba£ + = +nuÎ +) + +244 +$qu”y + = "SELECT‚ame FROM sysobjects WHERE xtype = 'V'"; + +246  +$this +-> +cÚn +-> + `ãtchCÞumn +( +$qu”y +); + +247 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Import/Mysql.php + +1 +cÚn +-> + `ãtchCÞumn +( +$qu”y +); + +57  + `¬¿y_m­ +( + `¬¿y +( +$this +-> +cÚn +-> +fÜm©‹r +, 'fixSequ’ûName'), +$bËNames +); + +66 +public + +funùiÚ + + $li¡TabËCÚ¡¿šts +( +$bË +) + +68 +$keyName + = 'Key_name'; + +69 +$nÚUnique + = 'Non_unique'; + +70 ià( +$this +-> +cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_FIELD_CASE +è&& ($this->cÚn->g‘A‰ribu‹(Doùrše_CÜe:: +ATTR_PORTABILITY +è& Doùrše_CÜe:: +PORTABILITY_FIX_CASE +)) { + +71 ià( +$this +-> +cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_FIELD_CASE +è=ð +CASE_LOWER +) { + +72 +$keyName + = + `¡¹Þow” +($keyName); + +73 +$nÚUnique + = + `¡¹Þow” +($nonUnique); + +75 +$keyName + = + `¡¹ouµ” +($keyName); + +76 +$nÚUnique + = + `¡¹ouµ” +($nonUnique); + +80 +$bË + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($bË, +Œue +); + +81 +$qu”y + = 'SHOW INDEX FROM ' . +$bË +; + +82 +$šdexes + = +$this +-> +cÚn +-> + `ãtchAssoc +( +$qu”y +); + +84 +$»suÉ + = + `¬¿y +(); + +85 + `fܗch + ( +$šdexes + +as + +$šdexD©a +) { + +86 iàÐ! +$šdexD©a +[ +$nÚUnique +]) { + +87 ià( +$šdexD©a +[ +$keyName +] !== 'PRIMARY') { + +88 +$šdex + = +$this +-> +cÚn +-> +fÜm©‹r +-> + `fixIndexName +( +$šdexD©a +[ +$keyName +]); + +90 +$šdex + = 'PRIMARY'; + +92 iàÐ! + `em±y +( +$šdex +)) { + +93 +$»suÉ +[] = +$šdex +; + +97  +$»suÉ +; + +98 + } +} + +119 +public + +funùiÚ + + $li¡TabËR–©iÚs +( +$bËName +) + +121 +$»ÏtiÚs + = + `¬¿y +(); + +122 +$sql + = "SELECT cÞumn_Çme, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME FROM infÜm©iÚ_schema.key_cÞumn_u§gWHEREabË_Çmð'" . +$bËName + . "' ANDabË_schem¨ð'" . +$this +-> +cÚn +-> + `g‘D©aba£Name +() . "'‡nd REFERENCED_COLUMN_NAME is‚ot NULL"; + +123 +$»suÉs + = +$this +-> +cÚn +-> + `ãtchAssoc +( +$sql +); + +124 + `fܗch + ( +$»suÉs + +as + +$»suÉ +) + +126 +$»suÉ + = + `¬¿y_chªge_key_ÿ£ +($»suÉ, +CASE_LOWER +); + +127 +$»ÏtiÚs +[] = + `¬¿y +('bË' => +$»suÉ +['referenced_table_name'], + +128 'loÿl' => +$»suÉ +['column_name'], + +129 'fÜeign' => +$»suÉ +['referenced_column_name']); + +131  +$»ÏtiÚs +; + +132 + } +} + +140 +public + +funùiÚ + + $li¡TabËCÞumns +( +$bË +) + +142 +$sql + = 'DESCRIBE ' . +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$bË +, +Œue +); + +143 +$»suÉ + = +$this +-> +cÚn +-> + `ãtchAssoc +( +$sql +); + +145 +$desütiÚ + = + `¬¿y +(); + +146 +$cÞumns + = + `¬¿y +(); + +147 + `fܗch + ( +$»suÉ + +as + +$key + => +$v® +) { + +149 +$v® + = + `¬¿y_chªge_key_ÿ£ +($v®, +CASE_LOWER +); + +151 +$deþ + = +$this +-> +cÚn +-> +d©aDiù +-> + `g‘P܏bËDeþ¬©iÚ +( +$v® +); + +153 +$v®ues + = + `is£t +( +$deþ +['v®ues']è? $deþ['v®ues'] : + `¬¿y +(); + +154 +$v® +['deçuÉ'] = $v®['deçuÉ'] =ð'CURRENT_TIMESTAMP' ? +nuÎ + : $val['default']; + +156 +$desütiÚ + = + `¬¿y +( + +157 'Çme' => +$v® +['field'], + +158 'ty³' => +$deþ +['type'][0], + +159 '®Éy³s' => +$deþ +['type'], + +160 'Áy³' => +$v® +['type'], + +161 'Ëngth' => +$deþ +['length'], + +162 'fixed' => ( +boÞ +è +$deþ +['fixed'], + +163 'unsigÃd' => ( +boÞ +è +$deþ +['unsigned'], + +164 'v®ues' => +$v®ues +, + +165 '´im¬y' => ( + `¡¹Þow” +( +$v® +['key']) == 'pri'), + +166 'deçuÉ' => +$v® +['default'], + +167 'nÙnuÎ' => ( +boÞ +è( +$v® +['null'] != 'YES'), + +168 'autošüem’t' => ( +boÞ +è( + `¡½os +( +$v® +['exŒa'], 'auto_šüem’t'è!=ð +çl£ +), + +170 ià( + `is£t +( +$deþ +['scale'])) { + +171 +$desütiÚ +['sÿË'] = +$deþ +['scale']; + +173 +$cÞumns +[ +$v® +['f›ld']] = +$desütiÚ +; + +176  +$cÞumns +; + +177 + } +} + +185 +public + +funùiÚ + + $li¡TabËIndexes +( +$bË +) + +187 +$keyName + = 'Key_name'; + +188 +$nÚUnique + = 'Non_unique'; + +189 ià( +$this +-> +cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_FIELD_CASE +è&& ($this->cÚn->g‘A‰ribu‹(Doùrše_CÜe:: +ATTR_PORTABILITY +è& Doùrše_CÜe:: +PORTABILITY_FIX_CASE +)) { + +190 ià( +$this +-> +cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_FIELD_CASE +è=ð +CASE_LOWER +) { + +191 +$keyName + = + `¡¹Þow” +($keyName); + +192 +$nÚUnique + = + `¡¹Þow” +($nonUnique); + +194 +$keyName + = + `¡¹ouµ” +($keyName); + +195 +$nÚUnique + = + `¡¹ouµ” +($nonUnique); + +199 +$bË + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($bË, +Œue +); + +200 +$qu”y + = 'SHOW INDEX FROM ' . +$bË +; + +201 +$šdexes + = +$this +-> +cÚn +-> + `ãtchAssoc +( +$qu”y +); + +204 +$»suÉ + = + `¬¿y +(); + +205 + `fܗch + ( +$šdexes + +as + +$šdexD©a +) { + +206 ià( +$šdexD©a +[ +$nÚUnique +] && ( +$šdex + = +$this +-> +cÚn +-> +fÜm©‹r +-> + `fixIndexName +($šdexD©a[ +$keyName +]))) { + +207 +$»suÉ +[] = +$šdex +; + +210  +$»suÉ +; + +211 + } +} + +219 +public + +funùiÚ + + $li¡TabËs +( +$d©aba£ + = +nuÎ +) + +221  +$this +-> +cÚn +-> + `ãtchCÞumn +($this-> +sql +['listTables']); + +222 + } +} + +230 +public + +funùiÚ + + $li¡V›ws +( +$d©aba£ + = +nuÎ +) + +232 ià( + `is_nuÎ +( +$d©aba£ +)) { + +233 +$qu”y + = 'SELECTable_name FROM information_schema.VIEWS'; + +235 +$qu”y + = + `¥rštf +( +$this +-> +sql +['li¡V›ws'], ' FROM ' . +$d©aba£ +); + +238  +$this +-> +cÚn +-> + `ãtchCÞumn +( +$qu”y +); + +239 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Import/Oracle.php + +1 +cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_EMULATE_DATABASE +)) { + +41 +throw + +Ãw + + `Doùrše_ImpÜt_Exû±iÚ +('database†isting is only supported ifhe "emulate_database" option isƒnabled'); + +44 +$qu”y + = 'SELECT username FROM sys.user_users'; + +46 +$»suÉ2 + = +$this +-> +cÚn +-> + `¡ªd®ÚeQu”y +( +$qu”y +); + +47 +$»suÉ + = +$»suÉ2 +-> + `ãtchCÞumn +(); + +49  +$»suÉ +; + +57 +public + +funùiÚ + + $li¡FunùiÚs +() + +59 +$qu”y + = "SELECT‚ame FROM sys.user_source WHERE†ine = 1 ANDype = 'FUNCTION'"; + +61  +$this +-> +cÚn +-> + `ãtchCÞumn +( +$qu”y +); + +62 + } +} + +70 +public + +funùiÚ + + $li¡Trigg”s +( +$d©aba£ + = +nuÎ +) + +72 +$qu”y + = "SELECTrigger_name FROM sys.user_triggers"; + +73  +$this +-> +cÚn +-> + `ãtchCÞumn +( +$qu”y +); + +74 + } +} + +82 +public + +funùiÚ + + $li¡Sequ’ûs +( +$d©aba£ + = +nuÎ +) + +84 +$qu”y + = "SELECT sequence_name FROM sys.user_sequences"; + +86 +$bËNames + = +$this +-> +cÚn +-> + `ãtchCÞumn +( +$qu”y +); + +88  + `¬¿y_m­ +( + `¬¿y +( +$this +-> +cÚn +-> +fÜm©‹r +, 'fixSequ’ûName'), +$bËNames +); + +89 + } +} + +97 +public + +funùiÚ + + $li¡TabËCÚ¡¿šts +( +$bË +) + +99 +$bË + = +$this +-> +cÚn +-> + `quÙe +($table, 'text'); + +101 +$qu”y + = 'SELECT index_name‚ame FROM user_constraints' + +102 . ' WHEREabË_Çmð' . +$bË + . ' ORabË_Çmð' . + `¡¹ouµ” +($table); + +104 +$cÚ¡¿šts + = +$this +-> +cÚn +-> + `ãtchCÞumn +( +$qu”y +); + +106  + `¬¿y_m­ +( + `¬¿y +( +$this +-> +cÚn +-> +fÜm©‹r +, 'fixIndexName'), +$cÚ¡¿šts +); + +107 + } +} + +115 +public + +funùiÚ + + $li¡TabËCÞumns +( +$bË +) + +117 +$sql + = <<< +QEND + + +118 +SELECT + +tc +. +cÞumn_Çme +, +d©a_ty³ +, + +119 +CASE + +WHEN + +d©a_ty³ + = 'NUMBER' +THEN + +d©a_´ecisiÚ + +ELSE + +d©a_Ëngth + +END + +AS + data_length, + +120 +nuÎabË +, +d©a_deçuÉ +, +d©a_sÿË +, +d©a_´ecisiÚ +, +pk +. +´im¬y + + +121 +FROM + +®l_b_cÞumns + +tc + + +122 +LEFT + + `JOIN + ( + +123 +£Ëù + '´im¬y' +´im¬y +, +cc +. +bË_Çme +, cc. +cÞumn_Çme + +äom + +®l_cÚ¡¿šts + +cÚs + + +124 +još + +®l_cÚs_cÞumns + +cc + +Ú + +cÚs +. +cÚ¡¿št_Çme + = cc.constraint_name + +125 +wh”e + +cÚs +. +cÚ¡¿št_ty³ + = 'P' + +126 è +pk + +ON +…k. +cÞumn_Çme + = +tc +.cÞumn_Çm +ªd +…k. +bË_Çme + =c.table_name + +127 +WHERE + +tc +. +bË_Çme + = : +bËName + +ORDER + +BY + +cÞumn_id + + +128 +QEND +; + +129 +$»suÉ + = +$this +-> +cÚn +-> + `ãtchAssoc +( +$sql +, + `¬¿y +(':bËName' => +$bË +)); + +131 +$desü + = + `¬¿y +(); + +133 + `fܗch +( +$»suÉ + +as + +$v® +) { + +134 +$v® + = + `¬¿y_chªge_key_ÿ£ +($v®, +CASE_LOWER +); + +135 +$deþ + = +$this +-> +cÚn +-> +d©aDiù +-> + `g‘P܏bËDeþ¬©iÚ +( +$v® +); + +137 +$desü +[ +$v® +['cÞumn_Çme']] = + `¬¿y +( + +138 'Çme' => +$v® +['column_name'], + +139 'nÙnuÎ' => ( +boÞ +è( +$v® +['nullable'] === 'N'), + +140 'Áy³' => +$v® +['data_type'], + +141 'ty³' => +$deþ +['type'][0], + +142 '®Éy³s' => +$deþ +['type'], + +143 'fixed' => ( +boÞ +è +$deþ +['fixed'], + +144 'unsigÃd' => ( +boÞ +è +$deþ +['unsigned'], + +145 'deçuÉ' => +$v® +['data_default'], + +146 'Ëngth' => +$v® +['data_length'], + +147 '´im¬y' => ( +boÞ +è +$v® +['primary'], + +148 'sÿË' => + `is£t +( +$v® +['sÿË']è? $v®['sÿË']: +nuÎ +, + +152  +$desü +; + +153 + } +} + +161 +public + +funùiÚ + + $li¡TabËIndexes +( +$bË +) + +163 +$bË + = +$this +-> +cÚn +-> + `quÙe +($table, 'text'); + +164 +$qu”y + = 'SELECT index_name‚ame FROM user_indexes' + +165 . ' WHEREabË_Çmð' . +$bË + . ' ORabË_Çmð' . + `¡¹ouµ” +($table) + +166 . ' AND g’”©ed = ' . +$this +-> +cÚn +-> + `quÙe +('N', 'text'); + +168 +$šdexes + = +$this +-> +cÚn +-> + `ãtchCÞumn +( +$qu”y +); + +170  + `¬¿y_m­ +( + `¬¿y +( +$this +-> +cÚn +-> +fÜm©‹r +, 'fixIndexName'), +$šdexes +); + +171 + } +} + +176 +public + +funùiÚ + + $li¡TabËR–©iÚs +( +$bË +) + +178 +$»ÏtiÚs + = + `¬¿y +(); + +179 +$sql + = 'SELECT ' + +188 +$»suÉs + = +$this +-> +cÚn +-> + `ãtchAssoc +( +$sql +, + `¬¿y +(':bËName' => +$bË +)); + +189 + `fܗch + ( +$»suÉs + +as + +$»suÉ +) { + +190 +$»suÉ + = + `¬¿y_chªge_key_ÿ£ +($»suÉ, +CASE_LOWER +); + +191 +$»ÏtiÚs +[] = + `¬¿y +('bË' => +$»suÉ +['referenced_table_name'], + +192 'loÿl' => +$»suÉ +['local_column_name'], + +193 'fÜeign' => +$»suÉ +['referenced_column_name']); + +195  +$»ÏtiÚs +; + +196 + } +} + +204 +public + +funùiÚ + + $li¡TabËs +( +$d©aba£ + = +nuÎ +) + +206 +$qu”y + = "SELECT * FROM user_objects WHERE object_type = 'TABLE'‡nd object_name in (selectable_name from user_tables)"; + +207  +$this +-> +cÚn +-> + `ãtchCÞumn +( +$qu”y +); + +208 + } +} + +216 +public + +funùiÚ + + $li¡TabËTrigg”s +( +$bË +) + +219 + } +} + +227 +public + +funùiÚ + + $li¡TabËV›ws +( +$bË +) + +230 + } +} + +237 +public + +funùiÚ + + $li¡U£rs +() + +239 +$qu”y + = 'SELECT username FROM sys.all_users'; + +241  +$this +-> +cÚn +-> + `ãtchCÞumn +( +$qu”y +); + +242 + } +} + +250 +public + +funùiÚ + + $li¡V›ws +( +$d©aba£ + = +nuÎ +) + +252 +$qu”y + = 'SELECT view_name FROM sys.user_views'; + +253  +$this +-> +cÚn +-> + `ãtchCÞumn +( +$qu”y +); + +254 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Import/Pgsql.php + +1 'trigger' + +47 +AND + +´ +. +´Úame¥aû + +IN + + +48 ( +SELECT + +oid + +FROM + +pg_Çme¥aû + + +49 +WHERE + +n¥Çme + +NOT + +LIKE + 'pg_%' +AND +‚spname != 'information_schema'", + +51 +»gexp_»¶aû +( +»Êame +, '_seq$', '') + +52 +FROM + + +53 +pg_þass + + +54 +WHERE + +»lkšd + = 'S' +AND + +»Êame¥aû + +IN + + +55 ( +SELECT + +oid + +FROM + +pg_Çme¥aû + + +56 +WHERE + +n¥Çme + +NOT + +LIKE + 'pg_%' +AND +‚spname != 'information_schema')", + +58 +c +. +»Êame + +AS + +bË_Çme + + +59 +FROM + +pg_þass + +c +, +pg_u£r + +u + + +60 +WHERE + +c +. +»lowÃr + = +u +. +u£sysid + + +61 +AND + +c +. +»lkšd + = 'r' + +62 +AND + +NOT + +EXISTS + ( +SELECT + 1 +FROM + +pg_v›ws + +WHERE + +v›wÇme + = +c +. +»Êame + AND +schemªame + <> 'information_schema') + +63 +AND + +c +. +»Êame + !~ '^(pg_|sql_)' + +64 +UNION + + +65 +SELECT + +c +. +»Êame + +AS + +bË_Çme + + +66 +FROM + +pg_þass + +c + + +67 +WHERE + +c +. +»lkšd + = 'r' + +68 +AND + +NOT + + $EXISTS + ( +SELECT + 1 +FROM + +pg_v›ws + +WHERE + +v›wÇme + = +c +. +»Êame +) + +69 +AND + +NOT + + $EXISTS + ( +SELECT + 1 +FROM + +pg_u£r + +WHERE + +u£sysid + = +c +. +»lowÃr +) + +70 +AND + +c +. +»Êame + !~ '^pg_'", + +74 +»Êame + + +75 +FROM + + +76 +pg_þass + + +77 +WHERE + +oid + + `IN + ( + +78 +SELECT + +šdex»lid + + +79 +FROM + +pg_šdex +, +pg_þass + + +80 +WHERE + +pg_þass +. +»Êame + = % +s + + +81 +AND + +pg_þass +. +oid + = +pg_šdex +. +šd»lid + + +82 + `AND + ( +šdisunique + = 't' +OR + +šdi¥rim¬y + = 't') + +85 +»Êame + + +86 +FROM + + +87 +pg_þass + + +88 +WHERE + +oid + + `IN + ( + +89 +SELECT + +šdex»lid + + +90 +FROM + +pg_šdex +, +pg_þass + + +91 +WHERE + +pg_þass +. +»Êame + = % +s + + +92 +AND + +pg_þass +. +oid += +pg_šdex +. +šd»lid + + +93 +AND + +šdisunique + != 't' + +94 +AND + +šdi¥rim¬y + != 't' + +97 +Üdš®_pos™iÚ + +as + +©Šum +, + +98 +cÞumn_Çme + +as + +f›ld +, + +99 +udt_Çme + +as + +ty³ +, + +100 +d©a_ty³ + +as + +com¶‘e_ty³ +, + +101 +is_nuÎabË + +as + +i¢ÙnuÎ +, + +102 +cÞumn_deçuÉ + +as + , + +104 +SELECT + 't' + +105 +FROM + +pg_šdex +, +pg_©Œibu‹ + +a +, +pg_þass + +c +, +pg_ty³ + +t + + +106 +WHERE + +c +. +»Êame + = +bË_Çme + +AND + +a +. +©Šame + = +cÞumn_Çme + + +107 +AND + +a +. +©Šum + > 0 AND‡. +©Œ–id + = +c +. +oid + AND‡. +©‰ypid + = +t +.oid + +108 +AND + +c +. +oid + = +pg_šdex +. +šd»lid + AND +a +. +©Šum + = + $ANY + ( +pg_šdex +. +šdkey +) + +109 +AND + +pg_šdex +. +šdi¥rim¬y + = 't' + +110 è +as + +´i +, + +111 +ch¬aù”_maximum_Ëngth + +as + +Ëngth + + +112 +FROM + +šfÜm©iÚ_schema +. +COLUMNS + + +113 +WHERE + +bË_Çme + = % +s + + +114 +ORDER + +BY + +Üdš®_pos™iÚ +", + +116 +FROM + +pg_ÿlog +. +pg_cÚ¡¿št + +r + + +117 +WHERE + +r +. +cÚ»lid + = + +119 +SELECT + +c +. +oid + + +120 +FROM + +pg_ÿlog +. +pg_þass + +c + + +121 +LEFT + +JOIN + +pg_ÿlog +. +pg_Çme¥aû + +n + +ON +‚. +oid + = +c +. +»Êame¥aû + + +122 +WHERE + +c +. +»Êame + ~ ? +AND + +pg_ÿlog +. + $pg_bË_is_visibË +( +c +. +oid +) + +124 +AND + +r +. +cÚty³ + = 'f'" + +133 +public + +funùiÚ + + $li¡Trigg”s +( +$d©aba£ + = +nuÎ +) + +144 +public + +funùiÚ + + $li¡TabËCÚ¡¿šts +( +$bË +) + +146 +$bË + = +$this +-> +cÚn +-> + `quÙe +($table); + +147 +$qu”y + = + `¥rštf +( +$this +-> +sql +['li¡TabËCÚ¡¿šts'], +$bË +); + +149  +$this +-> +cÚn +-> + `ãtchCÞumn +( +$qu”y +); + +150 + } +} + +158 +public + +funùiÚ + + $li¡TabËCÞumns +( +$bË +) + +160 +$bË + = +$this +-> +cÚn +-> + `quÙe +($table); + +161 +$qu”y + = + `¥rštf +( +$this +-> +sql +['li¡TabËCÞumns'], +$bË +); + +162 +$»suÉ + = +$this +-> +cÚn +-> + `ãtchAssoc +( +$qu”y +); + +164 +$cÞumns + = + `¬¿y +(); + +165 + `fܗch + ( +$»suÉ + +as + +$key + => +$v® +) { + +166 +$v® + = + `¬¿y_chªge_key_ÿ£ +($v®, +CASE_LOWER +); + +168 ià( +$v® +['type'] == 'character varying') { + +170 +$Ëngth + = + `´eg_»¶aû +('~.*\(([0-9]*)\).*~', '$1', +$v® +['complete_type']); + +171 +$v® +['Ëngth'] = +$Ëngth +; + +172 } ià( + `¡½os +( +$v® +['com¶‘e_ty³'], 'ch¬aù” v¬yšg'è!=ð +çl£ +) { + +174 +$Ëngth + = + `´eg_»¶aû +('~.*\(([0-9]*)\).*~', '$1', +$v® +['complete_type']); + +175 +$v® +['Ëngth'] = +$Ëngth +; + +178 +$deþ + = +$this +-> +cÚn +-> +d©aDiù +-> + `g‘P܏bËDeþ¬©iÚ +( +$v® +); + +180 +$desütiÚ + = + `¬¿y +( + +181 'Çme' => +$v® +['field'], + +182 'Áy³' => +$v® +['type'], + +183 'ty³' => +$deþ +['type'][0], + +184 '®Éy³s' => +$deþ +['type'], + +185 'Ëngth' => +$deþ +['length'], + +186 'fixed' => ( +boÞ +è +$deþ +['fixed'], + +187 'unsigÃd' => ( +boÞ +è +$deþ +['unsigned'], + +188 'nÙnuÎ' => ( +$v® +['isnotnull'] == 'NO'), + +189 'deçuÉ' => +$v® +['default'], + +190 '´im¬y' => ( +$v® +['pri'] == 't'), + +194 ià( +$v® +['type'] == 'e'){ + +195 +$desütiÚ +['deçuÉ'] = + `is£t +( +$deþ +['deçuÉ']è? $deþ['deçuÉ'] : +nuÎ +; + +196 +$t_»suÉ + = +$this +-> +cÚn +-> + `ãtchAssoc +( + `¥rštf +('£Ëùƒnum_¿ngeÒuÎ::%sèa ¿ng', +$deþ +['enum_name'])); + +197 ià( + `is£t +( +$t_»suÉ +[0])){ + +198 +$¿nge + = +$t_»suÉ +[0]['range']; + +199 +$¿nge + = + `¡r_»¶aû +('{','',$range); + +200 +$¿nge + = + `¡r_»¶aû +('}','',$range); + +201 +$¿nge + = + `ex¶ode +(',',$range); + +202 +$desütiÚ +['v®ues'] = +$¿nge +; + +206 +$m©ches + = + `¬¿y +(); + +208 ià( + `´eg_m©ch +("/^Ãxtv®\('(.*)'(::.*)?\)$/", +$desütiÚ +['deçuÉ'], +$m©ches +)) { + +209 +$desütiÚ +['£qu’û'] = +$this +-> +cÚn +-> +fÜm©‹r +-> + `fixSequ’ûName +( +$m©ches +[1]); + +210 +$desütiÚ +['deçuÉ'] = +nuÎ +; + +211 } ià( + `´eg_m©ch +("/^'(.*)'::ch¬aù” v¬yšg$/", +$desütiÚ +['deçuÉ'], +$m©ches +)) { + +212 +$desütiÚ +['deçuÉ'] = +$m©ches +[1]; + +213 } ià( + `´eg_m©ch +("/^(.*)::ch¬aù” v¬yšg$/", +$desütiÚ +['deçuÉ'], +$m©ches +)) { + +214 +$desütiÚ +['deçuÉ'] = +$m©ches +[1]; + +215 } ià( +$desütiÚ +['type'] == 'boolean') { + +216 ià( +$desütiÚ +['default'] === 'true') { + +217 +$desütiÚ +['deçuÉ'] = +Œue +; + +218 } ià( +$desütiÚ +['default'] === 'false') { + +219 +$desütiÚ +['deçuÉ'] = +çl£ +; + +223 +$cÞumns +[ +$v® +['f›ld']] = +$desütiÚ +; + +226  +$cÞumns +; + +227 + } +} + +235 +public + +funùiÚ + + $li¡TabËIndexes +( +$bË +) + +237 +$bË + = +$this +-> +cÚn +-> + `quÙe +($table); + +238 +$qu”y + = + `¥rštf +( +$this +-> +sql +['li¡TabËIndexes'], +$bË +); + +240  +$this +-> +cÚn +-> + `ãtchCÞumn +( +$qu”y +); + +241 + } +} + +249 +public + +funùiÚ + + $li¡TabËs +( +$d©aba£ + = +nuÎ +) + +251  +$this +-> +cÚn +-> + `ãtchCÞumn +($this-> +sql +['listTables']); + +252 + } +} + +260 +public + +funùiÚ + + $li¡TabËTrigg”s +( +$bË +) + +262 +$qu”y + = 'SELECTrg.tgname ASrigger_name + +263 +FROM + +pg_Œigg” + +Œg +, + +264 +pg_þass + +tbl + + +265 +WHERE + +Œg +. +tg»lid + = +tbl +. +oid +'; + +266 ià( +$bË + !=ð +nuÎ +) { + +267 +$bË + = +$this +-> +cÚn +-> + `quÙe +( + `¡¹ouµ” +($table), 'string'); + +268 +$qu”y + .= " ANDbl.relname = $table"; + +270  +$this +-> +cÚn +-> + `ãtchCÞumn +( +$qu”y +); + +271 + } +} + +279 +public + +funùiÚ + + $li¡TabËV›ws +( +$bË +) + +281  +$this +-> +cÚn +-> + `ãtchCÞumn +( +$bË +); + +282 + } +} + +284 +public + +funùiÚ + + $li¡TabËR–©iÚs +( +$bË +) + +286 +$sql + = +$this +-> +sql +['listTableRelations']; + +287 +$·¿m + = + `¬¿y +('^(' . +$bË + . ')$'); + +289 +$»ÏtiÚs + = + `¬¿y +(); + +291 +$»suÉs + = +$this +-> +cÚn +-> + `ãtchAssoc +( +$sql +, +$·¿m +); + +292 + `fܗch + ( +$»suÉs + +as + +$»suÉ +) { + +293 + `´eg_m©ch +('/FOREIGN KEY \((.+)\èREFERENCES (.+)\((.+)\)/', +$»suÉ +['cÚdef'], +$v®ues +); + +294 ià(( + `¡½os +( +$v®ues +[1], ','è==ð +çl£ +) && (strpos($values[3], ',') === false)) { + +295 +$bËName + = + `Œim +( +$v®ues +[2], '"'); + +296 +$»ÏtiÚs +[] = + `¬¿y +('bË' => +$bËName +, + +297 'loÿl' => +$v®ues +[1], + +298 'fÜeign' => +$v®ues +[3]); + +302  +$»ÏtiÚs +; + +303 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Import/Schema.php + +1 'Package', + +74 'g’”©eBa£CÏs£s' => +Œue +, + +75 'g’”©eTabËCÏs£s' => +çl£ +, + +76 'g’”©eAcûssÜs' => +çl£ +, + +89 +´Ùeùed + + m$_v®id©iÚ + = +¬¿y +('root' =>‡rray('abstract', + +109 'cÞumn' => +¬¿y +('name', + +130 '»ÏtiÚ' => +¬¿y +('key', + +150 'šh”™ªû'=> +¬¿y +('type', + +160 +public +  +funùiÚ + + $g‘Glob®Defš™iÚKeys +() + +162  +£lf +:: +$_glob®Defš™iÚKeys +; + +171 +public + +funùiÚ + + $g‘O±iÚ +( +$Çme +) + +173 ià( + `is£t +( +$this +-> +_ÝtiÚs +[ +$Çme +])) { + +174  +$this +-> +_ÝtiÚs +[ +$Çme +]; + +176 + } +} + +183 +public + +funùiÚ + + $g‘O±iÚs +() + +185  +$this +-> +_ÝtiÚs +; + +186 + } +} + +195 +public + +funùiÚ + + $£tO±iÚ +( +$Çme +, +$v®ue +) + +197 ià( + `is£t +( +$this +-> +_ÝtiÚs +[ +$Çme +])) { + +198 +$this +-> +_ÝtiÚs +[ +$Çme +] = +$v®ue +; + +200 + } +} + +208 +public + +funùiÚ + + $£tO±iÚs +( +$ÝtiÚs +) + +210 iàÐ! + `em±y +( +$ÝtiÚs +)) { + +211 +$this +-> +_ÝtiÚs + = +$ÝtiÚs +; + +213 + } +} + +224 +public + +funùiÚ + + $buždSchema +( +$schema +, +$fÜm© +) + +226 +$¬¿y + = + `¬¿y +(); + +228 + `fܗch + (( +¬¿y +è +$schema + +AS + +$s +) { + +229 ià( + `is_fže +( +$s +)) { + +230 +$e + = + `ex¶ode +('.', +$s +); + +231 ià( + `’d +( +$e +è==ð +$fÜm© +) { + +232 +$¬¿y + = + `¬¿y_m”ge +($¬¿y, +$this +-> + `·r£Schema +( +$s +, +$fÜm© +)); + +234 } ià( + `is_dœ +( +$s +)) { + +235 +$™ + = +Ãw + + `RecursiveI‹¿tÜI‹¿tÜ +Òew + `RecursiveDœeùÜyI‹¿tÜ +( +$s +), + +236 +RecursiveI‹¿tÜI‹¿tÜ +:: +LEAVES_ONLY +); + +238 + `fܗch + ( +$™ + +as + +$fže +) { + +239 +$e + = + `ex¶ode +('.', +$fže +-> + `g‘FžeName +()); + +240 ià( + `’d +( +$e +è==ð +$fÜm© +) { + +241 +$¬¿y + = + `¬¿y_m”ge +($¬¿y, +$this +-> + `·r£Schema +( +$fže +-> + `g‘P©hName +(), +$fÜm© +)); + +245 +$¬¿y + = + `¬¿y_m”ge +($¬¿y, +$this +-> + `·r£Schema +( +$s +, +$fÜm© +)); + +249 +$¬¿y + = +$this +-> + `_buždR–©iÚshs +($array); + +250 +$¬¿y + = +$this +-> + `_´oûssInh”™ªû +($array); + +252  +$¬¿y +; + +253 + } +} + +267 +public + +funùiÚ + +impÜtSchema +( +$schema +, +$fÜm© + = 'yml', +$dœeùÜy + = +nuÎ +, +$mod–s + = + $¬¿y +()) + +269 +$schema + = ( +¬¿y +) $schema; + +270 +$bužd” + = +Ãw + + `Doùrše_ImpÜt_Bužd” +(); + +271 +$bužd” +-> + `£tT¬g‘P©h +( +$dœeùÜy +); + +272 +$bužd” +-> + `£tO±iÚs +( +$this +-> + `g‘O±iÚs +()); + +274 +$¬¿y + = +$this +-> + `buždSchema +( +$schema +, +$fÜm© +); + +276 ià( + `couÁ +( +$¬¿y +) == 0) { + +277 +throw + +Ãw + + `Doùrše_ImpÜt_Exû±iÚ +( + +278 + `¥rštf +('NØ' . +$fÜm© + . ' schem¨found iÀ' . + `im¶ode +(", ", +$schema +)) + +282 + `fܗch + ( +$¬¿y + +as + +$Çme + => +$defš™iÚ +) { + +283 iàÐ! + `em±y +( +$mod–s +è&& ! + `š_¬¿y +( +$defš™iÚ +['className'], $models)) { + +287 +$bužd” +-> + `buždRecÜd +( +$defš™iÚ +); + +289 + } +} + +301 +public + +funùiÚ + + $·r£Schema +( +$schema +, +$ty³ +) + +303 +$deçuÉs + = + `¬¿y +('ab¡¿ù' => +çl£ +, + +304 'þassName' => +nuÎ +, + +305 'bËName' => +nuÎ +, + +306 'cÚÃùiÚ' => +nuÎ +, + +307 '»ÏtiÚs' => + `¬¿y +(), + +308 'šdexes' => + `¬¿y +(), + +309 '©Œibu‹s' => + `¬¿y +(), + +310 '‹m¶©es' => + `¬¿y +(), + +311 'aùAs' => + `¬¿y +(), + +312 'ÝtiÚs' => + `¬¿y +(), + +313 '·ckage' => +nuÎ +, + +314 'šh”™ªû' => + `¬¿y +(), + +315 'd‘eù_»ÏtiÚs' => +çl£ +); + +317 +$¬¿y + = +Doùrše_P¬£r +:: + `lßd +( +$schema +, +$ty³ +); + +320 +$glob®s + = + `¬¿y +(); + +321 + `fܗch + ( +$¬¿y + +as + +$key + => +$v®ue +) { + +322 ià( + `š_¬¿y +( +$key +, +£lf +:: +$_glob®Defš™iÚKeys +)) { + +323 + `un£t +( +$¬¿y +[ +$key +]); + +324 +$glob®s +[ +$key +] = +$v®ue +; + +329 + `fܗch + ( +$¬¿y + +as + +$þassName + => +$bË +) { + +330 +$¬¿y +[ +$þassName +] = +Doùrše_Lib +:: + `¬¿yD“pM”ge +( +$glob®s +, $array[$className]); + +333 +$bužd + = + `¬¿y +(); + +335 + `fܗch + ( +$¬¿y + +as + +$þassName + => +$bË +) { + +336 +$bË + = ( +¬¿y +) $table; + +337 +$this +-> + `_v®id©eSchemaEËm’t +('roÙ', + `¬¿y_keys +( +$bË +), +$þassName +); + +339 +$cÞumns + = + `¬¿y +(); + +341 +$þassName + = + `is£t +( +$bË +['þassName']è? ( +¡ršg +) $table['className']:(string) $className; + +343 ià( + `is£t +( +$bË +['inheritance']['keyField']) || isset($table['inheritance']['keyValue'])) { + +344 +$bË +['inheritance']['type'] = 'column_aggregation'; + +347 ià( + `is£t +( +$bË +['tableName']) && $table['tableName']) { + +348 +$bËName + = +$bË +['tableName']; + +350 ià( + `is£t +( +$bË +['inheritance']['type']) && ($table['inheritance']['type'] == 'column_aggregation')) { + +351 +$bËName + = +nuÎ +; + +353 +$bËName + = +Doùrše_InæeùÜ +:: + `bËize +( +$þassName +); + +357 +$cÚÃùiÚ + = + `is£t +( +$bË +['connection']) ? $table['connection']:'current'; + +359 +$cÞumns + = + `is£t +( +$bË +['cÞumns']è? $bË['cÞumns']: + `¬¿y +(); + +361 iàÐ! + `em±y +( +$cÞumns +)) { + +362 + `fܗch + ( +$cÞumns + +as + +$cÞumnName + => +$f›ld +) { + +365 iàÐ! + `is_¬¿y +( +$f›ld +)) { + +366 +$Üigš® + = +$f›ld +; + +367 +$f›ld + = + `¬¿y +(); + +368 +$f›ld +['ty³'] = +$Üigš® +; + +371 +$cÞDesc + = + `¬¿y +(); + +372 ià( + `is£t +( +$f›ld +['name'])) { + +373 +$cÞDesc +['Çme'] = +$f›ld +['name']; + +375 +$cÞDesc +['Çme'] = +$cÞumnName +; + +378 +$this +-> + `_v®id©eSchemaEËm’t +('cÞumn', + `¬¿y_keys +( +$f›ld +), +$þassName + . '->cÞumns->' . +$cÞDesc +['name']); + +381 +$e + = + `ex¶ode +('(', +$f›ld +['type']); + +382 ià( + `is£t +( +$e +[0]) && isset($e[1])) { + +383 +$cÞDesc +['ty³'] = +$e +[0]; + +384 +$v®ue + = + `sub¡r +( +$e +[1], 0, + `¡¾’ +($e[1]) - 1); + +385 +$e + = + `ex¶ode +(',', +$v®ue +); + +386 +$cÞDesc +['Ëngth'] = +$e +[0]; + +387 ià( + `is£t +( +$e +[1]) && $e[1]) { + +388 +$cÞDesc +['sÿË'] = +$e +[1]; + +391 +$cÞDesc +['ty³'] = + `is£t +( +$f›ld +['ty³']è? ( +¡ršg +è$f›ld['ty³']: +nuÎ +; + +392 +$cÞDesc +['Ëngth'] = + `is£t +( +$f›ld +['Ëngth']è? (è$f›ld['Ëngth']: +nuÎ +; + +393 +$cÞDesc +['Ëngth'] = + `is£t +( +$f›ld +['size']) ? () $field['size']:$colDesc['length']; + +396 +$cÞDesc +['fixed'] = + `is£t +( +$f›ld +['fixed']è? (è$f›ld['fixed']: +nuÎ +; + +397 +$cÞDesc +['´im¬y'] = + `is£t +( +$f›ld +['´im¬y']è? ( +boÞ +è(is£t($f›ld['´im¬y']è&& $f›ld['´im¬y']): +nuÎ +; + +398 +$cÞDesc +['deçuÉ'] = + `is£t +( +$f›ld +['deçuÉ']è? $f›ld['deçuÉ']: +nuÎ +; + +399 +$cÞDesc +['autošüem’t'] = + `is£t +( +$f›ld +['autošüem’t']è? ( +boÞ +è(is£t($f›ld['autošüem’t']è&& $f›ld['autošüem’t']): +nuÎ +; + +401 ià( + `is£t +( +$f›ld +['sequence'])) { + +402 ià( +Œue + ==ð +$f›ld +['sequence']) { + +403 +$cÞDesc +['£qu’û'] = +$bËName +; + +405 +$cÞDesc +['£qu’û'] = ( +¡ršg +è +$f›ld +['sequence']; + +408 +$cÞDesc +['£qu’û'] = +nuÎ +; + +411 +$cÞDesc +['v®ues'] = + `is£t +( +$f›ld +['v®ues']è? ( +¬¿y +è$f›ld['v®ues']: +nuÎ +; + +414 +$v®id©Üs + = +Doùrše_Mªag” +:: + `g‘In¡ªû +()-> + `g‘V®id©Üs +(); + +416 + `fܗch + ( +$v®id©Üs + +as + +$v®id©Ü +) { + +417 ià( + `is£t +( +$f›ld +[ +$v®id©Ü +])) { + +418 +$cÞDesc +[ +$v®id©Ü +] = +$f›ld +[$validator]; + +422 +$cÞumns +[( +¡ršg +è +$cÞumnName +] = +$cÞDesc +; + +427 + `fܗch + ( +$deçuÉs + +as + +$key + => +$deçuÉV®ue +) { + +428 ià( + `is£t +( +$bË +[ +$key +]è&& ! is£t( +$bužd +[ +$þassName +][$key])) { + +429 +$bužd +[ +$þassName +][ +$key +] = +$bË +[$key]; + +431 +$bužd +[ +$þassName +][ +$key +] = + `is£t +($bužd[$þassName][$key]è? $bužd[$þassName][$key]: +$deçuÉV®ue +; + +435 +$bužd +[ +$þassName +]['className'] = $className; + +436 +$bužd +[ +$þassName +]['bËName'] = +$bËName +; + +437 +$bužd +[ +$þassName +]['cÞumns'] = +$cÞumns +; + +440 +$bužd +[ +$þassName +] = +Doùrše_Lib +:: + `¬¿yD“pM”ge +( +$bË +, $build[$className]); + +443 +$bužd +[ +$þassName +]['connectionClassName'] = $build[$className]['className']; + +446  +$bužd +; + +447 + } +} + +458 +´Ùeùed + +funùiÚ + + $_´oûssInh”™ªû +( +$¬¿y +) + +461 + `fܗch + ( +$¬¿y + +as + +$þassName + => +$defš™iÚ +) { + +462 iàÐ! + `em±y +( +$¬¿y +[ +$þassName +]['inheritance'])) { + +463 +$this +-> + `_v®id©eSchemaEËm’t +('šh”™ªû', + `¬¿y_keys +( +$defš™iÚ +['šh”™ªû']), +$þassName + . '->inheritance'); + +466 iàÐ! + `is£t +( +$¬¿y +[ +$þassName +]['inheritance']['type'])) { + +467 +$¬¿y +[ +$þassName +]['inheritance']['type'] = 'concrete'; + +472 ià( +$¬¿y +[ +$þassName +]['inheritance']['type'] == 'column_aggregation') { + +474 iàÐ! + `is£t +( +$¬¿y +[ +$þassName +]['inheritance']['keyField'])) { + +475 +$¬¿y +[ +$þassName +]['inheritance']['keyField'] = 'type'; + +479 iàÐ! + `is£t +( +$¬¿y +[ +$þassName +]['inheritance']['keyValue'])) { + +480 +$¬¿y +[ +$þassName +]['inheritance']['keyValue'] = $className; + +483 +$·»Á + = +$this +-> + `_fšdBa£Su³rCÏss +( +$¬¿y +, +$defš™iÚ +['className']); + +485 iàÐ! + `is£t +( +$¬¿y +[ +$·»Á +]['cÞumns'][$¬¿y[ +$þassName +]['inheritance']['keyField']])) { + +486 +$¬¿y +[ +$·»Á +]['cÞumns'][$¬¿y[ +$þassName +]['šh”™ªû']['keyF›ld']] = + `¬¿y +('name' => $array[$className]['inheritance']['keyField'], 'type' => 'string', 'length' => 255); + +494 +$moves + = + `¬¿y +('columns' =>‡rray(), + +495 'šdexes' => + `¬¿y +(), + +496 '©Œibu‹s' => + `¬¿y +(), + +497 'ÝtiÚs' => + `¬¿y +(), + +498 'checks' => + `¬¿y +()); + +500 + `fܗch + ( +$¬¿y + +as + +$þassName + => +$defš™iÚ +) { + +502 ià( + `is£t +( +$defš™iÚ +['inheritance']['extends']) && isset($definition['inheritance']['type']) && ($definition['inheritance']['type'] == 'simple' || $definition['inheritance']['type'] == 'column_aggregation')) { + +503 +$·»Á + = +$this +-> + `_fšdBa£Su³rCÏss +( +$¬¿y +, +$defš™iÚ +['className']); + +504 + `fܗch + ( +$moves + +as + +$move + => +$»£tV®ue +) { + +505 ià( + `is£t +( +$¬¿y +[ +$·»Á +][ +$move +]è&& is£t( +$defš™iÚ +[$move])) { + +506 +$¬¿y +[ +$·»Á +][ +$move +] = +Doùrše_Lib +:: + `¬¿yD“pM”ge +($¬¿y[$·»Á][$move], +$defš™iÚ +[$move]); + +507 +$¬¿y +[ +$defš™iÚ +['þassName']][ +$move +] = +$»£tV®ue +; + +512 ià( +$defš™iÚ +['inheritance']['type'] == 'column_aggregation') { + +515 +$šh”™ªûF›lds + = + `¬¿y +( +$defš™iÚ +['inheritance']['keyField'] => $definition['inheritance']['keyValue']); + +517 +$su³rCÏss + = +$defš™iÚ +['inheritance']['extends']; + +518 +$muÉiInh”™ªûDef + = +$¬¿y +[ +$su³rCÏss +]; + +520  + `couÁ +( +$muÉiInh”™ªûDef +['šh”™ªû']è> 0 && + `¬¿y_key_exi¡s +('extends', $multiInheritanceDef['inheritance']) && $multiInheritanceDef['inheritance']['type'] == 'column_aggregation') { + +521 +$su³rCÏss + = +$muÉiInh”™ªûDef +['inheritance']['extends']; + +524 iàÐ! + `is£t +( +$šh”™ªûF›lds +[ +$muÉiInh”™ªûDef +['inheritance']['keyField']])) { + +525 +$šh”™ªûF›lds +[ +$muÉiInh”™ªûDef +['inheritance']['keyField']] = $multiInheritanceDef['inheritance']['keyValue']; + +527 +$muÉiInh”™ªûDef + = +$¬¿y +[ +$su³rCÏss +]; + +530 +$¬¿y +[ +$·»Á +]['šh”™ªû']['subþas£s'][ +$defš™iÚ +['þassName']] = +$šh”™ªûF›lds +; + +535  +$¬¿y +; + +536 + } +} + +545 +´Ùeùed + +funùiÚ + + $_fšdBa£Su³rCÏss +( +$¬¿y +, +$þass +) + +547 ià( + `is£t +( +$¬¿y +[ +$þass +]['inheritance']['extends']) && isset($array[$class]['inheritance']['type']) && ($array[$class]['inheritance']['type'] == 'simple' || $array[$class]['inheritance']['type'] == 'column_aggregation')) { + +548  +$this +-> + `_fšdBa£Su³rCÏss +( +$¬¿y +, $¬¿y[ +$þass +]['inheritance']['extends']); + +550  +$þass +; + +552 + } +} + +564 +´Ùeùed + +funùiÚ + + $_buždR–©iÚshs +( +$¬¿y +) + +568 + `fܗch + ( +$¬¿y + +as + +$þassName + => +$´Ý”t›s +) { + +569 ià( + `is£t +( +$´Ý”t›s +['cÞumns']è&& ! + `em±y +($properties['columns']) && isset($properties['detect_relations']) && $properties['detect_relations']) { + +570 + `fܗch + ( +$´Ý”t›s +['cÞumns'] +as + +$cÞumn +) { + +573 ià( + `¡½os +( +$cÞumn +['name'], '_id')) { + +574 +$cÞumnCÏssName + = +Doùrše_InæeùÜ +:: + `þassify +( + `¡r_»¶aû +('_id', '', +$cÞumn +['name'])); + +575 ià( + `is£t +( +$¬¿y +[ +$cÞumnCÏssName +]è&& !is£t($¬¿y[ +$þassName +]['relations'][$columnClassName])) { + +576 +$¬¿y +[ +$þassName +]['»ÏtiÚs'][ +$cÞumnCÏssName +] = + `¬¿y +(); + +580 +$ty³ + = + `is£t +( +$¬¿y +[ +$cÞumnCÏssName +]['columns']['id']['type']) ? $array[$columnClassName]['columns']['id']['type']:'integer'; + +581 +$Ëngth + = + `is£t +( +$¬¿y +[ +$cÞumnCÏssName +]['columns']['id']['length']) ? $array[$columnClassName]['columns']['id']['length']:8; + +582 +$¬¿y +[ +$þassName +]['cÞumns'][ +$cÞumn +['Çme']]['ty³'] = +$ty³ +; + +583 +$¬¿y +[ +$þassName +]['cÞumns'][ +$cÞumn +['Çme']]['Ëngth'] = +$Ëngth +; + +590 + `fܗch + ( +$¬¿y + +as + +$Çme + => +$´Ý”t›s +) { + +591 iàÐ! + `is£t +( +$´Ý”t›s +['relations'])) { + +595 +$þassName + = +$´Ý”t›s +['className']; + +596 +$»ÏtiÚs + = +$´Ý”t›s +['relations']; + +598 + `fܗch + ( +$»ÏtiÚs + +as + +$®Ÿs + => +$»ÏtiÚ +) { + +599 +$þass + = + `is£t +( +$»ÏtiÚ +['þass']è? $»ÏtiÚ['þass']: +$®Ÿs +; + +600 iàÐ! + `is£t +( +$¬¿y +[ +$þass +])) { + +603 +$»ÏtiÚ +['þass'] = +$þass +; + +604 +$»ÏtiÚ +['®Ÿs'] = + `is£t +($»ÏtiÚ['®Ÿs']è? $»ÏtiÚ['®Ÿs'] : +$®Ÿs +; + +607 ià( + `is£t +( +$»ÏtiÚ +['refClass'])) { + +608 +$»ÏtiÚ +['loÿl'] = + `is£t +($»ÏtiÚ['loÿl']è? $»ÏtiÚ['loÿl']: +Doùrše_InæeùÜ +:: + `bËize +( +$Çme +) . '_id'; + +609 +$»ÏtiÚ +['fÜeign'] = + `is£t +($»ÏtiÚ['fÜeign']è? $»ÏtiÚ['fÜeign']: +Doùrše_InæeùÜ +:: + `bËize +( +$þass +) . '_id'; + +611 +$»ÏtiÚ +['loÿl'] = + `is£t +($»ÏtiÚ['loÿl']è? $»ÏtiÚ['loÿl']: +Doùrše_InæeùÜ +:: + `bËize +($relation['class']) . '_id'; + +612 +$»ÏtiÚ +['fÜeign'] = + `is£t +($relation['foreign']) ? $relation['foreign']:'id'; + +615 ià( + `is£t +( +$»ÏtiÚ +['refClass'])) { + +616 +$»ÏtiÚ +['type'] = 'many'; + +619 ià( + `is£t +( +$»ÏtiÚ +['type']) && $relation['type']) { + +620 +$»ÏtiÚ +['ty³'] = $»ÏtiÚ['ty³'] ==ð'Úe' ? +Doùrše_R–©iÚ +:: +ONE +:Doùrše_R–©iÚ:: +MANY +; + +622 +$»ÏtiÚ +['ty³'] = +Doùrše_R–©iÚ +:: +ONE +; + +625 ià( + `is£t +( +$»ÏtiÚ +['foreignType']) && $relation['foreignType']) { + +626 +$»ÏtiÚ +['fÜeignTy³'] = $»ÏtiÚ['fÜeignTy³'] ==ð'Úe' ? +Doùrše_R–©iÚ +:: +ONE +:Doùrše_R–©iÚ:: +MANY +; + +629 +$»ÏtiÚ +['key'] = +$this +-> + `_buždUniqueR–©iÚKey +($relation); + +631 +$this +-> + `_v®id©eSchemaEËm’t +('»ÏtiÚ', + `¬¿y_keys +( +$»ÏtiÚ +), +$þassName + . '->relation->' . $relation['alias']); + +633 +$this +-> +_»ÏtiÚs +[ +$þassName +][ +$®Ÿs +] = +$»ÏtiÚ +; + +638 +$this +-> + `_autoCom¶‘eOµos™eR–©iÚs +(); + +641 +$this +-> + `_fixDu¶iÿ‹R–©iÚs +(); + +644 + `fܗch + ( +$this +-> +_»ÏtiÚs + +as + +$þassName + => +$»ÏtiÚs +) { + +645 +$¬¿y +[ +$þassName +]['»ÏtiÚs'] = +$»ÏtiÚs +; + +648  +$¬¿y +; + +649 + } +} + +659 +´Ùeùed + +funùiÚ + + $_autoCom¶‘eOµos™eR–©iÚs +() + +661 + `fܗch +( +$this +-> +_»ÏtiÚs + +as + +$þassName + => +$»ÏtiÚs +) { + +662 + `fܗch + ( +$»ÏtiÚs + +AS + +$®Ÿs + => +$»ÏtiÚ +) { + +663 ià(( + `is£t +( +$»ÏtiÚ +['equ®']è&& $»ÏtiÚ['equ®']è|| (is£t($»ÏtiÚ['autoCom¶‘e']è&& $»ÏtiÚ['autoCom¶‘e'] ==ð +çl£ +)) { + +667 +$ÃwR–©iÚ + = + `¬¿y +(); + +668 +$ÃwR–©iÚ +['fÜeign'] = +$»ÏtiÚ +['local']; + +669 +$ÃwR–©iÚ +['loÿl'] = +$»ÏtiÚ +['foreign']; + +670 +$ÃwR–©iÚ +['þass'] = + `is£t +( +$»ÏtiÚ +['fÜeignCÏss']è? $»ÏtiÚ['fÜeignCÏss']: +$þassName +; + +671 +$ÃwR–©iÚ +['®Ÿs'] = + `is£t +( +$»ÏtiÚ +['fÜeignAlŸs']è? $»ÏtiÚ['fÜeignAlŸs']: +$þassName +; + +672 +$ÃwR–©iÚ +['fÜeignAlŸs'] = +$®Ÿs +; + +676 +$ÃwR–©iÚ +['autog’”©ed'] = +Œue +; + +678 ià( + `is£t +( +$»ÏtiÚ +['refClass'])) { + +679 +$ÃwR–©iÚ +['»fCÏss'] = +$»ÏtiÚ +['refClass']; + +680 +$ÃwR–©iÚ +['ty³'] = + `is£t +( +$»ÏtiÚ +['foreignType']) ? $relation['foreignType']:$relation['type']; + +682 ià( + `is£t +( +$»ÏtiÚ +['foreignType'])) { + +683 +$ÃwR–©iÚ +['ty³'] = +$»ÏtiÚ +['foreignType']; + +685 +$ÃwR–©iÚ +['ty³'] = +$»ÏtiÚ +['ty³'] ==ð +Doùrše_R–©iÚ +:: +ONE + ? Doùrše_R–©iÚ:: +MANY +:Doctrine_Relation::ONE; + +690 iàÐ! + `is£t +( +$this +-> +_»ÏtiÚs +[ +$»ÏtiÚ +['þass']][ +$ÃwR–©iÚ +['alias']])) { + +691 +$ÃwR–©iÚ +['key'] = +$this +-> + `_buždUniqueR–©iÚKey +($newRelation); + +692 +$this +-> +_»ÏtiÚs +[ +$»ÏtiÚ +['þass']][ +$ÃwR–©iÚ +['alias']] = $newRelation; + +696 + } +} + +706 +´Ùeùed + +funùiÚ + + $_fixDu¶iÿ‹R–©iÚs +() + +708 + `fܗch +( +$this +-> +_»ÏtiÚs + +as + +$þassName + => +$»ÏtiÚs +) { + +710 +$exi¡šgR–©iÚs + = + `¬¿y +(); + +711 +$uniqueR–©iÚs + = + `¬¿y +(); + +712 + `fܗch + ( +$»ÏtiÚs + +as + +$»ÏtiÚ +) { + +713 iàÐ! + `š_¬¿y +( +$»ÏtiÚ +['key'], +$exi¡šgR–©iÚs +)) { + +714 +$exi¡šgR–©iÚs +[] = +$»ÏtiÚ +['key']; + +715 +$uniqueR–©iÚs + = + `¬¿y_m”ge +($uniqueR–©iÚs, + `¬¿y +( +$»ÏtiÚ +['alias'] => $relation)); + +718 iàÐ! + `is£t +( +$»ÏtiÚ +['autog’”©ed']è|| $»ÏtiÚ['autog’”©ed'] !ð +Œue +) { + +719 +$uniqueR–©iÚs + = + `¬¿y_m”ge +($uniqueR–©iÚs, + `¬¿y +( +$»ÏtiÚ +['alias'] => $relation)); + +724 +$this +-> +_»ÏtiÚs +[ +$þassName +] = +$uniqueR–©iÚs +; + +726 + } +} + +737 +´Ùeùed + +funùiÚ + + $_buždUniqueR–©iÚKey +( +$»ÏtiÚ +) + +739  + `md5 +( +$»ÏtiÚ +['loÿl'].$»ÏtiÚ['fÜeign'].$»ÏtiÚ['þass'].( + `is£t +($»ÏtiÚ['»fCÏss']è? $»ÏtiÚ['»fCÏss']: +nuÎ +)); + +740 + } +} + +749 +´Ùeùed + +funùiÚ + + $_v®id©eSchemaEËm’t +( +$Çme +, +$–em’t +, +$·th +) + +751 +$–em’t + = ( +¬¿y +) $element; + +753 +$v®id©iÚ + = +$this +-> +_v®id©iÚ +[ +$Çme +]; + +757 ià( +$Çme + == 'column') { + +758 +$v®id©Üs + = +Doùrše_Mªag” +:: + `g‘In¡ªû +()-> + `g‘V®id©Üs +(); + +759 +$v®id©iÚ + = + `¬¿y_m”ge +($v®id©iÚ, +$v®id©Üs +); + +762 +$v®id©iÚ + = + `¬¿y_æ +($validation); + +763 + `fܗch + ( +$–em’t + +as + +$key + => +$v®ue +) { + +764 iàÐ! + `is£t +( +$v®id©iÚ +[ +$v®ue +])) { + +765 +throw + +Ãw + + `Doùrše_ImpÜt_Exû±iÚ +( + +766 + `¥rštf +('Inv®id schem¨–em’ˆÇmed "' . +$v®ue + . '"‡ˆ·th "' . +$·th + . '"') + +770 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Import/Sqlite.php + +1 +cÚn +-> + `ãtchCÞumn +( +$qu”y +); + +76 +$»suÉ + = + `¬¿y +(); + +77 + `fܗch + ( +$bËNames + +as + +$bËName +) { + +78 ià( +$sqn + = +$this +-> +cÚn +-> + `fixSequ’ûName +( +$bËName +, +Œue +)) { + +79 +$»suÉ +[] = +$sqn +; + +82 ià( +$this +-> +cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_FIELD_CASE +è&& ($this->cÚn->g‘A‰ribu‹(Doùrše_CÜe:: +ATTR_PORTABILITY +è& Doùrše_CÜe:: +PORTABILITY_FIX_CASE +)) { + +83 +$»suÉ + = + `¬¿y_m­ +(( +$this +-> +cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_FIELD_CASE +è=ð +CASE_LOWER + ? 'strtolower' : 'strtoupper'), $result); + +85  +$»suÉ +; + +86 + } +} + +94 +public + +funùiÚ + + $li¡TabËCÚ¡¿šts +( +$bË +) + +96 +$bË + = +$this +-> +cÚn +-> + `quÙe +($table, 'text'); + +98 +$qu”y + = "SELECT sql FROM sqlite_master WHEREype='index' AND "; + +100 ià( +$this +-> +cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_FIELD_CASE +è&& ($this->cÚn->g‘A‰ribu‹(Doùrše_CÜe:: +ATTR_PORTABILITY +è& Doùrše_CÜe:: +PORTABILITY_FIX_CASE +)) { + +101 +$qu”y + .ð'LOWERÑbl_Çmeèð' . + `¡¹Þow” +( +$bË +); + +103 +$qu”y + .ð'tbl_Çmð' . +$bË +; + +105 +$qu”y + .= ' AND sql NOT NULL ORDER BY‚ame'; + +106 +$šdexes + = +$this +-> +cÚn +-> + `ãtchCÞumn +( +$qu”y +); + +108 +$»suÉ + = + `¬¿y +(); + +109 + `fܗch + ( +$šdexes + +as + +$sql +) { + +110 ià( + `´eg_m©ch +("/^ü—‹ uniqušdex ([^ ]+èÚ /i", +$sql +, +$tmp +)) { + +111 +$šdex + = +$this +-> +cÚn +-> +fÜm©‹r +-> + `fixIndexName +( +$tmp +[1]); + +112 iàÐ! + `em±y +( +$šdex +)) { + +113 +$»suÉ +[ +$šdex +] = +Œue +; + +118 ià( +$this +-> +cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_FIELD_CASE +è&& ($this->cÚn->g‘A‰ribu‹(Doùrše_CÜe:: +ATTR_PORTABILITY +è& Doùrše_CÜe:: +PORTABILITY_FIX_CASE +)) { + +119 +$»suÉ + = + `¬¿y_chªge_key_ÿ£ +($»suÉ, +$this +-> +cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_FIELD_CASE +)); + +121  + `¬¿y_keys +( +$»suÉ +); + +122 + } +} + +130 +public + +funùiÚ + + $li¡TabËCÞumns +( +$bË +) + +132 +$sql + = 'PRAGMAabË_šfo(' . +$bË + . ')'; + +133 +$»suÉ + = +$this +-> +cÚn +-> + `ãtchAÎ +( +$sql +); + +135 +$desütiÚ + = + `¬¿y +(); + +136 +$cÞumns + = + `¬¿y +(); + +137 + `fܗch + ( +$»suÉ + +as + +$key + => +$v® +) { + +138 +$v® + = + `¬¿y_chªge_key_ÿ£ +($v®, +CASE_LOWER +); + +139 +$deþ + = +$this +-> +cÚn +-> +d©aDiù +-> + `g‘P܏bËDeþ¬©iÚ +( +$v® +); + +141 +$desütiÚ + = + `¬¿y +( + +142 'Çme' => +$v® +['name'], + +143 'Áy³' => +$v® +['type'], + +144 'ty³' => +$deþ +['type'][0], + +145 '®Éy³s' => +$deþ +['type'], + +146 'nÙnuÎ' => ( +boÞ +è +$v® +['notnull'], + +147 'deçuÉ' => +$v® +['dflt_value'], + +148 '´im¬y' => ( +boÞ +è +$v® +['pk'], + +149 'Ëngth' => +nuÎ +, + +150 'sÿË' => +nuÎ +, + +151 '´ecisiÚ' => +nuÎ +, + +152 'unsigÃd' => +nuÎ +, + +153 'autošüem’t' => ( +boÞ +è( +$v® +['pk'] =ð1 && +$deþ +['type'][0] == 'integer'), + +155 +$cÞumns +[ +$v® +['Çme']] = +$desütiÚ +; + +157  +$cÞumns +; + +158 + } +} + +166 +public + +funùiÚ + + $li¡TabËIndexes +( +$bË +) + +168 +$sql + = 'PRAGMA index_li¡(' . +$bË + . ')'; + +169  +$this +-> +cÚn +-> + `ãtchCÞumn +( +$sql +); + +170 + } +} + +177 +public + +funùiÚ + + $li¡TabËs +( +$d©aba£ + = +nuÎ +) + +179 +$sql + = "SELECT‚ame FROM sqlite_master WHEREype = 'table' AND‚ame != 'sqlite_sequence' " + +183  +$this +-> +cÚn +-> + `ãtchCÞumn +( +$sql +); + +184 + } +} + +192 +public + +funùiÚ + + $li¡TabËTrigg”s +( +$bË +) + +195 + } +} + +203 +public + +funùiÚ + + $li¡TabËV›ws +( +$bË +) + +205 +$qu”y + = "SELECT‚ame, sql FROM sqlite_master WHEREype='view' AND sql NOT NULL"; + +206 +$v›ws + = +$db +-> + `ãtchAÎ +( +$qu”y +); + +208 +$»suÉ + = + `¬¿y +(); + +209 + `fܗch + ( +$v›ws + +as + +$row +) { + +210 ià( + `´eg_m©ch +("/^ü—‹ v›w .* \bäom\b\s+\b{$bË}\b /i", +$row +['sql'])) { + +211 iàÐ! + `em±y +( +$row +['name'])) { + +212 +$»suÉ +[ +$row +['Çme']] = +Œue +; + +216  +$»suÉ +; + +217 + } +} + +224 +public + +funùiÚ + + $li¡U£rs +() + +227 + } +} + +235 +public + +funùiÚ + + $li¡V›ws +( +$d©aba£ + = +nuÎ +) + +237 +$qu”y + = "SELECT‚ame FROM sqlite_master WHEREype='view' AND sql NOT NULL"; + +239  +$this +-> +cÚn +-> + `ãtchCÞumn +( +$qu”y +); + +240 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Inflector.php + +1 'A', chr(195).chr(129) => 'A', + +122 + `chr +(195).chr(130) => 'A', chr(195).chr(131) => 'A', + +123 + `chr +(195).chr(132) => 'A', chr(195).chr(133) => 'A', + +124 + `chr +(195).chr(135) => 'C', chr(195).chr(136) => 'E', + +125 + `chr +(195).chr(137) => 'E', chr(195).chr(138) => 'E', + +126 + `chr +(195).chr(139) => 'E', chr(195).chr(140) => 'I', + +127 + `chr +(195).chr(141) => 'I', chr(195).chr(142) => 'I', + +128 + `chr +(195).chr(143) => 'I', chr(195).chr(145) => 'N', + +129 + `chr +(195).chr(146) => 'O', chr(195).chr(147) => 'O', + +130 + `chr +(195).chr(148) => 'O', chr(195).chr(149) => 'O', + +131 + `chr +(195).chr(150) => 'O', chr(195).chr(153) => 'U', + +132 + `chr +(195).chr(154) => 'U', chr(195).chr(155) => 'U', + +133 + `chr +(195).chr(156) => 'U', chr(195).chr(157) => 'Y', + +134 + `chr +(195).chr(159) => 's', chr(195).chr(160) => 'a', + +135 + `chr +(195).chr(161) => 'a', chr(195).chr(162) => 'a', + +136 + `chr +(195).chr(163) => 'a', chr(195).chr(164) => 'a', + +137 + `chr +(195).chr(165) => 'a', chr(195).chr(167) => 'c', + +138 + `chr +(195).chr(168) => 'e', chr(195).chr(169) => 'e', + +139 + `chr +(195).chr(170) => 'e', chr(195).chr(171) => 'e', + +140 + `chr +(195).chr(172) => 'i', chr(195).chr(173) => 'i', + +141 + `chr +(195).chr(174) => 'i', chr(195).chr(175) => 'i', + +142 + `chr +(195).chr(177) => 'n', chr(195).chr(178) => 'o', + +143 + `chr +(195).chr(179) => 'o', chr(195).chr(180) => 'o', + +144 + `chr +(195).chr(181) => 'o', chr(195).chr(182) => 'o', + +145 + `chr +(195).chr(182) => 'o', chr(195).chr(185) => 'u', + +146 + `chr +(195).chr(186) => 'u', chr(195).chr(187) => 'u', + +147 + `chr +(195).chr(188) => 'u', chr(195).chr(189) => 'y', + +148 + `chr +(195).chr(191) => 'y', + +150 + `chr +(196).chr(128) => 'A', chr(196).chr(129) => 'a', + +151 + `chr +(196).chr(130) => 'A', chr(196).chr(131) => 'a', + +152 + `chr +(196).chr(132) => 'A', chr(196).chr(133) => 'a', + +153 + `chr +(196).chr(134) => 'C', chr(196).chr(135) => 'c', + +154 + `chr +(196).chr(136) => 'C', chr(196).chr(137) => 'c', + +155 + `chr +(196).chr(138) => 'C', chr(196).chr(139) => 'c', + +156 + `chr +(196).chr(140) => 'C', chr(196).chr(141) => 'c', + +157 + `chr +(196).chr(142) => 'D', chr(196).chr(143) => 'd', + +158 + `chr +(196).chr(144) => 'D', chr(196).chr(145) => 'd', + +159 + `chr +(196).chr(146) => 'E', chr(196).chr(147) => 'e', + +160 + `chr +(196).chr(148) => 'E', chr(196).chr(149) => 'e', + +161 + `chr +(196).chr(150) => 'E', chr(196).chr(151) => 'e', + +162 + `chr +(196).chr(152) => 'E', chr(196).chr(153) => 'e', + +163 + `chr +(196).chr(154) => 'E', chr(196).chr(155) => 'e', + +164 + `chr +(196).chr(156) => 'G', chr(196).chr(157) => 'g', + +165 + `chr +(196).chr(158) => 'G', chr(196).chr(159) => 'g', + +166 + `chr +(196).chr(160) => 'G', chr(196).chr(161) => 'g', + +167 + `chr +(196).chr(162) => 'G', chr(196).chr(163) => 'g', + +168 + `chr +(196).chr(164) => 'H', chr(196).chr(165) => 'h', + +169 + `chr +(196).chr(166) => 'H', chr(196).chr(167) => 'h', + +170 + `chr +(196).chr(168) => 'I', chr(196).chr(169) => 'i', + +171 + `chr +(196).chr(170) => 'I', chr(196).chr(171) => 'i', + +172 + `chr +(196).chr(172) => 'I', chr(196).chr(173) => 'i', + +173 + `chr +(196).chr(174) => 'I', chr(196).chr(175) => 'i', + +174 + `chr +(196).chr(176) => 'I', chr(196).chr(177) => 'i', + +175 + `chr +(196).chr(178) => 'IJ',chr(196).chr(179) => 'ij', + +176 + `chr +(196).chr(180) => 'J', chr(196).chr(181) => 'j', + +177 + `chr +(196).chr(182) => 'K', chr(196).chr(183) => 'k', + +178 + `chr +(196).chr(184) => 'k', chr(196).chr(185) => 'L', + +179 + `chr +(196).chr(186) => 'l', chr(196).chr(187) => 'L', + +180 + `chr +(196).chr(188) => 'l', chr(196).chr(189) => 'L', + +181 + `chr +(196).chr(190) => 'l', chr(196).chr(191) => 'L', + +182 + `chr +(197).chr(128) => 'l', chr(197).chr(129) => 'L', + +183 + `chr +(197).chr(130) => 'l', chr(197).chr(131) => 'N', + +184 + `chr +(197).chr(132) => 'n', chr(197).chr(133) => 'N', + +185 + `chr +(197).chr(134) => 'n', chr(197).chr(135) => 'N', + +186 + `chr +(197).chr(136) => 'n', chr(197).chr(137) => 'N', + +187 + `chr +(197).chr(138) => 'n', chr(197).chr(139) => 'N', + +188 + `chr +(197).chr(140) => 'O', chr(197).chr(141) => 'o', + +189 + `chr +(197).chr(142) => 'O', chr(197).chr(143) => 'o', + +190 + `chr +(197).chr(144) => 'O', chr(197).chr(145) => 'o', + +191 + `chr +(197).chr(146) => 'OE',chr(197).chr(147) => 'oe', + +192 + `chr +(197).chr(148) => 'R', chr(197).chr(149) => 'r', + +193 + `chr +(197).chr(150) => 'R', chr(197).chr(151) => 'r', + +194 + `chr +(197).chr(152) => 'R', chr(197).chr(153) => 'r', + +195 + `chr +(197).chr(154) => 'S', chr(197).chr(155) => 's', + +196 + `chr +(197).chr(156) => 'S', chr(197).chr(157) => 's', + +197 + `chr +(197).chr(158) => 'S', chr(197).chr(159) => 's', + +198 + `chr +(197).chr(160) => 'S', chr(197).chr(161) => 's', + +199 + `chr +(197).chr(162) => 'T', chr(197).chr(163) => 't', + +200 + `chr +(197).chr(164) => 'T', chr(197).chr(165) => 't', + +201 + `chr +(197).chr(166) => 'T', chr(197).chr(167) => 't', + +202 + `chr +(197).chr(168) => 'U', chr(197).chr(169) => 'u', + +203 + `chr +(197).chr(170) => 'U', chr(197).chr(171) => 'u', + +204 + `chr +(197).chr(172) => 'U', chr(197).chr(173) => 'u', + +205 + `chr +(197).chr(174) => 'U', chr(197).chr(175) => 'u', + +206 + `chr +(197).chr(176) => 'U', chr(197).chr(177) => 'u', + +207 + `chr +(197).chr(178) => 'U', chr(197).chr(179) => 'u', + +208 + `chr +(197).chr(180) => 'W', chr(197).chr(181) => 'w', + +209 + `chr +(197).chr(182) => 'Y', chr(197).chr(183) => 'y', + +210 + `chr +(197).chr(184) => 'Y', chr(197).chr(185) => 'Z', + +211 + `chr +(197).chr(186) => 'z', chr(197).chr(187) => 'Z', + +212 + `chr +(197).chr(188) => 'z', chr(197).chr(189) => 'Z', + +213 + `chr +(197).chr(190) => 'z', chr(197).chr(191) => 's', + +215 + `chr +(226).chr(130).chr(172) => 'E', + +217 + `chr +(194).chr(163) => '', + +224 +$¡ršg + = + `¡¹r +($¡ršg, +$ch¬s +); + +227 +$ch¬s +['š'] = + `chr +(128).chr(131).chr(138).chr(142).chr(154).chr(158) + +228 . + `chr +(159).chr(162).chr(165).chr(181).chr(192).chr(193).chr(194) + +229 . + `chr +(195).chr(196).chr(197).chr(199).chr(200).chr(201).chr(202) + +230 . + `chr +(203).chr(204).chr(205).chr(206).chr(207).chr(209).chr(210) + +231 . + `chr +(211).chr(212).chr(213).chr(214).chr(216).chr(217).chr(218) + +232 . + `chr +(219).chr(220).chr(221).chr(224).chr(225).chr(226).chr(227) + +233 . + `chr +(228).chr(229).chr(231).chr(232).chr(233).chr(234).chr(235) + +234 . + `chr +(236).chr(237).chr(238).chr(239).chr(241).chr(242).chr(243) + +235 . + `chr +(244).chr(245).chr(246).chr(248).chr(249).chr(250).chr(251) + +236 . + `chr +(252).chr(253).chr(255); + +238 +$ch¬s +['out'] = "EfSZszYcYuAAAAAACEEEEIIIINOOOOOOUUUUYaaaaaaceeeeiiiinoooooouuuuyy"; + +240 +$¡ršg + = + `¡¹r +($¡ršg, +$ch¬s +['in'], $chars['out']); + +241 +$doubËCh¬s +['š'] = + `¬¿y +( + `chr +(140), chr(156), chr(198), chr(208), chr(222), chr(223), chr(230), chr(240), chr(254)); + +242 +$doubËCh¬s +['out'] = + `¬¿y +('OE', 'oe', 'AE', 'DH', 'TH', 'ss', 'ae', 'dh', 'th'); + +243 +$¡ršg + = + `¡r_»¶aû +( +$doubËCh¬s +['in'], $doubleChars['out'], $string); + +246  +$¡ršg +; + +247 + } +} + +255 +public +  +funùiÚ + + $u¾ize +( +$‹xt +) + +258 +$‹xt + = +£lf +:: + `uÇcûÁ +($text); + +260 ià( + `funùiÚ_exi¡s +('mb_strtolower')) + +262 +$‹xt + = + `mb_¡¹Þow” +($text); + +264 +$‹xt + = + `¡¹Þow” +($text); + +268 +$‹xt + = + `´eg_»¶aû +('/\W/', ' ', $text); + +271 +$‹xt + = + `¡¹Þow” +( + `´eg_»¶aû +('/[^A-Z^a-z^0-9^\/]+/', '-', + +272 + `´eg_»¶aû +('/([a-z\d])([A-Z])/', '\1_\2', + +273 + `´eg_»¶aû +('/([A-Z]+)([A-Z][a-z])/', '\1_\2', + +274 + `´eg_»¶aû +('/::/', '/', +$‹xt +))))); + +276  + `Œim +( +$‹xt +, '-'); + +277 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/IntegrityMapper.php + +1 + `buždIÁegr™yR–©iÚQu”y +( +$»cÜd +); + +45 +$this +-> + `švokeIÁegr™yAùiÚs +( +$»cÜd +); + +54 +public + +funùiÚ + + $švokeIÁegr™yAùiÚs +( +Doùrše_RecÜd + +$»cÜd +) + +56 +$d–‘eAùiÚs + = +Doùrše_Mªag” +:: + `g‘In¡ªû +() + +57 -> + `g‘D–‘eAùiÚs +( +$»cÜd +-> + `g‘TabË +()-> + `g‘CompڒtName +()); + +59 + `fܗch + ( +$»cÜd +-> + `g‘TabË +()-> + `g‘R–©iÚs +(è +as + +$»ÏtiÚ +) { + +60 +$compڒtName + = +$»ÏtiÚ +-> + `g‘TabË +()-> + `g‘CompڒtName +(); + +62 + `fܗch +( +$»cÜd +-> + `g‘ +( +$»ÏtiÚ +-> + `g‘AlŸs +()è +as + +$cÞl +) { + +63 iàÐ! ( +$cÞl + +š¡ªûof + +Doùrše_CÞËùiÚ +)) { + +64 +$cÞl + = + `¬¿y +($coll); + +66 + `fܗch + ( +$cÞl + +as + +$»cÜd +) { + +67 +$this +-> + `švokeIÁegr™yAùiÚs +( +$»cÜd +); + +69 ià( + `is£t +( +$d–‘eAùiÚs +[ +$compڒtName +])) { + +70 ià( +$d–‘eAùiÚs +[ +$compڒtName +] === 'SET NULL') { + +71 +$»cÜd +-> + `£t +( +$»ÏtiÚ +-> + `g‘FÜeign +(), +nuÎ +); + +72 } + `–£if + ( +$d–‘eAùiÚs +[ +$compڒtName +] === 'CASCADE') { + +73 +$this +-> +cÚn +-> +Œª§ùiÚ +-> + `addD–‘e +( +$»cÜd +); + +80 + } +} + +88 +public + +funùiÚ + + $buždIÁegr™yR–©iÚQu”y +( +Doùrše_RecÜd + +$»cÜd +) + +90 +$q + = +$»cÜd +-> + `g‘TabË +()-> + `ü—‹Qu”y +(); + +92 +$®Ÿ£s + = + `¬¿y +(); + +93 +$šdexes + = + `¬¿y +(); + +95 +$roÙ + = +$»cÜd +-> + `g‘TabË +()-> + `g‘CompڒtName +(); + +96 +$roÙAlŸs + = + `¡¹Þow” +( + `sub¡r +( +$roÙ +, 0, 1)); + +97 +$®Ÿ£s +[ +$roÙAlŸs +] = +$roÙ +; + +99 + `fܗch + (( +¬¿y +è +$»cÜd +-> + `g‘TabË +()-> + `g‘Id’tif›r +(è +as + +$id +) { + +100 +$f›ld + = +$roÙAlŸs + . '.' . +$id +; + +101 +$cÚd +[] = +$f›ld + . ' = ?'; + +102 +$f›lds +[] = +$f›ld +; + +103 +$·¿ms + = +$»cÜd +-> + `g‘ +( +$id +); + +105 +$f›lds + = + `im¶ode +(', ', $fields); + +106 +$compڒts +[] = +$roÙ +; + +107 +$this +-> + `buždIÁegr™yR–©iÚs +( +$»cÜd +-> + `g‘TabË +(), +$®Ÿ£s +, +$f›lds +, +$šdexes +, +$compڒts +); + +109 +$q +-> + `£Ëù +( +$f›lds +)-> + `äom +( +$roÙ +. ' ' . +$roÙAlŸs +); + +111 + `fܗch + ( +$®Ÿ£s + +as + +$®Ÿs + => +$Çme +) { + +112 +$q +-> + `ËáJoš +( +$roÙAlŸs + . '.' . +$Çme + . ' ' . +$®Ÿs +); + +114 +$q +-> + `wh”e +( + `im¶ode +(' AND ', +$cÚd +)); + +116  +$q +-> + `execu‹ +( + `¬¿y +( +$·¿ms +)); + +117 + } +} + +129 +public + +funùiÚ + + $buždIÁegr™yR–©iÚs +( +Doùrše_TabË + +$bË +, & +$®Ÿ£s +, & +$f›lds +, & +$šdexes +, & +$compڒts +) + +131 +$d–‘eAùiÚs + = +Doùrše_Mªag” +:: + `g‘In¡ªû +() + +132 -> + `g‘D–‘eAùiÚs +( +$bË +-> + `g‘CompڒtName +()); + +134 + `fܗch + ( +$bË +-> + `g‘R–©iÚs +(è +as + +$»ÏtiÚ +) { + +135 +$compڒtName + = +$»ÏtiÚ +-> + `g‘TabË +()-> + `g‘CompڒtName +(); + +136 ià( + `š_¬¿y +( +$compڒtName +, +$compڒts +)) { + +139 +$compڒts +[] = +$compڒtName +; + +141 +$®Ÿs + = + `¡¹Þow” +( + `sub¡r +( +$»ÏtiÚ +-> + `g‘AlŸs +(), 0, 1)); + +143 iàÐ! + `is£t +( +$šdexes +[ +$®Ÿs +])) { + +144 +$šdexes +[ +$®Ÿs +] = 1; + +147 ià( + `is£t +( +$d–‘eAùiÚs +[ +$compڒtName +])) { + +148 ià( + `is£t +( +$®Ÿ£s +[ +$®Ÿs +])) { + +149 +$®Ÿs + = $®Ÿ . ++ +$šdexes +[$alias]; + +151 +$®Ÿ£s +[ +$®Ÿs +] = +$»ÏtiÚ +-> + `g‘AlŸs +(); + +153 ià( +$d–‘eAùiÚs +[ +$compڒtName +] === 'SET NULL') { + +154 ià( +$»ÏtiÚ + +š¡ªûof + +Doùrše_R–©iÚ_FÜeignKey +) { + +155 + `fܗch + (( +¬¿y +è +$»ÏtiÚ +-> + `g‘FÜeign +(è +as + +$fÜeign +) { + +156 +$f›lds + .ð', ' . +$®Ÿs + . '.' . +$fÜeign +; + +158 } + `–£if + ( +$»ÏtiÚ + +š¡ªûof + +Doùrše_R–©iÚ_LoÿlKey +) { + +159 + `fܗch + (( +¬¿y +è +$»ÏtiÚ +-> + `g‘Loÿl +(è +as + +$fÜeign +) { + +160 +$f›lds + .ð', ' . +$®Ÿs + . '.' . +$fÜeign +; + +164 + `fܗch + (( +¬¿y +è +$»ÏtiÚ +-> + `g‘TabË +()-> + `g‘Id’tif›r +(è +as + +$id +) { + +165 +$f›lds + .ð', ' . +$®Ÿs + . '.' . +$id +; + +167 ià( +$d–‘eAùiÚs +[ +$compڒtName +] === 'CASCADE') { + +168 +$this +-> + `buždIÁegr™yR–©iÚs +( +$»ÏtiÚ +-> + `g‘TabË +(), +$®Ÿ£s +, +$f›lds +, +$šdexes +, +$compڒts +); + +172 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Lib.php + +1 '; + +78 +$r +[] = 'Compڒˆ : ' . +$»cÜd +-> + `g‘TabË +()-> + `g‘CompڒtName +(); + +79 +$r +[] = 'ID : ' . +Doùrše_CÜe +:: + `dump +( +$»cÜd +-> + `id’tif›r +()); + +80 +$r +[] = 'Reã»nû : ' . + `couÁ +( +$»cÜd +-> + `g‘Reã»nûs +()); + +81 +$r +[] = 'S‹ : ' . +Doùrše_Lib +:: + `g‘RecÜdS‹AsSŒšg +( +$»cÜd +-> + `¡©e +()); + +82 +$r +[] = 'OID : ' . +$»cÜd +-> + `g‘OID +(); + +83 +$r +[] = 'd©¨ : ' . +Doùrše_CÜe +:: + `dump +( +$»cÜd +-> + `g‘D©a +(), +çl£ +); + +84 +$r +[] = ''; + +86  + `im¶ode +("\n", +$r +)."
    "; + +87 + } +} + +98 +public +  +funùiÚ + + $g‘CÚÃùiÚS‹AsSŒšg +( +$¡©e +) + +100  +$¡©e +) { + +101  +Doùrše_T¿n§ùiÚ +:: +STATE_SLEEP +: + +104  +Doùrše_T¿n§ùiÚ +:: +STATE_BUSY +: + +107  +Doùrše_T¿n§ùiÚ +:: +STATE_ACTIVE +: + +111 + } +} + +122 +public +  +funùiÚ + + $g‘CÚÃùiÚAsSŒšg +( +Doùrše_CÚÃùiÚ + +$cÚÃùiÚ +) + +124 +$r +[] = '
    ';
    +
    +125 
    +$r
    +[] = 'Doctrine_Connection object';
    +
    +126 
    +$r
    +[] = 'S‹ : ' . 
    +Doùrše_Lib
    +::
    +	`g‘CÚÃùiÚS‹AsSŒšg
    +(
    +$cÚÃùiÚ
    +->
    +Œª§ùiÚ
    +->
    +	`g‘S‹
    +());
    +
    +127 
    +$r
    +[] = 'O³ÀT¿n§ùiÚ  : ' . 
    +$cÚÃùiÚ
    +->
    +Œª§ùiÚ
    +->
    +	`g‘T¿n§ùiÚLev–
    +();
    +
    +128 
    +$r
    +[] = 'TabË iÀmemÜy : ' . 
    +$cÚÃùiÚ
    +->
    +	`couÁ
    +();
    +
    +129 
    +$r
    +[] = 'Driv”‚am : ' . 
    +$cÚÃùiÚ
    +->
    +	`g‘A‰ribu‹
    +(
    +Doùrše_CÜe
    +::
    +ATTR_DRIVER_NAME
    +);
    +
    +130 
    +$r
    +[] = "
    "; + +132  + `im¶ode +("\n", +$r +)."
    "; + +133 + } +} + +143 +public +  +funùiÚ + + $g‘TabËAsSŒšg +( +Doùrše_TabË + +$bË +) + +145 +$r +[] = "
    ";
    +
    +146 
    +$r
    +[] = "Compڒˆ : ".
    +$bË
    +->
    +	`g‘CompڒtName
    +();
    +
    +147 
    +$r
    +[] = "TabË : ".
    +$bË
    +->
    +	`g‘TabËName
    +();
    +
    +148 
    +$r
    +[] = "
    "; + +150  + `im¶ode +("\n", +$r +)."
    "; + +151 + } +} + +163 +public +  +funùiÚ + + $fÜm©Sql +( +$sql +) + +165 +$e + = + `ex¶ode +("\n", +$sql +); + +166 +$cÞÜ + = "367FAC"; + +167 +$l + = +$sql +; + +168 +$l + = + `¡r_»¶aû +("SELECT ", "SELECT
    ",$l); + +169 +$l + = + `¡r_»¶aû +("FROM ", "FROM
    ",$l); + +170 +$l + = + `¡r_»¶aû +(" LEFT JOIN ", "
    LEFT JOIN ",$l); + +171 +$l + = + `¡r_»¶aû +(" INNER JOIN ", "
    INNER JOIN ",$l); + +172 +$l + = + `¡r_»¶aû +(" WHERE ", "
    WHERE ",$l); + +173 +$l + = + `¡r_»¶aû +(" GROUP BY ", "
    GROUP BY ",$l); + +174 +$l + = + `¡r_»¶aû +(" HAVING ", "
    HAVING ",$l); + +175 +$l + = + `¡r_»¶aû +(" AS ", " AS
    ",$l); + +176 +$l + = + `¡r_»¶aû +(" ON ", " ON ",$l); + +177 +$l + = + `¡r_»¶aû +(" ORDER BY ", " ORDER BY
    ",$l); + +178 +$l + = + `¡r_»¶aû +(" LIMIT ", " LIMIT
    ",$l); + +179 +$l + = + `¡r_»¶aû +(" OFFSET ", " OFFSET
    ",$l); + +180 +$l + = + `¡r_»¶aû +(" ", "
    ",$l); + +182  +$l +; + +183 + } +} + +194 +public +  +funùiÚ + + $g‘CÞËùiÚAsSŒšg +( +Doùrše_CÞËùiÚ + +$cÞËùiÚ +) + +196 +$r +[] = "
    ";
    +
    +197 
    +$r
    +[] = 
    +	`g‘_þass
    +(
    +$cÞËùiÚ
    +);
    +
    +198 
    +$r
    +[] = 'd©¨: ' . 
    +Doùrše_CÜe
    +::
    +	`dump
    +(
    +$cÞËùiÚ
    +->
    +	`g‘D©a
    +(), 
    +çl£
    +);
    +
    +200 
    +$r
    +[] = "
    "; + +202  + `im¶ode +("\n", +$r +); + +203 + } +} + +227 +public +  +funùiÚ + + $¬¿yD“pM”ge +() + +229  + `func_num_¬gs +()) { + +231  +çl£ +; + +233  + `func_g‘_¬g +(0); + +235 +$¬gs + = + `func_g‘_¬gs +(); + +236 +$¬gs +[2] = + `¬¿y +(); + +238 ià( + `is_¬¿y +( +$¬gs +[0]) && is_array($args[1])) + +240 + `fܗch + ( + `¬¿y_unique +( + `¬¿y_m”ge +( + `¬¿y_keys +( +$¬gs +[0]),¬¿y_keys($¬gs[1]))è +as + +$key +) + +242 +$isKey0 + = + `¬¿y_key_exi¡s +( +$key +, +$¬gs +[0]); + +243 +$isKey1 + = + `¬¿y_key_exi¡s +( +$key +, +$¬gs +[1]); + +245 ià( +$isKey0 + && +$isKey1 + && + `is_¬¿y +( +$¬gs +[0][ +$key +]) && is_array($args[1][$key])) + +247 +$¬gs +[2][ +$key +] = +£lf +:: + `¬¿yD“pM”ge +($args[0][$key], $args[1][$key]); + +248 } ià( +$isKey0 + && +$isKey1 +) { + +249 +$¬gs +[2][ +$key +] = $args[1][$key]; + +250 } iàÐ! +$isKey1 +) { + +251 +$¬gs +[2][ +$key +] = $args[0][$key]; + +252 } iàÐ! +$isKey0 +) { + +253 +$¬gs +[2][ +$key +] = $args[1][$key]; + +257  +$¬gs +[2]; + +259  +$¬gs +[1]; + +262 +$¬gs + = + `func_g‘_¬gs +(); + +263 +$¬gs +[1] = +£lf +:: + `¬¿yD“pM”ge +($args[0], $args[1]); + +264 + `¬¿y_shiá +( +$¬gs +); + +266  + `ÿÎ_u£r_func_¬¿y +( + `¬¿y +('Doùrše_Lib', '¬¿yD“pM”ge'), +$¬gs +); + +269 + } +} + +282 +public +  +funùiÚ + + $makeDœeùܛs +( +$·th +, +$mode + = 0777) + +284 iàÐ! +$·th +) { + +285  +çl£ +; + +288 ià( + `is_dœ +( +$·th +è|| + `is_fže +($path)) { + +289  +Œue +; + +292  + `mkdœ +( + `Œim +( +$·th +), +$mode +, +Œue +); + +293 + } +} + +304 +public +  +funùiÚ + + $»moveDœeùܛs +( +$fÞd”P©h +) + +306 ià( + `is_dœ +( +$fÞd”P©h +)) + +308 + `fܗch + ( + `sÿndœ +( +$fÞd”P©h +è +as + +$v®ue +) + +310 ià( +$v®ue + != '.' && $value != '..') + +312 +$v®ue + = +$fÞd”P©h + . "/" . $value; + +314 ià( + `is_dœ +( +$v®ue +)) { + +315 +£lf +:: + `»moveDœeùܛs +( +$v®ue +); + +316 } ià( + `is_fže +( +$v®ue +)) { + +317 + `uƚk +( +$v®ue +); + +322  + `rmdœ +( +$fÞd”P©h +); + +324  +çl£ +; + +326 + } +} + +338 +public +  +funùiÚ + + $cÝyDœeùÜy +( +$sourû +, +$de¡ +) + +341 ià( + `is_fže +( +$sourû +)) { + +342  + `cÝy +( +$sourû +, +$de¡ +); + +346 iàÐ! + `is_dœ +( +$de¡ +)) { + +347 + `mkdœ +( +$de¡ +); + +351 +$dœ + = + `dœ +( +$sourû +); + +352  +çl£ + !=ð +$’Œy + = +$dœ +-> + `»ad +()) { + +354 ià( +$’Œy + == '.' || $entry == '..') { + +359 ià( +$de¡ + !== "$source/$entry") { + +360 +£lf +:: + `cÝyDœeùÜy +("$source/$entry", "$dest/$entry"); + +365 +$dœ +-> + `þo£ +(); + +367  +Œue +; + +368 + } +} + +380 +public +  +funùiÚ + + $isV®idCÏssName +( +$þassName +) + +382 ià( + `´eg_m©ch +('~(^[a-z])|(_[a-z])|([\W])|(_{2})~', +$þassName +)) { + +383  +çl£ +; + +386  +Œue +; + +387 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Locator.php + +1 +$»sourû +) { + +63 ià( +$»sourû + +š¡ªûof + +Doùrše_LoÿtÜ_InjeùabË +) { + +64 +$»sourû +-> +£tLoÿtÜ +( +$this +); + +66 + g$this +-> + g_»sourûs +[ +$Çme +] = +$»sourû +; + +69 + g£lf +:: +$_š¡ªûs +[] = +$this +; + +77 +public +  +funùiÚ + +š¡ªû +() + +79 ià( +em±y +( +£lf +:: +$_š¡ªûs +)) { + +80 +$obj + = +Ãw + +Doùrše_LoÿtÜ +(); + +82  +cu¼’t +( +£lf +:: +$_š¡ªûs +); + +90 +public + +funùiÚ + +£tCÏssP»fix +( +$´efix +) + +92 + g$this +-> + g_þassP»fix + = +$´efix +; + +100 +public + +funùiÚ + +g‘CÏssP»fix +() + +102  + g$this +-> + g_þassP»fix +; + +111 +public + +funùiÚ + +cڏšs +( +$Çme +) + +113  +is£t +( +$this +-> +_»sourûs +[ +$Çme +]); + +124 +public + +funùiÚ + +bšd +( +$Çme +, +$v®ue +) + +126 + g$this +-> + g_»sourûs +[ +$Çme +] = +$v®ue +; + +128  + g$this +; + +139 +public + +funùiÚ + +loÿ‹ +( +$Çme +) + +141 ià( +is£t +( +$this +-> +_»sourûs +[ +$Çme +])) { + +142  + g$this +-> + g_»sourûs +[ +$Çme +]; + +144 + g$þassName + = +$Çme +; + +146 iàÐ! +þass_exi¡s +( +$þassName +)) { + +148 + g$Çme + = +ex¶ode +('.', +$Çme +); + +149 + g$Çme + = +¬¿y_m­ +('¡¹Þow”', +$Çme +); + +150 + g$Çme + = +¬¿y_m­ +('ucfœ¡', +$Çme +); + +151 + g$Çme + = +im¶ode +('_', +$Çme +); + +153 + g$þassName + = +$this +-> +_þassP»fix + . +$Çme +; + +155 iàÐ! +þass_exi¡s +( +$þassName +)) { + +156 +throw + +Ãw + +Doùrše_LoÿtÜ_Exû±iÚ +("Couldn'ˆloÿ‹„esourû " . +$þassName +); + +160 + g$this +-> + g_»sourûs +[ +$Çme +] = +Ãw + +$þassName +(); + +162 ià( + g$this +-> + g_»sourûs +[ +$Çme +] +š¡ªûof + + gDoùrše_LoÿtÜ_InjeùabË +) { + +163 + g$this +-> + g_»sourûs +[ +$Çme +]-> +£tLoÿtÜ +( +$this +); + +166  + g$this +-> + g_»sourûs +[ +$Çme +]; + +169 +throw + +Ãw + +Doùrše_LoÿtÜ_Exû±iÚ +("Couldn'ˆloÿ‹„esourû " . +$Çme +); + +180 +public + +funùiÚ + +couÁ +() + +182  +couÁ +( +$this +-> +_»sourûs +); + +193 +public + +funùiÚ + +g‘I‹¿tÜ +() + +195  +Ãw + +A¼ayI‹¿tÜ +( +$this +-> +_»sourûs +); + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Locator/Exception.php + +1 +_loÿtÜ + = +$loÿtÜ +; + +63  +$this +; + +75 +public + +funùiÚ + + $g‘LoÿtÜ +() + +77 iàÐ! + `is£t +( +$this +-> +_loÿtÜ +)) { + +78 +$this +-> +_loÿtÜ + = +Doùrše_LoÿtÜ +:: + `š¡ªû +(); + +81  +$this +-> +_loÿtÜ +; + +82 + } +} + +96 +public + +funùiÚ + + $loÿ‹ +( +$Çme +) + +98 ià( + `is£t +( +$this +-> +_»sourûs +[ +$Çme +])) { + +99 ià( + `is_objeù +( +$this +-> +_»sourûs +[ +$Çme +])) { + +100  +$this +-> +_»sourûs +[ +$Çme +]; + +103 +$cÚü‘eIm¶ + = +$this +-> +_»sourûs +[ +$Çme +]; + +105  +$this +-> + `g‘LoÿtÜ +()-> + `loÿ‹ +( +$cÚü‘eIm¶ +); + +108  +$this +-> + `g‘LoÿtÜ +()-> + `loÿ‹ +( +$Çme +); + +110 + } +} + +120 +public + +funùiÚ + + $bšd +( +$Çme +, +$»sourû +) + +122 +$this +-> +_»sourûs +[ +$Çme +] = +$»sourû +; + +124  +$this +; + +125 + } +} + +134 +public +  +funùiÚ + + $š™NuÎObjeù +( +Doùrše_NuÎ + +$nuÎ +) + +136 +£lf +:: +$_nuÎ + = +$nuÎ +; + +137 + } +} + +145 +public +  +funùiÚ + + $g‘NuÎObjeù +() + +147  +£lf +:: +$_nuÎ +; + +148 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Locking/Exception.php + +1 +cÚn + = +$cÚn +; + +63 ià( +$this +-> +cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_EXPORT +è& Doùrše_CÜe:: +EXPORT_TABLES +) { + +64 +$cÞumns + = + `¬¿y +(); + +65 +$cÞumns +['objeù_ty³'] = + `¬¿y +('type' => 'string', + +67 'nÙnuÎ' => +Œue +, + +68 '´im¬y' => +Œue +); + +70 +$cÞumns +['objeù_key'] = + `¬¿y +('type' => 'string', + +72 'nÙnuÎ' => +Œue +, + +73 '´im¬y' => +Œue +); + +75 +$cÞumns +['u£r_id’t'] = + `¬¿y +('type' => 'string', + +77 'nÙnuÎ' => +Œue +); + +79 +$cÞumns +['time¡amp_obšed'] = + `¬¿y +('type' => 'integer', + +81 'nÙnuÎ' => +Œue +); + +83 +$ÝtiÚs + = + `¬¿y +('primary' =>‡rray('object_type', 'object_key')); + +84 +Œy + { + +85 +$this +-> +cÚn +-> +expÜt +-> + `ü—‹TabË +($this-> +_lockTabË +, +$cÞumns +, +$ÝtiÚs +); + +86 } + `ÿtch +( +Exû±iÚ + +$e +) { + +101 +public + +funùiÚ + + $g‘Lock +( +Doùrše_RecÜd + +$»cÜd +, +$u£rId’t +) + +103 +$objeùTy³ + = +$»cÜd +-> + `g‘TabË +()-> + `g‘CompڒtName +(); + +104 +$key + = +$»cÜd +-> + `g‘TabË +()-> + `g‘Id’tif›r +(); + +106 +$gÙLock + = +çl£ +; + +107 +$time + = + `time +(); + +109 ià( + `is_¬¿y +( +$key +)) { + +111 +$key + = + `im¶ode +('|', $key); + +114 +Œy + { + +115 +$dbh + = +$this +-> +cÚn +-> + `g‘Dbh +(); + +116 +$this +-> +cÚn +-> + `begšT¿n§ùiÚ +(); + +118 +$¡mt + = +$dbh +-> + `´•¬e +('INSERT INTO ' . +$this +-> +_lockTabË + + +122 +$¡mt +-> + `bšdP¬am +(':objeù_ty³', +$objeùTy³ +); + +123 +$¡mt +-> + `bšdP¬am +(':objeù_key', +$key +); + +124 +$¡mt +-> + `bšdP¬am +(':u£r_id’t', +$u£rId’t +); + +125 +$¡mt +-> + `bšdP¬am +(':ts_obšed', +$time +); + +127 +Œy + { + +128 +$¡mt +-> + `execu‹ +(); + +129 +$gÙLock + = +Œue +; + +132 } + `ÿtch +( +Exû±iÚ + +$pkviÞ©iÚ +) { + +136 iàÐ! +$gÙLock +) { + +137 +$lockšgU£rId’t + = +$this +-> + `_g‘LockšgU£rId’t +( +$objeùTy³ +, +$key +); + +138 ià( +$lockšgU£rId’t + !=ð +nuÎ + && $lockšgU£rId’ˆ=ð +$u£rId’t +) { + +139 +$gÙLock + = +Œue +; + +141 +$¡mt + = +$dbh +-> + `´•¬e +('UPDATE ' . +$this +-> +_lockTabË + + +146 +$¡mt +-> + `bšdP¬am +(':ts', +$time +); + +147 +$¡mt +-> + `bšdP¬am +(':objeù_ty³', +$objeùTy³ +); + +148 +$¡mt +-> + `bšdP¬am +(':objeù_key', +$key +); + +149 +$¡mt +-> + `bšdP¬am +(':u£r_id’t', +$lockšgU£rId’t +); + +150 +$¡mt +-> + `execu‹ +(); + +153 +$this +-> +cÚn +-> + `comm™ +(); + +154 } + `ÿtch + ( +Exû±iÚ + +$pdÛ +) { + +155 +$this +-> +cÚn +-> + `rÞlback +(); + +156 +throw + +Ãw + + `Doùrše_Lockšg_Exû±iÚ +( +$pdÛ +-> + `g‘Mes§ge +()); + +159  +$gÙLock +; + +160 + } +} + +170 +public + +funùiÚ + + $»Ëa£Lock +( +Doùrše_RecÜd + +$»cÜd +, +$u£rId’t +) + +172 +$objeùTy³ + = +$»cÜd +-> + `g‘TabË +()-> + `g‘CompڒtName +(); + +173 +$key + = +$»cÜd +-> + `g‘TabË +()-> + `g‘Id’tif›r +(); + +175 ià( + `is_¬¿y +( +$key +)) { + +177 +$key + = + `im¶ode +('|', $key); + +180 +Œy + { + +181 +$dbh + = +$this +-> +cÚn +-> + `g‘Dbh +(); + +182 +$¡mt + = +$dbh +-> + `´•¬e +("DELETE FROM $this->_lockTable WHERE + +183 +objeù_ty³ + = :objeù_ty³ +AND + + +184 +objeù_key + = :objeù_key +AND + + +185 +u£r_id’t + = :user_ident"); + +186 +$¡mt +-> + `bšdP¬am +(':objeù_ty³', +$objeùTy³ +); + +187 +$¡mt +-> + `bšdP¬am +(':objeù_key', +$key +); + +188 +$¡mt +-> + `bšdP¬am +(':u£r_id’t', +$u£rId’t +); + +189 +$¡mt +-> + `execu‹ +(); + +191 +$couÁ + = +$¡mt +-> + `rowCouÁ +(); + +193  ( +$couÁ + > 0); + +194 } + `ÿtch + ( +PDOExû±iÚ + +$pdÛ +) { + +195 +throw + +Ãw + + `Doùrše_Lockšg_Exû±iÚ +( +$pdÛ +-> + `g‘Mes§ge +()); + +197 + } +} + +207 +´iv©e + +funùiÚ + + $_g‘LockšgU£rId’t +( +$objeùTy³ +, +$key +) + +209 ià( + `is_¬¿y +( +$key +)) { + +211 +$key + = + `im¶ode +('|', $key); + +214 +Œy + { + +215 +$dbh + = +$this +-> +cÚn +-> + `g‘Dbh +(); + +216 +$¡mt + = +$dbh +-> + `´•¬e +('SELECT u£r_id’ˆFROM ' . +$this +-> +_lockTabË + + +218 +$¡mt +-> + `bšdP¬am +(':objeù_ty³', +$objeùTy³ +); + +219 +$¡mt +-> + `bšdP¬am +(':objeù_key', +$key +); + +220 +$sucûss + = +$¡mt +-> + `execu‹ +(); + +222 iàÐ! +$sucûss +) { + +223 +throw + +Ãw + + `Doùrše_Lockšg_Exû±iÚ +("Failedo determine†ocking user"); + +226 +$u£rId’t + = +$¡mt +-> + `ãtchCÞumn +(); + +227 } + `ÿtch + ( +PDOExû±iÚ + +$pdÛ +) { + +228 +throw + +Ãw + + `Doùrše_Lockšg_Exû±iÚ +( +$pdÛ +-> + `g‘Mes§ge +()); + +231  +$u£rId’t +; + +232 + } +} + +241 +public + +funùiÚ + + $g‘LockOwÃr +( +$lockedRecÜd +) + +243 +$objeùTy³ + = +$lockedRecÜd +-> + `g‘TabË +()-> + `g‘CompڒtName +(); + +244 +$key + = +$lockedRecÜd +-> + `g‘TabË +()-> + `g‘Id’tif›r +(); + +245  +$this +-> + `_g‘LockšgU£rId’t +( +$objeùTy³ +, +$key +); + +246 + } +} + +259 +public + +funùiÚ + + $»Ëa£AgedLocks +( +$age + = 900, +$objeùTy³ + = +nuÎ +, +$u£rId’t + =‚ull) + +261 +$age + = + `time +() - $age; + +263 +Œy + { + +264 +$dbh + = +$this +-> +cÚn +-> + `g‘Dbh +(); + +265 +$¡mt + = +$dbh +-> + `´•¬e +('DELETE FROM ' . +$this +-> +_lockTabË + . ' WHEREimestamp_obtained < :age'); + +266 +$¡mt +-> + `bšdP¬am +(':age', +$age +); + +267 +$qu”y + = 'DELETE FROM ' . +$this +-> +_lockTabË + . ' WHEREimestamp_obtained < :age'; + +268 ià( +$objeùTy³ +) { + +269 +$qu”y + .= ' AND object_type = :object_type'; + +271 ià( +$u£rId’t +) { + +272 +$qu”y + .= ' AND user_ident = :user_ident'; + +274 +$¡mt + = +$dbh +-> + `´•¬e +( +$qu”y +); + +275 +$¡mt +-> + `bšdP¬am +(':age', +$age +); + +276 ià( +$objeùTy³ +) { + +277 +$¡mt +-> + `bšdP¬am +(':objeù_ty³', +$objeùTy³ +); + +279 ià( +$u£rId’t +) { + +280 +$¡mt +-> + `bšdP¬am +(':u£r_id’t', +$u£rId’t +); + +282 +$¡mt +-> + `execu‹ +(); + +284 +$couÁ + = +$¡mt +-> + `rowCouÁ +(); + +286  +$couÁ +; + +287 } + `ÿtch + ( +PDOExû±iÚ + +$pdÛ +) { + +288 +throw + +Ãw + + `Doùrše_Lockšg_Exû±iÚ +( +$pdÛ +-> + `g‘Mes§ge +()); + +290 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Manager.php + +1 'Doctrine_Hydrator_ArrayDriver', + +72 +Doùrše_CÜe +:: +HYDRATE_RECORD + => 'Doctrine_Hydrator_RecordDriver', + +73 +Doùrše_CÜe +:: +HYDRATE_NONE + => 'Doctrine_Hydrator_NoneDriver', + +74 +Doùrše_CÜe +:: +HYDRATE_SCALAR + => 'Doctrine_Hydrator_ScalarDriver', + +75 +Doùrše_CÜe +:: +HYDRATE_SINGLE_SCALAR + => 'Doctrine_Hydrator_SingleScalarDriver', + +76 +Doùrše_CÜe +:: +HYDRATE_ON_DEMAND + => 'Doctrine_Hydrator_RecordDriver', + +77 +Doùrše_CÜe +:: +HYDRATE_ARRAY_HIERARCHY + => 'Doctrine_Hydrator_ArrayHierarchyDriver', + +78 +Doùrše_CÜe +:: +HYDRATE_RECORD_HIERARCHY + => 'Doctrine_Hydrator_RecordHierarchyDriver', + +79 +Doùrše_CÜe +:: +HYDRATE_ARRAY_SHALLOW + => 'Doctrine_Hydrator_ArrayShallowDriver', + +82 +´Ùeùed + + g$_cÚÃùiÚDriv”s + = +¬¿y +( + +97 +´Ùeùed + + g$_ex‹nsiÚs + = +¬¿y +(); + +102 +´Ùeùed + + g$_lßdedV®id©ÜsFromDisk + = +çl£ +; + +104 +´Ùeùed +  + g$_š¡ªû +; + +106 +´iv©e + + g$_š™Ÿlized + = +çl£ +; + +113 +´iv©e + +funùiÚ + +__cÚ¡ruù +() + +115 + g$nuÎ + = +Ãw + +Doùrše_NuÎ +; + +116 + gDoùrše_LoÿtÜ_InjeùabË +:: +š™NuÎObjeù +( +$nuÎ +); + +117 + gDoùrše_RecÜd_I‹¿tÜ +:: +š™NuÎObjeù +( +$nuÎ +); + +129 +public + +funùiÚ + +£tDeçuÉA‰ribu‹s +() + +131 iàÐ! + g$this +-> + g_š™Ÿlized +) { + +132 + g$this +-> + g_š™Ÿlized + = +Œue +; + +133 + g$©Œibu‹s + = +¬¿y +( + +134 +Doùrše_CÜe +:: +ATTR_CACHE + => +nuÎ +, + +135 +Doùrše_CÜe +:: +ATTR_RESULT_CACHE + => +nuÎ +, + +136 +Doùrše_CÜe +:: +ATTR_QUERY_CACHE + => +nuÎ +, + +137 +Doùrše_CÜe +:: +ATTR_LOAD_REFERENCES + => +Œue +, + +138 +Doùrše_CÜe +:: +ATTR_LISTENER + => +Ãw + +Doùrše_Ev’tLi¡’” +(), + +139 +Doùrše_CÜe +:: +ATTR_RECORD_LISTENER + => +Ãw + +Doùrše_RecÜd_Li¡’” +(), + +140 +Doùrše_CÜe +:: +ATTR_THROW_EXCEPTIONS + => +Œue +, + +141 +Doùrše_CÜe +:: +ATTR_VALIDATE + => Doùrše_CÜe:: +VALIDATE_NONE +, + +142 +Doùrše_CÜe +:: +ATTR_QUERY_LIMIT + => Doùrše_CÜe:: +LIMIT_RECORDS +, + +143 +Doùrše_CÜe +:: +ATTR_IDXNAME_FORMAT + => "%s_idx", + +144 +Doùrše_CÜe +:: +ATTR_SEQNAME_FORMAT + => "%s_seq", + +145 +Doùrše_CÜe +:: +ATTR_TBLNAME_FORMAT + => "%s", + +146 +Doùrše_CÜe +:: +ATTR_FKNAME_FORMAT + => "%s", + +147 +Doùrše_CÜe +:: +ATTR_QUOTE_IDENTIFIER + => +çl£ +, + +148 +Doùrše_CÜe +:: +ATTR_SEQCOL_NAME + => 'id', + +149 +Doùrše_CÜe +:: +ATTR_PORTABILITY + => Doùrše_CÜe:: +PORTABILITY_NONE +, + +150 +Doùrše_CÜe +:: +ATTR_EXPORT + => Doùrše_CÜe:: +EXPORT_ALL +, + +151 +Doùrše_CÜe +:: +ATTR_DECIMAL_PLACES + => 2, + +152 +Doùrše_CÜe +:: +ATTR_DEFAULT_PARAM_NAMESPACE + => 'doctrine', + +153 +Doùrše_CÜe +:: +ATTR_AUTOLOAD_TABLE_CLASSES + => +çl£ +, + +154 +Doùrše_CÜe +:: +ATTR_USE_DQL_CALLBACKS + => +çl£ +, + +155 +Doùrše_CÜe +:: +ATTR_AUTO_ACCESSOR_OVERRIDE + => +çl£ +, + +156 +Doùrše_CÜe +:: +ATTR_AUTO_FREE_QUERY_OBJECTS + => +çl£ +, + +157 +Doùrše_CÜe +:: +ATTR_DEFAULT_IDENTIFIER_OPTIONS + => +¬¿y +(), + +158 +Doùrše_CÜe +:: +ATTR_DEFAULT_COLUMN_OPTIONS + => +¬¿y +(), + +159 +Doùrše_CÜe +:: +ATTR_HYDRATE_OVERWRITE + => +Œue +, + +160 +Doùrše_CÜe +:: +ATTR_QUERY_CLASS + => 'Doctrine_Query', + +161 +Doùrše_CÜe +:: +ATTR_COLLECTION_CLASS + => 'Doctrine_Collection', + +162 +Doùrše_CÜe +:: +ATTR_TABLE_CLASS + => 'Doctrine_Table', + +163 +Doùrše_CÜe +:: +ATTR_CASCADE_SAVES + => +Œue +, + +164 +Doùrše_CÜe +:: +ATTR_TABLE_CLASS_FORMAT + => '%sTable' + +166 +fܗch + ( +$©Œibu‹s + +as + +$©Œibu‹ + => +$v®ue +) { + +167 +$Þd + = +$this +-> +g‘A‰ribu‹ +( +$©Œibu‹ +); + +168 ià( + g$Þd + ==ð +nuÎ +) { + +169 +$this +-> +£tA‰ribu‹ +( +$©Œibu‹ +, +$v®ue +); + +172  + gŒue +; + +174  + gçl£ +; + +183 +public +  +funùiÚ + +g‘In¡ªû +() + +185 iàÐ! +is£t +( +£lf +:: +$_š¡ªû +)) { + +186 +£lf +:: +$_š¡ªû + = +Ãw + self(); + +188  + g£lf +:: +$_š¡ªû +; + +196 +public +  +funùiÚ + +»£tIn¡ªû +() + +198 ià( + g£lf +:: +$_š¡ªû +) { + +199 +£lf +:: +$_š¡ªû +-> +»£t +(); + +200 + g£lf +:: +$_š¡ªû + = +nuÎ +; + +209 +public + +funùiÚ + +»£t +() + +211 +fܗch + ( +$this +-> +_cÚÃùiÚs + +as + +$cÚn +) { + +212 + g$cÚn +-> +þo£ +(); + +214 + g$this +-> + g_cÚÃùiÚs + = +¬¿y +(); + +215 + g$this +-> + g_qu”yRegi¡ry + = +nuÎ +; + +216 + g$this +-> + g_ex‹nsiÚs + = +¬¿y +(); + +217 + g$this +-> + g_bound + = +¬¿y +(); + +218 + g$this +-> + g_v®id©Üs + = +¬¿y +(); + +219 + g$this +-> + g_lßdedV®id©ÜsFromDisk + = +çl£ +; + +220 + g$this +-> + g_šdex + = 0; + +221 + g$this +-> + g_cu¼Index + = 0; + +222 + g$this +-> + g_š™Ÿlized + = +çl£ +; + +230 +public + +funùiÚ + +g‘Qu”yRegi¡ry +() + +232 iàÐ! +is£t +( +$this +-> +_qu”yRegi¡ry +)) { + +233 + g$this +-> + g_qu”yRegi¡ry + = +Ãw + +Doùrše_Qu”y_Regi¡ry +(); + +235  + g$this +-> + g_qu”yRegi¡ry +; + +243 +public + +funùiÚ + +£tQu”yRegi¡ry +( +Doùrše_Qu”y_Regi¡ry + +$»gi¡ry +) + +245 + g$this +-> + g_qu”yRegi¡ry + = +$»gi¡ry +; + +247  + g$this +; + +262 +public +  +funùiÚ + +cÚÃùiÚ +( +$ad­‹r + = +nuÎ +, +$Çme + =‚ull) + +264 ià( +$ad­‹r + =ð +nuÎ +) { + +265  +Doùrše_Mªag” +:: +g‘In¡ªû +()-> +g‘Cu¼’tCÚÃùiÚ +(); + +267  + gDoùrše_Mªag” +:: +g‘In¡ªû +()-> +ݒCÚÃùiÚ +( +$ad­‹r +, +$Çme +); + +280 +public + +funùiÚ + +ݒCÚÃùiÚ +( +$ad­‹r +, +$Çme + = +nuÎ +, +$£tCu¼’t + = +Œue +) + +282 ià( +is_objeù +( +$ad­‹r +)) { + +283 iàÐ! ( +$ad­‹r + +š¡ªûof + +PDO +è&& ! +š_¬¿y +('Doùrše_Ad­‹r_IÁ”çû', +þass_im¶em’ts +($adapter))) { + +284 +throw + +Ãw + +Doùrše_Mªag”_Exû±iÚ +("First‡rgument should be‡n instance of PDO or implement Doctrine_Adapter_Interface"); + +287 + g$driv”Name + = +$ad­‹r +-> +g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_DRIVER_NAME +); + +288 } ià( +is_¬¿y +( +$ad­‹r +)) { + +289 iàÐ! +is£t +( +$ad­‹r +[0])) { + +290 +throw + +Ãw + +Doùrše_Mªag”_Exû±iÚ +('Empty data source‚ame given.'); + +292 + g$e + = +ex¶ode +(':', +$ad­‹r +[0]); + +294 ià( + g$e +[0] == 'uri') { + +295 +$e +[0] = 'odbc'; + +298 + g$·¹s +['d¢'] = +$ad­‹r +[0]; + +299 + g$·¹s +['scheme'] = +$e +[0]; + +300 + g$·¹s +['u£r'] = ( +is£t +( +$ad­‹r +[1])è? $ad­‹r[1] : +nuÎ +; + +301 + g$·¹s +['·ss'] = ( +is£t +( +$ad­‹r +[2])è? $ad­‹r[2] : +nuÎ +; + +302 + g$driv”Name + = +$e +[0]; + +303 + g$ad­‹r + = +$·¹s +; + +305 + g$·¹s + = +$this +-> +·r£D¢ +( +$ad­‹r +); + +306 + g$driv”Name + = +$·¹s +['scheme']; + +307 + g$ad­‹r + = +$·¹s +; + +311 ià( +is_¬¿y +( +$ad­‹r +)) { + +312 +fܗch + ( +$ad­‹r + +as + +$key + => +$v®ue +) { + +313 +$ad­‹r +[ +$key +] = +$v®ue + ? +u¾decode +($v®ue): +nuÎ +; + +318 + g$this +-> +£tDeçuÉA‰ribu‹s +(); + +320 ià( + g$Çme + !=ð +nuÎ +) { + +321 +$Çme + = ( +¡ršg +) $name; + +322 ià( +is£t +( +$this +-> +_cÚÃùiÚs +[ +$Çme +])) { + +323 ià( + g$£tCu¼’t +) { + +324 + g$this +-> + g_cu¼Index + = +$Çme +; + +326  + g$this +-> + g_cÚÃùiÚs +[ +$Çme +]; + +329 + g$Çme + = +$this +-> +_šdex +; + +330 + g$this +-> + g_šdex +++; + +333 iàÐ! +is£t +( +$this +-> +_cÚÃùiÚDriv”s +[ +$driv”Name +])) { + +334 +throw + +Ãw + +Doùrše_Mªag”_Exû±iÚ +('UnknowÀdriv” ' . +$driv”Name +); + +337 + g$þassName + = +$this +-> +_cÚÃùiÚDriv”s +[ +$driv”Name +]; + +338 + g$cÚn + = +Ãw + +$þassName +( +$this +, +$ad­‹r +); + +339 + g$cÚn +-> +£tName +( +$Çme +); + +341 + g$this +-> + g_cÚÃùiÚs +[ +$Çme +] = +$cÚn +; + +343 ià( + g$£tCu¼’t +) { + +344 + g$this +-> + g_cu¼Index + = +$Çme +; + +346  + g$this +-> + g_cÚÃùiÚs +[ +$Çme +]; + +356 +public + +funùiÚ + +·r£PdoD¢ +( +$d¢ +) + +358 + g$·¹s + = +¬¿y +(); + +360 + g$Çmes + = +¬¿y +('dsn', 'scheme', 'host', 'port', 'user', 'pass', 'path', 'query', 'fragment', 'unix_socket'); + +362 +fܗch + ( +$Çmes + +as + +$Çme +) { + +363 iàÐ! +is£t +( +$·¹s +[ +$Çme +])) { + +364 + g$·¹s +[ +$Çme +] = +nuÎ +; + +368 + g$e + = +ex¶ode +(':', +$d¢ +); + +369 + g$·¹s +['scheme'] = +$e +[0]; + +370 + g$·¹s +['d¢'] = +$d¢ +; + +372 + g$e + = +ex¶ode +(';', +$e +[1]); + +373 +fܗch + ( +$e + +as + +$¡ršg +) { + +374 ià( + g$¡ršg +) { + +375 + g$e2 + = +ex¶ode +('=', +$¡ršg +); + +377 ià( +is£t +( +$e2 +[0]) && isset($e2[1])) { + +378 ià( +couÁ +( +$e2 +) > 2) + +380 + g$key + = +$e2 +[0]; + +381 +un£t +( +$e2 +[0]); + +382 + g$v®ue + = +im¶ode +('=', +$e2 +); + +384 +li¡ +( +$key +, +$v®ue +èð +$e2 +; + +386 + g$·¹s +[ +$key +] = +$v®ue +; + +391  + g$·¹s +; + +401 +´Ùeùed + +funùiÚ + +_buždD¢P¬tsA¼ay +( +$d¢ +) + +404 + g$d¢ + = +¡r_»¶aû +("////", "/", +$d¢ +); + +405 + g$d¢ + = +¡r_»¶aû +("\\", "/", +$d¢ +); + +406 + g$d¢ + = +´eg_»¶aû +("/\/\/\/(.*):\//", "//$1:/", +$d¢ +); + +409 + g$·¹s + = @ +·r£_u¾ +( +$d¢ +); + +411 + g$Çmes + = +¬¿y +('dsn', 'scheme', 'host', 'port', 'user', 'pass', 'path', 'query', 'fragment'); + +413 +fܗch + ( +$Çmes + +as + +$Çme +) { + +414 iàÐ! +is£t +( +$·¹s +[ +$Çme +])) { + +415 + g$·¹s +[ +$Çme +] = +nuÎ +; + +419 ià( +couÁ +( +$·¹s +è=ð0 || ! +is£t +($parts['scheme'])) { + +420 +throw + +Ãw + +Doùrše_Mªag”_Exû±iÚ +('Could‚ot…arse dsn'); + +423  + g$·¹s +; + +433 +public + +funùiÚ + +·r£D¢ +( +$d¢ +) + +435 + g$·¹s + = +$this +-> +_buždD¢P¬tsA¼ay +( +$d¢ +); + +437  + g$·¹s +['scheme']) { + +441 ià( +is£t +( +$·¹s +['host']) && $parts['host'] == ':memory') { + +442 +$·¹s +['database'] = ':memory:'; + +443 + g$·¹s +['dsn'] = 'sqlite::memory:'; + +446 ià( +is£t +( +$·¹s +['host'])) { + +447 + g$·¹s +['·th'] = +$·¹s +['host'] . ":" . $parts["path"]; + +448 + g$·¹s +['ho¡'] = +nuÎ +; + +450 + g$·¹s +['d©aba£'] = +$·¹s +['path']; + +451 + g$·¹s +['d¢'] = +$·¹s +['scheme'] . ':' . $parts['path']; + +458 iàÐ! +is£t +( +$·¹s +['path']) || $parts['path'] == '/') { + +459 +throw + +Ãw + +Doùrše_Mªag”_Exû±iÚ +('No database‡vailable in data source‚ame'); + +461 ià( +is£t +( +$·¹s +['path'])) { + +462 + g$·¹s +['d©aba£'] = +sub¡r +( +$·¹s +['path'], 1); + +464 iàÐ! +is£t +( +$·¹s +['host'])) { + +465 +throw + +Ãw + +Doùrše_Mªag”_Exû±iÚ +('No hostname set in data source‚ame'); + +468 + g$·¹s +['d¢'] = +$·¹s +['scheme'] . ':host=' + +469 . +$·¹s +['ho¡'] . ( +is£t +($·¹s['pÜt']è? ':' . $·¹s['pÜt']: +nuÎ +) . ';dbname=' + +470 . +$·¹s +['database']; + +481 iàÐ! +is£t +( +$·¹s +['path']) || $parts['path'] == '/') { + +482 +throw + +Ãw + +Doùrše_Mªag”_Exû±iÚ +('No database‡vailable in data source‚ame'); + +484 ià( +is£t +( +$·¹s +['path'])) { + +485 + g$·¹s +['d©aba£'] = +sub¡r +( +$·¹s +['path'], 1); + +487 iàÐ! +is£t +( +$·¹s +['host'])) { + +488 +throw + +Ãw + +Doùrše_Mªag”_Exû±iÚ +('No hostname set in data source‚ame'); + +491 + g$·¹s +['d¢'] = +$·¹s +['scheme'] . ':host=' + +492 . +$·¹s +['ho¡'] . ( +is£t +($·¹s['pÜt']è? ';pÜt=' . $·¹s['pÜt']: +nuÎ +) . ';dbname=' + +493 . +$·¹s +['database']; + +497 +$·¹s +['d¢'] = +$d¢ +; + +500  + g$·¹s +; + +510 +public + +funùiÚ + +g‘CÚÃùiÚ +( +$Çme +) + +512 iàÐ! +is£t +( +$this +-> +_cÚÃùiÚs +[ +$Çme +])) { + +513 +throw + +Ãw + +Doùrše_Mªag”_Exû±iÚ +('UnknowÀcÚÃùiÚ: ' . +$Çme +); + +516  + g$this +-> + g_cÚÃùiÚs +[ +$Çme +]; + +525 +public + +funùiÚ + +g‘CÚÃùiÚName +( +Doùrše_CÚÃùiÚ + +$cÚn +) + +527  +¬¿y_£¬ch +( +$cÚn +, +$this +-> +_cÚÃùiÚs +, +Œue +); + +539 +public + +funùiÚ + +bšdCompڒt +( +$compڒtName +, +$cÚÃùiÚName +) + +541 + g$this +-> + g_bound +[ +$compڒtName +] = +$cÚÃùiÚName +; + +550 +public + +funùiÚ + +g‘CÚÃùiÚFÜCompڒt +( +$compڒtName +) + +552 + gDoùrše_CÜe +:: +mod–sAutÞßd +( +$compڒtName +); + +554 ià( +is£t +( +$this +-> +_bound +[ +$compڒtName +])) { + +555  + g$this +-> +g‘CÚÃùiÚ +( +$this +-> +_bound +[ +$compڒtName +]); + +558  + g$this +-> +g‘Cu¼’tCÚÃùiÚ +(); + +567 +public + +funùiÚ + +hasCÚÃùiÚFÜCompڒt +( +$compڒtName + = +nuÎ +) + +569  +is£t +( +$this +-> +_bound +[ +$compڒtName +]); + +578 +public + +funùiÚ + +þo£CÚÃùiÚ +( +Doùrše_CÚÃùiÚ + +$cÚÃùiÚ +) + +580 + g$cÚÃùiÚ +-> +þo£ +(); + +582 + g$key + = +¬¿y_£¬ch +( +$cÚÃùiÚ +, +$this +-> +_cÚÃùiÚs +, +Œue +); + +584 ià( + g$key + !=ð +çl£ +) { + +585 +un£t +( +$this +-> +_cÚÃùiÚs +[ +$key +]); + +587 ià( + g$key + ==ð +$this +-> +_cu¼Index +) { + +588 +$key + = +key +( +$this +-> +_cÚÃùiÚs +); + +589 + g$this +-> + g_cu¼Index + = ( +$key + !=ð +nuÎ +) ? $key : 0; + +593 +un£t +( +$cÚÃùiÚ +); + +601 +public + +funùiÚ + +g‘CÚÃùiÚs +() + +603  + g$this +-> + g_cÚÃùiÚs +; + +613 +public + +funùiÚ + +£tCu¼’tCÚÃùiÚ +( +$key +) + +615 + g$key + = ( +¡ršg +è +$key +; + +616 iàÐ! +is£t +( +$this +-> +_cÚÃùiÚs +[ +$key +])) { + +617 +throw + +Ãw + +Doùrše_Mªag”_Exû±iÚ +("Connection key '$key' does‚otƒxist."); + +619 + g$this +-> + g_cu¼Index + = +$key +; + +628 +public + +funùiÚ + +cڏšs +( +$key +) + +630  +is£t +( +$this +-> +_cÚÃùiÚs +[ +$key +]); + +638 +public + +funùiÚ + +couÁ +() + +640  +couÁ +( +$this +-> +_cÚÃùiÚs +); + +648 +public + +funùiÚ + +g‘I‹¿tÜ +() + +650  +Ãw + +A¼ayI‹¿tÜ +( +$this +-> +_cÚÃùiÚs +); + +659 +public + +funùiÚ + +g‘Cu¼’tCÚÃùiÚ +() + +661 + g$i + = +$this +-> +_cu¼Index +; + +662 iàÐ! +is£t +( +$this +-> +_cÚÃùiÚs +[ +$i +])) { + +663 +throw + +Ãw + +Doùrše_CÚÃùiÚ_Exû±iÚ +('There is‚o open connection'); + +665  + g$this +-> + g_cÚÃùiÚs +[ +$i +]; + +675 +public + +funùiÚ + +ü—‹D©aba£s +( +$¥ecif›dCÚÃùiÚs + = +¬¿y +()) + +677 iàÐ! +is_¬¿y +( +$¥ecif›dCÚÃùiÚs +)) { + +678 +$¥ecif›dCÚÃùiÚs + = ( +¬¿y +) $specifiedConnections; + +681 +fܗch + ( +$this + +as + +$Çme + => +$cÚÃùiÚ +) { + +682 iàÐ! +em±y +( +$¥ecif›dCÚÃùiÚs +è&& ! +š_¬¿y +( +$Çme +, $specifiedConnections)) { + +686 + g$cÚÃùiÚ +-> +ü—‹D©aba£ +(); + +697 +public + +funùiÚ + +drÝD©aba£s +( +$¥ecif›dCÚÃùiÚs + = +¬¿y +()) + +699 iàÐ! +is_¬¿y +( +$¥ecif›dCÚÃùiÚs +)) { + +700 +$¥ecif›dCÚÃùiÚs + = ( +¬¿y +) $specifiedConnections; + +703 +fܗch + ( +$this + +as + +$Çme + => +$cÚÃùiÚ +) { + +704 iàÐ! +em±y +( +$¥ecif›dCÚÃùiÚs +è&& ! +š_¬¿y +( +$Çme +, $specifiedConnections)) { + +708 + g$cÚÃùiÚ +-> +drÝD©aba£ +(); + +717 +public + +funùiÚ + +__toSŒšg +() + +719 + g$r +[] = "
    ";
    +
    +720 
    +	g$r
    +[] = "Doctrine_Manager";
    +
    +721 
    +	g$r
    +[] = "CÚÃùiÚ : ".
    +couÁ
    +(
    +$this
    +->
    +_cÚÃùiÚs
    +);
    +
    +722 
    +	g$r
    +[] = "
    "; + +723  +im¶ode +("\n", +$r +); + +731 +public + +funùiÚ + +g‘V®id©Üs +() + +733 iàÐ! + g$this +-> + g_lßdedV®id©ÜsFromDisk +) { + +734 + g$this +-> + g_lßdedV®id©ÜsFromDisk + = +Œue +; + +736 + g$v®id©Üs + = +¬¿y +(); + +738 + g$dœ + = +Doùrše_CÜe +:: +g‘P©h +(è. +DIRECTORY_SEPARATOR + . 'Doctrine' . DIRECTORY_SEPARATOR . 'Validator'; + +740 + g$fžes + = +Ãw + +RecursiveI‹¿tÜI‹¿tÜ +Òew +RecursiveDœeùÜyI‹¿tÜ +( +$dœ +), RecursiveI‹¿tÜI‹¿tÜ:: +LEAVES_ONLY +); + +741 +fܗch + ( +$fžes + +as + +$fže +) { + +742 + g$e + = +ex¶ode +('.', +$fže +-> +g‘FžeName +()); + +744 ià( +’d +( +$e +) == 'php') { + +745 +$Çme + = +¡¹Þow” +( +$e +[0]); + +747 + g$v®id©Üs +[] = +$Çme +; + +751 + g$this +-> +»gi¡”V®id©Üs +( +$v®id©Üs +); + +754  + g$this +-> + g_v®id©Üs +; + +763 +public + +funùiÚ + +»gi¡”V®id©Üs +( +$v®id©Üs +) + +765 + g$v®id©Üs + = ( +¬¿y +è +$v®id©Üs +; + +766 +fܗch + ( +$v®id©Üs + +as + +$v®id©Ü +) { + +767 iàÐ! +š_¬¿y +( +$v®id©Ü +, +$this +-> +_v®id©Üs +)) { + +768 + g$this +-> + g_v®id©Üs +[] = +$v®id©Ü +; + +778 +public + +funùiÚ + +»gi¡”Hyd¿tÜ +( +$Çme +, +$þass +) + +780 + g$this +-> + g_hyd¿tÜs +[ +$Çme +] = +$þass +; + +788 +public + +funùiÚ + +g‘Hyd¿tÜs +() + +790  + g$this +-> + g_hyd¿tÜs +; + +798 +public + +funùiÚ + +»gi¡”CÚÃùiÚDriv” +( +$Çme +, +$þass +) + +800 + g$this +-> + g_cÚÃùiÚDriv”s +[ +$Çme +] = +$þass +; + +808 +public + +funùiÚ + +g‘CÚÃùiÚDriv”s +() + +810  + g$this +-> + g_cÚÃùiÚsDriv”s +; + +820 +public + +funùiÚ + +»gi¡”Ex‹nsiÚ +( +$Çme +, +$·th + = +nuÎ +) + +822 ià( +is_nuÎ +( +$·th +)) { + +823 +$·th + = +Doùrše_CÜe +:: +g‘Ex‹nsiÚsP©h +(è. '/' . +$Çme + . '/lib'; + +825 + g$this +-> + g_ex‹nsiÚs +[ +$Çme +] = +$·th +; + +833 +public + +funùiÚ + +g‘Ex‹nsiÚs +() + +835  + g$this +-> + g_ex‹nsiÚs +; + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Manager/Exception.php + +1 +_»æeùiÚCÏss + = +Ãw + + `ReæeùiÚCÏss +('Doctrine_Migration_Base'); + +61 ià( + `is_nuÎ +( +$cÚÃùiÚ +)) { + +62 +$this +-> +_cÚÃùiÚ + = +Doùrše_Mªag” +:: + `cÚÃùiÚ +(); + +64 ià( + `is_¡ršg +( +$cÚÃùiÚ +)) { + +65 +$this +-> +_cÚÃùiÚ + = +Doùrše_Mªag” +:: + `g‘In¡ªû +() + +66 -> + `g‘CÚÃùiÚ +( +$cÚÃùiÚ +); + +68 +$this +-> +_cÚÃùiÚ + = +$cÚÃùiÚ +; + +72 +$this +-> +_´oûss + = +Ãw + + `Doùrše_Mig¿tiÚ_Proûss +($this); + +74 ià( +$dœeùÜy + !ð +nuÎ +) { + +75 +$this +-> +_mig¿tiÚCÏs£sDœeùÜy + = +$dœeùÜy +; + +77 +$this +-> + `lßdMig¿tiÚCÏs£sFromDœeùÜy +(); + +81 +public + +funùiÚ + + $g‘CÚÃùiÚ +() + +83  +$this +-> +_cÚÃùiÚ +; + +84 + } +} + +86 +public + +funùiÚ + + $£tCÚÃùiÚ +( +Doùrše_CÚÃùiÚ + +$cÚn +) + +88 +$this +-> +_cÚÃùiÚ + = +$cÚn +; + +89 + } +} + +96 +public + +funùiÚ + + $g‘Mig¿tiÚCÏs£sDœeùÜy +() + +98  +$this +-> +_mig¿tiÚCÏs£sDœeùÜy +; + +99 + } +} + +106 +public + +funùiÚ + + $g‘TabËName +() + +108  +$this +-> +_mig¿tiÚTabËName +; + +109 + } +} + +117 +public + +funùiÚ + + $£tTabËName +( +$bËName +) + +119 +$this +-> +_mig¿tiÚTabËName + = $this-> +_cÚÃùiÚ + + +120 -> +fÜm©‹r +-> + `g‘TabËName +( +$bËName +); + +121 + } +} + +130 +public + +funùiÚ + + $lßdMig¿tiÚCÏs£sFromDœeùÜy +( +$dœeùÜy + = +nuÎ +) + +132 +$dœeùÜy + = $dœeùÜy ? $dœeùÜy: +$this +-> +_mig¿tiÚCÏs£sDœeùÜy +; + +134 +$þas£sToLßd + = + `¬¿y +(); + +135 +$þas£s + = + `g‘_deþ¬ed_þas£s +(); + +136 + `fܗch + (( +¬¿y +è +$dœeùÜy + +as + +$dœ +) { + +137 +$™ + = +Ãw + + `RecursiveI‹¿tÜI‹¿tÜ +Òew + `RecursiveDœeùÜyI‹¿tÜ +( +$dœ +), + +138 +RecursiveI‹¿tÜI‹¿tÜ +:: +LEAVES_ONLY +); + +140 ià( + `is£t +( +£lf +:: +$_mig¿tiÚCÏs£sFÜDœeùܛs +[ +$dœ +])) { + +141 + `fܗch + ( +£lf +:: +$_mig¿tiÚCÏs£sFÜDœeùܛs +[ +$dœ +] +as + +$num + => +$þassName +) { + +142 +$this +-> +_mig¿tiÚCÏs£s +[ +$num +] = +$þassName +; + +146 + `fܗch + ( +$™ + +as + +$fže +) { + +147 +$šfo + = + `·thšfo +( +$fže +-> + `g‘FžeName +()); + +148 ià( + `is£t +( +$šfo +['extension']) && $info['extension'] == 'php') { + +149 + `»quœe_Úû +( +$fže +-> + `g‘P©hName +()); + +151 +$¬¿y + = + `¬¿y_diff +( + `g‘_deþ¬ed_þas£s +(), +$þas£s +); + +152 +$þassName + = + `’d +( +$¬¿y +); + +154 ià( +$þassName +) { + +155 +$e + = + `ex¶ode +('_', +$fže +-> + `g‘FžeName +()); + +156 +$time¡amp + = +$e +[0]; + +158 +$þas£sToLßd +[ +$time¡amp +] = + `¬¿y +('þassName' => +$þassName +, '·th' => +$fže +-> + `g‘P©hName +()); + +163 + `ksÜt +( +$þas£sToLßd +, +SORT_NUMERIC +); + +164 + `fܗch + ( +$þas£sToLßd + +as + +$þass +) { + +165 +$this +-> + `lßdMig¿tiÚCÏss +( +$þass +['className'], $class['path']); + +167 + } +} + +177 +public + +funùiÚ + + $lßdMig¿tiÚCÏss +( +$Çme +, +$·th + = +nuÎ +) + +179 +$þass + = +Ãw + + `ReæeùiÚCÏss +( +$Çme +); + +181  +$þass +-> + `isSubþassOf +( +$this +-> +_»æeùiÚCÏss +)) { + +183 +$þass + = $þass-> + `g‘P¬’tCÏss +(); + +184 ià( +$þass + ==ð +çl£ +) { + +189 ià( +$þass + ==ð +çl£ +) { + +190  +çl£ +; + +193 ià( + `em±y +( +$this +-> +_mig¿tiÚCÏs£s +)) { + +194 +$þassMig¿tiÚNum + = 1; + +196 +$nums + = + `¬¿y_keys +( +$this +-> +_mig¿tiÚCÏs£s +); + +197 +$num + = + `’d +( +$nums +); + +198 +$þassMig¿tiÚNum + = +$num + + 1; + +201 +$this +-> +_mig¿tiÚCÏs£s +[ +$þassMig¿tiÚNum +] = +$Çme +; + +203 ià( +$·th +) { + +204 +$dœ + = + `dœÇme +( +$·th +); + +205 +£lf +:: +$_mig¿tiÚCÏs£sFÜDœeùܛs +[ +$dœ +][ +$þassMig¿tiÚNum +] = +$Çme +; + +207 + } +} + +215 +public + +funùiÚ + + $g‘Mig¿tiÚCÏs£s +() + +217  +$this +-> +_mig¿tiÚCÏs£s +; + +218 + } +} + +226 +public + +funùiÚ + + $£tCu¼’tV”siÚ +( +$numb” +) + +228 ià( +$this +-> + `hasMig¿‹d +()) { + +229 +$this +-> +_cÚÃùiÚ +-> + `exec +("UPDATE " . $this-> +_mig¿tiÚTabËName + . " SET version = $number"); + +231 +$this +-> +_cÚÃùiÚ +-> + `exec +("INSERT INTO " . $this-> +_mig¿tiÚTabËName + . " (version) VALUES ($number)"); + +233 + } +} + +240 +public + +funùiÚ + + $g‘Cu¼’tV”siÚ +() + +242 +$this +-> + `_ü—‹Mig¿tiÚTabË +(); + +244 +$»suÉ + = +$this +-> +_cÚÃùiÚ +-> + `ãtchCÞumn +("SELECT v”siÚ FROM " . $this-> +_mig¿tiÚTabËName +); + +246  + `is£t +( +$»suÉ +[0]) ? $result[0]:0; + +247 + } +} + +254 +public + +funùiÚ + + $hasMig¿‹d +() + +256 +$this +-> + `_ü—‹Mig¿tiÚTabË +(); + +258 +$»suÉ + = +$this +-> +_cÚÃùiÚ +-> + `ãtchCÞumn +("SELECT v”siÚ FROM " . $this-> +_mig¿tiÚTabËName +); + +260  + `is£t +( +$»suÉ +[0]è? +Œue +: +çl£ +; + +261 + } +} + +268 +public + +funùiÚ + + $g‘L©e¡V”siÚ +() + +270 +$v”siÚs + = + `¬¿y_keys +( +$this +-> +_mig¿tiÚCÏs£s +); + +271 + `rsÜt +( +$v”siÚs +); + +273  + `is£t +( +$v”siÚs +[0]) ? $versions[0]:0; + +274 + } +} + +282 +public + +funùiÚ + + $g‘NextV”siÚ +() + +284  +$this +-> + `g‘L©e¡V”siÚ +() + 1; + +285 + } +} + +292 +public + +funùiÚ + + $g‘NextMig¿tiÚCÏssV”siÚ +() + +294 ià( + `em±y +( +$this +-> +_mig¿tiÚCÏs£s +)) { + +297 +$nums + = + `¬¿y_keys +( +$this +-> +_mig¿tiÚCÏs£s +); + +298 +$num + = + `’d +( +$nums +) + 1; + +299  +$num +; + +301 + } +} + +313 +public + +funùiÚ + + $mig¿‹ +( +$to + = +nuÎ +, +$dryRun + = +çl£ +) + +315 +$this +-> + `þ—rE¼Üs +(); + +317 +$this +-> + `_ü—‹Mig¿tiÚTabË +(); + +319 +$this +-> +_cÚÃùiÚ +-> + `begšT¿n§ùiÚ +(); + +321 +Œy + { + +324 ià( +$to + ==ð +nuÎ +) { + +325 +$to + = +$this +-> + `g‘L©e¡V”siÚ +(); + +328 +$this +-> + `_doMig¿‹ +( +$to +); + +329 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +330 +$this +-> + `addE¼Ü +( +$e +); + +333 ià( +$this +-> + `hasE¼Üs +()) { + +334 +$this +-> +_cÚÃùiÚ +-> + `rÞlback +(); + +336 ià( +$dryRun +) { + +337  +çl£ +; + +339 +$this +-> + `_throwE¼ÜsExû±iÚ +(); + +342 ià( +$dryRun +) { + +343 +$this +-> +_cÚÃùiÚ +-> + `rÞlback +(); + +344 ià( +$this +-> + `hasE¼Üs +()) { + +345  +çl£ +; + +347  +$to +; + +350 +$this +-> +_cÚÃùiÚ +-> + `comm™ +(); + +351 +$this +-> + `£tCu¼’tV”siÚ +( +$to +); + +352  +$to +; + +355  +çl£ +; + +356 + } +} + +365 +public + +funùiÚ + + $mig¿‹DryRun +( +$to + = +nuÎ +) + +367  +$this +-> + `mig¿‹ +( +$to +, +Œue +); + +368 + } +} + +375 +public + +funùiÚ + + $g‘NumE¼Üs +() + +377  + `couÁ +( +$this +-> +_”rÜs +); + +378 + } +} + +385 +public + +funùiÚ + + $g‘E¼Üs +() + +387  +$this +-> +_”rÜs +; + +388 + } +} + +395 +public + +funùiÚ + + $þ—rE¼Üs +() + +397 +$this +-> +_”rÜs + = + `¬¿y +(); + +398 + } +} + +406 +public + +funùiÚ + + $addE¼Ü +( +Exû±iÚ + +$e +) + +408 +$this +-> +_”rÜs +[] = +$e +; + +409 + } +} + +416 +public + +funùiÚ + + $hasE¼Üs +() + +418  +$this +-> + `g‘NumE¼Üs +(è> 0 ? +Œue +: +çl£ +; + +419 + } +} + +427 +public + +funùiÚ + + $g‘Mig¿tiÚCÏss +( +$num +) + +429 ià( + `is£t +( +$this +-> +_mig¿tiÚCÏs£s +[ +$num +])) { + +430 +$þassName + = +$this +-> +_mig¿tiÚCÏs£s +[ +$num +]; + +431  +Ãw + + `$þassName +(); + +434 +throw + +Ãw + + `Doùrše_Mig¿tiÚ_Exû±iÚ +('Could‚Ù fšd mig¿tiÚ cÏs fÜ mig¿tiÚ s‹p: '. +$num +); + +435 + } +} + +443 +´Ùeùed + +funùiÚ + + $_throwE¼ÜsExû±iÚ +() + +445 +$mes§ges + = + `¬¿y +(); + +446 +$num + = 0; + +447 + `fܗch + ( +$this +-> + `g‘E¼Üs +(è +as + +$”rÜ +) { + +448 +$num +++; + +449 +$mes§ges +[] = ' E¼Ü #' . +$num + . ' - ' . +$”rÜ +-> + `g‘Mes§ge +(è. "\n" . $”rÜ-> + `g‘T¿ûAsSŒšg +() . "\n"; + +452 +$t™Ë + = +$this +-> + `g‘NumE¼Üs +() . 'ƒrror(s)ƒncountered during migration'; + +453 +$mes§ge + = +$t™Ë + . "\n"; + +454 +$mes§ge + .ð + `¡r_»³© +('=', + `¡¾’ +( +$t™Ë +)) . "\n"; + +455 +$mes§ge + .ð + `im¶ode +("\n", +$mes§ges +); + +457 +throw + +Ãw + + `Doùrše_Mig¿tiÚ_Exû±iÚ +( +$mes§ge +); + +458 + } +} + +467 +´Ùeùed + +funùiÚ + + $_doMig¿‹ +( +$to +) + +469 +$äom + = +$this +-> + `g‘Cu¼’tV”siÚ +(); + +471 ià( +$äom + =ð +$to +) { + +472 +throw + +Ãw + + `Doùrše_Mig¿tiÚ_Exû±iÚ +('A̗dy‡ˆv”siÚ # ' . +$to +); + +475 +$dœeùiÚ + = +$äom + > +$to + ? 'down':'up'; + +477 ià( +$dœeùiÚ + === 'up') { + +478  +$i + = +$äom + + 1; $˜<ð +$to +; $i++) { + +479 +$this +-> + `_doMig¿‹S‹p +( +$dœeùiÚ +, +$i +); + +482  +$i + = +$äom +; $˜> +$to +; $i--) { + +483 +$this +-> + `_doMig¿‹S‹p +( +$dœeùiÚ +, +$i +); + +487  +$to +; + +488 + } +} + +498 +´Ùeùed + +funùiÚ + + $_doMig¿‹S‹p +( +$dœeùiÚ +, +$num +) + +500 +Œy + { + +501 +$mig¿tiÚ + = +$this +-> + `g‘Mig¿tiÚCÏss +( +$num +); + +503 +$m‘hod + = '´e' . +$dœeùiÚ +; + +504 +$mig¿tiÚ +-> + `$m‘hod +(); + +506 ià( + `m‘hod_exi¡s +( +$mig¿tiÚ +, +$dœeùiÚ +)) { + +507 +$mig¿tiÚ +-> + `$dœeùiÚ +(); + +508 } ià( + `m‘hod_exi¡s +( +$mig¿tiÚ +, 'migrate')) { + +509 +$mig¿tiÚ +-> + `mig¿‹ +( +$dœeùiÚ +); + +512 ià( +$mig¿tiÚ +-> + `g‘NumChªges +() > 0) { + +513 +$chªges + = +$mig¿tiÚ +-> + `g‘Chªges +(); + +514 ià( +$dœeùiÚ + =ð'down' && + `m‘hod_exi¡s +( +$mig¿tiÚ +, 'migrate')) { + +515 +$chªges + = + `¬¿y_»v”£ +($changes); + +517 + `fܗch + ( +$chªges + +as + +$v®ue +) { + +518 + `li¡ +( +$ty³ +, +$chªge +èð +$v®ue +; + +519 +$funcName + = '´oûss' . +Doùrše_InæeùÜ +:: + `þassify +( +$ty³ +); + +520 ià( + `m‘hod_exi¡s +( +$this +-> +_´oûss +, +$funcName +)) { + +521 +Œy + { + +522 +$this +-> +_´oûss +-> + `$funcName +( +$chªge +); + +523 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +524 +$this +-> + `addE¼Ü +( +$e +); + +527 +throw + +Ãw + + `Doùrše_Mig¿tiÚ_Exû±iÚ +( + `¥rštf +('Inv®id mig¿tiÚ chªgty³: %s', +$ty³ +)); + +532 +$m‘hod + = 'po¡' . +$dœeùiÚ +; + +533 +$mig¿tiÚ +-> + `$m‘hod +(); + +534 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +535 +$this +-> + `addE¼Ü +( +$e +); + +537 + } +} + +546 +´Ùeùed + +funùiÚ + + $_ü—‹Mig¿tiÚTabË +() + +548 ià( +$this +-> +_mig¿tiÚTabËC»©ed +) { + +549  +Œue +; + +552 +$this +-> +_mig¿tiÚTabËC»©ed + = +Œue +; + +554 +Œy + { + +555 +$this +-> +_cÚÃùiÚ +-> +expÜt +-> + `ü—‹TabË +($this-> +_mig¿tiÚTabËName +, + `¬¿y +('version' =>‡rray('type' => 'integer', 'size' => 11))); + +557  +Œue +; + +558 } + `ÿtch +( +Exû±iÚ + +$e +) { + +559  +çl£ +; + +561 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Migration/Base.php + +1 'dropped_table', + +61 +public + +funùiÚ + + $g‘Chªges +() + +63  +$this +-> +_chªges +; + +66 +public + +funùiÚ + + $g‘NumChªges +() + +68  + `couÁ +( +$this +-> +_chªges +); + +69 + } +} + +78 +´Ùeùed + +funùiÚ + +_addChªge +( +$ty³ +, +¬¿y + +$chªge + = + $¬¿y +()) + +80 ià( + `is£t +( +$chªge +['upDown']è&& $chªge['upDown'] !=ð +nuÎ + && is£t( +£lf +:: +$_Ýpos™es +[ +$ty³ +])) { + +81 +$upDown + = +$chªge +['upDown']; + +82 + `un£t +( +$chªge +['upDown']); + +83 ià( +$upDown + == 'down') { + +84 +$Ýpos™e + = +£lf +:: +$_Ýpos™es +[ +$ty³ +]; + +85  +$this +-> +_chªges +[] = + `¬¿y +( +$Ýpos™e +, +$chªge +); + +88  +$this +-> +_chªges +[] = + `¬¿y +( +$ty³ +, +$chªge +); + +89 + } +} + +96 +public +  +funùiÚ + + $£tDeçuÉTabËO±iÚs +( +¬¿y + +$ÝtiÚs +) + +98 +£lf +:: +$deçuÉTabËO±iÚs + = +$ÝtiÚs +; + +99 + } +} + +106 +public +  +funùiÚ + + $g‘DeçuÉTabËO±iÚs +() + +108  +£lf +:: +$deçuÉTabËO±iÚs +; + +109 + } +} + +120 +public + +funùiÚ + +bË +( +$upDown +, +$bËName +, +¬¿y + +$f›lds + =‡¼ay(),‡¼ay +$ÝtiÚs + = + $¬¿y +()) + +122 +$ÝtiÚs + = + `g‘_defšed_v¬s +(); + +124 +$this +-> + `_addChªge +('ü—‹d_bË', +$ÝtiÚs +); + +125 + } +} + +135 +public + +funùiÚ + +ü—‹TabË +( +$bËName +, +¬¿y + +$f›lds + =‡¼ay(),‡¼ay +$ÝtiÚs + = + $¬¿y +()) + +137 +$this +-> + `bË +('up', +$bËName +, +$f›lds +, + `¬¿y_m”ge +( +£lf +:: + `g‘DeçuÉTabËO±iÚs +(), +$ÝtiÚs +)); + +138 + } +} + +146 +public + +funùiÚ + + $drÝTabË +( +$bËName +) + +148 +$this +-> + `bË +('down', +$bËName +); + +149 + } +} + +158 +public + +funùiÚ + + $»ÇmeTabË +( +$ÞdTabËName +, +$ÃwTabËName +) + +160 +$ÝtiÚs + = + `g‘_defšed_v¬s +(); + +162 +$this +-> + `_addChªge +('»Çmed_bË', +$ÝtiÚs +); + +163 + } +} + +174 +public + +funùiÚ + + $cÚ¡¿št +( +$upDown +, +$bËName +, +$cÚ¡¿štName +, +¬¿y + +$defš™iÚ +) + +176 +$ÝtiÚs + = + `g‘_defšed_v¬s +(); + +178 +$this +-> + `_addChªge +('ü—‹d_cÚ¡¿št', +$ÝtiÚs +); + +179 + } +} + +189 +public + +funùiÚ + + $ü—‹CÚ¡¿št +( +$bËName +, +$cÚ¡¿štName +, +¬¿y + +$defš™iÚ +) + +191 +$this +-> + `cÚ¡¿št +('up', +$bËName +, +$cÚ¡¿štName +, +$defš™iÚ +); + +192 + } +} + +201 +public + +funùiÚ + + $drÝCÚ¡¿št +( +$bËName +, +$cÚ¡¿štName +, +$´im¬y + = +çl£ +) + +203 +$this +-> + `cÚ¡¿št +('down', +$bËName +, +$cÚ¡¿štName +, + `¬¿y +('´im¬y' => +$´im¬y +)); + +204 + } +} + +214 +public + +funùiÚ + + $´im¬yKey +( +$dœeùiÚ +, +$bËName +, +$cÞumnNames +) + +216 ià( +$dœeùiÚ + == 'up') { + +217 +$this +-> + `ü—‹Prim¬yKey +( +$bËName +, +$cÞumnNames +); + +219 +$this +-> + `drÝPrim¬yKey +( +$bËName +, +$cÞumnNames +); + +221 + } +} + +245 +public + +funùiÚ + + $ü—‹Prim¬yKey +( +$bËName +, +$cÞumnNames +) + +247 +$autošüem’t + = +çl£ +; + +248 +$f›lds + = + `¬¿y +(); + +251 + `fܗch + ( +$cÞumnNames + +as + +$cÞumnName + => +$def +) { + +252 +$ty³ + = +$def +['type']; + +253 +$Ëngth + = + `is£t +( +$def +['Ëngth']è? $def['Ëngth'] : +nuÎ +; + +254 +$ÝtiÚs + = + `is£t +( +$def +['ÝtiÚs']è? $def['ÝtiÚs'] : + `¬¿y +(); + +256 +$this +-> + `addCÞumn +( +$bËName +, +$cÞumnName +, +$ty³ +, +$Ëngth +, +$ÝtiÚs +); + +258 +$f›lds +[ +$cÞumnName +] = + `¬¿y +(); + +260 ià( + `is£t +( +$def +['autoincrement'])) { + +261 +$autošüem’t + = +Œue +; + +262 +$autošüem’tCÞumn + = +$cÞumnName +; + +263 +$autošüem’tTy³ + = +$ty³ +; + +264 +$autošüem’tL’gth + = +$Ëngth +; + +265 +$autošüem’tO±iÚs + = +$ÝtiÚs +; + +266 +$autošüem’tO±iÚs +['autošüem’t'] = +Œue +; + +271 +$this +-> + `ü—‹CÚ¡¿št +( +$bËName +, +nuÎ +, + `¬¿y +( + +272 '´im¬y' => +Œue +, + +273 'f›lds' => +$f›lds + + +277 ià( +$autošüem’t +) { + +278 +$this +-> + `chªgeCÞumn +( +$bËName +, +$autošüem’tCÞumn +, +$autošüem’tTy³ +, +$autošüem’tL’gth +, +$autošüem’tO±iÚs +); + +280 + } +} + +304 +public + +funùiÚ + + $drÝPrim¬yKey +( +$bËName +, +$cÞumnNames +) + +307 + `fܗch + (( +¬¿y +è +$cÞumnNames + +as + +$cÞumnName + => +$def +) { + +308 ià( + `is£t +( +$def +['autoincrement'])) { + +309 +$chªgeDef + = +$def +; + +310 + `un£t +( +$chªgeDef +['autoincrement']); + +311 +$this +-> + `chªgeCÞumn +( +$bËName +, +$cÞumnName +, +$chªgeDef +['type'], $changeDef['length'], $changeDef); + +316 +$this +-> + `drÝCÚ¡¿št +( +$bËName +, +nuÎ +, +Œue +); + +319 + `fܗch + ( + `¬¿y_keys +(( +¬¿y +è +$cÞumnNames +è +as + +$cÞumnName +) { + +320 +$this +-> + `»moveCÞumn +( +$bËName +, +$cÞumnName +); + +322 + } +} + +333 +public + +funùiÚ + +fÜeignKey +( +$upDown +, +$bËName +, +$Çme +, +¬¿y + +$defš™iÚ + = + $¬¿y +()) + +335 +$defš™iÚ +['Çme'] = +$Çme +; + +336 +$ÝtiÚs + = + `g‘_defšed_v¬s +(); + +338 +$this +-> + `_addChªge +('ü—‹d_fÜeign_key', +$ÝtiÚs +); + +339 + } +} + +349 +public + +funùiÚ + + $ü—‹FÜeignKey +( +$bËName +, +$Çme +, +¬¿y + +$defš™iÚ +) + +351 +$this +-> + `fÜeignKey +('up', +$bËName +, +$Çme +, +$defš™iÚ +); + +352 + } +} + +361 +public + +funùiÚ + + $drÝFÜeignKey +( +$bËName +, +$Çme +) + +363 +$this +-> + `fÜeignKey +('down', +$bËName +, +$Çme +); + +364 + } +} + +377 +public + +funùiÚ + +cÞumn +( +$upDown +, +$bËName +, +$cÞumnName +, +$ty³ + = +nuÎ +, +$Ëngth + =‚uÎ, +¬¿y + +$ÝtiÚs + = + $¬¿y +()) + +379 +$ÝtiÚs + = + `g‘_defšed_v¬s +(); + +380 iàÐ! + `is£t +( +$ÝtiÚs +['options']['length'])) { + +381 +$ÝtiÚs +['ÝtiÚs']['Ëngth'] = +$Ëngth +; + +383 +$ÝtiÚs + = + `¬¿y_m”ge +($options, $options['options']); + +384 + `un£t +( +$ÝtiÚs +['options']); + +386 +$this +-> + `_addChªge +('ü—‹d_cÞumn', +$ÝtiÚs +); + +387 + } +} + +399 +public + +funùiÚ + +addCÞumn +( +$bËName +, +$cÞumnName +, +$ty³ +, +$Ëngth + = +nuÎ +, +¬¿y + +$ÝtiÚs + = + $¬¿y +()) + +401 +$this +-> + `cÞumn +('up', +$bËName +, +$cÞumnName +, +$ty³ +, +$Ëngth +, +$ÝtiÚs +); + +402 + } +} + +411 +public + +funùiÚ + + $»moveCÞumn +( +$bËName +, +$cÞumnName +) + +413 +$this +-> + `cÞumn +('down', +$bËName +, +$cÞumnName +); + +414 + } +} + +424 +public + +funùiÚ + + $»ÇmeCÞumn +( +$bËName +, +$ÞdCÞumnName +, +$ÃwCÞumnName +) + +426 +$ÝtiÚs + = + `g‘_defšed_v¬s +(); + +428 +$this +-> + `_addChªge +('»Çmed_cÞumn', +$ÝtiÚs +); + +429 + } +} + +441 +public + +funùiÚ + +chªgeCÞumn +( +$bËName +, +$cÞumnName +, +$ty³ + = +nuÎ +, +$Ëngth + =‚uÎ, +¬¿y + +$ÝtiÚs + = + $¬¿y +()) + +443 +$ÝtiÚs + = + `g‘_defšed_v¬s +(); + +444 +$ÝtiÚs +['ÝtiÚs']['Ëngth'] = +$Ëngth +; + +446 +$this +-> + `_addChªge +('chªged_cÞumn', +$ÝtiÚs +); + +447 + } +} + +458 +public + +funùiÚ + +šdex +( +$upDown +, +$bËName +, +$šdexName +, +¬¿y + +$defš™iÚ + = + $¬¿y +()) + +460 +$ÝtiÚs + = + `g‘_defšed_v¬s +(); + +462 +$this +-> + `_addChªge +('ü—‹d_šdex', +$ÝtiÚs +); + +463 + } +} + +473 +public + +funùiÚ + + $addIndex +( +$bËName +, +$šdexName +, +¬¿y + +$defš™iÚ +) + +475 +$this +-> + `šdex +('up', +$bËName +, +$šdexName +, +$defš™iÚ +); + +476 + } +} + +485 +public + +funùiÚ + + $»moveIndex +( +$bËName +, +$šdexName +) + +487 +$this +-> + `šdex +('down', +$bËName +, +$šdexName +); + +488 + } +} + +490 +public + +funùiÚ + + $´eUp +() + +492 + } +} + +494 +public + +funùiÚ + + $po¡Up +() + +496 + } +} + +498 +public + +funùiÚ + + $´eDown +() + +500 + } +} + +502 +public + +funùiÚ + + $po¡Down +() + +504 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Migration/Builder.php + +1 + `£tMig¿tiÚsP©h +( +$mig¿tiÚsP©h +-> + `g‘Mig¿tiÚCÏs£sDœeùÜy +()); + +77 +$this +-> +mig¿tiÚ + = +$mig¿tiÚsP©h +; + +78 } ià( + `is_dœ +( +$mig¿tiÚsP©h +)) { + +79 +$this +-> + `£tMig¿tiÚsP©h +( +$mig¿tiÚsP©h +); + +80 +$this +-> +mig¿tiÚ + = +Ãw + + `Doùrše_Mig¿tiÚ +( +$mig¿tiÚsP©h +); + +83 +$this +-> + `lßdTem¶©e +(); + +92 +public + +funùiÚ + + $£tMig¿tiÚsP©h +( +$·th +) + +94 +Doùrše_Lib +:: + `makeDœeùܛs +( +$·th +); + +96 +$this +-> +mig¿tiÚsP©h + = +$·th +; + +97 + } +} + +104 +public + +funùiÚ + + $g‘Mig¿tiÚsP©h +() + +106  +$this +-> +mig¿tiÚsP©h +; + +107 + } +} + +114 +´Ùeùed + +funùiÚ + + $lßdTem¶©e +() + +116 ià( + `is£t +( +£lf +:: +$l +)) { + +120 +£lf +:: +$l + =<<< +END + + +124 +þass + % +s + +ex‹nds + %s + +126 +public + +funùiÚ + + `up +() + +128 % +s + + +131 +public + +funùiÚ + + `down +() + +133 % +s + + +136 +END +; + +137 + } +} + +145 +public + +funùiÚ + + $g’”©eMig¿tiÚsFromDiff +( +Doùrše_Mig¿tiÚ_Diff + +$diff +) + +147 +$chªges + = +$diff +-> + `g’”©eChªges +(); + +149 +$up + = + `¬¿y +(); + +150 +$down + = + `¬¿y +(); + +152 iàÐ! + `em±y +( +$chªges +['dropped_tables'])) { + +153 + `fܗch + ( +$chªges +['drݳd_bËs'] +as + +$bËName + => +$bË +) { + +154 +$up +[] = +$this +-> + `buždDrÝTabË +( +$bË +); + +155 +$down +[] = +$this +-> + `buždC»©eTabË +( +$bË +); + +159 iàÐ! + `em±y +( +$chªges +['created_tables'])) { + +160 + `fܗch + ( +$chªges +['ü—‹d_bËs'] +as + +$bËName + => +$bË +) { + +161 +$up +[] = +$this +-> + `buždC»©eTabË +( +$bË +); + +162 +$down +[] = +$this +-> + `buždDrÝTabË +( +$bË +); + +166 iàÐ! + `em±y +( +$chªges +['dropped_columns'])) { + +167 + `fܗch + ( +$chªges +['drݳd_cÞumns'] +as + +$bËName + => +$»movedCÞumns +) { + +168 + `fܗch + ( +$»movedCÞumns + +as + +$Çme + => +$cÞumn +) { + +169 +$up +[] = +$this +-> + `buždRemoveCÞumn +( +$bËName +, +$Çme +, +$cÞumn +); + +170 +$down +[] = +$this +-> + `buždAddCÞumn +( +$bËName +, +$Çme +, +$cÞumn +); + +175 iàÐ! + `em±y +( +$chªges +['created_columns'])) { + +176 + `fܗch + ( +$chªges +['ü—‹d_cÞumns'] +as + +$bËName + => +$addedCÞumns +) { + +177 + `fܗch + ( +$addedCÞumns + +as + +$Çme + => +$cÞumn +) { + +178 +$up +[] = +$this +-> + `buždAddCÞumn +( +$bËName +, +$Çme +, +$cÞumn +); + +179 +$down +[] = +$this +-> + `buždRemoveCÞumn +( +$bËName +, +$Çme +, +$cÞumn +); + +184 iàÐ! + `em±y +( +$chªges +['changed_columns'])) { + +185 + `fܗch + ( +$chªges +['chªged_cÞumns'] +as + +$bËName + => +$chªgedCÞumns +) { + +186 + `fܗch + ( +$chªgedCÞumns + +as + +$Çme + => +$cÞumn +) { + +187 +$up +[] = +$this +-> + `buždChªgeCÞumn +( +$bËName +, +$Çme +, +$cÞumn +); + +192 iàÐ! + `em±y +( +$up +è|| !ƒm±y( +$down +)) { + +193 +$up + = + `im¶ode +("\n", $up); + +194 +$down + = + `im¶ode +("\n", $down); + +195 +$þassName + = 'V”siÚ' . +$this +-> +mig¿tiÚ +-> + `g‘NextMig¿tiÚCÏssV”siÚ +(); + +196 +$this +-> + `g’”©eMig¿tiÚCÏss +( +$þassName +, + `¬¿y +(), +$up +, +$down +); + +199 +$up + = + `¬¿y +(); + +200 +$down + = + `¬¿y +(); + +201 iàÐ! + `em±y +( +$chªges +['dropped_foreign_keys'])) { + +202 + `fܗch + ( +$chªges +['drݳd_fÜeign_keys'] +as + +$bËName + => +$drݳdFks +) { + +203 iàÐ! + `em±y +( +$chªges +['drݳd_bËs']è&& + `is£t +($chªges['drݳd_bËs'][ +$bËName +])) { + +207 + `fܗch + ( +$drݳdFks + +as + +$Çme + => +$fÜeignKey +) { + +208 +$up +[] = +$this +-> + `buždDrÝFÜeignKey +( +$bËName +, +$fÜeignKey +); + +209 +$down +[] = +$this +-> + `buždC»©eFÜeignKey +( +$bËName +, +$fÜeignKey +); + +214 iàÐ! + `em±y +( +$chªges +['dropped_indexes'])) { + +215 + `fܗch + ( +$chªges +['drݳd_šdexes'] +as + +$bËName + => +$»movedIndexes +) { + +216 iàÐ! + `em±y +( +$chªges +['drݳd_bËs']è&& + `is£t +($chªges['drݳd_bËs'][ +$bËName +])) { + +220 + `fܗch + ( +$»movedIndexes + +as + +$Çme + => +$šdex +) { + +221 +$up +[] = +$this +-> + `buždRemoveIndex +( +$bËName +, +$Çme +, +$šdex +); + +222 +$down +[] = +$this +-> + `buždAddIndex +( +$bËName +, +$Çme +, +$šdex +); + +227 iàÐ! + `em±y +( +$chªges +['created_foreign_keys'])) { + +228 + `fܗch + ( +$chªges +['ü—‹d_fÜeign_keys'] +as + +$bËName + => +$ü—‹dFks +) { + +229 iàÐ! + `em±y +( +$chªges +['drݳd_bËs']è&& + `is£t +($chªges['drݳd_bËs'][ +$bËName +])) { + +233 + `fܗch + ( +$ü—‹dFks + +as + +$Çme + => +$fÜeignKey +) { + +234 +$up +[] = +$this +-> + `buždC»©eFÜeignKey +( +$bËName +, +$fÜeignKey +); + +235 +$down +[] = +$this +-> + `buždDrÝFÜeignKey +( +$bËName +, +$fÜeignKey +); + +240 iàÐ! + `em±y +( +$chªges +['created_indexes'])) { + +241 + `fܗch + ( +$chªges +['ü—‹d_šdexes'] +as + +$bËName + => +$addedIndexes +) { + +242 iàÐ! + `em±y +( +$chªges +['drݳd_bËs']è&& + `is£t +($chªges['drݳd_bËs'][ +$bËName +])) { + +246 + `fܗch + ( +$addedIndexes + +as + +$Çme + => +$šdex +) { + +247 ià( + `is£t +( +$chªges +['ü—‹d_bËs'][ +$bËName +]['ÝtiÚs']['šdexes'][ +$Çme +])) { + +250 +$up +[] = +$this +-> + `buždAddIndex +( +$bËName +, +$Çme +, +$šdex +); + +251 +$down +[] = +$this +-> + `buždRemoveIndex +( +$bËName +, +$Çme +, +$šdex +); + +256 iàÐ! + `em±y +( +$up +è|| !ƒm±y( +$down +)) { + +257 +$up + = + `im¶ode +("\n", $up); + +258 +$down + = + `im¶ode +("\n", $down); + +259 +$þassName + = 'V”siÚ' . +$this +-> +mig¿tiÚ +-> + `g‘NextMig¿tiÚCÏssV”siÚ +(); + +260 +$this +-> + `g’”©eMig¿tiÚCÏss +( +$þassName +, + `¬¿y +(), +$up +, +$down +); + +262  +$chªges +; + +263 + } +} + +270 +public + +funùiÚ + + $g’”©eMig¿tiÚsFromDb +() + +272 +$dœeùÜy + = + `sys_g‘_‹mp_dœ +(è. +DIRECTORY_SEPARATOR + . 'tmp_doctrine_models'; + +274 +Doùrše_CÜe +:: + `g’”©eMod–sFromDb +( +$dœeùÜy +); + +276 +$»suÉ + = +$this +-> + `g’”©eMig¿tiÚsFromMod–s +( +$dœeùÜy +, +Doùrše_CÜe +:: +MODEL_LOADING_CONSERVATIVE +); + +278 +Doùrše_Lib +:: + `»moveDœeùܛs +( +$dœeùÜy +); + +280  +$»suÉ +; + +281 + } +} + +290 +public + +funùiÚ + + $g’”©eMig¿tiÚsFromMod–s +( +$mod–sP©h + = +nuÎ +, +$mod–Lßdšg + =‚ull) + +292 ià( +$mod–sP©h + !=ð +nuÎ +) { + +293 +$mod–s + = +Doùrše_CÜe +:: + `fž‹rInv®idMod–s +(Doùrše_CÜe:: + `lßdMod–s +( +$mod–sP©h +, +$mod–Lßdšg +)); + +295 +$mod–s + = +Doùrše_CÜe +:: + `g‘LßdedMod–s +(); + +298 +$mod–s + = +Doùrše_CÜe +:: + `š™ŸlizeMod–s +($models); + +300 +$fÜeignKeys + = + `¬¿y +(); + +302 + `fܗch + ( +$mod–s + +as + +$mod– +) { + +303 +$bË + = +Doùrše_CÜe +:: + `g‘TabË +( +$mod– +); + +304 ià( +$bË +-> + `g‘TabËName +(è!=ð +$this +-> +mig¿tiÚ +->getTableName()) { + +305 +$expÜt + = +$bË +-> + `g‘Exp܏bËFÜm© +(); + +307 +$fÜeignKeys +[ +$expÜt +['tableName']] = $export['options']['foreignKeys']; + +309 +$up + = +$this +-> + `buždC»©eTabË +( +$expÜt +); + +310 +$down + = +$this +-> + `buždDrÝTabË +( +$expÜt +); + +312 +$þassName + = 'Add' . +Doùrše_InæeùÜ +:: + `þassify +( +$expÜt +['tableName']); + +314 +$this +-> + `g’”©eMig¿tiÚCÏss +( +$þassName +, + `¬¿y +(), +$up +, +$down +); + +318 iàÐ! + `em±y +( +$fÜeignKeys +)) { + +319 +$þassName + = 'AddFks'; + +321 +$up + = + `¬¿y +(); + +322 +$down + = + `¬¿y +(); + +323 + `fܗch + ( +$fÜeignKeys + +as + +$bËName + => +$defš™iÚs +) { + +324 +$bËFÜeignKeyNames +[ +$bËName +] = + `¬¿y +(); + +326 + `fܗch + ( +$defš™iÚs + +as + +$defš™iÚ +) { + +327 +$up +[] = +$this +-> + `buždC»©eFÜeignKey +( +$bËName +, +$defš™iÚ +); + +328 +$down +[] = +$this +-> + `buždDrÝFÜeignKey +( +$bËName +, +$defš™iÚ +); + +332 +$up + = + `im¶ode +("\n", $up); + +333 +$down + = + `im¶ode +("\n", $down); + +334 ià( +$up + || +$down +) { + +335 +$this +-> + `g’”©eMig¿tiÚCÏss +( +$þassName +, + `¬¿y +(), +$up +, +$down +); + +339  +Œue +; + +340 + } +} + +349 +public + +funùiÚ + + $buždC»©eFÜeignKey +( +$bËName +, +$defš™iÚ +) + +351  " \$this->ü—‹FÜeignKey('" . +$bËName + . "', '" . +$defš™iÚ +['Çme'] . "', " . +$this +-> + `v¬ExpÜt +($defš™iÚ, +Œue +) . ");"; + +352 + } +} + +361 +public + +funùiÚ + + $buždDrÝFÜeignKey +( +$bËName +, +$defš™iÚ +) + +363  " \$this->drÝFÜeignKey('" . +$bËName + . "', '" . +$defš™iÚ +['name'] . "');"; + +364 + } +} + +372 +public + +funùiÚ + + $buždC»©eTabË +( +$bËD©a +) + +374 +$code + = " \$this->ü—‹TabË('" . +$bËD©a +['tableName'] . "', "; + +376 +$code + .ð +$this +-> + `v¬ExpÜt +( +$bËD©a +['cÞumns'], +Œue +) . ", "; + +378 +$ÝtiÚsWeN“d + = + `¬¿y +('type', 'indexes', 'primary', 'collate', 'charset'); + +380 +$ÝtiÚs + = + `¬¿y +(); + +381 + `fܗch + ( +$ÝtiÚsWeN“d + +as + +$ÝtiÚ +) { + +382 ià( + `is£t +( +$bËD©a +['ÝtiÚs'][ +$ÝtiÚ +])) { + +383 +$ÝtiÚs +[ +$ÝtiÚ +] = +$bËD©a +['options'][$option]; + +387 +$code + .ð +$this +-> + `v¬ExpÜt +( +$ÝtiÚs +, +Œue +); + +389 +$code + .= ");"; + +391  +$code +; + +392 + } +} + +400 +public + +funùiÚ + + $buždDrÝTabË +( +$bËD©a +) + +402  " \$this->drÝTabË('" . +$bËD©a +['tableName'] . "');"; + +403 + } +} + +413 +public + +funùiÚ + + $buždAddCÞumn +( +$bËName +, +$cÞumnName +, +$cÞumn +) + +415 +$Ëngth + = +$cÞumn +['length']; + +416 +$ty³ + = +$cÞumn +['type']; + +417 + `un£t +( +$cÞumn +['length'], $column['type']); + +418  " \$this->addCÞumn('" . +$bËName + . "', '" . +$cÞumnName +. "', '" . +$ty³ + . "', '" . +$Ëngth + . "', " . +$this +-> + `v¬ExpÜt +( +$cÞumn +) . ");"; + +419 + } +} + +429 +public + +funùiÚ + + $buždRemoveCÞumn +( +$bËName +, +$cÞumnName +, +$cÞumn +) + +431  " \$this->»moveCÞumn('" . +$bËName + . "', '" . +$cÞumnName +. "');"; + +432 + } +} + +442 +public + +funùiÚ + + $buždChªgeCÞumn +( +$bËName +, +$cÞumnName +, +$cÞumn +) + +444 +$Ëngth + = +$cÞumn +['length']; + +445 +$ty³ + = +$cÞumn +['type']; + +446 + `un£t +( +$cÞumn +['length'], $column['type']); + +447  " \$this->chªgeCÞumn('" . +$bËName + . "', '" . +$cÞumnName +. "', '" . +$ty³ + . "', '" . +$Ëngth + . "', " . +$this +-> + `v¬ExpÜt +( +$cÞumn +) . ");"; + +448 + } +} + +458 +public + +funùiÚ + + $buždAddIndex +( +$bËName +, +$šdexName +, +$šdex +) + +460  " \$this->addIndex('$bËName', '$šdexName', " . +$this +-> + `v¬ExpÜt +( +$šdex +) . ");"; + +461 + } +} + +471 +public + +funùiÚ + + $buždRemoveIndex +( +$bËName +, +$šdexName +, +$šdex +) + +473  " \$this->»moveIndex('$bËName', '$šdexName', " . +$this +-> + `v¬ExpÜt +( +$šdex +) . ");"; + +474 + } +} + +487 +public + +funùiÚ + +g’”©eMig¿tiÚCÏss +( +$þassName +, +$ÝtiÚs + = +¬¿y +(), +$up + = +nuÎ +, +$down + =‚uÎ, +$»tuº + = +çl£ +) + +489 +$þassName + = +Doùrše_InæeùÜ +:: +u¾ize +($className); + +490 + g$þassName + = +¡r_»¶aû +('-', '_', +$þassName +); + +491 + g$þassName + = +Doùrše_InæeùÜ +:: +þassify +( +$þassName +); + +493 ià( + g$»tuº + || ! + g$this +-> +g‘Mig¿tiÚsP©h +()) { + +494  + g$this +-> +buždMig¿tiÚCÏss +( +$þassName +, +nuÎ +, +$ÝtiÚs +, +$up +, +$down +); + +496 iàÐ! + g$this +-> +g‘Mig¿tiÚsP©h +()) { + +497 +throw + +Ãw + +Doùrše_Mig¿tiÚ_Exû±iÚ +('You must specifyhe…atho your migrations.'); + +500 + g$Ãxt + = +time +(è+ +$this +-> +mig¿tiÚ +-> +g‘NextMig¿tiÚCÏssV”siÚ +(); + +501 + g$fžeName + = +$Ãxt + . '_' . +Doùrše_InæeùÜ +:: +bËize +( +$þassName +è. +$this +-> +suffix +; + +503 + g$þass + = +$this +-> +buždMig¿tiÚCÏss +( +$þassName +, +$fžeName +, +$ÝtiÚs +, +$up +, +$down +); + +505 + g$·th + = +$this +-> +g‘Mig¿tiÚsP©h +(è. +DIRECTORY_SEPARATOR + . +$fžeName +; + +506 ià( +þass_exi¡s +( +$þassName +è|| +fže_exi¡s +( +$·th +)) { + +507 + g$this +-> + gmig¿tiÚ +-> +lßdMig¿tiÚCÏss +( +$þassName +); + +508  + gçl£ +; + +511 +fže_put_cڋÁs +( +$·th +, +$þass +); + +512 +»quœe_Úû +( +$·th +); + +513 + g$this +-> + gmig¿tiÚ +-> +lßdMig¿tiÚCÏss +( +$þassName +); + +515  + gŒue +; + +529 +public + +funùiÚ + +buždMig¿tiÚCÏss +( +$þassName +, +$fžeName + = +nuÎ +, +$ÝtiÚs + = +¬¿y +(), +$up + =‚uÎ, +$down + =‚ull) + +531 +$ex‹nds + = +is£t +( +$ÝtiÚs +['extends']) ? $options['extends']:'Doctrine_Migration_Base'; + +533 + g$cڋÁ + = '‡rray(), + +39 'drݳd_bËs' => +¬¿y +(), + +40 'ü—‹d_fÜeign_keys'=> +¬¿y +(), + +41 'drݳd_fÜeign_keys'=> +¬¿y +(), + +42 'ü—‹d_cÞumns' => +¬¿y +(), + +43 'drݳd_cÞumns' => +¬¿y +(), + +44 'chªged_cÞumns' => +¬¿y +(), + +45 'ü—‹d_šdexes' => +¬¿y +(), + +46 'drݳd_šdexes' => +¬¿y +()), + +47 + m$_mig¿tiÚ +, + +48 + m$_¡¬tšgMod–Fžes + = +¬¿y +(), + +49 + m$_tmpP©h +; + +51 +´Ùeùed +  + m$_toP»fix + = 'ToPrfx', + +52 + m$_äomP»fix + = 'FromPrfx'; + +67 +public + +funùiÚ + + $__cÚ¡ruù +( +$äom +, +$to +, +$mig¿tiÚ +) + +69 +$this +-> +_äom + = +$äom +; + +70 +$this +-> +_to + = +$to +; + +71 +$this +-> +_¡¬tšgMod–Fžes + = +Doùrše_CÜe +:: + `g‘LßdedMod–Fžes +(); + +72 +$this +-> + `£tTmpP©h +( + `sys_g‘_‹mp_dœ +(è. +DIRECTORY_SEPARATOR + . + `g‘mypid +()); + +74 ià( +$mig¿tiÚ + +š¡ªûof + +Doùrše_Mig¿tiÚ +) { + +75 +$this +-> +_mig¿tiÚ + = +$mig¿tiÚ +; + +76 } ià( + `is_dœ +( +$mig¿tiÚ +)) { + +77 +$this +-> +_mig¿tiÚ + = +Ãw + + `Doùrše_Mig¿tiÚ +( +$mig¿tiÚ +); + +87 +public + +funùiÚ + + $£tTmpP©h +( +$tmpP©h +) + +89 iàÐ! + `is_dœ +( +$tmpP©h +)) { + +90 + `mkdœ +( +$tmpP©h +, 0777, +Œue +); + +92 +$this +-> +_tmpP©h + = +$tmpP©h +; + +93 + } +} + +100 +´Ùeùed + +funùiÚ + + $g‘UniqueId +() + +102  + `md5 +( +$this +-> +_äom + . $this-> +_to +); + +103 + } +} + +110 +public + +funùiÚ + + $g’”©eChªges +() + +112 +$this +-> + `_þ—nup +(); + +114 +$äom + = +$this +-> + `_g’”©eMod–s +( +£lf +:: +$_äomP»fix +, $this-> +_äom +); + +115 +$to + = +$this +-> + `_g’”©eMod–s +( + +116 +Doùrše_Mªag” +:: + `g‘In¡ªû +()-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_MODEL_CLASS_PREFIX +è. +£lf +:: +$_toP»fix +, + +117 +$this +-> +_to + + +120  +$this +-> + `_diff +( +$äom +, +$to +); + +121 + } +} + +128 +public + +funùiÚ + + $g’”©eMig¿tiÚCÏs£s +() + +130 +$bužd” + = +Ãw + + `Doùrše_Mig¿tiÚ_Bužd” +( +$this +-> +_mig¿tiÚ +); + +132  +$bužd” +-> + `g’”©eMig¿tiÚsFromDiff +( +$this +); + +133 + } +} + +141 +´Ùeùed + +funùiÚ + + $_š™ŸlizeMod–s +( +$·th +) + +143 +$mªag” + = +Doùrše_Mªag” +:: + `g‘In¡ªû +(); + +144 +$mod–Lßdšg + = +$mªag” +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_MODEL_LOADING +); + +145 ià( +$mod–Lßdšg + ==ð +Doùrše_CÜe +:: +MODEL_LOADING_PEAR +) { + +146 +$Üig + = +Doùrše_CÜe +:: + `g‘Mod–sDœeùÜy +(); + +147 +Doùrše_CÜe +:: + `£tMod–sDœeùÜy +( +$·th +); + +148 +$mod–s + = +Doùrše_CÜe +:: + `š™ŸlizeMod–s +(Doùrše_CÜe:: + `lßdMod–s +( +$·th +)); + +149 +Doùrše_CÜe +:: + `£tMod–sDœeùÜy +( +$Üig +); + +151 +$mod–s + = +Doùrše_CÜe +:: + `š™ŸlizeMod–s +(Doùrše_CÜe:: + `lßdMod–s +( +$·th +)); + +153  +$mod–s +; + +154 + } +} + +163 +´Ùeùed + +funùiÚ + + $_diff +( +$äom +, +$to +) + +166 +$äomMod–s + = +$this +-> + `_š™ŸlizeMod–s +( +$äom +); + +167 +$toMod–s + = +$this +-> + `_š™ŸlizeMod–s +( +$to +); + +170 +$äomInfo + = +$this +-> + `_buždMod–InfÜm©iÚ +( +$äomMod–s +); + +171 +$toInfo + = +$this +-> + `_buždMod–InfÜm©iÚ +( +$toMod–s +); + +174 +$chªges + = +$this +-> + `_buždChªges +( +$äomInfo +, +$toInfo +); + +176 +$this +-> + `_þ—nup +(); + +178  +$chªges +; + +179 + } +} + +188 +´Ùeùed + +funùiÚ + + $_buždChªges +( +$äom +, +$to +) + +191 + `fܗch + ( +$to + +as + +$þassName + => +$šfo +) { + +193 iàÐ! + `is£t +( +$äom +[ +$þassName +])) { + +194 +$Çmes + = + `¬¿y +('type', 'charset', 'collate', 'indexes', 'foreignKeys', 'primary'); + +195 +$ÝtiÚs + = + `¬¿y +(); + +196 + `fܗch + ( +$Çmes + +as + +$Çme +) { + +197 ià( + `is£t +( +$šfo +['ÝtiÚs'][ +$Çme +]) && $info['options'][$name]) { + +198 +$ÝtiÚs +[ +$Çme +] = +$šfo +['options'][$name]; + +202 +$bË + = + `¬¿y +('bËName' => +$šfo +['tableName'], + +203 'cÞumns' => +$šfo +['columns'], + +204 'ÝtiÚs' => +$ÝtiÚs +); + +205 +$this +-> +_chªges +['ü—‹d_bËs'][ +$šfo +['bËName']] = +$bË +; + +208 + `fܗch + ( +$šfo +['cÞumns'] +as + +$Çme + => +$cÞumn +) { + +210 ià( + `is£t +( +$äom +[ +$þassName +]è&& ! is£t($äom[$þassName]['cÞumns'][ +$Çme +])) { + +211 +$this +-> +_chªges +['ü—‹d_cÞumns'][ +$šfo +['bËName']][ +$Çme +] = +$cÞumn +; + +214 ià( + `is£t +( +$äom +[ +$þassName +]['cÞumns'][ +$Çme +]è&& $äom[$þassName]['cÞumns'][$Çme] !ð +$cÞumn +) { + +215 +$this +-> +_chªges +['chªged_cÞumns'][ +$šfo +['bËName']][ +$Çme +] = +$cÞumn +; + +219 + `fܗch + ( +$šfo +['ÝtiÚs']['fÜeignKeys'] +as + +$Çme + => +$fÜeignKey +) { + +220 +$fÜeignKey +['Çme'] = +$Çme +; + +222 iàÐ! + `is£t +( +$äom +[ +$þassName +]['ÝtiÚs']['fÜeignKeys'][ +$Çme +])) { + +223 +$this +-> +_chªges +['ü—‹d_fÜeign_keys'][ +$šfo +['bËName']][ +$Çme +] = +$fÜeignKey +; + +224 +$šdexName + = +Doùrše_Mªag” +:: + `cÚÃùiÚ +()-> + `g’”©eUniqueIndexName +( +$šfo +['bËName'], +$fÜeignKey +['local']); + +225 +$this +-> +_chªges +['ü—‹d_šdexes'][ +$šfo +['bËName']][ +$šdexName +] = + `¬¿y +('f›lds' =>‡¼ay( +$fÜeignKey +['local'])); + +227 } ià( + `is£t +( +$äom +[ +$þassName +]['ÝtiÚs']['fÜeignKeys'][ +$Çme +])) { + +228 +$ÞdFÜeignKey + = +$äom +[ +$þassName +]['ÝtiÚs']['fÜeignKeys'][ +$Çme +]; + +229 +$ÞdFÜeignKey +['Çme'] = +$Çme +; + +231 ià( +$fÜeignKey + !=ð +$ÞdFÜeignKey +) { + +232 +$this +-> +_chªges +['drݳd_fÜeign_keys'][ +$šfo +['bËName']][ +$Çme +] = +$ÞdFÜeignKey +; + +233 +$this +-> +_chªges +['ü—‹d_fÜeign_keys'][ +$šfo +['bËName']][ +$Çme +] = +$fÜeignKey +; + +238 + `fܗch + ( +$šfo +['ÝtiÚs']['šdexes'] +as + +$Çme + => +$šdex +) { + +240 iàÐ! + `is£t +( +$äom +[ +$þassName +]['ÝtiÚs']['šdexes'][ +$Çme +])) { + +241 +$this +-> +_chªges +['ü—‹d_šdexes'][ +$šfo +['bËName']][ +$Çme +] = +$šdex +; + +246 + `fܗch + ( +$äom + +as + +$þassName + => +$šfo +) { + +248 iàÐ! + `is£t +( +$to +[ +$þassName +])) { + +249 +$bË + = + `¬¿y +('bËName' => +$šfo +['tableName'], + +250 'cÞumns' => +$šfo +['columns'], + +251 'ÝtiÚs' => + `¬¿y +('ty³' => +$šfo +['options']['type'], + +252 'ch¬£t' => +$šfo +['options']['charset'], + +253 'cÞϋ' => +$šfo +['options']['collate'], + +254 'šdexes' => +$šfo +['options']['indexes'], + +255 'fÜeignKeys' => +$šfo +['options']['foreignKeys'], + +256 '´im¬y' => +$šfo +['options']['primary'])); + +257 +$this +-> +_chªges +['drݳd_bËs'][ +$šfo +['bËName']] = +$bË +; + +260 + `fܗch + ( +$šfo +['cÞumns'] +as + +$Çme + => +$cÞumn +) { + +262 ià( + `is£t +( +$to +[ +$þassName +]è&& ! is£t($to[$þassName]['cÞumns'][ +$Çme +])) { + +263 +$this +-> +_chªges +['drݳd_cÞumns'][ +$šfo +['bËName']][ +$Çme +] = +$cÞumn +; + +267 + `fܗch + ( +$šfo +['ÝtiÚs']['fÜeignKeys'] +as + +$Çme + => +$fÜeignKey +) { + +269 iàÐ! + `is£t +( +$to +[ +$þassName +]['ÝtiÚs']['fÜeignKeys'][ +$Çme +])) { + +270 +$this +-> +_chªges +['drݳd_fÜeign_keys'][ +$šfo +['bËName']][ +$Çme +] = +$fÜeignKey +; + +274 + `fܗch + ( +$šfo +['ÝtiÚs']['šdexes'] +as + +$Çme + => +$šdex +) { + +276 iàÐ! + `is£t +( +$to +[ +$þassName +]['ÝtiÚs']['šdexes'][ +$Çme +])) { + +277 +$this +-> +_chªges +['drݳd_šdexes'][ +$šfo +['bËName']][ +$Çme +] = +$šdex +; + +282  +$this +-> +_chªges +; + +283 + } +} + +291 +´Ùeùed + +funùiÚ + + $_buždMod–InfÜm©iÚ +( +¬¿y + +$mod–s +) + +293 +$šfo + = + `¬¿y +(); + +294 + `fܗch + ( +$mod–s + +as + +$key + => +$mod– +) { + +295 +$bË + = +Doùrše_CÜe +:: + `g‘TabË +( +$mod– +); + +296 ià( +$bË +-> + `g‘TabËName +(è!=ð +$this +-> +_mig¿tiÚ +->getTableName()) { + +297 +$šfo +[ +$mod– +] = +$bË +-> + `g‘Exp܏bËFÜm© +(); + +301 +$šfo + = +$this +-> + `_þ—nMod–InfÜm©iÚ +($info); + +303  +$šfo +; + +304 + } +} + +312 +´Ùeùed + +funùiÚ + + $_þ—nMod–InfÜm©iÚ +( +$šfo +) + +314 ià( + `is_¬¿y +( +$šfo +)) { + +315 + `fܗch + ( +$šfo + +as + +$key + => +$v®ue +) { + +316 + `un£t +( +$šfo +[ +$key +]); + +317 +$key + = +$this +-> + `_þ—nMod–InfÜm©iÚ +($key); + +318 +$šfo +[ +$key +] = +$this +-> + `_þ—nMod–InfÜm©iÚ +( +$v®ue +); + +320  +$šfo +; + +322 +$fšd + = + `¬¿y +( + +323 +£lf +:: +$_toP»fix +, + +324 +£lf +:: +$_äomP»fix +, + +325 +Doùrše_InæeùÜ +:: + `bËize +( +£lf +:: +$_toP»fix +) . '_', + +326 +Doùrše_InæeùÜ +:: + `bËize +( +£lf +:: +$_äomP»fix +) . '_', + +327 +Doùrše_InæeùÜ +:: + `bËize +( +£lf +:: +$_toP»fix +), + +328 +Doùrše_InæeùÜ +:: + `bËize +( +£lf +:: +$_äomP»fix +) + +330  + `¡r_»¶aû +( +$fšd +, +nuÎ +, +$šfo +); + +332 + } +} + +341 +´Ùeùed + +funùiÚ + + $_g‘I‹mEx‹nsiÚ +( +$™em +) + +343 ià( + `is_dœ +( +$™em +)) { + +344 +$fžes + = + `glob +( +$™em + . +DIRECTORY_SEPARATOR + . '*'); + +346 +$fžes + = + `¬¿y +( +$™em +); + +349 +$ex‹nsiÚ + = +nuÎ +; + +350 ià( + `is£t +( +$fžes +[0])) { + +351 ià( + `is_dœ +( +$fžes +[0])) { + +352 +$ex‹nsiÚ + = +$this +-> + `_g‘I‹mEx‹nsiÚ +( +$fžes +[0]); + +354 +$·thInfo + = + `·thšfo +( +$fžes +[0]); + +355 +$ex‹nsiÚ + = +$·thInfo +['extension']; + +358  +$ex‹nsiÚ +; + +359 + } +} + +369 +´Ùeùed + +funùiÚ + + $_g’”©eMod–s +( +$´efix +, +$™em +) + +371 +$·th + = +$this +-> +_tmpP©h + . +DIRECTORY_SEPARATOR + . + `¡¹Þow” +( +$´efix +) . '_doctrine_tmp_dirs'; + +372 +$ÝtiÚs + = + `¬¿y +( + +373 'þassP»fix' => +$´efix +, + +374 'g’”©eBa£CÏs£s' => +çl£ + + +377 ià( + `is_¡ršg +( +$™em +è&& + `fže_exi¡s +($item)) { + +378 +$ex‹nsiÚ + = +$this +-> + `_g‘I‹mEx‹nsiÚ +( +$™em +); + +380 ià( +$ex‹nsiÚ + === 'yml') { + +381 +Doùrše_CÜe +:: + `g’”©eMod–sFromYaml +( +$™em +, +$·th +, +$ÝtiÚs +); + +383  +$·th +; + +384 } ià( +$ex‹nsiÚ + === 'php') { + +385 +Doùrše_Lib +:: + `cÝyDœeùÜy +( +$™em +, +$·th +); + +387  +$·th +; + +389 +throw + +Ãw + + `Doùrše_Mig¿tiÚ_Exû±iÚ +('NØph°Ü ymÈfže found‡ˆ·th: "' . +$™em + . '"'); + +392 +Œy + { + +393 +Doùrše_CÜe +:: + `g’”©eMod–sFromDb +( +$·th +, ( +¬¿y +è +$™em +, +$ÝtiÚs +); + +394  +$·th +; + +395 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +396 +throw + +Ãw + + `Doùrše_Mig¿tiÚ_Exû±iÚ +('Could‚Ù g’”©mod– äom cÚÃùiÚ: ' . +$e +-> + `g‘Mes§ge +()); + +399 + } +} + +406 +´Ùeùed + +funùiÚ + + $_þ—nup +() + +408 +$mod–Fžes + = +Doùrše_CÜe +:: + `g‘LßdedMod–Fžes +(); + +409 +$fžesToC˪ + = + `¬¿y_diff +( +$mod–Fžes +, +$this +-> +_¡¬tšgMod–Fžes +); + +411 + `fܗch + ( +$fžesToC˪ + +as + +$fže +) { + +412 ià( + `fže_exi¡s +( +$fže +)) { + +413 + `uƚk +( +$fže +); + +418 +Doùrše_Lib +:: + `»moveDœeùܛs +( +$this +-> +_tmpP©h + . +DIRECTORY_SEPARATOR + . + `¡¹Þow” +( +£lf +:: +$_äomP»fix +) . '_doctrine_tmp_dirs'); + +419 +Doùrše_Lib +:: + `»moveDœeùܛs +( +$this +-> +_tmpP©h + . +DIRECTORY_SEPARATOR + . + `¡¹Þow” +( +£lf +:: +$_toP»fix +) . '_doctrine_tmp_dirs'); + +420 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Migration/Exception.php + +1 +_mig¿tiÚ + = +$mig¿tiÚ +; + +43 +public + +funùiÚ + + $g‘CÚÃùiÚ +() + +45  +$this +-> +_mig¿tiÚ +-> + `g‘CÚÃùiÚ +(); + +46 + } +} + +54 +public + +funùiÚ + + $´oûssC»©edTabË +( +¬¿y + +$bË +) + +56 +$this +-> + `g‘CÚÃùiÚ +()-> +expÜt +-> + `ü—‹TabË +( +$bË +['tableName'], $table['fields'], $table['options']); + +57 + } +} + +65 +public + +funùiÚ + + $´oûssDrݳdTabË +( +¬¿y + +$bË +) + +67 +$this +-> + `g‘CÚÃùiÚ +()-> +expÜt +-> + `drÝTabË +( +$bË +['tableName']); + +68 + } +} + +76 +public + +funùiÚ + + $´oûssR’amedTabË +( +¬¿y + +$bË +) + +78 +$this +-> + `g‘CÚÃùiÚ +()-> +expÜt +-> + `®‹rTabË +( +$bË +['ÞdTabËName'], + `¬¿y +('name' => $table['newTableName'])); + +79 + } +} + +87 +public + +funùiÚ + + $´oûssC»©edCÞumn +( +¬¿y + +$cÞumn +) + +89 +$this +-> + `g‘CÚÃùiÚ +()-> +expÜt +-> + `®‹rTabË +( +$cÞumn +['bËName'], + `¬¿y +('add' =>‡rray($column['columnName'] => $column))); + +90 + } +} + +98 +public + +funùiÚ + + $´oûssDrݳdCÞumn +( +¬¿y + +$cÞumn +) + +100 +$this +-> + `g‘CÚÃùiÚ +()-> +expÜt +-> + `®‹rTabË +( +$cÞumn +['bËName'], + `¬¿y +('remove' =>‡rray($column['columnName'] =>‡rray()))); + +101 + } +} + +109 +public + +funùiÚ + + $´oûssR’amedCÞumn +( +¬¿y + +$cÞumn +) + +111 +$cÞumnLi¡ + = +$this +-> + `g‘CÚÃùiÚ +()-> +impÜt +-> + `li¡TabËCÞumns +( +$cÞumn +['tableName']); + +112 ià( + `is£t +( +$cÞumnLi¡ +[ +$cÞumn +['oldColumnName']])) { + +113 +$this +-> + `g‘CÚÃùiÚ +()-> +expÜt +-> + `®‹rTabË +( +$cÞumn +['bËName'], + `¬¿y +('»Çme' =>‡¼ay($cÞumn['ÞdCÞumnName'] =>‡¼ay('Çme' => $cÞumn['ÃwCÞumnName'], 'defš™iÚ' => +$cÞumnLi¡ +[$column['oldColumnName']])))); + +115 + } +} + +123 +public + +funùiÚ + + $´oûssChªgedCÞumn +( +¬¿y + +$cÞumn +) + +125 +$ÝtiÚs + = + `¬¿y +(); + +126 +$ÝtiÚs + = +$cÞumn +['options']; + +127 +$ÝtiÚs +['ty³'] = +$cÞumn +['type']; + +129 +$this +-> + `g‘CÚÃùiÚ +()-> +expÜt +-> + `®‹rTabË +( +$cÞumn +['bËName'], + `¬¿y +('chªge' =>‡¼ay($cÞumn['cÞumnName'] =>‡¼ay('defš™iÚ' => +$ÝtiÚs +)))); + +130 + } +} + +138 +public + +funùiÚ + + $´oûssC»©edIndex +( +¬¿y + +$šdex +) + +140 +$this +-> + `g‘CÚÃùiÚ +()-> +expÜt +-> + `ü—‹Index +( +$šdex +['tableName'], $index['indexName'], $index['definition']); + +141 + } +} + +149 +public + +funùiÚ + + $´oûssDrݳdIndex +( +¬¿y + +$šdex +) + +151 +$this +-> + `g‘CÚÃùiÚ +()-> +expÜt +-> + `drÝIndex +( +$šdex +['tableName'], $index['indexName']); + +152 + } +} + +160 +public + +funùiÚ + + $´oûssC»©edCÚ¡¿št +( +¬¿y + +$cÚ¡¿št +) + +162 +$this +-> + `g‘CÚÃùiÚ +()-> +expÜt +-> + `ü—‹CÚ¡¿št +( +$cÚ¡¿št +['tableName'], $constraint['constraintName'], $constraint['definition']); + +163 + } +} + +171 +public + +funùiÚ + + $´oûssDrݳdCÚ¡¿št +( +¬¿y + +$cÚ¡¿št +) + +173 +$this +-> + `g‘CÚÃùiÚ +()-> +expÜt +-> + `drÝCÚ¡¿št +( +$cÚ¡¿št +['bËName'], $cÚ¡¿št['cÚ¡¿štName'], + `is£t +($constraint['definition']['primary']) && $constraint['definition']['primary']); + +174 + } +} + +182 +public + +funùiÚ + + $´oûssC»©edFÜeignKey +( +¬¿y + +$fÜeignKey +) + +184 +$this +-> + `g‘CÚÃùiÚ +()-> +expÜt +-> + `ü—‹FÜeignKey +( +$fÜeignKey +['tableName'], $foreignKey['definition']); + +185 + } +} + +193 +public + +funùiÚ + + $´oûssDrݳdFÜeignKey +( +¬¿y + +$fÜeignKey +) + +195 +$this +-> + `g‘CÚÃùiÚ +()-> +expÜt +-> + `drÝFÜeignKey +( +$fÜeignKey +['tableName'], $foreignKey['definition']['name']); + +196 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Node.php + +1 +»cÜd + = +$»cÜd +; + +71 +$this +-> +ÝtiÚs + = +$ÝtiÚs +; + +75 +$þass + = +$»cÜd +-> + `g‘TabË +()-> + `g‘CompڒtName +(); + +76 +$thisTabË + = +$»cÜd +-> + `g‘TabË +(); + +77 +$bË + = +$thisTabË +; + +78 ià( +$thisTabË +-> + `g‘O±iÚ +('inheritanceMap')) { + +81  ! +$subþas£s + = +$bË +-> + `g‘O±iÚ +('subclasses')) { + +82 +$þass + = + `g‘_·»Á_þass +($class); + +83 +$»æeùiÚCÏss + = +Ãw + + `ReæeùiÚCÏss +( +$þass +); + +84 ià( +$»æeùiÚCÏss +-> + `isAb¡¿ù +()) { + +87 ià( +$þass + == 'Doctrine_Record') { + +88 +throw + +Ãw + + `Doùrše_Node_Exû±iÚ +("No subclasses specified. You‡re " + +93 +$bË + = $bË-> + `g‘CÚÃùiÚ +()-> + `g‘TabË +( +$þass +); + +96 ià( +$thisTabË + !=ð +$bË +) { + +97 +$this +-> +_Œ“ + = +$bË +-> + `g‘T»e +(); + +99 +$this +-> +_Œ“ + = +$thisTabË +-> + `g‘T»e +(); + +115 +public +  +funùiÚ + + `çùÜy +( +Doùrše_RecÜd + +$»cÜd +, +$im¶Name +, +$ÝtiÚs + = + $¬¿y +()) + +117 +$þass + = 'Doùrše_Node_' . +$im¶Name +; + +119 iàÐ! + `þass_exi¡s +( +$þass +)) { + +120 +throw + +Ãw + + `Doùrše_Node_Exû±iÚ +("The class $class mustƒxist‡ndƒxtend Doctrine_Node"); + +123  +Ãw + + `$þass +( +$»cÜd +, +$ÝtiÚs +); + +124 + } +} + +131 +public + +funùiÚ + + $£tRecÜd +( +Doùrše_RecÜd + +$»cÜd +) + +133 +$this +-> +»cÜd + = +$»cÜd +; + +134 + } +} + +141 +public + +funùiÚ + + $g‘RecÜd +() + +143  +$this +-> +»cÜd +; + +144 + } +} + +152 +public + +funùiÚ + +Œav”£ +( +$ty³ + = 'P»', +$ÝtiÚs + = + $¬¿y +()) + +154  +$this +-> + `g‘I‹¿tÜ +( +$ty³ +, +$ÝtiÚs +); + +155 + } +} + +163 +public + +funùiÚ + + $g‘I‹¿tÜ +( +$ty³ + = +nuÎ +, +$ÝtiÚs + =‚ull) + +165 ià( +$ty³ + ==ð +nuÎ +) { + +166 +$ty³ + = ( + `is£t +( +$this +-> +™”©ÜTy³ +) ? $this->iteratorType : 'Pre'); + +169 ià( +$ÝtiÚs + ==ð +nuÎ +) { + +170 +$ÝtiÚs + = ( + `is£t +( +$this +-> +™”©ÜO±iÚs +è? $this->™”©ÜO±iÚ : + `¬¿y +()); + +173 +$im¶Name + = +$this +-> +»cÜd +-> + `g‘TabË +()-> + `g‘O±iÚ +('treeImpl'); + +174 +$™”©ÜCÏss + = 'Doùrše_Node_' . +$im¶Name + . '_' . + `ucfœ¡ +( + `¡¹Þow” +( +$ty³ +)) . 'OrderIterator'; + +176  +Ãw + + `$™”©ÜCÏss +( +$this +-> +»cÜd +, +$ÝtiÚs +); + +177 + } +} + +184 +public + +funùiÚ + + $£tI‹¿tÜTy³ +( +$ty³ +) + +186 +$this +-> +™”©ÜTy³ + = +$ty³ +; + +187 + } +} + +194 +public + +funùiÚ + + $£tI‹¿tÜO±iÚs +( +$ÝtiÚs +) + +196 +$this +-> +™”©ÜO±iÚs + = +$ÝtiÚs +; + +197 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Node/AdjacencyList.php + +1 ', +$šþudeNode + = +çl£ +); + +140 +public + +funùiÚ + +g‘Lev– +(); + +147 +public + +funùiÚ + +g‘Numb”Chžd»n +(); + +154 +public + +funùiÚ + +g‘Numb”Desûndªts +(); + +161 +public + +funùiÚ + +š£¹AsP¬’tOf +( +Doùrše_RecÜd + +$de¡ +); + +168 +public + +funùiÚ + +š£¹AsP»vSiblšgOf +( +Doùrše_RecÜd + +$de¡ +); + +175 +public + +funùiÚ + +š£¹AsNextSiblšgOf +( +Doùrše_RecÜd + +$de¡ +); + +182 +public + +funùiÚ + +š£¹AsFœ¡ChždOf +( +Doùrše_RecÜd + +$de¡ +); + +189 +public + +funùiÚ + +š£¹AsLa¡ChždOf +( +Doùrše_RecÜd + +$de¡ +); + +195 +public + +funùiÚ + +moveAsP»vSiblšgOf +( +Doùrše_RecÜd + +$de¡ +); + +201 +public + +funùiÚ + +moveAsNextSiblšgOf +( +Doùrše_RecÜd + +$de¡ +); + +207 +public + +funùiÚ + +moveAsFœ¡ChždOf +( +Doùrše_RecÜd + +$de¡ +); + +213 +public + +funùiÚ + +moveAsLa¡ChždOf +( +Doùrše_RecÜd + +$de¡ +); + +219 +public + +funùiÚ + +addChžd +( +Doùrše_RecÜd + +$»cÜd +); + +226 +public + +funùiÚ + +isL—f +(); + +233 +public + +funùiÚ + +isRoÙ +(); + +240 +public + +funùiÚ + +isEqu®To +( +Doùrše_RecÜd + +$subj +); + +247 +public + +funùiÚ + +isDesûndªtOf +( +Doùrše_RecÜd + +$subj +); + +254 +public + +funùiÚ + +isDesûndªtOfOrEqu®To +( +Doùrše_RecÜd + +$subj +); + +261 +public + +funùiÚ + +isV®idNode +(); + +267 +public + +funùiÚ + +d–‘e +(); + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Node/MaterializedPath.php + +1 + `isV®idNode +($this-> + `g‘P»vSiblšg +()); + +51 +public + +funùiÚ + + $hasNextSiblšg +() + +53  +$this +-> + `isV®idNode +($this-> + `g‘NextSiblšg +()); + +54 + } +} + +61 +public + +funùiÚ + + $hasChžd»n +() + +63  (( +$this +-> + `g‘RightV®ue +(è- $this-> + `g‘LeáV®ue +()) > 1); + +64 + } +} + +71 +public + +funùiÚ + + $hasP¬’t +() + +73  +$this +-> + `isV®idNode +($this-> + `g‘RecÜd +()è&& ! $this-> + `isRoÙ +(); + +74 + } +} + +81 +public + +funùiÚ + + $g‘P»vSiblšg +() + +83 +$ba£AlŸs + = +$this +-> +_Œ“ +-> + `g‘Ba£AlŸs +(); + +84 +$q + = +$this +-> +_Œ“ +-> + `g‘Ba£Qu”y +(); + +85 +$q + = $q-> + `addWh”e +("$ba£AlŸs.rgˆð?", +$this +-> + `g‘LeáV®ue +() - 1); + +86 +$q + = +$this +-> +_Œ“ +-> + `»tuºQu”yW™hRoÙId +($q, $this-> + `g‘RoÙV®ue +()); + +87 +$»suÉ + = +$q +-> + `execu‹ +(); + +89 ià( + `couÁ +( +$»suÉ +) <= 0) { + +90  +çl£ +; + +93 ià( +$»suÉ + +š¡ªûof + +Doùrše_CÞËùiÚ +) { + +94 +$siblšg + = +$»suÉ +-> + `g‘Fœ¡ +(); + +95 } ià( + `is_¬¿y +( +$»suÉ +)) { + +96 +$siblšg + = + `¬¿y_shiá +( +$»suÉ +); + +99  +$siblšg +; + +100 + } +} + +107 +public + +funùiÚ + + $g‘NextSiblšg +() + +109 +$ba£AlŸs + = +$this +-> +_Œ“ +-> + `g‘Ba£AlŸs +(); + +110 +$q + = +$this +-> +_Œ“ +-> + `g‘Ba£Qu”y +(); + +111 +$q + = $q-> + `addWh”e +("$ba£AlŸs.lá = ?", +$this +-> + `g‘RightV®ue +() + 1); + +112 +$q + = +$this +-> +_Œ“ +-> + `»tuºQu”yW™hRoÙId +($q, $this-> + `g‘RoÙV®ue +()); + +113 +$»suÉ + = +$q +-> + `execu‹ +(); + +115 ià( + `couÁ +( +$»suÉ +) <= 0) { + +116  +çl£ +; + +119 ià( +$»suÉ + +š¡ªûof + +Doùrše_CÞËùiÚ +) { + +120 +$siblšg + = +$»suÉ +-> + `g‘Fœ¡ +(); + +121 } ià( + `is_¬¿y +( +$»suÉ +)) { + +122 +$siblšg + = + `¬¿y_shiá +( +$»suÉ +); + +125  +$siblšg +; + +126 + } +} + +133 +public + +funùiÚ + + $g‘Siblšgs +( +$šþudeNode + = +çl£ +) + +135 +$·»Á + = +$this +-> + `g‘P¬’t +(); + +136 +$siblšgs + = + `¬¿y +(); + +137 ià( +$·»Á + && $·»Á-> + `exi¡s +()) { + +138 + `fܗch + ( +$·»Á +-> + `g‘Node +()-> + `g‘Chžd»n +(è +as + +$chžd +) { + +139 ià( +$this +-> + `isEqu®To +( +$chžd +è&& ! +$šþudeNode +) { + +142 +$siblšgs +[] = +$chžd +; + +145  +$siblšgs +; + +146 + } +} + +153 +public + +funùiÚ + + $g‘Fœ¡Chžd +() + +155 +$ba£AlŸs + = +$this +-> +_Œ“ +-> + `g‘Ba£AlŸs +(); + +156 +$q + = +$this +-> +_Œ“ +-> + `g‘Ba£Qu”y +(); + +157 +$q +-> + `addWh”e +("$ba£AlŸs.lá = ?", +$this +-> + `g‘LeáV®ue +() + 1); + +158 +$this +-> +_Œ“ +-> + `»tuºQu”yW™hRoÙId +( +$q +, $this-> + `g‘RoÙV®ue +()); + +159 +$»suÉ + = +$q +-> + `execu‹ +(); + +161 ià( + `couÁ +( +$»suÉ +) <= 0) { + +162  +çl£ +; + +165 ià( +$»suÉ + +š¡ªûof + +Doùrše_CÞËùiÚ +) { + +166 +$chžd + = +$»suÉ +-> + `g‘Fœ¡ +(); + +167 } ià( + `is_¬¿y +( +$»suÉ +)) { + +168 +$chžd + = + `¬¿y_shiá +( +$»suÉ +); + +171  +$chžd +; + +172 + } +} + +179 +public + +funùiÚ + + $g‘La¡Chžd +() + +181 +$ba£AlŸs + = +$this +-> +_Œ“ +-> + `g‘Ba£AlŸs +(); + +182 +$q + = +$this +-> +_Œ“ +-> + `g‘Ba£Qu”y +(); + +183 +$q +-> + `addWh”e +("$ba£AlŸs.rgˆð?", +$this +-> + `g‘RightV®ue +() - 1); + +184 +$this +-> +_Œ“ +-> + `»tuºQu”yW™hRoÙId +( +$q +, $this-> + `g‘RoÙV®ue +()); + +185 +$»suÉ + = +$q +-> + `execu‹ +(); + +187 ià( + `couÁ +( +$»suÉ +) <= 0) { + +188  +çl£ +; + +191 ià( +$»suÉ + +š¡ªûof + +Doùrše_CÞËùiÚ +) { + +192 +$chžd + = +$»suÉ +-> + `g‘Fœ¡ +(); + +193 } ià( + `is_¬¿y +( +$»suÉ +)) { + +194 +$chžd + = + `¬¿y_shiá +( +$»suÉ +); + +197  +$chžd +; + +198 + } +} + +205 +public + +funùiÚ + + $g‘Chžd»n +() + +207  +$this +-> + `g‘Desûndªts +(1); + +208 + } +} + +215 +public + +funùiÚ + + $g‘Desûndªts +( +$d•th + = +nuÎ +, +$šþudeNode + = +çl£ +) + +217 +$ba£AlŸs + = +$this +-> +_Œ“ +-> + `g‘Ba£AlŸs +(); + +218 +$q + = +$this +-> +_Œ“ +-> + `g‘Ba£Qu”y +(); + +219 +$·¿ms + = + `¬¿y +( +$this +-> +»cÜd +-> + `g‘ +('lft'), $this->record->get('rgt')); + +221 ià( +$šþudeNode +) { + +222 +$q +-> + `addWh”e +("$ba£AlŸs.lá >ð? AND $ba£AlŸs.rgˆ<ð?", +$·¿ms +)-> + `addOrd”By +("$baseAlias.lft‡sc"); + +224 +$q +-> + `addWh”e +("$ba£AlŸs.lá > ? AND $ba£AlŸs.rgˆ< ?", +$·¿ms +)-> + `addOrd”By +("$baseAlias.lft‡sc"); + +227 ià( +$d•th + !=ð +nuÎ +) { + +228 +$q +-> + `addWh”e +("$ba£AlŸs.Ëv– <ð?", +$this +-> +»cÜd +['Ëv–'] + +$d•th +); + +231 +$q + = +$this +-> +_Œ“ +-> + `»tuºQu”yW™hRoÙId +($q, $this-> + `g‘RoÙV®ue +()); + +232 +$»suÉ + = +$q +-> + `execu‹ +(); + +234 ià( + `couÁ +( +$»suÉ +) <= 0) { + +235  +çl£ +; + +238  +$»suÉ +; + +239 + } +} + +246 +public + +funùiÚ + + $g‘P¬’t +() + +248 +$ba£AlŸs + = +$this +-> +_Œ“ +-> + `g‘Ba£AlŸs +(); + +249 +$q + = +$this +-> +_Œ“ +-> + `g‘Ba£Qu”y +(); + +250 +$q +-> + `addWh”e +("$ba£AlŸs.lá < ? AND $ba£AlŸs.rgˆ> ?", + `¬¿y +( +$this +-> + `g‘LeáV®ue +(), $this-> + `g‘RightV®ue +())) + +251 -> + `addWh”e +("$ba£AlŸs.Ëv– >ð?", +$this +-> +»cÜd +['level'] - 1) + +252 -> + `addOrd”By +("$baseAlias.rgt‡sc"); + +253 +$q + = +$this +-> +_Œ“ +-> + `»tuºQu”yW™hRoÙId +($q, $this-> + `g‘RoÙV®ue +()); + +254 +$»suÉ + = +$q +-> + `execu‹ +(); + +256 ià( + `couÁ +( +$»suÉ +) <= 0) { + +257  +çl£ +; + +260 ià( +$»suÉ + +š¡ªûof + +Doùrše_CÞËùiÚ +) { + +261 +$·»Á + = +$»suÉ +-> + `g‘Fœ¡ +(); + +262 } ià( + `is_¬¿y +( +$»suÉ +)) { + +263 +$·»Á + = + `¬¿y_shiá +( +$»suÉ +); + +266  +$·»Á +; + +267 + } +} + +276 +public + +funùiÚ + + $g‘Anû¡Üs +( +$d•th + = +nuÎ +) + +278 +$ba£AlŸs + = +$this +-> +_Œ“ +-> + `g‘Ba£AlŸs +(); + +279 +$q + = +$this +-> +_Œ“ +-> + `g‘Ba£Qu”y +(); + +280 +$q +-> + `addWh”e +("$ba£AlŸs.lá < ? AND $ba£AlŸs.rgˆ> ?", + `¬¿y +( +$this +-> + `g‘LeáV®ue +(), $this-> + `g‘RightV®ue +())) + +281 -> + `addOrd”By +("$baseAlias.lft‡sc"); + +282 ià( +$d•th + !=ð +nuÎ +) { + +283 +$q +-> + `addWh”e +("$ba£AlŸs.Ëv– >ð?", +$this +-> +»cÜd +['Ëv–'] - +$d•th +); + +285 +$q + = +$this +-> +_Œ“ +-> + `»tuºQu”yW™hRoÙId +($q, $this-> + `g‘RoÙV®ue +()); + +286 +$ªû¡Üs + = +$q +-> + `execu‹ +(); + +287 ià( + `couÁ +( +$ªû¡Üs +) <= 0) { + +288  +çl£ +; + +290  +$ªû¡Üs +; + +291 + } +} + +300 +public + +funùiÚ + +g‘P©h +( +$£³¿tÜ + = ' > ', +$šþudeRecÜd + = +çl£ +) + +302 +$·th + = +¬¿y +(); + +303 + g$ªû¡Üs + = +$this +-> +g‘Anû¡Üs +(); + +304 ià( + g$ªû¡Üs +) { + +305 +fܗch + ( +$ªû¡Üs + +as + +$ªû¡Ü +) { + +306 + g$·th +[] = +$ªû¡Ü +-> +__toSŒšg +(); + +309 ià( + g$šþudeRecÜd +) { + +310 + g$·th +[] = +$this +-> +g‘RecÜd +()-> +__toSŒšg +(); + +313  +im¶ode +( +$£³¿tÜ +, +$·th +); + +321 +public + +funùiÚ + + $g‘Numb”Chžd»n +() + +323 +$chžd»n + = +$this +-> + `g‘Chžd»n +(); + +324  +$chžd»n + ==ð +çl£ + ? 0 : + `couÁ +($children); + +325 + } +} + +332 +public + +funùiÚ + + $g‘Numb”Desûndªts +() + +334  ( +$this +-> + `g‘RightV®ue +(è- $this-> + `g‘LeáV®ue +() - 1) / 2; + +335 + } +} + +343 +public + +funùiÚ + + $š£¹AsP¬’tOf +( +Doùrše_RecÜd + +$de¡ +) + +346 ià( +$this +-> + `isV®idNode +()) { + +347  +çl£ +; + +350 ià( +$de¡ +-> + `g‘Node +()-> + `isRoÙ +()) { + +351  +çl£ +; + +356 +$de¡ + ==ð +$this +-> +»cÜd + || + +357 ( +$de¡ +-> + `exi¡s +(è&& +$this +-> +»cÜd +->exi¡s(è&& $de¡-> + `id’tif›r +() === $this->record->identifier()) + +359 +throw + +Ãw + + `Doùrše_T»e_Exû±iÚ +("Cannot insert‚ode‡s…arent of itself"); + +361  +çl£ +; + +364 +$ÃwLeá + = +$de¡ +-> + `g‘Node +()-> + `g‘LeáV®ue +(); + +365 +$ÃwRight + = +$de¡ +-> + `g‘Node +()-> + `g‘RightV®ue +() + 2; + +366 +$ÃwRoÙ + = +$de¡ +-> + `g‘Node +()-> + `g‘RoÙV®ue +(); + +367 +$ÃwLev– + = +$de¡ +-> + `g‘Node +()-> + `g‘Lev– +(); + +369 +$cÚn + = +$this +-> +»cÜd +-> + `g‘TabË +()-> + `g‘CÚÃùiÚ +(); + +370 +Œy + { + +371 +$cÚn +-> + `begšIÁ”ÇlT¿n§ùiÚ +(); + +374 +$this +-> + `shiáRLV®ues +( +$de¡ +-> + `g‘Node +()-> + `g‘RightV®ue +(è+ 1, 2, +$ÃwRoÙ +); + +377 +$compڒtName + = +$this +-> +_Œ“ +-> + `g‘Ba£Compڒt +(); + +378 +$q + = +Doùrše_CÜe +:: + `g‘TabË +( +$compڒtName +) + +379 -> + `ü—‹Qu”y +() + +380 -> + `upd©e +(); + +381 +$q +-> + `£t +("$componentName.lft", "$componentName.lft + 1"); + +382 +$q +-> + `£t +("$componentName.rgt", "$componentName.rgt + 1"); + +383 +$q +-> + `£t +("$componentName.level", "$componentName.level + 1"); + +384 +$q +-> + `wh”e +("$compڒtName.lá >ð? AND $compڒtName.rgˆ<ð?", + `¬¿y +( +$ÃwLeá +, +$ÃwRight +)); + +385 +$q + = +$this +-> +_Œ“ +-> + `»tuºQu”yW™hRoÙId +($q, +$ÃwRoÙ +); + +386 +$q +-> + `execu‹ +(); + +388 +$this +-> +»cÜd +['Ëv–'] = +$ÃwLev– +; + +389 +$this +-> + `š£¹Node +( +$ÃwLeá +, +$ÃwRight +, +$ÃwRoÙ +); + +391 +$cÚn +-> + `comm™ +(); + +392 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +393 +$cÚn +-> + `rÞlback +(); + +394 +throw + +$e +; + +397  +Œue +; + +398 + } +} + +406 +public + +funùiÚ + + $š£¹AsP»vSiblšgOf +( +Doùrše_RecÜd + +$de¡ +) + +409 ià( +$this +-> + `isV®idNode +()) { + +410  +çl£ +; + +414 +$de¡ + ==ð +$this +-> +»cÜd + || + +415 ( +$de¡ +-> + `exi¡s +(è&& +$this +-> +»cÜd +->exi¡s(è&& $de¡-> + `id’tif›r +() === $this->record->identifier()) + +417 +throw + +Ãw + + `Doùrše_T»e_Exû±iÚ +("Cannot insert‚ode‡s…revious sibling of itself"); + +419  +çl£ +; + +422 +$ÃwLeá + = +$de¡ +-> + `g‘Node +()-> + `g‘LeáV®ue +(); + +423 +$ÃwRight + = +$de¡ +-> + `g‘Node +()-> + `g‘LeáV®ue +() + 1; + +424 +$ÃwRoÙ + = +$de¡ +-> + `g‘Node +()-> + `g‘RoÙV®ue +(); + +426 +$cÚn + = +$this +-> +»cÜd +-> + `g‘TabË +()-> + `g‘CÚÃùiÚ +(); + +427 +Œy + { + +428 +$cÚn +-> + `begšIÁ”ÇlT¿n§ùiÚ +(); + +430 +$this +-> + `shiáRLV®ues +( +$ÃwLeá +, 2, +$ÃwRoÙ +); + +431 +$this +-> +»cÜd +['Ëv–'] = +$de¡ +['level']; + +432 +$this +-> + `š£¹Node +( +$ÃwLeá +, +$ÃwRight +, +$ÃwRoÙ +); + +437 +$cÚn +-> + `comm™ +(); + +438 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +439 +$cÚn +-> + `rÞlback +(); + +440 +throw + +$e +; + +443  +Œue +; + +444 + } +} + +452 +public + +funùiÚ + + $š£¹AsNextSiblšgOf +( +Doùrše_RecÜd + +$de¡ +) + +455 ià( +$this +-> + `isV®idNode +()) { + +456  +çl£ +; + +460 +$de¡ + ==ð +$this +-> +»cÜd + || + +461 ( +$de¡ +-> + `exi¡s +(è&& +$this +-> +»cÜd +->exi¡s(è&& $de¡-> + `id’tif›r +() === $this->record->identifier()) + +463 +throw + +Ãw + + `Doùrše_T»e_Exû±iÚ +("Cannot insert‚ode‡s‚ext sibling of itself"); + +465  +çl£ +; + +468 +$ÃwLeá + = +$de¡ +-> + `g‘Node +()-> + `g‘RightV®ue +() + 1; + +469 +$ÃwRight + = +$de¡ +-> + `g‘Node +()-> + `g‘RightV®ue +() + 2; + +470 +$ÃwRoÙ + = +$de¡ +-> + `g‘Node +()-> + `g‘RoÙV®ue +(); + +472 +$cÚn + = +$this +-> +»cÜd +-> + `g‘TabË +()-> + `g‘CÚÃùiÚ +(); + +473 +Œy + { + +474 +$cÚn +-> + `begšIÁ”ÇlT¿n§ùiÚ +(); + +476 +$this +-> + `shiáRLV®ues +( +$ÃwLeá +, 2, +$ÃwRoÙ +); + +477 +$this +-> +»cÜd +['Ëv–'] = +$de¡ +['level']; + +478 +$this +-> + `š£¹Node +( +$ÃwLeá +, +$ÃwRight +, +$ÃwRoÙ +); + +482 +$cÚn +-> + `comm™ +(); + +483 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +484 +$cÚn +-> + `rÞlback +(); + +485 +throw + +$e +; + +488  +Œue +; + +489 + } +} + +497 +public + +funùiÚ + + $š£¹AsFœ¡ChždOf +( +Doùrše_RecÜd + +$de¡ +) + +500 ià( +$this +-> + `isV®idNode +()) { + +501  +çl£ +; + +505 +$de¡ + ==ð +$this +-> +»cÜd + || + +506 ( +$de¡ +-> + `exi¡s +(è&& +$this +-> +»cÜd +->exi¡s(è&& $de¡-> + `id’tif›r +() === $this->record->identifier()) + +508 +throw + +Ãw + + `Doùrše_T»e_Exû±iÚ +("Cannot insert‚ode‡s first child of itself"); + +510  +çl£ +; + +513 +$ÃwLeá + = +$de¡ +-> + `g‘Node +()-> + `g‘LeáV®ue +() + 1; + +514 +$ÃwRight + = +$de¡ +-> + `g‘Node +()-> + `g‘LeáV®ue +() + 2; + +515 +$ÃwRoÙ + = +$de¡ +-> + `g‘Node +()-> + `g‘RoÙV®ue +(); + +517 +$cÚn + = +$this +-> +»cÜd +-> + `g‘TabË +()-> + `g‘CÚÃùiÚ +(); + +518 +Œy + { + +519 +$cÚn +-> + `begšIÁ”ÇlT¿n§ùiÚ +(); + +521 +$this +-> + `shiáRLV®ues +( +$ÃwLeá +, 2, +$ÃwRoÙ +); + +522 +$this +-> +»cÜd +['Ëv–'] = +$de¡ +['level'] + 1; + +523 +$this +-> + `š£¹Node +( +$ÃwLeá +, +$ÃwRight +, +$ÃwRoÙ +); + +528 +$cÚn +-> + `comm™ +(); + +529 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +530 +$cÚn +-> + `rÞlback +(); + +531 +throw + +$e +; + +534  +Œue +; + +535 + } +} + +543 +public + +funùiÚ + + $š£¹AsLa¡ChždOf +( +Doùrše_RecÜd + +$de¡ +) + +546 ià( +$this +-> + `isV®idNode +()) { + +547  +çl£ +; + +551 +$de¡ + ==ð +$this +-> +»cÜd + || + +552 ( +$de¡ +-> + `exi¡s +(è&& +$this +-> +»cÜd +->exi¡s(è&& $de¡-> + `id’tif›r +() === $this->record->identifier()) + +554 +throw + +Ãw + + `Doùrše_T»e_Exû±iÚ +("Cannot insert‚ode‡s†ast child of itself"); + +556  +çl£ +; + +559 +$ÃwLeá + = +$de¡ +-> + `g‘Node +()-> + `g‘RightV®ue +(); + +560 +$ÃwRight + = +$de¡ +-> + `g‘Node +()-> + `g‘RightV®ue +() + 1; + +561 +$ÃwRoÙ + = +$de¡ +-> + `g‘Node +()-> + `g‘RoÙV®ue +(); + +563 +$cÚn + = +$this +-> +»cÜd +-> + `g‘TabË +()-> + `g‘CÚÃùiÚ +(); + +564 +Œy + { + +565 +$cÚn +-> + `begšIÁ”ÇlT¿n§ùiÚ +(); + +567 +$this +-> + `shiáRLV®ues +( +$ÃwLeá +, 2, +$ÃwRoÙ +); + +568 +$this +-> +»cÜd +['Ëv–'] = +$de¡ +['level'] + 1; + +569 +$this +-> + `š£¹Node +( +$ÃwLeá +, +$ÃwRight +, +$ÃwRoÙ +); + +574 +$cÚn +-> + `comm™ +(); + +575 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +576 +$cÚn +-> + `rÞlback +(); + +577 +throw + +$e +; + +580  +Œue +; + +581 + } +} + +592 +´iv©e + +funùiÚ + + $_moveB‘w“nT»es +( +Doùrše_RecÜd + +$de¡ +, +$ÃwLeáV®ue +, +$moveTy³ +) + +594 +$cÚn + = +$this +-> +»cÜd +-> + `g‘TabË +()-> + `g‘CÚÃùiÚ +(); + +596 +Œy + { + +597 +$cÚn +-> + `begšIÁ”ÇlT¿n§ùiÚ +(); + +600 +$ÃwRoÙ + = +$de¡ +-> + `g‘Node +()-> + `g‘RoÙV®ue +(); + +601 +$ÞdRoÙ + = +$this +-> + `g‘RoÙV®ue +(); + +602 +$ÞdLá + = +$this +-> + `g‘LeáV®ue +(); + +603 +$ÞdRgt + = +$this +-> + `g‘RightV®ue +(); + +604 +$ÞdLev– + = +$this +-> +»cÜd +['level']; + +607 +$this +-> + `shiáRlV®ues +( +$ÃwLeáV®ue +, +$ÞdRgt + - +$ÞdLá + - 1, +$ÃwRoÙ +); + +610 +$this +-> + `£tRoÙV®ue +( +$ÃwRoÙ +); + +611 +$this +-> +»cÜd +-> + `§ve +(); + +614 +$this +-> + `£tRightV®ue +(0); + +615 +$this +-> + `£tLeáV®ue +(0); + +617  +$moveTy³ +) { + +619 +$this +-> + `š£¹AsP»vSiblšgOf +( +$de¡ +); + +622 +$this +-> + `š£¹AsFœ¡ChždOf +( +$de¡ +); + +625 +$this +-> + `š£¹AsNextSiblšgOf +( +$de¡ +); + +628 +$this +-> + `š£¹AsLa¡ChždOf +( +$de¡ +); + +631 +throw + +Ãw + + `Doùrše_Node_Exû±iÚ +("Unknown move operation: $moveType."); + +634 +$diff + = +$ÞdRgt + - +$ÞdLá +; + +635 +$this +-> + `£tRightV®ue +($this-> + `g‘LeáV®ue +(è+ ( +$ÞdRgt + - +$ÞdLá +)); + +636 +$this +-> +»cÜd +-> + `§ve +(); + +638 +$ÃwLev– + = +$this +-> +»cÜd +['level']; + +639 +$Ëv–Diff + = +$ÃwLev– + - +$ÞdLev– +; + +642 +$diff + = +$this +-> + `g‘LeáV®ue +(è- +$ÞdLá +; + +643 +$compڒtName + = +$this +-> +_Œ“ +-> + `g‘Ba£Compڒt +(); + +644 +$roÙCÞName + = +$this +-> +_Œ“ +-> + `g‘A‰ribu‹ +('rootColumnName'); + +647 +$q + = +Doùrše_CÜe +:: + `g‘TabË +( +$compڒtName +) + +648 -> + `ü—‹Qu”y +() + +649 -> + `upd©e +() + +650 -> + `£t +( +$compڒtName + . '.lá', $compڒtName.'.lá + ?', +$diff +) + +651 -> + `£t +( +$compڒtName + . '.rgt', $compڒtName.'.rgˆ+ ?', +$diff +) + +652 -> + `£t +( +$compڒtName + . '.Ëv–', $compڒtName.'.Ëv– + ?', +$Ëv–Diff +) + +653 -> + `£t +( +$compڒtName + . '.' . +$roÙCÞName +, '?', +$ÃwRoÙ +) + +654 -> + `wh”e +( +$compڒtName + . '.lá > ? AND ' . $compڒtNam. '.rgˆ< ?', + `¬¿y +( +$ÞdLá +, +$ÞdRgt +)); + +655 +$q + = +$this +-> +_Œ“ +-> + `»tuºQu”yW™hRoÙId +($q, +$ÞdRoÙ +); + +656 +$q +-> + `execu‹ +(); + +659 +$fœ¡ + = +$ÞdRgt + + 1; + +660 +$d– + = +$ÞdLá + - +$ÞdRgt + - 1; + +661 +$this +-> + `shiáRLV®ues +( +$fœ¡ +, +$d– +, +$ÞdRoÙ +); + +663 +$cÚn +-> + `comm™ +(); + +665  +Œue +; + +666 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +667 +$cÚn +-> + `rÞlback +(); + +668 +throw + +$e +; + +671  +çl£ +; + +672 + } +} + +678 +public + +funùiÚ + + $moveAsP»vSiblšgOf +( +Doùrše_RecÜd + +$de¡ +) + +681 +$de¡ + ==ð +$this +-> +»cÜd + || + +682 ( +$de¡ +-> + `exi¡s +(è&& +$this +-> +»cÜd +->exi¡s(è&& $de¡-> + `id’tif›r +() === $this->record->identifier()) + +684 +throw + +Ãw + + `Doùrše_T»e_Exû±iÚ +("Cannot move‚ode‡s…revious sibling of itself"); + +686  +çl£ +; + +689 ià( +$de¡ +-> + `g‘Node +()-> + `g‘RoÙV®ue +(è!ð +$this +->getRootValue()) { + +691  +$this +-> + `_moveB‘w“nT»es +( +$de¡ +, $de¡-> + `g‘Node +()-> + `g‘LeáV®ue +(), +__FUNCTION__ +); + +694 +$ÞdLev– + = +$this +-> +»cÜd +['level']; + +695 +$this +-> +»cÜd +['Ëv–'] = +$de¡ +['level']; + +696 +$this +-> + `upd©eNode +( +$de¡ +-> + `g‘Node +()-> + `g‘LeáV®ue +(), $this-> +»cÜd +['Ëv–'] - +$ÞdLev– +); + +699  +Œue +; + +700 + } +} + +706 +public + +funùiÚ + + $moveAsNextSiblšgOf +( +Doùrše_RecÜd + +$de¡ +) + +709 +$de¡ + ==ð +$this +-> +»cÜd + || + +710 ( +$de¡ +-> + `exi¡s +(è&& +$this +-> +»cÜd +->exi¡s(è&& $de¡-> + `id’tif›r +() === $this->record->identifier()) + +712 +throw + +Ãw + + `Doùrše_T»e_Exû±iÚ +("Cannot move‚ode‡s‚ext sibling of itself"); + +714  +çl£ +; + +717 ià( +$de¡ +-> + `g‘Node +()-> + `g‘RoÙV®ue +(è!ð +$this +->getRootValue()) { + +719  +$this +-> + `_moveB‘w“nT»es +( +$de¡ +, $de¡-> + `g‘Node +()-> + `g‘RightV®ue +(è+ 1, +__FUNCTION__ +); + +722 +$ÞdLev– + = +$this +-> +»cÜd +['level']; + +723 +$this +-> +»cÜd +['Ëv–'] = +$de¡ +['level']; + +724 +$this +-> + `upd©eNode +( +$de¡ +-> + `g‘Node +()-> + `g‘RightV®ue +(è+ 1, $this-> +»cÜd +['Ëv–'] - +$ÞdLev– +); + +727  +Œue +; + +728 + } +} + +734 +public + +funùiÚ + + $moveAsFœ¡ChždOf +( +Doùrše_RecÜd + +$de¡ +) + +737 +$de¡ + ==ð +$this +-> +»cÜd + || $this-> + `isAnû¡ÜOf +($dest) || + +738 ( +$de¡ +-> + `exi¡s +(è&& +$this +-> +»cÜd +->exi¡s(è&& $de¡-> + `id’tif›r +() === $this->record->identifier()) + +740 +throw + +Ãw + + `Doùrše_T»e_Exû±iÚ +("Cannot move‚ode‡s first child of itself or into‡ descendant"); + +742  +çl£ +; + +745 ià( +$de¡ +-> + `g‘Node +()-> + `g‘RoÙV®ue +(è!ð +$this +->getRootValue()) { + +747  +$this +-> + `_moveB‘w“nT»es +( +$de¡ +, $de¡-> + `g‘Node +()-> + `g‘LeáV®ue +(è+ 1, +__FUNCTION__ +); + +750 +$ÞdLev– + = +$this +-> +»cÜd +['level']; + +751 +$this +-> +»cÜd +['Ëv–'] = +$de¡ +['level'] + 1; + +752 +$this +-> + `upd©eNode +( +$de¡ +-> + `g‘Node +()-> + `g‘LeáV®ue +(è+ 1, $this-> +»cÜd +['Ëv–'] - +$ÞdLev– +); + +755  +Œue +; + +756 + } +} + +762 +public + +funùiÚ + + $moveAsLa¡ChždOf +( +Doùrše_RecÜd + +$de¡ +) + +765 +$de¡ + ==ð +$this +-> +»cÜd + || $this-> + `isAnû¡ÜOf +($dest) || + +766 ( +$de¡ +-> + `exi¡s +(è&& +$this +-> +»cÜd +->exi¡s(è&& $de¡-> + `id’tif›r +() === $this->record->identifier()) + +768 +throw + +Ãw + + `Doùrše_T»e_Exû±iÚ +("Cannot move‚ode‡s†ast child of itself or into‡ descendant"); + +770  +çl£ +; + +773 ià( +$de¡ +-> + `g‘Node +()-> + `g‘RoÙV®ue +(è!ð +$this +->getRootValue()) { + +775  +$this +-> + `_moveB‘w“nT»es +( +$de¡ +, $de¡-> + `g‘Node +()-> + `g‘RightV®ue +(), +__FUNCTION__ +); + +778 +$ÞdLev– + = +$this +-> +»cÜd +['level']; + +779 +$this +-> +»cÜd +['Ëv–'] = +$de¡ +['level'] + 1; + +780 +$this +-> + `upd©eNode +( +$de¡ +-> + `g‘Node +()-> + `g‘RightV®ue +(), $this-> +»cÜd +['Ëv–'] - +$ÞdLev– +); + +783  +Œue +; + +784 + } +} + +791 +public + +funùiÚ + + $makeRoÙ +( +$ÃwRoÙId +) + +794 ià( +$this +-> + `g‘LeáV®ue +(è=ð1 || ! $this-> +_Œ“ +-> + `g‘A‰ribu‹ +('hasManyRoots')) { + +795  +çl£ +; + +798 +$ÞdRgt + = +$this +-> + `g‘RightV®ue +(); + +799 +$ÞdLá + = +$this +-> + `g‘LeáV®ue +(); + +800 +$ÞdRoÙ + = +$this +-> + `g‘RoÙV®ue +(); + +801 +$ÞdLev– + = +$this +-> +»cÜd +['level']; + +803 +$cÚn + = +$this +-> +»cÜd +-> + `g‘TabË +()-> + `g‘CÚÃùiÚ +(); + +804 +Œy + { + +805 +$cÚn +-> + `begšIÁ”ÇlT¿n§ùiÚ +(); + +808 +$diff + = 1 - +$ÞdLá +; + +809 +$ÃwRoÙ + = +$ÃwRoÙId +; + +810 +$compڒtName + = +$this +-> +_Œ“ +-> + `g‘Ba£Compڒt +(); + +811 +$roÙCÞName + = +$this +-> +_Œ“ +-> + `g‘A‰ribu‹ +('rootColumnName'); + +812 +$q + = +Doùrše_CÜe +:: + `g‘TabË +( +$compڒtName +) + +813 -> + `ü—‹Qu”y +() + +814 -> + `upd©e +() + +815 -> + `£t +( +$compڒtName + . '.lá', $compڒtName.'.lá + ?', + `¬¿y +( +$diff +)) + +816 -> + `£t +( +$compڒtName + . '.rgt', $compڒtName.'.rgˆ+ ?', + `¬¿y +( +$diff +)) + +817 -> + `£t +( +$compڒtName + . '.Ëv–', $compڒtName.'.Ëv– - ?', + `¬¿y +( +$ÞdLev– +)) + +818 -> + `£t +( +$compڒtName + . '.' . +$roÙCÞName +, '?', + `¬¿y +( +$ÃwRoÙ +)) + +819 -> + `wh”e +( +$compڒtName + . '.lá > ? AND ' . $compڒtNam. '.rgˆ< ?', + `¬¿y +( +$ÞdLá +, +$ÞdRgt +)); + +820 +$q + = +$this +-> +_Œ“ +-> + `»tuºQu”yW™hRoÙId +($q, +$ÞdRoÙ +); + +821 +$q +-> + `execu‹ +(); + +824 +$fœ¡ + = +$ÞdRgt + + 1; + +825 +$d– + = +$ÞdLá + - +$ÞdRgt + - 1; + +826 +$this +-> + `shiáRLV®ues +( +$fœ¡ +, +$d– +, $this-> + `g‘RoÙV®ue +()); + +829 +$this +-> + `£tLeáV®ue +(1); + +830 +$this +-> + `£tRightV®ue +( +$ÞdRgt + - +$ÞdLá + + 1); + +831 +$this +-> + `£tRoÙV®ue +( +$ÃwRoÙId +); + +832 +$this +-> +»cÜd +['level'] = 0; + +834 +$this +-> +»cÜd +-> + `§ve +(); + +836 +$cÚn +-> + `comm™ +(); + +838  +Œue +; + +839 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +840 +$cÚn +-> + `rÞlback +(); + +841 +throw + +$e +; + +844  +çl£ +; + +845 + } +} + +851 +public + +funùiÚ + + $addChžd +( +Doùrše_RecÜd + +$»cÜd +) + +853 +$»cÜd +-> + `g‘Node +()-> + `š£¹AsLa¡ChždOf +( +$this +-> + `g‘RecÜd +()); + +854 + } +} + +861 +public + +funùiÚ + + $isL—f +() + +863  (( +$this +-> + `g‘RightV®ue +(è- $this-> + `g‘LeáV®ue +()) == 1); + +864 + } +} + +871 +public + +funùiÚ + + $isRoÙ +() + +873  ( +$this +-> + `g‘LeáV®ue +() == 1); + +874 + } +} + +881 +public + +funùiÚ + + $isEqu®To +( +Doùrše_RecÜd + +$subj +) + +883  (( +$this +-> + `g‘LeáV®ue +(è=ð +$subj +-> + `g‘Node +()->getLeftValue()) && + +884 ( +$this +-> + `g‘RightV®ue +(è=ð +$subj +-> + `g‘Node +()->getRightValue()) && + +885 ( +$this +-> + `g‘RoÙV®ue +(è=ð +$subj +-> + `g‘Node +()->getRootValue()) + +887 + } +} + +894 +public + +funùiÚ + + $isDesûndªtOf +( +Doùrše_RecÜd + +$subj +) + +896  (( +$this +-> + `g‘LeáV®ue +(è> +$subj +-> + `g‘Node +()->getLeftValue()) && + +897 ( +$this +-> + `g‘RightV®ue +(è< +$subj +-> + `g‘Node +()->getRightValue()) && + +898 ( +$this +-> + `g‘RoÙV®ue +(è=ð +$subj +-> + `g‘Node +()->getRootValue())); + +899 + } +} + +906 +public + +funùiÚ + + $isDesûndªtOfOrEqu®To +( +Doùrše_RecÜd + +$subj +) + +908  (( +$this +-> + `g‘LeáV®ue +(è>ð +$subj +-> + `g‘Node +()->getLeftValue()) && + +909 ( +$this +-> + `g‘RightV®ue +(è<ð +$subj +-> + `g‘Node +()->getRightValue()) && + +910 ( +$this +-> + `g‘RoÙV®ue +(è=ð +$subj +-> + `g‘Node +()->getRootValue())); + +911 + } +} + +918 +public + +funùiÚ + + $isAnû¡ÜOf +( +Doùrše_RecÜd + +$subj +) + +920  (( +$subj +-> + `g‘Node +()-> + `g‘LeáV®ue +(è> +$this +->getLeftValue()) && + +921 ( +$subj +-> + `g‘Node +()-> + `g‘RightV®ue +(è< +$this +->getRightValue()) && + +922 ( +$subj +-> + `g‘Node +()-> + `g‘RoÙV®ue +(è=ð +$this +->getRootValue())); + +923 + } +} + +930 +public + +funùiÚ + + $isV®idNode +( +$»cÜd + = +nuÎ +) + +932 ià( +$»cÜd + ==ð +nuÎ +) { + +933  ( +$this +-> + `g‘RightV®ue +(è> $this-> + `g‘LeáV®ue +()); + +934 } iàÐ +$»cÜd + +š¡ªûof + +Doùrše_RecÜd + ) { + +935  ( +$»cÜd +-> + `g‘Node +()-> + `g‘RightV®ue +(è> $»cÜd->g‘Node()-> + `g‘LeáV®ue +()); + +937  +çl£ +; + +939 + } +} + +945 +public + +funùiÚ + + $d‘ach +() + +947 +$this +-> + `£tLeáV®ue +(0); + +948 +$this +-> + `£tRightV®ue +(0); + +949 + } +} + +955 +public + +funùiÚ + + $d–‘e +() + +957 +$cÚn + = +$this +-> +»cÜd +-> + `g‘TabË +()-> + `g‘CÚÃùiÚ +(); + +958 +Œy + { + +959 +$cÚn +-> + `begšIÁ”ÇlT¿n§ùiÚ +(); + +962 +$ÞdRoÙ + = +$this +-> + `g‘RoÙV®ue +(); + +963 +$q + = +$this +-> +_Œ“ +-> + `g‘Ba£Qu”y +(); + +965 +$ba£AlŸs + = +$this +-> +_Œ“ +-> + `g‘Ba£AlŸs +(); + +966 +$compڒtName + = +$this +-> +_Œ“ +-> + `g‘Ba£Compڒt +(); + +968 +$q + = $q-> + `addWh”e +("$ba£AlŸs.lá >ð? AND $ba£AlŸs.rgˆ<ð?", + `¬¿y +( +$this +-> + `g‘LeáV®ue +(), $this-> + `g‘RightV®ue +())); + +970 +$q + = +$this +-> +_Œ“ +-> + `»tuºQu”yW™hRoÙId +($q, +$ÞdRoÙ +); + +972 +$cÞl + = +$q +-> + `execu‹ +(); + +974 +$cÞl +-> + `d–‘e +(); + +976 +$fœ¡ + = +$this +-> + `g‘RightV®ue +() + 1; + +977 +$d– + = +$this +-> + `g‘LeáV®ue +(è- $this-> + `g‘RightV®ue +() - 1; + +978 +$this +-> + `shiáRLV®ues +( +$fœ¡ +, +$d– +, +$ÞdRoÙ +); + +980 +$cÚn +-> + `comm™ +(); + +981 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +982 +$cÚn +-> + `rÞlback +(); + +983 +throw + +$e +; + +986  +Œue +; + +987 + } +} + +995 +´iv©e + +funùiÚ + + $š£¹Node +( +$de¡Leá + = 0, +$de¡Right + = 0, +$de¡RoÙ + = 1) + +997 +$this +-> + `£tLeáV®ue +( +$de¡Leá +); + +998 +$this +-> + `£tRightV®ue +( +$de¡Right +); + +999 +$this +-> + `£tRoÙV®ue +( +$de¡RoÙ +); + +1000 +$this +-> +»cÜd +-> + `§ve +(); + +1001 + } +} + +1009 +´iv©e + +funùiÚ + + $upd©eNode +( +$de¡Leá +, +$Ëv–Diff +) + +1011 +$compڒtName + = +$this +-> +_Œ“ +-> + `g‘Ba£Compڒt +(); + +1012 +$Ëá + = +$this +-> + `g‘LeáV®ue +(); + +1013 +$right + = +$this +-> + `g‘RightV®ue +(); + +1014 +$roÙId + = +$this +-> + `g‘RoÙV®ue +(); + +1016 +$Œ“Size + = +$right + - +$Ëá + + 1; + +1018 +$cÚn + = +$this +-> +»cÜd +-> + `g‘TabË +()-> + `g‘CÚÃùiÚ +(); + +1019 +Œy + { + +1020 +$cÚn +-> + `begšIÁ”ÇlT¿n§ùiÚ +(); + +1023 +$this +-> + `shiáRLV®ues +( +$de¡Leá +, +$Œ“Size +, +$roÙId +); + +1025 ià( +$Ëá + >ð +$de¡Leá +) { + +1026 +$Ëá + +ð +$Œ“Size +; + +1027 +$right + +ð +$Œ“Size +; + +1031 +$q + = +Doùrše_CÜe +:: + `g‘TabË +( +$compڒtName +) + +1032 -> + `ü—‹Qu”y +() + +1033 -> + `upd©e +() + +1034 -> + `£t +( +$compڒtName + . '.Ëv–', $compڒtName.'.Ëv– + ?', + `¬¿y +( +$Ëv–Diff +)) + +1035 -> + `wh”e +( +$compڒtName + . '.lá > ? AND ' . $compڒtNam. '.rgˆ< ?', + `¬¿y +( +$Ëá +, +$right +)); + +1036 +$q + = +$this +-> +_Œ“ +-> + `»tuºQu”yW™hRoÙId +($q, +$roÙId +); + +1037 +$q +-> + `execu‹ +(); + +1040 +$this +-> + `shiáRLRªge +( +$Ëá +, +$right +, +$de¡Leá + - $Ëá, +$roÙId +); + +1043 +$this +-> + `shiáRLV®ues +( +$right + + 1, - +$Œ“Size +, +$roÙId +); + +1045 +$this +-> +»cÜd +-> + `§ve +(); + +1046 +$this +-> +»cÜd +-> + `»äesh +(); + +1048 +$cÚn +-> + `comm™ +(); + +1049 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +1050 +$cÚn +-> + `rÞlback +(); + +1051 +throw + +$e +; + +1054  +Œue +; + +1055 + } +} + +1066 +´iv©e + +funùiÚ + + $shiáRlV®ues +( +$fœ¡ +, +$d– +, +$roÙId + = 1) + +1069 +$compڒtName + = +$this +-> +_Œ“ +-> + `g‘Ba£Compڒt +(); + +1071 +$qLeá + = +Doùrše_CÜe +:: + `g‘TabË +( +$compڒtName +) + +1072 -> + `ü—‹Qu”y +() + +1073 -> + `upd©e +( +$compڒtName +); + +1075 +$qRight + = +Doùrše_CÜe +:: + `g‘TabË +( +$compڒtName +) + +1076 -> + `ü—‹Qu”y +() + +1077 -> + `upd©e +( +$compڒtName +); + +1079 +$qLeá + = $qLeá-> + `£t +( +$compڒtName + . '.lá', $compڒtName.'.lá + ?', +$d– +) + +1080 -> + `wh”e +( +$compڒtName + . '.lá >ð?', +$fœ¡ +); + +1081 +$qLeá + = +$this +-> +_Œ“ +-> + `»tuºQu”yW™hRoÙId +($qLeá, +$roÙId +); + +1083 +$»suÉLeá + = +$qLeá +-> + `execu‹ +(); + +1086 +$qRight + = $qRight-> + `£t +( +$compڒtName + . '.rgt', $compڒtName.'.rgˆ+ ?', +$d– +) + +1087 -> + `wh”e +( +$compڒtName + . '.rgˆ>ð?', +$fœ¡ +); + +1089 +$qRight + = +$this +-> +_Œ“ +-> + `»tuºQu”yW™hRoÙId +($qRight, +$roÙId +); + +1091 +$»suÉRight + = +$qRight +-> + `execu‹ +(); + +1092 + } +} + +1105 +´iv©e + +funùiÚ + + $shiáRlRªge +( +$fœ¡ +, +$Ï¡ +, +$d– +, +$roÙId + = 1) + +1107 +$compڒtName + = +$this +-> +_Œ“ +-> + `g‘Ba£Compڒt +(); + +1109 +$qLeá + = +Doùrše_CÜe +:: + `g‘TabË +( +$compڒtName +) + +1110 -> + `ü—‹Qu”y +() + +1111 -> + `upd©e +(); + +1113 +$qRight + = +Doùrše_CÜe +:: + `g‘TabË +( +$compڒtName +) + +1114 -> + `ü—‹Qu”y +() + +1115 -> + `upd©e +(); + +1118 +$qLeá + = $qLeá-> + `£t +( +$compڒtName + . '.lá', $compڒtName.'.lá + ?', +$d– +) + +1119 -> + `wh”e +( +$compڒtName + . '.lá >ð? AND ' . $compڒtNam. '.lá <ð?', + `¬¿y +( +$fœ¡ +, +$Ï¡ +)); + +1121 +$qLeá + = +$this +-> +_Œ“ +-> + `»tuºQu”yW™hRoÙId +($qLeá, +$roÙId +); + +1123 +$»suÉLeá + = +$qLeá +-> + `execu‹ +(); + +1126 +$qRight + = $qRight-> + `£t +( +$compڒtName + . '.rgt', $compڒtName.'.rgˆ+ ?', +$d– +) + +1127 -> + `wh”e +( +$compڒtName + . '.rgˆ>ð? AND ' . $compڒtNam. '.rgˆ<ð?', + `¬¿y +( +$fœ¡ +, +$Ï¡ +)); + +1129 +$qRight + = +$this +-> +_Œ“ +-> + `»tuºQu”yW™hRoÙId +($qRight, +$roÙId +); + +1131 +$»suÉRight + = +$qRight +-> + `execu‹ +(); + +1132 + } +} + +1139 +public + +funùiÚ + + $g‘LeáV®ue +() + +1141  +$this +-> +»cÜd +-> + `g‘ +('lft'); + +1142 + } +} + +1149 +public + +funùiÚ + + $£tLeáV®ue +( +$lá +) + +1151 +$this +-> +»cÜd +-> + `£t +('lá', +$lá +); + +1152 + } +} + +1159 +public + +funùiÚ + + $g‘RightV®ue +() + +1161  +$this +-> +»cÜd +-> + `g‘ +('rgt'); + +1162 + } +} + +1169 +public + +funùiÚ + + $£tRightV®ue +( +$rgt +) + +1171 +$this +-> +»cÜd +-> + `£t +('rgt', +$rgt +); + +1172 + } +} + +1179 +public + +funùiÚ + + $g‘Lev– +() + +1181 iàÐ! + `is£t +( +$this +-> +»cÜd +['level'])) { + +1182 +$ba£AlŸs + = +$this +-> +_Œ“ +-> + `g‘Ba£AlŸs +(); + +1183 +$compڒtName + = +$this +-> +_Œ“ +-> + `g‘Ba£Compڒt +(); + +1184 +$q + = +$this +-> +_Œ“ +-> + `g‘Ba£Qu”y +(); + +1185 +$q + = $q-> + `addWh”e +("$ba£AlŸs.lá < ? AND $ba£AlŸs.rgˆ> ?", + `¬¿y +( +$this +-> + `g‘LeáV®ue +(), $this-> + `g‘RightV®ue +())); + +1187 +$q + = +$this +-> +_Œ“ +-> + `»tuºQu”yW™hRoÙId +($q, $this-> + `g‘RoÙV®ue +()); + +1189 +$cÞl + = +$q +-> + `execu‹ +(); + +1191 +$this +-> +»cÜd +['Ëv–'] = + `couÁ +( +$cÞl +) ? count($coll) : 0; + +1193  +$this +-> +»cÜd +['level']; + +1194 + } +} + +1200 +public + +funùiÚ + + $g‘RoÙV®ue +() + +1202 ià( +$this +-> +_Œ“ +-> + `g‘A‰ribu‹ +('hasManyRoots')) { + +1203  +$this +-> +»cÜd +-> + `g‘ +($this-> +_Œ“ +-> + `g‘A‰ribu‹ +('rootColumnName')); + +1206 + } +} + +1213 +public + +funùiÚ + + $£tRoÙV®ue +( +$v®ue +) + +1215 ià( +$this +-> +_Œ“ +-> + `g‘A‰ribu‹ +('hasManyRoots')) { + +1216 +$this +-> +»cÜd +-> + `£t +($this-> +_Œ“ +-> + `g‘A‰ribu‹ +('roÙCÞumnName'), +$v®ue +); + +1218 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Node/NestedSet/LevelOrderIterator.php + +1 + `g‘TabË +()-> + `g‘CompڒtName +(); + +74 +$q + = +$»cÜd +-> + `g‘TabË +()-> + `ü—‹Qu”y +(); + +76 +$·¿ms + = + `¬¿y +( +$»cÜd +-> + `g‘ +('lft'), $record->get('rgt')); + +77 ià( + `is£t +( +$Ýts +['include_record']) && $opts['include_record']) { + +78 +$qu”y + = +$q +-> + `wh”e +("$compڒtName.lá >ð? AND $compڒtName.rgˆ<ð?", +$·¿ms +)-> + `Üd”By +("$componentName.lft‡sc"); + +80 +$qu”y + = +$q +-> + `wh”e +("$compڒtName.lá > ? AND $compڒtName.rgˆ< ?", +$·¿ms +)-> + `Üd”By +("$componentName.lft‡sc"); + +83 +$qu”y + = +$»cÜd +-> + `g‘TabË +()-> + `g‘T»e +()-> + `»tuºQu”yW™hRoÙId +($qu”y, $»cÜd-> + `g‘Node +()-> + `g‘RoÙV®ue +()); + +85 +$this +-> +maxLev– + = + `is£t +( +$Ýts +['d•th']è? ($Ýts['d•th'] + +$»cÜd +-> + `g‘Node +()-> + `g‘Lev– +()) : 0; + +86 +$this +-> +ÝtiÚs + = +$Ýts +; + +87 +$this +-> +cÞËùiÚ + = + `is£t +( +$Ýts +['cÞËùiÚ']è? $Ýts['cÞËùiÚ'] : +$qu”y +-> + `execu‹ +(); + +88 +$this +-> +keys + = $this-> +cÞËùiÚ +-> + `g‘Keys +(); + +89 +$this +-> +couÁ + = $this-> +cÞËùiÚ +-> + `couÁ +(); + +90 +$this +-> +šdex + = -1; + +91 +$this +-> +Ëv– + = +$»cÜd +-> + `g‘Node +()-> + `g‘Lev– +(); + +92 +$this +-> +´evLeá + = +$»cÜd +-> + `g‘Node +()-> + `g‘LeáV®ue +(); + +95 +$»cÜd +-> + `g‘TabË +()-> + `þ—r +(); + +103 +public + +funùiÚ + + $»wšd +() + +105 +$this +-> +šdex + = -1; + +106 +$this +-> +key + = +nuÎ +; + +107 + } +} + +114 +public + +funùiÚ + + $key +() + +116  +$this +-> +key +; + +117 + } +} + +124 +public + +funùiÚ + + $cu¼’t +() + +126 +$»cÜd + = +$this +-> +cÞËùiÚ +-> + `g‘ +($this-> +key +); + +127 +$»cÜd +-> + `g‘Node +()-> + `£tLev– +( +$this +-> +Ëv– +); + +128  +$»cÜd +; + +129 + } +} + +136 +public + +funùiÚ + + $Ãxt +() + +138  +$cu¼’t + = +$this +-> + `advªûIndex +()) { + +139 ià( +$this +-> +maxLev– + && ($this-> +Ëv– + > $this->maxLevel)) { + +143  +$cu¼’t +; + +146  +çl£ +; + +147 + } +} + +152 +public + +funùiÚ + + $v®id +() + +154  ( +$this +-> +šdex + < $this-> +couÁ +); + +155 + } +} + +157 +public + +funùiÚ + + $couÁ +() + +159  +$this +-> +couÁ +; + +160 + } +} + +162 +´iv©e + +funùiÚ + + $upd©eLev– +() + +164 iàÐ! ( + `is£t +( +$this +-> +ÝtiÚs +['šþude_»cÜd']è&& $this->ÝtiÚs['šþude_»cÜd'] && $this-> +šdex + == 0)) { + +165 +$Ëá + = +$this +-> +cÞËùiÚ +-> + `g‘ +($this-> +key +)-> + `g‘Node +()-> + `g‘LeáV®ue +(); + +166 +$this +-> +Ëv– + +ð$this-> +´evLeá + - +$Ëá + + 2; + +167 +$this +-> +´evLeá + = +$Ëá +; + +169 + } +} + +171 +´iv©e + +funùiÚ + + $advªûIndex +() + +173 +$this +-> +šdex +++; + +174 +$i + = +$this +-> +šdex +; + +175 ià( + `is£t +( +$this +-> +keys +[ +$i +])) { + +176 +$this +-> +key + = $this-> +keys +[ +$i +]; + +177 +$this +-> + `upd©eLev– +(); + +178  +$this +-> + `cu¼’t +(); + +181  +çl£ +; + +182 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Null.php + +1 + `_£tExecu‹d +( +çl£ +); + +90 +$this +-> + `_£tQu”y +( +$qu”y +); + +91 +$this +-> + `_£tPage +( +$·ge +); + +93 +$this +-> + `£tMaxP”Page +( +$maxP”Page +); + +104 +´Ùeùed + +funùiÚ + + `_š™Ÿlize +( +$·¿ms + = + $¬¿y +()) + +107 +$couÁQu”y + = +$this +-> + `g‘CouÁQu”y +(); + +108 +$couÁ + = +$couÁQu”y +-> + `couÁ +( +$this +-> + `g‘CouÁQu”yP¬ams +( +$·¿ms +)); + +110 +$this +-> + `_£tNumResuÉs +( +$couÁ +); + +111 +$this +-> + `_£tExecu‹d +( +Œue +); + +113 +$this +-> + `_adju¡Off£t +(); + +114 + } +} + +123 +´Ùeùed + +funùiÚ + + $_adju¡Off£t +() + +126 +$this +-> + `_£tLa¡Page +( + +127 + `max +(1, + `ûž +( +$this +-> + `g‘NumResuÉs +(è/ $this-> + `g‘MaxP”Page +())) + +129 +$off£t + = ( +$this +-> + `g‘Page +(è- 1è* $this-> + `g‘MaxP”Page +(); + +132 +$p + = +$this +-> + `g‘Qu”y +(); + +133 +$p +-> + `off£t +( +$off£t +); + +134 +$p +-> + `lim™ +( +$this +-> + `g‘MaxP”Page +()); + +135 + } +} + +144 +public + +funùiÚ + + $g‘Execu‹d +() + +146  +$this +-> +_execu‹d +; + +147 + } +} + +157 +´Ùeùed + +funùiÚ + + $_£tExecu‹d +( +$execu‹d +) + +159 +$this +-> +_execu‹d + = +$execu‹d +; + +160 + } +} + +172 +public + +funùiÚ + +g‘Rªge +( +$¿ngeStyË +, +$ÝtiÚs + = + $¬¿y +()) + +174 +$þass + = 'Doùrše_Pag”_Rªge_' . + `ucfœ¡ +( +$¿ngeStyË +); + +176  +Ãw + + `$þass +( +$ÝtiÚs +, +$this +); + +177 + } +} + +186 +public + +funùiÚ + + $g‘NumResuÉs +() + +188 ià( +$this +-> + `g‘Execu‹d +()) { + +189  +$this +-> +_numResuÉs +; + +192 +throw + +Ãw + + `Doùrše_Pag”_Exû±iÚ +( + +195 + } +} + +205 +´Ùeùed + +funùiÚ + + $_£tNumResuÉs +( +$nb +) + +207 +$this +-> +_numResuÉs + = +$nb +; + +208 + } +} + +217 +public + +funùiÚ + + $g‘Fœ¡Page +() + +220 + } +} + +229 +public + +funùiÚ + + $g‘La¡Page +() + +231 ià( +$this +-> + `g‘Execu‹d +()) { + +232  +$this +-> +_Ï¡Page +; + +235 +throw + +Ãw + + `Doùrše_Pag”_Exû±iÚ +( + +238 + } +} + +248 +´Ùeùed + +funùiÚ + + $_£tLa¡Page +( +$·ge +) + +250 +$this +-> +_Ï¡Page + = +$·ge +; + +252 ià( +$this +-> + `g‘Page +(è> +$·ge +) { + +253 +$this +-> + `_£tPage +( +$·ge +); + +255 + } +} + +264 +public + +funùiÚ + + $g‘Page +() + +266  +$this +-> +_·ge +; + +267 + } +} + +276 +public + +funùiÚ + + $g‘NextPage +() + +278 ià( +$this +-> + `g‘Execu‹d +()) { + +279  + `mš +( +$this +-> + `g‘Page +(è+ 1, $this-> + `g‘La¡Page +()); + +282 +throw + +Ãw + + `Doùrše_Pag”_Exû±iÚ +( + +285 + } +} + +294 +public + +funùiÚ + + $g‘P»viousPage +() + +296 ià( +$this +-> + `g‘Execu‹d +()) { + +297  + `max +( +$this +-> + `g‘Page +(è- 1, $this-> + `g‘Fœ¡Page +()); + +300 +throw + +Ãw + + `Doùrše_Pag”_Exû±iÚ +( + +303 + } +} + +312 +public + +funùiÚ + + $g‘Fœ¡Indiû +() + +314  ( +$this +-> + `g‘Page +(è- 1è* $this-> + `g‘MaxP”Page +() + 1; + +315 + } +} + +324 +public + +funùiÚ + + $g‘La¡Indiû +() + +326  + `mš +( +$this +-> + `g‘NumResuÉs +(), ($this-> + `g‘Page +(è* $this-> + `g‘MaxP”Page +())); + +327 + } +} + +336 +public + +funùiÚ + + $haveToPagš©e +() + +338 ià( +$this +-> + `g‘Execu‹d +()) { + +339  +$this +-> + `g‘NumResuÉs +(è> $this-> + `g‘MaxP”Page +(); + +342 +throw + +Ãw + + `Doùrše_Pag”_Exû±iÚ +( + +345 + } +} + +355 +public + +funùiÚ + + $£tPage +( +$·ge +) + +357 +$this +-> + `_£tPage +( +$·ge +); + +358 +$this +-> + `_£tExecu‹d +( +çl£ +); + +359 + } +} + +369 +´Ùeùed + +funùiÚ + + $_£tPage +( +$·ge +) + +371 +$·ge + = + `štv® +($page); + +372 +$this +-> +_·ge + = ( +$·ge + <= 0) ? 1 : $page; + +373 + } +} + +382 +public + +funùiÚ + + $g‘MaxP”Page +() + +384  +$this +-> +_maxP”Page +; + +385 + } +} + +395 +public + +funùiÚ + + $£tMaxP”Page +( +$max +) + +397 ià( +$max + > 0) { + +398 +$this +-> +_maxP”Page + = +$max +; + +399 } ià( +$max + == 0) { + +400 +$this +-> +_maxP”Page + = 25; + +402 +$this +-> +_maxP”Page + = + `abs +( +$max +); + +405 +$this +-> + `_£tExecu‹d +( +çl£ +); + +406 + } +} + +415 +public + +funùiÚ + + $g‘ResuÉsInPage +() + +417 +$·ge + = +$this +-> + `g‘Page +(); + +419 ià( +$·ge + !ð +$this +-> + `g‘La¡Page +()) { + +420  +$this +-> + `g‘MaxP”Page +(); + +423 +$off£t + = ( +$this +-> + `g‘Page +(è- 1è* $this-> + `g‘MaxP”Page +(); + +425  + `abs +( +$this +-> + `g‘NumResuÉs +(è- +$off£t +); + +426 + } +} + +435 +public + +funùiÚ + + $g‘Qu”y +() + +437  +$this +-> +_qu”y +; + +438 + } +} + +449 +´Ùeùed + +funùiÚ + + $_£tQu”y +( +$qu”y +) + +451 ià( + `is_¡ršg +( +$qu”y +)) { + +452 +$qu”y + = +Doùrše_Qu”y +:: + `ü—‹ +() + +453 -> + `·r£DqlQu”y +( +$qu”y +); + +456 +$this +-> +_qu”y + = +$qu”y +; + +457 + } +} + +466 +public + +funùiÚ + + $g‘CouÁQu”y +() + +468  ( +$this +-> +_couÁQu”y + !=ð +nuÎ +è? $this->_couÁQu”y : $this-> +_qu”y +; + +469 + } +} + +482 +public + +funùiÚ + + $£tCouÁQu”y +( +$qu”y +, +$·¿ms + = +nuÎ +) + +484 ià( + `is_¡ršg +( +$qu”y +)) { + +485 +$qu”y + = +Doùrše_Qu”y +:: + `ü—‹ +() + +486 -> + `·r£DqlQu”y +( +$qu”y +); + +489 +$this +-> +_couÁQu”y + = +$qu”y +; + +491 +$this +-> + `£tCouÁQu”yP¬ams +( +$·¿ms +); + +493 +$this +-> + `_£tExecu‹d +( +çl£ +); + +494 + } +} + +503 +public + +funùiÚ + +g‘CouÁQu”yP¬ams +( +$deçuÉP¬ams + = + $¬¿y +()) + +505  ( +$this +-> +_couÁQu”yP¬ams + !=ð +nuÎ +è? $this->_couÁQu”yP¬am : +$deçuÉP¬ams +; + +506 + } +} + +518 +public + +funùiÚ + +£tCouÁQu”yP¬ams +( +$·¿ms + = +¬¿y +(), +$­³nd + = +çl£ +) + +520 ià( +$­³nd + && +is_¬¿y +( +$this +-> +_couÁQu”yP¬ams +)) { + +521 +$this +-> +_couÁQu”yP¬ams + = +¬¿y_m”ge +($this->_couÁQu”yP¬ams, +$·¿ms +); + +523 ià( + g$·¿ms + !=ð +nuÎ + && ! +is_¬¿y +( +$·¿ms +)) { + +524 +$·¿ms + = +¬¿y +($params); + +527 + g$this +-> + g_couÁQu”yP¬ams + = +$·¿ms +; + +530 + g$this +-> +_£tExecu‹d +( +çl£ +); + +542 +public + +funùiÚ + +execu‹ +( +$·¿ms + = +¬¿y +(), +$hyd¿tiÚMode + = +nuÎ +) + +544 iàÐ! +$this +-> +g‘Execu‹d +()) { + +545 +$this +-> +_š™Ÿlize +( +$·¿ms +); + +548  + g$this +-> +g‘Qu”y +()-> +execu‹ +( +$·¿ms +, +$hyd¿tiÚMode +); + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Pager/Exception.php + +1 + `_£tPag” +( +$·g” +); + +84 +$this +-> + `_£tPag”Rªge +( +$·g”Rªge +); + +85 +$this +-> + `_£tU¾Mask +( +$u¾Mask +); + +87 +$this +-> + `£tTem¶©e +('[{%page}]'); + +88 +$this +-> + `£tS–eùedTem¶©e +(''); + +89 +$this +-> + `£tS•¬©ÜTem¶©e +(''); + +99 +public + +funùiÚ + + $g‘Pag” +() + +101  +$this +-> +_·g” +; + +102 + } +} + +112 +´Ùeùed + +funùiÚ + + $_£tPag” +( +$·g” +) + +114 +$this +-> +_·g” + = +$·g” +; + +115 + } +} + +126 +public + +funùiÚ + +execu‹ +( +$·¿ms + = +¬¿y +(), +$hyd¿tiÚMode + = +nuÎ +) + +128  +$this +-> +g‘Pag” +()-> +execu‹ +( +$·¿ms +, +$hyd¿tiÚMode +); + +138 +public + +funùiÚ + + $g‘Pag”Rªge +() + +140  +$this +-> +_·g”Rªge +; + +141 + } +} + +151 +´Ùeùed + +funùiÚ + + $_£tPag”Rªge +( +$·g”Rªge +) + +153 +$this +-> +_·g”Rªge + = +$·g”Rªge +; + +154 +$this +-> + `g‘Pag”Rªge +()-> + `£tPag” +($this-> + `g‘Pag” +()); + +155 + } +} + +164 +public + +funùiÚ + + $g‘U¾Mask +() + +166  +$this +-> +_u¾Mask +; + +167 + } +} + +177 +´Ùeùed + +funùiÚ + + $_£tU¾Mask +( +$u¾Mask +) + +179 +$this +-> +_u¾Mask + = +$u¾Mask +; + +180 + } +} + +190 +public + +funùiÚ + + $g‘Tem¶©e +() + +192  +$this +-> +_‹m¶©e +; + +193 + } +} + +204 +public + +funùiÚ + + $£tTem¶©e +( +$‹m¶©e +) + +206 +$this +-> +_‹m¶©e + = +$‹m¶©e +; + +207 + } +} + +216 +public + +funùiÚ + + $g‘S–eùedTem¶©e +() + +218  +$this +-> +_£ËùedTem¶©e +; + +219 + } +} + +229 +public + +funùiÚ + + $£tS–eùedTem¶©e +( +$£ËùedTem¶©e +) + +231 +$this +-> +_£ËùedTem¶©e + = +$£ËùedTem¶©e +; + +232 + } +} + +241 +public + +funùiÚ + + $g‘S•¬©ÜTem¶©e +() + +243  +$this +-> +_£·¿tÜTem¶©e +; + +244 + } +} + +254 +public + +funùiÚ + + $£tS•¬©ÜTem¶©e +( +$£·¿tÜTem¶©e +) + +256 +$this +-> +_£·¿tÜTem¶©e + = +$£·¿tÜTem¶©e +; + +257 + } +} + +272 +public + +funùiÚ + + $addMaskR•Ïûm’t +( +$ÞdMask +, +$ÃwMask +, +$asV®ue + = +çl£ +) + +274 ià(( +$ÞdMask + = + `Œim +($oldMask)) != 'page_number') { + +275 +$this +-> +_maskR•Ïûm’ts +[ +$ÞdMask +] = + `¬¿y +( + +276 'ÃwMask' => +$ÃwMask +, + +277 'asV®ue' => ( +$asV®ue + ==ð +çl£ +è? f®£ : +Œue + + +280 + } +} + +290 +public + +funùiÚ + + $»moveMaskR•Ïûm’t +( +$ÞdMask +) + +292 ià( + `is£t +( +$this +-> +_maskR•Ïûm’ts +[ +$ÞdMask +])) { + +293 +$this +-> +_maskR•Ïûm’ts +[ +$ÞdMask +] = +nuÎ +; + +294 + `un£t +( +$this +-> +_maskR•Ïûm’ts +[ +$ÞdMask +]); + +296 + } +} + +306 +public + +funùiÚ + + $þ—nMaskR•Ïûm’ts +() + +308 +$this +-> +_maskR•Ïûm’ts + = +nuÎ +; + +309 +$this +-> +_maskR•Ïûm’ts + = + `¬¿y +(); + +310 + } +} + +324 +public + +funùiÚ + +di¥Ïy +( +$ÝtiÚs + = +¬¿y +(), +$»tuº + = +çl£ +) + +326 +$¿nge + = +$this +-> +g‘Pag”Rªge +()-> +¿ngeAroundPage +(); + +327 + g$¡r + = ''; + +330  + g$i + = 0, + g$l + = +couÁ +( +$¿nge +); $i < $l; $i++) { + +332 + g$ÝtiÚs +['·ge_numb”'] = +$¿nge +[ +$i +]; + +334 + g$¡r + .ð +$this +-> +´oûssPage +( +$ÝtiÚs +); + +337 ià( + g$i + < + g$l + - 1) { + +338 + g$¡r + .ð +$this +-> +g‘S•¬©ÜTem¶©e +(); + +343 ià( + g$»tuº +) { + +344  + g$¡r +; + +347 +echo + + g$¡r +; + +358 +public + +funùiÚ + +´oûssPage +( +$ÝtiÚs + = + $¬¿y +()) + +361 iàÐ! + `is£t +( +$ÝtiÚs +['page_number'])) { + +362 +throw + +Ãw + + `Doùrše_Pag”_Exû±iÚ +( + +372 iàÐ! + `is£t +( +$this +-> +_maskR•Ïûm’ts +['·ge']è&& !is£t( +$ÝtiÚs +['page'])) { + +373 +$ÝtiÚs +['page'] = $options['page_number']; + +376  +$this +-> + `_·r£Tem¶©e +( +$ÝtiÚs +); + +377 + } +} + +382 +public + +funùiÚ + + $__toSŒšg +() + +384  +$this +-> + `di¥Ïy +( + `¬¿y +(), +Œue +); + +385 + } +} + +395 +´Ùeùed + +funùiÚ + +_·r£Tem¶©e +( +$ÝtiÚs + = + $¬¿y +()) + +397 +$¡r + = +$this +-> + `_·r£U¾Tem¶©e +( +$ÝtiÚs +); + +398 +$»¶aûm’ts + = +$this +-> + `_·r£R•Ïûm’tsTem¶©e +( +$ÝtiÚs +); + +400  + `¡¹r +( +$¡r +, +$»¶aûm’ts +); + +401 + } +} + +412 +´Ùeùed + +funùiÚ + +_·r£U¾Tem¶©e +( +$ÝtiÚs + = + $¬¿y +()) + +414 +$¡r + = ''; + +417 ià( +$ÝtiÚs +['·ge_numb”'] =ð +$this +-> + `g‘Pag” +()-> + `g‘Page +()) { + +418 +$¡r + = +$this +-> + `_·r£MaskR•Ïûm’ts +($this-> + `g‘S–eùedTem¶©e +()); + +422 ià( +$¡r + == '') { + +423 +$¡r + = +$this +-> + `_·r£MaskR•Ïûm’ts +($this-> + `g‘Tem¶©e +()); + +426  +$¡r +; + +427 + } +} + +437 +´Ùeùed + +funùiÚ + +_·r£R•Ïûm’tsTem¶©e +( +$ÝtiÚs + = + $¬¿y +()) + +440 +$ÝtiÚs +['u¾'] = +$this +-> + `_·r£U¾ +($options); + +442 +$»¶aûm’ts + = + `¬¿y +(); + +444 + `fܗch + ( +$ÝtiÚs + +as + +$k + => +$v +) { + +445 +$»¶aûm’ts +['{%'. +$k +.'}'] = +$v +; + +448  +$»¶aûm’ts +; + +449 + } +} + +459 +´Ùeùed + +funùiÚ + +_·r£U¾ +( +$ÝtiÚs + = + $¬¿y +()) + +461 +$¡r + = +$this +-> + `_·r£MaskR•Ïûm’ts +($this-> + `g‘U¾Mask +()); + +463 +$»¶aûm’ts + = + `¬¿y +(); + +465 + `fܗch + ( +$ÝtiÚs + +as + +$k + => +$v +) { + +466 +$»¶aûm’ts +['{%'. +$k +.'}'] = +$v +; + +469  + `¡¹r +( +$¡r +, +$»¶aûm’ts +); + +470 + } +} + +480 +´Ùeùed + +funùiÚ + + $_·r£MaskR•Ïûm’ts +( +$¡r +) + +482 +$»¶aûm’ts + = + `¬¿y +(); + +484 + `fܗch + ( +$this +-> +_maskR•Ïûm’ts + +as + +$k + => +$v +) { + +485 +$»¶aûm’ts +['{%'. +$k +.'}'] = ( +$v +['asV®ue'] ==ð +Œue +) ? $v['newMask'] : '{%'.$v['newMask'].'}'; + +488  + `¡¹r +( +$¡r +, +$»¶aûm’ts +); + +489 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Pager/Range.php + +1 +_£tO±iÚs +( +$ÝtiÚs +); + +58 ià( + m$·g” + !=ð +nuÎ +) { + +59 +$this +-> +£tPag” +( +$·g” +); + +70 +public + +funùiÚ + + $g‘Pag” +() + +72  +$this +-> +·g” +; + +73 + } +} + +84 +public + +funùiÚ + + $£tPag” +( +$·g” +) + +86 +$this +-> +·g” + = +$·g” +; + +91 +$this +-> + `_š™Ÿlize +(); + +92 + } +} + +101 +public + +funùiÚ + + $g‘O±iÚs +() + +103  +$this +-> +_ÝtiÚs +; + +104 + } +} + +113 +public + +funùiÚ + + $g‘O±iÚ +( +$ÝtiÚ +) + +115 ià( + `is£t +( +$this +-> +_ÝtiÚs +[ +$ÝtiÚ +])) { + +116  +$this +-> +_ÝtiÚs +[ +$ÝtiÚ +]; + +119 +throw + +Ãw + + `Doùrše_Pag”_Exû±iÚ +( + +120 'Cªnهcûs uÃxi¡’ˆÝtiÚ \'' . +$ÝtiÚ + . '\' in Doctrine_Pager_Range class' + +122 + } +} + +132 +´Ùeùed + +funùiÚ + + $_£tO±iÚs +( +$ÝtiÚs +) + +134 +$this +-> +_ÝtiÚs + = +$ÝtiÚs +; + +135 + } +} + +145 +public + +funùiÚ + + $isInRªge +( +$·ge +) + +147  ( + `¬¿y_£¬ch +( +$·ge +, +$this +-> + `¿ngeAroundPage +()è!=ð +çl£ +); + +148 + } +} + +159 +ab¡¿ù + +´Ùeùed + +funùiÚ + +_š™Ÿlize +(); + +169 +ab¡¿ù + +public + +funùiÚ + +¿ngeAroundPage +(); + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Pager/Range/Jumping.php + +1 +_ÝtiÚs +['chunk'])) { + +50 +$this +-> + `_£tChunkL’gth +($this-> +_ÝtiÚs +['chunk']); + +52 +throw + +Ãw + + `Doùrše_Pag”_Exû±iÚ +('Missing…arameter \'chunk\'hat must be define in options.'); + +63 +public + +funùiÚ + + $g‘ChunkL’gth +() + +65  +$this +-> +_chunkL’gth +; + +66 + } +} + +76 +´Ùeùed + +funùiÚ + + $_£tChunkL’gth +( +$chunkL’gth +) + +78 +$this +-> +_chunkL’gth + = +$chunkL’gth +; + +79 + } +} + +88 +public + +funùiÚ + + $¿ngeAroundPage +() + +90 +$·g” + = +$this +-> + `g‘Pag” +(); + +92 ià( +$·g” +-> + `g‘Execu‹d +()) { + +93 +$·ge + = +$·g” +-> + `g‘Page +(); + +96 +$¡¬tPage + = +$·ge + - ($·g- 1è% +$this +-> + `g‘ChunkL’gth +(); + +97 +$’dPage + = ( +$¡¬tPage + + +$this +-> + `g‘ChunkL’gth +()) - 1; + +100 ià( +$’dPage + > +$·g” +-> + `g‘La¡Page +()) { + +101 +$’dPage + = +$·g” +-> + `g‘La¡Page +(); + +106  + `¿nge +( +$¡¬tPage +, +$’dPage +); + +109 +throw + +Ãw + + `Doùrše_Pag”_Exû±iÚ +( + +112 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Pager/Range/Sliding.php + +1 +_ÝtiÚs +['chunk'])) { + +50 +$this +-> + `_£tChunkL’gth +($this-> +_ÝtiÚs +['chunk']); + +52 +throw + +Ãw + + `Doùrše_Pag”_Exû±iÚ +('Missing…arameter \'chunk\'hat must be defined in options.'); + +63 +public + +funùiÚ + + $g‘ChunkL’gth +() + +65  +$this +-> +_chunkL’gth +; + +66 + } +} + +76 +´Ùeùed + +funùiÚ + + $_£tChunkL’gth +( +$chunkL’gth +) + +78 +$chunkL’gth + = () $chunkLength; + +79 iàÐ! +$chunkL’gth +) { + +80 +$chunkL’gth + = 1; + +82 +$this +-> +_chunkL’gth + = +$chunkL’gth +; + +84 + } +} + +93 +public + +funùiÚ + + $¿ngeAroundPage +() + +95 +$·g” + = +$this +-> + `g‘Pag” +(); + +97 ià( +$·g” +-> + `g‘Execu‹d +()) { + +98 +$·ge + = +$·g” +-> + `g‘Page +(); + +99 +$·ges + = +$·g” +-> + `g‘La¡Page +(); + +101 +$chunk + = +$this +-> + `g‘ChunkL’gth +(); + +103 ià( +$chunk + > +$·ges +) { + +104 +$chunk + = +$·ges +; + +107 +$chunkS¹ + = +$·ge + - ( + `æoÜ +( +$chunk + / 2)); + +108 +$chunkEnd + = +$·ge + + ( + `ûž +( +$chunk + / 2)-1); + +110 ià( +$chunkS¹ + < 1) { + +111 +$adju¡ + = 1 - +$chunkS¹ +; + +112 +$chunkS¹ + = 1; + +113 +$chunkEnd + = $chunkEnd + +$adju¡ +; + +116 ià( +$chunkEnd + > +$·ges +) { + +117 +$adju¡ + = +$chunkEnd + - +$·ges +; + +118 +$chunkS¹ + = $chunkS¹ - +$adju¡ +; + +119 +$chunkEnd + = +$·ges +; + +122  + `¿nge +( +$chunkS¹ +, +$chunkEnd +); + +125 +throw + +Ãw + + `Doùrše_Pag”_Exû±iÚ +( + +128 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Parser.php + +1 + `lßdD©a +( +$·th +); + +90 + } +} + +104  +public + +funùiÚ + +dump +( +$¬¿y +, +$ty³ + = 'xml', +$·th + = +nuÎ +, +$ch¬£t + =‚ull) + +106 +$·r£r + = +£lf +:: +g‘P¬£r +( +$ty³ +); + +108  + g$·r£r +-> +dumpD©a +( +$¬¿y +, +$·th +, +$ch¬£t +); + +120 +public + +funùiÚ + + $doLßd +( +$·th +) + +122 + `ob_¡¬t +(); + +123 iàÐ! + `fže_exi¡s +( +$·th +)) { + +124 +$cڋÁs + = +$·th +; + +125 +$·th + = + `sys_g‘_‹mp_dœ +(è. +DIRECTORY_SEPARATOR + . 'd·r£r_' . + `miüÙime +(); + +127 + `fže_put_cڋÁs +( +$·th +, +$cڋÁs +); + +130 + `šþude +( +$·th +); + +133 +$cڋÁs + = + `ob_g‘_þ—n +(); + +135  +$cڋÁs +; + +136 + } +} + +145 +public + +funùiÚ + + $doDump +( +$d©a +, +$·th + = +nuÎ +) + +147 ià( +$·th + !=ð +nuÎ +) { + +148  + `fže_put_cڋÁs +( +$·th +, +$d©a +); + +150  +$d©a +; + +152 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Parser/Exception.php + +1 + `doDump +( +$d©a +, +$·th +); + +61 +public + +funùiÚ + + $lßdD©a +( +$·th +) + +63 +$cڋÁs + = +$this +-> + `doLßd +( +$·th +); + +65 +$jsÚ + = + `jsÚ_decode +( +$cڋÁs +); + +67  +$jsÚ +; + +68 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Parser/Serialize.php + +1 + `doDump +( +$d©a +, +$·th +); + +60 +public + +funùiÚ + + $lßdD©a +( +$·th +) + +62 +$cڋÁs + = +$this +-> + `doLßd +( +$·th +); + +64  + `un£rŸlize +( +$cڋÁs +); + +65 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Parser/Xml.php + +1 + `doDump +( +$d©a +, +$·th +); + +61 +public +  +funùiÚ + + `¬¿yToXml +( +$¬¿y +, +$roÙNodeName + = 'd©a', +$xml + = +nuÎ +, +$ch¬£t + =‚ull) + +63 ià( +$xml + ==ð +nuÎ +) { + +64 +$xml + = +Ãw + + `Sim¶eXmlEËm’t +("<$rootNodeName/>"); + +67 + `fܗch +( +$¬¿y + +as + +$key + => +$v®ue +) + +69 +$key + = + `´eg_»¶aû +('/[^a-z]/i', '', $key); + +71 ià( + `is_¬¿y +( +$v®ue +è&& ! + `em±y +($value)) { + +72 +$node + = +$xml +-> + `addChžd +( +$key +); + +74 + `fܗch + ( +$v®ue + +as + +$k + => +$v +) { + +75 ià( + `is_num”ic +( +$v +)) { + +76 + `un£t +( +$v®ue +[ +$k +]); + +77 +$node +-> + `addA‰ribu‹ +( +$k +, +$v +); + +81 +£lf +:: + `¬¿yToXml +( +$v®ue +, +$roÙNodeName +, +$node +, +$ch¬£t +); + +82 } ià( + `is_št +( +$key +)) { + +83 +$xml +-> + `addChžd +( +$v®ue +, 'true'); + +85 +$ch¬£t + = $charset ? $charset : 'utf-8'; + +86 ià( + `¡rÿ£cmp +( +$ch¬£t +, 'utf-8') !== 0 && strcasecmp($charset, 'utf8') !== 0) { + +87 +$v®ue + = + `icÚv +( +$ch¬£t +, 'UTF-8', $value); + +89 +$v®ue + = + `html¥ecŸlch¬s +($v®ue, +ENT_COMPAT +, 'UTF-8'); + +90 +$xml +-> + `addChžd +( +$key +, +$v®ue +); + +94  +$xml +-> + `asXML +(); + +95 + } +} + +105 +public + +funùiÚ + + $lßdD©a +( +$·th +) + +107 +$cڋÁs + = +$this +-> + `doLßd +( +$·th +); + +109 +$sim¶eXml + = + `sim¶exml_lßd_¡ršg +( +$cڋÁs +); + +111  +$this +-> + `´•¬eD©a +( +$sim¶eXml +); + +112 + } +} + +122 +public + +funùiÚ + + $´•¬eD©a +( +$sim¶eXml +) + +124 ià( +$sim¶eXml + +š¡ªûof + +Sim¶eXMLEËm’t +) { + +125 +$chžd»n + = +$sim¶eXml +-> + `chžd»n +(); + +126 +$»tuº + = +nuÎ +; + +129 + `fܗch + ( +$chžd»n + +as + +$–em’t + => +$v®ue +) { + +130 ià( +$v®ue + +š¡ªûof + +Sim¶eXMLEËm’t +) { + +131 +$v®ues + = ( +¬¿y +è +$v®ue +-> + `chžd»n +(); + +133 ià( + `couÁ +( +$v®ues +) > 0) { + +134 +$»tuº +[ +$–em’t +] = +$this +-> + `´•¬eD©a +( +$v®ue +); + +136 iàÐ! + `is£t +( +$»tuº +[ +$–em’t +])) { + +137 +$»tuº +[ +$–em’t +] = ( +¡ršg +è +$v®ue +; + +139 iàÐ! + `is_¬¿y +( +$»tuº +[ +$–em’t +])) { + +140 +$»tuº +[ +$–em’t +] = + `¬¿y +($»tuº[$–em’t], ( +¡ršg +è +$v®ue +); + +142 +$»tuº +[ +$–em’t +][] = ( +¡ršg +è +$v®ue +; + +149 ià( + `is_¬¿y +( +$»tuº +)) { + +150  +$»tuº +; + +152  + `¬¿y +(); + +154 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Parser/Yml.php + +1 + `doDump +( +$d©a +, +$·th +); + +54 } + `ÿtch +( +Inv®idArgum’tExû±iÚ + +$e +) { + +56 +$»throwed_exû±iÚ + = +Ãw + + `Doùrše_P¬£r_Exû±iÚ +( +$e +-> + `g‘Mes§ge +(), $e-> + `g‘Code +()); + +58 +throw + +$»throwed_exû±iÚ +; + +71 +public + +funùiÚ + + $lßdD©a +( +$·th +) + +73 +Œy + { + +78 +$cڋÁs + = +$this +-> + `doLßd +( +$·th +); + +80 +$¬¿y + = +sfYaml +:: + `lßd +( +$cڋÁs +); + +82  +$¬¿y +; + +84 } + `ÿtch +( +Inv®idArgum’tExû±iÚ + +$e +) { + +86 +$»throwed_exû±iÚ + = +Ãw + + `Doùrše_P¬£r_Exû±iÚ +( +$e +-> + `g‘Mes§ge +(), $e-> + `g‘Code +()); + +88 +throw + +$»throwed_exû±iÚ +; + +90 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Parser/sfYaml/sfYaml.php + +1 + `·r£ +( +$šput +); + +98 + `ÿtch + ( +Exû±iÚ + +$e +) + +100 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('UÇbˁطr£ %s: %s', +$fže + ? s´štf('fž"%s"', $fžeè: '¡ršg', +$e +-> + `g‘Mes§ge +())); + +103  +$»t +; + +104 + } +} + +117 +public +  +funùiÚ + + $dump +( +$¬¿y +, +$šlše + = 2) + +119 +»quœe_Úû + + `dœÇme +( +__FILE__ +).'/sfYamlDumper.php'; + +121 +$yaml + = +Ãw + + `sfYamlDum³r +(); + +123  +$yaml +-> + `dump +( +$¬¿y +, +$šlše +); + +124 + } +} + +132 +funùiÚ + + $echÞn +( +$¡ršg +) + +134 +echo + +$¡ršg +."\n"; + +135 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Parser/sfYaml/sfYamlDumper.php + +1 +$v®ue +) + +47 +$wžlBeIƚed + = +$šlše + - 1 <ð0 || ! + `is_¬¿y +( +$v®ue +è|| + `em±y +($value); + +49 +$ouut + .ð + `¥rštf +('%s%s%s%s', + +50 +$´efix +, + +51 +$isAHash + ? +sfYamlIƚe +:: + `dump +( +$key +).':' : '-', + +52 +$wžlBeIƚed + ? ' ' : "\n", + +53 +$this +-> + `dump +( +$v®ue +, +$šlše + - 1, +$wžlBeIƚed + ? 0 : +$šd’t + + 2) + +54 ).( +$wžlBeIƚed + ? "\n" : ''); + +58  +$ouut +; + +60 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Parser/sfYaml/sfYamlInline.php + +1 = ! % @ ` ]/x', +$v®ue +): + +108  + `¥rštf +("'%s'", + `¡r_»¶aû +('\'', '\'\'', +$v®ue +)); + +109 '' =ð +$v®ue +: + +111  + `´eg_m©ch +( +£lf +:: + `g‘Time¡ampRegex +(), +$v®ue +): + +113  + `š_¬¿y +( + `¡¹Þow” +( +$v®ue +), +$ŒueV®ues +): + +115  + `š_¬¿y +( + `¡¹Þow” +( +$v®ue +), +$çl£V®ues +): + +117  + `š_¬¿y +( + `¡¹Þow” +( +$v®ue +), + `¬¿y +('null', '~')): + +120  +$v®ue +; + +122 + } +} + +131  +´Ùeùed + +funùiÚ + + $dumpA¼ay +( +$v®ue +) + +134 +$keys + = + `¬¿y_keys +( +$v®ue +); + +136 (1 =ð + `couÁ +( +$keys +) && '0' == $keys[0]) + +138 ( + `couÁ +( +$keys +è> 1 && + `¬¿y_»duû +($keys, + `ü—‹_funùiÚ +('$v,$w', 'return (integer) $v + $w;'), 0) == count($keys) * (count($keys) - 1) / 2)) + +140 +$ouut + = + `¬¿y +(); + +141 + `fܗch + ( +$v®ue + +as + +$v® +) + +143 +$ouut +[] = +£lf +:: + `dump +( +$v® +); + +146  + `¥rštf +('[%s]', + `im¶ode +(', ', +$ouut +)); + +150 +$ouut + = + `¬¿y +(); + +151 + `fܗch + ( +$v®ue + +as + +$key + => +$v® +) + +153 +$ouut +[] = + `¥rštf +('%s: %s', +£lf +:: + `dump +( +$key +), s–f::dump( +$v® +)); + +156  + `¥rštf +('{ % }', + `im¶ode +(', ', +$ouut +)); + +157 + } +} + +170  +public + +funùiÚ + +·r£SÿÏr +( +$sÿÏr +, +$d–im™”s + = +nuÎ +, +$¡ršgD–im™”s + = +¬¿y +('"', "'"), & +$i + = 0, +$ev®u©e + = +Œue +) + +172 ià( +š_¬¿y +( +$sÿÏr +[ +$i +], +$¡ršgD–im™”s +)) + +175 +$ouut + = +£lf +:: +·r£QuÙedSÿÏr +( +$sÿÏr +, +$i +); + +180 ià(! + g$d–im™”s +) + +182 + g$ouut + = +sub¡r +( +$sÿÏr +, +$i +); + +183 + g$i + +ð +¡¾’ +( +$ouut +); + +186 ià( + gçl£ + !=ð +$¡½os + = +¡½os +( +$ouut +, ' #')) + +188 + g$ouut + = +¹rim +( +sub¡r +( +$ouut +, 0, +$¡½os +)); + +191 ià( +´eg_m©ch +('/^(.+?)('. +im¶ode +('|', +$d–im™”s +).')/', +sub¡r +( +$sÿÏr +, +$i +), +$m©ch +)) + +193 + g$ouut + = +$m©ch +[1]; + +194 + g$i + +ð +¡¾’ +( +$ouut +); + +198 +throw + +Ãw + +Inv®idArgum’tExû±iÚ +( +¥rštf +('M®fÜmed iƚYAML sŒšg (%s).', +$sÿÏr +)); + +201 + g$ouut + = +$ev®u©e + ? +£lf +:: +ev®u©eSÿÏr +( +$ouut +) : $output; + +204  + g$ouut +; + +215  +´Ùeùed + +funùiÚ + + $·r£QuÙedSÿÏr +( +$sÿÏr +, & +$i +) + +217 ià(! + `´eg_m©ch +('/'. +£lf +:: +REGEX_QUOTED_STRING +.'/Au', + `sub¡r +( +$sÿÏr +, +$i +), +$m©ch +)) + +219 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('M®fÜmed iƚYAML sŒšg (%s).', + `sub¡r +( +$sÿÏr +, +$i +))); + +222 +$ouut + = + `sub¡r +( +$m©ch +[0], 1, + `¡¾’ +($match[0]) - 2); + +224 ià('"' =ð +$sÿÏr +[ +$i +]) + +227 +$ouut + = + `¡r_»¶aû +( + `¬¿y +('\\"', '\\n', '\\r'),‡rray('"', "\n", "\r"), $output); + +232 +$ouut + = + `¡r_»¶aû +('\'\'', '\'', $output); + +235 +$i + +ð + `¡¾’ +( +$m©ch +[0]); + +237  +$ouut +; + +238 + } +} + +248  +´Ùeùed + +funùiÚ + + $·r£Sequ’û +( +$£qu’û +, & +$i + = 0) + +250 +$ouut + = + `¬¿y +(); + +251 +$Ën + = + `¡¾’ +( +$£qu’û +); + +252 +$i + += 1; + +255  +$i + < +$Ën +) + +257  +$£qu’û +[ +$i +]) + +261 +$ouut +[] = +£lf +:: + `·r£Sequ’û +( +$£qu’û +, +$i +); + +265 +$ouut +[] = +£lf +:: + `·r£M­pšg +( +$£qu’û +, +$i +); + +268  +$ouut +; + +273 +$isQuÙed + = + `š_¬¿y +( +$£qu’û +[ +$i +], + `¬¿y +('"', "'")); + +274 +$v®ue + = +£lf +:: + `·r£SÿÏr +( +$£qu’û +, + `¬¿y +(',', ']'),‡¼ay('"', "'"), +$i +); + +276 ià(! +$isQuÙed + && +çl£ + !=ð + `¡½os +( +$v®ue +, ': ')) + +279 +Œy + + +281 +$v®ue + = +£lf +:: + `·r£M­pšg +('{'.$value.'}'); + +283 + `ÿtch + ( +Inv®idArgum’tExû±iÚ + +$e +) + +289 +$ouut +[] = +$v®ue +; + +291 -- +$i +; + +294 ++ +$i +; + +297 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('M®fÜmed iƚYAML sŒšg %s', +$£qu’û +)); + +298 + } +} + +308  +´Ùeùed + +funùiÚ + + $·r£M­pšg +( +$m­pšg +, & +$i + = 0) + +310 +$ouut + = + `¬¿y +(); + +311 +$Ën + = + `¡¾’ +( +$m­pšg +); + +312 +$i + += 1; + +315  +$i + < +$Ën +) + +317  +$m­pšg +[ +$i +]) + +321 ++ +$i +; + +324  +$ouut +; + +328 +$key + = +£lf +:: + `·r£SÿÏr +( +$m­pšg +, + `¬¿y +(':', ' '),‡¼ay('"', "'"), +$i +, +çl£ +); + +331 +$dÚe + = +çl£ +; + +332  +$i + < +$Ën +) + +334  +$m­pšg +[ +$i +]) + +338 +$ouut +[ +$key +] = +£lf +:: + `·r£Sequ’û +( +$m­pšg +, +$i +); + +339 +$dÚe + = +Œue +; + +343 +$ouut +[ +$key +] = +£lf +:: + `·r£M­pšg +( +$m­pšg +, +$i +); + +344 +$dÚe + = +Œue +; + +350 +$ouut +[ +$key +] = +£lf +:: + `·r£SÿÏr +( +$m­pšg +, + `¬¿y +(',', '}'),‡¼ay('"', "'"), +$i +); + +351 +$dÚe + = +Œue +; + +352 -- +$i +; + +355 ++ +$i +; + +357 ià( +$dÚe +) + +364 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('M®fÜmed iƚYAML sŒšg %s', +$m­pšg +)); + +365 + } +} + +374  +´Ùeùed + +funùiÚ + + $ev®u©eSÿÏr +( +$sÿÏr +) + +376 +$sÿÏr + = + `Œim +($scalar); + +378 ià('1.1' ==ð +sfYaml +:: + `g‘S³cV”siÚ +()) + +380 +$ŒueV®ues + = + `¬¿y +('true', 'on', '+', 'yes', 'y'); + +381 +$çl£V®ues + = + `¬¿y +('false', 'off', '-', 'no', 'n'); + +385 +$ŒueV®ues + = + `¬¿y +('true'); + +386 +$çl£V®ues + = + `¬¿y +('false'); + +389  +Œue +) + +391 'nuÎ' =ð + `¡¹Þow” +( +$sÿÏr +): + +392 '' =ð +$sÿÏr +: + +393 '~' =ð +$sÿÏr +: + +394  +nuÎ +; + +395 0 ==ð + `¡½os +( +$sÿÏr +, '!str'): + +396  ( +¡ršg +è + `sub¡r +( +$sÿÏr +, 5); + +397 0 ==ð + `¡½os +( +$sÿÏr +, '! '): + +398  + `štv® +( +£lf +:: + `·r£SÿÏr +( + `sub¡r +( +$sÿÏr +, 2))); + +399 0 ==ð + `¡½os +( +$sÿÏr +, '!!php/object:'): + +400  + `un£rŸlize +( + `sub¡r +( +$sÿÏr +, 13)); + +401  + `ùy³_dig™ +( +$sÿÏr +): + +402 +$¿w + = +$sÿÏr +; + +403 +$ÿ¡ + = + `štv® +( +$sÿÏr +); + +404  '0' =ð +$sÿÏr +[0] ? + `oùdec +($sÿÏrè: ((( +¡ršg +è +$¿w + =ð(¡ršgè +$ÿ¡ +) ? $cast : $raw); + +405  + `š_¬¿y +( + `¡¹Þow” +( +$sÿÏr +), +$ŒueV®ues +): + +406  +Œue +; + +407  + `š_¬¿y +( + `¡¹Þow” +( +$sÿÏr +), +$çl£V®ues +): + +408  +çl£ +; + +409  + `is_num”ic +( +$sÿÏr +): + +410  '0x' =ð +$sÿÏr +[0].$sÿÏr[1] ? + `hexdec +($sÿÏrè: + `æßtv® +($scalar); + +411 0 =ð + `¡rÿ£cmp +( +$sÿÏr +, '.inf'): + +412 0 =ð + `¡rÿ£cmp +( +$sÿÏr +, '.NaN'): + +413  - + `log +(0); + +414 0 =ð + `¡rÿ£cmp +( +$sÿÏr +, '-.inf'): + +415  + `log +(0); + +416  + `´eg_m©ch +('/^(-|\+)?[0-9,]+(\.[0-9]+)?$/', +$sÿÏr +): + +417  + `æßtv® +( + `¡r_»¶aû +(',', '', +$sÿÏr +)); + +418  + `´eg_m©ch +( +£lf +:: + `g‘Time¡ampRegex +(), +$sÿÏr +): + +419  + `¡¹Ùime +( +$sÿÏr +); + +421  ( +¡ršg +è +$sÿÏr +; + +423 + } +} + +425  +´Ùeùed + +funùiÚ + + $g‘Time¡ampRegex +() + +427  <<< +EOF + + +429 (? +P +< +y—r +>[0-9][0-9][0-9][0-9]) + +430 -(? +P +< +mÚth +>[0-9][0-9]?) + +431 -(? +P +< +day +>[0-9][0-9]?) + +432 (?:(?:[ +Tt +]|[ \ +t +]+) + +433 (? +P +< +hour +>[0-9][0-9]?) + +434 :(? +P +< +mšu‹ +>[0-9][0-9]) + +435 :(? +P +< +£cÚd +>[0-9][0-9]) + +436 (?:\.(? +P +< +äaùiÚ +>[0-9]*))? + +437 (?:[ \ +t +]*(? +P +< +tz +> +Z +|(?P< +tz_sign +>[-+])(?P< +tz_hour +>[0-9][0-9]?) + +438 (?::(? +P +< +tz_mšu‹ +>[0-9][0-9]))?))?)? + +439 +$ +~ +x + + +440 +EOF +; + +441 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Parser/sfYaml/sfYamlParser.php + +1 +off£t + = +$off£t +; + +54 +public + +funùiÚ + + $·r£ +( +$v®ue +) + +56 +$this +-> +cu¼’tLšeNb + = -1; + +57 +$this +-> +cu¼’tLše + = ''; + +58 +$this +-> +lšes + = + `ex¶ode +("\n", $this-> + `þ—nup +( +$v®ue +)); + +60 ià( + `funùiÚ_exi¡s +('mb_š‹º®_’codšg'è&& ((è + `ši_g‘ +('mbstring.func_overload')) & 2) + +62 +$mbEncodšg + = + `mb_š‹º®_’codšg +(); + +63 + `mb_š‹º®_’codšg +('UTF-8'); + +66 +$d©a + = + `¬¿y +(); + +67  +$this +-> + `moveToNextLše +()) + +69 ià( +$this +-> + `isCu¼’tLšeEm±y +()) + +75 ià( + `´eg_m©ch +('#^\t+#', +$this +-> +cu¼’tLše +)) + +77 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('A YAML fžÿÂÙ cڏšab a šd’tiڇˆlš%d (%s).', +$this +-> + `g‘R—lCu¼’tLšeNb +(è+ 1, $this-> +cu¼’tLše +)); + +80 +$isRef + = +$isInPÏû + = +$isProûs£d + = +çl£ +; + +81 ià( + `´eg_m©ch +('#^\-((?P<Ëad¥aûs>\s+)(?P.+?))?\s*$#u', +$this +-> +cu¼’tLše +, +$v®ues +)) + +83 ià( + `is£t +( +$v®ues +['v®ue']è&& + `´eg_m©ch +('#^&(?P<»f>[^ ]+è*(?P.*)#u', $v®ues['v®ue'], +$m©ches +)) + +85 +$isRef + = +$m©ches +['ref']; + +86 +$v®ues +['v®ue'] = +$m©ches +['value']; + +90 ià(! + `is£t +( +$v®ues +['v®ue']è|| '' =ð + `Œim +($v®ues['v®ue'], ' 'è|| 0 ==ð + `¡½os +( + `Érim +($values['value'], ' '), '#')) + +92 +$c + = +$this +-> + `g‘R—lCu¼’tLšeNb +() + 1; + +93 +$·r£r + = +Ãw + + `sfYamlP¬£r +( +$c +); + +94 +$·r£r +-> +»fs + =& +$this +->refs; + +95 +$d©a +[] = +$·r£r +-> + `·r£ +( +$this +-> + `g‘NextEmbedBlock +()); + +99 ià( + `is£t +( +$v®ues +['leadspaces']) + +100 && ' ' =ð +$v®ues +['leadspaces'] + +101 && + `´eg_m©ch +('#^(?P'. +sfYamlIƚe +:: +REGEX_QUOTED_STRING +.'|[^ \'"\{].*?è*\:(\s+(?P.+?))?\s*$#u', +$v®ues +['v®ue'], +$m©ches +)) + +104 +$c + = +$this +-> + `g‘R—lCu¼’tLšeNb +(); + +105 +$·r£r + = +Ãw + + `sfYamlP¬£r +( +$c +); + +106 +$·r£r +-> +»fs + =& +$this +->refs; + +108 +$block + = +$v®ues +['value']; + +109 ià(! +$this +-> + `isNextLšeInd’‹d +()) + +111 +$block + .ð"\n". +$this +-> + `g‘NextEmbedBlock +($this-> + `g‘Cu¼’tLšeInd’tiÚ +() + 2); + +114 +$d©a +[] = +$·r£r +-> + `·r£ +( +$block +); + +118 +$d©a +[] = +$this +-> + `·r£V®ue +( +$v®ues +['value']); + +122 ià( + `´eg_m©ch +('#^(?P'. +sfYamlIƚe +:: +REGEX_QUOTED_STRING +.'|[^ \'"].*?è*\:(\s+(?P.+?))?\s*$#u', +$this +-> +cu¼’tLše +, +$v®ues +)) + +124 +$key + = +sfYamlIƚe +:: + `·r£SÿÏr +( +$v®ues +['key']); + +126 ià('<<' ==ð +$key +) + +128 ià( + `is£t +( +$v®ues +['v®ue']è&& '*' ==ð + `sub¡r +($values['value'], 0, 1)) + +130 +$isInPÏû + = + `sub¡r +( +$v®ues +['value'], 1); + +131 ià(! + `¬¿y_key_exi¡s +( +$isInPÏû +, +$this +-> +»fs +)) + +133 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('Reã»nû "%s" dÛ nكxi¡‡ˆlš% (%s).', +$isInPÏû +, +$this +-> + `g‘R—lCu¼’tLšeNb +(è+ 1, $this-> +cu¼’tLše +)); + +138 ià( + `is£t +( +$v®ues +['value']) && $values['value'] !== '') + +140 +$v®ue + = +$v®ues +['value']; + +144 +$v®ue + = +$this +-> + `g‘NextEmbedBlock +(); + +146 +$c + = +$this +-> + `g‘R—lCu¼’tLšeNb +() + 1; + +147 +$·r£r + = +Ãw + + `sfYamlP¬£r +( +$c +); + +148 +$·r£r +-> +»fs + =& +$this +->refs; + +149 +$·r£d + = +$·r£r +-> + `·r£ +( +$v®ue +); + +151 +$m”ged + = + `¬¿y +(); + +152 ià(! + `is_¬¿y +( +$·r£d +)) + +154 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +("YAML m”gkey u£d w™h‡ sÿϸv®uš¡—d oઇ¼ay‡ˆlš% (%s)", +$this +-> + `g‘R—lCu¼’tLšeNb +(è+ 1, $this-> +cu¼’tLše +)); + +156 ià( + `is£t +( +$·r£d +[0])) + +159 + `fܗch + ( + `¬¿y_»v”£ +( +$·r£d +è +as + +$·r£dI‹m +) + +161 ià(! + `is_¬¿y +( +$·r£dI‹m +)) + +163 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +("M”g™em mu¡ b¬¿y ©†š% (%s).", +$this +-> + `g‘R—lCu¼’tLšeNb +(è+ 1, +$·r£dI‹m +)); + +165 +$m”ged + = + `¬¿y_m”ge +( +$·r£dI‹m +, $merged); + +171 +$m”ged + = + `¬¿y_m”ge +( +$m”ge +, +$·r£d +); + +174 +$isProûs£d + = +$m”ged +; + +177 ià( + `is£t +( +$v®ues +['v®ue']è&& + `´eg_m©ch +('#^&(?P<»f>[^ ]+è*(?P.*)#u', $v®ues['v®ue'], +$m©ches +)) + +179 +$isRef + = +$m©ches +['ref']; + +180 +$v®ues +['v®ue'] = +$m©ches +['value']; + +183 ià( +$isProûs£d +) + +186 +$d©a + = +$isProûs£d +; + +189 ià(! + `is£t +( +$v®ues +['v®ue']è|| '' =ð + `Œim +($v®ues['v®ue'], ' 'è|| 0 ==ð + `¡½os +( + `Érim +($values['value'], ' '), '#')) + +192 ià( +$this +-> + `isNextLšeInd’‹d +()) + +194 +$d©a +[ +$key +] = +nuÎ +; + +198 +$c + = +$this +-> + `g‘R—lCu¼’tLšeNb +() + 1; + +199 +$·r£r + = +Ãw + + `sfYamlP¬£r +( +$c +); + +200 +$·r£r +-> +»fs + =& +$this +->refs; + +201 +$d©a +[ +$key +] = +$·r£r +-> + `·r£ +( +$this +-> + `g‘NextEmbedBlock +()); + +206 ià( +$isInPÏû +) + +208 +$d©a + = +$this +-> +»fs +[ +$isInPÏû +]; + +212 +$d©a +[ +$key +] = +$this +-> + `·r£V®ue +( +$v®ues +['value']); + +219 ià(2 =ð + `couÁ +( +$this +-> +lšes +è&& + `em±y +($this->lines[1])) + +221 +$v®ue + = +sfYamlIƚe +:: + `lßd +( +$this +-> +lšes +[0]); + +222 ià( + `is_¬¿y +( +$v®ue +)) + +224 +$fœ¡ + = + `»£t +( +$v®ue +); + +225 ià('*' ==ð + `sub¡r +( +$fœ¡ +, 0, 1)) + +227 +$d©a + = + `¬¿y +(); + +228 + `fܗch + ( +$v®ue + +as + +$®Ÿs +) + +230 +$d©a +[] = +$this +-> +»fs +[ + `sub¡r +( +$®Ÿs +, 1)]; + +232 +$v®ue + = +$d©a +; + +236 ià( + `is£t +( +$mbEncodšg +)) + +238 + `mb_š‹º®_’codšg +( +$mbEncodšg +); + +241  +$v®ue +; + +244  + `´eg_Ï¡_”rÜ +()) + +246  +PREG_INTERNAL_ERROR +: + +247 +$”rÜ + = 'Internal PCREƒrror on†ine'; + +249  +PREG_BACKTRACK_LIMIT_ERROR +: + +250 +$”rÜ + = 'pcre.backtrack_limit„eached on†ine'; + +252  +PREG_RECURSION_LIMIT_ERROR +: + +253 +$”rÜ + = 'pcre.recursion_limit„eached on†ine'; + +255  +PREG_BAD_UTF8_ERROR +: + +256 +$”rÜ + = 'Malformed UTF-8 data on†ine'; + +258  +PREG_BAD_UTF8_OFFSET_ERROR +: + +259 +$”rÜ + = 'Offset doesn\'t correspondohe begin of‡ valid UTF-8 code…oint on†ine'; + +262 +$”rÜ + = 'Unableo…arse†ine'; + +265 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('% %d (%s).', +$”rÜ +, +$this +-> + `g‘R—lCu¼’tLšeNb +(è+ 1, $this-> +cu¼’tLše +)); + +268 ià( +$isRef +) + +270 +$this +-> +»fs +[ +$isRef +] = + `’d +( +$d©a +); + +274 ià( + `is£t +( +$mbEncodšg +)) + +276 + `mb_š‹º®_’codšg +( +$mbEncodšg +); + +279  + `em±y +( +$d©a +è? +nuÎ + : $data; + +280 + } +} + +287 +´Ùeùed + +funùiÚ + + $g‘R—lCu¼’tLšeNb +() + +289  +$this +-> +cu¼’tLšeNb + + $this-> +off£t +; + +290 + } +} + +297 +´Ùeùed + +funùiÚ + + $g‘Cu¼’tLšeInd’tiÚ +() + +299  + `¡¾’ +( +$this +-> +cu¼’tLše +è- sŒËn( + `Érim +($this->currentLine, ' ')); + +300 + } +} + +309 +´Ùeùed + +funùiÚ + + $g‘NextEmbedBlock +( +$šd’tiÚ + = +nuÎ +) + +311 +$this +-> + `moveToNextLše +(); + +313 ià( +nuÎ + ==ð +$šd’tiÚ +) + +315 +$ÃwInd’t + = +$this +-> + `g‘Cu¼’tLšeInd’tiÚ +(); + +317 ià(! +$this +-> + `isCu¼’tLšeEm±y +(è&& 0 =ð +$ÃwInd’t +) + +319 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('Ind’tiڅrobËm‡ˆlš%d (%s)', +$this +-> + `g‘R—lCu¼’tLšeNb +(è+ 1, $this-> +cu¼’tLše +)); + +324 +$ÃwInd’t + = +$šd’tiÚ +; + +327 +$d©a + = + `¬¿y +( + `sub¡r +( +$this +-> +cu¼’tLše +, +$ÃwInd’t +)); + +329  +$this +-> + `moveToNextLše +()) + +331 ià( +$this +-> + `isCu¼’tLšeEm±y +()) + +333 ià( +$this +-> + `isCu¼’tLšeBÏnk +()) + +335 +$d©a +[] = + `sub¡r +( +$this +-> +cu¼’tLše +, +$ÃwInd’t +); + +341 +$šd’t + = +$this +-> + `g‘Cu¼’tLšeInd’tiÚ +(); + +343 ià( + `´eg_m©ch +('#^(?P<‹xt> *)$#', +$this +-> +cu¼’tLše +, +$m©ch +)) + +346 +$d©a +[] = +$m©ch +['text']; + +348 ià( +$šd’t + >ð +$ÃwInd’t +) + +350 +$d©a +[] = + `sub¡r +( +$this +-> +cu¼’tLše +, +$ÃwInd’t +); + +352 ià(0 =ð +$šd’t +) + +354 +$this +-> + `moveToP»viousLše +(); + +360 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('Ind’tiڅrobËm‡ˆlš%d (%s)', +$this +-> + `g‘R—lCu¼’tLšeNb +(è+ 1, $this-> +cu¼’tLše +)); + +364  + `im¶ode +("\n", +$d©a +); + +365 + } +} + +370 +´Ùeùed + +funùiÚ + + $moveToNextLše +() + +372 ià( +$this +-> +cu¼’tLšeNb + >ð + `couÁ +($this-> +lšes +) - 1) + +374  +çl£ +; + +377 +$this +-> +cu¼’tLše + = $this-> +lšes +[++$this-> +cu¼’tLšeNb +]; + +379  +Œue +; + +380 + } +} + +385 +´Ùeùed + +funùiÚ + + $moveToP»viousLše +() + +387 +$this +-> +cu¼’tLše + = $this-> +lšes +[--$this-> +cu¼’tLšeNb +]; + +388 + } +} + +397 +´Ùeùed + +funùiÚ + + $·r£V®ue +( +$v®ue +) + +399 ià('*' ==ð + `sub¡r +( +$v®ue +, 0, 1)) + +401 ià( +çl£ + !=ð +$pos + = + `¡½os +( +$v®ue +, '#')) + +403 +$v®ue + = + `sub¡r +($v®ue, 1, +$pos + - 2); + +407 +$v®ue + = + `sub¡r +($value, 1); + +410 ià(! + `¬¿y_key_exi¡s +( +$v®ue +, +$this +-> +»fs +)) + +412 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('Reã»nû "%s" dÛ nكxi¡ (%s).', +$v®ue +, +$this +-> +cu¼’tLše +)); + +414  +$this +-> +»fs +[ +$v®ue +]; + +417 ià( + `´eg_m©ch +('/^(?P<£·¿tÜ>\||>)(?P\+|\-|\d+|\+\d+|\-\d+|\d+\+|\d+\-)?(?P +#.*)?$/', +$v®ue +, +$m©ches +)) + +419 +$modif›rs + = + `is£t +( +$m©ches +['modifiers']) ? $matches['modifiers'] : ''; + +421  +$this +-> + `·r£FÞdedSÿÏr +( +$m©ches +['£·¿tÜ'], + `´eg_»¶aû +('#\d+#', '', +$modif›rs +), + `štv® +( + `abs +($modifiers))); + +425  +sfYamlIƚe +:: + `lßd +( +$v®ue +); + +427 + } +} + +438 +´Ùeùed + +funùiÚ + +·r£FÞdedSÿÏr +( +$£·¿tÜ +, +$šdiÿtÜ + = '', +$šd’tiÚ + = 0) + +440 +$£·¿tÜ + = '|' == $separator ? "\n" : ' '; + +441 + g$‹xt + = ''; + +443 + g$nÙEOF + = +$this +-> +moveToNextLše +(); + +445  + g$nÙEOF + && + g$this +-> +isCu¼’tLšeBÏnk +()) + +447 + g$‹xt + .= "\n"; + +449 + g$nÙEOF + = +$this +-> +moveToNextLše +(); + +452 ià(! + g$nÙEOF +) + +457 ià(! +´eg_m©ch +('#^(?P<šd’t>'.( +$šd’tiÚ + ? +¡r_»³© +(' ', $šd’tiÚè: ' +').')(?P<‹xt>.*)$#u', +$this +-> +cu¼’tLše +, +$m©ches +)) + +459 + g$this +-> +moveToP»viousLše +(); + +464 + g$‹xtInd’t + = +$m©ches +['indent']; + +465 + g$´eviousInd’t + = 0; + +467 + g$‹xt + .ð +$m©ches +['‹xt']. +$£·¿tÜ +; + +468  + g$this +-> + gcu¼’tLšeNb + + 1 < +couÁ +( +$this +-> +lšes +)) + +470 + g$this +-> +moveToNextLše +(); + +472 ià( +´eg_m©ch +('#^(?P<šd’t> {'. +¡¾’ +( +$‹xtInd’t +).',})(?P<‹xt>.+)$#u', +$this +-> +cu¼’tLše +, +$m©ches +)) + +474 ià(' ' =ð +$£·¿tÜ + && +$´eviousInd’t + !ð +$m©ches +['indent']) + +476 +$‹xt + = +sub¡r +($text, 0, -1)."\n"; + +478 + g$´eviousInd’t + = +$m©ches +['indent']; + +480 + g$‹xt + .ð +¡r_»³© +(' ', +$diff + = +¡¾’ +( +$m©ches +['šd’t']è- sŒËn( +$‹xtInd’t +)).$m©ches['‹xt'].($difà? "\n" : +$£·¿tÜ +); + +482 ià( +´eg_m©ch +('#^(?P<‹xt> *)$#', +$this +-> +cu¼’tLše +, +$m©ches +)) + +484 + g$‹xt + .ð +´eg_»¶aû +('#^ {1,'. +¡¾’ +( +$‹xtInd’t +).'}#', '', +$m©ches +['text'])."\n"; + +488 + g$this +-> +moveToP»viousLše +(); + +494 ià(' ' =ð +$£·¿tÜ +) + +497 +$‹xt + = +´eg_»¶aû +('/ (\n*)$/', "\n$1", $text); + +500  + g$šdiÿtÜ +) + +503 +$‹xt + = +´eg_»¶aû +('#\n+$#s', "\n", $text); + +508 +$‹xt + = +´eg_»¶aû +('#\n+$#s', '', $text); + +512  + g$‹xt +; + +520 +´Ùeùed + +funùiÚ + + $isNextLšeInd’‹d +() + +522 +$cu¼’tInd’tiÚ + = +$this +-> + `g‘Cu¼’tLšeInd’tiÚ +(); + +523 +$nÙEOF + = +$this +-> + `moveToNextLše +(); + +525  +$nÙEOF + && +$this +-> + `isCu¼’tLšeEm±y +()) + +527 +$nÙEOF + = +$this +-> + `moveToNextLše +(); + +530 ià( +çl£ + ==ð +$nÙEOF +) + +532  +çl£ +; + +535 +$»t + = +çl£ +; + +536 ià( +$this +-> + `g‘Cu¼’tLšeInd’tiÚ +(è<ð +$cu¼’tInd’tiÚ +) + +538 +$»t + = +Œue +; + +541 +$this +-> + `moveToP»viousLše +(); + +543  +$»t +; + +544 + } +} + +551 +´Ùeùed + +funùiÚ + + $isCu¼’tLšeEm±y +() + +553  +$this +-> + `isCu¼’tLšeBÏnk +(è|| $this-> + `isCu¼’tLšeComm’t +(); + +554 + } +} + +561 +´Ùeùed + +funùiÚ + + $isCu¼’tLšeBÏnk +() + +563  '' =ð + `Œim +( +$this +-> +cu¼’tLše +, ' '); + +564 + } +} + +571 +´Ùeùed + +funùiÚ + + $isCu¼’tLšeComm’t +() + +574 +$ÉrimmedLše + = + `Érim +( +$this +-> +cu¼’tLše +, ' '); + +575  +$ÉrimmedLše +[0] === '#'; + +576 + } +} + +585 +´Ùeùed + +funùiÚ + + $þ—nup +( +$v®ue +) + +587 +$v®ue + = + `¡r_»¶aû +( + `¬¿y +("\r\n", "\r"), "\n", $value); + +589 ià(! + `´eg_m©ch +("#\n$#", +$v®ue +)) + +591 +$v®ue + .= "\n"; + +595 +$couÁ + = 0; + +596 +$v®ue + = + `´eg_»¶aû +('#^\%YAML[: ][\d\.]+.*\n#su', '', $v®ue, -1, +$couÁ +); + +597 +$this +-> +off£t + +ð +$couÁ +; + +600 +$ŒimmedV®ue + = + `´eg_»¶aû +('#^(\#.*?\n)+#s', '', +$v®ue +, -1, +$couÁ +); + +601 ià( +$couÁ + == 1) + +604 +$this +-> +off£t + +ð + `sub¡r_couÁ +( +$v®ue +, "\n"è- sub¡r_couÁ( +$ŒimmedV®ue +, "\n"); + +605 +$v®ue + = +$ŒimmedV®ue +; + +609 +$ŒimmedV®ue + = + `´eg_»¶aû +('#^\-\-\-.*?\n#s', '', +$v®ue +, -1, +$couÁ +); + +610 ià( +$couÁ + == 1) + +613 +$this +-> +off£t + +ð + `sub¡r_couÁ +( +$v®ue +, "\n"è- sub¡r_couÁ( +$ŒimmedV®ue +, "\n"); + +614 +$v®ue + = +$ŒimmedV®ue +; + +617 +$v®ue + = + `´eg_»¶aû +('#\.\.\.\s*$#s', '', $value); + +620  +$v®ue +; + +621 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query.php + +1 + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_QUERY_CLASS +); + +192  +Ãw + + `$þass +( +$cÚn +); + +198 +´Ùeùed + +funùiÚ + + $þ—r +() + +200 +$this +-> +_´eQu”›d + = +çl£ +; + +201 +$this +-> +_³ndšgJošCÚd™iÚs + = + `¬¿y +(); + +202 +$this +-> +_¡©e + = +£lf +:: +STATE_DIRTY +; + +203 + } +} + +208 +public + +funùiÚ + + $»£t +() + +210 +$this +-> +_subqu”yAlŸ£s + = + `¬¿y +(); + +211 +$this +-> +_agg»g©eAlŸsM­ + = + `¬¿y +(); + +212 +$this +-> +_³ndšgAgg»g©es + = + `¬¿y +(); + +213 +$this +-> +_³ndšgSubqu”›s + = + `¬¿y +(); + +214 +$this +-> +_³ndšgF›lds + = + `¬¿y +(); + +215 +$this +-> +_ÃededTabËs + = + `¬¿y +(); + +216 +$this +-> +_ex´essiÚM­ + = + `¬¿y +(); + +217 +$this +-> +_subqu”yAlŸ£s + = + `¬¿y +(); + +218 +$this +-> +_ÃedsSubqu”y + = +çl£ +; + +219 +$this +-> +_isLim™Subqu”yU£d + = +çl£ +; + +220 + } +} + +228 +public + +funùiÚ + + $ü—‹Subqu”y +() + +230 +$þass + = + `g‘_þass +( +$this +); + +231 +$obj + = +Ãw + + `$þass +(); + +234 +$obj +-> + `cÝySubqu”yInfo +( +$this +); + +237 +$obj +-> + `isSubqu”y +( +Œue +); + +239  +$obj +; + +240 + } +} + +249 +public + +funùiÚ + + $addP’dšgJošCÚd™iÚ +( +$compڒtAlŸs +, +$jošCÚd™iÚ +) + +251 iàÐ! + `is£t +( +$this +-> +_³ndšgJošCÚd™iÚs +[ +$compڒtAlŸs +])) { + +252 +$this +-> +_³ndšgJošCÚd™iÚs +[ +$compڒtAlŸs +] = + `¬¿y +(); + +255 +$this +-> +_³ndšgJošCÚd™iÚs +[ +$compڒtAlŸs +][] = +$jošCÚd™iÚ +; + +256 + } +} + +265 +public + +funùiÚ + +ãtchA¼ay +( +$·¿ms + = + $¬¿y +()) + +267  +$this +-> + `execu‹ +( +$·¿ms +, +Doùrše_CÜe +:: +HYDRATE_ARRAY +); + +268 + } +} + +279 +public + +funùiÚ + +ãtchOà +( +$·¿ms + = +¬¿y +(), +$hyd¿tiÚMode + = +nuÎ +) + +281 +$cÞËùiÚ + = +$this +-> +execu‹ +( +$·¿ms +, +$hyd¿tiÚMode +); + +283 ià( +is_sÿÏr +( +$cÞËùiÚ +)) { + +284  + g$cÞËùiÚ +; + +287 ià( +couÁ +( +$cÞËùiÚ +) === 0) { + +288  +çl£ +; + +291 ià( +$cÞËùiÚ + +š¡ªûof + + gDoùrše_CÞËùiÚ +) { + +292  + g$cÞËùiÚ +-> +g‘Fœ¡ +(); + +293 } ià( +is_¬¿y +( +$cÞËùiÚ +)) { + +294  +¬¿y_shiá +( +$cÞËùiÚ +); + +297  + gçl£ +; + +313 +public + +funùiÚ + + $isSubqu”y +( +$boÞ + = +nuÎ +) + +315 ià( +$boÞ + ==ð +nuÎ +) { + +316  +$this +-> +_isSubqu”y +; + +319 +$this +-> +_isSubqu”y + = ( +boÞ +è +$boÞ +; + +320  +$this +; + +321 + } +} + +329 +public + +funùiÚ + + $g‘SqlAgg»g©eAlŸs +( +$dqlAlŸs +) + +331 ià( + `is£t +( +$this +-> +_agg»g©eAlŸsM­ +[ +$dqlAlŸs +])) { + +333 +$this +-> +_ex´essiÚM­ +[ +$dqlAlŸs +][1] = +Œue +; + +335  +$this +-> +_agg»g©eAlŸsM­ +[ +$dqlAlŸs +]; + +336 } iàÐ! + `em±y +( +$this +-> +_³ndšgAgg»g©es +)) { + +337 +$this +-> + `´oûssP’dšgAgg»g©es +(); + +339  +$this +-> + `g‘SqlAgg»g©eAlŸs +( +$dqlAlŸs +); + +340 } ifÐ! ( +$this +-> +_cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_PORTABILITY +è& Doùrše_CÜe:: +PORTABILITY_EXPR +)){ + +341  +$dqlAlŸs +; + +343 +throw + +Ãw + + `Doùrše_Qu”y_Exû±iÚ +('UnknowÀagg»g©®Ÿs: ' . +$dqlAlŸs +); + +345 + } +} + +353 +public + +funùiÚ + + $hasSqlAgg»g©eAlŸs +( +$dqlAlŸs +) + +355 +Œy + { + +356 +$this +-> + `g‘SqlAgg»g©eAlŸs +( +$dqlAlŸs +); + +357  +Œue +; + +358 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +359  +çl£ +; + +361 + } +} + +367 +public + +funùiÚ + + $adju¡Proûs£dP¬am +( +$šdex +) + +370 +$·¿ms + = +$this +-> + `g‘IÁ”ÇlP¬ams +(); + +373 +$fœ¡ + = + `¬¿y_¦iû +( +$·¿ms +, 0, +$šdex +); + +374 +$Ï¡ + = + `¬¿y_¦iû +( +$·¿ms +, +$šdex +, + `couÁ +($params) - $index); + +377 + `¬¿y_¥liû +( +$Ï¡ +, 0, 1, $last[0]); + +380 +$this +-> +_execP¬ams + = + `¬¿y_m”ge +( +$fœ¡ +, +$Ï¡ +); + +381 + } +} + +405 +public + +funùiÚ + + $g‘DqlP¬t +( +$qu”yP¬t +) + +407 iàÐ! + `is£t +( +$this +-> +_dqlP¬ts +[ +$qu”yP¬t +])) { + +408 +throw + +Ãw + + `Doùrše_Qu”y_Exû±iÚ +('UnknowÀqu”y…¬ˆ' . +$qu”yP¬t +); + +411  +$this +-> +_dqlP¬ts +[ +$qu”yP¬t +]; + +412 + } +} + +422 +public + +funùiÚ + + $cڏšs +( +$dql +) + +424  + `¡ros +( +$this +-> + `g‘Dql +(), +$dql +è==ð +çl£ + ? f®£ : +Œue +; + +425 + } +} + +440 +public + +funùiÚ + + $´oûssP’dšgF›lds +( +$compڒtAlŸs +) + +442 +$bËAlŸs + = +$this +-> + `g‘SqlTabËAlŸs +( +$compڒtAlŸs +); + +443 +$bË + = +$this +-> +_qu”yCompڒts +[ +$compڒtAlŸs +]['table']; + +445 iàÐ! + `is£t +( +$this +-> +_³ndšgF›lds +[ +$compڒtAlŸs +])) { + +446 ià( +$this +-> +_hyd¿tÜ +-> + `g‘Hyd¿tiÚMode +(è!ð +Doùrše_CÜe +:: +HYDRATE_NONE +) { + +447 iàÐ! +$this +-> +_isSubqu”y + && +$compڒtAlŸs + =ð$this-> + `g‘RoÙAlŸs +()) { + +448 +throw + +Ãw + + `Doùrše_Qu”y_Exû±iÚ +("The„oot class ofhe query (alias $componentAlias) " + +459 iàÐ! +$this +-> + `isSubqu”y +(è&& + `is£t +($this-> +_qu”yCompڒts +[ +$compڒtAlŸs +]['parent'])) { + +460 +$·»ÁAlŸs + = +$this +-> +_qu”yCompڒts +[ +$compڒtAlŸs +]['parent']; + +461 ià( + `is_¡ršg +( +$·»ÁAlŸs +è&& ! + `is£t +( +$this +-> +_³ndšgF›lds +[$parentAlias]) + +462 && +$this +-> +_hyd¿tÜ +-> + `g‘Hyd¿tiÚMode +(è!ð +Doùrše_CÜe +:: +HYDRATE_NONE + + +463 && +$this +-> +_hyd¿tÜ +-> + `g‘Hyd¿tiÚMode +(è!ð +Doùrše_CÜe +:: +HYDRATE_SCALAR + + +464 && +$this +-> +_hyd¿tÜ +-> + `g‘Hyd¿tiÚMode +(è!ð +Doùrše_CÜe +:: +HYDRATE_SINGLE_SCALAR +) { + +465 +throw + +Ãw + + `Doùrše_Qu”y_Exû±iÚ +("The†eft side ofhe join between " + +471 +$f›lds + = +$this +-> +_³ndšgF›lds +[ +$compڒtAlŸs +]; + +474 ià( + `š_¬¿y +('*', +$f›lds +)) { + +475 +$f›lds + = +$bË +-> + `g‘F›ldNames +(); + +477 +$driv”CÏssName + = +$this +-> +_hyd¿tÜ +-> + `g‘Hyd¿tÜDriv”CÏssName +(); + +481 iàÐ! +$this +-> +_isSubqu”y + && + `is_subþass_of +( +$driv”CÏssName +, 'Doctrine_Hydrator_Graph')) { + +482 +$f›lds + = + `¬¿y_unique +( + `¬¿y_m”ge +(( +¬¿y +è +$bË +-> + `g‘Id’tif›r +(), $fields)); + +486 +$sql + = + `¬¿y +(); + +487 + `fܗch + ( +$f›lds + +as + +$f›ldAlŸs + => +$f›ldName +) { + +488 +$cÞumnName + = +$bË +-> + `g‘CÞumnName +( +$f›ldName +); + +489 ià(( +$owÃr + = +$bË +-> + `g‘CÞumnOwÃr +( +$cÞumnName +)è!=ð +nuÎ + && + +490 +$owÃr + !=ð +$bË +-> + `g‘CompڒtName +()) { + +492 +$·»Á + = +$this +-> +_cÚn +-> + `g‘TabË +( +$owÃr +); + +493 +$cÞumnName + = +$·»Á +-> + `g‘CÞumnName +( +$f›ldName +); + +494 +$·»ÁAlŸs + = +$this +-> + `g‘SqlTabËAlŸs +( +$compڒtAlŸs + . '.' . +$·»Á +-> + `g‘CompڒtName +()); + +495 +$sql +[] = +$this +-> +_cÚn +-> + `quÙeId’tif›r +( +$·»ÁAlŸs +è. '.' . $this->_cÚn->quÙeId’tif›r( +$cÞumnName +) + +497 . +$this +-> +_cÚn +-> + `quÙeId’tif›r +( +$bËAlŸs + . '__' . +$cÞumnName +); + +501 ià( + `is£t +( +$this +-> +_agg»g©eAlŸsM­ +[ +$f›ldAlŸs +])) { + +502 +$®ŸsSql + = +$this +-> +_agg»g©eAlŸsM­ +[ +$f›ldAlŸs +]; + +504 +$cÞumnName + = +$bË +-> + `g‘CÞumnName +( +$f›ldName +); + +505 +$®ŸsSql + = +$this +-> +_cÚn +-> + `quÙeId’tif›r +( +$bËAlŸs + . '__' . +$cÞumnName +); + +507 +$sql +[] = +$this +-> +_cÚn +-> + `quÙeId’tif›r +( +$bËAlŸs +è. '.' . $this->_cÚn->quÙeId’tif›r( +$cÞumnName +) + +509 . +$®ŸsSql +; + +513 +$this +-> +_ÃededTabËs +[] = +$bËAlŸs +; + +515  + `im¶ode +(', ', +$sql +); + +516 + } +} + +531 +public + +funùiÚ + + $·r£S–eùF›ld +( +$f›ld +) + +533 +$‹rms + = + `ex¶ode +('.', +$f›ld +); + +535 ià( + `is£t +( +$‹rms +[1])) { + +536 +$compڒtAlŸs + = +$‹rms +[0]; + +537 +$f›ld + = +$‹rms +[1]; + +539 + `»£t +( +$this +-> +_qu”yCompڒts +); + +540 +$compڒtAlŸs + = + `key +( +$this +-> +_qu”yCompڒts +); + +541 +$f›lds + = +$‹rms +[0]; + +544 +$bËAlŸs + = +$this +-> + `g‘SqlTabËAlŸs +( +$compڒtAlŸs +); + +545 +$bË + = +$this +-> +_qu”yCompڒts +[ +$compڒtAlŸs +]['table']; + +549 ià( +$f›ld + === '*') { + +550 +$sql + = + `¬¿y +(); + +552 + `fܗch + ( +$bË +-> + `g‘CÞumnNames +(è +as + +$f›ld +) { + +553 +$sql +[] = +$this +-> + `·r£S–eùF›ld +( +$compڒtAlŸs + . '.' . +$f›ld +); + +556  + `im¶ode +(', ', +$sql +); + +558 +$Çme + = +$bË +-> + `g‘CÞumnName +( +$f›ld +); + +560 +$this +-> +_ÃededTabËs +[] = +$bËAlŸs +; + +562  +$this +-> +_cÚn +-> + `quÙeId’tif›r +( +$bËAlŸs + . '.' . +$Çme +) + +564 . +$this +-> +_cÚn +-> + `quÙeId’tif›r +( +$bËAlŸs + . '__' . +$Çme +); + +566 + } +} + +577 +public + +funùiÚ + + $g‘Ex´essiÚOwÃr +( +$ex´ +) + +579 ià( + `¡¹ouµ” +( + `sub¡r +( + `Œim +( +$ex´ +, '( '), 0, 6)) !== 'SELECT') { + +581 +$ex´ + = + `´eg_»¶aû +('/([\'\"])[^\1]*\1/', '', $expr); + +582 + `´eg_m©ch_®l +("/[a-z_][a-z0-9_]*\.[a-z_][a-z0-9_]*[\.[a-z0-9]+]*/i", +$ex´ +, +$m©ches +); + +584 +$m©ch + = + `cu¼’t +( +$m©ches +); + +586 ià( + `is£t +( +$m©ch +[0])) { + +587 +$‹rms + = + `ex¶ode +('.', +$m©ch +[0]); + +589  +$‹rms +[0]; + +592  +$this +-> + `g‘RoÙAlŸs +(); + +594 + } +} + +604 +public + +funùiÚ + + $·r£S–eù +( +$dql +) + +606 +$»fs + = +$this +-> +_tok’iz” +-> + `sqlEx¶ode +( +$dql +, ','); + +608 +$pos + = + `¡½os +( + `Œim +( +$»fs +[0]), ' '); + +609 +$fœ¡ + = + `sub¡r +( +$»fs +[0], 0, +$pos +); + +612 ià( +$fœ¡ + === 'DISTINCT') { + +613 +$this +-> +_sqlP¬ts +['di¡šù'] = +Œue +; + +615 +$»fs +[0] = + `sub¡r +($»fs[0], ++ +$pos +); + +618 +$·r£dCompڒts + = + `¬¿y +(); + +620 + `fܗch + ( +$»fs + +as + +$»ã»nû +) { + +621 +$»ã»nû + = + `Œim +($reference); + +623 ià( + `em±y +( +$»ã»nû +)) { + +627 +$‹rms + = +$this +-> +_tok’iz” +-> + `sqlEx¶ode +( +$»ã»nû +, ' '); + +628 +$pos + = + `¡½os +( +$‹rms +[0], '('); + +630 ià( + `couÁ +( +$‹rms +è> 1 || +$pos + !=ð +çl£ +) { + +631 +$ex´essiÚ + = + `¬¿y_shiá +( +$‹rms +); + +632 +$®Ÿs + = + `¬¿y_pÝ +( +$‹rms +); + +634 iàÐ! +$®Ÿs +) { + +635 +$®Ÿs + = + `sub¡r +( +$ex´essiÚ +, 0, +$pos +); + +639 ià( +$pos + !=ð +çl£ + && + `sub¡r +( +$ex´essiÚ +, 0, 1) !== "'" && substr($expression, 0, $pos) == '') { + +640 +$_qu”yCompڒts + = +$this +-> +_qu”yCompڒts +; + +641 + `»£t +( +$_qu”yCompڒts +); + +642 +$compڒtAlŸs + = + `key +( +$_qu”yCompڒts +); + +644 +$compڒtAlŸs + = +$this +-> + `g‘Ex´essiÚOwÃr +( +$ex´essiÚ +); + +647 +$ex´essiÚ + = +$this +-> + `·r£CÏu£ +($expression); + +649 +$bËAlŸs + = +$this +-> + `g‘SqlTabËAlŸs +( +$compڒtAlŸs +); + +651 +$šdex + = + `couÁ +( +$this +-> +_agg»g©eAlŸsM­ +); + +653 +$sqlAlŸs + = +$this +-> +_cÚn +-> + `quÙeId’tif›r +( +$bËAlŸs + . '__' . +$šdex +); + +655 +$this +-> +_sqlP¬ts +['£Ëù'][] = +$ex´essiÚ + . ' AS ' . +$sqlAlŸs +; + +657 +$this +-> +_agg»g©eAlŸsM­ +[ +$®Ÿs +] = +$sqlAlŸs +; + +658 +$this +-> +_ex´essiÚM­ +[ +$®Ÿs +][0] = +$ex´essiÚ +; + +660 +$this +-> +_qu”yCompڒts +[ +$compڒtAlŸs +]['agg'][ +$šdex +] = +$®Ÿs +; + +662 +$this +-> +_ÃededTabËs +[] = +$bËAlŸs +; + +666 ià( + `´eg_m©ch +('/^([^\(]+)\.(\'?)(.*?)(\'?)$/', +$ex´essiÚ +, +$f›ld +)) { + +667 +$this +-> +_³ndšgF›lds +[ +$compڒtAlŸs +][ +$®Ÿs +] = +$f›ld +[3]; + +671 +$e + = + `ex¶ode +('.', +$‹rms +[0]); + +673 ià( + `is£t +( +$e +[1])) { + +674 +$compڒtAlŸs + = +$e +[0]; + +675 +$f›ld + = +$e +[1]; + +677 + `»£t +( +$this +-> +_qu”yCompڒts +); + +678 +$compڒtAlŸs + = + `key +( +$this +-> +_qu”yCompڒts +); + +679 +$f›ld + = +$e +[0]; + +682 +$this +-> +_³ndšgF›lds +[ +$compڒtAlŸs +][] = +$f›ld +; + +685 + } +} + +703 +public + +funùiÚ + + $·r£CÏu£ +( +$þau£ +) + +705 +$þau£ + = +$this +-> +_cÚn +-> +d©aDiù +-> + `·r£Boޗn +( + `Œim +($clause)); + +707 ià( + `is_num”ic +( +$þau£ +)) { + +708  +$þau£ +; + +711 +$‹rms + = +$this +-> +_tok’iz” +-> + `þau£Ex¶ode +( +$þau£ +, + `¬¿y +(' ', '+', '-', '*', '/', '<', '>', '=', '>=', '<=', '&', '|')); + +712 +$¡r + = ''; + +714 + `fܗch + ( +$‹rms + +as + +$‹rm +) { + +715 +$pos + = + `¡½os +( +$‹rm +[0], '('); + +717 ià( +$pos + !=ð +çl£ + && + `sub¡r +( +$‹rm +[0], 0, 1) !== "'") { + +718 +$Çme + = + `sub¡r +( +$‹rm +[0], 0, +$pos +); + +720 +$‹rm +[0] = +$this +-> + `·r£FunùiÚEx´essiÚ +($term[0]); + +722 ià( + `sub¡r +( +$‹rm +[0], 0, 1) !== "'" && substr($term[0], -1) !== "'") { + +723 ià( + `¡½os +( +$‹rm +[0], '.'è!=ð +çl£ +) { + +724 iàÐ! + `is_num”ic +( +$‹rm +[0])) { + +725 +$e + = + `ex¶ode +('.', +$‹rm +[0]); + +727 +$f›ld + = + `¬¿y_pÝ +( +$e +); + +729 ià( +$this +-> + `g‘Ty³ +(è==ð +Doùrše_Qu”y +:: +SELECT +) { + +730 +$compڒtAlŸs + = + `im¶ode +('.', +$e +); + +732 ià( + `em±y +( +$compڒtAlŸs +)) { + +733 +$compڒtAlŸs + = +$this +-> + `g‘RoÙAlŸs +(); + +736 +$this +-> + `lßd +( +$compڒtAlŸs +); + +739 iàÐ! + `is£t +( +$this +-> +_qu”yCompڒts +[ +$compڒtAlŸs +])) { + +740 +throw + +Ãw + + `Doùrše_Qu”y_Exû±iÚ +('UnknowÀcompڒˆ®Ÿ ' . +$compڒtAlŸs +); + +743 +$bË + = +$this +-> +_qu”yCompڒts +[ +$compڒtAlŸs +]['table']; + +745 +$def + = +$bË +-> + `g‘Defš™iÚOf +( +$f›ld +); + +748 +$f›ld + = +$bË +-> + `g‘CÞumnName +($field); + +751 iàÐ! +$def +) { + +752 +throw + +Ãw + + `Doùrše_Qu”y_Exû±iÚ +('UnknowÀcÞumÀ' . +$f›ld +); + +755 ià( + `is£t +( +$def +['owner'])) { + +756 +$compڒtAlŸs + = $compڒtAlŸ . '.' . +$def +['owner']; + +759 +$bËAlŸs + = +$this +-> + `g‘SqlTabËAlŸs +( +$compڒtAlŸs +); + +762 +$‹rm +[0] = +$this +-> +_cÚn +-> + `quÙeId’tif›r +( +$bËAlŸs +) + +764 . +$this +-> +_cÚn +-> + `quÙeId’tif›r +( +$f›ld +); + +767 +$f›ld + = +$this +-> + `g‘RoÙ +()-> + `g‘CÞumnName +($field); + +768 +$‹rm +[0] = +$this +-> +_cÚn +-> + `quÙeId’tif›r +( +$f›ld +); + +772 iàÐ! + `em±y +( +$‹rm +[0]è&& ! + `š_¬¿y +( + `¡¹ouµ” +($‹rm[0]), +£lf +:: +$_keywÜds +) && + +773 ! + `is_num”ic +( +$‹rm +[0]è&& $‹rm[0] !=ð'?' && + `sub¡r +($term[0], 0, 1) !== ':') { + +775 +$compڒtAlŸs + = +$this +-> + `g‘RoÙAlŸs +(); + +777 +$found + = +çl£ +; + +779 ià( +$compڒtAlŸs + !=ð +çl£ + && $compڒtAlŸ !=ð +nuÎ +) { + +780 +$bË + = +$this +-> +_qu”yCompڒts +[ +$compڒtAlŸs +]['table']; + +783 ià( +$bË +-> + `hasF›ld +( +$‹rm +[0])) { + +784 +$found + = +Œue +; + +786 +$def + = +$bË +-> + `g‘Defš™iÚOf +( +$‹rm +[0]); + +789 +$‹rm +[0] = +$bË +-> + `g‘CÞumnName +($term[0]); + +792 ià( + `is£t +( +$def +['owner'])) { + +793 +$compڒtAlŸs + = $compڒtAlŸ . '.' . +$def +['owner']; + +796 +$bËAlŸs + = +$this +-> + `g‘SqlTabËAlŸs +( +$compڒtAlŸs +); + +798 ià( +$this +-> + `g‘Ty³ +(è==ð +Doùrše_Qu”y +:: +SELECT +) { + +800 +$‹rm +[0] = +$this +-> +_cÚn +-> + `quÙeId’tif›r +( +$bËAlŸs +) + +802 . +$this +-> +_cÚn +-> + `quÙeId’tif›r +( +$‹rm +[0]); + +805 +$‹rm +[0] = +$this +-> +_cÚn +-> + `quÙeId’tif›r +($term[0]); + +808 +$found + = +çl£ +; + +812 iàÐ! +$found +) { + +813 +$‹rm +[0] = +$this +-> + `g‘SqlAgg»g©eAlŸs +($term[0]); + +820 +$¡r + .ð +$‹rm +[0] . $term[1]; + +822  +$¡r +; + +823 + } +} + +825 +public + +funùiÚ + + $·r£Id’tif›rReã»nû +( +$ex´ +) + +828 + } +} + +830 +public + +funùiÚ + + $·r£FunùiÚEx´essiÚ +( +$ex´ +, +$·r£C®lback + = +nuÎ +) + +832 +$pos + = + `¡½os +( +$ex´ +, '('); + +833 +$Çme + = + `sub¡r +( +$ex´ +, 0, +$pos +); + +835 ià( +$Çme + === '') { + +836  +$this +-> + `·r£Subqu”y +( +$ex´ +); + +839 +$¬gSŒ + = + `sub¡r +( +$ex´ +, ( +$pos + + 1), -1); + +840 +$¬gs + = + `¬¿y +(); + +843 + `fܗch + ( +$this +-> +_tok’iz” +-> + `sqlEx¶ode +( +$¬gSŒ +, ','è +as + +$¬g +) { + +844 +$¬gs +[] = +$·r£C®lback + ? + `ÿÎ_u£r_func_¬¿y +($·r£C®lback, + `¬¿y +( +$¬g +)è: +$this +-> + `·r£CÏu£ +($arg); + +848 +Œy + { + +849 +$ex´ + = + `ÿÎ_u£r_func_¬¿y +( + `¬¿y +( +$this +-> +_cÚn +-> +ex´essiÚ +, +$Çme +), +$¬gs +); + +850 } + `ÿtch + ( +Doùrše_Ex´essiÚ_Exû±iÚ + +$e +) { + +851 +throw + +Ãw + + `Doùrše_Qu”y_Exû±iÚ +('UnknowÀfunùiÚ ' . +$Çme + . '.'); + +854  +$ex´ +; + +855 + } +} + +858 +public + +funùiÚ + + $·r£Subqu”y +( +$subqu”y +) + +860 +$Œimmed + = + `Œim +( +$this +-> +_tok’iz” +-> + `b¿ck‘Trim +( +$subqu”y +)); + +863 ià( + `sub¡r +( +$Œimmed +, 0, 4) == 'FROM' || substr($trimmed, 0, 6) == 'SELECT') { + +865 +$q + = +$this +-> + `ü—‹Subqu”y +()-> + `·r£DqlQu”y +( +$Œimmed +); + +866 +$Œimmed + = +$q +-> + `g‘SqlQu”y +(); + +867 +$q +-> + `ä“ +(); + +868 } ià( + `sub¡r +( +$Œimmed +, 0, 4) == 'SQL:') { + +869 +$Œimmed + = + `sub¡r +($trimmed, 4); + +871 +$e + = +$this +-> +_tok’iz” +-> + `sqlEx¶ode +( +$Œimmed +, ','); + +873 +$v®ue + = + `¬¿y +(); + +874 +$šdex + = +çl£ +; + +876 + `fܗch + ( +$e + +as + +$·¹ +) { + +877 +$v®ue +[] = +$this +-> + `·r£CÏu£ +( +$·¹ +); + +880 +$Œimmed + = + `im¶ode +(', ', +$v®ue +); + +883  '(' . +$Œimmed + . ')'; + +884 + } +} + +898 +public + +funùiÚ + + $´oûssP’dšgSubqu”›s +() + +900 + `fܗch + ( +$this +-> +_³ndšgSubqu”›s + +as + +$v®ue +) { + +901 + `li¡ +( +$dql +, +$®Ÿs +èð +$v®ue +; + +903 +$subqu”y + = +$this +-> + `ü—‹Subqu”y +(); + +905 +$sql + = +$subqu”y +-> + `·r£DqlQu”y +( +$dql +, +çl£ +)-> + `g‘Qu”y +(); + +906 +$subqu”y +-> + `ä“ +(); + +908 + `»£t +( +$this +-> +_qu”yCompڒts +); + +909 +$compڒtAlŸs + = + `key +( +$this +-> +_qu”yCompڒts +); + +910 +$bËAlŸs + = +$this +-> + `g‘SqlTabËAlŸs +( +$compڒtAlŸs +); + +912 +$sqlAlŸs + = +$bËAlŸs + . '__' . + `couÁ +( +$this +-> +_agg»g©eAlŸsM­ +); + +914 +$this +-> +_sqlP¬ts +['£Ëù'][] = '(' . +$sql + . 'èAS ' . $this-> +_cÚn +-> + `quÙeId’tif›r +( +$sqlAlŸs +); + +916 +$this +-> +_agg»g©eAlŸsM­ +[ +$®Ÿs +] = +$sqlAlŸs +; + +917 +$this +-> +_qu”yCompڒts +[ +$compڒtAlŸs +]['agg'][] = +$®Ÿs +; + +919 +$this +-> +_³ndšgSubqu”›s + = + `¬¿y +(); + +920 + } +} + +929 +public + +funùiÚ + + $´oûssP’dšgAgg»g©es +() + +932 + `fܗch + ( +$this +-> +_³ndšgAgg»g©es + +as + +$agg»g©e +) { + +933 + `li¡ + ( +$ex´essiÚ +, +$compڒts +, +$®Ÿs +èð +$agg»g©e +; + +935 +$bËAlŸ£s + = + `¬¿y +(); + +938 iàÐ! + `em±y + ( +$compڒts +)) { + +939 + `fܗch + ( +$compڒts + +as + +$compڒt +) { + +941 ià( + `is_num”ic +( +$compڒt +)) { + +945 +$e + = + `ex¶ode +('.', +$compڒt +); + +947 +$f›ld + = + `¬¿y_pÝ +( +$e +); + +948 +$compڒtAlŸs + = + `im¶ode +('.', +$e +); + +951 iàÐ! + `is£t +( +$this +-> +_qu”yCompڒts +[ +$compڒtAlŸs +])) { + +952 +throw + +Ãw + + `Doùrše_Qu”y_Exû±iÚ +('UnknowÀcompڒˆ®Ÿ ' . +$compڒtAlŸs +); + +955 +$bË + = +$this +-> +_qu”yCompڒts +[ +$compڒtAlŸs +]['table']; + +957 +$f›ld + = +$bË +-> + `g‘CÞumnName +($field); + +960 iàÐ! +$bË +-> + `hasCÞumn +( +$f›ld +)) { + +961 +throw + +Ãw + + `Doùrše_Qu”y_Exû±iÚ +('UnknowÀcÞumÀ' . +$f›ld +); + +964 +$sqlTabËAlŸs + = +$this +-> + `g‘SqlTabËAlŸs +( +$compڒtAlŸs +); + +966 +$bËAlŸ£s +[ +$sqlTabËAlŸs +] = +Œue +; + +970 +$id’tif›r + = +$this +-> +_cÚn +-> + `quÙeId’tif›r +( +$sqlTabËAlŸs + . '.' . +$f›ld +); + +971 +$ex´essiÚ + = + `¡r_»¶aû +( +$compڒt +, +$id’tif›r +, $expression); + +975 ià( + `couÁ +( +$bËAlŸ£s +) !== 1) { + +976 +$compڒtAlŸs + = + `»£t +( +$this +-> +_bËAlŸsM­ +); + +977 +$bËAlŸs + = + `key +( +$this +-> +_bËAlŸsM­ +); + +980 +$šdex + = + `couÁ +( +$this +-> +_agg»g©eAlŸsM­ +); + +981 +$sqlAlŸs + = +$this +-> +_cÚn +-> + `quÙeId’tif›r +( +$bËAlŸs + . '__' . +$šdex +); + +983 +$this +-> +_sqlP¬ts +['£Ëù'][] = +$ex´essiÚ + . ' AS ' . +$sqlAlŸs +; + +985 +$this +-> +_agg»g©eAlŸsM­ +[ +$®Ÿs +] = +$sqlAlŸs +; + +986 +$this +-> +_ex´essiÚM­ +[ +$®Ÿs +][0] = +$ex´essiÚ +; + +988 +$this +-> +_qu”yCompڒts +[ +$compڒtAlŸs +]['agg'][ +$šdex +] = +$®Ÿs +; + +990 +$this +-> +_ÃededTabËs +[] = +$bËAlŸs +; + +993 +$this +-> +_³ndšgAgg»g©es + = + `¬¿y +(); + +994 + } +} + +1004 +´Ùeùed + +funùiÚ + + $_buždSqlQu”yBa£ +() + +1006  +$this +-> +_ty³ +) { + +1007  +£lf +:: +DELETE +: + +1008 +$q + = 'DELETE FROM '; + +1010  +£lf +:: +UPDATE +: + +1011 +$q + = 'UPDATE '; + +1013  +£lf +:: +SELECT +: + +1014 +$di¡šù + = ( +$this +-> +_sqlP¬ts +['distinct']) ? 'DISTINCT ' : ''; + +1015 +$q + = 'SELECT ' . +$di¡šù + . + `im¶ode +(', ', +$this +-> +_sqlP¬ts +['select']) . ' FROM '; + +1018  +$q +; + +1019 + } +} + +1027 +´Ùeùed + +funùiÚ + + $_buždSqlFromP¬t +( +$ignÜeP’dšg + = +çl£ +) + +1029 +$q + = ''; + +1031 + `fܗch + ( +$this +-> +_sqlP¬ts +['äom'] +as + +$k + => +$·¹ +) { + +1032 +$e + = + `ex¶ode +(' ', +$·¹ +); + +1034 ià( +$k + === 0) { + +1035 iàÐ! +$ignÜeP’dšg + && +$this +-> +_ty³ + =ð +£lf +:: +SELECT +) { + +1037 +$®Ÿs + = + `couÁ +( +$e +) > 1 + +1038 ? +$this +-> + `g‘CompڒtAlŸs +( +$e +[1]) + +1039 : +nuÎ +; + +1040 +$wh”e + = +$this +-> + `_´oûssP’dšgJošCÚd™iÚs +( +$®Ÿs +); + +1043 iàÐ! + `em±y +( +$wh”e +)) { + +1044 ià( + `couÁ +( +$this +-> +_sqlP¬ts +['where']) > 0) { + +1045 +$this +-> +_sqlP¬ts +['where'][] = 'AND'; + +1048 ià( + `sub¡r +( +$wh”e +, 0, 1) === '(' && substr($where, -1) === ')') { + +1049 +$this +-> +_sqlP¬ts +['wh”e'][] = +$wh”e +; + +1051 +$this +-> +_sqlP¬ts +['wh”e'][] = '(' . +$wh”e + . ')'; + +1056 +$q + .ð +$·¹ +; + +1063 iàÐ! + `´eg_m©ch +('/\bJOIN\b/i', +$·¹ +è&& ! + `is£t +( +$this +-> +_³ndšgJošCÚd™iÚs +[ +$k +])) { + +1064 +$q + .ð', ' . +$·¹ +; + +1066 ià( + `sub¡r +( +$·¹ +, 0, 9) === 'LEFT JOIN') { + +1067 +$®Ÿ£s + = + `¬¿y_m”ge +( +$this +-> +_subqu”yAlŸ£s +, + +1068 + `¬¿y_keys +( +$this +-> +_ÃededTabËs +)); + +1070 iàÐ! + `š_¬¿y +( +$e +[3], +$®Ÿ£s +è&& ! in_¬¿y($e[2], $®Ÿ£sè&& ! + `em±y +( +$this +-> +_³ndšgF›lds +)) { + +1076 iàÐ! +$ignÜeP’dšg + && + `is£t +( +$this +-> +_³ndšgJošCÚd™iÚs +[ +$k +])) { + +1077 ià( + `¡½os +( +$·¹ +, ' ON 'è!=ð +çl£ +) { + +1078 +$·¹ + .= ' AND '; + +1080 +$·¹ + .= ' ON '; + +1083 +$·¹ + .ð +$this +-> + `_´oûssP’dšgJošCÚd™iÚs +( +$k +); + +1086 +$compڒtAlŸs + = +$this +-> + `g‘CompڒtAlŸs +( +$e +[3]); + +1087 +$¡ršg + = +$this +-> + `g‘Inh”™ªûCÚd™iÚ +( +$compڒtAlŸs +); + +1089 ià( +$¡ršg +) { + +1090 +$·¹ + = $·¹ . ' AND ' . +$¡ršg +; + +1092 +$q + .ð' ' . +$·¹ +; + +1095 +$this +-> +_sqlP¬ts +['äom'][ +$k +] = +$·¹ +; + +1097  +$q +; + +1098 + } +} + +1108 +´Ùeùed + +funùiÚ + + $_´oûssP’dšgJošCÚd™iÚs +( +$®Ÿs +) + +1110 +$·¹s + = + `¬¿y +(); + +1112 ià( +$®Ÿs + !=ð +nuÎ + && + `is£t +( +$this +-> +_³ndšgJošCÚd™iÚs +[$alias])) { + +1113 +$·r£r + = +Ãw + + `Doùrše_Qu”y_JošCÚd™iÚ +( +$this +, $this-> +_tok’iz” +); + +1115 + `fܗch + ( +$this +-> +_³ndšgJošCÚd™iÚs +[ +$®Ÿs +] +as + +$jošCÚd™iÚ +) { + +1116 +$·¹s +[] = +$·r£r +-> + `·r£ +( +$jošCÚd™iÚ +); + +1123  ( + `couÁ +( +$·¹s +è> 0 ? '(' . + `im¶ode +(') AND (', $parts) . ')' : ''); + +1124 + } +} + +1135 +public + +funùiÚ + +g‘SqlQu”y +( +$·¿ms + = +¬¿y +(), +$lim™Subqu”y + = +Œue +) + +1138 +$this +-> +_·¿ms +['exec'] = +$·¿ms +; + +1141 + g$this +-> + g_execP¬ams + = +$this +-> +g‘Fω’edP¬ams +(); + +1143 ià( + g$this +-> + g_¡©e + !=ð +£lf +:: +STATE_DIRTY +) { + +1144 +$this +-> +fixA¼ayP¬am‘”V®ues +($this-> +g‘IÁ”ÇlP¬ams +()); + +1147  + g$this +-> + g_sql +; + +1149  + g$this +-> +buždSqlQu”y +( +$lim™Subqu”y +); + +1158 +public + +funùiÚ + + $buždSqlQu”y +( +$lim™Subqu”y + = +Œue +) + +1161 iàÐ! +$this +-> + `isSubqu”y +()) { + +1162 +$this +-> +_qu”yCompڒts + = + `¬¿y +(); + +1163 +$this +-> +_³ndšgAgg»g©es + = + `¬¿y +(); + +1164 +$this +-> +_agg»g©eAlŸsM­ + = + `¬¿y +(); + +1167 +$this +-> + `»£t +(); + +1170 +$this +-> + `_´eQu”y +(); + +1174 + `fܗch + ( +$this +-> +_dqlP¬ts + +as + +$qu”yP¬tName + => +$qu”yP¬ts +) { + +1176 ià( +$qu”yP¬tName + == 'from') { + +1178 +$qu”yCompڒtsBefÜe + = +$this +-> + `g‘Qu”yCompڒts +(); + +1182 ià( +$qu”yP¬tName + != 'forUpdate') { + +1183 +$this +-> + `_´oûssDqlQu”yP¬t +( +$qu”yP¬tName +, +$qu”yP¬ts +); + +1187 ià( +$qu”yP¬tName + == 'from') { + +1189 +$qu”yCompڒtsAᔠ+ = +$this +-> + `g‘Qu”yCompڒts +(); + +1192 +$diffQu”yCompڒts + = + `¬¿y_diff_key +( +$qu”yCompڒtsAᔠ+, +$qu”yCompڒtsBefÜe +); + +1193 +$this +-> +_roÙAlŸs + = + `key +( +$diffQu”yCompڒts +); + +1196 +$this +-> +_¡©e + = +£lf +:: +STATE_CLEAN +; + +1199 ià( + `em±y +( +$this +-> +_sqlP¬ts +['from'])) { + +1200  +çl£ +; + +1203 +$ÃedsSubQu”y + = +çl£ +; + +1204 +$subqu”y + = ''; + +1205 +$m­ + = +$this +-> + `g‘RoÙDeþ¬©iÚ +(); + +1206 +$bË + = +$m­ +['table']; + +1207 +$roÙAlŸs + = +$this +-> + `g‘RoÙAlŸs +(); + +1209 iàÐ! + `em±y +( +$this +-> +_sqlP¬ts +['lim™']è&& $this-> +_ÃedsSubqu”y + && + +1210 +$bË +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_QUERY_LIMIT +è=ðDoùrše_CÜe:: +LIMIT_RECORDS +) { + +1214 if(! +$this +-> +_sqlP¬ts +['distinct']) { + +1215 +$this +-> +_isLim™Subqu”yU£d + = +Œue +; + +1216 +$ÃedsSubQu”y + = +Œue +; + +1218 + `fܗch +Ð + `¬¿y_keys +( +$this +-> +_³ndšgF›lds +è +as + +$®Ÿs +){ + +1220 if( +$®Ÿs + =ð +$this +-> + `g‘RoÙAlŸs +()){ + +1225 if( + `is£t +( +$this +-> +_qu”yCompڒts +[ +$®Ÿs +]['relation']) && + +1226 +$this +-> +_qu”yCompڒts +[ +$®Ÿs +]['»ÏtiÚ']-> + `g‘Ty³ +(è=ð +Doùrše_R–©iÚ +:: +ONE +){ + +1230 +$this +-> +_isLim™Subqu”yU£d + = +Œue +; + +1231 +$ÃedsSubQu”y + = +Œue +; + +1236 +$sql + = + `¬¿y +(); + +1238 iàÐ! + `em±y +( +$this +-> +_³ndšgF›lds +)) { + +1239 + `fܗch + ( +$this +-> +_qu”yCompڒts + +as + +$®Ÿs + => +$m­ +) { + +1240 +$f›ldSql + = +$this +-> + `´oûssP’dšgF›lds +( +$®Ÿs +); + +1241 iàÐ! + `em±y +( +$f›ldSql +)) { + +1242 +$sql +[] = +$f›ldSql +; + +1247 iàÐ! + `em±y +( +$sql +)) { + +1248 + `¬¿y_unshiá +( +$this +-> +_sqlP¬ts +['£Ëù'], + `im¶ode +(', ', +$sql +)); + +1251 +$this +-> +_³ndšgF›lds + = + `¬¿y +(); + +1254 +$q + = +$this +-> + `_buždSqlQu”yBa£ +(); + +1255 +$q + .ð +$this +-> + `_buždSqlFromP¬t +(); + +1257 iàÐ! + `em±y +( +$this +-> +_sqlP¬ts +['set'])) { + +1258 +$q + .ð' SET ' . + `im¶ode +(', ', +$this +-> +_sqlP¬ts +['set']); + +1261 +$¡ršg + = +$this +-> + `g‘Inh”™ªûCÚd™iÚ +($this-> + `g‘RoÙAlŸs +()); + +1264 iàÐ! + `em±y +( +$¡ršg +)) { + +1265 ià( + `couÁ +( +$this +-> +_sqlP¬ts +['where']) > 0) { + +1266 +$this +-> +_sqlP¬ts +['where'][] = 'AND'; + +1269 ià( + `sub¡r +( +$¡ršg +, 0, 1) === '(' && substr($string, -1) === ')') { + +1270 +$this +-> +_sqlP¬ts +['wh”e'][] = +$¡ršg +; + +1272 +$this +-> +_sqlP¬ts +['wh”e'][] = '(' . +$¡ršg + . ')'; + +1276 +$modifyLim™ + = +Œue +; + +1277 +$lim™Subqu”ySql + = ''; + +1279 iàÐÐ! + `em±y +( +$this +-> +_sqlP¬ts +['lim™']è|| !ƒm±y($this->_sqlP¬ts['off£t'])è&& +$ÃedsSubQu”y + && +$lim™Subqu”y +) { + +1280 +$subqu”y + = +$this +-> + `g‘Lim™Subqu”y +(); + +1283 +$idCÞumnName + = +$bË +-> + `g‘CÞumnName +($bË-> + `g‘Id’tif›r +()); + +1285  + `¡¹Þow” +( +$this +-> +_cÚn +-> + `g‘Driv”Name +())) { + +1287 +$this +-> + `u£Qu”yCache +( +çl£ +); + +1290 +$li¡ + = +$this +-> +_cÚn +-> + `execu‹ +( +$subqu”y +, $this-> +_execP¬ams +)-> + `ãtchAÎ +( +Doùrše_CÜe +:: +FETCH_COLUMN +); + +1291 +$subqu”y + = + `im¶ode +(', ', + `¬¿y_m­ +( + `¬¿y +( +$this +-> +_cÚn +, 'quÙe'), +$li¡ +)); + +1296 +$subqu”yAlŸs + = +$this +-> +_cÚn +-> + `quÙeId’tif›r +('doctrine_subquery_alias'); + +1299 +$subqu”y + = 'SELECT ' . +$subqu”yAlŸs + . '.' . +$this +-> +_cÚn +-> + `quÙeId’tif›r +( +$idCÞumnName +) + +1300 . ' FROM (' . +$subqu”y + . 'èAS ' . +$subqu”yAlŸs +; + +1305 +$f›ld + = +$this +-> + `g‘SqlTabËAlŸs +( +$roÙAlŸs +è. '.' . +$idCÞumnName +; + +1309 +$lim™Subqu”ySql + = +$this +-> +_cÚn +-> + `quÙeId’tif›r +( +$f›ld +) + +1310 . (Ð! + `em±y +( +$subqu”y +)) ? ' IN (' . $subquery . ')' : ' IS NULL') + +1311 . (( + `couÁ +( +$this +-> +_sqlP¬ts +['where']) > 0) ? ' AND ' : ''); + +1313 +$modifyLim™ + = +çl£ +; + +1317 +$em±yWh”e + = + `em±y +( +$this +-> +_sqlP¬ts +['where']); + +1319 iàÐ! ( +$em±yWh”e + && +$lim™Subqu”ySql + == '')) { + +1320 +$wh”e + = + `im¶ode +(' ', +$this +-> +_sqlP¬ts +['where']); + +1321 +$wh”e + = ($wh”=ð'' || ( + `sub¡r +($where, 0, 1) === '(' && substr($where, -1) === ')')) + +1322 ? +$wh”e + : '(' . $where . ')'; + +1324 +$q + .ð' WHERE ' . +$lim™Subqu”ySql + . +$wh”e +; + +1329 + `fܗch + ( +$this +-> +_sqlP¬ts +['Üd”by'] +as + +$k + => +$Üd”By +) { + +1330 +$e + = + `ex¶ode +(', ', +$Üd”By +); + +1331 + `un£t +( +$this +-> +_sqlP¬ts +['Üd”by'][ +$k +]); + +1332 + `fܗch + ( +$e + +as + +$v +) { + +1333 +$this +-> +_sqlP¬ts +['Üd”by'][] = +$v +; + +1339 ià( +$this +-> +_ty³ + ==ð +£lf +:: +SELECT +) { + +1340 + `fܗch + ( +$this +-> +_qu”yCompڒts + +as + +$®Ÿs + => +$m­ +) { + +1341 +$sqlAlŸs + = +$this +-> + `g‘SqlTabËAlŸs +( +$®Ÿs +); + +1342 ià( + `is£t +( +$m­ +['relation'])) { + +1343 +$Üd”By + = +$m­ +['»ÏtiÚ']-> + `g‘Ord”ByS‹m’t +( +$sqlAlŸs +, +Œue +); + +1344 ià( +$Üd”By + =ð +$m­ +['relation']['orderBy']) { + +1345 ià( + `is£t +( +$m­ +['ref'])) { + +1346 +$Üd”By + = +$m­ +['»ÏtiÚ']['»fTabË']-> + `´oûssOrd”By +( +$sqlAlŸs +, $m­['»ÏtiÚ']['Üd”By'], +Œue +); + +1348 +$Üd”By + = +nuÎ +; + +1352 +$Üd”By + = +$m­ +['bË']-> + `g‘Ord”ByS‹m’t +( +$sqlAlŸs +, +Œue +); + +1355 ià( +$Üd”By +) { + +1356 +$e + = + `ex¶ode +(',', +$Üd”By +); + +1357 +$e + = + `¬¿y_m­ +('trim', $e); + +1358 + `fܗch + ( +$e + +as + +$v +) { + +1359 iàÐ! + `š_¬¿y +( +$v +, +$this +-> +_sqlP¬ts +['orderby'])) { + +1360 +$this +-> +_sqlP¬ts +['Üd”by'][] = +$v +; + +1367 +$q + .ðÐ! + `em±y +( +$this +-> +_sqlP¬ts +['groupby'])è? ' GROUP BY ' . + `im¶ode +(', ', $this->_sqlParts['groupby']) : ''; + +1368 +$q + .ðÐ! + `em±y +( +$this +-> +_sqlP¬ts +['havšg'])è? ' HAVING ' . + `im¶ode +(' AND ', $this->_sqlParts['having']): ''; + +1369 +$q + .ðÐ! + `em±y +( +$this +-> +_sqlP¬ts +['Üd”by'])è? ' ORDER BY ' . + `im¶ode +(', ', $this->_sqlParts['orderby']) : ''; + +1371 ià( +$modifyLim™ +) { + +1372 +$q + = +$this +-> +_cÚn +-> + `modifyLim™Qu”y +($q, $this-> +_sqlP¬ts +['lim™'], $this->_sqlP¬ts['off£t'], +çl£ +, false, $this); + +1375 +$q + .ð +$this +-> +_sqlP¬ts +['fÜUpd©e'] ==ð +Œue + ? ' FOR UPDATE ' : ''; + +1377 +$this +-> +_sql + = +$q +; + +1379 +$this +-> + `þ—r +(); + +1381  +$q +; + +1382 + } +} + +1395 +public + +funùiÚ + + $g‘Lim™Subqu”y +() + +1397 +$m­ + = + `»£t +( +$this +-> +_qu”yCompڒts +); + +1398 +$bË + = +$m­ +['table']; + +1399 +$compڒtAlŸs + = + `key +( +$this +-> +_qu”yCompڒts +); + +1402 +$®Ÿs + = +$this +-> + `g‘SqlTabËAlŸs +( +$compڒtAlŸs +); + +1404 +$´im¬yKey + = +$®Ÿs + . '.' . +$bË +-> + `g‘CÞumnName +($bË-> + `g‘Id’tif›r +()); + +1406 +$driv”Name + = +$this +-> +_cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_DRIVER_NAME +); + +1409 ià(( +$driv”Name + =ð'Üaþe' || $driv”Nam=ð'oci'è&& +$this +-> + `_isOrd”edByJošedCÞumn +()) { + +1410 +$subqu”y + = 'SELECT '; + +1412 +$subqu”y + = 'SELECT DISTINCT '; + +1414 +$subqu”y + .ð +$this +-> +_cÚn +-> + `quÙeId’tif›r +( +$´im¬yKey +); + +1417 ià( +$driv”Name + == 'pgsql' || $driverName == 'oracle' || $driverName == 'oci' || $driverName == 'mssql' || $driverName == 'odbc') { + +1418 + `fܗch + ( +$this +-> +_sqlP¬ts +['Üd”by'] +as + +$·¹ +) { + +1420 +$e + = +$this +-> +_tok’iz” +-> + `b¿ck‘Ex¶ode +( +$·¹ +, ' '); + +1421 + `fܗch + ( +$e + +as + +$f +) { + +1422 ià( +$f + == 0 || $f % 2 == 0) { + +1423 +$·¹Origš® + = + `¡r_»¶aû +(',', '', + `Œim +( +$f +)); + +1424 +$ÿÎback + = + `ü—‹_funùiÚ +('$e', 'returnrim($e, \'[]`"\');'); + +1425 +$·¹ + = + `Œim +( + `im¶ode +('.', + `¬¿y_m­ +( +$ÿÎback +, + `ex¶ode +('.', +$·¹Origš® +)))); + +1427 ià( + `¡½os +( +$·¹ +, '.'è==ð +çl£ +) { + +1432 ià( + `¡½os +( +$·¹ +, '('è!=ð +çl£ +) { + +1437 ià( +$·¹ + !=ð +$´im¬yKey +) { + +1438 +$subqu”y + .ð', ' . +$·¹Origš® +; + +1445 +$Üd”by + = +$this +-> +_sqlP¬ts +['orderby']; + +1446 +$havšg + = +$this +-> +_sqlP¬ts +['having']; + +1447 ià( +$driv”Name + == 'mysql' || $driverName == 'pgsql') { + +1448 + `fܗch + ( +$this +-> +_ex´essiÚM­ + +as + +$dqlAlŸs + => +$ex´ +) { + +1449 ià( + `is£t +( +$ex´ +[1])) { + +1450 +$subqu”y + .ð', ' . +$ex´ +[0] . ' AS ' . +$this +-> +_agg»g©eAlŸsM­ +[ +$dqlAlŸs +]; + +1454 + `fܗch + ( +$this +-> +_ex´essiÚM­ + +as + +$dqlAlŸs + => +$ex´ +) { + +1455 ià( + `is£t +( +$ex´ +[1])) { + +1456 + `fܗch + ( +$havšg + +as + +$k + => +$v +) { + +1457 +$havšg +[ +$k +] = + `¡r_»¶aû +( +$this +-> +_agg»g©eAlŸsM­ +[ +$dqlAlŸs +], +$ex´ +[0], +$v +); + +1459 + `fܗch + ( +$Üd”by + +as + +$k + => +$v +) { + +1460 +$e + = + `ex¶ode +(' ', +$v +); + +1461 ià( +$e +[0] =ð +$this +-> +_agg»g©eAlŸsM­ +[ +$dqlAlŸs +]) { + +1462 +$Üd”by +[ +$k +] = +$ex´ +[0]; + +1470 + `´eg_m©ch_®l +('/`[a-z0-9_]+`\.`[a-z0-9_]+`/i', + `im¶ode +(' ', +$havšg +), +$m©ches +, +PREG_PATTERN_ORDER +); + +1471 ià( + `couÁ +( +$m©ches +[0]) > 0) { + +1472 +$subqu”y + .ð', ' . + `im¶ode +(', ', + `¬¿y_unique +( +$m©ches +[0])); + +1475 +$subqu”y + .= ' FROM'; + +1477 + `fܗch + ( +$this +-> +_sqlP¬ts +['äom'] +as + +$·¹ +) { + +1479 ià( + `sub¡r +( +$·¹ +, 0, 9) === 'LEFT JOIN') { + +1480 +$e + = + `ex¶ode +(' ', +$·¹ +); + +1483 ià( + `em±y +( +$this +-> +_sqlP¬ts +['orderby']) &&ƒmpty($this->_sqlParts['where']) &&ƒmpty($this->_sqlParts['having']) &&ƒmpty($this->_sqlParts['groupby'])) { + +1488 +$subqu”y + .ð' ' . +$·¹ +; + +1492 +$subqu”y + .ðÐ! + `em±y +( +$this +-> +_sqlP¬ts +['wh”e']))? ' WHERE ' . + `im¶ode +(' ', $this->_sqlParts['where']) : ''; + +1493 +$subqu”y + .ðÐ! + `em±y +( +$this +-> +_sqlP¬ts +['groupby']))? ' GROUP BY ' . + `im¶ode +(', ', $this->_sqlParts['groupby']) : ''; + +1494 +$subqu”y + .ðÐ! + `em±y +( +$havšg +))? ' HAVING ' . + `im¶ode +(' AND ', $having) : ''; + +1495 +$subqu”y + .ðÐ! + `em±y +( +$Üd”by +))? ' ORDER BY ' . + `im¶ode +(', ', $orderby) : ''; + +1497 ià(( +$driv”Name + =ð'Üaþe' || $driv”Nam=ð'oci'è&& +$this +-> + `_isOrd”edByJošedCÞumn +()) { + +1503 +$quÙedId’tif›rCÞumnName + = +$this +-> +_cÚn +-> + `quÙeId’tif›r +( +$bË +-> + `g‘CÞumnName +($bË-> + `g‘Id’tif›r +())); + +1504 +$subqu”y + = 'SELECT doùrše_subqu”y_®Ÿs.' . +$quÙedId’tif›rCÞumnName + + +1505 . ' FROM (' . +$subqu”y + . ') doctrine_subquery_alias' + +1506 . ' GROUP BY doùrše_subqu”y_®Ÿs.' . +$quÙedId’tif›rCÞumnName + + +1511 +$subqu”y + = +$this +-> +_cÚn +-> + `modifyLim™Subqu”y +( +$bË +, $subqu”y, $this-> +_sqlP¬ts +['limit'], $this->_sqlParts['offset']); + +1513 +$·¹s + = +$this +-> +_tok’iz” +-> + `quÙeEx¶ode +( +$subqu”y +, ' ', "'", "'"); + +1515 + `fܗch + ( +$·¹s + +as + +$k + => +$·¹ +) { + +1516 ià( + `¡½os +( +$·¹ +, ' 'è!=ð +çl£ +) { + +1520 +$·¹ + = + `¡r_»¶aû +( + `¬¿y +('"', "'", '`'), "", $part); + +1523 + `´eg_m©ch +('/^(\(?)(.*?)(\)?)$/', +$·¹ +, +$m©ches +); + +1524 ià( +$this +-> + `hasSqlTabËAlŸs +( +$m©ches +[2])) { + +1525 +$·¹s +[ +$k +] = +$m©ches +[1]. +$this +-> +_cÚn +-> + `quÙeId’tif›r +($this-> + `g’”©eNewSqlTabËAlŸs +($matches[2])).$matches[3]; + +1529 ià( + `¡½os +( +$·¹ +, '.'è==ð +çl£ +) { + +1533 + `´eg_m©ch_®l +("/[a-zA-Z0-9_]+\.[a-z0-9_]+/i", +$·¹ +, +$m +); + +1535 + `fܗch + ( +$m +[0] +as + +$m©ch +) { + +1536 +$e + = + `ex¶ode +('.', +$m©ch +); + +1539 +$e2 + = + `¬¿y +(); + +1540 + `fܗch + ( +$e + +as + +$k2 + => +$v2 +) { + +1541 +$e2 +[ +$k2 +] = +$this +-> +_cÚn +-> + `quÙeId’tif›r +( +$v2 +); + +1543 +$m©ch + = + `im¶ode +('.', +$e2 +); + +1546 +$e +[0] = +$this +-> + `g’”©eNewSqlTabËAlŸs +($e[0]); + +1549 + `fܗch + ( +$e + +as + +$k2 + => +$v2 +) { + +1550 +$e +[ +$k2 +] = +$this +-> +_cÚn +-> + `quÙeId’tif›r +( +$v2 +); + +1553 +$»¶aû + = + `im¶ode +('.' , +$e +); + +1556 +$·¹s +[ +$k +] = + `¡r_»¶aû +( +$m©ch +, +$»¶aû +, $parts[$k]); + +1560 ià( +$driv”Name + == 'mysql' || $driverName == 'pgsql') { + +1561 + `fܗch + ( +$·¹s + +as + +$k + => +$·¹ +) { + +1562 ià( + `¡½os +( +$·¹ +, "'"è!=ð +çl£ +) { + +1565 ià( + `¡½os +( +$·¹ +, '__'è=ð +çl£ +) { + +1569 + `´eg_m©ch_®l +("/[a-zA-Z0-9_]+\_\_[a-z0-9_]+/i", +$·¹ +, +$m +); + +1571 + `fܗch + ( +$m +[0] +as + +$m©ch +) { + +1572 +$e + = + `ex¶ode +('__', +$m©ch +); + +1573 +$e +[0] = +$this +-> + `g’”©eNewSqlTabËAlŸs +($e[0]); + +1575 +$·¹s +[ +$k +] = + `¡r_»¶aû +( +$m©ch +, + `im¶ode +('__', +$e +), $parts[$k]); + +1580 +$subqu”y + = + `im¶ode +(' ', +$·¹s +); + +1581  +$subqu”y +; + +1582 + } +} + +1591 +´iv©e + +funùiÚ + + $_isOrd”edByJošedCÞumn +() { + +1592 iàÐ! +$this +-> +_qu”yCompڒts +) { + +1593 +throw + +Ãw + + `Doùrše_Qu”y_Exû±iÚ +("The query is in‡n invalid state forhis " + +1596 +$compڒtAlŸs + = + `key +( +$this +-> +_qu”yCompڒts +); + +1597 +$mašTabËAlŸs + = +$this +-> + `g‘SqlTabËAlŸs +( +$compڒtAlŸs +); + +1598 + `fܗch + ( +$this +-> +_sqlP¬ts +['Üd”by'] +as + +$·¹ +) { + +1599 +$·¹ + = + `Œim +($part); + +1600 +$e + = +$this +-> +_tok’iz” +-> + `b¿ck‘Ex¶ode +( +$·¹ +, ' '); + +1601 +$·¹ + = + `Œim +( +$e +[0]); + +1602 ià( + `¡½os +( +$·¹ +, '.'è==ð +çl£ +) { + +1605 + `li¡ +( +$bËAlŸs +, +$cÞumnName +èð + `ex¶ode +('.', +$·¹ +); + +1606 ià( +$bËAlŸs + !ð +$mašTabËAlŸs +) { + +1607  +Œue +; + +1610  +çl£ +; + +1611 + } +} + +1624 +public + +funùiÚ + + $·r£DqlQu”y +( +$qu”y +, +$þ—r + = +Œue +) + +1626 ià( +$þ—r +) { + +1627 +$this +-> + `þ—r +(); + +1630 +$qu”y + = + `Œim +($query); + +1631 +$qu”y + = + `¡r_»¶aû +("\r", "\n", str_replace("\r\n", "\n", $query)); + +1632 +$qu”y + = + `¡r_»¶aû +("\n", ' ', $query); + +1634 +$·¹s + = +$this +-> +_tok’iz” +-> + `tok’izeQu”y +( +$qu”y +); + +1636 + `fܗch + ( +$·¹s + +as + +$·¹Name + => +$subP¬ts +) { + +1637 +$subP¬ts + = + `Œim +($subParts); + +1638 +$·¹Name + = + `¡¹Þow” +($partName); + +1639  +$·¹Name +) { + +1641 +$this +-> +_ty³ + = +£lf +:: +CREATE +; + +1644 +$this +-> +_ty³ + = +£lf +:: +INSERT +; + +1647 +$this +-> +_ty³ + = +£lf +:: +DELETE +; + +1650 +$this +-> +_ty³ + = +£lf +:: +SELECT +; + +1651 +$this +-> + `_addDqlQu”yP¬t +( +$·¹Name +, +$subP¬ts +); + +1654 +$this +-> +_ty³ + = +£lf +:: +UPDATE +; + +1655 +$·¹Name + = 'from'; + +1657 +$this +-> + `_addDqlQu”yP¬t +( +$·¹Name +, +$subP¬ts +); + +1660 +$this +-> + `_addDqlQu”yP¬t +( +$·¹Name +, +$subP¬ts +, +Œue +); + +1664 +$·¹Name + .= 'by'; + +1669 +$this +-> + `_addDqlQu”yP¬t +( +$·¹Name +, +$subP¬ts +); + +1674  +$this +; + +1675 + } +} + +1682 +public + +funùiÚ + + $lßd +( +$·th +, +$lßdF›lds + = +Œue +) + +1684 ià( + `is£t +( +$this +-> +_qu”yCompڒts +[ +$·th +])) { + +1685  +$this +-> +_qu”yCompڒts +[ +$·th +]; + +1688 +$e + = +$this +-> +_tok’iz” +-> + `quÙeEx¶ode +( +$·th +, ' INDEXBY '); + +1690 +$m­W™h + = +nuÎ +; + +1691 ià( + `couÁ +( +$e +) > 1) { + +1692 +$m­W™h + = + `Œim +( +$e +[1]); + +1694 +$·th + = +$e +[0]; + +1698 +$e + = + `ex¶ode +(' ON ', + `¡r_œ•Ïû +(' oÀ', ' ON ', +$·th +)); + +1700 +$jošCÚd™iÚ + = ''; + +1702 ià( + `couÁ +( +$e +) > 1) { + +1703 +$jošCÚd™iÚ + = + `sub¡r +( +$·th +, + `¡¾’ +( +$e +[0]) + 4, strlen($e[1])); + +1704 +$·th + = + `sub¡r +($·th, 0, + `¡¾’ +( +$e +[0])); + +1706 +$ov”rideJoš + = +Œue +; + +1708 +$e + = + `ex¶ode +(' WITH ', + `¡r_œ•Ïû +(' w™h ', ' WITH ', +$·th +)); + +1710 ià( + `couÁ +( +$e +) > 1) { + +1711 +$jošCÚd™iÚ + = + `sub¡r +( +$·th +, + `¡¾’ +( +$e +[0]) + 6, strlen($e[1])); + +1712 +$·th + = + `sub¡r +($·th, 0, + `¡¾’ +( +$e +[0])); + +1715 +$ov”rideJoš + = +çl£ +; + +1718 +$tmp + = + `ex¶ode +(' ', +$·th +); + +1719 +$compڒtAlŸs + = +$Üigš®AlŸs + = ( + `couÁ +( +$tmp +è> 1è? + `’d +($tmpè: +nuÎ +; + +1721 +$e + = + `´eg_¥l™ +("/[.:]/", +$tmp +[0], -1); + +1723 +$fuÎP©h + = +$tmp +[0]; + +1724 +$´evP©h + = ''; + +1725 +$fuÎL’gth + = + `¡¾’ +( +$fuÎP©h +); + +1727 ià( + `is£t +( +$this +-> +_qu”yCompڒts +[ +$e +[0]])) { + +1728 +$bË + = +$this +-> +_qu”yCompڒts +[ +$e +[0]]['table']; + +1729 +$compڒtAlŸs + = +$e +[0]; + +1731 +$´evP©h + = +$·»Á + = + `¬¿y_shiá +( +$e +); + +1734 + `fܗch + ( +$e + +as + +$key + => +$Çme +) { + +1736 +$Ëngth + = + `¡¾’ +( +$´evP©h +); + +1739 +$´evP©h + = ($´evP©hè? $´evP©h . '.' . +$Çme + : $name; + +1741 +$d–im‘” + = + `sub¡r +( +$fuÎP©h +, +$Ëngth +, 1); + +1744 ià( + `¡¾’ +( +$´evP©h +è==ð +$fuÎL’gth + && + `is£t +( +$Üigš®AlŸs +)) { + +1745 +$compڒtAlŸs + = +$Üigš®AlŸs +; + +1747 +$compڒtAlŸs + = +$´evP©h +; + +1751 ià( + `is£t +( +$this +-> +_qu”yCompڒts +[ +$compڒtAlŸs +])) { + +1752 +throw + +Ãw + + `Doùrše_Qu”y_Exû±iÚ +("Duplicate‡lias '$componentAlias' in query."); + +1755 iàÐ! + `is£t +( +$bË +)) { + +1758 +$bË + = +$this +-> + `lßdRoÙ +( +$Çme +, +$compڒtAlŸs +); + +1760 +$još + = ( +$d–im‘” + == ':') ? 'INNER JOIN ' : 'LEFT JOIN '; + +1762 +$»ÏtiÚ + = +$bË +-> + `g‘R–©iÚ +( +$Çme +); + +1763 +$loÿlTabË + = +$bË +; + +1765 +$bË + = +$»ÏtiÚ +-> + `g‘TabË +(); + +1766 +$this +-> +_qu”yCompڒts +[ +$compڒtAlŸs +] = + `¬¿y +('bË' => +$bË +, + +1767 '·»Á' => +$·»Á +, + +1768 '»ÏtiÚ' => +$»ÏtiÚ +, + +1769 'm­' => +nuÎ +); + +1771 iàÐ! +$»ÏtiÚ +-> + `isOÃToOà +(è&& ! +$this +-> +di§bËLim™Subqu”y +) { + +1772 +$this +-> +_ÃedsSubqu”y + = +Œue +; + +1775 +$loÿlAlŸs + = +$this +-> + `g‘SqlTabËAlŸs +( +$·»Á +, +$loÿlTabË +-> + `g‘TabËName +()); + +1776 +$fÜeignAlŸs + = +$this +-> + `g‘SqlTabËAlŸs +( +$compڒtAlŸs +, +$»ÏtiÚ +-> + `g‘TabË +()-> + `g‘TabËName +()); + +1778 +$fÜeignSql + = +$this +-> +_cÚn +-> + `quÙeId’tif›r +( +$»ÏtiÚ +-> + `g‘TabË +()-> + `g‘TabËName +()) + +1780 . +$this +-> +_cÚn +-> + `quÙeId’tif›r +( +$fÜeignAlŸs +); + +1782 +$m­ + = +$»ÏtiÚ +-> + `g‘TabË +()-> +šh”™ªûM­ +; + +1784 iàÐ! +$lßdF›lds + || ! + `em±y +( +$m­ +è|| +$jošCÚd™iÚ +) { + +1785 +$this +-> +_subqu”yAlŸ£s +[] = +$fÜeignAlŸs +; + +1788 ià( +$»ÏtiÚ + +š¡ªûof + +Doùrše_R–©iÚ_AssocŸtiÚ +) { + +1789 +$asf + = +$»ÏtiÚ +-> + `g‘AssocŸtiÚTabË +(); + +1791 +$assocTabËName + = +$asf +-> + `g‘TabËName +(); + +1793 iàÐ! +$lßdF›lds + || ! + `em±y +( +$m­ +è|| +$jošCÚd™iÚ +) { + +1794 +$this +-> +_subqu”yAlŸ£s +[] = +$assocTabËName +; + +1797 +$assocP©h + = +$´evP©h + . '.' . +$asf +-> + `g‘CompڒtName +(è. ' ' . +$compڒtAlŸs +; + +1799 +$this +-> +_qu”yCompڒts +[ +$assocP©h +] = + `¬¿y +( + +1800 '·»Á' => +$´evP©h +, + +1801 '»ÏtiÚ' => +$»ÏtiÚ +, + +1802 'bË' => +$asf +, + +1803 '»f' => +Œue +); + +1805 +$assocAlŸs + = +$this +-> + `g‘SqlTabËAlŸs +( +$assocP©h +, +$asf +-> + `g‘TabËName +()); + +1807 +$qu”yP¬t + = +$još + + +1808 . +$this +-> +_cÚn +-> + `quÙeId’tif›r +( +$assocTabËName +) + +1810 . +$this +-> +_cÚn +-> + `quÙeId’tif›r +( +$assocAlŸs +); + +1812 +$qu”yP¬t + .ð' ON (' . +$this +-> +_cÚn +-> + `quÙeId’tif›r +( +$loÿlAlŸs + + +1814 . +$loÿlTabË +-> + `g‘CÞumnName +($loÿlTabË-> + `g‘Id’tif›r +())) + +1816 . +$this +-> +_cÚn +-> + `quÙeId’tif›r +( +$assocAlŸs + . '.' . +$»ÏtiÚ +-> + `g‘LoÿlRefCÞumnName +()); + +1818 ià( +$»ÏtiÚ +-> + `isEqu® +()) { + +1820 +$qu”yP¬t + .= ' OR ' + +1821 . +$this +-> +_cÚn +-> + `quÙeId’tif›r +( +$loÿlAlŸs + + +1823 . +$bË +-> + `g‘CÞumnName +($bË-> + `g‘Id’tif›r +())) + +1825 . +$this +-> +_cÚn +-> + `quÙeId’tif›r +( +$assocAlŸs + . '.' . +$»ÏtiÚ +-> + `g‘FÜeignRefCÞumnName +()); + +1828 +$qu”yP¬t + .= ')'; + +1830 +$this +-> +_sqlP¬ts +['äom'][] = +$qu”yP¬t +; + +1832 +$qu”yP¬t + = +$još + . +$fÜeignSql +; + +1834 iàÐ! +$ov”rideJoš +) { + +1835 +$qu”yP¬t + .ð +$this +-> + `buždAssocŸtiveR–©iÚSql +( +$»ÏtiÚ +, +$assocAlŸs +, +$fÜeignAlŸs +, +$loÿlAlŸs +); + +1838 +$qu”yP¬t + = +$this +-> + `buždSim¶eR–©iÚSql +( +$»ÏtiÚ +, +$fÜeignAlŸs +, +$loÿlAlŸs +, +$ov”rideJoš +, +$još +); + +1841 +$qu”yP¬t + .ð +$this +-> + `buždInh”™ªûJošSql +( +$bË +-> + `g‘CompڒtName +(), +$compڒtAlŸs +); + +1842 +$this +-> +_sqlP¬ts +['äom'][ +$compڒtAlŸs +] = +$qu”yP¬t +; + +1844 iàÐ! + `em±y +( +$jošCÚd™iÚ +)) { + +1845 +$this +-> + `addP’dšgJošCÚd™iÚ +( +$compڒtAlŸs +, +$jošCÚd™iÚ +); + +1849 ià( +$lßdF›lds +) { + +1850 +$»¡ÜeS‹ + = +çl£ +; + +1853 ià( +$lßdF›lds + && + `em±y +( +$this +-> +_dqlP¬ts +['select'])) { + +1854 +$this +-> +_³ndšgF›lds +[ +$compڒtAlŸs +] = + `¬¿y +('*'); + +1858 +$·»Á + = +$´evP©h +; + +1861 +$bË + = +$this +-> +_qu”yCompڒts +[ +$compڒtAlŸs +]['table']; + +1863  +$this +-> + `buždIndexBy +( +$compڒtAlŸs +, +$m­W™h +); + +1864 + } +} + +1866 +´Ùeùed + +funùiÚ + + $buždSim¶eR–©iÚSql +( +Doùrše_R–©iÚ + +$»ÏtiÚ +, +$fÜeignAlŸs +, +$loÿlAlŸs +, +$ov”rideJoš +, +$još +) + +1868 +$qu”yP¬t + = +$još + . +$this +-> +_cÚn +-> + `quÙeId’tif›r +( +$»ÏtiÚ +-> + `g‘TabË +()-> + `g‘TabËName +()) + +1870 . +$this +-> +_cÚn +-> + `quÙeId’tif›r +( +$fÜeignAlŸs +); + +1872 iàÐ! +$ov”rideJoš +) { + +1873 +$qu”yP¬t + .= ' ON ' + +1874 . +$this +-> +_cÚn +-> + `quÙeId’tif›r +( +$loÿlAlŸs + . '.' . +$»ÏtiÚ +-> + `g‘LoÿlCÞumnName +()) + +1876 . +$this +-> +_cÚn +-> + `quÙeId’tif›r +( +$fÜeignAlŸs + . '.' . +$»ÏtiÚ +-> + `g‘FÜeignCÞumnName +()); + +1879  +$qu”yP¬t +; + +1880 + } +} + +1882 +´Ùeùed + +funùiÚ + + $buždIndexBy +( +$compڒtAlŸs +, +$m­W™h + = +nuÎ +) + +1884 +$bË + = +$this +-> +_qu”yCompڒts +[ +$compڒtAlŸs +]['table']; + +1886 +$šdexBy + = +nuÎ +; + +1887 +$cÞumn + = +çl£ +; + +1889 ià( + `is£t +( +$m­W™h +)) { + +1890 +$‹rms + = + `ex¶ode +('.', +$m­W™h +); + +1892 ià( + `couÁ +( +$‹rms +) == 1) { + +1893 +$šdexBy + = +$‹rms +[0]; + +1894 } ià( + `couÁ +( +$‹rms +) == 2) { + +1895 +$cÞumn + = +Œue +; + +1896 +$šdexBy + = +$‹rms +[1]; + +1898 } ià( +$bË +-> + `g‘BoundQu”yP¬t +('šdexBy'è!=ð +nuÎ +) { + +1899 +$šdexBy + = +$bË +-> + `g‘BoundQu”yP¬t +('indexBy'); + +1902 ià( +$šdexBy + !=ð +nuÎ +) { + +1903 iàÐ +$cÞumn + && ! +$bË +-> + `hasCÞumn +($bË-> + `g‘CÞumnName +( +$šdexBy +))) { + +1904 +throw + +Ãw + + `Doùrše_Qu”y_Exû±iÚ +("Couldn'ˆu£ key m­pšg. CÞumÀ" . +$šdexBy + . " does‚otƒxist."); + +1907 +$this +-> +_qu”yCompڒts +[ +$compڒtAlŸs +]['m­'] = +$šdexBy +; + +1910  +$this +-> +_qu”yCompڒts +[ +$compڒtAlŸs +]; + +1911 + } +} + +1914 +´Ùeùed + +funùiÚ + + $buždAssocŸtiveR–©iÚSql +( +Doùrše_R–©iÚ + +$»ÏtiÚ +, +$assocAlŸs +, +$fÜeignAlŸs +, +$loÿlAlŸs +) + +1916 +$bË + = +$»ÏtiÚ +-> + `g‘TabË +(); + +1918 +$qu”yP¬t + = ' ON '; + +1920 ià( +$»ÏtiÚ +-> + `isEqu® +()) { + +1921 +$qu”yP¬t + .= '('; + +1924 +$loÿlId’tif›r + = +$bË +-> + `g‘CÞumnName +($bË-> + `g‘Id’tif›r +()); + +1926 +$qu”yP¬t + .ð +$this +-> +_cÚn +-> + `quÙeId’tif›r +( +$fÜeignAlŸs + . '.' . +$loÿlId’tif›r +) + +1928 . +$this +-> +_cÚn +-> + `quÙeId’tif›r +( +$assocAlŸs + . '.' . +$»ÏtiÚ +-> + `g‘FÜeignRefCÞumnName +()); + +1930 ià( +$»ÏtiÚ +-> + `isEqu® +()) { + +1931 +$qu”yP¬t + .= ' OR ' + +1932 . +$this +-> +_cÚn +-> + `quÙeId’tif›r +( +$fÜeignAlŸs + . '.' . +$loÿlId’tif›r +) + +1934 . +$this +-> +_cÚn +-> + `quÙeId’tif›r +( +$assocAlŸs + . '.' . +$»ÏtiÚ +-> + `g‘LoÿlRefCÞumnName +()) + +1936 . +$this +-> +_cÚn +-> + `quÙeId’tif›r +( +$fÜeignAlŸs + . '.' . +$loÿlId’tif›r +) + +1938 . +$this +-> +_cÚn +-> + `quÙeId’tif›r +( +$loÿlAlŸs + . '.' . +$loÿlId’tif›r +); + +1941  +$qu”yP¬t +; + +1942 + } +} + +1953 +public + +funùiÚ + + $lßdRoÙ +( +$Çme +, +$compڒtAlŸs +) + +1956 +$mªag” + = +Doùrše_Mªag” +:: + `g‘In¡ªû +(); + +1957 iàÐ! +$this +-> +_·s£dCÚn + && +$mªag” +-> + `hasCÚÃùiÚFÜCompڒt +( +$Çme +)) { + +1958 +$this +-> +_cÚn + = +$mªag” +-> + `g‘CÚÃùiÚFÜCompڒt +( +$Çme +); + +1961 +$bË + = +$this +-> +_cÚn +-> + `g‘TabË +( +$Çme +); + +1962 +$bËName + = +$bË +-> + `g‘TabËName +(); + +1965 +$bËAlŸs + = +$this +-> + `g‘SqlTabËAlŸs +( +$compڒtAlŸs +, +$bËName +); + +1967 +$qu”yP¬t + = +$this +-> +_cÚn +-> + `quÙeId’tif›r +( +$bËName +); + +1969 ià( +$this +-> +_ty³ + ==ð +£lf +:: +SELECT +) { + +1970 +$qu”yP¬t + .ð' ' . +$this +-> +_cÚn +-> + `quÙeId’tif›r +( +$bËAlŸs +); + +1973 +$this +-> +_bËAlŸsM­ +[ +$bËAlŸs +] = +$compڒtAlŸs +; + +1975 +$qu”yP¬t + .ð +$this +-> + `buždInh”™ªûJošSql +( +$Çme +, +$compڒtAlŸs +); + +1977 +$this +-> +_sqlP¬ts +['äom'][] = +$qu”yP¬t +; + +1979 +$this +-> +_qu”yCompڒts +[ +$compڒtAlŸs +] = + `¬¿y +('bË' => +$bË +, 'm­' => +nuÎ +); + +1981  +$bË +; + +1982 + } +} + +1990 +public + +funùiÚ + + $buždInh”™ªûJošSql +( +$Çme +, +$compڒtAlŸs +) + +1993 +$mªag” + = +Doùrše_Mªag” +:: + `g‘In¡ªû +(); + +1994 iàÐ! +$this +-> +_·s£dCÚn + && +$mªag” +-> + `hasCÚÃùiÚFÜCompڒt +( +$Çme +)) { + +1995 +$this +-> +_cÚn + = +$mªag” +-> + `g‘CÚÃùiÚFÜCompڒt +( +$Çme +); + +1998 +$bË + = +$this +-> +_cÚn +-> + `g‘TabË +( +$Çme +); + +1999 +$bËName + = +$bË +-> + `g‘TabËName +(); + +2002 +$bËAlŸs + = +$this +-> + `g‘SqlTabËAlŸs +( +$compڒtAlŸs +, +$bËName +); + +2004 +$qu”yP¬t + = ''; + +2006 + `fܗch + ( +$bË +-> + `g‘O±iÚ +('jošedP¬’ts'è +as + +$·»Á +) { + +2007 +$·»ÁTabË + = +$this +-> +_cÚn +-> + `g‘TabË +( +$·»Á +); + +2009 +$·»ÁAlŸs + = +$compڒtAlŸs + . '.' . +$·»Á +; + +2012 +$·»ÁTabËAlŸs + = +$this +-> + `g‘SqlTabËAlŸs +( +$·»ÁAlŸs +, +$·»ÁTabË +-> + `g‘TabËName +()); + +2014 +$qu”yP¬t + .ð' LEFT JOIN ' . +$this +-> +_cÚn +-> + `quÙeId’tif›r +( +$·»ÁTabË +-> + `g‘TabËName +()) + +2015 . ' ' . +$this +-> +_cÚn +-> + `quÙeId’tif›r +( +$·»ÁTabËAlŸs +) . ' ON '; + +2018 + `fܗch + (( +¬¿y +è +$bË +-> + `g‘Id’tif›r +(è +as + +$id’tif›r +) { + +2019 +$cÞumn + = +$bË +-> + `g‘CÞumnName +( +$id’tif›r +); + +2021 +$qu”yP¬t + .ð +$this +-> +_cÚn +-> + `quÙeId’tif›r +( +$bËAlŸs +) + +2022 . '.' . +$this +-> +_cÚn +-> + `quÙeId’tif›r +( +$cÞumn +) + +2023 . ' = ' . +$this +-> +_cÚn +-> + `quÙeId’tif›r +( +$·»ÁTabËAlŸs +) + +2024 . '.' . +$this +-> +_cÚn +-> + `quÙeId’tif›r +( +$cÞumn +); + +2028  +$qu”yP¬t +; + +2029 + } +} + +2039 +public + +funùiÚ + + $g‘CouÁSqlQu”y +() + +2042 +$this +-> + `g‘SqlQu”y +( + `¬¿y +(), +çl£ +); + +2045 +$wh”e + = +$this +-> +_sqlP¬ts +['where']; + +2046 +$havšg + = +$this +-> +_sqlP¬ts +['having']; + +2047 +$groupby + = +$this +-> +_sqlP¬ts +['groupby']; + +2049 +$roÙAlŸs + = +$this +-> + `g‘RoÙAlŸs +(); + +2050 +$bËAlŸs + = +$this +-> + `g‘SqlTabËAlŸs +( +$roÙAlŸs +); + +2053 +$q + = 'SELECT COUNT(*èAS ' . +$this +-> +_cÚn +-> + `quÙeId’tif›r +('num_results') . ' FROM '; + +2056 +$äom + = +$this +-> + `_buždSqlFromP¬t +( +Œue +); + +2059 +$wh”e + = ( ! + `em±y +($wh”e)è? ' WHERE ' . + `im¶ode +(' ', $where) : ''; + +2062 +$groupby + = ( ! + `em±y +($groupby)è? ' GROUP BY ' . + `im¶ode +(', ', $groupby) : ''; + +2065 +$havšg + = ( ! + `em±y +($havšg)è? ' HAVING ' . + `im¶ode +(' AND ', $having) : ''; + +2068 ià( + `couÁ +( +$this +-> +_qu”yCompڒts +è=ð1 && + `em±y +( +$havšg +)) { + +2069 +$q + .ð +$äom + . +$wh”e + . +$groupby + . +$havšg +; + +2072 +$ + = +$this +-> +_cÚn +-> + `quÙeId’tif›r +( +$bËAlŸs +); + +2074 +$m­ + = +$this +-> + `g‘RoÙDeþ¬©iÚ +(); + +2075 +$idCÞumnNames + = +$m­ +['bË']-> + `g‘Id’tif›rCÞumnNames +(); + +2077 +$pkF›lds + = +$ + . '.' . + `im¶ode +(', ' . $ . '.', +$this +-> +_cÚn +-> + `quÙeMuɝËId’tif›r +( +$idCÞumnNames +)); + +2080 +$£ËùF›lds + = +$pkF›lds +; + +2082 iàÐ! + `em±y +( +$havšg +)) { + +2084 + `fܗch + ( +$this +-> +_sqlP¬ts +['£Ëù'] +as + +$f›ld +) { + +2087 ià( + `¡½os +( +$f›ld +, '('è!=ð +çl£ +) { + +2088 +$£ËùF›lds + .ð', ' . +$f›ld +; + +2092 + `´eg_m©ch_®l +('/`[a-z0-9_]+`\.`[a-z0-9_]+`/i', +$havšg +, +$m©ches +, +PREG_PATTERN_ORDER +); + +2093 ià( + `couÁ +( +$m©ches +[0]) > 0) { + +2094 +$£ËùF›lds + .ð', ' . + `im¶ode +(', ', + `¬¿y_unique +( +$m©ches +[0])); + +2099 ià( + `em±y +( +$groupby +)) { + +2100 +$groupby + = ' GROUP BY ' . +$pkF›lds +; + +2103 +$q + .ð'(SELECT ' . +$£ËùF›lds + . ' FROM ' . +$äom + . +$wh”e + . +$groupby + . +$havšg + . ') ' + +2104 . +$this +-> +_cÚn +-> + `quÙeId’tif›r +('dctrn_count_query'); + +2107  +$q +; + +2108 + } +} + +2130 +public + +funùiÚ + +couÁ +( +$·¿ms + = + $¬¿y +()) + +2132 +$q + = +$this +-> + `g‘CouÁSqlQu”y +(); + +2133 +$·¿ms + = +$this +-> + `g‘CouÁQu”yP¬ams +($params); + +2134 +$·¿ms + = +$this +-> +_cÚn +-> + `cÚv”tBoޗns +($params); + +2136 ià( +$this +-> +_»suÉCache +) { + +2137 +$cÚn + = +$this +-> + `g‘CÚÃùiÚ +(); + +2138 +$ÿcheDriv” + = +$this +-> + `g‘ResuÉCacheDriv” +(); + +2139 +$hash + = +$this +-> + `g‘ResuÉCacheHash +( +$·¿ms +).'_count'; + +2140 +$ÿched + = ( +$this +-> +_expœeResuÉCache +è? +çl£ + : +$ÿcheDriv” +-> + `ãtch +( +$hash +); + +2142 ià( +$ÿched + ==ð +çl£ +) { + +2144 +$»suÉs + = +$this +-> + `g‘CÚÃùiÚ +()-> + `ãtchAÎ +( +$q +, +$·¿ms +); + +2145 +$ÿcheDriv” +-> + `§ve +( +$hash +, + `£rŸlize +( +$»suÉs +), +$this +-> + `g‘ResuÉCacheLiãS·n +()); + +2147 +$»suÉs + = + `un£rŸlize +( +$ÿched +); + +2150 +$»suÉs + = +$this +-> + `g‘CÚÃùiÚ +()-> + `ãtchAÎ +( +$q +, +$·¿ms +); + +2153 ià( + `couÁ +( +$»suÉs +) > 1) { + +2154 +$couÁ + = + `couÁ +( +$»suÉs +); + +2156 ià( + `is£t +( +$»suÉs +[0])) { + +2157 +$»suÉs +[0] = + `¬¿y_chªge_key_ÿ£ +($»suÉs[0], +CASE_LOWER +); + +2158 +$couÁ + = +$»suÉs +[0]['num_results']; + +2160 +$couÁ + = 0; + +2164  (è +$couÁ +; + +2165 + } +} + +2178 +public + +funùiÚ + +qu”y +( +$qu”y +, +$·¿ms + = +¬¿y +(), +$hyd¿tiÚMode + = +nuÎ +) + +2180 +$this +-> +·r£DqlQu”y +( +$qu”y +); + +2181  + g$this +-> +execu‹ +( +$·¿ms +, +$hyd¿tiÚMode +); + +2189 +public + +funùiÚ + + $cÝy +( +Doùrše_Qu”y + +$qu”y + = +nuÎ +) + +2191 iàÐ! +$qu”y +) { + +2192 +$qu”y + = +$this +; + +2195 +$Ãw + = +þÚe + +$qu”y +; + +2197  +$Ãw +; + +2198 + } +} + +2205 +public + +funùiÚ + + $__þÚe +() + +2207 +$this +-> +_·r£rs + = + `¬¿y +(); + +2208 +$this +-> +_hyd¿tÜ + = +þÚe + $this->_hydrator; + +2213 ià( +$this +-> + `isSubqu”y +()) { + +2214 +$this +-> + `_kžlReã»nû +('_params'); + +2215 +$this +-> + `_kžlReã»nû +('_tableAliasMap'); + +2216 +$this +-> + `_kžlReã»nû +('_queryComponents'); + +2218 + } +} + +2227 +´Ùeùed + +funùiÚ + + $_kžlReã»nû +( +$key +) + +2229 +$tmp + = +$this +-> +$key +; + +2230 + `un£t +( +$this +-> +$key +); + +2231 +$this +-> +$key + = +$tmp +; + +2232 + } +} + +2243 +public + +funùiÚ + + $ä“ +() + +2245 +$this +-> + `»£t +(); + +2246 +$this +-> +_·r£rs + = + `¬¿y +(); + +2247 +$this +-> +_dqlP¬ts + = + `¬¿y +(); + +2248 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/Abstract.php + +1 ‡rray(), + +106 'još' => +¬¿y +(), + +107 'wh”e' => +¬¿y +(), + +108 '£t' => +¬¿y +(), + +109 'havšg' => +¬¿y +()); + +114 +´Ùeùed + + m$_execP¬ams + = +¬¿y +(); + +120 +´Ùeùed + + m$_»suÉCache +; + +125 +´Ùeùed + + m$_»suÉCacheHash +; + +131 +´Ùeùed + + m$_expœeResuÉCache + = +çl£ +; + +132 +´Ùeùed + + m$_»suÉCacheTTL +; + +137 +´Ùeùed + + m$_qu”yCache +; + +138 +´Ùeùed + + m$_expœeQu”yCache + = +çl£ +; + +139 +´Ùeùed + + m$_qu”yCacheTTL +; + +145 +´Ùeùed + + m$_cÚn +; + +150 +´Ùeùed + + m$_·s£dCÚn + = +çl£ +; + +155 +´Ùeùed + + m$_sqlP¬ts + = +¬¿y +( + +156 '£Ëù' => +¬¿y +(), + +157 'di¡šù' => +çl£ +, + +158 'fÜUpd©e' => +çl£ +, + +159 'äom' => +¬¿y +(), + +160 '£t' => +¬¿y +(), + +161 'još' => +¬¿y +(), + +162 'wh”e' => +¬¿y +(), + +163 'groupby' => +¬¿y +(), + +164 'havšg' => +¬¿y +(), + +165 'Üd”by' => +¬¿y +(), + +166 'lim™' => +çl£ +, + +167 'off£t' => +çl£ +, + +173 +´Ùeùed + + m$_dqlP¬ts + = +¬¿y +( + +174 'äom' => +¬¿y +(), + +175 '£Ëù' => +¬¿y +(), + +176 'fÜUpd©e' => +çl£ +, + +177 '£t' => +¬¿y +(), + +178 'još' => +¬¿y +(), + +179 'wh”e' => +¬¿y +(), + +180 'groupby' => +¬¿y +(), + +181 'havšg' => +¬¿y +(), + +182 'Üd”by' => +¬¿y +(), + +183 'lim™' => +¬¿y +(), + +184 'off£t' => +¬¿y +(), + +206 +´Ùeùed + + m$_qu”yCompڒts + = +¬¿y +(); + +213 +´Ùeùed + + m$_roÙAlŸs + = ''; + +220 +´Ùeùed + + m$_ty³ + = +£lf +:: +SELECT +; + +225 +´Ùeùed + + m$_hyd¿tÜ +; + +230 +´Ùeùed + + m$_tok’iz” +; + +235 +´Ùeùed + + m$_·r£r +; + +242 +´Ùeùed + + m$_bËAlŸsS“ds + = +¬¿y +(); + +247 +´Ùeùed + + m$_ÝtiÚs + = +¬¿y +( + +248 'hyd¿tiÚMode' => +Doùrše_CÜe +:: +HYDRATE_RECORD + + +254 +´Ùeùed + + m$_isLim™Subqu”yU£d + = +çl£ +; + +259 +´Ùeùed + + m$_compڒts +; + +264 +´Ùeùed + + m$_´eQu”›d + = +çl£ +; + +271 +´Ùeùed + + m$di§bËLim™Subqu”y + = +çl£ +; + +279 +public + +funùiÚ + + $__cÚ¡ruù +( +Doùrše_CÚÃùiÚ + +$cÚÃùiÚ + = +nuÎ +, + +280 +Doùrše_Hyd¿tÜ_Ab¡¿ù + +$hyd¿tÜ + = +nuÎ +) + +282 ià( +$cÚÃùiÚ + ==ð +nuÎ +) { + +283 +$cÚÃùiÚ + = +Doùrše_Mªag” +:: + `g‘In¡ªû +()-> + `g‘Cu¼’tCÚÃùiÚ +(); + +285 +$this +-> +_·s£dCÚn + = +Œue +; + +287 ià( +$hyd¿tÜ + ==ð +nuÎ +) { + +288 +$hyd¿tÜ + = +Ãw + + `Doùrše_Hyd¿tÜ +(); + +290 +$this +-> +_cÚn + = +$cÚÃùiÚ +; + +291 +$this +-> +_hyd¿tÜ + = +$hyd¿tÜ +; + +292 +$this +-> +_tok’iz” + = +Ãw + + `Doùrše_Qu”y_Tok’iz” +(); + +293 +$this +-> +_»suÉCacheTTL + = $this-> +_cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_RESULT_CACHE_LIFESPAN +); + +294 +$this +-> +_qu”yCacheTTL + = $this-> +_cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_QUERY_CACHE_LIFESPAN +); + +303 +public + +funùiÚ + + $£tCÚÃùiÚ +( +Doùrše_CÚÃùiÚ + +$cÚÃùiÚ +) + +305 +$this +-> +_·s£dCÚn + = +Œue +; + +306 +$this +-> +_cÚn + = +$cÚÃùiÚ +; + +307 + } +} + +316 +public + +funùiÚ + + $£tO±iÚ +( +$Çme +, +$v®ue +) + +318 iàÐ! + `is£t +( +$this +-> +_ÝtiÚs +[ +$Çme +])) { + +319 +throw + +Ãw + + `Doùrše_Qu”y_Exû±iÚ +('UnknowÀÝtiÚ ' . +$Çme +); + +321 +$this +-> +_ÝtiÚs +[ +$Çme +] = +$v®ue +; + +322 + } +} + +331 +public + +funùiÚ + + $hasSqlTabËAlŸs +( +$sqlTabËAlŸs +) + +333  ( + `is£t +( +$this +-> +_bËAlŸsM­ +[ +$sqlTabËAlŸs +])); + +334 + } +} + +342 +public + +funùiÚ + + $g‘TabËAlŸsM­ +() + +344  +$this +-> +_bËAlŸsM­ +; + +345 + } +} + +355 +public + +funùiÚ + + $g‘Dql +() + +357 +$q + = ''; + +358 ià( +$this +-> +_ty³ + =ð +£lf +:: +SELECT +) { + +359 +$q + .ðÐ! + `em±y +( +$this +-> +_dqlP¬ts +['£Ëù'])è? 'SELECT ' . + `im¶ode +(', ', $this->_dqlParts['select']) : ''; + +360 +$q + .ðÐ! + `em±y +( +$this +-> +_dqlP¬ts +['äom'])è? ' FROM ' . + `im¶ode +(' ', $this->_dqlParts['from']) : ''; + +361 } ià( +$this +-> +_ty³ + =ð +£lf +:: +DELETE +) { + +362 +$q + .= 'DELETE'; + +363 +$q + .ðÐ! + `em±y +( +$this +-> +_dqlP¬ts +['äom'])è? ' FROM ' . + `im¶ode +(' ', $this->_dqlParts['from']) : ''; + +364 } ià( +$this +-> +_ty³ + =ð +£lf +:: +UPDATE +) { + +365 +$q + .= 'UPDATE '; + +366 +$q + .ðÐ! + `em±y +( +$this +-> +_dqlP¬ts +['äom'])è? + `im¶ode +(' ', $this->_dqlParts['from']) : ''; + +367 +$q + .ðÐ! + `em±y +( +$this +-> +_dqlP¬ts +['£t'])è? ' SET ' . + `im¶ode +(' ', $this->_dqlParts['set']) : ''; + +369 +$q + .ðÐ! + `em±y +( +$this +-> +_dqlP¬ts +['wh”e'])è? ' WHERE ' . + `im¶ode +(' ', $this->_dqlParts['where']) : ''; + +370 +$q + .ðÐ! + `em±y +( +$this +-> +_dqlP¬ts +['groupby'])è? ' GROUP BY ' . + `im¶ode +(', ', $this->_dqlParts['groupby']) : ''; + +371 +$q + .ðÐ! + `em±y +( +$this +-> +_dqlP¬ts +['havšg'])è? ' HAVING ' . + `im¶ode +(' AND ', $this->_dqlParts['having']) : ''; + +372 +$q + .ðÐ! + `em±y +( +$this +-> +_dqlP¬ts +['Üd”by'])è? ' ORDER BY ' . + `im¶ode +(', ', $this->_dqlParts['orderby']) : ''; + +373 +$q + .ðÐ! + `em±y +( +$this +-> +_dqlP¬ts +['lim™'])è? ' LIMIT ' . + `im¶ode +(' ', $this->_dqlParts['limit']) : ''; + +374 +$q + .ðÐ! + `em±y +( +$this +-> +_dqlP¬ts +['off£t'])è? ' OFFSET ' . + `im¶ode +(' ', $this->_dqlParts['offset']) : ''; + +376  +$q +; + +377 + } +} + +388 +public + +funùiÚ + + $g‘SqlQu”yP¬t +( +$·¹ +) + +390 iàÐ! + `is£t +( +$this +-> +_sqlP¬ts +[ +$·¹ +])) { + +391 +throw + +Ãw + + `Doùrše_Qu”y_Exû±iÚ +('UnknowÀSQL qu”y…¬ˆ' . +$·¹ +); + +393  +$this +-> +_sqlP¬ts +[ +$·¹ +]; + +394 + } +} + +405 +public + +funùiÚ + + $£tSqlQu”yP¬t +( +$Çme +, +$·¹ +) + +407 iàÐ! + `is£t +( +$this +-> +_sqlP¬ts +[ +$Çme +])) { + +408 +throw + +Ãw + + `Doùrše_Qu”y_Exû±iÚ +('UnknowÀqu”y…¬ˆ' . +$Çme +); + +411 ià( +$Çme + !== 'limit' && $name !== 'offset') { + +412 ià( + `is_¬¿y +( +$·¹ +)) { + +413 +$this +-> +_sqlP¬ts +[ +$Çme +] = +$·¹ +; + +415 +$this +-> +_sqlP¬ts +[ +$Çme +] = + `¬¿y +( +$·¹ +); + +418 +$this +-> +_sqlP¬ts +[ +$Çme +] = +$·¹ +; + +421  +$this +; + +422 + } +} + +433 +public + +funùiÚ + + $addSqlQu”yP¬t +( +$Çme +, +$·¹ +) + +435 iàÐ! + `is£t +( +$this +-> +_sqlP¬ts +[ +$Çme +])) { + +436 +throw + +Ãw + + `Doùrše_Qu”y_Exû±iÚ +('UnknowÀqu”y…¬ˆ' . +$Çme +); + +438 ià( + `is_¬¿y +( +$·¹ +)) { + +439 +$this +-> +_sqlP¬ts +[ +$Çme +] = + `¬¿y_m”ge +($this->_sqlP¬ts[$Çme], +$·¹ +); + +441 +$this +-> +_sqlP¬ts +[ +$Çme +][] = +$·¹ +; + +443  +$this +; + +444 + } +} + +454 +public + +funùiÚ + + $»moveSqlQu”yP¬t +( +$Çme +) + +456 iàÐ! + `is£t +( +$this +-> +_sqlP¬ts +[ +$Çme +])) { + +457 +throw + +Ãw + + `Doùrše_Qu”y_Exû±iÚ +('UnknowÀqu”y…¬ˆ' . +$Çme +); + +460 ià( +$Çme + == 'limit' || $name == 'offset' || $name == 'forUpdate') { + +461 +$this +-> +_sqlP¬ts +[ +$Çme +] = +çl£ +; + +463 +$this +-> +_sqlP¬ts +[ +$Çme +] = + `¬¿y +(); + +466  +$this +; + +467 + } +} + +477 +public + +funùiÚ + + $»moveDqlQu”yP¬t +( +$Çme +) + +479 iàÐ! + `is£t +( +$this +-> +_dqlP¬ts +[ +$Çme +])) { + +480 +throw + +Ãw + + `Doùrše_Qu”y_Exû±iÚ +('UnknowÀqu”y…¬ˆ' . +$Çme +); + +483 ià( +$Çme + == 'limit' || $name == 'offset') { + +484 +$this +-> +_dqlP¬ts +[ +$Çme +] = +çl£ +; + +486 +$this +-> +_dqlP¬ts +[ +$Çme +] = + `¬¿y +(); + +489  +$this +; + +490 + } +} + +497 +public + +funùiÚ + + $g‘P¬ams +() + +499  +$this +-> +_·¿ms +; + +500 + } +} + +509 +public + +funùiÚ + +g‘Fω’edP¬ams +( +$·¿ms + = + $¬¿y +()) + +511  + `¬¿y_m”ge +( + +512 ( +¬¿y +è +$·¿ms +, (¬¿yè +$this +-> +_·¿ms +['exec'], + +513 +$this +-> +_·¿ms +['join'], $this->_params['set'], + +514 +$this +-> +_·¿ms +['where'], $this->_params['having'] + +516 + } +} + +523 +public + +funùiÚ + +g‘IÁ”ÇlP¬ams +( +$·¿ms + = + $¬¿y +()) + +525  + `¬¿y_m”ge +( +$·¿ms +, +$this +-> +_execP¬ams +); + +526 + } +} + +533 +public + +funùiÚ + +£tP¬ams +( +¬¿y + +$·¿ms + = + $¬¿y +()) + +535 +$this +-> +_·¿ms + = +$·¿ms +; + +536 + } +} + +544 +public + +funùiÚ + +g‘CouÁQu”yP¬ams +( +$·¿ms + = + $¬¿y +()) + +546 iàÐ! + `is_¬¿y +( +$·¿ms +)) { + +547 +$·¿ms + = + `¬¿y +($params); + +550 +$this +-> +_·¿ms +['exec'] = +$·¿ms +; + +552 +$·¿ms + = + `¬¿y_m”ge +( +$this +-> +_·¿ms +['join'], $this->_params['where'], $this->_params['having'], $this->_params['exec']); + +554 +$this +-> + `fixA¼ayP¬am‘”V®ues +( +$·¿ms +); + +556  +$this +-> +_execP¬ams +; + +557 + } +} + +562 +public + +funùiÚ + +fixA¼ayP¬am‘”V®ues +( +$·¿ms + = + $¬¿y +()) + +564 +$i + = 0; + +566 + `fܗch + ( +$·¿ms + +as + +$·¿m +) { + +567 ià( + `is_¬¿y +( +$·¿m +)) { + +568 +$c + = + `couÁ +( +$·¿m +); + +570 + `¬¿y_¥liû +( +$·¿ms +, +$i +, 1, +$·¿m +); + +572 +$i + +ð +$c +; + +574 +$i +++; + +578 +$this +-> +_execP¬ams + = +$·¿ms +; + +579 + } +} + +589 +public + +funùiÚ + + $£tV›w +( +Doùrše_V›w + +$v›w +) + +591 +$this +-> +_v›w + = +$v›w +; + +592 + } +} + +600 +public + +funùiÚ + + $g‘V›w +() + +602  +$this +-> +_v›w +; + +603 + } +} + +610 +public + +funùiÚ + + $isLim™Subqu”yU£d +() + +612  +$this +-> +_isLim™Subqu”yU£d +; + +613 + } +} + +625 +public + +funùiÚ + + $g‘Inh”™ªûCÚd™iÚ +( +$compڒtAlŸs +) + +627 +$m­ + = +$this +-> +_qu”yCompڒts +[ +$compڒtAlŸs +]['bË']-> +šh”™ªûM­ +; + +630 ià( + `em±y +( +$m­ +)) { + +634 +$bËAlŸs + = +$this +-> + `g‘SqlTabËAlŸs +( +$compڒtAlŸs +); + +636 ià( +$this +-> +_ty³ + !=ð +Doùrše_Qu”y +:: +SELECT +) { + +637 +$bËAlŸs + = ''; + +639 +$bËAlŸs + .= '.'; + +644 +$»tV® + = ""; + +645 +$couÁ + = 0; + +647 + `fܗch + ( +$m­ + +as + +$f›ld + => +$v®ue +) { + +648 ià( +$couÁ +++ > 0) { + +649 +$»tV® + .= ' AND '; + +652 +$id’tif›r + = +$this +-> +_cÚn +-> + `quÙeId’tif›r +( +$bËAlŸs + . +$f›ld +); + +653 +$»tV® + .ð +$id’tif›r + . ' = ' . +$this +-> +_cÚn +-> + `quÙe +( +$v®ue +); + +656  +$»tV® +; + +657 + } +} + +671 +public + +funùiÚ + + $g‘SqlTabËAlŸs +( +$compڒtAlŸs +, +$bËName + = +nuÎ +) + +673 +$®Ÿs + = + `¬¿y_£¬ch +( +$compڒtAlŸs +, +$this +-> +_bËAlŸsM­ +); + +675 ià( +$®Ÿs + !=ð +çl£ +) { + +676  +$®Ÿs +; + +679 ià( +$bËName + ==ð +nuÎ +) { + +680 +throw + +Ãw + + `Doùrše_Qu”y_Exû±iÚ +("Couldn'ˆg‘ sh܈®Ÿ fÜ " . +$compڒtAlŸs +); + +683  +$this +-> + `g’”©eSqlTabËAlŸs +( +$compڒtAlŸs +, +$bËName +); + +684 + } +} + +693 +public + +funùiÚ + + $g’”©eNewSqlTabËAlŸs +( +$ÞdAlŸs +) + +695 ià( + `is£t +( +$this +-> +_bËAlŸsM­ +[ +$ÞdAlŸs +])) { + +697 +$Çme + = + `sub¡r +( +$ÞdAlŸs +, 0, 1); + +698 +$i + = ((è + `sub¡r +( +$ÞdAlŸs +, 1)); + +701 iàÐ! + `is£t +( +$this +-> +_bËAlŸsS“ds +[ +$Çme +])) { + +702 +$this +-> +_bËAlŸsS“ds +[ +$Çme +] = 1; + +705 +$ÃwIndex + = ( +$this +-> +_bËAlŸsS“ds +[ +$Çme +] + (( +$i + == 0) ? 1 : $i)); + +707  +$Çme + . +$ÃwIndex +; + +710  +$ÞdAlŸs +; + +711 + } +} + +720 +public + +funùiÚ + + $g‘SqlTabËAlŸsS“d +( +$sqlTabËAlŸs +) + +722 iàÐ! + `is£t +( +$this +-> +_bËAlŸsS“ds +[ +$sqlTabËAlŸs +])) { + +725  +$this +-> +_bËAlŸsS“ds +[ +$sqlTabËAlŸs +]; + +726 + } +} + +735 +public + +funùiÚ + + $hasAlŸsDeþ¬©iÚ +( +$compڒtAlŸs +) + +737  + `is£t +( +$this +-> +_qu”yCompڒts +[ +$compڒtAlŸs +]); + +738 + } +} + +747 +public + +funùiÚ + + $g‘Qu”yCompڒt +( +$compڒtAlŸs +) + +749 iàÐ! + `is£t +( +$this +-> +_qu”yCompڒts +[ +$compڒtAlŸs +])) { + +750 +throw + +Ãw + + `Doùrše_Qu”y_Exû±iÚ +('UnknowÀcompڒˆ®Ÿ ' . +$compڒtAlŸs +); + +753  +$this +-> +_qu”yCompڒts +[ +$compڒtAlŸs +]; + +754 + } +} + +767 +public + +funùiÚ + + $cÝySubqu”yInfo +( +Doùrše_Qu”y_Ab¡¿ù + +$qu”y +) + +769 +$this +-> +_·¿ms + =& +$qu”y +->_params; + +770 +$this +-> +_bËAlŸsM­ + =& +$qu”y +->_tableAliasMap; + +771 +$this +-> +_qu”yCompڒts + =& +$qu”y +->_queryComponents; + +772 +$this +-> +_bËAlŸsS“ds + = +$qu”y +->_tableAliasSeeds; + +773  +$this +; + +774 + } +} + +782 +public + +funùiÚ + + $g‘RoÙAlŸs +() + +784 iàÐ! +$this +-> +_qu”yCompڒts +) { + +785 +$this +-> + `g‘SqlQu”y +( + `¬¿y +(), +çl£ +); + +788  +$this +-> +_roÙAlŸs +; + +789 + } +} + +797 +public + +funùiÚ + + $g‘RoÙDeþ¬©iÚ +() + +799 +$m­ + = +$this +-> +_qu”yCompڒts +[$this-> +_roÙAlŸs +]; + +800  +$m­ +; + +801 + } +} + +809 +public + +funùiÚ + + $g‘RoÙ +() + +811 +$m­ + = +$this +-> +_qu”yCompڒts +[$this-> +_roÙAlŸs +]; + +813 iàÐ! + `is£t +( +$m­ +['table'])) { + +814 +throw + +Ãw + + `Doùrše_Qu”y_Exû±iÚ +('Root component‚ot initialized.'); + +817  +$m­ +['table']; + +818 + } +} + +829 +public + +funùiÚ + + $g’”©eSqlTabËAlŸs +( +$compڒtAlŸs +, +$bËName +) + +831 + `´eg_m©ch +('/([^_|\d])/', +$bËName +, +$m©ches +); + +832 +$ch¬ + = + `¡¹Þow” +( +$m©ches +[0]); + +834 +$®Ÿs + = +$ch¬ +; + +836 iàÐ! + `is£t +( +$this +-> +_bËAlŸsS“ds +[ +$®Ÿs +])) { + +837 +$this +-> +_bËAlŸsS“ds +[ +$®Ÿs +] = 1; + +840  + `is£t +( +$this +-> +_bËAlŸsM­ +[ +$®Ÿs +])) { + +841 iàÐ! + `is£t +( +$this +-> +_bËAlŸsS“ds +[ +$®Ÿs +])) { + +842 +$this +-> +_bËAlŸsS“ds +[ +$®Ÿs +] = 1; + +844 +$®Ÿs + = +$ch¬ + . ++ +$this +-> +_bËAlŸsS“ds +[$alias]; + +847 +$this +-> +_bËAlŸsM­ +[ +$®Ÿs +] = +$compڒtAlŸs +; + +849  +$®Ÿs +; + +850 + } +} + +859 +public + +funùiÚ + + $g‘CompڒtAlŸs +( +$sqlTabËAlŸs +) + +861 +$sqlTabËAlŸs + = + `Œim +($sqlTableAlias, '[]`"'); + +862 iàÐ! + `is£t +( +$this +-> +_bËAlŸsM­ +[ +$sqlTabËAlŸs +])) { + +863 +throw + +Ãw + + `Doùrše_Qu”y_Exû±iÚ +('UnknowÀbˇlŸ ' . +$sqlTabËAlŸs +); + +865  +$this +-> +_bËAlŸsM­ +[ +$sqlTabËAlŸs +]; + +866 + } +} + +874 +public + +funùiÚ + + $ÿlcuϋQu”yCacheHash +() + +876 +$dql + = +$this +-> + `g‘Dql +(); + +877 +$hash + = + `md5 +( +$dql + . + `v¬_expÜt +( +$this +-> +_³ndšgJošCÚd™iÚs +, +Œue +) . 'DOCTRINE_QUERY_CACHE_SALT'); + +878  +$hash +; + +879 + } +} + +888 +public + +funùiÚ + +ÿlcuϋResuÉCacheHash +( +$·¿ms + = + $¬¿y +()) + +890 +$dql + = +$this +-> + `g‘Dql +(); + +891 +$cÚn + = +$this +-> + `g‘CÚÃùiÚ +(); + +892 +$·¿ms + = +$this +-> + `g‘Fω’edP¬ams +($params); + +893 +$hash + = + `md5 +( +$this +-> +_hyd¿tÜ +-> + `g‘Hyd¿tiÚMode +(è. +$cÚn +-> + `g‘Name +(è. $cÚn-> + `g‘O±iÚ +('d¢'è. +$dql + . + `v¬_expÜt +($this-> +_³ndšgJošCÚd™iÚs +, +Œue +è. v¬_expÜt( +$·¿ms +,rue)); + +894  +$hash +; + +895 + } +} + +904 +public + +funùiÚ + +g‘ResuÉCacheHash +( +$·¿ms + = + $¬¿y +()) + +906 ià( +$this +-> +_»suÉCacheHash +) { + +907  +$this +-> +_»suÉCacheHash +; + +909  +$this +-> + `ÿlcuϋResuÉCacheHash +( +$·¿ms +); + +911 + } +} + +919 +´Ùeùed + +funùiÚ + + $_execu‹ +( +$·¿ms +) + +922 +$·¿ms + = +$this +-> +_cÚn +-> + `cÚv”tBoޗns +($params); + +924 + `fܗch + ( +$this +-> +_·¿ms + +as + +$k + => +$v +) { + +925 +$this +-> +_·¿ms +[ +$k +] = $this-> +_cÚn +-> + `cÚv”tBoޗns +( +$v +); + +928 +$dqlP¬ams + = +$this +-> + `g‘Fω’edP¬ams +( +$·¿ms +); + +931 iàÐ! +$this +-> +_v›w +) { + +932 ià( +$this +-> +_qu”yCache + !=ð +çl£ + && ($this->_qu”yCach|| $this-> +_cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_QUERY_CACHE +))) { + +933 +$qu”yCacheDriv” + = +$this +-> + `g‘Qu”yCacheDriv” +(); + +934 +$hash + = +$this +-> + `ÿlcuϋQu”yCacheHash +(); + +935 +$ÿched + = +$qu”yCacheDriv” +-> + `ãtch +( +$hash +); + +938 ià( +$ÿched +) { + +940 +$qu”y + = +$this +-> + `_cÚ¡ruùQu”yFromCache +( +$ÿched +); + +943 +$this +-> +_·¿ms +['exec'] = +$·¿ms +; + +946 +$this +-> +_execP¬ams + = $this-> + `g‘Fω’edP¬ams +(); + +949 +$this +-> + `fixA¼ayP¬am‘”V®ues +($this-> + `g‘IÁ”ÇlP¬ams +()); + +952 +$qu”y + = +$this +-> + `g‘SqlQu”y +( +$·¿ms +); + +956 ià( +$this +-> +_qu”yCache + !=ð +çl£ + && ($this->_qu”yCach|| $this-> +_cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_QUERY_CACHE +))) { + +958 +$£rŸlizedQu”y + = +$this +-> + `g‘CachedFÜm +( +$qu”y +); + +961 +$qu”yCacheDriv” +-> + `§ve +( +$hash +, +$£rŸlizedQu”y +, +$this +-> + `g‘Qu”yCacheLiãS·n +()); + +965 +$qu”y + = +$this +-> + `g‘SqlQu”y +( +$·¿ms +); + +968 +$qu”y + = +$this +-> +_v›w +-> + `g‘S–eùSql +(); + +972 +$·¿ms + = +$this +-> + `g‘IÁ”ÇlP¬ams +(); + +974 ià( +$this +-> + `isLim™Subqu”yU£d +() && + +975 +$this +-> +_cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_DRIVER_NAME +) !== 'mysql') { + +976 +$·¿ms + = + `¬¿y_m”ge +(( +¬¿y +) $params, (array) $params); + +979 ià( +$this +-> +_ty³ + !=ð +£lf +:: +SELECT +) { + +980  +$this +-> +_cÚn +-> + `exec +( +$qu”y +, +$·¿ms +); + +983 +$¡mt + = +$this +-> +_cÚn +-> + `execu‹ +( +$qu”y +, +$·¿ms +); + +985 +$this +-> +_·¿ms +['exec'] = + `¬¿y +(); + +987  +$¡mt +; + +988 + } +} + +997 +public + +funùiÚ + +execu‹ +( +$·¿ms + = +¬¿y +(), +$hyd¿tiÚMode + = +nuÎ +) + +1000 +$this +-> +_execP¬ams + = +¬¿y +(); + +1002 ià( +em±y +( +$this +-> +_dqlP¬ts +['äom']è&&ƒm±y($this-> +_sqlP¬ts +['from'])) { + +1003 +throw + +Ãw + +Doùrše_Qu”y_Exû±iÚ +('You must have‡t†east one component specified in your from.'); + +1006 + g$dqlP¬ams + = +$this +-> +g‘Fω’edP¬ams +( +$·¿ms +); + +1008 + g$this +-> +_´eQu”y +( +$dqlP¬ams +); + +1010 ià( + g$hyd¿tiÚMode + !=ð +nuÎ +) { + +1011 +$this +-> +_hyd¿tÜ +-> +£tHyd¿tiÚMode +( +$hyd¿tiÚMode +); + +1014 + g$hyd¿tiÚMode + = +$this +-> +_hyd¿tÜ +-> +g‘Hyd¿tiÚMode +(); + +1016 ià( + g$this +-> + g_»suÉCache + && $this-> + g_ty³ + =ð +£lf +:: +SELECT +) { + +1017 +$ÿcheDriv” + = +$this +-> +g‘ResuÉCacheDriv” +(); + +1018 + g$hash + = +$this +-> +g‘ResuÉCacheHash +( +$·¿ms +); + +1019 + g$ÿched + = ( +$this +-> +_expœeResuÉCache +è? +çl£ + : +$ÿcheDriv” +-> +ãtch +( +$hash +); + +1021 ià( + g$ÿched + ==ð +çl£ +) { + +1023 +$¡mt + = +$this +-> +_execu‹ +( +$·¿ms +); + +1024 + g$this +-> + g_hyd¿tÜ +-> +£tQu”yCompڒts +( +$this +-> +_qu”yCompڒts +); + +1025 + g$»suÉ + = +$this +-> +_hyd¿tÜ +-> +hyd¿‹ResuÉS‘ +( +$¡mt +, $this-> +_bËAlŸsM­ +); + +1027 + g$ÿched + = +$this +-> +g‘CachedFÜm +( +$»suÉ +); + +1028 + g$ÿcheDriv” +-> +§ve +( +$hash +, +$ÿched +, +$this +-> +g‘ResuÉCacheLiãS·n +()); + +1030 + g$»suÉ + = +$this +-> +_cÚ¡ruùQu”yFromCache +( +$ÿched +); + +1033 + g$¡mt + = +$this +-> +_execu‹ +( +$·¿ms +); + +1035 ià( +is_š‹g” +( +$¡mt +)) { + +1036 + g$»suÉ + = +$¡mt +; + +1038 + g$this +-> + g_hyd¿tÜ +-> +£tQu”yCompڒts +( +$this +-> +_qu”yCompڒts +); + +1039 ià( + g$this +-> + g_ty³ + =ð +£lf +:: +SELECT + && +$hyd¿tiÚMode + =ð +Doùrše_CÜe +:: +HYDRATE_ON_DEMAND +) { + +1040 +$hyd¿tiÚDriv” + = +$this +-> +_hyd¿tÜ +-> +g‘Hyd¿tÜDriv” +( +$hyd¿tiÚMode +, $this-> +_bËAlŸsM­ +); + +1041 + g$»suÉ + = +Ãw + +Doùrše_CÞËùiÚ_OnDemªd +( +$¡mt +, +$hyd¿tiÚDriv” +, +$this +-> +_bËAlŸsM­ +); + +1043 + g$»suÉ + = +$this +-> +_hyd¿tÜ +-> +hyd¿‹ResuÉS‘ +( +$¡mt +, $this-> +_bËAlŸsM­ +); + +1047 ià( + g$this +-> +g‘CÚÃùiÚ +()-> +g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_AUTO_FREE_QUERY_OBJECTS +)) { + +1048 +$this +-> +ä“ +(); + +1051  + g$»suÉ +; + +1057 +public + +funùiÚ + + $ä“ +() + +1059 + } +} + +1066 +´Ùeùed + +funùiÚ + + $_g‘DqlC®lback +() + +1068 +$ÿÎback + = +çl£ +; + +1069 iàÐ! + `em±y +( +$this +-> +_dqlP¬ts +['from'])) { + +1070  +$this +-> +_ty³ +) { + +1071  +£lf +:: +DELETE +: + +1072 +$ÿÎback + = + `¬¿y +( + +1074 'cÚ¡' => +Doùrše_Ev’t +:: +RECORD_DQL_DELETE + + +1077  +£lf +:: +UPDATE +: + +1078 +$ÿÎback + = + `¬¿y +( + +1080 'cÚ¡' => +Doùrše_Ev’t +:: +RECORD_DQL_UPDATE + + +1083  +£lf +:: +SELECT +: + +1084 +$ÿÎback + = + `¬¿y +( + +1086 'cÚ¡' => +Doùrše_Ev’t +:: +RECORD_DQL_SELECT + + +1092  +$ÿÎback +; + +1093 + } +} + +1101 +´Ùeùed + +funùiÚ + +_´eQu”y +( +$·¿ms + = + $¬¿y +()) + +1103 iàÐ! +$this +-> +_´eQu”›d + && $this-> + `g‘CÚÃùiÚ +()-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_USE_DQL_CALLBACKS +)) { + +1104 +$this +-> +_´eQu”›d + = +Œue +; + +1106 +$ÿÎback + = +$this +-> + `_g‘DqlC®lback +(); + +1109 iàÐ! +$ÿÎback +) { + +1113 + `fܗch + ( +$this +-> + `_g‘DqlC®lbackCompڒts +( +$·¿ms +è +as + +$®Ÿs + => +$compڒt +) { + +1114 +$bË + = +$compڒt +['table']; + +1115 +$»cÜd + = +$bË +-> + `g‘RecÜdIn¡ªû +(); + +1118 +$·¿ms + = + `¬¿y +('compڒt' => +$compڒt +, '®Ÿs' => +$®Ÿs +); + +1119 +$ev’t + = +Ãw + + `Doùrše_Ev’t +( +$»cÜd +, +$ÿÎback +['cÚ¡'], +$this +, +$·¿ms +); + +1121 +$»cÜd +-> +$ÿÎback +['ÿÎback']( +$ev’t +); + +1122 +$bË +-> + `g‘RecÜdLi¡’” +()-> +$ÿÎback +['ÿÎback']( +$ev’t +); + +1127 +$this +-> + `´eQu”y +(); + +1128 + } +} + +1136 +´Ùeùed + +funùiÚ + +_g‘DqlC®lbackCompڒts +( +$·¿ms + = + $¬¿y +()) + +1138 +$compڒtsBefÜe + = + `¬¿y +(); + +1139 ià( +$this +-> + `isSubqu”y +()) { + +1140 +$compڒtsBefÜe + = +$this +-> + `g‘Qu”yCompڒts +(); + +1143 +$cÝy + = +$this +-> + `cÝy +(); + +1144 +$cÝy +-> + `g‘SqlQu”y +( +$·¿ms +, +çl£ +); + +1145 +$compڒtsAᔠ+ = +$cÝy +-> + `g‘Qu”yCompڒts +(); + +1147 +$this +-> +_roÙAlŸs + = +$cÝy +-> + `g‘RoÙAlŸs +(); + +1149 +$cÝy +-> + `ä“ +(); + +1151 ià( +$compڒtsBefÜe + !=ð +$compڒtsAᔠ+) { + +1152  + `¬¿y_diff +( +$compڒtsAᔠ+, +$compڒtsBefÜe +); + +1154  +$compڒtsAᔠ+; + +1156 + } +} + +1163 +public + +funùiÚ + + $´eQu”y +() + +1165 + } +} + +1175 +´Ùeùed + +funùiÚ + + $_cÚ¡ruùQu”yFromCache +( +$ÿched +) + +1177 +$ÿched + = + `un£rŸlize +($cached); + +1178 +$this +-> +_bËAlŸsM­ + = +$ÿched +[2]; + +1179 +$cu¡omCompڒt + = +$ÿched +[0]; + +1181 +$qu”yCompڒts + = + `¬¿y +(); + +1182 +$ÿchedCompڒts + = +$ÿched +[1]; + +1183 + `fܗch + ( +$ÿchedCompڒts + +as + +$®Ÿs + => +$compڒts +) { + +1184 +$e + = + `ex¶ode +('.', +$compڒts +['name']); + +1185 ià( + `couÁ +( +$e +) === 1) { + +1186 +$mªag” + = +Doùrše_Mªag” +:: + `g‘In¡ªû +(); + +1187 iàÐ! +$this +-> +_·s£dCÚn + && +$mªag” +-> + `hasCÚÃùiÚFÜCompڒt +( +$e +[0])) { + +1188 +$this +-> +_cÚn + = +$mªag” +-> + `g‘CÚÃùiÚFÜCompڒt +( +$e +[0]); + +1190 +$qu”yCompڒts +[ +$®Ÿs +]['bË'] = +$this +-> +_cÚn +-> + `g‘TabË +( +$e +[0]); + +1192 +$qu”yCompڒts +[ +$®Ÿs +]['·»Á'] = +$e +[0]; + +1193 +$qu”yCompڒts +[ +$®Ÿs +]['»ÏtiÚ'] = $qu”yCompڒts[ +$e +[0]]['bË']-> + `g‘R–©iÚ +($e[1]); + +1194 +$qu”yCompڒts +[ +$®Ÿs +]['bË'] = $qu”yCompڒts[$®Ÿs]['»ÏtiÚ']-> + `g‘TabË +(); + +1196 ià( + `is£t +( +$compڒts +['agg'])) { + +1197 +$qu”yCompڒts +[ +$®Ÿs +]['agg'] = +$compڒts +['agg']; + +1199 ià( + `is£t +( +$compڒts +['map'])) { + +1200 +$qu”yCompڒts +[ +$®Ÿs +]['m­'] = +$compڒts +['map']; + +1203 +$this +-> +_qu”yCompڒts + = +$qu”yCompڒts +; + +1205  +$cu¡omCompڒt +; + +1206 + } +} + +1215 +public + +funùiÚ + + $g‘CachedFÜm +( +$cu¡omCompڒt + = +nuÎ +) + +1217 +$compڒtInfo + = + `¬¿y +(); + +1219 + `fܗch + ( +$this +-> + `g‘Qu”yCompڒts +(è +as + +$®Ÿs + => +$compڒts +) { + +1220 iàÐ! + `is£t +( +$compڒts +['parent'])) { + +1221 +$compڒtInfo +[ +$®Ÿs +]['Çme'] = +$compڒts +['bË']-> + `g‘CompڒtName +(); + +1223 +$compڒtInfo +[ +$®Ÿs +]['Çme'] = +$compڒts +['·»Á'] . '.' . $compڒts['»ÏtiÚ']-> + `g‘AlŸs +(); + +1225 ià( + `is£t +( +$compڒts +['agg'])) { + +1226 +$compڒtInfo +[ +$®Ÿs +]['agg'] = +$compڒts +['agg']; + +1228 ià( + `is£t +( +$compڒts +['map'])) { + +1229 +$compڒtInfo +[ +$®Ÿs +]['m­'] = +$compڒts +['map']; + +1233 ià( +$cu¡omCompڒt + +š¡ªûof + +Doùrše_CÞËùiÚ +) { + +1234 + `fܗch + ( +$cu¡omCompڒt + +as + +$»cÜd +) { + +1235 +$»cÜd +-> + `£rŸlizeReã»nûs +( +Œue +); + +1239  + `£rŸlize +( + `¬¿y +( +$cu¡omCompڒt +, +$compڒtInfo +, +$this +-> + `g‘TabËAlŸsM­ +())); + +1240 + } +} + +1253 +public + +funùiÚ + + $addS–eù +( +$£Ëù +) + +1255  +$this +-> + `_addDqlQu”yP¬t +('£Ëù', +$£Ëù +, +Œue +); + +1256 + } +} + +1266 +public + +funùiÚ + + $addSqlTabËAlŸs +( +$sqlTabËAlŸs +, +$compڒtAlŸs +) + +1268 +$this +-> +_bËAlŸsM­ +[ +$sqlTabËAlŸs +] = +$compڒtAlŸs +; + +1269  +$this +; + +1270 + } +} + +1279 +public + +funùiÚ + + $addFrom +( +$äom +) + +1281  +$this +-> + `_addDqlQu”yP¬t +('äom', +$äom +, +Œue +); + +1282 + } +} + +1288 +public + +funùiÚ + +addWh”e +( +$wh”e +, +$·¿ms + = + $¬¿y +()) + +1290  +$this +-> + `ªdWh”e +( +$wh”e +, +$·¿ms +); + +1291 + } +} + +1303 +public + +funùiÚ + +ªdWh”e +( +$wh”e +, +$·¿ms + = + $¬¿y +()) + +1305 ià( + `is_¬¿y +( +$·¿ms +)) { + +1306 +$this +-> +_·¿ms +['wh”e'] = + `¬¿y_m”ge +($this->_·¿ms['wh”e'], +$·¿ms +); + +1308 +$this +-> +_·¿ms +['wh”e'][] = +$·¿ms +; + +1311 ià( +$this +-> + `_hasDqlQu”yP¬t +('where')) { + +1312 +$this +-> + `_addDqlQu”yP¬t +('wh”e', 'AND', +Œue +); + +1315  +$this +-> + `_addDqlQu”yP¬t +('wh”e', +$wh”e +, +Œue +); + +1316 + } +} + +1328 +public + +funùiÚ + +ÜWh”e +( +$wh”e +, +$·¿ms + = + $¬¿y +()) + +1330 ià( + `is_¬¿y +( +$·¿ms +)) { + +1331 +$this +-> +_·¿ms +['wh”e'] = + `¬¿y_m”ge +($this->_·¿ms['wh”e'], +$·¿ms +); + +1333 +$this +-> +_·¿ms +['wh”e'][] = +$·¿ms +; + +1336 ià( +$this +-> + `_hasDqlQu”yP¬t +('where')) { + +1337 +$this +-> + `_addDqlQu”yP¬t +('wh”e', 'OR', +Œue +); + +1340  +$this +-> + `_addDqlQu”yP¬t +('wh”e', +$wh”e +, +Œue +); + +1341 + } +} + +1351 +public + +funùiÚ + +wh”eIn +( +$ex´ +, +$·¿ms + = +¬¿y +(), +$nÙ + = +çl£ +) + +1353  +$this +-> +ªdWh”eIn +( +$ex´ +, +$·¿ms +, +$nÙ +); + +1367 +public + +funùiÚ + +ªdWh”eIn +( +$ex´ +, +$·¿ms + = +¬¿y +(), +$nÙ + = +çl£ +) + +1370 ià( +is£t +( +$·¿ms +è +ªd + ( +couÁ +($params) == 0)) { + +1371  +$this +; + +1374 ià( + g$this +-> +_hasDqlQu”yP¬t +('where')) { + +1375 + g$this +-> +_addDqlQu”yP¬t +('wh”e', 'AND', +Œue +); + +1378  + g$this +-> +_addDqlQu”yP¬t +('wh”e', +$this +-> +_´oûssWh”eIn +( +$ex´ +, +$·¿ms +, +$nÙ +), +Œue +); + +1394 +public + +funùiÚ + +ÜWh”eIn +( +$ex´ +, +$·¿ms + = +¬¿y +(), +$nÙ + = +çl£ +) + +1397 ià( +is£t +( +$·¿ms +è +ªd + ( +couÁ +($params) == 0)) { + +1398  +$this +; + +1401 ià( + g$this +-> +_hasDqlQu”yP¬t +('where')) { + +1402 + g$this +-> +_addDqlQu”yP¬t +('wh”e', 'OR', +Œue +); + +1405  + g$this +-> +_addDqlQu”yP¬t +('wh”e', +$this +-> +_´oûssWh”eIn +( +$ex´ +, +$·¿ms +, +$nÙ +), +Œue +); + +1411 +´Ùeùed + +funùiÚ + +_´oûssWh”eIn +( +$ex´ +, +$·¿ms + = +¬¿y +(), +$nÙ + = +çl£ +) + +1413 +$·¿ms + = ( +¬¿y +) $params; + +1416 ià( +couÁ +( +$·¿ms +) == 0) { + +1417 +throw + +Ãw + +Doùrše_Qu”y_Exû±iÚ +('You must…ass‡t†east one…arameter when using‡n IN() condition.'); + +1420 + g$a + = +¬¿y +(); + +1421 +fܗch + ( +$·¿ms + +as + +$k + => +$v®ue +) { + +1422 ià( +$v®ue + +š¡ªûof + +Doùrše_Ex´essiÚ +) { + +1423 +$v®ue + = $v®ue-> +g‘Sql +(); + +1424 +un£t +( +$·¿ms +[ +$k +]); + +1426 + g$v®ue + = '?'; + +1428 + g$a +[] = +$v®ue +; + +1431 + g$this +-> + g_·¿ms +['wh”e'] = +¬¿y_m”ge +( +$this +-> +_·¿ms +['wh”e'], +$·¿ms +); + +1433  + g$ex´ + . ( + g$nÙ + ==ð +Œue + ? ' NOT' : ''è. ' IN (' . +im¶ode +(', ', +$a +) . ')'; + +1447 +public + +funùiÚ + +wh”eNÙIn +( +$ex´ +, +$·¿ms + = + $¬¿y +()) + +1449  +$this +-> + `wh”eIn +( +$ex´ +, +$·¿ms +, +Œue +); + +1450 + } +} + +1460 +public + +funùiÚ + +ªdWh”eNÙIn +( +$ex´ +, +$·¿ms + = + $¬¿y +()) + +1462  +$this +-> + `ªdWh”eIn +( +$ex´ +, +$·¿ms +, +Œue +); + +1463 + } +} + +1472 +public + +funùiÚ + +ÜWh”eNÙIn +( +$ex´ +, +$·¿ms + = + $¬¿y +()) + +1474  +$this +-> + `ÜWh”eIn +( +$ex´ +, +$·¿ms +, +Œue +); + +1475 + } +} + +1486 +public + +funùiÚ + + $addGroupBy +( +$groupby +) + +1488  +$this +-> + `_addDqlQu”yP¬t +('groupby', +$groupby +, +Œue +); + +1489 + } +} + +1504 +public + +funùiÚ + +addHavšg +( +$havšg +, +$·¿ms + = + $¬¿y +()) + +1506 ià( + `is_¬¿y +( +$·¿ms +)) { + +1507 +$this +-> +_·¿ms +['havšg'] = + `¬¿y_m”ge +($this->_·¿ms['havšg'], +$·¿ms +); + +1509 +$this +-> +_·¿ms +['havšg'][] = +$·¿ms +; + +1511  +$this +-> + `_addDqlQu”yP¬t +('havšg', +$havšg +, +Œue +); + +1512 + } +} + +1521 +public + +funùiÚ + + $addOrd”By +( +$Üd”by +) + +1523  +$this +-> + `_addDqlQu”yP¬t +('Üd”by', +$Üd”by +, +Œue +); + +1524 + } +} + +1533 +public + +funùiÚ + + $£Ëù +( +$£Ëù + = +nuÎ +) + +1535 +$this +-> +_ty³ + = +£lf +:: +SELECT +; + +1536 ià( +$£Ëù +) { + +1537  +$this +-> + `_addDqlQu”yP¬t +('£Ëù', +$£Ëù +); + +1539  +$this +; + +1541 + } +} + +1553 +public + +funùiÚ + + $di¡šù +( +$æag + = +Œue +) + +1555 +$this +-> +_sqlP¬ts +['di¡šù'] = ( +boÞ +è +$æag +; + +1556  +$this +; + +1557 + } +} + +1566 +public + +funùiÚ + + $fÜUpd©e +( +$æag + = +Œue +) + +1568 +$this +-> +_sqlP¬ts +['fÜUpd©e'] = ( +boÞ +è +$æag +; + +1569  +$this +; + +1570 + } +} + +1578 +public + +funùiÚ + + $d–‘e +( +$äom + = +nuÎ +) + +1580 +$this +-> +_ty³ + = +£lf +:: +DELETE +; + +1581 ià( +$äom + !ð +nuÎ +) { + +1582  +$this +-> + `_addDqlQu”yP¬t +('äom', +$äom +); + +1584  +$this +; + +1585 + } +} + +1594 +public + +funùiÚ + + $upd©e +( +$äom + = +nuÎ +) + +1596 +$this +-> +_ty³ + = +£lf +:: +UPDATE +; + +1597 ià( +$äom + !ð +nuÎ +) { + +1598  +$this +-> + `_addDqlQu”yP¬t +('äom', +$äom +); + +1600  +$this +; + +1601 + } +} + +1610 +public + +funùiÚ + + $£t +( +$key +, +$v®ue + = +nuÎ +, +$·¿ms + =‚ull) + +1612 ià( + `is_¬¿y +( +$key +)) { + +1613 + `fܗch + ( +$key + +as + +$k + => +$v +) { + +1614 +$this +-> + `£t +( +$k +, '?', + `¬¿y +( +$v +)); + +1616  +$this +; + +1618 ià( +$·¿ms + !=ð +nuÎ +) { + +1619 ià( + `is_¬¿y +( +$·¿ms +)) { + +1620 +$this +-> +_·¿ms +['£t'] = + `¬¿y_m”ge +($this->_·¿ms['£t'], +$·¿ms +); + +1622 +$this +-> +_·¿ms +['£t'][] = +$·¿ms +; + +1626  +$this +-> + `_addDqlQu”yP¬t +('£t', +$key + . ' = ' . +$v®ue +, +Œue +); + +1628 + } +} + +1640 +public + +funùiÚ + + $äom +( +$äom +) + +1642  +$this +-> + `_addDqlQu”yP¬t +('äom', +$äom +); + +1643 + } +} + +1652 +public + +funùiÚ + +šÃrJoš +( +$još +, +$·¿ms + = + $¬¿y +()) + +1654 ià( + `is_¬¿y +( +$·¿ms +)) { + +1655 +$this +-> +_·¿ms +['još'] = + `¬¿y_m”ge +($this->_·¿ms['još'], +$·¿ms +); + +1657 +$this +-> +_·¿ms +['još'][] = +$·¿ms +; + +1660  +$this +-> + `_addDqlQu”yP¬t +('äom', 'INNER JOIN ' . +$još +, +Œue +); + +1661 + } +} + +1670 +public + +funùiÚ + +ËáJoš +( +$još +, +$·¿ms + = + $¬¿y +()) + +1672 ià( + `is_¬¿y +( +$·¿ms +)) { + +1673 +$this +-> +_·¿ms +['još'] = + `¬¿y_m”ge +($this->_·¿ms['još'], +$·¿ms +); + +1675 +$this +-> +_·¿ms +['još'][] = +$·¿ms +; + +1678  +$this +-> + `_addDqlQu”yP¬t +('äom', 'LEFT JOIN ' . +$još +, +Œue +); + +1679 + } +} + +1688 +public + +funùiÚ + + $groupBy +( +$groupby +) + +1690  +$this +-> + `_addDqlQu”yP¬t +('groupby', +$groupby +); + +1691 + } +} + +1701 +public + +funùiÚ + +wh”e +( +$wh”e +, +$·¿ms + = + $¬¿y +()) + +1703 +$this +-> +_·¿ms +['wh”e'] = + `¬¿y +(); + +1705 ià( + `is_¬¿y +( +$·¿ms +)) { + +1706 +$this +-> +_·¿ms +['wh”e'] = +$·¿ms +; + +1708 +$this +-> +_·¿ms +['wh”e'][] = +$·¿ms +; + +1711  +$this +-> + `_addDqlQu”yP¬t +('wh”e', +$wh”e +); + +1712 + } +} + +1722 +public + +funùiÚ + +havšg +( +$havšg +, +$·¿ms + = + $¬¿y +()) + +1724 +$this +-> +_·¿ms +['havšg'] = + `¬¿y +(); + +1725 ià( + `is_¬¿y +( +$·¿ms +)) { + +1726 +$this +-> +_·¿ms +['havšg'] = +$·¿ms +; + +1728 +$this +-> +_·¿ms +['havšg'][] = +$·¿ms +; + +1731  +$this +-> + `_addDqlQu”yP¬t +('havšg', +$havšg +); + +1732 + } +} + +1744 +public + +funùiÚ + + $Üd”By +( +$Üd”by +) + +1746  +$this +-> + `_addDqlQu”yP¬t +('Üd”by', +$Üd”by +); + +1747 + } +} + +1756 +public + +funùiÚ + + $lim™ +( +$lim™ +) + +1758  +$this +-> + `_addDqlQu”yP¬t +('lim™', +$lim™ +); + +1759 + } +} + +1768 +public + +funùiÚ + + $off£t +( +$off£t +) + +1770  +$this +-> + `_addDqlQu”yP¬t +('off£t', +$off£t +); + +1771 + } +} + +1778 +´Ùeùed + +funùiÚ + + $þ—r +() + +1780 +$this +-> +_sqlP¬ts + = + `¬¿y +( + +1781 '£Ëù' => + `¬¿y +(), + +1782 'di¡šù' => +çl£ +, + +1783 'fÜUpd©e' => +çl£ +, + +1784 'äom' => + `¬¿y +(), + +1785 '£t' => + `¬¿y +(), + +1786 'još' => + `¬¿y +(), + +1787 'wh”e' => + `¬¿y +(), + +1788 'groupby' => + `¬¿y +(), + +1789 'havšg' => + `¬¿y +(), + +1790 'Üd”by' => + `¬¿y +(), + +1791 'lim™' => +çl£ +, + +1792 'off£t' => +çl£ +, + +1794 + } +} + +1796 +public + +funùiÚ + + $£tHyd¿tiÚMode +( +$hyd¿tiÚMode +) + +1798 +$this +-> +_hyd¿tÜ +-> + `£tHyd¿tiÚMode +( +$hyd¿tiÚMode +); + +1799  +$this +; + +1800 + } +} + +1805 +public + +funùiÚ + + $g‘Qu”yCompڒts +() + +1807  +$this +-> +_qu”yCompڒts +; + +1808 + } +} + +1815 +public + +funùiÚ + + $g‘SqlP¬ts +() + +1817  +$this +-> +_sqlP¬ts +; + +1818 + } +} + +1834 +public + +funùiÚ + + $g‘Ty³ +() + +1836  +$this +-> +_ty³ +; + +1837 + } +} + +1847 +public + +funùiÚ + + $u£ResuÉCache +( +$driv” + = +Œue +, +$timeToLive + = +nuÎ +, +$»suÉCacheHash + =‚ull) + +1849 ià( +$driv” + !=ð +nuÎ + && $driv” !=ð +Œue + && ! ($driv” +š¡ªûOf + +Doùrše_Cache_IÁ”çû +)) { + +1850 +$msg + = 'First‡rgument should be instance of Doctrine_Cache_Interface or‚ull.'; + +1851 +throw + +Ãw + + `Doùrše_Qu”y_Exû±iÚ +( +$msg +); + +1853 +$this +-> +_»suÉCache + = +$driv” +; + +1854 +$this +-> +_»suÉCacheHash + = +$»suÉCacheHash +; + +1856 ià( +$timeToLive + !=ð +nuÎ +) { + +1857 +$this +-> + `£tResuÉCacheLiãS·n +( +$timeToLive +); + +1859  +$this +; + +1860 + } +} + +1868 +public + +funùiÚ + + $£tResuÉCacheHash +( +$»suÉCacheHash +) + +1870 +$this +-> +_»suÉCacheHash + = +$»suÉCacheHash +; + +1872  +$this +; + +1873 + } +} + +1880 +public + +funùiÚ + + $þ—rResuÉCache +() + +1882 +$this +-> + `g‘ResuÉCacheDriv” +() + +1883 -> + `d–‘e +( +$this +-> + `g‘ResuÉCacheHash +()); + +1885  +$this +; + +1886 + } +} + +1895 +public + +funùiÚ + + $u£Qu”yCache +( +$driv” + = +Œue +, +$timeToLive + = +nuÎ +) + +1897 ià( +$driv” + !=ð +nuÎ + && $driv” !=ð +Œue + && $driv” !=ð +çl£ + && ! ($driv” +š¡ªûOf + +Doùrše_Cache_IÁ”çû +)) { + +1898 +$msg + = 'First‡rgument should be instance of Doctrine_Cache_Interface or‚ull.'; + +1899 +throw + +Ãw + + `Doùrše_Qu”y_Exû±iÚ +( +$msg +); + +1901 +$this +-> +_qu”yCache + = +$driv” +; + +1903 ià( +$timeToLive + !=ð +nuÎ +) { + +1904 +$this +-> + `£tQu”yCacheLiãS·n +( +$timeToLive +); + +1906  +$this +; + +1907 + } +} + +1915 +public + +funùiÚ + + $expœeResuÉCache +( +$expœe + = +Œue +) + +1917 +$this +-> +_expœeResuÉCache + = +$expœe +; + +1918  +$this +; + +1919 + } +} + +1927 +public + +funùiÚ + + $expœeQu”yCache +( +$expœe + = +Œue +) + +1929 +$this +-> +_expœeQu”yCache + = +$expœe +; + +1930  +$this +; + +1931 + } +} + +1939 +public + +funùiÚ + + $£tResuÉCacheLiãS·n +( +$timeToLive +) + +1941 ià( +$timeToLive + !=ð +nuÎ +) { + +1942 +$timeToLive + = () $timeToLive; + +1944 +$this +-> +_»suÉCacheTTL + = +$timeToLive +; + +1946  +$this +; + +1947 + } +} + +1954 +public + +funùiÚ + + $g‘ResuÉCacheLiãS·n +() + +1956  +$this +-> +_»suÉCacheTTL +; + +1957 + } +} + +1965 +public + +funùiÚ + + $£tQu”yCacheLiãS·n +( +$timeToLive +) + +1967 ià( +$timeToLive + !=ð +nuÎ +) { + +1968 +$timeToLive + = () $timeToLive; + +1970 +$this +-> +_qu”yCacheTTL + = +$timeToLive +; + +1972  +$this +; + +1973 + } +} + +1980 +public + +funùiÚ + + $g‘Qu”yCacheLiãS·n +() + +1982  +$this +-> +_qu”yCacheTTL +; + +1983 + } +} + +1991 +public + +funùiÚ + + $g‘ResuÉCacheDriv” +() + +1993 ià( +$this +-> +_»suÉCache + +š¡ªûof + +Doùrše_Cache_IÁ”çû +) { + +1994  +$this +-> +_»suÉCache +; + +1996  +$this +-> +_cÚn +-> + `g‘ResuÉCacheDriv” +(); + +1998 + } +} + +2006 +public + +funùiÚ + + $g‘Qu”yCacheDriv” +() + +2008 ià( +$this +-> +_qu”yCache + +š¡ªûof + +Doùrše_Cache_IÁ”çû +) { + +2009  +$this +-> +_qu”yCache +; + +2011  +$this +-> +_cÚn +-> + `g‘Qu”yCacheDriv” +(); + +2013 + } +} + +2020 +public + +funùiÚ + + $g‘CÚÃùiÚ +() + +2022  +$this +-> +_cÚn +; + +2023 + } +} + +2031 +´Ùeùed + +funùiÚ + + $_hasDqlQu”yP¬t +( +$qu”yP¬tName +) + +2033  + `couÁ +( +$this +-> +_dqlP¬ts +[ +$qu”yP¬tName +]) > 0; + +2034 + } +} + +2050 +´Ùeùed + +funùiÚ + + $_addDqlQu”yP¬t +( +$qu”yP¬tName +, +$qu”yP¬t +, +$­³nd + = +çl£ +) + +2053 ià( +$qu”yP¬t + ==ð +nuÎ +) { + +2054 +throw + +Ãw + + `Doùrše_Qu”y_Exû±iÚ +('CªnÙ defšNULL‡ ·¹ oàqu”y wh’ defššg \'' . +$qu”yP¬tName + . '\'.'); + +2057 ià( +$­³nd +) { + +2058 +$this +-> +_dqlP¬ts +[ +$qu”yP¬tName +][] = +$qu”yP¬t +; + +2060 +$this +-> +_dqlP¬ts +[ +$qu”yP¬tName +] = + `¬¿y +( +$qu”yP¬t +); + +2063 +$this +-> +_¡©e + = +Doùrše_Qu”y +:: +STATE_DIRTY +; + +2064  +$this +; + +2065 + } +} + +2077 +´Ùeùed + +funùiÚ + + $_´oûssDqlQu”yP¬t +( +$qu”yP¬tName +, +$qu”yP¬ts +) + +2079 +$this +-> + `»moveSqlQu”yP¬t +( +$qu”yP¬tName +); + +2081 ià( + `is_¬¿y +( +$qu”yP¬ts +è&& ! + `em±y +($queryParts)) { + +2082 + `fܗch + ( +$qu”yP¬ts + +as + +$qu”yP¬t +) { + +2083 +$·r£r + = +$this +-> + `_g‘P¬£r +( +$qu”yP¬tName +); + +2084 +$sql + = +$·r£r +-> + `·r£ +( +$qu”yP¬t +); + +2085 ià( + `is£t +( +$sql +)) { + +2086 ià( +$qu”yP¬tName + == 'limit' || $queryPartName == 'offset') { + +2087 +$this +-> + `£tSqlQu”yP¬t +( +$qu”yP¬tName +, +$sql +); + +2089 +$this +-> + `addSqlQu”yP¬t +( +$qu”yP¬tName +, +$sql +); + +2094 + } +} + +2104 +´Ùeùed + +funùiÚ + + $_g‘P¬£r +( +$Çme +) + +2106 iàÐ! + `is£t +( +$this +-> +_·r£rs +[ +$Çme +])) { + +2107 +$þass + = 'Doùrše_Qu”y_' . + `ucwÜds +( + `¡¹Þow” +( +$Çme +)); + +2109 +Doùrše_CÜe +:: + `autÞßd +( +$þass +); + +2111 iàÐ! + `þass_exi¡s +( +$þass +)) { + +2112 +throw + +Ãw + + `Doùrše_Qu”y_Exû±iÚ +('UnknowÀ·r£¸' . +$Çme +); + +2115 +$this +-> +_·r£rs +[ +$Çme +] = +Ãw + + `$þass +($this, $this-> +_tok’iz” +); + +2118  +$this +-> +_·r£rs +[ +$Çme +]; + +2119 + } +} + +2128 +ab¡¿ù + +public + +funùiÚ + +g‘SqlQu”y +( +$·¿ms + = +¬¿y +()); + +2137 +ab¡¿ù + +public + +funùiÚ + +·r£DqlQu”y +( +$qu”y +); + +2146 +public + +funùiÚ + + $__toSŒšg +() + +2148  +$this +-> + `g‘Dql +(); + +2149 + } +} + +2156 +public + +funùiÚ + + $g‘Di§bËLim™Subqu”y +() + +2158  +$this +-> +di§bËLim™Subqu”y +; + +2159 + } +} + +2167 +public + +funùiÚ + + $£tDi§bËLim™Subqu”y +( +$di§bËLim™Subqu”y +) + +2169 +$this +-> +di§bËLim™Subqu”y + = +$di§bËLim™Subqu”y +; + +2170 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/Check.php + +1 + `g‘Cu¼’tCÚÃùiÚ +() + +56 -> + `g‘TabË +( +$bË +); + +58 +$this +-> +bË + = +$bË +; + +59 +$this +-> +_tok’iz” + = +Ãw + + `Doùrše_Qu”y_Tok’iz” +(); + +68 +public + +funùiÚ + + $g‘TabË +() + +70  +$this +-> +bË +; + +71 + } +} + +79 +public + +funùiÚ + + $·r£ +( +$dql +) + +81 +$this +-> +sql + = $this-> + `·r£CÏu£ +( +$dql +); + +82 + } +} + +92 +public + +funùiÚ + + $·r£CÏu£ +( +$dql +) + +94 +$·¹s + = +$this +-> +_tok’iz” +-> + `sqlEx¶ode +( +$dql +, ' AND '); + +96 ià( + `couÁ +( +$·¹s +) > 1) { + +97 +$»t + = + `¬¿y +(); + +98 + `fܗch + ( +$·¹s + +as + +$·¹ +) { + +99 +$»t +[] = +$this +-> + `·r£SšgË +( +$·¹ +); + +102 +$r + = + `im¶ode +(' AND ', +$»t +); + +104 +$·¹s + = +$this +-> +_tok’iz” +-> + `quÙeEx¶ode +( +$dql +, ' OR '); + +105 ià( + `couÁ +( +$·¹s +) > 1) { + +106 +$»t + = + `¬¿y +(); + +107 + `fܗch + ( +$·¹s + +as + +$·¹ +) { + +108 +$»t +[] = +$this +-> + `·r£CÏu£ +( +$·¹ +); + +111 +$r + = + `im¶ode +(' OR ', +$»t +); + +113 +$»t + = +$this +-> + `·r£SšgË +( +$dql +); + +114  +$»t +; + +117  '(' . +$r + . ')'; + +118 + } +} + +120 +public + +funùiÚ + + $·r£SšgË +( +$·¹ +) + +122 +$e + = + `ex¶ode +(' ', +$·¹ +); + +124 +$e +[0] = +$this +-> + `·r£FunùiÚ +($e[0]); + +126  +$e +[1]) { + +135 +throw + +Ãw + + `Doùrše_Qu”y_Exû±iÚ +('UnknowÀݔ©Ü ' . +$e +[1]); + +138  + `im¶ode +(' ', +$e +); + +139 + } +} + +141 +public + +funùiÚ + + $·r£FunùiÚ +( +$dql +) + +143 ià(( +$pos + = + `¡½os +( +$dql +, '(')è!=ð +çl£ +) { + +144 +$func + = + `sub¡r +( +$dql +, 0, +$pos +); + +145 +$v®ue + = + `sub¡r +( +$dql +, ( +$pos + + 1), -1); + +147 +$ex´ + = +$this +-> +bË +-> + `g‘CÚÃùiÚ +()-> +ex´essiÚ +; + +149 iàÐ! + `m‘hod_exi¡s +( +$ex´ +, +$func +)) { + +150 +throw + +Ãw + + `Doùrše_Qu”y_Exû±iÚ +('UnknowÀfunùiÚ ' . +$func +); + +153 +$func + = +$ex´ +-> + `$func +( +$v®ue +); + +155  +$func +; + +156 + } +} + +166 +public + +funùiÚ + + $g‘Sql +() + +168  +$this +-> +sql +; + +169 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/Condition.php + +1 +_tok’iz” +-> + `b¿ck‘Ex¶ode +( +$¡r +, + `¬¿y +(' OR '), '(', ')'); + +48 ià( + `couÁ +( +$·¹s +) > 1) { + +49 +$»t + = + `¬¿y +(); + +50 + `fܗch + ( +$·¹s + +as + +$·¹ +) { + +51 +$·¹ + = +$this +-> +_tok’iz” +-> + `b¿ck‘Trim +($part, '(', ')'); + +52 +$»t +[] = +$this +-> + `·r£ +( +$·¹ +); + +54 +$r + = + `im¶ode +(' OR ', +$»t +); + +56 +$·¹s + = +$this +-> +_tok’iz” +-> + `b¿ck‘Ex¶ode +( +$¡r +, + `¬¿y +(' AND '), '(', ')'); + +59 +$tmp + = + `¬¿y +(); + +61  +$i + = 0, +$l + = + `couÁ +( +$·¹s +); $i < $l; $i++) { + +62 +$‹¡ + = +$this +-> +_tok’iz” +-> + `sqlEx¶ode +( +$·¹s +[ +$i +]); + +64 ià( + `couÁ +( +$‹¡ +è=ð3 && + `¡¹ouµ” +($test[1]) == 'BETWEEN') { + +65 +$tmp +[] = +$·¹s +[ +$i +] . ' AND ' . $parts[++$i]; + +66 } ià( + `couÁ +( +$‹¡ +è=ð4 && + `¡¹ouµ” +($test[1]) == 'NOT' && strtoupper($test[2]) == 'BETWEEN') { + +67 +$tmp +[] = +$·¹s +[ +$i +] . ' AND ' . $parts[++$i]; + +69 +$tmp +[] = +$·¹s +[ +$i +]; + +73 +$·¹s + = +$tmp +; + +74 + `un£t +( +$tmp +); + +76 ià( + `couÁ +( +$·¹s +) > 1) { + +77 +$»t + = + `¬¿y +(); + +78 + `fܗch + ( +$·¹s + +as + +$·¹ +) { + +79 +$·¹ + = +$this +-> +_tok’iz” +-> + `b¿ck‘Trim +($part, '(', ')'); + +80 +$»t +[] = +$this +-> + `·r£ +( +$·¹ +); + +82 +$r + = + `im¶ode +(' AND ', +$»t +); + +85 ià( + `sub¡r +( +$·¹s +[0],0,1) == '(' && substr($parts[0], -1) == ')') { + +86  +$this +-> + `·r£ +( + `sub¡r +( +$·¹s +[0], 1, -1)); + +89 ià( + `¡¹ouµ” +( + `sub¡r +( +$·¹s +[0], 0, 4)) === 'NOT ') { + +90 +$r + = 'NOT ('. +$this +-> + `·r£ +( + `sub¡r +( +$·¹s +[0], 4)).')'; + +92  +$this +-> + `lßd +( +$·¹s +[0]); + +98  '(' . +$r + . ')'; + +110 +public + +funùiÚ + + $·r£L™”®V®ue +( +$v®ue +) + +113 ià( + `¡½os +( +$v®ue +, '\''è==ð +çl£ +) { + +115 +$v®ue + = +$this +-> +qu”y +-> + `g‘CÚÃùiÚ +() + +116 -> +d©aDiù +-> + `·r£Boޗn +( +$v®ue +); + +118 +$a + = + `ex¶ode +('.', +$v®ue +); + +120 ià( + `couÁ +( +$a +) > 1) { + +123 iàÐ! + `is_num”ic +( +$a +[0])) { + +125 +$f›ld + = + `¬¿y_pÝ +( +$a +); + +126 +$»ã»nû + = + `im¶ode +('.', +$a +); + +127 +$v®ue + = +$this +-> +qu”y +-> + `g‘CÚÃùiÚ +()-> + `quÙeId’tif›r +( + +128 +$this +-> +qu”y +-> + `g‘SqlTabËAlŸs +( +$»ã»nû +). '.' . +$f›ld + + +136  +$v®ue +; + +137 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/Exception.php + +1 +_fž‹rs +[] = +$fž‹r +; + +58 +public + +funùiÚ + + $g‘ +( +$key +) + +60 iàÐ! + `is£t +( +$this +-> +_fž‹rs +[ +$key +])) { + +61 +throw + +Ãw + + `Doùrše_Qu”y_Exû±iÚ +('UnknowÀfž‹¸' . +$key +); + +63  +$this +-> +_fž‹rs +[ +$key +]; + +64 + } +} + +73 +public + +funùiÚ + + $£t +( +$key +, +Doùrše_Qu”y_Fž‹r + +$li¡’” +) + +75 +$this +-> +_fž‹rs +[ +$key +] = +$li¡’” +; + +76 + } +} + +87 +public + +funùiÚ + + $´eQu”y +( +Doùrše_Qu”y + +$qu”y +) + +89 + `fܗch + ( +$this +-> +_fž‹rs + +as + +$fž‹r +) { + +90 +$fž‹r +-> + `´eQu”y +( +$qu”y +); + +92 + } +} + +103 +public + +funùiÚ + + $po¡Qu”y +( +Doùrše_Qu”y + +$qu”y +) + +105 + `fܗch + ( +$this +-> +_fž‹rs + +as + +$fž‹r +) { + +106 +$fž‹r +-> + `po¡Qu”y +( +$qu”y +); + +108 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/Filter/Interface.php + +1 +_tok’iz” +-> + `b¿ck‘Ex¶ode +( +$¡r +, 'JOIN '); + +48 +$äom + = +$»tuº + ? + `¬¿y +(è: +nuÎ +; + +50 +$ݔ©Ü + = +çl£ +; + +52  + `Œim +( +$·¹s +[0])) { + +54 +$ݔ©Ü + = ':'; + +56 + `¬¿y_shiá +( +$·¹s +); + +60 +$Ï¡ + = ''; + +62 + `fܗch + ( +$·¹s + +as + +$k + => +$·¹ +) { + +63 +$·¹ + = + `Œim +($part); + +65 ià( + `em±y +( +$·¹ +)) { + +69 +$e + = + `ex¶ode +(' ', +$·¹ +); + +71 ià( + `’d +( +$e +) == 'INNER' ||ƒnd($e) == 'LEFT') { + +72 +$Ï¡ + = + `¬¿y_pÝ +( +$e +); + +74 +$·¹ + = + `im¶ode +(' ', +$e +); + +76 + `fܗch + ( +$this +-> +_tok’iz” +-> + `b¿ck‘Ex¶ode +( +$·¹ +, ','è +as + +$»ã»nû +) { + +77 +$»ã»nû + = + `Œim +($reference); + +78 +$e + = + `ex¶ode +(' ', +$»ã»nû +); + +79 +$e2 + = + `ex¶ode +('.', +$e +[0]); + +81 ià( +$ݔ©Ü +) { + +82 +$e +[0] = + `¬¿y_shiá +( +$e2 +è. +$ݔ©Ü + . + `im¶ode +('.', $e2); + +85 ià( +$»tuº +) { + +86 +$äom +[] = +$e +; + +88 +$bË + = +$this +-> +qu”y +-> + `lßd +( + `im¶ode +(' ', +$e +)); + +92 +$ݔ©Ü + = ( +$Ï¡ + == 'INNER') ? ':' : '.'; + +94  +$äom +; + +96 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/Groupby.php + +1 +_tok’iz” +-> + `þau£Ex¶ode +( +$þau£ +, + `¬¿y +(' ', '+', '-', '*', '/', '<', '>', '=', '>=', '<=')); + +45 +$¡r + = ''; + +47 + `fܗch + ( +$‹rms + +as + +$‹rm +) { + +48 +$pos + = + `¡½os +( +$‹rm +[0], '('); + +49 +$hasComma + = +çl£ +; + +51 ià( +$pos + !=ð +çl£ +) { + +52 +$Çme + = + `sub¡r +( +$‹rm +[0], 0, +$pos +); + +54 +$‹rm +[0] = +$this +-> +qu”y +-> + `·r£FunùiÚEx´essiÚ +($term[0]); + +56 ià( + `sub¡r +( +$‹rm +[0], 0, 1) !== "'" && substr($term[0], -1) !== "'") { + +58 ià( + `¡½os +( +$‹rm +[0], '.'è!=ð +çl£ +) { + +59 iàÐ! + `is_num”ic +( +$‹rm +[0])) { + +60 +$e + = + `ex¶ode +('.', +$‹rm +[0]); + +62 +$f›ld + = + `¬¿y_pÝ +( +$e +); + +65 ià(( +$pos + = + `¡½os +( +$f›ld +, ',')è!=ð +çl£ +) { + +66 +$f›ld + = + `sub¡r +($f›ld, 0, +$pos +); + +67 +$hasComma + = +Œue +; + +71 +$cÚn + = +$this +-> +qu”y +-> + `g‘CÚÃùiÚ +(); + +73 ià( +$this +-> +qu”y +-> + `g‘Ty³ +(è==ð +Doùrše_Qu”y +:: +SELECT +) { + +74 +$compڒtAlŸs + = + `im¶ode +('.', +$e +); + +76 ià( + `em±y +( +$compڒtAlŸs +)) { + +77 +$compڒtAlŸs + = +$this +-> +qu”y +-> + `g‘RoÙAlŸs +(); + +80 +$this +-> +qu”y +-> + `lßd +( +$compڒtAlŸs +); + +83 +$qu”yCompڒt + = +$this +-> +qu”y +-> + `g‘Qu”yCompڒt +( +$compڒtAlŸs +); + +85 +$bË + = +$qu”yCompڒt +['table']; + +87 +$def + = +$bË +-> + `g‘Defš™iÚOf +( +$f›ld +); + +90 +$f›ld + = +$bË +-> + `g‘CÞumnName +($field); + +93 iàÐ! +$def +) { + +94 +throw + +Ãw + + `Doùrše_Qu”y_Exû±iÚ +('UnknowÀcÞumÀ' . +$f›ld +); + +97 ià( + `is£t +( +$def +['owner'])) { + +98 +$compڒtAlŸs + = $compڒtAlŸ . '.' . +$def +['owner']; + +101 +$bËAlŸs + = +$this +-> +qu”y +-> + `g‘SqlTabËAlŸs +( +$compڒtAlŸs +); + +104 +$‹rm +[0] = +$cÚn +-> + `quÙeId’tif›r +( +$bËAlŸs +è. '.' . $cÚn->quÙeId’tif›r( +$f›ld +); + +107 +$f›ld + = +$this +-> +qu”y +-> + `g‘RoÙ +()-> + `g‘CÞumnName +($field); + +108 +$‹rm +[0] = +$cÚn +-> + `quÙeId’tif›r +( +$f›ld +); + +112 iàÐ! + `em±y +( +$‹rm +[0]) && + +113 ! + `is_num”ic +( +$‹rm +[0]) && + +114 +$‹rm +[0] !=ð'?' && + `sub¡r +($term[0], 0, 1) !== ':') { + +116 +$compڒtAlŸs + = +$this +-> +qu”y +-> + `g‘RoÙAlŸs +(); + +118 +$found + = +çl£ +; + +121 ià(( +$pos + = + `¡½os +( +$‹rm +[0], ',')è!=ð +çl£ +) { + +122 +$‹rm +[0] = + `sub¡r +($‹rm[0], 0, +$pos +); + +123 +$hasComma + = +Œue +; + +126 ià( +$compڒtAlŸs + !=ð +çl£ + && + +127 +$compڒtAlŸs + !=ð +nuÎ +) { + +128 +$qu”yCompڒt + = +$this +-> +qu”y +-> + `g‘Qu”yCompڒt +( +$compڒtAlŸs +); + +130 +$bË + = +$qu”yCompڒt +['table']; + +133 ià( +$bË +-> + `hasF›ld +( +$‹rm +[0])) { + +134 +$found + = +Œue +; + +136 +$def + = +$bË +-> + `g‘Defš™iÚOf +( +$‹rm +[0]); + +139 +$‹rm +[0] = +$bË +-> + `g‘CÞumnName +($term[0]); + +142 ià( + `is£t +( +$def +['owner'])) { + +143 +$compڒtAlŸs + = $compڒtAlŸ . '.' . +$def +['owner']; + +146 +$bËAlŸs + = +$this +-> +qu”y +-> + `g‘SqlTabËAlŸs +( +$compڒtAlŸs +); + +147 +$cÚn + = +$this +-> +qu”y +-> + `g‘CÚÃùiÚ +(); + +149 ià( +$this +-> +qu”y +-> + `g‘Ty³ +(è==ð +Doùrše_Qu”y +:: +SELECT +) { + +151 +$‹rm +[0] = +$cÚn +-> + `quÙeId’tif›r +( +$bËAlŸs +) + +152 . '.' . +$cÚn +-> + `quÙeId’tif›r +( +$‹rm +[0]); + +155 +$‹rm +[0] = +$cÚn +-> + `quÙeId’tif›r +($term[0]); + +158 +$found + = +çl£ +; + +162 iàÐ! +$found +) { + +163 +$‹rm +[0] = +$this +-> +qu”y +-> + `g‘SqlAgg»g©eAlŸs +($term[0]); + +170 +$¡r + .ð +$‹rm +[0] . ( +$hasComma + ? ',' : '') . $term[1]; + +173  +$¡r +; + +175 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/Having.php + +1 +_tok’iz” +-> + `b¿ck‘Trim +( +$func +); + +49 +$q + = +$this +-> +qu”y +-> + `ü—‹Subqu”y +()-> + `·r£DqlQu”y +( +$sub +, +çl£ +); + +50 +$sql + = +$q +-> + `g‘SqlQu”y +(); + +51 +$q +-> + `ä“ +(); + +52  '(' . +$sql + . ')'; + +55 ià( +$pos + !=ð +çl£ +) { + +56 +$funcs + = + `¬¿y +(); + +58 +$Çme + = + `sub¡r +( +$func +, 0, +$pos +); + +59 +$func + = + `sub¡r +($func, ( +$pos + + 1), -1); + +60 +$·¿ms + = +$this +-> +_tok’iz” +-> + `b¿ck‘Ex¶ode +( +$func +, ',', '(', ')'); + +62 + `fܗch + ( +$·¿ms + +as + +$k + => +$·¿m +) { + +63 +$·¿ms +[ +$k +] = +$this +-> + `·r£Agg»g©eFunùiÚ +( +$·¿m +); + +66 +$funcs + = +$Çme + . '(' . + `im¶ode +(', ', +$·¿ms +) . ')'; + +68  +$funcs +; + +70  +$this +-> + `_·r£AlŸ£s +( +$func +); + +81 +fš® + +´iv©e + +funùiÚ + + $_·r£AlŸ£s +( +$v®ue +) + +83 iàÐ! + `is_num”ic +( +$v®ue +)) { + +84 +$a + = + `ex¶ode +('.', +$v®ue +); + +86 ià( + `couÁ +( +$a +) > 1) { + +87 +$f›ld + = + `¬¿y_pÝ +( +$a +); + +88 +$»f + = + `im¶ode +('.', +$a +); + +89 +$m­ + = +$this +-> +qu”y +-> + `lßd +( +$»f +, +çl£ +); + +90 +$f›ld + = +$m­ +['bË']-> + `g‘CÞumnName +($field); + +91 +$v®ue + = +$this +-> +qu”y +-> + `g‘CÚÃùiÚ +()-> + `quÙeId’tif›r +($this->qu”y-> + `g‘SqlTabËAlŸs +( +$»f +è. '.' . +$f›ld +); + +93 +$f›ld + = + `’d +( +$a +); + +94 ià( +$this +-> +qu”y +-> + `hasSqlAgg»g©eAlŸs +( +$f›ld +)) { + +95 +$v®ue + = +$this +-> +qu”y +-> + `g‘SqlAgg»g©eAlŸs +( +$f›ld +); + +100  +$v®ue +; + +101 + } +} + +110 +fš® + +public + +funùiÚ + + $lßd +( +$havšg +) + +112 +$tok’s + = +$this +-> +_tok’iz” +-> + `b¿ck‘Ex¶ode +( +$havšg +, ' ', '(', ')'); + +113 +$·¹ + = +$this +-> + `·r£Agg»g©eFunùiÚ +( + `¬¿y_shiá +( +$tok’s +)); + +114 +$ݔ©Ü + = + `¬¿y_shiá +( +$tok’s +); + +115 +$v®ue + = + `im¶ode +(' ', +$tok’s +); + +118 +$v®ue + = +$this +-> + `·r£Agg»g©eFunùiÚ +($value); + +120 +$·¹ + .ð' ' . +$ݔ©Ü + . ' ' . +$v®ue +; + +122  +$·¹ +; + +123 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/JoinCondition.php + +1 +_tok’iz” +-> + `sqlEx¶ode +( +$cÚd™iÚ +); + +40 + `fܗch + ( +$e + +as + +$k + => +$v +) { + +41 iàÐ! +$v +) { + +42 + `un£t +( +$e +[ +$k +]); + +45 +$e + = + `¬¿y_v®ues +($e); + +47 ià(( +$l + = + `couÁ +( +$e +)) > 2) { + +48 +$ËáEx´ + = +$this +-> +qu”y +-> + `·r£CÏu£ +( +$e +[0]); + +49 +$ݔ©Ü + = +$e +[1]; + +51 ià( +$l + == 4) { + +54 +$ݔ©Ü + .ð' ' . +$e +[2]; + +55 +$e +[2] = $e[3]; + +57 + `un£t +( +$e +[3]); + +58 } ià( +$l + >= 5) { + +61 +$e +[2] .= ' ' . $e[3] . ' ' . $e[4]; + +63 + `un£t +( +$e +[3], $e[4]); + +66 ià( + `sub¡r +( + `Œim +( +$e +[2]), 0, 1) != '(') { + +67 +$ex´ + = +Ãw + + `Doùrše_Ex´essiÚ +( +$e +[2], +$this +-> +qu”y +-> + `g‘CÚÃùiÚ +()); + +68 +$e +[2] = +$ex´ +-> + `g‘Sql +(); + +72 +$rightM©ches + = + `¬¿y +(); + +73 +$hasRightAggEx´essiÚ + = +$this +-> + `_´oûssPossibËAggEx´essiÚ +( +$e +[2], +$rightM©ches +); + +76 +$v®ue + = +$e +[2]; + +78 ià( + `sub¡r +( +$v®ue +, 0, 1) == '(') { + +80 +$Œimmed + = +$this +-> +_tok’iz” +-> + `b¿ck‘Trim +( +$v®ue +); + +81 +$Œimmed_uµ” + = + `¡¹ouµ” +( +$Œimmed +); + +83 ià( + `sub¡r +( +$Œimmed_uµ” +, 0, 4) == 'FROM' || substr($trimmed_upper, 0, 6) == 'SELECT') { + +85 +$q + = +$this +-> +qu”y +-> + `ü—‹Subqu”y +() + +86 -> + `·r£DqlQu”y +( +$Œimmed +, +çl£ +); + +87 +$v®ue + = '(' . +$q +-> + `g‘SqlQu”y +() . ')'; + +88 +$q +-> + `ä“ +(); + +89 } + `–£if + ( + `sub¡r +( +$Œimmed_uµ” +, 0, 4) == 'SQL:') { + +92 +$v®ue + = + `sub¡r +( +$Œimmed +, 4); + +95 +$e + = +$this +-> +_tok’iz” +-> + `sqlEx¶ode +( +$Œimmed +, ','); + +96 +$v®ue + = + `¬¿y +(); + +98 + `fܗch + ( +$e + +as + +$·¹ +) { + +99 +$v®ue +[] = +$this +-> + `·r£L™”®V®ue +( +$·¹ +); + +102 +$v®ue + = '(' . + `im¶ode +(', ', $value) . ')'; + +104 } + `–£if + ( ! +$hasRightAggEx´essiÚ +) { + +107 +$e + = +$this +-> +_tok’iz” +-> + `b¿ck‘Ex¶ode +( +$v®ue +, + `¬¿y +(' AND ', ' \&\& '), '(', ')'); + +108 +$v®ue + = + `¬¿y +(); + +110 + `fܗch + ( +$e + +as + +$·¹ +) { + +111 +$v®ue +[] = +$this +-> + `·r£L™”®V®ue +( +$·¹ +); + +114 +$v®ue + = + `im¶ode +(' AND ', $value); + +117 ià( +$hasRightAggEx´essiÚ +) { + +118 +$rightEx´ + = +$rightM©ches +[1] . '(' . +$v®ue + . ')' . $rightMatches[3]; + +119 +$rightEx´ + = +$this +-> +qu”y +-> + `·r£CÏu£ +($rightExpr); + +121 +$rightEx´ + = +$v®ue +; + +124 +$cÚd™iÚ + = +$ËáEx´ + . ' ' . +$ݔ©Ü + . ' ' . +$rightEx´ +; + +126  +$cÚd™iÚ +; + +129 +$·r£r + = +Ãw + + `Doùrše_Qu”y_Wh”e +( +$this +-> +qu”y +, $this-> +_tok’iz” +); + +131  +$·r£r +-> + `·r£ +( +$cÚd™iÚ +); + +135 +´Ùeùed + +funùiÚ + + `_´oûssPossibËAggEx´essiÚ +(& +$ex´ +, & +$m©ches + = + $¬¿y +()) + +137 +$hasAggEx´ + = + `´eg_m©ch +('/(.*[^\s\(\=])\(([^\)]*)\)(.*)/', +$ex´ +, +$m©ches +); + +139 ià( +$hasAggEx´ +) { + +140 +$ex´ + = +$m©ches +[2]; + +143 ià( + `sub¡r +( + `Œim +( +$m©ches +[3]), 0, 1) == ',') { + +144 +$x¶od + = +$this +-> +_tok’iz” +-> + `sqlEx¶ode +( + `Œim +( +$m©ches +[3], ' )'), ','); + +146 +$m©ches +[3] = + `¬¿y +(); + +148 + `fܗch + ( +$x¶od + +as + +$·¹ +) { + +149 ià( +$·¹ + != '') { + +150 +$m©ches +[3][] = +$this +-> + `·r£L™”®V®ue +( +$·¹ +); + +154 +$m©ches +[3] = '), ' . + `im¶ode +(', ', $matches[3]); + +158  +$hasAggEx´ +; + +159 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/Limit.php + +1 +_tok’iz” +-> + `þau£Ex¶ode +( +$þau£ +, + `¬¿y +(' ', ',', '+', '-', '*', '/', '<', '>', '=', '>=', '<=')); + +45 +$¡r + = ''; + +47 + `fܗch + ( +$‹rms + +as + +$‹rm +) { + +48 +$pos + = + `¡½os +( +$‹rm +[0], '('); + +49 +$hasComma + = +çl£ +; + +51 ià( +$pos + !=ð +çl£ +) { + +52 +$Çme + = + `sub¡r +( +$‹rm +[0], 0, +$pos +); + +54 +$‹rm +[0] = +$this +-> +qu”y +-> + `·r£FunùiÚEx´essiÚ +($‹rm[0], + `¬¿y +($this, 'parse')); + +56 ià( + `sub¡r +( +$‹rm +[0], 0, 1) !== "'" && substr($term[0], -1) !== "'") { + +58 ià( + `¡½os +( +$‹rm +[0], '.'è!=ð +çl£ +) { + +59 iàÐ! + `is_num”ic +( +$‹rm +[0])) { + +60 +$e + = + `ex¶ode +('.', +$‹rm +[0]); + +62 +$f›ld + = + `¬¿y_pÝ +( +$e +); + +65 ià(( +$pos + = + `¡½os +( +$f›ld +, ',')è!=ð +çl£ +) { + +66 +$f›ld + = + `sub¡r +($f›ld, 0, +$pos +); + +67 +$hasComma + = +Œue +; + +71 +$cÚn + = +$this +-> +qu”y +-> + `g‘CÚÃùiÚ +(); + +73 ià( +$this +-> +qu”y +-> + `g‘Ty³ +(è==ð +Doùrše_Qu”y +:: +SELECT +) { + +74 +$compڒtAlŸs + = + `im¶ode +('.', +$e +); + +76 ià( + `em±y +( +$compڒtAlŸs +)) { + +77 +$compڒtAlŸs + = +$this +-> +qu”y +-> + `g‘RoÙAlŸs +(); + +80 +$this +-> +qu”y +-> + `lßd +( +$compڒtAlŸs +); + +83 +$qu”yCompڒt + = +$this +-> +qu”y +-> + `g‘Qu”yCompڒt +( +$compڒtAlŸs +); + +85 +$bË + = +$qu”yCompڒt +['table']; + +87 +$def + = +$bË +-> + `g‘Defš™iÚOf +( +$f›ld +); + +90 +$f›ld + = +$bË +-> + `g‘CÞumnName +($field); + +93 iàÐ! +$def +) { + +94 +throw + +Ãw + + `Doùrše_Qu”y_Exû±iÚ +('UnknowÀcÞumÀ' . +$f›ld +); + +97 ià( + `is£t +( +$def +['owner'])) { + +98 +$compڒtAlŸs + = $compڒtAlŸ . '.' . +$def +['owner']; + +101 +$bËAlŸs + = +$this +-> +qu”y +-> + `g‘SqlTabËAlŸs +( +$compڒtAlŸs +); + +104 +$‹rm +[0] = +$cÚn +-> + `quÙeId’tif›r +( +$bËAlŸs +è. '.' . $cÚn->quÙeId’tif›r( +$f›ld +); + +107 +$‹rm +[0] = + `m‘hod_exi¡s +( +$cÚn +, 'modifyOrd”ByCÞumn'è? $cÚn-> + `modifyOrd”ByCÞumn +( +$bË +, +$f›ld +, $term[0]) : $term[0]; + +110 +$f›ld + = +$this +-> +qu”y +-> + `g‘RoÙ +()-> + `g‘CÞumnName +($field); + +111 +$‹rm +[0] = +$cÚn +-> + `quÙeId’tif›r +( +$f›ld +); + +115 iàÐ! + `em±y +( +$‹rm +[0]) && + +116 ! + `is_num”ic +( +$‹rm +[0]) && + +117 +$‹rm +[0] !=ð'?' && + `sub¡r +($term[0], 0, 1) !== ':') { + +119 +$compڒtAlŸs + = +$this +-> +qu”y +-> + `g‘RoÙAlŸs +(); + +121 +$found + = +çl£ +; + +124 ià(( +$pos + = + `¡½os +( +$‹rm +[0], ',')è!=ð +çl£ +) { + +125 +$‹rm +[0] = + `sub¡r +($‹rm[0], 0, +$pos +); + +126 +$hasComma + = +Œue +; + +129 ià( +$compڒtAlŸs + !=ð +çl£ + && + +130 +$compڒtAlŸs + !=ð +nuÎ +) { + +131 +$qu”yCompڒt + = +$this +-> +qu”y +-> + `g‘Qu”yCompڒt +( +$compڒtAlŸs +); + +133 +$bË + = +$qu”yCompڒt +['table']; + +136 ià( +$bË +-> + `hasF›ld +( +$‹rm +[0])) { + +137 +$found + = +Œue +; + +139 +$def + = +$bË +-> + `g‘Defš™iÚOf +( +$‹rm +[0]); + +142 +$f›ld + = +$bË +-> + `g‘CÞumnName +( +$‹rm +[0]); + +145 ià( + `is£t +( +$def +['owner'])) { + +146 +$compڒtAlŸs + = $compڒtAlŸ . '.' . +$def +['owner']; + +149 +$bËAlŸs + = +$this +-> +qu”y +-> + `g‘SqlTabËAlŸs +( +$compڒtAlŸs +); + +150 +$cÚn + = +$this +-> +qu”y +-> + `g‘CÚÃùiÚ +(); + +152 ià( +$this +-> +qu”y +-> + `g‘Ty³ +(è==ð +Doùrše_Qu”y +:: +SELECT +) { + +154 +$‹rm +[0] = +$cÚn +-> + `quÙeId’tif›r +( +$bËAlŸs +) + +155 . '.' . +$cÚn +-> + `quÙeId’tif›r +( +$f›ld +); + +158 +$‹rm +[0] = +$cÚn +-> + `quÙeId’tif›r +( +$f›ld +); + +162 +$‹rm +[0] = + `m‘hod_exi¡s +( +$cÚn +, 'modifyOrd”ByCÞumn'è? $cÚn-> + `modifyOrd”ByCÞumn +( +$bË +, +$f›ld +, $term[0]) : $term[0]; + +164 +$found + = +çl£ +; + +168 iàÐ! +$found +) { + +169 +$tmp + = + `¡¹ouµ” +( + `Œim +( +$‹rm +[0], ', ')); + +171 ià( +$tmp + !== 'DESC' && $tmp !== 'ASC') { + +172 +$‹rm +[0] = +$this +-> +qu”y +-> + `g‘SqlAgg»g©eAlŸs +($term[0]); + +180 +$¡r + .ð +$‹rm +[0] . ( +$hasComma + ? ',' : '') . $term[1]; + +183  +$¡r +; + +185 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/Parser.php + +1 +qu”y + = +$qu”y +; + +49 iàÐ! +$tok’iz” +) { + +50 +$tok’iz” + = +Ãw + + `Doùrše_Qu”y_Tok’iz” +(); + +52 +$this +-> +_tok’iz” + = +$tok’iz” +; + +58 +public + +funùiÚ + + $g‘Qu”y +() + +60  +$this +-> +qu”y +; + +61 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/Registry.php + +1 +_qu”›s +[ +$key +] = +$qu”y +; + +48 +$e + = + `ex¶ode +('/', +$key +); + +50 +$this +-> +_qu”›s +[ +$e +[0]][$e[1]] = +$qu”y +; + +54 +public + +funùiÚ + + $g‘ +( +$key +, +$Çme¥aû + = +nuÎ +) + +56 ià( + `is£t +( +$Çme¥aû +)) { + +57 iàÐ! + `is£t +( +$this +-> +_qu”›s +[ +$Çme¥aû +][ +$key +])) { + +58 +throw + +Ãw + + `Doùrše_Qu”y_Regi¡ry_Exû±iÚ +('A qu”y w™hhÇm' . +$Çme¥aû + . '/' . +$key + . ' does‚otƒxist.'); + +60 +$qu”y + = +$this +-> +_qu”›s +[ +$Çme¥aû +][ +$key +]; + +62 iàÐ! + `is£t +( +$this +-> +_qu”›s +[ +$key +])) { + +63 +throw + +Ãw + + `Doùrše_Qu”y_Regi¡ry_Exû±iÚ +('A qu”y w™hhÇm' . +$key + . ' does‚otƒxist.'); + +65 +$qu”y + = +$this +-> +_qu”›s +[ +$key +]; + +68 iàÐ! ( +$qu”y + +š¡ªûof + +Doùrše_Qu”y +)) { + +69 +$qu”y + = +Doùrše_Qu”y +:: + `ü—‹ +() + +70 -> + `·r£DqlQu”y +( +$qu”y +); + +73  +þÚe + +$qu”y +; + +74 + } +} + +77 +public + +funùiÚ + + $has +( +$key +, +$Çme¥aû + = +nuÎ +) + +79  + `is£t +( +$Çme¥aû +) + +80 ? + `is£t +( +$this +-> +_qu”›s +[ +$Çme¥aû +][ +$key +]) + +81 : + `is£t +( +$this +-> +_qu”›s +[ +$key +]); + +82 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/Registry/Exception.php + +1 +qu”y +-> + `·r£S–eù +( +$dql +); + +39 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/Set.php + +1 +_tok’iz” +-> + `sqlEx¶ode +( +$dql +, ' '); + +38 +$‹rmsT¿n¦©iÚ + = + `¬¿y +(); + +40 + `fܗch + ( +$‹rms + +as + +$‹rm +) { + +41 +$‹rmOrigš® + = +$‹rm +; + +44 +$m©ches + = + `¬¿y +(); + +45 +$hasAggEx´essiÚ + = +$this +-> + `_´oûssPossibËAggEx´essiÚ +( +$‹rm +, +$m©ches +); + +47 +$láEx´ + = (( +$hasAggEx´essiÚ +è? +$m©ches +[1] . '(' : ''); + +48 +$rgtEx´ + = (( +$hasAggEx´essiÚ +è? +$m©ches +[3] . ')' : ''); + +50 + `´eg_m©ch_®l +("/^([a-zA-Z0-9_]+[\.[a-zA-Z0-9_]+]*)(\sAS\s[a-zA-Z0-9_]+)?/i", +$‹rm +, +$m +, +PREG_SET_ORDER +); + +52 ià( + `is£t +( +$m +[0])) { + +53 +$´oûs£d + = + `¬¿y +(); + +55 + `fܗch + ( +$m + +as + +$p›û +) { + +56 +$·¹ + = +$p›û +[1]; + +57 +$e + = + `ex¶ode +('.', + `Œim +( +$·¹ +)); + +59 +$f›ldName + = + `¬¿y_pÝ +( +$e +); + +60 +$»ã»nû + = ( + `couÁ +( +$e +è> 0è? + `im¶ode +('.', $eè: +$this +-> +qu”y +-> + `g‘RoÙAlŸs +(); + +61 +$®ŸsM­ + = +$this +-> +qu”y +-> + `g‘Qu”yCompڒt +( +$»ã»nû +); + +63 ià( +$®ŸsM­ +['bË']-> + `hasF›ld +( +$f›ldName +)) { + +64 +$cÞumnName + = +$®ŸsM­ +['bË']-> + `g‘CÞumnName +( +$f›ldName +); + +65 +$cÞumnName + = +$®ŸsM­ +['bË']-> + `g‘CÚÃùiÚ +()-> + `quÙeId’tif›r +($columnName); + +67 +$·¹ + = +$cÞumnName +; + +70 +$´oûs£d +[] = +$·¹ + . ( + `is£t +( +$p›û +[2]) ? $piece[2] : ''); + +73 +$‹rmsT¿n¦©iÚ +[ +$‹rmOrigš® +] = +$láEx´ + . + `im¶ode +(' ', +$´oûs£d +è. +$rgtEx´ +; + +77  + `¡¹r +( +$dql +, +$‹rmsT¿n¦©iÚ +); + +81 +´Ùeùed + +funùiÚ + + `_´oûssPossibËAggEx´essiÚ +(& +$ex´ +, & +$m©ches + = + $¬¿y +()) + +83 +$hasAggEx´ + = + `´eg_m©ch +('/(.*[^\s\(\=])\(([^\)]*)\)(.*)/', +$ex´ +, +$m©ches +); + +85 ià( +$hasAggEx´ +) { + +86 +$ex´ + = +$m©ches +[2]; + +89 ià( + `sub¡r +( + `Œim +( +$m©ches +[3]), 0, 1) == ',') { + +90 +$x¶od + = +$this +-> +_tok’iz” +-> + `sqlEx¶ode +( + `Œim +( +$m©ches +[3], ' )'), ','); + +92 +$m©ches +[3] = + `¬¿y +(); + +94 + `fܗch + ( +$x¶od + +as + +$·¹ +) { + +95 ià( +$·¹ + != '') { + +96 +$m©ches +[3][] = +$this +-> + `·r£L™”®V®ue +( +$·¹ +); + +100 +$m©ches +[3] = '), ' . + `im¶ode +(', ', $matches[3]); + +104  +$hasAggEx´ +; + +105 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/Tokenizer.php + +1 + `sqlEx¶ode +( +$qu”y +, ' '); + +62 +$·¹s + = + `¬¿y +(); + +64 + `fܗch + ( +$tok’s + +as + +$šdex + => +$tok’ +) { + +65 +$tok’ + = + `Œim +($token); + +67  + `¡¹Þow” +( +$tok’ +)) { + +77 +$p + = +$tok’ +; + +79 +$·¹s +[ +$tok’ +] = ''; + +84 +$i + = ( +$šdex + + 1); + +85 ià( + `is£t +( +$tok’s +[ +$i +]è&& + `¡¹Þow” +($tokens[$i]) === 'by') { + +86 +$p + = +$tok’ +; + +87 +$·¹s +[ +$tok’ +] = ''; + +90 +$·¹s +[ +$p +] .= "$token "; + +99 iàÐ! + `is£t +( +$p +)) { + +100 +throw + +Ãw + + `Doùrše_Qu”y_Tok’iz”_Exû±iÚ +( + +105 +$·¹s +[ +$p +] .= "$token "; + +110  +$·¹s +; + +122 +public + +funùiÚ + + `b¿ck‘Trim +( +$¡r +, +$e1 + = '(', +$e2 + = ')') + +124 ià( + `sub¡r +( +$¡r +, 0, 1è==ð +$e1 + && sub¡r($¡r, -1è==ð +$e2 +) { + +125  + `sub¡r +( +$¡r +, 1, -1); + +127  +$¡r +; + +129 + } +} + +152 +public + +funùiÚ + +b¿ck‘Ex¶ode +( +$¡r +, +$d + = ' ', +$e1 + = '(', +$e2 + = ')') + +154 ià( +is_¡ršg +( +$d +)) { + +155 +$d + = +¬¿y +($d); + +159 + g$»gexp + = +$this +-> +g‘S¶™RegExpFromA¼ay +( +$d +) . 'i'; + +160 + g$‹rms + = +$this +-> +þau£Ex¶odeRegExp +( +$¡r +, +$»gexp +, +$e1 +, +$e2 +); + +162 + g$»s + = +¬¿y +(); + +165 +fܗch + ( +$‹rms + +as + +$v®ue +) { + +166 + g$»s +[] = +Œim +( +$v®ue +[0]); + +169  + g$»s +; + +191 +public + +funùiÚ + +quÙeEx¶ode +( +$¡r +, +$d + = ' ') + +193 ià( +is_¡ršg +( +$d +)) { + +194 +$d + = +¬¿y +($d); + +198 + g$»gexp + = +$this +-> +g‘S¶™RegExpFromA¼ay +( +$d +) . 'i'; + +199 + g$‹rms + = +$this +-> +þau£Ex¶odeCouÁB¿ck‘s +( +$¡r +, +$»gexp +); + +201 + g$»s + = +¬¿y +(); + +203 +fܗch + ( +$‹rms + +as + +$v® +) { + +204 + g$»s +[] = +Œim +( +$v® +[0]); + +207  + g$»s +; + +239 +public + +funùiÚ + +sqlEx¶ode +( +$¡r +, +$d + = ' ', +$e1 + = '(', +$e2 + = ')') + +241 ià( +is_¡ršg +( +$d +)) { + +242 +$d + = +¬¿y +($d); + +245 + g$‹rms + = +$this +-> +þau£Ex¶ode +( +$¡r +, +$d +, +$e1 +, +$e2 +); + +246 + g$»s + = +¬¿y +(); + +248 +fܗch + ( +$‹rms + +as + +$v®ue +) { + +249 + g$»s +[] = +Œim +( +$v®ue +[0]); + +252  + g$»s +; + +285 +public + +funùiÚ + +þau£Ex¶ode +( +$¡r +, +¬¿y + +$d +, +$e1 + = '(', +$e2 + = ')') + +287 +$»gexp + = +$this +-> +g‘S¶™RegExpFromA¼ay +( +$d +); + +289  + g$this +-> +þau£Ex¶odeRegExp +( +$¡r +, +$»gexp +, +$e1 +, +$e2 +); + +300 +´iv©e + +funùiÚ + + $g‘S¶™RegExpFromA¼ay +( +¬¿y + +$d +) + +302 + `fܗch + ( +$d + +as + +$key + => +$¡ršg +) { + +303 +$esÿ³dSŒšg + = + `´eg_quÙe +( +$¡ršg +); + +304 ià( + `´eg_m©ch +('#^\w+$#', +$¡ršg +)) { + +305 +$esÿ³dSŒšg + = "\W$escapedString\W"; + +307 +$d +[ +$key +] = +$esÿ³dSŒšg +; + +310 ià( + `š_¬¿y +(' ', +$d +)) { + +311 +$d +[] = '\s'; + +314  '#(' . + `im¶ode +('|', +$d +) . ')#'; + +315 + } +} + +327 +´iv©e + +funùiÚ + +þau£Ex¶odeRegExp +( +$¡r +, +$»gexp +, +$e1 + = '(', +$e2 + = ')') + +329 +$‹rms + = +$this +-> +þau£Ex¶odeCouÁB¿ck‘s +( +$¡r +, +$»gexp +, +$e1 +, +$e2 +); + +330 + g$‹rms + = +$this +-> +m”geB¿ck‘T”ms +( +$‹rms +); + +333 +fܗch + ( +$‹rms + +as + & +$v® +) { + +334 +un£t +( +$v® +[2]); + +337  + g$‹rms +; + +350 +´iv©e + +funùiÚ + +þau£Ex¶odeCouÁB¿ck‘s +( +$¡r +, +$»gexp +, +$e1 + = '(', +$e2 + = ')') + +352 +$quÙeT”ms + = +$this +-> +quÙedSŒšgEx¶ode +( +$¡r +); + +353 + g$‹rms + = +¬¿y +(); + +354 + g$i + = 0; + +356 +fܗch + ( +$quÙeT”ms + +as + +$key + => +$v® +) { + +357 ià( +$key + & 1) { + +360 ià( +$‹rms +[ +$i + - 1][1] == '') { + +361 +$‹rms +[ +$i + - 1][0] .ð +$v® +; + +363 + g$‹rms +[ +$i +++] = +¬¿y +( +$v® +, '', 0); + +367 + g$sub‹rms + = +$this +-> +þau£Ex¶odeNÚQuÙed +( +$v® +, +$»gexp +); + +369 +fܗch + ( +$sub‹rms + +as + & +$sub +) { + +370 + g$c1 + = +sub¡r_couÁ +( +$sub +[0], +$e1 +); + +371 + g$c2 + = +sub¡r_couÁ +( +$sub +[0], +$e2 +); + +373 + g$sub +[2] = +$c1 + - +$c2 +; + +377 ià( + g$i + > 0 && + g$‹rms +[ +$i + - 1][1] == '') { + +378 +$fœ¡ + = +¬¿y_shiá +( +$sub‹rms +); + +379 + g$idx + = +$i + - 1; + +381 + g$‹rms +[ +$idx +][0] .ð +$fœ¡ +[0]; + +382 + g$‹rms +[ +$idx +][1] = +$fœ¡ +[1]; + +383 + g$‹rms +[ +$idx +][2] +ð +$fœ¡ +[2]; + +386 + g$‹rms + = +¬¿y_m”ge +( +$‹rms +, +$sub‹rms +); + +387 + g$i + +ð( +$sub‹rms +); + +391  + g$‹rms +; + +425 +´iv©e + +funùiÚ + + $þau£Ex¶odeNÚQuÙed +( +$¡r +, +$»gexp +) + +427 +$¡r + = + `´eg_¥l™ +( +$»gexp +, $¡r, -1, +PREG_SPLIT_DELIM_CAPTURE +); + +428 +$‹rm + = + `¬¿y +(); + +429 +$i + = 0; + +431 + `fܗch + ( +$¡r + +as + +$key + => +$v® +) { + +433 iàÐ! ( +$key + & 1)) { + +434 +$‹rm +[ +$i +] = + `¬¿y +( +$v® +, ''); + +436 +$‹rm +[ +$i +++][1] = +$v® +; + +440  +$‹rm +; + +441 + } +} + +472 +´iv©e + +funùiÚ + + $m”geB¿ck‘T”ms +( +¬¿y + +$‹rms +) + +474 +$»s + = + `¬¿y +(); + +475 +$i + = 0; + +477 + `fܗch + ( +$‹rms + +as + +$v® +) { + +478 iàÐ! + `is£t +( +$»s +[ +$i +])) { + +479 +$»s +[ +$i +] = + `¬¿y +( +$v® +[0], $val[1], $val[2]); + +481 +$»s +[ +$i +][0] .ð$»s[$i][1] . +$v® +[0]; + +482 +$»s +[ +$i +][1] = +$v® +[1]; + +483 +$»s +[ +$i +][2] +ð +$v® +[2]; + +487 ià( +$»s +[ +$i +][2] == 0) { + +488 +$i +++; + +492  +$»s +; + +493 + } +} + +513 +public + +funùiÚ + + $quÙedSŒšgEx¶ode +( +$¡r +) + +516 +$¥l™ + = + `¬¿y_m­ +('´eg_quÙe', + `¬¿y +("\\'","''","'", "\\\"", "\"\"", "\"")); + +517 +$¥l™ + = '#(' . + `im¶ode +('|', $split) . ')#'; + +518 +$¡r + = + `´eg_¥l™ +( +$¥l™ +, $¡r, -1, +PREG_SPLIT_DELIM_CAPTURE +); + +520 +$·¹s + = + `¬¿y +(); + +521 +$mode + = +çl£ +; + +522 +$i + = 0; + +524 + `fܗch + ( +$¡r + +as + +$key + => +$v® +) { + +526 ià( +$key + & 1) { + +527 iàÐ! +$mode +) { + +528 ià( +$v® + == "'" || $val == "\"") { + +529 +$mode + = +$v® +; + +530 +$i +++; + +532 } ià( +$mode + =ð +$v® +) { + +533 iàÐ! + `is£t +( +$·¹s +[ +$i +])) { + +534 +$·¹s +[ +$i +] = +$v® +; + +536 +$·¹s +[ +$i +] .ð +$v® +; + +539 +$mode + = +çl£ +; + +540 +$i +++; + +546 iàÐ! + `is£t +( +$·¹s +[ +$i +])) { + +547 +$·¹s +[ +$i +] = +$v® +; + +549 +$·¹s +[ +$i +] .ð +$v® +; + +553  +$·¹s +; + +554 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Query/Tokenizer/Exception.php + +1 +_tok’iz” +-> + `b¿ck‘Trim +( + `Œim +($where)); + +46 +$cÚn + = +$this +-> +qu”y +-> + `g‘CÚÃùiÚ +(); + +47 +$‹rms + = +$this +-> +_tok’iz” +-> + `sqlEx¶ode +( +$wh”e +); + +49 ià( + `couÁ +( +$‹rms +) > 1) { + +50 ià( + `sub¡r +( +$wh”e +, 0, 6) == 'EXISTS') { + +51  +$this +-> + `·r£Exi¡s +( +$wh”e +, +Œue +); + +52 } + `–£if + ( + `´eg_m©ch +('/^NOT\s+EXISTS\b/i', +$wh”e +) !== 0) { + +53  +$this +-> + `·r£Exi¡s +( +$wh”e +, +çl£ +); + +57 ià( + `couÁ +( +$‹rms +) < 3) { + +58 +$‹rms + = +$this +-> +_tok’iz” +-> + `sqlEx¶ode +( +$wh”e +, + `¬¿y +('=', '<', '<>', '>', '!=')); + +61 ià( + `couÁ +( +$‹rms +) > 1) { + +62 +$ËáEx´ + = + `¬¿y_shiá +( +$‹rms +); + +63 +$rightEx´ + = + `¬¿y_pÝ +( +$‹rms +); + +64 +$ݔ©Ü + = + `Œim +( + `sub¡r +( +$wh”e +, + `¡¾’ +( +$ËáEx´ +), -¡¾’( +$rightEx´ +))); + +66 ià( + `¡½os +( +$ËáEx´ +, "'"è==ð +çl£ + && strpos($leftExpr, '(') === false) { + +68 +$a + = + `ex¶ode +('.', +$ËáEx´ +); + +69 +$f›ldÇme + = + `¬¿y_pÝ +( +$a +); + +70 +$»ã»nû + = + `im¶ode +('.', +$a +); + +72 ià( + `em±y +( +$»ã»nû +)) { + +73 +$m­ + = +$this +-> +qu”y +-> + `g‘RoÙDeþ¬©iÚ +(); + +74 +$®Ÿs + = +$this +-> +qu”y +-> + `g‘SqlTabËAlŸs +($this->qu”y-> + `g‘RoÙAlŸs +()); + +76 +$m­ + = +$this +-> +qu”y +-> + `lßd +( +$»ã»nû +, +çl£ +); + +77 +$®Ÿs + = +$this +-> +qu”y +-> + `g‘SqlTabËAlŸs +( +$»ã»nû +); + +83 +$driv”Name + = + `¡¹Þow” +( +$cÚn +-> + `g‘Driv”Name +()); + +84 ià( +$driv”Name + =ð'mssql' && ! + `em±y +( +$»ã»nû +)) { + +85 +$cmp + = +$this +-> +qu”y +-> + `g‘Qu”yCompڒt +( +$»ã»nû +); + +86 +$bË + = +$cmp +['table']; + +89 +$cÞumn + = +$bË +-> + `g‘CÞumnName +( +$f›ldÇme +); + +90 +$cÞumndef + = +$bË +-> + `g‘CÞumnDefš™iÚ +( +$cÞumn +); + +92 ià( +$cÞumndef +['ty³'] =ð'¡ršg' && ($cÞumndef['Ëngth'] =ð +NULL + || $cÞumndef['Ëngth'] > +$cÚn +-> +v¬ch¬_max_Ëngth +)) { + +93 +$ݔ©Ü + = 'LIKE'; + +98 +$sql + = +$this +-> + `_buždSql +( +$ËáEx´ +, +$ݔ©Ü +, +$rightEx´ +); + +100  +$sql +; + +102  +$wh”e +; + +107 +´Ùeùed + +funùiÚ + + $_buždSql +( +$ËáEx´ +, +$ݔ©Ü +, +$rightEx´ +) + +109 +$ËáEx´Origš® + = +$ËáEx´ +; + +110 +$ËáEx´ + = +$this +-> +qu”y +-> + `·r£CÏu£ +($leftExpr); + +113 ià('BETWEEN' =ð + `¡¹ouµ” +( + `sub¡r +( +$ݔ©Ü +, 0, 7))) { + +114 +$midEx´ + = + `Œim +( + `sub¡r +( +$ݔ©Ü +, 7, -3)); + +115 +$ݔ©Ü + = 'BETWEEN ' . +$this +-> +qu”y +-> + `·r£CÏu£ +( +$midEx´ +) . ' AND'; + +119 ià('NOT BETWEEN' =ð + `¡¹ouµ” +( + `sub¡r +( +$ݔ©Ü +, 0, 11))) { + +120 +$midEx´ + = + `Œim +( + `sub¡r +( +$ݔ©Ü +, 11, -3)); + +121 +$ݔ©Ü + = 'NOT BETWEEN ' . +$this +-> +qu”y +-> + `·r£CÏu£ +( +$midEx´ +) . ' AND'; + +124 +$Ý + = + `¡¹Þow” +( +$ݔ©Ü +); + +125 +$isInX + = ( +$Ý + == 'in' || $op == 'not in'); + +128 ià( + `sub¡r +( +$rightEx´ +, 0 , 1è=ð':' && +$isInX +) { + +129 +throw + +Ãw + + `Doùrše_Qu”y_Exû±iÚ +( + +130 'CªnÙ u£ ' . +$ݔ©Ü + . ' with‡‚amed…arameter in "' . + +131 +$ËáEx´Origš® + . ' ' . +$ݔ©Ü + . ' ' . +$rightEx´ + . '"' + +136 +$rightEx´ + = ($rightEx´ =ð'?' && +$isInX +) + +137 ? +$this +-> + `_buždWh”eInA¼aySqlP¬t +( +$rightEx´ +) + +138 : +$this +-> +qu”y +-> + `·r£CÏu£ +( +$rightEx´ +); + +140  +$ËáEx´ + . ' ' . +$ݔ©Ü + . ' ' . +$rightEx´ +; + +141 + } +} + +144 +´Ùeùed + +funùiÚ + + $_buždWh”eInA¼aySqlP¬t +( +$rightEx´ +) + +146 +$·¿ms + = +$this +-> +qu”y +-> + `g‘IÁ”ÇlP¬ams +(); + +147 +$v®ue + = + `¬¿y +(); + +149  +$i + = 0, +$l + = + `couÁ +( +$·¿ms +); $i < $l; $i++) { + +150 ià( + `is_¬¿y +( +$·¿ms +[ +$i +])) { + +151 +$v®ue + = + `¬¿y_fžl +(0, + `couÁ +( +$·¿ms +[ +$i +]), +$rightEx´ +); + +152 +$this +-> +qu”y +-> + `adju¡Proûs£dP¬am +( +$i +); + +158  '(' . ( + `couÁ +( +$v®ue +è> 0 ? + `im¶ode +(', ', $v®ueè: +$rightEx´ +) . ')'; + +159 + } +} + +168 +public + +funùiÚ + + $·r£Exi¡s +( +$wh”e +, +$Ãg©iÚ +) + +170 +$ݔ©Ü + = ( +$Ãg©iÚ +) ? 'EXISTS' : 'NOT EXISTS'; + +172 +$pos + = + `¡½os +( +$wh”e +, '('); + +174 ià( +$pos + =ð +çl£ +) { + +175 +throw + +Ãw + + `Doùrše_Qu”y_Exû±iÚ +('Unknownƒxpression,ƒxpected‡ subquery with () -marks'); + +178 +$sub + = +$this +-> +_tok’iz” +-> + `b¿ck‘Trim +( + `sub¡r +( +$wh”e +, +$pos +)); + +180 +$q + = +$this +-> +qu”y +-> + `ü—‹Subqu”y +()-> + `·r£DqlQu”y +( +$sub +, +çl£ +); + +181 +$sql + = +$q +-> + `g‘SqlQu”y +(); + +182 +$q +-> + `ä“ +(); + +184  +$ݔ©Ü + . ' (' . +$sql + . ')'; + +185 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/RawSql.php + +1 + `u£Qu”yCache +( +çl£ +); + +60 +´Ùeùed + +funùiÚ + + $þ—r +() + +62 +$this +-> +_´eQu”y + = +çl£ +; + +63 +$this +-> +_³ndšgJošCÚd™iÚs + = + `¬¿y +(); + +64 + } +} + +81 +public + +funùiÚ + + $·r£DqlQu”yP¬t +( +$qu”yP¬tName +, +$qu”yP¬t +, +$­³nd + = +çl£ +) + +83 ià( +$qu”yP¬tName + == 'select') { + +84 +$this +-> + `_·r£S–eùF›lds +( +$qu”yP¬t +); + +85  +$this +; + +87 iàÐ! + `is£t +( +$this +-> +_sqlP¬ts +[ +$qu”yP¬tName +])) { + +88 +$this +-> +_sqlP¬ts +[ +$qu”yP¬tName +] = + `¬¿y +(); + +91 iàÐ! +$­³nd +) { + +92 +$this +-> +_sqlP¬ts +[ +$qu”yP¬tName +] = + `¬¿y +( +$qu”yP¬t +); + +94 +$this +-> +_sqlP¬ts +[ +$qu”yP¬tName +][] = +$qu”yP¬t +; + +96  +$this +; + +97 + } +} + +103 +´Ùeùed + +funùiÚ + + $_addDqlQu”yP¬t +( +$qu”yP¬tName +, +$qu”yP¬t +, +$­³nd + = +çl£ +) + +105  +$this +-> + `·r£DqlQu”yP¬t +( +$qu”yP¬tName +, +$qu”yP¬t +, +$­³nd +); + +106 + } +} + +113 +´iv©e + +funùiÚ + + $_·r£S–eùF›lds +( +$qu”yP¬t +) + +115 + `´eg_m©ch_®l +('/{([^}{]*)}/U', +$qu”yP¬t +, +$m +); + +116 +$this +-> +f›lds + = +$m +[1]; + +117 +$this +-> +_sqlP¬ts +['£Ëù'] = + `¬¿y +(); + +118 + } +} + +130 +public + +funùiÚ + + $·r£DqlQu”y +( +$qu”y +) + +132 +$this +-> + `_·r£S–eùF›lds +( +$qu”y +); + +133 +$this +-> + `þ—r +(); + +135 +$tok’s + = +$this +-> +_tok’iz” +-> + `sqlEx¶ode +( +$qu”y +, ' '); + +137 +$·¹s + = + `¬¿y +(); + +138 + `fܗch + ( +$tok’s + +as + +$key + => +$·¹ +) { + +139 +$·¹Low”Ca£ + = + `¡¹Þow” +( +$·¹ +); + +140  +$·¹Low”Ca£ +) { + +147 +$ty³ + = +$·¹Low”Ca£ +; + +148 iàÐ! + `is£t +( +$·¹s +[ +$·¹Low”Ca£ +])) { + +149 +$·¹s +[ +$·¹Low”Ca£ +] = + `¬¿y +(); + +154 +$i + = +$key + + 1; + +155 ià( + `is£t +( +$tok’s +[ +$i +]è&& + `¡¹Þow” +($tokens[$i]) === 'by') { + +156 +$ty³ + = +$·¹Low”Ca£ + . 'by'; + +157 +$·¹s +[ +$ty³ +] = + `¬¿y +(); + +160 +$·¹s +[ +$ty³ +][] = +$·¹ +; + +167 iàÐ! + `is£t +( +$·¹s +[ +$ty³ +][0])) { + +168 +$·¹s +[ +$ty³ +][0] = +$·¹ +; + +173 +$·¹s +[ +$ty³ +][0] .ð' '. +$·¹ +; + +178 +$this +-> +_sqlP¬ts + = +$·¹s +; + +179 +$this +-> +_sqlP¬ts +['£Ëù'] = + `¬¿y +(); + +181  +$this +; + +182 + } +} + +190 +public + +funùiÚ + +g‘SqlQu”y +( +$·¿ms + = + $¬¿y +()) + +193 +$this +-> +_·¿ms +['exec'] = +$·¿ms +; + +196 +$this +-> +_execP¬ams + = $this-> + `g‘Fω’edP¬ams +(); + +199 +$this +-> + `fixA¼ayP¬am‘”V®ues +($this-> +_execP¬ams +); + +201 +$£Ëù + = + `¬¿y +(); + +203 +$fÜm©‹r + = +$this +-> + `g‘CÚÃùiÚ +()-> +fÜm©‹r +; + +205 + `fܗch + ( +$this +-> +f›lds + +as + +$f›ld +) { + +206 +$e + = + `ex¶ode +('.', +$f›ld +); + +207 iàÐ! + `is£t +( +$e +[1])) { + +208 +throw + +Ãw + + `Doùrše_RawSql_Exû±iÚ +('All selected fields in Sql query must be in formatableAlias.fieldName'); + +211 iàÐ! +$this +-> + `hasSqlTabËAlŸs +( +$e +[0])) { + +212 +Œy + { + +213 +$this +-> + `addCompڒt +( +$e +[0], + `ucwÜds +($e[0])); + +214 } + `ÿtch + ( +Doùrše_Exû±iÚ + +$exû±iÚ +) { + +215 +throw + +Ãw + + `Doùrše_RawSql_Exû±iÚ +('ThassocŸ‹d compڒˆf܁abˇlŸ ' . +$e +[0] . ' couldn\'t be found.'); + +219 +$compڒtAlŸs + = +$this +-> + `g‘CompڒtAlŸs +( +$e +[0]); + +221 ià( +$e +[1] == '*') { + +222 + `fܗch + ( +$this +-> +_qu”yCompڒts +[ +$compڒtAlŸs +]['bË']-> + `g‘CÞumnNames +(è +as + +$Çme +) { + +223 +$f›ld + = +$fÜm©‹r +-> + `quÙeId’tif›r +( +$e +[0]è. '.' . $fÜm©‹r->quÙeId’tif›r( +$Çme +); + +225 +$£Ëù +[ +$compڒtAlŸs +][ +$f›ld +] = $f›ld . ' AS ' . +$fÜm©‹r +-> + `quÙeId’tif›r +( +$e +[0] . '__' . +$Çme +); + +228 +$f›ld + = +$fÜm©‹r +-> + `quÙeId’tif›r +( +$e +[0]) . '.' . $formatter->quoteIdentifier($e[1]); + +229 +$£Ëù +[ +$compڒtAlŸs +][ +$f›ld +] = $f›ld . ' AS ' . +$fÜm©‹r +-> + `quÙeId’tif›r +( +$e +[0] . '__' . $e[1]); + +234 iàÐ! + `is£t +( +$this +-> +_sqlP¬ts +['di¡šù']è|| $this->_sqlP¬ts['di¡šù'] !ð +Œue +) { + +235 + `fܗch + ( +$this +-> + `g‘TabËAlŸsM­ +(è +as + +$bËAlŸs + => +$compڒtAlŸs +) { + +236 +$m­ + = +$this +-> +_qu”yCompڒts +[ +$compڒtAlŸs +]; + +238 + `fܗch + (( +¬¿y +è +$m­ +['bË']-> + `g‘Id’tif›rCÞumnNames +(è +as + +$key +) { + +239 +$f›ld + = +$fÜm©‹r +-> + `quÙeId’tif›r +( +$bËAlŸs +è. '.' . $fÜm©‹r->quÙeId’tif›r( +$key +); + +241 iàÐ! + `is£t +( +$this +-> +_sqlP¬ts +['£Ëù'][ +$f›ld +])) { + +242 +$£Ëù +[ +$compڒtAlŸs +][ +$f›ld +] = $f›ld . ' AS ' . +$fÜm©‹r +-> + `quÙeId’tif›r +( +$bËAlŸs + . '__' . +$key +); + +248 +$q + = 'SELECT '; + +250 ià( + `is£t +( +$this +-> +_sqlP¬ts +['di¡šù']è&& $this->_sqlP¬ts['di¡šù'] =ð +Œue +) { + +251 +$q + .= 'DISTINCT '; + +255 + `»£t +( +$this +-> +_qu”yCompڒts +); + +256 +$compڒtAlŸs + = + `key +( +$this +-> +_qu”yCompڒts +); + +258 +$this +-> +_roÙAlŸs + = +$compڒtAlŸs +; + +260 +$q + .ð + `im¶ode +(', ', +$£Ëù +[ +$compڒtAlŸs +]); + +261 + `un£t +( +$£Ëù +[ +$compڒtAlŸs +]); + +263 + `fܗch + ( +$£Ëù + +as + +$compڒt + => +$f›lds +) { + +264 iàÐ! + `em±y +( +$f›lds +)) { + +265 +$q + .ð', ' . + `im¶ode +(', ', +$f›lds +); + +269 +$¡ršg + = +$this +-> + `g‘Inh”™ªûCÚd™iÚ +($this-> + `g‘RoÙAlŸs +()); + +271 iàÐ! + `em±y +( +$¡ršg +)) { + +272 +$this +-> +_sqlP¬ts +['wh”e'][] = +$¡ršg +; + +275 +$q + .ðÐ! + `em±y +( +$this +-> +_sqlP¬ts +['äom']))? ' FROM ' . + `im¶ode +(' ', $this->_sqlParts['from']) : ''; + +276 +$q + .ðÐ! + `em±y +( +$this +-> +_sqlP¬ts +['wh”e']))? ' WHERE ' . + `im¶ode +(' AND ', $this->_sqlParts['where']) : ''; + +277 +$q + .ðÐ! + `em±y +( +$this +-> +_sqlP¬ts +['groupby']))? ' GROUP BY ' . + `im¶ode +(', ', $this->_sqlParts['groupby']) : ''; + +278 +$q + .ðÐ! + `em±y +( +$this +-> +_sqlP¬ts +['havšg']))? ' HAVING ' . + `im¶ode +(' AND ', $this->_sqlParts['having']) : ''; + +279 +$q + .ðÐ! + `em±y +( +$this +-> +_sqlP¬ts +['Üd”by']))? ' ORDER BY ' . + `im¶ode +(', ', $this->_sqlParts['orderby']) : ''; + +280 +$q + .ðÐ! + `em±y +( +$this +-> +_sqlP¬ts +['lim™']))? ' LIMIT ' . + `im¶ode +(' ', $this->_sqlParts['limit']) : ''; + +281 +$q + .ðÐ! + `em±y +( +$this +-> +_sqlP¬ts +['off£t']))? ' OFFSET ' . + `im¶ode +(' ', $this->_sqlParts['offset']) : ''; + +283 iàÐ! + `em±y +( +$¡ršg +)) { + +284 + `¬¿y_pÝ +( +$this +-> +_sqlP¬ts +['where']); + +286  +$q +; + +287 + } +} + +295 +public + +funùiÚ + +g‘CouÁSqlQu”y +( +$·¿ms + = + $¬¿y +()) + +299 + `»£t +( +$this +-> +_qu”yCompڒts +); + +300 +$compڒtAlŸs + = + `key +( +$this +-> +_qu”yCompڒts +); + +302 +$this +-> +_roÙAlŸs + = +$compڒtAlŸs +; + +304 +$bËAlŸs + = +$this +-> + `g‘SqlTabËAlŸs +( +$compڒtAlŸs +); + +305 +$f›lds + = + `¬¿y +(); + +307 + `fܗch + (( +¬¿y +è +$this +-> +_qu”yCompڒts +[ +$compڒtAlŸs +]['bË']-> + `g‘Id’tif›rCÞumnNames +(è +as + +$key +) { + +308 +$f›lds +[] = +$bËAlŸs + . '.' . +$key +; + +311 +$q + = 'SELECT COUNT(*èa num_»suÉ FROM (SELECT DISTINCT '. + `im¶ode +(', ', +$f›lds +); + +313 +$¡ršg + = +$this +-> + `g‘Inh”™ªûCÚd™iÚ +($this-> + `g‘RoÙAlŸs +()); + +314 iàÐ! + `em±y +( +$¡ršg +)) { + +315 +$this +-> +_sqlP¬ts +['wh”e'][] = +$¡ršg +; + +318 +$q + .ðÐ! + `em±y +( +$this +-> +_sqlP¬ts +['äom']))? ' FROM ' . + `im¶ode +(' ', $this->_sqlParts['from']) : ''; + +319 +$q + .ðÐ! + `em±y +( +$this +-> +_sqlP¬ts +['wh”e']))? ' WHERE ' . + `im¶ode +(' AND ', $this->_sqlParts['where']) : ''; + +320 +$q + .ðÐ! + `em±y +( +$this +-> +_sqlP¬ts +['groupby']))? ' GROUP BY ' . + `im¶ode +(', ', $this->_sqlParts['groupby']) : ''; + +321 +$q + .ðÐ! + `em±y +( +$this +-> +_sqlP¬ts +['havšg']))? ' HAVING ' . + `im¶ode +(' AND ', $this->_sqlParts['having']) : ''; + +323 +$q + .= ')‡s„esults'; + +325 iàÐ! + `em±y +( +$¡ršg +)) { + +326 + `¬¿y_pÝ +( +$this +-> +_sqlP¬ts +['where']); + +329  +$q +; + +330 + } +} + +345 +public + +funùiÚ + +couÁ +( +$·¿ms + = + $¬¿y +()) + +347 +$sql + = +$this +-> + `g‘CouÁSqlQu”y +(); + +348 +$·¿ms + = +$this +-> + `g‘CouÁQu”yP¬ams +($params); + +349 +$»suÉs + = +$this +-> + `g‘CÚÃùiÚ +()-> + `ãtchAÎ +( +$sql +, +$·¿ms +); + +351 ià( + `couÁ +( +$»suÉs +) > 1) { + +352 +$couÁ + = + `couÁ +( +$»suÉs +); + +354 ià( + `is£t +( +$»suÉs +[0])) { + +355 +$»suÉs +[0] = + `¬¿y_chªge_key_ÿ£ +($»suÉs[0], +CASE_LOWER +); + +356 +$couÁ + = +$»suÉs +[0]['num_results']; + +358 +$couÁ + = 0; + +362  (è +$couÁ +; + +363 + } +} + +371 +public + +funùiÚ + + $g‘F›lds +() + +373  +$this +-> +f›lds +; + +374 + } +} + +383 +public + +funùiÚ + + $addCompڒt +( +$bËAlŸs +, +$·th +) + +385 +$tmp + = + `ex¶ode +(' ', +$·th +); + +386 +$Üigš®AlŸs + = ( + `couÁ +( +$tmp +è> 1è? + `’d +($tmpè: +nuÎ +; + +388 +$e + = + `ex¶ode +('.', +$tmp +[0]); + +390 +$fuÎP©h + = +$tmp +[0]; + +391 +$fuÎL’gth + = + `¡¾’ +( +$fuÎP©h +); + +393 +$bË + = +nuÎ +; + +395 +$cu¼P©h + = ''; + +397 ià( + `is£t +( +$this +-> +_qu”yCompڒts +[ +$e +[0]])) { + +398 +$bË + = +$this +-> +_qu”yCompڒts +[ +$e +[0]]['table']; + +400 +$cu¼P©h + = +$·»Á + = + `¬¿y_shiá +( +$e +); + +403 + `fܗch + ( +$e + +as + +$k + => +$compڒt +) { + +405 +$Ëngth + = + `¡¾’ +( +$cu¼P©h +); + +408 +$cu¼P©h + = ($cu¼P©hè? $cu¼P©h . '.' . +$compڒt + : $component; + +410 +$d–im‘” + = + `sub¡r +( +$fuÎP©h +, +$Ëngth +, 1); + +413 ià( + `¡¾’ +( +$cu¼P©h +è==ð +$fuÎL’gth + && + `is£t +( +$Üigš®AlŸs +)) { + +414 +$compڒtAlŸs + = +$Üigš®AlŸs +; + +416 +$compڒtAlŸs + = +$cu¼P©h +; + +418 iàÐ! + `is£t +( +$bË +)) { + +419 +$cÚn + = +Doùrše_Mªag” +:: + `g‘In¡ªû +() + +420 -> + `g‘CÚÃùiÚFÜCompڒt +( +$compڒt +); + +422 +$bË + = +$cÚn +-> + `g‘TabË +( +$compڒt +); + +423 +$this +-> +_qu”yCompڒts +[ +$compڒtAlŸs +] = + `¬¿y +('bË' => +$bË +); + +425 +$»ÏtiÚ + = +$bË +-> + `g‘R–©iÚ +( +$compڒt +); + +427 +$this +-> +_qu”yCompڒts +[ +$compڒtAlŸs +] = + `¬¿y +('bË' => +$»ÏtiÚ +-> + `g‘TabË +(), + +428 '·»Á' => +$·»Á +, + +429 '»ÏtiÚ' => +$»ÏtiÚ +); + +431 +$this +-> + `addSqlTabËAlŸs +( +$bËAlŸs +, +$compڒtAlŸs +); + +433 +$·»Á + = +$cu¼P©h +; + +436  +$this +; + +437 + } +} + +446 +public + +funùiÚ + +ÿlcuϋResuÉCacheHash +( +$·¿ms + = + $¬¿y +()) + +448 +$sql + = +$this +-> + `g‘SqlQu”y +(); + +449 +$cÚn + = +$this +-> + `g‘CÚÃùiÚ +(); + +450 +$·¿ms + = +$this +-> + `g‘Fω’edP¬ams +($params); + +451 +$hash + = + `md5 +( +$this +-> +_hyd¿tÜ +-> + `g‘Hyd¿tiÚMode +(è. +$cÚn +-> + `g‘Name +(è. $cÚn-> + `g‘O±iÚ +('d¢'è. +$sql + . + `v¬_expÜt +( +$·¿ms +, +Œue +)); + +452  +$hash +; + +453 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/RawSql/Exception.php + +1 +_bË + = +$bË +; + +215 + g$exi¡s + = ( ! +$isNewEÁry +); + +218 + g$þass + = +g‘_þass +( +$this +); + +219 + g$this +-> + g_bË + = +Doùrše_CÜe +:: +g‘TabË +( +$þass +); + +220 + g$exi¡s + = +çl£ +; + +226 iàÐ! + g$this +-> + g_bË +-> +g‘CÚÃùiÚ +()-> +hasTabË +( +$this +-> +_bË +-> +g‘CompڒtName +())) { + +230 + g$this +-> + g_oid + = +£lf +:: +$_šdex +; + +232 + g£lf +:: +$_šdex +++; + +235 + g$this +-> + g_d©a + = +$this +-> +_bË +-> +g‘D©a +(); + +238 + g$couÁ + = +couÁ +( +$this +-> +_d©a +); + +240 + g$this +-> + g_v®ues + = +$this +-> +þ—nD©a +($this-> +_d©a +); + +242 + g$this +-> +´•¬eId’tif›rs +( +$exi¡s +); + +244 iàÐ! + g$exi¡s +) { + +245 ià( + g$couÁ + > +couÁ +( +$this +-> +_v®ues +)) { + +246 + g$this +-> + g_¡©e + = +Doùrše_RecÜd +:: +STATE_TDIRTY +; + +248 + g$this +-> + g_¡©e + = +Doùrše_RecÜd +:: +STATE_TCLEAN +; + +252 + g$this +-> +assignDeçuÉV®ues +(); + +254 + g$this +-> + g_¡©e + = +Doùrše_RecÜd +:: +STATE_CLEAN +; + +256 ià( + g$this +-> +isInProxyS‹ +()) { + +257 + g$this +-> + g_¡©e + = +Doùrše_RecÜd +:: +STATE_PROXY +; + +261 + g$»pos™Üy + = +$this +-> +_bË +-> +g‘R•os™Üy +(); + +265 ià( + g$»pos™Üy +) { + +266 + g$»pos™Üy +-> +add +( +$this +); + +267 + g$this +-> +cÚ¡ruù +(); + +279 +public + +funùiÚ + +£rŸlizeReã»nûs +( +$boÞ + = +nuÎ +) + +281 iàÐ! +is_nuÎ +( +$boÞ +)) { + +282 +$this +-> +_£rŸlizeReã»nûs + = +$boÞ +; + +284  + g$this +-> + g_£rŸlizeReã»nûs +; + +292 +public +  +funùiÚ + +_šdex +() + +294  + g£lf +:: +$_šdex +; + +304 +public + +funùiÚ + +£tUp +() + +313 +public + +funùiÚ + +cÚ¡ruù +() + +321 +public + +funùiÚ + +g‘Oid +() + +323  + g$this +-> + g_oid +; + +326 +public + +funùiÚ + +oid +() + +328  + g$this +-> + g_oid +; + +343 +public + +funùiÚ + +švokeSaveHooks +( +$wh’ +, +$ty³ +, +$ev’t + = +nuÎ +) + +345 +$func + = +$wh’ + . +ucfœ¡ +( +$ty³ +); + +347 ià( +is_nuÎ +( +$ev’t +)) { + +348 + g$cÚ¡ªt + = +cÚ¡ªt +('Doùrše_Ev’t::RECORD_' . +¡¹ouµ” +( +$ty³ +)); + +350 + g$ev’t + = +Ãw + +Doùrše_Ev’t +( +$this +, +$cÚ¡ªt +); + +353 iàÐ! +is£t +( +$this +-> +_švokedSaveHooks +[ +$func +])) { + +354 + g$this +-> +$func +( +$ev’t +); + +355 + g$this +-> +g‘TabË +()-> +g‘RecÜdLi¡’” +()-> +$func +( +$ev’t +); + +357 + g$this +-> + g_švokedSaveHooks +[ +$func +] = +$ev’t +; + +359 + g$ev’t + = +$this +-> +_švokedSaveHooks +[ +$func +]; + +362  + g$ev’t +; + +368 +public + +funùiÚ + +þ—rInvokedSaveHooks +() + +370 + g$this +-> + g_švokedSaveHooks + = +¬¿y +(); + +380 +public + +funùiÚ + +isV®id +( +$d“p + = +çl£ +, +$hooks + = +Œue +) + +382 iàÐ! +$this +-> +_bË +-> +g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_VALIDATE +)) { + +383  +Œue +; + +386 ià( + g$this +-> + g_¡©e + =ð +£lf +:: +STATE_LOCKED + || +$this +-> +_¡©e + =ð£lf:: +STATE_TLOCKED +) { + +387  +Œue +; + +390 ià( + g$hooks +) { + +391 + g$this +-> +švokeSaveHooks +('pre', 'save'); + +392 + g$this +-> +švokeSaveHooks +('´e', +$this +-> +exi¡s +() ? 'update' : 'insert'); + +396 + g$this +-> +g‘E¼ÜSck +()-> +þ—r +(); + +399 + g$ev’t + = +Ãw + +Doùrše_Ev’t +( +$this +, Doùrše_Ev’t:: +RECORD_VALIDATE +); + +400 + g$this +-> +´eV®id©e +( +$ev’t +); + +401 + g$this +-> +g‘TabË +()-> +g‘RecÜdLi¡’” +()-> +´eV®id©e +( +$ev’t +); + +403 iàÐ! + g$ev’t +-> + gskO³¿tiÚ +) { + +405 + g$v®id©Ü + = +Ãw + +Doùrše_V®id©Ü +(); + +406 + g$v®id©Ü +-> +v®id©eRecÜd +( +$this +); + +407 + g$this +-> +v®id©e +(); + +408 ià( + g$this +-> + g_¡©e + =ð +£lf +:: +STATE_TDIRTY + || +$this +-> +_¡©e + =ð£lf:: +STATE_TCLEAN +) { + +409 +$this +-> +v®id©eOnIn£¹ +(); + +411 + g$this +-> +v®id©eOnUpd©e +(); + +415 + g$this +-> +g‘TabË +()-> +g‘RecÜdLi¡’” +()-> +po¡V®id©e +( +$ev’t +); + +416 + g$this +-> +po¡V®id©e +( +$ev’t +); + +418 + g$v®id + = +$this +-> +g‘E¼ÜSck +()-> +couÁ +(è=ð0 ? +Œue + : +çl£ +; + +419 ià( + g$v®id + && + g$d“p +) { + +420 + g$¡©eBefÜeLock + = +$this +-> +_¡©e +; + +421 + g$this +-> + g_¡©e + = +$this +-> +exi¡s +(è? +£lf +:: +STATE_LOCKED + : s–f:: +STATE_TLOCKED +; + +423 +fܗch + ( +$this +-> +_»ã»nûs + +as + +$»ã»nû +) { + +424 ià( +$»ã»nû + +š¡ªûof + + gDoùrše_RecÜd +) { + +425 iàÐ! + g$v®id + = +$»ã»nû +-> +isV®id +( +$d“p +)) { + +428 } ià( +$»ã»nû + +š¡ªûof + + gDoùrše_CÞËùiÚ +) { + +429 +fܗch + ( +$»ã»nû + +as + +$»cÜd +) { + +430 iàÐ! + g$v®id + = +$»cÜd +-> +isV®id +( +$d“p +)) { + +436 + g$this +-> + g_¡©e + = +$¡©eBefÜeLock +; + +439  + g$v®id +; + +447 +´Ùeùed + +funùiÚ + +v®id©e +() + +455 +´Ùeùed + +funùiÚ + +v®id©eOnUpd©e +() + +463 +´Ùeùed + +funùiÚ + +v®id©eOnIn£¹ +() + +470 +public + +funùiÚ + +´eS”Ÿlize +( +$ev’t +) + +477 +public + +funùiÚ + +po¡S”Ÿlize +( +$ev’t +) + +484 +public + +funùiÚ + +´eUn£rŸlize +( +$ev’t +) + +491 +public + +funùiÚ + +po¡Un£rŸlize +( +$ev’t +) + +498 +public + +funùiÚ + +´eSave +( +$ev’t +) + +505 +public + +funùiÚ + +po¡Save +( +$ev’t +) + +512 +public + +funùiÚ + +´eD–‘e +( +$ev’t +) + +519 +public + +funùiÚ + +po¡D–‘e +( +$ev’t +) + +527 +public + +funùiÚ + +´eUpd©e +( +$ev’t +) + +535 +public + +funùiÚ + +po¡Upd©e +( +$ev’t +) + +543 +public + +funùiÚ + +´eIn£¹ +( +$ev’t +) + +551 +public + +funùiÚ + +po¡In£¹ +( +$ev’t +) + +559 +public + +funùiÚ + +´eV®id©e +( +$ev’t +) + +565 +public + +funùiÚ + +po¡V®id©e +( +$ev’t +) + +572 +public + +funùiÚ + +´eDqlS–eù +( +$ev’t +) + +579 +public + +funùiÚ + +´eDqlUpd©e +( +$ev’t +) + +586 +public + +funùiÚ + +´eDqlD–‘e +( +$ev’t +) + +593 +public + +funùiÚ + +´eHyd¿‹ +( +$ev’t +) + +600 +public + +funùiÚ + +po¡Hyd¿‹ +( +$ev’t +) + +609 +public + +funùiÚ + +g‘E¼ÜSckAsSŒšg +() + +611 + g$”rÜSck + = +$this +-> +g‘E¼ÜSck +(); + +613 ià( +couÁ +( +$”rÜSck +)) { + +614 + g$mes§ge + = +¥rštf +("V®id©iÚ fažed iÀþas %s\n\n", +g‘_þass +( +$this +)); + +616 + g$mes§ge + .ð" " . +couÁ +( +$”rÜSck +è. " f›ld" . (couÁ($”rÜSckè> 1 ? 's' : +nuÎ +) . " had validationƒrror" . (count($errorStack) > 1 ? 's' :‚ull) . ":\n\n"; + +617 +fܗch + ( +$”rÜSck + +as + +$f›ld + => +$”rÜs +) { + +618 +$mes§ge + .ð" * " . +couÁ +( +$”rÜs +è. " v®id©Ü" . (couÁ($”rÜsè> 1 ? 's' : +nuÎ +è. " fažed oÀ$f›ld (" . +im¶ode +(", ", $errors) . ")\n"; + +620  + g$mes§ge +; + +622  + gçl£ +; + +631 +public + +funùiÚ + +g‘E¼ÜSck +() + +633 iàÐ! + g$this +-> + g_”rÜSck +) { + +634 + g$this +-> + g_”rÜSck + = +Ãw + +Doùrše_V®id©Ü_E¼ÜSck +( +g‘_þass +( +$this +)); + +637  + g$this +-> + g_”rÜSck +; + +646 +public + +funùiÚ + +”rÜSck +( +$¡ack + = +nuÎ +) + +648 ià( +$¡ack + !=ð +nuÎ +) { + +649 iàÐ! ( +$¡ack + +š¡ªûof + +Doùrše_V®id©Ü_E¼ÜSck +)) { + +650 +throw + +Ãw + +Doùrše_RecÜd_Exû±iÚ +('Argument should be‡n instance of Doctrine_Validator_ErrorStack.'); + +652 + g$this +-> + g_”rÜSck + = +$¡ack +; + +654  + g$this +-> +g‘E¼ÜSck +(); + +663 +public + +funùiÚ + +assignInh”™ªûV®ues +() + +665 + g$m­ + = +$this +-> +_bË +-> +šh”™ªûM­ +; + +666 +fܗch + ( +$m­ + +as + +$k + => +$v +) { + +667 +$k + = +$this +-> +_bË +-> +g‘F›ldName +($k); + +668 + g$Þd + = +$this +-> +g‘ +( +$k +, +çl£ +); + +670 ià((( + g¡ršg +è + g$Þd + !=ð( +¡ršg +è +$v + || +$Þd + ==ð +nuÎ +è&& ! +š_¬¿y +( +$k +, +$this +-> +_modif›d +)) { + +671 + g$this +-> +£t +( +$k +, +$v +); + +683 +public + +funùiÚ + +assignDeçuÉV®ues +( +$ov”wr™e + = +çl£ +) + +685 iàÐ! +$this +-> +_bË +-> +hasDeçuÉV®ues +()) { + +686  +çl£ +; + +688 +fܗch + ( +$this +-> +_d©a + +as + +$cÞumn + => +$v®ue +) { + +689 +$deçuÉ + = +$this +-> +_bË +-> +g‘DeçuÉV®ueOf +( +$cÞumn +); + +691 ià( + g$deçuÉ + ==ð +nuÎ +) { + +695 ià( + g$v®ue + ==ð +£lf +:: +$_nuÎ + || +$ov”wr™e +) { + +696 +$this +-> +_d©a +[ +$cÞumn +] = +$deçuÉ +; + +697 + g$this +-> + g_modif›d +[] = +$cÞumn +; + +698 + g$this +-> + g_¡©e + = +Doùrše_RecÜd +:: +STATE_TDIRTY +; + +712 +public + +funùiÚ + +þ—nD©a +(& +$d©a +) + +714 + g$tmp + = +$d©a +; + +715 + g$d©a + = +¬¿y +(); + +717 +fܗch + ( +$this +-> +g‘TabË +()-> +g‘F›ldNames +(è +as + +$f›ldName +) { + +718 ià( +is£t +( +$tmp +[ +$f›ldName +])) { + +719 + g$d©a +[ +$f›ldName +] = +$tmp +[$fieldName]; + +720 } ià( +¬¿y_key_exi¡s +( +$f›ldName +, +$tmp +)) { + +721 + g$d©a +[ +$f›ldName +] = +nuÎ +; + +722 } iàÐ! +is£t +( +$this +-> +_d©a +[ +$f›ldName +])) { + +723 + g$d©a +[ +$f›ldName +] = +£lf +:: +$_nuÎ +; + +725 +un£t +( +$tmp +[ +$f›ldName +]); + +728  + g$tmp +; + +739 +public + +funùiÚ + +hyd¿‹ +( +¬¿y + +$d©a +, +$ov”wr™eLoÿlChªges + = +Œue +) + +741 ià( +$ov”wr™eLoÿlChªges +) { + +742 +$this +-> +_v®ues + = +¬¿y_m”ge +($this->_v®ues, $this-> +þ—nD©a +( +$d©a +)); + +743 + g$this +-> + g_d©a + = +¬¿y_m”ge +( +$this +-> +_d©a +, +$d©a +); + +744 + g$this +-> + g_modif›d + = +¬¿y +(); + +745 + g$this +-> + g_ÞdV®ues + = +¬¿y +(); + +747 + g$this +-> + g_v®ues + = +¬¿y_m”ge +( +$this +-> +þ—nD©a +( +$d©a +), $this-> +_v®ues +); + +748 + g$this +-> + g_d©a + = +¬¿y_m”ge +( +$d©a +, +$this +-> +_d©a +); + +751 ià(! + g$this +-> +isModif›d +(è&& $this-> +isInProxyS‹ +()) { + +752 + g$this +-> + g_¡©e + = +£lf +:: +STATE_PROXY +; + +763 +´iv©e + +funùiÚ + +´•¬eId’tif›rs +( +$exi¡s + = +Œue +) + +765  +$this +-> +_bË +-> +g‘Id’tif›rTy³ +()) { + +766  +Doùrše_CÜe +:: +IDENTIFIER_AUTOINC +: + +767  +Doùrše_CÜe +:: +IDENTIFIER_SEQUENCE +: + +768  +Doùrše_CÜe +:: +IDENTIFIER_NATURAL +: + +769 +$Çme + = +$this +-> +_bË +-> +g‘Id’tif›r +(); + +770 ià( +is_¬¿y +( +$Çme +)) { + +771 + g$Çme + = +$Çme +[0]; + +773 ià( + g$exi¡s +) { + +774 ià( +is£t +( +$this +-> +_d©a +[ +$Çme +]è&& + g$this +-> + g_d©a +[$Çme] !=ð +£lf +:: +$_nuÎ +) { + +775 +$this +-> +_id +[ +$Çme +] = $this-> +_d©a +[$name]; + +779  + gDoùrše_CÜe +:: +IDENTIFIER_COMPOSITE +: + +780 +$Çmes + = +$this +-> +_bË +-> +g‘Id’tif›r +(); + +782 +fܗch + ( +$Çmes + +as + +$Çme +) { + +783 ià( + g$this +-> + g_d©a +[ +$Çme +] ==ð +£lf +:: +$_nuÎ +) { + +784 +$this +-> +_id +[ +$Çme +] = +nuÎ +; + +786 + g$this +-> + g_id +[ +$Çme +] = +$this +-> +_d©a +[$name]; + +799 +public + +funùiÚ + +£rŸlize +() + +801 + g$ev’t + = +Ãw + +Doùrše_Ev’t +( +$this +, Doùrše_Ev’t:: +RECORD_SERIALIZE +); + +803 + g$this +-> +´eS”Ÿlize +( +$ev’t +); + +804 + g$this +-> +g‘TabË +()-> +g‘RecÜdLi¡’” +()-> +´eS”Ÿlize +( +$ev’t +); + +806 + g$v¬s + = +g‘_objeù_v¬s +( +$this +); + +808 iàÐ! + g$this +-> +£rŸlizeReã»nûs +()) { + +809 +un£t +( +$v¬s +['_references']); + +811 +un£t +( +$v¬s +['_table']); + +812 +un£t +( +$v¬s +['_errorStack']); + +813 +un£t +( +$v¬s +['_filter']); + +814 +un£t +( +$v¬s +['_node']); + +816 + g$d©a + = +$this +-> +_d©a +; + +817 ià( + g$this +-> +exi¡s +()) { + +818 + g$d©a + = +¬¿y_m”ge +( +$d©a +, +$this +-> +_id +); + +821 +fܗch + ( +$d©a + +as + +$k + => +$v +) { + +822 ià( +$v + +š¡ªûof + +Doùrše_RecÜd + && +$this +-> +_bË +-> +g‘Ty³Of +( +$k +) != 'object') { + +823 +un£t +( +$v¬s +['_d©a'][ +$k +]); + +824 } +–£if + ( +$v + ==ð +£lf +:: +$_nuÎ +) { + +825 +un£t +( +$v¬s +['_d©a'][ +$k +]); + +827  + g$this +-> + g_bË +-> +g‘Ty³Of +( +$k +)) { + +830 +$v¬s +['_d©a'][ +$k +] = +£rŸlize +($vars['_data'][$k]); + +833 +$v¬s +['_d©a'][ +$k +] = +gzcom´ess +($vars['_data'][$k]); + +836 +$v¬s +['_d©a'][ +$k +] = +$this +-> +_bË +-> +’umIndex +($k, $vars['_data'][$k]); + +842 + g$¡r + = +£rŸlize +( +$v¬s +); + +844 + g$this +-> +po¡S”Ÿlize +( +$ev’t +); + +845 + g$this +-> +g‘TabË +()-> +g‘RecÜdLi¡’” +()-> +po¡S”Ÿlize +( +$ev’t +); + +847  + g$¡r +; + +857 +public + +funùiÚ + +un£rŸlize +( +$£rŸlized +) + +859 + g$ev’t + = +Ãw + +Doùrše_Ev’t +( +$this +, Doùrše_Ev’t:: +RECORD_UNSERIALIZE +); + +861 + g$mªag” + = +Doùrše_Mªag” +:: +g‘In¡ªû +(); + +862 + g$cÚÃùiÚ + = +$mªag” +-> +g‘CÚÃùiÚFÜCompڒt +( +g‘_þass +( +$this +)); + +864 + g$this +-> + g_bË + = +$cÚÃùiÚ +-> +g‘TabË +( +g‘_þass +( +$this +)); + +866 + g$this +-> +´eUn£rŸlize +( +$ev’t +); + +867 + g$this +-> +g‘TabË +()-> +g‘RecÜdLi¡’” +()-> +´eUn£rŸlize +( +$ev’t +); + +869 + g$¬¿y + = +un£rŸlize +( +$£rŸlized +); + +871 +fܗch +( +$¬¿y + +as + +$k + => +$v +) { + +872 +$this +-> +$k + = +$v +; + +875 +fܗch + ( +$this +-> +_d©a + +as + +$k + => +$v +) { + +876  +$this +-> +_bË +-> +g‘Ty³Of +( +$k +)) { + +879 +$this +-> +_d©a +[ +$k +] = +un£rŸlize +($this->_data[$k]); + +882 +$this +-> +_d©a +[ +$k +] = +gzuncom´ess +($this->_data[$k]); + +885 +$this +-> +_d©a +[ +$k +] = $this-> +_bË +-> +’umV®ue +($k, $this->_data[$k]); + +892 + g$this +-> + g_bË +-> +£tD©a +( +$this +-> +_d©a +); + +893 + g$exi¡šg_»cÜd + = +$this +-> +_bË +-> +g‘RecÜd +(); + +894 ià( + g$exi¡šg_»cÜd +-> +exi¡s +()) { + +895 + g$this +-> + g_bË +-> +g‘R•os™Üy +()-> +eviù +( +$exi¡šg_»cÜd +-> +g‘Oid +()); + +896 + g$this +-> + g_bË +-> +»moveRecÜd +( +$exi¡šg_»cÜd +); + +900 + g$this +-> + g_oid + = +£lf +:: +$_šdex +; + +901 + g£lf +:: +$_šdex +++; + +902 + g$this +-> + g_bË +-> +g‘R•os™Üy +()-> +add +( +$this +); + +903 + g$this +-> + g_bË +-> +addRecÜd +( +$this +); + +905 + g$this +-> +þ—nD©a +( +$this +-> +_d©a +); + +907 + g$this +-> +´•¬eId’tif›rs +( +$this +-> +exi¡s +()); + +909 + g$this +-> +po¡Un£rŸlize +( +$ev’t +); + +910 + g$this +-> +g‘TabË +()-> +g‘RecÜdLi¡’” +()-> +po¡Un£rŸlize +( +$ev’t +); + +922 +public + +funùiÚ + +¡©e +( +$¡©e + = +nuÎ +) + +924 ià( +$¡©e + =ð +nuÎ +) { + +925  +$this +-> +_¡©e +; + +928 + g$”r + = +çl£ +; + +929 ià( +is_š‹g” +( +$¡©e +)) { + +930 ià( + g$¡©e + >ð1 && +$¡©e + <= 7) { + +931 +$this +-> +_¡©e + = +$¡©e +; + +933 + g$”r + = +Œue +; + +935 } ià( +is_¡ršg +( +$¡©e +)) { + +936 + g$uµ” + = +¡¹ouµ” +( +$¡©e +); + +938 + g$cÚ¡ + = 'Doùrše_RecÜd::STATE_' . +$uµ” +; + +939 ià( +defšed +( +$cÚ¡ +)) { + +940 + g$this +-> + g_¡©e + = +cÚ¡ªt +( +$cÚ¡ +); + +942 + g$”r + = +Œue +; + +946 ià( + g$this +-> + g_¡©e + ==ð +Doùrše_RecÜd +:: +STATE_TCLEAN + || + +947 +$this +-> +_¡©e + ==ð +Doùrše_RecÜd +:: +STATE_CLEAN +) { + +948 +$this +-> +_»£tModif›d +(); + +951 ià( + g$”r +) { + +952 +throw + +Ãw + +Doùrše_RecÜd_S‹_Exû±iÚ +('UnknowÀ»cÜd s‹ ' . +$¡©e +); + +967 +public + +funùiÚ + +»äesh +( +$d“p + = +çl£ +) + +969 +$id + = +$this +-> +id’tif›r +(); + +970 iàÐ! +is_¬¿y +( +$id +)) { + +971 + g$id + = +¬¿y +( +$id +); + +973 ià( +em±y +( +$id +)) { + +974  + gçl£ +; + +976 + g$id + = +¬¿y_v®ues +( +$id +); + +978 + g$ov”wr™e + = +$this +-> +g‘TabË +()-> +g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_HYDRATE_OVERWRITE +); + +979 + g$this +-> +g‘TabË +()-> +£tA‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_HYDRATE_OVERWRITE +, +Œue +); + +981 ià( + g$d“p +) { + +982 + g$qu”y + = +$this +-> +g‘TabË +()-> +ü—‹Qu”y +(); + +983 +fܗch + ( +¬¿y_keys +( +$this +-> +_»ã»nûs +è +as + +$Çme +) { + +984 + g$qu”y +-> +ËáJoš +( +g‘_þass +( +$this +è. '.' . +$Çme +); + +986 + g$qu”y +-> +wh”e +( +im¶ode +(' = ? AND ', ( +¬¿y +) +$this +-> +g‘TabË +()-> +g‘Id’tif›r +()) . ' = ?'); + +987 + g$this +-> +þ—rR–©ed +(); + +988 + g$»cÜd + = +$qu”y +-> +ãtchOà +( +$id +); + +991 + g$»cÜd + = +$this +-> +g‘TabË +()-> +fšd +( +$id +, +Doùrše_CÜe +:: +HYDRATE_ARRAY +); + +992 ià( + g$»cÜd +) { + +993 + g$this +-> +hyd¿‹ +( +$»cÜd +); + +997 + g$this +-> +g‘TabË +()-> +£tA‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_HYDRATE_OVERWRITE +, +$ov”wr™e +); + +999 ià( + g$»cÜd + ==ð +çl£ +) { + +1000 +throw + +Ãw + +Doùrše_RecÜd_Exû±iÚ +('Failedo„efresh. Record does‚otƒxist.'); + +1003 + g$this +-> +_»£tModif›d +(); + +1005 + g$this +-> +´•¬eId’tif›rs +(); + +1007 + g$this +-> + g_¡©e + = +Doùrše_RecÜd +:: +STATE_CLEAN +; + +1009  + g$this +; + +1021 +public + +funùiÚ + +»äeshR–©ed +( +$Çme + = +nuÎ +) + +1023 ià( +is_nuÎ +( +$Çme +)) { + +1024 +fܗch + ( +$this +-> +_bË +-> +g‘R–©iÚs +(è +as + +$»l +) { + +1025 +$®Ÿs + = +$»l +-> +g‘AlŸs +(); + +1026 +un£t +( +$this +-> +_»ã»nûs +[ +$®Ÿs +]); + +1027 + g$»ã»nû + = +$»l +-> +ãtchR–©edFÜ +( +$this +); + +1028 ià( +$»ã»nû + +š¡ªûof + + gDoùrše_CÞËùiÚ +) { + +1029 + g$this +-> + g_»ã»nûs +[ +$®Ÿs +] = +$»ã»nû +; + +1030 } ià( +$»ã»nû + +š¡ªûof + + gDoùrše_RecÜd +) { + +1031 ià( + g$»ã»nû +-> +exi¡s +()) { + +1032 + g$this +-> + g_»ã»nûs +[ +$®Ÿs +] = +$»ã»nû +; + +1034 + g$»ã»nû +-> +ä“ +(); + +1039 +un£t +( +$this +-> +_»ã»nûs +[ +$Çme +]); + +1040 + g$»l + = +$this +-> +_bË +-> +g‘R–©iÚ +( +$Çme +); + +1041 + g$»ã»nû + = +$»l +-> +ãtchR–©edFÜ +( +$this +); + +1042 ià( +$»ã»nû + +š¡ªûof + + gDoùrše_CÞËùiÚ +) { + +1043 + g$this +-> + g_»ã»nûs +[ +$Çme +] = +$»ã»nû +; + +1044 } ià( +$»ã»nû + +š¡ªûof + + gDoùrše_RecÜd +) { + +1045 ià( + g$»ã»nû +-> +exi¡s +()) { + +1046 + g$this +-> + g_»ã»nûs +[ +$Çme +] = +$»ã»nû +; + +1048 + g$»ã»nû +-> +ä“ +(); + +1060 +public + +funùiÚ + +þ—rR–©ed +( +$Çme + = +nuÎ +) + +1062 ià( +is_nuÎ +( +$Çme +)) { + +1063 +$this +-> +_»ã»nûs + = +¬¿y +(); + +1065 +un£t +( +$this +-> +_»ã»nûs +[ +$Çme +]); + +1077 +public + +funùiÚ + +»Ï‹dExi¡s +( +$Çme +) + +1079 ià( + g$this +-> +hasReã»nû +( +$Çme +è&& $this-> + g_»ã»nûs +[$Çme] !=ð +£lf +:: +$_nuÎ +) { + +1080  +Œue +; + +1083 + g$»ã»nû + = +$this +-> +$Çme +; + +1084 ià( +$»ã»nû + +š¡ªûof + + gDoùrše_RecÜd +) { + +1085 + g$exi¡s + = +$»ã»nû +-> +exi¡s +(); + +1086 } +–£if + ( +$»ã»nû + +š¡ªûof + +Doùrše_CÞËùiÚ +) { + +1087 +throw + +Ãw + +Doùrše_RecÜd_Exû±iÚ +( + +1092 + g$exi¡s + = +çl£ +; + +1095 ià(! + g$exi¡s +) { + +1096 + g$this +-> +þ—rR–©ed +( +$Çme +); + +1099  + g$exi¡s +; + +1107 +public + +funùiÚ + +g‘TabË +() + +1109  + g$this +-> + g_bË +; + +1117 +public + +funùiÚ + +g‘D©a +() + +1119  + g$this +-> + g_d©a +; + +1130 +public + +funùiÚ + +¿wG‘ +( +$f›ldName +) + +1132 iàÐ! +¬¿y_key_exi¡s +( +$f›ldName +, +$this +-> +_d©a +)) { + +1133 +throw + +Ãw + +Doùrše_RecÜd_Exû±iÚ +('UnknowÀ´Ý”ty '. +$f›ldName +); + +1135 ià( + g$this +-> + g_d©a +[ +$f›ldName +] ==ð +£lf +:: +$_nuÎ +) { + +1136  +nuÎ +; + +1139  + g$this +-> + g_d©a +[ +$f›ldName +]; + +1149 +public + +funùiÚ + +lßd +( +¬¿y + +$d©a + =‡rray()) + +1152 ià( +$this +-> +exi¡s +(è&& $this-> +isInProxyS‹ +()) { + +1153 +$id + = +$this +-> +id’tif›r +(); + +1155 iàÐ! +is_¬¿y +( +$id +)) { + +1156 + g$id + = +¬¿y +( +$id +); + +1159 ià( +em±y +( +$id +)) { + +1160  + gçl£ +; + +1163 + g$bË + = +$this +-> +g‘TabË +(); + +1164 + g$d©a + = +em±y +( +$d©a +è? +$bË +-> +fšd +( +$id +, +Doùrše_CÜe +:: +HYDRATE_ARRAY +) : $data; + +1166 ià( +is_¬¿y +( +$d©a +)) { + +1167 +fܗch + ( +$d©a + +as + +$f›ld + => +$v®ue +) { + +1168 ià( +$bË +-> +hasF›ld +( +$f›ld +è&& ( ! +¬¿y_key_exi¡s +($f›ld, +$this +-> +_d©a +è|| $this->_d©a[$f›ld] ==ð +£lf +:: +$_nuÎ +)) { + +1169 +$this +-> +_d©a +[ +$f›ld +] = +$v®ue +; + +1174 ià( + g$this +-> +isModif›d +()) { + +1175 + g$this +-> + g_¡©e + = +Doùrše_RecÜd +:: +STATE_DIRTY +; + +1176 } ià(! + g$this +-> +isInProxyS‹ +()) { + +1177 + g$this +-> + g_¡©e + = +Doùrše_RecÜd +:: +STATE_CLEAN +; + +1180  + gŒue +; + +1183  + gçl£ +; + +1191 +public + +funùiÚ + +isInProxyS‹ +() + +1193 + g$couÁ + = 0; + +1194 +fܗch + ( +$this +-> +_d©a + +as + +$v®ue +) { + +1195 ià( + g$v®ue + !=ð +£lf +:: +$_nuÎ +) { + +1196 +$couÁ +++; + +1199 ià( + g$couÁ + < + g$this +-> + g_bË +-> +g‘CÞumnCouÁ +()) { + +1200  + gŒue +; + +1202  + gçl£ +; + +1213 +public + +funùiÚ + +hasAcûssÜ +( +$f›ldName +, +$acûssÜ + = +nuÎ +) + +1215 +$compڒtName + = +$this +-> +_bË +-> +g‘CompڒtName +(); + +1216 ià( + g$acûssÜ +) { + +1217 + g£lf +:: +$_cu¡omAcûssÜs +[ +$compڒtName +][ +$f›ldName +] = +$acûssÜ +; + +1219  ( +is£t +( +£lf +:: +$_cu¡omAcûssÜs +[ +$compڒtName +][ +$f›ldName +]) && self::$_customAccessors[$componentName][$fieldName]); + +1229 +public + +funùiÚ + +þ—rAcûssÜ +( +$f›ldName +) + +1231 + g$compڒtName + = +$this +-> +_bË +-> +g‘CompڒtName +(); + +1232 +un£t +( +£lf +:: +$_cu¡omAcûssÜs +[ +$compڒtName +][ +$f›ldName +]); + +1241 +public + +funùiÚ + +g‘AcûssÜ +( +$f›ldName +) + +1243 ià( + g$this +-> +hasAcûssÜ +( +$f›ldName +)) { + +1244 + g$compڒtName + = +$this +-> +_bË +-> +g‘CompڒtName +(); + +1245  + g£lf +:: +$_cu¡omAcûssÜs +[ +$compڒtName +][ +$f›ldName +]; + +1254 +public + +funùiÚ + +g‘AcûssÜs +() + +1256 + g$compڒtName + = +$this +-> +_bË +-> +g‘CompڒtName +(); + +1257  +is£t +( +£lf +:: +$_cu¡omAcûssÜs +[ +$compڒtName +]è? s–f::$_cu¡omAcûssÜs[$compڒtName] : +¬¿y +(); + +1268 +public + +funùiÚ + +hasMutÜ +( +$f›ldName +, +$mutÜ + = +nuÎ +) + +1270 +$compڒtName + = +$this +-> +_bË +-> +g‘CompڒtName +(); + +1271 ià( + g$mutÜ +) { + +1272 + g£lf +:: +$_cu¡omMutÜs +[ +$compڒtName +][ +$f›ldName +] = +$mutÜ +; + +1274  ( +is£t +( +£lf +:: +$_cu¡omMutÜs +[ +$compڒtName +][ +$f›ldName +]) && self::$_customMutators[$componentName][$fieldName]); + +1284 +public + +funùiÚ + +g‘MutÜ +( +$f›ldName +) + +1286 ià( + g$this +-> +hasMutÜ +( +$f›ldName +)) { + +1287 + g$compڒtName + = +$this +-> +_bË +-> +g‘CompڒtName +(); + +1288  + g£lf +:: +$_cu¡omMutÜs +[ +$compڒtName +][ +$f›ldName +]; + +1298 +public + +funùiÚ + +þ—rMutÜ +( +$f›ldName +) + +1300 + g$compڒtName + = +$this +-> +_bË +-> +g‘CompڒtName +(); + +1301 +un£t +( +£lf +:: +$_cu¡omMutÜs +[ +$compڒtName +][ +$f›ldName +]); + +1309 +public + +funùiÚ + +g‘MutÜs +() + +1311 + g$compڒtName + = +$this +-> +_bË +-> +g‘CompڒtName +(); + +1312  + g£lf +:: +$_cu¡omMutÜs +[ +$compڒtName +]; + +1322 +public + +funùiÚ + +hasAcûssÜMutÜ +( +$f›ldName +, +$acûssÜ +, +$mutÜ +) + +1324 + g$this +-> +hasAcûssÜ +( +$f›ldName +, +$acûssÜ +); + +1325 + g$this +-> +hasMutÜ +( +$f›ldName +, +$mutÜ +); + +1336 +public + +funùiÚ + +g‘ +( +$f›ldName +, +$lßd + = +Œue +) + +1338 ià( +$this +-> +_bË +-> +g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_AUTO_ACCESSOR_OVERRIDE +è|| $this-> +hasAcûssÜ +( +$f›ldName +)) { + +1339 +$compڒtName + = +$this +-> +_bË +-> +g‘CompڒtName +(); + +1341 + g$acûssÜ + = +$this +-> +hasAcûssÜ +( +$f›ldName +) + +1342 ? +$this +-> +g‘AcûssÜ +( +$f›ldName +) + +1343 : 'g‘' . +Doùrše_InæeùÜ +:: +þassify +( +$f›ldName +); + +1345 ià( + g$this +-> +hasAcûssÜ +( +$f›ldName +è|| +m‘hod_exi¡s +( +$this +, +$acûssÜ +)) { + +1346 + g$this +-> +hasAcûssÜ +( +$f›ldName +, +$acûssÜ +); + +1347  + g$this +-> +$acûssÜ +( +$lßd +, +$f›ldName +); + +1350  + g$this +-> +_g‘ +( +$f›ldName +, +$lßd +); + +1353 +´Ùeùed + +funùiÚ + +_g‘ +( +$f›ldName +, +$lßd + = +Œue +) + +1355 +$v®ue + = +£lf +:: +$_nuÎ +; + +1357 ià( +¬¿y_key_exi¡s +( +$f›ldName +, +$this +-> +_v®ues +)) { + +1358  + g$this +-> + g_v®ues +[ +$f›ldName +]; + +1361 ià( +¬¿y_key_exi¡s +( +$f›ldName +, +$this +-> +_d©a +)) { + +1363 ià( + g$this +-> + g_d©a +[ +$f›ldName +] ==ð +£lf +:: +$_nuÎ + && +$lßd +) { + +1364 +$this +-> +lßd +(); + +1367 ià( + g$this +-> + g_d©a +[ +$f›ldName +] ==ð +£lf +:: +$_nuÎ +) { + +1368 +$v®ue + = +nuÎ +; + +1370 + g$v®ue + = +$this +-> +_d©a +[ +$f›ldName +]; + +1373  + g$v®ue +; + +1376 + gŒy + { + +1377 iàÐ! +is£t +( +$this +-> +_»ã»nûs +[ +$f›ldName +])) { + +1378 ià( + g$lßd +) { + +1379 + g$»l + = +$this +-> +_bË +-> +g‘R–©iÚ +( +$f›ldName +); + +1380 + g$this +-> + g_»ã»nûs +[ +$f›ldName +] = +$»l +-> +ãtchR–©edFÜ +( +$this +); + +1382 + g$this +-> + g_»ã»nûs +[ +$f›ldName +] = +nuÎ +; + +1386 ià( + g$this +-> + g_»ã»nûs +[ +$f›ldName +] ==ð +£lf +:: +$_nuÎ +) { + +1387  +nuÎ +; + +1390  + g$this +-> + g_»ã»nûs +[ +$f›ldName +]; + +1391 } +ÿtch + ( +Doùrše_TabË_Exû±iÚ + +$e +) { + +1392 + g$sucûss + = +çl£ +; + +1393 +fܗch + ( +$this +-> +_bË +-> +g‘Fž‹rs +(è +as + +$fž‹r +) { + +1394 + gŒy + { + +1395 + g$v®ue + = +$fž‹r +-> +fž‹rG‘ +( +$this +, +$f›ldName +); + +1396 + g$sucûss + = +Œue +; + +1397 } +ÿtch + ( +Doùrše_Exû±iÚ + +$e +) {} + +1399 ià( + g$sucûss +) { + +1400  + g$v®ue +; + +1402 +throw + + g$e +; + +1415 +public + +funùiÚ + +m­V®ue +( +$Çme +, +$v®ue + = +nuÎ +) + +1417 +$this +-> +_v®ues +[ +$Çme +] = +$v®ue +; + +1426 +public + +funùiÚ + +hasM­³dV®ue +( +$Çme +) + +1428  +¬¿y_key_exi¡s +( +$Çme +, +$this +-> +_v®ues +); + +1443 +public + +funùiÚ + +£t +( +$f›ldName +, +$v®ue +, +$lßd + = +Œue +) + +1445 ià( +$this +-> +_bË +-> +g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_AUTO_ACCESSOR_OVERRIDE +è|| $this-> +hasMutÜ +( +$f›ldName +)) { + +1446 +$compڒtName + = +$this +-> +_bË +-> +g‘CompڒtName +(); + +1447 + g$mutÜ + = +$this +-> +hasMutÜ +( +$f›ldName +) + +1448 ? +$this +-> +g‘MutÜ +( +$f›ldName +): + +1449 '£t' . +Doùrše_InæeùÜ +:: +þassify +( +$f›ldName +); + +1451 ià( + g$this +-> +hasMutÜ +( +$f›ldName +è|| +m‘hod_exi¡s +( +$this +, +$mutÜ +)) { + +1452 + g$this +-> +hasMutÜ +( +$f›ldName +, +$mutÜ +); + +1453  + g$this +-> +$mutÜ +( +$v®ue +, +$lßd +, +$f›ldName +); + +1456  + g$this +-> +_£t +( +$f›ldName +, +$v®ue +, +$lßd +); + +1459 +´Ùeùed + +funùiÚ + +_£t +( +$f›ldName +, +$v®ue +, +$lßd + = +Œue +) + +1461 ià( +¬¿y_key_exi¡s +( +$f›ldName +, +$this +-> +_v®ues +)) { + +1462 +$this +-> +_v®ues +[ +$f›ldName +] = +$v®ue +; + +1463 } ià( +¬¿y_key_exi¡s +( +$f›ldName +, +$this +-> +_d©a +)) { + +1464 + g$ty³ + = +$this +-> +_bË +-> +g‘Ty³Of +( +$f›ldName +); + +1465 ià( +$v®ue + +š¡ªûof + + gDoùrše_RecÜd +) { + +1466 + g$id + = +$v®ue +-> +g‘Inüem’‹d +(); + +1468 ià( + g$id + !=ð +nuÎ + && +$ty³ + !== 'object') { + +1469 +$v®ue + = +$id +; + +1473 ià( + g$lßd +) { + +1474 + g$Þd + = +$this +-> +g‘ +( +$f›ldName +, +$lßd +); + +1476 + g$Þd + = +$this +-> +_d©a +[ +$f›ldName +]; + +1479 ià( + g$this +-> +_isV®ueModif›d +( +$ty³ +, +$Þd +, +$v®ue +)) { + +1480 ià( + g$v®ue + ==ð +nuÎ +) { + +1481 +$v®ue + = +$this +-> +_bË +-> +g‘DeçuÉV®ueOf +( +$f›ldName +); + +1483 + g$this +-> + g_d©a +[ +$f›ldName +] = +$v®ue +; + +1484 + g$this +-> + g_modif›d +[] = +$f›ldName +; + +1485 + g$this +-> + g_ÞdV®ues +[ +$f›ldName +] = +$Þd +; + +1487  + g$this +-> + g_¡©e +) { + +1488  + gDoùrše_RecÜd +:: +STATE_CLEAN +: + +1489  +Doùrše_RecÜd +:: +STATE_PROXY +: + +1490 +$this +-> +_¡©e + = +Doùrše_RecÜd +:: +STATE_DIRTY +; + +1492  + gDoùrše_RecÜd +:: +STATE_TCLEAN +: + +1493 +$this +-> +_¡©e + = +Doùrše_RecÜd +:: +STATE_TDIRTY +; + +1498 + gŒy + { + +1499 + g$this +-> +cÜeS‘R–©ed +( +$f›ldName +, +$v®ue +); + +1500 } +ÿtch + ( +Doùrše_TabË_Exû±iÚ + +$e +) { + +1501 + g$sucûss + = +çl£ +; + +1502 +fܗch + ( +$this +-> +_bË +-> +g‘Fž‹rs +(è +as + +$fž‹r +) { + +1503 + gŒy + { + +1504 + g$v®ue + = +$fž‹r +-> +fž‹rS‘ +( +$this +, +$f›ldName +, +$v®ue +); + +1505 + g$sucûss + = +Œue +; + +1506 } +ÿtch + ( +Doùrše_Exû±iÚ + +$e +) {} + +1508 ià( + g$sucûss +) { + +1509  + g$v®ue +; + +1511 +throw + + g$e +; + +1516  + g$this +; + +1534 +´Ùeùed + +funùiÚ + +_isV®ueModif›d +( +$ty³ +, +$Þd +, +$Ãw +) + +1536 ià( +$Ãw + +š¡ªûof + + gDoùrše_Ex´essiÚ +) { + +1537  + gŒue +; + +1540 ià( + g$ty³ + =ð'boޗn' && ( +is_boÞ +( +$Þd +è|| +is_num”ic +($Þd)è&& (is_boÞ( +$Ãw +) || is_numeric($new)) && $old == $new) { + +1541  +çl£ +; + +1542 } ià( +š_¬¿y +( +$ty³ +, +¬¿y +('decim®', 'æßt')è&& +is_num”ic +( +$Þd +è&& is_num”ic( +$Ãw +)) { + +1543  + g$Þd + * 100 !ð +$Ãw + * 100; + +1544 } ià( +š_¬¿y +( +$ty³ +, +¬¿y +('š‹g”', 'št')è&& +is_num”ic +( +$Þd +è&& is_num”ic( +$Ãw +)) { + +1545  + g$Þd + !ð +$Ãw +; + +1546 } ià( + g$ty³ + =ð'time¡amp' || +$ty³ + == 'date') { + +1547 +$ÞdSŒToTime + = +¡¹Ùime +( +$Þd +); + +1548 + g$ÃwSŒToTime + = +¡¹Ùime +( +$Ãw +); + +1549 ià( + g$ÞdSŒToTime + && + g$ÃwSŒToTime +) { + +1550  + g$ÞdSŒToTime + !=ð +$ÃwSŒToTime +; + +1552  + g$Þd + !=ð +$Ãw +; + +1555  + g$Þd + !=ð +$Ãw +; + +1569 +public + +funùiÚ + +cÜeS‘R–©ed +( +$Çme +, +$v®ue +) + +1571 + g$»l + = +$this +-> +_bË +-> +g‘R–©iÚ +( +$Çme +); + +1573 ià( + g$v®ue + ==ð +nuÎ +) { + +1574 +$v®ue + = +£lf +:: +$_nuÎ +; + +1578 ià( +$»l + +š¡ªûof + + gDoùrše_R–©iÚ_FÜeignKey + || $»Èš¡ªûoà + gDoùrše_R–©iÚ_LoÿlKey +) { + +1579 iàÐ! + g$»l +-> +isOÃToOà +()) { + +1581 iàÐ! ( +$v®ue + +š¡ªûof + + gDoùrše_CÞËùiÚ +)) { + +1582 +throw + +Ãw + +Doùrše_RecÜd_Exû±iÚ +("Couldn't call Doctrine_Core::set(), second‡rgument should be‡n instance of Doctrine_Collection when setting one-to-many„eferences."); + +1585 ià( +is£t +( +$this +-> +_»ã»nûs +[ +$Çme +])) { + +1586 + g$this +-> + g_»ã»nûs +[ +$Çme +]-> +£tD©a +( +$v®ue +-> +g‘D©a +()); + +1588  + g$this +; + +1591 + g$loÿlF›ldName + = +$this +-> +_bË +-> +g‘F›ldName +( +$»l +-> +g‘Loÿl +()); + +1593 ià( + g$v®ue + !=ð +£lf +:: +$_nuÎ +) { + +1594 +$»Ï‹dTabË + = +$»l +-> +g‘TabË +(); + +1595 + g$fÜeignF›ldName + = +$»Ï‹dTabË +-> +g‘F›ldName +( +$»l +-> +g‘FÜeign +()); + +1599 iàÐ! ( +$v®ue + +š¡ªûof + + gDoùrše_RecÜd +è&& ! ($v®uš¡ªûoà + gDoùrše_NuÎ +)) { + +1600 +throw + +Ãw + +Doùrše_RecÜd_Exû±iÚ +("Couldn't call Doctrine_Core::set(), second‡rgument should be‡n instance of Doctrine_Record or Doctrine_Null when setting one-to-one„eferences."); + +1603 ià( +$»l + +š¡ªûof + + gDoùrše_R–©iÚ_LoÿlKey +) { + +1604 ià( + g$v®ue + !=ð +£lf +:: +$_nuÎ + && ! +em±y +( +$fÜeignF›ldName +è&& $fÜeignF›ldNam!ð +$v®ue +-> +g‘TabË +()-> +g‘Id’tif›r +()) { + +1605 +$this +-> +£t +( +$loÿlF›ldName +, +$v®ue +-> +¿wG‘ +( +$fÜeignF›ldName +), +çl£ +); + +1608 + g$this +-> +£t +( +$loÿlF›ldName +, +$v®ue +, +çl£ +); + +1610 } +–£if + ( +$v®ue + !=ð +£lf +:: +$_nuÎ +) { + +1612 +$v®ue +-> +£t +( +$fÜeignF›ldName +, +$this +, +çl£ +); + +1615 } ià( +$»l + +š¡ªûof + + gDoùrše_R–©iÚ_AssocŸtiÚ +) { + +1617 iàÐ! ( +$v®ue + +š¡ªûof + + gDoùrše_CÞËùiÚ +)) { + +1618 +throw + +Ãw + +Doùrše_RecÜd_Exû±iÚ +("Couldn't call Doctrine_Core::set(), second‡rgument should be‡n instance of Doctrine_Collection when setting many-to-many„eferences."); + +1622 + g$this +-> + g_»ã»nûs +[ +$Çme +] = +$v®ue +; + +1631 +public + +funùiÚ + +cڏšs +( +$f›ldName +) + +1633 ià( +¬¿y_key_exi¡s +( +$f›ldName +, +$this +-> +_d©a +)) { + +1636  + gŒue +; + +1638 ià( +is£t +( +$this +-> +_id +[ +$f›ldName +])) { + +1639  + gŒue +; + +1641 ià( +is£t +( +$this +-> +_v®ues +[ +$f›ldName +])) { + +1642  + gŒue +; + +1644 ià( +is£t +( +$this +-> +_»ã»nûs +[ +$f›ldName +]) && + +1645 + g$this +-> + g_»ã»nûs +[ +$f›ldName +] !=ð +£lf +:: +$_nuÎ +) { + +1647  +Œue +; + +1649  + gçl£ +; + +1657 +public + +funùiÚ + +__un£t +( +$Çme +) + +1659 ià( +¬¿y_key_exi¡s +( +$Çme +, +$this +-> +_d©a +)) { + +1660 + g$this +-> + g_d©a +[ +$Çme +] = +¬¿y +(); + +1661 } ià( +is£t +( +$this +-> +_»ã»nûs +[ +$Çme +])) { + +1662 ià( + g$this +-> + g_»ã»nûs +[ +$Çme +] +š¡ªûof + + gDoùrše_RecÜd +) { + +1663 + g$this +-> + g_³ndšgD–‘es +[] = +$this +-> +$Çme +; + +1664 + g$this +-> + g_»ã»nûs +[ +$Çme +] = +£lf +:: +$_nuÎ +; + +1665 } +–£if + ( +$this +-> +_»ã»nûs +[ +$Çme +] +š¡ªûof + +Doùrše_CÞËùiÚ +) { + +1666 + g$this +-> + g_³ndšgD–‘es +[] = +$this +-> +$Çme +; + +1667 + g$this +-> + g_»ã»nûs +[ +$Çme +]-> +£tD©a +( +¬¿y +()); + +1677 +public + +funùiÚ + +g‘P’dšgD–‘es +() + +1679  + g$this +-> + g_³ndšgD–‘es +; + +1687 +public + +funùiÚ + +g‘P’dšgUƚks +() + +1689  + g$this +-> + g_³ndšgUƚks +; + +1697 +public + +funùiÚ + +»£tP’dšgUƚks +() + +1699 + g$this +-> + g_³ndšgUƚks + = +¬¿y +(); + +1713 +public + +funùiÚ + +§ve +( +Doùrše_CÚÃùiÚ + +$cÚn + = +nuÎ +) + +1715 ià( +$cÚn + ==ð +nuÎ +) { + +1716 +$cÚn + = +$this +-> +_bË +-> +g‘CÚÃùiÚ +(); + +1718 + g$cÚn +-> + gun™OfWÜk +-> +§veG¿ph +( +$this +); + +1730 +public + +funùiÚ + +ŒySave +( +Doùrše_CÚÃùiÚ + +$cÚn + = +nuÎ +) { + +1731 +Œy + { + +1732 +$this +-> +§ve +( +$cÚn +); + +1733  + gŒue +; + +1734 } +ÿtch + ( +Doùrše_V®id©Ü_Exû±iÚ + +$ignÜed +) { + +1735  + gçl£ +; + +1756 +public + +funùiÚ + +»¶aû +( +Doùrše_CÚÃùiÚ + +$cÚn + = +nuÎ +) + +1758 ià( +$cÚn + ==ð +nuÎ +) { + +1759 +$cÚn + = +$this +-> +_bË +-> +g‘CÚÃùiÚ +(); + +1761  + g$cÚn +-> + gun™OfWÜk +-> +§veG¿ph +( +$this +, +Œue +); + +1771 +public + +funùiÚ + +g‘Modif›d +( +$Þd + = +çl£ +, +$Ï¡ + = false) + +1773 +$a + = +¬¿y +(); + +1775 + g$modif›d + = +$Ï¡ + ? +$this +-> +_Ï¡Modif›d +:$this-> +_modif›d +; + +1776 +fܗch + ( +$modif›d + +as + +$f›ldName +) { + +1777 ià( + g$Þd +) { + +1778 + g$a +[ +$f›ldName +] = +is£t +( +$this +-> +_ÞdV®ues +[$fieldName]) + +1779 ? +$this +-> +_ÞdV®ues +[ +$f›ldName +] + +1780 : +$this +-> +g‘TabË +()-> +g‘DeçuÉV®ueOf +( +$f›ldName +); + +1782 + g$a +[ +$f›ldName +] = +$this +-> +_d©a +[$fieldName]; + +1785  + g$a +; + +1794 +public + +funùiÚ + +g‘La¡Modif›d +( +$Þd + = +çl£ +) + +1796  +$this +-> +g‘Modif›d +( +$Þd +, +Œue +); + +1810 +public + +funùiÚ + +g‘P»·»d +( +¬¿y + +$¬¿y + =‡rray()) + +1812 +$a + = +¬¿y +(); + +1814 ià( +em±y +( +$¬¿y +)) { + +1815 + g$modif›dF›lds + = +$this +-> +_modif›d +; + +1818 +fܗch + ( +$modif›dF›lds + +as + +$f›ld +) { + +1819 + g$ty³ + = +$this +-> +_bË +-> +g‘Ty³Of +( +$f›ld +); + +1821 ià( + g$this +-> + g_d©a +[ +$f›ld +] ==ð +£lf +:: +$_nuÎ +) { + +1822 +$a +[ +$f›ld +] = +nuÎ +; + +1826  + g$ty³ +) { + +1829 +$a +[ +$f›ld +] = +£rŸlize +( +$this +-> +_d©a +[$field]); + +1832 +$a +[ +$f›ld +] = +gzcom´ess +( +$this +-> +_d©a +[$field],5); + +1835 +$a +[ +$f›ld +] = +$this +-> +g‘TabË +()-> +g‘CÚÃùiÚ +()-> +cÚv”tBoޗns +($this-> +_d©a +[$field]); + +1838 ià( +is_¬¿y +( +$this +-> +_d©a +[ +$f›ld +])) { + +1839 +$a +[ +$f›ld +] = +im¶ode +(',', +$this +-> +_d©a +[$field]); + +1841 + g$a +[ +$f›ld +] = +$this +-> +_d©a +[$field]; + +1845 ià( +$this +-> +_d©a +[ +$f›ld +] +š¡ªûof + +Doùrše_RecÜd +) { + +1846 +$a +[ +$f›ld +] = +$this +-> +_d©a +[$f›ld]-> +g‘Inüem’‹d +(); + +1847 ià( + g$a +[ +$f›ld +] !=ð +nuÎ +) { + +1848 +$this +-> +_d©a +[ +$f›ld +] = +$a +[$field]; + +1851 + g$a +[ +$f›ld +] = +$this +-> +_d©a +[$field]; + +1861  + g$a +; + +1869 +public + +funùiÚ + +couÁ +() + +1871  +couÁ +( +$this +-> +_d©a +); + +1879 +public + +funùiÚ + +cÞumnCouÁ +() + +1881  + g$this +-> +couÁ +(); + +1892 +public + +funùiÚ + +toA¼ay +( +$d“p + = +Œue +, +$´efixKey + = +çl£ +) + +1894 ià( +$this +-> +_¡©e + =ð +£lf +:: +STATE_LOCKED + || $this->_¡©=ð£lf:: +STATE_TLOCKED +) { + +1895  +çl£ +; + +1898 + g$¡©eBefÜeLock + = +$this +-> +_¡©e +; + +1899 + g$this +-> + g_¡©e + = +$this +-> +exi¡s +(è? +£lf +:: +STATE_LOCKED + : s–f:: +STATE_TLOCKED +; + +1901 + g$a + = +¬¿y +(); + +1903 +fܗch + ( +$this + +as + +$cÞumn + => +$v®ue +) { + +1904 ià( +$v®ue + ==ð +£lf +:: +$_nuÎ + || +is_objeù +($value)) { + +1905 +$v®ue + = +nuÎ +; + +1908 + g$cÞumnV®ue + = +$this +-> +g‘ +( +$cÞumn +, +çl£ +); + +1910 ià( +$cÞumnV®ue + +š¡ªûof + + gDoùrše_RecÜd +) { + +1911 + g$a +[ +$cÞumn +] = +$cÞumnV®ue +-> +g‘Inüem’‹d +(); + +1913 + g$a +[ +$cÞumn +] = +$cÞumnV®ue +; + +1917 ià( + g$this +-> + g_bË +-> +g‘Id’tif›rTy³ +(è=ð +Doùrše_CÜe +:: +IDENTIFIER_AUTOINC +) { + +1918 +$i + = +$this +-> +_bË +-> +g‘Id’tif›r +(); + +1919 + g$a +[ +$i +] = +$this +-> +g‘Inüem’‹d +(); + +1922 ià( + g$d“p +) { + +1923 +fܗch + ( +$this +-> +_»ã»nûs + +as + +$key + => +$»ÏtiÚ +) { + +1924 iàÐ! +$»ÏtiÚ + +š¡ªûof + +Doùrše_NuÎ +) { + +1925 +$a +[ +$key +] = +$»ÏtiÚ +-> +toA¼ay +( +$d“p +, +$´efixKey +); + +1931 +fܗch + ( +$this +-> +_v®ues + +as + +$key + => +$v®ue +) { + +1932 +$a +[ +$key +] = ( +$v®ue + +š¡ªûof + +Doùrše_RecÜd + || $v®uš¡ªûoà +Doùrše_CÞËùiÚ +) + +1933 ? +$v®ue +-> +toA¼ay +( +$d“p +, +$´efixKey +) : $value; + +1936 + g$this +-> + g_¡©e + = +$¡©eBefÜeLock +; + +1938  + g$a +; + +1951 +public + +funùiÚ + +m”ge +( +$d©a +, +$d“p + = +Œue +) + +1953 ià( +$d©a + +š¡ªûof + +$this +) { + +1954 +$¬¿y + = +$d©a +-> +toA¼ay +( +$d“p +); + +1955 } ià( +is_¬¿y +( +$d©a +)) { + +1956 + g$¬¿y + = +$d©a +; + +1959  + g$this +-> +äomA¼ay +( +$¬¿y +, +$d“p +); + +1970 +public + +funùiÚ + +äomA¼ay +( +¬¿y + +$¬¿y +, +$d“p + = +Œue +) + +1972 +$»äesh + = +çl£ +; + +1973 +fܗch + ( +$¬¿y + +as + +$key + => +$v®ue +) { + +1974 ià( +$key + == '_identifier') { + +1975 +$»äesh + = +Œue +; + +1976 + g$this +-> +assignId’tif›r +( +$v®ue +); + +1980 ià( + g$d“p + && + g$this +-> +g‘TabË +()-> +hasR–©iÚ +( +$key +)) { + +1981 iàÐ! + g$this +-> + g$key +) { + +1982 + g$this +-> +»äeshR–©ed +( +$key +); + +1985 ià( +is_¬¿y +( +$v®ue +)) { + +1986 ià( +is£t +( +$v®ue +[0]è&& ! +is_¬¿y +($value[0])) { + +1987 + g$this +-> +uƚk +( +$key +, +¬¿y +(), +çl£ +); + +1988 + g$this +-> +lšk +( +$key +, +$v®ue +, +çl£ +); + +1990 + g$this +-> + g$key +-> +äomA¼ay +( +$v®ue +, +$d“p +); + +1993 } ià( + g$this +-> +g‘TabË +()-> +hasF›ld +( +$key +è|| +¬¿y_key_exi¡s +($key, +$this +-> +_v®ues +)) { + +1994 + g$this +-> +£t +( +$key +, +$v®ue +); + +1996 + g$m‘hod + = '£t' . +Doùrše_InæeùÜ +:: +þassify +( +$key +); + +1998 + gŒy + { + +1999 ià( +is_ÿÎabË +( +¬¿y +( +$this +, +$m‘hod +))) { + +2000 + g$this +-> +$m‘hod +( +$v®ue +); + +2002 } +ÿtch + ( +Doùrše_RecÜd_Exû±iÚ + +$e +) {} + +2006 ià( + g$»äesh +) { + +2007 + g$this +-> +»äesh +(); + +2023 +public + +funùiÚ + +synchrÚizeW™hA¼ay +( +¬¿y + +$¬¿y +, +$d“p + = +Œue +) + +2025 +$»äesh + = +çl£ +; + +2026 +fܗch + ( +$¬¿y + +as + +$key + => +$v®ue +) { + +2027 ià( +$key + == '_identifier') { + +2028 +$»äesh + = +Œue +; + +2029 + g$this +-> +assignId’tif›r +( +$v®ue +); + +2033 ià( + g$d“p + && + g$this +-> +g‘TabË +()-> +hasR–©iÚ +( +$key +)) { + +2034 iàÐ! + g$this +-> + g$key +) { + +2035 + g$this +-> +»äeshR–©ed +( +$key +); + +2038 ià( +is_¬¿y +( +$v®ue +)) { + +2039 ià( +is£t +( +$v®ue +[0]è&& ! +is_¬¿y +($value[0])) { + +2040 + g$this +-> +uƚk +( +$key +, +¬¿y +(), +çl£ +); + +2041 + g$this +-> +lšk +( +$key +, +$v®ue +, +çl£ +); + +2043 + g$this +-> + g$key +-> +synchrÚizeW™hA¼ay +( +$v®ue +); + +2044 + g$this +-> + g$key + = +$this +-> +$key +; + +2047 } ià( + g$this +-> +g‘TabË +()-> +hasF›ld +( +$key +è|| +¬¿y_key_exi¡s +($key, +$this +-> +_v®ues +)) { + +2048 + g$this +-> +£t +( +$key +, +$v®ue +); + +2053 +fܗch + ( +$this +-> +_»ã»nûs + +as + +$Çme + => +$»ÏtiÚ +) { + +2054 +$»l + = +$this +-> +g‘TabË +()-> +g‘R–©iÚ +( +$Çme +); + +2056 iàÐ! + g$»l +-> +isRefCÏss +(è&& ! +is£t +( +$¬¿y +[ +$Çme +]è&& ( ! $»l-> +isOÃToOà +(è|| ! is£t($¬¿y[ +$»l +-> +g‘LoÿlF›ldName +()]))) { + +2057 +un£t +( +$this +-> +$Çme +); + +2061 ià( + g$»äesh +) { + +2062 + g$this +-> +»äesh +(); + +2073 +public + +funùiÚ + +expÜtTo +( +$ty³ +, +$d“p + = +Œue +) + +2075 ià( +$ty³ + == 'array') { + +2076  +$this +-> +toA¼ay +( +$d“p +); + +2078  + gDoùrše_P¬£r +:: +dump +( +$this +-> +toA¼ay +( +$d“p +, +Œue +), +$ty³ +); + +2089 +public + +funùiÚ + +impÜtFrom +( +$ty³ +, +$d©a +, +$d“p + = +Œue +) + +2091 ià( +$ty³ + == 'array') { + +2092  +$this +-> +äomA¼ay +( +$d©a +, +$d“p +); + +2094  + g$this +-> +äomA¼ay +( +Doùrše_P¬£r +:: +lßd +( +$d©a +, +$ty³ +), +$d“p +); + +2103 +public + +funùiÚ + +exi¡s +() + +2105  ( + g$this +-> + g_¡©e + !=ð +Doùrše_RecÜd +:: +STATE_TCLEAN + && + +2106 +$this +-> +_¡©e + !=ð +Doùrše_RecÜd +:: +STATE_TDIRTY + && + +2107 +$this +-> +_¡©e + !=ð +Doùrše_RecÜd +:: +STATE_TLOCKED + && + +2108 +$this +-> +_¡©e + !=ð +nuÎ +); + +2117 +public + +funùiÚ + +isModif›d +( +$d“p + = +çl£ +) + +2119 +$modif›d + = ( +$this +-> +_¡©e + ==ð +Doùrše_RecÜd +:: +STATE_DIRTY + || + +2120 +$this +-> +_¡©e + ==ð +Doùrše_RecÜd +:: +STATE_TDIRTY +); + +2121 iàÐ! + g$modif›d + && + g$d“p +) { + +2122 ià( + g$this +-> + g_¡©e + =ð +£lf +:: +STATE_LOCKED + || +$this +-> +_¡©e + =ð£lf:: +STATE_TLOCKED +) { + +2123  +çl£ +; + +2126 + g$¡©eBefÜeLock + = +$this +-> +_¡©e +; + +2127 + g$this +-> + g_¡©e + = +$this +-> +exi¡s +(è? +£lf +:: +STATE_LOCKED + : s–f:: +STATE_TLOCKED +; + +2129 +fܗch + ( +$this +-> +_»ã»nûs + +as + +$»ã»nû +) { + +2130 ià( +$»ã»nû + +š¡ªûof + + gDoùrše_RecÜd +) { + +2131 ià( + g$modif›d + = +$»ã»nû +-> +isModif›d +( +$d“p +)) { + +2134 } ià( +$»ã»nû + +š¡ªûof + + gDoùrše_CÞËùiÚ +) { + +2135 +fܗch + ( +$»ã»nû + +as + +$»cÜd +) { + +2136 ià( + g$modif›d + = +$»cÜd +-> +isModif›d +( +$d“p +)) { + +2142 + g$this +-> + g_¡©e + = +$¡©eBefÜeLock +; + +2144  + g$modif›d +; + +2152 +public + +funùiÚ + +hasR–©iÚ +( +$f›ldName +) + +2154 ià( +is£t +( +$this +-> +_d©a +[ +$f›ldName +]è|| is£t($this-> +_id +[$fieldName])) { + +2155  + gŒue +; + +2157  + g$this +-> + g_bË +-> +hasR–©iÚ +( +$f›ldName +); + +2164 +public + +funùiÚ + +g‘I‹¿tÜ +() + +2166  +Ãw + +Doùrše_RecÜd_I‹¿tÜ +( +$this +); + +2177 +public + +funùiÚ + +d–‘e +( +Doùrše_CÚÃùiÚ + +$cÚn + = +nuÎ +) + +2179 ià( +$cÚn + =ð +nuÎ +) { + +2180 +$cÚn + = +$this +-> +_bË +-> +g‘CÚÃùiÚ +(); + +2182  + g$cÚn +-> + gun™OfWÜk +-> +d–‘e +( +$this +); + +2191 +public + +funùiÚ + +cÝy +( +$d“p + = +çl£ +) + +2193 +$d©a + = +$this +-> +_d©a +; + +2194 + g$idty³ + = +$this +-> +_bË +-> +g‘Id’tif›rTy³ +(); + +2195 ià( + g$idty³ + ==ð +Doùrše_CÜe +:: +IDENTIFIER_AUTOINC + || +$idty³ + ==ðDoùrše_CÜe:: +IDENTIFIER_SEQUENCE +) { + +2196 +$id + = +$this +-> +_bË +-> +g‘Id’tif›r +(); + +2198 +un£t +( +$d©a +[ +$id +]); + +2201 + g$»t + = +$this +-> +_bË +-> +ü—‹ +( +$d©a +); + +2202 + g$modif›d + = +¬¿y +(); + +2204 +fܗch + ( +$d©a + +as + +$key + => +$v® +) { + +2205 iàÐ! ( +$v® + +š¡ªûof + +Doùrše_NuÎ +)) { + +2206 +$»t +-> +_modif›d +[] = +$key +; + +2210 ià( + g$d“p +) { + +2211 +fܗch + ( +$this +-> +_»ã»nûs + +as + +$key + => +$v®ue +) { + +2212 ià( +$v®ue + +š¡ªûof + +Doùrše_CÞËùiÚ +) { + +2213 +fܗch + ( +$v®ue + +as + +$v®ueKey + => +$»cÜd +) { + +2214 +$»t +->{ +$key +}[ +$v®ueKey +] = +$»cÜd +-> +cÝy +( +$d“p +); + +2216 } ià( +$v®ue + +š¡ªûof + + gDoùrše_RecÜd +) { + +2217 + g$»t +-> +£t +( +$key +, +$v®ue +-> +cÝy +( +$d“p +)); + +2222  + g$»t +; + +2231 +public + +funùiÚ + +assignId’tif›r +( +$id + = +çl£ +) + +2233 ià( +$id + ==ð +çl£ +) { + +2234 +$this +-> +_id + = +¬¿y +(); + +2235 + g$this +-> + g_d©a + = +$this +-> +þ—nD©a +($this-> +_d©a +); + +2236 + g$this +-> + g_¡©e + = +Doùrše_RecÜd +:: +STATE_TCLEAN +; + +2237 + g$this +-> +_»£tModif›d +(); + +2238 } +–£if + ( +$id + ==ð +Œue +) { + +2239 +$this +-> +´•¬eId’tif›rs +( +Œue +); + +2240 + g$this +-> + g_¡©e + = +Doùrše_RecÜd +:: +STATE_CLEAN +; + +2241 + g$this +-> +_»£tModif›d +(); + +2243 ià( +is_¬¿y +( +$id +)) { + +2244 +fܗch + ( +$id + +as + +$f›ldName + => +$v®ue +) { + +2245 +$this +-> +_id +[ +$f›ldName +] = +$v®ue +; + +2246 + g$this +-> + g_d©a +[ +$f›ldName +] = +$v®ue +; + +2249 + g$Çme + = +$this +-> +_bË +-> +g‘Id’tif›r +(); + +2250 + g$this +-> + g_id +[ +$Çme +] = +$id +; + +2251 + g$this +-> + g_d©a +[ +$Çme +] = +$id +; + +2253 + g$this +-> + g_¡©e + = +Doùrše_RecÜd +:: +STATE_CLEAN +; + +2254 + g$this +-> +_»£tModif›d +(); + +2263 +public + +funùiÚ + +id’tif›r +() + +2265  + g$this +-> + g_id +; + +2274 +fš® + +public + +funùiÚ + +g‘Inüem’‹d +() + +2276 + g$id + = +cu¼’t +( +$this +-> +_id +); + +2277 ià( + g$id + ==ð +çl£ +) { + +2278  +nuÎ +; + +2281  + g$id +; + +2292 +public + +funùiÚ + +g‘La¡ +() + +2294  + g$this +; + +2302 +public + +funùiÚ + +hasReã»nû +( +$Çme +) + +2304  +is£t +( +$this +-> +_»ã»nûs +[ +$Çme +]); + +2313 +public + +funùiÚ + +»ã»nû +( +$Çme +) + +2315 ià( +is£t +( +$this +-> +_»ã»nûs +[ +$Çme +])) { + +2316  + g$this +-> + g_»ã»nûs +[ +$Çme +]; + +2326 +public + +funùiÚ + +obšReã»nû +( +$Çme +) + +2328 ià( +is£t +( +$this +-> +_»ã»nûs +[ +$Çme +])) { + +2329  + g$this +-> + g_»ã»nûs +[ +$Çme +]; + +2331 +throw + +Ãw + +Doùrše_RecÜd_Exû±iÚ +("Unknown„eference $name"); + +2338 +public + +funùiÚ + +g‘Reã»nûs +() + +2340  + g$this +-> + g_»ã»nûs +; + +2349 +fš® + +public + +funùiÚ + +£tR–©ed +( +$®Ÿs +, +Doùrše_Acûss + +$cÞl +) + +2351 + g$this +-> + g_»ã»nûs +[ +$®Ÿs +] = +$cÞl +; + +2362 +public + +funùiÚ + +lßdReã»nû +( +$Çme +) + +2364 + g$»l + = +$this +-> +_bË +-> +g‘R–©iÚ +( +$Çme +); + +2365 + g$this +-> + g_»ã»nûs +[ +$Çme +] = +$»l +-> +ãtchR–©edFÜ +( +$this +); + +2376 +public + +funùiÚ + +ÿÎ +( +$ÿÎback +, +$cÞumn +) + +2378 + g$¬gs + = +func_g‘_¬gs +(); + +2379 +¬¿y_shiá +( +$¬gs +); + +2381 ià( +is£t +( +$¬gs +[0])) { + +2382 + g$f›ldName + = +$¬gs +[0]; + +2383 + g$¬gs +[0] = +$this +-> +g‘ +( +$f›ldName +); + +2385 + g$Ãwv®ue + = +ÿÎ_u£r_func_¬¿y +( +$ÿÎback +, +$¬gs +); + +2387 + g$this +-> + g_d©a +[ +$f›ldName +] = +$Ãwv®ue +; + +2389  + g$this +; + +2397 +public + +funùiÚ + +g‘Node +() + +2399 iàÐ! + g$this +-> + g_bË +-> +isT»e +()) { + +2400  + gçl£ +; + +2403 iàÐ! +is£t +( +$this +-> +_node +)) { + +2404 + g$this +-> + g_node + = +Doùrše_Node +:: +çùÜy +( +$this +, + +2405 +$this +-> +g‘TabË +()-> +g‘O±iÚ +('treeImpl'), + +2406 +$this +-> +g‘TabË +()-> +g‘O±iÚ +('treeOptions') + +2410  + g$this +-> + g_node +; + +2413 +public + +funùiÚ + +unshiáFž‹r +( +Doùrše_RecÜd_Fž‹r + +$fž‹r +) + +2415  + g$this +-> + g_bË +-> +unshiáFž‹r +( +$fž‹r +); + +2428 +public + +funùiÚ + +uƚk +( +$®Ÿs +, +$ids + = +¬¿y +(), +$now + = +çl£ +) + +2430 +$ids + = ( +¬¿y +) $ids; + +2433 iàÐ! +is£t +( +$this +-> +_»ã»nûs +[ +$®Ÿs +]è&& + g$this +-> +hasR–©iÚ +($alias)) { + +2434 + g$this +-> +lßdReã»nû +( +$®Ÿs +); + +2437 + g$®lIds + = +¬¿y +(); + +2438 ià( +is£t +( +$this +-> +_»ã»nûs +[ +$®Ÿs +])) { + +2439 ià( + g$this +-> + g_»ã»nûs +[ +$®Ÿs +] +š¡ªûof + + gDoùrše_RecÜd +) { + +2440 + g$®lIds +[] = +$this +-> +_»ã»nûs +[ +$®Ÿs +]-> +id’tif›r +(); + +2441 ià( +š_¬¿y +( +$this +-> +_»ã»nûs +[ +$®Ÿs +]-> +id’tif›r +(), +$ids +è|| +em±y +($ids)) { + +2442 +un£t +( +$this +-> +_»ã»nûs +[ +$®Ÿs +]); + +2445 + g$®lIds + = +$this +-> +g‘ +( +$®Ÿs +)-> +g‘Prim¬yKeys +(); + +2446 +fܗch + ( +$this +-> +_»ã»nûs +[ +$®Ÿs +] +as + +$k + => +$»cÜd +) { + +2447 ià( +š_¬¿y +( +cu¼’t +( +$»cÜd +-> +id’tif›r +()), +$ids +è|| +em±y +($ids)) { + +2448 +$this +-> +_»ã»nûs +[ +$®Ÿs +]-> +»move +( +$k +); + +2454 iàÐ! + g$this +-> +exi¡s +(è|| + g$now + ==ð +çl£ +) { + +2455 iàÐ! +$ids +) { + +2456 +$ids + = +$®lIds +; + +2458 +fܗch + ( +$ids + +as + +$id +) { + +2459 + g$this +-> + g_³ndšgUƚks +[ +$®Ÿs +][ +$id +] = +Œue +; + +2461  + g$this +; + +2463  + g$this +-> +uƚkInDb +( +$®Ÿs +, +$ids +); + +2473 +public + +funùiÚ + +uƚkInDb +( +$®Ÿs +, +$ids + = +¬¿y +()) + +2475 +$»l + = +$this +-> +g‘TabË +()-> +g‘R–©iÚ +( +$®Ÿs +); + +2477 ià( +$»l + +š¡ªûof + + gDoùrše_R–©iÚ_AssocŸtiÚ +) { + +2478 + g$q + = +$»l +-> +g‘AssocŸtiÚTabË +() + +2479 -> +ü—‹Qu”y +() + +2480 -> +d–‘e +() + +2481 -> +wh”e +( +$»l +-> +g‘Loÿl +(è. ' = ?', +¬¿y_v®ues +( +$this +-> +id’tif›r +())); + +2483 ià( +couÁ +( +$ids +) > 0) { + +2484 + g$q +-> +wh”eIn +( +$»l +-> +g‘FÜeign +(), +$ids +); + +2487 + g$q +-> +execu‹ +(); + +2488 } ià( +$»l + +š¡ªûof + + gDoùrše_R–©iÚ_FÜeignKey +) { + +2489 + g$q + = +$»l +-> +g‘TabË +()-> +ü—‹Qu”y +() + +2490 -> +upd©e +() + +2491 -> +£t +( +$»l +-> +g‘FÜeign +(), '?', +¬¿y +( +nuÎ +)) + +2492 -> +addWh”e +( +$»l +-> +g‘FÜeign +(è. ' = ?', +¬¿y_v®ues +( +$this +-> +id’tif›r +())); + +2494 ià( +couÁ +( +$ids +) > 0) { + +2495 + g$q +-> +wh”eIn +( +$»l +-> +g‘TabË +()-> +g‘Id’tif›r +(), +$ids +); + +2498 + g$q +-> +execu‹ +(); + +2500  + g$this +; + +2511 +public + +funùiÚ + +lšk +( +$®Ÿs +, +$ids +, +$now + = +çl£ +) + +2513 +$ids + = ( +¬¿y +) $ids; + +2515 iàÐ! +couÁ +( +$ids +)) { + +2516  + g$this +; + +2519 iàÐ! + g$this +-> +exi¡s +(è|| + g$now + ==ð +çl£ +) { + +2520 +$»lTabË + = +$this +-> +g‘TabË +()-> +g‘R–©iÚ +( +$®Ÿs +)->getTable(); + +2521 + g$»cÜds + = +$»lTabË +-> +ü—‹Qu”y +() + +2522 -> +wh”eIn +( +$»lTabË +-> +g‘Id’tif›r +(), +$ids +) + +2523 -> +execu‹ +(); + +2525 +fܗch + ( +$»cÜds + +as + +$»cÜd +) { + +2526 ià( + g$this +-> +$®Ÿs + +š¡ªûof + + gDoùrše_RecÜd +) { + +2527 + g$this +-> +£t +( +$®Ÿs +, +$»cÜd +); + +2529 ià( + g$c + = +$this +-> +g‘ +( +$®Ÿs +)) { + +2530 +$c +-> +add +( +$»cÜd +); + +2532 + g$this +-> +£t +( +$®Ÿs +, +$»cÜd +); + +2537 +fܗch + ( +$ids + +as + +$id +) { + +2538 ià( +is£t +( +$this +-> +_³ndšgUƚks +[ +$®Ÿs +][ +$id +])) { + +2539 +un£t +( +$this +-> +_³ndšgUƚks +[ +$®Ÿs +][ +$id +]); + +2543  + g$this +; + +2545  + g$this +-> +lškInDb +( +$®Ÿs +, +$ids +); + +2556 +public + +funùiÚ + +lškInDb +( +$®Ÿs +, +$ids +) + +2558 + g$id’tif›r + = +¬¿y_v®ues +( +$this +-> +id’tif›r +()); + +2559 + g$id’tif›r + = +¬¿y_shiá +( +$id’tif›r +); + +2561 + g$»l + = +$this +-> +g‘TabË +()-> +g‘R–©iÚ +( +$®Ÿs +); + +2563 ià( +$»l + +š¡ªûof + + gDoùrše_R–©iÚ_AssocŸtiÚ +) { + +2564 + g$mod–CÏssName + = +$»l +-> +g‘AssocŸtiÚTabË +()-> +g‘CompڒtName +(); + +2565 + g$loÿlF›ldName + = +$»l +-> +g‘LoÿlF›ldName +(); + +2566 + g$loÿlF›ldDef + = +$»l +-> +g‘AssocŸtiÚTabË +()-> +g‘CÞumnDefš™iÚ +( +$loÿlF›ldName +); + +2568 ià( + g$loÿlF›ldDef +['type'] == 'integer') { + +2569 +$id’tif›r + = ( +š‹g” +) $identifier; + +2572 + g$fÜeignF›ldName + = +$»l +-> +g‘FÜeignF›ldName +(); + +2573 + g$fÜeignF›ldDef + = +$»l +-> +g‘AssocŸtiÚTabË +()-> +g‘CÞumnDefš™iÚ +( +$fÜeignF›ldName +); + +2575 ià( + g$fÜeignF›ldDef +['type'] == 'integer') { + +2576 +fܗch + ( +$ids + +as + +$i + => +$id +) { + +2577 +$ids +[ +$i +] = ( +š‹g” +è +$id +; + +2581 +fܗch + ( +$ids + +as + +$id +) { + +2582 + g$»cÜd + = +Ãw + +$mod–CÏssName +; + +2583 + g$»cÜd +[ +$loÿlF›ldName +] = +$id’tif›r +; + +2584 + g$»cÜd +[ +$fÜeignF›ldName +] = +$id +; + +2585 + g$»cÜd +-> +§ve +(); + +2587 } ià( +$»l + +š¡ªûof + + gDoùrše_R–©iÚ_FÜeignKey +) { + +2588 + g$q + = +$»l +-> +g‘TabË +() + +2589 -> +ü—‹Qu”y +() + +2590 -> +upd©e +() + +2591 -> +£t +( +$»l +-> +g‘FÜeign +(), '?', +¬¿y_v®ues +( +$this +-> +id’tif›r +())); + +2593 ià( +couÁ +( +$ids +) > 0) { + +2594 + g$q +-> +wh”eIn +( +$»l +-> +g‘TabË +()-> +g‘Id’tif›r +(), +$ids +); + +2597 + g$q +-> +execu‹ +(); + +2598 } ià( +$»l + +š¡ªûof + + gDoùrše_R–©iÚ_LoÿlKey +) { + +2599 + g$q + = +$this +-> +g‘TabË +() + +2600 -> +ü—‹Qu”y +() + +2601 -> +upd©e +() + +2602 -> +£t +( +$»l +-> +g‘LoÿlF›ldName +(), '?', +$ids +); + +2604 ià( +couÁ +( +$ids +) > 0) { + +2605 + g$q +-> +wh”eIn +( +$»l +-> +g‘TabË +()-> +g‘Id’tif›r +(), +¬¿y_v®ues +( +$this +-> +id’tif›r +())); + +2608 + g$q +-> +execu‹ +(); + +2611  + g$this +; + +2621 +´Ùeùed + +funùiÚ + +_»£tModif›d +() + +2623 iàÐ! +em±y +( +$this +-> +_modif›d +)) { + +2624 + g$this +-> + g_Ï¡Modif›d + = +$this +-> +_modif›d +; + +2625 + g$this +-> + g_modif›d + = +¬¿y +(); + +2642 +public + +funùiÚ + +__ÿÎ +( +$m‘hod +, +$¬gs +) + +2644 ià(( + g$‹m¶©e + = +$this +-> +_bË +-> +g‘M‘hodOwÃr +( +$m‘hod +)è!=ð +çl£ +) { + +2645 +$‹m¶©e +-> +£tInvok” +( +$this +); + +2646  +ÿÎ_u£r_func_¬¿y +( +¬¿y +( +$‹m¶©e +, +$m‘hod +), +$¬gs +); + +2649 +fܗch + ( +$this +-> +_bË +-> +g‘Tem¶©es +(è +as + +$‹m¶©e +) { + +2650 ià( +is_ÿÎabË +( +¬¿y +( +$‹m¶©e +, +$m‘hod +))) { + +2651 + g$‹m¶©e +-> +£tInvok” +( +$this +); + +2652 + g$this +-> + g_bË +-> +£tM‘hodOwÃr +( +$m‘hod +, +$‹m¶©e +); + +2654  +ÿÎ_u£r_func_¬¿y +( +¬¿y +( +$‹m¶©e +, +$m‘hod +), +$¬gs +); + +2658 +throw + +Ãw + +Doùrše_RecÜd_UnknownPrݔtyExû±iÚ +( +¥rštf +('UnknowÀm‘hod %s::%s', +g‘_þass +( +$this +), +$m‘hod +)); + +2665 +public + +funùiÚ + +d–‘eNode +() + +2667 + g$this +-> +g‘Node +()-> +d–‘e +(); + +2678 +public + +funùiÚ + +ä“ +( +$d“p + = +çl£ +) + +2680 ià( +$this +-> +_¡©e + !ð +£lf +:: +STATE_LOCKED + && $this->_¡©!ð£lf:: +STATE_TLOCKED +) { + +2681 +$this +-> +_¡©e + = $this-> +exi¡s +(è? +£lf +:: +STATE_LOCKED + : s–f:: +STATE_TLOCKED +; + +2683 + g$this +-> + g_bË +-> +g‘R•os™Üy +()-> +eviù +( +$this +-> +_oid +); + +2684 + g$this +-> + g_bË +-> +»moveRecÜd +( +$this +); + +2685 + g$this +-> + g_d©a + = +¬¿y +(); + +2686 + g$this +-> + g_id + = +¬¿y +(); + +2688 ià( + g$d“p +) { + +2689 +fܗch + ( +$this +-> +_»ã»nûs + +as + +$Çme + => +$»ã»nû +) { + +2690 iàÐ! ( +$»ã»nû + +š¡ªûof + +Doùrše_NuÎ +)) { + +2691 +$»ã»nû +-> +ä“ +( +$d“p +); + +2696 + g$this +-> + g_»ã»nûs + = +¬¿y +(); + +2705 +public + +funùiÚ + +toSŒšg +() + +2707  + gDoùrše_CÜe +:: +dump +( +g‘_objeù_v¬s +( +$this +)); + +2714 +public + +funùiÚ + +__toSŒšg +() + +2716  ( + g¡ršg +è + g$this +-> + g_oid +; + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record/Abstract.php + +1 +_bË +; + +59 + } +} + +67 +public + +funùiÚ + + $addLi¡’” +( +$li¡’” +, +$Çme + = +nuÎ +) + +69 +$this +-> +_bË +-> + `addRecÜdLi¡’” +( +$li¡’” +, +$Çme +); + +71  +$this +; + +72 + } +} + +79 +public + +funùiÚ + + $g‘Li¡’” +() + +81  +$this +-> +_bË +-> + `g‘RecÜdLi¡’” +(); + +82 + } +} + +90 +public + +funùiÚ + + $£tLi¡’” +( +$li¡’” +) + +92 +$this +-> +_bË +-> + `£tRecÜdLi¡’” +( +$li¡’” +); + +94  +$this +; + +95 + } +} + +107 +public + +funùiÚ + +šdex +( +$Çme +, +¬¿y + +$defš™iÚ + = + $¬¿y +()) + +109 iàÐ! +$defš™iÚ +) { + +110  +$this +-> +_bË +-> + `g‘Index +( +$Çme +); + +112  +$this +-> +_bË +-> + `addIndex +( +$Çme +, +$defš™iÚ +); + +114 + } +} + +128 +public + +funùiÚ + +unique +( +$f›lds +, +$ÝtiÚs + = +¬¿y +(), +$ü—‹UniqueIndex + = +Œue +) + +130  +$this +-> +_bË +-> +unique +( +$f›lds +, +$ÝtiÚs +, +$ü—‹UniqueIndex +); + +133 +public + +funùiÚ + + $£tA‰ribu‹ +( +$©Œ +, +$v®ue +) + +135 +$this +-> +_bË +-> + `£tA‰ribu‹ +( +$©Œ +, +$v®ue +); + +136 + } +} + +138 +public + +funùiÚ + + $£tTabËName +( +$bËName +) + +140 +$this +-> +_bË +-> + `£tTabËName +( +$bËName +); + +141 + } +} + +143 +public + +funùiÚ + + $£tInh”™ªûM­ +( +$m­ +) + +145 +$this +-> +_bË +-> + `£tO±iÚ +('šh”™ªûM­', +$m­ +); + +146 + } +} + +148 +public + +funùiÚ + + $£tSubþas£s +( +$m­ +) + +150 +$þass + = + `g‘_þass +( +$this +); + +152 ià( + `is£t +( +$m­ +[ +$þass +])) { + +154 +$m­F›ldNames + = +$m­ +[ +$þass +]; + +155 +$m­CÞumnNames + = + `¬¿y +(); + +157 + `fܗch + ( +$m­F›ldNames + +as + +$f›ldName + => +$v® +) { + +158 +$m­CÞumnNames +[ +$this +-> + `g‘TabË +()-> + `g‘CÞumnName +( +$f›ldName +)] = +$v® +; + +161 +$this +-> +_bË +-> + `£tO±iÚ +('šh”™ªûM­', +$m­CÞumnNames +); + +165 +$m­F›ldName + = + `¬¿y_keys +( + `’d +( +$m­ +)); + +166 +$this +-> + `šdex +($this-> + `g‘TabË +()-> + `g‘TabËName +().'_'. +$m­F›ldName +[0], + `¬¿y +('fields' =>‡rray($mapFieldName[0]))); + +170 +$this +-> +_bË +-> + `£tO±iÚ +('subþas£s', + `¬¿y_keys +( +$m­ +)); + +171 + } +} + +182 +public + +funùiÚ + + $©Œibu‹ +( +$©Œ +, +$v®ue +) + +184 ià( +$v®ue + =ð +nuÎ +) { + +185 ià( + `is_¬¿y +( +$©Œ +)) { + +186 + `fܗch + ( +$©Œ + +as + +$k + => +$v +) { + +187 +$this +-> +_bË +-> + `£tA‰ribu‹ +( +$k +, +$v +); + +190  +$this +-> +_bË +-> + `g‘A‰ribu‹ +( +$©Œ +); + +193 +$this +-> +_bË +-> + `£tA‰ribu‹ +( +$©Œ +, +$v®ue +); + +195 + } +} + +206 +public + +funùiÚ + + $ÝtiÚ +( +$Çme +, +$v®ue + = +nuÎ +) + +208 ià( +$v®ue + ==ð +nuÎ +) { + +209 ià( + `is_¬¿y +( +$Çme +)) { + +210 + `fܗch + ( +$Çme + +as + +$k + => +$v +) { + +211 +$this +-> +_bË +-> + `£tO±iÚ +( +$k +, +$v +); + +214  +$this +-> +_bË +-> + `g‘O±iÚ +( +$Çme +); + +217 +$this +-> +_bË +-> + `£tO±iÚ +( +$Çme +, +$v®ue +); + +219 + } +} + +229 +public + +funùiÚ + + $hasOà +() + +231 +$this +-> +_bË +-> + `bšd +( + `func_g‘_¬gs +(), +Doùrše_R–©iÚ +:: +ONE +); + +233  +$this +; + +234 + } +} + +244 +public + +funùiÚ + + $hasMªy +() + +246 +$this +-> +_bË +-> + `bšd +( + `func_g‘_¬gs +(), +Doùrše_R–©iÚ +:: +MANY +); + +248  +$this +; + +249 + } +} + +260 +public + +funùiÚ + +hasCÞumn +( +$Çme +, +$ty³ + = +nuÎ +, +$Ëngth + =‚uÎ, +$ÝtiÚs + = + $¬¿y +()) + +262 +$this +-> +_bË +-> + `£tCÞumn +( +$Çme +, +$ty³ +, +$Ëngth +, +$ÝtiÚs +); + +263 + } +} + +271 +public + +funùiÚ + + $hasCÞumns +( +¬¿y + +$defš™iÚs +) + +273 + `fܗch + ( +$defš™iÚs + +as + +$Çme + => +$ÝtiÚs +) { + +274 +$Ëngth + = + `is£t +( +$ÝtiÚs +['Ëngth']è? $ÝtiÚs['Ëngth']: +nuÎ +; + +275 +$this +-> + `hasCÞumn +( +$Çme +, +$ÝtiÚs +['ty³'], +$Ëngth +, $options); + +277 + } +} + +297 +public + +funùiÚ + + $£tCÞumnO±iÚs +( +$Çme +, +¬¿y + +$ÝtiÚs +) + +299 +$this +-> +_bË +-> + `£tCÞumnO±iÚs +( +$Çme +, +$ÝtiÚs +); + +300 + } +} + +310 +public + +funùiÚ + + $£tCÞumnO±iÚ +( +$cÞumnName +, +$ÝtiÚ +, +$v®ue +) + +312 +$this +-> +_bË +-> + `£tCÞumnO±iÚ +( +$cÞumnName +, +$ÝtiÚ +, +$v®ue +); + +313 + } +} + +322 +public + +funùiÚ + + $bšdQu”yP¬ts +( +¬¿y + +$qu”yP¬ts +) + +324 +$this +-> +_bË +-> + `bšdQu”yP¬ts +( +$qu”yP¬ts +); + +326  +$this +; + +327 + } +} + +329 +public + +funùiÚ + + $lßdG’”©Ü +( +Doùrše_RecÜd_G’”©Ü + +$g’”©Ü +) + +331 +$g’”©Ü +-> + `š™Ÿlize +( +$this +-> +_bË +); + +333 +$this +-> +_bË +-> + `addG’”©Ü +( +$g’”©Ü +, + `g‘_þass +($generator)); + +334 + } +} + +349 +public + +funùiÚ + +aùAs +( +$l +, +¬¿y + +$ÝtiÚs + = + $¬¿y +()) + +351 iàÐ! + `is_objeù +( +$l +)) { + +352 +$þassName + = 'Doùrše_Tem¶©e_' . +$l +; + +354 ià( + `þass_exi¡s +( +$þassName +, +Œue +)) { + +355 +$l + = +Ãw + + `$þassName +( +$ÝtiÚs +); + +356 } ià( + `þass_exi¡s +( +$l +, +Œue +)) { + +357 +$l + = +Ãw + + `$l +( +$ÝtiÚs +); + +359 +throw + +Ãw + + `Doùrše_RecÜd_Exû±iÚ +('Could‚Ù†ßd behavi܂amed: "' . +$l + . '"'); + +363 iàÐ! ( +$l + +š¡ªûof + +Doùrše_Tem¶©e +)) { + +364 +throw + +Ãw + + `Doùrše_RecÜd_Exû±iÚ +('Loaded behavior class is‚ot‡n instance of Doctrine_Template.'); + +367 +$þassName + = + `g‘_þass +( +$l +); + +369 +$this +-> +_bË +-> + `addTem¶©e +( +$þassName +, +$l +); + +371 +$l +-> + `£tInvok” +( +$this +); + +372 +$l +-> + `£tTabË +( +$this +-> +_bË +); + +373 +$l +-> + `£tUp +(); + +374 +$l +-> + `£tTabËDefš™iÚ +(); + +376  +$this +; + +377 + } +} + +388 +public + +funùiÚ + + $check +( +$cÚ¡¿št +, +$Çme + = +nuÎ +) + +390 ià( + `is_¬¿y +( +$cÚ¡¿št +)) { + +391 + `fܗch + ( +$cÚ¡¿št + +as + +$Çme + => +$def +) { + +392 +$this +-> +_bË +-> + `addCheckCÚ¡¿št +( +$def +, +$Çme +); + +395 +$this +-> +_bË +-> + `addCheckCÚ¡¿št +( +$cÚ¡¿št +, +$Çme +); + +397  +$this +; + +398 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record/Exception.php + +1 +_bË + = +$bË +; + +43 +public + +funùiÚ + + $g‘TabË +() + +45  +$this +-> +_bË +; + +46 + } +} + +48 +public + +funùiÚ + + $š™ +() + +50 + } +} + +58 +ab¡¿ù + +public + +funùiÚ + +fž‹rS‘ +( +Doùrše_RecÜd + +$»cÜd +, +$Çme +, +$v®ue +); + +66 +ab¡¿ù + +public + +funùiÚ + +fž‹rG‘ +( +Doùrše_RecÜd + +$»cÜd +, +$Çme +); + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record/Filter/Compound.php + +1 +_®Ÿ£s + = +$®Ÿ£s +; + +42 +public + +funùiÚ + + $š™ +() + +45 + `fܗch + ( +$this +-> +_®Ÿ£s + +as + +$®Ÿs +) { + +46 +$this +-> +_bË +-> + `g‘R–©iÚ +( +$®Ÿs +); + +48 + } +} + +56 +public + +funùiÚ + + $fž‹rS‘ +( +Doùrše_RecÜd + +$»cÜd +, +$Çme +, +$v®ue +) + +58 + `fܗch + ( +$this +-> +_®Ÿ£s + +as + +$®Ÿs +) { + +59 iàÐ! +$»cÜd +-> + `exi¡s +()) { + +60 ià( + `is£t +( +$»cÜd +[ +$®Ÿs +][ +$Çme +])) { + +61 +$»cÜd +[ +$®Ÿs +][ +$Çme +] = +$v®ue +; + +63  +$»cÜd +; + +66 ià( + `is£t +( +$»cÜd +[ +$®Ÿs +][ +$Çme +])) { + +67 +$»cÜd +[ +$®Ÿs +][ +$Çme +] = +$v®ue +; + +70  +$»cÜd +; + +73 +throw + +Ãw + + `Doùrše_RecÜd_UnknownPrݔtyExû±iÚ +( + `¥rštf +('UnknowÀ»cÜd…rݔty /„–©ed compڒˆ"%s" oÀ"%s"', +$Çme +, + `g‘_þass +( +$»cÜd +))); + +74 + } +} + +82 +public + +funùiÚ + + $fž‹rG‘ +( +Doùrše_RecÜd + +$»cÜd +, +$Çme +) + +84 + `fܗch + ( +$this +-> +_®Ÿ£s + +as + +$®Ÿs +) { + +85 iàÐ! +$»cÜd +-> + `exi¡s +()) { + +86 ià( + `is£t +( +$»cÜd +[ +$®Ÿs +][ +$Çme +])) { + +87  +$»cÜd +[ +$®Ÿs +][ +$Çme +]; + +90 ià( + `is£t +( +$»cÜd +[ +$®Ÿs +][ +$Çme +])) { + +91  +$»cÜd +[ +$®Ÿs +][ +$Çme +]; + +95 +throw + +Ãw + + `Doùrše_RecÜd_UnknownPrݔtyExû±iÚ +( + `¥rštf +('UnknowÀ»cÜd…rݔty /„–©ed compڒˆ"%s" oÀ"%s"', +$Çme +, + `g‘_þass +( +$»cÜd +))); + +96 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record/Filter/Standard.php + +1 +çl£ +, + +42 'g’”©eP©h' => +çl£ +, + +43 'bužd”O±iÚs' => +¬¿y +(), + +44 'id’tif›r' => +çl£ +, + +45 'bË' => +çl£ +, + +46 '¶ugšTabË' => +çl£ +, + +47 'chžd»n' => +¬¿y +(), + +48 'ÿsÿdeD–‘e' => +Œue +, + +49 '­pLev–D–‘e' => +çl£ + + +57 +´Ùeùed + + m$_š™Ÿlized + = +çl£ +; + +64 +public + +funùiÚ + + $__g‘ +( +$ÝtiÚ +) + +66 ià( + `is£t +( +$this +-> +_ÝtiÚs +[ +$ÝtiÚ +])) { + +67  +$this +-> +_ÝtiÚs +[ +$ÝtiÚ +]; + +69  +nuÎ +; + +77 +public + +funùiÚ + + $__is£t +( +$ÝtiÚ +) + +79  + `is£t +( +$this +-> +_ÝtiÚs +[ +$ÝtiÚ +]); + +80 + } +} + +88 +public + +funùiÚ + + $g‘O±iÚ +( +$Çme +) + +90 iàÐ! + `is£t +( +$this +-> +_ÝtiÚs +[ +$Çme +])) { + +91 +throw + +Ãw + + `Doùrše_Exû±iÚ +('UnknowÀÝtiÚ ' . +$Çme +); + +94  +$this +-> +_ÝtiÚs +[ +$Çme +]; + +95 + } +} + +104 +public + +funùiÚ + + $£tO±iÚ +( +$Çme +, +$v®ue +) + +106 +$this +-> +_ÝtiÚs +[ +$Çme +] = +$v®ue +; + +108  +$this +; + +109 + } +} + +117 +public + +funùiÚ + + $addChžd +( +$g’”©Ü +) + +119 +$this +-> +_ÝtiÚs +['chžd»n'][] = +$g’”©Ü +; + +120 + } +} + +127 +public + +funùiÚ + + $g‘O±iÚs +() + +129  +$this +-> +_ÝtiÚs +; + +130 + } +} + +139 +public + +funùiÚ + + $š™Ÿlize +( +Doùrše_TabË + +$bË +) + +141 ià( +$this +-> +_š™Ÿlized +) { + +142  +çl£ +; + +145 +$this +-> +_š™Ÿlized + = +Œue +; + +147 +$this +-> + `š™O±iÚs +(); + +149 +$bË +-> + `addG’”©Ü +( +$this +, + `g‘_þass +($this)); + +151 +$this +-> +_ÝtiÚs +['bË'] = +$bË +; + +153 +$owÃrCÏssName + = +$this +-> +_ÝtiÚs +['bË']-> + `g‘CompڒtName +(); + +154 +$þassName + = +$this +-> +_ÝtiÚs +['className']; + +155 +$this +-> +_ÝtiÚs +['þassName'] = + `¡r_»¶aû +('%CLASS%', +$owÃrCÏssName +, +$þassName +); + +157 ià( + `is£t +( +$this +-> +_ÝtiÚs +['tableName'])) { + +158 +$owÃrTabËName + = +$this +-> +_ÝtiÚs +['bË']-> + `g‘TabËName +(); + +159 +$bËName + = +$this +-> +_ÝtiÚs +['tableName']; + +160 +$this +-> +_ÝtiÚs +['bËName'] = + `¡r_»¶aû +('%TABLE%', +$owÃrTabËName +, +$bËName +); + +164 ià( +$this +-> +_ÝtiÚs +['g’”©eFžes'] ==ð +çl£ + && + `þass_exi¡s +($this->_options['className'])) { + +165 +$this +-> +_bË + = +Doùrše_CÜe +:: + `g‘TabË +($this-> +_ÝtiÚs +['className']); + +166  +çl£ +; + +169 +$this +-> + `buždTabË +(); + +171 +$fk + = +$this +-> + `buždFÜeignKeys +($this-> +_ÝtiÚs +['table']); + +173 +$this +-> +_bË +-> + `£tCÞumns +( +$fk +); + +175 +$this +-> + `buždR–©iÚ +(); + +177 +$this +-> + `£tTabËDefš™iÚ +(); + +178 +$this +-> + `£tUp +(); + +180 +$this +-> + `g’”©eCÏssFromTabË +($this-> +_bË +); + +182 +$this +-> + `buždChždDefš™iÚs +(); + +184 +$this +-> +_bË +-> + `š™Id’tif›r +(); + +185 + } +} + +193 +public + +funùiÚ + + $buždTabË +() + +196 +$cÚn + = +$this +-> +_ÝtiÚs +['bË']-> + `g‘CÚÃùiÚ +(); + +197 +$bšdCÚnName + = +$cÚn +-> + `g‘Mªag” +()-> + `g‘CÚÃùiÚFÜCompڒt +( +$this +-> +_ÝtiÚs +['bË']-> + `g‘CompڒtName +())-> + `g‘Name +(); + +198 ià( +$bšdCÚnName +) { + +199 +$cÚn +-> + `g‘Mªag” +()-> + `bšdCompڒt +( +$this +-> +_ÝtiÚs +['þassName'], +$bšdCÚnName +); + +201 +$cÚn +-> + `g‘Mªag” +()-> + `bšdCompڒt +( +$this +-> +_ÝtiÚs +['þassName'], $cÚn-> + `g‘Name +()); + +205 +$bËCÏss + = +$cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_TABLE_CLASS +); + +206 +$this +-> +_bË + = +Ãw + + `$bËCÏss +($this-> +_ÝtiÚs +['þassName'], +$cÚn +); + +207 +$this +-> +_bË +-> + `£tG’”©Ü +($this); + +210 ià( + `is£t +( +$this +-> +_ÝtiÚs +['tableName']) && $this->_options['tableName']) { + +211 +$this +-> +_bË +-> + `£tTabËName +($this-> +_ÝtiÚs +['tableName']); + +215 +$ÝtiÚs + = +$this +-> +_ÝtiÚs +['bË']-> + `g‘O±iÚs +(); + +217 +$ÃwO±iÚs + = + `¬¿y +(); + +218 +$mašš + = + `¬¿y +('type', 'collate', 'charset'); + +219 + `fܗch + ( +$mašš + +as + +$key +) { + +220 ià( + `is£t +( +$ÝtiÚs +[ +$key +])) { + +221 +$ÃwO±iÚs +[ +$key +] = +$ÝtiÚs +[$key]; + +225 +$this +-> +_bË +-> + `£tO±iÚs +( +$ÃwO±iÚs +); + +227 +$cÚn +-> + `addTabË +( +$this +-> +_bË +); + +228 + } +} + +236 +public + +funùiÚ + + $š™O±iÚs +() + +239 + } +} + +246 +public + +funùiÚ + + $buždChždDefš™iÚs +() + +248 iàÐ! + `is£t +( +$this +-> +_ÝtiÚs +['children'])) { + +249 +throw + +Ãw + + `Doùrše_RecÜd_Exû±iÚ +("Unknown option 'children'."); + +252 + `fܗch + ( +$this +-> +_ÝtiÚs +['chžd»n'] +as + +$chžd +) { + +253 ià( +$chžd + +š¡ªûof + +Doùrše_Tem¶©e +) { + +254 ià( +$chžd +-> + `g‘Plugš +(è!=ð +nuÎ +) { + +255 +$this +-> +_bË +-> + `addG’”©Ü +( +$chžd +-> + `g‘Plugš +(), + `g‘_þass +($child->getPlugin())); + +258 +$this +-> +_bË +-> + `addTem¶©e +( + `g‘_þass +( +$chžd +), $child); + +260 +$chžd +-> + `£tInvok” +( +$this +); + +261 +$chžd +-> + `£tTabË +( +$this +-> +_bË +); + +262 +$chžd +-> + `£tTabËDefš™iÚ +(); + +263 +$chžd +-> + `£tUp +(); + +265 +$this +-> +_bË +-> + `addG’”©Ü +( +$chžd +, + `g‘_þass +($child)); + +266 +$chžd +-> + `š™Ÿlize +( +$this +-> +_bË +); + +269 + } +} + +279 +public + +funùiÚ + + $buždFÜeignKeys +( +Doùrše_TabË + +$bË +) + +281 +$fk + = + `¬¿y +(); + +283 + `fܗch + (( +¬¿y +è +$bË +-> + `g‘Id’tif›r +(è +as + +$f›ld +) { + +284 +$def + = +$bË +-> + `g‘Defš™iÚOf +( +$f›ld +); + +286 + `un£t +( +$def +['autoincrement']); + +287 + `un£t +( +$def +['sequence']); + +288 + `un£t +( +$def +['primary']); + +290 +$cÞ + = +$bË +-> + `hasCÞumn +( +$f›ld +è? $f›ld : $bË-> + `g‘CÞumnName +($field) . '‡s ' . $field; + +292 +$def +['´im¬y'] = +Œue +; + +293 +$fk +[ +$cÞ +] = +$def +; + +295  +$fk +; + +296 + } +} + +305 +public + +funùiÚ + + $buždLoÿlR–©iÚ +( +$®Ÿs + = +nuÎ +) + +307 +$ÝtiÚs + = + `¬¿y +( + +308 'loÿl' => +$this +-> + `g‘R–©iÚLoÿlKey +(), + +309 'fÜeign' => +$this +-> + `g‘R–©iÚFÜeignKey +(), + +310 'ownšgSide' => +Œue + + +313 ià( + `is£t +( +$this +-> +_ÝtiÚs +['cascadeDelete']) && $this->_options['cascadeDelete'] && ! $this->_options['appLevelDelete']) { + +314 +$ÝtiÚs +['onDelete'] = 'CASCADE'; + +315 +$ÝtiÚs +['onUpdate'] = 'CASCADE'; + +318 +$®ŸsSŒ + = ''; + +320 ià( +$®Ÿs + !=ð +nuÎ +) { + +321 +$®ŸsSŒ + = '‡ ' . +$®Ÿs +; + +324 +$this +-> + `hasOà +($this-> +_ÝtiÚs +['bË']-> + `g‘CompڒtName +(è. +$®ŸsSŒ +, +$ÝtiÚs +); + +325 + } +} + +334 +public + +funùiÚ + + $owÃrHasMªy +( +$Çme +, +$ÝtiÚs +) + +336 +$this +-> +_ÝtiÚs +['bË']-> + `hasMªy +( +$Çme +, +$ÝtiÚs +); + +337 + } +} + +346 +public + +funùiÚ + + $owÃrHasOà +( +$Çme +, +$ÝtiÚs +) + +348 +$this +-> +_ÝtiÚs +['bË']-> + `hasOà +( +$Çme +, +$ÝtiÚs +); + +349 + } +} + +358 +public + +funùiÚ + + $buždFÜeignR–©iÚ +( +$®Ÿs + = +nuÎ +) + +360 +$ÝtiÚs + = + `¬¿y +( + +361 'loÿl' => +$this +-> + `g‘R–©iÚFÜeignKey +(), + +362 'fÜeign' => +$this +-> + `g‘R–©iÚLoÿlKey +(), + +363 'loÿlKey' => +çl£ + + +366 ià( + `is£t +( +$this +-> +_ÝtiÚs +['cascadeDelete']) && $this->_options['cascadeDelete'] && $this->_options['appLevelDelete']) { + +367 +$ÝtiÚs +['ÿsÿde'] = + `¬¿y +('delete'); + +370 +$®ŸsSŒ + = ''; + +372 ià( +$®Ÿs + !=ð +nuÎ +) { + +373 +$®ŸsSŒ + = '‡ ' . +$®Ÿs +; + +376 +$this +-> + `owÃrHasMªy +($this-> +_bË +-> + `g‘CompڒtName +(è. +$®ŸsSŒ +, +$ÝtiÚs +); + +377 + } +} + +384 +public + +funùiÚ + + $g‘R–©iÚLoÿlKey +() + +386  +$this +-> + `g‘R–©iÚFÜeignKey +(); + +387 + } +} + +394 +public + +funùiÚ + + $g‘R–©iÚFÜeignKey +() + +396 +$bË + = +$this +-> +_ÝtiÚs +['table']; + +397 +$id’tif›r + = +$bË +-> + `g‘Id’tif›r +(); + +399 + `fܗch + (( +¬¿y +è +$id’tif›r + +as + +$cÞumn +) { + +400 +$def + = +$bË +-> + `g‘Defš™iÚOf +( +$cÞumn +); + +401 ià( + `is£t +( +$def +['primary']) && $def['primary'] && isset($def['autoincrement']) && $def['autoincrement']) { + +402  +$cÞumn +; + +406  +$id’tif›r +; + +407 + } +} + +416 +public + +funùiÚ + + $buždR–©iÚ +() + +418 +$this +-> + `buždFÜeignR–©iÚ +(); + +419 +$this +-> + `buždLoÿlR–©iÚ +(); + +420 + } +} + +428 +public + +funùiÚ + + $g’”©eCÏssFromTabË +( +Doùrše_TabË + +$bË +) + +430 +$defš™iÚ + = + `¬¿y +(); + +431 +$defš™iÚ +['cÞumns'] = +$bË +-> + `g‘CÞumns +(); + +432 +$defš™iÚ +['bËName'] = +$bË +-> + `g‘TabËName +(); + +433 +$defš™iÚ +['aùAs'] = +$bË +-> + `g‘Tem¶©es +(); + +435  +$this +-> + `g’”©eCÏss +( +$defš™iÚ +); + +436 + } +} + +445 +public + +funùiÚ + +g’”©eCÏss +( +¬¿y + +$defš™iÚ + = + $¬¿y +()) + +447 +$defš™iÚ +['þassName'] = +$this +-> +_ÝtiÚs +['className']; + +448 +$defš™iÚ +['toSŒšg'] = + `is£t +( +$this +-> +_ÝtiÚs +['toSŒšg']è? $this->_ÝtiÚs['toSŒšg'] : +çl£ +; + +449 ià( + `is£t +( +$this +-> +_ÝtiÚs +['listeners'])) { + +450 +$defš™iÚ +['li¡’”s'] = +$this +-> +_ÝtiÚs +['listeners']; + +453 +$bužd” + = +Ãw + + `Doùrše_ImpÜt_Bužd” +(); + +454 +$bužd”O±iÚs + = + `is£t +( +$this +-> +_ÝtiÚs +['bužd”O±iÚs']è? ( +¬¿y +è$this->_ÝtiÚs['bužd”O±iÚs']: + `¬¿y +(); + +455 +$bužd” +-> + `£tO±iÚs +( +$bužd”O±iÚs +); + +457 ià( +$this +-> +_ÝtiÚs +['generateFiles']) { + +458 ià( + `is£t +( +$this +-> +_ÝtiÚs +['generatePath']) && $this->_options['generatePath']) { + +459 +$bužd” +-> + `£tT¬g‘P©h +( +$this +-> +_ÝtiÚs +['generatePath']); + +460 +$bužd” +-> + `buždRecÜd +( +$defš™iÚ +); + +462 +throw + +Ãw + + `Doùrše_RecÜd_Exû±iÚ +('If you wisho generate fileshen you must specifyhe…atho generatehe files in.'); + +465 +$def + = +$bužd” +-> + `buždDefš™iÚ +( +$defš™iÚ +); + +467 + `ev® +( +$def +); + +469 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record/Iterator.php + +1 +»cÜd + = +$»cÜd +; + +53 +·»Á +:: + `__cÚ¡ruù +( +$»cÜd +-> + `g‘D©a +()); + +61 +public +  +funùiÚ + + $š™NuÎObjeù +( +Doùrše_NuÎ + +$nuÎ +) + +63 +£lf +:: +$nuÎ + = $null; + +64 + } +} + +71 +public + +funùiÚ + + $cu¼’t +() + +73 +$v®ue + = +·»Á +:: + `cu¼’t +(); + +75 ià( +$v®ue + ==ð +£lf +:: +$nuÎ +) { + +76  +nuÎ +; + +78  +$v®ue +; + +80 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record/Listener.php + +1 +çl£ +); + +47 +public + +funùiÚ + + $£tO±iÚ +( +$Çme +, +$v®ue + = +nuÎ +) + +49 ià( + `is_¬¿y +( +$Çme +)) { + +50 +$this +-> +_ÝtiÚs + = +Doùrše_Lib +:: + `¬¿yD“pM”ge +($this->_ÝtiÚs, +$Çme +); + +52 +$this +-> +_ÝtiÚs +[ +$Çme +] = +$v®ue +; + +62 +public + +funùiÚ + + $g‘O±iÚs +() + +64  +$this +-> +_ÝtiÚs +; + +65 + } +} + +74 +public + +funùiÚ + + $g‘O±iÚ +( +$Çme +) + +76 ià( + `is£t +( +$this +-> +_ÝtiÚs +[ +$Çme +])) { + +77  +$this +-> +_ÝtiÚs +[ +$Çme +]; + +80  +nuÎ +; + +81 + } +} + +83 +public + +funùiÚ + + $´eS”Ÿlize +( +Doùrše_Ev’t + +$ev’t +) + +84 { + } +} + +86 +public + +funùiÚ + + $po¡S”Ÿlize +( +Doùrše_Ev’t + +$ev’t +) + +87 { + } +} + +89 +public + +funùiÚ + + $´eUn£rŸlize +( +Doùrše_Ev’t + +$ev’t +) + +90 { + } +} + +92 +public + +funùiÚ + + $po¡Un£rŸlize +( +Doùrše_Ev’t + +$ev’t +) + +93 { + } +} + +95 +public + +funùiÚ + + $´eDqlS–eù +( +Doùrše_Ev’t + +$ev’t +) + +96 { + } +} + +98 +public + +funùiÚ + + $´eSave +( +Doùrše_Ev’t + +$ev’t +) + +99 { + } +} + +101 +public + +funùiÚ + + $po¡Save +( +Doùrše_Ev’t + +$ev’t +) + +102 { + } +} + +104 +public + +funùiÚ + + $´eDqlD–‘e +( +Doùrše_Ev’t + +$ev’t +) + +105 { + } +} + +107 +public + +funùiÚ + + $´eD–‘e +( +Doùrše_Ev’t + +$ev’t +) + +108 { + } +} + +110 +public + +funùiÚ + + $po¡D–‘e +( +Doùrše_Ev’t + +$ev’t +) + +111 { + } +} + +113 +public + +funùiÚ + + $´eDqlUpd©e +( +Doùrše_Ev’t + +$ev’t +) + +114 { + } +} + +116 +public + +funùiÚ + + $´eUpd©e +( +Doùrše_Ev’t + +$ev’t +) + +117 { + } +} + +119 +public + +funùiÚ + + $po¡Upd©e +( +Doùrše_Ev’t + +$ev’t +) + +120 { + } +} + +122 +public + +funùiÚ + + $´eIn£¹ +( +Doùrše_Ev’t + +$ev’t +) + +123 { + } +} + +125 +public + +funùiÚ + + $po¡In£¹ +( +Doùrše_Ev’t + +$ev’t +) + +126 { + } +} + +128 +public + +funùiÚ + + $´eHyd¿‹ +( +Doùrše_Ev’t + +$ev’t +) + +129 { + } +} + +131 +public + +funùiÚ + + $po¡Hyd¿‹ +( +Doùrše_Ev’t + +$ev’t +) + +132 { + } +} + +134 +public + +funùiÚ + + $´eV®id©e +( +Doùrše_Ev’t + +$ev’t +) + +135 { + } +} + +137 +public + +funùiÚ + + $po¡V®id©e +( +Doùrše_Ev’t + +$ev’t +) + +138 { + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record/Listener/Chain.php + +1 +çl£ +); + +54 +public + +funùiÚ + + $£tO±iÚ +( +$Çme +, +$v®ue + = +nuÎ +) + +56 ià( + `is_¬¿y +( +$Çme +)) { + +57 +$this +-> +_ÝtiÚs + = +Doùrše_Lib +:: + `¬¿yD“pM”ge +($this->_ÝtiÚs, +$Çme +); + +59 +$this +-> +_ÝtiÚs +[ +$Çme +] = +$v®ue +; + +70 +public + +funùiÚ + + $g‘O±iÚ +( +$Çme +) + +72 ià( + `is£t +( +$this +-> +_ÝtiÚs +[ +$Çme +])) { + +73  +$this +-> +_ÝtiÚs +[ +$Çme +]; + +76  +nuÎ +; + +77 + } +} + +84 +public + +funùiÚ + + $g‘O±iÚs +() + +86  +$this +-> +_ÝtiÚs +; + +87 + } +} + +97 +public + +funùiÚ + + $add +( +$li¡’” +, +$Çme + = +nuÎ +) + +99 iàÐ! ( +$li¡’” + +š¡ªûof + +Doùrše_RecÜd_Li¡’”_IÁ”çû +) && + +100 ! ( +$li¡’” + +š¡ªûof + +Doùrše_Ov”lßdabË +)) { + +102 +throw + +Ãw + + `Doùrše_Ev’tLi¡’”_Exû±iÚ +("Couldn't‡ddƒventlistener. Record†isteners should implementƒither Doctrine_Record_Listener_Interface or Doctrine_Overloadable"); + +104 ià( +$Çme + ==ð +nuÎ +) { + +105 +$this +-> +_li¡’”s +[] = +$li¡’” +; + +107 +$this +-> +_li¡’”s +[ +$Çme +] = +$li¡’” +; + +109 + } +} + +118 +public + +funùiÚ + + $g‘ +( +$key +) + +120 iàÐ! + `is£t +( +$this +-> +_li¡’”s +[ +$key +])) { + +121  +nuÎ +; + +123  +$this +-> +_li¡’”s +[ +$key +]; + +124 + } +} + +133 +public + +funùiÚ + + $£t +( +$key +, +$li¡’” +) + +135 +$this +-> +_li¡’”s +[ +$key +] = +$li¡’” +; + +136 + } +} + +138 +public + +funùiÚ + + $´eS”Ÿlize +( +Doùrše_Ev’t + +$ev’t +) + +140 +$di§bËd + = +$this +-> + `g‘O±iÚ +('disabled'); + +142 ià( +$di§bËd + !=ð +Œue + && ! ( + `is_¬¿y +($di§bËdè&& + `š_¬¿y +('preSerialize', $disabled))) { + +143 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +144 +$di§bËd + = +$li¡’” +-> + `g‘O±iÚ +('disabled'); + +146 ià( +$di§bËd + !=ð +Œue + && ! ( + `is_¬¿y +($di§bËdè&& + `š_¬¿y +('preSerialize', $disabled))) { + +147 +$li¡’” +-> + `´eS”Ÿlize +( +$ev’t +); + +151 + } +} + +153 +public + +funùiÚ + + $po¡S”Ÿlize +( +Doùrše_Ev’t + +$ev’t +) + +155 +$di§bËd + = +$this +-> + `g‘O±iÚ +('disabled'); + +157 ià( +$di§bËd + !=ð +Œue + && ! ( + `is_¬¿y +($di§bËdè&& + `š_¬¿y +('postSerialize', $disabled))) { + +158 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +159 +$di§bËd + = +$li¡’” +-> + `g‘O±iÚ +('disabled'); + +161 ià( +$di§bËd + !=ð +Œue + && ! ( + `is_¬¿y +($di§bËdè&& + `š_¬¿y +('postSerialize', $disabled))) { + +162 +$li¡’” +-> + `po¡S”Ÿlize +( +$ev’t +); + +166 + } +} + +168 +public + +funùiÚ + + $´eUn£rŸlize +( +Doùrše_Ev’t + +$ev’t +) + +170 +$di§bËd + = +$this +-> + `g‘O±iÚ +('disabled'); + +172 ià( +$di§bËd + !=ð +Œue + && ! ( + `is_¬¿y +($di§bËdè&& + `š_¬¿y +('preUnserialize', $disabled))) { + +173 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +174 +$di§bËd + = +$li¡’” +-> + `g‘O±iÚ +('disabled'); + +176 ià( +$di§bËd + !=ð +Œue + && ! ( + `is_¬¿y +($di§bËdè&& + `š_¬¿y +('preUnserialize', $disabled))) { + +177 +$li¡’” +-> + `´eUn£rŸlize +( +$ev’t +); + +181 + } +} + +183 +public + +funùiÚ + + $po¡Un£rŸlize +( +Doùrše_Ev’t + +$ev’t +) + +185 +$di§bËd + = +$this +-> + `g‘O±iÚ +('disabled'); + +187 ià( +$di§bËd + !=ð +Œue + && ! ( + `is_¬¿y +($di§bËdè&& + `š_¬¿y +('postUnserialize', $disabled))) { + +188 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +189 +$di§bËd + = +$li¡’” +-> + `g‘O±iÚ +('disabled'); + +191 ià( +$di§bËd + !=ð +Œue + && ! ( + `is_¬¿y +($di§bËdè&& + `š_¬¿y +('postUnserialize', $disabled))) { + +192 +$li¡’” +-> + `po¡Un£rŸlize +( +$ev’t +); + +196 + } +} + +198 +public + +funùiÚ + + $´eDqlS–eù +( +Doùrše_Ev’t + +$ev’t +) + +200 +$di§bËd + = +$this +-> + `g‘O±iÚ +('disabled'); + +202 ià( +$di§bËd + !=ð +Œue + && ! ( + `is_¬¿y +($di§bËdè&& + `š_¬¿y +('preDqlSelect', $disabled))) { + +203 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +204 +$di§bËd + = +$li¡’” +-> + `g‘O±iÚ +('disabled'); + +206 ià( +$di§bËd + !=ð +Œue + && ! ( + `is_¬¿y +($di§bËdè&& + `š_¬¿y +('preDqlSelect', $disabled))) { + +207 +$li¡’” +-> + `´eDqlS–eù +( +$ev’t +); + +211 + } +} + +213 +public + +funùiÚ + + $´eSave +( +Doùrše_Ev’t + +$ev’t +) + +215 +$di§bËd + = +$this +-> + `g‘O±iÚ +('disabled'); + +217 ià( +$di§bËd + !=ð +Œue + && ! ( + `is_¬¿y +($di§bËdè&& + `š_¬¿y +('preSave', $disabled))) { + +218 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +219 +$di§bËd + = +$li¡’” +-> + `g‘O±iÚ +('disabled'); + +221 ià( +$di§bËd + !=ð +Œue + && ! ( + `is_¬¿y +($di§bËdè&& + `š_¬¿y +('preSave', $disabled))) { + +222 +$li¡’” +-> + `´eSave +( +$ev’t +); + +226 + } +} + +228 +public + +funùiÚ + + $po¡Save +( +Doùrše_Ev’t + +$ev’t +) + +230 +$di§bËd + = +$this +-> + `g‘O±iÚ +('disabled'); + +232 ià( +$di§bËd + !=ð +Œue + && ! ( + `is_¬¿y +($di§bËdè&& + `š_¬¿y +('postSave', $disabled))) { + +233 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +234 +$di§bËd + = +$li¡’” +-> + `g‘O±iÚ +('disabled'); + +236 ià( +$di§bËd + !=ð +Œue + && ! ( + `is_¬¿y +($di§bËdè&& + `š_¬¿y +('postSave', $disabled))) { + +237 +$li¡’” +-> + `po¡Save +( +$ev’t +); + +241 + } +} + +243 +public + +funùiÚ + + $´eDqlD–‘e +( +Doùrše_Ev’t + +$ev’t +) + +245 +$di§bËd + = +$this +-> + `g‘O±iÚ +('disabled'); + +247 ià( +$di§bËd + !=ð +Œue + && ! ( + `is_¬¿y +($di§bËdè&& + `š_¬¿y +('preDqlDelete', $disabled))) { + +248 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +249 +$di§bËd + = +$li¡’” +-> + `g‘O±iÚ +('disabled'); + +251 ià( +$di§bËd + !=ð +Œue + && ! ( + `is_¬¿y +($di§bËdè&& + `š_¬¿y +('preDqlDelete', $disabled))) { + +252 +$li¡’” +-> + `´eDqlD–‘e +( +$ev’t +); + +256 + } +} + +258 +public + +funùiÚ + + $´eD–‘e +( +Doùrše_Ev’t + +$ev’t +) + +260 +$di§bËd + = +$this +-> + `g‘O±iÚ +('disabled'); + +262 ià( +$di§bËd + !=ð +Œue + && ! ( + `is_¬¿y +($di§bËdè&& + `š_¬¿y +('preDelete', $disabled))) { + +263 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +264 +$di§bËd + = +$li¡’” +-> + `g‘O±iÚ +('disabled'); + +266 ià( +$di§bËd + !=ð +Œue + && ! ( + `is_¬¿y +($di§bËdè&& + `š_¬¿y +('preDelete', $disabled))) { + +267 +$li¡’” +-> + `´eD–‘e +( +$ev’t +); + +271 + } +} + +273 +public + +funùiÚ + + $po¡D–‘e +( +Doùrše_Ev’t + +$ev’t +) + +275 +$di§bËd + = +$this +-> + `g‘O±iÚ +('disabled'); + +277 ià( +$di§bËd + !=ð +Œue + && ! ( + `is_¬¿y +($di§bËdè&& + `š_¬¿y +('postDelete', $disabled))) { + +278 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +279 +$di§bËd + = +$li¡’” +-> + `g‘O±iÚ +('disabled'); + +281 ià( +$di§bËd + !=ð +Œue + && ! ( + `is_¬¿y +($di§bËdè&& + `š_¬¿y +('postDelete', $disabled))) { + +282 +$li¡’” +-> + `po¡D–‘e +( +$ev’t +); + +286 + } +} + +288 +public + +funùiÚ + + $´eDqlUpd©e +( +Doùrše_Ev’t + +$ev’t +) + +290 +$di§bËd + = +$this +-> + `g‘O±iÚ +('disabled'); + +292 ià( +$di§bËd + !=ð +Œue + && ! ( + `is_¬¿y +($di§bËdè&& + `š_¬¿y +('preDqlUpdate', $disabled))) { + +293 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +294 +$di§bËd + = +$li¡’” +-> + `g‘O±iÚ +('disabled'); + +296 ià( +$di§bËd + !=ð +Œue + && ! ( + `is_¬¿y +($di§bËdè&& + `š_¬¿y +('preDqlUpdate', $disabled))) { + +297 +$li¡’” +-> + `´eDqlUpd©e +( +$ev’t +); + +301 + } +} + +303 +public + +funùiÚ + + $´eUpd©e +( +Doùrše_Ev’t + +$ev’t +) + +305 +$di§bËd + = +$this +-> + `g‘O±iÚ +('disabled'); + +307 ià( +$di§bËd + !=ð +Œue + && ! ( + `is_¬¿y +($di§bËdè&& + `š_¬¿y +('preUpdate', $disabled))) { + +308 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +309 +$di§bËd + = +$li¡’” +-> + `g‘O±iÚ +('disabled'); + +311 ià( +$di§bËd + !=ð +Œue + && ! ( + `is_¬¿y +($di§bËdè&& + `š_¬¿y +('preUpdate', $disabled))) { + +312 +$li¡’” +-> + `´eUpd©e +( +$ev’t +); + +316 + } +} + +318 +public + +funùiÚ + + $po¡Upd©e +( +Doùrše_Ev’t + +$ev’t +) + +320 +$di§bËd + = +$this +-> + `g‘O±iÚ +('disabled'); + +322 ià( +$di§bËd + !=ð +Œue + && ! ( + `is_¬¿y +($di§bËdè&& + `š_¬¿y +('postUpdate', $disabled))) { + +323 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +324 +$di§bËd + = +$li¡’” +-> + `g‘O±iÚ +('disabled'); + +326 ià( +$di§bËd + !=ð +Œue + && ! ( + `is_¬¿y +($di§bËdè&& + `š_¬¿y +('postUpdate', $disabled))) { + +327 +$li¡’” +-> + `po¡Upd©e +( +$ev’t +); + +331 + } +} + +333 +public + +funùiÚ + + $´eIn£¹ +( +Doùrše_Ev’t + +$ev’t +) + +335 +$di§bËd + = +$this +-> + `g‘O±iÚ +('disabled'); + +337 ià( +$di§bËd + !=ð +Œue + && ! ( + `is_¬¿y +($di§bËdè&& + `š_¬¿y +('preInsert', $disabled))) { + +338 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +339 +$di§bËd + = +$li¡’” +-> + `g‘O±iÚ +('disabled'); + +341 ià( +$di§bËd + !=ð +Œue + && ! ( + `is_¬¿y +($di§bËdè&& + `š_¬¿y +('preInsert', $disabled))) { + +342 +$li¡’” +-> + `´eIn£¹ +( +$ev’t +); + +346 + } +} + +348 +public + +funùiÚ + + $po¡In£¹ +( +Doùrše_Ev’t + +$ev’t +) + +350 +$di§bËd + = +$this +-> + `g‘O±iÚ +('disabled'); + +352 ià( +$di§bËd + !=ð +Œue + && ! ( + `is_¬¿y +($di§bËdè&& + `š_¬¿y +('postInsert', $disabled))) { + +353 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +354 +$di§bËd + = +$li¡’” +-> + `g‘O±iÚ +('disabled'); + +356 ià( +$di§bËd + !=ð +Œue + && ! ( + `is_¬¿y +($di§bËdè&& + `š_¬¿y +('postInsert', $disabled))) { + +357 +$li¡’” +-> + `po¡In£¹ +( +$ev’t +); + +361 + } +} + +363 +public + +funùiÚ + + $´eHyd¿‹ +( +Doùrše_Ev’t + +$ev’t +) + +365 +$di§bËd + = +$this +-> + `g‘O±iÚ +('disabled'); + +367 ià( +$di§bËd + !=ð +Œue + && ! ( + `is_¬¿y +($di§bËdè&& + `š_¬¿y +('preHydrate', $disabled))) { + +368 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +369 +$di§bËd + = +$li¡’” +-> + `g‘O±iÚ +('disabled'); + +371 ià( +$di§bËd + !=ð +Œue + && ! ( + `is_¬¿y +($di§bËdè&& + `š_¬¿y +('preHydrate', $disabled))) { + +372 +$li¡’” +-> + `´eHyd¿‹ +( +$ev’t +); + +376 + } +} + +378 +public + +funùiÚ + + $po¡Hyd¿‹ +( +Doùrše_Ev’t + +$ev’t +) + +380 +$di§bËd + = +$this +-> + `g‘O±iÚ +('disabled'); + +382 ià( +$di§bËd + !=ð +Œue + && ! ( + `is_¬¿y +($di§bËdè&& + `š_¬¿y +('postHydrate', $disabled))) { + +383 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +384 +$di§bËd + = +$li¡’” +-> + `g‘O±iÚ +('disabled'); + +386 ià( +$di§bËd + !=ð +Œue + && ! ( + `is_¬¿y +($di§bËdè&& + `š_¬¿y +('postHydrate', $disabled))) { + +387 +$li¡’” +-> + `po¡Hyd¿‹ +( +$ev’t +); + +391 + } +} + +393 +public + +funùiÚ + + $´eV®id©e +( +Doùrše_Ev’t + +$ev’t +) + +395 +$di§bËd + = +$this +-> + `g‘O±iÚ +('disabled'); + +397 ià( +$di§bËd + !=ð +Œue + && ! ( + `is_¬¿y +($di§bËdè&& + `š_¬¿y +('preValidate', $disabled))) { + +398 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +399 +$di§bËd + = +$li¡’” +-> + `g‘O±iÚ +('disabled'); + +401 ià( +$di§bËd + !=ð +Œue + && ! ( + `is_¬¿y +($di§bËdè&& + `š_¬¿y +('preValidate', $disabled))) { + +402 +$li¡’” +-> + `´eV®id©e +( +$ev’t +); + +406 + } +} + +408 +public + +funùiÚ + + $po¡V®id©e +( +Doùrše_Ev’t + +$ev’t +) + +410 +$di§bËd + = +$this +-> + `g‘O±iÚ +('disabled'); + +412 ià( +$di§bËd + !=ð +Œue + && ! ( + `is_¬¿y +($di§bËdè&& + `š_¬¿y +('postValidate', $disabled))) { + +413 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) { + +414 +$di§bËd + = +$li¡’” +-> + `g‘O±iÚ +('disabled'); + +416 ià( +$di§bËd + !=ð +Œue + && ! ( + `is_¬¿y +($di§bËdè&& + `š_¬¿y +('postValidate', $disabled))) { + +417 +$li¡’” +-> + `po¡V®id©e +( +$ev’t +); + +421 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record/Listener/Interface.php + +1 +Œue +, + +56 'fÜeign' => +Œue +, + +57 'loÿl' => +Œue +, + +58 'þass' => +Œue +, + +59 'ty³' => +Œue +, + +60 'bË' => +Œue +, + +61 'loÿlTabË' => +Œue +, + +62 'Çme' => +nuÎ +, + +63 '»fTabË' => +nuÎ +, + +64 'ÚD–‘e' => +nuÎ +, + +65 'ÚUpd©e' => +nuÎ +, + +66 'deã¼ed' => +nuÎ +, + +67 'deã¼abË' => +nuÎ +, + +68 'cÚ¡¿št' => +nuÎ +, + +69 'equ®' => +çl£ +, + +70 'ÿsÿde' => +¬¿y +(), + +71 'ownšgSide' => +çl£ +, + +72 '»fCÏssR–©iÚAlŸs' => +nuÎ +, + +73 'fÜeignKeyName' => +nuÎ +, + +74 'Üd”By' => +nuÎ + + +77 +´Ùeùed + + m$_isRefCÏss + = +nuÎ +; + +128 +public + +funùiÚ + + $__cÚ¡ruù +( +¬¿y + +$defš™iÚ +) + +130 +$def + = + `¬¿y +(); + +131 + `fܗch + ( +$this +-> +defš™iÚ + +as + +$key + => +$v® +) { + +132 iàÐ! + `is£t +( +$defš™iÚ +[ +$key +]è&& +$v® +) { + +133 +throw + +Ãw + + `Doùrše_Exû±iÚ +( +$key + . ' is„equired!'); + +135 ià( + `is£t +( +$defš™iÚ +[ +$key +])) { + +136 +$def +[ +$key +] = +$defš™iÚ +[$key]; + +138 +$def +[ +$key +] = +$this +-> +defš™iÚ +[$key]; + +141 +$this +-> +defš™iÚ + = +$def +; + +150 +public + +funùiÚ + + $hasCÚ¡¿št +() + +152  ( +$this +-> +defš™iÚ +['constraint'] || + +153 ( +$this +-> +defš™iÚ +['onUpdate']) || + +154 ( +$this +-> +defš™iÚ +['onDelete'])); + +155 + } +} + +157 +public + +funùiÚ + + $isDeã¼ed +() + +159  +$this +-> +defš™iÚ +['deferred']; + +160 + } +} + +162 +public + +funùiÚ + + $isDeã¼abË +() + +164  +$this +-> +defš™iÚ +['deferrable']; + +165 + } +} + +167 +public + +funùiÚ + + $isEqu® +() + +169  +$this +-> +defš™iÚ +['equal']; + +170 + } +} + +172 +public + +funùiÚ + + $off£tExi¡s +( +$off£t +) + +174  + `is£t +( +$this +-> +defš™iÚ +[ +$off£t +]); + +175 + } +} + +177 +public + +funùiÚ + + $off£tG‘ +( +$off£t +) + +179 ià( + `is£t +( +$this +-> +defš™iÚ +[ +$off£t +])) { + +180  +$this +-> +defš™iÚ +[ +$off£t +]; + +183  +nuÎ +; + +184 + } +} + +186 +public + +funùiÚ + + $off£tS‘ +( +$off£t +, +$v®ue +) + +188 ià( + `is£t +( +$this +-> +defš™iÚ +[ +$off£t +])) { + +189 +$this +-> +defš™iÚ +[ +$off£t +] = +$v®ue +; + +191 + } +} + +193 +public + +funùiÚ + + $off£tUn£t +( +$off£t +) + +195 +$this +-> +defš™iÚ +[ +$off£t +] = +çl£ +; + +196 + } +} + +203 +public + +funùiÚ + + $toA¼ay +() + +205  +$this +-> +defš™iÚ +; + +206 + } +} + +214 +fš® + +public + +funùiÚ + + $g‘AlŸs +() + +216  +$this +-> +defš™iÚ +['alias']; + +217 + } +} + +226 +fš® + +public + +funùiÚ + + $g‘Ty³ +() + +228  +$this +-> +defš™iÚ +['type']; + +229 + } +} + +237 +public + +funùiÚ + + $isCasÿdeD–‘e +() + +239  + `š_¬¿y +('d–‘e', +$this +-> +defš™iÚ +['cascade']); + +240 + } +} + +248 +fš® + +public + +funùiÚ + + $g‘TabË +() + +250  +Doùrše_Mªag” +:: + `g‘In¡ªû +() + +251 -> + `g‘CÚÃùiÚFÜCompڒt +( +$this +-> +defš™iÚ +['class']) + +252 -> + `g‘TabË +( +$this +-> +defš™iÚ +['class']); + +253 + } +} + +261 +fš® + +public + +funùiÚ + + $g‘CÏss +() + +263  +$this +-> +defš™iÚ +['class']; + +264 + } +} + +272 +fš® + +public + +funùiÚ + + $g‘Loÿl +() + +274  +$this +-> +defš™iÚ +['local']; + +275 + } +} + +281 +fš® + +public + +funùiÚ + + $g‘LoÿlF›ldName +() + +283  +$this +-> +defš™iÚ +['loÿlTabË']-> + `g‘F›ldName +($this->definition['local']); + +284 + } +} + +292 +fš® + +public + +funùiÚ + + $g‘LoÿlCÞumnName +() + +294  +$this +-> +defš™iÚ +['loÿlTabË']-> + `g‘CÞumnName +($this->definition['local']); + +295 + } +} + +304 +fš® + +public + +funùiÚ + + $g‘FÜeign +() + +306  +$this +-> +defš™iÚ +['foreign']; + +307 + } +} + +313 +fš® + +public + +funùiÚ + + $g‘FÜeignF›ldName +() + +315  +$this +-> +defš™iÚ +['bË']-> + `g‘F›ldName +($this->definition['foreign']); + +316 + } +} + +324 +fš® + +public + +funùiÚ + + $g‘FÜeignCÞumnName +() + +326  +$this +-> +defš™iÚ +['bË']-> + `g‘CÞumnName +($this->definition['foreign']); + +327 + } +} + +335 +fš® + +public + +funùiÚ + + $isOÃToOà +() + +337  ( +$this +-> +defš™iÚ +['ty³'] =ð +Doùrše_R–©iÚ +:: +ONE +); + +338 + } +} + +346 +public + +funùiÚ + + $g‘R–©iÚDql +( +$couÁ +) + +348 +$compڒt + = +$this +-> + `g‘TabË +()-> + `g‘CompڒtName +(); + +350 +$dql + = 'FROM ' . +$compڒt + + +351 . ' WHERE ' . +$compڒt + . '.' . +$this +-> +defš™iÚ +['foreign'] + +352 . ' IN (' . + `sub¡r +( + `¡r_»³© +('?, ', +$couÁ +), 0, -2) . ')' + +353 . +$this +-> + `g‘Ord”By +( +$compڒt +); + +355  +$dql +; + +356 + } +} + +366 +ab¡¿ù + +public + +funùiÚ + +ãtchR–©edFÜ +( +Doùrše_RecÜd + +$»cÜd +); + +373 +public + +funùiÚ + + $g‘FÜeignKeyName +() + +375 ià( + `is£t +( +$this +-> +defš™iÚ +['foreignKeyName'])) { + +376  +$this +-> +defš™iÚ +['foreignKeyName']; + +378  +$this +['loÿlTabË']-> + `g‘CÚÃùiÚ +()-> + `g’”©eUniqueR–©iÚFÜeignKeyName +($this); + +379 + } +} + +388 +public + +funùiÚ + + $g‘Ord”By +( +$®Ÿs + = +nuÎ +, +$cÞumnNames + = +çl£ +) + +390 iàÐ! +$®Ÿs +) { + +391 +$®Ÿs + = +$this +-> + `g‘TabË +()-> + `g‘CompڒtName +(); + +394 ià( +$Üd”By + = +$this +-> + `g‘Ord”ByS‹m’t +( +$®Ÿs +, +$cÞumnNames +)) { + +395  ' ORDER BY ' . +$Üd”By +; + +397 + } +} + +406 +public + +funùiÚ + + $g‘Ord”ByS‹m’t +( +$®Ÿs + = +nuÎ +, +$cÞumnNames + = +çl£ +) + +408 +$bË + = +$this +-> + `g‘TabË +(); + +410 iàÐ! +$®Ÿs +) { + +411 +$®Ÿs + = +$bË +-> + `g‘CompڒtName +(); + +414 ià( + `is£t +( +$this +-> +defš™iÚ +['orderBy'])) { + +415  +$bË +-> + `´oûssOrd”By +( +$®Ÿs +, +$this +-> +defš™iÚ +['Üd”By'], +$cÞumnNames +); + +417  +$bË +-> + `g‘Ord”ByS‹m’t +( +$®Ÿs +, +$cÞumnNames +); + +419 + } +} + +421 +public + +funùiÚ + + $isRefCÏss +() + +423 ià( +$this +-> +_isRefCÏss + ==ð +nuÎ +) { + +424 +$this +-> +_isRefCÏss + = +çl£ +; + +425 +$bË + = +$this +-> + `g‘TabË +(); + +426 + `fܗch + ( +$bË +-> + `g‘R–©iÚs +(è +as + +$Çme + => +$»ÏtiÚ +) { + +427 + `fܗch + ( +$»ÏtiÚ +['bË']-> + `g‘R–©iÚs +(è +as + $relation) { + +428 ià( + `is£t +( +$»ÏtiÚ +['»fTabË']è&& $»ÏtiÚ['»fTabË'] ==ð +$bË +) { + +429 +$this +-> +_isRefCÏss + = +Œue +; + +436  +$this +-> +_isRefCÏss +; + +437 + } +} + +444 +public + +funùiÚ + + $__toSŒšg +() + +446 +$r +[] = "
    ";
    +
    +447 
    +	`fܗch
    + (
    +$this
    +->
    +defš™iÚ
    + 
    +as
    + 
    +$k
    + => 
    +$v
    +) {
    +
    +448 ià(
    +	`is_objeù
    +(
    +$v
    +)) {
    +
    +449 
    +$v
    + = 'Objeù(' . 
    +	`g‘_þass
    +($v) . ')';
    +
    +451 
    +$r
    +[] = 
    +$k
    + . ' : ' . 
    +$v
    +;
    +
    +453 
    +$r
    +[] = "
    "; + +454  + `im¶ode +("\n", +$r +); + +455 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Relation/Association.php + +1 +defš™iÚ +['refTable']; + +46 +public + +funùiÚ + + $g‘AssocŸtiÚTabË +() + +48  +$this +-> +defš™iÚ +['refTable']; + +49 + } +} + +57 +public + +funùiÚ + +g‘R–©iÚDql +( +$couÁ +, +$cڋxt + = 'record') + +59 +$bË + = +$this +-> +defš™iÚ +['refTable']; + +60 + g$compڒt + = +$this +-> +defš™iÚ +['»fTabË']-> +g‘CompڒtName +(); + +62  + g$cڋxt +) { + +64 +$sub + = +sub¡r +( +¡r_»³© +("?, ", +$couÁ +),0,-2); + +65 + g$dql + = 'FROM ' . +$this +-> +g‘TabË +()-> +g‘CompڒtName +(); + +66 + g$dql + .ð'.' . +$compڒt +; + +67 + g$dql + .ð' WHERE ' . +$this +-> +g‘TabË +()-> +g‘CompڒtName +() + +68 . '.' . +$compڒt + . '.' . +$this +-> +g‘LoÿlRefCÞumnName +(è. ' IN (' . +$sub + . ')'; + +69 + g$dql + .ð +$this +-> +g‘Ord”By +($this-> +g‘TabË +()-> +g‘CompڒtName +(), +çl£ +); + +72 +$sub + = +sub¡r +( +¡r_»³© +("?, ", +$couÁ +),0,-2); + +73 + g$dql + = 'FROM ' . +$compڒt + . '.' . +$this +-> +g‘TabË +()-> +g‘CompڒtName +(); + +74 + g$dql + .ð' WHERE ' . +$compڒt + . '.' . +$this +-> +g‘LoÿlRefCÞumnName +(è. ' IN (' . +$sub + . ')'; + +75 + g$dql + .ð +$this +-> +g‘Ord”By +( +$compڒt +, +çl£ +); + +79  + g$dql +; + +86 +fš® + +public + +funùiÚ + + $g‘LoÿlRefCÞumnName +() + +88  +$this +-> +defš™iÚ +['»fTabË']-> + `g‘CÞumnName +($this->definition['local']); + +89 + } +} + +95 +fš® + +public + +funùiÚ + + $g‘LoÿlRefF›ldName +() + +97  +$this +-> +defš™iÚ +['»fTabË']-> + `g‘F›ldName +($this->definition['local']); + +98 + } +} + +104 +fš® + +public + +funùiÚ + + $g‘FÜeignRefCÞumnName +() + +106  +$this +-> +defš™iÚ +['»fTabË']-> + `g‘CÞumnName +($this->definition['foreign']); + +107 + } +} + +113 +fš® + +public + +funùiÚ + + $g‘FÜeignRefF›ldName +() + +115  +$this +-> +defš™iÚ +['»fTabË']-> + `g‘F›ldName +($this->definition['foreign']); + +116 + } +} + +126 +public + +funùiÚ + + $ãtchR–©edFÜ +( +Doùrše_RecÜd + +$»cÜd +) + +128 +$id + = +$»cÜd +-> + `g‘Inüem’‹d +(); + +129 ià( + `em±y +( +$id +è|| ! +$this +-> +defš™iÚ +['bË']-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_LOAD_REFERENCES +)) { + +130 +$cÞl + = +Doùrše_CÞËùiÚ +:: + `ü—‹ +( +$this +-> + `g‘TabË +()); + +132 +$cÞl + = +$this +-> + `g‘TabË +()-> + `g‘CÚÃùiÚ +()-> + `qu”y +($this-> + `g‘R–©iÚDql +(1), + `¬¿y +( +$id +)); + +134 +$cÞl +-> + `£tReã»nû +( +$»cÜd +, +$this +); + +135  +$cÞl +; + +136 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Relation/Association/Self.php + +1 +defš™iÚ +['bË']-> +g‘Id’tif›rCÞumnNames +(); + +46 + m$id’tif›r + = +¬¿y_pÝ +( +$id’tif›rCÞumnNames +); + +47 + m$sub + = 'SELECT '. +$this +-> +defš™iÚ +['foreign'] + +48 . ' FROM '. +$this +-> +defš™iÚ +['»fTabË']-> +g‘TabËName +() + +49 . ' WHERE '. +$this +-> +defš™iÚ +['local'] + +52 + m$sub2 + = 'SELECT '. +$this +-> +defš™iÚ +['local'] + +53 . ' FROM '. +$this +-> +defš™iÚ +['»fTabË']-> +g‘TabËName +() + +54 . ' WHERE '. +$this +-> +defš™iÚ +['foreign'] + +57 + m$dql + = 'FROM ' . +$this +-> +defš™iÚ +['bË']-> +g‘CompڒtName +() + +58 . '.' . +$this +-> +defš™iÚ +['»fTabË']-> +g‘CompڒtName +() + +59 . ' WHERE ' . +$this +-> +defš™iÚ +['bË']-> +g‘CompڒtName +() + +60 . '.' . +$id’tif›r + + +61 . ' IN (' . +$sub + . ')' + +62 . ' || ' . +$this +-> +defš™iÚ +['bË']-> +g‘CompڒtName +() + +63 . '.' . +$id’tif›r + + +64 . ' IN (' . +$sub2 + . ')'; + +66 + m$dql + .ð +$this +-> +g‘Ord”By +($this-> +defš™iÚ +['bË']-> +g‘CompڒtName +(), +çl£ +); + +69 +$sub + = +sub¡r +( +¡r_»³© +('?, ', +$couÁ +),0,-2); + +70 + m$dql + = 'FROM '. +$this +-> +defš™iÚ +['»fTabË']-> +g‘CompڒtName +() + +71 . '.' . +$this +-> +defš™iÚ +['bË']-> +g‘CompڒtName +() + +72 . ' WHERE '. +$this +-> +defš™iÚ +['»fTabË']-> +g‘CompڒtName +() + +73 . '.' . +$this +-> +defš™iÚ +['loÿl'] . ' IN (' . +$sub + . ')'; + +75 + m$dql + .ð +$this +-> +g‘Ord”By +($this-> +defš™iÚ +['»fTabË']-> +g‘CompڒtName +(), +çl£ +); + +78  + m$dql +; + +81 +public + +funùiÚ + + $ãtchR–©edFÜ +( +Doùrše_RecÜd + +$»cÜd +) + +83 +$id + = +$»cÜd +-> + `g‘Inüem’‹d +(); + +85 +$q + = +Ãw + + `Doùrše_RawSql +(); + +87 +$assocTabË + = +$this +-> + `g‘AssocŸtiÚFaùÜy +()-> + `g‘TabËName +(); + +88 +$bËName + = +$»cÜd +-> + `g‘TabË +()-> + `g‘TabËName +(); + +89 +$id’tif›rCÞumnNames + = +$»cÜd +-> + `g‘TabË +()-> + `g‘Id’tif›rCÞumnNames +(); + +90 +$id’tif›r + = + `¬¿y_pÝ +( +$id’tif›rCÞumnNames +); + +92 +$sub + = 'SELECT '. +$this +-> + `g‘FÜeign +(). + +93 ' FROM '. +$assocTabË +. + +94 ' WHERE '. +$this +-> + `g‘Loÿl +(). + +97 +$sub2 + = 'SELECT '. +$this +-> + `g‘Loÿl +(). + +98 ' FROM '. +$assocTabË +. + +99 ' WHERE '. +$this +-> + `g‘FÜeign +(). + +102 +$q +-> + `£Ëù +('{'. +$bËName +.'.*}, {'. +$assocTabË +.'.*}') + +103 -> + `äom +( +$bËName + . ' INNER JOIN '. +$assocTabË +.' ON '. + +104 +$bËName + . '.' . +$id’tif›r + . ' = ' . +$assocTabË + . '.' . +$this +-> + `g‘Loÿl +() . ' OR ' . + +105 +$bËName + . '.' . +$id’tif›r + . ' = ' . +$assocTabË + . '.' . +$this +-> + `g‘FÜeign +() + +107 -> + `wh”e +( +$bËName +.'.'. +$id’tif›r +.' IN ('. +$sub +.') OR '. + +108 +$bËName +.'.'. +$id’tif›r +.' IN ('. +$sub2 +.')' + +110 +$q +-> + `addCompڒt +( +$bËName +, +$»cÜd +-> + `g‘TabË +()-> + `g‘CompڒtName +()); + +111 +$q +-> + `addCompڒt +( +$assocTabË +, +$»cÜd +-> + `g‘TabË +()-> + `g‘CompڒtName +(). '.' . +$this +-> + `g‘AssocŸtiÚFaùÜy +()->getComponentName()); + +112 +$q +-> + `Üd”By +( +$this +-> + `g‘Ord”ByS‹m’t +( +$bËName +, +Œue +)); + +114  +$q +-> + `execu‹ +( + `¬¿y +( +$id +, $id)); + +115 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Relation/Exception.php + +1 + `g‘TabË +(); + +48 + `fܗch + (( +¬¿y +è +$this +-> +defš™iÚ +['loÿl'] +as + +$loÿl +) { + +49 +$v®ue + = +$»cÜd +-> + `g‘ +( +$loÿlTabË +-> + `g‘F›ldName +( +$loÿl +)); + +50 ià( + `is£t +( +$v®ue +)) { + +51 +$id +[] = +$v®ue +; + +54 ià( +$this +-> + `isOÃToOà +()) { + +55 iàÐ! +$»cÜd +-> + `exi¡s +(è|| + `em±y +( +$id +) || + +56 ! +$this +-> +defš™iÚ +['bË']-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_LOAD_REFERENCES +)) { + +58 +$»Ï‹d + = +$this +-> + `g‘TabË +()-> + `ü—‹ +(); + +60 +$dql + = 'FROM ' . +$this +-> + `g‘TabË +()-> + `g‘CompڒtName +() + +61 . ' WHERE ' . +$this +-> + `g‘CÚd™iÚ +(è. $this-> + `g‘Ord”By +( +nuÎ +, +çl£ +); + +63 +$cÞl + = +$this +-> + `g‘TabË +()-> + `g‘CÚÃùiÚ +()-> + `qu”y +( +$dql +, +$id +); + +64 +$»Ï‹d + = +$cÞl +[0]; + +67 +$»Ï‹d +-> + `£t +($»Ï‹d-> + `g‘TabË +()-> + `g‘F›ldName +( +$this +-> +defš™iÚ +['foreign']), + +68 +$»cÜd +, +çl£ +); + +71 iàÐ! +$»cÜd +-> + `exi¡s +(è|| + `em±y +( +$id +) || + +72 ! +$this +-> +defš™iÚ +['bË']-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_LOAD_REFERENCES +)) { + +74 +$»Ï‹d + = +Doùrše_CÞËùiÚ +:: + `ü—‹ +( +$this +-> + `g‘TabË +()); + +76 +$qu”y + = +$this +-> + `g‘R–©iÚDql +(1); + +77 +$»Ï‹d + = +$this +-> + `g‘TabË +()-> + `g‘CÚÃùiÚ +()-> + `qu”y +( +$qu”y +, +$id +); + +79 +$»Ï‹d +-> + `£tReã»nû +( +$»cÜd +, +$this +); + +81  +$»Ï‹d +; + +89 +public + +funùiÚ + + $g‘CÚd™iÚ +( +$®Ÿs + = +nuÎ +) + +91 iàÐ! +$®Ÿs +) { + +92 +$®Ÿs + = +$this +-> + `g‘TabË +()-> + `g‘CompڒtName +(); + +94 +$cÚd™iÚs + = + `¬¿y +(); + +95 + `fܗch + (( +¬¿y +è +$this +-> +defš™iÚ +['fÜeign'] +as + +$fÜeign +) { + +96 +$cÚd™iÚs +[] = +$®Ÿs + . '.' . +$fÜeign + . ' = ?'; + +98  + `im¶ode +(' AND ', +$cÚd™iÚs +); + +99 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Relation/LocalKey.php + +1 + `g‘TabË +()-> + `g‘F›ldName +( +$this +-> +defš™iÚ +['local']); + +47 +$id + = +$»cÜd +-> + `g‘ +( +$loÿlF›ldName +); + +49 ià( + `is_nuÎ +( +$id +è|| ! +$this +-> +defš™iÚ +['bË']-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_LOAD_REFERENCES +)) { + +50 +$»Ï‹d + = +$this +-> + `g‘TabË +()-> + `ü—‹ +(); + +53 iàÐ! + `is_nuÎ +( +$id +)) { + +54 +$»Ï‹d +-> + `assignId’tif›r +( +$id +); + +55 +$»Ï‹d +-> + `¡©e +( +Doùrše_RecÜd +:: +STATE_PROXY +); + +58 +$dql + = 'FROM ' . +$this +-> + `g‘TabË +()-> + `g‘CompڒtName +() + +59 . ' WHERE ' . +$this +-> + `g‘CÚd™iÚ +(è. $this-> + `g‘Ord”By +( +nuÎ +, +çl£ +); + +61 +$»Ï‹d + = +$this +-> + `g‘TabË +() + +62 -> + `g‘CÚÃùiÚ +() + +63 -> + `qu”y +( +$dql +, + `¬¿y +( +$id +)) + +64 -> + `g‘Fœ¡ +(); + +66 iàÐ! +$»Ï‹d + || + `em±y +($related)) { + +67 +$»Ï‹d + = +$this +-> + `g‘TabË +()-> + `ü—‹ +(); + +71 +$»cÜd +-> + `£t +( +$loÿlF›ldName +, +$id +, +çl£ +); + +73  +$»Ï‹d +; + +81 +public + +funùiÚ + + $g‘CÚd™iÚ +( +$®Ÿs + = +nuÎ +) + +83 iàÐ! +$®Ÿs +) { + +84 +$®Ÿs + = +$this +-> + `g‘TabË +()-> + `g‘CompڒtName +(); + +86  +$®Ÿs + . '.' . +$this +-> +defš™iÚ +['foreign'] . ' = ?'; + +87 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Relation/Nest.php + +1 + `g‘Inüem’‹d +(); + +39 ià( + `em±y +( +$id +è|| ! +$this +-> +defš™iÚ +['bË']-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_LOAD_REFERENCES +)) { + +40  +Doùrše_CÞËùiÚ +:: + `ü—‹ +( +$this +-> + `g‘TabË +()); + +42 +$q + = +Ãw + + `Doùrše_RawSql +( +$this +-> + `g‘TabË +()-> + `g‘CÚÃùiÚ +()); + +43 +$fÜm©‹r + = +$q +-> + `g‘CÚÃùiÚ +()-> +fÜm©‹r +; + +45 +$assocTabË + = +$this +-> + `g‘AssocŸtiÚFaùÜy +()-> + `g‘TabËName +(); + +46 +$bËName + = +$»cÜd +-> + `g‘TabË +()-> + `g‘TabËName +(); + +47 +$id’tif›rCÞumnNames + = +$»cÜd +-> + `g‘TabË +()-> + `g‘Id’tif›rCÞumnNames +(); + +48 +$id’tif›r + = +$fÜm©‹r +-> + `quÙeId’tif›r +( + `¬¿y_pÝ +( +$id’tif›rCÞumnNames +)); + +50 +$sub + = 'SELECT ' . +$fÜm©‹r +-> + `quÙeId’tif›r +( +$this +-> + `g‘FÜeignRefCÞumnName +()) + +51 . ' FROM ' . +$fÜm©‹r +-> + `quÙeId’tif›r +( +$assocTabË +) + +52 . ' WHERE ' . +$fÜm©‹r +-> + `quÙeId’tif›r +( +$this +-> + `g‘LoÿlRefCÞumnName +()) + +55 +$cÚd™iÚ +[] = +$fÜm©‹r +-> + `quÙeId’tif›r +( +$bËName +è. '.' . +$id’tif›r + . ' IN (' . +$sub + . ')'; + +56 +$jošCÚd™iÚ +[] = +$fÜm©‹r +-> + `quÙeId’tif›r +( +$bËName +è. '.' . +$id’tif›r + . ' = ' . $fÜm©‹r->quÙeId’tif›r( +$assocTabË +è. '.' . $fÜm©‹r->quÙeId’tif›r( +$this +-> + `g‘FÜeignRefCÞumnName +()); + +58 ià( +$this +-> +defš™iÚ +['equal']) { + +59 +$sub2 + = 'SELECT ' . +$fÜm©‹r +-> + `quÙeId’tif›r +( +$this +-> + `g‘LoÿlRefCÞumnName +()) + +60 . ' FROM ' . +$fÜm©‹r +-> + `quÙeId’tif›r +( +$assocTabË +) + +61 . ' WHERE ' . +$fÜm©‹r +-> + `quÙeId’tif›r +( +$this +-> + `g‘FÜeignRefCÞumnName +()) + +64 +$cÚd™iÚ +[] = +$fÜm©‹r +-> + `quÙeId’tif›r +( +$bËName +è. '.' . +$id’tif›r + . ' IN (' . +$sub2 + . ')'; + +65 +$jošCÚd™iÚ +[] = +$fÜm©‹r +-> + `quÙeId’tif›r +( +$bËName +è. '.' . +$id’tif›r + . ' = ' . $fÜm©‹r->quÙeId’tif›r( +$assocTabË +è. '.' . $fÜm©‹r->quÙeId’tif›r( +$this +-> + `g‘LoÿlRefCÞumnName +()); + +67 +$q +-> + `£Ëù +('{'. +$bËName +.'.*}, {'. +$assocTabË +.'.*}') + +68 -> + `äom +( +$fÜm©‹r +-> + `quÙeId’tif›r +( +$bËName +è. ' INNER JOIN ' . $fÜm©‹r->quÙeId’tif›r( +$assocTabË +è. ' ON ' . + `im¶ode +(' OR ', +$jošCÚd™iÚ +)) + +69 -> + `wh”e +( + `im¶ode +(' OR ', +$cÚd™iÚ +)); + +70 ià( +$Üd”By + = +$this +-> + `g‘Ord”ByS‹m’t +( +$bËName +, +Œue +)) { + +71 +$q +-> + `addOrd”By +( +$Üd”By +); + +73 +$q +-> + `addOrd”By +( +$fÜm©‹r +-> + `quÙeId’tif›r +( +$bËName +è. '.' . +$id’tif›r + . ' ASC'); + +75 +$q +-> + `addCompڒt +( +$bËName +, +$this +-> + `g‘CÏss +()); + +77 +$·th + = +$this +-> + `g‘CÏss +(). '.' . $this-> + `g‘AssocŸtiÚFaùÜy +()-> + `g‘CompڒtName +(); + +78 ià( +$this +-> +defš™iÚ +['refClassRelationAlias']) { + +79 +$·th + = +$this +-> + `g‘CÏss +(). '.' . $this-> +defš™iÚ +['refClassRelationAlias']; + +81 +$q +-> + `addCompڒt +( +$assocTabË +, +$·th +); + +83 +$·¿ms + = ( +$this +-> +defš™iÚ +['equ®']è? + `¬¿y +( +$id +, $id) :‡rray($id); + +85 +$»s + = +$q +-> + `execu‹ +( +$·¿ms +); + +87  +$»s +; + +90 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Relation/Parser.php + +1 +_bË + = +$bË +; + +66 +public + +funùiÚ + + $g‘TabË +() + +68  +$this +-> +_bË +; + +69 + } +} + +76 +public + +funùiÚ + + $g‘P’dšgR–©iÚ +( +$Çme +) + +78 iàÐ! + `is£t +( +$this +-> +_³ndšg +[ +$Çme +])) { + +79 +throw + +Ãw + + `Doùrše_R–©iÚ_Exû±iÚ +('UnknowÀ³ndšg„–©iÚ ' . +$Çme +); + +82  +$this +-> +_³ndšg +[ +$Çme +]; + +83 + } +} + +90 +public + +funùiÚ + + $g‘P’dšgR–©iÚs +() + +92  +$this +-> +_³ndšg +; + +93 + } +} + +101 +public + +funùiÚ + + $un£tP’dšgR–©iÚs +( +$Çme +) + +103 + `un£t +( +$this +-> +_³ndšg +[ +$Çme +]); + +104 + } +} + +112 +public + +funùiÚ + + $hasR–©iÚ +( +$Çme +) + +114 iàÐ! + `is£t +( +$this +-> +_³ndšg +[ +$Çme +]è&& ! is£t($this-> +_»ÏtiÚs +[$name])) { + +115  +çl£ +; + +118  +Œue +; + +119 + } +} + +128 +public + +funùiÚ + +bšd +( +$Çme +, +$ÝtiÚs + = + $¬¿y +()) + +130 +$e + = + `ex¶ode +('‡ ', +$Çme +); + +131 +$e + = + `¬¿y_m­ +('trim', $e); + +132 +$Çme + = +$e +[0]; + +133 +$®Ÿs + = + `is£t +( +$e +[1]è? $e[1] : +$Çme +; + +135 iàÐ! + `is£t +( +$ÝtiÚs +['type'])) { + +136 +throw + +Ãw + + `Doùrše_R–©iÚ_Exû±iÚ +('Relationype‚ot set.'); + +139 ià( +$this +-> + `hasR–©iÚ +( +$®Ÿs +)) { + +140 + `un£t +( +$this +-> +_»ÏtiÚs +[ +$®Ÿs +]); + +141 + `un£t +( +$this +-> +_³ndšg +[ +$®Ÿs +]); + +144 +$this +-> +_³ndšg +[ +$®Ÿs +] = + `¬¿y_m”ge +( +$ÝtiÚs +, + `¬¿y +('þass' => +$Çme +, 'alias' => $alias)); + +146  +$this +-> +_³ndšg +[ +$®Ÿs +]; + +147 + } +} + +154 +public + +funùiÚ + + $g‘R–©iÚ +( +$®Ÿs +, +$»cursive + = +Œue +) + +156 ià( + `is£t +( +$this +-> +_»ÏtiÚs +[ +$®Ÿs +])) { + +157  +$this +-> +_»ÏtiÚs +[ +$®Ÿs +]; + +160 ià( + `is£t +( +$this +-> +_³ndšg +[ +$®Ÿs +])) { + +161 +$def + = +$this +-> +_³ndšg +[ +$®Ÿs +]; + +162 +$id’tif›rCÞumnNames + = +$this +-> +_bË +-> + `g‘Id’tif›rCÞumnNames +(); + +163 +$idCÞumnName + = + `¬¿y_pÝ +( +$id’tif›rCÞumnNames +); + +167 ià( + `is£t +( +$def +['refClass'])) { + +168 +$def + = +$this +-> + `com¶‘eAssocDefš™iÚ +($def); + +169 +$loÿlCÏs£s + = + `¬¿y_m”ge +( +$this +-> +_bË +-> + `g‘O±iÚ +('·»Ás'), + `¬¿y +($this->_bË-> + `g‘CompڒtName +())); + +171 +$backRefR–©iÚName + = + `is£t +( +$def +['refClassRelationAlias']) ? + +172 +$def +['refClassRelationAlias'] : $def['refClass']; + +173 iàÐ! + `is£t +( +$this +-> +_³ndšg +[ +$backRefR–©iÚName +]è&& ! is£t($this-> +_»ÏtiÚs +[$backRefRelationName])) { + +175 +$·r£r + = +$def +['»fTabË']-> + `g‘R–©iÚP¬£r +(); + +177 iàÐ! +$·r£r +-> + `hasR–©iÚ +( +$this +-> +_bË +-> + `g‘CompڒtName +())) { + +178 +$·r£r +-> + `bšd +( +$this +-> +_bË +-> + `g‘CompڒtName +(), + +179 + `¬¿y +('ty³' => +Doùrše_R–©iÚ +:: +ONE +, + +180 'loÿl' => +$def +['local'], + +181 'fÜeign' => +$idCÞumnName +, + +182 'loÿlKey' => +Œue +, + +186 iàÐ! +$this +-> + `hasR–©iÚ +( +$backRefR–©iÚName +)) { + +187 ià( + `š_¬¿y +( +$def +['þass'], +$loÿlCÏs£s +)) { + +188 +$this +-> + `bšd +( +$def +['»fCÏss'] . "‡ " . +$backRefR–©iÚName +, + `¬¿y +( + +189 'ty³' => +Doùrše_R–©iÚ +:: +MANY +, + +190 'fÜeign' => +$def +['foreign'], + +191 'loÿl' => +$idCÞumnName +)); + +193 +$this +-> + `bšd +( +$def +['»fCÏss'] . "‡ " . +$backRefR–©iÚName +, + `¬¿y +( + +194 'ty³' => +Doùrše_R–©iÚ +:: +MANY +, + +195 'fÜeign' => +$def +['local'], + +196 'loÿl' => +$idCÞumnName +)); + +200 ià( + `š_¬¿y +( +$def +['þass'], +$loÿlCÏs£s +)) { + +201 +$»l + = +Ãw + + `Doùrše_R–©iÚ_Ne¡ +( +$def +); + +203 +$»l + = +Ãw + + `Doùrše_R–©iÚ_AssocŸtiÚ +( +$def +); + +207 +$def + = +$this +-> + `com¶‘eDefš™iÚ +($def); + +209 ià( + `is£t +( +$def +['localKey']) && $def['localKey']) { + +210 +$»l + = +Ãw + + `Doùrše_R–©iÚ_LoÿlKey +( +$def +); + +213 +$fÜeign + = ( +¬¿y +è +$def +['foreign']; + +215 + `fܗch + ( +$fÜeign + +as + +$fk +) { + +217 iàÐ! +$»l +['bË']-> + `isId’tif›r +($»l['bË']-> + `g‘F›ldName +( +$fk +))) { + +218 +$»l +['bË']-> + `addIndex +( +$fk +, + `¬¿y +('fields' =>‡rray($fk))); + +222 +$»l + = +Ãw + + `Doùrše_R–©iÚ_FÜeignKey +( +$def +); + +225 ià( + `is£t +( +$»l +)) { + +227 + `un£t +( +$this +-> +_³ndšg +[ +$®Ÿs +]); + +228 +$this +-> +_»ÏtiÚs +[ +$®Ÿs +] = +$»l +; + +229  +$»l +; + +232 ià( +$»cursive +) { + +233 +$this +-> + `g‘R–©iÚs +(); + +235  +$this +-> + `g‘R–©iÚ +( +$®Ÿs +, +çl£ +); + +237 +throw + +Ãw + + `Doùrše_TabË_Exû±iÚ +('UnknowÀ»ÏtiڇlŸ ' . +$®Ÿs +); + +239 + } +} + +247 +public + +funùiÚ + + $g‘R–©iÚs +() + +249 + `fܗch + ( +$this +-> +_³ndšg + +as + +$k + => +$v +) { + +250 +$this +-> + `g‘R–©iÚ +( +$k +); + +253  +$this +-> +_»ÏtiÚs +; + +254 + } +} + +264 +public + +funùiÚ + + $g‘Im¶ +( +$‹m¶©e +) + +266 +$cÚn + = +$this +-> +_bË +-> + `g‘CÚÃùiÚ +(); + +268 ià( + `þass_exi¡s +( +$‹m¶©e +è&& + `š_¬¿y +('Doùrše_Tem¶©e', + `þass_·»Ás +($template))) { + +269 +$im¶ + = +$this +-> +_bË +-> + `g‘Im¶ +( +$‹m¶©e +); + +271 ià( +$im¶ + ==ð +nuÎ +) { + +272 +throw + +Ãw + + `Doùrše_R–©iÚ_P¬£r_Exû±iÚ +("Couldn'ˆfšd cÚü‘im¶em’tiÚ f܁em¶©" . +$‹m¶©e +); + +275 +$im¶ + = +$‹m¶©e +; + +278  +$cÚn +-> + `g‘TabË +( +$im¶ +); + +279 + } +} + +287 +public + +funùiÚ + + $com¶‘eAssocDefš™iÚ +( +$def +) + +289 +$cÚn + = +$this +-> +_bË +-> + `g‘CÚÃùiÚ +(); + +290 +$def +['bË'] = +$this +-> + `g‘Im¶ +($def['class']); + +291 +$def +['loÿlTabË'] = +$this +-> +_bË +; + +292 +$def +['þass'] = $def['bË']-> + `g‘CompڒtName +(); + +293 +$def +['»fTabË'] = +$this +-> + `g‘Im¶ +($def['refClass']); + +295 +$id + = +$def +['»fTabË']-> + `g‘Id’tif›rCÞumnNames +(); + +297 ià( + `couÁ +( +$id +) > 1) { + +298 iàÐ! + `is£t +( +$def +['foreign'])) { + +302 +$def +['fÜeign'] = ($def['loÿl'] ==ð +$id +[0]) ? $id[1] : $id[0]; + +304 iàÐ! + `is£t +( +$def +['local'])) { + +307 +$def +['loÿl'] = ($def['fÜeign'] ==ð +$id +[0]) ? $id[1] : $id[0]; + +311 iàÐ! + `is£t +( +$def +['foreign'])) { + +315 +$cÞumns + = +$this +-> + `g‘Id’tif›rs +( +$def +['table']); + +317 +$def +['fÜeign'] = +$cÞumns +; + +319 iàÐ! + `is£t +( +$def +['local'])) { + +322 +$cÞumns + = +$this +-> + `g‘Id’tif›rs +($this-> +_bË +); + +324 +$def +['loÿl'] = +$cÞumns +; + +327  +$def +; + +328 + } +} + +339 +public + +funùiÚ + + $g‘Id’tif›rs +( +Doùrše_TabË + +$bË +) + +341 +$compڒtNameToLow” + = + `¡¹Þow” +( +$bË +-> + `g‘CompڒtName +()); + +342 ià( + `is_¬¿y +( +$bË +-> + `g‘Id’tif›r +())) { + +343 +$cÞumns + = + `¬¿y +(); + +344 + `fܗch + (( +¬¿y +è +$bË +-> + `g‘Id’tif›rCÞumnNames +(è +as + +$id’tCÞName +) { + +345 +$cÞumns +[] = +$compڒtNameToLow” + . '_' . +$id’tCÞName +; + +348 +$cÞumns + = +$compڒtNameToLow” + . '_' . +$bË +-> + `g‘CÞumnName +( + +349 +$bË +-> + `g‘Id’tif›r +()); + +352  +$cÞumns +; + +353 + } +} + +362 +public + +funùiÚ + + $guessCÞumns +( +¬¿y + +$þas£s +, +Doùrše_TabË + +$fÜeignTabË +) + +364 +$cÚn + = +$this +-> +_bË +-> + `g‘CÚÃùiÚ +(); + +366 + `fܗch + ( +$þas£s + +as + +$þass +) { + +367 +Œy + { + +368 +$bË + = +$cÚn +-> + `g‘TabË +( +$þass +); + +369 } + `ÿtch + ( +Doùrše_TabË_Exû±iÚ + +$e +) { + +372 +$cÞumns + = +$this +-> + `g‘Id’tif›rs +( +$bË +); + +373 +$found + = +Œue +; + +375 + `fܗch + (( +¬¿y +è +$cÞumns + +as + +$cÞumn +) { + +376 iàÐ! +$fÜeignTabË +-> + `hasCÞumn +( +$cÞumn +)) { + +377 +$found + = +çl£ +; + +381 ià( +$found +) { + +386 iàÐ! +$found +) { + +387 +throw + +Ãw + + `Doùrše_R–©iÚ_Exû±iÚ +("Couldn't find columns."); + +390  +$cÞumns +; + +391 + } +} + +401 +public + +funùiÚ + + $com¶‘eDefš™iÚ +( +$def +) + +403 +$cÚn + = +$this +-> +_bË +-> + `g‘CÚÃùiÚ +(); + +404 +$def +['bË'] = +$this +-> + `g‘Im¶ +($def['class']); + +405 +$def +['loÿlTabË'] = +$this +-> +_bË +; + +406 +$def +['þass'] = $def['bË']-> + `g‘CompڒtName +(); + +408 +$fÜeignCÏs£s + = + `¬¿y_m”ge +( +$def +['bË']-> + `g‘O±iÚ +('·»Ás'), + `¬¿y +($def['class'])); + +409 +$loÿlCÏs£s + = + `¬¿y_m”ge +( +$this +-> +_bË +-> + `g‘O±iÚ +('·»Ás'), + `¬¿y +($this->_bË-> + `g‘CompڒtName +())); + +411 +$loÿlId’tif›rCÞumnNames + = +$this +-> +_bË +-> + `g‘Id’tif›rCÞumnNames +(); + +412 +$loÿlId’tif›rCouÁ + = + `couÁ +( +$loÿlId’tif›rCÞumnNames +); + +413 +$loÿlIdCÞumnName + = + `¬¿y_pÝ +( +$loÿlId’tif›rCÞumnNames +); + +414 +$fÜeignId’tif›rCÞumnNames + = +$def +['bË']-> + `g‘Id’tif›rCÞumnNames +(); + +415 +$fÜeignIdCÞumnName + = + `¬¿y_pÝ +( +$fÜeignId’tif›rCÞumnNames +); + +417 ià( + `is£t +( +$def +['local'])) { + +418 +$def +['loÿl'] = $def['loÿlTabË']-> + `g‘CÞumnName +($def['local']); + +420 iàÐ! + `is£t +( +$def +['foreign'])) { + +424 ià( +$def +['loÿl'] ==ð +$loÿlIdCÞumnName +) { + +425 +$def +['fÜeign'] = +$this +-> + `guessCÞumns +( +$loÿlCÏs£s +, $def['table']); + +429 +$def +['fÜeign'] = +$fÜeignIdCÞumnName +; + +430 +$def +['loÿlKey'] = +Œue +; + +433 +$def +['fÜeign'] = $def['bË']-> + `g‘CÞumnName +($def['foreign']); + +435 ià( +$loÿlId’tif›rCouÁ + == 1) { + +436 ià( +$def +['loÿl'] =ð +$loÿlIdCÞumnName + && + `is£t +($def['owningSide']) + +437 && +$def +['ownšgSide'] ==ð +Œue +) { + +438 +$def +['loÿlKey'] = +Œue +; + +439 } ià(( +$def +['loÿl'] !=ð +$loÿlIdCÞumnName + && $def['ty³'] =ð +Doùrše_R–©iÚ +:: +ONE +)) { + +440 +$def +['loÿlKey'] = +Œue +; + +442 } ià( +$loÿlId’tif›rCouÁ + > 1 && ! + `is£t +( +$def +['localKey'])) { + +445 +$def +['loÿlKey'] = +Œue +; + +449 ià( + `is£t +( +$def +['foreign'])) { + +450 +$def +['fÜeign'] = $def['bË']-> + `g‘CÞumnName +($def['foreign']); + +454 ià( +$def +['fÜeign'] ==ð +$fÜeignIdCÞumnName +) { + +455 +$def +['loÿlKey'] = +Œue +; + +456 +Œy + { + +457 +$def +['loÿl'] = +$this +-> + `guessCÞumns +( +$fÜeignCÏs£s +, $this-> +_bË +); + +458 } + `ÿtch + ( +Doùrše_R–©iÚ_Exû±iÚ + +$e +) { + +459 +$def +['loÿl'] = +$loÿlIdCÞumnName +; + +462 +$def +['loÿl'] = +$loÿlIdCÞumnName +; + +468 +$cÚn + = +$this +-> +_bË +-> + `g‘CÚÃùiÚ +(); + +471 + `fܗch + ( +$loÿlCÏs£s + +as + +$þass +) { + +472 +$bË + = +$cÚn +-> + `g‘TabË +( +$þass +); + +473 +$id’tif›rCÞumnNames + = +$bË +-> + `g‘Id’tif›rCÞumnNames +(); + +474 +$idCÞumnName + = + `¬¿y_pÝ +( +$id’tif›rCÞumnNames +); + +475 +$cÞumn + = + `¡¹Þow” +( +$bË +-> + `g‘CompڒtName +()) + +476 . '_' . +$idCÞumnName +; + +478 + `fܗch + ( +$fÜeignCÏs£s + +as + +$þass2 +) { + +479 +$bË2 + = +$cÚn +-> + `g‘TabË +( +$þass2 +); + +480 ià( +$bË2 +-> + `hasCÞumn +( +$cÞumn +)) { + +481 +$def +['fÜeign'] = +$cÞumn +; + +482 +$def +['loÿl'] = +$idCÞumnName +; + +483  +$def +; + +488 + `fܗch + ( +$fÜeignCÏs£s + +as + +$þass +) { + +489 +$bË + = +$cÚn +-> + `g‘TabË +( +$þass +); + +490 +$id’tif›rCÞumnNames + = +$bË +-> + `g‘Id’tif›rCÞumnNames +(); + +491 +$idCÞumnName + = + `¬¿y_pÝ +( +$id’tif›rCÞumnNames +); + +492 +$cÞumn + = + `¡¹Þow” +( +$bË +-> + `g‘CompڒtName +()) + +493 . '_' . +$idCÞumnName +; + +495 + `fܗch + ( +$loÿlCÏs£s + +as + +$þass2 +) { + +496 +$bË2 + = +$cÚn +-> + `g‘TabË +( +$þass2 +); + +497 ià( +$bË2 +-> + `hasCÞumn +( +$cÞumn +)) { + +498 +$def +['fÜeign'] = +$idCÞumnName +; + +499 +$def +['loÿl'] = +$cÞumn +; + +500 +$def +['loÿlKey'] = +Œue +; + +501  +$def +; + +507 +$cÞumns + = + `¬¿y +(); + +508 + `fܗch + (( +¬¿y +è +$this +-> +_bË +-> + `g‘Id’tif›rCÞumnNames +(è +as + +$id +) { + +510 +$cÞumn + = + `¡¹Þow” +( +$bË +-> + `g‘CompڒtName +()) + +511 . '_' . +$id +; + +513 +$cÞ + = +$this +-> +_bË +-> + `g‘CÞumnDefš™iÚ +( +$id +); + +514 +$ty³ + = +$cÞ +['type']; + +515 +$Ëngth + = +$cÞ +['length']; + +517 + `un£t +( +$cÞ +['type']); + +518 + `un£t +( +$cÞ +['length']); + +519 + `un£t +( +$cÞ +['autoincrement']); + +520 + `un£t +( +$cÞ +['sequence']); + +521 + `un£t +( +$cÞ +['primary']); + +523 +$def +['bË']-> + `£tCÞumn +( +$cÞumn +, +$ty³ +, +$Ëngth +, +$cÞ +); + +525 +$cÞumns +[] = +$cÞumn +; + +527 ià( + `couÁ +( +$cÞumns +) > 1) { + +528 +$def +['fÜeign'] = +$cÞumns +; + +530 +$def +['fÜeign'] = +$cÞumns +[0]; + +532 +$def +['loÿl'] = +$loÿlIdCÞumnName +; + +535  +$def +; + +536 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Relation/Parser/Exception.php + +1 +çl£ +, + +41 'ª®yz”_ÝtiÚs' => +¬¿y +(), + +42 'ty³' => +£lf +:: +INDEX_TABLES +, + +44 'g’”©eP©h' => +çl£ +, + +45 'bË' => +nuÎ +, + +46 'b©chUpd©es' => +çl£ +, + +47 '¶ugšTabË' => +çl£ +, + +48 'f›lds' => +¬¿y +(), + +49 'cÚÃùiÚ' => +nuÎ +, + +50 'chžd»n' => +¬¿y +(), + +51 'ÿsÿdeD–‘e' => +Œue +, + +52 '­pLev–D–‘e' => +çl£ +); + +59 +public + +funùiÚ + + $__cÚ¡ruù +( +¬¿y + +$ÝtiÚs +) + +61 +$this +-> +_ÝtiÚs + = +Doùrše_Lib +:: + `¬¿yD“pM”ge +($this->_ÝtiÚs, +$ÝtiÚs +); + +63 iàÐ! + `is£t +( +$this +-> +_ÝtiÚs +['analyzer'])) { + +64 +$this +-> +_ÝtiÚs +['analyzer'] = 'Doctrine_Search_Analyzer_Standard'; + +67 iàÐ! + `is£t +( +$this +-> +_ÝtiÚs +['analyzer_options'])) { + +68 +$this +-> +_ÝtiÚs +['ª®yz”_ÝtiÚs'] = + `¬¿y +(); + +71 +$this +-> +_ÝtiÚs +['ª®yz”'] = +Ãw + $this->_options['analyzer']($this->_options['analyzer_options']); + +74 +public + +funùiÚ + + $buždTabË +() + +76 +$»suÉ + = +·»Á +:: + `buždTabË +(); + +78 iàÐ! + `is£t +( +$this +-> +_ÝtiÚs +['connection'])) { + +79 +$mªag” + = +Doùrše_Mªag” +:: + `g‘In¡ªû +(); + +80 +$this +-> +_ÝtiÚs +['cÚÃùiÚ'] = +$mªag” +-> + `g‘CÚÃùiÚFÜCompڒt +($this->_ÝtiÚs['bË']-> + `g‘CompڒtName +()); + +81 +$mªag” +-> + `bšdCompڒt +( +$this +-> +_ÝtiÚs +['þassName'], $this->_ÝtiÚs['cÚÃùiÚ']-> + `g‘Name +()); + +84  +$»suÉ +; + +85 + } +} + +94 +public + +funùiÚ + + $£¬ch +( +$¡ršg +, +$qu”y + = +nuÎ +) + +96 +$q + = +Ãw + + `Doùrše_S—rch_Qu”y +( +$this +-> +_bË +); + +98 ià( +$qu”y + +š¡ªûof + +Doùrše_Qu”y +) { + +99 +$q +-> + `qu”y +( +$¡ršg +, +çl£ +); + +101 +$ÃwQu”y + = +$qu”y +-> + `cÝy +(); + +102 +$qu”y +-> + `g‘SqlQu”y +(); + +103 +$key + = ( +¬¿y +è +$this +-> + `g‘O±iÚ +('bË')-> + `g‘Id’tif›r +(); + +104 +$ÃwQu”y +-> + `addWh”e +( +$qu”y +-> + `g‘RoÙAlŸs +(è. '.'. + `cu¼’t +( +$key +).' IN (SQL:' . +$q +-> + `g‘SqlQu”y +(è. ')', $q-> + `g‘P¬ams +()); + +106  +$ÃwQu”y +; + +108 iàÐ! + `is£t +( +$this +-> +_ÝtiÚs +['connection'])) { + +109 +$this +-> +_ÝtiÚs +['cÚÃùiÚ'] = $this-> +_bË +-> + `g‘CÚÃùiÚ +(); + +111 +$q +-> + `qu”y +( +$¡ršg +); + +112  +$this +-> +_ÝtiÚs +['cÚÃùiÚ']-> + `ãtchAÎ +( +$q +-> + `g‘SqlQu”y +(), $q-> + `g‘P¬ams +()); + +114 + } +} + +123 +public + +funùiÚ + + $ª®yze +( +$‹xt +, +$’codšg + = +nuÎ +) + +125  +$this +-> +_ÝtiÚs +['ª®yz”']-> + `ª®yze +( +$‹xt +, +$’codšg +); + +126 + } +} + +135 +public + +funùiÚ + + $upd©eIndex +( +¬¿y + +$d©a +, +$’codšg + = +nuÎ +) + +137 +$this +-> + `š™Ÿlize +($this-> +_ÝtiÚs +['table']); + +139 +$f›lds + = +$this +-> + `g‘O±iÚ +('fields'); + +140 +$þass + = +$this +-> + `g‘O±iÚ +('className'); + +141 +$Çme + = +$this +-> + `g‘O±iÚ +('bË')-> + `g‘CompڒtName +(); + +142 +$cÚn + = +$this +-> + `g‘O±iÚ +('bË')-> + `g‘CÚÃùiÚ +(); + +143 +$id’tif›r + = +$this +-> +_ÝtiÚs +['bË']-> + `g‘Id’tif›r +(); + +145 +$q + = +Doùrše_CÜe +:: + `g‘TabË +( +$þass +) + +146 -> + `ü—‹Qu”y +() + +147 -> + `d–‘e +(); + +148 + `fܗch + (( +¬¿y +è +$id’tif›r + +as + +$id +) { + +149 +$q +-> + `addWh”e +( +$id + . ' = ?', + `¬¿y +( +$d©a +[$id])); + +151 +$q +-> + `execu‹ +(); + +153 ià( +$this +-> +_ÝtiÚs +['b©chUpd©es'] ==ð +Œue +) { + +154 +$šdex + = +Ãw + + `$þass +(); + +156 + `fܗch + (( +¬¿y +è +$this +-> +_ÝtiÚs +['bË']-> + `g‘Id’tif›r +(è +as + +$id +) { + +157 +$šdex +-> +$id + = +$d©a +[$id]; + +160 +$šdex +-> + `§ve +(); + +162 + `fܗch + ( +$f›lds + +as + +$f›ld +) { + +164 +$v®ue + = + `is£t +( +$d©a +[ +$f›ld +]è? $d©a[$f›ld] : +nuÎ +; + +166 +$‹rms + = +$this +-> + `ª®yze +( +$v®ue +, +$’codšg +); + +168 + `fܗch + ( +$‹rms + +as + +$pos + => +$‹rm +) { + +169 +$šdex + = +Ãw + + `$þass +(); + +171 +$šdex +-> +keywÜd + = +$‹rm +; + +172 +$šdex +-> +pos™iÚ + = +$pos +; + +173 +$šdex +-> +f›ld + = +$f›ld +; + +174 + `fܗch + (( +¬¿y +è +$this +-> +_ÝtiÚs +['bË']-> + `g‘Id’tif›r +(è +as + +$id +) { + +175 +$šdex +-> +$id + = +$d©a +[$id]; + +178 +$šdex +-> + `§ve +(); + +179 +$šdex +-> + `ä“ +( +Œue +); + +183 + } +} + +192 +public + +funùiÚ + + $»adTabËD©a +( +$lim™ + = +nuÎ +, +$off£t + =‚ull) + +194 +$this +-> + `š™Ÿlize +($this-> +_ÝtiÚs +['table']); + +196 +$cÚn + = +$this +-> +_ÝtiÚs +['bË']-> + `g‘CÚÃùiÚ +(); + +197 +$bËName + = +$this +-> +_ÝtiÚs +['bË']-> + `g‘TabËName +(); + +198 +$id + = + `cu¼’t +( +$this +-> +_ÝtiÚs +['bË']-> + `g‘Id’tif›rCÞumnNames +()); + +199 +$bËId + = + `cu¼’t +( +$this +-> +_bË +-> + `g‘Id’tif›rCÞumnNames +()); + +201 +$qu”y + = 'SELECT * FROM ' . +$cÚn +-> + `quÙeId’tif›r +( +$bËName +) + +202 . ' WHERE ' . +$cÚn +-> + `quÙeId’tif›r +( +$id +) + +203 . ' IN (SELECT ' . +$cÚn +-> + `quÙeId’tif›r +( +$bËId +) + +204 . ' FROM ' . +$cÚn +-> + `quÙeId’tif›r +( +$this +-> +_bË +-> + `g‘TabËName +()) + +205 . ' WHERE keywÜd = \'\'èOR ' . +$cÚn +-> + `quÙeId’tif›r +( +$id +) + +206 . ' NOT IN (SELECT ' . +$cÚn +-> + `quÙeId’tif›r +( +$bËId +) + +207 . ' FROM ' . +$cÚn +-> + `quÙeId’tif›r +( +$this +-> +_bË +-> + `g‘TabËName +()) . ')'; + +209 +$qu”y + = +$cÚn +-> + `modifyLim™Qu”y +($qu”y, +$lim™ +, +$off£t +); + +211  +$cÚn +-> + `ãtchAÎ +( +$qu”y +); + +212 + } +} + +221 +public + +funùiÚ + + $b©chUpd©eIndex +( +$lim™ + = +nuÎ +, +$off£t + =‚uÎ, +$’codšg + =‚ull) + +223 +$bË + = +$this +-> +_ÝtiÚs +['table']; + +225 +$this +-> + `š™Ÿlize +( +$bË +); + +227 +$id + = +$bË +-> + `g‘Id’tif›rCÞumnNames +(); + +228 +$þass + = +$this +-> +_ÝtiÚs +['className']; + +229 +$f›lds + = +$this +-> +_ÝtiÚs +['fields']; + +230 +$cÚn + = +$this +-> +_ÝtiÚs +['bË']-> + `g‘CÚÃùiÚ +(); + +232  +$i + = 0; $˜< + `couÁ +( +$f›lds +); $i++) { + +233 +$f›lds +[ +$i +] = +$bË +-> + `g‘CÞumnName +($fields[$i], $fields[$i]); + +236 +$rows + = +$this +-> + `»adTabËD©a +( +$lim™ +, +$off£t +); + +238 +$ids + = + `¬¿y +(); + +239 + `fܗch + ( +$rows + +as + +$row +) { + +240 + `fܗch + ( +$id + +as + +$idcÞ +) { + +241 +$ids +[] = +$row +[ +$idcÞ +]; + +245 ià( + `couÁ +( +$ids +) > 0) + +247 +$sql + = 'DELETE FROM ' . +$cÚn +-> + `quÙeId’tif›r +( +$this +-> +_bË +-> + `g‘TabËName +()); + +249 ià( + `couÁ +( +$id +) == 1) { + +250 +$¶aûhÞd”s + = + `¡r_»³© +('?, ', + `couÁ +( +$ids +)); + +251 +$¶aûhÞd”s + = + `sub¡r +($¶aûhÞd”s, 0, + `¡¾’ +($placeholders) - 2); + +252 +$sql + .ð' WHERE ' . +$cÚn +-> + `quÙeId’tif›r +( +$bË +-> + `g‘Id’tif›r +()è. ' IN (' . + `sub¡r +( +$¶aûhÞd”s +, 0) . ')'; + +255 +$¶aûhÞd”s + = ''; + +256 + `fܗch + ( +$bË +-> + `g‘Id’tif›r +(è +as + +$id +) { + +257 +$¶aûhÞd”s + .ð +$cÚn +-> + `quÙeId’tif›r +( +$id +) . ' = ? AND '; + +259 +$¶aûhÞd”s + = '(' . + `sub¡r +($¶aûhÞd”s, 0, + `¡¾’ +($placeholders) - 5) . ') OR '; + +260 +$¶aûhÞd”s + = + `¡r_»³© +($¶aûhÞd”s, + `couÁ +( +$rows +)); + +261 +$¶aûhÞd”s + = + `sub¡r +($¶aûhÞd”s, 0, + `¡¾’ +($placeholders) - 4); + +262 +$sql + .ð' WHERE ' . +$¶aûhÞd”s +; + +265 +$cÚn +-> + `exec +( +$sql +, +$ids +); + +268 + `fܗch + ( +$rows + +as + +$row +) { + +269 +$cÚn +-> + `begšT¿n§ùiÚ +(); + +270 +Œy + { + +271 + `fܗch + ( +$f›lds + +as + +$f›ld +) { + +272 +$d©a + = +$row +[ +$f›ld +]; + +274 +$‹rms + = +$this +-> + `ª®yze +( +$d©a +, +$’codšg +); + +276 + `fܗch + ( +$‹rms + +as + +$pos + => +$‹rm +) { + +277 +$šdex + = +Ãw + + `$þass +(); + +279 +$šdex +-> +keywÜd + = +$‹rm +; + +280 +$šdex +-> +pos™iÚ + = +$pos +; + +281 +$šdex +-> +f›ld + = +$f›ld +; + +283 + `fܗch + (( +¬¿y +è +$bË +-> + `g‘Id’tif›r +(è +as + +$id’tif›r +) { + +284 +$šdex +-> +$id’tif›r + = +$row +[ +$bË +-> + `g‘CÞumnName +($identifier, $identifier)]; + +287 +$šdex +-> + `§ve +(); + +288 +$šdex +-> + `ä“ +( +Œue +); + +291 +$cÚn +-> + `comm™ +(); + +292 } + `ÿtch + ( +Doùrše_Exû±iÚ + +$e +) { + +293 +$cÚn +-> + `rÞlback +(); + +294 +throw + +$e +; + +297 + } +} + +304 +public + +funùiÚ + + $£tTabËDefš™iÚ +() + +306 iàÐ! + `is£t +( +$this +-> +_ÝtiÚs +['table'])) { + +307 +throw + +Ãw + + `Doùrše_RecÜd_Exû±iÚ +("Unknown option 'table'."); + +310 +$compڒtName + = +$this +-> +_ÝtiÚs +['bË']-> + `g‘CompڒtName +(); + +312 +$þassName + = +$this +-> + `g‘O±iÚ +('className'); + +314 +$autoLßd + = ( +boÞ +è( +$this +-> +_ÝtiÚs +['generateFiles']); + +315 ià( + `þass_exi¡s +( +$þassName +, +$autoLßd +)) { + +316  +çl£ +; + +321 +$´eviousId’tif›r + = + `¬¿y +(); + +322 + `fܗch + ( +$this +-> +_bË +-> + `g‘Id’tif›r +(è +as + +$Çme +) { + +323 +$´eviousId’tif›r +[ +$Çme +] = +$this +-> +_bË +-> + `g‘CÞumnDefš™iÚ +($name); + +324 +$this +-> +_bË +-> + `»moveCÞumn +( +$Çme +); + +327 +$cÞumns + = + `¬¿y +('keyword' =>‡rray('type' => 'string', + +329 '´im¬y' => +Œue +, + +331 'f›ld' => + `¬¿y +('type' => 'string', + +333 '´im¬y' => +Œue +), + +334 'pos™iÚ' => + `¬¿y +('type' => 'integer', + +336 '´im¬y' => +Œue +, + +339 +$this +-> + `hasCÞumns +( +$cÞumns +); + +340 +$this +-> + `hasCÞumns +( +$´eviousId’tif›r +); + +341 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Search/Analyzer.php + +1 +_ÝtiÚs + = +$ÝtiÚs +; + +42 +public + +funùiÚ + + $ª®yze +( +$‹xt +, +$’codšg + = +nuÎ +) + +44  +$‹xt +; + +45 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Search/Analyzer/Exception.php + +1 +$‹rm +) { + +276 ià( + `em±y +( +$‹rm +)) { + +279 +$low” + = + `¡¹Þow” +( + `Œim +( +$‹rm +)); + +281 ià( + `š_¬¿y +( +$low” +, +£lf +:: +$_¡ÝwÜds +)) { + +285 +$»t +[ +$i +] = +$low” +; + +288  +$»t +; + +290 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Search/Analyzer/Utf8.php + +1 +_ÝtiÚs +['encoding']) ? $this->_options['encoding']:'utf-8'; + +45 ià( + `¡rÿ£cmp +( +$’codšg +, 'utf-8') != 0 && strcasecmp($encoding, 'utf8') != 0) { + +46 +$‹xt + = + `icÚv +( +$’codšg +, 'UTF-8', $text); + +49 +$‹xt + = + `´eg_»¶aû +('/[^\p{L}\p{N}]+/u', ' ', $text); + +50 +$‹xt + = + `¡r_»¶aû +(' ', ' ', $text); + +52 +$‹rms + = + `ex¶ode +(' ', +$‹xt +); + +54 +$»t + = + `¬¿y +(); + +55 iàÐ! + `em±y +( +$‹rms +)) { + +56 + `fܗch + ( +$‹rms + +as + +$i + => +$‹rm +) { + +57 ià( + `em±y +( +$‹rm +)) { + +60 +$low” + = + `mb_¡¹Þow” +( + `Œim +( +$‹rm +), 'UTF-8'); + +62 ià( + `š_¬¿y +( +$low” +, +£lf +:: +$_¡ÝwÜds +)) { + +66 +$»t +[ +$i +] = +$low” +; + +69  +$»t +; + +71 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Search/Exception.php + +1 +_ÝtiÚs +['resource'])) { + +45 +$cÚn + = +Doùrše_Mªag” +:: + `cÚÃùiÚ +(); + +46 +$bËCÏss + = +$cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_TABLE_CLASS +); + +47 +$bË + = +Ãw + + `$bËCÏss +('Fže', +$cÚn +); + +49 +$bË +-> + `£tCÞumn +('u¾', '¡ršg', 255, + `¬¿y +('´im¬y' => +Œue +)); + +52 ià( + `em±y +( +$this +-> +_ÝtiÚs +['fields'])) { + +53 +$this +-> +_ÝtiÚs +['f›lds'] = + `¬¿y +('url', 'content'); + +56 +$this +-> + `š™Ÿlize +( +$bË +); + +59 +public + +funùiÚ + + $buždR–©iÚ +() + +62 + } +} + +70 +public + +funùiÚ + + $šdexDœeùÜy +( +$dœ +) + +72 +$™ + = +Ãw + + `RecursiveI‹¿tÜI‹¿tÜ +Òew + `RecursiveDœeùÜyI‹¿tÜ +( +$dœ +), + +73 +RecursiveI‹¿tÜI‹¿tÜ +:: +LEAVES_ONLY +); + +75 + `fܗch + ( +$™ + +as + +$fže +) { + +76 ià( + `¡½os +( +$fže +, +DIRECTORY_SEPARATOR + . '.svn'è!=ð +çl£ +) { + +80 +$this +-> + `upd©eIndex +( + `¬¿y +('u¾' => +$fže +-> + `g‘P©hName +(), + +81 'cڋÁ' => + `fže_g‘_cڋÁs +( +$fže +))); + +83 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Search/Indexer.php + +1 + `g‘P©hName +(); + +46 ià( + `¡½os +( +$Çme +, '.svn'è==ð +çl£ +) { + +47 +$fžes +[] = +$Çme +; + +51 +$q + = +Doùrše_CÜe +:: + `g‘TabË +('Doctrine_File') + +52 -> + `ü—‹Qu”y +('f') + +53 -> + `d–‘e +() + +54 -> + `wh”e +('f.u¾ LIKE ?', + `¬¿y +( +$dœ + . '%')) + +55 -> + `execu‹ +(); + +58 +$q + = +Doùrše_CÜe +:: + `g‘TabË +('Doctrine_File_Index') + +59 -> + `ü—‹Qu”y +('i') + +60 -> + `wh”e +('i.file_id = ?') + +61 -> + `execu‹ +(); + +63 +$cÞl + = +Doùrše_CÞËùiÚ +:: + `ü—‹ +('Doctrine_File'); + +65 + `fܗch + ( +$fžes + +as + +$fže +) { + +66 +$cÞl +[]-> +u¾ + = +$fže +; + +69 +$cÞl +-> + `§ve +(); + +71 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Search/Indexer/Dir.php + +1 + `šdexFže +( +$fže +); + +47 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Search/Indexer/Exception.php + +1 +_£¬ch + = +$£¬ch +; + +42 +public + +funùiÚ + + $´eUpd©e +( +Doùrše_Ev’t + +$ev’t +) + +44 + } +} + +46 +public + +funùiÚ + + $po¡Upd©e +( +Doùrše_Ev’t + +$ev’t +) + +48 +$»cÜd + = +$ev’t +-> + `g‘Invok” +(); + +50 +$this +-> +_£¬ch +-> + `upd©eIndex +( +$»cÜd +-> + `toA¼ay +()); + +51 + } +} + +53 +public + +funùiÚ + + $po¡In£¹ +( +Doùrše_Ev’t + +$ev’t +) + +55 +$»cÜd + = +$ev’t +-> + `g‘Invok” +(); + +57 +$this +-> +_£¬ch +-> + `upd©eIndex +( +$»cÜd +-> + `toA¼ay +()); + +58 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Search/Parser.php + +1 +$fže +, 'cڋÁs' => +$cڋÁs +); + +41 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Search/Query.php + +1 +_tok’iz” + = +Ãw + + `Doùrše_Qu”y_Tok’iz” +(); + +65 +$this +-> +_bË + = +$bË +; + +67 +$fÜeignId + = + `cu¼’t +( + `¬¿y_diff +( +$this +-> +_bË +-> + `g‘CÞumnNames +(), + `¬¿y +('keyword', 'field', 'position'))); + +69 +$this +-> +_cÚd™iÚ + = +$fÜeignId + . ' % (SELECT ' . $fÜeignId . ' FROM ' . $this-> +_bË +-> + `g‘TabËName +() . ' WHERE '; + +73 +public + +funùiÚ + + $qu”y +( +$‹xt +, +$šþudeR–evªû + = +Œue +) + +75 +$‹xt + = + `Œim +($text); + +77 +$fÜeignId + = + `cu¼’t +( + `¬¿y_diff +( +$this +-> +_bË +-> + `g‘CÞumnNames +(), + `¬¿y +('keyword', 'field', 'position'))); + +79 +$weigh‹d + = +çl£ +; + +80 ià( + `¡½os +( +$‹xt +, '^'è==ð +çl£ +) { + +81 ià( +$šþudeR–evªû +) { + +82 +$£Ëù + = 'SELECT COUNT(keywÜdèAS„–evªû, ' . +$fÜeignId +; + +84 +$£Ëù + = 'SELECT ' . +$fÜeignId +; + +87 ià( +$šþudeR–evªû +) { + +88 +$£Ëù + = 'SELECT SUM(sub_»ËvªûèAS„–evªû, ' . +$fÜeignId +; + +90 +$£Ëù + = 'SELECT ' . +$fÜeignId +; + +94 +$äom + = 'FROM ' . +$this +-> +_bË +-> + `g‘TabËName +(); + +95 +$wh”e + = 'WHERE '; + +96 +$wh”e + .ð +$this +-> + `·r£CÏu£ +( +$‹xt +); + +98 +$groupby + = 'GROUP BY ' . +$fÜeignId +; + +99 ià( +$šþudeR–evªû +) { + +100 +$Üd”By + = 'ORDER BY„elevance DESC'; + +102 +$Üd”By + = +nuÎ +; + +104 +$this +-> +_sql + = +$£Ëù + . ' ' . +$äom + . ' ' . +$wh”e + . ' ' . +$groupby +; + +105 ià( + `is£t +( +$Üd”By +è&& $Üd”By !=ð +nuÎ +) { + +106 +$this +-> +_sql + .ð' ' . +$Üd”By +; + +108 + } +} + +110 +public + +funùiÚ + + $·r£CÏu£ +( +$Üigš®CÏu£ +, +$»cursive + = +çl£ +) + +112 +$þau£ + = +$this +-> +_tok’iz” +-> + `b¿ck‘Trim +( +$Üigš®CÏu£ +); + +114 +$b¿ck‘s + = +çl£ +; + +116 ià( +$þau£ + !=ð +$Üigš®CÏu£ +) { + +117 +$b¿ck‘s + = +Œue +; + +120 +$fÜeignId + = + `cu¼’t +( + `¬¿y_diff +( +$this +-> +_bË +-> + `g‘CÞumnNames +(), + `¬¿y +('keyword', 'field', 'position'))); + +122 +$‹rms + = +$this +-> +_tok’iz” +-> + `sqlEx¶ode +( +$þau£ +, ' OR ', '(', ')'); + +124 +$»t + = + `¬¿y +(); + +126 ià( + `couÁ +( +$‹rms +) > 1) { + +127 +$ËavesOÆy + = +Œue +; + +129 + `fܗch + ( +$‹rms + +as + +$k + => +$‹rm +) { + +130 ià( +$this +-> + `isEx´essiÚ +( +$‹rm +)) { + +131 +$»t +[ +$k +] = +$this +-> + `·r£CÏu£ +( +$‹rm +, +Œue +); + +132 +$ËavesOÆy + = +çl£ +; + +134 +$»t +[ +$k +] = +$this +-> + `·r£T”m +( +$‹rm +); + +138 +$»tuº + = + `im¶ode +(' OR ', +$»t +); + +140 ià( +$ËavesOÆy + && +$»cursive +) { + +141 +$»tuº + = + `¥rštf +( +$this +-> +_cÚd™iÚ +, 'IN') . $return . ')'; + +142 +$b¿ck‘s + = +çl£ +; + +145 +$‹rms + = +$this +-> +_tok’iz” +-> + `sqlEx¶ode +( +$þau£ +, ' ', '(', ')'); + +147 ià( + `couÁ +( +$‹rms +è==ð1 && ! +$»cursive +) { + +148 +$»tuº + = +$this +-> + `·r£T”m +( +$þau£ +); + +150 + `fܗch + ( +$‹rms + +as + +$k + => +$‹rm +) { + +151 +$‹rm + = + `Œim +($term); + +153 ià( +$‹rm + === 'AND') { + +157 ià( + `sub¡r +( +$‹rm +, 0, 1) === '-') { + +158 +$ݔ©Ü + = 'NOT IN'; + +159 +$‹rm + = + `sub¡r +($term, 1); + +161 +$ݔ©Ü + = 'IN'; + +164 ià( +$this +-> + `isEx´essiÚ +( +$‹rm +)) { + +165 +$»t +[ +$k +] = +$this +-> + `·r£CÏu£ +( +$‹rm +, +Œue +); + +167 +$»t +[ +$k +] = + `¥rštf +( +$this +-> +_cÚd™iÚ +, +$ݔ©Ü +è. $this-> + `·r£T”m +( +$‹rm +) . ')'; + +170 +$»tuº + = + `im¶ode +(' AND ', +$»t +); + +174 ià( +$b¿ck‘s +) { + +175  '(' . +$»tuº + . ')'; + +177  +$»tuº +; + +179 + } +} + +181 +public + +funùiÚ + + $isEx´essiÚ +( +$‹rm +) + +183 ià( + `¡½os +( +$‹rm +, '('è!=ð +çl£ +) { + +184  +Œue +; + +186 +$‹rms + = +$this +-> +_tok’iz” +-> + `quÙeEx¶ode +( +$‹rm +); + +188  ( + `couÁ +( +$‹rms +) > 1); + +190 + } +} + +192 +public + +funùiÚ + + $·r£T”m +( +$‹rm +) + +194 +$Ãg©iÚ + = +çl£ +; + +196 ià( + `¡½os +( +$‹rm +, "'"è==ð +çl£ +) { + +197 +$wh”e + = +$this +-> + `·r£WÜd +( +$‹rm +); + +199 +$‹rm + = + `Œim +($term, "' "); + +201 +$‹rms + = +$this +-> +_tok’iz” +-> + `quÙeEx¶ode +( +$‹rm +); + +202 +$wh”e + = +$this +-> + `·r£WÜd +( +$‹rms +[0]); + +204 + `fܗch + ( +$‹rms + +as + +$k + => +$wÜd +) { + +205 ià( +$k + === 0) { + +208 +$wh”e + .ð' AND (pos™iÚ + ' . +$k + . 'èIN (SELECT…os™iÚ FROM ' . +$this +-> +_bË +-> + `g‘TabËName +(è. ' WHERE ' . $this-> + `·r£WÜd +( +$wÜd +) . ')'; + +211  +$wh”e +; + +212 + } +} + +214 +public + +funùiÚ + + $·r£WÜd +( +$wÜd +) + +216 +$this +-> +_wÜds +[] = + `¡r_»¶aû +('*', '', +$wÜd +); + +218 ià( + `¡½os +( +$wÜd +, '?'è!=ð +çl£ + || + +219 + `¡½os +( +$wÜd +, '*'è!=ð +çl£ +) { + +221 +$wÜd + = + `¡r_»¶aû +('*', '%', $word); + +223 +$wh”e + = 'keyword LIKE ?'; + +225 +$·¿ms + = + `¬¿y +( +$wÜd +); + +227 +$wh”e + = 'keyword = ?'; + +230 +$this +-> +_·¿ms +[] = +$wÜd +; + +232  +$wh”e +; + +233 + } +} + +235 +public + +funùiÚ + + $g‘WÜds +() + +237  +$this +-> +_wÜds +; + +238 + } +} + +240 +public + +funùiÚ + + $g‘P¬ams +() + +242  +$this +-> +_·¿ms +; + +243 + } +} + +245 +public + +funùiÚ + + $g‘SqlQu”y +() + +247  +$this +-> +_sql +; + +248 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Search/Record.php + +1 + `hasCÞumn +('keywÜd', '¡ršg', 250, + `¬¿y +('nÙnuÎ' => +Œue +)); + +38 +$this +-> + `hasCÞumn +('f›ld', '¡ršg', 50, + `¬¿y +('nÙnuÎ' => +Œue +)); + +39 +$this +-> + `hasCÞumn +('position', 'integer', 8); + +44 +public + +funùiÚ + + $£tUp +() + +46 +$this +-> + `hasOà +('[Compڒt]', + `¬¿y +('onDelete' => 'CASCADE')); + +47 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Sequence.php + +1 +w¬nšgs +[] = 'database does‚ot support getting current + +72 +£qu’û + +v®ue +, +the + sequ’û v®u +was + +šüem’‹d +'; + +73  +$this +-> + `ÃxtId +( +$£qName +); + +74 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Sequence/Db2.php + +1 +cÚn +-> + `quÙeId’tif›r +($this->cÚn-> +fÜm©‹r +-> + `g‘Sequ’ûName +( +$£qName +), +Œue +); + +47 +$qu”y + = 'SELECT NEXTVAL FOR ' . +$£qu’ûName + . ' AS VAL FROM SYSIBM.SYSDUMMY1'; + +49 +Œy + { + +50 +$»suÉ + = +$this +-> +cÚn +-> + `ãtchOà +( +$qu”y +); + +51 +$»suÉ + = ($»suÉè? $»suÉ['VAL'] : +nuÎ +; + +52 } + `ÿtch +( +Doùrše_CÚÃùiÚ_Exû±iÚ + +$e +) { + +53 ià( +$ÚDemªd + && +$e +-> + `g‘P܏bËCode +(è=ð +Doùrše_CÜe +:: +ERR_NOSUCHTABLE +) { + +54 +Œy + { + +55 +$»suÉ + = +$this +-> +cÚn +-> +expÜt +-> + `ü—‹Sequ’û +( +$£qName +); + +56 } + `ÿtch +( +Doùrše_Exû±iÚ + +$e +) { + +57 +throw + +Ãw + + `Doùrše_Sequ’û_Exû±iÚ +('Ú demªd sequ’û ' . +$£qName + . ' could‚ot be created'); + +60  +$this +-> + `ÃxtId +( +$£qName +, +çl£ +); + +62 +throw + +Ãw + + `Doùrše_Sequ’û_Exû±iÚ +('£qu’û ' . +$£qName + . ' does‚otƒxist'); + +65  +$»suÉ +; + +77 +public + +funùiÚ + + $cu¼Id +( +$£qu’ûName +) + +79 +$sql + = 'SELECT PREVVAL FOR ' + +80 . +$this +-> + `quÙeId’tif›r +($this-> +cÚn +-> +fÜm©‹r +-> + `g‘Sequ’ûName +( +$£qu’ûName +)) + +83 +$¡mt + = +$this +-> + `qu”y +( +$sql +); + +84 +$»suÉ + = +$¡mt +-> + `ãtchAÎ +( +Doùrše_CÜe +:: +FETCH_ASSOC +); + +85 ià( +$»suÉ +) { + +86  +$»suÉ +[0]['VAL']; + +88  +nuÎ +; + +90 + } +} + +110 +public + +funùiÚ + + $Ï¡In£¹Id +( +$bËName + = +nuÎ +, +$´im¬yKey + =‚ull) + +112 +$this +-> + `_cÚÃù +(); + +114 ià( +$bËName + !=ð +nuÎ +) { + +115 +$£qu’ûName + = +$bËName +; + +116 ià( +$´im¬yKey +) { + +117 +$£qu’ûName + .= "_$primaryKey"; + +119 +$£qu’ûName + .= '_seq'; + +120  +$this +-> + `Ï¡Sequ’ûId +( +$£qu’ûName +); + +123 +$sql + = 'SELECT IDENTITY_VAL_LOCAL() AS VAL FROM SYSIBM.SYSDUMMY1'; + +124 +$¡mt + = +$this +-> + `qu”y +( +$sql +); + +125 +$»suÉ + = +$¡mt +-> + `ãtchAÎ +( +Doùrše_CÜe +:: +FETCH_ASSOC +); + +126 ià( +$»suÉ +) { + +127  +$»suÉ +[0]['VAL']; + +129  +nuÎ +; + +131 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Sequence/Exception.php + +1 +cÚn +-> + `quÙeId’tif›r +($this->cÚn-> +fÜm©‹r +-> + `g‘Sequ’ûName +( +$£qName +), +Œue +); + +46 +$£qcÞName + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($this->cÚn-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_SEQCOL_NAME +), +Œue +); + +49 ià( +$this +-> + `checkSequ’û +( +$£qu’ûName +)) { + +50 +$qu”y + = 'SET IDENTITY_INSERT ' . +$£qu’ûName + . ' OFF ' + +51 . 'INSERT INTO ' . +$£qu’ûName + . ' DEFAULT VALUES'; + +53 +$qu”y + = 'INSERT INTO ' . +$£qu’ûName + . ' (' . +$£qcÞName + . ') VALUES (0)'; + +56 +Œy + { + +57 +$this +-> +cÚn +-> + `exec +( +$qu”y +); + +58 } + `ÿtch +( +Doùrše_CÚÃùiÚ_Exû±iÚ + +$e +) { + +59 ià( +$ÚDemªd + && +$e +-> + `g‘P܏bËCode +(è=ð +Doùrše_CÜe +:: +ERR_NOSUCHTABLE +) { + +63 +Œy + { + +64 +$»suÉ + = +$this +-> +cÚn +-> +expÜt +-> + `ü—‹Sequ’û +( +$£qName +, 2); + +65 } + `ÿtch +( +Doùrše_Exû±iÚ + +$e +) { + +66 +throw + +Ãw + + `Doùrše_Sequ’û_Exû±iÚ +('Ú demªd sequ’û ' . +$£qName + . ' could‚ot be created'); + +74 ià( +$this +-> + `checkSequ’û +( +$£qName +)) { + +75  +$this +-> + `Ï¡In£¹Id +( +$£qName +); + +81 +throw + +$e +; + +84 +$v®ue + = +$this +-> + `Ï¡In£¹Id +( +$£qu’ûName +); + +86 ià( + `is_num”ic +( +$v®ue +)) { + +87 +$qu”y + = 'DELETE FROM ' . +$£qu’ûName + . ' WHERE ' . +$£qcÞName + . ' < ' . +$v®ue +; + +89 +Œy + { + +90 +$this +-> +cÚn +-> + `exec +( +$qu”y +); + +91 } + `ÿtch + ( +Doùrše_CÚÃùiÚ_Exû±iÚ + +$e +) { + +92 +throw + +Ãw + + `Doùrše_Sequ’û_Exû±iÚ +( + +94 +$£qu’ûName + . '‡ˆ' . +__FILE__ + . ' in ' . + +95 +__FUNCTION__ + . ' w™hhmes§ge: ' . +$e +-> + `g‘Mes§ge +() + +99  +$v®ue +; + +109 +public + +funùiÚ + + $checkSequ’û +( +$£qName +) + +111 +$qu”y + = 'SELECT COUNT(1èFROM ' . +$£qName +; + +112 +Œy + { + +113 +$this +-> +cÚn +-> + `execu‹ +( +$qu”y +); + +114 } + `ÿtch + ( +Doùrše_CÚÃùiÚ_Exû±iÚ + +$e +) { + +115 ià( +$e +-> + `g‘P܏bËCode +(è=ð +Doùrše_CÜe +:: +ERR_NOSUCHTABLE +) { + +116  +çl£ +; + +119  +Œue +; + +120 + } +} + +129 +public + +funùiÚ + + $Ï¡In£¹Id +( +$bË + = +nuÎ +, +$f›ld + =‚ull) + +131 +$£rv”Info + = +$this +-> +cÚn +-> + `g‘S”v”V”siÚ +(); + +132 ià( + `is_¬¿y +( +$£rv”Info +) + +133 && ! + `is_nuÎ +( +$£rv”Info +['major']) + +134 && +$£rv”Info +['major'] >= 8) { + +136 ià( + `is£t +( +$bË +)) + +138 +$qu”y + = 'SELECT IDENT_CURRENT(\'' . +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$bË +) . '\')'; + +140 +$qu”y + = 'SELECT SCOPE_IDENTITY()'; + +143 +$qu”y + = 'SELECT @@IDENTITY'; + +146  ( +¡ršg +è + `æoÜ +((è +$this +-> +cÚn +-> + `ãtchOà +( +$qu”y +)); + +147 + } +} + +156 +public + +funùiÚ + + $cu¼Id +( +$£qName +) + +158 +$this +-> +w¬nšgs +[] = 'database does‚ot support getting current + +159 +£qu’û + +v®ue +, +the + sequ’û v®u +was + +šüem’‹d +'; + +160  +$this +-> + `ÃxtId +( +$£qName +); + +161 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Sequence/Mysql.php + +1 +cÚn +-> + `quÙeId’tif›r +( +$£qName +, +Œue +); + +46 +$£qcÞName + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($this->cÚn-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_SEQCOL_NAME +), +Œue +); + +47 +$qu”y + = 'INSERT INTO ' . +$£qu’ûName + . ' (' . +$£qcÞName + . ') VALUES (NULL)'; + +49 +Œy + { + +50 +$this +-> +cÚn +-> + `exec +( +$qu”y +); + +51 } + `ÿtch +( +Doùrše_CÚÃùiÚ_Exû±iÚ + +$e +) { + +52 ià( +$ÚDemªd + && +$e +-> + `g‘P܏bËCode +(è=ð +Doùrše_CÜe +:: +ERR_NOSUCHTABLE +) { + +56 +Œy + { + +57 +$»suÉ + = +$this +-> +cÚn +-> +expÜt +-> + `ü—‹Sequ’û +( +$£qName +, 2); + +58 } + `ÿtch +( +Doùrše_Exû±iÚ + +$e +) { + +59 +throw + +Ãw + + `Doùrše_Sequ’û_Exû±iÚ +('Ú demªd sequ’û ' . +$£qName + . ' could‚ot be created'); + +65 +throw + +Ãw + + `Doùrše_Sequ’û_Exû±iÚ +('£qu’û ' . +$£qName + . ' does‚otƒxist'); + +69 +$v®ue + = +$this +-> + `Ï¡In£¹Id +(); + +71 ià( + `is_num”ic +( +$v®ue +)) { + +72 +$qu”y + = 'DELETE FROM ' . +$£qu’ûName + . ' WHERE ' . +$£qcÞName + . ' < ' . +$v®ue +; + +73 +$this +-> +cÚn +-> + `exec +( +$qu”y +); + +76  +$v®ue +; + +87 +public + +funùiÚ + + $Ï¡In£¹Id +( +$bË + = +nuÎ +, +$f›ld + =‚ull) + +89  +$this +-> +cÚn +-> + `g‘Dbh +()-> + `Ï¡In£¹Id +(); + +90 + } +} + +99 +public + +funùiÚ + + $cu¼Id +( +$£qName +) + +101 +$£qu’ûName + = +$this +-> +cÚn +-> + `quÙeId’tif›r +( +$£qName +, +Œue +); + +102 +$£qcÞName + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($this->cÚn-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_SEQCOL_NAME +), +Œue +); + +103 +$qu”y + = 'SELECT MAX(' . +$£qcÞName + . 'èFROM ' . +$£qu’ûName +; + +105  (è +$this +-> +cÚn +-> + `ãtchOà +( +$qu”y +); + +106 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Sequence/Oracle.php + +1 +cÚn +-> + `quÙeId’tif›r +($this->cÚn-> +fÜm©‹r +-> + `g‘Sequ’ûName +( +$£qName +), +Œue +); + +46 +$qu”y + = 'SELECT ' . +$£qu’ûName + . '.nextval FROM DUAL'; + +48 +Œy + { + +49 +$»suÉ + = +$this +-> +cÚn +-> + `ãtchOà +( +$qu”y +); + +50 } + `ÿtch +( +Doùrše_CÚÃùiÚ_Exû±iÚ + +$e +) { + +51 ià( +$ÚDemªd + && +$e +-> + `g‘P܏bËCode +(è=ð +Doùrše_CÜe +:: +ERR_NOSUCHTABLE +) { + +52 +Œy + { + +53 +$»suÉ + = +$this +-> +cÚn +-> +expÜt +-> + `ü—‹Sequ’û +( +$£qName +); + +54 } + `ÿtch +( +Doùrše_Exû±iÚ + +$e +) { + +55 +throw + +Ãw + + `Doùrše_Sequ’û_Exû±iÚ +('Ú demªd sequ’û ' . +$£qName + . ' could‚ot be created'); + +58  +$this +-> + `ÃxtId +( +$£qName +, +çl£ +); + +60 +throw + +Ãw + + `Doùrše_Sequ’û_Exû±iÚ +('£qu’û ' . +$£qName + . ' does‚otƒxist'); + +64  +$»suÉ +; + +74 +public + +funùiÚ + + $Ï¡In£¹ID +( +$bË + = +nuÎ +, +$f›ld + =‚ull) + +76 +$£qName + = +$bË + . ( + `em±y +( +$f›ld +) ? '' : '_'.$field); + +77 +$£qu’ûName + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($this->cÚn-> +fÜm©‹r +-> + `g‘Sequ’ûName +( +$£qName +), +Œue +); + +79  +$this +-> +cÚn +-> + `ãtchOà +('SELECT ' . +$£qu’ûName + . '.currval FROM DUAL'); + +80 + } +} + +89 +public + +funùiÚ + + $cu¼Id +( +$£qName +) + +91 +$£qu’ûName + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($this->cÚn-> +fÜm©‹r +-> + `g‘Sequ’ûName +( +$£qName +), +Œue +); + +92 +$qu”y + = 'SELECT (last_number-1) FROM user_sequences'; + +93 +$qu”y + .ð' WHERE sequ’û_Çme=' . +$this +-> +cÚn +-> + `quÙe +( +$£qu’ûName +, 'text'); + +94 +$qu”y + .ð' OR sequ’û_Çme=' . +$this +-> +cÚn +-> + `quÙe +( + `¡¹ouµ” +( +$£qu’ûName +), 'text'); + +96  +$this +-> +cÚn +-> + `ãtchOà +( +$qu”y +); + +97 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Sequence/Pgsql.php + +1 +cÚn +-> + `quÙeId’tif›r +($this->cÚn-> +fÜm©‹r +-> + `g‘Sequ’ûName +( +$£qName +), +Œue +); + +46 +$qu”y + = "SELECT NEXTVAL('" . +$£qu’ûName + . "')"; + +48 +Œy + { + +49 +$»suÉ + = (è +$this +-> +cÚn +-> + `ãtchOà +( +$qu”y +); + +50 } + `ÿtch +( +Doùrše_CÚÃùiÚ_Exû±iÚ + +$e +) { + +51 ià( +$ÚDemªd + && +$e +-> + `g‘P܏bËCode +(è=ð +Doùrše_CÜe +:: +ERR_NOSUCHTABLE +) { + +52 +Œy + { + +53 +$»suÉ + = +$this +-> +cÚn +-> +expÜt +-> + `ü—‹Sequ’û +( +$£qName +); + +54 } + `ÿtch +( +Doùrše_Exû±iÚ + +$e +) { + +55 +throw + +Ãw + + `Doùrše_Sequ’û_Exû±iÚ +('Ú demªd sequ’û ' . +$£qName + . ' could‚ot be created'); + +58  +$this +-> + `ÃxtId +( +$£qName +, +çl£ +); + +60 +throw + +Ãw + + `Doùrše_Sequ’û_Exû±iÚ +('£qu’û ' . +$£qName + . ' does‚otƒxist'); + +64  +$»suÉ +; + +77 +public + +funùiÚ + + $Ï¡In£¹Id +( +$bË + = +nuÎ +, +$f›ld + =‚ull) + +79 +$£qName + = +$bË + . ( + `em±y +( +$f›ld +) ? '' : '_' . $field); + +80 +$£qu’ûName + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($this->cÚn-> +fÜm©‹r +-> + `g‘Sequ’ûName +( +$£qName +), +Œue +); + +82  (è +$this +-> +cÚn +-> + `ãtchOà +("SELECT CURRVAL('" . +$£qu’ûName + . "')"); + +83 + } +} + +92 +public + +funùiÚ + + $cu¼Id +( +$£qName +) + +94 +$£qu’ûName + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($this->cÚn-> +fÜm©‹r +-> + `g‘Sequ’ûName +( +$£qName +), +Œue +); + +95  (è +$this +-> +cÚn +-> + `ãtchOà +('SELECT†a¡_v®uFROM ' . +$£qu’ûName +); + +96 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Sequence/Sqlite.php + +1 +cÚn +-> + `quÙeId’tif›r +($this->cÚn-> +fÜm©‹r +-> + `g‘Sequ’ûName +( +$£qName +), +Œue +); + +46 +$£qcÞName + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($this->cÚn-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_SEQCOL_NAME +), +Œue +); + +47 +$qu”y + = 'INSERT INTO ' . +$£qu’ûName + . ' (' . +$£qcÞName + . ') VALUES (NULL)'; + +49 +Œy + { + +50 +$this +-> +cÚn +-> + `exec +( +$qu”y +); + +51 } + `ÿtch +( +Doùrše_CÚÃùiÚ_Exû±iÚ + +$e +) { + +52 ià( +$ÚDemªd + && +$e +-> + `g‘P܏bËCode +(è=ð +Doùrše_CÜe +:: +ERR_NOSUCHTABLE +) { + +56 +Œy + { + +57 +$»suÉ + = +$this +-> +cÚn +-> +expÜt +-> + `ü—‹Sequ’û +( +$£qName +, 2); + +58 } + `ÿtch +( +Doùrše_Exû±iÚ + +$e +) { + +59 +throw + +Ãw + + `Doùrše_Sequ’û_Exû±iÚ +('Ú demªd sequ’û ' . +$£qName + . ' could‚ot be created'); + +64 +throw + +Ãw + + `Doùrše_Sequ’û_Exû±iÚ +('£qu’û ' . +$£qName + . ' does‚otƒxist'); + +68 +$v®ue + = +$this +-> +cÚn +-> + `g‘Dbh +()-> + `Ï¡In£¹Id +(); + +70 ià( + `is_num”ic +( +$v®ue +)) { + +71 +$qu”y + = 'DELETE FROM ' . +$£qu’ûName + . ' WHERE ' . +$£qcÞName + . ' < ' . +$v®ue +; + +72 +$this +-> +cÚn +-> + `exec +( +$qu”y +); + +75  +$v®ue +; + +86 +public + +funùiÚ + + $Ï¡In£¹Id +( +$bË + = +nuÎ +, +$f›ld + =‚ull) + +88  +$this +-> +cÚn +-> + `g‘Dbh +()-> + `Ï¡In£¹Id +(); + +89 + } +} + +98 +public + +funùiÚ + + $cu¼Id +( +$£qName +) + +100 +$£qu’ûName + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($this->cÚn-> +fÜm©‹r +-> + `g‘Sequ’ûName +( +$£qName +), +Œue +); + +101 +$£qcÞName + = +$this +-> +cÚn +-> + `quÙeId’tif›r +($this->cÚn-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_SEQCOL_NAME +), +Œue +); + +103 +$qu”y + = 'SELECT MAX(' . +$£qcÞName + . 'èFROM ' . +$£qu’ûName +; + +105  (è +$this +-> +cÚn +-> + `ãtchOà +( +$qu”y +); + +106 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Table.php + +1 +nuÎ +, + +166 'bËName' => +nuÎ +, + +167 '£qu’ûName' => +nuÎ +, + +168 'šh”™ªûM­' => +¬¿y +(), + +169 '’umM­' => +¬¿y +(), + +170 'ty³' => +nuÎ +, + +171 'ch¬£t' => +nuÎ +, + +172 'cÞϋ' => +nuÎ +, + +173 'Œ“Im¶' => +nuÎ +, + +174 'Œ“O±iÚs' => +¬¿y +(), + +175 'šdexes' => +¬¿y +(), + +176 '·»Ás' => +¬¿y +(), + +177 'jošedP¬’ts' => +¬¿y +(), + +178 'qu”yP¬ts' => +¬¿y +(), + +179 'v”siښg' => +nuÎ +, + +180 'subþas£s' => +¬¿y +(), + +181 'Üd”By' => +nuÎ + + +187 +´Ùeùed + + m$_Œ“ +; + +192 +´Ùeùed + + m$_·r£r +; + +198 +´Ùeùed + + m$_‹m¶©es + = +¬¿y +(); + +204 +´Ùeùed + + m$_fž‹rs + = +¬¿y +(); + +210 +´Ùeùed + + m$_g’”©Üs + = +¬¿y +(); + +218 +´Ùeùed + + m$_g’”©Ü +; + +223 +´Ùeùed + + m$_švokedM‘hods + = +¬¿y +(); + +228 +´Ùeùed + + m$»cÜd +; + +238 +public + +funùiÚ + + $__cÚ¡ruù +( +$Çme +, +Doùrše_CÚÃùiÚ + +$cÚn +, +$š™Defš™iÚ + = +çl£ +) + +240 +$this +-> +_cÚn + = +$cÚn +; + +241 +$this +-> +_ÝtiÚs +['Çme'] = +$Çme +; + +243 +$this +-> + `£tP¬’t +($this-> +_cÚn +); + +244 +$this +-> +_cÚn +-> + `addTabË +($this); + +246 +$this +-> +_·r£r + = +Ãw + + `Doùrše_R–©iÚ_P¬£r +($this); + +248 ià( +$ch¬£t + = +$this +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_DEFAULT_TABLE_CHARSET +)) { + +249 +$this +-> +_ÝtiÚs +['ch¬£t'] = +$ch¬£t +; + +251 ià( +$cÞϋ + = +$this +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_DEFAULT_TABLE_COLLATE +)) { + +252 +$this +-> +_ÝtiÚs +['cÞϋ'] = +$cÞϋ +; + +255 ià( +$š™Defš™iÚ +) { + +256 +$this +-> +»cÜd + = $this-> + `š™Defš™iÚ +(); + +258 +$this +-> + `š™Id’tif›r +(); + +260 +$this +-> +»cÜd +-> + `£tUp +(); + +263 ià( +$this +-> + `isT»e +()) { + +264 +$this +-> + `g‘T»e +()-> + `£tUp +(); + +267 iàÐ! + `is£t +( +$this +-> +_ÝtiÚs +['tableName'])) { + +268 +$this +-> + `£tTabËName +( +Doùrše_InæeùÜ +:: + `bËize +($this-> +_ÝtiÚs +['name'])); + +272 +$this +-> +_fž‹rs +[] = +Ãw + + `Doùrše_RecÜd_Fž‹r_Snd¬d +(); + +273 +$this +-> +_»pos™Üy + = +Ãw + + `Doùrše_TabË_R•os™Üy +($this); + +275 +$this +-> + `cÚ¡ruù +(); + +287 +public + +funùiÚ + + $cÚ¡ruù +() + +288 { + } +} + +295 +public + +funùiÚ + + $š™Defš™iÚ +() + +297 +$Çme + = +$this +-> +_ÝtiÚs +['name']; + +298 iàÐ! + `þass_exi¡s +( +$Çme +è|| + `em±y +($name)) { + +299 +throw + +Ãw + + `Doùrše_Exû±iÚ +("Couldn'ˆfšd cÏs " . +$Çme +); + +301 +$»cÜd + = +Ãw + + `$Çme +( +$this +); + +303 +$Çmes + = + `¬¿y +(); + +305 +$þass + = +$Çme +; + +310 ià( +$þass + === 'Doctrine_Record') { + +314 +$Çme + = +$þass +; + +315 +$Çmes +[] = +$Çme +; + +316 }  +$þass + = + `g‘_·»Á_þass +($class)); + +318 ià( +$þass + ==ð +çl£ +) { + +319 +throw + +Ãw + + `Doùrše_TabË_Exû±iÚ +('CÏs "' . +$Çme + . '" must be‡ child class of Doctrine_Record'); + +323 +$Çmes + = + `¬¿y_»v”£ +($names); + +325 + `¬¿y_pÝ +( +$Çmes +); + +326 +$this +-> +_ÝtiÚs +['·»Ás'] = +$Çmes +; + +329 ià( + `m‘hod_exi¡s +( +$»cÜd +, 'setTableDefinition')) { + +330 +$»cÜd +-> + `£tTabËDefš™iÚ +(); + +332 +$m‘hod + = +Ãw + + `ReæeùiÚM‘hod +( +$this +-> +_ÝtiÚs +['name'], 'setTableDefinition'); + +333 +$þass + = +$m‘hod +-> + `g‘Deþ¬šgCÏss +(); + +336 +$þass + = +Ãw + + `ReæeùiÚCÏss +($class); + +339 +$this +-> +_ÝtiÚs +['jošedP¬’ts'] = + `¬¿y +(); + +341 + `fܗch + ( + `¬¿y_»v”£ +( +$this +-> +_ÝtiÚs +['·»Ás']è +as + +$·»Á +) { + +343 ià( +$·»Á + ==ð +$þass +-> + `g‘Name +()) { + +346 +$»f + = +Ãw + + `ReæeùiÚCÏss +( +$·»Á +); + +348 ià( +$»f +-> + `isAb¡¿ù +(è|| ! +$þass +-> + `isSubCÏssOf +( +$·»Á +)) { + +351 +$·»ÁTabË + = +$this +-> +_cÚn +-> + `g‘TabË +( +$·»Á +); + +353 +$found + = +çl£ +; + +354 +$·»ÁCÞumns + = +$·»ÁTabË +-> + `g‘CÞumns +(); + +356 + `fܗch + ( +$·»ÁCÞumns + +as + +$cÞumnName + => +$defš™iÚ +) { + +357 iàÐ! + `is£t +( +$defš™iÚ +['´im¬y']è|| $defš™iÚ['´im¬y'] ==ð +çl£ +) { + +358 ià( + `is£t +( +$this +-> +_cÞumns +[ +$cÞumnName +])) { + +359 +$found + = +Œue +; + +362 iàÐ! + `is£t +( +$·»ÁCÞumns +[ +$cÞumnName +]['owner'])) { + +363 +$·»ÁCÞumns +[ +$cÞumnName +]['owÃr'] = +$·»ÁTabË +-> + `g‘CompڒtName +(); + +366 +$this +-> +_ÝtiÚs +['jošedP¬’ts'][] = +$·»ÁCÞumns +[ +$cÞumnName +]['owner']; + +369 + `un£t +( +$·»ÁCÞumns +[ +$cÞumnName +]); + +373 ià( +$found +) { + +377 + `fܗch + ( +$·»ÁCÞumns + +as + +$cÞumnName + => +$defš™iÚ +) { + +378 +$fuÎName + = +$cÞumnName + . '‡ ' . +$·»ÁTabË +-> + `g‘F›ldName +($columnName); + +379 +$this +-> + `£tCÞumn +( +$fuÎName +, +$defš™iÚ +['ty³'], $defš™iÚ['Ëngth'], $defš™iÚ, +Œue +); + +385 +$this +-> +_ÝtiÚs +['jošedP¬’ts'] = + `¬¿y_v®ues +( + `¬¿y_unique +($this->_options['joinedParents'])); + +387 +$this +-> +_ÝtiÚs +['deþ¬šgCÏss'] = +$þass +; + +390 ià( +$this +-> + `isT»e +()) { + +391 +$this +-> + `g‘T»e +()-> + `£tTabËDefš™iÚ +(); + +394 +$this +-> +cÞumnCouÁ + = + `couÁ +($this-> +_cÞumns +); + +396 iàÐ! + `is£t +( +$this +-> +_ÝtiÚs +['tableName'])) { + +397 +$this +-> + `£tTabËName +( +Doùrše_InæeùÜ +:: + `bËize +( +$þass +-> + `g‘Name +())); + +400  +$»cÜd +; + +401 + } +} + +412 +public + +funùiÚ + + $š™Id’tif›r +() + +414  + `couÁ +( +$this +-> +_id’tif›r +)) { + +416 iàÐ! + `em±y +( +$this +-> +_ÝtiÚs +['joinedParents'])) { + +417 +$roÙ + = + `cu¼’t +( +$this +-> +_ÝtiÚs +['joinedParents']); + +419 +$bË + = +$this +-> +_cÚn +-> + `g‘TabË +( +$roÙ +); + +421 +$this +-> +_id’tif›r + = +$bË +-> + `g‘Id’tif›r +(); + +423 +$this +-> +_id’tif›rTy³ + = ( +$bË +-> + `g‘Id’tif›rTy³ +(è!=ð +Doùrše_CÜe +:: +IDENTIFIER_AUTOINC +) + +424 ? +$bË +-> + `g‘Id’tif›rTy³ +(è: +Doùrše_CÜe +:: +IDENTIFIER_NATURAL +; + +427 + `fܗch + (( +¬¿y +è +$this +-> +_id’tif›r + +as + +$id +) { + +428 +$defš™iÚ + = +$bË +-> + `g‘Defš™iÚOf +( +$id +); + +432 + `un£t +( +$defš™iÚ +['autoincrement']); + +433 + `un£t +( +$defš™iÚ +['sequence']); + +436 +$fuÎName + = +$id + . '‡ ' . +$bË +-> + `g‘F›ldName +($id); + +437 +$this +-> + `£tCÞumn +( +$fuÎName +, +$defš™iÚ +['type'], $definition['length'], + +438 +$defš™iÚ +, +Œue +); + +441 +$id’tif›rO±iÚs + = +$this +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_DEFAULT_IDENTIFIER_OPTIONS +); + +442 +$Çme + = ( + `is£t +( +$id’tif›rO±iÚs +['name']) && $identifierOptions['name']) ? $identifierOptions['name']:'id'; + +443 +$Çme + = + `¥rštf +($Çme, +$this +-> + `g‘TabËName +()); + +445 +$defš™iÚ + = + `¬¿y +('ty³' => ( + `is£t +( +$id’tif›rO±iÚs +['type']) && $identifierOptions['type']) ? $identifierOptions['type']:'integer', + +446 'Ëngth' => ( + `is£t +( +$id’tif›rO±iÚs +['length']) && $identifierOptions['length']) ? $identifierOptions['length']:8, + +447 'autošüem’t' => + `is£t +( +$id’tif›rO±iÚs +['autošüem’t']è? $id’tif›rO±iÚs['autošüem’t']: +Œue +, + +448 '´im¬y' => + `is£t +( +$id’tif›rO±iÚs +['´im¬y']è? $id’tif›rO±iÚs['´im¬y']: +Œue +); + +450 + `un£t +( +$id’tif›rO±iÚs +['name'], $identifierOptions['type'], $identifierOptions['length']); + +451 + `fܗch + ( +$id’tif›rO±iÚs + +as + +$key + => +$v®ue +) { + +452 iàÐ! + `is£t +( +$defš™iÚ +[ +$key +]) || ! $definition[$key]) { + +453 +$defš™iÚ +[ +$key +] = +$v®ue +; + +457 +$this +-> + `£tCÞumn +( +$Çme +, +$defš™iÚ +['ty³'], $defš™iÚ['Ëngth'], $defš™iÚ, +Œue +); + +458 +$this +-> +_id’tif›r + = +$Çme +; + +459 +$this +-> +_id’tif›rTy³ + = +Doùrše_CÜe +:: +IDENTIFIER_AUTOINC +; + +461 +$this +-> +cÞumnCouÁ +++; + +464 + `fܗch + ( +$this +-> +_id’tif›r + +as + +$pk +) { + +465 +$e + = +$this +-> + `g‘Defš™iÚOf +( +$pk +); + +467 +$found + = +çl£ +; + +469 + `fܗch + ( +$e + +as + +$ÝtiÚ + => +$v®ue +) { + +470 ià( +$found +) { + +474 +$e2 + = + `ex¶ode +(':', +$ÝtiÚ +); + +476  + `¡¹Þow” +( +$e2 +[0])) { + +479 ià( +$v®ue + !=ð +çl£ +) { + +480 +$this +-> +_id’tif›rTy³ + = +Doùrše_CÜe +:: +IDENTIFIER_AUTOINC +; + +481 +$found + = +Œue +; + +486 +$this +-> +_id’tif›rTy³ + = +Doùrše_CÜe +:: +IDENTIFIER_SEQUENCE +; + +487 +$found + = +Œue +; + +489 ià( + `is_¡ršg +( +$v®ue +)) { + +490 +$this +-> +_ÝtiÚs +['£qu’ûName'] = +$v®ue +; + +492 ià(( +$£qu’û + = +$this +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_DEFAULT_SEQUENCE +)è!=ð +nuÎ +) { + +493 +$this +-> +_ÝtiÚs +['£qu’ûName'] = +$£qu’û +; + +495 +$this +-> +_ÝtiÚs +['£qu’ûName'] = $this-> +_cÚn +-> +fÜm©‹r +-> + `g‘Sequ’ûName +($this->_options['tableName']); + +501 iàÐ! + `is£t +( +$this +-> +_id’tif›rTy³ +)) { + +502 +$this +-> +_id’tif›rTy³ + = +Doùrše_CÜe +:: +IDENTIFIER_NATURAL +; + +506 +$this +-> +_id’tif›r + = +$pk +; + +510 +$this +-> +_id’tif›rTy³ + = +Doùrše_CÜe +:: +IDENTIFIER_COMPOSITE +; + +512 + } +} + +523 +public + +funùiÚ + + $g‘CÞumnOwÃr +( +$cÞumnName +) + +525 ià( + `is£t +( +$this +-> +_cÞumns +[ +$cÞumnName +]['owner'])) { + +526  +$this +-> +_cÞumns +[ +$cÞumnName +]['owner']; + +528  +$this +-> + `g‘CompڒtName +(); + +530 + } +} + +542 +public + +funùiÚ + + $g‘RecÜdIn¡ªû +() + +544 iàÐ! +$this +-> +»cÜd +) { + +545 +$this +-> +»cÜd + = +Ãw + $this-> +_ÝtiÚs +['name']; + +547  +$this +-> +»cÜd +; + +548 + } +} + +556 +public + +funùiÚ + + $isInh”™edCÞumn +( +$cÞumnName +) + +558  ( + `is£t +( +$this +-> +_cÞumns +[ +$cÞumnName +]['owner'])); + +559 + } +} + +570 +public + +funùiÚ + + $isId’tif›r +( +$f›ldName +) + +572  ( +$f›ldName + ==ð +$this +-> + `g‘Id’tif›r +() || + +573 + `š_¬¿y +( +$f›ldName +, ( +¬¿y +è +$this +-> + `g‘Id’tif›r +())); + +574 + } +} + +585 +public + +funùiÚ + + $isId’tif›rAutošüem’t +() + +587  +$this +-> + `g‘Id’tif›rTy³ +(è==ð +Doùrše_CÜe +:: +IDENTIFIER_AUTOINC +; + +588 + } +} + +596 +public + +funùiÚ + + $isId’tif›rCompos™e +() + +598  +$this +-> + `g‘Id’tif›rTy³ +(è==ð +Doùrše_CÜe +:: +IDENTIFIER_COMPOSITE +; + +599 + } +} + +607 +public + +funùiÚ + + $g‘M‘hodOwÃr +( +$m‘hod +) + +609  ( + `is£t +( +$this +-> +_švokedM‘hods +[ +$m‘hod +])) ? + +610 +$this +-> +_švokedM‘hods +[ +$m‘hod +] : +çl£ +; + +611 + } +} + +619 +public + +funùiÚ + + $£tM‘hodOwÃr +( +$m‘hod +, +$þass +) + +621 +$this +-> +_švokedM‘hods +[ +$m‘hod +] = +$þass +; + +622 + } +} + +635 +public + +funùiÚ + + $expÜt +() + +637 +$this +-> +_cÚn +-> +expÜt +-> + `expÜtTabË +($this); + +638 + } +} + +650 +public + +funùiÚ + + $g‘Exp܏bËFÜm© +( +$·r£FÜeignKeys + = +Œue +) + +652 +$cÞumns + = + `¬¿y +(); + +653 +$´im¬y + = + `¬¿y +(); + +655 + `fܗch + ( +$this +-> + `g‘CÞumns +(è +as + +$Çme + => +$defš™iÚ +) { + +657 ià( + `is£t +( +$defš™iÚ +['owner'])) { + +661  +$defš™iÚ +['type']) { + +663 ià( + `is£t +( +$defš™iÚ +['default'])) { + +664 +$defš™iÚ +['deçuÉ'] = +$this +-> + `g‘CÚÃùiÚ +()-> + `cÚv”tBoޗns +($definition['default']); + +668 +$cÞumns +[ +$Çme +] = +$defš™iÚ +; + +670 ià( + `is£t +( +$defš™iÚ +['primary']) && $definition['primary']) { + +671 +$´im¬y +[] = +$Çme +; + +675 +$ÝtiÚs +['fÜeignKeys'] = + `is£t +( +$this +-> +_ÝtiÚs +['foreignKeys']) ? + +676 +$this +-> +_ÝtiÚs +['fÜeignKeys'] : + `¬¿y +(); + +678 ià( +$·r£FÜeignKeys + && +$this +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_EXPORT +è& Doùrše_CÜe:: +EXPORT_CONSTRAINTS +) { + +680 +$cÚ¡¿šts + = + `¬¿y +(); + +682 +$em±yIÁegr™y + = + `¬¿y +('ÚUpd©e' => +nuÎ +, + +683 'ÚD–‘e' => +nuÎ +); + +685 + `fܗch + ( +$this +-> + `g‘R–©iÚs +(è +as + +$Çme + => +$»ÏtiÚ +) { + +686 +$fk + = +$»ÏtiÚ +-> + `toA¼ay +(); + +687 +$fk +['fÜeignTabË'] = +$»ÏtiÚ +-> + `g‘TabË +()-> + `g‘TabËName +(); + +690 ià( +$»ÏtiÚ +-> + `g‘TabË +()-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_EXPORT +è==ðDoùrše_CÜe:: +EXPORT_NONE +) { + +694 ià( +$»ÏtiÚ +-> + `g‘TabË +(è==ð +$this + && + `š_¬¿y +($»ÏtiÚ-> + `g‘Loÿl +(), +$´im¬y +)) { + +695 ià( +$»ÏtiÚ +-> + `hasCÚ¡¿št +()) { + +696 +throw + +Ãw + + `Doùrše_TabË_Exû±iÚ +("Badly constructed integrity constraints. Cannot define constraint of different fields inhe sameable."); + +701 +$š‹gr™y + = + `¬¿y +('ÚUpd©e' => +$fk +['onUpdate'], + +702 'ÚD–‘e' => +$fk +['onDelete']); + +704 +$fkName + = +$»ÏtiÚ +-> + `g‘FÜeignKeyName +(); + +706 ià( +$»ÏtiÚ + +š¡ªûof + +Doùrše_R–©iÚ_LoÿlKey +) { + +707 +$def + = + `¬¿y +('Çme' => +$fkName +, + +708 'loÿl' => +$»ÏtiÚ +-> + `g‘LoÿlCÞumnName +(), + +709 'fÜeign' => +$»ÏtiÚ +-> + `g‘FÜeignCÞumnName +(), + +710 'fÜeignTabË' => +$»ÏtiÚ +-> + `g‘TabË +()-> + `g‘TabËName +()); + +712 ià( +$š‹gr™y + !=ð +$em±yIÁegr™y +) { + +713 +$def + = + `¬¿y_m”ge +($def, +$š‹gr™y +); + +715 ià(( +$key + = +$this +-> + `_checkFÜeignKeyExi¡s +( +$def +, +$ÝtiÚs +['fÜeignKeys'])è==ð +çl£ +) { + +716 +$ÝtiÚs +['fÜeignKeys'][ +$fkName +] = +$def +; + +718 + `un£t +( +$def +['name']); + +719 +$ÝtiÚs +['fÜeignKeys'][ +$key +] = + `¬¿y_m”ge +($ÝtiÚs['fÜeignKeys'][$key], +$def +); + +725 +$ÝtiÚs +['´im¬y'] = +$´im¬y +; + +727  + `¬¿y +('bËName' => +$this +-> + `g‘O±iÚ +('tableName'), + +728 'cÞumns' => +$cÞumns +, + +729 'ÝtiÚs' => + `¬¿y_m”ge +( +$this +-> + `g‘O±iÚs +(), +$ÝtiÚs +)); + +730 + } +} + +740 +´Ùeùed + +funùiÚ + + $_checkFÜeignKeyExi¡s +( +$def +, +$fÜeignKeys +) + +742 + `fܗch + ( +$fÜeignKeys + +as + +$key + => +$fÜeignKey +) { + +743 ià( +$def +['loÿl'] =ð +$fÜeignKey +['local'] && $def['foreign'] == $foreignKey['foreign'] && $def['foreignTable'] == $foreignKey['foreignTable']) { + +744  +$key +; + +747  +çl£ +; + +748 + } +} + +755 +public + +funùiÚ + + $g‘R–©iÚP¬£r +() + +757  +$this +-> +_·r£r +; + +758 + } +} + +773 +public + +funùiÚ + + $__g‘ +( +$ÝtiÚ +) + +775 ià( + `is£t +( +$this +-> +_ÝtiÚs +[ +$ÝtiÚ +])) { + +776  +$this +-> +_ÝtiÚs +[ +$ÝtiÚ +]; + +778  +nuÎ +; + +779 + } +} + +793 +public + +funùiÚ + + $__is£t +( +$ÝtiÚ +) + +795  + `is£t +( +$this +-> +_ÝtiÚs +[ +$ÝtiÚ +]); + +796 + } +} + +803 +public + +funùiÚ + + $g‘O±iÚs +() + +805  +$this +-> +_ÝtiÚs +; + +806 + } +} + +817 +public + +funùiÚ + + $£tO±iÚs +( +$ÝtiÚs +) + +819 + `fܗch + ( +$ÝtiÚs + +as + +$key + => +$v®ue +) { + +820 +$this +-> + `£tO±iÚ +( +$key +, +$v®ue +); + +822 + } +} + +833 +public + +funùiÚ + + $addFÜeignKey +( +¬¿y + +$defš™iÚ +) + +835 +$this +-> +_ÝtiÚs +['fÜeignKeys'][] = +$defš™iÚ +; + +836 + } +} + +850 +public + +funùiÚ + + $addCheckCÚ¡¿št +( +$defš™iÚ +, +$Çme +) + +852 ià( + `is_¡ršg +( +$Çme +)) { + +853 +$this +-> +_ÝtiÚs +['checks'][ +$Çme +] = +$defš™iÚ +; + +855 +$this +-> +_ÝtiÚs +['checks'][] = +$defš™iÚ +; + +858  +$this +; + +859 + } +} + +871 +public + +funùiÚ + + $addIndex +( +$šdex +, +¬¿y + +$defš™iÚ +) + +873 ià( + `is£t +( +$defš™iÚ +['fields'])) { + +874 + `fܗch + (( +¬¿y +è +$defš™iÚ +['f›lds'] +as + +$key + => +$f›ld +) { + +875 ià( + `is_num”ic +( +$key +)) { + +876 +$defš™iÚ +['f›lds'][ +$key +] = +$this +-> + `g‘CÞumnName +( +$f›ld +); + +878 +$cÞumnName + = +$this +-> + `g‘CÞumnName +( +$key +); + +880 + `un£t +( +$defš™iÚ +['f›lds'][ +$key +]); + +882 +$defš™iÚ +['f›lds'][ +$cÞumnName +] = +$f›ld +; + +887 +$this +-> +_ÝtiÚs +['šdexes'][ +$šdex +] = +$defš™iÚ +; + +888 + } +} + +898 +public + +funùiÚ + + $g‘Index +( +$šdex +) + +900 ià( + `is£t +( +$this +-> +_ÝtiÚs +['šdexes'][ +$šdex +])) { + +901  +$this +-> +_ÝtiÚs +['šdexes'][ +$šdex +]; + +904  +çl£ +; + +905 + } +} + +919 +public + +funùiÚ + +unique +( +$f›lds +, +$ÝtiÚs + = +¬¿y +(), +$ü—‹dUniqueIndex + = +Œue +) + +921 ià( +$ü—‹dUniqueIndex +) { + +922 +$Çme + = +im¶ode +('_', +$f›lds +) . '_unqidx'; + +923 + g$defš™iÚ + = +¬¿y +('ty³' => 'unique', 'f›lds' => +$f›lds +); + +924 + g$this +-> +addIndex +( +$Çme +, +$defš™iÚ +); + +927 + g$this +-> + g_uniques +[] = +¬¿y +( +$f›lds +, +$ÝtiÚs +); + +943 +public + +funùiÚ + + $bšd +( +$¬gs +, +$ty³ +) + +945 +$ÝtiÚs + = ( ! + `is£t +( +$¬gs +[1])è? + `¬¿y +() : $args[1]; + +946 +$ÝtiÚs +['ty³'] = +$ty³ +; + +948 +$this +-> +_·r£r +-> + `bšd +( +$¬gs +[0], +$ÝtiÚs +); + +949 + } +} + +959 +public + +funùiÚ + + $hasOà +() + +961 +$this +-> + `bšd +( + `func_g‘_¬gs +(), +Doùrše_R–©iÚ +:: +ONE +); + +962 + } +} + +972 +public + +funùiÚ + + $hasMªy +() + +974 +$this +-> + `bšd +( + `func_g‘_¬gs +(), +Doùrše_R–©iÚ +:: +MANY +); + +975 + } +} + +988 +public + +funùiÚ + + $hasR–©iÚ +( +$®Ÿs +) + +990  +$this +-> +_·r£r +-> + `hasR–©iÚ +( +$®Ÿs +); + +991 + } +} + +999 +public + +funùiÚ + + $g‘R–©iÚ +( +$®Ÿs +, +$»cursive + = +Œue +) + +1001  +$this +-> +_·r£r +-> + `g‘R–©iÚ +( +$®Ÿs +, +$»cursive +); + +1002 + } +} + +1009 +public + +funùiÚ + + $g‘R–©iÚs +() + +1011  +$this +-> +_·r£r +-> + `g‘R–©iÚs +(); + +1012 + } +} + +1028 +public + +funùiÚ + +ü—‹Qu”y +( +$®Ÿs + = '') + +1030 iàÐ! +em±y +( +$®Ÿs +)) { + +1031 +$®Ÿs + = ' ' . +Œim +($alias); + +1034 + g$þass + = +$this +-> +g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_QUERY_CLASS +); + +1036  + gDoùrše_Qu”y +:: +ü—‹ +( +nuÎ +, +$þass +) + +1037 -> +äom +( +$this +-> +g‘CompڒtName +(è. +$®Ÿs +); + +1045 +public + +funùiÚ + + $g‘R•os™Üy +() + +1047  +$this +-> +_»pos™Üy +; + +1048 + } +} + +1061 +public + +funùiÚ + + $£tO±iÚ +( +$Çme +, +$v®ue +) + +1063  +$Çme +) { + +1071 iàÐ! + `is_¬¿y +( +$v®ue +)) { + +1072 +throw + +Ãw + + `Doùrše_TabË_Exû±iÚ +( +$Çme + . ' should be‡n‡rray.'); + +1076 +$this +-> +_ÝtiÚs +[ +$Çme +] = +$v®ue +; + +1077 + } +} + +1086 +public + +funùiÚ + + $g‘O±iÚ +( +$Çme +) + +1088 ià( + `is£t +( +$this +-> +_ÝtiÚs +[ +$Çme +])) { + +1089  +$this +-> +_ÝtiÚs +[ +$Çme +]; + +1091  +nuÎ +; + +1092 + } +} + +1102 +public + +funùiÚ + + $g‘Ord”ByS‹m’t +( +$®Ÿs + = +nuÎ +, +$cÞumnNames + = +çl£ +) + +1104 ià( + `is£t +( +$this +-> +_ÝtiÚs +['orderBy'])) { + +1105  +$this +-> + `´oûssOrd”By +( +$®Ÿs +, $this-> +_ÝtiÚs +['orderBy']); + +1107 + } +} + +1118 +public + +funùiÚ + + $´oûssOrd”By +( +$®Ÿs +, +$Üd”By +, +$cÞumnNames + = +çl£ +) + +1120 iàÐ! +$®Ÿs +) { + +1121 +$®Ÿs + = +$this +-> + `g‘CompڒtName +(); + +1124 iàÐ! + `is_¬¿y +( +$Üd”By +)) { + +1125 +$e1 + = + `ex¶ode +(',', +$Üd”By +); + +1127 +$e1 + = +$Üd”By +; + +1129 +$e1 + = + `¬¿y_m­ +('trim', $e1); + +1130 + `fܗch + ( +$e1 + +as + +$k + => +$v +) { + +1131 +$e2 + = + `ex¶ode +(' ', +$v +); + +1132 ià( +$cÞumnNames +) { + +1133 +$e2 +[0] = +$this +-> + `g‘CÞumnName +($e2[0]); + +1135 ià( +$this +-> + `hasF›ld +($this-> + `g‘F›ldName +( +$e2 +[0]))) { + +1136 +$e1 +[ +$k +] = +$®Ÿs + . '.' . +$e2 +[0]; + +1138 +$e1 +[ +$k +] = +$e2 +[0]; + +1140 ià( + `is£t +( +$e2 +[1])) { + +1141 +$e1 +[ +$k +] .ð' ' . +$e2 +[1]; + +1145  + `im¶ode +(', ', +$e1 +); + +1146 + } +} + +1157 +public + +funùiÚ + + $g‘CÞumnName +( +$f›ldName +) + +1161 +$f›ldName + = + `is_¬¿y +($fieldName) ? $fieldName[0]:$fieldName; + +1163 ià( + `is£t +( +$this +-> +_cÞumnNames +[ +$f›ldName +])) { + +1164  +$this +-> +_cÞumnNames +[ +$f›ldName +]; + +1167  + `¡¹Þow” +( +$f›ldName +); + +1168 + } +} + +1176 +public + +funùiÚ + + $g‘CÞumnDefš™iÚ +( +$cÞumnName +) + +1178 iàÐ! + `is£t +( +$this +-> +_cÞumns +[ +$cÞumnName +])) { + +1179  +çl£ +; + +1181  +$this +-> +_cÞumns +[ +$cÞumnName +]; + +1182 + } +} + +1192 +public + +funùiÚ + + $g‘F›ldName +( +$cÞumnName +) + +1194 ià( + `is£t +( +$this +-> +_f›ldNames +[ +$cÞumnName +])) { + +1195  +$this +-> +_f›ldNames +[ +$cÞumnName +]; + +1197  +$cÞumnName +; + +1198 + } +} + +1218 +public + +funùiÚ + + $£tCÞumnO±iÚs +( +$cÞumnName +, +¬¿y + +$ÝtiÚs +) + +1220 ià( + `is_¬¿y +( +$cÞumnName +)) { + +1221 + `fܗch + ( +$cÞumnName + +as + +$Çme +) { + +1222 +$this +-> + `£tCÞumnO±iÚs +( +$Çme +, +$ÝtiÚs +); + +1225 + `fܗch + ( +$ÝtiÚs + +as + +$ÝtiÚ + => +$v®ue +) { + +1226 +$this +-> + `£tCÞumnO±iÚ +( +$cÞumnName +, +$ÝtiÚ +, +$v®ue +); + +1229 + } +} + +1239 +public + +funùiÚ + + $£tCÞumnO±iÚ +( +$cÞumnName +, +$ÝtiÚ +, +$v®ue +) + +1241 ià( +$ÝtiÚ + == 'primary') { + +1242 ià( + `is£t +( +$this +-> +_id’tif›r +)) { + +1243 +$this +-> +_id’tif›r + = ( +¬¿y +) $this->_identifier; + +1246 ià( +$v®ue + && ! + `š_¬¿y +( +$cÞumnName +, +$this +-> +_id’tif›r +)) { + +1247 +$this +-> +_id’tif›r +[] = +$cÞumnName +; + +1248 } ià(! +$v®ue + && + `š_¬¿y +( +$cÞumnName +, +$this +-> +_id’tif›r +)) { + +1249 +$key + = + `¬¿y_£¬ch +( +$cÞumnName +, +$this +-> +_id’tif›r +); + +1250 + `un£t +( +$this +-> +_id’tif›r +[ +$key +]); + +1254 +$cÞumnName + = +$this +-> + `g‘CÞumnName +($columnName); + +1255 +$this +-> +_cÞumns +[ +$cÞumnName +][ +$ÝtiÚ +] = +$v®ue +; + +1256 + } +} + +1264 +public + +funùiÚ + + $£tCÞumns +( +¬¿y + +$defš™iÚs +) + +1266 + `fܗch + ( +$defš™iÚs + +as + +$Çme + => +$ÝtiÚs +) { + +1267 +$this +-> + `£tCÞumn +( +$Çme +, +$ÝtiÚs +['type'], $options['length'], $options); + +1269 + } +} + +1286 +public + +funùiÚ + +£tCÞumn +( +$Çme +, +$ty³ + = +nuÎ +, +$Ëngth + =‚uÎ, +$ÝtiÚs + = +¬¿y +(), +$´•’d + = +çl£ +) + +1288 ià( +is_¡ršg +( +$ÝtiÚs +)) { + +1289 +$ÝtiÚs + = +ex¶ode +('|', $options); + +1292 +fܗch + ( +$ÝtiÚs + +as + +$k + => +$ÝtiÚ +) { + +1293 ià( +is_num”ic +( +$k +)) { + +1294 iàÐ! +em±y +( +$ÝtiÚ +)) { + +1295 +$ÝtiÚs +[ +$ÝtiÚ +] = +Œue +; + +1297 +un£t +( +$ÝtiÚs +[ +$k +]); + +1302 ià( +¡ros +( +$Çme +, '‡s ')) + +1304 ià( +¡½os +( +$Çme +, '‡s ')) { + +1305 + g$·¹s + = +ex¶ode +('‡ ', +$Çme +); + +1307 + g$·¹s + = +ex¶ode +(' AS ', +$Çme +); + +1310 ià( +couÁ +( +$·¹s +) > 1) { + +1311 + g$f›ldName + = +$·¹s +[1]; + +1313 + g$f›ldName + = +$·¹s +[0]; + +1316 + g$Çme + = +¡¹Þow” +( +$·¹s +[0]); + +1318 + g$f›ldName + = +$Çme +; + +1319 + g$Çme + = +¡¹Þow” +( +$Çme +); + +1322 + g$Çme + = +Œim +( +$Çme +); + +1323 + g$f›ldName + = +Œim +( +$f›ldName +); + +1325 ià( + g$´•’d +) { + +1326 + g$this +-> + g_cÞumnNames + = +¬¿y_m”ge +( +¬¿y +( +$f›ldName + => +$Çme +), +$this +-> +_cÞumnNames +); + +1327 + g$this +-> + g_f›ldNames + = +¬¿y_m”ge +( +¬¿y +( +$Çme + => +$f›ldName +), +$this +-> +_f›ldNames +); + +1329 + g$this +-> + g_cÞumnNames +[ +$f›ldName +] = +$Çme +; + +1330 + g$this +-> + g_f›ldNames +[ +$Çme +] = +$f›ldName +; + +1333 + g$deçuÉO±iÚs + = +$this +-> +g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_DEFAULT_COLUMN_OPTIONS +); + +1335 ià( +is£t +( +$deçuÉO±iÚs +['Ëngth']è&& + g$deçuÉO±iÚs +['Ëngth'] && + g$Ëngth + =ð +nuÎ +) { + +1336 +$Ëngth + = +$deçuÉO±iÚs +['length']; + +1339 ià( + g$Ëngth + =ð +nuÎ +) { + +1340  +$ty³ +) { + +1342 +$Ëngth + = 8; + +1345 +$Ëngth + = 18; + +1359 +$Ëngth + = +nuÎ +; + +1362 +$Ëngth + = 1; + +1365 +$Ëngth + = 10; + +1368 +$Ëngth + = 14; + +1371 +$Ëngth + = 25; + +1375 + g$ÝtiÚs +['ty³'] = +$ty³ +; + +1376 + g$ÝtiÚs +['Ëngth'] = +$Ëngth +; + +1378 ià( +¡¹Þow” +( +$f›ldName +è!ð +$Çme +) { + +1379 +$ÝtiÚs +['®Ÿs'] = +$f›ldName +; + +1382 +fܗch + ( +$deçuÉO±iÚs + +as + +$key + => +$v®ue +) { + +1383 iàÐ! +¬¿y_key_exi¡s +( +$key +, +$ÝtiÚs +è|| +is_nuÎ +($options[$key])) { + +1384 +$ÝtiÚs +[ +$key +] = +$v®ue +; + +1388 ià( + g$´•’d +) { + +1389 + g$this +-> + g_cÞumns + = +¬¿y_m”ge +( +¬¿y +( +$Çme + => +$ÝtiÚs +), +$this +-> +_cÞumns +); + +1391 + g$this +-> + g_cÞumns +[ +$Çme +] = +$ÝtiÚs +; + +1394 ià( +is£t +( +$ÝtiÚs +['´im¬y']è&& + g$ÝtiÚs +['primary']) { + +1395 ià( +is£t +( +$this +-> +_id’tif›r +)) { + +1396 + g$this +-> + g_id’tif›r + = ( +¬¿y +è +$this +-> +_id’tif›r +; + +1398 iàÐ! +š_¬¿y +( +$f›ldName +, +$this +-> +_id’tif›r +)) { + +1399 + g$this +-> + g_id’tif›r +[] = +$f›ldName +; + +1402 ià( +is£t +( +$ÝtiÚs +['default'])) { + +1403 + g$this +-> + ghasDeçuÉV®ues + = +Œue +; + +1412 +public + +funùiÚ + + $hasDeçuÉV®ues +() + +1414  +$this +-> +hasDeçuÉV®ues +; + +1415 + } +} + +1423 +public + +funùiÚ + + $g‘DeçuÉV®ueOf +( +$f›ldName +) + +1425 +$cÞumnName + = +$this +-> + `g‘CÞumnName +( +$f›ldName +); + +1426 iàÐ! + `is£t +( +$this +-> +_cÞumns +[ +$cÞumnName +])) { + +1427 +throw + +Ãw + + `Doùrše_TabË_Exû±iÚ +("Couldn'ˆg‘ deçuÉ v®ue. CÞumÀ". +$cÞumnName +." doesn'tƒxist."); + +1429 ià( + `is£t +( +$this +-> +_cÞumns +[ +$cÞumnName +]['default'])) { + +1430  +$this +-> +_cÞumns +[ +$cÞumnName +]['default']; + +1432  +nuÎ +; + +1434 + } +} + +1440 +public + +funùiÚ + + $g‘Id’tif›r +() + +1442  +$this +-> +_id’tif›r +; + +1443 + } +} + +1452 +public + +funùiÚ + + $g‘Id’tif›rTy³ +() + +1454  +$this +-> +_id’tif›rTy³ +; + +1455 + } +} + +1462 +public + +funùiÚ + + $hasCÞumn +( +$cÞumnName +) + +1464  + `is£t +( +$this +-> +_cÞumns +[ + `¡¹Þow” +( +$cÞumnName +)]); + +1465 + } +} + +1475 +public + +funùiÚ + + $hasF›ld +( +$f›ldName +) + +1477  + `is£t +( +$this +-> +_cÞumnNames +[ +$f›ldName +]); + +1478 + } +} + +1489 +public + +funùiÚ + + $£tCÚÃùiÚ +( +Doùrše_CÚÃùiÚ + +$cÚn +) + +1491 +$this +-> +_cÚn + = +$cÚn +; + +1493 +$this +-> + `£tP¬’t +($this-> +_cÚn +); + +1495  +$this +; + +1496 + } +} + +1503 +public + +funùiÚ + + $g‘CÚÃùiÚ +() + +1505  +$this +-> +_cÚn +; + +1506 + } +} + +1522 +public + +funùiÚ + +ü—‹ +( +¬¿y + +$¬¿y + = + $¬¿y +()) + +1524 +$»cÜd + = +Ãw + +$this +-> +_ÝtiÚs +['Çme']($this, +Œue +); + +1525 +$»cÜd +-> + `äomA¼ay +( +$¬¿y +); + +1527  +$»cÜd +; + +1528 + } +} + +1539 +public + +funùiÚ + + $addNamedQu”y +( +$qu”yKey +, +$qu”y +) + +1541 +$»gi¡ry + = +Doùrše_Mªag” +:: + `g‘In¡ªû +()-> + `g‘Qu”yRegi¡ry +(); + +1542 +$»gi¡ry +-> + `add +( +$this +-> + `g‘CompڒtName +(è. '/' . +$qu”yKey +, +$qu”y +); + +1543 + } +} + +1554 +public + +funùiÚ + + $ü—‹NamedQu”y +( +$qu”yKey +) + +1556 +$qu”yRegi¡ry + = +Doùrše_Mªag” +:: + `g‘In¡ªû +()-> + `g‘Qu”yRegi¡ry +(); + +1558 ià( + `¡½os +( +$qu”yKey +, '/'è!=ð +çl£ +) { + +1559 +$e + = + `ex¶ode +('/', +$qu”yKey +); + +1561  +$qu”yRegi¡ry +-> + `g‘ +( +$e +[1], $e[0]); + +1564  +$qu”yRegi¡ry +-> + `g‘ +( +$qu”yKey +, +$this +-> + `g‘CompڒtName +()); + +1565 + } +} + +1584 +public + +funùiÚ + + $fšd +() + +1586 +$num_¬gs + = + `func_num_¬gs +(); + +1589 +$Çme + = + `func_g‘_¬g +(0); + +1591 ià( + `is_nuÎ +( +$Çme +)) { + +1592  +çl£ +; + +1595 +$ns + = +$this +-> + `g‘CompڒtName +(); + +1596 +$m + = +$Çme +; + +1599 iàÐ! + `is_¬¿y +( +$Çme +è&& + `¡½os +($Çme, '/'è!=ð +çl£ +) { + +1600 + `li¡ +( +$ns +, +$m +èð + `ex¶ode +('/', +$Çme +); + +1605 ! + `is_¬¿y +( +$Çme +) && + +1606 +Doùrše_Mªag” +:: + `g‘In¡ªû +()-> + `g‘Qu”yRegi¡ry +()-> + `has +( +$m +, +$ns +) + +1609 +$q + = +$this +-> + `ü—‹NamedQu”y +( +$Çme +); + +1612 +$·¿ms + = ( +$num_¬gs + >ð2è? + `func_g‘_¬g +(1è: + `¬¿y +(); + +1615 +$hyd¿tiÚMode + = ( +$num_¬gs + =ð3è? + `func_g‘_¬g +(2è: +nuÎ +; + +1618 +$»s + = +$q +-> + `execu‹ +( +$·¿ms +, +$hyd¿tiÚMode +); + +1621 +$q + = +$this +-> + `ü—‹Qu”y +('dctrn_find') + +1622 -> + `wh”e +('dùº_fšd.' . + `im¶ode +(' = ? AND dùº_fšd.', ( +¬¿y +è +$this +-> + `g‘Id’tif›r +()) . ' = ?') + +1623 -> + `lim™ +(1); + +1626 +$·¿ms + = + `is_¬¿y +( +$Çme +è? + `¬¿y_v®ues +($Çmeè: + `¬¿y +($name); + +1629 +$hyd¿tiÚMode + = ( +$num_¬gs + =ð2è? + `func_g‘_¬g +(1è: +nuÎ +; + +1632 +$»s + = +$q +-> + `ãtchOà +( +$·¿ms +, +$hyd¿tiÚMode +); + +1635 +$q +-> + `ä“ +(); + +1637  +$»s +; + +1638 + } +} + +1646 +public + +funùiÚ + + $fšdAÎ +( +$hyd¿tiÚMode + = +nuÎ +) + +1648  +$this +-> + `ü—‹Qu”y +('dctrn_find') + +1649 -> + `execu‹ +( + `¬¿y +(), +$hyd¿tiÚMode +); + +1650 + } +} + +1663 +public + +funùiÚ + +fšdBySql +( +$dql +, +$·¿ms + = +¬¿y +(), +$hyd¿tiÚMode + = +nuÎ +) + +1665  +$this +-> +ü—‹Qu”y +('dctrn_find') + +1666 -> +wh”e +( +$dql +)-> +execu‹ +( +$·¿ms +, +$hyd¿tiÚMode +); + +1677 +public + +funùiÚ + +fšdByDql +( +$dql +, +$·¿ms + = +¬¿y +(), +$hyd¿tiÚMode + = +nuÎ +) + +1679 +$·r£r + = +$this +-> +ü—‹Qu”y +(); + +1680 + g$qu”y + = 'FROM ' . +$this +-> +g‘CompڒtName +(è. ' dùº_fšd WHERE ' . +$dql +; + +1682  + g$·r£r +-> +qu”y +( +$qu”y +, +$·¿ms +, +$hyd¿tiÚMode +); + +1693 +public + +funùiÚ + + $fšdBy +( +$f›ldName +, +$v®ue +, +$hyd¿tiÚMode + = +nuÎ +) + +1695  +$this +-> + `ü—‹Qu”y +('dctrn_find') + +1696 -> + `wh”e +( +$this +-> + `buždFšdByWh”e +( +$f›ldName +), ( +¬¿y +è +$v®ue +) + +1697 -> + `execu‹ +( + `¬¿y +(), +$hyd¿tiÚMode +); + +1698 + } +} + +1708 +public + +funùiÚ + + $fšdOÃBy +( +$f›ldName +, +$v®ue +, +$hyd¿tiÚMode + = +nuÎ +) + +1710  +$this +-> + `ü—‹Qu”y +('dctrn_find') + +1711 -> + `wh”e +( +$this +-> + `buždFšdByWh”e +( +$f›ldName +), ( +¬¿y +è +$v®ue +) + +1712 -> + `lim™ +(1) + +1713 -> + `ãtchOà +( + `¬¿y +(), +$hyd¿tiÚMode +); + +1714 + } +} + +1728 +public + +funùiÚ + +execu‹ +( +$qu”yKey +, +$·¿ms + = +¬¿y +(), +$hyd¿tiÚMode + = +Doùrše_CÜe +:: +HYDRATE_RECORD +) + +1730  +$this +-> +ü—‹NamedQu”y +( +$qu”yKey +)-> +execu‹ +( +$·¿ms +, +$hyd¿tiÚMode +); + +1745 +public + +funùiÚ + +execu‹Oà +( +$qu”yKey +, +$·¿ms + = +¬¿y +(), +$hyd¿tiÚMode + = +Doùrše_CÜe +:: +HYDRATE_RECORD +) + +1747  +$this +-> +ü—‹NamedQu”y +( +$qu”yKey +)-> +ãtchOà +( +$·¿ms +, +$hyd¿tiÚMode +); + +1758 +public + +funùiÚ + + $þ—r +() + +1760 +$this +-> +_id’t™yM­ + = + `¬¿y +(); + +1761 + } +} + +1773 +public + +funùiÚ + + $addRecÜd +( +Doùrše_RecÜd + +$»cÜd +) + +1775 +$id + = + `im¶ode +(' ', +$»cÜd +-> + `id’tif›r +()); + +1777 ià( + `is£t +( +$this +-> +_id’t™yM­ +[ +$id +])) { + +1778  +çl£ +; + +1781 +$this +-> +_id’t™yM­ +[ +$id +] = +$»cÜd +; + +1783  +Œue +; + +1784 + } +} + +1796 +public + +funùiÚ + + $»moveRecÜd +( +Doùrše_RecÜd + +$»cÜd +) + +1798 +$id + = + `im¶ode +(' ', +$»cÜd +-> + `id’tif›r +()); + +1800 ià( + `is£t +( +$this +-> +_id’t™yM­ +[ +$id +])) { + +1801 + `un£t +( +$this +-> +_id’t™yM­ +[ +$id +]); + +1802  +Œue +; + +1805  +çl£ +; + +1806 + } +} + +1816 +public + +funùiÚ + + $g‘RecÜd +() + +1818 iàÐ! + `em±y +( +$this +-> +_d©a +)) { + +1819 +$id’tif›rF›ldNames + = +$this +-> + `g‘Id’tif›r +(); + +1821 iàÐ! + `is_¬¿y +( +$id’tif›rF›ldNames +)) { + +1822 +$id’tif›rF›ldNames + = + `¬¿y +($identifierFieldNames); + +1825 +$found + = +çl£ +; + +1826 + `fܗch + ( +$id’tif›rF›ldNames + +as + +$f›ldName +) { + +1827 iàÐ! + `is£t +( +$this +-> +_d©a +[ +$f›ldName +])) { + +1829 +$found + = +Œue +; + +1832 +$id +[] = +$this +-> +_d©a +[ +$f›ldName +]; + +1835 ià( +$found +) { + +1836 +$»cÜdName + = +$this +-> + `g‘CompڒtName +(); + +1837 +$»cÜd + = +Ãw + + `$»cÜdName +( +$this +, +Œue +); + +1838 +$this +-> +_d©a + = + `¬¿y +(); + +1839  +$»cÜd +; + +1842 +$id + = + `im¶ode +(' ', $id); + +1844 ià( + `is£t +( +$this +-> +_id’t™yM­ +[ +$id +])) { + +1845 +$»cÜd + = +$this +-> +_id’t™yM­ +[ +$id +]; + +1846 ià( +$»cÜd +-> + `g‘TabË +()-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_HYDRATE_OVERWRITE +)) { + +1847 +$»cÜd +-> + `hyd¿‹ +( +$this +-> +_d©a +); + +1848 ià( +$»cÜd +-> + `¡©e +(è=ð +Doùrše_RecÜd +:: +STATE_PROXY +) { + +1849 ià(! +$»cÜd +-> + `isInProxyS‹ +()) { + +1850 +$»cÜd +-> + `¡©e +( +Doùrše_RecÜd +:: +STATE_CLEAN +); + +1854 +$»cÜd +-> + `hyd¿‹ +( +$this +-> +_d©a +, +çl£ +); + +1857 +$»cÜdName + = +$this +-> + `g‘CompڒtName +(); + +1858 +$»cÜd + = +Ãw + + `$»cÜdName +( +$this +); + +1859 +$this +-> +_id’t™yM­ +[ +$id +] = +$»cÜd +; + +1861 +$this +-> +_d©a + = + `¬¿y +(); + +1863 +$»cÜdName + = +$this +-> + `g‘CompڒtName +(); + +1864 +$»cÜd + = +Ãw + + `$»cÜdName +( +$this +, +Œue +); + +1867  +$»cÜd +; + +1868 + } +} + +1884 +public + +funùiÚ + + $g‘CÏs¢ameToR‘uº +() + +1886 iàÐ! + `is£t +( +$this +-> +_ÝtiÚs +['subclasses'])) { + +1887  +$this +-> +_ÝtiÚs +['name']; + +1889 + `fܗch + ( +$this +-> +_ÝtiÚs +['subþas£s'] +as + +$subþass +) { + +1890 +$bË + = +$this +-> +_cÚn +-> + `g‘TabË +( +$subþass +); + +1891 +$šh”™ªûM­ + = +$bË +-> + `g‘O±iÚ +('inheritanceMap'); + +1892 +$nom©ch + = +çl£ +; + +1893 + `fܗch + ( +$šh”™ªûM­ + +as + +$key + => +$v®ue +) { + +1894 iàÐ! + `is£t +( +$this +-> +_d©a +[ +$key +]è|| $this->_d©a[$key] !ð +$v®ue +) { + +1895 +$nom©ch + = +Œue +; + +1899 iàÐ! +$nom©ch +) { + +1900  +$bË +-> + `g‘CompڒtName +(); + +1903  +$this +-> +_ÝtiÚs +['name']; + +1904 + } +} + +1911 +fš® + +public + +funùiÚ + + $g‘Proxy +( +$id + = +nuÎ +) + +1913 ià( +$id + !=ð +nuÎ +) { + +1914 +$id’tif›rCÞumnNames + = +$this +-> + `g‘Id’tif›rCÞumnNames +(); + +1915 +$qu”y + = 'SELECT ' . + `im¶ode +(', ', ( +¬¿y +è +$id’tif›rCÞumnNames +) + +1916 . ' FROM ' . +$this +-> + `g‘TabËName +() + +1917 . ' WHERE ' . + `im¶ode +(' = ? && ', ( +¬¿y +è +$id’tif›rCÞumnNames +) . ' = ?'; + +1918 +$qu”y + = +$this +-> + `­¶yInh”™ªû +($query); + +1920 +$·¿ms + = + `¬¿y_m”ge +( + `¬¿y +( +$id +), + `¬¿y_v®ues +( +$this +-> +_ÝtiÚs +['inheritanceMap'])); + +1922 +$this +-> +_d©a + = $this-> +_cÚn +-> + `execu‹ +( +$qu”y +, +$·¿ms +)-> + `ãtch +( +PDO +:: +FETCH_ASSOC +); + +1924 ià( +$this +-> +_d©a + ==ð +çl£ +) + +1925  +çl£ +; + +1927  +$this +-> + `g‘RecÜd +(); + +1928 + } +} + +1935 +fš® + +public + +funùiÚ + + $­¶yInh”™ªû +( +$wh”e +) + +1937 iàÐ! + `em±y +( +$this +-> +_ÝtiÚs +['inheritanceMap'])) { + +1938 +$a + = + `¬¿y +(); + +1939 + `fܗch + ( +$this +-> +_ÝtiÚs +['šh”™ªûM­'] +as + +$f›ld + => +$v®ue +) { + +1940 +$a +[] = +$this +-> + `g‘CÞumnName +( +$f›ld +) . ' = ?'; + +1942 +$i + = + `im¶ode +(' AND ', +$a +); + +1943 +$wh”e + .ð' AND ' . +$i +; + +1945  +$wh”e +; + +1946 + } +} + +1953 +public + +funùiÚ + + $couÁ +() + +1955  +$this +-> + `ü—‹Qu”y +()-> + `couÁ +(); + +1956 + } +} + +1961 +public + +funùiÚ + + $g‘Qu”yObjeù +() + +1963 +$g¿ph + = +$this +-> + `ü—‹Qu”y +(); + +1964 +$g¿ph +-> + `lßd +( +$this +-> + `g‘CompڒtName +()); + +1965  +$g¿ph +; + +1966 + } +} + +1974 +public + +funùiÚ + + $g‘EnumV®ues +( +$f›ldName +) + +1976 +$cÞumnName + = +$this +-> + `g‘CÞumnName +( +$f›ldName +); + +1977 ià( + `is£t +( +$this +-> +_cÞumns +[ +$cÞumnName +]['values'])) { + +1978  +$this +-> +_cÞumns +[ +$cÞumnName +]['values']; + +1980  + `¬¿y +(); + +1982 + } +} + +1994 +public + +funùiÚ + + $’umV®ue +( +$f›ldName +, +$šdex +) + +1996 ià( +$šdex + +š¡ªûof + +Doùrše_NuÎ +) { + +1997  +çl£ +; + +2000 ià( +$this +-> +_cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_USE_NATIVE_ENUM +)) { + +2001  +$šdex +; + +2004 +$cÞumnName + = +$this +-> + `g‘CÞumnName +( +$f›ldName +); + +2006  + `is£t +( +$this +-> +_cÞumns +[ +$cÞumnName +]['v®ues'][ +$šdex +]è? $this->_cÞumns[$cÞumnName]['v®ues'][$šdex] : +çl£ +; + +2007 + } +} + +2017 +public + +funùiÚ + + $’umIndex +( +$f›ldName +, +$v®ue +) + +2019 +$v®ues + = +$this +-> + `g‘EnumV®ues +( +$f›ldName +); + +2021 ià( +$this +-> +_cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_USE_NATIVE_ENUM +)) { + +2022  +$v®ue +; + +2024  + `¬¿y_£¬ch +( +$v®ue +, +$v®ues +); + +2025 + } +} + +2036 +public + +funùiÚ + + $v®id©eF›ld +( +$f›ldName +, +$v®ue +, +Doùrše_RecÜd + +$»cÜd + = +nuÎ +) + +2038 ià( +$»cÜd + +š¡ªûof + +Doùrše_RecÜd +) { + +2039 +$”rÜSck + = +$»cÜd +-> + `g‘E¼ÜSck +(); + +2041 +$»cÜd + = +$this +-> + `ü—‹ +(); + +2042 +$”rÜSck + = +Ãw + + `Doùrše_V®id©Ü_E¼ÜSck +( +$this +-> + `g‘O±iÚ +('name')); + +2045 ià( +$v®ue + ==ð +£lf +:: +$_nuÎ +) { + +2046 +$v®ue + = +nuÎ +; + +2047 } ià( +$v®ue + +š¡ªûof + +Doùrše_RecÜd + && $v®ue-> + `exi¡s +()) { + +2048 +$v®ue + = $v®ue-> + `g‘Inüem’‹d +(); + +2049 } ià( +$v®ue + +š¡ªûof + +Doùrše_RecÜd + && ! $v®ue-> + `exi¡s +()) { + +2050 + `fܗch +( +$this +-> + `g‘R–©iÚs +(è +as + +$»ÏtiÚ +) { + +2051 ià( +$f›ldName + =ð +$»ÏtiÚ +-> + `g‘LoÿlF›ldName +(è&& ( + `g‘_þass +( +$v®ue +è=ð$»ÏtiÚ-> + `g‘CÏss +(è|| + `is_subþass_of +($value, $relation->getClass()))) { + +2052  +$”rÜSck +; + +2057 +$d©aTy³ + = +$this +-> + `g‘Ty³Of +( +$f›ldName +); + +2060 ià( +$this +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_VALIDATE +è& Doùrše_CÜe:: +VALIDATE_TYPES +) { + +2061 iàÐ! +Doùrše_V®id©Ü +:: + `isV®idTy³ +( +$v®ue +, +$d©aTy³ +)) { + +2062 +$”rÜSck +-> + `add +( +$f›ldName +, 'type'); + +2064 ià( +$d©aTy³ + == 'enum') { + +2065 +$’umIndex + = +$this +-> + `’umIndex +( +$f›ldName +, +$v®ue +); + +2066 ià( +$’umIndex + ==ð +çl£ + && +$v®ue + !=ð +nuÎ +) { + +2067 +$”rÜSck +-> + `add +( +$f›ldName +, 'enum'); + +2070 ià( +$d©aTy³ + == 'set') { + +2071 +$v®ues + = +$this +-> +_cÞumns +[ +$f›ldName +]['values']; + +2073 ià( + `is_¡ršg +( +$v®ue +)) { + +2074 +$v®ue + = + `ex¶ode +(',', $value); + +2075 +$v®ue + = + `¬¿y_m­ +('trim', $value); + +2076 +$»cÜd +-> + `£t +( +$f›ldName +, +$v®ue +); + +2079 + `fܗch + ( +$v®ue + +as + +$k + => +$v +) { + +2080 iàÐ! + `š_¬¿y +( +$v +, +$v®ues +)) { + +2081 +$”rÜSck +-> + `add +( +$f›ldName +, 'set'); + +2088 ià( +$this +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_VALIDATE +è& Doùrše_CÜe:: +VALIDATE_LENGTHS +) { + +2089 iàÐ! +Doùrše_V®id©Ü +:: + `v®id©eL’gth +( +$v®ue +, +$d©aTy³ +, +$this +-> + `g‘F›ldL’gth +( +$f›ldName +))) { + +2090 +$”rÜSck +-> + `add +( +$f›ldName +, 'length'); + +2095 + `fܗch + ( +$this +-> + `g‘F›ldV®id©Üs +( +$f›ldName +è +as + +$v®id©ÜName + => +$¬gs +) { + +2096 iàÐ! + `is_¡ršg +( +$v®id©ÜName +)) { + +2097 +$v®id©ÜName + = +$¬gs +; + +2098 +$¬gs + = + `¬¿y +(); + +2101 +$v®id©Ü + = +Doùrše_V®id©Ü +:: + `g‘V®id©Ü +( +$v®id©ÜName +); + +2102 +$v®id©Ü +-> +švok” + = +$»cÜd +; + +2103 +$v®id©Ü +-> +f›ld + = +$f›ldName +; + +2104 +$v®id©Ü +-> +¬gs + = +$¬gs +; + +2105 iàÐ! +$v®id©Ü +-> + `v®id©e +( +$v®ue +)) { + +2106 +$”rÜSck +-> + `add +( +$f›ldName +, +$v®id©Ü +); + +2110  +$”rÜSck +; + +2111 + } +} + +2121 +public + +funùiÚ + + $v®id©eUniques +( +Doùrše_RecÜd + +$»cÜd +) + +2123 +$”rÜSck + = +$»cÜd +-> + `g‘E¼ÜSck +(); + +2124 +$v®id©Ü + = +Doùrše_V®id©Ü +:: + `g‘V®id©Ü +('unique'); + +2125 +$v®id©Ü +-> +švok” + = +$»cÜd +; + +2127 + `fܗch + ( +$this +-> +_uniques + +as + +$unique +) + +2129 + `li¡ +( +$f›lds +, +$ÝtiÚs +èð +$unique +; + +2130 +$v®id©Ü +-> +¬gs + = +$ÝtiÚs +; + +2131 +$v®id©Ü +-> +f›ld + = +$f›lds +; + +2132 +$v®ues + = + `¬¿y +(); + +2133 + `fܗch + ( +$f›lds + +as + +$f›ld +) { + +2134 +$v®ues +[] = +$»cÜd +-> +$f›ld +; + +2136 iàÐ! +$v®id©Ü +-> + `v®id©e +( +$v®ues +)) { + +2137 + `fܗch + ( +$f›lds + +as + +$f›ld +) { + +2138 +$”rÜSck +-> + `add +( +$f›ld +, +$v®id©Ü +); + +2142 + } +} + +2147 +public + +funùiÚ + + $g‘CÞumnCouÁ +() + +2149  +$this +-> +cÞumnCouÁ +; + +2150 + } +} + +2158 +public + +funùiÚ + + $g‘CÞumns +() + +2160  +$this +-> +_cÞumns +; + +2161 + } +} + +2170 +public + +funùiÚ + + $»moveCÞumn +( +$f›ldName +) + +2172 iàÐ! +$this +-> + `hasF›ld +( +$f›ldName +)) { + +2173  +çl£ +; + +2176 +$cÞumnName + = +$this +-> + `g‘CÞumnName +( +$f›ldName +); + +2177 + `un£t +( +$this +-> +_cÞumnNames +[ +$f›ldName +], $this-> +_f›ldNames +[ +$cÞumnName +], $this-> +_cÞumns +[$columnName]); + +2178 +$this +-> +cÞumnCouÁ + = + `couÁ +($this-> +_cÞumns +); + +2179  +Œue +; + +2180 + } +} + +2187 +public + +funùiÚ + + $g‘CÞumnNames +( +¬¿y + +$f›ldNames + = +nuÎ +) + +2189 ià( +$f›ldNames + ==ð +nuÎ +) { + +2190  + `¬¿y_keys +( +$this +-> +_cÞumns +); + +2192 +$cÞumnNames + = + `¬¿y +(); + +2193 + `fܗch + ( +$f›ldNames + +as + +$f›ldName +) { + +2194 +$cÞumnNames +[] = +$this +-> + `g‘CÞumnName +( +$f›ldName +); + +2196  +$cÞumnNames +; + +2198 + } +} + +2205 +public + +funùiÚ + + $g‘Id’tif›rCÞumnNames +() + +2207  +$this +-> + `g‘CÞumnNames +(( +¬¿y +è$this-> + `g‘Id’tif›r +()); + +2208 + } +} + +2216 +public + +funùiÚ + + $g‘Uniques +() + +2218  +$this +-> +_uniques +; + +2219 + } +} + +2226 +public + +funùiÚ + + $g‘F›ldNames +() + +2228  + `¬¿y_v®ues +( +$this +-> +_f›ldNames +); + +2229 + } +} + +2240 +public + +funùiÚ + + $g‘Defš™iÚOf +( +$f›ldName +) + +2242 +$cÞumnName + = +$this +-> + `g‘CÞumnName +( +$f›ldName +); + +2243  +$this +-> + `g‘CÞumnDefš™iÚ +( +$cÞumnName +); + +2244 + } +} + +2252 +public + +funùiÚ + + $g‘Ty³Of +( +$f›ldName +) + +2254  +$this +-> + `g‘Ty³OfCÞumn +($this-> + `g‘CÞumnName +( +$f›ldName +)); + +2255 + } +} + +2263 +public + +funùiÚ + + $g‘Ty³OfCÞumn +( +$cÞumnName +) + +2265  + `is£t +( +$this +-> +_cÞumns +[ +$cÞumnName +]è? $this->_cÞumns[$cÞumnName]['ty³'] : +çl£ +; + +2266 + } +} + +2276 +public + +funùiÚ + + $£tD©a +( +¬¿y + +$d©a +) + +2278 +$this +-> +_d©a + = +$d©a +; + +2279 + } +} + +2289 +public + +funùiÚ + + $g‘D©a +() + +2291  +$this +-> +_d©a +; + +2292 + } +} + +2320 +public + +funùiÚ + + $´•¬eV®ue +( +$f›ldName +, +$v®ue +, +$ty³Hšt + = +nuÎ +) + +2322 ià( +$v®ue + ==ð +£lf +:: +$_nuÎ +) { + +2323  +£lf +:: +$_nuÎ +; + +2324 } ià( +$v®ue + ==ð +nuÎ +) { + +2325  +nuÎ +; + +2327 +$ty³ + = + `is_nuÎ +( +$ty³Hšt +è? +$this +-> + `g‘Ty³Of +( +$f›ldName +) : $typeHint; + +2329  +$ty³ +) { + +2336  + `ex¶ode +(',', +$v®ue +); + +2339  ( +boޗn +è +$v®ue +; + +2343 ià( + `is_¡ršg +( +$v®ue +)) { + +2344 +$v®ue + = + `em±y +($v®ueè? +nuÎ +: + `un£rŸlize +($value); + +2346 ià( +$v®ue + ==ð +çl£ +) { + +2347 +throw + +Ãw + + `Doùrše_TabË_Exû±iÚ +('Un£rŸliz©iÚ oà' . +$f›ldName + . ' failed.'); + +2349  +$v®ue +; + +2353 +$v®ue + = + `gzuncom´ess +($value); + +2355 ià( +$v®ue + ==ð +çl£ +) { + +2356 +throw + +Ãw + + `Doùrše_TabË_Exû±iÚ +('Uncom´essšg oà' . +$f›ldName + . ' failed.'); + +2358  +$v®ue +; + +2362  +$v®ue +; + +2363 + } +} + +2372 +public + +funùiÚ + + $g‘T»e +() + +2374 ià( + `is£t +( +$this +-> +_ÝtiÚs +['treeImpl'])) { + +2375 iàÐ! +$this +-> +_Œ“ +) { + +2376 +$ÝtiÚs + = + `is£t +( +$this +-> +_ÝtiÚs +['Œ“O±iÚs']è? $this->_ÝtiÚs['Œ“O±iÚs'] : + `¬¿y +(); + +2377 +$this +-> +_Œ“ + = +Doùrše_T»e +:: + `çùÜy +($this, + +2378 +$this +-> +_ÝtiÚs +['treeImpl'], + +2379 +$ÝtiÚs + + +2382  +$this +-> +_Œ“ +; + +2384  +çl£ +; + +2385 + } +} + +2392 +public + +funùiÚ + + $g‘CompڒtName +() + +2394  +$this +-> +_ÝtiÚs +['name']; + +2395 + } +} + +2402 +public + +funùiÚ + + $g‘TabËName +() + +2404  +$this +-> +_ÝtiÚs +['tableName']; + +2405 + } +} + +2413 +public + +funùiÚ + + $£tTabËName +( +$bËName +) + +2415 +$this +-> + `£tO±iÚ +('bËName', $this-> +_cÚn +-> +fÜm©‹r +-> + `g‘TabËName +( +$bËName +)); + +2416 + } +} + +2423 +public + +funùiÚ + + $isT»e +() + +2425  ( ! + `is_nuÎ +( +$this +-> +_ÝtiÚs +['Œ“Im¶'])è? +Œue + : +çl£ +; + +2426 + } +} + +2433 +public + +funùiÚ + + $g‘Tem¶©es +() + +2435  +$this +-> +_‹m¶©es +; + +2436 + } +} + +2449 +public + +funùiÚ + + $g‘Tem¶©e +( +$‹m¶©e +) + +2451 ià( + `is£t +( +$this +-> +_‹m¶©es +['Doùrše_Tem¶©e_' . +$‹m¶©e +])) { + +2452  +$this +-> +_‹m¶©es +['Doùrše_Tem¶©e_' . +$‹m¶©e +]; + +2453 } ià( + `is£t +( +$this +-> +_‹m¶©es +[ +$‹m¶©e +])) { + +2454  +$this +-> +_‹m¶©es +[ +$‹m¶©e +]; + +2457 +throw + +Ãw + + `Doùrše_TabË_Exû±iÚ +('Tem¶©' . +$‹m¶©e + . '‚ot†oaded'); + +2458 + } +} + +2466 +public + +funùiÚ + + $hasTem¶©e +( +$‹m¶©e +) + +2468  + `is£t +( +$this +-> +_‹m¶©es +[ +$‹m¶©e +]) || isset($this->_templates['Doctrine_Template_' . $template]); + +2469 + } +} + +2478 +public + +funùiÚ + + $addTem¶©e +( +$‹m¶©e +, +Doùrše_Tem¶©e + +$im¶ +) + +2480 +$this +-> +_‹m¶©es +[ +$‹m¶©e +] = +$im¶ +; + +2482  +$this +; + +2483 + } +} + +2490 +public + +funùiÚ + + $g‘G’”©Üs +() + +2492  +$this +-> +_g’”©Üs +; + +2493 + } +} + +2501 +public + +funùiÚ + + $g‘G’”©Ü +( +$g’”©Ü +) + +2503 iàÐ! + `is£t +( +$this +-> +_g’”©Üs +[ +$g’”©Ü +])) { + +2504 +throw + +Ãw + + `Doùrše_TabË_Exû±iÚ +('G’”©Ü ' . +$g’”©Ü + . '‚ot†oaded'); + +2507  +$this +-> +_g’”©Üs +[ +$g’”©Ü +]; + +2508 + } +} + +2516 +public + +funùiÚ + + $hasG’”©Ü +( +$g’”©Ü +) + +2518  + `is£t +( +$this +-> +_g’”©Üs +[ +$g’”©Ü +]); + +2519 + } +} + +2528 +public + +funùiÚ + + $addG’”©Ü +( +Doùrše_RecÜd_G’”©Ü + +$g’”©Ü +, +$Çme + = +nuÎ +) + +2530 ià( +$Çme + ==ð +nuÎ +) { + +2531 +$this +-> +_g’”©Üs +[] = +$g’”©Ü +; + +2533 +$this +-> +_g’”©Üs +[ +$Çme +] = +$g’”©Ü +; + +2535  +$this +; + +2536 + } +} + +2544 +public + +funùiÚ + + $£tG’”©Ü +( +Doùrše_RecÜd_G’”©Ü + +$g’”©Ü +) + +2546 +$this +-> +_g’”©Ü + = +$g’”©Ü +; + +2547 + } +} + +2554 +public + +funùiÚ + + $isG’”©Ü +() + +2556  + `is£t +( +$this +-> +_g’”©Ü +è? +Œue + : +çl£ +; + +2557 + } +} + +2564 +public + +funùiÚ + + $g‘P¬’tG’”©Ü +() + +2566  +$this +-> +_g’”©Ü +; + +2567 + } +} + +2576 +public + +funùiÚ + + $bšdQu”yP¬ts +( +¬¿y + +$qu”yP¬ts +) + +2578 +$this +-> +_ÝtiÚs +['qu”yP¬ts'] = +$qu”yP¬ts +; + +2580  +$this +; + +2581 + } +} + +2593 +public + +funùiÚ + + $bšdQu”yP¬t +( +$qu”yP¬t +, +$v®ue +) + +2595 +$this +-> +_ÝtiÚs +['qu”yP¬ts'][ +$qu”yP¬t +] = +$v®ue +; + +2597  +$this +; + +2598 + } +} + +2606 +public + +funùiÚ + + $g‘F›ldV®id©Üs +( +$f›ldName +) + +2608 +$v®id©Üs + = + `¬¿y +(); + +2609 +$cÞumnName + = +$this +-> + `g‘CÞumnName +( +$f›ldName +); + +2612 + `fܗch + ( +$this +-> +_cÞumns +[ +$cÞumnName +] +as + +$Çme + => +$¬gs +) { + +2613 ià( + `em±y +( +$Çme +) + +2614 || +$Çme + == 'primary' + +2615 || +$Çme + == 'protected' + +2616 || +$Çme + == 'autoincrement' + +2617 || +$Çme + == 'default' + +2618 || +$Çme + == 'values' + +2619 || +$Çme + == 'sequence' + +2620 || +$Çme + == 'zerofill' + +2621 || +$Çme + == 'owner' + +2622 || +$Çme + == 'scale' + +2623 || +$Çme + == 'type' + +2624 || +$Çme + == 'length' + +2625 || +$Çme + == 'fixed' + +2626 || +$Çme + == 'comment' + +2627 || +$Çme + == 'alias' + +2628 || +$Çme + == 'extra') { + +2631 ià( +$Çme + =ð'nÙnuÎ' && + `is£t +( +$this +-> +_cÞumns +[ +$cÞumnName +]['autoincrement']) + +2632 && +$this +-> +_cÞumns +[ +$cÞumnName +]['autošüem’t'] ==ð +Œue +) { + +2636 ià( +$¬gs + ==ð +çl£ +) { + +2639 +$v®id©Üs +[ +$Çme +] = +$¬gs +; + +2642  +$v®id©Üs +; + +2643 + } +} + +2653 +public + +funùiÚ + + $g‘F›ldL’gth +( +$f›ldName +) + +2655  +$this +-> +_cÞumns +[$this-> + `g‘CÞumnName +( +$f›ldName +)]['length']; + +2656 + } +} + +2665 +public + +funùiÚ + + $g‘BoundQu”yP¬t +( +$qu”yP¬t +) + +2667 iàÐ! + `is£t +( +$this +-> +_ÝtiÚs +['qu”yP¬ts'][ +$qu”yP¬t +])) { + +2668  +nuÎ +; + +2671  +$this +-> +_ÝtiÚs +['qu”yP¬ts'][ +$qu”yP¬t +]; + +2672 + } +} + +2680 +public + +funùiÚ + + $unshiáFž‹r +( +Doùrše_RecÜd_Fž‹r + +$fž‹r +) + +2682 +$fž‹r +-> + `£tTabË +( +$this +); + +2684 +$fž‹r +-> + `š™ +(); + +2686 + `¬¿y_unshiá +( +$this +-> +_fž‹rs +, +$fž‹r +); + +2688  +$this +; + +2689 + } +} + +2696 +public + +funùiÚ + + $g‘Fž‹rs +() + +2698  +$this +-> +_fž‹rs +; + +2699 + } +} + +2709 +public + +funùiÚ + + $__toSŒšg +() + +2711  +Doùrše_Lib +:: + `g‘TabËAsSŒšg +( +$this +); + +2712 + } +} + +2720 +´iv©e + +funùiÚ + + $isG»©”Thª +( +$a +, +$b +) + +2722 ià( + `¡¾’ +( +$a +è=𡾒( +$b +))  0; + +2723  ( + `¡¾’ +( +$a +è> sŒËn( +$b +)) ? 1 : -1; + +2724 + } +} + +2726 +public + +funùiÚ + + $buždFšdByWh”e +( +$f›ldName +) + +2729 +$f›lds + = + `¬¿y_m”ge +( +$this +-> + `g‘F›ldNames +(), $this-> + `g‘CÞumnNames +()); + +2730 +$f›lds + = + `¬¿y_m”ge +($f›lds, + `¬¿y_m­ +( + `¬¿y +('Doctrine_Inflector', 'classify'), $fields)); + +2731 +$f›lds + = + `¬¿y_m”ge +($f›lds, + `¬¿y_m­ +('ucfirst', $fields)); + +2735 + `usÜt +( +$f›lds +, + `¬¿y +( +$this +, 'isGreaterThan')); + +2736 +$f›lds + = + `¬¿y_»v”£ +( + `¬¿y_unique +($fields)); + +2739 + `´eg_m©ch_®l +('/(' . + `im¶ode +('|', +$f›lds +è. ')(Or|And)?/', +$f›ldName +, +$m©ches +); + +2740 +$f›ldsFound + = +$m©ches +[1]; + +2741 +$ݔ©ÜFound + = + `¬¿y_m­ +('¡¹ouµ”', +$m©ches +[2]); + +2744 ià( + `¡¾’ +( + `im¶ode +('', +$f›ldsFound +è. im¶ode('', +$ݔ©ÜFound +)è!=𡾒( +$f›ldName +)) { + +2745 +$ex´essiÚ + = + `´eg_»¶aû +('/(' . + `im¶ode +('|', +$f›lds +è. ')(Or|And)?/', '($1)$2', +$f›ldName +); + +2746 +throw + +Ãw + + `Doùrše_TabË_Exû±iÚ +('Inv®idƒx´essiÚ found: ' . +$ex´essiÚ +); + +2750 +$wh”e + = +$Ï¡O³¿tÜ + = ''; + +2751 +$b¿ck‘O³n + = +çl£ +; + +2752 + `fܗch + ( +$f›ldsFound + +as + +$šdex + => +$f›ld +) { + +2753 +$f›ld + = +$this +-> + `_»sÞveFšdByF›ldName +($field); + +2754 ià(! +$f›ld +) { + +2755 +throw + +Ãw + + `Doùrše_TabË_Exû±iÚ +('Inv®id f›ld‚amtØfšd by: ' . +$f›ld +); + +2758 ià( +$ݔ©ÜFound +[ +$šdex +] =ð'OR' && ! +$b¿ck‘O³n +) { + +2759 +$wh”e + .= '('; + +2760 +$b¿ck‘O³n + = +Œue +; + +2763 +$wh”e + .ð'dùº_fšd.' . +$f›ld + . ' = ?'; + +2765 ià( +$ݔ©ÜFound +[ +$šdex +] !ð'OR' && +$Ï¡O³¿tÜ + == 'OR') { + +2766 +$wh”e + .= ')'; + +2767 +$b¿ck‘O³n + = +çl£ +; + +2770 +$wh”e + .ð' ' . + `¡¹ouµ” +( +$ݔ©ÜFound +[ +$šdex +]) . ' '; + +2772 +$Ï¡O³¿tÜ + = +$ݔ©ÜFound +[ +$šdex +]; + +2775  + `Œim +( +$wh”e +); + +2776 + } +} + +2789 +´Ùeùed + +funùiÚ + + $_»sÞveFšdByF›ldName +( +$Çme +) + +2791 +$f›ldName + = +Doùrše_InæeùÜ +:: + `bËize +( +$Çme +); + +2792 ià( +$this +-> + `hasCÞumn +( +$Çme +è|| $this-> + `hasF›ld +($name)) { + +2793  +$this +-> + `g‘F›ldName +($this-> + `g‘CÞumnName +( +$Çme +)); + +2794 } ià( +$this +-> + `hasCÞumn +( +$f›ldName +è|| $this-> + `hasF›ld +($fieldName)) { + +2795  +$this +-> + `g‘F›ldName +($this-> + `g‘CÞumnName +( +$f›ldName +)); + +2797  +çl£ +; + +2799 + } +} + +2810 +public + +funùiÚ + + $__ÿÎ +( +$m‘hod +, +$¬gum’ts +) + +2812 +$lcM‘hod + = + `¡¹Þow” +( +$m‘hod +); + +2814 ià( + `sub¡r +( +$lcM‘hod +, 0, 6) == 'findby') { + +2815 +$by + = + `sub¡r +( +$m‘hod +, 6, + `¡¾’ +($method)); + +2816 +$m‘hod + = 'findBy'; + +2817 } ià( + `sub¡r +( +$lcM‘hod +, 0, 9) == 'findoneby') { + +2818 +$by + = + `sub¡r +( +$m‘hod +, 9, + `¡¾’ +($method)); + +2819 +$m‘hod + = 'findOneBy'; + +2822 ià( + `is£t +( +$by +)) { + +2823 iàÐ! + `is£t +( +$¬gum’ts +[0])) { + +2824 +throw + +Ãw + + `Doùrše_TabË_Exû±iÚ +('You mu¡ s³cifyhv®utØ' . +$m‘hod +); + +2827 +$f›ldName + = +$this +-> + `_»sÞveFšdByF›ldName +( +$by +); + +2828 +$couÁ + = + `couÁ +( + `ex¶ode +('Or', +$by +)) + (count(explode('And', $by)) - 1); + +2829 ià( + `couÁ +( +$¬gum’ts +è> +$couÁ +) + +2831 +$hyd¿tiÚMode + = + `’d +( +$¬gum’ts +); + +2832 + `un£t +( +$¬gum’ts +[ + `couÁ +($arguments) - 1]); + +2834 +$hyd¿tiÚMode + = +nuÎ +; + +2836 ià( +$this +-> + `hasF›ld +( +$f›ldName +)) { + +2837  +$this +-> + `$m‘hod +( +$f›ldName +, +$¬gum’ts +[0], +$hyd¿tiÚMode +); + +2838 } ià( +$this +-> + `hasR–©iÚ +( +$by +)) { + +2839 +$»ÏtiÚ + = +$this +-> + `g‘R–©iÚ +( +$by +); + +2841 ià( +$»ÏtiÚ +['ty³'] ==ð +Doùrše_R–©iÚ +:: +MANY +) { + +2842 +throw + +Ãw + + `Doùrše_TabË_Exû±iÚ +('Cannot findBy many„elationship.'); + +2845  +$this +-> + `$m‘hod +( +$»ÏtiÚ +['loÿl'], +$¬gum’ts +[0], +$hyd¿tiÚMode +); + +2847  +$this +-> + `$m‘hod +( +$by +, +$¬gum’ts +, +$hyd¿tiÚMode +); + +2852 +Œy + { + +2853  + `ÿÎ_u£r_func_¬¿y +( + `¬¿y +( +$this +-> + `g‘RecÜdIn¡ªû +(), +$m‘hod + . 'TabËProxy'), +$¬gum’ts +); + +2854 } + `ÿtch + ( +Doùrše_RecÜd_UnknownPrݔtyExû±iÚ + +$e +) {} + +2856 +throw + +Ãw + + `Doùrše_TabË_Exû±iÚ +( + `¥rštf +('UnknowÀm‘hod %s::%s', + `g‘_þass +( +$this +), +$m‘hod +)); + +2857 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Table/Exception.php + +1 + gbË + = +$bË +; + +64 +public + +funùiÚ + +g‘TabË +() + +66  + g$this +-> + gbË +; + +75 +public + +funùiÚ + +add +( +Doùrše_RecÜd + +$»cÜd +) + +77 + g$oid + = +$»cÜd +-> +g‘OID +(); + +79 ià( +is£t +( +$this +-> +»gi¡ry +[ +$oid +])) { + +80  + gçl£ +; + +82 + g$this +-> + g»gi¡ry +[ +$oid +] = +$»cÜd +; + +84  + gŒue +; + +92 +public + +funùiÚ + +g‘ +( +$oid +) + +94 iàÐ! +is£t +( +$this +-> +»gi¡ry +[ +$oid +])) { + +95 +throw + +Ãw + +Doùrše_TabË_R•os™Üy_Exû±iÚ +("Unknown object identifier"); + +97  + g$this +-> + g»gi¡ry +[ +$oid +]; + +105 +public + +funùiÚ + +couÁ +() + +107  +couÁ +( +$this +-> +»gi¡ry +); + +114 +public + +funùiÚ + +eviù +( +$oid +) + +116 iàÐ! +is£t +( +$this +-> +»gi¡ry +[ +$oid +])) { + +117  + gçl£ +; + +119 +un£t +( +$this +-> +»gi¡ry +[ +$oid +]); + +120  + gŒue +; + +126 +public + +funùiÚ + +eviùAÎ +() + +128 + g$eviùed + = 0; + +129 +fܗch + ( +$this +-> +»gi¡ry + +as + +$oid +=> +$»cÜd +) { + +130 ià( +$this +-> +eviù +( +$oid +)) { + +131 +$eviùed +++; + +134  + g$eviùed +; + +141 +public + +funùiÚ + +g‘I‹¿tÜ +() + +143  +Ãw + +A¼ayI‹¿tÜ +( +$this +-> +»gi¡ry +); + +150 +public + +funùiÚ + +cڏšs +( +$oid +) + +152  +is£t +( +$this +-> +»gi¡ry +[ +$oid +]); + +159 +public + +funùiÚ + +lßdAÎ +() + +161 + g$this +-> + gbË +-> +fšdAÎ +(); + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Table/Repository/Exception.php + +1 +di¥©ch” + = +$di¥©ch” +; + +56 +$skName + = +$this +-> + `g‘TaskName +(); + +59 ià(! + `¡¾’ +( +$skName +)) { + +60 +$skName + = +£lf +:: + `d”iveTaskName +( + `g‘_þass +( +$this +)); + +67 +$this +-> + `£tTaskName +( +$skName +); + +81 +public +  +funùiÚ + + $d”iveTaskName +( +$þassName +) + +83 +$ÇmeP¬ts + = + `ex¶ode +('\\', +$þassName +); + +85 + `fܗch + ( +$ÇmeP¬ts + +as + & +$ÇmeP¬t +) { + +86 +$´efix + = +__CLASS__ + . '_'; + +87 +$ba£Name + = + `¡½os +( +$ÇmeP¬t +, +$´efix +è==ð0 ? + `sub¡r +($ÇmeP¬t, + `¡¾’ +($prefix)) : $namePart; + +88 +$ÇmeP¬t + = + `¡r_»¶aû +('_', '-', +Doùrše_InæeùÜ +:: + `bËize +( +$ba£Name +)); + +91  + `im¶ode +('-', +$ÇmeP¬ts +); + +92 + } +} + +100 +public + +funùiÚ + + $nÙify +( +$nÙifiÿtiÚ + = +nuÎ +) + +102 ià( + `is_objeù +( +$this +-> +di¥©ch” +è&& + `m‘hod_exi¡s +($this->dispatcher, 'notify')) { + +103 +$¬gs + = + `func_g‘_¬gs +(); + +105  + `ÿÎ_u£r_func_¬¿y +( + `¬¿y +( +$this +-> +di¥©ch” +, 'nÙify'), +$¬gs +); + +106 } iàÐ +$nÙifiÿtiÚ + !=ð +nuÎ + ) { + +107  +$nÙifiÿtiÚ +; + +109  +çl£ +; + +111 + } +} + +118 +public + +funùiÚ + + $ask +() + +120 +$¬gs + = + `func_g‘_¬gs +(); + +122 + `ÿÎ_u£r_func_¬¿y +( + `¬¿y +( +$this +, 'nÙify'), +$¬gs +); + +124 +$ªsw” + = + `¡¹Þow” +( + `Œim +( + `fg‘s +( +STDIN +))); + +126  +$ªsw” +; + +127 + } +} + +137 +ab¡¿ù + +funùiÚ + +execu‹ +(); + +146 +public + +funùiÚ + + $v®id©e +() + +148 +$»quœedArgum’ts + = +$this +-> + `g‘RequœedArgum’ts +(); + +150 + `fܗch + ( +$»quœedArgum’ts + +as + +$¬g +) { + +151 iàÐ! + `is£t +( +$this +-> +¬gum’ts +[ +$¬g +])) { + +152  +çl£ +; + +156  +Œue +; + +157 + } +} + +166 +public + +funùiÚ + + $addArgum’t +( +$Çme +, +$v®ue +) + +168 +$this +-> +¬gum’ts +[ +$Çme +] = +$v®ue +; + +169 + } +} + +178 +public + +funùiÚ + + $g‘Argum’t +( +$Çme +, +$deçuÉ + = +nuÎ +) + +180 ià( + `is£t +( +$this +-> +¬gum’ts +[ +$Çme +]è&& $this->¬gum’ts[$Çme] !=ð +nuÎ +) { + +181  +$this +-> +¬gum’ts +[ +$Çme +]; + +183  +$deçuÉ +; + +185 + } +} + +192 +public + +funùiÚ + + $g‘Argum’ts +() + +194  +$this +-> +¬gum’ts +; + +195 + } +} + +203 +public + +funùiÚ + + $£tArgum’ts +( +¬¿y + +$¬gs +) + +205 +$this +-> +¬gum’ts + = +$¬gs +; + +206 + } +} + +214 +´Ùeùed +  +funùiÚ + + $v®id©eTaskName +( +$skName +) + +220  ( +boÞ +è + `´eg_m©ch +('/^[a-z0-9][a-z0-9\-]*$/', +$skName +); + +221 + } +} + +229 +´Ùeùed + +funùiÚ + + $£tTaskName +( +$skName +) + +231 ià(! +£lf +:: + `v®id©eTaskName +( +$skName +)) { + +232 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + +233 + `¥rštf +('Thsk‚am"%s", iÀ%s, i šv®id', +$skName +, + `g‘_þass +( +$this +)) + +237 +$this +-> +skName + = +$skName +; + +238 + } +} + +245 +public + +funùiÚ + + $g‘TaskName +() + +247  +$this +-> +skName +; + +248 + } +} + +255 +public + +funùiÚ + + $g‘DesütiÚ +() + +257  +$this +-> +desütiÚ +; + +258 + } +} + +265 +public + +funùiÚ + + $g‘RequœedArgum’ts +() + +267  + `¬¿y_keys +( +$this +-> +»quœedArgum’ts +); + +268 + } +} + +275 +public + +funùiÚ + + $g‘O±iÚ®Argum’ts +() + +277  + `¬¿y_keys +( +$this +-> +ÝtiÚ®Argum’ts +); + +278 + } +} + +285 +public + +funùiÚ + + $g‘RequœedArgum’tsDesütiÚs +() + +287  +$this +-> +»quœedArgum’ts +; + +288 + } +} + +295 +public + +funùiÚ + + $g‘O±iÚ®Argum’tsDesütiÚs +() + +297  +$this +-> +ÝtiÚ®Argum’ts +; + +298 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/BuildAll.php + +1 +mod–s + = +Ãw + + `Doùrše_Task_G’”©eMod–sYaml +($this-> +di¥©ch” +); + +47 +$this +-> +ü—‹Db + = +Ãw + + `Doùrše_Task_C»©eDb +($this-> +di¥©ch” +); + +48 +$this +-> +bËs + = +Ãw + + `Doùrše_Task_C»©eTabËs +($this-> +di¥©ch” +); + +50 +$this +-> +»quœedArgum’ts + = + `¬¿y_m”ge +($this->»quœedArgum’ts, $this-> +mod–s +->»quœedArgum’ts, $this-> +ü—‹Db +->»quœedArgum’ts, $this-> +bËs +->requiredArguments); + +51 +$this +-> +ÝtiÚ®Argum’ts + = + `¬¿y_m”ge +($this->ÝtiÚ®Argum’ts, $this-> +mod–s +->ÝtiÚ®Argum’ts, $this-> +ü—‹Db +->ÝtiÚ®Argum’ts, $this-> +bËs +->optionalArguments); + +54 +public + +funùiÚ + + $execu‹ +() + +56 +$this +-> +mod–s +-> + `£tArgum’ts +($this-> + `g‘Argum’ts +()); + +57 +$this +-> +mod–s +-> + `execu‹ +(); + +59 +$this +-> +ü—‹Db +-> + `£tArgum’ts +($this-> + `g‘Argum’ts +()); + +60 +$this +-> +ü—‹Db +-> + `execu‹ +(); + +62 +$this +-> +bËs +-> + `£tArgum’ts +($this-> + `g‘Argum’ts +()); + +63 +$this +-> +bËs +-> + `execu‹ +(); + +64 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/BuildAllLoad.php + +1 +buždAÎ + = +Ãw + + `Doùrše_Task_BuždAÎ +($this-> +di¥©ch” +); + +44 +$this +-> +lßdD©a + = +Ãw + + `Doùrše_Task_LßdD©a +($this-> +di¥©ch” +); + +46 +$this +-> +»quœedArgum’ts + = + `¬¿y_m”ge +($this->»quœedArgum’ts, $this-> +buždAÎ +->»quœedArgum’ts, $this-> +lßdD©a +->requiredArguments); + +47 +$this +-> +ÝtiÚ®Argum’ts + = + `¬¿y_m”ge +($this->ÝtiÚ®Argum’ts, $this-> +buždAÎ +->ÝtiÚ®Argum’ts, $this-> +lßdD©a +->optionalArguments); + +50 +public + +funùiÚ + + $execu‹ +() + +52 +$this +-> +buždAÎ +-> + `£tArgum’ts +($this-> + `g‘Argum’ts +()); + +53 +$this +-> +buždAÎ +-> + `execu‹ +(); + +55 +$this +-> +lßdD©a +-> + `£tArgum’ts +($this-> + `g‘Argum’ts +()); + +56 +$this +-> +lßdD©a +-> + `execu‹ +(); + +57 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/BuildAllReload.php + +1 +»buždDb + = +Ãw + + `Doùrše_Task_RebuždDb +($this-> +di¥©ch” +); + +44 +$this +-> +lßdD©a + = +Ãw + + `Doùrše_Task_LßdD©a +($this-> +di¥©ch” +); + +46 +$this +-> +»quœedArgum’ts + = + `¬¿y_m”ge +($this->»quœedArgum’ts, $this-> +»buždDb +->»quœedArgum’ts, $this-> +lßdD©a +->requiredArguments); + +47 +$this +-> +ÝtiÚ®Argum’ts + = + `¬¿y_m”ge +($this->ÝtiÚ®Argum’ts, $this-> +»buždDb +->ÝtiÚ®Argum’ts, $this-> +lßdD©a +->optionalArguments); + +50 +public + +funùiÚ + + $execu‹ +() + +52 +$this +-> +»buždDb +-> + `£tArgum’ts +($this-> + `g‘Argum’ts +()); + +53 +$this +-> +»buždDb +-> + `execu‹ +(); + +55 +$this +-> +lßdD©a +-> + `£tArgum’ts +($this-> + `g‘Argum’ts +()); + +56 +$this +-> +lßdD©a +-> + `execu‹ +(); + +57 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/Compile.php + +1 'Specify†ist of drivers you wisho compile. Ex: mysql|mssql|sqlite', + +40 +public + +funùiÚ + + $execu‹ +() + +42 +$compžedP©h + = +Doùrše_CÜe +:: + `compže +( +$this +-> + `g‘Argum’t +('compžed_·th'), $this->g‘Argum’t('driv”s', + `¬¿y +())); + +44 +$this +-> + `nÙify +('Compžed DoùršsucûssfuÎyo: ' . +$compžedP©h +); + +46 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/CreateDb.php + +1 +$cÚÃùiÚ +) { + +42 +Œy + { + +43 +$cÚÃùiÚ +-> + `ü—‹D©aba£ +(); + +44 +$this +-> + `nÙify +("SucûssfuÎy c»©ed d©aba£ fÜ cÚÃùiڂamed '" . +$Çme + . "'"); + +45 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +46 +$this +-> + `nÙify +( +$e +-> + `g‘Mes§ge +()); + +50 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/CreateTables.php + +1 'Specify…atho your models directory.'), + +37 + m$ÝtiÚ®Argum’ts + = +¬¿y +(); + +39 +public + +funùiÚ + + $execu‹ +() + +41 +Doùrše_CÜe +:: + `ü—‹TabËsFromMod–s +( +$this +-> + `g‘Argum’t +('models_path')); + +43 +$this +-> + `nÙify +('Createdables successfully'); + +45 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/Dql.php + +1 'Specify…atho your Doctrine_Record definitions.', + +38 + m$ÝtiÚ®Argum’ts + = +¬¿y +('params' => 'Comma separated†ist ofhe…aramso„eplacehe ?okens inhe dql'); + +40 +public + +funùiÚ + + $execu‹ +() + +42 +Doùrše_CÜe +:: + `lßdMod–s +( +$this +-> + `g‘Argum’t +('models_path')); + +44 +$dql + = +$this +-> + `g‘Argum’t +('dql_query'); + +46 +$qu”y + = +Doùrše_Qu”y +:: + `ü—‹ +(); + +48 +$·¿ms + = +$this +-> + `g‘Argum’t +('params'); + +49 +$·¿ms + = $·¿m ? + `ex¶ode +(',', $·¿ms): + `¬¿y +(); + +51 +$this +-> + `nÙify +('executšg: "' . +$dql + . '" (' . + `im¶ode +(', ', +$·¿ms +) . ')'); + +53 +$»suÉs + = +$qu”y +-> + `qu”y +( +$dql +, +$·¿ms +, +Doùrše_CÜe +:: +HYDRATE_ARRAY +); + +55 +$this +-> + `_´štResuÉs +( +$»suÉs +); + +58 +´Ùeùed + +funùiÚ + + $_´štResuÉs +( +$¬¿y +) + +60 +$yaml + = +Doùrše_P¬£r +:: + `dump +( +$¬¿y +, 'yml'); + +61 +$lšes + = + `ex¶ode +("\n", +$yaml +); + +63 + `un£t +( +$lšes +[0]); + +65 + `fܗch + ( +$lšes + +as + +$yamlLše +) { + +66 +$lše + = + `Œim +( +$yamlLše +); + +68 ià( +$lše +) { + +69 +$this +-> + `nÙify +( +$yamlLše +); + +72 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/DropDb.php + +1 'Whether or‚oto forcehe drop databaseask'); + +39 +public + +funùiÚ + + $execu‹ +() + +41 iàÐ! +$this +-> + `g‘Argum’t +('force')) { + +42 +$ªsw” + = +$this +-> + `ask +('Are you sure you wisho drop your databases? (y/n)'); + +44 ià( +$ªsw” + != 'y') { + +45 +$this +-> + `nÙify +('Successfully cancelled'); + +51 +$mªag” + = +Doùrše_Mªag” +:: + `g‘In¡ªû +(); + +52 + `fܗch + ( +$mªag” + +as + +$Çme + => +$cÚÃùiÚ +) { + +53 +Œy + { + +54 +$cÚÃùiÚ +-> + `drÝD©aba£ +(); + +55 +$this +-> + `nÙify +("SucûssfuÎy drݳd d©aba£ fÜ cÚÃùiڂamed '" . +$Çme + . "'"); + +56 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +57 +$this +-> + `nÙify +( +$e +-> + `g‘Mes§ge +()); + +61 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/DumpData.php + +1 'Specify…atho writehe yaml data fixtures fileo.', + +38 + m$ÝtiÚ®Argum’ts + = +¬¿y +(); + +40 +public + +funùiÚ + + $execu‹ +() + +42 +$mod–s + = +Doùrše_CÜe +:: + `lßdMod–s +( +$this +-> + `g‘Argum’t +('models_path')); + +44 ià( + `em±y +( +$mod–s +)) { + +45 +throw + +Ãw + + `Doùrše_Task_Exû±iÚ +('No models were†oaded'); + +48 +$·th + = +$this +-> + `g‘Argum’t +('data_fixtures_path'); + +50 ià( + `is_¬¿y +( +$·th +è&& + `couÁ +($path) > 0) { + +51 +$·th + = $path[0]; + +54 iàÐ! + `em±y +( +$·th +)) { + +55 +Doùrše_CÜe +:: + `dumpD©a +( +$·th +); + +57 +$this +-> + `nÙify +( + `¥rštf +('Dum³d d©¨sucûssfuÎyo: %s', +$·th +)); + +59 +throw + +Ãw + + `Doùrše_Task_Exû±iÚ +('Unableo find data fixtures…ath.'); + +62 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/Exception.php + +1 'Name ofhe migration classo generate', + +38 + m$ÝtiÚ®Argum’ts + = +¬¿y +(); + +40 +public + +funùiÚ + + $execu‹ +() + +42 +Doùrše_CÜe +:: + `g’”©eMig¿tiÚCÏss +( +$this +-> + `g‘Argum’t +('class_name'), $this->getArgument('migrations_path')); + +44 +$this +-> + `nÙify +( + `¥rštf +('G’”©ed mig¿tiÚ cÏss: % sucûssfuÎyØ%s', $this-> + `g‘Argum’t +('class_name'), $this->getArgument('migrations_path'))); + +46 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/GenerateMigrationsDb.php + +1 'Specifyhe complete…atho your migration classes folder.'), + +37 + m$ÝtiÚ®Argum’ts + = +¬¿y +(); + +39 +public + +funùiÚ + + $execu‹ +() + +41 +Œy + { + +42 +$mig¿tiÚsP©h + = +$this +-> + `g‘Argum’t +('migrations_path'); + +43 +$yamlSchemaP©h + = +$this +-> + `g‘Argum’t +('yaml_schema_path'); + +44 +$mig¿tiÚ + = +Ãw + + `Doùrše_Mig¿tiÚ +( +$mig¿tiÚsP©h +); + +45 +$»suÉ1 + = +çl£ +; + +46 iàÐ! + `couÁ +( +$mig¿tiÚ +-> + `g‘Mig¿tiÚCÏs£s +())) { + +47 +$»suÉ1 + = +Doùrše_CÜe +:: + `g’”©eMig¿tiÚsFromDb +( +$mig¿tiÚsP©h +); + +49 +$cÚÃùiÚs + = + `¬¿y +(); + +50 + `fܗch + ( +Doùrše_Mªag” +:: + `g‘In¡ªû +(è +as + +$cÚÃùiÚ +) { + +51 +$cÚÃùiÚs +[] = +$cÚÃùiÚ +-> + `g‘Name +(); + +53 +$chªges + = +Doùrše_CÜe +:: + `g’”©eMig¿tiÚsFromDiff +( +$mig¿tiÚsP©h +, +$cÚÃùiÚs +, +$yamlSchemaP©h +); + +54 +$numChªges + = + `couÁ +( +$chªges +, +Œue +) - count($changes); + +55 +$»suÉ + = ( +$»suÉ1 + || +$numChªges +è? +Œue +: +çl£ +; + +56 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +57 +$»suÉ + = +çl£ +; + +59 iàÐ! +$»suÉ +) { + +60 +throw + +Ãw + + `Doùrše_Task_Exû±iÚ +('Could‚ot generate migration classes from database'); + +62 +$this +-> + `nÙify +('Generated migration classes successfully from database'); + +65 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/GenerateMigrationsDiff.php + +1 'Specifyhe…atho your migration classes folder.', + +38 + m$ÝtiÚ®Argum’ts + = +¬¿y +('models_path' => 'Specifyhe…atho your doctrine models folder.'); + +40 +public + +funùiÚ + + $execu‹ +() + +42 +$mig¿tiÚsP©h + = +$this +-> + `g‘Argum’t +('migrations_path'); + +43 +$mod–sP©h + = +$this +-> + `g‘Argum’t +('models_path'); + +44 +$yamlSchemaP©h + = +$this +-> + `g‘Argum’t +('yaml_schema_path'); + +46 +$mig¿tiÚ + = +Ãw + + `Doùrše_Mig¿tiÚ +( +$mig¿tiÚsP©h +); + +47 +$diff + = +Ãw + + `Doùrše_Mig¿tiÚ_Diff +( +$mod–sP©h +, +$yamlSchemaP©h +, +$mig¿tiÚ +); + +48 +$chªges + = +$diff +-> + `g’”©eMig¿tiÚCÏs£s +(); + +50 +$numChªges + = + `couÁ +( +$chªges +, +Œue +) - count($changes); + +52 iàÐ! +$numChªges +) { + +53 +throw + +Ãw + + `Doùrše_Task_Exû±iÚ +('Could‚ot generate migration classes from difference'); + +55 +$this +-> + `nÙify +('Generated migration classes successfully from difference'); + +58 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/GenerateMigrationsModels.php + +1 'Specifyhe…atho your migration classes folder.', + +38 + m$ÝtiÚ®Argum’ts + = +¬¿y +(); + +40 +public + +funùiÚ + + $execu‹ +() + +42 +Doùrše_CÜe +:: + `g’”©eMig¿tiÚsFromMod–s +( +$this +-> + `g‘Argum’t +('migrations_path'), $this->getArgument('models_path')); + +44 +$this +-> + `nÙify +('Generated migration classes successfully from models'); + +46 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/GenerateModelsDb.php + +1 'Specify…atho your Doctrine_Record definitions.'), + +37 + m$ÝtiÚ®Argum’ts + = +¬¿y +('connection' => 'Optionally specify‡ single connectiono generatehe models for.'); + +39 +public + +funùiÚ + + $execu‹ +() + +41 +$cÚfigs + = +$this +-> +di¥©ch” +-> + `g‘CÚfig +(); + +42 +$ÝtiÚs + = + `is£t +( +$cÚfigs +['g’”©e_mod–s_ÝtiÚs']è? $cÚfigs['g’”©e_mod–s_ÝtiÚs'] : + `¬¿y +(); + +43 +Doùrše_CÜe +:: + `g’”©eMod–sFromDb +( +$this +-> + `g‘Argum’t +('mod–s_·th'), ( +¬¿y +è$this->g‘Argum’t('cÚÃùiÚ'), +$ÝtiÚs +); + +45 +$this +-> + `nÙify +('Generated models successfully from databases'); + +47 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/GenerateModelsYaml.php + +1 'Specifyhe complete directory…atho your yaml schema files.', + +38 + m$ÝtiÚ®Argum’ts + = +¬¿y +('generate_models_options' => 'Array of options for generating models'); + +40 +public + +funùiÚ + + $execu‹ +() + +42 +Doùrše_CÜe +:: + `g’”©eMod–sFromYaml +( +$this +-> + `g‘Argum’t +('yaml_schema_·th'), $this->g‘Argum’t('mod–s_·th'), $this->g‘Argum’t('g’”©e_mod–s_ÝtiÚs', + `¬¿y +())); + +44 +$this +-> + `nÙify +('Generated models successfully from YAML schema'); + +46 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/GenerateSql.php + +1 'Specify complete…atho your Doctrine_Record definitions.', + +38 + m$ÝtiÚ®Argum’ts + = +¬¿y +(); + +40 +public + +funùiÚ + + $execu‹ +() + +42 ià( + `is_dœ +( +$this +-> + `g‘Argum’t +('sql_path'))) { + +43 +$·th + = +$this +-> + `g‘Argum’t +('sql_·th'è. +DIRECTORY_SEPARATOR + . 'schema.sql'; + +44 } ià( + `is_fže +( +$this +-> + `g‘Argum’t +('sql_path'))) { + +45 +$·th + = +$this +-> + `g‘Argum’t +('sql_path'); + +47 +throw + +Ãw + + `Doùrše_Task_Exû±iÚ +('Invalid sql…ath.'); + +50 +$sql + = +Doùrše_CÜe +:: + `g’”©eSqlFromMod–s +( +$this +-> + `g‘Argum’t +('models_path')); + +52 + `fže_put_cڋÁs +( +$·th +, +$sql +); + +54 +$this +-> + `nÙify +('Generated SQL successfully for models'); + +56 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/GenerateYamlDb.php + +1 'Specifyhe…atho your yaml schema files.'), + +37 + m$ÝtiÚ®Argum’ts + = +¬¿y +(); + +39 +public + +funùiÚ + + $execu‹ +() + +41 +Doùrše_CÜe +:: + `g’”©eYamlFromDb +( +$this +-> + `g‘Argum’t +('yaml_schema_path')); + +43 +$this +-> + `nÙify +('Generate YAML schema successfully from database'); + +45 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/GenerateYamlModels.php + +1 'Specifyhe complete directory…atho your yaml schema files.'), + +37 + m$ÝtiÚ®Argum’ts + = +¬¿y +('models_path' => 'Specify complete…atho your Doctrine_Record definitions.'); + +39 +public + +funùiÚ + + $execu‹ +() + +41 +Doùrše_CÜe +:: + `g’”©eYamlFromMod–s +( +$this +-> + `g‘Argum’t +('yaml_schema_path'), $this->getArgument('models_path')); + +43 +$this +-> + `nÙify +('Generated YAML schema successfully from models'); + +45 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/LoadData.php + +1 'Specifyhe complete…atho†oadhe yaml data fixtures files from.', + +38 + m$ÝtiÚ®Argum’ts + = +¬¿y +('append' => 'Whether or‚oto‡ppendhe data'); + +40 +public + +funùiÚ + + $execu‹ +() + +42 +Doùrše_CÜe +:: + `lßdMod–s +( +$this +-> + `g‘Argum’t +('models_path')); + +43 +Doùrše_CÜe +:: + `lßdD©a +( +$this +-> + `g‘Argum’t +('d©a_fixtu»s_·th'), $this->g‘Argum’t('­³nd', +çl£ +)); + +45 +$this +-> + `nÙify +('Data was successfully†oaded'); + +47 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/Migrate.php + +1 'Specify…atho your migrations directory.'), + +37 + m$ÝtiÚ®Argum’ts + = +¬¿y +('version' => 'Versiono migrateo. If you do‚ot specify,he db will be migrated fromhe current versionohe†atest.'); + +39 +public + +funùiÚ + + $execu‹ +() + +41 +$v”siÚ + = +Doùrše_CÜe +:: + `mig¿‹ +( +$this +-> + `g‘Argum’t +('migrations_path'), $this->getArgument('version')); + +43 +$this +-> + `nÙify +('mig¿‹d sucûssfuÎyØv”siÚ #' . +$v”siÚ +); + +45 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/RebuildDb.php + +1 +drÝDb + = +Ãw + + `Doùrše_Task_DrÝDb +($this-> +di¥©ch” +); + +44 +$this +-> +ü—‹Db + = +Ãw + + `Doùrše_Task_C»©eDb +($this-> +di¥©ch” +); + +45 +$this +-> +ü—‹TabËs + = +Ãw + + `Doùrše_Task_C»©eTabËs +($this-> +di¥©ch” +); + +47 +$this +-> +»quœedArgum’ts + = + `¬¿y_m”ge +($this->»quœedArgum’ts, $this-> +drÝDb +->»quœedArgum’ts, $this-> +ü—‹Db +->»quœedArgum’ts, $this-> +ü—‹TabËs +->requiredArguments); + +48 +$this +-> +ÝtiÚ®Argum’ts + = + `¬¿y_m”ge +($this->ÝtiÚ®Argum’ts, $this-> +drÝDb +->ÝtiÚ®Argum’ts, $this-> +ü—‹Db +->ÝtiÚ®Argum’ts, $this-> +ü—‹TabËs +->optionalArguments); + +51 +public + +funùiÚ + + $execu‹ +() + +53 +$this +-> +drÝDb +-> + `£tArgum’ts +($this-> + `g‘Argum’ts +()); + +54 +$this +-> +drÝDb +-> + `execu‹ +(); + +56 +$this +-> +ü—‹Db +-> + `£tArgum’ts +($this-> + `g‘Argum’ts +()); + +57 +$this +-> +ü—‹Db +-> + `execu‹ +(); + +59 +$this +-> +ü—‹TabËs +-> + `£tArgum’ts +($this-> + `g‘Argum’ts +()); + +60 +$this +-> +ü—‹TabËs +-> + `execu‹ +(); + +61 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Template.php + +1 +_ÝtiÚs + = +Doùrše_Lib +:: + `¬¿yD“pM”ge +($this->_ÝtiÚs, +$ÝtiÚs +); + +67 +public + +funùiÚ + + $£tTabË +( +Doùrše_TabË + +$bË +) + +69 +$this +-> +_bË + = +$bË +; + +70 + } +} + +77 +public + +funùiÚ + + $g‘TabË +() + +79  +$this +-> +_bË +; + +80 + } +} + +88 +public + +funùiÚ + + $£tInvok” +( +Doùrše_RecÜd_Ab¡¿ù + +$švok” +) + +90 +$this +-> +_švok” + = +$švok” +; + +91 + } +} + +98 +public + +funùiÚ + + $g‘Invok” +() + +100  +$this +-> +_švok” +; + +101 + } +} + +109 +public + +funùiÚ + + $addChžd +( +Doùrše_Tem¶©e + +$‹m¶©e +) + +111 +$this +-> +_¶ugš +-> + `addChžd +( +$‹m¶©e +); + +113  +$this +; + +114 + } +} + +121 +public + +funùiÚ + + $g‘Plugš +() + +123  +$this +-> +_¶ugš +; + +124 + } +} + +131 +public + +funùiÚ + + $hasPlugš +() + +133  + `is£t +( +$this +-> +_¶ugš +è? +Œue + : +çl£ +; + +134 + } +} + +142 +public + +funùiÚ + + $g‘O±iÚs +() + +144  +$this +-> +_ÝtiÚs +; + +145 + } +} + +155 +public + +funùiÚ + + $g‘O±iÚ +( +$Çme +, +$deçuÉ + = +nuÎ +) + +157 ià( + `is£t +( +$this +-> +_ÝtiÚs +[ +$Çme +])) { + +158  +$this +-> +_ÝtiÚs +[ +$Çme +]; + +160  +$deçuÉ +; + +161 + } +} + +169 +public + +funùiÚ + + $g‘ +( +$Çme +) + +171 +throw + +Ãw + + `Doùrše_Exû±iÚ +("Templates doesn't support‡ccessors."); + +172 + } +} + +181 +public + +funùiÚ + + $£t +( +$Çme +, +$v®ue +) + +183 +throw + +Ãw + + `Doùrše_Exû±iÚ +("Templates doesn't support‡ccessors."); + +184 + } +} + +191 +public + +funùiÚ + + $£tUp +() + +194 + } +} + +201 +public + +funùiÚ + + $£tTabËDefš™iÚ +() + +204 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Template/Geographical.php + +1 ‡rray('name' => 'latitude', + +44 'size' => +nuÎ +, + +45 'ÝtiÚs' => +¬¿y +()), + +46 'lÚg™ude' => +¬¿y +('name' => 'longitude', + +48 'size' => +nuÎ +, + +49 'ÝtiÚs' => +¬¿y +())); + +56 +public + +funùiÚ + + $£tTabËDefš™iÚ +() + +58 +$this +-> + `hasCÞumn +($this-> +_ÝtiÚs +['latitude']['name'], $this->_options['latitude']['type'], $this->_options['latitude']['size'], $this->_options['latitude']['options']); + +59 +$this +-> + `hasCÞumn +($this-> +_ÝtiÚs +['longitude']['name'], $this->_options['longitude']['type'], $this->_options['longitude']['size'], $this->_options['longitude']['options']); + +68 +public + +funùiÚ + + $g‘Di¡ªûQu”y +() + +70 +$švok” + = +$this +-> + `g‘Invok” +(); + +71 +$qu”y + = +$švok” +-> + `g‘TabË +()-> + `ü—‹Qu”y +(); + +73 +$roÙAlŸs + = +$qu”y +-> + `g‘RoÙAlŸs +(); + +74 +$ÏtName + = +$this +-> +_ÝtiÚs +['latitude']['name']; + +75 +$lÚgName + = +$this +-> +_ÝtiÚs +['longitude']['name']; + +77 +$qu”y +-> + `addS–eù +( +$roÙAlŸs + . '.*'); + +79 +$sql + = "((ACOS(SIN(% * PI(è/ 180è* SIN(" . +$roÙAlŸs + . "." . +$ÏtName + . " * PI(è/ 180è+ COS(% * PI(è/ 180è* COS(" . $roÙAlŸ . "." . $ÏtNam. " * PI(è/ 180è* COS((% - " . $roÙAlŸ . "." . +$lÚgName + . ") * PI() / 180)) * 180 / PI()) * 60 * %s)‡s %s"; + +81 +$mžesSql + = + `¥rštf +( +$sql +, +$švok” +-> + `g‘ +( +$ÏtName +), $švok”->g‘($ÏtName), $švok”->g‘( +$lÚgName +), '1.1515', 'miles'); + +82 +$qu”y +-> + `addS–eù +( +$mžesSql +); + +84 +$kžom‘”sSql + = + `¥rštf +( +$sql +, +$švok” +-> + `g‘ +( +$ÏtName +), $švok”->g‘($ÏtName), $švok”->g‘( +$lÚgName +), '1.1515 * 1.609344', 'kilometers'); + +85 +$qu”y +-> + `addS–eù +( +$kžom‘”sSql +); + +87  +$qu”y +; + +88 + } +} + +97 +public + +funùiÚ + + $g‘Di¡ªû +( +Doùrše_RecÜd + +$»cÜd +, +$kžom‘”s + = +çl£ +) + +99 +$qu”y + = +$this +-> + `g‘Di¡ªûQu”y +( +$kžom‘”s +); + +101 +$cÚd™iÚs + = + `¬¿y +(); + +102 +$v®ues + = + `¬¿y +(); + +103 + `fܗch + (( +¬¿y +è +$»cÜd +-> + `g‘TabË +()-> + `g‘Id’tif›r +(è +as + +$id +) { + +104 +$cÚd™iÚs +[] = +$qu”y +-> + `g‘RoÙAlŸs +(è. '.' . +$id + . ' = ?'; + +105 +$v®ues +[] = +$»cÜd +-> + `g‘ +( +$id +); + +108 +$wh”e + = + `im¶ode +(' AND ', +$cÚd™iÚs +); + +110 +$qu”y +-> + `addWh”e +( +$wh”e +, +$v®ues +); + +112 +$qu”y +-> + `lim™ +(1); + +114 +$»suÉ + = +$qu”y +-> + `execu‹ +()-> + `g‘Fœ¡ +(); + +116 ià( + `is£t +( +$»suÉ +['kilometers']) && $result['miles']) { + +117  +$kžom‘”s + ? +$»suÉ +-> + `g‘ +('kilometers'):$result->get('miles'); + +121 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Template/I18n.php + +1 +_¶ugš + = +Ãw + + `Doùrše_I18n +($this-> +_ÝtiÚs +); + +52 +public + +funùiÚ + + $£tUp +() + +54 +$this +-> +_¶ugš +-> + `š™Ÿlize +($this-> +_bË +); + +55 + } +} + +62 +public + +funùiÚ + + $g‘I18n +() + +64  +$this +-> +_¶ugš +; + +65 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Template/Listener/Sluggable.php + +1 +_ÝtiÚs + = +$ÝtiÚs +; + +59 +public + +funùiÚ + + $´eIn£¹ +( +Doùrše_Ev’t + +$ev’t +) + +61 +$»cÜd + = +$ev’t +-> + `g‘Invok” +(); + +62 +$Çme + = +$»cÜd +-> + `g‘TabË +()-> + `g‘F›ldName +( +$this +-> +_ÝtiÚs +['name']); + +64 iàÐ! +$»cÜd +-> +$Çme +) { + +65 +$»cÜd +-> +$Çme + = +$this +-> + `buždSlugFromF›lds +($record); + +67 + } +} + +76 +public + +funùiÚ + + $´eUpd©e +( +Doùrše_Ev’t + +$ev’t +) + +78 ià( +çl£ + !=ð +$this +-> +_ÝtiÚs +['unique']) { + +79 +$»cÜd + = +$ev’t +-> + `g‘Invok” +(); + +80 +$Çme + = +$»cÜd +-> + `g‘TabË +()-> + `g‘F›ldName +( +$this +-> +_ÝtiÚs +['name']); + +82 iàÐ! +$»cÜd +-> +$Çme + || ( + +83 +çl£ + !=ð +$this +-> +_ÝtiÚs +['canUpdate'] && + +84 ! + `¬¿y_key_exi¡s +( +$Çme +, +$»cÜd +-> + `g‘Modif›d +()) + +86 +$»cÜd +-> +$Çme + = +$this +-> + `buždSlugFromF›lds +($record); + +87 } iàÐ! + `em±y +( +$»cÜd +-> +$Çme +) && + +88 +çl£ + !=ð +$this +-> +_ÝtiÚs +['canUpdate'] && + +89 + `¬¿y_key_exi¡s +( +$Çme +, +$»cÜd +-> + `g‘Modif›d +() + +91 +$»cÜd +-> +$Çme + = +$this +-> + `buždSlugFromSlugF›ld +($record); + +94 + } +} + +102 +´Ùeùed + +funùiÚ + + $buždSlugFromF›lds +( +$»cÜd +) + +104 ià( + `em±y +( +$this +-> +_ÝtiÚs +['fields'])) { + +105 ià( + `is_ÿÎabË +( +$this +-> +_ÝtiÚs +['provider'])) { + +106 +$v®ue + = + `ÿÎ_u£r_func +( +$this +-> +_ÝtiÚs +['´ovid”'], +$»cÜd +); + +107 } ià( + `m‘hod_exi¡s +( +$»cÜd +, 'getUniqueSlug')) { + +108 +$v®ue + = +$»cÜd +-> + `g‘UniqueSlug +($record); + +110 +$v®ue + = ( +¡ršg +è +$»cÜd +; + +113 +$v®ue + = ''; + +114 + `fܗch + ( +$this +-> +_ÝtiÚs +['f›lds'] +as + +$f›ld +) { + +115 +$v®ue + .ð +$»cÜd +-> +$f›ld + . ' '; + +117 +$v®ue + = + `sub¡r +($value, 0, -1); + +120 ià( +$this +-> +_ÝtiÚs +['unique'] ==ð +Œue +) { + +121  +$this +-> + `g‘UniqueSlug +( +$»cÜd +, +$v®ue +); + +124  + `ÿÎ_u£r_func_¬¿y +( +$this +-> +_ÝtiÚs +['bužd”'], + `¬¿y +( +$v®ue +, +$»cÜd +)); + +125 + } +} + +133 +´Ùeùed + +funùiÚ + + $buždSlugFromSlugF›ld +( +$»cÜd +) + +135 +$Çme + = +$»cÜd +-> + `g‘TabË +()-> + `g‘F›ldName +( +$this +-> +_ÝtiÚs +['name']); + +136 +$v®ue + = +$»cÜd +-> +$Çme +; + +138 ià( +$this +-> +_ÝtiÚs +['unique'] ==ð +Œue +) { + +139  +$this +-> + `g‘UniqueSlug +( +$»cÜd +, +$v®ue +); + +142  + `ÿÎ_u£r_func_¬¿y +( +$this +-> +_ÝtiÚs +['bužd”'], + `¬¿y +( +$v®ue +, +$»cÜd +)); + +143 + } +} + +153 +public + +funùiÚ + + $g‘UniqueSlug +( +$»cÜd +, +$¦ugFromF›lds +) + +156 ià( +$»cÜd +-> + `g‘TabË +()-> + `g‘O±iÚ +('inheritanceMap')) { + +157 +$·»ÁTabË + = +$»cÜd +-> + `g‘TabË +()-> + `g‘O±iÚ +('parents'); + +158 +$i + = 0; + +160 +$»æeùiÚCÏss + = +Ãw + + `ReæeùiÚCÏss +( +$·»ÁTabË +[ +$i +]); + +161  +$»æeùiÚCÏss +-> + `isAb¡¿ù +()) { + +162 +$i +++; + +163 +$»æeùiÚCÏss + = +Ãw + + `ReæeùiÚCÏss +( +$·»ÁTabË +[ +$i +]); + +165 +$bË + = +Doùrše_CÜe +:: + `g‘TabË +( +$·»ÁTabË +[ +$i +]); + +167 +$bË + = +$»cÜd +-> + `g‘TabË +(); + +170 +$Çme + = +$bË +-> + `g‘F›ldName +( +$this +-> +_ÝtiÚs +['name']); + +171 +$´Ýo§l + = + `ÿÎ_u£r_func_¬¿y +( +$this +-> +_ÝtiÚs +['bužd”'], + `¬¿y +( +$¦ugFromF›lds +, +$»cÜd +)); + +172 +$¦ug + = +$´Ýo§l +; + +174 +$wh”eSŒšg + = 'r.' . +$Çme + . ' LIKE ?'; + +175 +$wh”eP¬ams + = + `¬¿y +( +$´Ýo§l +.'%'); + +177 ià( +$»cÜd +-> + `exi¡s +()) { + +178 +$id’tif›r + = +$»cÜd +-> + `id’tif›r +(); + +179 +$wh”eSŒšg + .ð' AND„.' . + `im¶ode +(' !ð? AND„.', +$bË +-> + `g‘Id’tif›rCÞumnNames +()) . ' != ?'; + +180 +$wh”eP¬ams + = + `¬¿y_m”ge +($wh”eP¬ams, + `¬¿y_v®ues +( +$id’tif›r +)); + +183 + `fܗch + ( +$this +-> +_ÝtiÚs +['uniqueBy'] +as + +$uniqueBy +) { + +184 ià( + `is_nuÎ +( +$»cÜd +-> +$uniqueBy +)) { + +185 +$wh”eSŒšg + .ð' AND„.'. +$uniqueBy +.' IS NULL'; + +187 +$wh”eSŒšg + .ð' AND„.'. +$uniqueBy +.' = ?'; + +188 +$v®ue + = +$»cÜd +-> +$uniqueBy +; + +189 ià( +$v®ue + +š¡ªûof + +Doùrše_RecÜd +) { + +190 +$v®ue + = + `cu¼’t +(( +¬¿y +è$v®ue-> + `id’tif›r +()); + +192 +$wh”eP¬ams +[] = +$v®ue +; + +197 +$Üigš®IndexBy + = +$bË +-> + `g‘BoundQu”yP¬t +('indexBy'); + +198 +$bË +-> + `bšdQu”yP¬t +('šdexBy', +nuÎ +); + +200 +$qu”y + = +$bË +-> + `ü—‹Qu”y +('r') + +201 -> + `£Ëù +('r.' . +$Çme +) + +202 -> + `wh”e +( +$wh”eSŒšg + , +$wh”eP¬ams +) + +203 -> + `£tHyd¿tiÚMode +( +Doùrše_CÜe +:: +HYDRATE_ARRAY +); + +206 ià( +$bË +-> + `hasTem¶©e +('Doctrine_Template_SoftDelete')) { + +207 +$soáD–‘e + = +$bË +-> + `g‘Tem¶©e +('Doctrine_Template_SoftDelete'); + +210 ià( +$soáD–‘e +-> + `g‘O±iÚ +('type') == 'boolean') { + +211 +$cÚn + = +$qu”y +-> + `g‘CÚÃùiÚ +(); + +213 +$qu”y +-> + `addWh”e +( + +214 'Ô.' . +$soáD–‘e +-> + `g‘O±iÚ +('Çme'è. ' = ' . +$cÚn +-> + `cÚv”tBoޗns +( +Œue +) . + +215 ' OR„.' . +$soáD–‘e +-> + `g‘O±iÚ +('Çme'è. ' = ' . +$cÚn +-> + `cÚv”tBoޗns +( +çl£ +) . ')' + +218 +$qu”y +-> + `addWh”e +('Ô.' . +$soáD–‘e +-> + `g‘O±iÚ +('name') . ' IS NOT NULL OR„.' . $softDelete->getOption('name') . ' IS NULL)'); + +222 +$simž¬SlugResuÉ + = +$qu”y +-> + `execu‹ +(); + +223 +$qu”y +-> + `ä“ +(); + +226 +$bË +-> + `bšdQu”yP¬t +('šdexBy', +$Üigš®IndexBy +); + +228 +$simž¬Slugs + = + `¬¿y +(); + +229 + `fܗch + ( +$simž¬SlugResuÉ + +as + +$key + => +$v®ue +) { + +230 +$simž¬Slugs +[ +$key +] = + `¡¹Þow” +( +$v®ue +[ +$Çme +]); + +233 +$i + = 1; + +234  + `š_¬¿y +( + `¡¹Þow” +( +$¦ug +), +$simž¬Slugs +)) { + +235 +$¦ug + = + `ÿÎ_u£r_func_¬¿y +( +$this +-> +_ÝtiÚs +['bužd”'], + `¬¿y +( +$´Ýo§l +.'-'. +$i +, +$»cÜd +)); + +236 +$i +++; + +241 +$Ëngth + = +$bË +-> + `g‘F›ldL’gth +( +$this +-> +_ÝtiÚs +['name']); + +242 ià( + `¡¾’ +( +$¦ug +è> +$Ëngth +) { + +243 +$¦ug + = + `sub¡r +($¦ug, 0, +$Ëngth + - ( + `¡¾’ +( +$i +) + 1)); + +244 +$¦ug + = +$this +-> + `g‘UniqueSlug +( +$»cÜd +, $slug); + +247  +$¦ug +; + +248 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Template/Listener/SoftDelete.php + +1 +_ÝtiÚs + = +$ÝtiÚs +; + +62 +public + +funùiÚ + + $h¬dD–‘e +( +$boÞ +) + +64 +$this +-> +_ÝtiÚs +['h¬dD–‘e'] = +$boÞ +; + +65 + } +} + +73 +public + +funùiÚ + + $´eD–‘e +( +Doùrše_Ev’t + +$ev’t +) + +75 +$Çme + = +$this +-> +_ÝtiÚs +['name']; + +76 +$švok” + = +$ev’t +-> + `g‘Invok” +(); + +78 ià( +$this +-> +_ÝtiÚs +['type'] == 'timestamp') { + +79 +$švok” +-> +$Çme + = + `d©e +('Y-m-d H:i:s', + `time +()); + +80 } ià( +$this +-> +_ÝtiÚs +['type'] == 'boolean') { + +81 +$švok” +-> +$Çme + = +Œue +; + +84 iàÐ! +$this +-> +_ÝtiÚs +['hardDelete']) { + +85 +$ev’t +-> + `skO³¿tiÚ +(); + +87 + } +} + +95 +public + +funùiÚ + + $po¡D–‘e +( +Doùrše_Ev’t + +$ev’t +) + +97 iàÐ! +$this +-> +_ÝtiÚs +['hardDelete']) { + +98 +$ev’t +-> + `g‘Invok” +()-> + `§ve +(); + +100 + } +} + +109 +public + +funùiÚ + + $´eDqlD–‘e +( +Doùrše_Ev’t + +$ev’t +) + +111 +$·¿ms + = +$ev’t +-> + `g‘P¬ams +(); + +112 +$f›ld + = +$·¿ms +['®Ÿs'] . '.' . +$this +-> +_ÝtiÚs +['name']; + +113 +$qu”y + = +$ev’t +-> + `g‘Qu”y +(); + +114 iàÐ! +$qu”y +-> + `cڏšs +( +$f›ld +)) { + +115 +$qu”y +-> + `äom +('')-> + `upd©e +( +$·¿ms +['compڒt']['bË']-> + `g‘O±iÚ +('name') . ' ' . $params['alias']); + +117 ià( +$this +-> +_ÝtiÚs +['type'] == 'timestamp') { + +118 +$qu”y +-> + `£t +( +$f›ld +, '?', + `d©e +('Y-m-d H:i:s', + `time +())); + +119 +$qu”y +-> + `addWh”e +( +$f›ld + . ' IS NULL'); + +120 } ià( +$this +-> +_ÝtiÚs +['type'] == 'boolean') { + +121 +$qu”y +-> + `£t +( +$f›ld +, $qu”y-> + `g‘CÚÃùiÚ +()-> + `cÚv”tBoޗns +( +Œue +)); + +122 +$qu”y +-> + `addWh”e +( + +123 +$f›ld + . ' = ' . +$qu”y +-> + `g‘CÚÃùiÚ +()-> + `cÚv”tBoޗns +( +çl£ +) + +127 + } +} + +136 +public + +funùiÚ + + $´eDqlS–eù +( +Doùrše_Ev’t + +$ev’t +) + +138 +$·¿ms + = +$ev’t +-> + `g‘P¬ams +(); + +139 +$f›ld + = +$·¿ms +['®Ÿs'] . '.' . +$this +-> +_ÝtiÚs +['name']; + +140 +$qu”y + = +$ev’t +-> + `g‘Qu”y +(); + +145 ià(Ð! +$qu”y +-> + `isSubqu”y +(è|| ($qu”y->isSubqu”y(è&& $qu”y-> + `cڏšs +(' ' . +$·¿ms +['®Ÿs'] . ' '))è&& ! $qu”y->cڏšs( +$f›ld +)) { + +146 ià( +$this +-> +_ÝtiÚs +['type'] == 'timestamp') { + +147 +$qu”y +-> + `addP’dšgJošCÚd™iÚ +( +$·¿ms +['®Ÿs'], +$f›ld + . ' IS NULL'); + +148 } ià( +$this +-> +_ÝtiÚs +['type'] == 'boolean') { + +149 +$qu”y +-> + `addP’dšgJošCÚd™iÚ +( + +150 +$·¿ms +['®Ÿs'], +$f›ld + . ' = ' . +$qu”y +-> + `g‘CÚÃùiÚ +()-> + `cÚv”tBoޗns +( +çl£ +) + +154 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Template/Listener/Timestampable.php + +1 +_ÝtiÚs + = +$ÝtiÚs +; + +60 +public + +funùiÚ + + $´eIn£¹ +( +Doùrše_Ev’t + +$ev’t +) + +62 iàÐ! +$this +-> +_ÝtiÚs +['created']['disabled']) { + +63 +$ü—‹dName + = +$ev’t +-> + `g‘Invok” +()-> + `g‘TabË +()-> + `g‘F›ldName +( +$this +-> +_ÝtiÚs +['created']['name']); + +64 +$modif›d + = +$ev’t +-> + `g‘Invok” +()-> + `g‘Modif›d +(); + +65 iàÐ! + `is£t +( +$modif›d +[ +$ü—‹dName +])) { + +66 +$ev’t +-> + `g‘Invok” +()-> +$ü—‹dName + = +$this +-> + `g‘Time¡amp +('ü—‹d', $ev’t->g‘Invok”()-> + `g‘TabË +()-> + `g‘CÚÃùiÚ +()); + +70 iàÐ! +$this +-> +_ÝtiÚs +['updated']['disabled'] && $this->_options['updated']['onInsert']) { + +71 +$upd©edName + = +$ev’t +-> + `g‘Invok” +()-> + `g‘TabË +()-> + `g‘F›ldName +( +$this +-> +_ÝtiÚs +['updated']['name']); + +72 +$modif›d + = +$ev’t +-> + `g‘Invok” +()-> + `g‘Modif›d +(); + +73 iàÐ! + `is£t +( +$modif›d +[ +$upd©edName +])) { + +74 +$ev’t +-> + `g‘Invok” +()-> +$upd©edName + = +$this +-> + `g‘Time¡amp +('upd©ed', $ev’t->g‘Invok”()-> + `g‘TabË +()-> + `g‘CÚÃùiÚ +()); + +77 + } +} + +85 +public + +funùiÚ + + $´eUpd©e +( +Doùrše_Ev’t + +$ev’t +) + +87 iàÐ! +$this +-> +_ÝtiÚs +['updated']['disabled']) { + +88 +$upd©edName + = +$ev’t +-> + `g‘Invok” +()-> + `g‘TabË +()-> + `g‘F›ldName +( +$this +-> +_ÝtiÚs +['updated']['name']); + +89 +$modif›d + = +$ev’t +-> + `g‘Invok” +()-> + `g‘Modif›d +(); + +90 iàÐ! + `is£t +( +$modif›d +[ +$upd©edName +])) { + +91 +$ev’t +-> + `g‘Invok” +()-> +$upd©edName + = +$this +-> + `g‘Time¡amp +('upd©ed', $ev’t->g‘Invok”()-> + `g‘TabË +()-> + `g‘CÚÃùiÚ +()); + +94 + } +} + +102 +public + +funùiÚ + + $´eDqlUpd©e +( +Doùrše_Ev’t + +$ev’t +) + +104 iàÐ! +$this +-> +_ÝtiÚs +['updated']['disabled']) { + +105 +$·¿ms + = +$ev’t +-> + `g‘P¬ams +(); + +106 +$upd©edName + = +$ev’t +-> + `g‘Invok” +()-> + `g‘TabË +()-> + `g‘F›ldName +( +$this +-> +_ÝtiÚs +['updated']['name']); + +107 +$f›ld + = +$·¿ms +['®Ÿs'] . '.' . +$upd©edName +; + +108 +$qu”y + = +$ev’t +-> + `g‘Qu”y +(); + +110 iàÐ! +$qu”y +-> + `cڏšs +( +$f›ld +)) { + +111 +$qu”y +-> + `£t +( +$f›ld +, '?', +$this +-> + `g‘Time¡amp +('upd©ed', +$ev’t +-> + `g‘Invok” +()-> + `g‘TabË +()-> + `g‘CÚÃùiÚ +())); + +114 + } +} + +122 +public + +funùiÚ + + $g‘Time¡amp +( +$ty³ +, +$cÚn + = +nuÎ +) + +124 +$ÝtiÚs + = +$this +-> +_ÝtiÚs +[ +$ty³ +]; + +126 ià( +$ÝtiÚs +['ex´essiÚ'] !=ð +çl£ + && + `is_¡ršg +($options['expression'])) { + +127  +Ãw + + `Doùrše_Ex´essiÚ +( +$ÝtiÚs +['ex´essiÚ'], +$cÚn +); + +129 ià( +$ÝtiÚs +['type'] == 'date') { + +130  + `d©e +( +$ÝtiÚs +['fÜm©'], + `time +()); + +131 } ià( +$ÝtiÚs +['type'] == 'timestamp') { + +132  + `d©e +( +$ÝtiÚs +['fÜm©'], + `time +()); + +134  + `time +(); + +137 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Template/NestedSet.php + +1 +_bË +-> + `£tO±iÚ +('Œ“O±iÚs', $this-> +_ÝtiÚs +); + +43 +$this +-> +_bË +-> + `£tO±iÚ +('treeImpl', 'NestedSet'); + +51 +public + +funùiÚ + + $£tTabËDefš™iÚ +() + +53 +$this +-> +_bË +-> + `g‘T»e +()-> + `£tTabËDefš™iÚ +(); + +54 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Template/Searchable.php + +1 +_¶ugš + = +Ãw + + `Doùrše_S—rch +($this-> +_ÝtiÚs +); + +52 +public + +funùiÚ + + $£tUp +() + +54 +$this +-> +_¶ugš +-> + `š™Ÿlize +($this-> +_bË +); + +56 +$this +-> + `addLi¡’” +( +Ãw + + `Doùrše_S—rch_Li¡’” +($this-> +_¶ugš +)); + +57 + } +} + +67 +public + +funùiÚ + + $b©chUpd©eIndex +( +$lim™ + = +nuÎ +, +$off£t + =‚uÎ, +$’codšg + =‚ull) + +69 +$this +-> +_¶ugš +-> + `b©chUpd©eIndex +( +$lim™ +, +$off£t +, +$’codšg +); + +70 + } +} + +79 +public + +funùiÚ + + $b©chUpd©eIndexTabËProxy +( +$lim™ + = +nuÎ +, +$off£t + =‚uÎ, +$’codšg + =‚ull) + +81 +$this +-> + `b©chUpd©eIndex +( +$lim™ +, +$off£t +, +$’codšg +); + +82 + } +} + +91 +public + +funùiÚ + + $£¬chTabËProxy +( +$¡ršg +, +$qu”y + = +nuÎ +) + +93  +$this +-> +_¶ugš +-> + `£¬ch +( +$¡ršg +, +$qu”y +); + +94 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Template/Sluggable.php + +1 +nuÎ +, + +47 'unique' => +Œue +, + +48 'ÝtiÚs' => +¬¿y +(), + +49 'f›lds' => +¬¿y +(), + +50 'uniqueBy' => +¬¿y +(), + +51 'uniqueIndex' => +Œue +, + +52 'ÿnUpd©e' => +çl£ +, + +53 'bužd”' => +¬¿y +('Doctrine_Inflector', 'urlize'), + +54 '´ovid”' => +nuÎ +, + +55 'šdexName' => +nuÎ + + +63 +public + +funùiÚ + + $£tTabËDefš™iÚ +() + +65 +$Çme + = +$this +-> +_ÝtiÚs +['name']; + +66 ià( +$this +-> +_ÝtiÚs +['alias']) { + +67 +$Çme + .ð'‡ ' . +$this +-> +_ÝtiÚs +['alias']; + +69 ià( +$this +-> +_ÝtiÚs +['šdexName'] ==ð +nuÎ +) { + +70 +$this +-> +_ÝtiÚs +['šdexName'] = $this-> + `g‘TabË +()-> + `g‘TabËName +().'_sluggable'; + +72 +$this +-> + `hasCÞumn +( +$Çme +, $this-> +_ÝtiÚs +['type'], $this->_options['length'], $this->_options['options']); + +74 ià( +$this +-> +_ÝtiÚs +['unique'] =ð +Œue + && $this->_options['uniqueIndex'] ==rue) { + +75 +$šdexF›lds + = + `¬¿y +( +$this +-> +_ÝtiÚs +['name']); + +76 +$šdexF›lds + = + `¬¿y_m”ge +($šdexF›lds, +$this +-> +_ÝtiÚs +['uniqueBy']); + +77 +$this +-> + `šdex +($this-> +_ÝtiÚs +['šdexName'], + `¬¿y +('f›lds' => +$šdexF›lds +, + +81 +$this +-> + `addLi¡’” +( +Ãw + + `Doùrše_Tem¶©e_Li¡’”_SluggabË +($this-> +_ÝtiÚs +)); + +83 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Template/SoftDelete.php + +1 +nuÎ +, + +45 'ÝtiÚs' => +¬¿y +( + +46 'nÙnuÎ' => +çl£ + + +48 'h¬dD–‘e' => +çl£ + + +51 +´Ùeùed + + m$_li¡’” +; + +58 +public + +funùiÚ + + $£tTabËDefš™iÚ +() + +61 ià( +$this +-> +_ÝtiÚs +['type'] == 'boolean') { + +62 +$this +-> +_ÝtiÚs +['length'] = 1; + +63 +$this +-> +_ÝtiÚs +['ÝtiÚs'] = + `¬¿y +('deçuÉ' => +çl£ +, 'nÙnuÎ' => +Œue +); + +66 +$this +-> + `hasCÞumn +($this-> +_ÝtiÚs +['name'], $this->_options['type'], $this->_options['length'], $this->_options['options']); + +68 +$this +-> +_li¡’” + = +Ãw + + `Doùrše_Tem¶©e_Li¡’”_SoáD–‘e +($this-> +_ÝtiÚs +); + +69 +$this +-> + `addLi¡’” +($this-> +_li¡’” +); + +78 +public + +funùiÚ + + $h¬dD–‘e +( +$cÚn + = +nuÎ +) + +80 ià( +$cÚn + ==ð +nuÎ +) { + +81 +$cÚn + = +$this +-> +_bË +-> + `g‘CÚÃùiÚ +(); + +83 +$this +-> +_li¡’” +-> + `h¬dD–‘e +( +Œue +); + +84 +$»suÉ + = +$this +-> +_švok” +-> + `d–‘e +(); + +85 +$this +-> +_li¡’” +-> + `h¬dD–‘e +( +çl£ +); + +86  +$»suÉ +; + +87 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Template/Timestampable.php + +1 ‡rray('name' => 'created_at', + +44 '®Ÿs' => +nuÎ +, + +47 'di§bËd' => +çl£ +, + +48 'ex´essiÚ' => +çl£ +, + +49 'ÝtiÚs' => +¬¿y +('nÙnuÎ' => +Œue +)), + +50 'upd©ed' => +¬¿y +('name' => 'updated_at', + +51 '®Ÿs' => +nuÎ +, + +54 'di§bËd' => +çl£ +, + +55 'ex´essiÚ' => +çl£ +, + +56 'ÚIn£¹' => +Œue +, + +57 'ÝtiÚs' => +¬¿y +('nÙnuÎ' => +Œue +))); + +64 +public + +funùiÚ + + $£tTabËDefš™iÚ +() + +66 iàÐ! +$this +-> +_ÝtiÚs +['created']['disabled']) { + +67 +$Çme + = +$this +-> +_ÝtiÚs +['created']['name']; + +68 ià( +$this +-> +_ÝtiÚs +['created']['alias']) { + +69 +$Çme + .ð'‡ ' . +$this +-> +_ÝtiÚs +['created']['alias']; + +71 +$this +-> + `hasCÞumn +( +$Çme +, $this-> +_ÝtiÚs +['ü—‹d']['ty³'], +nuÎ +, $this->_options['created']['options']); + +74 iàÐ! +$this +-> +_ÝtiÚs +['updated']['disabled']) { + +75 +$Çme + = +$this +-> +_ÝtiÚs +['updated']['name']; + +76 ià( +$this +-> +_ÝtiÚs +['updated']['alias']) { + +77 +$Çme + .ð'‡ ' . +$this +-> +_ÝtiÚs +['updated']['alias']; + +79 +$this +-> + `hasCÞumn +( +$Çme +, $this-> +_ÝtiÚs +['upd©ed']['ty³'], +nuÎ +, $this->_options['updated']['options']); + +82 +$this +-> + `addLi¡’” +( +Ãw + + `Doùrše_Tem¶©e_Li¡’”_Time¡am·bË +($this-> +_ÝtiÚs +)); + +84 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Template/Versionable.php + +1 ‡rray('name' => 'version', + +43 '®Ÿs' => +nuÎ +, + +46 'ÝtiÚs' => +¬¿y +()), + +47 'g’”©eR–©iÚs' => +Œue +, + +48 'bËName' => +çl£ +, + +49 'g’”©eFžes' => +çl£ +, + +50 'aud™Log' => +Œue +, + +51 'd–‘eV”siÚs' => +Œue +, + +60 +public + +funùiÚ + +__cÚ¡ruù +( +¬¿y + +$ÝtiÚs + = + $¬¿y +()) + +62 +·»Á +:: + `__cÚ¡ruù +( +$ÝtiÚs +); + +63 +$this +-> +_¶ugš + = +Ãw + + `Doùrše_Aud™Log +($this-> +_ÝtiÚs +); + +71 +public + +funùiÚ + + $£tUp +() + +73 ià( +$this +-> +_¶ugš +-> + `g‘O±iÚ +('auditLog')) { + +74 +$this +-> +_¶ugš +-> + `š™Ÿlize +($this-> +_bË +); + +77 +$v”siÚ + = +$this +-> +_ÝtiÚs +['version']; + +78 +$Çme + = +$v”siÚ +['Çme'] . ( + `is£t +($version['alias']) ? '‡s ' . $version['alias'] : ''); + +79 +$this +-> + `hasCÞumn +( +$Çme +, +$v”siÚ +['type'], $version['length'], $version['options']); + +81 +$li¡’” + = +$this +-> +_ÝtiÚs +['listener']; + +82 +$this +-> + `addLi¡’” +( +Ãw + + `$li¡’” +($this-> +_¶ugš +)); + +83 + } +} + +90 +public + +funùiÚ + + $g‘Aud™Log +() + +92  +$this +-> +_¶ugš +; + +93 + } +} + +104 +public + +funùiÚ + + $»v”t +( +$v”siÚ +) + +106 +$aud™Log + = +$this +-> +_¶ugš +; + +108 iàÐ! +$aud™Log +-> + `g‘O±iÚ +('auditLog')) { + +109 +throw + +Ãw + + `Doùrše_RecÜd_Exû±iÚ +('Audit†og isurned off,‚o version history is„ecorded.'); + +112 +$d©a + = +$aud™Log +-> + `g‘V”siÚ +( +$this +-> + `g‘Invok” +(), +$v”siÚ +); + +114 iàÐ! + `is£t +( +$d©a +[0])) { + +115 +throw + +Ãw + + `Doùrše_RecÜd_Exû±iÚ +('V”siÚ ' . +$v”siÚ + . ' does‚otƒxist!'); + +118 +$this +-> + `g‘Invok” +()-> + `m”ge +( +$d©a +[0]); + +121  +$this +-> + `g‘Invok” +(); + +122 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Transaction.php + +1 +_cÞËùiÚs +[] = +$cÞl +; + +100  +$this +; + +110 +public + +funùiÚ + + $g‘S‹ +() + +112  +$this +-> +_ášgLev– +) { + +114  +Doùrše_T¿n§ùiÚ +:: +STATE_SLEEP +; + +117  +Doùrše_T¿n§ùiÚ +:: +STATE_ACTIVE +; + +120  +Doùrše_T¿n§ùiÚ +:: +STATE_BUSY +; + +122 + } +} + +132 +public + +funùiÚ + + $addInv®id +( +Doùrše_RecÜd + +$»cÜd +) + +134 ià( + `š_¬¿y +( +$»cÜd +, +$this +-> +šv®id +, +Œue +)) { + +135  +çl£ +; + +137 +$this +-> +šv®id +[] = +$»cÜd +; + +138  +Œue +; + +139 + } +} + +147 +public + +funùiÚ + + $g‘Inv®id +() + +149  +$this +-> +šv®id +; + +150 + } +} + +158 +public + +funùiÚ + + $g‘T¿n§ùiÚLev– +() + +160  +$this +-> +_ášgLev– +; + +161 + } +} + +163 +public + +funùiÚ + + $g‘IÁ”ÇlT¿n§ùiÚLev– +() + +165  +$this +-> +_š‹º®Ne¡šgLev– +; + +166 + } +} + +184 +public + +funùiÚ + + $begšT¿n§ùiÚ +( +$§v•ošt + = +nuÎ +) + +186 +$this +-> +cÚn +-> + `cÚÃù +(); + +188 +$li¡’” + = +$this +-> +cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_LISTENER +); + +190 iàÐ! + `is_nuÎ +( +$§v•ošt +)) { + +191 +$this +-> +§vePošts +[] = +$§v•ošt +; + +193 +$ev’t + = +Ãw + + `Doùrše_Ev’t +( +$this +, +Doùrše_Ev’t +:: +SAVEPOINT_CREATE +); + +195 +$li¡’” +-> + `´eSav•oštC»©e +( +$ev’t +); + +197 iàÐ! +$ev’t +-> +skO³¿tiÚ +) { + +198 +$this +-> + `ü—‹SavePošt +( +$§v•ošt +); + +201 +$li¡’” +-> + `po¡Sav•oštC»©e +( +$ev’t +); + +203 ià( +$this +-> +_ášgLev– + == 0) { + +204 +$ev’t + = +Ãw + + `Doùrše_Ev’t +( +$this +, +Doùrše_Ev’t +:: +TX_BEGIN +); + +206 +$li¡’” +-> + `´eT¿n§ùiÚBegš +( +$ev’t +); + +208 iàÐ! +$ev’t +-> +skO³¿tiÚ +) { + +209 +Œy + { + +210 +$this +-> + `_doBegšT¿n§ùiÚ +(); + +211 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +212 +throw + +Ãw + + `Doùrše_T¿n§ùiÚ_Exû±iÚ +( +$e +-> + `g‘Mes§ge +()); + +215 +$li¡’” +-> + `po¡T¿n§ùiÚBegš +( +$ev’t +); + +219 +$Ëv– + = ++ +$this +-> +_ášgLev– +; + +221  +$Ëv– +; + +222 + } +} + +236 +public + +funùiÚ + + $comm™ +( +$§v•ošt + = +nuÎ +) + +238 ià( +$this +-> +_ášgLev– + == 0) { + +239 +throw + +Ãw + + `Doùrše_T¿n§ùiÚ_Exû±iÚ +("Commit failed. There is‚o‡ctiveransaction."); + +242 +$this +-> +cÚn +-> + `cÚÃù +(); + +244 +$li¡’” + = +$this +-> +cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_LISTENER +); + +246 iàÐ! + `is_nuÎ +( +$§v•ošt +)) { + +247 +$this +-> +_ášgLev– + -ð$this-> + `»moveSavePošts +( +$§v•ošt +); + +249 +$ev’t + = +Ãw + + `Doùrše_Ev’t +( +$this +, +Doùrše_Ev’t +:: +SAVEPOINT_COMMIT +); + +251 +$li¡’” +-> + `´eSav•oštComm™ +( +$ev’t +); + +253 iàÐ! +$ev’t +-> +skO³¿tiÚ +) { + +254 +$this +-> + `»Ëa£SavePošt +( +$§v•ošt +); + +257 +$li¡’” +-> + `po¡Sav•oštComm™ +( +$ev’t +); + +260 ià( +$this +-> +_ášgLev– + =ð1 || $this-> +_š‹º®Ne¡šgLev– + == 1) { + +261 iàÐ! + `em±y +( +$this +-> +šv®id +)) { + +262 ià( +$this +-> +_š‹º®Ne¡šgLev– + == 1) { + +263 +$tmp + = +$this +-> +šv®id +; + +264 +$this +-> +šv®id + = + `¬¿y +(); + +265 +throw + +Ãw + + `Doùrše_V®id©Ü_Exû±iÚ +( +$tmp +); + +268 ià( +$this +-> +_ášgLev– + == 1) { + +270 + `fܗch + ( +$this +-> +_cÞËùiÚs + +as + +$cÞl +) { + +271 +$cÞl +-> + `keSÇpshÙ +(); + +273 +$this +-> +_cÞËùiÚs + = + `¬¿y +(); + +275 +$ev’t + = +Ãw + + `Doùrše_Ev’t +( +$this +, +Doùrše_Ev’t +:: +TX_COMMIT +); + +277 +$li¡’” +-> + `´eT¿n§ùiÚComm™ +( +$ev’t +); + +278 iàÐ! +$ev’t +-> +skO³¿tiÚ +) { + +279 +$this +-> + `_doComm™ +(); + +281 +$li¡’” +-> + `po¡T¿n§ùiÚComm™ +( +$ev’t +); + +285 ià( +$this +-> +_ášgLev– + > 0) { + +286 +$this +-> +_ášgLev– +--; + +288 ià( +$this +-> +_š‹º®Ne¡šgLev– + > 0) { + +289 +$this +-> +_š‹º®Ne¡šgLev– +--; + +293  +Œue +; + +294 + } +} + +316 +public + +funùiÚ + + $rÞlback +( +$§v•ošt + = +nuÎ +) + +318 ià( +$this +-> +_ášgLev– + == 0) { + +319 +throw + +Ãw + + `Doùrše_T¿n§ùiÚ_Exû±iÚ +("Rollback failed. There is‚o‡ctiveransaction."); + +322 +$this +-> +cÚn +-> + `cÚÃù +(); + +324 ià( +$this +-> +_š‹º®Ne¡šgLev– + >ð1 && $this-> +_ášgLev– + > 1) { + +325 +$this +-> +_š‹º®Ne¡šgLev– +--; + +326 +$this +-> +_ášgLev– +--; + +327  +çl£ +; + +328 } ià( +$this +-> +_ášgLev– + > 1) { + +329 +$this +-> +_ášgLev– +--; + +330  +çl£ +; + +333 +$li¡’” + = +$this +-> +cÚn +-> + `g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_LISTENER +); + +335 iàÐ! + `is_nuÎ +( +$§v•ošt +)) { + +336 +$this +-> +_ášgLev– + -ð$this-> + `»moveSavePošts +( +$§v•ošt +); + +338 +$ev’t + = +Ãw + + `Doùrše_Ev’t +( +$this +, +Doùrše_Ev’t +:: +SAVEPOINT_ROLLBACK +); + +340 +$li¡’” +-> + `´eSav•oštRÞlback +( +$ev’t +); + +342 iàÐ! +$ev’t +-> +skO³¿tiÚ +) { + +343 +$this +-> + `rÞlbackSavePošt +( +$§v•ošt +); + +346 +$li¡’” +-> + `po¡Sav•oštRÞlback +( +$ev’t +); + +348 +$ev’t + = +Ãw + + `Doùrše_Ev’t +( +$this +, +Doùrše_Ev’t +:: +TX_ROLLBACK +); + +350 +$li¡’” +-> + `´eT¿n§ùiÚRÞlback +( +$ev’t +); + +352 iàÐ! +$ev’t +-> +skO³¿tiÚ +) { + +353 +$this +-> +_ášgLev– + = 0; + +354 +$this +-> +_š‹º®Ne¡šgLev– + = 0; + +355 +Œy + { + +356 +$this +-> + `_doRÞlback +(); + +357 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +358 +throw + +Ãw + + `Doùrše_T¿n§ùiÚ_Exû±iÚ +( +$e +-> + `g‘Mes§ge +()); + +362 +$li¡’” +-> + `po¡T¿n§ùiÚRÞlback +( +$ev’t +); + +365  +Œue +; + +366 + } +} + +375 +´Ùeùed + +funùiÚ + + $ü—‹SavePošt +( +$§v•ošt +) + +377 +throw + +Ãw + + `Doùrše_T¿n§ùiÚ_Exû±iÚ +('Savepoints‚ot supported byhis driver.'); + +378 + } +} + +387 +´Ùeùed + +funùiÚ + + $»Ëa£SavePošt +( +$§v•ošt +) + +389 +throw + +Ãw + + `Doùrše_T¿n§ùiÚ_Exû±iÚ +('Savepoints‚ot supported byhis driver.'); + +390 + } +} + +399 +´Ùeùed + +funùiÚ + + $rÞlbackSavePošt +( +$§v•ošt +) + +401 +throw + +Ãw + + `Doùrše_T¿n§ùiÚ_Exû±iÚ +('Savepoints‚ot supported byhis driver.'); + +402 + } +} + +407 +´Ùeùed + +funùiÚ + + $_doRÞlback +() + +409 +$this +-> +cÚn +-> + `g‘Dbh +()-> + `rÞlback +(); + +410 + } +} + +415 +´Ùeùed + +funùiÚ + + $_doComm™ +() + +417 +$this +-> +cÚn +-> + `g‘Dbh +()-> + `comm™ +(); + +418 + } +} + +423 +´Ùeùed + +funùiÚ + + $_doBegšT¿n§ùiÚ +() + +425 +$this +-> +cÚn +-> + `g‘Dbh +()-> + `begšT¿n§ùiÚ +(); + +426 + } +} + +436 +´iv©e + +funùiÚ + + $»moveSavePošts +( +$§v•ošt +) + +438 +$this +-> +§vePošts + = + `¬¿y_v®ues +($this->savePoints); + +440 +$found + = +çl£ +; + +441 +$i + = 0; + +443 + `fܗch + ( +$this +-> +§vePošts + +as + +$key + => +$¥ +) { + +444 iàÐ! +$found +) { + +445 ià( +$¥ + ==ð +$§v•ošt +) { + +446 +$found + = +Œue +; + +449 ià( +$found +) { + +450 +$i +++; + +451 + `un£t +( +$this +-> +§vePošts +[ +$key +]); + +455  +$i +; + +456 + } +} + +480 +public + +funùiÚ + + $£tIsÞ©iÚ +( +$isÞ©iÚ +) + +482 +throw + +Ãw + + `Doùrše_T¿n§ùiÚ_Exû±iÚ +('Transaction isolation†evels‚ot supported byhis driver.'); + +483 + } +} + +497 +public + +funùiÚ + + $g‘IsÞ©iÚ +() + +499 +throw + +Ãw + + `Doùrše_T¿n§ùiÚ_Exû±iÚ +('Fetchingransaction isolation†evel‚ot supported byhis driver.'); + +500 + } +} + +508 +public + +funùiÚ + + $begšIÁ”ÇlT¿n§ùiÚ +( +$§v•ošt + = +nuÎ +) + +510 +$this +-> +_š‹º®Ne¡šgLev– +++; + +511  +$this +-> + `begšT¿n§ùiÚ +( +$§v•ošt +); + +512 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Transaction/Exception.php + +1 +cÚn +-> + `execu‹ +( +$qu”y +); + +72 +´Ùeùed + +funùiÚ + + $_doRÞlback +() + +74 +$this +-> +cÚn +-> + `g‘Dbh +()-> + `exec +('ROLLBACK TRANSACTION'); + +75 + } +} + +80 +´Ùeùed + +funùiÚ + + $_doComm™ +() + +82 +$this +-> +cÚn +-> + `g‘Dbh +()-> + `exec +('COMMIT TRANSACTION'); + +83 + } +} + +88 +´Ùeùed + +funùiÚ + + $_doBegšT¿n§ùiÚ +() + +90 +$this +-> +cÚn +-> + `g‘Dbh +()-> + `exec +('BEGIN TRANSACTION'); + +91 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Transaction/Mysql.php + +1 +cÚn +-> + `execu‹ +( +$qu”y +); + +56 +´Ùeùed + +funùiÚ + + $»Ëa£SavePošt +( +$§v•ošt +) + +58 +$qu”y + = 'RELEASE SAVEPOINT ' . +$§v•ošt +; + +60  +$this +-> +cÚn +-> + `execu‹ +( +$qu”y +); + +61 + } +} + +70 +´Ùeùed + +funùiÚ + + $rÞlbackSavePošt +( +$§v•ošt +) + +72 +$qu”y + = 'ROLLBACK TO SAVEPOINT ' . +$§v•ošt +; + +74  +$this +-> +cÚn +-> + `execu‹ +( +$qu”y +); + +75 + } +} + +90 +public + +funùiÚ + + $£tIsÞ©iÚ +( +$isÞ©iÚ +) + +92  +$isÞ©iÚ +) { + +99 +throw + +Ãw + + `Doùrše_T¿n§ùiÚ_Exû±iÚ +('IsÞ©iچev– ' . +$isÞ©iÚ + . ' is‚ot supported.'); + +102 +$qu”y + = 'SET SESSION TRANSACTION ISOLATION LEVEL ' . +$isÞ©iÚ +; + +104  +$this +-> +cÚn +-> + `execu‹ +( +$qu”y +); + +105 + } +} + +112 +public + +funùiÚ + + $g‘IsÞ©iÚ +() + +114  +$this +-> +cÚn +-> + `ãtchOà +('SELECT @@tx_isolation'); + +115 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Transaction/Oracle.php + +1 +cÚn +-> + `execu‹ +( +$qu”y +); + +56 +´Ùeùed + +funùiÚ + + $»Ëa£SavePošt +( +$§v•ošt +) + +59  +Œue +; + +60 + } +} + +69 +´Ùeùed + +funùiÚ + + $rÞlbackSavePošt +( +$§v•ošt +) + +71 +$qu”y + = 'ROLLBACK TO SAVEPOINT ' . +$§v•ošt +; + +73  +$this +-> +cÚn +-> + `execu‹ +( +$qu”y +); + +74 + } +} + +88 +public + +funùiÚ + + $£tIsÞ©iÚ +( +$isÞ©iÚ +) + +90  +$isÞ©iÚ +) { + +92 +$isÞ©iÚ + = 'READ COMMITTED'; + +97 +$isÞ©iÚ + = 'SERIALIZABLE'; + +100 +throw + +Ãw + + `Doùrše_T¿n§ùiÚ_Exû±iÚ +('IsÞ©iچev– ' . +$isÞ©iÚ + . ' is‚ot supported.'); + +103 +$qu”y + = 'ALTER SESSION SET ISOLATION_LEVEL = ' . +$isÞ©iÚ +; + +104  +$this +-> +cÚn +-> + `execu‹ +( +$qu”y +); + +105 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Transaction/Pgsql.php + +1 +cÚn +-> + `execu‹ +( +$qu”y +); + +57 +´Ùeùed + +funùiÚ + + $»Ëa£SavePošt +( +$§v•ošt +) + +59 +$qu”y + = 'RELEASE SAVEPOINT ' . +$§v•ošt +; + +61  +$this +-> +cÚn +-> + `execu‹ +( +$qu”y +); + +62 + } +} + +71 +´Ùeùed + +funùiÚ + + $rÞlbackSavePošt +( +$§v•ošt +) + +73 +$qu”y + = 'ROLLBACK TO SAVEPOINT ' . +$§v•ošt +; + +75  +$this +-> +cÚn +-> + `execu‹ +( +$qu”y +); + +76 + } +} + +90 +public + +funùiÚ + + $£tIsÞ©iÚ +( +$isÞ©iÚ +) + +92  +$isÞ©iÚ +) { + +99 +throw + +Ãw + + `Doùrše_T¿n§ùiÚ_Exû±iÚ +('IsÞ©iچev– '. +$isÞ©iÚ +.' is‚ot supported.'); + +102 +$qu”y + = 'SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL ' . +$isÞ©iÚ +; + +103  +$this +-> +cÚn +-> + `execu‹ +( +$qu”y +); + +104 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Transaction/Sqlite.php + +1 +cÚn +-> + `execu‹ +( +$qu”y +); + +66 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Tree.php + +1 +bË + = +$bË +; + +56 +$this +-> +ÝtiÚs + = +$ÝtiÚs +; + +57 +$this +-> +_ba£Compڒt + = +$bË +-> + `g‘CompڒtName +(); + +58 +$þass + = +$this +-> +_ba£Compڒt +; + +59 ià( +$bË +-> + `g‘O±iÚ +('inheritanceMap')) { + +60 +$subþas£s + = +$bË +-> + `g‘O±iÚ +('subclasses'); + +61  + `š_¬¿y +( +$þass +, +$subþas£s +)) { + +62 +$þass + = + `g‘_·»Á_þass +($class); + +64 +$this +-> +_ba£Compڒt + = +$þass +; + +74 +public + +funùiÚ + + $£tTabËDefš™iÚ +() + +76 +throw + +Ãw + + `Doùrše_T»e_Exû±iÚ +('Table‡ttributes have‚ot been defined forhis Tree implementation.'); + +77 + } +} + +83 +public + +funùiÚ + + $£tUp +() + +85 + } +} + +99 +public +  +funùiÚ + +çùÜy +( +Doùrše_TabË + +$bË +, +$im¶Name +, +$ÝtiÚs + = + $¬¿y +()) + +101 +$þass + = 'Doùrše_T»e_' . +$im¶Name +; + +102 iàÐ! + `þass_exi¡s +( +$þass +)) { + +103 +throw + +Ãw + + `Doùrše_Exû±iÚ +('The chosen class mustƒxtend Doctrine_Tree'); + +105  +Ãw + + `$þass +( +$bË +, +$ÝtiÚs +); + +106 + } +} + +112 +public + +funùiÚ + + $g‘A‰ribu‹ +( +$Çme +) + +114  + `is£t +( +$this +-> +ÝtiÚs +[ +$Çme +]è? $this->ÝtiÚs[$Çme] : +nuÎ +; + +115 + } +} + +122 +public + +funùiÚ + + $£tA‰ribu‹ +( +$Çme +, +$v®ue +) + +124 +$this +-> +ÝtiÚs +[ +$Çme +] = +$v®ue +; + +125 + } +} + +130 +public + +funùiÚ + + $g‘Ba£Compڒt +() + +132  +$this +-> +_ba£Compڒt +; + +133 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Tree/AdjacencyList.php + +1 + `g‘A‰ribu‹ +('roÙCÞumnName')è&& (!$this-> +bË +-> + `hasCÞumn +($root))) { + +64 +$this +-> +bË +-> + `£tCÞumn +( +$roÙ +, 'integer'); + +67 +$this +-> +bË +-> + `£tCÞumn +('lft', 'integer', 4); + +68 +$this +-> +bË +-> + `£tCÞumn +('rgt', 'integer', 4); + +69 ià( +$Ëv– + = +$this +-> + `g‘A‰ribu‹ +('levelColumnName')) { + +70 +$this +-> +bË +-> + `£tCÞumn +( +$Ëv– + . ' AS†evel', 'integer', 2); + +72 +$this +-> +bË +-> + `£tCÞumn +('level', 'integer', 2); + +74 + } +} + +87 +public + +funùiÚ + + $ü—‹RoÙ +( +Doùrše_RecÜd + +$»cÜd + = +nuÎ +) + +89 ià( +$this +-> + `g‘A‰ribu‹ +('hasManyRoots')) { + +90 iàÐ! +$»cÜd + || ( ! $»cÜd-> + `exi¡s +(è&& ! $»cÜd-> + `g‘Node +()-> + `g‘RoÙV®ue +()) + +91 || +$»cÜd +-> + `g‘TabË +()-> + `isId’tif›rCompos™e +()) { + +92 +throw + +Ãw + + `Doùrše_T»e_Exû±iÚ +("Node must have‡„oot id set or must " + +98 ià( +$»cÜd +-> + `exi¡s +(è&& ! $»cÜd-> + `g‘Node +()-> + `g‘RoÙV®ue +()) { + +100 +$id’tif›r + = +$»cÜd +-> + `g‘TabË +()-> + `g‘Id’tif›r +(); + +101 +$»cÜd +-> + `g‘Node +()-> + `£tRoÙV®ue +($»cÜd-> + `g‘ +( +$id’tif›r +)); + +105 iàÐ! +$»cÜd +) { + +106 +$»cÜd + = +$this +-> +bË +-> + `ü—‹ +(); + +109 +$»cÜd +-> + `£t +('lft', '1'); + +110 +$»cÜd +-> + `£t +('rgt', '2'); + +111 +$»cÜd +-> + `£t +('level', 0); + +113 +$»cÜd +-> + `§ve +(); + +115  +$»cÜd +; + +116 + } +} + +125 +public + +funùiÚ + + $ãtchRoÙ +( +$roÙId + = 1) + +127 +$q + = +$this +-> + `g‘Ba£Qu”y +(); + +128 +$q + = $q-> + `addWh”e +( +$this +-> +_ba£AlŸs + . '.lft = ?', 1); + +131 +$q + = +$this +-> + `»tuºQu”yW™hRoÙId +($q, +$roÙId +); + +132 +$d©a + = +$q +-> + `execu‹ +(); + +134 ià( + `couÁ +( +$d©a +) <= 0) { + +135  +çl£ +; + +138 ià( +$d©a + +š¡ªûof + +Doùrše_CÞËùiÚ +) { + +139 +$roÙ + = +$d©a +-> + `g‘Fœ¡ +(); + +140 +$roÙ +['level'] = 0; + +141 } ià( + `is_¬¿y +( +$d©a +)) { + +142 +$roÙ + = + `¬¿y_shiá +( +$d©a +); + +143 +$roÙ +['level'] = 0; + +145 +throw + +Ãw + + `Doùrše_T»e_Exû±iÚ +("Unexpected data structure„eturned."); + +148  +$roÙ +; + +149 + } +} + +158 +public + +funùiÚ + +ãtchT»e +( +$ÝtiÚs + = +¬¿y +(), +$hyd¿tiÚMode + = +nuÎ +) + +161 +$q + = +$this +-> +g‘Ba£Qu”y +(); + +163 + g$d•th + = +is£t +( +$ÝtiÚs +['d•th']è? $ÝtiÚs['d•th'] : +nuÎ +; + +165 + g$q +-> +addWh”e +( +$this +-> +_ba£AlŸs + . ".lft >= ?", 1); + +168 + g$roÙId + = +is£t +( +$ÝtiÚs +['root_id']) ? $options['root_id'] : '1'; + +169 ià( +is_¬¿y +( +$roÙId +)) { + +170 + g$q +-> +addOrd”By +( +$this +-> +_ba£AlŸs + . "." . $this-> +g‘A‰ribu‹ +('rootColumnName') . + +171 ", " . +$this +-> +_ba£AlŸs + . ".lft ASC"); + +173 + g$q +-> +addOrd”By +( +$this +-> +_ba£AlŸs + . ".lft ASC"); + +176 iàÐ! +is_nuÎ +( +$d•th +)) { + +177 + g$q +-> +addWh”e +( +$this +-> +_ba£AlŸs + . ".Ëv– BETWEEN ? AND ?", +¬¿y +(0, +$d•th +)); + +180 + g$q + = +$this +-> +»tuºQu”yW™hRoÙId +( +$q +, +$roÙId +); + +182 + g$Œ“ + = +$q +-> +execu‹ +( +¬¿y +(), +$hyd¿tiÚMode +); + +184 ià( +couÁ +( +$Œ“ +) <= 0) { + +185  +çl£ +; + +188  + g$Œ“ +; + +200 +public + +funùiÚ + +ãtchB¿nch +( +$pk +, +$ÝtiÚs + = +¬¿y +(), +$hyd¿tiÚMode + = +nuÎ +) + +202 +$»cÜd + = +$this +-> +bË +-> +fšd +( +$pk +); + +203 iàÐ! ( +$»cÜd + +š¡ªûof + + gDoùrše_RecÜd +è|| ! + g$»cÜd +-> +exi¡s +()) { + +205  + gçl£ +; + +208 + g$d•th + = +is£t +( +$ÝtiÚs +['d•th']è? $ÝtiÚs['d•th'] : +nuÎ +; + +210 + g$q + = +$this +-> +g‘Ba£Qu”y +(); + +211 + g$·¿ms + = +¬¿y +( +$»cÜd +-> +g‘ +('lft'), $record->get('rgt')); + +212 + g$q +-> +addWh”e +( +$this +-> +_ba£AlŸs + . ".lá >ð? AND " . $this->_ba£AlŸ . ".rgˆ<ð?", +$·¿ms +) + +213 -> +addOrd”By +( +$this +-> +_ba£AlŸs + . ".lft‡sc"); + +215 iàÐ! +is_nuÎ +( +$d•th +)) { + +216 + g$q +-> +addWh”e +( +$this +-> +_ba£AlŸs + . ".Ëv– BETWEEN ? AND ?", +¬¿y +( +$»cÜd +-> +g‘ +('Ëv–'), $»cÜd->g‘('Ëv–')+ +$d•th +)); + +219 + g$q + = +$this +-> +»tuºQu”yW™hRoÙId +( +$q +, +$»cÜd +-> +g‘Node +()-> +g‘RoÙV®ue +()); + +221  + g$q +-> +execu‹ +( +¬¿y +(), +$hyd¿tiÚMode +); + +230 +public + +funùiÚ + + $ãtchRoÙs +() + +232 +$q + = +$this +-> + `g‘Ba£Qu”y +(); + +233 +$q + = $q-> + `addWh”e +( +$this +-> +_ba£AlŸs + . '.lft = ?', 1); + +234  +$q +-> + `execu‹ +(); + +235 + } +} + +244 +public + +funùiÚ + + $»tuºQu”yW™hRoÙId +( +$qu”y +, +$roÙId + = 1) + +246 ià( +$roÙ + = +$this +-> + `g‘A‰ribu‹ +('rootColumnName')) { + +247 ià( + `is_¬¿y +( +$roÙId +)) { + +248 +$qu”y +-> + `addWh”e +( +$roÙ + . ' IN (' . + `im¶ode +(',', + `¬¿y_fžl +(0, + `couÁ +( +$roÙId +), '?')) . ')', + +249 +$roÙId +); + +251 +$qu”y +-> + `addWh”e +( +$roÙ + . ' = ?', +$roÙId +); + +255  +$qu”y +; + +256 + } +} + +264 +public + +funùiÚ + + $g‘Ba£Qu”y +() + +266 iàÐ! + `is£t +( +$this +-> +_ba£Qu”y +)) { + +267 +$this +-> +_ba£Qu”y + = $this-> + `_ü—‹Ba£Qu”y +(); + +269  +$this +-> +_ba£Qu”y +-> + `cÝy +(); + +270 + } +} + +276 +public + +funùiÚ + + $g‘Ba£AlŸs +() + +278  +$this +-> +_ba£AlŸs +; + +279 + } +} + +285 +´iv©e + +funùiÚ + + $_ü—‹Ba£Qu”y +() + +287 +$this +-> +_ba£AlŸs + = "base"; + +288 +$q + = +Doùrše_CÜe +:: + `g‘TabË +( +$this +-> + `g‘Ba£Compڒt +()) + +289 -> + `ü—‹Qu”y +( +$this +-> +_ba£AlŸs +) + +290 -> + `£Ëù +( +$this +-> +_ba£AlŸs + . '.*'); + +291  +$q +; + +292 + } +} + +299 +public + +funùiÚ + + $£tBa£Qu”y +( +Doùrše_Qu”y + +$qu”y +) + +301 +$this +-> +_ba£AlŸs + = +$qu”y +-> + `g‘RoÙAlŸs +(); + +302 +$qu”y +-> + `addS–eù +( +$this +-> +_ba£AlŸs + . ".lft, " . $this->_baseAlias . ".rgt, ". $this->_baseAlias . ".level"); + +303 ià( +$this +-> + `g‘A‰ribu‹ +('rootColumnName')) { + +304 +$qu”y +-> + `addS–eù +( +$this +-> +_ba£AlŸs + . "." . $this-> + `g‘A‰ribu‹ +('rootColumnName')); + +306 +$this +-> +_ba£Qu”y + = +$qu”y +; + +307 + } +} + +313 +public + +funùiÚ + + $»£tBa£Qu”y +() + +315 +$this +-> +_ba£Qu”y + = $this-> + `_ü—‹Ba£Qu”y +(); + +316 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Util.php + +1 + `g‘TabË +(); + +75 +$f›lds + = +$»cÜd +-> + `exi¡s +(è? $»cÜd-> + `g‘Modif›d +():$»cÜd-> + `g‘D©a +(); + +76 + `fܗch + ( +$f›lds + +as + +$f›ldName + => +$v®ue +) { + +77 +$bË +-> + `v®id©eF›ld +( +$f›ldName +, +$v®ue +, +$»cÜd +); + +79 +$bË +-> + `v®id©eUniques +( +$»cÜd +); + +80 + } +} + +90 +public +  +funùiÚ + + $v®id©eL’gth +( +$v®ue +, +$ty³ +, +$maximumL’gth +) + +92 ià( +$maximumL’gth + ==ð +nuÎ + ) { + +93  +Œue +; + +95 ià( +$ty³ + == 'timestamp' || $type == 'integer' || $type == 'enum') { + +96  +Œue +; + +97 } ià( +$ty³ + == 'array' || $type == 'object') { + +98 +$Ëngth + = + `¡¾’ +( + `£rŸlize +( +$v®ue +)); + +99 } ià( +$ty³ + == 'decimal' || $type == 'float') { + +100 +$v®ue + = + `abs +($value); + +102 +$loÿËInfo + = + `loÿËcÚv +(); + +103 +$decim®Pošt + = +$loÿËInfo +['mon_decimal_point'] ? $localeInfo['mon_decimal_point'] : $localeInfo['decimal_point']; + +104 +$e + = + `ex¶ode +( +$decim®Pošt +, +$v®ue +); + +106 +$Ëngth + = + `¡¾’ +( +$e +[0]); + +108 ià( + `is£t +( +$e +[1])) { + +109 +$Ëngth + = $Ëngth + + `¡¾’ +( +$e +[1]); + +111 } ià( +$ty³ + == 'blob') { + +112 +$Ëngth + = + `¡¾’ +( +$v®ue +); + +114 +$Ëngth + = +£lf +:: + `g‘SŒšgL’gth +( +$v®ue +); + +116 ià( +$Ëngth + > +$maximumL’gth +) { + +117  +çl£ +; + +119  +Œue +; + +120 + } +} + +128 +public +  +funùiÚ + + $g‘SŒšgL’gth +( +$¡ršg +) + +130 ià( + `funùiÚ_exi¡s +('mb_strlen')) { + +131  + `mb_¡¾’ +( +$¡ršg +, 'utf8'); + +133  + `¡¾’ +( + `utf8_decode +( +$¡ršg +)); + +135 + } +} + +142 +public + +funùiÚ + + $hasE¼Üs +() + +144  ( + `couÁ +( +$this +-> +¡ack +) > 0); + +145 + } +} + +154 +public +  +funùiÚ + + $isV®idTy³ +( +$v¬ +, +$ty³ +) + +156 ià( +$v¬ + +š¡ªûof + +Doùrše_Ex´essiÚ +) { + +157  +Œue +; + +158 } ià( +$v¬ + ==ð +nuÎ +) { + +159  +Œue +; + +160 } ià( + `is_objeù +( +$v¬ +)) { + +161  +$ty³ + == 'object'; + +164  +$ty³ +) { + +168  ( +¡ršg +è +$v¬ + =ð + `¡rv® +( + `æßtv® +($var)); + +170  ( +¡ršg +è +$v¬ + =ð + `¡rv® +( + `round +( + `æßtv® +($var))); + +172  + `is_¡ršg +( +$v¬ +è|| + `is_num”ic +($var); + +174  + `is_¡ršg +( +$v¬ +è|| + `is_»sourû +($var); + +177  + `is_¡ršg +( +$v¬ +); + +179  + `is_¬¿y +( +$v¬ +); + +181  + `is_objeù +( +$v¬ +); + +183  + `is_boÞ +( +$v¬ +è|| ( + `is_num”ic +($var) && ($var == 0 || $var == 1)); + +185 +$v®id©Ü + = +£lf +:: + `g‘V®id©Ü +('timestamp'); + +186  +$v®id©Ü +-> + `v®id©e +( +$v¬ +); + +188 +$v®id©Ü + = +£lf +:: + `g‘V®id©Ü +('time'); + +189  +$v®id©Ü +-> + `v®id©e +( +$v¬ +); + +191 +$v®id©Ü + = +£lf +:: + `g‘V®id©Ü +('date'); + +192  +$v®id©Ü +-> + `v®id©e +( +$v¬ +); + +194  + `is_¡ršg +( +$v¬ +è|| + `is_št +($var); + +196  + `is_¬¿y +( +$v¬ +è|| + `is_¡ršg +($var); + +198  +Œue +; + +200 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/Country.php + +1 +$ty³ +) { + +57 ià( + `´eg_m©ch +( +$»gex +, +$v®ue +)) { + +58 +$ÿrdTy³ + = +$ty³ +; + +62 iàÐ! +$ÿrdTy³ +) { + +63  +çl£ +; + +66 +$»vcode + = + `¡¼ev +( +$v®ue +); + +67 +$checksum + = 0; + +68  +$i + = 0; $˜< + `¡¾’ +( +$»vcode +); $i++) { + +69 +$cu¼’tNum + = + `štv® +( +$»vcode +[ +$i +]); + +70 ià( +$i + & 1) { + +71 +$cu¼’tNum + *= 2; + +74 +$checksum + +ð +$cu¼’tNum + % 10; + +75 ià( +$cu¼’tNum + > 9) { + +76 +$checksum + += 1; + +79 ià( +$checksum + % 10 == 0) { + +80  +Œue +; + +82  +çl£ +; + +85 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/Date.php + +1 +¬gs +[ +$¬g +])) { + +51  +$this +-> +¬gs +[ +$¬g +]; + +53  +nuÎ +; + +61 +public + +funùiÚ + + $__is£t +( +$¬g +) + +63  + `is£t +( +$this +-> +¬gs +[ +$¬g +]); + +64 + } +} + +73 +public + +funùiÚ + + $__£t +( +$¬g +, +$v®ue +) + +75 +$this +-> +¬gs +[ +$¬g +] = +$v®ue +; + +77  +$this +; + +78 + } +} + +86 +public + +funùiÚ + + $g‘Arg +( +$¬g +) + +88 iàÐ! + `is£t +( +$this +-> +¬gs +[ +$¬g +])) { + +89 +throw + +Ãw + + `Doùrše_V®id©Ü_Exû±iÚ +('UnknowÀÝtiÚ ' . +$¬g +); + +92  +$this +-> +¬gs +[ +$¬g +]; + +93 + } +} + +102 +public + +funùiÚ + + $£tArg +( +$¬g +, +$v®ue +) + +104 +$this +-> +¬gs +[ +$¬g +] = +$v®ue +; + +106  +$this +; + +107 + } +} + +114 +public + +funùiÚ + + $g‘Args +() + +116  +$this +-> +¬gs +; + +117 + } +} + +119 +public + +funùiÚ + + $__toSŒšg +() + +121 +$þassName + = + `g‘_þass +( +$this +); + +122 ià( + `¡½os +( +$þassName +, 'Doctrine_Validator_') === 0) { + +123  + `¡¹Þow” +( + `sub¡r +( +$þassName +, 19)); + +125  +$þassName +; + +127 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/Email.php + +1 +¬gs +è&& (! is£t($this->¬gs['check_mx']è|| $this->¬gs['check_mx'] =ð +Œue +)) { + +49 +$·¹s + = + `ex¶ode +('@', +$v®ue +); + +51 ià( + `is£t +( +$·¹s +[1]è&& $·¹s[1] && ! +$this +-> + `_checkMX +($parts[1])) { + +52  +çl£ +; + +56 +$e + = + `ex¶ode +('.', +$v®ue +); + +57 +$Žd + = + `’d +( +$e +); + +59 ià( + `´eg_m©ch +("/[^a-zA-Z]/", +$Žd +)) { + +60  +çl£ +; + +63 +$q‹xt + = '[^\\x0d\\x22\\x5c\\x80-\\xff]'; + +64 +$d‹xt + = '[^\\x0d\\x5b-\\x5d\\x80-\\xff]'; + +65 +$©om + = '[^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+'; + +66 +$quÙedPaœ + = '\\x5c[\\x00-\\x7f]'; + +67 +$domašL™”® + = "\\x5b($dtext|$quotedPair)*\\x5d"; + +68 +$quÙedSŒšg + = "\\x22($qtext|$quotedPair)*\\x22"; + +69 +$domašRef + = +$©om +; + +70 +$subDomaš + = "($domainRef|$domainLiteral)"; + +71 +$wÜd + = "($atom|$quotedString)"; + +72 +$domaš + = "$subDomain(\\x2e$subDomain)+"; + +82 +$loÿlP¬t + = "$word(\\x2e$word)*"; + +83 +$addrS³c + = "$localPart\\x40$domain"; + +85  ( +boÞ +è + `´eg_m©ch +("!^$addrS³c$!D", +$v®ue +); + +94 +´iv©e + +funùiÚ + + $_checkMX +( +$ho¡ +) + +97 ià( + `¡¹Þow” +( + `sub¡r +( +PHP_OS +, 0, 3)è=ð'wš' && + `v”siÚ_com·» +( +PHP_VERSION +, '5.3.0', '<')) { + +98 +$ouut + = + `¬¿y +(); + +100 @ + `exec +('n¦ooku°-ty³=MX '. + `esÿ³sh–lcmd +( +$ho¡ +è. ' 2>&1', +$ouut +); + +102 ià( + `em±y +( +$ouut +)) { + +103 +throw + +Ãw + + `Doùrše_Exû±iÚ +('Unableoƒxecute DNS†ookup. Are you sure PHP can callƒxec()?'); + +106 + `fܗch + ( +$ouut + +as + +$lše +) { + +107 ià( + `´eg_m©ch +('/^'. +$ho¡ +.'/', +$lše +)) { + +108  +Œue +; + +112  +çl£ +; + +113 } ià( + `funùiÚ_exi¡s +('checkdnsrr')) { + +114  + `checkdn¤r +( +$ho¡ +, 'MX'); + +117 +throw + +Ãw + + `Doùrše_Exû±iÚ +('Could‚ot„etrieve DNS„ecord information. Remove check_mx =rueo…reventhis warning'); + +118 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/ErrorStack.php + +1 + g_þassName + = +$þassName +; + +72 +public + +funùiÚ + +add +( +$šv®idF›ldName +, +$”rÜCode + = 'general') + +74 ià( +is_objeù +( +$”rÜCode +)) { + +75 iàÐ! ( +$”rÜCode + +š¡ªûof + +Doùrše_V®id©Ü_Driv” +)) { + +76 +throw + +Ãw + +Doùrše_Exû±iÚ +('Validators must be‡n instance of Doctrine_Validator_Driver'); + +78 + g$v®id©Ü + = +$”rÜCode +; + +79 + g$this +-> + g_v®id©Üs +[ +$šv®idF›ldName +][] = +$v®id©Ü +; + +80 + g$”rÜCode + = ( +¡ršg +è +$v®id©Ü +; + +83 + g$this +-> + g_”rÜs +[ +$šv®idF›ldName +][] = +$”rÜCode +; + +91 +public + +funùiÚ + +»move +( +$f›ldName +) + +93 ià( +is£t +( +$this +-> +_”rÜs +[ +$f›ldName +])) { + +94 +un£t +( +$this +-> +_”rÜs +[ +$f›ldName +]); + +95 ià( +is£t +( +$this +-> +_v®id©Üs +[ +$f›ldName +])) { + +96 +un£t +( +$this +-> +_v®id©Üs +[ +$f›ldName +]); + +107 +public + +funùiÚ + +g‘ +( +$f›ldName +) + +109  +is£t +( +$this +-> +_”rÜs +[ +$f›ldName +]è? + g$this +-> + g_”rÜs +[$f›ldName] : +nuÎ +; + +119 +public + +funùiÚ + +£t +( +$f›ldName +, +$”rÜCode +) + +121 + g$this +-> +add +( +$f›ldName +, +$”rÜCode +); + +130 +public + +funùiÚ + +cڏšs +( +$f›ldName +) + +132  +¬¿y_key_exi¡s +( +$f›ldName +, +$this +-> +_”rÜs +); + +140 +public + +funùiÚ + +þ—r +() + +142 + g$this +-> + g_”rÜs + = +¬¿y +(); + +143 + g$this +-> + g_v®id©Üs + = +¬¿y +(); + +151 +public + +funùiÚ + +g‘I‹¿tÜ +() + +153  +Ãw + +A¼ayI‹¿tÜ +( +$this +-> +_”rÜs +); + +156 +public + +funùiÚ + +toA¼ay +() + +158  + g$this +-> + g_”rÜs +; + +166 +public + +funùiÚ + +couÁ +() + +168  +couÁ +( +$this +-> +_”rÜs +); + +176 +public + +funùiÚ + +g‘CÏs¢ame +() + +178  + g$this +-> + g_þassName +; + +186 +public + +funùiÚ + +g‘V®id©Üs +() + +188  + g$this +-> + g_v®id©Üs +; + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/Exception.php + +1 + gšv®id + = +$šv®id +; + +46 + g·»Á +:: +__cÚ¡ruù +( +$this +-> +g’”©eMes§ge +()); + +49 +public + +funùiÚ + +g‘Inv®idRecÜds +() + +51  + g$this +-> + gšv®id +; + +54 +public + +funùiÚ + +g‘I‹¿tÜ +() + +56  +Ãw + +A¼ayI‹¿tÜ +( +$this +-> +šv®id +); + +59 +public + +funùiÚ + +couÁ +() + +61  +couÁ +( +$this +-> +šv®id +); + +67 +´iv©e + +funùiÚ + +g’”©eMes§ge +() + +69 + g$mes§ge + = ''; + +70 +fܗch + ( +$this +-> +šv®id + +as + +$»cÜd +) { + +71 + g$mes§ge + .ð +$»cÜd +-> +g‘E¼ÜSckAsSŒšg +(); + +73  + g$mes§ge +; + +83 +public + +funùiÚ + +š¥eù +( +$funùiÚ +) + +85 +fܗch + ( +$this +-> +šv®id + +as + +$»cÜd +) { + +86 +ÿÎ_u£r_func +( +$funùiÚ +, +$»cÜd +-> +g‘E¼ÜSck +()); + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/Future.php + +1 +¬gs +è&& + `is£t +($this->args['timezone'])) { + +53  + `¡¹Þow” +( +$this +-> +¬gs +['timezone'])) { + +55 +$now + = + `gmd©e +("U"è- + `d©e +("Z"); + +58 +$now + = + `g‘d©e +(); + +62 +$now + = + `g‘d©e +(); + +65 ià( +$now +['y—r'] > +$e +[0]) { + +66  +çl£ +; + +67 } ià( +$now +['y—r'] =ð +$e +[0]) { + +68 ià( +$now +['mÚ'] > +$e +[1]) { + +69  +çl£ +; + +70 } ià( +$now +['mÚ'] =ð +$e +[1]) { + +71  +$now +['mday'] < +$e +[2]; + +73  +Œue +; + +76  +Œue +; + +79 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/Htmlcolor.php + +1 +¬gs +è&& + `¡¾’ +( +$v®ue +) < $this->args) { + +47  +çl£ +; + +50  +Œue +; + +52 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/Nospace.php + +1 +¬gs +è&& + `is£t +($this->args['timezone'])) { + +53  + `¡¹Þow” +( +$this +-> +¬gs +['timezone'])) { + +55 +$now + = + `gmd©e +("U"è- + `d©e +("Z"); + +58 +$now + = + `g‘d©e +(); + +62 +$now + = + `g‘d©e +(); + +65 ià( +$now +['y—r'] < +$e +[0]) { + +66  +çl£ +; + +67 } ià( +$now +['y—r'] =ð +$e +[0]) { + +68 ià( +$now +['mÚ'] < +$e +[1]) { + +69  +çl£ +; + +70 } ià( +$now +['mÚ'] =ð +$e +[1]) { + +71  +$now +['mday'] > +$e +[2]; + +73  +Œue +; + +76  +Œue +; + +79 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/Range.php + +1 +¬gs +[0]è&& +$v®ue + < $this->args[0]) { + +47  +çl£ +; + +49 ià( + `is£t +( +$this +-> +¬gs +[1]è&& +$v®ue + > $this->args[1]) { + +50  +çl£ +; + +52  +Œue +; + +54 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/Readonly.php + +1 +švok” +-> + `g‘Modif›d +(); + +41  + `¬¿y_key_exi¡s +( +$this +-> +f›ld +, +$modif›d +è? +çl£ + : +Œue +; + +43 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/Regexp.php + +1 +¬gs +)) { + +48  +Œue +; + +50 ià( + `is_¬¿y +( +$this +-> +¬gs +)) { + +51 + `fܗch + ( +$this +-> +¬gs + +as + +$»gexp +) { + +52 iàÐ! + `´eg_m©ch +( +$»gexp +, +$v®ue +)) { + +53  +çl£ +; + +56  +Œue +; + +58 ià( + `´eg_m©ch +( +$this +-> +¬gs +, +$v®ue +)) { + +59  +Œue +; + +63  +çl£ +; + +65 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/Time.php + +1 = 0 && $hh <= 23) && + +61 ( +$mm + >= 0 && $mm <= 59) && + +62 ( +$ss + >= 0 && $ss <= 59) && + +63 ( +$tz_hh + >= -13 && $tz_hh <= 14) && + +64 ( +$tz_mm + >= 0 && $tz_mm <= 59) ; + +66 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/Timestamp.php + +1 + `v®id©e +( +$d©e +)) { + +58  +çl£ +; + +61 iàÐ! +$timeV®id©Ü +-> + `v®id©e +( +$time +)) { + +62  +çl£ +; + +65  +Œue +; + +67 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/Unique.php + +1 +švok” +-> + `g‘TabË +(); + +48 +$cÚn + = +$bË +-> + `g‘CÚÃùiÚ +(); + +49 +$pks + = +$bË +-> + `g‘Id’tif›rCÞumnNames +(); + +51 ià( + `is_¬¿y +( +$pks +)) { + +52  +$i + = 0, +$l + = + `couÁ +( +$pks +); $i < $l; $i++) { + +53 +$pks +[ +$i +] = +$cÚn +-> + `quÙeId’tif›r +($pks[$i]); + +56 +$pks + = + `im¶ode +(', ', $pks); + +59 +$sql + = 'SELECT ' . +$pks + . ' FROM ' . +$cÚn +-> + `quÙeId’tif›r +( +$bË +-> + `g‘TabËName +()) . ' WHERE '; + +61 ià( + `is_¬¿y +( +$this +-> +f›ld +)) { + +62 + `fܗch + ( +$this +-> +f›ld + +as + +$k + => +$v +) { + +63 +$this +-> +f›ld +[ +$k +] = +$cÚn +-> + `quÙeId’tif›r +( +$bË +-> + `g‘CÞumnName +( +$v +)); + +66 +$sql + .ð + `im¶ode +(' = ? AND ', +$this +-> +f›ld +) . ' = ?'; + +67 +$v®ues + = +$v®ue +; + +69 +$sql + .ð +$cÚn +-> + `quÙeId’tif›r +( +$bË +-> + `g‘CÞumnName +( +$this +-> +f›ld +)) . ' = ?'; + +70 +$v®ues + = + `¬¿y +(); + +71 +$v®ues +[] = +$v®ue +; + +77 +$¡©e + = +$this +-> +švok” +-> + `¡©e +(); + +78 iàÐ! ( +$¡©e + =ð +Doùrše_RecÜd +:: +STATE_TDIRTY + || $¡©=ðDoùrše_RecÜd:: +STATE_TCLEAN +)) { + +79 + `fܗch + (( +¬¿y +è +$bË +-> + `g‘Id’tif›rCÞumnNames +(è +as + +$pk +) { + +80 +$sql + .ð' AND ' . +$cÚn +-> + `quÙeId’tif›r +( +$pk +) . ' != ?'; + +81 +$pkF›ldName + = +$bË +-> + `g‘F›ldName +( +$pk +); + +82 +$v®ues +[] = +$this +-> +švok” +-> +$pkF›ldName +; + +86 ià( + `is£t +( +$this +-> +¬gs +è&& + `is_¬¿y +($this->args) && isset($this->args['where'])) { + +87 +$sql + .ð' AND ' . +$this +-> +¬gs +['where']; + +90 +$¡mt + = +$bË +-> + `g‘CÚÃùiÚ +()-> + `g‘Dbh +()-> + `´•¬e +( +$sql +); + +91 +$¡mt +-> + `execu‹ +( +$v®ues +); + +93  ( ! + `is_¬¿y +( +$¡mt +-> + `ãtch +())); + +95 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/Unsigned.php + +1 = 0) + +55  +Œue +; + +58  +çl£ +; + +60 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Validator/Usstate.php + +1 +Œue +, + +37 'AL' => +Œue +, + +38 'AR' => +Œue +, + +39 'AZ' => +Œue +, + +40 'CA' => +Œue +, + +41 'CO' => +Œue +, + +42 'CT' => +Œue +, + +43 'DC' => +Œue +, + +44 'DE' => +Œue +, + +45 'FL' => +Œue +, + +46 'GA' => +Œue +, + +47 'HI' => +Œue +, + +48 'IA' => +Œue +, + +49 'ID' => +Œue +, + +50 'IL' => +Œue +, + +51 'IN' => +Œue +, + +52 'KS' => +Œue +, + +53 'KY' => +Œue +, + +54 'LA' => +Œue +, + +55 'MA' => +Œue +, + +56 'MD' => +Œue +, + +57 'ME' => +Œue +, + +58 'MI' => +Œue +, + +59 'MN' => +Œue +, + +60 'MO' => +Œue +, + +61 'MS' => +Œue +, + +62 'MT' => +Œue +, + +63 'NC' => +Œue +, + +64 'ND' => +Œue +, + +65 'NE' => +Œue +, + +66 'NH' => +Œue +, + +67 'NJ' => +Œue +, + +68 'NM' => +Œue +, + +69 'NV' => +Œue +, + +70 'NY' => +Œue +, + +71 'OH' => +Œue +, + +72 'OK' => +Œue +, + +73 'OR' => +Œue +, + +74 'PA' => +Œue +, + +75 'PR' => +Œue +, + +76 'RI' => +Œue +, + +77 'SC' => +Œue +, + +78 'SD' => +Œue +, + +79 'TN' => +Œue +, + +80 'TX' => +Œue +, + +81 'UT' => +Œue +, + +82 'VA' => +Œue +, + +83 'VI' => +Œue +, + +84 'VT' => +Œue +, + +85 'WA' => +Œue +, + +86 'WI' => +Œue +, + +87 'WV' => +Œue +, + +88 'WY' => +Œue + + +90 +public + +funùiÚ + + $g‘S‹s +() + +92  +£lf +:: +$¡©es +; + +101 +public + +funùiÚ + + $v®id©e +( +$v®ue +) + +103 ià( + `is_nuÎ +( +$v®ue +)) { + +104  +Œue +; + +106  + `is£t +( +£lf +:: +$¡©es +[ +$v®ue +]); + +107 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/View.php + +1 +_Çme + = +$v›wName +; + +85 +$this +-> +_qu”y + = +$qu”y +; + +86 +$this +-> +_qu”y +-> + `£tV›w +($this); + +87 +$this +-> +_cÚn + = +$qu”y +-> + `g‘CÚÃùiÚ +(); + +88 +$this +-> +_dql + = +$qu”y +-> + `g‘Dql +(); + +89 +$this +-> +_sql + = +$qu”y +-> + `g‘SqlQu”y +(); + +97 +public + +funùiÚ + + $g‘Qu”y +() + +99  +$this +-> +_qu”y +; + +100 + } +} + +107 +public + +funùiÚ + + $g‘Name +() + +109  +$this +-> +_Çme +; + +110 + } +} + +117 +public + +funùiÚ + + $g‘CÚÃùiÚ +() + +119  +$this +-> +_cÚn +; + +120 + } +} + +128 +public + +funùiÚ + + $ü—‹ +() + +130 +$sql + = + `¥rštf +( +£lf +:: +CREATE +, +$this +-> +_Çme +, $this-> +_qu”y +-> + `g‘SqlQu”y +()); + +131 +Œy + { + +132 +$this +-> +_cÚn +-> + `execu‹ +( +$sql +, $this-> +_qu”y +-> + `g‘Fω’edP¬ams +()); + +133 } + `ÿtch +( +Doùrše_Exû±iÚ + +$e +) { + +134 +throw + +Ãw + + `Doùrše_V›w_Exû±iÚ +( +$e +-> + `__toSŒšg +()); + +136 + } +} + +144 +public + +funùiÚ + + $drÝ +() + +146 +Œy + { + +147 +$this +-> +_cÚn +-> + `execu‹ +( + `¥rštf +( +£lf +:: +DROP +, $this-> +_Çme +)); + +148 } + `ÿtch +( +Doùrše_Exû±iÚ + +$e +) { + +149 +throw + +Ãw + + `Doùrše_V›w_Exû±iÚ +( +$e +-> + `__toSŒšg +()); + +151 + } +} + +158 +public + +funùiÚ + + $execu‹ +() + +160  +$this +-> +_qu”y +-> + `execu‹ +(); + +161 + } +} + +168 +public + +funùiÚ + + $g‘S–eùSql +() + +170  + `¥rštf +( +£lf +:: +SELECT +, +$this +-> +_Çme +); + +171 + } +} + +178 +public + +funùiÚ + + $g‘V›wSql +() + +180  +$this +-> +_sql +; + +181 + } +} + +188 +public + +funùiÚ + + $g‘V›wDql +() + +190  +$this +-> +_dql +; + +191 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/View/Exception.php + +1 + `addRequœedO±iÚ +('model'); + +55 +$this +-> + `addO±iÚ +('add_em±y', +çl£ +); + +56 +$this +-> + `addO±iÚ +('method', '__toString'); + +57 +$this +-> + `addO±iÚ +('key_method', 'getPrimaryKey'); + +58 +$this +-> + `addO±iÚ +('Üd”_by', +nuÎ +); + +59 +$this +-> + `addO±iÚ +('qu”y', +nuÎ +); + +60 +$this +-> + `addO±iÚ +('muɝË', +çl£ +); + +61 +$this +-> + `addO±iÚ +('bË_m‘hod', +nuÎ +); + +63 +·»Á +:: + `cÚfigu» +( +$ÝtiÚs +, +$©Œibu‹s +); + +64 + } +} + +71 +public + +funùiÚ + + $g‘Choiûs +() + +73 +$choiûs + = + `¬¿y +(); + +74 ià( +çl£ + !=ð +$this +-> + `g‘O±iÚ +('add_empty')) + +76 +$choiûs +[''] = +Œue + ==ð +$this +-> + `g‘O±iÚ +('add_em±y'è? '' : $this-> + `Œª¦©e +($this->getOption('add_empty')); + +79 ià( +nuÎ + ==ð +$this +-> + `g‘O±iÚ +('table_method')) + +81 +$qu”y + = +nuÎ + ==ð +$this +-> + `g‘O±iÚ +('qu”y'è? +Doùrše_CÜe +:: + `g‘TabË +($this->g‘O±iÚ('mod–'))-> + `ü—‹Qu”y +() : $this->getOption('query'); + +82 ià( +$Üd” + = +$this +-> + `g‘O±iÚ +('order_by')) + +84 +$qu”y +-> + `addOrd”By +( +$Üd” +[0] . ' ' . $order[1]); + +86 +$objeùs + = +$qu”y +-> + `execu‹ +(); + +90 +$bËM‘hod + = +$this +-> + `g‘O±iÚ +('table_method'); + +91 +$»suÉs + = +Doùrše_CÜe +:: + `g‘TabË +( +$this +-> + `g‘O±iÚ +('mod–'))-> + `$bËM‘hod +(); + +93 ià( +$»suÉs + +š¡ªûof + +Doùrše_Qu”y +) + +95 +$objeùs + = +$»suÉs +-> + `execu‹ +(); + +97 ià( +$»suÉs + +š¡ªûof + +Doùrše_CÞËùiÚ +) + +99 +$objeùs + = +$»suÉs +; + +101 ià( +$»suÉs + +š¡ªûof + +Doùrše_RecÜd +) + +103 +$objeùs + = +Ãw + + `Doùrše_CÞËùiÚ +( +$this +-> + `g‘O±iÚ +('model')); + +104 +$objeùs +[] = +$»suÉs +; + +108 +$objeùs + = + `¬¿y +(); + +112 +$m‘hod + = +$this +-> + `g‘O±iÚ +('method'); + +113 +$keyM‘hod + = +$this +-> + `g‘O±iÚ +('key_method'); + +115 + `fܗch + ( +$objeùs + +as + +$objeù +) + +117 +$choiûs +[ +$objeù +-> + `$keyM‘hod +()] = $objeù-> + `$m‘hod +(); + +120  +$choiûs +; + +121 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/bin/coverage.php + +1 + gba£_dœ + = +»®·th +( +dœÇme +( +__FILE__ +).'/..'); + +20 + g$h +-> +»gi¡”_glob +( +$h +-> +ba£_dœ +.'/unit/*/*Test.php'); + +21 + g$h +-> +»gi¡”_glob +( +$h +-> +ba£_dœ +.'/unit/*/*/*Test.php'); + +24 + g$h +-> +»gi¡”_glob +( +$h +-> +ba£_dœ +.'/functional/*Test.php'); + +25 + g$h +-> +»gi¡”_glob +( +$h +-> +ba£_dœ +.'/functional/*/*Test.php'); + +27 + g$c + = +Ãw + +lime_cov”age +( +$h +); + +28 + g$c +-> + gex‹nsiÚ + = '.class.php'; + +29 + g$c +-> + gv”bo£ + = +çl£ +; + +30 + g$c +-> + gba£_dœ + = +»®·th +( +dœÇme +( +__FILE__ +).'/../lib'); + +32 + g$fšd” + = +sfFšd” +:: +ty³ +('fže')-> +Çme +('*.php')-> +´uà +('vendor')->prune('test')->prune('data'); + +33 + g$c +->( + g$fšd” +-> +š +( +$c +-> +ba£_dœ +)); + +34 + g$c +-> +run +(); + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/bin/prove.php + +1 + gba£_dœ + = +»®·th +( +dœÇme +( +__FILE__ +).'/..'); + +19 + g$h +->( + gsfFšd” +:: +ty³ +('fže')-> +´uà +('fixtu»s')-> +Çme +('*Te¡.php')-> +š +( +¬¿y +( + +21 +$h +-> +ba£_dœ +.'/unit', + +23 +$h +-> +ba£_dœ +.'/functional' + +26 +ex™ +( +$h +-> +run +() ? 0 : 1); + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/bootstrap/functional.php + +1 +š™ŸlizeDoùrše +(); + +27 ià( + $is£t +( +$fixtu»s +)) + +29 +$cÚfigu¿tiÚ +-> + `lßdFixtu»s +( +$fixtu»s +); + +30 + } +} + +32 +funùiÚ + + $sf_funùiÚ®_‹¡_shutdown_þ—nup +() + +34 +sfToÞk™ +:: + `þ—rDœeùÜy +( +sfCÚfig +:: + `g‘ +('sf_cache_dir')); + +35 +sfToÞk™ +:: + `þ—rDœeùÜy +( +sfCÚfig +:: + `g‘ +('sf_log_dir')); + +36 +$d©aba£s + = + `glob +( +sfCÚfig +:: + `g‘ +('sf_data_dir') . '/*.sqlite'); + +37 + `fܗch + ( +$d©aba£s + +as + +$d©aba£ +) + +39 + `uƚk +( +$d©aba£ +); + +41 + } +} + +43 +funùiÚ + + $sf_funùiÚ®_‹¡_shutdown +() + +46 +Œy + + +48 + `sf_funùiÚ®_‹¡_shutdown_þ—nup +(); + +50 + `ÿtch + ( +Exû±iÚ + +$e +) + +52 +echo + +$e +. +PHP_EOL +; + +54 + } +} + +56  + gŒue +; + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/bootstrap/unit.php + +1 +addDœeùÜy +( +»®·th +( +dœÇme +( +__FILE__ +).'/../../lib')); + +16 + g$autÞßd +->(); + +18 + g$_‹¡_dœ + = +»®·th +( +dœÇme +( +__FILE__ +).'/..'); + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/ActionRedirectTest.php + +1 +g‘ +('/articles/redirectToShow') + +18 -> +w™h +('»¥Ú£')-> +begš +() + +19 -> +isRedœeùed +() + +20 -> +’d +() + +21 -> +fÞlowRedœeù +() + +22 -> +w™h +('»que¡')-> +begš +() + +23 -> +isP¬am‘” +('module', 'articles') + +24 -> +isP¬am‘” +('action', 'show') + +25 -> +’d +() + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/AdminGenBrowser.class.php + +1 'articles', + +9 +public + +funùiÚ + + $__cÚ¡ruù +() + +11 +·»Á +:: + `__cÚ¡ruù +(); + +12 +$this +-> + `£tTe¡” +('doctrine', 'sfTesterDoctrine'); + +14 +$this +-> + `_g’”©eAdmšG’ModuËs +(); + +17 +public + +funùiÚ + + $runTe¡s +() + +19 +$this +-> + `šfo +('Run sfDoctrinePlugin Admin Generator Tests'); + +21 +$m‘hods + = + `g‘_þass_m‘hods +( +$this +); + +22 + `fܗch + ( +$m‘hods + +as + +$m‘hod +) + +24 ià( + `sub¡r +( +$m‘hod +, 0, 5) == '_test') + +26 +$this +-> + `$m‘hod +(); + +29 + } +} + +31 +´Ùeùed + +funùiÚ + + $_‹¡V®idSÜt +() + +33 +$this +-> + `šfo +('Test valid sort…arameter'); + +35 +$this +-> + `g‘ +('/users?sort=username'); + +37 +$m©ches + = 0; + +38 + `fܗch + ( +$this +-> + `_g‘Qu”yExecutiÚEv’ts +(è +as + +$ev’t +) + +40 ià( +çl£ + !=ð + `¡½os +( +$ev’t +-> + `g‘Qu”y +(), 'ORDER BY u.username‡sc')) + +42 ++ +$m©ches +; + +46 +$this +-> + `‹¡ +()-> + `is +( +$m©ches +, 1); + +47 + } +} + +49 +´Ùeùed + +funùiÚ + + $_‹¡Inv®idSÜt +() + +51 +$this +-> + `šfo +('Test invalid sort…arameter'); + +53 +$this +-> + `g‘ +('/users?sort=INVALID'); + +56 + `fܗch + ( +$this +-> + `_g‘Qu”yExecutiÚEv’ts +(è +as + +$ev’t +) + +58 +$this +-> + `‹¡ +()-> + `uÆike +( +$ev’t +-> + `g‘Qu”y +(), '/INVALID/'); + +60 + } +} + +62 +´Ùeùed + +funùiÚ + + $_‹¡V®idSÜtTy³ +() + +64 +$this +-> + `šfo +('Test valid sort_type…arameter'); + +66 + `fܗch + ( + `¬¿y +('asc', 'desc', 'ASC', 'DESC'è +as + +$sÜtTy³ +) + +68 +$this +-> + `g‘ +('/u£rs?sÜt=u£ºame&sÜt_ty³='. +$sÜtTy³ +); + +70 +$m©ches + = 0; + +71 + `fܗch + ( +$this +-> + `_g‘Qu”yExecutiÚEv’ts +(è +as + +$ev’t +) + +73 ià( +çl£ + !=ð + `¡½os +( +$ev’t +-> + `g‘Qu”y +(), 'ORDER BY u.u£ºam'. +$sÜtTy³ +)) + +75 ++ +$m©ches +; + +79 +$this +-> + `‹¡ +()-> + `is +( +$m©ches +, 1); + +81 + } +} + +83 +´Ùeùed + +funùiÚ + + $_‹¡Inv®idSÜtTy³ +() + +85 +$this +-> + `šfo +('Test invalid sort_type…arameter'); + +87 +$this +-> + `g‘ +('/users?sort=username&sort_type=INVALID'); + +90 + `fܗch + ( +$this +-> + `_g‘Qu”yExecutiÚEv’ts +(è +as + +$ev’t +) + +92 +$this +-> + `‹¡ +()-> + `uÆike +( +$ev’t +-> + `g‘Qu”y +(), '/INVALID/'); + +94 + } +} + +96 +´Ùeùed + +funùiÚ + + $_‹¡Sª™yCheck +() + +98 +$this +-> + `šfo +('Admin Generator Sanity Checks'); + +100 + `fܗch + ( +$this +-> +_moduËs + +as + +$mod– + => +$moduË +) + +102 +$this +-> + `_runAdmšG’ModuËSª™yCheck +( +$mod– +, +$moduË +); + +104 + } +} + +106 +´Ùeùed + +funùiÚ + + $_‹¡AdmšG’TabËM‘hod +() + +108 +$this +-> + +109 + `g‘ +('/my_articles')-> + +110 + `w™h +('»¥Ú£')-> + `isStusCode +('200') + +112 + } +} + +114 +´Ùeùed + +funùiÚ + + $_‹¡A¹iþeI18nEmbedded +() + +116 +$this +-> + `šfo +('Testing "articles" moduleƒmbeds I18n'); + +118 +$šfo + = + `¬¿y +('authÜ_id' => 1, 'is_Ú_hom•age' => +çl£ +, 'en' =>‡rray('title' => 'Test Englishitle', 'body' => 'Test English body'), 'fr' =>‡rray('title' => 'Test Frenchitle', 'body' => 'Test French body'), 'created_at' =>‡rray('month' => '1', 'day' => '12', 'year' => '2009', 'hour' => '10', 'minute' => '03'), 'updated_at' =>‡rray('month' => '1', 'day' => '12', 'year' => '2009', 'hour' => '10', 'minute' => '03')); + +120 +$this +-> + +121 + `g‘ +('/articles/new')-> + +122 + `w™h +('»¥Ú£')-> + `begš +()-> + +123 + `m©ches +('/En/')-> + +124 + `m©ches +('/Fr/')-> + +125 + `m©ches +('/Title/')-> + +126 + `m©ches +('/Body/')-> + +127 + `m©ches +('/Slug/')-> + +128 + `m©ches +('/Jonathan H. Wage/')-> + +129 + `m©ches +('/Fabien POTENCIER/')-> + +130 + `’d +()-> + +131 + `w™h +('»que¡')-> + `begš +()-> + +132 + `isP¬am‘” +('module', 'articles')-> + +133 + `isP¬am‘” +('action', 'new')-> + +134 + `’d +()-> + +135 + `þick +('Save', + `¬¿y +('¬tiþe' => +$šfo +))-> + +136 + `w™h +('»¥Ú£')-> + `begš +()-> + +137 + `isRedœeùed +()-> + +138 + `fÞlowRedœeù +()-> + +139 + `’d +()-> + +140 + `w™h +('doùrše')-> + `begš +()-> + +141 + `check +('A¹iþe', + `¬¿y +('is_Ú_hom•age' => +$šfo +['is_on_homepage']))-> + +142 + `check +('A¹iþeT¿n¦©iÚ', + `¬¿y +('lang' => 'fr', 'title' => 'Test Frenchitle'))-> + +143 + `check +('A¹iþeT¿n¦©iÚ', + `¬¿y +('lang' => 'en', 'title' => 'Test Englishitle'))-> + +144 + `’d +() + +146 + } +} + +148 +´Ùeùed + +funùiÚ + + $_‹¡EnumDrÝdown +() + +150 +$this +-> + `šfo +('Testƒnum columnype uses‡ dropdown‡she widget'); + +152 +$this +-> + +153 + `g‘ +('/subscriptions/new')-> + +154 + `w™h +('»¥Ú£')-> + `begš +()-> + +155 + `checkEËm’t +('select', 'NewActivePendingExpired')-> + +156 + `’d +() + +158 + } +} + +160 +´Ùeùed + +funùiÚ + + $_‹¡U£rEmbedsProfžeFÜm +() + +162 +$this +-> + `šfo +('Test user formƒmbedshe…rofile form'); + +164 +$this +-> + +165 + `g‘ +('/users/new')-> + +166 + `w™h +('»¥Ú£')-> + `begš +()-> + +167 + `m©ches +('/Profile/')-> + +168 + `m©ches +('/First‚ame/')-> + +169 + `m©ches +('/Last‚ame/')-> + +170 + `’d +() + +173 +$this +-> + `šfo +('Testhe Profile form saves‡nd‡ttachedo user…roperly'); + +175 +$u£rInfo + = + `¬¿y +( + +176 'u£r' => + `¬¿y +( + +179 'groups_li¡' => + `¬¿y +(1, 2), + +180 '³rmissiÚs_li¡' => + `¬¿y +(3, 4), + +181 'Profže' => + `¬¿y +( + +188 +$this +-> + `þick +('Save', +$u£rInfo +); + +190 +$u£r + = +Doùrše_CÜe +:: + `g‘TabË +('U£r')-> + `fšdOÃByU£ºame +( +$u£rInfo +['user']['username']); + +191 +$u£rInfo +['u£r']['Profže']['u£r_id'] = +$u£r +-> +id +; + +193 +$this +-> + +194 + `w™h +('»¥Ú£')-> + `begš +()-> + +195 + `isRedœeùed +()-> + +196 + `fÞlowRedœeù +()-> + +197 + `’d +()-> + +198 + `w™h +('doùrše')-> + `begš +()-> + +199 + `check +('U£r', + `¬¿y +('u£ºame' => +$u£rInfo +['user']['username']))-> + +200 + `check +('Profže', +$u£rInfo +['user']['Profile'])-> + +201 + `check +('U£rGroup', + `¬¿y +('u£r_id' => +$u£r +-> +id +, 'group_id' => $u£r-> +Groups +[0]->id))-> + +202 + `check +('U£rGroup', + `¬¿y +('u£r_id' => +$u£r +-> +id +, 'group_id' => $u£r-> +Groups +[1]->id))-> + +203 + `check +('U£rP”missiÚ', + `¬¿y +('u£r_id' => +$u£r +-> +id +, '³rmissiÚ_id' => $u£r-> +P”missiÚs +[0]->id))-> + +204 + `check +('U£rP”missiÚ', + `¬¿y +('u£r_id' => +$u£r +-> +id +, '³rmissiÚ_id' => $u£r-> +P”missiÚs +[1]->id))-> + +205 + `’d +() + +208 + `un£t +( +$u£rInfo +['user']['Profile']['user_id']); + +209 +$‹¡” + = +$this +-> + `g‘ +('/users/new')-> + +210 + `þick +('Save', +$u£rInfo +)-> + +211 + `w™h +('fÜm')-> + `begš +(); + +212 +$‹¡” +-> + `hasE¼Üs +(); + +213 +$fÜm + = +$‹¡” +-> + `g‘FÜm +(); + +214 +$this +-> + `‹¡ +()-> + `is +(( +¡ršg +è +$fÜm +-> + `g‘E¼ÜSchema +(), 'username [An object withhe same "username"‡lreadyƒxist.]', 'Check username gives uniqueƒrror'); + +215 +$‹¡” +-> + `’d +(); + +216 + } +} + +218 +´Ùeùed + +funùiÚ + + $_runAdmšG’ModuËSª™yCheck +( +$mod– +, +$moduË +) + +220 +$this +-> + `šfo +('Rušg‡dmš g’ sª™y check fÜ moduË "' . +$moduË + . '"'); + +221 +$»cÜd + = +Doùrše_CÜe +:: + `g‘TabË +( +$mod– +) + +222 -> + `ü—‹Qu”y +('a') + +223 -> + `ãtchOà +(); + +225 +$this +-> + +226 + `šfo +('Sª™y check oÀ"' . +$moduË + . '" module')-> + +227 + `g‘AndCheck +( +$moduË +, 'index', '/' . $module)-> + +228 + `g‘ +('/' . +$moduË + . '/' . +$»cÜd +-> + `g‘Id +() . '/edit'); + +230 +$this + + +231 -> + `þick +('Save')-> + +232 + `w™h +('»¥Ú£')-> + `begš +()-> + +233 + `isRedœeùed +()-> + +234 + `fÞlowRedœeù +()-> + +235 + `’d +() + +237 + } +} + +239 +´Ùeùed + +funùiÚ + + $_g’”©eAdmšG’ModuË +( +$mod– +, +$moduË +) + +241 +$this +-> + `šfo +('G’”©šg‡dmš g’ moduË "' . +$moduË + . '"'); + +242 +$sk + = +Ãw + + `sfDoùršeG’”©eAdmšTask +( +$this +-> + `g‘Cڋxt +()-> + `g‘Ev’tDi¥©ch” +(),‚ew + `sfFÜm©‹r +()); + +243 +$sk +-> + `run +( + `¬¿y +('­¶iÿtiÚ' => 'back’d', 'rou‹_Ü_mod–' => +$mod– +)); + +244 + } +} + +246 +´Ùeùed + +funùiÚ + + $_g’”©eAdmšG’ModuËs +() + +252 + `fܗch + ( +$this +-> +_moduËs + +as + +$mod– + => +$moduË +) + +254 +$this +-> + `_g’”©eAdmšG’ModuË +( +$mod– +, +$moduË +); + +256 + } +} + +258 +´Ùeùed + +funùiÚ + + $_þ—nupAdmšG’ModuËs +() + +260 +$fs + = +Ãw + + `sfFžesy¡em +( +$this +-> + `g‘Cڋxt +()-> + `g‘Ev’tDi¥©ch” +(),‚ew + `sfFÜm©‹r +()); + +261 + `fܗch + ( +$this +-> +_moduËs + +as + +$moduË +) + +263 +$this +-> + `šfo +('Removšg‡dmš g’ moduË "' . +$moduË + . '"'); + +264 +$fs +-> + `execu‹ +('rm -rà' . +sfCÚfig +:: + `g‘ +('sf_­p_moduË_dœ'è. '/' . +$moduË +); + +266 +$fs +-> + `execu‹ +('rm -rà' . +sfCÚfig +:: + `g‘ +('sf_test_dir') . '/functional/backend'); + +267 +$fs +-> + `execu‹ +('rm -rà' . +sfCÚfig +:: + `g‘ +('sf_data_dir') . '/*.sqlite'); + +268 + } +} + +270 +´Ùeùed + +funùiÚ + + $_g‘Qu”yExecutiÚEv’ts +() + +272 +$ev’ts + = + `¬¿y +(); + +274 +$d©aba£Mªag” + = +$this +-> +brow£r +-> + `g‘Cڋxt +()-> + `g‘D©aba£Mªag” +(); + +275 + `fܗch + ( +$d©aba£Mªag” +-> + `g‘Names +(è +as + +$Çme +) + +277 +$d©aba£ + = +$d©aba£Mªag” +-> + `g‘D©aba£ +( +$Çme +); + +278 ià( +$d©aba£ + +š¡ªûof + +sfDoùršeD©aba£ + && +$´ofž” + = $d©aba£-> + `g‘Profž” +()) + +280 + `fܗch + ( +$´ofž” +-> + `g‘Qu”yExecutiÚEv’ts +(è +as + +$ev’t +) + +282 +$ev’ts +[ +$ev’t +-> + `g‘Sequ’û +()] = $event; + +287 + `ksÜt +( +$ev’ts +); + +289  + `¬¿y_v®ues +( +$ev’ts +); + +290 + } +} + +292 +public + +funùiÚ + + $__de¡ruù +() + +294 +$this +-> + `_þ—nupAdmšG’ModuËs +(); + +295 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/AdminGenTest.php + +1 +runTe¡s +(); + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/EnvironmentSetupTest.php + +1 +äom +('Author‡'); + +20 + g$»suÉs + = +$q +-> +ãtchA¼ay +(); + +22 + g$t +-> +is +( +couÁ +( +$»suÉs +), 2); + +23 + g$t +-> +is +( +$»suÉs +[0]['name'], 'Jonathan H. Wage'); + +24 + g$t +-> +is +( +$»suÉs +[1]['name'], 'Fabien POTENCIER'); + +27 + g$q + = +Doùrše_Qu”y +:: +ü—‹ +() + +28 -> +äom +('Article‡') + +29 -> +ËáJoš +('a.Translation'); + +31 + g$¬tiþes + = +$q +-> +ãtchA¼ay +(); + +32 + g$t +-> +is +( +$¬tiþes +[0]['Translation']['en']['title'], 'English Title'); + +34 + g$mªag” + = +Doùrše_Mªag” +:: +g‘In¡ªû +(); + +35 + g$cÚn1 + = +$mªag” +-> +g‘CÚÃùiÚ +('doctrine1'); + +36 + g$cÚn2 + = +$mªag” +-> +g‘CÚÃùiÚ +('doctrine2'); + +37 + g$cÚn3 + = +$mªag” +-> +g‘CÚÃùiÚ +('doctrine3'); + +40 + g$t +-> +is +( +couÁ +( +$mªag” +), 3); + +41 + g$t +-> +is +( +$cÚn1 +-> +g‘O±iÚ +('d¢'), 'sql™e:' . +¡r_»¶aû +( +DIRECTORY_SEPARATOR +, '/', +sfCÚfig +:: +g‘ +('sf_data_dir')) . '/database1.sqlite'); + +42 + g$t +-> +is +( +$cÚn2 +-> +g‘O±iÚ +('d¢'), 'sql™e:' . +¡r_»¶aû +( +DIRECTORY_SEPARATOR +, '/', +sfCÚfig +:: +g‘ +('sf_data_dir')) . '/database2.sqlite'); + +43 + g$t +-> +is +( +$cÚn3 +-> +g‘O±iÚ +('d¢'), 'sql™e:' . +¡r_»¶aû +( +DIRECTORY_SEPARATOR +, '/', +sfCÚfig +:: +g‘ +('sf_data_dir')) . '/database3.sqlite'); + +46 + g$t +-> +is +( +$mªag” +-> +g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_VALIDATE +), +Œue +); + +49 + g$t +-> +is +( +$cÚn2 +-> +g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_VALIDATE +), +çl£ +); + +52 + g$t +-> +is +( +$cÚn3 +-> +g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_EXPORT +), Doùrše_CÜe:: +EXPORT_TABLES +); + +54 + g$¬tiþe + = +Ãw + +ReæeùiÚCÏss +('Article'); + +55 + g$·»Á + = +Ãw + +ReæeùiÚCÏss +('myDoctrineRecord'); + +56 + g$t +-> +is +( +$¬tiþe +-> +isSubþassOf +( +$·»Á +), +Œue +); + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/FormGeneratorTest.php + +1 +dŸg +("Testhathese models don't generate forms or filters classes"); + +18 + g$noFÜmsOrFž‹rs + = +¬¿y +('UserGroup', 'UserPermission', 'GroupPermission'); + +19 + $fܗch + ( +$noFÜmsOrFž‹rs + +as + +$mod– +) + +21 +$t +-> + `is +( + `fže_exi¡s +( +sfCÚfig +:: + `g‘ +('sf_lib_dœ').'/fÜm/doùrše/'. +$mod– +.'FÜm.þass.php'), +çl£ +); + +22 +$t +-> + `is +( + `fže_exi¡s +( +sfCÚfig +:: + `g‘ +('sf_lib_dœ').'/fÜm/doùrše/ba£/Ba£'. +$mod– +.'FÜm.þass.php'), +çl£ +); + +23 +$t +-> + `is +( + `fže_exi¡s +( +sfCÚfig +:: + `g‘ +('sf_lib_dœ').'/fž‹r/doùrše/'. +$mod– +.'FÜmFž‹r.þass.php'), +çl£ +); + +24 +$t +-> + `is +( + `fže_exi¡s +( +sfCÚfig +:: + `g‘ +('sf_lib_dœ').'/fž‹r/doùrše/ba£/Ba£'. +$mod– +.'FÜmFž‹r.þass.php'), +çl£ +); + +25 + } +} + +27 + g$t +-> +dŸg +('FormGeneratorTest model should generate forms but‚ot filters'); + +28 + g$t +-> +is +( +fže_exi¡s +( +sfCÚfig +:: +g‘ +('sf_lib_dœ').'/fÜm/doùrše/FÜmG’”©ÜTe¡FÜm.þass.php'), +Œue +); + +29 + g$t +-> +is +( +fže_exi¡s +( +sfCÚfig +:: +g‘ +('sf_lib_dœ').'/fÜm/doùrše/ba£/Ba£FÜmG’”©ÜTe¡FÜm.þass.php'), +Œue +); + +31 + g$t +-> +is +( +fže_exi¡s +( +sfCÚfig +:: +g‘ +('sf_lib_dœ').'/fž‹r/doùrše/FÜmG’”©ÜTe¡FÜmFž‹r.þass.php'), +çl£ +); + +32 + g$t +-> +is +( +fže_exi¡s +( +sfCÚfig +:: +g‘ +('sf_lib_dœ').'/fž‹r/doùrše/ba£/Ba£FÜmG’”©ÜTe¡FÜmFž‹r.þass.php'), +çl£ +); + +34 + g$t +-> +dŸg +('FormGeneratorTest2 model should generate filters but‚ot forms'); + +35 + g$t +-> +is +( +fže_exi¡s +( +sfCÚfig +:: +g‘ +('sf_lib_dœ').'/fÜm/doùrše/FÜmG’”©ÜTe¡2FÜm.þass.php'), +çl£ +); + +36 + g$t +-> +is +( +fže_exi¡s +( +sfCÚfig +:: +g‘ +('sf_lib_dœ').'/fÜm/doùrše/ba£/Ba£FÜmG’”©ÜTe¡2FÜm.þass.php'), +çl£ +); + +38 + g$t +-> +is +( +fže_exi¡s +( +sfCÚfig +:: +g‘ +('sf_lib_dœ').'/fž‹r/doùrše/FÜmG’”©ÜTe¡2FÜmFž‹r.þass.php'), +Œue +); + +39 + g$t +-> +is +( +fže_exi¡s +( +sfCÚfig +:: +g‘ +('sf_lib_dœ').'/fž‹r/doùrše/ba£/Ba£FÜmG’”©ÜTe¡2FÜmFž‹r.þass.php'), +Œue +); + +41 + g$t +-> +dŸg +('FormGeneratorTest3 model should‚ot generate forms or filters'); + +42 + g$t +-> +is +( +fže_exi¡s +( +sfCÚfig +:: +g‘ +('sf_lib_dœ').'/fÜm/doùrše/FÜmG’”©ÜTe¡3FÜm.þass.php'), +çl£ +); + +43 + g$t +-> +is +( +fže_exi¡s +( +sfCÚfig +:: +g‘ +('sf_lib_dœ').'/fÜm/doùrše/ba£/Ba£FÜmG’”©ÜTe¡3FÜm.þass.php'), +çl£ +); + +45 + g$t +-> +is +( +fže_exi¡s +( +sfCÚfig +:: +g‘ +('sf_lib_dœ').'/fž‹r/doùrše/FÜmG’”©ÜTe¡3FÜmFž‹r.þass.php'), +çl£ +); + +46 + g$t +-> +is +( +fže_exi¡s +( +sfCÚfig +:: +g‘ +('sf_lib_dœ').'/fž‹r/doùrše/ba£/Ba£FÜmG’”©ÜTe¡3FÜmFž‹r.þass.php'), +çl£ +); + +48 + g$t +-> +dŸg +('FormGeneratorTest3Translation‚ot generate forms or filters'); + +49 + g$t +-> +is +( +fže_exi¡s +( +sfCÚfig +:: +g‘ +('sf_lib_dœ').'/fÜm/doùrše/FÜmG’”©ÜTe¡3T¿n¦©iÚFÜm.þass.php'), +çl£ +); + +50 + g$t +-> +is +( +fže_exi¡s +( +sfCÚfig +:: +g‘ +('sf_lib_dœ').'/fÜm/doùrše/ba£/Ba£FÜmG’”©ÜTe¡3T¿n¦©iÚFÜm.þass.php'), +çl£ +); + +52 + g$t +-> +is +( +fže_exi¡s +( +sfCÚfig +:: +g‘ +('sf_lib_dœ').'/fž‹r/doùrše/FÜmG’”©ÜTe¡3T¿n¦©iÚFÜmFž‹r.þass.php'), +çl£ +); + +53 + g$t +-> +is +( +fže_exi¡s +( +sfCÚfig +:: +g‘ +('sf_lib_dœ').'/fž‹r/doùrše/ba£/Ba£FÜmG’”©ÜTe¡3T¿n¦©iÚFÜmFž‹r.þass.php'), +çl£ +); + +55 + g$t +-> +dŸg +('Check form generator generates forms with correct inheritance'); + +56 + g$‹¡ + = +Ãw + +AuthÜInh”™ªûFÜm +(); + +57 + g$t +-> +is +( +is_subþass_of +( +$‹¡ +, 'AuthÜFÜm'), +Œue +); + +59 + g$‹¡ + = +Ãw + +AuthÜInh”™ªûFÜmFž‹r +(); + +60 + g$t +-> +is +( +is_subþass_of +( +$‹¡ +, 'AuthÜFÜmFž‹r'), +Œue +); + +62 + g$t +-> +dŸg +('Check form generator‡dds columnso concrete inheritance forms'); + +63 + g$‹¡ + = +Ãw + +AuthÜFÜm +(); + +64 + g$t +-> +ok +(! +is£t +( +$‹¡ +['additional'])); + +66 + g$‹¡ + = +Ãw + +AuthÜInh”™ªûCÚü‘eFÜm +(); + +67 + g$t +-> +ok +( +is£t +( +$‹¡ +['additional'])); + +69 + g$‹¡ + = +Ãw + +AuthÜFÜmFž‹r +(); + +70 + g$t +-> +ok +(! +is£t +( +$‹¡ +['additional'])); + +71 + g$t +-> +ok +(! +¬¿y_key_exi¡s +('add™iÚ®', +$‹¡ +-> +g‘F›lds +())); + +73 + g$‹¡ + = +Ãw + +AuthÜInh”™ªûCÚü‘eFÜmFž‹r +(); + +74 + g$t +-> +ok +( +is£t +( +$‹¡ +['additional'])); + +75 + g$t +-> +ok +( +¬¿y_key_exi¡s +('add™iÚ®', +$‹¡ +-> +g‘F›lds +())); + +77 + g$t +-> +dŸg +('Check form generator„espects„elationsweaked by inheritance'); + +78 + g$‹¡ + = +Ãw + +BlogA¹iþeFÜm +(); + +79 + g$t +-> +is +( +$‹¡ +-> +g‘Widg‘ +('authÜ_id')-> +g‘O±iÚ +('model'), 'BlogAuthor'); + +80 + g$t +-> +is +( +$‹¡ +-> +g‘V®id©Ü +('authÜ_id')-> +g‘O±iÚ +('model'), 'BlogAuthor'); + +82 + g$‹¡ + = +Ãw + +BlogA¹iþeFÜmFž‹r +(); + +83 + g$t +-> +is +( +$‹¡ +-> +g‘Widg‘ +('authÜ_id')-> +g‘O±iÚ +('model'), 'BlogAuthor'); + +84 + g$t +-> +is +( +$‹¡ +-> +g‘V®id©Ü +('authÜ_id')-> +g‘O±iÚ +('model'), 'BlogAuthor'); + +86 + g$t +-> +dŸg +('Checkƒnum…rimary keys'); + +87 + gŒy + + +89 + g$‹¡ + = +Ãw + +ResourûTy³FÜm +(); + +90 + g$t +-> +·ss +('enum…rimary key widgets work'); + +92 + $ÿtch + ( +Inv®idArgum’tExû±iÚ + +$e +) + +94 +$t +-> + `çž +('enum…rimary key widgets work'); + +95 +$t +-> + `dŸg +(' '. +$e +-> + `g‘Mes§ge +()); + +96 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/FormTest.php + +1 +g‘Profže +(); + +20 + g$u£rFÜm + = +Ãw + +U£rFÜm +( +$u£r +); + +21 + g$´ofžeFÜm + = +Ãw + +ProfžeFÜm +( +$´ofže +); + +22 +un£t +( +$´ofžeFÜm +['id'], $profileForm['user_id']); + +24 + g$u£rFÜm +-> +embedFÜm +('Profže', +$´ofžeFÜm +); + +26 + g$d©a + = +¬¿y +('username' => 'jwage', + +28 'Profže' => +¬¿y +( + +33 + g$u£rFÜm +-> +bšd +( +$d©a +); + +34 + g$u£rFÜm +-> +§ve +(); + +36 + g$t +-> +is +( +$u£r +-> +g‘Id +(è> 0, +Œue +); + +37 + g$t +-> +is +( +$u£r +-> +g‘Id +(), +$´ofže +-> +g‘U£rId +()); + +38 + g$t +-> +is +( +$u£r +-> +g‘U£ºame +(), 'jwage'); + +39 + g$t +-> +is +( +$´ofže +-> +g‘Fœ¡Name +(), 'Jonathan'); + +41 + g$u£rCouÁ + = +Doùrše_Qu”y +:: +ü—‹ +() + +42 -> +äom +('User u') + +43 -> +couÁ +(); + +45 + g$t +-> +is +( +$u£rCouÁ +, 1); + +47 + g$´ofžeCouÁ + = +Doùrše_Qu”y +:: +ü—‹ +() + +48 -> +äom +('Profile…') + +49 -> +couÁ +(); + +51 + g$t +-> +is +( +$´ofžeCouÁ +, 1); + +53 + g$widg‘ + = +Ãw + +sfWidg‘FÜmDoùršeChoiû +( +¬¿y +('model' => 'User')); + +54 + g$t +-> +is +( +$widg‘ +-> +g‘Choiûs +(), +¬¿y +(1 => 1)); + +56 + g$widg‘ + = +Ãw + +sfWidg‘FÜmDoùršeChoiû +( +¬¿y +('model' => 'User', 'key_method' => 'getUsername', 'method' => 'getPassword')); + +57 + g$t +-> +is +( +$widg‘ +-> +g‘Choiûs +(), +¬¿y +('jwage' => '4cb9c8a8048fd02294477fcb1a41191a')); + +59 + g$widg‘ + = +Ãw + +sfWidg‘FÜmDoùršeChoiû +( +¬¿y +('model' => 'User', 'key_method' => 'getUsername', 'method' => 'getPassword')); + +60 + g$t +-> +is +( +$widg‘ +-> +g‘Choiûs +(), +¬¿y +('jwage' => '4cb9c8a8048fd02294477fcb1a41191a')); + +62 + g$m‘hods + = +¬¿y +( + +68 + $fܗch + ( +$m‘hods + +as + +$m‘hod +) + +70 +$widg‘ + = +Ãw + + `sfWidg‘FÜmDoùršeChoiû +( + `¬¿y +('mod–' => 'U£r', 'bË_m‘hod' => +$m‘hod +)); + +71 +$t +-> + `is +( +$widg‘ +-> + `g‘Choiûs +(), + `¬¿y +(1 => 1)); + +72 + } +} + +74 + g$widg‘ + = +Ãw + +sfWidg‘FÜmDoùršeChoiû +( +¬¿y +('model' => 'User', 'table_method' => 'widgetChoiceTableMethod4')); + +75 + g$t +-> +is +( +$widg‘ +-> +g‘Choiûs +(), +¬¿y +()); + +77 + g$u£r + = +Ãw + +U£r +(); + +78 + g$u£r +-> + gGroups +[]-> + gÇme + = 'User Group 1'; + +79 + g$u£r +-> + gGroups +[]-> + gÇme + = 'User Group 2'; + +81 þas  + cU£rGroupFÜm + +ex‹nds + + mGroupFÜm + + +83 +public + +funùiÚ + + $cÚfigu» +() + +85 +·»Á +:: + `cÚfigu» +(); + +86 +$this +-> + `u£F›lds +( + `¬¿y +('name')); + +88 + } +} + +90 + g$u£rFÜm + = +Ãw + +U£rFÜm +( +$u£r +); + +91 + g$u£rFÜm +-> +embedR–©iÚ +('Groups', 'UserGroupForm'); + +93 + g$d©a + = +¬¿y +( + +96 'Groups' => +¬¿y +( + +97 0 => +¬¿y +( + +100 1 => +¬¿y +( + +106 + g$u£rFÜm +-> +bšd +( +$d©a +); + +107 + g$t +-> +is +( +$u£rFÜm +-> +isV®id +(), +Œue +); + +109 ià( + g$u£rFÜm +-> + $isV®id +()) + +111 +$u£rFÜm +-> + `§ve +(); + +112 + } +} + +114 + g$t +-> +is +( +$u£r +-> +Groups +[0]-> +Çme +, 'New User Group 1 Name'); + +115 + g$t +-> +is +( +$u£r +-> +Groups +[1]-> +Çme +, 'New User Group 2 Name'); + +117 + g$fÜm + = +Ãw + +DeçuÉV®ueTe¡FÜm +(); + +118 + g$v®id©ÜSchema + = +$fÜm +-> +g‘V®id©ÜSchema +(); + +119 + g$t +-> +is +( +$v®id©ÜSchema +['Çme']-> +g‘O±iÚ +('»quœed'), +çl£ +); + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/I18nTest.php + +1 + gt™Ë + = 'test'; + +18 + g$t +-> +is +( +$¬tiþe +-> +T¿n¦©iÚ +['’']-> +t™Ë +, 'test'); + +20 + gsfCڋxt +:: +g‘In¡ªû +()-> +g‘U£r +()-> +£tCuÉu» +('fr'); + +21 + g$¬tiþe +-> + gt™Ë + = 'frest'; + +22 + g$t +-> +is +( +$¬tiþe +-> +T¿n¦©iÚ +['ä']-> +t™Ë +, 'frest'); + +24 + g$t +-> +is +( +$¬tiþe +-> +g‘T™Ë +(), $¬tiþe-> +t™Ë +); + +25 + g$¬tiþe +-> +£tT™Ë +('test'); + +26 + g$t +-> +is +( +$¬tiþe +-> +g‘T™Ë +(), 'test'); + +28 + g$¬tiþe +-> +£tTe¡CÞumn +('test'); + +29 + g$t +-> +is +( +$¬tiþe +-> +g‘Te¡CÞumn +(), 'test'); + +30 + g$t +-> +is +( +$¬tiþe +-> +T¿n¦©iÚ +['fr']['test_column'], 'test'); + +32 + g$¬tiþe +-> +ä“ +( +Œue +); + +34 þas  + cMyA¹iþeFÜm + +ex‹nds + + mA¹iþeFÜm + + +36 +public + +funùiÚ + + $cÚfigu» +() + +38 +·»Á +:: + `cÚfigu» +(); + +40 +$this +-> + `embedI18n +( + `¬¿y +('en', 'fr')); + +42 +$authÜFÜm + = +Ãw + + `AuthÜFÜm +( +$this +-> +objeù +-> +AuthÜ +); + +43 + `un£t +( +$authÜFÜm +['id']); + +45 +$this +-> + `embedFÜm +('AuthÜ', +$authÜFÜm +); + +47 + `un£t +( +$this +['author_id']); + +49 + } +} + +51 + g$¬tiþe + = +Ãw + +A¹iþe +(); + +52 + g$¬tiþeFÜm + = +Ãw + +MyA¹iþeFÜm +( +$¬tiþe +); + +54 + g$d©a + = +¬¿y +( + +56 'AuthÜ' => +¬¿y +( + +58 'ty³' => +nuÎ +), + +59 '’' => +¬¿y +( + +62 'ä' => +¬¿y +( + +65 'ü—‹d_©' => +time +(), + +66 'upd©ed_©' => +time +(), + +69 + g$¬tiþeFÜm +-> +bšd +( +$d©a +); + +70 + g$t +-> +is +( +$¬tiþeFÜm +-> +isV®id +(), +Œue +); + +72 + g$d©a + = +$¬tiþeFÜm +-> +g‘V®ues +(); + +74 + g$v®ues + = +¬¿y +( + +75 'is_Ú_hom•age' => +Œue +, + +77 +¬¿y +( + +79 'ty³' => +nuÎ + + +82 +¬¿y +( + +89 +¬¿y +( + +95 'id' => +nuÎ +, + +96 'ty³' => +nuÎ +, + +97 'v›ws' => +nuÎ +, + +98 'ü—‹d_©' => +$d©a +['created_at'], + +99 'upd©ed_©' => +$d©a +['updated_at'], + +102 + g$t +-> +is +( +$¬tiþeFÜm +-> +g‘V®ues +(), +$v®ues +); + +104 + g$¬tiþeFÜm +-> +§ve +(); + +106 + g$ex³ùed + = +¬¿y +( + +107 'id' => +$¬tiþe +-> +id +, + +108 'authÜ_id' => +$¬tiþe +-> +AuthÜ +-> +id +, + +109 'is_Ú_hom•age' => +Œue +, + +110 'ty³' => +nuÎ +, + +111 'v›ws' => +nuÎ +, + +112 'ü—‹d_©' => +$¬tiþe +-> +ü—‹d_© +, + +113 'upd©ed_©' => +$¬tiþe +-> +upd©ed_© +, + +115 +¬¿y +( + +117 +¬¿y +( + +118 'id' => +$¬tiþe +-> +id +, + +126 +¬¿y +( + +127 'id' => +$¬tiþe +-> +id +, + +136 +¬¿y +( + +137 'id' => +$¬tiþe +-> +AuthÜ +-> +id +, + +139 'ty³' => +nuÎ + + +143 + g$t +-> +is +( +$¬tiþe +-> +toA¼ay +( +Œue +), +$ex³ùed +); + +145 + g$¬tiþeFÜm + = +Ãw + +MyA¹iþeFÜm +( +$¬tiþe +); + +147 + g$ex³ùed + = +¬¿y +( + +148 'id' => +$¬tiþe +-> +id +, + +149 'authÜ_id' => +$¬tiþe +-> +authÜ_id +, + +150 'is_Ú_hom•age' => +Œue +, + +151 'ty³' => +nuÎ +, + +152 'v›ws' => +nuÎ +, + +153 'ü—‹d_©' => +$¬tiþe +-> +ü—‹d_© +, + +154 'upd©ed_©' => +$¬tiþe +-> +upd©ed_© +, + +156 +¬¿y +( + +157 'id' => +$¬tiþe +-> +id +, + +165 +¬¿y +( + +166 'id' => +$¬tiþe +-> +id +, + +174 +¬¿y +( + +175 'id' => +$¬tiþe +-> +AuthÜ +-> +id +, + +177 'ty³' => +nuÎ + + +181 + g$t +-> +is +( +$¬tiþeFÜm +-> +g‘DeçuÉs +(), +$ex³ùed +); + +184 + g$d©a + = +¬¿y +( + +185 'id' => +$¬tiþe +-> +id +, + +186 'is_Ú_hom•age' => +Œue +, + +187 'ty³' => +nuÎ +, + +188 'ü—‹d_©' => +$¬tiþe +-> +ü—‹d_© +, + +189 'upd©ed_©' => +$¬tiþe +-> +upd©ed_© +, + +191 +¬¿y +( + +192 'id' => +$¬tiþe +-> +id +, + +200 +¬¿y +( + +201 'id' => +$¬tiþe +-> +id +, + +209 +¬¿y +( + +211 'ty³' => +nuÎ + + +215 + g$¬tiþeFÜm +-> +bšd +( +$d©a +); + +216 + g$t +-> +is +( +$¬tiþeFÜm +-> +isV®id +(), +Œue +); + +218 + g$¬tiþe + = +Ãw + +A¹iþe +(); + +219 + g$¬tiþeFÜm + = +Ãw + +MyA¹iþeFÜm +( +$¬tiþe +); + +221 + g$d©a + = +¬¿y +( + +223 'AuthÜ' => +¬¿y +( + +225 'ty³' => +nuÎ +), + +226 '’' => +¬¿y +( + +229 'ä' => +¬¿y +( + +232 'ü—‹d_©' => +time +(), + +233 'upd©ed_©' => +time +(), + +236 + g$¬tiþeFÜm +-> +bšd +( +$d©a +); + +237 + g$t +-> +is +( +$¬tiþeFÜm +-> +isV®id +(), +çl£ +); + +240 + g$¬tiþe + = +Ãw + +A¹iþe +(); + +241 + gsfCڋxt +:: +g‘In¡ªû +()-> +g‘U£r +()-> +£tCuÉu» +('en'); + +242 + g$¬tiþe +-> + gt™Ë + = 'test'; + +243 + gsfCڋxt +:: +g‘In¡ªû +()-> +g‘U£r +()-> +£tCuÉu» +('fr'); + +244 + g$t +-> +is +( +$¬tiþe +-> +t™Ë +, 'test'); + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/PagerTest.php + +1 + gÇme + = 'AuthÜ #' . +$i +; + +21 + g$authÜ +-> +§ve +(); + +24 + g$numP”Page + = 25; + +25 + g$·g” + = +Ãw + +sfDoùršePag” +('AuthÜ', +$numP”Page +); + +26 + g$·g” +-> +£tTabËM‘hod +('testTableMethod'); + +27 + g$·g” +-> +£tPage +(1); + +28 + g$·g” +-> +š™ +(); + +30 + g$t +-> +is +( +$·g” +-> +g‘Qu”y +()-> +g‘SqlQu”y +(), 'SELECT‡.id AS‡__id,‡.name AS‡__name,‡.type AS‡__type FROM‡uthor‡ WHERE (a.id > 0) LIMIT 25'); + +31 + g$t +-> +ok +( +$·g” +-> +isFœ¡Page +()); + +33 + g$·g” +-> +£tPage +(2); + +34 + g$·g” +-> +š™ +(); + +36 + g$t +-> +is +( +$·g” +-> +g‘Qu”y +()-> +g‘SqlQu”y +(), 'SELECT‡.id AS‡__id,‡.name AS‡__name,‡.type AS‡__type FROM‡uthor‡ WHERE (a.id > 0) LIMIT 25 OFFSET 25'); + +37 + g$t +-> +is +( +$·g” +-> +g‘Qu”y +()-> +couÁ +(), +$tÙ® +); + +38 + g$t +-> +ok +( +$·g” +-> +isLa¡Page +()); + +40 + g$»suÉs + = +$·g” +-> +g‘ResuÉs +(); + +42 + g$t +-> +is +( +g‘ty³ +( +$»suÉs +), 'object'); + +43 + g$t +-> +is +( +g‘_þass +( +$»suÉs +), 'Doctrine_Collection'); + +44 + g$t +-> +is +( +couÁ +( +$»suÉs +), +$numP”Page +); + +45 + g$t +-> +is +( +$·g” +-> +g‘CouÁQu”y +()-> +couÁ +(), +$tÙ® +); + +47 + g$·g” + = +Ãw + +sfDoùršePag” +('AuthÜ', +$numP”Page +); + +48 + g$·g” +-> +£tTabËM‘hod +('testTableMethod'); + +49 + g$·g” +-> +£tPage +(1); + +50 + g$·g” +-> +š™ +(); + +52 + g$»suÉs + = +$·g” +-> +g‘ResuÉs +( +Doùrše_CÜe +:: +HYDRATE_ARRAY +); + +54 + g$t +-> +is +( +g‘ty³ +( +$»suÉs +), 'array'); + +55 + g$t +-> +is +( +couÁ +( +$»suÉs +), +$numP”Page +); + +57 + g$·g” + = +Ãw + +sfDoùršePag” +('AuthÜ', +$numP”Page +); + +58 + g$·g” +-> +£tTabËM‘hod +('testTableMethod2'); + +59 + g$·g” +-> +£tQu”y +( +Doùrše_Qu”y +:: +ü—‹ +()-> +äom +('Auth܇')-> +wh”e +('a.id < 9999999')); + +60 + g$·g” +-> +£tPage +(1); + +61 + g$·g” +-> +š™ +(); + +63 + g$t +-> +is +( +$·g” +-> +g‘Qu”y +()-> +g‘SqlQu”y +(), 'SELECT‡.id AS‡__id,‡.name AS‡__name,‡.type AS‡__type FROM‡uthor‡ WHERE (a.id < 9999999 AND‡.id > 0) LIMIT 25'); + +65 + g$·g” + = +Ãw + +sfDoùršePag” +('AuthÜ', +$numP”Page +); + +66 + g$·g” +-> +£tQu”y +( +Doùrše_Qu”y +:: +ü—‹ +()-> +äom +('Auth܇')-> +wh”e +('a.id < 9999999')); + +67 + g$·g” +-> +£tPage +(1); + +68 + g$·g” +-> +š™ +(); + +70 + g$t +-> +is +( +$·g” +-> +g‘Qu”y +()-> +g‘SqlQu”y +(), 'SELECT‡.id AS‡__id,‡.name AS‡__name,‡.type AS‡__type FROM‡uthor‡ WHERE (a.id < 9999999) LIMIT 25'); + +73 + g$t +-> +dŸg +('iterator interface'); + +75 + g$·g” + = +Ãw + +sfDoùršePag” +('Author', 10); + +76 + g$·g” +-> +š™ +(); + +77 + $fܗch + ( +$·g” + +as + +$authÜ +) + +79 +$t +-> + `i§_ok +( +$authÜ +, 'Author'); + +80 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/RouteTest.php + +1 +$check +) + +30 +$b +-> + +31 +g‘ +( +$u¾ +)-> + +32 +w™h +('»¥Ú£')-> +begš +()-> + +33 +isStusCode +('200')-> + +34 +m©ches +( +$check +)-> + +35 +’d +() + +39 + g$¬tiþe + = +Doùrše_CÜe +:: +g‘TabË +('A¹iþe')-> +fšd +(1); + +41 + g$rou‹s + = +¬¿y +( + +42 'doùrše_rou‹_‹¡5' => +¬¿y +( + +44 '·¿ms' => +$¬tiþe + + +46 'doùrše_rou‹_‹¡6' => +¬¿y +( + +48 '·¿ms' => +$¬tiþe + + +50 'doùrše_rou‹_‹¡7' => +¬¿y +( + +52 '·¿ms' => +¬¿y +('testing_non_column' => 'w00t') + +54 'doùrše_rou‹_‹¡8' => +¬¿y +( + +56 '·¿ms' => +¬¿y +( + +57 'id' => +$¬tiþe +-> +id +, + +58 '¦ug' => +$¬tiþe +-> +¦ug +, + +59 't™Ë' => +$¬tiþe +-> +t™Ë +, + +65 +fܗch + ( +$rou‹s + +as + +$rou‹ + => +$check +) + +67 +$u¾ + = +u¾_fÜ2 +( +$rou‹ +, +$check +['params']); + +68 + g$b +-> +‹¡ +()-> +is +( +$u¾ +, +$check +['u¾'], 'Check "' . +$rou‹ + . '" generates correct url'); + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/SchemaMergeTest.php + +1 +dŸg +('columns'); + +21 + g$t +-> +is_d“¶y +( +$bË +-> +g‘CÞumnDefš™iÚ +('Çme'), +¬¿y +( + +24 'nÙnuÎ' => +Œue +, + +27 + g$t +-> +is_d“¶y +( +$bË +-> +g‘CÞumnDefš™iÚ +('weight'), +¬¿y +( + +34 + g$t +-> +dŸg +('actAs'); + +36 + g$ÝtiÚs + = +$bË +-> +g‘Tem¶©e +('Time¡am·bË')-> +g‘O±iÚs +(); + +37 + g$t +-> +is +( +$ÝtiÚs +['upd©ed']['di§bËd'], +Œue +, 'the short "actAs" syntax isƒxpanded'); + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/Ticket/5269Test.php + +1 + gu£ºame + = 'nullvaluetest'; + +27 + g$u£r +-> + g·sswÜd + = 'changeme'; + +28 + g$u£r +-> + g‹¡ + = 'test'; + +29 + g$u£r +-> +§ve +(); + +30 + g$u£r +-> +ä“ +(); + +31 +un£t +( +$u£r +); + +33 + g$u£r + = +Doùrše_CÜe +:: +g‘TabË +('U£r')-> +fšdOÃByU£ºame +('nullvaluetest'); + +34 + g$u£rFÜm + = +Ãw + +Te¡U£rFÜm +( +$u£r +); + +35 + g$u£rFÜm +-> +bšd +( +¬¿y +('id' => +$u£r +-> +id +, 'username' => 'nullvaluetest', 'password' => 'changeme2')); + +36 ià( + g$u£rFÜm +-> + $isV®id +()) + +38 +$u£rFÜm +-> + `§ve +(); + +39 + } +} + +41 + g$u£r +-> +ä“ +(); + +42 +un£t +( +$u£r +); + +44 + g$u£r + = +Doùrše_CÜe +:: +g‘TabË +('U£r')-> +fšdOÃByU£ºame +('nullvaluetest'); + +45 + g$t +-> +is +( +$u£r +-> +toA¼ay +(), +¬¿y +('id' => 1, 'username' => 'nullvaluetest', 'password' => 'b0660f0b8b989971524762330aea5449', 'test' => 'test')); + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/Ticket/7774Test.php + +1 +is +( +þass_exi¡s +('Mod–FromLškedSchema'), +Œue +, 'models from symlinked schema files‡re built'); + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/UniqueTest.php + +1 +bšd +( +$d©a +); + +25 + g$uniqueTe¡FÜm +-> +§ve +(); + +27 + g$uniqueTe¡FÜm + = +Ãw + +UniqueTe¡FÜm +(); + +28 + g$uniqueTe¡FÜm +-> +bšd +( +$d©a +); + +29 + g$t +-> +is +( +$uniqueTe¡FÜm +-> +isV®id +(), +çl£ +); + +30 + g$t +-> +is +(( +¡ršg +è +$uniqueTe¡FÜm +-> +g‘E¼ÜSchema +(), 'unique_test1 [An object withhe same "unique_test1"‡lreadyƒxist. An object withhe same "unique_test1, unique_test2"‡lreadyƒxist.] unique_test4 [An object withhe same "unique_test4"‡lreadyƒxist.]'); + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/UploadTest.php + +1 +g‘ +('/attachment/index') + +21 -> +£tF›ld +('©chm’t[fže_·th]', +sfCÚfig +:: +g‘ +('sf_config_dir').'/databases.yml') + +22 -> +þick +('submit') + +24 -> +w™h +('»¥Ú£')-> +begš +() + +25 -> +checkEËm’t +('h1:contains("ok")') + +26 -> +’d +() + +28 -> +w™h +('doùrše')-> +check +('A‰achm’t', +¬¿y +( + +29 'fže_·th' => +A‰achm’tFÜm +:: +TEST_GENERATED_FILENAME +, + +33 + g$brow£r +-> +‹¡ +()-> +is +( +fže_exi¡s +( +sfCÚfig +:: +g‘ +('sf_ÿche_dœ').'/'. +A‰achm’tFÜm +:: +TEST_GENERATED_FILENAME +), +Œue +, 'uploaded file is‚amed correctly'); + +35 + g$brow£r + + +36 -> +g‘ +('/attachment/editable?id=1') + +38 -> +£tF›ld +('attachment[file_path_delete]', 1) + +39 -> +þick +('submit') + +41 -> +w™h +('»¥Ú£')-> +begš +() + +42 -> +checkEËm’t +('h1', 'ok') + +43 -> +’d +() + +45 -> +w™h +('doùrše')-> +check +('A‰achm’t', +¬¿y +( + +46 'fže_·th' => +A‰achm’tFÜm +:: +TEST_GENERATED_FILENAME +, + +47 ), +çl£ +) + +50 + g$brow£r +-> +‹¡ +()-> +is +( +fže_exi¡s +( +sfCÚfig +:: +g‘ +('sf_ÿche_dœ').'/'. +A‰achm’tFÜm +:: +TEST_GENERATED_FILENAME +), +çl£ +, 'uploaded file is„emoved'); + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/config/backendConfiguration.class.php + +1 +objeù + = $this-> + `g‘Rou‹ +()-> + `g‘Objeùs +(); + +17 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +18 +Œy + { + +19 +$this +-> +objeù + = $this-> + `g‘Rou‹ +()-> + `g‘Objeù +(); + +20 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +21  +sfV›w +:: +NONE +; + +25 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/modules/doctrine_route_test/templates/indexSuccess.php + +1 + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/backend/modules/my_articles/actions/actions.class.php + +1 + +2 < +html + + gxmÊs +="h‰p://www.w3.Üg/1999/xhtml" +xml +: +Ïng +="en"†ang="en"> + +3 < +h—d +> + +4 + +5 + +6 + +7 < +lšk + +»l +="shÜtcuˆicÚ" +h»f +="/favicon.ico" /> + +9 + +10 + +11 + +12 < +body +> + +13 + +14 + +15 + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/config/frontendConfiguration.class.php + +1 +¬tiþeLi¡ + = $this-> + `g‘A¹iþeTabË +()-> + `fšdAÎ +(); + +18 +public + +funùiÚ + + $execu‹RedœeùToShow +() + +20 +$this +-> + `»dœeù +('¬tiþe', +Doùrše_CÜe +:: + `g‘TabË +('A¹iþe')-> + `ü—‹Qu”y +()-> + `ãtchOà +()); + +21 + } +} + +23 +public + +funùiÚ + + $execu‹Show +() + +25 +$this +-> +¬tiþe + = $this-> + `g‘Rou‹ +()-> + `g‘Objeù +(); + +26 + } +} + +28 +public + +funùiÚ + + $execu‹C»©e +() + +30 +$this +-> +fÜm + = +Ãw + + `A¹iþeFÜm +(); + +32 +$this +-> + `£tTem¶©e +('edit'); + +33 + } +} + +35 +public + +funùiÚ + + $execu‹Ed™ +( +$»que¡ +) + +37 +$this +-> +fÜm + = $this-> + `g‘A¹iþeFÜm +( +$»que¡ +-> + `g‘P¬am‘” +('id')); + +38 + } +} + +40 +public + +funùiÚ + + $execu‹Upd©e +( +$»que¡ +) + +42 +$this +-> + `fÜw¬d404UÆess +( +$»que¡ +-> + `isM‘hod +( +sfReque¡ +:: +POST +)); + +44 +$this +-> +fÜm + = $this-> + `g‘A¹iþeFÜm +( +$»que¡ +-> + `g‘P¬am‘” +('id')); + +46 +$this +-> +fÜm +-> + `bšd +( +$»que¡ +-> + `g‘P¬am‘” +('article')); + +47 ià( +$this +-> +fÜm +-> + `isV®id +()) + +49 +$¬tiþe + = +$this +-> +fÜm +-> + `§ve +(); + +51 +$this +-> + `»dœeù +('¬tiþes/ed™?id='. +$¬tiþe +-> + `g‘ +('id')); + +54 +$this +-> + `£tTem¶©e +('edit'); + +55 + } +} + +57 +public + +funùiÚ + + $execu‹D–‘e +( +$»que¡ +) + +59 +$this +-> + `fÜw¬d404UÆess +( +$¬tiþe + = $this-> + `g‘A¹iþeById +( +$»que¡ +-> + `g‘P¬am‘” +('id'))); + +61 +$¬tiþe +-> + `d–‘e +(); + +63 +$this +-> + `»dœeù +('articles/index'); + +64 + } +} + +66 +´iv©e + +funùiÚ + + $g‘A¹iþeTabË +() + +68  +Doùrše_CÜe +:: + `g‘TabË +('Article'); + +69 + } +} + +71 +´iv©e + +funùiÚ + + $g‘A¹iþeById +( +$id +) + +73  +$this +-> + `g‘A¹iþeTabË +()-> + `fšd +( +$id +); + +74 + } +} + +76 +´iv©e + +funùiÚ + + $g‘A¹iþeFÜm +( +$id +) + +78 +$¬tiþe + = +$this +-> + `g‘A¹iþeById +( +$id +); + +80 ià( +$¬tiþe + +š¡ªûof + +A¹iþe +) + +82  +Ãw + + `A¹iþeFÜm +( +$¬tiþe +); + +86  +Ãw + + `A¹iþeFÜm +(); + +88 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/modules/articles/templates/editSuccess.php + +1 +g‘Objeù +() ?> + +2 < +h1 +> +isNew +(è? 'New' : 'Ed™' ?> +A¹iþes + + +4 < +fÜm + +aùiÚ +="isNew(è? '?id='.$¬tiþe->g‘('id'è: '')è?>" +m‘hod +="po¡" + $isMuɝ¬t +(è +ªd + +´št + 'enctype="multipart/form-data" ' ?>> + +5 < +bË +> + +6 < +tfoÙ +> + +7 < +Œ +> + +8 < +td + +cÞ¥ª +="2"> + +9 & +nb¥ +;< +a + +h»f +=""> +Back + +to + +li¡ + + +10 + $isNew +()): ?> + +11 & +nb¥ +; + `g‘ +('id'), + `¬¿y +('po¡' => +Œue +, 'confirm' => 'Are you sure?')) ?> + +12 + +13 < +šput + +ty³ +="subm™" +v®ue +="Save" /> + +14 + +15 + +16 + +17 < +tbody +> + +18 + `»nd”Glob®E¼Üs +() ?> + +19 < +Œ +> + +20 < +th +>< +Ïb– + ="¬tiþe_authÜ_id"> +AuthÜ + +id + + +21 < +td +> + +22 + `»nd”E¼Ü +() ?> + +23 + +24 + +25 + +26 < +Œ +> + +27 < +th +>< +Ïb– + ="¬tiþe_ü—‹d_©"> +C»©ed + +© + + +28 < +td +> + +29 + `»nd”E¼Ü +() ?> + +30 + +31 + +32 + +33 < +Œ +> + +34 < +th +>< +Ïb– + ="¬tiþe_upd©ed_©"> +Upd©ed + +© + + +35 < +td +> + +36 + `»nd”E¼Ü +() ?> + +37 + +38 + +39 + +40 < +Œ +> + +41 < +th +>< +Ïb– + ="¬tiþe_’"> +En + + +42 < +td +> + +43 + `»nd”E¼Ü +() ?> + +44 + +45 + +46 + +47 < +Œ +> + +48 < +th +>< +Ïb– + ="¬tiþe_ä"> +Fr + + +49 < +td +> + +50 + `»nd”E¼Ü +() ?> + +51 + +53 + +54 + +55 + +56 + +57 + +58 + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/modules/articles/templates/indexSuccess.php + +1 < + gh1 +> +A¹iþes + + gLi¡ + + +3 < + gbË +> + +4 < + gth—d +> + +5 < + gŒ +> + +6 < + gth +> + gId + + +7 < + gth +> + gAuthÜ + + +8 < + gth +> +C»©ed + + g© + + +9 < + gth +> +Upd©ed + + g© + + +10 + +11 + +12 < + gtbody +> + +13 + +14 < +Œ +> + +15 < +td +>< +a + +h»f +="g‘('id')è?>"> + `g‘id +() ?> + +16 < +td +> + `g‘AuthÜ +() ?> + +17 < +td +> + `g‘ü—‹d_© +() ?> + +18 < +td +> + `g‘upd©ed_© +() ?> + +19 + +20 + +21 + +22 + +24 < +a + +h»f +=""> +C»©e + + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/modules/articles/templates/showSuccess.php + +1 < + gh1 +> + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/modules/attachment/actions/actions.class.php + +1 +fÜm + = +Ãw + + `A‰achm’tFÜm +(); + +21 + `un£t +( +$this +-> +fÜm +['id']); + +24 +$»que¡ +-> + `isM‘hod +('post') + +26 +$this +-> +fÜm +-> + `bšdAndSave +( + +27 +$»que¡ +-> + `g‘P¬am‘” +( +$this +-> +fÜm +-> + `g‘Name +()), + +28 +$»que¡ +-> + `g‘Fžes +( +$this +-> +fÜm +-> + `g‘Name +()) + +32  +sfV›w +:: +SUCCESS +; + +35  +sfV›w +:: +INPUT +; + +38 +public + +funùiÚ + + $execu‹Ed™abË +( +sfWebReque¡ + +$»que¡ +) + +40 +$©chm’t + = +Doùrše_CÜe +:: + `g‘TabË +('A‰achm’t')-> + `fšd +( +$»que¡ +['id']); + +41 +$this +-> + `fÜw¬d404UÆess +( +$©chm’t +, 'Attachment‚ot found'); + +43 +$this +-> +fÜm + = +Ãw + + `A‰achm’tFÜm +( +$©chm’t +); + +45 +$»que¡ +-> + `isM‘hod +('post') + +47 +$this +-> +fÜm +-> + `bšdAndSave +( + +48 +$»que¡ +-> + `g‘P¬am‘” +( +$this +-> +fÜm +-> + `g‘Name +()), + +49 +$»que¡ +-> + `g‘Fžes +( +$this +-> +fÜm +-> + `g‘Name +()) + +53  +sfV›w +:: +SUCCESS +; + +56  +sfV›w +:: +INPUT +; + +57 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/modules/attachment/templates/editableInput.php + +1 < +fÜm + + gaùiÚ +="g‘Objeù()->idè?>" +m‘hod +="post"> + +2 < +bË +> + +3 + +4 + +5 < +p +>< +bu‰Ú + +ty³ +="subm™"> +subm™ +

    + +6 + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/modules/attachment/templates/editableSuccess.php + +1 < + gh1 +> + gok + + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/modules/attachment/templates/indexInput.php + +1 < +fÜm + + gaùiÚ +="" +m‘hod +="post"> + +2 < +bË +> + +3 + +4 + +5 < +p +>< +bu‰Ú + +ty³ +="subm™"> +subm™ +

    + +6 + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/modules/attachment/templates/indexSuccess.php + +1 < + gh1 +> + gok + + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/apps/frontend/templates/layout.php + +1 + +2 < +html + + gxmÊs +="h‰p://www.w3.Üg/1999/xhtml" +xml +: +Ïng +="en"†ang="en"> + +3 < +h—d +> + +5 + +6 + +8 + +10 < +lšk + +»l +="shÜtcuˆicÚ" +h»f +="/favicon.ico" /> + +13 + +14 + +15 + +16 < +body +> + +18 + +20 + +21 + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/config/ProjectConfiguration.class.php + +1 + `’abËAÎPlugšsExû± +( + `¬¿y +('sfPropelPlugin')); + +13 +public + +funùiÚ + + $š™ŸlizeDoùrše +() + +15 + `chdœ +( +sfCÚfig +:: + `g‘ +('sf_root_dir')); + +17 +$sk + = +Ãw + + `sfDoùršeBuždTask +( +$this +-> +di¥©ch” +,‚ew + `sfFÜm©‹r +()); + +18 +$sk +-> + `£tCÚfigu¿tiÚ +( +$this +); + +19 +$sk +-> + `run +( + `¬¿y +(),‡rray( + +20 'no-cÚfœm©iÚ' => +Œue +, + +21 'db' => +Œue +, + +22 'mod–' => +Œue +, + +23 'fÜms' => +Œue +, + +24 'fž‹rs' => +Œue +, + +26 + } +} + +28 +public + +funùiÚ + + $lßdFixtu»s +( +$fixtu»s +) + +30 +$·th + = +sfCÚfig +:: + `g‘ +('sf_d©a_dœ'è. '/' . +$fixtu»s +; + +31 iàÐ! + `fže_exi¡s +( +$·th +)) { + +32 +throw + +Ãw + + `sfExû±iÚ +('Invalid data fixtures file'); + +34 + `chdœ +( +sfCÚfig +:: + `g‘ +('sf_root_dir')); + +35 +$sk + = +Ãw + + `sfDoùršeD©aLßdTask +( +$this +-> +di¥©ch” +,‚ew + `sfFÜm©‹r +()); + +36 +$sk +-> + `£tCÚfigu¿tiÚ +( +$this +); + +37 +$sk +-> + `run +( + `¬¿y +( +$·th +)); + +38 + } +} + +40 +public + +funùiÚ + + $cÚfigu»Doùrše +( +Doùrše_Mªag” + +$mªag” +) + +42 +$mªag” +-> + `£tA‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_VALIDATE +, +Œue +); + +44 +$ÝtiÚs + = + `¬¿y +('baseClassName' => 'myDoctrineRecord'); + +45 +sfCÚfig +:: + `£t +('doùrše_mod–_bužd”_ÝtiÚs', +$ÝtiÚs +); + +46 + } +} + +48 +public + +funùiÚ + + $cÚfigu»DoùršeCÚÃùiÚ +( +Doùrše_CÚÃùiÚ + +$cÚÃùiÚ +) + +50 + } +} + +52 +public + +funùiÚ + + $cÚfigu»DoùršeCÚÃùiÚDoùrše2 +( +Doùrše_CÚÃùiÚ + +$cÚÃùiÚ +) + +54 +$cÚÃùiÚ +-> + `£tA‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_VALIDATE +, +çl£ +); + +55 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/filter/doctrine/ArticleFormFilter.class.php + +1 + `embedI18n +( + `¬¿y +('en', 'fr')); + +16 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/ArticleTranslationForm.class.php + +1 +widg‘Schema +['fže_·th'] = +Ãw + + `sfWidg‘FÜmIÅutFžeEd™abË +( + `¬¿y +( + +19 'fže_¤c' => +sfCÚfig +:: + `g‘ +('sf_ÿche_dœ').'/'. +$this +-> + `g‘Objeù +()-> +fže_·th +, + +20 'ed™_mode' => ! +$this +-> + `isNew +(), + +22 +$this +-> +v®id©ÜSchema +['fže_·th'] = +Ãw + + `sfV®id©ÜFže +( + `¬¿y +( + +23 '·th' => +sfCÚfig +:: + `g‘ +('sf_cache_dir'), + +24 'mime_ty³_gues£rs' => + `¬¿y +(), + +25 '»quœed' => +çl£ +, + +27 +$this +-> +v®id©ÜSchema +['fže_·th_d–‘e'] = +Ãw + + `sfV®id©ÜBoޗn +(); + +30 +´Ùeùed + +funùiÚ + + $g’”©eFžeP©hFž’ame +() + +32  +£lf +:: +TEST_GENERATED_FILENAME +; + +33 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/form/doctrine/AuthorForm.class.php + +1 +objeù +-> + `g‘Profže +()); + +15 + `un£t +( +$´ofžeFÜm +['id'], $profileForm['user_id']); + +17 +$this +-> + `embedFÜm +('Profže', +$´ofžeFÜm +); + +19 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/Article.class.php + +1 +¦ug +; + +12 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/ArticleTable.class.php + +1 + `execu‹ +(); + +12 +public + +funùiÚ + + $»Œ›veA¹iþe2 +( +¬¿y + +$·¿m‘”s +) + +14 +$qu”y + = +$this +-> + `ü—‹Qu”y +('a'); + +15  +$qu”y +-> + `execu‹ +(); + +16 + } +} + +18 +public + +funùiÚ + + $»Œ›veA¹iþe3 +( +¬¿y + +$·¿m‘”s +) + +20 +$qu”y + = +$this +-> + `ü—‹Qu”y +('a'); + +21  +$qu”y +-> + `execu‹ +(); + +22 + } +} + +24 +public + +funùiÚ + + $»Œ›veA¹iþe4 +( +¬¿y + +$·¿m‘”s +) + +26 +$qu”y + = +$this +-> + `ü—‹Qu”y +('a'); + +27  +$qu”y +-> + `ãtchOà +(); + +28 + } +} + +30 +public + +funùiÚ + + $rou‹Te¡9 +( +¬¿y + +$·¿m‘”s +) + +32  +Doùrše_Qu”y +:: + `ü—‹ +() + +33 -> + `äom +('Article‡') + +34 -> + `wh”e +('a.id = ?', +$·¿m‘”s +['id']) + +35 -> + `lim™ +(1) + +36 -> + `execu‹ +(); + +37 + } +} + +39 +public + +funùiÚ + + $rou‹Te¡10 +( +Doùrše_Qu”y + +$q +) + +41 +$q +-> + `ÜWh”e +($q-> + `g‘RoÙAlŸs +() . '.is_on_homepage = ?', 0); + +42  +$q +-> + `ãtchOà +(); + +43 + } +} + +45 +public + +funùiÚ + + $‹¡AdmšG’TabËM‘hod +( +Doùrše_Qu”y + +$q +) + +47  +$q +; + +48 + } +} + +50 +public + +funùiÚ + + $g‘NewQu”y +() + +52  +$this +-> + `ü—‹Qu”y +()-> + `£Ëù +('title, body'); + +53 + } +} + +55 +public + +funùiÚ + + $addOnHom•age +( +Doùrše_Qu”y + +$q + = +nuÎ +) + +57 ià( + `is_nuÎ +( +$q +)) + +59 +$q + = +$this +-> + `ü—‹Qu”y +('a'); + +61 +$®Ÿs + = +$q +-> + `g‘RoÙAlŸs +(); + +62  +$q +-> + `addWh”e +( +$®Ÿs +.'.is_on_homepage = 1'); + +63 + } +} + +65 +public + +funùiÚ + + $fž‹rSuµl›dQu”y +( +$qu”y +) + +67 +$qu”y +-> + `£Ëù +('title, body'); + +68 + } +} + +70 +public + +funùiÚ + + $fž‹rSuµl›dQu”yAndR‘uº +( +$qu”y +) + +72  +$qu”y +-> + `£Ëù +('title, body'); + +73 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/Attachment.class.php + +1 + `exi¡s +()) + +12 +$authÜ + = +Doùrše_CÜe +:: + `g‘TabË +('AuthÜ')-> + `fšdOÃByName +( + `Œim +( +$Çme +)); + +13 ià( +$authÜ +) + +15 +$this +-> + `assignId’tif›r +( +$authÜ +-> + `id’tif›r +()); + +17  +$this +-> + `_£t +('Çme', +$Çme +); + +20  +$this +-> + `_£t +('Çme', +$Çme +); + +23 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/AuthorInheritance.class.php + +1 + `ü—‹Qu”y +('a') + +10 -> + `wh”e +('a.id > 0'); + +13 +public + +funùiÚ + + $‹¡TabËM‘hod2 +( +Doùrše_Qu”y + +$q +) + +15 +$q +-> + `addWh”e +('a.id > 0'); + +16  +$q +; + +17 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/BlogArticle.class.php + +1 + `_£t +('·sswÜd', + `md5 +( +$·sswÜd +)); + +12 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/UserGroup.class.php + +1 + `ü—‹Qu”y +('u'); + +12 +public + +funùiÚ + + $widg‘ChoiûTabËM‘hod2 +() + +14  +$this +-> + `widg‘ChoiûTabËM‘hod1 +() + +15 -> + `execu‹ +(); + +16 + } +} + +18 +public + +funùiÚ + + $widg‘ChoiûTabËM‘hod3 +() + +20  +$this +-> + `widg‘ChoiûTabËM‘hod1 +() + +21 -> + `ãtchOà +(); + +22 + } +} + +24 +public + +funùiÚ + + $widg‘ChoiûTabËM‘hod4 +() + +26  +$this +-> + `widg‘ChoiûTabËM‘hod1 +() + +27 -> + `wh”e +('1 = 0') + +28 -> + `execu‹ +(); + +29 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/myDoctrineRecord.class.php + +1 +fšdAÎ +(); + +18 + g$t +-> +is +( +couÁ +( +$authÜs +), 2); + +20 + g$authÜ + = +Ãw + +AuthÜ +(); + +23 + g$authÜ +-> +£tName +('Jonathan H. Wage'); + +24 + g$authÜ +-> +§ve +(); + +27 + g$t +-> +is +( +$authÜ +-> +g‘Name +(), $authÜ-> +Çme +); + +31 + g$t +-> +is +( +$authÜ +-> +g‘Id +(), 1); + +34 + g$authÜs + = +Doùrše_CÜe +:: +g‘TabË +('AuthÜ')-> +fšdAÎ +(); + +35 + g$t +-> +is +( +couÁ +( +$authÜs +), 2); + +37 + g$¬tiþe + = +Ãw + +A¹iþe +(); + +38 + g$¬tiþe +-> + gt™Ë + = 'test'; + +41 + g$t +-> +is +(( +¡ršg +è +$¬tiþe +, 'test'); + +44 + g$t +-> +is +( +$¬tiþe +-> +g‘AuthÜ_id +(), $¬tiþe-> +authÜ_id +); + +45 + g$t +-> +is +( +$¬tiþe +-> +g‘AuthÜId +(), $¬tiþe-> +authÜ_id +); + +46 + g$t +-> +is +( +$¬tiþe +-> +g‘authÜId +(), $¬tiþe-> +authÜ_id +); + +47 + g$t +-> +is +( +$¬tiþe +-> +g‘AuthÜID +(), $¬tiþe-> +authÜ_id +); + +48 + g$t +-> +is +( +$¬tiþe +-> +g‘authÜ_id +(), $¬tiþe-> +authÜ_id +); + +51 + g$ÿm–Ca£ + = +Ãw + +Cam–Ca£ +(); + +52 + g$ÿm–Ca£ +-> + g‹¡Cam–Ca£ + = 'camel'; + +53 + g$ÿm–Ca£ +-> +£tTe¡Cam–Ca£ +('camel'); + +55 + g$t +-> +is +( +$ÿm–Ca£ +-> +g‘Te¡Cam–Ca£ +(), 'camel'); + +56 + g$t +-> +is +( +$ÿm–Ca£ +-> +g‘‹¡Cam–Ca£ +(), 'camel'); + +57 + g$t +-> +is +( +$ÿm–Ca£ +-> +g‘‹¡ÿm–ÿ£ +(), 'camel'); + +58 + g$t +-> +is +( +$ÿm–Ca£ +-> +g‘‹¡_ÿm–_ÿ£ +(), 'camel'); + +59 + g$t +-> +is +( +$ÿm–Ca£ +-> +g‘Te¡_ÿm–_ÿ£ +(), 'camel'); + +62 + g$¬tiþe +-> +£tAuthÜ +( +$authÜ +); + +63 + g$t +-> +is +( +$¬tiþe +-> +AuthÜ +, +$authÜ +); + +64 + g$t +-> +is +( +$¬tiþe +-> +g‘AuthÜ +(), +$authÜ +); + +67 + g$t +-> +is +( +$¬tiþe +-> +g‘Cam–Ca£ +()-> +g‘TabË +()-> +g‘O±iÚ +('name'), 'CamelCase'); + +70 + g$d©eTime + = +$¬tiþe +-> +g‘D©eTimeObjeù +('created_at'); + +71 + g$t +-> +is +( +$d©eTime + +š¡ªûof + +D©eTime +, +Œue +); + +72 + g$t +-> +is +( +$d©eTime +-> +fÜm© +('m/d/Y'), +d©e +('m/d/Y')); + +74 + gŒy + { + +75 + g$¬tiþe +-> +g‘D©eTimeObjeù +('author_id'); + +76 + g$t +-> +çž +(); + +77 } + $ÿtch + ( +Exû±iÚ + +$e +) { + +78 +$t +-> + `·ss +(); + +79 + } +} + +81 + g$¬tiþe +-> +£tD©eTimeObjeù +('ü—‹d_©', +Ãw + +D©eTime +('1985-09-01')); + +82 + g$t +-> +is +( +$¬tiþe +-> +g‘D©eTimeObjeù +('ü—‹d_©')-> +fÜm© +('m/d/Y'), '09/01/1985'); + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/unit/autoloaderTest.php + +1 +ok +( +þass_exi¡s +('Doctrine'), 'autoloader†oads "Doctrine"'); + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/unit/form/sfFormDoctrineTest.php + +1 +dŸg +('->__construct()'); + +11 þas  + cNum”icF›ldFÜm + +ex‹nds + + mA¹iþeFÜm + + +13 +public + +funùiÚ + + $cÚfigu» +() + +15 +$this +-> +widg‘Schema +[1] = +Ãw + + `sfWidg‘FÜmIÅutText +(); + +16 +$this +-> +v®id©ÜSchema +[1] = +Ãw + + `sfV®id©ÜPass +(); + +17 +$this +-> + `£tDeçuÉ +(1, '==DEFAULT_VALUE=='); + +19 + } +} + +21 + g$fÜm + = +Ãw + +Num”icF›ldFÜm +(); + +22 + g$deçuÉs + = +$fÜm +-> +g‘DeçuÉs +(); + +23 + g$t +-> +is +( +$deçuÉs +[1], '==DEFAULT_VALUE==', '->__construct()‡llows ->configure()o set defaults on‚umeric fields'); + +25 þas  + cDeçuÉV®uesFÜm + +ex‹nds + + mAuthÜFÜm + + +27 +public + +funùiÚ + + $cÚfigu» +() + +29 +$this +-> + `£tDeçuÉ +('name', 'John Doe'); + +31 + } +} + +33 + g$authÜ + = +Ãw + +AuthÜ +(); + +34 + g$fÜm + = +Ãw + +DeçuÉV®uesFÜm +( +$authÜ +); + +35 + g$t +-> +is +( +$fÜm +-> +g‘DeçuÉ +('name'), 'John Doe', '->__construct() uses form defaults for‚ew objects'); + +37 + g$authÜ + = +Ãw + +AuthÜ +(); + +38 + g$authÜ +-> + gÇme + = 'Jacques Doe'; + +39 + g$authÜ +-> +§ve +(); + +40 + g$fÜm + = +Ãw + +DeçuÉV®uesFÜm +( +$authÜ +); + +41 + g$t +-> +is +( +$fÜm +-> +g‘DeçuÉ +('name'), 'Jacques Doe', '->__construct() uses object value‡s‡ default forƒxisting objects'); + +42 + g$authÜ +-> +d–‘e +(); + +45 + g$t +-> +dŸg +('->embedRelation()'); + +47 þas  + cmyA¹iþeFÜm + +ex‹nds + + mA¹iþeFÜm + + +51 + g$bË + = +Doùrše_CÜe +:: +g‘TabË +('Author'); + +52 + g$fÜm + = +Ãw + +AuthÜFÜm +( +$bË +-> +ü—‹ +( +¬¿y +( + +53 'A¹iþes' => +¬¿y +( + +54 +¬¿y +('title' => 'Article 1'), + +55 +¬¿y +('title' => 'Article 2'), + +56 +¬¿y +('title' => 'Article 3'), + +60 + g$fÜm +-> +embedR–©iÚ +('Articles'); + +61 + g$embeddedFÜms + = +$fÜm +-> +g‘EmbeddedFÜms +(); + +63 + g$t +-> +ok +( +is£t +( +$fÜm +['Articles']), '->embedRelation()ƒmbeds forms'); + +64 + g$t +-> +is +( +couÁ +( +$embeddedFÜms +['Articles']), 3, '->embedRelation()ƒmbeds one form forƒach„elated object'); + +66 + g$fÜm +-> +embedR–©iÚ +('A¹iþes', 'myA¹iþeFÜm', +¬¿y +×¼ay('‹¡' => +Œue +))); + +67 + g$embeddedFÜms + = +$fÜm +-> +g‘EmbeddedFÜms +(); + +68 + g$mÜeEmbeddedFÜms + = +$embeddedFÜms +['A¹iþes']-> +g‘EmbeddedFÜms +(); + +69 + g$t +-> +i§_ok +( +$mÜeEmbeddedFÜms +[0], 'myArticleForm', '->embedRelation()‡ccepts‡ form class‡rgument'); + +70 + g$t +-> +ok +( +$mÜeEmbeddedFÜms +[0]-> +g‘O±iÚ +('test'), '->embedRelation()‡ccepts‡ form‡rguments‡rgument'); + +72 + g$fÜm + = +Ãw + +AuthÜFÜm +( +$bË +-> +ü—‹ +( +¬¿y +( + +73 'A¹iþes' => +¬¿y +( + +74 +¬¿y +('title' => 'Article 1'), + +75 +¬¿y +('title' => 'Article 2'), + +78 + g$fÜm +-> +embedR–©iÚ +('Articles‡s‡uthor_articles'); + +79 + g$t +-> +is +( +is£t +( +$fÜm +['authÜ_¬tiþes']), +Œue +, '->embedRelation()ƒmbeds using‡n‡lias'); + +80 + g$t +-> +is +( +couÁ +( +$fÜm +['author_articles']), 2, '->embedRelation()ƒmbeds one form forƒach„elated object using‡n‡lias'); + +82 + g$fÜm + = +Ãw + +AuthÜFÜm +( +$bË +-> +ü—‹ +( +¬¿y +( + +83 'A¹iþes' => +¬¿y +( + +84 +¬¿y +('title' => 'Article 1'), + +85 +¬¿y +('title' => 'Article 2'), + +88 + g$fÜm +-> +embedR–©iÚ +('Articles AS‡uthor_articles'); + +89 + g$t +-> +is +( +is£t +( +$fÜm +['authÜ_¬tiþes']), +Œue +, '->embedRelation()ƒmbeds using‡n‡lias with‡ case insensitive separator'); + +91 + g$fÜm + = +Ãw + +A¹iþeFÜm +( +Doùrše_CÜe +:: +g‘TabË +('A¹iþe')-> +ü—‹ +( +¬¿y +( + +92 'AuthÜ' => +¬¿y +('name' => 'John Doe'), + +94 + g$fÜm +-> +embedR–©iÚ +('Author'); + +95 + g$t +-> +is +( +is£t +( +$fÜm +['AuthÜ']), +Œue +, '->embedRelation()ƒmbeds‡ ONEype„elation'); + +96 + g$t +-> +is +( +is£t +( +$fÜm +['AuthÜ']['Çme']), +Œue +, '->embedRelation()ƒmbeds‡ ONEype„elation'); + +97 + g$t +-> +is +( +$fÜm +['AuthÜ']['Çme']-> +g‘V®ue +(), 'John Doe', '->embedRelation() uses values fromhe„elated object'); + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/unit/form/sfFormFilterDoctrineTest.php + +1 + `£tWidg‘s +( + `¬¿y +( + +15 'Çme' => +Ãw + + `sfWidg‘FÜmIÅutText +(), + +16 'nom‘hod_bc' => +Ãw + + `sfWidg‘FÜmIÅutText +(), + +17 'nom‘hod' => +Ãw + + `sfWidg‘FÜmIÅutText +(), + +18 'authÜ_id' => +Ãw + + `sfWidg‘FÜmIÅutText +(), + +21 +$this +-> + `£tV®id©Üs +( + `¬¿y +( + +22 'Çme' => +Ãw + + `sfV®id©ÜPass +(), + +23 'nom‘hod_bc' => +Ãw + + `sfV®id©ÜPass +(), + +24 'nom‘hod' => +Ãw + + `sfV®id©ÜPass +(), + +25 'authÜ_id' => +Ãw + + `sfV®id©ÜPass +(), + +29 +public + +funùiÚ + + $addNameCÞumnQu”y +( +$qu”y +, +$f›ld +, +$v®ue +) + +31 +$this +-> +´oûs£dF›lds +[] = +$f›ld +; + +32 + } +} + +34 +public + +funùiÚ + + $g‘F›lds +() + +36  + `¬¿y_m”ge +( +·»Á +:: + `g‘F›lds +(), + `¬¿y +( + +41 + } +} + +44 + g$t +-> +dŸg +('->getQuery()'); + +46 + g$fž‹r + = +Ãw + +A¹iþeFÜmFž‹r +(); + +47 + g$fž‹r +-> +bšd +( +¬¿y +()); + +48 + g$t +-> +i§_ok +( +$fž‹r +-> +g‘Qu”y +(), 'Doctrine_Query', '->getQuery()„eturns‡ Doctrine_Query object'); + +50 + g$qu”y + = +Doùrše_Qu”y +:: +ü—‹ +()-> +£Ëù +('title, body'); + +52 + g$fž‹r + = +Ãw + +A¹iþeFÜmFž‹r +( +¬¿y +(),‡¼ay('qu”y' => +$qu”y +)); + +53 + g$fž‹r +-> +bšd +( +¬¿y +()); + +54 + g$t +-> +is_d“¶y +( +$fž‹r +-> +g‘Qu”y +()-> +g‘DqlP¬t +('£Ëù'), +¬¿y +('title, body'), '->getQuery() useshe query option'); + +55 + g$t +-> +ok +( +$fž‹r +-> +g‘Qu”y +(è!=ð +$qu”y +, '->getQuery() cloneshe query option'); + +58 + g$fž‹r + = +Ãw + +Te¡FÜmFž‹r +(); + +59 + g$fž‹r +-> +bšd +( +¬¿y +('nomethod_bc' => 'nomethod_bc')); + +60 + gŒy + + +62 + g$fž‹r +-> +g‘Qu”y +(); + +63 + g$t +-> +çž +('->getQuery()hrows‡nƒxception if‡ fieldhat is‚ot‡„eal column is specified in getFields() but‡ column method does‚otƒxist'); + +65 + $ÿtch + ( +Exû±iÚ + +$e +) + +67 +$t +-> + `·ss +('->getQuery()hrows‡nƒxception if‡ fieldhat is‚ot‡„eal column is specified in getFields() but‡ column method does‚otƒxist'); + +68 + } +} + +71 + g$fž‹r + = +Ãw + +Te¡FÜmFž‹r +(); + +72 + g$fž‹r +-> +bšd +( +¬¿y +('body' => 'body')); + +73 + gŒy + + +75 + g$fž‹r +-> +g‘Qu”y +(); + +76 + g$t +-> +çž +('->getQuery()hrows‡nƒxception if‡ field is‡„eal column‡nd‚either‡ column‚orype methodƒxists'); + +78 + $ÿtch + ( +Exû±iÚ + +$e +) + +80 +$t +-> + `·ss +('->getQuery()hrows‡nƒxception if‡ field is‡„eal column‡nd‚either‡ column‚orype methodƒxists'); + +81 + } +} + +84 + g$fž‹r + = +Ãw + +Te¡FÜmFž‹r +(); + +85 + g$fž‹r +-> +bšd +( +¬¿y +('nomethod' => 'nomethod')); + +86 + gŒy + + +88 + g$fž‹r +-> +g‘Qu”y +(); + +89 + g$t +-> +·ss +('->getQuery() does‚othrow‡nƒxception when‡ value without‡ query method is…assed'); + +91 + $ÿtch + ( +Exû±iÚ + +$e +) + +93 +$t +-> + `çž +('->getQuery() does‚othrow‡nƒxception when‡ value without‡ query method is…assed'); + +94 + } +} + +97 + g$fž‹r + = +Ãw + +Te¡FÜmFž‹r +(); + +98 + g$fž‹r +-> +bšd +( +¬¿y +('name' => 'Kris Wallsmith')); + +99 + g$fž‹r +-> +g‘Qu”y +(); + +100 + g$t +-> +is_d“¶y +( +$fž‹r +-> +´oûs£dF›lds +, +¬¿y +('name'), '->getQuery()…rocesses fields‚ot specified in getFields()'); + +103 + g$fž‹r + = +Ãw + +Te¡FÜmFž‹r +(); + +104 + g$fž‹r +-> +bšd +( +¬¿y +('author_id' =>‡rray('text' => 0))); + +105 + g$qu”y + = +$fž‹r +-> +g‘Qu”y +(); + +106 + g$t +-> +is +( +Œim +( +$qu”y +-> +g‘Dql +()), 'FROM Article„ WHERE„.author_id = ?', '->getQuery() filters by‡ 0‚umber'); + +107 + g$t +-> +is +( +$qu”y +-> +g‘Fω’edP¬ams +(), +¬¿y +(0), '->getQuery() filters by‡ 0‚umber'); + +109 + g$fž‹r + = +Ãw + +A¹iþeFÜmFž‹r +(); + +110 + g$fž‹r +-> +bšd +( +¬¿y +('type' =>‡rray('is_empty' => '1', 'text' => ''))); + +111 + g$qu”y + = +$fž‹r +-> +g‘Qu”y +(); + +112 + g$t +-> +is +( +Œim +( +$qu”y +-> +g‘Dql +()), 'FROM Article„ WHERE (r.type IS NULL OR„.type = ?)', '->getQuery()ests for‚ull orƒmptyext fields'); + +113 + g$t +-> +is +( +$qu”y +-> +g‘Fω’edP¬ams +(), +¬¿y +(''), '->getQuery()ests for‚ull orƒmptyext fields'); + +115 + g$fž‹r + = +Ãw + +A¹iþeFÜmFž‹r +(); + +116 + g$fž‹r +-> +bšd +( +¬¿y +('views' =>‡rray('is_empty' => '1', 'text' => ''))); + +117 + g$qu”y + = +$fž‹r +-> +g‘Qu”y +(); + +118 + g$t +-> +is +( +Œim +( +$qu”y +-> +g‘Dql +()), 'FROM Article„ WHERE (r.views IS NULL OR„.views = ?)', '->getQuery()ests for‚ull orƒmpty‚umber fields'); + +119 + g$t +-> +is +( +$qu”y +-> +g‘Fω’edP¬ams +(), +¬¿y +(''), '->getQuery()ests for‚ull orƒmpty‚umber fields'); + +121 + g$t +-> +dŸg +('->setTableMethod()'); + +123 + g$fž‹r + = +Ãw + +A¹iþeFÜmFž‹r +(); + +124 + g$fž‹r +-> +£tTabËM‘hod +('getNewQuery'); + +125 + g$fž‹r +-> +bšd +( +¬¿y +()); + +126 + g$t +-> +is_d“¶y +( +$fž‹r +-> +g‘Qu”y +()-> +g‘DqlP¬t +('£Ëù'), +¬¿y +('title, body'), '->setTableMethod() specifies‡ methodhat can„eturn‡‚ew query'); + +128 + g$fž‹r + = +Ãw + +A¹iþeFÜmFž‹r +(); + +129 + g$fž‹r +-> +£tTabËM‘hod +('filterSuppliedQuery'); + +130 + g$fž‹r +-> +bšd +( +¬¿y +()); + +131 + g$t +-> +is_d“¶y +( +$fž‹r +-> +g‘Qu”y +()-> +g‘DqlP¬t +('£Ëù'), +¬¿y +('title, body'), '->setTableMethod() specifies‡ methodhat can modifyhe supplied query'); + +133 + g$fž‹r + = +Ãw + +A¹iþeFÜmFž‹r +(); + +134 + g$fž‹r +-> +£tTabËM‘hod +('filterSuppliedQueryAndReturn'); + +135 + g$fž‹r +-> +bšd +( +¬¿y +()); + +136 + g$t +-> +is_d“¶y +( +$fž‹r +-> +g‘Qu”y +()-> +g‘DqlP¬t +('£Ëù'), +¬¿y +('title, body'), '->setTableMethod() specifies‡ methodhat can modify‡nd„eturnhe supplied query'); + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/unit/pager/sfDoctrinePagerTest.php + +1 +dŸg +('->getResults()'); + +12 + g$qu”y + = +Doùrše_CÜe +:: +g‘TabË +('A¹iþe')-> +ü—‹Qu”y +(); + +13 + g$qu”y +-> +£tHyd¿tiÚMode +( +Doùrše_CÜe +:: +HYDRATE_NONE +); + +14 + g$·g” + = +Ãw + +sfDoùršePag” +('Article', 10); + +15 + g$·g” +-> +£tQu”y +( +$qu”y +); + +16 + g$·g” +-> +š™ +(); + +17 + g$t +-> +i§_ok +( +$·g” +-> +g‘ResuÉs +(), 'array', '->getResults() useshe hydration mode set onhe query'); + +20 + g$t +-> +dŸg +('->getNbResults()'); + +22 + g$·g” + = +Ãw + +sfDoùršePag” +('Article', 10); + +23 + g$·g” +-> +š™ +(); + +24 + g$couÁ + = +Doùrše_CÜe +:: +g‘TabË +('A¹iþe')-> +ü—‹Qu”y +()-> +couÁ +(); + +25 + g$t +-> +is +( +$·g” +-> +g‘NbResuÉs +(), +$couÁ +, '->getNbResults()„eturnshe‚umber of„esults'); + +28 + g$t +-> +dŸg +('Countable interface'); + +30 + g$·g” + = +Ãw + +sfDoùršePag” +('Article', 10); + +31 + g$·g” +-> +š™ +(); + +32 + g$t +-> +is +( +couÁ +( +$·g” +), $·g”-> +g‘NbResuÉs +(), '"Countable" interface„eturnsheotal‚umber of objects'); + +35 + g$t +-> +dŸg +('Iterator interface'); + +37 + g$·g” + = +Ãw + +sfDoùršePag” +('Article', 10); + +38 + g$·g” +-> +š™ +(); + +39 + g$nÜm® + = 0; + +40 + g$™”©ed + = 0; + +41 +fܗch + ( +$·g” +-> + $g‘ResuÉs +(è +as + +$objeù +) + +43 +$nÜm® +++; + +44 + } +} + +45 + $fܗch + ( +$·g” + +as + +$objeù +) + +47 +$™”©ed +++; + +48 + } +} + +49 + g$t +-> +is +( +$™”©ed +, +$nÜm® +, '"Iterator" interface†oops over objects inhe current…ager'); + +52 + g$t +-> +dŸg +('->setTableMethod()'); + +53 + g$·g” + = +Ãw + +sfDoùršePag” +('Article', 10); + +54 + g$·g” +-> +£tTabËM‘hod +('addOnHomepage'); + +55 + g$·g” +-> +š™ +(); + +56 + g$t +-> +is +( +$·g” +-> +g‘NbResuÉs +(), +couÁ +( +Doùrše_CÜe +:: +g‘TabË +('A¹iþe')-> +fšdByIsOnHom•age +('1')), '->setTableMethod() updatehe query'); + +59 + g$t +-> +dŸg +('Serialization'); + +60 + g$·g” + = +un£rŸlize +( +£rŸlize +( +$·g” +)); + +61 + g$·g” +-> +š™ +(); + +62 + g$t +-> +is +( +$·g” +-> +g‘NbResuÉs +(), +couÁ +( +Doùrše_CÜe +:: +g‘TabË +('A¹iþe')-> +fšdByIsOnHom•age +('1')), 'serialization…reserves TableMethod functionality'); + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/unit/record/sfDoctrineRecordTest.php + +1 +dŸg +('->__construct()'); + +11 +funùiÚ + + $is_symfÚy_i18n_fž‹r +( +$fž‹r +) + +13  +$fž‹r + +š¡ªûof + +sfDoùršeRecÜdI18nFž‹r +; + +14 + } +} + +16 + g$bË + = +Doùrše_CÜe +:: +g‘TabË +('Article'); + +17 +Ãw + +A¹iþe +(); + +18 + g$t +-> +is +( +couÁ +( +¬¿y_fž‹r +( +$bË +-> +g‘Fž‹rs +(), 'is_symfony_i18n_filter')), 1, '->__construct()‡dds i18n filter'); + +19 +Ãw + +A¹iþe +(); + +20 + g$t +-> +is +( +couÁ +( +¬¿y_fž‹r +( +$bË +-> +g‘Fž‹rs +(), 'is_symfony_i18n_filter')), 1, '->__construct()‡dds i18n filter once'); + +23 + g$t +-> +dŸg +('->serialize() ->unserialize()'); + +25 + g$befÜe + = +Ãw + +AuthÜ +(); + +26 + g$befÜe +-> + gÇme + = 'test'; + +27 + g$£rŸlized + = +£rŸlize +( +$befÜe +); + +28 + g$aᔠ+ = +un£rŸlize +( +$£rŸlized +); + +29 + g$t +-> +is +( +$aᔠ+-> +Çme +, 'test', '->unserialize() maintains field values'); + +31 + g$cÚn + = +Doùrše_Mªag” +:: +g‘In¡ªû +()-> +g‘CÚÃùiÚFÜCompڒt +('Author'); + +32 + g$befÜe + = +Ãw + +AuthÜ +(); + +33 + g$befÜe +-> + gÇme + = 'test'; + +34 + g$£rŸlized + = +£rŸlize +( +$befÜe +); + +35 + g$cÚn +-> +þ—r +(); + +36 + g$cÚn +-> +eviùTabËs +(); + +37 + g$aᔠ+ = +un£rŸlize +( +$£rŸlized +); + +38 + g$t +-> +is +( +$aᔠ+-> +Çme +, 'test', '->unserialize() maintains field values upon„eset'); + +40 + g$befÜe + = +Ãw + +A¹iþe +(); + +41 + g$befÜe +-> + gt™Ë + = 'test'; + +42 + g$£rŸlized + = +£rŸlize +( +$befÜe +); + +43 + g$aᔠ+ = +un£rŸlize +( +$£rŸlized +); + +44 + g$t +-> +is +( +$aᔠ+-> +t™Ë +, 'test', '->unserialize() maintains field values on I18n„ecords'); + +46 + g$cÚn + = +Doùrše_Mªag” +:: +g‘In¡ªû +()-> +g‘CÚÃùiÚFÜCompڒt +('Article'); + +47 + g$befÜe + = +Ãw + +A¹iþe +(); + +48 + g$befÜe +-> + gt™Ë + = 'test'; + +49 + g$£rŸlized + = +£rŸlize +( +$befÜe +); + +50 + g$cÚn +-> +þ—r +(); + +51 + g$cÚn +-> +eviùTabËs +(); + +52 + g$aᔠ+ = +un£rŸlize +( +$£rŸlized +); + +53 + g$t +-> +is +( +$aᔠ+-> +t™Ë +, 'test', '->unserialize() maintains field values on I18n„ecords upon„eset'); + +55 + g$¬tiþe + = +Ãw + +A¹iþe +(); + +56 + gŒy + { + +57 + g$¬tiþe +-> +£tAuthÜ +( +Ãw + +¡dCÏss +()); + +58 } + $ÿtch + ( +Exû±iÚ + +$e +) { + +59 +$t +-> + `is +( +$e +-> + `g‘Mes§ge +(), 'Couldn\'t call Doctrine_Core::set(), second‡rgument should be‡n instance of Doctrine_Record or Doctrine_Null when setting one-to-one„eferences.', 'Making sure…roperƒxception message ishrown'); + +60 + } +} + +62 + g$¬tiþe + = +Ãw + +A¹iþe +(); + +63 + g$¬tiþe +-> + gt™Ë + = 'testinghis out'; + +64 + g$£rŸlized + = +£rŸlize +( +$¬tiþe +); + +65 + g$¬tiþe + = +un£rŸlize +( +$£rŸlized +); + +67 + g$t +-> +is +( +$¬tiþe +-> +g‘T™Ë +(), 'testinghis out', 'Making sure getTitle() is still‡ccessible‡fter unserializing'); + +69 + gŒy + { + +70 + g$‹¡ + = +Ãw + +Mod–W™hNumb”InCÞumn +(); + +71 + g$‹¡ +-> +g‘CÞumn_1 +(); + +72 + g$‹¡ +-> +g‘CÞumn_2 +(); + +73 + g$‹¡ +-> +g‘CÞumn__3 +(); + +74 + g$t +-> +·ss +('Make sure __call() handles fields with *_(n) inhe field‚ame'); + +75 } + $ÿtch + ( +Exû±iÚ + +$e +) { + +76 +$t +-> + `çž +('__call() failed in sfDoctrineRecord'); + +77 + } +} + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/unit/sfDoctrineColumnTest.php + +1 + `hasCÞumn +('Çme', '¡ršg', 255, + `¬¿y +('nÙbÏnk' => +Œue +)); + +22 +$this +-> + `hasCÞumn +('test‡s TEST', 'string', 255); + +23 +$this +-> + `hasCÞumn +('emaž', '¡ršg', 255, + `¬¿y +('emaž' => +Œue +, 'notnull' =>rue)); + +26 +public + +funùiÚ + + $£tUp +() + +28 +$this +-> + `hasMªy +('Te¡R–©iڇ Te¡R–©iÚs', + `¬¿y +('local' => 'id', 'foreign' => 'test_id')); + +29 + } +} + +32 þas  + cTe¡R–©iÚ + +ex‹nds + + msfDoùršeRecÜd + + +34 +public + +funùiÚ + + $£tTabËDefš™iÚ +() + +36 +$this +-> + `hasCÞumn +('name', 'string', 255); + +37 +$this +-> + `hasCÞumn +('test_id', 'integer'); + +40 +public + +funùiÚ + + $£tUp +() + +42 +$this +-> + `hasOà +('Te¡', + `¬¿y +('local' => 'test_id', 'foreign' => 'id')); + +43 + } +} + +46 + g$cÞumn + = +Ãw + +sfDoùršeCÞumn +('Çme', +Doùrše_CÜe +:: +g‘TabË +('Test')); + +47 + g$t +-> +is +( +$cÞumn +-> +g‘Name +(), 'name'); + +48 + g$t +-> +is +( +$cÞumn +-> +g‘F›ldName +(), 'name'); + +49 + g$t +-> +is +( +$cÞumn +-> +g‘PhpName +(), 'name'); + +50 + g$t +-> +is +( +$cÞumn +-> +isNÙNuÎ +(), +Œue +); + +52 + g$cÞumn + = +Ãw + +sfDoùršeCÞumn +('‹¡', +Doùrše_CÜe +:: +g‘TabË +('Test')); + +53 + g$t +-> +is +( +$cÞumn +-> +g‘Name +(), 'test'); + +54 + g$t +-> +is +( +$cÞumn +-> +g‘F›ldName +(), 'TEST'); + +55 + g$t +-> +is +( +$cÞumn +-> +g‘PhpName +(), 'TEST'); + +57 + g$t +-> +is +( +$cÞumn +-> +g‘DoùršeTy³ +(), 'string'); + +58 + g$t +-> +is +( +$cÞumn +-> +g‘Ty³ +(), 'VARCHAR'); + +59 + g$t +-> +is +( +$cÞumn +-> +g‘L’gth +(), 255); + +60 + g$t +-> +is +( +$cÞumn +-> +g‘Size +(), 255); + +61 + g$t +-> +is +( +$cÞumn +-> +hasDefš™iÚKey +('Ëngth'), +Œue +); + +62 + g$t +-> +is +( +$cÞumn +-> +g‘Defš™iÚKey +('type'), 'string'); + +63 + g$t +-> +is +( +$cÞumn +-> +isNÙNuÎ +(), +çl£ +); + +66 + g$cÞumn + = +Ãw + +sfDoùršeCÞumn +('emaž', +Doùrše_CÜe +:: +g‘TabË +('Test')); + +67 + g$t +-> +is +( +$cÞumn +-> +isNÙNuÎ +(), +Œue +); + +68 + g$t +-> +is +( +$cÞumn +-> +hasDefš™iÚKey +('emaž'), +Œue +); + +69 + g$t +-> +is +( +$cÞumn +-> +g‘Defš™iÚKey +('emaž'), +Œue +); + +72 + g$cÞumn + = +Ãw + +sfDoùršeCÞumn +('id', +Doùrše_CÜe +:: +g‘TabË +('Test')); + +73 + g$t +-> +is +( +$cÞumn +-> +isPrim¬yKey +(), +Œue +); + +76 + g$cÞumn + = +Ãw + +sfDoùršeCÞumn +('‹¡_id', +Doùrše_CÜe +:: +g‘TabË +('TestRelation')); + +77 + g$t +-> +is +( +$cÞumn +-> +isFÜeignKey +(), +Œue +); + +78 + g$t +-> +is +( +$cÞumn +-> +g‘FÜeignCÏssName +(), 'Test'); + +79 + g$t +-> +is +( +$cÞumn +-> +g‘FÜeignTabË +()-> +g‘O±iÚ +('name'), 'Test'); + +80 + g$t +-> +is +( +$cÞumn +-> +g‘TabË +()-> +g‘O±iÚ +('name'), 'TestRelation'); + +83 + g$t +-> +is +( +$cÞumn +['type'], 'integer'); + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/unit/sfDoctrineDatabaseTest.php + +1 +¬¿y +( + +25 'u£_Çtive_’um' => +Œue +, + +31 + g$p + = +Ãw + +sfDoùršeD©aba£ +( +$·¿m‘”s +); + +32 + g$t +-> +is +( +$p +-> +g‘DoùršeCÚÃùiÚ +()-> +g‘Name +(), 'doctrine', 'initialize() - creates‡ valid doctrine configuration from…arameters'); + +33 + g$t +-> +is +( +$p +-> +g‘DoùršeCÚÃùiÚ +()-> +g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_USE_NATIVE_ENUM +), +Œue +, 'initialize() - setups doctrine‡ttributes -‡ttribute value is‚ot‡ string'); + +34 + g$t +-> +is +( +$p +-> +g‘DoùršeCÚÃùiÚ +()-> +g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_VALIDATE +), Doùrše_CÜe:: +VALIDATE_ALL +, 'initialize() - setups doctrine‡ttributes -‡ttribute value is‡ string‡nd constantƒxists'); + +35 + g$t +-> +is +( +$p +-> +g‘DoùršeCÚÃùiÚ +()-> +g‘A‰ribu‹ +( +Doùrše_CÜe +:: +ATTR_TBLNAME_FORMAT +), +$·¿m‘”s +['attributes']['tblname_format'], 'initialize() - setups doctrine‡ttributes -‡ttribute value is‡ string‡nd constant‚otƒxists'); + + @lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/test/unit/validator/sfValidatorDoctrineChoiceTest.php + +1 +dŸg +('->clean()'); + +12 + g$qu”y + = +Doùrše_CÜe +:: +g‘TabË +('AuthÜ')-> +ü—‹Qu”y +(); + +13 + g$v®id©Ü + = +Ãw + +sfV®id©ÜDoùršeChoiû +( +¬¿y +('mod–' => 'AuthÜ', 'qu”y' => +$qu”y +)); + +15 + g$authÜ + = +Doùrše_CÜe +:: +g‘TabË +('AuthÜ')-> +ü—‹Qu”y +()-> +lim™ +(1)-> +ãtchOà +(); + +16 + g$v®id©Ü +-> +þ—n +( +$authÜ +-> +id +); + +18 + g$t +-> +is +( +Œim +( +$qu”y +-> +g‘Dql +()), 'FROM Author', '->clean() does‚ot changehe supplied query object'); + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/config/installer.php + +1 +š¡®lDœ +( +dœÇme +( +__FILE__ +).'/skeleton'); + +4 + g$this +-> +’abËPlugš +('sfPropelPlugin'); + +5 + g$this +-> +»lßdTasks +(); + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/config/sfPropelPluginConfiguration.class.php + +1 +di¥©ch” +)); + +38 +$´Ý–CÚfigu¿tiÚ + = +Ãw + + `PrݖCÚfigu¿tiÚ +(); + +39 +Prݖ +:: + `£tCÚfigu¿tiÚ +( +$´Ý–CÚfigu¿tiÚ +); + +41 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +( +$´Ý–CÚfigu¿tiÚ +, 'propel.configure')); + +43 +Prݖ +:: + `š™Ÿlize +(); + +46 +$this +-> +di¥©ch” +-> + `cÚÃù +('u£r.chªge_cuÉu»', + `¬¿y +('sfPropel', 'listenToChangeCultureEvent')); + +48 ià( +sfCÚfig +:: + `g‘ +('sf_web_debug')) + +50 +$this +-> +di¥©ch” +-> + `cÚÃù +('debug.web.lßd_·Ãls', + `¬¿y +('sfWebDebugPanelPropel', 'listenToAddPanelEvent')); + +53 ià( +sfCÚfig +:: + `g‘ +('sf_test')) + +55 +$this +-> +di¥©ch” +-> + `cÚÃù +('cڋxt.lßd_çùܛs', + `¬¿y +($this, 'clearAllInstancePools')); + +65 +public + +funùiÚ + + $þ—rAÎIn¡ªûPoÞs +() + +67 +$fšd” + = +sfFšd” +:: + `ty³ +('fže')-> + `Çme +('*TableMap.php'); + +68 + `fܗch + ( +$fšd” +-> + `š +( +$this +-> +cÚfigu¿tiÚ +-> + `g‘Mod–Dœs +()è +as + +$fže +) + +70 +$omCÏss + = + `ba£Çme +( +$fže +, 'TableMap.php'); + +71 ià( + `þass_exi¡s +( +$omCÏss +è&& + `is_subþass_of +($omClass, 'BaseObject')) + +73 +$³” + = + `cÚ¡ªt +( +$omCÏss +.'::PEER'); + +74 + `ÿÎ_u£r_func +( + `¬¿y +( +$³” +, 'clearInstancePool')); + +77 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelForm/default/template/sfPropelFormBaseTemplate.php + +1 [? +php + + +10 +ab¡¿ù + cÏs  + cBa£FÜmPrݖ + +ex‹nds + +sfFÜmPrݖ + + +12 +public + +funùiÚ + + $£tup +() + +15 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelForm/default/template/sfPropelFormGeneratedTemplate.php + +1 [? +php + + +12 +ab¡¿ù + +þass + +Ba£ + +bË +-> +g‘CÏs¢ame +(è?> +FÜm + +ex‹nds + +Ba£FÜmPrݖ + + +14 +public + +funùiÚ + +£tup +() + +16 +$this +-> +£tWidg‘s +( +¬¿y +( + +17 +bË +-> +g‘CÞumns +(è +as + +$cÞumn +): ?> + +18 'Œª¦©eCÞumnName($cÞumnè?>' +g‘CÞumnNameMaxL’gth +(è- +¡¾’ +( +$cÞumn +-> +g‘Name +())è?> => +Ãw + +g‘Widg‘CÏssFÜCÞumn +($cÞumnè?>( +g‘Widg‘O±iÚsFÜCÞumn +($column) ?>), + +19 + +20 +g‘MªyToMªyTabËs +(è +as + +$bËs +): ?> + +21 'und”scÜe($bËs[' +middËTabË +']->g‘CÏs¢ame()è?>_li¡' +g‘CÞumnNameMaxL’gth +(è- +¡¾’ +($this-> +und”scÜe +( +$bËs +['middËTabË']-> +g‘CÏs¢ame +()).'_li¡')è?> => +Ãw + +sfWidg‘FÜmPrݖChoiû +( +¬¿y +('muɝË' => +Œue +, 'mod–' => 'getClassname() ?>')), + +22 + +25 + g$this +-> +£tV®id©Üs +( +¬¿y +( + +26 +bË +-> +g‘CÞumns +(è +as + +$cÞumn +): ?> + +27 'Œª¦©eCÞumnName($cÞumnè?>' +g‘CÞumnNameMaxL’gth +(è- +¡¾’ +( +$cÞumn +-> +g‘Name +())è?> => +Ãw + +g‘V®id©ÜCÏssFÜCÞumn +($cÞumnè?>( +g‘V®id©ÜO±iÚsFÜCÞumn +($column) ?>), + +28 + +29 +g‘MªyToMªyTabËs +(è +as + +$bËs +): ?> + +30 'und”scÜe($bËs[' +middËTabË +']->g‘CÏs¢ame()è?>_li¡' +g‘CÞumnNameMaxL’gth +(è- +¡¾’ +($this-> +und”scÜe +( +$bËs +['middËTabË']-> +g‘CÏs¢ame +()).'_li¡')è?> => +Ãw + +sfV®id©ÜPrݖChoiû +( +¬¿y +('muɝË' => +Œue +, 'mod–' => 'g‘CÏs¢ame(è?>', '»quœed' => +çl£ +)), + +31 + +34 +g‘UniqueCÞumnNames +()): ?> + +35 +$this +-> +v®id©ÜSchema +-> +£tPo¡V®id©Ü +( + +36 1): ?> + +37 +Ãw + +sfV®id©ÜAnd +( +¬¿y +( + +38 + +39 +Ãw + +sfV®id©ÜPrݖUnique +( +¬¿y +('model' => 'table->getClassname() ?>', 'column' =>‡rray(''))), + +40 + +42 + +43 +Ãw + +sfV®id©ÜPrݖUnique +( +¬¿y +('model' => 'table->getClassname() ?>', 'column' =>‡rray(''))) + +44 + +47 + +48 + g$this +-> + gwidg‘Schema +-> +£tNameFÜm© +('underscore($this->table->getClassname()) ?>[%s]'); + +50 + g$this +-> + g”rÜSchema + = +Ãw + +sfV®id©ÜE¼ÜSchema +( +$this +-> +v®id©ÜSchema +); + +52 + g·»Á +:: +£tup +(); + +55 +public + +funùiÚ + +g‘Mod–Name +() + +60 +isI18n +()): ?> + +61 +public + +funùiÚ + +g‘I18nMod–Name +() + +66 +public + +funùiÚ + +g‘I18nFÜmCÏss +() + +70 + +72 +g‘MªyToMªyTabËs +()): ?> + +73 +public + +funùiÚ + +upd©eDeçuÉsFromObjeù +() + +75 +·»Á +:: +upd©eDeçuÉsFromObjeù +(); + +77 +g‘MªyToMªyTabËs +(è +as + +$bËs +): ?> + +78 ià( +is£t +( +$this +-> +widg‘Schema +['und”scÜe($bËs[' +middËTabË +']->getClassname()) ?>_list'])) + +80 +$v®ues + = +¬¿y +(); + +81 +fܗch + ( +$this +-> +objeù +-> +g‘ + +g‘PhpName +(è?> +s +(è +as + +$obj +) + +83 + g$v®ues +[] = +$obj +-> +g‘ + +g‘PhpName +() ?>(); + +86 + g$this +-> +£tDeçuÉ +('und”scÜe($bËs[' +middËTabË +']->g‘CÏs¢ame()è?>_li¡', +$v®ues +); + +89 + +92 +´Ùeùed + +funùiÚ + +doSave +( +$cÚ + = +nuÎ +) + +94 +·»Á +:: +doSave +( +$cÚ +); + +96 +g‘MªyToMªyTabËs +(è +as + +$bËs +): ?> + +97 +$this +-> +§ve + +g‘PhpName +(è?> +Li¡ +( +$cÚ +); + +98 + +101 +g‘MªyToMªyTabËs +(è +as + +$bËs +): ?> + +102 +public + +funùiÚ + +§ve + +g‘PhpName +(è?> +Li¡ +( +$cÚ + = +nuÎ +) + +104 ià(! +$this +-> +isV®id +()) + +106 +throw + +$this +-> +g‘E¼ÜSchema +(); + +109 ià(! +is£t +( +$this +-> +widg‘Schema +['und”scÜe($bËs[' +middËTabË +']->getClassname()) ?>_list'])) + +115 ià( + gnuÎ + ==ð +$cÚ +) + +117 +$cÚ + = +$this +-> +g‘CÚÃùiÚ +(); + +120 + g$c + = +Ãw + +Cr™”Ÿ +(); + +121 + g$c +-> +add +( +g‘CÏs¢ame +().'::PEER'è?>:: +g‘Name +()è?>, +$this +-> +objeù +-> +g‘Prim¬yKey +()); + +122 +g‘CÏs¢ame +().'::PEER'è?>:: +doD–‘e +( +$c +, +$cÚ +); + +124 + g$v®ues + = +$this +-> +g‘V®ue +('und”scÜe($bËs[' +middËTabË +']->getClassname()) ?>_list'); + +125 ià( +is_¬¿y +( +$v®ues +)) + +127 +fܗch + ( +$v®ues + +as + +$v®ue +) + +129 + g$obj + = +Ãw + +g‘CÏs¢ame +() ?>(); + +130 + g$obj +-> + g£t + +g‘PhpName +(è?>( + g$this +-> + gobjeù +-> +g‘Prim¬yKey +()); + +131 + g$obj +-> + g£t + +g‘PhpName +(è?>( + g$v®ue +); + +132 + g$obj +-> +§ve +(); + +137 + +138 + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelForm/default/template/sfPropelFormTemplate.php + +1 [? +php + + +10 +þass + +bË +-> +g‘CÏs¢ame +(è?> +FÜm + +ex‹nds + +Ba£ +table->getClassname() ?>Form + +12 +public + +funùiÚ + +cÚfigu» +() + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelFormFilter/default/template/sfPropelFormFilterBaseTemplate.php + +1 [? +php + + +10 +ab¡¿ù + cÏs  + cBa£FÜmFž‹rPrݖ + +ex‹nds + +sfFÜmFž‹rPrݖ + + +12 +public + +funùiÚ + + $£tup +() + +15 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelFormFilter/default/template/sfPropelFormFilterGeneratedTemplate.php + +1 [? +php + + +10 +ab¡¿ù + +þass + +Ba£ + +bË +-> +g‘CÏs¢ame +(è?> +FÜmFž‹r + +ex‹nds + +Ba£FÜmFž‹rPrݖ + + +12 +public + +funùiÚ + +£tup +() + +14 +$this +-> +£tWidg‘s +( +¬¿y +( + +15 +bË +-> +g‘CÞumns +(è +as + +$cÞumn +): ?> + +16 +isPrim¬yKey +())  ?> + +17 'Œª¦©eCÞumnName($cÞumnè?>' +g‘CÞumnNameMaxL’gth +(è- +¡¾’ +( +$cÞumn +-> +g‘Name +())è?> => +Ãw + +g‘Widg‘CÏssFÜCÞumn +($cÞumnè?>( +g‘Widg‘O±iÚsFÜCÞumn +($column) ?>), + +18 + +19 +g‘MªyToMªyTabËs +(è +as + +$bËs +): ?> + +20 'und”scÜe($bËs[' +middËTabË +']->g‘CÏs¢ame()è?>_li¡' +g‘CÞumnNameMaxL’gth +(è- +¡¾’ +($this-> +und”scÜe +( +$bËs +['middËTabË']-> +g‘CÏs¢ame +()).'_li¡')è?> => +Ãw + +sfWidg‘FÜmPrݖChoiû +( +¬¿y +('mod–' => 'g‘CÏs¢ame(è?>', 'add_em±y' => +Œue +)), + +21 + +24 + g$this +-> +£tV®id©Üs +( +¬¿y +( + +25 +bË +-> +g‘CÞumns +(è +as + +$cÞumn +): ?> + +26 +isPrim¬yKey +())  ?> + +27 'Œª¦©eCÞumnName($cÞumnè?>' +g‘CÞumnNameMaxL’gth +(è- +¡¾’ +( +$cÞumn +-> +g‘Name +())è?> => +g‘V®id©ÜFÜCÞumn +($column) ?>, + +28 + +29 +g‘MªyToMªyTabËs +(è +as + +$bËs +): ?> + +30 'und”scÜe($bËs[' +middËTabË +']->g‘CÏs¢ame()è?>_li¡' +g‘CÞumnNameMaxL’gth +(è- +¡¾’ +($this-> +und”scÜe +( +$bËs +['middËTabË']-> +g‘CÏs¢ame +()).'_li¡')è?> => +Ãw + +sfV®id©ÜPrݖChoiû +( +¬¿y +('mod–' => 'g‘CÏs¢ame(è?>', '»quœed' => +çl£ +)), + +31 + +34 + g$this +-> + gwidg‘Schema +-> +£tNameFÜm© +('underscore($this->table->getClassname()) ?>_filters[%s]'); + +36 + g$this +-> + g”rÜSchema + = +Ãw + +sfV®id©ÜE¼ÜSchema +( +$this +-> +v®id©ÜSchema +); + +38 + g·»Á +:: +£tup +(); + +41 +g‘MªyToMªyTabËs +(è +as + +$bËs +): ?> + +42 +public + +funùiÚ + +add + +g‘PhpName +(è?> +Li¡CÞumnCr™”Ÿ +( +Cr™”Ÿ + +$ü™”Ÿ +, +$f›ld +, +$v®ues +) + +44 ià(! +is_¬¿y +( +$v®ues +)) + +46 + g$v®ues + = +¬¿y +( +$v®ues +); + +49 ià(! +couÁ +( +$v®ues +)) + +54 + g$ü™”Ÿ +-> +addJoš +( +g‘PhpName +().'::PEER'è?>:: +g‘Name +()è?>, +bË +->g‘PhpName().'::PEER'è?>:: +g‘Prim¬yKey +()->getName()) ?>); + +56 + g$v®ue + = +¬¿y_pÝ +( +$v®ues +); + +57 + g$ü™”iÚ + = +$ü™”Ÿ +-> +g‘NewCr™”iÚ +( +g‘PhpName +().'::PEER'è?>:: +g‘Name +(è?>, +$v®ue +); + +59 +fܗch + ( +$v®ues + +as + +$v®ue +) + +61 + g$ü™”iÚ +-> +addOr +( +$ü™”Ÿ +-> +g‘NewCr™”iÚ +( +g‘PhpName +().'::PEER'è?>:: +g‘Name +(è?>, +$v®ue +)); + +64 + g$ü™”Ÿ +-> +add +( +$ü™”iÚ +); + +67 + +68 +public + +funùiÚ + +g‘Mod–Name +() + +73 +public + +funùiÚ + +g‘F›lds +() + +75  +¬¿y +( + +76 +bË +-> +g‘CÞumns +(è +as + +$cÞumn +): ?> + +77 'Œª¦©eCÞumnName($cÞumnè?>' +g‘CÞumnNameMaxL’gth +(è- +¡¾’ +( +$cÞumn +-> +g‘Name +())) ?> => 'getType($column) ?>', + +78 + +79 +g‘MªyToMªyTabËs +(è +as + +$bËs +): ?> + +80 'und”scÜe($bËs[' +middËTabË +']->g‘CÏs¢ame()è?>_li¡' +g‘CÞumnNameMaxL’gth +(è- +¡¾’ +($this-> +und”scÜe +( +$bËs +['middËTabË']-> +g‘CÏs¢ame +()).'_list')) ?> => 'ManyKey', + +81 + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelFormFilter/default/template/sfPropelFormFilterTemplate.php + +1 [? +php + + +10 +þass + +bË +-> +g‘CÏs¢ame +(è?> +FÜmFž‹r + +ex‹nds + +Ba£ +table->getClassname() ?>FormFilter + +12 +public + +funùiÚ + +cÚfigu» +() + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/actionsConfiguration.php + +1 +public + +funùiÚ + + $g‘AùiÚsDeçuÉ +() + +3  + `asPhp +( + `is£t +($this-> +cÚfig +['aùiÚs']è? $this->cÚfig['aùiÚs'] : + `¬¿y +()) ?>; + +4 +cÚfig +['actions']) ?> + +5 + } +} + +7 +public + +funùiÚ + + $g‘FÜmAùiÚs +() + +9  + `asPhp +( + `is£t +($this-> +cÚfig +['fÜm']['aùiÚs']è? $this->cÚfig['fÜm']['aùiÚs'] : + `¬¿y +('_d–‘e' => +nuÎ +, '_list' =>‚ull, '_save' =>‚ull, '_save_and_add' =>‚ull)) ?>; + +10 +cÚfig +['form']['actions']) ?> + +11 + } +} + +13 +public + +funùiÚ + + $g‘NewAùiÚs +() + +15  + `asPhp +( + `is£t +($this-> +cÚfig +['Ãw']['aùiÚs']è? $this->cÚfig['Ãw']['aùiÚs'] : + `¬¿y +()) ?>; + +16 +cÚfig +['new']['actions']) ?> + +17 + } +} + +19 +public + +funùiÚ + + $g‘Ed™AùiÚs +() + +21  + `asPhp +( + `is£t +($this-> +cÚfig +['ed™']['aùiÚs']è? $this->cÚfig['ed™']['aùiÚs'] : + `¬¿y +()) ?>; + +22 +cÚfig +['edit']['actions']) ?> + +23 + } +} + +25 +public + +funùiÚ + + $g‘Li¡ObjeùAùiÚs +() + +27  + `asPhp +( + `is£t +($this-> +cÚfig +['li¡']['objeù_aùiÚs']è? $this->cÚfig['li¡']['objeù_aùiÚs'] : + `¬¿y +('_ed™' => +nuÎ +, '_delete' =>‚ull)) ?>; + +28 +cÚfig +['list']['object_actions']) ?> + +29 + } +} + +31 +public + +funùiÚ + + $g‘Li¡AùiÚs +() + +33  + `asPhp +( + `is£t +($this-> +cÚfig +['li¡']['aùiÚs']è? $this->cÚfig['li¡']['aùiÚs'] : + `¬¿y +('_Ãw' => +nuÎ +)) ?>; + +34 +cÚfig +['list']['actions']) ?> + +35 + } +} + +37 +public + +funùiÚ + + $g‘Li¡B©chAùiÚs +() + +39  + `asPhp +( + `is£t +($this-> +cÚfig +['li¡']['b©ch_aùiÚs']è? $this->cÚfig['li¡']['b©ch_aùiÚs'] : + `¬¿y +('_d–‘e' => +nuÎ +)) ?>; + +40 +cÚfig +['list']['batch_actions']) ?> + +41 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/batchAction.php + +1 +public + +funùiÚ + + $execu‹B©ch +( +sfWebReque¡ + +$»que¡ +) + +3 +$»que¡ +-> + `checkCSRFPrÙeùiÚ +(); + +5 ià(! +$ids + = +$»que¡ +-> + `g‘P¬am‘” +('ids')) + +7 +$this +-> + `g‘U£r +()-> + `£tFÏsh +('error', 'You must‡t†east select one item.'); + +9 +$this +-> + `»dœeù +('@g‘U¾FÜAùiÚ(' +li¡ +') ?>'); + +12 ià(! +$aùiÚ + = +$»que¡ +-> + `g‘P¬am‘” +('batch_action')) + +14 +$this +-> + `g‘U£r +()-> + `£tFÏsh +('error', 'You must select‡n‡ctionoƒxecute onhe selected items.'); + +16 +$this +-> + `»dœeù +('@g‘U¾FÜAùiÚ(' +li¡ +') ?>'); + +19 ià(! + `m‘hod_exi¡s +( +$this +, +$m‘hod + = 'execu‹'. + `ucfœ¡ +( +$aùiÚ +))) + +21 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('You mu¡ c»©¨"%s" m‘hod f܇ùiÚ "%s"', +$m‘hod +, +$aùiÚ +)); + +24 ià(! +$this +-> + `g‘U£r +()-> + `hasC»d’tŸl +($this-> +cÚfigu¿tiÚ +-> + `g‘C»d’tŸls +( +$aùiÚ +))) + +26 +$this +-> + `fÜw¬d +( +sfCÚfig +:: + `g‘ +('sf_secure_module'), sfConfig::get('sf_secure_action')); + +29 +$v®id©Ü + = +Ãw + + `sfV®id©ÜPrݖChoiû +( + `¬¿y +('muɝË' => +Œue +, 'model' => 'getModelClass() ?>')); + +30 +Œy + + +33 +$ids + = +$v®id©Ü +-> + `þ—n +($ids); + +36 +$this +-> + `$m‘hod +( +$»que¡ +); + +38 + `ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +40 +$this +-> + `g‘U£r +()-> + `£tFÏsh +('error', 'A…roblem occurs when deletinghe selected items‡s some items do‚otƒxist‡nymore.'); + +43 +$this +-> + `»dœeù +('@g‘U¾FÜAùiÚ(' +li¡ +') ?>'); + +44 + } +} + +46 +´Ùeùed + +funùiÚ + + $execu‹B©chD–‘e +( +sfWebReque¡ + +$»que¡ +) + +48 +$ids + = +$»que¡ +-> + `g‘P¬am‘” +('ids'); + +50 +$couÁ + = 0; + +51 + `fܗch + ( + `g‘Mod–CÏss +().'::PEER'è?>:: + `»Œ›veByPks +( +$ids +è +as + +$objeù +) + +53 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, 'admš.d–‘e_objeù', + `¬¿y +('objeù' => +$objeù +))); + +55 +$objeù +-> + `d–‘e +(); + +56 ià( +$objeù +-> + `isD–‘ed +()) + +58 +$couÁ +++; + +62 ià( +$couÁ + >ð + `couÁ +( +$ids +)) + +64 +$this +-> + `g‘U£r +()-> + `£tFÏsh +('notice', 'The selected items have been deleted successfully.'); + +68 +$this +-> + `g‘U£r +()-> + `£tFÏsh +('error', 'A…roblem occurs when deletinghe selected items.'); + +71 +$this +-> + `»dœeù +('@g‘U¾FÜAùiÚ(' +li¡ +') ?>'); + +72 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/configuration.php + +1 [? +php + + +11 +ab¡¿ù + +þass + +Ba£ + +g‘ModuËName +()è?> +G’”©ÜCÚfigu¿tiÚ + +ex‹nds + +sfMod–G’”©ÜCÚfigu¿tiÚ + + +13 + +15 + +22 +public + +funùiÚ + +g‘FÜmCÏss +() + +24  'cÚfig[' +fÜm +'][' +þass +']è? $this->cÚfig['fÜm']['þass'] : $this->g‘Mod–CÏss().' +FÜm +' ?>'; + +25 +cÚfig +['form']['class']) ?> + +28 +public + +funùiÚ + +hasFž‹rFÜm +() + +30  +cÚfig +['fž‹r']['þass']è|| + gçl£ + !== $this->config['filter']['class'] ? 'true' : 'false' ?>; + +38 +public + +funùiÚ + +g‘Fž‹rFÜmCÏss +() + +40  'cÚfig[' + gfž‹r +'][' + gþass +']è&& !š_¬¿y($this->cÚfig['fž‹r']['þass'],‡¼ayÒuÎ,rue, f®£),rueè? $this->cÚfig['fž‹r']['þass'] : $this->g‘Mod–CÏss().' + gFÜmFž‹r +' ?>'; + +41 +cÚfig +['filter']['class']) ?> + +44 + +46 + +48 +public + +funùiÚ + +g‘P“rM‘hod +() + +50  'cÚfig[' + gli¡ +'][' + g³”_m‘hod +']è? $this->cÚfig['li¡']['³”_m‘hod'] : ' + gdoS–eù +' ?>'; + +51 +cÚfig +['list']['peer_method']) ?> + +54 +public + +funùiÚ + +g‘P“rCouÁM‘hod +() + +56  'cÚfig[' + gli¡ +'][' + g³”_couÁ_m‘hod +']è? $this->cÚfig['li¡']['³”_couÁ_m‘hod'] : ' + gdoCouÁ +' ?>'; + +57 +cÚfig +['list']['peer_count_method']) ?> + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/createAction.php + +1 +public + +funùiÚ + + $execu‹C»©e +( +sfWebReque¡ + +$»que¡ +) + +3 +$this +-> +fÜm + = $this-> +cÚfigu¿tiÚ +-> + `g‘FÜm +(); + +4 +$this +-> + `g‘SšguÏrName +(è?> = $this-> +fÜm +-> + `g‘Objeù +(); + +6 +$this +-> + `´oûssFÜm +( +$»que¡ +, $this-> +fÜm +); + +8 +$this +-> + `£tTem¶©e +('new'); + +9 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/deleteAction.php + +1 +public + +funùiÚ + + $execu‹D–‘e +( +sfWebReque¡ + +$»que¡ +) + +3 +$»que¡ +-> + `checkCSRFPrÙeùiÚ +(); + +5 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, 'admš.d–‘e_objeù', + `¬¿y +('objeù' => $this-> + `g‘Rou‹ +()-> + `g‘Objeù +()))); + +7 +$this +-> + `g‘Rou‹ +()-> + `g‘Objeù +()-> + `d–‘e +(); + +9 +$this +-> + `g‘U£r +()-> + `£tFÏsh +('notice', 'The item was deleted successfully.'); + +11 +$this +-> + `»dœeù +('@g‘U¾FÜAùiÚ(' +li¡ +') ?>'); + +12 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/editAction.php + +1 +public + +funùiÚ + + $execu‹Ed™ +( +sfWebReque¡ + +$»que¡ +) + +3 +$this +-> + `g‘SšguÏrName +(è?> = $this-> + `g‘Rou‹ +()-> + `g‘Objeù +(); + +4 +$this +-> +fÜm + = $this-> +cÚfigu¿tiÚ +-> + `g‘FÜm +($this-> + `g‘SšguÏrName +() ?>); + +5 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/fieldsConfiguration.php + +1 +public + +funùiÚ + + $g‘Li¡P¬ams +() + +3  + `asPhp +( + `is£t +($this-> +cÚfig +['li¡']['·¿ms']è? $this->cÚfig['li¡']['·¿ms'] : '%%'. + `im¶ode +('%% - %%', is£t($this->cÚfig['li¡']['di¥Ïy']è? $this->cÚfig['li¡']['di¥Ïy'] : $this-> + `g‘AÎF›ldNames +( +çl£ +)).'%%') ?>; + +4 +cÚfig +['list']['params']) ?> + +5 + } +} + +7 +public + +funùiÚ + + $g‘Li¡Layout +() + +9  'cÚfig[' +li¡ +'][' +Ïyout +']è? $this->cÚfig['li¡']['Ïyout'] : ' +buÏr +' ?>'; + +10 +cÚfig +['list']['layout']) ?> + +11 + } +} + +13 +public + +funùiÚ + + $g‘Li¡T™Ë +() + +15  'esÿ³SŒšg(is£t($this->cÚfig[' +li¡ +'][' +t™Ë +']è? $this->cÚfig['li¡']['t™Ë'] : sfInæeùÜ::humªize($this->g‘ModuËName()).' +Li¡ +') ?>'; + +16 +cÚfig +['list']['title']) ?> + +17 + } +} + +19 +public + +funùiÚ + + $g‘Ed™T™Ë +() + +21  'esÿ³SŒšg(is£t($this->cÚfig[' +ed™ +'][' +t™Ë +']è? $this->cÚfig['ed™']['t™Ë'] : ' +Ed™ + '.sfInflector::humanize($this->getModuleName())) ?>'; + +22 +cÚfig +['edit']['title']) ?> + +23 + } +} + +25 +public + +funùiÚ + + $g‘NewT™Ë +() + +27  'esÿ³SŒšg(is£t($this->cÚfig[' +Ãw +'][' +t™Ë +']è? $this->cÚfig['Ãw']['t™Ë'] : ' +New + '.sfInflector::humanize($this->getModuleName())) ?>'; + +28 +cÚfig +['new']['title']) ?> + +29 + } +} + +31 +public + +funùiÚ + + $g‘Fž‹rDi¥Ïy +() + +33  + `asPhp +( + `is£t +($this-> +cÚfig +['fž‹r']['di¥Ïy']è? $this->cÚfig['fž‹r']['di¥Ïy'] : + `¬¿y +()) ?>; + +34 +cÚfig +['filter']['display']) ?> + +35 + } +} + +37 +public + +funùiÚ + + $g‘FÜmDi¥Ïy +() + +39  + `asPhp +( + `is£t +($this-> +cÚfig +['fÜm']['di¥Ïy']è? $this->cÚfig['fÜm']['di¥Ïy'] : + `¬¿y +()) ?>; + +40 +cÚfig +['form']['display']) ?> + +41 + } +} + +43 +public + +funùiÚ + + $g‘Ed™Di¥Ïy +() + +45  + `asPhp +( + `is£t +($this-> +cÚfig +['ed™']['di¥Ïy']è? $this->cÚfig['ed™']['di¥Ïy'] : + `¬¿y +()) ?>; + +46 +cÚfig +['edit']['display']) ?> + +47 + } +} + +49 +public + +funùiÚ + + $g‘NewDi¥Ïy +() + +51  + `asPhp +( + `is£t +($this-> +cÚfig +['Ãw']['di¥Ïy']è? $this->cÚfig['Ãw']['di¥Ïy'] : + `¬¿y +()) ?>; + +52 +cÚfig +['new']['display']) ?> + +53 + } +} + +55 +public + +funùiÚ + + $g‘Li¡Di¥Ïy +() + +57 +cÚfig +['list']['display'])): ?> + +58  + `asPhp +($this-> +cÚfig +['list']['display']) ?>; + +59 +cÚfig +['list']['hide'])): ?> + +60  + `asPhp +( + `¬¿y_diff +($this-> + `g‘AÎF›ldNames +( +çl£ +), $this-> +cÚfig +['list']['hide'])) ?>; + +61 + +62  + `asPhp +($this-> + `g‘AÎF›ldNames +( +çl£ +)) ?>; + +63 + +64 +cÚfig +['list']['display'], $this->config['list']['hide']) ?> + +65 + } +} + +67 +public + +funùiÚ + + $g‘F›ldsDeçuÉ +() + +69  + `¬¿y +( + +70 + `g‘DeçuÉF›ldsCÚfigu¿tiÚ +(è +as + +$Çme + => +$·¿ms +): ?> + +71 '' => + `asPhp +( +$·¿ms +) ?>, + +72 + +74 + } +} + +76 + +77 +public + +funùiÚ + +g‘F›lds +() + +79  +¬¿y +( + +80 +g‘F›ldsCÚfigu¿tiÚ +( +$cڋxt +è +as + +$Çme + => +$·¿ms +): ?> + +81 '' => +asPhp +( +$·¿ms +) ?>, + +82 + +86 + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/filterAction.php + +1 +public + +funùiÚ + + $execu‹Fž‹r +( +sfWebReque¡ + +$»que¡ +) + +3 +$this +-> + `£tPage +(1); + +5 ià( +$»que¡ +-> + `hasP¬am‘” +('_reset')) + +7 +$this +-> + `£tFž‹rs +($this-> +cÚfigu¿tiÚ +-> + `g‘Fž‹rDeçuÉs +()); + +9 +$this +-> + `»dœeù +('@g‘U¾FÜAùiÚ(' +li¡ +') ?>'); + +12 +$this +-> +fž‹rs + = $this-> +cÚfigu¿tiÚ +-> + `g‘Fž‹rFÜm +($this-> + `g‘Fž‹rs +()); + +14 +$this +-> +fž‹rs +-> + `bšd +( +$»que¡ +-> + `g‘P¬am‘” +($this->fž‹rs-> + `g‘Name +())); + +15 ià( +$this +-> +fž‹rs +-> + `isV®id +()) + +17 +$this +-> + `£tFž‹rs +($this-> +fž‹rs +-> + `g‘V®ues +()); + +19 +$this +-> + `»dœeù +('@g‘U¾FÜAùiÚ(' +li¡ +') ?>'); + +22 +$this +-> +·g” + = $this-> + `g‘Pag” +(); + +23 +$this +-> +sÜt + = $this-> + `g‘SÜt +(); + +25 +$this +-> + `£tTem¶©e +('index'); + +26 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/filtersAction.php + +1 +´Ùeùed + +funùiÚ + + $g‘Fž‹rs +() + +3  +$this +-> + `g‘U£r +()-> + `g‘A‰ribu‹ +('g‘ModuËName(è?>.fž‹rs', $this-> +cÚfigu¿tiÚ +-> + `g‘Fž‹rDeçuÉs +(), 'admin_module'); + +4 + } +} + +6 +´Ùeùed + +funùiÚ + + $£tFž‹rs +( +¬¿y + +$fž‹rs +) + +8  +$this +-> + `g‘U£r +()-> + `£tA‰ribu‹ +('g‘ModuËName(è?>.fž‹rs', +$fž‹rs +, 'admin_module'); + +9 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/indexAction.php + +1 +public + +funùiÚ + + $execu‹Index +( +sfWebReque¡ + +$»que¡ +) + +4 ià( +$»que¡ +-> + `g‘P¬am‘” +('sÜt'è&& +$this +-> + `isV®idSÜtCÞumn +($request->getParameter('sort'))) + +6 +$this +-> + `£tSÜt +( + `¬¿y +( +$»que¡ +-> + `g‘P¬am‘” +('sort'), $request->getParameter('sort_type'))); + +10 ià( +$»que¡ +-> + `g‘P¬am‘” +('page')) + +12 +$this +-> + `£tPage +( +$»que¡ +-> + `g‘P¬am‘” +('page')); + +15 +$this +-> +·g” + = $this-> + `g‘Pag” +(); + +16 +$this +-> +sÜt + = $this-> + `g‘SÜt +(); + +17 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/newAction.php + +1 +public + +funùiÚ + + $execu‹New +( +sfWebReque¡ + +$»que¡ +) + +3 +$this +-> +fÜm + = $this-> +cÚfigu¿tiÚ +-> + `g‘FÜm +(); + +4 +$this +-> + `g‘SšguÏrName +(è?> = $this-> +fÜm +-> + `g‘Objeù +(); + +5 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/paginationAction.php + +1 +´Ùeùed + +funùiÚ + + $g‘Pag” +() + +3 +$·g” + = +$this +-> +cÚfigu¿tiÚ +-> + `g‘Pag” +('getModelClass() ?>'); + +4 +$·g” +-> + `£tCr™”Ÿ +( +$this +-> + `buždCr™”Ÿ +()); + +5 +$·g” +-> + `£tPage +( +$this +-> + `g‘Page +()); + +6 +$·g” +-> + `£tP“rM‘hod +( +$this +-> +cÚfigu¿tiÚ +-> + `g‘P“rM‘hod +()); + +7 +$·g” +-> + `£tP“rCouÁM‘hod +( +$this +-> +cÚfigu¿tiÚ +-> + `g‘P“rCouÁM‘hod +()); + +8 +$·g” +-> + `š™ +(); + +10  +$·g” +; + +11 + } +} + +13 +´Ùeùed + +funùiÚ + + $£tPage +( +$·ge +) + +15 +$this +-> + `g‘U£r +()-> + `£tA‰ribu‹ +('g‘ModuËName(è?>.·ge', +$·ge +, 'admin_module'); + +16 + } +} + +18 +´Ùeùed + +funùiÚ + + $g‘Page +() + +20  +$this +-> + `g‘U£r +()-> + `g‘A‰ribu‹ +('getModuleName() ?>.page', 1, 'admin_module'); + +21 + } +} + +23 +´Ùeùed + +funùiÚ + + $buždCr™”Ÿ +() + +25 +cÚfigu¿tiÚ +-> + `hasFž‹rFÜm +()): ?> + +26 ià( +nuÎ + ==ð +$this +-> +fž‹rs +) + +28 +$this +-> +fž‹rs + = $this-> +cÚfigu¿tiÚ +-> + `g‘Fž‹rFÜm +($this-> + `g‘Fž‹rs +()); + +31 +$ü™”Ÿ + = +$this +-> +fž‹rs +-> + `buždCr™”Ÿ +($this-> + `g‘Fž‹rs +()); + +32 + +33 +$ü™”Ÿ + = +Ãw + + `Cr™”Ÿ +(); + +34 + +36 +$this +-> + `addSÜtCr™”Ÿ +( +$ü™”Ÿ +); + +38 +$ev’t + = +$this +-> +di¥©ch” +-> + `fž‹r +( +Ãw + + `sfEv’t +($this, 'admš.bužd_ü™”Ÿ'), +$ü™”Ÿ +); + +39 +$ü™”Ÿ + = +$ev’t +-> + `g‘R‘uºV®ue +(); + +41  +$ü™”Ÿ +; + +42 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/paginationConfiguration.php + +1 +public + +funùiÚ + + $g‘Pag”CÏss +() + +3  'cÚfig[' +li¡ +'][' +·g”_þass +']è? $this->cÚfig['li¡']['·g”_þass'] : ' +sfPrݖPag” +' ?>'; + +4 +cÚfig +['list']['pager_class']) ?> + +5 + } +} + +7 +public + +funùiÚ + + $g‘Pag”MaxP”Page +() + +9  +cÚfig +['li¡']['max_³r_·ge']è? ( +š‹g” +) $this->config['list']['max_per_page'] : 20 ?>; + +10 +cÚfig +['list']['max_per_page']) ?> + +11 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/processFormAction.php + +1 +´Ùeùed + +funùiÚ + + $´oûssFÜm +( +sfWebReque¡ + +$»que¡ +, +sfFÜm + +$fÜm +) + +3 +$fÜm +-> + `bšd +( +$»que¡ +-> + `g‘P¬am‘” +($fÜm-> + `g‘Name +()), $»que¡-> + `g‘Fžes +($form->getName())); + +4 ià( +$fÜm +-> + `isV®id +()) + +6 +$nÙiû + = +$fÜm +-> + `g‘Objeù +()-> + `isNew +() ? 'The item was created successfully.' : 'The item was updated successfully.'; + +8 +$ + + `g‘SšguÏrName +(è?> = +$fÜm +-> + `§ve +(); + +10 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, 'admš.§ve_objeù', + `¬¿y +('objeù' => +$ + + `g‘SšguÏrName +() ?>))); + +12 ià( +$»que¡ +-> + `hasP¬am‘” +('_save_and_add')) + +14 +$this +-> + `g‘U£r +()-> + `£tFÏsh +('nÙiû', +$nÙiû +.' You can‡dd‡nother one below.'); + +16 +$this +-> + `»dœeù +('@g‘U¾FÜAùiÚ(' +Ãw +') ?>'); + +20 +$this +-> + `g‘U£r +()-> + `£tFÏsh +('nÙiû', +$nÙiû +); + +22 +$this +-> + `»dœeù +( + `¬¿y +('sf_rou‹' => 'g‘U¾FÜAùiÚ(' +ed™ +'è?>', 'sf_subjeù' => +$ + + `g‘SšguÏrName +() ?>)); + +27 +$this +-> + `g‘U£r +()-> + `£tFÏsh +('”rÜ', 'Th™em ha nÙ b“À§ved dutØsom”rÜs.', +çl£ +); + +29 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/sortingAction.php + +1 +´Ùeùed + +funùiÚ + + $addSÜtCr™”Ÿ +( +$ü™”Ÿ +) + +3 ià( + `¬¿y +( +nuÎ +,‚uÎè=ð( +$sÜt + = +$this +-> + `g‘SÜt +())) + +8 +$cÞumn + = + `g‘Mod–CÏss +().'::PEER'è?>:: + `Œª¦©eF›ldName +( +$sÜt +[0], +Ba£P“r +:: +TYPE_FIELDNAME +, Ba£P“r:: +TYPE_COLNAME +); + +9 ià('asc' =ð +$sÜt +[1]) + +11 +$ü™”Ÿ +-> + `addAsûndšgOrd”ByCÞumn +( +$cÞumn +); + +15 +$ü™”Ÿ +-> + `addDesûndšgOrd”ByCÞumn +( +$cÞumn +); + +17 + } +} + +19 +´Ùeùed + +funùiÚ + + $g‘SÜt +() + +21 ià( +nuÎ + !=ð +$sÜt + = +$this +-> + `g‘U£r +()-> + `g‘A‰ribu‹ +('getModuleName() ?>.sort',‚ull, 'admin_module')) + +23  +$sÜt +; + +26 +$this +-> + `£tSÜt +($this-> +cÚfigu¿tiÚ +-> + `g‘DeçuÉSÜt +()); + +28  +$this +-> + `g‘U£r +()-> + `g‘A‰ribu‹ +('g‘ModuËName(è?>.sÜt', +nuÎ +, 'admin_module'); + +29 + } +} + +31 +´Ùeùed + +funùiÚ + + $£tSÜt +( +¬¿y + +$sÜt +) + +33 ià( +nuÎ + !=ð +$sÜt +[0] &&‚ull === $sort[1]) + +35 +$sÜt +[1] = 'asc'; + +38 +$this +-> + `g‘U£r +()-> + `£tA‰ribu‹ +('g‘ModuËName(è?>.sÜt', +$sÜt +, 'admin_module'); + +39 + } +} + +41 +´Ùeùed + +funùiÚ + + $isV®idSÜtCÞumn +( +$cÞumn +) + +43  + `š_¬¿y +( +$cÞumn +, +Ba£P“r +:: + `g‘F›ldÇmes +('g‘Mod–CÏss(è?>', Ba£P“r:: +TYPE_FIELDNAME +)); + +44 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/sortingConfiguration.php + +1 +public + +funùiÚ + + $g‘DeçuÉSÜt +() + +3 +cÚfig +['li¡']['sÜt']è? $this->cÚfig['li¡']['sÜt'] : +çl£ +)): ?> + +4 + +5  + `¬¿y +('', ''); + +6 + +7  + `¬¿y +( +nuÎ +,‚ull); + +8 + +9 +cÚfig +['list']['sort']) ?> + +10 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/parts/updateAction.php + +1 +public + +funùiÚ + + $execu‹Upd©e +( +sfWebReque¡ + +$»que¡ +) + +3 +$this +-> + `g‘SšguÏrName +(è?> = $this-> + `g‘Rou‹ +()-> + `g‘Objeù +(); + +4 +$this +-> +fÜm + = $this-> +cÚfigu¿tiÚ +-> + `g‘FÜm +($this-> + `g‘SšguÏrName +() ?>); + +6 +$this +-> + `´oûssFÜm +( +$»que¡ +, $this-> +fÜm +); + +8 +$this +-> + `£tTem¶©e +('edit'); + +9 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/skeleton/actions/actions.class.php + +1 moduleName) ?>GeneratorConfiguration.class.php'); + +4 +»quœe_Úû +( +dœÇme +( +__FILE__ +).'/../lib/BasemoduleName) ?>GeneratorHelper.class.php'); + +13 +ab¡¿ù + +þass + +g‘G’”©edModuËName +(è?> +AùiÚs + +ex‹nds + +g‘AùiÚsBa£CÏss +()."\n" ?> + +15 +public + +funùiÚ + +´eExecu‹ +() + +17 +$this +-> +cÚfigu¿tiÚ + = +Ãw + +g‘ModuËName +(è?> +G’”©ÜCÚfigu¿tiÚ +(); + +19 ià(! +$this +-> +g‘U£r +()-> +hasC»d’tŸl +($this-> +cÚfigu¿tiÚ +-> +g‘C»d’tŸls +($this-> +g‘AùiÚName +()))) + +21 +$this +-> +fÜw¬d +( +sfCÚfig +:: +g‘ +('sf_secure_module'), sfConfig::get('sf_secure_action')); + +24 +$this +-> +di¥©ch” +-> +nÙify +( +Ãw + +sfEv’t +($this, 'admš.´e_execu‹', +¬¿y +('cÚfigu¿tiÚ' => $this-> +cÚfigu¿tiÚ +))); + +26 +$this +-> +h–³r + = +Ãw + +g‘ModuËName +(è?> +G’”©ÜH–³r +(); + +28 +·»Á +:: +´eExecu‹ +(); + +31 + +33 +cÚfigu¿tiÚ +-> +hasFž‹rFÜm +()): ?> + +34 + +35 + +37 + +39 + +41 + +43 + +45 + +47 +cÚfigu¿tiÚ +-> +g‘V®ue +('list.batch_actions')): ?> + +48 + +49 + +51 + +53 +cÚfigu¿tiÚ +-> +hasFž‹rFÜm +()): ?> + +54 + +55 + +57 + +59 + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/lib/helper.php + +1 [? +php + + +10 +ab¡¿ù + +þass + +Ba£ + +g‘ModuËName +()è?> +G’”©ÜH–³r + +ex‹nds + +sfMod–G’”©ÜH–³r + + +12 +public + +funùiÚ + +g‘U¾FÜAùiÚ +( +$aùiÚ +) + +14  'li¡' =ð +$aùiÚ + ? '·¿ms[' +rou‹_´efix +'] ?>' : 'params['route_prefix'] ?>_'.$action; + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/_assets.php + +1 +·¿ms +['css']è&& ( + g$this +-> + g·¿ms +['css'] !=ð +çl£ +)): ?> + +2 [? +php + +u£_¡yËsh“t +('·¿ms[' +css +'] ?>', 'first') ?] + +3 +·¿ms +['css'])): ?> + +4 [? +php + +u£_¡yËsh“t +('', 'first') ?] + +5 [? +php + +u£_¡yËsh“t +('', 'first') ?] + +6 + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/_filters.php + +1 [? +php + +u£_¡yËsh“ts_fÜ_fÜm +( +$fÜm +) ?] + +2 [? +php + +u£_javasüts_fÜ_fÜm +( +$fÜm +) ?] + +4 < +div + + gþass +="sf_admin_filter"> + +5 [? +php + ià( +$fÜm +-> + $hasGlob®E¼Üs +()): ?] + +6 [? +php + +echo + +$fÜm +-> + `»nd”Glob®E¼Üs +() ?] + +7 [? +php + +’dif +; ?] + +9 < +fÜm + +aùiÚ +="[?ph°echØu¾_fÜ('g‘U¾FÜAùiÚ('cÞËùiÚ'è?>',‡¼ay('aùiÚ' => 'fž‹r')è?]" +m‘hod +="post"> + +10 < +bË + +ûÎ¥acšg +="0"> + +11 < +tfoÙ +> + +12 < +Œ +> + +13 < +td + +cÞ¥ª +="2"> + +14 [? +php + +echo + +$fÜm +-> + `»nd”Hidd’F›lds +() ?] + +15 [? +php + +echo + + `lšk_to +( + `__ +('Re£t', + `¬¿y +(), 'sf_admš'), 'g‘U¾FÜAùiÚ(' +cÞËùiÚ +') ?>',‡rray('action' => 'filter'),‡rray('query_string' => '_reset', 'method' => 'post')) ?] + +16 < +šput + +ty³ +="subm™" +v®ue +="[?phpƒcho __('Filter',‡rray(), 'sf_admin') ?]" /> + +17 + +18 + +19 + +20 < +tbody +> + +21 [? +php + + `fܗch + ( +$cÚfigu¿tiÚ +-> + $g‘FÜmFž‹rF›lds +( +$fÜm +è +as + +$Çme + => +$f›ld +): ?] + +22 [? +php + ià(( + `is£t +( +$fÜm +[ +$Çme +]è&& $fÜm[$Çme]-> + `isHidd’ +()è|| (!is£t($fÜm[$Çme]è&& +$f›ld +-> + $isR—l +()))  ?] + +23 [? +php + + `šþude_·¹Ÿl +('g‘ModuËName(è?>/fž‹rs_f›ld', + `¬¿y +( + +24 'Çme' => +$Çme +, + +25 '©Œibu‹s' => +$f›ld +-> + `g‘CÚfig +('©Œibu‹s', + `¬¿y +()), + +26 'Ïb–' => +$f›ld +-> + `g‘CÚfig +('label'), + +27 'h–p' => +$f›ld +-> + `g‘CÚfig +('help'), + +28 'fÜm' => +$fÜm +, + +29 'f›ld' => +$f›ld +, + +30 'þass' => 'sf_admš_fÜm_row sf_admš_'. + `¡¹Þow” +( +$f›ld +-> + `g‘Ty³ +()).' sf_admš_fž‹r_f›ld_'. +$Çme +, + +32 [? +php + +’dfܗch +; ?] + +33 + +34 + +35 + +36 + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/_filters_field.php + +1 [? +php + ià( +$f›ld +-> + $isP¬tŸl +()): ?] + +2 [? +php + + `šþude_·¹Ÿl +('g‘ModuËName(è?>/'. +$Çme +, + `¬¿y +('ty³' => 'fž‹r', 'fÜm' => +$fÜm +, '©Œibu‹s' => +$©Œibu‹s + +š¡ªûof + +sfOuutEsÿ³r + ? $©Œibu‹s-> + $g‘RawV®ue +(è: +$©Œibu‹s +)) ?] + +3 [? +php + + `–£if + ( +$f›ld +-> + $isCompڒt +()): ?] + +4 [? +php + + `šþude_compڒt +('g‘ModuËName(è?>', +$Çme +, + `¬¿y +('ty³' => 'fž‹r', 'fÜm' => +$fÜm +, '©Œibu‹s' => +$©Œibu‹s + +š¡ªûof + +sfOuutEsÿ³r + ? $©Œibu‹s-> + $g‘RawV®ue +(è: +$©Œibu‹s +)) ?] + +5 [? +php + : ?] + +6 < +Œ + +þass +="[?phpƒcho $class ?]"> + +7 < +td +> + +8 [? +php + +echo + +$fÜm +[ +$Çme +]-> + `»nd”Lab– +( +$Ïb– +) ?] + +9 + +10 < +td +> + +11 [? +php + +echo + +$fÜm +[ +$Çme +]-> + `»nd”E¼Ü +() ?] + +13 [? +php + +echo + +$fÜm +[ +$Çme +]-> + `»nd” +( +$©Œibu‹s + +š¡ªûof + +sfOuutEsÿ³r + ? $©Œibu‹s-> + $g‘RawV®ue +(è: +$©Œibu‹s +) ?] + +15 [? +php + ià( +$h–p + || $h–°ð +$fÜm +[ +$Çme +]-> + $»nd”H–p +()): ?] + +16 < +div + +þass +="h–p">[? +php + +echo + + `__ +( +$h–p +, + `¬¿y +(), 'getI18nCatalogue() ?>') ?] + +17 [? +php + +’dif +; ?] + +18 + +19 + +20 [? +php + +’dif +; ?] + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/_flashes.php + +1 [? +php + ià( +$sf_u£r +-> +hasFÏsh +('notice')): ?] + +2 < +div + +þass +="nÙiû">[? +php + +echo + +__ +( +$sf_u£r +-> +g‘FÏsh +('nÙiû'), +¬¿y +(), 'sf_admš'è?] + +3 [? +php + +’dif +; ?] + +5 [? +php + ià( +$sf_u£r +-> +hasFÏsh +('error')): ?] + +6 < +div + +þass +="”rÜ">[? +php + +echo + +__ +( +$sf_u£r +-> +g‘FÏsh +('”rÜ'), +¬¿y +(), 'sf_admš'è?] + +7 [? +php + +’dif +; ?] + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/_form.php + +1 [? +php + +u£_¡yËsh“ts_fÜ_fÜm +( +$fÜm +) ?] + +2 [? +php + +u£_javasüts_fÜ_fÜm +( +$fÜm +) ?] + +4 < +div + + gþass +="sf_admin_form"> + +5 [? +php + +echo + +fÜm_g_fÜ +( +$fÜm +, '@·¿ms[' +rou‹_´efix +'] ?>') ?] + +6 [? +php + +echo + +$fÜm +-> +»nd”Hidd’F›lds +( +çl£ +) ?] + +8 [? +php + ià( +$fÜm +-> + $hasGlob®E¼Üs +()): ?] + +9 [? +php + +echo + +$fÜm +-> + `»nd”Glob®E¼Üs +() ?] + +10 [? +php + +’dif +; ?] + +12 [? +php + + `fܗch + ( +$cÚfigu¿tiÚ +-> + `g‘FÜmF›lds +( +$fÜm +, $fÜm-> + `isNew +(è? 'Ãw' : 'ed™'è +as + +$f›ld£t + => +$f›lds +): ?] + +13 [? +php + + `šþude_·¹Ÿl +('g‘ModuËName(è?>/fÜm_f›ld£t', + `¬¿y +('g‘SšguÏrName(è?>' => +$ + + `g‘SšguÏrName +(è?>, 'fÜm' => +$fÜm +, 'f›lds' => +$f›lds +, 'f›ld£t' => +$f›ld£t +)) ?] + +14 [? +php + +’dfܗch +; ?] + +16 [? +php + + `šþude_·¹Ÿl +('g‘ModuËName(è?>/fÜm_aùiÚs', + `¬¿y +('g‘SšguÏrName(è?>' => +$ + + `g‘SšguÏrName +(è?>, 'fÜm' => +$fÜm +, 'cÚfigu¿tiÚ' => +$cÚfigu¿tiÚ +, 'h–³r' => +$h–³r +)) ?] + +17 + +18 + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/_form_actions.php + +1 < +ul + + gþass +="sf_admin_actions"> + +2 + +3 + +4 [? +php + ià( +$fÜm +-> + $isNew +()): ?] + +5 + +6 [? +php + : ?] + +7 + +8 +cÚfigu¿tiÚ +-> + `g‘V®ue +( +$aùiÚ +.'.aùiÚs'è +as + +$Çme + => +$·¿ms +): ?> + +9 + +10 + `addC»d’tŸlCÚd™iÚ +('[?ph°echØ$h–³r->lškToD–‘e($fÜm->g‘Objeù(), '.$this-> + `asPhp +( +$·¿ms +).') ?]', $params) ?> + +12 + +13 + `addC»d’tŸlCÚd™iÚ +('[?ph°echØ$h–³r->lškToLi¡('.$this-> + `asPhp +( +$·¿ms +).') ?]', $params) ?> + +15 + +16 + `addC»d’tŸlCÚd™iÚ +('[?ph°echØ$h–³r->lškToSave($fÜm->g‘Objeù(), '.$this-> + `asPhp +( +$·¿ms +).') ?]', $params) ?> + +18 + +19 + `addC»d’tŸlCÚd™iÚ +('[?ph°echØ$h–³r->lškToSaveAndAdd($fÜm->g‘Objeù(), '.$this-> + `asPhp +( +$·¿ms +).') ?]', $params) ?> + +21 + +22 < +li + +þass +="sf_admin_action_"> + +23 [? +php + ià( + `m‘hod_exi¡s +( +$h–³r +, 'linkTo')): ?] + +24 + `addC»d’tŸlCÚd™iÚ +('[?ph°echØ$h–³r->lškTo'. +$m‘hod +.'($fÜm->g‘Objeù(), '.$this-> + `asPhp +( +$·¿ms +).') ?]', $params) ?> + +26 [? +php + : ?] + +27 + `addC»d’tŸlCÚd™iÚ +($this-> + `g‘LškToAùiÚ +( +$Çme +, +$·¿ms +, +Œue +), $params) ?> + +29 [? +php + +’dif +; ?] + +30 + +31 + +32 + +33 + +34 [? +php + +’dif +; ?] + +35 + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/_form_field.php + +1 [? +php + ià( +$f›ld +-> + $isP¬tŸl +()): ?] + +2 [? +php + + `šþude_·¹Ÿl +('g‘ModuËName(è?>/'. +$Çme +, + `¬¿y +('fÜm' => +$fÜm +, '©Œibu‹s' => +$©Œibu‹s + +š¡ªûof + +sfOuutEsÿ³r + ? $©Œibu‹s-> + $g‘RawV®ue +(è: +$©Œibu‹s +)) ?] + +3 [? +php + + `–£if + ( +$f›ld +-> + $isCompڒt +()): ?] + +4 [? +php + + `šþude_compڒt +('g‘ModuËName(è?>', +$Çme +, + `¬¿y +('fÜm' => +$fÜm +, '©Œibu‹s' => +$©Œibu‹s + +š¡ªûof + +sfOuutEsÿ³r + ? $©Œibu‹s-> + $g‘RawV®ue +(è: +$©Œibu‹s +)) ?] + +5 [? +php + : ?] + +6 < +div + +þass +="[?phpƒcho $class ?][?php $form[$name]->hasError()‡nd…rint 'ƒrrors' ?]"> + +7 [? +php + +echo + +$fÜm +[ +$Çme +]-> + `»nd”E¼Ü +() ?] + +8 < +div +> + +9 [? +php + +echo + +$fÜm +[ +$Çme +]-> + `»nd”Lab– +( +$Ïb– +) ?] + +11 < +div + +þass +="cڋÁ">[? +php + +echo + +$fÜm +[ +$Çme +]-> + `»nd” +( +$©Œibu‹s + +š¡ªûof + +sfOuutEsÿ³r + ? $©Œibu‹s-> + $g‘RawV®ue +(è: +$©Œibu‹s +è?] + +13 [? +php + ià( +$h–p +): ?] + +14 < +div + +þass +="h–p">[? +php + +echo + + `__ +( +$h–p +, + `¬¿y +(), 'getI18nCatalogue() ?>') ?] + +15 [? +php + + `–£if + ( +$h–p + = +$fÜm +[ +$Çme +]-> + $»nd”H–p +()): ?] + +16 < +div + +þass +="h–p">[? +php + +echo + +$h–p + ?] + +17 [? +php + +’dif +; ?] + +18 + +19 + +20 [? +php + +’dif +; ?] + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/_form_fieldset.php + +1 < +f›ld£t + + gid +="sf_fieldset_[?phpƒcho…reg_replace('/[^a-z0-9_]/', '_', strtolower($fieldset)) ?]"> + +2 [? +php + ià('NONE' !ð +$f›ld£t +): ?] + +3 < +h2 +>[? +php + +echo + +__ +( +$f›ld£t +, +¬¿y +(), 'g‘I18nC©®ogue(è?>'è?] + +4 [? +php + +’dif +; ?] + +6 [? +php + +fܗch + ( +$f›lds + +as + +$Çme + => +$f›ld +): ?] + +7 [? +php + ià(( +is£t +( +$fÜm +[ +$Çme +]è&& $fÜm[$Çme]-> +isHidd’ +()è|| (!is£t($fÜm[$Çme]è&& +$f›ld +-> + $isR—l +()))  ?] + +8 [? +php + + `šþude_·¹Ÿl +('g‘ModuËName(è?>/fÜm_f›ld', + `¬¿y +( + +9 'Çme' => +$Çme +, + +10 '©Œibu‹s' => +$f›ld +-> + `g‘CÚfig +('©Œibu‹s', + `¬¿y +()), + +11 'Ïb–' => +$f›ld +-> + `g‘CÚfig +('label'), + +12 'h–p' => +$f›ld +-> + `g‘CÚfig +('help'), + +13 'fÜm' => +$fÜm +, + +14 'f›ld' => +$f›ld +, + +15 'þass' => 'sf_admš_fÜm_row sf_admš_'. + `¡¹Þow” +( +$f›ld +-> + `g‘Ty³ +()).' sf_admš_fÜm_f›ld_'. +$Çme +, + +17 [? +php + +’dfܗch +; ?] + +18 + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/_form_footer.php + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/_form_header.php + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/_list.php + +1 < +div + + gþass +="sf_admin_list"> + +2 [? +php + ià(! +$·g” +-> + $g‘NbResuÉs +()): ?] + +3 < +p +>[? +php + +echo + + `__ +('NØ»suÉ', + `¬¿y +(), 'sf_admin') ?]

    + +4 [? +php + : ?] + +5 < +bË + +ûÎ¥acšg +="0"> + +6 < +th—d +> + +7 < +Œ +> + +8 +cÚfigu¿tiÚ +-> + `g‘V®ue +('list.batch_actions')): ?> + +9 < +th + +id +="sf_admš_li¡_b©ch_aùiÚs">< +šput + id="sf_admš_li¡_b©ch_checkbox" +ty³ +="checkbox" +Úþick +="checkAll();" /> + +10 + +11 [? +php + + `šþude_·¹Ÿl +('g‘ModuËName(è?>/li¡_th_cÚfigu¿tiÚ->g‘V®ue(' +li¡ +. +Ïyout +'è?>', + `¬¿y +('sÜt' => +$sÜt +)) ?] + +12 +cÚfigu¿tiÚ +-> + `g‘V®ue +('list.object_actions')): ?> + +13 < +th + +id +="sf_admš_li¡_th_aùiÚs">[? +php + +echo + + `__ +('AùiÚs', + `¬¿y +(), 'sf_admin') ?] + +14 + +15 + +16 + +17 < +tfoÙ +> + +18 < +Œ +> + +19 < +th + +cÞ¥ª +="configuration->getValue('list.display')) + ($this->configuration->getValue('list.object_actions') ? 1 : 0) + ($this->configuration->getValue('list.batch_actions') ? 1 : 0) ?>"> + +20 [? +php + ià( +$·g” +-> + $haveToPagš©e +()): ?] + +21 [? +php + + `šþude_·¹Ÿl +('g‘ModuËName(è?>/·gš©iÚ', + `¬¿y +('·g”' => +$·g” +)) ?] + +22 [? +php + +’dif +; ?] + +24 [? +php + +echo + + `fÜm©_numb”_choiû +('[0]‚Ø»suÉ|[1] 1„esuÉ|(1,+Inf] %1%„esuÉs', + `¬¿y +('%1%' => +$·g” +-> + `g‘NbResuÉs +()), $pager->getNbResults(), 'sf_admin') ?] + +25 [? +php + ià( +$·g” +-> + $haveToPagš©e +()): ?] + +26 [? +php + +echo + + `__ +('Õag%%·ge%%/%%nb_·ges%%)', + `¬¿y +('%%·ge%%' => +$·g” +-> + `g‘Page +(), '%%nb_·ges%%' => $·g”-> + `g‘La¡Page +()), 'sf_admin') ?] + +27 [? +php + +’dif +; ?] + +28 + +29 + +30 + +31 < +tbody +> + +32 [? +php + + `fܗch + ( +$·g” +-> + $g‘ResuÉs +(è +as + +$i + => +$ + + `g‘SšguÏrName +(è?>): +$odd + = + `fmod +(++$i, 2) ? 'odd' : 'even' ?] + +33 < +Œ + +þass +="sf_admin_row [?phpƒcho $odd ?]"> + +34 +cÚfigu¿tiÚ +-> + `g‘V®ue +('list.batch_actions')): ?> + +35 [? +php + + `šþude_·¹Ÿl +('g‘ModuËName(è?>/li¡_td_b©ch_aùiÚs', + `¬¿y +('g‘SšguÏrName(è?>' => +$ + + `g‘SšguÏrName +(è?>, 'h–³r' => +$h–³r +)) ?] + +36 + +37 [? +php + + `šþude_·¹Ÿl +('g‘ModuËName(è?>/li¡_td_cÚfigu¿tiÚ->g‘V®ue(' +li¡ +. +Ïyout +'è?>', + `¬¿y +('g‘SšguÏrName(è?>' => +$ + + `g‘SšguÏrName +() ?>)) ?] + +38 +cÚfigu¿tiÚ +-> + `g‘V®ue +('list.object_actions')): ?> + +39 [? +php + + `šþude_·¹Ÿl +('g‘ModuËName(è?>/li¡_td_aùiÚs', + `¬¿y +('g‘SšguÏrName(è?>' => +$ + + `g‘SšguÏrName +(è?>, 'h–³r' => +$h–³r +)) ?] + +40 + +41 + +42 [? +php + +’dfܗch +; ?] + +43 + +44 + +45 [? +php + +’dif +; ?] + +46 + +47 < +süt + +ty³ +="text/javascript"> + +49 +funùiÚ + + $checkAÎ +() + +51 +v¬ + +boxes + = +docum’t +. + `g‘EËm’tsByTagName +('šput'); v¬ +šdex + = 0; index < boxes. +Ëngth +; index++è{ +box + = boxes[šdex]; ià(box. +ty³ + =ð'checkbox' && box. +þassName + =ð'sf_admš_b©ch_checkbox'èbox. +checked + = docum’t. + `g‘EËm’tById +('sf_admš_li¡_b©ch_checkbox').checked }  +Œue +; + +52 + } +} + +54 + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/_list_actions.php + +1 +cÚfigu¿tiÚ +-> +g‘V®ue +('list.actions')): ?> + +2 +$·¿ms +): ?> + +3 + +4 +addC»d’tŸlCÚd™iÚ +('[?ph°echØ$h–³r->lškToNew('.$this-> +asPhp +( +$·¿ms +).') ?]', $params)."\n" ?> + +5 + +6 < +li + +þass +="sf_admin_action_"> + +7 +addC»d’tŸlCÚd™iÚ +($this-> +g‘LškToAùiÚ +( +$Çme +, +$·¿ms +, +çl£ +), $params)."\n" ?> + +8 + +9 + +10 + +11 + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/_list_batch_actions.php + +1 +cÚfigu¿tiÚ +-> +g‘V®ue +('list.batch_actions')): ?> + +2 < +li + +þass +="sf_admin_batch_actions_choice"> + +3 < +£Ëù + +Çme +="batch_action"> + +4 < +ÝtiÚ + +v®ue +="">[? +php + +echo + +__ +('Choo£‡ÀaùiÚ', +¬¿y +(), 'sf_admš'è?] + +5 +$·¿ms +): ?> + +6 +addC»d’tŸlCÚd™iÚ +('<ÝtiÚ v®ue="'. +$aùiÚ +.'">[?ph°echØ__(\''. +$·¿ms +['label'].'\',‡rray(), \'sf_admin\') ?]', $params) ?> + +8 + +9 + +10 [? +php + +$fÜm + = +Ãw + +Ba£FÜm +(); ià($fÜm-> + $isCSRFPrÙeùed +()): ?] + +11 < +šput + +ty³ +="hidd’" +Çme +="[?ph°echØ$fÜm->g‘CSRFF›ldName(è?]" +v®ue +="[?phpƒcho $form->getCSRFToken() ?]" /> + +12 [? +php + +’dif +; ?] + +13 < +šput + +ty³ +="subm™" +v®ue +="[?phpƒcho __('go',‡rray(), 'sf_admin') ?]" /> + +14 + +15 + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/_list_field_boolean.php + +1 [? +php + ià( +$v®ue +): ?] + +2 [? +php + +echo + +image_g +( +sfCÚfig +:: +g‘ +('sf_admš_moduË_web_dœ').'/images/tick.²g', +¬¿y +('®t' => +__ +('Checked',‡rray(), 'sf_admin'), 'title' => __('Checked',‡rray(), 'sf_admin'))) ?] + +3 [? +php + : ?] + +4 & +nb¥ +; + +5 [? +php + +’dif +; ?] + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/_list_footer.php + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/_list_header.php + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/_list_td_actions.php + +1 < + gtd +> + +2 < +ul + + gþass +="sf_admin_td_actions"> + +3 +cÚfigu¿tiÚ +-> +g‘V®ue +('li¡.objeù_aùiÚs'è +as + +$Çme + => +$·¿ms +): ?> + +4 + +5 +addC»d’tŸlCÚd™iÚ +('[?ph°echØ$h–³r->lškToD–‘e($'.$this-> +g‘SšguÏrName +().', '.$this-> +asPhp +( +$·¿ms +).') ?]', $params) ?> + +7 + +8 +addC»d’tŸlCÚd™iÚ +('[?ph°echØ$h–³r->lškToEd™($'.$this-> +g‘SšguÏrName +().', '.$this-> +asPhp +( +$·¿ms +).') ?]', $params) ?> + +10 + +11 < +li + +þass +="sf_admin_action_"> + +12 +addC»d’tŸlCÚd™iÚ +($this-> +g‘LškToAùiÚ +( +$Çme +, +$·¿ms +, +Œue +), $params) ?> + +14 + +15 + +16 + +17 + +18 + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/_list_td_batch_actions.php + +1 < + gtd +> + +2 < +šput + + gty³ +="checkbox" +Çme +="ids[]" +v®ue +="[?ph°echØ$g‘SšguÏrName(è?>->g‘Prim¬yKey(è?]" +þass +="sf_admin_batch_checkbox" /> + +3 + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/_list_td_stacked.php + +1 < +td + + gcÞ¥ª +="configuration->getValue('list.display')) ?>"> + +2 [? +php + +echo + +g‘I18NSŒšg +('list.params') ?> ?] + +3 + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/_list_td_tabular.php + +1 +cÚfigu¿tiÚ +-> +g‘V®ue +('li¡.di¥Ïy'è +as + +$Çme + => +$f›ld +): ?> + +2 +addC»d’tŸlCÚd™iÚ +( +¥rštf +(<<< +EOF + + +3 < +td + +þass +="sf_admin_%s sf_admin_list_td_%s"> + +4 [? +php + +echo + % +s + ?] + +5 + +7 +EOF + + +8 , +¡¹Þow” +( +$f›ld +-> +g‘Ty³ +()), +$Çme +, +$this +-> +»nd”F›ld +($f›ld)), $f›ld-> +g‘CÚfig +()) ?> + +9 + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/_list_th_stacked.php + +1 [? +php + +šþude_·¹Ÿl +('g‘ModuËName(è?>/li¡_th_buÏr', +¬¿y +('sÜt' => +$sÜt +)) ?] + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/_list_th_tabular.php + +1 +cÚfigu¿tiÚ +-> +g‘V®ue +('li¡.di¥Ïy'è +as + +$Çme + => +$f›ld +): ?> + +2 [? +php + +¦Ù +('sf_admin.current_header') ?] + +3 < +th + +þass +="sf_admin_getType()) ?> sf_admin_list_th_"> + +4 + $isR—l +()): ?> + +5 [? +php + ià('' =ð +$sÜt +[0]): ?] + +6 [? +php + +echo + + `lšk_to +( + `__ +('g‘CÚfig(' +Ïb– +', '',rueè?>', + `¬¿y +(), 'g‘I18nC©®ogue(è?>'), '@g‘U¾FÜAùiÚ(' +li¡ +'è?>',‡¼ay('qu”y_¡ršg' => 'sÜt=&sÜt_ty³='.( +$sÜt +[1] == 'asc' ? 'desc' : 'asc'))) ?] + +7 [? +php + +echo + + `image_g +( +sfCÚfig +:: + `g‘ +('sf_admš_moduË_web_dœ').'/images/'. +$sÜt +[1].'.²g', + `¬¿y +('®t' => + `__ +($sort[1],‡rray(), 'sf_admin'), 'title' => __($sort[1],‡rray(), 'sf_admin'))) ?] + +8 [? +php + : ?] + +9 [? +php + +echo + + `lšk_to +( + `__ +('g‘CÚfig(' +Ïb– +', '',rueè?>', + `¬¿y +(), 'g‘I18nC©®ogue(è?>'), '@g‘U¾FÜAùiÚ(' +li¡ +') ?>',‡rray('query_string' => 'sort=&sort_type=asc')) ?] + +10 [? +php + +’dif +; ?] + +11 + +12 [? +php + +echo + + `__ +('g‘CÚfig(' +Ïb– +', '',rueè?>', + `¬¿y +(), 'getI18nCatalogue() ?>') ?] + +13 + +14 + +15 [? +php + + `’d_¦Ù +(); ?] + +16 + `addC»d’tŸlCÚd™iÚ +("[?ph°šþude_¦Ù('sf_admš.cu¼’t_h—d”'è?]", +$f›ld +-> + `g‘CÚfig +()) ?> + +17 + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/_pagination.php + +1 < +div + + gþass +="sf_admin_pagination"> + +2 < +a + +h»f +="[?phpƒcho url_for('@getUrlForAction('list') ?>') ?]?page=1"> + +3 [? +php + +echo + +image_g +( +sfCÚfig +:: +g‘ +('sf_admš_moduË_web_dœ').'/images/fœ¡.²g', +¬¿y +('®t' => +__ +('First…age',‡rray(), 'sf_admin'), 'title' => __('First…age',‡rray(), 'sf_admin'))) ?] + +4 + +6 < +a + + gh»f +="[?phpƒcho url_for('@getUrlForAction('list') ?>') ?]?page=[?phpƒcho $pager->getPreviousPage() ?]"> + +7 [? +php + +echo + +image_g +( +sfCÚfig +:: +g‘ +('sf_admš_moduË_web_dœ').'/images/´evious.²g', +¬¿y +('®t' => +__ +('Previous…age',‡rray(), 'sf_admin'), 'title' => __('Previous…age',‡rray(), 'sf_admin'))) ?] + +8 + +10 [? +php + +fܗch + ( +$·g” +-> + $g‘Lšks +(è +as + +$·ge +): ?] + +11 [? +php + ià( +$·ge + =ð +$·g” +-> + $g‘Page +()): ?] + +12 [? +php + +echo + +$·ge + ?] + +13 [? +php + : ?] + +14 < +a + +h»f +="[?ph°echØu¾_fÜ('@g‘U¾FÜAùiÚ('li¡'è?>'è?]?·ge=[?ph°echØ$·g?]">[? +php + +echo + +$·ge + ?] + +15 [? +php + +’dif +; ?] + +16 [? +php + +’dfܗch +; ?] + +18 < +a + +h»f +="[?phpƒcho url_for('@getUrlForAction('list') ?>') ?]?page=[?phpƒcho $pager->getNextPage() ?]"> + +19 [? +php + +echo + + `image_g +( +sfCÚfig +:: + `g‘ +('sf_admš_moduË_web_dœ').'/images/Ãxt.²g', + `¬¿y +('®t' => + `__ +('Next…age',‡rray(), 'sf_admin'), 'title' => __('Next…age',‡rray(), 'sf_admin'))) ?] + +20 + +22 < +a + +h»f +="[?phpƒcho url_for('@getUrlForAction('list') ?>') ?]?page=[?phpƒcho $pager->getLastPage() ?]"> + +23 [? +php + +echo + + `image_g +( +sfCÚfig +:: + `g‘ +('sf_admš_moduË_web_dœ').'/images/Ï¡.²g', + `¬¿y +('®t' => + `__ +('Last…age',‡rray(), 'sf_admin'), 'title' => __('Last…age',‡rray(), 'sf_admin'))) ?] + +24 + +25 + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/editSuccess.php + +1 [? +php + +u£_h–³r +('I18N', 'Date') ?] + +2 [? +php + +šþude_·¹Ÿl +('getModuleName() ?>/assets') ?] + +4 < +div + + gid +="sf_admin_container"> + +5 < +h1 +>[? +php + +echo + +g‘I18NSŒšg +('edit.title') ?> ?] + +7 [? +php + +šþude_·¹Ÿl +('getModuleName() ?>/flashes') ?] + +9 < +div + +id +="sf_admin_header"> + +10 [? +php + +šþude_·¹Ÿl +('g‘ModuËName(è?>/fÜm_h—d”', +¬¿y +('g‘SšguÏrName(è?>' => +$ + +g‘SšguÏrName +(è?>, 'fÜm' => +$fÜm +, 'cÚfigu¿tiÚ' => +$cÚfigu¿tiÚ +)) ?] + +11 + +13 < +div + +id +="sf_admin_content"> + +14 [? +php + +šþude_·¹Ÿl +('g‘ModuËName(è?>/fÜm', +¬¿y +('g‘SšguÏrName(è?>' => +$ + +g‘SšguÏrName +(è?>, 'fÜm' => +$fÜm +, 'cÚfigu¿tiÚ' => +$cÚfigu¿tiÚ +, 'h–³r' => +$h–³r +)) ?] + +15 + +17 < +div + +id +="sf_admin_footer"> + +18 [? +php + +šþude_·¹Ÿl +('g‘ModuËName(è?>/fÜm_foٔ', +¬¿y +('g‘SšguÏrName(è?>' => +$ + +g‘SšguÏrName +(è?>, 'fÜm' => +$fÜm +, 'cÚfigu¿tiÚ' => +$cÚfigu¿tiÚ +)) ?] + +19 + +20 + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/indexSuccess.php + +1 [? +php + +u£_h–³r +('I18N', 'Date') ?] + +2 [? +php + +šþude_·¹Ÿl +('getModuleName() ?>/assets') ?] + +4 < +div + + gid +="sf_admin_container"> + +5 < +h1 +>[? +php + +echo + +g‘I18NSŒšg +('list.title') ?> ?] + +7 [? +php + +šþude_·¹Ÿl +('getModuleName() ?>/flashes') ?] + +9 < +div + +id +="sf_admin_header"> + +10 [? +php + +šþude_·¹Ÿl +('g‘ModuËName(è?>/li¡_h—d”', +¬¿y +('·g”' => +$·g” +)) ?] + +11 + +13 +cÚfigu¿tiÚ +-> + $hasFž‹rFÜm +()): ?> + +14 < +div + +id +="sf_admin_bar"> + +15 [? +php + + `šþude_·¹Ÿl +('g‘ModuËName(è?>/fž‹rs', + `¬¿y +('fÜm' => +$fž‹rs +, 'cÚfigu¿tiÚ' => +$cÚfigu¿tiÚ +)) ?] + +16 + +17 + +19 < +div + +id +="sf_admin_content"> + +20 +cÚfigu¿tiÚ +-> + `g‘V®ue +('list.batch_actions')): ?> + +21 < +fÜm + +aùiÚ +="[?ph°echØu¾_fÜ('g‘U¾FÜAùiÚ('cÞËùiÚ'è?>',‡¼ay('aùiÚ' => 'b©ch')è?]" +m‘hod +="post"> + +22 + +23 [? +php + + `šþude_·¹Ÿl +('g‘ModuËName(è?>/li¡', + `¬¿y +('·g”' => +$·g” +, 'sÜt' => +$sÜt +, 'h–³r' => +$h–³r +)) ?] + +24 < +ul + +þass +="sf_admin_actions"> + +25 [? +php + + `šþude_·¹Ÿl +('g‘ModuËName(è?>/li¡_b©ch_aùiÚs', + `¬¿y +('h–³r' => +$h–³r +)) ?] + +26 [? +php + + `šþude_·¹Ÿl +('g‘ModuËName(è?>/li¡_aùiÚs', + `¬¿y +('h–³r' => +$h–³r +)) ?] + +27 + +28 +cÚfigu¿tiÚ +-> + `g‘V®ue +('list.batch_actions')): ?> + +29 + +30 + +31 + +33 < +div + +id +="sf_admin_footer"> + +34 [? +php + + `šþude_·¹Ÿl +('g‘ModuËName(è?>/li¡_foٔ', + `¬¿y +('·g”' => +$·g” +)) ?] + +35 + +36 + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/template/templates/newSuccess.php + +1 [? +php + +u£_h–³r +('I18N', 'Date') ?] + +2 [? +php + +šþude_·¹Ÿl +('getModuleName() ?>/assets') ?] + +4 < +div + + gid +="sf_admin_container"> + +5 < +h1 +>[? +php + +echo + +g‘I18NSŒšg +('new.title') ?> ?] + +7 [? +php + +šþude_·¹Ÿl +('getModuleName() ?>/flashes') ?] + +9 < +div + +id +="sf_admin_header"> + +10 [? +php + +šþude_·¹Ÿl +('g‘ModuËName(è?>/fÜm_h—d”', +¬¿y +('g‘SšguÏrName(è?>' => +$ + +g‘SšguÏrName +(è?>, 'fÜm' => +$fÜm +, 'cÚfigu¿tiÚ' => +$cÚfigu¿tiÚ +)) ?] + +11 + +13 < +div + +id +="sf_admin_content"> + +14 [? +php + +šþude_·¹Ÿl +('g‘ModuËName(è?>/fÜm', +¬¿y +('g‘SšguÏrName(è?>' => +$ + +g‘SšguÏrName +(è?>, 'fÜm' => +$fÜm +, 'cÚfigu¿tiÚ' => +$cÚfigu¿tiÚ +, 'h–³r' => +$h–³r +)) ?] + +15 + +17 < +div + +id +="sf_admin_footer"> + +18 [? +php + +šþude_·¹Ÿl +('g‘ModuËName(è?>/fÜm_foٔ', +¬¿y +('g‘SšguÏrName(è?>' => +$ + +g‘SšguÏrName +(è?>, 'fÜm' => +$fÜm +, 'cÚfigu¿tiÚ' => +$cÚfigu¿tiÚ +)) ?] + +19 + +20 + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/parts/createAction.php + +1 +public + +funùiÚ + + $execu‹C»©e +( +sfWebReque¡ + +$»que¡ +) + +3 +·¿ms +['with_propel_route']) && $this->params['with_propel_route']): ?> + +4 + +5 +$this +-> + `fÜw¬d404UÆess +( +$»que¡ +-> + `isM‘hod +( +sfReque¡ +:: +POST +)); + +7 + +8 +$this +-> +fÜm + = +Ãw + + `g‘Mod–CÏss +().'Form' ?>(); + +10 +$this +-> + `´oûssFÜm +( +$»que¡ +, $this-> +fÜm +); + +12 +$this +-> + `£tTem¶©e +('new'); + +13 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/parts/deleteAction.php + +1 +public + +funùiÚ + + $execu‹D–‘e +( +sfWebReque¡ + +$»que¡ +) + +3 +$»que¡ +-> + `checkCSRFPrÙeùiÚ +(); + +5 +·¿ms +['with_propel_route']) && $this->params['with_propel_route']): ?> + +6 +$this +-> + `g‘Rou‹ +()-> + `g‘Objeù +()-> + `d–‘e +(); + +7 + +8 +$this +-> + `fÜw¬d404UÆess +( +$ + + `g‘SšguÏrName +(è?> = + `g‘Mod–CÏss +().'::PEER'è?>:: + `»Œ›veByPk +( + `g‘R‘r›veByPkP¬amsFÜAùiÚ +(43è?>), + `¥rštf +('Object getSingularName() ?> does‚otƒxist (%s).', getRetrieveByPkParamsForAction(43) ?>)); + +9 +$ + + `g‘SšguÏrName +(è?>-> + `d–‘e +(); + +10 + +12 +·¿ms +['route_prefix']) && $this->params['route_prefix']): ?> + +13 +$this +-> + `»dœeù +('@g‘U¾FÜAùiÚ(' +li¡ +') ?>'); + +14 + +15 +$this +-> + `»dœeù +('getModuleName() ?>/index'); + +16 + +17 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/parts/editAction.php + +1 +public + +funùiÚ + + $execu‹Ed™ +( +sfWebReque¡ + +$»que¡ +) + +3 +·¿ms +['with_propel_route']) && $this->params['with_propel_route']): ?> + +4 +$this +-> +fÜm + = +Ãw + + `g‘Mod–CÏss +().'FÜm' ?>($this-> + `g‘Rou‹ +()-> + `g‘Objeù +()); + +5 + +6 +$this +-> + `fÜw¬d404UÆess +( +$ + + `g‘SšguÏrName +(è?> = + `g‘Mod–CÏss +().'::PEER'è?>:: + `»Œ›veByPk +( + `g‘R‘r›veByPkP¬amsFÜAùiÚ +(43è?>), + `¥rštf +('Object getSingularName() ?> does‚otƒxist (%s).', getRetrieveByPkParamsForAction(43) ?>)); + +7 +$this +-> +fÜm + = +Ãw + + `g‘Mod–CÏss +().'FÜm' ?>( +$ + + `g‘SšguÏrName +() ?>); + +8 + +9 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/parts/indexAction.php + +1 +public + +funùiÚ + + $execu‹Index +( +sfWebReque¡ + +$»que¡ +) + +3 +·¿ms +['with_propel_route']) && $this->params['with_propel_route']): ?> + +4 +$this +-> + `g‘Plu¿lName +(è?> = $this-> + `g‘Rou‹ +()-> + `g‘Objeùs +(); + +5 + +6 +$this +-> + `g‘Plu¿lName +(è?> = + `g‘Mod–CÏss +().'::PEER'è?>:: + `doS–eù +( +Ãw + + `Cr™”Ÿ +()); + +7 + +8 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/parts/newAction.php + +1 +public + +funùiÚ + + $execu‹New +( +sfWebReque¡ + +$»que¡ +) + +3 +$this +-> +fÜm + = +Ãw + + `g‘Mod–CÏss +().'Form' ?>(); + +4 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/parts/processFormAction.php + +1 +´Ùeùed + +funùiÚ + + $´oûssFÜm +( +sfWebReque¡ + +$»que¡ +, +sfFÜm + +$fÜm +) + +3 +$fÜm +-> + `bšd +( +$»que¡ +-> + `g‘P¬am‘” +($fÜm-> + `g‘Name +()), $»que¡-> + `g‘Fžes +($form->getName())); + +4 ià( +$fÜm +-> + `isV®id +()) + +6 +$ + + `g‘SšguÏrName +(è?> = +$fÜm +-> + `§ve +(); + +8 +·¿ms +['route_prefix']) && $this->params['route_prefix']): ?> + +9 +$this +-> + `»dœeù +('@g‘U¾FÜAùiÚ(' +ed™ +') ?>?getPrimaryKeyUrlParams() ?>); + +10 + +11 +$this +-> + `»dœeù +('getModuleName() ?>/edit?getPrimaryKeyUrlParams() ?>); + +12 + +14 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/parts/showAction.php + +1 +public + +funùiÚ + + $execu‹Show +( +sfWebReque¡ + +$»que¡ +) + +3 +·¿ms +['with_propel_route']) && $this->params['with_propel_route']): ?> + +4 +$this +-> + `g‘SšguÏrName +(è?> = $this-> + `g‘Rou‹ +()-> + `g‘Objeù +(); + +5 + +6 +$this +-> + `g‘SšguÏrName +(è?> = + `g‘Mod–CÏss +().'::PEER'è?>:: + `»Œ›veByPk +( + `g‘R‘r›veByPkP¬amsFÜAùiÚ +(49) ?>); + +7 +$this +-> + `fÜw¬d404UÆess +($this-> + `g‘SšguÏrName +() ?>); + +8 + +9 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/parts/updateAction.php + +1 +public + +funùiÚ + + $execu‹Upd©e +( +sfWebReque¡ + +$»que¡ +) + +3 +·¿ms +['with_propel_route']) && $this->params['with_propel_route']): ?> + +4 +$this +-> +fÜm + = +Ãw + + `g‘Mod–CÏss +().'FÜm' ?>($this-> + `g‘Rou‹ +()-> + `g‘Objeù +()); + +5 + +6 +$this +-> + `fÜw¬d404UÆess +( +$»que¡ +-> + `isM‘hod +( +sfReque¡ +:: +POST +è|| $»que¡->isM‘hod(sfReque¡:: +PUT +)); + +7 +$this +-> + `fÜw¬d404UÆess +( +$ + + `g‘SšguÏrName +(è?> = + `g‘Mod–CÏss +().'::PEER'è?>:: + `»Œ›veByPk +( + `g‘R‘r›veByPkP¬amsFÜAùiÚ +(43è?>), + `¥rštf +('Object getSingularName() ?> does‚otƒxist (%s).', getRetrieveByPkParamsForAction(43) ?>)); + +8 +$this +-> +fÜm + = +Ãw + + `g‘Mod–CÏss +().'FÜm' ?>( +$ + + `g‘SšguÏrName +() ?>); + +9 + +11 +$this +-> + `´oûssFÜm +( +$»que¡ +, $this-> +fÜm +); + +13 +$this +-> + `£tTem¶©e +('edit'); + +14 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/skeleton/actions/actions.class.php + +1 +g‘G’”©edModuËName +(è?> +AùiÚs + +ex‹nds + +g‘AùiÚsBa£CÏss +() ?> + +13 + +15 +·¿ms +['w™h_show']è&& + g$this +-> + g·¿ms +['with_show']): ?> + +16 + +18 + +19 + +21 + +23 + +25 + +27 + +29 + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/template/templates/_form.php + +1 [? +php + +u£_¡yËsh“ts_fÜ_fÜm +( +$fÜm +) ?] + +2 [? +php + +u£_javasüts_fÜ_fÜm +( +$fÜm +) ?] + +4 +g‘FÜmObjeù +() ?> + +5 +·¿ms +['route_prefix']) && $this->params['route_prefix']): ?> + +6 [? +php + +echo + +fÜm_g_fÜ +( +$fÜm +, '@·¿ms[' +rou‹_´efix +'] ?>') ?] + +7 + +8 < +fÜm + +aùiÚ +="[?ph°echØu¾_fÜ('g‘ModuËName(è?>/'.($fÜm->g‘Objeù()->isNew(è? 'ü—‹' : 'upd©e').(!$fÜm->g‘Objeù()->isNew(è? '?g‘Prim¬yKeyU¾P¬ams('$fÜm->g‘Objeù()',rueè?> : '')è?]" +m‘hod +="po¡" [? +php + +$fÜm +-> + $isMuɝ¬t +(è +ªd + +´št + 'enctype="multipart/form-data" ' ?]> + +9 [? +php + ià(! +$fÜm +-> + `g‘Objeù +()-> + $isNew +()): ?] + +10 < +šput + +ty³ +="hidd’" +Çme +="sf_m‘hod" +v®ue +="put" /> + +11 [? +php + +’dif +; ?] + +12 + +13 < +bË +> + +14 < +tfoÙ +> + +15 < +Œ +> + +16 < +td + +cÞ¥ª +="2"> + +17 +·¿ms +['non_verbose_templates']) || !$this->params['non_verbose_templates']): ?> + +18 [? +php + +echo + +$fÜm +-> + `»nd”Hidd’F›lds +( +çl£ +) ?] + +19 + +20 +·¿ms +['route_prefix']) && $this->params['route_prefix']): ?> + +21 & +nb¥ +;< +a + +h»f +="[?ph°echØu¾_fÜ('g‘U¾FÜAùiÚ('li¡'è?>'è?]"> +Back + +to + +li¡ + + +22 + +23 & +nb¥ +;< +a + +h»f +="[?ph°echØu¾_fÜ('g‘ModuËName(è?>/šdex'è?]"> +Back + +to + +li¡ + + +24 + +25 [? +php + ià(! +$fÜm +-> + `g‘Objeù +()-> + $isNew +()): ?] + +26 +·¿ms +['route_prefix']) && $this->params['route_prefix']): ?> + +27 & +nb¥ +;[? +php + +echo + + `lšk_to +('D–‘e', 'g‘U¾FÜAùiÚ(' +d–‘e +'è?>', +$fÜm +-> + `g‘Objeù +(), + `¬¿y +('method' => 'delete', 'confirm' => 'Are you sure?')) ?] + +28 + +29 & +nb¥ +;[? +php + +echo + + `lšk_to +('D–‘e', 'g‘ModuËName(è?>/d–‘e?g‘Prim¬yKeyU¾P¬ams(' +$fÜm +-> + `g‘Objeù +()',rueè?>,‡¼ay(' +m‘hod +' => ' +d–‘e +', ' +cÚfœm +' => ' +A» + +you + +su» +?')) ?] + +30 + +31 [? +php + +’dif +; ?] + +32 < +šput + +ty³ +="subm™" +v®ue +="Save" /> + +33 + +34 + +35 + +36 < +tbody +> + +37 +·¿ms +['non_verbose_templates']) && $this->params['non_verbose_templates']): ?> + +38 [? +php + +echo + +$fÜm + ?] + +39 + +40 [? +php + +echo + +$fÜm +-> + `»nd”Glob®E¼Üs +() ?] + +41 +$f›ld +): ià($f›ld-> + $isHidd’ +())  ?> + +42 < +Œ +> + +43 < +th +>[? +php + +echo + +$fÜm +['']-> + `»nd”Lab– +() ?] + +44 < +td +> + +45 [? +php + +echo + +$fÜm +['']-> + `»nd”E¼Ü +() ?] + +46 [? +php + +echo + +$fÜm +[''] ?] + +47 + +48 + +49 + +50 + +51 + +52 + +53 + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/template/templates/editSuccess.php + +1 < + gh1 +> + gEd™ + +g‘SšguÏrName +()è?> + +3 [? +php + +šþude_·¹Ÿl +('fÜm', +¬¿y +('fÜm' => +$fÜm +)) ?] + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/template/templates/indexSuccess.php + +1 < + gh1 +> +g‘Plu¿lName +()è?> +Li¡ + + +3 < +bË +> + +4 < +th—d +> + +5 < +Œ +> + +6 +g‘TabËM­ +()-> + $g‘CÞumns +(è +as + +$cÞumn +): ?> + +7 < +th +> + `g‘PhpName +())) ?> + +8 + +9 + +10 + +11 < +tbody +> + +12 [? +php + + `fܗch + ( +$ + + `g‘Plu¿lName +(è?> +as + $ + `g‘SšguÏrName +() ?>): ?] + +13 < +Œ +> + +14 + `g‘TabËM­ +()-> + $g‘CÞumns +(è +as + +$cÞumn +): ?> + +15 + $isPrim¬yKey +()): ?> + +16 +·¿ms +['route_prefix']) && $this->params['route_prefix']): ?> + +17 < +td +>< +a + +h»f +="[?ph°echØu¾_fÜ('g‘U¾FÜAùiÚ(is£t($this->·¿ms['w™h_show']è&& $this->·¿ms['w™h_show'] ? 'show' : 'ed™'è?>', $g‘SšguÏrName(è?>è?]">[? +php + +echo + +$ + + `g‘SšguÏrName +(è?>-> +g‘ + + `g‘PhpName +() ?>() ?] + +18 + +19 < +td +>< +a + +h»f +="[?ph°echØu¾_fÜ('g‘ModuËName(è?>/·¿ms['w™h_show']è&& $this->·¿ms['w™h_show'] ? 'show' : 'ed™' ?>?g‘Prim¬yKeyU¾P¬ams(è?>è?]">[? +php + +echo + +$ + + `g‘SšguÏrName +(è?>-> +g‘ + + `g‘PhpName +() ?>() ?] + +20 + +21 + +22 < +td +>[? +php + +echo + +$ + + `g‘SšguÏrName +(è?>-> +g‘ + + `g‘PhpName +() ?>() ?] + +23 + +24 + +25 + +26 [? +php + +’dfܗch +; ?] + +27 + +28 + +30 +·¿ms +['route_prefix']) && $this->params['route_prefix']): ?> + +31 < +a + +h»f +="[?ph°echØu¾_fÜ('g‘U¾FÜAùiÚ('Ãw'è?>'è?]"> +New + + +32 + +33 < +a + +h»f +="[?ph°echØu¾_fÜ('g‘ModuËName(è?>/Ãw'è?]"> +New + + +34 + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/template/templates/newSuccess.php + +1 < + gh1 +> + gNew + +g‘SšguÏrName +()è?> + +3 [? +php + +šþude_·¹Ÿl +('fÜm', +¬¿y +('fÜm' => +$fÜm +)) ?] + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/data/generator/sfPropelModule/default/template/templates/showSuccess.php + +1 < + gbË +> + +2 < + gtbody +> + +3 +g‘TabËM­ +()-> + $g‘CÞumns +(è +as + +$cÞumn +): ?> + +4 < +Œ +> + +5 < +th +> + `g‘PhpName +())) ?>: + +6 < +td +>[? +php + +echo + +$ + + `g‘SšguÏrName +(è?>-> +g‘ + + `g‘PhpName +() ?>() ?] + +7 + +8 + +9 + +10 + +12 < +hr + /> + +14 +·¿ms +['route_prefix']) && $this->params['route_prefix']): ?> + +15 < +a + +h»f +="[?ph°echØu¾_fÜ('g‘U¾FÜAùiÚ('ed™'è?>', $g‘SšguÏrName(è?>è?]"> +Ed™ + + +16 & +nb¥ +; + +17 < +a + +h»f +="[?ph°echØu¾_fÜ('g‘U¾FÜAùiÚ('li¡'è?>'è?]"> +Li¡ + + +18 + +19 < +a + +h»f +="[?ph°echØu¾_fÜ('g‘ModuËName(è?>/ed™?g‘Prim¬yKeyU¾P¬ams(è?>è?]"> +Ed™ + + +20 & +nb¥ +; + +21 < +a + +h»f +="[?ph°echØu¾_fÜ('g‘ModuËName(è?>/šdex'è?]"> +Li¡ + + +22 + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/addon/sfMixer.class.php + +1 + `g‘M‘hod +( +$mixšM‘hod +); + +38 ià(! +$rm +-> + `isStic +()) + +40 +$Ïzy + = +Œue +; + +46 +$mixšM‘hod + = +$ÿÎabË +; + +49 +$tmp + = + `ex¶ode +(':', +$Çme +); + +50 +$þass + = +$tmp +[0]; + +53 ià( + `is£t +( +$tmp +[1])) + +55 +$m‘hod + = +$tmp +[1]; + +58 ià( + `is£t +( +$tmp +[2])) + +60 +$hook + = +$tmp +[2]; + +64 +$hook + = +$m‘hod +; + +65 +$Çme + .ð':'. +$hook +; + +71 +$m‘hod + = +$mixšM‘hod +; + +72 +$Çme + = +$þass +.':'. +$m‘hod +; + +73 +$hook + = ''; + +77 ià(! +$hook + && + `is£t +( +£lf +:: +$mixšs +[ +$Çme +])) + +79 +throw + +Ãw + + `Exû±iÚ +( + `¥rštf +('Thþas "%s" ha ®»ady‡ mixš fÜ m‘hod "%s".', +$þass +, +$mixšM‘hod +)); + +83 ià(! + `is£t +( +£lf +:: +$mixšs +[ +$Çme +])) + +85 +£lf +:: +$mixšs +[ +$Çme +] = + `¬¿y +(); + +88 ià(! + `is£t +( +£lf +:: +$mixšP¬am‘”s +[ +$Çme +])) + +90 +£lf +:: +$mixšP¬am‘”s +[ +$Çme +] = + `¬¿y +(); + +93 +£lf +:: +$mixšs +[ +$Çme +][] = +$ÿÎabË +; + +94 +£lf +:: +$mixšP¬am‘”s +[ +$Çme +][] = + `¬¿y +( + +95 'Ïzy' => +$Ïzy +, + +96 'þass' => +$þass +, + +97 'm‘hod' => +$m‘hod +, + +98 'hook' => +$hook +, + +102  +public + +funùiÚ + + $g‘MixšIn¡ªû +( +$Çme +) + +104 ià(! + `is£t +( +£lf +:: +$mixšs +[ +$Çme +])) + +109 + `fܗch + ( +£lf +:: +$mixšs +[ +$Çme +] +as + +$i + => +$mixš +) + +111 ià(! +£lf +:: +$mixšP¬am‘”s +[ +$Çme +][ +$i +]['lazy']) + +116 +$þass + = +$mixš +[0]; + +117 ià(! + `is£t +( +£lf +:: +$mixšIn¡ªûs +[ +$þass +])) + +119 +£lf +:: +$mixšIn¡ªûs +[ +$þass +] = +Ãw + + `$þass +(); + +120 ià( + `m‘hod_exi¡s +( +£lf +:: +$mixšIn¡ªûs +[ +$þass +], 'initialize')) + +122 +£lf +:: +$mixšIn¡ªûs +[ +$þass +]-> + `š™Ÿlize +(); + +126 +£lf +:: +$mixšP¬am‘”s +[ +$Çme +][ +$i +]['Ïzy'] = +çl£ +; + +127 +£lf +:: +$mixšs +[ +$Çme +][ +$i +][0] = s–f:: +$mixšIn¡ªûs +[ +$þass +]; + +129 + } +} + +131  +public + +funùiÚ + + $g‘C®ÏbËs +( +$Çme +) + +133 +£lf +:: + `g‘MixšIn¡ªû +( +$Çme +); + +135  + `is£t +( +£lf +:: +$mixšs +[ +$Çme +]è? s–f::$mixšs[$Çme] : + `¬¿y +(); + +136 + } +} + +138  +public + +funùiÚ + + $g‘C®ÏbË +( +$Çme +) + +140 +£lf +:: + `g‘MixšIn¡ªû +( +$Çme +); + +142  + `is£t +( +£lf +:: +$mixšs +[ +$Çme +]è? s–f::$mixšs[$Çme][0] : +nuÎ +; + +143 + } +} + +145  +public + +funùiÚ + +ÿÎMixšs +( +$hookName + = +nuÎ +, +$mÜeP¬ams + = + $¬¿y +()) + +147 +$Œaûs + = + `debug_backŒaû +(); + +148 +$funùiÚ + = +$Œaûs +[1]['function']; + +149 +$·¿m‘”s + = +$Œaûs +[1]['args']; + +150 +$þass + = +$Œaûs +[1]['class']; + +151 +$ty³ + = +$Œaûs +[1]['type']; + +152 ià('__ÿÎ' =ð +$funùiÚ +) + +154 +$m‘hod + = +$·¿m‘”s +[0]; + +155 +$·¿m‘”s + = $parameters[1]; + +159 +$m‘hod + = +$funùiÚ +; + +162 ià('->' =ð +$ty³ +) + +164 + `¬¿y_unshiá +( +$·¿m‘”s +, +$Œaûs +[1]['object']); + +168 + `¬¿y_unshiá +( +$·¿m‘”s +, +$þass +); + +172 +$·¿m‘”s + = + `¬¿y_m”ge +($·¿m‘”s, ( +¬¿y +è +$mÜeP¬ams +); + +174 ià('__ÿÎ' =ð +$funùiÚ +) + +176 ià( +$ÿÎabË + = +£lf +:: + `g‘C®ÏbË +( +$þass +.':'. +$m‘hod +)) + +178  + `ÿÎ_u£r_func_¬¿y +( +$ÿÎabË +, +$·¿m‘”s +); + +182 +throw + +Ãw + + `Exû±iÚ +( + `¥rštf +('C®ÈtØundefšed m‘hod %s::%s.', +$þass +, +$m‘hod +)); + +187 +$hookName + = $hookNam? $hookNam: +$m‘hod +; + +188 + `fܗch + ( +£lf +:: + `g‘C®ÏbËs +( +$þass +.':'. +$m‘hod +.':'. +$hookName +è +as + +$ÿÎabË +) + +190 + `ÿÎ_u£r_func_¬¿y +( +$ÿÎabË +, +$·¿m‘”s +); + +193 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/addon/sfPropel.class.php + +1 + `nÙify +( +Ãw + + `sfEv’t +( +__CLASS__ +, '­¶iÿtiÚ.log', + `¬¿y +( +__METHOD__ +.'(èha b“Àd•»ÿ‹d. PËa£ c®ÈsfPrݖ::£tDeçuÉCuÉu»(ètØ£ˆthcuÉu».', '´iܙy' => +sfLogg” +:: +NOTICE +))); + +36 ià( +nuÎ + !=ð +$cuÉu» +) + +38 +£lf +:: + `£tDeçuÉCuÉu» +( +$cuÉu» +); + +40 ià( + `þass_exi¡s +('sfCڋxt', +çl£ +è&& +sfCڋxt +:: + `hasIn¡ªû +(è&& +$u£r + = sfCڋxt:: + `g‘In¡ªû +()-> + `g‘U£r +()) + +42 +£lf +:: + `£tDeçuÉCuÉu» +( +$u£r +-> + `g‘CuÉu» +()); + +51  +public + +funùiÚ + + $£tDeçuÉCuÉu» +( +$cuÉu» +) + +53 +£lf +:: +$deçuÉCuÉu» + = +$cuÉu» +; + +54 + } +} + +61  +public + +funùiÚ + + $g‘DeçuÉCuÉu» +() + +63  +£lf +:: +$deçuÉCuÉu» +; + +64 + } +} + +72  +public + +funùiÚ + + $li¡’ToChªgeCuÉu»Ev’t +( +sfEv’t + +$ev’t +) + +74 +£lf +:: + `£tDeçuÉCuÉu» +( +$ev’t +['culture']); + +75 + } +} + +80  +public + +funùiÚ + + $impÜt +( +$·th +) + +82  +Prݖ +:: + `impÜtCÏss +( +$·th +); + +83 + } +} + +88  +public + +funùiÚ + + $impÜtCÏss +( +$·th +) + +90  +Prݖ +:: + `impÜtCÏss +( +$·th +); + +91 + } +} + +98  +public + +funùiÚ + + $þ—rAÎIn¡ªûPoÞs +() + +100 +sfProjeùCÚfigu¿tiÚ +:: + `g‘Aùive +()-> + `g‘PlugšCÚfigu¿tiÚ +('sfPrݖPlugš')-> + `þ—rAÎIn¡ªûPoÞs +(); + +101 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/addon/sfPropelBehavior.class.php + +1 ‡rray(), 'hooks' =>‡rray()); + +31 + `fܗch + ( +$ÿÎabËs + +as + +$ÿÎabË +) + +33 +£lf +:: +$behaviÜs +[ +$Çme +]['m‘hods'][] = +$ÿÎabË +; + +37  +public + +funùiÚ + + $»gi¡”Hooks +( +$Çme +, +$hooks +) + +39 ià(! + `is£t +( +£lf +:: +$behaviÜs +[ +$Çme +])) + +41 +£lf +:: +$behaviÜs +[ +$Çme +] = + `¬¿y +('methods' =>‡rray(), 'hooks' =>‡rray()); + +43 + `fܗch + ( +$hooks + +as + +$hook + => +$ÿÎabË +) + +45 ià(! + `is£t +( +£lf +:: +$behaviÜs +[ +$Çme +]['hooks'])) + +47 +£lf +:: +$behaviÜs +[ +$Çme +]['hooks'][ +$hook +] = + `¬¿y +(); + +50 +£lf +:: +$behaviÜs +[ +$Çme +]['hooks'][ +$hook +][] = +$ÿÎabË +; + +52 + } +} + +54  +public + +funùiÚ + + $add +( +$þass +, +$behaviÜs +) + +56 + `fܗch + ( +$behaviÜs + +as + +$Çme + => +$·¿m‘”s +) + +58 ià( + `is_št +( +$Çme +)) + +61 +$Çme + = +$·¿m‘”s +; + +66 + `fܗch + ( +$·¿m‘”s + +as + +$key + => +$v®ue +) + +68 +sfCÚfig +:: + `£t +('´Ý–_behaviÜ_'. +$Çme +.'_'. +$þass +.'_'. +$key +, +$v®ue +); + +72 ià(! + `is£t +( +£lf +:: +$behaviÜs +[ +$Çme +])) + +74 +throw + +Ãw + + `sfCÚfigu¿tiÚExû±iÚ +( + `¥rštf +('Prݖ behaviÜ "%s" i nلegi¡”ed', +$Çme +)); + +78 + `fܗch + ( +£lf +:: +$behaviÜs +[ +$Çme +]['hooks'] +as + +$hook + => +$ÿÎabËs +) + +80 + `fܗch + ( +$ÿÎabËs + +as + +$ÿÎabË +) + +82 +$key + = 'Ba£'. +$þass +. +$hook +.'//'. +£lf +:: + `ÿÎabËToSŒšg +( +$ÿÎabË +); + +83 ià(! + `is£t +( +£lf +:: +$lßded +[ +$key +])) + +85 +sfMix” +::('Ba£'. +$þass +. +$hook +, +$ÿÎabË +); + +86 +£lf +:: +$lßded +[ +$key +] = +Œue +; + +92 + `fܗch + ( +£lf +:: +$behaviÜs +[ +$Çme +]['m‘hods'] +as + +$ÿÎabË +) + +94 +$key + = 'Ba£'. +$þass +.'//'. +£lf +:: + `ÿÎabËToSŒšg +( +$ÿÎabË +); + +95 ià(! + `is£t +( +£lf +:: +$lßded +[ +$key +])) + +97 +sfMix” +::('Ba£'. +$þass +, +$ÿÎabË +); + +98 +£lf +:: +$lßded +[ +$key +] = +Œue +; + +102 + } +} + +104  +´Ùeùed + +funùiÚ + + $ÿÎabËToSŒšg +( +$ÿÎabË +) + +106  + `is_¬¿y +( +$ÿÎabË +è? ( + `is_objeù +($ÿÎabË[0]è? + `g‘_þass +($ÿÎabË[0]è: $ÿÎabË[0]).'::'.$ÿÎabË[1] : + `v¬_expÜt +($ÿÎabË, +Œue +); + +107 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/addon/sfPropelData.class.php + +1 +g‘Fžes +( +$dœeùÜyOrFže +); + +41 + m$this +-> +lßdM­Bužd”s +( +$cÚÃùiÚName +); + +42 + m$this +-> + mdbM­ + = +Prݖ +:: +g‘D©aba£M­ +( +$cÚÃùiÚName +); + +45 + m$this +-> + mcÚ + = +Prݖ +:: +g‘CÚÃùiÚ +( +$cÚÃùiÚName +); + +46 + mŒy + + +48 + m$this +-> + mcÚ +-> +begšT¿n§ùiÚ +(); + +50 + m$this +-> +doD–‘eCu¼’tD©a +( +$fžes +); + +52 + m$this +-> +doLßdD©a +( +$fžes +); + +54 + m$this +-> + mcÚ +-> +comm™ +(); + +56 +ÿtch + ( +Exû±iÚ + +$e +) + +58 + m$this +-> + mcÚ +-> +rÞlBack +(); + +59 +throw + + m$e +; + +72 +public + +funùiÚ + + $lßdD©aFromA¼ay +( +$d©a +) + +74 ià( +$d©a + ==ð +nuÎ +) + +80 + `fܗch + ( +$d©a + +as + +$þass + => +$d©as +) + +82 +$þass + = + `Œim +($class); + +84 +$bËM­ + = +$this +-> +dbM­ +-> + `g‘TabË +( + `cÚ¡ªt +(cÚ¡ªt( +$þass +.'::PEER').'::TABLE_NAME')); + +86 +$cÞumn_Çmes + = + `ÿÎ_u£r_func_¬¿y +( + `¬¿y +( + `cÚ¡ªt +( +$þass +.'::PEER'), 'g‘F›ldNames'),‡¼ay( +Ba£P“r +:: +TYPE_FIELDNAME +)); + +90 ià(! + `is_¬¿y +( +$d©as +)) + +95 + `fܗch + ( +$d©as + +as + +$key + => +$d©a +) + +98 ià(! + `þass_exi¡s +( +$þass +)) + +100 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('UnknowÀþas "%s".', +$þass +)); + +103 +$obj + = +Ãw + + `$þass +(); + +105 ià(! +$obj + +š¡ªûof + +Ba£Objeù +) + +107 +throw + +Ãw + + `RuÁimeExû±iÚ +( + `¥rštf +('Thþas "%s" i nه Prݖ cÏss. Thi ´obably m—n th”i ®»ady‡ cÏs Çmed "%s" somewh”š symfÚy o¸š you¸´ojeù.', +$þass +, $class)); + +110 ià(! + `is_¬¿y +( +$d©a +)) + +112 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('You mu¡ giv¨Çmf܃ach fixtu» d©¨’Œy (þas %s).', +$þass +)); + +115 + `fܗch + ( +$d©a + +as + +$Çme + => +$v®ue +) + +117 ià( + `is_¬¿y +( +$v®ue +è&& 's' =ð + `sub¡r +( +$Çme +, -1)) + +120 +$this +-> + `lßdMªy2Mªy +( +$obj +, + `sub¡r +( +$Çme +, 0, -1), +$v®ue +); + +125 +$isAR—lCÞumn + = +Œue +; + +126 +Œy + + +128 +$cÞumn + = +$bËM­ +-> + `g‘CÞumn +( +$Çme +); + +130 + `ÿtch + ( +PrݖExû±iÚ + +$e +) + +132 +$isAR—lCÞumn + = +çl£ +; + +136 ià( +$isAR—lCÞumn +) + +138 ià( +$cÞumn +-> + `isFÜeignKey +(è&& +nuÎ + !=ð +$v®ue +) + +140 +$»Ï‹dTabË + = +$this +-> +dbM­ +-> + `g‘TabË +( +$cÞumn +-> + `g‘R–©edTabËName +()); + +141 ià(! + `is£t +( +$this +-> +objeù_»ã»nûs +[ +$»Ï‹dTabË +-> + `g‘PhpName +().'_'. +$v®ue +])) + +143 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('Thobjeù "%s" from cÏs "%s" i nÙ defšed iÀyou¸d©¨fže.', +$v®ue +, +$»Ï‹dTabË +-> + `g‘PhpName +())); + +145 +$v®ue + = +$this +-> +objeù_»ã»nûs +[ +$»Ï‹dTabË +-> + `g‘PhpName +().'_'.$v®ue]-> + `g‘ByName +( +$cÞumn +-> + `g‘R–©edName +(), +Ba£P“r +:: +TYPE_COLNAME +); + +149 ià( +çl£ + !=ð +$pos + = + `¬¿y_£¬ch +( +$Çme +, +$cÞumn_Çmes +)) + +151 +$obj +-> + `£tByPos™iÚ +( +$pos +, +$v®ue +); + +153 ià( + `is_ÿÎabË +( + `¬¿y +( +$obj +, +$m‘hod + = '£t'. +sfInæeùÜ +:: + `ÿm–ize +( +$Çme +)))) + +155 +$obj +-> + `$m‘hod +( +$v®ue +); + +159 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('CÞumÀ"%s" dÛ nكxi¡ fÜ cÏs "%s".', +$Çme +, +$þass +)); + +162 +$obj +-> + `§ve +( +$this +-> +cÚ +); + +165 ià( + `m‘hod_exi¡s +( +$obj +, 'getPrimaryKey')) + +167 +$this +-> +objeù_»ã»nûs +[ +Prݖ +:: + `impÜtCÏss +( + `cÚ¡ªt +(cÚ¡ªt( +$þass +.'::PEER').'::CLASS_DEFAULT')).'_'. +$key +] = +$obj +; + +171 + } +} + +180 +´Ùeùed + +funùiÚ + + $lßdMªy2Mªy +( +$obj +, +$middËTabËName +, +$v®ues +) + +182 +$middËTabË + = +$this +-> +dbM­ +-> + `g‘TabË +( +$middËTabËName +); + +183 +$middËCÏss + = +$middËTabË +-> + `g‘PhpName +(); + +184 + `fܗch + ( +$middËTabË +-> + `g‘CÞumns +(è +as + +$cÞumn +) + +186 ià( +$cÞumn +-> + `isFÜeignKey +(è&& + `cÚ¡ªt +(cÚ¡ªt( + `g‘_þass +( +$obj +).'::PEER').'::TABLE_NAME'è!ð$cÞumn-> + `g‘R–©edTabËName +()) + +188 +$»Ï‹dCÏss + = +$this +-> +dbM­ +-> + `g‘TabË +( +$cÞumn +-> + `g‘R–©edTabËName +())-> + `g‘PhpName +(); + +193 ià(! + `is£t +( +$»Ï‹dCÏss +)) + +195 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('UÇbˁØfšdhmªy-to-mªy„–©iÚsh fÜ objeù "%s".', + `g‘_þass +( +$obj +))); + +198 +$£‰” + = '£t'. + `g‘_þass +( +$obj +); + +199 +$»Ï‹dS‘‹r + = '£t'. +$»Ï‹dCÏss +; + +201 + `fܗch + ( +$v®ues + +as + +$v®ue +) + +203 ià(! + `is£t +( +$this +-> +objeù_»ã»nûs +[ +$»Ï‹dCÏss +.'_'. +$v®ue +])) + +205 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('Thobjeù "%s" from cÏs "%s" i nÙ defšed iÀyou¸d©¨fže.', +$v®ue +, +$»Ï‹dCÏss +)); + +208 +$middË + = +Ãw + + `$middËCÏss +(); + +209 +$middË +-> + `$£‰” +( +$obj +); + +210 +$middË +-> + `$»Ï‹dS‘‹r +( +$this +-> +objeù_»ã»nûs +[ +$»Ï‹dCÏss +.'_'. +$v®ue +]); + +211 +$middË +-> + `§ve +(); + +213 + } +} + +224 +´Ùeùed + +funùiÚ + + $doD–‘eCu¼’tD©a +( +$fžes +) + +227 ià(! +$this +-> +d–‘eCu¼’tD©a +) + +232 + `rsÜt +( +$fžes +); + +233 + `fܗch + ( +$fžes + +as + +$fže +) + +235 +$d©a + = +sfYaml +:: + `lßd +( +$fže +); + +237 ià( +$d©a + ==ð +nuÎ +) + +243 +$þas£s + = + `¬¿y_keys +( +$d©a +); + +244 + `fܗch + ( + `¬¿y_»v”£ +( +$þas£s +è +as + +$þass +) + +246 +$þass + = + `Œim +($class); + +247 ià( + `š_¬¿y +( +$þass +, +$this +-> +d–‘edCÏs£s +)) + +253 ià(! + `þass_exi¡s +( + `cÚ¡ªt +( +$þass +.'::PEER'))) + +255 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('UnknowÀþas "%sP“r".', +$þass +)); + +258 + `ÿÎ_u£r_func +( + `¬¿y +( + `cÚ¡ªt +( +$þass +.'::PEER'), 'doD–‘eAÎ'), +$this +-> +cÚ +); + +260 +$this +-> +d–‘edCÏs£s +[] = +$þass +; + +263 + } +} + +270 +´Ùeùed + +funùiÚ + + $lßdM­Bužd”s +( +$cÚÃùiÚName +) + +272 +$dbM­ + = +Prݖ +:: + `g‘D©aba£M­ +(); + +273 +$fžes + = +sfFšd” +:: + `ty³ +('fže')-> + `Çme +('*TabËM­.php')-> + `š +( +sfProjeùCÚfigu¿tiÚ +:: + `g‘Aùive +()-> + `g‘Mod–Dœs +()); + +274 + `fܗch + ( +$fžes + +as + +$fže +) + +276 +$omCÏss + = + `ba£Çme +( +$fže +, 'TableMap.php'); + +277 ià( + `þass_exi¡s +( +$omCÏss +è&& + `is_subþass_of +($omCÏss, 'Ba£Objeù'è&& + `cÚ¡ªt +($omCÏss.'P“r::DATABASE_NAME'è=ð +$cÚÃùiÚName +) + +279 +$bËM­CÏss + = + `ba£Çme +( +$fže +, '.php'); + +280 +$dbM­ +-> + `addTabËFromM­CÏss +( +$bËM­CÏss +); + +283 + } +} + +292 +public + +funùiÚ + +dumpD©a +( +$dœeùÜyOrFže +, +$bËs + = '®l', +$cÚÃùiÚName + = 'propel') + +294 +$dumpD©a + = +$this +-> +g‘D©a +( +$bËs +, +$cÚÃùiÚName +); + +297 ià(! +is_dœ +( +$dœeùÜyOrFže +)) + +299 +fže_put_cڋÁs +( +$dœeùÜyOrFže +, +sfYaml +:: +dump +( +$dumpD©a +, 3)); + +303 + g$i + = 0; + +304 +fܗch + ( +$bËs + +as + +$bËName +) + +306 ià(! +is£t +( +$dumpD©a +[ +$bËName +])) + +311 +fže_put_cڋÁs +( +¥rštf +("%s/%03d-%s.yml", +$dœeùÜyOrFže +, ++ +$i +, +$bËName +), +sfYaml +:: +dump +( +¬¿y +($bËNam=> +$dumpD©a +[$tableName]), 3)); + +324 +public + +funùiÚ + +g‘D©a +( +$bËs + = '®l', +$cÚÃùiÚName + = 'propel') + +326 +$this +-> +lßdM­Bužd”s +( +$cÚÃùiÚName +); + +327 + g$this +-> + gcÚ + = +Prݖ +:: +g‘CÚÃùiÚ +( +$cÚÃùiÚName +); + +328 + g$this +-> + gdbM­ + = +Prݖ +:: +g‘D©aba£M­ +( +$cÚÃùiÚName +); + +331 ià('®l' ==ð +$bËs + || +nuÎ + === $tables) + +333 +$bËs + = +¬¿y +(); + +334 +fܗch + ( +$this +-> +dbM­ +-> +g‘TabËs +(è +as + +$bË +) + +336 + g$bËs +[] = +$bË +-> +g‘PhpName +(); + +339 ià(! +is_¬¿y +( +$bËs +)) + +341 + g$bËs + = +¬¿y +( +$bËs +); + +344 + g$dumpD©a + = +¬¿y +(); + +346 + g$bËs + = +$this +-> +fixOrd”šgOfFÜeignKeyD©a +( +$bËs +); + +347 +fܗch + ( +$bËs + +as + +$bËName +) + +349 + g$bËM­ + = +$this +-> +dbM­ +-> +g‘TabË +( +cÚ¡ªt +(cÚ¡ªt( +$bËName +.'::PEER').'::TABLE_NAME')); + +350 + g$hasP¬’t + = +çl£ +; + +351 + g$haveP¬’ts + = +çl£ +; + +352 + g$fixCÞumn + = +nuÎ +; + +353 +fܗch + ( +$bËM­ +-> +g‘CÞumns +(è +as + +$cÞumn +) + +355 + g$cÞ + = +¡¹Þow” +( +$cÞumn +-> +g‘Name +()); + +356 ià( + g$cÞumn +-> +isFÜeignKey +()) + +358 + g$»Ï‹dTabË + = +$this +-> +dbM­ +-> +g‘TabË +( +$cÞumn +-> +g‘R–©edTabËName +()); + +359 ià( + g$bËName + ==ð +$»Ï‹dTabË +-> +g‘PhpName +()) + +361 ià( +$hasP¬’t +) + +363 +$haveP¬’ts + = +Œue +; + +367 + g$fixCÞumn + = +$cÞumn +; + +368 + g$hasP¬’t + = +Œue +; + +374 ià( + g$haveP¬’ts +) + +381 + g$»suÉsS‘s + = +¬¿y +(); + +382 ià( + g$hasP¬’t +) + +384 + g$»suÉsS‘s +[] = +$this +-> +fixOrd”šgOfFÜeignKeyD©aInSameTabË +( +$»suÉsS‘s +, +$bËName +, +$fixCÞumn +); + +388 + g$š + = +¬¿y +(); + +389 +fܗch + ( +$bËM­ +-> +g‘CÞumns +(è +as + +$cÞumn +) + +391 + g$š +[] = +¡¹Þow” +( +$cÞumn +-> +g‘Name +()); + +393 + g$¡mt + = +$this +-> +cÚ +-> +qu”y +( +¥rštf +('SELECT % FROM %s', +im¶ode +(',', +$š +), +cÚ¡ªt +(cÚ¡ªt( +$bËName +.'::PEER').'::TABLE_NAME'))); + +395 + g$»suÉsS‘s +[] = +$¡mt +-> +ãtchAÎ +( +PDO +:: +FETCH_ASSOC +); + +396 + g$¡mt +-> +þo£CursÜ +(); + +397 +un£t +( +$¡mt +); + +400 +fܗch + ( +$»suÉsS‘s + +as + +$rows +) + +402 if( +couÁ +( +$rows +è> 0 && ! +is£t +( +$dumpD©a +[ +$bËName +])) + +404 + g$dumpD©a +[ +$bËName +] = +¬¿y +(); + +406 +fܗch + ( +$rows + +as + +$row +) + +408 + g$pk + = +$bËName +; + +409 + g$v®ues + = +¬¿y +(); + +410 + g$´im¬yKeys + = +¬¿y +(); + +411 + g$fÜeignKeys + = +¬¿y +(); + +413 +fܗch + ( +$bËM­ +-> +g‘CÞumns +(è +as + +$cÞumn +) + +415 + g$cÞ + = +¡¹Þow” +( +$cÞumn +-> +g‘Name +()); + +416 + g$isPrim¬yKey + = +$cÞumn +-> +isPrim¬yKey +(); + +418 ià( + gnuÎ + ==ð +$row +[ +$cÞ +]) + +423 ià( + g$isPrim¬yKey +) + +425 + g$v®ue + = +$row +[ +$cÞ +]; + +426 + g$pk + .ð'_'. +$v®ue +; + +427 + g$´im¬yKeys +[ +$cÞ +] = +$v®ue +; + +430 ià( + g$cÞumn +-> +isFÜeignKey +()) + +432 + g$»Ï‹dTabË + = +$this +-> +dbM­ +-> +g‘TabË +( +$cÞumn +-> +g‘R–©edTabËName +()); + +433 ià( + g$isPrim¬yKey +) + +435 + g$fÜeignKeys +[ +$cÞ +] = +$row +[$col]; + +436 + g$´im¬yKeys +[ +$cÞ +] = +$»Ï‹dTabË +-> +g‘PhpName +().'_'. +$row +[$col]; + +440 + g$v®ues +[ +$cÞ +] = +$»Ï‹dTabË +-> +g‘PhpName +().'_'. +$row +[$col]; + +442 + g$v®ues +[ +$cÞ +] = +¡¾’ +( +$row +[$cÞ]è? +$»Ï‹dTabË +-> +g‘PhpName +().'_'.$row[$col] : ''; + +445 +–£if + (! +$isPrim¬yKey + || ($isPrim¬yKey && ! +$bËM­ +-> +isU£IdG’”©Ü +())) + +448 + g$v®ues +[ +$cÞ +] = +$row +[$col]; + +452 ià( +couÁ +( +$´im¬yKeys +è> 1 || (couÁ($´im¬yKeysè> 0 && couÁ( +$fÜeignKeys +) > 0)) + +454 + g$v®ues + = +¬¿y_m”ge +( +$´im¬yKeys +, +$v®ues +); + +457 + g$dumpD©a +[ +$bËName +][ +$pk +] = +$v®ues +; + +463  + g$dumpD©a +; + +471 +public + +funùiÚ + + $fixOrd”šgOfFÜeignKeyD©a +( +$þas£s +) + +474  +$i + = 0, +$couÁ + = + `couÁ +( +$þas£s +); $i < $count; $i++) + +476 +$þass + = +$þas£s +[ +$i +]; + +477 +$bËM­ + = +$this +-> +dbM­ +-> + `g‘TabË +( + `cÚ¡ªt +(cÚ¡ªt( +$þass +.'::PEER').'::TABLE_NAME')); + +478 + `fܗch + ( +$bËM­ +-> + `g‘CÞumns +(è +as + +$cÞumn +) + +480 ià( +$cÞumn +-> + `isFÜeignKey +()) + +482 +$»Ï‹dTabË + = +$this +-> +dbM­ +-> + `g‘TabË +( +$cÞumn +-> + `g‘R–©edTabËName +()); + +483 +$»Ï‹dTabËPos + = + `¬¿y_£¬ch +( +$»Ï‹dTabË +-> + `g‘PhpName +(), +$þas£s +); + +486 ià( +$»Ï‹dTabËPos + > +$i +) + +489 +$þas£s + = + `¬¿y_m”ge +( + +490 + `¬¿y_¦iû +( +$þas£s +, 0, +$i +), + +491 + `¬¿y +( +$þas£s +[ +$»Ï‹dTabËPos +]), + +492 + `¬¿y_¦iû +( +$þas£s +, +$i +, +$»Ï‹dTabËPos + - $i), + +493 + `¬¿y_¦iû +( +$þas£s +, +$»Ï‹dTabËPos + + 1) + +497  +$this +-> + `fixOrd”šgOfFÜeignKeyD©a +( +$þas£s +); + +503  +$þas£s +; + +504 + } +} + +506 +´Ùeùed + +funùiÚ + + $fixOrd”šgOfFÜeignKeyD©aInSameTabË +( +$»suÉsS‘s +, +$bËName +, +$cÞumn +, +$š + = +nuÎ +) + +508 +$sql + = + `¥rštf +('SELECT * FROM %s WHERE %s %s', + +509 + `cÚ¡ªt +(cÚ¡ªt( +$bËName +.'::PEER').'::TABLE_NAME'), + +510 + `¡¹Þow” +( +$cÞumn +-> + `g‘Name +()), + +511 +nuÎ + ==ð +$š + ? 'IS NULL' : 'IN ('.$in.')'); + +512 +$¡mt + = +$this +-> +cÚ +-> + `´•¬e +( +$sql +); + +514 +$¡mt +-> + `execu‹ +(); + +516 +$š + = + `¬¿y +(); + +517  +$row + = +$¡mt +-> + `ãtch +( +PDO +:: +FETCH_ASSOC +)) + +519 +$š +[] = "'". +$row +[ + `¡¹Þow” +( +$cÞumn +-> + `g‘R–©edCÞumnName +())]."'"; + +520 +$»suÉsS‘s +[] = +$row +; + +523 ià( +$š + = + `im¶ode +(', ', $in)) + +525 +$»suÉsS‘s + = +$this +-> + `fixOrd”šgOfFÜeignKeyD©aInSameTabË +($»suÉsS‘s, +$bËName +, +$cÞumn +, +$š +); + +528  +$»suÉsS‘s +; + +529 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/addon/sfPropelDatabaseSchema.class.php + +1 +cÚÃùiÚ_Çme + => $this-> +d©aba£ +); + +41 +public + +funùiÚ + + $lßdA¼ay +( +$schema_¬¿y +) + +43 ià( + `is_¬¿y +( +$schema_¬¿y +è&& ! + `em±y +($schema_array)) + +45 +$d©aba£ + = + `¬¿y +(); + +46 +$cÚÃùiÚ_Çme + = ''; + +48 ià( + `is£t +( +$schema_¬¿y +['classes'])) + +51 +$schema_¬¿y + = +$this +-> + `cÚv”tNewToOldYaml +($schema_array); + +54 ià( + `couÁ +( +$schema_¬¿y +) > 1) + +56 +throw + +Ãw + + `sfExû±iÚ +('A schema.yml must only contain 1 databaseƒntry.'); + +59 +$tmp + = + `¬¿y_keys +( +$schema_¬¿y +); + +60 +$cÚÃùiÚ_Çme + = + `¬¿y_shiá +( +$tmp +); + +62 ià( +$cÚÃùiÚ_Çme +) + +64 +$d©aba£ + = +$schema_¬¿y +[ +$cÚÃùiÚ_Çme +]; + +67 +$this +-> +cÚÃùiÚ_Çme + = +$cÚÃùiÚ_Çme +; + +68 +$this +-> +d©aba£ + = +$d©aba£ +; + +70 +$this +-> + `fixYAMLD©aba£ +(); + +71 +$this +-> + `fixYAMLI18n +(); + +72 +$this +-> + `fixYAMLCÞumns +(); + +74 + } +} + +81 +public + +funùiÚ + + $lßdYAML +( +$fže +) + +83 +$schema_¬¿y + = +sfYaml +:: + `lßd +( +$fže +); + +85 ià(! + `is_¬¿y +( +$schema_¬¿y +)) + +90 ià(! + `is£t +( +$schema_¬¿y +['classes'])) + +93 +$schema_¬¿y + = +$this +-> + `cÚv”tOldToNewYaml +($schema_array); + +96 +$this +-> + `lßdA¼ay +( +$schema_¬¿y +); + +97 + } +} + +106 +public + +funùiÚ + + $cÚv”tOldToNewYaml +( +$schema +) + +108 ià( + `is_¬¿y +( +$schema +è&& ! + `em±y +($schema)) + +110 +$Ãw_schema + = + `¬¿y +(); + +112 +$tmp + = + `¬¿y_keys +( +$schema +); + +113 +$cÚÃùiÚ_Çme + = + `¬¿y_shiá +( +$tmp +); + +115 ià(! + `em±y +( +$cÚÃùiÚ_Çme +è&& + `is£t +( +$schema +[$connection_name])) + +117 +$Ãw_schema +['cÚÃùiÚ'] = +$cÚÃùiÚ_Çme +; + +119 +$þas£s + = + `¬¿y +(); + +120 + `fܗch +( +$schema +[ +$cÚÃùiÚ_Çme +] +as + +$bË + => +$bË_·¿ms +) + +122 ià( +$bË + == '_attributes') + +125 +$Ãw_schema + = + `¬¿y_m”ge +($Ãw_schema, +$bË_·¿ms +); + +127 ià('_´Ý–_behaviÜs' =ð +$bË +) + +130 +$Ãw_schema +['´Ý–_behaviÜs'] = +$bË_·¿ms +; + +135 +$phpName + = +sfInæeùÜ +:: + `ÿm–ize +( +$bË +); + +136 ià( + `is£t +( +$bË_·¿ms +['_attributes'])) + +138 +$bË_©Œibu‹s + = +$bË_·¿ms +['_attributes']; + +139 + `un£t +( +$bË_·¿ms +['_attributes']); + +140 ià( + `is£t +( +$bË_©Œibu‹s +['phpName'])) + +142 +$phpName + = +$bË_©Œibu‹s +['phpName']; + +143 + `un£t +( +$bË_©Œibu‹s +['phpName']); + +148 +$bË_©Œibu‹s + = + `¬¿y +(); + +150 +$þas£s +[ +$phpName +] = +$bË_©Œibu‹s +; + +151 +$þas£s +[ +$phpName +]['bËName'] = +$bË +; + +152 +$þas£s +[ +$phpName +]['cÞumns'] = + `¬¿y +(); + +153 + `fܗch +( +$bË_·¿ms + +as + +$cÞumn + => +$cÞumn_·¿ms +) + +155  +$cÞumn +) + +158 +$þas£s +[ +$phpName +]['behaviÜs'] = +$cÞumn_·¿ms +; + +161 +$þas£s +[ +$phpName +]['´Ý–_behaviÜs'] = +$cÞumn_·¿ms +; + +164 +$þas£s +[ +$phpName +]['šh”™ªû'] = +$cÞumn_·¿ms +; + +167 +$þas£s +[ +$phpName +]['áedS‘'] = +$cÞumn_·¿ms +; + +170 +$þas£s +[ +$phpName +]['fÜeignKeys'] = +$cÞumn_·¿ms +; + +173 +$þas£s +[ +$phpName +]['šdexes'] = +$cÞumn_·¿ms +; + +176 +$þas£s +[ +$phpName +]['uniques'] = +$cÞumn_·¿ms +; + +179 +$þas£s +[ +$phpName +]['cÞumns'][ +$cÞumn +] = +$cÞumn_·¿ms +; + +185 +$Ãw_schema +['þas£s'] = +$þas£s +; + +189  +$Ãw_schema +; + +191 + } +} + +200 +public + +funùiÚ + + $cÚv”tNewToOldYaml +( +$schema +) + +202 ià( + `is£t +( +$schema +['connection'])) + +204 +$cÚÃùiÚ_Çme + = +$schema +['connection']; + +205 + `un£t +( +$schema +['connection']); + +209 +$cÚÃùiÚ_Çme + = 'propel'; + +212 +$d©aba£ + = + `¬¿y +(); + +215 ià( + `is£t +( +$schema +['classes'])) + +217 +$bËs + = + `¬¿y +(); + +218 + `fܗch + ( +$schema +['þas£s'] +as + +$þassName + => +$þassP¬ams +) + +220 +$bËP¬ams + = + `¬¿y +(); + +223 ià( + `is£t +( +$þassP¬ams +['columns'])) + +225 +$bËP¬ams + = + `¬¿y_m”ge +( +$þassP¬ams +['columns'], $tableParams); + +226 + `un£t +( +$þassP¬ams +['columns']); + +230 ià( + `is£t +( +$þassP¬ams +['indexes'])) + +232 +$bËP¬ams +['_šdexes'] = +$þassP¬ams +['indexes']; + +233 + `un£t +( +$þassP¬ams +['indexes']); + +235 ià( + `is£t +( +$þassP¬ams +['uniques'])) + +237 +$bËP¬ams +['_uniques'] = +$þassP¬ams +['uniques']; + +238 + `un£t +( +$þassP¬ams +['uniques']); + +240 ià( + `is£t +( +$þassP¬ams +['foreignKeys'])) + +242 +$bËP¬ams +['_fÜeignKeys'] = +$þassP¬ams +['foreignKeys']; + +243 + `un£t +( +$þassP¬ams +['foreignKeys']); + +247 ià( + `is£t +( +$þassP¬ams +['behaviors'])) + +249 +$bËP¬ams +['_behaviÜs'] = +$þassP¬ams +['behaviors']; + +250 + `un£t +( +$þassP¬ams +['behaviors']); + +252 ià( + `is£t +( +$þassP¬ams +['propel_behaviors'])) + +254 +$bËP¬ams +['_´Ý–_behaviÜs'] = +$þassP¬ams +['propel_behaviors']; + +255 + `un£t +( +$þassP¬ams +['propel_behaviors']); + +259 ià( + `is£t +( +$þassP¬ams +['inheritance'])) + +261 +$bËP¬ams +['_šh”™ªû'] = +$þassP¬ams +['inheritance']; + +262 + `un£t +( +$þassP¬ams +['inheritance']); + +266 ià( + `is£t +( +$þassP¬ams +['nestedSet'])) + +268 +$bËP¬ams +['_áedS‘'] = +$þassP¬ams +['nestedSet']; + +269 + `un£t +( +$þassP¬ams +['nestedSet']); + +273 +$bËA‰ribu‹s + = + `¬¿y +(); + +274 ià( + `is£t +( +$þassP¬ams +['tableName'])) + +276 +$bËName + = +$þassP¬ams +['tableName']; + +277 + `un£t +( +$þassP¬ams +['tableName']); + +281 +$bËName + = +sfInæeùÜ +:: + `und”scÜe +( +$þassName +); + +284 ià( +sfInæeùÜ +:: + `ÿm–ize +( +$bËName +è!ð +$þassName +) + +286 +$bËA‰ribu‹s +['phpName'] = +$þassName +; + +289 ià( +$bËA‰ribu‹s + || +$þassP¬ams +) + +291 +$bËP¬ams +['_©Œibu‹s'] = + `¬¿y_m”ge +( +$bËA‰ribu‹s +, +$þassP¬ams +); + +294 +$bËs +[ +$bËName +] = +$bËP¬ams +; + +296 +$d©aba£ + = + `¬¿y_m”ge +($d©aba£, +$bËs +); + +297 + `un£t +( +$schema +['classes']); + +301 ià( + `is£t +( +$schema +['propel_behaviors'])) + +303 +$d©aba£ +['_´Ý–_behaviÜs'] = +$schema +['propel_behaviors']; + +304 + `un£t +( +$schema +['propel_behaviors']); + +308 ià( +$schema +) + +310 +$d©aba£ +['_©Œibu‹s'] = +$schema +; + +313  + `¬¿y +( +$cÚÃùiÚ_Çme + => +$d©aba£ +); + +314 + } +} + +321 +public + +funùiÚ + + $asXML +() + +323 +$xml + = "\n"; + +325 +$xml + .ð"cÚÃùiÚ_Çme\"". +$this +-> + `g‘A‰ribu‹sFÜ +($this-> +d©aba£ +).">\n"; + +327 ià( + `is£t +( +$this +-> +d©aba£ +['_propel_behaviors'])) + +329 + `fܗch + ( +$this +-> +d©aba£ +['_´Ý–_behaviÜs'] +as + +$Çme + => +$·¿m‘”s +) + +331 +$xml + .= "\n +$v®ue +) + +337 +$xml + .= " fixXMLBoolean($value)}\"/>\n"; + +339 +$xml + .= " \n"; + +343 +$xml + .= "/>\n"; + +349 + `fܗch + ( +$this +-> + `g‘Chžd»n +($this-> +d©aba£ +è +as + +$tb_Çme + => +$bË +) + +352 ià( +$isNe¡edS‘ + = + `is£t +( +$bË +['_nestedSet'])) + +354 +$Œ“CÚfig + = +$bË +['_nestedSet']; + +356 ! + `is£t +( +$Œ“CÚfig +['left']) + +358 ! + `is£t +( +$Œ“CÚfig +['right']) + +360 ! + `is£t +( +$bË +[ +$Œ“CÚfig +['left']]) + +362 ! + `is£t +( +$bË +[ +$Œ“CÚfig +['right']]) + +364 ( + `is£t +( +$Œ“CÚfig +['scÝe']è&& !is£t( +$bË +[$treeConfig['scope']])) + +367 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('IncÜ»ù Ne¡edS‘ cÚfigu¿tiÚ fÜ "%s"abË.', +$tb_Çme +)); + +371 +$xml + .ð"\À <b˂ame=\"$tb_Çme\"". +$this +-> + `g‘A‰ribu‹sFÜ +( +$bË +); + +372 ià( +$isNe¡edS‘ +) + +374 +$xml + .= 'reeMode="NestedSet"'; + +376 ià( + `is£t +( +$bË +['_behaviors'])) + +378 +$xml + .ð + `¥rštf +(" behaviÜs=\"%s\"", + `html¥ecŸlch¬s +( + `£rŸlize +( +$bË +['_behaviÜs'])), +ENT_QUOTES +, +sfCÚfig +:: + `g‘ +('sf_charset')); + +380 +$xml + .= ">\n"; + +383 ià( + `is£t +( +$bË +['_propel_behaviors'])) + +385 + `fܗch + ( +$bË +['_´Ý–_behaviÜs'] +as + +$behaviÜ_Çme + => +$·¿m‘”s +) + +387 ià( +$·¿m‘”s +) + +389 +$xml + .= " \n"; + +390 + `fܗch + ( +$·¿m‘”s + +as + +$·¿m_Çme + => +$·¿m_v®ue +) + +392 +$xml + .= " fixXMLBoolean($param_value)}\" />\n"; + +394 +$xml + .= " \n"; + +398 +$xml + .= " \n"; + +404 + `fܗch + ( +$this +-> + `g‘Chžd»n +( +$bË +è +as + +$cÞ_Çme + => +$cÞumn +) + +408 + `is£t +( +$bË +['_inheritance']) + +410 + `is£t +( +$bË +['_inheritance']['column']) + +412 +$cÞ_Çme + =ð +$bË +['_inheritance']['column'] + +414 + `is£t +( +$bË +['_inheritance']['classes']) + +416 + `is_¬¿y +( +$bË +['_inheritance']['classes']) + +419 +$cÞumn +['šh”™ªû'] = +$bË +['_inheritance']['classes']; + +420 + `un£t +( +$bË +['_inheritance']); + +424 ià( +$isNe¡edS‘ + && + `š_¬¿y +( +$cÞ_Çme +, +$Œ“CÚfig +)) + +426 ià( +$cÞ_Çme + =ð +$Œ“CÚfig +['left']) + +428 +$cÞumn +['nestedSetLeftKey'] = 'true'; + +430 + `–£if + ( +$cÞ_Çme + =ð +$Œ“CÚfig +['right']) + +432 +$cÞumn +['nestedSetRightKey'] = 'true'; + +434 + `–£if + ( + `is£t +( +$Œ“CÚfig +['scÝe']è&& +$cÞ_Çme + == $treeConfig['scope']) + +436 +$cÞumn +['treeScopeKey'] = 'true'; + +440 +$xml + .ð" + `g‘A‰ribu‹sFÜCÞumn +( +$tb_Çme +, +$cÞ_Çme +, +$cÞumn +); + +444 ià( + `is£t +( +$bË +['_indexes'])) + +446 + `fܗch + ( +$bË +['_šdexes'] +as + +$šdex_Çme + => +$šdex +) + +448 +$xml + .= " \n"; + +449 + `fܗch + ( +$šdex + +as + +$šdex_cÞumn +) + +451 + `´eg_m©ch +('/^(.+?)\(([\d]+)\)$/', +$šdex_cÞumn +, +$m©ches +); + +452 ià( + `is£t +( +$m©ches +[2])) + +454 +$xml + .= " \n"; + +458 +$xml + .= " \n"; + +461 +$xml + .= " \n"; + +466 ià( + `is£t +( +$bË +['_uniques'])) + +468 + `fܗch + ( +$bË +['_uniques'] +as + +$unique_Çme + => +$šdex +) + +470 +$xml + .= " \n"; + +471 + `fܗch + ( +$šdex + +as + +$unique_cÞumn +) + +473 + `´eg_m©ch +('/^(.+?)\(([\d]+)\)$/', +$unique_cÞumn +, +$m©ches +); + +474 ià( + `is£t +( +$m©ches +[2])) + +476 +$xml + .= " \n"; + +480 +$xml + .= " \n"; + +483 +$xml + .= " \n"; + +488 ià( + `is£t +( +$bË +['_foreignKeys'])) + +490 + `fܗch + ( +$bË +['_fÜeignKeys'] +as + +$fkey_Çme + => +$fkey +) + +492 ià(! + `is£t +( +$fkey +['foreignTable'])) + +495 ! + `is£t +( +$fkey +['foreignClass']) + +497 ! +$fkey +['fÜeignTabË'] = +$this +-> + `fšdTabË +($fkey['foreignClass']) + +500 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('UÇbˁػsÞvfÜeigÀbË fÜ fÜeigÀkey "%s": %s', +$fkey_Çme +, + `v¬_expÜt +( +$fkey +, +Œue +))); + +503 + `un£t +( +$fkey +['foreignClass']); + +505 +$xml + .= ' +$©Œibu‹_v®ue +) + +516 ià( + `is_¡ršg +( +$©Œibu‹_v®ue +)) + +518 +$xml + .= " $attribute_name=\"$attribute_value\""; + +522 +$xml + .= ">\n"; + +525 ià( + `is£t +( +$fkey +['references'])) + +527 + `fܗch + ( +$fkey +['»ã»nûs'] +as + +$»ã»nû +) + +529 +$xml + .= " \n"; + +532 +$xml + .= " \n"; + +536 +$xml + .= " \n"; + +538 +$xml + .= "\n\n"; + +540  +$xml +; + +541 + } +} + +547 +´Ùeùed + +funùiÚ + + $fixYAMLD©aba£ +() + +549 ià(! + `is£t +( +$this +-> +d©aba£ +['_attributes'])) + +551 +$this +-> +d©aba£ +['_©Œibu‹s'] = + `¬¿y +(); + +555 +$this +-> + `£tIfNÙS‘ +($this-> +d©aba£ +['_attributes'], 'defaultIdMethod', 'native'); + +556 +$this +-> + `£tIfNÙS‘ +($this-> +d©aba£ +['_attributes'], 'package', 'lib.model'); + +557 + } +} + +563 +´Ùeùed + +funùiÚ + + $fixYAMLI18n +() + +565 + `fܗch + ( +$this +-> + `g‘TabËs +(è +as + +$i18n_bË + => +$cÞumns +) + +567 +$pos + = + `¡½os +( +$i18n_bË +, '_i18n'); + +569 +$has_´im¬y_key + = +çl£ +; + +570 + `fܗch + ( +$cÞumns + +as + +$cÞumn + => +$©Œibu‹s +) + +572 ià( + `is_¬¿y +( +$©Œibu‹s +è&& + `¬¿y_key_exi¡s +('primaryKey', $attributes)) + +574 +$has_´im¬y_key + = +Œue +; + +578 ià( +$pos + > 0 && $po =ð + `¡¾’ +( +$i18n_bË +è- 5 && ! +$has_´im¬y_key +) + +581 +$maš_bË + = +$this +-> + `fšdTabË +( + `sub¡r +( +$i18n_bË +, 0, +$pos +)); + +583 ià( +$maš_bË +) + +586 +$this +-> + `£tIfNÙS‘ +($this-> +d©aba£ +[ +$maš_bË +]['_attributes'], 'isI18N', 1); + +587 +$this +-> + `£tIfNÙS‘ +($this-> +d©aba£ +[ +$maš_bË +]['_©Œibu‹s'], 'i18nTabË', +$i18n_bË +); + +590 +$this +-> + `£tIfNÙS‘ +($this-> +d©aba£ +[ +$i18n_bË +], 'id', + `¬¿y +( + +592 '»quœed' => +Œue +, + +593 '´im¬yKey' => +Œue +, + +594 'fÜeignTabË' => +$maš_bË +, + +598 +$this +-> + `£tIfNÙS‘ +($this-> +d©aba£ +[ +$i18n_bË +], 'cuÉu»', + `¬¿y +( + +599 'isCuÉu»' => +Œue +, + +602 '»quœed' => +Œue +, + +603 '´im¬yKey' => +Œue +, + +608 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('Missšg mašabË fÜ iÁ”ÇtiÚ®izedabË "%s".', +$i18n_bË +)); + +612 + } +} + +618 +´Ùeùed + +funùiÚ + + $fixYAMLCÞumns +() + +620 + `fܗch + ( +$this +-> + `g‘TabËs +(è +as + +$bË + => +$cÞumns +) + +622 +$has_´im¬y_key + = +çl£ +; + +624 + `fܗch + ( +$cÞumns + +as + +$cÞumn + => +$©Œibu‹s +) + +626 ià( +$©Œibu‹s + =ð +nuÎ +) + +629 ià( +$cÞumn + == 'created_at' || $column == 'updated_at') + +632 +$this +-> +d©aba£ +[ +$bË +][ +$cÞumn +]['type']= 'timestamp'; + +635 ià( +$cÞumn + == 'id') + +638 +$this +-> +d©aba£ +[ +$bË +]['id'] = + `¬¿y +( + +640 '»quœed' => +Œue +, + +641 '´im¬yKey' => +Œue +, + +642 'autoInüem’t' => +Œue + + +644 +$has_´im¬y_key + = +Œue +; + +647 +$pos + = + `¡½os +( +$cÞumn +, '_id'); + +648 ià( +$pos + > 0 && $po =ð + `¡¾’ +( +$cÞumn +) - 3) + +651 +$fÜeign_bË + = +$this +-> + `fšdTabË +( + `sub¡r +( +$cÞumn +, 0, +$pos +)); + +652 ià( +$fÜeign_bË +) + +654 +$this +-> +d©aba£ +[ +$bË +][ +$cÞumn +] = + `¬¿y +( + +656 'fÜeignTabË' => +$fÜeign_bË +, + +662 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('UÇbˁػsÞvfÜeigÀbË fÜ cÞumÀ"%s".', +$cÞumn +)); + +669 ià(! + `is_¬¿y +( +$©Œibu‹s +)) + +672 +$this +-> +d©aba£ +[ +$bË +][ +$cÞumn +] = $this-> + `g‘A‰ribu‹sFromCom·ùTy³ +( +$©Œibu‹s +); + +676 ià( + `is£t +( +$©Œibu‹s +['type'])) + +679 +$this +-> +d©aba£ +[ +$bË +][ +$cÞumn +] = + `¬¿y_m”ge +($this->d©aba£[$bË][$cÞumn], $this-> + `g‘A‰ribu‹sFromCom·ùTy³ +( +$©Œibu‹s +['type'])); + +681 ià( + `is£t +( +$©Œibu‹s +['primaryKey'])) + +683 +$has_´im¬y_key + = +Œue +; + +689 ià(! +$has_´im¬y_key +) + +692 +$this +-> +d©aba£ +[ +$bË +]['id'] = + `¬¿y +( + +694 '»quœed' => +Œue +, + +695 '´im¬yKey' => +Œue +, + +696 'autoInüem’t' => +Œue + + +700 + } +} + +709 +´Ùeùed + +funùiÚ + + $g‘A‰ribu‹sFromCom·ùTy³ +( +$ty³ +) + +711 + `´eg_m©ch +('/v¬ch¬\(([\d]+)\)/', +$ty³ +, +$m©ches +); + +712 ià( + `is£t +( +$m©ches +[1])) + +714  + `¬¿y +('ty³' => 'v¬ch¬', 'size' => +$m©ches +[1]); + +718  + `¬¿y +('ty³' => +$ty³ +); + +720 + } +} + +729 +´Ùeùed + +funùiÚ + + $£tIfNÙS‘ +(& +$’Œy +, +$key +, +$v®ue +) + +731 ià(! + `is£t +( +$’Œy +[ +$key +])) + +733 +$’Œy +[ +$key +] = +$v®ue +; + +735 + } +} + +744 +´Ùeùed + +funùiÚ + + $fšdTabË +( +$bË_Çme +) + +747 +$bË_m©ch + = +çl£ +; + +748 + `fܗch + ( +$this +-> + `g‘TabËs +(è +as + +$tb_Çme + => +$bË +) + +751 ( +$tb_Çme + =ð +$bË_Çme +) + +752 || ( + `is£t +( +$bË +['_attributes']['phpName']) && + +754 +$bË +['_©Œibu‹s']['phpName'] =ð +sfInæeùÜ +:: + `ÿm–ize +( +$bË_Çme +) + +755 || +$bË +['_©Œibu‹s']['phpName'] =ð +$bË_Çme + + +757 || ( +sfInæeùÜ +:: + `und”scÜe +( +$bË_Çme +è=ð +$tb_Çme +)) + +760 +$bË_m©ch + = +$tb_Çme +; + +765  +$bË_m©ch +; + +766 + } +} + +777 +´Ùeùed + +funùiÚ + + $g‘A‰ribu‹sFÜCÞumn +( +$tb_Çme +, +$cÞ_Çme +, +$cÞumn +) + +779 +$©Œibu‹s_¡ršg + = ''; + +780 ià( + `is_¬¿y +( +$cÞumn +)) + +782 + `fܗch + ( +$cÞumn + +as + +$key + => +$v®ue +) + +784 ià(! + `š_¬¿y +( +$key +, + `¬¿y +('foreignClass', 'foreignTable', 'foreignReference', 'fkPhpName', 'fkRefPhpName', 'onDelete', 'onUpdate', 'index', 'unique', 'sequence', 'inheritance'))) + +786 +$©Œibu‹s_¡ršg + .ð" $key=\"". + `html¥ecŸlch¬s +( +$this +-> + `g‘CÜ»ùV®ueFÜ +( +$key +, +$v®ue +), +ENT_QUOTES +, +sfCÚfig +:: + `g‘ +('sf_charset'))."\""; + +789 ià( + `is£t +( +$cÞumn +['inheritance'])) + +791 +$©Œibu‹s_¡ršg + .= ' inheritance="single">'."\n"; + +793 +$ex‹nded_·ckage + = + `is£t +( +$this +-> +d©aba£ +[ +$tb_Çme +]['_attributes']['package']) ? $this->database[$tb_name]['_attributes']['package'] : $this->database['_attributes']['package']; + +794 +$ex‹nded_þass + = + `is£t +( +$this +-> +d©aba£ +[ +$tb_Çme +]['_©Œibu‹s']['phpName']è? $this->d©aba£[$tb_Çme]['_©Œibu‹s']['phpName'] : +sfInæeùÜ +:: + `ÿm–ize +($tb_name); + +796 + `fܗch + ( +$cÞumn +['šh”™ªû'] +as + +$key + => +$þass +) + +799 +$·ckage + = +nuÎ +; + +800 ià( + `is_¬¿y +( +$þass +)) + +802 +$·ckage + = + `is£t +( +$þass +['·ckage']è? $þass['·ckage'] : +nuÎ +; + +803 +$þass + = $class['phpName']; + +806 +$©Œibu‹s_¡ršg + .ð + `v¥rštf +(' <šh”™ªûƒx‹nds="%s.%s" key="%s" cÏss="%s"% />', + `¬¿y +( + +807 +$ex‹nded_·ckage +, + +808 +$ex‹nded_þass +, + +809 +$key +, + +810 +$þass +, + +811 +$·ckage + ? "…ackage=\"$package\"" : '', + +815 +$©Œibu‹s_¡ršg + .= ' '."\n"; + +819 +$©Œibu‹s_¡ršg + .= " />\n"; + +824 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('IncÜ»ù s‘tšg fÜ cÞumÀ"%s" oàbË "%s".', +$cÞ_Çme +, +$tb_Çme +)); + +828 ià( + `is_¬¿y +( +$cÞumn +è&& ( + `is£t +($column['foreignTable']) || isset($column['foreignClass']))) + +830 ià( + `is£t +( +$cÞumn +['foreignTable'])) + +832 +$©Œibu‹s_¡ršg + .= " + `fšdTabË +( +$cÞumn +['foreignClass']); + +837 ià(! +$fÜeignTabË +) + +842 +$fÜeignTabË + = +sfInæeùÜ +:: + `und”scÜe +( +$cÞumn +['foreignClass']); + +844 +$©Œibu‹s_¡ršg + .ð" \n"; + +865 +$©Œibu‹s_¡ršg + .= " \n"; + +869 ià( + `is_¬¿y +( +$cÞumn +è&& + `is£t +($column['index'])) + +871 ià( +$cÞumn +['index'] === 'unique') + +873 +$©Œibu‹s_¡ršg + .= " \n"; + +874 +$©Œibu‹s_¡ršg + .= " \n"; + +875 +$©Œibu‹s_¡ršg + .= " \n"; + +879 +$©Œibu‹s_¡ršg + .= " \n"; + +880 +$©Œibu‹s_¡ršg + .= " \n"; + +881 +$©Œibu‹s_¡ršg + .= " \n"; + +887 ià( + `is_¬¿y +( +$cÞumn +è&& + `is£t +($column['sequence'])) + +889 +$©Œibu‹s_¡ršg + .= " \n"; + +892  +$©Œibu‹s_¡ršg +; + +893 + } +} + +902 +´Ùeùed + +funùiÚ + + $g‘A‰ribu‹sFÜ +( +$g +) + +904 ià(! + `is£t +( +$g +['_attributes'])) + +908 +$©Œibu‹s + = +$g +['_attributes']; + +909 +$©Œibu‹s_¡ršg + = ''; + +910 + `fܗch + ( +$©Œibu‹s + +as + +$key + => +$v®ue +) + +912 +$©Œibu‹s_¡ršg + .ð' '. +$key +.'="'. + `html¥ecŸlch¬s +( +$this +-> + `g‘CÜ»ùV®ueFÜ +($key, +$v®ue +), +ENT_QUOTES +, +sfCÚfig +:: + `g‘ +('sf_charset')).'"'; + +915  +$©Œibu‹s_¡ršg +; + +916 + } +} + +918 +´Ùeùed + +funùiÚ + + $g‘CÜ»ùV®ueFÜ +( +$key +, +$v®ue +) + +920 +$boޗns + = + `¬¿y +('required', 'primaryKey', 'autoincrement', 'autoIncrement', 'isI18N', 'isCulture'); + +921 ià( + `š_¬¿y +( +$key +, +$boޗns +)) + +923  +$v®ue + == 1 ? 'true' : 'false'; + +927  +nuÎ + ==ð +$v®ue + ? 'null' : $value; + +929 + } +} + +936 +public + +funùiÚ + + $g‘TabËs +() + +938  +$this +-> + `g‘Chžd»n +($this-> +d©aba£ +); + +939 + } +} + +948 +public + +funùiÚ + + $g‘Chžd»n +( +$hash +) + +950 + `fܗch + ( +$hash + +as + +$key + => +$v®ue +) + +953 ià( +$key +[0] == '_') + +955 + `un£t +( +$hash +[ +$key +]); + +959  +$hash +; + +960 + } +} + +967 +public + +funùiÚ + + $lßdXML +( +$fže +) + +969 +$schema + = + `sim¶exml_lßd_fže +( +$fže +); + +970 +$d©aba£ + = + `¬¿y +(); + +973 + `li¡ +( +$d©aba£_Çme +, +$d©aba£_©Œibu‹s +èð +$this +-> + `g‘NameAndA‰ribu‹s +( +$schema +-> + `©Œibu‹s +()); + +974 ià( +$d©aba£_Çme +) + +976 +$this +-> +cÚÃùiÚ_Çme + = +$d©aba£_Çme +; + +980 +throw + +Ãw + + `sfExû±iÚ +('The databaseag misses‡‚ame‡ttribute.'); + +982 ià( +$d©aba£_©Œibu‹s +) + +984 +$d©aba£ +['_©Œibu‹s'] = +$d©aba£_©Œibu‹s +; + +988 + `fܗch + ( +$schema + +as + +$bË +) + +990 + `li¡ +( +$bË_Çme +, +$bË_©Œibu‹s +èð +$this +-> + `g‘NameAndA‰ribu‹s +( +$bË +-> + `©Œibu‹s +()); + +991 ià( +$bË_Çme +) + +993 +$d©aba£ +[ +$bË_Çme +] = + `¬¿y +(); + +997 +throw + +Ãw + + `sfExû±iÚ +('Aableag misseshe‚ame‡ttribute.'); + +999 ià( +$bË_©Œibu‹s +) + +1001 +$d©aba£ +[ +$bË_Çme +]['_©Œibu‹s'] = +$bË_©Œibu‹s +; + +1005 + `fܗch + ( +$bË +-> + `x·th +('cÞumn'è +as + +$cÞumn +) + +1007 + `li¡ +( +$cÞumn_Çme +, +$cÞumn_©Œibu‹s +èð +$this +-> + `g‘NameAndA‰ribu‹s +( +$cÞumn +-> + `©Œibu‹s +()); + +1008 ià( +$cÞumn_Çme +) + +1010 +$d©aba£ +[ +$bË_Çme +][ +$cÞumn_Çme +] = +$cÞumn_©Œibu‹s +; + +1014 +throw + +Ãw + + `sfExû±iÚ +('A columnag misseshe‚ame‡ttribute.'); + +1019 +$d©aba£ +[ +$bË_Çme +]['_fÜeignKeys'] = + `¬¿y +(); + +1020 + `fܗch + ( +$bË +-> + `x·th +('fÜeign-key'è +as + +$fÜeign_key +) + +1022 +$fÜeign_key_bË + = + `¬¿y +(); + +1025 ià( + `is£t +( +$fÜeign_key +['foreignTable'])) + +1027 +$fÜeign_key_bË +['fÜeignTabË'] = ( +¡ršg +è +$fÜeign_key +['foreignTable']; + +1031 +throw + +Ãw + + `sfExû±iÚ +('A foreign key misseshe foreignTable‡ttribute.'); + +1033 ià( + `is£t +( +$fÜeign_key +['onDelete'])) + +1035 +$fÜeign_key_bË +['ÚD–‘e'] = ( +¡ršg +è +$fÜeign_key +['onDelete']; + +1037 ià( + `is£t +( +$fÜeign_key +['onUpdate'])) + +1039 +$fÜeign_key_bË +['ÚUpd©e'] = ( +¡ršg +è +$fÜeign_key +['onUpdate']; + +1043 +$fÜeign_key_bË +['»ã»nûs'] = + `¬¿y +(); + +1044 + `fܗch + ( +$fÜeign_key +-> + `x·th +('»ã»nû'è +as + +$»ã»nû +) + +1046 +$»ã»nû_©Œibu‹s + = + `¬¿y +(); + +1047 + `fܗch + ( +$»ã»nû +-> + `©Œibu‹s +(è +as + +$»ã»nû_©Œibu‹_Çme + => +$»ã»nû_©Œibu‹_v®ue +) + +1049 +$»ã»nû_©Œibu‹s +[ +$»ã»nû_©Œibu‹_Çme +] = + `¡rv® +( +$»ã»nû_©Œibu‹_v®ue +); + +1051 +$fÜeign_key_bË +['»ã»nûs'][] = +$»ã»nû_©Œibu‹s +; + +1054 ià( + `is£t +( +$fÜeign_key +['name'])) + +1056 +$d©aba£ +[ +$bË_Çme +]['_fÜeignKeys'][( +¡ršg +) +$fÜeign_key +['Çme']] = +$fÜeign_key_bË +; + +1060 +$d©aba£ +[ +$bË_Çme +]['_fÜeignKeys'][] = +$fÜeign_key_bË +; + +1064 +$this +-> + `»moveEm±yKey +( +$d©aba£ +[ +$bË_Çme +], '_foreignKeys'); + +1067 +$d©aba£ +[ +$bË_Çme +]['_šdexes'] = + `¬¿y +(); + +1068 + `fܗch + ( +$bË +-> + `x·th +('šdex'è +as + +$šdex +) + +1070 +$šdex_keys + = + `¬¿y +(); + +1071 + `fܗch + ( +$šdex +-> + `x·th +('šdex-cÞumn'è +as + +$šdex_key +) + +1073 +$šdex_keys +[] = + `¡rv® +( +$šdex_key +['name']); + +1075 +$d©aba£ +[ +$bË_Çme +]['_šdexes'][ + `¡rv® +( +$šdex +['Çme'])] = +$šdex_keys +; + +1077 +$this +-> + `»moveEm±yKey +( +$d©aba£ +[ +$bË_Çme +], '_indexes'); + +1080 +$d©aba£ +[ +$bË_Çme +]['_uniques'] = + `¬¿y +(); + +1081 + `fܗch + ( +$bË +-> + `x·th +('unique'è +as + +$šdex +) + +1083 +$unique_keys + = + `¬¿y +(); + +1084 + `fܗch + ( +$šdex +-> + `x·th +('unique-cÞumn'è +as + +$unique_key +) + +1086 +$unique_keys +[] = + `¡rv® +( +$unique_key +['name']); + +1088 +$d©aba£ +[ +$bË_Çme +]['_uniques'][ + `¡rv® +( +$šdex +['Çme'])] = +$unique_keys +; + +1090 +$this +-> + `»moveEm±yKey +( +$d©aba£ +[ +$bË_Çme +], '_uniques'); + +1092 +$this +-> +d©aba£ + = +$d©aba£ +; + +1094 +$this +-> + `fixXML +(); + +1095 + } +} + +1102 +public + +funùiÚ + + $fixXML +() + +1104 +$this +-> + `fixXMLFÜeignKeys +(); + +1105 +$this +-> + `fixXMLIndexes +(); + +1107 + } +} + +1114 +´Ùeùed + +funùiÚ + + $fixXMLFÜeignKeys +() + +1116 + `fܗch + ( +$this +-> + `g‘TabËs +(è +as + +$bË + => +$cÞumns +) + +1118 ià( + `is£t +( +$this +-> +d©aba£ +[ +$bË +]['_foreignKeys'])) + +1120 +$fÜeign_keys + = +$this +-> +d©aba£ +[ +$bË +]['_foreignKeys']; + +1121 + `fܗch + ( +$fÜeign_keys + +as + +$fÜeign_key_Çme + => +$fÜeign_key_©Œibu‹s +) + +1124 ià( + `couÁ +( +$fÜeign_key_©Œibu‹s +['references']) == 1) + +1126 +$»ã»nû + = +$fÜeign_key_©Œibu‹s +['references'][0]; + +1129 +$this +-> +d©aba£ +[ +$bË +][ +$»ã»nû +['loÿl']]['fÜeignTabË'] = +$fÜeign_key_©Œibu‹s +['foreignTable']; + +1130 +$this +-> +d©aba£ +[ +$bË +][ +$»ã»nû +['local']]['foreignReference'] = $reference['foreign']; + +1131 ià( + `is£t +( +$fÜeign_key_©Œibu‹s +['onDelete'])) + +1133 +$this +-> +d©aba£ +[ +$bË +][ +$»ã»nû +['loÿl']]['ÚD–‘e'] = +$fÜeign_key_©Œibu‹s +['onDelete']; + +1135 ià( + `is£t +( +$fÜeign_key_©Œibu‹s +['onUpdate'])) + +1137 +$this +-> +d©aba£ +[ +$bË +][ +$»ã»nû +['loÿl']]['ÚUpd©e'] = +$fÜeign_key_©Œibu‹s +['onUpdate']; + +1141 + `un£t +( +$this +-> +d©aba£ +[ +$bË +]['_fÜeignKeys'][ +$fÜeign_key_Çme +]); + +1144 +$this +-> + `»moveEm±yKey +($this-> +d©aba£ +[ +$bË +], '_foreignKeys'); + +1148 + } +} + +1155 +´Ùeùed + +funùiÚ + + $fixXMLIndexes +() + +1157 + `fܗch + ( +$this +-> + `g‘TabËs +(è +as + +$bË + => +$cÞumns +) + +1159 ià( + `is£t +( +$this +-> +d©aba£ +[ +$bË +]['_indexes'])) + +1161 +$šdexes + = +$this +-> +d©aba£ +[ +$bË +]['_indexes']; + +1162 + `fܗch + ( +$šdexes + +as + +$šdex + => +$»ã»nûs +) + +1165 ià( + `couÁ +( +$»ã»nûs +è=ð1 && +çl£ + !=ð + `sub¡r +( +$šdex +, 0, + `¡¾’ +($šdexè- 6è&& + `¬¿y_key_exi¡s +(sub¡r($šdex, 0, sŒËn($šdexè- 6), +$cÞumns +)) + +1167 +$»ã»nû + = +$»ã»nûs +[0]; + +1170 +$this +-> +d©aba£ +[ +$bË +][ +$»ã»nû +]['index'] = 'true'; + +1173 + `un£t +( +$this +-> +d©aba£ +[ +$bË +]['_šdexes'][ +$šdex +]); + +1176 +$this +-> + `»moveEm±yKey +($this-> +d©aba£ +[ +$bË +], '_indexes'); + +1179 ià( + `is£t +( +$this +-> +d©aba£ +[ +$bË +]['_uniques'])) + +1181 +$uniques + = +$this +-> +d©aba£ +[ +$bË +]['_uniques']; + +1182 + `fܗch + ( +$uniques + +as + +$šdex + => +$»ã»nûs +) + +1185 ià( + `couÁ +( +$»ã»nûs +è=ð1 && +çl£ + !=ð + `sub¡r +( +$šdex +, 0, + `¡¾’ +($šdexè- 7è&& + `¬¿y_key_exi¡s +(sub¡r($šdex, 0, sŒËn($šdexè- 7), +$cÞumns +)) + +1187 +$»ã»nû + = +$»ã»nûs +[0]; + +1190 +$this +-> +d©aba£ +[ +$bË +][ +$»ã»nû +]['index'] = 'unique'; + +1193 + `un£t +( +$this +-> +d©aba£ +[ +$bË +]['_uniques'][ +$šdex +]); + +1196 +$this +-> + `»moveEm±yKey +($this-> +d©aba£ +[ +$bË +], '_uniques'); + +1200 + } +} + +1207 +´Ùeùed + +funùiÚ + + $fixXMLCÞumns +() + +1209 + `fܗch + ( +$this +-> + `g‘TabËs +(è +as + +$bË + => +$cÞumns +) + +1211 + `fܗch + ( +$cÞumns + +as + +$cÞumn + => +$©Œibu‹s +) + +1213 ià( +$cÞumn + =ð'id' && ! + `¬¿y_diff +( +$©Œibu‹s +, + `¬¿y +('type' => 'integer', 'required' => 'true', 'primaryKey' => 'true', 'autoIncrement' => 'true'))) + +1216 +$this +-> +d©aba£ +[ +$bË +]['id'] = +nuÎ +; + +1219 ià(( +$cÞumn + =ð'ü—‹d_©'è|| ($cÞumÀ=ð'upd©ed_©'è&& ! + `¬¿y_diff +( +$©Œibu‹s +, + `¬¿y +('type' => 'timestamp'))) + +1222 +$this +-> +d©aba£ +[ +$bË +][ +$cÞumn +] = +nuÎ +; + +1225 +$pos + = + `¡½os +( +$cÞumn +, '_id'); + +1226 +$has_fk_Çme + = +$pos + > 0 && $po =ð + `¡¾’ +( +$cÞumn +) - 3; + +1227 +$is_fÜeign_key + = + `is£t +( +$©Œibu‹s +['type']) && $attributes['type'] == 'integer' && isset($attributes['foreignReference']) && $attributes['foreignReference'] == 'id'; + +1228 +$has_fÜeign_bË + = + `is£t +( +$©Œibu‹s +['fÜeignTabË']è&& + `¬¿y_key_exi¡s +($©Œibu‹s['fÜeignTabË'], +$this +-> + `g‘TabËs +()); + +1229 +$has_Ùh”_©Œibu‹ + = + `is£t +( +$©Œibu‹s +['onDelete']); + +1230 ià( +$has_fk_Çme + && +$has_fÜeign_bË + && +$is_fÜeign_key + && ! +$has_Ùh”_©Œibu‹ +) + +1233 +$this +-> +d©aba£ +[ +$bË +][ +$cÞumn +] = +nuÎ +; + +1237 + } +} + +1239 +´Ùeùed + +funùiÚ + + $fixXMLBoޗn +( +$v®ue +) + +1241  +Œue +) + +1243  +Œue + ==ð +$v®ue +: + +1245  +çl£ + ==ð +$v®ue +: + +1248  +$v®ue +; + +1250 + } +} + +1257 +public + +funùiÚ + + $asYAML +() + +1259  +sfYaml +:: + `dump +( + `¬¿y +( +$this +-> +cÚÃùiÚ_Çme + => $this-> +d©aba£ +), 3); + +1260 + } +} + +1270 +´Ùeùed + +funùiÚ + +g‘NameAndA‰ribu‹s +( +$hash +, +$Çme_©Œibu‹ + = 'name') + +1273 +$Çme + = ''; + +1274 ià( +is£t +( +$hash +[ +$Çme_©Œibu‹ +])) + +1276 + g$Çme + = +¡rv® +( +$hash +[ +$Çme_©Œibu‹ +]); + +1277 +un£t +( +$hash +[ +$Çme_©Œibu‹ +]); + +1281 + g$©Œibu‹s + = +¬¿y +(); + +1282 +fܗch + ( +$hash + +as + +$©Œibu‹ + => +$v®ue +) + +1284 +$v®ue + = ( +¡ršg +) $value; + +1285 ià( +š_¬¿y +( +$v®ue +, +¬¿y +('true', 'on'))) + +1287 + g$v®ue + = +Œue +; + +1289 +–£if + ( +š_¬¿y +( +$v®ue +, +¬¿y +('false', 'off'))) + +1291 + g$v®ue + = +çl£ +; + +1293 + g$©Œibu‹s +[ +$©Œibu‹ +] = +$v®ue +; + +1296  +¬¿y +( +$Çme +, +$©Œibu‹s +); + +1299 +´Ùeùed + +funùiÚ + + $»moveEm±yKey +(& +$hash +, +$key +) + +1301 ià( + `is£t +( +$hash +[ +$key +]) && !$hash[$key]) + +1303 + `un£t +( +$hash +[ +$key +]); + +1305 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/addon/sfPropelManyToMany.class.php + +1 +g‘CÞumn +( +$»Ï‹dCÞumn +)-> +g‘PhpName +(); + +33 +fܗch + ( +$bËM­ +-> +g‘CÞumns +(è +as + +$cÞumn +) + +35 ià( + m$cÞumn +-> +isFÜeignKey +(è&& + m$objeù_bË_Çme + =ð +$cÞumn +-> +g‘R–©edTabËName +()) + +37 ià(! +em±y +( +$»Ï‹dCÞumn +)) + +39 ià( +$cÞumn +-> +g‘PhpName +(è!ð +$»Ï‹dCÞumnName +) + +41  +$cÞumn +; + +46  + m$cÞumn +; + +52 +public +  +funùiÚ + +g‘R–©edCÞumn +( +$þass +, +$middËCÏss +, +$»Ï‹dCÞumn + = '') + +55 +$bËM­ + = +ÿÎ_u£r_func +( +¬¿y +( +cÚ¡ªt +( +$middËCÏss +.'::PEER'), 'getTableMap')); + +56 + g$objeù_bË_Çme + = +cÚ¡ªt +(cÚ¡ªt( +$þass +.'::PEER').'::TABLE_NAME'); + +58 ià(! +em±y +( +$»Ï‹dCÞumn +)) + +60  + g$bËM­ +-> +g‘CÞumn +( +$»Ï‹dCÞumn +); + +63 +fܗch + ( +$bËM­ +-> +g‘CÞumns +(è +as + +$cÞumn +) + +65 ià( + g$cÞumn +-> +isFÜeignKey +(è&& + g$objeù_bË_Çme + !ð +$cÞumn +-> +g‘R–©edTabËName +()) + +67  +$cÞumn +; + +72 +public +  +funùiÚ + +g‘R–©edCÏss +( +$þass +, +$middËCÏss +, +$»Ï‹dCÞumn + = '') + +74 +$cÞumn + = +£lf +:: +g‘R–©edCÞumn +( +$þass +, +$middËCÏss +, +$»Ï‹dCÞumn +); + +76 + g$bËM­ + = +ÿÎ_u£r_func +( +¬¿y +( +cÚ¡ªt +( +$middËCÏss +.'::PEER'), 'getTableMap')); + +77 + g$bËM­ +-> +g‘R–©iÚs +(); + +79  + g$bËM­ +-> +g‘D©aba£M­ +()-> +g‘TabË +( +$cÞumn +-> +g‘R–©edTabËName +())-> +g‘PhpName +(); + +82 +public +  +funùiÚ + +g‘AÎObjeùs +( +$objeù +, +$middËCÏss +, +$»Ï‹dCÞumn + = '', +$ü™”Ÿ + = +nuÎ +) + +84 ià( +nuÎ + ==ð +$ü™”Ÿ +) + +86 +$ü™”Ÿ + = +Ãw + +Cr™”Ÿ +(); + +89 + g$»Ï‹dCÏss + = +£lf +:: +g‘R–©edCÏss +( +g‘_þass +( +$objeù +), +$middËCÏss +, +$»Ï‹dCÞumn +); + +93 ià(! +em±y +( +$»Ï‹dCÞumn +)) + +95 + g$‹mpCr™”Ÿ + = +$objeù +-> +buždPkeyCr™”Ÿ +(); + +96 +fܗch + ( +$‹mpCr™”Ÿ +-> +g‘I‹¿tÜ +(è +as + +$ü™”iÚ +) + +98 + g$ü™”Ÿ +-> +add +( +$ü™”iÚ +-> +g‘TabË +().'.'.$ü™”iÚ-> +g‘CÞumn +(), $ü™”iÚ-> +g‘V®ue +(), +Cr™”Ÿ +:: +NOT_EQUAL +); + +102  +ÿÎ_u£r_func +( +¬¿y +( +cÚ¡ªt +( +$»Ï‹dCÏss +.'::PEER'), 'doS–eù'), +$ü™”Ÿ +); + +112 +public +  +funùiÚ + +g‘R–©edObjeùs +( +$objeù +, +$middËCÏss +, +$»Ï‹dCÞumn + = '', +$ü™”Ÿ + = +nuÎ +) + +114 ià( +nuÎ + ==ð +$ü™”Ÿ +) + +116 +$ü™”Ÿ + = +Ãw + +Cr™”Ÿ +(); + +119 + g$»Ï‹dCÏss + = +£lf +:: +g‘R–©edCÏss +( +g‘_þass +( +$objeù +), +$middËCÏss +, +$»Ï‹dCÞumn +); + +121 + g$»Ï‹dObjeùs + = +¬¿y +(); + +122 ià( +em±y +( +$»Ï‹dCÞumn +)) + +124 + g$objeùM‘hod + = 'g‘'. +$middËCÏss +.'sJoš'. +$»Ï‹dCÏss +; + +125 + g$»Ï‹dM‘hod + = 'g‘'. +$»Ï‹dCÏss +; + +126 + g$»ls + = +$objeù +-> +$objeùM‘hod +( +$ü™”Ÿ +); + +131 + g$loÿlCÞumn + = +£lf +:: +g‘CÞumn +( +g‘_þass +( +$objeù +), +$middËCÏss +, +$»Ï‹dCÞumn +); + +132 + g$»mÙeCÞumn + = +£lf +:: +g‘R–©edCÞumn +( +g‘_þass +( +$objeù +), +$middËCÏss +, +$»Ï‹dCÞumn +); + +133 + g$c + = +Ãw + +Cr™”Ÿ +(); + +134 + g$c +-> +add +( +cÚ¡ªt +(cÚ¡ªt( +$middËCÏss +.'::PEER').'::'. +$loÿlCÞumn +-> +g‘Name +()), +$objeù +-> +g‘Id +()); + +135 + g$»Ï‹dM‘hod + = 'g‘'. +$»Ï‹dCÏss +.'R–©edBy'. +$»mÙeCÞumn +-> +g‘PhpName +(); + +136 + g$»ls + = +ÿÎ_u£r_func +( +¬¿y +( +cÚ¡ªt +( +$middËCÏss +.'::PEER'), 'doS–eùJoš'. +$»Ï‹dCÏss +.'R–©edBy'. +$»mÙeCÞumn +-> +g‘PhpName +()), +$c +); + +138 +fܗch + ( +$»ls + +as + +$»l +) + +140 + g$»Ï‹dObjeùs +[] = +$»l +-> +$»Ï‹dM‘hod +(); + +143  + g$»Ï‹dObjeùs +; + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/addon/sfPropelPager.class.php + +1 + `£tCr™”Ÿ +( +Ãw + + `Cr™”Ÿ +()); + +37 +$this +-> +bËName + = + `cÚ¡ªt +($this-> + `g‘CÏssP“r +().'::TABLE_NAME'); + +43 +public + +funùiÚ + + $š™ +() + +45 +$this +-> + `»£tI‹¿tÜ +(); + +47 +$hasMaxRecÜdLim™ + = ( +$this +-> + `g‘MaxRecÜdLim™ +(è!=ð +çl£ +); + +48 +$maxRecÜdLim™ + = +$this +-> + `g‘MaxRecÜdLim™ +(); + +50 +$ü™”ŸFÜCouÁ + = +þÚe + +$this +-> + `g‘Cr™”Ÿ +(); + +51 +$ü™”ŸFÜCouÁ + + +52 -> + `£tOff£t +(0) + +53 -> + `£tLim™ +(0) + +54 -> + `þ—rGroupByCÞumns +() + +57 +$couÁ + = + `ÿÎ_u£r_func +( + `¬¿y +( +$this +-> + `g‘CÏssP“r +(), $this-> + `g‘P“rCouÁM‘hod +()), +$ü™”ŸFÜCouÁ +); + +59 +$this +-> + `£tNbResuÉs +( +$hasMaxRecÜdLim™ + ? + `mš +( +$couÁ +, +$maxRecÜdLim™ +) : $count); + +61 +$ü™”Ÿ + = +$this +-> + `g‘Cr™”Ÿ +() + +62 -> + `£tOff£t +(0) + +63 -> + `£tLim™ +(0) + +66 ià(0 =ð +$this +-> + `g‘Page +(è|| 0 =ð$this-> + `g‘MaxP”Page +()) + +68 +$this +-> + `£tLa¡Page +(0); + +72 +$this +-> + `£tLa¡Page +( + `ûž +($this-> + `g‘NbResuÉs +(è/ $this-> + `g‘MaxP”Page +())); + +74 +$off£t + = ( +$this +-> + `g‘Page +(è- 1è* $this-> + `g‘MaxP”Page +(); + +75 +$ü™”Ÿ +-> + `£tOff£t +( +$off£t +); + +77 ià( +$hasMaxRecÜdLim™ +) + +79 +$maxRecÜdLim™ + = $maxRecÜdLim™ - +$off£t +; + +80 ià( +$maxRecÜdLim™ + > +$this +-> + `g‘MaxP”Page +()) + +82 +$ü™”Ÿ +-> + `£tLim™ +( +$this +-> + `g‘MaxP”Page +()); + +86 +$ü™”Ÿ +-> + `£tLim™ +( +$maxRecÜdLim™ +); + +91 +$ü™”Ÿ +-> + `£tLim™ +( +$this +-> + `g‘MaxP”Page +()); + +94 + } +} + +99 +´Ùeùed + +funùiÚ + + $»Œ›veObjeù +( +$off£t +) + +101 +$ü™”ŸFÜR‘r›ve + = +þÚe + +$this +-> + `g‘Cr™”Ÿ +(); + +102 +$ü™”ŸFÜR‘r›ve + + +103 -> + `£tOff£t +( +$off£t + - 1) + +104 -> + `£tLim™ +(1) + +107 +$»suÉs + = + `ÿÎ_u£r_func +( + `¬¿y +( +$this +-> + `g‘CÏssP“r +(), $this-> + `g‘P“rM‘hod +()), +$ü™”ŸFÜR‘r›ve +); + +109  + `is_¬¿y +( +$»suÉs +è&& + `is£t +($»suÉs[0]è? $»suÉs[0] : +nuÎ +; + +110 + } +} + +115 +public + +funùiÚ + + $g‘ResuÉs +() + +117  + `ÿÎ_u£r_func +( + `¬¿y +( +$this +-> + `g‘CÏssP“r +(), $this-> + `g‘P“rM‘hod +()), $this-> + `g‘Cr™”Ÿ +()); + +118 + } +} + +125 +public + +funùiÚ + + $g‘P“rM‘hod +() + +127  +$this +-> +³”_m‘hod_Çme +; + +128 + } +} + +135 +public + +funùiÚ + + $£tP“rM‘hod +( +$³”_m‘hod_Çme +) + +137 +$this +-> +³”_m‘hod_Çme + = +$³”_m‘hod_Çme +; + +138 + } +} + +145 +public + +funùiÚ + + $g‘P“rCouÁM‘hod +() + +147  +$this +-> +³”_couÁ_m‘hod_Çme +; + +148 + } +} + +155 +public + +funùiÚ + + $£tP“rCouÁM‘hod +( +$³”_couÁ_m‘hod_Çme +) + +157 +$this +-> +³”_couÁ_m‘hod_Çme + = +$³”_couÁ_m‘hod_Çme +; + +158 + } +} + +165 +public + +funùiÚ + + $g‘CÏssP“r +() + +167  + `cÚ¡ªt +( +$this +-> +þass +.'::PEER'); + +168 + } +} + +175 +public + +funùiÚ + + $g‘Cr™”Ÿ +() + +177  +$this +-> +ü™”Ÿ +; + +178 + } +} + +185 +public + +funùiÚ + + $£tCr™”Ÿ +( +$ü™”Ÿ +) + +187 +$this +-> +ü™”Ÿ + = +$ü™”Ÿ +; + +188 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/behavior/SfPropelBehaviorBase.php + +1 +buždPrݔt›s +) + +37 +$this +-> +buždPrݔt›s + = +Ãw + + `Prݔt›s +(); + +38 +$this +-> +buždPrݔt›s +-> + `lßd +( +Ãw + + `PhšgFže +( +sfCÚfig +:: + `g‘ +('sf_config_dir').'/propel.ini')); + +41  +$this +-> +buždPrݔt›s +-> + `g‘Prݔty +( +$Çme +); + +49 +´Ùeùed + +funùiÚ + + $isDi§bËd +() + +51  'Œue' =ð +$this +-> + `g‘P¬am‘” +('disabled'); + +52 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/behavior/SfPropelBehaviorI18n.php + +1 +nuÎ +, + +30 +public + +funùiÚ + + $modifyD©aba£ +() + +32 +$Œª¦©iÚBehaviÜ + = +Prݖ +:: + `impÜtCÏss +( +$this +-> + `g‘BuždPrݔty +('propel.behavior.symfony_i18n_translation.class')); + +34 + `fܗch + ( +$this +-> + `g‘D©aba£ +()-> + `g‘TabËs +(è +as + +$bË +) + +36 +$behaviÜs + = +$bË +-> + `g‘BehaviÜs +(); + +38 ià(! + `is£t +( +$behaviÜs +['symfÚy_i18n']è&& 'Œue' =ð +$bË +-> + `g‘A‰ribu‹ +('isI18N')) + +40 +$i18nTabË + = +$this +-> + `g‘D©aba£ +()-> + `g‘TabË +( +$bË +-> + `g‘A‰ribu‹ +('i18nTable')); + +43 +$behaviÜ + = +þÚe + +$this +; + +44 +$behaviÜ +-> + `£tP¬am‘”s +( + `¬¿y +('i18n_bË' => +$i18nTabË +-> + `g‘Name +())); + +45 +$bË +-> + `addBehaviÜ +( +$behaviÜ +); + +48 +$behaviÜ + = +Ãw + + `$Œª¦©iÚBehaviÜ +(); + +49 +$behaviÜ +-> + `£tName +('symfony_i18n_translation'); + +50 +$behaviÜ +-> + `£tP¬am‘”s +( + `¬¿y +('cuÉu»_cÞumn' => +$this +-> + `g‘CuÉu»CÞumn +( +$i18nTabË +)-> + `g‘Name +())); + +51 +$i18nTabË +-> + `addBehaviÜ +( +$behaviÜ +); + +56 +public + +funùiÚ + + $modifyTabË +() + +58 ià( +$this +-> + `isDi§bËd +()) + +63 ià( + `couÁ +( +$this +-> + `g‘TabË +()-> + `g‘Prim¬yKey +()) > 1) + +65 +throw + +Ãw + + `Exû±iÚ +('i18n support only works with‡ single…rimary key'); + +67 + } +} + +69 +public + +funùiÚ + + $objeùA‰ribu‹s +() + +71 ià( +$this +-> + `isDi§bËd +()) + +76  <<< +EOF + + +81 +´Ùeùed + \ +$cuÉu» + = +nuÎ +; + +86 +´Ùeùed + \ +$cu¼’t_i18n + = + `¬¿y +(); + +88 +EOF +; + +89 + } +} + +91 +public + +funùiÚ + + $objeùM‘hods +() + +93 ià( +$this +-> + `isDi§bËd +()) + +98 +$süt + = <<< +EOF + + +105 +public + +funùiÚ + + `g‘CuÉu» +() + +107  \ +$this +-> +cuÉu» +; + +117 +public + +funùiÚ + + `£tCuÉu» +(\ +$cuÉu» +) + +119 \ +$this +-> +cuÉu» + = \ +$cuÉu» +; + +120  \ +$this +; + +123 +EOF +; + +126 +$fÜeignKey + = +$this +-> + `g‘I18nTabË +()-> + `g‘BehaviÜ +('symfÚy_i18n_Œª¦©iÚ')-> + `g‘FÜeignKey +(); + +127 +$»fPhpName + = +$fÜeignKey +-> + `g‘RefPhpName +(è? $fÜeignKey->g‘RefPhpName(è: +$this +-> + `g‘I18nTabË +()-> + `g‘PhpName +(); + +129 + `fܗch + ( +$this +-> + `g‘I18nTabË +()-> + `g‘CÞumns +(è +as + +$cÞumn +) + +131 ià( +$cÞumn +-> + `isPrim¬yKey +()) + +136 +$süt + .ð<<< +EOF + + +141 +public + +funùiÚ + +g‘ +{ +$cÞumn +-> + `g‘PhpName +()}(\ +$cuÉu» + = +nuÎ +) + +143  \ +$this +-> +g‘Cu¼’t +{ +$»fPhpName +}(\ +$cuÉu» +)-> +g‘ +{ +$cÞumn +-> + `g‘PhpName +()}(); + +151 +public + +funùiÚ + +£t +{ +$cÞumn +-> + `g‘PhpName +()}(\ +$v®ue +, \ +$cuÉu» + = +nuÎ +) + +153 \ +$this +-> +g‘Cu¼’t +{ +$»fPhpName +}(\ +$cuÉu» +)-> +£t +{ +$cÞumn +-> + `g‘PhpName +()}(\ +$v®ue +); + +154  \ +$this +; + +157 +EOF +; + +160 +$süt + .ð<<< +EOF + + +167 +public + +funùiÚ + +g‘Cu¼’t +{ +$»fPhpName +}(\ +$cuÉu» + = +nuÎ +) + +169 ià( +nuÎ + ==ð\ +$cuÉu» +) + +171 \ +$cuÉu» + = +nuÎ + ==ð\ +$this +-> +cuÉu» + ? +sfPrݖ +:: + `g‘DeçuÉCuÉu» +() : \$this->culture; + +174 ià(! + `is£t +(\ +$this +-> +cu¼’t_i18n +[\ +$cuÉu» +])) + +176 \ +$objeù + = \ +$this +-> + `isNew +(è? +nuÎ + : {$this-> + `g‘I18nTabË +()-> + `g‘PhpName +()} +P“r +:: + `»Œ›veByPK +(\$this-> + `g‘Prim¬yKey +(), \ +$cuÉu» +); + +177 ià(\ +$objeù +) + +179 \ +$this +-> +£t +{ +$»fPhpName +} + `FÜCuÉu» +(\ +$objeù +, \ +$cuÉu» +); + +183 \ +$this +-> +£t +{ +$»fPhpName +} + `FÜCuÉu» +( +Ãw + {$this-> + `g‘I18nTabË +()-> + `g‘PhpName +()}(), \ +$cuÉu» +); + +184 \ +$this +-> +cu¼’t_i18n +[\ +$cuÉu» +]-> +£t +{$this-> + `g‘I18nTabË +()-> + `g‘BehaviÜ +('symfÚy_i18n_Œª¦©iÚ')-> + `g‘CuÉu»CÞumn +()-> + `g‘PhpName +()}(\$culture); + +188  \ +$this +-> +cu¼’t_i18n +[\ +$cuÉu» +]; + +194 +public + +funùiÚ + +£t +{ +$»fPhpName +} + `FÜCuÉu» +({ +$this +-> + `g‘I18nTabË +()-> + `g‘PhpName +()} \ +$objeù +, \ +$cuÉu» +) + +196 \ +$this +-> +cu¼’t_i18n +[\ +$cuÉu» +] = \ +$objeù +; + +197 \ +$this +-> +add +{ +$»fPhpName +}(\ +$objeù +); + +200 +EOF +; + +202 ià(! +$this +-> + `hasPrim¬ySŒšg +($this-> + `g‘TabË +()è&& $this->hasPrim¬ySŒšg($this-> + `g‘I18nTabË +())) + +204 +$süt + .ð<<< +EOF + + +209 +public + +funùiÚ + + `__toSŒšg +() + +211  ( +¡ršg +è\ +$this +-> +g‘Cu¼’t +{ +$»fPhpName +}(); + +214 +EOF +; + +217  +$süt +; + +218 + } +} + +220 +public + +funùiÚ + + $¡©icM‘hods +() + +222 +$fÜeignKey + = +$this +-> + `g‘I18nTabË +()-> + `g‘BehaviÜ +('symfÚy_i18n_Œª¦©iÚ')-> + `g‘FÜeignKey +(); + +223 +$»fPhpName + = +$fÜeignKey +-> + `g‘RefPhpName +(è? $fÜeignKey->g‘RefPhpName(è: +$this +-> + `g‘I18nTabË +()-> + `g‘PhpName +(); + +224 +$još + = + `š_¬¿y +( +$this +-> + `g‘BuždPrݔty +('´Ý–.u£LeáJošsInDoJošM‘hods'), + `¬¿y +( +Œue +, +nuÎ +),rue) ? 'LEFT' : 'INNER'; + +226 +$behaviÜs + = +$this +-> + `g‘TabË +()-> + `g‘BehaviÜs +(); + +227 +$mix”Hook + = ! + `is£t +( +$behaviÜs +['symfÚy_behaviÜs']è? '' : <<< +EOF + + +229 + `fܗch + ( +sfMix” +:: + `g‘C®ÏbËs +('Ba£{$this->g‘TabË()->g‘PhpName()}:doS–eùJoš:doS–eùJoš'è +as + \ +$sf_hook +) + +231 + `ÿÎ_u£r_func +(\ +$sf_hook +, '{$this->g‘TabË()->g‘PhpName()}', \ +$ü™”Ÿ +, \ +$cÚ +); + +234 +EOF +; + +236  <<< +EOF + + +243  +public + +funùiÚ + + `g‘I18nMod– +() + +258  +public + +funùiÚ + + `doS–eùW™hI18n +( +Cr™”Ÿ + \ +$ü™”Ÿ +, \ +$cuÉu» + = +nuÎ +, \ +$cÚ + =‚uÎ, \ +$još_behaviÜ + = Cr™”Ÿ::{ +$još +} +_JOIN +) + +260 \ +$ü™”Ÿ + = +þÚe + \$criteria; + +262 ià( +nuÎ + ==ð\ +$cuÉu» +) + +264 \ +$cuÉu» + = +sfPrݖ +:: + `g‘DeçuÉCuÉu» +(); + +268 ià(\ +$ü™”Ÿ +-> + `g‘DbName +(è=ð +Prݖ +:: + `g‘DeçuÉDB +()) { + +269 \ +$ü™”Ÿ +-> + `£tDbName +( +£lf +:: +DATABASE_NAME +); + +272 { +$this +-> + `g‘TabË +()-> + `g‘PhpName +()} +P“r +:: + `addS–eùCÞumns +(\ +$ü™”Ÿ +); + +273 \ +$¡¬tcÞ + = ({ +$this +-> + `g‘TabË +()-> + `g‘PhpName +()} +P“r +:: +NUM_COLUMNS + - {$this->g‘TabË()->g‘PhpName()}P“r:: +NUM_LAZY_LOAD_COLUMNS +); + +274 { +$this +-> + `g‘I18nTabË +()-> + `g‘PhpName +()} +P“r +:: + `addS–eùCÞumns +(\ +$ü™”Ÿ +); + +275 \ +$ü™”Ÿ +-> + `addJoš +({ +$this +-> + `g‘LoÿlCÞumn +()-> + `g‘CÚ¡ªtName +()}, {$this-> + `g‘FÜeignCÞumn +()->g‘CÚ¡ªtName()}, \ +$još_behaviÜ +); + +276 \ +$ü™”Ÿ +-> + `add +({ +$this +-> + `g‘CuÉu»CÞumn +($this-> + `g‘I18nTabË +())-> + `g‘CÚ¡ªtName +()}, \ +$cuÉu» +); + +277 { +$mix”Hook +} + +278 \ +$¡mt + = +Ba£P“r +:: + `doS–eù +(\ +$ü™”Ÿ +, \ +$cÚ +); + +279 \ +$»suÉs + = + `¬¿y +(); + +281 \ +$row + = \ +$¡mt +-> + `ãtch +( +PDO +:: +FETCH_NUM +)) { + +282 \ +$key1 + = { +$this +-> + `g‘TabË +()-> + `g‘PhpName +()} +P“r +:: + `g‘Prim¬yKeyHashFromRow +(\ +$row +, 0); + +283 ià( +nuÎ + !=ð(\ +$obj1 + = { +$this +-> + `g‘TabË +()-> + `g‘PhpName +()} +P“r +:: + `g‘In¡ªûFromPoÞ +(\ +$key1 +))) { + +288 \ +$þs + = { +$this +-> + `g‘TabË +()-> + `g‘PhpName +()} +P“r +:: + `g‘OMCÏss +( +çl£ +); + +289 \ +$obj1 + = +Ãw + \ + `$þs +(); + +290 \ +$obj1 +-> + `hyd¿‹ +(\ +$row +); + +291 { +$this +-> + `g‘TabË +()-> + `g‘PhpName +()} +P“r +:: + `addIn¡ªûToPoÞ +(\ +$obj1 +, \ +$key1 +); + +294 \ +$key2 + = { +$this +-> + `g‘I18nTabË +()-> + `g‘PhpName +()} +P“r +:: + `g‘Prim¬yKeyHashFromRow +(\ +$row +, \ +$¡¬tcÞ +); + +295 ià(\ +$key2 + !=ð +nuÎ +) { + +296 \ +$obj2 + = { +$this +-> + `g‘I18nTabË +()-> + `g‘PhpName +()} +P“r +:: + `g‘In¡ªûFromPoÞ +(\ +$key2 +); + +297 ià(!\ +$obj2 +) { + +298 \ +$þs + = { +$this +-> + `g‘I18nTabË +()-> + `g‘PhpName +()} +P“r +:: + `g‘OMCÏss +( +çl£ +); + +299 \ +$obj2 + = +Ãw + \ + `$þs +(); + +300 \ +$obj2 +-> + `hyd¿‹ +(\ +$row +, \ +$¡¬tcÞ +); + +301 { +$this +-> + `g‘I18nTabË +()-> + `g‘PhpName +()} +P“r +:: + `addIn¡ªûToPoÞ +(\ +$obj2 +, \ +$key2 +); + +304 \ +$obj1 +-> +£t +{ +$»fPhpName +} + `FÜCuÉu» +(\ +$obj2 +, \ +$cuÉu» +); + +307 \ +$»suÉs +[] = \ +$obj1 +; + +310 \ +$¡mt +-> + `þo£CursÜ +(); + +312  \ +$»suÉs +; + +315 +EOF +; + +316 + } +} + +323 +public + +funùiÚ + + $g‘I18nTabË +() + +325  +$this +-> + `g‘D©aba£ +()-> + `g‘TabË +($this-> + `g‘P¬am‘” +('i18n_table')); + +326 + } +} + +335 +´Ùeùed + +funùiÚ + + $g‘CuÉu»CÞumn +( +TabË + +$bË +) + +337 + `fܗch + ( +$bË +-> + `g‘CÞumns +(è +as + +$cÞumn +) + +339 ià('Œue' =ð +$cÞumn +-> + `g‘A‰ribu‹ +('isCulture')) + +341  +$cÞumn +; + +345 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('ThbË "%s" dÛ nÙ hav¨cÞumÀm¬ked w™hh"isCuÉu»"‡‰ribu‹.', +$bË +-> + `g‘Name +())); + +346 + } +} + +353 +´Ùeùed + +funùiÚ + + $g‘LoÿlCÞumn +() + +355 +$cÞumns + = +$this +-> + `g‘I18nTabË +()-> + `g‘BehaviÜ +('symfÚy_i18n_Œª¦©iÚ')-> + `g‘FÜeignKey +()-> + `g‘FÜeignCÞumns +(); + +356  +$this +-> + `g‘TabË +()-> + `g‘CÞumn +( +$cÞumns +[0]); + +357 + } +} + +364 +´Ùeùed + +funùiÚ + + $g‘FÜeignCÞumn +() + +366 +$cÞumns + = +$this +-> + `g‘I18nTabË +()-> + `g‘BehaviÜ +('symfÚy_i18n_Œª¦©iÚ')-> + `g‘FÜeignKey +()-> + `g‘LoÿlCÞumns +(); + +367  +$this +-> + `g‘I18nTabË +()-> + `g‘CÞumn +( +$cÞumns +[0]); + +368 + } +} + +377 +´Ùeùed + +funùiÚ + + $hasPrim¬ySŒšg +( +TabË + +$bË +) + +379 + `fܗch + ( +$bË +-> + `g‘CÞumns +(è +as + +$cÞumn +) + +381 ià( +$cÞumn +-> + `isPrim¬ySŒšg +()) + +383  +Œue +; + +387  +çl£ +; + +388 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/behavior/SfPropelBehaviorI18nTranslation.php + +1 +nuÎ +, + +25 +public + +funùiÚ + + $objeùFž‹r +(& +$süt +) + +27 ià( +$this +-> + `isDi§bËd +()) + +32 +$þass + = +Ãw + + `sfCÏssMªuÏtÜ +( +$süt +); + +33 +$þass +-> + `fž‹rM‘hod +('doSave', + `¬¿y +( +$this +, 'filterDoSave')); + +35 +$süt + = +$þass +-> + `g‘Code +(); + +45 +public + +funùiÚ + + $fž‹rDoSave +( +$lše +) + +47 +$fÜeignKey + = +$this +-> + `g‘FÜeignKey +(); + +48 +$phpName + = +$fÜeignKey +-> + `g‘PhpName +(è? $fÜeignKey->g‘PhpName(è: $fÜeignKey-> + `g‘FÜeignTabË +()->getPhpName(); + +49 +$»fPhpName + = +$fÜeignKey +-> + `g‘RefPhpName +(è? $fÜeignKey->g‘RefPhpName(è: +$this +-> + `g‘TabË +()-> + `g‘PhpName +(); + +50 +$£¬ch + = + `¥rštf +('$this->a%s->isModif›d()', +$phpName +); + +51 +$𣹠+ = + `¥rštf +(' || ($this->a%s->g‘CuÉu»(è&& $this->a%1$s->g‘Cu¼’t%s()->isModif›d())', +$phpName +, +$»fPhpName +); + +53 ià( +çl£ + !=ð + `¡½os +( +$lše +, +$£¬ch +)) + +55 +$lše + = + `¡r_»¶aû +( +$£¬ch +, $£¬ch. +$𣹠+, $line); + +58  +$lše +; + +59 + } +} + +68 +public + +funùiÚ + + $g‘FÜeignKey +() + +70 + `fܗch + ( +$this +-> + `g‘TabË +()-> + `g‘FÜeignKeys +(è +as + +$fk +) + +72 +$behaviÜs + = +$fk +-> + `g‘FÜeignTabË +()-> + `g‘BehaviÜs +(); + +73 ià( + `is£t +( +$behaviÜs +['symfony_i18n'])) + +75  +$fk +; + +79 +throw + +Ãw + + `Exû±iÚ +('The foreign keyhat„eferenceshe I18N model could‚ot be found.'); + +80 + } +} + +87 +public + +funùiÚ + + $g‘CuÉu»CÞumn +() + +89  +$this +-> + `g‘TabË +()-> + `g‘CÞumn +($this-> + `g‘P¬am‘” +('culture_column')); + +90 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/behavior/SfPropelBehaviorSymfony.php + +1 + `g‘D©aba£ +()-> + `g‘TabËs +(è +as + +$bË +) + +30 +$behaviÜs + = +$bË +-> + `g‘BehaviÜs +(); + +32 ià(! + `is£t +( +$behaviÜs +['symfony'])) + +34 +$behaviÜ + = +þÚe + +$this +; + +35 +$bË +-> + `addBehaviÜ +( +$behaviÜ +); + +39 ià(! + `is£t +( +$behaviÜs +['symfÚy_behaviÜs']è&& +$this +-> + `g‘BuždPrݔty +('propel.builder.addBehaviors')) + +41 +$þass + = +Prݖ +:: + `impÜtCÏss +( +$this +-> + `g‘BuždPrݔty +('propel.behavior.symfony_behaviors.class')); + +42 +$behaviÜ + = +Ãw + + `$þass +(); + +43 +$behaviÜ +-> + `£tName +('symfony_behaviors'); + +44 +$bË +-> + `addBehaviÜ +( +$behaviÜ +); + +48 ià(! + `is£t +( +$behaviÜs +['symfony_timestampable'])) + +50 +$·¿m‘”s + = + `¬¿y +(); + +51 + `fܗch + ( +$bË +-> + `g‘CÞumns +(è +as + +$cÞumn +) + +53 ià(! + `is£t +( +$·¿m‘”s +['ü—‹_cÞumn']è&& + `š_¬¿y +( +$cÞumn +-> + `g‘Name +(), + `¬¿y +('created_at', 'created_on'))) + +55 +$·¿m‘”s +['ü—‹_cÞumn'] = +$cÞumn +-> + `g‘Name +(); + +58 ià(! + `is£t +( +$·¿m‘”s +['upd©e_cÞumn']è&& + `š_¬¿y +( +$cÞumn +-> + `g‘Name +(), + `¬¿y +('updated_at', 'updated_on'))) + +60 +$·¿m‘”s +['upd©e_cÞumn'] = +$cÞumn +-> + `g‘Name +(); + +64 ià( +$·¿m‘”s +) + +66 +$þass + = +Prݖ +:: + `impÜtCÏss +( +$this +-> + `g‘BuždPrݔty +('propel.behavior.symfony_timestampable.class')); + +67 +$behaviÜ + = +Ãw + + `$þass +(); + +68 +$behaviÜ +-> + `£tName +('symfony_timestampable'); + +69 +$behaviÜ +-> + `£tP¬am‘”s +( +$·¿m‘”s +); + +70 +$bË +-> + `addBehaviÜ +( +$behaviÜ +); + +76 +public + +funùiÚ + + $objeùA‰ribu‹s +() + +78 ià( +$this +-> + `isDi§bËd +()) + +83  <<< +EOF + + +85 cÚ¡ +PEER + = '{$this->getTable()->getPhpName()}Peer'; + +87 +EOF +; + +88 + } +} + +90 +public + +funùiÚ + + $¡©icA‰ribu‹s +() + +92 ià( +$this +-> + `isDi§bËd +()) + +97 +$behaviÜs + = +$this +-> + `g‘TabË +()-> + `g‘BehaviÜs +(); + +98 +$isI18n + = + `is£t +( +$behaviÜs +['symfony_i18n']) ? 'true' : 'false'; + +100  <<< +EOF + + +105 cÚ¡ +IS_I18N + = { +$isI18n +}; + +107 +EOF +; + +108 + } +} + +110 +public + +funùiÚ + + $¡©icM‘hods +() + +112 ià( +$this +-> + `isDi§bËd +()) + +117 +$uniûs + = + `¬¿y +(); + +118 + `fܗch + ( +$this +-> + `g‘TabË +()-> + `g‘Uniûs +(è +as + +$unique +) + +120 +$uniûs +[] = + `¥rštf +("¬¿y('%s')", + `im¶ode +("', '", +$unique +-> + `g‘CÞumns +())); + +122 +$uniûs + = + `im¶ode +(', ', + `¬¿y_unique +($unices)); + +124  <<< +EOF + + +131  +public + +funùiÚ + + `g‘UniqueCÞumnNames +() + +133  + `¬¿y +({ +$uniûs +}); + +136 +EOF +; + +137 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/behavior/SfPropelBehaviorSymfonyBehaviors.php + +1 + `isDi§bËd +()) + +28  <<< +EOF + + +29 + `fܗch + ( +sfMix” +:: + `g‘C®ÏbËs +('Ba£{$this->g‘TabË()->g‘PhpName()}:d–‘e:´e'è +as + \ +$ÿÎabË +) + +31 ià( + `ÿÎ_u£r_func +(\ +$ÿÎabË +, \ +$this +, \ +$cÚ +)) + +33 \ +$cÚ +-> + `comm™ +(); + +39 +EOF +; + +42 +public + +funùiÚ + + $po¡D–‘e +() + +44 ià( +$this +-> + `isDi§bËd +()) + +49  <<< +EOF + + +50 + `fܗch + ( +sfMix” +:: + `g‘C®ÏbËs +('Ba£{$this->g‘TabË()->g‘PhpName()}:d–‘e:po¡'è +as + \ +$ÿÎabË +) + +52 + `ÿÎ_u£r_func +(\ +$ÿÎabË +, \ +$this +, \ +$cÚ +); + +55 +EOF +; + +56 + } +} + +58 +public + +funùiÚ + + $´eSave +() + +60 ià( +$this +-> + `isDi§bËd +()) + +65  <<< +EOF + + +66 + `fܗch + ( +sfMix” +:: + `g‘C®ÏbËs +('Ba£{$this->g‘TabË()->g‘PhpName()}:§ve:´e'è +as + \ +$ÿÎabË +) + +68 ià( + `is_š‹g” +(\ +$afãùedRows + = + `ÿÎ_u£r_func +(\ +$ÿÎabË +, \ +$this +, \ +$cÚ +))) + +70 \ +$cÚ +-> + `comm™ +(); + +72  \ +$afãùedRows +; + +76 +EOF +; + +77 + } +} + +79 +public + +funùiÚ + + $po¡Save +() + +81 ià( +$this +-> + `isDi§bËd +()) + +86  <<< +EOF + + +87 + `fܗch + ( +sfMix” +:: + `g‘C®ÏbËs +('Ba£{$this->g‘TabË()->g‘PhpName()}:§ve:po¡'è +as + \ +$ÿÎabË +) + +89 + `ÿÎ_u£r_func +(\ +$ÿÎabË +, \ +$this +, \ +$cÚ +, \ +$afãùedRows +); + +92 +EOF +; + +93 + } +} + +95 +public + +funùiÚ + + $objeùM‘hods +() + +97 ià( +$this +-> + `isDi§bËd +()) + +102  <<< +EOF + + +107 +public + +funùiÚ + + `__ÿÎ +(\ +$m‘hod +, \ +$¬gum’ts +) + +109 ià(!\ +$ÿÎabË + = +sfMix” +:: + `g‘C®ÏbË +('Ba£{$this->g‘TabË()->g‘PhpName()}:'.\ +$m‘hod +)) + +111 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('C®ÈtØundefšed m‘hod Ba£{$this->g‘TabË()->g‘PhpName()}::%s', \ +$m‘hod +)); + +114 + `¬¿y_unshiá +(\ +$¬gum’ts +, \ +$this +); + +116  + `ÿÎ_u£r_func_¬¿y +(\ +$ÿÎabË +, \ +$¬gum’ts +); + +119 +EOF +; + +120 + } +} + +122 +public + +funùiÚ + + $¡©icM‘hods +() + +124 ià( +$this +-> + `isDi§bËd +()) + +129  <<< +EOF + + +140  +´iv©e + +funùiÚ + + `g‘Mix”P»S–eùHook +(\ +$m‘hod +) + +142 ià( + `´eg_m©ch +('/^do(S–eù|CouÁ)(Još(AÎ(Exû±)?)?|Stmt)?/', \ +$m‘hod +, \ +$m©ch +)) + +144  + `¥rštf +('Ba£{$this->g‘TabË()->g‘PhpName()}P“r:%s:%1\$s', 'CouÁ' =ð\ +$m©ch +[1] ? 'doCount' : \$match[0]); + +147 +throw + +Ãw + + `LogicExû±iÚ +( + `¥rštf +('UÄecognized funùiÚ "%s"', \ +$m‘hod +)); + +150 +EOF +; + +151 + } +} + +153 +public + +funùiÚ + + $´eS–eù +() + +155 ià( +$this +-> + `isDi§bËd +()) + +160  <<< +EOF + + +161 + `fܗch + ( +sfMix” +:: + `g‘C®ÏbËs +( +£lf +:: + `g‘Mix”P»S–eùHook +( +__FUNCTION__ +)è +as + \ +$sf_hook +) + +163 + `ÿÎ_u£r_func +(\ +$sf_hook +, 'Ba£{$this->g‘TabË()->g‘PhpName()}P“r', \ +$ü™”Ÿ +, \ +$cÚ +); + +166 +EOF +; + +167 + } +} + +169 +public + +funùiÚ + + $objeùFž‹r +(& +$süt +) + +171 ià( +$this +-> + `isDi§bËd +()) + +176 ià( +$this +-> + `g‘TabË +()-> + `g‘A‰ribu‹ +('behaviors')) + +178 +$süt + .ð +$this +-> + `g‘BehaviÜsInþude +(); + +180 + } +} + +182 +public + +funùiÚ + + $³”Fž‹r +(& +$süt +) + +184 ià( +$this +-> + `isDi§bËd +()) + +189 +$doIn£¹P» + = <<< +EOF + + +191 + `fܗch + ( +sfMix” +:: + `g‘C®ÏbËs +('Ba£{$this->g‘TabË()->g‘PhpName()}P“r:doIn£¹:´e'è +as + \ +$sf_hook +) + +193 ià( +çl£ + !=ð\ +$sf_hook_»tv® + = + `ÿÎ_u£r_func +(\ +$sf_hook +, 'Ba£{$this->g‘TabË()->g‘PhpName()}P“r', \ +$v®ues +, \ +$cÚ +)) + +195  \ +$sf_hook_»tv® +; + +199 +EOF +; + +200 +$doUpd©eP» + = <<< +EOF + + +202 + `fܗch + ( +sfMix” +:: + `g‘C®ÏbËs +('Ba£{$this->g‘TabË()->g‘PhpName()}P“r:doUpd©e:´e'è +as + \ +$sf_hook +) + +204 ià( +çl£ + !=ð\ +$sf_hook_»tv® + = + `ÿÎ_u£r_func +(\ +$sf_hook +, 'Ba£{$this->g‘TabË()->g‘PhpName()}P“r', \ +$v®ues +, \ +$cÚ +)) + +206  \ +$sf_hook_»tv® +; + +210 +EOF +; + +213 +$þass + = +Ãw + + `sfCÏssMªuÏtÜ +( +$süt +); + +214 +$þass +-> + `fž‹rM‘hod +('doIn£¹', + `¬¿y +( +$this +, 'filterDoInsert')); + +215 +$þass +-> + `w¿pM‘hod +('doIn£¹', +$doIn£¹P» +); + +216 +$þass +-> + `fž‹rM‘hod +('doUpd©e', + `¬¿y +( +$this +, 'filterDoUpdate')); + +217 +$þass +-> + `w¿pM‘hod +('doUpd©e', +$doUpd©eP» +); + +219 +$süt + = +$þass +-> + `g‘Code +(); + +222 ià( +$this +-> + `ü—‹BehaviÜsFže +()) + +224 +$süt + .ð +$this +-> + `g‘BehaviÜsInþude +(); + +226 + } +} + +235 +public + +funùiÚ + + $fž‹rDoIn£¹ +( +$lše +) + +237 ià( +çl£ + !=ð + `¡½os +( +$lše +, 'return')) + +239 +$doIn£¹Po¡ + = <<< +EOF + + +241 + `fܗch + ( +sfMix” +:: + `g‘C®ÏbËs +('Ba£{$this->g‘TabË()->g‘PhpName()}P“r:doIn£¹:po¡'è +as + \ +$sf_hook +) + +243 + `ÿÎ_u£r_func +(\ +$sf_hook +, 'Ba£{$this->g‘TabË()->g‘PhpName()}P“r', \ +$v®ues +, \ +$cÚ +, \ +$pk +); + +247 +EOF +; + +249 +$lše + = +$doIn£¹Po¡ +.$line; + +252  +$lše +; + +253 + } +} + +262 +public + +funùiÚ + + $fž‹rDoUpd©e +( +$lše +) + +264 ià( +çl£ + !=ð + `¡½os +( +$lše +, 'return')) + +266 +$»¶aû + = + `¡r_»¶aû +('»tuº', '$»ˆ=', +$lše +); + +267 +$doUpd©ePo¡ + = <<< +EOF + + +270 + `fܗch + ( +sfMix” +:: + `g‘C®ÏbËs +('Ba£{$this->g‘TabË()->g‘PhpName()}P“r:doUpd©e:po¡'è +as + \ +$sf_hook +) + +272 + `ÿÎ_u£r_func +(\ +$sf_hook +, 'Ba£{$this->g‘TabË()->g‘PhpName()}P“r', \ +$v®ues +, \ +$cÚ +, \ +$»t +); + +275  \ +$»t +; + +277 +EOF +; + +279 +$lše + = +$»¶aû +. +$doUpd©ePo¡ +; + +282  +$lše +; + +283 + } +} + +292 +´Ùeùed + +funùiÚ + + $ü—‹BehaviÜsFže +() + +294 +$fže + = +$this +-> + `g‘BehaviÜsFžeP©h +( +Œue +); + +296 ià( + `fže_exi¡s +( +$fže +)) + +298 + `uƚk +( +$fže +); + +301 ià( +$behaviÜs + = +$this +-> + `g‘TabË +()-> + `g‘A‰ribu‹ +('behaviors')) + +303 +$code + = <<< +EOF + + +304 g‘TabË()->g‘PhpName()}', % +s +); + +308 +EOF +; + +310 + `fže_put_cڋÁs +( +$fže +, + `¥rštf +( +$code +, + `v¬_expÜt +( + `un£rŸlize +( +$behaviÜs +), +Œue +))); + +311  +Œue +; + +313 + } +} + +320 +´Ùeùed + +funùiÚ + + $g‘BehaviÜsInþude +() + +322  <<< +EOF + + +325 +šþude_Úû + '{$this->getBehaviorsFilePath()}'; + +327 +EOF +; + +328 + } +} + +337 +´Ùeùed + +funùiÚ + + $g‘BehaviÜsFžeP©h +( +$absÞu‹ + = +çl£ +) + +339 +$ba£ + = +$absÞu‹ + ? +sfCÚfig +:: + `g‘ +('sf_roÙ_dœ'). +DIRECTORY_SEPARATOR + : ''; + +340  +$ba£ +. +CÏssToÞs +:: + `g‘FžeP©h +( +$this +-> + `g‘TabË +()-> + `g‘Package +().'.om', + `¥rštf +('Ba£%sBehaviÜs', $this->g‘TabË()-> + `g‘PhpName +())); + +341 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/behavior/SfPropelBehaviorTimestampable.php + +1 +nuÎ +, + +23 'upd©e_cÞumn' => +nuÎ +, + +26 +public + +funùiÚ + + $´eIn£¹ +() + +28 ià( +$this +-> + `isDi§bËd +()) + +33 ià( +$cÞumn + = +$this +-> + `g‘P¬am‘” +('create_column')) + +35  <<< +EOF + + +36 ià(!\ +$this +-> + `isCÞumnModif›d +({$this-> + `g‘TabË +()-> + `g‘CÞumn +( +$cÞumn +)-> + `g‘CÚ¡ªtName +()})) + +38 \ +$this +-> +£t +{$this-> + `g‘TabË +()-> + `g‘CÞumn +( +$cÞumn +)-> + `g‘PhpName +()}( + `time +()); + +41 +EOF +; + +45 +public + +funùiÚ + + $´eSave +() + +47 ià( +$this +-> + `isDi§bËd +()) + +52 ià( +$cÞumn + = +$this +-> + `g‘P¬am‘” +('update_column')) + +54  <<< +EOF + + +55 ià(\ +$this +-> + `isModif›d +(è&& !\$this-> + `isCÞumnModif›d +({$this-> + `g‘TabË +()-> + `g‘CÞumn +( +$cÞumn +)-> + `g‘CÚ¡ªtName +()})) + +57 \ +$this +-> +£t +{$this-> + `g‘TabË +()-> + `g‘CÞumn +( +$cÞumn +)-> + `g‘PhpName +()}( + `time +()); + +60 +EOF +; + +62 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/database/sfPropelDatabase.class.php + +1 +Prݖ +:: + `g‘CÚfigu¿tiÚ +( +PrݖCÚfigu¿tiÚ +:: +TYPE_ARRAY +)); + +39 +public + +funùiÚ + + `š™Ÿlize +( +$·¿m‘”s + = +nuÎ +, +$Çme + = 'propel') + +41 +·»Á +:: + `š™Ÿlize +( +$·¿m‘”s +); + +43 ià(! +$this +-> + `hasP¬am‘” +('datasource') && $this->hasParameter('name')) + +45 +$this +-> + `£tP¬am‘” +('d©asourû', $this-> + `g‘P¬am‘” +('name')); + +47 + `–£if + (! +$this +-> + `hasP¬am‘” +('d©asourû'è&& ! + `em±y +( +$Çme +)) + +49 +$this +-> + `£tP¬am‘” +('d©asourû', +$Çme +); + +52 +$this +-> + `addCÚfig +(); + +55 ià(! +Prݖ +:: + `g‘CÚfigu¿tiÚ +( +PrݖCÚfigu¿tiÚ +:: +TYPE_OBJECT +)-> + `g‘P¬am‘” +('datasources.default')) + +57 +$this +-> + `£tDeçuÉCÚfig +(); + +61 ià( +$this +-> + `g‘P¬am‘” +('poޚg', +çl£ +)) + +63 +Prݖ +:: + `’abËIn¡ªûPoޚg +(); + +67 +Prݖ +:: + `di§bËIn¡ªûPoޚg +(); + +69 + } +} + +78 +public + +funùiÚ + + $cÚÃù +() + +80 +$this +-> +cÚÃùiÚ + = +Prݖ +:: + `g‘CÚÃùiÚ +($this-> + `g‘P¬am‘” +('datasource')); + +81 + } +} + +86 +public + +funùiÚ + + $£tDeçuÉCÚfig +() + +88 +Prݖ +:: + `g‘CÚfigu¿tiÚ +( +PrݖCÚfigu¿tiÚ +:: +TYPE_OBJECT +)-> + `£tP¬am‘” +('d©asourûs.deçuÉ', +$this +-> + `g‘P¬am‘” +('datasource')); + +89 + } +} + +94 +public + +funùiÚ + + $addCÚfig +() + +96 ià( +$d¢ + = +$this +-> + `g‘P¬am‘” +('dsn')) + +98 +$·¿ms + = +$this +-> + `·r£D¢ +( +$d¢ +); + +100 +$ÝtiÚs + = + `¬¿y +('dsn', 'phptype', 'hostspec', 'database', 'username', 'password', 'port', 'protocol', 'encoding', 'persistent', 'socket', 'compat_assoc_lower', 'compat_rtrim_string'); + +101 + `fܗch + ( +$ÝtiÚs + +as + +$ÝtiÚ +) + +103 ià(! +$this +-> + `g‘P¬am‘” +( +$ÝtiÚ +è&& + `is£t +( +$·¿ms +[$option])) + +105 +$this +-> + `£tP¬am‘” +( +$ÝtiÚ +, +$·¿ms +[$option]); + +110 ià( +$this +-> + `hasP¬am‘” +('persistent')) + +113 +$this +-> + `£tP¬am‘” +('ÝtiÚs', + `¬¿y_m”ge +( + +114 +$this +-> + `g‘P¬am‘” +('ÝtiÚs', + `¬¿y +()), + +115 + `¬¿y +('ATTR_PERSISTENT' => +$this +-> + `g‘P¬am‘” +('persistent')) + +119 +$´Ý–CÚfigu¿tiÚ + = +Prݖ +:: + `g‘CÚfigu¿tiÚ +( +PrݖCÚfigu¿tiÚ +:: +TYPE_OBJECT +); + +121 ià( +$this +-> + `hasP¬am‘” +('debug')) + +123 +$´Ý–CÚfigu¿tiÚ +-> + `£tP¬am‘” +('debugpdo.loggšg', +sfToÞk™ +:: + `¬¿yD“pM”ge +( + +124 +$´Ý–CÚfigu¿tiÚ +-> + `g‘P¬am‘” +('debugpdo.loggšg', + `¬¿y +()), + +125 +$this +-> + `g‘P¬am‘” +('debug') + +129 +$ev’t + = +Ãw + + `sfEv’t +( +$´Ý–CÚfigu¿tiÚ +, '´Ý–.fž‹r_cÚÃùiÚ_cÚfig', + `¬¿y +('Çme' => +$this +-> + `g‘P¬am‘” +('datasource'), 'database' => $this)); + +130 +$ev’t + = +sfProjeùCÚfigu¿tiÚ +:: + `g‘Aùive +()-> + `g‘Ev’tDi¥©ch” +()-> + `fž‹r +($ev’t, + `¬¿y +( + +131 'ad­‹r' => +$this +-> + `g‘P¬am‘” +('phptype'), + +132 'cÚÃùiÚ' => + `¬¿y +( + +133 'd¢' => +$this +-> + `g‘P¬am‘” +('dsn'), + +134 'u£r' => +$this +-> + `g‘P¬am‘” +('username'), + +135 '·sswÜd' => +$this +-> + `g‘P¬am‘” +('password'), + +136 'þas¢ame' => +$this +-> + `g‘P¬am‘” +('classname', 'PropelPDO'), + +137 'ÝtiÚs' => +$this +-> + `g‘P¬am‘” +('ÝtiÚs', + `¬¿y +()), + +138 '£‰šgs' => + `¬¿y +( + +139 'ch¬£t' => + `¬¿y +('v®ue' => +$this +-> + `g‘P¬am‘” +('’codšg', +sfCÚfig +:: + `g‘ +('sf_charset'))), + +140 'qu”›s' => +$this +-> + `g‘P¬am‘” +('qu”›s', + `¬¿y +()), + +145 +$´Ý–CÚfigu¿tiÚ +-> + `£tP¬am‘” +('d©asourûs.'. +$this +-> + `g‘P¬am‘” +('d©asourû'), +$ev’t +-> + `g‘R‘uºV®ue +()); + +146 + } +} + +154 +public + +funùiÚ + + $£tCÚÃùiÚP¬am‘” +( +$key +, +$v®ue +) + +156 ià('ho¡' =ð +$key +) + +158 +$key + = 'hostspec'; + +161 +Prݖ +:: + `g‘CÚfigu¿tiÚ +( +PrݖCÚfigu¿tiÚ +:: +TYPE_OBJECT +)-> + `£tP¬am‘” +('d©asourûs.'. +$this +-> + `g‘P¬am‘” +('d©asourû').'.cÚÃùiÚ.'. +$key +, +$v®ue +); + +162 +$this +-> + `£tP¬am‘” +( +$key +, +$v®ue +); + +163 + } +} + +170 +public + +funùiÚ + + $shutdown +() + +172 ià( +nuÎ + !=ð +$this +-> +cÚÃùiÚ +) + +174 @ +$this +-> +cÚÃùiÚ + = +nuÎ +; + +176 + } +} + +185 +´Ùeùed + +funùiÚ + + $·r£D¢ +( +$d¢ +) + +187  + `¬¿y +('ph±y³' => + `sub¡r +( +$d¢ +, 0, + `¡½os +($dsn, ':'))); + +188 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/debug/sfWebDebugPanelPropel.class.php + +1 + `g‘SqlLogs +()) + +32  ' '. + `couÁ +( +$sqlLogs +); + +41 +public + +funùiÚ + + $g‘Pª–T™Ë +() + +44 + } +} + +51 +public + +funùiÚ + + $g‘Pª–CڋÁ +() + +54 < +div + +id +="sfWebDebugDatabaseLogs"> + +55 < +h3 +> +Prݖ + +V”siÚ +: '.Propel::VERSION.' + +56 < +Þ +>'.implode("\n", $this->getSqlLogs()).' + +57 + +59 + } +} + +64  +public + +funùiÚ + + $li¡’ToAddPª–Ev’t +( +sfEv’t + +$ev’t +) + +66 +$ev’t +-> + `g‘Subjeù +()-> + `£tPª– +('db', +Ãw + + `£lf +($event->getSubject())); + +67 + } +} + +74 +´Ùeùed + +funùiÚ + + $g‘SqlLogs +() + +76 +$cÚfig + = +$this +-> + `g‘PrݖCÚfigu¿tiÚ +(); + +77 +$ou‹rGlue + = +$cÚfig +-> + `g‘P¬am‘” +('debugpdo.logging.outerglue', ' | '); + +78 +$šÃrGlue + = +$cÚfig +-> + `g‘P¬am‘” +('debugpdo.logging.innerglue', ': '); + +79 +$æagSlow + = +$cÚfig +-> + `g‘P¬am‘” +('debugpdo.loggšg.d‘ažs.¦ow.’abËd', +çl£ +); + +80 +$th»shÞd + = +$cÚfig +-> + `g‘P¬am‘” +('debugpdo.loggšg.d‘ažs.¦ow.th»shÞd', +DebugPDO +:: +DEFAULT_SLOW_THRESHOLD +); + +82 +$html + = + `¬¿y +(); + +83 + `fܗch + ( +$this +-> +webDebug +-> + `g‘Logg” +()-> + `g‘Logs +(è +as + +$log +) + +85 ià('sfPrݖLogg”' !ð +$log +['type']) + +90 +$d‘ažs + = + `¬¿y +(); + +91 +$¦owQu”y + = +çl£ +; + +93 +$·¹s + = + `ex¶ode +( +$ou‹rGlue +, +$log +['message']); + +94 + `fܗch + ( +$·¹s + +as + +$i + => +$·¹ +) + +97 ià( + `´eg_m©ch +('/^(\w+)'. + `´eg_quÙe +( +$šÃrGlue +, '/').'(.*)/', +$·¹ +, +$m©ch +)) + +99 +$d‘ažs +[] = +$·¹ +; + +100 + `un£t +( +$·¹s +[ +$i +]); + +103 ià('time' =ð +$m©ch +[1]) + +105 ià( +$æagSlow + && (è +$m©ch +[2] > +$th»shÞd +) + +107 +$¦owQu”y + = +Œue +; + +108 ià( +$this +-> + `g‘Stus +(è> +sfLogg” +:: +NOTICE +) + +110 +$this +-> + `£tStus +( +sfLogg” +:: +NOTICE +); + +117 +$qu”y + = + `još +( +$ou‹rGlue +, +$·¹s +); + +119 +$qu”y + = +$this +-> + `fÜm©Sql +( + `html¥ecŸlch¬s +($qu”y, +ENT_QUOTES +, +sfCÚfig +:: + `g‘ +('sf_charset'))); + +120 +$backŒaû + = + `is£t +( +$log +['debug_backŒaû']è&& + `couÁ +($log['debug_backŒaû']è? '&nb¥;'. +$this +-> + `g‘ToggËabËDebugSck +($log['debug_backtrace']) : ''; + +122 +$html +[] = + `¥rštf +(' + +123 < +li +% +s +> + +124 < +p + +þass +="sfWebDebugD©aba£Qu”y">% +s +

    + +125 < +div + +þass +="sfWebDebugD©aba£LogInfo">% +s +%s + +126 ', + +127 +$¦owQu”y + ? ' class="sfWebDebugWarning"' : '', + +128 +$qu”y +, + +129 + `im¶ode +(', ', +$d‘ažs +), + +130 +$backŒaû + + +134  +$html +; + +135 + } +} + +142 +´Ùeùed + +funùiÚ + + $g‘PrݖCÚfigu¿tiÚ +() + +144  +Prݖ +:: + `g‘CÚfigu¿tiÚ +( +PrݖCÚfigu¿tiÚ +:: +TYPE_OBJECT +); + +145 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/form/sfFormFilterPropel.class.php + +1 + `isV®id +()) + +44 +throw + +$this +-> + `g‘E¼ÜSchema +(); + +47  +$this +-> + `buždCr™”Ÿ +($this-> + `g‘V®ues +()); + +64 +public + +funùiÚ + + $´oûssV®ues +( +$v®ues +) + +67 +$Üigš®V®ues + = +$v®ues +; + +68 + `fܗch + ( +$Üigš®V®ues + +as + +$f›ld + => +$v®ue +) + +70 +Œy + + +72 +$m‘hod + = + `¥rštf +('cÚv”t%sV®ue', + `ÿÎ_u£r_func +( + `¬¿y +( + `cÚ¡ªt +( +$this +-> + `g‘Mod–Name +().'::PEER'), 'Œª¦©eF›ldName'), +$f›ld +, +Ba£P“r +:: +TYPE_FIELDNAME +, Ba£P“r:: +TYPE_PHPNAME +)); + +74 + `ÿtch + ( +Exû±iÚ + +$e +) + +80 ià( + `m‘hod_exi¡s +( +$this +, +$m‘hod +)) + +82 ià( +çl£ + ==ð +$»t + = +$this +-> + `$m‘hod +( +$v®ue +)) + +84 + `un£t +( +$v®ues +[ +$f›ld +]); + +88 +$v®ues +[ +$f›ld +] = +$»t +; + +93  +$v®ues +; + +94 + } +} + +103 +public + +funùiÚ + + $buždCr™”Ÿ +( +¬¿y + +$v®ues +) + +105  +$this +-> + `doBuždCr™”Ÿ +($this-> + `´oûssV®ues +( +$v®ues +)); + +106 + } +} + +118 +´Ùeùed + +funùiÚ + + $doBuždCr™”Ÿ +( +¬¿y + +$v®ues +) + +120 +$ü™”Ÿ + = +Ãw + + `Cr™”Ÿ +(); + +121 +$³” + = + `cÚ¡ªt +( +$this +-> + `g‘Mod–Name +().'::PEER'); + +123 +$f›lds + = +$this +-> + `g‘F›lds +(); + +126 +$Çmes + = + `¬¿y_m”ge +( +$f›lds +, + `¬¿y_diff +( + `¬¿y_keys +( +$this +-> +v®id©ÜSchema +-> + `g‘F›lds +()),‡rray_keys($fields))); + +127 +$f›lds + = + `¬¿y_m”ge +($f›lds, + `¬¿y_combše +( +$Çmes +, + `¬¿y_fžl +(0, + `couÁ +($Çmes), +nuÎ +))); + +129 + `fܗch + ( +$f›lds + +as + +$f›ld + => +$ty³ +) + +131 ià(! + `is£t +( +$v®ues +[ +$f›ld +]è|| +nuÎ + === $values[$field] || '' === $values[$field]) + +136 +Œy + + +138 +$m‘hod + = + `¥rštf +('add%sCÞumnCr™”Ÿ', + `ÿÎ_u£r_func +( + `¬¿y +( +$³” +, 'Œª¦©eF›ldName'), +$f›ld +, +Ba£P“r +:: +TYPE_FIELDNAME +, Ba£P“r:: +TYPE_PHPNAME +)); + +140 + `ÿtch + ( +Exû±iÚ + +$e +) + +143 ià(! + `m‘hod_exi¡s +( +$this +, +$m‘hod + = + `¥rštf +('add%sCÞumnCr™”Ÿ', +£lf +:: + `ÿm–ize +( +$f›ld +)))) + +145 +throw + +Ãw + + `LogicExû±iÚ +( + `¥rštf +('You mu¡ defš¨"%s" m‘hodØbabˁØfž‹¸w™hh"%s" f›ld.', +$m‘hod +, +$f›ld +)); + +149 ià( + `m‘hod_exi¡s +( +$this +, +$m‘hod +)) + +151 +$this +-> + `$m‘hod +( +$ü™”Ÿ +, +$f›ld +, +$v®ues +[$field]); + +155 ià(! + `m‘hod_exi¡s +( +$this +, +$m‘hod + = + `¥rštf +('add%sCr™”Ÿ', +$ty³ +))) + +157 +throw + +Ãw + + `LogicExû±iÚ +( + `¥rštf +('UÇbˁØfž‹¸f܁h"%s"y³.', +$ty³ +)); + +160 +$this +-> + `$m‘hod +( +$ü™”Ÿ +, +$f›ld +, +$v®ues +[$field]); + +164  +$ü™”Ÿ +; + +165 + } +} + +167 +´Ùeùed + +funùiÚ + + $addFÜeignKeyCr™”Ÿ +( +Cr™”Ÿ + +$ü™”Ÿ +, +$f›ld +, +$v®ue +) + +169 +$cÞÇme + = +$this +-> + `g‘CÞÇme +( +$f›ld +); + +171 ià( + `is_¬¿y +( +$v®ue +)) + +173 +$v®ues + = +$v®ue +; + +174 +$v®ue + = + `¬¿y_pÝ +( +$v®ues +); + +175 +$ü™”iÚ + = +$ü™”Ÿ +-> + `g‘NewCr™”iÚ +( +$cÞÇme +, +$v®ue +); + +177 + `fܗch + ( +$v®ues + +as + +$v®ue +) + +179 +$ü™”iÚ +-> + `addOr +( +$ü™”Ÿ +-> + `g‘NewCr™”iÚ +( +$cÞÇme +, +$v®ue +)); + +182 +$ü™”Ÿ +-> + `add +( +$ü™”iÚ +); + +186 +$ü™”Ÿ +-> + `add +( +$cÞÇme +, +$v®ue +); + +188 + } +} + +190 +´Ùeùed + +funùiÚ + + $addTextCr™”Ÿ +( +Cr™”Ÿ + +$ü™”Ÿ +, +$f›ld +, +$v®ues +) + +192 +$cÞÇme + = +$this +-> + `g‘CÞÇme +( +$f›ld +); + +194 ià( + `is_¬¿y +( +$v®ues +è&& + `is£t +($values['is_empty']) && $values['is_empty']) + +196 +$ü™”iÚ + = +$ü™”Ÿ +-> + `g‘NewCr™”iÚ +( +$cÞÇme +, ''); + +197 +$ü™”iÚ +-> + `addOr +( +$ü™”Ÿ +-> + `g‘NewCr™”iÚ +( +$cÞÇme +, +nuÎ +, +Cr™”Ÿ +:: +ISNULL +)); + +198 +$ü™”Ÿ +-> + `add +( +$ü™”iÚ +); + +200 ià( + `is_¬¿y +( +$v®ues +è&& + `is£t +($values['text']) && '' != $values['text']) + +202 +$ü™”Ÿ +-> + `add +( +$cÞÇme +, '%'. +$v®ues +['‹xt'].'%', +Cr™”Ÿ +:: +LIKE +); + +204 + } +} + +206 +´Ùeùed + +funùiÚ + + $addNumb”Cr™”Ÿ +( +Cr™”Ÿ + +$ü™”Ÿ +, +$f›ld +, +$v®ues +) + +208 +$cÞÇme + = +$this +-> + `g‘CÞÇme +( +$f›ld +); + +210 ià( + `is_¬¿y +( +$v®ues +è&& + `is£t +($values['is_empty']) && $values['is_empty']) + +212 +$ü™”iÚ + = +$ü™”Ÿ +-> + `g‘NewCr™”iÚ +( +$cÞÇme +, ''); + +213 +$ü™”iÚ +-> + `addOr +( +$ü™”Ÿ +-> + `g‘NewCr™”iÚ +( +$cÞÇme +, +nuÎ +, +Cr™”Ÿ +:: +ISNULL +)); + +214 +$ü™”Ÿ +-> + `add +( +$ü™”iÚ +); + +216 ià( + `is_¬¿y +( +$v®ues +è&& + `is£t +($values['text']) && '' !== $values['text']) + +218 +$ü™”Ÿ +-> + `add +( +$cÞÇme +, +$v®ues +['text']); + +220 + } +} + +222 +´Ùeùed + +funùiÚ + + $addBoޗnCr™”Ÿ +( +Cr™”Ÿ + +$ü™”Ÿ +, +$f›ld +, +$v®ue +) + +224 +$ü™”Ÿ +-> + `add +( +$this +-> + `g‘CÞÇme +( +$f›ld +), +$v®ue +); + +225 + } +} + +227 +´Ùeùed + +funùiÚ + + $addD©eCr™”Ÿ +( +Cr™”Ÿ + +$ü™”Ÿ +, +$f›ld +, +$v®ues +) + +229 +$cÞÇme + = +$this +-> + `g‘CÞÇme +( +$f›ld +); + +231 ià( + `is£t +( +$v®ues +['is_empty']) && $values['is_empty']) + +233 +$ü™”Ÿ +-> + `add +( +$cÞÇme +, +nuÎ +, +Cr™”Ÿ +:: +ISNULL +); + +237 +$ü™”iÚ + = +nuÎ +; + +238 ià( +nuÎ + !=ð +$v®ues +['from'] &&‚ull !== $values['to']) + +240 +$ü™”iÚ + = +$ü™”Ÿ +-> + `g‘NewCr™”iÚ +( +$cÞÇme +, +$v®ues +['äom'], +Cr™”Ÿ +:: +GREATER_EQUAL +); + +241 +$ü™”iÚ +-> + `addAnd +( +$ü™”Ÿ +-> + `g‘NewCr™”iÚ +( +$cÞÇme +, +$v®ues +['to'], +Cr™”Ÿ +:: +LESS_EQUAL +)); + +243 ià( +nuÎ + !=ð +$v®ues +['from']) + +245 +$ü™”iÚ + = +$ü™”Ÿ +-> + `g‘NewCr™”iÚ +( +$cÞÇme +, +$v®ues +['äom'], +Cr™”Ÿ +:: +GREATER_EQUAL +); + +247 ià( +nuÎ + !=ð +$v®ues +['to']) + +249 +$ü™”iÚ + = +$ü™”Ÿ +-> + `g‘NewCr™”iÚ +( +$cÞÇme +, +$v®ues +['to'], +Cr™”Ÿ +:: +LESS_EQUAL +); + +252 ià( +nuÎ + !=ð +$ü™”iÚ +) + +254 +$ü™”Ÿ +-> + `add +( +$ü™”iÚ +); + +257 + } +} + +259 +´Ùeùed + +funùiÚ + + $g‘CÞName +( +$f›ld +) + +261  + `ÿÎ_u£r_func +( + `¬¿y +( + `cÚ¡ªt +( +$this +-> + `g‘Mod–Name +().'::PEER'), 'Œª¦©eF›ldName'), +$f›ld +, +Ba£P“r +:: +TYPE_FIELDNAME +, Ba£P“r:: +TYPE_COLNAME +); + +262 + } +} + +264 +´Ùeùed + +funùiÚ + + $ÿm–ize +( +$‹xt +) + +266  +sfToÞk™ +:: + `´egŒ +( +$‹xt +, + `¬¿y +('#/(.?)#e' => "'::'.strtoupper('\\1')", '/(^|_|-)+(.)/e' => "strtoupper('\\2')")); + +267 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/form/sfFormPropel.class.php + +1 +g‘Mod–Name +(); + +35 ià(! + m$objeù +) + +37 + m$this +-> + mobjeù + = +Ãw + +$þass +(); + +41 ià(! +$objeù + +š¡ªûof + + m$þass +) + +43 +throw + +Ãw + +sfExû±iÚ +( +¥rštf +('Th"%s" fÜm oÆy‡cû± ¨"%s" objeù.', +g‘_þass +( +$this +), +$þass +)); + +46 + m$this +-> + mobjeù + = +$objeù +; + +47 + m$this +-> + misNew + = +$this +-> +g‘Objeù +()-> +isNew +(); + +50 + m·»Á +:: +__cÚ¡ruù +( +¬¿y +(), +$ÝtiÚs +, +$CSRFSeü‘ +); + +52 + m$this +-> +upd©eDeçuÉsFromObjeù +(); + +59 +public + +funùiÚ + + $g‘CÚÃùiÚ +() + +61  +Prݖ +:: + `g‘CÚÃùiÚ +( + `cÚ¡ªt +(cÚ¡ªt( + `g‘_þass +( +$this +-> + `g‘Objeù +()).'::PEER').'::DATABASE_NAME')); + +62 + } +} + +70 +public + +funùiÚ + + $embedI18n +( +$cuÉu»s +, +$decÜ©Ü + = +nuÎ +) + +72 ià(! +$this +-> + `isI18n +()) + +74 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('Thmod– "%s" i nÙ iÁ”ÇtiÚ®ized.', +$this +-> + `g‘Mod–Name +())); + +77 +$þass + = +$this +-> + `g‘I18nFÜmCÏss +(); + +78 + `fܗch + ( +$cuÉu»s + +as + +$cuÉu» +) + +80 +$m‘hod + = + `¥rštf +('g‘Cu¼’t%s', +$this +-> + `g‘I18nMod–Name +( +$cuÉu» +)); + +81 +$i18nObjeù + = +$this +-> + `g‘Objeù +()-> + `$m‘hod +( +$cuÉu» +); + +82 +$i18n + = +Ãw + + `$þass +( +$i18nObjeù +); + +84 ià( +$i18nObjeù +-> + `isNew +()) + +86 + `un£t +( +$i18n +['id'], $i18n['culture']); + +89 +$this +-> + `embedFÜm +( +$cuÉu» +, +$i18n +, +$decÜ©Ü +); + +91 + } +} + +96 +´Ùeùed + +funùiÚ + + $doUpd©eObjeù +( +$v®ues +) + +98 +$this +-> + `g‘Objeù +()-> + `äomA¼ay +( +$v®ues +, +Ba£P“r +:: +TYPE_FIELDNAME +); + +99 + } +} + +113 +public + +funùiÚ + + $´oûssV®ues +( +$v®ues +) + +116 +$v®uesToProûss + = +$v®ues +; + +117 + `fܗch + ( +$v®uesToProûss + +as + +$f›ld + => +$v®ue +) + +119 +Œy + + +121 +$m‘hod + = + `¥rštf +('upd©e%sCÞumn', + `ÿÎ_u£r_func +( + `¬¿y +( + `cÚ¡ªt +( + `g‘_þass +( +$this +-> + `g‘Objeù +()).'::PEER'), 'Œª¦©eF›ldName'), +$f›ld +, +Ba£P“r +:: +TYPE_FIELDNAME +, Ba£P“r:: +TYPE_PHPNAME +)); + +123 + `ÿtch + ( +Exû±iÚ + +$e +) + +126 ià(! + `m‘hod_exi¡s +( +$this +, +$m‘hod + = + `¥rštf +('upd©e%sCÞumn', +£lf +:: + `ÿm–ize +( +$f›ld +)))) + +132 ià( + `m‘hod_exi¡s +( +$this +, +$m‘hod +)) + +134 ià( +çl£ + ==ð +$»t + = +$this +-> + `$m‘hod +( +$v®ue +)) + +136 + `un£t +( +$v®ues +[ +$f›ld +]); + +140 +$v®ues +[ +$f›ld +] = +$»t +; + +146 ià( +$this +-> +v®id©ÜSchema +[ +$f›ld +] +š¡ªûof + +sfV®id©ÜFže +) + +148 +$v®ues +[ +$f›ld +] = +$this +-> + `´oûssU¶ßdedFže +($f›ld, +nuÎ +, +$v®uesToProûss +); + +153  +$v®ues +; + +154 + } +} + +161 +public + +funùiÚ + + $isI18n +() + +163  +nuÎ + !=ð +$this +-> + `g‘I18nFÜmCÏss +(); + +164 + } +} + +171 +public + +funùiÚ + + $g‘I18nMod–Name +() + +173  +nuÎ +; + +174 + } +} + +181 +public + +funùiÚ + + $g‘I18nFÜmCÏss +() + +183  +nuÎ +; + +184 + } +} + +189 +´Ùeùed + +funùiÚ + + $upd©eDeçuÉsFromObjeù +() + +192 ià( +$this +-> + `isNew +()) + +194 +$this +-> + `£tDeçuÉs +($this-> + `g‘DeçuÉs +(è+ $this-> + `g‘Objeù +()-> + `toA¼ay +( +Ba£P“r +:: +TYPE_FIELDNAME +)); + +198 +$this +-> + `£tDeçuÉs +($this-> + `g‘Objeù +()-> + `toA¼ay +( +Ba£P“r +:: +TYPE_FIELDNAME +è+ $this-> + `g‘DeçuÉs +()); + +200 + } +} + +211 +´Ùeùed + +funùiÚ + + $´oûssU¶ßdedFže +( +$f›ld +, +$fž’ame + = +nuÎ +, +$v®ues + =‚ull) + +213 ià(! +$this +-> +v®id©ÜSchema +[ +$f›ld +] +š¡ªûof + +sfV®id©ÜFže +) + +215 +throw + +Ãw + + `LogicExû±iÚ +( + `¥rštf +('You cªnÙ savthcu¼’ˆfžfÜ f›ld "%s"‡ thf›ld i nه fže.', +$f›ld +)); + +218 ià( +nuÎ + ==ð +$v®ues +) + +220 +$v®ues + = +$this +-> +v®ues +; + +223 ià( + `is£t +( +$v®ues +[ +$f›ld +.'_delete']) && $values[$field.'_delete']) + +225 +$this +-> + `»moveFže +( +$f›ld +); + +230 ià(! +$v®ues +[ +$f›ld +]) + +232 +$cÞumn + = + `ÿÎ_u£r_func +( + `¬¿y +( + `cÚ¡ªt +( + `g‘_þass +( +$this +-> + `g‘Objeù +()).'::PEER'), 'Œª¦©eF›ldName'), +$f›ld +, +Ba£P“r +:: +TYPE_FIELDNAME +, Ba£P“r:: +TYPE_PHPNAME +); + +233 +$g‘‹r + = 'g‘'. +$cÞumn +; + +235  +$this +-> + `g‘Objeù +()-> + `$g‘‹r +(); + +239 ià(! +$this +-> +v®id©ÜSchema +[ +$f›ld +]-> + `g‘O±iÚ +('path')) + +241  +$v®ues +[ +$f›ld +]; + +244 +$this +-> + `»moveFže +( +$f›ld +); + +246  +$this +-> + `§veFže +( +$f›ld +, +$fž’ame +, +$v®ues +[$field]); + +247 + } +} + +254 +´Ùeùed + +funùiÚ + + $»moveFže +( +$f›ld +) + +256 ià(! +$this +-> +v®id©ÜSchema +[ +$f›ld +] +š¡ªûof + +sfV®id©ÜFže +) + +258 +throw + +Ãw + + `LogicExû±iÚ +( + `¥rštf +('You cªnلemovthcu¼’ˆfžfÜ f›ld "%s"‡ thf›ld i nه fže.', +$f›ld +)); + +261 +$cÞumn + = + `ÿÎ_u£r_func +( + `¬¿y +( + `cÚ¡ªt +( + `g‘_þass +( +$this +-> + `g‘Objeù +()).'::PEER'), 'Œª¦©eF›ldName'), +$f›ld +, +Ba£P“r +:: +TYPE_FIELDNAME +, Ba£P“r:: +TYPE_PHPNAME +); + +262 +$g‘‹r + = 'g‘'. +$cÞumn +; + +264 ià(( +$dœeùÜy + = +$this +-> +v®id©ÜSchema +[ +$f›ld +]-> + `g‘O±iÚ +('·th')è&& + `is_fže +($dœeùÜy. +DIRECTORY_SEPARATOR +.$this-> + `g‘Objeù +()-> + `$g‘‹r +())) + +266 + `uƚk +( +$dœeùÜy +. +DIRECTORY_SEPARATOR +. +$this +-> + `g‘Objeù +()-> + `$g‘‹r +()); + +268 + } +} + +279 +´Ùeùed + +funùiÚ + + $§veFže +( +$f›ld +, +$fž’ame + = +nuÎ +, +sfV®id©edFže + +$fže + =‚ull) + +281 ià(! +$this +-> +v®id©ÜSchema +[ +$f›ld +] +š¡ªûof + +sfV®id©ÜFže +) + +283 +throw + +Ãw + + `LogicExû±iÚ +( + `¥rštf +('You cªnÙ savthcu¼’ˆfžfÜ f›ld "%s"‡ thf›ld i nه fže.', +$f›ld +)); + +286 ià( +nuÎ + ==ð +$fže +) + +288 +$fže + = +$this +-> + `g‘V®ue +( +$f›ld +); + +291 +$cÞumn + = + `ÿÎ_u£r_func +( + `¬¿y +( + `cÚ¡ªt +( + `g‘_þass +( +$this +-> + `g‘Objeù +()).'::PEER'), 'Œª¦©eF›ldName'), +$f›ld +, +Ba£P“r +:: +TYPE_FIELDNAME +, Ba£P“r:: +TYPE_PHPNAME +); + +292 +$m‘hod + = + `¥rštf +('g’”©e%sFž’ame', +$cÞumn +); + +294 ià( +nuÎ + !=ð +$fž’ame +) + +296  +$fže +-> + `§ve +( +$fž’ame +); + +298 ià( + `m‘hod_exi¡s +( +$this +, +$m‘hod +)) + +300  +$fže +-> + `§ve +( +$this +-> + `$m‘hod +($file)); + +302 ià( + `m‘hod_exi¡s +( +$this +-> + `g‘Objeù +(), +$m‘hod +)) + +304  +$fže +-> + `§ve +( +$this +-> + `g‘Objeù +()-> + `$m‘hod +($file)); + +308  +$fže +-> + `§ve +(); + +310 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/generator/sfPropelFormFilterGenerator.class.php + +1 + `£tG’”©ÜCÏss +('sfPropelFormFilter'); + +42 +public + +funùiÚ + + `g’”©e +( +$·¿ms + = + $¬¿y +()) + +44 +$this +-> +·¿ms + = +$·¿ms +; + +46 ià(! + `is£t +( +$this +-> +·¿ms +['connection'])) + +48 +throw + +Ãw + + `sfP¬£Exû±iÚ +('You must specify‡ "connection"…arameter.'); + +51 ià(! + `is£t +( +$this +-> +·¿ms +['model_dir_name'])) + +53 +$this +-> +·¿ms +['model_dir_name'] = 'model'; + +56 ià(! + `is£t +( +$this +-> +·¿ms +['filter_dir_name'])) + +58 +$this +-> +·¿ms +['filter_dir_name'] = 'filter'; + +61 +$this +-> + `lßdBužd”s +(); + +64 +$fže + = +sfCÚfig +:: + `g‘ +('sf_lib_dir').'/filter/BaseFormFilterPropel.class.php'; + +65 ià(! + `fže_exi¡s +( +$fže +)) + +67 ià(! + `is_dœ +( +$dœeùÜy + = + `dœÇme +( +$fže +))) + +69 + `mkdœ +( +$dœeùÜy +, 0777, +Œue +); + +72 + `fže_put_cڋÁs +( +$fže +, +$this +-> + `ev®Tem¶©e +('sfPropelFormFilterBaseTemplate.php')); + +76 + `fܗch + ( +$this +-> +dbM­ +-> + `g‘TabËs +(è +as + +$bËName + => +$bË +) + +78 +$behaviÜs + = +$bË +-> + `g‘BehaviÜs +(); + +79 ià( + `is£t +( +$behaviÜs +['symfony']['filter']) && 'false' === $behaviors['symfony']['filter']) + +84 +$this +-> +bË + = +$bË +; + +87 +$·ckages + = + `ex¶ode +('.', + `cÚ¡ªt +(cÚ¡ªt( +$bË +-> + `g‘CÏs¢ame +().'::PEER').'::CLASS_DEFAULT')); + +88 + `¬¿y_pÝ +( +$·ckages +); + +89 ià( +çl£ + ==ð +$pos + = + `¬¿y_£¬ch +( +$this +-> +·¿ms +['mod–_dœ_Çme'], +$·ckages +)) + +91 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('UÇbˁØfšdhmod– dœ‚am(%s蚁h·ckag%s.', +$this +-> +·¿ms +['mod–_dœ_Çme'], + `cÚ¡ªt +(cÚ¡ªt( +$bË +-> + `g‘CÏs¢ame +().'::PEER').'::CLASS_DEFAULT'))); + +93 +$·ckages +[ +$pos +] = +$this +-> +·¿ms +['filter_dir_name']; + +94 +$ba£Dœ + = +sfCÚfig +:: + `g‘ +('sf_roÙ_dœ').'/'. + `im¶ode +( +DIRECTORY_SEPARATOR +, +$·ckages +); + +96 ià(! + `is_dœ +( +$ba£Dœ +.'/base')) + +98 + `mkdœ +( +$ba£Dœ +.'/ba£', 0777, +Œue +); + +101 + `fže_put_cڋÁs +( +$ba£Dœ +.'/ba£/Ba£'. +$bË +-> + `g‘CÏs¢ame +().'FÜmFž‹r.þass.php', +$this +-> + `ev®Tem¶©e +('sfPropelFormFilterGeneratedTemplate.php')); + +102 ià(! + `fže_exi¡s +( +$þassFže + = +$ba£Dœ +.'/'. +$bË +-> + `g‘CÏs¢ame +().'FormFilter.class.php')) + +104 + `fže_put_cڋÁs +( +$þassFže +, +$this +-> + `ev®Tem¶©e +('sfPropelFormFilterTemplate.php')); + +107 + } +} + +116 +public + +funùiÚ + + $g‘Widg‘CÏssFÜCÞumn +( +CÞumnM­ + +$cÞumn +) + +118  +$cÞumn +-> + `g‘Ty³ +()) + +120  +PrݖCÞumnTy³s +:: +BOOLEAN +: + +121 +$Çme + = 'Choice'; + +123  +PrݖCÞumnTy³s +:: +DATE +: + +124  +PrݖCÞumnTy³s +:: +TIME +: + +125  +PrݖCÞumnTy³s +:: +TIMESTAMP +: + +126 +$Çme + = 'FilterDate'; + +129 +$Çme + = 'FilterInput'; + +132 ià( +$cÞumn +-> + `isFÜeignKey +()) + +134 +$Çme + = 'PropelChoice'; + +137  + `¥rštf +('sfWidg‘FÜm%s', +$Çme +); + +138 + } +} + +147 +public + +funùiÚ + + $g‘Widg‘O±iÚsFÜCÞumn +( +CÞumnM­ + +$cÞumn +) + +149 +$ÝtiÚs + = + `¬¿y +(); + +151 +$w™hEm±y + = +$cÞumn +-> + `isNÙNuÎ +(è&& !$cÞumn-> + `isFÜeignKey +(è? + `¬¿y +("'with_empty' => false") :‡rray(); + +152  +$cÞumn +-> + `g‘Ty³ +()) + +154  +PrݖCÞumnTy³s +:: +BOOLEAN +: + +155 +$ÝtiÚs +[] = "'choices' =>‡rray('' => 'yes or‚o', 1 => 'yes', 0 => 'no')"; + +157  +PrݖCÞumnTy³s +:: +DATE +: + +158  +PrݖCÞumnTy³s +:: +TIME +: + +159  +PrݖCÞumnTy³s +:: +TIMESTAMP +: + +160 +$ÝtiÚs +[] = "'from_date' =>‚ew sfWidgetFormDate(), 'to_date' =>‚ew sfWidgetFormDate()"; + +161 +$ÝtiÚs + = + `¬¿y_m”ge +($ÝtiÚs, +$w™hEm±y +); + +164 +$ÝtiÚs + = + `¬¿y_m”ge +($ÝtiÚs, +$w™hEm±y +); + +167 ià( +$cÞumn +-> + `isFÜeignKey +()) + +169 +$ÝtiÚs +[] = + `¥rštf +('\'mod–\' => \'%s\', \'add_em±y\' =>rue', +$this +-> + `g‘FÜeignTabË +( +$cÞumn +)-> + `g‘CÏs¢ame +()); + +171 +$»fCÞumn + = +$this +-> + `g‘FÜeignTabË +( +$cÞumn +)-> + `g‘CÞumn +($cÞumn-> + `g‘R–©edCÞumnName +()); + +172 ià(! +$»fCÞumn +-> + `isPrim¬yKey +()) + +174 +$ÝtiÚs +[] = + `¥rštf +('\'key_m‘hod\' => \'g‘%s\'', +$»fCÞumn +-> + `g‘PhpName +()); + +178  + `couÁ +( +$ÝtiÚs +è? + `¥rštf +('¬¿y(%s)', + `im¶ode +(', ', $options)) : ''; + +179 + } +} + +188 +public + +funùiÚ + + $g‘V®id©ÜCÏssFÜCÞumn +( +CÞumnM­ + +$cÞumn +) + +190  +$cÞumn +-> + `g‘Ty³ +()) + +192  +PrݖCÞumnTy³s +:: +BOOLEAN +: + +193 +$Çme + = 'Choice'; + +195  +PrݖCÞumnTy³s +:: +DOUBLE +: + +196  +PrݖCÞumnTy³s +:: +FLOAT +: + +197  +PrݖCÞumnTy³s +:: +NUMERIC +: + +198  +PrݖCÞumnTy³s +:: +DECIMAL +: + +199  +PrݖCÞumnTy³s +:: +REAL +: + +200 +$Çme + = 'Number'; + +202  +PrݖCÞumnTy³s +:: +INTEGER +: + +203  +PrݖCÞumnTy³s +:: +SMALLINT +: + +204  +PrݖCÞumnTy³s +:: +TINYINT +: + +205  +PrݖCÞumnTy³s +:: +BIGINT +: + +206 +$Çme + = 'Integer'; + +208  +PrݖCÞumnTy³s +:: +DATE +: + +209  +PrݖCÞumnTy³s +:: +TIME +: + +210  +PrݖCÞumnTy³s +:: +TIMESTAMP +: + +211 +$Çme + = 'DateRange'; + +214 +$Çme + = 'Pass'; + +217 ià( +$cÞumn +-> + `isPrim¬yKey +(è|| $cÞumn-> + `isFÜeignKey +()) + +219 +$Çme + = 'PropelChoice'; + +222  + `¥rštf +('sfV®id©Ü%s', +$Çme +); + +223 + } +} + +232 +public + +funùiÚ + + $g‘V®id©ÜO±iÚsFÜCÞumn +( +CÞumnM­ + +$cÞumn +) + +234 +$ÝtiÚs + = + `¬¿y +('\'required\' => false'); + +236 ià( +$cÞumn +-> + `isFÜeignKey +()) + +238 +$ÝtiÚs +[] = + `¥rštf +('\'mod–\' => \'%s\', \'cÞumn\' => \'%s\'', +$this +-> + `g‘FÜeignTabË +( +$cÞumn +)-> + `g‘CÏs¢ame +(), $this-> + `Œª¦©eCÞumnName +($cÞumn, +Œue +)); + +240 ià( +$cÞumn +-> + `isPrim¬yKey +()) + +242 +$ÝtiÚs +[] = + `¥rštf +('\'mod–\' => \'%s\', \'cÞumn\' => \'%s\'', +$cÞumn +-> + `g‘TabË +()-> + `g‘CÏs¢ame +(), +$this +-> + `Œª¦©eCÞumnName +($column)); + +246  +$cÞumn +-> + `g‘Ty³ +()) + +248  +PrݖCÞumnTy³s +:: +BOOLEAN +: + +249 +$ÝtiÚs +[] = "'choices' =>‡rray('', 1, 0)"; + +251  +PrݖCÞumnTy³s +:: +DATE +: + +252  +PrݖCÞumnTy³s +:: +TIME +: + +253  +PrݖCÞumnTy³s +:: +TIMESTAMP +: + +254 +$ÝtiÚs +[] = "'from_date' =>‚ew sfValidatorDate(array('required' => false)), 'to_date' =>‚ew sfValidatorDate(array('required' => false))"; + +259  + `couÁ +( +$ÝtiÚs +è? + `¥rštf +('¬¿y(%s)', + `im¶ode +(', ', $options)) : ''; + +260 + } +} + +262 +public + +funùiÚ + + $g‘V®id©ÜFÜCÞumn +( +$cÞumn +) + +264 +$fÜm© + = 'new %s(%s)'; + +265 ià( + `š_¬¿y +( +$þass + = +$this +-> + `g‘V®id©ÜCÏssFÜCÞumn +( +$cÞumn +), + `¬¿y +('sfValidatorInteger', 'sfValidatorNumber'))) + +267 +$fÜm© + = 'new sfValidatorSchemaFilter(\'text\',‚ew %s(%s))'; + +270  + `¥rštf +( +$fÜm© +, +$þass +, +$this +-> + `g‘V®id©ÜO±iÚsFÜCÞumn +( +$cÞumn +)); + +271 + } +} + +273 +public + +funùiÚ + + $g‘Ty³ +( +CÞumnM­ + +$cÞumn +) + +275 ià( +$cÞumn +-> + `isFÜeignKey +()) + +280  +$cÞumn +-> + `g‘Ty³ +()) + +282  +PrݖCÞumnTy³s +:: +BOOLEAN +: + +284  +PrݖCÞumnTy³s +:: +DATE +: + +285  +PrݖCÞumnTy³s +:: +TIME +: + +286  +PrݖCÞumnTy³s +:: +TIMESTAMP +: + +288  +PrݖCÞumnTy³s +:: +DOUBLE +: + +289  +PrݖCÞumnTy³s +:: +FLOAT +: + +290  +PrݖCÞumnTy³s +:: +NUMERIC +: + +291  +PrݖCÞumnTy³s +:: +DECIMAL +: + +292  +PrݖCÞumnTy³s +:: +REAL +: + +293  +PrݖCÞumnTy³s +:: +INTEGER +: + +294  +PrݖCÞumnTy³s +:: +SMALLINT +: + +295  +PrݖCÞumnTy³s +:: +TINYINT +: + +296  +PrݖCÞumnTy³s +:: +BIGINT +: + +301 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/generator/sfPropelFormGenerator.class.php + +1 + `£tG’”©ÜCÏss +('sfPropelForm'); + +45 +public + +funùiÚ + + `g’”©e +( +$·¿ms + = + $¬¿y +()) + +47 +$this +-> +·¿ms + = +$·¿ms +; + +49 ià(! + `is£t +( +$this +-> +·¿ms +['connection'])) + +51 +throw + +Ãw + + `sfP¬£Exû±iÚ +('You must specify‡ "connection"…arameter.'); + +54 ià(! + `is£t +( +$this +-> +·¿ms +['model_dir_name'])) + +56 +$this +-> +·¿ms +['model_dir_name'] = 'model'; + +59 ià(! + `is£t +( +$this +-> +·¿ms +['form_dir_name'])) + +61 +$this +-> +·¿ms +['form_dir_name'] = 'form'; + +64 +$this +-> + `lßdBužd”s +(); + +67 +$fže + = +sfCÚfig +:: + `g‘ +('sf_lib_dir').'/form/BaseFormPropel.class.php'; + +68 ià(! + `fže_exi¡s +( +$fže +)) + +70 ià(! + `is_dœ +( +$dœeùÜy + = + `dœÇme +( +$fže +))) + +72 + `mkdœ +( +$dœeùÜy +, 0777, +Œue +); + +75 + `fže_put_cڋÁs +( +$fže +, +$this +-> + `ev®Tem¶©e +('sfPropelFormBaseTemplate.php')); + +79 + `fܗch + ( +$this +-> +dbM­ +-> + `g‘TabËs +(è +as + +$bËName + => +$bË +) + +81 +$behaviÜs + = +$bË +-> + `g‘BehaviÜs +(); + +82 ià( + `is£t +( +$behaviÜs +['symfony']['form']) && 'false' === $behaviors['symfony']['form']) + +87 +$this +-> +bË + = +$bË +; + +90 +$·ckages + = + `ex¶ode +('.', + `cÚ¡ªt +(cÚ¡ªt( +$bË +-> + `g‘CÏs¢ame +().'::PEER').'::CLASS_DEFAULT')); + +91 + `¬¿y_pÝ +( +$·ckages +); + +92 ià( +çl£ + ==ð +$pos + = + `¬¿y_£¬ch +( +$this +-> +·¿ms +['mod–_dœ_Çme'], +$·ckages +)) + +94 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('UÇbˁØfšdhmod– dœ‚am(%s蚁h·ckag%s.', +$this +-> +·¿ms +['mod–_dœ_Çme'], + `cÚ¡ªt +(cÚ¡ªt( +$bË +-> + `g‘CÏs¢ame +().'::PEER').'::CLASS_DEFAULT'))); + +96 +$·ckages +[ +$pos +] = +$this +-> +·¿ms +['form_dir_name']; + +97 +$ba£Dœ + = +sfCÚfig +:: + `g‘ +('sf_roÙ_dœ').'/'. + `im¶ode +( +DIRECTORY_SEPARATOR +, +$·ckages +); + +99 ià(! + `is_dœ +( +$ba£Dœ +.'/base')) + +101 + `mkdœ +( +$ba£Dœ +.'/ba£', 0777, +Œue +); + +104 + `fže_put_cڋÁs +( +$ba£Dœ +.'/ba£/Ba£'. +$bË +-> + `g‘CÏs¢ame +().'FÜm.þass.php', +$this +-> + `ev®Tem¶©e +('sfPropelFormGeneratedTemplate.php')); + +105 ià(! + `fže_exi¡s +( +$þassFže + = +$ba£Dœ +.'/'. +$bË +-> + `g‘CÏs¢ame +().'Form.class.php')) + +107 + `fže_put_cڋÁs +( +$þassFže +, +$this +-> + `ev®Tem¶©e +('sfPropelFormTemplate.php')); + +110 + } +} + +119 +public + +funùiÚ + + $g‘MªyToMªyTabËs +() + +121 +$bËs + = + `¬¿y +(); + +124 + `fܗch + ( +$this +-> +dbM­ +-> + `g‘TabËs +(è +as + +$bËName + => +$bË +) + +126 + `fܗch + ( +$bË +-> + `g‘CÞumns +(è +as + +$cÞumn +) + +128 ià( +$cÞumn +-> + `isFÜeignKey +(è&& $cÞumn-> + `isPrim¬yKey +(è&& +$this +-> +bË +-> + `g‘CÏs¢ame +(è=ð$this-> + `g‘FÜeignTabË +($column)->getClassname()) + +132 + `fܗch + ( +$bË +-> + `g‘CÞumns +(è +as + +$»Ï‹dCÞumn +) + +134 ià( +$»Ï‹dCÞumn +-> + `isFÜeignKey +(è&& $»Ï‹dCÞumn-> + `isPrim¬yKey +(è&& +$this +-> +bË +-> + `g‘CÏs¢ame +(è!ð$this-> + `g‘FÜeignTabË +($relatedColumn)->getClassname()) + +137 +$bËs +[] = + `¬¿y +( + +138 'middËTabË' => +$bË +, + +139 '»Ï‹dTabË' => +$this +-> + `g‘FÜeignTabË +( +$»Ï‹dCÞumn +), + +140 'cÞumn' => +$cÞumn +, + +141 '»Ï‹dCÞumn' => +$»Ï‹dCÞumn +, + +151  +$bËs +; + +152 + } +} + +165 +public + +funùiÚ + + $g‘FÜeignKeyNames +() + +167 +$Çmes + = + `¬¿y +(); + +168 + `fܗch + ( +$this +-> +bË +-> + `g‘CÞumns +(è +as + +$cÞumn +) + +170 ià(! +$cÞumn +-> + `isPrim¬yKey +(è&& $cÞumn-> + `isFÜeignKey +()) + +172 +$Çmes +[] = + `¬¿y +( +$this +-> + `g‘FÜeignTabË +( +$cÞumn +)-> + `g‘CÏs¢ame +(), $cÞumn-> + `g‘PhpName +(), $cÞumn-> + `isNÙNuÎ +(), +çl£ +); + +176 + `fܗch + ( +$this +-> + `g‘MªyToMªyTabËs +(è +as + +$bËs +) + +178 +$Çmes +[] = + `¬¿y +( +$bËs +['»Ï‹dTabË']-> + `g‘CÏs¢ame +(), $bËs['middËTabË']->g‘CÏs¢ame(), +çl£ +, +Œue +); + +181  +$Çmes +; + +182 + } +} + +189 +public + +funùiÚ + + $g‘Prim¬yKey +() + +191 + `fܗch + ( +$this +-> +bË +-> + `g‘CÞumns +(è +as + +$cÞumn +) + +193 ià( +$cÞumn +-> + `isPrim¬yKey +()) + +195  +$cÞumn +; + +198 + } +} + +207 +public + +funùiÚ + + $g‘FÜeignTabË +( +CÞumnM­ + +$cÞumn +) + +209  +$this +-> +dbM­ +-> + `g‘TabË +( +$cÞumn +-> + `g‘R–©edTabËName +()); + +210 + } +} + +219 +public + +funùiÚ + + $g‘Widg‘CÏssFÜCÞumn +( +CÞumnM­ + +$cÞumn +) + +221  +$cÞumn +-> + `g‘Ty³ +()) + +223  +PrݖCÞumnTy³s +:: +BOOLEAN +: + +224 +$Çme + = 'InputCheckbox'; + +226  +PrݖCÞumnTy³s +:: +CLOB +: + +227  +PrݖCÞumnTy³s +:: +LONGVARCHAR +: + +228 +$Çme + = 'Textarea'; + +230  +PrݖCÞumnTy³s +:: +DATE +: + +231 +$Çme + = 'Date'; + +233  +PrݖCÞumnTy³s +:: +TIME +: + +234 +$Çme + = 'Time'; + +236  +PrݖCÞumnTy³s +:: +TIMESTAMP +: + +237 +$Çme + = 'DateTime'; + +240 +$Çme + = 'InputText'; + +243 ià( +$cÞumn +-> + `isPrim¬yKey +()) + +245 +$Çme + = 'InputHidden'; + +247 ià( +$cÞumn +-> + `isFÜeignKey +()) + +249 +$Çme + = 'PropelChoice'; + +252  + `¥rštf +('sfWidg‘FÜm%s', +$Çme +); + +253 + } +} + +262 +public + +funùiÚ + + $g‘Widg‘O±iÚsFÜCÞumn +( +CÞumnM­ + +$cÞumn +) + +264 +$ÝtiÚs + = + `¬¿y +(); + +266 ià(! +$cÞumn +-> + `isPrim¬yKey +(è&& $cÞumn-> + `isFÜeignKey +()) + +268 +$ÝtiÚs +[] = + `¥rštf +('\'mod–\' => \'%s\', \'add_em±y\' => %s', +$this +-> + `g‘FÜeignTabË +( +$cÞumn +)-> + `g‘CÏs¢ame +(), $cÞumn-> + `isNÙNuÎ +() ? 'false' : 'true'); + +270 +$»fCÞumn + = +$this +-> + `g‘FÜeignTabË +( +$cÞumn +)-> + `g‘CÞumn +($cÞumn-> + `g‘R–©edCÞumnName +()); + +271 ià(! +$»fCÞumn +-> + `isPrim¬yKey +()) + +273 +$ÝtiÚs +[] = + `¥rštf +('\'key_m‘hod\' => \'g‘%s\'', +$»fCÞumn +-> + `g‘PhpName +()); + +277  + `couÁ +( +$ÝtiÚs +è? + `¥rštf +('¬¿y(%s)', + `im¶ode +(', ', $options)) : ''; + +278 + } +} + +287 +public + +funùiÚ + + $g‘V®id©ÜCÏssFÜCÞumn +( +CÞumnM­ + +$cÞumn +) + +289  +$cÞumn +-> + `g‘Ty³ +()) + +291  +PrݖCÞumnTy³s +:: +BOOLEAN +: + +292 +$Çme + = 'Boolean'; + +294  +PrݖCÞumnTy³s +:: +CLOB +: + +295  +PrݖCÞumnTy³s +:: +CHAR +: + +296  +PrݖCÞumnTy³s +:: +VARCHAR +: + +297  +PrݖCÞumnTy³s +:: +LONGVARCHAR +: + +298 +$Çme + = 'String'; + +300  +PrݖCÞumnTy³s +:: +DOUBLE +: + +301  +PrݖCÞumnTy³s +:: +FLOAT +: + +302  +PrݖCÞumnTy³s +:: +NUMERIC +: + +303  +PrݖCÞumnTy³s +:: +DECIMAL +: + +304  +PrݖCÞumnTy³s +:: +REAL +: + +305 +$Çme + = 'Number'; + +307  +PrݖCÞumnTy³s +:: +INTEGER +: + +308  +PrݖCÞumnTy³s +:: +SMALLINT +: + +309  +PrݖCÞumnTy³s +:: +TINYINT +: + +310  +PrݖCÞumnTy³s +:: +BIGINT +: + +311 +$Çme + = 'Integer'; + +313  +PrݖCÞumnTy³s +:: +DATE +: + +314 +$Çme + = 'Date'; + +316  +PrݖCÞumnTy³s +:: +TIME +: + +317 +$Çme + = 'Time'; + +319  +PrݖCÞumnTy³s +:: +TIMESTAMP +: + +320 +$Çme + = 'DateTime'; + +323 +$Çme + = 'Pass'; + +326 ià( +$cÞumn +-> + `isFÜeignKey +()) + +328 +$Çme + = 'PropelChoice'; + +330 ià( +$cÞumn +-> + `isPrim¬yKey +()) + +332 +$Çme + = 'Choice'; + +335  + `¥rštf +('sfV®id©Ü%s', +$Çme +); + +336 + } +} + +345 +public + +funùiÚ + + $g‘V®id©ÜO±iÚsFÜCÞumn +( +CÞumnM­ + +$cÞumn +) + +347 +$ÝtiÚs + = + `¬¿y +(); + +349 ià( +$cÞumn +-> + `isFÜeignKey +()) + +351 +$ÝtiÚs +[] = + `¥rštf +('\'mod–\' => \'%s\', \'cÞumn\' => \'%s\'', +$this +-> + `g‘FÜeignTabË +( +$cÞumn +)-> + `g‘CÏs¢ame +(), $this-> + `Œª¦©eCÞumnName +($cÞumn, +Œue +)); + +353 ià( +$cÞumn +-> + `isPrim¬yKey +()) + +355 +$ÝtiÚs +[] = + `¥rštf +('\'choiûs\' =>‡¼ay($this->g‘Objeù()->g‘%s()), \'em±y_v®ue\' => $this->g‘Objeù()->g‘%1$s()', +$this +-> + `Œª¦©eCÞumnName +( +$cÞumn +, +çl£ +, +Ba£P“r +:: +TYPE_PHPNAME +)); + +359  +$cÞumn +-> + `g‘Ty³ +()) + +361  +PrݖCÞumnTy³s +:: +CLOB +: + +362  +PrݖCÞumnTy³s +:: +CHAR +: + +363  +PrݖCÞumnTy³s +:: +VARCHAR +: + +364  +PrݖCÞumnTy³s +:: +LONGVARCHAR +: + +365 ià( +$cÞumn +-> + `g‘Size +()) + +367 +$ÝtiÚs +[] = + `¥rštf +('\'max_Ëngth\' => %s', +$cÞumn +-> + `g‘Size +()); + +371  +PrݖCÞumnTy³s +:: +TINYINT +: + +372 +$ÝtiÚs +[] = + `¥rštf +('\'min\' => %s, \'max\' => %s', -128, 127); + +375  +PrݖCÞumnTy³s +:: +SMALLINT +: + +376 +$ÝtiÚs +[] = + `¥rštf +('\'min\' => %s, \'max\' => %s', -32768, 32767); + +379  +PrݖCÞumnTy³s +:: +INTEGER +: + +380 +$ÝtiÚs +[] = + `¥rštf +('\'min\' => %s, \'max\' => %s', -2147483648, 2147483647); + +383  +PrݖCÞumnTy³s +:: +BIGINT +: + +384 +$ÝtiÚs +[] = + `¥rštf +('\'min\' => %s, \'max\' => %s', -9223372036854775808, 9223372036854775807); + +389 ià(! +$cÞumn +-> + `isNÙNuÎ +(è|| $cÞumn-> + `isPrim¬yKey +()) + +391 +$ÝtiÚs +[] = '\'required\' => false'; + +394  + `couÁ +( +$ÝtiÚs +è? + `¥rštf +('¬¿y(%s)', + `im¶ode +(', ', $options)) : ''; + +395 + } +} + +402 +public + +funùiÚ + + $g‘CÞumnNameMaxL’gth +() + +404 +$max + = 0; + +405 + `fܗch + ( +$this +-> +bË +-> + `g‘CÞumns +(è +as + +$cÞumn +) + +407 ià(( +$m + = + `¡¾’ +( +$cÞumn +-> + `g‘Name +())è> +$max +) + +409 +$max + = +$m +; + +413 + `fܗch + ( +$this +-> + `g‘MªyToMªyTabËs +(è +as + +$bËs +) + +415 ià(( +$m + = + `¡¾’ +( +$this +-> + `und”scÜe +( +$bËs +['middËTabË']-> + `g‘CÏs¢ame +()).'_li¡')è> +$max +) + +417 +$max + = +$m +; + +421  +$max +; + +422 + } +} + +429 +public + +funùiÚ + + $g‘Prim¬yKeyCÞumNames +() + +431 +$pks + = + `¬¿y +(); + +432 + `fܗch + ( +$this +-> +bË +-> + `g‘CÞumns +(è +as + +$cÞumn +) + +434 ià( +$cÞumn +-> + `isPrim¬yKey +()) + +436 +$pks +[] = +$this +-> + `Œª¦©eCÞumnName +( +$cÞumn +); + +440  +$pks +; + +441 + } +} + +450 +public + +funùiÚ + + $g‘Prim¬yKeyCÞumNamesAsSŒšg +() + +452  + `¥rštf +('¬¿y(\'%s\')', + `im¶ode +('\', \'', +$this +-> + `g‘Prim¬yKeyCÞumNames +())); + +453 + } +} + +460 +public + +funùiÚ + + $isI18n +() + +462  + `m‘hod_exi¡s +( + `cÚ¡ªt +( +$this +-> +bË +-> + `g‘CÏs¢ame +().'::PEER'), 'getI18nModel'); + +463 + } +} + +470 +public + +funùiÚ + + $g‘I18nMod– +() + +472  + `ÿÎ_u£r_func +( + `¬¿y +( + `cÚ¡ªt +( +$this +-> +bË +-> + `g‘CÏs¢ame +().'::PEER'), 'getI18nModel')); + +473 + } +} + +475 +public + +funùiÚ + + $und”scÜe +( +$Çme +) + +477  + `¡¹Þow” +( + `´eg_»¶aû +( + `¬¿y +('/([A-Z]+)([A-Z][a-z])/', '/([a-z\d])([A-Z])/'), '\\1_\\2', +$Çme +)); + +478 + } +} + +480 +public + +funùiÚ + + $g‘UniqueCÞumnNames +() + +482 +$uniqueCÞumns + = + `¬¿y +(); + +484 + `fܗch + ( + `ÿÎ_u£r_func +( + `¬¿y +( + `cÚ¡ªt +( +$this +-> +bË +-> + `g‘CÏs¢ame +().'::PEER'), 'g‘UniqueCÞumnNames')è +as + +$unique +) + +486 +$uniqueCÞumn + = + `¬¿y +(); + +487 + `fܗch + ( +$unique + +as + +$cÞumn +) + +489 +$uniqueCÞumn +[] = +$this +-> + `Œª¦©eCÞumnName +($this-> +bË +-> + `g‘CÞumn +( +$cÞumn +)); + +492 +$uniqueCÞumns +[] = +$uniqueCÞumn +; + +495  +$uniqueCÞumns +; + +496 + } +} + +498 +public + +funùiÚ + +Œª¦©eCÞumnName +( +$cÞumn +, +$»Ï‹d + = +çl£ +, +$to + = +Ba£P“r +:: +TYPE_FIELDNAME +) + +500 +$³” + = +$»Ï‹d + ? +cÚ¡ªt +( +$cÞumn +-> +g‘TabË +()-> +g‘D©aba£M­ +()->g‘TabË($cÞumn-> +g‘R–©edTabËName +())-> +g‘PhpName +().'::PEER') : constant($column->getTable()->getPhpName().'::PEER'); + +501 + g$f›ld + = +$»Ï‹d + ? +$cÞumn +-> +g‘R–©edName +(è: $cÞumn-> +g‘FuÎyQu®if›dName +(); + +503  +ÿÎ_u£r_func +( +¬¿y +( +$³” +, 'Œª¦©eF›ldName'), +$f›ld +, +Ba£P“r +:: +TYPE_COLNAME +, +$to +); + +509 +´Ùeùed + +funùiÚ + + $lßdBužd”s +() + +511 +$this +-> +dbM­ + = +Prݖ +:: + `g‘D©aba£M­ +($this-> +·¿ms +['connection']); + +512 +$þas£s + = +sfFšd” +:: + `ty³ +('fže')-> + `Çme +('*TabËM­.php')-> + `š +( +$this +-> +g’”©ÜMªag” +-> + `g‘CÚfigu¿tiÚ +()-> + `g‘Mod–Dœs +()); + +513 + `fܗch + ( +$þas£s + +as + +$þass +) + +515 +$omCÏss + = + `ba£Çme +( +$þass +, 'TableMap.php'); + +516 ià( + `þass_exi¡s +( +$omCÏss +è&& + `is_subþass_of +($omCÏss, 'Ba£Objeù'è&& + `cÚ¡ªt +($omCÏss.'P“r::DATABASE_NAME'è=ð +$this +-> +·¿ms +['connection']) + +518 +$bËM­CÏss + = + `ba£Çme +( +$þass +, '.php'); + +519 +$this +-> +dbM­ +-> + `addTabËFromM­CÏss +( +$bËM­CÏss +); + +522 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/generator/sfPropelGenerator.class.php + +1 + `£tG’”©ÜCÏss +('sfPropelModule'); + +40 +public + +funùiÚ + + $cÚfigu» +() + +43 +$this +-> + `lßdM­Bužd”CÏs£s +(); + +46 +$this +-> + `lßdPrim¬yKeys +(); + +47 + } +} + +54 +public + +funùiÚ + + $g‘TabËM­ +() + +56  +$this +-> +bËM­ +; + +57 + } +} + +66 +public + +funùiÚ + + $g‘MªyToMªyTabËs +() + +68 +$bËs + = + `¬¿y +(); + +71 + `fܗch + ( +$this +-> +dbM­ +-> + `g‘TabËs +(è +as + +$bËName + => +$bË +) + +74 +$bË +-> + `g‘R–©iÚs +(); + +76 + `fܗch + ( +$bË +-> + `g‘CÞumns +(è +as + +$cÞumn +) + +78 ià( +$cÞumn +-> + `isFÜeignKey +(è&& $cÞumn-> + `isPrim¬yKey +(è&& +$this +-> + `g‘TabËM­ +()-> + `g‘CÏs¢ame +(è=ð$this-> +dbM­ +-> + `g‘TabË +($cÞumn-> + `g‘R–©edTabËName +())->getClassname()) + +82 + `fܗch + ( +$bË +-> + `g‘CÞumns +(è +as + +$»Ï‹dCÞumn +) + +84 ià( +$»Ï‹dCÞumn +-> + `isFÜeignKey +(è&& $»Ï‹dCÞumn-> + `isPrim¬yKey +(è&& +$this +-> + `g‘TabËM­ +()-> + `g‘CÏs¢ame +(è!ð$this-> +dbM­ +-> + `g‘TabË +($»Ï‹dCÞumn-> + `g‘R–©edTabËName +())->getClassname()) + +87 +$bËs +[] = + `¬¿y +( + +88 'middËTabË' => +$bË +, + +89 '»Ï‹dTabË' => +$this +-> +dbM­ +-> + `g‘TabË +( +$»Ï‹dCÞumn +-> + `g‘R–©edTabËName +()), + +90 'cÞumn' => +$cÞumn +, + +91 '»Ï‹dCÞumn' => +$»Ï‹dCÞumn +, + +101  +$bËs +; + +102 + } +} + +109 +´Ùeùed + +funùiÚ + + $lßdPrim¬yKeys +() + +111 +$this +-> +´im¬yKey + = + `¬¿y +(); + +112 + `fܗch + ( +$this +-> +bËM­ +-> + `g‘CÞumns +(è +as + +$cÞumn +) + +114 ià( +$cÞumn +-> + `isPrim¬yKey +()) + +116 +$this +-> +´im¬yKey +[] = +$cÞumn +-> + `g‘PhpName +(); + +120 ià(! + `couÁ +( +$this +-> +´im¬yKey +)) + +122 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('CªnÙ g’”©¨moduË f܇ mod– w™houˆ¨´im¬y key (%s)', +$this +-> +mod–CÏss +)); + +124 + } +} + +131 +´Ùeùed + +funùiÚ + + $lßdM­Bužd”CÏs£s +() + +133 +$this +-> +dbM­ + = +Prݖ +:: + `g‘D©aba£M­ +(); + +134 +$this +-> +bËM­ + = + `ÿÎ_u£r_func +( + `¬¿y +($this-> +mod–CÏss + . 'Peer', 'getTableMap')); + +137 + `fܗch + ( +$this +-> +bËM­ +-> + `g‘R–©iÚs +(è +as + +$»ÏtiÚ +) + +139 +$»ÏtiÚ +-> + `g‘FÜeignTabË +()-> + `g‘R–©iÚs +(); + +141 + } +} + +152 +public + +funùiÚ + +g‘CÞumnG‘‹r +( +$cÞumn +, +$dev–Ýed + = +çl£ +, +$´efix + = '') + +154 +Œy + + +156 +$g‘‹r + = 'g‘'. +ÿÎ_u£r_func +( +¬¿y +( +cÚ¡ªt +( +$this +-> +g‘Mod–CÏss +().'::PEER'), 'Œª¦©eF›ldName'), +$cÞumn +, +Ba£P“r +:: +TYPE_FIELDNAME +, Ba£P“r:: +TYPE_PHPNAME +); + +158 +ÿtch + ( +PrݖExû±iÚ + +$e +) + +161 + g$g‘‹r + = 'g‘'. +sfInæeùÜ +:: +ÿm–ize +( +$cÞumn +); + +164 ià(! + g$dev–Ýed +) + +166  + g$g‘‹r +; + +169  +¥rštf +('$%s%s->%s()', +$´efix +, +$this +-> +g‘SšguÏrName +(), +$g‘‹r +); + +179 +public + +funùiÚ + + $g‘Ty³ +( +$cÞumn +) + +181 ià( +$cÞumn +-> + `isFÜeignKey +()) + +186  +$cÞumn +-> + `g‘Ty³ +()) + +188  +PrݖCÞumnTy³s +:: +BOOLEAN +: + +190  +PrݖCÞumnTy³s +:: +DATE +: + +191  +PrݖCÞumnTy³s +:: +TIMESTAMP +: + +193  +PrݖCÞumnTy³s +:: +TIME +: + +198 + } +} + +205 +public + +funùiÚ + + $g‘DeçuÉF›ldsCÚfigu¿tiÚ +() + +207 +$f›lds + = + `¬¿y +(); + +209 +$Çmes + = + `¬¿y +(); + +210 + `fܗch + ( +$this +-> + `g‘TabËM­ +()-> + `g‘CÞumns +(è +as + +$cÞumn +) + +212 +$Çme + = +$this +-> + `Œª¦©eCÞumnName +( +$cÞumn +); + +213 +$Çmes +[] = +$Çme +; + +214 +$f›lds +[ +$Çme +] = + `¬¿y_m”ge +( + `¬¿y +( + +215 'is_lšk' => ( +Boޗn +è +$cÞumn +-> + `isPrim¬yKey +(), + +216 'is_»®' => +Œue +, + +217 'is_·¹Ÿl' => +çl£ +, + +218 'is_compڒt' => +çl£ +, + +219 'ty³' => +$this +-> + `g‘Ty³ +( +$cÞumn +), + +220 ), + `is£t +( +$this +-> +cÚfig +['f›lds'][ +$Çme +]è? $this->cÚfig['f›lds'][$Çme] : + `¬¿y +()); + +223 + `fܗch + ( +$this +-> + `g‘MªyToMªyTabËs +(è +as + +$bËs +) + +225 +$Çme + = +sfInæeùÜ +:: + `und”scÜe +( +$bËs +['middËTabË']-> + `g‘CÏs¢ame +()).'_list'; + +226 +$Çmes +[] = +$Çme +; + +227 +$f›lds +[ +$Çme +] = + `¬¿y_m”ge +( + `¬¿y +( + +228 'is_lšk' => +çl£ +, + +229 'is_»®' => +çl£ +, + +230 'is_·¹Ÿl' => +çl£ +, + +231 'is_compڒt' => +çl£ +, + +233 ), + `is£t +( +$this +-> +cÚfig +['f›lds'][ +$Çme +]è? $this->cÚfig['f›lds'][$Çme] : + `¬¿y +()); + +236 ià( + `is£t +( +$this +-> +cÚfig +['fields'])) + +238 + `fܗch + ( +$this +-> +cÚfig +['f›lds'] +as + +$Çme + => +$·¿ms +) + +240 ià( + `š_¬¿y +( +$Çme +, +$Çmes +)) + +245 +$f›lds +[ +$Çme +] = + `¬¿y_m”ge +( + `¬¿y +( + +246 'is_lšk' => +çl£ +, + +247 'is_»®' => +çl£ +, + +248 'is_·¹Ÿl' => +çl£ +, + +249 'is_compڒt' => +çl£ +, + +251 ), + `is_¬¿y +( +$·¿ms +è? $·¿m : + `¬¿y +()); + +255 + `un£t +( +$this +-> +cÚfig +['fields']); + +257  +$f›lds +; + +258 + } +} + +267 +public + +funùiÚ + + $g‘F›ldsCÚfigu¿tiÚ +( +$cڋxt +) + +269 +$f›lds + = + `¬¿y +(); + +271 +$Çmes + = + `¬¿y +(); + +272 + `fܗch + ( +$this +-> + `g‘TabËM­ +()-> + `g‘CÞumns +(è +as + +$cÞumn +) + +274 +$Çme + = +$this +-> + `Œª¦©eCÞumnName +( +$cÞumn +); + +275 +$Çmes +[] = +$Çme +; + +276 +$f›lds +[ +$Çme +] = + `is£t +( +$this +-> +cÚfig +[ +$cڋxt +]['f›lds'][$Çme]è? $this->cÚfig[$cڋxt]['f›lds'][$Çme] : + `¬¿y +(); + +279 + `fܗch + ( +$this +-> + `g‘MªyToMªyTabËs +(è +as + +$bËs +) + +281 +$Çme + = +sfInæeùÜ +:: + `und”scÜe +( +$bËs +['middËTabË']-> + `g‘CÏs¢ame +()).'_list'; + +282 +$Çmes +[] = +$Çme +; + +283 +$f›lds +[ +$Çme +] = + `is£t +( +$this +-> +cÚfig +[ +$cڋxt +]['f›lds'][$Çme]è? $this->cÚfig[$cڋxt]['f›lds'][$Çme] : + `¬¿y +(); + +286 ià( + `is£t +( +$this +-> +cÚfig +[ +$cڋxt +]['fields'])) + +288 + `fܗch + ( +$this +-> +cÚfig +[ +$cڋxt +]['f›lds'] +as + +$Çme + => +$·¿ms +) + +290 ià( + `š_¬¿y +( +$Çme +, +$Çmes +)) + +295 +$f›lds +[ +$Çme +] = + `is_¬¿y +( +$·¿ms +è? $·¿m : + `¬¿y +(); + +299 + `un£t +( +$this +-> +cÚfig +[ +$cڋxt +]['fields']); + +301  +$f›lds +; + +302 + } +} + +311 +public + +funùiÚ + + $g‘AÎF›ldNames +( +$w™hM2M + = +Œue +) + +313 +$Çmes + = + `¬¿y +(); + +314 + `fܗch + ( +$this +-> + `g‘TabËM­ +()-> + `g‘CÞumns +(è +as + +$cÞumn +) + +316 +$Çmes +[] = +$this +-> + `Œª¦©eCÞumnName +( +$cÞumn +); + +319 ià( +$w™hM2M +) + +321 + `fܗch + ( +$this +-> + `g‘MªyToMªyTabËs +(è +as + +$bËs +) + +323 +$Çmes +[] = +sfInæeùÜ +:: + `und”scÜe +( +$bËs +['middËTabË']-> + `g‘CÏs¢ame +()).'_list'; + +327  +$Çmes +; + +328 + } +} + +330 +public + +funùiÚ + +Œª¦©eCÞumnName +( +$cÞumn +, +$»Ï‹d + = +çl£ +, +$to + = +Ba£P“r +:: +TYPE_FIELDNAME +) + +332 +$³” + = +$»Ï‹d + ? +cÚ¡ªt +( +$cÞumn +-> +g‘TabË +()-> +g‘D©aba£M­ +()->g‘TabË($cÞumn-> +g‘R–©edTabËName +())-> +g‘PhpName +().'::PEER') : constant($column->getTable()->getPhpName().'::PEER'); + +333 + g$f›ld + = +$»Ï‹d + ? +$cÞumn +-> +g‘R–©edName +(è: $cÞumn-> +g‘FuÎyQu®if›dName +(); + +335  +ÿÎ_u£r_func +( +¬¿y +( +$³” +, 'Œª¦©eF›ldName'), +$f›ld +, +Ba£P“r +:: +TYPE_COLNAME +, +$to +); + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/log/sfPropelLogger.class.php + +1 +di¥©ch” + = +sfProjeùCÚfigu¿tiÚ +:: + `g‘Aùive +()-> + `g‘Ev’tDi¥©ch” +(); + +37 +$this +-> +di¥©ch” + = +$di¥©ch” +; + +46 +public + +funùiÚ + + $®”t +( +$mes§ge +) + +48 +$this +-> + `log +( +$mes§ge +, +sfLogg” +:: +ALERT +); + +49 + } +} + +56 +public + +funùiÚ + + $ü™ +( +$mes§ge +) + +58 +$this +-> + `log +( +$mes§ge +, +sfLogg” +:: +CRIT +); + +59 + } +} + +66 +public + +funùiÚ + + $”r +( +$mes§ge +) + +68 +$this +-> + `log +( +$mes§ge +, +sfLogg” +:: +ERR +); + +69 + } +} + +76 +public + +funùiÚ + + $w¬nšg +( +$mes§ge +) + +78 +$this +-> + `log +( +$mes§ge +, +sfLogg” +:: +WARNING +); + +79 + } +} + +86 +public + +funùiÚ + + $nÙiû +( +$mes§ge +) + +88 +$this +-> + `log +( +$mes§ge +, +sfLogg” +:: +NOTICE +); + +89 + } +} + +96 +public + +funùiÚ + + $šfo +( +$mes§ge +) + +98 +$this +-> + `log +( +$mes§ge +, +sfLogg” +:: +INFO +); + +99 + } +} + +106 +public + +funùiÚ + + $debug +( +$mes§ge +) + +108 +$this +-> + `log +( +$mes§ge +, +sfLogg” +:: +DEBUG +); + +109 + } +} + +117 +public + +funùiÚ + +log +( +$mes§ge +, +$£v”™y + = +sfLogg” +:: +DEBUG +) + +119 +$this +-> +di¥©ch” +-> +nÙify +( +Ãw + +sfEv’t +($this, '­¶iÿtiÚ.log', +¬¿y +( +$mes§ge +, '´iܙy' => +$£v”™y +))); + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/mailer/Swift_PropelSpool.class.php + +1 +mod– + = +$mod– +; + +42 + m$this +-> + mcÞumn + = +$cÞumn +; + +43 + m$this +-> + mm‘hod + = +$m‘hod +; + +51 +public + +funùiÚ + + $isS¹ed +() + +53  +Œue +; + +54 + } +} + +59 +public + +funùiÚ + + $¡¬t +() + +61 + } +} + +66 +public + +funùiÚ + + $¡Ý +() + +68 + } +} + +75 +public + +funùiÚ + + $queueMes§ge +( +Swiá_Mime_Mes§ge + +$mes§ge +) + +77 +$objeù + = +Ãw + +$this +-> +mod– +; + +79 ià(! +$objeù + +š¡ªûof + +Ba£Objeù +) + +81 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +('The mailer message object must be‡ BaseObject object.'); + +84 +$mod– + = + `cÚ¡ªt +( +$this +-> +mod– +.'::PEER'); + +85 +$m‘hod + = '£t'. + `ÿÎ_u£r_func +( + `¬¿y +( +$mod– +, 'Œª¦©eF›ldName'), +$this +-> +cÞumn +, +Ba£P“r +:: +TYPE_FIELDNAME +, Ba£P“r:: +TYPE_PHPNAME +); + +87 +$objeù +-> + `$m‘hod +( + `£rŸlize +( +$mes§ge +)); + +88 +$objeù +-> + `§ve +(); + +89 + } +} + +99 +public + +funùiÚ + + $æushQueue +( +Swiá_T¿n¥Üt + +$Œª¥Üt +, & +$çžedRec›Ás + = +nuÎ +) + +101 +$ü™”Ÿ + = +Ãw + + `Cr™”Ÿ +(); + +102 +$ü™”Ÿ +-> + `£tLim™ +( +$this +-> + `g‘Mes§geLim™ +()); + +104 +$mod– + = + `cÚ¡ªt +( +$this +-> +mod– +.'::PEER'); + +105 +$objeùs + = + `ÿÎ_u£r_func +( + `¬¿y +( +$mod– +, +$this +-> +m‘hod +), +$ü™”Ÿ +); + +107 ià(! +$Œª¥Üt +-> + `isS¹ed +()) + +109 +$Œª¥Üt +-> + `¡¬t +(); + +112 +$m‘hod + = 'g‘'. + `ÿÎ_u£r_func +( + `¬¿y +( +$mod– +, 'Œª¦©eF›ldName'), +$this +-> +cÞumn +, +Ba£P“r +:: +TYPE_FIELDNAME +, Ba£P“r:: +TYPE_PHPNAME +); + +113 +$couÁ + = 0; + +114 +$time + = + `time +(); + +115 + `fܗch + ( +$objeùs + +as + +$objeù +) + +117 ià( + `is_»sourû +( +$objeù +-> + `g‘Mes§ge +())) + +119 +$mes§ge + = + `un£rŸlize +( + `¡»am_g‘_cڋÁs +( +$objeù +-> + `g‘Mes§ge +())); + +123 +$mes§ge + = + `un£rŸlize +( +$objeù +-> + `g‘Mes§ge +()); + +126 +$objeù +-> + `d–‘e +(); + +128 +Œy + + +130 +$couÁ + +ð +$Œª¥Üt +-> + `£nd +( +$mes§ge +, +$çžedRec›Ás +); + +132 + `ÿtch + ( +Exû±iÚ + +$e +) + +137 ià( +$this +-> + `g‘TimeLim™ +(è&& ( + `time +(è- +$time +) >= $this->getTimeLimit()) + +143  +$couÁ +; + +144 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/routing/sfPropelRoute.class.php + +1 + `isBound +()) + +30 +throw + +Ãw + + `LogicExû±iÚ +('The„oute is‚ot bound.'); + +33 +$this +-> +ü™”Ÿ + = +$ü™”Ÿ +; + +36 +´Ùeùed + +funùiÚ + + $g‘ObjeùFÜP¬am‘”s +( +$·¿m‘”s +) + +38 +$this +-> + `fixO±iÚs +(); + +40 ià(! + `is£t +( +$this +-> +ÝtiÚs +['method'])) + +42 +$this +-> +ÝtiÚs +['m‘hod'] = + `is£t +($this->options['method_for_criteria']) ? $this->options['method_for_criteria'] : 'doSelectOne'; + +44 +$þassName + = +$this +-> +ÝtiÚs +['model']; + +45 +$ü™”Ÿ + = +Ãw + + `Cr™”Ÿ +(); + +46 +$v¬ŸbËs + = +$this +-> + `g‘R—lV¬ŸbËs +(); + +47 ià(! + `couÁ +( +$v¬ŸbËs +)) + +49  +çl£ +; + +52 + `fܗch + ( +$v¬ŸbËs + +as + +$v¬ŸbË +) + +54 +Œy + + +56 +$cÚ¡ªt + = + `ÿÎ_u£r_func +( + `¬¿y +( +$þassName +, 'Œª¦©eF›ldName'), +$v¬ŸbË +, +Ba£P“r +:: +TYPE_FIELDNAME +, Ba£P“r:: +TYPE_COLNAME +); + +57 +$ü™”Ÿ +-> + `add +( +$cÚ¡ªt +, +$·¿m‘”s +[ +$v¬ŸbË +]); + +59 + `ÿtch + ( +Exû±iÚ + +$e +) + +65 +$·¿m‘”s + = +$ü™”Ÿ +; + +68  +·»Á +:: + `g‘ObjeùFÜP¬am‘”s +( +$·¿m‘”s +); + +69 + } +} + +71 +´Ùeùed + +funùiÚ + + $g‘ObjeùsFÜP¬am‘”s +( +$·¿m‘”s +) + +73 +$this +-> + `fixO±iÚs +(); + +75 ià(! + `is£t +( +$this +-> +ÝtiÚs +['method'])) + +77 +$this +-> +ÝtiÚs +['m‘hod'] = + `is£t +($this->options['method_for_criteria']) ? $this->options['method_for_criteria'] : 'doSelect'; + +78 +$·¿m‘”s + = +Ãw + + `Cr™”Ÿ +(); + +81 ià( +nuÎ + !=ð +$this +-> +ü™”Ÿ +) + +83 +$·¿m‘”s + = +$this +-> +ü™”Ÿ +; + +86  +·»Á +:: + `g‘ObjeùFÜP¬am‘”s +( +$·¿m‘”s +); + +87 + } +} + +89 +´Ùeùed + +funùiÚ + + $doCÚv”tObjeùToA¼ay +( +$objeù +) + +91 +$this +-> + `fixO±iÚs +(); + +93 ià( + `is£t +( +$this +-> +ÝtiÚs +['cÚv”t']è|| + `m‘hod_exi¡s +( +$objeù +, 'toParams')) + +95  +·»Á +:: + `doCÚv”tObjeùToA¼ay +( +$objeù +); + +98 +$þassName + = +$this +-> +ÝtiÚs +['model']; + +100 +$·¿m‘”s + = + `¬¿y +(); + +101 + `fܗch + ( +$this +-> + `g‘R—lV¬ŸbËs +(è +as + +$v¬ŸbË +) + +103 +Œy + + +105 +$m‘hod + = 'g‘'. + `ÿÎ_u£r_func +( + `¬¿y +( +$þassName +, 'Œª¦©eF›ldName'), +$v¬ŸbË +, +Ba£P“r +:: +TYPE_FIELDNAME +, Ba£P“r:: +TYPE_PHPNAME +); + +107 + `ÿtch + ( +Exû±iÚ + +$e +) + +109 +$m‘hod + = 'g‘'. +sfInæeùÜ +:: + `ÿm–ize +( +$v¬ŸbË +); + +112 +$·¿m‘”s +[ +$v¬ŸbË +] = +$objeù +-> + `$m‘hod +(); + +115  +$·¿m‘”s +; + +116 + } +} + +118 +´Ùeùed + +funùiÚ + + $fixO±iÚs +() + +120 ià(! + `is£t +( +$this +-> +ÝtiÚs +['object_model'])) + +122 +$this +-> +ÝtiÚs +['object_model'] = $this->options['model']; + +123 +$this +-> +ÝtiÚs +['mod–'] = + `cÚ¡ªt +($this->options['model'].'::PEER'); + +125 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/routing/sfPropelRouteCollection.class.php + +1 + `g‘Exû±iÚ +()) + +64 +£lf +:: +$exû±iÚs +[] = +$ev’t +-> + `g‘Exû±iÚ +(); + +66 + } +} + +74 +public + +funùiÚ + + $skS¹ed +( +BuždEv’t + +$ev’t +) + +76 + } +} + +84 +public + +funùiÚ + + $skFšished +( +BuždEv’t + +$ev’t +) + +86 + } +} + +94 +public + +funùiÚ + + $mes§geLogged +( +BuždEv’t + +$ev’t +) + +96 ià( +$ev’t +-> + `g‘Priܙy +(è=ð +Projeù +:: +MSG_ERR +) + +98 ià( + `´eg_m©ch +('/XLST¿nsfÜm©iÚ/', +$ev’t +-> + `g‘Mes§ge +())) + +104 +$msg + = ''; + +105 ià( +$ev’t +-> + `g‘Task +(è!=ð +nuÎ +) + +107 +$msg + = + `¥rštf +('[%s] ', +$ev’t +-> + `g‘Task +()-> + `g‘TaskName +()); + +110 +$msg + .ð +$ev’t +-> + `g‘Mes§ge +(); + +112 +£lf +:: +$”rÜs +[] = +$msg +; + +114 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/sfPropelBaseTask.class.php + +1 + `g‘O±iÚS‘ +()-> + `hasO±iÚ +('phing-arg')) + +50 +$this +-> +add™iÚ®PhšgArgs + = +$commªdMªag” +-> + `g‘O±iÚV®ue +('phing-arg'); + +52 + } +} + +54 +´Ùeùed + +funùiÚ + +schemaToYML +( +$checkSchema + = +£lf +:: +CHECK_SCHEMA +, +$´efix + = '') + +56 +$fšd” + = +sfFšd” +:: +ty³ +('fže')-> +Çme +('*schema.xml')-> +´uà +('doctrine'); + +58 + g$schemas + = +¬¿y_unique +( +¬¿y_m”ge +( +$fšd” +-> +š +( +sfCÚfig +:: +g‘ +('sf_cÚfig_dœ')), $fšd”->š( +$this +-> +cÚfigu¿tiÚ +-> +g‘PlugšSubP©hs +('/config')))); + +59 ià( + g£lf +:: +CHECK_SCHEMA + ==ð +$checkSchema + && ! +couÁ +( +$schemas +)) + +61 +throw + +Ãw + +sfCommªdExû±iÚ +('You must create‡ schema.xml file.'); + +64 + g$dbSchema + = +Ãw + +sfPrݖD©aba£Schema +(); + +65 +fܗch + ( +$schemas + +as + +$schema +) + +67 + g$dbSchema +-> +lßdXML +( +$schema +); + +69 + g$this +-> +logSeùiÚ +('schema', +¥rštf +('cÚv”tšg "%s"ØYML', +$schema +)); + +71 + g$loÿÍ»fix + = +$´efix +; + +74 ià( +´eg_m©ch +('#¶ugšs[/\\\\]([^/\\\\]+)[/\\\\]#', +$schema +, +$m©ch +)) + +76 + g$loÿÍ»fix + = +$´efix +. +$m©ch +[1].'-'; + +80 + g$yml_fže_Çme + = +¡r_»¶aû +('.xml', '.yml', +ba£Çme +( +$schema +)); + +82 + g$fže + = +¡r_»¶aû +( +ba£Çme +( +$schema +), +$´efix +. +$yml_fže_Çme +, $schema); + +83 + g$this +-> +logSeùiÚ +('schema', +¥rštf +('pu‰šg %s', +$fže +)); + +84 +fže_put_cڋÁs +( +$fže +, +$dbSchema +-> +asYAML +()); + +88 +´Ùeùed + +funùiÚ + +schemaToXML +( +$checkSchema + = +£lf +:: +CHECK_SCHEMA +, +$´efix + = '') + +90 +$fšd” + = +sfFšd” +:: +ty³ +('fže')-> +Çme +('*schema.yml')-> +´uà +('doctrine'); + +91 + g$dœs + = +¬¿y_m”ge +( +¬¿y +( +sfCÚfig +:: +g‘ +('sf_cÚfig_dœ')), +$this +-> +cÚfigu¿tiÚ +-> +g‘PlugšSubP©hs +('/config')); + +92 + g$schemas + = +$fšd” +-> +š +( +$dœs +); + +93 ià( + g£lf +:: +CHECK_SCHEMA + ==ð +$checkSchema + && ! +couÁ +( +$schemas +)) + +95 +throw + +Ãw + +sfCommªdExû±iÚ +('You must create‡ schema.yml file.'); + +98 + g$dbSchema + = +Ãw + +sfPrݖD©aba£Schema +(); + +100 +fܗch + ( +$schemas + +as + +$schema +) + +102 + g$schemaA¼ay + = +sfYaml +:: +lßd +( +$schema +); + +104 ià(! +is_¬¿y +( +$schemaA¼ay +)) + +109 ià(! +is£t +( +$schemaA¼ay +['classes'])) + +112 + g$schemaA¼ay + = +$dbSchema +-> +cÚv”tOldToNewYaml +( +$schemaA¼ay +); + +115 + g$cu¡omSchemaFž’ame + = +¡r_»¶aû +( +¬¿y +( + +116 +¡r_»¶aû +( +DIRECTORY_SEPARATOR +, '/', +sfCÚfig +:: +g‘ +('sf_root_dir')).'/', + +121 ), +¬¿y +('', '', '', '_', 'schema.cu¡om.yml'), +$schema +); + +122 + g$cu¡omSchemas + = +sfFšd” +:: +ty³ +('fže')-> +Çme +( +$cu¡omSchemaFž’ame +)-> +š +( +$dœs +); + +124 +fܗch + ( +$cu¡omSchemas + +as + +$cu¡omSchema +) + +126 + g$this +-> +logSeùiÚ +('schema', +¥rštf +('found cu¡om schem¨%s', +$cu¡omSchema +)); + +128 + g$cu¡omSchemaA¼ay + = +sfYaml +:: +lßd +( +$cu¡omSchema +); + +129 ià(! +is£t +( +$cu¡omSchemaA¼ay +['classes'])) + +132 + g$cu¡omSchemaA¼ay + = +$dbSchema +-> +cÚv”tOldToNewYaml +( +$cu¡omSchemaA¼ay +); + +134 + g$schemaA¼ay + = +sfToÞk™ +:: +¬¿yD“pM”ge +( +$schemaA¼ay +, +$cu¡omSchemaA¼ay +); + +137 + g$dbSchema +-> +lßdA¼ay +( +$schemaA¼ay +); + +139 + g$this +-> +logSeùiÚ +('schema', +¥rštf +('cÚv”tšg "%s"ØXML', +$schema +)); + +141 + g$loÿÍ»fix + = +$´efix +; + +144 ià( +´eg_m©ch +('#¶ugšs[/\\\\]([^/\\\\]+)[/\\\\]#', +$schema +, +$m©ch +)) + +146 + g$loÿÍ»fix + = +$´efix +. +$m©ch +[1].'-'; + +150 + g$xml_fže_Çme + = +¡r_»¶aû +('.yml', '.xml', +ba£Çme +( +$schema +)); + +152 + g$fže + = +¡r_»¶aû +( +ba£Çme +( +$schema +), +$loÿÍ»fix +. +$xml_fže_Çme +, $schema); + +153 + g$this +-> +logSeùiÚ +('schema', +¥rštf +('pu‰šg %s', +$fže +)); + +154 +fže_put_cڋÁs +( +$fže +, +$dbSchema +-> +asXML +()); + +158 +´Ùeùed + +funùiÚ + +cÝyXmlSchemaFromPlugšs +( +$´efix + = '') + +160 ià(! +$dœs + = +$this +-> +cÚfigu¿tiÚ +-> +g‘PlugšSubP©hs +('/config')) + +165 + g$schemas + = +sfFšd” +:: +ty³ +('fže')-> +Çme +('*schema.xml')-> +´uà +('doùrše')-> +š +( +$dœs +); + +166 +fܗch + ( +$schemas + +as + +$schema +) + +169 + g$loÿÍ»fix + = ''; + +172 ià( +´eg_m©ch +('#¶ugšs[/\\\\]([^/\\\\]+)[/\\\\]#', +$schema +, +$m©ch +)) + +175 ià(! +¡r¡r +( +ba£Çme +( +$schema +), +$m©ch +[1])) + +177 + g$loÿÍ»fix + = +$m©ch +[1].'-'; + +182 ià(! +¡r¡r +( +ba£Çme +( +$schema +), +$´efix +)) + +184 + g$loÿÍ»fix + = +$´efix +. +$loÿÍ»fix +; + +187 + g$this +-> +g‘Fžesy¡em +()-> +cÝy +( +$schema +, 'cÚfig'. +DIRECTORY_SEPARATOR +. +$loÿÍ»fix +. +ba£Çme +($schema)); + +188 ià('' ==ð +$loÿÍ»fix +) + +190 +$this +-> +g‘Fžesy¡em +()-> +»move +( +$schema +); + +195 +´Ùeùed + +funùiÚ + + $þ—nup +() + +197 ià( +nuÎ + ==ð +$this +-> +commªdAµliÿtiÚ + || !$this->commªdAµliÿtiÚ-> + `w™hT¿û +()) + +199 +$fšd” + = +sfFšd” +:: + `ty³ +('fže')-> + `Çme +('generated-*schema.xml')->name('*schema-transformed.xml'); + +200 +$this +-> + `g‘Fžesy¡em +()-> + `»move +( +$fšd” +-> + `š +( + `¬¿y +('config', 'plugins'))); + +202 + } +} + +204 +´Ùeùed + +funùiÚ + +ÿÎPhšg +( +$skName +, +$checkSchema +, +$´Ý”t›s + = + $¬¿y +()) + +206 +$schemas + = +sfFšd” +:: + `ty³ +('fže')-> + `Çme +('*schema.xml')-> + `»Ïtive +()-> + `fÞlow_lšk +()-> + `š +( +sfCÚfig +:: + `g‘ +('sf_config_dir')); + +207 ià( +£lf +:: +CHECK_SCHEMA + ==ð +$checkSchema + && ! +$schemas +) + +209 +throw + +Ãw + + `sfCommªdExû±iÚ +('You must create‡ schema.yml or schema.xml file.'); + +213 +sfToÞk™ +:: + `addInþudeP©h +( + `¬¿y +( + +214 +sfCÚfig +:: + `g‘ +('sf_symfony_lib_dir'), + +215 +sfCÚfig +:: + `g‘ +('sf_´Ý–_g’”©Ü_·th', + `»®·th +( + `dœÇme +( +__FILE__ +).'/../vendor/propel-generator/classes')), + +218 +$¬gs + = + `¬¿y +(); + +219 +$bufãrPhšgOuut + = +nuÎ + ==ð +$this +-> +commªdAµliÿtiÚ + || !$this->commªdAµliÿtiÚ-> + `w™hT¿û +(); + +221 +$´Ý”t›s + = + `¬¿y_m”ge +( + `¬¿y +( + +223 '´ojeù.dœ' => +sfCÚfig +:: + `g‘ +('sf_config_dir'), + +224 '´Ý–.ouut.dœ' => +sfCÚfig +:: + `g‘ +('sf_root_dir'), + +225 ), +$´Ý”t›s +); + +226 + `fܗch + ( +$´Ý”t›s + +as + +$key + => +$v®ue +) + +228 +$¬gs +[] = "-D$key=$value"; + +232 +$¬gs +[] = '-f'; + +233 +$¬gs +[] = + `»®·th +( + `dœÇme +( +__FILE__ +). +DIRECTORY_SEPARATOR +.'..'.DIRECTORY_SEPARATOR.'vendor'.DIRECTORY_SEPARATOR.'propel-generator'.DIRECTORY_SEPARATOR.'build.xml'); + +236 ià( +DIRECTORY_SEPARATOR + !ð'\\' && ( + `funùiÚ_exi¡s +('posix_i§‰y'è&& @ + `posix_i§‰y +( +STDOUT +))) + +238 +$¬gs +[] = '-logger'; + +239 +$¬gs +[] = 'phing.listener.AnsiColorLogger'; + +243 +$¬gs +[] = '-listener'; + +244 +$¬gs +[] = 'sfPhingListener'; + +247 + `fܗch + ( +$this +-> +add™iÚ®PhšgArgs + +as + +$¬g +) + +249 ià( + `š_¬¿y +( +$¬g +, + `¬¿y +('verbose', 'debug'))) + +251 +$bufãrPhšgOuut + = +çl£ +; + +254 +$¬gs +[] = '-'. +$¬g +; + +257 +$¬gs +[] = +$skName +; + +260 +$¬gs + = +$this +-> +di¥©ch” +-> + `fž‹r +( +Ãw + + `sfEv’t +($this, '´Ý–.fž‹r_phšg_¬gs'), $¬gs)-> + `g‘R‘uºV®ue +(); + +262 +»quœe_Úû + + `dœÇme +( +__FILE__ +).'/sfPhing.class.php'; + +265 +Phšg +:: + `£tOuutSŒ—m +( +Ãw + + `OuutSŒ—m +( + `fݒ +('php://output', 'w'))); + +266 +Phšg +:: + `¡¬tup +(); + +267 +Phšg +:: + `£tPrݔty +('phšg.home', + `g‘’v +('PHING_HOME')); + +269 +$this +-> + `logSeùiÚ +('´Ý–', 'Rušg "'. +$skName +.'"…hingask'); + +271 ià( +$bufãrPhšgOuut +) + +273 + `ob_¡¬t +(); + +276 +$m + = +Ãw + + `sfPhšg +(); + +277 +$m +-> + `execu‹ +( +$¬gs +); + +278 +$m +-> + `runBužd +(); + +280 ià( +$bufãrPhšgOuut +) + +282 + `ob_’d_þ—n +(); + +285 + `chdœ +( +sfCÚfig +:: + `g‘ +('sf_root_dir')); + +288 +$»t + = +Œue +; + +289 ià( +sfPhšgLi¡’” +:: + `hasE¼Üs +()) + +291 +$mes§ges + = + `¬¿y +('Some…roblems occurred whenƒxecutingheask:'); + +293 + `fܗch + ( +sfPhšgLi¡’” +:: + `g‘Exû±iÚs +(è +as + +$exû±iÚ +) + +295 +$mes§ges +[] = ''; + +296 +$mes§ges +[] = + `´eg_»¶aû +('/^.*bužd\-´Ý–\.xml/', 'bužd-´Ý–.xml', +$exû±iÚ +-> + `g‘Mes§ge +()); + +297 +$mes§ges +[] = ''; + +300 ià( + `couÁ +( +sfPhšgLi¡’” +:: + `g‘E¼Üs +())) + +302 +$mes§ges +[] = 'Ifheƒxception message is‚ot clearƒnough,„eadhe output ofheask for'; + +303 +$mes§ges +[] = 'more information'; + +306 +$this +-> + `logBlock +( +$mes§ges +, 'ERROR_LARGE'); + +308 +$»t + = +çl£ +; + +311  +$»t +; + +312 + } +} + +314 +´Ùeùed + +funùiÚ + + $g‘PhšgPrݔt›sFÜCÚÃùiÚ +( +$d©aba£Mªag” +, +$cÚÃùiÚ +) + +316 +$d©aba£ + = +$d©aba£Mªag” +-> + `g‘D©aba£ +( +$cÚÃùiÚ +); + +318  + `¬¿y +( + +319 '´Ý–.d©aba£' => +$d©aba£ +-> + `g‘P¬am‘” +('phptype'), + +320 '´Ý–.d©aba£.driv”' => +$d©aba£ +-> + `g‘P¬am‘” +('phptype'), + +321 '´Ý–.d©aba£.u¾' => +$d©aba£ +-> + `g‘P¬am‘” +('dsn'), + +322 '´Ý–.d©aba£.u£r' => +$d©aba£ +-> + `g‘P¬am‘” +('username'), + +323 '´Ý–.d©aba£.·sswÜd' => +$d©aba£ +-> + `g‘P¬am‘” +('password'), + +324 '´Ý–.d©aba£.’codšg' => +$d©aba£ +-> + `g‘P¬am‘” +('encoding'), + +326 + } +} + +328 +´Ùeùed + +funùiÚ + + $g‘Prݔt›s +( +$fže +) + +330 +$´Ý”t›s + = + `¬¿y +(); + +332 ià( +çl£ + ==ð +$lšes + = @ + `fže +( +$fže +)) + +334 +throw + +Ãw + + `sfCommªdExû±iÚ +('Unableo…arse contents ofhe "sqldb.map" file.'); + +337 + `fܗch + ( +$lšes + +as + +$lše +) + +339 +$lše + = + `Œim +($line); + +341 ià('' =ð +$lše +) + +346 ià( + `š_¬¿y +( +$lše +[0], + `¬¿y +('#', ';'))) + +351 +$pos + = + `¡½os +( +$lše +, '='); + +352 +$´Ý”t›s +[ + `Œim +( + `sub¡r +( +$lše +, 0, +$pos +))] =rim(substr($line, $pos + 1)); + +355  +$´Ý”t›s +; + +356 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/sfPropelBuildAllLoadTask.class.php + +1 + `addO±iÚs +( + `¬¿y +( + +29 +Ãw + + `sfCommªdO±iÚ +('­¶iÿtiÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL +, 'Th­¶iÿtiڂame', +Œue +), + +30 +Ãw + + `sfCommªdO±iÚ +('’v', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Theƒnvironment', 'dev'), + +31 +Ãw + + `sfCommªdO±iÚ +('cÚÃùiÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The connection‚ame', 'propel'), + +32 +Ãw + + `sfCommªdO±iÚ +('no-cÚfœm©iÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Do‚ot‡sk for confirmation'), + +33 +Ãw + + `sfCommªdO±iÚ +('sk-fÜms', 'F', +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Skip generating forms'), + +34 +Ãw + + `sfCommªdO±iÚ +('þas£s-Úly', 'C', +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Do‚ot initializehe database'), + +35 +Ãw + + `sfCommªdO±iÚ +('phšg-¬g', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED + | sfCommªdO±iÚ:: +IS_ARRAY +, 'Arbitrary…hing‡rgument'), + +36 +Ãw + + `sfCommªdO±iÚ +('­³nd', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Don\'t delete current data inhe database'), + +37 +Ãw + + `sfCommªdO±iÚ +('dœ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED + | sfCommªdO±iÚ:: +IS_ARRAY +, 'The directorieso†ook for fixtures'), + +40 +$this +-> +Çme¥aû + = 'propel'; + +41 +$this +-> +Çme + = 'build-all-load'; + +42 +$this +-> +br›fDesütiÚ + = 'Generates Propel model‡nd form classes, SQL, initializeshe database,‡nd†oads data'; + +44 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +45 +The + [ +´Ý– +: +bužd +- +®l +- +lßd +| +INFO +] +sk + +is + +a + +shÜtcut +  +two + +Ùh” + +sks +: + +47 [./ +symfÚy + +´Ý– +: +bužd +- +®l +- +lßd +| +INFO +] + +49 +The + +sk + +is + +equiv®’t + +to +: + +51 [./ +symfÚy + +´Ý– +: +bužd +- +®l +| +INFO +] + +52 [./ +symfÚy + +´Ý– +: +d©a +- +lßd +| +INFO +] + +54 +S“ + +tho£ + +sks +' help…ages for more information. + +56 +To + +by·ss + +the + +cÚfœm©iÚ +, +you + +ÿn + +·ss +h[ +no +-cÚfœm©iÚ| +COMMENT +] + +57 +ÝtiÚ +: + +59 [./ +symfÚy + +´Ý– +: +buž +- +®l +- +lßd + -- +no +- +cÚfœm©iÚ +| +INFO +] + +60 +EOF +; + +66 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +69 +$d©aba£Mªag” + = +Ãw + + `sfD©aba£Mªag” +( +$this +-> +cÚfigu¿tiÚ +); + +71 +$buždAÎ + = +Ãw + + `sfPrݖBuždAÎTask +( +$this +-> +di¥©ch” +, $this-> +fÜm©‹r +); + +72 +$buždAÎ +-> + `£tCommªdAµliÿtiÚ +( +$this +-> +commªdAµliÿtiÚ +); + +73 +$buždAÎ +-> + `£tCÚfigu¿tiÚ +( +$this +-> +cÚfigu¿tiÚ +); + +74 +$»t + = +$buždAÎ +-> + `run +( + `¬¿y +(),‡rray( + +75 'phšg-¬g' => +$ÝtiÚs +['phing-arg'], + +76 'sk-fÜms' => +$ÝtiÚs +['skip-forms'], + +77 'þas£s-Úly' => +$ÝtiÚs +['classes-only'], + +78 'no-cÚfœm©iÚ' => +$ÝtiÚs +['no-confirmation'], + +81 ià(0 =ð +$»t +) + +83 +$lßdD©a + = +Ãw + + `sfPrݖD©aLßdTask +( +$this +-> +di¥©ch” +, $this-> +fÜm©‹r +); + +84 +$lßdD©a +-> + `£tCommªdAµliÿtiÚ +( +$this +-> +commªdAµliÿtiÚ +); + +85 +$lßdD©a +-> + `£tCÚfigu¿tiÚ +( +$this +-> +cÚfigu¿tiÚ +); + +86 +$lßdD©a +-> + `run +( +$ÝtiÚs +['dœ'], + `¬¿y +( + +87 '­³nd' => +$ÝtiÚs +['append'], + +91 +$this +-> + `þ—nup +(); + +93  +$»t +; + +94 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/sfPropelBuildAllTask.class.php + +1 + `addO±iÚs +( + `¬¿y +( + +29 +Ãw + + `sfCommªdO±iÚ +('­¶iÿtiÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL +, 'Th­¶iÿtiڂame', +Œue +), + +30 +Ãw + + `sfCommªdO±iÚ +('’v', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Theƒnvironment', 'dev'), + +31 +Ãw + + `sfCommªdO±iÚ +('cÚÃùiÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The connection‚ame', 'propel'), + +32 +Ãw + + `sfCommªdO±iÚ +('no-cÚfœm©iÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Do‚ot‡sk for confirmation'), + +33 +Ãw + + `sfCommªdO±iÚ +('sk-fÜms', 'F', +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Skip generating forms'), + +34 +Ãw + + `sfCommªdO±iÚ +('þas£s-Úly', 'C', +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Do‚ot initializehe database'), + +35 +Ãw + + `sfCommªdO±iÚ +('phšg-¬g', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED + | sfCommªdO±iÚ:: +IS_ARRAY +, 'Arbitrary…hing‡rgument'), + +38 +$this +-> +Çme¥aû + = 'propel'; + +39 +$this +-> +Çme + = 'build-all'; + +40 +$this +-> +br›fDesütiÚ + = 'Generates Propel model‡nd form classes, SQL‡nd initializeshe database'; + +42 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +43 +The + [ +´Ý– +: +bužd +- +®l +| +INFO +] +sk + +is + +a + +shÜtcut +  +five + +Ùh” + +sks +: + +45 [./ +symfÚy + +´Ý– +: +bužd +- +®l +| +INFO +] + +47 +The + +sk + +is + +equiv®’t + +to +: + +49 [./ +symfÚy + +´Ý– +: +bužd +- +mod– +| +INFO +] + +50 [./ +symfÚy + +´Ý– +: +bužd +- +fÜms +| +INFO +] + +51 [./ +symfÚy + +´Ý– +: +bužd +- +fž‹rs +| +INFO +] + +52 [./ +symfÚy + +´Ý– +: +bužd +- +sql +| +INFO +] + +53 [./ +symfÚy + +´Ý– +: +𣹠+- +sql +| +INFO +] + +55 +S“ + +tho£ + +sks +' help…ages for more information. + +57 +To + +by·ss + +cÚfœm©iÚ + +´om±s +, +you + +ÿn + +·ss + +the + [ +no +-cÚfœm©iÚ| +COMMENT +] +ÝtiÚ +: + +59 [./ +symfÚy + +´Ý– +: +buž +- +®l + -- +no +- +cÚfœm©iÚ +| +INFO +] + +61 +To + +bužd + +®l + +þas£s + +but + +sk + +š™Ÿlizšg + +the + +d©aba£ +, +u£ +h[þas£s- +Úly +| +COMMENT +] + +62 +ÝtiÚ +: + +64 [./ +symfÚy + +´Ý– +: +bužd +- +®l + -- +þas£s +- +Úly +| +INFO +] + +65 +EOF +; + +71 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +73 +$ba£PhšgO±iÚs + = + `¬¿y +(); + +74 + `fܗch + ( +$ÝtiÚs +['phšg-¬g'] +as + +$¬g +) + +76 +$ba£PhšgO±iÚs +[] = '--phšg-¬g='. + `esÿ³sh–Ïrg +( +$¬g +); + +79 +$buždMod– + = +Ãw + + `sfPrݖBuždMod–Task +( +$this +-> +di¥©ch” +, $this-> +fÜm©‹r +); + +80 +$buždMod– +-> + `£tCommªdAµliÿtiÚ +( +$this +-> +commªdAµliÿtiÚ +); + +81 +$buždMod– +-> + `£tCÚfigu¿tiÚ +( +$this +-> +cÚfigu¿tiÚ +); + +82 +$»t + = +$buždMod– +-> + `run +( + `¬¿y +(),‡rray( + +83 'phšg-¬g' => +$ÝtiÚs +['phing-arg'], + +86 ià( +$»t +) + +88  +$»t +; + +91 ià(! +$ÝtiÚs +['skip-forms']) + +93 +$this +-> + `logBlock +( + `¬¿y +( + +100 +$buždFÜms + = +Ãw + + `sfPrݖBuždFÜmsTask +( +$this +-> +di¥©ch” +, $this-> +fÜm©‹r +); + +101 +$buždFÜms +-> + `£tCommªdAµliÿtiÚ +( +$this +-> +commªdAµliÿtiÚ +); + +102 +$buždFÜms +-> + `£tCÚfigu¿tiÚ +( +$this +-> +cÚfigu¿tiÚ +); + +103 +$»t + = +$buždFÜms +-> + `run +(); + +105 ià( +$»t +) + +107  +$»t +; + +110 +$buždFž‹rs + = +Ãw + + `sfPrݖBuždFž‹rsTask +( +$this +-> +di¥©ch” +, $this-> +fÜm©‹r +); + +111 +$buždFž‹rs +-> + `£tCommªdAµliÿtiÚ +( +$this +-> +commªdAµliÿtiÚ +); + +112 +$buždFž‹rs +-> + `£tCÚfigu¿tiÚ +( +$this +-> +cÚfigu¿tiÚ +); + +113 +$»t + = +$buždFž‹rs +-> + `run +(); + +115 ià( +$»t +) + +117  +$»t +; + +121 ià(! +$ÝtiÚs +['classes-only']) + +123 +$buždSql + = +Ãw + + `sfPrݖBuždSqlTask +( +$this +-> +di¥©ch” +, $this-> +fÜm©‹r +); + +124 +$buždSql +-> + `£tCommªdAµliÿtiÚ +( +$this +-> +commªdAµliÿtiÚ +); + +125 +$buždSql +-> + `£tCÚfigu¿tiÚ +( +$this +-> +cÚfigu¿tiÚ +); + +126 +$»t + = +$buždSql +-> + `run +( + `¬¿y +(),‡rray( + +127 'phšg-¬g' => +$ÝtiÚs +['phing-arg'], + +130 ià( +$»t +) + +132  +$»t +; + +135 +$š£¹Sql + = +Ãw + + `sfPrݖIn£¹SqlTask +( +$this +-> +di¥©ch” +, $this-> +fÜm©‹r +); + +136 +$š£¹Sql +-> + `£tCommªdAµliÿtiÚ +( +$this +-> +commªdAµliÿtiÚ +); + +137 +$š£¹Sql +-> + `£tCÚfigu¿tiÚ +( +$this +-> +cÚfigu¿tiÚ +); + +138 +$»t + = +$š£¹Sql +-> + `run +( + `¬¿y +(),‡rray( + +139 'phšg-¬g' => +$ÝtiÚs +['phing-arg'], + +140 'cÚÃùiÚ' => +$ÝtiÚs +['connection'], + +141 'no-cÚfœm©iÚ' => +$ÝtiÚs +['no-confirmation'], + +144 ià( +$»t +) + +146  +$»t +; + +150 +$this +-> + `»lßdAutÞßd +(); + +151 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/sfPropelBuildFiltersTask.class.php + +1 + `addO±iÚs +( + `¬¿y +( + +29 +Ãw + + `sfCommªdO±iÚ +('cÚÃùiÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The connection‚ame', 'propel'), + +30 +Ãw + + `sfCommªdO±iÚ +('mod–-dœ-Çme', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The model dir‚ame', 'model'), + +31 +Ãw + + `sfCommªdO±iÚ +('fž‹r-dœ-Çme', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The filter form dir‚ame', 'filter'), + +32 +Ãw + + `sfCommªdO±iÚ +('­¶iÿtiÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL +, 'Th­¶iÿtiڂame', +Œue +), + +33 +Ãw + + `sfCommªdO±iÚ +('g’”©Ü-þass', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The generator class', 'sfPropelFormFilterGenerator'), + +36 +$this +-> +Çme¥aû + = 'propel'; + +37 +$this +-> +Çme + = 'build-filters'; + +38 +$this +-> +br›fDesütiÚ + = 'Creates filter form classes forhe current model'; + +40 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +41 +The + [ +´Ý– +: +bužd +- +fž‹rs +| +INFO +] +sk + +ü—‹s + +fž‹r + +fÜm + +þas£s + +äom + +the + +schema +: + +43 [./ +symfÚy + +´Ý– +: +bužd +- +fž‹rs +| +INFO +] + +45 +The + +sk + +»ad + +the + +schema + +šfÜm©iÚ + +š + [ +cÚfig + + +63 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + =‡rray()) + +65 +$this +-> + `logSeùiÚ +('propel', 'generating filter form classes'); + +67 +$g’”©ÜMªag” + = +Ãw + + `sfG’”©ÜMªag” +( +$this +-> +cÚfigu¿tiÚ +); + +68 +$g’”©ÜMªag” +-> + `g’”©e +( +$ÝtiÚs +['g’”©Ü-þass'], + `¬¿y +( + +69 'cÚÃùiÚ' => +$ÝtiÚs +['connection'], + +70 'mod–_dœ_Çme' => +$ÝtiÚs +['model-dir-name'], + +71 'fž‹r_dœ_Çme' => +$ÝtiÚs +['filter-dir-name'], + +74 +$´Ý”t›s + = + `·r£_ši_fže +( +sfCÚfig +:: + `g‘ +('sf_cÚfig_dœ').'/´Ý”t›s.ši', +Œue +); + +76 +$cÚ¡ªts + = + `¬¿y +( + +77 'PROJECT_NAME' => + `is£t +( +$´Ý”t›s +['symfony']['name']) ? $properties['symfony']['name'] : 'symfony', + +78 'AUTHOR_NAME' => + `is£t +( +$´Ý”t›s +['symfony']['author']) ? $properties['symfony']['author'] : 'Your‚ame here' + +82 +$fšd” + = +sfFšd” +:: + `ty³ +('fže')-> + `Çme +('*.php'); + +83 +$this +-> + `g‘Fžesy¡em +()-> + `»¶aûTok’s +( +$fšd” +-> + `š +( +sfCÚfig +:: + `g‘ +('sf_lib_dœ').'/fž‹r/'), '##', '##', +$cÚ¡ªts +); + +85 +$this +-> + `»lßdAutÞßd +(); + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/sfPropelBuildFormsTask.class.php + +1 + `addO±iÚs +( + `¬¿y +( + +29 +Ãw + + `sfCommªdO±iÚ +('cÚÃùiÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The connection‚ame', 'propel'), + +30 +Ãw + + `sfCommªdO±iÚ +('mod–-dœ-Çme', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The model dir‚ame', 'model'), + +31 +Ãw + + `sfCommªdO±iÚ +('fÜm-dœ-Çme', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The form dir‚ame', 'form'), + +32 +Ãw + + `sfCommªdO±iÚ +('­¶iÿtiÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL +, 'Th­¶iÿtiڂame', +Œue +), + +33 +Ãw + + `sfCommªdO±iÚ +('g’”©Ü-þass', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The generator class', 'sfPropelFormGenerator'), + +36 +$this +-> +Çme¥aû + = 'propel'; + +37 +$this +-> +Çme + = 'build-forms'; + +38 +$this +-> +br›fDesütiÚ + = 'Creates form classes forhe current model'; + +40 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +41 +The + [ +´Ý– +: +bužd +- +fÜms +| +INFO +] +sk + +ü—‹s + +fÜm + +þas£s + +äom + +the + +schema +: + +43 [./ +symfÚy + +´Ý– +: +bužd +- +fÜms +| +INFO +] + +45 +The + +sk + +»ad + +the + +schema + +šfÜm©iÚ + +š + [ +cÚfig + + +63 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + =‡rray()) + +65 +$this +-> + `logSeùiÚ +('propel', 'generating form classes'); + +67 +$g’”©ÜMªag” + = +Ãw + + `sfG’”©ÜMªag” +( +$this +-> +cÚfigu¿tiÚ +); + +68 +$g’”©ÜMªag” +-> + `g’”©e +( +$ÝtiÚs +['g’”©Ü-þass'], + `¬¿y +( + +69 'cÚÃùiÚ' => +$ÝtiÚs +['connection'], + +70 'mod–_dœ_Çme' => +$ÝtiÚs +['model-dir-name'], + +71 'fÜm_dœ_Çme' => +$ÝtiÚs +['form-dir-name'], + +74 +$´Ý”t›s + = + `·r£_ši_fže +( +sfCÚfig +:: + `g‘ +('sf_cÚfig_dœ').'/´Ý”t›s.ši', +Œue +); + +76 +$cÚ¡ªts + = + `¬¿y +( + +77 'PROJECT_NAME' => + `is£t +( +$´Ý”t›s +['symfony']['name']) ? $properties['symfony']['name'] : 'symfony', + +78 'AUTHOR_NAME' => + `is£t +( +$´Ý”t›s +['symfony']['author']) ? $properties['symfony']['author'] : 'Your‚ame here' + +82 +$fšd” + = +sfFšd” +:: + `ty³ +('fže')-> + `Çme +('*.php'); + +83 +$this +-> + `g‘Fžesy¡em +()-> + `»¶aûTok’s +( +$fšd” +-> + `š +( +sfCÚfig +:: + `g‘ +('sf_lib_dœ').'/fÜm/'), '##', '##', +$cÚ¡ªts +); + +86 ià(! + `þass_exi¡s +('BaseForm')) + +88 +$fže + = +sfCÚfig +:: + `g‘ +('sf_lib_dœ').'/'. +$ÝtiÚs +['form-dir-name'].'/BaseForm.class.php'; + +89 +$this +-> + `g‘Fžesy¡em +()-> + `cÝy +( +sfCÚfig +:: + `g‘ +('sf_symfÚy_lib_dœ').'/sk/g’”©Ü/sk–‘Ú/´ojeù/lib/fÜm/Ba£FÜm.þass.php', +$fže +); + +90 +$this +-> + `g‘Fžesy¡em +()-> + `»¶aûTok’s +( +$fže +, '##', '##', +$cÚ¡ªts +); + +93 +$this +-> + `»lßdAutÞßd +(); + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/sfPropelBuildModelTask.class.php + +1 + `addO±iÚs +( + `¬¿y +( + +29 +Ãw + + `sfCommªdO±iÚ +('phšg-¬g', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED + | sfCommªdO±iÚ:: +IS_ARRAY +, 'Arbitrary…hing‡rgument'), + +32 +$this +-> +Çme¥aû + = 'propel'; + +33 +$this +-> +Çme + = 'build-model'; + +34 +$this +-> +br›fDesütiÚ + = 'Creates classes forhe current model'; + +36 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +37 +The + [ +´Ý– +: +bužd +- +mod– +| +INFO +] +sk + +ü—‹s + mod– +þas£s + +äom + +the + +schema +: + +39 [./ +symfÚy + +´Ý– +: +bužd +- +mod– +| +INFO +] + +41 +The + +sk + +»ad + +the + +schema + +šfÜm©iÚ + +š + [ +cÚfig + + +57 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + =‡rray()) + +59 +$this +-> + `schemaToXML +( +£lf +:: +DO_NOT_CHECK_SCHEMA +, 'generated-'); + +60 +$this +-> + `cÝyXmlSchemaFromPlugšs +('generated-'); + +61 +$»t + = +$this +-> + `ÿÎPhšg +('om', +£lf +:: +CHECK_SCHEMA +); + +62 +$this +-> + `þ—nup +(); + +64 +$this +-> + `»lßdAutÞßd +(); + +66  ! +$»t +; + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/sfPropelBuildSchemaTask.class.php + +1 + `addO±iÚs +( + `¬¿y +( + +29 +Ãw + + `sfCommªdO±iÚ +('­¶iÿtiÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL +, 'Th­¶iÿtiڂame', +Œue +), + +30 +Ãw + + `sfCommªdO±iÚ +('’v', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Theƒnvironment', 'cli'), + +31 +Ãw + + `sfCommªdO±iÚ +('cÚÃùiÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The connection‚ame',‚ull), + +32 +Ãw + + `sfCommªdO±iÚ +('xml', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Creates‡n XML schema instead of‡ YML one'), + +33 +Ãw + + `sfCommªdO±iÚ +('phšg-¬g', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED + | sfCommªdO±iÚ:: +IS_ARRAY +, 'Arbitrary…hing‡rgument'), + +36 +$this +-> +Çme¥aû + = 'propel'; + +37 +$this +-> +Çme + = 'build-schema'; + +38 +$this +-> +br›fDesütiÚ + = 'Creates‡ schema from‡nƒxisting database'; + +40 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +41 +The + [ +´Ý– +: +bužd +- +schema +| +INFO +] +sk + +šŒo¥eùs + +a + +d©aba£ + +to + +ü—‹ +‡ schema: + +43 [./ +symfÚy + +´Ý– +: +bužd +- +schema +| +INFO +] + +45 +By + , +the + +sk + +ü—‹s + +a + +YML + +fže +, +but + +you + +ÿn + +®so + +ü—‹ +‡ +XML + file: + +47 [./ +symfÚy + -- +xml + +´Ý– +: +bužd +- +schema +| +INFO +] + +49 +The + +XML + +fÜm© + +cڏšs + +mÜe + +šfÜm©iÚ + +thª + +the + +YML + +Úe +. + +50 +EOF +; + +56 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +58 +$d©aba£Mªag” + = +Ãw + + `sfD©aba£Mªag” +( +$this +-> +cÚfigu¿tiÚ +); + +60 + `fܗch + ( +$d©aba£Mªag” +-> + `g‘Names +(è +as + +$cÚÃùiÚ +) + +62 ià( +nuÎ + !=ð +$ÝtiÚs +['cÚÃùiÚ'] && $ÝtiÚs['cÚÃùiÚ'] !ð +$cÚÃùiÚ +) + +67 +$this +-> + `»v”£D©aba£ +( +$d©aba£Mªag” +, +$cÚÃùiÚ +, +$ÝtiÚs +); + +69 + } +} + +71 +´Ùeùed + +funùiÚ + + $»v”£D©aba£ +( +$d©aba£Mªag” +, +$cÚÃùiÚ +, +$ÝtiÚs +) + +73 +$Çme + = '´Ý–' =ð +$cÚÃùiÚ + ? 'schema' : $connection.'-schema'; + +75 +$´Ý”t›s + = +$this +-> + `g‘PhšgPrݔt›sFÜCÚÃùiÚ +( +$d©aba£Mªag” +, +$cÚÃùiÚ +); + +76 +$´Ý”t›s +['´Ý–.deçuÉ.schema.ba£Çme'] = +$Çme +; + +78 +$»t + = +$this +-> + `ÿÎPhšg +('»v”£', +£lf +:: +DO_NOT_CHECK_SCHEMA +, +$´Ý”t›s +); + +80 ià(! +$»t +) + +85 +$xmlSchemaP©h + = +sfCÚfig +:: + `g‘ +('sf_cÚfig_dœ').'/'. +$Çme +.'.xml'; + +86 +$ymlSchemaP©h + = +sfCÚfig +:: + `g‘ +('sf_cÚfig_dœ').'/'. +$Çme +.'.yml'; + +89 ià( + `fže_exi¡s +( +$xmlSchemaP©h +)) + +91 +$schema + = + `fže_g‘_cڋÁs +( +$xmlSchemaP©h +); + +92 +$schema + = + `´eg_»¶aû +('/ + `schemaToYML +( +£lf +:: +DO_NOT_CHECK_SCHEMA +, ''); + +99 +$this +-> + `þ—nup +(); + +101 ià( + `fže_exi¡s +( +$xmlSchemaP©h +)) + +103 + `uƚk +( +$xmlSchemaP©h +); + +108 ià( + `fže_exi¡s +( +$ymlSchemaP©h +)) + +110 + `uƚk +( +$ymlSchemaP©h +); + +113 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/sfPropelBuildSqlTask.class.php + +1 + `addO±iÚs +( + `¬¿y +( + +29 +Ãw + + `sfCommªdO±iÚ +('phšg-¬g', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED + | sfCommªdO±iÚ:: +IS_ARRAY +, 'Arbitrary…hing‡rgument'), + +32 +$this +-> +Çme¥aû + = 'propel'; + +33 +$this +-> +Çme + = 'build-sql'; + +34 +$this +-> +br›fDesütiÚ + = 'Creates SQL forhe current model'; + +36 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +37 +The + [ +´Ý– +: +bužd +- +sql +| +INFO +] +sk + +ü—‹s + +SQL + +¡©em’ts +  +bË + +ü—tiÚ +: + +39 [./ +symfÚy + +´Ý– +: +bužd +- +sql +| +INFO +] + +41 +The + +g’”©ed + +SQL + +is + +Ýtimized +  +the + +d©aba£ + +cÚfigu»d + +š + [ +cÚfig +/ +´Ý– +. +ši +| +COMMENT +]: + +43 [ +´Ý– +. +d©aba£ + = +mysql +| +INFO +] + +44 +EOF +; + +50 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +52 +$this +-> + `schemaToXML +( +£lf +:: +DO_NOT_CHECK_SCHEMA +, 'generated-'); + +53 +$this +-> + `cÝyXmlSchemaFromPlugšs +('generated-'); + +54 +$»t + = +$this +-> + `ÿÎPhšg +('sql', +£lf +:: +CHECK_SCHEMA +); + +55 +$this +-> + `þ—nup +(); + +57  ! +$»t +; + +58 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/sfPropelBuildTask.class.php + +1 + `addO±iÚs +( + `¬¿y +( + +44 +Ãw + + `sfCommªdO±iÚ +('­¶iÿtiÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL +, 'Th­¶iÿtiڂame', +Œue +), + +45 +Ãw + + `sfCommªdO±iÚ +('’v', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Theƒnvironment', 'dev'), + +46 +Ãw + + `sfCommªdO±iÚ +('no-cÚfœm©iÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Whethero force dropping ofhe database'), + +47 +Ãw + + `sfCommªdO±iÚ +('®l', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Buildƒverything‡nd„esethe database'), + +48 +Ãw + + `sfCommªdO±iÚ +('®l-þas£s', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Build‡ll classes'), + +49 +Ãw + + `sfCommªdO±iÚ +('mod–', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Build model classes'), + +50 +Ãw + + `sfCommªdO±iÚ +('fÜms', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Build form classes'), + +51 +Ãw + + `sfCommªdO±iÚ +('fž‹rs', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Build filter classes'), + +52 +Ãw + + `sfCommªdO±iÚ +('sql', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Build SQL'), + +53 +Ãw + + `sfCommªdO±iÚ +('db', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Drop, create,‡nd insert SQL'), + +54 +Ãw + + `sfCommªdO±iÚ +('ªd-lßd', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL + | sfCommªdO±iÚ:: +IS_ARRAY +, 'Load fixture data'), + +55 +Ãw + + `sfCommªdO±iÚ +('ªd-­³nd', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL + | sfCommªdO±iÚ:: +IS_ARRAY +, 'Append fixture data'), + +58 +$this +-> +Çme¥aû + = 'propel'; + +59 +$this +-> +Çme + = 'build'; + +61 +$this +-> +br›fDesütiÚ + = 'Generate code based on your schema'; + +63 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +64 +The + [ +´Ý– +: +bužd +| +INFO +] +sk + +g’”©es + +code + +ba£d + +Ú + +your + +schema +: + +66 [./ +symfÚy + +´Ý– +: +bužd +| +INFO +] + +68 +You + +mu¡ + +¥ecify + +wh© + +you + +would + +like + +bužt +. +FÜ + +š¡ªû +, you +wªt + +mod– + + +69 +ªd + +fÜm + +þas£s + +bužt + +u£ + +the + [-- +mod– +| +COMMENT +]‡nd [-- +fÜms +|COMMENT] +ÝtiÚs +: + +71 [./ +symfÚy + +´Ý– +: +bužd + -- +mod– + -- +fÜms +| +INFO +] + +73 +You + +ÿn + +u£ + +the + [-- +®l +| +COMMENT +] +shÜtcut + +ÝtiÚ +  +you + +would + +like +‡Î +þas£s + +ªd + + +74 +SQL + +fžes + +g’”©ed + +ªd + +the + +d©aba£ + +»bužt +: + +76 [./ +symfÚy + +´Ý– +: +bužd + -- +®l +| +INFO +] + +78 +This + +is + +equiv®’t + +to + +rušg + +the + +fÞlowšg + +sks +: + +80 [./ +symfÚy + +´Ý– +: +bužd +- +mod– +| +INFO +] + +81 [./ +symfÚy + +´Ý– +: +bužd +- +fÜms +| +INFO +] + +82 [./ +symfÚy + +´Ý– +: +bužd +- +fž‹rs +| +INFO +] + +83 [./ +symfÚy + +´Ý– +: +bužd +- +sql +| +INFO +] + +84 [./ +symfÚy + +´Ý– +: +𣹠+- +sql +| +INFO +] + +86 +You + +ÿn + +®so + +g’”©e + +Úly + +þass + +fžes + +by + +usšg + +the + [-- +®l +- +þas£s +| +COMMENT +] +shÜtcut + + +87 +ÝtiÚ +. +Wh’ + +this + o±iÚ +is + +u£d + +®Úe +, +the + +d©aba£ + +wžl + +nÙ + +be + +modif›d +. + +89 [./ +symfÚy + +´Ý– +: +bužd + -- +®l +- +þas£s +| +INFO +] + +91 +The + [-- +ªd +- +lßd +| +COMMENT +] +ÝtiÚ + +wžl +†ßd +d©a + +äom + +the + +´ojeù +‡nd +¶ugš + + +92 [ +d©a +/ +fixtu»s +/| +COMMENT +] +dœeùܛs +: + +94 [./ +symfÚy + +´Ý– +: +bužd + -- +db + -- +ªd +- +lßd +| +INFO +] + +96 +To + +¥ecify + +wh© + +fixtu»s + +¬e + +lßded +, +add + +a + +·¿m‘” + +to + +the + [-- +ªd +- +lßd +| +COMMENT +] +ÝtiÚ +: + +98 [./ +symfÚy + +´Ý– +: +bužd + -- +®l + -- +ªd +- +lßd +="d©a/fixtu»s/dev/"| +INFO +] + +100 +To + +­³nd + +fixtu» + +d©a + +w™hout + +”asšg + +ªy + +»cÜds + +äom + +the + +d©aba£ +, +šþude + + +101 +the + [-- +ªd +- +­³nd +| +COMMENT +] +ÝtiÚ +: + +103 [./ +symfÚy + +´Ý– +: +bužd + -- +®l + -- +ªd +- +­³nd +| +INFO +] + +104 +EOF +; + +110 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +112 ià(! +$mode + = +$this +-> + `ÿlcuϋMode +( +$ÝtiÚs +)) + +114 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +("You mu¡ inþudÚÜ mܐoàthfÞlowšg bužd o±iÚs:\n--%s\n\nS“hi sk' h–°·gfÜ mܐšfÜm©iÚ:\n\À…h°symfÚy h–°´Ý–:bužd", + `još +(', --', + `¬¿y_keys +( +$this +-> + `g‘BuždO±iÚs +())))); + +117 ià( +£lf +:: +BUILD_MODEL + =ð(£lf::BUILD_MODEL & +$mode +)) + +119 +$sk + = +Ãw + + `sfPrݖBuždMod–Task +( +$this +-> +di¥©ch” +, $this-> +fÜm©‹r +); + +120 +$sk +-> + `£tCommªdAµliÿtiÚ +( +$this +-> +commªdAµliÿtiÚ +); + +121 +$sk +-> + `£tCÚfigu¿tiÚ +( +$this +-> +cÚfigu¿tiÚ +); + +122 +$»t + = +$sk +-> + `run +(); + +124 ià( +$»t +) + +126  +$»t +; + +130 ià( +£lf +:: +BUILD_FORMS + =ð(£lf::BUILD_FORMS & +$mode +)) + +132 +$sk + = +Ãw + + `sfPrݖBuždFÜmsTask +( +$this +-> +di¥©ch” +, $this-> +fÜm©‹r +); + +133 +$sk +-> + `£tCommªdAµliÿtiÚ +( +$this +-> +commªdAµliÿtiÚ +); + +134 +$sk +-> + `£tCÚfigu¿tiÚ +( +$this +-> +cÚfigu¿tiÚ +); + +135 +$»t + = +$sk +-> + `run +(); + +137 ià( +$»t +) + +139  +$»t +; + +143 ià( +£lf +:: +BUILD_FILTERS + =ð(£lf::BUILD_FILTERS & +$mode +)) + +145 +$sk + = +Ãw + + `sfPrݖBuždFž‹rsTask +( +$this +-> +di¥©ch” +, $this-> +fÜm©‹r +); + +146 +$sk +-> + `£tCommªdAµliÿtiÚ +( +$this +-> +commªdAµliÿtiÚ +); + +147 +$sk +-> + `£tCÚfigu¿tiÚ +( +$this +-> +cÚfigu¿tiÚ +); + +148 +$»t + = +$sk +-> + `run +(); + +150 ià( +$»t +) + +152  +$»t +; + +156 ià( +£lf +:: +BUILD_SQL + =ð(£lf::BUILD_SQL & +$mode +)) + +158 +$sk + = +Ãw + + `sfPrݖBuždSqlTask +( +$this +-> +di¥©ch” +, $this-> +fÜm©‹r +); + +159 +$sk +-> + `£tCommªdAµliÿtiÚ +( +$this +-> +commªdAµliÿtiÚ +); + +160 +$sk +-> + `£tCÚfigu¿tiÚ +( +$this +-> +cÚfigu¿tiÚ +); + +161 +$»t + = +$sk +-> + `run +(); + +163 ià( +$»t +) + +165  +$»t +; + +169 ià( +£lf +:: +BUILD_DB + =ð(£lf::BUILD_DB & +$mode +)) + +171 +$sk + = +Ãw + + `sfPrݖIn£¹SqlTask +( +$this +-> +di¥©ch” +, $this-> +fÜm©‹r +); + +172 +$sk +-> + `£tCommªdAµliÿtiÚ +( +$this +-> +commªdAµliÿtiÚ +); + +173 +$sk +-> + `£tCÚfigu¿tiÚ +( +$this +-> +cÚfigu¿tiÚ +); + +174 +$»t + = +$sk +-> + `run +( + `¬¿y +(),‡rray( + +175 'no-cÚfœm©iÚ' => +$ÝtiÚs +['no-confirmation'], + +178 ià( +$»t +) + +180  +$»t +; + +184 ià( + `couÁ +( +$ÝtiÚs +['and-load']) || count($options['and-append'])) + +186 +$sk + = +Ãw + + `sfPrݖD©aLßdTask +( +$this +-> +di¥©ch” +, $this-> +fÜm©‹r +); + +187 +$sk +-> + `£tCommªdAµliÿtiÚ +( +$this +-> +commªdAµliÿtiÚ +); + +188 +$sk +-> + `£tCÚfigu¿tiÚ +( +$this +-> +cÚfigu¿tiÚ +); + +190 ià( + `couÁ +( +$ÝtiÚs +['and-load'])) + +192 +$»t + = +$sk +-> + `run +( + `¬¿y +( + +193 'dœ_Ü_fže' => + `š_¬¿y +( + `¬¿y +(), +$ÝtiÚs +['ªd-lßd'], +Œue +è? +nuÎ + : $options['and-load'], + +196 ià( +$»t +) + +198  +$»t +; + +202 ià( + `couÁ +( +$ÝtiÚs +['and-append'])) + +204 +$»t + = +$sk +-> + `run +( + `¬¿y +( + +205 'dœ_Ü_fže' => + `š_¬¿y +( + `¬¿y +(), +$ÝtiÚs +['ªd-­³nd'], +Œue +è? +nuÎ + : $options['and-append'], + +206 ), + `¬¿y +( + +207 '­³nd' => +Œue +, + +210 ià( +$»t +) + +212  +$»t +; + +216 + } +} + +225 +´Ùeùed + +funùiÚ + +ÿlcuϋMode +( +$ÝtiÚs + = + $¬¿y +()) + +227 +$mode + = 0; + +228 + `fܗch + ( +$this +-> + `g‘BuždO±iÚs +(è +as + +$Çme + => +$v®ue +) + +230 ià( + `is£t +( +$ÝtiÚs +[ +$Çme +]è&& +Œue + === $options[$name]) + +232 +$mode + = $mod| +$v®ue +; + +236  +$mode +; + +237 + } +} + +244 +´Ùeùed + +funùiÚ + + $g‘BuždO±iÚs +() + +246 +$ÝtiÚs + = + `¬¿y +(); + +247 + `fܗch + ( +$this +-> +ÝtiÚs + +as + +$ÝtiÚ +) + +249 ià( + `defšed +( +$cÚ¡ªt + = +__CLASS__ +.'::OPTION_'. + `¡r_»¶aû +('-', '_', + `¡¹ouµ” +( +$ÝtiÚ +-> + `g‘Name +())))) + +251 +$ÝtiÚs +[ +$ÝtiÚ +-> + `g‘Name +()] = + `cÚ¡ªt +( +$cÚ¡ªt +); + +255  +$ÝtiÚs +; + +256 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/sfPropelConfigureDatabaseTask.class.php + +1 + `addArgum’ts +( + `¬¿y +( + +27 +Ãw + + `sfCommªdArgum’t +('d¢', +sfCommªdArgum’t +:: +REQUIRED +, 'The database dsn'), + +28 +Ãw + + `sfCommªdArgum’t +('u£ºame', +sfCommªdArgum’t +:: +OPTIONAL +, 'The database username', 'root'), + +29 +Ãw + + `sfCommªdArgum’t +('·sswÜd', +sfCommªdArgum’t +:: +OPTIONAL +, 'The database…assword'), + +32 +$this +-> + `addO±iÚs +( + `¬¿y +( + +33 +Ãw + + `sfCommªdO±iÚ +('’v', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL +, 'Theƒnvironment', 'all'), + +34 +Ãw + + `sfCommªdO±iÚ +('Çme', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL +, 'The connection‚ame', 'propel'), + +35 +Ãw + + `sfCommªdO±iÚ +('þass', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL +, 'The database class‚ame', 'sfPropelDatabase'), + +36 +Ãw + + `sfCommªdO±iÚ +('­p', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL +, 'The‡pplication‚ame',‚ull), + +39 +$this +-> +Çme¥aû + = 'configure'; + +40 +$this +-> +Çme + = 'database'; + +42 +$this +-> +br›fDesütiÚ + = 'Configure database DSN'; + +44 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +45 +The + [ +cÚfigu» +: +d©aba£ +| +INFO +] +sk + +cÚfigu»s + +the + d©aba£ +DSN + + +46  +a + +´ojeù +: + +48 [./ +symfÚy + +cÚfigu» +: +d©aba£ + +mysql +: +ho¡ += +loÿlho¡ +; +dbÇme += +exam¶e + +roÙ + +mYsEü‘ +| +INFO +] + +50 +By + , +the + +sk + +chªge +h +cÚfigu¿tiÚ +  +®l + +’vœÚm’t +. +If + +you + +wªt + + +51 +to + +chªge + +the + +d¢ +  +a + +¥ecific + +’vœÚm’t +, +u£ +h[ +’v +| +COMMENT +] +ÝtiÚ +: + +53 [./ +symfÚy + +cÚfigu» +: +d©aba£ + -- +’v += +dev + +mysql +: +ho¡ += +loÿlho¡ +; +dbÇme += +exam¶e_dev + +roÙ + +mYsEü‘ +| +INFO +] + +55 +To + +chªge + +the + +cÚfigu¿tiÚ +  +a + +¥ecific + +­¶iÿtiÚ +, +u£ +h[ +­p +| +COMMENT +] +ÝtiÚ +: + +57 [./ +symfÚy + +cÚfigu» +: +d©aba£ + -- +­p += +äڋnd + +mysql +: +ho¡ += +loÿlho¡ +; +dbÇme += +exam¶e + +roÙ + +mYsEü‘ +| +INFO +] + +59 +You + +ÿn + +®so + +¥ecify + +the + +cÚÃùiÚ + +Çme + +ªd +h +d©aba£ + +þass +‚ame: + +61 [./ +symfÚy + +cÚfigu» +: +d©aba£ + -- +Çme += +maš + -- +þass += +ProjeùD©aba£ + +mysql +: +ho¡ += +loÿlho¡ +; +dbÇme += +exam¶e + +roÙ + +mYsEü‘ +| +INFO +] + +63 +WARNING +: +The + [ +´Ý– +. +ši +| +COMMENT +] +fže + +is + +®so + +upd©ed + +wh’ + +you + +u£ + +a + [ +Prݖ +|COMMENT] +d©aba£ + + +64 +ªd + +cÚfigu» + [ +®l +| +COMMENT +] +’vœÚm’ts + +w™h + +no + [ +­p +|COMMENT]. + +65 +EOF +; + +71 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +74 ià( +nuÎ + !=ð +$ÝtiÚs +['app']) + +76 +$fže + = +sfCÚfig +:: + `g‘ +('sf_­ps_dœ').'/'. +$ÝtiÚs +['app'].'/config/databases.yml'; + +80 +$fže + = +sfCÚfig +:: + `g‘ +('sf_config_dir').'/databases.yml'; + +83 +$cÚfig + = + `fže_exi¡s +( +$fže +è? +sfYaml +:: + `lßd +($fžeè: + `¬¿y +(); + +85 +$cÚfig +[ +$ÝtiÚs +['’v']][$ÝtiÚs['Çme']] = + `¬¿y +( + +86 'þass' => +$ÝtiÚs +['class'], + +87 '·¿m' => + `¬¿y_m”ge +( + `is£t +( +$cÚfig +[ +$ÝtiÚs +['’v']][$ÝtiÚs['Çme']]['·¿m']è? $cÚfig[$ÝtiÚs['’v']][$ÝtiÚs['Çme']]['·¿m'] : + `¬¿y +(),‡¼ay('d¢' => +$¬gum’ts +['dsn'], 'username' => $arguments['username'], 'password' => $arguments['password'])), + +90 + `fže_put_cڋÁs +( +$fže +, +sfYaml +:: + `dump +( +$cÚfig +, 4)); + +94 +nuÎ + ==ð +$ÝtiÚs +['app'] && + +95 +çl£ + !=ð + `¡½os +( +$ÝtiÚs +['class'], 'Propel') && + +96 '®l' =ð +$ÝtiÚs +['env'] + +99 +$´Ý–ši + = +sfCÚfig +:: + `g‘ +('sf_config_dir').'/propel.ini'; + +100 ià( + `fže_exi¡s +( +$´Ý–ši +)) + +102 +$cڋÁ + = + `fže_g‘_cڋÁs +( +$´Ý–ši +); + +103 ià( + `´eg_m©ch +('/^(.+?):/', +$¬gum’ts +['d¢'], +$m©ch +)) + +105 +$cڋÁ + = + `´eg_»¶aû +('/^´Ý–\.d©aba£(\s*)=(\s*)(.+?)$/m', '´Ý–.d©aba£$1=${2}'. +$m©ch +[1], $content); + +106 +$cڋÁ + = + `´eg_»¶aû +('/^´Ý–\.d©aba£.driv”(\s*)=(\s*)(.+?)$/m', '´Ý–.d©aba£.driv”$1=${2}'. +$m©ch +[1], $content); + +107 +$cڋÁ + = + `´eg_»¶aû +('/^´Ý–\.d©aba£\.ü—‹U¾(\s*)=(\s*)(.+?)$/m', '´Ý–.d©aba£.ü—‹U¾$1=${2}'. +$¬gum’ts +['dsn'], $content); + +108 +$cڋÁ + = + `´eg_»¶aû +('/^´Ý–\.d©aba£\.u¾(\s*)=(\s*)(.+?)$/m', '´Ý–.d©aba£.u¾$1=${2}'. +$¬gum’ts +['dsn'], $content); + +110 +$cڋÁ + = + `´eg_»¶aû +('/^´Ý–\.d©aba£\.u£r(\s*)=(\s*)(.+?)$/m', '´Ý–.d©aba£.u£r$1=${2}'. +$¬gum’ts +['username'], $content); + +111 +$cڋÁ + = + `´eg_»¶aû +('/^´Ý–\.d©aba£\.·sswÜd(\s*)=(\s*)(.+?)$/m', '´Ý–.d©aba£.·sswÜd$1=${2}'. +$¬gum’ts +['password'], $content); + +113 + `fže_put_cڋÁs +( +$´Ý–ši +, +$cڋÁ +); + +117 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/sfPropelDataDumpTask.class.php + +1 + `addArgum’ts +( + `¬¿y +( + +29 +Ãw + + `sfCommªdArgum’t +('rg‘', +sfCommªdArgum’t +:: +OPTIONAL +, 'Thearget filename'), + +32 +$this +-> + `addO±iÚs +( + `¬¿y +( + +33 +Ãw + + `sfCommªdO±iÚ +('­¶iÿtiÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL +, 'Th­¶iÿtiڂame', +Œue +), + +34 +Ãw + + `sfCommªdO±iÚ +('’v', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Theƒnvironement', 'cli'), + +35 +Ãw + + `sfCommªdO±iÚ +('cÚÃùiÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The connection‚ame', 'propel'), + +36 +Ãw + + `sfCommªdO±iÚ +('þas£s', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The class‚ameso dump (separated by‡ colon)',‚ull), + +39 +$this +-> +Çme¥aû + = 'propel'; + +40 +$this +-> +Çme + = 'data-dump'; + +41 +$this +-> +br›fDesütiÚ + = 'Dumps dataohe fixtures directory'; + +43 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +44 +The + [ +´Ý– +: +d©a +- +dump +| +INFO +] +sk + +dumps + +d©aba£ + data: + +46 [./ +symfÚy + +´Ý– +: +d©a +- +dump + > d©a/ +fixtu»s +/dump. +yml +| +INFO +] + +48 +By + , +the + +sk + +ouuts +h +d©a + +to +h +¡ªd¬d + +ouut +, + +49 +but + +you + +ÿn + +®so + +·ss + +a + +fž’ame + +as +‡ +£cÚd + +¬gum’t +: + +51 [./ +symfÚy + +´Ý– +: +d©a +- +dump + dump. +yml +| +INFO +] + +53 +The + +sk + +wžl + +dump + +d©a + +š + [d©a/ +fixtu»s +/% +rg‘ +%| +COMMENT +] + +54 ( +d©a +/ +fixtu»s +/ +dump +. +yml + +š + +the + +exam¶e +). + +56 +The + +dump + +fže + +is + +š + +the + +YML + +fÜm© + +ªd + +ÿn + +be + +» +- +imp܋d + +by + +usšg + + +57 +the + [ +´Ý– +: +d©a +- +lßd +| +INFO +] +sk +. + +59 +By + , +the + +sk + +u£ +h[ +´Ý– +| +COMMENT +] +cÚÃùiÚ + +as + +defšed + +š + [ +cÚfig +/ +d©aba£s +. +yml +|COMMENT]. + +60 +You + +ÿn + +u£ + +ªÙh” + +cÚÃùiÚ + +by + +usšg + +the + [cÚÃùiÚ| +COMMENT +] +ÝtiÚ +: + +62 [./ +symfÚy + +´Ý– +: +d©a +- +dump + -- +cÚÃùiÚ +="Çme"| +INFO +] + +64 +If + +you + +Úly + +wªt + +to + +dump + +some + +þas£s +, +u£ + +the + [þas£s| +COMMENT +] +ÝtiÚ +: + +66 [./ +symfÚy + +´Ý– +: +d©a +- +dump + -- +þas£s +="A¹iþe,C©egÜy"| +INFO +] + +68 +If + +you + +wªt + +to + +u£ + +a + +¥ecific + +d©aba£ + +cÚfigu¿tiÚ + +äom + +ª + +­¶iÿtiÚ +, you +ÿn + use + +69 +the + [ +­¶iÿtiÚ +| +COMMENT +] +ÝtiÚ +: + +71 [./ +symfÚy + +´Ý– +: +d©a +- +dump + -- +­¶iÿtiÚ += +äڋnd +| +INFO +] + +72 +EOF +; + +78 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +80 +$d©aba£Mªag” + = +Ãw + + `sfD©aba£Mªag” +( +$this +-> +cÚfigu¿tiÚ +); + +82 +$fž’ame + = +$¬gum’ts +['target']; + +83 ià( +nuÎ + !=ð +$fž’ame + && ! +sfToÞk™ +:: + `isP©hAbsÞu‹ +($filename)) + +85 +$dœ + = +sfCÚfig +:: + `g‘ +('sf_d©a_dœ'). +DIRECTORY_SEPARATOR +.'fixtures'; + +86 +$this +-> + `g‘Fžesy¡em +()-> + `mkdœs +( +$dœ +); + +87 +$fž’ame + = +$dœ +. +DIRECTORY_SEPARATOR +.$filename; + +89 +$this +-> + `logSeùiÚ +('´Ý–', + `¥rštf +('dumpšg d©¨tØ"%s"', +$fž’ame +)); + +92 +$d©a + = +Ãw + + `sfPrݖD©a +(); + +94 +$þas£s + = +nuÎ + ==ð +$ÝtiÚs +['þas£s'] ? '®l' : + `ex¶ode +(',', $options['classes']); + +96 ià( +nuÎ + !=ð +$fž’ame +) + +98 +$d©a +-> + `dumpD©a +( +$fž’ame +, +$þas£s +, +$ÝtiÚs +['connection']); + +102 + `fwr™e +( +STDOUT +, +sfYaml +:: + `dump +( +$d©a +-> + `g‘D©a +( +$þas£s +, +$ÝtiÚs +['connection']), 3)); + +104 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/sfPropelDataLoadTask.class.php + +1 + `addArgum’ts +( + `¬¿y +( + +29 +Ãw + + `sfCommªdArgum’t +('dœ_Ü_fže', +sfCommªdArgum’t +:: +OPTIONAL + | sfCommªdArgum’t:: +IS_ARRAY +, 'Directory or fileo†oad'), + +32 +$this +-> + `addO±iÚs +( + `¬¿y +( + +33 +Ãw + + `sfCommªdO±iÚ +('­¶iÿtiÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL +, 'Th­¶iÿtiڂame', +Œue +), + +34 +Ãw + + `sfCommªdO±iÚ +('’v', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Theƒnvironment', 'cli'), + +35 +Ãw + + `sfCommªdO±iÚ +('­³nd', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Don\'t delete current data inhe database'), + +36 +Ãw + + `sfCommªdO±iÚ +('cÚÃùiÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The connection‚ame', 'propel'), + +39 +$this +-> +Çme¥aû + = 'propel'; + +40 +$this +-> +Çme + = 'data-load'; + +41 +$this +-> +br›fDesütiÚ + = 'Loads YAML fixture data'; + +43 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +44 +The + [ +´Ý– +: +d©a +- +lßd +| +INFO +] +sk + +lßds + d©¨ +fixtu»s + +što + +the + +d©aba£ +: + +46 [./ +symfÚy + +´Ý– +: +d©a +- +lßd +| +INFO +] + +48 +The + +sk + +lßds + +d©a + +äom + +®l + +the + +fžes + +found + +š + [d©a/ +fixtu»s +/| +COMMENT +]. + +50 +If + +you + +wªt + +to + +lßd + +d©a + +äom + +¥ecific + +fžes + +Ü + +dœeùܛs +, you +ÿn + +­³nd + + +51 +them + +as + +¬gum’ts +: + +53 [./ +symfÚy + +´Ý– +: +d©a +- +lßd + d©a/ +fixtu»s +/ +dev + d©a/fixtu»s/ +u£rs +. +yml +| +INFO +] + +55 +The + +sk + +u£ + +the + [ +´Ý– +| +COMMENT +] +cÚÃùiÚ + +as + +defšed + +š + [ +cÚfig +/ +d©aba£s +. +yml +|COMMENT]. + +56 +You + +ÿn + +u£ + +ªÙh” + +cÚÃùiÚ + +by + +usšg + +the + [--cÚÃùiÚ| +COMMENT +] +ÝtiÚ +: + +58 [./ +symfÚy + +´Ý– +: +d©a +- +lßd + -- +cÚÃùiÚ +="Çme"| +INFO +] + +60 +If + +you + +dÚ +'t wantheasko„emoveƒxisting data inhe database, + +61 +u£ + +the + [-- +­³nd +| +COMMENT +] +ÝtiÚ +: + +63 [./ +symfÚy + +´Ý– +: +d©a +- +lßd + -- +­³nd +| +INFO +] + +65 +If + +you + +wªt + +to + +u£ + +a + +¥ecific + +d©aba£ + +cÚfigu¿tiÚ + +äom + +ª + +­¶iÿtiÚ +, you +ÿn + use + +66 +the + [ +­¶iÿtiÚ +| +COMMENT +] +ÝtiÚ +: + +68 [./ +symfÚy + +´Ý– +: +d©a +- +lßd + -- +­¶iÿtiÚ += +äڋnd +| +INFO +] + +69 +EOF +; + +75 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +77 +$d©aba£Mªag” + = +Ãw + + `sfD©aba£Mªag” +( +$this +-> +cÚfigu¿tiÚ +); + +79 ià( + `couÁ +( +$¬gum’ts +['dir_or_file'])) + +81 +$fixtu»sDœs + = +$¬gum’ts +['dir_or_file']; + +85 +$fixtu»sDœs + = + `¬¿y_m”ge +( + `¬¿y +( +sfCÚfig +:: + `g‘ +('sf_d©a_dœ').'/fixtu»s'), +$this +-> +cÚfigu¿tiÚ +-> + `g‘PlugšSubP©hs +('/data/fixtures')); + +88 +$d©a + = +Ãw + + `sfPrݖD©a +(); + +89 +$d©a +-> + `£tD–‘eCu¼’tD©a +(! +$ÝtiÚs +['append']); + +91 +$dœs + = + `¬¿y +(); + +92 + `fܗch + ( +$fixtu»sDœs + +as + +$fixtu»sDœ +) + +94 ià(! + `is_»adabË +( +$fixtu»sDœ +)) + +99 +$this +-> + `logSeùiÚ +('´Ý–', + `¥rštf +('lßd d©¨äom "%s"', +$fixtu»sDœ +)); + +100 +$dœs +[] = +$fixtu»sDœ +; + +103 +$d©a +-> + `lßdD©a +( +$dœs +, +$ÝtiÚs +['connection']); + +104 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/sfPropelGenerateAdminTask.class.php + +1 + `addArgum’ts +( + `¬¿y +( + +29 +Ãw + + `sfCommªdArgum’t +('­¶iÿtiÚ', +sfCommªdArgum’t +:: +REQUIRED +, 'The‡pplication‚ame'), + +30 +Ãw + + `sfCommªdArgum’t +('rou‹_Ü_mod–', +sfCommªdArgum’t +:: +REQUIRED +, 'The„oute‚ame orhe model class'), + +33 +$this +-> + `addO±iÚs +( + `¬¿y +( + +34 +Ãw + + `sfCommªdO±iÚ +('moduË', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The module‚ame',‚ull), + +35 +Ãw + + `sfCommªdO±iÚ +('theme', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Theheme‚ame', 'admin'), + +36 +Ãw + + `sfCommªdO±iÚ +('sšguÏr', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The singular‚ame',‚ull), + +37 +Ãw + + `sfCommªdO±iÚ +('¶u¿l', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The…lural‚ame',‚ull), + +38 +Ãw + + `sfCommªdO±iÚ +('’v', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Theƒnvironment', 'dev'), + +39 +Ãw + + `sfCommªdO±iÚ +('aùiÚs-ba£-þass', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The base class forhe‡ctions', 'sfActions'), + +42 +$this +-> +Çme¥aû + = 'propel'; + +43 +$this +-> +Çme + = 'generate-admin'; + +44 +$this +-> +br›fDesütiÚ + = 'Generates‡ Propel‡dmin module'; + +46 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +47 +The + [ +´Ý– +: +g’”©e +- +admš +| +INFO +] +sk + +g’”©es + +a + +Prݖ +‡dmš +moduË +: + +49 [./ +symfÚy + +´Ý– +: +g’”©e +- +admš + +äڋnd + +A¹iþe +| +INFO +] + +51 +The + +sk + +ü—‹s + +a + +moduË + +š + +the + [% +äڋnd +%| +COMMENT +] +­¶iÿtiÚ + the + +52 [% +A¹iþe +%| +COMMENT +] +mod– +. + +54 +The + +sk + +ü—‹s + +a + +rou‹ +  +you + +š + +the + +­¶iÿtiÚ + [ +routšg +. +yml +| +COMMENT +]. + +56 +You + +ÿn + +®so + +g’”©e + +a + +Prݖ + +admš + +moduË + +by + +·ssšg +‡ +rou‹ + +Çme +: + +58 [./ +symfÚy + +´Ý– +: +g’”©e +- +admš + +äڋnd + +¬tiþe +| +INFO +] + +60 +The + +sk + +ü—‹s + +a + +moduË + +š + +the + [% +äڋnd +%| +COMMENT +] +­¶iÿtiÚ + the + +61 [% +¬tiþe +%| +COMMENT +] +rou‹ + +defš™iÚ + +found + +š + [ +routšg +. +yml +|COMMENT]. + +63 +FÜ + +the + +fž‹rs + +ªd + +b©ch + +aùiÚs + +to + +wÜk + +´Ý”ly +, +you + +Ãed +Ø +add + + +64 +the + [ +w™h_wždÿrd_rou‹s +| +COMMENT +] +ÝtiÚ + +to +h +rou‹ +: + +66 +¬tiþe +: + +67 +þass +: +sfPrݖRou‹CÞËùiÚ + + +68 +ÝtiÚs +: + +69 +mod– +: +A¹iþe + + +70 +w™h_wždÿrd_rou‹s +: +Œue + + +71 +EOF +; + +77 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +80 ià( +çl£ + !=ð( +$rou‹ + = +$this +-> + `g‘Rou‹FromName +( +$¬gum’ts +['route_or_model']))) + +82 +$¬gum’ts +['rou‹'] = +$rou‹ +; + +83 +$¬gum’ts +['route_name'] = $arguments['route_or_model']; + +85  +$this +-> + `g’”©eFÜRou‹ +( +$¬gum’ts +, +$ÝtiÚs +); + +89 ià(! + `þass_exi¡s +( +$¬gum’ts +['route_or_model'])) + +91 +throw + +Ãw + + `sfCommªdExû±iÚ +( + `¥rštf +('Throu‹ "%s" dÛ nكxi¡‡ndh”i nØ"%s" cÏss.', +$¬gum’ts +['route_or_model'], $arguments['route_or_model'])); + +94 +$r + = +Ãw + + `ReæeùiÚCÏss +( +$¬gum’ts +['route_or_model']); + +95 ià(! +$r +-> + `isSubþassOf +('BaseObject')) + +97 +throw + +Ãw + + `sfCommªdExû±iÚ +( + `¥rštf +('"%s" i nه Prݖ cÏss.', +$¬gum’ts +['route_or_model'])); + +101 +$mod– + = +$¬gum’ts +['route_or_model']; + +102 +$Çme + = + `¡¹Þow” +( + `´eg_»¶aû +( + `¬¿y +('/([A-Z]+)([A-Z][a-z])/', '/([a-z\d])([A-Z])/'), '\\1_\\2', +$mod– +)); + +104 ià( + `is£t +( +$ÝtiÚs +['module'])) + +106 +$rou‹ + = +$this +-> + `g‘Rou‹FromName +( +$Çme +); + +107 ià( +$rou‹ + && ! +$this +-> + `checkRou‹ +($rou‹, +$mod– +, +$ÝtiÚs +['module'])) + +109 +$Çme + .ð'_'. +$ÝtiÚs +['module']; + +113 +$routšg + = +sfCÚfig +:: + `g‘ +('sf_app_config_dir').'/routing.yml'; + +114 +$cڋÁ + = + `fže_g‘_cڋÁs +( +$routšg +); + +115 +$rou‹sA¼ay + = +sfYaml +:: + `lßd +( +$cڋÁ +); + +117 ià(! + `is£t +( +$rou‹sA¼ay +[ +$Çme +])) + +119 +$´im¬yKey + = +$this +-> + `g‘Prim¬yKey +( +$mod– +); + +120 +$moduË + = +$ÝtiÚs +['moduË'] ? $ÝtiÚs['moduË'] : +$Çme +; + +121 +$cڋÁ + = + `¥rštf +(<<< +EOF + + +122 % +s +: + +123 +þass +: +sfPrݖRou‹CÞËùiÚ + + +124 +ÝtiÚs +: + +125 +mod– +: % +s + + +126 +moduË +: % +s + + +127 +´efix_·th +: /% +s + + +128 +cÞumn +: % +s + + +129 +w™h_wždÿrd_rou‹s +: +Œue + + +132 +EOF + + +133 , +$Çme +, +$mod– +, +$moduË +, + `is£t +( +$ÝtiÚs +['¶u¿l']è? $ÝtiÚs['¶u¿l'] : $moduË, +$´im¬yKey +). +$cڋÁ +; + +135 +$this +-> + `logSeùiÚ +('fže+', +$routšg +); + +137 ià( +çl£ + ==ð + `fže_put_cڋÁs +( +$routšg +, +$cڋÁ +)) + +139 +throw + +Ãw + + `sfCommªdExû±iÚ +( + `¥rštf +('UÇbˁØwr™tØfže, %s.', +$routšg +)); + +143 +$¬gum’ts +['rou‹'] = +$this +-> + `g‘Rou‹FromName +( +$Çme +); + +144 +$¬gum’ts +['rou‹_Çme'] = +$Çme +; + +146  +$this +-> + `g’”©eFÜRou‹ +( +$¬gum’ts +, +$ÝtiÚs +); + +147 + } +} + +149 +´Ùeùed + +funùiÚ + + $g’”©eFÜRou‹ +( +$¬gum’ts +, +$ÝtiÚs +) + +151 +$rou‹O±iÚs + = +$¬gum’ts +['rou‹']-> + `g‘O±iÚs +(); + +153 ià(! +$¬gum’ts +['rou‹'] +š¡ªûof + +sfPrݖRou‹CÞËùiÚ +) + +155 +throw + +Ãw + + `sfCommªdExû±iÚ +( + `¥rštf +('Throu‹ "%s" i nه Prݖ cÞËùiڄou‹.', +$¬gum’ts +['route_name'])); + +158 +$moduË + = +$rou‹O±iÚs +['module']; + +159 +$mod– + = +$rou‹O±iÚs +['model']; + +162 +$sk + = +Ãw + + `sfPrݖG’”©eModuËTask +( +$this +-> +di¥©ch” +, $this-> +fÜm©‹r +); + +163 +$sk +-> + `£tCommªdAµliÿtiÚ +( +$this +-> +commªdAµliÿtiÚ +); + +164 +$sk +-> + `£tCÚfigu¿tiÚ +( +$this +-> +cÚfigu¿tiÚ +); + +166 +$this +-> + `logSeùiÚ +('­p', + `¥rštf +('G’”©šg‡dmš moduË "%s" fÜ mod– "%s"', +$moduË +, +$mod– +)); + +168  +$sk +-> + `run +( + `¬¿y +( +$¬gum’ts +['­¶iÿtiÚ'], +$moduË +, +$mod– +),‡rray( + +169 'theme' => +$ÝtiÚs +['theme'], + +170 'rou‹-´efix' => +$rou‹O±iÚs +['name'], + +171 'w™h-´Ý–-rou‹' => +Œue +, + +172 'g’”©e-š-ÿche' => +Œue +, + +173 'nÚ-v”bo£-‹m¶©es' => +Œue +, + +174 'sšguÏr' => +$ÝtiÚs +['singular'], + +175 '¶u¿l' => +$ÝtiÚs +['plural'], + +176 'aùiÚs-ba£-þass' => +$ÝtiÚs +['actions-base-class'], + +178 + } +} + +180 +´Ùeùed + +funùiÚ + + $g‘Rou‹FromName +( +$Çme +) + +182 +$cÚfig + = +Ãw + + `sfRoutšgCÚfigHªdËr +(); + +183 +$rou‹s + = +$cÚfig +-> + `ev®u©e +( +$this +-> +cÚfigu¿tiÚ +-> + `g‘CÚfigP©hs +('config/routing.yml')); + +185 ià( + `is£t +( +$rou‹s +[ +$Çme +])) + +187  +$rou‹s +[ +$Çme +]; + +190  +çl£ +; + +191 + } +} + +202 +´Ùeùed + +funùiÚ + + $checkRou‹ +( +$rou‹ +, +$mod– +, +$moduË +) + +204 ià( +$rou‹ + +š¡ªûof + +sfPrݖRou‹CÞËùiÚ +) + +206 +$ÝtiÚs + = +$rou‹ +-> + `g‘O±iÚs +(); + +207  +$mod– + =ð +$ÝtiÚs +['mod–'] && +$moduË + == $options['module']; + +210  +çl£ +; + +211 + } +} + +220 +´Ùeùed + +funùiÚ + + $g‘Prim¬yKey +( +$mod– +) + +222 +$³” + = + `cÚ¡ªt +( +$mod– +.'::PEER'); + +223 +$m­ + = + `ÿÎ_u£r_func +( + `¬¿y +( +$³” +, 'getTableMap')); + +225 ià(! +$pks + = +$m­ +-> + `g‘Prim¬yKeys +()) + +230 +$cÞumn + = + `¬¿y_shiá +( +$pks +); + +232  + `ÿÎ_u£r_func +( + `¬¿y +( +$³” +, 'Œª¦©eF›ldName'), +$cÞumn +-> + `g‘PhpName +(), +Ba£P“r +:: +TYPE_PHPNAME +, Ba£P“r:: +TYPE_FIELDNAME +); + +233 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/sfPropelGenerateModuleForRouteTask.class.php + +1 + `addArgum’ts +( + `¬¿y +( + +29 +Ãw + + `sfCommªdArgum’t +('­¶iÿtiÚ', +sfCommªdArgum’t +:: +REQUIRED +, 'The‡pplication‚ame'), + +30 +Ãw + + `sfCommªdArgum’t +('rou‹', +sfCommªdArgum’t +:: +REQUIRED +, 'The„oute‚ame'), + +33 +$this +-> + `addO±iÚs +( + `¬¿y +( + +34 +Ãw + + `sfCommªdO±iÚ +('theme', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Theheme‚ame', 'default'), + +35 +Ãw + + `sfCommªdO±iÚ +('nÚ-v”bo£-‹m¶©es', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Generate‚on verboseemplates'), + +36 +Ãw + + `sfCommªdO±iÚ +('sšguÏr', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The singular‚ame',‚ull), + +37 +Ãw + + `sfCommªdO±iÚ +('¶u¿l', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The…lural‚ame',‚ull), + +38 +Ãw + + `sfCommªdO±iÚ +('’v', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Theƒnvironment', 'dev'), + +39 +Ãw + + `sfCommªdO±iÚ +('aùiÚs-ba£-þass', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The base class forhe‡ctions', 'sfActions'), + +42 +$this +-> +Çme¥aû + = 'propel'; + +43 +$this +-> +Çme + = 'generate-module-for-route'; + +44 +$this +-> +br›fDesütiÚ + = 'Generates‡ Propel module for‡„oute definition'; + +46 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +47 +The + [ +´Ý– +: +g’”©e +- +moduË +-- +rou‹ +| +INFO +] +sk + +g’”©es + +a + +Prݖ + moduË ¨rou‹ +defš™iÚ +: + +49 [./ +symfÚy + +´Ý– +: +g’”©e +- +moduË +-- +rou‹ + +äڋnd + +¬tiþe +| +INFO +] + +51 +The + +sk + +ü—‹s + +a + +moduË + +š + +the + [% +äڋnd +%| +COMMENT +] +­¶iÿtiÚ + the + +52 [% +¬tiþe +%| +COMMENT +] +rou‹ + +defš™iÚ + +found + +š + [ +routšg +. +yml +|COMMENT]. + +53 +EOF +; + +59 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +62 +$cÚfig + = +Ãw + + `sfRoutšgCÚfigHªdËr +(); + +63 +$rou‹s + = +$cÚfig +-> + `ev®u©e +( +$this +-> +cÚfigu¿tiÚ +-> + `g‘CÚfigP©hs +('config/routing.yml')); + +65 ià(! + `is£t +( +$rou‹s +[ +$¬gum’ts +['route']])) + +67 +throw + +Ãw + + `sfCommªdExû±iÚ +( + `¥rštf +('Throu‹ "%s" dÛ nكxi¡.', +$¬gum’ts +['route'])); + +70 +$rou‹O±iÚs + = +$rou‹s +[ +$¬gum’ts +['rou‹']]-> + `g‘O±iÚs +(); + +72 ià(! +$rou‹s +[ +$¬gum’ts +['rou‹']] +š¡ªûof + +sfPrݖRou‹CÞËùiÚ +) + +74 +throw + +Ãw + + `sfCommªdExû±iÚ +( + `¥rštf +('Throu‹ "%s" i nه Prݖ cÞËùiڄou‹.', +$¬gum’ts +['route'])); + +77 +$moduË + = +$rou‹O±iÚs +['module']; + +78 +$mod– + = +$rou‹O±iÚs +['model']; + +81 +$sk + = +Ãw + + `sfPrݖG’”©eModuËTask +( +$this +-> +di¥©ch” +, $this-> +fÜm©‹r +); + +82 +$sk +-> + `£tCommªdAµliÿtiÚ +( +$this +-> +commªdAµliÿtiÚ +); + +83 +$sk +-> + `£tCÚfigu¿tiÚ +( +$this +-> +cÚfigu¿tiÚ +); + +85 +$this +-> + `logSeùiÚ +('­p', + `¥rštf +('G’”©šg moduË "%s" fÜ mod– "%s"', +$moduË +, +$mod– +)); + +87  +$sk +-> + `run +( + `¬¿y +( +$¬gum’ts +['­¶iÿtiÚ'], +$moduË +, +$mod– +),‡rray( + +88 'theme' => +$ÝtiÚs +['theme'], + +89 'rou‹-´efix' => +$rou‹O±iÚs +['name'], + +90 'w™h-´Ý–-rou‹' => +Œue +, + +91 'w™h-show' => +$rou‹O±iÚs +['with_show'], + +92 'nÚ-v”bo£-‹m¶©es' => +$ÝtiÚs +['non-verbose-templates'], + +93 'sšguÏr' => +$ÝtiÚs +['singular'], + +94 '¶u¿l' => +$ÝtiÚs +['plural'], + +95 'aùiÚs-ba£-þass' => +$ÝtiÚs +['actions-base-class'], + +97 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/sfPropelGenerateModuleTask.class.php + +1 + `addArgum’ts +( + `¬¿y +( + +29 +Ãw + + `sfCommªdArgum’t +('­¶iÿtiÚ', +sfCommªdArgum’t +:: +REQUIRED +, 'The‡pplication‚ame'), + +30 +Ãw + + `sfCommªdArgum’t +('moduË', +sfCommªdArgum’t +:: +REQUIRED +, 'The module‚ame'), + +31 +Ãw + + `sfCommªdArgum’t +('mod–', +sfCommªdArgum’t +:: +REQUIRED +, 'The model class‚ame'), + +34 +$this +-> + `addO±iÚs +( + `¬¿y +( + +35 +Ãw + + `sfCommªdO±iÚ +('theme', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Theheme‚ame', 'default'), + +36 +Ãw + + `sfCommªdO±iÚ +('g’”©e-š-ÿche', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Generatehe module in cache'), + +37 +Ãw + + `sfCommªdO±iÚ +('nÚ-v”bo£-‹m¶©es', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Generate‚on verboseemplates'), + +38 +Ãw + + `sfCommªdO±iÚ +('w™h-show', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Generate‡ show method'), + +39 +Ãw + + `sfCommªdO±iÚ +('sšguÏr', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The singular‚ame',‚ull), + +40 +Ãw + + `sfCommªdO±iÚ +('¶u¿l', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The…lural‚ame',‚ull), + +41 +Ãw + + `sfCommªdO±iÚ +('rou‹-´efix', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The„oute…refix',‚ull), + +42 +Ãw + + `sfCommªdO±iÚ +('w™h-´Ý–-rou‹', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Whether you will use‡ Propel„oute'), + +43 +Ãw + + `sfCommªdO±iÚ +('’v', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Theƒnvironment', 'dev'), + +44 +Ãw + + `sfCommªdO±iÚ +('aùiÚs-ba£-þass', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The base class forhe‡ctions', 'sfActions'), + +47 +$this +-> +Çme¥aû + = 'propel'; + +48 +$this +-> +Çme + = 'generate-module'; + +49 +$this +-> +br›fDesütiÚ + = 'Generates‡ Propel module'; + +51 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +52 +The + [ +´Ý– +: +g’”©e +- +moduË +| +INFO +] +sk + +g’”©es + +a + +Prݖ + module: + +54 [./ +symfÚy + +´Ý– +: +g’”©e +- +moduË + +äڋnd + +¬tiþe + +A¹iþe +| +INFO +] + +56 +The + +sk + +ü—‹s + +a + [% +moduË +%| +COMMENT +] moduË +š + +the + [% +­¶iÿtiÚ +%|COMMENT]‡pplication + +57  +the + +mod– + +þass + [%mod–%| +COMMENT +]. + +59 +You + +ÿn + +®so + +ü—‹ + +ª + +em±y + +moduË + +th© + +šh”™s + +™s + +aùiÚs + +ªd + +‹m¶©es + +äom + + +60 +a + +ruÁime + +g’”©ed + +moduË + +š + [% +sf_­p_ÿche_dœ +%/ +moduËs +/auto%moduË%| +COMMENT +] +by + + +61 +usšg + +the + [-- +g’”©e +- +š +- +ÿche +| +COMMENT +] +ÝtiÚ +: + +63 [./ +symfÚy + +´Ý– +: +g’”©e +- +moduË + --g’”©e- +š +- +ÿche + +äڋnd + +¬tiþe + +A¹iþe +| +INFO +] + +65 +The + +g’”©Ü + +ÿn + +u£ + +a + +cu¡omized + +theme + +by + +usšg + +the + [--theme| +COMMENT +] +ÝtiÚ +: + +67 [./ +symfÚy + +´Ý– +: +g’”©e +- +moduË + -- +theme +="cu¡om" +äڋnd + +¬tiþe + +A¹iþe +| +INFO +] + +69 +This + +way +, +you + +ÿn + +ü—‹ + +your + +v”y + +own + +moduË + +g’”©Ü + +w™h + you¸owÀ +cÚv’tiÚs +. + +71 +You + +ÿn + +®so + +chªge + +the +  +aùiÚs + +ba£ + + `þass + ( +to + +sfAùiÚs +è +of + + +72 +the + +g’”©ed + +moduËs +: + +74 [./ +symfÚy + +´Ý– +: +g’”©e +- +moduË + -- +aùiÚs +- +ba£ +- +þass +="ProjeùAùiÚs" +äڋnd + +¬tiþe + +A¹iþe +| +INFO +] + +75 +EOF +; + +81 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +83 +$d©aba£Mªag” + = +Ãw + + `sfD©aba£Mªag” +( +$this +-> +cÚfigu¿tiÚ +); + +85 +$´Ý”t›s + = + `·r£_ši_fže +( +sfCÚfig +:: + `g‘ +('sf_cÚfig_dœ').'/´Ý”t›s.ši', +Œue +); + +87 +$this +-> +cÚ¡ªts + = + `¬¿y +( + +88 'PROJECT_NAME' => + `is£t +( +$´Ý”t›s +['symfony']['name']) ? $properties['symfony']['name'] : 'symfony', + +89 'APP_NAME' => +$¬gum’ts +['application'], + +90 'MODULE_NAME' => +$¬gum’ts +['module'], + +91 'UC_MODULE_NAME' => + `ucfœ¡ +( +$¬gum’ts +['module']), + +92 'MODEL_CLASS' => +$¬gum’ts +['model'], + +93 'AUTHOR_NAME' => + `is£t +( +$´Ý”t›s +['symfony']['author']) ? $properties['symfony']['author'] : 'Your‚ame here', + +96 +$m‘hod + = +$ÝtiÚs +['generate-in-cache'] ? 'executeInit' : 'executeGenerate'; + +99 +$ÝtiÚs +['sšguÏr'] = $ÝtiÚs['sšguÏr'] ? $ÝtiÚs['sšguÏr'] : +$¬gum’ts +['model']; + +100 +$ÝtiÚs +['¶u¿l'] = $ÝtiÚs['¶u¿l'] ? $ÝtiÚs['¶u¿l'] : +$¬gum’ts +['model'].'s'; + +102 +$this +-> + `$m‘hod +( +$¬gum’ts +, +$ÝtiÚs +); + +103 + } +} + +105 +´Ùeùed + +funùiÚ + +execu‹G’”©e +( +$¬gum’ts + = +¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +108 +$tmpDœ + = +sfCÚfig +:: + `g‘ +('sf_ÿche_dœ'). +DIRECTORY_SEPARATOR +.'tmp'.DIRECTORY_SEPARATOR. + `md5 +( + `uniqid +( + `¿nd +(), +Œue +)); + +109 +$g’”©ÜMªag” + = +Ãw + + `sfG’”©ÜMªag” +( +$this +-> +cÚfigu¿tiÚ +, +$tmpDœ +); + +110 +$g’”©ÜMªag” +-> + `g’”©e +('sfPrݖG’”©Ü', + `¬¿y +( + +111 'mod–_þass' => +$¬gum’ts +['model'], + +112 'moduËName' => +$¬gum’ts +['module'], + +113 'theme' => +$ÝtiÚs +['theme'], + +114 'nÚ_v”bo£_‹m¶©es' => +$ÝtiÚs +['non-verbose-templates'], + +115 'w™h_show' => +$ÝtiÚs +['with-show'], + +116 'sšguÏr' => +$ÝtiÚs +['singular'], + +117 '¶u¿l' => +$ÝtiÚs +['plural'], + +118 'rou‹_´efix' => +$ÝtiÚs +['route-prefix'], + +119 'w™h_´Ý–_rou‹' => +$ÝtiÚs +['with-propel-route'], + +120 'aùiÚs_ba£_þass' => +$ÝtiÚs +['actions-base-class'], + +123 +$moduËDœ + = +sfCÚfig +:: + `g‘ +('sf_­p_moduË_dœ').'/'. +$¬gum’ts +['module']; + +126 +$this +-> + `g‘Fžesy¡em +()-> + `mœrÜ +( +$tmpDœ +. +DIRECTORY_SEPARATOR +.'auto'. + `ucfœ¡ +( +$¬gum’ts +['moduË']), +$moduËDœ +, +sfFšd” +:: + `ty³ +('any')); + +128 ià(! +$ÝtiÚs +['with-show']) + +130 +$this +-> + `g‘Fžesy¡em +()-> + `»move +( +$moduËDœ +.'/templates/showSuccess.php'); + +134 +$fšd” + = +sfFšd” +:: + `ty³ +('fže')-> + `Çme +('*.php'); + +135 +$this +-> + `g‘Fžesy¡em +()-> + `»¶aûTok’s +( +$fšd” +-> + `š +( +$moduËDœ +), '', '', + `¬¿y +('auto'. + `ucfœ¡ +( +$¬gum’ts +['module']) => $arguments['module'])); + +138 +$fšd” + = +sfFšd” +:: + `ty³ +('fže')-> + `Çme +('*.php', '*.yml'); + +139 +$this +-> + `g‘Fžesy¡em +()-> + `»¶aûTok’s +( +$fšd” +-> + `š +( +$moduËDœ +), '##', '##', $this-> +cÚ¡ªts +); + +142 +$this +-> + `g‘Fžesy¡em +()-> + `cÝy +( +sfCÚfig +:: + `g‘ +('sf_symfÚy_lib_dœ'). +DIRECTORY_SEPARATOR +.'sk'.DIRECTORY_SEPARATOR.'g’”©Ü'.DIRECTORY_SEPARATOR.'sk–‘Ú'.DIRECTORY_SEPARATOR.'moduË'.DIRECTORY_SEPARATOR.'‹¡'.DIRECTORY_SEPARATOR.'aùiÚsTe¡.php', sfCÚfig::g‘('sf_‹¡_dœ').DIRECTORY_SEPARATOR.'funùiÚ®'.DIRECTORY_SEPARATOR. +$¬gum’ts +['application'].DIRECTORY_SEPARATOR.$arguments['module'].'ActionsTest.php'); + +145 +$this +-> + `g‘Fžesy¡em +()-> + `»¶aûTok’s +( +sfCÚfig +:: + `g‘ +('sf_‹¡_dœ'). +DIRECTORY_SEPARATOR +.'funùiÚ®'.DIRECTORY_SEPARATOR. +$¬gum’ts +['­¶iÿtiÚ'].DIRECTORY_SEPARATOR.$¬gum’ts['moduË'].'AùiÚsTe¡.php', '##', '##', $this-> +cÚ¡ªts +); + +148 +$this +-> + `g‘Fžesy¡em +()-> + `»move +( +sfFšd” +:: + `ty³ +('ªy')-> + `š +( +$tmpDœ +)); + +149 + } +} + +151 +´Ùeùed + +funùiÚ + +execu‹In™ +( +$¬gum’ts + = +¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +153 +$moduËDœ + = +sfCÚfig +:: + `g‘ +('sf_­p_moduË_dœ').'/'. +$¬gum’ts +['module']; + +156 +$fšd” + = +sfFšd” +:: + `ty³ +('ªy')-> + `disÿrd +('.sf'); + +157 +$dœs + = +$this +-> +cÚfigu¿tiÚ +-> + `g‘G’”©ÜSk–‘ÚDœs +('sfPrݖModuË', +$ÝtiÚs +['theme']); + +159 + `fܗch + ( +$dœs + +as + +$dœ +) + +161 ià( + `is_dœ +( +$dœ +)) + +163 +$this +-> + `g‘Fžesy¡em +()-> + `mœrÜ +( +$dœ +, +$moduËDœ +, +$fšd” +); + +169 ià( + `fže_exi¡s +( +$cÚfig + = +$moduËDœ +.'/lib/configuration.php')) + +171 ià( + `fže_exi¡s +( +$rg‘ + = +$moduËDœ +.'/lib/'. +$¬gum’ts +['module'].'GeneratorConfiguration.class.php')) + +173 +$this +-> + `g‘Fžesy¡em +()-> + `»move +( +$cÚfig +); + +177 +$this +-> + `g‘Fžesy¡em +()-> + `»Çme +( +$cÚfig +, +$rg‘ +); + +182 ià( + `fže_exi¡s +( +$cÚfig + = +$moduËDœ +.'/lib/helper.php')) + +184 ià( + `fže_exi¡s +( +$rg‘ + = +$moduËDœ +.'/lib/'. +$¬gum’ts +['module'].'GeneratorHelper.class.php')) + +186 +$this +-> + `g‘Fžesy¡em +()-> + `»move +( +$cÚfig +); + +190 +$this +-> + `g‘Fžesy¡em +()-> + `»Çme +( +$cÚfig +, +$rg‘ +); + +195 +$this +-> + `g‘Fžesy¡em +()-> + `cÝy +( +sfCÚfig +:: + `g‘ +('sf_symfÚy_lib_dœ'). +DIRECTORY_SEPARATOR +.'sk'.DIRECTORY_SEPARATOR.'g’”©Ü'.DIRECTORY_SEPARATOR.'sk–‘Ú'.DIRECTORY_SEPARATOR.'moduË'.DIRECTORY_SEPARATOR.'‹¡'.DIRECTORY_SEPARATOR.'aùiÚsTe¡.php', sfCÚfig::g‘('sf_‹¡_dœ').DIRECTORY_SEPARATOR.'funùiÚ®'.DIRECTORY_SEPARATOR. +$¬gum’ts +['application'].DIRECTORY_SEPARATOR.$arguments['module'].'ActionsTest.php'); + +198 +$this +-> + `g‘Fžesy¡em +()-> + `»¶aûTok’s +( +sfCÚfig +:: + `g‘ +('sf_‹¡_dœ'). +DIRECTORY_SEPARATOR +.'funùiÚ®'.DIRECTORY_SEPARATOR. +$¬gum’ts +['­¶iÿtiÚ'].DIRECTORY_SEPARATOR.$¬gum’ts['moduË'].'AùiÚsTe¡.php', '##', '##', $this-> +cÚ¡ªts +); + +201 +$fšd” + = +sfFšd” +:: + `ty³ +('fže')-> + `Çme +('*.php', '*.yml'); + +202 +$this +-> +cÚ¡ªts +['CONFIG'] = + `¥rštf +(<<< +EOF + + +203 +mod–_þass +: % +s + + +204 +theme +: % +s + + +205 +nÚ_v”bo£_‹m¶©es +: % +s + + +206 +w™h_show +: % +s + + +207 +sšguÏr +: % +s + + +208 +¶u¿l +: % +s + + +209 +rou‹_´efix +: % +s + + +210 +w™h_´Ý–_rou‹ +: % +s + + +211 +aùiÚs_ba£_þass +: % +s + + +212 +EOF + + +214 +$¬gum’ts +['model'], + +215 +$ÝtiÚs +['theme'], + +216 +$ÝtiÚs +['non-verbose-templates'] ? 'true' : 'false', + +217 +$ÝtiÚs +['with-show'] ? 'true' : 'false', + +218 +$ÝtiÚs +['singular'] ? $options['singular'] : '~', + +219 +$ÝtiÚs +['plural'] ? $options['plural'] : '~', + +220 +$ÝtiÚs +['route-prefix'] ? $options['route-prefix'] : '~', + +221 +$ÝtiÚs +['with-propel-route'] ? $options['with-propel-route'] : 'false', + +222 +$ÝtiÚs +['actions-base-class'] + +224 +$this +-> + `g‘Fžesy¡em +()-> + `»¶aûTok’s +( +$fšd” +-> + `š +( +$moduËDœ +), '##', '##', $this-> +cÚ¡ªts +); + +225 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/sfPropelGraphvizTask.class.php + +1 + `addO±iÚs +( + `¬¿y +( + +29 +Ãw + + `sfCommªdO±iÚ +('phšg-¬g', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED + | sfCommªdO±iÚ:: +IS_ARRAY +, 'Arbitrary…hing‡rgument'), + +32 +$this +-> +Çme¥aû + = 'propel'; + +33 +$this +-> +Çme + = 'graphviz'; + +34 +$this +-> +br›fDesütiÚ + = 'Generates‡ graphviz chart of current object model'; + +35 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +36 +The + [ +´Ý– +: +g¿phviz +| +INFO +] +sk + +ü—‹s + +a + g¿phviz +DOT + + +37 +visu®iz©iÚ +  +autom©ic + +g¿ph + +d¿wšg + +of + +objeù + +mod– +: + +39 [./ +symfÚy + +´Ý– +: +g¿phviz +| +INFO +] + +40 +EOF +; + +46 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +48 +$this +-> + `schemaToXML +( +£lf +:: +DO_NOT_CHECK_SCHEMA +, 'generated-'); + +49 +$this +-> + `cÝyXmlSchemaFromPlugšs +('generated-'); + +50 +$»t + = +$this +-> + `ÿÎPhšg +('g¿phviz', +£lf +:: +CHECK_SCHEMA +); + +51 +$this +-> + `þ—nup +(); + +53  ! +$»t +; + +54 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/sfPropelInsertSqlTask.class.php + +1 + `addO±iÚs +( + `¬¿y +( + +29 +Ãw + + `sfCommªdO±iÚ +('­¶iÿtiÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL +, 'Th­¶iÿtiڂame', +Œue +), + +30 +Ãw + + `sfCommªdO±iÚ +('’v', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Theƒnvironment', 'cli'), + +31 +Ãw + + `sfCommªdO±iÚ +('cÚÃùiÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The connection‚ame',‚ull), + +32 +Ãw + + `sfCommªdO±iÚ +('no-cÚfœm©iÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Do‚ot‡sk for confirmation'), + +33 +Ãw + + `sfCommªdO±iÚ +('phšg-¬g', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED + | sfCommªdO±iÚ:: +IS_ARRAY +, 'Arbitrary…hing‡rgument'), + +36 +$this +-> +Çme¥aû + = 'propel'; + +37 +$this +-> +Çme + = 'insert-sql'; + +38 +$this +-> +br›fDesütiÚ + = 'Inserts SQL for current model'; + +40 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +41 +The + [ +´Ý– +: +𣹠+- +sql +| +INFO +] +sk + +ü—‹s + +d©aba£ + +bËs +: + +43 [./ +symfÚy + +´Ý– +: +𣹠+- +sql +| +INFO +] + +45 +The + +sk + +cÚÃùs + +to + +the + +d©aba£ + +ªd + +execu‹s + +®l + +SQL + +¡©em’ts + + +46 +found + +š + [ +cÚfig +/ +sql + + +68 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + =‡rray()) + +70 +$this +-> + `schemaToXML +( +£lf +:: +DO_NOT_CHECK_SCHEMA +, 'generated-'); + +71 +$this +-> + `cÝyXmlSchemaFromPlugšs +('generated-'); + +73 +$d©aba£Mªag” + = +Ãw + + `sfD©aba£Mªag” +( +$this +-> +cÚfigu¿tiÚ +); + +75 +$´Ý”t›s + = +$this +-> + `g‘Prݔt›s +( +sfCÚfig +:: + `g‘ +('sf_data_dir').'/sql/sqldb.map'); + +76 +$sqls + = + `¬¿y +(); + +77 + `fܗch + ( +$´Ý”t›s + +as + +$fže + => +$cÚÃùiÚ +) + +79 ià( +nuÎ + !=ð +$ÝtiÚs +['cÚÃùiÚ'] && $ÝtiÚs['cÚÃùiÚ'] !ð +$cÚÃùiÚ +) + +84 ià(! + `is£t +( +$sqls +[ +$cÚÃùiÚ +])) + +86 +$sqls +[ +$cÚÃùiÚ +] = + `¬¿y +(); + +89 +$sqls +[ +$cÚÃùiÚ +][] = +$fže +; + +93 ! +$ÝtiÚs +['no-confirmation'] + +95 ! +$this +-> + `askCÚfœm©iÚ +( + `¬¿y +( + +96 'WARNING: Thd©¨šhd©aba£'.( + `couÁ +( +$sqls +) > 1 ? 's' : '').'„elatedohe connection‚ame'.(count($sqls) > 1 ? 's' : ''), + +97 + `¥rštf +(' % wžÈb»moved.', + `im¶ode +(', ', + `¬¿y_keys +( +$sqls +))), + +100 ), 'QUESTION_LARGE', +çl£ +) + +103 +$this +-> + `logSeùiÚ +('propel', 'Task‡borted.'); + +108 +$this +-> +tmpDœ + = + `sys_g‘_‹mp_dœ +().'/´Ý–_š£¹_sql_'. + `¿nd +(11111, 99999); + +109 + `»gi¡”_shutdown_funùiÚ +( + `¬¿y +( +$this +, 'removeTmpDir')); + +110 + `mkdœ +( +$this +-> +tmpDœ +, 0777, +Œue +); + +111 + `fܗch + ( +$sqls + +as + +$cÚÃùiÚ + => +$fžes +) + +113 +$dœ + = +$this +-> +tmpDœ +.'/'. +$cÚÃùiÚ +; + +114 + `mkdœ +( +$dœ +, 0777, +Œue +); + +116 +$cڋÁ + = ''; + +117 + `fܗch + ( +$fžes + +as + +$fže +) + +119 +$cڋÁ + .= "$file=$connection\n"; + +120 + `cÝy +( +sfCÚfig +:: + `g‘ +('sf_d©a_dœ').'/sql/'. +$fže +, +$dœ +.'/'.$file); + +123 + `fže_put_cڋÁs +( +$dœ +.'/sqldb.m­', +$cڋÁ +); + +124 +$´Ý”t›s + = +$this +-> + `g‘PhšgPrݔt›sFÜCÚÃùiÚ +( +$d©aba£Mªag” +, +$cÚÃùiÚ +); + +125 +$´Ý”t›s +['´Ý–.sql.dœ'] = +$dœ +; + +127 +$»t + = +$this +-> + `ÿÎPhšg +('š£¹-sql', +£lf +:: +CHECK_SCHEMA +, +$´Ý”t›s +); + +129 +$this +-> + `»moveTmpDœ +(); + +131 +$this +-> + `þ—nup +(); + +133  ! +$»t +; + +136 +public + +funùiÚ + + `»moveTmpDœ +() + +138 ià(! + `is_dœ +( +$this +-> +tmpDœ +)) + +143 +sfToÞk™ +:: + `þ—rDœeùÜy +( +$this +-> +tmpDœ +); + +144 + `rmdœ +( +$this +-> +tmpDœ +); + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/sfPropelSchemaToXmlTask.class.php + +1 +Çme¥aû + = 'propel'; + +29 +$this +-> +Çme + = 'schema-to-xml'; + +30 +$this +-> +br›fDesütiÚ + = 'Creates schema.xml from schema.yml'; + +32 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +33 +The + [ +´Ý– +: +schema +- +to +- +xml +| +INFO +] +sk + +cÚv”ts + +YML + +schemas +Ø +XML +: + +35 [./ +symfÚy + +´Ý– +: +schema +- +to +- +xml +| +INFO +] + +36 +EOF +; + +42 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +44 +$this +-> + `schemaToXML +( +£lf +:: +CHECK_SCHEMA +); + +45 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/task/sfPropelSchemaToYmlTask.class.php + +1 +Çme¥aû + = 'propel'; + +29 +$this +-> +Çme + = 'schema-to-yml'; + +30 +$this +-> +br›fDesütiÚ + = 'Creates schema.yml from schema.xml'; + +32 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +33 +The + [ +´Ý– +: +schema +- +to +- +yml +| +INFO +] +sk + +cÚv”ts + +XML + +schemas +Ø +YML +: + +35 [./ +symfÚy + +´Ý– +: +schema +- +to +- +yml +| +INFO +] + +36 +EOF +; + +42 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +44 +$this +-> + `schemaToYML +( +£lf +:: +CHECK_SCHEMA +); + +45 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/test/sfTesterPropel.class.php + +1 +$cÚd™iÚ +) + +57 +$cÞumn + = + `ÿÎ_u£r_func +( + `¬¿y +( + `cÚ¡ªt +( +$mod– +.'::PEER'), 'Œª¦©eF›ldName'), $cÞumn, +Ba£P“r +:: +TYPE_FIELDNAME +, Ba£P“r:: +TYPE_COLNAME +); + +58 +$ݔ©Ü + = +Cr™”Ÿ +:: +EQUAL +; + +59 ià('!' =ð +$cÚd™iÚ +[0]) + +61 +$ݔ©Ü + = +çl£ + !=ð + `¡½os +( +$cÚd™iÚ +, '%'è? +Cr™”Ÿ +:: +NOT_LIKE + : Cr™”Ÿ:: +NOT_EQUAL +; + +62 +$cÚd™iÚ + = + `sub¡r +($condition, 1); + +64 ià( +çl£ + !=ð + `¡½os +( +$cÚd™iÚ +, '%')) + +66 +$ݔ©Ü + = +Cr™”Ÿ +:: +LIKE +; + +69 +$ü™”Ÿ +-> + `add +( +$cÞumn +, +$cÚd™iÚ +, +$ݔ©Ü +); + +73 +$objeùs + = + `ÿÎ_u£r_func +( + `¬¿y +( + `cÚ¡ªt +( +$mod– +.'::PEER'), 'doS–eù'), +$ü™”Ÿ +); + +75 ià( +çl£ + ==ð +$v®ue +) + +77 +$this +-> +‹¡” +-> + `is +( + `couÁ +( +$objeùs +), 0, + `¥rštf +('nØ% objeùh© m©che thü™”Ÿ ha b“Àfound', +$mod– +)); + +79 ià( +Œue + ==ð +$v®ue +) + +81 +$this +-> +‹¡” +-> + `cmp_ok +( + `couÁ +( +$objeùs +), '>', 0, + `¥rštf +('% objeù th© m©che thü™”Ÿ havb“Àfound', +$mod– +)); + +83 ià( + `is_št +( +$v®ue +)) + +85 +$this +-> +‹¡” +-> + `is +( + `couÁ +( +$objeùs +), +$v®ue +, + `¥rštf +('"%s" % objeù havb“Àfound', $v®ue, +$mod– +)); + +89 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +('The "check()" method does‚otakeshis kind of‡rgument.'); + +92  +$this +-> + `g‘ObjeùToR‘uº +(); + +93 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/validator/sfValidatorPropelChoice.class.php + +1 + `addRequœedO±iÚ +('model'); + +40 +$this +-> + `addO±iÚ +('ü™”Ÿ', +nuÎ +); + +41 +$this +-> + `addO±iÚ +('cÞumn', +nuÎ +); + +42 +$this +-> + `addO±iÚ +('cÚÃùiÚ', +nuÎ +); + +43 +$this +-> + `addO±iÚ +('muɝË', +çl£ +); + +44 +$this +-> + `addO±iÚ +('min'); + +45 +$this +-> + `addO±iÚ +('max'); + +47 +$this +-> + `addMes§ge +('min', 'At†east %min% values must be selected (%count% values selected).'); + +48 +$this +-> + `addMes§ge +('max', 'At most %max% values must be selected (%count% values selected).'); + +54 +´Ùeùed + +funùiÚ + + $doC˪ +( +$v®ue +) + +56 +$ü™”Ÿ + = +nuÎ + ==ð +$this +-> + `g‘O±iÚ +('ü™”Ÿ'è? +Ãw + + `Cr™”Ÿ +(è: +þÚe + $this->getOption('criteria'); + +58 ià( +$this +-> + `g‘O±iÚ +('multiple')) + +60 ià(! + `is_¬¿y +( +$v®ue +)) + +62 +$v®ue + = + `¬¿y +($value); + +65 +$couÁ + = + `couÁ +( +$v®ue +); + +67 ià( +$this +-> + `hasO±iÚ +('mš'è&& +$couÁ + < $this-> + `g‘O±iÚ +('min')) + +69 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'mš', + `¬¿y +('couÁ' => +$couÁ +, 'mš' => $this-> + `g‘O±iÚ +('min'))); + +72 ià( +$this +-> + `hasO±iÚ +('max'è&& +$couÁ + > $this-> + `g‘O±iÚ +('max')) + +74 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'max', + `¬¿y +('couÁ' => +$couÁ +, 'max' => $this-> + `g‘O±iÚ +('max'))); + +77 +$ü™”Ÿ +-> + `addAnd +( +$this +-> + `g‘CÞumn +(), +$v®ue +, +Cr™”Ÿ +:: +IN +); + +79 +$dbcouÁ + = + `ÿÎ_u£r_func +( + `¬¿y +( + `cÚ¡ªt +( +$this +-> + `g‘O±iÚ +('mod–').'::PEER'), 'doCouÁ'), +$ü™”Ÿ +, +çl£ +, $this->getOption('connection')); + +81 ià( +$dbcouÁ + !ð +$couÁ +) + +83 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'šv®id', + `¬¿y +('v®ue' => +$v®ue +)); + +88 +$ü™”Ÿ +-> + `addAnd +( +$this +-> + `g‘CÞumn +(), +$v®ue +); + +90 +$dbcouÁ + = + `ÿÎ_u£r_func +( + `¬¿y +( + `cÚ¡ªt +( +$this +-> + `g‘O±iÚ +('mod–').'::PEER'), 'doCouÁ'), +$ü™”Ÿ +, +çl£ +, $this->getOption('connection')); + +92 ià(0 ==ð +$dbcouÁ +) + +94 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'šv®id', + `¬¿y +('v®ue' => +$v®ue +)); + +98  +$v®ue +; + +99 + } +} + +108 +´Ùeùed + +funùiÚ + + $g‘CÞumn +() + +110 ià( +$this +-> + `g‘O±iÚ +('column')) + +112 +$cÞumnName + = +$this +-> + `g‘O±iÚ +('column'); + +113 +$äom + = +Ba£P“r +:: +TYPE_FIELDNAME +; + +117 +$m­ + = + `ÿÎ_u£r_func +( + `¬¿y +( + `cÚ¡ªt +( +$this +-> + `g‘O±iÚ +('model').'::PEER'), 'getTableMap')); + +118 + `fܗch + ( +$m­ +-> + `g‘CÞumns +(è +as + +$cÞumn +) + +120 ià( +$cÞumn +-> + `isPrim¬yKey +()) + +122 +$cÞumnName + = +$cÞumn +-> + `g‘PhpName +(); + +126 +$äom + = +Ba£P“r +:: +TYPE_PHPNAME +; + +129  + `ÿÎ_u£r_func +( + `¬¿y +( + `cÚ¡ªt +( +$this +-> + `g‘O±iÚ +('mod–').'::PEER'), 'Œª¦©eF›ldName'), +$cÞumnName +, +$äom +, +Ba£P“r +:: +TYPE_COLNAME +); + +130 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/validator/sfValidatorPropelUnique.class.php + +1 + `addRequœedO±iÚ +('model'); + +57 +$this +-> + `addRequœedO±iÚ +('column'); + +58 +$this +-> + `addO±iÚ +('f›ld', +nuÎ +); + +59 +$this +-> + `addO±iÚ +('´im¬y_key', +nuÎ +); + +60 +$this +-> + `addO±iÚ +('cÚÃùiÚ', +nuÎ +); + +61 +$this +-> + `addO±iÚ +('throw_glob®_”rÜ', +çl£ +); + +63 +$this +-> + `£tMes§ge +('invalid', 'An object withhe same "%column%"‡lreadyƒxist.'); + +64 + } +} + +69 +´Ùeùed + +funùiÚ + + $doC˪ +( +$v®ues +) + +71 ià(! + `is_¬¿y +( +$v®ues +)) + +73 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +('You must…ass‡n‡rray…arameterohe clean() method (this validator can only be used‡s‡…ost validator).'); + +76 ià(! + `is_¬¿y +( +$this +-> + `g‘O±iÚ +('column'))) + +78 +$this +-> + `£tO±iÚ +('cÞumn', + `¬¿y +($this-> + `g‘O±iÚ +('column'))); + +80 +$cÞumns + = +$this +-> + `g‘O±iÚ +('column'); + +82 ià(! + `is_¬¿y +( +$f›ld + = +$this +-> + `g‘O±iÚ +('field'))) + +84 +$this +-> + `£tO±iÚ +('f›ld', +$f›ld + ? + `¬¿y +($field) :‡rray()); + +86 +$f›lds + = +$this +-> + `g‘O±iÚ +('field'); + +88 +$ü™”Ÿ + = +Ãw + + `Cr™”Ÿ +(); + +89 + `fܗch + ( +$cÞumns + +as + +$i + => +$cÞumn +) + +91 +$Çme + = + `is£t +( +$f›lds +[ +$i +]è? $f›lds[$i] : +$cÞumn +; + +92 ià(! + `¬¿y_key_exi¡s +( +$Çme +, +$v®ues +)) + +95  +$v®ues +; + +98 +$cÞName + = + `ÿÎ_u£r_func +( + `¬¿y +( + `cÚ¡ªt +( +$this +-> + `g‘O±iÚ +('mod–').'::PEER'), 'Œª¦©eF›ldName'), +$cÞumn +, +Ba£P“r +:: +TYPE_FIELDNAME +, Ba£P“r:: +TYPE_COLNAME +); + +100 +$ü™”Ÿ +-> + `add +( +$cÞName +, +$v®ues +[ +$Çme +]); + +103 +$objeù + = + `ÿÎ_u£r_func +( + `¬¿y +( + `cÚ¡ªt +( +$this +-> + `g‘O±iÚ +('mod–').'::PEER'), 'doS–eùOÃ'), +$ü™”Ÿ +, $this->getOption('connection')); + +106 ià( +nuÎ + ==ð +$objeù + || +$this +-> + `isUpd©e +($objeù, +$v®ues +)) + +108  +$v®ues +; + +111 +$”rÜ + = +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'šv®id', + `¬¿y +('cÞumn' => + `im¶ode +(', ', $this-> + `g‘O±iÚ +('column')))); + +113 ià( +$this +-> + `g‘O±iÚ +('throw_global_error')) + +115 +throw + +$”rÜ +; + +118 +throw + +Ãw + + `sfV®id©ÜE¼ÜSchema +( +$this +, + `¬¿y +( + `is£t +( +$f›lds +[0]è? $f›lds[0] : +$cÞumns +[0] => +$”rÜ +)); + +119 + } +} + +129 +´Ùeùed + +funùiÚ + + $isUpd©e +( +Ba£Objeù + +$objeù +, +$v®ues +) + +132 + `fܗch + ( +$this +-> + `g‘Prim¬yKeys +(è +as + +$cÞumn +) + +134 +$cÞumnPhpName + = + `ÿÎ_u£r_func +( + `¬¿y +( + `cÚ¡ªt +( +$this +-> + `g‘O±iÚ +('mod–').'::PEER'), 'Œª¦©eF›ldName'), +$cÞumn +, +Ba£P“r +:: +TYPE_FIELDNAME +, Ba£P“r:: +TYPE_PHPNAME +); + +135 +$m‘hod + = 'g‘'. +$cÞumnPhpName +; + +136 ià(! + `is£t +( +$v®ues +[ +$cÞumn +]è +Ü + +$objeù +-> + `$m‘hod +() != $values[$column]) + +138  +çl£ +; + +142  +Œue +; + +143 + } +} + +150 +´Ùeùed + +funùiÚ + + $g‘Prim¬yKeys +() + +152 ià( +nuÎ + ==ð +$this +-> + `g‘O±iÚ +('primary_key')) + +154 +$´im¬yKeys + = + `¬¿y +(); + +155 +$bËM­ + = + `ÿÎ_u£r_func +( + `¬¿y +( + `cÚ¡ªt +( +$this +-> + `g‘O±iÚ +('model').'::PEER'), 'getTableMap')); + +156 + `fܗch + ( +$bËM­ +-> + `g‘CÞumns +(è +as + +$cÞumn +) + +158 ià(! +$cÞumn +-> + `isPrim¬yKey +()) + +163 +$´im¬yKeys +[] = + `ÿÎ_u£r_func +( + `¬¿y +( + `cÚ¡ªt +( +$this +-> + `g‘O±iÚ +('mod–').'::PEER'), 'Œª¦©eF›ldName'), +$cÞumn +-> + `g‘PhpName +(), +Ba£P“r +:: +TYPE_PHPNAME +, Ba£P“r:: +TYPE_FIELDNAME +); + +166 +$this +-> + `£tO±iÚ +('´im¬y_key', +$´im¬yKeys +); + +169 ià(! + `is_¬¿y +( +$this +-> + `g‘O±iÚ +('primary_key'))) + +171 +$this +-> + `£tO±iÚ +('´im¬y_key', + `¬¿y +($this-> + `g‘O±iÚ +('primary_key'))); + +174  +$this +-> + `g‘O±iÚ +('primary_key'); + +175 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/BuildEvent.php + +1 +´ojeù + = +$sourû +; + +94 +$this +-> +rg‘ + = +nuÎ +; + +95 +$this +-> +sk + = +nuÎ +; + +96 } + `–£if + ( +$sourû + +š¡ªûof + +T¬g‘ +) { + +97 +$this +-> +´ojeù + = +$sourû +-> + `g‘Projeù +(); + +98 +$this +-> +rg‘ + = +$sourû +; + +99 +$this +-> +sk + = +nuÎ +; + +100 } + `–£if + ( +$sourû + +š¡ªûof + +Task +) { + +101 +$this +-> +´ojeù + = +$sourû +-> + `g‘Projeù +(); + +102 +$this +-> +rg‘ + = +$sourû +-> + `g‘OwnšgT¬g‘ +(); + +103 +$this +-> +sk + = +$sourû +; + +105 +throw + +Ãw + + `Exû±iÚ +("Can‚ot construct BuildEvent, unknown source given."); + +115 +public + +funùiÚ + + $£tMes§ge +( +$mes§ge +, +$´iܙy +) { + +116 +$this +-> +mes§ge + = ( +¡ršg +è +$mes§ge +; + +117 +$this +-> +´iܙy + = (è +$´iܙy +; + +118 + } +} + +125 +public + +funùiÚ + + $£tExû±iÚ +( +$exû±iÚ +) { + +126 +$this +-> +exû±iÚ + = +$exû±iÚ +; + +127 + } +} + +137 +public + +funùiÚ + + $g‘Projeù +() { + +138  +$this +-> +´ojeù +; + +139 + } +} + +149 +public + +funùiÚ + + $g‘T¬g‘ +() { + +150  +$this +-> +rg‘ +; + +151 + } +} + +161 +public + +funùiÚ + + $g‘Task +() { + +162  +$this +-> +sk +; + +163 + } +} + +171 +funùiÚ + + $g‘Mes§ge +() { + +172  +$this +-> +mes§ge +; + +173 + } +} + +181 +funùiÚ + + $g‘Priܙy +() { + +182  +$this +-> +´iܙy +; + +183 + } +} + +195 +public + +funùiÚ + + $g‘Exû±iÚ +() { + +196  +$this +-> +exû±iÚ +; + +197 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/BuildException.php + +1 +ÿu£ + = +$ÿu£ +; + +85 +$this +-> +mes§ge + .ð" [w¿µed: " . +$ÿu£ +-> + `g‘Mes§ge +() ."]"; + +88 ià( +$loc + !=ð +nuÎ +) { + +89 +$this +-> + `£tLoÿtiÚ +( +$loc +); + +98 +public + +funùiÚ + + $g‘Cau£ +() { + +99  +$this +-> +ÿu£ +; + +100 + } +} + +107 +public + +funùiÚ + + $g‘LoÿtiÚ +() { + +108  +$this +-> +loÿtiÚ +; + +109 + } +} + +116 +public + +funùiÚ + + $£tLoÿtiÚ +( +LoÿtiÚ + +$loc +) { + +117 +$this +-> +loÿtiÚ + = +$loc +; + +118 +$this +-> +mes§ge + = +$loc +-> + `toSŒšg +() . ': ' . $this->message; + +119 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/BuildListener.php + +1 +ÿu£ + = +$ÿu£ +; + +70 +$this +-> +mes§ge + .ð" [w¿µed: " . +$ÿu£ +-> + `g‘Mes§ge +() ."]"; + +79 +public + +funùiÚ + + $g‘Cau£ +() { + +80  +$this +-> +ÿu£ +; + +81 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/IntrospectionHelper.php + +1 +b—n + = +Ãw + + `ReæeùiÚCÏss +( +$þass +); + +133 + `fܗch +( +$this +-> +b—n +-> + `g‘M‘hods +(è +as + +$m‘hod +) { + +135 ià( +$m‘hod +-> + `isPublic +()) { + +140 +$Çme + = + `¡¹Þow” +( +$m‘hod +-> + `g‘Name +()); + +145 ià( +$Çme + === "setlocation" || $name === "settasktype" || $name === "addtask") { + +149 ià( +$Çme + === "addtext") { + +151 +$this +-> +m‘hodAddText + = +$m‘hod +; + +153 } + `–£if + ( + `¡½os +( +$Çme +, "setlistening") === 0) { + +163 ià( + `couÁ +( +$m‘hod +-> + `g‘P¬am‘”s +()) !== 1) { + +164 +throw + +Ãw + + `BuždExû±iÚ +( +$m‘hod +-> + `g‘Deþ¬šgCÏss +()-> + `g‘Name +()."::".$method->getName()."() mustakeƒxactly one…arameter."); + +167 +$this +-> +¦ÙLi¡’”s +[ +$Çme +] = +$m‘hod +; + +169 } + `–£if + ( + `¡½os +( +$Çme +, "set") === 0) { + +173 ià( + `couÁ +( +$m‘hod +-> + `g‘P¬am‘”s +()) !== 1) { + +174 +throw + +Ãw + + `BuždExû±iÚ +( +$m‘hod +-> + `g‘Deþ¬šgCÏss +()-> + `g‘Name +()."::".$method->getName()."() mustakeƒxactly one…arameter."); + +177 +$this +-> +©Œibu‹S‘‹rs +[ +$Çme +] = +$m‘hod +; + +179 } + `–£if + ( + `¡½os +( +$Çme +, "create") === 0) { + +181 ià( + `couÁ +( +$m‘hod +-> + `g‘P¬am‘”s +()) > 0) { + +182 +throw + +Ãw + + `BuždExû±iÚ +( +$m‘hod +-> + `g‘Deþ¬šgCÏss +()-> + `g‘Name +()."::".$method->getName()."() may‚otake‡ny…arameters."); + +196 + `´eg_m©ch +('/@»tuº[\s]+([\w]+)/', +$m‘hod +-> + `g‘DocComm’t +(), +$m©ches +); + +197 ià(! + `em±y +( +$m©ches +[1]è&& + `þass_exi¡s +($m©ches[1], +çl£ +)) { + +198 +$this +-> +áedTy³s +[ +$Çme +] = +$m©ches +[1]; + +202 +$this +-> +áedTy³s +[ +$Çme +] = $this-> + `g‘PrݔtyName +($name, "create"); + +205 +$this +-> +áedC»©Üs +[ +$Çme +] = +$m‘hod +; + +207 } + `–£if + ( + `¡½os +( +$Çme +, "addconfigured") === 0) { + +212 +$·¿ms + = +$m‘hod +-> + `g‘P¬am‘”s +(); + +214 ià( + `couÁ +( +$·¿ms +) < 1) { + +215 +throw + +Ãw + + `BuždExû±iÚ +( +$m‘hod +-> + `g‘Deþ¬šgCÏss +()-> + `g‘Name +()."::".$method->getName()."() mustake‡t†east one…arameter."); + +218 ià( + `couÁ +( +$·¿ms +) > 1) { + +219 +$this +-> + `w¬n +( +$m‘hod +-> + `g‘Deþ¬šgCÏss +()-> + `g‘Name +()."::".$method->getName()."()akes morehan one…arameter. (IH only useshe first)"); + +222 +$þas¢ame + = +nuÎ +; + +224 ià(( +$hšt + = +$·¿ms +[0]-> + `g‘CÏss +()è!=ð +nuÎ +) { + +225 +$þas¢ame + = +$hšt +-> + `g‘Name +(); + +228 ià( +$þas¢ame + ==ð +nuÎ +) { + +229 +throw + +Ãw + + `BuždExû±iÚ +( +$m‘hod +-> + `g‘Deþ¬šgCÏss +()-> + `g‘Name +()."::".$method->getName()."() method MUST use‡ class hinto indicatehe classype of…arameter."); + +232 +$this +-> +áedTy³s +[ +$Çme +] = +$þas¢ame +; + +234 +$this +-> +áedStܔs +[ +$Çme +] = +$m‘hod +; + +236 } + `–£if + ( + `¡½os +( +$Çme +, "add") === 0) { + +241 +$·¿ms + = +$m‘hod +-> + `g‘P¬am‘”s +(); + +242 ià( + `couÁ +( +$·¿ms +) < 1) { + +243 +throw + +Ãw + + `BuždExû±iÚ +( +$m‘hod +-> + `g‘Deþ¬šgCÏss +()-> + `g‘Name +()."::".$method->getName()."() mustake‡t†east one…arameter."); + +246 ià( + `couÁ +( +$·¿ms +) > 1) { + +247 +$this +-> + `w¬n +( +$m‘hod +-> + `g‘Deþ¬šgCÏss +()-> + `g‘Name +()."::".$method->getName()."()akes morehan one…arameter. (IH only useshe first)"); + +250 +$þas¢ame + = +nuÎ +; + +252 ià(( +$hšt + = +$·¿ms +[0]-> + `g‘CÏss +()è!=ð +nuÎ +) { + +253 +$þas¢ame + = +$hšt +-> + `g‘Name +(); + +258 ià( +$þas¢ame + ==ð +nuÎ +) { + +259 +throw + +Ãw + + `BuždExû±iÚ +( +$m‘hod +-> + `g‘Deþ¬šgCÏss +()-> + `g‘Name +()."::".$method->getName()."() method MUST use‡ class hinto indicatehe classype of…arameter."); + +262 +$this +-> +áedC»©Üs +[ +$Çme +] = +$m‘hod +; + +266 + } +} + +270 +funùiÚ + + $£tA‰ribu‹ +( +Projeù + +$´ojeù +, +$–em’t +, +$©Œibu‹Name +, & +$v®ue +) { + +282 ià( +SŒšgH–³r +:: + `isSlÙV¬ +( +$v®ue +)) { + +284 +$as + = "£Ži¡’šg" . + `¡¹Þow” +( +$©Œibu‹Name +); + +286 ià(! + `is£t +( +$this +-> +¦ÙLi¡’”s +[ +$as +])) { + +287 +$msg + = +$this +-> + `g‘EËm’tName +( +$´ojeù +, +$–em’t +) . " doesn't support‡ slot-listening '$attributeName'‡ttribute."; + +288 +throw + +Ãw + + `BuždExû±iÚ +( +$msg +); + +291 +$m‘hod + = +$this +-> +¦ÙLi¡’”s +[ +$as +]; + +293 +$key + = +SŒšgH–³r +:: + `¦ÙV¬ +( +$v®ue +); + +294 +$v®ue + = +Regi¡” +:: + `g‘SlÙ +( +$key +); + +300 +$as + = "£t". + `¡¹Þow” +( +$©Œibu‹Name +); + +302 ià(! + `is£t +( +$this +-> +©Œibu‹S‘‹rs +[ +$as +])) { + +303 +$msg + = +$this +-> + `g‘EËm’tName +( +$´ojeù +, +$–em’t +) . " doesn't supporthe '$attributeName'‡ttribute."; + +304 +throw + +Ãw + + `BuždExû±iÚ +( +$msg +); + +307 +$m‘hod + = +$this +-> +©Œibu‹S‘‹rs +[ +$as +]; + +309 ià( +$as + == "setrefid") { + +310 +$v®ue + = +Ãw + + `Reã»nû +($value); + +314 +$v®ue + = + `html_’t™y_decode +($value); + +318 ià( +SŒšgH–³r +:: + `isBoޗn +( +$v®ue +)) { + +320 +$v®ue + = +SŒšgH–³r +:: + `boޗnV®ue +($value); + +325 +$·¿ms + = +$m‘hod +-> + `g‘P¬am‘”s +(); + +327 +$þas¢ame + = +nuÎ +; + +329 ià(( +$hšt + = +$·¿ms +[0]-> + `g‘CÏss +()è!=ð +nuÎ +) { + +330 +$þas¢ame + = +$hšt +-> + `g‘Name +(); + +334 ià( +$þas¢ame + !=ð +nuÎ +) { + +335  + `¡¹Þow” +( +$þas¢ame +)) { + +337 +$v®ue + = +$´ojeù +-> + `»sÞveFže +($value); + +340 +$v®ue + = +Ãw + + `P©h +( +$´ojeù +, $value); + +343 +$v®ue + = +Ãw + + `Reã»nû +($value); + +354 +Œy + { + +355 +$´ojeù +-> + `log +(" -ÿΚg s‘‹¸". +$m‘hod +-> + `g‘Deþ¬šgCÏss +()-> + `g‘Name +()."::".$m‘hod->g‘Name()."()", +Projeù +:: +MSG_DEBUG +); + +356 +$m‘hod +-> + `švoke +( +$–em’t +, +$v®ue +); + +357 } + `ÿtch +( +Exû±iÚ + +$exc +) { + +358 +throw + +Ãw + + `BuždExû±iÚ +( +$exc +); + +361 + } +} + +364 +funùiÚ + + $addText +( +Projeù + +$´ojeù +, +$–em’t +, +$‹xt +) { + +365 ià( +$this +-> +m‘hodAddText + ==ð +nuÎ +) { + +366 +$msg + = +$this +-> + `g‘EËm’tName +( +$´ojeù +, +$–em’t +)." doesn't support‚estedext data."; + +367 +throw + +Ãw + + `BuždExû±iÚ +( +$msg +); + +369 +Œy + { + +370 +$m‘hod + = +$this +-> +m‘hodAddText +; + +371 +$m‘hod +-> + `švoke +( +$–em’t +, +$‹xt +); + +372 } + `ÿtch + ( +Exû±iÚ + +$exc +) { + +373 +throw + +Ãw + + `BuždExû±iÚ +( +$exc +); + +375 + } +} + +384 +funùiÚ + + $ü—‹EËm’t +( +Projeù + +$´ojeù +, +$–em’t +, +$–em’tName +) { + +386 +$addM‘hod + = "add". + `¡¹Þow” +( +$–em’tName +); + +387 +$ü—‹M‘hod + = "ü—‹". + `¡¹Þow” +( +$–em’tName +); + +388 +$áedEËm’t + = +nuÎ +; + +390 ià( + `is£t +( +$this +-> +áedC»©Üs +[ +$ü—‹M‘hod +])) { + +392 +$m‘hod + = +$this +-> +áedC»©Üs +[ +$ü—‹M‘hod +]; + +393 +Œy + { + +394 +$´ojeù +-> + `log +(" -ÿΚg c»©Ü ". +$m‘hod +-> + `g‘Deþ¬šgCÏss +()-> + `g‘Name +()."::".$m‘hod->g‘Name()."()", +Projeù +:: +MSG_DEBUG +); + +395 +$áedEËm’t + = +$m‘hod +-> + `švoke +( +$–em’t +); + +396 } + `ÿtch + ( +Exû±iÚ + +$exc +) { + +397 +throw + +Ãw + + `BuždExû±iÚ +( +$exc +); + +400 } + `–£if + ( + `is£t +( +$this +-> +áedC»©Üs +[ +$addM‘hod +])) { + +402 +$m‘hod + = +$this +-> +áedC»©Üs +[ +$addM‘hod +]; + +406 +Œy + { + +408 +$´ojeù +-> + `log +(" -ÿΚg‡dd” ". +$m‘hod +-> + `g‘Deþ¬šgCÏss +()-> + `g‘Name +()."::".$m‘hod->g‘Name()."()", +Projeù +:: +MSG_DEBUG +); + +411 +$·¿ms + = +$m‘hod +-> + `g‘P¬am‘”s +(); + +413 +$þas¢ame + = +nuÎ +; + +415 ià(( +$hšt + = +$·¿ms +[0]-> + `g‘CÏss +()è!=ð +nuÎ +) { + +416 +$þas¢ame + = +$hšt +-> + `g‘Name +(); + +420 +$áedEËm’t + = +Ãw + + `$þas¢ame +(); + +422 +$m‘hod +-> + `švoke +( +$–em’t +, +$áedEËm’t +); + +424 } + `ÿtch + ( +Exû±iÚ + +$exc +) { + +425 +throw + +Ãw + + `BuždExû±iÚ +( +$exc +); + +428 +$msg + = +$this +-> + `g‘EËm’tName +( +$´ojeù +, +$–em’t +) . " doesn't supporthe '$elementName' creator/adder."; + +429 +throw + +Ãw + + `BuždExû±iÚ +( +$msg +); + +432 ià( +$áedEËm’t + +š¡ªûof + +ProjeùCompڒt +) { + +433 +$áedEËm’t +-> + `£tProjeù +( +$´ojeù +); + +436  +$áedEËm’t +; + +437 + } +} + +444 +funùiÚ + + $¡ÜeEËm’t +( +$´ojeù +, +$–em’t +, +$chžd +, +$–em’tName + = +nuÎ +) { + +446 ià( +$–em’tName + ==ð +nuÎ +) { + +450 +$¡Ü” + = "addcÚfigu»d". + `¡¹Þow” +( +$–em’tName +); + +452 ià( + `is£t +( +$this +-> +áedStܔs +[ +$¡Ü” +])) { + +454 +$m‘hod + = +$this +-> +áedStܔs +[ +$¡Ü” +]; + +456 +Œy + { + +457 +$´ojeù +-> + `log +(" -ÿΚg stܔ ". +$m‘hod +-> + `g‘Deþ¬šgCÏss +()-> + `g‘Name +()."::".$m‘hod->g‘Name()."()", +Projeù +:: +MSG_DEBUG +); + +458 +$m‘hod +-> + `švoke +( +$–em’t +, +$chžd +); + +459 } + `ÿtch + ( +Exû±iÚ + +$exc +) { + +460 +throw + +Ãw + + `BuždExû±iÚ +( +$exc +); + +464 + } +} + +467 +funùiÚ + + $suµÜtsCh¬aù”s +() { + +468  ( +$this +-> +m‘hodAddText + !=ð +nuÎ +); + +469 + } +} + +472 +funùiÚ + + $g‘A‰ribu‹s +() { + +473 +$©Œibs + = + `¬¿y +(); + +474 + `fܗch + ( + `¬¿y_keys +( +$this +-> +©Œibu‹S‘‹rs +è +as + +$£‰” +) { + +475 +$©Œibs +[] = +$this +-> + `g‘PrݔtyName +( +$£‰” +, "set"); + +477  +$©Œibs +; + +478 + } +} + +481 +funùiÚ + + $g‘Ne¡edEËm’ts +() { + +482  +$this +-> +áedTy³s +; + +483 + } +} + +495 +funùiÚ + + $g‘EËm’tName +( +Projeù + +$´ojeù +, +$–em’t +) { + +497 +$skdefs + = +$´ojeù +-> + `g‘TaskDefš™iÚs +(); + +498 +$ty³defs + = +$´ojeù +-> + `g‘D©aTy³Defš™iÚs +(); + +502 +$–CÏss + = + `g‘_þass +( +$–em’t +); + +504 ià(! + `š_¬¿y +('g‘Tag', + `g‘_þass_m‘hods +( +$–CÏss +))) { + +507 + `fܗch +( + `¬¿y_m”ge +( +$skdefs +, +$ty³defs +è +as + +$–Name + => +$þass +) { + +508 ià(0 ==ð + `¡rÿ£cmp +( +$–CÏss +, +SŒšgH–³r +:: + `unqu®ify +( +$þass +))) { + +509  +$þass +; + +515 +$–Name + = +$–em’t +-> + `g‘Tag +(); + +516 ià( + `is£t +( +$skdefs +[ +$–Name +])) { + +517  +$skdefs +[ +$–Name +]; + +518 } + `–£if + ( + `is£t +( +$ty³defs +[ +$–Name +])) { + +520  +$ty³defs +[ +$–Name +]; + +525 + } +} + +528 +funùiÚ + + $g‘PrݔtyName +( +$m‘hodName +, +$´efix +) { + +529 +$¡¬t + = + `¡¾’ +( +$´efix +); + +530  + `¡¹Þow” +( + `sub¡r +( +$m‘hodName +, +$¡¬t +)); + +531 + } +} + +536 +funùiÚ + + $w¬n +( +$msg +) { + +537 ià( +Phšg +:: + `g‘MsgOuutLev– +(è==ð +Projeù +:: +MSG_DEBUG +) { + +538 + `´št +("[IÁro¥eùiÚH–³r] " . +$msg + . "\n"); + +540 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/Phing.php + +1 + `execu‹ +( +$¬gs +); + +158 } + `ÿtch + ( +Exû±iÚ + +$exc +) { + +159 +£lf +:: + `hªdËLogfže +(); + +160 +throw + +$exc +; + +163 ià( +$add™iÚ®U£rPrݔt›s + !=ð +nuÎ +) { + +164 + `fܗch +( +$add™iÚ®U£rPrݔt›s + +as + +$key + => +$v®ue +) { + +165 +$m +-> + `£tDefšedPrݔty +( +$key +, +$v®ue +); + +169 +Œy + { + +170 +$m +-> + `runBužd +(); + +171 } + `ÿtch +( +Exû±iÚ + +$exc +) { + +172 +£lf +:: + `hªdËLogfže +(); + +173 +throw + +$exc +; + +177 +£lf +:: + `hªdËLogfže +(); + +184 +public +  +funùiÚ + + $´štMes§ge +( +Exû±iÚ + +$t +) { + +185 ià( +£lf +:: +$”r + ==ð +nuÎ +) { + +186 +£lf +:: + `š™ŸlizeOuutSŒ—ms +(); + +188 ià( +£lf +:: + `g‘MsgOuutLev– +(è>ð +Projeù +:: +MSG_VERBOSE +) { + +189 +£lf +:: +$”r +-> + `wr™e +( +$t +-> + `__toSŒšg +(è. +PHP_EOL +); + +191 +£lf +:: +$”r +-> + `wr™e +( +$t +-> + `g‘Mes§ge +(è. +PHP_EOL +); + +193 + } +} + +198 +´iv©e +  +funùiÚ + + $š™ŸlizeOuutSŒ—ms +() { + +199 ià( +£lf +:: +$out + ==ð +nuÎ +) { + +200 +£lf +:: +$out + = +Ãw + + `OuutSŒ—m +( + `fݒ +("php://stdout", "w")); + +202 ià( +£lf +:: +$”r + ==ð +nuÎ +) { + +203 +£lf +:: +$”r + = +Ãw + + `OuutSŒ—m +( + `fݒ +("php://stderr", "w")); + +205 + } +} + +211 +public +  +funùiÚ + + $£tOuutSŒ—m +( +OuutSŒ—m + +$¡»am +) { + +212 +£lf +:: +$out + = +$¡»am +; + +213 + } +} + +219 +public +  +funùiÚ + + $g‘OuutSŒ—m +() { + +220  +£lf +:: +$out +; + +221 + } +} + +227 +public +  +funùiÚ + + $£tE¼ÜSŒ—m +( +OuutSŒ—m + +$¡»am +) { + +228 +£lf +:: +$”r + = +$¡»am +; + +229 + } +} + +235 +public +  +funùiÚ + + $g‘E¼ÜSŒ—m +() { + +236  +£lf +:: +$”r +; + +237 + } +} + +244 +´iv©e +  +funùiÚ + + $hªdËLogfže +() { + +245 ià( +£lf +:: +$isLogFžeU£d +) { + +246 +£lf +:: +$”r +-> + `þo£ +(); + +247 +£lf +:: +$out +-> + `þo£ +(); + +249 + } +} + +257 +public +  +funùiÚ + + $g‘MsgOuutLev– +() { + +258  +£lf +:: +$msgOuutLev– +; + +259 + } +} + +269 +public +  +funùiÚ + + $fœe +( +$¬gs +) { + +270 +£lf +:: + `¡¬t +( +$¬gs +, +nuÎ +); + +271 + } +} + +278 +public + +funùiÚ + + $execu‹ +( +$¬gs +) { + +280 +£lf +:: +$defšedPrÝs + = +Ãw + + `Prݔt›s +(); + +281 +$this +-> +£¬chFÜThis + = +nuÎ +; + +286 ià( + `š_¬¿y +('-h–p', +$¬gs +) || in_array('-h', $args)) { + +287 +$this +-> + `´štU§ge +(); + +291 ià( + `š_¬¿y +('-v”siÚ', +$¬gs +) || in_array('-v', $args)) { + +292 +$this +-> + `´štV”siÚ +(); + +299 ià( +çl£ + !=ð( +$key + = + `¬¿y_£¬ch +('-qu›t', +$¬gs +, +Œue +))) { + +300 +£lf +:: +$msgOuutLev– + = +Projeù +:: +MSG_WARN +; + +301 + `un£t +( +$¬gs +[ +$key +]); + +304 ià( +çl£ + !=ð( +$key + = + `¬¿y_£¬ch +('-v”bo£', +$¬gs +, +Œue +))) { + +305 +£lf +:: +$msgOuutLev– + = +Projeù +:: +MSG_VERBOSE +; + +306 + `un£t +( +$¬gs +[ +$key +]); + +309 ià( +çl£ + !=ð( +$key + = + `¬¿y_£¬ch +('-debug', +$¬gs +, +Œue +))) { + +310 +£lf +:: +$msgOuutLev– + = +Projeù +:: +MSG_DEBUG +; + +311 + `un£t +( +$¬gs +[ +$key +]); + +316 +$keys + = + `¬¿y_keys +( +$¬gs +); + +317 +$max + = +$keys + ? + `max +($keys) : -1; + +318  +$i +=0; $˜<ð +$max +; $i++) { + +320 ià(! + `¬¿y_key_exi¡s +( +$i +, +$¬gs +)) { + +325 +$¬g + = +$¬gs +[ +$i +]; + +327 ià( +$¬g + == "-logfile") { + +328 +Œy + { + +330 ià(! + `is£t +( +$¬gs +[ +$i ++1])) { + +331 +$msg + = "You must specify‡†og file when usinghe -logfile‡rgument\n"; + +332 +throw + +Ãw + + `CÚfigu¿tiÚExû±iÚ +( +$msg +); + +334 +$logFže + = +Ãw + + `PhšgFže +( +$¬gs +[++ +$i +]); + +335 +$out + = +Ãw + + `FžeOuutSŒ—m +( +$logFže +); + +336 +£lf +:: + `£tOuutSŒ—m +( +$out +); + +337 +£lf +:: + `£tE¼ÜSŒ—m +( +$out +); + +338 +£lf +:: +$isLogFžeU£d + = +Œue +; + +340 } + `ÿtch + ( +IOExû±iÚ + +$iÛ +) { + +341 +$msg + = "Cannot write onhe specified†og file. Make surehe…athƒxists‡nd you have write…ermissions."; + +342 +throw + +Ãw + + `CÚfigu¿tiÚExû±iÚ +( +$msg +, +$iÛ +); + +344 } + `–£if + ( +$¬g + == "-buildfile" || $arg == "-file" || $arg == "-f") { + +345 ià(! + `is£t +( +$¬gs +[ +$i ++1])) { + +346 +$msg + = "You must specify‡ buildfile when usinghe -buildfile‡rgument."; + +347 +throw + +Ãw + + `CÚfigu¿tiÚExû±iÚ +( +$msg +); + +349 +$this +-> +buždFže + = +Ãw + + `PhšgFže +( +$¬gs +[++ +$i +]); + +351 } + `–£if + ( +$¬g + == "-listener") { + +352 ià(! + `is£t +( +$¬gs +[ +$i ++1])) { + +353 +$msg + = "You must specify‡†istener class when usinghe -listener‡rgument"; + +354 +throw + +Ãw + + `CÚfigu¿tiÚExû±iÚ +( +$msg +); + +356 +$this +-> +li¡’”s +[] = +$¬gs +[++ +$i +]; + +358 } + `–£if + ( +SŒšgH–³r +:: + `¡¬tsW™h +("-D", +$¬g +)) { + +359 +$Çme + = + `sub¡r +( +$¬g +, 2); + +360 +$v®ue + = +nuÎ +; + +361 +$posEq + = + `¡½os +( +$Çme +, "="); + +362 ià( +$posEq + !=ð +çl£ +) { + +363 +$v®ue + = + `sub¡r +( +$Çme +, +$posEq ++1); + +364 +$Çme + = + `sub¡r +($Çme, 0, +$posEq +); + +365 } + `–£if + ( +$i + < + `couÁ +( +$¬gs +)-1) { + +366 +$v®ue + = +$¬gs +[++ +$i +]; + +368 +£lf +:: +$defšedPrÝs +-> + `£tPrݔty +( +$Çme +, +$v®ue +); + +369 } + `–£if + ( +$¬g + == "-logger") { + +370 ià(! + `is£t +( +$¬gs +[ +$i ++1])) { + +371 +$msg + = "You must specify‡ classname when usinghe -logger‡rgument"; + +372 +throw + +Ãw + + `CÚfigu¿tiÚExû±iÚ +( +$msg +); + +374 +$this +-> +logg”CÏs¢ame + = +$¬gs +[++ +$i +]; + +376 } + `–£if + ( +$¬g + == "-inputhandler") { + +377 ià( +$this +-> +šputHªdËrCÏs¢ame + !=ð +nuÎ +) { + +378 +throw + +Ãw + + `CÚfigu¿tiÚExû±iÚ +("Only one input handler class may be specified."); + +380 ià(! + `is£t +( +$¬gs +[ +$i ++1])) { + +381 +$msg + = "You must specify‡ classname when usinghe -inputhandler‡rgument"; + +382 +throw + +Ãw + + `CÚfigu¿tiÚExû±iÚ +( +$msg +); + +384 +$this +-> +šputHªdËrCÏs¢ame + = +$¬gs +[++ +$i +]; + +386 } + `–£if + ( +$¬g + == "-projecthelp" || $arg == "-targets" || $arg == "-list" || $arg == "-l" || $arg == "-p") { + +388 +$this +-> +´ojeùH–p + = +Œue +; + +389 } + `–£if + ( +$¬g + == "-find") { + +391 ià( +$i + < + `couÁ +( +$¬gs +)-1) { + +392 +$this +-> +£¬chFÜThis + = +$¬gs +[++ +$i +]; + +394 +$this +-> +£¬chFÜThis + = +£lf +:: +DEFAULT_BUILD_FILENAME +; + +396 } + `–£if + ( + `sub¡r +( +$¬g +,0,1) == "-") { + +398 +£lf +:: +$”r +-> + `wr™e +("UnknowÀ¬gum’t: $¬g" . +PHP_EOL +); + +399 +£lf +:: + `´štU§ge +(); + +403 + `¬¿y_push +( +$this +-> +rg‘s +, +$¬g +); + +408 ià( +$this +-> +buždFže + ==ð +nuÎ +) { + +410 ià( +$this +-> +£¬chFÜThis + !=ð +nuÎ +) { + +411 +$this +-> +buždFže + = $this-> + `_fšdBuždFže +( +£lf +:: + `g‘Prݔty +("u£r.dœ"), $this-> +£¬chFÜThis +); + +413 +$this +-> +buždFže + = +Ãw + + `PhšgFže +( +£lf +:: +DEFAULT_BUILD_FILENAME +); + +417 ià(! +$this +-> +buždFže +-> + `exi¡s +()) { + +418 +throw + +Ãw + + `CÚfigu¿tiÚExû±iÚ +("Buždfže: " . +$this +-> +buždFže +-> + `__toSŒšg +() . " does‚otƒxist!"); + +422 ià( +$this +-> +buždFže +-> + `isDœeùÜy +()) { + +423 +throw + +Ãw + + `CÚfigu¿tiÚExû±iÚ +("Buždfže: " . +$this +-> +buždFže +-> + `__toSŒšg +() . " is‡ dir!"); + +426 +$this +-> +»adyToRun + = +Œue +; + +427 + } +} + +435 +´iv©e + +funùiÚ + + $_g‘P¬’tFže +( +PhšgFže + +$fže +) { + +436 +$fž’ame + = +$fže +-> + `g‘AbsÞu‹P©h +(); + +437 +$fže + = +Ãw + + `PhšgFže +( +$fž’ame +); + +438 +$fž’ame + = +$fže +-> + `g‘P¬’t +(); + +439  ( +$fž’ame + ==ð +nuÎ +è?‚uÎ : +Ãw + + `PhšgFže +($filename); + +440 + } +} + +456 +´iv©e + +funùiÚ + + $_fšdBuždFže +( +$¡¬t +, +$suffix +) { + +457 +$¡¬tf + = +Ãw + + `PhšgFže +( +$¡¬t +); + +458 +$·»Á + = +Ãw + + `PhšgFže +( +$¡¬tf +-> + `g‘AbsÞu‹P©h +()); + +459 +$fže + = +Ãw + + `PhšgFže +( +$·»Á +, +$suffix +); + +462 ! +$fže +-> + `exi¡s +()) { + +464 +$·»Á + = +$this +-> + `_g‘P¬’tFže +($parent); + +468 ià( +$·»Á + ==ð +nuÎ +) { + +469 +throw + +Ãw + + `CÚfigu¿tiÚExû±iÚ +("Could‚ot†ocate‡ build file!"); + +472 +$fže + = +Ãw + + `PhšgFže +( +$·»Á +, +$suffix +); + +474  +$fže +; + +475 + } +} + +481 +funùiÚ + + $runBužd +() { + +483 ià(! +$this +-> +»adyToRun +) { + +487 +$´ojeù + = +Ãw + + `Projeù +(); + +489 +£lf +:: + `£tCu¼’tProjeù +( +$´ojeù +); + +490 + `£t_”rÜ_hªdËr +( + `¬¿y +('Phing', 'handlePhpError')); + +492 +$”rÜ + = +nuÎ +; + +494 +$this +-> + `addBuždLi¡’”s +( +$´ojeù +); + +495 +$this +-> + `addIÅutHªdËr +( +$´ojeù +); + +498 +$´ojeù +-> + `£tU£rPrݔty +("phšg.fže", +$this +-> +buždFže +-> + `g‘AbsÞu‹P©h +()); + +500 +Œy + { + +501 +$´ojeù +-> + `fœeBuždS¹ed +(); + +502 +$´ojeù +-> + `š™ +(); + +503 } + `ÿtch + ( +Exû±iÚ + +$exc +) { + +504 +$´ojeù +-> + `fœeBuždFšished +( +$exc +); + +505 +throw + +$exc +; + +508 +$´ojeù +-> + `£tU£rPrݔty +("phšg.v”siÚ", +$this +-> + `g‘PhšgV”siÚ +()); + +510 +$e + = +£lf +:: +$defšedPrÝs +-> + `keys +(); + +511  + `couÁ +( +$e +)) { + +512 +$¬g + = ( +¡ršg +è + `¬¿y_shiá +( +$e +); + +513 +$v®ue + = ( +¡ršg +è +£lf +:: +$defšedPrÝs +-> + `g‘Prݔty +( +$¬g +); + +514 +$´ojeù +-> + `£tU£rPrݔty +( +$¬g +, +$v®ue +); + +516 + `un£t +( +$e +); + +518 +$´ojeù +-> + `£tU£rPrݔty +("phšg.fže", +$this +-> +buždFže +-> + `g‘AbsÞu‹P©h +()); + +523 +Œy + { + +524 +ProjeùCÚfigu¿tÜ +:: + `cÚfigu»Projeù +( +$´ojeù +, +$this +-> +buždFže +); + +525 } + `ÿtch + ( +Exû±iÚ + +$exc +) { + +526 +$´ojeù +-> + `fœeBuždFšished +( +$exc +); + +527 + `»¡Üe_”rÜ_hªdËr +(); + +528 +£lf +:: + `un£tCu¼’tProjeù +(); + +529 +throw + +$exc +; + +533 ià( + `couÁ +( +$this +-> +rg‘s +) === 0) { + +534 +$this +-> +rg‘s +[] = +$´ojeù +-> + `g‘DeçuÉT¬g‘ +(); + +538 ià(! +$this +-> +´ojeùH–p +) { + +540 +Œy + { + +541 +$´ojeù +-> + `execu‹T¬g‘s +( +$this +-> +rg‘s +); + +542 } + `ÿtch + ( +Exû±iÚ + +$exc +) { + +543 +$´ojeù +-> + `fœeBuždFšished +( +$exc +); + +544 + `»¡Üe_”rÜ_hªdËr +(); + +545 +£lf +:: + `un£tCu¼’tProjeù +(); + +546 +throw + +$exc +; + +550 ià( +$this +-> +´ojeùH–p +) { + +551 +Œy + { + +552 +$this +-> + `´štDesütiÚ +( +$´ojeù +); + +553 +$this +-> + `´štT¬g‘s +( +$´ojeù +); + +554 } + `ÿtch + ( +Exû±iÚ + +$exc +) { + +555 +$´ojeù +-> + `fœeBuždFšished +( +$exc +); + +556 + `»¡Üe_”rÜ_hªdËr +(); + +557 +£lf +:: + `un£tCu¼’tProjeù +(); + +558 +throw + +$exc +; + +563 ià(! +$this +-> +´ojeùH–p +) { + +564 +$´ojeù +-> + `fœeBuždFšished +( +nuÎ +); + +567 + `»¡Üe_”rÜ_hªdËr +(); + +568 +£lf +:: + `un£tCu¼’tProjeù +(); + +569 + } +} + +580 +´iv©e + +funùiÚ + + $addBuždLi¡’”s +( +Projeù + +$´ojeù +) { + +582 +$´ojeù +-> + `addBuždLi¡’” +( +$this +-> + `ü—‹Logg” +()); + +584 + `fܗch +( +$this +-> +li¡’”s + +as + +$li¡’”CÏs¢ame +) { + +585 +Œy + { + +586 +$þz + = +Phšg +:: + `impÜt +( +$li¡’”CÏs¢ame +); + +587 } + `ÿtch + ( +Exû±iÚ + +$x +) { + +588 +$msg + = "Unableo instantiate specified†istener " + +589 . "þas " . +$li¡’”CÏs¢ame + . " : " + +590 . +$e +-> + `g‘Mes§ge +(); + +591 +throw + +Ãw + + `CÚfigu¿tiÚExû±iÚ +( +$msg +); + +594 +$li¡’” + = +Ãw + + `$þz +(); + +596 ià( +$li¡’” + +š¡ªûof + +SŒ—mRequœedBuždLogg” +) { + +597 +throw + +Ãw + + `CÚfigu¿tiÚExû±iÚ +("UÇbˁØadd " . +$li¡’”CÏs¢ame + . "‡s‡†istener, since it„equiresƒxplicitƒrror/output streams. (You can specify it‡s‡ -logger.)"); + +599 +$´ojeù +-> + `addBuždLi¡’” +( +$li¡’” +); + +601 + } +} + +611 +´iv©e + +funùiÚ + + $addIÅutHªdËr +( +Projeù + +$´ojeù +) { + +612 ià( +$this +-> +šputHªdËrCÏs¢ame + ==ð +nuÎ +) { + +613 +$hªdËr + = +Ãw + + `DeçuÉIÅutHªdËr +(); + +615 +Œy + { + +616 +$þz + = +Phšg +:: + `impÜt +( +$this +-> +šputHªdËrCÏs¢ame +); + +617 +$hªdËr + = +Ãw + + `$þz +(); + +618 ià( +$´ojeù + !=ð +nuÎ + && + `m‘hod_exi¡s +( +$hªdËr +, 'setProject')) { + +619 +$hªdËr +-> + `£tProjeù +( +$´ojeù +); + +621 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +622 +$msg + = "Unableo instantiate specified input handler " + +623 . "þas " . +$this +-> +šputHªdËrCÏs¢ame + . " : " + +624 . +$e +-> + `g‘Mes§ge +(); + +625 +throw + +Ãw + + `CÚfigu¿tiÚExû±iÚ +( +$msg +); + +628 +$´ojeù +-> + `£tIÅutHªdËr +( +$hªdËr +); + +629 + } +} + +635 +´iv©e + +funùiÚ + + $ü—‹Logg” +() { + +636 ià( +$this +-> +logg”CÏs¢ame + !=ð +nuÎ +) { + +637 +£lf +:: + `impÜt +( +$this +-> +logg”CÏs¢ame +); + +639 +$þas¢ame + = +£lf +:: + `impÜt +( +$this +-> +logg”CÏs¢ame +); + +640 +$logg” + = +Ãw + +$þas¢ame +; + +641 ià(!( +$logg” + +š¡ªûof + +BuždLogg” +)) { + +642 +throw + +Ãw + + `BuždExû±iÚ +( +$þas¢ame + . ' does‚ot implementhe BuildLogger interface.'); + +645 +»quœe_Úû + 'phing/listener/DefaultLogger.php'; + +646 +$logg” + = +Ãw + + `DeçuÉLogg” +(); + +648 +$logg” +-> + `£tMes§geOuutLev– +( +£lf +:: +$msgOuutLev– +); + +649 +$logg” +-> + `£tOuutSŒ—m +( +£lf +:: +$out +); + +650 +$logg” +-> + `£tE¼ÜSŒ—m +( +£lf +:: +$”r +); + +651  +$logg” +; + +652 + } +} + +658 +public +  +funùiÚ + + $£tCu¼’tProjeù +( +$p +) { + +659 +£lf +:: +$cu¼’tProjeù + = +$p +; + +660 + } +} + +665 +public +  +funùiÚ + + $un£tCu¼’tProjeù +() { + +666 +£lf +:: +$cu¼’tProjeù + = +nuÎ +; + +667 + } +} + +673 +public +  +funùiÚ + + $g‘Cu¼’tProjeù +() { + +674  +£lf +:: +$cu¼’tProjeù +; + +675 + } +} + +683 +public +  +funùiÚ + +log +( +$mes§ge +, +$´iܙy + = +Projeù +:: +MSG_INFO +) { + +684 +$p + = +£lf +:: +g‘Cu¼’tProjeù +(); + +685 ià( + g$p +) { + +686 + g$p +-> +log +( +$mes§ge +, +$´iܙy +); + +694 +public +  +funùiÚ + + $hªdËPhpE¼Ü +( +$Ëv– +, +$mes§ge +, +$fže +, +$lše +) { + +697 ià( + `”rÜ_»pÜtšg +() > 0) { + +699 ià( +£lf +:: +$phpE¼ÜC­tu» +) { + +701 +£lf +:: +$ÿ±u»dPhpE¼Üs +[] = + `¬¿y +('mes§ge' => +$mes§ge +, 'Ëv–' => +$Ëv– +, 'lše' => +$lše +, 'fže' => +$fže +); + +705 +$mes§ge + = '[PHP Error] ' . $message; + +706 +$mes§ge + .ð' [lš' . +$lše + . ' oà' . +$fže + . ']'; + +708  +$Ëv– +) { + +710  +E_STRICT +: + +711  +E_NOTICE +: + +712  +E_USER_NOTICE +: + +713 +£lf +:: + `log +( +$mes§ge +, +Projeù +:: +MSG_VERBOSE +); + +715  +E_WARNING +: + +716  +E_USER_WARNING +: + +717 +£lf +:: + `log +( +$mes§ge +, +Projeù +:: +MSG_WARN +); + +719  +E_ERROR +: + +720  +E_USER_ERROR +: + +722 +£lf +:: + `log +( +$mes§ge +, +Projeù +:: +MSG_ERR +); + +730 + } +} + +736 +public +  +funùiÚ + + $¡¬tPhpE¼ÜC­tu» +() { + +737 +£lf +:: +$phpE¼ÜC­tu» + = +Œue +; + +738 +£lf +:: +$ÿ±u»dPhpE¼Üs + = + `¬¿y +(); + +739 + } +} + +745 +public +  +funùiÚ + + $¡ÝPhpE¼ÜC­tu» +() { + +746 +£lf +:: +$phpE¼ÜC­tu» + = +çl£ +; + +747 + } +} + +752 +public +  +funùiÚ + + $þ—rC­tu»dPhpE¼Üs +() { + +753 +£lf +:: +$ÿ±u»dPhpE¼Üs + = + `¬¿y +(); + +754 + } +} + +760 +public +  +funùiÚ + + $g‘C­tu»dPhpE¼Üs +() { + +761  +£lf +:: +$ÿ±u»dPhpE¼Üs +; + +762 + } +} + +765 +public +  +funùiÚ + + $´štU§ge +() { + +767 +$msg + = ""; + +768 +$msg + .ð"phšg [ÝtiÚs] [rg‘ [rg‘2 [rg‘3] ...]]" . +PHP_EOL +; + +769 +$msg + .ð"O±iÚs: " . +PHP_EOL +; + +770 +$msg + .ð" -h -h–°…ršˆthi mes§ge" . +PHP_EOL +; + +771 +$msg + .ð" -È-li¡†i¡‡važabˁ¬g‘ šhi ´ojeù" . +PHP_EOL +; + +772 +$msg + .ð" -v -v”siڅršˆthv”siÚ infÜm©iڇndƒx™" . +PHP_EOL +; + +773 +$msg + .ð" -q -qu›ˆ bexŒ¨qu›t" . +PHP_EOL +; + +774 +$msg + .ð" -v”bo£ bexŒ¨v”bo£" . +PHP_EOL +; + +775 +$msg + .ð" -debug…ršˆdebuggšg infÜm©iÚ" . +PHP_EOL +; + +776 +$msg + .ð" -logfž u£ giv’ fžf܆og" . +PHP_EOL +; + +777 +$msg + .ð" -logg” <þas¢ame>hþas which i tسrfÜm†oggšg" . +PHP_EOL +; + +778 +$msg + .ð" -à-buždfž u£ giv’ buždfže" . +PHP_EOL +; + +779 +$msg + .ð" -D<´Ý”ty>= u£ v®ufÜ giv’…rݔty" . +PHP_EOL +; + +780 +$msg + .ð" -fšd s—rch fÜ buždfžtow¬d throÙ oàthe" . +PHP_EOL +; + +781 +$msg + .ð" fžesy¡em‡nd u£ it" . +PHP_EOL +; + +782 +$msg + .ð" -šputhªd˸hþas tØu£ØhªdË u£¸šput" . +PHP_EOL +; + +784 +$msg + .ð +PHP_EOL +; + +785 +$msg + .ð"R•܈bug tØ". +PHP_EOL +; + +786 +£lf +:: +$”r +-> + `wr™e +( +$msg +); + +787 + } +} + +792 +public +  +funùiÚ + + $´štV”siÚ +() { + +793 +£lf +:: +$out +-> + `wr™e +(£lf:: + `g‘PhšgV”siÚ +(). +PHP_EOL +); + +794 + } +} + +801 +public +  +funùiÚ + + $g‘PhšgV”siÚ +() { + +802 +$v”siÚP©h + = +£lf +:: + `g‘ResourûP©h +("phing/etc/VERSION.TXT"); + +803 ià( +$v”siÚP©h + ==ð +nuÎ +) { + +804 +$v”siÚP©h + = +£lf +:: + `g‘ResourûP©h +("etc/VERSION.TXT"); + +806 ià( +$v”siÚP©h + ==ð +nuÎ +) { + +807 +throw + +Ãw + + `CÚfigu¿tiÚExû±iÚ +("No VERSION.TXT file found;ry setting…hing.homeƒnvironment variable."); + +809 +Œy + { + +810 +$bufãr + = +nuÎ +; + +811 +$fže + = +Ãw + + `PhšgFže +( +$v”siÚP©h +); + +812 +$»ad” + = +Ãw + + `FžeR—d” +( +$fže +); + +813 +$»ad” +-> + `»adIÁo +( +$bufãr +); + +814 +$bufãr + = + `Œim +($buffer); + +816 +$phšgV”siÚ + = +$bufãr +; + +817 } + `ÿtch + ( +IOExû±iÚ + +$iox +) { + +818 +throw + +Ãw + + `CÚfigu¿tiÚExû±iÚ +("Can't„ead version information file"); + +820  +$phšgV”siÚ +; + +821 + } +} + +826 +public +  +funùiÚ + + $´štDesütiÚ +( +Projeù + +$´ojeù +) { + +827 ià( +$´ojeù +-> + `g‘DesütiÚ +(è!=ð +nuÎ +) { + +828 +£lf +:: +$out +-> + `wr™e +( +$´ojeù +-> + `g‘DesütiÚ +(è. +PHP_EOL +); + +830 + } +} + +833 +funùiÚ + + $´štT¬g‘s +( +$´ojeù +) { + +835 +$maxL’gth + = 0; + +836 +$rg‘s + = +$´ojeù +-> + `g‘T¬g‘s +(); + +837 +$rg‘Names + = + `¬¿y_keys +( +$rg‘s +); + +838 +$rg‘Name + = +nuÎ +; + +839 +$rg‘DesütiÚ + = +nuÎ +; + +840 +$cu¼’tT¬g‘ + = +nuÎ +; + +845 +$subNames + = + `¬¿y +(); + +846 +$tÝNameDescM­ + = + `¬¿y +(); + +848 + `fܗch +( +$rg‘s + +as + +$cu¼’tT¬g‘ +) { + +849 +$rg‘Name + = +$cu¼’tT¬g‘ +-> + `g‘Name +(); + +850 +$rg‘DesütiÚ + = +$cu¼’tT¬g‘ +-> + `g‘DesütiÚ +(); + +853 ià( +$rg‘DesütiÚ + ==ð +nuÎ +) { + +854 +$subNames +[] = +$rg‘Name +; + +858 +$tÝNameDescM­ +[ +$rg‘Name +] = +$rg‘DesütiÚ +; + +859 ià( + `¡¾’ +( +$rg‘Name +è> +$maxL’gth +) { + +860 +$maxL’gth + = + `¡¾’ +( +$rg‘Name +); + +866 + `sÜt +( +$subNames +); + +867 + `ksÜt +( +$tÝNameDescM­ +); + +869 +$tÝNames + = + `¬¿y_keys +( +$tÝNameDescM­ +); + +870 +$tÝDesütiÚs + = + `¬¿y_v®ues +( +$tÝNameDescM­ +); + +872 +$deçuÉT¬g‘ + = +$´ojeù +-> + `g‘DeçuÉT¬g‘ +(); + +874 ià( +$deçuÉT¬g‘ + !=ð +nuÎ + && $defaultTarget !== "") { + +875 +$deçuÉName + = + `¬¿y +(); + +876 +$deçuÉDesc + = + `¬¿y +(); + +877 +$deçuÉName +[] = +$deçuÉT¬g‘ +; + +879 +$šdexOfDefDesc + = + `¬¿y_£¬ch +( +$deçuÉT¬g‘ +, +$tÝNames +, +Œue +); + +880 ià( +$šdexOfDefDesc + !=ð +çl£ + && $indexOfDefDesc >= 0) { + +881 +$deçuÉDesc + = + `¬¿y +(); + +882 +$deçuÉDesc +[] = +$tÝDesütiÚs +[ +$šdexOfDefDesc +]; + +885 +$this +-> + `_´štT¬g‘s +( +$deçuÉName +, +$deçuÉDesc +, "DeçuɁ¬g‘:", +$maxL’gth +); + +888 +$this +-> + `_´štT¬g‘s +( +$tÝNames +, +$tÝDesütiÚs +, "Maš¬g‘s:", +$maxL’gth +); + +889 +$this +-> + `_´štT¬g‘s +( +$subNames +, +nuÎ +, "Subtargets:", 0); + +890 + } +} + +909 +´iv©e + +funùiÚ + + $_´štT¬g‘s +( +$Çmes +, +$desütiÚs +, +$h—dšg +, +$maxËn +) { + +911 +$¥aûs + = ' '; + +912  + `¡¾’ +( +$¥aûs +è< +$maxËn +) { + +913 +$¥aûs + .= $spaces; + +915 +$msg + = ""; + +916 +$msg + .ð +$h—dšg + . +PHP_EOL +; + +917 +$msg + .ð + `¡r_»³© +("-",79è. +PHP_EOL +; + +919 +$tÙ® + = + `couÁ +( +$Çmes +); + +920  +$i +=0; $˜< +$tÙ® +; $i++) { + +921 +$msg + .= " "; + +922 +$msg + .ð +$Çmes +[ +$i +]; + +923 ià(! + `em±y +( +$desütiÚs +)) { + +924 +$msg + .ð + `sub¡r +( +$¥aûs +, 0, +$maxËn + - + `¡¾’ +( +$Çmes +[ +$i +]) + 2); + +925 +$msg + .ð +$desütiÚs +[ +$i +]; + +927 +$msg + .ð +PHP_EOL +; + +929 ià( +$tÙ® + > 0) { + +930 +£lf +:: +$out +-> + `wr™e +( +$msg + . +PHP_EOL +); + +932 + } +} + +941 +public +  +funùiÚ + + $impÜt +( +$dÙP©h +, +$þas¥©h + = +nuÎ +) { + +945 +$þas¢ame + = +SŒšgH–³r +:: + `unqu®ify +( +$dÙP©h +); + +946 ià( + `þass_exi¡s +( +$þas¢ame +, +çl£ +)) { + +947  +$þas¢ame +; + +950 +$dÙCÏs¢ame + = + `ba£Çme +( +$dÙP©h +); + +951 +$dÙCÏs¢amePos + = + `¡¾’ +( +$dÙP©h +è- sŒËn( +$dÙCÏs¢ame +); + +954 +$tmp + = + `¡r_»¶aû +('\.', '##', +$dÙCÏs¢ame +); + +956 +$tmp + = + `¡¹r +($tmp, '.', +DIRECTORY_SEPARATOR +); + +958 +$tmp + = + `¡r_»¶aû +('##', '.', $tmp); + +960 +$þassFže + = +$tmp + . ".php"; + +962 +$·th + = + `sub¡r_»¶aû +( +$dÙP©h +, +$þassFže +, +$dÙCÏs¢amePos +); + +964 +Phšg +:: + `__impÜt +( +$·th +, +$þas¥©h +); + +966  +$þas¢ame +; + +967 + } +} + +975 +public +  +funùiÚ + + $__impÜt +( +$·th +, +$þas¥©h + = +nuÎ +) { + +977 ià( +$þas¥©h +) { + +980 ià( + `is_objeù +( +$þas¥©h +)) { + +981 +$þas¥©h + = $þas¥©h-> + `__toSŒšg +(); + +998 +$cu¼_·¹s + = + `ex¶ode +( +PATH_SEPARATOR +, + `g‘_šþude_·th +()); + +999 +$add_·¹s + = + `ex¶ode +( +PATH_SEPARATOR +, +$þas¥©h +); + +1000 +$Ãw_·¹s + = + `¬¿y_diff +( +$add_·¹s +, +$cu¼_·¹s +); + +1001 ià( +$Ãw_·¹s +) { + +1002 + `£t_šþude_·th +( + `im¶ode +( +PATH_SEPARATOR +, + `¬¿y_m”ge +( +$Ãw_·¹s +, +$cu¼_·¹s +))); + +1006 +$»t + = + `šþude_Úû +( +$·th +); + +1008 ià( +$»t + ==ð +çl£ +) { + +1009 +$msg + = "Error importing $path"; + +1010 ià( +£lf +:: + `g‘MsgOuutLev– +(è>ð +Projeù +:: +MSG_DEBUG +) { + +1011 +$x + = +Ãw + + `Exû±iÚ +("for-path-trace-only"); + +1012 +$msg + .ð +$x +-> + `g‘T¿ûAsSŒšg +(); + +1014 +throw + +Ãw + + `CÚfigu¿tiÚExû±iÚ +( +$msg +); + +1016 + } +} + +1022 +public +  +funùiÚ + + $g‘ResourûP©h +( +$·th +) { + +1024 ià( +£lf +:: +$impÜtP©hs + ==ð +nuÎ +) { + +1025 +$·ths + = + `g‘_šþude_·th +(); + +1026 +£lf +:: +$impÜtP©hs + = + `ex¶ode +( +PATH_SEPARATOR +, + `ši_g‘ +("include_path")); + +1029 +$·th + = + `¡r_»¶aû +('\\', +DIRECTORY_SEPARATOR +, $path); + +1030 +$·th + = + `¡r_»¶aû +('/', +DIRECTORY_SEPARATOR +, $path); + +1032 + `fܗch + ( +£lf +:: +$impÜtP©hs + +as + +$´efix +) { + +1033 +$‹¡P©h + = +$´efix + . +DIRECTORY_SEPARATOR + . +$·th +; + +1034 ià( + `fže_exi¡s +( +$‹¡P©h +)) { + +1035  +$‹¡P©h +; + +1040 +$homeDœ + = +£lf +:: + `g‘Prݔty +('phing.home'); + +1041 ià( +$homeDœ +) { + +1042 +$‹¡P©h + = +$homeDœ + . +DIRECTORY_SEPARATOR + . +$·th +; + +1043 ià( + `fže_exi¡s +( +$‹¡P©h +)) { + +1044  +$‹¡P©h +; + +1051 +$d©aDœ + = '@DATA-DIR@'; + +1052 ià( +$d©aDœ +{0} != '@') { + +1053 +$‹¡P©h + = +$d©aDœ + . +DIRECTORY_SEPARATOR + . +$·th +; + +1054 ià( + `fže_exi¡s +( +$‹¡P©h +)) { + +1055  +$‹¡P©h +; + +1060 +$maybeHomeDœ + = + `»®·th +( + `dœÇme +( +__FILE__ +è. +DIRECTORY_SEPARATOR + . '..' . DIRECTORY_SEPARATOR . '..'); + +1061 +$‹¡P©h + = +$maybeHomeDœ + . +DIRECTORY_SEPARATOR + . +$·th +; + +1062 ià( + `fže_exi¡s +( +$‹¡P©h +)) { + +1063  +$‹¡P©h +; + +1067  +nuÎ +; + +1068 + } +} + +1078 +´iv©e +  +funùiÚ + + $£tSy¡emCÚ¡ªts +() { + +1090 +£lf +:: + `£tPrݔty +('ho¡.os', +PHP_OS +); + +1093 +£lf +:: + `£tPrݔty +('os.Çme', +PHP_OS +); + +1098 ià(! + `defšed +('PHP_CLASSPATH')) { + +1099 + `defše +('PHP_CLASSPATH', + `g‘_šþude_·th +()); + +1102 +£lf +:: + `£tPrݔty +('php.þas¥©h', +PHP_CLASSPATH +); + +1108  + `¡¹ouµ” +( +PHP_OS +)) { + +1110 +£lf +:: + `£tPrݔty +('host.fstype', 'WINNT'); + +1111 +£lf +:: + `£tPrݔty +('php.š‹½»‹r', + `g‘’v +('PHP_COMMAND')); + +1114 +£lf +:: + `£tPrݔty +('host.fstype', 'WIN32'); + +1117 +£lf +:: + `£tPrݔty +('host.fstype', 'UNIX'); + +1121 +£lf +:: + `£tPrݔty +('lše.£·¿tÜ', +PHP_EOL +); + +1122 +£lf +:: + `£tPrݔty +('php.v”siÚ', +PHP_VERSION +); + +1123 +£lf +:: + `£tPrݔty +('u£r.home', + `g‘’v +('HOME')); + +1124 +£lf +:: + `£tPrݔty +('­¶iÿtiÚ.¡¬tdœ', + `g‘cwd +()); + +1125 +£lf +:: + `£tPrݔty +('phšg.¡¬tTime', + `gmd©e +('D, d M Y H:i:s', + `time +()) . ' GMT'); + +1128 +$sysInfo + = + `¬¿y +(); + +1129 ià( + `¡¹ouµ” +( + `sub¡r +( +PHP_OS +, 0, 3)è!=ð'WIN' && + `funùiÚ_exi¡s +("posix_uname")) { + +1130 +$sysInfo + = + `posix_uÇme +(); + +1132 +$sysInfo +['nod’ame'] = + `php_uÇme +('n'); + +1133 +$sysInfo +['machše']ð + `php_uÇme +('m') ; + +1135 +$sysInfo +['domaš'] = + `is£t +( +$_SERVER +['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : "unknown"; + +1136 +$sysInfo +['»Ëa£'] = + `php_uÇme +('r'); + +1137 +$sysInfo +['v”siÚ'] = + `php_uÇme +('v'); + +1141 +£lf +:: + `£tPrݔty +("ho¡.Çme", + `is£t +( +$sysInfo +['nodename']) ? $sysInfo['nodename'] : "unknown"); + +1142 +£lf +:: + `£tPrݔty +("ho¡.¬ch", + `is£t +( +$sysInfo +['machine']) ? $sysInfo['machine'] : "unknown"); + +1143 +£lf +:: + `£tPrݔty +("ho¡.domaš", + `is£t +( +$sysInfo +['domain']) ? $sysInfo['domain'] : "unknown"); + +1144 +£lf +:: + `£tPrݔty +("ho¡.os.»Ëa£", + `is£t +( +$sysInfo +['release']) ? $sysInfo['release'] : "unknown"); + +1145 +£lf +:: + `£tPrݔty +("ho¡.os.v”siÚ", + `is£t +( +$sysInfo +['version']) ? $sysInfo['version'] : "unknown"); + +1146 + `un£t +( +$sysInfo +); + +1147 + } +} + +1159 +public +  +funùiÚ + + $g‘DefšedPrݔty +( +$Çme +) { + +1160  +£lf +:: +$defšedPrÝs +-> + `g‘Prݔty +( +$Çme +); + +1161 + } +} + +1169 +public +  +funùiÚ + + $£tDefšedPrݔty +( +$Çme +, +$v®ue +) { + +1170  +£lf +:: +$defšedPrÝs +-> + `£tPrݔty +( +$Çme +, +$v®ue +); + +1171 + } +} + +1182 +public +  +funùiÚ + + $g‘Prݔty +( +$´ÝName +) { + +1188 +$v® + = + `is£t +( +£lf +:: +$´Ý”t›s +[ +$´ÝName +]è? s–f::$´Ý”t›s[$´ÝName] : +nuÎ +; + +1191  +$´ÝName +) { + +1193 +$v® + = + `g‘cwd +(); + +1197  +$v® +; + +1198 + } +} + +1201 +public +  + gfunùiÚ + & + $g‘Prݔt›s +() { + +1202  +£lf +:: +$´Ý”t›s +; + +1203 + } +} + +1205 +public +  +funùiÚ + + $£tPrݔty +( +$´ÝName +, +$´ÝV®ue +) { + +1206 +$´ÝName + = ( +¡ršg +) $propName; + +1207 +$ÞdV®ue + = +£lf +:: + `g‘Prݔty +( +$´ÝName +); + +1208 +£lf +:: +$´Ý”t›s +[ +$´ÝName +] = +$´ÝV®ue +; + +1209  +$ÞdV®ue +; + +1210 + } +} + +1212 +public +  +funùiÚ + + $cu¼’tTimeMžlis +() { + +1213 + `li¡ +( +$u£c +, +$£c +èð + `ex¶ode +(" ", + `miüÙime +()); + +1214  (() +$u£c + + () +$£c +); + +1215 + } +} + +1222 +´iv©e +  +funùiÚ + + $£tInþudeP©hs +() { + +1223 ià( + `defšed +('PHP_CLASSPATH')) { + +1224 +$»suÉ + = + `£t_šþude_·th +( +PHP_CLASSPATH +); + +1225 ià( +$»suÉ + ==ð +çl£ +) { + +1226 +throw + +Ãw + + `CÚfigu¿tiÚExû±iÚ +("Could‚ot set PHP include_path."); + +1228 +£lf +:: +$ÜigIniS‘tšgs +['šþude_·th'] = +$»suÉ +; + +1230 + } +} + +1236 +´iv©e +  +funùiÚ + + $£tIni +() { + +1238 +£lf +:: +$ÜigIniS‘tšgs +['”rÜ_»pÜtšg'] = + `”rÜ_»pÜtšg +( +E_ALL +); + +1245 + `£t_time_lim™ +(0); + +1247 +£lf +:: +$ÜigIniS‘tšgs +['magic_quÙes_gpc'] = + `ši_£t +('magic_quotes_gpc', 'off'); + +1248 +£lf +:: +$ÜigIniS‘tšgs +['shÜt_ݒ_g'] = + `ši_£t +('short_open_tag', 'off'); + +1249 +£lf +:: +$ÜigIniS‘tšgs +['deçuÉ_ch¬£t'] = + `ši_£t +('default_charset', 'iso-8859-1'); + +1250 +£lf +:: +$ÜigIniS‘tšgs +['»gi¡”_glob®s'] = + `ši_£t +('register_globals', 'off'); + +1251 +£lf +:: +$ÜigIniS‘tšgs +['®low_ÿÎ_time_·ss_»ã»nû'] = + `ši_£t +('allow_call_time_pass_reference', 'on'); + +1252 +£lf +:: +$ÜigIniS‘tšgs +['Œack_”rÜs'] = + `ši_£t +('track_errors', 1); + +1255 +$mem_lim™ + = (è + `ši_g‘ +('memory_limit'); + +1256 ià( +$mem_lim™ + < 32) { + +1259 + `ši_£t +('memory_limit', '32M'); + +1261 + } +} + +1272 +´iv©e +  +funùiÚ + + $»¡ÜeIni +() + +1274 + `fܗch +( +£lf +:: +$ÜigIniS‘tšgs + +as + +$£‰šgName + => +$£‰šgV®ue +) { + +1275  +$£‰šgName +) { + +1277 + `”rÜ_»pÜtšg +( +$£‰šgV®ue +); + +1280 + `ši_£t +( +$£‰šgName +, +$£‰šgV®ue +); + +1283 + } +} + +1289 +public +  +funùiÚ + + $g‘Tim” +() { + +1290 ià( +£lf +:: +$tim” + ==ð +nuÎ +) { + +1291 +šþude_Úû + 'phing/system/util/Timer.php'; + +1292 +£lf +:: +$tim” +ð +Ãw + + `Tim” +(); + +1294  +£lf +:: +$tim” +; + +1295 + } +} + +1303 +public +  +funùiÚ + + $¡¬tup +() { + +1306 +£lf +:: + `š™ŸlizeOuutSŒ—ms +(); + +1309 +£lf +:: + `g‘Tim” +()-> + `¡¬t +(); + +1311 +£lf +:: + `£tSy¡emCÚ¡ªts +(); + +1312 +£lf +:: + `£tInþudeP©hs +(); + +1313 +£lf +:: + `£tIni +(); + +1314 + } +} + +1322 +public +  +funùiÚ + + $h®t +() { + +1323 +£lf +:: + `shutdown +(); + +1324 + } +} + +1330 +public +  +funùiÚ + + $shutdown +() { + +1331 +£lf +:: + `»¡ÜeIni +(); + +1332 +£lf +:: + `g‘Tim” +()-> + `¡Ý +(); + +1333 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/Project.php + +1 +fžeUtžs + = +Ãw + + `FžeUtžs +(); + +112 +$this +-> +šputHªdËr + = +Ãw + + `DeçuÉIÅutHªdËr +(); + +118 +public + +funùiÚ + + $£tIÅutHªdËr +( +IÅutHªdËr + +$hªdËr +) { + +119 +$this +-> +šputHªdËr + = +$hªdËr +; + +120 + } +} + +125 +public + +funùiÚ + + $g‘IÅutHªdËr +() { + +126  +$this +-> +šputHªdËr +; + +127 + } +} + +130 +funùiÚ + + $š™ +() { + +132 +$this +-> + `£tSy¡emPrݔt›s +(); + +135 +$skdefs + = +Phšg +:: + `g‘ResourûP©h +("phing/tasks/defaults.properties"); + +137 +Œy + { + +138 +$´Ýs + = +Ãw + + `Prݔt›s +(); + +139 +$š + = +Ãw + + `PhšgFže +(( +¡ršg +) +$skdefs +); + +141 ià( +$š + ==ð +nuÎ +) { + +142 +throw + +Ãw + + `BuždExû±iÚ +("Can't†oad defaultask†ist"); + +144 +$´Ýs +-> + `lßd +( +$š +); + +146 +$’um + = +$´Ýs +-> + `´Ý”tyNames +(); + +147 + `fܗch +( +$’um + +as + +$key +) { + +148 +$v®ue + = +$´Ýs +-> + `g‘Prݔty +( +$key +); + +149 +$this +-> + `addTaskDefš™iÚ +( +$key +, +$v®ue +); + +151 } + `ÿtch + ( +IOExû±iÚ + +$iÛ +) { + +152 +throw + +Ãw + + `BuždExû±iÚ +("Can't†oad defaultask†ist"); + +156 +$ty³defs + = +Phšg +:: + `g‘ResourûP©h +("phing/types/defaults.properties"); + +158 +Œy + { + +159 +$´Ýs + = +Ãw + + `Prݔt›s +(); + +160 +$š + = +Ãw + + `PhšgFže +(( +¡ršg +) +$ty³defs +); + +161 ià( +$š + ==ð +nuÎ +) { + +162 +throw + +Ãw + + `BuždExû±iÚ +("Can't†oad default datatype†ist"); + +164 +$´Ýs +-> + `lßd +( +$š +); + +166 +$’um + = +$´Ýs +-> + `´Ý”tyNames +(); + +167 + `fܗch +( +$’um + +as + +$key +) { + +168 +$v®ue + = +$´Ýs +-> + `g‘Prݔty +( +$key +); + +169 +$this +-> + `addD©aTy³Defš™iÚ +( +$key +, +$v®ue +); + +171 } + `ÿtch +( +IOExû±iÚ + +$iÛ +) { + +172 +throw + +Ãw + + `BuždExû±iÚ +("Can't†oad default datatype†ist"); + +174 + } +} + +177 +funùiÚ + + $g‘Glob®Fž‹rS‘ +() { + +178  +$this +-> +glob®Fž‹rS‘ +; + +179 + } +} + +194 +public + +funùiÚ + + $£tPrݔty +( +$Çme +, +$v®ue +) { + +197 ià( + `is£t +( +$this +-> +u£rPrݔt›s +[ +$Çme +])) { + +198 +$this +-> + `log +("Ov”ridignÜed fÜ u£¸´Ý”ty " . +$Çme +, +Projeù +:: +MSG_VERBOSE +); + +202 ià( + `is£t +( +$this +-> +´Ý”t›s +[ +$Çme +])) { + +203 +$this +-> + `log +("Ov”ridšg…»viou defš™iÚ oà´Ý”ty " . +$Çme +, +Projeù +:: +MSG_VERBOSE +); + +206 +$this +-> + `log +("S‘tšg…rojeù…rݔty: " . +$Çme + . " -> " . +$v®ue +, +Projeù +:: +MSG_DEBUG +); + +207 +$this +-> +´Ý”t›s +[ +$Çme +] = +$v®ue +; + +208 + } +} + +221 +public + +funùiÚ + + $£tNewPrݔty +( +$Çme +, +$v®ue +) { + +222 ià( + `is£t +( +$this +-> +´Ý”t›s +[ +$Çme +])) { + +223 +$this +-> + `log +("Ov”ridignÜed f܅rݔty " . +$Çme +, +Projeù +:: +MSG_DEBUG +); + +226 +$this +-> + `log +("S‘tšg…rojeù…rݔty: " . +$Çme + . " -> " . +$v®ue +, +Projeù +:: +MSG_DEBUG +); + +227 +$this +-> +´Ý”t›s +[ +$Çme +] = +$v®ue +; + +228 + } +} + +239 +public + +funùiÚ + + $£tU£rPrݔty +( +$Çme +, +$v®ue +) { + +240 +$this +-> + `log +("S‘tšg„Ø´ojeù…rݔty: " . +$Çme + . " -> " . +$v®ue +, +Projeù +:: +MSG_DEBUG +); + +241 +$this +-> +u£rPrݔt›s +[ +$Çme +] = +$v®ue +; + +242 +$this +-> +´Ý”t›s +[ +$Çme +] = +$v®ue +; + +243 + } +} + +257 +public + +funùiÚ + + $£tInh”™edPrݔty +( +$Çme +, +$v®ue +) { + +258 +$this +-> +šh”™edPrݔt›s +[ +$Çme +] = +$v®ue +; + +259 +$this +-> + `£tU£rPrݔty +( +$Çme +, +$v®ue +); + +260 + } +} + +270 +´iv©e + +funùiÚ + + $£tPrݔtyIÁ”Çl +( +$Çme +, +$v®ue +) { + +271 ià( + `is£t +( +$this +-> +u£rPrݔt›s +[ +$Çme +])) { + +272 +$this +-> + `log +("Ov”ridignÜed fÜ u£¸´Ý”ty " . +$Çme +, +Projeù +:: +MSG_VERBOSE +); + +275 +$this +-> +´Ý”t›s +[ +$Çme +] = +$v®ue +; + +276 + } +} + +287 +public + +funùiÚ + + $g‘Prݔty +( +$Çme +) { + +288 ià(! + `is£t +( +$this +-> +´Ý”t›s +[ +$Çme +])) { + +289  +nuÎ +; + +291  +$this +-> +´Ý”t›s +[ +$Çme +]; + +292 + } +} + +308 +public + +funùiÚ + + $»¶aûPrݔt›s +( +$v®ue +) { + +309  +ProjeùCÚfigu¿tÜ +:: + `»¶aûPrݔt›s +( +$this +, +$v®ue +, $this-> +´Ý”t›s +); + +310 + } +} + +321 +public + +funùiÚ + + $g‘U£rPrݔty +( +$Çme +) { + +322 ià(! + `is£t +( +$this +-> +u£rPrݔt›s +[ +$Çme +])) { + +323  +nuÎ +; + +325  +$this +-> +u£rPrݔt›s +[ +$Çme +]; + +326 + } +} + +333 +public + +funùiÚ + + $g‘Prݔt›s +() { + +334  +$this +-> +´Ý”t›s +; + +335 + } +} + +341 +public + +funùiÚ + + $g‘U£rPrݔt›s +() { + +342  +$this +-> +u£rPrݔt›s +; + +343 + } +} + +357 +public + +funùiÚ + + $cÝyU£rPrݔt›s +( +Projeù + +$Ùh” +) { + +358 + `fܗch +( +$this +-> +u£rPrݔt›s + +as + +$¬g + => +$v®ue +) { + +359 ià( + `is£t +( +$this +-> +šh”™edPrݔt›s +[ +$¬g +])) { + +362 +$Ùh” +-> + `£tU£rPrݔty +( +$¬g +, +$v®ue +); + +364 + } +} + +378 +public + +funùiÚ + + $cÝyInh”™edPrݔt›s +( +Projeù + +$Ùh” +) { + +379 + `fܗch +( +$this +-> +u£rPrݔt›s + +as + +$¬g + => +$v®ue +) { + +380 ià( +$Ùh” +-> + `g‘U£rPrݔty +( +$¬g +è!=ð +nuÎ +) { + +383 +$Ùh” +-> + `£tInh”™edPrݔty +( +$¬g +, +$v®ue +); + +385 + } +} + +392 +funùiÚ + + $£tDeçuÉT¬g‘ +( +$rg‘Name +) { + +393 +$this +-> +deçuÉT¬g‘ + = ( +¡ršg +è + `Œim +( +$rg‘Name +); + +394 + } +} + +396 +funùiÚ + + $g‘DeçuÉT¬g‘ +() { + +397  ( +¡ršg +è +$this +-> +deçuÉT¬g‘ +; + +398 + } +} + +409 +funùiÚ + + $£tName +( +$Çme +) { + +410 +$this +-> +Çme + = ( +¡ršg +è + `Œim +( +$Çme +); + +411 +$this +-> + `£tPrݔty +("phšg.´ojeù.Çme", $this-> +Çme +); + +412 + } +} + +421 +funùiÚ + + $g‘Name +() { + +422  ( +¡ršg +è +$this +-> +Çme +; + +423 + } +} + +426 +funùiÚ + + $£tDesütiÚ +( +$desütiÚ +) { + +427 +$this +-> +desütiÚ + = ( +¡ršg +è + `Œim +( +$desütiÚ +); + +428 + } +} + +431 +funùiÚ + + $g‘DesütiÚ +() { + +432  +$this +-> +desütiÚ +; + +433 + } +} + +436 +funùiÚ + + $£tBa£dœ +( +$dœ +) { + +437 ià( +$dœ + +š¡ªûof + +PhšgFže +) { + +438 +$dœ + = $dœ-> + `g‘AbsÞu‹P©h +(); + +441 +$dœ + = +$this +-> +fžeUtžs +-> + `nÜm®ize +($dir); + +443 +$dœ + = +Ãw + + `PhšgFže +(( +¡ršg +) $dir); + +444 ià(! +$dœ +-> + `exi¡s +()) { + +445 +throw + +Ãw + + `BuždExû±iÚ +("Ba£dœ ". +$dœ +-> + `g‘AbsÞu‹P©h +()." does‚otƒxist"); + +447 ià(! +$dœ +-> + `isDœeùÜy +()) { + +448 +throw + +Ãw + + `BuždExû±iÚ +("Ba£dœ ". +$dœ +-> + `g‘AbsÞu‹P©h +()." is‚ot‡ directory"); + +450 +$this +-> +ba£dœ + = +$dœ +; + +451 +$this +-> + `£tPrݔtyIÁ”Çl +("´ojeù.ba£dœ", $this-> +ba£dœ +-> + `g‘AbsÞu‹P©h +()); + +452 +$this +-> + `log +("Projeù ba£ dœ s‘o: " . $this-> +ba£dœ +-> + `g‘P©h +(), +Projeù +:: +MSG_VERBOSE +); + +455 + `chdœ +( +$dœ +-> + `g‘AbsÞu‹P©h +()); + +456 + } +} + +466 +funùiÚ + + $g‘Ba£dœ +() { + +467 ià( +$this +-> +ba£dœ + ==ð +nuÎ +) { + +468 +Œy + { + +469 +$this +-> + `£tBa£dœ +("."); + +470 } + `ÿtch + ( +BuždExû±iÚ + +$exc +) { + +471 +throw + +Ãw + + `BuždExû±iÚ +("Cª‚Ù s‘ deçuÉ ba£dœ. ". +$exc +-> + `g‘Mes§ge +()); + +474  +$this +-> +ba£dœ +; + +475 + } +} + +482 +funùiÚ + + $£tSy¡emPrݔt›s +() { + +485 +$sy¡emP + = + `¬¿y_m”ge +Ð +£lf +:: + `g‘Prݔt›s +(), +Phšg +::getProperties() ); + +486 + `fܗch +( +$sy¡emP + +as + +$Çme + => +$v®ue +) { + +487 +$this +-> + `£tPrݔtyIÁ”Çl +( +$Çme +, +$v®ue +); + +491 + `fܗch +( +$_SERVER + +as + +$Çme + => +$v®ue +) { + +493 ià( + `is_¬¿y +( +$v®ue +)) { + +496 +$this +-> + `£tPrݔtyIÁ”Çl +('’v.' . +$Çme +, +$v®ue +); + +498  +Œue +; + +499 + } +} + +508 +funùiÚ + + $addTaskDefš™iÚ +( +$Çme +, +$þass +, +$þas¥©h + = +nuÎ +) { + +509 +$Çme + = $name; + +510 +$þass + = $class; + +511 ià( +$þass + === "") { + +512 +$this +-> + `log +("Task $Çmha nØþas defšed.", +Projeù +:: +MSG_ERR +); + +513 } + `–£if + (! + `is£t +( +$this +-> +skdefs +[ +$Çme +])) { + +514 +Phšg +:: + `impÜt +( +$þass +, +$þas¥©h +); + +515 +$this +-> +skdefs +[ +$Çme +] = +$þass +; + +516 +$this +-> + `log +(" +Task defš™Ú: $Çm($þass)", +Projeù +:: +MSG_DEBUG +); + +518 +$this +-> + `log +("Task $Çm($þassè®»ady„egi¡”d, skpšg", +Projeù +:: +MSG_VERBOSE +); + +520 + } +} + +522 + gfunùiÚ + & + $g‘TaskDefš™iÚs +() { + +523  +$this +-> +skdefs +; + +524 + } +} + +532 +funùiÚ + + $addD©aTy³Defš™iÚ +( +$ty³Name +, +$ty³CÏss +, +$þas¥©h + = +nuÎ +) { + +533 ià(! + `is£t +( +$this +-> +ty³defs +[ +$ty³Name +])) { + +534 +Phšg +:: + `impÜt +( +$ty³CÏss +, +$þas¥©h +); + +535 +$this +-> +ty³defs +[ +$ty³Name +] = +$ty³CÏss +; + +536 +$this +-> + `log +(" +U£¸d©©y³: $ty³Nam($ty³CÏss)", +Projeù +:: +MSG_DEBUG +); + +538 +$this +-> + `log +("Ty³ $Çm($þassè®»ady„egi¡”d, skpšg", +Projeù +:: +MSG_VERBOSE +); + +540 + } +} + +542 +funùiÚ + + $g‘D©aTy³Defš™iÚs +() { + +543  +$this +-> +ty³defs +; + +544 + } +} + +547 +funùiÚ + + $addT¬g‘ +( +$rg‘Name +, & +$rg‘ +) { + +548 ià( + `is£t +( +$this +-> +rg‘s +[ +$rg‘Name +])) { + +549 +throw + +Ãw + + `BuždExû±iÚ +("Duplicatearget: $targetName"); + +551 +$this +-> + `addOrR•ÏûT¬g‘ +( +$rg‘Name +, +$rg‘ +); + +552 + } +} + +554 +funùiÚ + + $addOrR•ÏûT¬g‘ +( +$rg‘Name +, & +$rg‘ +) { + +555 +$this +-> + `log +(" +T¬g‘: $rg‘Name", +Projeù +:: +MSG_DEBUG +); + +556 +$rg‘ +-> + `£tProjeù +( +$this +); + +557 +$this +-> +rg‘s +[ +$rg‘Name +] = +$rg‘ +; + +558 + } +} + +560 +funùiÚ + + $g‘T¬g‘s +() { + +561  +$this +-> +rg‘s +; + +562 + } +} + +581 +funùiÚ + + $ü—‹Task +( +$skTy³ +) { + +582 +Œy + { + +583 +$þs + = ""; + +584 +$sklwr + = + `¡¹Þow” +( +$skTy³ +); + +585 + `fܗch + ( +$this +-> +skdefs + +as + +$Çme + => +$þass +) { + +586 ià( + `¡¹Þow” +( +$Çme +è==ð +$sklwr +) { + +587 +$þs + = +SŒšgH–³r +:: + `unqu®ify +( +$þass +); + +592 ià( +$þs + === "") { + +593  +nuÎ +; + +596 ià(! + `þass_exi¡s +( +$þs +)) { + +597 +throw + +Ãw + + `BuždExû±iÚ +("Could‚ot instantiate class $cls,ƒvenhough‡ class was specified. (Make surehathe specified class file contains‡ class withhe correct‚ame.)"); + +600 +$o + = +Ãw + + `$þs +(); + +602 ià( +$o + +š¡ªûof + +Task +) { + +603 +$sk + = +$o +; + +605 +$this +-> + `log + (" (Usšg TaskAd­‹¸fÜ: $skTy³)", +Projeù +:: +MSG_DEBUG +); + +607 +$skA + = +Ãw + + `TaskAd­‹r +(); + +608 +$skA +-> + `£tProxy +( +$o +); + +609 +$sk + = +$skA +; + +611 +$sk +-> + `£tProjeù +( +$this +); + +612 +$sk +-> + `£tTaskTy³ +( +$skTy³ +); + +614 +$sk +-> + `£tTaskName +( +$skTy³ +); + +615 +$this +-> + `log + (" +Task: " . +$skTy³ +, +Projeù +:: +MSG_DEBUG +); + +616 } + `ÿtch + ( +Exû±iÚ + +$t +) { + +617 +throw + +Ãw + + `BuždExû±iÚ +("Could‚Ù c»©sk oàty³: " . +$skTy³ +, +$t +); + +620  +$sk +; + +621 + } +} + +632 +funùiÚ + + $ü—‹D©aTy³ +( +$ty³Name +) { + +633 +Œy + { + +634 +$þs + = ""; + +635 +$ty³lwr + = + `¡¹Þow” +( +$ty³Name +); + +636 + `fܗch + ( +$this +-> +ty³defs + +as + +$Çme + => +$þass +) { + +637 ià( + `¡¹Þow” +( +$Çme +è==ð +$ty³lwr +) { + +638 +$þs + = +SŒšgH–³r +:: + `unqu®ify +( +$þass +); + +643 ià( +$þs + === "") { + +644  +nuÎ +; + +647 ià(! + `þass_exi¡s +( +$þs +)) { + +648 +throw + +Ãw + + `BuždExû±iÚ +("Could‚ot instantiate class $cls,ƒvenhough‡ class was specified. (Make surehathe specified class file contains‡ class withhe correct‚ame.)"); + +651 +$ty³ + = +Ãw + + `$þs +(); + +652 +$this +-> + `log +(" +Ty³: $ty³Name", +Projeù +:: +MSG_DEBUG +); + +653 ià(!( +$ty³ + +š¡ªûof + +D©aTy³ +)) { + +654 +throw + +Ãw + + `Exû±iÚ +("$class is‚ot‡n instance of…hing.types.DataType"); + +656 ià( +$ty³ + +š¡ªûof + +ProjeùCompڒt +) { + +657 +$ty³ +-> + `£tProjeù +( +$this +); + +659 } + `ÿtch + ( +Exû±iÚ + +$t +) { + +660 +throw + +Ãw + + `BuždExû±iÚ +("Could‚Ù c»©ty³: $ty³Name", +$t +); + +663  +$ty³ +; + +664 + } +} + +673 +funùiÚ + + $execu‹T¬g‘s +( +$rg‘Names +) { + +674 + `fܗch +( +$rg‘Names + +as + +$Šame +) { + +675 +$this +-> + `execu‹T¬g‘ +( +$Šame +); + +677 + } +} + +686 +funùiÚ + + $execu‹T¬g‘ +( +$rg‘Name +) { + +689 ià( +$rg‘Name + ==ð +nuÎ +) { + +690 +throw + +Ãw + + `BuždExû±iÚ +("Noarget specified"); + +695 +$s܋dT¬g‘s + = +$this +-> + `_tÝoSÜt +( +$rg‘Name +, $this-> +rg‘s +); + +697 +$curIndex + = () 0; + +698 +$curT¬g‘ + = +nuÎ +; + +700 +Œy + { + +701 +$curT¬g‘ + = +$s܋dT¬g‘s +[ +$curIndex +++]; + +702 +$curT¬g‘ +-> + `³rfÜmTasks +(); + +703 } + `ÿtch + ( +BuždExû±iÚ + +$exc +) { + +704 +$this +-> + `log +("ExecutiÚ oàrg‘ \"". +$curT¬g‘ +-> + `g‘Name +()."\" fažed f܁hfÞlowšg„—sÚ: ". +$exc +-> + `g‘Mes§ge +(), +Projeù +:: +MSG_ERR +); + +705 +throw + +$exc +; + +707 }  +$curT¬g‘ +-> + `g‘Name +(è!=ð +$rg‘Name +); + +708 + } +} + +711 +funùiÚ + + $»sÞveFže +( +$fžeName +, +$roÙDœ + = +nuÎ +) { + +712 ià( +$roÙDœ + ==ð +nuÎ +) { + +713  +$this +-> +fžeUtžs +-> + `»sÞveFže +($this-> +ba£dœ +, +$fžeName +); + +715  +$this +-> +fžeUtžs +-> + `»sÞveFže +( +$roÙDœ +, +$fžeName +); + +717 + } +} + +728 +funùiÚ + + $_tÝoSÜt +( +$roÙ +, & +$rg‘s +) { + +730 +$roÙ + = ( +¡ršg +) $root; + +731 +$»t + = + `¬¿y +(); + +732 +$¡©e + = + `¬¿y +(); + +733 +$vis™šg + = + `¬¿y +(); + +743 +$this +-> + `_tsÜt +( +$roÙ +, +$rg‘s +, +$¡©e +, +$vis™šg +, +$»t +); + +745 +$»tHumª + = ""; + +746  +$i +=0, +$_i += + `couÁ +( +$»t +); $i < $_i; $i++) { + +747 +$»tHumª + .ð +$»t +[ +$i +]-> + `toSŒšg +()." "; + +749 +$this +-> + `log +("Bužd sequ’û f܁¬g‘ '$roÙ' is: $»tHumª", +Projeù +:: +MSG_VERBOSE +); + +751 +$keys + = + `¬¿y_keys +( +$rg‘s +); + +752  +$keys +) { + +753 +$curT¬g‘Name + = ( +¡ršg +è + `¬¿y_shiá +( +$keys +); + +754 ià(! + `is£t +( +$¡©e +[ +$curT¬g‘Name +])) { + +755 +$¡ + = +nuÎ +; + +757 +$¡ + = ( +¡ršg +è +$¡©e +[ +$curT¬g‘Name +]; + +760 ià( +$¡ + ==ð +nuÎ +) { + +761 +$this +-> + `_tsÜt +( +$curT¬g‘Name +, +$rg‘s +, +$¡©e +, +$vis™šg +, +$»t +); + +762 } + `–£if + ( +$¡ + === "VISITING") { + +763 +throw + +Ãw + + `Exû±iÚ +("Unexpected‚ode in visiting state: $curTargetName"); + +767 +$»tHumª + = ""; + +768  +$i +=0, +$_i += + `couÁ +( +$»t +); $i < $_i; $i++) { + +769 +$»tHumª + .ð +$»t +[ +$i +]-> + `toSŒšg +()." "; + +771 +$this +-> + `log +("Com¶‘bužd sequ’û is: $»tHumª", +Projeù +:: +MSG_VERBOSE +); + +773  +$»t +; + +774 + } +} + +793 +funùiÚ + + $_tsÜt +( +$roÙ +, & +$rg‘s +, & +$¡©e +, & +$vis™šg +, & +$»t +) { + +794 +$¡©e +[ +$roÙ +] = "VISITING"; + +795 +$vis™šg +[] = +$roÙ +; + +797 ià(! + `is£t +( +$rg‘s +[ +$roÙ +]è|| !($rg‘s[$roÙ] +š¡ªûof + +T¬g‘ +)) { + +798 +$rg‘ + = +nuÎ +; + +800 +$rg‘ + = +$rg‘s +[ +$roÙ +]; + +804 ià( +$rg‘ + ==ð +nuÎ +) { + +805 +$sb + = "Target '$root' does‚otƒxist inhis…roject."; + +806 + `¬¿y_pÝ +( +$vis™šg +); + +807 ià(! + `em±y +( +$vis™šg +)) { + +808 +$·»Á + = ( +¡ršg +è +$vis™šg +[ + `couÁ +($visiting)-1]; + +809 +$sb + .= "It is used fromarget '$parent'."; + +811 +throw + +Ãw + + `BuždExû±iÚ +( +$sb +); + +814 +$d•s + = +$rg‘ +-> + `g‘D•’d’c›s +(); + +816  +$d•s +) { + +817 +$cur + = ( +¡ršg +è + `¬¿y_shiá +( +$d•s +); + +818 ià(! + `is£t +( +$¡©e +[ +$cur +])) { + +819 +$m + = +nuÎ +; + +821 +$m + = ( +¡ršg +è +$¡©e +[ +$cur +]; + +823 ià( +$m + ==ð +nuÎ +) { + +825 +$this +-> + `_tsÜt +( +$cur +, +$rg‘s +, +$¡©e +, +$vis™šg +, +$»t +); + +826 } + `–£if + ( +$m + == "VISITING") { + +828 +throw + +$this +-> + `_makeCœcuÏrExû±iÚ +( +$cur +, +$vis™šg +); + +832 +$p + = ( +¡ršg +è + `¬¿y_pÝ +( +$vis™šg +); + +833 ià( +$roÙ + !=ð +$p +) { + +834 +throw + +Ãw + + `Exû±iÚ +("Unexpected internalƒrror:ƒxpectedo…op $root but got $p"); + +837 +$¡©e +[ +$roÙ +] = "VISITED"; + +838 +$»t +[] = +$rg‘ +; + +839 + } +} + +841 +funùiÚ + + $_makeCœcuÏrExû±iÚ +( +$’d +, +$¡k +) { + +842 +$sb + = "Circular dependency: $end"; + +844 +$c + = ( +¡ršg +è + `¬¿y_pÝ +( +$¡k +); + +845 +$sb + .ð" <- ". +$c +; + +846 }  +$c + !ð +$’d +); + +847  +Ãw + + `BuždExû±iÚ +( +$sb +); + +848 + } +} + +855 +funùiÚ + + $addReã»nû +( +$Çme +, +$objeù +) { + +856 ià( + `is£t +( +$this +-> +»ã»nûs +[ +$Çme +])) { + +857 +$this +-> + `log +("Ov”ridšg…»viou defš™iÚ oà»ã»nûØ$Çme", +Projeù +:: +MSG_WARN +); + +859 +$this +-> + `log +("Addšg„eã»nû: $Çm-> ". + `g‘_þass +( +$objeù +), +Projeù +:: +MSG_DEBUG +); + +860 +$this +-> +»ã»nûs +[ +$Çme +] = +$objeù +; + +861 + } +} + +867 +funùiÚ + + $g‘Reã»nûs +() { + +868  +$this +-> +»ã»nûs +; + +869 + } +} + +876 +funùiÚ + + $g‘Reã»nû +( +$key +) + +878 ià( + `is£t +( +$this +-> +»ã»nûs +[ +$key +])) { + +879  +$this +-> +»ã»nûs +[ +$key +]; + +881  +nuÎ +; + +882 + } +} + +887 +funùiÚ + +log +( +$msg +, +$Ëv– + = +Projeù +:: +MSG_INFO +) { + +888 +$this +-> +logObjeù +($this, +$msg +, +$Ëv– +); + +891 +funùiÚ + + $logObjeù +( +$obj +, +$msg +, +$Ëv– +) { + +892 +$this +-> + `fœeMes§geLogged +( +$obj +, +$msg +, +$Ëv– +); + +893 + } +} + +895 +funùiÚ + + $addBuždLi¡’” +( +BuždLi¡’” + +$li¡’” +) { + +896 +$this +-> +li¡’”s +[] = +$li¡’” +; + +897 + } +} + +899 +funùiÚ + + $»moveBuždLi¡’” +( +BuždLi¡’” + +$li¡’” +) { + +900 +$Ãw¬¿y + = + `¬¿y +(); + +901  +$i +=0, +$size += + `couÁ +( +$this +-> +li¡’”s +); $i < $size; $i++) { + +902 ià( +$this +-> +li¡’”s +[ +$i +] !=ð +$li¡’” +) { + +903 +$Ãw¬¿y +[] = +$this +-> +li¡’”s +[ +$i +]; + +906 +$this +-> +li¡’”s + = +$Ãw¬¿y +; + +907 + } +} + +909 +funùiÚ + + $g‘BuždLi¡’”s +() { + +910  +$this +-> +li¡’”s +; + +911 + } +} + +913 +funùiÚ + + $fœeBuždS¹ed +() { + +914 +$ev’t + = +Ãw + + `BuždEv’t +( +$this +); + +915 + `fܗch +( +$this +-> +li¡’”s + +as + +$li¡’” +) { + +916 +$li¡’” +-> + `buždS¹ed +( +$ev’t +); + +918 + } +} + +920 +funùiÚ + + $fœeBuždFšished +( +$exû±iÚ +) { + +921 +$ev’t + = +Ãw + + `BuždEv’t +( +$this +); + +922 +$ev’t +-> + `£tExû±iÚ +( +$exû±iÚ +); + +923 + `fܗch +( +$this +-> +li¡’”s + +as + +$li¡’” +) { + +924 +$li¡’” +-> + `buždFšished +( +$ev’t +); + +926 + } +} + +928 +funùiÚ + + $fœeT¬g‘S¹ed +( +$rg‘ +) { + +929 +$ev’t + = +Ãw + + `BuždEv’t +( +$rg‘ +); + +930 + `fܗch +( +$this +-> +li¡’”s + +as + +$li¡’” +) { + +931 +$li¡’” +-> + `rg‘S¹ed +( +$ev’t +); + +933 + } +} + +935 +funùiÚ + + $fœeT¬g‘Fšished +( +$rg‘ +, +$exû±iÚ +) { + +936 +$ev’t + = +Ãw + + `BuždEv’t +( +$rg‘ +); + +937 +$ev’t +-> + `£tExû±iÚ +( +$exû±iÚ +); + +938 + `fܗch +( +$this +-> +li¡’”s + +as + +$li¡’” +) { + +939 +$li¡’” +-> + `rg‘Fšished +( +$ev’t +); + +941 + } +} + +943 +funùiÚ + + $fœeTaskS¹ed +( +$sk +) { + +944 +$ev’t + = +Ãw + + `BuždEv’t +( +$sk +); + +945 + `fܗch +( +$this +-> +li¡’”s + +as + +$li¡’” +) { + +946 +$li¡’” +-> + `skS¹ed +( +$ev’t +); + +948 + } +} + +950 +funùiÚ + + $fœeTaskFšished +( +$sk +, +$exû±iÚ +) { + +951 +$ev’t + = +Ãw + + `BuždEv’t +( +$sk +); + +952 +$ev’t +-> + `£tExû±iÚ +( +$exû±iÚ +); + +953 + `fܗch +( +$this +-> +li¡’”s + +as + +$li¡’” +) { + +954 +$li¡’” +-> + `skFšished +( +$ev’t +); + +956 + } +} + +958 +funùiÚ + + $fœeMes§geLoggedEv’t +( +$ev’t +, +$mes§ge +, +$´iܙy +) { + +959 +$ev’t +-> + `£tMes§ge +( +$mes§ge +, +$´iܙy +); + +960 + `fܗch +( +$this +-> +li¡’”s + +as + +$li¡’” +) { + +961 +$li¡’” +-> + `mes§geLogged +( +$ev’t +); + +963 + } +} + +965 +funùiÚ + + $fœeMes§geLogged +( +$objeù +, +$mes§ge +, +$´iܙy +) { + +966 +$this +-> + `fœeMes§geLoggedEv’t +( +Ãw + + `BuždEv’t +( +$objeù +), +$mes§ge +, +$´iܙy +); + +967 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/ProjectComponent.php + +1 +´ojeù + = +$´ojeù +; + +55 +public + +funùiÚ + + $g‘Projeù +() { + +56  +$this +-> +´ojeù +; + +57 + } +} + +65 +public + +funùiÚ + +log +( +$msg +, +$Ëv– + = +Projeù +:: +MSG_INFO +) { + +66 ià( +$this +-> +´ojeù + !=ð +nuÎ +) { + +67 +$this +-> +´ojeù +-> +log +( +$msg +, +$Ëv– +); + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/RuntimeConfigurable.php + +1 +w¿µedObjeù + = +$´oxy +; + +46 +$this +-> +–em’tTag + = +$–em’tTag +; + +49 +funùiÚ + + $£tProxy +( +$´oxy +) { + +50 +$this +-> +w¿µedObjeù + = +$´oxy +; + +51 + } +} + +54 +funùiÚ + + $£tA‰ribu‹s +( +$©Œibu‹s +) { + +55 +$this +-> +©Œibu‹s + = +$©Œibu‹s +; + +56 + } +} + +59 +funùiÚ + + $g‘A‰ribu‹s +() { + +60  +$this +-> +©Œibu‹s +; + +61 + } +} + +64 +funùiÚ + + $addChžd +( +RuÁimeCÚfigu¿bË + +$chžd +) { + +65 +$this +-> +chžd»n +[] = +$chžd +; + +66 + } +} + +69 +funùiÚ + + $g‘Chžd +( +$šdex +) { + +70  +$this +-> +chžd»n +[() +$šdex +]; + +71 + } +} + +74 +funùiÚ + + $addText +( +$d©a +) { + +75 +$this +-> +ch¬aù”s + .ð( +¡ršg +è +$d©a +; + +76 + } +} + +78 +funùiÚ + + $g‘EËm’tTag +() { + +79  +$this +-> +–em’tTag +; + +80 + } +} + +84 +funùiÚ + + $maybeCÚfigu» +( +Projeù + +$´ojeù +) { + +85 +$id + = +nuÎ +; + +91 ià( +$this +-> +©Œibu‹s + || $this-> +ch¬aù”s +) { + +92 +ProjeùCÚfigu¿tÜ +:: + `cÚfigu» +( +$this +-> +w¿µedObjeù +, $this-> +©Œibu‹s +, +$´ojeù +); + +94 ià( + `is£t +( +$this +-> +©Œibu‹s +["id"])) { + +95 +$id + = +$this +-> +©Œibu‹s +["id"]; + +98 +$this +-> +©Œibu‹s + = +nuÎ +; + +100 ià( +$this +-> +ch¬aù”s +) { + +101 +ProjeùCÚfigu¿tÜ +:: + `addText +( +$´ojeù +, +$this +-> +w¿µedObjeù +, ( +¡ršg +è$this-> +ch¬aù”s +); + +102 +$this +-> +ch¬aù”s +=""; + +104 ià( +$id + !=ð +nuÎ +) { + +105 +$´ojeù +-> + `addReã»nû +( +$id +, +$this +-> +w¿µedObjeù +); + +109 iàÐ + `is_¬¿y +( +$this +-> +chžd»n +è&& ! + `em±y +($this->children) ) { + +111 + `fܗch +( +$this +-> +chžd»n + +as + +$chžd +) { + +112 +$chžd +-> + `maybeCÚfigu» +( +$´ojeù +); + +113 +ProjeùCÚfigu¿tÜ +:: + `¡ÜeChžd +( +$´ojeù +, +$this +-> +w¿µedObjeù +, +$chžd +->w¿µedObjeù, + `¡¹Þow” +($chžd-> + `g‘EËm’tTag +())); + +116 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/Target.php + +1 +´ojeù + = +$´ojeù +; + +73 +public + +funùiÚ + + $g‘Projeù +() { + +74  +$this +-> +´ojeù +; + +75 + } +} + +84 +public + +funùiÚ + + $£tD•’ds +( +$d•’ds +) { + +86 +$d•s + = + `ex¶ode +(',', +$d•’ds +); + +87  +$i +=0, +$size += + `couÁ +( +$d•s +); $i < $size; $i++) { + +88 +$Œimmed + = + `Œim +( +$d•s +[ +$i +]); + +89 ià( +$Œimmed + === "") { + +90 +throw + +Ãw + + `BuždExû±iÚ +("SyÁax E¼Ü: D•’d‡‰ribu‹ f܁¬g‘ ". +$this +-> + `g‘Name +()." is malformed."); + +92 +$this +-> + `addD•’d’cy +( +$Œimmed +); + +94 + } +} + +102 +public + +funùiÚ + + $addD•’d’cy +( +$d•’d’cy +) { + +103 +$this +-> +d•’d’c›s +[] = ( +¡ršg +è +$d•’d’cy +; + +104 + } +} + +111 +public + +funùiÚ + + $g‘D•’d’c›s +() { + +112  +$this +-> +d•’d’c›s +; + +113 + } +} + +120 +public + +funùiÚ + + $£tName +( +$Çme +) { + +121 +$this +-> +Çme + = ( +¡ršg +è +$Çme +; + +122 + } +} + +130 +funùiÚ + + $g‘Name +() { + +131  ( +¡ršg +è +$this +-> +Çme +; + +132 + } +} + +140 +funùiÚ + + $addTask +( +Task + +$sk +) { + +141 +$this +-> +chžd»n +[] = +$sk +; + +142 + } +} + +151 +funùiÚ + + $addD©aTy³ +( +$¹c +) { + +152 +$this +-> +chžd»n +[] = +$¹c +; + +153 + } +} + +163 +public + +funùiÚ + + $g‘Tasks +() { + +164 +$sks + = + `¬¿y +(); + +165  +$i +=0, +$size += + `couÁ +( +$this +-> +chžd»n +); $i < $size; $i++) { + +166 +$tsk + = +$this +-> +chžd»n +[ +$i +]; + +167 ià( +$tsk + +š¡ªûof + +Task +) { + +169 +$sks +[] = +þÚe + +$tsk +; + +172  +$sks +; + +173 + } +} + +182 +public + +funùiÚ + + $£tIf +( +$´Ý”ty +) { + +183 +$this +-> +ifCÚd™iÚ + = ( +$´Ý”ty + ==ð +nuÎ +) ? "" : $property; + +184 + } +} + +194 +public + +funùiÚ + + $£tUÆess +( +$´Ý”ty +) { + +195 +$this +-> +uÆessCÚd™iÚ + = ( +$´Ý”ty + ==ð +nuÎ +) ? "" : $property; + +196 + } +} + +203 +public + +funùiÚ + + $£tDesütiÚ +( +$desütiÚ +) { + +204 ià( +$desütiÚ + !=ð +nuÎ + && + `¡rcmp +($description, "") !== 0) { + +205 +$this +-> +desütiÚ + = ( +¡ršg +è +$desütiÚ +; + +207 +$this +-> +desütiÚ + = +nuÎ +; + +209 + } +} + +216 +public + +funùiÚ + + $g‘DesütiÚ +() { + +217  +$this +-> +desütiÚ +; + +218 + } +} + +226 +funùiÚ + + $toSŒšg +() { + +227  ( +¡ršg +è +$this +-> +Çme +; + +228 + } +} + +235 +public + +funùiÚ + + $maš +() { + +236 ià( +$this +-> + `‹¡IfCÚd™iÚ +(è&& $this-> + `‹¡UÆessCÚd™iÚ +()) { + +237 + `fܗch +( +$this +-> +chžd»n + +as + +$o +) { + +238 ià( +$o + +š¡ªûof + +Task +) { + +240 +$o +-> + `³rfÜm +(); + +243 +$o +-> + `maybeCÚfigu» +( +$this +-> +´ojeù +); + +246 } + `–£if + (! +$this +-> + `‹¡IfCÚd™iÚ +()) { + +247 +$this +-> +´ojeù +-> + `log +("Sk³d¬g‘ '".$this-> +Çme +."' beÿu£…rݔty '".$this-> +ifCÚd™iÚ +."'‚Ù s‘.", +Projeù +:: +MSG_VERBOSE +); + +249 +$this +-> +´ojeù +-> + `log +("Sk³d¬g‘ '".$this-> +Çme +."' beÿu£…rݔty '".$this-> +uÆessCÚd™iÚ +."' s‘.", +Projeù +:: +MSG_VERBOSE +); + +251 + } +} + +260 +public + +funùiÚ + + $³rfÜmTasks +() { + +261 +Œy + { + +262 +$this +-> +´ojeù +-> + `fœeT¬g‘S¹ed +($this); + +263 +$this +-> + `maš +(); + +264 +$this +-> +´ojeù +-> + `fœeT¬g‘Fšished +($this, +$nuÎ += +nuÎ +); + +265 } + `ÿtch + ( +BuždExû±iÚ + +$exc +) { + +267 +$this +-> +´ojeù +-> + `fœeT¬g‘Fšished +($this, +$exc +); + +268 +throw + +$exc +; + +270 + } +} + +279 +´iv©e + +funùiÚ + + $‹¡IfCÚd™iÚ +() { + +280 ià( +$this +-> +ifCÚd™iÚ + === "") { + +281  +Œue +; + +284 +$´Ý”t›s + = + `ex¶ode +(",", +$this +-> +ifCÚd™iÚ +); + +286 +$»suÉ + = +Œue +; + +287 + `fܗch + ( +$´Ý”t›s + +as + +$´Ý”ty +) { + +288 +$‹¡ + = +ProjeùCÚfigu¿tÜ +:: + `»¶aûPrݔt›s +( +$this +-> + `g‘Projeù +(), +$´Ý”ty +, $this-> +´ojeù +-> + `g‘Prݔt›s +()); + +289 +$»suÉ + = $»suÉ && ( +$this +-> +´ojeù +-> + `g‘Prݔty +( +$‹¡ +è!=ð +nuÎ +); + +292  +$»suÉ +; + +293 + } +} + +302 +´iv©e + +funùiÚ + + $‹¡UÆessCÚd™iÚ +() { + +303 ià( +$this +-> +uÆessCÚd™iÚ + === "") { + +304  +Œue +; + +307 +$´Ý”t›s + = + `ex¶ode +(",", +$this +-> +uÆessCÚd™iÚ +); + +309 +$»suÉ + = +Œue +; + +310 + `fܗch + ( +$´Ý”t›s + +as + +$´Ý”ty +) { + +311 +$‹¡ + = +ProjeùCÚfigu¿tÜ +:: + `»¶aûPrݔt›s +( +$this +-> + `g‘Projeù +(), +$´Ý”ty +, $this-> +´ojeù +-> + `g‘Prݔt›s +()); + +312 +$»suÉ + = $»suÉ && ( +$this +-> +´ojeù +-> + `g‘Prݔty +( +$‹¡ +è==ð +nuÎ +); + +314  +$»suÉ +; + +315 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/Task.php + +1 +rg‘ + = +$rg‘ +; + +82 +public + +funùiÚ + + $g‘OwnšgT¬g‘ +() { + +83  +$this +-> +rg‘ +; + +84 + } +} + +91 +public + +funùiÚ + + $g‘TaskName +() { + +92 ià( +$this +-> +skName + ==ð +nuÎ +) { + +98  + `´eg_»¶aû +('/sk$/i', '', + `g‘_þass +( +$this +)); + +100  +$this +-> +skName +; + +101 + } +} + +108 +public + +funùiÚ + + $£tTaskName +( +$Çme +) { + +109 +$this +-> +skName + = ( +¡ršg +è +$Çme +; + +110 + } +} + +118 +public + +funùiÚ + + $g‘TaskTy³ +() { + +119  +$this +-> +skTy³ +; + +120 + } +} + +127 +public + +funùiÚ + + $£tTaskTy³ +( +$Çme +) { + +128 +$this +-> +skTy³ + = ( +¡ršg +è +$Çme +; + +129 + } +} + +135 +´Ùeùed + +funùiÚ + + $g‘Regi¡”SlÙ +( +$¦ÙName +) { + +136  +Regi¡” +:: + `g‘SlÙ +('sk.' . +$this +-> + `g‘TaskName +(è. '.' . +$¦ÙName +); + +137 + } +} + +147 +funùiÚ + +log +( +$msg +, +$Ëv– + = +Projeù +:: +MSG_INFO +) { + +148 +$this +-> +´ojeù +-> +logObjeù +($this, +$msg +, +$Ëv– +); + +156 +public + +funùiÚ + + $£tDesütiÚ +( +$desc +) { + +157 +$this +-> +desütiÚ + = +$desc +; + +158 + } +} + +165 +public + +funùiÚ + + $g‘DesütiÚ +() { + +166  +$this +-> +desütiÚ +; + +167 + } +} + +177 +public + +funùiÚ + + $š™ +() { + +178 + } +} + +190 +ab¡¿ù + +public + +funùiÚ + +maš +(); + +199 +funùiÚ + + $g‘LoÿtiÚ +() { + +200  +$this +-> +loÿtiÚ +; + +201 + } +} + +210 +funùiÚ + + $£tLoÿtiÚ +( +LoÿtiÚ + +$loÿtiÚ +) { + +211 +$this +-> +loÿtiÚ + = +$loÿtiÚ +; + +212 + } +} + +219 +funùiÚ + + $g‘RuÁimeCÚfigu¿bËW¿µ” +() { + +220 ià( +$this +-> +w¿µ” + ==ð +nuÎ +) { + +221 +$this +-> +w¿µ” + = +Ãw + + `RuÁimeCÚfigu¿bË +($this, $this-> + `g‘TaskName +()); + +223  +$this +-> +w¿µ” +; + +224 + } +} + +232 +funùiÚ + + $£tRuÁimeCÚfigu¿bËW¿µ” +( +RuÁimeCÚfigu¿bË + +$w¿µ” +) { + +233 +$this +-> +w¿µ” + = +$w¿µ” +; + +234 + } +} + +239 +public + +funùiÚ + + $maybeCÚfigu» +() { + +240 ià( +$this +-> +w¿µ” + !=ð +nuÎ +) { + +241 +$this +-> +w¿µ” +-> + `maybeCÚfigu» +($this-> +´ojeù +); + +243 + } +} + +248 +public + +funùiÚ + + $³rfÜm +() { + +250 +Œy + { + +251 +$this +-> +´ojeù +-> + `fœeTaskS¹ed +($this); + +252 +$this +-> + `maybeCÚfigu» +(); + +253 +$this +-> + `maš +(); + +254 +$this +-> +´ojeù +-> + `fœeTaskFšished +($this, +$nuÎ += +nuÎ +); + +255 } + `ÿtch + ( +Exû±iÚ + +$exc +) { + +256 ià( +$exc + +š¡ªûof + +BuždExû±iÚ +) { + +257 ià( +$exc +-> + `g‘LoÿtiÚ +(è==ð +nuÎ +) { + +258 +$exc +-> + `£tLoÿtiÚ +( +$this +-> + `g‘LoÿtiÚ +()); + +261 +$this +-> +´ojeù +-> + `fœeTaskFšished +($this, +$exc +); + +262 +throw + +$exc +; + +264 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/TaskAdapter.php + +1 +´oxy +, "setProject")) { + +45 +Œy + { + +46 +$this +-> +´oxy +-> + `£tProjeù +($this-> +´ojeù +); + +47 } + `ÿtch + ( +Exû±iÚ + +$ex +) { + +48 +$this +-> + `log +("E¼Ü s‘tšg…rojeù iÀ" . + `g‘_þass +($this-> +´oxy +è. +Projeù +:: +MSG_ERR +); + +49 +throw + +Ãw + + `BuždExû±iÚ +( +$ex +); + +52 +throw + +Ãw + + `Exû±iÚ +("E¼Ü s‘tšg…rojeù iÀþas " . + `g‘_þass +( +$this +-> +´oxy +)); + +55 ià( + `m‘hod_exi¡s +( +$this +-> +´oxy +, "main")) { + +56 +Œy + { + +57 +$this +-> +´oxy +-> + `maš +($this-> +´ojeù +); + +58 } + `ÿtch + ( +Exû±iÚ + +$ex +) { + +59 +$this +-> + `log +("E¼Ü iÀ" . + `g‘_þass +($this-> +´oxy +), +Projeù +:: +MSG_ERR +); + +60 +throw + +Ãw + + `BuždExû±iÚ +( +$ex +-> + `g‘Mes§ge +()); + +63 +throw + +Ãw + + `BuždExû±iÚ +("You¸sk-likþas '" . + `g‘_þass +( +$this +-> +´oxy +) ."' does‚ot have‡ main() method"); + +72 +funùiÚ + + $£tProxy +( +$o +) { + +73 +$this +-> +´oxy + = +$o +; + +74 + } +} + +80 +funùiÚ + + $g‘Proxy +() { + +81  +$this +-> +´oxy +; + +82 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/TaskContainer.php + +1 +–em’tName + = ( +¡ršg +è +$–em’tName +; + +59 +public + +funùiÚ + + $g‘Tag +() { + +60  ( +¡ršg +è +$this +-> +–em’tName +; + +61 + } +} + +68 +public + +funùiÚ + + $maybeCÚfigu» +() { + +70 +$this +-> +»®Thšg + = $this-> + `makeObjeù +($this, $this-> +w¿µ” +); + +71 +$this +-> +w¿µ” +-> + `£tProxy +($this-> +»®Thšg +); + +72 ià( +$this +-> +»®Thšg + +š¡ªûof + +Task +) { + +73 +$this +-> +»®Thšg +-> + `£tRuÁimeCÚfigu¿bËW¿µ” +($this-> +w¿µ” +); + +76 +$this +-> + `hªdËChžd»n +($this-> +»®Thšg +, $this-> +w¿µ” +); + +77 +$this +-> +w¿µ” +-> + `maybeCÚfigu» +($this-> + `g‘Projeù +()); + +79 + } +} + +86 +public + +funùiÚ + + $maš +() { + +88 ià( +$this +-> +»®Thšg + ==ð +nuÎ +) { + +91 +throw + +Ãw + + `BuždExû±iÚ +("Should‚ot beƒxecuting UnknownElement::main() --ask/type: {$this->elementName}"); + +94 ià( +$this +-> +»®Thšg + +š¡ªûof + +Task +) { + +95 +$this +-> +»®Thšg +-> + `maš +(); + +98 + } +} + +105 +public + +funùiÚ + + $addChžd +( +UnknownEËm’t + +$chžd +) { + +106 +$this +-> +chžd»n +[] = +$chžd +; + +107 + } +} + +115 +funùiÚ + + $hªdËChžd»n +( +ProjeùCompڒt + +$·»Á +, +$·»ÁW¿µ” +) { + +117 ià( +$·»Á + +š¡ªûof + +TaskAd­‹r +) { + +118 +$·»Á + = $·»Á-> + `g‘Proxy +(); + +121 +$·»ÁCÏss + = + `g‘_þass +( +$·»Á +); + +122 +$ih + = +IÁro¥eùiÚH–³r +:: + `g‘H–³r +( +$·»ÁCÏss +); + +124  +$i +=0, +$chžd»nCouÁ += + `couÁ +( +$this +-> +chžd»n +); $i < $childrenCount; $i++) { + +126 +$chždW¿µ” + = +$·»ÁW¿µ” +-> + `g‘Chžd +( +$i +); + +127 +$chžd + = +$this +-> +chžd»n +[ +$i +]; + +128 +$»®Chžd + = +nuÎ +; + +129 ià( +$·»Á + +š¡ªûof + +TaskCڏš” +) { + +130 +$»®Chžd + = +$this +-> + `makeTask +( +$chžd +, +$chždW¿µ” +, +çl£ +); + +131 +$·»Á +-> + `addTask +( +$»®Chžd +); + +133 +$´ojeù + = +$this +-> +´ojeù + ==ð +nuÎ + ? +$·»Á +->project : $this->project; + +134 +$»®Chžd + = +$ih +-> + `ü—‹EËm’t +( +$´ojeù +, +$·»Á +, +$chžd +-> + `g‘Tag +()); + +137 +$chždW¿µ” +-> + `£tProxy +( +$»®Chžd +); + +138 ià( +$»®Chžd + +š¡ªûof + +Task +) { + +139 +$»®Chžd +-> + `£tRuÁimeCÚfigu¿bËW¿µ” +( +$chždW¿µ” +); + +142 ià( +$»®Chžd + +š¡ªûof + +ProjeùCompڒt +) { + +143 +$chžd +-> + `hªdËChžd»n +( +$»®Chžd +, +$chždW¿µ” +); + +146 ià( +$»®Chžd + +š¡ªûof + +Task +) { + +147 +$»®Chžd +-> + `maybeCÚfigu» +(); + +150 + } +} + +161 +´Ùeùed + +funùiÚ + + $makeObjeù +( +UnknownEËm’t + +$ue +, +RuÁimeCÚfigu¿bË + +$w +) { + +162 +$o + = +$this +-> + `makeTask +( +$ue +, +$w +, +Œue +); + +163 ià( +$o + ==ð +nuÎ +) { + +164 +$o + = +$this +-> +´ojeù +-> + `ü—‹D©aTy³ +( +$ue +-> + `g‘Tag +()); + +166 ià( +$o + ==ð +nuÎ +) { + +167 +throw + +Ãw + + `BuždExû±iÚ +("Could‚Ù c»©sk/ty³: '". +$ue +-> + `g‘Tag +()."'. Make surehathis class has been declared usingaskdef /ypedef."); + +169  +$o +; + +170 + } +} + +180 +´Ùeùed + +funùiÚ + + $makeTask +( +UnknownEËm’t + +$ue +, +RuÁimeCÚfigu¿bË + +$w +, +$ÚTÝLev– + = +çl£ +) { + +182 +$sk + = +$this +-> +´ojeù +-> + `ü—‹Task +( +$ue +-> + `g‘Tag +()); + +184 ià( +$sk + ==ð +nuÎ +) { + +185 ià(! +$ÚTÝLev– +) { + +186 +throw + +Ãw + + `BuždExû±iÚ +("Could‚Ù c»©sk oàty³: '". +$this +-> +–em’tName +."'. Make surehathis class has been declared usingaskdef."); + +188  +nuÎ +; + +194 +$sk +-> + `£tLoÿtiÚ +( +$this +-> + `g‘LoÿtiÚ +()); + +195 +$©Œs + = +$w +-> + `g‘A‰ribu‹s +(); + +196 ià( + `is£t +( +$©Œs +['id'])) { + +197 +$this +-> +´ojeù +-> + `addReã»nû +( +$©Œs +['id'], +$sk +); + +201 +$sk +-> + `£tOwnšgT¬g‘ +( +$this +-> +rg‘ +); + +203 +$sk +-> + `š™ +(); + +204  +$sk +; + +205 + } +} + +212 +funùiÚ + + $g‘TaskName +() { + +213  +$this +-> +»®Thšg + ==ð +nuÎ + ? +·»Á +:: + `g‘TaskName +() : $this->realThing->getTaskName(); + +214 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/BaseFilterReader.php + +1 +š™Ÿlized +; + +69 + } +} + +76 +funùiÚ + + $£tIn™Ÿlized +( +$š™Ÿlized +) { + +77 +$this +-> +š™Ÿlized + = ( +boޗn +è +$š™Ÿlized +; + +78 + } +} + +86 +funùiÚ + + $£tProjeù +( +Projeù + +$´ojeù +) { + +88 +$this +-> +´ojeù + = +$´ojeù +; + +89 + } +} + +96 +funùiÚ + + $g‘Projeù +() { + +97  +$this +-> +´ojeù +; + +98 + } +} + +111 +funùiÚ + + $»ad +( +$Ën + = +nuÎ +) { + +112  +$this +-> +š +-> + `»ad +( +$Ën +); + +113 + } +} + +125 +funùiÚ + + $»adLše +() { + +126 +$lše + = +nuÎ +; + +128  ( +$ch + = +$this +-> +š +-> + `»ad +(1)) !== -1 ) { + +129 +$lše + .ð +$ch +; + +130 iàÐ +$ch + === "\n" ) + +134  +$lše +; + +135 + } +} + +141 +funùiÚ + + $eof +() { + +142  +$this +-> +š +-> + `eof +(); + +143 + } +} + +150 +funùiÚ + +log +( +$msg +, +$Ëv– + = +Projeù +:: +MSG_INFO +) { + +151 ià( +$this +-> +´ojeù + !=ð +nuÎ +) { + +152 +$this +-> +´ojeù +-> +log +("[fž‹r:". +g‘_þass +($this)."] ". +$msg +, +$Ëv– +); + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/BaseParamFilterReader.php + +1 +_·¿m‘”s + = +$·¿m‘”s +; + +56 +$this +-> + `£tIn™Ÿlized +( +çl£ +); + +64 +funùiÚ + & + $g‘P¬am‘”s +() { + +65  +$this +-> +_·¿m‘”s +; + +66 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/ChainableReader.php + +1 +š +-> + `»ad +( +$Ën +); + +55 if( +$bufãr + === -1) { + +59 +$´ojeù + = +$this +-> + `g‘Projeù +(); + +60 +$bufãr + = +ProjeùCÚfigu¿tÜ +:: + `»¶aûPrݔt›s +( +$´ojeù +, $bufãr, $´ojeù-> + `g‘Prݔt›s +()); + +62  +$bufãr +; + +75 +funùiÚ + + $chaš +( +R—d” + +$»ad” +) { + +76 +$ÃwFž‹r + = +Ãw + + `Ex·ndPrݔt›s +( +$»ad” +); + +77 +$ÃwFž‹r +-> + `£tProjeù +( +$this +-> + `g‘Projeù +()); + +78  +$ÃwFž‹r +; + +79 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/HeadFilter.php + +1 + `g‘In™Ÿlized +() ) { + +74 +$this +-> + `_š™Ÿlize +(); + +75 +$this +-> + `£tIn™Ÿlized +( +Œue +); + +81 if( +$this +-> +_lšesR—d + < $this-> +_lšes +) { + +83 +$bufãr + = +$this +-> +š +-> + `»ad +( +$Ën +); + +85 if( +$bufãr + === -1) { + +91 +$lšes + = + `ex¶ode +("\n", +$bufãr +); + +93 +$lšesCouÁ + = + `couÁ +( +$lšes +); + +97 +$Ën + = ( +$lšesCouÁ + > +$this +-> +_lšes + ? $this->_lše - $this-> +_lšesR—d + : $linesCount); + +98 +$fž‹»d_bufãr + = + `im¶ode +("\n", + `¬¿y_¦iû +( +$lšes +, 0, +$Ën +) ); + +99 +$this +-> +_lšesR—d + +ð +$Ën +; + +101  +$fž‹»d_bufãr +; + +113 +funùiÚ + + $£tLšes +( +$lšes +) { + +114 +$this +-> +_lšes + = (è +$lšes +; + +115 + } +} + +122 +funùiÚ + + $g‘Lšes +() { + +123  +$this +-> +_lšes +; + +124 + } +} + +136 +funùiÚ + + $chaš +( +R—d” + +$»ad” +) { + +137 +$ÃwFž‹r + = +Ãw + + `H—dFž‹r +( +$»ad” +); + +138 +$ÃwFž‹r +-> + `£tLšes +( +$this +-> + `g‘Lšes +()); + +139 +$ÃwFž‹r +-> + `£tIn™Ÿlized +( +Œue +); + +140 +$ÃwFž‹r +-> + `£tProjeù +( +$this +-> + `g‘Projeù +()); + +141  +$ÃwFž‹r +; + +142 + } +} + +148 +´iv©e + +funùiÚ + + $_š™Ÿlize +() { + +149 +$·¿ms + = +$this +-> + `g‘P¬am‘”s +(); + +150 iàÐ +$·¿ms + !=ð +nuÎ + ) { + +151  +$i + = 0, +$_i += + `couÁ +( +$·¿ms +) ; $i < $_i; $i++) { + +152 iàÐ +£lf +:: +LINES_KEY + =ð +$·¿ms +[ +$i +]-> + `g‘Name +() ) { + +153 +$this +-> +_lšes + = (è +$·¿ms +[ +$i +]-> + `g‘V®ue +(); + +158 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/LineContains.php + +1 + `g‘In™Ÿlized +() ) { + +80 +$this +-> + `_š™Ÿlize +(); + +81 +$this +-> + `£tIn™Ÿlized +( +Œue +); + +84 +$bufãr + = +$this +-> +š +-> + `»ad +( +$Ën +); + +86 ià( +$bufãr + === -1) { + +90 +$lšes + = + `ex¶ode +("\n", +$bufãr +); + +91 +$m©ched + = + `¬¿y +(); + +92 +$cڏšsSize + = + `couÁ +( +$this +-> +_cڏšs +); + +94 + `fܗch +( +$lšes + +as + +$lše +) { + +95  +$i + = 0 ; $˜< +$cڏšsSize + ; $i++) { + +96 +$cڏšsSŒ + = +$this +-> +_cڏšs +[ +$i +]-> + `g‘V®ue +(); + +97 iàÐ + `¡r¡r +( +$lše +, +$cڏšsSŒ +è==ð +çl£ + ) { + +98 +$lše + = +nuÎ +; + +102 if( +$lše + !=ð +nuÎ +) { + +103 +$m©ched +[] = +$lše +; + +106 +$fž‹»d_bufãr + = + `im¶ode +("\n", +$m©ched +); + +107  +$fž‹»d_bufãr +; + +121 +funùiÚ + + $»adCh¬ +() { + +122 iàÐ! +$this +-> + `g‘In™Ÿlized +() ) { + +123 +$this +-> + `_š™Ÿlize +(); + +124 +$this +-> + `£tIn™Ÿlized +( +Œue +); + +127 +$ch + = -1; + +129 iàÐ +$this +-> +_lše + !=ð +nuÎ + ) { + +130 +$ch + = + `sub¡r +( +$this +-> +_lše +, 0, 1); + +131 iàÐ + `¡¾’ +( +$this +-> +_lše +) === 1 ) + +132 +$this +-> +_lše + = +nuÎ +; + +134 +$this +-> +_lše + = + `sub¡r +($this->_line, 1); + +136 +$this +-> +_lše + = $this-> + `»adLše +(); + +137 iàÐ +$this +-> +_lše + ==ð +nuÎ + ) { + +138 +$ch + = -1; + +140 +$cڏšsSize + = + `couÁ +( +$this +-> +_cڏšs +); + +141  +$i + = 0 ; $˜< +$cڏšsSize + ; $i++) { + +142 +$cڏšsSŒ + = +$this +-> +_cڏšs +[ +$i +]-> + `g‘V®ue +(); + +143 iàÐ + `¡r¡r +( +$this +-> +_lše +, +$cڏšsSŒ +è==ð +çl£ + ) { + +144 +$this +-> +_lše + = +nuÎ +; + +148  +$this +-> + `»adCh¬ +(); + +152  +$ch +; + +153 + } +} + +161 +funùiÚ + + $ü—‹Cڏšs +() { + +162 +$num + = + `¬¿y_push +( +$this +-> +_cڏšs +, +Ãw + + `Cڏšs +()); + +163  +$this +-> +_cڏšs +[ +$num +-1]; + +164 + } +} + +174 +funùiÚ + + $£tCڏšs +( +$cڏšs +) { + +176 iàÐ! + `is_¬¿y +( +$cڏšs +) ) { + +177 +throw + +Ãw + + `Exû±iÚ +("Excpected‡rray got somethingƒlse"); + +180 +$this +-> +_cڏšs + = +$cڏšs +; + +181 + } +} + +192 +funùiÚ + + $g‘Cڏšs +() { + +193  +$this +-> +_cڏšs +; + +194 + } +} + +206 +funùiÚ + + $chaš +( +R—d” + +$»ad” +) { + +207 +$ÃwFž‹r + = +Ãw + + `LšeCڏšs +( +$»ad” +); + +208 +$ÃwFž‹r +-> + `£tCڏšs +( +$this +-> + `g‘Cڏšs +()); + +209 +$ÃwFž‹r +-> + `£tIn™Ÿlized +( +Œue +); + +210 +$ÃwFž‹r +-> + `£tProjeù +( +$this +-> + `g‘Projeù +()); + +211  +$ÃwFž‹r +; + +212 + } +} + +217 +´iv©e + +funùiÚ + + $_š™Ÿlize +() { + +218 +$·¿ms + = +$this +-> + `g‘P¬am‘”s +(); + +219 iàÐ +$·¿ms + !=ð +nuÎ + ) { + +220 + `fܗch +( +$·¿ms + +as + +$·¿m +) { + +221 iàÐ +£lf +:: +CONTAINS_KEY + =ð +$·¿m +-> + `g‘Ty³ +() ) { + +222 +$cÚt + = +Ãw + + `Cڏšs +(); + +223 +$cÚt +-> + `£tV®ue +( +$·¿m +-> + `g‘V®ue +()); + +224 + `¬¿y_push +( +$this +-> +_cڏšs +, +$cÚt +); + +229 + } +} + +235 þas  + cCڏšs + { + +240 +´iv©e + + m$_v®ue +; + +246 +funùiÚ + + $£tV®ue +( +$cڏšs +) { + +247 +$this +-> +_v®ue + = ( +¡ršg +è +$cڏšs +; + +254 +funùiÚ + + $g‘V®ue +() { + +255  +$this +-> +_v®ue +; + +256 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/LineContainsRegexp.php + +1 + `g‘In™Ÿlized +() ) { + +70 +$this +-> + `_š™Ÿlize +(); + +71 +$this +-> + `£tIn™Ÿlized +( +Œue +); + +74 +$bufãr + = +$this +-> +š +-> + `»ad +( +$Ën +); + +76 ià( +$bufãr + === -1) { + +80 +$lšes + = + `ex¶ode +("\n", +$bufãr +); + +81 +$m©ched + = + `¬¿y +(); + +83 +$»gexpsSize + = + `couÁ +( +$this +-> +_»gexps +); + +84 + `fܗch +( +$lšes + +as + +$lše +) { + +85  +$i + = 0 ; $i< +$»gexpsSize + ; $i++) { + +86 +$»gexp + = +$this +-> +_»gexps +[ +$i +]; + +87 +$» + = +$»gexp +-> + `g‘Regexp +( +$this +-> + `g‘Projeù +()); + +88 +$m©ches + = +$» +-> + `m©ches +( +$lše +); + +89 iàÐ! +$m©ches + ) { + +90 +$lše + = +nuÎ +; + +94 if( +$lše + !=ð +nuÎ +) { + +95 +$m©ched +[] = +$lše +; + +98 +$fž‹»d_bufãr + = + `im¶ode +("\n", +$m©ched +); + +99  +$fž‹»d_bufãr +; + +107 +funùiÚ + + $ü—‹Regexp +() { + +108 +$num + = + `¬¿y_push +( +$this +-> +_»gexps +, +Ãw + + `ReguÏrEx´essiÚ +()); + +109  +$this +-> +_»gexps +[ +$num +-1]; + +110 + } +} + +121 +funùiÚ + + $£tRegexps +( +$»gexps +) { + +123 iàÐ! + `is_¬¿y +( +$»gexps +) ) { + +124 +throw + +Ãw + + `Exû±iÚ +("Excpected‡n 'array', got somethingƒlse"); + +126 +$this +-> +_»gexps + = +$»gexps +; + +127 + } +} + +139 +funùiÚ + + $g‘Regexps +() { + +140  +$this +-> +_»gexps +; + +141 + } +} + +153 +funùiÚ + + $chaš +( +R—d” + +$»ad” +) { + +154 +$ÃwFž‹r + = +Ãw + + `LšeCڏšsRegExp +( +$»ad” +); + +155 +$ÃwFž‹r +-> + `£tRegexps +( +$this +-> + `g‘Regexps +()); + +156 +$ÃwFž‹r +-> + `£tIn™Ÿlized +( +Œue +); + +157 +$ÃwFž‹r +-> + `£tProjeù +( +$this +-> + `g‘Projeù +()); + +158  +$ÃwFž‹r +; + +159 + } +} + +164 +´iv©e + +funùiÚ + + $_š™Ÿlize +() { + +165 +$·¿ms + = +$this +-> + `g‘P¬am‘”s +(); + +166 iàÐ +$·¿ms + !=ð +nuÎ + ) { + +167  +$i + = 0 ; $i< + `couÁ +( +$·¿ms +) ; $i++) { + +168 iàÐ +£lf +:: +REGEXP_KEY + ==ð +$·¿ms +[ +$i +]-> + `g‘Ty³ +() ) { + +169 +$·‰”n + = +$·¿ms +[ +$i +]-> + `g‘V®ue +(); + +170 +$»gexp + = +Ãw + + `ReguÏrEx´essiÚ +(); + +171 +$»gexp +-> + `£tP©‹º +( +$·‰”n +); + +172 + `¬¿y_push +( +$this +-> +_»gexps +, +$»gexp +); + +176 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/PrefixLines.php + +1 + `g‘In™Ÿlized +() ) { + +66 +$this +-> + `_š™Ÿlize +(); + +67 +$this +-> + `£tIn™Ÿlized +( +Œue +); + +70 +$bufãr + = +$this +-> +š +-> + `»ad +( +$Ën +); + +72 ià( +$bufãr + === -1) { + +76 +$lšes + = + `ex¶ode +("\n", +$bufãr +); + +77 +$fž‹»d + = + `¬¿y +(); + +79 + `fܗch +( +$lšes + +as + +$lše +) { + +80 +$lše + = +$this +-> +_´efix + . $line; + +81 +$fž‹»d +[] = +$lše +; + +84 +$fž‹»d_bufãr + = + `im¶ode +("\n", +$fž‹»d +); + +85  +$fž‹»d_bufãr +; + +95 +funùiÚ + + $£tP»fix +( +$´efix +) { + +96 +$this +-> +_´efix + = ( +¡ršg +è +$´efix +; + +97 + } +} + +104 +funùiÚ + + $g‘P»fix +() { + +105  +$this +-> +_´efix +; + +106 + } +} + +118 +funùiÚ + + $chaš +( +R—d” + +$»ad” +) { + +119 +$ÃwFž‹r + = +Ãw + + `P»fixLšes +( +$»ad” +); + +120 +$ÃwFž‹r +-> + `£tP»fix +( +$this +-> + `g‘P»fix +()); + +121 +$ÃwFž‹r +-> + `£tIn™Ÿlized +( +Œue +); + +122 +$ÃwFž‹r +-> + `£tProjeù +( +$this +-> + `g‘Projeù +()); + +123  +$ÃwFž‹r +; + +124 + } +} + +129 +´iv©e + +funùiÚ + + $_š™Ÿlize +() { + +130 +$·¿ms + = +$this +-> + `g‘P¬am‘”s +(); + +131 iàÐ +$·¿ms + !=ð +nuÎ + ) { + +132  +$i + = 0, +$_i += + `couÁ +( +$·¿ms +) ; $i < $_i ; $i++) { + +133 iàÐ +£lf +:: +PREFIX_KEY + =ð +$·¿ms +[ +$i +]-> + `g‘Name +() ) { + +134 +$this +-> +_´efix + = ( +¡ršg +è +$·¿ms +[ +$i +]-> + `g‘V®ue +(); + +139 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/ReplaceRegexp.php + +1 +»gexps +, +Ãw + + `ReguÏrEx´essiÚ +()); + +55  +$this +-> +»gexps +[ +$num +-1]; + +63 +funùiÚ + + $£tRegexps +( +$»gexps +) { + +64 +$this +-> +»gexps + = +$»gexps +; + +65 + } +} + +72 +funùiÚ + + $g‘Regexps +() { + +73  +$this +-> +»gexps +; + +74 + } +} + +87 +funùiÚ + + $»ad +( +$Ën + = +nuÎ +) { + +89 +$bufãr + = +$this +-> +š +-> + `»ad +( +$Ën +); + +91 if( +$bufãr + === -1) { + +96 + `fܗch +( +$this +-> +»gexps + +as + +$ex±y³ +) { + +97 +$»gexp + = +$ex±y³ +-> + `g‘Regexp +( +$this +-> +´ojeù +); + +98 +Œy + { + +99 +$bufãr + = +$»gexp +-> + `»¶aû +($buffer); + +100 +$this +-> + `log +("P”fÜmšg„egex°»¶aû: /". +$»gexp +-> + `g‘P©‹º +()."/".$»gexp-> + `g‘R•Ïû +()."/g".($»gexp-> + `g‘IgnÜeCa£ +(è? 'i' : ''), +Projeù +:: +MSG_VERBOSE +); + +101 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +103 +$this +-> + `log +("E¼Ü…”fÜmšg„egex°»¶aû: " . +$e +-> + `g‘Mes§ge +(), +Projeù +:: +MSG_WARN +); + +107  +$bufãr +; + +108 + } +} + +120 +funùiÚ + + $chaš +( +R—d” + +$»ad” +) { + +121 +$ÃwFž‹r + = +Ãw + + `R•ÏûRegExp +( +$»ad” +); + +122 +$ÃwFž‹r +-> + `£tProjeù +( +$this +-> + `g‘Projeù +()); + +123 +$ÃwFž‹r +-> + `£tRegexps +( +$this +-> + `g‘Regexps +()); + +124  +$ÃwFž‹r +; + +125 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/ReplaceTokens.php + +1 +_®Éok’s + ==ð +nuÎ +) { + +118 +$this +-> +_®Éok’s + = + `¬¿y +(); + +120 +$couÁ + = + `couÁ +( +$this +-> +_tok’sourûs +); + +121  +$i + = 0; $˜< +$couÁ +; $i++) { + +122 +$sourû + = +$this +-> +_tok’sourûs +[ +$i +]; + +123 +$this +-> +_®Éok’s + = + `¬¿y_m”ge +($this->_®Éok’s, +$sourû +-> + `g‘Tok’s +()); + +127 +$this +-> +_®Éok’s + = + `¬¿y_m”ge +($this-> +_tok’s +, $this->_alltokens); + +130 +$tok’s + = +$this +-> +_®Éok’s +; + +132 +$»¶aûW™h + = +nuÎ +; + +133 +$couÁ + = + `couÁ +( +$tok’s +); + +135  +$i + = 0; $˜< +$couÁ +; $i++) { + +136 ià( +$tok’s +[ +$i +]-> + `g‘Key +(è==ð +$key +) { + +137 +$»¶aûW™h + = +$tok’s +[ +$i +]-> + `g‘V®ue +(); + +141 ià( +$»¶aûW™h + ==ð +nuÎ +) { + +142 +$»¶aûW™h + = +$this +-> +_begšTok’ + . +$key + . $this-> +_’dTok’ +; + +143 +$this +-> + `log +("NØtok’ defšed fÜ key \"".$this-> +_begšTok’ + . +$key + . $this-> +_’dTok’ +."\""); + +145 +$this +-> + `log +("R•Ïûd \"".$this-> +_begšTok’ + . +$key + . $this-> +_’dTok’ + ."\" w™h \"". +$»¶aûW™h +."\""); + +148  +$»¶aûW™h +; + +157 +funùiÚ + + $»ad +( +$Ën + = +nuÎ +) { + +158 iàÐ! +$this +-> + `g‘In™Ÿlized +() ) { + +159 +$this +-> + `_š™Ÿlize +(); + +160 +$this +-> + `£tIn™Ÿlized +( +Œue +); + +164 +$bufãr + = +$this +-> +š +-> + `»ad +( +$Ën +); + +166 if( +$bufãr + === -1) { + +171 +$bufãr + = + `´eg_»¶aû_ÿÎback +( + +172 "/". + `´eg_quÙe +( +$this +-> +_begšTok’ +)."([\w\.\-:]+?)".´eg_quÙe($this-> +_’dTok’ +)."/", + +173 + `¬¿y +( +$this +, '»¶aûTok’C®lback'), +$bufãr +); + +175  +$bufãr +; + +176 + } +} + +183 +funùiÚ + + $£tBegšTok’ +( +$begšTok’ +) { + +184 +$this +-> +_begšTok’ + = ( +¡ršg +è +$begšTok’ +; + +185 + } +} + +192 +funùiÚ + + $g‘BegšTok’ +() { + +193  +$this +-> +_begšTok’ +; + +194 + } +} + +201 +funùiÚ + + $£tEndTok’ +( +$’dTok’ +) { + +202 +$this +-> +_’dTok’ + = ( +¡ršg +è +$’dTok’ +; + +203 + } +} + +210 +funùiÚ + + $g‘EndTok’ +() { + +211  +$this +-> +_’dTok’ +; + +212 + } +} + +220 +funùiÚ + + $ü—‹Tok’ +() { + +221 +$num + = + `¬¿y_push +( +$this +-> +_tok’s +, +Ãw + + `Tok’ +()); + +222  +$this +-> +_tok’s +[ +$num +-1]; + +223 + } +} + +230 +funùiÚ + + $ü—‹Tok’sourû +() { + +231 +$num + = + `¬¿y_push +( +$this +-> +_tok’sourûs +, +Ãw + + `Tok’Sourû +()); + +232  +$this +-> +_tok’sourûs +[ +$num +-1]; + +233 + } +} + +242 +funùiÚ + + $£tTok’s +( +$tok’s +) { + +244 iàÐ! + `is_¬¿y +( +$tok’s +) ) { + +245 +throw + +Ãw + + `Exû±iÚ +("Excpected 'array', got somethingƒlse"); + +248 +$this +-> +_tok’s + = +$tok’s +; + +249 + } +} + +257 +funùiÚ + + $g‘Tok’s +() { + +258  +$this +-> +_tok’s +; + +259 + } +} + +266 +funùiÚ + + $£tTok’sourûs +( +$sourûs +) { + +268 iàÐ! + `is_¬¿y +( +$sourûs +)) { + +269 +throw + +Ãw + + `Exû±iÚ +("Exspected 'array', got somethingƒlse"); + +271 +$this +-> +_tok’sourûs + = +$sourûs +; + +272 + } +} + +279 +funùiÚ + + $g‘Tok’sourûs +() { + +280  +$this +-> +_tok’sourûs +; + +281 + } +} + +293 +funùiÚ + + $chaš +( +R—d” + +$»ad” +) { + +294 +$ÃwFž‹r + = +Ãw + + `R•ÏûTok’s +( +$»ad” +); + +295 +$ÃwFž‹r +-> + `£tProjeù +( +$this +-> + `g‘Projeù +()); + +296 +$ÃwFž‹r +-> + `£tBegšTok’ +( +$this +-> + `g‘BegšTok’ +()); + +297 +$ÃwFž‹r +-> + `£tEndTok’ +( +$this +-> + `g‘EndTok’ +()); + +298 +$ÃwFž‹r +-> + `£tTok’s +( +$this +-> + `g‘Tok’s +()); + +299 +$ÃwFž‹r +-> + `£tTok’sourûs +( +$this +-> + `g‘Tok’sourûs +()); + +300 +$ÃwFž‹r +-> + `£tIn™Ÿlized +( +Œue +); + +301  +$ÃwFž‹r +; + +302 + } +} + +309 +´iv©e + +funùiÚ + + $_š™Ÿlize +() { + +310 +$·¿ms + = +$this +-> + `g‘P¬am‘”s +(); + +311 iàÐ +$·¿ms + !=ð +nuÎ + ) { + +312  +$i + = 0 ; $i< + `couÁ +( +$·¿ms +) ; $i++) { + +313 iàÐ +$·¿ms +[ +$i +] !=ð +nuÎ + ) { + +314 +$ty³ + = +$·¿ms +[ +$i +]-> + `g‘Ty³ +(); + +315 iàÐ +$ty³ + === "tokenchar" ) { + +316 +$Çme + = +$·¿ms +[ +$i +]-> + `g‘Name +(); + +317 iàÐ +$Çme + === "begintoken" ) { + +318 +$this +-> +_begšTok’ + = + `sub¡r +( +$·¿ms +[ +$i +]-> + `g‘V®ue +(), 0, 1); + +319 } iàÐ +$Çme + === "endtoken" ) { + +320 +$this +-> +_’dTok’ + = + `sub¡r +( +$·¿ms +[ +$i +]-> + `g‘V®ue +(), 0, 1); + +322 } iàÐ +$ty³ + === "token" ) { + +323 +$Çme + = +$·¿ms +[ +$i +]-> + `g‘Name +(); + +324 +$v®ue + = +$·¿ms +[ +$i +]-> + `g‘V®ue +(); + +326 +$tok + = +Ãw + + `Tok’ +(); + +327 +$tok +-> + `£tKey +( +$Çme +); + +328 +$tok +-> + `£tV®ue +( +$v®ue +); + +330 + `¬¿y_push +( +$this +-> +_tok’s +, +$tok +); + +331 } iàÐ +$ty³ + === "tokensource" ) { + +333 +$¬r + = + `¬¿y +(); +$sub·¿ms + = +$·¿ms +[ +$i +]-> + `g‘P¬ams +(); + +334 +$couÁ + = + `couÁ +( +$sub·¿ms +); + +335  +$i + = 0; $˜< +$couÁ +; $i++) { + +336 +$¬r +[ +$sub·¿ms +[ +$i +]-> + `g‘Name +()] = $sub·¿ms[$i]-> + `g‘V®ue +(); + +340 +$tok’sourû + = +Ãw + + `Tok’Sourû +(); + +341 ià( + `is£t +( +$¬r +["classname"])) + +342 +$tok’sourû +-> + `£tCÏs¢ame +( +$¬r +["classname"]); + +345 + `fܗch + ( +$¬r + +as + +$key + => +$v®ue +) { + +346 ià( + `¡¹Þow” +( +$key +) === "classname") + +348 +$·¿m + = +$tok’sourû +-> + `ü—‹P¬am +(); + +349 +$·¿m +-> + `£tName +( +$key +); + +350 +$·¿m +-> + `£tV®ue +( +$v®ue +); + +353 +$this +-> +_tok’sourûs +[] = +$tok’sourû +; + +358 + } +} + +364 þas  + cTok’ + { + +370 +´iv©e + + m$_key +; + +376 +´iv©e + + m$_v®ue +; + +383 +funùiÚ + + $£tKey +( +$key +) { + +384 +$this +-> +_key + = ( +¡ršg +è +$key +; + +392 +funùiÚ + + $£tV®ue +( +$v®ue +) { + +393 +$this +-> +_v®ue + = ( +¡ršg +è +$v®ue +; + +394 + } +} + +401 +funùiÚ + + $g‘Key +() { + +402  +$this +-> +_key +; + +403 + } +} + +410 +funùiÚ + + $g‘V®ue +() { + +411  +$this +-> +_v®ue +; + +412 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/StripLineBreaks.php + +1 + `g‘In™Ÿlized +() ) { + +76 +$this +-> + `_š™Ÿlize +(); + +77 +$this +-> + `£tIn™Ÿlized +( +Œue +); + +80 +$bufãr + = +$this +-> +š +-> + `»ad +( +$Ën +); + +81 if( +$bufãr + === -1) { + +85 +$bufãr + = + `´eg_»¶aû +("/[". +$this +-> +_lšeB»aks +."]/", '', $buffer); + +87  +$bufãr +; + +96 +funùiÚ + + $£tLšeB»aks +( +$lšeB»aks +) { + +97 +$this +-> +_lšeB»aks + = ( +¡ršg +è +$lšeB»aks +; + +98 + } +} + +105 +funùiÚ + + $g‘LšeB»aks +() { + +106  +$this +-> +_lšeB»aks +; + +107 + } +} + +119 +funùiÚ + + $chaš +( +R—d” + +$»ad” +) { + +120 +$ÃwFž‹r + = +Ãw + + `SŒLšeB»aks +( +$»ad” +); + +121 +$ÃwFž‹r +-> + `£tLšeB»aks +( +$this +-> + `g‘LšeB»aks +()); + +122 +$ÃwFž‹r +-> + `£tIn™Ÿlized +( +Œue +); + +123 +$ÃwFž‹r +-> + `£tProjeù +( +$this +-> + `g‘Projeù +()); + +124  +$ÃwFž‹r +; + +125 + } +} + +130 +´iv©e + +funùiÚ + + $_š™Ÿlize +() { + +131 +$u£rDefšedLšeB»aks + = +nuÎ +; + +132 +$·¿ms + = +$this +-> + `g‘P¬am‘”s +(); + +133 iàÐ +$·¿ms + !=ð +nuÎ + ) { + +134  +$i + = 0 ; $i< + `couÁ +( +$·¿ms +) ; $i++) { + +135 iàÐ +£lf +:: +LINE_BREAKS_KEY + ==ð +$·¿ms +[ +$i +]-> + `g‘Name +() ) { + +136 +$u£rDefšedLšeB»aks + = +$·¿ms +[ +$i +]-> + `g‘V®ue +(); + +142 iàÐ +$u£rDefšedLšeB»aks + !=ð +nuÎ + ) { + +143 +$this +-> +_lšeB»aks + = +$u£rDefšedLšeB»aks +; + +145 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/StripLineComments.php + +1 + `g‘In™Ÿlized +() ) { + +78 +$this +-> + `_š™Ÿlize +(); + +79 +$this +-> + `£tIn™Ÿlized +( +Œue +); + +82 +$bufãr + = +$this +-> +š +-> + `»ad +( +$Ën +); + +84 ià( +$bufãr + === -1) { + +88 +$lšes + = + `ex¶ode +("\n", +$bufãr +); + +89 +$fž‹»d + = + `¬¿y +(); + +91 +$comm’tsSize + = + `couÁ +( +$this +-> +_comm’ts +); + +93 + `fܗch +( +$lšes + +as + +$lše +) { + +94  +$i + = 0; $˜< +$comm’tsSize +; $i++) { + +95 +$comm’t + = +$this +-> +_comm’ts +[ +$i +]-> + `g‘V®ue +(); + +96 iàÐ +SŒšgH–³r +:: + `¡¬tsW™h +( +$comm’t +, + `Érim +( +$lše +)) ) { + +97 +$lše + = +nuÎ +; + +101 ià( +$lše + !=ð +nuÎ +) { + +102 +$fž‹»d +[] = +$lše +; + +106 +$fž‹»d_bufãr + = + `im¶ode +("\n", +$fž‹»d +); + +107  +$fž‹»d_bufãr +; + +116 +funùiÚ + + $ü—‹Comm’t +() { + +117 +$num + = + `¬¿y_push +( +$this +-> +_comm’ts +, +Ãw + + `Comm’t +()); + +118  +$this +-> +_comm’ts +[ +$num +-1]; + +119 + } +} + +127 +funùiÚ + + $£tComm’ts +( +$lšeB»aks +) { + +128 ià(! + `is_¬¿y +( +$lšeB»aks +)) { + +129 +throw + +Ãw + + `Exû±iÚ +("Excpected 'array', got somethingƒlse"); + +131 +$this +-> +_comm’ts + = +$lšeB»aks +; + +132 + } +} + +139 +funùiÚ + + $g‘Comm’ts +() { + +140  +$this +-> +_comm’ts +; + +141 + } +} + +153 +funùiÚ + + $chaš +( +R—d” + +$»ad” +) { + +154 +$ÃwFž‹r + = +Ãw + + `SŒLšeComm’ts +( +$»ad” +); + +155 +$ÃwFž‹r +-> + `£tComm’ts +( +$this +-> + `g‘Comm’ts +()); + +156 +$ÃwFž‹r +-> + `£tIn™Ÿlized +( +Œue +); + +157 +$ÃwFž‹r +-> + `£tProjeù +( +$this +-> + `g‘Projeù +()); + +158  +$ÃwFž‹r +; + +159 + } +} + +164 +´iv©e + +funùiÚ + + $_š™Ÿlize +() { + +165 +$·¿ms + = +$this +-> + `g‘P¬am‘”s +(); + +166 iàÐ +$·¿ms + !=ð +nuÎ + ) { + +167  +$i + = 0 ; $i< + `couÁ +( +$·¿ms +) ; $i++) { + +168 iàÐ +£lf +:: +COMMENTS_KEY + ==ð +$·¿ms +[ +$i +]-> + `g‘Ty³ +() ) { + +169 +$comm’t + = +Ãw + + `Comm’t +(); + +170 +$comm’t +-> + `£tV®ue +( +$·¿ms +[ +$i +]-> + `g‘V®ue +()); + +171 + `¬¿y_push +( +$this +-> +_comm’ts +, +$comm’t +); + +175 + } +} + +181 þas  + cComm’t + { + +184 +´iv©e + + m$_v®ue +; + +192 +funùiÚ + + $£tV®ue +( +$v®ue +) { + +193 +$this +-> +_v®ue + = ( +¡ršg +è +$v®ue +; + +201 +funùiÚ + + $g‘V®ue +() { + +202  +$this +-> +_v®ue +; + +203 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/StripPhpComments.php + +1 +š +-> + `»ad +( +$Ën +); + +66 if( +$bufãr + === -1) { + +71 +$bufãr + = + `´eg_»¶aû +('/\/\*[^*]*\*+([^\/*][^*]*\*+)*\/|\/\/[^\n]*|("(\\\\.|[^"\\\\])*"|\'(\\\\.|[^\'\\\\])*\'|.[^\/"\'\\\\]*)/s', "$2", $buffer); + +114  +$bufãr +; + +129 +funùiÚ + + $»adCh¬ +() { + +130 +$ch + = -1; + +132 iàÐ +$this +-> +_»adAh—dCh + !== -1 ) { + +133 +$ch + = +$this +-> +_»adAh—dCh +; + +134 +$this +-> +_»adAh—dCh + = -1; + +136 +$ch + = +$this +-> +š +-> + `»adCh¬ +(); + +137 iàÐ +$ch + === "\"" ) { + +138 +$this +-> +_šSŒšg + = !$this->_inString; + +140 iàÐ! +$this +-> +_šSŒšg + ) { + +141 iàÐ +$ch + === "/" ) { + +142 +$ch + = +$this +-> +š +-> + `»adCh¬ +(); + +143 iàÐ +$ch + === "/" ) { + +144  +$ch + !== "\n" && $ch !== -1 ) { + +145 +$ch + = +$this +-> +š +-> + `»adCh¬ +(); + +147 } iàÐ +$ch + === "*" ) { + +148  +$ch + !== -1 ) { + +149 +$ch + = +$this +-> +š +-> + `»adCh¬ +(); + +150  +$ch + === "*" && $ch !== -1 ) { + +151 +$ch + = +$this +-> +š +-> + `»adCh¬ +(); + +154 iàÐ +$ch + === "/" ) { + +155 +$ch + = +$this +-> + `»adCh¬ +(); + +156 +echo + "$ch\n"; + +161 +$this +-> +_»adAh—dCh + = +$ch +; + +162 +$ch + = "/"; + +169  +$ch +; + +170 + } +} + +182 +funùiÚ + + $chaš +( +R—d” + +$»ad” +) { + +183 +$ÃwFž‹r + = +Ãw + + `SŒPhpComm’ts +( +$»ad” +); + +184 +$ÃwFž‹r +-> + `£tProjeù +( +$this +-> + `g‘Projeù +()); + +185  +$ÃwFž‹r +; + +186 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/StripWhitespace.php + +1 +´oûs£d + ==ð +Œue +) { + +55 +$php + = +nuÎ +; + +56  ( +$bufãr + = +$this +-> +š +-> + `»ad +( +$Ën +)) !== -1 ) { + +57 +$php + .ð +$bufãr +; + +60 ià( +$php + ==ð +nuÎ + ) { + +64 if( + `em±y +( +$php +)) { + +65 +$this +-> + `log +("PHP fži em±y!", +Projeù +:: +MSG_WARN +); + +70 +$fže + = +Ãw + + `PhšgFže +( + `‹m²am +( +PhšgFže +:: + `g‘TempDœ +(), 'stripwhitespace')); + +71 + `fže_put_cڋÁs +( +$fže +-> + `g‘AbsÞu‹P©h +(), +$php +); + +72 +$ouut + = + `php_¡r_wh™e¥aû +( +$fže +-> + `g‘AbsÞu‹P©h +()); + +73 + `uƚk +( +$fže +-> + `g‘AbsÞu‹P©h +()); + +75 +$this +-> +´oûs£d + = +Œue +; + +77  +$ouut +; + +90 +public + +funùiÚ + + $chaš +( +R—d” + +$»ad” +) { + +91 +$ÃwFž‹r + = +Ãw + + `SŒWh™e¥aû +( +$»ad” +); + +92 +$ÃwFž‹r +-> + `£tProjeù +( +$this +-> + `g‘Projeù +()); + +93  +$ÃwFž‹r +; + +94 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/TabToSpaces.php + +1 + `g‘In™Ÿlized +() ) { + +77 +$this +-> + `_š™Ÿlize +(); + +78 +$this +-> + `£tIn™Ÿlized +( +Œue +); + +81 +$bufãr + = +$this +-> +š +-> + `»ad +( +$Ën +); + +83 if( +$bufãr + === -1) { + +87 +$bufãr + = + `¡r_»¶aû +("\t", + `¡r_»³© +(' ', +$this +-> +bL’gth +), $buffer); + +89  +$bufãr +; + +97 +funùiÚ + + $£tTabËngth +( +$bL’gth +) { + +98 +$this +-> +bL’gth + = (è +$bL’gth +; + +99 + } +} + +106 +funùiÚ + + $g‘TabËngth +() { + +107  +$this +-> +bL’gth +; + +108 + } +} + +120 +funùiÚ + + $chaš +( +R—d” + +$»ad” +) { + +121 +$ÃwFž‹r + = +Ãw + + `TabToS·ûs +( +$»ad” +); + +122 +$ÃwFž‹r +-> + `£tTabËngth +( +$this +-> + `g‘TabËngth +()); + +123 +$ÃwFž‹r +-> + `£tIn™Ÿlized +( +Œue +); + +124 +$ÃwFž‹r +-> + `£tProjeù +( +$this +-> + `g‘Projeù +()); + +125  +$ÃwFž‹r +; + +126 + } +} + +131 +´iv©e + +funùiÚ + + $_š™Ÿlize +() { + +132 +$·¿ms + = +$this +-> + `g‘P¬am‘”s +(); + +133 iàÐ +$·¿ms + !=ð +nuÎ + ) { + +134  +$i + = 0 ; $i< + `couÁ +( +$·¿ms +) ; $i++) { + +135 ià( +£lf +:: +TAB_LENGTH_KEY + ==ð +$·¿ms +[ +$i +]-> + `g‘Name +()) { + +136 +$this +-> +bL’gth + = +$·¿ms +[ +$i +]-> + `g‘V®ue +(); + +141 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/TailFilter.php + +1 +š +-> + `»ad +( +$Ën +)) !== -1 ) { + +77 +$bufãr +ð + `Œim +($buffer, "\n"); + +79 +$lšes + = + `ex¶ode +("\n", +$bufãr +); + +81 iàÐ + `couÁ +( +$lšes +è>ð +$this +-> +_lšes + ) { + +84 +$off + = + `couÁ +( +$lšes +)- +$this +-> +_lšes +; + +85 +$this +-> +_lšeBufãr + = + `¬¿y_¦iû +( +$lšes +, +$off +); + +89 +$this +-> +_lšeBufãr + = + `¬¿y_¦iû +($this->_lšeBufãr, + `couÁ +( +$lšes +)-1); + +90 +$this +-> +_lšeBufãr + = + `¬¿y_m”ge +($this->_lšeBufãr, +$lšes +); + +94 iàÐ + `em±y +( +$this +-> +_lšeBufãr +) ) + +95 +$»t + = -1; + +97 +$»t + = + `im¶ode +("\n", +$this +-> +_lšeBufãr +); + +98 +$this +-> +_lšeBufãr + = + `¬¿y +(); + +101  +$»t +; + +109 +funùiÚ + + $£tLšes +( +$lšes +) { + +110 +$this +-> +_lšes + = (è +$lšes +; + +111 + } +} + +118 +funùiÚ + + $g‘Lšes +() { + +119  +$this +-> +_lšes +; + +120 + } +} + +132 +funùiÚ + + $chaš +( +R—d” + +$»ad” +) { + +133 +$ÃwFž‹r + = +Ãw + + `TažFž‹r +( +$»ad” +); + +134 +$ÃwFž‹r +-> + `£tLšes +( +$this +-> + `g‘Lšes +()); + +135 +$ÃwFž‹r +-> + `£tIn™Ÿlized +( +Œue +); + +136 +$ÃwFž‹r +-> + `£tProjeù +( +$this +-> + `g‘Projeù +()); + +137  +$ÃwFž‹r +; + +138 + } +} + +144 +´iv©e + +funùiÚ + + $_š™Ÿlize +() { + +145 +$·¿ms + = +$this +-> + `g‘P¬am‘”s +(); + +146 iàÐ +$·¿ms + !=ð +nuÎ + ) { + +147  +$i +=0, +$_i += + `couÁ +( +$·¿ms +); $i < $_i; $i++) { + +148 iàÐ +£lf +:: +LINES_KEY + =ð +$·¿ms +[ +$i +]-> + `g‘Name +() ) { + +149 +$this +-> +_lšes + = (è +$·¿ms +[ +$i +]-> + `g‘V®ue +(); + +154 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/TidyFilter.php + +1 +’codšg + = +$v +; + +62 +public + +funùiÚ + + $£tCÚfigP¬am‘”s +( +$·¿ms +) + +64 +$this +-> +cÚfigP¬am‘”s + = +$·¿ms +; + +65 + } +} + +71 +public + +funùiÚ + + $ü—‹CÚfig +() { + +72 +$num + = + `¬¿y_push +( +$this +-> +cÚfigP¬am‘”s +, +Ãw + + `P¬am‘” +()); + +73  +$this +-> +cÚfigP¬am‘”s +[ +$num +-1]; + +74 + } +} + +80 +´iv©e + +funùiÚ + + $g‘Di¡žËdCÚfig +() { + +81 +$cÚfig + = + `¬¿y +(); + +82 + `fܗch +( +$this +-> +cÚfigP¬am‘”s + +as + +$p +) { + +83 +$cÚfig +[ +$p +-> + `g‘Name +()] = $p-> + `g‘V®ue +(); + +85  +$cÚfig +; + +86 + } +} + +96 +funùiÚ + + $»ad +( +$Ën + = +nuÎ +) { + +98 ià(! + `þass_exi¡s +('Tidy')) { + +99 +throw + +Ãw + + `BuždExû±iÚ +("You mustƒnablehe 'tidy'ƒxtension in your PHP configuration in ordero usehe Tidy filter."); + +102 iàÐ! +$this +-> + `g‘In™Ÿlized +() ) { + +103 +$this +-> + `_š™Ÿlize +(); + +104 +$this +-> + `£tIn™Ÿlized +( +Œue +); + +107 +$bufãr + = +$this +-> +š +-> + `»ad +( +$Ën +); + +108 if( +$bufãr + === -1) { + +112 +$cÚfig + = +$this +-> + `g‘Di¡žËdCÚfig +(); + +114 +$tidy + = +Ãw + + `Tidy +(); + +115 +$tidy +-> + `·r£SŒšg +( +$bufãr +, +$cÚfig +, +$this +-> +’codšg +); + +116 +$tidy +-> + `þ—nR•aœ +(); + +118  + `tidy_g‘_ouut +( +$tidy +); + +120 + } +} + +132 +public + +funùiÚ + + $chaš +( +R—d” + +$»ad” +) { + +133 +$ÃwFž‹r + = +Ãw + + `TidyFž‹r +( +$»ad” +); + +134 +$ÃwFž‹r +-> + `£tCÚfigP¬am‘”s +( +$this +-> +cÚfigP¬am‘”s +); + +135 +$ÃwFž‹r +-> + `£tEncodšg +( +$this +-> +’codšg +); + +136 +$ÃwFž‹r +-> + `£tProjeù +( +$this +-> + `g‘Projeù +()); + +137  +$ÃwFž‹r +; + +138 + } +} + +144 +´iv©e + +funùiÚ + + $_š™Ÿlize +() { + +145 +$·¿ms + = +$this +-> + `g‘P¬am‘”s +(); + +146 ià( +$·¿ms +) { + +147 + `fܗch +( +$·¿ms + +as + +$·¿m +) { + +148 ià( +$·¿m +-> + `g‘Ty³ +() == "config") { + +149 +$this +-> +cÚfigP¬am‘”s +[] = +$·¿m +; + +152 ià( +$·¿m +-> + `g‘Name +() == "encoding") { + +153 +$this +-> + `£tEncodšg +( +$·¿m +-> + `g‘V®ue +()); + +160 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/TranslateGettext.php + +1 +domaš + = +$domaš +; + +82 +funùiÚ + + $g‘Domaš +() { + +83  +$this +-> +domaš +; + +84 + } +} + +90 +funùiÚ + + $£tDœ +( +PhšgFže + +$dœ +) { + +91 +$this +-> +dœ + = +$dœ +; + +92 + } +} + +98 +funùiÚ + + $g‘Dœ +() { + +99  +$this +-> +dœ +; + +100 + } +} + +109 +funùiÚ + + $£tLoÿË +( +$loÿË +) { + +110 +$this +-> +loÿË + = +$loÿË +; + +111 + } +} + +117 +funùiÚ + + $g‘LoÿË +() { + +118  +$this +-> +loÿË +; + +119 + } +} + +125 +´Ùeùed + +funùiÚ + + $checkA‰ribu‹s +() { + +126 ià(! +$this +-> +domaš + || !$this-> +loÿË + || !$this-> +dœ +) { + +127 +throw + +Ãw + + `BuždExû±iÚ +("You must specify values for domain,†ocale,‡nd dir‡ttributes."); + +129 + } +} + +140 +´Ùeùed + +funùiÚ + + $š™EnvœÚm’t +() { + +141 +$this +-> +¡ÜedLoÿË + = + `g‘’v +("LANG"); + +143 +$this +-> + `log +("S‘tšg†oÿˁØ" . $this-> +loÿË +, +Projeù +:: +MSG_DEBUG +); + +144 + `pu‹nv +("LANG=". +$this +-> +loÿË +); + +145 +$»t + = + `£ŽoÿË +( +LC_ALL +, +$this +-> +loÿË +); + +146 ià( +$»t + ==ð +çl£ +) { + +147 +$msg + = "Could‚Ù s‘†oÿˁØ" . +$this +-> +loÿË + + +150 +throw + +Ãw + + `BuždExû±iÚ +( +$msg +); + +153 +$this +-> + `log +("Bšdšg domaš '".$this-> +domaš +."'Ø" . $this-> +dœ +, +Projeù +:: +MSG_DEBUG +); + +154 + `bšd‹xtdomaš +( +$this +-> +domaš +, $this-> +dœ +-> + `g‘AbsÞu‹P©h +()); + +155 + `‹xtdomaš +( +$this +-> +domaš +); + +156 + } +} + +165 +´Ùeùed + +funùiÚ + + $»¡ÜeEnvœÚm’t +() { + +166 + `pu‹nv +("LANG=". +$this +-> +¡ÜedLoÿË +); + +167 + `£ŽoÿË +( +LC_ALL +, +$this +-> +¡ÜedLoÿË +); + +168 + } +} + +180 +´iv©e + +funùiÚ + + $xϋSŒšgC®lback +( +$m©ches +) { + +181 +$ch¬befÜe + = +$m©ches +[1]; + +182 +$msgid + = +$m©ches +[2]; + +183 +$Œª¦©ed + = + `g‘‹xt +( +$msgid +); + +184 +$this +-> + `log +("T¿n¦©šg \"$msgid\" => \"$Œª¦©ed\"", +Projeù +:: +MSG_DEBUG +); + +185  +$ch¬befÜe + . '"' . +$Œª¦©ed + . '"'; + +186 + } +} + +197 +funùiÚ + + $»ad +( +$Ën + = +nuÎ +) { + +199 iàÐ! +$this +-> + `g‘In™Ÿlized +() ) { + +200 +$this +-> + `_š™Ÿlize +(); + +201 +$this +-> + `£tIn™Ÿlized +( +Œue +); + +205 +$this +-> + `checkA‰ribu‹s +(); + +207 +$bufãr + = +$this +-> +š +-> + `»ad +( +$Ën +); + +208 if( +$bufãr + === -1) { + +213 +$this +-> + `š™EnvœÚm’t +(); + +225 +$bufãr + = + `´eg_»¶aû_ÿÎback +('/([^\w]|^)_\("((\\\"|[^"])*)"\)/', + `¬¿y +( +$this +, 'xlateStringCallback'), $buffer); + +226 +$bufãr + = + `´eg_»¶aû_ÿÎback +('/([^\w]|^)g‘‹xt\("((\\\"|[^"])*)"\)/', + `¬¿y +( +$this +, 'xlateStringCallback'), $buffer); + +232 +$m©ches + = + `¬¿y +(); + +233 ià( + `´eg_m©ch +('/([^\w]|^)(g‘‹xt\([^\)]+\))/', +$bufãr +, +$m©ches +)) { + +234 +$this +-> + `log +("UÇbˁسrfÜm¿n¦©iÚ on: " . +$m©ches +[2], +Projeù +:: +MSG_WARN +); + +237 +$this +-> + `»¡ÜeEnvœÚm’t +(); + +239  +$bufãr +; + +240 + } +} + +252 +funùiÚ + + $chaš +( +R—d” + +$»ad” +) { + +253 +$ÃwFž‹r + = +Ãw + + `T¿n¦©eG‘‹xt +( +$»ad” +); + +254 +$ÃwFž‹r +-> + `£tProjeù +( +$this +-> + `g‘Projeù +()); + +255 +$ÃwFž‹r +-> + `£tDomaš +( +$this +-> + `g‘Domaš +()); + +256 +$ÃwFž‹r +-> + `£tLoÿË +( +$this +-> + `g‘LoÿË +()); + +257 +$ÃwFž‹r +-> + `£tDœ +( +$this +-> + `g‘Dœ +()); + +258  +$ÃwFž‹r +; + +259 + } +} + +264 +´iv©e + +funùiÚ + + $_š™Ÿlize +() { + +265 +$·¿ms + = +$this +-> + `g‘P¬am‘”s +(); + +266 iàÐ +$·¿ms + !=ð +nuÎ + ) { + +267 + `fܗch +( +$·¿ms + +as + +$·¿m +) { + +268  +$·¿m +-> + `g‘Ty³ +()) { + +269  +£lf +:: +DOMAIN_KEY +: + +270 +$this +-> + `£tDomaš +( +$·¿m +-> + `g‘V®ue +()); + +272  +£lf +:: +DIR_KEY +: + +273 +$this +-> + `£tDœ +($this-> +´ojeù +-> + `»sÞveFže +( +$·¿m +-> + `g‘V®ue +())); + +276  +£lf +:: +LOCALE_KEY +: + +277 +$this +-> + `£tLoÿË +( +$·¿m +-> + `g‘V®ue +()); + +282 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/XincludeFilter.php + +1 +ba£dœ + = +$dœ +; + +45 +public + +funùiÚ + + $g‘Ba£dœ +() + +47  +$this +-> +ba£dœ +; + +48 + } +} + +55 +funùiÚ + + $»ad +( +$Ën + = +nuÎ +) { + +57 ià(! + `þass_exi¡s +('DomDocument')) { + +58 +throw + +Ãw + + `BuždExû±iÚ +("Could‚ot findhe DomDocument class. Make sure PHP has been compiled/configuredo support DOM XML."); + +61 ià( +$this +-> +´oûs£d + ==ð +Œue +) { + +66 +$_xml + = +nuÎ +; + +67  ( +$d©a + = +$this +-> +š +-> + `»ad +( +$Ën +)) !== -1 ) + +68 +$_xml + .ð +$d©a +; + +70 ià( +$_xml + ==ð +nuÎ + ) { + +74 ià( + `em±y +( +$_xml +)) { + +75 +$this +-> + `log +("XML fži em±y!", +Projeù +:: +MSG_WARN +); + +79 +$this +-> + `log +("T¿nsfÜmšg XML " . $this-> +š +-> + `g‘Resourû +(è. " usšg Xšþud", +Projeù +:: +MSG_VERBOSE +); + +81 +$out + = ''; + +82 +Œy + { + +83 +$out + = +$this +-> + `´oûss +( +$_xml +); + +84 +$this +-> +´oûs£d + = +Œue +; + +85 } + `ÿtch + ( +IOExû±iÚ + +$e +) { + +86 +throw + +Ãw + + `BuždExû±iÚ +( +$e +); + +89  +$out +; + +90 + } +} + +99 +´Ùeùed + +funùiÚ + + $´oûss +( +$xml +) { + +101 ià( +$this +-> +ba£dœ +) { + +102 +$cwd + = + `g‘cwd +(); + +103 + `chdœ +( +$this +-> +ba£dœ +); + +106 +$xmlDom + = +Ãw + + `DomDocum’t +(); + +107 +$xmlDom +-> + `lßdXML +( +$xml +); + +109 +$xmlDom +-> + `xšþude +(); + +111 ià( +$this +-> +ba£dœ +) { + +112 + `chdœ +( +$cwd +); + +115  +$xmlDom +-> + `§veXML +(); + +116 + } +} + +128 +funùiÚ + + $chaš +( +R—d” + +$»ad” +) { + +129 +$ÃwFž‹r + = +Ãw + + `XšþudeFž‹r +( +$»ad” +); + +130 +$ÃwFž‹r +-> + `£tProjeù +( +$this +-> + `g‘Projeù +()); + +131 +$ÃwFž‹r +-> + `£tBa£dœ +( +$this +-> + `g‘Ba£dœ +()); + +132  +$ÃwFž‹r +; + +133 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/XsltFilter.php + +1 +x¦tP¬ams +, +Ãw + + `XSLTP¬am +()); + +69  +$this +-> +x¦tP¬ams +[ +$num +-1]; + +77 +funùiÚ + + $£tP¬ams +( +$·¿ms +) { + +78 +$this +-> +x¦tP¬ams + = +$·¿ms +; + +79 + } +} + +86 +funùiÚ + + $g‘P¬ams +() { + +87  +$this +-> +x¦tP¬ams +; + +88 + } +} + +94 +funùiÚ + + $£tStyË +( +PhšgFže + +$fže +) { + +95 +$this +-> +x¦Fže + = +$fže +; + +96 + } +} + +103 +funùiÚ + + $g‘Html +() { + +104  +$this +-> +html +; + +105 + } +} + +111 +funùiÚ + + $£tHtml +( +$b +) { + +112 +$this +-> +html + = ( +boޗn +è +$b +; + +113 + } +} + +119 +funùiÚ + + $g‘StyË +() { + +120  +$this +-> +x¦Fže +; + +121 + } +} + +128 +funùiÚ + + $»ad +( +$Ën + = +nuÎ +) { + +130 ià(! + `þass_exi¡s +('XSLTProcessor')) { + +131 +throw + +Ãw + + `BuždExû±iÚ +("Could‚ot findhe XSLTProcessor class. Make sure PHP has been compiled/configuredo support XSLT."); + +134 ià( +$this +-> +´oûs£d + ==ð +Œue +) { + +138 iàÐ! +$this +-> + `g‘In™Ÿlized +() ) { + +139 +$this +-> + `_š™Ÿlize +(); + +140 +$this +-> + `£tIn™Ÿlized +( +Œue +); + +144 +$_xml + = +nuÎ +; + +145  ( +$d©a + = +$this +-> +š +-> + `»ad +( +$Ën +)) !== -1 ) + +146 +$_xml + .ð +$d©a +; + +148 ià( +$_xml + ==ð +nuÎ + ) { + +152 if( + `em±y +( +$_xml +)) { + +153 +$this +-> + `log +("XML fži em±y!", +Projeù +:: +MSG_WARN +); + +158 +$_x¦ + = +nuÎ +; + +159 +$x¦Fr + = +Ãw + + `FžeR—d” +( +$this +-> +x¦Fže +); + +160 +$x¦Fr +-> + `»adIÁo +( +$_x¦ +); + +162 +$this +-> + `log +("T¿nfÜmšg XML " . $this-> +š +-> + `g‘Resourû +(è. " usšg styË " . $this-> +x¦Fže +-> + `g‘P©h +(), +Projeù +:: +MSG_VERBOSE +); + +164 +$out + = ''; + +165 +Œy + { + +166 +$out + = +$this +-> + `´oûss +( +$_xml +, +$_x¦ +); + +167 +$this +-> +´oûs£d + = +Œue +; + +168 } + `ÿtch + ( +IOExû±iÚ + +$e +) { + +169 +throw + +Ãw + + `BuždExû±iÚ +( +$e +); + +172  +$out +; + +173 + } +} + +184 +´Ùeùed + +funùiÚ + + $´oûss +( +$xml +, +$x¦ +) { + +186 +$´oûssÜ + = +Ãw + + `XSLTProûssÜ +(); + +188 +$xmlDom + = +Ãw + + `DOMDocum’t +(); + +189 +$x¦Dom + = +Ãw + + `DOMDocum’t +(); + +191 ià( +$this +-> +html +) { + +192 +$xmlDom +-> + `lßdHTML +( +$xml +); + +194 +$xmlDom +-> + `lßdXML +( +$xml +); + +197 +$x¦Dom +-> + `lßdxml +( +$x¦ +); + +199 +$´oûssÜ +-> + `impÜtStyËsh“t +( +$x¦Dom +); + +203 + `fܗch +( +$this +-> +x¦tP¬ams + +as + +$·¿m +) { + +204 +$this +-> + `log +("S‘tšg XSLT…¬am: " . +$·¿m +-> + `g‘Name +(è. "=>" . $·¿m-> + `g‘Ex´essiÚ +(), +Projeù +:: +MSG_DEBUG +); + +205 +$´oûssÜ +-> + `£tP¬am‘” +( +nuÎ +, +$·¿m +-> + `g‘Name +(), $·¿m-> + `g‘Ex´essiÚ +()); + +208 +$”rÜËv– + = + `”rÜ_»pÜtšg +(); + +209 + `”rÜ_»pÜtšg +( +$”rÜËv– + & ~ +E_WARNING +); + +210 @ +$»suÉ + = +$´oûssÜ +-> + `ŒªsfÜmToXML +( +$xmlDom +); + +211 + `”rÜ_»pÜtšg +( +$”rÜËv– +); + +213 ià( +çl£ + ==ð +$»suÉ +) { + +216 +throw + +Ãw + + `BuždExû±iÚ +("XSLT Error"); + +218  +$»suÉ +; + +220 + } +} + +232 +funùiÚ + + $chaš +( +R—d” + +$»ad” +) { + +233 +$ÃwFž‹r + = +Ãw + + `X¦tFž‹r +( +$»ad” +); + +234 +$ÃwFž‹r +-> + `£tProjeù +( +$this +-> + `g‘Projeù +()); + +235 +$ÃwFž‹r +-> + `£tStyË +( +$this +-> + `g‘StyË +()); + +236 +$ÃwFž‹r +-> + `£tIn™Ÿlized +( +Œue +); + +237 +$ÃwFž‹r +-> + `£tP¬ams +( +$this +-> + `g‘P¬ams +()); + +238 +$ÃwFž‹r +-> + `£tHtml +( +$this +-> + `g‘Html +()); + +239  +$ÃwFž‹r +; + +240 + } +} + +245 +´iv©e + +funùiÚ + + $_š™Ÿlize +() { + +246 +$·¿ms + = +$this +-> + `g‘P¬am‘”s +(); + +247 iàÐ +$·¿ms + !=ð +nuÎ + ) { + +248  +$i + = 0, +$_i += + `couÁ +( +$·¿ms +) ; $i < $_i; $i++) { + +249 iàÐ +$·¿ms +[ +$i +]-> + `g‘Ty³ +(è==ð +nuÎ + ) { + +250 ià( +$·¿ms +[ +$i +]-> + `g‘Name +() === "style") { + +251 +$this +-> + `£tStyË +( +$·¿ms +[ +$i +]-> + `g‘V®ue +()); + +253 } + `–£if + ( +$·¿ms +[ +$i +]-> + `g‘Ty³ +() == "param") { + +254 +$xp + = +Ãw + + `XSLTP¬am +(); + +255 +$xp +-> + `£tName +( +$·¿ms +[ +$i +]-> + `g‘Name +()); + +256 +$xp +-> + `£tEx´essiÚ +( +$·¿ms +[ +$i +]-> + `g‘V®ue +()); + +257 +$this +-> +x¦tP¬ams +[] = +$xp +; + +261 + } +} + +269 þas  + cXSLTP¬am + { + +271 +´iv©e + + m$Çme +; + +273 +´iv©e + + m$ex´ +; + +279 +public + +funùiÚ + + $£tName +( +$Çme +) { + +280 +$this +-> +Çme + = +$Çme +; + +287 +public + +funùiÚ + + $g‘Name +() { + +288  +$this +-> +Çme +; + +289 + } +} + +297 +public + +funùiÚ + + $£tV®ue +( +$v +) + +299 +$this +-> + `£tEx´essiÚ +( +$v +); + +300 + } +} + +308 +public + +funùiÚ + + $g‘V®ue +() + +310  +$this +-> + `g‘Ex´essiÚ +(); + +311 + } +} + +317 +public + +funùiÚ + + $£tEx´essiÚ +( +$ex´ +) { + +318 +$this +-> +ex´ + = +$ex´ +; + +319 + } +} + +325 +public + +funùiÚ + + $£tLi¡’šgEx´essiÚ +( +Regi¡”SlÙ + +$ex´ +) { + +326 +$this +-> +ex´ + = +$ex´ +; + +327 + } +} + +333 +public + +funùiÚ + + $g‘Ex´essiÚ +() { + +334 ià( +$this +-> +ex´ + +š¡ªûof + +Regi¡”SlÙ +) { + +335  +$this +-> +ex´ +-> + `g‘V®ue +(); + +337  +$this +-> +ex´ +; + +339 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/util/ChainReaderHelper.php + +1 +´im¬yR—d” + = +$»ad” +; + +92 +funùiÚ + + $£tProjeù +( +Projeù + +$´ojeù +) { + +93 +$this +-> +´ojeù + = +$´ojeù +; + +94 + } +} + +99 +funùiÚ + + $g‘Projeù +() { + +100  +$this +-> +´ojeù +; + +101 + } +} + +107 +funùiÚ + + $£tBufãrSize +( +$size +) { + +108 +$this +-> +bufãrSize + = +$size +; + +109 + } +} + +114 +funùiÚ + + $£tFž‹rChašs +(& +$fchaš +) { + +115 +$this +-> +fž‹rChašs + = & +$fchaš +; + +116 + } +} + +121 +funùiÚ + + $g‘As£mbËdR—d” +() { + +123 +$š¡»am + = +$this +-> +´im¬yR—d” +; + +124 +$fž‹rR—d”sCouÁ + = + `couÁ +( +$this +-> +fž‹rChašs +); + +125 +$fš®Fž‹rs + = + `¬¿y +(); + +128  +$i + = 0 ; $i< +$fž‹rR—d”sCouÁ + ; $i++) { + +129 +$fž‹rchaš + = & +$this +-> +fž‹rChašs +[ +$i +]; + +130 +$fž‹rR—d”s + = +$fž‹rchaš +-> + `g‘Fž‹rR—d”s +(); + +131 +$»ad”CouÁ + = + `couÁ +( +$fž‹rR—d”s +); + +132  +$j + = 0 ; $j< +$»ad”CouÁ + ; $j++) { + +133 +$fš®Fž‹rs +[] = +$fž‹rR—d”s +[ +$j +]; + +138 +$fž‹rsCouÁ + = + `couÁ +( +$fš®Fž‹rs +); + +139 iàÐ +$fž‹rsCouÁ + > 0 ) { + +140  +$i + = 0 ; $i< +$fž‹rsCouÁ + ; $i++) { + +141 +$fž‹r + = +$fš®Fž‹rs +[ +$i +]; + +143 iàÐ +$fž‹r + +š¡ªûof + +PhšgFž‹rR—d” + ) { + +146 +$þassName + = +$fž‹r +-> + `g‘CÏssName +(); + +147 +$þas¥©h + = +$fž‹r +-> + `g‘CÏs¥©h +(); + +148 +$´ojeù + = +$fž‹r +-> + `g‘Projeù +(); + +150 iàÐ +$þassName + !=ð +nuÎ + ) { + +151 +$þs + = +Phšg +:: + `impÜt +( +$þassName +, +$þas¥©h +); + +152 +$im¶ + = +Ãw + + `$þs +(); + +155 iàÐ!( +$im¶ + +š¡ªûof + +Fž‹rR—d” +) ) { + +156 +throw + +Ãw + + `Exû±iÚ +( +$þassName +." does‚otƒxtend…hing.system.io.FilterReader"); + +159 +$im¶ +-> + `£tR—d” +( +$š¡»am +); + +160 +$im¶ +-> + `£tProjeù +( +$this +-> + `g‘Projeù +()); + +162 iàÐ +$im¶ + +š¡ªûof + +P¬am‘”izabË + ) { + +163 +$im¶ +-> + `£tP¬am‘”s +( +$fž‹r +-> + `g‘P¬ams +()); + +166 +$š¡»am + = +$im¶ +; + +168 } + `–£if + (( +$fž‹r + +š¡ªûof + +ChašabËR—d” +è&& ($fž‹¸š¡ªûoà +R—d” +)) { + +169 iàÐ +$this +-> + `g‘Projeù +(è!=ð +nuÎ + && ( +$fž‹r + +š¡ªûof + +Ba£Fž‹rR—d” +) ) { + +170 +$fž‹r +-> + `£tProjeù +( +$this +-> + `g‘Projeù +()); + +172 +$š¡»am + = +$fž‹r +-> + `chaš +($instream); + +174 +throw + +Ãw + + `Exû±iÚ +("CªnÙ chaš inv®id fž‹r: " . + `g‘_þass +( +$fž‹r +)); + +179  +$š¡»am +; + +180 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/filters/util/IniFileTokenReader.php + +1 +fže + ==ð +nuÎ +) { + +56 +throw + +Ãw + + `BuždExû±iÚ +("No File set for IniFileTokenReader"); + +59  +$tok’s + = +nuÎ +; + +60 ià( +$tok’s + ==ð +nuÎ +) { + +61 +$tok’s + = + `¬¿y +(); + +62 +$¬r + = + `·r£_ši_fže +( +$this +-> +fže +-> + `g‘AbsÞu‹P©h +(), +Œue +); + +63 ià( +$this +-> +£ùiÚ + ==ð +nuÎ +) { + +64 + `fܗch + ( +$¬r + +as + +$£c_Çme + => +$v®ues +) { + +65 + `fܗch +( +$¬r +[ +$£c_Çme +] +as + +$key + => +$v®ue +) { + +66 +$tok + = +Ãw + +Tok’ +; + +67 +$tok +-> + `£tKey +( +$key +); + +68 +$tok +-> + `£tV®ue +( +$v®ue +); + +69 +$tok’s +[] = +$tok +; + +72 } ià( + `is£t +( +$¬r +[ +$this +-> +£ùiÚ +])) { + +73 + `fܗch + ( +$¬r +[ +$this +-> +£ùiÚ +] +as + +$key + => +$v®ue +) { + +74 +$tok + = +Ãw + +Tok’ +; + +75 +$tok +-> + `£tKey +( +$key +); + +76 +$tok +-> + `£tV®ue +( +$v®ue +); + +77 +$tok’s +[] = +$tok +; + +82 ià( + `couÁ +( +$tok’s +) > 0) { + +83  + `¬¿y_pÝ +( +$tok’s +); + +85  +nuÎ +; + +88 +funùiÚ + + $£tFže +( +PhšgFže + +$fže +) { + +89 +$this +-> +fže + = +$fže +; + +90 + } +} + +92 +funùiÚ + + $£tSeùiÚ +( +$¡r +) { + +93 +$this +-> +£ùiÚ + = ( +¡ršg +è +$¡r +; + +94 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/input/DefaultInputHandler.php + +1 + `g‘Prom± +( +$»que¡ +); + +43 +$š + = +Ãw + + `CÚsÞeR—d” +(); + +45 +´št + +$´om± +; + +46 +Œy + { + +47 +$šput + = +$š +-> + `»adLše +(); + +48 ià( +$šput + ==ð"" && ( +$»que¡ +-> + `g‘DeçuÉV®ue +(è!=ð +nuÎ +) ) { + +49 +$šput + = +$»que¡ +-> + `g‘DeçuÉV®ue +(); + +51 +$»que¡ +-> + `£tIÅut +( +$šput +); + +52 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +53 +throw + +Ãw + + `BuždExû±iÚ +("FažedØ»ad iÅuˆäom CÚsÞe.", +$e +); + +55 } ! +$»que¡ +-> + `isIÅutV®id +()); + +67 +´Ùeùed + +funùiÚ + + $g‘Prom± +( +IÅutReque¡ + +$»que¡ +) { + +68 +$´om± + = +$»que¡ +-> + `g‘Prom± +(); + +70 ià( +$»que¡ + +š¡ªûof + +YesNoIÅutReque¡ +) { + +71 +$´om± + .ð'(' . + `im¶ode +('/', +$»que¡ +-> + `g‘Choiûs +()) .')'; + +72 } + `–£if + ( +$»que¡ + +š¡ªûof + +MuɝËChoiûIÅutReque¡ +) { + +73 +$´om± + .ð'(' . + `im¶ode +(',', +$»que¡ +-> + `g‘Choiûs +()) . ')'; + +75 ià( +$»que¡ +-> + `g‘DeçuÉV®ue +(è!=ð +nuÎ +) { + +76 +$´om± + .ð' ['. +$»que¡ +-> + `g‘DeçuÉV®ue +().']'; + +78 +$pch¬ + = +$»que¡ +-> + `g‘Prom±Ch¬ +(); + +79  +$´om± + . ( +$pch¬ + ? $pchar . ' ' : ' '); + +80 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/input/InputHandler.php + +1 +´om± + = +$´om± +; + +51 +public + +funùiÚ + + $g‘Prom± +() { + +52  +$this +-> +´om± +; + +53 + } +} + +58 +public + +funùiÚ + + $£tIÅut +( +$šput +) { + +59 +$this +-> +šput + = +$šput +; + +60 + } +} + +65 +public + +funùiÚ + + $isIÅutV®id +() { + +66  +Œue +; + +67 + } +} + +72 +public + +funùiÚ + + $g‘IÅut +() { + +73  +$this +-> +šput +; + +74 + } +} + +80 +public + +funùiÚ + + $£tDeçuÉV®ue +( +$v +) { + +81 +$this +-> +deçuÉV®ue + = +$v +; + +82 + } +} + +88 +public + +funùiÚ + + $g‘DeçuÉV®ue +() { + +89  +$this +-> +deçuÉV®ue +; + +90 + } +} + +96 +public + +funùiÚ + + $£tProm±Ch¬ +( +$c +) { + +97 +$this +-> +´om±Ch¬ + = +$c +; + +98 + } +} + +104 +public + +funùiÚ + + $g‘Prom±Ch¬ +() { + +105  +$this +-> +´om±Ch¬ +; + +106 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/input/MultipleChoiceInputRequest.php + +1 +choiûs + = +$choiûs +; + +48 +public + +funùiÚ + + $g‘Choiûs +() { + +49  +$this +-> +choiûs +; + +50 + } +} + +55 +public + +funùiÚ + + $isIÅutV®id +() { + +56  + `š_¬¿y +( +$this +-> + `g‘IÅut +(), $this-> +choiûs +); + +57 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/input/PropertyFileInputHandler.php + +55 +·ckage + + gÜg +. + g­ache +. + gtoÞs +. + gªt +. + gšput +; + +57 +impÜt + + gÜg +. + g­ache +. + gtoÞs +. + gªt +. + gBuždExû±iÚ +; + +59 +impÜt + + gjava +. + gio +. + gFžeIÅutSŒ—m +; + +60 +impÜt + + gjava +. + gio +. + gIOExû±iÚ +; + +61 +impÜt + + gjava +. + gutž +. + gPrݔt›s +; + +71 +public + cÏs  + cPrݔtyFžeIÅutHªdËr + +im¶em’ts + + mIÅutHªdËr + { + +72 +´iv©e + +Prݔt›s + + m´Ýs + = +nuÎ +; + +77 +public +  +fš® + +SŒšg + + mFILE_NAME_KEY + = "ant.input.properties"; + +82 +public + + $PrݔtyFžeIÅutHªdËr +() { + +91 +public +  + $hªdËIÅut +( +IÅutReque¡ + +»que¡ +è +throws + +BuždExû±iÚ + { + +92 + `»adPrÝs +(); + +94 +Objeù + +o + = +´Ýs +. + `g‘ +( +»que¡ +. + `g‘Prom± +()); + +95 ià( +o + =ð +nuÎ +) { + +96 +throw + +Ãw + + `BuždExû±iÚ +("Unableo find input for \'" + +97 + +»que¡ +. + `g‘Prom± +()+"\'"); + +99 +»que¡ +. + `£tIÅut +( +o +. + `toSŒšg +()); + +100 ià(! +»que¡ +. + `isIÅutV®id +()) { + +101 +throw + +Ãw + + `BuždExû±iÚ +("Found inv®id iÅuˆ" + +o + + +102 + " fÜ \'" + +»que¡ +. + `g‘Prom± +() + "\'"); + +104 + } +} + +109 +´iv©e + +synchrÚized +  + $»adPrÝs +(è +throws + +BuždExû±iÚ + { + +110 ià( +´Ýs + =ð +nuÎ +) { + +111 +SŒšg + +´ÝsFže + = +Sy¡em +. + `g‘Prݔty +( +FILE_NAME_KEY +); + +112 ià( +´ÝsFže + =ð +nuÎ +) { + +113 +throw + +Ãw + + `BuždExû±iÚ +("System…roperty " + +114 + +FILE_NAME_KEY + + +119 +´Ýs + = +Ãw + + `Prݔt›s +(); + +121 +Œy + { + +122 +´Ýs +. + `lßd +( +Ãw + + `FžeIÅutSŒ—m +( +´ÝsFže +)); + +123 } + `ÿtch + ( +IOExû±iÚ + +e +) { + +124 +throw + +Ãw + + `BuždExû±iÚ +("Couldn'ˆlßd " + +´ÝsFže +, +e +); + +127 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/input/YesNoInputRequest.php + +1 +šput +); + +44 +public + +funùiÚ + + $g‘IÅut +() { + +45  +SŒšgH–³r +:: + `boޗnV®ue +( +$this +-> +šput +); + +46 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/lib/Capsule.php + +1 +v¬s + = + `¬¿y +(); + +57 } + `–£if + ( + `is_¬¿y +( +$which +)) { + +58 + `fܗch +( +$which + +as + +$v¬ +) { + +59 + `un£t +( +$this +-> +v¬s +[ +$v¬ +]); + +62 + `un£t +( +$this +-> +v¬s +[ +$which +]); + +64 + } +} + +70 +funùiÚ + + $£tTem¶©eP©h +( +$v +) { + +71 +$this +-> +‹m¶©eP©h + = + `¹rim +( +$v +, +DIRECTORY_SEPARATOR +.'/'); + +72 + } +} + +78 +funùiÚ + + $g‘Tem¶©eP©h +() { + +79  +$this +-> +‹m¶©eP©h +; + +80 + } +} + +86 +funùiÚ + + $£tOuutDœeùÜy +( +$v +) { + +87 +$this +-> +ouutDœeùÜy + = + `¹rim +( +$v +, +DIRECTORY_SEPARATOR +.'/'); + +88 + } +} + +94 +funùiÚ + + $g‘OuutDœeùÜy +() { + +95  +$this +-> +ouutDœeùÜy +; + +96 + } +} + +106 +funùiÚ + + $di¥Ïy +( +$__‹m¶©e +) { + +112 +$g’”©Ü + = +$this +; + +114 ià( + `is£t +( +$this +-> +v¬s +['this'])) { + +115 +throw + +Ãw + + `Exû±iÚ +("Assigning‡ variable‚amed \$thiso‡ context conflicts with class‚amespace."); + +119 + `exŒaù +( +$this +-> +v¬s +); + +123 +$__Þd_šc_·th + = + `ši_g‘ +('include_path'); + +124 + `ši_£t +('šþude_·th', +$this +-> +‹m¶©eP©h + . +PATH_SEPARATOR + . +$__Þd_šc_·th +); + +126 @ + `ši_£t +('Œack_”rÜs', +Œue +); + +127 +šþude + +$__‹m¶©e +; + +128 @ + `ši_»¡Üe +('track_errors'); + +131 + `ši_£t +('šþude_·th', +$__Þd_šc_·th +); + +133 ià(! + `em±y +( +$php_”rÜmsg +)) { + +134 +throw + +Ãw + + `Exû±iÚ +("UÇbˁطr£em¶©" . +$__‹m¶©e + . ": " . +$php_”rÜmsg +); + +136 + } +} + +148 +funùiÚ + + $·r£ +( +$‹m¶©e +, +$ouutFže + = +nuÎ +, +$­³nd + = +çl£ +) { + +152 + `ob_¡¬t +(); + +154 +Œy + { + +155 +$this +-> + `di¥Ïy +( +$‹m¶©e +); + +156 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +157 + `ob_’d_æush +(); + +158 +throw + +$e +; + +161 +$ouut + = + `ob_g‘_cڋÁs +(); + +162 + `ob_’d_þ—n +(); + +164 ià( +$ouutFže + !=ð +nuÎ +) { + +165 +$ouutFže + = +$this +-> + `»sÞveP©h +($ouutFže, $this-> +ouutDœeùÜy +); + +167 +$æags + = +nuÎ +; + +168 ià( +$­³nd +è +$æags + = +FILE_APPEND +; + +170 ià(! + `fže_put_cڋÁs +( +$ouutFže +, +$ouut +, +$æags +) && $output != "") { + +171 +throw + +Ãw + + `Exû±iÚ +("UÇbˁØwr™ouuˆtØ" . +$ouutFže +); + +175  +$ouut +; + +176 + } +} + +185 +´Ùeùed + +funùiÚ + + $»sÞveP©h +( +$fže +, +$ba£·th +) { + +186 iàÐ!( +$fže +{0} =ð +DIRECTORY_SEPARATOR + || $file{0} == '/') + +188 && !( +$fže +{1} =ð':' && ($fže{2} =ð +DIRECTORY_SEPARATOR + || $file{2} == '/'))) { + +189 ià( +$ba£·th + !ð +nuÎ +) { + +190 +$fže + = +$ba£·th + . +DIRECTORY_SEPARATOR + . $file; + +193  +$fže +; + +194 + } +} + +201 +funùiÚ + + $g‘ +( +$Çme +) { + +202 ià(! + `is£t +( +$this +-> +v¬s +[ +$Çme +])è +nuÎ +; + +203  +$this +-> +v¬s +[ +$Çme +]; + +204 + } +} + +220 +funùiÚ + + $putAÎ +( +$v¬s +, +$»cursiveM”ge + = +çl£ +) { + +221 ià( +$»cursiveM”ge +) { + +222 +$this +-> +v¬s + = + `¬¿y_m”ge_»cursive +($this->v¬s, +$v¬s +); + +224 +$this +-> +v¬s + = + `¬¿y_m”ge +($this->v¬s, +$v¬s +); + +226 + } +} + +236 +funùiÚ + + $put +( +$Çme +, +$v®ue +) { + +237 +$this +-> +v¬s +[ +$Çme +] = +$v®ue +; + +238 + } +} + +248 +funùiÚ + + $putRef +( +$Çme +, & +$v®ue +) { + +249 +$this +-> +v¬s +[ +$Çme +] = & +$v®ue +; + +250 + } +} + +259 +funùiÚ + + $putCÝy +( +$Çme +, +$v®ue +) { + +260 ià( + `is_objeù +( +$v®ue +)) { + +261 +$v®ue + = +þÚe + $value; + +263 +$this +-> +v¬s +[ +$Çme +] = +$v®ue +; + +264 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/lib/Zip.php + +1 +_zÇme + = +$p_zÇme +; + +137 +$this +-> +_z_fd + = 0; + +164 +funùiÚ + + $ü—‹ +( +$p_fž–i¡ +, +$p_·¿ms +=0) + +166 +$this +-> + `_”rÜRe£t +(); + +169 ià( +$p_·¿ms + === 0) { + +170 +$p_·¿ms + = + `¬¿y +(); + +172 ià( +$this +-> + `_check_·¿m‘”s +( +$p_·¿ms +, + +173 + `¬¿y +('no_com´essiÚ' => +çl£ +, + +176 '»move_®l_·th' => +çl£ +)) != 1) { + +181 +$p_»suÉ_li¡ + = + `¬¿y +(); + +182 ià( + `is_¬¿y +( +$p_fž–i¡ +)) { + +183 +$v_»suÉ + = +$this +-> + `_ü—‹ +( +$p_fž–i¡ +, +$p_»suÉ_li¡ +, +$p_·¿ms +); + +187 ià( + `is_¡ršg +( +$p_fž–i¡ +)) { + +189 +$v_li¡ + = + `ex¶ode +( +ARCHIVE_ZIP_SEPARATOR +, +$p_fž–i¡ +); + +191 +$v_»suÉ + = +$this +-> + `_ü—‹ +( +$v_li¡ +, +$p_»suÉ_li¡ +, +$p_·¿ms +); + +196 +$this +-> + `_”rÜLog +( +ARCHIVE_ZIP_ERR_INVALID_PARAMETER +, + +198 +$v_»suÉ + = +ARCHIVE_ZIP_ERR_INVALID_PARAMETER +; + +201 ià( +$v_»suÉ + != 1) { + +205  +$p_»suÉ_li¡ +; + +206 + } +} + +235 +funùiÚ + + $add +( +$p_fž–i¡ +, +$p_·¿ms +=0) + +237 +$this +-> + `_”rÜRe£t +(); + +240 ià( +$p_·¿ms + === 0) { + +241 +$p_·¿ms + = + `¬¿y +(); + +243 ià( +$this +-> + `_check_·¿m‘”s +( +$p_·¿ms +, + +244 + `¬¿y + ('no_com´essiÚ' => +çl£ +, + +247 '»move_®l_·th' => +çl£ +, + +254 +$p_»suÉ_li¡ + = + `¬¿y +(); + +255 ià( + `is_¬¿y +( +$p_fž–i¡ +)) { + +257 +$v_»suÉ + = +$this +-> + `_add +( +$p_fž–i¡ +, +$p_»suÉ_li¡ +, +$p_·¿ms +); + +261 ià( + `is_¡ršg +( +$p_fž–i¡ +)) { + +263 +$v_li¡ + = + `ex¶ode +( +ARCHIVE_ZIP_SEPARATOR +, +$p_fž–i¡ +); + +266 +$v_»suÉ + = +$this +-> + `_add +( +$v_li¡ +, +$p_»suÉ_li¡ +, +$p_·¿ms +); + +271 +$this +-> + `_”rÜLog +( +ARCHIVE_ZIP_ERR_INVALID_PARAMETER +, + +273 +$v_»suÉ + = +ARCHIVE_ZIP_ERR_INVALID_PARAMETER +; + +276 ià( +$v_»suÉ + != 1) { + +281  +$p_»suÉ_li¡ +; + +282 + } +} + +329 +funùiÚ + + $li¡CڋÁ +() + +331 +$this +-> + `_”rÜRe£t +(); + +334 ià(! +$this +-> + `_checkFÜm© +()) { + +338 +$v_li¡ + = + `¬¿y +(); + +339 ià( +$this +-> + `_li¡ +( +$v_li¡ +) != 1) { + +340 + `un£t +( +$v_li¡ +); + +344  +$v_li¡ +; + +345 + } +} + +386 +funùiÚ + + $exŒaù +( +$p_·¿ms +=0) + +389 +$this +-> + `_”rÜRe£t +(); + +392 ià(! +$this +-> + `_checkFÜm© +()) { + +397 ià( +$p_·¿ms + === 0) { + +398 +$p_·¿ms + = + `¬¿y +(); + +400 ià( +$this +-> + `_check_·¿m‘”s +( +$p_·¿ms +, + +401 + `¬¿y + ('exŒaù_as_¡ršg' => +çl£ +, + +404 '»move_®l_·th' => +çl£ +, + +416 +$v_li¡ + = + `¬¿y +(); + +417 ià( +$this +-> + `_exŒaùByRuË +( +$v_li¡ +, +$p_·¿ms +) != 1) { + +418 + `un£t +( +$v_li¡ +); + +422  +$v_li¡ +; + +423 + } +} + +449 +funùiÚ + + $d–‘e +( +$p_·¿ms +) + +451 +$this +-> + `_”rÜRe£t +(); + +454 ià(! +$this +-> + `_checkFÜm© +()) { + +459 ià( +$this +-> + `_check_·¿m‘”s +( +$p_·¿ms +, + +460 + `¬¿y + ('by_name' => '', + +468 iàÐ( +$p_·¿ms +['by_name'] == '') + +469 && ( +$p_·¿ms +['by_index'] == '') + +470 && ( +$p_·¿ms +['by_ereg'] == '') + +471 && ( +$p_·¿ms +['by_preg'] == '')) { + +472 +$this +-> + `_”rÜLog +( +ARCHIVE_ZIP_ERR_INVALID_PARAMETER +, + +479 +$v_li¡ + = + `¬¿y +(); + +480 ià( +$this +-> + `_d–‘eByRuË +( +$v_li¡ +, +$p_·¿ms +) != 1) { + +481 + `un£t +( +$v_li¡ +); + +485  +$v_li¡ +; + +486 + } +} + +501 +funùiÚ + + $´Ý”t›s +() + +503 +$this +-> + `_”rÜRe£t +(); + +506 ià(! +$this +-> + `_checkFÜm© +()) { + +511 +$v_´Ý + = + `¬¿y +(); + +512 +$v_´Ý +['comment'] = ''; + +513 +$v_´Ý +['nb'] = 0; + +514 +$v_´Ý +['status'] = 'not_exist'; + +517 ià(@ + `is_fže +( +$this +-> +_zÇme +)) { + +519 ià(( +$this +-> +_z_fd + = @ + `fݒ +($this-> +_zÇme +, 'rb')) == 0) { + +520 +$this +-> + `_”rÜLog +( +ARCHIVE_ZIP_ERR_READ_OPEN_FAIL +, + +521 'UÇbˁØÝ’‡rchiv\''. +$this +-> +_zÇme + + +527 +$v_ûÁ¿l_dœ + = + `¬¿y +(); + +528 ià(( +$v_»suÉ + = +$this +-> + `_»adEndC’Œ®Dœ +( +$v_ûÁ¿l_dœ +)) != 1) { + +532 +$this +-> + `_þo£Fd +(); + +535 +$v_´Ý +['comm’t'] = +$v_ûÁ¿l_dœ +['comment']; + +536 +$v_´Ý +['nb'] = +$v_ûÁ¿l_dœ +['entries']; + +537 +$v_´Ý +['status'] = 'ok'; + +540  +$v_´Ý +; + +541 + } +} + +556 +funùiÚ + + $du¶iÿ‹ +( +$p_¬chive +) + +558 +$this +-> + `_”rÜRe£t +(); + +561 iàÐ( + `is_objeù +( +$p_¬chive +)) + +562 && ( + `¡¹Þow” +( + `g‘_þass +( +$p_¬chive +)) == 'archive_zip')) { + +563 +$v_»suÉ + = +$this +-> + `_du¶iÿ‹ +( +$p_¬chive +-> +_zÇme +); + +567 ià( + `is_¡ršg +( +$p_¬chive +)) { + +570 ià(! + `is_fže +( +$p_¬chive +)) { + +571 +$this +-> + `_”rÜLog +( +ARCHIVE_ZIP_ERR_MISSING_FILE +, + +572 "NØfžw™h fž’am'". +$p_¬chive +."'"); + +573 +$v_»suÉ + = +ARCHIVE_ZIP_ERR_MISSING_FILE +; + +576 +$v_»suÉ + = +$this +-> + `_du¶iÿ‹ +( +$p_¬chive +); + +582 +$this +-> + `_”rÜLog +( +ARCHIVE_ZIP_ERR_INVALID_PARAMETER +, + +584 +$v_»suÉ + = +ARCHIVE_ZIP_ERR_INVALID_PARAMETER +; + +587  +$v_»suÉ +; + +588 + } +} + +603 +funùiÚ + + $m”ge +( +$p_¬chive_to_add +) + +605 +$v_»suÉ + = 1; + +606 +$this +-> + `_”rÜRe£t +(); + +609 ià(! +$this +-> + `_checkFÜm© +()) { + +614 iàÐ( + `is_objeù +( +$p_¬chive_to_add +)) + +615 && ( + `¡¹Þow” +( + `g‘_þass +( +$p_¬chive_to_add +)) == 'archive_zip')) { + +616 +$v_»suÉ + = +$this +-> + `_m”ge +( +$p_¬chive_to_add +); + +620 ià( + `is_¡ršg +( +$p_¬chive_to_add +)) { + +622 +$v_objeù_¬chive + = +Ãw + + `Archive_Z +( +$p_¬chive_to_add +); + +625 +$v_»suÉ + = +$this +-> + `_m”ge +( +$v_objeù_¬chive +); + +630 +$this +-> + `_”rÜLog +( +ARCHIVE_ZIP_ERR_INVALID_PARAMETER +, + +632 +$v_»suÉ + = +ARCHIVE_ZIP_ERR_INVALID_PARAMETER +; + +635  +$v_»suÉ +; + +636 + } +} + +646 +funùiÚ + + $”rÜCode +() + +648 ( +$this +-> +_”rÜ_code +); + +649 + } +} + +660 +funùiÚ + + $”rÜName +( +$p_w™h_code += +çl£ +) + +662 +$v_cÚ¡_li¡ + = + `g‘_defšed_cÚ¡ªts +(); + +665  + `»£t +( +$v_cÚ¡_li¡ +); + +666 + `li¡ +( +$v_key +, +$v_v®ue +èð + `—ch +( +$v_cÚ¡_li¡ +);) { + +667 ià( + `sub¡r +( +$v_key +, 0, + `¡¾’ +('ARCHIVE_ZIP_ERR_')) + +669 +$v_”rÜ_li¡ +[ +$v_key +] = +$v_v®ue +; + +674 +$v_key += + `¬¿y_£¬ch +( +$this +-> +_”rÜ_code +, +$v_”rÜ_li¡ +, +Œue +); + +675 ià( +$v_key +!= +çl£ +) { + +676 +$v_v®ue + = +$v_key +; + +679 +$v_v®ue + = 'NoName'; + +682 ià( +$p_w™h_code +) { + +683 ( +$v_v®ue +.' ('. +$this +-> +_”rÜ_code +.')'); + +686 ( +$v_v®ue +); + +688 + } +} + +702 +funùiÚ + + $”rÜInfo +( +$p_fuÎ += +çl£ +) + +704 ià( +$p_fuÎ +) { + +705 ( +$this +-> + `”rÜName +( +Œue +)." : ".$this-> +_”rÜ_¡ršg +); + +708 ( +$this +-> +_”rÜ_¡ršg +." [cod".$this-> +_”rÜ_code +."]"); + +710 + } +} + +741 +funùiÚ + + $_checkFÜm© +( +$p_Ëv– +=0) + +743 +$v_»suÉ + = +Œue +; + +746 +$this +-> + `_”rÜRe£t +(); + +749 ià(! + `is_fže +( +$this +-> +_zÇme +)) { + +751 +$this +-> + `_”rÜLog +( +ARCHIVE_ZIP_ERR_MISSING_FILE +, + +752 "Missšg‡rchivfž'". +$this +-> +_zÇme +."'"); + +753 ( +çl£ +); + +757 ià(! + `is_»adabË +( +$this +-> +_zÇme +)) { + +759 +$this +-> + `_”rÜLog +( +ARCHIVE_ZIP_ERR_READ_OPEN_FAIL +, + +760 "UÇbˁػad‡rchiv'". +$this +-> +_zÇme +."'"); + +761 ( +çl£ +); + +774  +$v_»suÉ +; + +775 + } +} + +790 +funùiÚ + + $_ü—‹ +( +$p_li¡ +, & +$p_»suÉ_li¡ +, & +$p_·¿ms +) + +792 +$v_»suÉ +=1; + +793 +$v_li¡_d‘až + = + `¬¿y +(); + +795 +$p_add_dœ + = +$p_·¿ms +['add_path']; + +796 +$p_»move_dœ + = +$p_·¿ms +['remove_path']; + +797 +$p_»move_®l_dœ + = +$p_·¿ms +['remove_all_path']; + +800 ià(( +$v_»suÉ + = +$this +-> + `_ݒFd +('wb')) != 1) + +803  +$v_»suÉ +; + +807 +$v_»suÉ + = +$this +-> + `_addLi¡ +( +$p_li¡ +, +$p_»suÉ_li¡ +, +$p_add_dœ +, +$p_»move_dœ +, +$p_»move_®l_dœ +, +$p_·¿ms +); + +810 +$this +-> + `_þo£Fd +(); + +813  +$v_»suÉ +; + +814 + } +} + +829 +funùiÚ + + $_add +( +$p_li¡ +, & +$p_»suÉ_li¡ +, & +$p_·¿ms +) + +831 +$v_»suÉ +=1; + +832 +$v_li¡_d‘až + = + `¬¿y +(); + +834 +$p_add_dœ + = +$p_·¿ms +['add_path']; + +835 +$p_»move_dœ + = +$p_·¿ms +['remove_path']; + +836 +$p_»move_®l_dœ + = +$p_·¿ms +['remove_all_path']; + +839 ià((! + `is_fže +( +$this +-> +_zÇme +)è|| ( + `fžesize +($this->_zipname) == 0)) { + +840 +$v_»suÉ + = +$this +-> + `_ü—‹ +( +$p_li¡ +, +$p_»suÉ_li¡ +, +$p_·¿ms +); + +841  +$v_»suÉ +; + +845 ià(( +$v_»suÉ += +$this +-> + `_ݒFd +('rb')) != 1) { + +846  +$v_»suÉ +; + +850 +$v_ûÁ¿l_dœ + = + `¬¿y +(); + +851 ià(( +$v_»suÉ + = +$this +-> + `_»adEndC’Œ®Dœ +( +$v_ûÁ¿l_dœ +)) != 1) + +853 +$this +-> + `_þo£Fd +(); + +854  +$v_»suÉ +; + +858 @ + `»wšd +( +$this +-> +_z_fd +); + +861 +$v_z_‹mp_Çme + = +ARCHIVE_ZIP_TEMPORARY_DIR +. + `uniqid +('archive_zip-').'.tmp'; + +864 ià(( +$v_z_‹mp_fd + = @ + `fݒ +( +$v_z_‹mp_Çme +, 'wb')) == 0) + +866 +$this +-> + `_þo£Fd +(); + +868 +$this +-> + `_”rÜLog +( +ARCHIVE_ZIP_ERR_READ_OPEN_FAIL +, + +870 . +$v_z_‹mp_Çme +.'\' in binary write mode'); + +871  +Archive_Z +:: + `”rÜCode +(); + +877 +$v_size + = +$v_ûÁ¿l_dœ +['offset']; + +878  +$v_size + != 0) + +880 +$v_»ad_size + = ( +$v_size + < +ARCHIVE_ZIP_READ_BLOCK_SIZE + + +881 ? +$v_size + : +ARCHIVE_ZIP_READ_BLOCK_SIZE +); + +882 +$v_bufãr + = + `ä—d +( +$this +-> +_z_fd +, +$v_»ad_size +); + +883 @ + `fwr™e +( +$v_z_‹mp_fd +, +$v_bufãr +, +$v_»ad_size +); + +884 +$v_size + -ð +$v_»ad_size +; + +890 +$v_sw­ + = +$this +-> +_z_fd +; + +891 +$this +-> +_z_fd + = +$v_z_‹mp_fd +; + +892 +$v_z_‹mp_fd + = +$v_sw­ +; + +895 +$v_h—d”_li¡ + = + `¬¿y +(); + +896 ià(( +$v_»suÉ + = +$this +-> + `_addFžeLi¡ +( +$p_li¡ +, +$v_h—d”_li¡ +, + +897 +$p_add_dœ +, +$p_»move_dœ +, + +898 +$p_»move_®l_dœ +, +$p_·¿ms +)) != 1) + +900 + `fþo£ +( +$v_z_‹mp_fd +); + +901 +$this +-> + `_þo£Fd +(); + +902 @ + `uƚk +( +$v_z_‹mp_Çme +); + +905  +$v_»suÉ +; + +909 +$v_off£t + = @ + `á–l +( +$this +-> +_z_fd +); + +912 +$v_size + = +$v_ûÁ¿l_dœ +['size']; + +913  +$v_size + != 0) + +915 +$v_»ad_size + = ( +$v_size + < +ARCHIVE_ZIP_READ_BLOCK_SIZE + + +916 ? +$v_size + : +ARCHIVE_ZIP_READ_BLOCK_SIZE +); + +917 +$v_bufãr + = @ + `ä—d +( +$v_z_‹mp_fd +, +$v_»ad_size +); + +918 @ + `fwr™e +( +$this +-> +_z_fd +, +$v_bufãr +, +$v_»ad_size +); + +919 +$v_size + -ð +$v_»ad_size +; + +923  +$i +=0, +$v_couÁ +=0; $i<( +$v_h—d”_li¡ +); $i++) + +926 ià( +$v_h—d”_li¡ +[ +$i +]['status'] == 'ok') { + +927 ià(( +$v_»suÉ += +$this +-> + `_wr™eC’Œ®FžeH—d” +( +$v_h—d”_li¡ +[ +$i +]))!=1) { + +928 + `fþo£ +( +$v_z_‹mp_fd +); + +929 +$this +-> + `_þo£Fd +(); + +930 @ + `uƚk +( +$v_z_‹mp_Çme +); + +933  +$v_»suÉ +; + +935 +$v_couÁ +++; + +939 +$this +-> + `_cÚv”tH—d”2FžeInfo +( +$v_h—d”_li¡ +[ +$i +], +$p_»suÉ_li¡ +[$i]); + +943 +$v_comm’t + = ''; + +946 +$v_size + = @ + `á–l +( +$this +-> +_z_fd +)- +$v_off£t +; + +949 ià(( +$v_»suÉ + = +$this +-> + `_wr™eC’Œ®H—d” +( +$v_couÁ + + +950 + +$v_ûÁ¿l_dœ +['entries'], + +951 +$v_size +, +$v_off£t +, + +952 +$v_comm’t +)) != 1) { + +954 + `un£t +( +$v_h—d”_li¡ +); + +957  +$v_»suÉ +; + +961 +$v_sw­ + = +$this +-> +_z_fd +; + +962 +$this +-> +_z_fd + = +$v_z_‹mp_fd +; + +963 +$v_z_‹mp_fd + = +$v_sw­ +; + +966 +$this +-> + `_þo£Fd +(); + +969 @ + `fþo£ +( +$v_z_‹mp_fd +); + +973 @ + `uƚk +( +$this +-> +_zÇme +); + +978 +$this +-> + `_toÞ_R’ame +( +$v_z_‹mp_Çme +, $this-> +_zÇme +); + +981  +$v_»suÉ +; + +982 + } +} + +996 +funùiÚ + + $_ݒFd +( +$p_mode +) + +998 +$v_»suÉ +=1; + +1001 ià( +$this +-> +_z_fd + != 0) + +1003 +$this +-> + `_”rÜLog +( +ARCHIVE_ZIP_ERR_READ_OPEN_FAIL +, + +1004 'Z fž\''. +$this +-> +_zÇme +.'\'‡lready open'); + +1005  +Archive_Z +:: + `”rÜCode +(); + +1009 ià(( +$this +-> +_z_fd + = @ + `fݒ +($this-> +_zÇme +, +$p_mode +)) == 0) + +1011 +$this +-> + `_”rÜLog +( +ARCHIVE_ZIP_ERR_READ_OPEN_FAIL +, + +1012 'UÇbˁØÝ’‡rchiv\''. +$this +-> +_zÇme + + +1013 .'\' iÀ'. +$p_mode +.' mode'); + +1014  +Archive_Z +:: + `”rÜCode +(); + +1018  +$v_»suÉ +; + +1019 + } +} + +1033 +funùiÚ + + $_þo£Fd +() + +1035 +$v_»suÉ +=1; + +1037 ià( +$this +-> +_z_fd + != 0) + +1038 @ + `fþo£ +( +$this +-> +_z_fd +); + +1039 +$this +-> +_z_fd + = 0; + +1042  +$v_»suÉ +; + +1043 + } +} + +1065 +funùiÚ + + $_addLi¡ +( +$p_li¡ +, & +$p_»suÉ_li¡ +, + +1066 +$p_add_dœ +, +$p_»move_dœ +, +$p_»move_®l_dœ +, & +$p_·¿ms +) + +1068 +$v_»suÉ +=1; + +1071 +$v_h—d”_li¡ + = + `¬¿y +(); + +1072 ià(( +$v_»suÉ + = +$this +-> + `_addFžeLi¡ +( +$p_li¡ +, +$v_h—d”_li¡ +, + +1073 +$p_add_dœ +, +$p_»move_dœ +, + +1074 +$p_»move_®l_dœ +, +$p_·¿ms +)) != 1) { + +1075  +$v_»suÉ +; + +1079 +$v_off£t + = @ + `á–l +( +$this +-> +_z_fd +); + +1082  +$i +=0, +$v_couÁ +=0; $i<( +$v_h—d”_li¡ +); $i++) + +1085 ià( +$v_h—d”_li¡ +[ +$i +]['status'] == 'ok') { + +1086 ià(( +$v_»suÉ + = +$this +-> + `_wr™eC’Œ®FžeH—d” +( +$v_h—d”_li¡ +[ +$i +])) != 1) { + +1087  +$v_»suÉ +; + +1089 +$v_couÁ +++; + +1093 +$this +-> + `_cÚv”tH—d”2FžeInfo +( +$v_h—d”_li¡ +[ +$i +], +$p_»suÉ_li¡ +[$i]); + +1097 +$v_comm’t + = ''; + +1100 +$v_size + = @ + `á–l +( +$this +-> +_z_fd +)- +$v_off£t +; + +1103 ià(( +$v_»suÉ + = +$this +-> + `_wr™eC’Œ®H—d” +( +$v_couÁ +, +$v_size +, +$v_off£t +, + +1104 +$v_comm’t +)) != 1) + +1107 + `un£t +( +$v_h—d”_li¡ +); + +1110  +$v_»suÉ +; + +1114  +$v_»suÉ +; + +1115 + } +} + +1137 +funùiÚ + + $_addFžeLi¡ +( +$p_li¡ +, & +$p_»suÉ_li¡ +, + +1138 +$p_add_dœ +, +$p_»move_dœ +, +$p_»move_®l_dœ +, + +1139 & +$p_·¿ms +) + +1141 +$v_»suÉ +=1; + +1142 +$v_h—d” + = + `¬¿y +(); + +1145 +$v_nb + = ( +$p_»suÉ_li¡ +); + +1148  +$j +=0; ($j< + `couÁ +( +$p_li¡ +)è&& ( +$v_»suÉ +==1); $j++) + +1151 +$p_fž’ame + = +$this +-> + `_toÞ_T¿n¦©eWšP©h +( +$p_li¡ +[ +$j +], +çl£ +); + +1154 ià( +$p_fž’ame + == "") + +1160 ià(! + `fže_exi¡s +( +$p_fž’ame +)) + +1162 +$this +-> + `_”rÜLog +( +ARCHIVE_ZIP_ERR_MISSING_FILE +, + +1164  +Archive_Z +:: + `”rÜCode +(); + +1168 ià(( + `is_fže +( +$p_fž’ame +)è|| (( + `is_dœ +($p_fž’ame)è&& ! +$p_»move_®l_dœ +)) { + +1170 ià(( +$v_»suÉ + = +$this +-> + `_addFže +( +$p_fž’ame +, +$v_h—d” +, +$p_add_dœ +, +$p_»move_dœ +, +$p_»move_®l_dœ +, +$p_·¿ms +)) != 1) + +1173  +$v_»suÉ +; + +1177 +$p_»suÉ_li¡ +[ +$v_nb +++] = +$v_h—d” +; + +1181 ià( + `is_dœ +( +$p_fž’ame +)) + +1185 ià( +$p_fž’ame + != ".") + +1186 +$v_·th + = +$p_fž’ame +."/"; + +1188 +$v_·th + = ""; + +1191 +$p_hdœ + = + `ݒdœ +( +$p_fž’ame +); + +1192 +$p_h™em + = + `»addœ +( +$p_hdœ +); + +1193 +$p_h™em + = + `»addœ +( +$p_hdœ +); + +1194  +$p_h™em + = + `»addœ +( +$p_hdœ +)) + +1198 ià( + `is_fže +( +$v_·th +. +$p_h™em +)) + +1202 ià(( +$v_»suÉ + = +$this +-> + `_addFže +( +$v_·th +. +$p_h™em +, +$v_h—d” +, +$p_add_dœ +, +$p_»move_dœ +, +$p_»move_®l_dœ +, +$p_·¿ms +)) != 1) + +1205  +$v_»suÉ +; + +1209 +$p_»suÉ_li¡ +[ +$v_nb +++] = +$v_h—d” +; + +1217 +$p_‹mp_li¡ +[0] = +$v_·th +. +$p_h™em +; + +1218 +$v_»suÉ + = +$this +-> + `_addFžeLi¡ +( +$p_‹mp_li¡ +, +$p_»suÉ_li¡ +, +$p_add_dœ +, +$p_»move_dœ +, +$p_»move_®l_dœ +, +$p_·¿ms +); + +1221 +$v_nb + = ( +$p_»suÉ_li¡ +); + +1226 + `un£t +( +$p_‹mp_li¡ +); + +1227 + `un£t +( +$p_hdœ +); + +1228 + `un£t +( +$p_h™em +); + +1232  +$v_»suÉ +; + +1233 + } +} + +1248 +funùiÚ + + $_addFže +( +$p_fž’ame +, & +$p_h—d” +, +$p_add_dœ +, +$p_»move_dœ +, +$p_»move_®l_dœ +, & +$p_·¿ms +) + +1250 +$v_»suÉ +=1; + +1252 ià( +$p_fž’ame + == "") + +1255 +$this +-> + `_”rÜLog +( +ARCHIVE_ZIP_ERR_INVALID_PARAMETER +, "Invalid file†ist…arameter (invalid orƒmpty†ist)"); + +1258  +Archive_Z +:: + `”rÜCode +(); + +1262 +$v_¡Üed_fž’ame + = +$p_fž’ame +; + +1265 ià( +$p_»move_®l_dœ +) { + +1266 +$v_¡Üed_fž’ame + = + `ba£Çme +( +$p_fž’ame +); + +1269 ià( +$p_»move_dœ + != "") + +1271 +$p_»move_dœ + = +$this +-> + `_toÞ_T¿n¦©eWšP©h +($p_»move_dœ, +çl£ +); + +1273 ià( + `sub¡r +( +$p_»move_dœ +, -1) != '/') + +1274 +$p_»move_dœ + .= "/"; + +1276 ià(( + `sub¡r +( +$p_fž’ame +, 0, 2è=ð"./"è|| (sub¡r( +$p_»move_dœ +, 0, 2) == "./")) + +1278 ià(( + `sub¡r +( +$p_fž’ame +, 0, 2è=ð"./"è&& (sub¡r( +$p_»move_dœ +, 0, 2) != "./")) + +1279 +$p_»move_dœ + = "./".$p_remove_dir; + +1280 ià(( + `sub¡r +( +$p_fž’ame +, 0, 2è!ð"./"è&& (sub¡r( +$p_»move_dœ +, 0, 2) == "./")) + +1281 +$p_»move_dœ + = + `sub¡r +($p_remove_dir, 2); + +1284 +$v_com·» + = +$this +-> + `_toÞ_P©hInþusiÚ +( +$p_»move_dœ +, +$p_fž’ame +); + +1285 ià( +$v_com·» + > 0) + +1289 ià( +$v_com·» + == 2) { + +1290 +$v_¡Üed_fž’ame + = ""; + +1293 +$v_¡Üed_fž’ame + = + `sub¡r +( +$p_fž’ame +, + `¡¾’ +( +$p_»move_dœ +)); + +1298 ià( +$p_add_dœ + != "") + +1300 ià( + `sub¡r +( +$p_add_dœ +, -1) == "/") + +1301 +$v_¡Üed_fž’ame + = +$p_add_dœ +.$v_stored_filename; + +1303 +$v_¡Üed_fž’ame + = +$p_add_dœ +."/".$v_stored_filename; + +1307 +$v_¡Üed_fž’ame + = +$this +-> + `_toÞ_P©hReduùiÚ +($v_stored_filename); + +1323 + `þ—r¡©ÿche +(); + +1324 +$p_h—d” +['version'] = 20; + +1325 +$p_h—d” +['version_extracted'] = 10; + +1326 +$p_h—d” +['flag'] = 0; + +1327 +$p_h—d” +['compression'] = 0; + +1328 +$p_h—d” +['mtime'] = + `fžemtime +( +$p_fž’ame +); + +1329 +$p_h—d” +['crc'] = 0; + +1330 +$p_h—d” +['compressed_size'] = 0; + +1331 +$p_h—d” +['size'] = + `fžesize +( +$p_fž’ame +); + +1332 +$p_h—d” +['fž’ame_Ën'] = + `¡¾’ +( +$p_fž’ame +); + +1333 +$p_h—d” +['extra_len'] = 0; + +1334 +$p_h—d” +['comment_len'] = 0; + +1335 +$p_h—d” +['disk'] = 0; + +1336 +$p_h—d” +['internal'] = 0; + +1337 +$p_h—d” +['ex‹º®'] = ( + `is_fže +( +$p_fž’ame +)?0xFE49FFE0:0x41FF0010); + +1338 +$p_h—d” +['offset'] = 0; + +1339 +$p_h—d” +['fž’ame'] = +$p_fž’ame +; + +1340 +$p_h—d” +['¡Üed_fž’ame'] = +$v_¡Üed_fž’ame +; + +1341 +$p_h—d” +['extra'] = ''; + +1342 +$p_h—d” +['comment'] = ''; + +1343 +$p_h—d” +['status'] = 'ok'; + +1344 +$p_h—d” +['index'] = -1; + +1347 iàÐ( + `is£t +( +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_PRE_ADD +])) + +1348 && ( +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_PRE_ADD +] != '')) { + +1351 +$v_loÿl_h—d” + = + `¬¿y +(); + +1352 +$this +-> + `_cÚv”tH—d”2FžeInfo +( +$p_h—d” +, +$v_loÿl_h—d” +); + +1357 + `ev® +('$v_»suÉ = '. +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_PRE_ADD +].'(ARCHIVE_ZIP_PARAM_PRE_ADD, $v_local_header);'); + +1358 ià( +$v_»suÉ + == 0) { + +1360 +$p_h—d” +['status'] = "skipped"; + +1361 +$v_»suÉ + = 1; + +1366 ià( +$p_h—d” +['¡Üed_fž’ame'] !ð +$v_loÿl_h—d” +['stored_filename']) { + +1367 +$p_h—d” +['¡Üed_fž’ame'] = +$this +-> + `_toÞ_P©hReduùiÚ +( +$v_loÿl_h—d” +['stored_filename']); + +1372 ià( +$p_h—d” +['stored_filename'] == "") { + +1373 +$p_h—d” +['status'] = "filtered"; + +1377 ià( + `¡¾’ +( +$p_h—d” +['stored_filename']) > 0xFF) { + +1378 +$p_h—d” +['status'] = 'filename_too_long'; + +1382 ià( +$p_h—d” +['status'] == 'ok') { + +1385 ià( + `is_fže +( +$p_fž’ame +)) + +1388 ià(( +$v_fže + = @ + `fݒ +( +$p_fž’ame +, "rb")) == 0) { + +1389 +$this +-> + `_”rÜLog +( +ARCHIVE_ZIP_ERR_READ_OPEN_FAIL +, "Unableo open file '$p_filename' in binary„ead mode"); + +1390  +Archive_Z +:: + `”rÜCode +(); + +1393 ià( +$p_·¿ms +['no_compression']) { + +1395 +$v_cڋÁ_com´es£d + = @ + `ä—d +( +$v_fže +, +$p_h—d” +['size']); + +1398 +$p_h—d” +['üc'] = + `üc32 +( +$v_cڋÁ_com´es£d +); + +1402 +$v_cڋÁ + = @ + `ä—d +( +$v_fže +, +$p_h—d” +['size']); + +1405 +$p_h—d” +['üc'] = + `üc32 +( +$v_cڋÁ +); + +1408 +$v_cڋÁ_com´es£d + = + `gzdeæ©e +( +$v_cڋÁ +); + +1412 +$p_h—d” +['com´es£d_size'] = + `¡¾’ +( +$v_cڋÁ_com´es£d +); + +1413 +$p_h—d” +['compression'] = 8; + +1416 ià(( +$v_»suÉ + = +$this +-> + `_wr™eFžeH—d” +( +$p_h—d” +)) != 1) { + +1417 @ + `fþo£ +( +$v_fže +); + +1418  +$v_»suÉ +; + +1422 +$v_bš¬y_d©a + = + `·ck +('a'. +$p_h—d” +['com´es£d_size'], +$v_cڋÁ_com´es£d +); + +1423 @ + `fwr™e +( +$this +-> +_z_fd +, +$v_bš¬y_d©a +, +$p_h—d” +['compressed_size']); + +1426 @ + `fþo£ +( +$v_fže +); + +1433 +$p_h—d” +['filename'] .= '/'; + +1434 +$p_h—d” +['filename_len']++; + +1435 +$p_h—d” +['size'] = 0; + +1436 +$p_h—d” +['external'] = 0x41FF0010; + +1439 ià(( +$v_»suÉ + = +$this +-> + `_wr™eFžeH—d” +( +$p_h—d” +)) != 1) + +1441  +$v_»suÉ +; + +1447 iàÐ( + `is£t +( +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_POST_ADD +])) + +1448 && ( +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_POST_ADD +] != '')) { + +1451 +$v_loÿl_h—d” + = + `¬¿y +(); + +1452 +$this +-> + `_cÚv”tH—d”2FžeInfo +( +$p_h—d” +, +$v_loÿl_h—d” +); + +1457 + `ev® +('$v_»suÉ = '. +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_POST_ADD +].'(ARCHIVE_ZIP_PARAM_POST_ADD, $v_local_header);'); + +1458 ià( +$v_»suÉ + == 0) { + +1460 +$v_»suÉ + = 1; + +1468  +$v_»suÉ +; + +1469 + } +} + +1484 +funùiÚ + + $_wr™eFžeH—d” +(& +$p_h—d” +) + +1486 +$v_»suÉ +=1; + +1493 +$p_h—d” +['off£t'] = + `á–l +( +$this +-> +_z_fd +); + +1496 +$v_d©e + = + `g‘d©e +( +$p_h—d” +['mtime']); + +1497 +$v_mtime + = ( +$v_d©e +['hours']<<11) + ($v_date['minutes']<<5) + $v_date['seconds']/2; + +1498 +$v_md©e + = (( +$v_d©e +['year']-1980)<<9) + ($v_date['mon']<<5) + $v_date['mday']; + +1501 +$v_bš¬y_d©a + = + `·ck +("VvvvvvVVVvv", 0x04034b50, +$p_h—d” +['version'], $p_header['flag'], + +1502 +$p_h—d” +['com´essiÚ'], +$v_mtime +, +$v_md©e +, + +1503 +$p_h—d” +['crc'], $p_header['compressed_size'], $p_header['size'], + +1504 + `¡¾’ +( +$p_h—d” +['stored_filename']), $p_header['extra_len']); + +1507 + `åuts +( +$this +-> +_z_fd +, +$v_bš¬y_d©a +, 30); + +1510 ià( + `¡¾’ +( +$p_h—d” +['stored_filename']) != 0) + +1512 + `åuts +( +$this +-> +_z_fd +, +$p_h—d” +['¡Üed_fž’ame'], + `¡¾’ +($p_header['stored_filename'])); + +1514 ià( +$p_h—d” +['extra_len'] != 0) + +1516 + `åuts +( +$this +-> +_z_fd +, +$p_h—d” +['extra'], $p_header['extra_len']); + +1520  +$v_»suÉ +; + +1521 + } +} + +1536 +funùiÚ + + $_wr™eC’Œ®FžeH—d” +(& +$p_h—d” +) + +1538 +$v_»suÉ +=1; + +1545 +$v_d©e + = + `g‘d©e +( +$p_h—d” +['mtime']); + +1546 +$v_mtime + = ( +$v_d©e +['hours']<<11) + ($v_date['minutes']<<5) + $v_date['seconds']/2; + +1547 +$v_md©e + = (( +$v_d©e +['year']-1980)<<9) + ($v_date['mon']<<5) + $v_date['mday']; + +1550 +$v_bš¬y_d©a + = + `·ck +("VvvvvvvVVVvvvvvVV", 0x02014b50, +$p_h—d” +['version'], $p_header['version_extracted'], + +1551 +$p_h—d” +['æag'], $p_h—d”['com´essiÚ'], +$v_mtime +, +$v_md©e +, $p_header['crc'], + +1552 +$p_h—d” +['compressed_size'], $p_header['size'], + +1553 + `¡¾’ +( +$p_h—d” +['stored_filename']), $p_header['extra_len'], $p_header['comment_len'], + +1554 +$p_h—d” +['disk'], $p_header['internal'], $p_header['external'], $p_header['offset']); + +1557 + `åuts +( +$this +-> +_z_fd +, +$v_bš¬y_d©a +, 46); + +1560 ià( + `¡¾’ +( +$p_h—d” +['stored_filename']) != 0) + +1562 + `åuts +( +$this +-> +_z_fd +, +$p_h—d” +['¡Üed_fž’ame'], + `¡¾’ +($p_header['stored_filename'])); + +1564 ià( +$p_h—d” +['extra_len'] != 0) + +1566 + `åuts +( +$this +-> +_z_fd +, +$p_h—d” +['extra'], $p_header['extra_len']); + +1568 ià( +$p_h—d” +['comment_len'] != 0) + +1570 + `åuts +( +$this +-> +_z_fd +, +$p_h—d” +['comment'], $p_header['comment_len']); + +1574  +$v_»suÉ +; + +1575 + } +} + +1590 +funùiÚ + + $_wr™eC’Œ®H—d” +( +$p_nb_’Œ›s +, +$p_size +, +$p_off£t +, +$p_comm’t +) + +1592 +$v_»suÉ +=1; + +1595 +$v_bš¬y_d©a + = + `·ck +("VvvvvVVv", 0x06054b50, 0, 0, +$p_nb_’Œ›s +, $p_nb_’Œ›s, +$p_size +, +$p_off£t +, + `¡¾’ +( +$p_comm’t +)); + +1598 + `åuts +( +$this +-> +_z_fd +, +$v_bš¬y_d©a +, 22); + +1601 ià( + `¡¾’ +( +$p_comm’t +) != 0) + +1603 + `åuts +( +$this +-> +_z_fd +, +$p_comm’t +, + `¡¾’ +($p_comment)); + +1607  +$v_»suÉ +; + +1608 + } +} + +1623 +funùiÚ + + $_li¡ +(& +$p_li¡ +) + +1625 +$v_»suÉ +=1; + +1628 ià(( +$this +-> +_z_fd + = @ + `fݒ +($this-> +_zÇme +, 'rb')) == 0) + +1631 +$this +-> + `_”rÜLog +( +ARCHIVE_ZIP_ERR_READ_OPEN_FAIL +, 'UÇbˁØÝ’‡rchiv\''.$this-> +_zÇme +.'\' in binary„ead mode'); + +1634  +Archive_Z +:: + `”rÜCode +(); + +1638 +$v_ûÁ¿l_dœ + = + `¬¿y +(); + +1639 ià(( +$v_»suÉ + = +$this +-> + `_»adEndC’Œ®Dœ +( +$v_ûÁ¿l_dœ +)) != 1) + +1641  +$v_»suÉ +; + +1645 @ + `»wšd +( +$this +-> +_z_fd +); + +1646 ià(@ + `f£ek +( +$this +-> +_z_fd +, +$v_ûÁ¿l_dœ +['offset'])) + +1649 +$this +-> + `_”rÜLog +( +ARCHIVE_ZIP_ERR_INVALID_ARCHIVE_ZIP +, 'Invalid‡rchive size'); + +1652  +Archive_Z +:: + `”rÜCode +(); + +1656  +$i +=0; $i< +$v_ûÁ¿l_dœ +['entries']; $i++) + +1659 ià(( +$v_»suÉ + = +$this +-> + `_»adC’Œ®FžeH—d” +( +$v_h—d” +)) != 1) + +1661  +$v_»suÉ +; + +1663 +$v_h—d” +['šdex'] = +$i +; + +1666 +$this +-> + `_cÚv”tH—d”2FžeInfo +( +$v_h—d” +, +$p_li¡ +[ +$i +]); + +1667 + `un£t +( +$v_h—d” +); + +1671 +$this +-> + `_þo£Fd +(); + +1674  +$v_»suÉ +; + +1675 + } +} + +1702 +funùiÚ + + $_cÚv”tH—d”2FžeInfo +( +$p_h—d” +, & +$p_šfo +) + +1704 +$v_»suÉ +=1; + +1707 +$p_šfo +['fž’ame'] = +$p_h—d” +['filename']; + +1708 +$p_šfo +['¡Üed_fž’ame'] = +$p_h—d” +['stored_filename']; + +1709 +$p_šfo +['size'] = +$p_h—d” +['size']; + +1710 +$p_šfo +['com´es£d_size'] = +$p_h—d” +['compressed_size']; + +1711 +$p_šfo +['mtime'] = +$p_h—d” +['mtime']; + +1712 +$p_šfo +['comm’t'] = +$p_h—d” +['comment']; + +1713 +$p_šfo +['fÞd”'] = (( +$p_h—d” +['external']&0x00000010)==0x00000010); + +1714 +$p_šfo +['šdex'] = +$p_h—d” +['index']; + +1715 +$p_šfo +['¡©us'] = +$p_h—d” +['status']; + +1718  +$v_»suÉ +; + +1719 + } +} + +1744 +funùiÚ + + $_exŒaùByRuË +(& +$p_fže_li¡ +, & +$p_·¿ms +) + +1746 +$v_»suÉ +=1; + +1748 +$p_·th + = +$p_·¿ms +['add_path']; + +1749 +$p_»move_·th + = +$p_·¿ms +['remove_path']; + +1750 +$p_»move_®l_·th + = +$p_·¿ms +['remove_all_path']; + +1753 ià(( +$p_·th + == "") + +1754 || (( + `sub¡r +( +$p_·th +, 0, 1) != "/") + +1755 && ( + `sub¡r +( +$p_·th +, 0, 3) != "../") && (substr($p_path,1,2)!=":/"))) + +1756 +$p_·th + = "./".$p_path; + +1759 ià(( +$p_·th + != "./") && ($p_path != "/")) { + +1761  + `sub¡r +( +$p_·th +, -1) == "/") { + +1762 +$p_·th + = + `sub¡r +($p_·th, 0, + `¡¾’ +($p_path)-1); + +1767 ià(( +$p_»move_·th + !ð""è&& ( + `sub¡r +($p_remove_path, -1) != '/')) { + +1768 +$p_»move_·th + .= '/'; + +1770 +$p_»move_·th_size + = + `¡¾’ +( +$p_»move_·th +); + +1773 ià(( +$v_»suÉ + = +$this +-> + `_ݒFd +('rb')) != 1) + +1775  +$v_»suÉ +; + +1779 +$v_ûÁ¿l_dœ + = + `¬¿y +(); + +1780 ià(( +$v_»suÉ + = +$this +-> + `_»adEndC’Œ®Dœ +( +$v_ûÁ¿l_dœ +)) != 1) + +1783 +$this +-> + `_þo£Fd +(); + +1785  +$v_»suÉ +; + +1789 +$v_pos_’Œy + = +$v_ûÁ¿l_dœ +['offset']; + +1792 +$j_¡¬t + = 0; + +1793  +$i +=0, +$v_nb_exŒaùed +=0; $i< +$v_ûÁ¿l_dœ +['entries']; $i++) { + +1795 @ + `»wšd +( +$this +-> +_z_fd +); + +1796 ià(@ + `f£ek +( +$this +-> +_z_fd +, +$v_pos_’Œy +)) { + +1797 +$this +-> + `_þo£Fd +(); + +1799 +$this +-> + `_”rÜLog +( +ARCHIVE_ZIP_ERR_INVALID_ARCHIVE_ZIP +, + +1802  +Archive_Z +:: + `”rÜCode +(); + +1806 +$v_h—d” + = + `¬¿y +(); + +1807 ià(( +$v_»suÉ + = +$this +-> + `_»adC’Œ®FžeH—d” +( +$v_h—d” +)) != 1) { + +1808 +$this +-> + `_þo£Fd +(); + +1810  +$v_»suÉ +; + +1814 +$v_h—d” +['šdex'] = +$i +; + +1817 +$v_pos_’Œy + = + `á–l +( +$this +-> +_z_fd +); + +1820 +$v_exŒaù + = +çl£ +; + +1823 iàÐ( + `is£t +( +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_BY_NAME +])) + +1824 && ( +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_BY_NAME +] != 0)) { + +1827  +$j +=0; + +1828 ( +$j +<( +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_BY_NAME +])) + +1829 && (! +$v_exŒaù +); + +1830 +$j +++) { + +1833 ià( + `sub¡r +( +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_BY_NAME +][ +$j +], -1) == "/") { + +1836 iàÐ( + `¡¾’ +( +$v_h—d” +['¡Üed_fž’ame']è> sŒËn( +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_BY_NAME +][ +$j +])) + +1837 && ( + `sub¡r +( +$v_h—d” +['¡Üed_fž’ame'], 0, + `¡¾’ +( +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_BY_NAME +][ +$j +])) == $p_params[ARCHIVE_ZIP_PARAM_BY_NAME][$j])) { + +1838 +$v_exŒaù + = +Œue +; + +1842 + `–£if + ( +$v_h—d” +['¡Üed_fž’ame'] =ð +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_BY_NAME +][ +$j +]) { + +1843 +$v_exŒaù + = +Œue +; + +1849 iàÐ( + `is£t +( +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_BY_EREG +])) + +1850 && ( +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_BY_EREG +] != "")) { + +1852 ià( + `”eg +( +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_BY_EREG +], +$v_h—d” +['stored_filename'])) { + +1853 +$v_exŒaù + = +Œue +; + +1858 iàÐ( + `is£t +( +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_BY_PREG +])) + +1859 && ( +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_BY_PREG +] != "")) { + +1861 ià( + `´eg_m©ch +( +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_BY_PREG +], +$v_h—d” +['stored_filename'])) { + +1862 +$v_exŒaù + = +Œue +; + +1867 iàÐ( + `is£t +( +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_BY_INDEX +])) + +1868 && ( +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_BY_INDEX +] != 0)) { + +1871  +$j += +$j_¡¬t +; ($j<( +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_BY_INDEX +])è&& (! +$v_exŒaù +); $j++) { + +1873 ià(( +$i +>= +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_BY_INDEX +][ +$j +]['start']) && ($i<=$p_params[ARCHIVE_ZIP_PARAM_BY_INDEX][$j]['end'])) { + +1874 +$v_exŒaù + = +Œue +; + +1876 ià( +$i +>= +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_BY_INDEX +][ +$j +]['end']) { + +1877 +$j_¡¬t + = +$j ++1; + +1880 ià( +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_BY_INDEX +][ +$j +]['¡¬t']> +$i +) { + +1888 +$v_exŒaù + = +Œue +; + +1893 ià( +$v_exŒaù +) + +1897 @ + `»wšd +( +$this +-> +_z_fd +); + +1898 ià(@ + `f£ek +( +$this +-> +_z_fd +, +$v_h—d” +['offset'])) + +1901 +$this +-> + `_þo£Fd +(); + +1904 +$this +-> + `_”rÜLog +( +ARCHIVE_ZIP_ERR_INVALID_ARCHIVE_ZIP +, 'Invalid‡rchive size'); + +1907  +Archive_Z +:: + `”rÜCode +(); + +1911 ià( +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_EXTRACT_AS_STRING +]) { + +1914 ià(( +$v_»suÉ + = +$this +-> + `_exŒaùFžeAsSŒšg +( +$v_h—d” +, +$v_¡ršg +)) != 1) + +1917 +$this +-> + `_þo£Fd +(); + +1919  +$v_»suÉ +; + +1923 ià(( +$v_»suÉ + = +$this +-> + `_cÚv”tH—d”2FžeInfo +( +$v_h—d” +, +$p_fže_li¡ +[ +$v_nb_exŒaùed +])) != 1) + +1926 +$this +-> + `_þo£Fd +(); + +1928  +$v_»suÉ +; + +1932 +$p_fže_li¡ +[ +$v_nb_exŒaùed +]['cڋÁ'] = +$v_¡ršg +; + +1935 +$v_nb_exŒaùed +++; + +1939 ià(( +$v_»suÉ + = +$this +-> + `_exŒaùFže +( +$v_h—d” +, +$p_·th +, +$p_»move_·th +, +$p_»move_®l_·th +, +$p_·¿ms +)) != 1) + +1942 +$this +-> + `_þo£Fd +(); + +1944  +$v_»suÉ +; + +1948 ià(( +$v_»suÉ + = +$this +-> + `_cÚv”tH—d”2FžeInfo +( +$v_h—d” +, +$p_fže_li¡ +[ +$v_nb_exŒaùed +++])) != 1) + +1951 +$this +-> + `_þo£Fd +(); + +1953  +$v_»suÉ +; + +1960 +$this +-> + `_þo£Fd +(); + +1963  +$v_»suÉ +; + +1964 + } +} + +1979 +funùiÚ + + $_exŒaùFže +(& +$p_’Œy +, +$p_·th +, +$p_»move_·th +, +$p_»move_®l_·th +, & +$p_·¿ms +) + +1981 +$v_»suÉ +=1; + +1984 ià(( +$v_»suÉ + = +$this +-> + `_»adFžeH—d” +( +$v_h—d” +)) != 1) + +1987  +$v_»suÉ +; + +1995 ià( +$p_»move_®l_·th + =ð +Œue +) { + +1997 +$p_’Œy +['fž’ame'] = + `ba£Çme +($p_entry['filename']); + +2001 ià( +$p_»move_·th + != "") + +2004 ià( +$this +-> + `_toÞ_P©hInþusiÚ +( +$p_»move_·th +, +$p_’Œy +['filename']) == 2) + +2008 +$p_’Œy +['status'] = "filtered"; + +2011  +$v_»suÉ +; + +2014 +$p_»move_·th_size + = + `¡¾’ +( +$p_»move_·th +); + +2015 ià( + `sub¡r +( +$p_’Œy +['fž’ame'], 0, +$p_»move_·th_size +è=ð +$p_»move_·th +) + +2019 +$p_’Œy +['fž’ame'] = + `sub¡r +($p_’Œy['fž’ame'], +$p_»move_·th_size +); + +2025 ià( +$p_·th + != '') + +2027 +$p_’Œy +['fž’ame'] = +$p_·th +."/".$p_entry['filename']; + +2031 iàÐ( + `is£t +( +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_PRE_EXTRACT +])) + +2032 && ( +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_PRE_EXTRACT +] != '')) { + +2035 +$v_loÿl_h—d” + = + `¬¿y +(); + +2036 +$this +-> + `_cÚv”tH—d”2FžeInfo +( +$p_’Œy +, +$v_loÿl_h—d” +); + +2041 + `ev® +('$v_»suÉ = '. +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_PRE_EXTRACT +].'(ARCHIVE_ZIP_PARAM_PRE_EXTRACT, $v_local_header);'); + +2042 ià( +$v_»suÉ + == 0) { + +2044 +$p_’Œy +['status'] = "skipped"; + +2045 +$v_»suÉ + = 1; + +2050 +$p_’Œy +['fž’ame'] = +$v_loÿl_h—d” +['filename']; + +2056 ià( +$p_’Œy +['status'] == 'ok') { + +2059 ià( + `fže_exi¡s +( +$p_’Œy +['filename'])) + +2063 ià( + `is_dœ +( +$p_’Œy +['filename'])) + +2067 +$p_’Œy +['status'] = "already_a_directory"; + +2073 ià(! + `is_wr™—bË +( +$p_’Œy +['filename'])) + +2077 +$p_’Œy +['status'] = "write_protected"; + +2084 ià( + `fžemtime +( +$p_’Œy +['filename']) > $p_entry['mtime']) + +2088 +$p_’Œy +['status'] = "newer_exist"; + +2097 ià((( +$p_’Œy +['ex‹º®']&0x00000010)==0x00000010è|| ( + `sub¡r +($p_entry['filename'], -1) == '/')) + +2098 +$v_dœ_to_check + = +$p_’Œy +['filename']; + +2099 ià(! + `¡r¡r +( +$p_’Œy +['filename'], "/")) + +2100 +$v_dœ_to_check + = ""; + +2102 +$v_dœ_to_check + = + `dœÇme +( +$p_’Œy +['filename']); + +2104 ià(( +$v_»suÉ + = +$this +-> + `_dœCheck +( +$v_dœ_to_check +, (( +$p_’Œy +['external']&0x00000010)==0x00000010))) != 1) { + +2107 +$p_’Œy +['status'] = "path_creation_fail"; + +2111 +$v_»suÉ + = 1; + +2117 ià( +$p_’Œy +['status'] == 'ok') { + +2120 ià(!(( +$p_’Œy +['external']&0x00000010)==0x00000010)) + +2124 ià( +$p_’Œy +['compressed_size'] == $p_entry['size']) + +2128 ià(( +$v_de¡_fže + = @ + `fݒ +( +$p_’Œy +['filename'], 'wb')) == 0) + +2132 +$p_’Œy +['status'] = "write_error"; + +2135  +$v_»suÉ +; + +2140 +$v_size + = +$p_’Œy +['compressed_size']; + +2141  +$v_size + != 0) + +2143 +$v_»ad_size + = ( +$v_size + < +ARCHIVE_ZIP_READ_BLOCK_SIZE + ? $v_size : ARCHIVE_ZIP_READ_BLOCK_SIZE); + +2144 +$v_bufãr + = + `ä—d +( +$this +-> +_z_fd +, +$v_»ad_size +); + +2145 +$v_bš¬y_d©a + = + `·ck +('a'. +$v_»ad_size +, +$v_bufãr +); + +2146 @ + `fwr™e +( +$v_de¡_fže +, +$v_bš¬y_d©a +, +$v_»ad_size +); + +2147 +$v_size + -ð +$v_»ad_size +; + +2151 + `fþo£ +( +$v_de¡_fže +); + +2154 + `touch +( +$p_’Œy +['filename'], $p_entry['mtime']); + +2161 ià(( +$v_de¡_fže + = @ + `fݒ +( +$p_’Œy +['filename'], 'wb')) == 0) { + +2164 +$p_’Œy +['status'] = "write_error"; + +2166  +$v_»suÉ +; + +2171 +$v_bufãr + = @ + `ä—d +( +$this +-> +_z_fd +, +$p_’Œy +['compressed_size']); + +2174 +$v_fže_cڋÁ + = + `gzšæ©e +( +$v_bufãr +); + +2175 + `un£t +( +$v_bufãr +); + +2178 @ + `fwr™e +( +$v_de¡_fže +, +$v_fže_cڋÁ +, +$p_’Œy +['size']); + +2179 + `un£t +( +$v_fže_cڋÁ +); + +2182 @ + `fþo£ +( +$v_de¡_fže +); + +2185 + `touch +( +$p_’Œy +['filename'], $p_entry['mtime']); + +2189 iàÐ( + `is£t +( +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_SET_CHMOD +])) + +2190 && ( +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_SET_CHMOD +] != 0)) { + +2193 + `chmod +( +$p_’Œy +['fž’ame'], +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_SET_CHMOD +]); + +2200 iàÐ( + `is£t +( +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_POST_EXTRACT +])) + +2201 && ( +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_POST_EXTRACT +] != '')) { + +2204 +$v_loÿl_h—d” + = + `¬¿y +(); + +2205 +$this +-> + `_cÚv”tH—d”2FžeInfo +( +$p_’Œy +, +$v_loÿl_h—d” +); + +2210 + `ev® +('$v_»suÉ = '. +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_POST_EXTRACT +].'(ARCHIVE_ZIP_PARAM_POST_EXTRACT, $v_local_header);'); + +2214  +$v_»suÉ +; + +2215 + } +} + +2230 +funùiÚ + + $_exŒaùFžeAsSŒšg +(& +$p_’Œy +, & +$p_¡ršg +) + +2232 +$v_»suÉ +=1; + +2235 +$v_h—d” + = + `¬¿y +(); + +2236 ià(( +$v_»suÉ + = +$this +-> + `_»adFžeH—d” +( +$v_h—d” +)) != 1) + +2239  +$v_»suÉ +; + +2249 ià(!(( +$p_’Œy +['external']&0x00000010)==0x00000010)) + +2252 ià( +$p_’Œy +['compressed_size'] == $p_entry['size']) + +2257 +$p_¡ršg + = + `ä—d +( +$this +-> +_z_fd +, +$p_’Œy +['compressed_size']); + +2264 +$v_d©a + = + `ä—d +( +$this +-> +_z_fd +, +$p_’Œy +['compressed_size']); + +2267 +$p_¡ršg + = + `gzšæ©e +( +$v_d©a +); + +2277  +$v_»suÉ +; + +2278 + } +} + +2293 +funùiÚ + + $_»adFžeH—d” +(& +$p_h—d” +) + +2295 +$v_»suÉ +=1; + +2298 +$v_bš¬y_d©a + = @ + `ä—d +( +$this +-> +_z_fd +, 4); + +2299 +$v_d©a + = + `uÅack +('Vid', +$v_bš¬y_d©a +); + +2302 ià( +$v_d©a +['id'] != 0x04034b50) + +2306 +$this +-> + `_”rÜLog +( +ARCHIVE_ZIP_ERR_BAD_FORMAT +, 'Invalid‡rchive structure'); + +2309  +Archive_Z +:: + `”rÜCode +(); + +2313 +$v_bš¬y_d©a + = + `ä—d +( +$this +-> +_z_fd +, 26); + +2316 ià( + `¡¾’ +( +$v_bš¬y_d©a +) != 26) + +2318 +$p_h—d” +['filename'] = ""; + +2319 +$p_h—d” +['status'] = "invalid_header"; + +2322 +$this +-> + `_”rÜLog +( +ARCHIVE_ZIP_ERR_BAD_FORMAT +, "Inv®id block siz: ". + `¡¾’ +( +$v_bš¬y_d©a +)); + +2325  +Archive_Z +:: + `”rÜCode +(); + +2329 +$v_d©a + = + `uÅack +('vv”siÚ/væag/vcom´essiÚ/vmtime/vmd©e/Vüc/Vcom´es£d_size/Vsize/vfž’ame_Ën/vexŒa_Ën', +$v_bš¬y_d©a +); + +2332 +$p_h—d” +['fž’ame'] = + `ä—d +( +$this +-> +_z_fd +, +$v_d©a +['filename_len']); + +2335 ià( +$v_d©a +['extra_len'] != 0) { + +2336 +$p_h—d” +['exŒa'] = + `ä—d +( +$this +-> +_z_fd +, +$v_d©a +['extra_len']); + +2339 +$p_h—d” +['extra'] = ''; + +2343 +$p_h—d” +['com´essiÚ'] = +$v_d©a +['compression']; + +2344 +$p_h—d” +['size'] = +$v_d©a +['size']; + +2345 +$p_h—d” +['com´es£d_size'] = +$v_d©a +['compressed_size']; + +2346 +$p_h—d” +['üc'] = +$v_d©a +['crc']; + +2347 +$p_h—d” +['æag'] = +$v_d©a +['flag']; + +2350 +$p_h—d” +['md©e'] = +$v_d©a +['mdate']; + +2351 +$p_h—d” +['mtime'] = +$v_d©a +['mtime']; + +2352 ià( +$p_h—d” +['mdate'] && $p_header['mtime']) + +2355 +$v_hour + = ( +$p_h—d” +['mtime'] & 0xF800) >> 11; + +2356 +$v_mšu‹ + = ( +$p_h—d” +['mtime'] & 0x07E0) >> 5; + +2357 +$v_£cÚde + = ( +$p_h—d” +['mtime'] & 0x001F)*2; + +2360 +$v_y—r + = (( +$p_h—d” +['mdate'] & 0xFE00) >> 9) + 1980; + +2361 +$v_mÚth + = ( +$p_h—d” +['mdate'] & 0x01E0) >> 5; + +2362 +$v_day + = +$p_h—d” +['mdate'] & 0x001F; + +2365 +$p_h—d” +['mtime'] = + `mktime +( +$v_hour +, +$v_mšu‹ +, +$v_£cÚde +, +$v_mÚth +, +$v_day +, +$v_y—r +); + +2370 +$p_h—d” +['mtime'] = + `time +(); + +2380 +$p_h—d” +['stored_filename'] = $p_header['filename']; + +2383 +$p_h—d” +['status'] = "ok"; + +2386  +$v_»suÉ +; + +2387 + } +} + +2402 +funùiÚ + + $_»adC’Œ®FžeH—d” +(& +$p_h—d” +) + +2404 +$v_»suÉ +=1; + +2407 +$v_bš¬y_d©a + = @ + `ä—d +( +$this +-> +_z_fd +, 4); + +2408 +$v_d©a + = + `uÅack +('Vid', +$v_bš¬y_d©a +); + +2411 ià( +$v_d©a +['id'] != 0x02014b50) + +2415 +$this +-> + `_”rÜLog +( +ARCHIVE_ZIP_ERR_BAD_FORMAT +, 'Invalid‡rchive structure'); + +2418  +Archive_Z +:: + `”rÜCode +(); + +2422 +$v_bš¬y_d©a + = + `ä—d +( +$this +-> +_z_fd +, 42); + +2425 ià( + `¡¾’ +( +$v_bš¬y_d©a +) != 42) + +2427 +$p_h—d” +['filename'] = ""; + +2428 +$p_h—d” +['status'] = "invalid_header"; + +2431 +$this +-> + `_”rÜLog +( +ARCHIVE_ZIP_ERR_BAD_FORMAT +, "Inv®id block siz: ". + `¡¾’ +( +$v_bš¬y_d©a +)); + +2434  +Archive_Z +:: + `”rÜCode +(); + +2438 +$p_h—d” + = + `uÅack +('vv”siÚ/vv”siÚ_exŒaùed/væag/vcom´essiÚ/vmtime/vmd©e/Vüc/Vcom´es£d_size/Vsize/vfž’ame_Ën/vexŒa_Ën/vcomm’t_Ën/vdisk/vš‹º®/Vex‹º®/Voff£t', +$v_bš¬y_d©a +); + +2441 ià( +$p_h—d” +['filename_len'] != 0) + +2442 +$p_h—d” +['fž’ame'] = + `ä—d +( +$this +-> +_z_fd +, $p_header['filename_len']); + +2444 +$p_h—d” +['filename'] = ''; + +2447 ià( +$p_h—d” +['extra_len'] != 0) + +2448 +$p_h—d” +['exŒa'] = + `ä—d +( +$this +-> +_z_fd +, $p_header['extra_len']); + +2450 +$p_h—d” +['extra'] = ''; + +2453 ià( +$p_h—d” +['comment_len'] != 0) + +2454 +$p_h—d” +['comm’t'] = + `ä—d +( +$this +-> +_z_fd +, $p_header['comment_len']); + +2456 +$p_h—d” +['comment'] = ''; + +2461 ià( +$p_h—d” +['mdate'] && $p_header['mtime']) + +2464 +$v_hour + = ( +$p_h—d” +['mtime'] & 0xF800) >> 11; + +2465 +$v_mšu‹ + = ( +$p_h—d” +['mtime'] & 0x07E0) >> 5; + +2466 +$v_£cÚde + = ( +$p_h—d” +['mtime'] & 0x001F)*2; + +2469 +$v_y—r + = (( +$p_h—d” +['mdate'] & 0xFE00) >> 9) + 1980; + +2470 +$v_mÚth + = ( +$p_h—d” +['mdate'] & 0x01E0) >> 5; + +2471 +$v_day + = +$p_h—d” +['mdate'] & 0x001F; + +2474 +$p_h—d” +['mtime'] = + `mktime +( +$v_hour +, +$v_mšu‹ +, +$v_£cÚde +, +$v_mÚth +, +$v_day +, +$v_y—r +); + +2479 +$p_h—d” +['mtime'] = + `time +(); + +2483 +$p_h—d” +['stored_filename'] = $p_header['filename']; + +2486 +$p_h—d” +['status'] = 'ok'; + +2489 ià( + `sub¡r +( +$p_h—d” +['filename'], -1) == '/') + +2491 +$p_h—d” +['external'] = 0x41FF0010; + +2496  +$v_»suÉ +; + +2497 + } +} + +2512 +funùiÚ + + $_»adEndC’Œ®Dœ +(& +$p_ûÁ¿l_dœ +) + +2514 +$v_»suÉ +=1; + +2517 +$v_size + = + `fžesize +( +$this +-> +_zÇme +); + +2518 @ + `f£ek +( +$this +-> +_z_fd +, +$v_size +); + +2519 ià(@ + `á–l +( +$this +-> +_z_fd +è!ð +$v_size +) { + +2520 +$this +-> + `_”rÜLog +( +ARCHIVE_ZIP_ERR_BAD_FORMAT +, + +2522 . +$this +-> +_zÇme +.'\''); + +2523  +Archive_Z +:: + `”rÜCode +(); + +2529 +$v_found + = 0; + +2530 ià( +$v_size + > 26) { + +2531 @ + `f£ek +( +$this +-> +_z_fd +, +$v_size +-22); + +2532 ià(( +$v_pos + = @ + `á–l +( +$this +-> +_z_fd +)è!ð( +$v_size +-22)) { + +2533 +$this +-> + `_”rÜLog +( +ARCHIVE_ZIP_ERR_BAD_FORMAT +, + +2535 . +$this +-> +_zÇme +.'\''); + +2536  +Archive_Z +:: + `”rÜCode +(); + +2540 +$v_bš¬y_d©a + = @ + `ä—d +( +$this +-> +_z_fd +, 4); + +2541 +$v_d©a + = + `uÅack +('Vid', +$v_bš¬y_d©a +); + +2544 ià( +$v_d©a +['id'] == 0x06054b50) { + +2545 +$v_found + = 1; + +2548 +$v_pos + = + `á–l +( +$this +-> +_z_fd +); + +2552 ià(! +$v_found +) { + +2553 +$v_maximum_size + = 65557; + +2554 ià( +$v_maximum_size + > +$v_size +) + +2555 +$v_maximum_size + = +$v_size +; + +2556 @ + `f£ek +( +$this +-> +_z_fd +, +$v_size +- +$v_maximum_size +); + +2557 ià(@ + `á–l +( +$this +-> +_z_fd +è!ð( +$v_size +- +$v_maximum_size +)) { + +2558 +$this +-> + `_”rÜLog +( +ARCHIVE_ZIP_ERR_BAD_FORMAT +, + +2560 . +$this +-> +_zÇme +.'\''); + +2561  +Archive_Z +:: + `”rÜCode +(); + +2565 +$v_pos + = + `á–l +( +$this +-> +_z_fd +); + +2566 +$v_by‹s + = 0x00000000; + +2567  +$v_pos + < +$v_size +) { + +2569 +$v_by‹ + = @ + `ä—d +( +$this +-> +_z_fd +, 1); + +2572 +$v_by‹s + = ($v_by‹ << 8è| + `Ord +( +$v_by‹ +); + +2575 ià( +$v_by‹s + == 0x504b0506) { + +2576 +$v_pos +++; + +2580 +$v_pos +++; + +2584 ià( +$v_pos + =ð +$v_size +) { + +2585 +$this +-> + `_”rÜLog +( +ARCHIVE_ZIP_ERR_BAD_FORMAT +, + +2587  +Archive_Z +:: + `”rÜCode +(); + +2592 +$v_bš¬y_d©a + = + `ä—d +( +$this +-> +_z_fd +, 18); + +2595 ià( + `¡¾’ +( +$v_bš¬y_d©a +) != 18) { + +2596 +$this +-> + `_”rÜLog +( +ARCHIVE_ZIP_ERR_BAD_FORMAT +, + +2598 . + `¡¾’ +( +$v_bš¬y_d©a +)); + +2599  +Archive_Z +:: + `”rÜCode +(); + +2603 +$v_d©a + = + `uÅack +('vdisk/vdisk_¡¬t/vdisk_’Œ›s/v’Œ›s/Vsize/Voff£t/vcomm’t_size', +$v_bš¬y_d©a +); + +2606 ià(( +$v_pos + + +$v_d©a +['comm’t_size'] + 18è!ð +$v_size +) { + +2607 +$this +-> + `_”rÜLog +( +ARCHIVE_ZIP_ERR_BAD_FORMAT +, + +2609  +Archive_Z +:: + `”rÜCode +(); + +2613 ià( +$v_d©a +['comment_size'] != 0) + +2614 +$p_ûÁ¿l_dœ +['comm’t'] = + `ä—d +( +$this +-> +_z_fd +, +$v_d©a +['comment_size']); + +2616 +$p_ûÁ¿l_dœ +['comment'] = ''; + +2618 +$p_ûÁ¿l_dœ +['’Œ›s'] = +$v_d©a +['entries']; + +2619 +$p_ûÁ¿l_dœ +['disk_’Œ›s'] = +$v_d©a +['disk_entries']; + +2620 +$p_ûÁ¿l_dœ +['off£t'] = +$v_d©a +['offset']; + +2621 +$p_ûÁ¿l_dœ +['size'] = +$v_d©a +['size']; + +2622 +$p_ûÁ¿l_dœ +['disk'] = +$v_d©a +['disk']; + +2623 +$p_ûÁ¿l_dœ +['disk_¡¬t'] = +$v_d©a +['disk_start']; + +2626  +$v_»suÉ +; + +2627 + } +} + +2642 +funùiÚ + + $_d–‘eByRuË +(& +$p_»suÉ_li¡ +, & +$p_·¿ms +) + +2644 +$v_»suÉ +=1; + +2645 +$v_li¡_d‘až + = + `¬¿y +(); + +2648 ià(( +$v_»suÉ += +$this +-> + `_ݒFd +('rb')) != 1) + +2651  +$v_»suÉ +; + +2655 +$v_ûÁ¿l_dœ + = + `¬¿y +(); + +2656 ià(( +$v_»suÉ + = +$this +-> + `_»adEndC’Œ®Dœ +( +$v_ûÁ¿l_dœ +)) != 1) + +2658 +$this +-> + `_þo£Fd +(); + +2659  +$v_»suÉ +; + +2663 @ + `»wšd +( +$this +-> +_z_fd +); + +2667 +$v_pos_’Œy + = +$v_ûÁ¿l_dœ +['offset']; + +2668 @ + `»wšd +( +$this +-> +_z_fd +); + +2669 ià(@ + `f£ek +( +$this +-> +_z_fd +, +$v_pos_’Œy +)) { + +2671 +$this +-> + `_þo£Fd +(); + +2673 +$this +-> + `_”rÜLog +( +ARCHIVE_ZIP_ERR_INVALID_ARCHIVE_ZIP +, + +2675  +Archive_Z +:: + `”rÜCode +(); + +2679 +$v_h—d”_li¡ + = + `¬¿y +(); + +2680 +$j_¡¬t + = 0; + +2681  +$i +=0, +$v_nb_exŒaùed +=0; $i< +$v_ûÁ¿l_dœ +['entries']; $i++) { + +2684 +$v_h—d”_li¡ +[ +$v_nb_exŒaùed +] = + `¬¿y +(); + +2685 +$v_»suÉ + + +2686 ð +$this +-> + `_»adC’Œ®FžeH—d” +( +$v_h—d”_li¡ +[ +$v_nb_exŒaùed +]); + +2687 ià( +$v_»suÉ + != 1) { + +2689 +$this +-> + `_þo£Fd +(); + +2691  +$v_»suÉ +; + +2695 +$v_h—d”_li¡ +[ +$v_nb_exŒaùed +]['šdex'] = +$i +; + +2698 +$v_found + = +çl£ +; + +2701 iàÐ( + `is£t +( +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_BY_NAME +])) + +2702 && ( +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_BY_NAME +] != 0)) { + +2705  +$j +=0; + +2706 ( +$j +<( +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_BY_NAME +])) + +2707 && (! +$v_found +); + +2708 +$j +++) { + +2711 ià( + `sub¡r +( +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_BY_NAME +][ +$j +], -1) == "/") { + +2714 iàÐ( + `¡¾’ +( +$v_h—d”_li¡ +[ +$v_nb_exŒaùed +]['¡Üed_fž’ame']è> sŒËn( +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_BY_NAME +][ +$j +])) + +2715 && ( + `sub¡r +( +$v_h—d”_li¡ +[ +$v_nb_exŒaùed +]['¡Üed_fž’ame'], 0, + `¡¾’ +( +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_BY_NAME +][ +$j +])) == $p_params[ARCHIVE_ZIP_PARAM_BY_NAME][$j])) { + +2716 +$v_found + = +Œue +; + +2718 + `–£if + ( (( +$v_h—d”_li¡ +[ +$v_nb_exŒaùed +]['external']&0x00000010)==0x00000010) + +2719 && ( +$v_h—d”_li¡ +[ +$v_nb_exŒaùed +]['¡Üed_fž’ame'].'/' =ð +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_BY_NAME +][ +$j +])) { + +2720 +$v_found + = +Œue +; + +2724 + `–£if + ( +$v_h—d”_li¡ +[ +$v_nb_exŒaùed +]['stored_filename'] + +2725 =ð +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_BY_NAME +][ +$j +]) { + +2726 +$v_found + = +Œue +; + +2732 iàÐ( + `is£t +( +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_BY_EREG +])) + +2733 && ( +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_BY_EREG +] != "")) { + +2735 ià( + `”eg +( +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_BY_EREG +], + +2736 +$v_h—d”_li¡ +[ +$v_nb_exŒaùed +]['stored_filename'])) { + +2737 +$v_found + = +Œue +; + +2742 iàÐ( + `is£t +( +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_BY_PREG +])) + +2743 && ( +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_BY_PREG +] != "")) { + +2745 ià( + `´eg_m©ch +( +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_BY_PREG +], + +2746 +$v_h—d”_li¡ +[ +$v_nb_exŒaùed +]['stored_filename'])) { + +2747 +$v_found + = +Œue +; + +2752 iàÐ( + `is£t +( +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_BY_INDEX +])) + +2753 && ( +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_BY_INDEX +] != 0)) { + +2756  +$j += +$j_¡¬t +; + +2757 ( +$j +<( +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_BY_INDEX +])) + +2758 && (! +$v_found +); + +2759 +$j +++) { + +2761 iàÐ( +$i +>= +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_BY_INDEX +][ +$j +]['start']) + +2762 && ( +$i +<= +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_BY_INDEX +][ +$j +]['end'])) { + +2763 +$v_found + = +Œue +; + +2765 ià( +$i +>= +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_BY_INDEX +][ +$j +]['end']) { + +2766 +$j_¡¬t + = +$j ++1; + +2769 ià( +$p_·¿ms +[ +ARCHIVE_ZIP_PARAM_BY_INDEX +][ +$j +]['¡¬t']> +$i +) { + +2776 ià( +$v_found +) { + +2777 + `un£t +( +$v_h—d”_li¡ +[ +$v_nb_exŒaùed +]); + +2780 +$v_nb_exŒaùed +++; + +2785 ià( +$v_nb_exŒaùed + > 0) { + +2788 +$v_z_‹mp_Çme + = +ARCHIVE_ZIP_TEMPORARY_DIR +. + `uniqid +('archive_zip-') + +2792 +$v_‹mp_z + = +Ãw + + `Archive_Z +( +$v_z_‹mp_Çme +); + +2795 ià(( +$v_»suÉ + = +$v_‹mp_z +-> + `_ݒFd +('wb')) != 1) { + +2796 +$this +-> + `_þo£Fd +(); + +2799  +$v_»suÉ +; + +2803  +$i +=0; $i<( +$v_h—d”_li¡ +); $i++) { + +2806 @ + `»wšd +( +$this +-> +_z_fd +); + +2807 ià(@ + `f£ek +( +$this +-> +_z_fd +, +$v_h—d”_li¡ +[ +$i +]['offset'])) { + +2809 +$this +-> + `_þo£Fd +(); + +2810 +$v_‹mp_z +-> + `_þo£Fd +(); + +2811 @ + `uƚk +( +$v_z_‹mp_Çme +); + +2813 +$this +-> + `_”rÜLog +( +ARCHIVE_ZIP_ERR_INVALID_ARCHIVE_ZIP +, + +2815  +Archive_Z +:: + `”rÜCode +(); + +2819 ià(( +$v_»suÉ + = +$this +-> + `_»adFžeH—d” +( +$v_h—d”_li¡ +[ +$i +])) != 1) { + +2821 +$this +-> + `_þo£Fd +(); + +2822 +$v_‹mp_z +-> + `_þo£Fd +(); + +2823 @ + `uƚk +( +$v_z_‹mp_Çme +); + +2825  +$v_»suÉ +; + +2829 +$v_»suÉ + = +$v_‹mp_z +-> + `_wr™eFžeH—d” +( +$v_h—d”_li¡ +[ +$i +]); + +2830 ià( +$v_»suÉ + != 1) { + +2832 +$this +-> + `_þo£Fd +(); + +2833 +$v_‹mp_z +-> + `_þo£Fd +(); + +2834 @ + `uƚk +( +$v_z_‹mp_Çme +); + +2836  +$v_»suÉ +; + +2840 +$v_»suÉ + = +$this +-> + `_toÞ_CÝyBlock +($this-> +_z_fd +, + +2841 +$v_‹mp_z +-> +_z_fd +, + +2842 +$v_h—d”_li¡ +[ +$i +]['compressed_size']); + +2843 ià( +$v_»suÉ + != 1) { + +2845 +$this +-> + `_þo£Fd +(); + +2846 +$v_‹mp_z +-> + `_þo£Fd +(); + +2847 @ + `uƚk +( +$v_z_‹mp_Çme +); + +2849  +$v_»suÉ +; + +2854 +$v_off£t + = @ + `á–l +( +$v_‹mp_z +-> +_z_fd +); + +2857  +$i +=0; $i<( +$v_h—d”_li¡ +); $i++) { + +2859 +$v_»suÉ += +$v_‹mp_z +-> + `_wr™eC’Œ®FžeH—d” +( +$v_h—d”_li¡ +[ +$i +]); + +2860 ià( +$v_»suÉ + != 1) { + +2862 +$v_‹mp_z +-> + `_þo£Fd +(); + +2863 +$this +-> + `_þo£Fd +(); + +2864 @ + `uƚk +( +$v_z_‹mp_Çme +); + +2866  +$v_»suÉ +; + +2870 +$v_‹mp_z +-> + `_cÚv”tH—d”2FžeInfo +( +$v_h—d”_li¡ +[ +$i +], + +2871 +$p_»suÉ_li¡ +[ +$i +]); + +2876 +$v_comm’t + = ''; + +2879 +$v_size + = @ + `á–l +( +$v_‹mp_z +-> +_z_fd +)- +$v_off£t +; + +2882 +$v_»suÉ + = +$v_‹mp_z +-> + `_wr™eC’Œ®H—d” +(( +$v_h—d”_li¡ +), + +2883 +$v_size +, +$v_off£t +, + +2884 +$v_comm’t +); + +2885 ià( +$v_»suÉ + != 1) { + +2887 + `un£t +( +$v_h—d”_li¡ +); + +2888 +$v_‹mp_z +-> + `_þo£Fd +(); + +2889 +$this +-> + `_þo£Fd +(); + +2890 @ + `uƚk +( +$v_z_‹mp_Çme +); + +2892  +$v_»suÉ +; + +2896 +$v_‹mp_z +-> + `_þo£Fd +(); + +2897 +$this +-> + `_þo£Fd +(); + +2901 @ + `uƚk +( +$this +-> +_zÇme +); + +2906 +$this +-> + `_toÞ_R’ame +( +$v_z_‹mp_Çme +, $this-> +_zÇme +); + +2909 + `un£t +( +$v_‹mp_z +); + +2913  +$v_»suÉ +; + +2914 + } +} + +2935 +funùiÚ + + $_dœCheck +( +$p_dœ +, +$p_is_dœ += +çl£ +) + +2937 +$v_»suÉ + = 1; + +2940 ià(( +$p_is_dœ +è&& ( + `sub¡r +( +$p_dœ +, -1)=='/')) { + +2941 +$p_dœ + = + `sub¡r +($p_dœ, 0, + `¡¾’ +($p_dir)-1); + +2945 ià(( + `is_dœ +( +$p_dœ +)) || ($p_dir == "")) { + +2950 +$p_·»Á_dœ + = + `dœÇme +( +$p_dœ +); + +2953 ià( +$p_·»Á_dœ + !ð +$p_dœ +) { + +2955 ià( +$p_·»Á_dœ + != "") { + +2956 ià(( +$v_»suÉ + = +$this +-> + `_dœCheck +( +$p_·»Á_dœ +)) != 1) { + +2957  +$v_»suÉ +; + +2963 ià(!@ + `mkdœ +( +$p_dœ +, 0777)) { + +2964 +$this +-> + `_”rÜLog +( +ARCHIVE_ZIP_ERR_DIR_CREATE_FAIL +, + +2966  +Archive_Z +:: + `”rÜCode +(); + +2970  +$v_»suÉ +; + +2971 + } +} + +2987 +funùiÚ + + $_m”ge +(& +$p_¬chive_to_add +) + +2989 +$v_»suÉ +=1; + +2992 ià(! + `is_fže +( +$p_¬chive_to_add +-> +_zÇme +)) { + +2998 ià(! + `is_fže +( +$this +-> +_zÇme +)) { + +3000 +$v_»suÉ + = +$this +-> + `_du¶iÿ‹ +( +$p_¬chive_to_add +-> +_zÇme +); + +3002  +$v_»suÉ +; + +3006 ià(( +$v_»suÉ += +$this +-> + `_ݒFd +('rb')) != 1) { + +3007  +$v_»suÉ +; + +3011 +$v_ûÁ¿l_dœ + = + `¬¿y +(); + +3012 ià(( +$v_»suÉ + = +$this +-> + `_»adEndC’Œ®Dœ +( +$v_ûÁ¿l_dœ +)) != 1) { + +3013 +$this +-> + `_þo£Fd +(); + +3014  +$v_»suÉ +; + +3018 @ + `»wšd +( +$this +-> +_z_fd +); + +3021 ià(( +$v_»suÉ += +$p_¬chive_to_add +-> + `_ݒFd +('rb')) != 1) { + +3022 +$this +-> + `_þo£Fd +(); + +3023  +$v_»suÉ +; + +3027 +$v_ûÁ¿l_dœ_to_add + = + `¬¿y +(); + +3028 +$v_»suÉ + = +$p_¬chive_to_add +-> + `_»adEndC’Œ®Dœ +( +$v_ûÁ¿l_dœ_to_add +); + +3029 ià( +$v_»suÉ + != 1) { + +3030 +$this +-> + `_þo£Fd +(); + +3031 +$p_¬chive_to_add +-> + `_þo£Fd +(); + +3032  +$v_»suÉ +; + +3036 @ + `»wšd +( +$p_¬chive_to_add +-> +_z_fd +); + +3039 +$v_z_‹mp_Çme + = +ARCHIVE_ZIP_TEMPORARY_DIR +. + `uniqid +('archive_zip-').'.tmp'; + +3042 ià(( +$v_z_‹mp_fd + = @ + `fݒ +( +$v_z_‹mp_Çme +, 'wb')) == 0) { + +3043 +$this +-> + `_þo£Fd +(); + +3044 +$p_¬chive_to_add +-> + `_þo£Fd +(); + +3045 +$this +-> + `_”rÜLog +( +ARCHIVE_ZIP_ERR_READ_OPEN_FAIL +, + +3047 . +$v_z_‹mp_Çme +.'\' in binary write mode'); + +3048  +Archive_Z +:: + `”rÜCode +(); + +3054 +$v_size + = +$v_ûÁ¿l_dœ +['offset']; + +3055  +$v_size + != 0) { + +3056 +$v_»ad_size + = ( +$v_size + < +ARCHIVE_ZIP_READ_BLOCK_SIZE + + +3057 ? +$v_size + : +ARCHIVE_ZIP_READ_BLOCK_SIZE +); + +3058 +$v_bufãr + = + `ä—d +( +$this +-> +_z_fd +, +$v_»ad_size +); + +3059 @ + `fwr™e +( +$v_z_‹mp_fd +, +$v_bufãr +, +$v_»ad_size +); + +3060 +$v_size + -ð +$v_»ad_size +; + +3064 +$v_size + = +$v_ûÁ¿l_dœ_to_add +['offset']; + +3065  +$v_size + != 0) { + +3066 +$v_»ad_size + = ( +$v_size + < +ARCHIVE_ZIP_READ_BLOCK_SIZE + + +3067 ? +$v_size + : +ARCHIVE_ZIP_READ_BLOCK_SIZE +); + +3068 +$v_bufãr + = + `ä—d +( +$p_¬chive_to_add +-> +_z_fd +, +$v_»ad_size +); + +3069 @ + `fwr™e +( +$v_z_‹mp_fd +, +$v_bufãr +, +$v_»ad_size +); + +3070 +$v_size + -ð +$v_»ad_size +; + +3074 +$v_off£t + = @ + `á–l +( +$v_z_‹mp_fd +); + +3077 +$v_size + = +$v_ûÁ¿l_dœ +['size']; + +3078  +$v_size + != 0) { + +3079 +$v_»ad_size + = ( +$v_size + < +ARCHIVE_ZIP_READ_BLOCK_SIZE + + +3080 ? +$v_size + : +ARCHIVE_ZIP_READ_BLOCK_SIZE +); + +3081 +$v_bufãr + = @ + `ä—d +( +$this +-> +_z_fd +, +$v_»ad_size +); + +3082 @ + `fwr™e +( +$v_z_‹mp_fd +, +$v_bufãr +, +$v_»ad_size +); + +3083 +$v_size + -ð +$v_»ad_size +; + +3087 +$v_size + = +$v_ûÁ¿l_dœ_to_add +['size']; + +3088  +$v_size + != 0) { + +3089 +$v_»ad_size + = ( +$v_size + < +ARCHIVE_ZIP_READ_BLOCK_SIZE + + +3090 ? +$v_size + : +ARCHIVE_ZIP_READ_BLOCK_SIZE +); + +3091 +$v_bufãr + = @ + `ä—d +( +$p_¬chive_to_add +-> +_z_fd +, +$v_»ad_size +); + +3092 @ + `fwr™e +( +$v_z_‹mp_fd +, +$v_bufãr +, +$v_»ad_size +); + +3093 +$v_size + -ð +$v_»ad_size +; + +3098 +$v_comm’t + = ''; + +3101 +$v_size + = @ + `á–l +( +$v_z_‹mp_fd +)- +$v_off£t +; + +3106 +$v_sw­ + = +$this +-> +_z_fd +; + +3107 +$this +-> +_z_fd + = +$v_z_‹mp_fd +; + +3108 +$v_z_‹mp_fd + = +$v_sw­ +; + +3111 ià(( +$v_»suÉ + = +$this +-> + `_wr™eC’Œ®H—d” +( +$v_ûÁ¿l_dœ +['entries'] + +3112 + +$v_ûÁ¿l_dœ_to_add +['entries'], + +3113 +$v_size +, +$v_off£t +, + +3114 +$v_comm’t +)) != 1) { + +3115 +$this +-> + `_þo£Fd +(); + +3116 +$p_¬chive_to_add +-> + `_þo£Fd +(); + +3117 @ + `fþo£ +( +$v_z_‹mp_fd +); + +3118 +$this +-> +_z_fd + = +nuÎ +; + +3121 + `un£t +( +$v_h—d”_li¡ +); + +3124  +$v_»suÉ +; + +3128 +$v_sw­ + = +$this +-> +_z_fd +; + +3129 +$this +-> +_z_fd + = +$v_z_‹mp_fd +; + +3130 +$v_z_‹mp_fd + = +$v_sw­ +; + +3133 +$this +-> + `_þo£Fd +(); + +3134 +$p_¬chive_to_add +-> + `_þo£Fd +(); + +3137 @ + `fþo£ +( +$v_z_‹mp_fd +); + +3141 @ + `uƚk +( +$this +-> +_zÇme +); + +3146 +$this +-> + `_toÞ_R’ame +( +$v_z_‹mp_Çme +, $this-> +_zÇme +); + +3149  +$v_»suÉ +; + +3150 + } +} + +3165 +funùiÚ + + $_du¶iÿ‹ +( +$p_¬chive_fž’ame +) + +3167 +$v_»suÉ +=1; + +3170 ià(! + `is_fže +( +$p_¬chive_fž’ame +)) { + +3173 +$v_»suÉ + = 1; + +3176  +$v_»suÉ +; + +3180 ià(( +$v_»suÉ += +$this +-> + `_ݒFd +('wb')) != 1) { + +3182  +$v_»suÉ +; + +3186 ià(( +$v_z_‹mp_fd + = @ + `fݒ +( +$p_¬chive_fž’ame +, 'rb')) == 0) { + +3187 +$this +-> + `_þo£Fd +(); + +3188 +$this +-> + `_”rÜLog +( +ARCHIVE_ZIP_ERR_READ_OPEN_FAIL +, + +3190 . +$p_¬chive_fž’ame +.'\' in binary write mode'); + +3191  +Archive_Z +:: + `”rÜCode +(); + +3197 +$v_size + = + `fžesize +( +$p_¬chive_fž’ame +); + +3198  +$v_size + != 0) { + +3199 +$v_»ad_size + = ( +$v_size + < +ARCHIVE_ZIP_READ_BLOCK_SIZE + + +3200 ? +$v_size + : +ARCHIVE_ZIP_READ_BLOCK_SIZE +); + +3201 +$v_bufãr + = + `ä—d +( +$v_z_‹mp_fd +, +$v_»ad_size +); + +3202 @ + `fwr™e +( +$this +-> +_z_fd +, +$v_bufãr +, +$v_»ad_size +); + +3203 +$v_size + -ð +$v_»ad_size +; + +3207 +$this +-> + `_þo£Fd +(); + +3210 @ + `fþo£ +( +$v_z_‹mp_fd +); + +3212  +$v_»suÉ +; + +3213 + } +} + +3224 +funùiÚ + + $_check_·¿m‘”s +(& +$p_·¿ms +, +$p_deçuÉ +) + +3228 ià(! + `is_¬¿y +( +$p_·¿ms +)) { + +3229 +$this +-> + `_”rÜLog +( +ARCHIVE_ZIP_ERR_INVALID_PARAMETER +, + +3231  +Archive_Z +:: + `”rÜCode +(); + +3235  + `»£t +( +$p_·¿ms +); + `li¡ +( +$v_key +, +$v_v®ue +èð + `—ch +($p_params); ) { + +3236 ià(! + `is£t +( +$p_deçuÉ +[ +$v_key +])) { + +3237 +$this +-> + `_”rÜLog +( +ARCHIVE_ZIP_ERR_INVALID_PARAMETER +, + +3238 'UnsuµÜ‹d…¬am‘” w™h key \''. +$v_key +.'\''); + +3240  +Archive_Z +:: + `”rÜCode +(); + +3245  + `»£t +( +$p_deçuÉ +); + `li¡ +( +$v_key +, +$v_v®ue +èð + `—ch +($p_default); ) { + +3246 ià(! + `is£t +( +$p_·¿ms +[ +$v_key +])) { + +3247 +$p_·¿ms +[ +$v_key +] = +$p_deçuÉ +[$v_key]; + +3252 +$v_ÿÎback_li¡ + = + `¬¿y + ('callback_pre_add','callback_post_add', + +3254  +$i +=0; $i<( +$v_ÿÎback_li¡ +); $i++) { + +3255 +$v_key += +$v_ÿÎback_li¡ +[ +$i +]; + +3256 iàÐ( + `is£t +( +$p_·¿ms +[ +$v_key +])) && ($p_params[$v_key] != '')) { + +3257 ià(! + `funùiÚ_exi¡s +( +$p_·¿ms +[ +$v_key +])) { + +3258 +$this +-> + `_”rÜLog +( +ARCHIVE_ZIP_ERR_INVALID_PARAM_VALUE +, + +3259 "C®lback '". +$p_·¿ms +[ +$v_key +] + +3261 ."·¿m‘” '". +$v_key +."'"); + +3262  +Archive_Z +:: + `”rÜCode +(); + +3268 + } +} + +3284 +funùiÚ + +_”rÜLog +( +$p_”rÜ_code +=0, +$p_”rÜ_¡ršg +='') + +3286 +$this +-> +_”rÜ_code + = +$p_”rÜ_code +; + +3287 + g$this +-> + g_”rÜ_¡ršg + = +$p_”rÜ_¡ršg +; + +3302 +funùiÚ + + $_”rÜRe£t +() + +3304 +$this +-> +_”rÜ_code + = 1; + +3305 +$this +-> +_”rÜ_¡ršg + = ''; + +3306 + } +} + +3321 +funùiÚ + + $_toÞ_P©hReduùiÚ +( +$p_dœ +) + +3323 +$v_»suÉ + = ""; + +3326 ià( +$p_dœ + != "") + +3329 +$v_li¡ + = + `ex¶ode +("/", +$p_dœ +); + +3332  +$i +=( +$v_li¡ +)-1; $i>=0; $i--) + +3335 ià( +$v_li¡ +[ +$i +] == ".") + +3340 ià( +$v_li¡ +[ +$i +] == "..") + +3343 +$i +--; + +3345 ià(( +$v_li¡ +[ +$i +] == "") && ($i!=(($v_list)-1)) && ($i!=0)) + +3352 +$v_»suÉ + = +$v_li¡ +[ +$i +].($i!=(($v_list)-1)?"/".$v_result:""); + +3358  +$v_»suÉ +; + +3359 + } +} + +3383 +funùiÚ + + $_toÞ_P©hInþusiÚ +( +$p_dœ +, +$p_·th +) + +3385 +$v_»suÉ + = 1; + +3388 +$v_li¡_dœ + = + `ex¶ode +("/", +$p_dœ +); + +3389 +$v_li¡_dœ_size + = ( +$v_li¡_dœ +); + +3390 +$v_li¡_·th + = + `ex¶ode +("/", +$p_·th +); + +3391 +$v_li¡_·th_size + = ( +$v_li¡_·th +); + +3394 +$i + = 0; + +3395 +$j + = 0; + +3396 ( +$i + < +$v_li¡_dœ_size +è&& ( +$j + < +$v_li¡_·th_size +è&& ( +$v_»suÉ +)) { + +3399 ià( +$v_li¡_dœ +[ +$i +] == '') { + +3400 +$i +++; + +3403 ià( +$v_li¡_·th +[ +$j +] == '') { + +3404 +$j +++; + +3409 iàÐ( +$v_li¡_dœ +[ +$i +] !ð +$v_li¡_·th +[ +$j +]) + +3410 && ( +$v_li¡_dœ +[ +$i +] != '') + +3411 && ( +$v_li¡_·th +[ +$j +] != '')) { + +3412 +$v_»suÉ + = 0; + +3416 +$i +++; + +3417 +$j +++; + +3421 ià( +$v_»suÉ +) { + +3423 ( +$j + < +$v_li¡_·th_size +è&& ( +$v_li¡_·th +[$j] == '')) $j++; + +3424 ( +$i + < +$v_li¡_dœ_size +è&& ( +$v_li¡_dœ +[$i] == '')) $i++; + +3426 ià(( +$i + >ð +$v_li¡_dœ_size +è&& ( +$j + >ð +$v_li¡_·th_size +)) { + +3428 +$v_»suÉ + = 2; + +3430 ià( +$i + < +$v_li¡_dœ_size +) { + +3432 +$v_»suÉ + = 0; + +3437  +$v_»suÉ +; + +3438 + } +} + +3459 +funùiÚ + + $_toÞ_CÝyBlock +( +$p_¤c +, +$p_de¡ +, +$p_size +, +$p_mode +=0) + +3461 +$v_»suÉ + = 1; + +3463 ià( +$p_mode +==0) + +3465  +$p_size + != 0) + +3467 +$v_»ad_size + = ( +$p_size + < +ARCHIVE_ZIP_READ_BLOCK_SIZE + + +3468 ? +$p_size + : +ARCHIVE_ZIP_READ_BLOCK_SIZE +); + +3469 +$v_bufãr + = @ + `ä—d +( +$p_¤c +, +$v_»ad_size +); + +3470 @ + `fwr™e +( +$p_de¡ +, +$v_bufãr +, +$v_»ad_size +); + +3471 +$p_size + -ð +$v_»ad_size +; + +3474 ià( +$p_mode +==1) + +3476  +$p_size + != 0) + +3478 +$v_»ad_size + = ( +$p_size + < +ARCHIVE_ZIP_READ_BLOCK_SIZE + + +3479 ? +$p_size + : +ARCHIVE_ZIP_READ_BLOCK_SIZE +); + +3480 +$v_bufãr + = @ + `gz»ad +( +$p_¤c +, +$v_»ad_size +); + +3481 @ + `fwr™e +( +$p_de¡ +, +$v_bufãr +, +$v_»ad_size +); + +3482 +$p_size + -ð +$v_»ad_size +; + +3485 ià( +$p_mode +==2) + +3487  +$p_size + != 0) + +3489 +$v_»ad_size + = ( +$p_size + < +ARCHIVE_ZIP_READ_BLOCK_SIZE + + +3490 ? +$p_size + : +ARCHIVE_ZIP_READ_BLOCK_SIZE +); + +3491 +$v_bufãr + = @ + `ä—d +( +$p_¤c +, +$v_»ad_size +); + +3492 @ + `gzwr™e +( +$p_de¡ +, +$v_bufãr +, +$v_»ad_size +); + +3493 +$p_size + -ð +$v_»ad_size +; + +3496 ià( +$p_mode +==3) + +3498  +$p_size + != 0) + +3500 +$v_»ad_size + = ( +$p_size + < +ARCHIVE_ZIP_READ_BLOCK_SIZE + + +3501 ? +$p_size + : +ARCHIVE_ZIP_READ_BLOCK_SIZE +); + +3502 +$v_bufãr + = @ + `gz»ad +( +$p_¤c +, +$v_»ad_size +); + +3503 @ + `gzwr™e +( +$p_de¡ +, +$v_bufãr +, +$v_»ad_size +); + +3504 +$p_size + -ð +$v_»ad_size +; + +3509  +$v_»suÉ +; + +3510 + } +} + +3531 +funùiÚ + + $_toÞ_R’ame +( +$p_¤c +, +$p_de¡ +) + +3533 +$v_»suÉ + = 1; + +3536 ià(!@ + `»Çme +( +$p_¤c +, +$p_de¡ +)) { + +3539 ià(!@ + `cÝy +( +$p_¤c +, +$p_de¡ +)) { + +3540 +$v_»suÉ + = 0; + +3542 ià(!@ + `uƚk +( +$p_¤c +)) { + +3543 +$v_»suÉ + = 0; + +3548  +$v_»suÉ +; + +3549 + } +} + +3570 +funùiÚ + + $_toÞ_T¿n¦©eWšP©h +( +$p_·th +, +$p_»move_disk_ˉ” += +Œue +) + +3572 ià( + `¡ri¡r +( + `php_uÇme +(), 'windows')) { + +3574 iàÐ( +$p_»move_disk_ˉ” +) + +3575 && (( +$v_pos™iÚ + = + `¡½os +( +$p_·th +, ':')è!ð +çl£ +)) { + +3576 +$p_·th + = + `sub¡r +($p_·th, +$v_pos™iÚ ++1); + +3579 ià(( + `¡½os +( +$p_·th +, '\\'è> 0è|| ( + `sub¡r +($p_path, 0,1) == '\\')) { + +3580 +$p_·th + = + `¡¹r +($p_path, '\\', '/'); + +3583  +$p_·th +; + +3584 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/listener/AnsiColorLogger.php + +1 +”rCÞÜ + = +£lf +:: +PREFIX + . s–f:: +ATTR_DIM + . s–f:: +SEPARATOR + . s–f:: +FG_RED + . s–f:: +SUFFIX +; + +148 +$this +-> +w¬nCÞÜ + = +£lf +:: +PREFIX + . s–f:: +ATTR_DIM + . s–f:: +SEPARATOR + . s–f:: +FG_MAGENTA + . s–f:: +SUFFIX +; + +149 +$this +-> +šfoCÞÜ + = +£lf +:: +PREFIX + . s–f:: +ATTR_DIM + . s–f:: +SEPARATOR + . s–f:: +FG_CYAN + . s–f:: +SUFFIX +; + +150 +$this +-> +v”bo£CÞÜ + = +£lf +:: +PREFIX + . s–f:: +ATTR_DIM + . s–f:: +SEPARATOR + . s–f:: +FG_GREEN + . s–f:: +SUFFIX +; + +151 +$this +-> +debugCÞÜ + = +£lf +:: +PREFIX + . s–f:: +ATTR_DIM + . s–f:: +SEPARATOR + . s–f:: +FG_BLUE + . s–f:: +SUFFIX +; + +158 +´iv©e + +fš® + +funùiÚ + + $£tCÞÜs +() { + +160 +$u£rCÞÜFže + = +Phšg +:: + `g‘Prݔty +("phing.logger.defaults"); + +161 +$sy¡emCÞÜFže + = +Ãw + + `PhšgFže +( +Phšg +:: + `g‘ResourûP©h +("phing/listener/defaults.properties")); + +163 +$š + = +nuÎ +; + +165 +Œy + { + +166 +$´Ý + = +Ãw + + `Prݔt›s +(); + +168 ià( +$u£rCÞÜFže + !=ð +nuÎ +) { + +169 +$´Ý +-> + `lßd +( +$u£rCÞÜFže +); + +171 +$´Ý +-> + `lßd +( +$sy¡emCÞÜFže +); + +174 +$”r + = +$´Ý +-> + `g‘Prݔty +("AnsiColorLogger.ERROR_COLOR"); + +175 +$w¬n + = +$´Ý +-> + `g‘Prݔty +("AnsiColorLogger.WARNING_COLOR"); + +176 +$šfo + = +$´Ý +-> + `g‘Prݔty +("AnsiColorLogger.INFO_COLOR"); + +177 +$v”bo£ + = +$´Ý +-> + `g‘Prݔty +("AnsiColorLogger.VERBOSE_COLOR"); + +178 +$debug + = +$´Ý +-> + `g‘Prݔty +("AnsiColorLogger.DEBUG_COLOR"); + +179 ià( +$”r + !=ð +nuÎ +) { + +180 +$this +-> +”rCÞÜ + = +£lf +:: +PREFIX + . +$”r + . s–f:: +SUFFIX +; + +182 ià( +$w¬n + !=ð +nuÎ +) { + +183 +$this +-> +w¬nCÞÜ + = +£lf +:: +PREFIX + . +$w¬n + . s–f:: +SUFFIX +; + +185 ià( +$šfo + !=ð +nuÎ +) { + +186 +$this +-> +šfoCÞÜ + = +£lf +:: +PREFIX + . +$šfo + . s–f:: +SUFFIX +; + +188 ià( +$v”bo£ + !=ð +nuÎ +) { + +189 +$this +-> +v”bo£CÞÜ + = +£lf +:: +PREFIX + . +$v”bo£ + . s–f:: +SUFFIX +; + +191 ià( +$debug + !=ð +nuÎ +) { + +192 +$this +-> +debugCÞÜ + = +£lf +:: +PREFIX + . +$debug + . s–f:: +SUFFIX +; + +194 } + `ÿtch + ( +IOExû±iÚ + +$iÛ +) { + +197 + } +} + +205 +´Ùeùed + +fš® + +funùiÚ + + $´štMes§ge +( +$mes§ge +, +OuutSŒ—m + +$¡»am +, +$´iܙy +) { + +206 ià( +$mes§ge + !=ð +nuÎ +) { + +208 ià(! +$this +-> +cÞÜsS‘ +) { + +209 +$this +-> + `£tCÞÜs +(); + +210 +$this +-> +cÞÜsS‘ + = +Œue +; + +213  +$´iܙy +) { + +214  +Projeù +:: +MSG_ERR +: + +215 +$mes§ge + = +$this +-> +”rCÞÜ + . $mes§g. +£lf +:: +END_COLOR +; + +217  +Projeù +:: +MSG_WARN +: + +218 +$mes§ge + = +$this +-> +w¬nCÞÜ + . $mes§g. +£lf +:: +END_COLOR +; + +220  +Projeù +:: +MSG_INFO +: + +221 +$mes§ge + = +$this +-> +šfoCÞÜ + . $mes§g. +£lf +:: +END_COLOR +; + +223  +Projeù +:: +MSG_VERBOSE +: + +224 +$mes§ge + = +$this +-> +v”bo£CÞÜ + . $mes§g. +£lf +:: +END_COLOR +; + +226  +Projeù +:: +MSG_DEBUG +: + +227 +$mes§ge + = +$this +-> +debugCÞÜ + . $mes§g. +£lf +:: +END_COLOR +; + +231 +$¡»am +-> + `wr™e +( +$mes§ge + . +PHP_EOL +); + +233 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/listener/DefaultLogger.php + +1 +msgOuutLev– + = (è +$Ëv– +; + +99 + } +} + +106 +public + +funùiÚ + + $£tOuutSŒ—m +( +OuutSŒ—m + +$ouut +) { + +107 +$this +-> +out + = +$ouut +; + +108 + } +} + +115 +public + +funùiÚ + + $£tE¼ÜSŒ—m +( +OuutSŒ—m + +$”r +) { + +116 +$this +-> +”r + = +$”r +; + +117 + } +} + +126 +public + +funùiÚ + + $buždS¹ed +( +BuždEv’t + +$ev’t +) { + +127 +$this +-> +¡¬tTime + = +Phšg +:: + `cu¼’tTimeMžlis +(); + +128 ià( +$this +-> +msgOuutLev– + >ð +Projeù +:: +MSG_INFO +) { + +129 +$this +-> + `´štMes§ge +("Buždfže: ". +$ev’t +-> + `g‘Projeù +()-> + `g‘Prݔty +("phšg.fže"), $this-> +out +, +Projeù +:: +MSG_INFO +); + +131 + } +} + +140 +public + +funùiÚ + + $buždFšished +( +BuždEv’t + +$ev’t +) { + +141 +$”rÜ + = +$ev’t +-> + `g‘Exû±iÚ +(); + +142 ià( +$”rÜ + ==ð +nuÎ +) { + +143 +$msg + = +PHP_EOL + . +$this +-> + `g‘BuždSucûssfulMes§ge +() . PHP_EOL; + +145 +$msg + = +PHP_EOL + . +$this +-> + `g‘BuždFažedMes§ge +() . PHP_EOL; + +146 ià( +Projeù +:: +MSG_VERBOSE + <ð +$this +-> +msgOuutLev– + || !( +$”rÜ + +š¡ªûof + +BuždExû±iÚ +)) { + +147 +$msg + .ð +$”rÜ +-> + `__toSŒšg +(). +PHP_EOL +; + +149 +$msg + .ð +$”rÜ +-> + `g‘Mes§ge +(); + +152 +$msg + .ð +PHP_EOL + . "TÙ®ime: " . +£lf +:: + `fÜm©Time +( +Phšg +:: + `cu¼’tTimeMžlis +(è- +$this +-> +¡¬tTime +) . PHP_EOL; + +154 ià( +$”rÜ + ==ð +nuÎ +) { + +155 +$this +-> + `´štMes§ge +( +$msg +, $this-> +out +, +Projeù +:: +MSG_VERBOSE +); + +157 +$this +-> + `´štMes§ge +( +$msg +, $this-> +”r +, +Projeù +:: +MSG_ERR +); + +159 + } +} + +165 +´Ùeùed + +funùiÚ + + $g‘BuždFažedMes§ge +() { + +167 + } +} + +173 +´Ùeùed + +funùiÚ + + $g‘BuždSucûssfulMes§ge +() { + +175 + } +} + +184 +public + +funùiÚ + + $rg‘S¹ed +( +BuždEv’t + +$ev’t +) { + +185 ià( +Projeù +:: +MSG_INFO + <ð +$this +-> +msgOuutLev– +) { + +186 +$msg + = +PHP_EOL + . +$ev’t +-> + `g‘Projeù +()-> + `g‘Name +(è. ' > ' . $ev’t-> + `g‘T¬g‘ +()->getName() . ':' . PHP_EOL; + +187 +$this +-> + `´štMes§ge +( +$msg +, $this-> +out +, +$ev’t +-> + `g‘Priܙy +()); + +189 + } +} + +198 +public + +funùiÚ + + $rg‘Fšished +( +BuždEv’t + +$ev’t +è{ + } +} + +208 +public + +funùiÚ + + $skS¹ed +( +BuždEv’t + +$ev’t +è{ + } +} + +218 +public + +funùiÚ + + $skFšished +( +BuždEv’t + +$ev’t +è{ + } +} + +227 +public + +funùiÚ + + $mes§geLogged +( +BuždEv’t + +$ev’t +) { + +228 +$´iܙy + = +$ev’t +-> + `g‘Priܙy +(); + +229 ià( +$´iܙy + <ð +$this +-> +msgOuutLev– +) { + +230 +$msg + = ""; + +231 ià( +$ev’t +-> + `g‘Task +(è!=ð +nuÎ +) { + +232 +$Çme + = +$ev’t +-> + `g‘Task +(); + +233 +$Çme + = $Çme-> + `g‘TaskName +(); + +234 +$msg + = + `¡r_·d +("[$Çme] ", +£lf +:: +LEFT_COLUMN_SIZE +, " ", +STR_PAD_LEFT +); + +237 +$msg + .ð +$ev’t +-> + `g‘Mes§ge +(); + +239 ià( +$´iܙy + !ð +Projeù +:: +MSG_ERR +) { + +240 +$this +-> + `´štMes§ge +( +$msg +, $this-> +out +, +$´iܙy +); + +242 +$this +-> + `´štMes§ge +( +$msg +, $this-> +”r +, +$´iܙy +); + +245 + } +} + +253 +public +  +funùiÚ + + $fÜm©Time +( +$miüos +) { + +254 +$£cÚds + = +$miüos +; + +255 +$mšu‹s + = +$£cÚds + / 60; + +256 ià( +$mšu‹s + > 1) { + +257  + `¥rštf +("%1.0f minute%s %0.2f second%s", + +258 +$mšu‹s +, ($minutes === 1 ? " " : "s "), + +259 +$£cÚds + - + `æoÜ +($seconds/60) * 60, ($seconds%60 === 1 ? "" : "s")); + +261  + `¥rštf +("%0.4à£cÚd%s", +$£cÚds +, ($seconds%60 === 1 ? "" : "s")); + +263 + } +} + +275 +´Ùeùed + +funùiÚ + + $´štMes§ge +( +$mes§ge +, +OuutSŒ—m + +$¡»am +, +$´iܙy +) { + +276 +$¡»am +-> + `wr™e +( +$mes§ge + . +PHP_EOL +); + +277 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/listener/NoBannerLogger.php + +1 + `g‘T¬g‘ +(); + +38 +$this +-> +rg‘Name + = +$rg‘ +-> + `g‘Name +(); + +41 +funùiÚ + + $rg‘Fšished +( +BuždEv’t + +$ev’t +) { + +42 +$this +-> +rg‘Name + = +nuÎ +; + +43 + } +} + +45 +funùiÚ + + $mes§geLogged +( +BuždEv’t + +$ev’t +) { + +47 ià( +$ev’t +-> + `g‘Priܙy +(è> +$this +-> +msgOuutLev– + || +nuÎ + ==ð$ev’t-> + `g‘Mes§ge +(è|| + `Œim +($event->getMessage() === "")) { + +51 ià( +$this +-> +rg‘Name + !=ð +nuÎ +) { + +52 +$msg + = +PHP_EOL + . +$ev’t +-> + `g‘Projeù +()-> + `g‘Name +(è. ' > ' . +$this +-> +rg‘Name + . ':' . PHP_EOL; + +53 +$this +-> + `´štMes§ge +( +$msg +, $this-> +out +, +$ev’t +-> + `g‘Priܙy +()); + +54 +$this +-> +rg‘Name + = +nuÎ +; + +57 +·»Á +:: + `mes§geLogged +( +$ev’t +); + +58 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/listener/PearLogListener.php + +1 +PEAR_LOG_DEBUG +, + +62 +Projeù +:: +MSG_INFO + => +PEAR_LOG_INFO +, + +63 +Projeù +:: +MSG_VERBOSE + => +PEAR_LOG_NOTICE +, + +64 +Projeù +:: +MSG_WARN + => +PEAR_LOG_WARNING +, + +65 +Projeù +:: +MSG_ERR + => +PEAR_LOG_ERR + + +71 +´Ùeùed + + m$logCÚfigu»d + = +çl£ +; + +76 +´Ùeùed + + m$logg” +; + +81 +´Ùeùed + +funùiÚ + + $cÚfigu»Loggšg +() { + +83 +$ty³ + = +Phšg +:: + `g‘DefšedPrݔty +('pear.log.type'); + +84 +$Çme + = +Phšg +:: + `g‘DefšedPrݔty +('pear.log.name'); + +85 +$id’t + = +Phšg +:: + `g‘DefšedPrݔty +('pear.log.ident'); + +86 +$cÚf + = +Phšg +:: + `g‘DefšedPrݔty +('pear.log.conf'); + +88 ià( +$ty³ + ==ð +nuÎ +) $type = 'file'; + +89 ià( +$Çme + ==ð +nuÎ +) $name = 'phing.log'; + +90 ià( +$id’t + ==ð +nuÎ +) $ident = 'phing'; + +91 ià( +$cÚf + ==ð +nuÎ +è$cÚàð + `¬¿y +(); + +93 +šþude_Úû + 'Log.php'; + +94 ià(! + `þass_exi¡s +('Log')) { + +95 +throw + +Ãw + + `BuždExû±iÚ +("Cannot find PEAR Log class for use by PearLogger."); + +98 +$this +-> +logg” + = +Log +:: + `sšgËtÚ +( +$ty³ +, +$Çme +, +$id’t +, +$cÚf +, +£lf +:: +$Ëv–M­ +[$this-> +msgOuutLev– +]); + +106 +´Ùeùed + +funùiÚ + + $logg” +() { + +107 ià(! +$this +-> +logCÚfigu»d +) { + +108 +$this +-> + `cÚfigu»Loggšg +(); + +110  +$this +-> +logg” +; + +111 + } +} + +119 +public + +funùiÚ + + $buždS¹ed +( +BuždEv’t + +$ev’t +) { + +120 +$this +-> +¡¬tTime + = +Phšg +:: + `cu¼’tTimeMžlis +(); + +121 +$this +-> + `logg” +()-> + `£tId’t +( +$ev’t +-> + `g‘Projeù +()-> + `g‘Name +()); + +122 +$this +-> + `logg” +()-> + `šfo +("S¹šg bužd w™h buždfže: ". +$ev’t +-> + `g‘Projeù +()-> + `g‘Prݔty +("phing.file")); + +123 + } +} + +132 +public + +funùiÚ + + $buždFšished +( +BuždEv’t + +$ev’t +) { + +133 +$”rÜ + = +$ev’t +-> + `g‘Exû±iÚ +(); + +134 ià( +$”rÜ + ==ð +nuÎ +) { + +135 +$msg + = "Finished successful build."; + +137 +$msg + = "Bužd fažed. [»asÚ: " . +$”rÜ +-> + `g‘Mes§ge +() ."]"; + +139 +$this +-> + `logg” +()-> + `log +( +$msg + . " TÙ®ime: " . +DeçuÉLogg” +:: + `fÜm©Time +( +Phšg +:: + `cu¼’tTimeMžlis +(è- $this-> +¡¬tTime +)); + +140 + } +} + +148 +public + +funùiÚ + + $rg‘S¹ed +( +BuždEv’t + +$ev’t +è{ + } +} + +158 +public + +funùiÚ + + $rg‘Fšished +( +BuždEv’t + +$ev’t +è{ + } +} + +168 +public + +funùiÚ + + $skS¹ed +( +BuždEv’t + +$ev’t +è{ + } +} + +177 +public + +funùiÚ + + $skFšished +( +BuždEv’t + +$ev’t +è{ + } +} + +185 +public + +funùiÚ + + $mes§geLogged +( +BuždEv’t + +$ev’t +) { + +186 ià( +$ev’t +-> + `g‘Priܙy +(è<ð +$this +-> +msgOuutLev– +) { + +187 +$msg + = ""; + +188 ià( +$ev’t +-> + `g‘Task +(è!=ð +nuÎ +) { + +189 +$Çme + = +$ev’t +-> + `g‘Task +(); + +190 +$Çme + = $Çme-> + `g‘TaskName +(); + +191 +$msg + = + `¡r_·d +("[$Çme] ", +£lf +:: +LEFT_COLUMN_SIZE +, " ", +STR_PAD_LEFT +); + +193 +$msg + .ð +$ev’t +-> + `g‘Mes§ge +(); + +194 +$this +-> + `logg” +()-> + `log +( +$msg +, +£lf +:: +$Ëv–M­ +[ +$ev’t +-> + `g‘Priܙy +()]); + +196 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/listener/StreamRequiredBuildLogger.php + +1 +doc + = +Ãw + + `DOMDocum’t +("1.0", "UTF-8"); + +118 +$this +-> +doc +-> +fÜm©Ouut + = +Œue +; + +127 +funùiÚ + + $buždS¹ed +( +BuždEv’t + +$ev’t +) { + +128 +$this +-> +buždTim”S¹ + = +Phšg +:: + `cu¼’tTimeMžlis +(); + +129 +$this +-> +buždEËm’t + = $this-> +doc +-> + `ü—‹EËm’t +( +XmlLogg” +:: +BUILD_TAG +); + +130 + `¬¿y_push +( +$this +-> +–em’tSck +, $this-> +buždEËm’t +); + +131 + `¬¿y_push +( +$this +-> +timesSck +, $this-> +buždTim”S¹ +); + +132 + } +} + +141 +public + +funùiÚ + + $buždFšished +( +BuždEv’t + +$ev’t +) { + +143 +$–­£dTime + = +Phšg +:: + `cu¼’tTimeMžlis +(è- +$this +-> +buždTim”S¹ +; + +145 +$this +-> +buždEËm’t +-> + `£tA‰ribu‹ +( +XmlLogg” +:: +TIME_ATTR +, +DeçuÉLogg” +:: + `fÜm©Time +( +$–­£dTime +)); + +147 ià( +$ev’t +-> + `g‘Exû±iÚ +(è!ð +nuÎ +) { + +148 +$this +-> +buždEËm’t +-> + `£tA‰ribu‹ +( +XmlLogg” +:: +ERROR_ATTR +, +$ev’t +-> + `g‘Exû±iÚ +()-> + `g‘Mes§ge +()); + +149 +$”rText + = +$this +-> +doc +-> + `ü—‹CDATASeùiÚ +( +$ev’t +-> + `g‘Exû±iÚ +()-> + `g‘T¿ûAsSŒšg +()); + +150 +$¡ackŒaû + = +$this +-> +doc +-> + `ü—‹EËm’t +( +XmlLogg” +:: +STACKTRACE_TAG +); + +151 +$¡ackŒaû +-> + `­³ndChžd +( +$”rText +); + +152 +$this +-> +buždEËm’t +-> + `­³ndChžd +( +$¡ackŒaû +); + +155 +$this +-> +doc +-> + `­³ndChžd +($this-> +buždEËm’t +); + +157 +$outFž’ame + = +$ev’t +-> + `g‘Projeù +()-> + `g‘Prݔty +("XmlLogger.file"); + +158 ià( +$outFž’ame + =ð +nuÎ +) { + +159 +$outFž’ame + = "log.xml"; + +162 +Œy + { + +163 +$¡»am + = +$this +-> +out +; + +164 ià( +$¡»am + ==ð +nuÎ +) { + +165 +$¡»am + = +Ãw + + `FžeOuutSŒ—m +( +$outFž’ame +); + +170 +$wr™” + = +Ãw + + `OuutSŒ—mWr™” +( +$¡»am +); + +171 +$wr™” +-> + `wr™e +( +$this +-> +doc +-> + `§veXML +()); + +172 +$wr™” +-> + `þo£ +(); + +173 } + `ÿtch + ( +IOExû±iÚ + +$exc +) { + +174 +Œy + { + +175 +$¡»am +-> + `þo£ +(); + +176 } + `ÿtch + ( +Exû±iÚ + +$x +) {} + +177 +throw + +Ãw + + `BuždExû±iÚ +("UÇbˁØwr™log fže.", +$exc +); + +181 +$this +-> +buždEËm’t + = +nuÎ +; + +183 + `¬¿y_pÝ +( +$this +-> +–em’tSck +); + +184 + `¬¿y_pÝ +( +$this +-> +timesSck +); + +185 + } +} + +194 +public + +funùiÚ + + $rg‘S¹ed +( +BuždEv’t + +$ev’t +) { + +195 +$rg‘ + = +$ev’t +-> + `g‘T¬g‘ +(); + +197 +$rg‘EËm’t + = +$this +-> +doc +-> + `ü—‹EËm’t +( +XmlLogg” +:: +TARGET_TAG +); + +198 +$rg‘EËm’t +-> + `£tA‰ribu‹ +( +XmlLogg” +:: +NAME_ATTR +, +$rg‘ +-> + `g‘Name +()); + +200 + `¬¿y_push +( +$this +-> +timesSck +, +Phšg +:: + `cu¼’tTimeMžlis +()); + +201 + `¬¿y_push +( +$this +-> +–em’tSck +, +$rg‘EËm’t +); + +202 + } +} + +211 +public + +funùiÚ + + $rg‘Fšished +( +BuždEv’t + +$ev’t +) { + +212 +$rg‘Tim”S¹ + = + `¬¿y_pÝ +( +$this +-> +timesSck +); + +213 +$rg‘EËm’t + = + `¬¿y_pÝ +( +$this +-> +–em’tSck +); + +215 +$–­£dTime + = +Phšg +:: + `cu¼’tTimeMžlis +(è- +$rg‘Tim”S¹ +; + +216 +$rg‘EËm’t +-> + `£tA‰ribu‹ +( +XmlLogg” +:: +TIME_ATTR +, +DeçuÉLogg” +:: + `fÜm©Time +( +$–­£dTime +)); + +218 +$·»ÁEËm’t + = +$this +-> +–em’tSck +[ + `couÁ +($this->elementStack) - 1 ]; + +219 +$·»ÁEËm’t +-> + `­³ndChžd +( +$rg‘EËm’t +); + +220 + } +} + +228 +public + +funùiÚ + + $skS¹ed +( +BuždEv’t + +$ev’t +) { + +229 +$sk + = +$ev’t +-> + `g‘Task +(); + +231 +$skEËm’t + = +$this +-> +doc +-> + `ü—‹EËm’t +( +XmlLogg” +:: +TASK_TAG +); + +232 +$skEËm’t +-> + `£tA‰ribu‹ +( +XmlLogg” +:: +NAME_ATTR +, +$sk +-> + `g‘TaskName +()); + +233 +$skEËm’t +-> + `£tA‰ribu‹ +( +XmlLogg” +:: +LOCATION_ATTR +, +$sk +-> + `g‘LoÿtiÚ +()-> + `toSŒšg +()); + +235 + `¬¿y_push +( +$this +-> +timesSck +, +Phšg +:: + `cu¼’tTimeMžlis +()); + +236 + `¬¿y_push +( +$this +-> +–em’tSck +, +$skEËm’t +); + +237 + } +} + +246 +public + +funùiÚ + + $skFšished +( +BuždEv’t + +$ev’t +) { + +247 +$skTim”S¹ + = + `¬¿y_pÝ +( +$this +-> +timesSck +); + +248 +$skEËm’t + = + `¬¿y_pÝ +( +$this +-> +–em’tSck +); + +250 +$–­£dTime + = +Phšg +:: + `cu¼’tTimeMžlis +(è- +$skTim”S¹ +; + +251 +$skEËm’t +-> + `£tA‰ribu‹ +( +XmlLogg” +:: +TIME_ATTR +, +DeçuÉLogg” +:: + `fÜm©Time +( +$–­£dTime +)); + +253 +$·»ÁEËm’t + = +$this +-> +–em’tSck +[ + `couÁ +($this->elementStack) - 1 ]; + +254 +$·»ÁEËm’t +-> + `­³ndChžd +( +$skEËm’t +); + +255 + } +} + +265 +public + +funùiÚ + + $mes§geLogged +( +BuždEv’t + +$ev’t +) + +267 +$´iܙy + = +$ev’t +-> + `g‘Priܙy +(); + +269 ià( +$´iܙy + > +$this +-> +msgOuutLev– +) { + +273 +$mes§geEËm’t + = +$this +-> +doc +-> + `ü—‹EËm’t +( +XmlLogg” +:: +MESSAGE_TAG +); + +275  +$´iܙy +) { + +276  +Projeù +:: +MSG_ERR +: + +277 +$Çme + = "error"; + +279  +Projeù +:: +MSG_WARN +: + +280 +$Çme + = "warn"; + +282  +Projeù +:: +MSG_INFO +: + +283 +$Çme + = "info"; + +286 +$Çme + = "debug"; + +290 +$mes§geEËm’t +-> + `£tA‰ribu‹ +( +XmlLogg” +:: +PRIORITY_ATTR +, +$Çme +); + +292 +$mes§geText + = +$this +-> +doc +-> + `ü—‹CDATASeùiÚ +( +$ev’t +-> + `g‘Mes§ge +()); + +294 +$mes§geEËm’t +-> + `­³ndChžd +( +$mes§geText +); + +296 ià(! + `em±y +( +$this +-> +–em’tSck +)) { + +297 +$this +-> +–em’tSck +[ + `couÁ +($this->–em’tSck)-1]-> + `­³ndChžd +( +$mes§geEËm’t +); + +299 + } +} + +323 +public + +funùiÚ + + $£tMes§geOuutLev– +( +$Ëv– +) { + +324 +$this +-> +msgOuutLev– + = (è +$Ëv– +; + +325 + } +} + +332 +public + +funùiÚ + + $£tOuutSŒ—m +( +OuutSŒ—m + +$ouut +) { + +333 +$this +-> +out + = +$ouut +; + +334 + } +} + +341 +public + +funùiÚ + + $£tE¼ÜSŒ—m +( +OuutSŒ—m + +$”r +) { + +342 +$this +-> +”r + = +$”r +; + +343 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/mappers/FileNameMapper.php + +1 + `g‘Name +()); + +48 +funùiÚ + + $£tTo +( +$to +è{ + } +} + +53 +funùiÚ + + $£tFrom +( +$äom +è{ + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/mappers/GlobMapper.php + +1 +äomP»fix + ==ð +nuÎ +) + +66 || ! +SŒšgH–³r +:: + `¡¬tsW™h +( +$this +-> +äomP»fix +, +$_sourûFžeName +) + +67 || ! +SŒšgH–³r +:: + `’dsW™h +( +$this +-> +äomPo¡fix +, +$_sourûFžeName +)) { + +68  +nuÎ +; + +70 +$v¬·¹ + = +$this +-> + `_exŒaùV¬ŸbËP¬t +( +$_sourûFžeName +); + +71 +$sub¡™utiÚ + = +$this +-> +toP»fix +. +$v¬·¹ +.$this-> +toPo¡fix +; + +72  + `¬¿y +( +$sub¡™utiÚ +); + +77 +funùiÚ + + $£tFrom +( +$äom +) { + +78 +$šdex + = + `¡¼pos +( +$äom +, '*'); + +80 ià( +$šdex + ==ð +çl£ +) { + +81 +$this +-> +äomP»fix + = +$äom +; + +82 +$this +-> +äomPo¡fix + = ""; + +84 +$this +-> +äomP»fix + = + `sub¡r +( +$äom +, 0, +$šdex +); + +85 +$this +-> +äomPo¡fix + = + `sub¡r +( +$äom +, +$šdex ++1); + +87 +$this +-> +´efixL’gth + = + `¡¾’ +($this-> +äomP»fix +); + +88 +$this +-> +po¡fixL’gth + = + `¡¾’ +($this-> +äomPo¡fix +); + +89 + } +} + +94 +funùiÚ + + $£tTo +( +$to +) { + +95 +$šdex + = + `¡¼pos +( +$to +, '*'); + +96 ià( +$šdex + ==ð +çl£ +) { + +97 +$this +-> +toP»fix + = +$to +; + +98 +$this +-> +toPo¡fix + = ""; + +100 +$this +-> +toP»fix + = + `sub¡r +( +$to +, 0, +$šdex +); + +101 +$this +-> +toPo¡fix + = + `sub¡r +( +$to +, +$šdex ++1); + +103 + } +} + +105 +´iv©e + +funùiÚ + + $_exŒaùV¬ŸbËP¬t +( +$_Çme +) { + +107 +$¡¬t + = ( +$this +-> +´efixL’gth + === 0) ? 0 : $this->prefixLength; + +108 +$’d + = ( +$this +-> +po¡fixL’gth + ==ð0è? + `¡¾’ +( +$_Çme +) : strlen($_name) - $this->postfixLength; + +109 +$Ën + = +$’d +- +$¡¬t +; + +110  + `sub¡r +( +$_Çme +, +$¡¬t +, +$Ën +); + +111 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/mappers/IdentityMapper.php + +1 +m”gedFže + ==ð +nuÎ +) { + +47 +throw + +Ãw + + `BuždExû±iÚ +("MergeMapperƒrror,o‡ttribute‚ot set"); + +49  + `¬¿y +( +$this +-> +m”gedFže +); + +60 +funùiÚ + + $£tTo +( +$to +) { + +61 +$this +-> +m”gedFže + = +$to +; + +62 + } +} + +67 +funùiÚ + + $£tFrom +( +$äom +è{ + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/mappers/RegexpMapper.php + +1 +»g + = +Ãw + + `Regexp +(); + +55 +funùiÚ + + $£tFrom +( +$äom +) { + +56 +$this +-> +»g +-> + `S‘P©‹º +( +$äom +); + +57 + } +} + +62 +funùiÚ + + $£tTo +( +$to +) { + +67 +$this +-> +to + = +$to +; + +68 + } +} + +70 +funùiÚ + + $maš +( +$sourûFžeName +) { + +71 ià( +$this +-> +»g + ==ð +nuÎ + || $this-> +to + ==ðnuÎ || !$this->»g-> + `m©ches +(( +¡ršg +è +$sourûFžeName +)) { + +72  +nuÎ +; + +74  + `¬¿y +( +$this +-> + `»¶aûReã»nûs +( +$sourûFžeName +)); + +75 + } +} + +82 +´iv©e + +funùiÚ + + $»¶aûReã»nûs +( +$sourû +) { + +90 +$groups + = ( +¬¿y +è +$this +-> +»g +-> + `g‘Groups +(); + +93  + `´eg_»¶aû +('/\\\([\d]+)/e', "\$groups[$1]", +$this +-> +to +); + +94 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/AbstractHandler.php + +1 +·»ÁHªdËr + = +$·»ÁHªdËr +; + +48 +$this +-> +·r£r + = +$·r£r +; + +49 +$this +-> +·r£r +-> + `£tHªdËr +($this); + +61 +public + +funùiÚ + + $¡¬tEËm’t +( +$Çme +, +$©Œibs +) { + +62 +throw + +Ãw + + `Ex·tP¬£Exû±iÚ +("Unexpectedƒlement $name"); + +63 + } +} + +69 +´Ùeùed + +funùiÚ + + $fšished +(è{ + } +} + +79 +public + +funùiÚ + + $’dEËm’t +( +$Çme +) { + +80 +$this +-> + `fšished +(); + +81 +$this +-> +·r£r +-> + `£tHªdËr +($this-> +·»ÁHªdËr +); + +82 + } +} + +92 +public + +funùiÚ + + $ch¬aù”s +( +$d©a +) { + +93 +$s + = + `Œim +( +$d©a +); + +94 ià( + `¡¾’ +( +$s +) > 0) { + +95 +throw + +Ãw + + `Ex·tP¬£Exû±iÚ +("UÃx³ùedexˆ'$s'", +$this +-> +·r£r +-> + `g‘LoÿtiÚ +()); + +97 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/AbstractSAXParser.php + +1 +hªdËr + = +$obj +; + +58 + } +} + +73 +funùiÚ + + $¡¬tEËm’t +( +$·r£r +, +$Çme +, +$©Œibs +) { + +74 +$this +-> +hªdËr +-> + `¡¬tEËm’t +( +$Çme +, +$©Œibs +); + +75 + } +} + +90 +funùiÚ + + $’dEËm’t +( +$·r£r +, +$Çme +) { + +91 +$this +-> +hªdËr +-> + `’dEËm’t +( +$Çme +); + +92 + } +} + +107 +funùiÚ + + $ch¬aù”s +( +$·r£r +, +$d©a +) { + +108 +$this +-> +hªdËr +-> + `ch¬aù”s +( +$d©a +); + +109 + } +} + +115 +ab¡¿ù + +funùiÚ + +·r£ +(); + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/DataTypeHandler.php + +1 +rg‘ + = +$rg‘ +; + +56 +$this +-> +cÚfigu¿tÜ + = +$cÚfigu¿tÜ +; + +76 +funùiÚ + + $š™ +( +$´ÝTy³ +, +$©Œs +) { + +78 +$´ojeù + = +$this +-> +cÚfigu¿tÜ +-> +´ojeù +; + +79 +$cÚfigu¿tÜ + = +$this +-> +cÚfigu¿tÜ +; + +81 +Œy + { + +82 +$this +-> +–em’t + = +$´ojeù +-> + `ü—‹D©aTy³ +( +$´ÝTy³ +); + +84 ià( +$this +-> +–em’t + ==ð +nuÎ +) { + +85 +throw + +Ãw + + `BuždExû±iÚ +("Unknown dataype $propType"); + +88 ià( +$this +-> +rg‘ + !=ð +nuÎ +) { + +89 +$this +-> +w¿µ” + = +Ãw + + `RuÁimeCÚfigu¿bË +($this-> +–em’t +, +$´ÝTy³ +); + +90 +$this +-> +w¿µ” +-> + `£tA‰ribu‹s +( +$©Œs +); + +91 +$this +-> +rg‘ +-> + `addD©aTy³ +($this-> +w¿µ” +); + +93 +$cÚfigu¿tÜ +-> + `cÚfigu» +( +$this +-> +–em’t +, +$©Œs +, +$´ojeù +); + +94 +$cÚfigu¿tÜ +-> + `cÚfigu»Id +( +$this +-> +–em’t +, +$©Œs +); + +97 } + `ÿtch + ( +BuždExû±iÚ + +$exc +) { + +98 +throw + +Ãw + + `Ex·tP¬£Exû±iÚ +( +$exc +, +$this +-> +·r£r +-> + `g‘LoÿtiÚ +()); + +100 + } +} + +108 +funùiÚ + + $ch¬aù”s +( +$d©a +) { + +109 +$´ojeù + = +$this +-> +cÚfigu¿tÜ +-> +´ojeù +; + +110 +Œy + { + +111 +$this +-> +cÚfigu¿tÜ +-> + `addText +( +$´ojeù +, $this-> +–em’t +, +$d©a +); + +112 } + `ÿtch + ( +BuždExû±iÚ + +$exc +) { + +113 +throw + +Ãw + + `Ex·tP¬£Exû±iÚ +( +$exc +-> + `g‘Mes§ge +(), +$this +-> +·r£r +-> + `g‘LoÿtiÚ +()); + +115 + } +} + +125 +funùiÚ + + $¡¬tEËm’t +( +$Çme +, +$©Œs +) { + +126 +$Ãf + = +Ãw + + `Ne¡edEËm’tHªdËr +( +$this +-> +·r£r +, $this, $this-> +cÚfigu¿tÜ +, $this-> +–em’t +, $this-> +w¿µ” +, $this-> +rg‘ +); + +127 +$Ãf +-> + `š™ +( +$Çme +, +$©Œs +); + +128 + } +} + +139 +funùiÚ + + $’dEËm’t +( +$Çme +) { + +140 +$this +-> +–em’t +-> + `·rsšgCom¶‘e +(); + +141 +·»Á +:: + `’dEËm’t +( +$Çme +); + +142 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/ExpatParseException.php + +1 +»ad” + = +$»ad” +; + +77 ià( +$fž’ame + !=ð +nuÎ +) { + +78 +$this +-> +fže + = +Ãw + + `PhšgFže +( +$fž’ame +); + +80 +$this +-> +·r£r + = + `xml_·r£r_ü—‹ +(); + +81 +$this +-> +bufãr + = 4096; + +82 +$this +-> +loÿtiÚ + = +Ãw + + `LoÿtiÚ +(); + +83 + `xml_£t_objeù +( +$this +-> +·r£r +, $this); + +84 + `xml_£t_–em’t_hªdËr +( +$this +-> +·r£r +, + `¬¿y +($this,"startElement"),array($this,"endElement")); + +85 + `xml_£t_ch¬aù”_d©a_hªdËr +( +$this +-> +·r£r +, + `¬¿y +($this, "characters")); + +96 +funùiÚ + + $·r£rS‘O±iÚ +( +$Ýt +, +$v® +) { + +97  + `xml_·r£r_£t_ÝtiÚ +( +$this +-> +·r£r +, +$Ýt +, +$v® +); + +98 + } +} + +107 +funùiÚ + + $g‘LoÿtiÚ +() { + +108 ià( +$this +-> +fže + !=ð +nuÎ +) { + +109 +$·th + = +$this +-> +fže +-> + `g‘AbsÞu‹P©h +(); + +111 +$·th + = +$this +-> +»ad” +-> + `g‘Resourû +(); + +113 +$this +-> +loÿtiÚ + = +Ãw + + `LoÿtiÚ +( +$·th +, + `xml_g‘_cu¼’t_lše_numb” +($this-> +·r£r +), + `xml_g‘_cu¼’t_cÞumn_numb” +($this->parser)); + +114  +$this +-> +loÿtiÚ +; + +115 + } +} + +126 +funùiÚ + + $·r£ +() { + +128  ( +$d©a + = +$this +-> +»ad” +-> + `»ad +()) !== -1 ) { + +129 ià(! + `xml_·r£ +( +$this +-> +·r£r +, +$d©a +, $this-> +»ad” +-> + `eof +())) { + +130 +$”rÜ + = + `xml_”rÜ_¡ršg +( + `xml_g‘_”rÜ_code +( +$this +-> +·r£r +)); + +131 +$e + = +Ãw + + `Ex·tP¬£Exû±iÚ +( +$”rÜ +, +$this +-> + `g‘LoÿtiÚ +()); + +132 + `xml_·r£r_ä“ +( +$this +-> +·r£r +); + +133 +throw + +$e +; + +136 + `xml_·r£r_ä“ +( +$this +-> +·r£r +); + +139 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/Location.php + +1 +fžeName + = +$fžeName +; + +48 +$this +-> +lšeNumb” + = +$lšeNumb” +; + +49 +$this +-> +cÞumnNumb” + = +$cÞumnNumb” +; + +61 +funùiÚ + + $toSŒšg +() { + +62 +$buf + = ""; + +63 ià( +$this +-> +fžeName + !=ð +nuÎ +) { + +64 +$buf +.= +$this +-> +fžeName +; + +65 ià( +$this +-> +lšeNumb” + !=ð +nuÎ +) { + +66 +$buf +.ð":". +$this +-> +lšeNumb” +; + +68 +$buf +.=":". +$this +-> +cÞumnNumb” +; + +70  ( +¡ršg +è +$buf +; + +71 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/NestedElementHandler.php + +1 +cÚfigu¿tÜ + = +$cÚfigu¿tÜ +; + +87 ià( +$·»Á + +š¡ªûof + +TaskAd­‹r +) { + +88 +$this +-> +·»Á + = +$·»Á +-> + `g‘Proxy +(); + +90 +$this +-> +·»Á + = +$·»Á +; + +92 +$this +-> +·»ÁW¿µ” + = +$·»ÁW¿µ” +; + +93 +$this +-> +rg‘ + = +$rg‘ +; + +113 +funùiÚ + + $š™ +( +$´ÝTy³ +, +$©Œs +) { + +114 +$cÚfigu¿tÜ + = +$this +-> +cÚfigu¿tÜ +; + +115 +$´ojeù + = +$this +-> +cÚfigu¿tÜ +-> +´ojeù +; + +118 +$·»ÁCÏss + = + `g‘_þass +( +$this +-> +·»Á +); + +119 +$ih + = +IÁro¥eùiÚH–³r +:: + `g‘H–³r +( +$·»ÁCÏss +); + +120 +Œy + { + +121 ià( +$this +-> +·»Á + +š¡ªûof + +UnknownEËm’t +) { + +122 +$this +-> +chžd + = +Ãw + + `UnknownEËm’t +( + `¡¹Þow” +( +$´ÝTy³ +)); + +123 +$this +-> +·»Á +-> + `addChžd +($this-> +chžd +); + +125 +$this +-> +chžd + = +$ih +-> + `ü—‹EËm’t +( +$´ojeù +, $this-> +·»Á +, + `¡¹Þow” +( +$´ÝTy³ +)); + +128 +$cÚfigu¿tÜ +-> + `cÚfigu»Id +( +$this +-> +chžd +, +$©Œs +); + +130 ià( +$this +-> +·»ÁW¿µ” + !=ð +nuÎ +) { + +131 +$this +-> +chždW¿µ” + = +Ãw + + `RuÁimeCÚfigu¿bË +($this-> +chžd +, +$´ÝTy³ +); + +132 +$this +-> +chždW¿µ” +-> + `£tA‰ribu‹s +( +$©Œs +); + +133 +$this +-> +·»ÁW¿µ” +-> + `addChžd +($this-> +chždW¿µ” +); + +135 +$cÚfigu¿tÜ +-> + `cÚfigu» +( +$this +-> +chžd +, +$©Œs +, +$´ojeù +); + +136 +$ih +-> + `¡ÜeEËm’t +( +$´ojeù +, +$this +-> +·»Á +, $this-> +chžd +, + `¡¹Þow” +( +$´ÝTy³ +)); + +138 } + `ÿtch + ( +BuždExû±iÚ + +$exc +) { + +139 +throw + +Ãw + + `Ex·tP¬£Exû±iÚ +("E¼Ü in™Ÿlizšg‚e¡edƒËm’ˆ<$´ÝTy³>", +$exc +, +$this +-> +·r£r +-> + `g‘LoÿtiÚ +()); + +141 + } +} + +150 +funùiÚ + + $ch¬aù”s +( +$d©a +) { + +152 +$cÚfigu¿tÜ + = +$this +-> +cÚfigu¿tÜ +; + +153 +$´ojeù + = +$this +-> +cÚfigu¿tÜ +-> +´ojeù +; + +155 ià( +$this +-> +·»ÁW¿µ” + ==ð +nuÎ +) { + +156 +Œy + { + +157 +$cÚfigu¿tÜ +-> + `addText +( +$´ojeù +, +$this +-> +chžd +, +$d©a +); + +158 } + `ÿtch + ( +BuždExû±iÚ + +$exc +) { + +159 +throw + +Ãw + + `Ex·tP¬£Exû±iÚ +( +$exc +-> + `g‘Mes§ge +(), +$this +-> +·r£r +-> + `g‘LoÿtiÚ +()); + +162 +$this +-> +chždW¿µ” +-> + `addText +( +$d©a +); + +164 + } +} + +174 +funùiÚ + + $¡¬tEËm’t +( +$Çme +, +$©Œs +) { + +176 ià( +$this +-> +chžd + +š¡ªûof + +TaskCڏš” +) { + +179 +$tc + = +Ãw + + `TaskHªdËr +( +$this +-> +·r£r +, $this, $this-> +cÚfigu¿tÜ +, $this-> +chžd +, $this-> +chždW¿µ” +, $this-> +rg‘ +); + +180 +$tc +-> + `š™ +( +$Çme +, +$©Œs +); + +182 +$Ãh + = +Ãw + + `Ne¡edEËm’tHªdËr +( +$this +-> +·r£r +, $this, $this-> +cÚfigu¿tÜ +, $this-> +chžd +, $this-> +chždW¿µ” +, $this-> +rg‘ +); + +183 +$Ãh +-> + `š™ +( +$Çme +, +$©Œs +); + +185 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/ProjectConfigurator.php + +1 + `·r£ +(); + +70 +funùiÚ + + $__cÚ¡ruù +( +Projeù + +$´ojeù +, +PhšgFže + +$buždFže +) { + +71 +$this +-> +´ojeù + = +$´ojeù +; + +72 +$this +-> +buždFže + = +Ãw + + `PhšgFže +( +$buždFže +-> + `g‘AbsÞu‹P©h +()); + +73 +$this +-> +buždFžeP¬’t + = +Ãw + + `PhšgFže +($this-> +buždFže +-> + `g‘P¬’t +()); + +74 + } +} + +84 +´Ùeùed + +funùiÚ + + $·r£ +() { + +85 +Œy + { + +86 +$»ad” + = +Ãw + + `Bufã»dR—d” +Òew + `FžeR—d” +( +$this +-> +buždFže +)); + +87 +$·r£r + = +Ãw + + `Ex·tP¬£r +( +$»ad” +); + +88 +$·r£r +-> + `·r£rS‘O±iÚ +( +XML_OPTION_CASE_FOLDING +,0); + +89 +$·r£r +-> + `£tHªdËr +( +Ãw + + `RoÙHªdËr +($·r£r, +$this +)); + +90 +$this +-> +´ojeù +-> + `log +("·rsšg buždfž".$this-> +buždFže +-> + `g‘Name +(), +Projeù +:: +MSG_VERBOSE +); + +91 +$·r£r +-> + `·r£ +(); + +92 +$»ad” +-> + `þo£ +(); + +93 } + `ÿtch + ( +Exû±iÚ + +$exc +) { + +94 +throw + +Ãw + + `BuždExû±iÚ +("E¼Ü„—dšg…rojeù fže", +$exc +); + +96 + } +} + +108 +public +  +funùiÚ + + $cÚfigu» +( +$rg‘ +, +$©Œs +, +Projeù + +$´ojeù +) { + +110 ià( +$rg‘ + +š¡ªûof + +TaskAd­‹r +) { + +111 +$rg‘ + = $rg‘-> + `g‘Proxy +(); + +118 ià( +$rg‘ + +š¡ªûof + +UnknownEËm’t +) { + +119 +$ŒyT¬g‘ + = +$´ojeù +-> + `ü—‹Task +( +$rg‘ +-> + `g‘TaskTy³ +()); + +120 ià( +$ŒyT¬g‘ +) { + +121 +$rg‘ + = +$ŒyT¬g‘ +; + +125 +$b—n + = + `g‘_þass +( +$rg‘ +); + +126 +$ih + = +IÁro¥eùiÚH–³r +:: + `g‘H–³r +( +$b—n +); + +128 + `fܗch + ( +$©Œs + +as + +$key + => +$v®ue +) { + +129 ià( +$key + == 'id') { + +133 +$v®ue + = +£lf +:: + `»¶aûPrݔt›s +( +$´ojeù +, $v®ue, $´ojeù-> + `g‘Prݔt›s +()); + +134 +Œy + { + +135 +$ih +-> + `£tA‰ribu‹ +( +$´ojeù +, +$rg‘ +, + `¡¹Þow” +( +$key +), +$v®ue +); + +136 } + `ÿtch + ( +BuždExû±iÚ + +$be +) { + +138 ià( +$key + !== "id") { + +139 +throw + +$be +; + +143 + } +} + +153 +public +  +funùiÚ + + $addText +( +$´ojeù +, +$rg‘ +, +$‹xt + = +nuÎ +) { + +154 ià( +$‹xt + ==ð +nuÎ + || + `¡¾’ +( + `Œim +($text)) === 0) { + +157 +$ih + = +IÁro¥eùiÚH–³r +:: + `g‘H–³r +( + `g‘_þass +( +$rg‘ +)); + +158 +$‹xt + = +£lf +:: + `»¶aûPrݔt›s +( +$´ojeù +, $‹xt, $´ojeù-> + `g‘Prݔt›s +()); + +159 +$ih +-> + `addText +( +$´ojeù +, +$rg‘ +, +$‹xt +); + +160 + } +} + +171 +public +  +funùiÚ + + $¡ÜeChžd +( +$´ojeù +, +$·»Á +, +$chžd +, +$g +) { + +172 +$ih + = +IÁro¥eùiÚH–³r +:: + `g‘H–³r +( + `g‘_þass +( +$·»Á +)); + +173 +$ih +-> + `¡ÜeEËm’t +( +$´ojeù +, +$·»Á +, +$chžd +, +$g +); + +174 + } +} + +182 +´iv©e +  + g$´ÝR•ÏûProjeù +; + +183 +´iv©e +  + g$´ÝR•ÏûPrݔt›s +; + +196 +public +  +funùiÚ + + $»¶aûPrݔt›s +( +Projeù + +$´ojeù +, +$v®ue +, +$keys +) { + +198 ià( +$v®ue + ==ð +nuÎ +) { + +199  +nuÎ +; + +205 +£lf +:: +$´ÝR•ÏûPrݔt›s + = +$keys +; + +206 +£lf +:: +$´ÝR•ÏûProjeù + = +$´ojeù +; + +213 +$sb + = + `´eg_»¶aû_ÿÎback +('/\$\{([^}]+)\}/', + `¬¿y +('ProjeùCÚfigu¿tÜ', '»¶aûPrݔtyC®lback'), +$v®ue +); + +214  +$sb +; + +215 + } +} + +221 +´iv©e +  +funùiÚ + + $»¶aûPrݔtyC®lback +( +$m©ches +) + +223 +$´Ý”tyName + = +$m©ches +[1]; + +224 ià(! + `is£t +( +£lf +:: +$´ÝR•ÏûPrݔt›s +[ +$´Ý”tyName +])) { + +225 +£lf +:: +$´ÝR•ÏûProjeù +-> + `log +('Prݔty ${'. +$´Ý”tyName +.'} ha nÙ b“À£t.', +Projeù +:: +MSG_VERBOSE +); + +226  +$m©ches +[0]; + +228 +£lf +:: +$´ÝR•ÏûProjeù +-> + `log +('Prݔty ${'. +$´Ý”tyName +.'} => ' . s–f:: +$´ÝR•ÏûPrݔt›s +[$´Ý”tyName], +Projeù +:: +MSG_DEBUG +); + +230  +£lf +:: +$´ÝR•ÏûPrݔt›s +[ +$´Ý”tyName +]; + +231 + } +} + +240 +public + +funùiÚ + + $cÚfigu»Id +( +$rg‘ +, +$©Œ +) { + +241 ià( + `is£t +( +$©Œ +['id']è&& $©Œ['id'] !=ð +nuÎ +) { + +242 +$this +-> +´ojeù +-> + `addReã»nû +( +$©Œ +['id'], +$rg‘ +); + +244 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/ProjectHandler.php + +1 +cÚfigu¿tÜ + = +$cÚfigu¿tÜ +; + +53 +·»Á +:: + `__cÚ¡ruù +( +$·r£r +, +$·»ÁHªdËr +); + +66 +funùiÚ + + $š™ +( +$g +, +$©Œs +) { + +67 +$def + = +nuÎ +; + +68 +$Çme + = +nuÎ +; + +69 +$id + = +nuÎ +; + +70 +$desc + = +nuÎ +; + +71 +$ba£Dœ + = +nuÎ +; + +74 +$´ojeù + = +$this +-> +cÚfigu¿tÜ +-> +´ojeù +; + +75 +$buždFžeP¬’t + = +$this +-> +cÚfigu¿tÜ +-> +buždFžeP¬’t +; + +77 + `fܗch + ( +$©Œs + +as + +$key + => +$v®ue +) { + +78 ià( +$key + === "default") { + +79 +$def + = +$v®ue +; + +80 } + `–£if + ( +$key + === "name") { + +81 +$Çme + = +$v®ue +; + +82 } + `–£if + ( +$key + === "id") { + +83 +$id + = +$v®ue +; + +84 } + `–£if + ( +$key + === "basedir") { + +85 +$ba£Dœ + = +$v®ue +; + +86 } + `–£if + ( +$key + === "description") { + +87 +$desc + = +$v®ue +; + +89 +throw + +Ãw + + `Ex·tP¬£Exû±iÚ +("Unexpected‡ttribute '$key'"); + +92 ià( +$def + ==ð +nuÎ +) { + +93 +throw + +Ãw + + `Ex·tP¬£Exû±iÚ +("The default‡ttribute of…roject is„equired"); + +95 +$´ojeù +-> + `£tDeçuÉT¬g‘ +( +$def +); + +97 ià( +$Çme + !=ð +nuÎ +) { + +98 +$´ojeù +-> + `£tName +( +$Çme +); + +99 +$´ojeù +-> + `addReã»nû +( +$Çme +, $project); + +102 ià( +$id + !=ð +nuÎ +) { + +103 +$´ojeù +-> + `addReã»nû +( +$id +, $project); + +106 ià( +$desc + !=ð +nuÎ +) { + +107 +$´ojeù +-> + `£tDesütiÚ +( +$desc +); + +110 ià( +$´ojeù +-> + `g‘Prݔty +("´ojeù.ba£dœ"è!=ð +nuÎ +) { + +111 +$´ojeù +-> + `£tBa£dœ +($´ojeù-> + `g‘Prݔty +("project.basedir")); + +113 ià( +$ba£Dœ + ==ð +nuÎ +) { + +114 +$´ojeù +-> + `£tBa£dœ +( +$buždFžeP¬’t +-> + `g‘AbsÞu‹P©h +()); + +117 +$f + = +Ãw + + `PhšgFže +( +$ba£Dœ +); + +118 ià( +$f +-> + `isAbsÞu‹ +()) { + +119 +$´ojeù +-> + `£tBa£dœ +( +$ba£Dœ +); + +121 +$´ojeù +-> + `£tBa£Dœ +($´ojeù-> + `»sÞveFže +( +$ba£Dœ +, +$buždFžeP¬’t +)); + +125 + } +} + +136 +funùiÚ + + $¡¬tEËm’t +( +$Çme +, +$©Œs +) { + +138 +$´ojeù + = +$this +-> +cÚfigu¿tÜ +-> +´ojeù +; + +139 +$ty³s + = +$´ojeù +-> + `g‘D©aTy³Defš™iÚs +(); + +141 ià( +$Çme + == "target") { + +142 +$tf + = +Ãw + + `T¬g‘HªdËr +( +$this +-> +·r£r +, $this, $this-> +cÚfigu¿tÜ +); + +143 +$tf +-> + `š™ +( +$Çme +, +$©Œs +); + +144 } + `–£if + ( + `is£t +( +$ty³s +[ +$Çme +])) { + +145 +$tyf + = +Ãw + + `D©aTy³HªdËr +( +$this +-> +·r£r +, $this, $this-> +cÚfigu¿tÜ +); + +146 +$tyf +-> + `š™ +( +$Çme +, +$©Œs +); + +148 +$tf + = +Ãw + + `TaskHªdËr +( +$this +-> +·r£r +, $this, $this-> +cÚfigu¿tÜ +); + +149 +$tf +-> + `š™ +( +$Çme +, +$©Œs +); + +151 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/RootHandler.php + +1 +cÚfigu¿tÜ + = +$cÚfigu¿tÜ +; + +58 +·»Á +:: + `__cÚ¡ruù +( +$·r£r +, +$this +); + +74 +funùiÚ + + $¡¬tEËm’t +( +$g +, +$©Œs +) { + +75 ià( +$g + === "project") { + +76 +$ph + = +Ãw + + `ProjeùHªdËr +( +$this +-> +·r£r +, $this, $this-> +cÚfigu¿tÜ +); + +77 +$ph +-> + `š™ +( +$g +, +$©Œs +); + +79 +throw + +Ãw + + `Ex·tP¬£Exû±iÚ +("UÃx³ùedag <$g> iÀtÝ-Ëv– oàbužd fže.", +$this +-> +·r£r +-> + `g‘LoÿtiÚ +()); + +81 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/TargetHandler.php + +1 +cÚfigu¿tÜ + = +$cÚfigu¿tÜ +; + +78 +funùiÚ + + $š™ +( +$g +, +$©Œs +) { + +79 +$Çme + = +nuÎ +; + +80 +$d•’ds + = ""; + +81 +$ifCÚd + = +nuÎ +; + +82 +$uÆessCÚd + = +nuÎ +; + +83 +$id + = +nuÎ +; + +84 +$desütiÚ + = +nuÎ +; + +86 + `fܗch +( +$©Œs + +as + +$key + => +$v®ue +) { + +87 ià( +$key +==="name") { + +88 +$Çme + = ( +¡ršg +è +$v®ue +; + +89 } ià( +$key +==="depends") { + +90 +$d•’ds + = ( +¡ršg +è +$v®ue +; + +91 } ià( +$key +==="if") { + +92 +$ifCÚd + = ( +¡ršg +è +$v®ue +; + +93 } ià( +$key +==="unless") { + +94 +$uÆessCÚd + = ( +¡ršg +è +$v®ue +; + +95 } ià( +$key +==="id") { + +96 +$id + = ( +¡ršg +è +$v®ue +; + +97 } ià( +$key +==="description") { + +98 +$desütiÚ + = ( +¡ršg +) +$v®ue +; + +100 +throw + +Ãw + + `Ex·tP¬£Exû±iÚ +("UÃx³ùed‡‰ribu‹ '$key'", +$this +-> +·r£r +-> + `g‘LoÿtiÚ +()); + +104 ià( +$Çme + ==ð +nuÎ +) { + +105 +throw + +Ãw + + `Ex·tP¬£Exû±iÚ +("rg‘ƒËm’ˆ­³¬ w™houˆ¨Çm©Œibu‹", +$this +-> +·r£r +-> + `g‘LoÿtiÚ +()); + +109 +$´ojeù + = +$this +-> +cÚfigu¿tÜ +-> +´ojeù +; + +111 +$this +-> +rg‘ + = +Ãw + + `T¬g‘ +(); + +112 +$this +-> +rg‘ +-> + `£tName +( +$Çme +); + +113 +$this +-> +rg‘ +-> + `£tIf +( +$ifCÚd +); + +114 +$this +-> +rg‘ +-> + `£tUÆess +( +$uÆessCÚd +); + +115 +$this +-> +rg‘ +-> + `£tDesütiÚ +( +$desütiÚ +); + +117 +$´ojeù +-> + `addT¬g‘ +( +$Çme +, +$this +-> +rg‘ +); + +119 ià( +$id + !=ð +nuÎ + && $id !== "") { + +120 +$´ojeù +-> + `addReã»nû +( +$id +, +$this +-> +rg‘ +); + +123 ià( + `¡¾’ +( +$d•’ds +) > 0) { + +124 +$this +-> +rg‘ +-> + `£tD•’ds +( +$d•’ds +); + +127 + } +} + +136 +funùiÚ + + $¡¬tEËm’t +( +$Çme +, +$©Œs +) { + +138 +$´ojeù + = +$this +-> +cÚfigu¿tÜ +-> +´ojeù +; + +139 +$ty³s + = +$´ojeù +-> + `g‘D©aTy³Defš™iÚs +(); + +141 ià( + `is£t +( +$ty³s +[ +$Çme +])) { + +142 +$th + = +Ãw + + `D©aTy³HªdËr +( +$this +-> +·r£r +, $this, $this-> +cÚfigu¿tÜ +, $this-> +rg‘ +); + +143 +$th +-> + `š™ +( +$Çme +, +$©Œs +); + +145 +$tmp + = +Ãw + + `TaskHªdËr +( +$this +-> +·r£r +, $this, $this-> +cÚfigu¿tÜ +, $this-> +rg‘ +, +nuÎ +, $this->target); + +146 +$tmp +-> + `š™ +( +$Çme +, +$©Œs +); + +148 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/parser/TaskHandler.php + +1 +cÚfigu¿tÜ + = +$cÚfigu¿tÜ +; + +105 +$this +-> +cڏš” + = +$cڏš” +; + +106 +$this +-> +·»ÁW¿µ” + = +$·»ÁW¿µ” +; + +107 +$this +-> +rg‘ + = +$rg‘ +; + +128 +funùiÚ + + $š™ +( +$g +, +$©Œs +) { + +130 +Œy + { + +131 +$cÚfigu¿tÜ + = +$this +-> +cÚfigu¿tÜ +; + +132 +$´ojeù + = +$this +-> +cÚfigu¿tÜ +-> +´ojeù +; + +134 +$this +-> +sk + = +$´ojeù +-> + `ü—‹Task +( +$g +); + +135 } + `ÿtch + ( +BuždExû±iÚ + +$be +) { + +138 + `´št +("Sw®lowšgƒxû±iÚ: ". +$be +-> + `g‘Mes§ge +() . "\n"); + +142 ià( +$this +-> +sk + ==ð +nuÎ +) { + +143 +$this +-> +sk + = +Ãw + + `UnknownEËm’t +( +$g +); + +144 +$this +-> +sk +-> + `£tProjeù +( +$´ojeù +); + +145 +$this +-> +sk +-> + `£tTaskTy³ +( +$g +); + +146 +$this +-> +sk +-> + `£tTaskName +( +$g +); + +151 +$this +-> +sk +-> + `£tLoÿtiÚ +($this-> +·r£r +-> + `g‘LoÿtiÚ +()); + +152 +$cÚfigu¿tÜ +-> + `cÚfigu»Id +( +$this +-> +sk +, +$©Œs +); + +154 ià( +$this +-> +cڏš” +) { + +155 +$this +-> +cڏš” +-> + `addTask +($this-> +sk +); + +162 ià( +$this +-> +rg‘ + !=ð +nuÎ +) { + +163 +$this +-> +sk +-> + `£tOwnšgT¬g‘ +($this-> +rg‘ +); + +164 +$this +-> +sk +-> + `š™ +(); + +165 +$this +-> +w¿µ” + = $this-> +sk +-> + `g‘RuÁimeCÚfigu¿bËW¿µ” +(); + +166 +$this +-> +w¿µ” +-> + `£tA‰ribu‹s +( +$©Œs +); + +177 +$this +-> +sk +-> + `š™ +(); + +178 +$cÚfigu¿tÜ +-> + `cÚfigu» +( +$this +-> +sk +, +$©Œs +, +$´ojeù +); + +180 + } +} + +185 +´Ùeùed + +funùiÚ + + $fšished +() { + +186 ià( +$this +-> +sk + !=ð +nuÎ + && $this-> +rg‘ + ==ðnuÎ && $this-> +cڏš” + ===‚ull) { + +187 +Œy + { + +188 +$this +-> +sk +-> + `³rfÜm +(); + +189 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +190 +$this +-> +sk +-> + `log +( +$e +-> + `g‘Mes§ge +(), +Projeù +:: +MSG_ERR +); + +191 +throw + +$e +; + +194 + } +} + +201 +funùiÚ + + $ch¬aù”s +( +$d©a +) { + +202 ià( +$this +-> +w¿µ” + ==ð +nuÎ +) { + +203 +$cÚfigu¿tÜ + = +$this +-> +cÚfigu¿tÜ +; + +204 +$´ojeù + = +$this +-> +cÚfigu¿tÜ +-> +´ojeù +; + +205 +Œy + { + +206 +$cÚfigu¿tÜ +-> + `addText +( +$´ojeù +, +$this +-> +sk +, +$d©a +); + +207 } + `ÿtch + ( +BuždExû±iÚ + +$exc +) { + +208 +throw + +Ãw + + `Ex·tP¬£Exû±iÚ +( +$exc +-> + `g‘Mes§ge +(), +$this +-> +·r£r +-> + `g‘LoÿtiÚ +()); + +211 +$this +-> +w¿µ” +-> + `addText +( +$d©a +); + +213 + } +} + +222 +funùiÚ + + $¡¬tEËm’t +( +$Çme +, +$©Œs +) { + +223 +$´ojeù + = +$this +-> +cÚfigu¿tÜ +-> +´ojeù +; + +224 ià( +$this +-> +sk + +š¡ªûof + +TaskCڏš” +) { + +226 +$th + = +Ãw + + `TaskHªdËr +( +$this +-> +·r£r +, $this, $this-> +cÚfigu¿tÜ +, $this-> +sk +, $this-> +w¿µ” +, $this-> +rg‘ +); + +227 +$th +-> + `š™ +( +$Çme +, +$©Œs +); + +230 +$tmp + = +Ãw + + `Ne¡edEËm’tHªdËr +( +$this +-> +·r£r +, $this, $this-> +cÚfigu¿tÜ +, $this-> +sk +, $this-> +w¿µ” +, $this-> +rg‘ +); + +231 +$tmp +-> + `š™ +( +$Çme +, +$©Œs +); + +233 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/BufferedReader.php + +1 +š + = +$»ad” +; + +52 +$this +-> +bufãrSize + = +$buffsize +; + +60 +funùiÚ + + $»ad +( +$Ën + = +nuÎ +) { + +63 ià( +$Ën + ==ð +nuÎ +è$ËÀð +$this +-> +bufãrSize +; + +65 iàÐ( +$d©a + = +$this +-> +š +-> + `»ad +( +$Ën +)) !== -1 ) { + +68 ià(! +$this +-> +š +-> + `eof +()) { + +70 +$nÙV®idP¬t + = + `¡¼chr +( +$d©a +, "\n"); + +71 +$nÙV®idP¬tSize + = + `¡¾’ +( +$nÙV®idP¬t +); + +73 iàÐ +$nÙV®idP¬tSize + > 1 ) { + +76 +$d©aSize + = + `¡¾’ +( +$d©a +); + +77 +$v®idSize + = +$d©aSize + - +$nÙV®idP¬tSize + + 1; + +79 +$d©a + = + `sub¡r +($d©a, 0, +$v®idSize +); + +82 +$this +-> +š +-> + `sk +(- +$nÙV®idP¬tSize ++1); + +87  +$d©a +; + +88 + } +} + +90 +funùiÚ + + $sk +( +$n +) { + +91  +$this +-> +š +-> + `sk +( +$n +); + +92 + } +} + +94 +funùiÚ + + $»£t +() { + +95  +$this +-> +š +-> + `»£t +(); + +96 + } +} + +98 +funùiÚ + + $þo£ +() { + +99  +$this +-> +š +-> + `þo£ +(); + +100 + } +} + +102 +funùiÚ + + $ݒ +() { + +103  +$this +-> +š +-> + `ݒ +(); + +104 + } +} + +109 +funùiÚ + + $»adLše +() { + +110 +$lše + = +nuÎ +; + +111  ( +$ch + = +$this +-> + `»adCh¬ +()) !== -1 ) { + +112 iàÐ +$ch + === "\n" ) { + +115 +$lše + .ð +$ch +; + +119 iàÐ +$lše + ==ð +nuÎ + && +$ch + !== -1 ) + +122  +$lše +; + +123 + } +} + +129 +funùiÚ + + $»adCh¬ +() { + +131 iàÐ +$this +-> +bufãr + ==ð +nuÎ + ) { + +133 +$»ad + = +$this +-> +š +-> + `»ad +($this-> +bufãrSize +); + +134 ià( +$»ad + === -1) { + +135 +$ch + = -1; + +137 +$this +-> +bufãr + = +$»ad +; + +138  +$this +-> + `»adCh¬ +(); + +144 +$ch + = ( +$this +-> +bufãr + !=ð""è? $this->bufãr{$this-> +bufãrPos +} : ''; + +145 +$this +-> +bufãrPos +++; + +146 iàÐ +$this +-> +bufãrPos + >ð + `¡¾’ +($this-> +bufãr +) ) { + +147 +$this +-> +bufãr + = +nuÎ +; + +148 +$this +-> +bufãrPos + = 0; + +152  +$ch +; + +153 + } +} + +161 +funùiÚ + + $eof +() { + +162  +$this +-> +š +-> + `eof +(); + +163 + } +} + +165 +funùiÚ + + $g‘Resourû +() { + +166  +$this +-> +š +-> + `g‘Resourû +(); + +167 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/BufferedWriter.php + +1 +out + = +$wr™” +; + +45 +$this +-> +bufãrSize + = +$buffsize +; + +48 +public + +funùiÚ + + $wr™e +( +$buf +, +$off + = +nuÎ +, +$Ën + =‚ull) { + +49  +$this +-> +out +-> + `wr™e +( +$buf +, +$off +, +$Ën +); + +50 + } +} + +52 +public + +funùiÚ + + $ÃwLše +() { + +53 +$this +-> + `wr™e +( +PHP_EOL +); + +54 + } +} + +56 +public + +funùiÚ + + $g‘Resourû +() { + +57  +$this +-> +out +-> + `g‘Resourû +(); + +58 + } +} + +60 +public + +funùiÚ + + $æush +() { + +61 +$this +-> +out +-> + `æush +(); + +62 + } +} + +67 +public + +funùiÚ + + $þo£ +() { + +68  +$this +-> +out +-> + `þo£ +(); + +69 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/ConsoleReader.php + +1 +fže + = +$fže +; + +46 } + `–£if + ( + `is_¡ršg +( +$fže +)) { + +47 +$this +-> +fže + = +Ãw + + `PhšgFže +( +$fže +); + +49 +throw + +Ãw + + `Exû±iÚ +("Invalid‡rgumentype for \$file."); + +52 +$¡»am + = @ + `fݒ +( +$this +-> +fže +-> + `g‘AbsÞu‹P©h +(), "rb"); + +53 ià( +$¡»am + ==ð +çl£ +) { + +54 +throw + +Ãw + + `IOExû±iÚ +("UÇbˁØÝ’ " . +$this +-> +fže +-> + `__toSŒšg +(è. " f܄—dšg: " . +$php_”rÜmsg +); + +57 +·»Á +:: + `__cÚ¡ruù +( +$¡»am +); + +64 +public + +funùiÚ + + $__toSŒšg +() { + +65  +$this +-> +fže +-> + `g‘P©h +(); + +66 + } +} + +72 +public + +funùiÚ + + $m¬kSuµÜ‹d +() { + +73  +Œue +; + +74 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/FileOutputStream.php + +1 +fže + = +$fže +; + +47 } + `–£if + ( + `is_¡ršg +( +$fže +)) { + +48 +$this +-> +fže + = +Ãw + + `PhšgFže +( +$fže +); + +50 +throw + +Ãw + + `Exû±iÚ +("Invalid‡rgumentype for \$file."); + +52 ià( +$­³nd +) { + +53 +$¡»am + = @ + `fݒ +( +$this +-> +fže +-> + `g‘AbsÞu‹P©h +(), "ab"); + +55 +$¡»am + = @ + `fݒ +( +$this +-> +fže +-> + `g‘AbsÞu‹P©h +(), "wb"); + +57 ià( +$¡»am + ==ð +çl£ +) { + +58 +throw + +Ãw + + `IOExû±iÚ +("UÇbˁØÝ’ " . +$this +-> +fže +-> + `__toSŒšg +(è. " fÜ wr™šg: " . +$php_”rÜmsg +); + +60 +·»Á +:: + `__cÚ¡ruù +( +$¡»am +); + +67 +public + +funùiÚ + + $__toSŒšg +() { + +68  +$this +-> +fže +-> + `g‘P©h +(); + +69 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/FileReader.php + +1 + `g‘P©h +(); + +179 ià(!@ + `fže_exi¡s +( +$¡rP©h +è&& ! + `is_dœ +($strPath)) { + +180 +$¡rP©h + = +$f +-> + `g‘P¬’t +(); + +181 ià( +$¡rP©h + ==ð +nuÎ + || ! + `is_dœ +($strPath)) { + +182 +$¡rP©h + = +Phšg +:: + `g‘Prݔty +("user.dir"); + +187 ià(! +$wr™e +) { + +188  ( +boޗn +è@ + `is_»adabË +( +$¡rP©h +); + +190  ( +boޗn +è@ + `is_wr™abË +( +$¡rP©h +); + +192 + } +} + +199 +funùiÚ + + $ÿnD–‘e +( +PhšgFže + +$f +) + +201 + `þ—r¡©ÿche +(); + +202 +$dœ + = + `dœÇme +( +$f +-> + `g‘AbsÞu‹P©h +()); + +203  ( +boÞ +è@ + `is_wr™abË +( +$dœ +); + +204 + } +} + +211 +funùiÚ + + $g‘La¡Modif›dTime +( +PhšgFže + +$f +) { + +213 ià(! +$f +-> + `exi¡s +()) { + +217 @ + `þ—r¡©ÿche +(); + +218 +$¡rP©h + = ( +¡ršg +è +$f +-> + `g‘P©h +(); + +219 +$mtime + = @ + `fžemtime +( +$¡rP©h +); + +220 ià( +çl£ + ==ð +$mtime +) { + +222 +$msg + = "FileSystem::Filemtime() FAILED. Cannot can‚ot get modifiedime of $strPath. $php_errormsg"; + +223 +throw + +Ãw + + `Exû±iÚ +( +$msg +); + +225  (è +$mtime +; + +227 + } +} + +234 +funùiÚ + + $g‘L’gth +( +PhšgFže + +$f +) { + +235 +$¡rP©h + = ( +¡ršg +è +$f +-> + `g‘AbsÞu‹P©h +(); + +236 +$fs + = + `fžesize +(( +¡ršg +è +$¡rP©h +); + +237 ià( +$fs + !=ð +çl£ +) { + +238  +$fs +; + +240 +$msg + = "FileSystem::Read() FAILED. Cannot get filesize of $strPath. $php_errormsg"; + +241 +throw + +Ãw + + `Exû±iÚ +( +$msg +); + +243 + } +} + +257 +funùiÚ + + $ü—‹NewFže +( +$¡rP©hÇme +) { + +258 ià(@ + `fže_exi¡s +( +$¡rP©hÇme +)) + +259  +çl£ +; + +262 +$å + = @ + `fݒ +( +$¡rP©hÇme +, "w"); + +263 ià( +$å + ==ð +çl£ +) { + +264 +throw + +Ãw + + `IOExû±iÚ +("The file \"$strPathname\" could‚ot be created"); + +266 @ + `fþo£ +( +$å +); + +267  +Œue +; + +268 + } +} + +274 +funùiÚ + + $d–‘e +( +PhšgFže + +$f +) { + +275 ià( +$f +-> + `isDœeùÜy +()) { + +276  +$this +-> + `rmdœ +( +$f +-> + `g‘P©h +()); + +278  +$this +-> + `uƚk +( +$f +-> + `g‘P©h +()); + +280 + } +} + +287 +funùiÚ + + $d–‘eOnEx™ +( +$f +) { + +288 +throw + +Ãw + + `Exû±iÚ +("deleteOnExit()‚ot implemented by†ocal fs driver"); + +289 + } +} + +296 +funùiÚ + + $li¡Dœ +( +PhšgFže + +$f +) { + +297 +$¡rP©h + = ( +¡ršg +è +$f +-> + `g‘AbsÞu‹P©h +(); + +298 +$d + = @ + `dœ +( +$¡rP©h +); + +299 ià(! +$d +) { + +300  +nuÎ +; + +302 +$li¡ + = + `¬¿y +(); + +303  +$’Œy + = +$d +-> + `»ad +()) { + +304 ià( +$’Œy + != "." && $entry != "..") { + +305 + `¬¿y_push +( +$li¡ +, +$’Œy +); + +308 +$d +-> + `þo£ +(); + +309 + `un£t +( +$d +); + +310  +$li¡ +; + +311 + } +} + +317 +funùiÚ + + $ü—‹DœeùÜy +(& +$f +) { + +318  @ + `mkdœ +( +$f +-> + `g‘AbsÞu‹P©h +(),0755); + +319 + } +} + +331 +funùiÚ + + $»Çme +( +PhšgFže + +$f1 +, PhšgFž +$f2 +) { + +333 +$¤c + = +$f1 +-> + `g‘AbsÞu‹P©h +(); + +334 +$de¡ + = +$f2 +-> + `g‘AbsÞu‹P©h +(); + +335 ià( +çl£ + ==ð@ + `»Çme +( +$¤c +, +$de¡ +)) { + +336 +$msg + = "Rename FAILED. Cannot„ename $srco $dest. $php_errormsg"; + +337 +throw + +Ãw + + `Exû±iÚ +( +$msg +); + +339 + } +} + +348 +funùiÚ + + $£tLa¡Modif›dTime +( +PhšgFže + +$f +, +$time +) { + +349 +$·th + = +$f +-> + `g‘P©h +(); + +350 +$sucûss + = @ + `touch +( +$·th +, +$time +); + +351 ià(! +$sucûss +) { + +352 +throw + +Ãw + + `Exû±iÚ +("Could‚فouch '" . +$·th + . "' dueo: $php_errormsg"); + +354 + } +} + +361 +funùiÚ + + $£tR—dOÆy +( +$f +) { + +362 +throw + +Ãw + + `Exû±iÚ +("setReadonle()‚ot implemented by†ocal fs driver"); + +363 + } +} + +370 +funùiÚ + + $li¡RoÙs +() { + +371 +throw + +Ãw + + `Exû±iÚ +("SYSTEM ERROR [listRoots()‚ot implemented by†ocal fs driver]"); + +372 + } +} + +379 +funùiÚ + + $com·» +( +$f1 +, +$f2 +) { + +380 +throw + +Ãw + + `Exû±iÚ +("SYSTEM ERROR [compare()‚ot implemented by†ocal fs driver]"); + +381 + } +} + +392 +funùiÚ + + $cÝy +( +PhšgFže + +$¤c +, PhšgFž +$de¡ +) { + +393 +glob® + +$php_”rÜmsg +; + +394 +$¤cP©h + = +$¤c +-> + `g‘AbsÞu‹P©h +(); + +395 +$de¡P©h + = +$de¡ +-> + `g‘AbsÞu‹P©h +(); + +397 ià( +çl£ + ==ð@ + `cÝy +( +$¤cP©h +, +$de¡P©h +)) { + +399 +$msg + = "FileSystem::copy() FAILED. Cannot copy $srcPatho $destPath. $php_errormsg"; + +400 +throw + +Ãw + + `Exû±iÚ +( +$msg +); + +403 +Œy + { + +404 +$de¡ +-> + `£tMode +( +$¤c +-> + `g‘Mode +()); + +405 } + `ÿtch +( +Exû±iÚ + +$exc +) { + +409 + } +} + +420 +funùiÚ + + $chown +( +$·thÇme +, +$u£r +) { + +421 ià( +çl£ + ==ð@ + `chown +( +$·thÇme +, +$u£r +)) { + +422 +$msg + = "FžeSy¡em::chown(èFAILED. CªnÙ chowÀ$·thÇme. U£¸$u£r." . ( + `is£t +( +$php_”rÜmsg +) ? ' ' . $php_errormsg : ""); + +423 +throw + +Ãw + + `Exû±iÚ +( +$msg +); + +425 + } +} + +438 +funùiÚ + + $chmod +( +$·thÇme +, +$mode +) { + +439 +$¡r_mode + = + `decoù +( +$mode +); + +440 ià( +çl£ + ==ð@ + `chmod +( +$·thÇme +, +$mode +)) { + +441 +$msg + = "FžeSy¡em::chmod(èFAILED. CªnÙ chmod $·thÇme. Mod$¡r_mode." . ( + `is£t +( +$php_”rÜmsg +) ? ' ' . $php_errormsg : ""); + +442 +throw + +Ãw + + `Exû±iÚ +( +$msg +); + +444 + } +} + +451 +funùiÚ + + $lock +( +PhšgFže + +$f +) { + +452 +$fž’ame + = +$f +-> + `g‘P©h +(); + +453 +$å + = @ + `fݒ +( +$fž’ame +, "w"); + +454 +$»suÉ + = @ + `æock +( +$å +, +LOCK_EX +); + +455 @ + `fþo£ +( +$å +); + +456 ià(! +$»suÉ +) { + +457 +throw + +Ãw + + `Exû±iÚ +("Could‚ot†ock file '$filename'"); + +459 + } +} + +467 +funùiÚ + + $uÆock +( +PhšgFže + +$f +) { + +468 +$fž’ame + = +$f +-> + `g‘P©h +(); + +469 +$å + = @ + `fݒ +( +$fž’ame +, "w"); + +470 +$»suÉ + = @ + `æock +( +$å +, +LOCK_UN +); + +471 + `fþo£ +( +$å +); + +472 ià(! +$»suÉ +) { + +473 +throw + +Ãw + + `Exû±iÚ +("Could‚ot unlock file '$filename'"); + +475 + } +} + +485 +funùiÚ + + $uƚk +( +$fže +) { + +486 +glob® + +$php_”rÜmsg +; + +487 ià( +çl£ + ==ð@ + `uƚk +( +$fže +)) { + +488 +$msg + = "FileSystem::unlink() FAILED. Cannot unlink '$file'. $php_errormsg"; + +489 +throw + +Ãw + + `Exû±iÚ +( +$msg +); + +491 + } +} + +502 +funùiÚ + + $symlšk +( +$rg‘ +, +$lšk +) { + +507 ià( +çl£ + ==ð@ + `symlšk +( +$rg‘ +, +$lšk +)) { + +509 +$msg + = "FileSystem::Symlink() FAILED. Cannot symlink '$target'o '$link'. $php_errormsg"; + +510 +throw + +Ãw + + `Exû±iÚ +( +$msg +); + +513 + } +} + +522 +funùiÚ + + $touch +( +$fže +, +$time + = +nuÎ +) { + +523 +glob® + +$php_”rÜmsg +; + +525 ià( +nuÎ + ==ð +$time +) { + +526 +$”rÜ + = @ + `touch +( +$fže +); + +528 +$”rÜ + = @ + `touch +( +$fže +, +$time +); + +531 ià( +çl£ + ==ð +$”rÜ +) { + +533 +$msg + = "FileSystem::touch() FAILED. Cannotouch '$file'. $php_errormsg"; + +534 +throw + +Ãw + + `Exû±iÚ +( +$msg +); + +536 + } +} + +547 +funùiÚ + + $rmdœ +( +$dœ +, +$chžd»n + = +çl£ +) { + +548 +glob® + +$php_”rÜmsg +; + +551 ià( +çl£ + ==ð +$chžd»n +) { + +553 ià( +çl£ + ==ð@ + `rmdœ +( +$dœ +)) { + +555 +$msg + = "FileSystem::rmdir() FAILED. Cannot„mdir $dir. $php_errormsg"; + +556 +throw + +Ãw + + `Exû±iÚ +( +$msg +); + +561 +$hªdË + = @ + `ݒdœ +( +$dœ +); + +563 ià( +çl£ + ==ð +$hªdË +) { + +565 +$msg + = "FileSystem::rmdir() FAILED. Cannot opendir() $dir. $php_errormsg"; + +566 +throw + +Ãw + + `Exû±iÚ +( +$msg +); + +571  +çl£ + !=ð( +$’Œy + = @ + `»addœ +( +$hªdË +))) { + +573 ià( +$’Œy + != '.' && $entry != '..') { + +579 ià( + `¡½os +( + `¡¼ev +( +$dœ +), +DIRECTORY_SEPARATOR +) === 0) { + +580 +$Ãxt_’Œy + = +$dœ + . +$’Œy +; + +582 +$Ãxt_’Œy + = +$dœ + . +DIRECTORY_SEPARATOR + . +$’Œy +; + +589 ià( +çl£ + =ð@ + `is_dœ +( +$Ãxt_’Œy +)) { + +591 +Œy + { + +592 +£lf +:: + `uƚk +( +$Ãxt_’Œy +); + +593 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +594 +$msg + = "FžeSy¡em::Rmdœ(èFAILED. CªnÙ FžeSy¡em::Uƚk(è$Ãxt_’Œy. ". +$e +-> + `g‘Mes§ge +(); + +595 +throw + +Ãw + + `Exû±iÚ +( +$msg +); + +600 +Œy + { + +601 +£lf +:: + `rmdœ +( +$Ãxt_’Œy +, +Œue +); + +602 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +603 +$msg + = "FžeSy¡em::rmdœ(èFAILED. CªnÙ FžeSy¡em::rmdœ(è$Ãxt_’Œy. ". +$e +-> + `g‘Mes§ge +(); + +604 +throw + +Ãw + + `Exû±iÚ +( +$msg +); + +613 @ + `þo£dœ +( +$hªdË +); + +615 ià( +çl£ + ==ð@ + `rmdœ +( +$dœ +)) { + +617 +$msg + = "FileSystem::rmdir() FAILED. Cannot„mdir $dir. $php_errormsg"; + +618 +throw + +Ãw + + `Exû±iÚ +( +$msg +); + +623 + } +} + +634 +funùiÚ + + $umask +( +$mode +) { + +635 +glob® + +$php_”rÜmsg +; + +641 +$¡r_mode + = + `decoù +( +$mode +); + +643 ià( +çl£ + ==ð@ + `umask +( +$mode +)) { + +645 +$msg + = "FileSystem::Umask() FAILED. Value $mode. $php_errormsg"; + +646 +throw + +Ãw + + `Exû±iÚ +( +$msg +); + +648 + } +} + +663 +funùiÚ + + $com·»MTimes +( +$fže1 +, +$fže2 +) { + +665 +$mtime1 + = + `fžemtime +( +$fže1 +); + +666 +$mtime2 + = + `fžemtime +( +$fže2 +); + +668 ià( +$mtime1 + ==ð +çl£ +) { + +670 +$msg + = "FileSystem::compareMTimes() FAILED. Cannot can‚ot get modifiedime of $file1."; + +671 +throw + +Ãw + + `Exû±iÚ +( +$msg +); + +672 } + `–£if + ( +$mtime2 + ==ð +çl£ +) { + +674 +$msg + = "FileSystem::compareMTimes() FAILED. Cannot can‚ot get modifiedime of $file2."; + +675 +throw + +Ãw + + `Exû±iÚ +( +$msg +); + +678 ià( +$mtime1 + =ð +$mtime2 +) { + +681  ( +$mtime1 + < +$mtime2 +) ? -1 : 1; + +684 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/FileWriter.php + +1 +š + = +$š +; + +39 +public + +funùiÚ + + $£tR—d” +( +R—d” + +$š +) { + +40 +$this +-> +š + = +$š +; + +41 + } +} + +43 +public + +funùiÚ + + $sk +( +$n +) { + +44  +$this +-> +š +-> + `sk +( +$n +); + +45 + } +} + +52 +public + +funùiÚ + + $»ad +( +$Ën + = +nuÎ +) { + +53  +$this +-> +š +-> + `»ad +( +$Ën +); + +54 + } +} + +56 +public + +funùiÚ + + $»£t +() { + +57  +$this +-> +š +-> + `»£t +(); + +58 + } +} + +60 +public + +funùiÚ + + $þo£ +() { + +61  +$this +-> +š +-> + `þo£ +(); + +62 + } +} + +64 +funùiÚ + + $g‘Resourû +() { + +65  +$this +-> +š +-> + `g‘Resourû +(); + +66 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/IOException.php + +1 +¡»am + = +$¡»am +; + +59 +public + +funùiÚ + + $sk +( +$n +) { + +60 +$¡¬t + = +$this +-> +cu¼’tPos™iÚ +; + +62 +$»t + = @ + `f£ek +( +$this +-> +¡»am +, +$n +, +SEEK_CUR +); + +63 iàÐ +$»t + === -1 ) + +66 +$this +-> +cu¼’tPos™iÚ + = + `á–l +($this-> +¡»am +); + +68 iàÐ +$¡¬t + > +$this +-> +cu¼’tPos™iÚ + ) + +69 +$sk³d + = +$¡¬t + - +$this +-> +cu¼’tPos™iÚ +; + +71 +$sk³d + = +$this +-> +cu¼’tPos™iÚ + - +$¡¬t +; + +73  +$sk³d +; + +74 + } +} + +81 +public + +funùiÚ + + $»ad +( +$Ën + = +nuÎ +) { + +83 ià( +$this +-> + `eof +()) { + +87 ià( +$Ën + ==ð +nuÎ +) { + +88 +$out + = ""; + +89 ! +$this +-> + `eof +()) { + +90 +$out + .ð + `ä—d +( +$this +-> +¡»am +, 8192); + +91 +$this +-> +cu¼’tPos™iÚ + = + `á–l +($this-> +¡»am +); + +94 +$out + = + `ä—d +( +$this +-> +¡»am +, +$Ën +); + +95 +$this +-> +cu¼’tPos™iÚ + = + `á–l +($this-> +¡»am +); + +98  +$out +; + +99 + } +} + +105 +public + +funùiÚ + + $m¬k +() { + +106 ià(! +$this +-> + `m¬kSuµÜ‹d +()) { + +107 +throw + +Ãw + + `IOExû±iÚ +( + `g‘_þass +( +$this +) . " does‚ot support mark()‡nd„eset() methods."); + +109 +$this +-> +m¬k + = $this-> +cu¼’tPos™iÚ +; + +110 + } +} + +116 +public + +funùiÚ + + $m¬kSuµÜ‹d +() { + +117  +çl£ +; + +118 + } +} + +124 +funùiÚ + + $»£t +() { + +125 ià(! +$this +-> + `m¬kSuµÜ‹d +()) { + +126 +throw + +Ãw + + `IOExû±iÚ +( + `g‘_þass +( +$this +) . " does‚ot support mark()‡nd„eset() methods."); + +129 + `f£ek +( +$this +-> +¡»am +, +SEEK_SET +, $this-> +m¬k +); + +130 +$this +-> +m¬k + = 0; + +131 + } +} + +137 +public + +funùiÚ + + $þo£ +() { + +138 ià( +$this +-> +¡»am + ==ð +nuÎ +) { + +141 ià( +çl£ + ==ð@ + `fþo£ +( +$this +-> +¡»am +)) { + +143 +$msg + = "CªnÙ fþo£ " . +$this +-> +fže +-> + `__toSŒšg +() . " $php_errormsg"; + +144 +throw + +Ãw + + `IOExû±iÚ +( +$msg +); + +146 +$this +-> +¡»am + = +nuÎ +; + +147 + } +} + +153 +public + +funùiÚ + + $eof +() { + +154  + `ãof +( +$this +-> +¡»am +); + +155 + } +} + +166 +public + +funùiÚ + + $»adIÁo +(& +$rBufãr +) { + +167 +$rBufãr + = +$this +-> + `»ad +(); + +168 +$this +-> + `þo£ +(); + +169 + } +} + +175 +public + +funùiÚ + + $__toSŒšg +() { + +176  ( +¡ršg +è +$this +-> +¡»am +; + +177 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/InputStreamReader.php + +1 +šSŒ—m + = +$šSŒ—m +; + +51 +public + +funùiÚ + + $þo£ +() { + +52  +$this +-> +šSŒ—m +-> + `þo£ +(); + +53 + } +} + +59 +public + +funùiÚ + + $sk +( +$n +) { + +60  +$this +-> +šSŒ—m +-> + `sk +( +$n +); + +61 + } +} + +68 +public + +funùiÚ + + $»ad +( +$Ën + = +nuÎ +) { + +69  +$this +-> +šSŒ—m +-> + `»ad +( +$Ën +); + +70 + } +} + +76 +public + +funùiÚ + + $m¬k +() { + +77 +$this +-> +šSŒ—m +-> + `m¬k +(); + +78 + } +} + +84 +public + +funùiÚ + + $m¬kSuµÜ‹d +() { + +85  +$this +-> +šSŒ—m +-> + `m¬kSuµÜ‹d +(); + +86 + } +} + +92 +public + +funùiÚ + + $»£t +() { + +93 +$this +-> +šSŒ—m +-> + `»£t +(); + +94 + } +} + +100 +public + +funùiÚ + + $eof +() { + +101  +$this +-> +šSŒ—m +-> + `eof +(); + +102 + } +} + +115 +public + +funùiÚ + + $»adIÁo +(& +$rBufãr +) { + +116  +$this +-> +šSŒ—m +-> + `»adIÁo +( +$rBufãr +); + +117 + } +} + +123 +public + +funùiÚ + + $g‘Resourû +() { + +124  +$this +-> +šSŒ—m +-> + `__toSŒšg +(); + +125 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/OutputStream.php + +1 +¡»am + = +$¡»am +; + +50 +public + +funùiÚ + + $þo£ +() { + +51 ià( +$this +-> +¡»am + ==ð +nuÎ +) { + +54 +$this +-> + `æush +(); + +55 ià( +çl£ + ==ð@ + `fþo£ +( +$this +-> +¡»am +)) { + +56 +$msg + = "CªnÙ clo£ " . +$this +-> + `g‘Resourû +() . ": $php_errormsg"; + +57 +throw + +Ãw + + `IOExû±iÚ +( +$msg +); + +59 +$this +-> +¡»am + = +nuÎ +; + +60 + } +} + +67 +public + +funùiÚ + + $æush +() { + +68 ià( +çl£ + ==ð@ + `fæush +( +$this +-> +¡»am +)) { + +69 +throw + +Ãw + + `IOExû±iÚ +("Could‚Ù flush sŒ—m: " . +$php_”rÜmsg +); + +71 + } +} + +82 +public + +funùiÚ + + $wr™e +( +$buf +, +$off + = +nuÎ +, +$Ën + =‚ull) { + +83 iàÐ +$off + ==ð +nuÎ + && +$Ën + ===‚ull ) { + +84 +$to_wr™e + = +$buf +; + +85 } + `–£if + ( +$off + !=ð +nuÎ + && +$Ën + ===‚ull) { + +86 +$to_wr™e + = + `sub¡r +( +$buf +, +$off +); + +87 } + `–£if + ( +$off + ==ð +nuÎ + && +$Ën + !==‚ull) { + +88 +$to_wr™e + = + `sub¡r +( +$buf +, 0, +$Ën +); + +90 +$to_wr™e + = + `sub¡r +( +$buf +, +$off +, +$Ën +); + +93 +$»suÉ + = @ + `fwr™e +( +$this +-> +¡»am +, +$to_wr™e +); + +95 iàÐ +$»suÉ + ==ð +çl£ + ) { + +96 +throw + +Ãw + + `IOExû±iÚ +("Error writingo stream."); + +98 + } +} + +104 +public + +funùiÚ + + $__toSŒšg +() { + +105  ( +¡ršg +è +$this +-> +¡»am +; + +106 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/OutputStreamWriter.php + +1 +outSŒ—m + = +$outSŒ—m +; + +52 +public + +funùiÚ + + $þo£ +() { + +53  +$this +-> +outSŒ—m +-> + `þo£ +(); + +54 + } +} + +64 +public + +funùiÚ + + $wr™e +( +$buf +, +$off + = +nuÎ +, +$Ën + =‚ull) { + +65  +$this +-> +outSŒ—m +-> + `wr™e +( +$buf +, +$off +, +$Ën +); + +66 + } +} + +71 +public + +funùiÚ + + $æush +() { + +72 +$this +-> +outSŒ—m +-> + `æush +(); + +73 + } +} + +80 +public + +funùiÚ + + $g‘Resourû +() { + +81  +$this +-> +outSŒ—m +-> + `__toSŒšg +(); + +82 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/PhingFile.php + +1 + `g‘S•¬©Ü +(); + +55 +£lf +:: +$·thS•¬©Ü + = +$fs +-> + `g‘P©hS•¬©Ü +(); + +59 ià( +$¬g1 + +š¡ªûof + +PhšgFže + && + `is_¡ršg +( +$¬g2 +)) { + +60 +$this +-> + `_cÚ¡ruùFžeP¬’tSŒšgChžd +( +$¬g1 +, +$¬g2 +); + +61 } + `–£if + ( + `is_¡ršg +( +$¬g1 +è&& ( +$¬g2 + ==ð +nuÎ +)) { + +62 +$this +-> + `_cÚ¡ruùP©hÇme +( +$¬g1 +); + +63 } + `–£if +( + `is_¡ršg +( +$¬g1 +è&& is_¡ršg( +$¬g2 +)) { + +64 +$this +-> + `_cÚ¡ruùSŒšgP¬’tSŒšgChžd +( +$¬g1 +, +$¬g2 +); + +66 ià( +$¬g1 + ==ð +nuÎ +) { + +67 +throw + +Ãw + + `NuÎPoš‹rExû±iÚ +("Argument1o function must‚ot be‚ull"); + +69 +$this +-> +·th + = ( +¡ršg +è +$¬g1 +; + +70 +$this +-> +´efixL’gth + = (è +$¬g2 +; + +75 +funùiÚ + + $g‘P»fixL’gth +() { + +76  (è +$this +-> +´efixL’gth +; + +77 + } +} + +81 +funùiÚ + + $_cÚ¡ruùP©hÇme +( +$·thÇme +) { + +83 +$fs + = +FžeSy¡em +:: + `g‘FžeSy¡em +(); + +85 ià( +$·thÇme + ==ð +nuÎ +) { + +86 +throw + +Ãw + + `NuÎPoš‹rExû±iÚ +("Argumento function must‚ot be‚ull"); + +89 +$this +-> +·th + = ( +¡ršg +è +$fs +-> + `nÜm®ize +( +$·thÇme +); + +90 +$this +-> +´efixL’gth + = (è +$fs +-> + `´efixL’gth +($this-> +·th +); + +91 + } +} + +93 +funùiÚ + + $_cÚ¡ruùSŒšgP¬’tSŒšgChžd +( +$·»Á +, +$chžd + = +nuÎ +) { + +95 +$fs + = +FžeSy¡em +:: + `g‘FžeSy¡em +(); + +97 ià( +$chžd + ==ð +nuÎ +) { + +98 +throw + +Ãw + + `NuÎPoš‹rExû±iÚ +("Argumento function must‚ot be‚ull"); + +100 ià( +$·»Á + !=ð +nuÎ +) { + +101 ià( +$·»Á + === "") { + +102 +$this +-> +·th + = +$fs +-> + `»sÞve +($fs-> + `g‘DeçuÉP¬’t +(), $fs-> + `nÜm®ize +( +$chžd +)); + +104 +$this +-> +·th + = +$fs +-> + `»sÞve +($fs-> + `nÜm®ize +( +$·»Á +), $fs->nÜm®ize( +$chžd +)); + +107 +$this +-> +·th + = ( +¡ršg +è +$fs +-> + `nÜm®ize +( +$chžd +); + +109 +$this +-> +´efixL’gth + = (è +$fs +-> + `´efixL’gth +($this-> +·th +); + +110 + } +} + +112 +funùiÚ + + $_cÚ¡ruùFžeP¬’tSŒšgChžd +( +$·»Á +, +$chžd + = +nuÎ +) { + +114 +$fs + = +FžeSy¡em +:: + `g‘FžeSy¡em +(); + +116 ià( +$chžd + ==ð +nuÎ +) { + +117 +throw + +Ãw + + `NuÎPoš‹rExû±iÚ +("Argumento function must‚ot be‚ull"); + +120 ià( +$·»Á + !=ð +nuÎ +) { + +121 ià( +$·»Á +-> +·th + === "") { + +122 +$this +-> +·th + = +$fs +-> + `»sÞve +($fs-> + `g‘DeçuÉP¬’t +(), $fs-> + `nÜm®ize +( +$chžd +)); + +124 +$this +-> +·th + = +$fs +-> + `»sÞve +( +$·»Á +->·th, $fs-> + `nÜm®ize +( +$chžd +)); + +127 +$this +-> +·th + = +$fs +-> + `nÜm®ize +( +$chžd +); + +129 +$this +-> +´efixL’gth + = +$fs +-> + `´efixL’gth +($this-> +·th +); + +130 + } +} + +144 +funùiÚ + + $g‘Name +() { + +146 +$šdex + = ((( +$»s + = + `¡¼pos +( +$this +-> +·th +, +£lf +:: +$£·¿tÜ +)è==ð +çl£ +) ? -1 : $res); + +147 ià( +$šdex + < +$this +-> +´efixL’gth +) { + +148  + `sub¡r +( +$this +-> +·th +, $this-> +´efixL’gth +); + +150  + `sub¡r +( +$this +-> +·th +, +$šdex + + 1); + +151 + } +} + +165 +funùiÚ + + $g‘P¬’t +() { + +167 +$šdex + = ((( +$»s + = + `¡¼pos +( +$this +-> +·th +, +£lf +:: +$£·¿tÜ +)è==ð +çl£ +) ? -1 : $res); + +168 ià( +$šdex + < +$this +-> +´efixL’gth +) { + +169 ià(( +$this +-> +´efixL’gth + > 0è&& ( + `¡¾’ +($this-> +·th + > $this->prefixLength))) { + +170  + `sub¡r +( +$this +-> +·th +, 0, $this-> +´efixL’gth +); + +172  +nuÎ +; + +174  + `sub¡r +( +$this +-> +·th +, 0, +$šdex +); + +175 + } +} + +190 +funùiÚ + + $g‘P¬’tFže +() { + +191 +$p + = +$this +-> + `g‘P¬’t +(); + +192 ià( +$p + ==ð +nuÎ +) { + +193  +nuÎ +; + +195  +Ãw + + `PhšgFže +(( +¡ršg +è +$p +, (è +$this +-> +´efixL’gth +); + +196 + } +} + +205 +funùiÚ + + $g‘P©h +() { + +206  ( +¡ršg +è +$this +-> +·th +; + +207 + } +} + +218 +funùiÚ + + $isAbsÞu‹ +() { + +219  ( +$this +-> +´efixL’gth + !== 0); + +220 + } +} + +242 +funùiÚ + + $g‘AbsÞu‹P©h +() { + +243 +$fs + = +FžeSy¡em +:: + `g‘FžeSy¡em +(); + +244  +$fs +-> + `»sÞveFže +( +$this +); + +245 + } +} + +254 +funùiÚ + + $g‘AbsÞu‹Fže +() { + +255  +Ãw + + `PhšgFže +(( +¡ršg +è +$this +-> + `g‘AbsÞu‹P©h +()); + +256 + } +} + +283 +funùiÚ + + $g‘CªÚiÿlP©h +() { + +284 +$fs + = +FžeSy¡em +:: + `g‘FžeSy¡em +(); + +285  +$fs +-> + `ÿnÚiÿlize +( +$this +-> +·th +); + +286 + } +} + +296 +funùiÚ + + $g‘CªÚiÿlFže +() { + +297  +Ãw + + `PhšgFže +( +$this +-> + `g‘CªÚiÿlP©h +()); + +298 + } +} + +316 +funùiÚ + + $toURL +() { + +321 + } +} + +327 +funùiÚ + + $toURI +() { + +335 + } +} + +337 +funùiÚ + + $_¦ashify +( +$·th +, +$isDœeùÜy +) { + +338 +$p + = ( +¡ršg +è +$·th +; + +340 ià( +£lf +:: +$£·¿tÜ + !== '/') { + +341 +$p + = + `¡r_»¶aû +( +£lf +:: +$£·¿tÜ +, '/', $p); + +344 ià(! +SŒšgH–³r +:: + `¡¬tsW™h +('/', +$p +)) { + +345 +$p + = '/'.$p; + +348 ià(! +SŒšgH–³r +:: + `’dsW™h +('/', +$p +è&& +$isDœeùÜy +) { + +349 +$p + = $p.'/'; + +352  +$p +; + +353 + } +} + +365 +funùiÚ + + $ÿnR—d +() { + +366 +$fs + = +FžeSy¡em +:: + `g‘FžeSy¡em +(); + +368 ià( +$fs +-> + `checkAcûss +( +$this +)) { + +369  ( +boޗn +è@ + `is_»adabË +( +$this +-> + `g‘AbsÞu‹P©h +()); + +371  +çl£ +; + +372 + } +} + +384 +funùiÚ + + $ÿnWr™e +() { + +385 +$fs + = +FžeSy¡em +:: + `g‘FžeSy¡em +(); + +386  +$fs +-> + `checkAcûss +( +$this +, +Œue +); + +387 + } +} + +396 +funùiÚ + + $exi¡s +() { + +397 + `þ—r¡©ÿche +(); + +398 ià( +$this +-> + `isFže +()) { + +399  @ + `fže_exi¡s +( +$this +-> +·th +); + +401  @ + `is_dœ +( +$this +-> +·th +); + +403 + } +} + +414 +funùiÚ + + $isDœeùÜy +() { + +415 + `þ—r¡©ÿche +(); + +416 +$fs + = +FžeSy¡em +:: + `g‘FžeSy¡em +(); + +417 ià( +$fs +-> + `checkAcûss +( +$this +è!=ð +Œue +) { + +418 +throw + +Ãw + + `IOExû±iÚ +("NØ»ad‡cûs tØ". +$this +-> +·th +); + +420  @ + `is_dœ +( +$this +-> +·th +); + +421 + } +} + +433 +funùiÚ + + $isFže +() { + +434 + `þ—r¡©ÿche +(); + +436  @ + `is_fže +( +$this +-> +·th +); + +437 + } +} + +451 +funùiÚ + + $isHidd’ +() { + +452 +$fs + = +FžeSy¡em +:: + `g‘FžeSy¡em +(); + +453 ià( +$fs +-> + `checkAcûss +( +$this +è!=ð +Œue +) { + +454 +throw + +Ãw + + `IOExû±iÚ +("NØ»ad‡cûs tØ". +$this +-> +·th +); + +456  (( +$fs +-> + `g‘BoޗnA‰ribu‹s +( +$this +è& $fs-> +BA_HIDDEN +) !== 0); + +457 + } +} + +468 +funùiÚ + + $Ï¡Modif›d +() { + +469 +$fs + = +FžeSy¡em +:: + `g‘FžeSy¡em +(); + +470 ià( +$fs +-> + `checkAcûss +( +$this +è!=ð +Œue +) { + +471 +throw + +Ãw + + `IOExû±iÚ +("NØ»ad‡cûs tØ" . +$this +-> +·th +); + +473  +$fs +-> + `g‘La¡Modif›dTime +( +$this +); + +474 + } +} + +483 +funùiÚ + + $Ëngth +() { + +484 +$fs + = +FžeSy¡em +:: + `g‘FžeSy¡em +(); + +485 ià( +$fs +-> + `checkAcûss +( +$this +è!=ð +Œue +) { + +486 +throw + +Ãw + + `IOExû±iÚ +("NØ»ad‡cûs tØ". +$this +-> +·th +."\n"); + +488  +$fs +-> + `g‘L’gth +( +$this +); + +489 + } +} + +497 +funùiÚ + + $cڋÁs +() { + +498 ià(! +$this +-> + `ÿnR—d +(è|| !$this-> + `isFže +()) { + +499 +throw + +Ãw + + `IOExû±iÚ +("Cannot„ead file contents!"); + +501  + `fže_g‘_cڋÁs +( +$this +-> + `g‘AbsÞu‹P©h +()); + +502 + } +} + +518 +funùiÚ + + $ü—‹NewFže +( +$·»Ás += +Œue +, +$mode +=0777) { + +519 +$fže + = +FžeSy¡em +:: + `g‘FžeSy¡em +()-> + `ü—‹NewFže +( +$this +-> +·th +); + +520  +$fže +; + +521 + } +} + +531 +funùiÚ + + $d–‘e +() { + +532 +$fs + = +FžeSy¡em +:: + `g‘FžeSy¡em +(); + +533 ià( +$fs +-> + `ÿnD–‘e +( +$this +è!=ð +Œue +) { + +534 +throw + +Ãw + + `IOExû±iÚ +("CªnÙ d–‘" . +$this +-> +·th + . "\n"); + +536  +$fs +-> + `d–‘e +( +$this +); + +537 + } +} + +549 +funùiÚ + + $d–‘eOnEx™ +() { + +550 +$fs + = +FžeSy¡em +:: + `g‘FžeSy¡em +(); + +551 +$fs +-> + `d–‘eOnEx™ +( +$this +); + +552 + } +} + +576 +funùiÚ + + $li¡Dœ +( +$fž‹r + = +nuÎ +) { + +577 +$fs + = +FžeSy¡em +:: + `g‘FžeSy¡em +(); + +578  +$fs +-> + `li¡” +( +$this +, +$fž‹r +); + +579 + } +} + +581 +funùiÚ + + $li¡Fžes +( +$fž‹r + = +nuÎ +) { + +582 +$ss + = +$this +-> + `li¡Dœ +( +$fž‹r +); + +583 ià( +$ss + ==ð +nuÎ +) { + +584  +nuÎ +; + +586 +$n + = + `couÁ +( +$ss +); + +587 +$fs + = + `¬¿y +(); + +588  +$i + = 0; $˜< +$n +; $i++) { + +589 +$fs +[ +$i +] = +Ãw + + `PhšgFže +(( +¡ršg +) +$this +-> +·th +, (¡ršg) +$ss +[$i]); + +591  +$fs +; + +592 + } +} + +605 +funùiÚ + + $mkdœs +() { + +606 ià( +$this +-> + `exi¡s +()) { + +607  +çl£ +; + +609 +Œy + { + +610 ià( +$this +-> + `mkdœ +()) { + +611  +Œue +; + +613 } + `ÿtch + ( +IOExû±iÚ + +$iÛ +) { + +616 +$·»ÁFže + = +$this +-> + `g‘P¬’tFže +(); + +617  (( +$·»ÁFže + !=ð +nuÎ +è&& ($·»ÁFže-> + `mkdœs +(è&& +$this +-> + `mkdœ +())); + +618 + } +} + +626 +funùiÚ + + $mkdœ +() { + +627 +$fs + = +FžeSy¡em +:: + `g‘FžeSy¡em +(); + +629 ià( +$fs +-> + `checkAcûss +( +Ãw + + `PhšgFže +( +$this +-> +·th +), +Œue +) !==rue) { + +630 +throw + +Ãw + + `IOExû±iÚ +("NØwr™acûs tØ" . +$this +-> + `g‘P©h +()); + +632  +$fs +-> + `ü—‹DœeùÜy +( +$this +); + +633 + } +} + +641 +funùiÚ + + $»ÇmeTo +( +PhšgFže + +$de¡Fže +) { + +642 +$fs + = +FžeSy¡em +:: + `g‘FžeSy¡em +(); + +643 ià( +$fs +-> + `checkAcûss +( +$this +è!=ð +Œue +) { + +644 +throw + +Ãw + + `IOExû±iÚ +("NØwr™acûs tØ". +$this +-> + `g‘P©h +()); + +646  +$fs +-> + `»Çme +( +$this +, +$de¡Fže +); + +647 + } +} + +656 +funùiÚ + + $cÝyTo +( +PhšgFže + +$de¡Fže +) { + +657 +$fs + = +FžeSy¡em +:: + `g‘FžeSy¡em +(); + +659 ià( +$fs +-> + `checkAcûss +( +$this +è!=ð +Œue +) { + +660 +throw + +Ãw + + `IOExû±iÚ +("NØ»ad‡cûs tØ". +$this +-> + `g‘P©h +()."\n"); + +663 ià( +$fs +-> + `checkAcûss +( +$de¡Fže +, +Œue +) !==rue) { + +664 +throw + +Ãw + + `IOExû±iÚ +("Fže::cÝyTo(èNØwr™acûs tØ". +$de¡Fže +-> + `g‘P©h +()); + +666  +$fs +-> + `cÝy +( +$this +, +$de¡Fže +); + +667 + } +} + +684 +funùiÚ + + $£tLa¡Modif›d +( +$time +) { + +685 +$time + = () $time; + +686 ià( +$time + < 0) { + +687 +throw + +Ãw + + `Exû±iÚ +("IllegalArgumentException, Negative $time\n"); + +690 +$fs + = +FžeSy¡em +:: + `g‘FžeSy¡em +(); + +691  +$fs +-> + `£tLa¡Modif›dTime +( +$this +, +$time +); + +692 + } +} + +703 +funùiÚ + + $£tR—dOÆy +() { + +704 +$fs + = +FžeSy¡em +:: + `g‘FžeSy¡em +(); + +705 ià( +$fs +-> + `checkAcûss +( +$this +, +Œue +) !==rue) { + +707 +throw + +Ãw + + `IOExû±iÚ +("NØwr™acûs tØ" . +$this +-> + `g‘P©h +()); + +709  +$fs +-> + `£tR—dOÆy +( +$this +); + +710 + } +} + +716 +public + +funùiÚ + + $£tU£r +( +$u£r +) { + +717 +$fs + = +FžeSy¡em +:: + `g‘FžeSy¡em +(); + +718  +$fs +-> + `chown +( +$this +-> + `g‘P©h +(), +$u£r +); + +719 + } +} + +725 +funùiÚ + + $g‘U£r +() { + +726  @ + `fžeowÃr +( +$this +-> + `g‘P©h +()); + +727 + } +} + +733 +funùiÚ + + $£tMode +( +$mode +) { + +734 +$fs + = +FžeSy¡em +:: + `g‘FžeSy¡em +(); + +735  +$fs +-> + `chmod +( +$this +-> + `g‘P©h +(), +$mode +); + +736 + } +} + +742 +funùiÚ + + $g‘Mode +() { + +743  @ + `fž•”ms +( +$this +-> + `g‘P©h +()); + +744 + } +} + +781 +funùiÚ + + $li¡RoÙs +() { + +782 +$fs + = +FžeSy¡em +:: + `g‘FžeSy¡em +(); + +783  ( +¬¿y +è +$fs +-> + `li¡RoÙs +(); + +784 + } +} + +791 +funùiÚ + + $g‘TempDœ +() { + +792  +Phšg +:: + `g‘Prݔty +('php.tmpdir'); + +793 + } +} + +805 +funùiÚ + + $ü—‹TempFže +( +$´efix +, +$suffix +, +PhšgFže + +$dœeùÜy +) { + +808 +$»suÉ + = +nuÎ +; + +810 +$»suÉ + = +Ãw + + `PhšgFže +( +$dœeùÜy +, +$´efix + . + `sub¡r +( + `md5 +( + `time +()), 0, 8è. +$suffix +); + +811 }  + `fže_exi¡s +( +$»suÉ +-> + `g‘P©h +())); + +813 +$fs + = +FžeSy¡em +:: + `g‘FžeSy¡em +(); + +814 +$fs +-> + `ü—‹NewFže +( +$»suÉ +-> + `g‘P©h +()); + +815 +$fs +-> + `lock +( +$»suÉ +); + +817  +$»suÉ +; + +818 + } +} + +826 +funùiÚ + + $»moveTempFže +() { + +827 +$fs + = +FžeSy¡em +:: + `g‘FžeSy¡em +(); + +829 +$fs +-> + `uÆock +( +$this +); + +830 +$this +-> + `d–‘e +(); + +831 + } +} + +850 +funùiÚ + + $com·»To +( +PhšgFže + +$fže +) { + +851 +$fs + = +FžeSy¡em +:: + `g‘FžeSy¡em +(); + +852  +$fs +-> + `com·» +( +$this +, +$fže +); + +853 + } +} + +865 +funùiÚ + + $equ®s +( +$obj +) { + +866 ià(( +$obj + !=ð +nuÎ +è&& ($obj +š¡ªûof + +PhšgFže +)) { + +867  ( +$this +-> + `com·»To +( +$obj +) === 0); + +869  +çl£ +; + +870 + } +} + +873 +funùiÚ + + $toSŒšg +() { + +874  +$this +-> + `g‘P©h +(); + +875 + } +} + +878 +funùiÚ + + $__toSŒšg +() { + +879  +$this +-> + `g‘P©h +(); + +880 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/Reader.php + +1 +_¡ršg + = +$¡ršg +; + +47 +funùiÚ + + $sk +( +$n +è{ + } +} + +49 +funùiÚ + + $»ad +( +$Ën + = +nuÎ +) { + +50 ià( +$Ën + ==ð +nuÎ +) { + +51  +$this +-> +_¡ršg +; + +53 ià( +$this +-> +cu¼Pos + >ð + `¡¾’ +($this-> +_¡ršg +)) { + +56 +$out + = + `sub¡r +( +$this +-> +_¡ršg +, $this-> +cu¼Pos +, +$Ën +); + +57 +$this +-> +cu¼Pos + +ð +$Ën +; + +58  +$out +; + +60 + } +} + +62 +funùiÚ + + $m¬k +() { + +63 +$this +-> +m¬k + = $this-> +cu¼Pos +; + +64 + } +} + +66 +funùiÚ + + $»£t +() { + +67 +$this +-> +cu¼Pos + = $this-> +m¬k +; + +68 + } +} + +70 +funùiÚ + + $þo£ +(è{ + } +} + +72 +funùiÚ + + $ݒ +(è{ + } +} + +74 +funùiÚ + + $»ady +(è{ + } +} + +76 +funùiÚ + + $m¬kSuµÜ‹d +() { + +77  +Œue +; + +78 + } +} + +80 +funùiÚ + + $g‘Resourû +() { + +81  '(¡ršgè"'. +$this +-> +_¡ršg + . '"'; + +82 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/UnixFileSystem.php + +1 0è&& ( +$·thÇme +{$n-1} === '/')) { + +113 +$n +--; + +115 ià( +$n + === 0) { + +118 +$sb + = ""; + +120 ià( +$off£t + > 0) { + +121 +$sb + .ð + `sub¡r +( +$·thÇme +, 0, +$off£t +); + +123 +$´evCh¬ + = 0; + +124  +$i + = +$off£t +; $˜< +$n +; $i++) { + +125 +$c + = +$·thÇme +{ +$i +}; + +126 ià(( +$´evCh¬ + ==ð'/'è&& ( +$c + === '/')) { + +129 +$sb + .ð +$c +; + +130 +$´evCh¬ + = +$c +; + +132  +$sb +; + +133 + } +} + +139 +funùiÚ + + $´efixL’gth +( +$·thÇme +) { + +140 ià( + `¡¾’ +( +$·thÇme + === 0)) { + +143  (( +$·thÇme +{0} === '/') ? 1 : 0); + +144 + } +} + +151 +funùiÚ + + $»sÞve +( +$·»Á +, +$chžd +) { + +153 ià( +$chžd + === "") { + +154  +$·»Á +; + +157 ià( +$chžd +{0} === '/') { + +158 ià( +$·»Á + === '/') { + +159  +$chžd +; + +161  +$·»Á +. +$chžd +; + +164 ià( +$·»Á + === '/') { + +165  +$·»Á +. +$chžd +; + +168  +$·»Á +.'/'. +$chžd +; + +169 + } +} + +171 +funùiÚ + + $g‘DeçuÉP¬’t +() { + +173 + } +} + +175 +funùiÚ + + $isAbsÞu‹ +( +PhšgFže + +$f +) { + +176  ( +$f +-> + `g‘P»fixL’gth +() !== 0); + +177 + } +} + +182 +funùiÚ + + $»sÞveFže +( +PhšgFže + +$f +) { + +184 ià( +$this +-> + `isAbsÞu‹ +( +$f +)) { + +185  +$f +-> + `g‘P©h +(); + +187  +$this +-> + `»sÞve +( +Phšg +:: + `g‘Prݔty +("u£r.dœ"), +$f +-> + `g‘P©h +()); + +189 + } +} + +194 +funùiÚ + + $g‘BoޗnA‰ribu‹s +(& +$f +) { + +196 +$Çme + = +$f +-> + `g‘Name +(); + +197 +$hidd’ + = ( + `¡¾’ +( +$Çme +) > 0) && ($name{0} == '.'); + +198  ( +$hidd’ + ? +$this +-> +BA_HIDDEN + : 0); + +199 + } +} + +204 +funùiÚ + + $£tR—dOÆy +( +$f +) { + +205 ià( +$f + +š¡ªûof + +Fže +) { + +206 +$¡rP©h + = ( +¡ršg +è +$f +-> + `g‘P©h +(); + +207 +$³rms + = (è(@ + `fž•”ms +( +$¡rP©h +) & 0444); + +208  +FžeSy¡em +:: + `Chmod +( +$¡rP©h +, +$³rms +); + +210 +throw + +Ãw + + `Exû±iÚ +("IllegalArgutmentType: Argument is‚ot File"); + +212 + } +} + +217 +funùiÚ + + $com·» +( +$f1 +, +$f2 +) { + +218 iàÐ( +$f1 + +š¡ªûof + +PhšgFže +è&& ( +$f2 + instanceof PhingFile) ) { + +219 +$f1P©h + = +$f1 +-> + `g‘P©h +(); + +220 +$f2P©h + = +$f2 +-> + `g‘P©h +(); + +221  ( +boޗn +è + `¡rcmp +(( +¡ršg +è +$f1P©h +, (¡ršgè +$f2P©h +); + +223 +throw + +Ãw + + `Exû±iÚ +("IllegalArgutmentType: Argument is‚ot PhingFile"); + +225 + } +} + +229 +funùiÚ + + $li¡RoÙs +() { + +230 ià(! +$this +-> + `checkAcûss +('/', +çl£ +)) { + +231 + `d› + ("Can‚ot‡ccess„oot"); + +233  + `¬¿y +( +Ãw + + `PhšgFže +("/")); + +234 + } +} + +239 +funùiÚ + + $li¡” +( +$f +) { + +240 +$dœ + = @ + `ݒdœ +( +$f +-> + `g‘AbsÞu‹P©h +()); + +241 ià(! +$dœ +) { + +242 +throw + +Ãw + + `Exû±iÚ +("Cª'ˆÝ’ dœeùÜy " . +$f +-> + `__toSŒšg +()); + +244 +$vv + = + `¬¿y +(); + +245 ( +$fže + = @ + `»addœ +( +$dœ +)è!=ð +çl£ +) { + +246 ià( +$fže + == "." || $file == "..") { + +249 +$vv +[] = ( +¡ršg +è +$fže +; + +251 @ + `þo£dœ +( +$dœ +); + +252  +$vv +; + +253 + } +} + +255 +funùiÚ + + $äomURIP©h +( +$p +) { + +256 ià( +SŒšgH–³r +:: + `’dsW™h +("/", +$p +è&& ( + `¡¾’ +($p) > 1)) { + +259 +$p + = + `sub¡r +($p, 0, + `¡¾’ +($p) - 1); + +263  +$p +; + +264 + } +} + +271 +funùiÚ + + $ÿnD–‘e +( +PhšgFže + +$f +) + +273 @ + `þ—r¡©ÿche +(); + +274 +$dœ + = + `dœÇme +( +$f +-> + `g‘AbsÞu‹P©h +()); + +275  ( +boÞ +è@ + `is_wr™abË +( +$dœ +); + +276 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/Win32FileSystem.php + +1 +¦ash + = +£lf +:: + `g‘S•¬©Ü +(); + +37 +$this +-> +£micÞÚ + = +£lf +:: + `g‘P©hS•¬©Ü +(); + +38 +$this +-> +®tSÏsh + = ($this-> +¦ash + === '\\') ? '/' : '\\'; + +41 +funùiÚ + + $isSÏsh +( +$c +) { + +42  ( +$c + == '\\') || ($c == '/'); + +43 + } +} + +45 +funùiÚ + + $isL‘‹r +( +$c +) { + +46  (( + `Üd +( +$c +) >= ord('a')) && (ord($c) <= ord('z'))) + +47 || (( + `Üd +( +$c +) >= ord('A')) && (ord($c) <= ord('Z'))); + +48 + } +} + +50 +funùiÚ + + $¦ashify +( +$p +) { + +51 ià(( + `¡¾’ +( +$p +è> 0è&& ($p{0} !ð +$this +-> +¦ash +)) { + +52  +$this +-> +¦ash +. +$p +; + +55  +$p +; + +57 + } +} + +61 +funùiÚ + + $g‘S•¬©Ü +() { + +63  + `chr +(92); + +64 + } +} + +66 +funùiÚ + + $g‘P©hS•¬©Ü +() { + +68 + } +} + +82 +funùiÚ + + $nÜm®izeP»fix +( +$¡rP©h +, +$Ën +, & +$sb +) { + +83 +$¤c + = 0; + +84 ( +$¤c + < +$Ën +è&& +$this +-> + `isSÏsh +( +$¡rP©h +{$src})) { + +85 +$¤c +++; + +87 +$c + = ""; + +88 ià(( +$Ën + - +$¤c + >= 2) + +89 && +$this +-> + `isL‘‹r +( +$c + = +$¡rP©h +{ +$¤c +}) + +90 && +$¡rP©h +{ +$¤c + + 1} === ':') { + +95 +$sb + .ð +$c +; + +96 +$sb + .= ':'; + +97 +$¤c + += 2; + +100 +$¤c + = 0; + +101 ià(( +$Ën + >= 2) + +102 && +$this +-> + `isSÏsh +( +$¡rP©h +{0}) + +103 && +$this +-> + `isSÏsh +( +$¡rP©h +{1})) { + +109 +$¤c + = 1; + +110 +$sb +.= +$this +-> +¦ash +; + +113  +$¤c +; + +114 + } +} + +118 +´Ùeùed + +funùiÚ + + $nÜm®iz” +( +$¡rP©h +, +$Ën +, +$off£t +) { + +119 ià( +$Ën + == 0) { + +120  +$¡rP©h +; + +122 ià( +$off£t + < 3) { + +123 +$off£t + = 0; + +125 +$¤c + = 0; + +126 +$¦ash + = +$this +-> +¦ash +; + +127 +$sb + = ""; + +129 ià( +$off£t + == 0) { + +131 +$¤c + = +$this +-> + `nÜm®izeP»fix +( +$¡rP©h +, +$Ën +, +$sb +); + +134 +$¤c + = +$off£t +; + +135 +$sb + .ð + `sub¡r +( +$¡rP©h +, 0, +$off£t +); + +140  +$¤c + < +$Ën +) { + +141 +$c + = +$¡rP©h +{ +$¤c +++}; + +142 ià( +$this +-> + `isSÏsh +( +$c +)) { + +143 ( +$¤c + < +$Ën +è&& +$this +-> + `isSÏsh +( +$¡rP©h +{$src})) { + +144 +$¤c +++; + +146 ià( +$¤c + ==ð +$Ën +) { + +148 +$¢ + = (è + `¡¾’ +( +$sb +); + +149 ià(( +$¢ + =ð2è&& ( +$sb +{1} === ':')) { + +151 +$sb + .ð +$¦ash +; + +154 ià( +$¢ + === 0) { + +156 +$sb + .ð +$¦ash +; + +159 ià(( +$¢ + ==ð1è&& ( +$this +-> + `isSÏsh +( +$sb +{0}))) { + +167 +$sb + .ð +$¦ash +; + +174 +$sb + .ð +$¦ash +; + +177 +$sb +.= +$c +; + +180 +$rv + = ( +¡ršg +è +$sb +; + +181  +$rv +; + +182 + } +} + +191 +funùiÚ + + $nÜm®ize +( +$¡rP©h +) { + +192 +$n + = + `¡¾’ +( +$¡rP©h +); + +193 +$¦ash + = +$this +-> +¦ash +; + +194 +$®tSÏsh + = +$this +-> +®tSÏsh +; + +195 +$´ev + = 0; + +196  +$i + = 0; $˜< +$n +; $i++) { + +197 +$c + = +$¡rP©h +{ +$i +}; + +198 ià( +$c + ==ð +$®tSÏsh +) { + +199  +$this +-> + `nÜm®iz” +( +$¡rP©h +, +$n +, ( +$´ev + ==ð +$¦ash +è? +$i + - 1 : $i); + +201 ià(( +$c + ==ð +$¦ash +è&& ( +$´ev + ==ð$¦ashè&& ( +$i + > 1)) { + +202  +$this +-> + `nÜm®iz” +( +$¡rP©h +, +$n +, +$i + - 1); + +204 ià(( +$c + ==ð':'è&& ( +$i + > 1)) { + +205  +$this +-> + `nÜm®iz” +( +$¡rP©h +, +$n +, 0); + +207 +$´ev + = +$c +; + +209 ià( +$´ev + ==ð +$¦ash +) { + +210  +$this +-> + `nÜm®iz” +( +$¡rP©h +, +$n +, $n - 1); + +212  +$¡rP©h +; + +213 + } +} + +215 +funùiÚ + + $´efixL’gth +( +$¡rP©h +) { + +216 +$·th + = ( +¡ršg +è +$¡rP©h +; + +217 +$¦ash + = ( +¡ršg +è +$this +-> +¦ash +; + +218 +$n + = (è + `¡¾’ +( +$·th +); + +219 ià( +$n + === 0) { + +222 +$c0 + = +$·th +{0}; + +223 +$c1 + = ( +$n + > 1è? +$·th +{1} : + +225 ià( +$c0 + ==ð +$¦ash +) { + +226 ià( +$c1 + ==ð +$¦ash +) { + +232 ià( +$this +-> + `isL‘‹r +( +$c0 +è&& ( +$c1 + === ':')) { + +233 ià(( +$n + > 2è&& ( +$·th +{2}è==ð +$¦ash +) { + +239 + } +} + +241 +funùiÚ + + $»sÞve +( +$·»Á +, +$chžd +) { + +242 +$·»Á + = ( +¡ršg +) $parent; + +243 +$chžd + = ( +¡ršg +) $child; + +244 +$¦ash + = ( +¡ršg +è +$this +-> +¦ash +; + +246 +$² + = (è + `¡¾’ +( +$·»Á +); + +247 ià( +$² + === 0) { + +248  +$chžd +; + +250 +$ú + = (è + `¡¾’ +( +$chžd +); + +251 ià( +$ú + === 0) { + +252  +$·»Á +; + +255 +$c + = +$chžd +; + +256 ià(( +$ú + > 1è&& ( +$c +{0} ==ð +$¦ash +)) { + +257 ià( +$c +{1} ==ð +$¦ash +) { + +259 +$c + = + `sub¡r +($c, 2); + +263 +$c + = + `sub¡r +($c, 1); + +267 +$p + = +$·»Á +; + +268 ià( +$p +{ +$² + - 1} ==ð +$¦ash +) { + +269 +$p + = + `sub¡r +($p, 0, +$² + - 1); + +271  +$p +. +$this +-> + `¦ashify +( +$c +); + +272 + } +} + +274 +funùiÚ + + $g‘DeçuÉP¬’t +() { + +275  ( +¡ršg +è("". +$this +-> +¦ash +); + +276 + } +} + +278 +funùiÚ + + $äomURIP©h +( +$¡rP©h +) { + +279 +$p + = ( +¡ršg +è +$¡rP©h +; + +280 ià(( + `¡¾’ +( +$p +) > 2) && ($p{2} === ':')) { + +283 +$p + = + `sub¡r +($p,1); + +286 ià(( + `¡¾’ +( +$p +è> 3è&& +SŒšgH–³r +:: + `’dsW™h +('/', $p)) { + +287 +$p + = + `sub¡r +($p, 0, + `¡¾’ +($p) - 1); + +289 } + `–£if + (( + `¡¾’ +( +$p +è> 1è&& +SŒšgH–³r +:: + `’dsW™h +('/', $p)) { + +291 +$p + = + `sub¡r +($p, 0, + `¡¾’ +($p) - 1); + +293  ( +¡ršg +è +$p +; + +294 + } +} + +299 +funùiÚ + + $isAbsÞu‹ +( +PhšgFže + +$f +) { + +300 +$¶ + = (è +$f +-> + `g‘P»fixL’gth +(); + +301 +$p + = ( +¡ršg +è +$f +-> + `g‘P©h +(); + +302  ((( +$¶ + ==ð2è&& ( +$p +{0} ==ð +$this +-> +¦ash +)) || ($pl === 3) || ($pl === 1 && $p{0} === $this->slash)); + +303 + } +} + +306 +funùiÚ + + $_driveIndex +( +$d +) { + +307 +$d + = ( +¡ršg +) $d{0}; + +308 ià(( + `Üd +( +$d +) >= ord('a')) && (ord($d) <= ord('z'))) { + +309  + `Üd +( +$d +) - ord('a'); + +311 ià(( + `Üd +( +$d +) >= ord('A')) && (ord($d) <= ord('Z'))) { + +312  + `Üd +( +$d +) - ord('A'); + +315 + } +} + +318 +funùiÚ + + $_g‘DriveDœeùÜy +( +$drive +) { + +319 +$drive + = ( +¡ršg +) $drive{0}; + +320 +$i + = (è +$this +-> + `_driveIndex +( +$drive +); + +321 ià( +$i + < 0) { + +322  +nuÎ +; + +325 +$s + = ( + `is£t +( +£lf +:: +$driveDœCache +[ +$i +]è? s–f::$driveDœCache[$i] : +nuÎ +); + +327 ià( +$s + !=ð +nuÎ +) { + +328  +$s +; + +331 +$s + = +$this +-> + `_g‘DriveDœeùÜy +( +$i + + 1); + +332 +£lf +:: +$driveDœCache +[ +$i +] = +$s +; + +333  +$s +; + +334 + } +} + +336 +funùiÚ + + $_g‘U£rP©h +() { + +338  ( +¡ršg +è +$this +-> + `nÜm®ize +( +Phšg +:: + `g‘Prݔty +("user.dir")); + +339 + } +} + +341 +funùiÚ + + $_g‘Drive +( +$·th +) { + +342 +$·th + = ( +¡ršg +) $path; + +343 +$¶ + = +$this +-> + `´efixL’gth +( +$·th +); + +344  ( +$¶ + ==ð3è? + `sub¡r +( +$·th +, 0, 2è: +nuÎ +; + +345 + } +} + +347 +funùiÚ + + $»sÞveFže +( +PhšgFže + +$f +) { + +348 +$·th + = +$f +-> + `g‘P©h +(); + +349 +$¶ + = (è +$f +-> + `g‘P»fixL’gth +(); + +351 ià(( +$¶ + ==ð2è&& ( +$·th +{0} ==ð +$this +-> +¦ash +)) { + +352  +$·th +; + +355 ià( +$¶ + === 3) { + +356  +$·th +; + +359 ià( +$¶ + === 0) { + +360  ( +¡ršg +è( +$this +-> + `_g‘U£rP©h +().$this-> + `¦ashify +( +$·th +)); + +363 ià( +$¶ + === 1) { + +364 +$up + = ( +¡ršg +è +$this +-> + `_g‘U£rP©h +(); + +365 +$ud + = ( +¡ršg +è +$this +-> + `_g‘Drive +( +$up +); + +366 ià( +$ud + !=ð +nuÎ +) { + +367  ( +¡ršg +è +$ud +. +$·th +; + +369  ( +¡ršg +è +$up +. +$·th +; + +372 ià( +$¶ + === 2) { + +373 +$up + = ( +¡ršg +è +$this +-> + `_g‘U£rP©h +(); + +374 +$ud + = ( +¡ršg +è +$this +-> + `_g‘Drive +( +$up +); + +375 ià(( +$ud + !=ð +nuÎ +è&& +SŒšgH–³r +:: + `¡¬tsW™h +($ud, +$·th +)) { + +376  ( +¡ršg +è( +$up + . +$this +-> + `¦ashify +( + `sub¡r +( +$·th +,2))); + +378 +$drive + = ( +¡ršg +è +$·th +{0}; + +379 +$dœ + = ( +¡ršg +è +$this +-> + `_g‘DriveDœeùÜy +( +$drive +); + +381 +$Å + = ( +¡ršg +) ""; + +382 ià( +$dœ + !=ð +nuÎ +) { + +386 +$p + = ( +¡ršg +è +$drive + . (':'. +$dœ +. +$this +-> + `¦ashify +( + `sub¡r +( +$·th +,2))); + +388 ià(! +$this +-> + `checkAcûss +( +$p +, +çl£ +)) { + +391 + `d› +("Can't„esolve…ath $p"); + +393  +$p +; + +395  ( +¡ršg +è +$drive +.':'. +$this +-> + `¦ashify +( + `sub¡r +( +$·th +,2)); + +398 +throw + +Ãw + + `Exû±iÚ +("UÄesÞvab˅©h: " . +$·th +); + +399 + } +} + +405 +funùiÚ + + $£tR—dOÆy +( +$f +) { + +407 +throw + +Ãw + + `Exû±iÚ +("WIN32FileSystem doesn't support„ead-only yet."); + +408 + } +} + +412 +´Ùeùed + +funùiÚ + + $_acûss +( +$·th +) { + +413 ià(! +$this +-> + `checkAcûss +( +$·th +, +çl£ +)) { + +414 +throw + +Ãw + + `Exû±iÚ +("Can't„esolve…ath $p"); + +416  +Œue +; + +417 + } +} + +419 +funùiÚ + + $_ÇtiveLi¡RoÙs +() { + +421 + } +} + +423 +funùiÚ + + $li¡RoÙs +() { + +424 +$ds + = + `_ÇtiveLi¡RoÙs +(); + +425 +$n + = 0; + +426  +$i + = 0; $i < 26; $i++) { + +427 ià((( +$ds + >> +$i +) & 1) !== 0) { + +428 ià(! +$this +-> + `acûss +(( +¡ršg +)Ð + `chr +( + `Üd +('A'è+ +$i +è. ':' . $this-> +¦ash +))) { + +429 +$ds + &ð~(1 << +$i +); + +431 +$n +++; + +435 +$fs + = + `¬¿y +(); + +436 +$j + = () 0; + +437 +$¦ash + = ( +¡ršg +è +$this +-> +¦ash +; + +438  +$i + = 0; $i < 26; $i++) { + +439 ià((( +$ds + >> +$i +) & 1) !== 0) { + +440 +$fs +[ +$j +++] = +Ãw + + `PhšgFže +( + `chr +( + `Üd +('A'è+ +$i +è. ':' . +$this +-> +¦ash +); + +443  +$fs +; + +444 + } +} + +449 +funùiÚ + + $com·» +( +PhšgFže + +$f1 +, PhšgFž +$f2 +) { + +450 +$f1P©h + = +$f1 +-> + `g‘P©h +(); + +451 +$f2P©h + = +$f2 +-> + `g‘P©h +(); + +452  ( +boޗn +è + `¡rÿ£cmp +(( +¡ršg +è +$f1P©h +, (¡ršgè +$f2P©h +); + +453 + } +} + +459 +funùiÚ + + $li¡” +( +$f +) { + +460 +$dœ + = @ + `ݒdœ +( +$f +-> + `g‘AbsÞu‹P©h +()); + +461 ià(! +$dœ +) { + +462 +throw + +Ãw + + `Exû±iÚ +("Cª'ˆÝ’ dœeùÜy " . +$f +-> + `__toSŒšg +()); + +464 +$vv + = + `¬¿y +(); + +465 ( +$fže + = @ + `»addœ +( +$dœ +)è!=ð +çl£ +) { + +466 ià( +$fže + == "." || $file == "..") { + +469 +$vv +[] = ( +¡ršg +è +$fže +; + +471 @ + `þo£dœ +( +$dœ +); + +472  +$vv +; + +473 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/io/WinNTFileSystem.php + +1 ð + `Üd +('A') && $char <= ord('Z')) + +40  +Œue +; + +42 ià( +$ch¬ + >ð + `Üd +('a') && $char <= ord('z')) + +43  +Œue +; + +45  +çl£ +; + +48 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/lang/EventObject.php + +1 +sourû + = +$sourû +; + +39 +funùiÚ + + $g‘Sourû +() { + +40  +$this +-> +sourû +; + +41 + } +} + +44 +funùiÚ + + $toSŒšg +() { + +45 ià( + `m‘hod_exi¡s +( +$this +-> +sourû +, "toString")) { + +46  + `g‘_þass +( +$this +)."[sourû=".$this-> +sourû +-> + `toSŒšg +()."]"; + +48  + `g‘_þass +( +$this +)."[sourû=".g‘_þass($this-> +sourû +)."]"; + +50 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/lang/FileNotFoundException.php + +1 + `ÿnR—d +()) { + +48 +$this +-> + `·r£ +( +$fže +-> + `g‘P©h +(), +çl£ +); + +50 +throw + +Ãw + + `IOExû±iÚ +("Cª‚Ù„—d fž". +$fže +-> + `g‘P©h +()); + +64 +´Ùeùed + +funùiÚ + + $·r£ +( +$fžeP©h +) { + +70 ià(( +$lšes + = @ + `fže +( +$fžeP©h +)è==ð +çl£ +) { + +71 +throw + +Ãw + + `IOExû±iÚ +("Unableo…arse contents of $filePath"); + +74 +$this +-> +´Ý”t›s + = + `¬¿y +(); + +75 +$£c_Çme + = ""; + +77 + `fܗch +( +$lšes + +as + +$lše +) { + +79 +$lše + = + `Œim +($line); + +81 if( +$lše + == "") + +84 ià( +$lše +{0} =ð'#' +Ü + $line{0} == ';') { + +88 +$pos + = + `¡½os +( +$lše +, '='); + +89 +$´Ý”ty + = + `Œim +( + `sub¡r +( +$lše +, 0, +$pos +)); + +90 +$v®ue + = + `Œim +( + `sub¡r +( +$lše +, +$pos + + 1)); + +91 +$this +-> +´Ý”t›s +[ +$´Ý”ty +] = $this-> + `šV® +( +$v®ue +); + +95 + } +} + +103 +´Ùeùed + +funùiÚ + + $šV® +( +$v® +) { + +104 ià( +$v® + === "true") { + +105 +$v® + = +Œue +; + +106 } + `–£if + ( +$v® + === "false") { + +107 +$v® + = +çl£ +; + +109  +$v® +; + +110 + } +} + +118 +´Ùeùed + +funùiÚ + + $outV® +( +$v® +) { + +119 ià( +$v® + ==ð +Œue +) { + +120 +$v® + = "true"; + +121 } + `–£if + ( +$v® + ==ð +çl£ +) { + +122 +$v® + = "false"; + +124  +$v® +; + +125 + } +} + +135 +public + +funùiÚ + + $toSŒšg +() { + +136 +$buf + = ""; + +137 + `fܗch +( +$this +-> +´Ý”t›s + +as + +$key + => +$™em +) { + +138 +$buf + .ð +$key + . "=" . +$this +-> + `outV® +( +$™em +è. +PHP_EOL +; + +140  +$buf +; + +141 + } +} + +151 +funùiÚ + + $¡Üe +( +PhšgFže + +$fže +, +$h—d” + = +nuÎ +) { + +155 +Œy + { + +156 +$fw + = +Ãw + + `FžeWr™” +( +$fže +); + +157 ià( +$h—d” + !=ð +nuÎ +) { + +158 +$fw +-> + `wr™e +Ð"# " . +$h—d” + . +PHP_EOL + ); + +160 +$fw +-> + `wr™e +( +$this +-> + `toSŒšg +()); + +161 +$fw +-> + `þo£ +(); + +162 } + `ÿtch + ( +IOExû±iÚ + +$e +) { + +163 +throw + +Ãw + + `IOExû±iÚ +("E¼Ü wr™šg…rݔty fže: " . +$e +-> + `g‘Mes§ge +()); + +165 + } +} + +174 +funùiÚ + + $g‘Prݔt›s +() { + +175  +$this +-> +´Ý”t›s +; + +176 + } +} + +186 +funùiÚ + + $g‘Prݔty +( +$´Ý +) { + +187 ià(! + `is£t +( +$this +-> +´Ý”t›s +[ +$´Ý +])) { + +188  +nuÎ +; + +190  +$this +-> +´Ý”t›s +[ +$´Ý +]; + +191 + } +} + +202 +funùiÚ + + $g‘ +( +$´Ý +) { + +203 ià(! + `is£t +( +$this +-> +´Ý”t›s +[ +$´Ý +])) { + +204  +nuÎ +; + +206  +$this +-> +´Ý”t›s +[ +$´Ý +]; + +207 + } +} + +216 +funùiÚ + + $£tPrݔty +( +$key +, +$v®ue +) { + +217 +$ÞdV®ue + = +nuÎ +; + +218 ià( + `is£t +( +$this +-> +´Ý”t›s +[ +$key +])) { + +219 +$ÞdV®ue + = +$this +-> +´Ý”t›s +[ +$key +]; + +221 +$this +-> +´Ý”t›s +[ +$key +] = +$v®ue +; + +222  +$ÞdV®ue +; + +223 + } +} + +233 +funùiÚ + + $put +( +$key +, +$v®ue +) { + +234  +$this +-> + `£tPrݔty +( +$key +, +$v®ue +); + +235 + } +} + +241 +funùiÚ + + $´Ý”tyNames +() { + +242  +$this +-> + `keys +(); + +243 + } +} + +249 +funùiÚ + + $cڏšsKey +( +$key +) { + +250  + `is£t +( +$this +-> +´Ý”t›s +[ +$key +]); + +251 + } +} + +259 +funùiÚ + + $keys +() { + +260  + `¬¿y_keys +( +$this +-> +´Ý”t›s +); + +261 + } +} + +267 +funùiÚ + + $isEm±y +() { + +268  + `em±y +( +$this +-> +´Ý”t›s +); + +269 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/util/Register.php + +1 +key + = ( +¡ršg +è +$key +; + +86 +public + +funùiÚ + + $£tKey +( +$k +) { + +87 +$this +-> +key + = ( +¡ršg +è +$k +; + +88 + } +} + +94 +public + +funùiÚ + + $g‘Key +() { + +95  +$this +-> +key +; + +96 + } +} + +102 +public + +funùiÚ + + $£tV®ue +( +$v +) { + +103 +$this +-> +v®ue + = +$v +; + +104 + } +} + +110 +public + +funùiÚ + + $g‘V®ue +() { + +111  +$this +-> +v®ue +; + +112 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/system/util/Timer.php + +1 +¡ime + = $this-> + `g‘MiüÙime +(); + +65 +funùiÚ + + $¡Ý +() { + +66 +$this +-> +‘ime + = $this-> + `g‘MiüÙime +(); + +67 + } +} + +79 +funùiÚ + + $g‘EÏp£dTime +( +$¶aûs +=5) { + +80 +$‘ime + = +$this +-> +‘ime + - $this-> +¡ime +; + +81 +$fÜm© + = "%0.". +$¶aûs +."f"; + +82  ( + `¥rštf + ( +$fÜm© +, +$‘ime +)); + +83 + } +} + +92 +funùiÚ + + $g‘MiüÙime +() { + +93 + `li¡ +( +$u£c +, +$£c +èð + `ex¶ode +(" ", + `miüÙime +()); + +94  (() +$u£c + + () +$£c +); + +95 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/CapsuleTask.php + +1 +cڌÞTem¶©e + = +$cڌÞTem¶©e +; + +136 +public + +funùiÚ + + $g‘CڌÞTem¶©e +() { + +137  +$this +-> +cڌÞTem¶©e +; + +138 + } +} + +147 +public + +funùiÚ + + $£tTem¶©eP©h +( +$‹m¶©eP©h +) { + +148 +$»sÞvedP©h + = ""; + +149 +$tok + = + `¡¹ok +( +$‹m¶©eP©h +, ","); + +150  +$tok + ) { + +153 +$fuÎP©h + = +$this +-> +´ojeù +-> + `»sÞveFže +( +$tok +); + +154 +$ý©h + = +$fuÎP©h +-> + `g‘CªÚiÿlP©h +(); + +155 ià( +$ý©h + ==ð +çl£ +) { + +156 +$this +-> + `log +("Tem¶©dœeùÜy dÛ nكxi¡: " . +$fuÎP©h +-> + `g‘AbsÞu‹P©h +()); + +158 +$»sÞvedP©h + .ð +$ý©h +; + +160 +$tok + = + `¡¹ok +(","); + +161 iàÐ +$tok + ) { + +162 +$»sÞvedP©h + .= ","; + +165 +$this +-> +‹m¶©eP©h + = +$»sÞvedP©h +; + +166 + } +} + +174 +public + +funùiÚ + + $g‘Tem¶©eP©h +() { + +175  +$this +-> +‹m¶©eP©h +; + +176 + } +} + +185 +public + +funùiÚ + + $£tOuutDœeùÜy +( +PhšgFže + +$ouutDœeùÜy +) { + +186 +Œy + { + +187 ià(! +$ouutDœeùÜy +-> + `exi¡s +()) { + +188 +$this +-> + `log +("OuuˆdœeùÜy dÛ nكxi¡, c»©šg: " . +$ouutDœeùÜy +-> + `g‘P©h +(), +Projeù +:: +MSG_VERBOSE +); + +189 ià(! +$ouutDœeùÜy +-> + `mkdœs +()) { + +190 +throw + +Ãw + + `IOExû±iÚ +("UÇbˁØü—‹ Ou±uˆdœeùÜy: " . +$ouutDœeùÜy +-> + `g‘AbsÞu‹P©h +()); + +193 +$this +-> +ouutDœeùÜy + = +$ouutDœeùÜy +-> + `g‘CªÚiÿlP©h +(); + +194 } + `ÿtch + ( +IOExû±iÚ + +$iÛ +) { + +195 +throw + +Ãw + + `BuždExû±iÚ +( +$iÛ +); + +197 + } +} + +203 +public + +funùiÚ + + $g‘OuutDœeùÜy +() { + +204  +$this +-> +ouutDœeùÜy +; + +205 + } +} + +213 +public + +funùiÚ + + $£tOuutFže +( +$ouutFže +) { + +214 +$this +-> +ouutFže + = +$ouutFže +; + +215 + } +} + +222 +public + +funùiÚ + + $g‘OuutFže +() { + +223  +$this +-> +ouutFže +; + +224 + } +} + +233 +public + +funùiÚ + + $£tCڋxtPrݔt›s +( +$fže +) { + +234 +$sourûs + = + `ex¶ode +(",", +$fže +); + +235 +$this +-> +cڋxtPrݔt›s + = +Ãw + + `Prݔt›s +(); + +243  +$i +=0, +$sourûsL’gth += + `couÁ +( +$sourûs +); $i < $sourcesLength; $i++) { + +244 +$sourû + = +Ãw + + `Prݔt›s +(); + +246 +Œy + { + +250 +$fuÎP©h + = +$this +-> +´ojeù +-> + `»sÞveFže +( +$sourûs +[ +$i +]); + +251 +$this +-> + `log +("Usšg cڋxtPrݔt› fže: " . +$fuÎP©h +-> + `toSŒšg +()); + +252 +$sourû +-> + `lßd +( +$fuÎP©h +); + +254 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +256 +throw + +Ãw + + `BuždExû±iÚ +("Cڋxˆ´Ý”t› fž" . +$sourûs +[ +$i +] . + +261 +$keys + = +$sourû +-> + `keys +(); + +263 + `fܗch + ( +$keys + +as + +$key +) { + +264 +$Çme + = +$key +; + +265 +$v®ue + = +$this +-> +´ojeù +-> + `»¶aûPrݔt›s +( +$sourû +-> + `g‘Prݔty +( +$Çme +)); + +266 +$this +-> +cڋxtPrݔt›s +-> + `£tPrݔty +( +$Çme +, +$v®ue +); + +269 + } +} + +277 +public + +funùiÚ + + $g‘CڋxtPrݔt›s +() { + +278  +$this +-> +cڋxtPrݔt›s +; + +279 + } +} + +284 +public + +funùiÚ + + $ü—‹Assign +() { + +285 +$a + = +Ãw + + `AssigÃdV¬ +(); + +286 +$this +-> +assigÃdV¬s +[] = +$a +; + +287  +$a +; + +288 + } +} + +301 +public + +funùiÚ + + $š™CڌÞCڋxt +() { + +302 +$this +-> +cڋxt +-> + `þ—r +(); + +303 + `fܗch +( +$this +-> +assigÃdV¬s + +as + +$v¬ +) { + +304 +$this +-> +cڋxt +-> + `put +( +$v¬ +-> + `g‘Name +(), $v¬-> + `g‘V®ue +()); + +306  +$this +-> +cڋxt +; + +307 + } +} + +316 +public + +funùiÚ + + $maš +() { + +319 ià( + `em±y +( +$this +-> +‹m¶©eP©h +)) { + +320 +throw + +Ãw + + `BuždExû±iÚ +("Theemplate…ath‚eedso be defined!"); + +324 ià( +$this +-> +cڌÞTem¶©e + ==ð +nuÎ +) { + +325 +throw + +Ãw + + `BuždExû±iÚ +("The controlemplate‚eedso be defined!"); + +329 ià( +$this +-> +ouutDœeùÜy + ==ð +nuÎ +) { + +330 +throw + +Ãw + + `BuždExû±iÚ +("The output directory‚eedso be defined!"); + +334 ià( +$this +-> +ouutFže + ==ð +nuÎ +) { + +335 +throw + +Ãw + + `BuždExû±iÚ +("The output file‚eedso be defined!"); + +344 +$this +-> +cڋxt + = +Ãw + + `C­suË +(); + +346 ià( +$this +-> +‹m¶©eP©h + !=ð +nuÎ +) { + +347 +$this +-> + `log +("Usšgem¶©eP©h: " . $this-> +‹m¶©eP©h +); + +348 +$this +-> +cڋxt +-> + `£tTem¶©eP©h +($this-> +‹m¶©eP©h +); + +353 +$ouutDœ + = +Ãw + + `PhšgFže +( +$this +-> +ouutDœeùÜy +); + +354 ià(! +$ouutDœ +-> + `exi¡s +()) { + +355 +$this +-> + `log +("OuuˆdœeùÜy dÛ nكxi¡, c»©šg: " . +$ouutDœ +-> + `g‘AbsÞu‹P©h +()); + +356 +$ouutDœ +-> + `mkdœs +(); + +359 +$this +-> +cڋxt +-> + `£tOuutDœeùÜy +( +$ouutDœ +-> + `g‘AbsÞu‹P©h +()); + +361 +$·th + = +$this +-> +ouutDœeùÜy + . +DIRECTORY_SEPARATOR + . $this-> +ouutFže +; + +362 +$this +-> + `log +("G’”©šgØfž" . +$·th +); + +369 +$c + = +$this +-> + `š™CڌÞCڋxt +(); + +373 +$this +-> + `pÝuϋIn™ŸlCڋxt +( +$c +); + +378 ià( +$this +-> +cڋxtPrݔt›s + !=ð +nuÎ +) { + +380 + `fܗch +( +$this +-> +cڋxtPrݔt›s +-> + `keys +(è +as + +$´Ý”ty +) { + +382 +$v®ue + = +$this +-> +cڋxtPrݔt›s +-> + `g‘Prݔty +( +$´Ý”ty +); + +388 ià( + `´eg_m©ch +('/fže\.cڋÁs$/', +$´Ý”ty +)) { + +391 +$´Ý”ty + = + `sub¡r +($´Ý”ty, 0, + `¡½os +($property, "file.contents") - 1); + +395 +$v®ue + = ""; + +396 +$f + = +Ãw + + `PhšgFže +( +$´ojeù +-> + `»sÞveFže +( +$v®ue +)-> + `g‘CªÚiÿlP©h +()); + +397 ià( +$f +-> + `exi¡s +()) { + +398 +$ä + = +Ãw + + `FžeR—d” +( +$f +); + +399 +$ä +-> + `»adIÁo +( +$v®ue +); + +404 ià( +SŒšgH–³r +:: + `isBoޗn +( +$v®ue +)) { + +405 +$v®ue + = +SŒšgH–³r +:: + `boޗnV®ue +($value); + +408 +$c +-> + `put +( +$´Ý”ty +, +$v®ue +); + +414 +Œy + { + +415 +$this +-> + `log +("P¬sšg cڌށem¶©e: " . $this-> +cڌÞTem¶©e +); + +416 +$c +-> + `·r£ +( +$this +-> +cڌÞTem¶©e +, +$·th +); + +417 } + `ÿtch + ( +Exû±iÚ + +$iÛ +) { + +418 +throw + +Ãw + + `BuždExû±iÚ +("CªnÙ wr™·r£dem¶©e: ". +$iÛ +-> + `g‘Mes§ge +()); + +421 +$this +-> + `þ—nup +(); + +422 + } +} + +435 +´Ùeùed + +funùiÚ + + $pÝuϋIn™ŸlCڋxt +( +C­suË + +$cڋxt +) { + +436 +$this +-> +cڋxt +-> + `put +("now", + `¡ráime +("%c", + `time +())); + +437 +$this +-> +cڋxt +-> + `put +("task", $this); + +438 + } +} + +448 +´Ùeùed + +funùiÚ + + $þ—nup +() { + +449 + } +} + +457 þas  + cAssigÃdV¬ + { + +459 +´iv©e + + m$Çme +; + +460 +´iv©e + + m$v®ue +; + +462 +funùiÚ + + $£tName +( +$v +) { + +463 +$this +-> +Çme + = +$v +; + +466 +funùiÚ + + $£tV®ue +( +$v +) { + +467 +$this +-> +v®ue + = +$v +; + +468 + } +} + +470 +funùiÚ + + $g‘Name +() { + +471  +$this +-> +Çme +; + +472 + } +} + +474 +funùiÚ + + $g‘V®ue +() { + +475  +$this +-> +v®ue +; + +476 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ExtractBaseTask.php + +1 +fže£t + = +Ãw + + `FžeS‘ +(); + +49 +$this +-> +fže£ts +[] = $this-> +fže£t +; + +50  +$this +-> +fže£t +; + +57 +public + +funùiÚ + + $£tFže +( +PhšgFže + +$fže +) { + +58 +$this +-> +fže + = +$fže +; + +59 + } +} + +65 +public + +funùiÚ + + $£tToDœ +( +PhšgFže + +$todœ +) { + +66 +$this +-> +todœ + = +$todœ +; + +67 + } +} + +69 +public + +funùiÚ + + $£tRemoveP©h +( +$»mov•©h +) + +71 +$this +-> +»mov•©h + = +$»mov•©h +; + +72 + } +} + +78 +public + +funùiÚ + + $maš +() { + +80 +$this +-> + `v®id©eA‰ribu‹s +(); + +82 +$fžesToExŒaù + = + `¬¿y +(); + +83 ià( +$this +-> +fže + !=ð +nuÎ +) { + +84 if(! +$this +-> + `isDe¡š©iÚUpToD©e +($this-> +fže +)) { + +85 +$fžesToExŒaù +[] = +$this +-> +fže +; + +87 +$this +-> + `log +('NÙhšgØdo: ' . $this-> +todœ +-> + `g‘AbsÞu‹P©h +(è. ' i u°tØd©fÜ ' . $this-> +fže +-> + `g‘CªÚiÿlP©h +(), +Projeù +:: +MSG_INFO +); + +91 + `fܗch +( +$this +-> +fže£ts + +as + +$com´es£dArchiveFže£t +) { + +92 +$com´es£dArchiveDœSÿ” + = +$com´es£dArchiveFže£t +-> + `g‘DœeùÜySÿ” +( +$this +-> +´ojeù +); + +93 +$com´es£dArchiveFžes + = +$com´es£dArchiveDœSÿ” +-> + `g‘InþudedFžes +(); + +94 +$com´es£dArchiveDœ + = +$com´es£dArchiveFže£t +-> + `g‘Dœ +( +$this +-> +´ojeù +); + +96 + `fܗch + ( +$com´es£dArchiveFžes + +as + +$com´es£dArchiveFžeP©h +) { + +97 +$com´es£dArchiveFže + = +Ãw + + `PhšgFže +( +$com´es£dArchiveDœ +, +$com´es£dArchiveFžeP©h +); + +98 if( +$com´es£dArchiveFže +-> + `isDœeùÜy +()) + +100 +throw + +Ãw + + `BuždExû±iÚ +( +$com´es£dArchiveFže +-> + `g‘AbsÞu‹P©h +() . ' compressed‡rchive cannot be‡ directory.'); + +103 if(! +$this +-> + `isDe¡š©iÚUpToD©e +( +$com´es£dArchiveFže +)) { + +104 +$fžesToExŒaù +[] = +$com´es£dArchiveFže +; + +106 +$this +-> + `log +('NÙhšgØdo: ' . $this-> +todœ +-> + `g‘AbsÞu‹P©h +(è. ' i u°tØd©fÜ ' . +$com´es£dArchiveFže +-> + `g‘CªÚiÿlP©h +(), +Projeù +:: +MSG_INFO +); + +111 + `fܗch + ( +$fžesToExŒaù + +as + +$com´es£dArchiveFže +) { + +112 +$this +-> + `exŒaùArchive +( +$com´es£dArchiveFže +); + +114 + } +} + +116 +ab¡¿ù + +´Ùeùed + +funùiÚ + +exŒaùArchive +( +PhšgFže + +$com´es£dArchiveFže +); + +123 +´Ùeùed + +funùiÚ + + $isDe¡š©iÚUpToD©e +( +PhšgFže + +$com´es£dArchiveFže +) { + +124 ià(! +$com´es£dArchiveFže +-> + `exi¡s +()) { + +125 +throw + +Ãw + + `BuždExû±iÚ +("Could‚Ù fšd fž" . +$com´es£dArchiveFže +-> + `__toSŒšg +() . "oƒxtract."); + +128 +$com´es£dArchiveCڋÁ + = +$this +-> + `li¡ArchiveCڋÁ +( +$com´es£dArchiveFže +); + +129 if( + `is_¬¿y +( +$com´es£dArchiveCڋÁ +)) { + +131 +$fžeSy¡em + = +FžeSy¡em +:: + `g‘FžeSy¡em +(); + +132 + `fܗch + ( +$com´es£dArchiveCڋÁ + +as + +$com´essArchiveP©hInfo +) { + +133 +$com´essArchiveFž’ame + = +$com´essArchiveP©hInfo +['filename']; + +134 if(! + `em±y +( +$this +-> +»mov•©h +è&& + `¡¾’ +( +$com´essArchiveFž’ame +) >= strlen($this->removepath)) + +136 +$com´essArchiveFž’ame + = + `´eg_»¶aû +('/^' . +$this +-> +»mov•©h + . '/','', $compressArchiveFilename); + +138 +$com´essArchiveP©h + = +Ãw + + `PhšgFže +( +$this +-> +todœ +, +$com´essArchiveFž’ame +); + +140 if(! +$com´essArchiveP©h +-> + `exi¡s +() || + +141 +$fžeSy¡em +-> + `com·»MTimes +( +$com´es£dArchiveFže +-> + `g‘CªÚiÿlP©h +(), +$com´essArchiveP©h +->getCanonicalPath()) == 1) { + +142  +çl£ +; + +148  +Œue +; + +149 + } +} + +151 +ab¡¿ù + +´Ùeùed + +funùiÚ + +li¡ArchiveCڋÁ +( +PhšgFže + +$com´es£dArchiveFže +); + +160 +´Ùeùed + +funùiÚ + + $v®id©eA‰ribu‹s +() { + +162 ià( +$this +-> +fže + ==ð +nuÎ + && + `couÁ +($this-> +fže£ts +) === 0) { + +163 +throw + +Ãw + + `BuždExû±iÚ +("Specify‡t†east one source compressed‡rchive -‡ file or‡ fileset."); + +166 ià( +$this +-> +todœ + ==ð +nuÎ +) { + +167 +throw + +Ãw + + `BuždExû±iÚ +("todir must be set."); + +170 ià( +$this +-> +todœ + !=ð +nuÎ + && $this->todœ-> + `exi¡s +(è&& !$this->todœ-> + `isDœeùÜy +()) { + +171 +throw + +Ãw + + `BuždExû±iÚ +("todir must be‡ directory."); + +174 ià( +$this +-> +fže + !=ð +nuÎ + && $this->fže-> + `exi¡s +(è&& $this->fže-> + `isDœeùÜy +()) { + +175 +throw + +Ãw + + `BuždExû±iÚ +("Compressed‡rchive file cannot be‡ directory."); + +178 ià( +$this +-> +fže + !=ð +nuÎ + && !$this->fže-> + `exi¡s +()) { + +179 +throw + +Ãw + + `BuždExû±iÚ +("Could‚Ù fšd com´es£d‡rchivfž" . +$this +-> +fže +-> + `__toSŒšg +() . "oƒxtract."); + +181 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/FtpDeployTask.php + +1 +fže£ts + = + `¬¿y +(); + +62 +$this +-> +com¶‘eDœM­ + = + `¬¿y +(); + +65 +public + +funùiÚ + + $£tHo¡ +( +$ho¡ +) { + +66 +$this +-> +ho¡ + = +$ho¡ +; + +67 + } +} + +69 +public + +funùiÚ + + $£tPÜt +( +$pÜt +) { + +70 +$this +-> +pÜt + = (è +$pÜt +; + +71 + } +} + +73 +public + +funùiÚ + + $£tU£ºame +( +$u£ºame +) { + +74 +$this +-> +u£ºame + = +$u£ºame +; + +75 + } +} + +77 +public + +funùiÚ + + $£tPasswÜd +( +$·sswÜd +) { + +78 +$this +-> +·sswÜd + = +$·sswÜd +; + +79 + } +} + +81 +public + +funùiÚ + + $£tDœ +( +$dœ +) { + +82 +$this +-> +dœ + = +$dœ +; + +83 + } +} + +85 +public + +funùiÚ + + $£tMode +( +$mode +) { + +86  + `¡¹Þow” +( +$mode +)) { + +88 +$this +-> +mode + = +FTP_ASCII +; + +92 +$this +-> +mode + = +FTP_BINARY +; + +95 + } +} + +97 +public + +funùiÚ + + $£tCˬFœ¡ +( +$þ—rFœ¡ +) { + +98 +$this +-> +þ—rFœ¡ + = ( +boÞ +è +$þ—rFœ¡ +; + +99 + } +} + +101 +funùiÚ + + $ü—‹FžeS‘ +() { + +102 +$num + = + `¬¿y_push +( +$this +-> +fže£ts +, +Ãw + + `FžeS‘ +()); + +103  +$this +-> +fže£ts +[ +$num +-1]; + +104 + } +} + +109 +public + +funùiÚ + + $š™ +() { + +110 +$·ths + = + `ex¶ode +( +PATH_SEPARATOR +, + `g‘_šþude_·th +()); + +111 + `fܗch +( +$·ths + +as + +$·th +) { + +112 if( + `fže_exi¡s +( +$·th +. +DIRECTORY_SEPARATOR +.'Net'.DIRECTORY_SEPARATOR.'FTP.php')) { + +113  +Œue +; + +116 +throw + +Ãw + + `BuždExû±iÚ +('The FTP Deployask„equireshe Net_FTP PEAR…ackage.'); + +117 + } +} + +122 +public + +funùiÚ + + $maš +() { + +123 +$´ojeù + = +$this +-> + `g‘Projeù +(); + +125 +»quœe_Úû + 'Net/FTP.php'; + +126 +$áp + = +Ãw + + `N‘_FTP +( +$this +-> +ho¡ +, $this-> +pÜt +); + +127 +$»t + = +$áp +-> + `cÚÃù +(); + +128 if( +PEAR +:: + `isE¼Ü +( +$»t +)) + +129 +throw + +Ãw + + `BuždExû±iÚ +('Could‚Ù cÚÃùØFTP s”v” '. +$this +-> +ho¡ +.' oÀp܈'.$this-> +pÜt +.': '. +$»t +-> + `g‘Mes§ge +()); + +130 +$»t + = +$áp +-> + `logš +( +$this +-> +u£ºame +, $this-> +·sswÜd +); + +131 if( +PEAR +:: + `isE¼Ü +( +$»t +)) + +132 +throw + +Ãw + + `BuždExû±iÚ +('Could‚Ù†ogšØFTP s”v” '. +$this +-> +ho¡ +.' oÀp܈'.$this-> +pÜt +.' w™h u£ºam'.$this-> +u£ºame +.': '. +$»t +-> + `g‘Mes§ge +()); + +134 if( +$this +-> +þ—rFœ¡ +) { + +136 +$this +-> + `log +('Cˬšg dœeùÜy '.$this-> +dœ +, +Projeù +:: +MSG_INFO +); + +137 +$dœ + = + `sub¡r +( +$this +-> +dœ +, -1) == '/' ? $this->dir : $this->dir.'/'; + +138 +$áp +-> + `rm +( +$dœ +, +Œue +); + +139 +$áp +-> + `mkdœ +( +$dœ +); + +142 +$»t + = +$áp +-> + `cd +( +$this +-> +dœ +); + +143 if( +PEAR +:: + `isE¼Ü +( +$»t +)) + +144 +throw + +Ãw + + `BuždExû±iÚ +('Could‚Ù chªgtØdœeùÜy '. +$this +-> +dœ +.': '. +$»t +-> + `g‘Mes§ge +()); + +146 +$fs + = +FžeSy¡em +:: + `g‘FžeSy¡em +(); + +147 +$cÚv”t + = +$fs +-> + `g‘S•¬©Ü +() == '\\'; + +149 + `fܗch +( +$this +-> +fže£ts + +as + +$fs +) { + +150 +$ds + = +$fs +-> + `g‘DœeùÜySÿ” +( +$´ojeù +); + +151 +$äomDœ + = +$fs +-> + `g‘Dœ +( +$´ojeù +); + +152 +$¤cFžes + = +$ds +-> + `g‘InþudedFžes +(); + +153 +$¤cDœs + = +$ds +-> + `g‘InþudedDœeùܛs +(); + +154 + `fܗch +( +$¤cDœs + +as + +$dœÇme +) { + +155 if( +$cÚv”t +) + +156 +$dœÇme + = + `¡r_»¶aû +('\\', '/', $dirname); + +157 +$this +-> + `log +('WžÈü—‹ dœeùÜy '. +$dœÇme +, +Projeù +:: +MSG_VERBOSE +); + +158 +$»t + = +$áp +-> + `mkdœ +( +$dœÇme +, +Œue +); + +159 if( +PEAR +:: + `isE¼Ü +( +$»t +)) + +160 +throw + +Ãw + + `BuždExû±iÚ +('Could‚Ù c»©dœeùÜy '. +$dœÇme +.': '. +$»t +-> + `g‘Mes§ge +()); + +162 + `fܗch +( +$¤cFžes + +as + +$fž’ame +) { + +163 +$fže + = +Ãw + + `PhšgFže +( +$äomDœ +-> + `g‘AbsÞu‹P©h +(), +$fž’ame +); + +164 if( +$cÚv”t +) + +165 +$fž’ame + = + `¡r_»¶aû +('\\', '/', $filename); + +166 +$this +-> + `log +('WžÈcÝy '. +$fže +-> + `g‘CªÚiÿlP©h +().'Ø'. +$fž’ame +, +Projeù +:: +MSG_VERBOSE +); + +167 +$»t + = +$áp +-> + `put +( +$fže +-> + `g‘CªÚiÿlP©h +(), +$fž’ame +, +Œue +, +$this +-> +mode +); + +168 if( +PEAR +:: + `isE¼Ü +( +$»t +)) + +169 +throw + +Ãw + + `BuždExû±iÚ +('Could‚Ù d•loy fž'. +$fž’ame +.': '. +$»t +-> + `g‘Mes§ge +()); + +173 +$áp +-> + `discÚÃù +(); + +174 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/JslLintTask.php + +1 +showW¬nšgs + = +SŒšgH–³r +:: + `boޗnV®ue +( +$show +); + +53 +public + +funùiÚ + + $£tH®tOnFažu» +( +$aV®ue +) { + +54 +$this +-> +h®tOnFažu» + = +$aV®ue +; + +55 + } +} + +61 +public + +funùiÚ + + $£tFže +( +PhšgFže + +$fže +) { + +62 +$this +-> +fže + = +$fže +; + +63 + } +} + +70 +funùiÚ + + $ü—‹FžeS‘ +() { + +71 +$num + = + `¬¿y_push +( +$this +-> +fže£ts +, +Ãw + + `FžeS‘ +()); + +72  +$this +-> +fže£ts +[ +$num +-1]; + +73 + } +} + +78 +public + +funùiÚ + + $maš +() { + +79 if(! + `is£t +( +$this +-> +fže +è +ªd + + `couÁ +($this-> +fže£ts +) == 0) { + +80 +throw + +Ãw + + `BuždExû±iÚ +("Missingƒither‡‚ested fileset or‡ttribute 'file' set"); + +83 if( +$this +-> +fže + +š¡ªûof + +PhšgFže +) { + +84 +$this +-> + `lšt +($this-> +fže +-> + `g‘P©h +()); + +86 +$´ojeù + = +$this +-> + `g‘Projeù +(); + +87 + `fܗch +( +$this +-> +fže£ts + +as + +$fs +) { + +88 +$ds + = +$fs +-> + `g‘DœeùÜySÿ” +( +$´ojeù +); + +89 +$fžes + = +$ds +-> + `g‘InþudedFžes +(); + +90 +$dœ + = +$fs +-> + `g‘Dœ +( +$this +-> +´ojeù +)-> + `g‘P©h +(); + +91 + `fܗch +( +$fžes + +as + +$fže +) { + +92 +$this +-> + `lšt +( +$dœ +. +DIRECTORY_SEPARATOR +. +$fže +); + +97 ià( +$this +-> +h®tOnFažu» + && $this-> +hasE¼Üs +è +throw + +Ãw + + `BuždExû±iÚ +('SyÁaxƒ¼Ü(sèš JS fžes:' . + `im¶ode +(', ',$this-> +badFžes +)); + +98 + } +} + +106 +´Ùeùed + +funùiÚ + + $lšt +( +$fže +) + +108 + `exec +('j¦', +$ouut +); + +109 ià(! + `´eg_m©ch +('/JavaSüt\sLšt/', + `im¶ode +('', +$ouut +))è +throw + +Ãw + + `BuždExû±iÚ +('Javascript Lint‚ot found'); + +111 +$commªd + = 'jsl -output-format file:__FILE__;line:__LINE__;message:__ERROR__ -process '; + +113 if( + `fže_exi¡s +( +$fže +)) + +115 if( + `is_»adabË +( +$fže +)) + +117 +$mes§ges + = + `¬¿y +(); + +118 + `exec +( +$commªd +.'"'. +$fže +.'"', +$mes§ges +); + +120 +$summ¬y + = +$mes§ges +[($messages) - 1]; + +122 + `´eg_m©ch +('/(\d+)\£¼Ü/', +$summ¬y +, +$m©ches +); + +123 +$”rÜCouÁ + = +$m©ches +[1]; + +125 + `´eg_m©ch +('/(\d+)\sw¬nšg/', +$summ¬y +, +$m©ches +); + +126 +$w¬nšgCouÁ + = +$m©ches +[1]; + +128 +$”rÜs + = + `¬¿y +(); + +129 +$w¬nšgs + = + `¬¿y +(); + +130 ià( +$”rÜCouÁ + > 0 || +$w¬nšgCouÁ + > 0) { + +131 +$Ï¡ + = +çl£ +; + +132 + `fܗch + ( +$mes§ges + +as + +$mes§ge +) { + +133 +$m©ches + = + `¬¿y +(); + +134 ià( + `´eg_m©ch +('/^(\.*)\^$/', +$mes§ge +)) { + +135 +$cÞumn + = + `¡¾’ +( +$mes§ge +); + +136 ià( +$Ï¡ + == 'error') { + +137 +$”rÜs +[ + `couÁ +($”rÜsè- 1]['cÞumn'] = +$cÞumn +; + +138 } ià( +$Ï¡ + == 'warning') { + +139 +$w¬nšgs +[ + `couÁ +($w¬nšgsè- 1]['cÞumn'] = +$cÞumn +; + +141 +$Ï¡ + = +çl£ +; + +143 ià(! + `´eg_m©ch +('/^fže:(.+);lše:(\d+);mes§ge:(.+)$/', +$mes§ge +, +$m©ches +)) ; + +144 +$msg + = +$m©ches +[3]; + +145 +$d©a + = + `¬¿y +('fž’ame' => +$m©ches +[1], 'lše' => $m©ches[2], 'mes§ge' => +$msg +); + +146 ià( + `´eg_m©ch +('/^.*”rÜ:.+$/i', +$msg +)) { + +147 +$”rÜs +[] = +$d©a +; + +148 +$Ï¡ + = 'error'; + +149 } ià( + `´eg_m©ch +('/^.*w¬nšg:.+$/i', +$msg +)) { + +150 +$w¬nšgs +[] = +$d©a +; + +151 +$Ï¡ + = 'warning'; + +156 if( +$this +-> +showW¬nšgs + && +$w¬nšgCouÁ + > 0) + +158 +$this +-> + `log +( +$fže + . ': ' . +$w¬nšgCouÁ + . ' w¬nšg d‘eùed', +Projeù +:: +MSG_WARN +); + +159 + `fܗch + ( +$w¬nšgs + +as + +$w¬nšg +) { + +160 +$this +-> + `log +('-†š' . +$w¬nšg +['lše'] . ( + `is£t +($w¬nšg['cÞumn']è? ' cÞumÀ' . $w¬nšg['cÞumn'] : ''è. ': ' . $w¬nšg['mes§ge'], +Projeù +:: +MSG_WARN +); + +164 if( +$”rÜCouÁ + > 0) + +166 +$this +-> + `log +( +$fže + . ': ' . +$”rÜCouÁ + . 'ƒ¼Ü d‘eùed', +Projeù +:: +MSG_ERR +); + +167 + `fܗch + ( +$”rÜs + +as + +$”rÜ +) { + +168 +$this +-> + `log +('-†š' . +$”rÜ +['lše'] . ( + `is£t +($”rÜ['cÞumn']è? ' cÞumÀ' . $”rÜ['cÞumn'] : ''è. ': ' . $”rÜ['mes§ge'], +Projeù +:: +MSG_ERR +); + +170 +$this +-> +badFžes +[] = +$fže +; + +171 +$this +-> +hasE¼Üs + = +Œue +; + +172 } ià(! +$this +-> +showW¬nšgs + || +$w¬nšgCouÁ + == 0) { + +173 +$this +-> + `log +( +$fže + . ': NØsyÁaxƒ¼Ü d‘eùed', +Projeù +:: +MSG_INFO +); + +176 +throw + +Ãw + + `BuždExû±iÚ +('P”missiÚ d’›d: '. +$fže +); + +179 +throw + +Ãw + + `BuždExû±iÚ +('FžnÙ found: '. +$fže +); + +181 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/MailTask.php + +1 + `log +('S’dšg mažØ' . $this-> +»c›Á + ); + +43 + `maž +( +$this +-> +»c›Á +, $this-> +subjeù +, $this-> +msg +); + +47 +funùiÚ + + $£tMsg +( +$msg +) { + +48 +$this +-> + `£tMes§ge +( +$msg +); + +49 + } +} + +52 +funùiÚ + + $£tMes§ge +( +$msg +) { + +53 +$this +-> +msg + = ( +¡ršg +è +$msg +; + +54 + } +} + +57 +funùiÚ + + $£tSubjeù +( +$subjeù +) { + +58 +$this +-> +subjeù + = ( +¡ršg +è +$subjeù +; + +59 + } +} + +62 +funùiÚ + + $£tRec›Á +( +$»c›Á +) { + +63 +$this +-> +»c›Á + = ( +¡ršg +è +$»c›Á +; + +64 + } +} + +67 +funùiÚ + + $£tTo +( +$»c›Á +) { + +68 +$this +-> +»c›Á + = ( +¡ršg +è +$»c›Á +; + +69 + } +} + +72 +funùiÚ + + $addText +( +$msg +) + +74 +$this +-> +msg + = ( +¡ršg +è +$msg +; + +75 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ManifestTask.php + +1 0,'totalFileSize' => 0); + +115 +public + +funùiÚ + + $£tFže +( +PhšgFže + +$fže +) + +117 +$this +-> +fže + = +$fže +; + +126 +public + +funùiÚ + + $£tChecksum +( +$mixed +) + +128 if( + `is_¡ršg +( +$mixed +)) { + +129 +$d©a + = + `¬¿y +( + `¡¹Þow” +( +$mixed +)); + +131 if( + `¡½os +( +$d©a +[0],',')) { + +132 +$d©a + = + `ex¶ode +(',', +$mixed +); + +135 +$this +-> +checksum + = +$d©a +; + +137 } + `–£if +( +$mixed + ==ð +Œue +) { + +138 +$this +-> +checksum + = + `¬¿y +('md5'); + +141 + } +} + +149 +public + +funùiÚ + + $£tS®t +( +$¡ršg +) + +151 +$this +-> +§É + = +$¡ršg +; + +152 + } +} + +160 +public + +funùiÚ + + $ü—‹FžeS‘ +() + +162 +$num + = + `¬¿y_push +( +$this +-> +fže£ts +, +Ãw + + `FžeS‘ +()); + +163  +$this +-> +fže£ts +[ +$num +-1]; + +164 + } +} + +169 +public + +funùiÚ + + $š™ +() + +172 + } +} + +177 +public + +funùiÚ + + $maš +() + +179 +$this +-> + `v®id©eA‰ribu‹s +(); + +181 if( +$this +-> +aùiÚ + == 'w') { + +182 +$this +-> + `wr™e +(); + +184 } + `–£if +( +$this +-> +aùiÚ + == 'r') { + +185 +$this +-> + `»ad +(); + +188 + } +} + +196 +´iv©e + +funùiÚ + + $wr™e +() + +198 +$´ojeù + = +$this +-> + `g‘Projeù +(); + +200 if(! + `touch +( +$this +-> +fže +-> + `g‘P©h +())) { + +201 +throw + +Ãw + + `BuždExû±iÚ +("UÇbˁØwr™tØ". +$this +-> +fže +-> + `g‘P©h +()."."); + +204 +$this +-> + `log +("Wr™šgØ" . $this-> +fže +-> + `__toSŒšg +(), +Projeù +:: +MSG_INFO +); + +206 if( + `is_¬¿y +( +$this +-> +checksum +)) { + +207 +$this +-> + `log +("Usšg " . + `im¶ode +(', ',$this-> +checksum +)." fÜ checksumšg.", +Projeù +:: +MSG_INFO +); + +210 + `fܗch +( +$this +-> +fže£ts + +as + +$fs +) { + +212 +$dœ + = +$fs +-> + `g‘Dœ +( +$this +-> +´ojeù +)-> + `g‘P©h +(); + +214 +$ds + = +$fs +-> + `g‘DœeùÜySÿ” +( +$´ojeù +); + +215 +$äomDœ + = +$fs +-> + `g‘Dœ +( +$´ojeù +); + +216 +$¤cFžes + = +$ds +-> + `g‘InþudedFžes +(); + +217 +$¤cDœs + = +$ds +-> + `g‘InþudedDœeùܛs +(); + +219 + `fܗch +( +$ds +-> + `g‘InþudedFžes +(è +as + +$fže_·th +) { + +220 +$lše + = +$fže_·th +; + +221 if( +$this +-> +checksum +) { + +222 + `fܗch +( +$this +-> +checksum + +as + +$®go +) { + +223 if(! +$hash + = +$this +-> + `hashFže +( +$dœ +.'/'. +$fže_·th +, +$®go +)) { + +224 +throw + +Ãw + + `BuždExû±iÚ +("Hashing $dir/$file_path with $algo failed!"); + +227 +$lše + .ð"\t". +$hash +; + +230 +$lše + .= "\n"; + +231 +$mªiã¡ +[] = +$lše +; + +232 +$this +-> + `log +("Addšg fž". +$fže_·th +, +Projeù +:: +MSG_VERBOSE +); + +233 +$this +-> +m‘a +['totalFileCount'] ++; + +234 +$this +-> +m‘a +['tÙ®FžeSize'] +ð + `fžesize +( +$dœ +.'/'. +$fže_·th +); + +239 + `fže_put_cڋÁs +( +$this +-> +fže +, +$mªiã¡ +); + +241 +$this +-> + `log +("DÚe. TÙ® fžes: ".$this-> +m‘a +['tÙ®FžeCouÁ'].". TÙ® fžsize: ".$this->m‘a['tÙ®FžeSize']." by‹s.", +Projeù +:: +MSG_INFO +); + +242 + } +} + +247 +´iv©e + +funùiÚ + + $»ad +() + +249 +throw + +Ãw + + `BuždExû±iÚ +("Checking‡gainst manifest‚ot yet supported."); + +250 + } +} + +264 +´iv©e + +funùiÚ + + $hash +( +$msg +, +$®go +) + +266 if( + `ex‹nsiÚ_lßded +('hash')) { + +267 +$®go + = + `¡¹Þow” +($algo); + +269 if( + `š_¬¿y +( +$®go +, + `hash_®gos +())) { + +270  + `hash +( +$®go +, +$this +-> +§É +. +$msg +); + +275 if( + `ex‹nsiÚ_lßded +('mhash')) { + +276 +$®go + = + `¡¹ouµ” +($algo); + +278 if( + `defšed +('MHASH_'. +$®go +)) { + +279  + `mhash +('MHASH_'. +$®go +, +$this +-> +§É +. +$msg +); + +284  + `¡¹Þow” +( +$®go +)) { + +286  + `md5 +( +$this +-> +§É +. +$msg +); + +288  + `abs +( + `üc32 +( +$this +-> +§É +. +$msg +)); + +291  +çl£ +; + +292 + } +} + +302 +´iv©e + +funùiÚ + + $hashFže +( +$fže +, +$®go +) + +304 if(! + `fže_exi¡s +( +$fže +)) { + +305  +çl£ +; + +308 +$msg + = + `fže_g‘_cڋÁs +( +$fže +). + `fžesize +($fže). + `fžemtime +($file); + +310  +$this +-> + `hash +( +$msg +, +$®go +); + +311 + } +} + +320 +´Ùeùed + +funùiÚ + + $v®id©eA‰ribu‹s +() + +322 if( +$this +-> +aùiÚ + != 'r' && $this->action != 'w') { + +323 +throw + +Ãw + + `BuždExû±iÚ +("'action'‡ttribute has‚on valid value. Use 'r' or 'w'"); + +326 if( + `em±y +( +$this +-> +§É +)) { + +327 +$this +-> + `log +("NاɅrovided. S³cify oà w™hh'§É'‡‰ribu‹.", +Projeù +:: +MSG_WARN +); + +330 ià( + `is_nuÎ +( +$this +-> +fže +è&& + `couÁ +($this-> +fže£ts +) === 0) { + +331 +throw + +Ãw + + `BuždExû±iÚ +("Specify‡t†east sources‡nd destination -‡ file or‡ fileset."); + +334 ià(! + `is_nuÎ +( +$this +-> +fže +è&& $this->fže-> + `exi¡s +(è&& $this->fže-> + `isDœeùÜy +()) { + +335 +throw + +Ãw + + `BuždExû±iÚ +("Destination file cannot be‡ directory."); + +338 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/PackageAsPathTask.php + +1 +´ojeù +-> + `£tU£rPrݔty +($this-> +Çme +, + `¡¹r +($this-> +pckg +, '.', '/')); + +52 +public + +funùiÚ + + $£tPackage +( +$pckg +) + +54 +$this +-> +pckg + = +$pckg +; + +55 + } +} + +60 +public + +funùiÚ + + $£tName +( +$Çme +) + +62 +$this +-> +Çme + = +$Çme +; + +63 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/PearPackage2Task.php + +1 +pkg +-> + `£tPackage +($this-> +·ckage +); + +102 +$this +-> +pkg +-> + `£tD©e +( + `¡ráime +('%Y-%m-%d')); + +103 +$this +-> +pkg +-> + `£tTime +( + `¡ráime +('%H:%M:%S')); + +105 +$ÃwÝts + = + `¬¿y +(); + +106 + `fܗch + ( +$this +-> +ÝtiÚs + +as + +$Ýt +) { + +107  +$Ýt +-> + `g‘Name +()) { + +109 +$this +-> +pkg +-> + `£tSumm¬y +( +$Ýt +-> + `g‘V®ue +()); + +113 +$this +-> +pkg +-> + `£tDesütiÚ +( +$Ýt +-> + `g‘V®ue +()); + +117 +$this +-> +pkg +-> + `£tUri +( +$Ýt +-> + `g‘V®ue +()); + +121 +$this +-> +pkg +-> + `£tLiûn£ +( +$Ýt +-> + `g‘V®ue +()); + +125 +$this +-> +pkg +-> + `£tChªÃl +( +$Ýt +-> + `g‘V®ue +()); + +129 +$this +-> +pkg +-> + `£tAPIV”siÚ +( +$Ýt +-> + `g‘V®ue +()); + +133 +$this +-> +pkg +-> + `£tR–—£V”siÚ +( +$Ýt +-> + `g‘V®ue +()); + +137 +$this +-> +pkg +-> + `£tR–—£Sbž™y +( +$Ýt +-> + `g‘V®ue +()); + +141 +$this +-> +pkg +-> + `£tAPISbž™y +( +$Ýt +-> + `g‘V®ue +()); + +145 +$this +-> +pkg +-> + `£tNÙes +( +$Ýt +-> + `g‘V®ue +()); + +149 +$this +-> +pkg +-> + `£tPackageTy³ +( +$Ýt +-> + `g‘V®ue +()); + +153 +$this +-> +pkg +-> + `£tPhpD• +( +$Ýt +-> + `g‘V®ue +()); + +157 +$this +-> +pkg +-> + `£tP—rš¡®ËrD• +( +$Ýt +-> + `g‘V®ue +()); + +161 +$ÃwÝts +[] = +$Ýt +; + +165 +$this +-> +ÝtiÚs + = +$ÃwÝts +; + +167 +$Ãwm­s + = + `¬¿y +(); + +168 + `fܗch + ( +$this +-> +m­pšgs + +as + +$m­ +) { + +169  +$m­ +-> + `g‘Name +()) { + +171 +$d•s + = +$m­ +-> + `g‘V®ue +(); + +172 + `fܗch + ( +$d•s + +as + +$d• +) { + +173 +$ty³ + = + `is£t +( +$d• +['optional']) ? 'optional' : 'required'; + +174 +$mš + = + `is£t +( +$d• +['min']) ? $dep['min'] : $dep['version']; + +175 +$max + = + `is£t +( +$d• +['max']) ? $dep['max'] : $dep['version']; + +176 +$»c + = + `is£t +( +$d• +['recommended']) ? $dep['recommended'] : $dep['version']; + +177 +$chªÃl + = + `is£t +( +$d• +['chªÃl']è? $d•['chªÃl'] : +çl£ +; + +178 +$uri + = + `is£t +( +$d• +['uri']è? $d•['uri'] : +çl£ +; + +180 ià(! + `em±y +( +$chªÃl +)) { + +181 +$this +-> +pkg +-> + `addPackageD•W™hChªÃl +( + +182 +$ty³ +, +$d• +['Çme'], +$chªÃl +, +$mš +, +$max +, +$»c + + +184 } + `–£if + (! + `em±y +( +$uri +)) { + +185 +$this +-> +pkg +-> + `addPackageD•W™hUri +( + +186 +$ty³ +, +$d• +['Çme'], +$uri + + +193 +$d•s + = +$m­ +-> + `g‘V®ue +(); + +194 + `fܗch + ( +$d•s + +as + +$d• +) { + +195 +$ty³ + = + `is£t +( +$d• +['optional']) ? 'optional' : 'required'; + +196 +$mš + = + `is£t +( +$d• +['min']) ? $dep['min'] : $dep['version']; + +197 +$max + = + `is£t +( +$d• +['max']) ? $dep['max'] : $dep['version']; + +198 +$»c + = + `is£t +( +$d• +['recommended']) ? $dep['recommended'] : $dep['version']; + +200 +$this +-> +pkg +-> + `addEx‹nsiÚD• +( + +201 +$ty³ +, +$d• +['Çme'], +$mš +, +$max +, +$»c + + +207 +$mašš”s + = +$m­ +-> + `g‘V®ue +(); + +209 + `fܗch + ( +$mašš”s + +as + +$mašš” +) { + +210 ià(! + `is£t +( +$mašš” +['active'])) { + +211 +$mašš” +['active'] = 'yes'; + +213 +$this +-> +pkg +-> + `addMašš” +( + +214 +$mašš” +['role'], + +215 +$mašš” +['handle'], + +216 +$mašš” +['name'], + +217 +$mašš” +['email'], + +218 +$mašš” +['active'] + +224 +$»¶aûm’ts + = +$m­ +-> + `g‘V®ue +(); + +226 + `fܗch +( +$»¶aûm’ts + +as + +$»¶aûm’t +) { + +227 +$this +-> +pkg +-> + `addR•Ïûm’t +( + +228 +$»¶aûm’t +['path'], + +229 +$»¶aûm’t +['type'], + +230 +$»¶aûm’t +['from'], + +231 +$»¶aûm’t +['to'] + +237 +$Ãwm­s +[] = +$m­ +; + +240 +$this +-> +m­pšgs + = +$Ãwm­s +; + +241 + } +} + +247 +public + +funùiÚ + + $maš +() + +249 ià( +$this +-> +dœ + ==ð +nuÎ +) { + +250 +throw + +Ãw + + `BuždExû±iÚ +("You must specifyhe \"dir\"‡ttribute for PEAR…ackage 2ask."); + +253 ià( +$this +-> +·ckage + ==ð +nuÎ +) { + +254 +throw + +Ãw + + `BuždExû±iÚ +("You must specifyhe \"name\"‡ttribute for PEAR…ackage 2ask."); + +257 +$this +-> +pkg + = +Ãw + + `PEAR_PackageFžeMªag”2 +(); + +259 +$this +-> + `£tV”siÚ2O±iÚs +(); + +260 +$this +-> + `£tO±iÚs +(); + +262 +$this +-> +pkg +-> + `addR–—£ +(); + +263 +$this +-> +pkg +-> + `g’”©eCڋÁs +(); + +264 +$e + = +$this +-> +pkg +-> + `wr™ePackageFže +(); + +265 ià( +PEAR +:: + `isE¼Ü +( +$e +)) { + +266 +throw + +Ãw + + `BuždExû±iÚ +("UÇbˁØwr™·ckagfže.",‚ew + `Exû±iÚ +( +$e +-> + `g‘Mes§ge +())); + +268 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/PearPackageTask.php + +1 + `pÝuϋO±iÚs +(); + +123 ià(! + `is£t +( +$this +-> +´•¬edO±iÚs +['baseinstalldir'])) { + +124 +$this +-> +´•¬edO±iÚs +['ba£š¡®ldœ'] = $this-> +·ckage +; + +128 ià(! + `is£t +( +$this +-> +´•¬edO±iÚs +['filelistgenerator'])) { + +129 ià( + `em±y +( +$this +-> +fže£ts +)) { + +130 +throw + +Ãw + + `BuždExû±iÚ +("You must use‡ ago specifyhe fileso include inhe…ackage.xml"); + +132 +$this +-> +´•¬edO±iÚs +['filelistgenerator'] = 'Fileset'; + +133 +$this +-> +´•¬edO±iÚs +['u£rg’”©Üdœ'] = + `dœÇme +( +__FILE__ +è. +DIRECTORY_SEPARATOR + . 'pearpackage'; + +135 +$this +-> +´•¬edO±iÚs +['phšg_´ojeù'] = $this-> +´ojeù +; + +136 +$this +-> +´•¬edO±iÚs +['phšg_fže£ts'] = $this-> +fže£ts +; + +137 } + `–£if + ( +$this +-> +´•¬edO±iÚs +['fž–i¡g’”agÜ'] !ð'Fže£t' && ! + `em±y +($this-> +fže£ts +)) { + +138 +throw + +Ãw + + `BuždExû±iÚ +("You cannot use ƒlement if you have specifiedhe \"filelistgenerator\" option."); + +145 +$e + = +$this +-> +pkg +-> + `£tO±iÚs +($this-> +´•¬edO±iÚs +); + +147 ià( +PEAR +:: + `isE¼Ü +( +$e +)) { + +148 +throw + +Ãw + + `BuždExû±iÚ +("UÇbˁأˆÝtiÚs.",‚ew + `Exû±iÚ +( +$e +-> + `g‘Mes§ge +())); + +150 + } +} + +155 +´iv©e + +funùiÚ + + $fixD•s +( +$d•s +) + +157 + `fܗch + ( + `¬¿y_keys +( +$d•s +è +as + +$d• +) + +159 ià( + `is£t +( +$d•s +[ +$d• +]['optional']) && $deps[$dep]['optional']) + +161 +$d•s +[ +$d• +]['optional'] = "yes"; + +165  +$d•s +; + +166 + } +} + +171 +´iv©e + +funùiÚ + + $pÝuϋO±iÚs +() { + +174 +$this +-> +´•¬edO±iÚs +['·ckage'] = $this-> +·ckage +; + +175 +$this +-> +´•¬edO±iÚs +['·ckagedœeùÜy'] = $this-> +dœ +-> + `g‘AbsÞu‹P©h +(); + +177 ià( +$this +-> +·ckageFže + !=ð +nuÎ +) { + +179 +$f + = +Ãw + + `PhšgFže +( +$this +-> +·ckageFže +-> + `g‘AbsÞu‹P©h +()); + +180 +$this +-> +´•¬edO±iÚs +['·ckagefže'] = +$f +-> + `g‘Name +(); + +182 +$this +-> +´•¬edO±iÚs +['ouutdœeùÜy'] = +$f +-> + `g‘P¬’t +(è. +DIRECTORY_SEPARATOR +; + +183 +$this +-> + `log +("C»©šg…ackagfže: " . +$f +-> + `__toSŒšg +(), +Projeù +:: +MSG_INFO +); + +185 +$this +-> + `log +("C»©šg [deçuÉ]…ackage.xmÈfžš ba£ dœeùÜy.", +Projeù +:: +MSG_INFO +); + +191 + `fܗch +( +$this +-> +ÝtiÚs + +as + +$Ýt +) { + +192 +$this +-> +´•¬edO±iÚs +[ +$Ýt +-> + `g‘Name +(è] = $Ýt-> + `g‘V®ue +(); + +195 + `fܗch +( +$this +-> +m­pšgs + +as + +$m­ +) { + +196 +$v®ue + = +$m­ +-> + `g‘V®ue +(); + +198 ià( +$m­ +-> + `g‘Name +() == 'deps') + +200 +$v®ue + = +$this +-> + `fixD•s +($value); + +203 +$this +-> +´•¬edO±iÚs +[ +$m­ +-> + `g‘Name +(è] = +$v®ue +; + +205 + } +} + +211 +public + +funùiÚ + + $maš +() { + +213 ià( +$this +-> +dœ + ==ð +nuÎ +) { + +214 +throw + +Ãw + + `BuždExû±iÚ +("You must specifyhe \"dir\"‡ttribute for PEAR…ackageask."); + +217 ià( +$this +-> +·ckage + ==ð +nuÎ +) { + +218 +throw + +Ãw + + `BuždExû±iÚ +("You must specifyhe \"name\"‡ttribute for PEAR…ackageask."); + +221 +$this +-> +pkg + = +Ãw + + `PEAR_PackageFžeMªag” +(); + +223 +$this +-> + `£tO±iÚs +(); + +225 +$e + = +$this +-> +pkg +-> + `wr™ePackageFže +(); + +226 ià( +PEAR +:: + `isE¼Ü +( +$e +)) { + +227 +throw + +Ãw + + `BuždExû±iÚ +("UÇbˁØwr™·ckagfže.",‚ew + `Exû±iÚ +( +$e +-> + `g‘Mes§ge +())); + +230 + } +} + +236 +public + +funùiÚ + + $g‘FžeS‘s +() { + +237  +$this +-> +fže£ts +; + +238 + } +} + +249 +funùiÚ + + $ü—‹FžeS‘ +() { + +250 +$num + = + `¬¿y_push +( +$this +-> +fže£ts +, +Ãw + + `FžeS‘ +()); + +251  +$this +-> +fže£ts +[ +$num +-1]; + +252 + } +} + +260 +public + +funùiÚ + + $£tPackage +( +$v +) { + +261 +$this +-> +·ckage + = +$v +; + +262 + } +} + +269 +public + +funùiÚ + + $£tDœ +( +PhšgFže + +$f +) { + +270 +$this +-> +dœ + = +$f +; + +271 + } +} + +278 +public + +funùiÚ + + $£tName +( +$v +) { + +279 +$this +-> +·ckage + = +$v +; + +280 + } +} + +285 +public + +funùiÚ + + $£tDe¡Fže +( +PhšgFže + +$f +) { + +286 +$this +-> +·ckageFže + = +$f +; + +287 + } +} + +292 +funùiÚ + + $ü—‹O±iÚ +() { + +293 +$o + = +Ãw + + `P—rPkgO±iÚ +(); + +294 +$this +-> +ÝtiÚs +[] = +$o +; + +295  +$o +; + +296 + } +} + +301 +funùiÚ + + $ü—‹M­pšg +() { + +302 +$o + = +Ãw + + `P—rPkgM­pšg +(); + +303 +$this +-> +m­pšgs +[] = +$o +; + +304  +$o +; + +305 + } +} + +313 þas  + cP—rPkgO±iÚ + { + +315 +´iv©e + + m$Çme +; + +316 +´iv©e + + m$v®ue +; + +318 +public + +funùiÚ + + $£tName +( +$v +è{ +$this +-> +Çme + = $v; } + +319 +public + +funùiÚ + + $g‘Name +(è{  +$this +-> +Çme +; + } +} + +321 +public + +funùiÚ + + $£tV®ue +( +$v +è{ +$this +-> +v®ue + = $v; + } +} + +322 +public + +funùiÚ + + $g‘V®ue +(è{  +$this +-> +v®ue +; + } +} + +323 +public + +funùiÚ + + $addText +( +$txt +è{ +$this +-> +v®ue + = + `Œim +($txt); + } +} + +330 þas  + cP—rPkgM­pšg + { + +332 +´iv©e + + m$Çme +; + +333 +´iv©e + + m$–em’ts + = +¬¿y +(); + +335 +public + +funùiÚ + + $£tName +( +$v +) { + +336 +$this +-> +Çme + = +$v +; + +339 +public + +funùiÚ + + $g‘Name +() { + +340  +$this +-> +Çme +; + +341 + } +} + +343 +public + +funùiÚ + + $ü—‹EËm’t +() { + +344 +$e + = +Ãw + + `P—rPkgM­pšgEËm’t +(); + +345 +$this +-> +–em’ts +[] = +$e +; + +346  +$e +; + +347 + } +} + +349 +public + +funùiÚ + + $g‘EËm’ts +() { + +350  +$this +-> +–em’ts +; + +351 + } +} + +357 +public + +funùiÚ + + $g‘V®ue +() { + +358 +$v®ue + = + `¬¿y +(); + +359 + `fܗch +( +$this +-> + `g‘EËm’ts +(è +as + +$– +) { + +360 ià( +$– +-> + `g‘Key +(è!=ð +nuÎ +) { + +361 +$v®ue +[ +$– +-> + `g‘Key +(è] = $–-> + `g‘V®ue +(); + +363 +$v®ue +[] = +$– +-> + `g‘V®ue +(); + +366  +$v®ue +; + +367 + } +} + +373 þas  + cP—rPkgM­pšgEËm’t + { + +375 +´iv©e + + m$key +; + +376 +´iv©e + + m$v®ue +; + +377 +´iv©e + + m$–em’ts + = +¬¿y +(); + +379 +public + +funùiÚ + + $£tKey +( +$v +) { + +380 +$this +-> +key + = +$v +; + +383 +public + +funùiÚ + + $g‘Key +() { + +384  +$this +-> +key +; + +385 + } +} + +387 +public + +funùiÚ + + $£tV®ue +( +$v +) { + +388 +$this +-> +v®ue + = +$v +; + +389 + } +} + +396 +public + +funùiÚ + + $g‘V®ue +() { + +397 ià(! + `em±y +( +$this +-> +–em’ts +)) { + +398 +$v®ue + = + `¬¿y +(); + +399 + `fܗch +( +$this +-> +–em’ts + +as + +$– +) { + +400 ià( +$– +-> + `g‘Key +(è!=ð +nuÎ +) { + +401 +$v®ue +[ +$– +-> + `g‘Key +(è] = $–-> + `g‘V®ue +(); + +403 +$v®ue +[] = +$– +-> + `g‘V®ue +(); + +406  +$v®ue +; + +408  +$this +-> +v®ue +; + +410 + } +} + +415 +public + +funùiÚ + + $ü—‹EËm’t +() { + +416 +$e + = +Ãw + + `P—rPkgM­pšgEËm’t +(); + +417 +$this +-> +–em’ts +[] = +$e +; + +418  +$e +; + +419 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/PhpCodeSnifferTask.php + +1 +fže + = +$fže +; + +63 +funùiÚ + + $ü—‹FžeS‘ +() { + +64 +$num + = + `¬¿y_push +( +$this +-> +fže£ts +, +Ãw + + `FžeS‘ +()); + +65  +$this +-> +fže£ts +[ +$num +-1]; + +66 + } +} + +72 +public + +funùiÚ + + $£tSnd¬d +( +$¡ªd¬d +) + +74 ià( +DIRECTORY_SEPARATOR + !ð'/'è +$¡ªd¬d + = + `¡r_»¶aû +('/', DIRECTORY_SEPARATOR, $standard); + +75 +$this +-> +¡ªd¬d + = +$¡ªd¬d +; + +76 + } +} + +82 +public + +funùiÚ + + $£tSniffs +( +$¢iffs +) + +84 +$tok’ + = ' ,;'; + +85 +$¢iff + = + `¡¹ok +( +$¢iffs +, +$tok’ +); + +86  +$¢iff + !=ð +çl£ +) { + +87 +$this +-> +¢iffs +[] = +$¢iff +; + +88 +$¢iff + = + `¡¹ok +( +$tok’ +); + +90 + } +} + +96 +public + +funùiÚ + + $£tShowW¬nšgs +( +$show +) + +98 +$this +-> +showW¬nšgs + = +SŒšgH–³r +:: + `boޗnV®ue +( +$show +); + +99 + } +} + +105 +public + +funùiÚ + + $£tV”bos™y +( +$Ëv– +) + +107 +$this +-> +v”bos™y + = () +$Ëv– +; + +108 + } +} + +114 +public + +funùiÚ + + $£tTabWidth +( +$width +) + +116 +$this +-> +bWidth + = () +$width +; + +117 + } +} + +123 +public + +funùiÚ + + $£tAÎowedFžeEx‹nsiÚs +( +$ex‹nsiÚs +) + +125 +$this +-> +®lowedFžeEx‹nsiÚs + = + `¬¿y +(); + +126 +$tok’ + = ' ,;'; + +127 +$ext + = + `¡¹ok +( +$ex‹nsiÚs +, +$tok’ +); + +128  +$ext + !=ð +çl£ +) { + +129 +$this +-> +®lowedFžeEx‹nsiÚs +[] = +$ext +; + +130 +$ext + = + `¡¹ok +( +$tok’ +); + +132 + } +} + +138 +public + +funùiÚ + + $£tIgnÜeP©‹ºs +( +$·‰”ns +) + +140 +$this +-> +ignÜeP©‹ºs + = + `¬¿y +(); + +141 +$tok’ + = ' ,;'; + +142 +$·‰”n + = + `¡¹ok +( +$·‰”ns +, +$tok’ +); + +143  +$·‰”n + !=ð +çl£ +) { + +144 +$this +-> +ignÜeP©‹ºs +[] = +$·‰”n +; + +145 +$·‰”n + = + `¡¹ok +( +$tok’ +); + +147 + } +} + +153 +public + +funùiÚ + + $£tNoSubdœeùܛs +( +$subdœeùܛs +) + +155 +$this +-> +noSubdœeùܛs + = +SŒšgH–³r +:: + `boޗnV®ue +( +$subdœeùܛs +); + +156 + } +} + +163 +public + +funùiÚ + + $ü—‹CÚfig +() { + +164 +$num + = + `¬¿y_push +( +$this +-> +cÚfigD©a +, +Ãw + + `P¬am‘” +()); + +165  +$this +-> +cÚfigD©a +[ +$num +-1]; + +166 + } +} + +172 +public + +funùiÚ + + $£tShowSniffs +( +$show +) + +174 +$this +-> +showSniffs + = +SŒšgH–³r +:: + `boޗnV®ue +( +$show +); + +175 + } +} + +181 +public + +funùiÚ + + $£tFÜm© +( +$fÜm© +) + +183 +$this +-> +ouutFÜm© + = +$fÜm© +; + +184 + } +} + +189 +public + +funùiÚ + + $maš +() { + +190 if(! + `is£t +( +$this +-> +fže +è +ªd + + `couÁ +($this-> +fže£ts +) == 0) { + +191 +throw + +Ãw + + `BuždExû±iÚ +("Missingƒither‡‚ested fileset or‡ttribute 'file' set"); + +194 +»quœe_Úû + 'PHP/CodeSniffer.php'; + +195 +$codeSnifãr + = +Ãw + + `PHP_CodeSnifãr +( +$this +-> +v”bos™y +, $this-> +bWidth +); + +196 +$codeSnifãr +-> + `£tAÎowedFžeEx‹nsiÚs +( +$this +-> +®lowedFžeEx‹nsiÚs +); + +197 ià( + `is_¬¿y +( +$this +-> +ignÜeP©‹ºs +)è +$codeSnifãr +-> + `£tIgnÜeP©‹ºs +($this->ignorePatterns); + +198 + `fܗch + ( +$this +-> +cÚfigD©a + +as + +$cÚfigD©a +) { + +199 +$codeSnifãr +-> + `£tCÚfigD©a +( +$cÚfigD©a +-> + `g‘Name +(), $cÚfigD©a-> + `g‘V®ue +(), +Œue +); + +202 ià( +$this +-> +fže + +š¡ªûof + +PhšgFže +) { + +203 +$codeSnifãr +-> + `´oûss +( +$this +-> +fže +-> + `g‘P©h +(), $this-> +¡ªd¬d +, $this-> +¢iffs +, $this-> +noSubdœeùܛs +); + +206 +$fžeLi¡ + = + `¬¿y +(); + +207 +$´ojeù + = +$this +-> + `g‘Projeù +(); + +208 + `fܗch + ( +$this +-> +fže£ts + +as + +$fs +) { + +209 +$ds + = +$fs +-> + `g‘DœeùÜySÿ” +( +$´ojeù +); + +210 +$fžes + = +$ds +-> + `g‘InþudedFžes +(); + +211 +$dœ + = +$fs +-> + `g‘Dœ +( +$this +-> +´ojeù +)-> + `g‘P©h +(); + +212 + `fܗch + ( +$fžes + +as + +$fže +) { + +213 +$fžeLi¡ +[] = +$dœ +. +DIRECTORY_SEPARATOR +. +$fže +; + +216 +$codeSnifãr +-> + `´oûss +( +$fžeLi¡ +, +$this +-> +¡ªd¬d +, $this-> +¢iffs +, $this-> +noSubdœeùܛs +); + +218 +$this +-> + `ouut +( +$codeSnifãr +); + +219 + } +} + +225 +´Ùeùed + +funùiÚ + + $ouut +( +$codeSnifãr +) { + +226 ià( +$this +-> +showSniffs +) { + +227 +$¢iffs + = +$codeSnifãr +-> + `g‘Sniffs +(); + +228 +$¢iffSŒ + = ''; + +229 + `fܗch + ( +$¢iffs + +as + +$¢iff +) { + +230 +$¢iffSŒ + .ð'- ' . +$¢iff +. +PHP_EOL +; + +232 +$this +-> + `log +('Thli¡ oàu£d sniff (#' . + `couÁ +( +$¢iffs +è. '): ' . +PHP_EOL + . +$¢iffSŒ +, +Projeù +:: +MSG_INFO +); + +235  +$this +-> +ouutFÜm© +) { + +237 +$this +-> + `ouutCu¡omFÜm© +( +$codeSnifãr +); + +240 +$codeSnifãr +-> + `´štXMLE¼ÜR•Üt +( +$this +-> +showW¬nšgs +); + +243 +$codeSnifãr +-> + `´štCheck¡yËE¼ÜR•Üt +( +$this +-> +showW¬nšgs +); + +246 +$codeSnifãr +-> + `´štCSVE¼ÜR•Üt +( +$this +-> +showW¬nšgs +); + +249 +$codeSnifãr +-> + `´štE¼ÜR•Üt +( +$this +-> +showW¬nšgs +); + +252 +$codeSnifãr +-> + `´štE¼ÜR•ÜtSumm¬y +( +$this +-> +showW¬nšgs +); + +255 +$codeSnifãr +-> + `g’”©eDocs +( +$this +-> +¡ªd¬d +, $this-> +¢iffs +); + +258 +$this +-> + `log +('UnknowÀouuˆfÜm© "' . $this-> +ouutFÜm© + . '"', +Projeù +:: +MSG_INFO +); + +261 + } +} + +267 +´Ùeùed + +funùiÚ + + $ouutCu¡omFÜm© +( +$codeSnifãr +) { + +268 +$»pÜt + = +$codeSnifãr +-> + `´•¬eE¼ÜR•Üt +( +$this +-> +showW¬nšgs +); + +270 +$fžes + = +$»pÜt +['files']; + +271 + `fܗch + ( +$fžes + +as + +$fže + => +$©Œibu‹s +) { + +272 +$”rÜs + = +$©Œibu‹s +['errors']; + +273 +$w¬nšgs + = +$©Œibu‹s +['warnings']; + +274 +$mes§ges + = +$©Œibu‹s +['messages']; + +275 ià( +$”rÜs + > 0) { + +276 +$this +-> + `log +( +$fže + . ': ' . +$”rÜs + . 'ƒ¼Ü' . ($”rÜ > 1 ? 's' : ''è. ' d‘eùed', +Projeù +:: +MSG_ERR +); + +277 +$this +-> + `ouutCu¡omFÜm©Mes§ges +( +$mes§ges +, 'ERROR'); + +279 +$this +-> + `log +( +$fže + . ': NØsyÁaxƒ¼Ü d‘eùed', +Projeù +:: +MSG_VERBOSE +); + +281 ià( +$w¬nšgs + > 0) { + +282 +$this +-> + `log +( +$fže + . ': ' . +$w¬nšgs + . ' w¬nšg' . ($w¬nšg > 1 ? 's' : ''è. ' d‘eùed', +Projeù +:: +MSG_WARN +); + +283 +$this +-> + `ouutCu¡omFÜm©Mes§ges +( +$mes§ges +, 'WARNING'); + +287 +$tÙ®E¼Üs + = +$»pÜt +['totals']['errors']; + +288 +$tÙ®W¬nšgs + = +$»pÜt +['totals']['warnings']; + +289 +$this +-> + `log +( + `couÁ +( +$fžes +è. ' fže wh”checked', +Projeù +:: +MSG_INFO +); + +290 ià( +$tÙ®E¼Üs + > 0) { + +291 +$this +-> + `log +( +$tÙ®E¼Üs + . 'ƒ¼Ü' . ($tÙ®E¼Ü > 1 ? 's' : ''è. ' d‘eùed', +Projeù +:: +MSG_ERR +); + +293 +$this +-> + `log +('NØsyÁaxƒ¼Ü d‘eùed', +Projeù +:: +MSG_INFO +); + +295 ià( +$tÙ®W¬nšgs + > 0) { + +296 +$this +-> + `log +( +$tÙ®W¬nšgs + . ' w¬nšg' . ($tÙ®W¬nšg > 1 ? 's' : ''è. ' d‘eùed', +Projeù +:: +MSG_INFO +); + +298 + } +} + +305 +´Ùeùed + +funùiÚ + + $ouutCu¡omFÜm©Mes§ges +( +$mes§ges +, +$ty³ +) { + +306 + `fܗch + ( +$mes§ges + +as + +$lše + => +$mes§gesP”Lše +) { + +307 + `fܗch + ( +$mes§gesP”Lše + +as + +$cÞumn + => +$mes§gesP”CÞumn +) { + +308 + `fܗch + ( +$mes§gesP”CÞumn + +as + +$mes§ge +) { + +309 +$msgTy³ + = +$mes§ge +['type']; + +310 ià( +$ty³ + =ð +$msgTy³ +) { + +311 +$logLev– + = +Projeù +:: +MSG_INFO +; + +312 ià( +$msgTy³ + == 'ERROR') { + +313 +$logLev– + = +Projeù +:: +MSG_ERR +; + +314 } ià( +$msgTy³ + == 'WARNING') { + +315 +$logLev– + = +Projeù +:: +MSG_WARN +; + +317 +$‹xt + = +$mes§ge +['message']; + +318 +$¡ršg + = +$msgTy³ + . ' iÀlš' . +$lše + . ' cÞumÀ' . +$cÞumn + . ': ' . +$‹xt +; + +319 +$this +-> + `log +( +$¡ršg +, +$logLev– +); + +324 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/PhpLintTask.php + +1 + `£tIÁ”´‘” +( +Phšg +:: + `g‘Prݔty +('php.interpreter')); + +55 +public + +funùiÚ + + $£tIÁ”´‘” +( +$sPhp +) { + +56 +$this +-> +IÁ”´‘” + = +$sPhp +; + +57 + } +} + +63 +public + +funùiÚ + + $£tH®tOnFažu» +( +$aV®ue +) { + +64 +$this +-> +h®tOnFažu» + = +$aV®ue +; + +65 + } +} + +71 +public + +funùiÚ + + $£tFže +( +PhšgFže + +$fže +) { + +72 +$this +-> +fže + = +$fže +; + +73 + } +} + +79 +public + +funùiÚ + + $£tE¼Ü´Ý”ty +( +$´ÝÇme +) + +81 +$this +-> +”rÜPrݔty + = +$´ÝÇme +; + +82 + } +} + +89 +funùiÚ + + $ü—‹FžeS‘ +() { + +90 +$num + = + `¬¿y_push +( +$this +-> +fže£ts +, +Ãw + + `FžeS‘ +()); + +91  +$this +-> +fže£ts +[ +$num +-1]; + +92 + } +} + +97 +public + +funùiÚ + + $maš +() { + +98 if(! + `is£t +( +$this +-> +fže +è +ªd + + `couÁ +($this-> +fže£ts +) == 0) { + +99 +throw + +Ãw + + `BuždExû±iÚ +("Missingƒither‡‚ested fileset or‡ttribute 'file' set"); + +102 if( +$this +-> +fže + +š¡ªûof + +PhšgFže +) { + +103 +$this +-> + `lšt +($this-> +fže +-> + `g‘P©h +()); + +105 +$´ojeù + = +$this +-> + `g‘Projeù +(); + +106 + `fܗch +( +$this +-> +fže£ts + +as + +$fs +) { + +107 +$ds + = +$fs +-> + `g‘DœeùÜySÿ” +( +$´ojeù +); + +108 +$fžes + = +$ds +-> + `g‘InþudedFžes +(); + +109 +$dœ + = +$fs +-> + `g‘Dœ +( +$this +-> +´ojeù +)-> + `g‘P©h +(); + +110 + `fܗch +( +$fžes + +as + +$fže +) { + +111 +$this +-> + `lšt +( +$dœ +. +DIRECTORY_SEPARATOR +. +$fže +); + +116 ià( +$this +-> +h®tOnFažu» + && $this-> +hasE¼Üs +è +throw + +Ãw + + `BuždExû±iÚ +('SyÁaxƒ¼Ü(sèš PHP fžes: '. + `im¶ode +(', ',$this-> +badFžes +)); + +117 + } +} + +125 +´Ùeùed + +funùiÚ + + $lšt +( +$fže +) { + +126 +$commªd + = +$this +-> +IÁ”´‘” + == '' + +128 : +$this +-> +IÁ”´‘” +; + +129 +$commªd + .= ' -l '; + +130 if( + `fže_exi¡s +( +$fže +)) { + +131 if( + `is_»adabË +( +$fže +)) { + +132 +$mes§ges + = + `¬¿y +(); + +133 + `exec +( +$commªd +.'"'. +$fže +.'"', +$mes§ges +); + +134 if(! + `´eg_m©ch +('/^NØsyÁaxƒ¼Ü d‘eùed/', +$mes§ges +[0])) { + +135 ià( + `couÁ +( +$mes§ges +) > 1) { + +136 ià( +$this +-> +”rÜPrݔty +) { + +137 +$this +-> +´ojeù +-> + `£tPrݔty +($this-> +”rÜPrݔty +, +$mes§ges +[1]); + +139 +$this +-> + `log +( +$mes§ges +[1], +Projeù +:: +MSG_ERR +); + +141 +$this +-> + `log +("Could‚Ù…¬£ fže", +Projeù +:: +MSG_ERR +); + +143 +$this +-> +badFžes +[] = +$fže +; + +144 +$this +-> +hasE¼Üs + = +Œue +; + +147 +$this +-> + `log +( +$fže +.': NØsyÁaxƒ¼Ü d‘eùed', +Projeù +:: +MSG_INFO +); + +150 +throw + +Ãw + + `BuždExû±iÚ +('P”missiÚ d’›d: '. +$fže +); + +153 +throw + +Ãw + + `BuždExû±iÚ +('FžnÙ found: '. +$fže +); + +155 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ScpSendTask.php + +1 +ho¡ + = +$h +; + +61 +funùiÚ + + $g‘Ho¡ +() + +63  +$this +-> +ho¡ +; + +64 + } +} + +69 +funùiÚ + + $£tPÜt +( +$p +) + +71 +$this +-> +pÜt + = +$p +; + +72 + } +} + +77 +funùiÚ + + $g‘PÜt +() + +79  +$this +-> +pÜt +; + +80 + } +} + +85 +funùiÚ + + $£tMode +( +$v®ue +) + +87 +$this +-> +mode + = +$v®ue +; + +88 + } +} + +93 +funùiÚ + + $g‘Mode +() + +95  +$this +-> +mode +; + +96 + } +} + +101 +funùiÚ + + $£tU£ºame +( +$u£ºame +) + +103 +$this +-> +u£ºame + = +$u£ºame +; + +104 + } +} + +109 +funùiÚ + + $g‘U£ºame +() + +111  +$this +-> +u£ºame +; + +112 + } +} + +117 +funùiÚ + + $£tPasswÜd +( +$·sswÜd +) + +119 +$this +-> +·sswÜd + = +$·sswÜd +; + +120 + } +} + +125 +funùiÚ + + $g‘PasswÜd +() + +127  +$this +-> +·sswÜd +; + +128 + } +} + +133 +funùiÚ + + $£tLoÿlFže +( +$lFže +) + +135 +$this +-> +loÿlFže + = +$lFže +; + +136 + } +} + +141 +funùiÚ + + $g‘LoÿlFže +( +$lFže +) + +143  +$this +-> +loÿlFže +; + +144 + } +} + +149 +funùiÚ + + $£tRemÙeFže +( +$rFže +) + +151 +$this +-> +»mÙeFže + = +$rFže +; + +152 + } +} + +157 +funùiÚ + + $g‘RemÙeFže +( +$rFže +) + +159  +$this +-> +»mÙeFže +; + +160 + } +} + +165 +public + +funùiÚ + + $š™ +() + +167 ià( + `funùiÚ_exi¡s +('ssh2_connect')) { + +168 +$this +-> +_cÚÃùiÚ + = + `ssh2_cÚÃù +($this-> +ho¡ +, $this-> +pÜt +); + +169 + `ssh2_auth_·sswÜd +( +$this +-> +_cÚÃùiÚ +, $this-> +u£ºame +, $this-> +·sswÜd +); + +171 + `´št + ("ERROR: SSH Extension is‚ot installed"); + +173 + } +} + +178 +public + +funùiÚ + + $maš +() + +180 ià( + `funùiÚ_exi¡s +('ssh2_sý_£nd'è&& ! + `is_nuÎ +( +$this +-> +_cÚÃùiÚ +)) + +182 ià(! + `is_nuÎ +( +$this +-> +mode +)) { + +183 + `ssh2_sý_£nd +( +$this +-> +_cÚÃùiÚ +, $this-> +loÿlFže +, $this-> +»mÙeFže +, $this-> +mode +); + +185 + `ssh2_sý_£nd +( +$this +-> +_cÚÃùiÚ +, $this-> +loÿlFže +, $this-> +»mÙeFže +); + +188 + `´št + ("ERROR: No SSH Connection Available"); + +190 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/SmartyTask.php + +1 +cڌÞTem¶©e + = +$cڌÞTem¶©e +; + +177 + } +} + +184 +public + +funùiÚ + + $g‘CڌÞTem¶©e +() { + +185  +$this +-> +cڌÞTem¶©e +; + +186 + } +} + +195 +public + +funùiÚ + + $£tTem¶©eP©h +( +$‹m¶©eP©h +) { + +196 +$»sÞvedP©h + = ""; + +197 +$tok + = + `¡¹ok +( +$‹m¶©eP©h +, ","); + +198  +$tok + ) { + +201 +$fuÎP©h + = +$this +-> +´ojeù +-> + `»sÞveFže +( +$tok +); + +202 +$ý©h + = +$fuÎP©h +-> + `g‘CªÚiÿlP©h +(); + +203 ià( +$ý©h + ==ð +çl£ +) { + +204 +$this +-> + `log +("Tem¶©dœeùÜy dÛ nكxi¡: " . +$fuÎP©h +-> + `g‘AbsÞu‹P©h +()); + +206 +$»sÞvedP©h + .ð +$ý©h +; + +208 +$tok + = + `¡¹ok +(","); + +209 iàÐ +$tok + ) { + +210 +$»sÞvedP©h + .= ","; + +213 +$this +-> +‹m¶©eP©h + = +$»sÞvedP©h +; + +214 + } +} + +222 +public + +funùiÚ + + $g‘Tem¶©eP©h +() { + +223  +$this +-> +‹m¶©eP©h +; + +224 + } +} + +233 +public + +funùiÚ + + $£tOuutDœeùÜy +( +PhšgFže + +$ouutDœeùÜy +) { + +234 +Œy + { + +235 ià(! +$ouutDœeùÜy +-> + `exi¡s +()) { + +236 +$this +-> + `log +("OuuˆdœeùÜy dÛ nكxi¡, c»©šg: " . +$ouutDœeùÜy +-> + `g‘P©h +(), +Projeù +:: +MSG_VERBOSE +); + +237 ià(! +$ouutDœeùÜy +-> + `mkdœs +()) { + +238 +throw + +Ãw + + `IOExû±iÚ +("UÇbˁØü—‹ Ou±uˆdœeùÜy: " . +$ouutDœeùÜy +-> + `g‘AbsÞu‹P©h +()); + +241 +$this +-> +ouutDœeùÜy + = +$ouutDœeùÜy +-> + `g‘CªÚiÿlP©h +(); + +242 } + `ÿtch + ( +IOExû±iÚ + +$iÛ +) { + +243 +throw + +Ãw + + `BuždExû±iÚ +( +$iÛ +-> + `g‘Mes§ge +()); + +245 + } +} + +251 +public + +funùiÚ + + $g‘OuutDœeùÜy +() { + +252  +$this +-> +ouutDœeùÜy +; + +253 + } +} + +260 +public + +funùiÚ + + $£tOuutFže +( +$ouutFže +) { + +261 +$this +-> +ouutFže + = +$ouutFže +; + +262 + } +} + +269 +public + +funùiÚ + + $g‘OuutFže +() { + +270  +$this +-> +ouutFže +; + +271 + } +} + +277 +public + +funùiÚ + + $£tCompžeP©h +( +$compžeP©h +) { + +278 +$this +-> +compžeP©h + = +$compžeP©h +; + +279 + } +} + +285 +public + +funùiÚ + + $g‘CompžeP©h +() { + +286  +$this +-> +compžeP©h +; + +287 + } +} + +294 +public + +funùiÚ + + $£tFÜûCompže +( +$fÜû +) { + +295 +$this +-> +fÜûCompže + = ( +boޗn +è +$fÜû +; + +296 + } +} + +302 +public + +funùiÚ + + $g‘FÜûCompže +() { + +303  +$this +-> +fÜûCompže +; + +304 + } +} + +311 +public + +funùiÚ + + $£tCÚfigP©h +( +$cÚfigP©h +) { + +312 +$this +-> +cÚfigP©h + = +$cÚfigP©h +; + +313 + } +} + +319 +public + +funùiÚ + + $g‘CÚfigP©h +() { + +320  +$this +-> +cÚfigP©h +; + +321 + } +} + +328 +public + +funùiÚ + + $£tLeáD–im™” +( +$d–im +) { + +329 +$this +-> +ËáD–im™” + = +$d–im +; + +330 + } +} + +336 +public + +funùiÚ + + $g‘LeáD–im™” +() { + +337  +$this +-> +ËáD–im™” +; + +338 + } +} + +345 +public + +funùiÚ + + $£tRightD–im™” +( +$d–im +) { + +346 +$this +-> +rightD–im™” + = +$d–im +; + +347 + } +} + +353 +public + +funùiÚ + + $g‘RightD–im™” +() { + +354  +$this +-> +rightD–im™” +; + +355 + } +} + +365 +public + +funùiÚ + + $£tCڋxtPrݔt›s +( +$fže +) { + +367 +$sourûs + = + `ex¶ode +(",", +$fže +); + +368 +$this +-> +cڋxtPrݔt›s + = +Ãw + + `Prݔt›s +(); + +376  +$i +=0, +$sourûsL’gth += + `couÁ +( +$sourûs +); $i < $sourcesLength; $i++) { + +377 +$sourû + = +Ãw + + `Prݔt›s +(); + +379 +Œy + { + +383 +$fuÎP©h + = +$this +-> +´ojeù +-> + `»sÞveFže +( +$sourûs +[ +$i +]); + +384 +$this +-> + `log +("Usšg cڋxtPrݔt› fže: " . +$fuÎP©h +-> + `__toSŒšg +()); + +385 +$sourû +-> + `lßd +( +$fuÎP©h +); + +387 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +389 +throw + +Ãw + + `BuždExû±iÚ +("Cڋxˆ´Ý”t› fž" . +$sourûs +[ +$i +] . + +394 +$keys + = +$sourû +-> + `keys +(); + +396 + `fܗch + ( +$keys + +as + +$key +) { + +397 +$Çme + = +$key +; + +398 +$v®ue + = +$this +-> +´ojeù +-> + `»¶aûPrݔt›s +( +$sourû +-> + `g‘Prݔty +( +$Çme +)); + +399 +$this +-> +cڋxtPrݔt›s +-> + `£tPrݔty +( +$Çme +, +$v®ue +); + +402 + } +} + +410 +public + +funùiÚ + + $g‘CڋxtPrݔt›s +() { + +411  +$this +-> +cڋxtPrݔt›s +; + +412 + } +} + +426 +public + +funùiÚ + + $š™CڌÞCڋxt +() { + +427 +$this +-> +cڋxt +-> + `þ—r_®l_assign +(); + +428  +$this +-> +cڋxt +; + +429 + } +} + +438 +public + +funùiÚ + + $maš +() { + +441 ià( + `em±y +( +$this +-> +‹m¶©eP©h +)) { + +442 +throw + +Ãw + + `BuždExû±iÚ +("Theemplate…ath‚eedso be defined!"); + +446 ià( +$this +-> +cڌÞTem¶©e + ==ð +nuÎ +) { + +447 +throw + +Ãw + + `BuždExû±iÚ +("The controlemplate‚eedso be defined!"); + +451 ià( +$this +-> +ouutDœeùÜy + ==ð +nuÎ +) { + +452 +throw + +Ãw + + `BuždExû±iÚ +("The output directory‚eedso be defined!"); + +456 ià( +$this +-> +ouutFže + ==ð +nuÎ +) { + +457 +throw + +Ãw + + `BuždExû±iÚ +("The output file‚eedso be defined!"); + +466 +$this +-> +cڋxt + = +Ãw + + `Sm¬ty +(); + +468 ià( +$this +-> +compžeP©h + !=ð +nuÎ +) { + +469 +$this +-> + `log +("Usšg compžeP©h: " . $this-> +compžeP©h +); + +470 +$this +-> +cڋxt +-> +compže_dœ + = $this-> +compžeP©h +; + +473 ià( +$this +-> +cÚfigP©h + !=ð +nuÎ +) { + +474 +$this +-> + `log +("Usšg cÚfigP©h: " . $this-> +cÚfigP©h +); + +475 +$this +-> +cڋxt +-> +cÚfig_dœ + = $this-> +cÚfigP©h +; + +478 ià( +$this +-> +fÜûCompže + !=ð +nuÎ +) { + +479 +$this +-> +cڋxt +-> +fÜû_compže + = $this-> +fÜûCompže +; + +482 ià( +$this +-> +ËáD–im™” + !=ð +nuÎ +) { + +483 +$this +-> +cڋxt +-> +Ëá_d–im™” + = $this-> +ËáD–im™” +; + +486 ià( +$this +-> +rightD–im™” + !=ð +nuÎ +) { + +487 +$this +-> +cڋxt +-> +right_d–im™” + = $this-> +rightD–im™” +; + +490 ià( +$this +-> +‹m¶©eP©h + !=ð +nuÎ +) { + +491 +$this +-> + `log +("Usšgem¶©eP©h: " . $this-> +‹m¶©eP©h +); + +492 +$this +-> +cڋxt +-> +‹m¶©e_dœ + = $this-> +‹m¶©eP©h +; + +495 +$sm¬tyCompžeP©h + = +Ãw + + `PhšgFže +( +$this +-> +cڋxt +-> +compže_dœ +); + +496 ià(! +$sm¬tyCompžeP©h +-> + `exi¡s +()) { + +497 +$this +-> + `log +("CompždœeùÜy dÛ nكxi¡, c»©šg: " . +$sm¬tyCompžeP©h +-> + `g‘P©h +(), +Projeù +:: +MSG_VERBOSE +); + +498 ià(! +$sm¬tyCompžeP©h +-> + `mkdœs +()) { + +499 +throw + +Ãw + + `BuždExû±iÚ +("Sm¬ty‚“d ¨¶aûØcompž‹m¶©es; s³cify‡ 'compžeP©h' o¸ü—‹ ". +$this +-> +cڋxt +-> +compže_dœ +); + +505 +$fže + = +Ãw + + `PhšgFže +( +$this +-> +ouutDœeùÜy +); + +506 ià(! +$fže +-> + `exi¡s +()) { + +507 +$this +-> + `log +("OuuˆdœeùÜy dÛ nكxi¡, c»©šg: " . +$fže +-> + `g‘AbsÞu‹P©h +()); + +508 +$fže +-> + `mkdœs +(); + +511 +$·th + = +$this +-> +ouutDœeùÜy + . +DIRECTORY_SEPARATOR + . $this-> +ouutFže +; + +512 +$this +-> + `log +("G’”©šgØfž" . +$·th +); + +514 +$wr™” + = +Ãw + + `FžeWr™” +( +$·th +); + +519 +$c + = +$this +-> + `š™CڌÞCڋxt +(); + +523 +$this +-> + `pÝuϋIn™ŸlCڋxt +( +$c +); + +528 ià( +$this +-> +cڋxtPrݔt›s + !=ð +nuÎ +) { + +530 + `fܗch +( +$this +-> +cڋxtPrݔt›s +-> + `keys +(è +as + +$´Ý”ty +) { + +532 +$v®ue + = +$this +-> +cڋxtPrݔt›s +-> + `g‘Prݔty +( +$´Ý”ty +); + +538 ià( +SŒšgH–³r +:: + `’dsW™h +("fže.cڋÁs", +$´Ý”ty +)) { + +541 +$´Ý”ty + = + `sub¡r +($´Ý”ty, 0, + `¡½os +($property, "file.contents") - 1); + +545 +$v®ue + = ""; + +546 +$f + = +Ãw + + `PhšgFže +( +$´ojeù +-> + `»sÞveFže +( +$v®ue +)-> + `g‘CªÚiÿlP©h +()); + +547 ià( +$f +-> + `exi¡s +()) { + +548 +Œy + { + +549 +$ä + = +Ãw + + `FžeR—d” +( +$f +); + +550 +$ä +-> + `»adIÁo +( +$v®ue +); + +551 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +552 +throw + +$e +; + +558 ià( +SŒšgH–³r +:: + `isBoޗn +( +$v®ue +)) { + +559 +$v®ue + = +SŒšgH–³r +:: + `boޗnV®ue +($value); + +562 +$c +-> + `assign +( +$´Ý”ty +, +$v®ue +); + +568 +Œy + { + +570 +$wr™” +-> + `wr™e +( +$c +-> + `ãtch +( +$this +-> +cڌÞTem¶©e +)); + +571 +$wr™” +-> + `þo£ +(); + +572 } + `ÿtch + ( +IOExû±iÚ + +$iÛ +) { + +573 +$wr™” +-> + `þo£ +(); + +574 +throw + +Ãw + + `BuždExû±iÚ +("Cannot write…arsedemplate."); + +577 +$this +-> + `þ—nup +(); + +578 + } +} + +597 +´Ùeùed + +funùiÚ + + $pÝuϋIn™ŸlCڋxt +( +Sm¬ty + +$cڋxt +) { + +598 + } +} + +608 +´Ùeùed + +funùiÚ + + $þ—nup +() { + +609 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/TarTask.php + +1 +fže£t + = +Ãw + + `T¬FžeS‘ +(); + +80 +$this +-> +fže£ts +[] = $this-> +fže£t +; + +81  +$this +-> +fže£t +; + +82 + } +} + +89 +public + +funùiÚ + + $ü—‹FžeS‘ +() { + +90 +$this +-> +fže£t + = +Ãw + + `T¬FžeS‘ +(); + +91 +$this +-> +fže£ts +[] = $this-> +fže£t +; + +92  +$this +-> +fže£t +; + +93 + } +} + +99 +public + +funùiÚ + + $£tDe¡Fže +( +PhšgFže + +$de¡Fže +) { + +100 +$this +-> +rFže + = +$de¡Fže +; + +101 + } +} + +107 +public + +funùiÚ + + $£tBa£dœ +( +PhšgFže + +$ba£Dœ +) { + +108 +$this +-> +ba£Dœ + = +$ba£Dœ +; + +109 + } +} + +117 +funùiÚ + + $£tInþudeEm±yDœs +( +$boÞ +) { + +118 +$this +-> +šþudeEm±y + = ( +boޗn +è +$boÞ +; + +119 + } +} + +134 +public + +funùiÚ + + $£tLÚgfže +( +$mode +) { + +135 +$this +-> +lÚgFžeMode + = +$mode +; + +136 + } +} + +147 +public + +funùiÚ + + $£tCom´essiÚ +( +$mode +) { + +148  +$mode +) { + +150 +$this +-> +com´essiÚ + = "gz"; + +153 +$this +-> +com´essiÚ + = "bz2"; + +156 +$this +-> +com´essiÚ + = +nuÎ +; + +159 +$this +-> + `log +("Ignܚg unknowÀcom´essiÚ mode: ". +$mode +, +Projeù +:: +MSG_WARN +); + +160 +$this +-> +com´essiÚ + = +nuÎ +; + +162 + } +} + +168 +public + +funùiÚ + + $maš +() { + +170 ià( +$this +-> +rFže + ==ð +nuÎ +) { + +171 +throw + +Ãw + + `BuždExû±iÚ +("rfž©Œibu‹ mu¡ b£t!", +$this +-> + `g‘LoÿtiÚ +()); + +174 ià( +$this +-> +rFže +-> + `exi¡s +(è&& $this->rFže-> + `isDœeùÜy +()) { + +175 +throw + +Ãw + + `BuždExû±iÚ +("rfži ¨dœeùÜy!", +$this +-> + `g‘LoÿtiÚ +()); + +178 ià( +$this +-> +rFže +-> + `exi¡s +(è&& !$this->rFže-> + `ÿnWr™e +()) { + +179 +throw + +Ãw + + `BuždExû±iÚ +("Cª‚Ù wr™tØth¥ecif›d¬fže!", +$this +-> + `g‘LoÿtiÚ +()); + +184 +$§vedFžeS‘s + = +$this +-> +fže£ts +; + +186 +Œy + { + +187 ià( +$this +-> +ba£Dœ + !=ð +nuÎ +) { + +188 ià(! +$this +-> +ba£Dœ +-> + `exi¡s +()) { + +189 +throw + +Ãw + + `BuždExû±iÚ +("ba£dœ dÛ nكxi¡!", +$this +-> + `g‘LoÿtiÚ +()); + +191 ià( + `em±y +( +$this +-> +fže£ts +)) { + +193 +$mašFžeS‘ + = +Ãw + + `T¬FžeS‘ +( +$this +-> +fže£t +); + +194 +$mašFžeS‘ +-> + `£tDœ +( +$this +-> +ba£Dœ +); + +195 +$this +-> +fže£ts +[] = +$mašFžeS‘ +; + +199 ià( + `em±y +( +$this +-> +fže£ts +)) { + +200 +throw + +Ãw + + `BuždExû±iÚ +("You must supplyƒither‡ basedir " + +202 +$this +-> + `g‘LoÿtiÚ +()); + +206 if( +$this +-> +rFže +-> + `exi¡s +()) { + +207 +$upToD©e + = +Œue +; + +208 + `fܗch +( +$this +-> +fže£ts + +as + +$fs +) { + +209 +$fžes + = +$fs +-> + `g‘Fžes +( +$this +-> +´ojeù +, $this-> +šþudeEm±y +); + +210 ià(! +$this +-> + `¬chiveIsUpToD©e +( +$fžes +, +$fs +-> + `g‘Dœ +($this-> +´ojeù +))) { + +211 +$upToD©e + = +çl£ +; + +213  +$i +=0, +$fcouÁ += + `couÁ +( +$fžes +); $i < $fcount; $i++) { + +214 ià( +$this +-> +rFže +-> + `equ®s +( +Ãw + + `PhšgFže +( +$fs +-> + `g‘Dœ +($this-> +´ojeù +), +$fžes +[ +$i +]))) { + +215 +throw + +Ãw + + `BuždExû±iÚ +("A¬ fžÿÂÙ inþud™£lf", +$this +-> + `g‘LoÿtiÚ +()); + +219 ià( +$upToD©e +) { + +220 +$this +-> + `log +("NÙhšgØdo: " . $this-> +rFže +-> + `__toSŒšg +(è. " i u°tØd©e.", +Projeù +:: +MSG_INFO +); + +225 +$this +-> + `log +("Buždšg¬: " . $this-> +rFže +-> + `__toSŒšg +(), +Projeù +:: +MSG_INFO +); + +227 +$r + = +Ãw + + `Archive_T¬ +( +$this +-> +rFže +-> + `g‘AbsÞu‹P©h +(), $this-> +com´essiÚ +); + +230 +$r +-> + `£tE¼ÜHªdlšg +( +PEAR_ERROR_PRINT +); + +232 + `fܗch +( +$this +-> +fže£ts + +as + +$fs +) { + +233 +$fžes + = +$fs +-> + `g‘Fžes +( +$this +-> +´ojeù +, $this-> +šþudeEm±y +); + +234 ià( + `couÁ +( +$fžes +è> 1 && + `¡¾’ +( +$fs +-> + `g‘Fuηth +()) > 0) { + +235 +throw + +Ãw + + `BuždExû±iÚ +("fullpath‡ttribute may only " + +240 +$fsBa£dœ + = +$fs +-> + `g‘Dœ +( +$this +-> +´ojeù +); + +241 +$fžesToT¬ + = + `¬¿y +(); + +242  +$i +=0, +$fcouÁ += + `couÁ +( +$fžes +); $i < $fcount; $i++) { + +243 +$f + = +Ãw + + `PhšgFže +( +$fsBa£dœ +, +$fžes +[ +$i +]); + +244 +$fžesToT¬ +[] = +$f +-> + `g‘AbsÞu‹P©h +(); + +245 +$this +-> + `log +("Addšg fž" . +$f +-> + `g‘P©h +(è. "Ø¬chive.", +Projeù +:: +MSG_VERBOSE +); + +247 +$r +-> + `addModify +( +$fžesToT¬ +, '', +$fsBa£dœ +-> + `g‘AbsÞu‹P©h +()); + +251 } + `ÿtch + ( +IOExû±iÚ + +$iÛ +) { + +252 +$msg + = "ProbËm c»©šg TAR: " . +$iÛ +-> + `g‘Mes§ge +(); + +253 +$this +-> +fže£ts + = +$§vedFžeS‘s +; + +254 +throw + +Ãw + + `BuždExû±iÚ +( +$msg +, +$iÛ +, +$this +-> + `g‘LoÿtiÚ +()); + +257 +$this +-> +fže£ts + = +$§vedFžeS‘s +; + +258 + } +} + +265 +´Ùeùed + +funùiÚ + + $¬chiveIsUpToD©e +( +$fžes +, +$dœ +) { + +266 +$sfs + = +Ãw + + `SourûFžeSÿ” +( +$this +); + +267 +$mm + = +Ãw + + `M”geM­³r +(); + +268 +$mm +-> + `£tTo +( +$this +-> +rFže +-> + `g‘AbsÞu‹P©h +()); + +269  + `couÁ +( +$sfs +-> + `»¡riù +( +$fžes +, +$dœ +, +nuÎ +, +$mm +)) == 0; + +270 + } +} + +282 þas  + cT¬FžeS‘ + +ex‹nds + + mFžeS‘ + { + +284 +´iv©e + + m$fžes + = +nuÎ +; + +286 +´iv©e + + m$mode + = 0100644; + +288 +´iv©e + + m$u£rName + = ""; + +289 +´iv©e + + m$groupName + = ""; + +290 +´iv©e + + m$´efix + = ""; + +291 +´iv©e + + m$fuηth + = ""; + +292 +´iv©e + + m$´e£rveL—dšgSÏshes + = +çl£ +; + +299 +public + +funùiÚ + + $g‘Fžes +( +Projeù + +$p +, +$šþudeEm±y + = +Œue +) { + +301 ià( +$this +-> +fžes + ==ð +nuÎ +) { + +303 +$ds + = +$this +-> + `g‘DœeùÜySÿ” +( +$p +); + +304 +$this +-> +fžes + = +$ds +-> + `g‘InþudedFžes +(); + +306 ià( +$šþudeEm±y +) { + +309 +$im¶ic™Dœs + = + `¬¿y +(); + +310 + `fܗch +( +$this +-> +fžes + +as + +$fže +) { + +311 +$im¶ic™Dœs +[] = + `dœÇme +( +$fže +); + +314 +$šcDœs + = +$ds +-> + `g‘InþudedDœeùܛs +(); + +319 + `fܗch +( +$šcDœs + +as + +$dœ +) { + +320 + `fܗch +( +$šcDœs + +as + +$dœcheck +) { + +321 ià(! + `em±y +( +$dœ +è&& $dœ =ð + `dœÇme +( +$dœcheck +)) { + +322 +$im¶ic™Dœs +[] = +$dœ +; + +327 +$im¶ic™Dœs + = + `¬¿y_unique +($implicitDirs); + +332 + `fܗch +( +$šcDœs + +as + +$dœ +) { + +333 ià( +$dœ + !ð"" && $dœ !ð"." && ! + `š_¬¿y +($dœ, +$im¶ic™Dœs +)) { + +335 +$this +-> +fžes +[] = +$dœ +; + +342  +$this +-> +fžes +; + +351 +public + +funùiÚ + + $£tMode +( +$où®SŒšg +) { + +352 +$où® + = (è +$où®SŒšg +; + +353 +$this +-> +mode + = 0100000 | +$où® +; + +354 + } +} + +356 +public + +funùiÚ + + $g‘Mode +() { + +357  +$this +-> +mode +; + +358 + } +} + +365 +public + +funùiÚ + + $£tU£rName +( +$u£rName +) { + +366 +$this +-> +u£rName + = +$u£rName +; + +367 + } +} + +369 +public + +funùiÚ + + $g‘U£rName +() { + +370  +$this +-> +u£rName +; + +371 + } +} + +378 +public + +funùiÚ + + $£tGroup +( +$groupName +) { + +379 +$this +-> +groupName + = +$groupName +; + +380 + } +} + +382 +public + +funùiÚ + + $g‘Group +() { + +383  +$this +-> +groupName +; + +384 + } +} + +391 +public + +funùiÚ + + $£tP»fix +( +$´efix +) { + +392 +$this +-> +´efix + = +$´efix +; + +393 + } +} + +395 +public + +funùiÚ + + $g‘P»fix +() { + +396  +$this +-> +´efix +; + +397 + } +} + +405 +public + +funùiÚ + + $£tFuηth +( +$fuηth +) { + +406 +$this +-> +fuηth + = +$fuηth +; + +407 + } +} + +409 +public + +funùiÚ + + $g‘Fuηth +() { + +410  +$this +-> +fuηth +; + +411 + } +} + +419 +public + +funùiÚ + + $£tP»£rveL—dšgSÏshes +( +$b +) { + +420 +$this +-> +´e£rveL—dšgSÏshes + = ( +boޗn +è +$b +; + +421 + } +} + +423 +public + +funùiÚ + + $g‘P»£rveL—dšgSÏshes +() { + +424  +$this +-> +´e£rveL—dšgSÏshes +; + +425 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/UntarTask.php + +1 + `log +("ExŒaùšg¬ fže: " . +$rfže +-> + `__toSŒšg +(è. 'Ø' . $this-> +todœ +->__toSŒšg(), +Projeù +:: +MSG_INFO +); + +47 +Œy + { + +48 +$r + = +$this +-> + `š™T¬ +( +$rfže +); + +49 if(! +$r +-> + `exŒaùModify +( +$this +-> +todœ +-> + `g‘AbsÞu‹P©h +(), $this-> +»mov•©h +)) { + +50 +throw + +Ãw + + `BuždExû±iÚ +('FažedØexŒaù¬ fže: ' . +$rfže +-> + `g‘AbsÞu‹P©h +()); + +52 } + `ÿtch + ( +IOExû±iÚ + +$iÛ +) { + +53 +$msg + = "Could‚ÙƒxŒaù¬ fže: " . +$iÛ +-> + `g‘Mes§ge +(); + +54 +throw + +Ãw + + `BuždExû±iÚ +( +$msg +, +$iÛ +, +$this +-> + `g‘LoÿtiÚ +()); + +56 + } +} + +58 +´Ùeùed + +funùiÚ + + $li¡ArchiveCڋÁ +( +PhšgFže + +$rfže +) + +60 +$r + = +$this +-> + `š™T¬ +( +$rfže +); + +61  +$r +-> + `li¡CڋÁ +(); + +62 + } +} + +70 +´iv©e + +funùiÚ + + $š™T¬ +( +PhšgFže + +$rfže +) + +72 +$com´essiÚ + = +nuÎ +; + +73 +$rfžeName + = +$rfže +-> + `g‘Name +(); + +74 +$mode + = + `¡¹Þow” +( + `sub¡r +( +$rfžeName +, + `¡¼pos +($tarfileName, '.'))); + +76 +$com´essiÚs + = + `¬¿y +( + +77 'gz' => + `¬¿y +('.gz', '.tgz',), + +78 'bz2' => + `¬¿y +('.bz2',), + +80 + `fܗch + ( +$com´essiÚs + +as + +$®go + => +$ext +) { + +81 ià( + `¬¿y_£¬ch +( +$mode +, +$ext +è!=ð +çl£ +) { + +82 +$com´essiÚ + = +$®go +; + +87  +Ãw + + `Archive_T¬ +( +$rfže +-> + `g‘AbsÞu‹P©h +(), +$com´essiÚ +); + +88 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/UnzipTask.php + +1 +$this +-> +todœ +-> + `g‘AbsÞu‹P©h +()); + +39 if(! + `em±y +( +$this +-> +»mov•©h +)) + +41 +$exŒaùP¬ams +['»move_·th'] = +$this +-> +»mov•©h +; + +44 +$this +-> + `log +("ExŒaùšg z: " . +$zfže +-> + `__toSŒšg +(è. 'Ø' . $this-> +todœ +->__toSŒšg(), +Projeù +:: +MSG_INFO +); + +46 +Œy + { + +47 +$z + = +Ãw + + `Archive_Z +( +$zfže +-> + `g‘AbsÞu‹P©h +()); + +49 +$exŒaùRe¥Ú£ + = +$z +-> + `exŒaù +( +$exŒaùP¬ams +); + +50 if( + `is_¬¿y +( +$exŒaùRe¥Ú£ +)) { + +51 + `fܗch + ( +$exŒaùRe¥Ú£ + +as + +$exŒaùedP©h +) { + +52 +$this +-> + `log +('ExŒaùed' . +$exŒaùedP©h +['¡Üed_fž’ame'] . 'Ø' . $this-> +todœ +-> + `__toSŒšg +(), +Projeù +:: +MSG_VERBOSE +); + +54 } ià( +$exŒaùRe¥Ú£ + === 0) { + +55 +throw + +Ãw + + `BuždExû±iÚ +('FažedØexŒaù zfže: ' . +$z +-> + `”rÜInfo +( +Œue +)); + +57 } + `ÿtch + ( +IOExû±iÚ + +$iÛ +) { + +58 +$msg + = "Could‚ÙƒxŒaù ZIP: " . +$iÛ +-> + `g‘Mes§ge +(); + +59 +throw + +Ãw + + `BuždExû±iÚ +( +$msg +, +$iÛ +, +$this +-> + `g‘LoÿtiÚ +()); + +63 +´Ùeùed + +funùiÚ + + $li¡ArchiveCڋÁ +( +PhšgFže + +$zfže +) + +65 +$z + = +Ãw + + `Archive_Z +( +$zfže +-> + `g‘AbsÞu‹P©h +()); + +66  +$z +-> + `li¡CڋÁ +(); + +67 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/XmlLintTask.php + +1 +fže + = +$fže +; + +50 +public + +funùiÚ + + $£tSchema +( +PhšgFže + +$schema +) { + +51 +$this +-> +schema + = +$schema +; + +52 + } +} + +59 +funùiÚ + + $ü—‹FžeS‘ +() { + +60 +$num + = + `¬¿y_push +( +$this +-> +fže£ts +, +Ãw + + `FžeS‘ +()); + +61  +$this +-> +fže£ts +[ +$num +-1]; + +62 + } +} + +67 +public + +funùiÚ + + $maš +() { + +68 if(! + `is£t +( +$this +-> +schema +)) { + +69 +throw + +Ãw + + `BuždExû±iÚ +("Missing‡ttribute 'schema'"); + +71 +$schema + = +$this +-> +schema +-> + `g‘P©h +(); + +72 if(! + `fže_exi¡s +( +$schema +)) { + +73 +throw + +Ãw + + `BuždExû±iÚ +("FžnÙ found: ". +$schema +); + +75 if(! + `is£t +( +$this +-> +fže +è +ªd + + `couÁ +($this-> +fže£ts +) == 0) { + +76 +throw + +Ãw + + `BuždExû±iÚ +("Missingƒither‡‚ested fileset or‡ttribute 'file' set"); + +79 + `£t_”rÜ_hªdËr +( + `¬¿y +( +$this +, 'errorHandler')); + +80 if( +$this +-> +fže + +š¡ªûof + +PhšgFže +) { + +81 +$this +-> + `lšt +($this-> +fže +-> + `g‘P©h +()); + +83 +$´ojeù + = +$this +-> + `g‘Projeù +(); + +84 + `fܗch +( +$this +-> +fže£ts + +as + +$fs +) { + +85 +$ds + = +$fs +-> + `g‘DœeùÜySÿ” +( +$´ojeù +); + +86 +$fžes + = +$ds +-> + `g‘InþudedFžes +(); + +87 +$dœ + = +$fs +-> + `g‘Dœ +( +$this +-> +´ojeù +)-> + `g‘P©h +(); + +88 + `fܗch +( +$fžes + +as + +$fže +) { + +89 +$this +-> + `lšt +( +$dœ +. +DIRECTORY_SEPARATOR +. +$fže +); + +93 + `»¡Üe_”rÜ_hªdËr +(); + +94 + } +} + +102 +´Ùeùed + +funùiÚ + + $lšt +( +$fže +) { + +103 if( + `fže_exi¡s +( +$fže +)) { + +104 if( + `is_»adabË +( +$fže +)) { + +105 +$dom + = +Ãw + + `DOMDocum’t +(); + +106 +$dom +-> + `lßd +( +$fže +); + +107 if( +$dom +-> + `schemaV®id©e +( +$this +-> +schema +-> + `g‘P©h +())) { + +108 +$this +-> + `log +( +$fže +.' v®id©ed', +Projeù +:: +MSG_INFO +); + +110 +$this +-> + `log +( +$fže +.' faž tØv®id©(S“ mes§ge above)', +Projeù +:: +MSG_ERR +); + +113 +throw + +Ãw + + `BuždExû±iÚ +('P”missiÚ d’›d: '. +$fže +); + +116 +throw + +Ãw + + `BuždExû±iÚ +('FžnÙ found: '. +$fže +); + +118 + } +} + +128 +public + +funùiÚ + + $”rÜHªdËr +( +$Ëv– +, +$mes§ge +, +$fže +, +$lše +, +$cڋxt +) { + +129 +$m©ches + = + `¬¿y +(); + +130 + `´eg_m©ch +('/^.*\(\): (.*)$/', +$mes§ge +, +$m©ches +); + +131 +$this +-> + `log +( +$m©ches +[1], +Projeù +:: +MSG_ERR +); + +132 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ZendCodeAnalyzerTask.php + +1 +fže + = +$fže +; + +88 +public + +funùiÚ + + $£tAÇlyz”P©h +( +$ª®yz”P©h +) { + +89 +$this +-> +ª®yz”P©h + = +$ª®yz”P©h +; + +90 + } +} + +97 +public + +funùiÚ + + $£tDi§bË +( +$di§bË +) { + +98 +$this +-> +di§bË + = + `ex¶ode +(",", +$di§bË +); + +99 + } +} + +106 +public + +funùiÚ + + $£tEÇbË +( +$’abË +) { + +107 +$this +-> +’abË + = + `ex¶ode +(",", +$’abË +); + +108 + } +} + +115 +funùiÚ + + $ü—‹FžeS‘ +() { + +116 +$num + = + `¬¿y_push +( +$this +-> +fže£ts +, +Ãw + + `FžeS‘ +()); + +117  +$this +-> +fže£ts +[ +$num +-1]; + +118 + } +} + +123 +public + +funùiÚ + + $maš +() { + +124 if(! + `is£t +( +$this +-> +ª®yz”P©h +)) { + +125 +throw + +Ãw + + `BuždExû±iÚ +("Missing‡ttribute 'analyzerPath'"); + +127 if(! + `is£t +( +$this +-> +fže +è +ªd + + `couÁ +($this-> +fže£ts +) == 0) { + +128 +throw + +Ãw + + `BuždExû±iÚ +("Missingƒither‡‚ested fileset or‡ttribute 'file' set"); + +131 if( +$this +-> +fže + +š¡ªûof + +PhšgFže +) { + +132 +$this +-> + `ª®yze +($this-> +fže +-> + `g‘P©h +()); + +134 +$´ojeù + = +$this +-> + `g‘Projeù +(); + +135 + `fܗch +( +$this +-> +fže£ts + +as + +$fs +) { + +136 +$ds + = +$fs +-> + `g‘DœeùÜySÿ” +( +$´ojeù +); + +137 +$fžes + = +$ds +-> + `g‘InþudedFžes +(); + +138 +$dœ + = +$fs +-> + `g‘Dœ +( +$this +-> +´ojeù +)-> + `g‘P©h +(); + +139 + `fܗch +( +$fžes + +as + +$fže +) { + +140 +$this +-> + `ª®yze +( +$dœ +. +DIRECTORY_SEPARATOR +. +$fže +); + +144 +$this +-> + `log +("Numb” oàfšdšgs: ".$this-> +couÁ” +, +Projeù +:: +MSG_INFO +); + +145 + } +} + +153 +´Ùeùed + +funùiÚ + + $ª®yze +( +$fže +) { + +154 if( + `fže_exi¡s +( +$fže +)) { + +155 if( + `is_»adabË +( +$fže +)) { + +158 +$cmd + = +$this +-> +ª®yz”P©h +." "; + +159 + `fܗch +( +$this +-> +’abË + +as + +$’abË +) { + +160 +$cmd + .= " --enable $enable "; + +162 + `fܗch +( +$this +-> +di§bË + +as + +$di§bË +) { + +163 +$cmd + .= " --disable $disable "; + +165 +$cmd + .= "$file 2>&1"; + +168 +$»suÉ + = + `sh–l_exec +( +$cmd +); + +169 +$»suÉ + = + `ex¶ode +("\n", $result); + +170  +$i +=2, +$size += + `couÁ +( +$»suÉ +); $i<($size-1); $i++) { + +171 +$this +-> +couÁ” +++; + +172 +$this +-> + `log +( +$»suÉ +[ +$i +], +Projeù +:: +MSG_WARN +); + +175 +throw + +Ãw + + `BuždExû±iÚ +('P”missiÚ d’›d: '. +$fže +); + +178 +throw + +Ãw + + `BuždExû±iÚ +('FžnÙ found: '. +$fže +); + +180 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ZipTask.php + +1 +fže£t + = +Ãw + + `ZFžeS‘ +(); + +63 +$this +-> +fže£ts +[] = $this-> +fže£t +; + +64  +$this +-> +fže£t +; + +71 +public + +funùiÚ + + $£tDe¡Fže +( +PhšgFže + +$de¡Fže +) { + +72 +$this +-> +zFže + = +$de¡Fže +; + +73 + } +} + +79 +public + +funùiÚ + + $£tBa£dœ +( +PhšgFže + +$ba£Dœ +) { + +80 +$this +-> +ba£Dœ + = +$ba£Dœ +; + +81 + } +} + +89 +funùiÚ + + $£tInþudeEm±yDœs +( +$boÞ +) { + +90 +$this +-> +šþudeEm±y + = ( +boޗn +è +$boÞ +; + +91 + } +} + +97 +public + +funùiÚ + + $maš +() { + +99 ià( +$this +-> +zFže + ==ð +nuÎ +) { + +100 +throw + +Ãw + + `BuždExû±iÚ +("zfž©Œibu‹ mu¡ b£t!", +$this +-> + `g‘LoÿtiÚ +()); + +103 ià( +$this +-> +zFže +-> + `exi¡s +(è&& $this->zFže-> + `isDœeùÜy +()) { + +104 +throw + +Ãw + + `BuždExû±iÚ +("zfži ¨dœeùÜy!", +$this +-> + `g‘LoÿtiÚ +()); + +107 ià( +$this +-> +zFže +-> + `exi¡s +(è&& !$this->zFže-> + `ÿnWr™e +()) { + +108 +throw + +Ãw + + `BuždExû±iÚ +("Cª‚Ù wr™tØth¥ecif›d zfže!", +$this +-> + `g‘LoÿtiÚ +()); + +113 +$§vedFžeS‘s + = +$this +-> +fže£ts +; + +115 +Œy + { + +116 ià( +$this +-> +ba£Dœ + !=ð +nuÎ +) { + +117 ià(! +$this +-> +ba£Dœ +-> + `exi¡s +()) { + +118 +throw + +Ãw + + `BuždExû±iÚ +("ba£dœ dÛ nكxi¡!", +$this +-> + `g‘LoÿtiÚ +()); + +121 ià( + `em±y +( +$this +-> +fže£ts +)) + +124 +$mašFžeS‘ + = +Ãw + + `ZFžeS‘ +( +$this +-> +fže£t +); + +125 +$mašFžeS‘ +-> + `£tDœ +( +$this +-> +ba£Dœ +); + +126 +$this +-> +fže£ts +[] = +$mašFžeS‘ +; + +130 ià( + `em±y +( +$this +-> +fže£ts +)) { + +131 +throw + +Ãw + + `BuždExû±iÚ +("You must supplyƒither‡ basedir " + +133 +$this +-> + `g‘LoÿtiÚ +()); + +138 +$upToD©e + = +Œue +; + +139 + `fܗch +( +$this +-> +fže£ts + +as + +$fs +) { + +140 +$fžes + = +$fs +-> + `g‘Fžes +( +$this +-> +´ojeù +, $this-> +šþudeEm±y +); + +141 ià(! +$this +-> + `¬chiveIsUpToD©e +( +$fžes +, +$fs +-> + `g‘Dœ +($this-> +´ojeù +))) { + +142 +$upToD©e + = +çl£ +; + +144  +$i +=0, +$fcouÁ += + `couÁ +( +$fžes +); $i < $fcount; $i++) { + +145 ià( +$this +-> +zFže +-> + `equ®s +( +Ãw + + `PhšgFže +( +$fs +-> + `g‘Dœ +($this-> +´ojeù +), +$fžes +[ +$i +]))) { + +146 +throw + +Ãw + + `BuždExû±iÚ +("A z fžÿÂÙ inþud™£lf", +$this +-> + `g‘LoÿtiÚ +()); + +151 ià( +$upToD©e +) { + +152 +$this +-> + `log +("NÙhšgØdo: " . $this-> +zFže +-> + `__toSŒšg +(è. " i u°tØd©e.", +Projeù +:: +MSG_INFO +); + +156 +$this +-> + `log +("Buždšg z: " . $this-> +zFže +-> + `__toSŒšg +(), +Projeù +:: +MSG_INFO +); + +158 +$z + = +Ãw + + `Archive_Z +( +$this +-> +zFže +-> + `g‘AbsÞu‹P©h +()); + +160 + `fܗch +( +$this +-> +fže£ts + +as + +$fs +) { + +162 +$fžes + = +$fs +-> + `g‘Fžes +( +$this +-> +´ojeù +, $this-> +šþudeEm±y +); + +164 +$fsBa£dœ + = ( +nuÎ + !ð +$this +-> +ba£Dœ +) ? $this->baseDir : + +165 +$fs +-> + `g‘Dœ +( +$this +-> +´ojeù +); + +167 +$fžesToZ + = + `¬¿y +(); + +168  +$i +=0, +$fcouÁ += + `couÁ +( +$fžes +); $i < $fcount; $i++) { + +169 +$f + = +Ãw + + `PhšgFže +( +$fsBa£dœ +, +$fžes +[ +$i +]); + +170 +$fžesToZ +[] = +$f +-> + `g‘AbsÞu‹P©h +(); + +171 +$this +-> + `log +("Addšg " . +$f +-> + `g‘P©h +(è. "Ø¬chive.", +Projeù +:: +MSG_VERBOSE +); + +173 +$z +-> + `add +( +$fžesToZ +, + `¬¿y +('»move_·th' => +$fsBa£dœ +-> + `g‘CªÚiÿlP©h +())); + +177 } + `ÿtch + ( +IOExû±iÚ + +$iÛ +) { + +178 +$msg + = "ProbËm c»©šg ZIP: " . +$iÛ +-> + `g‘Mes§ge +(); + +179 +$this +-> +fže£ts + = +$§vedFžeS‘s +; + +180 +throw + +Ãw + + `BuždExû±iÚ +( +$msg +, +$iÛ +, +$this +-> + `g‘LoÿtiÚ +()); + +183 +$this +-> +fže£ts + = +$§vedFžeS‘s +; + +184 + } +} + +191 +´Ùeùed + +funùiÚ + + $¬chiveIsUpToD©e +( +$fžes +, +$dœ +) { + +192 +$sfs + = +Ãw + + `SourûFžeSÿ” +( +$this +); + +193 +$mm + = +Ãw + + `M”geM­³r +(); + +194 +$mm +-> + `£tTo +( +$this +-> +zFže +-> + `g‘AbsÞu‹P©h +()); + +195  + `couÁ +( +$sfs +-> + `»¡riù +( +$fžes +, +$dœ +, +nuÎ +, +$mm +)) == 0; + +196 + } +} + +210 þas  + cZFžeS‘ + +ex‹nds + + mFžeS‘ + { + +212 +´iv©e + + m$fžes + = +nuÎ +; + +219 +public + +funùiÚ + + $g‘Fžes +( +Projeù + +$p +, +$šþudeEm±y + = +Œue +) { + +221 ià( +$this +-> +fžes + ==ð +nuÎ +) { + +223 +$ds + = +$this +-> + `g‘DœeùÜySÿ” +( +$p +); + +224 +$this +-> +fžes + = +$ds +-> + `g‘InþudedFžes +(); + +226 ià( +$šþudeEm±y +) { + +229 +$im¶ic™Dœs + = + `¬¿y +(); + +230 + `fܗch +( +$this +-> +fžes + +as + +$fže +) { + +231 +$im¶ic™Dœs +[] = + `dœÇme +( +$fže +); + +234 +$šcDœs + = +$ds +-> + `g‘InþudedDœeùܛs +(); + +239 + `fܗch +( +$šcDœs + +as + +$dœ +) { + +240 + `fܗch +( +$šcDœs + +as + +$dœcheck +) { + +241 ià(! + `em±y +( +$dœ +è&& $dœ =ð + `dœÇme +( +$dœcheck +)) { + +242 +$im¶ic™Dœs +[] = +$dœ +; + +247 +$im¶ic™Dœs + = + `¬¿y_unique +($implicitDirs); + +252 + `fܗch +( +$šcDœs + +as + +$dœ +) { + +253 ià( +$dœ + !ð"" && $dœ !ð"." && ! + `š_¬¿y +($dœ, +$im¶ic™Dœs +)) { + +255 +$this +-> +fžes +[] = +$dœ +; + +262  +$this +-> +fžes +; + +265 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/coverage/CoverageMerger.php + +1 + `g‘Prݔty +('coverage.database')); + +98 +$´Ýs + = +Ãw + + `Prݔt›s +(); + +99 +$´Ýs +-> + `lßd +( +$d©aba£ +); + +101 +$cov”ageTÙ® + = +$codeCov”ageInfÜm©iÚ +; + +103 + `fܗch + ( +$cov”ageTÙ® + +as + +$cov”age +) + +105 + `fܗch + ( +$cov”age + +as + +$fž’ame + => +$cov”ageFže +) + +107 +$fž’ame + = + `¡¹Þow” +($filename); + +109 ià( +$´Ýs +-> + `g‘Prݔty +( +$fž’ame +è!ð +nuÎ +) + +111 +$fže + = + `un£rŸlize +( +$´Ýs +-> + `g‘Prݔty +( +$fž’ame +)); + +112 +$Ëá + = +$fže +['coverage']; + +113 +$right + = +$cov”ageFže +; + +114 ià(! + `is_¬¿y +( +$right +)) { + +115 +$right + = + `¬¿y_shiá +( +PHPUn™_Utž_CodeCov”age +:: + `b™SŒšgToCodeCov”age +( + `¬¿y +($right), 1)); + +118 +$cov”ageM”ged + = +Cov”ageM”g” +:: + `m”geCodeCov”age +( +$Ëá +, +$right +); + +120 + `fܗch + ( +$cov”ageM”ged + +as + +$key + => +$v®ue +) + +122 ià( +$v®ue + == -2) + +124 + `un£t +( +$cov”ageM”ged +[ +$key +]); + +128 +$fže +['cov”age'] = +$cov”ageM”ged +; + +130 +$´Ýs +-> + `£tPrݔty +( +$fž’ame +, + `£rŸlize +( +$fže +)); + +135 +$´Ýs +-> + `¡Üe +( +$d©aba£ +); + +136 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/coverage/CoverageMergerTask.php + +1 +fže£ts +[] = +$fže£t +; + +56 +´iv©e + +funùiÚ + + $g‘Fž’ames +() + +58 +$fžes + = + `¬¿y +(); + +60 + `fܗch + ( +$this +-> +fže£ts + +as + +$fže£t +) + +62 +$ds + = +$fže£t +-> + `g‘DœeùÜySÿ” +( +$this +-> +´ojeù +); + +63 +$ds +-> + `sÿn +(); + +65 +$šþudedFžes + = +$ds +-> + `g‘InþudedFžes +(); + +67 + `fܗch + ( +$šþudedFžes + +as + +$fže +) + +69 +$fs + = +Ãw + + `PhšgFže +( + `ba£Çme +( +$ds +-> + `g‘Ba£Dœ +()), +$fže +); + +71 +$fžes +[] = +$fs +-> + `g‘AbsÞu‹P©h +(); + +75  +$fžes +; + +76 + } +} + +78 +funùiÚ + + $maš +() + +80 +$fžes + = +$this +-> + `g‘Fž’ames +(); + +82 +$this +-> + `log +("M”gšg " . + `couÁ +( +$fžes +) . " coverage files"); + +84 + `fܗch + ( +$fžes + +as + +$fže +) + +86 +$cov”ageInfÜm©iÚ + = + `un£rŸlize +( + `fže_g‘_cڋÁs +( +$fže +)); + +88 +Cov”ageM”g” +:: + `m”ge +( +$this +-> +´ojeù +, + `¬¿y +( +$cov”ageInfÜm©iÚ +)); + +90 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/coverage/CoverageReportTask.php + +1 +þas¥©h + ==ð +nuÎ +) + +56 +$this +-> +þas¥©h + = +$þas¥©h +; + +60 +$this +-> +þas¥©h +-> + `­³nd +( +$þas¥©h +); + +64 +funùiÚ + + $ü—‹CÏs¥©h +() + +66 +$this +-> +þas¥©h + = +Ãw + + `P©h +(); + +67  +$this +-> +þas¥©h +; + +68 + } +} + +70 +funùiÚ + + $£tGeshiP©h +( +$·th +) + +72 +$this +-> +gesh©h + = +$·th +; + +73 + } +} + +75 +funùiÚ + + $£tGeshiLªguagesP©h +( +$·th +) + +77 +$this +-> +geshžªguage¥©h + = +$·th +; + +78 + } +} + +80 +funùiÚ + + $__cÚ¡ruù +() + +82 +$this +-> +doc + = +Ãw + + `DOMDocum’t +(); + +83 +$this +-> +doc +-> +’codšg + = 'UTF-8'; + +84 +$this +-> +doc +-> +fÜm©Ouut + = +Œue +; + +85 +$this +-> +doc +-> + `­³ndChžd +($this->doc-> + `ü—‹EËm’t +('snapshot')); + +86 + } +} + +88 +funùiÚ + + $£tOutfže +( +$outfže +) + +90 +$this +-> +outfže + = +$outfže +; + +91 + } +} + +96 +funùiÚ + + $ü—‹R•Üt +() + +98 +$ŒªsfÜm” + = +Ãw + + `Cov”ageR•ÜtT¿nsfÜm” +( +$this +); + +99 +$this +-> +ŒªsfÜm”s +[] = +$ŒªsfÜm” +; + +100  +$ŒªsfÜm” +; + +101 + } +} + +103 +´Ùeùed + +funùiÚ + + $g‘PackageEËm’t +( +$·ckageName +) + +105 +$·ckages + = +$this +-> +doc +-> +docum’tEËm’t +-> + `g‘EËm’tsByTagName +('package'); + +107 + `fܗch + ( +$·ckages + +as + +$·ckage +) + +109 ià( +$·ckage +-> + `g‘A‰ribu‹ +('Çme'è=ð +$·ckageName +) + +111  +$·ckage +; + +115  +NULL +; + +116 + } +} + +118 +´Ùeùed + +funùiÚ + + $addCÏssToPackage +( +$þas¢ame +, +$–em’t +) + +120 +$·ckageName + = +PHPUn™Utž +:: + `g‘PackageName +( +$þas¢ame +); + +122 +$·ckage + = +$this +-> + `g‘PackageEËm’t +( +$·ckageName +); + +124 ià( +$·ckage + ==ð +NULL +) + +126 +$·ckage + = +$this +-> +doc +-> + `ü—‹EËm’t +('package'); + +127 +$·ckage +-> + `£tA‰ribu‹ +('Çme', +$·ckageName +); + +128 +$this +-> +doc +-> +docum’tEËm’t +-> + `­³ndChžd +( +$·ckage +); + +131 +$·ckage +-> + `­³ndChžd +( +$–em’t +); + +132 + } +} + +134 +´Ùeùed + +funùiÚ + + $¡rDiv +( +$sourû +) + +136 +$ݒpos + = + `¡½os +( +$sourû +, "", +$ݒpos +); + +139 +$lše + = + `sub¡r +( +$sourû +, +$þo£pos + + 1); + +141 +$gþo£pos + = + `¡½os +( +$lše +, ""); + +143 +$lše + = + `sub¡r +($lše, 0, +$gþo£pos +); + +145  +$lše +; + +146 + } +} + +148 +´Ùeùed + +funùiÚ + + $highlightSourûFže +( +$fž’ame +) + +150 ià( +$this +-> +gesh©h +) + +152 +»quœe_Úû + +$this +-> +gesh©h + . '/geshi.php'; + +154 +$sourû + = + `fže_g‘_cڋÁs +( +$fž’ame +); + +156 +$geshi + = +Ãw + + `GeSHi +( +$sourû +, 'php', +$this +-> +geshžªguage¥©h +); + +158 +$geshi +-> + `’abË_lše_numb”s +( +GESHI_NORMAL_LINE_NUMBERS +); + +160 +$geshi +-> + `’abË_¡riù_mode +( +Œue +); + +162 +$geshi +-> + `’abË_þas£s +( +Œue +); + +164 +$geshi +-> + `£t_u¾_fÜ_keywÜd_group +(3, ''); + +166 +$html + = +$geshi +-> + `·r£_code +(); + +168 +$lšes + = + `¥l™ +("
  • |
  • ", +$html +); + +171 + `¬¿y_pÝ +( +$lšes +); + +172 + `¬¿y_shiá +( +$lšes +); + +174 +$lšes + = + `¬¿y_fž‹r +($lines); + +176 +$lšes + = + `¬¿y_m­ +( + `¬¿y +( +$this +, 'stripDiv'), $lines); + +178  +$lšes +; + +182 +$lšes + = + `fže +( +$fž’ame +); + +184  +$i + = 0; $˜< + `couÁ +( +$lšes +); $i++) + +186 +$lše + = +$lšes +[ +$i +]; + +188 +$lše + = + `¹rim +($line); + +190 ià( + `funùiÚ_exi¡s +('mb_convert_encoding')) + +192 +$lšes +[ +$i +] = + `mb_cÚv”t_’codšg +( +$lše +, 'UTF-8'); + +196 +$lšes +[ +$i +] = + `utf8_’code +( +$lše +); + +200  +$lšes +; + +202 + } +} + +204 +´Ùeùed + +funùiÚ + + $ŒªsfÜmSourûFže +( +$fž’ame +, +$cov”ageInfÜm©iÚ +, +$þassS¹Lše + = 1) + +206 +$sourûEËm’t + = +$this +-> +doc +-> + `ü—‹EËm’t +('sourcefile'); + +207 +$sourûEËm’t +-> + `£tA‰ribu‹ +('Çme', + `ba£Çme +( +$fž’ame +)); + +212 +$sourûEËm’t +-> + `£tA‰ribu‹ +('sourûfže', +$fž’ame +); + +214 +$fž–šes + = +$this +-> + `highlightSourûFže +( +$fž’ame +); + +216 +$lš’r + = 1; + +218 + `fܗch + ( +$fž–šes + +as + +$lše +) + +220 +$lšeEËm’t + = +$this +-> +doc +-> + `ü—‹EËm’t +('sourceline'); + +221 +$lšeEËm’t +-> + `£tA‰ribu‹ +('cov”edcouÁ', ( + `is£t +( +$cov”ageInfÜm©iÚ +[ +$lš’r +]) ? $coverageInformation[$linenr] : '0')); + +223 ià( +$lš’r + =ð +$þassS¹Lše +) + +225 +$lšeEËm’t +-> + `£tA‰ribu‹ +('startclass', 1); + +228 +$‹xŠode + = +$this +-> +doc +-> + `ü—‹TextNode +( +$lše +); + +229 +$lšeEËm’t +-> + `­³ndChžd +( +$‹xŠode +); + +231 +$sourûEËm’t +-> + `­³ndChžd +( +$lšeEËm’t +); + +233 +$lš’r +++; + +236  +$sourûEËm’t +; + +237 + } +} + +239 +´Ùeùed + +funùiÚ + + $fž‹rCov”ed +( +$v¬ +) + +241  ( +$v¬ + >= 0); + +242 + } +} + +244 +´Ùeùed + +funùiÚ + + $ŒªsfÜmCov”ageInfÜm©iÚ +( +$fž’ame +, +$cov”ageInfÜm©iÚ +) + +246 +$þas£s + = +PHPUn™Utž +:: + `g‘DefšedCÏs£s +( +$fž’ame +, +$this +-> +þas¥©h +); + +248 ià( + `is_¬¿y +( +$þas£s +)) + +250 + `fܗch + ( +$þas£s + +as + +$þas¢ame +) + +252 +$»æeùiÚ + = +Ãw + + `ReæeùiÚCÏss +( +$þas¢ame +); + +254 +$m‘hods + = +$»æeùiÚ +-> + `g‘M‘hods +(); + +256 +$þassEËm’t + = +$this +-> +doc +-> + `ü—‹EËm’t +('class'); + +257 +$þassEËm’t +-> + `£tA‰ribu‹ +('Çme', +$»æeùiÚ +-> + `g‘Name +()); + +259 +$this +-> + `addCÏssToPackage +( +$»æeùiÚ +-> + `g‘Name +(), +$þassEËm’t +); + +261 +$þassS¹Lše + = +$»æeùiÚ +-> + `g‘S¹Lše +(); + +263 +$m‘hodscov”ed + = 0; + +264 +$m‘hodcouÁ + = 0; + +267 ià( +$»æeùiÚ +-> + `g‘P¬’tCÏss +(è=ð +NULL + && + `couÁ +($»æeùiÚ-> + `g‘IÁ”çûs +()) == 0) + +269 + `un£t +( +$cov”ageInfÜm©iÚ +[ +$þassS¹Lše + + 1]); + +273 + `un£t +( +$cov”ageInfÜm©iÚ +[ +$þassS¹Lše +]); + +276 + `»£t +( +$cov”ageInfÜm©iÚ +); + +278 + `fܗch + ( +$m‘hods + +as + +$m‘hod +) + +281 ià( +$m‘hod +-> + `g‘Deþ¬šgCÏss +()-> + `g‘Name +(è!ð +$»æeùiÚ +->getName()) + +287 ià( + `is£t +( +$cov”ageInfÜm©iÚ +[ +$m‘hod +-> + `g‘S¹Lše +()])) + +289 + `un£t +( +$cov”ageInfÜm©iÚ +[ +$m‘hod +-> + `g‘S¹Lše +()]); + +292 ià( + `is£t +( +$cov”ageInfÜm©iÚ +[ +$m‘hod +-> + `g‘EndLše +()])) + +294 + `un£t +( +$cov”ageInfÜm©iÚ +[ +$m‘hod +-> + `g‘EndLše +()]); + +297 ià( +$m‘hod +-> + `isAb¡¿ù +()) + +302 +$lš’r + = + `key +( +$cov”ageInfÜm©iÚ +); + +304  +$lš’r + !=ð +nuÎ + && $lš’¸< +$m‘hod +-> + `g‘S¹Lše +()) + +306 + `Ãxt +( +$cov”ageInfÜm©iÚ +); + +307 +$lš’r + = + `key +( +$cov”ageInfÜm©iÚ +); + +310 ià( + `cu¼’t +( +$cov”ageInfÜm©iÚ +è> 0 && +$m‘hod +-> + `g‘S¹Lše +(è<ð +$lš’r + && $lš’¸<ð$m‘hod-> + `g‘EndLše +()) + +312 +$m‘hodscov”ed +++; + +315 +$m‘hodcouÁ +++; + +318 +$¡©em’tcouÁ + = + `couÁ +( +$cov”ageInfÜm©iÚ +); + +319 +$¡©em’tscov”ed + = + `couÁ +( + `¬¿y_fž‹r +( +$cov”ageInfÜm©iÚ +, + `¬¿y +( +$this +, 'filterCovered'))); + +321 +$þassEËm’t +-> + `­³ndChžd +( +$this +-> + `ŒªsfÜmSourûFže +( +$fž’ame +, +$cov”ageInfÜm©iÚ +, +$þassS¹Lše +)); + +323 +$þassEËm’t +-> + `£tA‰ribu‹ +('m‘hodcouÁ', +$m‘hodcouÁ +); + +324 +$þassEËm’t +-> + `£tA‰ribu‹ +('m‘hodscov”ed', +$m‘hodscov”ed +); + +325 +$þassEËm’t +-> + `£tA‰ribu‹ +('¡©em’tcouÁ', +$¡©em’tcouÁ +); + +326 +$þassEËm’t +-> + `£tA‰ribu‹ +('¡©em’tscov”ed', +$¡©em’tscov”ed +); + +327 +$þassEËm’t +-> + `£tA‰ribu‹ +('tÙ®couÁ', +$m‘hodcouÁ + + +$¡©em’tcouÁ +); + +328 +$þassEËm’t +-> + `£tA‰ribu‹ +('tÙ®cov”ed', +$m‘hodscov”ed + + +$¡©em’tscov”ed +); + +331 + } +} + +333 +´Ùeùed + +funùiÚ + + $ÿlcuϋSti¡ics +() + +335 +$·ckages + = +$this +-> +doc +-> +docum’tEËm’t +-> + `g‘EËm’tsByTagName +('package'); + +337 +$tÙ®m‘hodcouÁ + = 0; + +338 +$tÙ®m‘hodscov”ed + = 0; + +340 +$tÙ®¡©em’tcouÁ + = 0; + +341 +$tÙ®¡©em’tscov”ed + = 0; + +343 + `fܗch + ( +$·ckages + +as + +$·ckage +) + +345 +$m‘hodcouÁ + = 0; + +346 +$m‘hodscov”ed + = 0; + +348 +$¡©em’tcouÁ + = 0; + +349 +$¡©em’tscov”ed + = 0; + +351 +$þas£s + = +$·ckage +-> + `g‘EËm’tsByTagName +('class'); + +353 + `fܗch + ( +$þas£s + +as + +$þass +) + +355 +$m‘hodcouÁ + +ð +$þass +-> + `g‘A‰ribu‹ +('methodcount'); + +356 +$m‘hodscov”ed + +ð +$þass +-> + `g‘A‰ribu‹ +('methodscovered'); + +358 +$¡©em’tcouÁ + +ð +$þass +-> + `g‘A‰ribu‹ +('statementcount'); + +359 +$¡©em’tscov”ed + +ð +$þass +-> + `g‘A‰ribu‹ +('statementscovered'); + +362 +$·ckage +-> + `£tA‰ribu‹ +('m‘hodcouÁ', +$m‘hodcouÁ +); + +363 +$·ckage +-> + `£tA‰ribu‹ +('m‘hodscov”ed', +$m‘hodscov”ed +); + +365 +$·ckage +-> + `£tA‰ribu‹ +('¡©em’tcouÁ', +$¡©em’tcouÁ +); + +366 +$·ckage +-> + `£tA‰ribu‹ +('¡©em’tscov”ed', +$¡©em’tscov”ed +); + +368 +$·ckage +-> + `£tA‰ribu‹ +('tÙ®couÁ', +$m‘hodcouÁ + + +$¡©em’tcouÁ +); + +369 +$·ckage +-> + `£tA‰ribu‹ +('tÙ®cov”ed', +$m‘hodscov”ed + + +$¡©em’tscov”ed +); + +371 +$tÙ®m‘hodcouÁ + +ð +$m‘hodcouÁ +; + +372 +$tÙ®m‘hodscov”ed + +ð +$m‘hodscov”ed +; + +374 +$tÙ®¡©em’tcouÁ + +ð +$¡©em’tcouÁ +; + +375 +$tÙ®¡©em’tscov”ed + +ð +$¡©em’tscov”ed +; + +378 +$this +-> +doc +-> +docum’tEËm’t +-> + `£tA‰ribu‹ +('m‘hodcouÁ', +$tÙ®m‘hodcouÁ +); + +379 +$this +-> +doc +-> +docum’tEËm’t +-> + `£tA‰ribu‹ +('m‘hodscov”ed', +$tÙ®m‘hodscov”ed +); + +381 +$this +-> +doc +-> +docum’tEËm’t +-> + `£tA‰ribu‹ +('¡©em’tcouÁ', +$tÙ®¡©em’tcouÁ +); + +382 +$this +-> +doc +-> +docum’tEËm’t +-> + `£tA‰ribu‹ +('¡©em’tscov”ed', +$tÙ®¡©em’tscov”ed +); + +384 +$this +-> +doc +-> +docum’tEËm’t +-> + `£tA‰ribu‹ +('tÙ®couÁ', +$tÙ®m‘hodcouÁ + + +$tÙ®¡©em’tcouÁ +); + +385 +$this +-> +doc +-> +docum’tEËm’t +-> + `£tA‰ribu‹ +('tÙ®cov”ed', +$tÙ®m‘hodscov”ed + + +$tÙ®¡©em’tscov”ed +); + +386 + } +} + +388 +funùiÚ + + $maš +() + +390 +$this +-> + `log +("Transforming coverage„eport"); + +392 +$d©aba£ + = +Ãw + + `PhšgFže +( +$this +-> +´ojeù +-> + `g‘Prݔty +('coverage.database')); + +394 +$´Ýs + = +Ãw + + `Prݔt›s +(); + +395 +$´Ýs +-> + `lßd +( +$d©aba£ +); + +397 + `fܗch + ( +$´Ýs +-> + `keys +(è +as + +$fž’ame +) + +399 +$fže + = + `un£rŸlize +( +$´Ýs +-> + `g‘Prݔty +( +$fž’ame +)); + +401 +$this +-> + `ŒªsfÜmCov”ageInfÜm©iÚ +( +$fže +['fullname'], $file['coverage']); + +404 +$this +-> + `ÿlcuϋSti¡ics +(); + +406 +$this +-> +doc +-> + `§ve +($this-> +outfže +); + +408 + `fܗch + ( +$this +-> +ŒªsfÜm”s + +as + +$ŒªsfÜm” +) + +410 +$ŒªsfÜm” +-> + `£tXmlDocum’t +( +$this +-> +doc +); + +411 +$ŒªsfÜm” +-> + `ŒªsfÜm +(); + +413 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/coverage/CoverageReportTransformer.php + +1 +sk + = +$sk +; + +48 +funùiÚ + + $£tStyËDœ +( +$¡yËDœ +) + +50 +$this +-> +¡yËDœ + = +$¡yËDœ +; + +51 + } +} + +53 +funùiÚ + + $£tToDœ +( +$toDœ +) + +55 +$this +-> +toDœ + = +$toDœ +; + +56 + } +} + +58 +funùiÚ + + $£tXmlDocum’t +( +$docum’t +) + +60 +$this +-> +docum’t + = +$docum’t +; + +61 + } +} + +63 +funùiÚ + + $ŒªsfÜm +() + +65 +$dœ + = +Ãw + + `PhšgFže +( +$this +-> +toDœ +); + +67 ià(! +$dœ +-> + `exi¡s +()) + +69 +throw + +Ãw + + `BuždExû±iÚ +("DœeùÜy '" . +$this +-> +toDœ + . "' does‚otƒxist"); + +72 +$x¦fže + = +$this +-> + `g‘StyËSh“t +(); + +74 +$x¦ + = +Ãw + + `DOMDocum’t +(); + +75 +$x¦ +-> + `lßd +( +$x¦fže +-> + `g‘AbsÞu‹P©h +()); + +77 +$´oc + = +Ãw + + `XSLTProûssÜ +(); + +78 +$´oc +-> + `impÜtStyËSh“t +( +$x¦ +); + +80 +Ex‹ndedFžeSŒ—m +:: + `»gi¡”SŒ—m +(); + +84 +$´oc +-> + `£tP¬am‘” +('', 'ouut.dœ', +$dœ +-> + `g‘AbsÞu‹P©h +()); + +85 +$´oc +-> + `ŒªsfÜmToXML +( +$this +-> +docum’t +); + +86 + } +} + +88 +´iv©e + +funùiÚ + + $g‘StyËSh“t +() + +90 +$x¦Çme + = "coverage-frames.xsl"; + +92 ià( +$this +-> +¡yËDœ +) + +94 +$fže + = +Ãw + + `PhšgFže +( +$this +-> +¡yËDœ +, +$x¦Çme +); + +98 +$·th + = +Phšg +:: + `g‘ResourûP©h +("phing/etc/$xslname"); + +100 ià( +$·th + ==ð +NULL +) + +102 +$·th + = +Phšg +:: + `g‘ResourûP©h +("etc/$xslname"); + +104 ià( +$·th + ==ð +NULL +) + +106 +throw + +Ãw + + `BuždExû±iÚ +("Could‚ot find $xslname in„esource…ath"); + +110 +$fže + = +Ãw + + `PhšgFže +( +$·th +); + +113 ià(! +$fže +-> + `exi¡s +()) + +115 +throw + +Ãw + + `BuždExû±iÚ +("Could‚Ù fšd fž" . +$fže +-> + `g‘P©h +()); + +118  +$fže +; + +119 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/coverage/CoverageSetupTask.php + +1 +fže£ts +[] = +$fže£t +; + +62 +funùiÚ + + $£tD©aba£ +( +$d©aba£ +) + +64 +$this +-> +d©aba£ + = +$d©aba£ +; + +65 + } +} + +67 +funùiÚ + + $£tCÏs¥©h +( +P©h + +$þas¥©h +) + +69 ià( +$this +-> +þas¥©h + ==ð +nuÎ +) + +71 +$this +-> +þas¥©h + = +$þas¥©h +; + +75 +$this +-> +þas¥©h +-> + `­³nd +( +$þas¥©h +); + +77 + } +} + +79 +funùiÚ + + $ü—‹CÏs¥©h +() + +81 +$this +-> +þas¥©h + = +Ãw + + `P©h +(); + +82  +$this +-> +þas¥©h +; + +83 + } +} + +90 +´iv©e + +funùiÚ + + $g‘Fž’ames +() + +92 +$fžes + = + `¬¿y +(); + +94 + `fܗch + ( +$this +-> +fže£ts + +as + +$fže£t +) + +96 +$ds + = +$fže£t +-> + `g‘DœeùÜySÿ” +( +$this +-> +´ojeù +); + +97 +$ds +-> + `sÿn +(); + +99 +$šþudedFžes + = +$ds +-> + `g‘InþudedFžes +(); + +101 + `fܗch + ( +$šþudedFžes + +as + +$fže +) + +103 +$fs + = +Ãw + + `PhšgFže +( + `»®·th +( +$ds +-> + `g‘Ba£Dœ +()), +$fže +); + +105 +$fžes +[] = + `¬¿y +('key' => + `¡¹Þow” +( +$fs +-> + `g‘AbsÞu‹P©h +()), 'fullname' => $fs->getAbsolutePath()); + +109  +$fžes +; + +110 + } +} + +112 +funùiÚ + + $š™ +() + +114 ià(! + `ex‹nsiÚ_lßded +('xdebug')) + +116 +throw + +Ãw + + `Exû±iÚ +("CoverageSetupTask depends on Xdebug being installed."); + +118 + } +} + +120 +funùiÚ + + $maš +() + +122 +$fžes + = +$this +-> + `g‘Fž’ames +(); + +124 +$this +-> + `log +("S‘tšg u°cov”agd©aba£ fÜ " . + `couÁ +( +$fžes +) . " files"); + +126 +$´Ýs + = +Ãw + + `Prݔt›s +(); + +128 + `fܗch + ( +$fžes + +as + +$fže +) + +130 +$fuÎÇme + = +$fže +['fullname']; + +131 +$fž’ame + = +$fže +['key']; + +133 +$´Ýs +-> + `£tPrݔty +( +$fž’ame +, + `£rŸlize +( + `¬¿y +('fuÎÇme' => +$fuÎÇme +, 'coverage' =>‡rray()))); + +136 +$dbfže + = +Ãw + + `PhšgFže +( +$this +-> +d©aba£ +); + +138 +$´Ýs +-> + `¡Üe +( +$dbfže +); + +140 +$this +-> +´ojeù +-> + `£tPrݔty +('cov”age.d©aba£', +$dbfže +-> + `g‘AbsÞu‹P©h +()); + +142 + `fܗch + ( +$fžes + +as + +$fže +) + +144 +$fuÎÇme + = +$fže +['fullname']; + +146 + `xdebug_¡¬t_code_cov”age +( +XDEBUG_CC_DEAD_CODE + | +XDEBUG_CC_UNUSED +); + +148 +Phšg +:: + `__impÜt +( +$fuÎÇme +, +$this +-> +þas¥©h +); + +150 +$cov”age + = + `xdebug_g‘_code_cov”age +(); + +152 + `xdebug_¡Ý_code_cov”age +(); + +154 +Cov”ageM”g” +:: + `m”ge +( +$this +-> +´ojeù +, + `¬¿y +( +$cov”age +)); + +156 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/creole/CreoleSQLExecTask.php + +1 +¤cFže + = +$¤cFže +; + +151 +public + +funùiÚ + + $addText +( +$sql +) { + +152 +$this +-> +sqlCommªd + .ð +$sql +; + +153 + } +} + +158 +public + +funùiÚ + + $addFže£t +( +FžeS‘ + +$£t +) { + +159 +$this +-> +fže£ts +[] = +$£t +; + +160 + } +} + +168 +funùiÚ + + $ü—‹Fž‹rChaš +() { + +169 +$num + = + `¬¿y_push +( +$this +-> +fž‹rChašs +, +Ãw + + `Fž‹rChaš +($this-> +´ojeù +)); + +170  +$this +-> +fž‹rChašs +[ +$num +-1]; + +171 + } +} + +176 +public + +funùiÚ + + $ü—‹T¿n§ùiÚ +() { + +177 +$t + = +Ãw + + `SQLExecT¿n§ùiÚ +( +$this +); + +178 +$this +-> +Œª§ùiÚs +[] = +$t +; + +179  +$t +; + +180 + } +} + +187 +public + +funùiÚ + + $£tEncodšg +( +$’codšg +) { + +188 +$this +-> +’codšg + = +$’codšg +; + +189 + } +} + +199 +public + +funùiÚ + + $£tD–im™” +( +$d–im™” +) + +201 +$this +-> +d–im™” + = +$d–im™” +; + +202 + } +} + +212 +public + +funùiÚ + + $£tD–im™”Ty³ +( +$d–im™”Ty³ +) + +214 +$this +-> +d–im™”Ty³ + = +$d–im™”Ty³ +; + +215 + } +} + +222 +public + +funùiÚ + + $£tPršt +( +$´št +) + +224 +$this +-> +´št + = ( +boޗn +è +$´št +; + +225 + } +} + +232 +public + +funùiÚ + + $£tShowh—d”s +( +$showh—d”s +) { + +233 +$this +-> +showh—d”s + = ( +boޗn +è +$showh—d”s +; + +234 + } +} + +241 +public + +funùiÚ + + $£tOuut +( +PhšgFže + +$ouut +) { + +242 +$this +-> +ouut + = +$ouut +; + +243 + } +} + +250 +public + +funùiÚ + + $£tAµ’d +( +$­³nd +) { + +251 +$this +-> +­³nd + = ( +boޗn +è +$­³nd +; + +252 + } +} + +259 +public + +funùiÚ + + $£tOÃ¼Ü +( +$aùiÚ +) { + +260 +$this +-> +ÚE¼Ü + = +$aùiÚ +; + +261 + } +} + +267 +public + +funùiÚ + + $maš +() { + +269 +$§vedT¿n§ùiÚ + = + `¬¿y +(); + +270  +$i +=0, +$size += + `couÁ +( +$this +-> +Œª§ùiÚs +); $i < $size; $i++) { + +271 +$§vedT¿n§ùiÚ +[] = +þÚe + +$this +-> +Œª§ùiÚs +[ +$i +]; + +274 +$§vedSqlCommªd + = +$this +-> +sqlCommªd +; + +276 +$this +-> +sqlCommªd + = + `Œim +($this->sqlCommand); + +278 +Œy + { + +279 ià( +$this +-> +¤cFže + ==ð +nuÎ + && $this-> +sqlCommªd + === "" + +280 && + `em±y +( +$this +-> +fže£ts +)) { + +281 ià( + `couÁ +( +$this +-> +Œª§ùiÚs +) === 0) { + +282 +throw + +Ãw + + `BuždExû±iÚ +("Source file or fileset, " + +284 . "mu¡ b£t!", +$this +-> +loÿtiÚ +); + +288 ià( +$this +-> +¤cFže + !=ð +nuÎ + && !$this->¤cFže-> + `exi¡s +()) { + +289 +throw + +Ãw + + `BuždExû±iÚ +("Sourû fždÛ nكxi¡!", +$this +-> +loÿtiÚ +); + +293  +$i + = 0, +$size += + `couÁ +( +$this +-> +fže£ts +); $i < $size; $i++) { + +294 +$fs + = +$this +-> +fže£ts +[ +$i +]; + +295 +$ds + = +$fs +-> + `g‘DœeùÜySÿ” +( +$this +-> +´ojeù +); + +296 +$¤cDœ + = +$fs +-> + `g‘Dœ +( +$this +-> +´ojeù +); + +298 +$¤cFžes + = +$ds +-> + `g‘InþudedFžes +(); + +301  +$j +=0, +$size += + `couÁ +( +$¤cFžes +); $j < $size; $j++) { + +302 +$t + = +$this +-> + `ü—‹T¿n§ùiÚ +(); + +303 +$t +-> + `£tSrc +( +Ãw + + `PhšgFže +( +$¤cDœ +, +$¤cFžes +[ +$j +])); + +308 +$t + = +$this +-> + `ü—‹T¿n§ùiÚ +(); + +309 ià( +$this +-> +¤cFže +è +$t +-> + `£tSrc +($this->srcFile); + +310 +$t +-> + `addText +( +$this +-> +sqlCommªd +); + +311 +$this +-> +cÚn + = $this-> + `g‘CÚÃùiÚ +(); + +313 +Œy + { + +315 +$this +-> +¡©em’t + = $this-> +cÚn +-> + `ü—‹S‹m’t +(); + +317 +$out + = +nuÎ +; + +319 +Œy + { + +321 ià( +$this +-> +ouut + !=ð +nuÎ +) { + +322 +$this +-> + `log +("O³nšg ouuˆfž" . $this-> +ouut +, +Projeù +:: +MSG_VERBOSE +); + +323 +$out + = +Ãw + + `Bufã»dWr™” +Òew + `FžeWr™” +( +$this +-> +ouut +-> + `g‘AbsÞu‹P©h +(), $this-> +­³nd +)); + +327  +$i +=0, +$size += + `couÁ +( +$this +-> +Œª§ùiÚs +); $i < $size; $i++) { + +328 +$this +-> +Œª§ùiÚs +[ +$i +]-> + `runT¿n§ùiÚ +( +$out +); + +329 ià(! +$this +-> + `isAutocomm™ +()) { + +330 +$this +-> + `log +("Comm™šg¿n§ùiÚ", +Projeù +:: +MSG_VERBOSE +); + +331 +$this +-> +cÚn +-> + `comm™ +(); + +334 ià( +$out +è$out-> + `þo£ +(); + +335 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +336 ià( +$out +è$out-> + `þo£ +(); + +337 +throw + +$e +; + +339 } + `ÿtch + ( +IOExû±iÚ + +$e +) { + +340 ià(! +$this +-> + `isAutocomm™ +(è&& $this-> +cÚn + !=ð +nuÎ + && $this-> +ÚE¼Ü + == "abort") { + +341 +Œy + { + +342 +$this +-> +cÚn +-> + `rÞlback +(); + +343 } + `ÿtch + ( +SQLExû±iÚ + +$ex +) {} + +345 +throw + +Ãw + + `BuždExû±iÚ +( +$e +-> + `g‘Mes§ge +(), +$this +-> +loÿtiÚ +); + +346 } + `ÿtch + ( +SQLExû±iÚ + +$e +){ + +347 ià(! +$this +-> + `isAutocomm™ +(è&& $this-> +cÚn + !=ð +nuÎ + && $this-> +ÚE¼Ü + == "abort") { + +348 +Œy + { + +349 +$this +-> +cÚn +-> + `rÞlback +(); + +350 } + `ÿtch + ( +SQLExû±iÚ + +$ex +) {} + +352 +throw + +Ãw + + `BuždExû±iÚ +( +$e +-> + `g‘Mes§ge +(), +$this +-> +loÿtiÚ +); + +355 +$this +-> + `log +($this-> +goodSql + . " oà" . $this-> +tÙ®Sql + . + +357 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +358 +$this +-> +Œª§ùiÚs + = +$§vedT¿n§ùiÚ +; + +359 +$this +-> +sqlCommªd + = +$§vedSqlCommªd +; + +360 +throw + +$e +; + +363 +$this +-> +Œª§ùiÚs + = +$§vedT¿n§ùiÚ +; + +364 +$this +-> +sqlCommªd + = +$§vedSqlCommªd +; + +366 + } +} + +373 +public + +funùiÚ + + $runS‹m’ts +( +R—d” + +$»ad” +, +$out + = +nuÎ +) { + +374 +$sql + = ""; + +375 +$lše + = ""; + +377 +$bufãr + = ''; + +379 ià(( + `is_¬¿y +( +$this +-> +fž‹rChašs +)è&& (! + `em±y +($this->filterChains))) { + +380 +$š + = +FžeUtžs +:: + `g‘ChašedR—d” +( +Ãw + + `Bufã»dR—d” +( +$»ad” +), +$this +-> +fž‹rChašs +, $this-> + `g‘Projeù +()); + +381 -1 !=ð( +$»ad + = +$š +-> + `»ad +())) { + +382 +$bufãr + .ð +$»ad +; + +384 +$lšes + = + `ex¶ode +("\n", +$bufãr +); + +386 +$š + = +Ãw + + `Bufã»dR—d” +( +$»ad” +); + +388 ( +$lše + = +$š +-> + `»adLše +()è!=ð +nuÎ +) { + +389 +$lšes +[] = +$lše +; + +393 +Œy + { + +394 + `fܗch + ( +$lšes + +as + +$lše +) { + +395 +$lše + = + `Œim +($line); + +396 +$lše + = +ProjeùCÚfigu¿tÜ +:: + `»¶aûPrݔt›s +( +$this +-> +´ojeù +, $line, + +397 +$this +-> +´ojeù +-> + `g‘Prݔt›s +()); + +399 ià( +SŒšgH–³r +:: + `¡¬tsW™h +("//", +$lše +) || + +400 +SŒšgH–³r +:: + `¡¬tsW™h +("--", +$lše +) || + +401 +SŒšgH–³r +:: + `¡¬tsW™h +("#", +$lše +)) { + +405 ià( + `¡¾’ +( +$lše +) > 4 + +406 && + `¡¹ouµ” +( + `sub¡r +( +$lše +,0, 4)) == "REM ") { + +410 +$sql + .ð" " . +$lše +; + +411 +$sql + = + `Œim +($sql); + +416 ià( + `¡½os +( +$lše +, "--"è!=ð +çl£ +) { + +417 +$sql + .= "\n"; + +420 ià( +$this +-> +d–im™”Ty³ + =ð +£lf +:: +DELIM_NORMAL + + +421 && +SŒšgH–³r +:: + `’dsW™h +( +$this +-> +d–im™” +, +$sql +) + +422 || +$this +-> +d–im™”Ty³ + =ð +£lf +:: +DELIM_ROW + + +423 && +$lše + =ð +$this +-> +d–im™” +) { + +424 +$this +-> + `log +("SQL: " . +$sql +, +Projeù +:: +MSG_VERBOSE +); + +425 +$this +-> + `execSQL +( +SŒšgH–³r +:: + `sub¡ršg +( +$sql +, 0, + `¡¾’ +($sqlè- sŒËn($this-> +d–im™” +)), +$out +); + +426 +$sql + = ""; + +431 ià( +$sql + !== "") { + +432 +$this +-> + `execSQL +( +$sql +, +$out +); + +434 } + `ÿtch + ( +SQLExû±iÚ + +$e +) { + +435 +throw + +Ãw + + `BuždExû±iÚ +("E¼Ü„ušg s‹m’ts", +$e +); + +437 + } +} + +444 +´Ùeùed + +funùiÚ + + $execSQL +( +$sql +, +$out + = +nuÎ +) { + +446 ià( + `Œim +( +$sql +) == "") { + +450 +Œy + { + +451 +$this +-> +tÙ®Sql +++; + +452 ià(! +$this +-> +¡©em’t +-> + `execu‹ +( +$sql +)) { + +453 +$this +-> + `log +($this-> +¡©em’t +-> + `g‘Upd©eCouÁ +(è. "„ow afãùed", +Projeù +:: +MSG_VERBOSE +); + +455 ià( +$this +-> +´št +) { + +456 +$this +-> + `´štResuÉs +( +$out +); + +460 +$this +-> +goodSql +++; + +462 } + `ÿtch + ( +SQLExû±iÚ + +$e +) { + +463 +$this +-> + `log +("FažedØexecu‹: " . +$sql +, +Projeù +:: +MSG_ERR +); + +464 ià( +$this +-> +ÚE¼Ü + != "continue") { + +465 +throw + +Ãw + + `BuždExû±iÚ +("FažedØexecu‹ SQL", +$e +); + +467 +$this +-> + `log +( +$e +-> + `g‘Mes§ge +(), +Projeù +:: +MSG_ERR +); + +469 + } +} + +475 +´Ùeùed + +funùiÚ + + $´štResuÉs +( +$out + = +nuÎ +) { + +477 +$rs + = +nuÎ +; + +479 +$rs + = +$this +-> +¡©em’t +-> + `g‘ResuÉS‘ +(); + +481 ià( +$rs + !=ð +nuÎ +) { + +483 +$this +-> + `log +("Proûssšg‚ew„esuÉ s‘.", +Projeù +:: +MSG_VERBOSE +); + +485 +$lše + = ""; + +487 +$cÞ¥rš‹d + = +çl£ +; + +489  +$rs +-> + `Ãxt +()) { + +490 +$f›lds + = +$rs +-> + `g‘Row +(); + +492 ià(! +$cÞ¥rš‹d + && +$this +-> +showh—d”s +) { + +493 +$fœ¡ + = +Œue +; + +494 + `fܗch +( +$f›lds + +as + +$f›ldName + => +$ignÜe +) { + +495 ià( +$fœ¡ +è$fœ¡ = +çl£ +; +$lše + .= ","; + +496 +$lše + .ð +$f›ldName +; + +498 ià( +$out + !=ð +nuÎ +) { + +499 +$out +-> + `wr™e +( +$lše +); + +500 +$out +-> + `ÃwLše +(); + +502 + `´št +( +$lše +. +PHP_EOL +); + +504 +$lše + = ""; + +505 +$cÞ¥rš‹d + = +Œue +; + +508 +$fœ¡ + = +Œue +; + +509 + `fܗch +( +$f›lds + +as + +$cÞumnV®ue +) { + +511 ià( +$cÞumnV®ue + !ð +nuÎ +) { + +512 +$cÞumnV®ue + = + `Œim +($columnValue); + +515 ià( +$fœ¡ +) { + +516 +$fœ¡ + = +çl£ +; + +518 +$lše + .= ","; + +520 +$lše + .ð +$cÞumnV®ue +; + +523 ià( +$out + !=ð +nuÎ +) { + +524 +$out +-> + `wr™e +( +$lše +); + +525 +$out +-> + `ÃwLše +(); + +527 + `´št +( +$lše + . +PHP_EOL +); + +529 +$lše + = ""; + +533 }  +$this +-> +¡©em’t +-> + `g‘MÜeResuÉs +()); + +534 + `´št +( +PHP_EOL +); + +535 ià( +$out + !=ð +nuÎ +è$out-> + `ÃwLše +(); + +536 + } +} + +546 þas  + cSQLExecT¿n§ùiÚ + { + +548 +´iv©e + + m$tSrcFže + = +nuÎ +; + +549 +´iv©e + + m$tSqlCommªd + = ""; + +550 +´iv©e + + m$·»Á +; + +552 +funùiÚ + + $__cÚ¡ruù +( +$·»Á +) + +555 +$this +-> +·»Á + = +$·»Á +; + +558 +public + +funùiÚ + + $£tSrc +( +PhšgFže + +$¤c +) + +560 +$this +-> +tSrcFže + = +$¤c +; + +561 + } +} + +563 +public + +funùiÚ + + $addText +( +$sql +) + +565 +$this +-> +tSqlCommªd + .ð +$sql +; + +566 + } +} + +571 +public + +funùiÚ + + $runT¿n§ùiÚ +( +$out + = +nuÎ +) + +573 ià(! + `em±y +( +$this +-> +tSqlCommªd +)) { + +574 +$this +-> +·»Á +-> + `log +("Executšg commªds", +Projeù +:: +MSG_INFO +); + +575 +$this +-> +·»Á +-> + `runS‹m’ts +( +Ãw + + `SŒšgR—d” +($this-> +tSqlCommªd +), +$out +); + +578 ià( +$this +-> +tSrcFže + !=ð +nuÎ +) { + +579 +$this +-> +·»Á +-> + `log +("Executšg fže: " . $this-> +tSrcFže +-> + `g‘AbsÞu‹P©h +(), + +580 +Projeù +:: +MSG_INFO +); + +582 +$»ad” + = +Ãw + + `FžeR—d” +( +$this +-> +tSrcFže +); + +584 +$this +-> +·»Á +-> + `runS‹m’ts +( +$»ad” +, +$out +); + +585 +$»ad” +-> + `þo£ +(); + +587 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/creole/CreoleTask.php + +1 +ÿchšg + = +$’abË +; + +102 + } +} + +108 +public + +funùiÚ + + $£tU¾ +( +$u¾ +) { + +109 +$this +-> +u¾ + = +$u¾ +; + +110 + } +} + +117 +public + +funùiÚ + + $£tDriv” +( +$driv” +) + +119 +$this +-> +driv” + = +$driv” +; + +120 + } +} + +126 +public + +funùiÚ + + $£tPasswÜd +( +$·sswÜd +) { + +127 +$this +-> +·sswÜd + = +$·sswÜd +; + +128 + } +} + +135 +public + +funùiÚ + + $£tAutocomm™ +( +$autocomm™ +) { + +136 +$this +-> +autocomm™ + = +$autocomm™ +; + +137 + } +} + +144 +public + +funùiÚ + + $£tV”siÚ +( +$v”siÚ +) { + +145 +$this +-> +v”siÚ + = +$v”siÚ +; + +146 + } +} + +148 +´Ùeùed + +funùiÚ + + $g‘Lßd”M­ +() { + +149  +£lf +:: +$lßd”M­ +; + +150 + } +} + +159 +´Ùeùed + +funùiÚ + + $g‘CÚÃùiÚ +() { + +161 ià( +$this +-> +u¾ + ==ð +nuÎ +) { + +162 +throw + +Ãw + + `BuždExû±iÚ +("U¾‡‰ribu‹ mu¡ b£t!", +$this +-> +loÿtiÚ +); + +165 +Œy + { + +167 +$this +-> + `log +("CÚÃùšgØ" . $this-> + `g‘U¾ +(), +Projeù +:: +MSG_VERBOSE +); + +168 +$šfo + = +Ãw + + `Prݔt›s +(); + +170 +$d¢ + = +C»Þe +:: + `·r£DSN +( +$this +-> +u¾ +); + +172 ià(! + `is£t +( +$d¢ +["u£ºame"]è&& +$this +-> +u£rId + ==ð +nuÎ +) { + +173 +throw + +Ãw + + `BuždExû±iÚ +("U£ºammu¡ bš URL o¸u£rid‡‰ribu‹ mu¡ b£t.", +$this +-> +loÿtiÚ +); + +176 ià( +$this +-> +u£rId +) { + +177 +$d¢ +["u£ºame"] = +$this +-> + `g‘U£rId +(); + +180 ià( +$this +-> +·sswÜd +) { + +181 +$d¢ +["·sswÜd"] = +$this +-> + `g‘PasswÜd +(); + +184 ià( +$this +-> +driv” +) { + +185 +C»Þe +:: + `»gi¡”Driv” +( +$d¢ +['ph±y³'], +$this +-> +driv” +); + +188 +$cÚn + = +C»Þe +:: + `g‘CÚÃùiÚ +( +$d¢ +); + +189 +$cÚn +-> + `£tAutoComm™ +( +$this +-> +autocomm™ +); + +190  +$cÚn +; + +192 } + `ÿtch + ( +SQLExû±iÚ + +$e +) { + +193 +throw + +Ãw + + `BuždExû±iÚ +( +$e +-> + `g‘Mes§ge +(), +$this +-> +loÿtiÚ +); + +196 + } +} + +198 +public + +funùiÚ + + $isCachšg +( +$v®ue +) { + +199 +$this +-> +ÿchšg + = +$v®ue +; + +200 + } +} + +206 +public + +funùiÚ + + $isAutocomm™ +() { + +207  +$this +-> +autocomm™ +; + +208 + } +} + +214 +public + +funùiÚ + + $g‘U¾ +() { + +215  +$this +-> +u¾ +; + +216 + } +} + +222 +public + +funùiÚ + + $g‘U£rId +() { + +223  +$this +-> +u£rId +; + +224 + } +} + +230 +public + +funùiÚ + + $£tU£rid +( +$u£rId +) { + +231 +$this +-> +u£rId + = +$u£rId +; + +232 + } +} + +238 +public + +funùiÚ + + $g‘PasswÜd +() { + +239  +$this +-> +·sswÜd +; + +240 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/DbDeployTask.php + +1 +u¾ +, 0, + `¡½os +($this->url, ':')); + +54 +$dbmsSyÁaxFaùÜy + = +Ãw + + `DbmsSyÁaxFaùÜy +( +$dbms +); + +55 +$this +-> +dbmsSyÁax + = +$dbmsSyÁaxFaùÜy +-> + `g‘DbmsSyÁax +(); + +58 +$ouutFžeHªdË + = + `fݒ +( +$this +-> +ouutFže +, "w+"); + +59 +$undoOuutFžeHªdË + = + `fݒ +( +$this +-> +undoOuutFže +, "w+"); + +62 +$this +-> +­¶›dChªgeNumb”s + = $this-> + `g‘Aµl›dChªgeNumb”s +(); + +63 +$this +-> + `log +('Cu¼’ˆdb„evisiÚ: ' . $this-> + `g‘La¡ChªgeAµl›dInDb +()); + +66 +$doSql + = +$this +-> + `doD•loy +(); + +67 +$undoSql + = +$this +-> + `undoD•loy +(); + +70 + `fwr™e +( +$ouutFžeHªdË +, +$doSql +); + +71 + `fwr™e +( +$undoOuutFžeHªdË +, +$undoSql +); + +73 } + `ÿtch + ( +Exû±iÚ + +$e +){ + +74 +throw + +Ãw + + `BuždExû±iÚ +( +$e +); + +78 +funùiÚ + + $g‘Aµl›dChªgeNumb”s +(){ + +79 if( + `couÁ +( +$this +-> +­¶›dChªgeNumb”s +) == 0){ + +80 +$this +-> + `log +('G‘tšg‡µl›d chªged‚umb” äom DB: ' . $this-> +u¾ + ); + +81 +$­¶›dChªgeNumb”s + = + `¬¿y +(); + +82 +$dbh + = +Ãw + + `PDO +( +$this +-> +u¾ +, $this-> +u£rid +, $this-> +·sswÜd +); + +83 +$dbh +-> + `£tA‰ribu‹ +( +PDO +:: +ATTR_ERRMODE +, PDO:: +ERRMODE_EXCEPTION +); + +84 +$sql + = "SELECT * FROM " . +DbD•loyTask +:: +$TABLE_NAME + . " WHERE delta_set = '$this->deltaSet' ORDER BY change_number"; + +85 + `fܗch +( +$dbh +-> + `qu”y +( +$sql +è +as + +$chªge +){ + +86 +$­¶›dChªgeNumb”s +[] = +$chªge +['change_number']; + +88 +$this +-> +­¶›dChªgeNumb”s + = +$­¶›dChªgeNumb”s +; + +90  +$this +-> +­¶›dChªgeNumb”s +; + +91 + } +} + +93 +funùiÚ + + $g‘La¡ChªgeAµl›dInDb +(){ + +94  ( + `couÁ +( +$this +-> +­¶›dChªgeNumb”s +è> 0è? + `max +($this->appliedChangeNumbers) : 0; + +95 + } +} + +97 +funùiÚ + + $doD•loy +(){ + +98 +$sqlToP”fÜmD•loy + = ''; + +99 +$Ï¡ChªgeAµl›dInDb + = +$this +-> + `g‘La¡ChªgeAµl›dInDb +(); + +100 +$fžes + = +$this +-> + `g‘D–sFžesA¼ay +(); + +101 + `ksÜt +( +$fžes +); + +102 + `fܗch +( +$fžes + +as + +$fžeChªgeNumb” +=> +$fžeName +){ + +103 if( +$fžeChªgeNumb” + > +$Ï¡ChªgeAµl›dInDb + && $fžeChªgeNumb” <ð +$this +-> +Ï¡ChªgeToAµly +){ + +104 +$sqlToP”fÜmD•loy + .ð'-- F¿gm’ˆbegšs: ' . +$fžeChªgeNumb” + . ' --' . "\n"; + +105 +$sqlToP”fÜmD•loy + .ð'INSERT INTO ' . +DbD•loyTask +:: +$TABLE_NAME + . ' (change_number, delta_set, start_dt,‡pplied_by, description)'. + +106 ' VALUES ('. +$fžeChªgeNumb” + .', \''. +$this +-> +d–S‘ + .'\', '. $this-> +dbmsSyÁax +-> + `g’”©eTime¡amp +(è.', \'dbd•loy\', \''. +$fžeName + .'\');' . "\n"; + +107 +$fuÎFžeName + = +$this +-> +dœ + . '/' . +$fžeName +; + +108 +$fh + = + `fݒ +( +$fuÎFžeName +, 'r'); + +109 +$cڋÁs + = + `ä—d +( +$fh +, + `fžesize +( +$fuÎFžeName +)); + +110 +$d•loySQLFromFže + = + `sub¡r +( +$cڋÁs +,0, + `¡½os +($contents, '-- //@UNDO')); + +111 +$sqlToP”fÜmD•loy + .ð +$d•loySQLFromFže +; + +112 +$sqlToP”fÜmD•loy + .ð'UPDATE ' . +DbD•loyTask +:: +$TABLE_NAME + . ' SET com¶‘e_dˆð' . +$this +-> +dbmsSyÁax +-> + `g’”©eTime¡amp +(è. ' WHERE chªge_numb” = ' . +$fžeChªgeNumb” + . ' AND d–_£ˆð\'' . $this-> +d–S‘ + . '\';' . "\n"; + +113 +$sqlToP”fÜmD•loy + .ð'-- F¿gm’ˆ’ds: ' . +$fžeChªgeNumb” + . ' --' . "\n"; + +116  +$sqlToP”fÜmD•loy +; + +117 + } +} + +119 +funùiÚ + + $undoD•loy +(){ + +120 +$sqlToP”fÜmUndo + = ''; + +121 +$Ï¡ChªgeAµl›dInDb + = +$this +-> + `g‘La¡ChªgeAµl›dInDb +(); + +122 +$fžes + = +$this +-> + `g‘D–sFžesA¼ay +(); + +123 + `krsÜt +( +$fžes +); + +124 + `fܗch +( +$fžes + +as + +$fžeChªgeNumb” +=> +$fžeName +){ + +125 if( +$fžeChªgeNumb” + > +$Ï¡ChªgeAµl›dInDb + && $fžeChªgeNumb” <ð +$this +-> +Ï¡ChªgeToAµly +){ + +126 +$fuÎFžeName + = +$this +-> +dœ + . '/' . +$fžeName +; + +127 +$fh + = + `fݒ +( +$fuÎFžeName +, 'r'); + +128 +$cڋÁs + = + `ä—d +( +$fh +, + `fžesize +( +$fuÎFžeName +)); + +129 +$undoSQLFromFže + = + `sub¡r +( +$cڋÁs +, + `¡½os +($contents, '-- //@UNDO')+10); + +130 +$sqlToP”fÜmUndo + .ð +$undoSQLFromFže +; + +131 +$sqlToP”fÜmUndo + .ð'DELETE FROM ' . +DbD•loyTask +:: +$TABLE_NAME + . ' WHERE chªge_numb” = ' . +$fžeChªgeNumb” + . ' AND d–_£ˆð\'' . +$this +-> +d–S‘ + . '\';' . "\n"; + +132 +$sqlToP”fÜmUndo + .ð'-- F¿gm’ˆ’ds: ' . +$fžeChªgeNumb” + . ' --' . "\n"; + +135  +$sqlToP”fÜmUndo +; + +136 + } +} + +138 +funùiÚ + + $g‘D–sFžesA¼ay +(){ + +139 +$ba£Dœ + = + `»®·th +( +$this +-> +dœ +); + +140 +$dh + = + `ݒdœ +( +$ba£Dœ +); + +141 +$fžeChªgeNumb”P»fix + = ''; + +142 ( +$fže + = + `»addœ +( +$dh +)è!=ð +çl£ +){ + +143 if( + `´eg_m©ch +('[\d+]', +$fže +, +$fžeChªgeNumb”P»fix +)){ + +144 +$fžes +[ +$fžeChªgeNumb”P»fix +[0]] = +$fže +; + +147  +$fžes +; + +148 + } +} + +150 +funùiÚ + + $£tU¾ +( +$u¾ +){ + +151 +$this +-> +u¾ + = +$u¾ +; + +152 + } +} + +154 +funùiÚ + + $£tU£rId +( +$u£rid +){ + +155 +$this +-> +u£rid + = +$u£rid +; + +156 + } +} + +158 +funùiÚ + + $£tPasswÜd +( +$·sswÜd +){ + +159 +$this +-> +·sswÜd + = +$·sswÜd +; + +160 + } +} + +162 +funùiÚ + + $£tDœ +( +$dœ +){ + +163 +$this +-> +dœ + = +$dœ +; + +164 + } +} + +166 +funùiÚ + + $£tOuutFže +( +$ouutFže +){ + +167 +$this +-> +ouutFže + = +$ouutFže +; + +168 + } +} + +170 +funùiÚ + + $£tUndoOuutFže +( +$undoOuutFže +){ + +171 +$this +-> +undoOuutFže + = +$undoOuutFže +; + +172 + } +} + +174 +funùiÚ + + $£tLa¡ChªgeToAµly +( +$Ï¡ChªgeToAµly +){ + +175 +$this +-> +Ï¡ChªgeToAµly + = +$Ï¡ChªgeToAµly +; + +176 + } +} + +178 +funùiÚ + + $£tD–S‘ +( +$d–S‘ +){ + +179 +$this +-> +d–S‘ + = +$d–S‘ +; + +180 + } +} + +186 +public + +funùiÚ + + $ü—‹FžeS‘ +() { + +187 +$this +-> +fže£t + = +Ãw + + `FžeS‘ +(); + +188 +$this +-> +fže£ts +[] = $this-> +fže£t +; + +189  +$this +-> +fže£t +; + +190 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/DbmsSyntax.php + +1 +dbms + = +$dbms +; + +42 +public + +funùiÚ + + $g‘DbmsSyÁax +() + +44  +$this +-> +dbms +){ + +46 +»quœe_Úû + 'phing/tasks/ext/dbdeploy/DbmsSyntaxSQLite.php'; + +47  +Ãw + + `DbmsSyÁaxSQL™e +(); + +49 +»quœe_Úû + 'phing/tasks/ext/dbdeploy/DbmsSyntaxMysql.php'; + +50  +Ãw + + `DbmsSyÁaxMysql +(); + +52 +»quœe_Úû + 'phing/tasks/ext/dbdeploy/DbmsSyntaxMsSql.php'; + +53  +Ãw + + `DbmsSyÁaxMsSql +(); + +55 +throw + +Ãw + + `Exû±iÚ +( +$this +-> +dbms + . ' is‚ot supported by dbdeployask.'); + +57 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/DbmsSyntaxMsSql.php + +1 +v®ue +; + +39 +public + +funùiÚ + + $addText +( +$txt +) + +41 +$this +-> +v®ue + = + `Œim +( +$txt +); + +42 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ioncube/IoncubeEncoderTask.php + +1 +comm’ts +[] = +$comm’t +; + +67 +funùiÚ + + $£tAÎowedS”v” +( +$v®ue +) + +69 +$this +-> +iÚO±iÚsXS +['®lowed-£rv”'] = +$v®ue +; + +70 + } +} + +75 +funùiÚ + + $g‘AÎowedS”v” +() + +77  +$this +-> +iÚO±iÚsXS +['allowed-server']; + +78 + } +} + +83 +funùiÚ + + $£tBš¬y +( +$v®ue +) + +85 +$this +-> +iÚSw™ches +['bš¬y'] = +$v®ue +; + +86 + } +} + +91 +funùiÚ + + $g‘Bš¬y +() + +93  +$this +-> +iÚSw™ches +['binary']; + +94 + } +} + +99 +funùiÚ + + $£tCÝy +( +$v®ue +) + +101 +$this +-> +iÚO±iÚsXS +['cÝy'] = +$v®ue +; + +102 + } +} + +107 +funùiÚ + + $g‘CÝy +() + +109  +$this +-> +iÚO±iÚsXS +['copy']; + +110 + } +} + +116 +funùiÚ + + $£tEncode +( +$v®ue +) + +118 +$this +-> +iÚO±iÚsXS +['’code'] = +$v®ue +; + +119 + } +} + +124 +funùiÚ + + $g‘Encode +() + +126  +$this +-> +’iÚO±iÚsXS +['encode']; + +127 + } +} + +132 +funùiÚ + + $£tEnüy± +( +$v®ue +) + +134 +$this +-> +iÚO±iÚsXS +['’üy±'] = +$v®ue +; + +135 + } +} + +140 +funùiÚ + + $g‘Enüy± +() + +142  +$this +-> +iÚO±iÚsXS +['encrypt']; + +143 + } +} + +148 +funùiÚ + + $£tExpœeš +( +$v®ue +) + +150 +$this +-> +iÚO±iÚs +['expœe-š'] = +$v®ue +; + +151 + } +} + +156 +funùiÚ + + $g‘Expœeš +() + +158  +$this +-> +iÚO±iÚs +['expire-in']; + +159 + } +} + +164 +funùiÚ + + $£tExpœeÚ +( +$v®ue +) + +166 +$this +-> +iÚO±iÚs +['expœe-Ú'] = +$v®ue +; + +167 + } +} + +172 +funùiÚ + + $g‘ExpœeÚ +() + +174  +$this +-> +iÚO±iÚs +['expire-on']; + +175 + } +} + +180 +funùiÚ + + $£tFromDœ +( +$v®ue +) + +182 +$this +-> +äomDœ + = +$v®ue +; + +183 + } +} + +188 +funùiÚ + + $g‘FromDœ +() + +190  +$this +-> +äomDœ +; + +191 + } +} + +197 +funùiÚ + + $£tIgnÜe +( +$v®ue +) + +199 +$this +-> +iÚO±iÚsXS +['ignÜe'] = +$v®ue +; + +200 + } +} + +205 +funùiÚ + + $g‘IgnÜe +() + +207  +$this +-> +iÚO±iÚsXS +['ignore']; + +208 + } +} + +213 +funùiÚ + + $£tIÚcubeP©h +( +$v®ue +) + +215 +$this +-> +iÚcubeP©h + = +$v®ue +; + +216 + } +} + +221 +funùiÚ + + $g‘IÚcubeP©h +() + +223  +$this +-> +iÚcubeP©h +; + +224 + } +} + +229 +funùiÚ + + $£tK“p +( +$v®ue +) + +231 +$this +-> +iÚO±iÚsXS +['k“p'] = +$v®ue +; + +232 + } +} + +237 +funùiÚ + + $g‘K“p +() + +239  +$this +-> +iÚO±iÚsXS +['keep']; + +240 + } +} + +245 +funùiÚ + + $£tLiûn£P©h +( +$v®ue +) + +247 +$this +-> +iÚO±iÚs +['w™h-liûn£'] = +$v®ue +; + +248 + } +} + +253 +funùiÚ + + $g‘Liûn£P©h +() + +255  +$this +-> +iÚO±iÚs +['with-license']; + +256 + } +} + +261 +funùiÚ + + $£tNoDocComm’ts +( +$v®ue +) + +263 +$this +-> +iÚSw™ches +['no-doc-comm’t'] = +$v®ue +; + +264 + } +} + +269 +funùiÚ + + $g‘NoDocComm’ts +() + +271  +$this +-> +iÚSw™ches +['no-doc-comment']; + +272 + } +} + +277 +funùiÚ + + $£tObfusÿ‹ +( +$v®ue +) + +279 +$this +-> +iÚO±iÚsXS +['obfusÿ‹'] = +$v®ue +; + +280 + } +} + +285 +funùiÚ + + $g‘Obfusÿ‹ +() + +287  +$this +-> +iÚO±iÚsXS +['obfuscate']; + +288 + } +} + +293 +funùiÚ + + $£tObfusÿtiÚKey +( +$v®ue +) + +295 +$this +-> +iÚO±iÚs +['obfusÿtiÚ-key'] = +$v®ue +; + +296 + } +} + +301 +funùiÚ + + $g‘ObfusÿtiÚKey +() + +303  +$this +-> +iÚO±iÚs +['obfuscation-key']; + +304 + } +} + +309 +funùiÚ + + $£tO±imize +( +$v®ue +) + +311 +$this +-> +iÚO±iÚs +['Ýtimize'] = +$v®ue +; + +312 + } +} + +317 +funùiÚ + + $g‘O±imize +() + +319  +$this +-> +iÚO±iÚs +['optimize']; + +320 + } +} + +325 +funùiÚ + + $£tPassPh¿£ +( +$v®ue +) + +327 +$this +-> +iÚO±iÚs +['·s¥h¿£'] = +$v®ue +; + +328 + } +} + +333 +funùiÚ + + $g‘PassPh¿£ +() + +335  +$this +-> +iÚO±iÚs +['passphrase']; + +336 + } +} + +341 +funùiÚ + + $£tPhpV”siÚ +( +$v®ue +) + +343 +$this +-> +phpV”siÚ + = +$v®ue +; + +344 + } +} + +349 +funùiÚ + + $g‘PhpV”siÚ +() + +351  +$this +-> +phpV”siÚ +; + +352 + } +} + +357 +funùiÚ + + $£tToDœ +( +$v®ue +) + +359 +$this +-> +toDœ + = +$v®ue +; + +360 + } +} + +365 +funùiÚ + + $g‘ToDœ +() + +367  +$this +-> +toDœ +; + +368 + } +} + +373 +funùiÚ + + $£tW™houtRuÁimeLßd”SuµÜt +( +$v®ue +) + +375 +$this +-> +iÚSw™ches +['w™hout-ruÁime-lßd”-suµÜt'] = +$v®ue +; + +376 + } +} + +381 +funùiÚ + + $g‘W™houtRuÁimeLßd”SuµÜt +() + +383  +$this +-> +iÚSw™ches +['without-runtime-loader-support']; + +384 + } +} + +389 +funùiÚ + + $£tT¬g‘O±iÚ +( +$rg‘O±iÚ +) + +391 +$this +-> +rg‘O±iÚ + = +$rg‘O±iÚ +; + +392 + } +} + +397 +funùiÚ + + $g‘T¬g‘O±iÚ +() + +399  +$this +-> +rg‘O±iÚ +; + +400 + } +} + +407 +funùiÚ + + $maš +() + +409 +$¬gum’ts + = +$this +-> + `cÚ¡ruùArgum’ts +(); + +411 +$’cod” + = +Ãw + + `PhšgFže +( +$this +-> +iÚcubeP©h +, $this-> +’cod”Name + . ($this-> +phpV”siÚ + == 5 ? '5' : '')); + +413 +$this +-> + `log +("Running ionCube Encoder..."); + +415 + `exec +( +$’cod” +-> + `__toSŒšg +(è. ' ' . +$¬gum’ts + . " 2>&1", +$ouut +, +$»tuº +); + +417 ià( +$»tuº + != 0) + +419 +throw + +Ãw + + `BuždExû±iÚ +("Could‚Ùƒxecu‹ iÚCubEncod”: " . + `im¶ode +(' ', +$ouut +)); + +421 + } +} + +426 +´iv©e + +funùiÚ + + $cÚ¡ruùArgum’ts +() + +428 +$¬gum’ts + = ''; + +430 + `fܗch + ( +$this +-> +iÚSw™ches + +as + +$Çme + => +$v®ue +) + +432 ià( +$v®ue +) + +434 +$¬gum’ts +.= "--$name "; + +438 + `fܗch + ( +$this +-> +iÚO±iÚs + +as + +$Çme + => +$v®ue +) + +440 +$¬gum’ts +.= "--$name '$value' "; + +443 + `fܗch + ( +$this +-> +iÚO±iÚsXS + +as + +$Çme + => +$v®ue +) + +445 + `fܗch + ( + `ex¶ode +(' ', +$v®ue +è +as + +$¬g +) + +447 +$¬gum’ts +.= "--$name '$arg' "; + +451 + `fܗch + ( +$this +-> +comm’ts + +as + +$comm’t +) + +453 +$¬gum’ts +.ð"--add-comm’ˆ'" . +$comm’t +-> + `g‘V®ue +() . "' "; + +456 ià(! + `em±y +( +$this +-> +rg‘O±iÚ +)) + +458  +$this +-> +rg‘O±iÚ +) + +465 +$¬gum’ts +.ð"--" . +$this +-> +rg‘O±iÚ + . "-target "; + +470 +throw + +Ãw + + `BuždExû±iÚ +("UnknowÀrg‘ o±iÚ '" . +$this +-> +rg‘O±iÚ + . "'"); + +475 ià( +$this +-> +äomDœ + != '') + +477 +$¬gum’ts + .ð +$this +-> +äomDœ + . ' '; + +480 ià( +$this +-> +toDœ + != '') + +482 +$¬gum’ts + .ð"-Ø" . +$this +-> +toDœ + . ' '; + +485  +$¬gum’ts +; + +486 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ioncube/IoncubeLicenseTask.php + +1 +iÚcubeP©h + = +$iÚcubeP©h +; + +53 +funùiÚ + + $g‘IÚcubeP©h +() + +55  +$this +-> +iÚcubeP©h +; + +56 + } +} + +61 +funùiÚ + + $£tLiûn£P©h +( +$liûn£P©h +) + +63 +$this +-> +liûn£P©h + = +$liûn£P©h +; + +64 + } +} + +69 +funùiÚ + + $g‘Liûn£P©h +() + +71  +$this +-> +liûn£P©h +; + +72 + } +} + +77 +funùiÚ + + $£tPassPh¿£ +( +$·ssPh¿£ +) + +79 +$this +-> +·ssPh¿£ + = +$·ssPh¿£ +; + +80 + } +} + +85 +funùiÚ + + $g‘PassPh¿£ +() + +87  +$this +-> +·ssPh¿£ +; + +88 + } +} + +93 +funùiÚ + + $addComm’t +( +IÚcubeComm’t + +$comm’t +) + +95 +$this +-> +comm’ts +[] = +$comm’t +; + +96 + } +} + +103 +funùiÚ + + $maš +() + +105 +$¬gum’ts + = +$this +-> + `cÚ¡ruùArgum’ts +(); + +107 +$mak–iûn£ + = +Ãw + + `PhšgFže +( +$this +-> +iÚcubeP©h +, 'make_license'); + +109 +$this +-> + `log +("Running ionCube make_license..."); + +111 + `exec +( +$mak–iûn£ +-> + `__toSŒšg +(è. " " . +$¬gum’ts + . " 2>&1", +$ouut +, +$»tuº +); + +113 ià( +$»tuº + != 0) + +115 +throw + +Ãw + + `BuždExû±iÚ +("Could‚Ùƒxecu‹ iÚCubmake_liûn£: " . + `im¶ode +(' ', +$ouut +)); + +117 + } +} + +122 +´iv©e + +funùiÚ + + $cÚ¡ruùArgum’ts +() + +124 +$¬gum’ts + = ""; + +126 ià(! + `em±y +( +$this +-> +·ssPh¿£ +)) + +128 +$¬gum’ts +.ð"--·s¥h¿£ '" . +$this +-> +·ssPh¿£ + . "' "; + +131 + `fܗch + ( +$this +-> +comm’ts + +as + +$comm’t +) + +133 +$¬gum’ts +.ð"--h—d”-lš'" . +$comm’t +-> + `g‘V®ue +() . "' "; + +136 ià(! + `em±y +( +$this +-> +liûn£P©h +)) + +138 +$¬gum’ts +.ð"--Ø'" . +$this +-> +liûn£P©h + . "' "; + +141  +$¬gum’ts +; + +142 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/PDOResultFormatter.php + +1 +out + = +$out +; + +54 +public + +funùiÚ + + $g‘Ouut +() { + +55  +$this +-> +out +; + +56 + } +} + +62 +ab¡¿ù + +public + +funùiÚ + +g‘P»ã¼edOutfže +(); + +67 +public + +funùiÚ + + $š™Ÿlize +() { + +69 + } +} + +76 +ab¡¿ù + +public + +funùiÚ + +´oûssRow +( +$row +); + +81 +public + +funùiÚ + + $þo£ +() { + +82 +$this +-> +out +-> + `þo£ +(); + +83 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/PDOSQLExecFormatterElement.php + +1 +·»ÁTask + = +$·»ÁTask +; + +122 +public + +funùiÚ + + $ü—‹P¬am +() { + +123 +$num + = + `¬¿y_push +( +$this +-> +·¿m‘”s +, +Ãw + + `P¬am‘” +()); + +124  +$this +-> +·¿m‘”s +[ +$num +-1]; + +125 + } +} + +131 +´iv©e + +funùiÚ + + $g‘OuutWr™” +() + +133 ià( +$this +-> +u£Fže +) { + +134 +$of + = +$this +-> + `g‘Outfže +(); + +135 ià(! +$of +) { + +136 +$of + = +Ãw + + `PhšgFže +( +$this +-> +fÜm©‹r +-> + `g‘P»ã¼edOutfže +()); + +138  +Ãw + + `FžeWr™” +( +$of +, +$this +-> +­³nd +); + +140  +$this +-> + `g‘DeçuÉOuut +(); + +142 + } +} + +147 +public + +funùiÚ + + $´•¬e +() { + +149 ià(! +$this +-> +fÜm©‹r +) { + +150 +throw + +Ãw + + `BuždExû±iÚ +("NØfÜm©‹¸¥ecif›d (u£y³ o¸þas¢am©Œibu‹)", +$this +-> + `g‘LoÿtiÚ +()); + +153 +$out + = +$this +-> + `g‘OuutWr™” +(); + +155 +´št + "S‘tšg ouuˆwr™”o: " . + `g‘_þass +( +$out +) . "\n"; + +156 +$this +-> +fÜm©‹r +-> + `£tOuut +( +$out +); + +158 ià( +$this +-> +fÜm©‹r + +š¡ªûof + +PϚPDOResuÉFÜm©‹r +) { + +160 +$this +-> +fÜm©‹r +-> + `£tShowh—d”s +($this-> +showh—d”s +); + +161 +$this +-> +fÜm©‹r +-> + `£tRowd–im +($this-> +rowd–im™” +); + +162 +$this +-> +fÜm©‹r +-> + `£tCÞd–im +($this-> +cÞd–im™” +); + +163 } + `–£if + ( +$this +-> +fÜm©‹r + +š¡ªûof + +XMLPDOResuÉFÜm©‹r +) { + +165 +$this +-> +fÜm©‹r +-> + `£tEncodšg +($this-> +’codšg +); + +166 +$this +-> +fÜm©‹r +-> + `£tFÜm©Ouut +($this-> +fÜm©ouut +); + +169 + `fܗch +( +$this +-> +fÜm©‹rP¬ams + +as + +$·¿m +) { + +170 +$·¿m + = +Ãw + + `P¬am‘” +(); + +171 +$m‘hod + = '£t' . +$·¿m +-> + `g‘Name +(); + +172 ià(! + `m‘hod_exi¡s +( +$this +-> +fÜm©‹r +, +$·¿m +-> + `g‘Name +())) { + +173 +throw + +Ãw + + `BuždExû±iÚ +("FÜm©‹¸" . + `g‘_þass +( +$this +-> +fÜm©‹r +è. " dÛ nÙ hav¨$m‘hod m‘hod.", $this-> + `g‘LoÿtiÚ +()); + +175 + `ÿÎ_u£r_func +( + `¬¿y +( +$this +-> +fÜm©‹r +, +$m‘hod +), +$·¿m +-> + `g‘V®ue +()); + +177 + } +} + +183 +funùiÚ + + $£tTy³ +( +$ty³ +) { + +184 +$this +-> +ty³ + = +$ty³ +; + +185 ià( +$this +-> +ty³ + == "xml") { + +186 +$this +-> +fÜm©‹r + = +Ãw + + `XMLPDOResuÉFÜm©‹r +(); + +187 } + `–£if + ( +$this +-> +ty³ + == "plain") { + +188 +$this +-> +fÜm©‹r + = +Ãw + + `PϚPDOResuÉFÜm©‹r +(); + +190 +throw + +Ãw + + `BuždExû±iÚ +("FÜm©‹¸'" . +$this +-> +ty³ + . "'‚ot implemented"); + +192 + } +} + +198 +funùiÚ + + $£tCÏssName +( +$þassName +) { + +199 +$þassNameNoDÙ + = +Phšg +:: + `impÜt +( +$þassName +); + +200 +$this +-> +fÜm©‹r + = +Ãw + + `$þassNameNoDÙ +(); + +201 + } +} + +207 +funùiÚ + + $£tU£Fže +( +$u£Fže +) { + +208 +$this +-> +u£Fže + = ( +boޗn +è +$u£Fže +; + +209 + } +} + +215 +funùiÚ + + $g‘U£Fže +() { + +216  +$this +-> +u£Fže +; + +217 + } +} + +223 +funùiÚ + + $£tOutfže +( +PhšgFže + +$outfže +) { + +224 +$this +-> +outfže + = +$outfže +; + +225 + } +} + +231 +funùiÚ + + $g‘Outfže +() { + +232  +$this +-> +outfže +; + +237 + } +} + +244 +public + +funùiÚ + + $£tAµ’d +( +$­³nd +) { + +245 +$this +-> +­³nd + = ( +boޗn +è +$­³nd +; + +246 + } +} + +252 +public + +funùiÚ + + $g‘Aµ’d +() { + +253  +$this +-> +­³nd +; + +254 + } +} + +261 +public + +funùiÚ + + $£tShowh—d”s +( +$showh—d”s +) { + +262 +$this +-> +showh—d”s + = ( +boޗn +è +$showh—d”s +; + +263 + } +} + +269 +public + +funùiÚ + + $£tCÞd–im +( +$v +) { + +270 +$this +-> +cÞd–im™” + = +$v +; + +271 + } +} + +277 +public + +funùiÚ + + $£tRowd–im +( +$v +) { + +278 +$this +-> +rowd–im™” + = +$v +; + +279 + } +} + +285 +public + +funùiÚ + + $£tEncodšg +( +$v +) { + +286 +$this +-> +’codšg + = +$v +; + +287 + } +} + +292 +public + +funùiÚ + + $£tFÜm©Ouut +( +$v +) { + +293 +$this +-> +fÜm©Ouut + = ( +boޗn +è +$v +; + +294 + } +} + +300 +´iv©e + +funùiÚ + + $g‘DeçuÉOuut +() + +302  +Ãw + + `LogWr™” +( +$this +-> +·»ÁTask +); + +303 + } +} + +309 +funùiÚ + + $g‘FÜm©‹r +() { + +310  +$this +-> +fÜm©‹r +; + +311 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/PDOSQLExecTask.php + +1 +¤cFže + = +$¤cFže +; + +153 +public + +funùiÚ + + $addText +( +$sql +) { + +154 +$this +-> +sqlCommªd + .ð +$sql +; + +155 + } +} + +160 +public + +funùiÚ + + $addFže£t +( +FžeS‘ + +$£t +) { + +161 +$this +-> +fže£ts +[] = +$£t +; + +162 + } +} + +168 +public + +funùiÚ + + $ü—‹FÜm©‹r +() + +170 +$ã + = +Ãw + + `PDOSQLExecFÜm©‹rEËm’t +( +$this +); + +171 +$this +-> +fÜm©‹rs +[] = +$ã +; + +172  +$ã +; + +173 + } +} + +178 +public + +funùiÚ + + $ü—‹T¿n§ùiÚ +() { + +179 +$t + = +Ãw + + `PDOSQLExecT¿n§ùiÚ +( +$this +); + +180 +$this +-> +Œª§ùiÚs +[] = +$t +; + +181  +$t +; + +182 + } +} + +189 +public + +funùiÚ + + $£tEncodšg +( +$’codšg +) { + +190 +$this +-> +’codšg + = +$’codšg +; + +191 + } +} + +201 +public + +funùiÚ + + $£tD–im™” +( +$d–im™” +) + +203 +$this +-> +d–im™” + = +$d–im™” +; + +204 + } +} + +214 +public + +funùiÚ + + $£tD–im™”Ty³ +( +$d–im™”Ty³ +) + +216 +$this +-> +d–im™”Ty³ + = +$d–im™”Ty³ +; + +217 + } +} + +223 +public + +funùiÚ + + $£tOÃ¼Ü +( +$aùiÚ +) { + +224 +$this +-> +ÚE¼Ü + = +$aùiÚ +; + +225 + } +} + +231 +public + +funùiÚ + + $£tF‘chmode +( +$mode +) { + +232 ià( + `is_num”ic +( +$mode +)) { + +233 +$this +-> +ãtchMode + = (è +$mode +; + +235 ià( + `defšed +( +$mode +)) { + +236 +$this +-> +ãtchMode + = + `cÚ¡ªt +( +$mode +); + +238 +throw + +Ãw + + `BuždExû±iÚ +("Inv®id PDO f‘ch mod¥ecif›d: " . +$mode +, +$this +-> + `g‘LoÿtiÚ +()); + +241 + } +} + +247 +´iv©e + +funùiÚ + + $g‘DeçuÉOuut +() + +249  +Ãw + + `LogWr™” +( +$this +); + +250 + } +} + +256 +public + +funùiÚ + + $maš +() { + +260 ià( +$this +-> +ãtchMode + ==ð +nuÎ +) { + +261 +$this +-> +ãtchMode + = +PDO +:: +FETCH_BOTH +; + +266 + `fܗch +( +$this +-> +fÜm©‹rs + +as + +$ã +) { + +267 +$ã +-> + `´•¬e +(); + +270 +$§vedT¿n§ùiÚ + = + `¬¿y +(); + +271  +$i +=0, +$size += + `couÁ +( +$this +-> +Œª§ùiÚs +); $i < $size; $i++) { + +272 +$§vedT¿n§ùiÚ +[] = +þÚe + +$this +-> +Œª§ùiÚs +[ +$i +]; + +275 +$§vedSqlCommªd + = +$this +-> +sqlCommªd +; + +277 +$this +-> +sqlCommªd + = + `Œim +($this->sqlCommand); + +279 +Œy + { + +280 ià( +$this +-> +¤cFže + ==ð +nuÎ + && $this-> +sqlCommªd + === "" + +281 && + `em±y +( +$this +-> +fže£ts +)) { + +282 ià( + `couÁ +( +$this +-> +Œª§ùiÚs +) === 0) { + +283 +throw + +Ãw + + `BuždExû±iÚ +("Source file or fileset, " + +285 . "mu¡ b£t!", +$this +-> +loÿtiÚ +); + +289 ià( +$this +-> +¤cFže + !=ð +nuÎ + && !$this->¤cFže-> + `exi¡s +()) { + +290 +throw + +Ãw + + `BuždExû±iÚ +("Sourû fždÛ nكxi¡!", +$this +-> +loÿtiÚ +); + +294 + `fܗch +( +$this +-> +fže£ts + +as + +$fs +) { + +295 +$ds + = +$fs +-> + `g‘DœeùÜySÿ” +( +$this +-> +´ojeù +); + +296 +$¤cDœ + = +$fs +-> + `g‘Dœ +( +$this +-> +´ojeù +); + +297 +$¤cFžes + = +$ds +-> + `g‘InþudedFžes +(); + +299 + `fܗch +( +$¤cFžes + +as + +$¤cFže +) { + +300 +$t + = +$this +-> + `ü—‹T¿n§ùiÚ +(); + +301 +$t +-> + `£tSrc +( +Ãw + + `PhšgFže +( +$¤cDœ +, +$¤cFže +)); + +306 +$t + = +$this +-> + `ü—‹T¿n§ùiÚ +(); + +307 ià( +$this +-> +¤cFže +è +$t +-> + `£tSrc +($this->srcFile); + +308 +$t +-> + `addText +( +$this +-> +sqlCommªd +); + +309 +$this +-> +cÚn + = $this-> + `g‘CÚÃùiÚ +(); + +311 +Œy + { + +313 +$this +-> +¡©em’t + = +nuÎ +; + +316 +$this +-> + `š™FÜm©‹rs +(); + +318 +Œy + { + +321  +$i +=0, +$size += + `couÁ +( +$this +-> +Œª§ùiÚs +); $i < $size; $i++) { + +322 ià(! +$this +-> + `isAutocomm™ +()) { + +323 +$this +-> + `log +("Begšnšg¿n§ùiÚ", +Projeù +:: +MSG_VERBOSE +); + +324 +$this +-> +cÚn +-> + `begšT¿n§ùiÚ +(); + +326 +$this +-> +Œª§ùiÚs +[ +$i +]-> + `runT¿n§ùiÚ +(); + +327 ià(! +$this +-> + `isAutocomm™ +()) { + +328 +$this +-> + `log +("Comm™šg¿n§ùiÚ", +Projeù +:: +MSG_VERBOSE +); + +329 +$this +-> +cÚn +-> + `comm™ +(); + +332 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +333 +throw + +$e +; + +335 } + `ÿtch + ( +IOExû±iÚ + +$e +) { + +336 ià(! +$this +-> + `isAutocomm™ +(è&& $this-> +cÚn + !=ð +nuÎ + && $this-> +ÚE¼Ü + == "abort") { + +337 +Œy + { + +338 +$this +-> +cÚn +-> + `rÞlback +(); + +339 } + `ÿtch + ( +PDOExû±iÚ + +$ex +) {} + +341 +throw + +Ãw + + `BuždExû±iÚ +( +$e +-> + `g‘Mes§ge +(), +$this +-> +loÿtiÚ +); + +342 } + `ÿtch + ( +PDOExû±iÚ + +$e +){ + +343 ià(! +$this +-> + `isAutocomm™ +(è&& $this-> +cÚn + !=ð +nuÎ + && $this-> +ÚE¼Ü + == "abort") { + +344 +Œy + { + +345 +$this +-> +cÚn +-> + `rÞlback +(); + +346 } + `ÿtch + ( +PDOExû±iÚ + +$ex +) {} + +348 +throw + +Ãw + + `BuždExû±iÚ +( +$e +-> + `g‘Mes§ge +(), +$this +-> +loÿtiÚ +); + +352 +$this +-> + `þo£FÜm©‹rs +(); + +354 +$this +-> + `log +($this-> +goodSql + . " oà" . $this-> +tÙ®Sql + . + +357 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +358 +$this +-> +Œª§ùiÚs + = +$§vedT¿n§ùiÚ +; + +359 +$this +-> +sqlCommªd + = +$§vedSqlCommªd +; + +360 +throw + +$e +; + +363 +$this +-> +Œª§ùiÚs + = +$§vedT¿n§ùiÚ +; + +364 +$this +-> +sqlCommªd + = +$§vedSqlCommªd +; + +366 + } +} + +373 +public + +funùiÚ + + $runS‹m’ts +( +R—d” + +$»ad” +) { + +374 +$sql + = ""; + +375 +$lše + = ""; + +376 +$sqlBacklog + = ""; + +377 +$hasQu”y + = +çl£ +; + +379 +$š + = +Ãw + + `Bufã»dR—d” +( +$»ad” +); + +381 +Œy + { + +382 ( +$lše + = +$š +-> + `»adLše +()è!=ð +nuÎ +) { + +383 +$lše + = + `Œim +($line); + +384 +$lše + = +ProjeùCÚfigu¿tÜ +:: + `»¶aûPrݔt›s +( +$this +-> +´ojeù +, $line, + +385 +$this +-> +´ojeù +-> + `g‘Prݔt›s +()); + +387 ià( +SŒšgH–³r +:: + `¡¬tsW™h +("//", +$lše +) || + +388 +SŒšgH–³r +:: + `¡¬tsW™h +("--", +$lše +) || + +389 +SŒšgH–³r +:: + `¡¬tsW™h +("#", +$lše +)) { + +393 ià( + `¡¾’ +( +$lše +) > 4 + +394 && + `¡¹ouµ” +( + `sub¡r +( +$lše +,0, 4)) == "REM ") { + +398 ià( +$sqlBacklog + !== "") { + +399 +$sql + = +$sqlBacklog +; + +400 +$sqlBacklog + = ""; + +403 +$sql + .ð" " . +$lše + . "\n"; + +408 ià( + `¡½os +( +$lše +, "--"è!=ð +çl£ +) { + +409 +$sql + .= "\n"; + +413 ià( +$this +-> +d–im™”Ty³ + =ð +£lf +:: +DELIM_NORMAL +) { + +415 +$»g + = "#((?:\"(?:\\\\.|[^\"])*\"?)+|'(?:\\\\.|[^'])*'?|" . + `´eg_quÙe +( +$this +-> +d–im™” +) . ")#"; + +417 +$sqlP¬ts + = + `´eg_¥l™ +( +$»g +, +$sql +, 0, +PREG_SPLIT_DELIM_CAPTURE +); + +418 +$sqlBacklog + = ""; + +419 + `fܗch + ( +$sqlP¬ts + +as + +$sqlP¬t +) { + +421 +$sqlBacklog + .ð +$sqlP¬t +; + +424 ià( +$sqlP¬t + ==ð +$this +-> +d–im™” +) { + +425 +$sql + = +$sqlBacklog +; + +426 +$sqlBacklog + = ""; + +427 +$hasQu”y + = +Œue +; + +432 ià( +$hasQu”y + || ( +$this +-> +d–im™”Ty³ + =ð +£lf +:: +DELIM_ROW + && +$lše + =ð$this-> +d–im™” +)) { + +434 +$sql + = +SŒšgH–³r +:: + `sub¡ršg +($sql, 0, + `¡¾’ +($sqlè- 1 - sŒËn( +$this +-> +d–im™” +)); + +435 +$this +-> + `log +("SQL: " . +$sql +, +Projeù +:: +MSG_VERBOSE +); + +436 +$this +-> + `execSQL +( +$sql +); + +437 +$sql + = ""; + +438 +$hasQu”y + = +çl£ +; + +443 ià( +$sql + !== "") { + +444 +$this +-> + `execSQL +( +$sql +); + +446 } + `ÿtch + ( +PDOExû±iÚ + +$e +) { + +447 +throw + +$e +; + +449 + } +} + +459 +´Ùeùed + +funùiÚ + + $isS–eùSql +( +$sql +) + +461 +$sql + = + `Œim +($sql); + +462  ( + `¡ros +( +$sql +, 'select') === 0 && stripos($sql, 'select into ') !== 0); + +463 + } +} + +469 +´Ùeùed + +funùiÚ + + $execSQL +( +$sql +) { + +472 ià( + `Œim +( +$sql +) == "") { + +476 +Œy + { + +477 +$this +-> +tÙ®Sql +++; + +479 +$this +-> +¡©em’t + = $this-> +cÚn +-> + `´•¬e +( +$sql +); + +480 +$this +-> +¡©em’t +-> + `execu‹ +(); + +481 +$this +-> + `log +($this-> +¡©em’t +-> + `rowCouÁ +(è. "„ow afãùed", +Projeù +:: +MSG_VERBOSE +); + +484 ià( +$this +-> +¡©em’t +-> + `cÞumnCouÁ +() > 0) + +486 +$this +-> + `´oûssResuÉs +(); + +489 +$this +-> +¡©em’t +-> + `þo£CursÜ +(); + +490 +$this +-> +¡©em’t + = +nuÎ +; + +492 +$this +-> +goodSql +++; + +494 } + `ÿtch + ( +PDOExû±iÚ + +$e +) { + +495 +$this +-> + `log +("FažedØexecu‹: " . +$sql +, +Projeù +:: +MSG_ERR +); + +496 ià( +$this +-> +ÚE¼Ü + != "continue") { + +497 +throw + +Ãw + + `BuždExû±iÚ +("FažedØexecu‹ SQL", +$e +); + +499 +$this +-> + `log +( +$e +-> + `g‘Mes§ge +(), +Projeù +:: +MSG_ERR +); + +501 + } +} + +507 +´Ùeùed + +funùiÚ + + $g‘CÚfigu»dFÜm©‹rs +() + +509 +$fÜm©‹rs + = + `¬¿y +(); + +510 + `fܗch + ( +$this +-> +fÜm©‹rs + +as + +$ã +) { + +511 +$fÜm©‹rs +[] = +$ã +-> + `g‘FÜm©‹r +(); + +513  +$fÜm©‹rs +; + +514 + } +} + +519 +´Ùeùed + +funùiÚ + + $š™FÜm©‹rs +() { + +520 +$fÜm©‹rs + = +$this +-> + `g‘CÚfigu»dFÜm©‹rs +(); + +521 + `fܗch + ( +$fÜm©‹rs + +as + +$fÜm©‹r +) { + +522 +$fÜm©‹r +-> + `š™Ÿlize +(); + +525 + } +} + +530 +´Ùeùed + +funùiÚ + + $þo£FÜm©‹rs +() { + +531 +$fÜm©‹rs + = +$this +-> + `g‘CÚfigu»dFÜm©‹rs +(); + +532 + `fܗch + ( +$fÜm©‹rs + +as + +$fÜm©‹r +) { + +533 +$fÜm©‹r +-> + `þo£ +(); + +535 + } +} + +541 +´Ùeùed + +funùiÚ + + $´oûssResuÉs +() { + +543 +Œy + { + +545 +$this +-> + `log +("Proûssšg‚ew„esuÉ s‘.", +Projeù +:: +MSG_VERBOSE +); + +547 +$fÜm©‹rs + = +$this +-> + `g‘CÚfigu»dFÜm©‹rs +(); + +549  +$row + = +$this +-> +¡©em’t +-> + `ãtch +($this-> +ãtchMode +)) { + +550 + `fܗch + ( +$fÜm©‹rs + +as + +$fÜm©‹r +) { + +551 +$fÜm©‹r +-> + `´oûssRow +( +$row +); + +555 } + `ÿtch + ( +Exû±iÚ + +$x +) { + +556 +$this +-> + `log +("E¼Ü…roûssšg„euÉs: " . +$x +-> + `g‘Mes§ge +(), +Projeù +:: +MSG_ERR +); + +557 + `fܗch + ( +$fÜm©‹rs + +as + +$fÜm©‹r +) { + +558 +$fÜm©‹r +-> + `þo£ +(); + +560 +throw + +$x +; + +563 + } +} + +572 þas  + cPDOSQLExecT¿n§ùiÚ + { + +574 +´iv©e + + m$tSrcFže + = +nuÎ +; + +575 +´iv©e + + m$tSqlCommªd + = ""; + +576 +´iv©e + + m$·»Á +; + +578 +funùiÚ + + $__cÚ¡ruù +( +$·»Á +) + +581 +$this +-> +·»Á + = +$·»Á +; + +584 +public + +funùiÚ + + $£tSrc +( +PhšgFže + +$¤c +) + +586 +$this +-> +tSrcFže + = +$¤c +; + +587 + } +} + +589 +public + +funùiÚ + + $addText +( +$sql +) + +591 +$this +-> +tSqlCommªd + .ð +$sql +; + +592 + } +} + +597 +public + +funùiÚ + + $runT¿n§ùiÚ +() + +599 ià(! + `em±y +( +$this +-> +tSqlCommªd +)) { + +600 +$this +-> +·»Á +-> + `log +("Executšg commªds", +Projeù +:: +MSG_INFO +); + +601 +$this +-> +·»Á +-> + `runS‹m’ts +( +Ãw + + `SŒšgR—d” +($this-> +tSqlCommªd +)); + +604 ià( +$this +-> +tSrcFže + !=ð +nuÎ +) { + +605 +$this +-> +·»Á +-> + `log +("Executšg fže: " . $this-> +tSrcFže +-> + `g‘AbsÞu‹P©h +(), + +606 +Projeù +:: +MSG_INFO +); + +607 +$»ad” + = +Ãw + + `FžeR—d” +( +$this +-> +tSrcFže +); + +608 +$this +-> +·»Á +-> + `runS‹m’ts +( +$»ad” +); + +609 +$»ad” +-> + `þo£ +(); + +611 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/PDOTask.php + +1 +ÿchšg + = +$’abË +; + +86 + } +} + +92 +public + +funùiÚ + + $£tU¾ +( +$u¾ +) { + +93 +$this +-> +u¾ + = +$u¾ +; + +94 + } +} + +100 +public + +funùiÚ + + $£tPasswÜd +( +$·sswÜd +) { + +101 +$this +-> +·sswÜd + = +$·sswÜd +; + +102 + } +} + +109 +public + +funùiÚ + + $£tAutocomm™ +( +$autocomm™ +) { + +110 +$this +-> +autocomm™ + = +$autocomm™ +; + +111 + } +} + +118 +public + +funùiÚ + + $£tV”siÚ +( +$v”siÚ +) { + +119 +$this +-> +v”siÚ + = +$v”siÚ +; + +120 + } +} + +122 +´Ùeùed + +funùiÚ + + $g‘Lßd”M­ +() { + +123  +£lf +:: +$lßd”M­ +; + +124 + } +} + +133 +´Ùeùed + +funùiÚ + + $g‘CÚÃùiÚ +() { + +135 ià( +$this +-> +u¾ + ==ð +nuÎ +) { + +136 +throw + +Ãw + + `BuždExû±iÚ +("U¾‡‰ribu‹ mu¡ b£t!", +$this +-> +loÿtiÚ +); + +139 +Œy + { + +141 +$this +-> + `log +("CÚÃùšgØ" . $this-> + `g‘U¾ +(), +Projeù +:: +MSG_VERBOSE +); + +143 +$u£r + = +nuÎ +; + +144 +$·ss + = +nuÎ +; + +146 ià( +$this +-> +u£rId +) { + +147 +$u£r + = +$this +-> + `g‘U£rId +(); + +150 ià( +$this +-> +·sswÜd +) { + +151 +$·ss + = +$this +-> + `g‘PasswÜd +(); + +154 +$cÚn + = +Ãw + + `PDO +( +$this +-> + `g‘U¾ +(), +$u£r +, +$·ss +); + +155 +$cÚn +-> + `£tA‰ribu‹ +( +PDO +:: +ATTR_ERRMODE +, PDO:: +ERRMODE_EXCEPTION +); + +157 ià( +$this +-> +autocomm™ +) { + +158 +Œy + { + +159 +$cÚn +-> + `£tA‰ribu‹ +( +PDO +:: +ATTR_AUTOCOMMIT +, +$this +-> +autocomm™ +); + +160 } + `ÿtch + ( +PDOExû±iÚ + +$³ +) { + +161 +$this +-> + `log +("UÇbˁؒabˇuto-comm™ f܁hi d©aba£: " . +$³ +-> + `g‘Mes§ge +(), +Projeù +:: +MSG_WARN +); + +165  +$cÚn +; + +167 } + `ÿtch + ( +SQLExû±iÚ + +$e +) { + +168 +throw + +Ãw + + `BuždExû±iÚ +( +$e +-> + `g‘Mes§ge +(), +$this +-> +loÿtiÚ +); + +171 + } +} + +173 +public + +funùiÚ + + $isCachšg +( +$v®ue +) { + +174 +$this +-> +ÿchšg + = +$v®ue +; + +175 + } +} + +181 +public + +funùiÚ + + $isAutocomm™ +() { + +182  +$this +-> +autocomm™ +; + +183 + } +} + +189 +public + +funùiÚ + + $g‘U¾ +() { + +190  +$this +-> +u¾ +; + +191 + } +} + +197 +public + +funùiÚ + + $g‘U£rId +() { + +198  +$this +-> +u£rId +; + +199 + } +} + +205 +public + +funùiÚ + + $£tU£rid +( +$u£rId +) { + +206 +$this +-> +u£rId + = +$u£rId +; + +207 + } +} + +213 +public + +funùiÚ + + $g‘PasswÜd +() { + +214  +$this +-> +·sswÜd +; + +215 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/PlainPDOResultFormatter.php + +1 +showh—d”s + = +SŒšgH–³r +:: + `boޗnV®ue +( +$v +); + +72 +public + +funùiÚ + + $£tCÞd–im +( +$v +) { + +73 +$this +-> +cÞd–im™” + = +$v +; + +74 + } +} + +80 +public + +funùiÚ + + $£tRowd–im +( +$v +) { + +81 +$this +-> +rowd–im™” + = +$v +; + +82 + } +} + +89 +public + +funùiÚ + + $´oûssRow +( +$row +) { + +91 ià(! +$this +-> +cÞ¥rš‹d + && $this-> +showh—d”s +) { + +92 +$fœ¡ + = +Œue +; + +93 + `fܗch +( +$row + +as + +$f›ldName + => +$ignÜe +) { + +94 ià( +$fœ¡ +è$fœ¡ = +çl£ +; +$lše + .= ","; + +95 +$lše + .ð +$f›ldName +; + +98 +$this +-> +out +-> + `wr™e +( +$lše +); + +99 +$this +-> +out +-> + `wr™e +( +PHP_EOL +); + +101 +$lše + = ""; + +102 +$cÞ¥rš‹d + = +Œue +; + +105 +$fœ¡ + = +Œue +; + +106 + `fܗch +( +$row + +as + +$cÞumnV®ue +) { + +108 ià( +$cÞumnV®ue + !ð +nuÎ +) { + +109 +$cÞumnV®ue + = + `Œim +($columnValue); + +112 ià( +$fœ¡ +) { + +113 +$fœ¡ + = +çl£ +; + +115 +$lše + .ð +$this +-> +cÞd–im™” +; + +117 +$lše + .ð +$cÞumnV®ue +; + +120 +$this +-> +out +-> + `wr™e +( +$lše +); + +121 +$this +-> +out +-> + `wr™e +($this-> +rowd–im™” +); + +123 + } +} + +125 +public + +funùiÚ + + $g‘P»ã¼edOutfže +() + +127  +Ãw + + `PhšgFže +('results.txt'); + +128 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/XMLPDOResultFormatter.php + +1 +’codšg + = +$v +; + +84 +public + +funùiÚ + + $£tFÜm©Ouut +( +$v +) { + +85 +$this +-> +fÜm©Ouut + = ( +boޗn +è +$v +; + +86 + } +} + +88 +public + +funùiÚ + + $š™Ÿlize +() { + +89 +$this +-> +doc + = +Ãw + + `DOMDocum’t +("1.0", $this-> +’codšg +); + +90 +$this +-> +roÙNode + = $this-> +doc +-> + `ü—‹EËm’t +('results'); + +91 +$this +-> +doc +-> + `­³ndChžd +($this-> +roÙNode +); + +92 +$this +-> +doc +-> +fÜm©Ouut + = $this->formatOutput; + +93 + } +} + +100 +public + +funùiÚ + + $´oûssRow +( +$row +) { + +102 +$rowNode + = +$this +-> +doc +-> + `ü—‹EËm’t +('row'); + +103 +$this +-> +roÙNode +-> + `­³ndChžd +( +$rowNode +); + +105 + `fܗch +( +$row + +as + +$cÞumnName + => +$cÞumnV®ue +) { + +107 +$cÞNode + = +$this +-> +doc +-> + `ü—‹EËm’t +('column'); + +108 +$cÞNode +-> + `£tA‰ribu‹ +('Çme', +$cÞumnName +); + +110 ià( +$cÞumnV®ue + !ð +nuÎ +) { + +111 +$cÞumnV®ue + = + `Œim +($columnValue); + +112 +$cÞNode +-> +nodeV®ue + = +$cÞumnV®ue +; + +114 +$rowNode +-> + `­³ndChžd +( +$cÞNode +); + +117 + } +} + +127 +public + +funùiÚ + + $g‘P»ã¼edOutfže +() + +129  +Ãw + + `PhšgFže +('results.xml'); + +130 + } +} + +135 +public + +funùiÚ + + $þo£ +() { + +136 +$this +-> +out +-> + `wr™e +($this-> +doc +-> + `§veXML +()); + +137 +$this +-> +roÙNode + = +nuÎ +; + +138 +$this +-> +doc + = +nuÎ +; + +139 +·»Á +:: + `þo£ +(); + +140 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pearpackage/Fileset.php + +1 +·»Á + = +$·»Á +; + +66 +$this +-> +´ojeù + = +$ÝtiÚs +['phing_project']; + +67 +$this +-> +fže£ts + = +$ÝtiÚs +['phing_filesets']; + +78 +funùiÚ + + $g‘FžeLi¡ +() { + +80 +$®lfžes + = + `¬¿y +(); + +82 + `fܗch +( +$this +-> +fže£ts + +as + +$fs +) { + +83 +$ds + = +$fs +-> + `g‘DœeùÜySÿ” +( +$this +-> +´ojeù +); + +85 +$fžes + = +$ds +-> + `g‘InþudedFžes +(); + +89 ià( + `is£t +( +$®lfžes +[ +$ds +-> + `g‘Ba£dœ +()])) + +91 +$®lfžes +[ +$ds +-> + `g‘Ba£dœ +()] = + `¬¿y_m”ge +($®lfžes[$ds->g‘Ba£dœ()], +$fžes +); + +95 +$®lfžes +[ +$ds +-> + `g‘Ba£dœ +()] = +$fžes +; + +99 +$¡ruc + = + `¬¿y +(); + +101 + `fܗch +( +$®lfžes + +as + +$ba£dœ + => +$fžes +) { + +103 + `fܗch +( +$fžes + +as + +$fže +) { + +106 +$·th + = + `¡¹r +( + `dœÇme +( +$fže +), +DIRECTORY_SEPARATOR +, '/'); + +108 ià(! +$·th + || $path == '.') { + +109 +$·th + = '/'; + +112 +$·¹s + = + `ex¶ode +('.', + `ba£Çme +( +$fže +)); + +113 +$ext + = + `¬¿y_pÝ +( +$·¹s +); + +114 ià( + `¡¾’ +( +$ext +è=𡾒( +$fže +)) { + +115 +$ext + = ''; + +118 +$f + = +Ãw + + `PhšgFže +( +$ba£dœ +, +$fže +); + +120 +$¡ruc +[ +$·th +][] = + `¬¿y +('fže' => + `ba£Çme +( +$fže +), + +121 'ext' => +$ext +, + +122 '·th' => (( +$·th + =ð'/'è? + `ba£Çme +( +$fže +) : $path . '/' . basename($file)), + +123 'fuηth' => +$f +-> + `g‘AbsÞu‹P©h +()); + +127 + `uksÜt +( +$¡ruc +,'strnatcasecmp'); + +128 + `fܗch +( +$¡ruc + +as + +$key + => +$šd +) { + +129 + `usÜt +( +$šd +, + `¬¿y +( +$this +, 'sortfiles')); + +130 +$¡ruc +[ +$key +] = +$šd +; + +133 +$‹mp¡ruc + = +$¡ruc +; + +134 +$¡ruc + = + `¬¿y +('/' => +$‹mp¡ruc +['/']); + +135 +$bv + = 0; + +136 + `fܗch +( +$‹mp¡ruc + +as + +$key + => +$šd +) { + +137 +$§ve + = +$key +; + +138 ià( +$key + != '/') { + +139 +$¡ruc +['/'] = +$this +-> + `£tupDœs +($¡ruc['/'], + `ex¶ode +('/', +$key +), +$‹mp¡ruc +[$key]); + +142 + `uksÜt +( +$¡ruc +['/'], + `¬¿y +( +$this +, 'mystrucsort')); + +144  +$¡ruc +; + +145 + } +} + +159 +´iv©e + +funùiÚ + + $£tupDœs +( +$¡ruc +, +$dœ +, +$cڋÁs +) { + +161 ià(! + `couÁ +( +$dœ +)) { + +162 + `fܗch +( +$cڋÁs + +as + +$dœ + => +$fžes +) { + +163 ià( + `is_¡ršg +( +$dœ +)) { + +164 ià( + `¡½os +( +$dœ +, '/')) { + +165 +$‹¡ + = +Œue +; + +166 +$a + = +$cڋÁs +[ +$dœ +]; + +167 + `un£t +( +$cڋÁs +[ +$dœ +]); + +168 +$b + = + `ex¶ode +('/', +$dœ +); + +169 +$c + = + `¬¿y_shiá +( +$b +); + +170 ià( + `is£t +( +$cڋÁs +[ +$c +])) { + +171 +$cڋÁs +[ +$c +] = +$this +-> + `£tDœ +($cڋÁs[$c], $this-> + `£tupDœs +( + `¬¿y +(), +$b +, +$a +)); + +173 +$cڋÁs +[ +$c +] = +$this +-> + `£tupDœs +( + `¬¿y +(), +$b +, +$a +); + +178  +$cڋÁs +; + +180 +$me + = + `¬¿y_shiá +( +$dœ +); + +181 ià(! + `is£t +( +$¡ruc +[ +$me +])) { + +182 +$¡ruc +[ +$me +] = + `¬¿y +(); + +184 +$¡ruc +[ +$me +] = +$this +-> + `£tupDœs +($¡ruc[$me], +$dœ +, +$cڋÁs +); + +185  +$¡ruc +; + +186 + } +} + +195 +funùiÚ + + $£tDœ +( +$dœ +, +$cڋÁs +) + +197  + `li¡ +( +$Úe +, +$two +èð + `—ch +( +$cڋÁs +)) { + +198 ià( + `is£t +( +$dœ +[ +$Úe +])) { + +199 +$dœ +[ +$Úe +] = +$this +-> + `£tDœ +($dœ[$Úe], +$cڋÁs +[$one]); + +201 +$dœ +[ +$Úe +] = +$two +; + +204  +$dœ +; + +205 + } +} + +213 +funùiÚ + + $sÜtfžes +( +$a +, +$b +) + +215  + `¡º©ÿ£cmp +( +$a +['fže'], +$b +['file']); + +216 + } +} + +218 +funùiÚ + + $my¡rucsÜt +( +$a +, +$b +) + +220 ià( + `is_num”ic +( +$a +è&& + `is_¡ršg +( +$b +))  1; + +221 ià( + `is_num”ic +( +$b +è&& + `is_¡ršg +( +$a +))  -1; + +222 ià( + `is_num”ic +( +$a +è&& is_num”ic( +$b +)) + +224 ià( +$a + > +$b +)  1; + +225 ià( +$a + < +$b +)  -1; + +226 ià( +$a + =ð +$b +)  0; + +228  + `¡º©ÿ£cmp +( +$a +, +$b +); + +229 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpdoc/PhingPhpDocumentorSetup.php + +1 +£tup + = +Ãw + + `Io +(); + +45 +$this +-> +»nd” + = +Ãw + + `phpDocum’tÜ_IÁ”medŸ‹P¬£r +("Default Title"); + +47 +$GLOBALS +['_phpDocum’tÜ_š¡®l_dœ'] = +$cÚfigdœ +; + +48 +$this +-> + `·r£Ini +(); + +52 +$_phpDocum’tÜ_phpfže_exts + = +$GLOBALS +['_phpDocumentor_phpfile_exts']; + +53 +$_phpDocum’tÜ_cv¥hpfže_exts + = +$GLOBALS +['_phpDocumentor_cvsphpfile_exts']; + +55 ià( +tok’iz”_ext +) { + +56 +$this +-> +·r£ + = +Ãw + + `phpDocum’tÜTP¬£r +(); + +58 +$this +-> +·r£ + = +Ãw + + `P¬£r +(); + +61 +$this +-> + `£tMemÜyLim™ +(); + +73 +public + +funùiÚ + + $£tG’”©eSourûcode +( +$b +) { + +74 +glob® + +$_phpDocum’tÜ_£‰šg +; + +75 +$_phpDocum’tÜ_£‰šg +['sourûcode'] = ( +boޗn +è +$b +; + +76 + } +} + +87 +public + +funùiÚ + + $£tRicFžes +( +$fžes +) { + +88 +glob® + +$_phpDocum’tÜ_RIC_fžes +; + +89 +$_phpDocum’tÜ_RIC_fžes + = +$fžes +; + +90 + } +} + +101 +public + +funùiÚ + + $£tIgnÜeTags +( +$gs +) { + +102 +glob® + +$_phpDocum’tÜ_£‰šg +; + +103 +$ignܑags + = + `ex¶ode +(',', +$gs +); + +104 +$ignܑags + = + `¬¿y_m­ +('trim', $ignoretags); + +105 +$gs + = + `¬¿y +(); + +106 + `fܗch +( +$ignܑags + +as + +$g +) { + +107 ià(! + `š_¬¿y +( +$g +, + `¬¿y +('@global', '@access', '@package', '@ignore', '@name', '@param', '@return', '@staticvar', '@var'))) + +108 +$gs +[] = +$g +; + +110 +$_phpDocum’tÜ_£‰šg +['ignܑags'] = +$gs +; + +111 + } +} + +122 +public + +funùiÚ + + $£tP—r +( +$b +) { + +123 +glob® + +$_phpDocum’tÜ_£‰šg +; + +124 +$_phpDocum’tÜ_£‰šg +['³¬'] = ( +boޗn +è +$b +; + +125 + } +} + +136 +public + +funùiÚ + + $£tExam¶esDœ +( +$dœ +) { + +137 +glob® + +$_phpDocum’tÜ_£‰šg +; + +138 +$_phpDocum’tÜ_£‰šg +['exam¶esdœ'] = +$dœ +; + +139 + } +} + +150 +public + +funùiÚ + + $£tDeçuÉPackageName +( +$Çme +) { + +151 +$GLOBALS +['phpDocum’tÜ_DeçuÉPackageName'] = + `Œim +( +$Çme +); + +152 + } +} + +163 +public + +funùiÚ + + $£tDeçuÉC©egÜyName +( +$Çme +) { + +164 +$GLOBALS +['phpDocum’tÜ_DeçuÉC©egÜyName'] = + `Œim +( +$Çme +); + +165 + } +} + +177 +public + +funùiÚ + + $£tQu›tMode +() { + +178 +glob® + +$_phpDocum’tÜ_£‰šg +; + +179 +$_phpDocum’tÜ_£‰šg +['qu›t'] = +Œue +; + +180 +·»Á +:: + `£tQu›tMode +(); + +181 + } +} + +190 +public + +funùiÚ + + $£tUndocum’‹d–em’ts +( +$bEÇbË +) { + +191 +$this +-> +»nd” +-> + `£tUndocum’‹dEËm’tW¬nšgsMode +( +$bEÇbË +); + +192 + } +} + +206 +public + +funùiÚ + + $£tCu¡omgs +( +$sCu¡omgs +) { + +207 +glob® + +$_phpDocum’tÜ_£‰šg +; + +208 +$_phpDocum’tÜ_£‰šg +['cu¡omgs'] = +$sCu¡omgs +; + +209 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpdoc/PhpDocumentorExternalTask.php + +1 +´og¿mP©h + = +$´og¿mP©h +; + +62 +public + +funùiÚ + + $g‘Prog¿mP©h +() + +64  +$this +-> +´og¿mP©h +; + +65 + } +} + +70 +public + +funùiÚ + + $£tSourû·th +( +$sourû·th +) + +72 +$this +-> +sourû·th + = +$sourû·th +; + +73 + } +} + +80 +public + +funùiÚ + + $£tIgnÜesymlšks +( +$bS‘ +) { + +81 +$this +-> +ignÜesymlšks + = +$bS‘ +; + +82 + } +} + +87 +public + +funùiÚ + + $maš +() + +89 +$this +-> + `v®id©e +(); + +90 +$¬gum’ts + = + `još +(' ', +$this +-> + `cÚ¡ruùArgum’ts +()); + +92 +$this +-> + `log +("Running…hpDocumentor..."); + +94 + `exec +( +$this +-> +´og¿mP©h + . " " . +$¬gum’ts +, +$ouut +, +$»tuº +); + +96 ià( +$»tuº + != 0) + +98 +throw + +Ãw + + `BuždExû±iÚ +("Could‚Ùƒxecu‹…hpDocum’tÜ: " . + `im¶ode +(' ', +$ouut +)); + +101 + `fܗch +( +$ouut + +as + +$lše +) + +103 if( + `¡½os +( +$lše +, 'ERROR'è!=ð +çl£ +) + +105 +$this +-> + `log +( +$lše +, +Projeù +:: +MSG_ERR +); + +109 +$this +-> + `log +( +$lše +, +Projeù +:: +MSG_VERBOSE +); + +111 + } +} + +117 +´Ùeùed + +funùiÚ + + $cÚ¡ruùArgum’ts +() + +119 +$aArgs + = + `¬¿y +(); + +120 ià( +$this +-> +t™Ë +) + +122 +$aArgs +[] = '--t™Ë "' . +$this +-> +t™Ë + . '"'; + +125 ià( +$this +-> +de¡dœ +) + +127 +$aArgs +[] = '--rg‘ "' . +$this +-> +de¡dœ +-> + `g‘AbsÞu‹P©h +() . '"'; + +130 ià( +$this +-> +sourû·th +) + +132 +$aArgs +[] = '--dœeùÜy "' . +$this +-> +sourû·th + . '"'; + +135 ià( +$this +-> +ouut +) + +137 +$aArgs +[] = '--ouuˆ' . +$this +-> +ouut +; + +140 ià( +$this +-> +lšksourû +) + +142 +$aArgs +[] = '--sourcecode on'; + +145 ià( +$this +-> +·r£´iv©e +) + +147 +$aArgs +[] = '--parseprivate on'; + +151 +$fžesToP¬£ + = + `¬¿y +(); + +152 + `fܗch +( +$this +-> +fže£ts + +as + +$fs +) { + +153 +$fžes + = +$fs +-> + `g‘DœeùÜySÿ” +( +$this +-> +´ojeù +)-> + `g‘InþudedFžes +(); + +154 + `fܗch +( +$fžes + +as + +$fž’ame +) { + +155 +$f + = +Ãw + + `PhšgFže +( +$fs +-> + `g‘Dœ +( +$this +-> +´ojeù +), +$fž’ame +); + +156 +$fžesToP¬£ +[] = +$f +-> + `g‘AbsÞu‹P©h +(); + +159 ià( + `couÁ +( +$fžesToP¬£ +) > 0) { + +160 +$aArgs +[] = '--fž’am"' . + `još +(',', +$fžesToP¬£ +) . '"'; + +164 +$ricFžes + = + `¬¿y +(); + +165 + `fܗch +( +$this +-> +´ojDocFže£ts + +as + +$fs +) { + +166 +$fžes + = +$fs +-> + `g‘DœeùÜySÿ” +( +$this +-> +´ojeù +)-> + `g‘InþudedFžes +(); + +167 + `fܗch +( +$fžes + +as + +$fž’ame +) { + +168 +$f + = +Ãw + + `PhšgFže +( +$fs +-> + `g‘Dœ +( +$this +-> +´ojeù +), +$fž’ame +); + +169 +$ricFžes +[] = +$f +-> + `g‘AbsÞu‹P©h +(); + +172 ià( + `couÁ +( +$ricFžes +) > 0) { + +173 +$aArgs +[] = '--readmeinstallchangelog "' . + +174 + `još +(',', +$ricFžes +) . '"'; + +177 ià( +$this +-> +javadocDesc +) { + +178 +$aArgs +[] = '--javadocdesc on'; + +181 ià( +$this +-> +qu›t +) { + +182 +$aArgs +[] = '--quiet on'; + +185 ià( +$this +-> +·ckages +) { + +186 +$aArgs +[] = '--·ckageouuˆ"' . +$this +-> +·ckages + . '"'; + +189 ià( +$this +-> +ignÜeTags +) { + +190 +$aArgs +[] = '--ignÜe-g "' . +$this +-> +ignÜeTags + . '"'; + +193 ià( +$this +-> +deçuÉC©egÜyName +) { + +194 +$aArgs +[] = '--deçuÉÿ‹gÜyÇm"' . +$this +-> +deçuÉC©egÜyName + . + +198 ià( +$this +-> +exam¶esDœ +) { + +199 +$aArgs +[] = '--exam¶esdœ "' . +$this +-> +exam¶esDœ +-> + `g‘AbsÞu‹P©h +() + +203 ià( +$this +-> +‹m¶©eBa£ +) { + +204 +$aArgs +[] = '--‹m¶©eba£ "' . +$this +-> +‹m¶©eBa£ +-> + `g‘AbsÞu‹P©h +() + +208 ià( +$this +-> +³¬ +) { + +209 +$aArgs +[] = '--pear on'; + +212 ià( +$this +-> +undocum’‹d–em’ts +) { + +213 +$aArgs +[] = '--undocumentedelements on'; + +216 ià( +$this +-> +cu¡omgs +) { + +217 +$aArgs +[] = '--cu¡omg "' . +$this +-> +cu¡omgs + . '"'; + +220 ià( +$this +-> +ignÜesymlšks +) { + +221 +$aArgs +[] = '--ignoresymlinks on'; + +224 + `v¬_dump +( +$aArgs +); +ex™ +; + +225  +$aArgs +; + +226 + } +} + +232 +public + +funùiÚ + + $š™ +() { + +233 + } +} + +239 +´Ùeùed + +funùiÚ + + $v®id©e +() { + +240 ià(! +$this +-> +de¡dœ +) { + +241 +throw + +Ãw + + `BuždExû±iÚ +("You must specify‡ destdir for…hpdoc.", + +242 +$this +-> + `g‘LoÿtiÚ +()); + +244 ià(! +$this +-> +ouut +) { + +245 +throw + +Ãw + + `BuždExû±iÚ +("You must specify‡n output format for " . + +246 "phpdoøÓ.g. HTML:äames:deçuÉ).", +$this +-> + `g‘LoÿtiÚ +()); + +248 ià( + `em±y +( +$this +-> +fže£ts +è&& !$this-> +sourû·th +) { + +249 +throw + +Ãw + + `BuždExû±iÚ +("You have‚ot specified‡ny fileso " . + +251 +$this +-> + `g‘LoÿtiÚ +()); + +253 ià( +$this +-> +cÚfigdœ +) { + +254 +$this +-> + `log +('Ignoring unsupported configdir-Attribute', + +255 +Projeù +:: +MSG_VERBOSE +); + +257 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpdoc/PhpDocumentorTask.php + +1 +t™Ë + = +$t™Ë +; + +144 +public + +funùiÚ + + $£tDe¡dœ +( +PhšgFže + +$de¡dœ +) { + +145 +$this +-> +de¡dœ + = +$de¡dœ +; + +146 + } +} + +152 +public + +funùiÚ + + $£tT¬g‘ +( +PhšgFže + +$de¡dœ +) { + +153 +$this +-> + `£tDe¡dœ +( +$de¡dœ +); + +154 + } +} + +160 +public + +funùiÚ + + $£tOuut +( +$ouut +) { + +161 +$this +-> +ouut + = +$ouut +; + +162 + } +} + +168 +public + +funùiÚ + + $£tSourûcode +( +$b +) { + +169 +$this +-> +lšksourû + = +$b +; + +170 + } +} + +176 +public + +funùiÚ + + $£tQu›t +( +$b +) { + +177 +$this +-> +qu›t + = +$b +; + +178 + } +} + +184 +public + +funùiÚ + + $£tP¬£´iv©e +( +$·r£´iv©e +) { + +185 +$this +-> +·r£Priv©e + = +$·r£´iv©e +; + +186 + } +} + +192 +public + +funùiÚ + + $£tJavadocdesc +( +$javadoc +) { + +193 +$this +-> +javadocDesc + = +$javadoc +; + +194 + } +} + +201 +public + +funùiÚ + + $£tPackageouut +( +$·ckages +) { + +202 +$this +-> +·ckages + = +$·ckages +; + +203 + } +} + +210 +public + +funùiÚ + + $£tIgnܑags +( +$gs +) { + +211 +$this +-> +ignÜeTags + = +$gs +; + +212 + } +} + +218 +public + +funùiÚ + + $£tExam¶esdœ +( +PhšgFže + +$d +) { + +219 +$this +-> +exam¶esDœ + = +$d +; + +220 + } +} + +226 +public + +funùiÚ + + $£tCÚfigdœ +( +PhšgFže + +$d +) { + +227 +$this +-> +cÚfigDœ + = +$d +; + +228 + } +} + +234 +public + +funùiÚ + + $£tDeçuÉ·ckag’ame +( +$Çme +) { + +235 +$this +-> +deçuÉPackageName + = +$Çme +; + +236 + } +} + +242 +public + +funùiÚ + + $£tDeçuÉÿ‹gÜyÇme +( +$Çme +) { + +243 +$this +-> +deçuÉC©egÜyName + = +$Çme +; + +244 + } +} + +250 +public + +funùiÚ + + $£tP—r +( +$b +) { + +251 +$this +-> +³¬ + = +$b +; + +252 + } +} + +258 +public + +funùiÚ + + $ü—‹Fže£t +() { + +259 +$num + = + `¬¿y_push +( +$this +-> +fže£ts +, +Ãw + + `FžeS‘ +()); + +260  +$this +-> +fže£ts +[ +$num +-1]; + +261 + } +} + +267 +public + +funùiÚ + + $ü—‹Projdocfže£t +() { + +268 +$num + = + `¬¿y_push +( +$this +-> +´ojDocFže£ts +, +Ãw + + `FžeS‘ +()); + +269  +$this +-> +´ojDocFže£ts +[ +$num +-1]; + +270 + } +} + +278 +public + +funùiÚ + + $£tUndocum’‹d–em’ts +( +$b +) { + +279 +$this +-> +undocum’‹d–em’ts + = +$b +; + +280 + } +} + +288 +public + +funùiÚ + + $£tCu¡omgs +( +$sCu¡omgs +) { + +289 +$this +-> +cu¡omgs + = +$sCu¡omgs +; + +290 + } +} + +297 +public + +funùiÚ + + $£tTem¶©eBa£ +( +PhšgFže + +$oTem¶©eBa£ +) { + +298 +$this +-> +‹m¶©eBa£ + = +$oTem¶©eBa£ +; + +299 + } +} + +305 +´Ùeùed + +funùiÚ + + $fšdPhpDocum’tÜIn¡®l +() + +307 +$found + = +nuÎ +; + +308 + `fܗch +( + `ex¶ode +( +PATH_SEPARATOR +, + `g‘_šþude_·th +()è +as + +$·th +) { + +309 +$‹¡·th + = +$·th + . +DIRECTORY_SEPARATOR + . 'PhpDocumentor'; + +310 ià( + `fže_exi¡s +( +$‹¡·th +)) { + +311 +$found + = +$‹¡·th +; + +315 ià(! +$found +) { + +316 +throw + +Ãw + + `BuždExû±iÚ +("PhpDocum’t܁ask d•’d Ú PhpDocum’tÜ bešg in¡®Ëd‡nd oÀšþude_·th.", +$this +-> + `g‘LoÿtiÚ +()); + +319 + `£t_šþude_·th +( + `g‘_šþude_·th +(è. +PATH_SEPARATOR + . +$found +); + +320 + `šþude_Úû + ("phpDocumentor/Setup.inc.php"); + +321 ià(! + `þass_exi¡s +('phpDocumentor_setup')) { + +322 +throw + +Ãw + + `BuždExû±iÚ +("Error including PhpDocumentor setup class file."); + +324 + } +} + +331 +public + +funùiÚ + + $š™ +() + +333 +$this +-> + `fšdPhpDocum’tÜIn¡®l +(); + +334 +šþude_Úû + 'phing/tasks/ext/phpdoc/PhingPhpDocumentorSetup.php'; + +335 + } +} + +340 +funùiÚ + + $maš +() + +342 +$this +-> + `v®id©e +(); + +343 +$cÚfigdœ + = +$this +-> +cÚfigDœ + ? $this->cÚfigDœ-> + `g‘AbsÞu‹P©h +(è: +nuÎ +; + +344 +$phpdoc + = +Ãw + + `PhšgPhpDocum’tÜS‘up +( +$cÚfigdœ +); + +345 +$this +-> + `£tPhpDocum’tÜO±iÚs +( +$phpdoc +); + +347 +$phpdoc +-> + `£tupCÚv”‹rs +( +$this +-> +ouut +); + +348 +$phpdoc +-> + `ü—‹Docs +(); + +349 + } +} + +355 +´Ùeùed + +funùiÚ + + $v®id©e +() + +357 ià(! +$this +-> +de¡dœ +) { + +358 +throw + +Ãw + + `BuždExû±iÚ +("You mu¡ s³cify‡ de¡dœ f܅hpdoc.", +$this +-> + `g‘LoÿtiÚ +()); + +360 ià(! +$this +-> +ouut +) { + +361 +throw + +Ãw + + `BuždExû±iÚ +("You mu¡ s³cify‡ÀouuˆfÜm© f܅hpdoøÓ.g. HTML:äames:deçuÉ).", +$this +-> + `g‘LoÿtiÚ +()); + +363 ià( + `em±y +( +$this +-> +fže£ts +)) { + +364 +throw + +Ãw + + `BuždExû±iÚ +("You havnÙ s³cif›d‡ny fže tؚþud(èf܅hpdoc.", +$this +-> + `g‘LoÿtiÚ +()); + +366 + } +} + +372 +´Ùeùed + +funùiÚ + + $£tPhpDocum’tÜO±iÚs +( +PhšgPhpDocum’tÜS‘up + +$phpdoc +) + +376 ià( +$this +-> +t™Ë +) { + +377 +$phpdoc +-> + `£tT™Ë +( +$this +-> +t™Ë +); + +380 ià( +$this +-> +·r£Priv©e +) { + +381 +$phpdoc +-> + `£tP¬£Priv©e +(); + +384 ià( +$this +-> +javadocDesc +) { + +385 +$phpdoc +-> + `£tJavadocDesc +(); + +388 ià( +$this +-> +qu›t +) { + +389 +$phpdoc +-> + `£tQu›tMode +(); + +392 ià( +$this +-> +de¡dœ +) { + +393 +$phpdoc +-> + `£tT¬g‘Dœ +( +$this +-> +de¡dœ +-> + `g‘AbsÞu‹P©h +()); + +396 ià( +$this +-> +·ckages +) { + +397 +$phpdoc +-> + `£tPackageOuut +( +$this +-> +·ckages +); + +400 ià( +$this +-> +‹m¶©eBa£ +) { + +401 +$phpdoc +-> + `£tTem¶©eBa£ +( +$this +-> +‹m¶©eBa£ +-> + `g‘AbsÞu‹P©h +()); + +404 ià( +$this +-> +lšksourû +) { + +405 +$phpdoc +-> + `£tG’”©eSourûcode +( +$this +-> +lšksourû +); + +408 ià( +$this +-> +exam¶esDœ +) { + +409 +$phpdoc +-> + `£tExam¶esDœ +( +$this +-> +exam¶esDœ +-> + `g‘AbsÞu‹P©h +()); + +412 ià( +$this +-> +ignÜeTags +) { + +413 +$phpdoc +-> + `£tIgnÜeTags +( +$this +-> +ignÜeTags +); + +416 ià( +$this +-> +deçuÉPackageName +) { + +417 +$phpdoc +-> + `£tDeçuÉPackageName +( +$this +-> +deçuÉPackageName +); + +420 ià( +$this +-> +deçuÉC©egÜyName +) { + +421 +$phpdoc +-> + `£tDeçuÉC©egÜyName +( +$this +-> +deçuÉC©egÜyName +); + +424 ià( +$this +-> +³¬ +) { + +425 +$phpdoc +-> + `£tP—r +( +$this +-> +³¬ +); + +429 +$fžesToP¬£ + = + `¬¿y +(); + +430 + `fܗch +( +$this +-> +fže£ts + +as + +$fs +) { + +431 +$fžes + = +$fs +-> + `g‘DœeùÜySÿ” +( +$this +-> +´ojeù +)-> + `g‘InþudedFžes +(); + +432 + `fܗch +( +$fžes + +as + +$fž’ame +) { + +433 +$f + = +Ãw + + `PhšgFže +( +$fs +-> + `g‘Dœ +( +$this +-> +´ojeù +), +$fž’ame +); + +434 +$fžesToP¬£ +[] = +$f +-> + `g‘AbsÞu‹P©h +(); + +438 +$phpdoc +-> + `£tFžesToP¬£ +( + `im¶ode +(",", +$fžesToP¬£ +)); + +442 +$ricFžes + = + `¬¿y +(); + +443 + `fܗch +( +$this +-> +´ojDocFže£ts + +as + +$fs +) { + +444 +$fžes + = +$fs +-> + `g‘DœeùÜySÿ” +( +$this +-> +´ojeù +)-> + `g‘InþudedFžes +(); + +445 + `fܗch +( +$fžes + +as + +$fž’ame +) { + +446 +$f + = +Ãw + + `PhšgFže +( +$fs +-> + `g‘Dœ +( +$this +-> +´ojeù +), +$fž’ame +); + +447 +$ricFžes +[] = +$f +-> + `g‘AbsÞu‹P©h +(); + +450 +$phpdoc +-> + `£tRicFžes +( +$ricFžes +); + +452 ià( +$this +-> +undocum’‹d–em’ts +) { + +453 +$phpdoc +-> + `£tUndocum’‹d–em’ts +( +$this +-> +undocum’‹d–em’ts +); + +456 ià( +$this +-> +cu¡omgs +) { + +457 +$phpdoc +-> + `£tCu¡omgs +( +$this +-> +cu¡omgs +); + +459 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/BatchTest.php + +1 +´ojeù + = +$´ojeù +; + +60 +funùiÚ + + $£tExþude +( +$exþude +) + +62 +$this +-> +exþudeCÏs£s + = + `ex¶ode +(" ", +$exþude +); + +63 + } +} + +68 +funùiÚ + + $£tCÏs¥©h +( +P©h + +$þas¥©h +) + +70 ià( +$this +-> +þas¥©h + ==ð +nuÎ +) + +72 +$this +-> +þas¥©h + = +$þas¥©h +; + +76 +$this +-> +þas¥©h +-> + `­³nd +( +$þas¥©h +); + +78 + } +} + +83 +funùiÚ + + $ü—‹CÏs¥©h +() + +85 +$this +-> +þas¥©h + = +Ãw + + `P©h +(); + +86  +$this +-> +þas¥©h +; + +87 + } +} + +92 +funùiÚ + + $g‘CÏs¥©h +() + +94  +$this +-> +þas¥©h +; + +95 + } +} + +102 +funùiÚ + + $addFžeS‘ +( +FžeS‘ + +$fže£t +) + +104 +$this +-> +fže£ts +[] = +$fže£t +; + +105 + } +} + +112 +´iv©e + +funùiÚ + + $g‘Fž’ames +() + +114 +$fž’ames + = + `¬¿y +(); + +116 + `fܗch + ( +$this +-> +fže£ts + +as + +$fže£t +) + +118 +$ds + = +$fže£t +-> + `g‘DœeùÜySÿ” +( +$this +-> +´ojeù +); + +119 +$ds +-> + `sÿn +(); + +121 +$fžes + = +$ds +-> + `g‘InþudedFžes +(); + +123 + `fܗch + ( +$fžes + +as + +$fže +) + +125 +$fž’ames +[] = +$ds +-> + `g‘Ba£Dœ +(è. "/" . +$fže +; + +129  +$fž’ames +; + +130 + } +} + +136 +´iv©e + +funùiÚ + + $isTe¡Ca£ +( +$šput +) + +138 ià( +PHPUn™Utž +:: +$š¡®ËdV”siÚ + == 3) + +139  + `is_subþass_of +( +$šput +, 'PHPUnit_Framework_TestCase') || is_subclass_of($input, 'PHPUnit_Framework_TestSuite'); + +141  + `is_subþass_of +( +$šput +, 'PHPUnit2_Framework_TestCase') || is_subclass_of($input, 'PHPUnit2_Framework_TestSuite'); + +142 + } +} + +148 +´iv©e + +funùiÚ + + $fž‹rTe¡s +( +$šput +) + +150 +$»æeù + = +Ãw + + `ReæeùiÚCÏss +( +$šput +); + +152  +$this +-> + `isTe¡Ca£ +( +$šput +è&& (! +$»æeù +-> + `isAb¡¿ù +()); + +153 + } +} + +161 +funùiÚ + + $–em’ts +() + +163 +$fž’ames + = +$this +-> + `g‘Fž’ames +(); + +165 +$deþ¬edCÏs£s + = + `¬¿y +(); + +167 + `fܗch + ( +$fž’ames + +as + +$fž’ame +) + +169 +$defšedCÏs£s + = +PHPUn™Utž +:: + `g‘DefšedCÏs£s +( +$fž’ame +, +$this +-> +þas¥©h +); + +171 + `fܗch +( +$defšedCÏs£s + +as + +$defšedCÏss +) { + +172 +$this +-> +´ojeù +-> + `log +("(PHPUn™èAddšg $defšedCÏs (äom $fž’ameèt؋¡s.", +Projeù +:: +MSG_DEBUG +); + +175 +$deþ¬edCÏs£s + = + `¬¿y_m”ge +($deþ¬edCÏs£s, +$defšedCÏs£s +); + +178 +$–em’ts + = + `¬¿y_fž‹r +( +$deþ¬edCÏs£s +, + `¬¿y +( +$this +, "filterTests")); + +180  +$–em’ts +; + +181 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/FormatterElement.php + +1 +ty³ + = +$ty³ +; + +48 ià( +$this +-> +ty³ + == "summary") + +50 ià( +PHPUn™Utž +:: +$š¡®ËdV”siÚ + == 3) + +52 +»quœe_Úû + 'phing/tasks/ext/phpunit/phpunit3/SummaryPHPUnit3ResultFormatter.php'; + +53 +$this +-> +fÜm©‹r + = +Ãw + + `Summ¬yPHPUn™3ResuÉFÜm©‹r +(); + +57 +»quœe_Úû + 'phing/tasks/ext/phpunit/phpunit2/SummaryPHPUnit2ResultFormatter.php'; + +58 +$this +-> +fÜm©‹r + = +Ãw + + `Summ¬yPHPUn™2ResuÉFÜm©‹r +(); + +62 ià( +$this +-> +ty³ + == "xml") + +64 +$de¡Fže + = +Ãw + + `PhšgFže +( +$this +-> +toDœ +, 'testsuites.xml'); + +66 ià( +PHPUn™Utž +:: +$š¡®ËdV”siÚ + == 3) + +68 +»quœe_Úû + 'phing/tasks/ext/phpunit/phpunit3/XMLPHPUnit3ResultFormatter.php'; + +69 +$this +-> +fÜm©‹r + = +Ãw + + `XMLPHPUn™3ResuÉFÜm©‹r +(); + +73 +»quœe_Úû + 'phing/tasks/ext/phpunit/phpunit2/XMLPHPUnit2ResultFormatter.php'; + +74 +$this +-> +fÜm©‹r + = +Ãw + + `XMLPHPUn™2ResuÉFÜm©‹r +(); + +78 ià( +$this +-> +ty³ + == "plain") + +80 ià( +PHPUn™Utž +:: +$š¡®ËdV”siÚ + == 3) + +82 +»quœe_Úû + 'phing/tasks/ext/phpunit/phpunit3/PlainPHPUnit3ResultFormatter.php'; + +83 +$this +-> +fÜm©‹r + = +Ãw + + `PϚPHPUn™3ResuÉFÜm©‹r +(); + +87 +»quœe_Úû + 'phing/tasks/ext/phpunit/phpunit2/PlainPHPUnit2ResultFormatter.php'; + +88 +$this +-> +fÜm©‹r + = +Ãw + + `PϚPHPUn™2ResuÉFÜm©‹r +(); + +93 +throw + +Ãw + + `BuždExû±iÚ +("FÜm©‹¸'" . +$this +-> +ty³ + . "'‚ot implemented"); + +97 +funùiÚ + + $£tCÏssName +( +$þassName +) + +99 +$þassNameNoDÙ + = +Phšg +:: + `impÜt +( +$þassName +); + +101 +$this +-> +fÜm©‹r + = +Ãw + + `$þassNameNoDÙ +(); + +102 + } +} + +104 +funùiÚ + + $£tU£Fže +( +$u£Fže +) + +106 +$this +-> +u£Fže + = +$u£Fže +; + +107 + } +} + +109 +funùiÚ + + $g‘U£Fže +() + +111  +$this +-> +u£Fže +; + +112 + } +} + +114 +funùiÚ + + $£tToDœ +( +$toDœ +) + +116 +$this +-> +toDœ + = +$toDœ +; + +117 + } +} + +119 +funùiÚ + + $g‘ToDœ +() + +121  +$this +-> +toDœ +; + +122 + } +} + +124 +funùiÚ + + $£tOutfže +( +$outfže +) + +126 +$this +-> +outfže + = +$outfže +; + +127 + } +} + +129 +funùiÚ + + $g‘Outfže +() + +131 ià( +$this +-> +outfže +) + +133  +$this +-> +outfže +; + +137  +$this +-> +fÜm©‹r +-> + `g‘P»ã¼edOutfže +(è. $this-> + `g‘Ex‹nsiÚ +(); + +139 + } +} + +141 +funùiÚ + + $g‘Ex‹nsiÚ +() + +143  +$this +-> +fÜm©‹r +-> + `g‘Ex‹nsiÚ +(); + +144 + } +} + +146 +funùiÚ + + $g‘FÜm©‹r +() + +148  +$this +-> +fÜm©‹r +; + +149 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/PHPUnitReportTask.php + +1 +šFže + = +$šFže +; + +59 +funùiÚ + + $£tFÜm© +( +$fÜm© +) + +61 +$this +-> +fÜm© + = +$fÜm© +; + +62 + } +} + +67 +funùiÚ + + $£tStyËDœ +( +$¡yËDœ +) + +69 +$this +-> +¡yËDœ + = +$¡yËDœ +; + +70 + } +} + +76 +funùiÚ + + $£tToDœ +( +$toDœ +) + +78 +$this +-> +toDœ + = +$toDœ +; + +79 + } +} + +84 +´iv©e + +funùiÚ + + $g‘StyËSh“t +() + +86 +$x¦Çme + = "phpun™2-" . +$this +-> +fÜm© + . ".xsl"; + +88 ià( +$this +-> +¡yËDœ +) + +90 +$fže + = +Ãw + + `PhšgFže +( +$this +-> +¡yËDœ +, +$x¦Çme +); + +94 +$·th + = +Phšg +:: + `g‘ResourûP©h +("phing/etc/$xslname"); + +96 ià( +$·th + ==ð +NULL +) + +98 +$·th + = +Phšg +:: + `g‘ResourûP©h +("etc/$xslname"); + +100 ià( +$·th + ==ð +NULL +) + +102 +throw + +Ãw + + `BuždExû±iÚ +("Could‚ot find $xslname in„esource…ath"); + +106 +$fže + = +Ãw + + `PhšgFže +( +$·th +); + +109 ià(! +$fže +-> + `exi¡s +()) + +111 +throw + +Ãw + + `BuždExû±iÚ +("Could‚Ù fšd fž" . +$fže +-> + `g‘P©h +()); + +114  +$fže +; + +115 + } +} + +120 +´iv©e + +funùiÚ + + $ŒªsfÜm +( +DOMDocum’t + +$docum’t +) + +122 +$dœ + = +Ãw + + `PhšgFže +( +$this +-> +toDœ +); + +124 ià(! +$dœ +-> + `exi¡s +()) + +126 +throw + +Ãw + + `BuždExû±iÚ +("DœeùÜy '" . +$this +-> +toDœ + . "' does‚otƒxist"); + +129 +$x¦fže + = +$this +-> + `g‘StyËSh“t +(); + +131 +$x¦ + = +Ãw + + `DOMDocum’t +(); + +132 +$x¦ +-> + `lßd +( +$x¦fže +-> + `g‘AbsÞu‹P©h +()); + +134 +$´oc + = +Ãw + + `XSLTProûssÜ +(); + +135 +$´oc +-> + `impÜtStyËSh“t +( +$x¦ +); + +137 ià( +$this +-> +fÜm© + == "noframes") + +139 +$wr™” + = +Ãw + + `FžeWr™” +Òew + `PhšgFže +( +$this +-> +toDœ +, "phpunit2-noframes.html")); + +140 +$wr™” +-> + `wr™e +( +$´oc +-> + `ŒªsfÜmToXML +( +$docum’t +)); + +141 +$wr™” +-> + `þo£ +(); + +145 +Ex‹ndedFžeSŒ—m +:: + `»gi¡”SŒ—m +(); + +149 +$dœ + = +Ãw + + `PhšgFže +( +$this +-> +toDœ +); + +150 +$´oc +-> + `£tP¬am‘” +('', 'ouut.dœ', +$dœ +-> + `g‘AbsÞu‹P©h +()); + +151 +$´oc +-> + `ŒªsfÜmToXML +( +$docum’t +); + +153 + } +} + +159 +´iv©e + +funùiÚ + + $fixPackages +( +DOMDocum’t + +$docum’t +) + +161 +$‹¡su™es + = +$docum’t +-> + `g‘EËm’tsByTagName +('testsuite'); + +163 + `fܗch + ( +$‹¡su™es + +as + +$‹¡su™e +) + +165 ià(! +$‹¡su™e +-> + `hasA‰ribu‹ +('package')) + +167 +$‹¡su™e +-> + `£tA‰ribu‹ +('package', 'default'); + +170 + } +} + +177 +public + +funùiÚ + + $maš +() + +179 +$‹¡Su™esDoc + = +Ãw + + `DOMDocum’t +(); + +180 +$‹¡Su™esDoc +-> + `lßd +( +$this +-> +šFže +); + +182 +$this +-> + `fixPackages +( +$‹¡Su™esDoc +); + +184 +$this +-> + `ŒªsfÜm +( +$‹¡Su™esDoc +); + +185 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/PHPUnitTask.php + +1 ð5.0.3.", +$this +-> + `g‘LoÿtiÚ +()); + +68 @ +šþude_Úû + 'PHPUnit/Runner/Version.php'; + +69 @ +šþude_Úû + 'PHPUnit2/Runner/Version.php'; + +71 ià( + `þass_exi¡s +('PHPUnit_Runner_Version')) + +73 +$v”siÚ + = +PHPUn™_Ru”_V”siÚ +:: + `id +(); + +75 + `–£if + ( + `þass_exi¡s +('PHPUnit2_Runner_Version')) + +77 +$v”siÚ + = +PHPUn™2_Ru”_V”siÚ +:: + `id +(); + +81 +throw + +Ãw + + `BuždExû±iÚ +("PHPUn™ask d•’d Ú PHPUn™ 2 o¸3…ackagbešg in¡®Ëd.", +$this +-> + `g‘LoÿtiÚ +()); + +84 ià( + `v”siÚ_com·» +( +$v”siÚ +, "3.0.0") >= 0) + +86 +PHPUn™Utž +:: +$š¡®ËdV”siÚ + = 3; + +87 ià( + `v”siÚ_com·» +( +$v”siÚ +, "3.2.0") >= 0) + +89 +PHPUn™Utž +:: +$š¡®ËdMšÜV”siÚ + = 2; + +94 +PHPUn™Utž +:: +$š¡®ËdV”siÚ + = 2; + +100 +»quœe_Úû + 'phing/tasks/ext/phpunit/PHPUnitTestRunner.php'; + +101 +»quœe_Úû + 'phing/tasks/ext/phpunit/BatchTest.php'; + +102 +»quœe_Úû + 'phing/tasks/ext/phpunit/FormatterElement.php'; + +107 +$pwd + = + `dœÇme +( +__FILE__ +); + +109 ià( +PHPUn™Utž +:: +$š¡®ËdV”siÚ + == 3) + +111 +»quœe_Úû + 'PHPUnit/Framework.php'; + +112 +»quœe_Úû + 'PHPUnit/Util/Filter.php'; + +115 ià(! + `defšed +('PHPUnit_MAIN_METHOD')) { + +116 + `defše +('PHPUnit_MAIN_METHOD', 'PHPUnitTask::undefined'); + +119 +PHPUn™_Utž_Fž‹r +:: + `addFžeToFž‹r +( +$pwd + . '/PHPUnitTask.php', 'PHING'); + +120 +PHPUn™_Utž_Fž‹r +:: + `addFžeToFž‹r +( +$pwd + . '/PHPUnitTestRunner.php', 'PHING'); + +121 +PHPUn™_Utž_Fž‹r +:: + `addFžeToFž‹r +( +$pwd + . '/../../../Task.php', 'PHING'); + +122 +PHPUn™_Utž_Fž‹r +:: + `addFžeToFž‹r +( +$pwd + . '/../../../Target.php', 'PHING'); + +123 +PHPUn™_Utž_Fž‹r +:: + `addFžeToFž‹r +( +$pwd + . '/../../../Project.php', 'PHING'); + +124 +PHPUn™_Utž_Fž‹r +:: + `addFžeToFž‹r +( +$pwd + . '/../../../Phing.php', 'PHING'); + +128 +»quœe_Úû + 'PHPUnit2/Framework.php'; + +129 +»quœe_Úû + 'PHPUnit2/Util/Filter.php'; + +131 +PHPUn™2_Utž_Fž‹r +:: + `addFžeToFž‹r +( +$pwd + . '/PHPUnitTask.php'); + +132 +PHPUn™2_Utž_Fž‹r +:: + `addFžeToFž‹r +( +$pwd + . '/PHPUnitTestRunner.php'); + +133 +PHPUn™2_Utž_Fž‹r +:: + `addFžeToFž‹r +( +$pwd + . '/../../../Task.php'); + +134 +PHPUn™2_Utž_Fž‹r +:: + `addFžeToFž‹r +( +$pwd + . '/../../../Target.php'); + +135 +PHPUn™2_Utž_Fž‹r +:: + `addFžeToFž‹r +( +$pwd + . '/../../../Project.php'); + +136 +PHPUn™2_Utž_Fž‹r +:: + `addFžeToFž‹r +( +$pwd + . '/../../../Phing.php'); + +140 +funùiÚ + + $£tE¼Ü´Ý”ty +( +$v®ue +) + +142 +$this +-> +”rܴݔty + = +$v®ue +; + +143 + } +} + +145 +funùiÚ + + $£tFažu»´Ý”ty +( +$v®ue +) + +147 +$this +-> +çžu»´Ý”ty + = +$v®ue +; + +148 + } +} + +150 +funùiÚ + + $£tIncom¶‘•rݔty +( +$v®ue +) + +152 +$this +-> +šcom¶‘•rݔty + = +$v®ue +; + +153 + } +} + +155 +funùiÚ + + $£tSk³d´Ý”ty +( +$v®ue +) + +157 +$this +-> +sk³d´Ý”ty + = +$v®ue +; + +158 + } +} + +160 +funùiÚ + + $£tH®tڔrÜ +( +$v®ue +) + +162 +$this +-> +h®tڔrÜ + = +$v®ue +; + +163 + } +} + +165 +funùiÚ + + $£tH®tÚçžu» +( +$v®ue +) + +167 +$this +-> +h®tÚçžu» + = +$v®ue +; + +168 + } +} + +170 +funùiÚ + + $£tH®tښcom¶‘e +( +$v®ue +) + +172 +$this +-> +h®tښcom¶‘e + = +$v®ue +; + +173 + } +} + +175 +funùiÚ + + $£tH®tÚsk³d +( +$v®ue +) + +177 +$this +-> +h®tÚsk³d + = +$v®ue +; + +178 + } +} + +180 +funùiÚ + + $£tPrštsumm¬y +( +$´štsumm¬y +) + +182 +$this +-> +´štsumm¬y + = +$´štsumm¬y +; + +183 + } +} + +185 +funùiÚ + + $£tCodecov”age +( +$codecov”age +) + +187 +$this +-> +codecov”age + = +$codecov”age +; + +188 + } +} + +190 +funùiÚ + + $£tGroups +( +$groups +) + +192 ià( +PHPUn™Utž +:: +$š¡®ËdV”siÚ + < 3 || (PHPUn™Utž::$š¡®ËdV”siÚ =ð3 && PHPUn™Utž:: +$š¡®ËdMšÜV”siÚ + < 2)) + +194 +$this +-> + `log +("Th'groups'‡‰ribu‹ i Úly‡važabË w™h PHPUn™ 3.2.0 o¸Ãw”", +Projeù +:: +MSG_WARN +); + +196 +$tok’ + = ' ,;'; + +197 +$this +-> +groups + = + `¬¿y +(); + +198 +$tok + = + `¡¹ok +( +$groups +, +$tok’ +); + +199  +$tok + !=ð +çl£ +) { + +200 +$this +-> +groups +[] = +$tok +; + +201 +$tok + = + `¡¹ok +( +$tok’ +); + +203 + } +} + +205 +funùiÚ + + $£tExþudeGroups +( +$exþudeGroups +) + +207 ià( +PHPUn™Utž +:: +$š¡®ËdV”siÚ + < 3 || (PHPUn™Utž::$š¡®ËdV”siÚ =ð3 && PHPUn™Utž:: +$š¡®ËdMšÜV”siÚ + < 2)) + +209 +$this +-> + `log +("Th'exþudeGroups'‡‰ribu‹ i Úly‡važabË w™h PHPUn™ 3.2.0 o¸Ãw”", +Projeù +:: +MSG_WARN +); + +211 +$tok’ + = ' ,;'; + +212 +$this +-> +exþudeGroups + = + `¬¿y +(); + +213 +$tok + = + `¡¹ok +( +$groups +, +$tok’ +); + +214  +$tok + !=ð +çl£ +) { + +215 +$this +-> +exþudeGroups +[] = +$tok +; + +216 +$tok + = + `¡¹ok +( +$tok’ +); + +218 + } +} + +225 +funùiÚ + + $addFÜm©‹r +( +FÜm©‹rEËm’t + +$ã +) + +227 +$this +-> +fÜm©‹rs +[] = +$ã +; + +228 + } +} + +235 +funùiÚ + + $maš +() + +237 +$‹¡s + = + `¬¿y +(); + +239 ià( +$this +-> +´štsumm¬y +) + +241 +$ã + = +Ãw + + `FÜm©‹rEËm’t +(); + +242 +$ã +-> + `£tTy³ +("summary"); + +243 +$ã +-> + `£tU£Fže +( +çl£ +); + +244 +$this +-> +fÜm©‹rs +[] = +$ã +; + +247 + `fܗch + ( +$this +-> +b©ch‹¡s + +as + +$b©ch‹¡ +) + +249 +$‹¡s + = + `¬¿y_m”ge +($‹¡s, +$b©ch‹¡ +-> + `–em’ts +()); + +252 + `fܗch + ( +$this +-> +fÜm©‹rs + +as + +$ã +) + +254 +$fÜm©‹r + = +$ã +-> + `g‘FÜm©‹r +(); + +255 +$fÜm©‹r +-> + `£tProjeù +( +$this +-> + `g‘Projeù +()); + +257 ià( +$ã +-> + `g‘U£Fže +()) + +259 +$de¡Fže + = +Ãw + + `PhšgFže +( +$ã +-> + `g‘ToDœ +(), $ã-> + `g‘Outfže +()); + +261 +$wr™” + = +Ãw + + `FžeWr™” +( +$de¡Fže +-> + `g‘AbsÞu‹P©h +()); + +263 +$fÜm©‹r +-> + `£tOuut +( +$wr™” +); + +267 +$fÜm©‹r +-> + `£tOuut +( +$this +-> + `g‘DeçuÉOuut +()); + +270 +$fÜm©‹r +-> + `¡¬tTe¡Run +(); + +273 + `fܗch + ( +$‹¡s + +as + +$‹¡ +) + +275 +$su™e + = +NULL +; + +277 ià(( +PHPUn™Utž +:: +$š¡®ËdV”siÚ + =ð3 && + `is_subþass_of +( +$‹¡ +, 'PHPUnit_Framework_TestSuite')) || (PHPUnitUtil::$installedVersion == 2 && is_subclass_of($test, 'PHPUnit2_Framework_TestSuite'))) + +279 ià( + `is_objeù +( +$‹¡ +)) + +281 +$su™e + = +$‹¡ +; + +285 +$su™e + = +Ãw + + `$‹¡ +(); + +290 ià( +PHPUn™Utž +:: +$š¡®ËdV”siÚ + == 3) + +292 +»quœe_Úû + 'PHPUnit/Framework/TestSuite.php'; + +293 +$su™e + = +Ãw + + `PHPUn™_F¿mewÜk_Te¡Su™e +Òew + `ReæeùiÚCÏss +( +$‹¡ +)); + +297 +»quœe_Úû + 'PHPUnit2/Framework/TestSuite.php'; + +298 +$su™e + = +Ãw + + `PHPUn™2_F¿mewÜk_Te¡Su™e +Òew + `ReæeùiÚCÏss +( +$‹¡ +)); + +302 +$this +-> + `execu‹ +( +$su™e +); + +305 + `fܗch + ( +$this +-> +fÜm©‹rs + +as + +$ã +) + +307 +$fÜm©‹r + = +$ã +-> + `g‘FÜm©‹r +(); + +308 +$fÜm©‹r +-> + `’dTe¡Run +(); + +311 ià( +$this +-> +‹¡çžed +) + +313 +throw + +Ãw + + `BuždExû±iÚ +("One or moreests failed"); + +315 + } +} + +320 +´iv©e + +funùiÚ + + $execu‹ +( +$su™e +) + +322 +$ru” + = +Ãw + + `PHPUn™Te¡Ru” +( +$su™e +, +$this +-> +´ojeù +, $this-> +groups +, $this-> +exþudeGroups +); + +324 +$ru” +-> + `£tCodecov”age +( +$this +-> +codecov”age +); + +326 + `fܗch + ( +$this +-> +fÜm©‹rs + +as + +$ã +) + +328 +$fÜm©‹r + = +$ã +-> + `g‘FÜm©‹r +(); + +330 +$ru” +-> + `addFÜm©‹r +( +$fÜm©‹r +); + +333 +$ru” +-> + `run +(); + +335 +$»tcode + = +$ru” +-> + `g‘R‘Code +(); + +337 ià( +$»tcode + =ð +PHPUn™Te¡Ru” +:: +ERRORS +) { + +338 ià( +$this +-> +”rܴݔty +) { + +339 +$this +-> +´ojeù +-> + `£tNewPrݔty +($this-> +”rܴݔty +, +Œue +); + +341 ià( +$this +-> +h®tڔrÜ +) { + +342 +$this +-> +‹¡çžed + = +Œue +; + +344 } + `–£if + ( +$»tcode + =ð +PHPUn™Te¡Ru” +:: +FAILURES +) { + +345 ià( +$this +-> +çžu»´Ý”ty +) { + +346 +$this +-> +´ojeù +-> + `£tNewPrݔty +($this-> +çžu»´Ý”ty +, +Œue +); + +349 ià( +$this +-> +h®tÚçžu» +) { + +350 +$this +-> +‹¡çžed + = +Œue +; + +352 } + `–£if + ( +$»tcode + =ð +PHPUn™Te¡Ru” +:: +INCOMPLETES +) { + +353 ià( +$this +-> +šcom¶‘•rݔty +) { + +354 +$this +-> +´ojeù +-> + `£tNewPrݔty +($this-> +šcom¶‘•rݔty +, +Œue +); + +357 ià( +$this +-> +h®tښcom¶‘e +) { + +358 +$this +-> +‹¡çžed + = +Œue +; + +360 } + `–£if + ( +$»tcode + =ð +PHPUn™Te¡Ru” +:: +SKIPPED +) { + +361 ià( +$this +-> +sk³d´Ý”ty +) { + +362 +$this +-> +´ojeù +-> + `£tNewPrݔty +($this-> +sk³d´Ý”ty +, +Œue +); + +365 ià( +$this +-> +h®tÚsk³d +) { + +366 +$this +-> +‹¡çžed + = +Œue +; + +369 + } +} + +371 +´iv©e + +funùiÚ + + $g‘DeçuÉOuut +() + +373  +Ãw + + `LogWr™” +( +$this +); + +374 + } +} + +381 +funùiÚ + + $ü—‹B©chTe¡ +() + +383 +$b©ch‹¡ + = +Ãw + + `B©chTe¡ +( +$this +-> + `g‘Projeù +()); + +385 +$this +-> +b©ch‹¡s +[] = +$b©ch‹¡ +; + +387  +$b©ch‹¡ +; + +388 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/PHPUnitTestRunner.php + +1 +su™e + = +$su™e +; + +57 +$this +-> +´ojeù + = +$´ojeù +; + +58 +$this +-> +groups + = +$groups +; + +59 +$this +-> +exþudeGroups + = +$exþudeGroups +; + +60 +$this +-> +»tCode + = +£lf +:: +SUCCESS +; + +63 +funùiÚ + + $£tCodecov”age +( +$codecov”age +) + +65 +$this +-> +codecov”age + = +$codecov”age +; + +66 + } +} + +68 +funùiÚ + + $addFÜm©‹r +( +$fÜm©‹r +) + +70 +$this +-> +fÜm©‹rs +[] = +$fÜm©‹r +; + +71 + } +} + +73 +funùiÚ + + $run +() + +75 +$»s + = +NULL +; + +77 ià( +PHPUn™Utž +:: +$š¡®ËdV”siÚ + == 3) + +79 +»quœe_Úû + 'PHPUnit/Framework/TestSuite.php'; + +80 +$»s + = +Ãw + + `PHPUn™_F¿mewÜk_Te¡ResuÉ +(); + +84 +»quœe_Úû + 'PHPUnit2/Framework/TestSuite.php'; + +85 +$»s + = +Ãw + + `PHPUn™2_F¿mewÜk_Te¡ResuÉ +(); + +88 ià( +$this +-> +codecov”age +) + +90 +$»s +-> + `cÞËùCodeCov”ageInfÜm©iÚ +( +TRUE +); + +93 + `fܗch + ( +$this +-> +fÜm©‹rs + +as + +$fÜm©‹r +) + +95 +$»s +-> + `addLi¡’” +( +$fÜm©‹r +); + +98 +$this +-> +su™e +-> + `run +( +$»s +, +çl£ +, $this-> +groups +, $this-> +exþudeGroups +); + +100 ià( +$this +-> +codecov”age +) + +102 +$cov”ageInfÜm©iÚ + = +$»s +-> + `g‘CodeCov”ageInfÜm©iÚ +(); + +104 ià( +PHPUn™Utž +:: +$š¡®ËdV”siÚ + == 3) + +106 + `fܗch + ( +$cov”ageInfÜm©iÚ + +as + +$cov”age_šfo +) + +108 +Cov”ageM”g” +:: + `m”ge +( +$this +-> +´ojeù +, + `¬¿y +( +$cov”age_šfo +['files'])); + +113 +Cov”ageM”g” +:: + `m”ge +( +$this +-> +´ojeù +, +$cov”ageInfÜm©iÚ +); + +117 ià( +$»s +-> + `”rÜCouÁ +() != 0) + +119 +$this +-> +»tCode + = +£lf +:: +ERRORS +; + +121 ià( +$»s +-> + `çžu»CouÁ +() != 0) + +123 +$this +-> +»tCode + = +£lf +:: +FAILURES +; + +125 ià( +$»s +-> + `nÙIm¶em’‹dCouÁ +() != 0) + +127 +$this +-> +»tCode + = +£lf +:: +INCOMPLETES +; + +129 ià( +PHPUn™Utž +:: +$š¡®ËdV”siÚ + =ð3 && +$»s +-> + `sk³dCouÁ +() != 0) + +131 +$this +-> +»tCode + = +£lf +:: +SKIPPED +; + +133 + } +} + +135 +funùiÚ + + $g‘R‘Code +() + +137  +$this +-> +»tCode +; + +138 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/PHPUnitUtil.php + +1 + `g‘DocComm’t +(), +$m©ches +)) + +56  +$m©ches +[1]; + +72  +funùiÚ + + $g‘CÏssFromFžeName +( +$fž’ame +) + +74 +$fž’ame + = + `ba£Çme +($filename); + +76 +$½os + = + `¡¼pos +( +$fž’ame +, '.'); + +78 ià( +$½os + != -1) + +80 +$fž’ame + = + `sub¡r +($fž’ame, 0, +$½os +); + +83  +$fž’ame +; + +84 + } +} + +91  +funùiÚ + + $g‘DefšedCÏs£s +( +$fž’ame +, +$þas¥©h + = +NULL +) + +93 +$fž’ame + = + `»®·th +($filename); + +95 ià(! + `fže_exi¡s +( +$fž’ame +)) + +97 +throw + +Ãw + + `Exû±iÚ +("Fž'" . +$fž’ame + . "' does‚otƒxist"); + +100 ià( + `is£t +( +£lf +:: +$defšedCÏs£s +[ +$fž’ame +])) + +102  +£lf +:: +$defšedCÏs£s +[ +$fž’ame +]; + +105 +Phšg +:: + `__impÜt +( +$fž’ame +, +$þas¥©h +); + +107 +$deþ¬edCÏs£s + = + `g‘_deþ¬ed_þas£s +(); + +109 + `fܗch + ( +$deþ¬edCÏs£s + +as + +$þas¢ame +) + +111 +$»æeù + = +Ãw + + `ReæeùiÚCÏss +( +$þas¢ame +); + +113 +£lf +:: +$defšedCÏs£s +[ +$»æeù +-> + `g‘Fž’ame +()][] = +$þas¢ame +; + +115 ià( + `is_¬¿y +( +£lf +:: +$defšedCÏs£s +[ +$»æeù +-> + `g‘Fž’ame +()])) + +117 +£lf +:: +$defšedCÏs£s +[ +$»æeù +-> + `g‘Fž’ame +()] = + `¬¿y_unique +(self::$definedClasses[$reflect->getFilename()]); + +121 ià( + `is£t +( +£lf +:: +$defšedCÏs£s +[ +$fž’ame +])) + +123  +£lf +:: +$defšedCÏs£s +[ +$fž’ame +]; + +127  + `¬¿y +(); + +129 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/PHPUnit2ResultFormatter.php + +1 +out + = +$out +; + +61 +funùiÚ + + $g‘Ex‹nsiÚ +() + +64 + } +} + +71 +funùiÚ + + $£tProjeù +( +Projeù + +$´ojeù +) + +73 +$this +-> +´ojeù + = +$´ojeù +; + +74 + } +} + +76 +funùiÚ + + $g‘P»ã¼edOutfže +() + +79 + } +} + +81 +funùiÚ + + $¡¬tTe¡Run +() + +83 + } +} + +85 +funùiÚ + + $’dTe¡Run +() + +87 + } +} + +89 +funùiÚ + + $¡¬tTe¡Su™e +( +PHPUn™2_F¿mewÜk_Te¡Su™e + +$su™e +) + +91 +$this +-> +runCouÁ + = 0; + +92 +$this +-> +çžu»CouÁ + = 0; + +93 +$this +-> +”rÜCouÁ + = 0; + +95 +$this +-> +tim” + = +Ãw + + `Tim” +(); + +96 +$this +-> +tim” +-> + `¡¬t +(); + +97 + } +} + +99 +funùiÚ + + $’dTe¡Su™e +( +PHPUn™2_F¿mewÜk_Te¡Su™e + +$su™e +) + +101 +$this +-> +tim” +-> + `¡Ý +(); + +102 + } +} + +104 +funùiÚ + + $¡¬tTe¡ +( +PHPUn™2_F¿mewÜk_Te¡ + +$‹¡ +) + +106 +$this +-> +runCouÁ +++; + +107 + } +} + +109 +funùiÚ + + $’dTe¡ +( +PHPUn™2_F¿mewÜk_Te¡ + +$‹¡ +) + +111 + } +} + +113 +funùiÚ + + $addE¼Ü +( +PHPUn™2_F¿mewÜk_Te¡ + +$‹¡ +, +Exû±iÚ + +$e +) + +115 +$this +-> +”rÜCouÁ +++; + +116 + } +} + +118 +funùiÚ + + $addFažu» +( +PHPUn™2_F¿mewÜk_Te¡ + +$‹¡ +, +PHPUn™2_F¿mewÜk_As£¹iÚFažedE¼Ü + +$t +) + +120 +$this +-> +çžu»CouÁ +++; + +121 + } +} + +123 +funùiÚ + + $addIncom¶‘eTe¡ +( +PHPUn™2_F¿mewÜk_Te¡ + +$‹¡ +, +Exû±iÚ + +$e +) + +125 + } +} + +127 +funùiÚ + + $addSk³dTe¡ +( +PHPUn™2_F¿mewÜk_Te¡ + +$‹¡ +, +Exû±iÚ + +$e +) + +129 + } +} + +131 +funùiÚ + + $g‘RunCouÁ +() + +133  +$this +-> +runCouÁ +; + +134 + } +} + +136 +funùiÚ + + $g‘Fažu»CouÁ +() + +138  +$this +-> +çžu»CouÁ +; + +139 + } +} + +141 +funùiÚ + + $g‘E¼ÜCouÁ +() + +143  +$this +-> +”rÜCouÁ +; + +144 + } +} + +146 +funùiÚ + + $g‘EÏp£dTime +() + +148 ià( +$this +-> +tim” +) + +150  +$this +-> +tim” +-> + `g‘EÏp£dTime +(); + +156 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/PlainPHPUnit2ResultFormatter.php + +1 +šÃr + = ""; + +54 + } +} + +56 +funùiÚ + + $’dTe¡Su™e +( +PHPUn™2_F¿mewÜk_Te¡Su™e + +$su™e +) + +58 +·»Á +:: + `’dTe¡Su™e +( +$su™e +); + +60 +$sb + = "Te¡su™e: " . +$su™e +-> + `g‘Name +() . "\n"; + +61 +$sb +.ð"Te¡ run: " . +$this +-> + `g‘RunCouÁ +(); + +62 +$sb +.ð", Fažu»s: " . +$this +-> + `g‘Fažu»CouÁ +(); + +63 +$sb +.ð", E¼Üs: " . +$this +-> + `g‘E¼ÜCouÁ +(); + +64 +$sb +.ð", Tim–­£d: " . +$this +-> + `g‘EÏp£dTime +(); + +65 +$sb +.= " sec\n"; + +67 ià( +$this +-> +out + !ð +NULL +) + +69 +$this +-> +out +-> + `wr™e +( +$sb +); + +70 +$this +-> +out +-> + `wr™e +($this-> +šÃr +); + +72 + } +} + +74 +funùiÚ + + $addE¼Ü +( +PHPUn™2_F¿mewÜk_Te¡ + +$‹¡ +, +Exû±iÚ + +$e +) + +76 +·»Á +:: + `addE¼Ü +( +$‹¡ +, +$e +); + +78 +$this +-> + `fÜm©E¼Ü +("ERROR", +$‹¡ +, +$e +); + +79 + } +} + +81 +funùiÚ + + $addFažu» +( +PHPUn™2_F¿mewÜk_Te¡ + +$‹¡ +, +PHPUn™2_F¿mewÜk_As£¹iÚFažedE¼Ü + +$t +) + +83 +·»Á +:: + `addFažu» +( +$‹¡ +, +$t +); + +85 +$this +-> + `fÜm©E¼Ü +("FAILED", +$‹¡ +, +$t +); + +86 + } +} + +88 +funùiÚ + + $addIncom¶‘eTe¡ +( +PHPUn™2_F¿mewÜk_Te¡ + +$‹¡ +, +Exû±iÚ + +$e +) + +90 +·»Á +:: + `addIncom¶‘eTe¡ +( +$‹¡ +, +$e +); + +92 +$this +-> + `fÜm©E¼Ü +("INCOMPLETE", +$‹¡ +, +$e +); + +93 + } +} + +95 +´iv©e + +funùiÚ + + $fÜm©E¼Ü +( +$ty³ +, +PHPUn™2_F¿mewÜk_Te¡ + +$‹¡ +, +Exû±iÚ + +$e +) + +97 ià( +$‹¡ + !ð +nuÎ +) + +99 +$this +-> + `’dTe¡ +( +$‹¡ +); + +102 +$this +-> +šÃr +.ð +$‹¡ +-> + `g‘Name +(è. " " . +$ty³ + . "\n"; + +103 +$this +-> +šÃr +.ð +$e +-> + `g‘Mes§ge +() . "\n"; + +104 +$this +-> +šÃr +.ð +PHPUn™2_Utž_Fž‹r +:: + `g‘Fž‹»dSckT¿û +( +$e +) . "\n"; + +105 + } +} + +107 +funùiÚ + + $’dTe¡Run +() + +109 +·»Á +:: + `’dTe¡Run +(); + +111 ià( +$this +-> +out + !ð +NULL +) + +113 +$this +-> +out +-> + `þo£ +(); + +115 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/SummaryPHPUnit2ResultFormatter.php + +1 + `g‘RunCouÁ +(); + +41 +$sb +.ð", Fažu»s: " . +$this +-> + `g‘Fažu»CouÁ +(); + +42 +$sb +.ð", E¼Üs: " . +$this +-> + `g‘E¼ÜCouÁ +(); + +43 +$sb +.ð", Tim–­£d: " . +$this +-> + `g‘EÏp£dTime +(); + +44 +$sb +.= " sec\n"; + +46 ià( +$this +-> +out + !ð +NULL +) + +48 +$this +-> +out +-> + `wr™e +( +$sb +); + +49 +$this +-> +out +-> + `þo£ +(); + +53 +funùiÚ + + $g‘Ex‹nsiÚ +() + +55  +NULL +; + +56 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/XMLPHPUnit2ResultFormatter.php + +1 +logg” + = +Ãw + + `PHPUn™2_Utž_Log_XML +(); + +44 +$this +-> +logg” +-> + `£tWr™eDocum’t +( +çl£ +); + +47 +funùiÚ + + $g‘Ex‹nsiÚ +() + +50 + } +} + +52 +funùiÚ + + $g‘P»ã¼edOutfže +() + +55 + } +} + +57 +funùiÚ + + $¡¬tTe¡Su™e +( +PHPUn™2_F¿mewÜk_Te¡Su™e + +$su™e +) + +59 +·»Á +:: + `¡¬tTe¡Su™e +( +$su™e +); + +61 +$this +-> +logg” +-> + `¡¬tTe¡Su™e +( +$su™e +); + +62 + } +} + +64 +funùiÚ + + $’dTe¡Su™e +( +PHPUn™2_F¿mewÜk_Te¡Su™e + +$su™e +) + +66 +·»Á +:: + `’dTe¡Su™e +( +$su™e +); + +68 +$this +-> +logg” +-> + `’dTe¡Su™e +( +$su™e +); + +69 + } +} + +71 +funùiÚ + + $¡¬tTe¡ +( +PHPUn™2_F¿mewÜk_Te¡ + +$‹¡ +) + +73 +·»Á +:: + `¡¬tTe¡ +( +$‹¡ +); + +75 +$this +-> +logg” +-> + `¡¬tTe¡ +( +$‹¡ +); + +76 + } +} + +78 +funùiÚ + + $’dTe¡ +( +PHPUn™2_F¿mewÜk_Te¡ + +$‹¡ +) + +80 +·»Á +:: + `’dTe¡ +( +$‹¡ +); + +82 +$this +-> +logg” +-> + `’dTe¡ +( +$‹¡ +); + +83 + } +} + +85 +funùiÚ + + $addE¼Ü +( +PHPUn™2_F¿mewÜk_Te¡ + +$‹¡ +, +Exû±iÚ + +$e +) + +87 +·»Á +:: + `addE¼Ü +( +$‹¡ +, +$e +); + +89 +$this +-> +logg” +-> + `addE¼Ü +( +$‹¡ +, +$e +); + +90 + } +} + +92 +funùiÚ + + $addFažu» +( +PHPUn™2_F¿mewÜk_Te¡ + +$‹¡ +, +PHPUn™2_F¿mewÜk_As£¹iÚFažedE¼Ü + +$t +) + +94 +·»Á +:: + `addFažu» +( +$‹¡ +, +$t +); + +96 +$this +-> +logg” +-> + `addFažu» +( +$‹¡ +, +$t +); + +97 + } +} + +99 +funùiÚ + + $addIncom¶‘eTe¡ +( +PHPUn™2_F¿mewÜk_Te¡ + +$‹¡ +, +Exû±iÚ + +$e +) + +101 +·»Á +:: + `addIncom¶‘eTe¡ +( +$‹¡ +, +$e +); + +103 +$this +-> +logg” +-> + `addIncom¶‘eTe¡ +( +$‹¡ +, +$e +); + +104 + } +} + +106 +funùiÚ + + $’dTe¡Run +() + +108 +·»Á +:: + `’dTe¡Run +(); + +110 ià( +$this +-> +out +) + +112 +$this +-> +out +-> + `wr™e +($this-> +logg” +-> + `g‘XML +()); + +113 +$this +-> +out +-> + `þo£ +(); + +115 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit3/PHPUnit3ResultFormatter.php + +1 +out + = +$out +; + +65 +funùiÚ + + $g‘Ex‹nsiÚ +() + +68 + } +} + +75 +funùiÚ + + $£tProjeù +( +Projeù + +$´ojeù +) + +77 +$this +-> +´ojeù + = +$´ojeù +; + +78 + } +} + +80 +funùiÚ + + $g‘P»ã¼edOutfže +() + +83 + } +} + +85 +funùiÚ + + $¡¬tTe¡Run +() + +87 +$this +-> +tim”s + = + `¬¿y +($this-> + `g‘MiüÙime +()); + +88 +$this +-> +runCouÁs + = + `¬¿y +(0); + +89 +$this +-> +çžu»CouÁs + = + `¬¿y +(0); + +90 +$this +-> +”rÜCouÁs + = + `¬¿y +(0); + +91 +$this +-> +šcom¶‘eCouÁs + = + `¬¿y +(0); + +92 +$this +-> +skCouÁs + = + `¬¿y +(0); + +93 + } +} + +95 +funùiÚ + + $’dTe¡Run +() + +97 + } +} + +99 +funùiÚ + + $¡¬tTe¡Su™e +( +PHPUn™_F¿mewÜk_Te¡Su™e + +$su™e +) + +101 +$this +-> +tim”s +[] = $this-> + `g‘MiüÙime +(); + +102 +$this +-> +runCouÁs +[] = 0; + +103 +$this +-> +çžu»CouÁs +[] = 0; + +104 +$this +-> +”rÜCouÁs +[] = 0; + +105 +$this +-> +šcom¶‘eCouÁs +[] = 0; + +106 +$this +-> +skCouÁs +[] = 0; + +107 + } +} + +109 +funùiÚ + + $’dTe¡Su™e +( +PHPUn™_F¿mewÜk_Te¡Su™e + +$su™e +) + +111 +$Ï¡RunCouÁ + = + `¬¿y_pÝ +( +$this +-> +runCouÁs +); + +112 +$this +-> +runCouÁs +[ + `couÁ +($this->runCouÁsè- 1] +ð +$Ï¡RunCouÁ +; + +114 +$Ï¡Fažu»CouÁ + = + `¬¿y_pÝ +( +$this +-> +çžu»CouÁs +); + +115 +$this +-> +çžu»CouÁs +[ + `couÁ +($this->çžu»CouÁsè- 1] +ð +$Ï¡Fažu»CouÁ +; + +117 +$Ï¡E¼ÜCouÁ + = + `¬¿y_pÝ +( +$this +-> +”rÜCouÁs +); + +118 +$this +-> +”rÜCouÁs +[ + `couÁ +($this->”rÜCouÁsè- 1] +ð +$Ï¡E¼ÜCouÁ +; + +120 +$Ï¡Incom¶‘eCouÁ + = + `¬¿y_pÝ +( +$this +-> +šcom¶‘eCouÁs +); + +121 +$this +-> +šcom¶‘eCouÁs +[ + `couÁ +($this->šcom¶‘eCouÁsè- 1] +ð +$Ï¡Incom¶‘eCouÁ +; + +123 +$Ï¡SkCouÁ + = + `¬¿y_pÝ +( +$this +-> +skCouÁs +); + +124 +$this +-> +skCouÁs +[ + `couÁ +($this->skCouÁsè- 1] +ð +$Ï¡SkCouÁ +; + +126 + `¬¿y_pÝ +( +$this +-> +tim”s +); + +127 + } +} + +129 +funùiÚ + + $¡¬tTe¡ +( +PHPUn™_F¿mewÜk_Te¡ + +$‹¡ +) + +131 +$this +-> +runCouÁs +[ + `couÁ +($this->runCounts) - 1]++; + +132 + } +} + +134 +funùiÚ + + $’dTe¡ +( +PHPUn™_F¿mewÜk_Te¡ + +$‹¡ +, +$time +) + +136 + } +} + +138 +funùiÚ + + $addE¼Ü +( +PHPUn™_F¿mewÜk_Te¡ + +$‹¡ +, +Exû±iÚ + +$e +, +$time +) + +140 +$this +-> +”rÜCouÁs +[ + `couÁ +($this->errorCounts) - 1]++; + +141 + } +} + +143 +funùiÚ + + $addFažu» +( +PHPUn™_F¿mewÜk_Te¡ + +$‹¡ +, +PHPUn™_F¿mewÜk_As£¹iÚFažedE¼Ü + +$e +, +$time +) + +145 +$this +-> +çžu»CouÁs +[ + `couÁ +($this->failureCounts) - 1]++; + +146 + } +} + +148 +funùiÚ + + $addIncom¶‘eTe¡ +( +PHPUn™_F¿mewÜk_Te¡ + +$‹¡ +, +Exû±iÚ + +$e +, +$time +) + +150 +$this +-> +šcom¶‘eCouÁs +[ + `couÁ +($this->incompleteCounts) - 1]++; + +151 + } +} + +153 +funùiÚ + + $addSk³dTe¡ +( +PHPUn™_F¿mewÜk_Te¡ + +$‹¡ +, +Exû±iÚ + +$e +, +$time +) + +155 +$this +-> +skCouÁs +[ + `couÁ +($this->skipCounts) - 1]++; + +156 + } +} + +158 +funùiÚ + + $g‘RunCouÁ +() + +160  + `’d +( +$this +-> +runCouÁs +); + +161 + } +} + +163 +funùiÚ + + $g‘Fažu»CouÁ +() + +165  + `’d +( +$this +-> +çžu»CouÁs +); + +166 + } +} + +168 +funùiÚ + + $g‘E¼ÜCouÁ +() + +170  + `’d +( +$this +-> +”rÜCouÁs +); + +171 + } +} + +173 +funùiÚ + + $g‘Incom¶‘eCouÁ +() + +175  + `’d +( +$this +-> +šcom¶‘eCouÁs +); + +176 + } +} + +178 +funùiÚ + + $g‘Sk³dCouÁ +() + +180  + `’d +( +$this +-> +skCouÁs +); + +181 + } +} + +183 +funùiÚ + + $g‘EÏp£dTime +() + +185 ià( + `’d +( +$this +-> +tim”s +)) + +187  +$this +-> + `g‘MiüÙime +(è- + `’d +($this-> +tim”s +); + +193 + } +} + +195 +´iv©e + +funùiÚ + + $g‘MiüÙime +() { + +196 + `li¡ +( +$u£c +, +$£c +èð + `ex¶ode +(' ', + `miüÙime +()); + +197  () +$u£c + + () +$£c +; + +198 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit3/PlainPHPUnit3ResultFormatter.php + +1 +šÃr + = ""; + +51 + } +} + +53 +funùiÚ + + $’dTe¡Su™e +( +PHPUn™_F¿mewÜk_Te¡Su™e + +$su™e +) + +55 +$sb + = "Te¡su™e: " . +$su™e +-> + `g‘Name +() . "\n"; + +56 +$sb +.ð"Te¡ run: " . +$this +-> + `g‘RunCouÁ +(); + +57 +$sb +.ð", Fažu»s: " . +$this +-> + `g‘Fažu»CouÁ +(); + +58 +$sb +.ð", E¼Üs: " . +$this +-> + `g‘E¼ÜCouÁ +(); + +59 +$sb +.ð", Incom¶‘e: " . +$this +-> + `g‘Incom¶‘eCouÁ +(); + +60 +$sb +.ð", Sk³d: " . +$this +-> + `g‘Sk³dCouÁ +(); + +61 +$sb +.ð", Tim–­£d: " . + `¥rštf +('%0.5f', +$this +-> + `g‘EÏp£dTime +()) . " s\n"; + +63 +·»Á +:: + `’dTe¡Su™e +( +$su™e +); + +65 ià( +$this +-> +out + !ð +NULL +) + +67 +$this +-> +out +-> + `wr™e +( +$sb +); + +68 +$this +-> +out +-> + `wr™e +($this-> +šÃr +); + +70 + } +} + +72 +funùiÚ + + $addE¼Ü +( +PHPUn™_F¿mewÜk_Te¡ + +$‹¡ +, +Exû±iÚ + +$e +, +$time +) + +74 +·»Á +:: + `addE¼Ü +( +$‹¡ +, +$e +, +$time +); + +76 +$this +-> + `fÜm©E¼Ü +("ERROR", +$‹¡ +, +$e +); + +77 + } +} + +79 +funùiÚ + + $addFažu» +( +PHPUn™_F¿mewÜk_Te¡ + +$‹¡ +, +PHPUn™_F¿mewÜk_As£¹iÚFažedE¼Ü + +$e +, +$time +) + +81 +·»Á +:: + `addFažu» +( +$‹¡ +, +$e +, +$time +); + +82 +$this +-> + `fÜm©E¼Ü +("FAILED", +$‹¡ +, +$e +); + +83 + } +} + +85 +funùiÚ + + $addIncom¶‘eTe¡ +( +PHPUn™_F¿mewÜk_Te¡ + +$‹¡ +, +Exû±iÚ + +$e +, +$time +) + +87 +·»Á +:: + `addIncom¶‘eTe¡ +( +$‹¡ +, +$e +, +$time +); + +89 +$this +-> + `fÜm©E¼Ü +("INCOMPLETE", +$‹¡ +); + +90 + } +} + +92 +funùiÚ + + $addSk³dTe¡ +( +PHPUn™_F¿mewÜk_Te¡ + +$‹¡ +, +Exû±iÚ + +$e +, +$time +) + +94 +·»Á +:: + `addSk³dTe¡ +( +$‹¡ +, +$e +, +$time +); + +95 +$this +-> + `fÜm©E¼Ü +("SKIPPED", +$‹¡ +); + +96 + } +} + +98 +´iv©e + +funùiÚ + + $fÜm©E¼Ü +( +$ty³ +, +PHPUn™_F¿mewÜk_Te¡ + +$‹¡ +, +Exû±iÚ + +$e + = +nuÎ +) + +100 ià( +$‹¡ + !ð +nuÎ +) + +102 +$this +-> + `’dTe¡ +( +$‹¡ +, + `time +()); + +105 +$this +-> +šÃr +.ð +$‹¡ +-> + `g‘Name +(è. " " . +$ty³ + . "\n"; + +107 ià( +$e + !=ð +nuÎ +) { + +108 +$this +-> +šÃr +.ð +$e +-> + `g‘Mes§ge +() . "\n"; + +109 +$this +-> +šÃr +.ð +PHPUn™_Utž_Fž‹r +:: + `g‘Fž‹»dSckT¿û +( +$e +, +çl£ +) . "\n"; + +111 + } +} + +113 +funùiÚ + + $’dTe¡Run +() + +115 +·»Á +:: + `’dTe¡Run +(); + +117 ià( +$this +-> +out + !ð +NULL +) + +119 +$this +-> +out +-> + `þo£ +(); + +121 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit3/SummaryPHPUnit3ResultFormatter.php + +1 + `g‘Name +(); + +37 +$sb +.ð", Run: " . +$this +-> + `g‘RunCouÁ +(); + +38 +$sb +.ð", Fažu»s: " . +$this +-> + `g‘Fažu»CouÁ +(); + +39 +$sb +.ð", E¼Üs: " . +$this +-> + `g‘E¼ÜCouÁ +(); + +40 +$sb +.ð", Incom¶‘e: " . +$this +-> + `g‘Incom¶‘eCouÁ +(); + +41 +$sb +.ð", Sk³d: " . +$this +-> + `g‘Sk³dCouÁ +(); + +42 +$sb +.ð", Tim–­£d: " . + `¥rštf +('%0.5f', +$this +-> + `g‘EÏp£dTime +()) . " s\n"; + +44 +·»Á +:: + `’dTe¡Su™e +( +$su™e +); + +46 ià( +$this +-> +out + !ð +NULL +) + +48 +$this +-> +out +-> + `wr™e +( +$sb +); + +49 +$this +-> +out +-> + `þo£ +(); + +53 +funùiÚ + + $g‘Ex‹nsiÚ +() + +55  +NULL +; + +56 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit3/XMLPHPUnit3ResultFormatter.php + +1 +logg” + = +Ãw + + `PHPUn™_Utž_Log_XML +( +nuÎ +, +Œue +); + +44 +$this +-> +logg” +-> + `£tWr™eDocum’t +( +çl£ +); + +47 +funùiÚ + + $g‘Ex‹nsiÚ +() + +50 + } +} + +52 +funùiÚ + + $g‘P»ã¼edOutfže +() + +55 + } +} + +57 +funùiÚ + + $¡¬tTe¡Su™e +( +PHPUn™_F¿mewÜk_Te¡Su™e + +$su™e +) + +59 +·»Á +:: + `¡¬tTe¡Su™e +( +$su™e +); + +61 +$this +-> +logg” +-> + `¡¬tTe¡Su™e +( +$su™e +); + +62 + } +} + +64 +funùiÚ + + $’dTe¡Su™e +( +PHPUn™_F¿mewÜk_Te¡Su™e + +$su™e +) + +66 +·»Á +:: + `’dTe¡Su™e +( +$su™e +); + +68 +$this +-> +logg” +-> + `’dTe¡Su™e +( +$su™e +); + +69 + } +} + +71 +funùiÚ + + $¡¬tTe¡ +( +PHPUn™_F¿mewÜk_Te¡ + +$‹¡ +) + +73 +·»Á +:: + `¡¬tTe¡ +( +$‹¡ +); + +75 +$this +-> +logg” +-> + `¡¬tTe¡ +( +$‹¡ +); + +76 + } +} + +78 +funùiÚ + + $’dTe¡ +( +PHPUn™_F¿mewÜk_Te¡ + +$‹¡ +, +$time +) + +80 +·»Á +:: + `’dTe¡ +( +$‹¡ +, +$time +); + +82 +$this +-> +logg” +-> + `’dTe¡ +( +$‹¡ +, +$time +); + +83 + } +} + +85 +funùiÚ + + $addE¼Ü +( +PHPUn™_F¿mewÜk_Te¡ + +$‹¡ +, +Exû±iÚ + +$e +, +$time +) + +87 +·»Á +:: + `addE¼Ü +( +$‹¡ +, +$e +, +$time +); + +89 +$this +-> +logg” +-> + `addE¼Ü +( +$‹¡ +, +$e +, +$time +); + +90 + } +} + +92 +funùiÚ + + $addFažu» +( +PHPUn™_F¿mewÜk_Te¡ + +$‹¡ +, +PHPUn™_F¿mewÜk_As£¹iÚFažedE¼Ü + +$e +, +$time +) + +94 +·»Á +:: + `addFažu» +( +$‹¡ +, +$e +, +$time +); + +96 +$this +-> +logg” +-> + `addFažu» +( +$‹¡ +, +$e +, +$time +); + +97 + } +} + +99 +funùiÚ + + $addIncom¶‘eTe¡ +( +PHPUn™_F¿mewÜk_Te¡ + +$‹¡ +, +Exû±iÚ + +$e +, +$time +) + +101 +·»Á +:: + `addIncom¶‘eTe¡ +( +$‹¡ +, +$e +, +$time +); + +103 +$this +-> +logg” +-> + `addIncom¶‘eTe¡ +( +$‹¡ +, +$e +, +$time +); + +104 + } +} + +106 +funùiÚ + + $’dTe¡Run +() + +108 +·»Á +:: + `’dTe¡Run +(); + +110 ià( +$this +-> +out +) + +112 +$this +-> +out +-> + `wr™e +($this-> +logg” +-> + `g‘XML +()); + +113 +$this +-> +out +-> + `þo£ +(); + +115 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/SimpleTestCountResultFormatter.php + +1 + `g‘Exû±iÚCouÁ +() != 0) + +42  +£lf +:: +ERRORS +; + +44 ià( +$this +-> + `g‘FažCouÁ +() != 0) + +46  +£lf +:: +FAILURES +; + +49  +£lf +:: +SUCCESS +; + +51 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/SimpleTestFormatterElement.php + +1 +ty³ + = +$ty³ +; + +41 ià( +$this +-> +ty³ + == "xml") + +43 +$de¡Fže + = +Ãw + + `PhšgFže +( +$this +-> +toDœ +, 'testsuites.xml'); + +47 ià( +$this +-> +ty³ + == "plain") + +49 +$this +-> +fÜm©‹r + = +Ãw + + `Sim¶eTe¡PϚResuÉFÜm©‹r +(); + +52 ià( +$this +-> +ty³ + == "summary") + +54 +$this +-> +fÜm©‹r + = +Ãw + + `Sim¶eTe¡Summ¬yResuÉFÜm©‹r +(); + +58 +throw + +Ãw + + `BuždExû±iÚ +("FÜm©‹¸'" . +$this +-> +ty³ + . "'‚ot implemented"); + +61 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/SimpleTestPlainResultFormatter.php + +1 +šÃr + = ""; + +51 + } +} + +53 +funùiÚ + + $·štCa£End +( +$‹¡_Çme +) + +55 +·»Á +:: + `·štCa£End +( +$‹¡_Çme +); + +58 ià( +$this +-> + `g‘RunCouÁ +()) + +60 +$sb +.= "Testsuite: $test_name\n"; + +61 +$sb +.ð"Te¡ run: " . +$this +-> + `g‘RunCouÁ +(); + +62 +$sb +.ð", Fažu»s: " . +$this +-> + `g‘Fažu»CouÁ +(); + +63 +$sb +.ð", E¼Üs: " . +$this +-> + `g‘E¼ÜCouÁ +(); + +64 +$sb +.ð", Tim–­£d: " . +$this +-> + `g‘EÏp£dTime +(); + +65 +$sb +.= " sec\n"; + +67 ià( +$this +-> +out + !ð +NULL +) + +69 +$this +-> +out +-> + `wr™e +( +$sb +); + +70 +$this +-> +out +-> + `wr™e +($this-> +šÃr +); + +73 + } +} + +75 +funùiÚ + + $·štE¼Ü +( +$mes§ge +) + +77 +·»Á +:: + `·štE¼Ü +( +$mes§ge +); + +79 +$this +-> + `fÜm©E¼Ü +("ERROR", +$mes§ge +); + +80 + } +} + +82 +funùiÚ + + $·štFaž +( +$mes§ge +) + +84 +·»Á +:: + `·štFaž +( +$mes§ge +); + +86 +$this +-> + `fÜm©E¼Ü +("FAILED", +$mes§ge +); + +87 + } +} + +89 +´iv©e + +funùiÚ + + $fÜm©E¼Ü +( +$ty³ +, +$mes§ge +) + +91 +$this +-> +šÃr +.ð$this-> + `g‘Te¡Name +(è. " " . +$ty³ + . "\n"; + +92 +$this +-> +šÃr +.ð +$mes§ge + . "\n"; + +93 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/SimpleTestResultFormatter.php + +1 +out + = +$out +; + +63 +funùiÚ + + $g‘Ex‹nsiÚ +() + +66 + } +} + +73 +funùiÚ + + $£tProjeù +( +Projeù + +$´ojeù +) + +75 +$this +-> +´ojeù + = +$´ojeù +; + +76 + } +} + +78 +funùiÚ + + $g‘P»ã¼edOutfže +() + +81 + } +} + +83 +funùiÚ + + $·štM‘hodS¹ +( +$‹¡_Çme +) + +85 +·»Á +:: + `·štM‘hodS¹ +( +$‹¡_Çme +); + +87 +$this +-> +cu¼’tTe¡ + = +$‹¡_Çme +; + +88 + } +} + +90 +funùiÚ + + $·štM‘hodEnd +( +$‹¡_Çme +) + +92 +·»Á +:: + `·štM‘hodEnd +( +$‹¡_Çme +); + +94 +$this +-> +runCouÁ +++; + +95 + } +} + +97 +funùiÚ + + $·štCa£S¹ +( +$‹¡_Çme +) + +99 +·»Á +:: + `·štCa£S¹ +( +$‹¡_Çme +); + +101 +$this +-> +runCouÁ + = 0; + +102 +$this +-> +çžu»CouÁ + = 0; + +103 +$this +-> +”rÜCouÁ + = 0; + +105 +$this +-> +tim” + = +Ãw + + `Tim” +(); + +106 +$this +-> +tim” +-> + `¡¬t +(); + +107 + } +} + +109 +funùiÚ + + $·štCa£End +( +$‹¡_Çme +) + +111 +·»Á +:: + `·štCa£End +( +$‹¡_Çme +); + +113 +$this +-> +tim” +-> + `¡Ý +(); + +114 + } +} + +116 +funùiÚ + + $·štE¼Ü +( +$mes§ge +) + +118 +·»Á +:: + `·štE¼Ü +( +$mes§ge +); + +120 +$this +-> +”rÜCouÁ +++; + +121 + } +} + +123 +funùiÚ + + $·štFaž +( +$mes§ge +) + +125 +·»Á +:: + `·štFaž +( +$mes§ge +); + +127 +$this +-> +çžu»CouÁ +++; + +128 + } +} + +130 +funùiÚ + + $g‘RunCouÁ +() + +132  +$this +-> +runCouÁ +; + +133 + } +} + +135 +funùiÚ + + $g‘Fažu»CouÁ +() + +137  +$this +-> +çžu»CouÁ +; + +138 + } +} + +140 +funùiÚ + + $g‘E¼ÜCouÁ +() + +142  +$this +-> +”rÜCouÁ +; + +143 + } +} + +145 +funùiÚ + + $g‘Te¡Name +() + +147  +$this +-> +cu¼’tTe¡ +; + +148 + } +} + +150 +funùiÚ + + $g‘EÏp£dTime +() + +152 ià( +$this +-> +tim” +) + +154  +$this +-> +tim” +-> + `g‘EÏp£dTime +(); + +160 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/SimpleTestSummaryResultFormatter.php + +1 + `g‘RunCouÁ +()) + +41 +$sb +.ð"Te¡ run: " . +$this +-> + `g‘RunCouÁ +(); + +42 +$sb +.ð", Fažu»s: " . +$this +-> + `g‘Fažu»CouÁ +(); + +43 +$sb +.ð", E¼Üs: " . +$this +-> + `g‘E¼ÜCouÁ +(); + +44 +$sb +.ð", Tim–­£d: " . +$this +-> + `g‘EÏp£dTime +(); + +45 +$sb +.= " sec\n"; + +47 ià( +$this +-> +out + !ð +NULL +) + +49 +$this +-> +out +-> + `wr™e +( +$sb +); + +53 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/SimpleTestTask.php + +1 + `g‘LoÿtiÚ +()); + +58 +»quœe_Úû + 'simpletest/reporter.php'; + +59 +»quœe_Úû + 'simpletest/xml.php'; + +60 +»quœe_Úû + 'simpletest/test_case.php'; + +61 +»quœe_Úû + 'phing/tasks/ext/simpletest/SimpleTestCountResultFormatter.php'; + +62 +»quœe_Úû + 'phing/tasks/ext/simpletest/SimpleTestFormatterElement.php'; + +65 +funùiÚ + + $£tFažu»´Ý”ty +( +$v®ue +) + +67 +$this +-> +çžu»´Ý”ty + = +$v®ue +; + +68 + } +} + +70 +funùiÚ + + $£tE¼Ü´Ý”ty +( +$v®ue +) + +72 +$this +-> +”rܴݔty + = +$v®ue +; + +73 + } +} + +75 +funùiÚ + + $£tH®tڔrÜ +( +$v®ue +) + +77 +$this +-> +h®tڔrÜ + = +$v®ue +; + +78 + } +} + +80 +funùiÚ + + $£tH®tÚçžu» +( +$v®ue +) + +82 +$this +-> +h®tÚçžu» + = +$v®ue +; + +83 + } +} + +85 +funùiÚ + + $£tPrštsumm¬y +( +$´štsumm¬y +) + +87 +$this +-> +´štsumm¬y + = +$´štsumm¬y +; + +88 + } +} + +95 +funùiÚ + + $addFÜm©‹r +( +Sim¶eTe¡FÜm©‹rEËm’t + +$ã +) + +97 +$this +-> +fÜm©‹rs +[] = +$ã +; + +98 + } +} + +105 +funùiÚ + + $addFžeS‘ +( +FžeS‘ + +$fže£t +) + +107 +$this +-> +fže£ts +[] = +$fže£t +; + +108 + } +} + +116 +´iv©e + +funùiÚ + + $g‘Fž’ames +() + +118 +$fž’ames + = + `¬¿y +(); + +120 + `fܗch + ( +$this +-> +fže£ts + +as + +$fže£t +) + +122 +$ds + = +$fže£t +-> + `g‘DœeùÜySÿ” +( +$this +-> +´ojeù +); + +123 +$ds +-> + `sÿn +(); + +125 +$fžes + = +$ds +-> + `g‘InþudedFžes +(); + +127 + `fܗch + ( +$fžes + +as + +$fže +) + +129 ià( + `¡r¡r +( +$fže +, ".php")) + +131 +$fž’ames +[] = +$ds +-> + `g‘Ba£Dœ +(è. "/" . +$fže +; + +136  +$fž’ames +; + +137 + } +} + +144 +funùiÚ + + $maš +() + +146 +$group + = +Ãw + + `GroupTe¡ +(); + +148 +$fž’ames + = +$this +-> + `g‘Fž’ames +(); + +150 + `fܗch + ( +$fž’ames + +as + +$‹¡fže +) + +152 +$group +-> + `addTe¡Fže +( +$‹¡fže +); + +155 ià( +$this +-> +´štsumm¬y +) + +157 +$ã + = +Ãw + + `Sim¶eTe¡FÜm©‹rEËm’t +(); + +158 +$ã +-> + `£tTy³ +('summary'); + +159 +$ã +-> + `£tU£Fže +( +çl£ +); + +160 +$this +-> +fÜm©‹rs +[] = +$ã +; + +163 + `fܗch + ( +$this +-> +fÜm©‹rs + +as + +$ã +) + +165 +$fÜm©‹r + = +$ã +-> + `g‘FÜm©‹r +(); + +166 +$fÜm©‹r +-> + `£tProjeù +( +$this +-> + `g‘Projeù +()); + +168 ià( +$ã +-> + `g‘U£Fže +()) + +170 +$de¡Fže + = +Ãw + + `PhšgFže +( +$ã +-> + `g‘ToDœ +(), $ã-> + `g‘Outfže +()); + +172 +$wr™” + = +Ãw + + `FžeWr™” +( +$de¡Fže +-> + `g‘AbsÞu‹P©h +()); + +174 +$fÜm©‹r +-> + `£tOuut +( +$wr™” +); + +178 +$fÜm©‹r +-> + `£tOuut +( +$this +-> + `g‘DeçuÉOuut +()); + +182 +$this +-> + `execu‹ +( +$group +); + +184 ià( +$this +-> +‹¡çžed +) + +186 +throw + +Ãw + + `BuždExû±iÚ +("One or moreests failed"); + +188 + } +} + +190 +´iv©e + +funùiÚ + + $execu‹ +( +$su™e +) + +192 +$couÁ” + = +Ãw + + `Sim¶eTe¡CouÁResuÉFÜm©‹r +(); + +193 +$»p܋r + = +Ãw + + `MuɝËR•Ü‹r +(); + +194 +$»p܋r +-> + `©chR•Ü‹r +( +$couÁ” +); + +196 + `fܗch + ( +$this +-> +fÜm©‹rs + +as + +$ã +) + +198 +$fÜm©‹r + = +$ã +-> + `g‘FÜm©‹r +(); + +200 +$»p܋r +-> + `©chR•Ü‹r +( +$fÜm©‹r +); + +203 +$su™e +-> + `run +( +$»p܋r +); + +205 +$»tcode + = +$couÁ” +-> + `g‘R‘Code +(); + +207 ià( +$»tcode + =ð +Sim¶eTe¡CouÁResuÉFÜm©‹r +:: +ERRORS +) + +209 ià( +$this +-> +”rܴݔty +) + +211 +$this +-> +´ojeù +-> + `£tNewPrݔty +($this-> +”rܴݔty +, +Œue +); + +214 ià( +$this +-> +h®tڔrÜ +) + +216 +$this +-> +‹¡çžed + = +Œue +; + +219 + `–£if + ( +$»tcode + =ð +Sim¶eTe¡CouÁResuÉFÜm©‹r +:: +FAILURES +) + +221 ià( +$this +-> +çžu»´Ý”ty +) + +223 +$this +-> +´ojeù +-> + `£tNewPrݔty +($this-> +çžu»´Ý”ty +, +Œue +); + +226 ià( +$this +-> +h®tÚçžu» +) + +228 +$this +-> +‹¡çžed + = +Œue +; + +231 + } +} + +233 +´iv©e + +funùiÚ + + $g‘DeçuÉOuut +() + +235  +Ãw + + `LogWr™” +( +$this +); + +236 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/SvnBaseTask.php + +1 +wÜkšgCÝy + = +$wÜkšgCÝy +; + +71 + } +} + +76 +funùiÚ + + $g‘WÜkšgCÝy +() + +78  +$this +-> +wÜkšgCÝy +; + +79 + } +} + +84 +funùiÚ + + $£tR•os™ÜyU¾ +( +$»pos™ÜyU¾ +) + +86 +$this +-> +»pos™ÜyU¾ + = +$»pos™ÜyU¾ +; + +87 + } +} + +92 +funùiÚ + + $g‘R•os™ÜyU¾ +() + +94  +$this +-> +»pos™ÜyU¾ +; + +95 + } +} + +100 +funùiÚ + + $£tSvnP©h +( +$svnP©h +) + +102 +$this +-> +svnP©h + = +$svnP©h +; + +103 + } +} + +108 +funùiÚ + + $g‘SvnP©h +() + +110  +$this +-> +svnP©h +; + +111 + } +} + +120 +funùiÚ + + $£tToDœ +( +$toDœ +) + +122 +$this +-> +toDœ + = +$toDœ +; + +123 + } +} + +128 +funùiÚ + + $g‘ToDœ +() + +130  +$this +-> +toDœ +; + +131 + } +} + +140 +funùiÚ + + $£tFÜû +( +$v®ue +) + +142 +$this +-> +svnSw™ches +['fÜû'] = +$v®ue +; + +143 + } +} + +148 +funùiÚ + + $g‘FÜû +() + +150  + `is£t +Ð +$this +-> +svnSw™ches +['force'] ) ? $this->svnSwitches['force'] : ''; + +151 + } +} + +156 +funùiÚ + + $£tU£ºame +( +$v®ue +) + +158 +$this +-> +svnSw™ches +['u£ºame'] = +$v®ue +; + +159 + } +} + +164 +funùiÚ + + $g‘U£ºame +() + +166  + `is£t +Ð +$this +-> +svnSw™ches +['username'] ) ? $this->svnSwitches['username'] : ''; + +167 + } +} + +172 +funùiÚ + + $£tPasswÜd +( +$v®ue +) + +174 +$this +-> +svnSw™ches +['·sswÜd'] = +$v®ue +; + +175 + } +} + +180 +funùiÚ + + $g‘PasswÜd +() + +182  + `is£t +Ð +$this +-> +svnSw™ches +['password'] ) ? $this->svnSwitches['password'] : ''; + +183 + } +} + +188 +funùiÚ + + $£tNoCache +( +$v®ue +) + +190 +$this +-> +svnSw™ches +['no-auth-ÿche'] = +$v®ue +; + +191 + } +} + +196 +funùiÚ + + $g‘NoCache +() + +198  + `is£t +Ð +$this +-> +svnSw™ches +['no-auth-cache'] ) ? $this->svnSwitches['no-auth-cache'] : ''; + +199 + } +} + +204 +funùiÚ + + $£tRecursive +( +$v®ue +) + +206 +$this +-> +svnSw™ches +['nÚ-»cursive'] = + `is_boÞ +( +$v®ue +è? !$v®u: +TRUE +; + +207 + } +} + +212 +funùiÚ + + $g‘Recursive +() + +214  + `is£t +Ð +$this +-> +svnSw™ches +['non-recursive'] ) ? $this->svnSwitches['non-recursive'] : ''; + +215 + } +} + +220 +funùiÚ + + $£tIgnÜeEx‹º®s +( +$v®ue +) + +222 +$this +-> +svnSw™ches +['ignÜe-ex‹º®s'] = +$v®ue +; + +223 + } +} + +228 +funùiÚ + + $g‘IgnÜeEx‹º®s +() + +230  + `is£t +Ð +$this +-> +svnSw™ches +['ignore-externals'] ) ? $this->svnSwitches['ignore-externals'] : ''; + +231 + } +} + +239 +´Ùeùed + +funùiÚ + + $£tup +( +$mode +) + +241 +$this +-> +mode + = +$mode +; + +245 +$ÝtiÚs + = + `¬¿y +('ãtchmode' => +VERSIONCONTROL_SVN_FETCHMODE_ASSOC +, 'svn_·th' => +$this +-> + `g‘SvnP©h +()); + +248 +$this +-> +svn + = +V”siÚCڌÞ_SVN +:: + `çùÜy +( +$mode +, +$ÝtiÚs +); + +250 ià(! + `em±y +( +$this +-> +»pos™ÜyU¾ +)) + +252 +$this +-> +svnArgs + = + `¬¿y +($this-> +»pos™ÜyU¾ +); + +255 ià(! + `em±y +( +$this +-> +wÜkšgCÝy +)) + +257 ià( + `is_dœ +( +$this +-> +wÜkšgCÝy +)) + +259 ià( + `š_¬¿y +(".svn", + `sÿndœ +( +$this +-> +wÜkšgCÝy +))) + +261 +$this +-> +svnArgs + = + `¬¿y +($this-> +wÜkšgCÝy +); + +265 +throw + +Ãw + + `BuždExû±iÚ +("'". +$this +-> +wÜkšgCÝy +."' doesn't seemo be‡ working copy"); + +269 ià( +$mode +=='info' ) + +271 ià( + `is_fže +( +$this +-> +wÜkšgCÝy +)) + +273 +$this +-> +svnArgs + = + `¬¿y +($this-> +wÜkšgCÝy +); + +277 +throw + +Ãw + + `BuždExû±iÚ +("'". +$this +-> +wÜkšgCÝy +."' is‚ot‡ directory‚or‡ file"); + +282 +throw + +Ãw + + `BuždExû±iÚ +("'". +$this +-> +wÜkšgCÝy +."' is‚ot‡ directory"); + +285 + } +} + +294 +´Ùeùed + +funùiÚ + +run +( +$¬gs + = +¬¿y +(), +$sw™ches + = + $¬¿y +()) + +296 +$svn¡ack + = +PEAR_E¼ÜSck +:: + `sšgËtÚ +('VersionControl_SVN'); + +298 +$‹mpArgs + = +$this +-> +svnArgs +; + +300 +$‹mpArgs + = + `¬¿y_m”ge +($‹mpArgs, +$¬gs +); + +302 +$‹mpSw™ches + = +$this +-> +svnSw™ches +; + +304 +$‹mpSw™ches + = + `¬¿y_m”ge +($‹mpSw™ches, +$sw™ches +); + +306 ià( +$ouut + = +$this +-> +svn +-> + `run +( +$‹mpArgs +, +$‹mpSw™ches +)) + +308  +$ouut +; + +312 ià( + `couÁ +( +$”rs + = +$svn¡ack +-> + `g‘E¼Üs +())) + +314 +$”r + = + `cu¼’t +( +$”rs +); + +316 +throw + +Ãw + + `BuždExû±iÚ +("FažedØruÀth'svÀ" . +$this +-> +mode + . "' commªd: " . +$”r +['message']); + +319 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/SvnCheckoutTask.php + +1 + `£tup +('checkout'); + +44 +$this +-> + `log +("Checkšg ouˆSVN„•os™ÜyØ'" . $this-> + `g‘ToDœ +() . "'"); + +46 +$this +-> + `run +( + `¬¿y +($this-> + `g‘ToDœ +())); + +48 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/SvnExportTask.php + +1 + `£tup +('export'); + +55 +$this +-> + `log +("ExpÜtšg SVN„•os™ÜyØ'" . $this-> + `g‘ToDœ +() . "'"); + +58 +$sw™ches + = + `¬¿y +( + +59 'r' => +$this +-> +»visiÚ +, + +62 +$this +-> + `run +( + `¬¿y +($this-> + `g‘ToDœ +()), +$sw™ches +); + +65 +public + +funùiÚ + + $£tRevisiÚ +( +$»visiÚ +) + +67 +$this +-> +»visiÚ + = +$»visiÚ +; + +68 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/SvnLastRevisionTask.php + +1 +´Ý”tyName + = +$´Ý”tyName +; + +49 +funùiÚ + + $g‘PrݔtyName +() + +51  +$this +-> +´Ý”tyName +; + +52 + } +} + +59 +funùiÚ + + $maš +() + +61 +$this +-> + `£tup +('info'); + +63 +$ouut + = +$this +-> + `run +(); + +65 ià( + `´eg_m©ch +('/Rev:[\s]+([\d]+)/', +$ouut +, +$m©ches +)) + +67 +$this +-> +´ojeù +-> + `£tPrݔty +($this-> + `g‘PrݔtyName +(), +$m©ches +[1]); + +71 +throw + +Ãw + + `BuždExû±iÚ +("Failedo…arsehe output of 'svn info'."); + +73 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/SvnUpdateTask.php + +1 + `£tup +('update'); + +44 +$this +-> + `log +("Upd©šg SVN„•os™Üy‡ˆ'" . $this-> + `g‘ToDœ +() . "'"); + +46 +$this +-> + `run +( + `¬¿y +($this-> + `g‘ToDœ +())); + +48 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/AdhocTask.php + +1 + `execu‹ +(); + +52 ià( +$this +-> +ÃwCÏs£s +) { + +53 + `fܗch +( +$this +-> +ÃwCÏs£s + +as + +$þas¢ame +) { + +54 +$this +-> + `log +("Added‡dhoøþas " . +$þas¢ame +, +Projeù +:: +MSG_VERBOSE +); + +57 +$this +-> + `log +("Adhoøskƒxecu‹d buˆdid‚Ù„esuÉ iÀªy‚ew cÏs£s.", +Projeù +:: +MSG_VERBOSE +); + +65 +´Ùeùed + +funùiÚ + + $g‘NewCÏs£s +() { + +66  +$this +-> +ÃwCÏs£s +; + +67 + } +} + +74 +´Ùeùed + +funùiÚ + + $execu‹ +() { + +75 +$þas£s + = + `g‘_deþ¬ed_þas£s +(); + +76 + `ev® +( +$this +-> +süt +); + +77 +$this +-> +ÃwCÏs£s + = + `¬¿y_diff +( + `g‘_deþ¬ed_þas£s +(), +$þas£s +); + +78 + } +} + +84 +public + +funùiÚ + + $addText +( +$süt +) { + +85 +$this +-> +süt + = +$süt +; + +86 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/AdhocTaskdefTask.php + +1 +Çme + = +$Çme +; + +68 +public + +funùiÚ + + $maš +() { + +69 ià( +$this +-> +Çme + ==ð +nuÎ +) { + +70 +throw + +Ãw + + `BuždExû±iÚ +("ThÇm©Œibu‹ i »quœed f܇dhoøsk defš™iÚ.", +$this +-> +loÿtiÚ +); + +73 +$this +-> + `execu‹ +(); + +75 +$þas£s + = +$this +-> + `g‘NewCÏs£s +(); + +76 ià( + `couÁ +( +$þas£s +) !== 1) { + +77 +throw + +Ãw + + `BuždExû±iÚ +("You must define one (and only one) class for AdhocTaskdefTask."); + +79 +$þas¢ame + = + `¬¿y_shiá +( +$þas£s +); + +82 +$t + = +Ãw + + `$þas¢ame +(); + +83 ià(!( +$t + +š¡ªûof + +Task +)) { + +84 +throw + +Ãw + + `BuždExû±iÚ +("Thadhoøþas you defšed mu¡ bª in¡ªû oàphšg.Task", +$this +-> +loÿtiÚ +); + +87 +$this +-> + `log +("Task " . $this-> +Çme + . " wžÈbhªdËd by cÏs " . +$þas¢ame +, +Projeù +:: +MSG_VERBOSE +); + +88 +$this +-> +´ojeù +-> + `addTaskDefš™iÚ +($this-> +Çme +, +$þas¢ame +); + +89 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/AdhocTypedefTask.php + +1 +Çme + = +$Çme +; + +48 +public + +funùiÚ + + $maš +() { + +50 ià( +$this +-> +Çme + ==ð +nuÎ +) { + +51 +throw + +Ãw + + `BuždExû±iÚ +("ThÇm©Œibu‹ i »quœed f܇dhoøsk defš™iÚ.", +$this +-> +loÿtiÚ +); + +54 +$this +-> + `execu‹ +(); + +56 +$þas£s + = +$this +-> + `g‘NewCÏs£s +(); + +57 ià( + `couÁ +( +$þas£s +) !== 1) { + +58 +throw + +Ãw + + `BuždExû±iÚ +("You must define one (and only one) class for AdhocTypedefTask."); + +60 +$þas¢ame + = + `¬¿y_shiá +( +$þas£s +); + +63 +$t + = +Ãw + + `$þas¢ame +(); + +64 ià(!( +$t + +š¡ªûof + +ProjeùCompڒt +)) { + +65 +throw + +Ãw + + `BuždExû±iÚ +("Thadhoøþas you defšed mu¡ bª in¡ªû oàphšg.ProjeùCompڒt", +$this +-> +loÿtiÚ +); + +68 +$this +-> + `log +("D©©y³ " . $this-> +Çme + . " wžÈbhªdËd by cÏs " . +$þas¢ame +, +Projeù +:: +MSG_VERBOSE +); + +69 +$this +-> +´ojeù +-> + `addD©aTy³Defš™iÚ +($this-> +Çme +, +$þas¢ame +); + +70 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/AppendTask.php + +1 +fže + = +$f +; + +82 +funùiÚ + + $£tTo +( +PhšgFže + +$f +) { + +83 +$this +-> + `log +("Th'to'‡‰ribu‹ i d•»ÿ‹d iÀçvÜ oà'de¡Fže';…Ëa£ upd©you¸code.", +Projeù +:: +MSG_WARN +); + +84 +$this +-> +to + = +$f +; + +85 + } +} + +91 +funùiÚ + + $£tDe¡Fže +( +PhšgFže + +$f +) { + +92 +$this +-> +to + = +$f +; + +93 + } +} + +99 +funùiÚ + + $ü—‹FžeLi¡ +() { + +100 +$num + = + `¬¿y_push +( +$this +-> +fž–i¡s +, +Ãw + + `FžeLi¡ +()); + +101  +$this +-> +fž–i¡s +[ +$num +-1]; + +102 + } +} + +109 +funùiÚ + + $ü—‹FžeS‘ +() { + +110 +$num + = + `¬¿y_push +( +$this +-> +fže£ts +, +Ãw + + `FžeS‘ +()); + +111  +$this +-> +fže£ts +[ +$num +-1]; + +112 + } +} + +119 +funùiÚ + + $ü—‹Fž‹rChaš +() { + +120 +$num + = + `¬¿y_push +( +$this +-> +fž‹rChašs +, +Ãw + + `Fž‹rChaš +($this-> +´ojeù +)); + +121  +$this +-> +fž‹rChašs +[ +$num +-1]; + +122 + } +} + +128 +funùiÚ + + $£tText +( +$txt +) { + +129 +$this +-> +‹xt + = ( +¡ršg +è +$txt +; + +130 + } +} + +136 +funùiÚ + + $addText +( +$txt +) { + +137 +$this +-> +‹xt + = ( +¡ršg +è +$txt +; + +138 + } +} + +142 +funùiÚ + + $maš +() { + +144 ià( +$this +-> +to + ==ð +nuÎ +) { + +145 +throw + +Ãw + + `BuždExû±iÚ +("You must specifyhe 'destFile'‡ttribute"); + +148 ià( +$this +-> +fže + ==ð +nuÎ + && + `em±y +($this-> +fž–i¡s +è&&ƒm±y($this-> +fže£ts +è&& $this-> +‹xt + ===‚ull) { + +149 +throw + +Ãw + + `BuždExû±iÚ +("You must specify‡ file, use‡ filelist, or specify‡ext value."); + +152 ià( +$this +-> +‹xt + !=ð +nuÎ + && ($this-> +fže + !=ðnuÎ || ! + `em±y +($this-> +fž–i¡s +))) { + +153 +throw + +Ãw + + `BuždExû±iÚ +("Cannot useext‡ttribute in conjunction with file or filelists."); + +157 +$wr™” + = +Ãw + + `FžeWr™” +( +$this +-> +to +, +$­³nd += +Œue +); + +159 ià( +$this +-> +‹xt + !=ð +nuÎ +) { + +162 +$this +-> + `log +("Aµ’dšg sŒšgØ" . $this-> +to +-> + `g‘P©h +()); + +166 +$lšes + = + `ex¶ode +("\n", +$this +-> +‹xt +); + +167 + `fܗch +( +$lšes + +as + +$lše +) { + +168 +$this +-> + `log +( +$lše +, +Projeù +:: +MSG_VERBOSE +); + +171 +$wr™” +-> + `wr™e +( +$this +-> +‹xt +); + +176 ià( +$this +-> +fže + !=ð +nuÎ +) { + +177 +Œy + { + +178 +$this +-> + `­³ndFže +( +$wr™” +, $this-> +fže +); + +179 } + `ÿtch + ( +Exû±iÚ + +$iÛ +) { + +180 +$this +-> + `log +("UÇbˁح³nd cڋÁ oàfž" . $this-> +fže +-> + `g‘AbsÞu‹P©h +(è. ": " . +$iÛ +-> + `g‘Mes§ge +(), +Projeù +:: +MSG_WARN +); + +185 + `fܗch +( +$this +-> +fž–i¡s + +as + +$æ +) { + +186 +Œy + { + +187 +$fžes + = +$æ +-> + `g‘Fžes +( +$this +-> +´ojeù +); + +188 +$this +-> + `­³ndFžes +( +$wr™” +, +$fžes +, +$æ +-> + `g‘Dœ +($this-> +´ojeù +)); + +189 } + `ÿtch + ( +BuždExû±iÚ + +$be +) { + +190 +$this +-> + `log +( +$be +-> + `g‘Mes§ge +(), +Projeù +:: +MSG_WARN +); + +195 + `fܗch +( +$this +-> +fže£ts + +as + +$fs +) { + +196 +Œy + { + +197 +$fžes + = +$fs +-> + `g‘DœeùÜySÿ” +( +$this +-> +´ojeù +)-> + `g‘InþudedFžes +(); + +198 +$this +-> + `­³ndFžes +( +$wr™” +, +$fžes +, +$fs +-> + `g‘Dœ +($this-> +´ojeù +)); + +199 } + `ÿtch + ( +BuždExû±iÚ + +$be +) { + +200 +$this +-> + `log +( +$be +-> + `g‘Mes§ge +(), +Projeù +:: +MSG_WARN +); + +206 +$wr™” +-> + `þo£ +(); + +207 + } +} + +215 +´iv©e + +funùiÚ + + $­³ndFžes +( +FžeWr™” + +$wr™” +, +$fžes +, +PhšgFže + +$dœ +) { + +216 ià(! + `em±y +( +$fžes +)) { + +217 +$this +-> + `log +("A‰em±šgØ­³nd " . + `couÁ +( +$fžes +è. " fžes" .( +$dœ + !=ð +nuÎ + ? ", usšg ba£dœ " . $dœ-> + `g‘P©h +(): "")); + +218 +$ba£ÇmeSlÙ + = +Regi¡” +:: + `g‘SlÙ +("task.append.current_file"); + +219 +$·thSlÙ + = +Regi¡” +:: + `g‘SlÙ +("task.append.current_file.path"); + +220 + `fܗch +( +$fžes + +as + +$fž’ame +) { + +221 +Œy + { + +222 +$f + = +Ãw + + `PhšgFže +( +$dœ +, +$fž’ame +); + +223 +$ba£ÇmeSlÙ +-> + `£tV®ue +( +$fž’ame +); + +224 +$·thSlÙ +-> + `£tV®ue +( +$f +-> + `g‘P©h +()); + +225 +$this +-> + `­³ndFže +( +$wr™” +, +$f +); + +226 } + `ÿtch + ( +Exû±iÚ + +$iÛ +) { + +227 +$this +-> + `log +("UÇbˁح³nd cڋÁ oàfž" . +$f +-> + `g‘AbsÞu‹P©h +(è. ": " . +$iÛ +-> + `g‘Mes§ge +(), +Projeù +:: +MSG_WARN +); + +231 + } +} + +233 +´iv©e + +funùiÚ + + $­³ndFže +( +FžeWr™” + +$wr™” +, +PhšgFže + +$f +) { + +234 +$š + = +FžeUtžs +:: + `g‘ChašedR—d” +( +Ãw + + `FžeR—d” +( +$f +), +$this +-> +fž‹rChašs +, $this-> +´ojeù +); + +235 -1 !=ð( +$bufãr + = +$š +-> + `»ad +())) { + +236 +$wr™” +-> + `wr™e +( +$bufãr +); + +238 +$this +-> + `log +("Aµ’dšg cڋÁ oà" . +$f +-> + `g‘P©h +(è. "Ø" . $this-> +to +->getPath()); + +239 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/AvailableTask.php + +1 +´Ý”ty + = ( +¡ršg +è +$´Ý”ty +; + +53 +funùiÚ + + $£tV®ue +( +$v®ue +) { + +54 +$this +-> +v®ue + = ( +¡ršg +è +$v®ue +; + +55 + } +} + +57 +funùiÚ + + $£tFže +( +PhšgFže + +$fže +) { + +58 +$this +-> +fže + = +$fže +; + +59 + } +} + +61 +funùiÚ + + $£tResourû +( +$»sourû +) { + +62 +$this +-> +»sourû + = ( +¡ršg +è +$»sourû +; + +63 + } +} + +65 +funùiÚ + + $£tTy³ +( +$ty³ +) { + +66 +$this +-> +ty³ + = ( +¡ršg +è + `¡¹Þow” +( +$ty³ +); + +67 + } +} + +69 +funùiÚ + + $maš +() { + +70 ià( +$this +-> +´Ý”ty + ==ð +nuÎ +) { + +71 +throw + +Ãw + + `BuždExû±iÚ +("´Ý”ty‡‰ribu‹ i »quœed", +$this +-> +loÿtiÚ +); + +73 ià( +$this +-> + `ev®u©e +()) { + +74 +$this +-> +´ojeù +-> + `£tPrݔty +($this-> +´Ý”ty +, $this-> +v®ue +); + +76 + } +} + +78 +funùiÚ + + $ev®u©e +() { + +79 ià( +$this +-> +fže + ==ð +nuÎ + && $this-> +»sourû + ===‚ull) { + +80 +throw + +Ãw + + `BuždExû±iÚ +("AˆËa¡ oà oà(fže|»sourûèi »quœed", +$this +-> +loÿtiÚ +); + +83 ià( +$this +-> +ty³ + !=ð +nuÎ + && ($this->type !== "file" && $this->type !== "dir")) { + +84 +throw + +Ãw + + `BuždExû±iÚ +("Ty³ mu¡ bÚoàe™h” dœ o¸fže", +$this +-> +loÿtiÚ +); + +87 ià(( +$this +-> +fže + !=ð +nuÎ +è&& !$this-> + `_checkFže +()) { + +88 +$this +-> + `log +("UÇbˁØfšd " . $this-> +fže +-> + `__toSŒšg +(è. "Ø£ˆ´Ý”ty " . $this-> +´Ý”ty +, +Projeù +:: +MSG_VERBOSE +); + +89  +çl£ +; + +92 ià(( +$this +-> +»sourû + !=ð +nuÎ +è&& !$this-> + `_checkResourû +($this->resource)) { + +93 +$this +-> + `log +("UÇbˁØlßd„esourû " . $this-> +»sourû + . "Ø£ˆ´Ý”ty " . $this-> +´Ý”ty +, +Projeù +:: +MSG_VERBOSE +); + +94  +çl£ +; + +97  +Œue +; + +98 + } +} + +101 +´iv©e + +funùiÚ + + $_checkFže +() { + +102 ià( +$this +-> +fž•©h + ==ð +nuÎ +) { + +103  +$this +-> + `_checkFže1 +($this-> +fže +); + +105 +$·ths + = +$this +-> +fž•©h +-> + `li¡Dœ +(); + +106  +$i +=0, +$pút += + `couÁ +( +$·ths +); $i < $pcnt; $i++) { + +107 +$this +-> + `log +("S—rchšg " . +$·ths +[ +$i +], +Projeù +:: +MSG_VERBOSE +); + +108 +$tmp + = +Ãw + + `PhšgFže +( +$·ths +[ +$i +], +$this +-> +fže +-> + `g‘Name +()); + +109 if( +$tmp +-> + `isFže +()) { + +110  +Œue +; + +114  +çl£ +; + +115 + } +} + +117 +´iv©e + +funùiÚ + + $_checkFže1 +( +PhšgFže + +$fže +) { + +118 ià( +$this +-> +ty³ + !=ð +nuÎ +) { + +119 ià( +$this +-> +ty³ + === "dir") { + +120  +$fže +-> + `isDœeùÜy +(); + +121 } ià( +$this +-> +ty³ + === "file") { + +122  +$fže +-> + `isFže +(); + +125  +$fže +-> + `exi¡s +(); + +126 + } +} + +128 +´iv©e + +funùiÚ + + $_checkResourû +( +$»sourû +) { + +129 ià( +nuÎ + !ð( +$»sourûP©h + = +Phšg +:: + `g‘ResourûP©h +( +$»sourû +))) { + +130  +$this +-> + `_checkFže1 +( +Ãw + + `PhšgFže +( +$»sourûP©h +)); + +132  +çl£ +; + +134 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/ChmodTask.php + +1 +çžÚ”rÜ + = +$boÞ +; + +59 +funùiÚ + + $£tQu›t +( +$boÞ +) { + +60 +$this +-> +qu›t + = +$boÞ +; + +61 ià( +$this +-> +qu›t +) { + +62 +$this +-> +çžÚ”rÜ + = +çl£ +; + +64 + } +} + +70 +funùiÚ + + $£tV”bo£ +( +$boÞ +) { + +71 +$this +-> +v”bo£ + = ( +boÞ +) +$boÞ +; + +72 + } +} + +78 +funùiÚ + + $£tFže +( +PhšgFže + +$fže +) { + +79 +$this +-> +fže + = +$fže +; + +80 + } +} + +82 +funùiÚ + + $£tMode +( +$¡r +) { + +83 +$this +-> +mode + = +$¡r +; + +84 + } +} + +89 +funùiÚ + + $ü—‹FžeS‘ +() { + +90 +$num + = + `¬¿y_push +( +$this +-> +fže£ts +, +Ãw + + `FžeS‘ +()); + +91  +$this +-> +fže£ts +[ +$num +-1]; + +92 + } +} + +98 +funùiÚ + + $maš +() { + +100 +$this +-> + `checkP¬ams +(); + +101 +$this +-> + `chmod +(); + +102 + } +} + +108 +´iv©e + +funùiÚ + + $checkP¬ams +() { + +110 ià( +$this +-> +fže + ==ð +nuÎ + && + `em±y +($this-> +fže£ts +)) { + +111 +throw + +Ãw + + `BuždExû±iÚ +("Specify‡t†east one source -‡ file or‡ fileset."); + +114 ià( +$this +-> +mode + ==ð +nuÎ +) { + +115 +throw + +Ãw + + `BuždExû±iÚ +("You haveo specify‡n octal mode for chmod."); + +119 ià(! + `´eg_m©ch +('/^([0-7]){3,4}$/', +$this +-> +mode +)) { + +120 +throw + +Ãw + + `BuždExû±iÚ +("You have specified‡n invalid mode."); + +123 + } +} + +129 +´iv©e + +funùiÚ + + $chmod +() { + +131 ià( + `¡¾’ +( +$this +-> +mode +) === 4) { + +132 +$mode + = + `oùdec +( +$this +-> +mode +); + +135 +$mode + = + `oùdec +("0". +$this +-> +mode +); + +139 +$tÙ®_fžes + = 0; + +140 +$tÙ®_dœs + = 0; + +143 ià( +$this +-> +fže + !=ð +nuÎ +) { + +144 +$tÙ®_fžes + = 1; + +145 +$this +-> + `chmodFže +($this-> +fže +, +$mode +); + +149 + `fܗch +( +$this +-> +fže£ts + +as + +$fs +) { + +151 +$ds + = +$fs +-> + `g‘DœeùÜySÿ” +( +$this +-> +´ojeù +); + +152 +$äomDœ + = +$fs +-> + `g‘Dœ +( +$this +-> +´ojeù +); + +154 +$¤cFžes + = +$ds +-> + `g‘InþudedFžes +(); + +155 +$¤cDœs + = +$ds +-> + `g‘InþudedDœeùܛs +(); + +157 +$fžecouÁ + = + `couÁ +( +$¤cFžes +); + +158 +$tÙ®_fžes + = $tÙ®_fže + +$fžecouÁ +; + +159  +$j + = 0; $j < +$fžecouÁ +; $j++) { + +160 +$this +-> + `chmodFže +( +Ãw + + `PhšgFže +( +$äomDœ +, +$¤cFžes +[ +$j +]), +$mode +); + +163 +$dœcouÁ + = + `couÁ +( +$¤cDœs +); + +164 +$tÙ®_dœs + = $tÙ®_dœ + +$dœcouÁ +; + +165  +$j + = 0; $j < +$dœcouÁ +; $j++) { + +166 +$this +-> + `chmodFže +( +Ãw + + `PhšgFže +( +$äomDœ +, +$¤cDœs +[ +$j +]), +$mode +); + +170 ià(! +$this +-> +v”bo£ +) { + +171 +$this +-> + `log +('TÙ® fže chªgedØ' . + `v¥rštf +('%o', +$mode +è. ': ' . +$tÙ®_fžes +); + +172 +$this +-> + `log +('TÙ® dœeùܛ chªgedØ' . + `v¥rštf +('%o', +$mode +è. ': ' . +$tÙ®_dœs +); + +175 + } +} + +182 +´iv©e + +funùiÚ + + $chmodFže +( +PhšgFže + +$fže +, +$mode +) { + +183 iàÐ! +$fže +-> + `exi¡s +() ) { + +184 +throw + +Ãw + + `BuždExû±iÚ +("Thfž" . +$fže +-> + `__toSŒšg +() . " does‚otƒxist"); + +187 +Œy + { + +188 +$fže +-> + `£tMode +( +$mode +); + +189 ià( +$this +-> +v”bo£ +) { + +190 +$this +-> + `log +("Chªged fžmodÚ '" . +$fže +-> + `__toSŒšg +(è."'Ø" . + `v¥rštf +("%o", +$mode +)); + +192 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +193 if( +$this +-> +çžÚ”rÜ +) { + +194 +throw + +$e +; + +196 +$this +-> + `log +( +$e +-> + `g‘Mes§ge +(), $this-> +qu›t + ? +Projeù +:: +MSG_VERBOSE + : Projeù:: +MSG_WARN +); + +199 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/ChownTask.php + +1 +çžÚ”rÜ + = +$boÞ +; + +58 +funùiÚ + + $£tQu›t +( +$boÞ +) { + +59 +$this +-> +qu›t + = +$boÞ +; + +60 ià( +$this +-> +qu›t +) { + +61 +$this +-> +çžÚ”rÜ + = +çl£ +; + +63 + } +} + +69 +funùiÚ + + $£tV”bo£ +( +$boÞ +) { + +70 +$this +-> +v”bo£ + = ( +boÞ +) +$boÞ +; + +71 + } +} + +77 +funùiÚ + + $£tFže +( +PhšgFže + +$fže +) { + +78 +$this +-> +fže + = +$fže +; + +79 + } +} + +81 +funùiÚ + + $£tU£r +( +$¡r +) { + +82 +$this +-> +u£r + = +$¡r +; + +83 + } +} + +88 +funùiÚ + + $ü—‹FžeS‘ +() { + +89 +$num + = + `¬¿y_push +( +$this +-> +fže£ts +, +Ãw + + `FžeS‘ +()); + +90  +$this +-> +fže£ts +[ +$num +-1]; + +91 + } +} + +97 +funùiÚ + + $maš +() { + +99 +$this +-> + `checkP¬ams +(); + +100 +$this +-> + `chown +(); + +101 + } +} + +107 +´iv©e + +funùiÚ + + $checkP¬ams +() { + +109 ià( +$this +-> +fže + ==ð +nuÎ + && + `em±y +($this-> +fže£ts +)) { + +110 +throw + +Ãw + + `BuždExû±iÚ +("Specify‡t†east one source -‡ file or‡ fileset."); + +113 ià( +$this +-> +u£r + ==ð +nuÎ +) { + +114 +throw + +Ãw + + `BuždExû±iÚ +("You haveo specify‡ user for chown."); + +120 + } +} + +126 +´iv©e + +funùiÚ + + $chown +() { + +128 +$u£r +ð +$this +-> +u£r +; + +131 +$tÙ®_fžes + = 0; + +132 +$tÙ®_dœs + = 0; + +135 ià( +$this +-> +fže + !=ð +nuÎ +) { + +136 +$tÙ®_fžes + = 1; + +137 +$this +-> + `chownFže +($this-> +fže +, +$u£r +); + +141 + `fܗch +( +$this +-> +fže£ts + +as + +$fs +) { + +143 +$ds + = +$fs +-> + `g‘DœeùÜySÿ” +( +$this +-> +´ojeù +); + +144 +$äomDœ + = +$fs +-> + `g‘Dœ +( +$this +-> +´ojeù +); + +146 +$¤cFžes + = +$ds +-> + `g‘InþudedFžes +(); + +147 +$¤cDœs + = +$ds +-> + `g‘InþudedDœeùܛs +(); + +149 +$fžecouÁ + = + `couÁ +( +$¤cFžes +); + +150 +$tÙ®_fžes + = $tÙ®_fže + +$fžecouÁ +; + +151  +$j + = 0; $j < +$fžecouÁ +; $j++) { + +152 +$this +-> + `chownFže +( +Ãw + + `PhšgFže +( +$äomDœ +, +$¤cFžes +[ +$j +]), +$u£r +); + +155 +$dœcouÁ + = + `couÁ +( +$¤cDœs +); + +156 +$tÙ®_dœs + = $tÙ®_dœ + +$dœcouÁ +; + +157  +$j + = 0; $j < +$dœcouÁ +; $j++) { + +158 +$this +-> + `chownFže +( +Ãw + + `PhšgFže +( +$äomDœ +, +$¤cDœs +[ +$j +]), +$u£r +); + +162 ià(! +$this +-> +v”bo£ +) { + +163 +$this +-> + `log +('TÙ® fže chªgedØ' . + `v¥rštf +('%o', +$mode +è. ': ' . +$tÙ®_fžes +); + +164 +$this +-> + `log +('TÙ® dœeùܛ chªgedØ' . + `v¥rštf +('%o', +$mode +è. ': ' . +$tÙ®_dœs +); + +167 + } +} + +174 +´iv©e + +funùiÚ + + $chownFže +( +PhšgFže + +$fže +, +$u£r +) { + +175 iàÐ! +$fže +-> + `exi¡s +() ) { + +176 +throw + +Ãw + + `BuždExû±iÚ +("Thfž" . +$fže +-> + `__toSŒšg +() . " does‚otƒxist"); + +179 +Œy + { + +180 +$fže +-> + `£tU£r +( +$u£r +); + +181 ià( +$this +-> +v”bo£ +) { + +182 +$this +-> + `log +("Chªged fžowÃ¸Ú '" . +$fže +-> + `__toSŒšg +(è."'Ø" . +$u£r +); + +184 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +185 if( +$this +-> +çžÚ”rÜ +) { + +186 +throw + +$e +; + +188 +$this +-> + `log +( +$e +-> + `g‘Mes§ge +(), $this-> +qu›t + ? +Projeù +:: +MSG_VERBOSE + : Projeù:: +MSG_WARN +); + +191 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/ConditionTask.php + +1 +´Ý”ty + = +$p +; + +54 +funùiÚ + + $£tV®ue +( +$v +) { + +55 +$this +-> +v®ue + = +$v +; + +56 + } +} + +61 +funùiÚ + + $maš +() { + +63 ià( +$this +-> + `couÁCÚd™iÚs +() > 1) { + +64 +throw + +Ãw + + `BuždExû±iÚ +("You must‚ot‚est morehan one condition into "); + +66 ià( +$this +-> + `couÁCÚd™iÚs +() < 1) { + +67 +throw + +Ãw + + `BuždExû±iÚ +("You must‚est‡ condition into "); + +69 +$cs + = +$this +-> + `g‘I‹¿tÜ +(); + +70 ià( +$cs +-> + `cu¼’t +()-> + `ev®u©e +()) { + +71 +$this +-> +´ojeù +-> + `£tPrݔty +($this-> +´Ý”ty +, $this-> +v®ue +); + +73 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/CopyTask.php + +1 +fžeUtžs + = +Ãw + + `FžeUtžs +(); + +78 +funùiÚ + + $£tOv”wr™e +( +$boÞ +) { + +79 +$this +-> +ov”wr™e + = ( +boޗn +è +$boÞ +; + +80 + } +} + +86 +funùiÚ + + $£tV”bo£ +( +$v”bos™y +) { + +87 ià( +$v”bos™y +) { + +88 +$this +-> +v”bos™y + = +Projeù +:: +MSG_INFO +; + +90 +$this +-> +v”bos™y + = +Projeù +:: +MSG_VERBOSE +; + +92 + } +} + +103 +funùiÚ + + $£tT¡amp +( +$boÞ +) { + +104 +$this +-> +´e£rveLMT + = ( +boޗn +è +$boÞ +; + +105 + } +} + +117 +funùiÚ + + $£tInþudeEm±yDœs +( +$boÞ +) { + +118 +$this +-> +šþudeEm±y + = ( +boޗn +è +$boÞ +; + +119 + } +} + +131 +funùiÚ + + $£tFže +( +PhšgFže + +$fže +) { + +132 +$this +-> +fže + = +$fže +; + +133 + } +} + +145 +funùiÚ + + $£tTofže +( +PhšgFže + +$fže +) { + +146 +$this +-> +de¡Fže + = +$fže +; + +147 + } +} + +159 +funùiÚ + + $£tTodœ +( +PhšgFže + +$dœ +) { + +160 +$this +-> +de¡Dœ + = +$dœ +; + +161 + } +} + +169 +funùiÚ + + $ü—‹FžeS‘ +() { + +170 +$num + = + `¬¿y_push +( +$this +-> +fže£ts +, +Ãw + + `FžeS‘ +()); + +171  +$this +-> +fže£ts +[ +$num +-1]; + +172 + } +} + +180 +funùiÚ + + $ü—‹Fž‹rChaš +() { + +181 +$num + = + `¬¿y_push +( +$this +-> +fž‹rChašs +, +Ãw + + `Fž‹rChaš +($this-> +´ojeù +)); + +182  +$this +-> +fž‹rChašs +[ +$num +-1]; + +183 + } +} + +192 +funùiÚ + + $ü—‹M­³r +() { + +193 ià( +$this +-> +m­³rEËm’t + !=ð +nuÎ +) { + +194 +throw + +Ãw + + `BuždExû±iÚ +("CªnÙ defšmܐthª oà m­³r", +$this +-> +loÿtiÚ +); + +196 +$this +-> +m­³rEËm’t + = +Ãw + + `M­³r +($this-> +´ojeù +); + +197  +$this +-> +m­³rEËm’t +; + +198 + } +} + +207 +funùiÚ + + $maš +() { + +209 +$this +-> + `v®id©eA‰ribu‹s +(); + +211 ià( +$this +-> +fže + !=ð +nuÎ +) { + +212 ià( +$this +-> +fže +-> + `exi¡s +()) { + +213 ià( +$this +-> +de¡Fže + ==ð +nuÎ +) { + +214 +$this +-> +de¡Fže + = +Ãw + + `PhšgFže +($this-> +de¡Dœ +, ( +¡ršg +è$this-> +fže +-> + `g‘Name +()); + +216 ià( +$this +-> +ov”wr™e + ==ð +Œue + || ($this-> +fže +-> + `Ï¡Modif›d +(è> $this-> +de¡Fže +->lastModified())) { + +217 +$this +-> +fžeCÝyM­ +[$this-> +fže +-> + `g‘AbsÞu‹P©h +()] = $this-> +de¡Fže +->getAbsolutePath(); + +219 +$this +-> + `log +($this-> +fže +-> + `g‘Name +()." omitted, is upo date"); + +223 +throw + +Ãw + + `BuždExû±iÚ +("Could‚Ù fšd fž" . +$this +-> +fže +-> + `__toSŒšg +() . "o copy."); + +227 +$´ojeù + = +$this +-> + `g‘Projeù +(); + +230 + `fܗch +( +$this +-> +fže£ts + +as + +$fs +) { + +231 +$ds + = +$fs +-> + `g‘DœeùÜySÿ” +( +$´ojeù +); + +232 +$äomDœ + = +$fs +-> + `g‘Dœ +( +$´ojeù +); + +233 +$¤cFžes + = +$ds +-> + `g‘InþudedFžes +(); + +234 +$¤cDœs + = +$ds +-> + `g‘InþudedDœeùܛs +(); + +236 ià(! +$this +-> +橋n + && $this-> +m­³rEËm’t + ==ð +nuÎ +) + +238 +$this +-> +com¶‘eDœM­ +[ +$äomDœ +-> + `g‘AbsÞu‹P©h +()] = $this-> +de¡Dœ +->getAbsolutePath(); + +241 +$this +-> + `_sÿn +( +$äomDœ +, $this-> +de¡Dœ +, +$¤cFžes +, +$¤cDœs +); + +245 +$this +-> + `doWÜk +(); + +247 ià( +$this +-> +de¡Fže + !=ð +nuÎ +) { + +248 +$this +-> +de¡Dœ + = +nuÎ +; + +250 + } +} + +259 +´Ùeùed + +funùiÚ + + $v®id©eA‰ribu‹s +() { + +261 ià( +$this +-> +fže + ==ð +nuÎ + && + `couÁ +($this-> +fže£ts +) === 0) { + +262 +throw + +Ãw + + `BuždExû±iÚ +("CopyTask. Specify‡t†east one source -‡ file or‡ fileset."); + +265 ià( +$this +-> +de¡Fže + !=ð +nuÎ + && $this-> +de¡Dœ + !==‚ull) { + +266 +throw + +Ãw + + `BuždExû±iÚ +("Only one of destfile‡nd destdir may be set."); + +269 ià( +$this +-> +de¡Fže + ==ð +nuÎ + && $this-> +de¡Dœ + ===‚ull) { + +270 +throw + +Ãw + + `BuždExû±iÚ +("One of destfile or destdir must be set."); + +273 ià( +$this +-> +fže + !=ð +nuÎ + && $this->fže-> + `exi¡s +(è&& $this->fže-> + `isDœeùÜy +()) { + +274 +throw + +Ãw + + `BuždExû±iÚ +("Use‡ fileseto copy directories."); + +277 ià( +$this +-> +de¡Fže + !=ð +nuÎ + && + `couÁ +($this-> +fže£ts +) > 0) { + +278 +throw + +Ãw + + `BuždExû±iÚ +("Cannot concatenate multple files into‡ single file."); + +281 ià( +$this +-> +de¡Fže + !=ð +nuÎ +) { + +282 +$this +-> +de¡Dœ + = +Ãw + + `PhšgFže +($this-> +de¡Fže +-> + `g‘P¬’t +()); + +284 + } +} + +293 +´iv©e + +funùiÚ + + $_sÿn +(& +$äomDœ +, & +$toDœ +, & +$fžes +, & +$dœs +) { + +296 +$m­³r + = +nuÎ +; + +297 ià( +$this +-> +m­³rEËm’t + !=ð +nuÎ +) { + +298 +$m­³r + = +$this +-> +m­³rEËm’t +-> + `g‘Im¶em’tiÚ +(); + +299 } ià( +$this +-> +橋n +) { + +300 +$m­³r + = +Ãw + + `Fω’M­³r +(); + +302 +$m­³r + = +Ãw + + `Id’t™yM­³r +(); + +304 +$this +-> + `buždM­ +( +$äomDœ +, +$toDœ +, +$fžes +, +$m­³r +, $this-> +fžeCÝyM­ +); + +305 +$this +-> + `buždM­ +( +$äomDœ +, +$toDœ +, +$dœs +, +$m­³r +, $this-> +dœCÝyM­ +); + +306 + } +} + +314 +´iv©e + +funùiÚ + + $buždM­ +(& +$äomDœ +, & +$toDœ +, & +$Çmes +, & +$m­³r +, & +$m­ +) { + +315 +$toCÝy + = +nuÎ +; + +316 ià( +$this +-> +ov”wr™e +) { + +317 +$v + = + `¬¿y +(); + +318 + `fܗch +( +$Çmes + +as + +$Çme +) { + +319 +$»suÉ + = +$m­³r +-> + `maš +( +$Çme +); + +320 ià( +$»suÉ + !=ð +nuÎ +) { + +321 +$v +[] = +$Çme +; + +324 +$toCÝy + = +$v +; + +326 +$ds + = +Ãw + + `SourûFžeSÿ” +( +$this +); + +327 +$toCÝy + = +$ds +-> + `»¡riù +( +$Çmes +, +$äomDœ +, +$toDœ +, +$m­³r +); + +330  +$i +=0, +$_i += + `couÁ +( +$toCÝy +); $i < $_i; $i++) { + +331 +$¤c + = +Ãw + + `PhšgFže +( +$äomDœ +, +$toCÝy +[ +$i +]); + +332 +$m­³d + = +$m­³r +-> + `maš +( +$toCÝy +[ +$i +]); + +333 +$de¡ + = +Ãw + + `PhšgFže +( +$toDœ +, +$m­³d +[0]); + +334 +$m­ +[ +$¤c +-> + `g‘AbsÞu‹P©h +()] = +$de¡ +->getAbsolutePath(); + +336 + } +} + +346 +´Ùeùed + +funùiÚ + + $doWÜk +() { + +349 +$äomSlÙ + = +$this +-> + `g‘Regi¡”SlÙ +("currentFromFile"); + +350 +$äomBa£ÇmeSlÙ + = +$this +-> + `g‘Regi¡”SlÙ +("currentFromFile.basename"); + +352 +$toSlÙ + = +$this +-> + `g‘Regi¡”SlÙ +("currentToFile"); + +353 +$toBa£ÇmeSlÙ + = +$this +-> + `g‘Regi¡”SlÙ +("currentToFile.basename"); + +355 +$m­Size + = + `couÁ +( +$this +-> +fžeCÝyM­ +); + +356 +$tÙ® + = +$m­Size +; + +357 ià( +$m­Size + > 0) { + +358 +$this +-> + `log +("CÝyšg ". +$m­Size +." fže".(($m­Sizeè==ð1 ? '' : 's')."Ø". $this-> +de¡Dœ +-> + `g‘AbsÞu‹P©h +()); + +360 +$couÁ +=0; + +361 + `fܗch +( +$this +-> +fžeCÝyM­ + +as + +$äom + => +$to +) { + +362 ià( +$äom + ==ð +$to +) { + +363 +$this +-> + `log +("Skpšg s–f-cÝy oà" . +$äom +, $this-> +v”bos™y +); + +364 +$tÙ® +--; + +367 +$this +-> + `log +("From ". +$äom +."Ø". +$to +, $this-> +v”bos™y +); + +368 +Œy + { + +370 +$äomFže + = +Ãw + + `PhšgFže +( +$äom +); + +371 +$toFže + = +Ãw + + `PhšgFže +( +$to +); + +373 +$äomSlÙ +-> + `£tV®ue +( +$äomFže +-> + `g‘P©h +()); + +374 +$äomBa£ÇmeSlÙ +-> + `£tV®ue +( +$äomFže +-> + `g‘Name +()); + +376 +$toSlÙ +-> + `£tV®ue +( +$toFže +-> + `g‘P©h +()); + +377 +$toBa£ÇmeSlÙ +-> + `£tV®ue +( +$toFže +-> + `g‘Name +()); + +379 +$this +-> +fžeUtžs +-> + `cÝyFže +( +$äomFže +, +$toFže +, $this-> +ov”wr™e +, $this-> +´e£rveLMT +, $this-> +fž‹rChašs +, $this-> + `g‘Projeù +()); + +381 +$couÁ +++; + +382 } + `ÿtch + ( +IOExû±iÚ + +$iÛ +) { + +383 +$this +-> + `log +("FažedØcÝy " . +$äom + . "Ø" . +$to + . ": " . +$iÛ +-> + `g‘Mes§ge +(), +Projeù +:: +MSG_ERR +); + +389 ià( +$this +-> +šþudeEm±y +) { + +390 +$de¡dœs + = + `¬¿y_v®ues +( +$this +-> +dœCÝyM­ +); + +391 +$couÁ + = 0; + +392 + `fܗch + ( +$de¡dœs + +as + +$de¡dœ +) { + +393 +$d + = +Ãw + + `PhšgFže +(( +¡ršg +è +$de¡dœ +); + +394 ià(! +$d +-> + `exi¡s +()) { + +395 ià(! +$d +-> + `mkdœs +()) { + +396 +$this +-> + `log +("UÇbˁØü—‹ dœeùÜy " . +$d +-> + `__toSŒšg +(), +Projeù +:: +MSG_ERR +); + +398 +$couÁ +++; + +402 ià( +$couÁ + > 0) { + +403 +$this +-> + `log +("Cݛd ". +$couÁ +."ƒm±y dœeùÜ" . ($couÁ =ð1 ? "y" : "›s"è. "Ø" . $this-> +de¡Dœ +-> + `g‘AbsÞu‹P©h +()); + +406 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/CvsPassTask.php + +1 +·ssFže + = +Ãw + + `PhšgFže +( + +69 +Phšg +:: + `g‘Prݔty +("cygwin.user.home", + +70 +Phšg +:: + `g‘Prݔty +("user.home")) + +71 . +DIRECTORY_SEPARATOR + . ".cvspass"); + +79 +public + +fš® + +funùiÚ + + $maš +() { + +80 ià( +$this +-> +cvsRoÙ + ==ð +nuÎ +) { + +81 +throw + +Ãw + + `BuždExû±iÚ +("cvsroot is„equired"); + +83 ià( +$this +-> +·sswÜd + ==ð +nuÎ +) { + +84 +throw + +Ãw + + `BuždExû±iÚ +("password is„equired"); + +87 +$this +-> + `log +("cvsRoÙ: " . $this-> +cvsRoÙ +, +Projeù +:: +MSG_DEBUG +); + +88 +$this +-> + `log +("·sswÜd: " . $this-> +·sswÜd +, +Projeù +:: +MSG_DEBUG +); + +89 +$this +-> + `log +("·ssFže: " . $this-> +·ssFže +-> + `__toSŒšg +(), +Projeù +:: +MSG_DEBUG +); + +91 +$»ad” + = +nuÎ +; + +92 +$wr™” + = +nuÎ +; + +94 +Œy + { + +95 +$buf + = ""; + +97 ià( +$this +-> +·ssFže +-> + `exi¡s +()) { + +98 +$»ad” + = +Ãw + + `Bufã»dR—d” +Òew + `FžeR—d” +( +$this +-> +·ssFže +)); + +100 +$lše + = +nuÎ +; + +101 ( +$lše + = +$»ad” +-> + `»adLše +()è!=ð +nuÎ +) { + +102 ià(! +SŒšgH–³r +:: + `¡¬tsW™h +( +$this +-> +cvsRoÙ +, +$lše +)) { + +103 +$buf + .ð +$lše + . +PHP_EOL +; + +108 +$pwdfže + = +$buf + . +$this +-> +cvsRoÙ + . " A" . $this-> + `mªgË +($this-> +·sswÜd +); + +110 +$this +-> + `log +("Wr™šg -> " . +$pwdfže + , +Projeù +:: +MSG_DEBUG +); + +112 +$wr™” + = +Ãw + + `Bufã»dWr™” +Òew + `FžeWr™” +( +$this +-> +·ssFže +)); + +113 +$wr™” +-> + `wr™e +( +$pwdfže +); + +114 +$wr™” +-> + `ÃwLše +(); + +116 +$wr™” +-> + `þo£ +(); + +117 ià( +$»ad” +) { + +118 +$»ad” +-> + `þo£ +(); + +121 } + `ÿtch + ( +IOExû±iÚ + +$e +) { + +122 ià( +$»ad” +) { + +123 +Œy + { + +124 +$»ad” +-> + `þo£ +(); + +125 } + `ÿtch + ( +Exû±iÚ + +$e +) {} + +128 ià( +$wr™” +) { + +129 +Œy + { + +130 +$wr™” +-> + `þo£ +(); + +131 } + `ÿtch + ( +Exû±iÚ + +$e +) {} + +134 +throw + +Ãw + + `BuždExû±iÚ +( +$e +); + +136 + } +} + +141 +´iv©e + +fš® + +funùiÚ + + $mªgË +( +$·sswÜd +){ + +142 +$buf + = ""; + +143  +$i + = 0, +$¶’ + = + `¡¾’ +( +$·sswÜd +); $i < $plen; $i++) { + +144 +$buf + .ð + `chr +( +£lf +:: +$shiás +[ + `Üd +( +$·sswÜd +{ +$i +})]); + +146  +$buf +; + +147 + } +} + +153 +public + +funùiÚ + + $£tCv¤oÙ +( +$cvsRoÙ +) { + +154 +$this +-> +cvsRoÙ + = +$cvsRoÙ +; + +155 + } +} + +161 +public + +funùiÚ + + $£tPassfže +( +PhšgFže + +$·ssFže +) { + +162 +$this +-> +·ssFže + = +$·ssFže +; + +163 + } +} + +169 +public + +funùiÚ + + $£tPasswÜd +( +$·sswÜd +) { + +170 +$this +-> +·sswÜd + = +$·sswÜd +; + +171 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/CvsTask.php + +1 +cmd + = +Ãw + + `Commªdlše +(); + +134 +´Ùeùed + +funùiÚ + + $runCommªd +( +Commªdlše + +$toExecu‹ +) { + +140 ià( +$this +-> +pÜt + > 0) { + +141 + `pu‹nv +("CVS_CLIENT_PORT=". +$this +-> +pÜt +); + +147 ià( +$this +-> +·ssFže + ==ð +nuÎ +) { + +148 +$deçuÉPassFže + = +Ãw + + `PhšgFže +( +Phšg +:: + `g‘Prݔty +("cygwin.user.home", Phing::getProperty("user.home")) + +149 . +DIRECTORY_SEPARATOR + . ".cvspass"); + +150 if( +$deçuÉPassFže +-> + `exi¡s +()) { + +151 +$this +-> + `£tPassfže +( +$deçuÉPassFže +); + +155 ià( +$this +-> +·ssFže + !=ð +nuÎ +) { + +156 ià( +$this +-> +·ssFže +-> + `isFže +(è&& $this->·ssFže-> + `ÿnR—d +()) { + +157 + `pu‹nv +("CVS_PASSFILE=" . +$this +-> +·ssFže +-> + `__toSŒšg +()); + +158 +$this +-> + `log +("Usšg cv ·ssfže: " . $this-> +·ssFže +-> + `__toSŒšg +(), +Projeù +:: +MSG_INFO +); + +159 } + `–£if + (! +$this +-> +·ssFže +-> + `ÿnR—d +()) { + +160 +$this +-> + `log +("cv ·ssfže: " . $this-> +·ssFže +-> + `__toSŒšg +() + +161 . " ignÜed‡ ™ i nل—dabË", +Projeù +:: +MSG_WARN +); + +163 +$this +-> + `log +("cv ·ssfže: " . $this-> +·ssFže +-> + `__toSŒšg +() + +165 +Projeù +:: +MSG_WARN +); + +169 ià( +$this +-> +cvsRsh + !=ð +nuÎ +) { + +170 + `pu‹nv +("CVS_RSH=". +$this +-> +cvsRsh +); + +174 +$exe + = +Ãw + + `ExecTask +( +$this +-> +´ojeù +); + +175 +$exe +-> + `£tProjeù +( +$this +-> +´ojeù +); + +178 ià( +$this +-> +de¡ + ==ð +nuÎ +) { + +179 +$this +-> +de¡ + = $this-> +´ojeù +-> + `g‘Ba£Dœ +(); + +182 ià(! +$this +-> +de¡ +-> + `exi¡s +()) { + +183 +$this +-> +de¡ +-> + `mkdœs +(); + +186 ià( +$this +-> +ouut + !=ð +nuÎ +) { + +187 +$exe +-> + `£tOuut +( +$this +-> +ouut +); + +190 ià( +$this +-> +”rÜ + !=ð +nuÎ +) { + +191 +$exe +-> + `£tE¼Ü +( +$this +-> +”rÜ +); + +194 +$exe +-> + `£tDœ +( +$this +-> +de¡ +); + +196 ià( + `is_objeù +( +$toExecu‹ +)) { + +197 +$toExecu‹SŒ + = +$toExecu‹ +-> + `__toSŒšg +(); + +200 +$exe +-> + `£tCommªd +( +$toExecu‹SŒ +); + +202 +Œy + { + +203 +$aùu®CommªdLše + = +$toExecu‹SŒ +; + +204 +$this +-> + `log +( +$aùu®CommªdLše +, +Projeù +:: +MSG_INFO +); + +205 +$»tCode + = +$exe +-> + `execu‹ +(); + +206 +$this +-> + `log +("»tCode=" . +$»tCode +, +Projeù +:: +MSG_DEBUG +); + +208 ià( +$this +-> +çžOnE¼Ü + && +$»tCode + !== 0) { + +209 +throw + +Ãw + + `BuždExû±iÚ +("cvsƒxited withƒrror code " + +210 . +$»tCode + + +211 . +PHP_EOL + + +213 . +$toExecu‹ +-> + `desüibeCommªd +(è. "]", +$this +-> + `g‘LoÿtiÚ +()); + +215 } + `ÿtch + ( +IOExû±iÚ + +$e +) { + +216 ià( +$this +-> +çžOnE¼Ü +) { + +217 +throw + +Ãw + + `BuždExû±iÚ +( +$e +, +$this +-> + `g‘LoÿtiÚ +()); + +219 +$this +-> + `log +("Caughˆexû±iÚ: " . +$e +, +Projeù +:: +MSG_WARN +); + +221 } + `ÿtch + ( +BuždExû±iÚ + +$e +) { + +222 ià( +$this +-> +çžOnE¼Ü +) { + +223 +throw + +$e +; + +225 +$t + = +$e +-> + `g‘Cau£ +(); + +226 ià( +$t + ==ð +nuÎ +) { + +227 +$t + = +$e +; + +229 +$this +-> + `log +("Caughˆexû±iÚ: " . +$t +, +Projeù +:: +MSG_WARN +); + +231 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +232 ià( +$this +-> +çžOnE¼Ü +) { + +233 +throw + +Ãw + + `BuždExû±iÚ +( +$e +, +$this +-> + `g‘LoÿtiÚ +()); + +235 +$this +-> + `log +("Caughˆexû±iÚ: " . +$e +, +Projeù +:: +MSG_WARN +); + +238 + } +} + +245 +public + +funùiÚ + + $maš +() { + +247 +$§vedCommªd + = +$this +-> + `g‘Commªd +(); + +249 ià( +$this +-> + `g‘Commªd +(è==ð +nuÎ + && + `em±y +($this-> +commªdlšes +)) { + +251 +$this +-> + `£tCommªd +( +£lf +:: +$deçuÉ_commªd +); + +254 +$c + = +$this +-> + `g‘Commªd +(); + +255 +$þÚed + = +nuÎ +; + +256 ià( +$c + !=ð +nuÎ +) { + +257 +$þÚed + = +$this +-> +cmd +-> + `__cÝy +(); + +258 +$þÚed +-> + `ü—‹Argum’t +( +Œue +)-> + `£tLše +( +$c +); + +259 +$this +-> + `addCÚfigu»dCommªdlše +( +$þÚed +, +Œue +); + +262 +Œy + { + +263  +$i + = 0, +$vecsize += + `couÁ +( +$this +-> +commªdlšes +); $i < $vecsize; $i++) { + +264 +$this +-> + `runCommªd +($this-> +commªdlšes +[ +$i +]); + +268 ià( +$þÚed + !=ð +nuÎ +) { + +269 +$this +-> + `»moveCommªdlše +( +$þÚed +); + +271 +$this +-> + `£tCommªd +( +$§vedCommªd +); + +273 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +275 ià( +$þÚed + !=ð +nuÎ +) { + +276 +$this +-> + `»moveCommªdlše +( +$þÚed +); + +278 +$this +-> + `£tCommªd +( +$§vedCommªd +); + +279 +throw + +$e +; + +281 + } +} + +288 +public + +funùiÚ + + $£tCvsRoÙ +( +$roÙ +) { + +291 ià( +$roÙ + !=ð +nuÎ +) { + +292 ià( + `Œim +( +$roÙ +) == "") { + +293 +$roÙ + = +nuÎ +; + +297 +$this +-> +cvsRoÙ + = +$roÙ +; + +298 + } +} + +300 +public + +funùiÚ + + $g‘CvsRoÙ +() { + +301  +$this +-> +cvsRoÙ +; + +302 + } +} + +309 +public + +funùiÚ + + $£tCvsRsh +( +$rsh +) { + +311 ià( +$rsh + !=ð +nuÎ +) { + +312 ià( + `Œim +( +$rsh +) == "") { + +313 +$rsh + = +nuÎ +; + +317 +$this +-> +cvsRsh + = +$rsh +; + +318 + } +} + +320 +public + +funùiÚ + + $g‘CvsRsh +() { + +321  +$this +-> +cvsRsh +; + +322 + } +} + +329 +public + +funùiÚ + + $£tPÜt +( +$pÜt +){ + +330 +$this +-> +pÜt + = +$pÜt +; + +331 + } +} + +336 +public + +funùiÚ + + $g‘PÜt +() { + +337  +$this +-> +pÜt +; + +338 + } +} + +345 +public + +funùiÚ + + $£tPassfže +( +PhšgFže + +$·ssFže +) { + +346 +$this +-> +·ssFže + = +$·ssFže +; + +347 + } +} + +352 +public + +funùiÚ + + $g‘PassFže +() { + +353  +$this +-> +·ssFže +; + +354 + } +} + +361 +public + +funùiÚ + + $£tDe¡ +( +PhšgFže + +$de¡ +) { + +362 +$this +-> +de¡ + = +$de¡ +; + +363 + } +} + +365 +public + +funùiÚ + + $g‘De¡ +() { + +366  +$this +-> +de¡ +; + +367 + } +} + +374 +public + +funùiÚ + + $£tModuË +( +$m +) { + +375 +$this +-> +cvsModuË + = +$m +; + +376 + } +} + +378 +public + +funùiÚ + + $g‘ModuË +(){ + +379  +$this +-> +cvsModuË +; + +380 + } +} + +386 +public + +funùiÚ + + $£tTag +( +$p +) { + +388 ià( +$p + !=ð +nuÎ + && + `Œim +($p) !== "") { + +389 +$this +-> + `­³ndCommªdArgum’t +("-r"); + +390 +$this +-> + `­³ndCommªdArgum’t +( +$p +); + +392 + } +} + +398 +public + +funùiÚ + + $­³ndCommªdArgum’t +( +$¬g +) { + +399 +$this +-> +cmd +-> + `ü—‹Argum’t +()-> + `£tV®ue +( +$¬g +); + +400 + } +} + +406 +public + +funùiÚ + + $£tD©e +( +$p +) { + +407 ià( +$p + !=ð +nuÎ + && + `Œim +($p) !== "") { + +408 +$this +-> + `­³ndCommªdArgum’t +("-D"); + +409 +$this +-> + `­³ndCommªdArgum’t +( +$p +); + +411 + } +} + +417 +public + +funùiÚ + + $£tCommªd +( +$c +) { + +418 +$this +-> +commªd + = +$c +; + +419 + } +} + +421 +public + +funùiÚ + + $g‘Commªd +() { + +422  +$this +-> +commªd +; + +423 + } +} + +429 +public + +funùiÚ + + $£tQu›t +( +$q +) { + +430 +$this +-> +qu›t + = +$q +; + +431 + } +} + +438 +public + +funùiÚ + + $£tNÛxec +( +$à +) { + +439 +$this +-> +nÛxec + = ( +boޗn +è +$à +; + +440 + } +} + +448 +public + +funùiÚ + + $£tFažOnE¼Ü +( +$çžOnE¼Ü +) { + +449 +$this +-> +çžOnE¼Ü + = ( +boޗn +è +$çžOnE¼Ü +; + +450 + } +} + +456 +´Ùeùed + +funùiÚ + + $cÚfigu»Commªdlše +( +$c +) { + +457 ià( +$c + ==ð +nuÎ +) { + +460 +$c +-> + `£tExecubË +("cvs"); + +462 ià( +$this +-> +cvsModuË + !=ð +nuÎ +) { + +463 +$c +-> + `ü—‹Argum’t +()-> + `£tLše +( +$this +-> +cvsModuË +); + +465 ià( +$this +-> +com´essiÚ + > 0 && $this->compression < 10) { + +466 +$c +-> + `ü—‹Argum’t +( +Œue +)-> + `£tV®ue +("-z" . +$this +-> +com´essiÚ +); + +468 ià( +$this +-> +qu›t +) { + +469 +$c +-> + `ü—‹Argum’t +( +Œue +)-> + `£tV®ue +("-q"); + +471 ià( +$this +-> +nÛxec +) { + +472 +$c +-> + `ü—‹Argum’t +( +Œue +)-> + `£tV®ue +("-n"); + +474 ià( +$this +-> +cvsRoÙ + !=ð +nuÎ +) { + +475 +$c +-> + `ü—‹Argum’t +( +Œue +)-> + `£tLše +("-d" . +$this +-> +cvsRoÙ +); + +477 + } +} + +479 +´Ùeùed + +funùiÚ + + $»moveCommªdlše +( +Commªdlše + +$c +) { + +480 +$idx + = + `¬¿y_£¬ch +( +$c +, +$this +-> +commªdlšes +, +Œue +); + +481 ià( +$idx + ==ð +çl£ +) { + +482  +çl£ +; + +484 +$this +-> +commªdlšes + = + `¬¿y_¥liû +($this->commªdlšes, +$idx +, 1); + +485  +Œue +; + +486 + } +} + +492 +public + +funùiÚ + + $addCÚfigu»dCommªdlše +( +Commªdlše + +$c +, +$š£¹AtS¹ + = +çl£ +) { + +493 ià( +$c + ==ð +nuÎ +) { + +496 +$this +-> + `cÚfigu»Commªdlše +( +$c +); + +497 ià( +$š£¹AtS¹ +) { + +498 + `¬¿y_unshiá +( +$this +-> +commªdlšes +, +$c +); + +500 + `¬¿y_push +( +$this +-> +commªdlšes +, +$c +); + +502 + } +} + +509 +public + +funùiÚ + + $£tCom´essiÚLev– +( +$Ëv– +) { + +510 +$this +-> +com´essiÚ + = +$Ëv– +; + +511 + } +} + +519 +public + +funùiÚ + + $£tCom´essiÚ +( +$u£comp +) { + +520 +$this +-> + `£tCom´essiÚLev– +( +$u£comp + ? + +521 +£lf +:: +DEFAULT_COMPRESSION_LEVEL + : 0); + +522 + } +} + +528 +funùiÚ + + $£tOuut +( +PhšgFže + +$f +) { + +529 +$this +-> +ouut + = +$f +; + +530 + } +} + +536 +funùiÚ + + $£tE¼Ü +( +PhšgFže + +$f +) { + +537 +$this +-> +”rÜ + = +$f +; + +538 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/DeleteTask.php + +1 +fže + = +$fže +; + +56 +funùiÚ + + $£tDœ +( +PhšgFže + +$dœ +) { + +57 +$this +-> +dœ + = +$dœ +; + +58 + } +} + +64 +funùiÚ + + $£tV”bo£ +( +$v”bos™y +) { + +65 ià( +$v”bos™y +) { + +66 +$this +-> +v”bos™y + = +Projeù +:: +MSG_INFO +; + +68 +$this +-> +v”bos™y + = +Projeù +:: +MSG_VERBOSE +; + +70 + } +} + +80 +funùiÚ + + $£tQu›t +( +$boÞ +) { + +81 +$this +-> +qu›t + = +$boÞ +; + +82 ià( +$this +-> +qu›t +) { + +83 +$this +-> +çžÚ”rÜ + = +çl£ +; + +85 + } +} + +88 +funùiÚ + + $£tFažOnE¼Ü +( +$boÞ +) { + +89 +$this +-> +çžÚ”rÜ + = +$boÞ +; + +90 + } +} + +94 +funùiÚ + + $£tInþudeEm±yDœs +( +$šþudeEm±y +) { + +95 +$this +-> +šþudeEm±y + = ( +boޗn +è +$šþudeEm±y +; + +96 + } +} + +99 +funùiÚ + + $ü—‹FžeS‘ +() { + +100 +$num + = + `¬¿y_push +( +$this +-> +fže£ts +, +Ãw + + `FžeS‘ +()); + +101  +$this +-> +fže£ts +[ +$num +-1]; + +102 + } +} + +105 +funùiÚ + + $ü—‹FžeLi¡ +() { + +106 +$num + = + `¬¿y_push +( +$this +-> +fž–i¡s +, +Ãw + + `FžeLi¡ +()); + +107  +$this +-> +fž–i¡s +[ +$num +-1]; + +108 + } +} + +111 +funùiÚ + + $maš +() { + +112 ià( +$this +-> +fže + ==ð +nuÎ + && $this-> +dœ + ==ðnuÎ && + `couÁ +($this-> +fže£ts +è==ð0 && couÁ($this-> +fž–i¡s +) === 0) { + +113 +throw + +Ãw + + `BuždExû±iÚ +("At†east one ofhe file or dir‡ttributes, or‡ filesetƒlement, or‡ filelistƒlement must be set."); + +116 ià( +$this +-> +qu›t + && $this-> +çžÚ”rÜ +) { + +117 +throw + +Ãw + + `BuždExû±iÚ +("qu›ˆªd fažÚ”rÜ cªnÙ bÙh b£ˆt،ue", +$this +-> +loÿtiÚ +); + +121 ià( +$this +-> +fže + !=ð +nuÎ +) { + +122 ià( +$this +-> +fže +-> + `exi¡s +()) { + +123 ià( +$this +-> +fže +-> + `isDœeùÜy +()) { + +124 +$this +-> + `log +("DœeùÜy " . $this-> +fže +-> + `__toSŒšg +() . " cannot be„emoved usinghe file‡ttribute. Use dir instead."); + +126 +$this +-> + `log +("D–‘šg: " . $this-> +fže +-> + `__toSŒšg +()); + +127 +Œy + { + +128 +$this +-> +fže +-> + `d–‘e +(); + +129 } + `ÿtch +( +Exû±iÚ + +$e +) { + +130 +$mes§ge + = "UÇbˁØd–‘fž" . +$this +-> +fže +-> + `__toSŒšg +(è.": " . +$e +-> + `g‘Mes§ge +(); + +131 if( +$this +-> +çžÚ”rÜ +) { + +132 +throw + +Ãw + + `BuždExû±iÚ +( +$mes§ge +); + +134 +$this +-> + `log +( +$mes§ge +, $this-> +qu›t + ? +Projeù +:: +MSG_VERBOSE + : Projeù:: +MSG_WARN +); + +139 +$this +-> + `log +("Could‚Ù fšd fž" . $this-> +fže +-> + `g‘AbsÞu‹P©h +(è. "Ød–‘e.", +Projeù +:: +MSG_VERBOSE +); + +144 ià( +$this +-> +dœ + !=ð +nuÎ + && $this->dœ-> + `exi¡s +(è&& $this->dœ-> + `isDœeùÜy +()) { + +145 ià( +$this +-> +v”bos™y + ==ð +Projeù +:: +MSG_VERBOSE +) { + +146 +$this +-> + `log +("D–‘šg dœeùÜy " . $this-> +dœ +-> + `__toSŒšg +()); + +148 +$this +-> + `»moveDœ +($this-> +dœ +); + +152 + `fܗch +( +$this +-> +fž–i¡s + +as + +$æ +) { + +153 +Œy + { + +154 +$fžes + = +$æ +-> + `g‘Fžes +( +$this +-> +´ojeù +); + +155 +$this +-> + `»moveFžes +( +$æ +-> + `g‘Dœ +($this-> +´ojeù +), +$fžes +, +$em±y += + `¬¿y +()); + +156 } + `ÿtch + ( +BuždExû±iÚ + +$be +) { + +158 ià( +$this +-> +çžÚ”rÜ +) { + +159 +throw + +$be +; + +161 +$this +-> + `log +( +$be +-> + `g‘Mes§ge +(), $this-> +qu›t + ? +Projeù +:: +MSG_VERBOSE + : Projeù:: +MSG_WARN +); + +167 + `fܗch +( +$this +-> +fže£ts + +as + +$fs +) { + +168 +Œy + { + +169 +$ds + = +$fs +-> + `g‘DœeùÜySÿ” +( +$this +-> +´ojeù +); + +170 +$fžes + = +$ds +-> + `g‘InþudedFžes +(); + +171 +$dœs + = +$ds +-> + `g‘InþudedDœeùܛs +(); + +172 +$this +-> + `»moveFžes +( +$fs +-> + `g‘Dœ +($this-> +´ojeù +), +$fžes +, +$dœs +); + +173 } + `ÿtch + ( +BuždExû±iÚ + +$be +) { + +175 ià( +$this +-> +çžÚ”rÜ +) { + +176 +throw + +$be +; + +178 +$this +-> + `log +( +$be +-> + `g‘Mes§ge +(), $this-> +qu›t + ? +Projeù +:: +MSG_VERBOSE + : Projeù:: +MSG_WARN +); + +182 + } +} + +188 +´iv©e + +funùiÚ + + $»moveDœ +( +$d +) { + +189 +$li¡ + = +$d +-> + `li¡Dœ +(); + +190 ià( +$li¡ + ==ð +nuÎ +) { + +191 +$li¡ + = + `¬¿y +(); + +194 + `fܗch +( +$li¡ + +as + +$s +) { + +195 +$f + = +Ãw + + `PhšgFže +( +$d +, +$s +); + +196 ià( +$f +-> + `isDœeùÜy +()) { + +197 +$this +-> + `»moveDœ +( +$f +); + +199 +$this +-> + `log +("D–‘šg " . +$f +-> + `__toSŒšg +(), $this-> +v”bos™y +); + +200 +Œy + { + +201 +$f +-> + `d–‘e +(); + +202 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +203 +$mes§ge + = "UÇbˁØd–‘fž" . +$f +-> + `__toSŒšg +(è. ": " . +$e +-> + `g‘Mes§ge +(); + +204 if( +$this +-> +çžÚ”rÜ +) { + +205 +throw + +Ãw + + `BuždExû±iÚ +( +$mes§ge +); + +207 +$this +-> + `log +( +$mes§ge +, $this-> +qu›t + ? +Projeù +:: +MSG_VERBOSE + : Projeù:: +MSG_WARN +); + +212 +$this +-> + `log +("D–‘šg dœeùÜy " . +$d +-> + `g‘AbsÞu‹P©h +(), $this-> +v”bos™y +); + +213 +Œy + { + +214 +$d +-> + `d–‘e +(); + +215 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +216 +$mes§ge + = "UÇbˁØd–‘dœeùÜy " . +$d +-> + `__toSŒšg +(è. ": " . +$e +-> + `g‘Mes§ge +(); + +217 if( +$this +-> +çžÚ”rÜ +) { + +218 +throw + +Ãw + + `BuždExû±iÚ +( +$mes§ge +); + +220 +$this +-> + `log +( +$mes§ge +, $this-> +qu›t + ? +Projeù +:: +MSG_VERBOSE + : Projeù:: +MSG_WARN +); + +223 + } +} + +232 +´iv©e + +funùiÚ + + $»moveFžes +( +PhšgFže + +$d +, & +$fžes +, & +$dœs +) { + +233 ià( + `couÁ +( +$fžes +) > 0) { + +234 +$this +-> + `log +("D–‘šg " . + `couÁ +( +$fžes +è. " fže äom " . +$d +-> + `__toSŒšg +()); + +235  +$j +=0, +$_j += + `couÁ +( +$fžes +); $j < $_j; $j++) { + +236 +$f + = +Ãw + + `PhšgFže +( +$d +, +$fžes +[ +$j +]); + +237 +$this +-> + `log +("D–‘šg " . +$f +-> + `g‘AbsÞu‹P©h +(), $this-> +v”bos™y +); + +238 +Œy + { + +239 +$f +-> + `d–‘e +(); + +240 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +241 +$mes§ge + = "UÇbˁØd–‘fž" . +$f +-> + `__toSŒšg +(è. ": " . +$e +-> + `g‘Mes§ge +(); + +242 if( +$this +-> +çžÚ”rÜ +) { + +243 +throw + +Ãw + + `BuždExû±iÚ +( +$mes§ge +); + +245 +$this +-> + `log +( +$mes§ge +, $this-> +qu›t + ? +Projeù +:: +MSG_VERBOSE + : Projeù:: +MSG_WARN +); + +252 ià( + `couÁ +( +$dœs +è> 0 && +$this +-> +šþudeEm±y +) { + +253 +$dœCouÁ + = 0; + +254  +$j += + `couÁ +( +$dœs +)-1; $j>=0; --$j) { + +255 +$dœ + = +Ãw + + `PhšgFže +( +$d +, +$dœs +[ +$j +]); + +256 +$dœFžes + = +$dœ +-> + `li¡Dœ +(); + +257 ià( +$dœFžes + ==ð +nuÎ + || + `couÁ +($dirFiles) === 0) { + +258 +$this +-> + `log +("D–‘šg " . +$dœ +-> + `__toSŒšg +(), $this-> +v”bos™y +); + +259 +Œy + { + +260 +$dœ +-> + `d–‘e +(); + +261 +$dœCouÁ +++; + +262 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +263 +$mes§ge +="UÇbˁØd–‘dœeùÜy " . +$dœ +-> + `__toSŒšg +(); + +264 if( +$this +-> +çžÚ”rÜ +) { + +265 +throw + +Ãw + + `BuždExû±iÚ +( +$mes§ge +); + +267 +$this +-> + `log +( +$mes§ge +, $this-> +qu›t + ? +Projeù +:: +MSG_VERBOSE + : Projeù:: +MSG_WARN +); + +272 ià( +$dœCouÁ + > 0) { + +273 +$this +-> + `log +("D–‘ed $dœCouÁ dœeùÜ" . ( +$dœCouÁ +==1 ? "y" : "›s"è. " from " . +$d +-> + `__toSŒšg +()); + +276 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/EchoTask.php + +1 +Ëv– +) + +46 "”rÜ": +$logËv– + = +Projeù +:: +MSG_ERR +; ; + +47 "w¬nšg": +$logËv– + = +Projeù +:: +MSG_WARN +; ; + +48 "šfo": +$logËv– + = +Projeù +:: +MSG_INFO +; ; + +49 "v”bo£": +$logËv– + = +Projeù +:: +MSG_VERBOSE +; ; + +50 "debug": +$logËv– + = +Projeù +:: +MSG_DEBUG +; ; + +53 ià( + `em±y +( +$this +-> +fže +)) + +55 +$this +-> + `log +($this-> +msg +, +$logËv– +); + +59 ià( +$this +-> +­³nd +) + +61 +$hªdË + = + `fݒ +( +$this +-> +fže +, "a"); + +65 +$hªdË + = + `fݒ +( +$this +-> +fže +, "w"); + +68 + `fwr™e +( +$hªdË +, +$this +-> +msg +); + +70 + `fþo£ +( +$hªdË +); + +75 +funùiÚ + + $£tFže +( +$fže +) + +77 +$this +-> +fže + = ( +¡ršg +è +$fže +; + +78 + } +} + +81 +funùiÚ + + $£tLev– +( +$Ëv– +) + +83 +$this +-> +Ëv– + = ( +¡ršg +è +$Ëv– +; + +84 + } +} + +87 +funùiÚ + + $£tAµ’d +( +$­³nd +) + +89 +$this +-> +­³nd + = +$­³nd +; + +90 + } +} + +93 +funùiÚ + + $£tMsg +( +$msg +) { + +94 +$this +-> + `£tMes§ge +( +$msg +); + +95 + } +} + +98 +funùiÚ + + $£tMes§ge +( +$msg +) { + +99 +$this +-> +msg + = ( +¡ršg +è +$msg +; + +100 + } +} + +103 +funùiÚ + + $addText +( +$msg +) + +105 +$this +-> +msg + = ( +¡ršg +è +$msg +; + +106 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/ExecTask.php + +1 + `execu‹ +(); + +109 +public + +funùiÚ + + $execu‹ +() { + +112 +$myos + = +Phšg +:: + `g‘Prݔty +("os.name"); + +113 +$this +-> + `log +("Myo ð" . +$myos +, +Projeù +:: +MSG_VERBOSE +); + +114 ià(( +$this +-> +os + !=ð +nuÎ +è&& ( + `¡½os +($this->os, +$myos +è==ð +çl£ +)) { + +116 +$this +-> + `log +("NÙ found iÀ" . $this-> +os +, +Projeù +:: +MSG_VERBOSE +); + +120 ià( +$this +-> +dœ + !=ð +nuÎ +) { + +121 ià( +$this +-> +dœ +-> + `isDœeùÜy +()) { + +122 +$cu¼dœ + = + `g‘cwd +(); + +123 @ + `chdœ +( +$this +-> +dœ +-> + `g‘P©h +()); + +125 +throw + +Ãw + + `BuždExû±iÚ +("Cª'ˆchdœo:" . +$this +-> +dœ +-> + `__toSŒšg +()); + +130 ià( +$this +-> +esÿ³ + =ð +Œue +) { + +132 +$this +-> +commªd + = + `esÿ³sh–lcmd +($this->command); + +135 ià( +$this +-> +”rÜ + !=ð +nuÎ +) { + +136 +$this +-> +commªd + .ð' 2> ' . $this-> +”rÜ +-> + `g‘P©h +(); + +137 +$this +-> + `log +("Wr™šgƒ¼Ü ouuˆto: " . $this-> +”rÜ +-> + `g‘P©h +()); + +140 ià( +$this +-> +ouut + !=ð +nuÎ +) { + +141 +$this +-> +commªd + .ð' 1> ' . $this-> +ouut +-> + `g‘P©h +(); + +142 +$this +-> + `log +("Wr™šg snd¬d ouuˆto: " . $this-> +ouut +-> + `g‘P©h +()); + +143 } + `–£if + ( +$this +-> +¥awn +) { + +144 +$this +-> +commªd + .= ' 1>/dev/null'; + +145 +$this +-> + `log +("Sending ouptuto /dev/null"); + +152 ià( +$this +-> +ouut + ==ð +nuÎ + && $this-> +”rÜ + ===‚ull) { + +153 +$this +-> +commªd + .= ' 2>&1'; + +157 ià( +$this +-> +¥awn +) { + +158 +$this +-> +commªd + .= ' &'; + +161 +$this +-> + `log +("Executšg commªd: " . $this-> +commªd +); + +163 +$ouut + = + `¬¿y +(); + +164 +$»tuº + = +nuÎ +; + +165 + `exec +( +$this +-> +commªd +, +$ouut +, +$»tuº +); + +167 ià( +$this +-> +dœ + !=ð +nuÎ +) { + +168 @ + `chdœ +( +$cu¼dœ +); + +171 + `fܗch +( +$ouut + +as + +$lše +) { + +172 +$this +-> + `log +( +$lše +, ($this-> +·s¡hru + ? +Projeù +:: +MSG_INFO + : Projeù:: +MSG_VERBOSE +)); + +175 ià( +$this +-> +»tuºPrݔty +) { + +176 +$this +-> +´ojeù +-> + `£tPrݔty +($this-> +»tuºPrݔty +, +$»tuº +); + +179 if( +$»tuº + !ð0 && +$this +-> +check»tuº +) { + +180 +throw + +Ãw + + `BuždExû±iÚ +("Taskƒxited with code $return"); + +183  +$»tuº +; + +184 + } +} + +190 +funùiÚ + + $£tCommªd +( +$commªd +) { + +191 +$this +-> +commªd + = "" . +$commªd +; + +192 + } +} + +198 +funùiÚ + + $£tEsÿ³ +( +$esÿ³ +) { + +199 +$this +-> +esÿ³ + = ( +boÞ +è +$esÿ³ +; + +200 + } +} + +206 +funùiÚ + + $£tDœ +( +PhšgFže + +$dœ +) { + +207 +$this +-> +dœ + = +$dœ +; + +208 + } +} + +214 +funùiÚ + + $£tOs +( +$os +) { + +215 +$this +-> +os + = ( +¡ršg +è +$os +; + +216 + } +} + +222 +funùiÚ + + $£tOuut +( +PhšgFže + +$f +) { + +223 +$this +-> +ouut + = +$f +; + +224 + } +} + +230 +funùiÚ + + $£tE¼Ü +( +PhšgFže + +$f +) { + +231 +$this +-> +”rÜ + = +$f +; + +232 + } +} + +238 +funùiÚ + + $£tPas¡hru +( +$·s¡hru +) { + +239 +$this +-> +·s¡hru + = ( +boÞ +è +$·s¡hru +; + +240 + } +} + +246 +funùiÚ + + $£tS·wn +( +$¥awn +) { + +247 +$this +-> +¥awn + = ( +boÞ +è +$¥awn +; + +248 + } +} + +254 +funùiÚ + + $£tCheck»tuº +( +$check»tuº +) { + +255 +$this +-> +check»tuº + = ( +boÞ +è +$check»tuº +; + +256 + } +} + +262 +funùiÚ + + $£tR‘uºPrݔty +( +$´Ý +) { + +263 +$this +-> +»tuºPrݔty + = +$´Ý +; + +264 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/ExitTask.php + +1 + `£tMes§ge +( +$v®ue +); + +53 +public + +funùiÚ + + $£tMes§ge +( +$v®ue +) { + +54 +$this +-> +mes§ge + = +$v®ue +; + +55 + } +} + +61 +public + +funùiÚ + + $£tIf +( +$c +) { + +62 +$this +-> +ifCÚd™iÚ + = +$c +; + +63 + } +} + +70 +public + +funùiÚ + + $£tUÆess +( +$c +) { + +71 +$this +-> +uÆessCÚd™iÚ + = +$c +; + +72 + } +} + +77 +public + +funùiÚ + + $maš +() { + +78 ià( +$this +-> + `‹¡IfCÚd™iÚ +(è&& $this-> + `‹¡UÆessCÚd™iÚ +()) { + +79 ià( +$this +-> +mes§ge + !=ð +nuÎ +) { + +80 +throw + +Ãw + + `BuždExû±iÚ +( +$this +-> +mes§ge +); + +82 +throw + +Ãw + + `BuždExû±iÚ +("No message"); + +85 + } +} + +90 +public + +funùiÚ + + $addText +( +$msg +) { + +91 ià( +$this +-> +mes§ge + ==ð +nuÎ +) { + +92 +$this +-> +mes§ge + = ""; + +94 +$this +-> +mes§ge + .ð$this-> +´ojeù +-> + `»¶aûPrݔt›s +( +$msg +); + +95 + } +} + +100 +´iv©e + +funùiÚ + + $‹¡IfCÚd™iÚ +() { + +101 ià( +$this +-> +ifCÚd™iÚ + ==ð +nuÎ + || $this->ifCondition === "") { + +102  +Œue +; + +105  +$this +-> +´ojeù +-> + `g‘Prݔty +($this-> +ifCÚd™iÚ +è!=ð +nuÎ +; + +106 + } +} + +111 +´iv©e + +funùiÚ + + $‹¡UÆessCÚd™iÚ +() { + +112 ià( +$this +-> +uÆessCÚd™iÚ + ==ð +nuÎ + || $this->unlessCondition === "") { + +113  +Œue +; + +115  +$this +-> +´ojeù +-> + `g‘Prݔty +($this-> +uÆessCÚd™iÚ +è==ð +nuÎ +; + +116 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/ForeachTask.php + +1 +ÿΓ + = $this-> +´ojeù +-> + `ü—‹Task +("phingcall"); + +74 +$this +-> +ÿΓ +-> + `£tOwnšgT¬g‘ +($this-> + `g‘OwnšgT¬g‘ +()); + +75 +$this +-> +ÿΓ +-> + `£tTaskName +($this-> + `g‘TaskName +()); + +76 +$this +-> +ÿΓ +-> + `£tLoÿtiÚ +($this-> + `g‘LoÿtiÚ +()); + +77 +$this +-> +ÿΓ +-> + `š™ +(); + +84 +funùiÚ + + $maš +() { + +85 ià( +$this +-> +li¡ + ==ð +nuÎ +) { + +86 +throw + +Ãw + + `BuždExû±iÚ +("Missing†isto iteratehrough"); + +88 ià( + `Œim +( +$this +-> +li¡ +) === '') { + +91 ià( +$this +-> +·¿m + ==ð +nuÎ +) { + +92 +throw + +Ãw + + `BuždExû±iÚ +("You must supply‡…roperty‚ameo set onƒach iteration in…aram"); + +94 ià( +$this +-> +ÿΓT¬g‘ + ==ð +nuÎ +) { + +95 +throw + +Ãw + + `BuždExû±iÚ +("You must supply‡argeto…erform"); + +98 +$ÿΓ + = +$this +-> +ÿΓ +; + +99 +$ÿΓ +-> + `£tT¬g‘ +( +$this +-> +ÿΓT¬g‘ +); + +100 +$ÿΓ +-> + `£tInh”™AÎ +( +Œue +); + +101 +$ÿΓ +-> + `£tInh”™Refs +( +Œue +); + +103 +$¬r + = + `ex¶ode +( +$this +-> +d–im™” +, $this-> +li¡ +); + +105 + `fܗch + ( +$¬r + +as + +$v®ue +) { + +106 +$this +-> + `log +("S‘tšg…¬am '$this->·¿m'Øv®u'$v®ue'", +Projeù +:: +MSG_VERBOSE +); + +107 +$´Ý + = +$ÿΓ +-> + `ü—‹Prݔty +(); + +108 +$´Ý +-> + `£tOv”ride +( +Œue +); + +109 +$´Ý +-> + `£tName +( +$this +-> +·¿m +); + +110 +$´Ý +-> + `£tV®ue +( +$v®ue +); + +111 +$ÿΓ +-> + `maš +(); + +113 + } +} + +115 +funùiÚ + + $£tLi¡ +( +$li¡ +) { + +116 +$this +-> +li¡ + = ( +¡ršg +è +$li¡ +; + +117 + } +} + +119 +funùiÚ + + $£tT¬g‘ +( +$rg‘ +) { + +120 +$this +-> +ÿΓT¬g‘ + = ( +¡ršg +è +$rg‘ +; + +121 + } +} + +123 +funùiÚ + + $£tP¬am +( +$·¿m +) { + +124 +$this +-> +·¿m + = ( +¡ršg +è +$·¿m +; + +125 + } +} + +127 +funùiÚ + + $£tD–im™” +( +$d–im™” +) { + +128 +$this +-> +d–im™” + = ( +¡ršg +è +$d–im™” +; + +129 + } +} + +134 +funùiÚ + + $ü—‹Prݔty +() { + +135  +$this +-> +ÿΓ +-> + `ü—‹Prݔty +(); + +136 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/IfTask.php + +1 +–£IfTasks +[] = +$ei +; + +130 +public + +funùiÚ + + $addTh’ +( +Sequ’tŸlTask + +$t +) { + +131 ià( +$this +-> +th’Tasks + !ð +nuÎ +) { + +132 +throw + +Ãw + + `BuždExû±iÚ +("You must‚ot‚est morehan one into "); + +134 +$this +-> +th’Tasks + = +$t +; + +135 + } +} + +143 +public + +funùiÚ + + $addEl£ +( +Sequ’tŸlTask + +$e +) { + +144 ià( +$this +-> +–£Tasks + !ð +nuÎ +) { + +145 +throw + +Ãw + + `BuždExû±iÚ +("You must‚ot‚est morehan one into "); + +147 +$this +-> +–£Tasks + = +$e +; + +148 + } +} + +150 +public + +funùiÚ + + $maš +() { + +152 ià( +$this +-> + `couÁCÚd™iÚs +() > 1) { + +153 +throw + +Ãw + + `BuždExû±iÚ +("You must‚ot‚est morehan one condition into "); + +155 ià( +$this +-> + `couÁCÚd™iÚs +() < 1) { + +156 +throw + +Ãw + + `BuždExû±iÚ +("You must‚est‡ condition into "); + +158 +$cÚd™iÚs + = +$this +-> + `g‘CÚd™iÚs +(); + +159 +$c + = +$cÚd™iÚs +[0]; + +161 ià( +$c +-> + `ev®u©e +()) { + +162 ià( +$this +-> +th’Tasks + !ð +nuÎ +) { + +163 +$this +-> +th’Tasks +-> + `maš +(); + +166 +$dÚe + = +çl£ +; + +167 +$sz + = + `couÁ +( +$this +-> +–£IfTasks +); + +168  +$i +=0; $˜< +$sz + && ! +$dÚe +; $i++) { + +169 +$ei + = +$this +-> +–£IfTasks +[ +$i +]; + +170 ià( +$ei +-> + `ev®u©e +()) { + +171 +$dÚe + = +Œue +; + +172 +$ei +-> + `maš +(); + +176 ià(! +$dÚe + && +$this +-> +–£Tasks + !ð +nuÎ +) { + +177 +$this +-> +–£Tasks +-> + `maš +(); + +180 + } +} + +187 þas  + cEl£IfTask + +ex‹nds + + mCÚd™iÚBa£ + { + +189 +´iv©e + + m$th’Tasks + = +nuÎ +; + +191 +public + +funùiÚ + + $addTh’ +( +Sequ’tŸlTask + +$t +) { + +192 ià( +$this +-> +th’Tasks + !ð +nuÎ +) { + +193 +throw + +Ãw + + `BuždExû±iÚ +("You must‚ot‚est morehan one into "); + +195 +$this +-> +th’Tasks + = +$t +; + +201 +public + +funùiÚ + + $ev®u©e +() { + +203 ià( +$this +-> + `couÁCÚd™iÚs +() > 1) { + +204 +throw + +Ãw + + `BuždExû±iÚ +("You must‚ot‚est morehan one condition into "); + +206 ià( +$this +-> + `couÁCÚd™iÚs +() < 1) { + +207 +throw + +Ãw + + `BuždExû±iÚ +("You must‚est‡ condition into "); + +210 +$cÚd™iÚs + = +$this +-> + `g‘CÚd™iÚs +(); + +211 +$c + = +$cÚd™iÚs +[0]; + +213  +$c +-> + `ev®u©e +(); + +214 + } +} + +219 +public + +funùiÚ + + $maš +() { + +220 ià( +$this +-> +th’Tasks + !ð +nuÎ +) { + +221 +$this +-> +th’Tasks +-> + `maš +(); + +223 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/IncludePathTask.php + +1 +þas¥©h + ==ð +nuÎ +) { + +68 +$this +-> +þas¥©h + = +$þas¥©h +; + +70 +$this +-> +þas¥©h +-> + `­³nd +( +$þas¥©h +); + +77 +public + +funùiÚ + + $ü—‹CÏs¥©h +() { + +78 ià( +$this +-> +þas¥©h + ==ð +nuÎ +) { + +79 +$this +-> +þas¥©h + = +Ãw + + `P©h +($this-> +´ojeù +); + +81  +$this +-> +þas¥©h +-> + `ü—‹P©h +(); + +82 + } +} + +87 +public + +funùiÚ + + $£tCÏs¥©hRef +( +Reã»nû + +$r +) { + +88 +$this +-> +þas¥©hId + = +$r +-> + `g‘RefId +(); + +89 +$this +-> + `ü—‹CÏs¥©h +()-> + `£tRefid +( +$r +); + +90 + } +} + +94 +public + +funùiÚ + + $maš +() { + +97 ià( + `is_objeù +( +$this +-> +þas¥©h +)) { + +98 +$this +-> +þas¥©h + = $this->þas¥©h-> + `__toSŒšg +(); + +101 ià( + `em±y +( +$this +-> +þas¥©h +)) { + +102 +throw + +Ãw + + `BuždExû±iÚ +("Provided classpath wasƒmpty."); + +105 +$cu¼_·¹s + = + `ex¶ode +( +PATH_SEPARATOR +, + `g‘_šþude_·th +()); + +106 +$add_·¹s + = + `ex¶ode +( +PATH_SEPARATOR +, +$this +-> +þas¥©h +); + +107 +$Ãw_·¹s + = + `¬¿y_diff +( +$add_·¹s +, +$cu¼_·¹s +); + +109 ià( +$Ãw_·¹s +) { + +110 +$this +-> + `log +("P»³ndšg‚ew inþude_·th compڒts: " . + `im¶ode +( +PATH_SEPARATOR +, +$Ãw_·¹s +), +Projeù +:: +MSG_VERBOSE +); + +111 + `£t_šþude_·th +( + `im¶ode +( +PATH_SEPARATOR +, + `¬¿y_m”ge +( +$Ãw_·¹s +, +$cu¼_·¹s +))); + +114 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/InputTask.php + +1 +v®id¬gs + = +$v®id¬gs +; + +62 +public + +funùiÚ + + $£tPrݔtyName +( +$Çme +) { + +63 +$this +-> +´Ý”tyName + = +$Çme +; + +64 + } +} + +70 +public + +funùiÚ + + $£tMes§ge + ( +$mes§ge +) { + +71 +$this +-> +mes§ge + = +$mes§ge +; + +72 + } +} + +77 +public + +funùiÚ + + $addText +( +$msg +) { + +78 +$this +-> +mes§ge + .ð$this-> +´ojeù +-> + `»¶aûPrݔt›s +( +$msg +); + +79 + } +} + +85 +public + +funùiÚ + + $£tDeçuÉV®ue +( +$v +) { + +86 +$this +-> +deçuÉV®ue + = +$v +; + +87 + } +} + +93 +public + +funùiÚ + + $£tProm±Ch¬ +( +$c +) { + +94 +$this +-> +´om±Ch¬ + = +$c +; + +95 + } +} + +101 +public + +funùiÚ + + $maš +() { + +103 ià( +$this +-> +´Ý”tyName + ==ð +nuÎ +) { + +104 +throw + +Ãw + + `BuždExû±iÚ +("You must specify‡ value for…ropertyName‡ttribute."); + +107 ià( +$this +-> +v®id¬gs + !=ð +nuÎ +) { + +108 +$acû± + = + `´eg_¥l™ +('/[\s,]+/', +$this +-> +v®id¬gs +); + +111 +$ye¢o + = +çl£ +; + +112 ià( + `couÁ +( +$acû± +) == 2) { + +113 +$ye¢o + = +Œue +; + +114 + `fܗch +( +$acû± + +as + +$ªs +) { + +115 if(! +SŒšgH–³r +:: + `isBoޗn +( +$ªs +)) { + +116 +$ye¢o + = +çl£ +; + +121 ià( +$ye¢o +è +$»que¡ + = +Ãw + + `YesNoIÅutReque¡ +( +$this +-> +mes§ge +, +$acû± +); + +122 +$»que¡ + = +Ãw + + `MuɝËChoiûIÅutReque¡ +( +$this +-> +mes§ge +, +$acû± +); + +124 +$»que¡ + = +Ãw + + `IÅutReque¡ +( +$this +-> +mes§ge +); + +128 +$»que¡ +-> + `£tDeçuÉV®ue +( +$this +-> +´ojeù +-> + `g‘Prݔty +($this-> +´Ý”tyName +)); + +130 +$»que¡ +-> + `£tProm±Ch¬ +( +$this +-> +´om±Ch¬ +); + +133 ià( +$this +-> +deçuÉV®ue + !=ð +nuÎ +) { + +134 +$»que¡ +-> + `£tDeçuÉV®ue +( +$this +-> +deçuÉV®ue +); + +137 +$this +-> +´ojeù +-> + `g‘IÅutHªdËr +()-> + `hªdËIÅut +( +$»que¡ +); + +139 +$v®ue + = +$»que¡ +-> + `g‘IÅut +(); + +141 ià( +$v®ue + !=ð +nuÎ +) { + +142 +$this +-> +´ojeù +-> + `£tU£rPrݔty +($this-> +´Ý”tyName +, +$v®ue +); + +144 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/MatchingTask.php + +1 +fže£t + = +Ãw + + `FžeS‘ +(); + +62 +public + +funùiÚ + + $£tProjeù +( +Projeù + +$´ojeù +) { + +63 +·»Á +:: + `£tProjeù +( +$´ojeù +); + +64 +$this +-> +fže£t +-> + `£tProjeù +( +$´ojeù +); + +65 + } +} + +71 +public + +funùiÚ + + $ü—‹Inþude +() { + +72  +$this +-> +fže£t +-> + `ü—‹Inþude +(); + +73 + } +} + +79 +public + +funùiÚ + + $ü—‹InþudesFže +() { + +80  +$this +-> +fže£t +-> + `ü—‹InþudesFže +(); + +81 + } +} + +87 +public + +funùiÚ + + $ü—‹Exþude +() { + +88  +$this +-> +fže£t +-> + `ü—‹Exþude +(); + +89 + } +} + +95 +public + +funùiÚ + + $ü—‹ExþudesFže +() { + +96  +$this +-> +fže£t +-> + `ü—‹ExþudesFže +(); + +97 + } +} + +103 +public + +funùiÚ + + $ü—‹P©‹ºS‘ +() { + +104  +$this +-> +fže£t +-> + `ü—‹P©‹ºS‘ +(); + +105 + } +} + +114 +public + +funùiÚ + + $£tInþudes +( +$šþudes +) { + +115 +$this +-> +fže£t +-> + `£tInþudes +( +$šþudes +); + +116 + } +} + +124 +public + +funùiÚ + + $£tExþudes +( +$exþudes +) { + +125 +$this +-> +fže£t +-> + `£tExþudes +( +$exþudes +); + +126 + } +} + +136 +public + +funùiÚ + + $£tDeçuÉexþudes +( +$u£DeçuÉExþudes +) { + +137 +$this +-> +u£DeçuÉExþudes + = ( +boޗn +è +$u£DeçuÉExþudes +; + +138 + } +} + +144 +´Ùeùed + +funùiÚ + + $g‘DœeùÜySÿ” +( +PhšgFže + +$ba£Dœ +) { + +145 +$this +-> +fže£t +-> + `£tDœ +( +$ba£Dœ +); + +146 +$this +-> +fže£t +-> + `£tDeçuÉexþudes +($this-> +u£DeçuÉExþudes +); + +147  +$this +-> +fže£t +-> + `g‘DœeùÜySÿ” +($this-> +´ojeù +); + +148 + } +} + +157 +public + +funùiÚ + + $£tInþudesfže +( +PhšgFže + +$šþudesfže +) { + +158 +$this +-> +fže£t +-> + `£tInþudesfže +( +šþudesfže +); + +159 + } +} + +168 +public + +funùiÚ + + $£tExþudesfže +( +PhšgFže + +$exþudesfže +) { + +169 +$this +-> +fže£t +-> + `£tExþudesfže +( +$exþudesfže +); + +170 + } +} + +179 +public + +funùiÚ + + $£tCa£S’s™ive +( +$isCa£S’s™ive +) { + +180 +$this +-> +fže£t +-> + `£tCa£S’s™ive +( +$isCa£S’s™ive +); + +181 + } +} + +189 +public + +funùiÚ + + $£tFÞlowSymlšks +( +$fÞlowSymlšks +) { + +190 +$this +-> +fže£t +-> + `£tFÞlowSymlšks +( +$fÞlowSymlšks +); + +191 + } +} + +198 +public + +funùiÚ + + $hasS–eùÜs +() { + +199  +$this +-> +fže£t +-> + `hasS–eùÜs +(); + +200 + } +} + +207 +public + +funùiÚ + + $£ËùÜCouÁ +() { + +208  +$this +-> +fže£t +-> + `£ËùÜCouÁ +(); + +209 + } +} + +216 +public + +funùiÚ + + $g‘S–eùÜs +( +Projeù + +$p +) { + +217  +$this +-> +fže£t +-> + `g‘S–eùÜs +( +$p +); + +218 + } +} + +225 +public + +funùiÚ + + $£ËùÜEËm’ts +() { + +226  +$this +-> +fže£t +-> + `£ËùÜEËm’ts +(); + +227 + } +} + +235 +public + +funùiÚ + + $­³ndS–eùÜ +( +FžeS–eùÜ + +$£ËùÜ +) { + +236 +$this +-> +fže£t +-> + `­³ndS–eùÜ +( +$£ËùÜ +); + +237 + } +} + +245 +public + +funùiÚ + + $ü—‹S–eùÜ +() { + +246  +$this +-> +fže£t +-> + `ü—‹S–eùÜ +(); + +247 + } +} + +253 +public + +funùiÚ + + $ü—‹And +() { + +254  +$this +-> +fže£t +-> + `ü—‹And +(); + +255 + } +} + +261 +public + +funùiÚ + + $ü—‹Or +() { + +262  +$this +-> +fže£t +-> + `ü—‹Or +(); + +263 + } +} + +269 +public + +funùiÚ + + $ü—‹NÙ +() { + +270  +$this +-> +fže£t +-> + `ü—‹NÙ +(); + +271 + } +} + +277 +public + +funùiÚ + + $ü—‹NÚe +() { + +278  +$this +-> +fže£t +-> + `ü—‹NÚe +(); + +279 + } +} + +285 +public + +funùiÚ + + $ü—‹Majܙy +() { + +286  +$this +-> +fže£t +-> + `ü—‹Majܙy +(); + +287 + } +} + +293 +public + +funùiÚ + + $ü—‹D©e +() { + +294  +$this +-> +fže£t +-> + `addD©e +(); + +295 + } +} + +301 +public + +funùiÚ + + $ü—‹Size +() { + +302  +$this +-> +fže£t +-> + `ü—‹Size +(); + +303 + } +} + +309 +public + +funùiÚ + + $ü—‹Fž’ame +() { + +310  +$this +-> +fže£t +-> + `ü—‹Fž’ame +(); + +311 + } +} + +317 +public + +funùiÚ + + $ü—‹Cu¡om +() { + +318  +$this +-> +fže£t +-> + `ü—‹Cu¡om +(); + +319 + } +} + +325 +public + +funùiÚ + + $ü—‹Cڏšs +() { + +326  +$this +-> +fže£t +-> + `ü—‹Cڏšs +(); + +327 + } +} + +333 +public + +funùiÚ + + $ü—‹P»£Á +() { + +334  +$this +-> +fže£t +-> + `ü—‹P»£Á +(); + +335 + } +} + +341 +public + +funùiÚ + + $ü—‹D•th +() { + +342  +$this +-> +fže£t +-> + `ü—‹D•th +(); + +343 + } +} + +349 +public + +funùiÚ + + $ü—‹D•’d +() { + +350  +$this +-> +fže£t +-> + `ü—‹D•’d +(); + +351 + } +} + +358 +´Ùeùed + +fš® + +funùiÚ + + $g‘Im¶ic™FžeS‘ +() { + +359  +$this +-> +fže£t +; + +360 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/MkdirTask.php + +1 +dœ + ==ð +nuÎ +) { + +44 +throw + +Ãw + + `BuždExû±iÚ +("dœ‡‰ribu‹ i »quœed", +$this +-> +loÿtiÚ +); + +46 ià( +$this +-> +dœ +-> + `isFže +()) { + +47 +throw + +Ãw + + `BuždExû±iÚ +("UÇbˁØü—‹ dœeùÜy‡ ¨fž®»adyƒxi¡ w™hh©‚ame: " . +$this +-> +dœ +-> + `g‘AbsÞu‹P©h +()); + +49 ià(! +$this +-> +dœ +-> + `exi¡s +()) { + +50 +$»suÉ + = +$this +-> +dœ +-> + `mkdœs +(); + +51 ià(! +$»suÉ +) { + +52 +$msg + = "DœeùÜy " . +$this +-> +dœ +-> + `g‘AbsÞu‹P©h +() . " creation was‚ot successful for‡n unknown„eason"; + +53 +throw + +Ãw + + `BuždExû±iÚ +( +$msg +, +$this +-> +loÿtiÚ +); + +55 +$this +-> + `log +("C»©ed dœ: " . $this-> +dœ +-> + `g‘AbsÞu‹P©h +()); + +60 +funùiÚ + + $£tDœ +( +PhšgFže + +$dœ +) { + +61 +$this +-> +dœ + = +$dœ +; + +62 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/MoveTask.php + +1 +fÜûOv”wr™e + = +Œue +; + +55 +´Ùeùed + +funùiÚ + + $v®id©eA‰ribu‹s +() { + +56 ià( +$this +-> +fže + !=ð +nuÎ + && $this->fže-> + `isDœeùÜy +()) { + +57 ià(( +$this +-> +de¡Fže + !=ð +nuÎ + && $this-> +de¡Dœ + !==‚ull) + +58 || ( +$this +-> +de¡Fže + ==ð +nuÎ + && $this-> +de¡Dœ + ===‚ull)) { + +59 +throw + +Ãw + + `BuždExû±iÚ +("One‡nd only one ofofile‡ndodir must be set."); + +62 ià( +$this +-> +de¡Fže + ==ð +nuÎ +) + +64 +$this +-> +de¡Fže + = +Ãw + + `PhšgFže +($this-> +de¡Dœ +, $this-> +fže +-> + `g‘Name +()); + +67 ià( +$this +-> +de¡Dœ + ==ð +nuÎ +) + +69 +$this +-> +de¡Dœ + = $this-> +de¡Fže +-> + `g‘P¬’tFže +(); + +72 +$this +-> +com¶‘eDœM­ +[$this-> +fže +-> + `g‘AbsÞu‹P©h +()] = $this-> +de¡Fže +->getAbsolutePath(); + +74 +$this +-> +fže + = +nuÎ +; + +76 +·»Á +:: + `v®id©eA‰ribu‹s +(); + +78 + } +} + +80 +´Ùeùed + +funùiÚ + + $doWÜk +() { + +81 ià( + `couÁ +( +$this +-> +com¶‘eDœM­ +) > 0) + +83 + `fܗch + ( +$this +-> +com¶‘eDœM­ + +as + +$äom + => +$to +) + +85 +$f + = +Ãw + + `PhšgFže +( +$äom +); + +86 +$d + = +Ãw + + `PhšgFže +( +$to +); + +88 +$moved + = +çl£ +; + +89 +Œy + { + +90 +$this +-> + `log +("A‰em±šgØ»Çm$äomØ$to", $this-> +v”bos™y +); + +91 +$this +-> + `»ÇmeFže +( +$f +, +$d +, $this-> +fÜûOv”wr™e +); + +92 +$moved + = +Œue +; + +93 } + `ÿtch + ( +IOExû±iÚ + +$iÛ +) { + +94 +$moved + = +çl£ +; + +95 +$this +-> + `log +("FažedØ»Çm$äomØ$to: " . +$iÛ +-> + `g‘Mes§ge +(), $this-> +v”bos™y +); + +100 +$cÝyM­Size + = + `couÁ +( +$this +-> +fžeCÝyM­ +); + +101 ià( +$cÝyM­Size + > 0) { + +103 +$this +-> + `log +("Movšg $cÝyM­Sizfže tØ" . $this-> +de¡Dœ +-> + `g‘AbsÞu‹P©h +()); + +105 + `fܗch +( +$this +-> +fžeCÝyM­ + +as + +$äom + => +$to +) { + +106 ià( +$äom + =ð +$to +) { + +107 +$this +-> + `log +("Skpšg s–f-movoà$äom", $this-> +v”bos™y +); + +111 +$moved + = +çl£ +; + +112 +$f + = +Ãw + + `PhšgFže +( +$äom +); + +113 +$d + = +Ãw + + `PhšgFže +( +$to +); + +115 +$moved + = +çl£ +; + +116 +Œy + { + +117 +$this +-> + `log +("A‰em±šgØ»Çm$äomØ$to", $this-> +v”bos™y +); + +118 +$this +-> + `»ÇmeFže +( +$f +, +$d +, $this-> +fÜûOv”wr™e +); + +119 +$moved + = +Œue +; + +120 } + `ÿtch + ( +IOExû±iÚ + +$iÛ +) { + +121 +$moved + = +çl£ +; + +122 +$this +-> + `log +("FažedØ»Çm$äomØ$to: " . +$iÛ +-> + `g‘Mes§ge +(), $this-> +v”bos™y +); + +125 ià(! +$moved +) { + +126 +Œy + { + +127 +$this +-> + `log +("Movšg $äomØ$to", $this-> +v”bos™y +); + +129 +$this +-> +fžeUtžs +-> + `cÝyFže +( +$f +, +$d +, $this-> +fÜûOv”wr™e +, $this-> +´e£rveLMT +, $this-> +fž‹rChašs +, $this-> + `g‘Projeù +()); + +131 +$f + = +Ãw + + `PhšgFže +( +$äomFže +); + +132 +$f +-> + `d–‘e +(); + +133 } + `ÿtch + ( +IOExû±iÚ + +$iÛ +) { + +134 +$msg + = "FažedØmov$äomØ$to: " . +$iÛ +-> + `g‘Mes§ge +(); + +135 +throw + +Ãw + + `BuždExû±iÚ +( +$msg +, +$this +-> +loÿtiÚ +); + +142 ià( +$this +-> +šþudeEm±y +) { + +143 +$e + = + `¬¿y_keys +( +$this +-> +dœCÝyM­ +); + +144 +$couÁ + = 0; + +145 + `fܗch + ( +$e + +as + +$dœ +) { + +146 +$d + = +Ãw + + `PhšgFže +(( +¡ršg +è +$dœ +); + +147 ià(! +$d +-> + `exi¡s +()) { + +148 ià(! +$d +-> + `mkdœs +()) { + +149 +$this +-> + `log +("UÇbˁØü—‹ dœeùÜy " . +$d +-> + `g‘AbsÞu‹P©h +(), +Projeù +:: +MSG_ERR +); + +151 +$couÁ +++; + +155 ià( +$couÁ + > 0) { + +156 +$this +-> + `log +("moved $couÁƒm±y dœeùÜ" . ( +$couÁ + =ð1 ? "y" : "›s"è. "Ø" . $this-> +de¡Dœ +-> + `g‘AbsÞu‹P©h +()); + +160 ià( + `couÁ +( +$this +-> +fže£ts +) > 0) { + +162 + `fܗch +( +$this +-> +fže£ts + +as + +$fs +) { + +163 +$dœ + = +$fs +-> + `g‘Dœ +( +$this +-> +´ojeù +); + +164 ià( +$this +-> + `okToD–‘e +( +$dœ +)) { + +165 +$this +-> + `d–‘eDœ +( +$dœ +); + +169 + } +} + +172 +´iv©e + +funùiÚ + + $okToD–‘e +( +$d +) { + +173 +$li¡ + = +$d +-> + `li¡Dœ +(); + +174 ià( +$li¡ + ==ð +nuÎ +) { + +175  +çl£ +; + +178 + `fܗch +( +$li¡ + +as + +$s +) { + +179 +$f + = +Ãw + + `PhšgFže +( +$d +, +$s +); + +180 ià( +$f +-> + `isDœeùÜy +()) { + +181 ià(! +$this +-> + `okToD–‘e +( +$f +)) { + +182  +çl£ +; + +186  +çl£ +; + +189  +Œue +; + +190 + } +} + +193 +´iv©e + +funùiÚ + + $d–‘eDœ +( +$d +) { + +195 +$li¡ + = +$d +-> + `li¡Dœ +(); + +196 ià( +$li¡ + ==ð +nuÎ +) { + +200 + `fܗch +( +$li¡ + +as + +$âame +) { + +201 +$f + = +Ãw + + `PhšgFže +( +$d +, +$âame +); + +202 ià( +$f +-> + `isDœeùÜy +()) { + +203 +$this +-> + `d–‘eDœ +( +$f +); + +205 +throw + +Ãw + + `BuždExû±iÚ +("UNEXPECTED ERROR - Thfž" . +$f +-> + `g‘AbsÞu‹P©h +() . " should‚otƒxist!"); + +209 +$this +-> + `log +("D–‘šg dœeùÜy " . +$d +-> + `g‘P©h +(), $this-> +v”bos™y +); + +210 +Œy + { + +211 +$d +-> + `d–‘e +(); + +212 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +213 +throw + +Ãw + + `BuždExû±iÚ +("UÇbˁØd–‘dœeùÜy " . +$d +-> + `__toSŒšg +(è. ": " . +$e +-> + `g‘Mes§ge +()); + +215 + } +} + +225 +´iv©e + +funùiÚ + + $»ÇmeFže +( +PhšgFže + +$sourûFže +, PhšgFž +$de¡Fže +, +$ov”wr™e +) { + +226 +$»Çmed + = +Œue +; + +229 +$·»Á + = +$de¡Fže +-> + `g‘P¬’tFže +(); + +230 ià( +$·»Á + !=ð +nuÎ +) { + +231 ià(! +$·»Á +-> + `exi¡s +()) { + +232 +$·»Á +-> + `mkdœs +(); + +235 ià( +$de¡Fže +-> + `exi¡s +()) { + +236 +Œy + { + +237 +$de¡Fže +-> + `d–‘e +(); + +238 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +239 +throw + +Ãw + + `BuždExû±iÚ +("UÇbˁػmovexi¡šg fž" . +$de¡Fže +-> + `__toSŒšg +(è. ": " . +$e +-> + `g‘Mes§ge +()); + +242 +$»Çmed + = +$sourûFže +-> + `»ÇmeTo +( +$de¡Fže +); + +244  +$»Çmed +; + +245 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/PhingCallTask.php + +1 +šh”™AÎ + = ( +boޗn +è +$šh”™ +; + +93 +funùiÚ + + $£tInh”™Refs +( +$šh”™Refs +) { + +94 +$this +-> +šh”™Refs + = ( +boޗn +è +$šh”™Refs +; + +95 + } +} + +101 +funùiÚ + + $ü—‹P¬am +() { + +102 ià( +$this +-> +ÿΓ + ==ð +nuÎ +) { + +103 +$this +-> + `š™ +(); + +105  +$this +-> +ÿΓ +-> + `ü—‹Prݔty +(); + +106 + } +} + +111 +funùiÚ + + $ü—‹Prݔty +() { + +112 ià( +$this +-> +ÿΓ + ==ð +nuÎ +) { + +113 +$this +-> + `š™ +(); + +115  +$this +-> +ÿΓ +-> + `ü—‹Prݔty +(); + +116 + } +} + +121 +funùiÚ + + $£tT¬g‘ +( +$rg‘ +) { + +122 +$this +-> +subT¬g‘ + = ( +¡ršg +è +$rg‘ +; + +123 + } +} + +129 +funùiÚ + + $š™ +() { + +130 +$this +-> +ÿΓ + = $this-> +´ojeù +-> + `ü—‹Task +("phing"); + +131 +$this +-> +ÿΓ +-> + `£tOwnšgT¬g‘ +($this-> + `g‘OwnšgT¬g‘ +()); + +132 +$this +-> +ÿΓ +-> + `£tTaskName +($this-> + `g‘TaskName +()); + +133 +$this +-> +ÿΓ +-> + `£tH®tOnFažu» +( +Œue +); + +134 +$this +-> +ÿΓ +-> + `£tLoÿtiÚ +($this-> + `g‘LoÿtiÚ +()); + +135 +$this +-> +ÿΓ +-> + `š™ +(); + +136 + } +} + +143 +funùiÚ + + $maš +() { + +145 +$this +-> + `log +("Rušg PhšgC®lTask f܁¬g‘ '" . $this-> +subT¬g‘ + . "'", +Projeù +:: +MSG_DEBUG +); + +146 ià( +$this +-> +ÿΓ + ==ð +nuÎ +) { + +147 +$this +-> + `š™ +(); + +150 ià( +$this +-> +subT¬g‘ + ==ð +nuÎ +) { + +151 +throw + +Ãw + + `BuždExû±iÚ +("A‰ribu‹¬g‘ i »quœed.", +$this +-> + `g‘LoÿtiÚ +()); + +154 +$this +-> +ÿΓ +-> + `£tPhšgfže +($this-> +´ojeù +-> + `g‘Prݔty +("phing.file")); + +155 +$this +-> +ÿΓ +-> + `£tT¬g‘ +($this-> +subT¬g‘ +); + +156 +$this +-> +ÿΓ +-> + `£tInh”™AÎ +($this-> +šh”™AÎ +); + +157 +$this +-> +ÿΓ +-> + `£tInh”™Refs +($this-> +šh”™Refs +); + +158 +$this +-> +ÿΓ +-> + `maš +(); + +159 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/PhingTask.php + +1 +h®tOnFažu» + = ( +boޗn +è +$hof +; + +93 +public + +funùiÚ + + $š™ +() { + +94 +$this +-> +ÃwProjeù + = +Ãw + + `Projeù +(); + +95 +$tdf + = +$this +-> +´ojeù +-> + `g‘TaskDefš™iÚs +(); + +96 +$this +-> +ÃwProjeù +-> + `addTaskDefš™iÚ +("´Ý”ty", +$tdf +["property"]); + +97 + } +} + +109 +´iv©e + +funùiÚ + + $»š™ +() { + +110 +$this +-> + `š™ +(); + +111 +$couÁ + = + `couÁ +( +$this +-> +´Ý”t›s +); + +112  +$i + = 0; $˜< +$couÁ +; $i++) { + +113 +$p + = +$this +-> +´Ý”t›s +[ +$i +]; + +114 +$ÃwP + = +$this +-> +ÃwProjeù +-> + `ü—‹Task +("property"); + +115 +$ÃwP +-> + `£tName +( +$p +-> + `g‘Name +()); + +116 ià( +$p +-> + `g‘V®ue +(è!=ð +nuÎ +) { + +117 +$ÃwP +-> + `£tV®ue +( +$p +-> + `g‘V®ue +()); + +119 ià( +$p +-> + `g‘Fže +(è!=ð +nuÎ +) { + +120 +$ÃwP +-> + `£tFže +( +$p +-> + `g‘Fže +()); + +122 ià( +$p +-> + `g‘P»fix +(è!=ð +nuÎ +) { + +123 +$ÃwP +-> + `£tP»fix +( +$p +-> + `g‘P»fix +()); + +125 ià( +$p +-> + `g‘Refid +(è!=ð +nuÎ +) { + +126 +$ÃwP +-> + `£tRefid +( +$p +-> + `g‘Refid +()); + +128 ià( +$p +-> + `g‘EnvœÚm’t +(è!=ð +nuÎ +) { + +129 +$ÃwP +-> + `£tEnvœÚm’t +( +$p +-> + `g‘EnvœÚm’t +()); + +131 ià( +$p +-> + `g‘U£rPrݔty +(è!=ð +nuÎ +) { + +132 +$ÃwP +-> + `£tU£rPrݔty +( +$p +-> + `g‘U£rPrݔty +()); + +134 ià( +$p +-> + `g‘Ov”ride +(è!=ð +nuÎ +) { + +135 +$ÃwP +-> + `£tOv”ride +( +$p +-> + `g‘Ov”ride +()); + +137 +$this +-> +´Ý”t›s +[ +$i +] = +$ÃwP +; + +139 + } +} + +146 +public + +funùiÚ + + $maš +() { + +149 ià( +$this +-> +phšgFže + !=ð +nuÎ + +Ü + $this-> +dœ + !==‚ull) { + +150 +$this +-> + `´oûssFže +(); + +154 ià( + `em±y +( +$this +-> +fže£ts +)) { + +159 +$§vedDœ + = +$this +-> +dœ +; + +160 +$§vedPhšgFže + = +$this +-> +phšgFže +; + +161 +$§vedT¬g‘ + = +$this +-> +ÃwT¬g‘ +; + +167 + `fܗch +( +$this +-> +fže£ts + +as + +$fs +) { + +169 +$ds + = +$fs +-> + `g‘DœeùÜySÿ” +( +$this +-> +´ojeù +); + +171 +$äomDœ + = +$fs +-> + `g‘Dœ +( +$this +-> +´ojeù +); + +172 +$¤cFžes + = +$ds +-> + `g‘InþudedFžes +(); + +174 + `fܗch +( +$¤cFžes + +as + +$âame +) { + +175 +$f + = +Ãw + + `PhšgFže +( +$ds +-> + `g‘ba£dœ +(), +$âame +); + +176 +$f + = $f-> + `g‘AbsÞu‹Fže +(); + +177 +$this +-> +phšgFže + = +$f +-> + `g‘AbsÞu‹P©h +(); + +178 +$this +-> +dœ + = +$f +-> + `g‘P¬’tFže +(); + +179 +$this +-> + `´oûssFže +(); + +184 +$this +-> +dœ + = +$§vedDœ +; + +185 +$this +-> +phšgFže + = +$§vedPhšgFže +; + +186 +$this +-> +ÃwT¬g‘ + = +$§vedT¬g‘ +; + +189 ià( +$this +-> +dœ + !=ð +nuÎ +) { + +190 + `chdœ +( +$this +-> +dœ +-> + `g‘AbsÞu‹P©h +()); + +193 + } +} + +200 +´iv©e + +funùiÚ + + $´oûssFže +() { + +202 +$buždFažed + = +çl£ +; + +203 +$§vedDœ + = +$this +-> +dœ +; + +204 +$§vedPhšgFže + = +$this +-> +phšgFže +; + +205 +$§vedT¬g‘ + = +$this +-> +ÃwT¬g‘ +; + +207 +$§vedBa£dœAbsP©h + = +nuÎ +; + +209 +Œy + { + +211 ià( +$this +-> +ÃwProjeù + ==ð +nuÎ +) { + +212 +$this +-> + `»š™ +(); + +215 +$this +-> + `š™ŸlizeProjeù +(); + +217 ià( +$this +-> +dœ + !=ð +nuÎ +) { + +219 +$dœAbsP©h + = +$this +-> +dœ +-> + `g‘AbsÞu‹P©h +(); + +227 +$§vedBa£dœAbsP©h + = +$this +-> + `g‘Projeù +()-> + `g‘Ba£dœ +()-> + `g‘AbsÞu‹P©h +(); + +229 +$this +-> +ÃwProjeù +-> + `£tBa£dœ +($this-> +dœ +); + +233 +$this +-> +dœ + = +Ãw + + `PhšgFže +( +$dœAbsP©h +); + +235 ià( +$§vedDœ + !=ð +nuÎ +) { + +236 +$this +-> +ÃwProjeù +-> + `£tInh”™edPrݔty +("´ojeù.ba£dœ", $this-> +dœ +-> + `g‘AbsÞu‹P©h +()); + +243 +$this +-> +dœ + = $this-> + `g‘Projeù +()-> + `g‘Ba£dœ +(); + +246 +$this +-> + `ov”ridePrݔt›s +(); + +247 ià( +$this +-> +phšgFže + ==ð +nuÎ +) { + +248 +$this +-> +phšgFže + = "build.xml"; + +251 +$fu + = +Ãw + + `FžeUtžs +(); + +252 +$fže + = +$fu +-> + `»sÞveFže +( +$this +-> +dœ +, $this-> +phšgFže +); + +253 +$this +-> +phšgFže + = +$fže +-> + `g‘AbsÞu‹P©h +(); + +255 +$this +-> + `log +("C®lšg Buždfž'" . $this-> +phšgFže + . "' w™h¬g‘ '" . $this-> +ÃwT¬g‘ + . "'"); + +257 +$this +-> +ÃwProjeù +-> + `£tU£rPrݔty +("phšg.fže", $this-> +phšgFže +); + +259 +ProjeùCÚfigu¿tÜ +:: + `cÚfigu»Projeù +( +$this +-> +ÃwProjeù +, +Ãw + + `PhšgFže +($this-> +phšgFže +)); + +261 ià( +$this +-> +ÃwT¬g‘ + ==ð +nuÎ +) { + +262 +$this +-> +ÃwT¬g‘ + = $this-> +ÃwProjeù +-> + `g‘DeçuÉT¬g‘ +(); + +266 ià( +$this +-> +ÃwProjeù +-> + `g‘Ba£Dœ +(è=ð$this-> +´ojeù +->getBaseDir() && + +267 +$this +-> +ÃwProjeù +-> + `g‘Prݔty +("phšg.fže"è=ð$this-> +´ojeù +->getProperty("phing.file") && + +268 +$this +-> + `g‘OwnšgT¬g‘ +(è!=ð +nuÎ + && + +269 +$this +-> +ÃwT¬g‘ + =ð$this-> + `g‘OwnšgT¬g‘ +()-> + `g‘Name +()) { + +271 +throw + +Ãw + + `BuždExû±iÚ +("phingask calling its own…arentarget"); + +274 +$this +-> + `addReã»nûs +(); + +275 +$this +-> +ÃwProjeù +-> + `execu‹T¬g‘ +($this-> +ÃwT¬g‘ +); + +277 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +278 +$buždFažed + = +Œue +; + +279 +$this +-> + `log +( +$e +-> + `g‘Mes§ge +(), +Projeù +:: +MSG_ERR +); + +280 ià( +Phšg +:: + `g‘MsgOuutLev– +(è<ð +Projeù +:: +MSG_DEBUG +) { + +281 +$lšes + = + `ex¶ode +("\n", +$e +-> + `g‘T¿ûAsSŒšg +()); + +282 + `fܗch +( +$lšes + +as + +$lše +) { + +283 +$this +-> + `log +( +$lše +, +Projeù +:: +MSG_DEBUG +); + +292 +$this +-> +ÃwProjeù + = +nuÎ +; + +293 +$pkeys + = + `¬¿y_keys +( +$this +-> +´Ý”t›s +); + +294 + `fܗch +( +$pkeys + +as + +$k +) { + +295 +$this +-> +´Ý”t›s +[ +$k +]-> + `£tProjeù +( +nuÎ +); + +298 +$this +-> +dœ + = +$§vedDœ +; + +299 +$this +-> +phšgFže + = +$§vedPhšgFže +; + +300 +$this +-> +ÃwT¬g‘ + = +$§vedT¬g‘ +; + +303 ià( +$§vedBa£dœAbsP©h + !=ð +nuÎ +) { + +304 + `chdœ +( +$§vedBa£dœAbsP©h +); + +307 ià( +$this +-> +h®tOnFažu» + && +$buždFažed +) { + +308 +throw + +Ãw + + `BuždExû±iÚ +("Execution ofhearget buildfile failed. Aborting."); + +310 + } +} + +324 +´iv©e + +funùiÚ + + $š™ŸlizeProjeù +() { + +326 +$this +-> +ÃwProjeù +-> + `£tIÅutHªdËr +($this-> +´ojeù +-> + `g‘IÅutHªdËr +()); + +328 + `fܗch +( +$this +-> +´ojeù +-> + `g‘BuždLi¡’”s +(è +as + +$li¡’” +) { + +329 +$this +-> +ÃwProjeù +-> + `addBuždLi¡’” +( +$li¡’” +); + +337 + `fܗch + ( +$this +-> +´ojeù +-> + `g‘D©aTy³Defš™iÚs +(è +as + +$ty³Name + => +$ty³CÏss +) { + +338 +$this +-> +ÃwProjeù +-> + `addD©aTy³Defš™iÚ +( +$ty³Name +, +$ty³CÏss +); + +342 + `fܗch + ( +$this +-> +´ojeù +-> + `g‘TaskDefš™iÚs +(è +as + +$skName + => +$skCÏss +) { + +343 ià( +$skCÏss + == "propertytask") { + +347 +$this +-> +ÃwProjeù +-> + `addTaskDefš™iÚ +( +$skName +, +$skCÏss +); + +351 +$this +-> +´ojeù +-> + `cÝyU£rPrݔt›s +($this-> +ÃwProjeù +); + +353 ià(! +$this +-> +šh”™AÎ +) { + +356 +$this +-> +ÃwProjeù +-> + `£tSy¡emPrݔt›s +(); + +360 +$´Ý”t›s + = +$this +-> +´ojeù +-> + `g‘Prݔt›s +(); + +361 + `fܗch + ( +$´Ý”t›s + +as + +$Çme + => +$v®ue +) { + +362 ià( +$Çme + == "basedir" || $name == "phing.file" || $name == "phing.version") { + +367 ià( +$this +-> +ÃwProjeù +-> + `g‘Prݔty +( +$Çme +è==ð +nuÎ +){ + +369 +$this +-> +ÃwProjeù +-> + `£tNewPrݔty +( +$Çme +, +$v®ue +); + +375 + } +} + +383 +´iv©e + +funùiÚ + + $ov”ridePrݔt›s +() { + +384 + `fܗch +( + `¬¿y_keys +( +$this +-> +´Ý”t›s +è +as + +$i +) { + +385 +$p + = +$this +-> +´Ý”t›s +[ +$i +]; + +386 +$p +-> + `£tProjeù +( +$this +-> +ÃwProjeù +); + +387 +$p +-> + `maš +(); + +389 +$this +-> +´ojeù +-> + `cÝyInh”™edPrݔt›s +($this-> +ÃwProjeù +); + +390 + } +} + +401 +´iv©e + +funùiÚ + + $addReã»nûs +() { + +404 +$´ojReã»nûs + = +$this +-> +´ojeù +-> + `g‘Reã»nûs +(); + +406 +$ÃwReã»nûs + = +$this +-> +ÃwProjeù +-> + `g‘Reã»nûs +(); + +408 +$sub´ojRefKeys + = + `¬¿y +(); + +410 ià( + `couÁ +( +$this +-> +»ã»nûs +) > 0) { + +411  +$i +=0, +$couÁ += + `couÁ +( +$this +-> +»ã»nûs +); $i < $count; $i++) { + +412 +$»f + = +$this +-> +»ã»nûs +[ +$i +]; + +413 +$»fid + = +$»f +-> + `g‘RefId +(); + +415 ià( +$»fid + ==ð +nuÎ +) { + +416 +throw + +Ãw + + `BuždExû±iÚ +("the„efid‡ttribute is„equired" + +419 ià(! + `is£t +( +$´ojReã»nûs +[ +$»fid +])) { + +420 +$this +-> + `log +("Parent…roject doesn't contain‡ny„eference '" + +421 . +$»fid + . "'", + +422 +Projeù +:: +MSG_WARN +); + +426 +$sub´ojRefKeys +[] = +$»fid +; + +428 +$toRefid + = +$»f +-> + `g‘ToRefid +(); + +429 ià( +$toRefid + ==ð +nuÎ +) { + +430 +$toRefid + = +$»fid +; + +432 +$this +-> + `cÝyReã»nû +( +$»fid +, +$toRefid +); + +438 ià( +$this +-> +šh”™Refs +) { + +441 +$unu£dRefKeys + = + `¬¿y_diff +( + `¬¿y_keys +( +$´ojReã»nûs +), +$sub´ojRefKeys +); + +443 + `fܗch +( +$unu£dRefKeys + +as + +$key +) { + +444 ià( + `is£t +( +$ÃwReã»nûs +[ +$key +])) { + +447 +$this +-> + `cÝyReã»nû +( +$key +, $key); + +450 + } +} + +464 +´iv©e + +funùiÚ + + $cÝyReã»nû +( +$ÞdKey +, +$ÃwKey +) { + +465 +$Üig + = +$this +-> +´ojeù +-> + `g‘Reã»nû +( +$ÞdKey +); + +466 ià( +$Üig + ==ð +nuÎ +) { + +467 +$this +-> + `log +("NØobjeù„eã»nûd by " . +$ÞdKey + . ". Can't copyo " + +468 . +$ÃwKey +, + +469 +PROJECT_SG_WARN +); + +473 +$cÝy + = +þÚe + +$Üig +; + +475 ià( +$cÝy + +š¡ªûof + +ProjeùCompڒt +) { + +476 +$cÝy +-> + `£tProjeù +( +$this +-> +ÃwProjeù +); + +477 } + `–£if + ( + `š_¬¿y +('£tProjeù', + `g‘_þass_m‘hods +( + `g‘_þass +( +$cÝy +)))) { + +478 +$cÝy +-> + `£tProjeù +( +$this +-> +ÃwProjeù +); + +479 } + `–£if + ( +$cÝy + +š¡ªûof + +Projeù +) { + +482 +$msg + = "Error setting‚ew…roject instance for " + +483 . "»ã»nû w™h id " . +$ÞdKey +; + +484 +throw + +Ãw + + `BuždExû±iÚ +( +$msg +); + +487 +$this +-> +ÃwProjeù +-> + `addReã»nû +( +$ÃwKey +, +$cÝy +); + +488 + } +} + +496 +funùiÚ + + $£tInh”™AÎ +( +$v®ue +) { + +497 +$this +-> +šh”™AÎ + = ( +boޗn +è +$v®ue +; + +498 + } +} + +506 +funùiÚ + + $£tInh”™Refs +( +$v®ue +) { + +507 +$this +-> +šh”™Refs + = ( +boޗn +) +$v®ue +; + +508 + } +} + +518 +funùiÚ + + $£tDœ +( +$d +) { + +519 iàÐ + `is_¡ršg +( +$d +) ) + +520 +$this +-> +dœ + = +Ãw + + `PhšgFže +( +$d +); + +522 +$this +-> +dœ + = +$d +; + +523 + } +} + +532 +funùiÚ + + $£tPhšgfže +( +$s +) { + +536 +$this +-> +phšgFže + = +$s +; + +537 + } +} + +544 +funùiÚ + + $£tBuždfže +( +$s +) { + +545 +$this +-> + `£tPhšgFže +( +$s +); + +546 + } +} + +554 +funùiÚ + + $£tT¬g‘ +( +$s +) { + +555 +$this +-> +ÃwT¬g‘ + = +$s +; + +556 + } +} + +564 +funùiÚ + + $ü—‹FžeS‘ +() { + +565 +$num + = + `¬¿y_push +( +$this +-> +fže£ts +, +Ãw + + `FžeS‘ +()); + +566  +$this +-> +fže£ts +[ +$num +-1]; + +567 + } +} + +575 +funùiÚ + + $ü—‹Prݔty +() { + +576 +$p + = +Ãw + + `PrݔtyTask +(); + +577 +$p +-> + `£tF®lback +( +$this +-> +ÃwProjeù +); + +578 +$p +-> + `£tU£rPrݔty +( +Œue +); + +579 +$this +-> +´Ý”t›s +[] = +$p +; + +580  +$p +; + +581 + } +} + +589 +funùiÚ + + $ü—‹Reã»nû +() { + +590 +$num + = + `¬¿y_push +( +$this +-> +»ã»nûs +, +Ãw + + `PhšgReã»nû +()); + +591  +$this +-> +»ã»nûs +[ +$num +-1]; + +592 + } +} + +600 þas  + cPhšgReã»nû + +ex‹nds + + mReã»nû + { + +602 +´iv©e + + m$rg‘id + = +nuÎ +; + +610 +public + +funùiÚ + + $£tToRefid +( +$rg‘id +) { + +611 +$this +-> +rg‘id + = +$rg‘id +; + +620 +public + +funùiÚ + + $g‘ToRefid +() { + +621  +$this +-> +rg‘id +; + +622 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/PhpEvalTask.php + +1 +funùiÚ + ==ð +nuÎ + && $this-> +ex´essiÚ + ===‚ull) { + +49 +throw + +Ãw + + `BuždExû±iÚ +("You mu¡ s³cify‡ funùiځØexecu‹ o¸PHPƒx´essiځØev®u‹.", +$this +-> +loÿtiÚ +); + +52 ià( +$this +-> +funùiÚ + !=ð +nuÎ + && $this-> +ex´essiÚ + !==‚ull) { + +53 +throw + +Ãw + + `BuždExû±iÚ +("You cª s³cify funùiÚ o¸ex´essiÚ, buˆnÙ bÙh.", +$this +-> +loÿtiÚ +); + +56 ià( +$this +-> +ex´essiÚ + !=ð +nuÎ + && ! + `em±y +($this-> +·¿ms +)) { + +57 +throw + +Ãw + + `BuždExû±iÚ +("You cªnÙ u£‚e¡ed <·¿m>ag wh’ƒv®u©iÚg‡ PHPƒx´essiÚ.", +$this +-> +loÿtiÚ +); + +60 +$»tv® + = +nuÎ +; + +61 ià( +$this +-> +funùiÚ + !=ð +nuÎ +) { + +62 +$»tv® + = +$this +-> + `ÿÎFunùiÚ +(); + +63 } + `–£if + ( +$this +-> +ex´essiÚ + !=ð +nuÎ +) { + +64 +$»tv® + = +$this +-> + `ev®Ex´essiÚ +(); + +67 ià( +$this +-> +»tuºPrݔty + !=ð +nuÎ +) { + +68 +$this +-> +´ojeù +-> + `£tPrݔty +($this-> +»tuºPrݔty +, +$»tv® +); + +76 +´Ùeùed + +funùiÚ + + $ÿÎFunùiÚ +() { + +78 ià( +$this +-> +þass + !=ð +nuÎ +) { + +80 +$this +-> +þass + = +Phšg +:: + `impÜt +($this->class); + +82 +$u£r_func + = + `¬¿y +( +$this +-> +þass +, $this-> +funùiÚ +); + +83 +$h_func + = +$this +-> +þass + . '::' . $this-> +funùiÚ +; + +85 +$u£r_func + = +$this +-> +funùiÚ +; + +86 +$h_func + = +$u£r_func +; + +90 +$·¿ms + = + `¬¿y +(); + +91 + `fܗch +( +$this +-> +·¿ms + +as + +$p +) { + +92 +$·¿ms +[] = +$p +-> + `g‘V®ue +(); + +95 +$this +-> + `log +("C®lšg PHP funùiÚ: " . +$h_func + . "()"); + +96 + `fܗch +( +$·¿ms + +as + +$p +) { + +97 +$this +-> + `log +("…¬am: " . +$p +, +Projeù +:: +MSG_VERBOSE +); + +100 +$»tuº + = + `ÿÎ_u£r_func_¬¿y +( +$u£r_func +, +$·¿ms +); + +101  +$»tuº +; + +102 + } +} + +108 +´Ùeùed + +funùiÚ + + $ev®Ex´essiÚ +() { + +109 +$this +-> + `log +("Ev®u©šg PHPƒx´essiÚ: " . $this-> +ex´essiÚ +); + +110 ià(! +SŒšgH–³r +:: + `’dsW™h +(';', + `Œim +( +$this +-> +ex´essiÚ +))) { + +111 +$this +-> +ex´essiÚ + .= ';'; + +113 +$»tv® + = +nuÎ +; + +114 + `ev® +('$»tv® = ' . +$this +-> +ex´essiÚ +); + +115  +$»tv® +; + +116 + } +} + +119 +public + +funùiÚ + + $£tFunùiÚ +( +$f +) { + +120 +$this +-> +funùiÚ + = +$f +; + +121 + } +} + +124 +public + +funùiÚ + + $£tCÏss +( +$c +) { + +125 +$this +-> +þass + = +$c +; + +126 + } +} + +129 +public + +funùiÚ + + $£tR‘uºPrݔty +( +$r +) { + +130 +$this +-> +»tuºPrݔty + = +$r +; + +131 + } +} + +134 +public + +funùiÚ + + $addText +( +$ex´essiÚ +) { + +135 +$this +-> +ex´essiÚ + = +$ex´essiÚ +; + +136 + } +} + +139 +public + +funùiÚ + + $£tEx´essiÚ +( +$ex´essiÚ +) { + +140 +$this +-> +ex´essiÚ + = +$ex´essiÚ +; + +141 + } +} + +144 +public + +funùiÚ + + $ü—‹P¬am +() { + +145 +$p + = +Ãw + + `FunùiÚP¬am +(); + +146 +$this +-> +·¿ms +[] = +$p +; + +147  +$p +; + +148 + } +} + +154 þas  + cFunùiÚP¬am + { + +156 +´iv©e + + m$v® +; + +158 +public + +funùiÚ + + $£tV®ue +( +$v +) { + +159 +$this +-> +v® + = +$v +; + +162 +public + +funùiÚ + + $addText +( +$v +) { + +163 +$this +-> +v® + = +$v +; + +164 + } +} + +166 +public + +funùiÚ + + $g‘V®ue +() { + +167  +$this +-> +v® +; + +168 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/PropertyPromptTask.php + +1 +´Ýo£dV®ue + = $this-> +´ojeù +-> + `g‘Prݔty +($this-> +´Ý”tyName +); + +82 +$cu¼’tV®ue + = +$this +-> +deçuÉV®ue +; + +84 ià( +$cu¼’tV®ue + =ð"" && +$this +-> +´Ýo£dV®ue + !=ð +nuÎ +) { + +85 +$cu¼’tV®ue + = +$this +-> +´Ýo£dV®ue +; + +88 ià( +$this +-> +u£Exi¡šgV®ue + !=ð +Œue + || $this-> +´Ýo£dV®ue + ==ð +nuÎ +) { + +90 +$this +-> + `log +("Prom±šg u£¸fÜ " . $this-> +´Ý”tyName + . ". " . $this-> + `g‘DeçuÉMes§ge +(), +Projeù +:: +MSG_VERBOSE +); + +92 +´št + "\n" . +$this +-> +´om±Text + . " [" . +$cu¼’tV®ue + . "] " . $this-> +´om±Ch¬aù” + . " "; + +95 +$»ad” + = +Ãw + + `CÚsÞeR—d” +(); + +97 +Œy + { + +98 +$this +-> +´Ýo£dV®ue + = +$»ad” +-> + `»adLše +(); + +99 } + `ÿtch + ( +IOExû±iÚ + +$e +) { + +100 +$this +-> + `log +("Prom± fažed. Usšg deçuÉ. (Fažu»„—sÚ: " . +$e +-> + `g‘Mes§ge +().")"); + +101 +$this +-> +´Ýo£dV®ue + = $this-> +deçuÉV®ue +; + +104 ià( +$this +-> +´Ýo£dV®ue + === "") { + +105 +$this +-> + `log +("NØv®u¥ecif›d, usšg deçuÉ.", +Projeù +:: +MSG_VERBOSE +); + +106 +$this +-> +´Ýo£dV®ue + = $this-> +deçuÉV®ue +; + +109 ià( + `is£t +( +$this +-> +´Ýo£dV®ue +) && $this->proposedValue !== "") { + +110 +$this +-> +´ojeù +-> + `£tPrݔty +($this-> +´Ý”tyName +, $this-> +´Ýo£dV®ue +); + +121 +´iv©e + +funùiÚ + + $g‘DeçuÉMes§ge +() { + +122 ià( +$this +-> +deçuÉV®ue + == "") { + +124 }  "DeçuɄe¥Ú£ i " . +$this +-> +deçuÉV®ue + . "."; + +125 + } +} + +133 +public + +funùiÚ + + $g‘DeçuÉV®ue +() { + +134  +$this +-> +deçuÉV®ue +; + +135 + } +} + +142 +public + +funùiÚ + + $g‘Prom±Ch¬aù” +() { + +143  +$this +-> +´om±Ch¬aù” +; + +144 + } +} + +150 +public + +funùiÚ + + $g‘Prom±Text +() { + +151  +$this +-> +´om±Text +; + +152 + } +} + +159 +public + +funùiÚ + + $g‘PrݔtyName +() { + +160  +$this +-> +´Ý”tyName +; + +161 + } +} + +165 +public + +funùiÚ + + $š™ +() { + +166 +·»Á +:: + `š™ +(); + +167 +$this +-> +deçuÉV®ue + = ""; + +168 +$this +-> +´om±Ch¬aù” + = "?"; + +169 +$this +-> +u£Exi¡šgV®ue + = +çl£ +; + +170 + } +} + +177 +public + +funùiÚ + + $isU£Exi¡šgV®ue +() { + +178  +$this +-> +u£Exi¡šgV®ue +; + +179 + } +} + +186 +public + +funùiÚ + + $£tDeçuÉv®ue +( +$ÃwDeçuÉv®ue +) { + +187 +$this +-> +deçuÉV®ue + = +$ÃwDeçuÉv®ue +; + +188 + } +} + +195 +public + +funùiÚ + + $£tProm±Ch¬aù” +( +$ÃwProm±ch¬aù” +) { + +196 +$this +-> +´om±Ch¬aù” + = +$ÃwProm±ch¬aù” +; + +197 + } +} + +203 +public + +funùiÚ + + $£tProm±Text +( +$ÃwProm±‹xt +) { + +204 +$this +-> +´om±Text + = +$ÃwProm±‹xt +; + +205 + } +} + +212 +public + +funùiÚ + + $£tPrݔtyName +( +$ÃwPrݔtyÇme +) { + +213 +$this +-> +´Ý”tyName + = +$ÃwPrݔtyÇme +; + +214 + } +} + +220 +public + +funùiÚ + + $£tU£Exi¡šgV®ue +( +$ÃwU£Exi¡šgV®ue +) { + +221 +$this +-> +u£Exi¡šgV®ue + = +$ÃwU£Exi¡šgV®ue +; + +222 + } +} + +229 +public + +funùiÚ + + $addText +( +$´om± +) { + +230 +$this +-> + `£tProm±Text +( +$´om± +); + +231 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/PropertyTask.php + +1 +Çme + = ( +¡ršg +è +$Çme +; + +63 +funùiÚ + + $g‘Name +() { + +64  +$this +-> +Çme +; + +65 + } +} + +71 +funùiÚ + + $£tV®ue +( +$v®ue +) { + +72 +$this +-> +v®ue + = ( +¡ršg +è +$v®ue +; + +73 + } +} + +80 +public + +funùiÚ + + $addText +( +$v®ue +) { + +81 +$this +-> + `£tV®ue +( +$v®ue +); + +82 + } +} + +85 +funùiÚ + + $g‘V®ue +() { + +86  +$this +-> +v®ue +; + +87 + } +} + +90 +funùiÚ + + $£tFže +( +$fže +) { + +91 ià( + `is_¡ršg +( +$fže +)) { + +92 +$fže + = +Ãw + + `PhšgFže +($file); + +94 +$this +-> +fže + = +$fže +; + +95 + } +} + +98 +funùiÚ + + $g‘Fže +() { + +99  +$this +-> +fže +; + +100 + } +} + +102 +funùiÚ + + $£tRefid +( +Reã»nû + +$»f +) { + +103 +$this +-> +»ã»nû + = +$»f +; + +104 + } +} + +106 +funùiÚ + + $g‘Refid +() { + +107  +$this +-> +»ã»nû +; + +108 + } +} + +117 +public + +funùiÚ + + $£tP»fix +( +$´efix +) { + +118 +$this +-> +´efix + = +$´efix +; + +119 ià(! +SŒšgH–³r +:: + `’dsW™h +(".", +$´efix +)) { + +120 +$this +-> +´efix + .= "."; + +122 + } +} + +128 +public + +funùiÚ + + $g‘P»fix +() { + +129  +$this +-> +´efix +; + +130 + } +} + +150 +funùiÚ + + $£tEnvœÚm’t +( +$’v +) { + +151 +$this +-> +’v + = ( +¡ršg +è +$’v +; + +152 + } +} + +154 +funùiÚ + + $g‘EnvœÚm’t +() { + +155  +$this +-> +’v +; + +156 + } +} + +165 +funùiÚ + + $£tU£rPrݔty +( +$v +) { + +166 +$this +-> +u£rPrݔty + = ( +boޗn +è +$v +; + +167 + } +} + +169 +funùiÚ + + $g‘U£rPrݔty +() { + +170  +$this +-> +u£rPrݔty +; + +171 + } +} + +173 +funùiÚ + + $£tOv”ride +( +$v +) { + +174 +$this +-> +ov”ride + = ( +boޗn +è +$v +; + +175 + } +} + +177 +funùiÚ + + $g‘Ov”ride +() { + +178  +$this +-> +ov”ride +; + +179 + } +} + +181 +funùiÚ + + $toSŒšg +() { + +182  ( +¡ršg +è +$this +-> +v®ue +; + +183 + } +} + +188 +funùiÚ + + $£tF®lback +( +$p +) { + +189 +$this +-> +çÎback + = +$p +; + +190 + } +} + +192 +funùiÚ + + $g‘F®lback +() { + +193  +$this +-> +çÎback +; + +194 + } +} + +200 +funùiÚ + + $maš +() { + +201 ià( +$this +-> +Çme + !=ð +nuÎ +) { + +202 ià( +$this +-> +v®ue + ==ð +nuÎ + && $this-> +»f + ===‚ull) { + +203 +throw + +Ãw + + `BuždExû±iÚ +("You mu¡ s³cify v®uÜ„efid w™hhÇm©Œibu‹", +$this +-> + `g‘LoÿtiÚ +()); + +206 ià( +$this +-> +fže + ==ð +nuÎ + && $this-> +’v + ===‚ull ) { + +207 +throw + +Ãw + + `BuždExû±iÚ +("You mu¡ s³cify fžÜƒnvœÚm’ˆwh’‚Ù usšghÇm©Œibu‹", +$this +-> + `g‘LoÿtiÚ +()); + +211 ià( +$this +-> +fže + ==ð +nuÎ + && $this-> +´efix + !==‚ull) { + +212 +throw + +Ãw + + `BuždExû±iÚ +("P»fix i Úly v®id wh’†ßdšg from‡ fže.", +$this +-> + `g‘LoÿtiÚ +()); + +215 ià(( +$this +-> +Çme + !=ð +nuÎ +è&& ($this-> +v®ue + !==‚ull)) { + +216 +$this +-> + `addPrݔty +($this-> +Çme +, $this-> +v®ue +); + +219 ià( +$this +-> +fže + !=ð +nuÎ +) { + +220 +$this +-> + `lßdFže +($this-> +fže +); + +223 iàÐ +$this +-> +’v + !=ð +nuÎ + ) { + +224 +$this +-> + `lßdEnvœÚm’t +($this-> +’v +); + +227 ià(( +$this +-> +Çme + !=ð +nuÎ +è&& ($this-> +»f + !==‚ull)) { + +229 +Œy + { + +230 +$this +-> + `addPrݔty +($this-> +Çme +, $this-> +»ã»nû +-> + `g‘Reã»nûdObjeù +($this-> +´ojeù +)-> + `toSŒšg +()); + +231 } + `ÿtch + ( +BuždExû±iÚ + +$be +) { + +232 ià( +$this +-> +çÎback + !=ð +nuÎ +) { + +233 +$this +-> + `addPrݔty +($this-> +Çme +, $this-> +»ã»nû +-> + `g‘Reã»nûdObjeù +($this-> +çÎback +)-> + `toSŒšg +()); + +235 +throw + +$be +; + +239 + } +} + +245 +´Ùeùed + +funùiÚ + + $lßdEnvœÚm’t +( +$´efix +) { + +247 +$´Ýs + = +Ãw + + `Prݔt›s +(); + +248 iàÐ + `sub¡r +( +$´efix +, + `¡¾’ +($prefix)-1) == '.' ) { + +249 +$´efix + .= "."; + +251 +$this +-> + `log +("Lßdšg EnvœÚm’ˆ$´efix", +Projeù +:: +MSG_VERBOSE +); + +252 + `fܗch +( +$_ENV + +as + +$key + => +$v®ue +) { + +253 +$´Ýs +-> + `£tPrݔty +( +$´efix + . '.' . +$key +, +$v®ue +); + +255 +$this +-> + `addPrݔt›s +( +$´Ýs +); + +256 + } +} + +262 +´Ùeùed + +funùiÚ + + $addPrݔt›s +( +$´Ýs +) { + +263 +$this +-> + `»sÞveAÎPrݔt›s +( +$´Ýs +); + +264 + `fܗch +( +$´Ýs +-> + `keys +(è +as + +$Çme +) { + +265 +$v®ue + = +$´Ýs +-> + `g‘Prݔty +( +$Çme +); + +266 +$v + = +$this +-> +´ojeù +-> + `»¶aûPrݔt›s +( +$v®ue +); + +267 ià( +$this +-> +´efix + !=ð +nuÎ +) { + +268 +$Çme + = +$this +-> +´efix + . $name; + +270 +$this +-> + `addPrݔty +( +$Çme +, +$v +); + +272 + } +} + +279 +´Ùeùed + +funùiÚ + + $addPrݔty +( +$Çme +, +$v®ue +) { + +280 ià( +$this +-> +u£rPrݔty +) { + +281 ià( +$this +-> +´ojeù +-> + `g‘U£rPrݔty +( +$Çme +è==ð +nuÎ + || $this-> +ov”ride +) { + +282 +$this +-> +´ojeù +-> + `£tInh”™edPrݔty +( +$Çme +, +$v®ue +); + +284 +$this +-> + `log +("Ov”ridignÜed fÜ " . +$Çme +, +Projeù +:: +MSG_VERBOSE +); + +287 ià( +$this +-> +ov”ride +) { + +288 +$this +-> +´ojeù +-> + `£tPrݔty +( +$Çme +, +$v®ue +); + +290 +$this +-> +´ojeù +-> + `£tNewPrݔty +( +$Çme +, +$v®ue +); + +293 + } +} + +299 +´Ùeùed + +funùiÚ + + $lßdFže +( +PhšgFže + +$fže +) { + +300 +$´Ýs + = +Ãw + + `Prݔt›s +(); + +301 +$this +-> + `log +("Lßdšg ". +$fže +-> + `g‘AbsÞu‹P©h +(), +Projeù +:: +MSG_INFO +); + +302 +Œy + { + +303 ià( +$fže +-> + `exi¡s +()) { + +304 +$´Ýs +-> + `lßd +( +$fže +); + +305 +$this +-> + `addPrݔt›s +( +$´Ýs +); + +307 +$this +-> + `log +("UÇbˁØfšd…rݔty fže: ". +$fže +-> + `g‘AbsÞu‹P©h +(è."... sk³d", +Projeù +:: +MSG_WARN +); + +309 } + `ÿtch + ( +IOExû±iÚ + +$iÛ +) { + +310 +throw + +Ãw + + `BuždExû±iÚ +("Could‚Ù†ßd…rݔt› äom fže.", +$iÛ +); + +312 + } +} + +321 +´Ùeùed + +funùiÚ + + $»sÞveAÎPrݔt›s +( +Prݔt›s + +$´Ýs +) { + +323 +$keys + = +$´Ýs +-> + `keys +(); + +325  + `couÁ +( +$keys +)) { + +333 +$Çme + = + `¬¿y_shiá +( +$keys +); + +334 +$v®ue + = +$´Ýs +-> + `g‘Prݔty +( +$Çme +); + +335 +$»sÞved + = +çl£ +; + +337 ! +$»sÞved +) { + +339 +$äagm’ts + = + `¬¿y +(); + +340 +$´Ý”tyRefs + = + `¬¿y +(); + +343 +£lf +:: + `·r£PrݔtySŒšg +( +$v®ue +, +$äagm’ts +, +$´Ý”tyRefs +); + +345 +$»sÞved + = +Œue +; + +346 ià( + `couÁ +( +$´Ý”tyRefs +) !== 0) { + +348 +$sb + = ""; + +350 +$i + = +$äagm’ts +; + +351 +$j + = +$´Ý”tyRefs +; + +352  + `couÁ +( +$i +)) { + +353 +$äagm’t + = + `¬¿y_shiá +( +$i +); + +354 ià( +$äagm’t + ==ð +nuÎ +) { + +355 +$´Ý”tyName + = + `¬¿y_shiá +( +$j +); + +357 ià( +$´Ý”tyName + ==ð +$Çme +) { + +360 +throw + +Ãw + + `BuždExû±iÚ +("Prݔty ". +$Çme +." was circularly defined."); + +363 +$äagm’t + = +$this +-> + `g‘Projeù +()-> + `g‘Prݔty +( +$´Ý”tyName +); + +364 ià( +$äagm’t + ==ð +nuÎ +) { + +365 ià( +$´Ýs +-> + `cڏšsKey +( +$´Ý”tyName +)) { + +366 +$äagm’t + = +$´Ýs +-> + `g‘Prݔty +( +$´Ý”tyName +); + +367 +$»sÞved + = +çl£ +; + +369 +$äagm’t + = "\${". +$´Ý”tyName +."}"; + +373 +$sb + .ð +$äagm’t +; + +376 +$this +-> + `log +("ResÞved Prݔty \"$v®ue\"Ø\"$sb\"", +Projeù +:: +MSG_DEBUG +); + +377 +$v®ue + = +$sb +; + +378 +$´Ýs +-> + `£tPrݔty +( +$Çme +, +$v®ue +); + +385 + } +} + +402 +´Ùeùed + +funùiÚ + + $·r£PrݔtySŒšg +( +$v®ue +, & +$äagm’ts +, & +$´Ý”tyRefs +) { + +404 +$´ev + = 0; + +405 +$pos + = 0; + +407 ( +$pos + = + `¡½os +( +$v®ue +, '$', +$´ev +)è!=ð +çl£ +) { + +409 ià( +$pos + > +$´ev +) { + +410 + `¬¿y_push +( +$äagm’ts +, +SŒšgH–³r +:: + `sub¡ršg +( +$v®ue +, +$´ev +, +$pos +-1)); + +412 ià( +$pos + ==ð( + `¡¾’ +( +$v®ue +) - 1)) { + +413 + `¬¿y_push +( +$äagm’ts +, '$'); + +414 +$´ev + = +$pos + + 1; + +415 } + `–£if + ( +$v®ue +{ +$pos ++1} !== '{' ) { + +419 + `¬¿y_push +( +$äagm’ts +, +SŒšgH–³r +:: + `sub¡ršg +( +$v®ue +, +$pos +, $pos + 1)); + +420 +$´ev + = +$pos + + 2; + +422 +$’dName + = + `¡½os +( +$v®ue +, '}', +$pos +); + +423 ià( +$’dName + ==ð +çl£ +) { + +424 +throw + +Ãw + + `BuždExû±iÚ +("Syntaxƒrror in…roperty: $value"); + +426 +$´Ý”tyName + = +SŒšgH–³r +:: + `sub¡ršg +( +$v®ue +, +$pos + + 2, +$’dName +-1); + +427 + `¬¿y_push +( +$äagm’ts +, +nuÎ +); + +428 + `¬¿y_push +( +$´Ý”tyRefs +, +$´Ý”tyName +); + +429 +$´ev + = +$’dName + + 1; + +433 ià( +$´ev + < + `¡¾’ +( +$v®ue +)) { + +434 + `¬¿y_push +( +$äagm’ts +, +SŒšgH–³r +:: + `sub¡ršg +( +$v®ue +, +$´ev +)); + +436 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/ReflexiveTask.php + +1 +fže + = +$f +; + +66 +funùiÚ + + $ü—‹FžeS‘ +() { + +67 +$num + = + `¬¿y_push +( +$this +-> +fže£ts +, +Ãw + + `FžeS‘ +()); + +68  +$this +-> +fže£ts +[ +$num +-1]; + +69 + } +} + +76 +funùiÚ + + $ü—‹Fž‹rChaš +() { + +77 +$num + = + `¬¿y_push +( +$this +-> +fž‹rChašs +, +Ãw + + `Fž‹rChaš +($this-> +´ojeù +)); + +78  +$this +-> +fž‹rChašs +[ +$num +-1]; + +79 + } +} + +82 +funùiÚ + + $maš +() { + +84 ià( +$this +-> +fže + ==ð +nuÎ + && + `em±y +($this-> +fže£ts +)) { + +85 +throw + +Ãw + + `BuždExû±iÚ +("You must specify‡ file or fileset(s) forhe ask."); + +91 +$fžes + = + `¬¿y +(); + +93 ià( +$this +-> +fže + !=ð +nuÎ +) { + +94 +$fžes +[] = +$this +-> +fže +; + +97 ià(! + `em±y +( +$this +-> +fže£ts +)) { + +98 +$fž’ames + = + `¬¿y +(); + +99 + `fܗch +( +$this +-> +fže£ts + +as + +$fs +) { + +100 +Œy + { + +101 +$ds + = +$fs +-> + `g‘DœeùÜySÿ” +( +$this +-> +´ojeù +); + +102 +$fž’ames + = +$ds +-> + `g‘InþudedFžes +(); + +103 +$dœ + = +$fs +-> + `g‘Dœ +( +$this +-> +´ojeù +); + +104 + `fܗch + ( +$fž’ames + +as + +$âame +) { + +105 +$fžes +[] = +Ãw + + `PhšgFže +( +$dœ +, +$âame +); + +107 } + `ÿtch + ( +BuždExû±iÚ + +$be +) { + +108 +$this +-> + `log +( +$be +-> + `g‘Mes§ge +(), +Projeù +:: +MSG_WARN +); + +113 +$this +-> + `log +("Aµlyšg„eæexiv´oûssšgØ" . + `couÁ +( +$fžes +) . " files."); + +116 +$¦Ù + = +$this +-> + `g‘Regi¡”SlÙ +("currentFile"); + +117 +$ba£ÇmeSlÙ + = +$this +-> + `g‘Regi¡”SlÙ +("currentFile.basename"); + +120 + `fܗch +( +$fžes + +as + +$fže +) { + +123 +$¦Ù +-> + `£tV®ue +( +$fže +-> + `g‘P©h +()); + +124 +$ba£ÇmeSlÙ +-> + `£tV®ue +( +$fže +-> + `g‘Name +()); + +127 +$š + = +nuÎ +; + +128 +Œy + { + +129 +$cڋÁs + = ""; + +130 +$š + = +FžeUtžs +:: + `g‘ChašedR—d” +( +Ãw + + `FžeR—d” +( +$fže +), +$this +-> +fž‹rChašs +, $this-> +´ojeù +); + +131 -1 !=ð( +$bufãr + = +$š +-> + `»ad +())) { + +132 +$cڋÁs + .ð +$bufãr +; + +134 +$š +-> + `þo£ +(); + +135 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +136 ià( +$š +è$š-> + `þo£ +(); + +137 +$this +-> + `log +("Erܸ»adšg fže: " . +$e +-> + `g‘Mes§ge +(), +Projeù +:: +MSG_WARN +); + +140 +Œy + { + +142 +$out + = +Ãw + + `FžeWr™” +( +$fže +); + +143 +$out +-> + `wr™e +( +$cڋÁs +); + +144 +$out +-> + `þo£ +(); + +145 +$this +-> + `log +("Aµlyšg„eæexiv´oûssšgØ" . +$fže +-> + `g‘P©h +(), +Projeù +:: +MSG_VERBOSE +); + +146 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +147 ià( +$out +è$out-> + `þo£ +(); + +148 +$this +-> + `log +("E¼Ü wr™šg fžback: " . +$e +-> + `g‘Mes§ge +(), +Projeù +:: +MSG_WARN +); + +153 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/ResolvePathTask.php + +1 +´Ý”tyName + = +$v +; + +69 +funùiÚ + + $£tDœ +( +PhšgFže + +$d +) { + +70 +$this +-> +dœ + = +$d +; + +71 + } +} + +80 +funùiÚ + + $£tP©h +( +$f +) { + +81 +$this +-> +fže + = +$f +; + +82 + } +} + +88 +funùiÚ + + $£tFže +( +$f +) { + +89 +$this +-> +fže + = +$f +; + +90 + } +} + +95 +public + +funùiÚ + + $maš +() { + +97 ià(! +$this +-> +´Ý”tyName +) { + +98 +throw + +Ãw + + `BuždExû±iÚ +("You mu¡ s³cifyh´Ý”tyNam©Œibu‹", +$this +-> + `g‘LoÿtiÚ +()); + +102 ià( +$this +-> +fže + ==ð +nuÎ +) { + +103 +throw + +Ãw + + `BuždExû±iÚ +("You mu¡ s³cify‡…©hØ»sÞve", +$this +-> + `g‘LoÿtiÚ +()); + +106 +$fs + = +FžeSy¡em +:: + `g‘FžeSy¡em +(); + +111 ià( +$this +-> +dœ + !=ð +nuÎ + && ! +$fs +-> + `isAbsÞu‹ +( +Ãw + + `PhšgFže +($this-> +fže +))) { + +112 +$»sÞved + = +Ãw + + `PhšgFže +( +$this +-> +dœ +-> + `g‘P©h +(), $this-> +fže +); + +115 +$»sÞved + = +$this +-> +´ojeù +-> + `»sÞveFže +($this-> +fže +); + +118 +$this +-> + `log +("ResÞved " . $this-> +fže + . "Ø" . +$»sÞved +-> + `g‘AbsÞu‹P©h +(), +Projeù +:: +MSG_INFO +); + +119 +$this +-> +´ojeù +-> + `£tPrݔty +($this-> +´Ý”tyName +, +$»sÞved +-> + `g‘AbsÞu‹P©h +()); + +120 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/SequentialTask.php + +1 +áedTasks +[] = +$áedTask +; + +52 +public + +funùiÚ + + $maš +() { + +53 + `fܗch +( +$this +-> +áedTasks + +as + +$sk +) { + +54 +$sk +-> + `³rfÜm +(); + +56 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/TaskdefTask.php + +1 +þas¥©h + ==ð +nuÎ +) { + +79 +$this +-> +þas¥©h + = +$þas¥©h +; + +81 +$this +-> +þas¥©h +-> + `­³nd +( +$þas¥©h +); + +88 +public + +funùiÚ + + $ü—‹CÏs¥©h +() { + +89 ià( +$this +-> +þas¥©h + ==ð +nuÎ +) { + +90 +$this +-> +þas¥©h + = +Ãw + + `P©h +($this-> +´ojeù +); + +92  +$this +-> +þas¥©h +-> + `ü—‹P©h +(); + +93 + } +} + +98 +public + +funùiÚ + + $£tCÏs¥©hRef +( +Reã»nû + +$r +) { + +99 +$this +-> +þas¥©hId + = +$r +-> + `g‘RefId +(); + +100 +$this +-> + `ü—‹CÏs¥©h +()-> + `£tRefid +( +$r +); + +101 + } +} + +107 +public + +funùiÚ + + $£tName +( +$Çme +) { + +108 +$this +-> +Çme + = +$Çme +; + +109 + } +} + +115 +public + +funùiÚ + + $£tCÏs¢ame +( +$þass +) { + +116 +$this +-> +þas¢ame + = +$þass +; + +117 + } +} + +120 +public + +funùiÚ + + $maš +() { + +121 ià( +$this +-> +Çme + ==ð +nuÎ + || $this-> +þas¢ame + ===‚ull) { + +122 +throw + +Ãw + + `BuždExû±iÚ +("You must specify‚ame‡nd class‡ttributes for ."); + +124 +$this +-> + `log +("Task " . $this-> +Çme + . " wžÈbhªdËd by cÏs " . $this-> +þas¢ame +, +Projeù +:: +MSG_VERBOSE +); + +125 +$this +-> +´ojeù +-> + `addTaskDefš™iÚ +($this-> +Çme +, $this-> +þas¢ame +, $this-> +þas¥©h +); + +126 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/TouchTask.php + +1 +fžeUtžs + = +Ãw + + `FžeUtžs +(); + +53 +funùiÚ + + $£tFže +( +PhšgFže + +$fže +) { + +54 +$this +-> +fže + = +$fže +; + +55 + } +} + +62 +funùiÚ + + $£tMžlis +( +$mžlis +) { + +63 +$this +-> +mžlis + = (è +$mžlis +; + +64 + } +} + +71 +funùiÚ + + $£tD©‘ime +( +$d©eTime +) { + +72 +$this +-> +d©eTime + = ( +¡ršg +è +$d©eTime +; + +73 + } +} + +79 +funùiÚ + + $ü—‹FžeS‘ +() { + +80 +$num + = + `¬¿y_push +( +$this +-> +fže£ts +, +Ãw + + `FžeS‘ +()); + +81  +$this +-> +fže£ts +[ +$num +-1]; + +82 + } +} + +87 +funùiÚ + + $maš +() { + +88 +$§vedMžlis + = +$this +-> +mžlis +; + +90 ià( +$this +-> +fže + ==ð +nuÎ + && + `couÁ +($this-> +fže£ts +) === 0) { + +91 +throw + +Ãw + + `BuždExû±iÚ +("Specify‡t†east one source -‡ file or‡ fileset."); + +94 ià( +$this +-> +fže + !=ð +nuÎ + && $this->fže-> + `exi¡s +(è&& $this->fže-> + `isDœeùÜy +()) { + +95 +throw + +Ãw + + `BuždExû±iÚ +("Use‡ filesetoouch directories."); + +98 +Œy + { + +99 ià( +$this +-> +d©eTime + !=ð +nuÎ +) { + +100 +$this +-> + `£tMžlis +( + `¡¹Ùime +($this-> +d©eTime +)); + +101 ià( +$this +-> +mžlis + < 0) { + +102 +throw + +Ãw + + `BuždExû±iÚ +("Date of {$this->dateTime}„esults in‚egative milliseconds value„elativeoƒpoch (January 1, 1970, 00:00:00 GMT)."); + +105 +$this +-> + `_touch +(); + +106 } + `ÿtch + ( +Exû±iÚ + +$ex +) { + +107 +throw + +Ãw + + `BuždExû±iÚ +("E¼Üouch()šg fže", +$ex +, +$this +-> +loÿtiÚ +); + +110 +$this +-> +mžlis + = +$§vedMžlis +; + +112 + } +} + +117 +funùiÚ + + $_touch +() { + +118 ià( +$this +-> +fže + !=ð +nuÎ +) { + +119 ià(! +$this +-> +fže +-> + `exi¡s +()) { + +120 +$this +-> + `log +("C»©šg " . $this-> +fže +-> + `__toSŒšg +(), +Projeù +:: +MSG_INFO +); + +121 +Œy + { + +122 +$this +-> +fže +-> + `ü—‹NewFže +(); + +123 } + `ÿtch +( +IOExû±iÚ + +$iÛ +) { + +124 +throw + +Ãw + + `BuždExû±iÚ +("E¼Ü c»©šg‚ew fž" . +$this +-> +fže +-> + `__toSŒšg +(), +$iÛ +, $this-> +loÿtiÚ +); + +129 +$»£tMžlis + = +çl£ +; + +130 ià( +$this +-> +mžlis + < 0) { + +131 +$»£tMžlis + = +Œue +; + +132 +$this +-> +mžlis + = +Phšg +:: + `cu¼’tTimeMžlis +(); + +135 ià( +$this +-> +fže + !=ð +nuÎ +) { + +136 +$this +-> + `touchFže +($this-> +fže +); + +140 + `fܗch +( +$this +-> +fže£ts + +as + +$fs +) { + +142 +$ds + = +$fs +-> + `g‘DœeùÜySÿ” +( +$this +-> + `g‘Projeù +()); + +143 +$äomDœ + = +$fs +-> + `g‘Dœ +( +$this +-> + `g‘Projeù +()); + +145 +$¤cFžes + = +$ds +-> + `g‘InþudedFžes +(); + +146 +$¤cDœs + = +$ds +-> + `g‘InþudedDœeùܛs +(); + +148  +$j +=0, +$_j += + `couÁ +( +$¤cFžes +); $j < $_j; $j++) { + +149 +$this +-> + `touchFže +( +Ãw + + `PhšgFže +( +$äomDœ +, ( +¡ršg +è +$¤cFžes +[ +$j +])); + +152  +$j +=0, +$_j += + `couÁ +( +$¤cDœs +); $j < $_j ; $j++) { + +153 +$this +-> + `touchFže +( +Ãw + + `PhšgFže +( +$äomDœ +, ( +¡ršg +è +$¤cDœs +[ +$j +])); + +157 ià( +$»£tMžlis +) { + +158 +$this +-> +mžlis + = -1; + +160 + } +} + +162 +´iv©e + +funùiÚ + + $touchFže +( +$fže +) { + +163 iàÐ! +$fže +-> + `ÿnWr™e +() ) { + +164 +throw + +Ãw + + `BuždExû±iÚ +("Cª‚Ù chªgmodifiÿtiÚ d©oà»ad-Úly fž" . +$fže +-> + `__toSŒšg +()); + +166 +$fže +-> + `£tLa¡Modif›d +( +$this +-> +mžlis +); + +167 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/TstampTask.php + +1 +´efix + = +$´efix +; + +50 ià(! + `em±y +( +$this +-> +´efix +)) + +52 +$this +-> +´efix +.= "."; + +61 +public + +funùiÚ + + $addFÜm© +( +T¡ampCu¡omFÜm© + +$cf +) + +63 +$this +-> +cu¡omFÜm©s +[] = +$cf +; + +64 + } +} + +72 +public + +funùiÚ + + $maš +() + +74 + `fܗch + ( +$this +-> +cu¡omFÜm©s + +as + +$cf +) + +76 +$cf +-> + `execu‹ +( +$this +); + +79 +$d¡amp + = + `¡ráime +('%Y%m%d'); + +80 +$this +-> + `´efixPrݔty +('DSTAMP', +$d¡amp +); + +82 +$t¡amp + = + `¡ráime +('%H%M'); + +83 +$this +-> + `´efixPrݔty +('TSTAMP', +$t¡amp +); + +85 +$today + = + `¡ráime +('%B %d %Y'); + +86 +$this +-> + `´efixPrݔty +('TODAY', +$today +); + +87 + } +} + +93 +public + +funùiÚ + + $´efixPrݔty +( +$Çme +, +$v®ue +) + +95 +$this +-> + `g‘Projeù +()-> + `£tNewPrݔty +($this-> +´efix + . +$Çme +, +$v®ue +); + +96 + } +} + +99 þas  + cT¡ampCu¡omFÜm© + + +101 +´iv©e + + m$´Ý”tyName + = ""; + +102 +´iv©e + + m$·‰”n + = ""; + +103 +´iv©e + + m$loÿË + = ""; + +110 +public + +funùiÚ + + $£tPrݔty +( +$´Ý”tyName +) + +112 +$this +-> +´Ý”tyName + = +$´Ý”tyName +; + +121 +public + +funùiÚ + + $£tP©‹º +( +$·‰”n +) + +123 +$this +-> +·‰”n + = +$·‰”n +; + +124 + } +} + +131 +public + +funùiÚ + + $£tLoÿË +( +$loÿË +) + +133 +$this +-> +loÿË + = +$loÿË +; + +134 + } +} + +141 +public + +funùiÚ + + $execu‹ +( +T¡ampTask + +$t¡amp +) + +143 ià( + `em±y +( +$this +-> +´Ý”tyName +)) + +145 +throw + +Ãw + + `BuždExû±iÚ +("property‡ttribute must be…rovided"); + +148 ià( + `em±y +( +$this +-> +·‰”n +)) + +150 +throw + +Ãw + + `BuždExû±iÚ +("pattern‡ttribute must be…rovided"); + +153 ià(! + `em±y +( +$this +-> +loÿË +)) + +155 + `£ŽoÿË +( +LC_ALL +, +$this +-> +loÿË +); + +158 +$v®ue + = + `¡ráime +( +$this +-> +·‰”n +); + +159 +$t¡amp +-> + `´efixPrݔty +( +$this +-> +´Ý”tyName +, +$v®ue +); + +161 ià(! + `em±y +( +$this +-> +loÿË +)) + +164 + `£ŽoÿË +( +LC_ALL +, +NULL +); + +166 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/TypedefTask.php + +1 +þas¥©h + ==ð +nuÎ +) { + +78 +$this +-> +þas¥©h + = +$þas¥©h +; + +80 +$this +-> +þas¥©h +-> + `­³nd +( +$þas¥©h +); + +87 +public + +funùiÚ + + $ü—‹CÏs¥©h +() { + +88 ià( +$this +-> +þas¥©h + ==ð +nuÎ +) { + +89 +$this +-> +þas¥©h + = +Ãw + + `P©h +($this-> +´ojeù +); + +91  +$this +-> +þas¥©h +-> + `ü—‹P©h +(); + +92 + } +} + +97 +public + +funùiÚ + + $£tCÏs¥©hRef +( +Reã»nû + +$r +) { + +98 +$this +-> +þas¥©hId + = +$r +-> + `g‘RefId +(); + +99 +$this +-> + `ü—‹CÏs¥©h +()-> + `£tRefid +( +$r +); + +100 + } +} + +103 +public + +funùiÚ + + $maš +() { + +104 ià( +$this +-> +Çme + ==ð +nuÎ + || $this-> +þas¢ame + ===‚ull) { + +105 +throw + +Ãw + + `BuždExû±iÚ +("You must specify‚ame‡nd class‡ttributes for ."); + +107 +$this +-> +´ojeù +-> + `addD©aTy³Defš™iÚ +($this-> +Çme +, $this-> +þas¢ame +, $this-> +þas¥©h +); + +108 + } +} + +114 +public + +funùiÚ + + $£tName +( +$Çme +) { + +115 +$this +-> +Çme + = +$Çme +; + +116 + } +} + +122 +public + +funùiÚ + + $£tCÏs¢ame +( +$þass +) { + +123 +$this +-> +þas¢ame + = +$þass +; + +124 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/UpToDateTask.php + +1 +_´Ý”ty + = +$´Ý”ty +; + +65 +public + +funùiÚ + + $£tV®ue +( +$v®ue +) { + +66 +$this +-> +_v®ue + = +$v®ue +; + +67 + } +} + +72 +´iv©e + +funùiÚ + + $g‘V®ue +() { + +73  ( +$this +-> +_v®ue + !=ð +nuÎ +) ? $this->_value : "true"; + +74 + } +} + +82 +public + +funùiÚ + + $£tT¬g‘Fže +( +$fže +) { + +83 ià( + `is_¡ršg +( +$fže +)) { + +84 +$fže + = +Ãw + + `PhšgFže +($file); + +86 +$this +-> +_rg‘Fže + = +$fže +; + +87 + } +} + +95 +public + +funùiÚ + + $£tSrcfže +( +$fže +) { + +96 ià( + `is_¡ršg +( +$fže +)) { + +97 +$fže + = +Ãw + + `PhšgFže +($file); + +99 +$this +-> +_sourûFže + = +$fže +; + +100 + } +} + +105 +public + +funùiÚ + + $ü—‹Srcfžes +() { + +106 +$fs + = +Ãw + + `FžeS‘ +(); + +107 +$this +-> +sourûFžeS‘s +[] = +$fs +; + +108  +$fs +; + +109 + } +} + +114 +public + +funùiÚ + + $ü—‹M­³r +() { + +115 ià( +$this +-> +m­³rEËm’t + !=ð +nuÎ +) { + +116 +throw + +Ãw + + `BuždExû±iÚ +("Cannot define morehan one mapper", + +117 +$this +-> +loÿtiÚ +); + +119 +$this +-> +m­³rEËm’t + = +Ãw + + `M­³r +($this-> + `g‘Projeù +()); + +120  +$this +-> +m­³rEËm’t +; + +121 + } +} + +128 +public + +funùiÚ + + $ev®u©e +() { + +129 ià( + `couÁ +( +$this +-> +sourûFžeS‘s +è==ð0 && $this-> +_sourûFže + ==ð +nuÎ +) { + +130 +throw + +Ãw + + `BuždExû±iÚ +("At†east one srcfile or‡‚ested " + +134 ià( + `couÁ +( +$this +-> +sourûFžeS‘s +è> 0 && $this-> +_sourûFže + !=ð +nuÎ +) { + +135 +throw + +Ãw + + `BuždExû±iÚ +("Cannot specify bothhe srcfile " + +140 ià( +$this +-> +_rg‘Fže + ==ð +nuÎ + && $this-> +m­³rEËm’t + ===‚ull) { + +141 +throw + +Ãw + + `BuždExû±iÚ +("Theargetfile‡ttribute or‡‚ested " + +146 ià( +$this +-> +_rg‘Fže + !=ð +nuÎ + && !$this->_rg‘Fže-> + `exi¡s +()) { + +147  +çl£ +; + +151 ià( +$this +-> +_sourûFže + !=ð +nuÎ + && !$this->_sourûFže-> + `exi¡s +()) { + +152 +throw + +Ãw + + `BuždExû±iÚ +( +$this +-> +_sourûFže +-> + `g‘AbsÞu‹P©h +() + +156 +$upToD©e + = +Œue +; + +157  +$i +=0, +$size += + `couÁ +( +$this +-> +sourûFžeS‘s +); $˜< $siz&& +$upToD©e +; $i++) { + +158 +$fs + = +$this +-> +sourûFžeS‘s +[ +$i +]; + +159 +$ds + = +$fs +-> + `g‘DœeùÜySÿ” +( +$this +-> +´ojeù +); + +160 +$upToD©e + = $upToD©&& +$this +-> + `sÿnDœ +( +$fs +-> + `g‘Dœ +($this-> +´ojeù +), + +161 +$ds +-> + `g‘InþudedFžes +()); + +164 ià( +$this +-> +_sourûFže + !=ð +nuÎ +) { + +165 ià( +$this +-> +m­³rEËm’t + ==ð +nuÎ +) { + +166 +$upToD©e + = $upToDate && + +167 ( +$this +-> +_rg‘Fže +-> + `Ï¡Modif›d +(è>ð$this-> +_sourûFže +->lastModified()); + +169 +$sfs + = +Ãw + + `SourûFžeSÿ” +( +$this +); + +170 +$upToD©e + = $upToDate && + +171 + `couÁ +( +$sfs +-> + `»¡riù +( +$this +-> +_sourûFže +-> + `g‘AbsÞu‹P©h +(), + +172 +nuÎ +,‚ull, + +173 +$this +-> +m­³rEËm’t +-> + `g‘Im¶em’tiÚ +())) === 0; + +176  +$upToD©e +; + +177 + } +} + +185 +public + +funùiÚ + + $maš +() { + +186 ià( +$this +-> +_´Ý”ty + ==ð +nuÎ +) { + +187 +throw + +Ãw + + `BuždExû±iÚ +("property‡ttribute is„equired.", + +188 +$this +-> +loÿtiÚ +); + +190 +$upToD©e + = +$this +-> + `ev®u©e +(); + +191 ià( +$upToD©e +) { + +192 +$this +-> +´ojeù +-> + `£tNewPrݔty +($this-> +_´Ý”ty +, $this-> + `g‘V®ue +()); + +193 ià( +$this +-> +m­³rEËm’t + ==ð +nuÎ +) { + +194 +$this +-> + `log +("Fž\"" . $this-> +_rg‘Fže +-> + `g‘AbsÞu‹P©h +() + +195 . "\" i up-to-d©e.", +Projeù +:: +MSG_VERBOSE +); + +197 +$this +-> + `log +("Allarget files‡re up-to-date.", + +198 +Projeù +:: +MSG_VERBOSE +); + +201 + } +} + +203 +´Ùeùed + +funùiÚ + + $sÿnDœ +( +PhšgFže + +$¤cDœ +, +$fžes +) { + +204 +$sfs + = +Ãw + + `SourûFžeSÿ” +( +$this +); + +205 +$m­³r + = +nuÎ +; + +206 +$dœ + = +$¤cDœ +; + +207 ià( +$this +-> +m­³rEËm’t + ==ð +nuÎ +) { + +208 +$mm + = +Ãw + + `M”geM­³r +(); + +209 +$mm +-> + `£tTo +( +$this +-> +_rg‘Fže +-> + `g‘AbsÞu‹P©h +()); + +210 +$m­³r + = +$mm +; + +211 +$dœ + = +nuÎ +; + +213 +$m­³r + = +$this +-> +m­³rEËm’t +-> + `g‘Im¶em’tiÚ +(); + +215  ( + `couÁ +( +$sfs +-> + `»¡riù +( +$fžes +, +$¤cDœ +, +$dœ +, +$m­³r +)) === 0); + +216 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/WarnTask.php + +1 + `log +($this-> +msg +, +Projeù +:: +MSG_WARN +); + +35 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/XsltTask.php + +1 + `ü—‹Fž‹rChaš +($this-> + `g‘Projeù +()); + +51 +$chaš +-> + `addX¦tFž‹r +( +$xf +); + +52 +$this +-> +x¦tFž‹r + = +$xf +; + +59 +funùiÚ + + $maš +() { + +60 +$this +-> + `log +("Došg XSLT¿nsfÜm©iÚ usšg styËsh“ˆ" . $this-> +x¦tFž‹r +-> + `g‘StyË +(), +Projeù +:: +MSG_VERBOSE +); + +61 +$this +-> +x¦tFž‹r +-> + `£tP¬ams +($this-> +·¿m‘”s +); + +62 +·»Á +:: + `maš +(); + +63 + } +} + +69 +funùiÚ + + $£tStyË +( +PhšgFže + +$¡yË +) { + +70 +$this +-> +x¦tFž‹r +-> + `£tStyË +( +$¡yË +); + +71 + } +} + +77 +funùiÚ + + $ü—‹P¬am +() { + +78 +$num + = + `¬¿y_push +( +$this +-> +·¿m‘”s +, +Ãw + + `XSLTP¬am +()); + +79  +$this +-> +·¿m‘”s +[ +$num +-1]; + +80 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/AndCondition.php + +1 + `ev®u©e +()) { + +41  +çl£ +; + +44  +Œue +; + +46 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/Condition.php + +1 +cÚd™iÚs +); + +49 +funùiÚ + + $g‘I‹¿tÜ +() { + +50  +Ãw + + `CÚd™iÚEnum”©iÚ +( +$this +); + +51 + } +} + +53 +funùiÚ + + $g‘CÚd™iÚs +() { + +54  +$this +-> +cÚd™iÚs +; + +55 + } +} + +60 +funùiÚ + + $addAvažabË +( +AvažabËTask + +$a +) { + +61 +$this +-> +cÚd™iÚs +[] = +$a +; + +62 + } +} + +67 +funùiÚ + + $ü—‹NÙ +() { + +68 +šþude_Úû + 'phing/tasks/system/condition/NotCondition.php'; + +69 +$num + = + `¬¿y_push +( +$this +-> +cÚd™iÚs +, +Ãw + + `NÙCÚd™iÚ +()); + +70  +$this +-> +cÚd™iÚs +[ +$num +-1]; + +71 + } +} + +76 +funùiÚ + + $ü—‹And +() { + +77 +šþude_Úû + 'phing/tasks/system/condition/AndCondition.php'; + +78 +$num + = + `¬¿y_push +( +$this +-> +cÚd™iÚs +, +Ãw + + `AndCÚd™iÚ +()); + +79  +$this +-> +cÚd™iÚs +[ +$num +-1]; + +80 + } +} + +85 +funùiÚ + + $ü—‹Or +() { + +86 +šþude_Úû + 'phing/tasks/system/condition/OrCondition.php'; + +87 +$num + = + `¬¿y_push +( +$this +-> +cÚd™iÚs +, +Ãw + + `OrCÚd™iÚ +()); + +88  +$this +-> +cÚd™iÚs +[ +$num +-1]; + +89 + } +} + +94 +funùiÚ + + $ü—‹Equ®s +() { + +95 +šþude_Úû + 'phing/tasks/system/condition/EqualsCondition.php'; + +96 +$num + = + `¬¿y_push +( +$this +-> +cÚd™iÚs +, +Ãw + + `Equ®sCÚd™iÚ +()); + +97  +$this +-> +cÚd™iÚs +[ +$num +-1]; + +98 + } +} + +103 +funùiÚ + + $ü—‹Os +() { + +104 +šþude_Úû + 'phing/tasks/system/condition/OsCondition.php'; + +105 +$num + = + `¬¿y_push +( +$this +-> +cÚd™iÚs +, +Ãw + + `OsCÚd™iÚ +()); + +106  +$this +-> +cÚd™iÚs +[ +$num +-1]; + +107 + } +} + +112 +funùiÚ + + $ü—‹IsF®£ +() { + +113 +šþude_Úû + 'phing/tasks/system/condition/IsFalseCondition.php'; + +114 +$num + = + `¬¿y_push +( +$this +-> +cÚd™iÚs +, +Ãw + + `IsF®£CÚd™iÚ +()); + +115  +$this +-> +cÚd™iÚs +[ +$num +-1]; + +116 + } +} + +121 +funùiÚ + + $ü—‹IsTrue +() { + +122 +šþude_Úû + 'phing/tasks/system/condition/IsTrueCondition.php'; + +123 +$num + = + `¬¿y_push +( +$this +-> +cÚd™iÚs +, +Ãw + + `IsTrueCÚd™iÚ +()); + +124  +$this +-> +cÚd™iÚs +[ +$num +-1]; + +125 + } +} + +130 +funùiÚ + + $ü—‹Cڏšs +() { + +131 +šþude_Úû + 'phing/tasks/system/condition/ContainsCondition.php'; + +132 +$num + = + `¬¿y_push +( +$this +-> +cÚd™iÚs +, +Ãw + + `CڏšsCÚd™iÚ +()); + +133  +$this +-> +cÚd™iÚs +[ +$num +-1]; + +134 + } +} + +139 +funùiÚ + + $ü—‹IsS‘ +() { + +140 +šþude_Úû + 'phing/tasks/system/condition/IsSetCondition.php'; + +141 +$num + = + `¬¿y_push +( +$this +-> +cÚd™iÚs +, +Ãw + + `IsS‘CÚd™iÚ +()); + +142  +$this +-> +cÚd™iÚs +[ +$num +-1]; + +143 + } +} + +148 +funùiÚ + + $ü—‹Reã»nûExi¡s +() { + +149 +šþude_Úû + 'phing/tasks/system/condition/ReferenceExistsCondition.php'; + +150 +$num + = + `¬¿y_push +( +$this +-> +cÚd™iÚs +, +Ãw + + `Reã»nûExi¡sCÚd™iÚ +()); + +151  +$this +-> +cÚd™iÚs +[ +$num +-1]; + +152 + } +} + +160 þas  + cCÚd™iÚEnum”©iÚ + +im¶em’ts + + mI‹¿tÜ + { + +163 +´iv©e + + m$num + = 0; + +166 +´iv©e + + m$ou‹r +; + +168 +funùiÚ + + $__cÚ¡ruù +( +CÚd™iÚBa£ + +$ou‹r +) { + +169 +$this +-> +ou‹r + = +$ou‹r +; + +172 +public + +funùiÚ + + $v®id +() { + +173  +$this +-> +ou‹r +-> + `couÁCÚd™iÚs +(è> $this-> +num +; + +174 + } +} + +176 +funùiÚ + + $cu¼’t +() { + +177 +$o + = +$this +-> +ou‹r +-> +cÚd™iÚs +[$this-> +num +]; + +178 ià( +$o + +š¡ªûof + +ProjeùCompڒt +) { + +179 +$o +-> + `£tProjeù +( +$this +-> +ou‹r +-> + `g‘Projeù +()); + +181  +$o +; + +182 + } +} + +184 +funùiÚ + + $Ãxt +() { + +185 +$this +-> +num +++; + +186 + } +} + +188 +funùiÚ + + $key +() { + +189  +$this +-> +num +; + +190 + } +} + +192 +funùiÚ + + $»wšd +() { + +193 +$this +-> +num + = 0; + +194 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/ContainsCondition.php + +1 +¡ršg + = +$a1 +; + +51 +public + +funùiÚ + + $£tSub¡ršg +( +$a2 +) { + +52 +$this +-> +subSŒšg + = +$a2 +; + +53 + } +} + +58 +public + +funùiÚ + + $£tCa£S’s™ive +( +$b +) { + +59 +$this +-> +ÿ£S’s™ive + = ( +boޗn +è +$b +; + +60 + } +} + +66 +public + +funùiÚ + + $ev®u©e +() { + +67 ià( +$this +-> +¡ršg + ==ð +nuÎ + || $this-> +subSŒšg + ===‚ull) { + +68 +throw + +Ãw + + `BuždExû±iÚ +("both string‡nd substring‡re„equired " + +72  +$this +-> +ÿ£S’s™ive + + +73 ? + `¡½os +( +$this +-> +¡ršg +, $this-> +subSŒšg +è!=ð +çl£ + + +74 : + `¡½os +( + `¡¹Þow” +( +$this +-> +¡ršg +), sŒtÞow”($this-> +subSŒšg +)è!=ð +çl£ +; + +75 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/EqualsCondition.php + +1 +¬g1 + = +$a1 +; + +45 +public + +funùiÚ + + $£tArg2 +( +$a2 +) { + +46 +$this +-> +¬g2 + = +$a2 +; + +47 + } +} + +53 +public + +funùiÚ + + $£tTrim +( +$b +) { + +54 +$this +-> +Œim + = ( +boޗn +è +$b +; + +55 + } +} + +61 +public + +funùiÚ + + $£tCa£S’s™ive +( +$b +) { + +62 +$this +-> +ÿ£S’s™ive + = ( +boޗn +è +$b +; + +63 + } +} + +65 +public + +funùiÚ + + $ev®u©e +() { + +66 ià( +$this +-> +¬g1 + ==ð +nuÎ + || $this-> +¬g2 + ===‚ull) { + +67 +throw + +Ãw + + `BuždExû±iÚ +("Both‡rg1‡nd‡rg2‡re„equired inƒquals."); + +70 ià( +$this +-> +Œim +) { + +71 +$this +-> +¬g1 + = + `Œim +($this->arg1); + +72 +$this +-> +¬g2 + = + `Œim +($this->arg2); + +76  +$this +-> +ÿ£S’s™ive + ? $this-> +¬g1 + ==ð$this-> +¬g2 + : + `¡¹Þow” +($this->arg1) === strtolower($this->arg2); + +77 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/IsFalseCondition.php + +1 +v®ue + = +$v®ue +; + +52 +public + +funùiÚ + + $ev®u©e +() { + +53 ià( +$this +-> +v®ue + ==ð +nuÎ +) { + +54 +throw + +Ãw + + `BuždExû±iÚ +("Nothingoest for falsehood"); + +56  ! +$this +-> +v®ue +; + +57 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/IsSetCondition.php + +1 +´Ý”ty + = +$p +; + +45 +public + +funùiÚ + + $ev®u©e +() { + +46 ià( +$this +-> +´Ý”ty + ==ð +nuÎ +) { + +47 +throw + +Ãw + + `BuždExû±iÚ +("No…roperty specified for isset " + +50  +$this +-> +´ojeù +-> + `g‘Prݔty +($this-> +´Ý”ty +è!=ð +nuÎ +; + +51 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/IsTrueCondition.php + +1 +v®ue + = +$v®ue +; + +51 +public + +funùiÚ + + $ev®u©e +() { + +52 ià( +$this +-> +v®ue + ==ð +nuÎ +) { + +53 +throw + +Ãw + + `BuždExû±iÚ +("Nothingoest for falsehood"); + +55  +$this +-> +v®ue +; + +56 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/NotCondition.php + +1 + `couÁCÚd™iÚs +() > 1) { + +40 +throw + +Ãw + + `BuždExû±iÚ +("You must‚ot‚est morehan one condition into "); + +42 ià( +$this +-> + `couÁCÚd™iÚs +() < 1) { + +43 +throw + +Ãw + + `BuždExû±iÚ +("You must‚est‡ condition into "); + +45 +$cÚds + = +$this +-> + `g‘I‹¿tÜ +(); + +46  ! +$cÚds +-> + `cu¼’t +()-> + `ev®u©e +(); + +48 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/OrCondition.php + +1 + `ev®u©e +()) { + +41  +Œue +; + +44  +çl£ +; + +46 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/OsCondition.php + +1 +çmžy + = + `¡¹Þow” +( +$f +); + +41 +funùiÚ + + $ev®u©e +() { + +42 +$osName + = + `¡¹Þow” +( +Phšg +:: + `g‘Prݔty +("os.name")); + +44 ià( +$this +-> +çmžy + !=ð +nuÎ +) { + +45 ià( +$this +-> +çmžy + === "windows") { + +46  +SŒšgH–³r +:: + `¡¬tsW™h +("wš", +$osName +); + +47 } + `–£if + ( +$this +-> +çmžy + === "mac") { + +48  ( + `¡½os +( +$osName +, "mac"è!=ð +çl£ + || strpos($osName, "darwin") !== false); + +49 } + `–£if + ( +$this +-> +çmžy + === ("unix")) { + +51 +SŒšgH–³r +:: + `’dsW™h +("ix", +$osName +) || + +52 +SŒšgH–³r +:: + `’dsW™h +("ux", +$osName +) || + +53 +SŒšgH–³r +:: + `’dsW™h +("bsd", +$osName +) || + +54 +SŒšgH–³r +:: + `¡¬tsW™h +("sunos", +$osName +) || + +55 +SŒšgH–³r +:: + `¡¬tsW™h +("d¬wš", +$osName +) + +58 +throw + +Ãw + + `BuždExû±iÚ +("DÚ'ˆknow howØd‘eù o çmžy '" . +$this +-> +çmžy + . "'"); + +60  +çl£ +; + +61 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/ReferenceExistsCondition.php + +1 +»fid + = ( +¡ršg +è +$id +; + +42 +public + +funùiÚ + + $ev®u©e +() { + +43 ià( +$this +-> +»fid + ==ð +nuÎ +) { + +44 +throw + +Ãw + + `BuždExû±iÚ +("No„ef‡ttribute specified for„eference-exists " + +47 +$»fs + = +$this +-> +´ojeù +-> + `g‘Reã»nûs +(); + +48  + `is£t +( +$»fs +[ +$this +-> +»fid +]); + +49 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/AbstractFileSet.php + +1 +dœ + = +$fže£t +->dir; + +91 +$this +-> +deçuÉP©‹ºs + = +$fže£t +->defaultPatterns; + +92 +$this +-> +add™iÚ®P©‹ºs + = +$fže£t +->additionalPatterns; + +93 +$this +-> +u£DeçuÉExþudes + = +$fže£t +->useDefaultExcludes; + +94 +$this +-> +isCa£S’s™ive + = +$fže£t +->isCaseSensitive; + +95 +$this +-> +£ËùÜs + = +$fže£t +->selectors; + +97 +$this +-> +deçuÉP©‹ºs + = +Ãw + + `P©‹ºS‘ +(); + +107 +funùiÚ + + $£tRefid +( +Reã»nû + +$r +) { + +108 ià(( + `is£t +( +$this +-> +dœ +è&& ! + `is_nuÎ +($this->dœ)è|| $this-> +deçuÉP©‹ºs +-> + `hasP©‹ºs +()) { + +109 +throw + +$this +-> + `tooMªyA‰ribu‹s +(); + +111 ià(! + `em±y +( +$this +-> +add™iÚ®P©‹ºs +)) { + +112 +throw + +$this +-> + `noChžd»nAÎowed +(); + +114 ià(! + `em±y +( +$this +-> +£ËùÜs +)) { + +115 +throw + +$this +-> + `noChžd»nAÎowed +(); + +117 +·»Á +:: + `£tRefid +( +$r +); + +118 + } +} + +121 +funùiÚ + + $£tDœ +( +$dœ +) { + +122 ià( +$this +-> + `isReã»nû +()) { + +123 +throw + +$this +-> + `tooMªyA‰ribu‹s +(); + +125 ià( +$dœ + +š¡ªûof + +PhšgFže +) { + +126 +$dœ + = $dœ-> + `g‘P©h +(); + +128 +$this +-> +dœ + = +Ãw + + `PhšgFže +(( +¡ršg +è +$dœ +); + +129 + } +} + +132 +funùiÚ + + $g‘Dœ +( +Projeù + +$p +) { + +133 ià( +$this +-> + `isReã»nû +()) { + +134  +$this +-> + `g‘Ref +( +$p +)-> + `g‘Dœ +($p); + +136  +$this +-> +dœ +; + +137 + } +} + +140 +funùiÚ + + $ü—‹P©‹ºS‘ +() { + +141 ià( +$this +-> + `isReã»nû +()) { + +142 +throw + +$this +-> + `noChžd»nAÎowed +(); + +144 +$num + = + `¬¿y_push +( +$this +-> +add™iÚ®P©‹ºs +, +Ãw + + `P©‹ºS‘ +()); + +145  +$this +-> +add™iÚ®P©‹ºs +[ +$num +-1]; + +146 + } +} + +151 +funùiÚ + + $ü—‹Inþude +() { + +152 ià( +$this +-> + `isReã»nû +()) { + +153 +throw + +$this +-> + `noChžd»nAÎowed +(); + +155  +$this +-> +deçuÉP©‹ºs +-> + `ü—‹Inþude +(); + +156 + } +} + +161 +funùiÚ + + $ü—‹InþudesFže +() { + +162 ià( +$this +-> + `isReã»nû +()) { + +163 +throw + +$this +-> + `noChžd»nAÎowed +(); + +165  +$this +-> +deçuÉP©‹ºs +-> + `ü—‹InþudesFže +(); + +166 + } +} + +171 +funùiÚ + + $ü—‹Exþude +() { + +172 ià( +$this +-> + `isReã»nû +()) { + +173 +throw + +$this +-> + `noChžd»nAÎowed +(); + +175  +$this +-> +deçuÉP©‹ºs +-> + `ü—‹Exþude +(); + +176 + } +} + +181 +funùiÚ + + $ü—‹ExþudesFže +() { + +182 ià( +$this +-> + `isReã»nû +()) { + +183 +throw + +$this +-> + `noChžd»nAÎowed +(); + +186  +$this +-> +deçuÉP©‹ºs +-> + `ü—‹ExþudesFže +(); + +187 + } +} + +193 +funùiÚ + + $£tInþudes +( +$šþudes +) { + +194 ià( +$this +-> + `isReã»nû +()) { + +195 +throw + +$this +-> + `tooMªyA‰ribu‹s +(); + +197 +$this +-> +deçuÉP©‹ºs +-> + `£tInþudes +( +$šþudes +); + +198 + } +} + +204 +funùiÚ + + $£tExþudes +( +$exþudes +) { + +205 ià( +$this +-> + `isReã»nû +()) { + +206 +throw + +$this +-> + `tooMªyA‰ribu‹s +(); + +208 +$this +-> +deçuÉP©‹ºs +-> + `£tExþudes +( +$exþudes +); + +209 + } +} + +217 +funùiÚ + + $£tInþudesfže +( +$šþ +) { + +218 ià( +$this +-> + `isReã»nû +()) { + +219 +throw + +$this +-> + `tooMªyA‰ribu‹s +(); + +221 +$this +-> +deçuÉP©‹ºs +-> + `£tInþudesfže +( +$šþ +); + +222 + } +} + +230 +funùiÚ + + $£tExþudesfže +( +$exþ +) { + +231 ià( +$this +-> + `isReã»nû +()) { + +232 +throw + +$this +-> + `tooMªyA‰ribu‹s +(); + +234 +$this +-> +deçuÉP©‹ºs +-> + `£tExþudesfže +( +$exþ +); + +235 + } +} + +244 +funùiÚ + + $£tDeçuÉexþudes +( +$u£DeçuÉExþudes +) { + +245 ià( +$this +-> + `isReã»nû +()) { + +246 +throw + +$this +-> + `tooMªyA‰ribu‹s +(); + +248 +$this +-> +u£DeçuÉExþudes + = +$u£DeçuÉExþudes +; + +249 + } +} + +254 +funùiÚ + + $£tCa£S’s™ive +( +$isCa£S’s™ive +) { + +255 +$this +-> +isCa£S’s™ive + = +$isCa£S’s™ive +; + +256 + } +} + +259 +funùiÚ + + $g‘DœeùÜySÿ” +( +Projeù + +$p +) { + +260 ià( +$this +-> + `isReã»nû +()) { + +261 +$o + = +$this +-> + `g‘Ref +( +$p +); + +262  +$o +-> + `g‘DœeùÜySÿ” +( +$p +); + +265 ià( +$this +-> +dœ + ==ð +nuÎ +) { + +266 +throw + +Ãw + + `BuždExû±iÚ +("No directory specified for fileset."); + +268 ià(! +$this +-> +dœ +-> + `exi¡s +()) { + +269 +throw + +Ãw + + `BuždExû±iÚ +("DœeùÜy ". +$this +-> +dœ +-> + `g‘AbsÞu‹P©h +()."‚ot found."); + +271 ià(! +$this +-> +dœ +-> + `isDœeùÜy +()) { + +272 +throw + +Ãw + + `BuždExû±iÚ +( +$this +-> +dœ +-> + `g‘AbsÞu‹P©h +()." is‚ot‡ directory."); + +274 +$ds + = +Ãw + + `DœeùÜySÿ” +(); + +275 +$this +-> + `£tupDœeùÜySÿ” +( +$ds +, +$p +); + +276 +$ds +-> + `sÿn +(); + +277  +$ds +; + +278 + } +} + +281 +´Ùeùed + +funùiÚ + + $£tupDœeùÜySÿ” +( +DœeùÜySÿ” + +$ds +, +Projeù + +$p +) { + +282 ià( +$ds + ==ð +nuÎ +) { + +283 +throw + +Ãw + + `Exû±iÚ +("DirectoryScanner cannot be‚ull"); + +286 +$ds +-> + `£tBa£dœ +( +$this +-> +dœ +-> + `g‘P©h +()); + +288 + `fܗch +( +$this +-> +add™iÚ®P©‹ºs + +as + +$addP©‹º +) { + +289 +$this +-> +deçuÉP©‹ºs +-> + `­³nd +( +$addP©‹º +, +$p +); + +292 +$ds +-> + `£tInþudes +( +$this +-> +deçuÉP©‹ºs +-> + `g‘InþudeP©‹ºs +( +$p +)); + +293 +$ds +-> + `£tExþudes +( +$this +-> +deçuÉP©‹ºs +-> + `g‘ExþudeP©‹ºs +( +$p +)); + +295 +$p +-> + `log +("FžeS‘: S‘u°fžsÿ” iÀdœ " . +$this +-> +dœ +-> + `__toSŒšg +(è. " w™h " . $this-> +deçuÉP©‹ºs +-> + `toSŒšg +(), +Projeù +:: +MSG_DEBUG +); + +297 ià( +$ds + +š¡ªûof + +S–eùÜSÿ” +) { + +298 +$ds +-> + `£tS–eùÜs +( +$this +-> + `g‘S–eùÜs +( +$p +)); + +301 ià( +$this +-> +u£DeçuÉExþudes +) { + +302 +$ds +-> + `addDeçuÉExþudes +(); + +304 +$ds +-> + `£tCa£S’s™ive +( +$this +-> +isCa£S’s™ive +); + +305 + } +} + +312 +funùiÚ + + $g‘Ref +( +Projeù + +$p +) { + +313 ià(! +$this +-> +checked +) { + +314 +$¡k + = + `¬¿y +(); + +315 + `¬¿y_push +( +$¡k +, +$this +); + +316 +$this +-> + `d›OnCœcuÏrReã»nû +( +$¡k +, +$p +); + +319 +$o + = +$this +-> +»f +-> + `g‘Reã»nûdObjeù +( +$p +); + +320 ià(!( +$o + +š¡ªûof + +FžeS‘ +)) { + +321 +$msg + = +$this +-> +»f +-> + `g‘RefId +()." doesn't denote‡ fileset"; + +322 +throw + +Ãw + + `BuždExû±iÚ +( +$msg +); + +324  +$o +; + +326 + } +} + +335 +public + +funùiÚ + + $hasS–eùÜs +() { + +336 ià( +$this +-> + `isReã»nû +(è&& $this-> + `g‘Projeù +(è!=ð +nuÎ +) { + +337  +$this +-> + `g‘Ref +($this-> + `g‘Projeù +())-> + `hasS–eùÜs +(); + +339  ! + `em±y +( +$this +-> +£ËùÜs +); + +340 + } +} + +347 +public + +funùiÚ + + $hasP©‹ºs +() { + +349 ià( +$this +-> + `isReã»nû +(è&& $this-> + `g‘Projeù +(è!=ð +nuÎ +) { + +350  +$this +-> + `g‘Ref +($this-> + `g‘Projeù +())-> + `hasP©‹ºs +(); + +353 ià( +$this +-> +deçuÉP©‹ºs +-> + `hasP©‹ºs +($this-> + `g‘Projeù +())) { + +354  +Œue +; + +357  +$i +=0, +$size += + `couÁ +( +$this +-> +add™iÚ®P©‹ºs +); $i < $size; $i++) { + +358 +$ps + = +$this +-> +add™iÚ®P©‹ºs +[ +$i +]; + +359 ià( +$ps +-> + `hasP©‹ºs +( +$this +-> + `g‘Projeù +())) { + +360  +Œue +; + +364  +çl£ +; + +365 + } +} + +372 +public + +funùiÚ + + $£ËùÜCouÁ +() { + +373 ià( +$this +-> + `isReã»nû +(è&& $this-> + `g‘Projeù +(è!=ð +nuÎ +) { + +374 +Œy + { + +375  +$this +-> + `g‘Ref +($this-> + `g‘Projeù +())-> + `£ËùÜCouÁ +(); + +376 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +377 +throw + +$e +; + +380  + `couÁ +( +$this +-> +£ËùÜs +); + +381 + } +} + +388 +public + +funùiÚ + + $g‘S–eùÜs +( +Projeù + +$p +) { + +389 ià( +$this +-> + `isReã»nû +()) { + +390  +$this +-> + `g‘Ref +( +$p +)-> + `g‘S–eùÜs +($p); + +393 +$»suÉ + = + `¬¿y +(); + +394  +$i +=0, +$size += + `couÁ +( +$this +-> +£ËùÜs +); $i < $size; $i++) { + +395 +$»suÉ +[] = +þÚe + +$this +-> +£ËùÜs +[ +$i +]; + +397  +$»suÉ +; + +399 + } +} + +406 +public + +funùiÚ + + $£ËùÜEËm’ts +() { + +407 ià( +$this +-> + `isReã»nû +(è&& $this-> + `g‘Projeù +(è!=ð +nuÎ +) { + +408  +$this +-> + `g‘Ref +($this-> + `g‘Projeù +())-> + `£ËùÜEËm’ts +(); + +410  +$this +-> +£ËùÜs +; + +411 + } +} + +418 +public + +funùiÚ + + $­³ndS–eùÜ +( +FžeS–eùÜ + +$£ËùÜ +) { + +419 ià( +$this +-> + `isReã»nû +()) { + +420 +throw + +$this +-> + `noChžd»nAÎowed +(); + +422 +$this +-> +£ËùÜs +[] = +$£ËùÜ +; + +423 + } +} + +430 +public + +funùiÚ + + $ü—‹S–eùÜ +() { + +431 +$o + = +Ãw + + `S–eùS–eùÜ +(); + +432 +$this +-> + `­³ndS–eùÜ +( +$o +); + +433  +$o +; + +434 + } +} + +439 +public + +funùiÚ + + $ü—‹And +() { + +440 +$o + = +Ãw + + `AndS–eùÜ +(); + +441 +$this +-> + `­³ndS–eùÜ +( +$o +); + +442  +$o +; + +443 + } +} + +448 +public + +funùiÚ + + $ü—‹Or +() { + +449 +$o + = +Ãw + + `OrS–eùÜ +(); + +450 +$this +-> + `­³ndS–eùÜ +( +$o +); + +451  +$o +; + +452 + } +} + +457 +public + +funùiÚ + + $ü—‹NÙ +() { + +458 +$o + = +Ãw + + `NÙS–eùÜ +(); + +459 +$this +-> + `­³ndS–eùÜ +( +$o +); + +460  +$o +; + +461 + } +} + +466 +public + +funùiÚ + + $ü—‹NÚe +() { + +467 +$o + = +Ãw + + `NÚeS–eùÜ +(); + +468 +$this +-> + `­³ndS–eùÜ +( +$o +); + +469  +$o +; + +470 + } +} + +475 +public + +funùiÚ + + $ü—‹Majܙy +() { + +476 +$o + = +Ãw + + `MajܙyS–eùÜ +(); + +477 +$this +-> + `­³ndS–eùÜ +( +$o +); + +478  +$o +; + +479 + } +} + +484 +public + +funùiÚ + + $ü—‹D©e +() { + +485 +$o + = +Ãw + + `D©eS–eùÜ +(); + +486 +$this +-> + `­³ndS–eùÜ +( +$o +); + +487  +$o +; + +488 + } +} + +493 +public + +funùiÚ + + $ü—‹Size +() { + +494 +$o + = +Ãw + + `SizeS–eùÜ +(); + +495 +$this +-> + `­³ndS–eùÜ +( +$o +); + +496  +$o +; + +497 + } +} + +502 +public + +funùiÚ + + $ü—‹Fž’ame +() { + +503 +$o + = +Ãw + + `Fž’ameS–eùÜ +(); + +504 +$this +-> + `­³ndS–eùÜ +( +$o +); + +505  +$o +; + +506 + } +} + +511 +public + +funùiÚ + + $ü—‹Cu¡om +() { + +512 +$o + = +Ãw + + `Ex‹ndS–eùÜ +(); + +513 +$this +-> + `­³ndS–eùÜ +( +$o +); + +514  +$o +; + +515 + } +} + +520 +public + +funùiÚ + + $ü—‹Cڏšs +() { + +521 +$o + = +Ãw + + `CڏšsS–eùÜ +(); + +522 +$this +-> + `­³ndS–eùÜ +( +$o +); + +523  +$o +; + +524 + } +} + +529 +public + +funùiÚ + + $ü—‹CڏšsRegexp +() { + +530 +$o + = +Ãw + + `CڏšsRegexpS–eùÜ +(); + +531 +$this +-> + `­³ndS–eùÜ +( +$o +); + +532  +$o +; + +533 + } +} + +538 +public + +funùiÚ + + $ü—‹P»£Á +() { + +539 +$o + = +Ãw + + `P»£ÁS–eùÜ +(); + +540 +$this +-> + `­³ndS–eùÜ +( +$o +); + +541  +$o +; + +542 + } +} + +547 +public + +funùiÚ + + $ü—‹D•th +() { + +548 +$o + = +Ãw + + `D•thS–eùÜ +(); + +549 +$this +-> + `­³ndS–eùÜ +( +$o +); + +550  +$o +; + +551 + } +} + +556 +public + +funùiÚ + + $ü—‹D•’d +() { + +557 +$o + = +Ãw + + `D•’dS–eùÜ +(); + +558 +$this +-> + `­³ndS–eùÜ +( +$o +); + +559  +$o +; + +560 + } +} + +565 +public + +funùiÚ + + $ü—‹Ty³ +() { + +566 +$o + = +Ãw + + `Ty³S–eùÜ +(); + +567 +$this +-> + `­³ndS–eùÜ +( +$o +); + +568  +$o +; + +569 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/Commandline.php + +1 + `Œª¦©eCommªdlše +( +$to_´oûss +); + +63 ià( +$tmp +) { + +64 +$this +-> + `£tExecubË +( + `¬¿y_shiá +( +$tmp +)); + +65 + `fܗch +( +$tmp + +as + +$¬g +) { + +66 +$this +-> + `ü—‹Argum’t +()-> + `£tV®ue +( +$¬g +); + +83 +public + +funùiÚ + + $ü—‹Argum’t +( +$š£¹AtS¹ + = +çl£ +) { + +84 +$¬gum’t + = +Ãw + + `CommªdlšeArgum’t +( +$this +); + +85 ià( +$š£¹AtS¹ +) { + +86 + `¬¿y_unshiá +( +$this +-> +¬gum’ts +, +$¬gum’t +); + +88 + `¬¿y_push +( +$this +-> +¬gum’ts +, +$¬gum’t +); + +90  +$¬gum’t +; + +91 + } +} + +96 +public + +funùiÚ + + $£tExecubË +( +$execubË +) { + +97 ià(! +$execubË +) { + +100 +$this +-> +execubË + = +$execubË +; + +101 +$this +-> +execubË + = + `¡¹r +($this->execubË, '/', +DIRECTORY_SEPARATOR +); + +102 +$this +-> +execubË + = + `¡¹r +($this->execubË, '\\', +DIRECTORY_SEPARATOR +); + +103 + } +} + +105 +public + +funùiÚ + + $g‘ExecubË +() { + +106  +$this +-> +execubË +; + +107 + } +} + +109 +public + +funùiÚ + + $addArgum’ts +( +$lše +) { + +110 + `fܗch +( +$lše + +as + +$¬g +) { + +111 +$this +-> + `ü—‹Argum’t +()-> + `£tV®ue +( +$¬g +); + +113 + } +} + +119 +public + +funùiÚ + + $g‘Commªdlše +() { + +120 +$¬gs + = +$this +-> + `g‘Argum’ts +(); + +121 ià( +$this +-> +execubË + ==ð +nuÎ +) { + +122  +$¬gs +; + +124  + `¬¿y_m”ge +( + `¬¿y +( +$this +-> +execubË +), +$¬gs +); + +125 + } +} + +132 +public + +funùiÚ + + $g‘Argum’ts +() { + +133 +$»suÉ + = + `¬¿y +(); + +134 + `fܗch +( +$this +-> +¬gum’ts + +as + +$¬g +) { + +135 +$·¹s + = +$¬g +-> + `g‘P¬ts +(); + +136 ià( +$·¹s + !=ð +nuÎ +) { + +137 + `fܗch +( +$·¹s + +as + +$·¹ +) { + +138 +$»suÉ +[] = +$·¹ +; + +142  +$»suÉ +; + +143 + } +} + +145 +public + +funùiÚ + + $__toSŒšg +() { + +146  +£lf +:: + `toSŒšg +( +$this +-> + `g‘Commªdlše +()); + +147 + } +} + +159 +public +  +funùiÚ + + $quÙeArgum’t +( +$¬gum’t +) { + +160 ià( + `¡½os +( +$¬gum’t +, "\""è!=ð +çl£ +) { + +161 ià( + `¡½os +( +$¬gum’t +, "'"è!=ð +çl£ +) { + +162 +throw + +Ãw + + `BuždExû±iÚ +("Can't handle single‡nd double quotes in same‡rgument"); + +164  + `esÿ³sh–Ïrg +( +$¬gum’t +); + +166 } + `–£if + ( + `¡½os +( +$¬gum’t +, "'"è!=ð +çl£ + || strpos($argument, " ") !== false) { + +167  + `esÿ³sh–Ïrg +( +$¬gum’t +); + +170  +$¬gum’t +; + +172 + } +} + +178 +public +  +funùiÚ + + $toSŒšg +( +$lšes +) { + +180 ià(! +$lšes +) { + +185 +$»suÉ + = ""; + +186  +$i + = 0, +$Ën += + `couÁ +( +$lšes +); $i < $len; $i++) { + +187 ià( +$i + > 0) { + +188 +$»suÉ + .= ' '; + +190 +$»suÉ + .ð +£lf +:: + `quÙeArgum’t +( +$lšes +[ +$i +]); + +192  +$»suÉ +; + +193 + } +} + +200 +public +  +funùiÚ + + $Œª¦©eCommªdlše +( +$to_´oûss +) { + +202 ià(! +$to_´oûss +) { + +203  + `¬¿y +(); + +208 +$nÜm® + = 0; + +209 +$šQuÙe + = 1; + +210 +$šDoubËQuÙe + = 2; + +212 +$¡©e + = +$nÜm® +; + +213 +$¬gs + = + `¬¿y +(); + +214 +$cu¼’t + = ""; + +215 +$Ï¡Tok’HasB“nQuÙed + = +çl£ +; + +217 +$tok + = + `¡¹ok +( +$to_´oûss +, ""); + +218 +$tok’s + = + `´eg_¥l™ +('/(["\' ])/', +$to_´oûss +, -1, +PREG_SPLIT_DELIM_CAPTURE +); + +219 ( +$ÃxtTok + = + `¬¿y_shiá +( +$tok’s +)è!=ð +nuÎ +) { + +220  +$¡©e +) { + +221  +$šQuÙe +: + +222 ià("'" =ð +$ÃxtTok +) { + +223 +$Ï¡Tok’HasB“nQuÙed + = +Œue +; + +224 +$¡©e + = +$nÜm® +; + +226 +$cu¼’t + .ð +$ÃxtTok +; + +229  +$šDoubËQuÙe +: + +230 ià("\"" =ð +$ÃxtTok +) { + +231 +$Ï¡Tok’HasB“nQuÙed + = +Œue +; + +232 +$¡©e + = +$nÜm® +; + +234 +$cu¼’t + .ð +$ÃxtTok +; + +238 ià("'" =ð +$ÃxtTok +) { + +239 +$¡©e + = +$šQuÙe +; + +240 } + `–£if + ("\"" =ð +$ÃxtTok +) { + +241 +$¡©e + = +$šDoubËQuÙe +; + +242 } + `–£if + (" " =ð +$ÃxtTok +) { + +243 ià( +$Ï¡Tok’HasB“nQuÙed + || + `¡¾’ +( +$cu¼’t +) != 0) { + +244 +$¬gs +[] = +$cu¼’t +; + +245 +$cu¼’t + = ""; + +248 +$cu¼’t + .ð +$ÃxtTok +; + +250 +$Ï¡Tok’HasB“nQuÙed + = +çl£ +; + +255 ià( +$Ï¡Tok’HasB“nQuÙed + || + `¡¾’ +( +$cu¼’t +) != 0) { + +256 +$¬gs +[] = +$cu¼’t +; + +259 ià( +$¡©e + =ð +$šQuÙe + || $¡©=ð +$šDoubËQuÙe +) { + +260 +throw + +Ãw + + `BuždExû±iÚ +("unb®ªûd quÙe š " . +$to_´oûss +); + +263  +$¬gs +; + +264 + } +} + +269 +public + +funùiÚ + + $size +() { + +270  + `couÁ +( +$this +-> + `g‘Commªdlše +()); + +271 + } +} + +273 +public + +funùiÚ + + $__cÝy +() { + +274 +$c + = +Ãw + + `Commªdlše +(); + +275 +$c +-> + `£tExecubË +( +$this +-> +execubË +); + +276 +$c +-> + `addArgum’ts +( +$this +-> + `g‘Argum’ts +()); + +277  +$c +; + +278 + } +} + +282 +public + +funùiÚ + + $þ—r +() { + +283 +$this +-> +execubË + = +nuÎ +; + +284 +$this +-> +¬gum’ts +-> + `»moveAÎEËm’ts +(); + +285 + } +} + +291 +public + +funùiÚ + + $þ—rArgs +() { + +292 +$this +-> +¬gum’ts + = + `¬¿y +(); + +293 + } +} + +303 +public + +funùiÚ + + $ü—‹M¬k” +() { + +304  +Ãw + + `CommªdlšeM¬k” +( +$this +, + `couÁ +($this-> +¬gum’ts +)); + +305 + } +} + +317 +public + +funùiÚ + + $desüibeCommªd +( +$¬gs + = +nuÎ +) { + +319 ià( +$¬gs + ==ð +nuÎ +) { + +320 +$¬gs + = +$this +-> + `g‘Commªdlše +(); + +323 ià(! +$¬gs +) { + +327 +$buf + = "Executing '"; + +328 +$buf + .ð +$¬gs +[0]; + +329 +$buf + .= "'"; + +330 ià( + `couÁ +( +$¬gs +) > 0) { + +331 +$buf + .= " with "; + +332 +$buf + .ð +$this +-> + `desüibeArgum’ts +( +$¬gs +, 1); + +334 +$buf + .ð +£lf +:: +DISCLAIMER +; + +336  +$buf +; + +337 + } +} + +347 +´Ùeùed + +funùiÚ + + $desüibeArgum’ts +( +$¬gs + = +nuÎ +, +$off£t + = 0) { + +348 ià( +$¬gs + ==ð +nuÎ +) { + +349 +$¬gs + = +$this +-> + `g‘Argum’ts +(); + +352 ià( +$¬gs + ==ð +nuÎ + || + `couÁ +($¬gsè<ð +$off£t +) { + +356 +$buf + = "argument"; + +357 ià( + `couÁ +( +$¬gs +è> +$off£t +) { + +358 +$buf + .= "s"; + +360 +$buf + .ð":" . +PHP_EOL +; + +361  +$i + = +$off£t +, +$®’ += + `couÁ +( +$¬gs +); $i < $alen; $i++) { + +362 +$buf + .ð"'" . +$¬gs +[ +$i +] . "'" . +PHP_EOL +; + +364 +$buf + .ð +£lf +:: +DISCLAIMER +; + +365  +$buf +; + +366 + } +} + +373 þas  + cCommªdlšeArgum’t + { + +375 +´iv©e + + m$·¹s + = +¬¿y +(); + +376 +´iv©e + + m$ou‹r +; + +378 +public + +funùiÚ + + $__cÚ¡ruù +( +Commªdlše + +$ou‹r +) { + +379 +$this +-> +ou‹r + = +$ou‹r +; + +387 +public + +funùiÚ + + $£tV®ue +( +$v®ue +) { + +388 +$this +-> +·¹s + = + `¬¿y +( +$v®ue +); + +389 + } +} + +396 +public + +funùiÚ + + $£tLše +( +$lše +) { + +397 ià( +$lše + ==ð +nuÎ +) { + +400 +$this +-> +·¹s + = $this-> +ou‹r +-> + `Œª¦©eCommªdlše +( +$lše +); + +401 + } +} + +410 +public + +funùiÚ + + $£tP©h +( +$v®ue +) { + +411 +$this +-> +·¹s + = + `¬¿y +Ð( +¡ršg +è +$v®ue + ); + +412 + } +} + +420 +public + +funùiÚ + + $£tFže +( +PhšgFže + +$v®ue +) { + +421 +$this +-> +·¹s + = + `¬¿y +( +$v®ue +-> + `g‘AbsÞu‹P©h +()); + +422 + } +} + +428 +public + +funùiÚ + + $g‘P¬ts +() { + +429  +$this +-> +·¹s +; + +430 + } +} + +439 þas  + cCommªdlšeM¬k” + { + +441 +´iv©e + + m$pos™iÚ +; + +442 +´iv©e + + m$»®Pos + = -1; + +443 +´iv©e + + m$ou‹r +; + +445 +public + +funùiÚ + + $__cÚ¡ruù +( +Comªdlše + +$ou‹r +, +$pos™iÚ +) { + +446 +$this +-> +ou‹r + = +$ou‹r +; + +447 +$this +-> +pos™iÚ + = +$pos™iÚ +; + +456 +public + +funùiÚ + + $g‘Pos™iÚ +() { + +457 ià( +$this +-> +»®Pos + == -1) { + +458 +$»®Pos + = ( +$this +-> +ou‹r +-> +execubË + ==ð +nuÎ + ? 0 : 1); + +459  +$i + = 0; $˜< +$pos™iÚ +; $i++) { + +460 +$¬g + = +$this +-> +¬gum’ts +[ +$i +]; + +461 +$»®Pos + +ð + `couÁ +( +$¬g +-> + `g‘P¬ts +()); + +464  +$this +-> +»®Pos +; + +465 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/DataType.php + +1 +desütiÚ + = ( +¡ršg +è +$desc +; + +63 +funùiÚ + + $g‘DesütiÚ +() { + +64  +$this +-> +desütiÚ +; + +65 + } +} + +68 +funùiÚ + + $isReã»nû +() { + +69  ( +$this +-> +»f + !=ð +nuÎ +); + +70 + } +} + +82 +funùiÚ + + $£tRefid +( +Reã»nû + +$r +) { + +83 +$this +-> +»f + = +$r +; + +84 +$this +-> +checked + = +çl£ +; + +85 + } +} + +101 +funùiÚ + + $d›OnCœcuÏrReã»nû +(& +$¡k +, +Projeù + +$p +) { + +102 ià( +$this +-> +checked + || !$this-> + `isReã»nû +()) { + +106 +$o + = +$this +-> +»f +-> + `g‘Reã»nûdObjeù +( +$p +); + +108 ià( +$o + +š¡ªûof + +D©aTy³ +) { + +121 ià( + `š_¬¿y +( +$o +, +$¡k +, +Œue +)) { + +123 +throw + +$this +-> + `cœcuÏrReã»nû +(); + +125 + `¬¿y_push +( +$¡k +, +$o +); + +126 +$o +-> + `d›OnCœcuÏrReã»nû +( +$¡k +, +$p +); + +127 + `¬¿y_pÝ +( +$¡k +); + +130 +$this +-> +checked + = +Œue +; + +131 + } +} + +134 +funùiÚ + + $g‘CheckedRef +( +$»quœedCÏss +, +$d©aTy³Name +) { + +136 ià(! +$this +-> +checked +) { + +138 +$¡k + = + `¬¿y +(); + +139 +$¡k +[] = +$this +; + +140 +$this +-> + `d›OnCœcuÏrReã»nû +( +$¡k +, $this-> + `g‘Projeù +()); + +143 +$o + = +$this +-> +»f +-> + `g‘Reã»nûdObjeù +($this-> + `g‘Projeù +()); + +144 ià(!( +$o + +š¡ªûof + +$»quœedCÏss +) ) { + +145 +throw + +Ãw + + `BuždExû±iÚ +( +$this +-> +»f +-> + `g‘RefId +()." dÛ¢'ˆd’ِ¨" . +$d©aTy³Name +); + +147  +$o +; + +149 + } +} + +155 +funùiÚ + + $tooMªyA‰ribu‹s +() { + +156  +Ãw + + `BuždExû±iÚ +( "You must‚ot specify morehan one‡ttribute when using„efid" ); + +157 + } +} + +163 +funùiÚ + + $noChžd»nAÎowed +() { + +164  +Ãw + + `BuždExû±iÚ +("You must‚ot specify‚estedƒlements when using„efid"); + +165 + } +} + +171 +funùiÚ + + $cœcuÏrReã»nû +() { + +172  +Ãw + + `BuždExû±iÚ +("This dataype contains‡ circular„eference."); + +173 + } +} + +180 +funùiÚ + + $·rsšgCom¶‘e +(è{ + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/Description.php + +1 +´ojeù +-> + `g‘DesütiÚ +(); + +46 ià( +$cu¼’tDesütiÚ + ==ð +nuÎ +) { + +47 +$this +-> +´ojeù +-> + `£tDesütiÚ +( +$‹xt +); + +49 +$this +-> +´ojeù +-> + `£tDesütiÚ +( +$cu¼’tDesütiÚ + . +$‹xt +); + +53 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/DirSet.php + +1 + `isReã»nû +()) { + +43  +Ãw + + `DœS‘ +( +$this +-> + `g‘Ref +($this-> + `g‘Projeù +())); + +45  +Ãw + + `DœS‘ +( +$this +); + +47 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/FileList.php + +1 +dœ + = +$fž–i¡ +->dir; + +67 +$this +-> +fž’ames + = +$fž–i¡ +->filenames; + +68 +$this +-> +li¡fže + = +$fž–i¡ +->listfile; + +76 +funùiÚ + + $£tRefid +( +Reã»nû + +$r +) { + +77 ià( +$this +-> +dœ + !=ð +nuÎ + || + `couÁ +($this-> +fž’ames +) !== 0) { + +78 +throw + +$this +-> + `tooMªyA‰ribu‹s +(); + +80 +·»Á +:: + `£tRefid +( +$r +); + +81 + } +} + +87 +funùiÚ + + $£tDœ +( +PhšgFže + +$dœ +) { + +88 ià( +$this +-> + `isReã»nû +()) { + +89 +throw + +$this +-> + `tooMªyA‰ribu‹s +(); + +91 ià(!( +$dœ + +š¡ªûof + +PhšgFže +)) { + +92 +$dœ + = +Ãw + + `PhšgFže +($dir); + +94 +$this +-> +dœ + = +$dœ +; + +95 + } +} + +101 +funùiÚ + + $g‘Dœ +( +Projeù + +$p +) { + +102 ià( +$this +-> + `isReã»nû +()) { + +103 +$»f + = +$this +-> + `g‘Ref +( +$p +); + +104  +$»f +-> + `g‘Dœ +( +$p +); + +106  +$this +-> +dœ +; + +107 + } +} + +113 +funùiÚ + + $£tFžes +( +$fž’ames +) { + +114 ià( +$this +-> + `isReã»nû +()) { + +115 +throw + +$this +-> + `tooMªyA‰ribu‹s +(); + +117 ià(! + `em±y +( +$fž’ames +)) { + +118 +$tok + = + `¡¹ok +( +$fž’ames +, ", \t\n\r"); + +119  +$tok + !=ð +çl£ +) { + +120 +$âame + = + `Œim +( +$tok +); + +121 ià( +$âame + !== "") { + +122 +$this +-> +fž’ames +[] = +$tok +; + +124 +$tok + = + `¡¹ok +(", \t\n\r"); + +127 + } +} + +133 +funùiÚ + + $£tLi¡Fže +( +$fže +) { + +134 ià( +$this +-> + `isReã»nû +()) { + +135 +throw + +$this +-> + `tooMªyA‰ribu‹s +(); + +137 ià(!( +$fže + +š¡ªûof + +PhšgFže +)) { + +138 +$fže + = +Ãw + + `PhšgFže +($file); + +140 +$this +-> +li¡fže + = +$fže +; + +141 + } +} + +148 +funùiÚ + + $g‘Li¡Fže +( +Projeù + +$p +) { + +149 ià( +$this +-> + `isReã»nû +()) { + +150 +$»f + = +$this +-> + `g‘Ref +( +$p +); + +151  +$»f +-> + `g‘Li¡Fže +( +$p +); + +153  +$this +-> +li¡fže +; + +154 + } +} + +161 +funùiÚ + + $g‘Fžes +( +Projeù + +$p +) { + +163 ià( +$this +-> + `isReã»nû +()) { + +164 +$»t + = +$this +-> + `g‘Ref +( +$p +); + +165 +$»t + = $»t-> + `g‘Fžes +( +$p +); + +166  +$»t +; + +169 ià( +$this +-> +li¡fže + !=ð +nuÎ +) { + +170 +$this +-> + `»adLi¡Fže +( +$p +); + +173  +$this +-> +fž’ames +; + +174 + } +} + +182 +funùiÚ + + $g‘Ref +( +Projeù + +$p +) { + +183 ià(! +$this +-> +checked +) { + +184 +$¡k + = + `¬¿y +(); + +185 + `¬¿y_push +( +$¡k +, +$this +); + +186 +$this +-> + `d›OnCœcuÏrReã»nû +( +$¡k +, +$p +); + +189 +$o + = +$this +-> +»f +-> + `g‘Reã»nûdObjeù +( +$p +); + +190 ià(!( +$o + +š¡ªûof + +FžeLi¡ +)) { + +191 +throw + +Ãw + + `BuždExû±iÚ +( +$this +-> +»f +-> + `g‘RefId +()." doesn't denote‡ filelist"); + +193  +$o +; + +195 + } +} + +201 +´iv©e + +funùiÚ + + $»adLi¡Fže +( +Projeù + +$p +) { + +202 +$li¡R—d” + = +nuÎ +; + +203 +Œy + { + +205 +$li¡R—d” + = +Ãw + + `Bufã»dR—d” +Òew + `FžeR—d” +( +$this +-> +li¡fže +)); + +207 +$lše + = +$li¡R—d” +-> + `»adLše +(); + +208  +$lše + !=ð +nuÎ +) { + +209 ià(! + `em±y +( +$lše +)) { + +210 +$lše + = +$p +-> + `»¶aûPrݔt›s +($line); + +211 +$this +-> +fž’ames +[] = + `Œim +( +$lše +); + +213 +$lše + = +$li¡R—d” +-> + `»adLše +(); + +215 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +216 ià( +$li¡R—d” +è$li¡R—d”-> + `þo£ +(); + +217 +throw + +Ãw + + `BuždExû±iÚ +("AÀ”rÜ occu»d whž»adšg from†i¡ fž" . +$this +-> +li¡fže +-> + `__toSŒšg +(è. ": " . +$e +-> + `g‘Mes§ge +()); + +220 +$li¡R—d” +-> + `þo£ +(); + +221 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/FileSet.php + +1 + `isReã»nû +()) { + +50  +Ãw + + `FžeS‘ +( +$this +-> + `g‘Ref +($this-> + `g‘Projeù +())); + +52  +Ãw + + `FžeS‘ +( +$this +); + +54 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/FilterChain.php + +1 +´ojeù + = +$´ojeù +; + +56 +funùiÚ + + $g‘Fž‹rR—d”s +() { + +57  +$this +-> +fž‹rR—d”s +; + +58 + } +} + +60 +funùiÚ + + $addEx·ndPrݔt›s +( +Ex·ndPrݔt›s + +$o +) { + +61 +$o +-> + `£tProjeù +( +$this +-> +´ojeù +); + +62 +$this +-> +fž‹rR—d”s +[] = +$o +; + +63 + } +} + +65 +funùiÚ + + $addG‘‹xt +( +T¿n¦©eG‘‹xt + +$o +) { + +66 +$o +-> + `£tProjeù +( +$this +-> +´ojeù +); + +67 +$this +-> +fž‹rR—d”s +[] = +$o +; + +68 + } +} + +70 +funùiÚ + + $addH—dFž‹r +( +H—dFž‹r + +$o +) { + +71 +$o +-> + `£tProjeù +( +$this +-> +´ojeù +); + +72 +$this +-> +fž‹rR—d”s +[] = +$o +; + +73 + } +} + +75 +funùiÚ + + $addTažFž‹r +( +TažFž‹r + +$o +) { + +76 +$o +-> + `£tProjeù +( +$this +-> +´ojeù +); + +77 +$this +-> +fž‹rR—d”s +[] = +$o +; + +78 + } +} + +80 +funùiÚ + + $addLšeCڏšs +( +LšeCڏšs + +$o +) { + +81 +$o +-> + `£tProjeù +( +$this +-> +´ojeù +); + +82 +$this +-> +fž‹rR—d”s +[] = +$o +; + +83 + } +} + +85 +funùiÚ + + $addLšeCڏšsRegExp +( +LšeCڏšsRegExp + +$o +) { + +86 +$o +-> + `£tProjeù +( +$this +-> +´ojeù +); + +87 +$this +-> +fž‹rR—d”s +[] = +$o +; + +88 + } +} + +90 +funùiÚ + + $addP»fixLšes +( +P»fixLšes + +$o +) { + +91 +$o +-> + `£tProjeù +( +$this +-> +´ojeù +); + +92 +$this +-> +fž‹rR—d”s +[] = +$o +; + +93 + } +} + +95 +funùiÚ + + $addR•ÏûTok’s +( +R•ÏûTok’s + +$o +) { + +96 +$o +-> + `£tProjeù +( +$this +-> +´ojeù +); + +97 +$this +-> +fž‹rR—d”s +[] = +$o +; + +98 + } +} + +100 +funùiÚ + + $addR•ÏûRegexp +( +R•ÏûRegexp + +$o +) { + +101 +$o +-> + `£tProjeù +( +$this +-> +´ojeù +); + +102 +$this +-> +fž‹rR—d”s +[] = +$o +; + +103 + } +} + +105 +funùiÚ + + $addSŒPhpComm’ts +( +SŒPhpComm’ts + +$o +) { + +106 +$o +-> + `£tProjeù +( +$this +-> +´ojeù +); + +107 +$this +-> +fž‹rR—d”s +[] = +$o +; + +108 + } +} + +110 +funùiÚ + + $addSŒLšeB»aks +( +SŒLšeB»aks + +$o +) { + +111 +$o +-> + `£tProjeù +( +$this +-> +´ojeù +); + +112 +$this +-> +fž‹rR—d”s +[] = +$o +; + +113 + } +} + +115 +funùiÚ + + $addSŒLšeComm’ts +( +SŒLšeComm’ts + +$o +) { + +116 +$o +-> + `£tProjeù +( +$this +-> +´ojeù +); + +117 +$this +-> +fž‹rR—d”s +[] = +$o +; + +118 + } +} + +120 +funùiÚ + + $addSŒWh™e¥aû +( +SŒWh™e¥aû + +$o +) { + +121 +$o +-> + `£tProjeù +( +$this +-> +´ojeù +); + +122 +$this +-> +fž‹rR—d”s +[] = +$o +; + +123 + } +} + +125 +funùiÚ + + $addTidyFž‹r +( +TidyFž‹r + +$o +) { + +126 +$o +-> + `£tProjeù +( +$this +-> +´ojeù +); + +127 +$this +-> +fž‹rR—d”s +[] = +$o +; + +128 + } +} + +130 +funùiÚ + + $addTabToS·ûs +( +TabToS·ûs + +$o +) { + +131 +$o +-> + `£tProjeù +( +$this +-> +´ojeù +); + +132 +$this +-> +fž‹rR—d”s +[] = +$o +; + +133 + } +} + +135 +funùiÚ + + $addXšþudeFž‹r +( +XšþudeFž‹r + +$o +) { + +136 +$o +-> + `£tProjeù +( +$this +-> +´ojeù +); + +137 +$this +-> +fž‹rR—d”s +[] = +$o +; + +138 + } +} + +140 +funùiÚ + + $addX¦tFž‹r +( +X¦tFž‹r + +$o +) { + +141 +$o +-> + `£tProjeù +( +$this +-> +´ojeù +); + +142 +$this +-> +fž‹rR—d”s +[] = +$o +; + +143 + } +} + +145 +funùiÚ + + $addFž‹rR—d” +( +PhšgFž‹rR—d” + +$o +) { + +146 +$o +-> + `£tProjeù +( +$this +-> +´ojeù +); + +147 +$this +-> +fž‹rR—d”s +[] = +$o +; + +148 + } +} + +160 +funùiÚ + + $£tRefid +( +Reã»nû + +$r +) { + +162 iàÐ + `couÁ +( +$this +-> +fž‹rR—d”s +) === 0 ) { + +163 +throw + +$this +-> + `tooMªyA‰ribu‹s +(); + +167 +$o + = +$r +-> + `g‘Reã»nûdObjeù +( +$this +-> + `g‘Projeù +()); + +168 iàÐ +$o + +š¡ªûof + +Fž‹rChaš + ) { + +169 +$this +-> +fž‹rR—d”s + = +$o +-> + `g‘Fž‹rR—d”s +(); + +171 +throw + +Ãw + + `BuždExû±iÚ +( +$r +-> + `g‘RefId +()." doesn't„efero‡ FilterChain"); + +173 +·»Á +:: + `£tRefid +( +$r +); + +174 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/Mapper.php + +1 +´ojeù + = +$´ojeù +; + +61 +public + +funùiÚ + + $£tCÏs¥©h +( +P©h + +$þas¥©h +) { + +62 ià( +$this +-> + `isReã»nû +()) { + +63 +throw + +$this +-> + `tooMªyA‰ribu‹s +(); + +65 ià( +$this +-> +þas¥©h + ==ð +nuÎ +) { + +66 +$this +-> +þas¥©h + = +$þas¥©h +; + +68 +$this +-> +þas¥©h +-> + `­³nd +( +$þas¥©h +); + +70 + } +} + +75 +public + +funùiÚ + + $ü—‹CÏs¥©h +() { + +76 ià( +$this +-> + `isReã»nû +()) { + +77 +throw + +$this +-> + `tooMªyA‰ribu‹s +(); + +79 ià( +$this +-> +þas¥©h + ==ð +nuÎ +) { + +80 +$this +-> +þas¥©h + = +Ãw + + `P©h +($this-> +´ojeù +); + +82  +$this +-> +þas¥©h +-> + `ü—‹P©h +(); + +83 + } +} + +88 +public + +funùiÚ + + $£tCÏs¥©hRef +( +Reã»nû + +$r +) { + +89 ià( +$this +-> + `isReã»nû +()) { + +90 +throw + +$this +-> + `tooMªyA‰ribu‹s +(); + +92 +$this +-> +þas¥©hId + = +$r +-> + `g‘RefId +(); + +93 +$this +-> + `ü—‹CÏs¥©h +()-> + `£tRefid +( +$r +); + +94 + } +} + +97 +funùiÚ + + $£tTy³ +( +$ty³ +) { + +98 ià( +$this +-> + `isReã»nû +()) { + +99 +throw + +$this +-> + `tooMªyA‰ribu‹s +(); + +101 +$this +-> +ty³ + = +$ty³ +; + +102 + } +} + +105 +funùiÚ + + $£tCÏs¢ame +( +$þas¢ame +) { + +106 ià( +$this +-> + `isReã»nû +()) { + +107 +throw + +$this +-> + `tooMªyA‰ribu‹s +(); + +109 +$this +-> +þas¢ame + = +$þas¢ame +; + +110 + } +} + +115 +funùiÚ + + $£tFrom +( +$äom +) { + +116 ià( +$this +-> + `isReã»nû +()) { + +117 +throw + +$this +-> + `tooMªyA‰ribu‹s +(); + +119 +$this +-> +äom + = +$äom +; + +120 + } +} + +125 +funùiÚ + + $£tTo +( +$to +) { + +126 ià( +$this +-> + `isReã»nû +()) { + +127 +throw + +$this +-> + `tooMªyA‰ribu‹s +(); + +129 +$this +-> +to + = +$to +; + +130 + } +} + +137 +funùiÚ + + $£tRefid +( +$r +) { + +138 ià( +$this +-> +ty³ + !=ð +nuÎ + || $this-> +äom + !=ðnuÎ || $this-> +to + !==‚ull) { + +139 +throw + +D©aTy³ +:: + `tooMªyA‰ribu‹s +(); + +141 +·»Á +:: + `£tRefid +( +$r +); + +142 + } +} + +145 +funùiÚ + + $g‘Im¶em’tiÚ +() { + +146 ià( +$this +-> + `isReã»nû +()) { + +147 +$tmp + = +$this +-> + `g‘Ref +(); + +148  +$tmp +-> + `g‘Im¶em’tiÚ +(); + +151 ià( +$this +-> +ty³ + ==ð +nuÎ + && $this-> +þas¢ame + ===‚ull) { + +152 +throw + +Ãw + + `BuždExû±iÚ +("eitherype or classname‡ttribute must be set for "); + +155 ià( +$this +-> +ty³ + !=ð +nuÎ +) { + +156  +$this +-> +ty³ +) { + +158 +$this +-> +þas¢ame + = 'phing.mappers.IdentityMapper'; + +161 +$this +-> +þas¢ame + = 'phing.mappers.FlattenMapper'; + +164 +$this +-> +þas¢ame + = 'phing.mappers.GlobMapper'; + +168 +$this +-> +þas¢ame + = 'phing.mappers.RegexpMapper'; + +171 +$this +-> +þas¢ame + = 'phing.mappers.MergeMapper'; + +174 +throw + +Ãw + + `BuždExû±iÚ +("Mapperype {$this->type}‚ot known"); + +180 +$þs + = +Phšg +:: + `impÜt +( +$this +-> +þas¢ame +, $this-> +þas¥©h +); + +182 +$m + = +Ãw + +$þs +; + +183 +$m +-> + `£tFrom +( +$this +-> +äom +); + +184 +$m +-> + `£tTo +( +$this +-> +to +); + +186  +$m +; + +187 + } +} + +190 +´iv©e + +funùiÚ + + $g‘Ref +() { + +191 ià(! +$this +-> +checked +) { + +192 +$¡k + = + `¬¿y +(); + +193 +$¡k +[] = +$this +; + +194 +$this +-> + `d›OnCœcuÏrReã»nû +( +$¡k +, $this-> +´ojeù +); + +197 +$o + = +$this +-> +»f +-> + `g‘Reã»nûdObjeù +($this-> +´ojeù +); + +198 ià(!( +$o + +š¡ªûof + +M­³r +)) { + +199 +$msg + = +$this +-> +»f +-> + `g‘RefId +()." doesn't denote‡ mapper"; + +200 +throw + +Ãw + + `BuždExû±iÚ +( +$msg +); + +202  +$o +; + +204 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/Parameter.php + +1 +Çme + = ( +¡ršg +è +$Çme +; + +51 +funùiÚ + + $£tTy³ +( +$ty³ +) { + +52 +$this +-> +ty³ + = ( +¡ršg +è +$ty³ +; + +53 + } +} + +59 +public + +funùiÚ + + $£tLi¡’šgV®ue +( +Regi¡”SlÙ + +$v®ue +) { + +60 +$this +-> +v®ue + = +$v®ue +; + +61 + } +} + +63 +funùiÚ + + $£tV®ue +( +$v®ue +) { + +64 +$this +-> +v®ue + = ( +¡ršg +è +$v®ue +; + +65 + } +} + +67 +funùiÚ + + $g‘Name +() { + +68  +$this +-> +Çme +; + +69 + } +} + +71 +funùiÚ + + $g‘Ty³ +() { + +72  +$this +-> +ty³ +; + +73 + } +} + +75 +funùiÚ + + $g‘V®ue +() { + +76 ià( +$this +-> +v®ue + +š¡ªûof + +Regi¡”SlÙ +) { + +77  +$this +-> +v®ue +-> + `g‘V®ue +(); + +79  +$this +-> +v®ue +; + +81 + } +} + +86 +funùiÚ + + $ü—‹P¬am +() { + +87 +$num + = + `¬¿y_push +( +$this +-> +·¿m‘”s +, +Ãw + + `P¬am‘” +()); + +88  +$this +-> +·¿m‘”s +[ +$num +-1]; + +89 + } +} + +94 +funùiÚ + + $g‘P¬ams +() { + +95  +$this +-> +·¿m‘”s +; + +96 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/Parameterizable.php + +1 + `£tProjeù +( +$´ojeù +); + +79 ià( +$·th + !=ð +nuÎ +) { + +80 +$this +-> + `ü—‹P©hEËm’t +()-> + `£tP©h +( +$·th +); + +90 +public + +funùiÚ + + $£tDœ +( +PhšgFže + +$loÿtiÚ +) { + +91 ià( +$this +-> + `isReã»nû +()) { + +92 +throw + +$this +-> + `tooMªyA‰ribu‹s +(); + +94 +$this +-> + `ü—‹P©hEËm’t +()-> + `£tDœ +( +$loÿtiÚ +); + +95 + } +} + +102 +public + +funùiÚ + + $£tP©h +( +$·th +) { + +103 ià( +$this +-> + `isReã»nû +()) { + +104 +throw + +$this +-> + `tooMªyA‰ribu‹s +(); + +106 +$this +-> + `ü—‹P©hEËm’t +()-> + `£tP©h +( +$·th +); + +107 + } +} + +116 +public + +funùiÚ + + $£tRefid +( +Reã»nû + +$r +) { + +117 ià(! + `em±y +( +$this +-> +–em’ts +)) { + +118 +throw + +$this +-> + `tooMªyA‰ribu‹s +(); + +120 +$this +-> +–em’ts +[] = +$r +; + +121 +·»Á +:: + `£tRefid +( +$r +); + +122 + } +} + +128 +public + +funùiÚ + + $ü—‹P©hEËm’t +() { + +129 ià( +$this +-> + `isReã»nû +()) { + +130 +throw + +$this +-> + `noChžd»nAÎowed +(); + +132 +$³ + = +Ãw + + `P©hEËm’t +( +$this +); + +133 +$this +-> +–em’ts +[] = +$³ +; + +134  +$³ +; + +135 + } +} + +141 +public + +funùiÚ + + $addFže£t +( +FžeS‘ + +$fs +) { + +142 ià( +$this +-> + `isReã»nû +()) { + +143 +throw + +$this +-> + `noChžd»nAÎowed +(); + +145 +$this +-> +–em’ts +[] = +$fs +; + +146 +$this +-> +checked + = +çl£ +; + +147 + } +} + +153 +public + +funùiÚ + + $addDœ£t +( +DœS‘ + +$d£t +) { + +154 ià( +$this +-> + `isReã»nû +()) { + +155 +throw + +$this +-> + `noChžd»nAÎowed +(); + +157 +$this +-> +–em’ts +[] = +$d£t +; + +158 +$this +-> +checked + = +çl£ +; + +159 + } +} + +165 +public + +funùiÚ + + $ü—‹P©h +() { + +166 ià( +$this +-> + `isReã»nû +()) { + +167 +throw + +$this +-> + `noChžd»nAÎowed +(); + +169 +$p + = +Ãw + + `P©h +( +$this +-> +´ojeù +); + +170 +$this +-> +–em’ts +[] = +$p +; + +171 +$this +-> +checked + = +çl£ +; + +172  +$p +; + +173 + } +} + +178 +public + +funùiÚ + + $­³nd +( +P©h + +$Ùh” +) { + +179 ià( +$Ùh” + ==ð +nuÎ +) { + +182 +$l + = +$Ùh” +-> + `li¡P©hs +(); + +183 + `fܗch +( +$l + +as + +$·th +) { + +184 ià(! + `š_¬¿y +( +$·th +, +$this +-> +–em’ts +, +Œue +)) { + +185 +$this +-> +–em’ts +[] = +$·th +; + +188 + } +} + +196 +public + +funùiÚ + + $addExi¡šg +( +P©h + +$sourû +) { + +197 +$li¡ + = +$sourû +-> + `li¡P©hs +(); + +198 + `fܗch +( +$li¡ + +as + +$– +) { + +199 +$f + = +nuÎ +; + +200 ià( +$this +-> +´ojeù + !=ð +nuÎ +) { + +201 +$f + = +$this +-> +´ojeù +-> + `»sÞveFže +( +$– +); + +203 +$f + = +Ãw + + `PhšgFže +( +$– +); + +206 ià( +$f +-> + `exi¡s +()) { + +207 +$this +-> + `£tDœ +( +$f +); + +209 +$this +-> + `log +("drÝpšg " . +$f +-> + `__toSŒšg +() . " from…ath‡s it doesn'tƒxist", + +210 +Projeù +:: +MSG_VERBOSE +); + +213 + } +} + +219 +public + +funùiÚ + + $li¡P©hs +() { + +220 ià(! +$this +-> +checked +) { + +222 +$¡k + = + `¬¿y +(); + +223 + `¬¿y_push +( +$¡k +, +$this +); + +224 +$this +-> + `d›OnCœcuÏrReã»nû +( +$¡k +, $this-> +´ojeù +); + +227 +$»suÉ + = + `¬¿y +(); + +228  +$i + = 0, +$–Size += + `couÁ +( +$this +-> +–em’ts +); $i < $elSize; $i++) { + +229 +$o + = +$this +-> +–em’ts +[ +$i +]; + +230 ià( +$o + +š¡ªûof + +Reã»nû +) { + +231 +$o + = $o-> + `g‘Reã»nûdObjeù +( +$this +-> +´ojeù +); + +233 ià(!( +$o + +š¡ªûof + +P©h +)) { + +234 +$msg + = +$r +-> + `g‘RefId +() . " doesn't denote‡…ath"; + +235 +throw + +Ãw + + `BuždExû±iÚ +( +$msg +); + +239 ià( + `is_¡ršg +( +$o +)) { + +240 +$»suÉ +[] = +$o +; + +241 } + `–£if + ( +$o + +š¡ªûof + +P©hEËm’t +) { + +242 +$·¹s + = +$o +-> + `g‘P¬ts +(); + +243 ià( +$·¹s + ==ð +nuÎ +) { + +244 +throw + +Ãw + + `BuždExû±iÚ +("You mustƒither set†ocation or" + +247 + `fܗch +( +$·¹s + +as + +$·¹ +) { + +248 +$»suÉ +[] = +$·¹ +; + +250 } + `–£if + ( +$o + +š¡ªûof + +P©h +) { + +251 +$p + = +$o +; + +252 ià( +$p +-> + `g‘Projeù +(è==ð +nuÎ +) { + +253 +$p +-> + `£tProjeù +( +$this +-> + `g‘Projeù +()); + +255 +$·¹s + = +$p +-> + `li¡P©hs +(); + +256 + `fܗch +( +$·¹s + +as + +$·¹ +) { + +257 +$»suÉ +[] = +$·¹ +; + +259 } + `–£if + ( +$o + +š¡ªûof + +DœS‘ +) { + +260 +$d£t + = +$o +; + +261 +$ds + = +$d£t +-> + `g‘DœeùÜySÿ” +( +$this +-> +´ojeù +); + +262 +$dœ¡rs + = +$ds +-> + `g‘InþudedDœeùܛs +(); + +263 +$dœ + = +$d£t +-> + `g‘Dœ +( +$this +-> +´ojeù +); + +264 + `fܗch +( +$dœ¡rs + +as + +$d¡r +) { + +265 +$d + = +Ãw + + `PhšgFže +( +$dœ +, +$d¡r +); + +266 +$»suÉ +[] = +$d +-> + `g‘AbsÞu‹P©h +(); + +268 } + `–£if + ( +$o + +š¡ªûof + +FžeLi¡ +) { + +269 +$æ + = +$o +; + +270 +$dœ¡rs + = +$æ +-> + `g‘Fžes +( +$this +-> +´ojeù +); + +271 +$dœ + = +$æ +-> + `g‘Dœ +( +$this +-> +´ojeù +); + +272 + `fܗch +( +$dœ¡rs + +as + +$d¡r +) { + +273 +$d + = +Ãw + + `PhšgFže +( +$dœ +, +$d¡r +); + +274 +$»suÉ +[] = +$d +-> + `g‘AbsÞu‹P©h +(); + +279  + `¬¿y_unique +( +$»suÉ +); + +280 + } +} + +288 +public + +funùiÚ + + $__toSŒšg +() { + +290 +$li¡ + = +$this +-> + `li¡P©hs +(); + +293 ià( + `em±y +( +$li¡ +)) { + +297  + `im¶ode +( +PATH_SEPARATOR +, +$li¡ +); + +298 + } +} + +305 +public +  +funùiÚ + + $Œª¦©eP©h +( +Projeù + +$´ojeù +, +$sourû +) { + +306 +$»suÉ + = + `¬¿y +(); + +307 ià( +$sourû + =ð +nuÎ +) { + +311 +$tok + = +Ãw + + `P©hTok’iz” +( +$sourû +); + +312  +$tok +-> + `hasMÜeTok’s +()) { + +313 +$·thEËm’t + = +$tok +-> + `ÃxtTok’ +(); + +314 +Œy + { + +315 +$–em’t + = +£lf +:: + `»sÞveFže +( +$´ojeù +, +$·thEËm’t +); + +316  +$i + = 0, +$_i += + `¡¾’ +( +$–em’t +); $i < $_i; $i++) { + +317 +£lf +:: + `Œª¦©eFžeS• +( +$–em’t +, +$i +); + +319 +$»suÉ +[] = +$–em’t +; + +320 } + `ÿtch + ( +BuždExû±iÚ + +$e +) { + +321 +$this +-> +´ojeù +-> + `log +("DrÝpšg…©hƒËm’ˆ" . +$·thEËm’t + + +323 +Projeù +:: +MSG_VERBOSE +); + +327  +$»suÉ +; + +328 + } +} + +334 +public +  +funùiÚ + + $Œª¦©eFže +( +$sourû +) { + +335 ià( +$sourû + =ð +nuÎ +) { + +339 +$»suÉ + = +$sourû +; + +340  +$i + = 0, +$_i += + `¡¾’ +( +$sourû +); $i < $_i; $i++) { + +341 +£lf +:: + `Œª¦©eFžeS• +( +$»suÉ +, +$i +); + +344  +$»suÉ +; + +345 + } +} + +352 +´Ùeùed +  +funùiÚ + + $Œª¦©eFžeS• +(& +$bufãr +, +$pos +) { + +353 ià( +$bufãr +{ +$pos +} == '/' || $buffer{$pos} == '\\') { + +354 +$bufãr +{ +$pos +} = +DIRECTORY_SEPARATOR +; + +355  +Œue +; + +357  +çl£ +; + +358 + } +} + +366 +public + +funùiÚ + + $size +() { + +367  + `couÁ +( +$this +-> + `li¡P©hs +()); + +368 + } +} + +373 +public + +funùiÚ + + $__þÚe +() { + +374 +$p + = +Ãw + + `P©h +( +$this +-> +´ojeù +); + +375 +$p +-> + `­³nd +( +$this +); + +376  +$p +; + +377 + } +} + +384 +public + +funùiÚ + + $d›OnCœcuÏrReã»nû +(& +$¡k +, +Projeù + +$p +) { + +386 ià( +$this +-> +checked +) { + +391 + `fܗch +( +$this +-> +–em’ts + +as + +$o +) { + +393 ià( +$o + +š¡ªûof + +Reã»nû +) { + +394 +$o + = $o-> + `g‘Reã»nûdObjeù +( +$p +); + +397 ià( +$o + +š¡ªûof + +D©aTy³ +) { + +398 ià( + `š_¬¿y +( +$o +, +$¡k +, +Œue +)) { + +399 +throw + +$this +-> + `cœcuÏrReã»nû +(); + +401 + `¬¿y_push +( +$¡k +, +$o +); + +402 +$o +-> + `d›OnCœcuÏrReã»nû +( +$¡k +, +$p +); + +403 + `¬¿y_pÝ +( +$¡k +); + +408 +$this +-> +checked + = +Œue +; + +409 + } +} + +416 +´iv©e +  +funùiÚ + + $»sÞveFže +( +Projeù + +$´ojeù +, +$»ÏtiveName +) { + +417 ià( +$´ojeù + !=ð +nuÎ +) { + +418 +$f + = +$´ojeù +-> + `»sÞveFže +( +$»ÏtiveName +); + +419  +$f +-> + `g‘AbsÞu‹P©h +(); + +421  +$»ÏtiveName +; + +422 + } +} + +430 þas  + cP©hEËm’t + { + +432 +´iv©e + + m$·¹s + = +¬¿y +(); + +433 +´iv©e + + m$ou‹r +; + +435 +public + +funùiÚ + + $__cÚ¡ruù +( +P©h + +$ou‹r +) { + +436 +$this +-> +ou‹r + = +$ou‹r +; + +439 +public + +funùiÚ + + $£tDœ +( +PhšgFže + +$loc +) { + +440 +$this +-> +·¹s + = + `¬¿y +( +P©h +:: + `Œª¦©eFže +( +$loc +-> + `g‘AbsÞu‹P©h +())); + +441 + } +} + +443 +public + +funùiÚ + + $£tP©h +( +$·th +) { + +444 +$this +-> +·¹s + = +P©h +:: + `Œª¦©eP©h +($this-> +ou‹r +-> + `g‘Projeù +(), +$·th +); + +445 + } +} + +447 +public + +funùiÚ + + $g‘P¬ts +() { + +448  +$this +-> +·¹s +; + +449 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/PatternSet.php + +1 +šþudeLi¡ +è|| !em±y($this-> +exþudeLi¡ +)) { + +48 +throw + +$this +-> + `tooMªyA‰ribu‹s +(); + +50 +·»Á +:: + `£tRefid +( +$r +); + +60 +funùiÚ + + $ü—‹Inþude +() { + +61 ià( +$this +-> + `isReã»nû +()) { + +62 +throw + +$this +-> + `noChžd»nAÎowed +(); + +64  +$this +-> + `addP©‹ºToLi¡ +($this-> +šþudeLi¡ +); + +65 + } +} + +74 +funùiÚ + + $ü—‹InþudesFže +() { + +75 ià( +$this +-> + `isReã»nû +()) { + +76 +throw + +$this +-> + `noChžd»nAÎowed +(); + +78  +$this +-> + `addP©‹ºToLi¡ +($this-> +šþudesFžeLi¡ +); + +79 + } +} + +87 +funùiÚ + + $ü—‹Exþude +() { + +88 ià( +$this +-> + `isReã»nû +()) { + +89 +throw + +$this +-> + `noChžd»nAÎowed +(); + +91  +$this +-> + `addP©‹ºToLi¡ +($this-> +exþudeLi¡ +); + +92 + } +} + +100 +funùiÚ + + $ü—‹ExþudesFže +() { + +101 ià( +$this +-> + `isReã»nû +()) { + +102 +throw + +$this +-> + `noChžd»nAÎowed +(); + +105  +$this +-> + `addP©‹ºToLi¡ +($this-> +exþudesFžeLi¡ +); + +106 + } +} + +117 +funùiÚ + + $£tInþudes +( +$šþudes +) { + +118 ià( +$this +-> + `isReã»nû +()) { + +119 +throw + +$this +-> + `tooMªyA‰ribu‹s +(); + +121 ià( +$šþudes + !=ð +nuÎ + && + `¡¾’ +($includes) > 0) { + +122 +$tok + = + `¡¹ok +( +$šþudes +, ", "); + +123  +$tok + !=ð +çl£ +) { + +124 +$o + = +$this +-> + `ü—‹Inþude +(); + +125 +$o +-> + `£tName +( +$tok +); + +126 +$tok + = + `¡¹ok +(", "); + +129 + } +} + +140 +funùiÚ + + $£tExþudes +( +$exþudes +) { + +141 ià( +$this +-> + `isReã»nû +()) { + +142 +throw + +$this +-> + `tooMªyA‰ribu‹s +(); + +144 ià( +$exþudes + !=ð +nuÎ + && + `¡¾’ +($excludes) > 0) { + +145 +$tok + = + `¡¹ok +( +$exþudes +, ", "); + +146  +$tok + !=ð +çl£ +) { + +147 +$o + = +$this +-> + `ü—‹Exþude +(); + +148 +$o +-> + `£tName +( +$tok +); + +149 +$tok + = + `¡¹ok +(", "); + +152 + } +} + +160 +´iv©e + +funùiÚ + + $addP©‹ºToLi¡ +(& +$li¡ +) { + +161 +$num + = + `¬¿y_push +( +$li¡ +, +Ãw + + `P©‹ºS‘NameEÁry +()); + +162  +$li¡ +[ +$num +-1]; + +163 + } +} + +170 +funùiÚ + + $£tInþudesFže +( +$šþudesFže +) { + +171 ià( +$this +-> + `isReã»nû +()) { + +172 +throw + +$this +-> + `tooMªyA‰ribu‹s +(); + +174 ià( +$šþudesFže + +š¡ªûof + +Fže +) { + +175 +$šþudesFže + = $šþudesFže-> + `g‘P©h +(); + +177 +$o + = +$this +-> + `ü—‹InþudesFže +(); + +178 +$o +-> + `£tName +( +$šþudesFže +); + +179 + } +} + +186 +funùiÚ + + $£tExþudesFže +( +$exþudesFže +) { + +187 ià( +$this +-> + `isReã»nû +()) { + +188 +throw + +$this +-> + `tooMªyA‰ribu‹s +(); + +190 ià( +$exþudesFže + +š¡ªûof + +Fže +) { + +191 +$exþudesFže + = $exþudesFže-> + `g‘P©h +(); + +193 +$o + = +$this +-> + `ü—‹ExþudesFže +(); + +194 +$o +-> + `£tName +( +$exþudesFže +); + +195 + } +} + +202 +´iv©e + +funùiÚ + + $»adP©‹ºs +( +PhšgFže + +$·‰”nfže +, & +$·‰”Æi¡ +, +Projeù + +$p +) { + +203 +$·‰”nR—d” + = +nuÎ +; + +204 +Œy + { + +206 +$·‰”nR—d” + = +Ãw + + `Bufã»dR—d” +Òew + `FžeR—d” +( +$·‰”nfže +)); + +210 +$lše + = +$·‰”nR—d” +-> + `»adLše +(); + +211  +$lše + !=ð +nuÎ +) { + +212 ià(! + `em±y +( +$lše +)) { + +213 +$lše + = +$p +-> + `»¶aûPrݔt›s +($line); + +214 +$this +-> + `addP©‹ºToLi¡ +( +$·‰”Æi¡ +)-> + `£tName +( +$lše +); + +216 +$lše + = +$·‰”nR—d” +-> + `»adLše +(); + +219 } + `ÿtch + ( +IOExû±iÚ + +$iÛ +) { + +220 +$msg + = "AÀ”rÜ occu»d whž»adšg from…©‹º fže: " . +$·‰”nfže +-> + `__toSŒšg +(); + +221 if( +$·‰”nR—d” +è$·‰”nR—d”-> + `þo£ +(); + +222 +throw + +Ãw + + `BuždExû±iÚ +( +$msg +, +$iÛ +); + +225 +$·‰”nR—d” +-> + `þo£ +(); + +226 + } +} + +230 +funùiÚ + + $­³nd +( +$Ùh” +, +$p +) { + +231 ià( +$this +-> + `isReã»nû +()) { + +232 +throw + +Ãw + + `BuždExû±iÚ +("Cannot‡ppendo‡„eference"); + +235 +$šþ + = +$Ùh” +-> + `g‘InþudeP©‹ºs +( +$p +); + +236 ià( +$šþ + !=ð +nuÎ +) { + +237 + `fܗch +( +$šþ + +as + +$šþ_Çme +) { + +238 +$o + = +$this +-> + `ü—‹Inþude +(); + +239 +$o +-> + `£tName +( +$šþ_Çme +); + +243 +$exþ + = +$Ùh” +-> + `g‘ExþudeP©‹ºs +( +$p +); + +244 ià( +$exþ + !=ð +nuÎ +) { + +245 + `fܗch +( +$exþ + +as + +$exþ_Çme +) { + +246 +$o + = +$this +-> + `ü—‹Exþude +(); + +247 +$o +-> + `£tName +( +$exþ_Çme +); + +250 + } +} + +253 +funùiÚ + + $g‘InþudeP©‹ºs +( +Projeù + +$p +) { + +254 ià( +$this +-> + `isReã»nû +()) { + +255 +$o + = +$this +-> + `g‘Ref +( +$p +); + +256  +$o +-> + `g‘InþudeP©‹ºs +( +$p +); + +258 +$this +-> + `»adFžes +( +$p +); + +259  +$this +-> + `makeA¼ay +($this-> +šþudeLi¡ +, +$p +); + +261 + } +} + +264 +funùiÚ + + $g‘ExþudeP©‹ºs +( +Projeù + +$p +) { + +265 ià( +$this +-> + `isReã»nû +()) { + +266 +$o + = +$this +-> + `g‘Ref +( +$p +); + +267  +$o +-> + `g‘ExþudeP©‹ºs +( +$p +); + +269 +$this +-> + `»adFžes +( +$p +); + +270  +$this +-> + `makeA¼ay +($this-> +exþudeLi¡ +, +$p +); + +272 + } +} + +275 +funùiÚ + + $hasP©‹ºs +() { + +276  ( +boޗn +è + `couÁ +( +$this +-> +šþudesFžeLi¡ +è> 0 || couÁ($this-> +exþudesFžeLi¡ +) > 0 + +277 || + `couÁ +( +$this +-> +šþudeLi¡ +è> 0 || couÁ($this-> +exþudeLi¡ +) > 0; + +278 + } +} + +284 +funùiÚ + + $g‘Ref +( +Projeù + +$p +) { + +285 ià(! +$this +-> +checked +) { + +286 +$¡k + = + `¬¿y +(); + +287 + `¬¿y_push +( +$¡k +, +$this +); + +288 +$this +-> + `d›OnCœcuÏrReã»nû +( +$¡k +, +$p +); + +290 +$o + = +$this +-> +»f +-> + `g‘Reã»nûdObjeù +( +$p +); + +291 ià(!( +$o + +š¡ªûof + +P©‹ºS‘ +)) { + +292 +$msg + = +$this +-> +»f +-> + `g‘RefId +()." doesn't denote‡…atternset"; + +293 +throw + +Ãw + + `BuždExû±iÚ +( +$msg +); + +295  +$o +; + +297 + } +} + +300 +´iv©e + +funùiÚ + + $makeA¼ay +(& +$li¡ +, +Projeù + +$p +) { + +302 ià( + `couÁ +( +$li¡ +) === 0) { + +303  +nuÎ +; + +306 +$tmpNames + = + `¬¿y +(); + +307 + `fܗch +( +$li¡ + +as + +$à +) { + +308 +$·‰”n + = ( +¡ršg +è +$à +-> + `ev®Name +( +$p +); + +309 ià( +$·‰”n + !=ð +nuÎ + && + `¡¾’ +($pattern) > 0) { + +310 + `¬¿y_push +( +$tmpNames +, +$·‰”n +); + +313  +$tmpNames +; + +314 + } +} + +317 +´iv©e + +funùiÚ + + $»adFžes +( +Projeù + +$p +) { + +318 ià(! + `em±y +( +$this +-> +šþudesFžeLi¡ +)) { + +319 + `fܗch +( +$this +-> +šþudesFžeLi¡ + +as + +$à +) { + +320 +$fžeName + = ( +¡ršg +è +$à +-> + `ev®Name +( +$p +); + +321 ià( +$fžeName + !=ð +nuÎ +) { + +322 +$šþFže + = +$p +-> + `»sÞveFže +( +$fžeName +); + +323 ià(! +$šþFže +-> + `exi¡s +()) { + +324 +throw + +Ãw + + `BuždExû±iÚ +("Inþudesfž". +$šþFže +-> + `g‘AbsÞu‹P©h +()."‚ot found."); + +326 +$this +-> + `»adP©‹ºs +( +$šþFže +, $this-> +šþudeLi¡ +, +$p +); + +329 +$this +-> +šþudesFžeLi¡ + = + `¬¿y +(); + +332 ià(! + `em±y +( +$this +-> +exþudesFžeLi¡ +)) { + +333 + `fܗch +( +$this +-> +exþudesFžeLi¡ + +as + +$à +) { + +334 +$fžeName + = ( +¡ršg +è +$à +-> + `ev®Name +( +$p +); + +335 ià( +$fžeName + !=ð +nuÎ +) { + +336 +$exþFže + = +$p +-> + `»sÞveFže +( +$fžeName +); + +337 ià(! +$exþFže +-> + `exi¡s +()) { + +338 +throw + +Ãw + + `BuždExû±iÚ +("Exþudesfž". +$exþFže +-> + `g‘AbsÞu‹P©h +()."‚ot found."); + +341 +$this +-> + `»adP©‹ºs +( +$exþFže +, $this-> +exþudeLi¡ +, +$p +); + +344 +$this +-> +exþudesFžeLi¡ + = + `¬¿y +(); + +346 + } +} + +349 +funùiÚ + + $toSŒšg +() { + +357 ià( + `em±y +( +$this +-> +šþudeLi¡ +)) { + +358 +$šþudes + = "empty"; + +360 +$šþudes + = ""; + +361 + `fܗch +( +$this +-> +šþudeLi¡ + +as + +$à +) { + +362 +$šþudes + .ð +$à +-> + `toSŒšg +() . ","; + +364 +$šþudes + = + `¹rim +($includes, ","); + +367 ià( + `em±y +( +$this +-> +exþudeLi¡ +)) { + +368 +$exþudes + = "empty"; + +370 +$exþudes + = ""; + +371 + `fܗch +( +$this +-> +exþudeLi¡ + +as + +$à +) { + +372 +$exþudes + .ð +$à +-> + `toSŒšg +() . ","; + +374 +$exþudes + = + `¹rim +($excludes, ","); + +378 + } +} + +385 þas  + cP©‹ºS‘NameEÁry + { + +391 +´iv©e + + m$Çme +; + +397 +´iv©e + + m$ifCÚd +; + +403 +´iv©e + + m$uÆessCÚd +; + +410 +public + +funùiÚ + + $£tP©‹º +( +$·‰”n +) { + +411 +$this +-> + `£tName +( +$·‰”n +); + +418 +public + +funùiÚ + + $£tName +( +$Çme +) { + +419 +$this +-> +Çme + = ( +¡ršg +è +$Çme +; + +420 + } +} + +426 +public + +funùiÚ + + $£tIf +( +$cÚd +) { + +427 +$this +-> +ifCÚd + = ( +¡ršg +è +$cÚd +; + +428 + } +} + +435 +public + +funùiÚ + + $£tUÆess +( +$cÚd +) { + +436 +$this +-> +uÆessCÚd + = ( +¡ršg +è +$cÚd +; + +437 + } +} + +443 +public + +funùiÚ + + $g‘Name +() { + +444  +$this +-> +Çme +; + +445 + } +} + +451 +public + +funùiÚ + + $ev®Name +( +Projeù + +$´ojeù +) { + +452  +$this +-> + `v®id +( +$´ojeù +è? $this-> +Çme + : +nuÎ +; + +453 + } +} + +462 +public + +funùiÚ + + $v®id +( +Projeù + +$´ojeù +) { + +463 ià( +$this +-> +ifCÚd + !=ð +nuÎ + && +$´ojeù +-> + `g‘Prݔty +($this->ifCond) ===‚ull) { + +464  +çl£ +; + +465 } ià( +$this +-> +uÆessCÚd + !=ð +nuÎ + && +$´ojeù +-> + `g‘Prݔty +($this->unlessCond) !==‚ull) { + +466  +çl£ +; + +468  +Œue +; + +469 + } +} + +475 +public + +funùiÚ + + $toSŒšg +() { + +476 +$buf + = +$this +-> +Çme +; + +477 ià(( +$this +-> +ifCÚd + !=ð +nuÎ +è|| ($this-> +uÆessCÚd + !==‚ull)) { + +478 +$buf + .= ":"; + +479 +$cÚÃùÜ + = ""; + +481 ià( +$this +-> +ifCÚd + !=ð +nuÎ +) { + +482 +$buf + .= "if->{$this->ifCond}"; + +483 +$cÚÃùÜ + = ";"; + +485 ià( +$this +-> +uÆessCÚd + !=ð +nuÎ +) { + +486 +$buf + .= "$connector unless->{$this->unlessCond}"; + +489  +$buf +; + +490 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/PhingFilterReader.php + +1 +þassName + = +$þassName +; + +44 +funùiÚ + + $g‘CÏssName +() { + +45  +$this +-> +þassName +; + +46 + } +} + +52 +funùiÚ + + $£tCÏs¥©h +( +P©h + +$þas¥©h +) { + +53 iàÐ +$this +-> + `isReã»nû +() ) { + +54 +throw + +$this +-> + `tooMªyA‰ribu‹s +(); + +56 iàÐ +$this +-> +þassP©h + ==ð +nuÎ + ) { + +57 +$this +-> +þassP©h + = +$þas¥©h +; + +59 +$this +-> +þassP©h +-> + `­³nd +( +$þas¥©h +); + +61 + } +} + +66 +funùiÚ + + $ü—‹CÏs¥©h +() { + +67 iàÐ +$this +-> + `isReã»nû +() ) { + +68 +throw + +$this +-> + `noChžd»nAÎowed +(); + +70 iàÐ +$this +-> +þassP©h + ==ð +nuÎ + ) { + +71 +$this +-> +þassP©h + = +Ãw + + `P©h +($this-> +´ojeù +); + +73  +$this +-> +þassP©h +-> + `ü—‹P©h +(); + +74 + } +} + +76 +funùiÚ + + $g‘CÏs¥©h +() { + +77  +$this +-> +þassP©h +; + +78 + } +} + +80 +funùiÚ + + $£tCÏs¥©hRef +( +Reã»nû + +$r +) { + +81 iàÐ +$this +-> + `isReã»nû +() ) { + +82 +throw + +$this +-> + `tooMªyA‰ribu‹s +(); + +84 +$o + = +$this +-> + `ü—‹CÏs¥©h +(); + +85 +$o +-> + `£tRefid +( +$r +); + +86 + } +} + +88 +funùiÚ + + $addP¬am +( +P¬am‘” + +$·¿m +) { + +89 +$this +-> +·¿m‘”s +[] = +$·¿m +; + +90 + } +} + +92 +funùiÚ + + $ü—‹P¬am +() { + +93 +$num + = + `¬¿y_push +( +$this +-> +·¿m‘”s +, +Ãw + + `P¬am‘” +()); + +94  +$this +-> +·¿m‘”s +[ +$num +-1]; + +95 + } +} + +97 +funùiÚ + + $g‘P¬ams +() { + +99 +$»t + = + `¬¿y +(); + +100  +$i +=0, +$size += + `couÁ +( +$this +-> +·¿m‘”s +); $i < $size; $i++) { + +101 +$»t +[] = +þÚe + +$this +-> +·¿m‘”s +[ +$i +]; + +103  +$»t +; + +104 + } +} + +116 +funùiÚ + + $£tRefid +( +Reã»nû + +$r +) { + +117 iàÐ( + `couÁ +( +$this +-> +·¿m‘”s +è!=ð0è|| ($this-> +þassName + !=ð +nuÎ +) ) { + +118 +throw + +$this +-> + `tooMªyA‰ribu‹s +(); + +120 +$o + = +$r +-> + `g‘Reã»nûdObjeù +( +$this +-> + `g‘Projeù +()); + +121 iàÐ +$o + +š¡ªûof + +PhšgFž‹rR—d” + ) { + +122 +$this +-> + `£tCÏssName +( +$o +-> + `g‘CÏssName +()); + +123 +$this +-> + `£tCÏs¥©h +( +$o +-> + `g‘CÏssP©h +()); + +124 + `fܗch +( +$o +-> + `g‘P¬ams +(è +as + +$p +) { + +125 +$this +-> + `addP¬am +( +$p +); + +128 +$msg + = +$r +-> + `g‘RefId +()." doesn\'t„efero‡ PhingFilterReader"; + +129 +throw + +Ãw + + `BuždExû±iÚ +( +$msg +); + +132 +·»Á +:: + `£tRefid +( +$r +); + +133 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/Reference.php + +1 + `£tRefId +( +$id +); + +35 +funùiÚ + + $£tRefId +( +$id +) { + +36 +$this +-> +»fid + = ( +¡ršg +è +$id +; + +37 + } +} + +39 +funùiÚ + + $g‘RefId +() { + +40  +$this +-> +»fid +; + +41 + } +} + +44 +funùiÚ + + $g‘Reã»nûdObjeù +( +$´ojeù +) { + +45 ià( +$this +-> +»fid + ==ð +nuÎ +) { + +46 +throw + +Ãw + + `BuždExû±iÚ +("No„eference specified"); + +48 +$»fs + = +$´ojeù +-> + `g‘Reã»nûs +(); + +49 +$o + = @ +$»fs +[ +$this +-> +»fid +]; + +50 ià(! + `is_objeù +( +$o +)) { + +51 +throw + +Ãw + + `BuždExû±iÚ +("Reference {$this->refid}‚ot found."); + +53  +$o +; + +54 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/RegularExpression.php + +1 +»gexp + = +Ãw + + `Regexp +(); + +48 +funùiÚ + + $£tP©‹º +( +$·‰”n +) { + +49 +$this +-> +»gexp +-> + `£tP©‹º +( +$·‰”n +); + +50 + } +} + +52 +funùiÚ + + $£tR•Ïû +( +$»¶aû +) { + +53 +$this +-> +»gexp +-> + `£tR•Ïû +( +$»¶aû +); + +54 + } +} + +56 +funùiÚ + + $g‘P©‹º +( +$p +) { + +57 iàÐ +$this +-> + `isReã»nû +() ) { + +58 +$»f + = +$this +-> + `g‘Ref +( +$p +); + +59  +$»f +-> + `g‘P©‹º +( +$p +); + +61  +$this +-> +»gexp +-> + `g‘P©‹º +(); + +62 + } +} + +64 +funùiÚ + + $g‘R•Ïû +( +$p +) { + +65 iàÐ +$this +-> + `isReã»nû +() ) { + +66 +$»f + = +$this +-> + `g‘Ref +( +$p +); + +67  +$»f +-> + `g‘R•Ïû +( +$p +); + +70  +$this +-> +»gexp +-> + `g‘R•Ïû +(); + +71 + } +} + +73 +funùiÚ + + $£tIgnÜeCa£ +( +$b™ +) { + +74 +$this +-> +»gexp +-> + `£tIgnÜeCa£ +( +$b™ +); + +75 + } +} + +77 +funùiÚ + + $g‘IgnÜeCa£ +() { + +78  +$this +-> +»gexp +-> + `g‘IgnÜeCa£ +(); + +79 + } +} + +81 +funùiÚ + + $g‘Regexp +( +Projeù + +$p +) { + +82 iàÐ +$this +-> + `isReã»nû +() ) { + +83 +$»f + = +$this +-> + `g‘Ref +( +$p +); + +84  +$»f +-> + `g‘Regexp +( +$p +); + +86  +$this +-> +»gexp +; + +87 + } +} + +89 +funùiÚ + + $g‘Ref +( +Projeù + +$p +) { + +90 iàÐ! +$this +-> +checked + ) { + +91 +$¡k + = + `¬¿y +(); + +92 + `¬¿y_push +( +$¡k +, +$this +); + +93 +$this +-> + `d›OnCœcuÏrReã»nû +( +$¡k +, +$p +); + +96 +$o + = +$this +-> +»f +-> + `g‘Reã»nûdObjeù +( +$p +); + +97 iàÐ!( +$o + +š¡ªûof + +ReguÏrEx´essiÚ +) ) { + +98 +throw + +Ãw + + `BuždExû±iÚ +( +$this +-> +»f +-> + `g‘RefId +()." doesn't denote‡ RegularExpression"); + +100  +$o +; + +102 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/TokenReader.php + +1 +´ojeù + = +$´ojeù +; + +52 +funùiÚ + + $log +( +$Ëv– +, +$msg +) { + +53 +$this +-> +´ojeù +-> + `log +( +$Ëv– +, +$msg +); + +54 + } +} + +62 +ab¡¿ù + +public + +funùiÚ + +»adTok’ +(); + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/TokenSource.php + +1 +þas¢ame + ==ð +nuÎ +) { + +81 +throw + +Ãw + + `BuždExû±iÚ +("No Classname giveno TokenSource."); + +84 +$þas¢ame + = +Phšg +:: + `impÜt +( +$this +-> +þas¢ame +); + +85 +$this +-> +»ad” + = +Ãw + + `$þas¢ame +($this-> +´ojeù +); + +88 +$this +-> + `cÚfigu»Tok’R—d” +($this-> +»ad” +); + +91 +Œy + { + +92  +$tok’ + = +$this +-> +»ad” +-> + `»adTok’ +()) { + +93 +$this +-> +tok’s +[] = +$tok’ +; + +95 } + `ÿtch + ( +BuždExû±iÚ + +$e +) { + +96 +$this +-> + `log +("E¼Ü„—dšg Tok’Sourû: " . +$e +-> + `g‘Mes§ge +(), +Projeù +:: +MSG_WARN +); + +97 } + `ÿtch + ( +IOExû±iÚ + +$e +) { + +98 +$this +-> + `log +("E¼Ü„—dšg Tok’Sourû: " . +$e +-> + `g‘Mes§ge +(), +Projeù +:: +MSG_WARN +); + +108 +funùiÚ + + $g‘Tok’s +() { + +109 ià( +$this +-> +tok’s + ==ð +nuÎ +) + +110 +$this +-> + `Lßd +(); + +112  +$this +-> +tok’s +; + +113 + } +} + +120 +´iv©e + +funùiÚ + + $cÚfigu»Tok’R—d” +( +Tok’R—d” + +$»ad” +) { + +121 +$couÁ + = + `couÁ +( +$this +-> +·¿m‘”s +); + +122  +$i + = 0; $˜< +$couÁ +; $i++) { + +123 +$m‘hod_Çme + = "S‘" . +$this +-> +·¿m‘”s +[ +$i +]-> + `g‘Name +(); + +124 +$v®ue + = +$this +-> +·¿m‘”s +[ +$i +]-> + `g‘V®ue +(); + +125 +$»ad” +-> + `$m‘hod_Çme +( +$v®ue +); + +127 + } +} + +133 +funùiÚ + + $£tCÏs¢ame +( +$c +) { + +134 +$this +-> +þas¢ame + = +$c +; + +135 + } +} + +141 +funùiÚ + + $g‘CÏs¢ame +() { + +142  +$this +-> +þas¢ame +; + +143 + } +} + +150 +funùiÚ + + $ü—‹P¬am +() { + +151 +$num + = + `¬¿y_push +( +$this +-> +·¿m‘”s +, +Ãw + + `P¬am‘” +()); + +152  +$this +-> +·¿m‘”s +[ +$num +-1]; + +153 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/AndSelector.php + +1 + `hasS–eùÜs +()) { + +37 +$buf + .= "{andselect: "; + +38 +$buf + .ð +·»Á +:: + `toSŒšg +(); + +39 +$buf + .= "}"; + +41  +$buf +; + +54 +public + +funùiÚ + + $isS–eùed +( +PhšgFže + +$ba£dœ +, +$fž’ame +, PhšgFž +$fže +) { + +55 +$this +-> + `v®id©e +(); + +56 +$£ËùÜs + = +$this +-> + `£ËùÜEËm’ts +(); + +57  +$i +=0, +$size += + `couÁ +( +$£ËùÜs +); $i < $size; $i++) { + +58 +$»suÉ + = +$£ËùÜs +[ +$i +]-> + `isS–eùed +( +$ba£dœ +, +$fž’ame +, +$fže +); + +59 ià(! +$»suÉ +) { + +60  +çl£ +; + +63  +Œue +; + +64 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/BaseExtendSelector.php + +1 +·¿m‘”s + = +$·¿m‘”s +; + +58 +´Ùeùed + +funùiÚ + + $g‘P¬am‘”s +() { + +59  +$this +-> +·¿m‘”s +; + +60 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/BaseSelector.php + +1 +”rmsg + ==ð +nuÎ +) { + +45 +$this +-> +”rmsg + = +$msg +; + +54 +public + +funùiÚ + + $g‘E¼Ü +() { + +55  +$this +-> +”rmsg +; + +56 + } +} + +66 +public + +funùiÚ + + $v”ifyS‘tšgs +() { + +67 + } +} + +73 +public + +funùiÚ + + $v®id©e +() { + +74 ià( +$this +-> + `g‘E¼Ü +(è==ð +nuÎ +) { + +75 +$this +-> + `v”ifyS‘tšgs +(); + +77 ià( +$this +-> + `g‘E¼Ü +(è!=ð +nuÎ +) { + +78 +throw + +Ãw + + `BuždExû±iÚ +( +$this +-> +”rmsg +); + +80 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/BaseSelectorContainer.php + +1 +£ËùÜsLi¡ +)); + +46 +public + +funùiÚ + + $£ËùÜCouÁ +() { + +47  + `couÁ +( +$this +-> +£ËùÜsLi¡ +); + +48 + } +} + +53 +public + +funùiÚ + + $g‘S–eùÜs +( +Projeù + +$p +) { + +54 +$»suÉ + = + `¬¿y +(); + +55  +$i +=0, +$size += + `couÁ +( +$this +-> +£ËùÜsLi¡ +); $i < $size; $i++) { + +56 +$»suÉ +[] = +þÚe + +$this +-> +£ËùÜsLi¡ +[ +$i +]; + +58  +$»suÉ +; + +59 + } +} + +64 +public + +funùiÚ + + $£ËùÜEËm’ts +() { + +65  +$this +-> +£ËùÜsLi¡ +; + +66 + } +} + +75 +public + +funùiÚ + + $toSŒšg +() { + +76 +$buf + = ""; + +77 +$¬r + = +$this +-> + `£ËùÜEËm’ts +(); + +78  +$i +=0, +$size += + `couÁ +( +$¬r +); $i < $size; $i++) { + +79 +$buf + .ð +$¬r +[ +$i +]-> + `toSŒšg +(è. ( + `is£t +($arr[$i+1]) ? ', ' : ''); + +81  +$buf +; + +82 + } +} + +90 +public + +funùiÚ + + $­³ndS–eùÜ +( +FžeS–eùÜ + +$£ËùÜ +) { + +91 +$this +-> +£ËùÜsLi¡ +[] = +$£ËùÜ +; + +92 + } +} + +110 +public + +funùiÚ + + $v®id©e +() { + +111 +$this +-> + `v”ifyS‘tšgs +(); + +112 +$”rmsg + = +$this +-> + `g‘E¼Ü +(); + +113 ià( +$”rmsg + !=ð +nuÎ +) { + +114 +throw + +Ãw + + `BuždExû±iÚ +( +$”rmsg +); + +116 + `fܗch +( +$this +-> +£ËùÜsLi¡ + +as + +$o +) { + +117 ià( +$o + +š¡ªûof + +Ba£S–eùÜ +) { + +118 +$o +-> + `v®id©e +(); + +121 + } +} + +128 +public + +funùiÚ + + $ü—‹S–eùÜ +() { + +129 +$o + = +Ãw + + `S–eùS–eùÜ +(); + +130 +$this +-> + `­³ndS–eùÜ +( +$o +); + +131  +$o +; + +132 + } +} + +137 +public + +funùiÚ + + $ü—‹And +() { + +138 +$o + = +Ãw + + `AndS–eùÜ +(); + +139 +$this +-> + `­³ndS–eùÜ +( +$o +); + +140  +$o +; + +141 + } +} + +146 +public + +funùiÚ + + $ü—‹Or +() { + +147 +$o + = +Ãw + + `OrS–eùÜ +(); + +148 +$this +-> + `­³ndS–eùÜ +( +$o +); + +149  +$o +; + +150 + } +} + +155 +public + +funùiÚ + + $ü—‹NÙ +() { + +156 +$o + = +Ãw + + `NÙS–eùÜ +(); + +157 +$this +-> + `­³ndS–eùÜ +( +$o +); + +158  +$o +; + +159 + } +} + +164 +public + +funùiÚ + + $ü—‹NÚe +() { + +165 +$o + = +Ãw + + `NÚeS–eùÜ +(); + +166 +$this +-> + `­³ndS–eùÜ +( +$o +); + +167  +$o +; + +168 + } +} + +173 +public + +funùiÚ + + $ü—‹Majܙy +() { + +174 +$o + = +Ãw + + `MajܙyS–eùÜ +(); + +175 +$this +-> + `­³ndS–eùÜ +( +$o +); + +176  +$o +; + +177 + } +} + +182 +public + +funùiÚ + + $ü—‹D©e +() { + +183 +$o + = +Ãw + + `D©eS–eùÜ +(); + +184 +$this +-> + `­³ndS–eùÜ +( +$o +); + +185  +$o +; + +186 + } +} + +191 +public + +funùiÚ + + $ü—‹Size +() { + +192 +$o + = +Ãw + + `SizeS–eùÜ +(); + +193 +$this +-> + `­³ndS–eùÜ +( +$o +); + +194  +$o +; + +195 + } +} + +200 +public + +funùiÚ + + $ü—‹Fž’ame +() { + +201 +$o + = +Ãw + + `Fž’ameS–eùÜ +(); + +202 +$this +-> + `­³ndS–eùÜ +( +$o +); + +203  +$o +; + +204 + } +} + +209 +public + +funùiÚ + + $ü—‹Cu¡om +() { + +210 +$o + = +Ãw + + `Ex‹ndS–eùÜ +(); + +211 +$this +-> + `­³ndS–eùÜ +( +$o +); + +212  +$o +; + +213 + } +} + +218 +public + +funùiÚ + + $ü—‹Cڏšs +() { + +219 +$o + = +Ãw + + `CڏšsS–eùÜ +(); + +220 +$this +-> + `­³ndS–eùÜ +( +$o +); + +221  +$o +; + +222 + } +} + +227 +public + +funùiÚ + + $ü—‹CڏšsRegexp +() { + +228 +$o + = +Ãw + + `CڏšsRegexpS–eùÜ +(); + +229 +$this +-> + `­³ndS–eùÜ +( +$o +); + +230  +$o +; + +231 + } +} + +236 +public + +funùiÚ + + $ü—‹P»£Á +() { + +237 +$o + = +Ãw + + `P»£ÁS–eùÜ +(); + +238 +$this +-> + `­³ndS–eùÜ +( +$o +); + +239  +$o +; + +240 + } +} + +245 +public + +funùiÚ + + $ü—‹D•th +() { + +246 +$o + = +Ãw + + `D•thS–eùÜ +(); + +247 +$this +-> + `­³ndS–eùÜ +( +$o +); + +248  +$o +; + +249 + } +} + +254 +public + +funùiÚ + + $ü—‹D•’d +() { + +255 +$o + = +Ãw + + `D•’dS–eùÜ +(); + +256 +$this +-> + `­³ndS–eùÜ +( +$o +); + +257  +$o +; + +258 + } +} + +263 +public + +funùiÚ + + $ü—‹Ty³ +() { + +264 +$o + = +Ãw + + `Ty³S–eùÜ +(); + +265 +$this +-> + `­³ndS–eùÜ +( +$o +); + +266  +$o +; + +267 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/ContainsRegexpSelector.php + +1 +u£rProvidedEx´essiÚ +; + +55 +$buf + .= " casesensitive: "; + +56 ià( +$this +-> +ÿ££ns™ive +) { + +57 +$buf + .= "true"; + +59 +$buf + .= "false"; + +61 +$buf + .= "}"; + +62  +$buf +; + +70 +public + +funùiÚ + + $£tEx´essiÚ +( +$exp +) { + +71 +$this +-> +u£rProvidedEx´essiÚ + = +$exp +; + +72 + } +} + +79 +public + +funùiÚ + + $£tCa££ns™ive +( +$ÿ££ns™ive +) { + +80 +$this +-> +ÿ££ns™ive + = +$ÿ££ns™ive +; + +81 + } +} + +89 +public + +funùiÚ + + $£tP¬am‘”s +( +$·¿m‘”s +) { + +90 +·»Á +:: + `£tP¬am‘”s +( +$·¿m‘”s +); + +91 ià( +$·¿m‘”s + !=ð +nuÎ +) { + +92  +$i +=0, +$size += + `couÁ +( +$·¿m‘”s +); $i < $size; $i++) { + +93 +$·¿mÇme + = +$·¿m‘”s +[ +$i +]-> + `g‘Name +(); + +94  + `¡¹Þow” +( +$·¿mÇme +)) { + +95  +£lf +:: +EXPRESSION_KEY +: + +96 +$this +-> + `£tEx´essiÚ +( +$·¿m‘”s +[ +$i +]-> + `g‘V®ue +()); + +98  +£lf +:: +CASE_KEY +: + +99 +$this +-> + `£tCa££ns™ive +( +$·¿m‘”s +[ +$i +]-> + `g‘V®ue +()); + +102 +$this +-> + `£tE¼Ü +("Inv®id…¬am‘” " . +$·¿mÇme +); + +106 + } +} + +113 +public + +funùiÚ + + $v”ifyS‘tšgs +() { + +114 ià( +$this +-> +u£rProvidedEx´essiÚ + ==ð +nuÎ +) { + +115 +$this +-> + `£tE¼Ü +("Theƒxpression‡ttribute is„equired"); + +117 + } +} + +128 +public + +funùiÚ + + $isS–eùed +( +PhšgFže + +$ba£dœ +, +$fž’ame +, PhšgFž +$fže +) { + +130 +$this +-> + `v®id©e +(); + +132 ià( +$fže +-> + `isDœeùÜy +()) { + +133  +Œue +; + +136 ià( +$this +-> +myRegExp + ==ð +nuÎ +) { + +137 +$this +-> +myRegExp + = +Ãw + + `ReguÏrEx´essiÚ +(); + +138 +$this +-> +myRegExp +-> + `£tP©‹º +($this-> +u£rProvidedEx´essiÚ +); + +139 ià(! +$this +-> +ÿ££ns™ive +) { + +140 +$this +-> +myRegExp +-> + `£tIgnÜeCa£ +( +Œue +); + +142 +$this +-> +myEx´essiÚ + = $this-> +myRegExp +-> + `g‘Regexp +($this-> + `g‘Projeù +()); + +145 +$š + = +nuÎ +; + +146 +Œy + { + +147 +$š + = +Ãw + + `Bufã»dR—d” +Òew + `FžeR—d” +( +$fže +)); + +148 +$‹¡¡r + = +$š +-> + `»adLše +(); + +149  +$‹¡¡r + !=ð +nuÎ +) { + +150 ià( +$this +-> +myEx´essiÚ +-> + `m©ches +( +$‹¡¡r +)) { + +151  +Œue +; + +153 +$‹¡¡r + = +$š +-> + `»adLše +(); + +155  +çl£ +; + +156 } + `ÿtch + ( +IOExû±iÚ + +$iÛ +) { + +157 ià( +$š +è$š-> + `þo£ +(); + +158 +throw + +Ãw + + `BuždExû±iÚ +("Could‚Ù„—d fž" . +$fž’ame +); + +160 +$š +-> + `þo£ +(); + +161 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/ContainsSelector.php + +1 +cڏšs +; + +43 +$buf + .= " casesensitive: "; + +44 ià( +$this +-> +ÿ££ns™ive +) { + +45 +$buf + .= "true"; + +47 +$buf + .= "false"; + +49 +$buf + .= "}"; + +50  +$buf +; + +58 +public + +funùiÚ + + $£tText +( +$cڏšs +) { + +59 +$this +-> +cڏšs + = +$cڏšs +; + +60 + } +} + +67 +public + +funùiÚ + + $£tCa££ns™ive +( +$ÿ££ns™ive +) { + +68 +$this +-> +ÿ££ns™ive + = +$ÿ££ns™ive +; + +69 + } +} + +77 +public + +funùiÚ + + $£tP¬am‘”s +( +$·¿m‘”s +) { + +78 +·»Á +:: + `£tP¬am‘”s +( +$·¿m‘”s +); + +79 ià( +$·¿m‘”s + !=ð +nuÎ +) { + +80  +$i +=0, +$size += + `couÁ +( +$·¿m‘”s +); $i < $size; $i++) { + +81 +$·¿mÇme + = +$·¿m‘”s +[ +$i +]-> + `g‘Name +(); + +82  + `¡¹Þow” +( +$·¿mÇme +)) { + +83  +£lf +:: +CONTAINS_KEY +: + +84 +$this +-> + `£tText +( +$·¿m‘”s +[ +$i +]-> + `g‘V®ue +()); + +86  +£lf +:: +CASE_KEY +: + +87 +$this +-> + `£tCa££ns™ive +( +$·¿m‘”s +[ +$i +]-> + `g‘V®ue +()); + +90 +$this +-> + `£tE¼Ü +("Inv®id…¬am‘” " . +$·¿mÇme +); + +94 + } +} + +101 +public + +funùiÚ + + $v”ifyS‘tšgs +() { + +102 ià( +$this +-> +cڏšs + ==ð +nuÎ +) { + +103 +$this +-> + `£tE¼Ü +("Theext‡ttribute is„equired"); + +105 + } +} + +116 +public + +funùiÚ + + $isS–eùed +( +PhšgFže + +$ba£dœ +, +$fž’ame +, PhšgFž +$fže +) { + +118 +$this +-> + `v®id©e +(); + +120 ià( +$fže +-> + `isDœeùÜy +()) { + +121  +Œue +; + +124 +$u£r¡r + = +$this +-> +cڏšs +; + +125 ià(! +$this +-> +ÿ££ns™ive +) { + +126 +$u£r¡r + = + `¡¹Þow” +( +$this +-> +cڏšs +); + +129 +$š + = +nuÎ +; + +130 +Œy + { + +131 +$š + = +Ãw + + `Bufã»dR—d” +Òew + `FžeR—d” +( +$fže +)); + +132 +$‹¡¡r + = +$š +-> + `»adLše +(); + +133  +$‹¡¡r + !=ð +nuÎ +) { + +134 ià(! +$this +-> +ÿ££ns™ive +) { + +135 +$‹¡¡r + = + `¡¹Þow” +($teststr); + +137 ià( + `¡½os +( +$‹¡¡r +, +$u£r¡r +è!=ð +çl£ +) { + +138  +Œue +; + +140 +$‹¡¡r + = +$š +-> + `»adLše +(); + +142  +çl£ +; + +143 } + `ÿtch + ( +IOExû±iÚ + +$iÛ +) { + +144 ià( +$š +è$š-> + `þo£ +(); + +145 +throw + +Ãw + + `BuždExû±iÚ +("Could‚Ù„—d fž" . +$fž’ame +); + +147 +$š +-> + `þo£ +(); + +148 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/DateSelector.php + +1 +d©eTime +; + +58 +$buf + .= " compare: "; + +59 ià( +$this +-> +cmp + === 0) { + +60 +$buf + .= "before"; + +61 } + `–£if + ( +$this +-> +cmp + === 1) { + +62 +$buf + .= "after"; + +64 +$buf + .= "equal"; + +66 +$buf + .= " granularity: "; + +67 +$buf + .ð +$this +-> +g¿nuÏr™y +; + +68 +$buf + .= "}"; + +69  +$buf +; + +70 + } +} + +78 +public + +funùiÚ + + $£tSecÚds +( +$£cÚds +) { + +79 +$this +-> +£cÚds + = (è +$£cÚds +; + +80 + } +} + +85 +public + +funùiÚ + + $g‘SecÚds +() { + +86  +$this +-> +£cÚds +; + +87 + } +} + +95 +public + +funùiÚ + + $£tD©‘ime +( +$d©eTime +) { + +96 +$dt + = + `¡¹Ùime +( +$d©eTime +); + +97 ià( +$dt + == -1) { + +98 +$this +-> + `£tE¼Ü +("D©oà" . +$d©eTime + + +102 +$this +-> +d©eTime + = +$d©eTime +; + +103 +$this +-> + `£tSecÚds +( +$dt +); + +105 + } +} + +112 +public + +funùiÚ + + $£tCheckdœs +( +$šþudeDœs +) { + +113 +$this +-> +šþudeDœs + = ( +boޗn +è +$šþudeDœs +; + +114 + } +} + +121 +public + +funùiÚ + + $£tG¿nuÏr™y +( +$g¿nuÏr™y +) { + +122 +$this +-> +g¿nuÏr™y + = (è +$g¿nuÏr™y +; + +123 + } +} + +131 +public + +funùiÚ + + $£tWh’ +( +$cmp +) { + +132 +$idx + = + `¬¿y_£¬ch +( +$cmp +, +£lf +:: +$timeCom·risÚs +, +Œue +); + +133 ià( +$idx + ==ð +nuÎ +) { + +134 +$this +-> + `£tE¼Ü +("Inv®id v®ufÜ ". +WHEN_KEY +.": ". +$cmp +); + +136 +$this +-> +cmp + = +$idx +; + +138 + } +} + +146 +public + +funùiÚ + + $£tP¬am‘”s +( +$·¿m‘”s +) { + +147 +·»Á +:: + `£tP¬am‘”s +( +$·¿m‘”s +); + +148 ià( +$·¿m‘”s + !=ð +nuÎ +) { + +149  +$i +=0, +$size += + `couÁ +( +$·¿m‘”s +); $i < $size; $i++) { + +150 +$·¿mÇme + = +$·¿m‘”s +[ +$i +]-> + `g‘Name +(); + +151  + `¡¹Þow” +( +$·¿mÇme +)) { + +152  +£lf +:: +MILLIS_KEY +: + +153 +$this +-> + `£tMžlis +( +$·¿m‘”s +[ +$i +]-> + `g‘V®ue +()); + +155  +£lf +:: +DATETIME_KEY +: + +156 +$this +-> + `£tD©‘ime +( +$·¿m‘”s +[ +$i +]-> + `g‘V®ue +()); + +158  +£lf +:: +CHECKDIRS_KEY +: + +159 +$this +-> + `£tCheckdœs +( +$·¿m‘”s +[ +$i +]-> + `g‘V®ue +()); + +161  +£lf +:: +GRANULARITY_KEY +: + +162 +$this +-> + `£tG¿nuÏr™y +( +$·¿m‘”s +[ +$i +]-> + `g‘V®ue +()); + +164  +£lf +:: +WHEN_KEY +: + +165 +$this +-> + `£tWh’ +( +$·¿m‘”s +[ +$i +]-> + `g‘V®ue +()); + +168 +$this +-> + `£tE¼Ü +("Inv®id…¬am‘” " . +$·¿mÇme +); + +172 + } +} + +178 +public + +funùiÚ + + $v”ifyS‘tšgs +() { + +179 ià( +$this +-> +d©eTime + ==ð +nuÎ + && $this-> +£cÚds + < 0) { + +180 +$this +-> + `£tE¼Ü +("You must…rovide‡ datetime orhe‚umber of " + +182 } + `–£if + ( +$this +-> +£cÚds + < 0) { + +183 +$this +-> + `£tE¼Ü +("D©oà" . $this-> +d©eTime + + +187 + } +} + +198 +public + +funùiÚ + + $isS–eùed +( +PhšgFže + +$ba£dœ +, +$fž’ame +, PhšgFž +$fže +) { + +199 +$this +-> + `v®id©e +(); + +200 ià( +$fže +-> + `isDœeùÜy +(è&& ( +$this +-> +šþudeDœs + ==ð +çl£ +)) { + +201  +Œue +; + +203 ià( +$this +-> +cmp + === 0) { + +204  (( +$fže +-> + `Ï¡Modif›d +(è- +$this +-> +g¿nuÏr™y +è< $this-> +£cÚds +); + +205 } + `–£if + ( +$this +-> +cmp + === 1) { + +206  (( +$fže +-> + `Ï¡Modif›d +(è- +$this +-> +g¿nuÏr™y +è> $this-> +£cÚds +); + +208  ( + `abs +( +$fže +-> + `Ï¡Modif›d +(è- +$this +-> +£cÚds +è<ð$this-> +g¿nuÏr™y +); + +210 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/DependSelector.php + +1 +rg‘dœ + ==ð +nuÎ +) { + +53 +$buf + .= "NOT YET SET"; + +55 +$buf + .ð +$this +-> +rg‘dœ +-> + `g‘Name +(); + +57 +$buf + .= " granularity: "; + +58 +$buf + .ð +$this +-> +g¿nuÏr™y +; + +59 ià( +$this +-> +m­ + !=ð +nuÎ +) { + +60 +$buf + .= " mapper: "; + +61 +$buf + .ð +$this +-> +m­ +-> + `toSŒšg +(); + +62 } + `–£if + ( +$this +-> +m­³rEËm’t + !=ð +nuÎ +) { + +63 +$buf + .= " mapper: "; + +64 +$buf + .ð +$this +-> +m­³rEËm’t +-> + `toSŒšg +(); + +66 +$buf + .= "}"; + +67  +$buf +; + +68 + } +} + +76 +public + +funùiÚ + + $£tT¬g‘dœ +( +PhšgFže + +$rg‘dœ +) { + +77 +$this +-> +rg‘dœ + = +$rg‘dœ +; + +78 + } +} + +84 +public + +funùiÚ + + $£tG¿nuÏr™y +( +$g¿nuÏr™y +) { + +85 +$this +-> +g¿nuÏr™y + = () granularity; + +86 + } +} + +92 +public + +funùiÚ + + $ü—‹M­³r +() { + +93 ià( +$this +-> +m­³rEËm’t + !=ð +nuÎ +) { + +94 +throw + +Ãw + + `BuždExû±iÚ +("Cannot define morehan one mapper"); + +96 +$this +-> +m­³rEËm’t + = +Ãw + + `M­³r +($this-> +´ojeù +); + +97  +$this +-> +m­³rEËm’t +; + +98 + } +} + +105 +public + +funùiÚ + + $v”ifyS‘tšgs +() { + +106 ià( +$this +-> +rg‘dœ + ==ð +nuÎ +) { + +107 +$this +-> + `£tE¼Ü +("Theargetdir‡ttribute is„equired."); + +109 ià( +$this +-> +m­³rEËm’t + ==ð +nuÎ +) { + +110 +$this +-> +m­ + = +Ãw + + `Id’t™yM­³r +(); + +112 +$this +-> +m­ + = $this-> +m­³rEËm’t +-> + `g‘Im¶em’tiÚ +(); + +114 ià( +$this +-> +m­ + ==ð +nuÎ +) { + +115 +$this +-> + `£tE¼Ü +("Could‚ot set ƒlement."); + +117 + } +} + +128 +public + +funùiÚ + + $isS–eùed +( +PhšgFže + +$ba£dœ +, +$fž’ame +, PhšgFž +$fže +) { + +130 +$this +-> + `v®id©e +(); + +133 +$de¡fžes + = +$this +-> +m­ +-> + `maš +( +$fž’ame +); + +137 ià( +$de¡fžes + ==ð +nuÎ +) { + +138  +çl£ +; + +141 ià( + `couÁ +( +$de¡fžes +è!=ð1 || $de¡fžes[0] ==ð +nuÎ +) { + +142 +throw + +Ãw + + `BuždExû±iÚ +("Inv®id de¡š©iÚ fž»suÉ fÜ " . +$this +-> +rg‘dœ + . " w™h fž’am" . +$fž’ame +); + +144 +$de¡Çme + = +$de¡fžes +[0]; + +145 +$de¡fže + = +Ãw + + `PhšgFže +( +$this +-> +rg‘dœ +, +$de¡Çme +); + +147  +S–eùÜUtžs +:: + `isOutOfD©e +( +$fže +, +$de¡fže +, +$this +-> +g¿nuÏr™y +); + +148 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/DepthSelector.php + +1 +mš +; + +43 +$buf + .= " max: "; + +44 +$buf + .ð +$this +-> +max +; + +45 +$buf + .= "}"; + +46  +$buf +; + +54 +public + +funùiÚ + + $£tMš +( +$mš +) { + +55 +$this +-> +mš + = (è +$mš +; + +56 + } +} + +63 +public + +funùiÚ + + $£tMax +( +$max +) { + +64 +$this +-> +max + = (è +$max +; + +65 + } +} + +73 +public + +funùiÚ + + $£tP¬am‘”s +( +$·¿m‘”s +) { + +74 +·»Á +:: + `£tP¬am‘”s +( +$·¿m‘”s +); + +75 ià( +$·¿m‘”s + !=ð +nuÎ +) { + +76  +$i + = 0, +$size += + `couÁ +( +$·¿m‘”s +); $i < $size; $i++) { + +77 +$·¿mÇme + = +$·¿m‘”s +[ +$i +]-> + `g‘Name +(); + +78  + `¡¹Þow” +( +$·¿mÇme +)) { + +79  +£lf +:: +MIN_KEY +: + +80 +$this +-> + `£tMš +( +$·¿m‘”s +[ +$i +]-> + `g‘V®ue +()); + +82  +£lf +:: +MAX_KEY +: + +83 +$this +-> + `£tMax +( +$·¿m‘”s +[ +$i +]-> + `g‘V®ue +()); + +87 +$this +-> + `£tE¼Ü +("Inv®ud…¬am‘” " . +$·¿mÇme +); + +91 + } +} + +97 +public + +funùiÚ + + $v”ifyS‘tšgs +() { + +98 ià( +$this +-> +mš + < 0 && $this-> +max + < 0) { + +99 +$this +-> + `£tE¼Ü +("You must set‡t†east one ofhe min orhe " . + +102 ià( +$this +-> +max + < $this-> +mš + && $this->max > -1) { + +103 +$this +-> + `£tE¼Ü +("The maximum depth is†owerhanhe minimum."); + +105 + } +} + +119 +public + +funùiÚ + + $isS–eùed +( +PhšgFže + +$ba£dœ +, +$fž’ame +, PhšgFž +$fže +) { + +121 +$this +-> + `v®id©e +(); + +123 +$d•th + = -1; + +125 +$abs_ba£ + = +$ba£dœ +-> + `g‘AbsÞu‹P©h +(); + +126 +$abs_fže + = +$fže +-> + `g‘AbsÞu‹P©h +(); + +128 +$tok_ba£ + = + `ex¶ode +( +DIRECTORY_SEPARATOR +, +$abs_ba£ +); + +129 +$tok_fže + = + `ex¶ode +( +DIRECTORY_SEPARATOR +, +$abs_fže +); + +131  +$i +=0, +$size += + `couÁ +( +$tok_fže +); $i < $size; $i++) { + +132 +$fž‘ok’ + = +$tok_fže +[ +$i +]; + +133 ià( + `is£t +( +$tok_ba£ +[ +$i +])) { + +134 +$ba£tok’ + = +$tok_ba£ +[ +$i +]; + +136 ià( +$ba£tok’ + !=ð +$fž‘ok’ +) { + +137 +throw + +Ãw + + `BuždExû±iÚ +("Fž" . +$fž’ame + . + +138 " dÛ nهµ—¸w™hš " . +$abs_ba£ + . "directory"); + +141 +$d•th +++; + +142 ià( +$this +-> +max + > -1 && +$d•th + > $this->max) { + +143  +çl£ +; + +147 ià( + `is£t +( +$tok_ba£ +[ +$i + + 1])) { + +148 +throw + +Ãw + + `BuždExû±iÚ +("Fž" . +$fž’ame + . + +149 " i outsidoà" . +$abs_ba£ + . "directoryree"); + +151 ià( +$this +-> +mš + > -1 && +$d•th + < $this->min) { + +152  +çl£ +; + +154  +Œue +; + +155 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/ExtendFileSelector.php + +1 +þas¢ame + = +$þas¢ame +; + +53 +public + +funùiÚ + + $£ËùÜC»©e +() { + +54 ià( +$this +-> +þas¢ame + !=ð +nuÎ + && $this->classname !== "") { + +55 +Œy + { + +57 +$þs + = +Phšg +:: + `impÜt +( +$this +-> +þas¢ame +); + +60 ià( + `þass_exi¡s +( +$þs +)) { + +61 +$this +-> +dyn£ËùÜ + = +Ãw + + `$þs +(); + +63 +$this +-> + `£tE¼Ü +("S–eùÜ " . $this-> +þas¢ame + . "‚ot initialized,‚o such class"); + +65 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +66 +$this +-> + `£tE¼Ü +("S–eùÜ " . $this-> +þas¢ame + . "‚Ù in™Ÿlized, could‚Ù c»©þass: " . +$e +-> + `g‘Mes§ge +()); + +69 +$this +-> + `£tE¼Ü +("There is‚o classname specified"); + +71 + } +} + +78 +public + +funùiÚ + + $addP¬am +( +P¬am‘” + +$p +) { + +79 +$this +-> +·¿m‘”s +[] = +$p +; + +80 + } +} + +87 +public + +funùiÚ + + $v”ifyS‘tšgs +() { + +91 ià( +$this +-> +dyn£ËùÜ + ==ð +nuÎ +) { + +92 +$this +-> + `£ËùÜC»©e +(); + +95 ià( + `em±y +( +$this +-> +þas¢ame +)) { + +96 +$this +-> + `£tE¼Ü +("The classname‡ttribute is„equired"); + +97 } + `–£if + ( +$this +-> +dyn£ËùÜ + ==ð +nuÎ +) { + +98 +$this +-> + `£tE¼Ü +("Internal Error: The custom selector was‚ot created"); + +99 } + `–£if + ( !( +$this +-> +dyn£ËùÜ + +š¡ªûof + +Ex‹ndFžeS–eùÜ +è&& ( + `couÁ +($this-> +·¿m‘”s +) > 0)) { + +100 +$this +-> + `£tE¼Ü +("Cannot set…arameters on custom selectorhat does‚ot " + +103 + } +} + +112 +public + +funùiÚ + + $isS–eùed +( +PhšgFže + +$ba£dœ +, +$fž’ame +, PhšgFž +$fže +) { + +114 +$this +-> + `v®id©e +(); + +116 ià( + `couÁ +( +$this +-> +·¿m‘”s +è> 0 && $this-> +dyn£ËùÜ + +š¡ªûof + +Ex‹ndFžeS–eùÜ +) { + +118 +$this +-> +dyn£ËùÜ +-> + `£tP¬am‘”s +($this-> +·¿m‘”s +); + +120  +$this +-> +dyn£ËùÜ +-> + `isS–eùed +( +$ba£dœ +, +$fž’ame +, +$fže +); + +121 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/FileSelector.php + +1 +·‰”n +; + +45 +$buf + .= "‚egate: "; + +46 ià( +$this +-> +Ãg©ed +) { + +47 +$buf + .= "true"; + +49 +$buf + .= "false"; + +51 +$buf + .= " casesensitive: "; + +52 ià( +$this +-> +ÿ££ns™ive +) { + +53 +$buf + .= "true"; + +55 +$buf + .= "false"; + +57 +$buf + .= "}"; + +58  +$buf +; + +68 +public + +funùiÚ + + $£tName +( +$·‰”n +) { + +69 +$·‰”n + = + `¡r_»¶aû +('\\', +DIRECTORY_SEPARATOR +, $pattern); + +70 +$·‰”n + = + `¡r_»¶aû +('/', +DIRECTORY_SEPARATOR +, $pattern); + +72 ià( +SŒšgH–³r +:: + `’dsW™h +( +DIRECTORY_SEPARATOR +, +$·‰”n +)) { + +73 +$·‰”n + .= "**"; + +75 +$this +-> +·‰”n + = +$·‰”n +; + +76 + } +} + +83 +public + +funùiÚ + + $£tCa££ns™ive +( +$ÿ££ns™ive +) { + +84 +$this +-> +ÿ££ns™ive + = +$ÿ££ns™ive +; + +85 + } +} + +95 +public + +funùiÚ + + $£tNeg©e +( +$Ãg©ed +) { + +96 +$this +-> +Ãg©ed + = +$Ãg©ed +; + +97 + } +} + +105 +public + +funùiÚ + + $£tP¬am‘”s +( +$·¿m‘”s +) { + +106 +·»Á +:: + `£tP¬am‘”s +( +$·¿m‘”s +); + +107 ià( +$·¿m‘”s + !=ð +nuÎ +) { + +108  +$i +=0, +$Ën += + `couÁ +( +$·¿m‘”s +); $i < $len; $i++) { + +109 +$·¿mÇme + = +$·¿m‘”s +[ +$i +]-> + `g‘Name +(); + +110  + `¡¹Þow” +( +$·¿mÇme +)) { + +111  +£lf +:: +NAME_KEY +: + +112 +$this +-> + `£tName +( +$·¿m‘”s +[ +$i +]-> + `g‘V®ue +()); + +114  +£lf +:: +CASE_KEY +: + +115 +$this +-> + `£tCa££ns™ive +( +$·¿m‘”s +[ +$i +]-> + `g‘V®ue +()); + +117  +£lf +:: +NEGATE_KEY +: + +118 +$this +-> + `£tNeg©e +( +$·¿m‘”s +[ +$i +]-> + `g‘V®ue +()); + +121 +$this +-> + `£tE¼Ü +("Inv®id…¬am‘” " . +$·¿mÇme +); + +125 + } +} + +132 +public + +funùiÚ + + $v”ifyS‘tšgs +() { + +133 ià( +$this +-> +·‰”n + ==ð +nuÎ +) { + +134 +$this +-> + `£tE¼Ü +("The‚ame‡ttribute is„equired"); + +136 + } +} + +150 +public + +funùiÚ + + $isS–eùed +( +PhšgFže + +$ba£dœ +, +$fž’ame +, PhšgFž +$fže +) { + +151 +$this +-> + `v®id©e +(); + +152  ( +S–eùÜUtžs +:: + `m©chP©h +( +$this +-> +·‰”n +, +$fž’ame +, $this-> +ÿ££ns™ive +) + +153 ==ð!( +$this +-> +Ãg©ed +)); + +154 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/MajoritySelector.php + +1 + `hasS–eùÜs +()) { + +44 +$buf + .= "{majorityselect: "; + +45 +$buf + .ð +·»Á +:: + `toSŒšg +(); + +46 +$buf + .= "}"; + +48  +$buf +; + +51 +public + +funùiÚ + + $£tAÎowt› +( +$t›b»ak” +) { + +52 +$this +-> +®lowt› + = +$t›b»ak” +; + +53 + } +} + +66 +public + +funùiÚ + + $isS–eùed +( +PhšgFže + +$ba£dœ +, +$fž’ame +, PhšgFž +$fže +) { + +68 +$this +-> + `v®id©e +(); + +70 +$yesvÙes + = 0; + +71 +$novÙes + = 0; + +73 +$£ËùÜs + = +$this +-> + `£ËùÜEËm’ts +(); + +74  +$i +=0, +$size += + `couÁ +( +$£ËùÜs +); $i < $size; $i++) { + +75 +$»suÉ + = +$£ËùÜs +[ +$i +]-> + `isS–eùed +( +$ba£dœ +, +$fž’ame +, +$fže +); + +76 ià( +$»suÉ +) { + +77 +$yesvÙes + = $yesvotes + 1; + +79 +$novÙes + = $novotes + 1; + +82 ià( +$yesvÙes + > +$novÙes +) { + +83  +Œue +; + +85 ià( +$novÙes + > +$yesvÙes +) { + +86  +çl£ +; + +89  +$this +-> +®lowt› +; + +90 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/NoneSelector.php + +1 + `hasS–eùÜs +()) { + +38 +$buf + .= "{noneselect: "; + +39 +$buf + .ð +·»Á +:: + `toSŒšg +(); + +40 +$buf + .= "}"; + +42  +$buf +; + +55 +public + +funùiÚ + + $isS–eùed +( +PhšgFže + +$ba£dœ +, +$fž’ame +, PhšgFž +$fže +) { + +57 +$this +-> + `v®id©e +(); + +59 +$£ËùÜs + = +$this +-> + `£ËùÜEËm’ts +(); + +61  +$i +=0, +$size += + `couÁ +( +$£ËùÜs +); $i < $size; $i++) { + +62 +$»suÉ + = +$£ËùÜs +[ +$i +]-> + `isS–eùed +( +$ba£dœ +, +$fž’ame +, +$fže +); + +63 ià( +$»suÉ +) { + +64  +çl£ +; + +67  +Œue +; + +68 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/NotSelector.php + +1 + `hasS–eùÜs +()) { + +40 +$buf + .= "{notselect: "; + +41 +$buf + .ð +·»Á +:: + `toSŒšg +(); + +42 +$buf + .= "}"; + +44  +$buf +; + +51 +public + +funùiÚ + + $v”ifyS‘tšgs +() { + +52 ià( +$this +-> + `£ËùÜCouÁ +() != 1) { + +53 +$this +-> + `£tE¼Ü +("One‡nd only one selector is‡llowed withinhe " . + +56 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/OrSelector.php + +1 + `hasS–eùÜs +()) { + +37 +$buf + .= "{orselect: "; + +38 +$buf + .ð +·»Á +:: + `toSŒšg +(); + +39 +$buf + .= "}"; + +41  +$buf +; + +54 +public + +funùiÚ + + $isS–eùed +( +PhšgFže + +$ba£dœ +, +$fž’ame +, PhšgFž +$fže +) { + +56 +$this +-> + `v®id©e +(); + +58 +$£ËùÜs + = +$this +-> + `£ËùÜEËm’ts +(); + +62  +$i +=0, +$size += + `couÁ +( +$£ËùÜs +); $i < $size; $i++) { + +63 +$»suÉ + = +$£ËùÜs +[ +$i +]-> + `isS–eùed +( +$ba£dœ +, +$fž’ame +, +$fže +); + +64 ià( +$»suÉ +) { + +65  +Œue +; + +68  +çl£ +; + +69 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/PresentSelector.php + +1 +rg‘dœ + ==ð +nuÎ +) { + +44 +$buf + .= "NOT YET SET"; + +46 +$buf + .ð +$this +-> +rg‘dœ +-> + `g‘Name +(); + +48 +$buf + .= "…resent: "; + +49 ià( +$this +-> +de¡mu¡exi¡ +) { + +50 +$buf + .= "both"; + +52 +$buf + .= "srconly"; + +54 ià( +$this +-> +m­ + !=ð +nuÎ +) { + +55 +$buf + .ð +$this +-> +m­ +-> + `toSŒšg +(); + +56 } + `–£if + ( +$this +-> +m­³rEËm’t + !=ð +nuÎ +) { + +57 +$buf + .ð +$this +-> +m­³rEËm’t +-> + `toSŒšg +(); + +59 +$buf + .= "}"; + +60  +$buf +; + +69 +public + +funùiÚ + + $£tT¬g‘dœ +( +PhšgFže + +$rg‘dœ +) { + +70 +$this +-> +rg‘dœ + = +$rg‘dœ +; + +71 + } +} + +77 +public + +funùiÚ + + $ü—‹M­³r +() { + +78 ià( +$this +-> +m­³rEËm’t + !=ð +nuÎ +) { + +79 +throw + +Ãw + + `BuždExû±iÚ +("Cannot define morehan one mapper"); + +81 +$this +-> +m­³rEËm’t + = +Ãw + + `M­³r +($this-> + `g‘Projeù +()); + +82  +$this +-> +m­³rEËm’t +; + +83 + } +} + +98 +public + +funùiÚ + + $£tP»£Á +( +$å +) { + +99 +$idx + = + `¬¿y_£¬ch +( +$å +, +£lf +:: +$fžeP»£nû +, +Œue +); + +100 iàÐ +$idx + === 0 ) { + +101 +$this +-> +de¡mu¡exi¡ + = +çl£ +; + +103 + } +} + +109 +public + +funùiÚ + + $v”ifyS‘tšgs +() { + +110 ià( +$this +-> +rg‘dœ + ==ð +nuÎ +) { + +111 +$this +-> + `£tE¼Ü +("Theargetdir‡ttribute is„equired."); + +113 ià( +$this +-> +m­³rEËm’t + ==ð +nuÎ +) { + +114 +$this +-> +m­ + = +Ãw + + `Id’t™yM­³r +(); + +116 +$this +-> +m­ + = $this-> +m­³rEËm’t +-> + `g‘Im¶em’tiÚ +(); + +118 ià( +$this +-> +m­ + ==ð +nuÎ +) { + +119 +$this +-> + `£tE¼Ü +("Could‚ot set ƒlement."); + +121 + } +} + +132 +public + +funùiÚ + + $isS–eùed +( +PhšgFže + +$ba£dœ +, +$fž’ame +, PhšgFž +$fže +) { + +134 +$this +-> + `v®id©e +(); + +137 +$de¡fžes + = +$this +-> +m­ +-> + `maš +( +$fž’ame +); + +140 ià( +$de¡fžes + ==ð +nuÎ +) { + +141  +çl£ +; + +144 ià( + `couÁ +( +$de¡fžes +è!=ð1 || $de¡fžes[0] ==ð +nuÎ +) { + +145 +throw + +Ãw + + `BuždExû±iÚ +("Invalid destination file„esults for " + +146 . +$this +-> +rg‘dœ + . " w™h fž’am" . +$fž’ame +); + +148 +$de¡Çme + = +$de¡fžes +[0]; + +149 +$de¡fže + = +Ãw + + `PhšgFže +( +$this +-> +rg‘dœ +, +$de¡Çme +); + +150  +$de¡fže +-> + `exi¡s +(è==ð +$this +-> +de¡mu¡exi¡ +; + +151 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/SelectSelector.php + +1 + `hasS–eùÜs +()) { + +43 +$buf + .= "{select: "; + +44 +$buf + .ð +·»Á +:: + `toSŒšg +(); + +45 +$buf + .= "}"; + +47  +$buf +; + +54 +´iv©e + +funùiÚ + + $g‘Ref +() { + +55 +$o + = +$this +-> + `g‘CheckedRef +( + `g‘_þass +($this), "SelectSelector"); + +56  +$o +; + +57 + } +} + +62 +public + +funùiÚ + + $hasS–eùÜs +() { + +63 ià( +$this +-> + `isReã»nû +()) { + +64  +$this +-> + `g‘Ref +()-> + `hasS–eùÜs +(); + +66  +·»Á +:: + `hasS–eùÜs +(); + +67 + } +} + +72 +public + +funùiÚ + + $£ËùÜCouÁ +() { + +73 ià( +$this +-> + `isReã»nû +()) { + +74  +$this +-> + `g‘Ref +()-> + `£ËùÜCouÁ +(); + +76  +·»Á +:: + `£ËùÜCouÁ +(); + +77 + } +} + +82 +public + +funùiÚ + + $g‘S–eùÜs +( +Projeù + +$p +) { + +83 ià( +$this +-> + `isReã»nû +()) { + +84  +$this +-> + `g‘Ref +()-> + `g‘S–eùÜs +( +$p +); + +86  +·»Á +:: + `g‘S–eùÜs +( +$p +); + +87 + } +} + +92 +public + +funùiÚ + + $£ËùÜEËm’ts +() { + +93 ià( +$this +-> + `isReã»nû +()) { + +94  +$this +-> + `g‘Ref +()-> + `£ËùÜEËm’ts +(); + +96  +·»Á +:: + `£ËùÜEËm’ts +(); + +97 + } +} + +105 +public + +funùiÚ + + $­³ndS–eùÜ +( +FžeS–eùÜ + +$£ËùÜ +) { + +106 ià( +$this +-> + `isReã»nû +()) { + +107 +throw + +$this +-> + `noChžd»nAÎowed +(); + +109 +·»Á +:: + `­³ndS–eùÜ +( +$£ËùÜ +); + +110 + } +} + +116 +public + +funùiÚ + + $v”ifyS‘tšgs +() { + +117 ià( +$this +-> + `£ËùÜCouÁ +() != 1) { + +118 +$this +-> + `£tE¼Ü +("One‡nd only one selector is‡llowed withinhe " + +121 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/SelectorContainer.php + +1 +$¡rIdxEnd +) { + +105  +Œue +; + +106 } + `–£if + ( +$·tIdxS¹ + > +$·tIdxEnd +) { + +108  +çl£ +; + +112  +Œue +; + +114 + } +} + +129 +public +  +funùiÚ + + $m©chP©h +( +$·‰”n +, +$¡r +, +$isCa£S’s™ive + = +Œue +) { + +135 ià( +SŒšgH–³r +:: + `¡¬tsW™h +( +DIRECTORY_SEPARATOR +, +$¡r +) !== + +136 +SŒšgH–³r +:: + `¡¬tsW™h +( +DIRECTORY_SEPARATOR +, +$·‰”n +)) { + +137  +çl£ +; + +140 +$·tDœs + = + `ex¶ode +( +DIRECTORY_SEPARATOR +, +$·‰”n +); + +141 +$¡rDœs + = + `ex¶ode +( +DIRECTORY_SEPARATOR +, +$¡r +); + +143 +$·tIdxS¹ + = 0; + +144 +$·tIdxEnd + = + `couÁ +( +$·tDœs +)-1; + +145 +$¡rIdxS¹ + = 0; + +146 +$¡rIdxEnd + = + `couÁ +( +$¡rDœs +)-1; + +149  +$·tIdxS¹ + <ð +$·tIdxEnd + && +$¡rIdxS¹ + <ð +$¡rIdxEnd +) { + +150 +$·tDœ + = +$·tDœs +[ +$·tIdxS¹ +]; + +151 ià( +$·tDœ + == "**") { + +154 ià(! +£lf +:: + `m©ch +( +$·tDœ +, +$¡rDœs +[ +$¡rIdxS¹ +], +$isCa£S’s™ive +)) { + +155  +çl£ +; + +157 +$·tIdxS¹ +++; + +158 +$¡rIdxS¹ +++; + +160 ià( +$¡rIdxS¹ + > +$¡rIdxEnd +) { + +162  +$i += +$·tIdxS¹ +; $˜<ð +$·tIdxEnd +; $i++) { + +163 ià( +$·tDœs +[ +$i +] != "**") { + +164  +çl£ +; + +167  +Œue +; + +168 } + `–£if + ( +$·tIdxS¹ + > +$·tIdxEnd +) { + +170  +çl£ +; + +174  +$·tIdxS¹ + <ð +$·tIdxEnd + && +$¡rIdxS¹ + <ð +$¡rIdxEnd +) { + +175 +$·tDœ + = +$·tDœs +[ +$·tIdxEnd +]; + +176 ià( +$·tDœ + == "**") { + +179 ià(! +£lf +:: + `m©ch +( +$·tDœ +, +$¡rDœs +[ +$¡rIdxEnd +], +$isCa£S’s™ive +)) { + +180  +çl£ +; + +182 +$·tIdxEnd +--; + +183 +$¡rIdxEnd +--; + +186 ià( +$¡rIdxS¹ + > +$¡rIdxEnd +) { + +188  +$i + = +$·tIdxS¹ +; $˜<ð +$·tIdxEnd +; $i++) { + +189 ià( +$·tDœs +[ +$i +] != "**") { + +190  +çl£ +; + +193  +Œue +; + +196  +$·tIdxS¹ + !ð +$·tIdxEnd + && +$¡rIdxS¹ + <ð +$¡rIdxEnd +) { + +197 +$·tIdxTmp + = -1; + +198  +$i + = +$·tIdxS¹ ++1; $˜<ð +$·tIdxEnd +; $i++) { + +199 ià( +$·tDœs +[ +$i +] == "**") { + +200 +$·tIdxTmp + = +$i +; + +204 ià( +$·tIdxTmp + =ð +$·tIdxS¹ ++1) { + +206 +$·tIdxS¹ +++; + +211 +$·tL’gth + = ( +$·tIdxTmp +- +$·tIdxS¹ +-1); + +212 +$¡rL’gth + = ( +$¡rIdxEnd +- +$¡rIdxS¹ ++1); + +213 +$foundIdx + = -1; + +216  +$i +=0; $˜<ð +$¡rL’gth + - +$·tL’gth +; $i++) { + +217  +$j + = 0; $j < +$·tL’gth +; $j++) { + +218 +$subP© + = +$·tDœs +[ +$·tIdxS¹ ++ +$j ++1]; + +219 +$subSŒ + = +$¡rDœs +[ +$¡rIdxS¹ ++ +$i ++ +$j +]; + +220 ià(! +£lf +:: + `m©ch +( +$subP© +, +$subSŒ +, +$isCa£S’s™ive +)) { + +224 +$foundIdx + = +$¡rIdxS¹ ++ +$i +; + +228 ià( +$foundIdx + == -1) { + +229  +çl£ +; + +232 +$·tIdxS¹ + = +$·tIdxTmp +; + +233 +$¡rIdxS¹ + = +$foundIdx + + +$·tL’gth +; + +236  +$i + = +$·tIdxS¹ +; $˜<ð +$·tIdxEnd +; $i++) { + +237 ià( +$·tDœs +[ +$i +] != "**") { + +238  +çl£ +; + +242  +Œue +; + +243 + } +} + +262 +public +  +funùiÚ + + $m©ch +( +$·‰”n +, +$¡r +, +$isCa£S’s™ive + = +Œue +) { + +264 +$·tA¼ + = +SŒšgH–³r +:: + `toCh¬A¼ay +( +$·‰”n +); + +265 +$¡rA¼ + = +SŒšgH–³r +:: + `toCh¬A¼ay +( +$¡r +); + +266 +$·tIdxS¹ + = 0; + +267 +$·tIdxEnd + = + `couÁ +( +$·tA¼ +)-1; + +268 +$¡rIdxS¹ + = 0; + +269 +$¡rIdxEnd + = + `couÁ +( +$¡rA¼ +)-1; + +271 +$cڏšsSr + = +çl£ +; + +272  +$i + = 0, +$size += + `couÁ +( +$·tA¼ +); $i < $size; $i++) { + +273 ià( +$·tA¼ +[ +$i +] == '*') { + +274 +$cڏšsSr + = +Œue +; + +279 ià(! +$cڏšsSr +) { + +281 ià( +$·tIdxEnd + !ð +$¡rIdxEnd +) { + +282  +çl£ +; + +284  +$i + = 0; $˜<ð +$·tIdxEnd +; $i++) { + +285 +$ch + = +$·tA¼ +[ +$i +]; + +286 ià( +$ch + != '?') { + +287 ià( +$isCa£S’s™ive + && +$ch + !=ð +$¡rA¼ +[ +$i +]) { + +288  +çl£ +; + +290 ià(! +$isCa£S’s™ive + && + `¡¹ouµ” +( +$ch +) !== + +291 + `¡¹ouµ” +( +$¡rA¼ +[ +$i +])) { + +292  +çl£ +; + +296  +Œue +; + +299 ià( +$·tIdxEnd + == 0) { + +300  +Œue +; + +304 ( +$ch + = +$·tA¼ +[ +$·tIdxS¹ +]è!ð'*' && +$¡rIdxS¹ + <ð +$¡rIdxEnd +) { + +305 ià( +$ch + != '?') { + +306 ià( +$isCa£S’s™ive + && +$ch + !=ð +$¡rA¼ +[ +$¡rIdxS¹ +]) { + +307  +çl£ +; + +309 ià(! +$isCa£S’s™ive + && + `¡¹ouµ” +( +$ch +) !== + +310 + `¡¹ouµ” +( +$¡rA¼ +[ +$¡rIdxS¹ +])) { + +311  +çl£ +; + +314 +$·tIdxS¹ +++; + +315 +$¡rIdxS¹ +++; + +318 ià( +$¡rIdxS¹ + > +$¡rIdxEnd +) { + +321  +$i + = +$·tIdxS¹ +; $˜<ð +$·tIdxEnd +; $i++) { + +322 ià( +$·tA¼ +[ +$i +] != '*') { + +323  +çl£ +; + +326  +Œue +; + +330 ( +$ch + = +$·tA¼ +[ +$·tIdxEnd +]è!ð'*' && +$¡rIdxS¹ + <ð +$¡rIdxEnd +) { + +331 ià( +$ch + != '?') { + +332 ià( +$isCa£S’s™ive + && +$ch + !=ð +$¡rA¼ +[ +$¡rIdxEnd +]) { + +333  +çl£ +; + +335 ià(! +$isCa£S’s™ive + && + `¡¹ouµ” +( +$ch +) !== + +336 + `¡¹ouµ” +( +$¡rA¼ +[ +$¡rIdxEnd +])) { + +337  +çl£ +; + +340 +$·tIdxEnd +--; + +341 +$¡rIdxEnd +--; + +343 ià( +$¡rIdxS¹ + > +$¡rIdxEnd +) { + +346  +$i + = +$·tIdxS¹ +; $˜<ð +$·tIdxEnd +; $i++) { + +347 ià( +$·tA¼ +[ +$i +] != '*') { + +348  +çl£ +; + +351  +Œue +; + +356  +$·tIdxS¹ + !=ð +$·tIdxEnd + && +$¡rIdxS¹ + <ð +$¡rIdxEnd +) { + +357 +$·tIdxTmp + = -1; + +358  +$i + = +$·tIdxS¹ ++1; $˜<ð +$·tIdxEnd +; $i++) { + +359 ià( +$·tA¼ +[ +$i +] == '*') { + +360 +$·tIdxTmp + = +$i +; + +364 ià( +$·tIdxTmp + ==ð +$·tIdxS¹ + + 1) { + +366 +$·tIdxS¹ +++; + +371 +$·tL’gth + = ( +$·tIdxTmp + - +$·tIdxS¹ + - 1); + +372 +$¡rL’gth + = ( +$¡rIdxEnd + - +$¡rIdxS¹ + + 1); + +373 +$foundIdx + = -1; + +376  +$i + = 0; $˜<ð +$¡rL’gth + - +$·tL’gth +; $i++) { + +377  +$j + = 0; $j < +$·tL’gth +; $j++) { + +378 +$ch + = +$·tA¼ +[ +$·tIdxS¹ ++ +$j ++1]; + +379 ià( +$ch + != '?') { + +380 ià( +$isCa£S’s™ive + && +$ch + !=ð +$¡rA¼ +[ +$¡rIdxS¹ ++ +$i ++ +$j +]) { + +383 ià(! +$isCa£S’s™ive + && + `¡¹ouµ” +( +$ch +) !== + +384 + `¡¹ouµ” +( +$¡rA¼ +[ +$¡rIdxS¹ ++ +$i ++ +$j +])) { + +390 +$foundIdx + = +$¡rIdxS¹ + + +$i +; + +394 ià( +$foundIdx + == -1) { + +395  +çl£ +; + +398 +$·tIdxS¹ + = +$·tIdxTmp +; + +399 +$¡rIdxS¹ + = +$foundIdx + + +$·tL’gth +; + +404  +$i + = +$·tIdxS¹ +; $˜<ð +$·tIdxEnd +; $i++) { + +405 ià( +$·tA¼ +[ +$i +] != '*') { + +406  +çl£ +; + +409  +Œue +; + +410 + } +} + +426 +public +  +funùiÚ + + $isOutOfD©e +( +PhšgFže + +$¤c +, PhšgFž +$rg‘ +, +$g¿nuÏr™y +) { + +427 ià(! +$¤c +-> + `exi¡s +()) { + +428  +çl£ +; + +430 ià(! +$rg‘ +-> + `exi¡s +()) { + +431  +Œue +; + +433 ià(( +$¤c +-> + `Ï¡Modif›d +(è- +$g¿nuÏr™y +è> +$rg‘ +->lastModified()) { + +434  +Œue +; + +436  +çl£ +; + +437 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/SizeSelector.php + +1 +siz–im™ +; + +55 +$buf + .= "compare: "; + +56 ià( +$this +-> +cmp + === 0) { + +57 +$buf + .= "less"; + +58 } + `–£if + ( +$this +-> +cmp + === 1) { + +59 +$buf + .= "more"; + +61 +$buf + .= "equal"; + +63 +$buf + .= "}"; + +64  +$buf +; + +74 +public + +funùiÚ + + $£tV®ue +( +$size +) { + +75 +$this +-> +size + = +$size +; + +76 ià(( +$this +-> +muɝl›r + !=ð0è&& ($this-> +size + > -1)) { + +77 +$this +-> +siz–im™ + = +$size + * $this-> +muɝl›r +; + +79 + } +} + +107 +public + +funùiÚ + + $£tUn™s +( +$un™s +) { + +108 +$i + = + `¬¿y_£¬ch +( +$un™s +, +£lf +:: +$by‹Un™s +, +Œue +); + +109 ià( +$i + ==ð +çl£ +) $i = -1; + +111 +$this +-> +muɝl›r + = 0; + +112 ià(( +$i + > -1) && ($i < 4)) { + +113 +$this +-> +muɝl›r + = 1000; + +114 } + `–£if + (( +$i + > 3) && ($i < 9)) { + +115 +$this +-> +muɝl›r + = 1024; + +116 } + `–£if + (( +$i + > 8) && ($i < 13)) { + +117 +$this +-> +muɝl›r + = 1000000; + +118 } + `–£if + (( +$i + > 12) && ($i < 18)) { + +119 +$this +-> +muɝl›r + = 1048576; + +120 } + `–£if + (( +$i + > 17) && ($i < 22)) { + +121 +$this +-> +muɝl›r + = 1000000000; + +122 } + `–£if + (( +$i + > 21) && ($i < 27)) { + +123 +$this +-> +muɝl›r + = 1073741824; + +124 } + `–£if + (( +$i + > 26) && ($i < 31)) { + +125 +$this +-> +muɝl›r + = 1000000000000; + +126 } + `–£if + (( +$i + > 30) && ($i < 36)) { + +127 +$this +-> +muɝl›r + = 1099511627776; + +129 ià(( +$this +-> +muɝl›r + > 0è&& ($this-> +size + > -1)) { + +130 +$this +-> +siz–im™ + = $this-> +size + * $this-> +muɝl›r +; + +132 + } +} + +141 +public + +funùiÚ + + $£tWh’ +( +$cmp +) { + +142 +$c + = + `¬¿y_£¬ch +( +$cmp +, +£lf +:: +$sizeCom·risÚs +, +Œue +); + +143 ià( +$c + !=ð +çl£ +) { + +144 +$this +-> +cmp + = +$c +; + +146 + } +} + +154 +public + +funùiÚ + + $£tP¬am‘”s +( +$·¿m‘”s +) { + +155 +·»Á +:: + `£tP¬am‘”s +( +$·¿m‘”s +); + +156 ià( +$·¿m‘”s + !=ð +nuÎ +) { + +157  +$i + = 0, +$size += + `couÁ +( +$·¿m‘”s +); $i < $size; $i++) { + +158 +$·¿mÇme + = +$·¿m‘”s +[ +$i +]-> + `g‘Name +(); + +159  + `¡¹Þow” +( +$·¿mÇme +)) { + +160  +£lf +:: +SIZE_KEY +: + +161 +Œy + { + +162 +$this +-> + `£tV®ue +( +$·¿m‘”s +[ +$i +]-> + `g‘V®ue +()); + +163 } + `ÿtch + ( +Exû±iÚ + +$nã +) { + +164 +$this +-> + `£tE¼Ü +("Invalid size setting " + +165 . +$·¿m‘”s +[ +$i +]-> + `g‘V®ue +()); + +168  +£lf +:: +UNITS_KEY +: + +169 +$this +-> + `£tUn™s +( +$·¿m‘”s +[ +$i +]-> + `g‘V®ue +()); + +171  +£lf +:: +WHEN_KEY +: + +172 +$this +-> + `£tWh’ +( +$·¿m‘”s +[ +$i +]-> + `g‘V®ue +()); + +175 +$this +-> + `£tE¼Ü +("Inv®id…¬am‘” " . +$·¿mÇme +); + +179 + } +} + +191 +public + +funùiÚ + + $v”ifyS‘tšgs +() { + +192 ià( +$this +-> +size + < 0) { + +193 +$this +-> + `£tE¼Ü +("The value‡ttribute is„equired,‡nd must be…ositive"); + +194 } + `–£if + ( +$this +-> +muɝl›r + < 1) { + +195 +$this +-> + `£tE¼Ü +("Invalid Units supplied, must be K,Ki,M,Mi,G,Gi,T,or Ti"); + +196 } + `–£if + ( +$this +-> +siz–im™ + < 0) { + +197 +$this +-> + `£tE¼Ü +("Internalƒrror: Code is‚ot setting sizelimit correctly"); + +199 + } +} + +210 +public + +funùiÚ + + $isS–eùed +( +PhšgFže + +$ba£dœ +, +$fž’ame +, PhšgFž +$fže +) { + +212 +$this +-> + `v®id©e +(); + +215 ià( +$fže +-> + `isDœeùÜy +()) { + +216  +Œue +; + +218 ià( +$this +-> +cmp + === 0) { + +219  ( +$fže +-> + `Ëngth +(è< +$this +-> +siz–im™ +); + +220 } + `–£if + ( +$this +-> +cmp + === 1) { + +221  ( +$fže +-> + `Ëngth +(è> +$this +-> +siz–im™ +); + +223  ( +$fže +-> + `Ëngth +(è==ð +$this +-> +siz–im™ +); + +225 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/TypeSelector.php + +1 +ty³ + . "}"; + +48  +$buf +; + +55 +public + +funùiÚ + + $£tTy³ +( +$ty³ +) { + +56 +$this +-> +ty³ + = +$ty³ +; + +57 + } +} + +65 +public + +funùiÚ + + $£tP¬am‘”s +( +$·¿m‘”s +) { + +66 +·»Á +:: + `£tP¬am‘”s +( +$·¿m‘”s +); + +67 ià( +$·¿m‘”s + !=ð +nuÎ +) { + +68  +$i + = 0, +$size += + `couÁ +( +$·¿m‘”s +); $i < $size; $i++) { + +69 +$·¿mÇme + = +$·¿m‘”s +[ +$i +]-> + `g‘Name +(); + +70 ià( +£lf +:: +TYPE_KEY + =ð + `¡¹Þow” +( +$·¿mÇme +)) { + +71 +$this +-> + `£tTy³ +( +$·¿m‘”s +[ +$i +]-> + `g‘V®ue +()); + +73 +$this +-> + `£tE¼Ü +("Inv®id…¬am‘” " . +$·¿mÇme +); + +77 + } +} + +84 +public + +funùiÚ + + $v”ifyS‘tšgs +() { + +85 ià( +$this +-> +ty³ + ==ð +nuÎ +) { + +86 +$this +-> + `£tE¼Ü +("Theype‡ttribute is„equired"); + +87 } + `–£if + (! + `š_¬¿y +( +$this +-> +ty³ +, +£lf +:: +$ty³s +, +Œue +)) { + +88 +$this +-> + `£tE¼Ü +("Inv®idy³ s³cif›d; mu¡ bÚoà(" . + `im¶ode +( +£lf +:: +$ty³s +) . ")"); + +90 + } +} + +101 +public + +funùiÚ + + $isS–eùed +( +PhšgFže + +$ba£dœ +, +$fž’ame +, PhšgFž +$fže +) { + +104 +$this +-> + `v®id©e +(); + +106 ià( +$fže +-> + `isDœeùÜy +()) { + +107  +$this +-> +ty³ + === 'dir'; + +109  +$this +-> +ty³ + === 'file'; + +111 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/DirectoryScanner.php + +1 +ba£dœ + = +$_ba£dœ +; + +251 + } +} + +259 +funùiÚ + + $g‘Ba£dœ +() { + +260  +$this +-> +ba£dœ +; + +261 + } +} + +268 +funùiÚ + + $£tCa£S’s™ive +( +$_isCa£S’s™ive +) { + +269 +$this +-> +isCa£S’s™ive + = ( +$_isCa£S’s™ive +è? +Œue + : +çl£ +; + +270 + } +} + +281 +funùiÚ + +£tInþudes +( +$_šþudes + = + $¬¿y +()) { + +282 ià( + `em±y +( +$_šþudes +è|| + `is_nuÎ +($_includes)) { + +283 +$this +-> +šþudes + = +nuÎ +; + +285  +$i + = 0; $˜< + `couÁ +( +$_šþudes +); $i++) { + +286 +$·‰”n + = +nuÎ +; + +287 +$·‰”n + = + `¡r_»¶aû +('\\', +DIRECTORY_SEPARATOR +, +$_šþudes +[ +$i +]); + +288 +$·‰”n + = + `¡r_»¶aû +('/', +DIRECTORY_SEPARATOR +, $pattern); + +289 ià( +SŒšgH–³r +:: + `’dsW™h +( +DIRECTORY_SEPARATOR +, +$·‰”n +)) { + +290 +$·‰”n + .= "**"; + +292 +$this +-> +šþudes +[] = +$·‰”n +; + +295 + } +} + +307 +funùiÚ + +£tExþudes +( +$_exþudes + = + $¬¿y +()) { + +308 ià( + `em±y +( +$_exþudes +è|| + `is_nuÎ +($_excludes)) { + +309 +$this +-> +exþudes + = +nuÎ +; + +311  +$i + = 0; $˜< + `couÁ +( +$_exþudes +); $i++) { + +312 +$·‰”n + = +nuÎ +; + +313 +$·‰”n + = + `¡r_»¶aû +('\\', +DIRECTORY_SEPARATOR +, +$_exþudes +[ +$i +]); + +314 +$·‰”n + = + `¡r_»¶aû +('/', +DIRECTORY_SEPARATOR +, $pattern); + +315 ià( +SŒšgH–³r +:: + `’dsW™h +( +DIRECTORY_SEPARATOR +, +$·‰”n +)) { + +316 +$·‰”n + .= "**"; + +318 +$this +-> +exþudes +[] = +$·‰”n +; + +321 + } +} + +328 +funùiÚ + + $sÿn +() { + +330 ià(( + `em±y +( +$this +-> +ba£dœ +)è|| (!@ + `is_dœ +($this->basedir))) { + +331  +çl£ +; + +334 ià( +$this +-> +šþudes + ==ð +nuÎ +) { + +336 +$this +-> +šþudes + = + `¬¿y +("**"); + +338 ià( + `is_nuÎ +( +$this +-> +exþudes +)) { + +339 +$this +-> +exþudes + = + `¬¿y +(); + +342 +$this +-> +fžesInþuded + = + `¬¿y +(); + +343 +$this +-> +fžesNÙInþuded + = + `¬¿y +(); + +344 +$this +-> +fžesExþuded + = + `¬¿y +(); + +345 +$this +-> +dœsInþuded + = + `¬¿y +(); + +346 +$this +-> +dœsNÙInþuded + = + `¬¿y +(); + +347 +$this +-> +dœsExþuded + = + `¬¿y +(); + +348 +$this +-> +dœsDe£Ëùed + = + `¬¿y +(); + +349 +$this +-> +fžesDe£Ëùed + = + `¬¿y +(); + +351 ià( +$this +-> + `isInþuded +("")) { + +352 ià(! +$this +-> + `isExþuded +("")) { + +353 ià( +$this +-> + `isS–eùed +("", $this-> +ba£dœ +)) { + +354 +$this +-> +dœsInþuded +[] = ""; + +356 +$this +-> +dœsDe£Ëùed +[] = ""; + +359 +$this +-> +dœsExþuded +[] = ""; + +362 +$this +-> +dœsNÙInþuded +[] = ""; + +365 +$this +-> + `sÿndœ +($this-> +ba£dœ +, "", +Œue +); + +366  +Œue +; + +367 + } +} + +374 +´Ùeùed + +funùiÚ + + $¦owSÿn +() { + +376 ià( +$this +-> +haveSlowResuÉs +) { + +381 +$exþ + = +$this +-> +dœsExþuded +; + +382 +$nÙInþ + = +$this +-> +dœsNÙInþuded +; + +384  +$i +=0, +$_i += + `couÁ +( +$exþ +); $i < $_i; $i++) { + +385 ià(! +$this +-> + `couldHÞdInþuded +( +$exþ +[ +$i +])) { + +386 +$this +-> + `sÿndœ +($this-> +ba£dœ +. +$exþ +[ +$i +], $exþ[$i]. +DIRECTORY_SEPARATOR +, +çl£ +); + +390  +$i +=0, +$_i += + `couÁ +( +$nÙInþ +); $i < $_i; $i++) { + +391 ià(! +$this +-> + `couldHÞdInþuded +( +$nÙInþ +[ +$i +])) { + +392 +$this +-> + `sÿndœ +($this-> +ba£dœ +. +$nÙInþ +[ +$i +], $nÙInþ[$i]. +DIRECTORY_SEPARATOR +, +çl£ +); + +396 +$this +-> +haveSlowResuÉs + = +Œue +; + +397 + } +} + +409 +funùiÚ + + $li¡Dœ +( +$_dœ +) { + +410 +$d + = + `dœ +( +$_dœ +); + +411 +$li¡ + = + `¬¿y +(); + +412  +$’Œy + = +$d +-> + `»ad +()) { + +413 ià( +$’Œy + != "." && $entry != "..") { + +414 +$li¡ +[] = +$’Œy +; + +417 +$d +-> + `þo£ +(); + +418  +$li¡ +; + +419 + } +} + +439 +´iv©e + +funùiÚ + + $sÿndœ +( +$_roÙdœ +, +$_v·th +, +$_ç¡ +) { + +441 ià(! + `is_»adabË +( +$_roÙdœ +)) { + +445 +$Ãwfžes + = +£lf +:: + `li¡Dœ +( +$_roÙdœ +); + +447  +$i +=0, +$_i += + `couÁ +( +$Ãwfžes +); $i < $_i; $i++) { + +449 +$fže + = +$_roÙdœ + . +DIRECTORY_SEPARATOR + . +$Ãwfžes +[ +$i +]; + +450 +$Çme + = +$_v·th + . +$Ãwfžes +[ +$i +]; + +452 ià(@ + `is_dœ +( +$fže +)) { + +453 ià( +$this +-> + `isInþuded +( +$Çme +)) { + +454 ià(! +$this +-> + `isExþuded +( +$Çme +)) { + +455 ià( +$this +-> + `isS–eùed +( +$Çme +, +$fže +)) { + +456 +$this +-> +dœsInþuded +[] = +$Çme +; + +457 ià( +$_ç¡ +) { + +458 +$this +-> + `sÿndœ +( +$fže +, +$Çme +. +DIRECTORY_SEPARATOR +, +$_ç¡ +); + +461 +$this +-> +ev”ythšgInþuded + = +çl£ +; + +462 +$this +-> +dœsDe£Ëùed +[] = +$Çme +; + +463 ià( +$_ç¡ + && +$this +-> + `couldHÞdInþuded +( +$Çme +)) { + +464 +$this +-> + `sÿndœ +( +$fže +, +$Çme +. +DIRECTORY_SEPARATOR +, +$_ç¡ +); + +468 +$this +-> +ev”ythšgInþuded + = +çl£ +; + +469 +$this +-> +dœsExþuded +[] = +$Çme +; + +470 ià( +$_ç¡ + && +$this +-> + `couldHÞdInþuded +( +$Çme +)) { + +471 +$this +-> + `sÿndœ +( +$fže +, +$Çme +. +DIRECTORY_SEPARATOR +, +$_ç¡ +); + +475 +$this +-> +ev”ythšgInþuded + = +çl£ +; + +476 +$this +-> +dœsNÙInþuded +[] = +$Çme +; + +477 ià( +$_ç¡ + && +$this +-> + `couldHÞdInþuded +( +$Çme +)) { + +478 +$this +-> + `sÿndœ +( +$fže +, +$Çme +. +DIRECTORY_SEPARATOR +, +$_ç¡ +); + +482 ià(! +$_ç¡ +) { + +483 +$this +-> + `sÿndœ +( +$fže +, +$Çme +. +DIRECTORY_SEPARATOR +, +$_ç¡ +); + +486 } + `–£if + (@ + `is_fže +( +$fže +)) { + +487 ià( +$this +-> + `isInþuded +( +$Çme +)) { + +488 ià(! +$this +-> + `isExþuded +( +$Çme +)) { + +489 ià( +$this +-> + `isS–eùed +( +$Çme +, +$fže +)) { + +490 +$this +-> +fžesInþuded +[] = +$Çme +; + +492 +$this +-> +ev”ythšgInþuded + = +çl£ +; + +493 +$this +-> +fžesDe£Ëùed +[] = +$Çme +; + +496 +$this +-> +ev”ythšgInþuded + = +çl£ +; + +497 +$this +-> +fžesExþuded +[] = +$Çme +; + +500 +$this +-> +ev”ythšgInþuded + = +çl£ +; + +501 +$this +-> +fžesNÙInþuded +[] = +$Çme +; + +505 + } +} + +514 +´Ùeùed + +funùiÚ + + $isInþuded +( +$_Çme +) { + +515  +$i +=0, +$_i += + `couÁ +( +$this +-> +šþudes +); $i < $_i; $i++) { + +516 ià( +DœeùÜySÿ” +:: + `m©chP©h +( +$this +-> +šþudes +[ +$i +], +$_Çme +, $this-> +isCa£S’s™ive +)) { + +517  +Œue +; + +520  +çl£ +; + +521 + } +} + +530 +´Ùeùed + +funùiÚ + + $couldHÞdInþuded +( +$_Çme +) { + +531  +$i + = 0; $˜< + `couÁ +( +$this +-> +šþudes +); $i++) { + +532 ià( +DœeùÜySÿ” +:: + `m©chP©‹ºS¹ +( +$this +-> +šþudes +[ +$i +], +$_Çme +, $this-> +isCa£S’s™ive +)) { + +533  +Œue +; + +536  +çl£ +; + +537 + } +} + +546 +´Ùeùed + +funùiÚ + + $isExþuded +( +$_Çme +) { + +547  +$i + = 0; $˜< + `couÁ +( +$this +-> +exþudes +); $i++) { + +548 ià( +DœeùÜySÿ” +:: + `m©chP©h +( +$this +-> +exþudes +[ +$i +], +$_Çme +, $this-> +isCa£S’s™ive +)) { + +549  +Œue +; + +552  +çl£ +; + +553 + } +} + +562 +funùiÚ + + $g‘InþudedFžes +() { + +563  +$this +-> +fžesInþuded +; + +564 + } +} + +572 +funùiÚ + + $g‘NÙInþudedFžes +() { + +573 +$this +-> + `¦owSÿn +(); + +574  +$this +-> +fžesNÙInþuded +; + +575 + } +} + +585 +funùiÚ + + $g‘ExþudedFžes +() { + +586 +$this +-> + `¦owSÿn +(); + +587  +$this +-> +fžesExþuded +; + +588 + } +} + +601 +public + +funùiÚ + + $g‘De£ËùedFžes +() { + +602 +$this +-> + `¦owSÿn +(); + +603  +$this +-> +fžesDe£Ëùed +; + +604 + } +} + +614 +funùiÚ + + $g‘InþudedDœeùܛs +() { + +615  +$this +-> +dœsInþuded +; + +616 + } +} + +625 +funùiÚ + + $g‘NÙInþudedDœeùܛs +() { + +626 +$this +-> + `¦owSÿn +(); + +627  +$this +-> +dœsNÙInþuded +; + +628 + } +} + +641 +public + +funùiÚ + + $g‘De£ËùedDœeùܛs +() { + +642 +$this +-> + `¦owSÿn +(); + +643  +$this +-> +dœsDe£Ëùed +; + +644 + } +} + +653 +funùiÚ + + $g‘ExþudedDœeùܛs +() { + +654 +$this +-> + `¦owSÿn +(); + +655  +$this +-> +dœsExþuded +; + +656 + } +} + +662 +funùiÚ + + $addDeçuÉExþudes +() { + +664 + `fܗch +( +$this +-> +DEFAULTEXCLUDES + +as + +$·‰”n +) { + +665 +$·‰”n + = + `¡r_»¶aû +('\\', +DIRECTORY_SEPARATOR +, $pattern); + +666 +$·‰”n + = + `¡r_»¶aû +('/', +DIRECTORY_SEPARATOR +, $pattern); + +667 +$this +-> +exþudes +[] = +$·‰”n +; + +669 + } +} + +676 +public + +funùiÚ + + $£tS–eùÜs +( +$£ËùÜs +) { + +677 +$this +-> +£ËùÜs + = +$£ËùÜs +; + +678 + } +} + +687 +public + +funùiÚ + + $isEv”ythšgInþuded +() { + +688  +$this +-> +ev”ythšgInþuded +; + +689 + } +} + +699 +´Ùeùed + +funùiÚ + + $isS–eùed +( +$Çme +, +$fže +) { + +700 ià( +$this +-> +£ËùÜs + !=ð +nuÎ +) { + +701 +$ba£dœ + = +Ãw + + `PhšgFže +( +$this +-> +ba£dœ +); + +702 +$fže + = +Ãw + + `PhšgFže +($file); + +703 + `fܗch +( +$this +-> +£ËùÜs + +as + +$£ËùÜ +) { + +704 ià(! +$£ËùÜ +-> + `isS–eùed +( +$ba£dœ +, +$Çme +, +$fže +)) { + +705  +çl£ +; + +709  +Œue +; + +710 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/ExtendedFileStream.php + +1 + `exi¡s +()) { + +48 +$f +-> + `mkdœs +(); + +50 + } +} + +52 +funùiÚ + + $¡»am_ݒ +( +$·th +, +$mode +, +$ÝtiÚs +, & +$ݒed_·th +) + +55 ià( +$·th +[8] =ð +DIRECTORY_SEPARATOR +) + +57 +$fž•©h + = + `sub¡r +( +$·th +, 7); + +61 +$fž•©h + = + `sub¡r +( +$·th +, 8); + +64 +$this +-> + `ü—‹Dœeùܛs +( + `dœÇme +( +$fž•©h +)); + +66 +$this +-> +å + = + `fݒ +( +$fž•©h +, +$mode +); + +68  +Œue +; + +69 + } +} + +71 +funùiÚ + + $¡»am_þo£ +() + +73 + `fþo£ +( +$this +-> +å +); + +74 +$this +-> +å + = +NULL +; + +75 + } +} + +77 +funùiÚ + + $¡»am_»ad +( +$couÁ +) + +79  + `ä—d +( +$this +-> +å +, +$couÁ +); + +80 + } +} + +82 +funùiÚ + + $¡»am_wr™e +( +$d©a +) + +84  + `fwr™e +( +$this +-> +å +, +$d©a +); + +85 + } +} + +87 +funùiÚ + + $¡»am_eof +() + +89  + `ãof +( +$this +-> +å +); + +90 + } +} + +92 +funùiÚ + + $¡»am_‹Î +() + +94  + `á–l +( +$this +-> +å +); + +95 + } +} + +97 +funùiÚ + + $¡»am_£ek +( +$off£t +, +$wh’û +) + +99  + `f£ek +( +$this +-> +å +, +$off£t +, +$wh’û +); + +100 + } +} + +102 +funùiÚ + + $¡»am_æush +() + +104  + `fæush +( +$this +-> +å +); + +105 + } +} + +107 +funùiÚ + + $¡»am_¡© +() + +109  + `f¡© +( +$this +-> +å +); + +110 + } +} + +112 +funùiÚ + + $uƚk +( +$·th +) + +114  +FALSE +; + +115 + } +} + +117 +funùiÚ + + $»Çme +( +$·th_äom +, +$·th_to +) + +119  +FALSE +; + +120 + } +} + +122 +funùiÚ + + $mkdœ +( +$·th +, +$mode +, +$ÝtiÚs +) + +124  +FALSE +; + +125 + } +} + +127 +funùiÚ + + $rmdœ +( +$·th +, +$ÝtiÚs +) + +129  +FALSE +; + +130 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/FileUtils.php + +1 + `£tBufãrSize +(65536); + +53 +$üh +-> + `£tPrim¬yR—d” +( +$š +); + +54 +$üh +-> + `£tFž‹rChašs +( +$fž‹rChašs +); + +55 +$üh +-> + `£tProjeù +( +$´ojeù +); + +56 +$rdr + = +$üh +-> + `g‘As£mbËdR—d” +(); + +57  +$rdr +; + +59  +$š +; + +74 +funùiÚ + + $cÝyFže +( +PhšgFže + +$sourûFže +, PhšgFž +$de¡Fže +, +$ov”wr™e + = +çl£ +, +$´e£rveLa¡Modif›d + = +Œue +, & +$fž‹rChašs + = +nuÎ +, +Projeù + +$´ojeù +) { + +76 ià( +$ov”wr™e + || ! +$de¡Fže +-> + `exi¡s +(è|| $de¡Fže-> + `Ï¡Modif›d +(è< +$sourûFže +->lastModified()) { + +77 ià( +$de¡Fže +-> + `exi¡s +(è&& $de¡Fže-> + `isFže +()) { + +78 +$de¡Fže +-> + `d–‘e +(); + +82 +$·»Á + = +$de¡Fže +-> + `g‘P¬’tFže +(); + +83 ià( +$·»Á + !=ð +nuÎ + && !$·»Á-> + `exi¡s +()) { + +84 +$·»Á +-> + `mkdœs +(); + +87 ià(( + `is_¬¿y +( +$fž‹rChašs +)è&& (! + `em±y +($filterChains))) { + +89 +$š + = +£lf +:: + `g‘ChašedR—d” +( +Ãw + + `Bufã»dR—d” +Òew + `FžeR—d” +( +$sourûFže +)), +$fž‹rChašs +, +$´ojeù +); + +90 +$out + = +Ãw + + `Bufã»dWr™” +Òew + `FžeWr™” +( +$de¡Fže +)); + +93 -1 !=ð( +$bufãr + = +$š +-> + `»ad +())) { + +94 +$out +-> + `wr™e +( +$bufãr +); + +97 iàÐ +$š + !=ð +nuÎ + ) + +98 +$š +-> + `þo£ +(); + +99 iàÐ +$out + !=ð +nuÎ + ) + +100 +$out +-> + `þo£ +(); + +103 +$sourûFže +-> + `cÝyTo +( +$de¡Fže +); + +106 ià( +$´e£rveLa¡Modif›d +) { + +107 +$de¡Fže +-> + `£tLa¡Modif›d +( +$sourûFže +-> + `Ï¡Modif›d +()); + +111 + } +} + +125 +funùiÚ + + $»sÞveFže +( +$fže +, +$fž’ame +) { + +128 +$fs + = +FžeSy¡em +:: + `g‘FžeSy¡em +(); + +130 +$fž’ame + = + `¡r_»¶aû +('/', +$fs +-> + `g‘S•¬©Ü +(), str_replace('\\', $fs->getSeparator(), $filename)); + +133 ià( +SŒšgH–³r +:: + `¡¬tsW™h +( +$fs +-> + `g‘S•¬©Ü +(), +$fž’ame +) || + +134 ( + `¡¾’ +( +$fž’ame +è>ð2 && +Ch¬aù” +:: + `isL‘‹r +($filename{0}) && $filename{1} === ':')) { + +135  +Ãw + + `PhšgFže +( +$this +-> + `nÜm®ize +( +$fž’ame +)); + +138 ià( + `¡¾’ +( +$fž’ame +è>ð2 && +Ch¬aù” +:: + `isL‘‹r +($filename{0}) && $filename{1} === ':') { + +139  +Ãw + + `PhšgFže +( +$this +-> + `nÜm®ize +( +$fž’ame +)); + +142 +$h–pFže + = +Ãw + + `PhšgFže +( +$fže +-> + `g‘AbsÞu‹P©h +()); + +144 +$tok + = + `¡¹ok +( +$fž’ame +, +$fs +-> + `g‘S•¬©Ü +()); + +145  +$tok + !=ð +çl£ +) { + +146 +$·¹ + = +$tok +; + +147 ià( +$·¹ + === '..') { + +148 +$·»ÁFže + = +$h–pFže +-> + `g‘P¬’t +(); + +149 ià( +$·»ÁFže + ==ð +nuÎ +) { + +150 +$msg + = "ThfžÜ…©h you s³cif›d ($fž’ameèi šv®id„–©ivtØ". +$fže +-> + `g‘P©h +(); + +151 +throw + +Ãw + + `IOExû±iÚ +( +$msg +); + +153 +$h–pFže + = +Ãw + + `PhšgFže +( +$·»ÁFže +); + +154 } ià( +$·¹ + === '.') { + +157 +$h–pFže + = +Ãw + + `PhšgFže +($h–pFže, +$·¹ +); + +159 +$tok + = + `¡¹ok +( +$fs +-> + `g‘S•¬©Ü +()); + +161  +Ãw + + `PhšgFže +( +$h–pFže +-> + `g‘AbsÞu‹P©h +()); + +162 + } +} + +176 +funùiÚ + + $nÜm®ize +( +$·th +) { + +178 +$·th + = ( +¡ršg +) $path; + +179 +$Üig + = +$·th +; + +181 +$·th + = + `¡r_»¶aû +('/', +DIRECTORY_SEPARATOR +, str_replace('\\', DIRECTORY_SEPARATOR, $path)); + +184 ià(! +SŒšgH–³r +:: + `¡¬tsW™h +( +DIRECTORY_SEPARATOR +, +$·th +) + +185 && !( + `¡¾’ +( +$·th +è>ð2 && +Ch¬aù” +:: + `isL‘‹r +($path{0}) && $path{1} === ':')) { + +186 +throw + +Ãw + + `IOExû±iÚ +("$path is‚ot‡n‡bsolute…ath"); + +189 +$dosW™hDrive + = +çl£ +; + +190 +$roÙ + = +nuÎ +; + +194 ià( + `¡¾’ +( +$·th +è>ð2 && +Ch¬aù” +:: + `isL‘‹r +($path{0}) && $path{1} === ':') { + +195 +$dosW™hDrive + = +Œue +; + +197 +$ÿ + = + `¡r_»¶aû +('/', '\\', +$·th +); + +198 +$ÿ + = +SŒšgH–³r +:: + `toCh¬A¼ay +($ca); + +200 +$·th + = + `¡¹ouµ” +( +$ÿ +[0]).':'; + +202  +$i +=2, +$_i += + `couÁ +( +$ÿ +); $i < $_i; $i++) { + +203 ià(( +$ÿ +[ +$i +] !== '\\') || + +204 ( +$ÿ +[ +$i +] === '\\' && $ca[$i - 1] !== '\\') + +206 +$·th + .ð +$ÿ +[ +$i +]; + +210 +$·th + = + `¡r_»¶aû +('\\', +DIRECTORY_SEPARATOR +, $path); + +212 ià( + `¡¾’ +( +$·th +) == 2) { + +213 +$roÙ + = +$·th +; + +214 +$·th + = ""; + +216 +$roÙ + = + `sub¡r +( +$·th +, 0, 3); + +217 +$·th + = + `sub¡r +($path, 3); + +221 ià( + `¡¾’ +( +$·th +) == 1) { + +222 +$roÙ + = +DIRECTORY_SEPARATOR +; + +223 +$·th + = ""; + +224 } ià( +$·th +{1} =ð +DIRECTORY_SEPARATOR +) { + +226 +$roÙ + = +DIRECTORY_SEPARATOR +.DIRECTORY_SEPARATOR; + +227 +$·th + = + `sub¡r +($path, 2); + +230 +$roÙ + = +DIRECTORY_SEPARATOR +; + +231 +$·th + = + `sub¡r +($path, 1); + +235 +$s + = + `¬¿y +(); + +236 + `¬¿y_push +( +$s +, +$roÙ +); + +237 +$tok + = + `¡¹ok +( +$·th +, +DIRECTORY_SEPARATOR +); + +238  +$tok + !=ð +çl£ +) { + +239 +$thisTok’ + = +$tok +; + +240 ià("." ==ð +$thisTok’ +) { + +241 +$tok + = + `¡¹ok +( +DIRECTORY_SEPARATOR +); + +243 } + `–£if + (".." ==ð +$thisTok’ +) { + +244 ià( + `couÁ +( +$s +) < 2) { + +246 +throw + +Ãw + + `IOExû±iÚ +("Cannot„esolve…ath: $orig"); + +248 + `¬¿y_pÝ +( +$s +); + +251 + `¬¿y_push +( +$s +, +$thisTok’ +); + +253 +$tok + = + `¡¹ok +( +DIRECTORY_SEPARATOR +); + +256 +$sb + = ""; + +257  +$i +=0, +$_i += + `couÁ +( +$s +); $i < $_i; $i++) { + +258 ià( +$i + > 1) { + +261 +$sb + .ð +DIRECTORY_SEPARATOR +; + +263 +$sb + .ð( +¡ršg +è +$s +[ +$i +]; + +267 +$·th + = ( +¡ršg +è +$sb +; + +268 ià( +$dosW™hDrive + ==ð +Œue +) { + +269 +$·th + = + `¡r_»¶aû +('/', '\\', $path); + +271  +$·th +; + +272 + } +} + +277 +public + +funùiÚ + + $cڋÁEqu®s +( +PhšgFže + +$fže1 +, PhšgFž +$fže2 +) { + +279 ià(!( +$fže1 +-> + `exi¡s +(è|| +$fže2 +->exists())) { + +280  +çl£ +; + +283 ià(!( +$fže1 +-> + `ÿnR—d +(è|| +$fže2 +->canRead())) { + +284  +çl£ +; + +287 +$c1 + = + `fže_g‘_cڋÁs +( +$fže1 +-> + `g‘AbsÞu‹P©h +()); + +288 +$c2 + = + `fže_g‘_cڋÁs +( +$fže2 +-> + `g‘AbsÞu‹P©h +()); + +290  + `Œim +( +$c1 +è=ðŒim( +$c2 +); + +291 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/LogWriter.php + +1 +sk + = +$sk +; + +45 + m$this +-> + mËv– + = +$Ëv– +; + +51 +funùiÚ + + $wr™e +( +$buf +, +$off + = +nuÎ +, +$Ën + =‚ull) + +53 +$lšes + = + `ex¶ode +("\n", +$buf +); + +55 + `fܗch + ( +$lšes + +as + +$lše +) + +57 ià( +$lše + == "") + +62 +$this +-> +sk +-> + `log +( +$lše +, $this-> +Ëv– +); + +64 + } +} + +69 +funùiÚ + + $»£t +() + +71 + } +} + +76 +funùiÚ + + $þo£ +() + +78 + } +} + +83 +funùiÚ + + $ݒ +() + +85 + } +} + +90 +funùiÚ + + $g‘Resourû +() + +92  +$this +-> +sk +; + +93 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/PathTokenizer.php + +1 +tok’s + = + `´eg_¥l™ +("/[;:]/", +$·th +, -1, +PREG_SPLIT_NO_EMPTY +); + +112 +$this +-> +dosStyËFžesy¡em + = ( +PATH_SEPARATOR + == ';'); + +134 +public + +funùiÚ + + $hasMÜeTok’s +() { + +136 ià( +$this +-> +lookah—d + !=ð +nuÎ +) { + +138  +Œue +; + +142  ! + `em±y +( +$this +-> +tok’s +); + +144 + } +} + +162 +public + +funùiÚ + + $ÃxtTok’ +() { + +166 ià( +$this +-> +lookah—d + !=ð +nuÎ +) { + +168 +$tok’ + = +$this +-> +lookah—d +; + +170 +$this +-> +lookah—d + = +nuÎ +; + +174 +$tok’ + = + `Œim +( + `¬¿y_shiá +( +$this +-> +tok’s +)); + +182 ià( + `¡¾’ +( +$tok’ +è==ð1 && +Ch¬aù” +:: + `isL‘‹r +($token{0}) + +184 && +$this +-> +dosStyËFžesy¡em + + +186 && ! + `em±y +( +$this +-> +tok’s +)) { + +192 +$ÃxtTok’ + = + `Œim +( + `¬¿y_shiá +( +$this +-> +tok’s +)); + +194 ià( +SŒšgH–³r +:: + `¡¬tsW™h +('\\', +$ÃxtTok’ +) || StringHelper::startsWith('/', $nextToken)) { + +202 +$tok’ + .ð':' . +$ÃxtTok’ +; + +208 +$this +-> +lookah—d + = +$ÃxtTok’ +; + +216  +$tok’ +; + +218 + } +} + +234 +public + +funùiÚ + + $cڏšs +( +$·th +) { + +236  + `š_¬¿y +( +$·th +, +$this +-> +tok’s +, +Œue +); + +238 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/SourceFileScanner.php + +1 +sk + = +$sk +; + +44 +$this +-> +fžeUtžs + = +Ãw + + `FžeUtžs +(); + +60 +funùiÚ + + $»¡riù +(& +$fžes +, +$¤cDœ +, +$de¡Dœ +, +$m­³r +, +$fÜû + = +çl£ +) { + +61 +$now + = + `time +(); + +62 +$rg‘Li¡ + = ""; + +69 +$o¢ame + = + `¡¹Þow” +( +Phšg +:: + `g‘Prݔty +('os.name')); + +72 +$šdex + = ((( +$»s + = + `¡½os +( +$o¢ame +, 'wš')è==ð +çl£ +) ? -1 : $res); + +73 ià( +$šdex + >= 0 ) { + +74 +$now + += 2000; + +77 +$v + = + `¬¿y +(); + +79  +$i +=0, +$size += + `couÁ +( +$fžes +); $i < $size; $i++) { + +81 +$rg‘s + = +$m­³r +-> + `maš +( +$fžes +[ +$i +]); + +82 ià( + `em±y +( +$rg‘s +)) { + +83 +$this +-> +sk +-> + `log +( +$fžes +[ +$i +]." sk³d - dÚ'ˆknow howØhªdË it", +Projeù +:: +MSG_VERBOSE +); + +87 +$¤c + = +nuÎ +; + +88 +Œy + { + +89 ià( +$¤cDœ + ==ð +nuÎ +) { + +90 +$¤c + = +Ãw + + `PhšgFže +( +$fžes +[ +$i +]); + +92 +$¤c + = +$this +-> +fžeUtžs +-> + `»sÞveFže +( +$¤cDœ +, +$fžes +[ +$i +]); + +95 ià( +$¤c +-> + `Ï¡Modif›d +(è> +$now +) { + +96 +$this +-> +sk +-> + `log +("W¬nšg: ". +$fžes +[ +$i +]." modif›d iÀthfutu» (". +$¤c +-> + `Ï¡Modif›d +()." > ". +$now +.")", +Projeù +:: +MSG_WARN +); + +98 } + `ÿtch + ( +IOExû±iÚ + +$iÛ +) { + +99 +$this +-> +sk +-> + `log +("UÇbˁػad fž". +$fžes +[ +$i +]." (skpšg): " . +$iÛ +-> + `g‘Mes§ge +()); + +103 +$added + = +çl£ +; + +104 +$rg‘Li¡ + = ""; + +106  +$j +=0, +$_j += + `couÁ +( +$rg‘s +); (! +$added + && $j < $_j); $j++) { + +108 +$de¡ + = +nuÎ +; + +109 ià( +$de¡Dœ + ==ð +nuÎ +) { + +110 +$de¡ + = +Ãw + + `PhšgFže +( +$rg‘s +[ +$j +]); + +112 +$de¡ + = +$this +-> +fžeUtžs +-> + `»sÞveFže +( +$de¡Dœ +, +$rg‘s +[ +$j +]); + +115 ià(! +$de¡ +-> + `exi¡s +()) { + +116 +$this +-> +sk +-> + `log +( +$fžes +[ +$i +]."‡dded‡ " . +$de¡ +-> + `__toSŒšg +(è. " dÛ¢'ˆexi¡.", +Projeù +:: +MSG_VERBOSE +); + +117 +$v +[] = +$fžes +[ +$i +]; + +118 +$added + = +Œue +; + +119 } + `–£if + ( +$¤c +-> + `Ï¡Modif›d +(è> +$de¡ +->lastModified()) { + +120 +$this +-> +sk +-> + `log +( +$fžes +[ +$i +]."‡dded‡ " . +$de¡ +-> + `__toSŒšg +(è. " i outd©ed.", +Projeù +:: +MSG_VERBOSE + ); + +121 +$v +[]= +$fžes +[ +$i +]; + +122 +$added + = +Œue +; + +123 } + `–£if + ( +$fÜû + ==ð +Œue +) { + +124 +$this +-> +sk +-> + `log +( +$fžes +[ +$i +]."‡dded‡ " . +$de¡ +-> + `__toSŒšg +(è. " i fÜûdØbov”wr™‹n.", +Projeù +:: +MSG_VERBOSE + ); + +125 +$v +[]= +$fžes +[ +$i +]; + +126 +$added + = +Œue +; + +128 ià( + `¡¾’ +( +$rg‘Li¡ +) > 0) { + +129 +$rg‘Li¡ + .= ", "; + +131 +$rg‘Li¡ + .ð +$de¡ +-> + `g‘AbsÞu‹P©h +(); + +135 ià(! +$added +) { + +136 +$this +-> +sk +-> + `log +( +$fžes +[ +$i +]." om™‹d‡ ". +$rg‘Li¡ +." ".( + `couÁ +( +$rg‘s +è==ð1 ? " i " : "‡» ")."u°tØd©e.", +Projeù +:: +MSG_VERBOSE +); + +140 +$»suÉ + = + `¬¿y +(); + +141 +$»suÉ + = +$v +; + +142  +$»suÉ +; + +143 + } +} + +150 +funùiÚ + + $»¡riùAsFžes +(& +$fžes +, & +$¤cDœ +, & +$de¡Dœ +, & +$m­³r +) { + +151 +$»s + = +$this +-> + `»¡riù +( +$fžes +, +$¤cDœ +, +$de¡Dœ +, +$m­³r +); + +152 +$»suÉ + = + `¬¿y +(); + +153  +$i +=0; $i< + `couÁ +( +$»s +); $i++) { + +154 +$»suÉ +[ +$i +] = +Ãw + + `PhšgFže +( +$¤cDœ +, +$»s +[$i]); + +156  +$»suÉ +; + +157 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/StringHelper.php + +1 +$cÞumn +) { + +91 +$qu®if›d +[ +$key +] = +$´efix + . +$cÞumn +; + +93  +$qu®if›d +; + +94 + } +} + +100 +public +  +funùiÚ + +roÙ +( +$qu®if›dName +, +$£·¿tÜ + = '.') { + +101 +$loc + = +¡½os +( +$qu®if›dName +, +$£·¿tÜ +); + +102  ( + g$loc + ==ð +çl£ +è? +$qu®if›dName + : +sub¡r +($qu®if›dName, 0, +$loc +); + +108 +public +  +funùiÚ + + $hashCode +( +$¡ršg +) { + +109  + `üc32 +( +$¡ršg +); + +110 + } +} + +115 +public +  +funùiÚ + + $boޗnV®ue +( +$s +) { + +116 ià( + `is_boÞ +( +$s +)) { + +117  +$s +; + +120 +$Œimmed + = + `¡¹Þow” +( + `Œim +( +$s +)); + +121  ( +boޗn +è + `š_¬¿y +( +$Œimmed +, +£lf +:: +$TRUE_VALUES +); + +122 + } +} + +125 +public +  +funùiÚ + + $isBoޗn +( +$s +) { + +127 ià( + `is_boÞ +( +$s +)) { + +128  +Œue +; + +131 ià( +$s + ==ð"" || $ ==ð +nuÎ + || ! + `is_¡ršg +($s)) { + +132  +çl£ +; + +135 +$‹¡ + = + `Œim +( + `¡¹Þow” +( +$s +)); + +136  ( +boޗn +è + `š_¬¿y +( +$‹¡ +, + `¬¿y_m”ge +( +£lf +:: +$FALSE_VALUES +, s–f:: +$TRUE_VALUES +)); + +137 + } +} + +143 +public +  +funùiÚ + + $key +() { + +144 +$¬gs + = + `func_g‘_¬gs +(); + +145  + `£rŸlize +( +$¬gs +); + +146 + } +} + +149 +public +  +funùiÚ + + $¡¬tsW™h +( +$check +, +$¡ršg +) { + +150 ià( +$check + ==ð"" || $check ==ð +$¡ršg +) { + +151  +Œue +; + +153  ( + `¡½os +( +$¡ršg +, +$check +è==ð0è? +Œue + : +çl£ +; + +155 + } +} + +158 +public +  +funùiÚ + + $’dsW™h +( +$check +, +$¡ršg +) { + +159 ià( +$check + ==ð"" || $check ==ð +$¡ršg +) { + +160  +Œue +; + +162  ( + `¡½os +( + `¡¼ev +( +$¡ršg +), sŒ»v( +$check +)è==ð0è? +Œue + : +çl£ +; + +164 + } +} + +170 +public +  +funùiÚ + +sub¡ršg +( +$¡ršg +, +$¡¬os +, +$’dpos + = -1) { + +171 +$Ën + = +¡¾’ +( +$¡ršg +); + +172 + g$’dpos + = (è(( +$’dpos + ==ð-1è? +$Ën +-1 : $endpos); + +173 ià( + g$¡¬os + > + g$Ën +-1 || $startpos < 0) { + +174 +Œigg”_”rÜ +("sub¡ršg(), S¹šdex ouˆoàbound mu¡ b0 + g$Ën +-1 || $’dpo < + g$¡¬os +) { + +177 +Œigg”_”rÜ +("sub¡ršg(), Endšdex ouˆoàbound mu¡ b$¡¬os +ignÜeCa£ + = ( +boޗn +è +$b™ +; + +51 +funùiÚ + + $g‘IgnÜeCa£ +() { + +52  +$this +-> +ignÜeCa£ +; + +53 + } +} + +60 +´iv©e + +funùiÚ + + $´•¬eP©‹º +( +$·‰”n +) + +62  '/'. +$·‰”n +.'/'.( +$this +-> +ignÜeCa£ + ? 'i' : ''); + +63 + } +} + +72 +funùiÚ + + $m©ch +( +$·‰”n +, +$sourû +, & +$m©ches +) { + +73  + `´eg_m©ch +( +$this +-> + `´•¬eP©‹º +( +$·‰”n +), +$sourû +, +$m©ches +); + +74 + } +} + +83 +funùiÚ + + $m©chAÎ +( +$·‰”n +, +$sourû +, & +$m©ches +) { + +84  + `´eg_m©ch_®l +( +$this +-> + `´•¬eP©‹º +( +$·‰”n +), +$sourû +, +$m©ches +); + +85 + } +} + +96 +funùiÚ + + $»¶aû +( +$·‰”n +, +$»¶aû +, +$sourû +) { + +99 +$»¶aû + = + `´eg_»¶aû +('/\\\(\d+)/', '\$$1', $replace); + +100  + `´eg_»¶aû +( +$this +-> + `´•¬eP©‹º +( +$·‰”n +), +$»¶aû +, +$sourû +); + +101 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/regexp/Regexp.php + +1 + m’gše + = +Ãw + +P»gEngše +(); + +62 } +–£if + ( +$’gšeTy³ + == 'ereg') { + +63 +šþude_Úû + 'phing/util/regexp/EregEngine.php'; + +64 + m$this +-> + m’gše + = +Ãw + +E»gEngše +(); + +66 +throw + +Ãw + +BuždExû±iÚ +("Inv®idƒngšty³ fÜ Regexp: " . +$’gšeTy³ +); + +75 +public + +funùiÚ + + $£tP©‹º +( +$·t +) { + +76 +$this +-> +·‰”n + = ( +¡ršg +è +$·t +; + +77 + } +} + +84 +public + +funùiÚ + + $g‘P©‹º +() { + +85  +$this +-> +·‰”n +; + +86 + } +} + +93 +public + +funùiÚ + + $£tR•Ïû +( +$»p +) { + +94 +$this +-> +»¶aû + = ( +¡ršg +è +$»p +; + +95 + } +} + +102 +public + +funùiÚ + + $g‘R•Ïû +() { + +103  +$this +-> +»¶aû +; + +104 + } +} + +111 +public + +funùiÚ + + $m©ches +( +$subjeù +) { + +112 if( +$this +-> +·‰”n + ==ð +nuÎ +) { + +113 +throw + +Ãw + + `Exû±iÚ +("No…attern specified for„egexp match()."); + +115  +$this +-> +’gše +-> + `m©ch +($this-> +·‰”n +, +$subjeù +, $this-> +groups +); + +116 + } +} + +123 +public + +funùiÚ + + $»¶aû +( +$subjeù +) { + +124 ià( +$this +-> +·‰”n + ==ð +nuÎ + || $this-> +»¶aû + ===‚ull) { + +125 +throw + +Ãw + + `Exû±iÚ +("Missing…attern or„eplacement string„egexp„eplace()."); + +127  +$this +-> +’gše +-> + `»¶aû +($this-> +·‰”n +, $this-> +»¶aû +, +$subjeù +); + +128 + } +} + +134 +funùiÚ + + $g‘Groups +() { + +135  +$this +-> +groups +; + +136 + } +} + +143 +funùiÚ + + $g‘Group +( +$idx +) { + +144 ià(! + `is£t +( +$this +-> +groups +[ +$idx +])) { + +145  +nuÎ +; + +147  +$this +-> +groups +[ +$idx +]; + +148 + } +} + +155 +funùiÚ + + $£tIgnÜeCa£ +( +$b™ +) { + +156 +$this +-> +’gše +-> + `£tIgnÜeCa£ +( +$b™ +); + +157 + } +} + +163 +funùiÚ + + $g‘IgnÜeCa£ +() { + +164  +$this +-> +’gše +-> + `g‘IgnÜeCa£ +(); + +165 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/regexp/RegexpEngine.php + +1 + `£tBuždPrݔt›s +($props); + +51 +public + +funùiÚ + + $g‘BuždPrݔt›s +() + +53  +$this +-> +buždPrݔt›s +; + +54 + } +} + +64 +public + +funùiÚ + + $£tBuždPrݔt›s +( +$´Ýs +) + +66 +$this +-> +buždPrݔt›s + = + `¬¿y +(); + +68 +$»ÇmedPrݖPrÝs + = + `¬¿y +(); + +69 + `fܗch + ( +$´Ýs + +as + +$key + => +$´ÝV®ue +) { + +70 ià( + `¡½os +( +$key +, "propel.") === 0) { + +71 +$ÃwKey + = + `sub¡r +( +$key +, + `¡¾’ +("propel.")); + +72 +$j + = + `¡½os +( +$ÃwKey +, '.'); + +73  +$j + !=ð +çl£ +) { + +74 +$ÃwKey + = + `sub¡r +($ÃwKey, 0, +$j +è. + `ucfœ¡ +(substr($newKey, $j + 1)); + +75 +$j + = + `¡½os +( +$ÃwKey +, '.'); + +77 +$this +-> + `£tBuždPrݔty +( +$ÃwKey +, +$´ÝV®ue +); + +80 + } +} + +88 +public + +funùiÚ + + $g‘BuždPrݔty +( +$Çme +) + +90  + `is£t +( +$this +-> +buždPrݔt›s +[ +$Çme +]è? $this->buždPrݔt›s[$Çme] : +nuÎ +; + +91 + } +} + +99 +public + +funùiÚ + + $£tBuždPrݔty +( +$Çme +, +$v®ue +) + +101 +$this +-> +buždPrݔt›s +[ +$Çme +] = +$v®ue +; + +102 + } +} + +111 +public + +funùiÚ + + $g‘CÏs¢ame +( +$´ÝÇme +) + +113 +$þas¥©h + = +$this +-> + `g‘BuždPrݔty +( +$´ÝÇme +); + +114 ià( + `em±y +( +$þas¥©h +)) { + +115 +throw + +Ãw + + `BuždExû±iÚ +("Unableo find class…ath for '$propname'…roperty."); + +120 +$Ï¡dÙpos + = + `¡¼pos +( +$þas¥©h +, '.'); + +121 ià( +$Ï¡dÙpos + !=ð +nuÎ +) { + +122 +$þas¥©h +{ +$Ï¡dÙpos ++1} = + `¡¹ouµ” +($classpath{$lastdotpos+1}); + +124 +$þas¥©h + = + `ucfœ¡ +($classpath); + +127 ià( + `em±y +( +$þas¥©h +)) { + +128 +throw + +Ãw + + `BuždExû±iÚ +("Unableo find class…ath for '$propname'…roperty."); + +131 +$þazz + = +Phšg +:: + `impÜt +( +$þas¥©h +); + +133  +$þazz +; + +134 + } +} + +142 +public + +funùiÚ + + $g‘Bužd”CÏs¢ame +( +$ty³ +) + +144 +$´ÝÇme + = 'bužd”' . + `ucfœ¡ +( + `¡¹Þow” +( +$ty³ +)) . 'Class'; + +145  +$this +-> + `g‘CÏs¢ame +( +$´ÝÇme +); + +146 + } +} + +154 +public + +funùiÚ + + $g‘CÚfigu»dPÏtfÜm +( +PDO + +$cÚ + = +nuÎ +) + +156 +$þazz + = +$this +-> + `g‘CÏs¢ame +("platformClass"); + +157 +$¶©fÜm + = +Ãw + + `$þazz +(); + +159 ià(! +$¶©fÜm + +š¡ªûof + +PÏtfÜm +) { + +160 +throw + +Ãw + + `BuždExû±iÚ +("S³cif›d…ÏtfÜm cÏs ($þazzèdÛ nÙ im¶em’ˆPÏtfÜm iÁ”çû.", +$this +-> + `g‘LoÿtiÚ +()); + +163 +$¶©fÜm +-> + `£tCÚÃùiÚ +( +$cÚ +); + +164 +$¶©fÜm +-> + `£tG’”©ÜCÚfig +( +$this +); + +165  +$¶©fÜm +; + +166 + } +} + +173 +public + +funùiÚ + + $g‘CÚfigu»dSchemaP¬£r +( +PDO + +$cÚ + = +nuÎ +) + +175 +$þazz + = +$this +-> + `g‘CÏs¢ame +("reverseParserClass"); + +176 +$·r£r + = +Ãw + + `$þazz +(); + +177 ià(! +$·r£r + +š¡ªûof + +SchemaP¬£r +) { + +178 +throw + +Ãw + + `BuždExû±iÚ +("S³cif›d…ÏtfÜm cÏs ($þazzèdÛ im¶em’ˆSchemaP¬£¸š‹rçû.", +$this +-> + `g‘LoÿtiÚ +()); + +180 +$·r£r +-> + `£tCÚÃùiÚ +( +$cÚ +); + +181 +$·r£r +-> + `£tG’”©ÜCÚfig +( +$this +); + +182  +$·r£r +; + +183 + } +} + +192 +public + +funùiÚ + + $g‘CÚfigu»dBužd” +( +TabË + +$bË +, +$ty³ +, +$ÿche + = +Œue +) + +194 +$þas¢ame + = +$this +-> + `g‘Bužd”CÏs¢ame +( +$ty³ +); + +195 +$bužd” + = +Ãw + + `$þas¢ame +( +$bË +); + +196 +$bužd” +-> + `£tG’”©ÜCÚfig +( +$this +); + +197  +$bužd” +; + +198 + } +} + +205 +public + +funùiÚ + + $g‘CÚfigu»dPlu¿liz” +() + +207 +$þas¢ame + = +$this +-> + `g‘Bužd”CÏs¢ame +('pluralizer'); + +208 +$¶u¿liz” + = +Ãw + + `$þas¢ame +(); + +209  +$¶u¿liz” +; + +210 + } +} + +218 +public + +funùiÚ + + $g‘CÚfigu»dBehaviÜ +( +$Çme +) + +220 +$´ÝÇme + = 'behaviÜ' . + `ucfœ¡ +( + `¡¹Þow” +( +$Çme +)) . 'Class'; + +221 +Œy + { + +222 +$»t + = +$this +-> + `g‘CÏs¢ame +( +$´ÝÇme +); + +223 } + `ÿtch + ( +BuždExû±iÚ + +$e +) { + +225 +$»t + = +çl£ +; + +227  +$»t +; + +228 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/AlternativeCodingStandardsBehavior.php + +1 + `fž‹r +( +$süt +); + +67 +public + +funùiÚ + + $ex‹nsiÚObjeùFž‹r +(& +$süt +) + +69  +$this +-> + `fž‹r +( +$süt +); + +70 + } +} + +72 +public + +funùiÚ + + $³”Fž‹r +(& +$süt +) + +74  +$this +-> + `fž‹r +( +$süt +); + +75 + } +} + +77 +public + +funùiÚ + + $ex‹nsiÚP“rFž‹r +(& +$süt +) + +79  +$this +-> + `fž‹r +( +$süt +); + +80 + } +} + +82 +public + +funùiÚ + + $bËM­Fž‹r +(& +$süt +) + +84  +$this +-> + `fž‹r +( +$süt +); + +85 + } +} + +92 +´Ùeùed + +funùiÚ + + $fž‹r +(& +$süt +) + +94 +$fž‹r + = + `¬¿y +(); + +95 if( +$this +-> + `g‘P¬am‘” +('brackets_newline') == 'true') { + +96 +$fž‹r +['#^(\t*)\}\h(else|elseif|catch)(.*)\h\{$#m'] = "$1} + +97 +$1$2$3 + + +98 +$1 +{"; + +99 +$fž‹r +['#^(\t*)(\w.*)\h\{$#m'] = "$1$2 + +100 +$1 +{"; + +102 ià( +$this +-> + `g‘P¬am‘” +('remove_closing_comments') == 'true') { + +103 +$fž‹r +['#^(\t*)} //.*$#m'] = "$1}"; + +105 ià( +$this +-> + `g‘P¬am‘” +('use_whitespace') == 'true') { + +106 +$fž‹r +['#\t#'] = + `¡r_»³© +(' ', +$this +-> + `g‘P¬am‘” +('tab_size')); + +109 +$süt + = + `´eg_»¶aû +( + `¬¿y_keys +( +$fž‹r +), + `¬¿y_v®ues +($filter), $script); + +111 ià( +$this +-> + `g‘P¬am‘” +('strip_comments') == 'true') { + +112 +$süt + = +£lf +:: + `¡rComm’ts +($script); + +121 +public +  +funùiÚ + + `¡rComm’ts +( +$code +) + +123 +$ouut + = ''; + +124 +$comm’tTok’s + = + `¬¿y +( +T_COMMENT +, +T_DOC_COMMENT +); + +125 + `fܗch + ( + `tok’_g‘_®l +( +$code +è +as + +$tok’ +) { + +126 ià( + `is_¬¿y +( +$tok’ +)) { + +127 ià( + `š_¬¿y +( +$tok’ +[0], +$comm’tTok’s +)) ; + +128 +$tok’ + = $token[1]; + +130 +$ouut + .ð +$tok’ +; + +133  +$ouut +; + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/AutoAddPkBehavior.php + +1 + `g‘D©aba£ +()-> + `g‘TabËs +(è +as + +$bË +) + +47 if(! +$bË +-> + `hasPrim¬yKey +()) + +49 +$b + = +þÚe + +$this +; + +50 +$bË +-> + `addBehaviÜ +( +$b +); + +58 +public + +funùiÚ + + $modifyTabË +() + +60 ià(! +$this +-> + `g‘TabË +()-> + `hasPrim¬yKey +()) + +62 +$cÞumnA‰ribu‹s + = + `¬¿y_m”ge +( + `¬¿y +('´im¬yKey' => 'Œue'), +$this +-> + `g‘P¬am‘”s +()); + +63 +$this +-> + `g‘TabË +()-> + `addCÞumn +( +$cÞumnA‰ribu‹s +); + +65 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/SoftDeleteBehavior.php + +1 + `g‘P¬am‘” +('add_columns') == 'true') + +47 +$this +-> + `g‘TabË +()-> + `addCÞumn +( + `¬¿y +( + +48 'Çme' => +$this +-> + `g‘P¬am‘” +('deleted_column'), + +54 +´Ùeùed + +funùiÚ + + $g‘CÞumnS‘‹r +() + +56  '£t' . +$this +-> + `g‘CÞumnFÜP¬am‘” +('d–‘ed_cÞumn')-> + `g‘PhpName +(); + +57 + } +} + +59 +public + +funùiÚ + + $´eD–‘e +() + +61  <<< +EOT + + +62 ià(! + `em±y +(\ +$»t +è&& { +$this +-> + `g‘TabË +()-> + `g‘PhpName +()} +P“r +:: + `isSoáD–‘eEÇbËd +()) { + +63 \ +$this +->{$this-> + `g‘CÞumnS‘‹r +()}( + `time +()); + +64 \ +$this +-> + `§ve +(); + +65 \ +$cÚ +-> + `comm™ +(); + +68 +EOT +; + +69 + } +} + +71 +public + +funùiÚ + + $´eS–eù +() + +73  <<< +EOT + + +74 ià({ +$this +-> + `g‘TabË +()-> + `g‘PhpName +()} +P“r +:: + `isSoáD–‘eEÇbËd +()) { + +75 \ +$ü™”Ÿ +-> + `add +({ +$this +-> + `g‘CÞumnFÜP¬am‘” +('d–‘ed_cÞumn')-> + `g‘CÚ¡ªtName +()}, +nuÎ +, +Cr™”Ÿ +:: +ISNULL +); + +77 { +$this +-> + `g‘TabË +()-> + `g‘PhpName +()} +P“r +:: + `’abËSoáD–‘e +(); + +79 +EOT +; + +80 + } +} + +82 +public + +funùiÚ + + $objeùM‘hods +() + +84  <<< +EOT + + +89 +public + +funùiÚ + + `fÜûD–‘e +( +PrݖPDO + \ +$cÚ + = +nuÎ +) + +91 { +$this +-> + `g‘TabË +()-> + `g‘PhpName +()} +P“r +:: + `di§bËSoáD–‘e +(); + +92 \ +$this +-> + `d–‘e +(\ +$cÚ +); + +100 +public + +funùiÚ + + `unD–‘e +( +PrݖPDO + \ +$cÚ + = +nuÎ +) + +102 \ +$this +->{$this-> + `g‘CÞumnS‘‹r +()}( +nuÎ +); + +103  \ +$this +-> + `§ve +(\ +$cÚ +); + +105 +EOT +; + +106 + } +} + +108 +public + +funùiÚ + + $¡©icA‰ribu‹s +() + +112 + } +} + +114 +public + +funùiÚ + + $¡©icM‘hods +() + +116 +$süt + = " + +121 +public +  +funùiÚ + + `’abËSoáD–‘e +() + +123 +£lf +::\ +$soáD–‘e + = +Œue +; + +129 +public +  +funùiÚ + + `di§bËSoáD–‘e +() + +131 +£lf +::\ +$soáD–‘e + = +çl£ +; + +138 +public +  +funùiÚ + + `isSoáD–‘eEÇbËd +() + +140  +£lf +::\ +$soáD–‘e +; + +144 +$süt + .= " + +155 +public +  +funùiÚ + + `doSoáD–‘e +(\ +$v®ues +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +157 ià(\ +$v®ues + +š¡ªûof + +Cr™”Ÿ +) { + +159 \ +$ü™”Ÿ + = +þÚe + \ +$v®ues +; + +160 } + `–£if + (\ +$v®ues + +š¡ªûof + { +$this +-> + `g‘TabË +()-> + `g‘PhpName +()}) { + +162 \ +$ü™”Ÿ + = \ +$v®ues +-> + `buždPkeyCr™”Ÿ +(); + +165 \ +$ü™”Ÿ + = +Ãw + + `Cr™”Ÿ +( +£lf +:: +DATABASE_NAME +);"; + +166 +$pks + = +$this +-> + `g‘TabË +()-> + `g‘Prim¬yKey +(); + +167 ià( + `couÁ +( +$pks +)>1) { + +168 +$i + = 0; + +169 + `fܗch + ( +$pks + +as + +$cÞ +) { + +170 +$süt + .= " + +171 \ +$ü™”Ÿ +-> + `add +({ +$cÞ +-> + `g‘CÚ¡ªtName +()}, \ +$v®ues +[ +$i +], +Cr™”Ÿ +:: +EQUAL +);"; + +172 +$i +++; + +175 +$cÞ + = +$pks +[0]; + +176 +$süt + .= " + +177 \ +$ü™”Ÿ +-> + `add +({ +$cÞ +-> + `g‘CÚ¡ªtName +()}, ( +¬¿y +è\ +$v®ues +, +Cr™”Ÿ +:: +IN +);"; + +179 +$süt + .= " + +181 \ +$ü™”Ÿ +-> + `add +({ +$this +-> + `g‘CÞumnFÜP¬am‘” +('d–‘ed_cÞumn')-> + `g‘CÚ¡ªtName +()}, + `time +()); + +182  { +$this +-> + `g‘TabË +()-> + `g‘PhpName +()} +P“r +:: + `doUpd©e +(\ +$ü™”Ÿ +, \ +$cÚ +); + +195 +public +  +funùiÚ + + `doD–‘e2 +(\ +$v®ues +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +197 ià({ +$this +-> + `g‘TabË +()-> + `g‘PhpName +()} +P“r +:: + `isSoáD–‘eEÇbËd +()) { + +198  { +$this +-> + `g‘TabË +()-> + `g‘PhpName +()} +P“r +:: + `doSoáD–‘e +(\ +$v®ues +, \ +$cÚ +); + +200  { +$this +-> + `g‘TabË +()-> + `g‘PhpName +()} +P“r +:: + `doFÜûD–‘e +(\ +$v®ues +, \ +$cÚ +); + +212 +public +  +funùiÚ + + `doSoáD–‘eAÎ +( +PrݖPDO + \ +$cÚ + = +nuÎ +) + +214 ià(\ +$cÚ + ==ð +nuÎ +) { + +215 \ +$cÚ + = +Prݖ +:: + `g‘CÚÃùiÚ +({ +$this +-> + `g‘TabË +()-> + `g‘PhpName +()} +P“r +:: +DATABASE_NAME +, Prݖ:: +CONNECTION_WRITE +); + +217 \ +$£ËùCr™”Ÿ + = +Ãw + + `Cr™”Ÿ +(); + +218 \ +$£ËùCr™”Ÿ +-> + `add +({ +$this +-> + `g‘CÞumnFÜP¬am‘” +('d–‘ed_cÞumn')-> + `g‘CÚ¡ªtName +()}, +nuÎ +, +Cr™”Ÿ +:: +ISNULL +); + +219 \ +$£ËùCr™”Ÿ +-> + `£tDbName +({ +$this +-> + `g‘TabË +()-> + `g‘PhpName +()} +P“r +:: +DATABASE_NAME +); + +220 \ +$modifyCr™”Ÿ + = +Ãw + + `Cr™”Ÿ +(); + +221 \ +$modifyCr™”Ÿ +-> + `add +({ +$this +-> + `g‘CÞumnFÜP¬am‘” +('d–‘ed_cÞumn')-> + `g‘CÚ¡ªtName +()}, + `time +()); + +222  +Ba£P“r +:: + `doUpd©e +(\ +$£ËùCr™”Ÿ +, \ +$modifyCr™”Ÿ +, \ +$cÚ +); + +233 +public +  +funùiÚ + + `doD–‘eAÎ2 +( +PrݖPDO + \ +$cÚ + = +nuÎ +) + +235 ià({ +$this +-> + `g‘TabË +()-> + `g‘PhpName +()} +P“r +:: + `isSoáD–‘eEÇbËd +()) { + +236  { +$this +-> + `g‘TabË +()-> + `g‘PhpName +()} +P“r +:: + `doSoáD–‘eAÎ +(\ +$cÚ +); + +238  { +$this +-> + `g‘TabË +()-> + `g‘PhpName +()} +P“r +:: + `doFÜûD–‘eAÎ +(\ +$cÚ +); + +242  +$süt +; + +243 + } +} + +245 +public + +funùiÚ + + $³”Fž‹r +(& +$süt +) + +247 +$süt + = + `¡r_»¶aû +( + `¬¿y +( + +252 ), + `¬¿y +( + +257 ), +$süt +); + +258 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/TimestampableBehavior.php + +1 + `g‘P¬am‘” +('add_columns') == 'true') + +47 +$this +-> + `g‘TabË +()-> + `addCÞumn +( + `¬¿y +( + +48 'Çme' => +$this +-> + `g‘P¬am‘” +('create_column'), + +51 +$this +-> + `g‘TabË +()-> + `addCÞumn +( + `¬¿y +( + +52 'Çme' => +$this +-> + `g‘P¬am‘” +('update_column'), + +64 +´Ùeùed + +funùiÚ + + $g‘CÞumnS‘‹r +( +$cÞumn +) + +66  '£t' . +$this +-> + `g‘CÞumnFÜP¬am‘” +( +$cÞumn +)-> + `g‘PhpName +(); + +67 + } +} + +74 +public + +funùiÚ + + $´eSave +() + +76  "\$this->" . +$this +-> + `g‘CÞumnS‘‹r +('update_column') . "(time());"; + +77 + } +} + +84 +public + +funùiÚ + + $´eIn£¹ +() + +86  "\$this->" . +$this +-> + `g‘CÞumnS‘‹r +('create_column') . "(time());"; + +87 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/DataModelBuilder.php + +1 +bË + = +$bË +; + +163 +public + +funùiÚ + + $g‘P“rBužd” +() + +165 ià(! + `is£t +( +$this +-> +³”Bužd” +)) { + +166 +$this +-> +³”Bužd” + = $this-> + `g‘G’”©ÜCÚfig +()-> + `g‘CÚfigu»dBužd” +($this-> + `g‘TabË +(), 'peer'); + +168  +$this +-> +³”Bužd” +; + +169 + } +} + +175 +public + +funùiÚ + + $g‘Plu¿liz” +() + +177 ià(! + `is£t +( +$this +-> +¶u¿liz” +)) { + +178 +$this +-> +¶u¿liz” + = $this-> + `g‘G’”©ÜCÚfig +()-> + `g‘CÚfigu»dPlu¿liz” +(); + +180  +$this +-> +¶u¿liz” +; + +181 + } +} + +187 +public + +funùiÚ + + $g‘StubP“rBužd” +() + +189 ià(! + `is£t +( +$this +-> +¡ubP“rBužd” +)) { + +190 +$this +-> +¡ubP“rBužd” + = $this-> + `g‘G’”©ÜCÚfig +()-> + `g‘CÚfigu»dBužd” +($this-> + `g‘TabË +(), 'peerstub'); + +192  +$this +-> +¡ubP“rBužd” +; + +193 + } +} + +199 +public + +funùiÚ + + $g‘ObjeùBužd” +() + +201 ià(! + `is£t +( +$this +-> +objeùBužd” +)) { + +202 +$this +-> +objeùBužd” + = $this-> + `g‘G’”©ÜCÚfig +()-> + `g‘CÚfigu»dBužd” +($this-> + `g‘TabË +(), 'object'); + +204  +$this +-> +objeùBužd” +; + +205 + } +} + +211 +public + +funùiÚ + + $g‘StubObjeùBužd” +() + +213 ià(! + `is£t +( +$this +-> +¡ubObjeùBužd” +)) { + +214 +$this +-> +¡ubObjeùBužd” + = $this-> + `g‘G’”©ÜCÚfig +()-> + `g‘CÚfigu»dBužd” +($this-> + `g‘TabË +(), 'objectstub'); + +216  +$this +-> +¡ubObjeùBužd” +; + +217 + } +} + +223 +public + +funùiÚ + + $g‘IÁ”çûBužd” +() + +225 ià(! + `is£t +( +$this +-> +š‹rçûBužd” +)) { + +226 +$this +-> +š‹rçûBužd” + = $this-> + `g‘G’”©ÜCÚfig +()-> + `g‘CÚfigu»dBužd” +($this-> + `g‘TabË +(), 'interface'); + +228  +$this +-> +š‹rçûBužd” +; + +229 + } +} + +235 +public + +funùiÚ + + $g‘MuÉiEx‹ndObjeùBužd” +() + +237 ià(! + `is£t +( +$this +-> +muÉiEx‹ndObjeùBužd” +)) { + +238 +$this +-> +muÉiEx‹ndObjeùBužd” + = $this-> + `g‘G’”©ÜCÚfig +()-> + `g‘CÚfigu»dBužd” +($this-> + `g‘TabË +(), 'objectmultiextend'); + +240  +$this +-> +muÉiEx‹ndObjeùBužd” +; + +241 + } +} + +247 +public + +funùiÚ + + $g‘NodeBužd” +() + +249 ià(! + `is£t +( +$this +-> +nodeBužd” +)) { + +250 +$this +-> +nodeBužd” + = $this-> + `g‘G’”©ÜCÚfig +()-> + `g‘CÚfigu»dBužd” +($this-> + `g‘TabË +(), 'node'); + +252  +$this +-> +nodeBužd” +; + +253 + } +} + +259 +public + +funùiÚ + + $g‘NodeP“rBužd” +() + +261 ià(! + `is£t +( +$this +-> +nodeP“rBužd” +)) { + +262 +$this +-> +nodeP“rBužd” + = $this-> + `g‘G’”©ÜCÚfig +()-> + `g‘CÚfigu»dBužd” +($this-> + `g‘TabË +(), 'nodepeer'); + +264  +$this +-> +nodeP“rBužd” +; + +265 + } +} + +271 +public + +funùiÚ + + $g‘StubNodeBužd” +() + +273 ià(! + `is£t +( +$this +-> +¡ubNodeBužd” +)) { + +274 +$this +-> +¡ubNodeBužd” + = $this-> + `g‘G’”©ÜCÚfig +()-> + `g‘CÚfigu»dBužd” +($this-> + `g‘TabË +(), 'nodestub'); + +276  +$this +-> +¡ubNodeBužd” +; + +277 + } +} + +283 +public + +funùiÚ + + $g‘StubNodeP“rBužd” +() + +285 ià(! + `is£t +( +$this +-> +¡ubNodeP“rBužd” +)) { + +286 +$this +-> +¡ubNodeP“rBužd” + = $this-> + `g‘G’”©ÜCÚfig +()-> + `g‘CÚfigu»dBužd” +($this-> + `g‘TabË +(), 'nodepeerstub'); + +288  +$this +-> +¡ubNodeP“rBužd” +; + +289 + } +} + +295 +public + +funùiÚ + + $g‘Ne¡edS‘Bužd” +() + +297 ià(! + `is£t +( +$this +-> +áedS‘Bužd” +)) { + +298 +$this +-> +áedS‘Bužd” + = $this-> + `g‘G’”©ÜCÚfig +()-> + `g‘CÚfigu»dBužd” +($this-> + `g‘TabË +(), 'nestedset'); + +300  +$this +-> +áedS‘Bužd” +; + +301 + } +} + +307 +public + +funùiÚ + + $g‘Ne¡edS‘P“rBužd” +() + +309 ià(! + `is£t +( +$this +-> +áedS‘P“rBužd” +)) { + +310 +$this +-> +áedS‘P“rBužd” + = $this-> + `g‘G’”©ÜCÚfig +()-> + `g‘CÚfigu»dBužd” +($this-> + `g‘TabË +(), 'nestedsetpeer'); + +312  +$this +-> +áedS‘P“rBužd” +; + +313 + } +} + +319 +public + +funùiÚ + + $g‘DDLBužd” +() + +321 ià(! + `is£t +( +$this +-> +ddlBužd” +)) { + +322 +$this +-> +ddlBužd” + = $this-> + `g‘G’”©ÜCÚfig +()-> + `g‘CÚfigu»dBužd” +($this-> + `g‘TabË +(), 'ddl'); + +324  +$this +-> +ddlBužd” +; + +325 + } +} + +331 +public + +funùiÚ + + $g‘D©aSQLBužd” +() + +333 ià(! + `is£t +( +$this +-> +d©aSqlBužd” +)) { + +334 +$this +-> +d©aSqlBužd” + = $this-> + `g‘G’”©ÜCÚfig +()-> + `g‘CÚfigu»dBužd” +($this-> + `g‘TabË +(), 'datasql'); + +336  +$this +-> +d©aSqlBužd” +; + +337 + } +} + +348 +public + +funùiÚ + + $g‘NewP“rBužd” +( +TabË + +$bË +) + +350  +$this +-> + `g‘G’”©ÜCÚfig +()-> + `g‘CÚfigu»dBužd” +( +$bË +, 'peer'); + +351 + } +} + +362 +public + +funùiÚ + + $g‘NewObjeùBužd” +( +TabË + +$bË +) + +364  +$this +-> + `g‘G’”©ÜCÚfig +()-> + `g‘CÚfigu»dBužd” +( +$bË +, 'object'); + +365 + } +} + +372 +public + +funùiÚ + + $g‘G’”©ÜCÚfig +() + +374  +$this +-> +g’”©ÜCÚfig +; + +375 + } +} + +383 +public + +funùiÚ + + $g‘BuždPrݔty +( +$Çme +) + +385 ià( +$this +-> + `g‘G’”©ÜCÚfig +()) { + +386  +$this +-> + `g‘G’”©ÜCÚfig +()-> + `g‘BuždPrݔty +( +$Çme +); + +388  +nuÎ +; + +389 + } +} + +396 +public + +funùiÚ + + $£tG’”©ÜCÚfig +( +G’”©ÜCÚfig + +$v +) + +398 +$this +-> +g’”©ÜCÚfig + = +$v +; + +399 + } +} + +405 +public + +funùiÚ + + $£tTabË +( +TabË + +$bË +) + +407 +$this +-> +bË + = +$bË +; + +408 + } +} + +414 +public + +funùiÚ + + $g‘TabË +() + +416  +$this +-> +bË +; + +417 + } +} + +423 +public + +funùiÚ + + $g‘PÏtfÜm +() + +425 ià( +$this +-> + `g‘TabË +(è&& $this->g‘TabË()-> + `g‘D©aba£ +()) { + +426  +$this +-> + `g‘TabË +()-> + `g‘D©aba£ +()-> + `g‘PÏtfÜm +(); + +428 + } +} + +434 +public + +funùiÚ + + $g‘D©aba£ +() + +436 ià( +$this +-> + `g‘TabË +()) { + +437  +$this +-> + `g‘TabË +()-> + `g‘D©aba£ +(); + +439 + } +} + +445 +´Ùeùed + +funùiÚ + + $w¬n +( +$msg +) + +447 +$this +-> +w¬nšgs +[] = +$msg +; + +448 + } +} + +454 +public + +funùiÚ + + $g‘W¬nšgs +() + +456  +$this +-> +w¬nšgs +; + +457 + } +} + +469 +public + +funùiÚ + + $quÙeId’tif›r +( +$‹xt +) + +471 ià(! +$this +-> + `g‘BuždPrݔty +('disableIdentifierQuoting')) { + +472  +$this +-> + `g‘PÏtfÜm +()-> + `quÙeId’tif›r +( +$‹xt +); + +474  +$‹xt +; + +475 + } +} + +482 +public + +funùiÚ + + $´efixCÏs¢ame +( +$id’tif›r +) + +484  +$this +-> + `g‘BuždPrݔty +('þassP»fix'è. +$id’tif›r +; + +485 + } +} + +491 +public + +funùiÚ + + $´efixTabËÇme +( +$id’tif›r +) + +493  +$this +-> + `g‘BuždPrݔty +('bËP»fix'è. +$id’tif›r +; + +494 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/ClassTools.php + +1 + `g‘Ba£P“r +(); + +79 ià( +$þass + ==ð +nuÎ +) { + +80 +$þass + = "propel.util.BasePeer"; + +82  +$þass +; + +83 + } +} + +90 +public +  +funùiÚ + + $g‘Ba£CÏss +( +TabË + +$bË +) { + +91 +$þass + = +$bË +-> + `g‘Ba£CÏss +(); + +92 ià( +$þass + ==ð +nuÎ +) { + +93 +$þass + = "propel.om.BaseObject"; + +95  +$þass +; + +96 + } +} + +103 +public +  +funùiÚ + + $g‘IÁ”çû +( +TabË + +$bË +) { + +104 +$š‹rçû + = +$bË +-> + `g‘IÁ”çû +(); + +105 ià( +$š‹rçû + ==ð +nuÎ + && ! +$bË +-> + `isR—dOÆy +()) { + +106 +$š‹rçû + = "propel.om.Persistent"; + +108  +$š‹rçû +; + +109 + } +} + +116 +public +  +funùiÚ + + $g‘PhpRe£rvedWÜds +() + +118  + `¬¿y +( + +130 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/OMBuilder.php + +1 + `v®id©eMod– +(); + +51 +$süt + = "<" . "?php\n"; + +52 ià( +$this +-> + `isAddInþudes +()) { + +53 +$this +-> + `addInþudes +( +$süt +); + +55 +$this +-> + `addCÏssO³n +( +$süt +); + +56 +$this +-> + `addCÏssBody +( +$süt +); + +57 +$this +-> + `addCÏssClo£ +( +$süt +); + +58  +$süt +; + +69 +´Ùeùed + +funùiÚ + + $v®id©eMod– +() + +72 + } +} + +80 +public + +funùiÚ + + $buždObjeùIn¡ªûC»©iÚCode +( +$objName +, +$þsName +) + +83 + } +} + +90 +ab¡¿ù + +public + +funùiÚ + +g‘UÅ»fixedCÏs¢ame +(); + +97 +public + +funùiÚ + + $g‘CÏs¢ame +() + +99  +$this +-> + `´efixCÏs¢ame +($this-> + `g‘UÅ»fixedCÏs¢ame +()); + +100 + } +} + +105 +public + +funùiÚ + + $g‘CÏs¥©h +() + +107 ià( +$this +-> + `g‘Package +()) { + +108 +$·th + = +$this +-> + `g‘Package +(è. '.' . $this-> + `g‘CÏs¢ame +(); + +110 +$·th + = +$this +-> + `g‘CÏs¢ame +(); + +112  +$·th +; + +113 + } +} + +119 +public + +funùiÚ + + $g‘CÏssFžeP©h +() + +121  +CÏssToÞs +:: + `g‘FžeP©h +( +$this +-> + `g‘Package +(), $this-> + `g‘CÏs¢ame +()); + +122 + } +} + +129 +public + +funùiÚ + + $g‘Package +() + +131 +$pkg + = ( +$this +-> + `g‘TabË +()-> + `g‘Package +(è? $this->g‘TabË()->g‘Package(è: $this-> + `g‘D©aba£ +()->getPackage()); + +132 ià(! +$pkg +) { + +133 +$pkg + = +$this +-> + `g‘BuždPrݔty +('targetPackage'); + +135  +$pkg +; + +136 + } +} + +142 +public + +funùiÚ + + $g‘PackageP©h +() + +144  + `¡¹r +( +$this +-> + `g‘Package +(), '.', '/'); + +145 + } +} + +154 +public + +funùiÚ + + $g‘P“rCÏs¢ame +() { + +155  +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +156 + } +} + +165 +public + +funùiÚ + + $g‘ObjeùCÏs¢ame +() { + +166  +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +167 + } +} + +177 +public + +funùiÚ + + $g‘CÞumnCÚ¡ªt +( +$cÞ +, +$þas¢ame + = +nuÎ +) + +179 ià( +$cÞ + ==ð +nuÎ +) { + +180 +$e + = +Ãw + + `Exû±iÚ +("No col specified."); + +181 +´št + +$e +; + +182 +throw + +$e +; + +184 ià( +$þas¢ame + ==ð +nuÎ +) { + +185  +$this +-> + `g‘BuždPrݔty +('þassP»fix'è. +$cÞ +-> + `g‘CÚ¡ªtName +(); + +188 ià( +$cÞ +-> + `g‘P“rName +()) { + +189 +$cÚ¡ + = + `¡¹ouµ” +( +$cÞ +-> + `g‘P“rName +()); + +191 +$cÚ¡ + = + `¡¹ouµ” +( +$cÞ +-> + `g‘Name +()); + +193  +$þas¢ame +.'::'. +$cÚ¡ +; + +194 + } +} + +201 +public + +funùiÚ + + $g‘Ba£P“r +( +TabË + +$bË +) { + +202 +$þass + = +$bË +-> + `g‘Ba£P“r +(); + +203 ià( +$þass + ==ð +nuÎ +) { + +204 +$þass + = "propel.util.BasePeer"; + +206  +$þass +; + +207 + } +} + +213 +´Ùeùed + +funùiÚ + + $g‘FÜeignTabË +( +FÜeignKey + +$fk +) + +215  +$this +-> + `g‘TabË +()-> + `g‘D©aba£ +()->g‘TabË( +$fk +-> + `g‘FÜeignTabËName +()); + +216 + } +} + +228 +public + +funùiÚ + + $g‘FKPhpNameAffix +( +FÜeignKey + +$fk +, +$¶u¿l + = +çl£ +) + +230 ià( +$fk +-> + `g‘PhpName +()) { + +231 ià( +$¶u¿l +) { + +232  +$this +-> + `g‘Plu¿liz” +()-> + `g‘Plu¿lFÜm +( +$fk +-> + `g‘PhpName +()); + +234  +$fk +-> + `g‘PhpName +(); + +237 +$þassName + = +$this +-> + `g‘FÜeignTabË +( +$fk +)-> + `g‘PhpName +(); + +238 ià( +$¶u¿l +) { + +239 +$þassName + = +$this +-> + `g‘Plu¿liz” +()-> + `g‘Plu¿lFÜm +($className); + +241  +$þassName + . +$this +-> + `g‘R–©edBySuffix +( +$fk +, +Œue +); + +243 + } +} + +255 +public + +funùiÚ + + $g‘RefFKPhpNameAffix +( +FÜeignKey + +$fk +, +$¶u¿l + = +çl£ +) + +257 ià( +$fk +-> + `g‘RefPhpName +()) { + +258 ià( +$¶u¿l +) { + +259  +$this +-> + `g‘Plu¿liz” +()-> + `g‘Plu¿lFÜm +( +$fk +-> + `g‘RefPhpName +()); + +261  +$fk +-> + `g‘RefPhpName +(); + +264 +$þassName + = +$fk +-> + `g‘TabË +()-> + `g‘PhpName +(); + +265 ià( +$¶u¿l +) { + +266 +$þassName + = +$this +-> + `g‘Plu¿liz” +()-> + `g‘Plu¿lFÜm +($className); + +268  +$þassName + . +$this +-> + `g‘R–©edBySuffix +( +$fk +); + +270 + } +} + +281 +´Ùeùed + +funùiÚ + + $g‘R–©edBySuffix +( +FÜeignKey + +$fk +, +$cÞumnCheck + = +çl£ +) + +283 +$»lCÞ + = ""; + +284 + `fܗch + ( +$fk +-> + `g‘LoÿlCÞumns +(è +as + +$cÞumnName +) { + +285 +$cÞumn + = +$fk +-> + `g‘TabË +()-> + `g‘CÞumn +( +$cÞumnName +); + +286 ià(! +$cÞumn +) { + +287 +throw + +Ãw + + `Exû±iÚ +("Could‚Ù f‘ch cÞumn: $cÞumnNamšabË " . +$fk +-> + `g‘TabË +()-> + `g‘Name +()); + +290 iàÐ + `couÁ +( +$cÞumn +-> + `g‘TabË +()-> + `g‘FÜeignKeysReã»ncšgTabË +( +$fk +-> + `g‘FÜeignTabËName +())) > 1 + +291 || +$fk +-> + `g‘FÜeignTabËName +(è=ð$fk-> + `g‘TabË +()-> + `g‘Name +()) { + +296 +$»lCÞ + .ð +$cÞumn +-> + `g‘PhpName +(); + +300 #v¬_dump( +$fk +-> + `g‘FÜeignTabËName +(è. ' - ' .$fk-> + `g‘TabËName +(è. ' - ' . +$this +-> + `g‘TabË +()-> + `g‘Name +()); + +302 #$fk-> + `g‘FÜeignTabËName +(è!ð +$this +-> + `g‘TabË +()-> + `g‘Name +() && + +304 ià( +$cÞumnCheck + && ! +$»lCÞ + && +$fk +-> + `g‘TabË +()-> + `g‘CÞumn +($fk-> + `g‘FÜeignTabËName +())) { + +305 + `fܗch + ( +$fk +-> + `g‘LoÿlCÞumns +(è +as + +$cÞumnName +) { + +306 +$cÞumn + = +$fk +-> + `g‘TabË +()-> + `g‘CÞumn +( +$cÞumnName +); + +307 +$»lCÞ + .ð +$cÞumn +-> + `g‘PhpName +(); + +312 ià( +$»lCÞ + != "") { + +313 +$»lCÞ + = "RelatedBy" . $relCol; + +316  +$»lCÞ +; + +317 + } +} + +323 +´Ùeùed + +funùiÚ + + $isAddInþudes +() + +325  +$this +-> + `g‘BuždPrݔty +('addIncludes'); + +326 + } +} + +334 +public + +funùiÚ + + $hasBehaviÜModif›r +( +$hookName +, +$modif›r +) + +336 +$modif›rG‘‹r + = 'g‘' . +$modif›r +; + +337 + `fܗch + ( +$this +-> + `g‘TabË +()-> + `g‘BehaviÜs +(è +as + +$behaviÜ +) { + +338 if( + `m‘hod_exi¡s +( +$behaviÜ +-> + `$modif›rG‘‹r +(), +$hookName +)) { + +339  +Œue +; + +342  +çl£ +; + +343 + } +} + +351 +public + +funùiÚ + +­¶yBehaviÜModif›r +( +$hookName +, +$modif›r +, & +$süt +, +$b + = " ") + +353 +$modif›rG‘‹r + = 'g‘' . +$modif›r +; + +354 +fܗch + ( +$this +-> +g‘TabË +()-> +g‘BehaviÜs +(è +as + +$behaviÜ +) { + +355 + g$modif›r + = +$behaviÜ +-> +$modif›rG‘‹r +(); + +356 if( +m‘hod_exi¡s +( +$modif›r +, +$hookName +)) { + +357 ià( +¡½os +( +$hookName +, 'Fž‹r'è!=ð +çl£ +) { + +359 +$modif›r +-> +$hookName +( +$süt +); + +362 + g$süt + .ð"\n" . +$b + . '// ' . +$behaviÜ +-> +g‘Name +() . " behavior\n"; + +363 + g$süt + .ð +´eg_»¶aû +('/^/m', +$b +, +$modif›r +-> +$hookName +()); + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/ObjectBuilder.php + +1 + `g‘TabË +(); + +67 + `fܗch + ( +$bË +-> + `g‘CÞumns +(è +as + +$cÞ +) { + +70 ià( +$cÞ +-> + `g‘Ty³ +(è==ð +PrݖTy³s +:: +DATE + || $cÞ->g‘Ty³(è==ðPrݖTy³s:: +TIME + || $cÞ->g‘Ty³(è==ðPrݖTy³s:: +TIMESTAMP +) { + +71 +$this +-> + `addTempÜ®AcûssÜ +( +$süt +, +$cÞ +); + +73 +$this +-> + `addDeçuÉAcûssÜ +( +$süt +, +$cÞ +); + +76 ià( +$cÞ +-> + `isLazyLßd +()) { + +77 +$this +-> + `addLazyLßd” +( +$süt +, +$cÞ +); + +80 + } +} + +88 +´Ùeùed + +funùiÚ + + $addCÞumnMutÜM‘hods +(& +$süt +) + +90 + `fܗch + ( +$this +-> + `g‘TabË +()-> + `g‘CÞumns +(è +as + +$cÞ +) { + +92 ià( +$cÞ +-> + `isLobTy³ +()) { + +93 +$this +-> + `addLobMutÜ +( +$süt +, +$cÞ +); + +94 } + `–£if + ( +$cÞ +-> + `g‘Ty³ +(è==ð +PrݖTy³s +:: +DATE + || $cÞ->g‘Ty³(è==ðPrݖTy³s:: +TIME + || $cÞ->g‘Ty³(è==ðPrݖTy³s:: +TIMESTAMP +) { + +95 +$this +-> + `addTempÜ®MutÜ +( +$süt +, +$cÞ +); + +97 +$this +-> + `addDeçuÉMutÜ +( +$süt +, +$cÞ +); + +100 + } +} + +108 +´Ùeùed + +funùiÚ + + $g‘Ba£CÏss +() { + +109 +$þass + = +$this +-> + `g‘TabË +()-> + `g‘Ba£CÏss +(); + +110 ià( +$þass + ==ð +nuÎ +) { + +111 +$þass + = "propel.om.BaseObject"; + +113  +$þass +; + +114 + } +} + +121 +´Ùeùed + +funùiÚ + + $g‘IÁ”çû +() { + +122 +$š‹rçû + = +$this +-> + `g‘TabË +()-> + `g‘IÁ”çû +(); + +123 ià( +$š‹rçû + ==ð +nuÎ + && ! +$this +-> + `g‘TabË +()-> + `isR—dOÆy +()) { + +124 +$š‹rçû + = "propel.om.Persistent"; + +126  +$š‹rçû +; + +127 + } +} + +134 +´Ùeùed + +funùiÚ + + $isAddG’”icMutÜs +() + +136 +$bË + = +$this +-> + `g‘TabË +(); + +137  (! +$bË +-> + `isAlŸs +(è&& +$this +-> + `g‘BuždPrݔty +('addG’”icMutÜs'è&& !$bË-> + `isR—dOÆy +()); + +138 + } +} + +145 +´Ùeùed + +funùiÚ + + $isAddG’”icAcûssÜs +() + +147 +$bË + = +$this +-> + `g‘TabË +(); + +148  (! +$bË +-> + `isAlŸs +(è&& +$this +-> + `g‘BuždPrݔty +('addGenericAccessors')); + +149 + } +} + +155 +´Ùeùed + +funùiÚ + + $isAddV®id©eM‘hod +() + +157  +$this +-> + `g‘BuždPrݔty +('addValidateMethod'); + +158 + } +} + +160 +´Ùeùed + +funùiÚ + + $hasDeçuÉV®ues +() + +162 + `fܗch + ( +$this +-> + `g‘TabË +()-> + `g‘CÞumns +(è +as + +$cÞ +) { + +163 if( +$cÞ +-> + `g‘DeçuÉV®ue +(è!=ð +nuÎ +è +Œue +; + +165  +çl£ +; + +166 + } +} + +173 +public + +funùiÚ + + $hasBehaviÜModif›r +( +$hookName +) + +175  +·»Á +:: + `hasBehaviÜModif›r +( +$hookName +, 'ObjectBuilderModifier'); + +176 + } +} + +183 +public + +funùiÚ + +­¶yBehaviÜModif›r +( +$hookName +, & +$süt +, +$b + = " ") + +185  +·»Á +:: +­¶yBehaviÜModif›r +( +$hookName +, 'ObjeùBužd”Modif›r', +$süt +, +$b +); + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/PeerBuilder.php + +1 +ba£P“rCÏs¢ame + = $this-> +ba£P“rCÏss + = $this-> + `g‘Ba£P“r +( +$bË +); + +47 +$pos + = + `¡¼pos +( +$this +-> +ba£P“rCÏs¢ame +, '.'); + +48 ià( +$pos + !=ð +çl£ +) { + +49 +$this +-> +ba£P“rCÏs¢ame + = + `sub¡r +($this->ba£P“rCÏs¢ame, +$pos + + 1); + +57 +´Ùeùed + +funùiÚ + + $addS–eùM‘hods +(& +$süt +) + +59 +$this +-> + `addAddS–eùCÞumns +( +$süt +); + +61 +$this +-> + `addDoCouÁ +( +$süt +); + +65 +$this +-> + `addDoS–eùOà +( +$süt +); + +66 +$this +-> + `addDoS–eù +( +$süt +); + +67 +$this +-> + `addDoS–eùStmt +( +$süt +); + +69 +$this +-> + `addAddIn¡ªûToPoÞ +( +$süt +); + +70 +$this +-> + `addRemoveIn¡ªûFromPoÞ +( +$süt +); + +71 +$this +-> + `addG‘In¡ªûFromPoÞ +( +$süt +); + +72 +$this +-> + `addCˬIn¡ªûPoÞ +( +$süt +); + +73 +$this +-> + `addCˬR–©edIn¡ªûPoÞ +( +$süt +); + +75 +$this +-> + `addG‘Prim¬yKeyHash +( +$süt +); + +76 +$this +-> + `addPÝuϋObjeùs +( +$süt +); + +78 + } +} + +84 +´Ùeùed + +funùiÚ + + $addG‘OMCÏssM‘hod +(& +$süt +) + +86 +$bË + = +$this +-> + `g‘TabË +(); + +87 ià( +$bË +-> + `g‘Chžd»nCÞumn +()) { + +88 ià( +$bË +-> + `isAb¡¿ù +()) { + +89 +$this +-> + `addG‘OMCÏss_Inh”™ªû_Ab¡¿ù +( +$süt +); + +91 +$this +-> + `addG‘OMCÏss_Inh”™ªû +( +$süt +); + +94 ià( +$bË +-> + `isAb¡¿ù +()) { + +95 +$this +-> + `addG‘OMCÏss_NoInh”™ªû_Ab¡¿ù +( +$süt +); + +97 +$this +-> + `addG‘OMCÏss_NoInh”™ªû +( +$süt +); + +100 + } +} + +106 +´Ùeùed + +funùiÚ + + $addUpd©eM‘hods +(& +$süt +) + +108 +$this +-> + `addDoIn£¹ +( +$süt +); + +109 +$this +-> + `addDoUpd©e +( +$süt +); + +110 +$this +-> + `addDoD–‘eAÎ +( +$süt +); + +111 +$this +-> + `addDoD–‘e +( +$süt +); + +112 ià( +$this +-> + `isD–‘eCasÿdeEmuÏtiÚN“ded +()) { + +113 +$this +-> + `addDoOnD–‘eCasÿde +( +$süt +); + +115 ià( +$this +-> + `isD–‘eS‘NuÎEmuÏtiÚN“ded +()) { + +116 +$this +-> + `addDoOnD–‘eS‘NuÎ +( +$süt +); + +118 +$this +-> + `addDoV®id©e +( +$süt +); + +119 + } +} + +125 +´Ùeùed + +funùiÚ + + $addR‘r›veByPKM‘hods +(& +$süt +) + +127 ià( + `couÁ +( +$this +-> + `g‘TabË +()-> + `g‘Prim¬yKey +()) === 1) { + +128 +$this +-> + `addR‘r›veByPK_SšgËPK +( +$süt +); + +129 +$this +-> + `addR‘r›veByPKs_SšgËPK +( +$süt +); + +131 +$this +-> + `addR‘r›veByPK_MuÉiPK +( +$süt +); + +133 + } +} + +146 +´Ùeùed + +funùiÚ + + $addCÏssBody +(& +$süt +) + +149 +$bË + = +$this +-> + `g‘TabË +(); + +151 ià(! +$bË +-> + `isAlŸs +()) { + +152 +$this +-> + `addCÚ¡ªtsAndA‰ribu‹s +( +$süt +); + +155 +$this +-> + `addT¿n¦©eF›ldName +( +$süt +); + +156 +$this +-> + `addG‘F›ldNames +( +$süt +); + +158 ià(! +$bË +-> + `isAlŸs +()) { + +159 +$this +-> + `addAlŸs +( +$süt +); + +160 +$this +-> + `addS–eùM‘hods +( +$süt +); + +161 +$this +-> + `addG‘TabËM­ +( +$süt +); + +164 +$this +-> + `addBuždTabËM­ +( +$süt +); + +166 +$this +-> + `addG‘OMCÏssM‘hod +( +$süt +); + +169 ià(! +$bË +-> + `isAlŸs +(è&& !$bË-> + `isR—dOÆy +()) { + +170 +$this +-> + `addUpd©eM‘hods +( +$süt +); + +173 ià( + `couÁ +( +$bË +-> + `g‘Prim¬yKey +()) > 0) { + +174 +$this +-> + `addR‘r›veByPKM‘hods +( +$süt +); + +176 + } +} + +182 +´Ùeùed + +funùiÚ + + $isD–‘eCasÿdeEmuÏtiÚN“ded +() + +184 +$bË + = +$this +-> + `g‘TabË +(); + +185 ià((! +$this +-> + `g‘PÏtfÜm +()-> + `suµÜtsN©iveD–‘eTrigg” +(è|| $this-> + `g‘BuždPrݔty +('emuϋFÜeignKeyCÚ¡¿šts')è&& + `couÁ +( +$bË +-> + `g‘Re㼔s +()) > 0) { + +186 + `fܗch + ( +$bË +-> + `g‘Re㼔s +(è +as + +$fk +) { + +187 ià( +$fk +-> + `g‘OnD–‘e +(è=ð +FÜeignKey +:: +CASCADE +) { + +188  +Œue +; + +192  +çl£ +; + +193 + } +} + +199 +´Ùeùed + +funùiÚ + + $isD–‘eS‘NuÎEmuÏtiÚN“ded +() + +201 +$bË + = +$this +-> + `g‘TabË +(); + +202 ià((! +$this +-> + `g‘PÏtfÜm +()-> + `suµÜtsN©iveD–‘eTrigg” +(è|| $this-> + `g‘BuždPrݔty +('emuϋFÜeignKeyCÚ¡¿šts')è&& + `couÁ +( +$bË +-> + `g‘Re㼔s +()) > 0) { + +203 + `fܗch + ( +$bË +-> + `g‘Re㼔s +(è +as + +$fk +) { + +204 ià( +$fk +-> + `g‘OnD–‘e +(è=ð +FÜeignKey +:: +SETNULL +) { + +205  +Œue +; + +209  +çl£ +; + +210 + } +} + +218 +´Ùeùed + +funùiÚ + + $isAddG’”icMutÜs +() + +220 +$bË + = +$this +-> + `g‘TabË +(); + +221  (! +$bË +-> + `isAlŸs +(è&& +$this +-> + `g‘BuždPrݔty +('addG’”icMutÜs'è&& !$bË-> + `isR—dOÆy +()); + +222 + } +} + +230 +´Ùeùed + +funùiÚ + + $isAddG’”icAcûssÜs +() + +232 +$bË + = +$this +-> + `g‘TabË +(); + +233  (! +$bË +-> + `isAlŸs +(è&& +$this +-> + `g‘BuždPrݔty +('addGenericAccessors')); + +234 + } +} + +242 +public + +funùiÚ + + $g‘R‘r›veM‘hodName +() + +244 ià( +$this +-> + `g‘TabË +()-> + `isAlŸs +()) { + +245 +$»Œ›veM‘hod + = "»Œ›ve" . +$this +-> + `g‘TabË +()-> + `g‘PhpName +() . "ByPK"; + +247 +$»Œ›veM‘hod + = "retrieveByPK"; + +249  +$»Œ›veM‘hod +; + +250 + } +} + +266 +public +  +funùiÚ + + $g‘CÞumnName +( +CÞumn + +$cÞ +, +$phpName + = +nuÎ +) { + +268 ià( +$cÞ +-> + `g‘P“rName +()) { + +269 +$cÚ¡ + = + `¡¹ouµ” +( +$cÞ +-> + `g‘P“rName +()); + +271 +$cÚ¡ + = + `¡¹ouµ” +( +$cÞ +-> + `g‘Name +()); + +273 ià( +$phpName + !=ð +nuÎ +) { + +274  +$phpName + . 'P“r::' . +$cÚ¡ +; + +276  +$cÚ¡ +; + +278 + } +} + +285 +public + +funùiÚ + + $hasBehaviÜModif›r +( +$hookName +) + +287  +·»Á +:: + `hasBehaviÜModif›r +( +$hookName +, 'PeerBuilderModifier'); + +288 + } +} + +295 +public + +funùiÚ + +­¶yBehaviÜModif›r +( +$hookName +, & +$süt +, +$b + = " ") + +297  +·»Á +:: +­¶yBehaviÜModif›r +( +$hookName +, 'P“rBužd”Modif›r', +$süt +, +$b +); + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5ExtensionNodeBuilder.php + +1 + `g‘TabË +()-> + `g‘PhpName +() . 'Node'; + +52 +´Ùeùed + +funùiÚ + + $addInþudes +(& +$süt +) + +54 +$süt + .= " + +55 +»quœe + '".$this->getNodeBuilder()->getClassFilePath()."'; + +57 + } +} + +63 +´Ùeùed + +funùiÚ + + $addCÏssO³n +(& +$süt +) + +66 +$bË + = +$this +-> + `g‘TabË +(); + +67 +$bËName + = +$bË +-> + `g‘Name +(); + +68 +$bËDesc + = +$bË +-> + `g‘DesütiÚ +(); + +70 +$ba£CÏs¢ame + = +$this +-> + `g‘NodeBužd” +()-> + `g‘CÏs¢ame +(); + +72 +$süt + .= " + +94 +þass + ".$this->g‘CÏs¢ame()." +ex‹nds + +$ba£CÏs¢ame + { + +106 +´Ùeùed + +funùiÚ + + `addCÏssBody +(& +$süt +) + +115 +´Ùeùed + +funùiÚ + + `addCÏssClo£ +(& +$süt +) + +117 +$süt + .= " + +120 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5ExtensionNodePeerBuilder.php + +1 + `g‘StubNodeBužd” +()-> + `g‘CÏs¢ame +() . 'Peer'; + +52 +´Ùeùed + +funùiÚ + + $addInþudes +(& +$süt +) + +54 +$süt + .=" + +55 +»quœe + '".$this->getNodePeerBuilder()->getClassFilePath()."'; + +57 + } +} + +63 +´Ùeùed + +funùiÚ + + $addCÏssO³n +(& +$süt +) + +66 +$bË + = +$this +-> + `g‘TabË +(); + +67 +$bËName + = +$bË +-> + `g‘Name +(); + +68 +$bËDesc + = +$bË +-> + `g‘DesütiÚ +(); + +70 +$ba£CÏs¢ame + = +$this +-> + `g‘NodeP“rBužd” +()-> + `g‘CÏs¢ame +(); + +72 +$süt + .= " + +94 +þass + ".$this->g‘CÏs¢ame()." +ex‹nds + +$ba£CÏs¢ame + { + +107 +´Ùeùed + +funùiÚ + + `addCÏssBody +(& +$süt +) + +116 +´Ùeùed + +funùiÚ + + `addCÏssClo£ +(& +$süt +) + +118 +$süt + .= " + +121 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5ExtensionObjectBuilder.php + +1 + `g‘TabË +()-> + `g‘PhpName +(); + +52 +´Ùeùed + +funùiÚ + + $addInþudes +(& +$süt +) + +54  +$this +-> + `g‘TabË +()-> + `Œ“Mode +()) { + +56 +$»quœedCÏssFžeP©h + = +$this +-> + `g‘Ne¡edS‘Bužd” +()-> + `g‘CÏssFžeP©h +(); + +62 +$»quœedCÏssFžeP©h + = +$this +-> + `g‘ObjeùBužd” +()-> + `g‘CÏssFžeP©h +(); + +66 +$süt + .=" + +67 +»quœe + '".$requiredClassFilePath."'; + +69 + } +} + +75 +´Ùeùed + +funùiÚ + + $addCÏssO³n +(& +$süt +) + +78 +$bË + = +$this +-> + `g‘TabË +(); + +79 +$bËName + = +$bË +-> + `g‘Name +(); + +80 +$bËDesc + = +$bË +-> + `g‘DesütiÚ +(); + +82  +$bË +-> + `Œ“Mode +()) { + +84 +$ba£CÏs¢ame + = +$this +-> + `g‘Ne¡edS‘Bužd” +()-> + `g‘CÏs¢ame +(); + +90 +$ba£CÏs¢ame + = +$this +-> + `g‘ObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +94 +$süt + .= " + +116 ".($bË->isAb¡¿ù(è? " +ab¡¿ù + " : "")." +þass + ".$this->g‘CÏs¢ame()." +ex‹nds + +$ba£CÏs¢ame + { + +128 +´Ùeùed + +funùiÚ + + `addCÏssBody +(& +$süt +) + +130 ià( +$this +-> + `hasDeçuÉV®ues +()) { + +131 +$this +-> + `addCÚ¡ruùÜ +( +$süt +); + +140 +´Ùeùed + +funùiÚ + + `addCÚ¡ruùÜ +(& +$süt +) + +142 +$bË + = +$this +-> + `g‘TabË +(); + +143 +$süt + .= " + +148 +public + +funùiÚ + + `__cÚ¡ruù +() + +152 +·»Á +:: + `__cÚ¡ruù +(); + +161 +´Ùeùed + +funùiÚ + + `addCÏssClo£ +(& +$süt +) + +163 +$süt + .= " + +166 +$this +-> + `­¶yBehaviÜModif›r +('ex‹nsiÚObjeùFž‹r', +$süt +, ""); + +167 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5ExtensionPeerBuilder.php + +1 + `g‘StubObjeùBužd” +()-> + `g‘UÅ»fixedCÏs¢ame +() . 'Peer'; + +52 +´Ùeùed + +funùiÚ + + $addInþudes +(& +$süt +) + +54  +$this +-> + `g‘TabË +()-> + `Œ“Mode +()) { + +56 +$»quœedCÏssFžeP©h + = +$this +-> + `g‘Ne¡edS‘P“rBužd” +()-> + `g‘CÏssFžeP©h +(); + +62 +$»quœedCÏssFžeP©h + = +$this +-> + `g‘P“rBužd” +()-> + `g‘CÏssFžeP©h +(); + +66 +$süt + .=" + +67 +»quœe + '".$requiredClassFilePath."'; + +69 + } +} + +75 +´Ùeùed + +funùiÚ + + $addCÏssO³n +(& +$süt +) + +77 +$bË + = +$this +-> + `g‘TabË +(); + +78 +$bËName + = +$bË +-> + `g‘Name +(); + +79 +$bËDesc + = +$bË +-> + `g‘DesütiÚ +(); + +81  +$bË +-> + `Œ“Mode +()) { + +83 +$ba£CÏs¢ame + = +$this +-> + `g‘Ne¡edS‘P“rBužd” +()-> + `g‘CÏs¢ame +(); + +89 +$ba£CÏs¢ame + = +$this +-> + `g‘P“rBužd” +()-> + `g‘CÏs¢ame +(); + +93 +$süt + .= " + +115 +þass + ".$this->g‘CÏs¢ame()." +ex‹nds + +$ba£CÏs¢ame + { + +128 +´Ùeùed + +funùiÚ + + `addCÏssBody +(& +$süt +) + +137 +´Ùeùed + +funùiÚ + + `addCÏssClo£ +(& +$süt +) + +139 +$süt + .= " + +142 +$this +-> + `­¶yBehaviÜModif›r +('ex‹nsiÚP“rFž‹r', +$süt +, ""); + +143 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5InterfaceBuilder.php + +1 + `g‘IÁ”çû +()); + +52 +´Ùeùed + +funùiÚ + + $addInþudes +(& +$süt +) + +55 + } +} + +61 +´Ùeùed + +funùiÚ + + $addCÏssO³n +(& +$süt +) + +64 +$bË + = +$this +-> + `g‘TabË +(); + +65 +$bËName + = +$bË +-> + `g‘Name +(); + +66 +$bËDesc + = +$bË +-> + `g‘DesütiÚ +(); + +68 +$ba£CÏs¢ame + = +$this +-> + `g‘ObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +70 +$süt + .= " + +91 +š‹rçû + ".$this->getClassname()." { + +103 +´Ùeùed + +funùiÚ + + `addCÏssBody +(& +$süt +) + +112 +´Ùeùed + +funùiÚ + + `addCÏssClo£ +(& +$süt +) + +114 +$süt + .= " + +117 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5MultiExtendObjectBuilder.php + +1 + `g‘Chžd +()-> + `g‘CÏs¢ame +(); + +57 +public + +funùiÚ + + $g‘Package +() + +59  ( +$this +-> +chžd +-> + `g‘Package +(è? $this->chžd->g‘Package(è: +·»Á +::getPackage()); + +60 + } +} + +66 +public + +funùiÚ + + $£tChžd +( +Inh”™ªû + +$chžd +) + +68 +$this +-> +chžd + = +$chžd +; + +69 + } +} + +76 +public + +funùiÚ + + $g‘Chžd +() + +78 ià(! +$this +-> +chžd +) { + +79 +throw + +Ãw + + `BuždExû±iÚ +("The PHP5MultiExtendObjectBuilder‚eedso beold which child classo build (via setChild() method) before it can buildhe stub class."); + +81  +$this +-> +chžd +; + +82 + } +} + +88 +´Ùeùed + +funùiÚ + + $g‘P¬’tCÏs¥©h +() + +90 ià( +$this +-> + `g‘Chžd +()-> + `g‘Anû¡Ü +()) { + +91  +$this +-> + `g‘Chžd +()-> + `g‘Anû¡Ü +(); + +93  +$this +-> + `g‘ObjeùBužd” +()-> + `g‘CÏs¥©h +(); + +95 + } +} + +101 +´Ùeùed + +funùiÚ + + $g‘P¬’tCÏs¢ame +() + +103  +CÏssToÞs +:: + `þas¢ame +( +$this +-> + `g‘P¬’tCÏs¥©h +()); + +104 + } +} + +110 +´Ùeùed + +funùiÚ + + $g‘P¬’tCÏssFžeP©h +() + +112  +CÏssToÞs +:: + `g‘FžeP©h +( +$this +-> + `g‘P¬’tCÏs¥©h +()); + +113 + } +} + +119 +´Ùeùed + +funùiÚ + + $addInþudes +(& +$süt +) + +121 + } +} + +127 +´Ùeùed + +funùiÚ + + $addCÏssO³n +(& +$süt +) + +130 +$bË + = +$this +-> + `g‘TabË +(); + +131 +$bËName + = +$bË +-> + `g‘Name +(); + +132 +$bËDesc + = +$bË +-> + `g‘DesütiÚ +(); + +134 +$ba£CÏs¢ame + = +$this +-> + `g‘ObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +136 +$süt + .= " + +158 +þass + ".$this->g‘CÏs¢ame()." +ex‹nds + ".$this->getParentClassname()." { + +170 +´Ùeùed + +funùiÚ + + `addCÏssBody +(& +$süt +) + +172 +$chžd + = +$this +-> + `g‘Chžd +(); + +173 +$cÞ + = +$chžd +-> + `g‘CÞumn +(); + +174 +$cfc + = +$cÞ +-> + `g‘PhpName +(); + +176 +$cÚ¡ + = "CLASSKEY_". + `¡¹ouµ” +( +$chžd +-> + `g‘Key +()); + +178 +$süt + .= " + +182 +public + +funùiÚ + + `__cÚ¡ruù +() + +184 +$süt + .= " + +185 +·»Á +:: + `__cÚ¡ruù +(); + +186 \ +$this +-> + `£t$cfc +(".$this->g‘P“rCÏs¢ame().":: +CLASSKEY_ +".strtoupper($child->getKey())."); + +195 +´Ùeùed + +funùiÚ + + `addCÏssClo£ +(& +$süt +) + +197 +$süt + .= " + +200 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5NestedSetBuilder.php + +1 + `g‘BuždPrݔty +('ba£P»fix'è. $this-> + `g‘StubObjeùBužd” +()-> + `g‘UÅ»fixedCÏs¢ame +() . 'NestedSet'; + +51 + } +} + +57 +´Ùeùed + +funùiÚ + + $addInþudes +(& +$süt +) + +59 +$süt + .=" + +60 +»quœe + '".$this->getObjectBuilder()->getClassFilePath()."'; + +62 + } +} + +68 +´Ùeùed + +funùiÚ + + $addCÏssO³n +(& +$süt +) + +71 +$bË + = +$this +-> + `g‘TabË +(); + +72 +$bËName + = +$bË +-> + `g‘Name +(); + +73 +$bËDesc + = +$bË +-> + `g‘DesütiÚ +(); + +75 +$süt + .= " + +92 +ab¡¿ù + +þass + ".$this->g‘CÏs¢ame()." +ex‹nds + ".$this->g‘ObjeùBužd”()->g‘CÏs¢ame()." +im¶em’ts + +NodeObjeù + { + +101 +´Ùeùed + +funùiÚ + + `addCÏssBody +(& +$süt +) + +103 +$bË + = +$this +-> + `g‘TabË +(); + +105 +$this +-> + `addA‰ribu‹s +( +$süt +); + +107 +$this +-> + `addG‘I‹¿tÜ +( +$süt +); + +109 +$this +-> + `addSave +( +$süt +); + +110 +$this +-> + `addD–‘e +( +$süt +); + +112 +$this +-> + `addMakeRoÙ +( +$süt +); + +114 +$this +-> + `addG‘Lev– +( +$süt +); + +115 +$this +-> + `addG‘P©h +( +$süt +); + +117 +$this +-> + `addG‘Numb”OfChžd»n +( +$süt +); + +118 +$this +-> + `addG‘Numb”OfDesûndªts +( +$süt +); + +120 +$this +-> + `addG‘Chžd»n +( +$süt +); + +121 +$this +-> + `addG‘Desûndªts +( +$süt +); + +123 +$this +-> + `addS‘Lev– +( +$süt +); + +125 +$this +-> + `addS‘Chžd»n +( +$süt +); + +126 +$this +-> + `addS‘P¬’tNode +( +$süt +); + +127 +$this +-> + `addS‘P»vSiblšg +( +$süt +); + +128 +$this +-> + `addS‘NextSiblšg +( +$süt +); + +130 +$this +-> + `addIsRoÙ +( +$süt +); + +131 +$this +-> + `addIsL—f +( +$süt +); + +132 +$this +-> + `addIsEqu®To +( +$süt +); + +134 +$this +-> + `addHasP¬’t +( +$süt +); + +135 +$this +-> + `addHasChžd»n +( +$süt +); + +136 +$this +-> + `addHasP»vSiblšg +( +$süt +); + +137 +$this +-> + `addHasNextSiblšg +( +$süt +); + +139 +$this +-> + `addR‘r›veP¬’t +( +$süt +); + +140 +$this +-> + `addR‘r›veFœ¡Chžd +( +$süt +); + +141 +$this +-> + `addR‘r›veLa¡Chžd +( +$süt +); + +142 +$this +-> + `addR‘r›veP»vSiblšg +( +$süt +); + +143 +$this +-> + `addR‘r›veNextSiblšg +( +$süt +); + +145 +$this +-> + `addIn£¹AsFœ¡ChždOf +( +$süt +); + +146 +$this +-> + `addIn£¹AsLa¡ChždOf +( +$süt +); + +148 +$this +-> + `addIn£¹AsP»vSiblšgOf +( +$süt +); + +149 +$this +-> + `addIn£¹AsNextSiblšgOf +( +$süt +); + +151 +$this +-> + `addMoveToFœ¡ChždOf +( +$süt +); + +152 +$this +-> + `addMoveToLa¡ChždOf +( +$süt +); + +154 +$this +-> + `addMoveToP»vSiblšgOf +( +$süt +); + +155 +$this +-> + `addMoveToNextSiblšgOf +( +$süt +); + +157 +$this +-> + `addIn£¹AsP¬’tOf +( +$süt +); + +159 +$this +-> + `addG‘Leá +( +$süt +); + +160 +$this +-> + `addG‘Right +( +$süt +); + +161 +$this +-> + `addG‘ScÝeId +( +$süt +); + +163 +$this +-> + `addS‘Leá +( +$süt +); + +164 +$this +-> + `addS‘Right +( +$süt +); + +165 +$this +-> + `addS‘ScÝeId +( +$süt +); + +172 +´Ùeùed + +funùiÚ + + `addCÏssClo£ +(& +$süt +) + +174 +$süt + .= " + +177 + } +} + +184 +´Ùeùed + +funùiÚ + + $addA‰ribu‹s +(& +$süt +) + +186 +$objeùCÏssName + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +187 +$süt + .= " + +192 +´Ùeùed + \ +$Ëv– + = +nuÎ +; + +198 +´Ùeùed + \ +$hasP»vSiblšg + = +nuÎ +; + +204 +´Ùeùed + \ +$´evSiblšg + = +nuÎ +; + +210 +´Ùeùed + \ +$hasNextSiblšg + = +nuÎ +; + +216 +´Ùeùed + \ +$ÃxtSiblšg + = +nuÎ +; + +222 +´Ùeùed + \ +$hasP¬’tNode + = +nuÎ +; + +228 +´Ùeùed + \ +$·»ÁNode + = +nuÎ +; + +234 +´Ùeùed + \ +$_chžd»n + = +nuÎ +; + +236 + } +} + +238 +´Ùeùed + +funùiÚ + + $addG‘I‹¿tÜ +(& +$süt +) + +240 +$süt + .= " + +246 +public + +funùiÚ + + `g‘I‹¿tÜ +() + +248  +Ãw + + `Ne¡edS‘RecursiveI‹¿tÜ +(\ +$this +); + +251 + } +} + +253 +´Ùeùed + +funùiÚ + + $addSave +(& +$süt +) + +255 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +256 +$süt + .= " + +266 +public + +funùiÚ + + `§ve +( +PrݖPDO + \ +$cÚ + = +nuÎ +) + +268 \ +$Ëá + = \ +$this +-> + `g‘LeáV®ue +(); + +269 \ +$right + = \ +$this +-> + `g‘RightV®ue +(); + +270 ià( + `em±y +(\ +$Ëá +è||ƒm±y(\ +$right +)) { + +271 \ +$roÙ + = +$³”CÏs¢ame +:: + `»Œ›veRoÙ +(\ +$this +-> + `g‘ScÝeIdV®ue +(), \ +$cÚ +); + +272 +$³”CÏs¢ame +:: + `š£¹AsLa¡ChždOf +(\ +$this +, \ +$roÙ +, \ +$cÚ +); + +275  +·»Á +:: + `§ve +(\ +$cÚ +); + +278 + } +} + +280 +´Ùeùed + +funùiÚ + + $addD–‘e +(& +$süt +) + +282 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +283 +$süt + .= " + +291 +public + +funùiÚ + + `d–‘e +( +PrݖPDO + \ +$cÚ + = +nuÎ +) + +294 +·»Á +:: + `d–‘e +(\ +$cÚ +); + +297 +$³”CÏs¢ame +:: + `d–‘eDesûndªts +(\ +$this +, \ +$cÚ +); + +300 + } +} + +302 +´Ùeùed + +funùiÚ + + $addMakeRoÙ +(& +$süt +) + +304 +$objeùCÏssName + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +305 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +306 +$süt + .= " + +313 +public + +funùiÚ + + `makeRoÙ +() + +315 +$³”CÏs¢ame +:: + `ü—‹RoÙ +(\ +$this +); + +316  \ +$this +; + +319 + } +} + +321 +´Ùeùed + +funùiÚ + + $addG‘Lev– +(& +$süt +) + +323 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +324 +$süt + .= " + +331 +public + +funùiÚ + + `g‘Lev– +( +PrݖPDO + \ +$cÚ + = +nuÎ +) + +333 ià( +nuÎ + ==ð\ +$this +-> +Ëv– +) { + +334 \ +$this +-> +Ëv– + = +$³”CÏs¢ame +:: + `g‘Lev– +(\$this, \ +$cÚ +); + +336  \ +$this +-> +Ëv– +; + +339 + } +} + +341 +´Ùeùed + +funùiÚ + + $addS‘Lev– +(& +$süt +) + +343 +$objeùCÏssName + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +344 +$süt + .= " + +351 +public + +funùiÚ + + `£tLev– +(\ +$Ëv– +) + +353 \ +$this +-> +Ëv– + = \ +$Ëv– +; + +354  \ +$this +; + +357 + } +} + +359 +´Ùeùed + +funùiÚ + + $addS‘Chžd»n +(& +$süt +) + +361 +$objeùCÏssName + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +362 +$süt + .= " + +369 +public + +funùiÚ + + `£tChžd»n +( +¬¿y + \ +$chžd»n +) + +371 \ +$this +-> +_chžd»n + = \ +$chžd»n +; + +372  \ +$this +; + +375 + } +} + +377 +´Ùeùed + +funùiÚ + + $addS‘P¬’tNode +(& +$süt +) + +379 +$objeùCÏssName + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +380 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +381 +$süt + .= " + +388 +public + +funùiÚ + + `£tP¬’tNode +( +NodeObjeù + \ +$·»Á + = +nuÎ +) + +390 \ +$this +-> +·»ÁNode + = ( +Œue + ==ð(\$this-> +hasP¬’tNode + = +$³”CÏs¢ame +:: + `isV®id +(\ +$·»Á +))è? \$·»Á : +nuÎ +; + +391  \ +$this +; + +394 + } +} + +396 +´Ùeùed + +funùiÚ + + $addS‘P»vSiblšg +(& +$süt +) + +398 +$objeùCÏssName + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +399 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +400 +$süt + .= " + +407 +public + +funùiÚ + + `£tP»vSiblšg +( +NodeObjeù + \ +$node + = +nuÎ +) + +409 \ +$this +-> +´evSiblšg + = \ +$node +; + +410 \ +$this +-> +hasP»vSiblšg + = +$³”CÏs¢ame +:: + `isV®id +(\ +$node +); + +411  \ +$this +; + +414 + } +} + +416 +´Ùeùed + +funùiÚ + + $addS‘NextSiblšg +(& +$süt +) + +418 +$objeùCÏssName + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +419 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +420 +$süt + .= " + +427 +public + +funùiÚ + + `£tNextSiblšg +( +NodeObjeù + \ +$node + = +nuÎ +) + +429 \ +$this +-> +ÃxtSiblšg + = \ +$node +; + +430 \ +$this +-> +hasNextSiblšg + = +$³”CÏs¢ame +:: + `isV®id +(\ +$node +); + +431  \ +$this +; + +434 + } +} + +436 +´Ùeùed + +funùiÚ + + $addG‘P©h +(& +$süt +) + +438 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +439 +$süt + .= " + +446 +public + +funùiÚ + + `g‘P©h +( +PrݖPDO + \ +$cÚ + = +nuÎ +) + +448  +$³”CÏs¢ame +:: + `g‘P©h +(\ +$this +, \ +$cÚ +); + +451 + } +} + +453 +´Ùeùed + +funùiÚ + + $addG‘Numb”OfChžd»n +(& +$süt +) + +455 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +456 +$süt + .= " + +463 +public + +funùiÚ + + `g‘Numb”OfChžd»n +( +PrݖPDO + \ +$cÚ + = +nuÎ +) + +465  +$³”CÏs¢ame +:: + `g‘Numb”OfChžd»n +(\ +$this +, \ +$cÚ +); + +468 + } +} + +470 +´Ùeùed + +funùiÚ + + $addG‘Numb”OfDesûndªts +(& +$süt +) + +472 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +473 +$süt + .= " + +480 +public + +funùiÚ + + `g‘Numb”OfDesûndªts +( +PrݖPDO + \ +$cÚ + = +nuÎ +) + +482  +$³”CÏs¢ame +:: + `g‘Numb”OfDesûndªts +(\ +$this +, \ +$cÚ +); + +485 + } +} + +487 +´Ùeùed + +funùiÚ + + $addG‘Chžd»n +(& +$süt +) + +489 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +490 +$süt + .= " + +497 +public + +funùiÚ + + `g‘Chžd»n +( +PrݖPDO + \ +$cÚ + = +nuÎ +) + +499 \ +$this +-> + `g‘Lev– +(); + +501 ià( + `is_¬¿y +(\ +$this +-> +_chžd»n +)) { + +502  \ +$this +-> +_chžd»n +; + +505  +$³”CÏs¢ame +:: + `»Œ›veChžd»n +(\ +$this +, \ +$cÚ +); + +508 + } +} + +510 +´Ùeùed + +funùiÚ + + $addG‘Desûndªts +(& +$süt +) + +512 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +513 +$süt + .= " + +520 +public + +funùiÚ + + `g‘Desûndªts +( +PrݖPDO + \ +$cÚ + = +nuÎ +) + +522 \ +$this +-> + `g‘Lev– +(); + +524  +$³”CÏs¢ame +:: + `»Œ›veDesûndªts +(\ +$this +, \ +$cÚ +); + +527 + } +} + +529 +´Ùeùed + +funùiÚ + + $addIsRoÙ +(& +$süt +) + +531 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +532 +$süt + .= " + +538 +public + +funùiÚ + + `isRoÙ +() + +540  +$³”CÏs¢ame +:: + `isRoÙ +(\ +$this +); + +543 + } +} + +545 +´Ùeùed + +funùiÚ + + $addIsL—f +(& +$süt +) + +547 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +548 +$süt + .= " + +554 +public + +funùiÚ + + `isL—f +() + +556  +$³”CÏs¢ame +:: + `isL—f +(\ +$this +); + +559 + } +} + +561 +´Ùeùed + +funùiÚ + + $addIsEqu®To +(& +$süt +) + +563 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +564 +$süt + .= " + +571 +public + +funùiÚ + + `isEqu®To +( +NodeObjeù + \ +$node +) + +573  +$³”CÏs¢ame +:: + `isEqu®To +(\ +$this +, \ +$node +); + +576 + } +} + +578 +´Ùeùed + +funùiÚ + + $addHasP¬’t +(& +$süt +) + +580 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +581 +$süt + .= " + +588 +public + +funùiÚ + + `hasP¬’t +( +PrݖPDO + \ +$cÚ + = +nuÎ +) + +590 ià( +nuÎ + ==ð\ +$this +-> +hasP¬’tNode +) { + +591 +$³”CÏs¢ame +:: + `hasP¬’t +(\ +$this +, \ +$cÚ +); + +593  \ +$this +-> +hasP¬’tNode +; + +596 + } +} + +598 +´Ùeùed + +funùiÚ + + $addHasChžd»n +(& +$süt +) + +600 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +601 +$süt + .= " + +607 +public + +funùiÚ + + `hasChžd»n +() + +609  +$³”CÏs¢ame +:: + `hasChžd»n +(\ +$this +); + +612 + } +} + +614 +´Ùeùed + +funùiÚ + + $addHasP»vSiblšg +(& +$süt +) + +616 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +617 +$süt + .= " + +624 +public + +funùiÚ + + `hasP»vSiblšg +( +PrݖPDO + \ +$cÚ + = +nuÎ +) + +626 ià( +nuÎ + ==ð\ +$this +-> +hasP»vSiblšg +) { + +627 +$³”CÏs¢ame +:: + `hasP»vSiblšg +(\ +$this +, \ +$cÚ +); + +629  \ +$this +-> +hasP»vSiblšg +; + +632 + } +} + +634 +´Ùeùed + +funùiÚ + + $addHasNextSiblšg +(& +$süt +) + +636 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +637 +$süt + .= " + +644 +public + +funùiÚ + + `hasNextSiblšg +( +PrݖPDO + \ +$cÚ + = +nuÎ +) + +646 ià( +nuÎ + ==ð\ +$this +-> +hasNextSiblšg +) { + +647 +$³”CÏs¢ame +:: + `hasNextSiblšg +(\ +$this +, \ +$cÚ +); + +649  \ +$this +-> +hasNextSiblšg +; + +652 + } +} + +654 +´Ùeùed + +funùiÚ + + $addR‘r›veP¬’t +(& +$süt +) + +656 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +657 +$süt + .= " + +664 +public + +funùiÚ + + `»Œ›veP¬’t +( +PrݖPDO + \ +$cÚ + = +nuÎ +) + +666 ià( +nuÎ + ==ð\ +$this +-> +hasP¬’tNode +) { + +667 \ +$this +-> +·»ÁNode + = +$³”CÏs¢ame +:: + `»Œ›veP¬’t +(\$this, \ +$cÚ +); + +668 \ +$this +-> +hasP¬’tNode + = +$³”CÏs¢ame +:: + `isV®id +(\$this-> +·»ÁNode +); + +670  \ +$this +-> +·»ÁNode +; + +673 + } +} + +675 +´Ùeùed + +funùiÚ + + $addR‘r›veFœ¡Chžd +(& +$süt +) + +677 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +678 +$süt + .= " + +685 +public + +funùiÚ + + `»Œ›veFœ¡Chžd +( +PrݖPDO + \ +$cÚ + = +nuÎ +) + +687 ià(\ +$this +-> + `hasChžd»n +(\ +$cÚ +)) { + +688 ià( + `is_¬¿y +(\ +$this +-> +_chžd»n +)) { + +689  \ +$this +-> +_chžd»n +[0]; + +692  +$³”CÏs¢ame +:: + `»Œ›veFœ¡Chžd +(\ +$this +, \ +$cÚ +); + +694  +çl£ +; + +697 + } +} + +699 +´Ùeùed + +funùiÚ + + $addR‘r›veLa¡Chžd +(& +$süt +) + +701 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +702 +$süt + .= " + +709 +public + +funùiÚ + + `»Œ›veLa¡Chžd +( +PrݖPDO + \ +$cÚ + = +nuÎ +) + +711 ià(\ +$this +-> + `hasChžd»n +(\ +$cÚ +)) { + +712 ià( + `is_¬¿y +(\ +$this +-> +_chžd»n +)) { + +713 \ +$Ï¡ + = + `couÁ +(\ +$this +-> +_chžd»n +) - 1; + +714  \ +$this +-> +_chžd»n +[\ +$Ï¡ +]; + +717  +$³”CÏs¢ame +:: + `»Œ›veLa¡Chžd +(\ +$this +, \ +$cÚ +); + +719  +çl£ +; + +722 + } +} + +724 +´Ùeùed + +funùiÚ + + $addR‘r›veP»vSiblšg +(& +$süt +) + +726 +$süt + .= " + +733 +public + +funùiÚ + + `»Œ›veP»vSiblšg +( +PrݖPDO + \ +$cÚ + = +nuÎ +) + +735 ià(\ +$this +-> + `hasP»vSiblšg +(\ +$cÚ +)) { + +736  \ +$this +-> +´evSiblšg +; + +738  \ +$this +-> +hasP»vSiblšg +; + +741 + } +} + +743 +´Ùeùed + +funùiÚ + + $addR‘r›veNextSiblšg +(& +$süt +) + +745 +$süt + .= " + +752 +public + +funùiÚ + + `»Œ›veNextSiblšg +( +PrݖPDO + \ +$cÚ + = +nuÎ +) + +754 ià(\ +$this +-> + `hasNextSiblšg +(\ +$cÚ +)) { + +755  \ +$this +-> +ÃxtSiblšg +; + +757  \ +$this +-> +hasNextSiblšg +; + +760 + } +} + +762 +´Ùeùed + +funùiÚ + + $addIn£¹AsFœ¡ChždOf +(& +$süt +) + +764 +$objeùCÏssName + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +765 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +766 +$süt + .= " + +775 +public + +funùiÚ + + `š£¹AsFœ¡ChždOf +( +NodeObjeù + \ +$·»Á +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +777 ià(!\ +$this +-> + `isNew +()) + +779 +throw + +Ãw + + `PrݖExû±iÚ +(\"$objectClassName must be‚ew.\"); + +781 +$³”CÏs¢ame +:: + `š£¹AsFœ¡ChždOf +(\ +$this +, \ +$·»Á +, \ +$cÚ +); + +782  \ +$this +; + +785 + } +} + +787 +´Ùeùed + +funùiÚ + + $addIn£¹AsLa¡ChždOf +(& +$süt +) + +789 +$objeùCÏssName + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +790 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +791 +$süt + .= " + +800 +public + +funùiÚ + + `š£¹AsLa¡ChždOf +( +NodeObjeù + \ +$·»Á +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +802 ià(!\ +$this +-> + `isNew +()) + +804 +throw + +Ãw + + `PrݖExû±iÚ +(\"$objectClassName must be‚ew.\"); + +806 +$³”CÏs¢ame +:: + `š£¹AsLa¡ChždOf +(\ +$this +, \ +$·»Á +, \ +$cÚ +); + +807  \ +$this +; + +810 + } +} + +812 +´Ùeùed + +funùiÚ + + $addIn£¹AsP»vSiblšgOf +(& +$süt +) + +814 +$objeùCÏssName + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +815 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +816 +$süt + .= " + +825 +public + +funùiÚ + + `š£¹AsP»vSiblšgOf +( +NodeObjeù + \ +$de¡ +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +827 ià(!\ +$this +-> + `isNew +()) + +829 +throw + +Ãw + + `PrݖExû±iÚ +(\"$objectClassName must be‚ew.\"); + +831 +$³”CÏs¢ame +:: + `š£¹AsP»vSiblšgOf +(\ +$this +, \ +$de¡ +, \ +$cÚ +); + +832  \ +$this +; + +835 + } +} + +837 +´Ùeùed + +funùiÚ + + $addIn£¹AsNextSiblšgOf +(& +$süt +) + +839 +$objeùCÏssName + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +840 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +841 +$süt + .= " + +850 +public + +funùiÚ + + `š£¹AsNextSiblšgOf +( +NodeObjeù + \ +$de¡ +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +852 ià(!\ +$this +-> + `isNew +()) + +854 +throw + +Ãw + + `PrݖExû±iÚ +(\"$objectClassName must be‚ew.\"); + +856 +$³”CÏs¢ame +:: + `š£¹AsNextSiblšgOf +(\ +$this +, \ +$de¡ +, \ +$cÚ +); + +857  \ +$this +; + +860 + } +} + +862 +´Ùeùed + +funùiÚ + + $addMoveToFœ¡ChždOf +(& +$süt +) + +864 +$objeùCÏssName + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +865 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +866 +$süt + .= " + +874 +public + +funùiÚ + + `moveToFœ¡ChždOf +( +NodeObjeù + \ +$·»Á +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +876 ià(\ +$this +-> + `isNew +()) + +878 +throw + +Ãw + + `PrݖExû±iÚ +(\"$objectClassName mustƒxist inree.\"); + +880 +$³”CÏs¢ame +:: + `moveToFœ¡ChždOf +(\ +$·»Á +, \ +$this +, \ +$cÚ +); + +881  \ +$this +; + +884 + } +} + +886 +´Ùeùed + +funùiÚ + + $addMoveToLa¡ChždOf +(& +$süt +) + +888 +$objeùCÏssName + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +889 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +890 +$süt + .= " + +898 +public + +funùiÚ + + `moveToLa¡ChždOf +( +NodeObjeù + \ +$·»Á +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +900 ià(\ +$this +-> + `isNew +()) + +902 +throw + +Ãw + + `PrݖExû±iÚ +(\"$objectClassName mustƒxist inree.\"); + +904 +$³”CÏs¢ame +:: + `moveToLa¡ChždOf +(\ +$·»Á +, \ +$this +, \ +$cÚ +); + +905  \ +$this +; + +908 + } +} + +910 +´Ùeùed + +funùiÚ + + $addMoveToP»vSiblšgOf +(& +$süt +) + +912 +$objeùCÏssName + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +913 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +914 +$süt + .= " + +922 +public + +funùiÚ + + `moveToP»vSiblšgOf +( +NodeObjeù + \ +$de¡ +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +924 ià(\ +$this +-> + `isNew +()) + +926 +throw + +Ãw + + `PrݖExû±iÚ +(\"$objectClassName mustƒxist inree.\"); + +928 +$³”CÏs¢ame +:: + `moveToP»vSiblšgOf +(\ +$de¡ +, \ +$this +, \ +$cÚ +); + +929  \ +$this +; + +932 + } +} + +934 +´Ùeùed + +funùiÚ + + $addMoveToNextSiblšgOf +(& +$süt +) + +936 +$objeùCÏssName + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +937 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +938 +$süt + .= " + +946 +public + +funùiÚ + + `moveToNextSiblšgOf +( +NodeObjeù + \ +$de¡ +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +948 ià(\ +$this +-> + `isNew +()) + +950 +throw + +Ãw + + `PrݖExû±iÚ +(\"$objectClassName mustƒxist inree.\"); + +952 +$³”CÏs¢ame +:: + `moveToNextSiblšgOf +(\ +$de¡ +, \ +$this +, \ +$cÚ +); + +953  \ +$this +; + +956 + } +} + +958 +´Ùeùed + +funùiÚ + + $addIn£¹AsP¬’tOf +(& +$süt +) + +960 +$objeùCÏssName + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +961 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +962 +$süt + .= " + +970 +public + +funùiÚ + + `š£¹AsP¬’tOf +( +NodeObjeù + \ +$node +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +972 +$³”CÏs¢ame +:: + `š£¹AsP¬’tOf +(\ +$this +, \ +$node +, \ +$cÚ +); + +973  \ +$this +; + +976 + } +} + +978 +´Ùeùed + +funùiÚ + + $addG‘Leá +(& +$süt +) + +980 +$bË + = +$this +-> + `g‘TabË +(); + +982 + `fܗch + ( +$bË +-> + `g‘CÞumns +(è +as + +$cÞ +) { + +983 ià( +$cÞ +-> + `isNe¡edS‘LeáKey +()) { + +984 +$Ëá_cÞ_g‘‹r_Çme + = 'g‘'. +$cÞ +-> + `g‘PhpName +(); + +989 +$süt + .= " + +995 +public + +funùiÚ + + `g‘LeáV®ue +() + +997  \ +$this +-> + `$Ëá_cÞ_g‘‹r_Çme +(); + +1000 + } +} + +1002 +´Ùeùed + +funùiÚ + + $addG‘Right +(& +$süt +) + +1004 +$bË + = +$this +-> + `g‘TabË +(); + +1006 + `fܗch + ( +$bË +-> + `g‘CÞumns +(è +as + +$cÞ +) { + +1007 ià( +$cÞ +-> + `isNe¡edS‘RightKey +()) { + +1008 +$right_cÞ_g‘‹r_Çme + = 'g‘'. +$cÞ +-> + `g‘PhpName +(); + +1013 +$süt + .= " + +1019 +public + +funùiÚ + + `g‘RightV®ue +() + +1021  \ +$this +-> + `$right_cÞ_g‘‹r_Çme +(); + +1024 + } +} + +1026 +´Ùeùed + +funùiÚ + + $addG‘ScÝeId +(& +$süt +) + +1028 +$bË + = +$this +-> + `g‘TabË +(); + +1030 +$scÝe_cÞ_g‘‹r_Çme + = +nuÎ +; + +1031 + `fܗch + ( +$bË +-> + `g‘CÞumns +(è +as + +$cÞ +) { + +1032 ià( +$cÞ +-> + `isT»eScÝeKey +()) { + +1033 +$scÝe_cÞ_g‘‹r_Çme + = 'g‘'. +$cÞ +-> + `g‘PhpName +(); + +1038 +$süt + .= " + +1044 +public + +funùiÚ + + `g‘ScÝeIdV®ue +() + +1046 ià( +$scÝe_cÞ_g‘‹r_Çme +) { + +1047 +$süt + .= " + +1048  \ +$this +-> + `$scÝe_cÞ_g‘‹r_Çme +();"; + +1050 +$süt + .= " + +1051  +nuÎ +;"; + +1053 +$süt + .= " + +1056 + } +} + +1058 +´Ùeùed + +funùiÚ + + $addS‘Leá +(& +$süt +) + +1060 +$objeùCÏssName + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +1061 +$bË + = +$this +-> + `g‘TabË +(); + +1063 + `fܗch + ( +$bË +-> + `g‘CÞumns +(è +as + +$cÞ +) { + +1064 ià( +$cÞ +-> + `isNe¡edS‘LeáKey +()) { + +1065 +$Ëá_cÞ_£‰”_Çme + = '£t'. +$cÞ +-> + `g‘PhpName +(); + +1070 +$süt + .= " + +1077 +public + +funùiÚ + + `£tLeáV®ue +(\ +$v +) + +1079 \ +$this +-> + `$Ëá_cÞ_£‰”_Çme +(\ +$v +); + +1080  \ +$this +; + +1083 + } +} + +1085 +´Ùeùed + +funùiÚ + + $addS‘Right +(& +$süt +) + +1087 +$objeùCÏssName + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +1088 +$bË + = +$this +-> + `g‘TabË +(); + +1090 + `fܗch + ( +$bË +-> + `g‘CÞumns +(è +as + +$cÞ +) { + +1091 ià( +$cÞ +-> + `isNe¡edS‘RightKey +()) { + +1092 +$right_cÞ_£‰”_Çme + = '£t'. +$cÞ +-> + `g‘PhpName +(); + +1097 +$süt + .= " + +1104 +public + +funùiÚ + + `£tRightV®ue +(\ +$v +) + +1106 \ +$this +-> + `$right_cÞ_£‰”_Çme +(\ +$v +); + +1107  \ +$this +; + +1110 + } +} + +1112 +´Ùeùed + +funùiÚ + + $addS‘ScÝeId +(& +$süt +) + +1114 +$objeùCÏssName + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +1115 +$bË + = +$this +-> + `g‘TabË +(); + +1117 +$scÝe_cÞ_£‰”_Çme + = +nuÎ +; + +1118 + `fܗch + ( +$bË +-> + `g‘CÞumns +(è +as + +$cÞ +) { + +1119 ià( +$cÞ +-> + `isT»eScÝeKey +()) { + +1120 +$scÝe_cÞ_£‰”_Çme + = '£t'. +$cÞ +-> + `g‘PhpName +(); + +1125 +$süt + .= " + +1132 +public + +funùiÚ + + `£tScÝeIdV®ue +(\ +$v +) + +1134 ià( +$scÝe_cÞ_£‰”_Çme +) { + +1135 +$süt + .= " + +1136 \ +$this +-> + `$scÝe_cÞ_£‰”_Çme +(\ +$v +);"; + +1138 +$süt + .= " + +1139  \ +$this +; + +1143 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5NestedSetPeerBuilder.php + +1 + `g‘BuždPrݔty +('ba£P»fix'è. $this-> + `g‘StubObjeùBužd” +()-> + `g‘UÅ»fixedCÏs¢ame +() . 'NestedSetPeer'; + +55 + } +} + +61 +´Ùeùed + +funùiÚ + + $addInþudes +(& +$süt +) + +63 +$süt + .=" + +64 +»quœe + '".$this->getPeerBuilder()->getClassFilePath()."'; + +66 + } +} + +72 +´Ùeùed + +funùiÚ + + $addCÏssO³n +(& +$süt +) + +75 +$bË + = +$this +-> + `g‘TabË +(); + +76 +$bËName + = +$bË +-> + `g‘Name +(); + +77 +$bËDesc + = +$bË +-> + `g‘DesütiÚ +(); + +79 +$süt + .= " + +96 +ab¡¿ù + +þass + ".$this->g‘CÏs¢ame()." +ex‹nds + ".$this->g‘P“rBužd”()->g‘CÏssName()." +im¶em’ts + +NodeP“r + { + +105 +´Ùeùed + +funùiÚ + + `addCÏssBody +(& +$süt +) + +107 +$bË + = +$this +-> + `g‘TabË +(); + +113 +$this +-> + `addCÚ¡ªts +( +$süt +); + +115 +$this +-> + `addC»©eRoÙ +( +$süt +); + +117 +$this +-> + `addR‘r›veRoÙ +( +$süt +); + +119 +$this +-> + `addIn£¹AsFœ¡ChždOf +( +$süt +); + +120 +$this +-> + `addIn£¹AsLa¡ChždOf +( +$süt +); + +121 +$this +-> + `addIn£¹AsP»vSiblšgOf +( +$süt +); + +122 +$this +-> + `addIn£¹AsNextSiblšgOf +( +$süt +); + +123 +$this +-> + `addIn£¹AsP¬’tOf +( +$süt +); + +125 +$this +-> + `addIn£¹RoÙ +( +$süt +); + +126 +$this +-> + `addIn£¹P¬’t +( +$süt +); + +128 +$this +-> + `addD–‘eRoÙ +( +$süt +); + +129 +$this +-> + `addD–‘eNode +( +$süt +); + +131 +$this +-> + `addMoveToFœ¡ChždOf +( +$süt +); + +132 +$this +-> + `addMoveToLa¡ChždOf +( +$süt +); + +133 +$this +-> + `addMoveToP»vSiblšgOf +( +$süt +); + +134 +$this +-> + `addMoveToNextSiblšgOf +( +$süt +); + +136 +$this +-> + `addR‘r›veFœ¡Chžd +( +$süt +); + +137 +$this +-> + `addR‘r›veLa¡Chžd +( +$süt +); + +138 +$this +-> + `addR‘r›veP»vSiblšg +( +$süt +); + +139 +$this +-> + `addR‘r›veNextSiblšg +( +$süt +); + +141 +$this +-> + `addR‘r›veT»e +( +$süt +); + +142 +$this +-> + `addR‘r›veB¿nch +( +$süt +); + +143 +$this +-> + `addR‘r›veChžd»n +( +$süt +); + +144 +$this +-> + `addR‘r›veDesûndªts +( +$süt +); + +145 +$this +-> + `addR‘r›veSiblšgs +( +$süt +); + +146 +$this +-> + `addR‘r›veP¬’t +( +$süt +); + +148 +$this +-> + `addG‘Lev– +( +$süt +); + +149 +$this +-> + `addG‘Numb”OfChžd»n +( +$süt +); + +150 +$this +-> + `addG‘Numb”OfDesûndªts +( +$süt +); + +151 +$this +-> + `addG‘P©h +( +$süt +); + +153 +$this +-> + `addIsV®id +( +$süt +); + +154 +$this +-> + `addIsRoÙ +( +$süt +); + +155 +$this +-> + `addIsL—f +( +$süt +); + +156 +$this +-> + `addIsChždOf +( +$süt +); + +157 +$this +-> + `addIsChždOfOrSiblšgTo +( +$süt +); + +158 +$this +-> + `addIsEqu®To +( +$süt +); + +160 +$this +-> + `addHasP¬’t +( +$süt +); + +161 +$this +-> + `addHasP»vSiblšg +( +$süt +); + +162 +$this +-> + `addHasNextSiblšg +( +$süt +); + +163 +$this +-> + `addHasChžd»n +( +$süt +); + +165 +$this +-> + `addD–‘eDesûndªts +( +$süt +); + +167 +$this +-> + `addG‘Node +( +$süt +); + +169 +$this +-> + `addHyd¿‹Desûndªts +( +$süt +); + +170 +$this +-> + `addHyd¿‹Chžd»n +( +$süt +); + +172 +$this +-> + `addShiáRP¬’t +( +$süt +); + +173 +$this +-> + `addUpd©eLßdedNode +( +$süt +); + +174 +$this +-> + `addUpd©eDBNode +( +$süt +); + +176 +$this +-> + `addShiáRLV®ues +( +$süt +); + +177 +$this +-> + `addShiáRLRªge +( +$süt +); + +184 +´Ùeùed + +funùiÚ + + `addCÏssClo£ +(& +$süt +) + +186 +$süt + .= " + +189 + } +} + +191 +´Ùeùed + +funùiÚ + + $addCÚ¡ªts +(& +$süt +) + +193 +$bË + = +$this +-> + `g‘TabË +(); + +194 +$bËName + = +$bË +-> + `g‘Name +(); + +196 +$cÞÇme + = + `¬¿y +(); + +198 + `fܗch + ( +$bË +-> + `g‘CÞumns +(è +as + +$cÞ +) { + +199 ià( +$cÞ +-> + `isNe¡edS‘LeáKey +()) { + +200 +$cÞÇme +['Ëá'] = +$this +-> + `´efixTabËÇme +( +$bËName +è. '.' . + `¡¹ouµ” +( +$cÞ +-> + `g‘Name +()); + +203 ià( +$cÞ +-> + `isNe¡edS‘RightKey +()) { + +204 +$cÞÇme +['right'] = +$this +-> + `´efixTabËÇme +( +$bËName +è. '.' . + `¡¹ouµ” +( +$cÞ +-> + `g‘Name +()); + +207 ià( +$cÞ +-> + `isT»eScÝeKey +()) { + +208 +$cÞÇme +['scÝe'] = +$this +-> + `´efixTabËÇme +( +$bËName +è. '.' . + `¡¹ouµ” +( +$cÞ +-> + `g‘Name +()); + +211 ià(3 =ð + `couÁ +( +$cÞÇme +)) { + +216 if(! + `is£t +( +$cÞÇme +['left'])) { + +217 +throw + +Ãw + + `EngšeExû±iÚ +("Oà cÞumÀmu¡ havÃ¡edS‘LeáKey‡‰ribu‹ s‘ØŒufÜ [" . +$bË +-> + `g‘Name +() . "]able"); + +220 if(! + `is£t +( +$cÞÇme +['right'])) { + +221 +throw + +Ãw + + `EngšeExû±iÚ +("Oà cÞumÀmu¡ havÃ¡edS‘RightKey‡‰ribu‹ s‘ØŒufÜ [" . +$bË +-> + `g‘Name +() . "]able"); + +224 +$cÞÇme +['scÝe'] = + `is£t +($cÞÇme['scÝe']è? $cÞÇme['scÝe'] : +nuÎ +; + +226 +$süt + .= " + +230 cÚ¡ +LEFT_COL + = " . var_export($colname['left'],rue) . "; + +235 cÚ¡ +RIGHT_COL + = " . var_export($colname['right'],rue) . "; + +240 cÚ¡ +SCOPE_COL + = " . var_export($colname['scope'],rue) . "; + +242 + } +} + +244 +´Ùeùed + +funùiÚ + + $addC»©eRoÙ +(& +$süt +) + +246 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +247 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +248 +$süt + .= " + +255 +public +  +funùiÚ + + `ü—‹RoÙ +( +NodeObjeù + \ +$node +) + +257 ià(\ +$node +-> + `g‘LeáV®ue +()) { + +258 +throw + +Ãw + + `PrݖExû±iÚ +('Cannoturn‡nƒxisting‚ode into‡„oot‚ode.'); + +261 \ +$node +-> + `£tLeáV®ue +(1); + +262 \ +$node +-> + `£tRightV®ue +(2); + +265 + } +} + +267 +´Ùeùed + +funùiÚ + + $addR‘r›veRoÙ +(& +$süt +) + +269 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +270 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +271 +$süt + .= " + +279 +public +  +funùiÚ + + `»Œ›veRoÙ +(\ +$scÝeId + = +nuÎ +, +PrݖPDO + \ +$cÚ + =‚ull) + +281 \ +$c + = +Ãw + + `Cr™”Ÿ +( +$³”CÏs¢ame +:: +DATABASE_NAME +); + +283 \ +$c +-> + `add +( +£lf +:: +LEFT_COL +, 1, +Cr™”Ÿ +:: +EQUAL +); + +285 ià( +£lf +:: +SCOPE_COL +) { + +286 \ +$c +-> + `add +( +£lf +:: +SCOPE_COL +, \ +$scÝeId +, +Cr™”Ÿ +:: +EQUAL +); + +289  +$³”CÏs¢ame +:: + `doS–eùOà +(\ +$c +, \ +$cÚ +); + +292 + } +} + +294 +´Ùeùed + +funùiÚ + + $addIn£¹AsFœ¡ChždOf +(& +$süt +) + +296 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +297 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +298 +$süt + .= " + +307 +public +  +funùiÚ + + `š£¹AsFœ¡ChždOf +( +NodeObjeù + \ +$chžd +, NodeObjeù \ +$·»Á +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +310 \ +$chžd +-> + `£tLeáV®ue +(\ +$·»Á +-> + `g‘LeáV®ue +() + 1); + +311 \ +$chžd +-> + `£tRightV®ue +(\ +$·»Á +-> + `g‘LeáV®ue +() + 2); + +312 \ +$chžd +-> + `£tP¬’tNode +(\ +$·»Á +); + +314 \ +$sidv + = +nuÎ +; + +315 ià( +£lf +:: +SCOPE_COL +) { + +316 \ +$chžd +-> + `£tScÝeIdV®ue +(\ +$sidv + = \ +$·»Á +-> + `g‘ScÝeIdV®ue +()); + +320 +£lf +:: + `shiáRLV®ues +(\ +$chžd +-> + `g‘LeáV®ue +(), 2, \ +$cÚ +, \ +$sidv +); + +323 +£lf +:: + `upd©eLßdedNode +(\ +$·»Á +, 2, \ +$cÚ +); + +326 + } +} + +328 +´Ùeùed + +funùiÚ + + $addIn£¹AsLa¡ChždOf +(& +$süt +) + +330 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +331 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +332 +$süt + .= " + +341 +public +  +funùiÚ + + `š£¹AsLa¡ChždOf +( +NodeObjeù + \ +$chžd +, NodeObjeù \ +$·»Á +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +344 \ +$chžd +-> + `£tLeáV®ue +(\ +$·»Á +-> + `g‘RightV®ue +()); + +345 \ +$chžd +-> + `£tRightV®ue +(\ +$·»Á +-> + `g‘RightV®ue +() + 1); + +346 \ +$chžd +-> + `£tP¬’tNode +(\ +$·»Á +); + +348 \ +$sidv + = +nuÎ +; + +349 ià( +£lf +:: +SCOPE_COL +) { + +350 \ +$chžd +-> + `£tScÝeIdV®ue +(\ +$sidv + = \ +$·»Á +-> + `g‘ScÝeIdV®ue +()); + +354 +£lf +:: + `shiáRLV®ues +(\ +$chžd +-> + `g‘LeáV®ue +(), 2, \ +$cÚ +, \ +$sidv +); + +357 +£lf +:: + `upd©eLßdedNode +(\ +$·»Á +, 2, \ +$cÚ +); + +360 + } +} + +362 +´Ùeùed + +funùiÚ + + $addIn£¹AsP»vSiblšgOf +(& +$süt +) + +364 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +365 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +366 +$süt + .= " + +375 +public +  +funùiÚ + + `š£¹AsP»vSiblšgOf +( +NodeObjeù + \ +$node +, NodeObjeù \ +$siblšg +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +377 ià(\ +$siblšg +-> + `isRoÙ +()) { + +378 +throw + +Ãw + + `PrݖExû±iÚ +('Root‚odes cannot have siblings'); + +381 \ +$node +-> + `£tLeáV®ue +(\ +$siblšg +-> + `g‘LeáV®ue +()); + +382 \ +$node +-> + `£tRightV®ue +(\ +$siblšg +-> + `g‘LeáV®ue +() + 1); + +383 \ +$node +-> + `£tP¬’tNode +(\ +$siblšg +-> + `»Œ›veP¬’t +()); + +385 \ +$sidv + = +nuÎ +; + +386 ià( +£lf +:: +SCOPE_COL +) { + +387 \ +$node +-> + `£tScÝeIdV®ue +(\ +$sidv + = \ +$siblšg +-> + `g‘ScÝeIdV®ue +()); + +391 +£lf +:: + `shiáRLV®ues +(\ +$node +-> + `g‘LeáV®ue +(), 2, \ +$cÚ +, \ +$sidv +); + +394 +£lf +:: + `upd©eLßdedNode +(\ +$siblšg +-> + `»Œ›veP¬’t +(), 2, \ +$cÚ +); + +397 + } +} + +399 +´Ùeùed + +funùiÚ + + $addIn£¹AsNextSiblšgOf +(& +$süt +) + +401 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +402 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +403 +$süt + .= " + +412 +public +  +funùiÚ + + `š£¹AsNextSiblšgOf +( +NodeObjeù + \ +$node +, NodeObjeù \ +$siblšg +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +414 ià(\ +$siblšg +-> + `isRoÙ +()) { + +415 +throw + +Ãw + + `PrݖExû±iÚ +('Root‚odes cannot have siblings'); + +418 \ +$node +-> + `£tLeáV®ue +(\ +$siblšg +-> + `g‘RightV®ue +() + 1); + +419 \ +$node +-> + `£tRightV®ue +(\ +$siblšg +-> + `g‘RightV®ue +() + 2); + +420 \ +$node +-> + `£tP¬’tNode +(\ +$siblšg +-> + `»Œ›veP¬’t +()); + +422 \ +$sidv + = +nuÎ +; + +423 ià( +£lf +:: +SCOPE_COL +) { + +424 \ +$node +-> + `£tScÝeIdV®ue +(\ +$sidv + = \ +$siblšg +-> + `g‘ScÝeIdV®ue +()); + +428 +£lf +:: + `shiáRLV®ues +(\ +$node +-> + `g‘LeáV®ue +(), 2, \ +$cÚ +, \ +$sidv +); + +431 +£lf +:: + `upd©eLßdedNode +(\ +$siblšg +-> + `»Œ›veP¬’t +(), 2, \ +$cÚ +); + +434 + } +} + +436 +´Ùeùed + +funùiÚ + + $addIn£¹AsP¬’tOf +(& +$süt +) + +438 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +439 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +440 +$süt + .= " + +449 +public +  +funùiÚ + + `š£¹AsP¬’tOf +( +NodeObjeù + \ +$·»Á +, NodeObjeù \ +$node +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +451 \ +$sidv + = +nuÎ +; + +452 ià( +£lf +:: +SCOPE_COL +) { + +453 \ +$sidv + = \ +$node +-> + `g‘ScÝeIdV®ue +(); + +456 +£lf +:: + `shiáRLV®ues +(\ +$node +-> + `g‘LeáV®ue +(), 1, \ +$cÚ +, \ +$sidv +); + +457 +£lf +:: + `shiáRLV®ues +(\ +$node +-> + `g‘RightV®ue +(è+ 2, 1, \ +$cÚ +, \ +$sidv +); + +459 ià( +£lf +:: +SCOPE_COL +) { + +460 \ +$·»Á +-> + `£tScÝeIdV®ue +(\ +$sidv +); + +463 \ +$·»Á +-> + `£tLeáV®ue +(\ +$node +-> + `g‘LeáV®ue +()); + +464 \ +$·»Á +-> + `£tRightV®ue +(\ +$node +-> + `g‘RightV®ue +() + 2); + +466 \ +$´evious_·»Á + = \ +$node +-> + `»Œ›veP¬’t +(); + +467 \ +$·»Á +-> + `£tP¬’tNode +(\ +$´evious_·»Á +); + +468 \ +$node +-> + `£tP¬’tNode +(\ +$·»Á +); + +470 \ +$node +-> + `§ve +(\ +$cÚ +); + +473 +£lf +:: + `upd©eLßdedNode +(\ +$´evious_·»Á +, 2, \ +$cÚ +); + +476 + } +} + +478 +´Ùeùed + +funùiÚ + + $addIn£¹RoÙ +(& +$süt +) + +480 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +481 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +482 +$süt + .= " + +490 +public +  +funùiÚ + + `š£¹RoÙ +( +NodeObjeù + \ +$node +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +492 \ +$sidv + = +nuÎ +; + +493 ià( +£lf +:: +SCOPE_COL +) { + +494 \ +$sidv + = \ +$node +-> + `g‘ScÝeIdV®ue +(); + +497 +$³”CÏs¢ame +:: + `š£¹AsP¬’tOf +($³”CÏs¢ame:: + `»Œ›veRoÙ +(\ +$sidv +, \ +$cÚ +), \ +$node +, \$con); + +500 + } +} + +502 +´Ùeùed + +funùiÚ + + $addIn£¹P¬’t +(& +$süt +) + +504 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +505 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +506 +$süt + .= " + +517 +public +  +funùiÚ + + `š£¹P¬’t +( +NodeObjeù + \ +$chžd +, NodeObjeù \ +$·»Á +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +519 +£lf +:: + `š£¹AsP¬’tOf +(\ +$·»Á +, \ +$chžd +, \ +$cÚ +); + +522 + } +} + +524 +´Ùeùed + +funùiÚ + + $addD–‘eRoÙ +(& +$süt +) + +526 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +527 +$süt + .= " + +534 +public +  +funùiÚ + + `d–‘eRoÙ +(\ +$scÝeId + = +nuÎ +, +PrݖPDO + \ +$cÚ + =‚ull) + +536 ià(! +£lf +:: +SCOPE_COL +) { + +537 \ +$scÝeId + = +nuÎ +; + +539 \ +$roÙ + = +$³”CÏs¢ame +:: + `»Œ›veRoÙ +(\ +$scÝeId +, \ +$cÚ +); + +540 ià( +$³”CÏs¢ame +:: + `g‘Numb”OfChžd»n +(\ +$roÙ +) == 1) { + +541  +$³”CÏs¢ame +:: + `d–‘eNode +(\ +$roÙ +, \ +$cÚ +); + +543  +çl£ +; + +547 + } +} + +549 +´Ùeùed + +funùiÚ + + $addD–‘eNode +(& +$süt +) + +551 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +552 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +553 +$süt + .= " + +561 +public +  +funùiÚ + + `d–‘eNode +( +NodeObjeù + \ +$de¡ +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +563 ià(\ +$de¡ +-> + `g‘LeáV®ue +() == 1) { + +565  +$³”CÏs¢ame +:: + `d–‘eRoÙ +(\ +$cÚ +); + +568 \ +$sidv + = +nuÎ +; + +569 ià( +£lf +:: +SCOPE_COL +) { + +570 \ +$sidv + = \ +$de¡ +-> + `g‘ScÝeIdV®ue +(); + +573 +£lf +:: + `shiáRLRªge +(\ +$de¡ +-> + `g‘LeáV®ue +(), \$de¡-> + `g‘RightV®ue +(), -1, \ +$cÚ +, \ +$sidv +); + +574 +£lf +:: + `shiáRLV®ues +(\ +$de¡ +-> + `g‘RightV®ue +(è+ 1, -2, \ +$cÚ +, \ +$sidv +); + +575  \ +$de¡ +-> + `d–‘e +(\ +$cÚ +); + +578 + } +} + +580 +´Ùeùed + +funùiÚ + + $addMoveToFœ¡ChždOf +(& +$süt +) + +582 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +583 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +584 +$süt + .= " + +593 +public +  +funùiÚ + + `moveToFœ¡ChždOf +( +NodeObjeù + \ +$·»Á +, NodeObjeù \ +$chžd +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +595 ià(\ +$·»Á +-> + `g‘ScÝeIdV®ue +(è!ð\ +$chžd +->getScopeIdValue()) { + +596 +throw + +Ãw + + `PrݖExû±iÚ +('Moving‚odes‡crossrees is‚ot supported'); + +598 \ +$de¡Leá + = \ +$·»Á +-> + `g‘LeáV®ue +() + 1; + +599 +£lf +:: + `upd©eDBNode +(\ +$chžd +, \ +$de¡Leá +, \ +$cÚ +); + +602 +£lf +:: + `upd©eLßdedNode +(\ +$·»Á +, 2, \ +$cÚ +); + +605 + } +} + +607 +´Ùeùed + +funùiÚ + + $addMoveToLa¡ChždOf +(& +$süt +) + +609 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +610 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +611 +$süt + .= " + +620 +public +  +funùiÚ + + `moveToLa¡ChždOf +( +NodeObjeù + \ +$·»Á +, NodeObjeù \ +$chžd +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +622 ià(\ +$·»Á +-> + `g‘ScÝeIdV®ue +(è!ð\ +$chžd +->getScopeIdValue()) { + +623 +throw + +Ãw + + `PrݖExû±iÚ +('Moving‚odes‡crossrees is‚ot supported'); + +625 \ +$de¡Leá + = \ +$·»Á +-> + `g‘RightV®ue +(); + +626 +£lf +:: + `upd©eDBNode +(\ +$chžd +, \ +$de¡Leá +, \ +$cÚ +); + +629 +£lf +:: + `upd©eLßdedNode +(\ +$·»Á +, 2, \ +$cÚ +); + +632 + } +} + +634 +´Ùeùed + +funùiÚ + + $addMoveToP»vSiblšgOf +(& +$süt +) + +636 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +637 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +638 +$süt + .= " + +647 +public +  +funùiÚ + + `moveToP»vSiblšgOf +( +NodeObjeù + \ +$de¡ +, NodeObjeù \ +$node +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +649 ià(\ +$de¡ +-> + `g‘ScÝeIdV®ue +(è!ð\ +$node +->getScopeIdValue()) { + +650 +throw + +Ãw + + `PrݖExû±iÚ +('Moving‚odes‡crossrees is‚ot supported'); + +652 \ +$de¡Leá + = \ +$de¡ +-> + `g‘LeáV®ue +(); + +653 +£lf +:: + `upd©eDBNode +(\ +$node +, \ +$de¡Leá +, \ +$cÚ +); + +656 +£lf +:: + `upd©eLßdedNode +(\ +$de¡ +-> + `»Œ›veP¬’t +(), 2, \ +$cÚ +); + +659 + } +} + +661 +´Ùeùed + +funùiÚ + + $addMoveToNextSiblšgOf +(& +$süt +) + +663 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +664 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +665 +$süt + .= " + +674 +public +  +funùiÚ + + `moveToNextSiblšgOf +( +NodeObjeù + \ +$de¡ +, NodeObjeù \ +$node +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +676 ià(\ +$de¡ +-> + `g‘ScÝeIdV®ue +(è!ð\ +$node +->getScopeIdValue()) { + +677 +throw + +Ãw + + `PrݖExû±iÚ +('Moving‚odes‡crossrees is‚ot supported'); + +679 \ +$de¡Leá + = \ +$de¡ +-> + `g‘RightV®ue +(); + +680 \ +$de¡Leá + = \$destLeft + 1; + +681 +£lf +:: + `upd©eDBNode +(\ +$node +, \ +$de¡Leá +, \ +$cÚ +); + +684 +£lf +:: + `upd©eLßdedNode +(\ +$de¡ +-> + `»Œ›veP¬’t +(), 2, \ +$cÚ +); + +687 + } +} + +689 +´Ùeùed + +funùiÚ + + $addR‘r›veFœ¡Chžd +(& +$süt +) + +691 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +692 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +693 +$süt + .= " + +701 +public +  +funùiÚ + + `»Œ›veFœ¡Chžd +( +NodeObjeù + \ +$node +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +703 \ +$c + = +Ãw + + `Cr™”Ÿ +( +$³”CÏs¢ame +:: +DATABASE_NAME +); + +704 \ +$c +-> + `add +( +£lf +:: +LEFT_COL +, \ +$node +-> + `g‘LeáV®ue +(è+ 1, +Cr™”Ÿ +:: +EQUAL +); + +705 ià( +£lf +:: +SCOPE_COL +) { + +706 \ +$c +-> + `add +( +£lf +:: +SCOPE_COL +, \ +$node +-> + `g‘ScÝeIdV®ue +(), +Cr™”Ÿ +:: +EQUAL +); + +709  +$³”CÏs¢ame +:: + `doS–eùOà +(\ +$c +, \ +$cÚ +); + +712 + } +} + +714 +´Ùeùed + +funùiÚ + + $addR‘r›veLa¡Chžd +(& +$süt +) + +716 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +717 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +718 +$süt + .= " + +726 +public +  +funùiÚ + + `»Œ›veLa¡Chžd +( +NodeObjeù + \ +$node +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +728 \ +$c + = +Ãw + + `Cr™”Ÿ +( +$³”CÏs¢ame +:: +DATABASE_NAME +); + +729 \ +$c +-> + `add +( +£lf +:: +RIGHT_COL +, \ +$node +-> + `g‘RightV®ue +(è- 1, +Cr™”Ÿ +:: +EQUAL +); + +730 ià( +£lf +:: +SCOPE_COL +) { + +731 \ +$c +-> + `add +( +£lf +:: +SCOPE_COL +, \ +$node +-> + `g‘ScÝeIdV®ue +(), +Cr™”Ÿ +:: +EQUAL +); + +734  +$³”CÏs¢ame +:: + `doS–eùOà +(\ +$c +, \ +$cÚ +); + +737 + } +} + +739 +´Ùeùed + +funùiÚ + + $addR‘r›veP»vSiblšg +(& +$süt +) + +741 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +742 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +743 +$süt + .= " + +751 +public +  +funùiÚ + + `»Œ›veP»vSiblšg +( +NodeObjeù + \ +$node +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +753 \ +$c + = +Ãw + + `Cr™”Ÿ +( +$³”CÏs¢ame +:: +DATABASE_NAME +); + +754 \ +$c +-> + `add +( +£lf +:: +RIGHT_COL +, \ +$node +-> + `g‘LeáV®ue +(è- 1, +Cr™”Ÿ +:: +EQUAL +); + +755 ià( +£lf +:: +SCOPE_COL +) { + +756 \ +$c +-> + `add +( +£lf +:: +SCOPE_COL +, \ +$node +-> + `g‘ScÝeIdV®ue +(), +Cr™”Ÿ +:: +EQUAL +); + +758 \ +$´evSiblšg + = +$³”CÏs¢ame +:: + `doS–eùOà +(\ +$c +, \ +$cÚ +); + +759 \ +$node +-> + `£tP»vSiblšg +(\ +$´evSiblšg +); + +760  \ +$´evSiblšg +; + +763 + } +} + +765 +´Ùeùed + +funùiÚ + + $addR‘r›veNextSiblšg +(& +$süt +) + +767 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +768 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +769 +$süt + .= " + +777 +public +  +funùiÚ + + `»Œ›veNextSiblšg +( +NodeObjeù + \ +$node +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +779 \ +$c + = +Ãw + + `Cr™”Ÿ +( +$³”CÏs¢ame +:: +DATABASE_NAME +); + +780 \ +$c +-> + `add +( +£lf +:: +LEFT_COL +, \ +$node +-> + `g‘RightV®ue +(è+ 1, +Cr™”Ÿ +:: +EQUAL +); + +781 ià( +£lf +:: +SCOPE_COL +) { + +782 \ +$c +-> + `add +( +£lf +:: +SCOPE_COL +, \ +$node +-> + `g‘ScÝeIdV®ue +(), +Cr™”Ÿ +:: +EQUAL +); + +784 \ +$ÃxtSiblšg + = +$³”CÏs¢ame +:: + `doS–eùOà +(\ +$c +, \ +$cÚ +); + +785 \ +$node +-> + `£tNextSiblšg +(\ +$ÃxtSiblšg +); + +786  \ +$ÃxtSiblšg +; + +789 + } +} + +791 +´Ùeùed + +funùiÚ + + $addR‘r›veT»e +(& +$süt +) + +793 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +794 +$süt + .= " + +800 +public +  +funùiÚ + + `»Œ›veT»e +(\ +$scÝeId + = +nuÎ +, +PrݖPDO + \ +$cÚ + =‚ull) + +802 \ +$c + = +Ãw + + `Cr™”Ÿ +( +$³”CÏs¢ame +:: +DATABASE_NAME +); + +803 \ +$c +-> + `addAsûndšgOrd”ByCÞumn +( +£lf +:: +LEFT_COL +); + +804 ià( +£lf +:: +SCOPE_COL +) { + +805 \ +$c +-> + `add +( +£lf +:: +SCOPE_COL +, \ +$scÝeId +, +Cr™”Ÿ +:: +EQUAL +); + +807 \ +$¡mt + = +$³”CÏs¢ame +:: + `doS–eùStmt +(\ +$c +, \ +$cÚ +); + +808 ià( +çl£ + !=ð(\ +$row + = \ +$¡mt +-> + `ãtch +( +PDO +:: +FETCH_NUM +))) { + +809 \ +$omCÏss + = +$³”CÏs¢ame +:: + `g‘OMCÏss +(\ +$row +, 0); + +810 \ +$þs + = + `sub¡r +('.'.\ +$omCÏss +, + `¡¼pos +('.'.\$omClass, '.') + 1); + +812 \ +$key + = ".$³”CÏs¢ame.":: + `g‘Prim¬yKeyHashFromRow +(\ +$row +, 0); + +813 ià( +nuÎ + ==ð(\ +$roÙ + = ".$³”CÏs¢ame.":: + `g‘In¡ªûFromPoÞ +(\ +$key +))) { + +815 \ +$roÙ +-> + `hyd¿‹ +(\ +$row +); + +818 \ +$roÙ +-> + `£tLev– +(0); + +819 +$³”CÏs¢ame +:: + `hyd¿‹Desûndªts +(\ +$roÙ +, \ +$¡mt +); + +820 +$³”CÏs¢ame +:: + `addIn¡ªûToPoÞ +(\ +$roÙ +); + +822 \ +$¡mt +-> + `þo£CursÜ +(); + +823  \ +$roÙ +; + +825  +çl£ +; + +828 + } +} + +830 +´Ùeùed + +funùiÚ + + $addR‘r›veB¿nch +(& +$süt +) + +832 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +833 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +834 +$süt + .= " + +841 +public +  +funùiÚ + + `»Œ›veB¿nch +( +NodeObjeù + \ +$node +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +843  +$³”CÏs¢ame +:: + `»Œ›veDesûndªts +(\ +$node +, \ +$cÚ +); + +846 + } +} + +848 +´Ùeùed + +funùiÚ + + $addR‘r›veChžd»n +(& +$süt +) + +850 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +851 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +852 +$süt + .= " + +859 +public +  +funùiÚ + + `»Œ›veChžd»n +( +NodeObjeù + \ +$node +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +861 \ +$c + = +Ãw + + `Cr™”Ÿ +( +$³”CÏs¢ame +:: +DATABASE_NAME +); + +862 \ +$c +-> + `addAsûndšgOrd”ByCÞumn +( +£lf +:: +LEFT_COL +); + +863 ià( +£lf +:: +SCOPE_COL +) { + +864 \ +$c +-> + `add +( +£lf +:: +SCOPE_COL +, \ +$node +-> + `g‘ScÝeIdV®ue +(), +Cr™”Ÿ +:: +EQUAL +); + +866 \ +$c +-> + `add +( +£lf +:: +LEFT_COL +, \ +$node +-> + `g‘LeáV®ue +(), +Cr™”Ÿ +:: +GREATER_THAN +); + +867 \ +$c +-> + `addAnd +( +£lf +:: +RIGHT_COL +, \ +$node +-> + `g‘RightV®ue +(), +Cr™”Ÿ +:: +LESS_THAN +); + +868 \ +$¡mt + = +$³”CÏs¢ame +:: + `doS–eùStmt +(\ +$c +, \ +$cÚ +); + +870  +$³”CÏs¢ame +:: + `hyd¿‹Chžd»n +(\ +$node +, \ +$¡mt +); + +873 + } +} + +875 +´Ùeùed + +funùiÚ + + $addR‘r›veDesûndªts +(& +$süt +) + +877 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +878 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +879 +$süt + .= " + +886 +public +  +funùiÚ + + `»Œ›veDesûndªts +( +NodeObjeù + \ +$node +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +888 \ +$c + = +Ãw + + `Cr™”Ÿ +( +$³”CÏs¢ame +:: +DATABASE_NAME +); + +889 \ +$c +-> + `addAsûndšgOrd”ByCÞumn +( +£lf +:: +LEFT_COL +); + +890 ià( +£lf +:: +SCOPE_COL +) { + +891 \ +$c +-> + `add +( +£lf +:: +SCOPE_COL +, \ +$node +-> + `g‘ScÝeIdV®ue +(), +Cr™”Ÿ +:: +EQUAL +); + +893 \ +$c +-> + `add +( +£lf +:: +LEFT_COL +, \ +$node +-> + `g‘LeáV®ue +(), +Cr™”Ÿ +:: +GREATER_THAN +); + +894 \ +$c +-> + `addAnd +( +£lf +:: +RIGHT_COL +, \ +$node +-> + `g‘RightV®ue +(), +Cr™”Ÿ +:: +LESS_THAN +); + +895 \ +$¡mt + = +$³”CÏs¢ame +:: + `doS–eùStmt +(\ +$c +, \ +$cÚ +); + +897  +$³”CÏs¢ame +:: + `hyd¿‹Desûndªts +(\ +$node +, \ +$¡mt +); + +900 + } +} + +902 +´Ùeùed + +funùiÚ + + $addR‘r›veSiblšgs +(& +$süt +) + +904 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +905 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +906 +$süt + .= " + +913 +public +  +funùiÚ + + `»Œ›veSiblšgs +( +NodeObjeù + \ +$node +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +915 \ +$·»Á + = +$³”CÏs¢ame +:: + `»Œ›veP¬’t +(\ +$node +, \ +$cÚ +); + +916 \ +$siblšgs + = +$³”CÏs¢ame +:: + `»Œ›veChžd»n +(\ +$·»Á +, \ +$cÚ +); + +918  \ +$siblšgs +; + +921 + } +} + +923 +´Ùeùed + +funùiÚ + + $addR‘r›veP¬’t +(& +$süt +) + +925 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +926 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +927 +$süt + .= " + +935 +public +  +funùiÚ + + `»Œ›veP¬’t +( +NodeObjeù + \ +$node +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +937 \ +$c + = +Ãw + + `Cr™”Ÿ +( +$³”CÏs¢ame +:: +DATABASE_NAME +); + +938 \ +$c1 + = \ +$c +-> + `g‘NewCr™”iÚ +( +£lf +:: +LEFT_COL +, \ +$node +-> + `g‘LeáV®ue +(), +Cr™”Ÿ +:: +LESS_THAN +); + +939 \ +$c2 + = \ +$c +-> + `g‘NewCr™”iÚ +( +£lf +:: +RIGHT_COL +, \ +$node +-> + `g‘RightV®ue +(), +Cr™”Ÿ +:: +GREATER_THAN +); + +941 \ +$c1 +-> + `addAnd +(\ +$c2 +); + +943 \ +$c +-> + `add +(\ +$c1 +); + +944 ià( +£lf +:: +SCOPE_COL +) { + +945 \ +$c +-> + `add +( +£lf +:: +SCOPE_COL +, \ +$node +-> + `g‘ScÝeIdV®ue +(), +Cr™”Ÿ +:: +EQUAL +); + +947 \ +$c +-> + `addAsûndšgOrd”ByCÞumn +( +£lf +:: +RIGHT_COL +); + +949 \ +$·»Á + = +$³”CÏs¢ame +:: + `doS–eùOà +(\ +$c +, \ +$cÚ +); + +951 \ +$node +-> + `£tP¬’tNode +(\ +$·»Á +); + +953  \ +$·»Á +; + +956 + } +} + +958 +´Ùeùed + +funùiÚ + + $addG‘Lev– +(& +$süt +) + +960 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +961 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +962 +$süt + .= " + +970 +public +  +funùiÚ + + `g‘Lev– +( +NodeObjeù + \ +$node +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +972 ià(\ +$cÚ + ==ð +nuÎ +) { + +973 \ +$cÚ + = +Prݖ +:: + `g‘CÚÃùiÚ +( +$³”CÏs¢ame +:: +DATABASE_NAME +, Prݖ:: +CONNECTION_READ +); + +976 \ +$sql + = \"SELECT COUNT(*) AS†evel FROM \" . self::TABLE_NAME . \" WHERE \" . self::LEFT_COL . \" < :left AND \" . self::RIGHT_COL . \" > :right\"; + +978 ià( +£lf +:: +SCOPE_COL +) { + +979 \ +$sql + .ð' AND ' . +£lf +:: +SCOPE_COL + . ' = :scope'; + +982 \ +$¡mt + = \ +$cÚ +-> + `´•¬e +(\ +$sql +); + +983 \ +$¡mt +-> + `bšdV®ue +(':Ëá', \ +$node +-> + `g‘LeáV®ue +(), +PDO +:: +PARAM_INT +); + +984 \ +$¡mt +-> + `bšdV®ue +(':right', \ +$node +-> + `g‘RightV®ue +(), +PDO +:: +PARAM_INT +); + +985 ià( +£lf +:: +SCOPE_COL +) { + +986 \ +$¡mt +-> + `bšdV®ue +(':scÝe', \ +$node +-> + `g‘ScÝeIdV®ue +()); + +988 \ +$¡mt +-> + `execu‹ +(); + +989 \ +$row + = \ +$¡mt +-> + `ãtch +(); + +990  \ +$row +['level']; + +993 + } +} + +995 +´Ùeùed + +funùiÚ + + $addG‘Numb”OfChžd»n +(& +$süt +) + +997 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +998 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +999 +$süt + .= " + +1007 +public +  +funùiÚ + + `g‘Numb”OfChžd»n +( +NodeObjeù + \ +$node +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +1009 \ +$chžd»n + = +$³”CÏs¢ame +:: + `»Œ›veChžd»n +(\ +$node +); + +1010  + `couÁ +(\ +$chžd»n +); + +1013 + } +} + +1015 +´Ùeùed + +funùiÚ + + $addG‘Numb”OfDesûndªts +(& +$süt +) + +1017 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +1018 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +1019 +$süt + .= " + +1027 +public +  +funùiÚ + + `g‘Numb”OfDesûndªts +( +NodeObjeù + \ +$node +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +1029 \ +$right + = \ +$node +-> + `g‘RightV®ue +(); + +1030 \ +$Ëá + = \ +$node +-> + `g‘LeáV®ue +(); + +1031 \ +$num + = (\ +$right + - \ +$Ëá + - 1) / 2; + +1032  \ +$num +; + +1035 + } +} + +1037 +´Ùeùed + +funùiÚ + + $addG‘P©h +(& +$süt +) + +1039 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +1040 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +1041 +$süt + .= " + +1049 +public +  +funùiÚ + + `g‘P©h +( +NodeObjeù + \ +$node +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +1051 \ +$ü™”Ÿ + = +Ãw + + `Cr™”Ÿ +(); + +1052 ià( +£lf +:: +SCOPE_COL +) { + +1053 \ +$ü™”Ÿ +-> + `add +( +£lf +:: +SCOPE_COL +, \ +$node +-> + `g‘ScÝeIdV®ue +(), +Cr™”Ÿ +:: +EQUAL +); + +1055 \ +$ü™”Ÿ +-> + `add +( +£lf +:: +LEFT_COL +, \ +$node +-> + `g‘LeáV®ue +(), +Cr™”Ÿ +:: +LESS_EQUAL +); + +1056 \ +$ü™”Ÿ +-> + `add +( +£lf +:: +RIGHT_COL +, \ +$node +-> + `g‘RightV®ue +(), +Cr™”Ÿ +:: +GREATER_EQUAL +); + +1057 \ +$ü™”Ÿ +-> + `addAsûndšgOrd”ByCÞumn +( +£lf +:: +LEFT_COL +); + +1059  +£lf +:: + `doS–eù +(\ +$ü™”Ÿ +, \ +$cÚ +); + +1062 + } +} + +1064 +´Ùeùed + +funùiÚ + + $addIsV®id +(& +$süt +) + +1066 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +1067 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +1068 +$süt + .= " + +1075 +public +  +funùiÚ + + `isV®id +( +NodeObjeù + \ +$node + = +nuÎ +) + +1077 ià( + `is_objeù +(\ +$node +è&& \$node-> + `g‘RightV®ue +(è> \$node-> + `g‘LeáV®ue +()) { + +1078  +Œue +; + +1080  +çl£ +; + +1084 + } +} + +1086 +´Ùeùed + +funùiÚ + + $addIsRoÙ +(& +$süt +) + +1088 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +1089 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +1090 +$süt + .= " + +1097 +public +  +funùiÚ + + `isRoÙ +( +NodeObjeù + \ +$node +) + +1099  (\ +$node +-> + `g‘LeáV®ue +()==1); + +1102 + } +} + +1104 +´Ùeùed + +funùiÚ + + $addIsL—f +(& +$süt +) + +1106 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +1107 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +1108 +$süt + .= " + +1115 +public +  +funùiÚ + + `isL—f +( +NodeObjeù + \ +$node +) + +1117  ((\ +$node +-> + `g‘RightV®ue +()-\$node-> + `g‘LeáV®ue +())==1); + +1120 + } +} + +1122 +´Ùeùed + +funùiÚ + + $addIsChždOf +(& +$süt +) + +1124 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +1125 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +1126 +$süt + .= " + +1134 +public +  +funùiÚ + + `isChždOf +( +NodeObjeù + \ +$chžd +, NodeObjeù \ +$·»Á +) + +1136  ((\ +$chžd +-> + `g‘LeáV®ue +()>\ +$·»Á +->g‘LeáV®ue()è&& (\$chžd-> + `g‘RightV®ue +()<\$parent->getRightValue())); + +1139 + } +} + +1141 +´Ùeùed + +funùiÚ + + $addIsChždOfOrSiblšgTo +(& +$süt +) + +1143 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +1144 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +1145 +$süt + .= " + +1154 +public +  +funùiÚ + + `isChždOfOrSiblšgTo +( +NodeObjeù + \ +$node1 +, NodeObjeù \ +$node2 +) + +1156  ((\ +$node1 +-> + `g‘LeáV®ue +()>=\ +$node2 +->g‘LeáV®ue()è + `ªd + (\$node1-> + `g‘RightV®ue +()<=\$node2->getRightValue())); + +1159 + } +} + +1161 +´Ùeùed + +funùiÚ + + $addIsEqu®To +(& +$süt +) + +1163 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +1164 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +1165 +$süt + .= " + +1173 +public +  +funùiÚ + + `isEqu®To +( +NodeObjeù + \ +$node1 +, NodeObjeù \ +$node2 +) + +1175 \ +$®so + = +Œue +; + +1176 ià( +£lf +:: +SCOPE_COL +) { + +1177 \ +$®so + = (\ +$node1 +-> + `g‘ScÝeIdV®ue +(è==ð\ +$node2 +->getScopeIdValue()); + +1179  \ +$node1 +-> + `g‘LeáV®ue +(è=ð\ +$node2 +->g‘LeáV®ue(è&& \$node1-> + `g‘RightV®ue +(è=ð\$node2->g‘RightV®ue(è&& \ +$®so +; + +1182 + } +} + +1184 +´Ùeùed + +funùiÚ + + $addHasP¬’t +(& +$süt +) + +1186 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +1187 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +1188 +$süt + .= " + +1196 +public +  +funùiÚ + + `hasP¬’t +( +NodeObjeù + \ +$node +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +1198  +$³”CÏs¢ame +:: + `isV®id +($³”CÏs¢ame:: + `»Œ›veP¬’t +(\ +$node +, \ +$cÚ +)); + +1201 + } +} + +1203 +´Ùeùed + +funùiÚ + + $addHasP»vSiblšg +(& +$süt +) + +1205 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +1206 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +1207 +$süt + .= " + +1215 +public +  +funùiÚ + + `hasP»vSiblšg +( +NodeObjeù + \ +$node +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +1217  +$³”CÏs¢ame +:: + `isV®id +($³”CÏs¢ame:: + `»Œ›veP»vSiblšg +(\ +$node +, \ +$cÚ +)); + +1220 + } +} + +1222 +´Ùeùed + +funùiÚ + + $addHasNextSiblšg +(& +$süt +) + +1224 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +1225 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +1226 +$süt + .= " + +1234 +public +  +funùiÚ + + `hasNextSiblšg +( +NodeObjeù + \ +$node +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +1236  +$³”CÏs¢ame +:: + `isV®id +($³”CÏs¢ame:: + `»Œ›veNextSiblšg +(\ +$node +, \ +$cÚ +)); + +1239 + } +} + +1241 +´Ùeùed + +funùiÚ + + $addHasChžd»n +(& +$süt +) + +1243 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +1244 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +1245 +$süt + .= " + +1252 +public +  +funùiÚ + + `hasChžd»n +( +NodeObjeù + \ +$node +) + +1254  ((\ +$node +-> + `g‘RightV®ue +()-\$node-> + `g‘LeáV®ue +())>1); + +1257 + } +} + +1259 +´Ùeùed + +funùiÚ + + $addD–‘eDesûndªts +(& +$süt +) + +1261 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +1262 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +1263 +$süt + .= " + +1270 +public +  +funùiÚ + + `d–‘eDesûndªts +( +NodeObjeù + \ +$node +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +1272 \ +$Ëá + = \ +$node +-> + `g‘LeáV®ue +(); + +1273 \ +$right + = \ +$node +-> + `g‘RightV®ue +(); + +1275 \ +$c + = +Ãw + + `Cr™”Ÿ +( +$³”CÏs¢ame +:: +DATABASE_NAME +); + +1276 \ +$c1 + = \ +$c +-> + `g‘NewCr™”iÚ +( +£lf +:: +LEFT_COL +, \ +$Ëá +, +Cr™”Ÿ +:: +GREATER_THAN +); + +1277 \ +$c2 + = \ +$c +-> + `g‘NewCr™”iÚ +( +£lf +:: +RIGHT_COL +, \ +$right +, +Cr™”Ÿ +:: +LESS_THAN +); + +1279 \ +$c1 +-> + `addAnd +(\ +$c2 +); + +1281 \ +$c +-> + `add +(\ +$c1 +); + +1282 ià( +£lf +:: +SCOPE_COL +) { + +1283 \ +$c +-> + `add +( +£lf +:: +SCOPE_COL +, \ +$node +-> + `g‘ScÝeIdV®ue +(), +Cr™”Ÿ +:: +EQUAL +); + +1285 \ +$c +-> + `addAsûndšgOrd”ByCÞumn +( +£lf +:: +RIGHT_COL +); + +1287 \ +$»suÉ + = +$³”CÏs¢ame +:: + `doD–‘e +(\ +$c +, \ +$cÚ +); + +1289 +£lf +:: + `shiáRLV®ues +(\ +$right + + 1, \ +$Ëá + - \$righˆ-1, \ +$cÚ +, \ +$node +-> + `g‘ScÝeIdV®ue +()); + +1291  \ +$»suÉ +; + +1294 + } +} + +1296 +´Ùeùed + +funùiÚ + + $addG‘Node +(& +$süt +) + +1298 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +1299 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +1300 +$süt + .= " + +1308 +public +  +funùiÚ + + `g‘Node +(\ +$node +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +1310 ià( + `is_objeù +(\ +$node +)) { + +1311  \ +$node +; + +1313 \ +$objeù + = +$³”CÏs¢ame +:: + `»Œ›veByPK +(\ +$node +, \ +$cÚ +); + +1314 \ +$¹n + = + `is_objeù +(\ +$objeù +è? \$objeù : +çl£ +; + +1315  \ +$¹n +; + +1319 + } +} + +1321 +´Ùeùed + +funùiÚ + + $addHyd¿‹Desûndªts +(& +$süt +) + +1323 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +1324 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +1325 +$bË + = +$this +-> + `g‘TabË +(); + +1326 +$süt + .= " + +1332 +´Ùeùed +  +funùiÚ + + `hyd¿‹Desûndªts +( +NodeObjeù + \ +$node +, +PDOS‹m’t + \ +$¡mt +) + +1334 \ +$desûndªts + = + `¬¿y +(); + +1335 \ +$chžd»n + = + `¬¿y +(); + +1336 \ +$´evSiblšg + = +nuÎ +; + +1339 ià(! +$bË +-> + `g‘Chžd»nCÞumn +()) { + +1340 +$süt + .= " + +1342 \ +$þs + = +$³”CÏs¢ame +:: + `g‘OMCÏss +(); + +1343 \ +$þs + = + `sub¡r +('.'.\$þs, + `¡¼pos +('.'.\$cls, '.') + 1); + +1347 +$süt + .= " + +1348 \ +$row + = \ +$¡mt +-> + `ãtch +( +PDO +:: +FETCH_NUM +)) { + +1349 \ +$key + = ".$³”CÏs¢ame.":: + `g‘Prim¬yKeyHashFromRow +(\ +$row +, 0); + +1350 ià( +nuÎ + ==ð(\ +$chžd + = ".$³”CÏs¢ame.":: + `g‘In¡ªûFromPoÞ +(\ +$key +))) {"; + +1352 ià( +$bË +-> + `g‘Chžd»nCÞumn +()) { + +1353 +$süt + .= " + +1355 \ +$þs + = ".$³”CÏs¢ame.":: + `g‘OMCÏss +(\ +$row +, 0); + +1356 \ +$þs + = + `sub¡r +('.'.\$þs, + `¡¼pos +('.'.\$cls, '.') + 1); + +1360 +$süt + .= " + +1362 \ +$chžd +-> + `hyd¿‹ +(\ +$row +); + +1365 \ +$chžd +-> + `£tLev– +(\ +$node +-> + `g‘Lev– +() + 1); + +1366 \ +$chžd +-> + `£tP¬’tNode +(\ +$node +); + +1367 ià(! + `em±y +(\ +$´evSiblšg +)) { + +1368 \ +$chžd +-> + `£tP»vSiblšg +(\ +$´evSiblšg +); + +1369 \ +$´evSiblšg +-> + `£tNextSiblšg +(\ +$chžd +); + +1372 \ +$desûndªts +[] = \ +$chžd +; + +1374 ià(\ +$chžd +-> + `hasChžd»n +()) { + +1375 \ +$desûndªts + = + `¬¿y_m”ge +(\$desûndªts, +$³”CÏs¢ame +:: + `hyd¿‹Desûndªts +(\ +$chžd +, \ +$¡mt +)); + +1377 \ +$chžd +-> + `£tChžd»n +( + `¬¿y +()); + +1380 \ +$chžd»n +[] = \ +$chžd +; + +1381 \ +$´evSiblšg + = \ +$chžd +; + +1383 +$³”CÏs¢ame +:: + `addIn¡ªûToPoÞ +(\ +$chžd +); + +1384 ià(\ +$chžd +-> + `g‘RightV®ue +(è+ 1 =ð\ +$node +->getRightValue()) { + +1385 \ +$chžd +-> + `£tNextSiblšg +( +nuÎ +); + +1389 \ +$node +-> + `£tChžd»n +(\ +$chžd»n +); + +1390  \ +$desûndªts +; + +1393 + } +} + +1395 +´Ùeùed + +funùiÚ + + $addHyd¿‹Chžd»n +(& +$süt +) + +1397 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +1398 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +1399 +$bË + = +$this +-> + `g‘TabË +(); + +1400 +$süt + .= " + +1406 +´Ùeùed +  +funùiÚ + + `hyd¿‹Chžd»n +( +NodeObjeù + \ +$node +, +PDOS‹m’t + \ +$¡mt +) + +1408 \ +$chžd»n + = + `¬¿y +(); + +1409 \ +$´evRight + = 0; + +1412 ià(! +$bË +-> + `g‘Chžd»nCÞumn +()) { + +1413 +$süt + .= " + +1415 \ +$þs + = +$³”CÏs¢ame +:: + `g‘OMCÏss +(); + +1416 \ +$þs + = + `sub¡r +('.'.\$þs, + `¡¼pos +('.'.\$cls, '.') + 1); + +1420 +$süt + .= " + +1421 \ +$row + = \ +$¡mt +-> + `ãtch +( +PDO +:: +FETCH_NUM +)) { + +1422 \ +$key + = ".$³”CÏs¢ame.":: + `g‘Prim¬yKeyHashFromRow +(\ +$row +, 0); + +1423 ià( +nuÎ + ==ð(\ +$chžd + = ".$³”CÏs¢ame.":: + `g‘In¡ªûFromPoÞ +(\ +$key +))) {"; + +1425 ià( +$bË +-> + `g‘Chžd»nCÞumn +()) { + +1426 +$süt + .= " + +1428 \ +$þs + = ".$³”CÏs¢ame.":: + `g‘OMCÏss +(\ +$row +, 0); + +1429 \ +$þs + = + `sub¡r +('.'.\$þs, + `¡¼pos +('.'.\$cls, '.') + 1); + +1433 +$süt + .= " + +1435 \ +$chžd +-> + `hyd¿‹ +(\ +$row +); + +1438 \ +$chžd +-> + `£tLev– +(\ +$node +-> + `g‘Lev– +() + 1); + +1440 ià(\ +$chžd +-> + `g‘RightV®ue +(è> \ +$´evRight +) { + +1441 \ +$chžd»n +[] = \ +$chžd +; + +1442 \ +$´evRight + = \ +$chžd +-> + `g‘RightV®ue +(); + +1445 ià(\ +$chžd +-> + `g‘RightV®ue +(è+ 1 =ð\ +$node +->getRightValue()) { + +1449 \ +$node +-> + `£tChžd»n +(\ +$chžd»n +); + +1450  \ +$chžd»n +; + +1453 + } +} + +1460 +´Ùeùed + +funùiÚ + + $addShiáRP¬’t +(& +$süt +) + +1462 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +1463 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +1464 +$süt + .= " + +1474 +´Ùeùed +  +funùiÚ + + `shiáRP¬’t +( +NodeObjeù + \ +$node +, \ +$d– +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +1476 ià(\ +$node +-> + `hasP¬’t +(\ +$cÚ +)) { + +1477 \ +$·»Á + = \ +$node +-> + `»Œ›veP¬’t +(); + +1478 +£lf +:: + `shiáRP¬’t +(\ +$·»Á +, \ +$d– +, \ +$cÚ +); + +1480 \ +$node +-> + `£tRightV®ue +(\$node-> + `g‘RightV®ue +(è+ \ +$d– +); + +1483 + } +} + +1485 +´Ùeùed + +funùiÚ + + $addUpd©eLßdedNode +(& +$süt +) + +1487 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +1488 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +1489 +$bË + = +$this +-> + `g‘TabË +(); + +1491 +$süt + .= " + +1499 +´Ùeùed +  +funùiÚ + + `upd©eLßdedNode +( +NodeObjeù + \ +$node +, \ +$d– +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +1501 ià( +Prݖ +:: + `isIn¡ªûPoޚgEÇbËd +()) { + +1502 \ +$keys + = + `¬¿y +(); + +1503 + `fܗch + ( +£lf +::\ +$š¡ªûs + +as + \ +$obj +) { + +1504 \ +$keys +[] = \ +$obj +-> + `g‘Prim¬yKey +(); + +1507 ià(! + `em±y +(\ +$keys +)) { + +1510 \ +$ü™”Ÿ + = +Ãw + + `Cr™”Ÿ +( +£lf +:: +DATABASE_NAME +);"; + +1511 ià( + `couÁ +( +$bË +-> + `g‘Prim¬yKey +()) === 1) { + +1512 +$pkey + = +$bË +-> + `g‘Prim¬yKey +(); + +1513 +$cÞ + = + `¬¿y_shiá +( +$pkey +); + +1514 +$süt + .= " + +1515 \ +$ü™”Ÿ +-> + `add +(".$this->g‘CÞumnCÚ¡ªt($cÞ).", \ +$keys +, +Cr™”Ÿ +:: +IN +); + +1518 +$f›lds + = + `¬¿y +(); + +1519 + `fܗch + ( +$bË +-> + `g‘Prim¬yKey +(è +as + +$k + => +$cÞ +) { + +1520 +$f›lds +[] = +$this +-> + `g‘CÞumnCÚ¡ªt +( +$cÞ +); + +1522 +$süt + .= " + +1525 + `fܗch + (\ +$keys + +as + \ +$v®ues +) { + +1527 \ +$ùÚ + = \ +$ü™”Ÿ +-> + `g‘NewCr™”iÚ +(" . $f›lds[0] . ", \ +$v®ues +[0]);"; + +1528 + `un£t +( +$f›lds +[0]); + +1529 + `fܗch + ( +$f›lds + +as + +$k + => +$cÞ +) { + +1530 +$süt + .= " + +1533 \ +$ÃxtùÚ + = \ +$ü™”Ÿ +-> + `g‘NewCr™”iÚ +(" . $cÞ . ", \ +$v®ues +[ +$k +]); + +1535 \ +$ùÚ +-> + `addAnd +(\ +$ÃxtùÚ +);"; + +1537 +$süt + .= " + +1540 \ +$ü™”Ÿ +-> + `addOr +(\ +$ùÚ +); + +1544 +$süt + .= " + +1545 \ +$¡mt + = +$³”CÏs¢ame +:: + `doS–eùStmt +(\ +$ü™”Ÿ +, \ +$cÚ +); + +1546 \ +$row + = \ +$¡mt +-> + `ãtch +( +PDO +:: +FETCH_NUM +)) { + +1547 \ +$key + = +$³”CÏs¢ame +:: + `g‘Prim¬yKeyHashFromRow +(\ +$row +, 0); + +1548 ià( +nuÎ + !=ð(\ +$objeù + = +$³”CÏs¢ame +:: + `g‘In¡ªûFromPoÞ +(\ +$key +))) {"; + +1549 +$n + = 0; + +1550 + `fܗch + ( +$bË +-> + `g‘CÞumns +(è +as + +$cÞ +) { + +1551 ià( +$cÞ +-> + `isNe¡edS‘LeáKey +()) { + +1552 +$süt + .= " + +1553 \ +$objeù +-> + `£tLeáV®ue +(\ +$row +[ +$n +]);"; + +1554 } ià( +$cÞ +-> + `isNe¡edS‘RightKey +()) { + +1555 +$süt + .= " + +1556 \ +$objeù +-> + `£tRightV®ue +(\ +$row +[ +$n +]);"; + +1558 +$n +++; + +1560 +$süt + .= " + +1563 \ +$¡mt +-> + `þo£CursÜ +(); + +1568 + } +} + +1570 +´Ùeùed + +funùiÚ + + $addUpd©eDBNode +(& +$süt +) + +1572 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +1573 +$süt + .= " + +1581 +´Ùeùed +  +funùiÚ + + `upd©eDBNode +( +NodeObjeù + \ +$node +, \ +$de¡Leá +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +1583 \ +$Ëá + = \ +$node +-> + `g‘LeáV®ue +(); + +1584 \ +$right + = \ +$node +-> + `g‘RightV®ue +(); + +1586 \ +$Œ“Size + = \ +$right + - \ +$Ëá + +1; + +1588 +£lf +:: + `shiáRLV®ues +(\ +$de¡Leá +, \ +$Œ“Size +, \ +$cÚ +, \ +$node +-> + `g‘ScÝeIdV®ue +()); + +1590 ià(\ +$Ëá + >ð\ +$de¡Leá +) { + +1591 \ +$Ëá + +ð\ +$Œ“Size +; + +1592 \ +$right + +ð\ +$Œ“Size +; + +1596 +£lf +:: + `shiáRLRªge +(\ +$Ëá +, \ +$right +, \ +$de¡Leá + - \$Ëá, \ +$cÚ +, \ +$node +-> + `g‘ScÝeIdV®ue +()); + +1599 +£lf +:: + `shiáRLV®ues +(\ +$right + + 1, -\ +$Œ“Size +, \ +$cÚ +, \ +$node +-> + `g‘ScÝeIdV®ue +()); + +1602 + } +} + +1604 +´Ùeùed + +funùiÚ + + $addShiáRLV®ues +(& +$süt +) + +1606 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +1607 +$süt + .= " + +1615 +´Ùeùed +  +funùiÚ + + `shiáRLV®ues +(\ +$fœ¡ +, \ +$d– +, +PrݖPDO + \ +$cÚ + = +nuÎ +, \ +$scÝeId + =‚ull) + +1617 ià(\ +$cÚ + ==ð +nuÎ +) { + +1618 \ +$cÚ + = +Prݖ +:: + `g‘CÚÃùiÚ +( +$³”CÏs¢ame +:: +DATABASE_NAME +, Prݖ:: +CONNECTION_WRITE +); + +1621 \ +$ËáUpd©eCÞ + = +£lf +:: +LEFT_COL +; + +1622 \ +$rightUpd©eCÞ + = +£lf +:: +RIGHT_COL +; + +1625 \ +$wh”eCr™”Ÿ + = +Ãw + + `Cr™”Ÿ +( +$³”CÏs¢ame +:: +DATABASE_NAME +); + +1626 \ +$ü™”iÚ + = \ +$wh”eCr™”Ÿ +-> + `g‘NewCr™”iÚ +( + +1627 +£lf +:: +LEFT_COL +, + +1628 \ +$fœ¡ +, + +1629 +Cr™”Ÿ +:: +GREATER_EQUAL +); + +1631 ià( +£lf +:: +SCOPE_COL +) { + +1632 \ +$ü™”iÚ +-> + `addAnd +( + +1633 \ +$wh”eCr™”Ÿ +-> + `g‘NewCr™”iÚ +( + +1634 +£lf +:: +SCOPE_COL +, + +1635 \ +$scÝeId +, + +1636 +Cr™”Ÿ +:: +EQUAL +)); + +1638 \ +$wh”eCr™”Ÿ +-> + `add +(\ +$ü™”iÚ +); + +1640 \ +$v®uesCr™”Ÿ + = +Ãw + + `Cr™”Ÿ +( +$³”CÏs¢ame +:: +DATABASE_NAME +); + +1641 \ +$v®uesCr™”Ÿ +-> + `add +( + +1642 +£lf +:: +LEFT_COL +, + +1643 + `¬¿y +('¿w' => \ +$ËáUpd©eCÞ + . ' + ?', 'v®ue' => \ +$d– +), + +1644 +Cr™”Ÿ +:: +CUSTOM_EQUAL +); + +1646 { +$this +-> +ba£P“rCÏs¢ame +}:: + `doUpd©e +(\ +$wh”eCr™”Ÿ +, \ +$v®uesCr™”Ÿ +, \ +$cÚ +); + +1649 \ +$wh”eCr™”Ÿ + = +Ãw + + `Cr™”Ÿ +( +$³”CÏs¢ame +:: +DATABASE_NAME +); + +1650 \ +$ü™”iÚ + = \ +$wh”eCr™”Ÿ +-> + `g‘NewCr™”iÚ +( + +1651 +£lf +:: +RIGHT_COL +, + +1652 \ +$fœ¡ +, + +1653 +Cr™”Ÿ +:: +GREATER_EQUAL +); + +1655 ià( +£lf +:: +SCOPE_COL +) { + +1656 \ +$ü™”iÚ +-> + `addAnd +( + +1657 \ +$wh”eCr™”Ÿ +-> + `g‘NewCr™”iÚ +( + +1658 +£lf +:: +SCOPE_COL +, + +1659 \ +$scÝeId +, + +1660 +Cr™”Ÿ +:: +EQUAL +)); + +1662 \ +$wh”eCr™”Ÿ +-> + `add +(\ +$ü™”iÚ +); + +1664 \ +$v®uesCr™”Ÿ + = +Ãw + + `Cr™”Ÿ +( +$³”CÏs¢ame +:: +DATABASE_NAME +); + +1665 \ +$v®uesCr™”Ÿ +-> + `add +( + +1666 +£lf +:: +RIGHT_COL +, + +1667 + `¬¿y +('¿w' => \ +$rightUpd©eCÞ + . ' + ?', 'v®ue' => \ +$d– +), + +1668 +Cr™”Ÿ +:: +CUSTOM_EQUAL +); + +1670 { +$this +-> +ba£P“rCÏs¢ame +}:: + `doUpd©e +(\ +$wh”eCr™”Ÿ +, \ +$v®uesCr™”Ÿ +, \ +$cÚ +); + +1673 + } +} + +1675 +´Ùeùed + +funùiÚ + + $addShiáRLRªge +(& +$süt +) + +1677 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +1678 +$süt + .= " + +1689 +´Ùeùed +  +funùiÚ + + `shiáRLRªge +(\ +$fœ¡ +, \ +$Ï¡ +, \ +$d– +, +PrݖPDO + \ +$cÚ + = +nuÎ +, \ +$scÝeId + =‚ull) + +1691 ià(\ +$cÚ + ==ð +nuÎ +) { + +1692 \ +$cÚ + = +Prݖ +:: + `g‘CÚÃùiÚ +( +$³”CÏs¢ame +:: +DATABASE_NAME +, Prݖ:: +CONNECTION_WRITE +); + +1695 \ +$ËáUpd©eCÞ + = + `sub¡r +( +£lf +:: +LEFT_COL +, + `¡¼pos +(self::LEFT_COL, '.') + 1); + +1696 \ +$rightUpd©eCÞ + = + `sub¡r +( +£lf +:: +RIGHT_COL +, + `¡¼pos +(self::RIGHT_COL, '.') + 1); + +1699 \ +$wh”eCr™”Ÿ + = +Ãw + + `Cr™”Ÿ +( +$³”CÏs¢ame +:: +DATABASE_NAME +); + +1700 \ +$ü™”iÚ + = \ +$wh”eCr™”Ÿ +-> + `g‘NewCr™”iÚ +( +£lf +:: +LEFT_COL +, \ +$fœ¡ +, +Cr™”Ÿ +:: +GREATER_EQUAL +); + +1701 \ +$ü™”iÚ +-> + `addAnd +(\ +$wh”eCr™”Ÿ +-> + `g‘NewCr™”iÚ +( +£lf +:: +LEFT_COL +, \ +$Ï¡ +, +Cr™”Ÿ +:: +LESS_EQUAL +)); + +1702 ià( +£lf +:: +SCOPE_COL +) { + +1703 \ +$ü™”iÚ +-> + `addAnd +(\ +$wh”eCr™”Ÿ +-> + `g‘NewCr™”iÚ +( +£lf +:: +SCOPE_COL +, \ +$scÝeId +, +Cr™”Ÿ +:: +EQUAL +)); + +1705 \ +$wh”eCr™”Ÿ +-> + `add +(\ +$ü™”iÚ +); + +1707 \ +$v®uesCr™”Ÿ + = +Ãw + + `Cr™”Ÿ +( +$³”CÏs¢ame +:: +DATABASE_NAME +); + +1708 \ +$v®uesCr™”Ÿ +-> + `add +( + +1709 +£lf +:: +LEFT_COL +, + +1710 + `¬¿y +('¿w' => \ +$ËáUpd©eCÞ + . ' + ?', 'v®ue' => \ +$d– +), + +1711 +Cr™”Ÿ +:: +CUSTOM_EQUAL +); + +1713 { +$this +-> +ba£P“rCÏs¢ame +}:: + `doUpd©e +(\ +$wh”eCr™”Ÿ +, \ +$v®uesCr™”Ÿ +, \ +$cÚ +); + +1716 \ +$wh”eCr™”Ÿ + = +Ãw + + `Cr™”Ÿ +( +$³”CÏs¢ame +:: +DATABASE_NAME +); + +1717 \ +$ü™”iÚ + = \ +$wh”eCr™”Ÿ +-> + `g‘NewCr™”iÚ +( +£lf +:: +RIGHT_COL +, \ +$fœ¡ +, +Cr™”Ÿ +:: +GREATER_EQUAL +); + +1718 \ +$ü™”iÚ +-> + `addAnd +(\ +$wh”eCr™”Ÿ +-> + `g‘NewCr™”iÚ +( +£lf +:: +RIGHT_COL +, \ +$Ï¡ +, +Cr™”Ÿ +:: +LESS_EQUAL +)); + +1719 ià( +£lf +:: +SCOPE_COL +) { + +1720 \ +$ü™”iÚ +-> + `addAnd +(\ +$wh”eCr™”Ÿ +-> + `g‘NewCr™”iÚ +( +£lf +:: +SCOPE_COL +, \ +$scÝeId +, +Cr™”Ÿ +:: +EQUAL +)); + +1722 \ +$wh”eCr™”Ÿ +-> + `add +(\ +$ü™”iÚ +); + +1724 \ +$v®uesCr™”Ÿ + = +Ãw + + `Cr™”Ÿ +( +$³”CÏs¢ame +:: +DATABASE_NAME +); + +1725 \ +$v®uesCr™”Ÿ +-> + `add +( + +1726 +£lf +:: +RIGHT_COL +, + +1727 + `¬¿y +('¿w' => \ +$rightUpd©eCÞ + . ' + ?', 'v®ue' => \ +$d– +), + +1728 +Cr™”Ÿ +:: +CUSTOM_EQUAL +); + +1730 { +$this +-> +ba£P“rCÏs¢ame +}:: + `doUpd©e +(\ +$wh”eCr™”Ÿ +, \ +$v®uesCr™”Ÿ +, \ +$cÚ +); + +1732  + `¬¿y +('Ëá' => \ +$fœ¡ + + \ +$d– +, 'right' => \ +$Ï¡ + + \$delta); + +1735 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5NodeBuilder.php + +1 + `g‘BuždPrݔty +('ba£P»fix'è. $this-> + `g‘StubNodeBužd” +()-> + `g‘UÅ»fixedCÏs¢ame +(); + +55 + } +} + +61 +´Ùeùed + +funùiÚ + + $addInþudes +(& +$süt +) + +63 + } +} + +69 +´Ùeùed + +funùiÚ + + $addCÏssO³n +(& +$süt +) + +72 +$bË + = +$this +-> + `g‘TabË +(); + +73 +$bËName + = +$bË +-> + `g‘Name +(); + +74 +$bËDesc + = +$bË +-> + `g‘DesütiÚ +(); + +76 +$süt + .= " + +93 +ab¡¿ù + +þass + ".$this->g‘CÏs¢ame()." +im¶em’ts + +I‹¿tÜAgg»g©e + { + +102 +´Ùeùed + +funùiÚ + + `addCÏssBody +(& +$süt +) + +104 +$bË + = +$this +-> + `g‘TabË +(); + +106 +$this +-> + `addA‰ribu‹s +( +$süt +); + +108 +$this +-> + `addCÚ¡ruùÜ +( +$süt +); + +110 +$this +-> + `addC®lOv”lßd +( +$süt +); + +111 +$this +-> + `addS‘I‹¿tÜO±iÚs +( +$süt +); + +112 +$this +-> + `addG‘I‹¿tÜ +( +$süt +); + +114 +$this +-> + `addG‘NodeObj +( +$süt +); + +115 +$this +-> + `addG‘NodeP©h +( +$süt +); + +116 +$this +-> + `addG‘NodeIndex +( +$süt +); + +117 +$this +-> + `addG‘NodeLev– +( +$süt +); + +119 +$this +-> + `addHasChždNode +( +$süt +); + +120 +$this +-> + `addG‘ChždNodeAt +( +$süt +); + +121 +$this +-> + `addG‘Fœ¡ChždNode +( +$süt +); + +122 +$this +-> + `addG‘La¡ChždNode +( +$süt +); + +123 +$this +-> + `addG‘SiblšgNode +( +$süt +); + +125 +$this +-> + `addG‘P¬’tNode +( +$süt +); + +126 +$this +-> + `addG‘Anû¡Üs +( +$süt +); + +127 +$this +-> + `addIsRoÙNode +( +$süt +); + +129 +$this +-> + `addS‘New +( +$süt +); + +130 +$this +-> + `addS‘D–‘ed +( +$süt +); + +131 +$this +-> + `addAddChždNode +( +$süt +); + +132 +$this +-> + `addMoveChždNode +( +$süt +); + +133 +$this +-> + `addSave +( +$süt +); + +135 +$this +-> + `addD–‘e +( +$süt +); + +136 +$this +-> + `addEqu®s +( +$süt +); + +138 +$this +-> + `addA‰achP¬’tNode +( +$süt +); + +139 +$this +-> + `addA‰achChždNode +( +$süt +); + +140 +$this +-> + `addD‘achP¬’tNode +( +$süt +); + +141 +$this +-> + `addD‘achChždNode +( +$süt +); + +142 +$this +-> + `addShiáChždNodes +( +$süt +); + +143 +$this +-> + `addIn£¹NewChždNode +( +$süt +); + +145 +$this +-> + `addAdju¡Stus +( +$süt +); + +146 +$this +-> + `addAdju¡NodeP©h +( +$süt +); + +154 +´Ùeùed + +funùiÚ + + `addCÏssClo£ +(& +$süt +) + +156 +$süt + .= " + +159 + } +} + +166 +´Ùeùed + +funùiÚ + + $addA‰ribu‹s +(& +$süt +) + +168 +$süt + .= " + +172 +´Ùeùed + \ +$obj + = +nuÎ +; + +178 +´Ùeùed + \ +$·»ÁNode + = +nuÎ +; + +184 +´Ùeùed + \ +$chždNodes + = + `¬¿y +(); + +186 + } +} + +192 +´Ùeùed + +funùiÚ + + $addCÚ¡ruùÜ +(& +$süt +) + +194 +$süt + .= " + +200 +public + +funùiÚ + + `__cÚ¡ruù +(\ +$obj + = +nuÎ +) + +202 ià(\ +$obj + !=ð +nuÎ +) { + +203 \ +$this +-> +obj + = \ +$obj +; + +205 \ +$£tNodeP©h + = '£t' . ".$this->g‘StubNodeP“rBužd”()->g‘CÏs¢ame().":: +NPATH_PHPNAME +; + +206 \ +$this +-> +obj + = +Ãw + ".$this->getStubObjectBuilder()->getClassname()."(); + +207 \ +$this +-> +obj +->\ + `$£tNodeP©h +('0'); + +211 + } +} + +215 +´Ùeùed + +funùiÚ + + $addC®lOv”lßd +(& +$süt +) + +217 +$süt + .= " + +226 +public + +funùiÚ + + `__ÿÎ +(\ +$Çme +, \ +$·rms +) + +228 ià( + `m‘hod_exi¡s +(\ +$this +-> +obj +, \ +$Çme +)) + +229  + `ÿÎ_u£r_func_¬¿y +( + `¬¿y +(\ +$this +-> +obj +, \ +$Çme +), \ +$·rms +); + +231 +throw + +Ãw + + `PrݖExû±iÚ +('get method‚ot defined: \$name'); + +234 + } +} + +236 +´Ùeùed + +funùiÚ + + $addS‘I‹¿tÜO±iÚs +(& +$süt +) + +238 +$süt + .= " + +254 +public + +funùiÚ + + `£tI‹¿tÜO±iÚs +(\ +$ty³ +, \ +$Ýts +) + +256 \ +$this +-> +™Ty³ + = \ +$ty³ +; + +257 \ +$this +-> +™O±s + = \ +$Ýts +; + +260 + } +} + +262 +´Ùeùed + +funùiÚ + + $addG‘I‹¿tÜ +(& +$süt +) + +264 +$süt + .= " + +272 +public + +funùiÚ + + `g‘I‹¿tÜ +(\ +$ty³ + = +nuÎ +, \ +$Ýts + =‚ull) + +274 ià(\ +$ty³ + ==ð +nuÎ +) + +275 \ +$ty³ + = ( + `is£t +(\ +$this +-> +™Ty³ +) ? \$this->itType : 'Pre'); + +277 ià(\ +$Ýts + ==ð +nuÎ +) + +278 \ +$Ýts + = ( + `is£t +(\ +$this +-> +™O±s +è? \$this->™O± : + `¬¿y +()); + +280 \ +$™þass + = + `ucfœ¡ +( + `¡¹Þow” +(\ +$ty³ +)) . 'OrderNodeIterator'; + +282 + `»quœe_Úû +('´Ý–/om/' . \ +$™þass + . '.php'); + +283  +Ãw + \ + `$™þass +(\ +$this +, \ +$Ýts +); + +286 + } +} + +288 +´Ùeùed + +funùiÚ + + $addG‘NodeObj +(& +$süt +) + +290 +$süt + .= " + +295 +public + +funùiÚ + + `g‘NodeObj +() + +297  \ +$this +-> +obj +; + +300 + } +} + +302 +´Ùeùed + +funùiÚ + + $addG‘NodeP©h +(& +$süt +) + +304 +$süt + .= " + +309 +public + +funùiÚ + + `g‘NodeP©h +() + +311 \ +$g‘NodeP©h + = 'g‘' . ".$this->g‘StubNodeP“rBužd”()->g‘CÏs¢ame().":: +NPATH_PHPNAME +; + +312  \ +$this +-> +obj +->\ + `$g‘NodeP©h +(); + +315 + } +} + +317 +´Ùeùed + +funùiÚ + + $addG‘NodeIndex +(& +$süt +) + +319 +$süt + .= " + +324 +public + +funùiÚ + + `g‘NodeIndex +() + +326 \ +$Å©h + =& \ +$this +-> + `g‘NodeP©h +(); + +327 \ +$£p + = + `¡¼pos +(\ +$Å©h +, ".$this->g‘StubNodeP“rBužd”()->g‘CÏs¢ame().":: +NPATH_SEP +); + +328  (è(\ +$£p + !=ð +çl£ + ? + `sub¡r +(\ +$Å©h +, \$sep+1) : \$npath); + +331 + } +} + +333 +´Ùeùed + +funùiÚ + + $addG‘NodeLev– +(& +$süt +) + +335 +$süt + .= " + +340 +public + +funùiÚ + + `g‘NodeLev– +() + +342  ( + `sub¡r_couÁ +(\ +$this +-> + `g‘NodeP©h +(), ".$this->g‘StubNodeP“rBužd”()->g‘CÏs¢ame().":: +NPATH_SEP +) + 1); + +345 + } +} + +347 +´Ùeùed + +funùiÚ + + $addHasChždNode +(& +$süt +) + +349 +$süt + .= " + +359 +public + +funùiÚ + + `hasChždNode +(\ +$node +, \ +$¡riù + = +çl£ +, \ +$»cur£ + = false) + +361 + `fܗch + (\ +$this +-> +chždNodes + +as + \ +$chždNode +) + +363 ià(\ +$chždNode +-> + `equ®s +(\ +$node +, \ +$¡riù +)) + +364  +Œue +; + +366 ià(\ +$»cur£ + && \ +$chždNode +-> + `hasChždNode +(\ +$node +, \$recurse)) + +367  +Œue +; + +370  +çl£ +; + +373 + } +} + +375 +´Ùeùed + +funùiÚ + + $addG‘ChždNodeAt +(& +$süt +) + +377 +$süt + .= " + +387 +public + +funùiÚ + + `g‘ChždNodeAt +(\ +$i +, \ +$qu”ydb + = +çl£ +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +389 ià(\ +$qu”ydb + && + +390 !\ +$this +-> +obj +-> + `isNew +() && + +391 !\ +$this +-> +obj +-> + `isD–‘ed +() && + +392 ! + `is£t +(\ +$this +-> +chždNodes +[\ +$i +])) + +394 \ +$ü™”Ÿ + = +Ãw + + `Cr™”Ÿ +(".$this->g‘StubP“rBužd”()->g‘CÏs¢ame().":: +DATABASE_NAME +); + +395 \ +$ü™”Ÿ +-> + `add +(".$this->g‘StubNodeP“rBužd”()->g‘CÏs¢ame().":: +NPATH_COLNAME +, \ +$this +-> + `g‘NodeP©h +(è. ".$this->g‘StubNodeP“rBužd”()->g‘CÏs¢ame().":: +NPATH_SEP + . \ +$i +, +Cr™”Ÿ +:: +EQUAL +); + +397 ià(\ +$chždObj + = ".$this->g‘StubP“rBužd”()->g‘CÏs¢ame().":: + `doS–eùOà +(\ +$ü™”Ÿ +, \ +$cÚ +)) + +398 \ +$this +-> + `©chChždNode +( +Ãw + ".$this->g‘StubNodeBužd”()->g‘CÏs¢ame()."(\ +$chždObj +)); + +401  ( + `is£t +(\ +$this +-> +chždNodes +[\ +$i +]è? \$this->chždNodes[\$i] : +nuÎ +); + +404 + } +} + +406 +´Ùeùed + +funùiÚ + + $addG‘Fœ¡ChždNode +(& +$süt +) + +408 +$süt + .= " + +416 +public + +funùiÚ + + `g‘Fœ¡ChždNode +(\ +$qu”ydb + = +çl£ +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +418  \ +$this +-> + `g‘ChždNodeAt +(1, \ +$qu”ydb +, \ +$cÚ +); + +421 + } +} + +423 +´Ùeùed + +funùiÚ + + $addG‘La¡ChždNode +(& +$süt +) + +425 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +426 +$nodeP“rCÏs¢ame + = +$this +-> + `g‘StubNodeP“rBužd” +()-> + `g‘CÏs¢ame +(); + +428 +$süt + .= " + +435 +public + +funùiÚ + + `g‘La¡ChždNode +(\ +$qu”ydb + = +çl£ +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +437 \ +$Ï¡Node + = +nuÎ +; + +439 ià(\ +$this +-> +obj +-> + `isNew +(è|| \$this->obj-> + `isD–‘ed +()) + +441 + `’d +(\ +$this +-> +chždNodes +); + +442 \ +$Ï¡Node + = ( + `couÁ +(\ +$this +-> +chždNodes +è? + `cu¼’t +(\$this->chždNodesè: +nuÎ +); + +444 ià(\ +$qu”ydb +) + +446 \ +$db + = +Prݖ +:: + `g‘Db +( +$³”CÏs¢ame +:: +DATABASE_NAME +); + +447 \ +$ü™”Ÿ + = +Ãw + + `Cr™”Ÿ +( +$³”CÏs¢ame +:: +DATABASE_NAME +); + +448 \ +$ü™”Ÿ +-> + `add +( +$nodeP“rCÏs¢ame +:: +NPATH_COLNAME +, \ +$this +-> + `g‘NodeP©h +(è. $nodeP“rCÏs¢ame:: +NPATH_SEP + . '%', +Cr™”Ÿ +:: +LIKE +); + +449 \ +$ü™”Ÿ +-> + `addAnd +( +$nodeP“rCÏs¢ame +:: +NPATH_COLNAME +, \ +$this +-> + `g‘NodeP©h +(è. $nodeP“rCÏs¢ame:: +NPATH_SEP + . '%' . $nodeP“rCÏs¢ame::NPATH_SEP . '%', +Cr™”Ÿ +:: +NOT_LIKE +); + +450 +$³”CÏs¢ame +:: + `addS–eùCÞumns +(\ +$ü™”Ÿ +); + +451 \ +$ü™”Ÿ +-> + `addAsCÞumn +('Å©hËn', \ +$db +-> + `¡rL’gth +( +$nodeP“rCÏs¢ame +:: +NPATH_COLNAME +)); + +452 \ +$ü™”Ÿ +-> + `addDesûndšgOrd”ByCÞumn +('npathlen'); + +453 \ +$ü™”Ÿ +-> + `addDesûndšgOrd”ByCÞumn +( +$nodeP“rCÏs¢ame +:: +NPATH_COLNAME +); + +455 \ +$Ï¡Obj + = +$³”CÏs¢ame +:: + `doS–eùOà +(\ +$ü™”Ÿ +, \ +$cÚ +); + +457 ià(\ +$Ï¡Obj + !=ð +nuÎ +) + +459 \ +$Ï¡Node + = +Ãw + ".$this->g‘StubNodeBužd”()->g‘CÏs¢ame()."(\ +$Ï¡Obj +); + +461 + `’d +(\ +$this +-> +chždNodes +); + +462 \ +$’dNode + = ( + `couÁ +(\ +$this +-> +chždNodes +è? + `cu¼’t +(\$this->chždNodesè: +nuÎ +); + +464 ià(\ +$’dNode +) + +466 ià(\ +$’dNode +-> + `g‘NodeP©h +(è> \ +$Ï¡Node +->getNodePath()) + +467 +throw + +Ãw + + `PrݖExû±iÚ +('Cached child‚ode inconsistent with database.'); + +468 ià(\ +$’dNode +-> + `g‘NodeP©h +(è=ð\ +$Ï¡Node +->getNodePath()) + +469 \ +$Ï¡Node + = \ +$’dNode +; + +471 \ +$this +-> + `©chChždNode +(\ +$Ï¡Node +); + +475 \ +$this +-> + `©chChždNode +(\ +$Ï¡Node +); + +480  \ +$Ï¡Node +; + +483 + } +} + +485 +´Ùeùed + +funùiÚ + + $addG‘SiblšgNode +(& +$süt +) + +487 +$süt + .= " + +497 +public + +funùiÚ + + `g‘SiblšgNode +(\ +$´ev + = +çl£ +, \ +$qu”ydb + = f®£, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +499 \ +$nidx + = \ +$this +-> + `g‘NodeIndex +(); + +501 ià(\ +$this +-> + `isRoÙNode +()) + +503  +nuÎ +; + +505 ià(\ +$´ev +) + +507 ià(\ +$nidx + > 1 && (\ +$·»ÁNode + = \ +$this +-> + `g‘P¬’tNode +(\ +$qu”ydb +, \ +$cÚ +))) + +508  \ +$·»ÁNode +-> + `g‘ChždNodeAt +(\ +$nidx +-1, \ +$qu”ydb +, \ +$cÚ +); + +510  +nuÎ +; + +514 ià(\ +$·»ÁNode + = \ +$this +-> + `g‘P¬’tNode +(\ +$qu”ydb +, \ +$cÚ +)) + +515  \ +$·»ÁNode +-> + `g‘ChždNodeAt +(\ +$nidx ++1, \ +$qu”ydb +, \ +$cÚ +); + +517  +nuÎ +; + +521 + } +} + +523 +´Ùeùed + +funùiÚ + + $addG‘P¬’tNode +(& +$süt +) + +525 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +526 +$nodeP“rCÏs¢ame + = +$this +-> + `g‘StubNodeP“rBužd” +()-> + `g‘CÏs¢ame +(); + +528 +$süt + .= " + +536 +public + +funùiÚ + + `g‘P¬’tNode +(\ +$qu”ydb + = +Œue +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +538 ià(\ +$qu”ydb + && + +539 \ +$this +-> +·»ÁNode + ==ð +nuÎ + && + +540 !\ +$this +-> + `isRoÙNode +() && + +541 !\ +$this +-> +obj +-> + `isNew +() && + +542 !\ +$this +-> +obj +-> + `isD–‘ed +()) + +544 \ +$Å©h + =& \ +$this +-> + `g‘NodeP©h +(); + +545 \ +$£p + = + `¡¼pos +(\ +$Å©h +, +$nodeP“rCÏs¢ame +:: +NPATH_SEP +); + +546 \ +$µ©h + = + `sub¡r +(\ +$Å©h +, 0, \ +$£p +); + +548 \ +$ü™”Ÿ + = +Ãw + + `Cr™”Ÿ +( +$³”CÏs¢ame +:: +DATABASE_NAME +); + +549 \ +$ü™”Ÿ +-> + `add +( +$nodeP“rCÏs¢ame +:: +NPATH_COLNAME +, \ +$µ©h +, +Cr™”Ÿ +:: +EQUAL +); + +551 ià(\ +$·»ÁObj + = +$³”CÏs¢ame +:: + `doS–eùOà +(\ +$ü™”Ÿ +, \ +$cÚ +)) + +553 \ +$·»ÁNode + = +Ãw + ".$this->g‘StubNodeBužd”()->g‘CÏs¢ame()."(\ +$·»ÁObj +); + +554 \ +$·»ÁNode +-> + `©chChždNode +(\ +$this +); + +558  \ +$this +-> +·»ÁNode +; + +561 + } +} + +563 +´Ùeùed + +funùiÚ + + $addG‘Anû¡Üs +(& +$süt +) + +565 +$süt + .= " + +574 +public + +funùiÚ + + `g‘Anû¡Üs +(\ +$qu”ydb + = +çl£ +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +576 \ +$ªû¡Üs + = + `¬¿y +(); + +577 \ +$·»ÁNode + = \ +$this +; + +579 \ +$·»ÁNode + = \$·»ÁNode-> + `g‘P¬’tNode +(\ +$qu”ydb +, \ +$cÚ +)) + +580 + `¬¿y_unshiá +(\ +$ªû¡Üs +, \ +$·»ÁNode +); + +582  \ +$ªû¡Üs +; + +585 + } +} + +587 +´Ùeùed + +funùiÚ + + $addIsRoÙNode +(& +$süt +) + +589 +$süt + .= " + +594 +public + +funùiÚ + + `isRoÙNode +() + +596  (\ +$this +-> + `g‘NodeP©h +() === '1'); + +599 + } +} + +601 +´Ùeùed + +funùiÚ + + $addS‘New +(& +$süt +) + +603 +$süt + .= " + +612 +public + +funùiÚ + + `£tNew +(\ +$b +) + +614 \ +$this +-> + `adju¡Stus +('Ãw', \ +$b +); + +615 \ +$this +-> + `adju¡NodeP©h +(\$this-> + `g‘NodeP©h +(), '0'); + +618 + } +} + +620 +´Ùeùed + +funùiÚ + + $addS‘D–‘ed +(& +$süt +) + +622 +$süt + .= " + +629 +public + +funùiÚ + + `£tD–‘ed +(\ +$b +) + +631 \ +$this +-> + `adju¡Stus +('d–‘ed', \ +$b +); + +634 + } +} + +636 +´Ùeùed + +funùiÚ + + $addAddChždNode +(& +$süt +) + +638 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +639 +$nodeP“rCÏs¢ame + = +$this +-> + `g‘StubNodeP“rBužd” +()-> + `g‘CÏs¢ame +(); + +641 +$süt + .= " + +652 +public + +funùiÚ + + `addChždNode +(\ +$node +, \ +$befÜeNode + = +nuÎ +, +PrݖPDO + \ +$cÚ + =‚ull) + +654 ià(\ +$this +-> +obj +-> + `isNew +(è&& !\ +$node +->obj->isNew()) + +655 +throw + +Ãw + + `PrݖExû±iÚ +('Cannot‡dd stored‚odeso‡‚ew‚ode.'); + +657 ià(\ +$this +-> +obj +-> + `isD–‘ed +(è|| \ +$node +->obj->isDeleted()) + +658 +throw + +Ãw + + `PrݖExû±iÚ +('Cannot‡dd children in‡ deleted state.'); + +660 ià(\ +$this +-> + `hasChždNode +(\ +$node +)) + +661 +throw + +Ãw + + `PrݖExû±iÚ +('Node is‡lready‡ child ofhis‚ode.'); + +663 ià(\ +$befÜeNode + && !\ +$this +-> + `hasChždNode +(\$beforeNode)) + +664 +throw + +Ãw + + `PrݖExû±iÚ +('Invalid beforeNode.'); + +666 ià(\ +$cÚ + ==ð +nuÎ +) + +667 \ +$cÚ + = +Prݖ +:: + `g‘CÚÃùiÚ +( +$³”CÏs¢ame +:: +DATABASE_NAME +, Prݖ:: +CONNECTION_WRITE +); + +669 ià(!\ +$this +-> +obj +-> + `isNew +()è\ +$cÚ +-> + `begšT¿n§ùiÚ +(); + +671 +Œy + { + +672 ià(\ +$befÜeNode +) + +675 \ +$chždIdx + = \ +$befÜeNode +-> + `g‘NodeIndex +(); + +676 \ +$this +-> + `shiáChždNodes +(1, \ +$befÜeNode +-> + `g‘NodeIndex +(), \ +$cÚ +); + +681 ià(\ +$Ï¡Node + = \ +$this +-> + `g‘La¡ChždNode +( +Œue +, \ +$cÚ +)) + +682 \ +$chždIdx + = \ +$Ï¡Node +-> + `g‘NodeIndex +()+1; + +684 \ +$chždIdx + = 1; + +689 ià(!\ +$this +-> +obj +-> + `isNew +(è&& \ +$node +->obj->isNew()) + +691 \ +$this +-> + `š£¹NewChždNode +(\ +$node +, \ +$chždIdx +, \ +$cÚ +); + +698 \ +$¤cP©h + = \ +$node +-> + `g‘NodeP©h +(); + +699 \ +$d¡P©h + = \ +$this +-> + `g‘NodeP©h +(è. +$nodeP“rCÏs¢ame +:: +NPATH_SEP + . \ +$chždIdx +; + +701 ià(!\ +$node +-> +obj +-> + `isNew +()) + +703 +$nodeP“rCÏs¢ame +:: + `moveNodeSubT»e +(\ +$¤cP©h +, \ +$d¡P©h +, \ +$cÚ +); + +704 \ +$·»ÁNode + = \ +$node +-> + `g‘P¬’tNode +( +Œue +, \ +$cÚ +); + +708 \ +$·»ÁNode + = \ +$node +-> + `g‘P¬’tNode +(); + +711 ià(\ +$·»ÁNode +) + +713 \ +$·»ÁNode +-> + `d‘achChždNode +(\ +$node +); + +714 \ +$·»ÁNode +-> + `shiáChždNodes +(-1, \ +$node +-> + `g‘NodeIndex +()+1, \ +$cÚ +); + +717 \ +$node +-> + `adju¡NodeP©h +(\ +$¤cP©h +, \ +$d¡P©h +); + +720 ià(!\ +$this +-> +obj +-> + `isNew +()è\ +$cÚ +-> + `comm™ +(); + +722 \ +$this +-> + `©chChždNode +(\ +$node +); + +724 } + `ÿtch + ( +SQLExû±iÚ + \ +$e +) { + +725 ià(!\ +$this +-> +obj +-> + `isNew +()è\ +$cÚ +-> + `rÞlBack +(); + +726 +throw + +Ãw + + `PrݖExû±iÚ +(\ +$e +); + +730 + } +} + +732 +´Ùeùed + +funùiÚ + + $addMoveChždNode +(& +$süt +) + +734 +$süt + .= " + +743 +public + +funùiÚ + + `moveChždNode +(\ +$node +, \ +$dœeùiÚ +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +745 +throw + +Ãw + + `PrݖExû±iÚ +('moveChildNode()‚ot implemented yet.'); + +748 + } +} + +751 +´Ùeùed + +funùiÚ + + $addSave +(& +$süt +) + +754 +$nodeP“rCÏs¢ame + = +$this +-> + `g‘StubNodeP“rBužd” +()-> + `g‘CÏs¢ame +(); + +755 +$süt + .= " + +762 +public + +funùiÚ + + `§ve +(\ +$»cur£ + = +çl£ +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +764 ià(\ +$this +-> +obj +-> + `isD–‘ed +()) + +765 +throw + +Ãw + + `PrݖExû±iÚ +('Cannot save deleted‚ode.'); + +767 ià( + `sub¡r +(\ +$this +-> + `g‘NodeP©h +(), 0, 1) == '0') + +768 +throw + +Ãw + + `PrݖExû±iÚ +('Cannot save unattached‚ode.'); + +770 ià(\ +$this +-> +obj +-> + `isCÞumnModif›d +( +$nodeP“rCÏs¢ame +:: +NPATH_COLNAME +)) + +771 +throw + +Ãw + + `PrݖExû±iÚ +('Cannot save manually modified‚ode…ath.'); + +773 \ +$this +-> +obj +-> + `§ve +(\ +$cÚ +); + +775 ià(\ +$»cur£ +) + +777 + `fܗch + (\ +$this +-> +chždNodes + +as + \ +$chždNode +) + +778 \ +$chždNode +-> + `§ve +(\ +$»cur£ +, \ +$cÚ +); + +782 + } +} + +785 +´Ùeùed + +funùiÚ + + $addD–‘e +(& +$süt +) + +787 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +788 +$nodeP“rCÏs¢ame + = +$this +-> + `g‘StubNodeP“rBužd” +()-> + `g‘CÏs¢ame +(); + +789 +$süt + .= " + +797 +public + +funùiÚ + + `d–‘e +( +PrݖPDO + \ +$cÚ + = +nuÎ +) + +799 ià(\ +$this +-> +obj +-> + `isD–‘ed +()) { + +800 +throw + +Ãw + + `PrݖExû±iÚ +('This‚ode has‡lready been deleted.'); + +803 ià(\ +$cÚ + ==ð +nuÎ +) { + +804 \ +$cÚ + = +Prݖ +:: + `g‘CÚÃùiÚ +( +$³”CÏs¢ame +:: +DATABASE_NAME +, Prݖ:: +CONNECTION_WRITE +); + +807 ià(!\ +$this +-> +obj +-> + `isNew +()) { + +808 +$nodeP“rCÏs¢ame +:: + `d–‘eNodeSubT»e +(\ +$this +-> + `g‘NodeP©h +(), \ +$cÚ +); + +811 ià(\ +$·»ÁNode + = \ +$this +-> + `g‘P¬’tNode +( +Œue +, \ +$cÚ +)) { + +812 \ +$·»ÁNode +-> + `d‘achChždNode +(\ +$this +); + +813 \ +$·»ÁNode +-> + `shiáChždNodes +(-1, \ +$this +-> + `g‘NodeIndex +()+1, \ +$cÚ +); + +816 \ +$this +-> + `£tD–‘ed +( +Œue +); + +819 + } +} + +821 +´Ùeùed + +funùiÚ + + $addEqu®s +(& +$süt +) + +823 +$nodeCÏs¢ame + = +$this +-> + `g‘StubNodeBužd” +()-> + `g‘CÏs¢ame +(); + +824 +$süt + .= " + +834 +public + +funùiÚ + + `equ®s +(\ +$node +, \ +$¡riù + = +çl£ +) + +836 ià(\ +$¡riù +) { + +837  (\ +$this +-> +obj + ==ð\ +$node +->obj); + +839  (\ +$this +-> +obj + =ð\ +$node +->obj); + +843 + } +} + +845 +´Ùeùed + +funùiÚ + + $addA‰achP¬’tNode +(& +$süt +) + +847 +$nodeCÏs¢ame + = +$this +-> + `g‘StubNodeBužd” +()-> + `g‘CÏs¢ame +(); + +848 +$süt + .= " + +858 +public + +funùiÚ + + `©chP¬’tNode +(\ +$node +) + +860 ià(!\ +$node +-> + `hasChždNode +(\ +$this +, +Œue +)) + +861 +throw + +Ãw + + `PrݖExû±iÚ +('Failedo‡ttach…arent‚ode for‚on-child.'); + +863 \ +$this +-> +·»ÁNode + = \ +$node +; + +866 + } +} + +869 +´Ùeùed + +funùiÚ + + $addA‰achChždNode +(& +$süt +) + +871 +$nodeCÏs¢ame + = +$this +-> + `g‘StubNodeBužd” +()-> + `g‘CÏs¢ame +(); + +872 +$nodeP“rCÏs¢ame + = +$this +-> + `g‘StubNodeP“rBužd” +()-> + `g‘CÏs¢ame +(); + +873 +$süt + .= " + +883 +public + +funùiÚ + + `©chChždNode +(\ +$node +) + +885 ià(\ +$this +-> + `hasChždNode +(\ +$node +)) + +886 +throw + +Ãw + + `PrݖExû±iÚ +('Failedo‡ttach child‚ode. Node‡lreadyƒxists.'); + +888 ià(\ +$this +-> +obj +-> + `isD–‘ed +(è|| \ +$node +->obj->isDeleted()) + +889 +throw + +Ãw + + `PrݖExû±iÚ +('Failedo‡ttach‚ode in deleted state.'); + +891 ià(\ +$this +-> +obj +-> + `isNew +(è&& !\ +$node +->obj->isNew()) + +892 +throw + +Ãw + + `PrݖExû±iÚ +('Failedo‡ttach‚on-new childo‚ew‚ode.'); + +894 ià(!\ +$this +-> +obj +-> + `isNew +(è&& \ +$node +->obj->isNew()) + +895 +throw + +Ãw + + `PrݖExû±iÚ +('Failedo‡ttach‚ew childo‚on-new‚ode.'); + +897 ià(\ +$this +-> + `g‘NodeP©h +(è. +$nodeP“rCÏs¢ame +:: +NPATH_SEP + . \ +$node +-> + `g‘NodeIndex +() != \$node->getNodePath()) + +898 +throw + +Ãw + + `PrݖExû±iÚ +('Failedo‡ttach child‚ode. Node…ath mismatch.'); + +900 \ +$this +-> +chždNodes +[\ +$node +-> + `g‘NodeIndex +()] = \$node; + +901 + `ksÜt +(\ +$this +-> +chždNodes +); + +903 \ +$node +-> + `©chP¬’tNode +(\ +$this +); + +906 + } +} + +908 +´Ùeùed + +funùiÚ + + $addD‘achP¬’tNode +(& +$süt +) + +910 +$nodeCÏs¢ame + = +$this +-> + `g‘StubNodeBužd” +()-> + `g‘CÏs¢ame +(); + +911 +$süt + .= " + +919 +public + +funùiÚ + + `d‘achP¬’tNode +(\ +$node +) + +921 ià(!\ +$node +-> + `hasChždNode +(\ +$this +, +Œue +)) + +922 +throw + +Ãw + + `PrݖExû±iÚ +('Failedo detach…arent‚ode from‚on-child.'); + +924 + `un£t +(\ +$node +-> +chždNodes +[\ +$this +-> + `g‘NodeIndex +()]); + +925 \ +$this +-> +·»ÁNode + = +nuÎ +; + +928 + } +} + +930 +´Ùeùed + +funùiÚ + + $addD‘achChždNode +(& +$süt +) + +932 +$süt + .= " + +940 +public + +funùiÚ + + `d‘achChždNode +(\ +$node +) + +942 ià(!\ +$this +-> + `hasChždNode +(\ +$node +, +Œue +)) + +943 +throw + +Ãw + + `PrݖExû±iÚ +('Failedo detach‚on-existent child‚ode.'); + +945 + `un£t +(\ +$this +-> +chždNodes +[\ +$node +-> + `g‘NodeIndex +()]); + +946 \ +$node +-> +·»ÁNode + = +nuÎ +; + +949 + } +} + +951 +´Ùeùed + +funùiÚ + + $addShiáChždNodes +(& +$süt +) + +953 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +954 +$nodeP“rCÏs¢ame + = +$this +-> + `g‘StubNodeP“rBužd” +()-> + `g‘CÏs¢ame +(); + +956 +$süt + .= " + +968 +´Ùeùed + +funùiÚ + + `shiáChždNodes +(\ +$dœeùiÚ +, \ +$off£tIdx +, +PrݖPDO + \ +$cÚ +) + +970 ià(\ +$this +-> +obj +-> + `isD–‘ed +()) + +971 +throw + +Ãw + + `PrݖExû±iÚ +('Cannot shift‚odes for deleted object'); + +973 \ +$Ï¡Node + = \ +$this +-> + `g‘La¡ChždNode +( +Œue +, \ +$cÚ +); + +974 \ +$Ï¡Idx + = (\ +$Ï¡Node + !=ð +nuÎ + ? \$Ï¡Node-> + `g‘NodeIndex +() : 0); + +976 ià(\ +$Ï¡Node + ==ð +nuÎ + || \ +$off£tIdx + > \ +$Ï¡Idx +) + +979 ià(\ +$cÚ + ==ð +nuÎ +) + +980 \ +$cÚ + = +Prݖ +:: + `g‘CÚÃùiÚ +( +$³”CÏs¢ame +:: +DATABASE_NAME +); + +982 ià(!\ +$this +-> +obj +-> + `isNew +()) + +986 \ +$cÚ +-> + `begšT¿n§ùiÚ +(); + +988 +Œy + { + +989 \ +$n + = \ +$Ï¡Idx + - \ +$off£tIdx + + 1; + +990 \ +$i + = \ +$dœeùiÚ + < 1 ? \ +$off£tIdx + : \ +$Ï¡Idx +; + +992 \ +$n +--) + +994 \ +$¤cP©h + = \ +$this +-> + `g‘NodeP©h +(è. +$nodeP“rCÏs¢ame +:: +NPATH_SEP + . \ +$i +; + +995 \ +$d¡P©h + = \ +$this +-> + `g‘NodeP©h +(è. +$nodeP“rCÏs¢ame +:: +NPATH_SEP + . (\ +$i ++\ +$dœeùiÚ +); + +997 +$nodeP“rCÏs¢ame +:: + `moveNodeSubT»e +(\ +$¤cP©h +, \ +$d¡P©h +, \ +$cÚ +); + +999 \ +$i + -ð\ +$dœeùiÚ +; + +1002 \ +$cÚ +-> + `comm™ +(); + +1004 } + `ÿtch + ( +SQLExû±iÚ + \ +$e +) { + +1005 \ +$cÚ +-> + `rÞlBack +(); + +1006 +throw + +Ãw + + `PrݖExû±iÚ +(\ +$e +); + +1012 \ +$n + = \ +$Ï¡Idx + - \ +$off£tIdx + + 1; + +1013 \ +$i + = \ +$dœeùiÚ + < 1 ? \ +$off£tIdx + : \ +$Ï¡Idx +; + +1015 \ +$n +--) + +1017 ià( + `is£t +(\ +$this +-> +chždNodes +[\ +$i +])) + +1019 \ +$¤cP©h + = \ +$this +-> + `g‘NodeP©h +(è. +$nodeP“rCÏs¢ame +:: +NPATH_SEP + . \ +$i +; + +1020 \ +$d¡P©h + = \ +$this +-> + `g‘NodeP©h +(è. +$nodeP“rCÏs¢ame +:: +NPATH_SEP + . (\ +$i ++\ +$dœeùiÚ +); + +1022 \ +$this +-> +chždNodes +[\ +$i ++\ +$dœeùiÚ +] = \$this->childNodes[\$i]; + +1023 \ +$this +-> +chždNodes +[\ +$i ++\ +$dœeùiÚ +]-> + `adju¡NodeP©h +(\ +$¤cP©h +, \ +$d¡P©h +); + +1025 + `un£t +(\ +$this +-> +chždNodes +[\ +$i +]); + +1028 \ +$i + -ð\ +$dœeùiÚ +; + +1031 + `ksÜt +(\ +$this +-> +chždNodes +); + +1034 + } +} + +1036 +´Ùeùed + +funùiÚ + + $addIn£¹NewChždNode +(& +$süt +) + +1038 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +1039 +$nodeP“rCÏs¢ame + = +$this +-> + `g‘StubNodeP“rBužd” +()-> + `g‘CÏs¢ame +(); + +1040 +$nodeCÏs¢ame + = +$this +-> + `g‘StubNodeP“rBužd” +()-> + `g‘CÏs¢ame +(); + +1042 +$süt + .= " + +1051 +´Ùeùed + +funùiÚ + + `š£¹NewChždNode +(\ +$node +, \ +$chždIdx +, +PrݖPDO + \ +$cÚ +) + +1053 ià(!\ +$node +-> +obj +-> + `isNew +()) + +1054 +throw + +Ãw + + `PrݖExû±iÚ +('Failedo insert‚on-new‚ode.'); + +1056 \ +$£tNodeP©h + = '£t' . +$nodeP“rCÏs¢ame +:: +NPATH_PHPNAME +; + +1058 \ +$node +-> +obj +->\ + `$£tNodeP©h +(\ +$this +-> + `g‘NodeP©h +(è. +$nodeP“rCÏs¢ame +:: +NPATH_SEP + . \ +$chždIdx +); + +1059 \ +$node +-> +obj +-> + `§ve +(\ +$cÚ +); + +1061 \ +$i + = 1; + +1062 + `fܗch + (\ +$node +-> +chždNodes + +as + \ +$chždNode +) + +1063 \ +$node +-> + `š£¹NewChždNode +(\ +$chždNode +, \ +$i +++, \ +$cÚ +); + +1066 + } +} + +1068 +´Ùeùed + +funùiÚ + + $addAdju¡Stus +(& +$süt +) + +1070 +$süt + .= " + +1078 +´Ùeùed + +funùiÚ + + `adju¡Stus +(\ +$¡©us +, \ +$b +) + +1080 \ +$£tStus + = '£t' . \ +$¡©us +; + +1082 \ +$this +-> +obj +->\ + `$£tStus +(\ +$b +); + +1084 + `fܗch + (\ +$this +-> +chždNodes + +as + \ +$chždNode +) + +1085 \ +$chždNode +-> +obj +->\ + `$£tStus +(\ +$b +); + +1088 + } +} + +1090 +´Ùeùed + +funùiÚ + + $addAdju¡NodeP©h +(& +$süt +) + +1092 +$nodeP“rCÏs¢ame + = +$this +-> + `g‘StubNodeP“rBužd” +()-> + `g‘CÏs¢ame +(); + +1093 +$süt + .= " + +1102 +´Ùeùed + +funùiÚ + + `adju¡NodeP©h +(\ +$ÞdBa£P©h +, \ +$ÃwBa£P©h +) + +1104 \ +$£tNodeP©h + = '£t' . +$nodeP“rCÏs¢ame +:: +NPATH_PHPNAME +; + +1106 \ +$this +-> +obj +->\ + `$£tNodeP©h +(\ +$ÃwBa£P©h + . + `sub¡r +(\$this-> + `g‘NodeP©h +(), + `¡¾’ +(\ +$ÞdBa£P©h +))); + +1107 \ +$this +-> +obj +-> + `»£tModif›d +( +$nodeP“rCÏs¢ame +:: +NPATH_COLNAME +); + +1109 + `fܗch + (\ +$this +-> +chždNodes + +as + \ +$chždNode +) + +1110 \ +$chždNode +-> + `adju¡NodeP©h +(\ +$ÞdBa£P©h +, \ +$ÃwBa£P©h +); + +1113 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5NodePeerBuilder.php + +1 + `g‘BuždPrݔty +('ba£P»fix'è. $this-> + `g‘StubNodeP“rBužd” +()-> + `g‘UÅ»fixedCÏs¢ame +(); + +55 + } +} + +61 +´Ùeùed + +funùiÚ + + $addInþudes +(& +$süt +) + +63 + } +} + +69 +´Ùeùed + +funùiÚ + + $addCÏssO³n +(& +$süt +) + +72 +$bË + = +$this +-> + `g‘TabË +(); + +73 +$bËName + = +$bË +-> + `g‘Name +(); + +74 +$bËDesc + = +$bË +-> + `g‘DesütiÚ +(); + +76 +$süt + .= " + +93 +ab¡¿ù + +þass + ".$this->getClassname()." { + +102 +´Ùeùed + +funùiÚ + + `addCÏssBody +(& +$süt +) + +104 +$bË + = +$this +-> + `g‘TabË +(); + +110 +$this +-> + `addCÚ¡ªts +( +$süt +); + +112 +$this +-> + `addIsCodeBa£ +( +$süt +); + +114 +$this +-> + `addR‘r›veM‘hods +( +$süt +); + +116 +$this +-> + `addC»©eNewRoÙNode +( +$süt +); + +117 +$this +-> + `addIn£¹NewRoÙNode +( +$süt +); + +118 +$this +-> + `addMoveNodeSubT»e +( +$süt +); + +119 +$this +-> + `addD–‘eNodeSubT»e +( +$süt +); + +121 +$this +-> + `addBuždFamžyCr™”Ÿ +( +$süt +); + +122 +$this +-> + `addBuždT»e +( +$süt +); + +124 +$this +-> + `addPÝuϋNodes +( +$süt +); + +132 +´Ùeùed + +funùiÚ + + `addCÏssClo£ +(& +$süt +) + +134 +$süt + .= " + +137 + } +} + +139 +´Ùeùed + +funùiÚ + + $addCÚ¡ªts +(& +$süt +) + +141 +$bË + = +$this +-> + `g‘TabË +(); + +143 +$Å©h_cÞÇme + = ''; + +144 +$Å©h_ph²ame + = ''; + +145 +$Å©h_Ën + = 0; + +146 +$Å©h_£p + = ''; + +147 + `fܗch + ( +$bË +-> + `g‘CÞumns +(è +as + +$cÞ +) { + +148 ià( +$cÞ +-> + `isNodeKey +()) { + +149 +$Å©h_cÞÇme + = +$bË +-> + `g‘Name +(è. '.' . + `¡¹ouµ” +( +$cÞ +->getName()); + +150 +$Å©h_ph²ame + = +$cÞ +-> + `g‘PhpName +(); + +151 +$Å©h_Ën + = +$cÞ +-> + `g‘Size +(); + +152 +$Å©h_£p + = +$cÞ +-> + `g‘NodeKeyS• +(); + +156 +$süt + .= " + +157 cÚ¡ +NPATH_COLNAME + = '$npath_colname'; + +158 cÚ¡ +NPATH_PHPNAME + = '$npath_phpname'; + +159 cÚ¡ +NPATH_SEP + = '$npath_sep'; + +160 cÚ¡ +NPATH_LEN + = +$Å©h_Ën +; + +162 + } +} + +165 +´Ùeùed + +funùiÚ + + $addIsCodeBa£ +(& +$süt +) + +167 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +168 +$nodeP“rCÏs¢ame + = +$this +-> + `g‘StubNodeP“rBužd” +()-> + `g‘CÏs¢ame +(); + +170 +$süt + .= " + +174 +public +  +funùiÚ + + `isCodeBa£ +(\ +$cÚ + = +nuÎ +) + +176 ià(\ +$cÚ + ==ð +nuÎ +) + +177 \ +$cÚ + = +Prݖ +:: + `g‘CÚÃùiÚ +( +$³”CÏs¢ame +:: +DATABASE_NAME +); + +179  ( + `g‘_þass +(\ +$cÚ +) == 'ODBCConnection' && + +180 + `g‘_þass +(\ +$cÚ +-> + `g‘Ad­‹r +()) == 'CodeBaseAdapter'); + +183 + } +} + +186 +´Ùeùed + +funùiÚ + + $addC»©eNewRoÙNode +(& +$süt +) + +188 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +189 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +191 +$nodeP“rCÏs¢ame + = +$this +-> + `g‘StubNodeP“rBužd” +()-> + `g‘CÏs¢ame +(); + +192 +$nodeObjeùCÏs¢ame + = +$this +-> + `g‘StubNodeBužd” +()-> + `g‘CÏs¢ame +(); + +194 +$süt + .= " + +206 +public +  +funùiÚ + + `ü—‹NewRoÙNode +(\ +$obj +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +208 ià(\ +$cÚ + ==ð +nuÎ +) + +209 \ +$cÚ + = +Prݖ +:: + `g‘CÚÃùiÚ +( +$³”CÏs¢ame +:: +DATABASE_NAME +, Prݖ:: +CONNECTION_WRITE +); + +211 \ +$cÚ +-> + `begšT¿n§ùiÚ +(); + +213 +Œy + { + +214 +£lf +:: + `d–‘eNodeSubT»e +('1', \ +$cÚ +); + +216 \ +$£tNodeP©h + = '£t' . +£lf +:: +NPATH_PHPNAME +; + +218 \ +$obj +->\ + `$£tNodeP©h +('1'); + +219 \ +$obj +-> + `§ve +(\ +$cÚ +); + +221 \ +$cÚ +-> + `comm™ +(); + +222 } + `ÿtch + ( +PrݖExû±iÚ + \ +$e +) { + +223 \ +$cÚ +-> + `rÞlBack +(); + +224 +throw + \ +$e +; + +227  +Ãw + + `$nodeObjeùCÏs¢ame +(\ +$obj +); + +230 + } +} + +232 +´Ùeùed + +funùiÚ + + $addIn£¹NewRoÙNode +(& +$süt +) + +234 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +235 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +237 +$nodeP“rCÏs¢ame + = +$this +-> + `g‘StubNodeP“rBužd” +()-> + `g‘CÏs¢ame +(); + +238 +$nodeObjeùCÏs¢ame + = +$this +-> + `g‘StubNodeBužd” +()-> + `g‘CÏs¢ame +(); + +240 +$süt + .= " + +251 +public +  +funùiÚ + + `š£¹NewRoÙNode +(\ +$obj +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +253 ià(\ +$cÚ + ==ð +nuÎ +) + +254 \ +$cÚ + = +Prݖ +:: + `g‘CÚÃùiÚ +( +$³”CÏs¢ame +:: +DATABASE_NAME +, Prݖ:: +CONNECTION_WRITE +); + +256 \ +$cÚ +-> + `begšT¿n§ùiÚ +(); + +257 +Œy + { + +259 +$nodeP“rCÏs¢ame +:: + `moveNodeSubT»e +('1', '0', \ +$cÚ +); + +261 \ +$£tNodeP©h + = '£t' . +£lf +:: +NPATH_PHPNAME +; + +264 \ +$obj +->\ + `$£tNodeP©h +('1'); + +265 \ +$obj +-> + `§ve +(\ +$cÚ +); + +268 +$nodeP“rCÏs¢ame +:: + `moveNodeSubT»e +('0', '1' . +£lf +:: +NPATH_SEP + . '1', \ +$cÚ +); + +270 \ +$cÚ +-> + `comm™ +(); + +271 } + `ÿtch + ( +PrݖExû±iÚ + \ +$e +) { + +272 \ +$cÚ +-> + `rÞlBack +(); + +273 +throw + \ +$e +; + +276  +Ãw + + `$nodeObjeùCÏs¢ame +(\ +$obj +); + +279 + } +} + +284 +´Ùeùed + +funùiÚ + + $addR‘r›veM‘hods +(& +$süt +) + +286 +$this +-> + `addR‘r›veNodes +( +$süt +); + +287 +$this +-> + `addR‘r›veNodeByPK +( +$süt +); + +288 +$this +-> + `addR‘r›veNodeByNP +( +$süt +); + +289 +$this +-> + `addR‘r›veRoÙNode +( +$süt +); + +291 + } +} + +293 +´Ùeùed + +funùiÚ + + $addR‘r›veNodes +(& +$süt +) + +295 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +296 +$nodeP“rCÏs¢ame + = +$this +-> + `g‘StubNodeP“rBužd” +()-> + `g‘CÏs¢ame +(); + +298 +$süt + .= " + +309 +public +  +funùiÚ + + `»Œ›veNodes +(\ +$ü™”Ÿ +, \ +$ªû¡Üs + = +çl£ +, \ +$desûndªts + = f®£, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +311 \ +$ü™”Ÿ + = +$nodeP“rCÏs¢ame +:: + `buždFamžyCr™”Ÿ +(\$ü™”Ÿ, \ +$ªû¡Üs +, \ +$desûndªts +); + +312 \ +$¡mt + = ".$this->g‘StubP“rBužd”()->g‘CÏs¢ame().":: + `doS–eùStmt +(\ +$ü™”Ÿ +, \ +$cÚ +); + +313  +£lf +:: + `pÝuϋNodes +(\ +$¡mt +, \ +$ü™”Ÿ +); + +316 + } +} + +318 +´Ùeùed + +funùiÚ + + $addR‘r›veNodeByPK +(& +$süt +) + +320 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +321 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +323 +$nodeP“rCÏs¢ame + = +$this +-> + `g‘StubNodeP“rBužd” +()-> + `g‘CÏs¢ame +(); + +324 +$nodeObjeùCÏs¢ame + = +$this +-> + `g‘StubNodeBužd” +()-> + `g‘CÏs¢ame +(); + +326 +$süt + .= " + +337 +public +  +funùiÚ + + `»Œ›veNodeByPK +(\ +$pk +, \ +$ªû¡Üs + = +çl£ +, \ +$desûndªts + = f®£, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +339 +throw + +Ãw + + `PrݖExû±iÚ +('retrieveNodeByPK()‚ot implemented yet.'); + +342 + } +} + +344 +´Ùeùed + +funùiÚ + + $addR‘r›veNodeByNP +(& +$süt +) + +346 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +347 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +349 +$nodeP“rCÏs¢ame + = +$this +-> + `g‘StubNodeP“rBužd” +()-> + `g‘CÏs¢ame +(); + +350 +$nodeObjeùCÏs¢ame + = +$this +-> + `g‘StubNodeBužd” +()-> + `g‘CÏs¢ame +(); + +352 +$süt + .= " + +363 +public +  +funùiÚ + + `»Œ›veNodeByNP +(\ +$Å +, \ +$ªû¡Üs + = +çl£ +, \ +$desûndªts + = f®£, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +365 \ +$ü™”Ÿ + = +Ãw + + `Cr™”Ÿ +( +$³”CÏs¢ame +:: +DATABASE_NAME +); + +366 \ +$ü™”Ÿ +-> + `add +( +£lf +:: +NPATH_COLNAME +, \ +$Å +, +Cr™”Ÿ +:: +EQUAL +); + +367 \ +$ü™”Ÿ + = +£lf +:: + `buždFamžyCr™”Ÿ +(\$ü™”Ÿ, \ +$ªû¡Üs +, \ +$desûndªts +); + +368 \ +$¡mt + = +$³”CÏs¢ame +:: + `doS–eùStmt +(\ +$ü™”Ÿ +, \ +$cÚ +); + +369 \ +$nodes + = +£lf +:: + `pÝuϋNodes +(\ +$¡mt +, \ +$ü™”Ÿ +); + +370  ( + `couÁ +(\ +$nodes +è=ð1 ? \$nodes[0] : +nuÎ +); + +373 + } +} + +375 +´Ùeùed + +funùiÚ + + $addR‘r›veRoÙNode +(& +$süt +) + +377 +$süt + .= " + +386 +public +  +funùiÚ + + `»Œ›veRoÙNode +(\ +$desûndªts + = +çl£ +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +388  +£lf +:: + `»Œ›veNodeByNP +('1', +çl£ +, \ +$desûndªts +, \ +$cÚ +); + +391 + } +} + +393 +´Ùeùed + +funùiÚ + + $addMoveNodeSubT»e +(& +$süt +) + +395 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +396 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +398 +$nodeP“rCÏs¢ame + = +$this +-> + `g‘StubNodeP“rBužd” +()-> + `g‘CÏs¢ame +(); + +399 +$nodeObjeùCÏs¢ame + = +$this +-> + `g‘StubNodeBužd” +()-> + `g‘CÏs¢ame +(); + +401 +$süt + .= " + +420 +public +  +funùiÚ + + `moveNodeSubT»e +(\ +$¤cP©h +, \ +$d¡P©h +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +422 ià( + `sub¡r +(\ +$d¡P©h +, 0, + `¡¾’ +(\ +$¤cP©h +)) == \$srcPath) + +423 +throw + +Ãw + + `PrݖExû±iÚ +('Cannot move‡‚ode subtree within itself.'); + +425 ià(\ +$cÚ + ==ð +nuÎ +) + +426 \ +$cÚ + = +Prݖ +:: + `g‘CÚÃùiÚ +( +$³”CÏs¢ame +:: +DATABASE_NAME +, Prݖ:: +CONNECTION_WRITE +); + +435 \ +$Å©h + = +$nodeP“rCÏs¢ame +:: +NPATH_COLNAME +; + +437 \ +$£tcÞ + = + `sub¡r +(\ +$Å©h +, + `¡¼pos +(\$npath, '.')+1); + +438 \ +$£tcÞËn + = +$nodeP“rCÏs¢ame +:: +NPATH_LEN +; + +439 \ +$db + = +Prݖ +:: + `g‘Db +( +$³”CÏs¢ame +:: +DATABASE_NAME +); + +442 ià( +$nodeP“rCÏs¢ame +:: + `isCodeBa£ +(\ +$cÚ +)) + +447 \ +$sql + = \"UPDATE \" . $peerClassname::TABLE_NAME . \" \" . + +451 \ +$cÚ +-> + `execu‹Upd©e +(\ +$sql +); + +456 \ +$sql + = \"UPDATE \" . $peerClassname::TABLE_NAME . \" \" . + +460 \ +$¡mt + = \ +$cÚ +-> + `´•¬e +(\ +$sql +); + +461 \ +$¡mt +-> + `bšdV®ue +(1, \ +$d¡P©h +); + +462 \ +$¤cP©hPlus1 + = + `¡¾’ +(\ +$¤cP©h +)+1; + +463 \ +$¡mt +-> + `bšdV®ue +(2, \ +$¤cP©hPlus1 +); + +464 \ +$¡mt +-> + `bšdV®ue +(3, \ +$£tcÞËn +); + +465 \ +$¡mt +-> + `bšdV®ue +(4, \ +$¤cP©h +); + +466 \ +$¤cP©hWC + = \ +$¤cP©h + . +$nodeP“rCÏs¢ame +:: +NPATH_SEP + . '%'; + +467 \ +$¡mt +-> + `bšdV®ue +(5, \ +$¤cP©hWC +); + +468 \ +$¡mt +-> + `execu‹ +(); + +473 + } +} + +475 +´Ùeùed + +funùiÚ + + $addD–‘eNodeSubT»e +(& +$süt +) + +477 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +478 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +480 +$nodeP“rCÏs¢ame + = +$this +-> + `g‘StubNodeP“rBužd” +()-> + `g‘CÏs¢ame +(); + +481 +$nodeObjeùCÏs¢ame + = +$this +-> + `g‘StubNodeBužd” +()-> + `g‘CÏs¢ame +(); + +483 +$süt + .= " + +493 +public +  +funùiÚ + + `d–‘eNodeSubT»e +(\ +$nodeP©h +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +495 ià(\ +$cÚ + ==ð +nuÎ +) + +496 \ +$cÚ + = +Prݖ +:: + `g‘CÚÃùiÚ +( +$³”CÏs¢ame +:: +DATABASE_NAME +, Prݖ:: +CONNECTION_WRITE +); + +503 \ +$ü™”Ÿ + = +Ãw + + `Cr™”Ÿ +( +$³”CÏs¢ame +:: +DATABASE_NAME +); + +504 \ +$ü™”Ÿ +-> + `add +( +$nodeP“rCÏs¢ame +:: +NPATH_COLNAME +, \ +$nodeP©h +, +Cr™”Ÿ +:: +EQUAL +); + +505 \ +$ü™”Ÿ +-> + `addOr +( +$nodeP“rCÏs¢ame +:: +NPATH_COLNAME +, \ +$nodeP©h + . +£lf +:: +NPATH_SEP + . '%', +Cr™”Ÿ +:: +LIKE +); + +506 { +$this +-> +ba£P“rCÏs¢ame +}:: + `doD–‘e +(\ +$ü™”Ÿ +, \ +$cÚ +); + +509 + } +} + +511 +´Ùeùed + +funùiÚ + + $addBuždFamžyCr™”Ÿ +(& +$süt +) + +513 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +514 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +516 +$nodeP“rCÏs¢ame + = +$this +-> + `g‘StubNodeP“rBužd” +()-> + `g‘CÏs¢ame +(); + +517 +$nodeObjeùCÏs¢ame + = +$this +-> + `g‘StubNodeBužd” +()-> + `g‘CÏs¢ame +(); + +519 +$süt + .= " + +528 +public +  +funùiÚ + + `buždFamžyCr™”Ÿ +(\ +$ü™”Ÿ +, \ +$ªû¡Üs + = +çl£ +, \ +$desûndªts + = false) + +541 ià(\ +$ü™”Ÿ + ==ð +nuÎ +) + +542 \ +$ü™”Ÿ + = +Ãw + + `Cr™”Ÿ +( +$³”CÏs¢ame +:: +DATABASE_NAME +); + +544 ià(!\ +$ü™”Ÿ +-> + `g‘S–eùCÞumns +()) + +545 +$³”CÏs¢ame +:: + `addS–eùCÞumns +(\ +$ü™”Ÿ +); + +547 \ +$db + = +Prݖ +:: + `g‘Db +(\ +$ü™”Ÿ +-> + `g‘DbName +()); + +549 ià((\ +$ªû¡Üs + || \ +$desûndªts +è&& \ +$ü™”Ÿ +-> + `size +()) + +564 \ +$ü™”Ÿ +-> + `addAlŸs +('L', +$³”CÏs¢ame +:: +TABLE_NAME +); + +567 ià(!\ +$ü™”Ÿ +-> + `g‘S–eùCÞumns +()) + +568 +$³”CÏs¢ame +:: + `addS–eùCÞumns +(\ +$ü™”Ÿ +); + +572 \ +$£ËùCÞumns + = \ +$ü™”Ÿ +-> + `g‘S–eùCÞumns +(); + +573 \ +$ü™”Ÿ +-> + `þ—rS–eùCÞumns +(); + +574 + `fܗch + (\ +$£ËùCÞumns + +as + \ +$cÞName +) + +575 \ +$ü™”Ÿ +-> + `addS–eùCÞumn +( + `¡r_»¶aû +( +$³”CÏs¢ame +:: +TABLE_NAME +, 'L', \ +$cÞName +)); + +577 \ +$a + = +nuÎ +; + +578 \ +$d + = +nuÎ +; + +580 \ +$Å©hL + = +$³”CÏs¢ame +:: + `®Ÿs +('L', +$nodeP“rCÏs¢ame +:: +NPATH_COLNAME +); + +581 \ +$Å©hR + = +$nodeP“rCÏs¢ame +:: +NPATH_COLNAME +; + +582 \ +$Å©h_Ën + = +$nodeP“rCÏs¢ame +:: +NPATH_LEN +; + +584 ià(\ +$ªû¡Üs +) + +588 \ +$a + = \ +$ü™”Ÿ +-> + `g‘NewCr™”iÚ +(\ +$Å©hL +, + +590 +Cr™”Ÿ +:: +CUSTOM +); + +593 ià(\ +$desûndªts +) + +597 \ +$d + = \ +$ü™”Ÿ +-> + `g‘NewCr™”iÚ +(\ +$Å©hR +, + +599 +Cr™”Ÿ +:: +CUSTOM +); + +602 ià(\ +$a +) + +604 ià(\ +$d +è\ +$a +-> + `addOr +(\$d); + +605 \ +$ü™”Ÿ +-> + `addAnd +(\ +$a +); + +607 ià(\ +$d +) + +609 \ +$ü™”Ÿ +-> + `addAnd +(\ +$d +); + +613 \ +$ü™”Ÿ +-> + `addS–eùCÞumn +(\ +$Å©hR +); + +616 \ +$ü™”Ÿ +-> + `addAsCÞumn +('Å©hËn', \ +$db +-> + `¡rL’gth +(\ +$Å©hL +)); + +617 \ +$ü™”Ÿ +-> + `addAsûndšgOrd”ByCÞumn +('npathlen'); + +618 \ +$ü™”Ÿ +-> + `addAsûndšgOrd”ByCÞumn +(\ +$Å©hL +); + +623 \ +$ü™”Ÿ +-> + `addS–eùCÞumn +( +$nodeP“rCÏs¢ame +:: +NPATH_COLNAME +); + +626 \ +$ü™”Ÿ +-> + `addAsCÞumn +('Å©hËn', \ +$db +-> + `¡rL’gth +( +$nodeP“rCÏs¢ame +:: +NPATH_COLNAME +)); + +627 \ +$ü™”Ÿ +-> + `addAsûndšgOrd”ByCÞumn +('npathlen'); + +628 \ +$ü™”Ÿ +-> + `addAsûndšgOrd”ByCÞumn +( +$nodeP“rCÏs¢ame +:: +NPATH_COLNAME +); + +631  \ +$ü™”Ÿ +; + +634 + } +} + +636 +´Ùeùed + +funùiÚ + + $addBuždT»e +(& +$süt +) + +638 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +639 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +641 +$nodeP“rCÏs¢ame + = +$this +-> + `g‘StubNodeP“rBužd” +()-> + `g‘CÏs¢ame +(); + +642 +$nodeObjeùCÏs¢ame + = +$this +-> + `g‘StubNodeBužd” +()-> + `g‘CÏs¢ame +(); + +644 +$süt + .= " + +657 +public +  +funùiÚ + + `buždT»e +(\ +$nodes +) + +660 \ +$roÙNodes + = + `¬¿y +(); + +663 + `fܗch + (\ +$nodes + +as + \ +$node +) + +665 \ +$£p + = + `¡¼pos +(\ +$node +-> + `g‘NodeP©h +(), +$nodeP“rCÏs¢ame +:: +NPATH_SEP +); + +666 \ +$·»ÁP©h + = (\ +$£p + !=ð +çl£ + ? + `sub¡r +(\ +$node +-> + `g‘NodeP©h +(), 0, \$sep) : ''); + +667 \ +$·»ÁNode + = +nuÎ +; + +670 + `fܗch + (\ +$nodes + +as + \ +$²ode +) + +672 ià(\ +$²ode +-> + `g‘NodeP©h +(è==ð\ +$·»ÁP©h +) + +674 \ +$·»ÁNode + = \ +$²ode +; + +680 ià(\ +$·»ÁNode +) + +681 \ +$·»ÁNode +-> + `©chChždNode +(\ +$node +); + +683 \ +$roÙNodes +[] = \ +$node +; + +686  \ +$roÙNodes +; + +689 + } +} + +691 +´Ùeùed + +funùiÚ + + $addPÝuϋNodes +(& +$süt +) + +693 +$bË + = +$this +-> + `g‘TabË +(); + +695 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +696 +$objeùCÏs¢ame + = +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +(); + +698 +$nodeP“rCÏs¢ame + = +$this +-> + `g‘StubNodeP“rBužd” +()-> + `g‘CÏs¢ame +(); + +699 +$nodeObjeùCÏs¢ame + = +$this +-> + `g‘StubNodeBužd” +()-> + `g‘CÏs¢ame +(); + +701 +$süt + .= " + +715 +public +  +funùiÚ + + `pÝuϋNodes +( +PDOS‹m’t + \ +$¡mt +, \ +$ü™”Ÿ +) + +717 \ +$nodes + = + `¬¿y +(); + +718 \ +$rg‘s + = + `¬¿y +(); + +719 \ +$rg‘æd + = + `couÁ +(\ +$ü™”Ÿ +-> + `g‘S–eùCÞumns +()); + +722 ià(! +$bË +-> + `g‘Chžd»nCÞumn +()) { + +723 +$süt + .= " + +725 \ +$þs + = +$³”CÏs¢ame +:: + `g‘OMCÏss +(); + +726 \ +$þs + = + `sub¡r +('.'.\$þs, + `¡¼pos +('.'.\$cls, '.') + 1); + +730 +$süt + .= " + +732 + `fܗch +(\ +$¡mt +-> + `ãtchAÎ +(è +AS + \ +$row +) + +734 ià(! + `is£t +(\ +$nodes +[\ +$row +[0]])) + +737 ià( +$bË +-> + `g‘Chžd»nCÞumn +()) { + +738 +$süt + .= " + +740 \ +$þs + = +$³”CÏs¢ame +:: + `g‘OMCÏss +(\ +$row +, 1); + +741 \ +$þs + = + `sub¡r +('.'.\$þs, + `¡¼pos +('.'.\$cls, '.') + 1); + +745 +$süt + .= " + +747 \ +$obj +-> + `hyd¿‹ +(\ +$row +); + +749 \ +$nodes +[\ +$row +[0]] = +Ãw + + `$nodeObjeùCÏs¢ame +(\ +$obj +); + +752 \ +$node + = \ +$nodes +[\ +$row +[0]]; + +754 ià(\ +$node +-> + `g‘NodeP©h +(è==ð\ +$row +[\ +$rg‘æd +]) + +755 \ +$rg‘s +[\ +$node +-> + `g‘NodeP©h +()] = \$node; + +758 +$nodeP“rCÏs¢ame +:: + `buždT»e +(\ +$nodes +); + +760  + `¬¿y_v®ues +(\ +$rg‘s +); + +763 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5ObjectBuilder.php + +1 + `g‘BuždPrݔty +('ba£P»fix'è. $this-> + `g‘StubObjeùBužd” +()-> + `g‘UÅ»fixedCÏs¢ame +(); + +52 + } +} + +62 +´Ùeùed + +funùiÚ + + $v®id©eMod– +() + +64 +·»Á +:: + `v®id©eMod– +(); + +66 +$bË + = +$this +-> + `g‘TabË +(); + +71 +$cÞPhpNames + = + `¬¿y +(); + +72 +$fkPhpNames + = + `¬¿y +(); + +74 + `fܗch + ( +$bË +-> + `g‘CÞumns +(è +as + +$cÞ +) { + +75 +$cÞPhpNames +[] = +$cÞ +-> + `g‘PhpName +(); + +78 + `fܗch + ( +$bË +-> + `g‘FÜeignKeys +(è +as + +$fk +) { + +79 +$fkPhpNames +[] = +$this +-> + `g‘FKPhpNameAffix +( +$fk +, +$¶u¿l + = +çl£ +); + +82 +$š‹r£ù + = + `¬¿y_š‹r£ù +( +$cÞPhpNames +, +$fkPhpNames +); + +83 ià(! + `em±y +( +$š‹r£ù +)) { + +84 +throw + +Ãw + + `EngšeExû±iÚ +("Oà o¸mܐoàyou¸cÞumÀÇme fÜ [" . +$bË +-> + `g‘Name +(è. "]abË cÚæiù w™h fÜeigÀkey‚ame (" . + `im¶ode +(", ", +$š‹r£ù +) . ")"); + +92 + `fܗch + ( +$bË +-> + `g‘FÜeignKeys +(è +as + +$fk +) { + +93 ià( +$fk +-> + `isM©chedByInv”£FK +()) { + +94 +throw + +Ãw + + `EngšeExû±iÚ +("Th1:1„–©iÚshƒx´es£d by fÜeigÀkey " . +$fk +-> + `g‘Name +() . " is defined in both directions; Propel does‚ot currently supporthis (if you must have both foreign key constraints, consider‡ddinghis constraint with‡ custom SQL file.)" ); + +97 + } +} + +104 +´Ùeùed + +funùiÚ + + $g‘TempÜ®FÜm©‹r +( +CÞumn + +$cÞ +) + +106 +$fmt + = +nuÎ +; + +107 ià( +$cÞ +-> + `g‘Ty³ +(è==ð +PrݖTy³s +:: +DATE +) { + +108 +$fmt + = +$this +-> + `g‘PÏtfÜm +()-> + `g‘D©eFÜm©‹r +(); + +109 } + `–£if + ( +$cÞ +-> + `g‘Ty³ +(è==ð +PrݖTy³s +:: +TIME +) { + +110 +$fmt + = +$this +-> + `g‘PÏtfÜm +()-> + `g‘TimeFÜm©‹r +(); + +111 } + `–£if + ( +$cÞ +-> + `g‘Ty³ +(è==ð +PrݖTy³s +:: +TIMESTAMP +) { + +112 +$fmt + = +$this +-> + `g‘PÏtfÜm +()-> + `g‘Time¡ampFÜm©‹r +(); + +114  +$fmt +; + +115 + } +} + +122 +´Ùeùed + +funùiÚ + + $g‘DeçuÉV®ueSŒšg +( +CÞumn + +$cÞ +) + +124 +$deçuÉV®ue + = + `v¬_expÜt +( +nuÎ +, +Œue +); + +125 ià(( +$v® + = +$cÞ +-> + `g‘PhpDeçuÉV®ue +()è!=ð +nuÎ +) { + +126 ià( +$cÞ +-> + `isTempÜ®Ty³ +()) { + +127 +$fmt + = +$this +-> + `g‘TempÜ®FÜm©‹r +( +$cÞ +); + +128 +Œy + { + +129 ià(!( +$this +-> + `g‘PÏtfÜm +(è +š¡ªûof + +MysqlPÏtfÜm + && + +130 ( +$v® + === '0000-00-00 00:00:00' || $val === '0000-00-00'))) { + +133 +$defDt + = +Ãw + + `D©eTime +( +$v® +); + +134 +$deçuÉV®ue + = + `v¬_expÜt +( +$defDt +-> + `fÜm© +( +$fmt +), +Œue +); + +136 } + `ÿtch + ( +Exû±iÚ + +$x +) { + +138 + `d©e_deçuÉ_timezÚe_£t +('America/Los_Angeles'); + +139 +throw + +Ãw + + `EngšeExû±iÚ +("UÇbˁطr£ deçuɁempÜ® v®ufÜ " . +$cÞ +-> + `g‘FuÎyQu®if›dName +(è. ": " . +$this +-> + `g‘DeçuÉV®ueSŒšg +($cÞ), +$x +); + +142 ià( +$cÞ +-> + `isPhpPrim™iveTy³ +()) { + +143 + `£‰y³ +( +$v® +, +$cÞ +-> + `g‘PhpTy³ +()); + +144 +$deçuÉV®ue + = + `v¬_expÜt +( +$v® +, +Œue +); + +145 } + `–£if + ( +$cÞ +-> + `isPhpObjeùTy³ +()) { + +146 +$deçuÉV®ue + = 'Ãw '. +$cÞ +-> + `g‘PhpTy³ +().'(' . + `v¬_expÜt +( +$v® +, +Œue +) . ')'; + +148 +throw + +Ãw + + `EngšeExû±iÚ +("CªnÙ g‘ deçuÉ v®u¡ršg fÜ " . +$cÞ +-> + `g‘FuÎyQu®if›dName +()); + +152  +$deçuÉV®ue +; + +153 + } +} + +159 +´Ùeùed + +funùiÚ + + $addInþudes +(& +$süt +) + +161 + } +} + +167 +´Ùeùed + +funùiÚ + + $addCÏssO³n +(& +$süt +) + +170 +$bË + = +$this +-> + `g‘TabË +(); + +171 +$bËName + = +$bË +-> + `g‘Name +(); + +172 +$bËDesc + = +$bË +-> + `g‘DesütiÚ +(); + +173 +$š‹rçû + = +$this +-> + `g‘IÁ”çû +(); + +175 +$süt + .= " + +192 +ab¡¿ù + +þass + ".$this->g‘CÏs¢ame()." +ex‹nds + ".ClassTools::classname($this->getBaseClass())." "; + +194 +$š‹rçû + = +CÏssToÞs +:: + `g‘IÁ”çû +( +$bË +); + +195 ià( +$š‹rçû +) { + +196 +$süt + .ð" im¶em’t " . +CÏssToÞs +:: + `þas¢ame +( +$š‹rçû +); + +199 +$süt + .= " { + +202 + } +} + +209 +´Ùeùed + +funùiÚ + + $addCÏssBody +(& +$süt +) + +211 +$bË + = +$this +-> + `g‘TabË +(); + +212 ià(! +$bË +-> + `isAlŸs +()) { + +213 +$this +-> + `addCÚ¡ªts +( +$süt +); + +214 +$this +-> + `addA‰ribu‹s +( +$süt +); + +217 ià( +$this +-> + `hasDeçuÉV®ues +()) { + +218 +$this +-> + `addAµlyDeçuÉV®ues +( +$süt +); + +219 +$this +-> + `addCÚ¡ruùÜ +( +$süt +); + +222 +$this +-> + `addCÞumnAcûssÜM‘hods +( +$süt +); + +223 +$this +-> + `addCÞumnMutÜM‘hods +( +$süt +); + +225 +$this +-> + `addHasOÆyDeçuÉV®ues +( +$süt +); + +227 +$this +-> + `addHyd¿‹ +( +$süt +); + +228 +$this +-> + `addEnsu»CÚsi¡’cy +( +$süt +); + +230 ià(! +$bË +-> + `isR—dOÆy +()) { + +231 +$this +-> + `addMªuÏtiÚM‘hods +( +$süt +); + +234 ià( +$this +-> + `isAddV®id©eM‘hod +()) + +236 +$this +-> + `addV®id©iÚM‘hods +( +$süt +); + +239 ià( +$this +-> + `isAddG’”icAcûssÜs +()) { + +240 +$this +-> + `addG‘ByName +( +$süt +); + +241 +$this +-> + `addG‘ByPos™iÚ +( +$süt +); + +242 +$this +-> + `addToA¼ay +( +$süt +); + +245 ià( +$this +-> + `isAddG’”icMutÜs +()) { + +246 +$this +-> + `addS‘ByName +( +$süt +); + +247 +$this +-> + `addS‘ByPos™iÚ +( +$süt +); + +248 +$this +-> + `addFromA¼ay +( +$süt +); + +251 +$this +-> + `addBuždCr™”Ÿ +( +$süt +); + +252 +$this +-> + `addBuždPkeyCr™”Ÿ +( +$süt +); + +253 +$this +-> + `addG‘Prim¬yKey +( +$süt +); + +254 +$this +-> + `addS‘Prim¬yKey +( +$süt +); + +256 +$this +-> + `addCÝy +( +$süt +); + +258 ià(! +$bË +-> + `isAlŸs +()) { + +259 +$this +-> + `addG‘P“r +( +$süt +); + +262 +$this +-> + `addFKM‘hods +( +$süt +); + +263 +$this +-> + `addRefFKM‘hods +( +$süt +); + +264 +$this +-> + `addCˬAÎReã»nûs +( +$süt +); + +267 +$this +-> + `­¶yBehaviÜModif›r +('objeùM‘hods', +$süt +, " "); + +269 +$this +-> + `addPrim¬ySŒšg +( +$süt +); + +270 + } +} + +276 +´Ùeùed + +funùiÚ + + $addCÏssClo£ +(& +$süt +) + +278 +$süt + .= " + +279 + } +} + +281 + g$this +-> +­¶yBehaviÜModif›r +('objeùFž‹r', +$süt +, ""); + +288 +´Ùeùed + +funùiÚ + + $addCÚ¡ªts +(& +$süt +) + +292 + } +} + +298 +´Ùeùed + +funùiÚ + + $addA‰ribu‹s +(& +$süt +) + +300 +$bË + = +$this +-> + `g‘TabË +(); + +302 +$süt + .= " + +309 +´Ùeùed + \ +$³” +; + +311 ià(! +$bË +-> + `isAlŸs +()) { + +312 +$this +-> + `addCÞumnA‰ribu‹s +( +$süt +); + +315 + `fܗch + ( +$bË +-> + `g‘FÜeignKeys +(è +as + +$fk +) { + +316 +$this +-> + `addFKA‰ribu‹s +( +$süt +, +$fk +); + +319 + `fܗch + ( +$bË +-> + `g‘Re㼔s +(è +as + +$»fFK +) { + +321 +$this +-> + `addRefFKA‰ribu‹s +( +$süt +, +$»fFK +); + +325 +$this +-> + `addA̗dyInSaveA‰ribu‹ +( +$süt +); + +326 +$this +-> + `addA̗dyInV®id©iÚA‰ribu‹ +( +$süt +); + +329 +$this +-> + `­¶yBehaviÜModif›r +('objeùA‰ribu‹s', +$süt +, " "); + +330 + } +} + +337 +´Ùeùed + +funùiÚ + + $addCÞumnA‰ribu‹s +(& +$süt +) { + +339 +$bË + = +$this +-> + `g‘TabË +(); + +341 + `fܗch + ( +$bË +-> + `g‘CÞumns +(è +as + +$cÞ +) { + +342 +$this +-> + `addCÞumnA‰ribu‹Comm’t +( +$süt +, +$cÞ +); + +343 +$this +-> + `addCÞumnA‰ribu‹Deþ¬©iÚ +( +$süt +, +$cÞ +); + +344 ià( +$cÞ +-> + `isLazyLßd +() ) { + +345 +$this +-> + `addCÞumnA‰ribu‹Lßd”Comm’t +( +$süt +, +$cÞ +); + +346 +$this +-> + `addCÞumnA‰ribu‹Lßd”Deþ¬©iÚ +( +$süt +, +$cÞ +); + +349 + } +} + +356 +´Ùeùed + +funùiÚ + + $addCÞumnA‰ribu‹Comm’t +(& +$süt +, +CÞumn + +$cÞ +) { + +357 +$ýty³ + = +$cÞ +-> + `g‘PhpTy³ +(); + +358 +$þo + = + `¡¹Þow” +( +$cÞ +-> + `g‘Name +()); + +360 +$süt + .= " + +375 + } +} + +382 +´Ùeùed + +funùiÚ + + $addCÞumnA‰ribu‹Deþ¬©iÚ +(& +$süt +, +CÞumn + +$cÞ +) { + +383 +$þo + = + `¡¹Þow” +( +$cÞ +-> + `g‘Name +()); + +384 +$süt + .= " + +385 +´Ùeùed + \ +$ +" . $clo . "; + +387 + } +} + +394 +´Ùeùed + +funùiÚ + + $addCÞumnA‰ribu‹Lßd”Comm’t +(& +$süt +, +CÞumn + +$cÞ +) { + +395 +$süt + .= " + +401 + } +} + +408 +´Ùeùed + +funùiÚ + + $addCÞumnA‰ribu‹Lßd”Deþ¬©iÚ +(& +$süt +, +CÞumn + +$cÞ +) { + +409 +$þo + = + `¡¹Þow” +( +$cÞ +-> + `g‘Name +()); + +410 +$süt + .= " + +411 +´Ùeùed + \ +$ +".$þo." +_isLßded + = +çl£ +; + +413 + } +} + +420 +´Ùeùed + +funùiÚ + + $addG‘P“r +(& +$süt +) + +422 +$this +-> + `addG‘P“rComm’t +( +$süt +); + +423 +$this +-> + `addG‘P“rFunùiÚO³n +( +$süt +); + +424 +$this +-> + `addG‘P“rFunùiÚBody +( +$süt +); + +425 +$this +-> + `addG‘P“rFunùiÚClo£ +( +$süt +); + +426 + } +} + +432 +´Ùeùed + +funùiÚ + + $addG‘P“rComm’t +(& +$süt +) { + +433 +$süt + .= " + +443 + } +} + +449 +´Ùeùed + +funùiÚ + + $addG‘P“rFunùiÚO³n +(& +$süt +) { + +450 +$süt + .= " + +451 +public + +funùiÚ + + `g‘P“r +() + +459 +´Ùeùed + +funùiÚ + + `addG‘P“rFunùiÚBody +(& +$süt +) { + +460 +$süt + .= " + +461 ià( +£lf +::\ +$³” + ==ð +nuÎ +) { + +464  +£lf +::\ +$³” +;"; + +472 +´Ùeùed + +funùiÚ + + `addG‘P“rFunùiÚClo£ +(& +$süt +) { + +473 +$süt + .= " + +476 + } +} + +483 +´Ùeùed + +funùiÚ + + $addCÚ¡ruùÜ +(& +$süt +) + +485 +$this +-> + `addCÚ¡ruùÜComm’t +( +$süt +); + +486 +$this +-> + `addCÚ¡ruùÜO³n +( +$süt +); + +487 +$this +-> + `addCÚ¡ruùÜBody +( +$süt +); + +488 +$this +-> + `addCÚ¡ruùÜClo£ +( +$süt +); + +489 + } +} + +495 +´Ùeùed + +funùiÚ + + $addCÚ¡ruùÜComm’t +(& +$süt +) { + +496 +$süt + .= " + +501 + } +} + +507 +´Ùeùed + +funùiÚ + + $addCÚ¡ruùÜO³n +(& +$süt +) { + +508 +$süt + .= " + +509 +public + +funùiÚ + + `__cÚ¡ruù +() + +517 +´Ùeùed + +funùiÚ + + `addCÚ¡ruùÜBody +(& +$süt +) { + +518 +$süt + .= " + +519 +·»Á +:: + `__cÚ¡ruù +(); + +520 \ +$this +-> + `­¶yDeçuÉV®ues +();"; + +527 +´Ùeùed + +funùiÚ + + `addCÚ¡ruùÜClo£ +(& +$süt +) { + +528 +$süt + .= " + +531 + } +} + +538 +´Ùeùed + +funùiÚ + + $addAµlyDeçuÉV®ues +(& +$süt +) + +540 +$this +-> + `addAµlyDeçuÉV®uesComm’t +( +$süt +); + +541 +$this +-> + `addAµlyDeçuÉV®uesO³n +( +$süt +); + +542 +$this +-> + `addAµlyDeçuÉV®uesBody +( +$süt +); + +543 +$this +-> + `addAµlyDeçuÉV®uesClo£ +( +$süt +); + +544 + } +} + +551 +´Ùeùed + +funùiÚ + + $addAµlyDeçuÉV®uesComm’t +(& +$süt +) { + +552 +$süt + .= " + +559 + } +} + +566 +´Ùeùed + +funùiÚ + + $addAµlyDeçuÉV®uesO³n +(& +$süt +) { + +567 +$süt + .= " + +568 +public + +funùiÚ + + `­¶yDeçuÉV®ues +() + +577 +´Ùeùed + +funùiÚ + + `addAµlyDeçuÉV®uesBody +(& +$süt +) { + +578 +$bË + = +$this +-> + `g‘TabË +(); + +582 +$cÞsW™hDeçuÉs + = + `¬¿y +(); + +583 + `fܗch + ( +$bË +-> + `g‘CÞumns +(è +as + +$cÞ +) { + +584 +$def + = +$cÞ +-> + `g‘DeçuÉV®ue +(); + +585 ià( +$def + !=ð +nuÎ + && !$def-> + `isEx´essiÚ +()) { + +586 +$cÞsW™hDeçuÉs +[] = +$cÞ +; + +590 +$cÞcÚ¡s + = + `¬¿y +(); + +591 + `fܗch + ( +$cÞsW™hDeçuÉs + +as + +$cÞ +) { + +592 +$þo + = + `¡¹Þow” +( +$cÞ +-> + `g‘Name +()); + +593 +$süt + .= " + +594 \ +$this +->".$clo." = ".$this->getDefaultValueString($col).";"; + +605 +´Ùeùed + +funùiÚ + + `addAµlyDeçuÉV®uesClo£ +(& +$süt +) { + +606 +$süt + .= " + +609 + } +} + +623 +´Ùeùed + +funùiÚ + + $addTempÜ®AcûssÜ +(& +$süt +, +CÞumn + +$cÞ +) + +625 +$this +-> + `addTempÜ®AcûssÜComm’t +( +$süt +, +$cÞ +); + +626 +$this +-> + `addTempÜ®AcûssÜO³n +( +$süt +, +$cÞ +); + +627 +$this +-> + `addTempÜ®AcûssÜBody +( +$süt +, +$cÞ +); + +628 +$this +-> + `addTempÜ®AcûssÜClo£ +( +$süt +, +$cÞ +); + +629 + } +} + +638 +´Ùeùed + +funùiÚ + + $addTempÜ®AcûssÜComm’t +(& +$süt +, +CÞumn + +$cÞ +) { + +639 +$þo + = + `¡¹Þow” +( +$cÞ +-> + `g‘Name +()); + +640 +$u£D©eTime + = +$this +-> + `g‘BuždPrݔty +('useDateTimeClass'); + +642 +$d©eTimeCÏss + = +$this +-> + `g‘BuždPrݔty +('dateTimeClass'); + +643 ià(! +$d©eTimeCÏss +) { + +644 +$d©eTimeCÏss + = 'DateTime'; + +647 +$hªdËMysqlD©e + = +çl£ +; + +648 ià( +$this +-> + `g‘PÏtfÜm +(è +š¡ªûof + +MysqlPÏtfÜm +) { + +649 ià( +$cÞ +-> + `g‘Ty³ +(è==ð +PrݖTy³s +:: +TIMESTAMP +) { + +650 +$hªdËMysqlD©e + = +Œue +; + +651 +$mysqlInv®idD©eSŒšg + = '0000-00-00 00:00:00'; + +652 } + `–£if + ( +$cÞ +-> + `g‘Ty³ +(è==ð +PrݖTy³s +:: +DATE +) { + +653 +$hªdËMysqlD©e + = +Œue +; + +654 +$mysqlInv®idD©eSŒšg + = '0000-00-00'; + +659 +$süt + .= " + +682 + } +} + +691 +´Ùeùed + +funùiÚ + + $addTempÜ®AcûssÜO³n +(& +$süt +, +CÞumn + +$cÞ +) { + +692 +$cfc + = +$cÞ +-> + `g‘PhpName +(); + +694 +$deçuÉfmt + = +nuÎ +; + +695 +$visibž™y + = +$cÞ +-> + `g‘AcûssÜVisibž™y +(); + +698 ià( +$cÞ +-> + `g‘Ty³ +(è==ð +PrݖTy³s +:: +DATE +) { + +699 +$deçuÉfmt + = +$this +-> + `g‘BuždPrݔty +('defaultDateFormat'); + +700 } + `–£if + ( +$cÞ +-> + `g‘Ty³ +(è==ð +PrݖTy³s +:: +TIME +) { + +701 +$deçuÉfmt + = +$this +-> + `g‘BuždPrݔty +('defaultTimeFormat'); + +702 } + `–£if + ( +$cÞ +-> + `g‘Ty³ +(è==ð +PrݖTy³s +:: +TIMESTAMP +) { + +703 +$deçuÉfmt + = +$this +-> + `g‘BuždPrݔty +('defaultTimeStampFormat'); + +705 ià( + `em±y +( +$deçuÉfmt +)è{ $deçuÉfmˆð +nuÎ +; } + +707 +$süt + .= " + +708 ".$visibž™y." +funùiÚ + + `g‘$cfc +(\ +$fÜm© + = ".var_export($defaultfmt,rue).""; + +709 ià( +$cÞ +-> + `isLazyLßd +()è +$süt + .= ", \$con =‚ull"; + +710 +$süt + .= ") + +720 +´Ùeùed + +funùiÚ + + `addTempÜ®AcûssÜBody +(& +$süt +, +CÞumn + +$cÞ +) { + +721 +$cfc + = +$cÞ +-> + `g‘PhpName +(); + +722 +$þo + = + `¡¹Þow” +( +$cÞ +-> + `g‘Name +()); + +724 +$u£D©eTime + = +$this +-> + `g‘BuždPrݔty +('useDateTimeClass'); + +726 +$d©eTimeCÏss + = +$this +-> + `g‘BuždPrݔty +('dateTimeClass'); + +727 ià(! +$d©eTimeCÏss +) { + +728 +$d©eTimeCÏss + = 'DateTime'; + +731 +$deçuÉfmt + = +nuÎ +; + +734 ià( +$cÞ +-> + `g‘Ty³ +(è==ð +PrݖTy³s +:: +DATE +) { + +735 +$deçuÉfmt + = +$this +-> + `g‘BuždPrݔty +('defaultDateFormat'); + +736 } + `–£if + ( +$cÞ +-> + `g‘Ty³ +(è==ð +PrݖTy³s +:: +TIME +) { + +737 +$deçuÉfmt + = +$this +-> + `g‘BuždPrݔty +('defaultTimeFormat'); + +738 } + `–£if + ( +$cÞ +-> + `g‘Ty³ +(è==ð +PrݖTy³s +:: +TIMESTAMP +) { + +739 +$deçuÉfmt + = +$this +-> + `g‘BuždPrݔty +('defaultTimeStampFormat'); + +741 ià( + `em±y +( +$deçuÉfmt +)è{ $deçuÉfmˆð +nuÎ +; } + +743 +$hªdËMysqlD©e + = +çl£ +; + +744 ià( +$this +-> + `g‘PÏtfÜm +(è +š¡ªûof + +MysqlPÏtfÜm +) { + +745 ià( +$cÞ +-> + `g‘Ty³ +(è==ð +PrݖTy³s +:: +TIMESTAMP +) { + +746 +$hªdËMysqlD©e + = +Œue +; + +747 +$mysqlInv®idD©eSŒšg + = '0000-00-00 00:00:00'; + +748 } + `–£if + ( +$cÞ +-> + `g‘Ty³ +(è==ð +PrݖTy³s +:: +DATE +) { + +749 +$hªdËMysqlD©e + = +Œue +; + +750 +$mysqlInv®idD©eSŒšg + = '0000-00-00'; + +755 ià( +$cÞ +-> + `isLazyLßd +()) { + +756 +$süt + .= " + +757 ià(!\ +$this +->".$þo." +_isLßded + && \$this-> +$þo + ==ð +nuÎ + && !\$this-> + `isNew +()) { + +758 \ +$this +-> + `lßd$cfc +(\ +$cÚ +); + +762 +$süt + .= " + +763 ià(\ +$this +-> +$þo + ==ð +nuÎ +) { + +764  +nuÎ +; + +768 ià( +$hªdËMysqlD©e +) { + +769 +$süt + .= " + +770 ià(\ +$this +-> +$þo + === '$mysqlInvalidDateString') { + +773  +nuÎ +; + +775 +Œy + { + +776 \ +$dt + = +Ãw + + `$d©eTimeCÏss +(\ +$this +-> +$þo +); + +777 } + `ÿtch + ( +Exû±iÚ + \ +$x +) { + +778 +throw + +Ãw + + `PrݖExû±iÚ +(\"Internally stored date/time/timestamp value could‚ot be convertedo $dateTimeClass: \" . var_export(\$this->$clo,rue), \$x); + +783 +$süt + .= " + +785 +Œy + { + +786 \ +$dt + = +Ãw + + `$d©eTimeCÏss +(\ +$this +-> +$þo +); + +787 } + `ÿtch + ( +Exû±iÚ + \ +$x +) { + +788 +throw + +Ãw + + `PrݖExû±iÚ +(\"Internally stored date/time/timestamp value could‚ot be convertedo $dateTimeClass: \" . var_export(\$this->$clo,rue), \$x); + +793 +$süt + .= " + +794 ià(\ +$fÜm© + ==ð +nuÎ +) {"; + +795 ià( +$u£D©eTime +) { + +796 +$süt + .= " + +798  \ +$dt +;"; + +800 +$süt + .= " + +802  (è\ +$dt +-> + `fÜm© +('U');"; + +804 +$süt + .= " + +805 } + `–£if + ( + `¡½os +(\ +$fÜm© +, '%'è!=ð +çl£ +) { + +806  + `¡ráime +(\ +$fÜm© +, \ +$dt +-> + `fÜm© +('U')); + +808  \ +$dt +-> + `fÜm© +(\ +$fÜm© +); + +819 +´Ùeùed + +funùiÚ + + `addTempÜ®AcûssÜClo£ +(& +$süt +, +CÞumn + +$cÞ +) { + +820 +$süt + .= " + +823 + } +} + +831 +´Ùeùed + +funùiÚ + + $addDeçuÉAcûssÜ +(& +$süt +, +CÞumn + +$cÞ +) + +833 +$this +-> + `addDeçuÉAcûssÜComm’t +( +$süt +, +$cÞ +); + +834 +$this +-> + `addDeçuÉAcûssÜO³n +( +$süt +, +$cÞ +); + +835 +$this +-> + `addDeçuÉAcûssÜBody +( +$süt +, +$cÞ +); + +836 +$this +-> + `addDeçuÉAcûssÜClo£ +( +$süt +, +$cÞ +); + +837 + } +} + +845 +´Ùeùed + +funùiÚ + + $addDeçuÉAcûssÜComm’t +(& +$süt +, +CÞumn + +$cÞ +) { + +846 +$þo += + `¡¹Þow” +( +$cÞ +-> + `g‘Name +()); + +848 +$süt + .= " + +859 + } +} + +867 +´Ùeùed + +funùiÚ + + $addDeçuÉAcûssÜO³n +(& +$süt +, +CÞumn + +$cÞ +) { + +868 +$cfc + = +$cÞ +-> + `g‘PhpName +(); + +869 +$visibž™y + = +$cÞ +-> + `g‘AcûssÜVisibž™y +(); + +871 +$süt + .= " + +872 ".$visibž™y." +funùiÚ + + `g‘$cfc +("; + +873 ià( +$cÞ +-> + `isLazyLßd +()è +$süt + .= "PropelPDO \$con =‚ull"; + +874 +$süt + .= ") + +884 +´Ùeùed + +funùiÚ + + `addDeçuÉAcûssÜBody +(& +$süt +, +CÞumn + +$cÞ +) { + +885 +$cfc + = +$cÞ +-> + `g‘PhpName +(); + +886 +$þo + = + `¡¹Þow” +( +$cÞ +-> + `g‘Name +()); + +887 ià( +$cÞ +-> + `isLazyLßd +()) { + +888 +$süt + .= " + +889 ià(!\ +$this +->".$þo." +_isLßded + && \$this-> +$þo + ==ð +nuÎ + && !\$this-> + `isNew +()) { + +890 \ +$this +-> + `lßd$cfc +(\ +$cÚ +); + +895 +$süt + .= " + +896  \ +$this +-> +$þo +;"; + +905 +´Ùeùed + +funùiÚ + + `addDeçuÉAcûssÜClo£ +(& +$süt +, +CÞumn + +$cÞ +) { + +906 +$süt + .= " + +909 + } +} + +917 +´Ùeùed + +funùiÚ + + $addLazyLßd” +(& +$süt +, +CÞumn + +$cÞ +) + +919 +$this +-> + `addLazyLßd”Comm’t +( +$süt +, +$cÞ +); + +920 +$this +-> + `addLazyLßd”O³n +( +$süt +, +$cÞ +); + +921 +$this +-> + `addLazyLßd”Body +( +$süt +, +$cÞ +); + +922 +$this +-> + `addLazyLßd”Clo£ +( +$süt +, +$cÞ +); + +923 + } +} + +931 +´Ùeùed + +funùiÚ + + $addLazyLßd”Comm’t +(& +$süt +, +CÞumn + +$cÞ +) { + +932 +$þo + = + `¡¹Þow” +( +$cÞ +-> + `g‘Name +()); + +934 +$süt + .= " + +946 + } +} + +954 +´Ùeùed + +funùiÚ + + $addLazyLßd”O³n +(& +$süt +, +CÞumn + +$cÞ +) { + +955 +$cfc + = +$cÞ +-> + `g‘PhpName +(); + +956 +$süt + .= " + +957 +´Ùeùed + +funùiÚ + + `lßd$cfc +( +PrݖPDO + \ +$cÚ + = +nuÎ +) + +967 +´Ùeùed + +funùiÚ + + `addLazyLßd”Body +(& +$süt +, +CÞumn + +$cÞ +) { + +968 +$¶©fÜm + = +$this +-> + `g‘PÏtfÜm +(); + +969 +$þo + = + `¡¹Þow” +( +$cÞ +-> + `g‘Name +()); + +971 +$süt + .= " + +972 \ +$c + = \ +$this +-> + `buždPkeyCr™”Ÿ +(); + +973 \ +$c +-> + `addS–eùCÞumn +(".$this->getColumnConstant($col)."); + +974 +Œy + { + +975 \ +$¡mt + = ".$this->g‘P“rCÏs¢ame().":: + `doS–eùStmt +(\ +$c +, \ +$cÚ +); + +976 \ +$row + = \ +$¡mt +-> + `ãtch +( +PDO +:: +FETCH_NUM +); + +977 \ +$¡mt +-> + `þo£CursÜ +();"; + +979 ià( +$cÞ +-> + `isLobTy³ +(è&& ! +$¶©fÜm +-> + `hasSŒ—mBlobIm¶ +()) { + +980 +$süt + .= " + +981 ià(\ +$row +[0] !=ð +nuÎ +) { + +982 \ +$this +-> +$þo + = + `fݒ +('php://memory', 'r+'); + +983 + `fwr™e +(\ +$this +-> +$þo +, \ +$row +[0]); + +984 + `»wšd +(\ +$this +-> +$þo +); + +986 \ +$this +-> +$þo + = +nuÎ +; + +988 } + `–£if + ( +$cÞ +-> + `isPhpPrim™iveTy³ +()) { + +989 +$süt + .= " + +990 \ +$this +-> +$þo + = (\ +$row +[0] !=ð +nuÎ +) ? (".$col->getPhpType().") \$row[0] :‚ull;"; + +991 } + `–£if + ( +$cÞ +-> + `isPhpObjeùTy³ +()) { + +992 +$süt + .= " + +993 \ +$this +-> +$þo + = (\ +$row +[0] !=ð +nuÎ +è? +Ãw + ".$col->getPhpType()."(\$row[0]) :‚ull;"; + +995 +$süt + .= " + +996 \ +$this +-> +$þo + = \ +$row +[0];"; + +999 +$süt + .= " + +1000 \ +$this +->".$þo." +_isLßded + = +Œue +; + +1001 } + `ÿtch + ( +Exû±iÚ + \ +$e +) { + +1002 +throw + +Ãw + + `PrݖExû±iÚ +(\"Error†oading value for [$clo] column on demand.\", \$e); + +1012 +´Ùeùed + +funùiÚ + + `addLazyLßd”Clo£ +(& +$süt +, +CÞumn + +$cÞ +) { + +1013 +$süt + .= " + +1015 + } +} + +1028 +´Ùeùed + +funùiÚ + + $addMutÜO³n +(& +$süt +, +CÞumn + +$cÞ +) + +1030 +$this +-> + `addMutÜComm’t +( +$süt +, +$cÞ +); + +1031 +$this +-> + `addMutÜO³nO³n +( +$süt +, +$cÞ +); + +1032 +$this +-> + `addMutÜO³nBody +( +$süt +, +$cÞ +); + +1033 + } +} + +1041 +´Ùeùed + +funùiÚ + + $addMutÜComm’t +(& +$süt +, +CÞumn + +$cÞ +) { + +1042 +$þo + = + `¡¹Þow” +( +$cÞ +-> + `g‘Name +()); + +1043 +$süt + .= " + +1050 + } +} + +1058 +´Ùeùed + +funùiÚ + + $addMutÜO³nO³n +(& +$süt +, +CÞumn + +$cÞ +) { + +1059 +$cfc + = +$cÞ +-> + `g‘PhpName +(); + +1060 +$visibž™y + = +$cÞ +-> + `g‘MutÜVisibž™y +(); + +1062 +$süt + .= " + +1063 ".$visibž™y." +funùiÚ + + `£t$cfc +(\ +$v +) + +1073 +´Ùeùed + +funùiÚ + + `addMutÜO³nBody +(& +$süt +, +CÞumn + +$cÞ +) { + +1074 +$þo + = + `¡¹Þow” +( +$cÞ +-> + `g‘Name +()); + +1075 +$cfc + = +$cÞ +-> + `g‘PhpName +(); + +1076 ià( +$cÞ +-> + `isLazyLßd +()) { + +1077 +$süt + .= " + +1082 \ +$this +->".$þo." +_isLßded + = +Œue +; + +1093 +´Ùeùed + +funùiÚ + + `addMutÜClo£ +(& +$süt +, +CÞumn + +$cÞ +) + +1095 +$this +-> + `addMutÜClo£Body +( +$süt +, +$cÞ +); + +1096 +$this +-> + `addMutÜClo£Clo£ +( +$süt +, +$cÞ +); + +1105 +´Ùeùed + +funùiÚ + + `addMutÜClo£Body +(& +$süt +, +CÞumn + +$cÞ +) { + +1106 +$bË + = +$this +-> + `g‘TabË +(); + +1107 +$cfc + = +$cÞ +-> + `g‘PhpName +(); + +1108 +$þo + = + `¡¹Þow” +( +$cÞ +-> + `g‘Name +()); + +1110 ià( +$cÞ +-> + `isFÜeignKey +()) { + +1112 + `fܗch + ( +$cÞ +-> + `g‘FÜeignKeys +(è +as + +$fk +) { + +1114 +$tblFK + = +$bË +-> + `g‘D©aba£ +()-> + `g‘TabË +( +$fk +-> + `g‘FÜeignTabËName +()); + +1115 +$cÞFK + = +$tblFK +-> + `g‘CÞumn +( +$fk +-> + `g‘M­³dFÜeignCÞumn +( +$cÞ +-> + `g‘Name +())); + +1117 +$v¬Name + = +$this +-> + `g‘FKV¬Name +( +$fk +); + +1119 +$süt + .= " + +1120 ià(\ +$this +-> +$v¬Name + !=ð +nuÎ + && \$this->".$v¬Name."-> +g‘ +".$cÞFK->g‘PhpName()."(è!=ð\ +$v +) { + +1121 \ +$this +-> +$v¬Name + = +nuÎ +; + +1127 + `fܗch + ( +$cÞ +-> + `g‘Re㼔s +(è +as + +$»fFK +) { + +1129 +$tblFK + = +$this +-> + `g‘D©aba£ +()-> + `g‘TabË +( +$»fFK +-> + `g‘FÜeignTabËName +()); + +1131 iàÐ +$tblFK +-> + `g‘Name +(è!ð +$bË +->getName() ) { + +1133 + `fܗch + ( +$cÞ +-> + `g‘FÜeignKeys +(è +as + +$fk +) { + +1135 +$tblFK + = +$bË +-> + `g‘D©aba£ +()-> + `g‘TabË +( +$fk +-> + `g‘FÜeignTabËName +()); + +1136 +$cÞFK + = +$tblFK +-> + `g‘CÞumn +( +$fk +-> + `g‘M­³dFÜeignCÞumn +( +$cÞ +-> + `g‘Name +())); + +1138 ià( +$»fFK +-> + `isLoÿlPrim¬yKey +()) { + +1139 +$v¬Name + = +$this +-> + `g‘PKRefFKV¬Name +( +$»fFK +); + +1140 +$süt + .= " + +1142 ià(\ +$this +-> +$v¬Name + !=ð +nuÎ +) { + +1143 \ +$this +->{ +$v¬Name +}-> +£t +".$cÞFK->g‘PhpName()."(\ +$v +); + +1147 +$cÞlName + = +$this +-> + `g‘RefFKCÞlV¬Name +( +$»fFK +); + +1148 +$süt + .= " + +1151 ià(\ +$this +-> +$cÞlName + !=ð +nuÎ +) { + +1152 + `fܗch + (\ +$this +-> +$cÞlName + +as + \ +$»ã¼”Objeù +) { + +1153 \ +$»ã¼”Objeù +-> +£t +".$cÞFK->g‘PhpName()."(\ +$v +); + +1170 +´Ùeùed + +funùiÚ + + `addMutÜClo£Clo£ +(& +$süt +, +CÞumn + +$cÞ +) { + +1171 +$cfc + = +$cÞ +-> + `g‘PhpName +(); + +1172 +$süt + .= " + +1173  \ +$this +; + +1176 + } +} + +1184 +´Ùeùed + +funùiÚ + + $addLobMutÜ +(& +$süt +, +CÞumn + +$cÞ +) + +1186 +$this +-> + `addMutÜO³n +( +$süt +, +$cÞ +); + +1187 +$þo + = + `¡¹Þow” +( +$cÞ +-> + `g‘Name +()); + +1188 +$süt + .= " + +1192 ià(! + `is_»sourû +(\ +$v +è&& \$v !=ð +nuÎ +) { + +1193 \ +$this +-> +$þo + = + `fݒ +('php://memory', 'r+'); + +1194 + `fwr™e +(\ +$this +-> +$þo +, \ +$v +); + +1195 + `»wšd +(\ +$this +-> +$þo +); + +1197 \ +$this +-> +$þo + = \ +$v +; + +1199 \ +$this +-> +modif›dCÞumns +[] = ".$this->getColumnConstant($col)."; + +1201 +$this +-> + `addMutÜClo£ +( +$süt +, +$cÞ +); + +1202 + } +} + +1210 +´Ùeùed + +funùiÚ + + $addTempÜ®MutÜ +(& +$süt +, +CÞumn + +$cÞ +) + +1212 +$cfc + = +$cÞ +-> + `g‘PhpName +(); + +1213 +$þo + = + `¡¹Þow” +( +$cÞ +-> + `g‘Name +()); + +1214 +$visibž™y + = +$cÞ +-> + `g‘MutÜVisibž™y +(); + +1216 +$d©eTimeCÏss + = +$this +-> + `g‘BuždPrݔty +('dateTimeClass'); + +1217 ià(! +$d©eTimeCÏss +) { + +1218 +$d©eTimeCÏss + = 'DateTime'; + +1221 +$süt + .= " + +1229 ".$visibž™y." +funùiÚ + + `£t$cfc +(\ +$v +) + +1231 ià( +$cÞ +-> + `isLazyLßd +()) { + +1232 +$süt + .= " + +1237 \ +$this +->".$þo." +_isLßded + = +Œue +; + +1241 +$fmt + = + `v¬_expÜt +( +$this +-> + `g‘TempÜ®FÜm©‹r +( +$cÞ +), +Œue +); + +1243 +$süt + .= " + +1246 ià(\ +$v + ==ð +nuÎ + || \$v === '') { + +1247 \ +$dt + = +nuÎ +; + +1248 } + `–£if + (\ +$v + +š¡ªûof + +D©eTime +) { + +1249 \ +$dt + = \ +$v +; + +1253 +Œy + { + +1254 ià( + `is_num”ic +(\ +$v +)) { + +1255 \ +$dt + = +Ãw + + `$d©eTimeCÏss +('@'.\ +$v +,‚ew + `D©eTimeZÚe +('UTC')); + +1258 \ +$dt +-> + `£tTimeZÚe +( +Ãw + + `D©eTimeZÚe +( + `d©e_deçuÉ_timezÚe_g‘ +())); + +1260 \ +$dt + = +Ãw + + `$d©eTimeCÏss +(\ +$v +); + +1262 } + `ÿtch + ( +Exû±iÚ + \ +$x +) { + +1263 +throw + +Ãw + + `PrݖExû±iÚ +('E¼Ü…¬sšg d©e/timv®ue: ' . + `v¬_expÜt +(\ +$v +, +Œue +), \ +$x +); + +1267 iàÐ\ +$this +-> +$þo + !=ð +nuÎ + || \ +$dt + !==‚ull ) { + +1270 \ +$cu¼NÜm + = (\ +$this +-> +$þo + !=ð +nuÎ + && \ +$tmpDt + = +Ãw + + `$d©eTimeCÏss +(\$this->$þo)è? \$tmpDt-> + `fÜm© +( +$fmt +) :‚ull; + +1271 \ +$ÃwNÜm + = (\ +$dt + !=ð +nuÎ +è? \$dt-> + `fÜm© +( +$fmt +) :‚ull; + +1273 iàÐ(\ +$cu¼NÜm + !=ð\ +$ÃwNÜm +) + +1275 ià(( +$def + = +$cÞ +-> + `g‘DeçuÉV®ue +()è!=ð +nuÎ + && !$def-> + `isEx´essiÚ +()) { + +1276 +$deçuÉV®ue + = +$this +-> + `g‘DeçuÉV®ueSŒšg +( +$cÞ +); + +1277 +$süt + .= " + +1278 || (\ +$dt +-> + `fÜm© +( +$fmt +è==ð +$deçuÉV®ue +) + +1281 +$süt + .= " + +1284 \ +$this +-> +$þo + = (\ +$dt + ? \$dt-> + `fÜm© +( +$fmt +è: +nuÎ +); + +1285 \ +$this +-> +modif›dCÞumns +[] = ".$this->getColumnConstant($col)."; + +1289 +$this +-> + `addMutÜClo£ +( +$süt +, +$cÞ +); + +1298 +´Ùeùed + +funùiÚ + + `addDeçuÉMutÜ +(& +$süt +, +CÞumn + +$cÞ +) + +1300 +$þo + = + `¡¹Þow” +( +$cÞ +-> + `g‘Name +()); + +1302 +$this +-> + `addMutÜO³n +( +$süt +, +$cÞ +); + +1306 ià( +$cÞ +-> + `isPhpPrim™iveTy³ +()) { + +1307 +$süt + .= " + +1308 ià(\ +$v + !=ð +nuÎ +) { + +1309 \ +$v + = (".$col->getPhpType().") \$v; + +1314 +$süt + .= " + +1315 ià(\ +$this +-> +$þo + !=ð\ +$v +"; + +1316 ià(( +$def + = +$cÞ +-> + `g‘DeçuÉV®ue +()è!=ð +nuÎ + && !$def-> + `isEx´essiÚ +()) { + +1317 +$süt + .= " || \$this->isNew()"; + +1319 +$süt + .= ") { + +1320 \ +$this +-> +$þo + = \ +$v +; + +1321 \ +$this +-> +modif›dCÞumns +[] = ".$this->getColumnConstant($col)."; + +1324 +$this +-> + `addMutÜClo£ +( +$süt +, +$cÞ +); + +1325 + } +} + +1331 +´Ùeùed + +funùiÚ + + $addHasOÆyDeçuÉV®ues +(& +$süt +) + +1333 +$this +-> + `addHasOÆyDeçuÉV®uesComm’t +( +$süt +); + +1334 +$this +-> + `addHasOÆyDeçuÉV®uesO³n +( +$süt +); + +1335 +$this +-> + `addHasOÆyDeçuÉV®uesBody +( +$süt +); + +1336 +$this +-> + `addHasOÆyDeçuÉV®uesClo£ +( +$süt +); + +1337 + } +} + +1344 +´Ùeùed + +funùiÚ + + $addHasOÆyDeçuÉV®uesComm’t +(& +$süt +) { + +1345 +$süt + .= " + +1354 + } +} + +1361 +´Ùeùed + +funùiÚ + + $addHasOÆyDeçuÉV®uesO³n +(& +$süt +) { + +1362 +$süt + .= " + +1363 +public + +funùiÚ + + `hasOÆyDeçuÉV®ues +() + +1372 +´Ùeùed + +funùiÚ + + `addHasOÆyDeçuÉV®uesBody +(& +$süt +) { + +1373 +$bË + = +$this +-> + `g‘TabË +(); + +1374 +$cÞsW™hDeçuÉs + = + `¬¿y +(); + +1375 + `fܗch + ( +$bË +-> + `g‘CÞumns +(è +as + +$cÞ +) { + +1376 +$def + = +$cÞ +-> + `g‘DeçuÉV®ue +(); + +1377 ià( +$def + !=ð +nuÎ + && !$def-> + `isEx´essiÚ +()) { + +1378 +$cÞsW™hDeçuÉs +[] = +$cÞ +; + +1382 + `fܗch + ( +$cÞsW™hDeçuÉs + +as + +$cÞ +) { + +1384 +$þo + = + `¡¹Þow” +( +$cÞ +-> + `g‘Name +()); + +1385 +$def + = +$cÞ +-> + `g‘DeçuÉV®ue +(); + +1387 +$süt + .= " + +1388 ià(\ +$this +-> +$þo + !== " . $this->getDefaultValueString($col).") { + +1389  +çl£ +; + +1400 +´Ùeùed + +funùiÚ + + `addHasOÆyDeçuÉV®uesClo£ +(& +$süt +) { + +1401 +$süt + .= " + +1403  +Œue +;"; + +1404 +$süt + .= " + +1407 + } +} + +1413 +´Ùeùed + +funùiÚ + + $addHyd¿‹ +(& +$süt +) + +1415 +$this +-> + `addHyd¿‹Comm’t +( +$süt +); + +1416 +$this +-> + `addHyd¿‹O³n +( +$süt +); + +1417 +$this +-> + `addHyd¿‹Body +( +$süt +); + +1418 +$this +-> + `addHyd¿‹Clo£ +( +$süt +); + +1419 + } +} + +1426 +´Ùeùed + +funùiÚ + + $addHyd¿‹Comm’t +(& +$süt +) { + +1427 +$süt + .= " + +1442 + } +} + +1449 +´Ùeùed + +funùiÚ + + $addHyd¿‹O³n +(& +$süt +) { + +1450 +$süt + .= " + +1451 +public + +funùiÚ + + `hyd¿‹ +(\ +$row +, \ +$¡¬tcÞ + = 0, \ +$»hyd¿‹ + = +çl£ +) + +1460 +´Ùeùed + +funùiÚ + + `addHyd¿‹Body +(& +$süt +) { + +1461 +$bË + = +$this +-> + `g‘TabË +(); + +1462 +$¶©fÜm + = +$this +-> + `g‘PÏtfÜm +(); + +1463 +$süt + .= " + +1464 +Œy + { + +1466 +$n + = 0; + +1467 + `fܗch + ( +$bË +-> + `g‘CÞumns +(è +as + +$cÞ +) { + +1468 ià(! +$cÞ +-> + `isLazyLßd +()) { + +1469 +$þo + = + `¡¹Þow” +( +$cÞ +-> + `g‘Name +()); + +1470 ià( +$cÞ +-> + `isLobTy³ +(è&& ! +$¶©fÜm +-> + `hasSŒ—mBlobIm¶ +()) { + +1471 +$süt + .= " + +1472 ià(\ +$row +[\ +$¡¬tcÞ + + +$n +] !=ð +nuÎ +) { + +1473 \ +$this +-> +$þo + = + `fݒ +('php://memory', 'r+'); + +1474 + `fwr™e +(\ +$this +-> +$þo +, \ +$row +[\ +$¡¬tcÞ + + +$n +]); + +1475 + `»wšd +(\ +$this +-> +$þo +); + +1477 \ +$this +-> +$þo + = +nuÎ +; + +1479 } + `–£if + ( +$cÞ +-> + `isPhpPrim™iveTy³ +()) { + +1480 +$süt + .= " + +1481 \ +$this +-> +$þo + = (\ +$row +[\ +$¡¬tcÞ + + +$n +] !=ð +nuÎ +) ? (".$col->getPhpType().") \$row[\$startcol + $n] :‚ull;"; + +1482 } + `–£if + ( +$cÞ +-> + `isPhpObjeùTy³ +()) { + +1483 +$süt + .= " + +1484 \ +$this +-> +$þo + = (\ +$row +[\ +$¡¬tcÞ + + +$n +] !=ð +nuÎ +è? +Ãw + ".$col->getPhpType()."(\$row[\$startcol + $n]) :‚ull;"; + +1486 +$süt + .= " + +1487 \ +$this +-> +$þo + = \ +$row +[\ +$¡¬tcÞ + + +$n +];"; + +1489 +$n +++; + +1493 ià( +$this +-> + `g‘BuždPrݔty +("addSaveMethod")) { + +1494 +$süt + .= " + +1495 \ +$this +-> + `»£tModif›d +(); + +1499 +$süt + .= " + +1500 \ +$this +-> + `£tNew +( +çl£ +); + +1502 ià(\ +$»hyd¿‹ +) { + +1503 \ +$this +-> + `’su»CÚsi¡’cy +(); + +1507  \ +$¡¬tcÞ + + +$n +; + +1509 } + `ÿtch + ( +Exû±iÚ + \ +$e +) { + +1510 +throw + +Ãw + + `PrݖExû±iÚ +(\"E¼Ü…ÝuÏtšg ". +$this +-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +()." object\", \$e); + +1519 +´Ùeùed + +funùiÚ + + `addHyd¿‹Clo£ +(& +$süt +) { + +1520 +$süt + .= " + +1523 + } +} + +1529 +´Ùeùed + +funùiÚ + + $addBuždPkeyCr™”Ÿ +(& +$süt +) { + +1530 +$this +-> + `addBuždPkeyCr™”ŸComm’t +( +$süt +); + +1531 +$this +-> + `addBuždPkeyCr™”ŸO³n +( +$süt +); + +1532 +$this +-> + `addBuždPkeyCr™”ŸBody +( +$süt +); + +1533 +$this +-> + `addBuždPkeyCr™”ŸClo£ +( +$süt +); + +1534 + } +} + +1541 +´Ùeùed + +funùiÚ + + $addBuždPkeyCr™”ŸComm’t +(& +$süt +) { + +1542 +$süt + .= " + +1551 + } +} + +1558 +´Ùeùed + +funùiÚ + + $addBuždPkeyCr™”ŸO³n +(& +$süt +) { + +1559 +$süt + .= " + +1560 +public + +funùiÚ + + `buždPkeyCr™”Ÿ +() + +1569 +´Ùeùed + +funùiÚ + + `addBuždPkeyCr™”ŸBody +(& +$süt +) { + +1570 +$süt + .= " + +1571 \ +$ü™”Ÿ + = +Ãw + + `Cr™”Ÿ +(".$this->g‘P“rCÏs¢ame().":: +DATABASE_NAME +); + +1573 + `fܗch + ( +$this +-> + `g‘TabË +()-> + `g‘CÞumns +(è +as + +$cÞ +) { + +1574 +$þo + = + `¡¹Þow” +( +$cÞ +-> + `g‘Name +()); + +1575 ià( +$cÞ +-> + `isPrim¬yKey +()) { + +1576 +$süt + .= " + +1577 \ +$ü™”Ÿ +-> + `add +(".$this->g‘CÞumnCÚ¡ªt($cÞ).", \ +$this +-> +$þo +);"; + +1587 +´Ùeùed + +funùiÚ + + `addBuždPkeyCr™”ŸClo£ +(& +$süt +) { + +1588 +$süt + .= " + +1590  \ +$ü™”Ÿ +; + +1593 + } +} + +1599 +´Ùeùed + +funùiÚ + + $addBuždCr™”Ÿ +(& +$süt +) + +1601 +$this +-> + `addBuždCr™”ŸComm’t +( +$süt +); + +1602 +$this +-> + `addBuždCr™”ŸO³n +( +$süt +); + +1603 +$this +-> + `addBuždCr™”ŸBody +( +$süt +); + +1604 +$this +-> + `addBuždCr™”ŸClo£ +( +$süt +); + +1605 + } +} + +1612 +´Ùeùed + +funùiÚ + + $addBuždCr™”ŸComm’t +(& +$süt +) { + +1613 +$süt + .= " + +1619 + } +} + +1626 +´Ùeùed + +funùiÚ + + $addBuždCr™”ŸO³n +(& +$süt +) { + +1627 +$süt + .= " + +1628 +public + +funùiÚ + + `buždCr™”Ÿ +() + +1637 +´Ùeùed + +funùiÚ + + `addBuždCr™”ŸBody +(& +$süt +) { + +1638 +$süt + .= " + +1639 \ +$ü™”Ÿ + = +Ãw + + `Cr™”Ÿ +(".$this->g‘P“rCÏs¢ame().":: +DATABASE_NAME +); + +1641 + `fܗch + ( +$this +-> + `g‘TabË +()-> + `g‘CÞumns +(è +as + +$cÞ +) { + +1642 +$þo + = + `¡¹Þow” +( +$cÞ +-> + `g‘Name +()); + +1643 +$süt + .= " + +1644 ià(\ +$this +-> + `isCÞumnModif›d +(".$this->g‘CÞumnCÚ¡ªt($cÞ).")è\ +$ü™”Ÿ +-> + `add +(".$this->g‘CÞumnCÚ¡ªt($cÞ).", \$this-> +$þo +);"; + +1653 +´Ùeùed + +funùiÚ + + `addBuždCr™”ŸClo£ +(& +$süt +) { + +1654 +$süt + .= " + +1656  \ +$ü™”Ÿ +; + +1659 + } +} + +1665 +´Ùeùed + +funùiÚ + + $addToA¼ay +(& +$süt +) + +1667 +$this +-> + `addToA¼ayComm’t +( +$süt +); + +1668 +$this +-> + `addToA¼ayO³n +( +$süt +); + +1669 +$this +-> + `addToA¼ayBody +( +$süt +); + +1670 +$this +-> + `addToA¼ayClo£ +( +$süt +); + +1671 + } +} + +1678 +´Ùeùed + +funùiÚ + + $addToA¼ayComm’t +(& +$süt +) { + +1679 +$süt + .= " + +1691 + } +} + +1698 +´Ùeùed + +funùiÚ + + $addToA¼ayO³n +(& +$süt +) { + +1699 +$süt + .= " + +1700 +public + +funùiÚ + + `toA¼ay +(\ +$keyTy³ + = +Ba£P“r +:: +TYPE_PHPNAME +, \ +$šþudeLazyLßdCÞumns + = +Œue +) + +1709 +´Ùeùed + +funùiÚ + + `addToA¼ayBody +(& +$süt +) { + +1710 +$süt + .= " + +1711 \ +$keys + = ".$this->g‘P“rCÏs¢ame().":: + `g‘F›ldNames +(\ +$keyTy³ +); + +1712 \ +$»suÉ + = + `¬¿y +("; + +1713 + `fܗch + ( +$this +-> + `g‘TabË +()-> + `g‘CÞumns +(è +as + +$num + => +$cÞ +) { + +1714 ià( +$cÞ +-> + `isLazyLßd +()) { + +1715 +$süt + .= " + +1716 \ +$keys +[ +$num +] => (\ +$šþudeLazyLßdCÞumns +è? \ +$this +-> +g‘ +".$cÞ->g‘PhpName()."(è: +nuÎ +,"; + +1718 +$süt + .= " + +1719 \ +$keys +[ +$num +] => \ +$this +-> +g‘ +".$col->getPhpName()."(),"; + +1722 +$süt + .= " + +1731 +´Ùeùed + +funùiÚ + + `addToA¼ayClo£ +(& +$süt +) { + +1732 +$süt + .= " + +1733  \ +$»suÉ +; + +1736 + } +} + +1742 +´Ùeùed + +funùiÚ + + $addG‘ByName +(& +$süt +) + +1744 +$this +-> + `addG‘ByNameComm’t +( +$süt +); + +1745 +$this +-> + `addG‘ByNameO³n +( +$süt +); + +1746 +$this +-> + `addG‘ByNameBody +( +$süt +); + +1747 +$this +-> + `addG‘ByNameClo£ +( +$süt +); + +1748 + } +} + +1755 +´Ùeùed + +funùiÚ + + $addG‘ByNameComm’t +(& +$süt +) { + +1756 +$süt + .= " + +1766 + } +} + +1773 +´Ùeùed + +funùiÚ + + $addG‘ByNameO³n +(& +$süt +) { + +1774 +$süt + .= " + +1775 +public + +funùiÚ + + `g‘ByName +(\ +$Çme +, \ +$ty³ + = +Ba£P“r +:: +TYPE_PHPNAME +) + +1784 +´Ùeùed + +funùiÚ + + `addG‘ByNameBody +(& +$süt +) { + +1785 +$süt + .= " + +1786 \ +$pos + = ".$this->g‘P“rCÏs¢ame().":: + `Œª¦©eF›ldName +(\ +$Çme +, \ +$ty³ +, +Ba£P“r +:: +TYPE_NUM +); + +1787 \ +$f›ld + = \ +$this +-> + `g‘ByPos™iÚ +(\ +$pos +);"; + +1795 +´Ùeùed + +funùiÚ + + `addG‘ByNameClo£ +(& +$süt +) { + +1796 +$süt + .= " + +1797  \ +$f›ld +; + +1800 + } +} + +1806 +´Ùeùed + +funùiÚ + + $addG‘ByPos™iÚ +(& +$süt +) + +1808 +$this +-> + `addG‘ByPos™iÚComm’t +( +$süt +); + +1809 +$this +-> + `addG‘ByPos™iÚO³n +( +$süt +); + +1810 +$this +-> + `addG‘ByPos™iÚBody +( +$süt +); + +1811 +$this +-> + `addG‘ByPos™iÚClo£ +( +$süt +); + +1812 + } +} + +1819 +´Ùeùed + +funùiÚ + + $addG‘ByPos™iÚComm’t +(& +$süt +) { + +1820 +$süt + .= " + +1828 + } +} + +1835 +´Ùeùed + +funùiÚ + + $addG‘ByPos™iÚO³n +(& +$süt +) { + +1836 +$süt + .= " + +1837 +public + +funùiÚ + + `g‘ByPos™iÚ +(\ +$pos +) + +1846 +´Ùeùed + +funùiÚ + + `addG‘ByPos™iÚBody +(& +$süt +) { + +1847 +$bË + = +$this +-> + `g‘TabË +(); + +1848 +$süt + .= " + +1849 \ +$pos +) {"; + +1850 +$i + = 0; + +1851 + `fܗch + ( +$bË +-> + `g‘CÞumns +(è +as + +$cÞ +) { + +1852 +$cfc + = +$cÞ +-> + `g‘PhpName +(); + +1853 +$ýty³ + = +$cÞ +-> + `g‘PhpTy³ +(); + +1854 +$süt + .= " + +1855  +$i +: + +1856  \ +$this +-> + `g‘$cfc +(); + +1858 +$i +++; + +1860 +$süt + .= " + +1862  +nuÎ +; + +1872 +´Ùeùed + +funùiÚ + + `addG‘ByPos™iÚClo£ +(& +$süt +) { + +1873 +$süt + .= " + +1876 + } +} + +1878 +´Ùeùed + +funùiÚ + + $addS‘ByName +(& +$süt +) + +1880 +$bË + = +$this +-> + `g‘TabË +(); + +1881 +$süt + .= " + +1892 +public + +funùiÚ + + `£tByName +(\ +$Çme +, \ +$v®ue +, \ +$ty³ + = +Ba£P“r +:: +TYPE_PHPNAME +) + +1894 \ +$pos + = ".$this->g‘P“rCÏs¢ame().":: + `Œª¦©eF›ldName +(\ +$Çme +, \ +$ty³ +, +Ba£P“r +:: +TYPE_NUM +); + +1895  \ +$this +-> + `£tByPos™iÚ +(\ +$pos +, \ +$v®ue +); + +1898 + } +} + +1900 +´Ùeùed + +funùiÚ + + $addS‘ByPos™iÚ +(& +$süt +) + +1902 +$bË + = +$this +-> + `g‘TabË +(); + +1903 +$süt + .= " + +1912 +public + +funùiÚ + + `£tByPos™iÚ +(\ +$pos +, \ +$v®ue +) + +1914 \ +$pos +) {"; + +1915 +$i + = 0; + +1916 + `fܗch + ( +$bË +-> + `g‘CÞumns +(è +as + +$cÞ +) { + +1917 +$cfc + = +$cÞ +-> + `g‘PhpName +(); + +1918 +$ýty³ + = +$cÞ +-> + `g‘PhpTy³ +(); + +1919 +$süt + .= " + +1920  +$i +: + +1921 \ +$this +-> + `£t$cfc +(\ +$v®ue +); + +1923 +$i +++; + +1925 +$süt + .= " + +1929 + } +} + +1931 +´Ùeùed + +funùiÚ + + $addFromA¼ay +(& +$süt +) + +1933 +$bË + = +$this +-> + `g‘TabË +(); + +1934 +$süt + .= " + +1952 +public + +funùiÚ + + `äomA¼ay +(\ +$¬r +, \ +$keyTy³ + = +Ba£P“r +:: +TYPE_PHPNAME +) + +1954 \ +$keys + = ".$this->g‘P“rCÏs¢ame().":: + `g‘F›ldNames +(\ +$keyTy³ +); + +1956 + `fܗch + ( +$bË +-> + `g‘CÞumns +(è +as + +$num + => +$cÞ +) { + +1957 +$cfc + = +$cÞ +-> + `g‘PhpName +(); + +1958 +$ýty³ + = +$cÞ +-> + `g‘PhpTy³ +(); + +1959 +$süt + .= " + +1960 ià( + `¬¿y_key_exi¡s +(\ +$keys +[ +$num +], \ +$¬r +)è\ +$this +-> + `£t$cfc +(\$arr[\$keys[$num]]);"; + +1962 +$süt + .= " + +1965 + } +} + +1971 +´Ùeùed + +funùiÚ + + $addD–‘e +(& +$süt +) + +1973 +$this +-> + `addD–‘eComm’t +( +$süt +); + +1974 +$this +-> + `addD–‘eO³n +( +$süt +); + +1975 +$this +-> + `addD–‘eBody +( +$süt +); + +1976 +$this +-> + `addD–‘eClo£ +( +$süt +); + +1977 + } +} + +1984 +´Ùeùed + +funùiÚ + + $addD–‘eComm’t +(& +$süt +) { + +1985 +$süt + .= " + +1995 + } +} + +2002 +´Ùeùed + +funùiÚ + + $addD–‘eO³n +(& +$süt +) { + +2003 +$süt + .= " + +2004 +public + +funùiÚ + + `d–‘e +( +PrݖPDO + \ +$cÚ + = +nuÎ +) + +2013 +´Ùeùed + +funùiÚ + + `addD–‘eBody +(& +$süt +) { + +2014 +$süt + .= " + +2015 ià(\ +$this +-> + `isD–‘ed +()) { + +2016 +throw + +Ãw + + `PrݖExû±iÚ +(\"This object has‡lready been deleted.\"); + +2019 ià(\ +$cÚ + ==ð +nuÎ +) { + +2020 \ +$cÚ + = +Prݖ +:: + `g‘CÚÃùiÚ +(".$this->g‘P“rCÏs¢ame().":: +DATABASE_NAME +, Prݖ:: +CONNECTION_WRITE +); + +2023 \ +$cÚ +-> + `begšT¿n§ùiÚ +(); + +2024 +Œy + {"; + +2025 if( +$this +-> + `g‘G’”©ÜCÚfig +()-> + `g‘BuždPrݔty +('addHooks')) { + +2026 +$süt + .= " + +2027 \ +$»t + = \ +$this +-> + `´eD–‘e +(\ +$cÚ +);"; + +2029 +$this +-> + `­¶yBehaviÜModif›r +('´eD–‘e', +$süt +, " "); + +2030 +$süt + .= " + +2031 ià(\ +$»t +) { + +2032 ".$this->g‘P“rCÏs¢ame().":: + `doD–‘e +(\ +$this +, \ +$cÚ +); + +2033 \ +$this +-> + `po¡D–‘e +(\ +$cÚ +);"; + +2035 +$this +-> + `­¶yBehaviÜModif›r +('po¡D–‘e', +$süt +, " "); + +2036 +$süt + .= " + +2037 \ +$this +-> + `£tD–‘ed +( +Œue +); + +2038 \ +$cÚ +-> + `comm™ +(); + +2040 \ +$cÚ +-> + `comm™ +(); + +2044 +$this +-> + `­¶yBehaviÜModif›r +('´eD–‘e', +$süt +, " "); + +2045 +$süt + .= " + +2046 ".$this->g‘P“rCÏs¢ame().":: + `doD–‘e +(\ +$this +, \ +$cÚ +);"; + +2048 +$this +-> + `­¶yBehaviÜModif›r +('po¡D–‘e', +$süt +, " "); + +2049 +$süt + .= " + +2050 \ +$this +-> + `£tD–‘ed +( +Œue +); + +2051 \ +$cÚ +-> + `comm™ +();"; + +2054 +$süt + .= " + +2055 } + `ÿtch + ( +PrݖExû±iÚ + \ +$e +) { + +2056 \ +$cÚ +-> + `rÞlBack +(); + +2057 +throw + \ +$e +; + +2066 +´Ùeùed + +funùiÚ + + `addD–‘eClo£ +(& +$süt +) { + +2067 +$süt + .= " + +2070 + } +} + +2076 +´Ùeùed + +funùiÚ + + $addR–ßd +(& +$süt +) + +2078 +$bË + = +$this +-> + `g‘TabË +(); + +2079 +$süt + .= " + +2090 +public + +funùiÚ + + `»lßd +(\ +$d“p + = +çl£ +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +2092 ià(\ +$this +-> + `isD–‘ed +()) { + +2093 +throw + +Ãw + + `PrݖExû±iÚ +(\"Cannot„eload‡ deleted object.\"); + +2096 ià(\ +$this +-> + `isNew +()) { + +2097 +throw + +Ãw + + `PrݖExû±iÚ +(\"Cannot„eload‡n unsaved object.\"); + +2100 ià(\ +$cÚ + ==ð +nuÎ +) { + +2101 \ +$cÚ + = +Prݖ +:: + `g‘CÚÃùiÚ +(".$this->g‘P“rCÏs¢ame().":: +DATABASE_NAME +, Prݖ:: +CONNECTION_READ +); + +2107 \ +$¡mt + = ".$this->g‘P“rCÏs¢ame().":: + `doS–eùStmt +(\ +$this +-> + `buždPkeyCr™”Ÿ +(), \ +$cÚ +); + +2108 \ +$row + = \ +$¡mt +-> + `ãtch +( +PDO +:: +FETCH_NUM +); + +2109 \ +$¡mt +-> + `þo£CursÜ +(); + +2110 ià(!\ +$row +) { + +2111 +throw + +Ãw + + `PrݖExû±iÚ +('Cannot find matching„ow inhe databaseo„eload object values.'); + +2113 \ +$this +-> + `hyd¿‹ +(\ +$row +, 0, +Œue +); + +2117 + `fܗch + ( +$bË +-> + `g‘CÞumns +(è +as + +$cÞ +) { + +2118 ià( +$cÞ +-> + `isLazyLßd +()) { + +2119 +$þo + = + `¡¹Þow” +( +$cÞ +-> + `g‘Name +()); + +2120 +$süt + .= " + +2122 \ +$this +->" . $þØ. " = +nuÎ +; + +2123 \ +$this +->".$þo." +_isLßded + = +çl£ +; + +2128 +$süt + .= " + +2129 ià(\ +$d“p +) { + +2132 + `fܗch + ( +$bË +-> + `g‘FÜeignKeys +(è +as + +$fk +) { + +2133 +$v¬Name + = +$this +-> + `g‘FKV¬Name +( +$fk +); + +2134 +$süt + .= " + +2135 \ +$this +->".$v¬Name." = +nuÎ +;"; + +2138 + `fܗch + ( +$bË +-> + `g‘Re㼔s +(è +as + +$»fFK +) { + +2139 ià( +$»fFK +-> + `isLoÿlPrim¬yKey +()) { + +2140 +$süt + .= " + +2141 \ +$this +->".$this->g‘PKRefFKV¬Name($»fFK)." = +nuÎ +; + +2144 +$süt + .= " + +2145 \ +$this +->".$this->g‘RefFKCÞlV¬Name($»fFK)." = +nuÎ +; + +2146 \ +$this +->".$this->g‘RefFKLa¡Cr™”ŸV¬Name($»fFK)." = +nuÎ +; + +2151 +$süt + .= " + +2155 + } +} + +2161 +´Ùeùed + +funùiÚ + + $addMªuÏtiÚM‘hods +(& +$süt +) + +2163 +$this +-> + `addR–ßd +( +$süt +); + +2164 +$this +-> + `addD–‘e +( +$süt +); + +2165 +$this +-> + `addSave +( +$süt +); + +2166 +$this +-> + `addDoSave +( +$süt +); + +2167 + } +} + +2173 +´Ùeùed + +funùiÚ + + $addV®id©iÚM‘hods +(& +$süt +) + +2175 +$this +-> + `addV®id©iÚFažu»sA‰ribu‹ +( +$süt +); + +2176 +$this +-> + `addG‘V®id©iÚFažu»s +( +$süt +); + +2177 +$this +-> + `addV®id©e +( +$süt +); + +2178 +$this +-> + `addDoV®id©e +( +$süt +); + +2179 + } +} + +2185 +´Ùeùed + +funùiÚ + + $addV®id©iÚFažu»sA‰ribu‹ +(& +$süt +) + +2187 +$süt + .= " + +2192 +´Ùeùed + \ +$v®id©iÚFažu»s + = + `¬¿y +(); + +2194 + } +} + +2200 +´Ùeùed + +funùiÚ + + $addG‘V®id©iÚFažu»s +(& +$süt +) + +2202 +$süt + .= " + +2210 +public + +funùiÚ + + `g‘V®id©iÚFažu»s +() + +2212  \ +$this +-> +v®id©iÚFažu»s +; + +2215 + } +} + +2221 +´Ùeùed + +funùiÚ + + $addG‘Prim¬yKey +(& +$süt +) + +2223 +$pkeys + = +$this +-> + `g‘TabË +()-> + `g‘Prim¬yKey +(); + +2224 ià( + `couÁ +( +$pkeys +) == 1) { + +2225 +$this +-> + `addG‘Prim¬yKey_SšgËPK +( +$süt +); + +2226 } + `–£if + ( + `couÁ +( +$pkeys +) > 1) { + +2227 +$this +-> + `addG‘Prim¬yKey_MuÉiPK +( +$süt +); + +2230 +$this +-> + `addG‘Prim¬yKey_NoPK +( +$süt +); + +2232 + } +} + +2238 +´Ùeùed + +funùiÚ + + $addG‘Prim¬yKey_SšgËPK +(& +$süt +) + +2240 +$bË + = +$this +-> + `g‘TabË +(); + +2241 +$pkeys + = +$bË +-> + `g‘Prim¬yKey +(); + +2242 +$ýty³ + = +$pkeys +[0]-> + `g‘PhpTy³ +(); + +2244 +$süt + .= " + +2249 +public + +funùiÚ + + `g‘Prim¬yKey +() + +2251  \ +$this +-> +g‘ +".$pkeys[0]->getPhpName()."(); + +2254 + } +} + +2260 +´Ùeùed + +funùiÚ + + $addG‘Prim¬yKey_MuÉiPK +(& +$süt +) + +2263 +$süt + .= " + +2269 +public + +funùiÚ + + `g‘Prim¬yKey +() + +2271 \ +$pks + = + `¬¿y +(); + +2273 +$i + = 0; + +2274 + `fܗch + ( +$this +-> + `g‘TabË +()-> + `g‘Prim¬yKey +(è +as + +$pk +) { + +2275 +$süt + .= " + +2276 \ +$pks +[ +$i +] = \ +$this +-> +g‘ +".$pk->getPhpName()."(); + +2278 +$i +++; + +2280 +$süt + .= " + +2281  \ +$pks +; + +2284 + } +} + +2294 +´Ùeùed + +funùiÚ + + $addG‘Prim¬yKey_NoPK +(& +$süt +) + +2296 +$süt + .= " + +2302 +public + +funùiÚ + + `g‘Prim¬yKey +() + +2304  +nuÎ +; + +2307 + } +} + +2312 +´Ùeùed + +funùiÚ + + $addS‘Prim¬yKey +(& +$süt +) + +2314 +$pkeys + = +$this +-> + `g‘TabË +()-> + `g‘Prim¬yKey +(); + +2315 ià( + `couÁ +( +$pkeys +) == 1) { + +2316 +$this +-> + `addS‘Prim¬yKey_SšgËPK +( +$süt +); + +2317 } + `–£if + ( + `couÁ +( +$pkeys +) > 1) { + +2318 +$this +-> + `addS‘Prim¬yKey_MuÉiPK +( +$süt +); + +2321 +$this +-> + `addS‘Prim¬yKey_NoPK +( +$süt +); + +2323 + } +} + +2329 +´Ùeùed + +funùiÚ + + $addS‘Prim¬yKey_SšgËPK +(& +$süt +) + +2332 +$pkeys + = +$this +-> + `g‘TabË +()-> + `g‘Prim¬yKey +(); + +2333 +$cÞ + = +$pkeys +[0]; + +2334 +$þo += + `¡¹Þow” +( +$cÞ +-> + `g‘Name +()); + +2335 +$ùy³ + = +$cÞ +-> + `g‘PhpTy³ +(); + +2337 +$süt + .= " + +2344 +public + +funùiÚ + + `£tPrim¬yKey +(\ +$key +) + +2346 \ +$this +-> +£t +".$cÞ->g‘PhpName()."(\ +$key +); + +2349 + } +} + +2355 +´Ùeùed + +funùiÚ + + $addS‘Prim¬yKey_MuÉiPK +(& +$süt +) + +2358 +$süt + .=" + +2365 +public + +funùiÚ + + `£tPrim¬yKey +(\ +$keys +) + +2368 +$i + = 0; + +2369 + `fܗch + ( +$this +-> + `g‘TabË +()-> + `g‘Prim¬yKey +(è +as + +$pk +) { + +2370 +$pkty³ + = +$pk +-> + `g‘PhpTy³ +(); + +2371 +$süt + .= " + +2372 \ +$this +-> +£t +".$pk->g‘PhpName()."(\ +$keys +[ +$i +]); + +2374 +$i +++; + +2376 +$süt + .= " + +2379 + } +} + +2389 +´Ùeùed + +funùiÚ + + $addS‘Prim¬yKey_NoPK +(& +$süt +) + +2391 +$süt + .=" + +2401 +public + +funùiÚ + + `£tPrim¬yKey +(\ +$pk +) + +2406 + } +} + +2417 +´Ùeùed + +funùiÚ + + $g‘FKV¬Name +( +FÜeignKey + +$fk +) + +2419  'a' . +$this +-> + `g‘FKPhpNameAffix +( +$fk +, +$¶u¿l + = +çl£ +); + +2420 + } +} + +2427 +´Ùeùed + +funùiÚ + + $g‘RefFKCÞlV¬Name +( +FÜeignKey + +$fk +) + +2429  'cÞl' . +$this +-> + `g‘RefFKPhpNameAffix +( +$fk +, +$¶u¿l + = +Œue +); + +2430 + } +} + +2438 +´Ùeùed + +funùiÚ + + $g‘PKRefFKV¬Name +( +FÜeignKey + +$fk +) + +2440  'sšgË' . +$this +-> + `g‘RefFKPhpNameAffix +( +$fk +, +$¶u¿l + = +çl£ +); + +2441 + } +} + +2449 +´Ùeùed + +funùiÚ + + $g‘RefFKLa¡Cr™”ŸV¬Name +( +FÜeignKey + +$fk +) + +2451  'Ï¡' . +$this +-> + `g‘RefFKPhpNameAffix +( +$fk +, +$¶u¿l + = +çl£ +) . 'Criteria'; + +2452 + } +} + +2464 +´Ùeùed + +funùiÚ + + $addFKM‘hods +(& +$süt +) + +2466 + `fܗch + ( +$this +-> + `g‘TabË +()-> + `g‘FÜeignKeys +(è +as + +$fk +) { + +2467 +$this +-> + `addFKMutÜ +( +$süt +, +$fk +); + +2468 +$this +-> + `addFKAcûssÜ +( +$süt +, +$fk +); + +2470 + } +} + +2476 +´Ùeùed + +funùiÚ + + $addFKA‰ribu‹s +(& +$süt +, +FÜeignKey + +$fk +) + +2478 +$þassName + = +$this +-> + `g‘FÜeignTabË +( +$fk +)-> + `g‘PhpName +(); + +2479 +$v¬Name + = +$this +-> + `g‘FKV¬Name +( +$fk +); + +2481 +$süt + .= " + +2485 +´Ùeùed + +$ +".$varName."; + +2487 + } +} + +2493 +´Ùeùed + +funùiÚ + + $addFKMutÜ +(& +$süt +, +FÜeignKey + +$fk +) + +2495 +$bË + = +$this +-> + `g‘TabË +(); + +2496 +$tblFK + = +$this +-> + `g‘FÜeignTabË +( +$fk +); + +2498 +$jošTabËObjeùBužd” + = +$this +-> + `g‘NewObjeùBužd” +( +$tblFK +); + +2500 +$þassName + = +$jošTabËObjeùBužd” +-> + `g‘ObjeùCÏs¢ame +(); + +2501 +$v¬Name + = +$this +-> + `g‘FKV¬Name +( +$fk +); + +2503 +$süt + .= " + +2511 +public + +funùiÚ + +£t +".$this->g‘FKPhpNameAffix($fk, $¶u¿Èðçl£)."( +$þassName + \ +$v + = +nuÎ +) + +2513 + `fܗch + ( +$fk +-> + `g‘LoÿlCÞumns +(è +as + +$cÞumnName +) { + +2514 +$cÞumn + = +$bË +-> + `g‘CÞumn +( +$cÞumnName +); + +2515 +$lfm­ + = +$fk +-> + `g‘LoÿlFÜeignM­pšg +(); + +2516 +$cÞFKName + = +$lfm­ +[ +$cÞumnName +]; + +2517 +$cÞFK + = +$tblFK +-> + `g‘CÞumn +( +$cÞFKName +); + +2518 +$süt + .= " + +2519 ià(\ +$v + ==ð +nuÎ +) { + +2520 \ +$this +-> +£t +".$column->getPhpName()."(".$this->getDefaultValueString($column)."); + +2522 \ +$this +-> +£t +".$cÞumn->g‘PhpName()."(\ +$v +-> +g‘ +".$colFK->getPhpName()."()); + +2528 +$süt + .= " + +2529 \ +$this +-> +$v¬Name + = \ +$v +; + +2535 ià( +$fk +-> + `isLoÿlPrim¬yKey +()) { + +2536 +$süt + .= " + +2538 ià(\ +$v + !=ð +nuÎ +) { + +2539 \ +$v +-> +£t +".$this->g‘RefFKPhpNameAffix($fk, $¶u¿Èðçl£)."(\ +$this +); + +2543 +$süt + .= " + +2546 ià(\ +$v + !=ð +nuÎ +) { + +2547 \ +$v +-> +add +".$this->g‘RefFKPhpNameAffix($fk, $¶u¿Èðçl£)."(\ +$this +); + +2553 +$süt + .= " + +2554  \ +$this +; + +2557 + } +} + +2563 +´Ùeùed + +funùiÚ + + $addFKAcûssÜ +(& +$süt +, +FÜeignKey + +$fk +) + +2565 +$bË + = +$this +-> + `g‘TabË +(); + +2567 +$v¬Name + = +$this +-> + `g‘FKV¬Name +( +$fk +); + +2568 +$pCÞlName + = +$this +-> + `g‘FKPhpNameAffix +( +$fk +, +$¶u¿l + = +Œue +); + +2570 +$fkP“rBužd” + = +$this +-> + `g‘NewP“rBužd” +($this-> + `g‘FÜeignTabË +( +$fk +)); + +2571 +$fkObjeùBužd” + = +$this +-> + `g‘NewObjeùBužd” +($this-> + `g‘FÜeignTabË +( +$fk +))-> + `g‘StubObjeùBužd” +(); + +2572 +$þassName + = +$fkObjeùBužd” +-> + `g‘CÏs¢ame +(); + +2574 +$ªd + = ""; + +2575 +$comma + = ""; + +2576 +$cÚd™iÚ® + = ""; + +2577 +$¬gm­ + = + `¬¿y +(); + +2578 +$¬gsize + = 0; + +2579 + `fܗch + ( +$fk +-> + `g‘LoÿlCÞumns +(è +as + +$cÞumnName +) { + +2581 +$lfm­ + = +$fk +-> + `g‘LoÿlFÜeignM­pšg +(); + +2583 +$loÿlCÞumn + = +$bË +-> + `g‘CÞumn +( +$cÞumnName +); + +2584 +$fÜeignCÞumn + = +$fk +-> + `g‘FÜeignTabË +()-> + `g‘CÞumn +( +$lfm­ +[ +$cÞumnName +]); + +2586 +$cÞumn + = +$bË +-> + `g‘CÞumn +( +$cÞumnName +); + +2587 +$ýty³ + = +$cÞumn +-> + `g‘PhpTy³ +(); + +2588 +$þo + = + `¡¹Þow” +( +$cÞumn +-> + `g‘Name +()); + +2590 ià( +$ýty³ + == "integer" || $cptype == "float" || $cptype == "double") { + +2591 +$cÚd™iÚ® + .ð +$ªd + . "\$this->". +$þo + ." != 0"; + +2592 } + `–£if + ( +$ýty³ + == "string") { + +2593 +$cÚd™iÚ® + .ð +$ªd + . "(\$this->" . +$þo + ." !== \"\" && \$this->".$clo." !==‚ull)"; + +2595 +$cÚd™iÚ® + .ð +$ªd + . "\$this->" . +$þo + ." !==‚ull"; + +2598 +$¬gm­ +[] = + `¬¿y +('fÜeign' => +$fÜeignCÞumn +, 'loÿl' => +$loÿlCÞumn +); + +2599 +$ªd + = " && "; + +2600 +$comma + = ", "; + +2601 +$¬gsize + = $argsize + 1; + +2606 +$u£R‘r›veByPk + = + `couÁ +( +$¬gm­ +è=ð1 && $¬gm­[0]['fÜeign']-> + `isPrim¬yKey +(); + +2608 +$süt + .= " + +2617 +public + +funùiÚ + +g‘ +".$this->g‘FKPhpNameAffix($fk, $¶u¿Èðçl£)."( +PrݖPDO + \ +$cÚ + = +nuÎ +) + +2619 +$süt + .= " + +2620 ià(\ +$this +-> +$v¬Name + ==ð +nuÎ + && ( +$cÚd™iÚ® +)) {"; + +2621 ià( +$u£R‘r›veByPk +) { + +2622 +$süt + .= " + +2623 \ +$this +-> +$v¬Name + = ".$fkP“rBužd”->g‘P“rCÏs¢ame().":: + `»Œ›veByPk +(\$this-> +$þo +);"; + +2625 +$süt + .= " + +2626 \ +$c + = +Ãw + + `Cr™”Ÿ +(".$fkP“rBužd”->g‘P“rCÏs¢ame().":: +DATABASE_NAME +);"; + +2627 + `fܗch + ( +$¬gm­ + +as + +$– +) { + +2628 +$fcÞ + = +$– +['foreign']; + +2629 +$lcÞ + = +$– +['local']; + +2630 +$þo + = + `¡¹Þow” +( +$lcÞ +-> + `g‘Name +()); + +2631 +$süt + .= " + +2632 \ +$c +-> + `add +(".$fkP“rBužd”->g‘CÞumnCÚ¡ªt($fcÞ).", \ +$this +->".$clo.");"; + +2634 +$süt + .= " + +2635 \ +$this +-> +$v¬Name + = ".$fkP“rBužd”->g‘P“rCÏs¢ame().":: + `doS–eùOà +(\ +$c +, \ +$cÚ +);"; + +2637 ià( +$fk +-> + `isLoÿlPrim¬yKey +()) { + +2638 +$süt + .= " + +2640 \ +$this +->{ +$v¬Name +}-> +£t +".$this->getRefFKPhpNameAffix($fk, $plural = false)."(\$this);"; + +2642 +$süt + .= " + +2652 +$süt + .= " + +2654  \ +$this +-> +$v¬Name +; + +2658 + } +} + +2666 +´Ùeùed + +funùiÚ + + $addFKByKeyMutÜ +(& +$süt +, +FÜeignKey + +$fk +) + +2668 +$bË + = +$this +-> + `g‘TabË +(); + +2670 #$þassNamð +$this +-> + `g‘FÜeignTabË +( +$fk +)-> + `g‘PhpName +(); + +2671 +$m‘hodAffix + = +$this +-> + `g‘FKPhpNameAffix +( +$fk +); + +2672 #$v¬Namð +$this +-> + `g‘FKV¬Name +( +$fk +); + +2674 +$süt + .= " + +2692 +public + +funùiÚ + +£t +".$m‘hodAffix." + `Key +(\ +$key +) + +2695 ià( + `couÁ +( +$fk +-> + `g‘LoÿlCÞumns +()) > 1) { + +2696 +$i + = 0; + +2697 + `fܗch + ( +$fk +-> + `g‘LoÿlCÞumns +(è +as + +$cÞName +) { + +2698 +$cÞ + = +$bË +-> + `g‘CÞumn +( +$cÞName +); + +2699 +$fkty³ + = +$cÞ +-> + `g‘PhpTy³ +(); + +2700 +$süt + .= " + +2701 \ +$this +-> +£t +".$cÞ->g‘PhpName()."Ð( +$fkty³ +è\ +$key +[ +$i +] ); + +2703 +$i +++; + +2706 +$lcÞs + = +$fk +-> + `g‘LoÿlCÞumns +(); + +2707 +$cÞName + = +$lcÞs +[0]; + +2708 +$cÞ + = +$bË +-> + `g‘CÞumn +( +$cÞName +); + +2709 +$fkty³ + = +$cÞ +-> + `g‘PhpTy³ +(); + +2710 +$süt + .= " + +2711 \ +$this +-> +£t +".$cÞ->g‘PhpName()."Ð( +$fkty³ +è\ +$key +); + +2714 +$süt + .= " + +2715  \ +$this +; + +2718 + } +} + +2724 +´Ùeùed + +funùiÚ + + $addRefFKG‘JošM‘hods +(& +$süt +, +FÜeignKey + +$»fFK +) + +2726 +$bË + = +$this +-> + `g‘TabË +(); + +2727 +$tblFK + = +$»fFK +-> + `g‘TabË +(); + +2728 +$još_behaviÜ + = +$this +-> + `g‘G’”©ÜCÚfig +()-> + `g‘BuždPrݔty +('useLeftJoinsInDoJoinMethods') ? 'Criteria::LEFT_JOIN' : 'Criteria::INNER_JOIN'; + +2730 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +2731 +$»lCÞ + = +$this +-> + `g‘RefFKPhpNameAffix +( +$»fFK +, +$¶u¿l += +Œue +); + +2732 +$cÞlName + = +$this +-> + `g‘RefFKCÞlV¬Name +( +$»fFK +); + +2733 +$Ï¡Cr™”ŸName + = +$this +-> + `g‘RefFKLa¡Cr™”ŸV¬Name +( +$»fFK +); + +2735 +$fkP“rBužd” + = +$this +-> + `g‘NewP“rBužd” +( +$tblFK +); + +2737 +$Ï¡TabË + = ""; + +2738 + `fܗch + ( +$tblFK +-> + `g‘FÜeignKeys +(è +as + +$fk2 +) { + +2740 +$tblFK2 + = +$this +-> + `g‘FÜeignTabË +( +$fk2 +); + +2741 +$doJošG‘ + = ! +$tblFK2 +-> + `isFÜReã»nûOÆy +(); + +2745 ià( +$this +-> + `g‘TabË +()-> + `g‘PhpName +(è=ð +$tblFK2 +->getPhpName()) { + +2746 +$doJošG‘ + = +çl£ +; + +2749 +$»lCÞ2 + = +$this +-> + `g‘FKPhpNameAffix +( +$fk2 +, +$¶u¿l + = +çl£ +); + +2751 iàÐ +$this +-> + `g‘R–©edBySuffix +( +$»fFK +) != "" && + +2752 ( +$this +-> + `g‘R–©edBySuffix +( +$»fFK +è=ð$this->g‘R–©edBySuffix( +$fk2 +))) { + +2753 +$doJošG‘ + = +çl£ +; + +2756 ià( +$doJošG‘ +) { + +2757 +$süt + .= " + +2770 +public + +funùiÚ + +g‘ +".$»lCÞ." +Još +".$»lCÞ2."(\ +$ü™”Ÿ + = +nuÎ +, \ +$cÚ + =‚uÎ, \ +$još_behaviÜ + = $join_behavior) + +2772 +$süt + .= " + +2773 ià(\ +$ü™”Ÿ + ==ð +nuÎ +) { + +2774 \ +$ü™”Ÿ + = +Ãw + + `Cr™”Ÿ +( +$³”CÏs¢ame +:: +DATABASE_NAME +); + +2776 + `–£if + (\ +$ü™”Ÿ + +š¡ªûof + +Cr™”Ÿ +) + +2778 \ +$ü™”Ÿ + = +þÚe + \$criteria; + +2781 ià(\ +$this +-> +$cÞlName + ==ð +nuÎ +) { + +2782 ià(\ +$this +-> + `isNew +()) { + +2783 \ +$this +-> +$cÞlName + = + `¬¿y +(); + +2786 + `fܗch + ( +$»fFK +-> + `g‘FÜeignCÞumns +(è +as + +$cÞumnName +) { + +2787 +$cÞumn + = +$bË +-> + `g‘CÞumn +( +$cÞumnName +); + +2788 +$æM­ + = +$»fFK +-> + `g‘FÜeignLoÿlM­pšg +(); + +2789 +$cÞFKName + = +$æM­ +[ +$cÞumnName +]; + +2790 +$cÞFK + = +$tblFK +-> + `g‘CÞumn +( +$cÞFKName +); + +2791 ià( +$cÞFK + ==ð +nuÎ +) { + +2792 +throw + +Ãw + + `EngšeExû±iÚ +("CÞumÀ$cÞFKNamnÙ found iÀ" . +$tblFK +-> + `g‘Name +()); + +2794 +$þo + = + `¡¹Þow” +( +$cÞumn +-> + `g‘Name +()); + +2795 +$süt + .= " + +2796 \ +$ü™”Ÿ +-> + `add +(".$fkP“rBužd”->g‘CÞumnCÚ¡ªt($cÞFK).", \ +$this +-> +$þo +); + +2800 +$süt + .= " + +2801 \ +$this +-> +$cÞlName + = ".$fkP“rBužd”->g‘P“rCÏs¢ame().":: + `doS–eùJoš$»lCÞ2 +(\ +$ü™”Ÿ +, \ +$cÚ +, \ +$još_behaviÜ +); + +2808 + `fܗch + ( +$»fFK +-> + `g‘FÜeignCÞumns +(è +as + +$cÞumnName +) { + +2809 +$cÞumn + = +$bË +-> + `g‘CÞumn +( +$cÞumnName +); + +2810 +$æM­ + = +$»fFK +-> + `g‘FÜeignLoÿlM­pšg +(); + +2811 +$cÞFKName + = +$æM­ +[ +$cÞumnName +]; + +2812 +$cÞFK + = +$tblFK +-> + `g‘CÞumn +( +$cÞFKName +); + +2813 +$þo + = + `¡¹Þow” +( +$cÞumn +-> + `g‘Name +()); + +2814 +$süt + .= " + +2815 \ +$ü™”Ÿ +-> + `add +(".$fkP“rBužd”->g‘CÞumnCÚ¡ªt($cÞFK).", \ +$this +-> +$þo +); + +2819 +$süt + .= " + +2820 ià(! + `is£t +(\ +$this +-> +$Ï¡Cr™”ŸName +è|| !\$this->".$Ï¡Cr™”ŸName."-> + `equ®s +(\ +$ü™”Ÿ +)) { + +2821 \ +$this +-> +$cÞlName + = ".$fkP“rBužd”->g‘P“rCÏs¢ame().":: + `doS–eùJoš$»lCÞ2 +(\ +$ü™”Ÿ +, \ +$cÚ +, \ +$još_behaviÜ +); + +2824 \ +$this +-> +$Ï¡Cr™”ŸName + = \ +$ü™”Ÿ +; + +2826  \ +$this +-> +$cÞlName +; + +2833 + } +} + +2848 +´Ùeùed + +funùiÚ + + $addRefFKA‰ribu‹s +(& +$süt +, +FÜeignKey + +$»fFK +) + +2850 +$jošedTabËObjeùBužd” + = +$this +-> + `g‘NewObjeùBužd” +( +$»fFK +-> + `g‘TabË +()); + +2851 +$þassName + = +$jošedTabËObjeùBužd” +-> + `g‘ObjeùCÏs¢ame +(); + +2853 ià( +$»fFK +-> + `isLoÿlPrim¬yKey +()) { + +2854 +$süt + .= " + +2858 +´Ùeùed + +$ +".$this->getPKRefFKVarName($refFK)."; + +2861 +$süt + .= " + +2865 +´Ùeùed + +$ +".$this->getRefFKCollVarName($refFK)."; + +2870 +´iv©e + +$ +".$this->g‘RefFKLa¡Cr™”ŸV¬Name($»fFK)." = +nuÎ +; + +2873 + } +} + +2879 +´Ùeùed + +funùiÚ + + $addRefFKM‘hods +(& +$süt +) + +2881 + `fܗch + ( +$this +-> + `g‘TabË +()-> + `g‘Re㼔s +(è +as + +$»fFK +) { + +2882 ià( +$»fFK +-> + `isLoÿlPrim¬yKey +()) { + +2883 +$this +-> + `addPKRefFKG‘ +( +$süt +, +$»fFK +); + +2884 +$this +-> + `addPKRefFKS‘ +( +$süt +, +$»fFK +); + +2886 +$this +-> + `addRefFKCˬ +( +$süt +, +$»fFK +); + +2887 +$this +-> + `addRefFKIn™ +( +$süt +, +$»fFK +); + +2888 +$this +-> + `addRefFKG‘ +( +$süt +, +$»fFK +); + +2889 +$this +-> + `addRefFKCouÁ +( +$süt +, +$»fFK +); + +2890 +$this +-> + `addRefFKAdd +( +$süt +, +$»fFK +); + +2891 +$this +-> + `addRefFKG‘JošM‘hods +( +$süt +, +$»fFK +); + +2894 + } +} + +2900 +´Ùeùed + +funùiÚ + + $addRefFKCˬ +(& +$süt +, +FÜeignKey + +$»fFK +) { + +2902 +$»lCÞ + = +$this +-> + `g‘RefFKPhpNameAffix +( +$»fFK +, +$¶u¿l + = +Œue +); + +2903 +$cÞlName + = +$this +-> + `g‘RefFKCÞlV¬Name +( +$»fFK +); + +2905 +$süt + .= " + +2915 +public + +funùiÚ + + `þ—r$»lCÞ +() + +2917 \ +$this +-> +$cÞlName + = +nuÎ +; + +2920 + } +} + +2926 +´Ùeùed + +funùiÚ + + $addRefFKIn™ +(& +$süt +, +FÜeignKey + +$»fFK +) { + +2928 +$»lCÞ + = +$this +-> + `g‘RefFKPhpNameAffix +( +$»fFK +, +$¶u¿l + = +Œue +); + +2929 +$cÞlName + = +$this +-> + `g‘RefFKCÞlV¬Name +( +$»fFK +); + +2931 +$süt + .= " + +2941 +public + +funùiÚ + + `š™$»lCÞ +() + +2943 \ +$this +-> +$cÞlName + = + `¬¿y +(); + +2946 + } +} + +2952 +´Ùeùed + +funùiÚ + + $addRefFKAdd +(& +$süt +, +FÜeignKey + +$»fFK +) + +2954 +$tblFK + = +$»fFK +-> + `g‘TabË +(); + +2956 +$jošedTabËObjeùBužd” + = +$this +-> + `g‘NewObjeùBužd” +( +$»fFK +-> + `g‘TabË +()); + +2957 +$þassName + = +$jošedTabËObjeùBužd” +-> + `g‘ObjeùCÏs¢ame +(); + +2959 +$cÞlName + = +$this +-> + `g‘RefFKCÞlV¬Name +( +$»fFK +); + +2961 +$süt + .= " + +2970 +public + +funùiÚ + +add +".$this->g‘RefFKPhpNameAffix($»fFK, $¶u¿Èðçl£)."( +$þassName + \ +$l +) + +2972 ià(\ +$this +-> +$cÞlName + ==ð +nuÎ +) { + +2973 \ +$this +-> +š™ +".$this->getRefFKPhpNameAffix($refFK, $plural =rue)."(); + +2975 ià(! + `š_¬¿y +(\ +$l +, \ +$this +-> +$cÞlName +, +Œue +)) { + +2976 + `¬¿y_push +(\ +$this +-> +$cÞlName +, \ +$l +); + +2977 \ +$l +-> +£t +".$this->g‘FKPhpNameAffix($»fFK, $¶u¿Èðçl£)."(\ +$this +); + +2981 + } +} + +2987 +´Ùeùed + +funùiÚ + + $addRefFKCouÁ +(& +$süt +, +FÜeignKey + +$»fFK +) + +2989 +$bË + = +$this +-> + `g‘TabË +(); + +2990 +$tblFK + = +$»fFK +-> + `g‘TabË +(); + +2992 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +2994 +$fkP“rBužd” + = +$this +-> + `g‘NewP“rBužd” +( +$»fFK +-> + `g‘TabË +()); + +2995 +$»lCÞ + = +$this +-> + `g‘RefFKPhpNameAffix +( +$»fFK +, +$¶u¿l + = +Œue +); + +2997 +$cÞlName + = +$this +-> + `g‘RefFKCÞlV¬Name +( +$»fFK +); + +2998 +$Ï¡Cr™”ŸName + = +$this +-> + `g‘RefFKLa¡Cr™”ŸV¬Name +( +$»fFK +); + +3000 +$þassName + = +$fkP“rBužd” +-> + `g‘ObjeùCÏs¢ame +(); + +3002 +$süt + .= " + +3012 +public + +funùiÚ + + `couÁ$»lCÞ +( +Cr™”Ÿ + \ +$ü™”Ÿ + = +nuÎ +, \ +$di¡šù + = +çl£ +, +PrݖPDO + \ +$cÚ + =‚ull) + +3015 +$süt + .= " + +3016 ià(\ +$ü™”Ÿ + ==ð +nuÎ +) { + +3017 \ +$ü™”Ÿ + = +Ãw + + `Cr™”Ÿ +( +$³”CÏs¢ame +:: +DATABASE_NAME +); + +3019 \ +$ü™”Ÿ + = +þÚe + \$criteria; + +3022 ià(\ +$di¡šù +) { + +3023 \ +$ü™”Ÿ +-> + `£tDi¡šù +(); + +3026 \ +$couÁ + = +nuÎ +; + +3028 ià(\ +$this +-> +$cÞlName + ==ð +nuÎ +) { + +3029 ià(\ +$this +-> + `isNew +()) { + +3030 \ +$couÁ + = 0; + +3033 + `fܗch + ( +$»fFK +-> + `g‘LoÿlCÞumns +(è +as + +$cÞFKName +) { + +3035 +$lfm­ + = +$»fFK +-> + `g‘LoÿlFÜeignM­pšg +(); + +3036 +$loÿlCÞumn + = +$this +-> + `g‘TabË +()-> + `g‘CÞumn +( +$lfm­ +[ +$cÞFKName +]); + +3037 +$cÞFK + = +$»fFK +-> + `g‘TabË +()-> + `g‘CÞumn +( +$cÞFKName +); + +3038 +$þo + = + `¡¹Þow” +( +$loÿlCÞumn +-> + `g‘Name +()); + +3039 +$süt + .= " + +3040 \ +$ü™”Ÿ +-> + `add +(".$fkP“rBužd”->g‘CÞumnCÚ¡ªt($cÞFK).", \ +$this +-> +$þo +); + +3044 +$süt + .= " + +3045 \ +$couÁ + = ".$fkP“rBužd”->g‘P“rCÏs¢ame().":: + `doCouÁ +(\ +$ü™”Ÿ +, +çl£ +, \ +$cÚ +); + +3049 ià(!\ +$this +-> + `isNew +()) { + +3054 + `fܗch + ( +$»fFK +-> + `g‘LoÿlCÞumns +(è +as + +$cÞFKName +) { + +3056 +$lfm­ + = +$»fFK +-> + `g‘LoÿlFÜeignM­pšg +(); + +3057 +$loÿlCÞumn + = +$this +-> + `g‘TabË +()-> + `g‘CÞumn +( +$lfm­ +[ +$cÞFKName +]); + +3058 +$cÞFK + = +$»fFK +-> + `g‘TabË +()-> + `g‘CÞumn +( +$cÞFKName +); + +3059 +$þo + = + `¡¹Þow” +( +$loÿlCÞumn +-> + `g‘Name +()); + +3060 +$süt + .= " + +3062 \ +$ü™”Ÿ +-> + `add +(".$fkP“rBužd”->g‘CÞumnCÚ¡ªt($cÞFK).", \ +$this +-> +$þo +); + +3065 +$süt + .= " + +3066 ià(! + `is£t +(\ +$this +-> +$Ï¡Cr™”ŸName +è|| !\$this->".$Ï¡Cr™”ŸName."-> + `equ®s +(\ +$ü™”Ÿ +)) { + +3067 \ +$couÁ + = ".$fkP“rBužd”->g‘P“rCÏs¢ame().":: + `doCouÁ +(\ +$ü™”Ÿ +, +çl£ +, \ +$cÚ +); + +3069 \ +$couÁ + = + `couÁ +(\ +$this +-> +$cÞlName +); + +3072 \ +$couÁ + = + `couÁ +(\ +$this +-> +$cÞlName +); + +3075  \ +$couÁ +; + +3078 + } +} + +3084 +´Ùeùed + +funùiÚ + + $addRefFKG‘ +(& +$süt +, +FÜeignKey + +$»fFK +) + +3086 +$bË + = +$this +-> + `g‘TabË +(); + +3087 +$tblFK + = +$»fFK +-> + `g‘TabË +(); + +3089 +$³”CÏs¢ame + = +$this +-> + `g‘StubP“rBužd” +()-> + `g‘CÏs¢ame +(); + +3090 +$fkP“rBužd” + = +$this +-> + `g‘NewP“rBužd” +( +$»fFK +-> + `g‘TabË +()); + +3091 +$»lCÞ + = +$this +-> + `g‘RefFKPhpNameAffix +( +$»fFK +, +$¶u¿l + = +Œue +); + +3093 +$cÞlName + = +$this +-> + `g‘RefFKCÞlV¬Name +( +$»fFK +); + +3094 +$Ï¡Cr™”ŸName + = +$this +-> + `g‘RefFKLa¡Cr™”ŸV¬Name +( +$»fFK +); + +3096 +$þassName + = +$fkP“rBužd” +-> + `g‘ObjeùCÏs¢ame +(); + +3098 +$süt + .= " + +3112 +public + +funùiÚ + + `g‘$»lCÞ +(\ +$ü™”Ÿ + = +nuÎ +, +PrݖPDO + \ +$cÚ + =‚ull) + +3115 +$süt + .= " + +3116 ià(\ +$ü™”Ÿ + ==ð +nuÎ +) { + +3117 \ +$ü™”Ÿ + = +Ãw + + `Cr™”Ÿ +( +$³”CÏs¢ame +:: +DATABASE_NAME +); + +3119 + `–£if + (\ +$ü™”Ÿ + +š¡ªûof + +Cr™”Ÿ +) + +3121 \ +$ü™”Ÿ + = +þÚe + \$criteria; + +3124 ià(\ +$this +-> +$cÞlName + ==ð +nuÎ +) { + +3125 ià(\ +$this +-> + `isNew +()) { + +3126 \ +$this +-> +$cÞlName + = + `¬¿y +(); + +3129 + `fܗch + ( +$»fFK +-> + `g‘LoÿlCÞumns +(è +as + +$cÞFKName +) { + +3131 +$lfm­ + = +$»fFK +-> + `g‘LoÿlFÜeignM­pšg +(); + +3132 +$loÿlCÞumn + = +$this +-> + `g‘TabË +()-> + `g‘CÞumn +( +$lfm­ +[ +$cÞFKName +]); + +3133 +$cÞFK + = +$»fFK +-> + `g‘TabË +()-> + `g‘CÞumn +( +$cÞFKName +); + +3135 +$þo + = + `¡¹Þow” +( +$loÿlCÞumn +-> + `g‘Name +()); + +3137 +$süt + .= " + +3138 \ +$ü™”Ÿ +-> + `add +(".$fkP“rBužd”->g‘CÞumnCÚ¡ªt($cÞFK).", \ +$this +-> +$þo +); + +3142 +$süt + .= " + +3143 ".$fkP“rBužd”->g‘P“rCÏs¢ame().":: + `addS–eùCÞumns +(\ +$ü™”Ÿ +); + +3144 \ +$this +-> +$cÞlName + = ".$fkP“rBužd”->g‘P“rCÏs¢ame().":: + `doS–eù +(\ +$ü™”Ÿ +, \ +$cÚ +); + +3148 ià(!\ +$this +-> + `isNew +()) { + +3153 + `fܗch + ( +$»fFK +-> + `g‘LoÿlCÞumns +(è +as + +$cÞFKName +) { + +3155 +$lfm­ + = +$»fFK +-> + `g‘LoÿlFÜeignM­pšg +(); + +3156 +$loÿlCÞumn + = +$this +-> + `g‘TabË +()-> + `g‘CÞumn +( +$lfm­ +[ +$cÞFKName +]); + +3157 +$cÞFK + = +$»fFK +-> + `g‘TabË +()-> + `g‘CÞumn +( +$cÞFKName +); + +3158 +$þo + = + `¡¹Þow” +( +$loÿlCÞumn +-> + `g‘Name +()); + +3159 +$süt + .= " + +3161 \ +$ü™”Ÿ +-> + `add +(".$fkP“rBužd”->g‘CÞumnCÚ¡ªt($cÞFK).", \ +$this +-> +$þo +); + +3164 +$süt + .= " + +3165 ".$fkP“rBužd”->g‘P“rCÏs¢ame().":: + `addS–eùCÞumns +(\ +$ü™”Ÿ +); + +3166 ià(! + `is£t +(\ +$this +-> +$Ï¡Cr™”ŸName +è|| !\$this->".$Ï¡Cr™”ŸName."-> + `equ®s +(\ +$ü™”Ÿ +)) { + +3167 \ +$this +-> +$cÞlName + = ".$fkP“rBužd”->g‘P“rCÏs¢ame().":: + `doS–eù +(\ +$ü™”Ÿ +, \ +$cÚ +); + +3171 \ +$this +-> +$Ï¡Cr™”ŸName + = \ +$ü™”Ÿ +; + +3172  \ +$this +-> +$cÞlName +; + +3175 + } +} + +3182 +´Ùeùed + +funùiÚ + + $addPKRefFKG‘ +(& +$süt +, +FÜeignKey + +$»fFK +) + +3184 +$bË + = +$this +-> + `g‘TabË +(); + +3185 +$tblFK + = +$»fFK +-> + `g‘TabË +(); + +3187 +$jošedTabËObjeùBužd” + = +$this +-> + `g‘NewObjeùBužd” +( +$»fFK +-> + `g‘TabË +()); + +3188 +$jošedTabËP“rBužd” + = +$this +-> + `g‘NewObjeùBužd” +( +$»fFK +-> + `g‘TabË +()); + +3189 +$þassName + = +$jošedTabËObjeùBužd” +-> + `g‘ObjeùCÏs¢ame +(); + +3191 +$v¬Name + = +$this +-> + `g‘PKRefFKV¬Name +( +$»fFK +); + +3193 +$süt + .= " + +3201 +public + +funùiÚ + +g‘ +".$this->g‘RefFKPhpNameAffix($»fFK, $¶u¿Èðçl£)."( +PrݖPDO + \ +$cÚ + = +nuÎ +) + +3204 +$süt + .= " + +3205 ià(\ +$this +-> +$v¬Name + ==ð +nuÎ + && !\$this-> + `isNew +()) {"; + +3207 +$lfm­ + = +$»fFK +-> + `g‘LoÿlFÜeignM­pšg +(); + +3213 +$loÿlcÞs + = +$»fFK +-> + `g‘FÜeignCÞumns +(); + +3218 +$·¿ms + = + `¬¿y +(); + +3219 + `fܗch + ( +$tblFK +-> + `g‘Prim¬yKey +(è +as + +$cÞ +) { + +3220 +$loÿlCÞumn + = +$bË +-> + `g‘CÞumn +( +$lfm­ +[ +$cÞ +-> + `g‘Name +()]); + +3221 +$þo + = + `¡¹Þow” +( +$loÿlCÞumn +-> + `g‘Name +()); + +3222 +$·¿ms +[] = "\$this->$clo"; + +3225 +$süt + .= " + +3226 \ +$this +-> +$v¬Name + = ".$jošedTabËObjeùBužd”->g‘P“rCÏs¢ame().":: + `»Œ›veByPK +(".im¶ode(", ", $·¿ms).", \ +$cÚ +); + +3229  \ +$this +-> +$v¬Name +; + +3232 + } +} + +3240 +´Ùeùed + +funùiÚ + + $addPKRefFKS‘ +(& +$süt +, +FÜeignKey + +$»fFK +) + +3242 +$tblFK + = +$»fFK +-> + `g‘TabË +(); + +3244 +$jošedTabËObjeùBužd” + = +$this +-> + `g‘NewObjeùBužd” +( +$»fFK +-> + `g‘TabË +()); + +3245 +$þassName + = +$jošedTabËObjeùBužd” +-> + `g‘ObjeùCÏs¢ame +(); + +3247 +$v¬Name + = +$this +-> + `g‘PKRefFKV¬Name +( +$»fFK +); + +3249 +$süt + .= " + +3257 +public + +funùiÚ + +£t +".$this->g‘RefFKPhpNameAffix($»fFK, $¶u¿Èðçl£)."( +$þassName + \ +$v +) + +3259 \ +$this +-> +$v¬Name + = \ +$v +; + +3262 ià(\ +$v +-> +g‘ +".$this->g‘FKPhpNameAffix($»fFK, $¶u¿Èðçl£)."(è==ð +nuÎ +) { + +3263 \ +$v +-> +£t +".$this->g‘FKPhpNameAffix($»fFK, $¶u¿Èðçl£)."(\ +$this +); + +3266  \ +$this +; + +3269 + } +} + +3281 +´Ùeùed + +funùiÚ + + $addDoSave +(& +$süt +) + +3283 +$bË + = +$this +-> + `g‘TabË +(); + +3285 +$»lßdOnUpd©e + = +$bË +-> + `isR–ßdOnUpd©e +(); + +3286 +$»lßdOnIn£¹ + = +$bË +-> + `isR–ßdOnIn£¹ +(); + +3288 +$süt + .= " + +3305 +´Ùeùed + +funùiÚ + + `doSave +( +PrݖPDO + \ +$cÚ +".($»lßdOnUpd©|| $»lßdOnIn£¹ ? ", \ +$skR–ßd + = +çl£ +" : "").") + +3307 \ +$afãùedRows + = 0; + +3308 ià(!\ +$this +-> +®»adyInSave +) { + +3309 \ +$this +-> +®»adyInSave + = +Œue +; + +3311 ià( +$»lßdOnIn£¹ + || +$»lßdOnUpd©e +) { + +3312 +$süt + .= " + +3313 \ +$»lßdObjeù + = +çl£ +; + +3317 ià( + `couÁ +( +$bË +-> + `g‘FÜeignKeys +())) { + +3319 +$süt + .= " + +3326 + `fܗch + ( +$bË +-> + `g‘FÜeignKeys +(è +as + +$fk +) + +3328 +$aV¬Name + = +$this +-> + `g‘FKV¬Name +( +$fk +); + +3329 +$süt + .= " + +3330 ià(\ +$this +-> +$aV¬Name + !=ð +nuÎ +) { + +3331 ià(\ +$this +->".$aV¬Name."-> + `isModif›d +(è|| \$this->".$aV¬Name."-> + `isNew +()) { + +3332 \ +$afãùedRows + +ð\ +$this +->".$aV¬Name."-> + `§ve +(\ +$cÚ +); + +3334 \ +$this +-> +£t +".$this->g‘FKPhpNameAffix($fk, $¶u¿Èðçl£)."(\$this-> +$aV¬Name +); + +3340 ià( +$bË +-> + `hasAutoInüem’tPrim¬yKey +() ) { + +3341 +$süt + .= " + +3342 ià(\ +$this +-> + `isNew +() ) { + +3343 \ +$this +-> +modif›dCÞumns +[] = " . $this->getColumnConstant($table->getAutoIncrementPrimaryKey() ) . "; + +3347 +$süt + .= " + +3350 ià(\ +$this +-> + `isModif›d +()"; + +3352 +$süt + .= ") { + +3353 ià(\ +$this +-> + `isNew +()) { + +3354 \ +$pk + = ".$this->g‘P“rCÏs¢ame().":: + `doIn£¹ +(\ +$this +, \ +$cÚ +);"; + +3355 ià( +$»lßdOnIn£¹ +) { + +3356 +$süt + .= " + +3357 ià(!\ +$skR–ßd +) { + +3358 \ +$»lßdObjeù + = +Œue +; + +3361 +$süt + .= " + +3362 \ +$afãùedRows + += 1; + +3366 ià( +$bË +-> + `g‘IdM‘hod +(è!ð +IDM‘hod +:: +NO_ID_METHOD +) { + +3368 ià( + `couÁ +( +$pks + = +$bË +-> + `g‘Prim¬yKey +())) { + +3369 + `fܗch + ( +$pks + +as + +$pk +) { + +3370 ià( +$pk +-> + `isAutoInüem’t +()) { + +3371 +$süt + .= " + +3372 \ +$this +-> +£t +".$pk->g‘PhpName()."(\ +$pk +); + +3379 +$süt + .= " + +3380 \ +$this +-> + `£tNew +( +çl£ +); + +3382 ià( +$»lßdOnUpd©e +) { + +3383 +$süt + .= " + +3384 ià(!\ +$skR–ßd +) { + +3385 \ +$»lßdObjeù + = +Œue +; + +3388 +$süt + .= " + +3389 \ +$afãùedRows + +ð".$this->g‘P“rCÏs¢ame().":: + `doUpd©e +(\ +$this +, \ +$cÚ +); + +3394 + `fܗch + ( +$bË +-> + `g‘CÞumns +(è +as + +$cÞ +) { + +3395 +$þo + = + `¡¹Þow” +( +$cÞ +-> + `g‘Name +()); + +3396 ià( +$cÞ +-> + `isLobTy³ +()) { + +3397 +$süt + .= " + +3399 ià(\ +$this +-> +$þo + !=ð +nuÎ + && + `is_»sourû +(\$this->$clo)) { + +3400 + `»wšd +(\ +$this +-> +$þo +); + +3406 +$süt + .= " + +3407 \ +$this +-> + `»£tModif›d +(); + +3411 + `fܗch + ( +$bË +-> + `g‘Re㼔s +(è +as + +$»fFK +) { + +3413 ià( +$»fFK +-> + `isLoÿlPrim¬yKey +()) { + +3414 +$v¬Name + = +$this +-> + `g‘PKRefFKV¬Name +( +$»fFK +); + +3415 +$süt + .= " + +3416 ià(\ +$this +-> +$v¬Name + !=ð +nuÎ +) { + +3417 ià(!\ +$this +->{ +$v¬Name +}-> + `isD–‘ed +()) { + +3418 \ +$afãùedRows + +ð\ +$this +->{ +$v¬Name +}-> + `§ve +(\ +$cÚ +); + +3423 +$cÞlName + = +$this +-> + `g‘RefFKCÞlV¬Name +( +$»fFK +); + +3424 +$süt + .= " + +3425 ià(\ +$this +-> +$cÞlName + !=ð +nuÎ +) { + +3426 + `fܗch + (\ +$this +-> +$cÞlName + +as + \ +$»ã¼”FK +) { + +3427 ià(!\ +$»ã¼”FK +-> + `isD–‘ed +()) { + +3428 \ +$afãùedRows + +ð\ +$»ã¼”FK +-> + `§ve +(\ +$cÚ +); + +3436 +$süt + .= " + +3437 \ +$this +-> +®»adyInSave + = +çl£ +; + +3439 ià( +$»lßdOnIn£¹ + || +$»lßdOnUpd©e +) { + +3440 +$süt + .= " + +3441 ià(\ +$»lßdObjeù +) { + +3442 \ +$this +-> + `»lßd +(\ +$cÚ +); + +3446 +$süt + .= " + +3448  \ +$afãùedRows +; + +3449 + } +} + +3458 +´Ùeùed + +funùiÚ + + $addA̗dyInSaveA‰ribu‹ +(& +$süt +) + +3460 +$süt + .= " + +3466 +´Ùeùed + \ +$®»adyInSave + = +çl£ +; + +3468 + } +} + +3474 +´Ùeùed + +funùiÚ + + $addSave +(& +$süt +) + +3476 +$this +-> + `addSaveComm’t +( +$süt +); + +3477 +$this +-> + `addSaveO³n +( +$süt +); + +3478 +$this +-> + `addSaveBody +( +$süt +); + +3479 +$this +-> + `addSaveClo£ +( +$süt +); + +3480 + } +} + +3487 +´Ùeùed + +funùiÚ + + $addSaveComm’t +(& +$süt +) { + +3488 +$bË + = +$this +-> + `g‘TabË +(); + +3489 +$»lßdOnUpd©e + = +$bË +-> + `isR–ßdOnUpd©e +(); + +3490 +$»lßdOnIn£¹ + = +$bË +-> + `isR–ßdOnIn£¹ +(); + +3492 +$süt + .= " + +3526 + } +} + +3533 +´Ùeùed + +funùiÚ + + $addSaveO³n +(& +$süt +) { + +3534 +$bË + = +$this +-> + `g‘TabË +(); + +3535 +$»lßdOnUpd©e + = +$bË +-> + `isR–ßdOnUpd©e +(); + +3536 +$»lßdOnIn£¹ + = +$bË +-> + `isR–ßdOnIn£¹ +(); + +3537 +$süt + .= " + +3538 +public + +funùiÚ + + `§ve +( +PrݖPDO + \ +$cÚ + = +nuÎ +".($»lßdOnUpd©|| $»lßdOnIn£¹ ? ", \ +$skR–ßd + = +çl£ +" : "").") + +3547 +´Ùeùed + +funùiÚ + + `addSaveBody +(& +$süt +) { + +3548 +$bË + = +$this +-> + `g‘TabË +(); + +3549 +$»lßdOnUpd©e + = +$bË +-> + `isR–ßdOnUpd©e +(); + +3550 +$»lßdOnIn£¹ + = +$bË +-> + `isR–ßdOnIn£¹ +(); + +3552 +$süt + .= " + +3553 ià(\ +$this +-> + `isD–‘ed +()) { + +3554 +throw + +Ãw + + `PrݖExû±iÚ +(\"You cannot save‡n objecthat has been deleted.\"); + +3557 ià(\ +$cÚ + ==ð +nuÎ +) { + +3558 \ +$cÚ + = +Prݖ +:: + `g‘CÚÃùiÚ +(".$this->g‘P“rCÏs¢ame().":: +DATABASE_NAME +, Prݖ:: +CONNECTION_WRITE +); + +3561 \ +$cÚ +-> + `begšT¿n§ùiÚ +(); + +3562 \ +$isIn£¹ + = \ +$this +-> + `isNew +(); + +3563 +Œy + {"; + +3565 if( +$this +-> + `g‘G’”©ÜCÚfig +()-> + `g‘BuždPrݔty +('addHooks')) { + +3567 +$süt + .= " + +3568 \ +$»t + = \ +$this +-> + `´eSave +(\ +$cÚ +);"; + +3569 +$this +-> + `­¶yBehaviÜModif›r +('´eSave', +$süt +, " "); + +3570 +$süt + .= " + +3571 ià(\ +$isIn£¹ +) { + +3572 \ +$»t + = \$»ˆ&& \ +$this +-> + `´eIn£¹ +(\ +$cÚ +);"; + +3573 +$this +-> + `­¶yBehaviÜModif›r +('´eIn£¹', +$süt +, " "); + +3574 +$süt + .= " + +3576 \ +$»t + = \$»ˆ&& \ +$this +-> + `´eUpd©e +(\ +$cÚ +);"; + +3577 +$this +-> + `­¶yBehaviÜModif›r +('´eUpd©e', +$süt +, " "); + +3578 +$süt + .= " + +3580 ià(\ +$»t +) { + +3581 \ +$afãùedRows + = \ +$this +-> + `doSave +(\ +$cÚ +".($»lßdOnUpd©|| $»lßdOnIn£¹ ? ", \ +$skR–ßd +" : "")."); + +3582 ià(\ +$isIn£¹ +) { + +3583 \ +$this +-> + `po¡In£¹ +(\ +$cÚ +);"; + +3584 +$this +-> + `­¶yBehaviÜModif›r +('po¡In£¹', +$süt +, " "); + +3585 +$süt + .= " + +3587 \ +$this +-> + `po¡Upd©e +(\ +$cÚ +);"; + +3588 +$this +-> + `­¶yBehaviÜModif›r +('po¡Upd©e', +$süt +, " "); + +3589 +$süt + .= " + +3591 \ +$this +-> + `po¡Save +(\ +$cÚ +);"; + +3592 +$this +-> + `­¶yBehaviÜModif›r +('po¡Save', +$süt +, " "); + +3593 +$süt + .= " + +3594 ".$this->g‘P“rCÏs¢ame().":: + `addIn¡ªûToPoÞ +(\ +$this +); + +3596 \ +$afãùedRows + = 0; + +3598 \ +$cÚ +-> + `comm™ +(); + +3599  \ +$afãùedRows +;"; + +3602 +$this +-> + `­¶yBehaviÜModif›r +('´eSave', +$süt +, " "); + +3603 ià( +$this +-> + `hasBehaviÜModif›r +('preUpdate')) + +3605 +$süt + .= " + +3606 if(!\ +$isIn£¹ +) {"; + +3607 +$this +-> + `­¶yBehaviÜModif›r +('´eUpd©e', +$süt +, " "); + +3608 +$süt + .= " + +3611 ià( +$this +-> + `hasBehaviÜModif›r +('preInsert')) + +3613 +$süt + .= " + +3614 if(\ +$isIn£¹ +) {"; + +3615 +$this +-> + `­¶yBehaviÜModif›r +('´eIn£¹', +$süt +, " "); + +3616 +$süt + .= " + +3619 +$süt + .= " + +3620 \ +$afãùedRows + = \ +$this +-> + `doSave +(\ +$cÚ +".($»lßdOnUpd©|| $»lßdOnIn£¹ ? ", \ +$skR–ßd +" : "").");"; + +3621 +$this +-> + `­¶yBehaviÜModif›r +('po¡Save', +$süt +, " "); + +3622 ià( +$this +-> + `hasBehaviÜModif›r +('postUpdate')) + +3624 +$süt + .= " + +3625 if(!\ +$isIn£¹ +) {"; + +3626 +$this +-> + `­¶yBehaviÜModif›r +('po¡Upd©e', +$süt +, " "); + +3627 +$süt + .= " + +3630 ià( +$this +-> + `hasBehaviÜModif›r +('postInsert')) + +3632 +$süt + .= " + +3633 if(\ +$isIn£¹ +) {"; + +3634 +$this +-> + `­¶yBehaviÜModif›r +('po¡In£¹', +$süt +, " "); + +3635 +$süt + .= " + +3638 +$süt + .= " + +3639 \ +$cÚ +-> + `comm™ +(); + +3640 ".$this->g‘P“rCÏs¢ame().":: + `addIn¡ªûToPoÞ +(\ +$this +); + +3641  \ +$afãùedRows +;"; + +3644 +$süt + .= " + +3645 } + `ÿtch + ( +PrݖExû±iÚ + \ +$e +) { + +3646 \ +$cÚ +-> + `rÞlBack +(); + +3647 +throw + \ +$e +; + +3656 +´Ùeùed + +funùiÚ + + `addSaveClo£ +(& +$süt +) { + +3657 +$süt + .= " + +3660 + } +} + +3666 +´Ùeùed + +funùiÚ + + $addA̗dyInV®id©iÚA‰ribu‹ +(& +$süt +) + +3668 +$süt + .= " + +3674 +´Ùeùed + \ +$®»adyInV®id©iÚ + = +çl£ +; + +3676 + } +} + +3682 +´Ùeùed + +funùiÚ + + $addV®id©e +(& +$süt +) + +3684 +$süt + .= " + +3696 +public + +funùiÚ + + `v®id©e +(\ +$cÞumns + = +nuÎ +) + +3698 \ +$»s + = \ +$this +-> + `doV®id©e +(\ +$cÞumns +); + +3699 ià(\ +$»s + ==ð +Œue +) { + +3700 \ +$this +-> +v®id©iÚFažu»s + = + `¬¿y +(); + +3701  +Œue +; + +3703 \ +$this +-> +v®id©iÚFažu»s + = \ +$»s +; + +3704  +çl£ +; + +3708 + } +} + +3714 +´Ùeùed + +funùiÚ + + $addDoV®id©e +(& +$süt +) + +3716 +$bË + = +$this +-> + `g‘TabË +(); + +3718 +$süt + .= " + +3729 +´Ùeùed + +funùiÚ + + `doV®id©e +(\ +$cÞumns + = +nuÎ +) + +3731 ià(!\ +$this +-> +®»adyInV®id©iÚ +) { + +3732 \ +$this +-> +®»adyInV®id©iÚ + = +Œue +; + +3733 \ +$»tv® + = +nuÎ +; + +3735 \ +$çžu»M­ + = + `¬¿y +(); + +3737 ià( + `couÁ +( +$bË +-> + `g‘FÜeignKeys +()) != 0) { + +3738 +$süt + .= " + +3745 + `fܗch + ( +$bË +-> + `g‘FÜeignKeys +(è +as + +$fk +) { + +3746 +$aV¬Name + = +$this +-> + `g‘FKV¬Name +( +$fk +); + +3747 +$süt + .= " + +3748 ià(\ +$this +->".$aV¬Name." !=ð +nuÎ +) { + +3749 ià(!\ +$this +->".$aV¬Name."-> + `v®id©e +(\ +$cÞumns +)) { + +3750 \ +$çžu»M­ + = + `¬¿y_m”ge +(\$çžu»M­, \ +$this +->".$aV¬Name."-> + `g‘V®id©iÚFažu»s +()); + +3757 +$süt + .= " + +3759 ià((\ +$»tv® + = ".$this->g‘P“rCÏs¢ame().":: + `doV®id©e +(\ +$this +, \ +$cÞumns +)è!=ð +Œue +) { + +3760 \ +$çžu»M­ + = + `¬¿y_m”ge +(\$çžu»M­, \ +$»tv® +); + +3765 + `fܗch + ( +$bË +-> + `g‘Re㼔s +(è +as + +$»fFK +) { + +3766 ià( +$»fFK +-> + `isLoÿlPrim¬yKey +()) { + +3767 +$v¬Name + = +$this +-> + `g‘PKRefFKV¬Name +( +$»fFK +); + +3768 +$süt + .= " + +3769 ià(\ +$this +-> +$v¬Name + !=ð +nuÎ +) { + +3770 ià(!\ +$this +->".$v¬Name."-> + `v®id©e +(\ +$cÞumns +)) { + +3771 \ +$çžu»M­ + = + `¬¿y_m”ge +(\$çžu»M­, \ +$this +->".$v¬Name."-> + `g‘V®id©iÚFažu»s +()); + +3776 +$cÞlName + = +$this +-> + `g‘RefFKCÞlV¬Name +( +$»fFK +); + +3777 +$süt + .= " + +3778 ià(\ +$this +-> +$cÞlName + !=ð +nuÎ +) { + +3779 + `fܗch + (\ +$this +-> +$cÞlName + +as + \ +$»ã¼”FK +) { + +3780 ià(!\ +$»ã¼”FK +-> + `v®id©e +(\ +$cÞumns +)) { + +3781 \ +$çžu»M­ + = + `¬¿y_m”ge +(\$çžu»M­, \ +$»ã¼”FK +-> + `g‘V®id©iÚFažu»s +()); + +3789 +$süt + .= " + +3791 \ +$this +-> +®»adyInV®id©iÚ + = +çl£ +; + +3794  (! + `em±y +(\ +$çžu»M­ +è? \$çžu»M­ : +Œue +); + +3797 + } +} + +3803 +´Ùeùed + +funùiÚ + + $addEnsu»CÚsi¡’cy +(& +$süt +) + +3805 +$bË + = +$this +-> + `g‘TabË +(); + +3807 +$süt + .= " + +3821 +public + +funùiÚ + + `’su»CÚsi¡’cy +() + +3824 + `fܗch + ( +$bË +-> + `g‘CÞumns +(è +as + +$cÞ +) { + +3826 +$þo += + `¡¹Þow” +( +$cÞ +-> + `g‘Name +()); + +3828 ià( +$cÞ +-> + `isFÜeignKey +()) { + +3829 + `fܗch + ( +$cÞ +-> + `g‘FÜeignKeys +(è +as + +$fk +) { + +3831 +$tblFK + = +$bË +-> + `g‘D©aba£ +()-> + `g‘TabË +( +$fk +-> + `g‘FÜeignTabËName +()); + +3832 +$cÞFK + = +$tblFK +-> + `g‘CÞumn +( +$fk +-> + `g‘M­³dFÜeignCÞumn +( +$cÞ +-> + `g‘Name +())); + +3833 +$v¬Name + = +$this +-> + `g‘FKV¬Name +( +$fk +); + +3835 +$süt + .= " + +3836 ià(\ +$this +->".$v¬Name." !=ð +nuÎ + && \$this-> +$þo + !=ð\$this->".$v¬Name."-> +g‘ +".$colFK->getPhpName()."()) { + +3837 \ +$this +-> +$v¬Name + = +nuÎ +; + +3844 +$süt + .= " + +3847 + } +} + +3853 +´Ùeùed + +funùiÚ + + $addCÝy +(& +$süt +) + +3855 +$this +-> + `addCÝyIÁo +( +$süt +); + +3857 +$bË + = +$this +-> + `g‘TabË +(); + +3859 +$süt + .= " + +3872 +public + +funùiÚ + + `cÝy +(\ +$d“pCÝy + = +çl£ +) + +3875 \ +$þazz + = + `g‘_þass +(\ +$this +); + +3877 \ +$this +-> + `cÝyIÁo +(\ +$cÝyObj +, \ +$d“pCÝy +); + +3878  \ +$cÝyObj +; + +3881 + } +} + +3888 +´Ùeùed + +funùiÚ + + $addCÝyIÁo +(& +$süt +) + +3890 +$bË + = +$this +-> + `g‘TabË +(); + +3892 +$süt + .= " + +3903 +public + +funùiÚ + + `cÝyIÁo +(\ +$cÝyObj +, \ +$d“pCÝy + = +çl£ +) + +3907 +$autoIncCÞs + = + `¬¿y +(); + +3908 + `fܗch + ( +$bË +-> + `g‘CÞumns +(è +as + +$cÞ +) { + +3910 ià( +$cÞ +-> + `isAutoInüem’t +()) { + +3911 +$autoIncCÞs +[] = +$cÞ +; + +3915 + `fܗch + ( +$bË +-> + `g‘CÞumns +(è +as + +$cÞ +) { + +3916 ià(! + `š_¬¿y +( +$cÞ +, +$autoIncCÞs +, +Œue +)) { + +3917 +$süt + .= " + +3918 \ +$cÝyObj +-> +£t +".$cÞ->g‘PhpName()."(\ +$this +->".strtolower($col->getName())."); + +3925 ià( + `couÁ +( +$bË +-> + `g‘Re㼔s +()) > 0) { + +3926 +$süt + .= " + +3928 ià(\ +$d“pCÝy +) { + +3931 \ +$cÝyObj +-> + `£tNew +( +çl£ +); + +3933 + `fܗch + ( +$bË +-> + `g‘Re㼔s +(è +as + +$fk +) { + +3938 ià( +$fk +-> + `isLoÿlPrim¬yKey +()) { + +3940 +$afx + = +$this +-> + `g‘RefFKPhpNameAffix +( +$fk +, +$¶u¿l + = +çl£ +); + +3941 +$süt + .= " + +3942 \ +$»lObj + = \ +$this +-> + `g‘$afx +(); + +3943 ià(\ +$»lObj +) { + +3944 \ +$cÝyObj +-> + `£t$afx +(\ +$»lObj +-> + `cÝy +(\ +$d“pCÝy +)); + +3949 +$süt + .= " + +3950 + `fܗch + (\ +$this +-> +g‘ +".$this->g‘RefFKPhpNameAffix($fk,rue)."(è +as + \ +$»lObj +) { + +3951 ià(\ +$»lObj + !=ð\ +$this +) { + +3952 \ +$cÝyObj +-> +add +".$this->g‘RefFKPhpNameAffix($fk)."(\ +$»lObj +-> + `cÝy +(\ +$d“pCÝy +)); + +3960 +$süt + .= " + +3965 +$süt + .= " + +3967 \ +$cÝyObj +-> + `£tNew +( +Œue +); + +3972 + `fܗch + ( +$autoIncCÞs + +as + +$cÞ +) { + +3973 +$cÞdefv® + = +$cÞ +-> + `g‘PhpDeçuÉV®ue +(); + +3974 +$cÞdefv® + = + `v¬_expÜt +($cÞdefv®, +Œue +); + +3975 +$süt + .= " + +3976 \ +$cÝyObj +-> +£t +".$cÞ->g‘PhpName(è."( +$cÞdefv® +); + +3979 +$süt + .= " + +3982 + } +} + +3990 +´Ùeùed + +funùiÚ + + $addCˬAÎReã»nûs +(& +$süt +) + +3992 +$bË + = +$this +-> + `g‘TabË +(); + +3993 +$süt + .= " + +4003 +public + +funùiÚ + + `þ—rAÎReã»nûs +(\ +$d“p + = +çl£ +) + +4005 ià(\ +$d“p +) {"; + +4006 +$v¬s + = + `¬¿y +(); + +4007 + `fܗch + ( +$this +-> + `g‘TabË +()-> + `g‘Re㼔s +(è +as + +$»fFK +) { + +4008 ià( +$»fFK +-> + `isLoÿlPrim¬yKey +()) { + +4009 +$v¬Name + = +$this +-> + `g‘PKRefFKV¬Name +( +$»fFK +); + +4010 +$v¬s +[] = +$v¬Name +; + +4011 +$süt + .= " + +4012 ià(\ +$this +-> +$v¬Name +) { + +4013 \ +$this +->{ +$v¬Name +}-> + `þ—rAÎReã»nûs +(\ +$d“p +); + +4016 +$v¬Name + = +$this +-> + `g‘RefFKCÞlV¬Name +( +$»fFK +); + +4017 +$v¬s +[] = +$v¬Name +; + +4018 +$süt + .= " + +4019 ià(\ +$this +-> +$v¬Name +) { + +4020 + `fܗch + (( +¬¿y +è\ +$this +-> +$v¬Name + +as + \ +$o +) { + +4021 \ +$o +-> + `þ—rAÎReã»nûs +(\ +$d“p +); + +4027 +$süt + .= " + +4031 + `fܗch + ( +$v¬s + +as + +$v¬Name +) { + +4032 +$süt + .= " + +4033 \ +$this +-> +$v¬Name + = +nuÎ +;"; + +4036 + `fܗch + ( +$bË +-> + `g‘FÜeignKeys +(è +as + +$fk +) { + +4037 +$þassName + = +$this +-> + `g‘FÜeignTabË +( +$fk +)-> + `g‘PhpName +(); + +4038 +$v¬Name + = +$this +-> + `g‘FKV¬Name +( +$fk +); + +4039 +$süt + .= " + +4040 \ +$this +-> +$v¬Name + = +nuÎ +;"; + +4043 +$süt + .= " + +4046 + } +} + +4052 +´Ùeùed + +funùiÚ + + $addPrim¬ySŒšg +(& +$süt +) + +4054 + `fܗch + ( +$this +-> + `g‘TabË +()-> + `g‘CÞumns +(è +as + +$cÞumn +) { + +4055 ià( +$cÞumn +-> + `isPrim¬ySŒšg +()) { + +4056 +$süt + .= " + +4062 +public + +funùiÚ + + `__toSŒšg +() + +4064  ( +¡ršg +è\ +$this +-> +g‘ +{ +$cÞumn +-> + `g‘PhpName +()}(); + +4070 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5PeerBuilder.php + +1 + `g‘TabË +(); + +51 +$cÞCÚ¡ªts + = + `¬¿y +(); + +53 + `fܗch + ( +$bË +-> + `g‘CÞumns +(è +as + +$cÞ +) { + +54 +$cÞCÚ¡ªts +[] = +$this +-> + `g‘CÞumnName +( +$cÞ +); + +57 +$»£rvedCÚ¡ªts + = + `¬¿y_m­ +('¡¹ouµ”', +CÏssToÞs +:: + `g‘PhpRe£rvedWÜds +()); + +59 +$š‹r£ù + = + `¬¿y_š‹r£ù +( +$»£rvedCÚ¡ªts +, +$cÞCÚ¡ªts +); + +60 ià(! + `em±y +( +$š‹r£ù +)) { + +61 +throw + +Ãw + + `EngšeExû±iÚ +("Oà o¸mܐoàyou¸cÞumÀÇme fÜ [" . +$bË +-> + `g‘Name +(è. "]abË cÚæiù w™h‡ PHP„e£rved wÜd (" . + `im¶ode +(", ", +$š‹r£ù +) . ")"); + +69 +public + +funùiÚ + + $g‘UÅ»fixedCÏs¢ame +() + +71  +$this +-> + `g‘BuždPrݔty +('ba£P»fix'è. $this-> + `g‘StubP“rBužd” +()-> + `g‘UÅ»fixedCÏs¢ame +(); + +72 + } +} + +78 +public + +funùiÚ + + $g‘Package +() + +80  +·»Á +:: + `g‘Package +() . ".om"; + +81 + } +} + +87 +´Ùeùed + +funùiÚ + + $addInþudes +(& +$süt +) + +89 + } +} + +95 +´Ùeùed + +funùiÚ + + $addCÏssO³n +(& +$süt +) { + +97 +$bËName + = +$this +-> + `g‘TabË +()-> + `g‘Name +(); + +98 +$bËDesc + = +$this +-> + `g‘TabË +()-> + `g‘DesütiÚ +(); + +100 +$süt + .= " + +123 +ab¡¿ù + +þass + ".$this->getClassname(). $extendingPeerClass . " { + +133 +´Ùeùed + +funùiÚ + + `addCÏssClo£ +(& +$süt +) + +136 +$this +-> + `­¶yBehaviÜModif›r +('¡©icM‘hods', +$süt +, " "); + +138 +$süt + .= " + +141 +$this +-> + `addSticTabËM­Regi¡¿tiÚ +( +$süt +); + +142 + } +} + +148 +´Ùeùed + +funùiÚ + + $addSticTabËM­Regi¡¿tiÚ +(& +$süt +) + +150 +$bË + = +$this +-> + `g‘TabË +(); + +152 +$süt + .= " + +155 ".$this->g‘CÏssName().":: + `buždTabËM­ +(); + +158 +$this +-> + `­¶yBehaviÜModif›r +('³”Fž‹r', +$süt +, ""); + +159 + } +} + +161 +public + +funùiÚ + + $g‘TabËM­CÏss +() + +163  +$this +-> + `g‘TabËPhpName +() . 'TableMap'; + +164 + } +} + +166 +public + +funùiÚ + + $g‘TabËPhpName +() + +168  ( +$this +-> + `g‘TabË +()-> + `isAb¡¿ù +(è? '' : $this-> + `g‘StubObjeùBužd” +()-> + `g‘CÏs¢ame +()); + +169 + } +} + +176 +´Ùeùed + +funùiÚ + + $addCÚ¡ªtsAndA‰ribu‹s +(& +$süt +) + +178 +$dbName + = +$this +-> + `g‘D©aba£ +()-> + `g‘Name +(); + +179 +$bËName + = +$this +-> + `´efixTabËName +($this-> + `g‘TabË +()-> + `g‘Name +()); + +180 +$bËPhpName + = +$this +-> + `g‘TabËPhpName +(); + +181 +$süt + .= " + +183 cÚ¡ +DATABASE_NAME + = '$dbName'; + +186 cÚ¡ +TABLE_NAME + = '$tableName'; + +189 cÚ¡ +OM_CLASS + = '$tablePhpName'; + +192 cÚ¡ +CLASS_DEFAULT + = '".$this->getStubObjectBuilder()->getClasspath()."'; + +195 cÚ¡ +TM_CLASS + = '".$this->getTableMapClass()."'; + +198 cÚ¡ +NUM_COLUMNS + = ".$this->getTable()->getNumColumns()."; + +201 cÚ¡ +NUM_LAZY_LOAD_COLUMNS + = ".$this->getTable()->getNumLazyLoadColumns()."; + +203 +$this +-> + `addCÞumnNameCÚ¡ªts +( +$süt +); + +204 +$this +-> + `addInh”™ªûCÞumnCÚ¡ªts +( +$süt +); + +206 +$süt + .= " + +213 +public + \ +$š¡ªûs + = + `¬¿y +(); + +218 +$this +-> + `­¶yBehaviÜModif›r +('¡©icA‰ribu‹s', +$süt +, " "); + +220 +$this +-> + `addF›ldNamesA‰ribu‹ +( +$süt +); + +221 +$this +-> + `addF›ldKeysA‰ribu‹ +( +$süt +); + +222 + } +} + +228 +´Ùeùed + +funùiÚ + + $addCÞumnNameCÚ¡ªts +(& +$süt +) + +230 + `fܗch + ( +$this +-> + `g‘TabË +()-> + `g‘CÞumns +(è +as + +$cÞ +) { + +231 +$süt + .= " + +236 + } +} + +238 +´Ùeùed + +funùiÚ + + $addF›ldNamesA‰ribu‹ +(& +$süt +) + +240 +$bË + = +$this +-> + `g‘TabË +(); + +242 +$bËCÞumns + = +$bË +-> + `g‘CÞumns +(); + +244 +$süt + .= " + +251 +´iv©e + \ +$f›ldNames + = + `¬¿y + ( + +252 +Ba£P“r +:: +TYPE_PHPNAME + => + `¬¿y + ("; + +253 + `fܗch + ( +$bËCÞumns + +as + +$cÞ +) { + +254 +$süt + .ð"'". +$cÞ +-> + `g‘PhpName +()."', "; + +256 +$süt + .= "), + +257 +Ba£P“r +:: +TYPE_STUDLYPHPNAME + => + `¬¿y + ("; + +258 + `fܗch + ( +$bËCÞumns + +as + +$cÞ +) { + +259 +$süt + .ð"'". +$cÞ +-> + `g‘StudlyPhpName +()."', "; + +261 +$süt + .= "), + +262 +Ba£P“r +:: +TYPE_COLNAME + => + `¬¿y + ("; + +263 + `fܗch + ( +$bËCÞumns + +as + +$cÞ +) { + +264 +$süt + .ð +$this +-> + `g‘CÞumnCÚ¡ªt +( +$cÞ +, 'self').", "; + +266 +$süt + .= "), + +267 +Ba£P“r +:: +TYPE_FIELDNAME + => + `¬¿y + ("; + +268 + `fܗch + ( +$bËCÞumns + +as + +$cÞ +) { + +269 +$süt + .ð"'". +$cÞ +-> + `g‘Name +()."', "; + +271 +$süt + .= "), + +272 +Ba£P“r +:: +TYPE_NUM + => + `¬¿y + ("; + +273 + `fܗch + ( +$bËCÞumns + +as + +$num + => +$cÞ +) { + +274 +$süt + .= "$num, "; + +276 +$süt + .= ") + +279 + } +} + +281 +´Ùeùed + +funùiÚ + + $addF›ldKeysA‰ribu‹ +(& +$süt +) + +283 +$bË + = +$this +-> + `g‘TabË +(); + +285 +$bËCÞumns + = +$bË +-> + `g‘CÞumns +(); + +287 +$süt + .= " + +294 +´iv©e + \ +$f›ldKeys + = + `¬¿y + ( + +295 +Ba£P“r +:: +TYPE_PHPNAME + => + `¬¿y + ("; + +296 + `fܗch + ( +$bËCÞumns + +as + +$num + => +$cÞ +) { + +297 +$süt + .ð"'". +$cÞ +-> + `g‘PhpName +()."' => $num, "; + +299 +$süt + .= "), + +300 +Ba£P“r +:: +TYPE_STUDLYPHPNAME + => + `¬¿y + ("; + +301 + `fܗch + ( +$bËCÞumns + +as + +$num + => +$cÞ +) { + +302 +$süt + .ð"'". +$cÞ +-> + `g‘StudlyPhpName +()."' => $num, "; + +304 +$süt + .= "), + +305 +Ba£P“r +:: +TYPE_COLNAME + => + `¬¿y + ("; + +306 + `fܗch + ( +$bËCÞumns + +as + +$num + => +$cÞ +) { + +307 +$süt + .ð +$this +-> + `g‘CÞumnCÚ¡ªt +( +$cÞ +, 'self')." => $num, "; + +309 +$süt + .= "), + +310 +Ba£P“r +:: +TYPE_FIELDNAME + => + `¬¿y + ("; + +311 + `fܗch + ( +$bËCÞumns + +as + +$num + => +$cÞ +) { + +312 +$süt + .ð"'". +$cÞ +-> + `g‘Name +()."' => $num, "; + +314 +$süt + .= "), + +315 +Ba£P“r +:: +TYPE_NUM + => + `¬¿y + ("; + +316 + `fܗch + ( +$bËCÞumns + +as + +$num + => +$cÞ +) { + +317 +$süt + .= "$num, "; + +319 +$süt + .= ") + +322 + } +} + +325 +´Ùeùed + +funùiÚ + + $addG‘F›ldNames +(& +$süt +) + +327 +$süt + .= " + +337  +public + +funùiÚ + + `g‘F›ldNames +(\ +$ty³ + = +Ba£P“r +:: +TYPE_PHPNAME +) + +339 ià(! + `¬¿y_key_exi¡s +(\ +$ty³ +, +£lf +::\ +$f›ldNames +)) { + +340 +throw + +Ãw + + `PrݖExû±iÚ +('M‘hod g‘F›ldNames(èex³ù th·¿m‘” \$ty³ØbÚoàthþas cÚ¡ªt Ba£P“r::TYPE_PHPNAME, Ba£P“r::TYPE_STUDLYPHPNAME, Ba£P“r::TYPE_COLNAME, Ba£P“r::TYPE_FIELDNAME, Ba£P“r::TYPE_NUM. ' . \ +$ty³ + . ' was given.'); + +342  +£lf +::\ +$f›ldNames +[\ +$ty³ +]; + +346 + } +} + +348 +´Ùeùed + +funùiÚ + + $addT¿n¦©eF›ldName +(& +$süt +) + +350 +$süt + .= " + +361  +public + +funùiÚ + + `Œª¦©eF›ldName +(\ +$Çme +, \ +$äomTy³ +, \ +$toTy³ +) + +363 \ +$toNames + = +£lf +:: + `g‘F›ldNames +(\ +$toTy³ +); + +364 \ +$key + = + `is£t +( +£lf +::\ +$f›ldKeys +[\ +$äomTy³ +][\ +$Çme +]è? s–f::\$f›ldKeys[\$äomTy³][\$Çme] : +nuÎ +; + +365 ià(\ +$key + ==ð +nuÎ +) { + +366 +throw + +Ãw + + `PrݖExû±iÚ +(\"'\$name' could‚ot be found inhe field‚ames ofype '\$fromType'. These‡re: \" .…rint_r(self::\$fieldKeys[\$fromType],rue)); + +368  \ +$toNames +[\ +$key +]; + +371 + } +} + +377 +´Ùeùed + +funùiÚ + + $addBuždTabËM­ +(& +$süt +) + +379 +$süt + .= " + +383 +public +  +funùiÚ + + `buždTabËM­ +() + +385 \ +$dbM­ + = +Prݖ +:: + `g‘D©aba£M­ +(".$this->g‘CÏs¢ame().":: +DATABASE_NAME +); + +386 ià(!\ +$dbM­ +-> + `hasTabË +(".$this->g‘CÏs¢ame().":: +TABLE_NAME +)) + +388 \ +$dbM­ +-> + `addTabËObjeù +( +Ãw + ".$this->getTableMapClass()."()); + +392 + } +} + +398 +public + +funùiÚ + + $addInh”™ªûCÞumnCÚ¡ªts +(& +$süt +) + +400 ià( +$this +-> + `g‘TabË +()-> + `g‘Chžd»nCÞumn +()) { + +402 +$cÞ + = +$this +-> + `g‘TabË +()-> + `g‘Chžd»nCÞumn +(); + +403 +$cfc + = +$cÞ +-> + `g‘PhpName +(); + +405 ià( +$cÞ +-> + `isEnum”©edCÏs£s +()) { + +407 ià( +$cÞ +-> + `isPhpPrim™iveNum”icTy³ +()è +$quÙe + = ""; + +408 +$quÙe + = '"'; + +410 + `fܗch + ( +$cÞ +-> + `g‘Chžd»n +(è +as + +$chžd +) { + +411 +$chždBužd” + = +$this +-> + `g‘MuÉiEx‹ndObjeùBužd” +(); + +412 +$chždBužd” +-> + `£tChžd +( +$chžd +); + +414 +$süt + .= " + +416 cÚ¡ +CLASSKEY_ +".strtoupper($child->getKey())." = '" . $child->getKey() . "'; + +419 ià( + `¡¹ouµ” +( +$chžd +-> + `g‘CÏs¢ame +()è!ð¡¹ouµ”($chžd-> + `g‘Key +())) { + +420 +$süt + .= " + +422 cÚ¡ +CLASSKEY_ +".strtoupper($child->getClassname())." = '" . $child->getKey() . "'; + +426 +$süt + .= " + +428 cÚ¡ +CLASSNAME_ +".strtoupper($child->getKey())." = '". $childBuilder->getClasspath() . "'; + +434 + } +} + +440 +´Ùeùed + +funùiÚ + + $addAlŸs +(& +$süt +) + +442 +$süt + .= " + +455 +public +  +funùiÚ + + `®Ÿs +(\ +$®Ÿs +, \ +$cÞumn +) + +457  + `¡r_»¶aû +(".$this->g‘P“rCÏs¢ame().":: +TABLE_NAME +.'.', \ +$®Ÿs +.'.', \ +$cÞumn +); + +460 + } +} + +466 +´Ùeùed + +funùiÚ + + $addAddS–eùCÞumns +(& +$süt +) + +468 +$süt + .= " + +480 +public +  +funùiÚ + + `addS–eùCÞumns +( +Cr™”Ÿ + \ +$ü™”Ÿ +) + +482 + `fܗch + ( +$this +-> + `g‘TabË +()-> + `g‘CÞumns +(è +as + +$cÞ +) { + +483 ià(! +$cÞ +-> + `isLazyLßd +()) { + +484 +$süt + .= " + +485 \ +$ü™”Ÿ +-> + `addS–eùCÞumn +(".$this->getPeerClassname()."::".$this->getColumnName($col).");"; + +488 +$süt + .=" + +491 + } +} + +497 +´Ùeùed + +funùiÚ + + $addDoCouÁ +(& +$süt +) + +499 +$süt + .= " + +508 +public +  +funùiÚ + + `doCouÁ +( +Cr™”Ÿ + \ +$ü™”Ÿ +, \ +$di¡šù + = +çl£ +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +511 \ +$ü™”Ÿ + = +þÚe + \$criteria; + +516 \ +$ü™”Ÿ +-> + `£tPrim¬yTabËName +(".$this->g‘P“rCÏs¢ame().":: +TABLE_NAME +); + +518 ià(\ +$di¡šù + && ! + `š_¬¿y +( +Cr™”Ÿ +:: +DISTINCT +, \ +$ü™”Ÿ +-> + `g‘S–eùModif›rs +())) { + +519 \ +$ü™”Ÿ +-> + `£tDi¡šù +(); + +522 ià(!\ +$ü™”Ÿ +-> + `hasS–eùCÏu£ +()) { + +523 ".$this->g‘P“rCÏs¢ame().":: + `addS–eùCÞumns +(\ +$ü™”Ÿ +); + +526 \ +$ü™”Ÿ +-> + `þ—rOrd”ByCÞumns +(); + +527 \ +$ü™”Ÿ +-> + `£tDbName +( +£lf +:: +DATABASE_NAME +); + +529 ià(\ +$cÚ + ==ð +nuÎ +) { + +530 \ +$cÚ + = +Prݖ +:: + `g‘CÚÃùiÚ +(".$this->g‘P“rCÏs¢ame().":: +DATABASE_NAME +, Prݖ:: +CONNECTION_READ +); + +534 +$this +-> + `­¶yBehaviÜModif›r +('´eS–eù', +$süt +); + +536 +$süt + .= " + +538 \ +$¡mt + = ".$this->ba£P“rCÏs¢ame.":: + `doCouÁ +(\ +$ü™”Ÿ +, \ +$cÚ +); + +540 ià(\ +$row + = \ +$¡mt +-> + `ãtch +( +PDO +:: +FETCH_NUM +)) { + +541 \ +$couÁ + = (è\ +$row +[0]; + +543 \ +$couÁ + = 0; + +545 \ +$¡mt +-> + `þo£CursÜ +(); + +546  \ +$couÁ +; + +548 + } +} + +554 +´Ùeùed + +funùiÚ + + $addDoS–eùOà +(& +$süt +) + +556 +$süt + .= " + +566 +public +  +funùiÚ + + `doS–eùOà +( +Cr™”Ÿ + \ +$ü™”Ÿ +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +568 \ +$ü™cÝy + = +þÚe + \ +$ü™”Ÿ +; + +569 \ +$ü™cÝy +-> + `£tLim™ +(1); + +570 \ +$objeùs + = ".$this->g‘P“rCÏs¢ame().":: + `doS–eù +(\ +$ü™cÝy +, \ +$cÚ +); + +571 ià(\ +$objeùs +) { + +572  \ +$objeùs +[0]; + +574  +nuÎ +; + +576 + } +} + +582 +´Ùeùed + +funùiÚ + + $addDoS–eù +(& +$süt +) + +584 +$süt + .= " + +594 +public +  +funùiÚ + + `doS–eù +( +Cr™”Ÿ + \ +$ü™”Ÿ +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +596  ".$this->g‘P“rCÏs¢ame().":: + `pÝuϋObjeùs +(".$this->g‘P“rCÏs¢ame().":: + `doS–eùStmt +(\ +$ü™”Ÿ +, \ +$cÚ +)); + +598 + } +} + +604 +´Ùeùed + +funùiÚ + + $addDoS–eùStmt +(& +$süt +) + +607 +$süt + .= " + +621 +public +  +funùiÚ + + `doS–eùStmt +( +Cr™”Ÿ + \ +$ü™”Ÿ +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +623 ià(\ +$cÚ + ==ð +nuÎ +) { + +624 \ +$cÚ + = +Prݖ +:: + `g‘CÚÃùiÚ +(".$this->g‘P“rCÏs¢ame().":: +DATABASE_NAME +, Prݖ:: +CONNECTION_READ +); + +627 ià(!\ +$ü™”Ÿ +-> + `hasS–eùCÏu£ +()) { + +628 \ +$ü™”Ÿ + = +þÚe + \$criteria; + +629 ".$this->g‘P“rCÏs¢ame().":: + `addS–eùCÞumns +(\ +$ü™”Ÿ +); + +633 \ +$ü™”Ÿ +-> + `£tDbName +( +£lf +:: +DATABASE_NAME +);"; + +635 ià( +$this +-> + `hasBehaviÜModif›r +('preSelect')) + +637 +$this +-> + `­¶yBehaviÜModif›r +('´eS–eù', +$süt +); + +639 +$süt + .= " + +642  ".$this->ba£P“rCÏs¢ame.":: + `doS–eù +(\ +$ü™”Ÿ +, \ +$cÚ +); + +644 + } +} + +651 +´Ùeùed + +funùiÚ + + $g‘In¡ªûPoÞKeySn³t +( +$pkphp +) + +653 +$pkphp + = ( +¬¿y +) $pkphp; + +654 +$süt + = ""; + +655 ià( + `couÁ +( +$pkphp +) > 1) { + +656 +$süt + .= "serialize(array("; + +657 +$i + = 0; + +658 + `fܗch + ( +$pkphp + +as + +$pkv¬ +) { + +659 +$süt + .ð( +$i +++ ? ', ' : '') . "(string) $pkvar"; + +661 +$süt + .= "))"; + +663 +$süt + .ð"(¡ršgè" . +$pkphp +[0]; + +665  +$süt +; + +666 + } +} + +672 +´Ùeùed + +funùiÚ + + $addAddIn¡ªûToPoÞ +(& +$süt +) + +674 +$bË + = +$this +-> + `g‘TabË +(); + +675 +$süt + .= " + +688 +public +  +funùiÚ + + `addIn¡ªûToPoÞ +(".$this->g‘ObjeùCÏs¢ame()." \ +$obj +, \ +$key + = +nuÎ +) + +690 ià( +Prݖ +:: + `isIn¡ªûPoޚgEÇbËd +()) { + +691 ià(\ +$key + ==ð +nuÎ +) {"; + +693 +$pks + = +$this +-> + `g‘TabË +()-> + `g‘Prim¬yKey +(); + +695 +$php + = + `¬¿y +(); + +696 + `fܗch + ( +$pks + +as + +$pk +) { + +697 +$php +[] = '$obj->g‘' . +$pk +-> + `g‘PhpName +() . '()'; + +699 +$süt + .= " + +700 \ +$key + = ".$this->getInstancePoolKeySnippet($php).";"; + +701 +$süt + .= " + +703 +£lf +::\ +$š¡ªûs +[\ +$key +] = \ +$obj +; + +707 + } +} + +713 +´Ùeùed + +funùiÚ + + $addRemoveIn¡ªûFromPoÞ +(& +$süt +) + +715 +$bË + = +$this +-> + `g‘TabË +(); + +716 +$süt + .= " + +727 +public +  +funùiÚ + + `»moveIn¡ªûFromPoÞ +(\ +$v®ue +) + +729 +$süt + .= " + +730 ià( +Prݖ +:: + `isIn¡ªûPoޚgEÇbËd +(è&& \ +$v®ue + !=ð +nuÎ +) {"; + +731 +$pks + = +$bË +-> + `g‘Prim¬yKey +(); + +733 +$süt + .= " + +734 ià( + `is_objeù +(\ +$v®ue +è&& \$v®u +š¡ªûof + ".$this->getObjectClassname().") {"; + +736 +$php + = + `¬¿y +(); + +737 + `fܗch + ( +$pks + +as + +$pk +) { + +738 +$php +[] = '$v®ue->g‘' . +$pk +-> + `g‘PhpName +() . '()'; + +740 +$süt + .= " + +741 \ +$key + = ".$this->getInstancePoolKeySnippet($php).";"; + +743 +$süt + .= " + +744 } + `–£if + (".(couÁ($pksè> 1 ? " + `is_¬¿y +(\ +$v®ue +è&& + `couÁ +(\$v®ueè==ð" . couÁ($pksè: " + `is_sÿÏr +(\$value)").") { + +747 ià( + `couÁ +( +$pks +) > 1) { + +748 +$php + = + `¬¿y +(); + +749  +$i +=0; $˜< + `couÁ +( +$pks +); $i++) { + +750 +$php +[] = "\$value[$i]"; + +753 +$php + = '$value'; + +755 +$süt + .= " + +756 \ +$key + = ".$this->getInstancePoolKeySnippet($php).";"; + +757 +$süt + .= " + +759 \ +$e + = +Ãw + + `PrݖExû±iÚ +(\"Inv®id v®u·s£dØ»moveIn¡ªûFromPoÞ(). Ex³ùed…rim¬y key o¸". +$this +-> + `g‘ObjeùCÏs¢ame +()." object; got \" . (is_object(\$value) ? get_class(\$value) . ' object.' : var_export(\$value,true))); + +760 +throw + \ +$e +; + +763 + `un£t +( +£lf +::\ +$š¡ªûs +[\ +$key +]); + +767 + } +} + +773 +´Ùeùed + +funùiÚ + + $addCˬIn¡ªûPoÞ +(& +$süt +) + +775 +$süt + .= " + +781 +public +  +funùiÚ + + `þ—rIn¡ªûPoÞ +() + +783 +£lf +::\ +$š¡ªûs + = + `¬¿y +(); + +786 + } +} + +792 +´Ùeùed + +funùiÚ + + $addCˬR–©edIn¡ªûPoÞ +(& +$süt +) + +794 +$bË + = +$this +-> + `g‘TabË +(); + +795 +$süt + .= " + +800 +public +  +funùiÚ + + `þ—rR–©edIn¡ªûPoÞ +() + +804 + `fܗch + ( +$bË +-> + `g‘Re㼔s +(è +as + +$fk +) { + +808 +$tblFK + = +$fk +-> + `g‘TabË +(); + +810 +$jošedTabËP“rBužd” + = +$this +-> + `g‘NewP“rBužd” +( +$tblFK +); + +811 +$tblFKPackage + = +$jošedTabËP“rBužd” +-> + `g‘StubP“rBužd” +()-> + `g‘Package +(); + +813 ià(! +$tblFK +-> + `isFÜReã»nûOÆy +()) { + +817 +$fkCÏssName + = +$jošedTabËP“rBužd” +-> + `g‘ObjeùCÏs¢ame +(); + +821 iàÐ( +$fk +-> + `g‘OnD–‘e +(è=ð +FÜeignKey +:: +CASCADE + || $fk->g‘OnD–‘e(è=ðFÜeignKey:: +SETNULL + ) + +822 && +$tblFK +-> + `g‘Name +(è!ð +$bË +->getName()) { + +823 +$süt + .= " + +825 ".$jošedTabËP“rBužd”->g‘P“rCÏs¢ame().":: + `þ—rIn¡ªûPoÞ +(); + +830 +$süt + .= " + +833 + } +} + +839 +´Ùeùed + +funùiÚ + + $addG‘In¡ªûFromPoÞ +(& +$süt +) + +841 +$süt + .= " + +852 +public +  +funùiÚ + + `g‘In¡ªûFromPoÞ +(\ +$key +) + +854 ià( +Prݖ +:: + `isIn¡ªûPoޚgEÇbËd +()) { + +855 ià( + `is£t +( +£lf +::\ +$š¡ªûs +[\ +$key +])) { + +856  +£lf +::\ +$š¡ªûs +[\ +$key +]; + +859  +nuÎ +; + +862 + } +} + +868 +´Ùeùed + +funùiÚ + + $addG‘Prim¬yKeyHash +(& +$süt +) + +870 +$süt + .= " + +881 +public +  +funùiÚ + + `g‘Prim¬yKeyHashFromRow +(\ +$row +, \ +$¡¬tcÞ + = 0) + +886 +$n + = 0; + +887 +$pk + = + `¬¿y +(); + +888 +$cÚd + = + `¬¿y +(); + +889 + `fܗch + ( +$this +-> + `g‘TabË +()-> + `g‘CÞumns +(è +as + +$cÞ +) { + +890 ià(! +$cÞ +-> + `isLazyLßd +()) { + +891 ià( +$cÞ +-> + `isPrim¬yKey +()) { + +892 +$·¹ + = +$n + ? "\$row[\$startcol + $n]" : "\$row[\$startcol]"; + +893 +$cÚd +[] = +$·¹ + . " ===‚ull"; + +894 +$pk +[] = +$·¹ +; + +896 +$n +++; + +900 +$süt + .= " + +903  +nuÎ +; + +908 + } +} + +914 +´Ùeùed + +funùiÚ + + $addPÝuϋObjeùs +(& +$süt +) + +916 +$bË + = +$this +-> + `g‘TabË +(); + +917 +$süt + .= " + +925 +public +  +funùiÚ + + `pÝuϋObjeùs +( +PDOS‹m’t + \ +$¡mt +) + +927 \ +$»suÉs + = + `¬¿y +(); + +929 ià(! +$bË +-> + `g‘Chžd»nCÞumn +()) { + +930 +$süt + .= " + +932 \ +$þs + = ".$this->g‘P“rCÏs¢ame().":: + `g‘OMCÏss +( +çl£ +);"; + +935 +$süt + .= " + +937 \ +$row + = \ +$¡mt +-> + `ãtch +( +PDO +:: +FETCH_NUM +)) { + +938 \ +$key + = ".$this->g‘P“rCÏs¢ame().":: + `g‘Prim¬yKeyHashFromRow +(\ +$row +, 0); + +939 ià( +nuÎ + !=ð(\ +$obj + = ".$this->g‘P“rCÏs¢ame().":: + `g‘In¡ªûFromPoÞ +(\ +$key +))) { + +943 \ +$»suÉs +[] = \ +$obj +; + +945 ià( +$bË +-> + `g‘Chžd»nCÞumn +()) { + +946 +$süt + .= " + +948 \ +$þs + = ".$this->g‘P“rCÏs¢ame().":: + `g‘OMCÏss +(\ +$row +, 0); + +949 \ +$þs + = + `sub¡r +('.'.\$þs, + `¡¼pos +('.'.\$cls, '.') + 1); + +951 \ +$obj +-> + `hyd¿‹ +(\ +$row +); + +952 \ +$»suÉs +[] = \ +$obj +; + +953 ".$this->g‘P“rCÏs¢ame().":: + `addIn¡ªûToPoÞ +(\ +$obj +, \ +$key +);"; + +955 +$süt + .= " + +957 \ +$obj +-> + `hyd¿‹ +(\ +$row +); + +958 \ +$»suÉs +[] = \ +$obj +; + +959 ".$this->g‘P“rCÏs¢ame().":: + `addIn¡ªûToPoÞ +(\ +$obj +, \ +$key +);"; + +961 +$süt + .= " + +964 \ +$¡mt +-> + `þo£CursÜ +(); + +965  \ +$»suÉs +; + +967 + } +} + +973 +´Ùeùed + +funùiÚ + + $addG‘OMCÏss_Inh”™ªû +(& +$süt +) + +975 +$cÞ + = +$this +-> + `g‘TabË +()-> + `g‘Chžd»nCÞumn +(); + +976 +$süt + .= " + +986 +public +  +funùiÚ + + `g‘OMCÏss +(\ +$row +, \ +$cÞnum +) + +988 +Œy + { + +990 ià( +$cÞ +-> + `isEnum”©edCÏs£s +()) { + +991 +$süt + .= " + +992 \ +$omCÏss + = +nuÎ +; + +993 \ +$þassKey + = \ +$row +[\ +$cÞnum + + " . ($col->getPosition() - 1) . "]; + +995 \ +$þassKey +) { + +997 + `fܗch + ( +$cÞ +-> + `g‘Chžd»n +(è +as + +$chžd +) { + +998 +$süt + .= " + +999  +£lf +:: +CLASSKEY_ +".strtoupper($child->getKey()).": + +1000 \ +$omCÏss + = +£lf +:: +CLASSNAME_ +".strtoupper($child->getKey())."; + +1004 +$süt + .= " + +1006 \ +$omCÏss + = +£lf +:: +CLASS_DEFAULT +; + +1008 +$süt + .= " + +1012 +$süt + .= " + +1013 \ +$omCÏss + = \ +$row +[\ +$cÞnum + + ".($col->getPosition()-1)."]; + +1014 \ +$omCÏss + = + `sub¡r +('.'.\$omCÏss, + `¡¼pos +('.'.\$omClass, '.') + 1); + +1017 +$süt + .= " + +1018 } + `ÿtch + ( +Exû±iÚ + \ +$e +) { + +1019 +throw + +Ãw + + `PrݖExû±iÚ +('UÇbˁØg‘ OM cÏss.', \ +$e +); + +1021  \ +$omCÏss +; + +1024 + } +} + +1030 +´Ùeùed + +funùiÚ + + $addG‘OMCÏss_Inh”™ªû_Ab¡¿ù +(& +$süt +) + +1032 +$süt + .= " + +1045 +ab¡¿ù + +public +  +funùiÚ + + `g‘OMCÏss +(); + +1047 + } +} + +1053 +´Ùeùed + +funùiÚ + + $addG‘OMCÏss_NoInh”™ªû +(& +$süt +) + +1055 +$süt + .= " + +1067 +public +  +funùiÚ + + `g‘OMCÏss +(\ +$w™hP»fix + = +Œue +) + +1069  \ +$w™hP»fix + ? ".$this->g‘P“rCÏs¢ame().":: +CLASS_DEFAULT + : ".$this->g‘P“rCÏs¢ame().":: +OM_CLASS +; + +1072 + } +} + +1078 +´Ùeùed + +funùiÚ + + $addG‘OMCÏss_NoInh”™ªû_Ab¡¿ù +(& +$süt +) + +1080 +$süt + .= " + +1087 +ab¡¿ù + +public +  +funùiÚ + + `g‘OMCÏss +(\ +$w™hP»fix + = +Œue +); + +1089 + } +} + +1095 +´Ùeùed + +funùiÚ + + $addDoIn£¹ +(& +$süt +) + +1097 +$bË + = +$this +-> + `g‘TabË +(); + +1098 +$süt + .= " + +1108 +public +  +funùiÚ + + `doIn£¹ +(\ +$v®ues +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +1110 ià(\ +$cÚ + ==ð +nuÎ +) { + +1111 \ +$cÚ + = +Prݖ +:: + `g‘CÚÃùiÚ +(".$this->g‘P“rCÏs¢ame().":: +DATABASE_NAME +, Prݖ:: +CONNECTION_WRITE +); + +1114 ià(\ +$v®ues + +š¡ªûof + +Cr™”Ÿ +) { + +1115 \ +$ü™”Ÿ + = +þÚe + \ +$v®ues +; + +1117 \ +$ü™”Ÿ + = \ +$v®ues +-> + `buždCr™”Ÿ +(); + +1121 + `fܗch + ( +$bË +-> + `g‘CÞumns +(è +as + +$cÞ +) { + +1122 +$cfc + = +$cÞ +-> + `g‘PhpName +(); + +1123 ià( +$cÞ +-> + `isPrim¬yKey +(è&& $cÞ-> + `isAutoInüem’t +(è&& +$bË +-> + `g‘IdM‘hod +(è!ð"nÚe" && !$bË-> + `isAÎowPkIn£¹ +()) { + +1124 +$süt + .= " + +1125 ià(\ +$ü™”Ÿ +-> + `cڏšsKey +(".$this->g‘CÞumnCÚ¡ªt($cÞ)."è&& \$ü™”Ÿ-> + `keyCڏšsV®ue +(" . $this->getColumnConstant($col) . ") ) { + +1126 +throw + +Ãw + + `PrݖExû±iÚ +('Cannot insert‡ value for‡uto-increment…rimary key ('.".$this->getColumnConstant($col).".')'); + +1129 ià(! +$this +-> + `g‘PÏtfÜm +()-> + `suµÜtsIn£¹NuÎPk +()) + +1131 +$süt + .= " + +1133 \ +$ü™”Ÿ +-> + `»move +(".$this->getColumnConstant($col)."); + +1136 } + `–£if + ( +$cÞ +-> + `isPrim¬yKey +(è&& $cÞ-> + `isAutoInüem’t +(è&& +$bË +-> + `g‘IdM‘hod +(è!ð"nÚe" && $bË-> + `isAÎowPkIn£¹ +(è&& ! +$this +-> + `g‘PÏtfÜm +()-> + `suµÜtsIn£¹NuÎPk +()) { + +1137 +$süt + .= " + +1139 ià(\ +$ü™”Ÿ +-> + `cڏšsKey +(".$this->g‘CÞumnCÚ¡ªt($cÞ)."è&& !\$ü™”Ÿ-> + `keyCڏšsV®ue +(" . $this->getColumnConstant($col) . ") ) { + +1140 \ +$ü™”Ÿ +-> + `»move +(".$this->getColumnConstant($col)."); + +1145 +$süt + .= " + +1148 \ +$ü™”Ÿ +-> + `£tDbName +( +£lf +:: +DATABASE_NAME +); + +1150 +Œy + { + +1153 \ +$cÚ +-> + `begšT¿n§ùiÚ +(); + +1154 \ +$pk + = ".$this->ba£P“rCÏs¢ame.":: + `doIn£¹ +(\ +$ü™”Ÿ +, \ +$cÚ +); + +1155 \ +$cÚ +-> + `comm™ +(); + +1156 } + `ÿtch +( +PrݖExû±iÚ + \ +$e +) { + +1157 \ +$cÚ +-> + `rÞlBack +(); + +1158 +throw + \ +$e +; + +1161  \ +$pk +; + +1164 + } +} + +1170 +´Ùeùed + +funùiÚ + + $addDoUpd©e +(& +$süt +) + +1172 +$bË + = +$this +-> + `g‘TabË +(); + +1173 +$süt + .= " + +1183 +public +  +funùiÚ + + `doUpd©e +(\ +$v®ues +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +1185 ià(\ +$cÚ + ==ð +nuÎ +) { + +1186 \ +$cÚ + = +Prݖ +:: + `g‘CÚÃùiÚ +(".$this->g‘P“rCÏs¢ame().":: +DATABASE_NAME +, Prݖ:: +CONNECTION_WRITE +); + +1189 \ +$£ËùCr™”Ÿ + = +Ãw + + `Cr™”Ÿ +( +£lf +:: +DATABASE_NAME +); + +1191 ià(\ +$v®ues + +š¡ªûof + +Cr™”Ÿ +) { + +1192 \ +$ü™”Ÿ + = +þÚe + \ +$v®ues +; + +1194 + `fܗch + ( +$bË +-> + `g‘CÞumns +(è +as + +$cÞ +) { + +1195 ià( +$cÞ +-> + `isPrim¬yKey +()) { + +1196 +$süt + .= " + +1197 \ +$com·risÚ + = \ +$ü™”Ÿ +-> + `g‘Com·risÚ +(".$this->getColumnConstant($col)."); + +1198 \ +$£ËùCr™”Ÿ +-> + `add +(".$this->g‘CÞumnCÚ¡ªt($cÞ).", \ +$ü™”Ÿ +-> + `»move +(".$this->g‘CÞumnCÚ¡ªt($cÞ)."), \ +$com·risÚ +); + +1203 +$süt + .= " + +1205 \ +$ü™”Ÿ + = \ +$v®ues +-> + `buždCr™”Ÿ +(); + +1206 \ +$£ËùCr™”Ÿ + = \ +$v®ues +-> + `buždPkeyCr™”Ÿ +(); + +1210 \ +$ü™”Ÿ +-> + `£tDbName +( +£lf +:: +DATABASE_NAME +); + +1212  { +$this +-> +ba£P“rCÏs¢ame +}:: + `doUpd©e +(\ +$£ËùCr™”Ÿ +, \ +$ü™”Ÿ +, \ +$cÚ +); + +1215 + } +} + +1221 +´Ùeùed + +funùiÚ + + $addDoD–‘eAÎ +(& +$süt +) + +1223 +$bË + = +$this +-> + `g‘TabË +(); + +1224 +$süt + .= " + +1230 +public +  +funùiÚ + + `doD–‘eAÎ +(\ +$cÚ + = +nuÎ +) + +1232 ià(\ +$cÚ + ==ð +nuÎ +) { + +1233 \ +$cÚ + = +Prݖ +:: + `g‘CÚÃùiÚ +(".$this->g‘P“rCÏs¢ame().":: +DATABASE_NAME +, Prݖ:: +CONNECTION_WRITE +); + +1235 \ +$afãùedRows + = 0; + +1236 +Œy + { + +1239 \ +$cÚ +-> + `begšT¿n§ùiÚ +(); + +1241 ià( +$this +-> + `isD–‘eCasÿdeEmuÏtiÚN“ded +()) { + +1242 +$süt + .="\$afãùedRow +ð". +$this +-> + `g‘P“rCÏs¢ame +()."::doOnDeleteCascade(new Criteria(".$this->getPeerClassname()."::DATABASE_NAME), \$con); + +1245 ià( +$this +-> + `isD–‘eS‘NuÎEmuÏtiÚN“ded +()) { + +1246 +$süt + .ð +$this +-> + `g‘P“rCÏs¢ame +() . "::doOnDeleteSetNull(new Criteria(".$this->getPeerClassname() . "::DATABASE_NAME), \$con); + +1249 +$süt + .ð"\$afãùedRow +ð{$this->ba£P“rCÏs¢ame}::doD–‘eAÎ(". +$this +-> + `g‘P“rCÏs¢ame +()."::TABLE_NAME, \$con); + +1253 ".$this->g‘P“rCÏs¢ame().":: + `þ—rIn¡ªûPoÞ +(); + +1254 ".$this->g‘P“rCÏs¢ame().":: + `þ—rR–©edIn¡ªûPoÞ +(); + +1255 \ +$cÚ +-> + `comm™ +(); + +1256  \ +$afãùedRows +; + +1257 } + `ÿtch + ( +PrݖExû±iÚ + \ +$e +) { + +1258 \ +$cÚ +-> + `rÞlBack +(); + +1259 +throw + \ +$e +; + +1263 + } +} + +1269 +´Ùeùed + +funùiÚ + + $addDoD–‘e +(& +$süt +) + +1271 +$bË + = +$this +-> + `g‘TabË +(); + +1272 +$emuϋCasÿde + = +$this +-> + `isD–‘eCasÿdeEmuÏtiÚN“ded +(è|| $this-> + `isD–‘eS‘NuÎEmuÏtiÚN“ded +(); + +1273 +$süt + .= " + +1285 +public +  +funùiÚ + + `doD–‘e +(\ +$v®ues +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +1287 ià(\ +$cÚ + ==ð +nuÎ +) { + +1288 \ +$cÚ + = +Prݖ +:: + `g‘CÚÃùiÚ +(".$this->g‘P“rCÏs¢ame().":: +DATABASE_NAME +, Prݖ:: +CONNECTION_WRITE +); + +1291 ià(\ +$v®ues + +š¡ªûof + +Cr™”Ÿ +) {"; + +1292 ià(! +$emuϋCasÿde +) { + +1293 +$süt + .= " + +1297 ".$this->g‘P“rCÏs¢ame().":: + `þ—rIn¡ªûPoÞ +();"; + +1299 +$süt + .= " + +1301 \ +$ü™”Ÿ + = +þÚe + \ +$v®ues +; + +1302 } + `–£if + (\ +$v®ues + +š¡ªûof + ".$this->getObjectClassname().") { + +1303 ià(! +$emuϋCasÿde +) { + +1304 +$süt + .= " + +1306 ".$this->g‘P“rCÏs¢ame().":: + `»moveIn¡ªûFromPoÞ +(\ +$v®ues +);"; + +1308 ià( + `couÁ +( +$bË +-> + `g‘Prim¬yKey +()) > 0) { + +1309 +$süt + .= " + +1311 \ +$ü™”Ÿ + = \ +$v®ues +-> + `buždPkeyCr™”Ÿ +();"; + +1313 +$süt + .= " + +1315 \ +$ü™”Ÿ + = \ +$v®ues +-> + `buždCr™”Ÿ +();"; + +1318 +$süt + .= " + +1320 +$süt + .= " + +1321 \ +$ü™”Ÿ + = +Ãw + + `Cr™”Ÿ +( +£lf +:: +DATABASE_NAME +);"; + +1323 ià( + `couÁ +( +$bË +-> + `g‘Prim¬yKey +()) === 1) { + +1324 +$pkey + = +$bË +-> + `g‘Prim¬yKey +(); + +1325 +$cÞ + = + `¬¿y_shiá +( +$pkey +); + +1326 +$süt + .= " + +1327 \ +$ü™”Ÿ +-> + `add +(".$this->g‘CÞumnCÚ¡ªt($cÞ).", ( +¬¿y +è\ +$v®ues +, +Cr™”Ÿ +:: +IN +);"; + +1328 ià(! +$emuϋCasÿde +) { + +1329 +$süt + .= " + +1331 + `fܗch + (( +¬¿y +è\ +$v®ues + +as + \ +$sšgËv® +) { + +1332 ".$this->g‘P“rCÏs¢ame().":: + `»moveIn¡ªûFromPoÞ +(\ +$sšgËv® +); + +1336 +$süt + .= " + +1339 ià( + `couÁ +(\ +$v®ues +è=ðcouÁ(\$v®ues, +COUNT_RECURSIVE +)) { + +1341 \ +$v®ues + = + `¬¿y +(\$values); + +1343 + `fܗch + (\ +$v®ues + +as + \ +$v®ue +) {"; + +1344 +$i +=0; + +1345 + `fܗch + ( +$bË +-> + `g‘Prim¬yKey +(è +as + +$cÞ +) { + +1346 ià( +$i + == 0) { + +1347 +$süt + .= " + +1348 \ +$ü™”iÚ + = \ +$ü™”Ÿ +-> + `g‘NewCr™”iÚ +(".$this->g‘CÞumnCÚ¡ªt($cÞ).", \ +$v®ue +[ +$i +]);"; + +1350 +$süt + .= " + +1351 \ +$ü™”iÚ +-> + `addAnd +(\ +$ü™”Ÿ +-> + `g‘NewCr™”iÚ +(".$this->g‘CÞumnCÚ¡ªt($cÞ).", \ +$v®ue +[ +$i +]));"; + +1353 +$i +++; + +1355 +$süt + .= " + +1356 \ +$ü™”Ÿ +-> + `addOr +(\ +$ü™”iÚ +);"; + +1357 ià(! +$emuϋCasÿde +) { + +1358 +$süt + .= " + +1360 ".$this->g‘P“rCÏs¢ame().":: + `»moveIn¡ªûFromPoÞ +(\ +$v®ue +);"; + +1362 +$süt + .= " + +1366 +$süt + .= " + +1370 \ +$ü™”Ÿ +-> + `£tDbName +( +£lf +:: +DATABASE_NAME +); + +1372 \ +$afãùedRows + = 0; + +1374 +Œy + { + +1377 \ +$cÚ +-> + `begšT¿n§ùiÚ +(); + +1380 ià( +$this +-> + `isD–‘eCasÿdeEmuÏtiÚN“ded +()) { + +1381 +$süt + .ð"\$afãùedRow +ð". +$this +-> + `g‘P“rCÏs¢ame +()."::doOnDeleteCascade(\$criteria, \$con); + +1384 ià( +$this +-> + `isD–‘eS‘NuÎEmuÏtiÚN“ded +()) { + +1385 +$süt + .ð +$this +-> + `g‘P“rCÏs¢ame +() . "::doOnDeleteSetNull(\$criteria, \$con); + +1389 ià( +$emuϋCasÿde +) { + +1390 +$süt + .= " + +1394 ià(\ +$v®ues + +š¡ªûof + +Cr™”Ÿ +) { + +1395 ".$this->g‘P“rCÏs¢ame().":: + `þ—rIn¡ªûPoÞ +(); + +1396 } + `–£if + (\ +$v®ues + +š¡ªûof + ".$this->getObjectClassname().") { + +1397 ".$this->g‘P“rCÏs¢ame().":: + `»moveIn¡ªûFromPoÞ +(\ +$v®ues +); + +1399 + `fܗch + (( +¬¿y +è\ +$v®ues + +as + \ +$sšgËv® +) { + +1400 ".$this->g‘P“rCÏs¢ame().":: + `»moveIn¡ªûFromPoÞ +(\ +$sšgËv® +); + +1406 +$süt + .= " + +1407 \ +$afãùedRows + +ð{ +$this +-> +ba£P“rCÏs¢ame +}:: + `doD–‘e +(\ +$ü™”Ÿ +, \ +$cÚ +); + +1408 ".$this->g‘P“rCÏs¢ame().":: + `þ—rR–©edIn¡ªûPoÞ +(); + +1409 \ +$cÚ +-> + `comm™ +(); + +1410  \ +$afãùedRows +; + +1411 } + `ÿtch + ( +PrݖExû±iÚ + \ +$e +) { + +1412 \ +$cÚ +-> + `rÞlBack +(); + +1413 +throw + \ +$e +; + +1417 + } +} + +1423 +´Ùeùed + +funùiÚ + + $addDoOnD–‘eCasÿde +(& +$süt +) + +1425 +$bË + = +$this +-> + `g‘TabË +(); + +1426 +$süt + .= " + +1440 +´Ùeùed +  +funùiÚ + + `doOnD–‘eCasÿde +( +Cr™”Ÿ + \ +$ü™”Ÿ +, +PrݖPDO + \ +$cÚ +) + +1443 \ +$afãùedRows + = 0; + +1446 \ +$objeùs + = ".$this->g‘P“rCÏs¢ame().":: + `doS–eù +(\ +$ü™”Ÿ +, \ +$cÚ +); + +1447 + `fܗch + (\ +$objeùs + +as + \ +$obj +) { + +1450 + `fܗch + ( +$bË +-> + `g‘Re㼔s +(è +as + +$fk +) { + +1454 +$tblFK + = +$fk +-> + `g‘TabË +(); + +1456 +$jošedTabËP“rBužd” + = +$this +-> + `g‘NewP“rBužd” +( +$tblFK +); + +1457 +$tblFKPackage + = +$jošedTabËP“rBužd” +-> + `g‘StubP“rBužd” +()-> + `g‘Package +(); + +1459 ià(! +$tblFK +-> + `isFÜReã»nûOÆy +()) { + +1463 +$fkCÏssName + = +$jošedTabËP“rBužd” +-> + `g‘ObjeùCÏs¢ame +(); + +1467 iàÐ +$fk +-> + `g‘OnD–‘e +(è=ð +FÜeignKey +:: +CASCADE + && +$tblFK +-> + `g‘Name +(è!ð +$bË +->getName()) { + +1470 +$cÞumnNamesF + = +$fk +-> + `g‘LoÿlCÞumns +(); + +1471 +$cÞumnNamesL + = +$fk +-> + `g‘FÜeignCÞumns +(); + +1473 +$süt + .= " + +1476 \ +$ü™”Ÿ + = +Ãw + + `Cr™”Ÿ +(".$jošedTabËP“rBužd”->g‘P“rCÏs¢ame().":: +DATABASE_NAME +); + +1478  +$x +=0, +$xËn += + `couÁ +( +$cÞumnNamesF +); $x < $xlen; $x++) { + +1479 +$cÞumnFK + = +$tblFK +-> + `g‘CÞumn +( +$cÞumnNamesF +[ +$x +]); + +1480 +$cÞumnL + = +$bË +-> + `g‘CÞumn +( +$cÞumnNamesL +[ +$x +]); + +1482 +$süt + .= " + +1483 \ +$ü™”Ÿ +-> + `add +(".$jošedTabËP“rBužd”->g‘CÞumnCÚ¡ªt($cÞumnFKè.", \ +$obj +-> +g‘ +".$columnL->getPhpName()."());"; + +1486 +$süt + .= " + +1487 \ +$afãùedRows + +ð".$jošedTabËP“rBužd”->g‘P“rCÏs¢ame().":: + `doD–‘e +(\ +$ü™”Ÿ +, \ +$cÚ +);"; + +1493 +$süt + .= " + +1495  \ +$afãùedRows +; + +1498 + } +} + +1504 +´Ùeùed + +funùiÚ + + $addDoOnD–‘eS‘NuÎ +(& +$süt +) + +1506 +$bË + = +$this +-> + `g‘TabË +(); + +1507 +$süt + .= " + +1521 +´Ùeùed +  +funùiÚ + + `doOnD–‘eS‘NuÎ +( +Cr™”Ÿ + \ +$ü™”Ÿ +, +PrݖPDO + \ +$cÚ +) + +1525 \ +$objeùs + = ".$this->g‘P“rCÏs¢ame().":: + `doS–eù +(\ +$ü™”Ÿ +, \ +$cÚ +); + +1526 + `fܗch + (\ +$objeùs + +as + \ +$obj +) { + +1533 + `fܗch + ( +$bË +-> + `g‘Re㼔s +(è +as + +$fk +) { + +1537 +$tblFK + = +$fk +-> + `g‘TabË +(); + +1538 +$»fTabËP“rBužd” + = +$this +-> + `g‘NewP“rBužd” +( +$tblFK +); + +1540 ià(! +$tblFK +-> + `isFÜReã»nûOÆy +()) { + +1544 +$fkCÏssName + = +$»fTabËP“rBužd” +-> + `g‘ObjeùCÏs¢ame +(); + +1548 iàÐ +$fk +-> + `g‘OnD–‘e +(è=ð +FÜeignKey +:: +SETNULL + && + +1549 +$fk +-> + `g‘TabË +()-> + `g‘Name +(è!ð +$bË +->getName()) { + +1552 +$cÞumnNamesF + = +$fk +-> + `g‘LoÿlCÞumns +(); + +1553 +$cÞumnNamesL + = +$fk +-> + `g‘FÜeignCÞumns +(); + +1554 +$süt + .= " + +1556 \ +$£ËùCr™”Ÿ + = +Ãw + + `Cr™”Ÿ +(".$this->g‘P“rCÏs¢ame().":: +DATABASE_NAME +); + +1557 \ +$upd©eV®ues + = +Ãw + + `Cr™”Ÿ +(".$this->g‘P“rCÏs¢ame().":: +DATABASE_NAME +);"; + +1559  +$x +=0, +$xËn += + `couÁ +( +$cÞumnNamesF +); $x < $xlen; $x++) { + +1560 +$cÞumnFK + = +$tblFK +-> + `g‘CÞumn +( +$cÞumnNamesF +[ +$x +]); + +1561 +$cÞumnL + = +$bË +-> + `g‘CÞumn +( +$cÞumnNamesL +[ +$x +]); + +1562 +$süt + .= " + +1563 \ +$£ËùCr™”Ÿ +-> + `add +(".$»fTabËP“rBužd”->g‘CÞumnCÚ¡ªt($cÞumnFK).", \ +$obj +-> +g‘ +".$columnL->getPhpName()."()); + +1564 \ +$upd©eV®ues +-> + `add +(".$»fTabËP“rBužd”->g‘CÞumnCÚ¡ªt($cÞumnFK).", +nuÎ +); + +1568 +$süt + .= " + +1569 { +$this +-> +ba£P“rCÏs¢ame +}:: + `doUpd©e +(\ +$£ËùCr™”Ÿ +, \ +$upd©eV®ues +, \ +$cÚ +); + +1575 +$süt + .= " + +1579 + } +} + +1585 +´Ùeùed + +funùiÚ + + $addDoV®id©e +(& +$süt +) + +1587 +$bË + = +$this +-> + `g‘TabË +(); + +1588 +$süt + .= " + +1601 +public +  +funùiÚ + + `doV®id©e +(".$this->g‘ObjeùCÏs¢ame()." \ +$obj +, \ +$cÞs + = +nuÎ +) + +1603 \ +$cÞumns + = + `¬¿y +(); + +1605 ià(\ +$cÞs +) { + +1606 \ +$dbM­ + = +Prݖ +:: + `g‘D©aba£M­ +(".$this->g‘P“rCÏs¢ame().":: +DATABASE_NAME +); + +1607 \ +$bËM­ + = \ +$dbM­ +-> + `g‘TabË +(".$this->g‘P“rCÏs¢ame().":: +TABLE_NAME +); + +1609 ià(! + `is_¬¿y +(\ +$cÞs +)) { + +1610 \ +$cÞs + = + `¬¿y +(\$cols); + +1613 + `fܗch + (\ +$cÞs + +as + \ +$cÞName +) { + +1614 ià(\ +$bËM­ +-> + `cڏšsCÞumn +(\ +$cÞName +)) { + +1615 \ +$g‘ + = 'g‘' . \ +$bËM­ +-> + `g‘CÞumn +(\ +$cÞName +)-> + `g‘PhpName +(); + +1616 \ +$cÞumns +[\ +$cÞName +] = \ +$obj +->\ + `$g‘ +(); + +1621 + `fܗch + ( +$bË +-> + `g‘V®id©Üs +(è +as + +$v® +) { + +1622 +$cÞ + = +$v® +-> + `g‘CÞumn +(); + +1623 ià(! +$cÞ +-> + `isAutoInüem’t +()) { + +1624 +$süt + .= " + +1625 ià(\ +$obj +-> + `isNew +(è|| \$obj-> + `isCÞumnModif›d +(".$this->getColumnConstant($col).")) + +1626 \ +$cÞumns +[".$this->g‘CÞumnCÚ¡ªt($cÞ)."] = \ +$obj +-> +g‘ +".$col->getPhpName()."(); + +1631 +$süt + .= " + +1634  { +$this +-> +ba£P“rCÏs¢ame +}:: + `doV®id©e +(".$this->g‘P“rCÏs¢ame().":: +DATABASE_NAME +, ".$this->g‘P“rCÏs¢ame().":: +TABLE_NAME +, \ +$cÞumns +); + +1637 + } +} + +1643 +´Ùeùed + +funùiÚ + + $addR‘r›veByPK_SšgËPK +(& +$süt +) + +1645 +$bË + = +$this +-> + `g‘TabË +(); + +1646 +$pks + = +$bË +-> + `g‘Prim¬yKey +(); + +1647 +$cÞ + = +$pks +[0]; + +1649 +$süt + .= " + +1657 +public +  +funùiÚ + ".$this->g‘R‘r›veM‘hodName()."(\ +$pk +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +1660 ià( +nuÎ + !=ð(\ +$obj + = ".$this->g‘P“rCÏs¢ame().":: + `g‘In¡ªûFromPoÞ +(".$this->getInstancePoolKeySnippet('$pk')."))) { + +1661  \ +$obj +; + +1664 ià(\ +$cÚ + ==ð +nuÎ +) { + +1665 \ +$cÚ + = +Prݖ +:: + `g‘CÚÃùiÚ +(".$this->g‘P“rCÏs¢ame().":: +DATABASE_NAME +, Prݖ:: +CONNECTION_READ +); + +1668 \ +$ü™”Ÿ + = +Ãw + + `Cr™”Ÿ +(".$this->g‘P“rCÏs¢ame().":: +DATABASE_NAME +); + +1669 \ +$ü™”Ÿ +-> + `add +(".$this->g‘CÞumnCÚ¡ªt($cÞ).", \ +$pk +); + +1671 \ +$v + = ".$this->g‘P“rCÏs¢ame().":: + `doS–eù +(\ +$ü™”Ÿ +, \ +$cÚ +); + +1673  ! + `em±y +(\ +$v +è> 0 ? \$v[0] : +nuÎ +; + +1676 + } +} + +1682 +´Ùeùed + +funùiÚ + + $addR‘r›veByPKs_SšgËPK +(& +$süt +) + +1684 +$bË + = +$this +-> + `g‘TabË +(); + +1685 +$süt + .= " + +1694 +public +  +funùiÚ + ".$this->g‘R‘r›veM‘hodName()." + `s +(\ +$pks +, +PrݖPDO + \ +$cÚ + = +nuÎ +) + +1696 ià(\ +$cÚ + ==ð +nuÎ +) { + +1697 \ +$cÚ + = +Prݖ +:: + `g‘CÚÃùiÚ +(".$this->g‘P“rCÏs¢ame().":: +DATABASE_NAME +, Prݖ:: +CONNECTION_READ +); + +1700 \ +$objs + = +nuÎ +; + +1701 ià( + `em±y +(\ +$pks +)) { + +1702 \ +$objs + = + `¬¿y +(); + +1704 \ +$ü™”Ÿ + = +Ãw + + `Cr™”Ÿ +(".$this->g‘P“rCÏs¢ame().":: +DATABASE_NAME +);"; + +1705 +$k1 + = +$bË +-> + `g‘Prim¬yKey +(); + +1706 +$süt + .= " + +1707 \ +$ü™”Ÿ +-> + `add +(".$this->g‘CÞumnCÚ¡ªt($k1[0]).", \ +$pks +, +Cr™”Ÿ +:: +IN +);"; + +1708 +$süt + .= " + +1709 \ +$objs + = ".$this->g‘P“rCÏs¢ame().":: + `doS–eù +(\ +$ü™”Ÿ +, \ +$cÚ +); + +1711  \ +$objs +; + +1714 + } +} + +1720 +´Ùeùed + +funùiÚ + + $addR‘r›veByPK_MuÉiPK +(& +$süt +) + +1722 +$bË + = +$this +-> + `g‘TabË +(); + +1723 +$süt + .= " + +1736 +public +  +funùiÚ + ".$this->getRetrieveMethodName()."("; + +1738 +$php + = + `¬¿y +(); + +1739 + `fܗch + ( +$bË +-> + `g‘Prim¬yKey +(è +as + +$cÞ +) { + +1740 +$þo + = + `¡¹Þow” +( +$cÞ +-> + `g‘Name +()); + +1741 +$php +[] = '$' . +$þo +; + +1744 +$süt + .ð + `im¶ode +(', ', +$php +); + +1746 +$süt + .= ", PropelPDO \$con =‚ull) { + +1747 \ +$key + = ".$this->getInstancePoolKeySnippet($php).";"; + +1748 +$süt + .= " + +1749 ià( +nuÎ + !=ð(\ +$obj + = ".$this->g‘P“rCÏs¢ame().":: + `g‘In¡ªûFromPoÞ +(\ +$key +))) { + +1750  \ +$obj +; + +1753 ià(\ +$cÚ + ==ð +nuÎ +) { + +1754 \ +$cÚ + = +Prݖ +:: + `g‘CÚÃùiÚ +(".$this->g‘P“rCÏs¢ame().":: +DATABASE_NAME +, Prݖ:: +CONNECTION_READ +); + +1756 \ +$ü™”Ÿ + = +Ãw + + `Cr™”Ÿ +(".$this->g‘P“rCÏs¢ame().":: +DATABASE_NAME +);"; + +1757 + `fܗch + ( +$bË +-> + `g‘Prim¬yKey +(è +as + +$cÞ +) { + +1758 +$þo + = + `¡¹Þow” +( +$cÞ +-> + `g‘Name +()); + +1759 +$süt + .= " + +1760 \ +$ü™”Ÿ +-> + `add +(".$this->g‘CÞumnCÚ¡ªt($cÞ).", +$ +".$clo.");"; + +1762 +$süt + .= " + +1763 \ +$v + = ".$this->g‘P“rCÏs¢ame().":: + `doS–eù +(\ +$ü™”Ÿ +, \ +$cÚ +); + +1765  ! + `em±y +(\ +$v +è? \$v[0] : +nuÎ +; + +1766 + } +}"; + +1773 +´Ùeùed + +funùiÚ + + $addG‘TabËM­ +(& +$süt +) + +1775 +$süt + .= " + +1783 +public +  +funùiÚ + + `g‘TabËM­ +() + +1785  +Prݖ +:: + `g‘D©aba£M­ +( +£lf +:: +DATABASE_NAME +)-> + `g‘TabË +(£lf:: +TABLE_NAME +); + +1788 + } +} + +1795 +´Ùeùed + +funùiÚ + + $addS–eùM‘hods +(& +$süt +) + +1797 +$bË + = +$this +-> + `g‘TabË +(); + +1799 +·»Á +:: + `addS–eùM‘hods +( +$süt +); + +1801 +$this +-> + `addDoCouÁJoš +( +$süt +); + +1802 +$this +-> + `addDoS–eùJoš +( +$süt +); + +1804 +$couÁFK + = + `couÁ +( +$bË +-> + `g‘FÜeignKeys +()); + +1806 +$šþudeJošAÎ + = +Œue +; + +1808 + `fܗch + ( +$this +-> + `g‘TabË +()-> + `g‘FÜeignKeys +(è +as + +$fk +) { + +1809 +$tblFK + = +$bË +-> + `g‘D©aba£ +()-> + `g‘TabË +( +$fk +-> + `g‘FÜeignTabËName +()); + +1810 ià( +$tblFK +-> + `isFÜReã»nûOÆy +()) { + +1811 +$šþudeJošAÎ + = +çl£ +; + +1815 ià( +$šþudeJošAÎ +) { + +1816 ià( +$couÁFK + > 0) { + +1817 +$this +-> + `addDoCouÁJošAÎ +( +$süt +); + +1818 +$this +-> + `addDoS–eùJošAÎ +( +$süt +); + +1820 ià( +$couÁFK + > 1) { + +1821 +$this +-> + `addDoCouÁJošAÎExû± +( +$süt +); + +1822 +$this +-> + `addDoS–eùJošAÎExû± +( +$süt +); + +1826 + } +} + +1834 +´Ùeùed + +funùiÚ + + $g‘Prim¬yKeyCÞOff£ts +( +TabË + +$tbl +) + +1836 +$off£ts + = + `¬¿y +(); + +1837 +$idx + = 0; + +1838 + `fܗch + ( +$tbl +-> + `g‘CÞumns +(è +as + +$cÞ +) { + +1839 ià( +$cÞ +-> + `isPrim¬yKey +()) { + +1840 +$off£ts +[] = +$idx +; + +1842 +$idx +++; + +1844  +$off£ts +; + +1845 + } +} + +1847 +public + +funùiÚ + + $addCr™”ŸJoš +( +$fk +, +$bË +, +$jošTabË +, +$jošedTabËP“rBužd” +) + +1849 +$süt + = ''; + +1850 +$lfM­ + = +$fk +-> + `g‘LoÿlFÜeignM­pšg +(); + +1851 +$láCÞs + = +$fk +-> + `g‘LoÿlCÞumns +(); + +1852 ià( + `couÁ +( +$láCÞs +) == 1) + +1855 +$láCÞ + = +$láCÞs +[0]; + +1856 +$süt + .ð + `¥rštf +(" + +1857 \ +$ü™”Ÿ +-> + `addJoš +(% +s +, %s, \ +$još_behaviÜ +);\ +n +", + +1858 +$this +-> + `g‘CÞumnCÚ¡ªt +( +$bË +-> + `g‘CÞumn +( +$láCÞ +) ), + +1859 +$jošedTabËP“rBužd” +-> + `g‘CÞumnCÚ¡ªt +( +$jošTabË +-> + `g‘CÞumn +Ð +$lfM­ +[ +$láCÞ +] ) )); + +1864 +$süt + .= " + +1865 \ +$ü™”Ÿ +-> + `addMuɝËJoš +( + `¬¿y +(\ +n +"; + +1866 + `fܗch + ( +$láCÞs + +as + +$cÞumnName + ) { + +1867 +$süt + .ð + `¥rštf +("‡rray(%s, %s),\n", + +1868 +$this +-> + `g‘CÞumnCÚ¡ªt +( +$bË +-> + `g‘CÞumn +( +$cÞumnName +) ), + +1869 +$jošedTabËP“rBužd” +-> + `g‘CÞumnCÚ¡ªt +( +$jošTabË +-> + `g‘CÞumn +Ð +$lfM­ +[ +$cÞumnName +] ) ) + +1872 +$süt + .= " ), \$join_behavior);\n"; + +1874  +$süt +; + +1875 + } +} + +1881 +´Ùeùed + +funùiÚ + + $addDoS–eùJoš +(& +$süt +) + +1883 +$bË + = +$this +-> + `g‘TabË +(); + +1884 +$þassName + = +$this +-> + `g‘ObjeùCÏs¢ame +(); + +1885 +$couÁFK + = + `couÁ +( +$bË +-> + `g‘FÜeignKeys +()); + +1886 +$još_behaviÜ + = +$this +-> + `g‘JošBehaviÜ +(); + +1888 ià( +$couÁFK + >= 1) { + +1890 + `fܗch + ( +$bË +-> + `g‘FÜeignKeys +(è +as + +$fk +) { + +1892 +$jošTabË + = +$bË +-> + `g‘D©aba£ +()-> + `g‘TabË +( +$fk +-> + `g‘FÜeignTabËName +()); + +1894 ià(! +$jošTabË +-> + `isFÜReã»nûOÆy +()) { + +1898 iàÐ +$fk +-> + `g‘FÜeignTabËName +(è!ð +$bË +-> + `g‘Name +() ) { + +1900 +$thisTabËObjeùBužd” + = +$this +-> + `g‘NewObjeùBužd” +( +$bË +); + +1901 +$jošedTabËObjeùBužd” + = +$this +-> + `g‘NewObjeùBužd” +( +$jošTabË +); + +1902 +$jošedTabËP“rBužd” + = +$this +-> + `g‘NewP“rBužd” +( +$jošTabË +); + +1904 +$jošCÏssName + = +$jošedTabËObjeùBužd” +-> + `g‘ObjeùCÏs¢ame +(); + +1906 +$süt + .= " + +1917 +public +  +funùiÚ + +doS–eùJoš +".$thisTabËObjeùBužd”->g‘FKPhpNameAffix($fk, $¶u¿Èðçl£)."( +Cr™”Ÿ + \ +$ü™”Ÿ +, \ +$cÚ + = +nuÎ +, \ +$još_behaviÜ + = $join_behavior) + +1919 \ +$ü™”Ÿ + = +þÚe + \$criteria; + +1922 ià(\ +$ü™”Ÿ +-> + `g‘DbName +(è=ð +Prݖ +:: + `g‘DeçuÉDB +()) { + +1923 \ +$ü™”Ÿ +-> + `£tDbName +( +£lf +:: +DATABASE_NAME +); + +1926 ".$this->g‘P“rCÏs¢ame().":: + `addS–eùCÞumns +(\ +$ü™”Ÿ +); + +1927 \ +$¡¬tcÞ + = (".$this->g‘P“rCÏs¢ame().":: +NUM_COLUMNS + - ".$this->g‘P“rCÏs¢ame().":: +NUM_LAZY_LOAD_COLUMNS +); + +1928 ".$jošedTabËP“rBužd”->g‘P“rCÏs¢ame().":: + `addS–eùCÞumns +(\ +$ü™”Ÿ +); + +1931 +$süt + .ð +$this +-> + `addCr™”ŸJoš +( +$fk +, +$bË +, +$jošTabË +, +$jošedTabËP“rBužd” +); + +1934 +$this +-> + `­¶yBehaviÜModif›r +('´eS–eù', +$süt +); + +1936 +$süt + .= " + +1937 \ +$¡mt + = ".$this->ba£P“rCÏs¢ame.":: + `doS–eù +(\ +$ü™”Ÿ +, \ +$cÚ +); + +1938 \ +$»suÉs + = + `¬¿y +(); + +1940 \ +$row + = \ +$¡mt +-> + `ãtch +( +PDO +:: +FETCH_NUM +)) { + +1941 \ +$key1 + = ".$this->g‘P“rCÏs¢ame().":: + `g‘Prim¬yKeyHashFromRow +(\ +$row +, 0); + +1942 ià( +nuÎ + !=ð(\ +$obj1 + = ".$this->g‘P“rCÏs¢ame().":: + `g‘In¡ªûFromPoÞ +(\ +$key1 +))) { + +1948 ià( +$bË +-> + `g‘Chžd»nCÞumn +()) { + +1949 +$süt + .= " + +1950 \ +$omCÏss + = ".$this->g‘P“rCÏs¢ame().":: + `g‘OMCÏss +(\ +$row +, 0); + +1951 \ +$þs + = + `sub¡r +('.'.\ +$omCÏss +, + `¡¼pos +('.'.\$omClass, '.') + 1); + +1954 +$süt + .= " + +1955 \ +$þs + = ".$this->g‘P“rCÏs¢ame().":: + `g‘OMCÏss +( +çl£ +); + +1958 +$süt + .= " + +1960 \ +$obj1 +-> + `hyd¿‹ +(\ +$row +); + +1961 ".$this->g‘P“rCÏs¢ame().":: + `addIn¡ªûToPoÞ +(\ +$obj1 +, \ +$key1 +); + +1964 \ +$key2 + = ".$jošedTabËP“rBužd”->g‘P“rCÏs¢ame().":: + `g‘Prim¬yKeyHashFromRow +(\ +$row +, \ +$¡¬tcÞ +); + +1965 ià(\ +$key2 + !=ð +nuÎ +) { + +1966 \ +$obj2 + = ".$jošedTabËP“rBužd”->g‘P“rCÏs¢ame().":: + `g‘In¡ªûFromPoÞ +(\ +$key2 +); + +1967 ià(!\ +$obj2 +) { + +1969 ià( +$jošTabË +-> + `g‘Chžd»nCÞumn +()) { + +1970 +$süt + .= " + +1971 \ +$omCÏss + = ".$jošedTabËP“rBužd”->g‘P“rCÏs¢ame().":: + `g‘OMCÏss +(\ +$row +, \ +$¡¬tcÞ +); + +1972 \ +$þs + = + `sub¡r +('.'.\ +$omCÏss +, + `¡¼pos +('.'.\$omClass, '.') + 1); + +1975 +$süt + .= " + +1976 \ +$þs + = ".$jošedTabËP“rBužd”->g‘P“rCÏs¢ame().":: + `g‘OMCÏss +( +çl£ +); + +1980 +$süt + .= " + +1982 \ +$obj2 +-> + `hyd¿‹ +(\ +$row +, \ +$¡¬tcÞ +); + +1983 ".$jošedTabËP“rBužd”->g‘P“rCÏs¢ame().":: + `addIn¡ªûToPoÞ +(\ +$obj2 +, \ +$key2 +); + +1987 ià( +$fk +-> + `isLoÿlPrim¬yKey +()) { + +1988 +$süt + .= " + +1990 \ +$obj1 +-> +£t +" . $jošedTabËP“rBužd”->g‘ObjeùCÏs¢ame(è. "(\ +$obj2 +);"; + +1992 +$süt + .= " + +1993 \ +$obj2 +-> +add +" . $jošedTabËObjeùBužd”->g‘RefFKPhpNameAffix($fk, $¶u¿Èðçl£)."(\ +$obj1 +);"; + +1995 +$süt + .= " + +1999 \ +$»suÉs +[] = \ +$obj1 +; + +2001 \ +$¡mt +-> + `þo£CursÜ +(); + +2002  \ +$»suÉs +; + +2010 + } +} + +2016 +´Ùeùed + +funùiÚ + + $addDoCouÁJoš +(& +$süt +) + +2018 +$bË + = +$this +-> + `g‘TabË +(); + +2019 +$þassName + = +$this +-> + `g‘ObjeùCÏs¢ame +(); + +2020 +$couÁFK + = + `couÁ +( +$bË +-> + `g‘FÜeignKeys +()); + +2021 +$još_behaviÜ + = +$this +-> + `g‘JošBehaviÜ +(); + +2023 ià( +$couÁFK + >= 1) { + +2025 + `fܗch + ( +$bË +-> + `g‘FÜeignKeys +(è +as + +$fk +) { + +2027 +$jošTabË + = +$bË +-> + `g‘D©aba£ +()-> + `g‘TabË +( +$fk +-> + `g‘FÜeignTabËName +()); + +2029 ià(! +$jošTabË +-> + `isFÜReã»nûOÆy +()) { + +2031 iàÐ +$fk +-> + `g‘FÜeignTabËName +(è!ð +$bË +-> + `g‘Name +() ) { + +2033 +$thisTabËObjeùBužd” + = +$this +-> + `g‘NewObjeùBužd” +( +$bË +); + +2034 +$jošedTabËObjeùBužd” + = +$this +-> + `g‘NewObjeùBužd” +( +$jošTabË +); + +2035 +$jošedTabËP“rBužd” + = +$this +-> + `g‘NewP“rBužd” +( +$jošTabË +); + +2037 +$jošCÏssName + = +$jošedTabËObjeùBužd” +-> + `g‘ObjeùCÏs¢ame +(); + +2039 +$süt + .= " + +2050 +public +  +funùiÚ + +doCouÁJoš +".$thisTabËObjeùBužd”->g‘FKPhpNameAffix($fk, $¶u¿Èðçl£)."( +Cr™”Ÿ + \ +$ü™”Ÿ +, \ +$di¡šù + = +çl£ +, +PrݖPDO + \ +$cÚ + = +nuÎ +, \ +$još_behaviÜ + = $join_behavior) + +2053 \ +$ü™”Ÿ + = +þÚe + \$criteria; + +2058 \ +$ü™”Ÿ +-> + `£tPrim¬yTabËName +(".$this->g‘P“rCÏs¢ame().":: +TABLE_NAME +); + +2060 ià(\ +$di¡šù + && ! + `š_¬¿y +( +Cr™”Ÿ +:: +DISTINCT +, \ +$ü™”Ÿ +-> + `g‘S–eùModif›rs +())) { + +2061 \ +$ü™”Ÿ +-> + `£tDi¡šù +(); + +2064 ià(!\ +$ü™”Ÿ +-> + `hasS–eùCÏu£ +()) { + +2065 ".$this->g‘P“rCÏs¢ame().":: + `addS–eùCÞumns +(\ +$ü™”Ÿ +); + +2068 \ +$ü™”Ÿ +-> + `þ—rOrd”ByCÞumns +(); + +2071 \ +$ü™”Ÿ +-> + `£tDbName +( +£lf +:: +DATABASE_NAME +); + +2073 ià(\ +$cÚ + ==ð +nuÎ +) { + +2074 \ +$cÚ + = +Prݖ +:: + `g‘CÚÃùiÚ +(".$this->g‘P“rCÏs¢ame().":: +DATABASE_NAME +, Prݖ:: +CONNECTION_READ +); + +2077 +$süt + .ð +$this +-> + `addCr™”ŸJoš +( +$fk +, +$bË +, +$jošTabË +, +$jošedTabËP“rBužd” +); + +2080 +$this +-> + `­¶yBehaviÜModif›r +('´eS–eù', +$süt +); + +2082 +$süt + .= " + +2083 \ +$¡mt + = ".$this->ba£P“rCÏs¢ame.":: + `doCouÁ +(\ +$ü™”Ÿ +, \ +$cÚ +); + +2085 ià(\ +$row + = \ +$¡mt +-> + `ãtch +( +PDO +:: +FETCH_NUM +)) { + +2086 \ +$couÁ + = (è\ +$row +[0]; + +2088 \ +$couÁ + = 0; + +2090 \ +$¡mt +-> + `þo£CursÜ +(); + +2091  \ +$couÁ +; + +2099 + } +} + +2105 +´Ùeùed + +funùiÚ + + $addDoS–eùJošAÎ +(& +$süt +) + +2107 +$bË + = +$this +-> + `g‘TabË +(); + +2108 +$þassName + = +$this +-> + `g‘ObjeùCÏs¢ame +(); + +2109 +$još_behaviÜ + = +$this +-> + `g‘JošBehaviÜ +(); + +2111 +$süt + .= " + +2123 +public +  +funùiÚ + + `doS–eùJošAÎ +( +Cr™”Ÿ + \ +$ü™”Ÿ +, \ +$cÚ + = +nuÎ +, \ +$još_behaviÜ + = $join_behavior) + +2125 \ +$ü™”Ÿ + = +þÚe + \$criteria; + +2128 ià(\ +$ü™”Ÿ +-> + `g‘DbName +(è=ð +Prݖ +:: + `g‘DeçuÉDB +()) { + +2129 \ +$ü™”Ÿ +-> + `£tDbName +( +£lf +:: +DATABASE_NAME +); + +2132 ".$this->g‘P“rCÏs¢ame().":: + `addS–eùCÞumns +(\ +$ü™”Ÿ +); + +2133 \ +$¡¬tcÞ2 + = (".$this->g‘P“rCÏs¢ame().":: +NUM_COLUMNS + - ".$this->g‘P“rCÏs¢ame().":: +NUM_LAZY_LOAD_COLUMNS +); + +2135 +$šdex + = 2; + +2136 + `fܗch + ( +$bË +-> + `g‘FÜeignKeys +(è +as + +$fk +) { + +2140 iàÐ +$fk +-> + `g‘FÜeignTabËName +(è!ð +$bË +-> + `g‘Name +() ) { + +2141 +$jošTabË + = +$bË +-> + `g‘D©aba£ +()-> + `g‘TabË +( +$fk +-> + `g‘FÜeignTabËName +()); + +2142 +$Ãw_šdex + = +$šdex + + 1; + +2144 +$jošedTabËP“rBužd” + = +$this +-> + `g‘NewP“rBužd” +( +$jošTabË +); + +2145 +$jošCÏssName + = +$jošedTabËP“rBužd” +-> + `g‘ObjeùCÏs¢ame +(); + +2147 +$süt + .= " + +2148 ".$jošedTabËP“rBužd”->g‘P“rCÏs¢ame().":: + `addS–eùCÞumns +(\ +$ü™”Ÿ +); + +2149 \ +$¡¬tcÞ$Ãw_šdex + = \ +$¡¬tcÞ$šdex + + (".$jošedTabËP“rBužd”->g‘P“rCÏs¢ame().":: +NUM_COLUMNS + - ".$jošedTabËP“rBužd”->g‘P“rCÏs¢ame().":: +NUM_LAZY_LOAD_COLUMNS +); + +2151 +$šdex + = +$Ãw_šdex +; + +2156 + `fܗch + ( +$bË +-> + `g‘FÜeignKeys +(è +as + +$fk +) { + +2158 iàÐ +$fk +-> + `g‘FÜeignTabËName +(è!ð +$bË +-> + `g‘Name +() ) { + +2159 +$jošTabË + = +$bË +-> + `g‘D©aba£ +()-> + `g‘TabË +( +$fk +-> + `g‘FÜeignTabËName +()); + +2160 +$jošedTabËP“rBužd” + = +$this +-> + `g‘NewP“rBužd” +( +$jošTabË +); + +2161 +$süt + .ð +$this +-> + `addCr™”ŸJoš +( +$fk +, +$bË +, +$jošTabË +, +$jošedTabËP“rBužd” +); + +2166 +$this +-> + `­¶yBehaviÜModif›r +('´eS–eù', +$süt +); + +2168 +$süt + .= " + +2169 \ +$¡mt + = ".$this->ba£P“rCÏs¢ame.":: + `doS–eù +(\ +$ü™”Ÿ +, \ +$cÚ +); + +2170 \ +$»suÉs + = + `¬¿y +(); + +2172 \ +$row + = \ +$¡mt +-> + `ãtch +( +PDO +:: +FETCH_NUM +)) { + +2173 \ +$key1 + = ".$this->g‘P“rCÏs¢ame().":: + `g‘Prim¬yKeyHashFromRow +(\ +$row +, 0); + +2174 ià( +nuÎ + !=ð(\ +$obj1 + = ".$this->g‘P“rCÏs¢ame().":: + `g‘In¡ªûFromPoÞ +(\ +$key1 +))) { + +2180 ià( +$bË +-> + `g‘Chžd»nCÞumn +()) { + +2181 +$süt + .= " + +2182 \ +$omCÏss + = ".$this->g‘P“rCÏs¢ame().":: + `g‘OMCÏss +(\ +$row +, 0); + +2183 \ +$þs + = + `sub¡r +('.'.\ +$omCÏss +, + `¡¼pos +('.'.\$omClass, '.') + 1); + +2186 +$süt + .= " + +2187 \ +$þs + = ".$this->g‘P“rCÏs¢ame().":: + `g‘OMCÏss +( +çl£ +); + +2191 +$süt + .= " + +2193 \ +$obj1 +-> + `hyd¿‹ +(\ +$row +); + +2194 ".$this->g‘P“rCÏs¢ame().":: + `addIn¡ªûToPoÞ +(\ +$obj1 +, \ +$key1 +); + +2198 +$šdex + = 1; + +2199 + `fܗch + ( +$bË +-> + `g‘FÜeignKeys +(è +as + +$fk + ) { + +2202 iàÐ +$fk +-> + `g‘FÜeignTabËName +(è!ð +$bË +-> + `g‘Name +() ) { + +2203 +$jošTabË + = +$bË +-> + `g‘D©aba£ +()-> + `g‘TabË +( +$fk +-> + `g‘FÜeignTabËName +()); + +2205 +$thisTabËObjeùBužd” + = +$this +-> + `g‘NewObjeùBužd” +( +$bË +); + +2206 +$jošedTabËObjeùBužd” + = +$this +-> + `g‘NewObjeùBužd” +( +$jošTabË +); + +2207 +$jošedTabËP“rBužd” + = +$this +-> + `g‘NewP“rBužd” +( +$jošTabË +); + +2210 +$jošCÏssName + = +$jošedTabËObjeùBužd” +-> + `g‘ObjeùCÏs¢ame +(); + +2211 +$š‹rçûName + = +$jošCÏssName +; + +2213 ià( +$jošTabË +-> + `g‘IÁ”çû +()) { + +2214 +$š‹rçûName + = +$this +-> + `´efixCÏs¢ame +( +$jošTabË +-> + `g‘IÁ”çû +()); + +2217 +$šdex +++; + +2219 +$süt + .= " + +2222 \ +$key$šdex + = ".$jošedTabËP“rBužd”->g‘P“rCÏs¢ame().":: + `g‘Prim¬yKeyHashFromRow +(\ +$row +, \ +$¡¬tcÞ$šdex +); + +2223 ià(\ +$key$šdex + !=ð +nuÎ +) { + +2224 \ +$obj$šdex + = ".$jošedTabËP“rBužd”->g‘P“rCÏs¢ame().":: + `g‘In¡ªûFromPoÞ +(\ +$key$šdex +); + +2225 ià(!\ +$obj$šdex +) { + +2227 ià( +$jošTabË +-> + `g‘Chžd»nCÞumn +()) { + +2228 +$süt + .= " + +2229 \ +$omCÏss + = ".$jošedTabËP“rBužd”->g‘P“rCÏs¢ame().":: + `g‘OMCÏss +(\ +$row +, \ +$¡¬tcÞ$šdex +); + +2230 \ +$þs + = + `sub¡r +('.'.\ +$omCÏss +, + `¡¼pos +('.'.\$omClass, '.') + 1); + +2233 +$süt + .= " + +2234 \ +$þs + = ".$jošedTabËP“rBužd”->g‘P“rCÏs¢ame().":: + `g‘OMCÏss +( +çl£ +); + +2238 +$süt + .= " + +2240 \ +$obj +".$šdex."-> + `hyd¿‹ +(\ +$row +, \ +$¡¬tcÞ$šdex +); + +2241 ".$jošedTabËP“rBužd”->g‘P“rCÏs¢ame().":: + `addIn¡ªûToPoÞ +(\ +$obj$šdex +, \ +$key$šdex +); + +2245 ià( +$fk +-> + `isLoÿlPrim¬yKey +()) { + +2246 +$süt + .= " + +2247 \ +$obj1 +-> +£t +".$jošedTabËP“rBužd”->g‘ObjeùCÏs¢ame()."(\ +$obj +".$index.");"; + +2249 +$süt + .= " + +2250 \ +$obj +".$šdex."-> +add +".$jošedTabËObjeùBužd”->g‘RefFKPhpNameAffix($fk, $¶u¿Èðçl£)."(\ +$obj1 +);"; + +2252 +$süt + .= " + +2259 +$süt + .= " + +2260 \ +$»suÉs +[] = \ +$obj1 +; + +2262 \ +$¡mt +-> + `þo£CursÜ +(); + +2263  \ +$»suÉs +; + +2267 + } +} + +2274 +´Ùeùed + +funùiÚ + + $addDoCouÁJošAÎ +(& +$süt +) + +2276 +$bË + = +$this +-> + `g‘TabË +(); + +2277 +$þassName + = +$this +-> + `g‘ObjeùCÏs¢ame +(); + +2278 +$još_behaviÜ + = +$this +-> + `g‘JošBehaviÜ +(); + +2280 +$süt + .= " + +2291 +public +  +funùiÚ + + `doCouÁJošAÎ +( +Cr™”Ÿ + \ +$ü™”Ÿ +, \ +$di¡šù + = +çl£ +, +PrݖPDO + \ +$cÚ + = +nuÎ +, \ +$još_behaviÜ + = $join_behavior) + +2294 \ +$ü™”Ÿ + = +þÚe + \$criteria; + +2299 \ +$ü™”Ÿ +-> + `£tPrim¬yTabËName +(".$this->g‘P“rCÏs¢ame().":: +TABLE_NAME +); + +2301 ià(\ +$di¡šù + && ! + `š_¬¿y +( +Cr™”Ÿ +:: +DISTINCT +, \ +$ü™”Ÿ +-> + `g‘S–eùModif›rs +())) { + +2302 \ +$ü™”Ÿ +-> + `£tDi¡šù +(); + +2305 ià(!\ +$ü™”Ÿ +-> + `hasS–eùCÏu£ +()) { + +2306 ".$this->g‘P“rCÏs¢ame().":: + `addS–eùCÞumns +(\ +$ü™”Ÿ +); + +2309 \ +$ü™”Ÿ +-> + `þ—rOrd”ByCÞumns +(); + +2312 \ +$ü™”Ÿ +-> + `£tDbName +( +£lf +:: +DATABASE_NAME +); + +2314 ià(\ +$cÚ + ==ð +nuÎ +) { + +2315 \ +$cÚ + = +Prݖ +:: + `g‘CÚÃùiÚ +(".$this->g‘P“rCÏs¢ame().":: +DATABASE_NAME +, Prݖ:: +CONNECTION_READ +); + +2319 + `fܗch + ( +$bË +-> + `g‘FÜeignKeys +(è +as + +$fk +) { + +2321 iàÐ +$fk +-> + `g‘FÜeignTabËName +(è!ð +$bË +-> + `g‘Name +() ) { + +2322 +$jošTabË + = +$bË +-> + `g‘D©aba£ +()-> + `g‘TabË +( +$fk +-> + `g‘FÜeignTabËName +()); + +2323 +$jošedTabËP“rBužd” + = +$this +-> + `g‘NewP“rBužd” +( +$jošTabË +); + +2324 +$süt + .ð +$this +-> + `addCr™”ŸJoš +( +$fk +, +$bË +, +$jošTabË +, +$jošedTabËP“rBužd” +); + +2329 +$this +-> + `­¶yBehaviÜModif›r +('´eS–eù', +$süt +); + +2331 +$süt + .= " + +2332 \ +$¡mt + = ".$this->ba£P“rCÏs¢ame.":: + `doCouÁ +(\ +$ü™”Ÿ +, \ +$cÚ +); + +2334 ià(\ +$row + = \ +$¡mt +-> + `ãtch +( +PDO +:: +FETCH_NUM +)) { + +2335 \ +$couÁ + = (è\ +$row +[0]; + +2337 \ +$couÁ + = 0; + +2339 \ +$¡mt +-> + `þo£CursÜ +(); + +2340  \ +$couÁ +; + +2342 + } +} + +2348 +´Ùeùed + +funùiÚ + + $addDoS–eùJošAÎExû± +(& +$süt +) + +2350 +$bË + = +$this +-> + `g‘TabË +(); + +2351 +$još_behaviÜ + = +$this +-> + `g‘JošBehaviÜ +(); + +2360 +$fkeys + = +$bË +-> + `g‘FÜeignKeys +(); + +2362 + `fܗch + ( +$fkeys + +as + +$fk + ) { + +2364 +$tblFK + = +$bË +-> + `g‘D©aba£ +()-> + `g‘TabË +( +$fk +-> + `g‘FÜeignTabËName +()); + +2366 +$exþudedTabË + = +$bË +-> + `g‘D©aba£ +()-> + `g‘TabË +( +$fk +-> + `g‘FÜeignTabËName +()); + +2368 +$thisTabËObjeùBužd” + = +$this +-> + `g‘NewObjeùBužd” +( +$bË +); + +2369 +$exþudedTabËObjeùBužd” + = +$this +-> + `g‘NewObjeùBužd” +( +$exþudedTabË +); + +2370 +$exþudedTabËP“rBužd” + = +$this +-> + `g‘NewP“rBužd” +( +$exþudedTabË +); + +2372 +$exþudedCÏssName + = +$exþudedTabËObjeùBužd” +-> + `g‘ObjeùCÏs¢ame +(); + +2375 +$süt + .= " + +2387 +public +  +funùiÚ + +doS–eùJošAÎExû± +".$thisTabËObjeùBužd”->g‘FKPhpNameAffix($fk, $¶u¿Èðçl£)."( +Cr™”Ÿ + \ +$ü™”Ÿ +, \ +$cÚ + = +nuÎ +, \ +$još_behaviÜ + = $join_behavior) + +2389 \ +$ü™”Ÿ + = +þÚe + \$criteria; + +2394 ià(\ +$ü™”Ÿ +-> + `g‘DbName +(è=ð +Prݖ +:: + `g‘DeçuÉDB +()) { + +2395 \ +$ü™”Ÿ +-> + `£tDbName +( +£lf +:: +DATABASE_NAME +); + +2398 ".$this->g‘P“rCÏs¢ame().":: + `addS–eùCÞumns +(\ +$ü™”Ÿ +); + +2399 \ +$¡¬tcÞ2 + = (".$this->g‘P“rCÏs¢ame().":: +NUM_COLUMNS + - ".$this->g‘P“rCÏs¢ame().":: +NUM_LAZY_LOAD_COLUMNS +); + +2401 +$šdex + = 2; + +2402 + `fܗch + ( +$bË +-> + `g‘FÜeignKeys +(è +as + +$subfk +) { + +2405 iàÐ!( +$subfk +-> + `g‘FÜeignTabËName +(è=ð +$bË +-> + `g‘Name +())) { + +2406 +$jošTabË + = +$bË +-> + `g‘D©aba£ +()-> + `g‘TabË +( +$subfk +-> + `g‘FÜeignTabËName +()); + +2407 +$jošTabËP“rBužd” + = +$this +-> + `g‘NewP“rBužd” +( +$jošTabË +); + +2408 +$jošCÏssName + = +$jošTabËP“rBužd” +-> + `g‘ObjeùCÏs¢ame +(); + +2410 ià( +$jošCÏssName + !ð +$exþudedCÏssName +) { + +2411 +$Ãw_šdex + = +$šdex + + 1; + +2412 +$süt + .= " + +2413 ".$jošTabËP“rBužd”->g‘P“rCÏs¢ame().":: + `addS–eùCÞumns +(\ +$ü™”Ÿ +); + +2414 \ +$¡¬tcÞ$Ãw_šdex + = \ +$¡¬tcÞ$šdex + + (".$jošTabËP“rBužd”->g‘P“rCÏs¢ame().":: +NUM_COLUMNS + - ".$jošTabËP“rBužd”->g‘P“rCÏs¢ame().":: +NUM_LAZY_LOAD_COLUMNS +); + +2416 +$šdex + = +$Ãw_šdex +; + +2421 + `fܗch + ( +$bË +-> + `g‘FÜeignKeys +(è +as + +$subfk +) { + +2423 iàÐ +$subfk +-> + `g‘FÜeignTabËName +(è!ð +$bË +-> + `g‘Name +() ) { + +2424 +$jošTabË + = +$bË +-> + `g‘D©aba£ +()-> + `g‘TabË +( +$subfk +-> + `g‘FÜeignTabËName +()); + +2425 +$jošedTabËP“rBužd” + = +$this +-> + `g‘NewP“rBužd” +( +$jošTabË +); + +2426 +$jošCÏssName + = +$jošedTabËP“rBužd” +-> + `g‘ObjeùCÏs¢ame +(); + +2428 ià( +$jošCÏssName + !ð +$exþudedCÏssName +) + +2430 +$süt + .ð +$this +-> + `addCr™”ŸJoš +( +$subfk +, +$bË +, +$jošTabË +, +$jošedTabËP“rBužd” +); + +2436 +$this +-> + `­¶yBehaviÜModif›r +('´eS–eù', +$süt +); + +2438 +$süt + .= " + +2440 \ +$¡mt + = ".$this->ba£P“rCÏs¢am.":: + `doS–eù +(\ +$ü™”Ÿ +, \ +$cÚ +); + +2441 \ +$»suÉs + = + `¬¿y +(); + +2443 \ +$row + = \ +$¡mt +-> + `ãtch +( +PDO +:: +FETCH_NUM +)) { + +2444 \ +$key1 + = ".$this->g‘P“rCÏs¢ame().":: + `g‘Prim¬yKeyHashFromRow +(\ +$row +, 0); + +2445 ià( +nuÎ + !=ð(\ +$obj1 + = ".$this->g‘P“rCÏs¢ame().":: + `g‘In¡ªûFromPoÞ +(\ +$key1 +))) { + +2450 ià( +$bË +-> + `g‘Chžd»nCÞumn +()) { + +2451 +$süt + .= " + +2452 \ +$omCÏss + = ".$this->g‘P“rCÏs¢ame().":: + `g‘OMCÏss +(\ +$row +, 0); + +2453 \ +$þs + = + `sub¡r +('.'.\ +$omCÏss +, + `¡¼pos +('.'.\$omClass, '.') + 1); + +2456 +$süt + .= " + +2457 \ +$þs + = ".$this->g‘P“rCÏs¢ame().":: + `g‘OMCÏss +( +çl£ +); + +2461 +$süt + .= " + +2463 \ +$obj1 +-> + `hyd¿‹ +(\ +$row +); + +2464 ".$this->g‘P“rCÏs¢ame().":: + `addIn¡ªûToPoÞ +(\ +$obj1 +, \ +$key1 +); + +2468 +$šdex + = 1; + +2469 + `fܗch + ( +$bË +-> + `g‘FÜeignKeys +(è +as + +$subfk + ) { + +2471 iàÐ +$subfk +-> + `g‘FÜeignTabËName +(è!ð +$bË +-> + `g‘Name +() ) { + +2473 +$jošTabË + = +$bË +-> + `g‘D©aba£ +()-> + `g‘TabË +( +$subfk +-> + `g‘FÜeignTabËName +()); + +2475 +$jošedTabËObjeùBužd” + = +$this +-> + `g‘NewObjeùBužd” +( +$jošTabË +); + +2476 +$jošedTabËP“rBužd” + = +$this +-> + `g‘NewP“rBužd” +( +$jošTabË +); + +2478 +$jošCÏssName + = +$jošedTabËObjeùBužd” +-> + `g‘ObjeùCÏs¢ame +(); + +2480 +$š‹rçûName + = +$jošCÏssName +; + +2481 ià( +$jošTabË +-> + `g‘IÁ”çû +()) { + +2482 +$š‹rçûName + = +$this +-> + `´efixCÏs¢ame +( +$jošTabË +-> + `g‘IÁ”çû +()); + +2485 ià( +$jošCÏssName + !ð +$exþudedCÏssName +) { + +2487 +$šdex +++; + +2489 +$süt + .= " + +2492 \ +$key$šdex + = ".$jošedTabËP“rBužd”->g‘P“rCÏs¢ame().":: + `g‘Prim¬yKeyHashFromRow +(\ +$row +, \ +$¡¬tcÞ$šdex +); + +2493 ià(\ +$key$šdex + !=ð +nuÎ +) { + +2494 \ +$obj$šdex + = ".$jošedTabËP“rBužd”->g‘P“rCÏs¢ame().":: + `g‘In¡ªûFromPoÞ +(\ +$key$šdex +); + +2495 ià(!\ +$obj$šdex +) { + +2498 ià( +$jošTabË +-> + `g‘Chžd»nCÞumn +()) { + +2499 +$süt + .= " + +2500 \ +$omCÏss + = ".$jošedTabËP“rBužd”->g‘P“rCÏs¢ame().":: + `g‘OMCÏss +(\ +$row +, \ +$¡¬tcÞ$šdex +); + +2501 \ +$þs + = + `sub¡r +('.'.\ +$omCÏss +, + `¡¼pos +('.'.\$omClass, '.') + 1); + +2504 +$süt + .= " + +2505 \ +$þs + = ".$jošedTabËP“rBužd”->g‘P“rCÏs¢ame().":: + `g‘OMCÏss +( +çl£ +); + +2508 +$süt + .= " + +2510 \ +$obj +".$šdex."-> + `hyd¿‹ +(\ +$row +, \ +$¡¬tcÞ$šdex +); + +2511 ".$jošedTabËP“rBužd”->g‘P“rCÏs¢ame().":: + `addIn¡ªûToPoÞ +(\ +$obj$šdex +, \ +$key$šdex +); + +2515 ià( +$subfk +-> + `isLoÿlPrim¬yKey +()) { + +2516 +$süt + .= " + +2517 \ +$obj1 +-> +£t +".$jošedTabËP“rBužd”->g‘ObjeùCÏs¢ame()."(\ +$obj +".$index.");"; + +2519 +$süt + .= " + +2520 \ +$obj +".$šdex."-> +add +".$jošedTabËObjeùBužd”->g‘RefFKPhpNameAffix($subfk, $¶u¿Èðçl£)."(\ +$obj1 +);"; + +2522 +$süt + .= " + +2529 +$süt + .= " + +2530 \ +$»suÉs +[] = \ +$obj1 +; + +2532 \ +$¡mt +-> + `þo£CursÜ +(); + +2533  \ +$»suÉs +; + +2538 + } +} + +2544 +´Ùeùed + +funùiÚ + + $addDoCouÁJošAÎExû± +(& +$süt +) + +2546 +$bË + = +$this +-> + `g‘TabË +(); + +2547 +$još_behaviÜ + = +$this +-> + `g‘JošBehaviÜ +(); + +2549 +$fkeys + = +$bË +-> + `g‘FÜeignKeys +(); + +2551 + `fܗch + ( +$fkeys + +as + +$fk + ) { + +2553 +$tblFK + = +$bË +-> + `g‘D©aba£ +()-> + `g‘TabË +( +$fk +-> + `g‘FÜeignTabËName +()); + +2555 +$exþudedTabË + = +$bË +-> + `g‘D©aba£ +()-> + `g‘TabË +( +$fk +-> + `g‘FÜeignTabËName +()); + +2557 +$thisTabËObjeùBužd” + = +$this +-> + `g‘NewObjeùBužd” +( +$bË +); + +2558 +$exþudedTabËObjeùBužd” + = +$this +-> + `g‘NewObjeùBužd” +( +$exþudedTabË +); + +2559 +$exþudedTabËP“rBužd” + = +$this +-> + `g‘NewP“rBužd” +( +$exþudedTabË +); + +2561 +$exþudedCÏssName + = +$exþudedTabËObjeùBužd” +-> + `g‘ObjeùCÏs¢ame +(); + +2563 +$süt + .= " + +2574 +public +  +funùiÚ + +doCouÁJošAÎExû± +".$thisTabËObjeùBužd”->g‘FKPhpNameAffix($fk, $¶u¿Èðçl£)."( +Cr™”Ÿ + \ +$ü™”Ÿ +, \ +$di¡šù + = +çl£ +, +PrݖPDO + \ +$cÚ + = +nuÎ +, \ +$još_behaviÜ + = $join_behavior) + +2577 \ +$ü™”Ÿ + = +þÚe + \$criteria; + +2582 \ +$ü™”Ÿ +-> + `£tPrim¬yTabËName +(".$this->g‘P“rCÏs¢ame().":: +TABLE_NAME +); + +2584 ià(\ +$di¡šù + && ! + `š_¬¿y +( +Cr™”Ÿ +:: +DISTINCT +, \ +$ü™”Ÿ +-> + `g‘S–eùModif›rs +())) { + +2585 \ +$ü™”Ÿ +-> + `£tDi¡šù +(); + +2588 ià(!\ +$ü™”Ÿ +-> + `hasS–eùCÏu£ +()) { + +2589 ".$this->g‘P“rCÏs¢ame().":: + `addS–eùCÞumns +(\ +$ü™”Ÿ +); + +2592 \ +$ü™”Ÿ +-> + `þ—rOrd”ByCÞumns +(); + +2595 \ +$ü™”Ÿ +-> + `£tDbName +( +£lf +:: +DATABASE_NAME +); + +2597 ià(\ +$cÚ + ==ð +nuÎ +) { + +2598 \ +$cÚ + = +Prݖ +:: + `g‘CÚÃùiÚ +(".$this->g‘P“rCÏs¢ame().":: +DATABASE_NAME +, Prݖ:: +CONNECTION_READ +); + +2602 + `fܗch + ( +$bË +-> + `g‘FÜeignKeys +(è +as + +$subfk +) { + +2604 iàÐ +$subfk +-> + `g‘FÜeignTabËName +(è!ð +$bË +-> + `g‘Name +() ) { + +2605 +$jošTabË + = +$bË +-> + `g‘D©aba£ +()-> + `g‘TabË +( +$subfk +-> + `g‘FÜeignTabËName +()); + +2606 +$jošedTabËP“rBužd” + = +$this +-> + `g‘NewP“rBužd” +( +$jošTabË +); + +2607 +$jošCÏssName + = +$jošedTabËP“rBužd” +-> + `g‘ObjeùCÏs¢ame +(); + +2609 ià( +$jošCÏssName + !ð +$exþudedCÏssName +) + +2611 +$süt + .ð +$this +-> + `addCr™”ŸJoš +( +$subfk +, +$bË +, +$jošTabË +, +$jošedTabËP“rBužd” +); + +2617 +$this +-> + `­¶yBehaviÜModif›r +('´eS–eù', +$süt +); + +2619 +$süt + .= " + +2620 \ +$¡mt + = ".$this->ba£P“rCÏs¢ame.":: + `doCouÁ +(\ +$ü™”Ÿ +, \ +$cÚ +); + +2622 ià(\ +$row + = \ +$¡mt +-> + `ãtch +( +PDO +:: +FETCH_NUM +)) { + +2623 \ +$couÁ + = (è\ +$row +[0]; + +2625 \ +$couÁ + = 0; + +2627 \ +$¡mt +-> + `þo£CursÜ +(); + +2628  \ +$couÁ +; + +2633 + } +} + +2640 +´Ùeùed + +funùiÚ + + $g‘JošBehaviÜ +() + +2642  +$this +-> + `g‘G’”©ÜCÚfig +()-> + `g‘BuždPrݔty +('useLeftJoinsInDoJoinMethods') ? 'Criteria::LEFT_JOIN' : 'Criteria::INNER_JOIN'; + +2643 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5TableMapBuilder.php + +1 + `g‘TabË +()-> + `g‘PhpName +() . 'TableMap'; + +49 + } +} + +55 +´Ùeùed + +funùiÚ + + $addInþudes +(& +$süt +) + +57 + } +} + +63 +´Ùeùed + +funùiÚ + + $addCÏssO³n +(& +$süt +) + +65 +$bË + = +$this +-> + `g‘TabË +(); + +66 +$süt + .= " + +89 +þass + ".$this->g‘CÏs¢ame()." +ex‹nds + +TabËM­ + { + +98 +´Ùeùed + +funùiÚ + + `addCÏssBody +(& +$süt +) + +100 +$this +-> + `addCÚ¡ªts +( +$süt +); + +101 +$this +-> + `addA‰ribu‹s +( +$süt +); + +102 +$this +-> + `addIn™Ÿlize +( +$süt +); + +103 +$this +-> + `addBuždR–©iÚs +( +$süt +); + +104 +$this +-> + `addG‘BehaviÜs +( +$süt +); + +111 +´Ùeùed + +funùiÚ + + `addCÚ¡ªts +(& +$süt +) + +113 +$süt + .= " + +117 cÚ¡ +CLASS_NAME + = '".$this->getClasspath()."'; + +125 +´Ùeùed + +funùiÚ + + `addA‰ribu‹s +(& +$süt +) + +133 +´Ùeùed + +funùiÚ + + `addCÏssClo£ +(& +$süt +) + +135 +$süt + .= " + +138 +$this +-> + `­¶yBehaviÜModif›r +('bËM­Fž‹r', +$süt +, ""); + +139 + } +} + +145 +´Ùeùed + +funùiÚ + + $addIn™Ÿlize +(& +$süt +) + +148 +$bË + = +$this +-> + `g‘TabË +(); + +149 +$¶©fÜm + = +$this +-> + `g‘PÏtfÜm +(); + +150 +$ddlBužd” + = +$this +-> + `g‘DDLBužd” +(); + +152 +$süt + .= " + +160 +public + +funùiÚ + + `š™Ÿlize +() + +163 \ +$this +-> + `£tName +('".$table->getName()."'); + +164 \ +$this +-> + `£tPhpName +('".$table->getPhpName()."'); + +165 \ +$this +-> + `£tCÏs¢ame +('" . $this->getObjectClassname() . "'); + +166 \ +$this +-> + `£tPackage +('" .…arent::getPackage() . "');"; + +167 ià( +$bË +-> + `g‘IdM‘hod +() == "native") { + +168 +$süt + .= " + +169 \ +$this +-> + `£tU£IdG’”©Ü +( +Œue +);"; + +171 +$süt + .= " + +172 \ +$this +-> + `£tU£IdG’”©Ü +( +çl£ +);"; + +175 ià( +$bË +-> + `g‘IdM‘hodP¬am‘”s +()) { + +176 +$·¿ms + = +$bË +-> + `g‘IdM‘hodP¬am‘”s +(); + +177 +$imp + = +$·¿ms +[0]; + +178 +$süt + .= " + +179 \ +$this +-> + `£tPrim¬yKeyM‘hodInfo +('".$imp->getValue()."');"; + +180 } + `–£if + ( +$bË +-> + `g‘IdM‘hod +(è=ð +IDM‘hod +:: +NATIVE + && ( +$¶©fÜm +-> + `g‘N©iveIdM‘hod +(è=ð +PÏtfÜm +:: +SEQUENCE + || $¶©fÜm->g‘N©iveIdM‘hod(è=ðPÏtfÜm:: +SERIAL +)) { + +181 +$süt + .= " + +182 \ +$this +-> + `£tPrim¬yKeyM‘hodInfo +('".$this->prefixTablename($ddlBuilder->getSequenceName())."');"; + +186 +$süt + .= " + +188 + `fܗch + ( +$bË +-> + `g‘CÞumns +(è +as + +$cÞ +) { + +189 +$cup += + `¡¹ouµ” +( +$cÞ +-> + `g‘Name +()); + +190 +$cfc += +$cÞ +-> + `g‘PhpName +(); + +191 ià(! +$cÞ +-> + `g‘Size +()) { + +192 +$size + = "null"; + +194 +$size + = +$cÞ +-> + `g‘Size +(); + +196 +$deçuÉ + = +$cÞ +-> + `g‘DeçuÉV®ueSŒšg +(); + +197 ià( +$cÞ +-> + `isPrim¬yKey +()) { + +198 ià( +$cÞ +-> + `isFÜeignKey +()) { + +199 + `fܗch + ( +$cÞ +-> + `g‘FÜeignKeys +(è +as + +$fk +) { + +200 +$süt + .= " + +201 \ +$this +-> + `addFÜeignPrim¬yKey +('$cup', '$cfc', '".$cÞ->g‘Ty³()."' , '".$fk->g‘FÜeignTabËName()."', '".¡¹ouµ”($fk->g‘M­³dFÜeignCÞumn($cÞ->g‘Name()))."', ".($cÞ->isNÙNuÎ(è? 'Œue' : 'çl£').", ".$size.", +$deçuÉ +);"; + +204 +$süt + .= " + +205 \ +$this +-> + `addPrim¬yKey +('$cup', '$cfc', '".$cÞ->g‘Ty³()."', ".v¬_expÜt($cÞ->isNÙNuÎ(),rue).", ".$size.", +$deçuÉ +);"; + +208 ià( +$cÞ +-> + `isFÜeignKey +()) { + +209 + `fܗch + ( +$cÞ +-> + `g‘FÜeignKeys +(è +as + +$fk +) { + +210 +$süt + .= " + +211 \ +$this +-> + `addFÜeignKey +('$cup', '$cfc', '".$cÞ->g‘Ty³()."', '".$fk->g‘FÜeignTabËName()."', '".¡¹ouµ”($fk->g‘M­³dFÜeignCÞumn($cÞ->g‘Name()))."', ".($cÞ->isNÙNuÎ(è? 'Œue' : 'çl£').", ".$size.", +$deçuÉ +);"; + +214 +$süt + .= " + +215 \ +$this +-> + `addCÞumn +('$cup', '$cfc', '".$cÞ->g‘Ty³()."', ".v¬_expÜt($cÞ->isNÙNuÎ(),rue).", ".$size.", +$deçuÉ +);"; + +221 +$süt + .= " + +223 + `fܗch + ( +$bË +-> + `g‘V®id©Üs +(è +as + +$v® +) { + +224 +$cÞ + = +$v® +-> + `g‘CÞumn +(); + +225 +$cup + = + `¡¹ouµ” +( +$cÞ +-> + `g‘Name +()); + +226 + `fܗch + ( +$v® +-> + `g‘RuËs +(è +as + +$ruË +) { + +227 ià( +$v® +-> + `g‘T¿n¦©e +(è!=ð +V®id©Ü +:: +TRANSLATE_NONE +) { + +228 +$süt + .= " + +229 \ +$this +-> + `addV®id©Ü +('$cup', '".$rule->getName()."', '".$rule->getClass()."', '".str_replace("'", "\'", $rule->getValue())."', ".$val->getTranslate()."('".str_replace("'", "\'", $rule->getMessage())."'));"; + +231 +$süt + .= " + +232 \ +$this +-> + `addV®id©Ü +('$cup', '".$rule->getName()."', '".$rule->getClass()."', '".str_replace("'", "\'", $rule->getValue())."', '".str_replace("'", "\'", $rule->getMessage())."');"; + +237 +$süt + .= " + +241 + } +} + +247 +´Ùeùed + +funùiÚ + + $addBuždR–©iÚs +(& +$süt +) + +249 +$süt + .= " + +253 +public + +funùiÚ + + `buždR–©iÚs +() + +255 + `fܗch + ( +$this +-> + `g‘TabË +()-> + `g‘FÜeignKeys +(è +as + +$fkey +) + +257 +$cÞumnM­pšg + = 'array('; + +258 + `fܗch + ( +$fkey +-> + `g‘LoÿlFÜeignM­pšg +(è +as + +$key + => +$v®ue +) + +260 +$cÞumnM­pšg + .= "'$key' => '$value', "; + +262 +$cÞumnM­pšg + .= ')'; + +263 +$ÚD–‘e + = +$fkey +-> + `hasOnD–‘e +(è? "'" . $fkey-> + `g‘OnD–‘e +() . "'" : 'null'; + +264 +$ÚUpd©e + = +$fkey +-> + `hasOnUpd©e +(è? "'" . $fkey-> + `g‘OnUpd©e +() . "'" : 'null'; + +265 +$süt + .= " + +266 \ +$this +-> + `addR–©iÚ +('" . $this->g‘FKPhpNameAffix($fkeyè. "', '" . $fkey->g‘FÜeignTabË()->g‘PhpName(è. "', +R–©iÚM­ +:: +MANY_TO_ONE +, +$cÞumnM­pšg +, +$ÚD–‘e +, +$ÚUpd©e +);"; + +268 + `fܗch + ( +$this +-> + `g‘TabË +()-> + `g‘Re㼔s +(è +as + +$fkey +) + +270 +$cÞumnM­pšg + = 'array('; + +271 + `fܗch + ( +$fkey +-> + `g‘FÜeignLoÿlM­pšg +(è +as + +$key + => +$v®ue +) + +273 +$cÞumnM­pšg + .= "'$key' => '$value', "; + +275 +$cÞumnM­pšg + .= ')'; + +276 +$ÚD–‘e + = +$fkey +-> + `hasOnD–‘e +(è? "'" . $fkey-> + `g‘OnD–‘e +() . "'" : 'null'; + +277 +$ÚUpd©e + = +$fkey +-> + `hasOnUpd©e +(è? "'" . $fkey-> + `g‘OnUpd©e +() . "'" : 'null'; + +278 +$süt + .= " + +279 \ +$this +-> + `addR–©iÚ +('" . $this->g‘RefFKPhpNameAffix($fkeyè. "', '" . $fkey->g‘TabË()->g‘PhpName(è. "', +R–©iÚM­ +:: +ONE_TO_ +" . ($fkey->isLoÿlPrim¬yKey(è? " +ONE +" : " +MANY +"è.", +$cÞumnM­pšg +, +$ÚD–‘e +, +$ÚUpd©e +);"; + +281 +$süt + .= " + +284 + } +} + +290 +´Ùeùed + +funùiÚ + + $addG‘BehaviÜs +(& +$süt +) + +292 ià( +$behaviÜs + = +$this +-> + `g‘TabË +()-> + `g‘BehaviÜs +()) + +294 +$süt + .= " + +301 +public + +funùiÚ + + `g‘BehaviÜs +() + +303  + `¬¿y +("; + +304 + `fܗch + ( +$behaviÜs + +as + +$behaviÜ +) + +306 +$süt + .= " + +307 '{$behaviÜ->g‘Name()}' => + `¬¿y +("; + +308 + `fܗch + ( +$behaviÜ +-> + `g‘P¬am‘”s +(è +as + +$key + => +$v®ue +) + +310 +$süt + .= "'$key' => '$value', "; + +312 +$süt + .= "),"; + +314 +$süt + .= " + +319 + } +} + +326 +public + +funùiÚ + + $hasBehaviÜModif›r +( +$hookName +) + +328  +·»Á +:: + `hasBehaviÜModif›r +( +$hookName +, 'TableMapBuilderModifier'); + +329 + } +} + +336 +public + +funùiÚ + +­¶yBehaviÜModif›r +( +$hookName +, & +$süt +, +$b + = " ") + +338  +·»Á +:: +­¶yBehaviÜModif›r +( +$hookName +, 'TabËM­Bužd”Modif›r', +$süt +, +$b +); + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/DDLBuilder.php + +1 + `addTabË +( +$süt +); + +47 +$this +-> + `addIndiûs +( +$süt +); + +48 +$this +-> + `addFÜeignKeys +( +$süt +); + +49  +$süt +; + +60 +public + +funùiÚ + + $g‘Sequ’ûName +() + +62 +$bË + = +$this +-> + `g‘TabË +(); + +63  +$lÚgNamesM­ + = + `¬¿y +(); + +64 +$»suÉ + = +nuÎ +; + +65 ià( +$bË +-> + `g‘IdM‘hod +(è=ð +IDM‘hod +:: +NATIVE +) { + +66 +$idM‘hodP¬ams + = +$bË +-> + `g‘IdM‘hodP¬am‘”s +(); + +67 +$maxId’tif›rL’gth + = +$bË +-> + `g‘D©aba£ +()-> + `g‘PÏtfÜm +()-> + `g‘MaxCÞumnNameL’gth +(); + +68 ià( + `em±y +( +$idM‘hodP¬ams +)) { + +69 ià( + `¡¾’ +( +$bË +-> + `g‘Name +(è. "_SEQ"è> +$maxId’tif›rL’gth +) { + +70 ià(! + `is£t +( +$lÚgNamesM­ +[ +$bË +-> + `g‘Name +()])) { + +71 +$lÚgNamesM­ +[ +$bË +-> + `g‘Name +()] = + `¡rv® +( + `couÁ +($longNamesMap) + 1); + +73 +$»suÉ + = + `sub¡r +( +$bË +-> + `g‘Name +(), 0, +$maxId’tif›rL’gth + - + `¡¾’ +("_SEQ_" . +$lÚgNamesM­ +[$table->getName()])) . "_SEQ_" . $longNamesMap[$table->getName()]; + +76 +$»suÉ + = + `sub¡r +( +$bË +-> + `g‘Name +(), 0, +$maxId’tif›rL’gth + -4) . "_SEQ"; + +79 +$»suÉ + = + `sub¡r +( +$idM‘hodP¬ams +[0]-> + `g‘V®ue +(), 0, +$maxId’tif›rL’gth +); + +82  +$»suÉ +; + +83 + } +} + +89 +public + +funùiÚ + + $g‘CÞumnDDL +( +CÞumn + +$cÞ +) + +91 +$¶©fÜm + = +$this +-> + `g‘PÏtfÜm +(); + +92 +$domaš + = +$cÞ +-> + `g‘Domaš +(); + +94 +$sb + = ""; + +95 +$sb + .ð +$this +-> + `quÙeId’tif›r +( +$cÞ +-> + `g‘Name +()) . " "; + +96 +$sb + .ð +$domaš +-> + `g‘SqlTy³ +(); + +97 ià( +$¶©fÜm +-> + `hasSize +( +$domaš +-> + `g‘SqlTy³ +())) { + +98 +$sb + .ð +$domaš +-> + `´štSize +(); + +100 +$sb + .= " "; + +101 +$sb + .ð +$cÞ +-> + `g‘DeçuÉS‘tšg +() . " "; + +102 +$sb + .ð +$cÞ +-> + `g‘NÙNuÎSŒšg +() . " "; + +103 +$sb + .ð +$cÞ +-> + `g‘AutoInüem’tSŒšg +(); + +105  + `Œim +( +$sb +); + +106 + } +} + +114 +public + +funùiÚ + +g‘CÞumnLi¡ +( +$cÞumns +, +$d–im +=',') + +116 +$li¡ + = +¬¿y +(); + +117 +fܗch + ( +$cÞumns + +as + +$cÞ +) { + +118 ià( +$cÞ + +š¡ªûof + + gCÞumn +) { + +119 + g$cÞ + = +$cÞ +-> +g‘Name +(); + +121 + g$li¡ +[] = +$this +-> +quÙeId’tif›r +( +$cÞ +); + +123  +im¶ode +( +$d–im +, +$li¡ +); + +131 +public +  +funùiÚ + + $g‘D©aba£S¹DDL +() + +134 + } +} + +141 +public +  +funùiÚ + + $g‘D©aba£EndDDL +() + +144 + } +} + +154 +public +  +funùiÚ + + $»£t +() + +157 + } +} + +163 +ab¡¿ù + +´Ùeùed + +funùiÚ + +addTabË +(& +$süt +); + +169 +ab¡¿ù + +´Ùeùed + +funùiÚ + +addIndiûs +(& +$süt +); + +175 +ab¡¿ù + +´Ùeùed + +funùiÚ + +addFÜeignKeys +(& +$süt +); + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/DataSQLBuilder.php + +1 + `g‘PÏtfÜm +(); + +93 +$bË + = +$this +-> + `g‘TabË +(); + +95 +$sql + .ð"INSERT INTO ". +$this +-> + `quÙeId’tif›r +($this-> + `´efixTabËÇme +($this-> + `g‘TabË +()-> + `g‘Name +()))." ("; + +98 +$cÞNames + = + `¬¿y +(); + +99 + `fܗch + ( +$row +-> + `g‘CÞumnV®ues +(è +as + +$cÞV®ue +) { + +100 +$cÞNames +[] = +$this +-> + `quÙeId’tif›r +( +$cÞV®ue +-> + `g‘CÞumn +()-> + `g‘Name +()); + +103 +$sql + .ð + `im¶ode +(',', +$cÞNames +); + +105 +$sql + .= ") VALUES ("; + +107 +$cÞV®s + = + `¬¿y +(); + +108 + `fܗch + ( +$row +-> + `g‘CÞumnV®ues +(è +as + +$cÞV®ue +) { + +109 +$cÞV®s +[] = +$this +-> + `g‘CÞumnV®ueSql +( +$cÞV®ue +); + +112 +$sql + .ð + `im¶ode +(',', +$cÞV®s +); + +113 +$sql + .= "); + +116  +$sql +; + +117 + } +} + +124 +´Ùeùed + +funùiÚ + + $g‘CÞumnV®ueSql +( +CÞumnV®ue + +$cÞV®ue +) + +126 +$cÞumn + = +$cÞV®ue +-> + `g‘CÞumn +(); + +127 +$m‘hod + = 'g‘' . +$cÞumn +-> + `g‘PhpN©ive +() . 'Sql'; + +128  +$this +-> + `$m‘hod +( +$cÞV®ue +-> + `g‘V®ue +()); + +129 + } +} + +139 +´Ùeùed + +funùiÚ + + $g‘BoޗnSql +( +$v®ue +) + +141  (è +$v®ue +; + +142 + } +} + +150 +´Ùeùed + +funùiÚ + + $g‘BlobSql +( +$blob +) + +153 ià( + `is_objeù +( +$blob +)) { + +154  +$this +-> + `g‘PÏtfÜm +()-> + `quÙe +( +$blob +-> + `__toSŒšg +()); + +156  +$this +-> + `g‘PÏtfÜm +()-> + `quÙe +( +$blob +); + +158 + } +} + +165 +´Ùeùed + +funùiÚ + + $g‘ClobSql +( +$þob +) + +168 ià( + `is_objeù +( +$þob +)) { + +169  +$this +-> + `g‘PÏtfÜm +()-> + `quÙe +( +$þob +-> + `__toSŒšg +()); + +171  +$this +-> + `g‘PÏtfÜm +()-> + `quÙe +( +$þob +); + +173 + } +} + +180 +´Ùeùed + +funùiÚ + + $g‘D©eSql +( +$v®ue +) + +182  "'" . + `d©e +('Y-m-d', + `¡¹Ùime +( +$v®ue +)) . "'"; + +183 + } +} + +190 +´Ùeùed + +funùiÚ + + $g‘Decim®Sql +( +$v®ue +) + +192  (è +$v®ue +; + +193 + } +} + +200 +´Ùeùed + +funùiÚ + + $g‘DoubËSql +( +$v®ue +) + +202  (è +$v®ue +; + +203 + } +} + +210 +´Ùeùed + +funùiÚ + + $g‘FlßtSql +( +$v®ue +) + +212  (è +$v®ue +; + +213 + } +} + +220 +´Ùeùed + +funùiÚ + + $g‘IÁSql +( +$v®ue +) + +222  (è +$v®ue +; + +223 + } +} + +229 +´Ùeùed + +funùiÚ + + $g‘NuÎSql +() + +232 + } +} + +239 +´Ùeùed + +funùiÚ + + $g‘SŒšgSql +( +$v®ue +) + +241  +$this +-> + `g‘PÏtfÜm +()-> + `quÙe +( +$v®ue +); + +242 + } +} + +249 +´Ùeùed + +funùiÚ + + $g‘TimeSql +( +$·¿mIndex +, +$v®ue +) + +251  "'" . + `d©e +('H:i:s', + `¡¹Ùime +( +$v®ue +)) . "'"; + +252 + } +} + +259 +funùiÚ + + $g‘Time¡ampSql +( +$v®ue +) + +261  "'" . + `d©e +('Y-m-d H:i:s', + `¡¹Ùime +( +$v®ue +)) . "'"; + +262 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mssql/MssqlDDLBuilder.php + +1 + `g‘TabË +(); + +43 +$¶©fÜm + = +$this +-> + `g‘PÏtfÜm +(); + +45 + `fܗch + ( +$bË +-> + `g‘FÜeignKeys +(è +as + +$fk +) { + +46 +$süt + .= " + +47 +IF + + `EXISTS + ( +SELECT + 1 +FROM + +sysobjeùs + +WHERE + +ty³ + ='RI' +AND + +Çme +='".$fk->getName()."') + +48 +ALTER + +TABLE + ".$this->quÙeId’tif›r($this->´efixTabËÇme($bË->g‘Name()))." +DROP + +CONSTRAINT + ".$this->quoteIdentifier($fk->getName())."; + +53 +£lf +:: +$drÝCouÁ +++; + +55 +$süt + .= " + +56 +IF + + `EXISTS + ( +SELECT + 1 +FROM + +sysobjeùs + +WHERE + +ty³ + = 'U' +AND + +Çme + = '".$this->prefixTablename($table->getName())."') + +57 +BEGIN + + +58 +DECLARE + @ +»áabË_ +".£lf::$drÝCouÁ." + `nv¬ch¬ +(60), @ +cÚ¡¿šŠame_ +".self::$dropCount."‚varchar(60) + +59 +DECLARE + +»fcursÜ + +CURSOR + +FOR + + +60 +£Ëù + +»áabËs +. +Çme + +bËÇme +, +cÚs +.Çm +cÚ¡¿šŠame + + +61 +äom + +sysobjeùs + +bËs +, + +62 +sysobjeùs + +»áabËs +, + +63 +sysobjeùs + +cÚs +, + +64 +sy¤eã»nûs + +»f + + +65 +wh”e + +bËs +. +id + = +»f +. +rkeyid + + +66 +ªd + +cÚs +. +id + = +»f +. +cÚ¡id + + +67 +ªd + +»áabËs +. +id + = +»f +. +fkeyid + + +68 +ªd + +bËs +. +Çme + = '".$this->prefixTablename($table->getName())."' + +69 +OPEN + +»fcursÜ + + +70 +FETCH + +NEXT + +äom + +»fcursÜ + +što + @ +»áabË_ +".£lf::$drÝCouÁ.", @ +cÚ¡¿šŠame_ +".self::$dropCount." + +71 @@ +FETCH_STATUS + = 0 + +72 +BEGIN + + +73 + `exec + ('®‹¸bË '+@ +»áabË_ +".£lf::$drÝCouÁ."+' drÝ cÚ¡¿šˆ'+@ +cÚ¡¿šŠame_ +".self::$dropCount.") + +74 +FETCH + +NEXT + +äom + +»fcursÜ + +što + @ +»áabË_ +".£lf::$drÝCouÁ.", @ +cÚ¡¿šŠame_ +".self::$dropCount." + +75 +END + + +76 +CLOSE + +»fcursÜ + + +77 +DEALLOCATE + +»fcursÜ + + +78 +DROP + +TABLE + ".$this->quoteIdentifier($this->prefixTablename($table->getName()))." + +79 +END + + +86 +´Ùeùed + +funùiÚ + + $addTabË +(& +$süt +) + +88 +$bË + = +$this +-> + `g‘TabË +(); + +89 +$¶©fÜm + = +$this +-> + `g‘PÏtfÜm +(); + +91 +$süt + .= " + +98 +$this +-> + `addDrÝS‹m’ts +( +$süt +); + +100 +$süt + .= " + +102 +CREATE + +TABLE + ".$this->quoteIdentifier($this->prefixTablename($table->getName()))." + +106 +$lšes + = + `¬¿y +(); + +108 + `fܗch + ( +$bË +-> + `g‘CÞumns +(è +as + +$cÞ +) { + +109 +$lšes +[] = +$this +-> + `g‘CÞumnDDL +( +$cÞ +); + +112 ià( +$bË +-> + `hasPrim¬yKey +()) { + +113 +$lšes +[] = "CONSTRAINT ". +$this +-> + `quÙeId’tif›r +( +$bË +-> + `g‘Name +()."_PK"è. " PRIMARY KEY (".$this-> + `g‘CÞumnLi¡ +($bË-> + `g‘Prim¬yKey +()).")"; + +116 + `fܗch + ( +$bË +-> + `g‘Uniûs +(è +as + +$unique + ) { + +117 +$lšes +[] = "UNIQUE (". +$this +-> + `g‘CÞumnLi¡ +( +$unique +-> + `g‘CÞumns +()).")"; + +120 +$£p + = ", + +122 +$süt + .ð + `im¶ode +( +$£p +, +$lšes +); + +123 +$süt + .= " + +126 + } +} + +132 +´Ùeùed + +funùiÚ + + $addIndiûs +(& +$süt +) + +134 +$bË + = +$this +-> + `g‘TabË +(); + +135 +$¶©fÜm + = +$this +-> + `g‘PÏtfÜm +(); + +137 + `fܗch + ( +$bË +-> + `g‘Indiûs +(è +as + +$šdex +) { + +138 +$süt + .= " + +139 +CREATE + "; + +140 ià( +$šdex +-> + `g‘IsUnique +()) { + +141 +$süt + .= "UNIQUE"; + +143 +$süt + .ð"INDEX ". +$this +-> + `quÙeId’tif›r +( +$šdex +-> + `g‘Name +())." ON ".$this->quÙeId’tif›r($this-> + `´efixTabËÇme +( +$bË +->g‘Name()))." (".$this-> + `g‘CÞumnLi¡ +($šdex-> + `g‘CÞumns +())."); + +146 + } +} + +152 +´Ùeùed + +funùiÚ + + $addFÜeignKeys +(& +$süt +) + +154 +$bË + = +$this +-> + `g‘TabË +(); + +155 +$¶©fÜm + = +$this +-> + `g‘PÏtfÜm +(); + +157 + `fܗch + ( +$bË +-> + `g‘FÜeignKeys +(è +as + +$fk +) { + +158 +$süt + .= " + +159 +BEGIN + + +160 +ALTER + +TABLE + ".$this->quÙeId’tif›r($this->´efixTabËÇme($bË->g‘Name()))." +ADD + +CONSTRAINT + ".$this->quÙeId’tif›r($fk->g‘Name())." +FOREIGN + + `KEY + (".$this->g‘CÞumnLi¡($fk->g‘LoÿlCÞumns()è."è +REFERENCES + ".$this->quoteIdentifier($this->prefixTablename($fk->getForeignTableName()))." (".$this->getColumnList($fk->getForeignColumns()).")"; + +161 ià( +$fk +-> + `hasOnUpd©e +()) { + +162 ià( +$fk +-> + `g‘OnUpd©e +(è=ð +FÜeignKey +:: +SETNULL +) { + +164 +$this +-> + `w¬n +("MSSQL dÛ¢'ˆsuµÜˆth'SET NULL' o±iÚ fÜ ON UPDATE (ignܚg fÜ ".$this-> + `g‘CÞumnLi¡ +( +$fk +-> + `g‘LoÿlCÞumns +())." fk)."); + +166 +$süt + .ð" ON UPDATE ". +$fk +-> + `g‘OnUpd©e +(); + +170 ià( +$fk +-> + `hasOnD–‘e +()) { + +171 ià( +$fk +-> + `g‘OnD–‘e +(è=ð +FÜeignKey +:: +SETNULL +) { + +173 +$this +-> + `w¬n +("MSSQL dÛ¢'ˆsuµÜˆth'SET NULL' o±iÚ fÜ ON DELETE (ignܚg fÜ ".$this-> + `g‘CÞumnLi¡ +( +$fk +-> + `g‘LoÿlCÞumns +())." fk)."); + +175 +$süt + .ð" ON DELETE ". +$fk +-> + `g‘OnD–‘e +(); + +178 +$süt + .= " + +179 +END + + +183 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mssql/MssqlDataSQLBuilder.php + +1 + `__toSŒšg +(); + +44 +$d©a + = + `uÅack +("H*hex", +$blob +); + +45  '0x'. +$d©a +['hex']; + +48 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mysql/MysqlDDLBuilder.php + +1 = 4.1.x + +43 +SET + +FOREIGN_KEY_CHECKS + = 0; + +45  +$ddl +; + +52 +public +  +funùiÚ + + $g‘D©aba£EndDDL +() + +54 +$ddl + = " + +55 #Thi  +»¡Ües + +the + +fkey + +checks +, +aᔠ+ +havšg + +un£t + +them + +—¾›r + + +56 +SET + +FOREIGN_KEY_CHECKS + = 1; + +58  +$ddl +; + +59 + } +} + +66 +´Ùeùed + +funùiÚ + + $addDrÝS‹m’ts +(& +$süt +) + +68 +$süt + .= " + +69 +DROP + +TABLE + +IF + +EXISTS + ".$this->quoteIdentifier($this->prefixTablename($this->getTable()->getName()))."; + +71 + } +} + +81 +public + +funùiÚ + + $bužd +() + +83 +$süt + = ""; + +84 +$this +-> + `addTabË +( +$süt +); + +85  +$süt +; + +86 + } +} + +92 +´Ùeùed + +funùiÚ + + $addTabË +(& +$süt +) + +94 +$bË + = +$this +-> + `g‘TabË +(); + +95 +$¶©fÜm + = +$this +-> + `g‘PÏtfÜm +(); + +97 +$süt + .= " + +103 +$this +-> + `addDrÝS‹m’ts +( +$süt +); + +105 +$süt + .= " + +107 +CREATE + +TABLE + ".$this->quoteIdentifier($this->prefixTablename($table->getName()))." + +111 +$lšes + = + `¬¿y +(); + +113 +$d©aba£Ty³ + = +$this +-> + `g‘PÏtfÜm +()-> + `g‘D©aba£Ty³ +(); + +115 + `fܗch + ( +$bË +-> + `g‘CÞumns +(è +as + +$cÞ +) { + +116 +$’Œy + = +$this +-> + `g‘CÞumnDDL +( +$cÞ +); + +117 +$cޚfo + = +$cÞ +-> + `g‘V’dÜInfoFÜTy³ +( +$d©aba£Ty³ +); + +118 iàÐ +$cޚfo +-> + `hasP¬am‘” +('Charset') ) { + +119 +$’Œy + .ð' CHARACTER SET '. +$¶©fÜm +-> + `quÙe +( +$cޚfo +-> + `g‘P¬am‹r +('Charset')); + +121 iàÐ +$cޚfo +-> + `hasP¬am‘” +('Collate') ) { + +122 +$’Œy + .ð' COLLATE '. +$¶©fÜm +-> + `quÙe +( +$cޚfo +-> + `g‘P¬am‹r +('Collate')); + +124 ià( +$cÞ +-> + `g‘DesütiÚ +()) { + +125 +$’Œy + .ð" COMMENT ". +$¶©fÜm +-> + `quÙe +( +$cÞ +-> + `g‘DesütiÚ +()); + +127 +$lšes +[] = +$’Œy +; + +130 ià( +$bË +-> + `hasPrim¬yKey +()) { + +131 +$lšes +[] = "PRIMARY KEY (". +$this +-> + `g‘CÞumnLi¡ +( +$bË +-> + `g‘Prim¬yKey +()).")"; + +134 +$this +-> + `addIndiûsLšes +( +$lšes +); + +135 +$this +-> + `addFÜeignKeysLšes +( +$lšes +); + +137 +$£p + = ", + +139 +$süt + .ð + `im¶ode +( +$£p +, +$lšes +); + +141 +$süt + .= " + +144 +$mysqlTabËTy³ + = +$this +-> + `g‘BuždPrݔty +("mysqlTableType"); + +145 ià(! +$mysqlTabËTy³ +) { + +146 +$v’dÜS³cific + = +$bË +-> + `g‘V’dÜInfoFÜTy³ +( +$this +-> + `g‘PÏtfÜm +()-> + `g‘D©aba£Ty³ +()); + +147 ià( +$v’dÜS³cific +-> + `hasP¬am‘” +('Type')) { + +148 +$mysqlTabËTy³ + = +$v’dÜS³cific +-> + `g‘P¬am‘” +('Type'); + +149 } + `–£if + ( +$v’dÜS³cific +-> + `hasP¬am‘” +('Engine')) { + +150 +$mysqlTabËTy³ + = +$v’dÜS³cific +-> + `g‘P¬am‘” +('Engine'); + +152 +$mysqlTabËTy³ + = 'MyISAM'; + +156 +$süt + .= "Type=$mysqlTableType"; + +158 +$dbV’dÜS³cific + = +$bË +-> + `g‘D©aba£ +()-> + `g‘V’dÜInfoFÜTy³ +( +$d©aba£Ty³ +); + +159 +$bËV’dÜS³cific + = +$bË +-> + `g‘V’dÜInfoFÜTy³ +( +$d©aba£Ty³ +); + +160 +$v’dÜS³cific + = +$dbV’dÜS³cific +-> + `g‘M”gedV’dÜInfo +( +$bËV’dÜS³cific +); + +162 iàÐ +$v’dÜS³cific +-> + `hasP¬am‘” +('Charset') ) { + +163 +$süt + .ð' CHARACTER SET '. +$¶©fÜm +-> + `quÙe +( +$v’dÜS³cific +-> + `g‘P¬am‘” +('Charset')); + +165 iàÐ +$v’dÜS³cific +-> + `hasP¬am‘” +('Collate') ) { + +166 +$süt + .ð' COLLATE '. +$¶©fÜm +-> + `quÙe +( +$v’dÜS³cific +-> + `g‘P¬am‘” +('Collate')); + +168 iàÐ +$v’dÜS³cific +-> + `hasP¬am‘” +('Checksum') ) { + +169 +$süt + .ð' CHECKSUM='. +$¶©fÜm +-> + `quÙe +( +$v’dÜS³cific +-> + `g‘P¬am‘” +('Checksum')); + +171 iàÐ +$v’dÜS³cific +-> + `hasP¬am‘” +('Pack_Keys') ) { + +172 +$süt + .ð' PACK_KEYS='. +$¶©fÜm +-> + `quÙe +( +$v’dÜS³cific +-> + `g‘P¬am‘” +('Pack_Keys')); + +174 iàÐ +$v’dÜS³cific +-> + `hasP¬am‘” +('Delay_key_write') ) { + +175 +$süt + .ð' DELAY_KEY_WRITE='. +$¶©fÜm +-> + `quÙe +( +$v’dÜS³cific +-> + `g‘P¬am‘” +('Delay_key_write')); + +178 ià( +$bË +-> + `g‘DesütiÚ +()) { + +179 +$süt + .ð" COMMENT=". +$¶©fÜm +-> + `quÙe +( +$bË +-> + `g‘DesütiÚ +()); + +181 +$süt + .= "; + +183 + } +} + +192 +´iv©e + +funùiÚ + + $g‘IndexCÞumnLi¡ +( +Index + +$šdex +) + +194 +$¶©fÜm + = +$this +-> + `g‘PÏtfÜm +(); + +196 +$cÞs + = +$šdex +-> + `g‘CÞumns +(); + +197 +$li¡ + = + `¬¿y +(); + +198 + `fܗch + ( +$cÞs + +as + +$cÞ +) { + +199 +$li¡ +[] = +$this +-> + `quÙeId’tif›r +( +$cÞ +è. ( +$šdex +-> + `hasCÞumnSize +($cÞè? '(' . $šdex-> + `g‘CÞumnSize +($col) . ')' : ''); + +201  + `im¶ode +(', ', +$li¡ +); + +202 + } +} + +207 +´Ùeùed + +funùiÚ + + $addIndiûsLšes +(& +$lšes +) + +209 +$bË + = +$this +-> + `g‘TabË +(); + +210 +$¶©fÜm + = +$this +-> + `g‘PÏtfÜm +(); + +212 + `fܗch + ( +$bË +-> + `g‘Uniûs +(è +as + +$unique +) { + +213 +$lšes +[] = "UNIQUE KEY ". +$this +-> + `quÙeId’tif›r +( +$unique +-> + `g‘Name +())." (".$this-> + `g‘IndexCÞumnLi¡ +($unique).")"; + +216 + `fܗch + ( +$bË +-> + `g‘Indiûs +(è +as + +$šdex + ) { + +217 +$v’dÜInfo + = +$šdex +-> + `g‘V’dÜInfoFÜTy³ +( +$¶©fÜm +-> + `g‘D©aba£Ty³ +()); + +218 +$lšes +[] .ð(( +$v’dÜInfo + && $v’dÜInfo-> + `g‘P¬am‘” +('Index_ty³'è=ð'FULLTEXT'è? 'FULLTEXT ' : ''è. "KEY " . +$this +-> + `quÙeId’tif›r +( +$šdex +-> + `g‘Name +()è. "(" . $this-> + `g‘IndexCÞumnLi¡ +($index) . ")"; + +221 + } +} + +227 +´Ùeùed + +funùiÚ + + $addFÜeignKeysLšes +(& +$lšes +) + +229 +$bË + = +$this +-> + `g‘TabË +(); + +230 +$¶©fÜm + = +$this +-> + `g‘PÏtfÜm +(); + +242 +$_šdiûs + = + `¬¿y +(); + +244 +$this +-> + `cÞËùIndexedCÞumns +('PRIMARY', +$bË +-> + `g‘Prim¬yKey +(), +$_šdiûs +, 'getName'); + +246 +$_bËIndiûs + = + `¬¿y_m”ge +( +$bË +-> + `g‘Indiûs +(), $bË-> + `g‘Uniûs +()); + +247 + `fܗch + ( +$_bËIndiûs + +as + +$_šdex +) { + +248 +$this +-> + `cÞËùIndexedCÞumns +( +$_šdex +-> + `g‘Name +(), $_šdex-> + `g‘CÞumns +(), +$_šdiûs +); + +253 +$couÁ” + = 0; + +254 +$®lTabËs + = +$bË +-> + `g‘D©aba£ +()-> + `g‘TabËs +(); + +255 + `fܗch + ( +$®lTabËs + +as + +$_bË +) { + +256 + `fܗch + ( +$_bË +-> + `g‘FÜeignKeys +(è +as + +$_fÜeignKey +) { + +257 ià( +$_fÜeignKey +-> + `g‘FÜeignTabËName +(è=ð +$bË +-> + `g‘Name +()) { + +258 +$»ã»nûdCÞumns + = +$_fÜeignKey +-> + `g‘FÜeignCÞumns +(); + +259 +$»ã»nûdCÞumnsHash + = +$this +-> + `g‘CÞumnLi¡ +( +$»ã»nûdCÞumns +); + +260 ià(! + `¬¿y_key_exi¡s +( +$»ã»nûdCÞumnsHash +, +$_šdiûs +)) { + +262 +$šdexName + = "I_»ã»nûd_". +$_fÜeignKey +-> + `g‘Name +()."_".(++ +$couÁ” +); + +263 +$lšes +[] = "INDEX ". +$this +-> + `quÙeId’tif›r +( +$šdexName +)." (" . +$»ã»nûdCÞumnsHash +.")"; + +265 +$this +-> + `cÞËùIndexedCÞumns +( +$šdexName +, +$»ã»nûdCÞumns +, +$_šdiûs +); + +271 + `fܗch + ( +$bË +-> + `g‘FÜeignKeys +(è +as + +$fk +) { + +273 +$šdexName + = +$this +-> + `quÙeId’tif›r +( + `sub¡r_»¶aû +( +$fk +-> + `g‘Name +(), 'FI_', + `¡¼pos +($fk->getName(), 'FK_'), 3)); + +275 +$loÿlCÞumns + = +$fk +-> + `g‘LoÿlCÞumns +(); + +276 +$loÿlCÞumnsHash + = +$this +-> + `g‘CÞumnLi¡ +( +$loÿlCÞumns +); + +278 ià(! + `¬¿y_key_exi¡s +( +$loÿlCÞumnsHash +, +$_šdiûs +)) { + +280 +$lšes +[] = "INDEX $šdexNam(". +$loÿlCÞumnsHash +.")"; + +281 +$this +-> + `cÞËùIndexedCÞumns +( +$šdexName +, +$loÿlCÞumns +, +$_šdiûs +); + +283 +$¡r + = "CONSTRAINT ". +$this +-> + `quÙeId’tif›r +( +$fk +-> + `g‘Name +())." + +284 +FOREIGN + + `KEY + (".$this->getColumnList($fk->getLocalColumns()).") + +285 +REFERENCES + ".$this->quoteIdentifier($this->prefixTablename($fk->getForeignTableName())) . " (".$this->getColumnList($fk->getForeignColumns()).")"; + +286 ià( +$fk +-> + `hasOnUpd©e +()) { + +287 +$¡r + .= " + +288 +ON + +UPDATE + ".$fk->getOnUpdate(); + +290 ià( +$fk +-> + `hasOnD–‘e +()) { + +291 +$¡r + .= " + +292 +ON + +DELETE + ".$fk->getOnDelete(); + +294 +$lšes +[] = +$¡r +; + +296 + } +} + +305 +´iv©e + +funùiÚ + + $cÞËùIndexedCÞumns +( +$šdexName +, +$cÞumns +, & +$cÞËùedIndexes +, +$ÿÎback + = +nuÎ +) + +309 +$cÞÇmes + = +$cÞumns +; + +310 ià( +$ÿÎback +) { + +311 +$cÞÇmes + = + `¬¿y +(); + +312 + `fܗch + ( +$cÞumns + +as + +$cÞ +) { + +313 +$cÞÇmes +[] = +$cÞ +-> + `$ÿÎback +(); + +324 +$šdexedCÞumns + = + `¬¿y +(); + +325 + `fܗch + ( +$cÞÇmes + +as + +$cÞÇme +) { + +326 +$šdexedCÞumns +[] = +$this +-> + `quÙeId’tif›r +( +$cÞÇme +); + +327 +$šdexedCÞumnsHash + = + `im¶ode +(',', +$šdexedCÞumns +); + +328 ià(! + `¬¿y_key_exi¡s +( +$šdexedCÞumnsHash +, +$cÞËùedIndexes +)) { + +329 +$cÞËùedIndexes +[ +$šdexedCÞumnsHash +] = + `¬¿y +(); + +331 +$cÞËùedIndexes +[ +$šdexedCÞumnsHash +][] = +$šdexName +; + +333 + } +} + +340 +´iv©e + +funùiÚ + + $cڏšsCÞÇme +( +$cÞumns +, +$£¬chcÞ +) + +342 + `fܗch + ( +$cÞumns + +as + +$cÞ +) { + +343 ià( +$cÞ + +š¡ªûof + +CÞumn +) { + +344 +$cÞ + = $cÞ-> + `g‘Name +(); + +346 ià( +$cÞ + =ð +$£¬chcÞ +) { + +347  +Œue +; + +350  +çl£ +; + +351 + } +} + +357 +´Ùeùed + +funùiÚ + + $addFÜeignKeys +(& +$süt +) + +359 + } +} + +365 +´Ùeùed + +funùiÚ + + $addIndiûs +(& +$süt +) + +367 + } +} + +373 +public + +funùiÚ + + $g‘CÞumnDDL +( +CÞumn + +$cÞ +) + +375 +$¶©fÜm + = +$this +-> + `g‘PÏtfÜm +(); + +376 +$domaš + = +$cÞ +-> + `g‘Domaš +(); + +377 +$sqlTy³ + = +$domaš +-> + `g‘SqlTy³ +(); + +378 +$nÙNuÎSŒšg + = +$cÞ +-> + `g‘NÙNuÎSŒšg +(); + +379 +$deçuÉS‘tšg + = +$cÞ +-> + `g‘DeçuÉS‘tšg +(); + +383 ià( +$sqlTy³ + == 'DATETIME') { + +384 +$def + = +$domaš +-> + `g‘DeçuÉV®ue +(); + +385 ià( +$def + && $def-> + `isEx´essiÚ +()) { + +386 +$sqlTy³ + = 'TIMESTAMP'; + +388 } + `–£if + ( +$sqlTy³ + == 'DATE') { + +389 +$def + = +$domaš +-> + `g‘DeçuÉV®ue +(); + +390 ià( +$def + && $def-> + `isEx´essiÚ +()) { + +391 +throw + +Ãw + + `EngšeExû±iÚ +("DATE columns cannot have default *expressions* in MySQL."); + +393 } + `–£if + ( +$sqlTy³ + == 'TEXT' || $sqlType == 'BLOB') { + +394 ià( +$domaš +-> + `g‘DeçuÉV®ue +()) { + +395 +throw + +Ãw + + `EngšeExû±iÚ +("BLOB‡nd TEXT columns cannot have DEFAULT values. in MySQL."); + +399 +$sb + = ""; + +400 +$sb + .ð +$this +-> + `quÙeId’tif›r +( +$cÞ +-> + `g‘Name +()) . " "; + +401 +$sb + .ð +$sqlTy³ +; + +402 ià( +$¶©fÜm +-> + `hasSize +( +$sqlTy³ +)) { + +403 +$sb + .ð +$domaš +-> + `´štSize +(); + +405 +$sb + .= " "; + +407 ià( +$sqlTy³ + == 'TIMESTAMP') { + +408 +$nÙNuÎSŒšg + = +$cÞ +-> + `g‘NÙNuÎSŒšg +(); + +409 +$deçuÉS‘tšg + = +$cÞ +-> + `g‘DeçuÉS‘tšg +(); + +410 ià( +$nÙNuÎSŒšg + == '') { + +411 +$nÙNuÎSŒšg + = 'NULL'; + +413 ià( +$deçuÉS‘tšg + =ð'' && +$nÙNuÎSŒšg + == 'NOT NULL') { + +414 +$deçuÉS‘tšg + = 'DEFAULT CURRENT_TIMESTAMP'; + +416 +$sb + .ð +$nÙNuÎSŒšg + . " " . +$deçuÉS‘tšg + . " "; + +418 +$sb + .ð +$deçuÉS‘tšg + . " "; + +419 +$sb + .ð +$nÙNuÎSŒšg + . " "; + +421 +$sb + .ð +$cÞ +-> + `g‘AutoInüem’tSŒšg +(); + +423  + `Œim +( +$sb +); + +424 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mysql/MysqlDataSQLBuilder.php + +1 + `g‘TabË +(); + +41 +$¶©fÜm + = +$this +-> + `g‘PÏtfÜm +(); + +42 +$süt + .= " + +43 +DROP + +TABLE + ".$this->quÙeId’tif›r($this->´efixTabËÇme($bË->g‘Name()))." +CASCADE + +CONSTRAINTS +; + +45 ià( +$bË +-> + `g‘IdM‘hod +() == "native") { + +46 +$süt + .= " + +47 +DROP + +SEQUENCE + ".$this->quoteIdentifier($this->prefixTablename($this->getSequenceName()))."; + +56 +´Ùeùed + +funùiÚ + + $addTabË +(& +$süt +) + +58 +$bË + = +$this +-> + `g‘TabË +(); + +59 +$süt + .= " + +66 +$this +-> + `addDrÝS‹m’ts +( +$süt +); + +68 +$süt + .= " + +70 +CREATE + +TABLE + ".$this->quoteIdentifier($this->prefixTablename($table->getName()))." + +74 +$lšes + = + `¬¿y +(); + +76 + `fܗch + ( +$bË +-> + `g‘CÞumns +(è +as + +$cÞ +) { + +77 +$lšes +[] = +$this +-> + `g‘CÞumnDDL +( +$cÞ +); + +80 +$£p + = ", + +82 +$süt + .ð + `im¶ode +( +$£p +, +$lšes +); + +83 +$süt + .= " + +86 +$this +-> + `addPrim¬yKey +( +$süt +); + +87 +$this +-> + `addSequ’ûs +( +$süt +); + +89 + } +} + +95 +´Ùeùed + +funùiÚ + + $addPrim¬yKey +(& +$süt +) + +97 +$bË + = +$this +-> + `g‘TabË +(); + +98 +$¶©fÜm + = +$this +-> + `g‘PÏtfÜm +(); + +99 +$bËName + = +$bË +-> + `g‘Name +(); + +100 +$Ëngth + = + `¡¾’ +( +$bËName +); + +101 ià( +$Ëngth + > 27) { + +102 +$Ëngth + = 27; + +104 iàÐ + `is_¬¿y +( +$bË +-> + `g‘Prim¬yKey +()è&& + `couÁ +($table->getPrimaryKey()) ) { + +105 +$süt + .= " + +106 +ALTER + +TABLE + ".$this->quoteIdentifier($this->prefixTablename($table->getName()))." + +107 +ADD + +CONSTRAINT + ".$this->quÙeId’tif›r(sub¡r($bËName,0,$Ëngth)." +_PK +")." + +108 +PRIMARY + + `KEY + ("; + +109 +$d–im + = ""; + +110 + `fܗch + ( +$bË +-> + `g‘Prim¬yKey +(è +as + +$cÞ +) { + +111 +$süt + .ð +$d–im + . +$this +-> + `quÙeId’tif›r +( +$cÞ +-> + `g‘Name +()); + +112 +$d–im + = ","; + +114 +$süt + .= "); + +117 + } +} + +123 +´Ùeùed + +funùiÚ + + $addSequ’ûs +(& +$süt +) + +125 +$bË + = +$this +-> + `g‘TabË +(); + +126 +$¶©fÜm + = +$this +-> + `g‘PÏtfÜm +(); + +127 ià( +$bË +-> + `g‘IdM‘hod +() == "native") { + +128 +$süt + .ð"CREATE SEQUENCE ". +$this +-> + `quÙeId’tif›r +($this-> + `´efixTabËÇme +($this-> + `g‘Sequ’ûName +()))." INCREMENT BY 1 START WITH 1 NOMAXVALUE NOCYCLE NOCACHE ORDER; + +131 + } +} + +138 +´Ùeùed + +funùiÚ + + $addIndiûs +(& +$süt +) + +140 +$bË + = +$this +-> + `g‘TabË +(); + +141 +$¶©fÜm + = +$this +-> + `g‘PÏtfÜm +(); + +142 + `fܗch + ( +$bË +-> + `g‘Indiûs +(è +as + +$šdex +) { + +143 +$süt + .= "CREATE "; + +144 ià( +$šdex +-> + `g‘IsUnique +()) { + +145 +$süt + .= "UNIQUE"; + +147 +$süt + .ð"INDEX ". +$this +-> + `quÙeId’tif›r +( +$šdex +-> + `g‘Name +()è." ON ".$this->quÙeId’tif›r($this-> + `´efixTabËÇme +( +$bË +->g‘Name()))." (".$this-> + `g‘CÞumnLi¡ +($šdex-> + `g‘CÞumns +())."); + +150 + } +} + +156 +´Ùeùed + +funùiÚ + + $addFÜeignKeys +(& +$süt +) + +158 +$bË + = +$this +-> + `g‘TabË +(); + +159 +$¶©fÜm + = +$this +-> + `g‘PÏtfÜm +(); + +160 + `fܗch + ( +$bË +-> + `g‘FÜeignKeys +(è +as + +$fk +) { + +161 +$süt + .= " + +162 +ALTER + +TABLE + ".$this->quÙeId’tif›r($this->´efixTabËÇme($bË->g‘Name()))." +ADD + +CONSTRAINT + ".$this->quÙeId’tif›r($fk->g‘Name())." +FOREIGN + + `KEY + (".$this->g‘CÞumnLi¡($fk->g‘LoÿlCÞumns()è."è +REFERENCES + ".$this->quoteIdentifier($this->prefixTablename($fk->getForeignTableName()))." (".$this->getColumnList($fk->getForeignColumns()).")"; + +163 ià( +$fk +-> + `hasOnUpd©e +()) { + +164 +$this +-> + `w¬n +("ON UPDATE‚Ù y‘ im¶em’‹d fÜ O¿þbužd”.(ignܚg fÜ ".$this-> + `g‘CÞumnLi¡ +( +$fk +-> + `g‘LoÿlCÞumns +())." fk)."); + +167 ià( +$fk +-> + `hasOnD–‘e +()) { + +168 +$süt + .ð" ON DELETE ". +$fk +-> + `g‘OnD–‘e +(); + +170 +$süt + .= "; + +173 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/oracle/OracleDataSQLBuilder.php + +1 + `g‘TabË +(); + +83 +$vi + = +$bË +-> + `g‘V’dÜInfoFÜTy³ +( +$this +-> + `g‘PÏtfÜm +()-> + `g‘D©aba£Ty³ +()); + +84 ià( +$vi +-> + `hasP¬am‘” +('schema')) { + +85  +$vi +-> + `g‘P¬am‘” +('schema'); + +87  +nuÎ +; + +88 + } +} + +98 +´Ùeùed + +funùiÚ + + $addSchema +() + +101 +$schemaName + = +$this +-> + `g‘Schema +(); + +103 ià( +$schemaName + !=ð +nuÎ +) { + +105 ià(! + `š_¬¿y +( +$schemaName +, +£lf +:: +$addedSchemas +)) { + +106 +$¶©fÜm + = +$this +-> + `g‘PÏtfÜm +(); + +107 +£lf +:: +$addedSchemas +[] = +$schemaName +; + +108  "\nCREATE SCHEMA " . +$this +-> + `quÙeId’tif›r +( +$schemaName +) . ";\n"; + +114 + } +} + +120 +´Ùeùed + +funùiÚ + + $addDrÝS‹m’ts +(& +$süt +) + +122 +$bË + = +$this +-> + `g‘TabË +(); + +123 +$¶©fÜm + = +$this +-> + `g‘PÏtfÜm +(); + +125 +$süt + .= " + +126 +DROP + +TABLE + ".$this->quÙeId’tif›r($this->´efixTabËÇme($bË->g‘Name()))." +CASCADE +; + +129 ià( +$bË +-> + `g‘IdM‘hod +(è=ð +IDM‘hod +:: +NATIVE + && $bË-> + `g‘IdM‘hodP¬am‘”s +()) { + +130 +$süt + .= " + +131 +DROP + +SEQUENCE + ".$this->quoteIdentifier($this->prefixTablename(strtolower($this->getSequenceName())))."; + +134 + } +} + +140 +´Ùeùed + +funùiÚ + + $addTabË +(& +$süt +) + +142 +$bË + = +$this +-> + `g‘TabË +(); + +143 +$¶©fÜm + = +$this +-> + `g‘PÏtfÜm +(); + +145 +$süt + .= " + +151 +$süt + .ð +$this +-> + `addSchema +(); + +153 +$schemaName + = +$this +-> + `g‘Schema +(); + +154 ià( +$schemaName + !=ð +nuÎ +) { + +155 +$süt + .ð"\nSET s—rch_·th TO " . +$this +-> + `quÙeId’tif›r +( +$schemaName +) . ";\n"; + +158 +$this +-> + `addDrÝS‹m’ts +( +$süt +); + +159 +$this +-> + `addSequ’ûs +( +$süt +); + +161 +$süt + .= " + +163 +CREATE + +TABLE + ".$this->quoteIdentifier($this->prefixTablename($table->getName()))." + +167 +$lšes + = + `¬¿y +(); + +169 + `fܗch + ( +$bË +-> + `g‘CÞumns +(è +as + +$cÞ +) { + +171 +$cÞDDL + = +$this +-> + `g‘CÞumnDDL +( +$cÞ +); + +172 ià( +$cÞ +-> + `isAutoInüem’t +(è&& +$bË +-> + `g‘IdM‘hodP¬am‘”s +(è=ð +nuÎ +) { + +173 ià( +$cÞ +-> + `g‘Ty³ +(è==ð +PrݖTy³s +:: +BIGINT +) { + +174 +$cÞDDL + = + `¡r_»¶aû +( +$cÞ +-> + `g‘Domaš +()-> + `g‘SqlTy³ +(), 'bigserial', $colDDL); + +176 +$cÞDDL + = + `¡r_»¶aû +( +$cÞ +-> + `g‘Domaš +()-> + `g‘SqlTy³ +(), 'serial', $colDDL); + +179 +$lšes +[] = +$cÞDDL +; + +182 ià( +$bË +-> + `hasPrim¬yKey +()) { + +183 +$lšes +[] = "PRIMARY KEY (". +$this +-> + `g‘CÞumnLi¡ +( +$bË +-> + `g‘Prim¬yKey +()).")"; + +186 + `fܗch + ( +$bË +-> + `g‘Uniûs +(è +as + +$unique + ) { + +187 +$lšes +[] = "CONSTRAINT ". +$this +-> + `quÙeId’tif›r +( +$unique +-> + `g‘Name +())." UNIQUE (".$this-> + `g‘CÞumnLi¡ +($unique-> + `g‘CÞumns +()).")"; + +190 +$£p + = ", + +192 +$süt + .ð + `im¶ode +( +$£p +, +$lšes +); + +193 +$süt + .= " + +196 +COMMENT + +ON + +TABLE + ".$this->quÙeId’tif›r($this->´efixTabËÇme($bË->g‘Name()))." +IS + " . $platform->quote($table->getDescription())."; + +200 +$this +-> + `addCÞumnComm’ts +( +$süt +); + +202 +$süt + .= "\nSET search_path TO…ublic;"; + +204 + } +} + +210 +´Ùeùed + +funùiÚ + + $addCÞumnComm’ts +(& +$süt +) + +212 +$bË + = +$this +-> + `g‘TabË +(); + +213 +$¶©fÜm + = +$this +-> + `g‘PÏtfÜm +(); + +215 + `fܗch + ( +$this +-> + `g‘TabË +()-> + `g‘CÞumns +(è +as + +$cÞ +) { + +216 iàÐ +$cÞ +-> + `g‘DesütiÚ +() != '' ) { + +217 +$süt + .= " + +218 +COMMENT + +ON + +COLUMN + ".$this->quÙeId’tif›r($this->´efixTabËÇme($bË->g‘Name())).".".$this->quÙeId’tif›r($cÞ->g‘Name())." +IS + ".$platform->quote($col->getDescription()) ."; + +222 + } +} + +231 +public + +funùiÚ + + $g‘Sequ’ûName +() + +233 +$bË + = +$this +-> + `g‘TabË +(); + +234  +$lÚgNamesM­ + = + `¬¿y +(); + +235 +$»suÉ + = +nuÎ +; + +236 ià( +$bË +-> + `g‘IdM‘hod +(è=ð +IDM‘hod +:: +NATIVE +) { + +237 +$idM‘hodP¬ams + = +$bË +-> + `g‘IdM‘hodP¬am‘”s +(); + +238 ià( + `em±y +( +$idM‘hodP¬ams +)) { + +239 +$»suÉ + = +nuÎ +; + +242 + `fܗch + ( +$bË +-> + `g‘CÞumns +(è +as + +$cÞ +) { + +243 ià( +$cÞ +-> + `isAutoInüem’t +()) { + +244 +$»suÉ + = +$bË +-> + `g‘Name +(è. '_' . +$cÞ +->getName() . '_seq'; + +249 +$»suÉ + = +$idM‘hodP¬ams +[0]-> + `g‘V®ue +(); + +252  +$»suÉ +; + +253 + } +} + +259 +´Ùeùed + +funùiÚ + + $addSequ’ûs +(& +$süt +) + +261 +$bË + = +$this +-> + `g‘TabË +(); + +262 +$¶©fÜm + = +$this +-> + `g‘PÏtfÜm +(); + +264 ià( +$bË +-> + `g‘IdM‘hod +(è=ð +IDM‘hod +:: +NATIVE + && $bË-> + `g‘IdM‘hodP¬am‘”s +(è!ð +nuÎ +) { + +265 +$süt + .= " + +266 +CREATE + +SEQUENCE + ".$this->quoteIdentifier($this->prefixTablename(strtolower($this->getSequenceName())))."; + +269 + } +} + +276 +´Ùeùed + +funùiÚ + + $addIndiûs +(& +$süt +) + +278 +$bË + = +$this +-> + `g‘TabË +(); + +279 +$¶©fÜm + = +$this +-> + `g‘PÏtfÜm +(); + +281 + `fܗch + ( +$bË +-> + `g‘Indiûs +(è +as + +$šdex +) { + +282 +$süt + .= " + +283 +CREATE + "; + +284 ià( +$šdex +-> + `g‘IsUnique +()) { + +285 +$süt + .= "UNIQUE"; + +287 +$süt + .ð"INDEX ". +$this +-> + `quÙeId’tif›r +( +$šdex +-> + `g‘Name +())." ON ".$this->quÙeId’tif›r($this-> + `´efixTabËÇme +( +$bË +->g‘Name()))." (".$this-> + `g‘CÞumnLi¡ +($šdex-> + `g‘CÞumns +())."); + +290 + } +} + +296 +´Ùeùed + +funùiÚ + + $addFÜeignKeys +(& +$süt +) + +298 +$bË + = +$this +-> + `g‘TabË +(); + +299 +$¶©fÜm + = +$this +-> + `g‘PÏtfÜm +(); + +301 + `fܗch + ( +$bË +-> + `g‘FÜeignKeys +(è +as + +$fk +) { + +302 +$´ivsüt + = " + +303 +ALTER + +TABLE + ".$this->quÙeId’tif›r($this->´efixTabËÇme($bË->g‘Name()))." +ADD + +CONSTRAINT + ".$this->quÙeId’tif›r($fk->g‘Name())." +FOREIGN + + `KEY + (".$this->g‘CÞumnLi¡($fk->g‘LoÿlCÞumns()è."è +REFERENCES + ".$this->quoteIdentifier($this->prefixTablename($fk->getForeignTableName()))." (".$this->getColumnList($fk->getForeignColumns()).")"; + +304 ià( +$fk +-> + `hasOnUpd©e +()) { + +305 +$´ivsüt + .ð" ON UPDATE ". +$fk +-> + `g‘OnUpd©e +(); + +307 ià( +$fk +-> + `hasOnD–‘e +()) { + +308 +$´ivsüt + .ð" ON DELETE ". +$fk +-> + `g‘OnD–‘e +(); + +310 +$´ivsüt + .= "; + +312 +£lf +:: +$queuedCÚ¡¿šts +[] = +$´ivsüt +; + +314 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/pgsql/PgsqlDataSQLBuilder.php + +1 + `g‘TabË +(); + +61 ià( +$bË +-> + `hasAutoInüem’tPrim¬yKey +(è&& $bË-> + `g‘IdM‘hod +(è=ð +IDM‘hod +:: +NATIVE +) { + +62 + `fܗch + ( +$row +-> + `g‘CÞumnV®ues +(è +as + +$cÞV®ue +) { + +63 ià( +$cÞV®ue +-> + `g‘CÞumn +()-> + `isAutoInüem’t +()) { + +64 ià( +$cÞV®ue +-> + `g‘V®ue +(è> +$this +-> +maxSeqV® +) { + +65 +$this +-> +maxSeqV® + = +$cÞV®ue +-> + `g‘V®ue +(); + +71  +$sql +; + +72 + } +} + +74 +public + +funùiÚ + + $g‘TabËEndSql +() + +76 +$bË + = +$this +-> + `g‘TabË +(); + +77 +$sql + = ""; + +78 ià( +$bË +-> + `hasAutoInüem’tPrim¬yKey +(è&& $bË-> + `g‘IdM‘hod +(è=ð +IDM‘hod +:: +NATIVE +) { + +79 +$£qÇme + = +$this +-> + `´efixTabËÇme +($this-> + `g‘DDLBužd” +()-> + `g‘Sequ’ûName +()); + +80 +$sql + .ð"SELECT…g_ÿlog.£tv®('$£qÇme', ".(() +$this +-> +maxSeqV® +)."); + +83  +$sql +; + +84 + } +} + +91 +´Ùeùed + +funùiÚ + + $g‘BoޗnSql +( +$v®ue +) + +93 ià( +$v®ue + === 'f' || $value === 'false' || $value === "0") { + +94 +$v®ue + = +çl£ +; + +96  ( +$v®ue + ? "'t'" : "'f'"); + +97 + } +} + +104 +´Ùeùed + +funùiÚ + + $g‘BlobSql +( +$blob +) + +107 ià( + `is_objeù +( +$blob +)) { + +108 +$blob + = $blob-> + `__toSŒšg +(); + +110  "'" . + `pg_esÿ³_by‹a +( +$blob +) . "'"; + +111 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/sqlite/SqliteDDLBuilder.php + +1 + `g‘TabË +(); + +41 +$¶©fÜm + = +$this +-> + `g‘PÏtfÜm +(); + +43 +$süt + .= " + +44 +DROP + +TABLE + ".$this->quoteIdentifier($this->prefixTablename($table->getName()))."; + +52 +´Ùeùed + +funùiÚ + + $addTabË +(& +$süt +) + +54 +$bË + = +$this +-> + `g‘TabË +(); + +55 +$¶©fÜm + = +$this +-> + `g‘PÏtfÜm +(); + +57 +$süt + .= " + +63 +$this +-> + `addDrÝS‹m’ts +( +$süt +); + +65 +$süt + .= " + +67 +CREATE + +TABLE + ".$this->quoteIdentifier($this->prefixTablename($table->getName()))." + +71 +$lšes + = + `¬¿y +(); + +73 + `fܗch + ( +$bË +-> + `g‘CÞumns +(è +as + +$cÞ +) { + +74 +$lšes +[] = +$this +-> + `g‘CÞumnDDL +( +$cÞ +); + +77 ià( +$bË +-> + `hasPrim¬yKey +(è&& + `couÁ +($bË-> + `g‘Prim¬yKey +()) > 1) { + +78 +$lšes +[] = "PRIMARY KEY (". +$this +-> + `g‘CÞumnLi¡ +( +$bË +-> + `g‘Prim¬yKey +()).")"; + +81 + `fܗch + ( +$bË +-> + `g‘Uniûs +(è +as + +$unique + ) { + +82 +$lšes +[] = "UNIQUE (". +$this +-> + `g‘CÞumnLi¡ +( +$unique +-> + `g‘CÞumns +()).")"; + +85 +$£p + = ", + +87 +$süt + .ð + `im¶ode +( +$£p +, +$lšes +); + +88 +$süt + .= " + +91 + } +} + +97 +´Ùeùed + +funùiÚ + + $addIndiûs +(& +$süt +) + +99 +$bË + = +$this +-> + `g‘TabË +(); + +100 +$¶©fÜm + = +$this +-> + `g‘PÏtfÜm +(); + +102 + `fܗch + ( +$bË +-> + `g‘Indiûs +(è +as + +$šdex +) { + +103 +$süt + .= " + +104 +CREATE + "; + +105 ià( +$šdex +-> + `g‘IsUnique +()) { + +106 +$süt + .= "UNIQUE"; + +108 +$süt + .ð"INDEX ". +$this +-> + `quÙeId’tif›r +( +$šdex +-> + `g‘Name +())." ON ".$this->quÙeId’tif›r($this-> + `´efixTabËÇme +( +$bË +->g‘Name()))." (".$this-> + `g‘CÞumnLi¡ +($šdex-> + `g‘CÞumns +())."); + +111 + } +} + +117 +´Ùeùed + +funùiÚ + + $addFÜeignKeys +(& +$süt +) + +119 +$bË + = +$this +-> + `g‘TabË +(); + +120 +$¶©fÜm + = +$this +-> + `g‘PÏtfÜm +(); + +122 + `fܗch + ( +$bË +-> + `g‘FÜeignKeys +(è +as + +$fk +) { + +123 +$süt + .= " + +124 -- +SQL™e + +dÛs + +nÙ + +suµÜt + +fÜeign + +keys +; +this + +is + +ju¡ +  +»ã»nû + + +125 -- +FOREIGN + + `KEY + (".$this->g‘CÞumnLi¡($fk->g‘LoÿlCÞumns())."è +REFERENCES + ".$this->prefixTablename($fk->getForeignTableName())." (".$this->getColumnList($fk->getForeignColumns()).") + +128 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/sqlite/SqliteDataSQLBuilder.php + +1 + `__toSŒšg +(); + +44  "'" . + `sql™e_udf_’code_bš¬y +( +$blob +) . "'"; + +47 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/DefaultEnglishPluralizer.php + +1 +d©aba£ + = +$d©aba£ +; + +113 + m$this +-> + mg’”©ÜCÚfig + = +$cÚfig +; + +114 + m$this +-> + m’codšg + = +$’codšg +; + +123 +public + +funùiÚ + + $ŒªsfÜm +( +PhšgFže + +$xmlFže +, +Wr™” + +$out +) + +125 +$this +-> +sqlWr™” + = +$out +; + +128 +$this +-> +cu¼TabËName + = $this-> +cu¼Bužd” + = +nuÎ +; + +130 +$this +-> +bužd”CÏzz + = $this-> +g’”©ÜCÚfig +-> + `g‘Bužd”CÏs¢ame +('datasql'); + +132 +Œy + { + +133 +$ä + = +Ãw + + `FžeR—d” +( +$xmlFže +); + +134 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +135 +throw + +Ãw + + `BuždExû±iÚ +("XML FžnÙ found: " . +$xmlFže +-> + `g‘AbsÞu‹P©h +()); + +138 +$br + = +Ãw + + `Bufã»dR—d” +( +$ä +); + +140 +$this +-> +·r£r + = +Ãw + + `Ex·tP¬£r +( +$br +); + +141 +$this +-> +·r£r +-> + `·r£rS‘O±iÚ +( +XML_OPTION_CASE_FOLDING +, 0); + +142 +$this +-> +·r£r +-> + `£tHªdËr +($this); + +144 +Œy + { + +145 +$this +-> +·r£r +-> + `·r£ +(); + +146 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +147 +´št + +$e +-> + `g‘Mes§ge +() . "\n"; + +148 +$br +-> + `þo£ +(); + +150 +$br +-> + `þo£ +(); + +151 + } +} + +156 +public + +funùiÚ + + $¡¬tEËm’t +( +$Çme +, +$©Œibu‹s +) + +158 +Œy + { + +159 ià( +$Çme + == "dataset") { + +161 + `ÿÎ_u£r_func +( + `¬¿y +( +$this +-> +bužd”CÏzz +, 'reset')); + +162 +$this +-> +sqlWr™” +-> + `wr™e +( + `ÿÎ_u£r_func +( + `¬¿y +($this-> +bužd”CÏzz +, 'getDatabaseStartSql'))); + +168 +$bË + = +$this +-> +d©aba£ +-> + `g‘TabËByPhpName +( +$Çme +); + +170 +$cÞumnV®ues + = + `¬¿y +(); + +171 + `fܗch + ( +$©Œibu‹s + +as + +$Çme + => +$v®ue +) { + +172 +$cÞ + = +$bË +-> + `g‘CÞumnByPhpName +( +$Çme +); + +173 +$cÞumnV®ues +[] = +Ãw + + `CÞumnV®ue +( +$cÞ +, + `icÚv +('utf-8', +$this +-> +’codšg +, +$v®ue +)); + +176 +$d©a + = +Ãw + + `D©aRow +( +$bË +, +$cÞumnV®ues +); + +178 ià( +$this +-> +cu¼TabËName + !=ð +$bË +-> + `g‘Name +()) { + +181 ià( +$this +-> +cu¼Bužd” + !=ð +nuÎ +) { + +182 +$this +-> +sqlWr™” +-> + `wr™e +($this-> +cu¼Bužd” +-> + `g‘TabËEndSql +()); + +185 +$this +-> +cu¼TabËName + = +$bË +-> + `g‘Name +(); + +186 +$this +-> +cu¼Bužd” + = $this-> +g’”©ÜCÚfig +-> + `g‘CÚfigu»dBužd” +( +$bË +, 'datasql'); + +188 +$this +-> +sqlWr™” +-> + `wr™e +($this-> +cu¼Bužd” +-> + `g‘TabËS¹Sql +()); + +192 +$this +-> +sqlWr™” +-> + `wr™e +($this-> +cu¼Bužd” +-> + `buždRowSql +( +$d©a +)); + +196 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +199 +´št + +$e +; + +200 +throw + +$e +; + +202 + } +} + +211 +public + +funùiÚ + + $’dEËm’t +( +$Çme +) + +213 ià( +£lf +:: +DEBUG +) { + +214 + `´št +("’dEËm’t(" . +$Çme + . ") called\n"); + +216 ià( +$Çme + == "dataset") { + +217 ià( +$this +-> +cu¼Bužd” + !=ð +nuÎ +) { + +218 +$this +-> +sqlWr™” +-> + `wr™e +($this-> +cu¼Bužd” +-> + `g‘TabËEndSql +()); + +220 +$this +-> +sqlWr™” +-> + `wr™e +( + `ÿÎ_u£r_func +( + `¬¿y +($this-> +bužd”CÏzz +, 'getDatabaseEndSql'))); + +222 + } +} + +230 þas  + cD©aRow + + +232 +´iv©e + + m$bË +; + +233 +´iv©e + + m$cÞumnV®ues +; + +235 +public + +funùiÚ + + $__cÚ¡ruù +( +TabË + +$bË +, +$cÞumnV®ues +) + +237 +$this +-> +bË + = +$bË +; + +238 +$this +-> +cÞumnV®ues + = +$cÞumnV®ues +; + +241 +public + +funùiÚ + + $g‘TabË +() + +243  +$this +-> +bË +; + +244 + } +} + +246 +public + +funùiÚ + + $g‘CÞumnV®ues +() + +248  +$this +-> +cÞumnV®ues +; + +249 + } +} + +256 þas  + cCÞumnV®ue + { + +258 +´iv©e + + m$cÞ +; + +259 +´iv©e + + m$v® +; + +261 +public + +funùiÚ + + $__cÚ¡ruù +( +CÞumn + +$cÞ +, +$v® +) + +263 +$this +-> +cÞ + = +$cÞ +; + +264 +$this +-> +v® + = +$v® +; + +267 +public + +funùiÚ + + $g‘CÞumn +() + +269  +$this +-> +cÞ +; + +270 + } +} + +272 +public + +funùiÚ + + $g‘V®ue +() + +274  +$this +-> +v® +; + +275 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/AppData.php + +1 +¶©fÜm + = +$¶©fÜm +; + +76 +public + +funùiÚ + + $g‘PÏtfÜm +() + +78  +$this +-> +¶©fÜm +; + +79 + } +} + +86 +public + +funùiÚ + + $£tName +( +$Çme +) + +88 +$this +-> +Çme + = +$Çme +; + +89 + } +} + +96 +public + +funùiÚ + + $g‘Name +() + +98  +$this +-> +Çme +; + +99 + } +} + +106 +public + +funùiÚ + + $g‘ShÜtName +() + +108  + `¡r_»¶aû +("-schema", "", +$this +-> +Çme +); + +109 + } +} + +116 +public + +funùiÚ + + $g‘D©aba£s +( +$doFš®In™ + = +Œue +) + +120 ià( +$doFš®In™ +) { + +121 +$this +-> + `doFš®In™Ÿliz©iÚ +(); + +123  +$this +-> +dbLi¡ +; + +124 + } +} + +131 +public + +funùiÚ + + $hasMuɝËD©aba£s +() + +133  ( + `couÁ +( +$this +-> +dbLi¡ +) > 1); + +134 + } +} + +142 +public + +funùiÚ + + $g‘D©aba£ +( +$Çme + = +nuÎ +, +$doFš®In™ + = +Œue +) + +146 ià( +$doFš®In™ +) { + +147 +$this +-> + `doFš®In™Ÿliz©iÚ +(); + +150 ià( +$Çme + ==ð +nuÎ +) { + +151  +$this +-> +dbLi¡ +[0]; + +154  +$i +=0, +$size += + `couÁ +( +$this +-> +dbLi¡ +); $i < $size; $i++) { + +155 +$db + = +$this +-> +dbLi¡ +[ +$i +]; + +156 ià( +$db +-> + `g‘Name +(è==ð +$Çme +) { + +157  +$db +; + +160  +nuÎ +; + +161 + } +} + +169 +public + +funùiÚ + + $addD©aba£ +( +$db +) + +171 ià( +$db + +š¡ªûof + +D©aba£ +) { + +172 +$db +-> + `£tAµD©a +( +$this +); + +173 ià( +$db +-> + `g‘PÏtfÜm +(è==ð +nuÎ +) { + +174 +$db +-> + `£tPÏtfÜm +( +$this +-> +¶©fÜm +); + +176 +$this +-> +dbLi¡ +[] = +$db +; + +177  +$db +; + +180 +$d + = +Ãw + + `D©aba£ +(); + +181 +$d +-> + `lßdFromXML +( +$db +); + +182  +$this +-> + `addD©aba£ +( +$d +); + +185 + } +} + +191 +´iv©e + +funùiÚ + + $doFš®In™Ÿliz©iÚ +() + +193 ià(! +$this +-> +isIn™Ÿlized +) { + +194  +$i +=0, +$size += + `couÁ +( +$this +-> +dbLi¡ +); $i < $size; $i++) { + +195 +$this +-> +dbLi¡ +[ +$i +]-> + `doFš®In™Ÿliz©iÚ +(); + +197 +$this +-> +isIn™Ÿlized + = +Œue +; + +199 + } +} + +207 +public + +funùiÚ + + $toSŒšg +() + +209 +$»suÉ + = "\n"; + +210  +$i +=0, +$size += + `couÁ +( +$this +-> +dbLi¡ +); $i < $size; $i++) { + +211 +$»suÉ + .ð +$this +-> +dbLi¡ +[ +$i +]-> + `toSŒšg +(); + +213 +$»suÉ + .= ""; + +214  +$»suÉ +; + +215 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Behavior.php + +1 +Çme + = +$Çme +; + +43 +public + +funùiÚ + + $g‘Name +() + +45  +$this +-> +Çme +; + +46 + } +} + +48 +public + +funùiÚ + + $£tTabË +( +TabË + +$bË +) + +50 +$this +-> +bË + = +$bË +; + +51 + } +} + +53 +public + +funùiÚ + + $g‘TabË +() + +55  +$this +-> +bË +; + +56 + } +} + +58 +public + +funùiÚ + + $£tD©aba£ +( +D©aba£ + +$d©aba£ +) + +60 +$this +-> +d©aba£ + = +$d©aba£ +; + +61 + } +} + +63 +public + +funùiÚ + + $g‘D©aba£ +() + +65  +$this +-> +d©aba£ +; + +66 + } +} + +74 +public + +funùiÚ + + $addP¬am‘” +( +$©Œibu‹ +) + +76 +$©Œibu‹ + = + `¬¿y_chªge_key_ÿ£ +($©Œibu‹, +CASE_LOWER +); + +77 +$this +-> +·¿m‘”s +[ +$©Œibu‹ +['name']] = $attribute['value']; + +78 + } +} + +86 +public + +funùiÚ + + $£tP¬am‘”s +( +$·¿m‘”s +) + +88 +$this +-> +·¿m‘”s + = +$·¿m‘”s +; + +89 + } +} + +95 +public + +funùiÚ + + $g‘P¬am‘”s +() + +97  +$this +-> +·¿m‘”s +; + +98 + } +} + +100 +public + +funùiÚ + + $g‘P¬am‘” +( +$Çme +) + +102  +$this +-> +·¿m‘”s +[ +$Çme +]; + +103 + } +} + +110 +public + +funùiÚ + + $modifyD©aba£ +() + +112 + `fܗch + ( +$this +-> + `g‘D©aba£ +()-> + `g‘TabËs +(è +as + +$bË +) + +114 +$b + = +þÚe + +$this +; + +115 +$bË +-> + `addBehaviÜ +( +$b +); + +117 + } +} + +123 +public + +funùiÚ + + $modifyTabË +() + +125 + } +} + +134 +public + +funùiÚ + + $g‘CÞumnFÜP¬am‘” +( +$·¿m +) + +136  +$this +-> + `g‘TabË +()-> + `g‘CÞumn +($this-> + `g‘P¬am‘” +( +$·¿m +)); + +137 + } +} + +143 +´Ùeùed + +funùiÚ + + $£tupObjeù +() + +145 +$this +-> +Çme + = $this-> + `g‘A‰ribu‹ +("name"); + +146 + } +} + +151 +public + +funùiÚ + + $­³ndXml +( +DOMNode + +$node +) + +153 +$doc + = ( +$node + +š¡ªûof + +DOMDocum’t +è? $nod: $node-> +owÃrDocum’t +; + +155 +$bNode + = +$node +-> + `­³ndChžd +( +$doc +-> + `ü—‹EËm’t +('behavior')); + +156 +$bNode +-> + `£tA‰ribu‹ +('Çme', +$this +-> + `g‘Name +()); + +158 + `fܗch + ( +$this +-> +·¿m‘”s + +as + +$Çme + => +$v®ue +) { + +159 +$·¿m‘”Node + = +$bNode +-> + `­³ndChžd +( +$doc +-> + `ü—‹EËm’t +('parameter')); + +160 +$·¿m‘”Node +-> + `£tA‰ribu‹ +('Çme', +$Çme +); + +161 +$·¿m‘”Node +-> + `£tA‰ribu‹ +('v®ue', +$v®ue +); + +163 + } +} + +165 +public + +funùiÚ + + $g‘TabËModif›r +() + +167  +$this +; + +168 + } +} + +170 +public + +funùiÚ + + $g‘ObjeùBužd”Modif›r +() + +172  +$this +; + +173 + } +} + +175 +public + +funùiÚ + + $g‘P“rBužd”Modif›r +() + +177  +$this +; + +178 + } +} + +180 +public + +funùiÚ + + $g‘TabËM­Bužd”Modif›r +() + +182  +$this +; + +183 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Column.php + +1 +Çme + = +$Çme +; + +125 +public +  +funùiÚ + + $makeLi¡ +( +$cÞumns +, +PÏtfÜm + +$¶©fÜm +) + +127 +$li¡ + = + `¬¿y +(); + +128 + `fܗch + ( +$cÞumns + +as + +$cÞ +) { + +129 ià( +$cÞ + +š¡ªûof + +CÞumn +) { + +130 +$cÞ + = $cÞ-> + `g‘Name +(); + +132 +$li¡ +[] = +$¶©fÜm +-> + `quÙeId’tif›r +( +$cÞ +); + +134  + `im¶ode +(", ", +$li¡ +); + +135 + } +} + +141 +´Ùeùed + +funùiÚ + + $£tupObjeù +() + +143 +Œy + { + +144 +$dom + = +$this +-> + `g‘A‰ribu‹ +("domain"); + +145 ià( +$dom +) { + +146 +$this +-> + `g‘Domaš +()-> + `cÝy +($this-> + `g‘TabË +()-> + `g‘D©aba£ +()->g‘Domaš( +$dom +)); + +148 +$ty³ + = + `¡¹ouµ” +( +$this +-> + `g‘A‰ribu‹ +("type")); + +149 ià( +$ty³ +) { + +150 +$this +-> + `g‘Domaš +()-> + `cÝy +($this-> + `g‘PÏtfÜm +()-> + `g‘DomašFÜTy³ +( +$ty³ +)); + +152 +$this +-> + `g‘Domaš +()-> + `cÝy +($this-> + `g‘PÏtfÜm +()-> + `g‘DomašFÜTy³ +( +£lf +:: +DEFAULT_TYPE +)); + +156 +$this +-> +Çme + = $this-> + `g‘A‰ribu‹ +("name"); + +157 +$this +-> +phpName + = $this-> + `g‘A‰ribu‹ +("phpName"); + +158 +$this +-> +phpTy³ + = $this-> + `g‘A‰ribu‹ +("phpType"); + +160 ià( +$this +-> + `g‘A‰ribu‹ +("´efix", +nuÎ +) !==‚ull) { + +161 +$this +-> +ÇmeP»fix + = $this-> + `g‘A‰ribu‹ +("prefix"); + +162 } + `–£if + ( +$this +-> + `g‘TabË +()-> + `g‘A‰ribu‹ +('cÞumnP»fix', +nuÎ +) !==‚ull) { + +163 +$this +-> +ÇmeP»fix + = $this-> + `g‘TabË +()-> + `g‘A‰ribu‹ +('columnPrefix'); + +165 +$this +-> +ÇmeP»fix + = ''; + +169 ià( +$this +-> + `g‘A‰ribu‹ +('acûssÜVisibž™y', +nuÎ +) !==‚ull) { + +170 +$this +-> + `£tAcûssÜVisibž™y +($this-> + `g‘A‰ribu‹ +('accessorVisibility')); + +171 } + `–£if + ( +$this +-> + `g‘TabË +()-> + `g‘A‰ribu‹ +('deçuÉAcûssÜVisibž™y', +nuÎ +) !==‚ull) { + +172 +$this +-> + `£tAcûssÜVisibž™y +($this-> + `g‘TabË +()-> + `g‘A‰ribu‹ +('defaultAccessorVisibility')); + +173 } + `–£if + ( +$this +-> + `g‘TabË +()-> + `g‘D©aba£ +()-> + `g‘A‰ribu‹ +('deçuÉAcûssÜVisibž™y', +nuÎ +) !==‚ull) { + +174 +$this +-> + `£tAcûssÜVisibž™y +($this-> + `g‘TabË +()-> + `g‘D©aba£ +()-> + `g‘A‰ribu‹ +('defaultAccessorVisibility')); + +176 +$this +-> + `£tAcûssÜVisibž™y +( +£lf +:: +DEFAULT_VISIBILITY +); + +180 ià( +$this +-> + `g‘A‰ribu‹ +('mutÜVisibž™y', +nuÎ +) !==‚ull) { + +181 +$this +-> + `£tMutÜVisibž™y +($this-> + `g‘A‰ribu‹ +('mutatorVisibility')); + +182 } + `–£if + ( +$this +-> + `g‘TabË +()-> + `g‘A‰ribu‹ +('deçuÉMutÜVisibž™y', +nuÎ +) !==‚ull) { + +183 +$this +-> + `£tMutÜVisibž™y +($this-> + `g‘TabË +()-> + `g‘A‰ribu‹ +('defaultMutatorVisibility')); + +184 } + `–£if + ( +$this +-> + `g‘TabË +()-> + `g‘D©aba£ +()-> + `g‘A‰ribu‹ +('deçuÉMutÜVisibž™y', +nuÎ +) !==‚ull) { + +185 +$this +-> + `£tMutÜVisibž™y +($this-> + `g‘TabË +()-> + `g‘D©aba£ +()-> + `g‘A‰ribu‹ +('defaultMutatorVisibility')); + +187 +$this +-> + `£tMutÜVisibž™y +( +£lf +:: +DEFAULT_VISIBILITY +); + +190 +$this +-> +³”Name + = $this-> + `g‘A‰ribu‹ +("peerName"); + +193 +$this +-> +phpNamšgM‘hod + = $this-> + `g‘A‰ribu‹ +("phpNamšgM‘hod", $this-> +·»ÁTabË +-> + `g‘D©aba£ +()-> + `g‘DeçuÉPhpNamšgM‘hod +()); + +195 +$this +-> +isPrim¬ySŒšg + = $this-> + `boޗnV®ue +($this-> + `g‘A‰ribu‹ +("primaryString")); + +197 +$this +-> +isPrim¬yKey + = $this-> + `boޗnV®ue +($this-> + `g‘A‰ribu‹ +("primaryKey")); + +199 +$this +-> +isNodeKey + = $this-> + `boޗnV®ue +($this-> + `g‘A‰ribu‹ +("nodeKey")); + +200 +$this +-> +nodeKeyS• + = $this-> + `g‘A‰ribu‹ +("nodeKeySep", "."); + +202 +$this +-> +isNe¡edS‘LeáKey + = $this-> + `boޗnV®ue +($this-> + `g‘A‰ribu‹ +("nestedSetLeftKey")); + +203 +$this +-> +isNe¡edS‘RightKey + = $this-> + `boޗnV®ue +($this-> + `g‘A‰ribu‹ +("nestedSetRightKey")); + +204 +$this +-> +isT»eScÝeKey + = $this-> + `boޗnV®ue +($this-> + `g‘A‰ribu‹ +("treeScopeKey")); + +206 +$this +-> +isNÙNuÎ + = ($this-> + `boޗnV®ue +($this-> + `g‘A‰ribu‹ +("»quœed"), +çl£ +è|| $this-> +isPrim¬yKey +); + +209 +$this +-> +isAutoInüem’t + = $this-> + `boޗnV®ue +($this-> + `g‘A‰ribu‹ +("autoIncrement")); + +210 +$this +-> +isLazyLßd + = $this-> + `boޗnV®ue +($this-> + `g‘A‰ribu‹ +("lazyLoad")); + +213 +$this +-> + `g‘Domaš +()-> + `»¶aûSqlTy³ +($this-> + `g‘A‰ribu‹ +("sqlType")); + +214 ià(! +$this +-> + `g‘A‰ribu‹ +("size"è&& $this-> + `g‘Domaš +()-> + `g‘Ty³ +() == 'VARCHAR' && !$this->getAttribute("sqlType")) { + +215 +$size + = 255; + +217 +$size + = +$this +-> + `g‘A‰ribu‹ +("size"); + +219 +$this +-> + `g‘Domaš +()-> + `»¶aûSize +( +$size +); + +220 +$this +-> + `g‘Domaš +()-> + `»¶aûSÿË +($this-> + `g‘A‰ribu‹ +("scale")); + +222 +$defv® + = +$this +-> + `g‘A‰ribu‹ +("defaultValue", $this->getAttribute("default")); + +223 ià( +$defv® + !=ð +nuÎ + && + `¡¹Þow” +($defval) !== 'null') { + +224 +$this +-> + `g‘Domaš +()-> + `£tDeçuÉV®ue +( +Ãw + + `CÞumnDeçuÉV®ue +( +$defv® +, +CÞumnDeçuÉV®ue +:: +TYPE_VALUE +)); + +225 } + `–£if + ( +$this +-> + `g‘A‰ribu‹ +("deçuÉEx´"è!=ð +nuÎ +) { + +226 +$this +-> + `g‘Domaš +()-> + `£tDeçuÉV®ue +( +Ãw + + `CÞumnDeçuÉV®ue +($this-> + `g‘A‰ribu‹ +("deçuÉEx´"), +CÞumnDeçuÉV®ue +:: +TYPE_EXPR +)); + +229 +$this +-> +šh”™ªûTy³ + = $this-> + `g‘A‰ribu‹ +("inheritance"); + +230 +$this +-> +isInh”™ªû + = ($this-> +šh”™ªûTy³ + !=ð +nuÎ + + +231 && +$this +-> +šh”™ªûTy³ + !== "false"); + +234 +$this +-> +šputV®id©Ü + = $this-> + `g‘A‰ribu‹ +("inputValidator"); + +235 +$this +-> +desütiÚ + = $this-> + `g‘A‰ribu‹ +("description"); + +236 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +237 +throw + +Ãw + + `EngšeExû±iÚ +("E¼Ü s‘tšg u°cÞumÀ" . + `v¬_expÜt +( +$this +-> + `g‘A‰ribu‹ +("Çme"), +Œue +è. ": " . +$e +-> + `g‘Mes§ge +()); + +239 + } +} + +245 +public + +funùiÚ + + $g‘Domaš +() + +247 ià( +$this +-> +domaš + ==ð +nuÎ +) { + +248 +$this +-> +domaš + = +Ãw + + `Domaš +(); + +250  +$this +-> +domaš +; + +251 + } +} + +256 +public + +funùiÚ + + $g‘FuÎyQu®if›dName +() + +258  ( +$this +-> +·»ÁTabË +-> + `g‘Name +() . '.' . $this->getName()); + +259 + } +} + +264 +public + +funùiÚ + + $g‘Name +() + +266  +$this +-> +Çme +; + +267 + } +} + +272 +public + +funùiÚ + + $£tName +( +$ÃwName +) + +274 +$this +-> +Çme + = +$ÃwName +; + +275 + } +} + +280 +public + +funùiÚ + + $g‘DesütiÚ +() + +282  +$this +-> +desütiÚ +; + +283 + } +} + +290 +public + +funùiÚ + + $£tDesütiÚ +( +$ÃwDesütiÚ +) + +292 +$this +-> +desütiÚ + = +$ÃwDesütiÚ +; + +293 + } +} + +301 +public + +funùiÚ + + $g‘PhpName +() + +303 ià( +$this +-> +phpName + ==ð +nuÎ +) { + +304 +$this +-> + `£tPhpName +(); + +306  +$this +-> +phpName +; + +307 + } +} + +317 +public + +funùiÚ + + $£tPhpName +( +$phpName + = +nuÎ +) + +319 ià( +$phpName + =ð +nuÎ +) { + +320 +$this +-> +phpName + = +£lf +:: + `g’”©ePhpName +($this-> +Çme +, $this-> +phpNamšgM‘hod +, $this-> +ÇmeP»fix +); + +322 +$this +-> +phpName + = +$phpName +; + +324 + } +} + +333 +public + +funùiÚ + + $g‘StudlyPhpName +() + +335 +$ph²ame + = +$this +-> + `g‘PhpName +(); + +336 ià( + `¡¾’ +( +$ph²ame +) > 1) { + +337  + `¡¹Þow” +( + `sub¡r +( +$ph²ame +, 0, 1)) . substr($phpname, 1); + +339  + `¡¹Þow” +( +$ph²ame +); + +341 + } +} + +347 +public + +funùiÚ + + $g‘AcûssÜVisibž™y +() { + +348 ià( +$this +-> +acûssÜVisibž™y + !=ð +nuÎ +) { + +349  +$this +-> +acûssÜVisibž™y +; + +351  +£lf +:: +DEFAULT_VISIBILITY +; + +353 + } +} + +359 +public + +funùiÚ + + $£tAcûssÜVisibž™y +( +$ÃwVisibž™y +) { + +360 ià( + `š_¬¿y +( +$ÃwVisibž™y +, +£lf +:: +$v®id_visibž™›s +)) { + +361 +$this +-> +acûssÜVisibž™y + = +$ÃwVisibž™y +; + +363 +$this +-> +acûssÜVisibž™y + = +£lf +:: +DEFAULT_VISIBILITY +; + +366 + } +} + +372 +public + +funùiÚ + + $g‘MutÜVisibž™y +() { + +373 ià( +$this +-> +mutÜVisibž™y + !=ð +nuÎ +) { + +374  +$this +-> +mutÜVisibž™y +; + +376  +£lf +:: +DEFAULT_VISIBILITY +; + +378 + } +} + +384 +public + +funùiÚ + + $£tMutÜVisibž™y +( +$ÃwVisibž™y +) { + +385 ià( + `š_¬¿y +( +$ÃwVisibž™y +, +£lf +:: +$v®id_visibž™›s +)) { + +386 +$this +-> +mutÜVisibž™y + = +$ÃwVisibž™y +; + +388 +$this +-> +mutÜVisibž™y + = +£lf +:: +DEFAULT_VISIBILITY +; + +391 + } +} + +398 +public + +funùiÚ + + $g‘CÚ¡ªtName +() + +400 +$þas¢ame + = +$this +-> + `g‘TabË +()-> + `g‘PhpName +() . 'Peer'; + +402 ià( +$this +-> + `g‘P“rName +()) { + +403 +$cÚ¡ + = + `¡¹ouµ” +( +$this +-> + `g‘P“rName +()); + +405 +$cÚ¡ + = + `¡¹ouµ” +( +$this +-> + `g‘Name +()); + +407  +$þas¢ame +.'::'. +$cÚ¡ +; + +408 + } +} + +414 +public + +funùiÚ + + $g‘P“rName +() { + +415  +$this +-> +³”Name +; + +416 + } +} + +422 +public + +funùiÚ + + $£tP“rName +( +$Çme +) { + +423 +$this +-> +³”Name + = +$Çme +; + +424 + } +} + +434 +public + +funùiÚ + + $g‘PhpTy³ +() + +436 ià( +$this +-> +phpTy³ + !=ð +nuÎ +) { + +437  +$this +-> +phpTy³ +; + +439  +$this +-> + `g‘PhpN©ive +(); + +440 + } +} + +446 +public + +funùiÚ + + $g‘Pos™iÚ +() + +448  +$this +-> +pos™iÚ +; + +449 + } +} + +455 +public + +funùiÚ + + $£tPos™iÚ +( +$v +) + +457 +$this +-> +pos™iÚ + = +$v +; + +458 + } +} + +463 +public + +funùiÚ + + $£tTabË +( +TabË + +$·»Á +) + +465 +$this +-> +·»ÁTabË + = +$·»Á +; + +466 + } +} + +471 +public + +funùiÚ + + $g‘TabË +() + +473  +$this +-> +·»ÁTabË +; + +474 + } +} + +479 +public + +funùiÚ + + $g‘TabËName +() + +481  +$this +-> +·»ÁTabË +-> + `g‘Name +(); + +482 + } +} + +489 +public + +funùiÚ + + $addInh”™ªû +( +$šhd©a +) + +491 ià( +$šhd©a + +š¡ªûof + +Inh”™ªû +) { + +492 +$šh + = +$šhd©a +; + +493 +$šh +-> + `£tCÞumn +( +$this +); + +494 ià( +$this +-> +šh”™ªûLi¡ + ==ð +nuÎ +) { + +495 +$this +-> +šh”™ªûLi¡ + = + `¬¿y +(); + +496 +$this +-> +isEnum”©edCÏs£s + = +Œue +; + +498 +$this +-> +šh”™ªûLi¡ +[] = +$šh +; + +499  +$šh +; + +501 +$šh + = +Ãw + + `Inh”™ªû +(); + +502 +$šh +-> + `lßdFromXML +( +$šhd©a +); + +503  +$this +-> + `addInh”™ªû +( +$šh +); + +505 + } +} + +510 +public + +funùiÚ + + $g‘Chžd»n +() + +512  +$this +-> +šh”™ªûLi¡ +; + +513 + } +} + +519 +public + +funùiÚ + + $isInh”™ªû +() + +521  +$this +-> +isInh”™ªû +; + +522 + } +} + +527 +public + +funùiÚ + + $isEnum”©edCÏs£s +() + +529  +$this +-> +isEnum”©edCÏs£s +; + +530 + } +} + +535 +public + +funùiÚ + + $isNÙNuÎ +() + +537  +$this +-> +isNÙNuÎ +; + +538 + } +} + +543 +public + +funùiÚ + + $£tNÙNuÎ +( +$¡©us +) + +545 +$this +-> +isNÙNuÎ + = ( +boޗn +è +$¡©us +; + +546 + } +} + +553 +public + +funùiÚ + + $g‘NÙNuÎSŒšg +() + +555  +$this +-> + `g‘TabË +()-> + `g‘D©aba£ +()-> + `g‘PÏtfÜm +()-> + `g‘NuÎSŒšg +($this-> + `isNÙNuÎ +()); + +556 + } +} + +563 +public + +funùiÚ + + $£tPrim¬ySŒšg +( +$v +) + +565 +$this +-> +isPrim¬ySŒšg + = ( +boޗn +è +$v +; + +566 + } +} + +572 +public + +funùiÚ + + $isPrim¬ySŒšg +() + +574  +$this +-> +isPrim¬ySŒšg +; + +575 + } +} + +581 +public + +funùiÚ + + $£tPrim¬yKey +( +$v +) + +583 +$this +-> +isPrim¬yKey + = ( +boޗn +è +$v +; + +584 + } +} + +589 +public + +funùiÚ + + $isPrim¬yKey +() + +591  +$this +-> +isPrim¬yKey +; + +592 + } +} + +597 +public + +funùiÚ + + $£tNodeKey +( +$nk +) + +599 +$this +-> +isNodeKey + = ( +boޗn +è +$nk +; + +600 + } +} + +605 +public + +funùiÚ + + $isNodeKey +() + +607  +$this +-> +isNodeKey +; + +608 + } +} + +613 +public + +funùiÚ + + $£tNodeKeyS• +( +$£p +) + +615 +$this +-> +nodeKeyS• + = ( +¡ršg +è +$£p +; + +616 + } +} + +621 +public + +funùiÚ + + $g‘NodeKeyS• +() + +623  +$this +-> +nodeKeyS• +; + +624 + } +} + +629 +public + +funùiÚ + + $£tNe¡edS‘LeáKey +( +$n¦k +) + +631 +$this +-> +isNe¡edS‘LeáKey + = ( +boޗn +è +$n¦k +; + +632 + } +} + +637 +public + +funùiÚ + + $isNe¡edS‘LeáKey +() + +639  +$this +-> +isNe¡edS‘LeáKey +; + +640 + } +} + +645 +public + +funùiÚ + + $£tNe¡edS‘RightKey +( +$n¤k +) + +647 +$this +-> +isNe¡edS‘RightKey + = ( +boޗn +è +$n¤k +; + +648 + } +} + +653 +public + +funùiÚ + + $isNe¡edS‘RightKey +() + +655  +$this +-> +isNe¡edS‘RightKey +; + +656 + } +} + +661 +public + +funùiÚ + + $£tT»eScÝeKey +( +$tsk +) + +663 +$this +-> +isT»eScÝeKey + = ( +boޗn +è +$tsk +; + +664 + } +} + +670 +public + +funùiÚ + + $isT»eScÝeKey +() + +672  +$this +-> +isT»eScÝeKey +; + +673 + } +} + +679 +public + +funùiÚ + + $£tUnique +( +$u +) + +681 +$this +-> +isUnique + = +$u +; + +682 + } +} + +688 +public + +funùiÚ + + $isUnique +() + +690  +$this +-> +isUnique +; + +691 + } +} + +697 +public + +funùiÚ + + $»quœesT¿n§ùiÚInPo¡g»s +() + +699  +$this +-> +ÃedsT¿n§ùiÚInPo¡g»s +; + +700 + } +} + +706 +public + +funùiÚ + + $isFÜeignKey +() + +708  ( + `couÁ +( +$this +-> + `g‘FÜeignKeys +()) > 0); + +709 + } +} + +715 +public + +funùiÚ + + $hasMuɝËFK +() + +717  ( + `couÁ +( +$this +-> + `g‘FÜeignKeys +()) > 1); + +718 + } +} + +724 +public + +funùiÚ + + $g‘FÜeignKeys +() + +726  +$this +-> +·»ÁTabË +-> + `g‘CÞumnFÜeignKeys +($this-> +Çme +); + +727 + } +} + +732 +public + +funùiÚ + + $addRe㼔 +( +FÜeignKey + +$fk +) + +734 ià( +$this +-> +»ã¼”s + ==ð +nuÎ +) { + +735 +$this +-> +»ã¼”s + = + `¬¿y +(); + +737 +$this +-> +»ã¼”s +[] = +$fk +; + +738 + } +} + +743 +public + +funùiÚ + + $g‘Re㼔s +() + +745 ià( +$this +-> +»ã¼”s + ==ð +nuÎ +) { + +746 +$this +-> +»ã¼”s + = + `¬¿y +(); + +748  +$this +-> +»ã¼”s +; + +749 + } +} + +759 +public + +funùiÚ + + $£tDomašFÜTy³ +( +$´Ý–Ty³ +) + +761 +$this +-> + `g‘Domaš +()-> + `cÝy +($this-> + `g‘PÏtfÜm +()-> + `g‘DomašFÜTy³ +( +$´Ý–Ty³ +)); + +762 + } +} + +769 +public + +funùiÚ + + $£tTy³ +( +$´Ý–Ty³ +) + +771 +$this +-> + `g‘Domaš +()-> + `£tTy³ +( +$´Ý–Ty³ +); + +772 ià( +$´Ý–Ty³ + =ð +PrݖTy³s +:: +VARBINARY +|| $´Ý–Ty³ =ðPrݖTy³s:: +LONGVARBINARY + || $´Ý–Ty³ =ðPrݖTy³s:: +BLOB +) { + +773 +$this +-> +ÃedsT¿n§ùiÚInPo¡g»s + = +Œue +; + +775 + } +} + +782 +public + +funùiÚ + + $g‘Ty³ +() + +784  +$this +-> + `g‘Domaš +()-> + `g‘Ty³ +(); + +785 + } +} + +791 +public + +funùiÚ + + $g‘PDOTy³ +() + +793  +PrݖTy³s +:: + `g‘PDOTy³ +( +$this +-> + `g‘Ty³ +()); + +794 + } +} + +799 +public + +funùiÚ + + $g‘PrݖTy³ +() + +801  +$this +-> + `g‘Ty³ +(); + +802 + } +} + +808 +public + +funùiÚ + + $isLobTy³ +() + +810  +PrݖTy³s +:: + `isLobTy³ +( +$this +-> + `g‘Ty³ +()); + +811 + } +} + +816 +public + +funùiÚ + + $isTextTy³ +() + +818  +PrݖTy³s +:: + `isTextTy³ +( +$this +-> + `g‘Ty³ +()); + +819 + } +} + +825 +public + +funùiÚ + + $isNum”icTy³ +() + +827  +PrݖTy³s +:: + `isNum”icTy³ +( +$this +-> + `g‘Ty³ +()); + +828 + } +} + +834 +public + +funùiÚ + + $isTempÜ®Ty³ +() + +836  +PrݖTy³s +:: + `isTempÜ®Ty³ +( +$this +-> + `g‘Ty³ +()); + +837 + } +} + +842 +public + +funùiÚ + + $­³ndXml +( +DOMNode + +$node +) + +844 +$doc + = ( +$node + +š¡ªûof + +DOMDocum’t +è? $nod: $node-> +owÃrDocum’t +; + +846 +$cÞNode + = +$node +-> + `­³ndChžd +( +$doc +-> + `ü—‹EËm’t +('column')); + +847 +$cÞNode +-> + `£tA‰ribu‹ +('Çme', +$this +-> +Çme +); + +849 ià( +$this +-> +phpName + !=ð +nuÎ +) { + +850 +$cÞNode +-> + `£tA‰ribu‹ +('phpName', +$this +-> + `g‘PhpName +()); + +853 +$cÞNode +-> + `£tA‰ribu‹ +('ty³', +$this +-> + `g‘Ty³ +()); + +855 +$domaš + = +$this +-> + `g‘Domaš +(); + +857 ià( +$domaš +-> + `g‘Size +(è!=ð +nuÎ +) { + +858 +$cÞNode +-> + `£tA‰ribu‹ +('size', +$domaš +-> + `g‘Size +()); + +861 ià( +$domaš +-> + `g‘SÿË +(è!=ð +nuÎ +) { + +862 +$cÞNode +-> + `£tA‰ribu‹ +('sÿË', +$domaš +-> + `g‘SÿË +()); + +865 ià( +$this +-> +isPrim¬yKey +) { + +866 +$cÞNode +-> + `£tA‰ribu‹ +('´im¬yKey', + `v¬_expÜt +( +$this +-> +isPrim¬yKey +, +Œue +)); + +869 ià( +$this +-> +isAutoInüem’t +) { + +870 +$cÞNode +-> + `£tA‰ribu‹ +('autoInüem’t', + `v¬_expÜt +( +$this +-> +isAutoInüem’t +, +Œue +)); + +873 ià( +$this +-> +isNÙNuÎ +) { + +874 +$cÞNode +-> + `£tA‰ribu‹ +('required', 'true'); + +876 +$cÞNode +-> + `£tA‰ribu‹ +('required', 'false'); + +879 ià( +$domaš +-> + `g‘DeçuÉV®ue +(è!=ð +nuÎ +) { + +880 +$def + = +$domaš +-> + `g‘DeçuÉV®ue +(); + +881 ià( +$def +-> + `isEx´essiÚ +()) { + +882 +$cÞNode +-> + `£tA‰ribu‹ +('deçuÉEx´', +$def +-> + `g‘V®ue +()); + +884 +$cÞNode +-> + `£tA‰ribu‹ +('deçuÉV®ue', +$def +-> + `g‘V®ue +()); + +888 ià( +$this +-> + `isInh”™ªû +()) { + +889 +$cÞNode +-> + `£tA‰ribu‹ +('šh”™ªû', +$this +-> +šh”™ªûTy³ +); + +890 + `fܗch + ( +$this +-> +šh”™ªûLi¡ + +as + +$šh”™ªû +) { + +891 +$šh”™ªû +-> + `­³ndXml +( +$cÞNode +); + +895 ià( +$this +-> + `isNodeKey +()) { + +896 +$cÞNode +-> + `£tA‰ribu‹ +('nodeKey', 'true'); + +897 ià( +$this +-> + `g‘NodeKeyS• +(è!=ð +nuÎ +) { + +898 +$cÞNode +-> + `£tA‰ribu‹ +('nodeKeyS•', +$this +-> +nodeKeyS• +); + +902 + `fܗch + ( +$this +-> +v’dÜInfos + +as + +$vi +) { + +903 +$vi +-> + `­³ndXml +( +$cÞNode +); + +905 + } +} + +911 +public + +funùiÚ + + $g‘Size +() + +913  +$this +-> +domaš +-> + `g‘Size +(); + +914 + } +} + +920 +public + +funùiÚ + + $£tSize +( +$ÃwSize +) + +922 +$this +-> +domaš +-> + `£tSize +( +$ÃwSize +); + +923 + } +} + +929 +public + +funùiÚ + + $g‘SÿË +() + +931  +$this +-> +domaš +-> + `g‘SÿË +(); + +932 + } +} + +938 +public + +funùiÚ + + $£tSÿË +( +$ÃwSÿË +) + +940 +$this +-> +domaš +-> + `£tSÿË +( +$ÃwSÿË +); + +941 + } +} + +947 +public + +funùiÚ + + $´štSize +() + +949  +$this +-> +domaš +-> + `´štSize +(); + +950 + } +} + +956 +public + +funùiÚ + + $g‘DeçuÉS‘tšg +() + +958 +$dæt + = ""; + +959 +$deçuÉV®ue + = +$this +-> + `g‘DeçuÉV®ue +(); + +960 ià( +$deçuÉV®ue + !=ð +nuÎ +) { + +961 +$dæt + .= "default "; + +963 ià( +$this +-> + `g‘DeçuÉV®ue +()-> + `isEx´essiÚ +()) { + +964 +$dæt + .ð +$this +-> + `g‘DeçuÉV®ue +()-> + `g‘V®ue +(); + +966 ià( +$this +-> + `isTextTy³ +()) { + +967 +$dæt + .ð +$this +-> + `g‘PÏtfÜm +()-> + `quÙe +( +$deçuÉV®ue +-> + `g‘V®ue +()); + +968 } + `–£if + ( +$this +-> + `g‘Ty³ +(è=ð +PrݖTy³s +:: +BOOLEAN +) { + +969 +$dæt + .ð +$this +-> + `g‘PÏtfÜm +()-> + `g‘BoޗnSŒšg +( +$deçuÉV®ue +-> + `g‘V®ue +()); + +971 +$dæt + .ð +$deçuÉV®ue +-> + `g‘V®ue +(); + +975  +$dæt +; + +976 + } +} + +982 +public + +funùiÚ + + $g‘DeçuÉV®ueSŒšg +() + +984 +$deçuÉV®ue + = +$this +-> + `g‘DeçuÉV®ue +(); + +985 ià( +$deçuÉV®ue + !=ð +nuÎ +) { + +986 ià( +$this +-> + `isNum”icTy³ +()) { + +987 +$dæt + = (è +$deçuÉV®ue +-> + `g‘V®ue +(); + +988 } + `–£if + ( +$this +-> + `isTextTy³ +(è|| $this-> + `g‘DeçuÉV®ue +()-> + `isEx´essiÚ +()) { + +989 +$dæt + = "'" . + `¡r_»¶aû +("'", "\'", +$deçuÉV®ue +-> + `g‘V®ue +()) . "'"; + +990 } + `–£if + ( +$this +-> + `g‘Ty³ +(è=ð +PrݖTy³s +:: +BOOLEAN +) { + +991 +$dæt + = +$this +-> + `boޗnV®ue +( +$deçuÉV®ue +-> + `g‘V®ue +()) ? 'true' : 'false'; + +993 +$dæt + = "'" . +$deçuÉV®ue +-> + `g‘V®ue +() . "'"; + +996 +$dæt + = "null"; + +998  +$dæt +; + +999 + } +} + +1004 +public + +funùiÚ + + $£tDeçuÉV®ue +( +$def +) + +1006 +$this +-> +domaš +-> + `£tDeçuÉV®ue +( +$def +); + +1007 + } +} + +1014 +public + +funùiÚ + + $g‘DeçuÉV®ue +() + +1016  +$this +-> +domaš +-> + `g‘DeçuÉV®ue +(); + +1017 + } +} + +1024 +public + +funùiÚ + + $g‘PhpDeçuÉV®ue +() + +1026  +$this +-> +domaš +-> + `g‘PhpDeçuÉV®ue +(); + +1027 + } +} + +1032 +public + +funùiÚ + + $g‘IÅutV®id©Ü +() + +1034  +$this +-> +šputV®id©Ü +; + +1035 + } +} + +1041 +public + +funùiÚ + + $isAutoInüem’t +() + +1043  +$this +-> +isAutoInüem’t +; + +1044 + } +} + +1050 +public + +funùiÚ + + $isLazyLßd +() + +1052  +$this +-> +isLazyLßd +; + +1053 + } +} + +1059 +public + +funùiÚ + + $g‘AutoInüem’tSŒšg +() + +1061 ià( +$this +-> + `isAutoInüem’t +()&& +IDM‘hod +:: +NATIVE + ==ð$this-> + `g‘TabË +()-> + `g‘IdM‘hod +()) { + +1062  +$this +-> + `g‘PÏtfÜm +()-> + `g‘AutoInüem’t +(); + +1063 } + `–£if + ( +$this +-> + `isAutoInüem’t +()) { + +1064 +throw + +Ãw + + `EngšeExû±iÚ +("You hav¥ecif›d‡utoInüem’ˆfÜ cÞumÀ'" . +$this +-> +Çme + . "' buˆyou havnÙ s³cif›d idM‘hod=\"Çtive\" f܁abË '" . $this-> + `g‘TabË +()-> + `g‘Name +() . "'."); + +1067 + } +} + +1073 +public + +funùiÚ + + $£tAutoInüem’t +( +$v®ue +) + +1075 +$this +-> +isAutoInüem’t + = ( +boޗn +è +$v®ue +; + +1076 + } +} + +1084 +public + +funùiÚ + + $£tTy³FromSŒšg +( +$ty³Name +, +$size +) + +1086 +$Š + = + `¡¹ouµ” +( +$ty³Name +); + +1087 +$this +-> + `£tTy³ +( +$Š +); + +1089 ià( +$size + !=ð +nuÎ +) { + +1090 +$this +-> +size + = +$size +; + +1093 ià( + `¡½os +( +$Š +, "CHAR"è!=ð +çl£ +) { + +1094 +$this +-> +domaš +-> + `£tTy³ +( +PrݖTy³s +:: +VARCHAR +); + +1095 } + `–£if + ( + `¡½os +( +$Š +, "INT"è!=ð +çl£ +) { + +1096 +$this +-> +domaš +-> + `£tTy³ +( +PrݖTy³s +:: +INTEGER +); + +1097 } + `–£if + ( + `¡½os +( +$Š +, "FLOAT"è!=ð +çl£ +) { + +1098 +$this +-> +domaš +-> + `£tTy³ +( +PrݖTy³s +:: +FLOAT +); + +1099 } + `–£if + ( + `¡½os +( +$Š +, "DATE"è!=ð +çl£ +) { + +1100 +$this +-> +domaš +-> + `£tTy³ +( +PrݖTy³s +:: +DATE +); + +1101 } + `–£if + ( + `¡½os +( +$Š +, "TIME"è!=ð +çl£ +) { + +1102 +$this +-> +domaš +-> + `£tTy³ +( +PrݖTy³s +:: +TIMESTAMP +); + +1103 } ià( + `¡½os +( +$Š +, "BINARY"è!=ð +çl£ +) { + +1104 +$this +-> +domaš +-> + `£tTy³ +( +PrݖTy³s +:: +LONGVARBINARY +); + +1106 +$this +-> +domaš +-> + `£tTy³ +( +PrݖTy³s +:: +VARCHAR +); + +1108 + } +} + +1116 +public + +funùiÚ + + $g‘PhpN©ive +() + +1118  +PrݖTy³s +:: + `g‘PhpN©ive +( +$this +-> + `g‘Ty³ +()); + +1119 + } +} + +1126 +public + +funùiÚ + + $isPhpPrim™iveTy³ +() + +1128  +PrݖTy³s +:: + `isPhpPrim™iveTy³ +( +$this +-> + `g‘PhpTy³ +()); + +1129 + } +} + +1136 +public + +funùiÚ + + $isPhpPrim™iveNum”icTy³ +() + +1138  +PrݖTy³s +:: + `isPhpPrim™iveNum”icTy³ +( +$this +-> + `g‘PhpTy³ +()); + +1139 + } +} + +1146 +public + +funùiÚ + + $isPhpObjeùTy³ +() + +1148  +PrݖTy³s +:: + `isPhpObjeùTy³ +( +$this +-> + `g‘PhpTy³ +()); + +1149 + } +} + +1156 +public + +funùiÚ + + $g‘PÏtfÜm +() + +1158  +$this +-> + `g‘TabË +()-> + `g‘D©aba£ +()-> + `g‘PÏtfÜm +(); + +1159 + } +} + +1166 +public + +funùiÚ + + $g‘SqlSŒšg +() + +1168 +$sb + = ""; + +1169 +$sb + .ð +$this +-> + `g‘PÏtfÜm +()-> + `quÙeId’tif›r +($this-> + `g‘Name +()) . " "; + +1170 +$sb + .ð +$this +-> + `g‘Domaš +()-> + `g‘SqlTy³ +(); + +1171 ià( +$this +-> + `g‘PÏtfÜm +()-> + `hasSize +($this-> + `g‘Domaš +()-> + `g‘SqlTy³ +())) { + +1172 +$sb + .ð +$this +-> + `g‘Domaš +()-> + `´štSize +(); + +1174 +$sb + .= " "; + +1175 +$sb + .ð +$this +-> + `g‘DeçuÉS‘tšg +() . " "; + +1176 +$sb + .ð +$this +-> + `g‘NÙNuÎSŒšg +() . " "; + +1177 +$sb + .ð +$this +-> + `g‘AutoInüem’tSŒšg +(); + +1178  + `Œim +( +$sb +); + +1179 + } +} + +1181 +public +  +funùiÚ + +g’”©ePhpName +( +$Çme +, +$phpNamšgM‘hod + = +PhpNameG’”©Ü +:: +CONV_METHOD_CLEAN +, +$ÇmeP»fix + = +nuÎ +) { + +1182  +NameFaùÜy +:: +g’”©eName +(NameFaùÜy:: +PHP_GENERATOR +, +¬¿y +( +$Çme +, +$phpNamšgM‘hod +, +$ÇmeP»fix +)); + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/ColumnDefaultValue.php + +1 + `£tV®ue +( +$v®ue +); + +53 ià( +$ty³ + !=ð +nuÎ +) { + +54 +$this +-> + `£tTy³ +( +$ty³ +); + +61 +public + +funùiÚ + + $g‘Ty³ +() + +63  +$this +-> +ty³ +; + +64 + } +} + +69 +public + +funùiÚ + + $£tTy³ +( +$ty³ +) + +71 +$this +-> +ty³ + = +$ty³ +; + +72 + } +} + +79 +public + +funùiÚ + + $isEx´essiÚ +() + +81  ( +$this +-> +ty³ + =ð +£lf +:: +TYPE_EXPR +); + +82 + } +} + +87 +public + +funùiÚ + + $g‘V®ue +() + +89  +$this +-> +v®ue +; + +90 + } +} + +95 +public + +funùiÚ + + $£tV®ue +( +$v®ue +) + +97 +$this +-> +v®ue + = +$v®ue +; + +98 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/ConstraintNameGenerator.php + +1 + `g‘PÏtfÜm +()-> + `g‘MaxCÞumnNameL’gth +(); + +62 +$maxBodyL’gth + = ( +$maxCÞumnNameL’gth + - + `¡¾’ +( +$ÇmePo¡fix +) + +63 - + `¡¾’ +( +$cÚ¡¿štNbr +) - 2); + +65 ià( +£lf +:: +DEBUG +) { + +66 + `´št +("maxCÞumnNameL’gth=" . +$maxCÞumnNameL’gth + + +67 . " maxBodyL’gth=" . +$maxBodyL’gth + . "\n"); + +69 } + `ÿtch + ( +EngšeExû±iÚ + +$e +) { + +70 +echo + +$e +; + +71 +throw + +$e +; + +75 ià( +$maxBodyL’gth + !=ð-1 && + `¡¾’ +( +$Çme +) > $maxBodyLength) { + +76 +$Çme + = + `sub¡r +($Çme, 0, +$maxBodyL’gth +); + +79 +$Çme + .ð +£lf +:: +STD_SEPARATOR_CHAR + . +$ÇmePo¡fix + + +80 . +£lf +:: +STD_SEPARATOR_CHAR + . +$cÚ¡¿štNbr +; + +82  +$Çme +; + +84 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Database.php + +1 +Çme + = +$Çme +; + +82 +´Ùeùed + +funùiÚ + + $£tupObjeù +() + +84 +$this +-> +Çme + = $this-> + `g‘A‰ribu‹ +("name"); + +85 +$this +-> +pkg + = $this-> + `g‘A‰ribu‹ +("package"); + +86 +$this +-> +ba£CÏss + = $this-> + `g‘A‰ribu‹ +("baseClass"); + +87 +$this +-> +ba£P“r + = $this-> + `g‘A‰ribu‹ +("basePeer"); + +88 +$this +-> +deçuÉIdM‘hod + = $this-> + `g‘A‰ribu‹ +("deçuÉIdM‘hod", +IDM‘hod +:: +NATIVE +); + +89 +$this +-> +deçuÉPhpNamšgM‘hod + = $this-> + `g‘A‰ribu‹ +("deçuÉPhpNamšgM‘hod", +NameG’”©Ü +:: +CONV_METHOD_UNDERSCORE +); + +90 +$this +-> +deçuÉT¿n¦©eM‘hod + = $this-> + `g‘A‰ribu‹ +("deçuÉT¿n¦©eM‘hod", +V®id©Ü +:: +TRANSLATE_NONE +); + +91 +$this +-> +h—vyIndexšg + = $this-> + `boޗnV®ue +($this-> + `g‘A‰ribu‹ +("heavyIndexing")); + +92 + } +} + +99 +public + +funùiÚ + + $g‘PÏtfÜm +() + +101  +$this +-> +¶©fÜm +; + +102 + } +} + +109 +public + +funùiÚ + + $£tPÏtfÜm +( +$¶©fÜm +) + +111 +$this +-> +¶©fÜm + = +$¶©fÜm +; + +112 + } +} + +117 +public + +funùiÚ + + $g‘Name +() + +119  +$this +-> +Çme +; + +120 + } +} + +125 +public + +funùiÚ + + $£tName +( +$Çme +) + +127 +$this +-> +Çme + = +$Çme +; + +128 + } +} + +134 +public + +funùiÚ + + $g‘Package +() + +136  +$this +-> +pkg +; + +137 + } +} + +143 +public + +funùiÚ + + $£tPackage +( +$v +) + +145 +$this +-> +pkg + = +$v +; + +146 + } +} + +152 +public + +funùiÚ + + $g‘Ba£CÏss +() + +154  +$this +-> +ba£CÏss +; + +155 + } +} + +161 +public + +funùiÚ + + $£tBa£CÏss +( +$v +) + +163 +$this +-> +ba£CÏss + = +$v +; + +164 + } +} + +170 +public + +funùiÚ + + $g‘Ba£P“r +() + +172  +$this +-> +ba£P“r +; + +173 + } +} + +179 +public + +funùiÚ + + $£tBa£P“r +( +$v +) + +181 +$this +-> +ba£P“r + = +$v +; + +182 + } +} + +188 +public + +funùiÚ + + $g‘DeçuÉIdM‘hod +() + +190  +$this +-> +deçuÉIdM‘hod +; + +191 + } +} + +197 +public + +funùiÚ + + $£tDeçuÉIdM‘hod +( +$v +) + +199 +$this +-> +deçuÉIdM‘hod + = +$v +; + +200 + } +} + +207 +public + +funùiÚ + + $g‘DeçuÉPhpNamšgM‘hod +() + +209  +$this +-> +deçuÉPhpNamšgM‘hod +; + +210 + } +} + +216 +public + +funùiÚ + + $£tDeçuÉPhpNamšgM‘hod +( +$v +) + +218 +$this +-> +deçuÉPhpNamšgM‘hod + = +$v +; + +219 + } +} + +226 +public + +funùiÚ + + $g‘DeçuÉT¿n¦©eM‘hod +() + +228  +$this +-> +deçuÉT¿n¦©eM‘hod +; + +229 + } +} + +235 +public + +funùiÚ + + $£tDeçuÉT¿n¦©eM‘hod +( +$v +) + +237 +$this +-> +deçuÉT¿n¦©eM‘hod + = +$v +; + +238 + } +} + +248 +public + +funùiÚ + + $isH—vyIndexšg +() + +250  +$this +-> + `g‘H—vyIndexšg +(); + +251 + } +} + +258 +public + +funùiÚ + + $g‘H—vyIndexšg +() + +260  +$this +-> +h—vyIndexšg +; + +261 + } +} + +267 +public + +funùiÚ + + $£tH—vyIndexšg +( +$v +) + +269 +$this +-> +h—vyIndexšg + = ( +boޗn +è +$v +; + +270 + } +} + +275 +public + +funùiÚ + + $g‘TabËs +() + +277  +$this +-> +bËLi¡ +; + +278 + } +} + +285 +public + +funùiÚ + + $g‘TabË +( +$Çme +) + +287 ià( + `is£t +( +$this +-> +bËsByName +[ +$Çme +])) { + +288  +$this +-> +bËsByName +[ +$Çme +]; + +290  +nuÎ +; + +291 + } +} + +298 +public + +funùiÚ + + $g‘TabËByPhpName +( +$phpName +) + +300 ià( + `is£t +( +$this +-> +bËsByPhpName +[ +$phpName +])) { + +301  +$this +-> +bËsByPhpName +[ +$phpName +]; + +303  +nuÎ +; + +304 + } +} + +309 +public + +funùiÚ + + $addTabË +( +$d©a +) + +311 ià( +$d©a + +š¡ªûof + +TabË +) { + +312 +$tbl + = +$d©a +; + +313 +$tbl +-> + `£tD©aba£ +( +$this +); + +314 ià( + `is£t +( +$this +-> +bËsByName +[ +$tbl +-> + `g‘Name +()])) { + +315 +throw + +Ãw + + `EngšeExû±iÚ +("Du¶iÿ‹abË deþ¬ed: " . +$tbl +-> + `g‘Name +()); + +317 +$this +-> +bËLi¡ +[] = +$tbl +; + +318 +$this +-> +bËsByName +[ +$tbl +-> + `g‘Name +() ] = $tbl; + +319 +$this +-> +bËsByPhpName +[ +$tbl +-> + `g‘PhpName +() ] = $tbl; + +320 ià( +$tbl +-> + `g‘Package +(è==ð +nuÎ +) { + +321 +$tbl +-> + `£tPackage +( +$this +-> + `g‘Package +()); + +323  +$tbl +; + +325 +$tbl + = +Ãw + + `TabË +(); + +326 +$tbl +-> + `£tD©aba£ +( +$this +); + +327 +$tbl +-> + `lßdFromXML +( +$d©a +); + +328  +$this +-> + `addTabË +( +$tbl +); + +330 + } +} + +335 +public + +funùiÚ + + $£tAµD©a +( +AµD©a + +$·»Á +) + +337 +$this +-> +dbP¬’t + = +$·»Á +; + +338 + } +} + +343 +public + +funùiÚ + + $g‘AµD©a +() + +345  +$this +-> +dbP¬’t +; + +346 + } +} + +352 +public + +funùiÚ + + $addDomaš +( +$d©a +) { + +354 ià( +$d©a + +š¡ªûof + +Domaš +) { + +355 +$domaš + = +$d©a +; + +356 +$domaš +-> + `£tD©aba£ +( +$this +); + +357 +$this +-> +domašM­ +[ +$domaš +-> + `g‘Name +() ] = $domain; + +358  +$domaš +; + +360 +$domaš + = +Ãw + + `Domaš +(); + +361 +$domaš +-> + `£tD©aba£ +( +$this +); + +362 +$domaš +-> + `lßdFromXML +( +$d©a +); + +363  +$this +-> + `addDomaš +( +$domaš +); + +365 + } +} + +371 +public + +funùiÚ + + $g‘Domaš +( +$domašName +) + +373 ià( + `is£t +( +$this +-> +domašM­ +[ +$domašName +])) { + +374  +$this +-> +domašM­ +[ +$domašName +]; + +376  +nuÎ +; + +377 + } +} + +379 +public + +funùiÚ + + $g‘G’”©ÜCÚfig +() + +381  +$this +-> + `g‘AµD©a +()-> + `g‘PÏtfÜm +()-> + `g‘G’”©ÜCÚfig +(); + +382 + } +} + +388 +public + +funùiÚ + + $addBehaviÜ +( +$bd©a +) + +390 ià( +$bd©a + +š¡ªûof + +BehaviÜ +) { + +391 +$behaviÜ + = +$bd©a +; + +392 +$behaviÜ +-> + `£tD©aba£ +( +$this +); + +393 +$this +-> +behaviÜs +[ +$behaviÜ +-> + `g‘Name +()] = $behavior; + +394  +$behaviÜ +; + +396 +$þass + = +$this +-> + `g‘CÚfigu»dBehaviÜ +( +$bd©a +['name']); + +397 +$behaviÜ + = +Ãw + + `$þass +(); + +398 +$behaviÜ +-> + `lßdFromXML +( +$bd©a +); + +399  +$this +-> + `addBehaviÜ +( +$behaviÜ +); + +401 + } +} + +407 +public + +funùiÚ + + $g‘BehaviÜs +() + +409  +$this +-> +behaviÜs +; + +410 + } +} + +417 +public + +funùiÚ + + $g‘BehaviÜ +( +$Çme +) + +419  +$this +-> +behaviÜs +[ +$Çme +]; + +420 + } +} + +423 +public + +funùiÚ + + $doFš®In™Ÿliz©iÚ +() + +425 +$cÚfig + = +$this +-> + `g‘G’”©ÜCÚfig +(); + +426 if( +$cÚfig + && ( +$deçuÉBehaviÜs + = $cÚfig-> + `g‘BuždPrݔty +('behaviorDefault'))) + +429 +$deçuÉBehaviÜs + = + `ex¶ode +(',', $defaultBehaviors); + +430 + `fܗch + ( +$deçuÉBehaviÜs + +as + +$behaviÜ +) + +432 +$this +-> + `addBehaviÜ +( + `¬¿y +('Çme' => + `Œim +( +$behaviÜ +))); + +437 + `fܗch + ( +$this +-> + `g‘BehaviÜs +(è +as + +$behaviÜ +) + +439 +$behaviÜ +-> + `modifyD©aba£ +(); + +442 +$bËs + = +$this +-> + `g‘TabËs +(); + +444  +$i +=0, +$size += + `couÁ +( +$bËs +); $i < $size; $i++) { + +445 +$cu¼TabË + = +$bËs +[ +$i +]; + +473 +$cu¼TabË +-> + `doFš®In™Ÿliz©iÚ +(); + +476 +$fks + = +$cu¼TabË +-> + `g‘FÜeignKeys +(); + +477  +$j +=0, +$fksL’ += + `couÁ +( +$fks +); $j < $fksLen; $j++) { + +478 +$cu¼FK + = +$fks +[ +$j +]; + +479 +$fÜeignTabË + = +$this +-> + `g‘TabË +( +$cu¼FK +-> + `g‘FÜeignTabËName +()); + +480 ià( +$fÜeignTabË + ==ð +nuÎ +) { + +481 +throw + +Ãw + + `BuždExû±iÚ +("ERROR!! Attempto set foreign" + +483 . +$cu¼FK +-> + `g‘FÜeignTabËName +() . "!"); + +486 +$»ã¼”s + = +$fÜeignTabË +-> + `g‘Re㼔s +(); + +487 ià( +$»ã¼”s + ==ð +nuÎ + || ! + `š_¬¿y +( +$cu¼FK +, $»ã¼”s, +Œue +) ) { + +488 +$fÜeignTabË +-> + `addRe㼔 +( +$cu¼FK +); + +492 +$loÿlCÞumnNames + = +$cu¼FK +-> + `g‘LoÿlCÞumns +(); + +494  +$k +=0, +$lúL’ += + `couÁ +( +$loÿlCÞumnNames +); $k < $lcnLen; $k++) { + +496 +$loÿl + = +$cu¼TabË +-> + `g‘CÞumn +( +$loÿlCÞumnNames +[ +$k +]); + +501 ià( +$loÿl + ==ð +nuÎ +) { + +502 +throw + +Ãw + + `BuždExû±iÚ +("ERROR!! Attempto define foreign" + +504 . +$loÿlCÞumnNames +[ +$k +] . ", inable, " + +505 . +$cu¼TabË +-> + `g‘Name +() . "!"); + +509 ià( +$loÿl +-> + `isPrim¬yKey +()) { + +510 +$cu¼TabË +-> + `£tCڏšsFÜeignPK +( +Œue +); + +516 +$fÜeignCÞumnNames + = +$cu¼FK +-> + `g‘FÜeignCÞumns +(); + +517  +$k +=0, +$fúL’ += + `couÁ +( +$loÿlCÞumnNames +); $k < $fcnLen; $k++) { + +518 +$fÜeign + = +$fÜeignTabË +-> + `g‘CÞumn +( +$fÜeignCÞumnNames +[ +$k +]); + +521 ià( +$fÜeign + ==ð +nuÎ +) { + +522 +throw + +Ãw + + `BuždExû±iÚ +("ERROR!! Attempto set foreign" + +524 . +$fÜeignCÞumnNames +[ +$k +] . ", inable, " + +525 . +$fÜeignTabË +-> + `g‘Name +() . "!"); + +527 +$fÜeign +-> + `addRe㼔 +( +$cu¼FK +); + +532 + } +} + +537 +public + +funùiÚ + + $­³ndXml +( +DOMNode + +$node +) + +539 +$doc + = ( +$node + +š¡ªûof + +DOMDocum’t +è? $nod: $node-> +owÃrDocum’t +; + +541 +$dbNode + = +$node +-> + `­³ndChžd +( +$doc +-> + `ü—‹EËm’t +('database')); + +543 +$dbNode +-> + `£tA‰ribu‹ +('Çme', +$this +-> +Çme +); + +545 ià( +$this +-> +pkg +) { + +546 +$dbNode +-> + `£tA‰ribu‹ +('·ckage', +$this +-> +pkg +); + +549 ià( +$this +-> +deçuÉIdM‘hod +) { + +550 +$dbNode +-> + `£tA‰ribu‹ +('deçuÉIdM‘hod', +$this +-> +deçuÉIdM‘hod +); + +553 ià( +$this +-> +ba£CÏss +) { + +554 +$dbNode +-> + `£tA‰ribu‹ +('ba£CÏss', +$this +-> +ba£CÏss +); + +557 ià( +$this +-> +ba£P“r +) { + +558 +$dbNode +-> + `£tA‰ribu‹ +('ba£P“r', +$this +-> +ba£P“r +); + +561 ià( +$this +-> +deçuÉPhpNamšgM‘hod +) { + +562 +$dbNode +-> + `£tA‰ribu‹ +('deçuÉPhpNamšgM‘hod', +$this +-> +deçuÉPhpNamšgM‘hod +); + +565 ià( +$this +-> +deçuÉT¿n¦©eM‘hod +) { + +566 +$dbNode +-> + `£tA‰ribu‹ +('deçuÉT¿n¦©eM‘hod', +$this +-> +deçuÉT¿n¦©eM‘hod +); + +579 + `fܗch + ( +$this +-> +v’dÜInfos + +as + +$vi +) { + +580 +$vi +-> + `­³ndXml +( +$dbNode +); + +583 + `fܗch + ( +$this +-> +bËLi¡ + +as + +$bË +) { + +584 +$bË +-> + `­³ndXml +( +$dbNode +); + +587 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Domain.php + +1 +´Ý–Ty³ + = +$ty³ +; + +86 +$this +-> +sqlTy³ + = ( +$sqlTy³ + !=ð +nuÎ +è? $sqlTy³ : +$ty³ +; + +87 +$this +-> +size + = +$size +; + +88 +$this +-> +sÿË + = +$sÿË +; + +95 +public + +funùiÚ + + $cÝy +( +Domaš + +$domaš +) + +97 +$this +-> +deçuÉV®ue + = +$domaš +-> + `g‘DeçuÉV®ue +(); + +98 +$this +-> +desütiÚ + = +$domaš +-> + `g‘DesütiÚ +(); + +99 +$this +-> +Çme + = +$domaš +-> + `g‘Name +(); + +100 +$this +-> +sÿË + = +$domaš +-> + `g‘SÿË +(); + +101 +$this +-> +size + = +$domaš +-> + `g‘Size +(); + +102 +$this +-> +sqlTy³ + = +$domaš +-> + `g‘SqlTy³ +(); + +103 +$this +-> +´Ý–Ty³ + = +$domaš +-> + `g‘Ty³ +(); + +104 + } +} + +110 +´Ùeùed + +funùiÚ + + $£tupObjeù +() + +112 +$schemaTy³ + = + `¡¹ouµ” +( +$this +-> + `g‘A‰ribu‹ +("type")); + +113 +$this +-> + `cÝy +($this-> + `g‘D©aba£ +()-> + `g‘PÏtfÜm +()-> + `g‘DomašFÜTy³ +( +$schemaTy³ +)); + +116 +$this +-> +Çme + = $this-> + `g‘A‰ribu‹ +("name"); + +119 +$defv® + = +$this +-> + `g‘A‰ribu‹ +("defaultValue", $this->getAttribute("default")); + +120 ià( +$defv® + !=ð +nuÎ +) { + +121 +$this +-> + `£tDeçuÉV®ue +( +Ãw + + `CÞumnDeçuÉV®ue +( +$defv® +, +CÞumnDeçuÉV®ue +:: +TYPE_VALUE +)); + +122 } + `–£if + ( +$this +-> + `g‘A‰ribu‹ +("deçuÉEx´"è!=ð +nuÎ +) { + +123 +$this +-> + `£tDeçuÉV®ue +( +Ãw + + `CÞumnDeçuÉV®ue +($this-> + `g‘A‰ribu‹ +("deçuÉEx´"), +CÞumnDeçuÉV®ue +:: +TYPE_EXPR +)); + +126 +$this +-> +size + = $this-> + `g‘A‰ribu‹ +("size"); + +127 +$this +-> +sÿË + = $this-> + `g‘A‰ribu‹ +("scale"); + +128 +$this +-> +desütiÚ + = $this-> + `g‘A‰ribu‹ +("description"); + +129 + } +} + +135 +public + +funùiÚ + + $£tD©aba£ +( +D©aba£ + +$d©aba£ +) + +137 +$this +-> +d©aba£ + = +$d©aba£ +; + +138 + } +} + +144 +public + +funùiÚ + + $g‘D©aba£ +() + +146  +$this +-> +d©aba£ +; + +147 + } +} + +152 +public + +funùiÚ + + $g‘DesütiÚ +() + +154  +$this +-> +desütiÚ +; + +155 + } +} + +160 +public + +funùiÚ + + $£tDesütiÚ +( +$desütiÚ +) + +162 +$this +-> +desütiÚ + = +$desütiÚ +; + +163 + } +} + +168 +public + +funùiÚ + + $g‘Name +() + +170  +$this +-> +Çme +; + +171 + } +} + +176 +public + +funùiÚ + + $£tName +( +$Çme +) + +178 +$this +-> +Çme + = +$Çme +; + +179 + } +} + +184 +public + +funùiÚ + + $g‘SÿË +() + +186  +$this +-> +sÿË +; + +187 + } +} + +192 +public + +funùiÚ + + $£tSÿË +( +$sÿË +) + +194 +$this +-> +sÿË + = +$sÿË +; + +195 + } +} + +202 +public + +funùiÚ + + $»¶aûSÿË +( +$v®ue +) + +204 ià( +$v®ue + !=ð +nuÎ +) { + +205 +$this +-> +sÿË + = +$v®ue +; + +207 + } +} + +212 +public + +funùiÚ + + $g‘Size +() + +214  +$this +-> +size +; + +215 + } +} + +220 +public + +funùiÚ + + $£tSize +( +$size +) + +222 +$this +-> +size + = +$size +; + +223 + } +} + +230 +public + +funùiÚ + + $»¶aûSize +( +$v®ue +) + +232 ià( +$v®ue + !=ð +nuÎ +) { + +233 +$this +-> +size + = +$v®ue +; + +235 + } +} + +240 +public + +funùiÚ + + $g‘Ty³ +() + +242  +$this +-> +´Ý–Ty³ +; + +243 + } +} + +248 +public + +funùiÚ + + $£tTy³ +( +$´Ý–Ty³ +) + +250 +$this +-> +´Ý–Ty³ + = +$´Ý–Ty³ +; + +251 + } +} + +258 +public + +funùiÚ + + $»¶aûTy³ +( +$v®ue +) + +260 ià( +$v®ue + !=ð +nuÎ +) { + +261 +$this +-> +´Ý–Ty³ + = +$v®ue +; + +263 + } +} + +269 +public + +funùiÚ + + $g‘DeçuÉV®ue +() + +271  +$this +-> +deçuÉV®ue +; + +272 + } +} + +279 +public + +funùiÚ + + $g‘PhpDeçuÉV®ue +() + +281 ià( +$this +-> +deçuÉV®ue + ==ð +nuÎ +) { + +282  +nuÎ +; + +284 ià( +$this +-> +deçuÉV®ue +-> + `isEx´essiÚ +()) { + +285 +throw + +Ãw + + `EngšeExû±iÚ +("Cannot get PHP version of default value for default value EXPRESSION."); + +287 ià( +$this +-> +´Ý–Ty³ + ==ð +PrݖTy³s +:: +BOOLEAN +) { + +288  +$this +-> + `boޗnV®ue +($this-> +deçuÉV®ue +-> + `g‘V®ue +()); + +290  +$this +-> +deçuÉV®ue +-> + `g‘V®ue +(); + +293 + } +} + +298 +public + +funùiÚ + + $£tDeçuÉV®ue +( +CÞumnDeçuÉV®ue + +$v®ue +) + +300 +$this +-> +deçuÉV®ue + = +$v®ue +; + +301 + } +} + +308 +public + +funùiÚ + + $»¶aûDeçuÉV®ue +( +CÞumnDeçuÉV®ue + +$v®ue + = +nuÎ +) + +310 ià( +$v®ue + !=ð +nuÎ +) { + +311 +$this +-> +deçuÉV®ue + = +$v®ue +; + +313 + } +} + +318 +public + +funùiÚ + + $g‘SqlTy³ +() + +320  +$this +-> +sqlTy³ +; + +321 + } +} + +326 +public + +funùiÚ + + $£tSqlTy³ +( +$sqlTy³ +) + +328 +$this +-> +sqlTy³ + = +$sqlTy³ +; + +329 + } +} + +335 +public + +funùiÚ + + $»¶aûSqlTy³ +( +$sqlTy³ +) + +337 ià( +$sqlTy³ + !=ð +nuÎ +) { + +338 +$this +-> +sqlTy³ + = +$sqlTy³ +; + +340 + } +} + +348 +public + +funùiÚ + + $´štSize +() + +350 ià( +$this +-> +size + !=ð +nuÎ + && $this-> +sÿË + !==‚ull) { + +351  '(' . +$this +-> +size + . ',' . $this-> +sÿË + . ')'; + +352 } + `–£if + ( +$this +-> +size + !=ð +nuÎ +) { + +353  '(' . +$this +-> +size + . ')'; + +357 + } +} + +362 +public + +funùiÚ + + $­³ndXml +( +DOMNode + +$node +) + +364 +$doc + = ( +$node + +š¡ªûof + +DOMDocum’t +è? $nod: $node-> +owÃrDocum’t +; + +366 +$domašNode + = +$node +-> + `­³ndChžd +( +$doc +-> + `ü—‹EËm’t +('domain')); + +367 +$domašNode +-> + `£tA‰ribu‹ +('ty³', +$this +-> + `g‘Ty³ +()); + +368 +$domašNode +-> + `£tA‰ribu‹ +('Çme', +$this +-> + `g‘Name +()); + +370 ià( +$this +-> +sqlTy³ + !=ð$this-> + `g‘Ty³ +()) { + +371 +$domašNode +-> + `£tA‰ribu‹ +('sqlTy³', +$this +-> +sqlTy³ +); + +374 +$def + = +$this +-> + `g‘DeçuÉV®ue +(); + +375 ià( +$def +) { + +376 ià( +$def +-> + `isEx´essiÚ +()) { + +377 +$domašNode +-> + `£tA‰ribu‹ +('deçuÉEx´', +$def +-> + `g‘V®ue +()); + +379 +$domašNode +-> + `£tA‰ribu‹ +('deçuÉV®ue', +$def +-> + `g‘V®ue +()); + +383 ià( +$this +-> +size +) { + +384 +$domašNode +-> + `£tA‰ribu‹ +('size', +$this +-> +size +); + +387 ià( +$this +-> +sÿË +) { + +388 +$domašNode +-> + `£tA‰ribu‹ +('sÿË', +$this +-> +sÿË +); + +391 ià( +$this +-> +desütiÚ +) { + +392 +$domašNode +-> + `£tA‰ribu‹ +('desütiÚ', +$this +-> +desütiÚ +); + +394 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/ForeignKey.php + +1 +Çme + = +$Çme +; + +67 +´Ùeùed + +funùiÚ + + $£tupObjeù +() + +69 +$this +-> +fÜeignTabËName + = $this-> + `g‘A‰ribu‹ +("foreignTable"); + +70 +$this +-> +Çme + = $this-> + `g‘A‰ribu‹ +("name"); + +71 +$this +-> +phpName + = $this-> + `g‘A‰ribu‹ +("phpName"); + +72 +$this +-> +»fPhpName + = $this-> + `g‘A‰ribu‹ +("refPhpName"); + +73 +$this +-> +ÚUpd©e + = $this-> + `nÜm®izeFKey +($this-> + `g‘A‰ribu‹ +("onUpdate")); + +74 +$this +-> +ÚD–‘e + = $this-> + `nÜm®izeFKey +($this-> + `g‘A‰ribu‹ +("onDelete")); + +75 + } +} + +80 +´iv©e + +funùiÚ + + $nÜm®izeFKey +( +$©Œib +) + +82 ià( +$©Œib + ==ð +nuÎ + || + `¡¹ouµ” +($attrib) == "NONE") { + +83 +$©Œib + = +£lf +:: +NONE +; + +85 +$©Œib + = + `¡¹ouµ” +($attrib); + +86 ià( +$©Œib + == "SETNULL") { + +87 +$©Œib + = +£lf +:: +SETNULL +; + +89  +$©Œib +; + +90 + } +} + +95 +public + +funùiÚ + + $hasOnUpd©e +() + +97  ( +$this +-> +ÚUpd©e + !=ð +£lf +:: +NONE +); + +98 + } +} + +103 +public + +funùiÚ + + $hasOnD–‘e +() + +105  ( +$this +-> +ÚD–‘e + !=ð +£lf +:: +NONE +); + +106 + } +} + +112 +public + +funùiÚ + + $g‘OnUpd©e +() + +114  +$this +-> +ÚUpd©e +; + +115 + } +} + +121 +public + +funùiÚ + + $g‘OnD–‘e +() + +123  +$this +-> +ÚD–‘e +; + +124 + } +} + +129 +public + +funùiÚ + + $£tOnD–‘e +( +$v®ue +) + +131 +$this +-> +ÚD–‘e + = $this-> + `nÜm®izeFKey +( +$v®ue +); + +132 + } +} + +137 +public + +funùiÚ + + $£tOnUpd©e +( +$v®ue +) + +139 +$this +-> +ÚUpd©e + = $this-> + `nÜm®izeFKey +( +$v®ue +); + +140 + } +} + +145 +public + +funùiÚ + + $g‘Name +() + +147  +$this +-> +Çme +; + +148 + } +} + +153 +public + +funùiÚ + + $£tName +( +$Çme +) + +155 +$this +-> +Çme + = +$Çme +; + +156 + } +} + +162 +public + +funùiÚ + + $g‘PhpName +() + +164  +$this +-> +phpName +; + +165 + } +} + +171 +public + +funùiÚ + + $£tPhpName +( +$Çme +) + +173 +$this +-> +phpName + = +$Çme +; + +174 + } +} + +180 +public + +funùiÚ + + $g‘RefPhpName +() + +182  +$this +-> +»fPhpName +; + +183 + } +} + +189 +public + +funùiÚ + + $£tRefPhpName +( +$Çme +) + +191 +$this +-> +»fPhpName + = +$Çme +; + +192 + } +} + +197 +public + +funùiÚ + + $g‘FÜeignTabËName +() + +199  +$this +-> +fÜeignTabËName +; + +200 + } +} + +205 +public + +funùiÚ + + $£tFÜeignTabËName +( +$bËName +) + +207 +$this +-> +fÜeignTabËName + = +$bËName +; + +208 + } +} + +214 +public + +funùiÚ + + $g‘FÜeignTabË +() + +216  +$this +-> + `g‘TabË +()-> + `g‘D©aba£ +()->g‘TabË($this-> + `g‘FÜeignTabËName +()); + +217 + } +} + +222 +public + +funùiÚ + + $£tTabË +( +TabË + +$·»Á +) + +224 +$this +-> +·»ÁTabË + = +$·»Á +; + +225 + } +} + +230 +public + +funùiÚ + + $g‘TabË +() + +232  +$this +-> +·»ÁTabË +; + +233 + } +} + +238 +public + +funùiÚ + + $g‘TabËName +() + +240  +$this +-> +·»ÁTabË +-> + `g‘Name +(); + +241 + } +} + +246 +public + +funùiÚ + + $addReã»nû +( +$p1 +, +$p2 + = +nuÎ +) + +248 ià( + `is_¬¿y +( +$p1 +)) { + +249 +$this +-> + `addReã»nû +(@ +$p1 +["local"], @$p1["foreign"]); + +251 ià( +$p1 + +š¡ªûof + +CÞumn +) { + +252 +$p1 + = $p1-> + `g‘Name +(); + +254 ià( +$p2 + +š¡ªûof + +CÞumn +) { + +255 +$p2 + = $p2-> + `g‘Name +(); + +257 +$this +-> +loÿlCÞumns +[] = +$p1 +; + +258 +$this +-> +fÜeignCÞumns +[] = +$p2 +; + +260 + } +} + +266 +public + +funùiÚ + + $g‘LoÿlCÞumnNames +() + +268  +CÞumn +:: + `makeLi¡ +( +$this +-> + `g‘LoÿlCÞumns +(), $this-> + `g‘TabË +()-> + `g‘D©aba£ +()-> + `g‘PÏtfÜm +()); + +269 + } +} + +275 +public + +funùiÚ + + $g‘FÜeignCÞumnNames +() + +277  +CÞumn +:: + `makeLi¡ +( +$this +-> + `g‘FÜeignCÞumns +(), $this-> + `g‘TabË +()-> + `g‘D©aba£ +()-> + `g‘PÏtfÜm +()); + +278 + } +} + +284 +public + +funùiÚ + + $g‘LoÿlCÞumns +() + +286  +$this +-> +loÿlCÞumns +; + +287 + } +} + +293 +public + +funùiÚ + + $g‘LoÿlFÜeignM­pšg +() + +295 +$h + = + `¬¿y +(); + +296  +$i +=0, +$size += + `couÁ +( +$this +-> +loÿlCÞumns +); $i < $size; $i++) { + +297 +$h +[ +$this +-> +loÿlCÞumns +[ +$i +]] = $this-> +fÜeignCÞumns +[$i]; + +299  +$h +; + +300 + } +} + +306 +public + +funùiÚ + + $g‘M­³dFÜeignCÞumn +( +$loÿl +) + +308 +$m + = +$this +-> + `g‘LoÿlFÜeignM­pšg +(); + +309 ià( + `is£t +( +$m +[ +$loÿl +])) { + +310  +$m +[ +$loÿl +]; + +312  +nuÎ +; + +313 + } +} + +319 +public + +funùiÚ + + $g‘M­³dLoÿlCÞumn +( +$fÜeign +) + +321 +$m + = +$this +-> + `g‘FÜeignLoÿlM­pšg +(); + +322 ià( + `is£t +( +$m +[ +$fÜeign +])) { + +323  +$m +[ +$fÜeign +]; + +325  +nuÎ +; + +326 + } +} + +332 +public + +funùiÚ + + $g‘FÜeignCÞumns +() + +334  +$this +-> +fÜeignCÞumns +; + +335 + } +} + +341 +public + +funùiÚ + + $g‘FÜeignLoÿlM­pšg +() + +343 +$h + = + `¬¿y +(); + +344  +$i +=0, +$size += + `couÁ +( +$this +-> +loÿlCÞumns +); $i < $size; $i++) { + +345 +$h +[ +$this +-> +fÜeignCÞumns +[ +$i +] ] = $this-> +loÿlCÞumns +[$i]; + +347  +$h +; + +348 + } +} + +355 +public + +funùiÚ + + $isLoÿlPrim¬yKey +() + +357 +$loÿlCÞs + = +$this +-> + `g‘LoÿlCÞumns +(); + +359 +$loÿlPKCÞumnObjs + = +$this +-> + `g‘TabË +()-> + `g‘Prim¬yKey +(); + +361 +$loÿlPKCÞs + = + `¬¿y +(); + +362 + `fܗch + ( +$loÿlPKCÞumnObjs + +as + +$lPKCÞ +) { + +363 +$loÿlPKCÞs +[] = +$lPKCÞ +-> + `g‘Name +(); + +372  (! + `¬¿y_diff +( +$loÿlPKCÞs +, +$loÿlCÞs +)); + +373 + } +} + +386 +public + +funùiÚ + + $isM©chedByInv”£FK +() + +388  ( +boÞ +è +$this +-> + `g‘Inv”£FK +(); + +389 + } +} + +391 +public + +funùiÚ + + $g‘Inv”£FK +() + +393 +$fÜeignTabË + = +$this +-> + `g‘FÜeignTabË +(); + +394 +$m­ + = +$this +-> + `g‘FÜeignLoÿlM­pšg +(); + +396 + `fܗch + ( +$fÜeignTabË +-> + `g‘FÜeignKeys +(è +as + +$»fFK +) { + +397 +$fkM­ + = +$»fFK +-> + `g‘LoÿlFÜeignM­pšg +(); + +398 iàÐ( +$»fFK +-> + `g‘TabËName +(è=ð +$this +->g‘TabËName()è&& ( +$m­ + =ð +$fkM­ +) ) { + +399  +$»fFK +; + +402 + } +} + +407 +public + +funùiÚ + + $­³ndXml +( +DOMNode + +$node +) + +409 +$doc + = ( +$node + +š¡ªûof + +DOMDocum’t +è? $nod: $node-> +owÃrDocum’t +; + +411 +$fkNode + = +$node +-> + `­³ndChžd +( +$doc +-> + `ü—‹EËm’t +('foreign-key')); + +413 +$fkNode +-> + `£tA‰ribu‹ +('fÜeignTabË', +$this +-> + `g‘FÜeignTabËName +()); + +414 +$fkNode +-> + `£tA‰ribu‹ +('Çme', +$this +-> + `g‘Name +()); + +416 ià( +$this +-> + `g‘PhpName +()) { + +417 +$fkNode +-> + `£tA‰ribu‹ +('phpName', +$this +-> + `g‘PhpName +()); + +420 ià( +$this +-> + `g‘RefPhpName +()) { + +421 +$fkNode +-> + `£tA‰ribu‹ +('»fPhpName', +$this +-> + `g‘RefPhpName +()); + +424 ià( +$this +-> + `g‘OnD–‘e +()) { + +425 +$fkNode +-> + `£tA‰ribu‹ +('ÚD–‘e', +$this +-> + `g‘OnD–‘e +()); + +428 ià( +$this +-> + `g‘OnUpd©e +()) { + +429 +$fkNode +-> + `£tA‰ribu‹ +('ÚUpd©e', +$this +-> + `g‘OnUpd©e +()); + +432  +$i +=0, +$size += + `couÁ +( +$this +-> +loÿlCÞumns +); $i < $size; $i++) { + +433 +$»fNode + = +$fkNode +-> + `­³ndChžd +( +$doc +-> + `ü—‹EËm’t +('reference')); + +434 +$»fNode +-> + `£tA‰ribu‹ +('loÿl', +$this +-> +loÿlCÞumns +[ +$i +]); + +435 +$»fNode +-> + `£tA‰ribu‹ +('fÜeign', +$this +-> +fÜeignCÞumns +[ +$i +]); + +438 + `fܗch + ( +$this +-> +v’dÜInfos + +as + +$vi +) { + +439 +$vi +-> + `­³ndXml +( +$fkNode +); + +441 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/IDMethod.php + +1 +Çme + = $this-> + `g‘A‰ribu‹ +("name"); + +47 +$this +-> +v®ue + = $this-> + `g‘A‰ribu‹ +("value"); + +53 +public + +funùiÚ + + $g‘Name +() + +55  +$this +-> +Çme +; + +56 + } +} + +61 +public + +funùiÚ + + $£tName +( +$Çme +) + +63 +$this +-> +Çme + = +$Çme +; + +64 + } +} + +69 +public + +funùiÚ + + $g‘V®ue +() + +71  +$this +-> +v®ue +; + +72 + } +} + +77 +public + +funùiÚ + + $£tV®ue +( +$v®ue +) + +79 +$this +-> +v®ue + = +$v®ue +; + +80 + } +} + +85 +public + +funùiÚ + + $£tTabË +( +TabË + +$·»Á +) + +87 +$this +-> +·»ÁTabË + = +$·»Á +; + +88 + } +} + +93 +public + +funùiÚ + + $g‘TabË +() + +95  +$this +-> +·»ÁTabË +; + +96 + } +} + +101 +public + +funùiÚ + + $g‘TabËName +() + +103  +$this +-> +·»ÁTabË +-> + `g‘Name +(); + +104 + } +} + +109 +public + +funùiÚ + + $­³ndXml +( +DOMNode + +$node +) + +111 +$doc + = ( +$node + +š¡ªûof + +DOMDocum’t +è? $nod: $node-> +owÃrDocum’t +; + +113 +$·¿mNode + = +$node +-> + `­³ndChžd +( +$doc +-> + `ü—‹EËm’t +('id-method-parameter')); + +114 ià( +$this +-> + `g‘Name +()) { + +115 +$·¿mNode +-> + `£tA‰ribu‹ +('Çme', +$this +-> + `g‘Name +()); + +117 +$·¿mNode +-> + `£tA‰ribu‹ +('v®ue', +$this +-> + `g‘V®ue +()); + +118 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Index.php + +1 +šdexName + = +$Çme +; + +58 +´iv©e + +funùiÚ + + $ü—‹Name +() + +60 +$bË + = +$this +-> + `g‘TabË +(); + +61 +$šputs + = + `¬¿y +(); + +62 +$šputs +[] = +$bË +-> + `g‘D©aba£ +(); + +63 +$šputs +[] = +$bË +-> + `g‘Name +(); + +64 ià( +$this +-> + `isUnique +()) { + +65 +$šputs +[] = "U"; + +67 +$šputs +[] = "I"; + +70 ià( +$this +-> + `isUnique +()) { + +71 +$šputs +[] = + `couÁ +( +$bË +-> + `g‘Uniûs +()) + 1; + +73 +$šputs +[] = + `couÁ +( +$bË +-> + `g‘Indiûs +()) + 1; + +76 +$this +-> +šdexName + = +NameFaùÜy +:: + `g’”©eName +( + +77 +NameFaùÜy +:: +CONSTRAINT_GENERATOR +, +$šputs +); + +78 + } +} + +84 +´Ùeùed + +funùiÚ + + $£tupObjeù +() + +86 +$this +-> +šdexName + = $this-> + `g‘A‰ribu‹ +("name"); + +87 + } +} + +93 +public + +funùiÚ + + $g‘IsUnique +() + +95  +$this +-> + `isUnique +(); + +96 + } +} + +101 +public + +funùiÚ + + $isUnique +() + +103  +çl£ +; + +104 + } +} + +110 +public + +funùiÚ + + $g‘IndexName +() + +112  +$this +-> + `g‘Name +(); + +113 + } +} + +118 +public + +funùiÚ + + $g‘Name +() + +120 ià( +$this +-> +šdexName + ==ð +nuÎ +) { + +121 +Œy + { + +123 +$this +-> + `ü—‹Name +(); + +124 } + `ÿtch + ( +EngšeExû±iÚ + +$e +) { + +128  + `sub¡r +( +$this +-> +šdexName +, 0, $this-> + `g‘TabË +()-> + `g‘D©aba£ +()-> + `g‘PÏtfÜm +()-> + `g‘MaxCÞumnNameL’gth +()); + +129 + } +} + +135 +public + +funùiÚ + + $£tIndexName +( +$Çme +) + +137 +$this +-> + `£tName +( +$Çme +); + +138 + } +} + +143 +public + +funùiÚ + + $£tName +( +$Çme +) + +145 +$this +-> +šdexName + = +$Çme +; + +146 + } +} + +151 +public + +funùiÚ + + $£tTabË +( +TabË + +$·»Á +) + +153 +$this +-> +·»ÁTabË + = +$·»Á +; + +154 + } +} + +159 +public + +funùiÚ + + $g‘TabË +() + +161  +$this +-> +·»ÁTabË +; + +162 + } +} + +167 +public + +funùiÚ + + $g‘TabËName +() + +169  +$this +-> +·»ÁTabË +-> + `g‘Name +(); + +170 + } +} + +176 +public + +funùiÚ + + $addCÞumn +( +$d©a +) + +178 ià( +$d©a + +š¡ªûof + +CÞumn +) { + +179 +$cÞumn + = +$d©a +; + +180 +$this +-> +šdexCÞumns +[] = +$cÞumn +-> + `g‘Name +(); + +181 ià( +$cÞumn +-> + `g‘Size +()) { + +182 +$this +-> +šdexCÞumnSizes +[ +$cÞumn +-> + `g‘Name +()] = $cÞumn-> + `g‘Size +(); + +185 +$©Œib + = +$d©a +; + +186 +$Çme + = +$©Œib +["name"]; + +187 +$this +-> +šdexCÞumns +[] = +$Çme +; + +188 ià( + `is£t +( +$©Œib +["size"])) { + +189 +$this +-> +šdexCÞumnSizes +[ +$Çme +] = +$©Œib +["size"]; + +192 + } +} + +199 +public + +funùiÚ + + $£tCÞumns +( +¬¿y + +$šdexCÞumns +) + +201 +$this +-> +šdexCÞumns + = + `¬¿y +(); + +202 +$this +-> +šdexCÞumnSizes + = + `¬¿y +(); + +203 + `fܗch + ( +$šdexCÞumns + +as + +$cÞ +) { + +204 +$this +-> + `addCÞumn +( +$cÞ +); + +206 + } +} + +213 +public + +funùiÚ + + $hasCÞumnSize +( +$Çme +) + +215  + `is£t +( +$this +-> +šdexCÞumnSizes +[ +$Çme +]); + +216 + } +} + +223 +public + +funùiÚ + + $g‘CÞumnSize +( +$Çme +) + +225 ià( + `is£t +( +$this +-> +šdexCÞumnSizes +[ +$Çme +])) { + +226  +$this +-> +šdexCÞumnSizes +[ +$Çme +]; + +228  +nuÎ +; + +229 + } +} + +235 +public + +funùiÚ + + $g‘IndexCÞumnLi¡ +() + +237  +$this +-> + `g‘CÞumnLi¡ +(); + +238 + } +} + +244 +public + +funùiÚ + + $g‘CÞumnLi¡ +() + +246  +CÞumn +:: + `makeLi¡ +( +$this +-> + `g‘CÞumns +(), $this-> + `g‘TabË +()-> + `g‘D©aba£ +()-> + `g‘PÏtfÜm +()); + +247 + } +} + +253 +public + +funùiÚ + + $g‘IndexCÞumns +() + +255  +$this +-> + `g‘CÞumns +(); + +256 + } +} + +262 +public + +funùiÚ + + $g‘CÞumns +() + +264  +$this +-> +šdexCÞumns +; + +265 + } +} + +270 +public + +funùiÚ + + $­³ndXml +( +DOMNode + +$node +) + +272 +$doc + = ( +$node + +š¡ªûof + +DOMDocum’t +è? $nod: $node-> +owÃrDocum’t +; + +274 +$idxNode + = +$node +-> + `­³ndChžd +( +$doc +-> + `ü—‹EËm’t +('index')); + +275 +$idxNode +-> + `£tA‰ribu‹ +('Çme', +$this +-> + `g‘Name +()); + +277 + `fܗch + ( +$this +-> +šdexCÞumns + +as + +$cÞÇme +) { + +278 +$idxCÞNode + = +$idxNode +-> + `­³ndChžd +( +$doc +-> + `ü—‹EËm’t +('index-column')); + +279 +$idxCÞNode +-> + `£tA‰ribu‹ +('Çme', +$cÞÇme +); + +282 + `fܗch + ( +$this +-> +v’dÜInfos + +as + +$vi +) { + +283 +$vi +-> + `­³ndXml +( +$idxNode +); + +285 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Inheritance.php + +1 +key + = $this-> + `g‘A‰ribu‹ +("key"); + +48 +$this +-> +þassName + = $this-> + `g‘A‰ribu‹ +("class"); + +49 +$this +-> +pkg + = $this-> + `g‘A‰ribu‹ +("package"); + +50 +$this +-> +ªû¡Ü + = $this-> + `g‘A‰ribu‹ +("extends"); + +57 +public + +funùiÚ + + $g‘Key +() + +59  +$this +-> +key +; + +60 + } +} + +66 +public + +funùiÚ + + $£tKey +( +$v +) + +68 +$this +-> +key + = +$v +; + +69 + } +} + +75 +public + +funùiÚ + + $g‘CÞumn +() + +77  +$this +-> +·»Á +; + +78 + } +} + +84 +public + +funùiÚ + + $£tCÞumn +( +CÞumn + +$v +) + +86 +$this +-> +·»Á + = +$v +; + +87 + } +} + +93 +public + +funùiÚ + + $g‘CÏssName +() + +95  +$this +-> +þassName +; + +96 + } +} + +102 +public + +funùiÚ + + $£tCÏssName +( +$v +) + +104 +$this +-> +þassName + = +$v +; + +105 + } +} + +111 +public + +funùiÚ + + $g‘Package +() + +113  +$this +-> +pkg +; + +114 + } +} + +120 +public + +funùiÚ + + $£tPackage +( +$v +) + +122 +$this +-> +pkg + = +$v +; + +123 + } +} + +129 +public + +funùiÚ + + $g‘Anû¡Ü +() + +131  +$this +-> +ªû¡Ü +; + +132 + } +} + +138 +public + +funùiÚ + + $£tAnû¡Ü +( +$v +) + +140 +$this +-> +ªû¡Ü + = +$v +; + +141 + } +} + +146 +public + +funùiÚ + + $­³ndXml +( +DOMNode + +$node +) + +148 +$doc + = ( +$node + +š¡ªûof + +DOMDocum’t +è? $nod: $node-> +owÃrDocum’t +; + +150 +$šh”Node + = +$node +-> + `­³ndChžd +( +$doc +-> + `ü—‹EËm’t +('inheritance')); + +151 +$šh”Node +-> + `£tA‰ribu‹ +('key', +$this +-> +key +); + +152 +$šh”Node +-> + `£tA‰ribu‹ +('þass', +$this +-> +þassName +); + +154 ià( +$this +-> +ªû¡Ü + !=ð +nuÎ +) { + +155 +$šh”Node +-> + `£tA‰ribu‹ +('ex‹nds', +$this +-> +ªû¡Ü +); + +157 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/NameFactory.php + +1 + `g’”©eName +( +$šputs +); + +87 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/NameGenerator.php + +1 2) { + +63 +$´efix + = +$šputs +[2]; + +64 ià( +$´efix + !ð'' && + `sub¡r +( +$schemaName +, 0, + `¡¾’ +($prefix)) == $prefix) { + +65 +$schemaName + = + `sub¡r +($schemaName, + `¡¾’ +( +$´efix +)); + +69 +$phpName + = +nuÎ +; + +71  +$m‘hod +) { + +72  +£lf +:: +CONV_METHOD_CLEAN +: + +73 +$phpName + = +$this +-> + `þ—nM‘hod +( +$schemaName +); + +75  +£lf +:: +CONV_METHOD_PHPNAME +: + +76 +$phpName + = +$this +-> + `ph²ameM‘hod +( +$schemaName +); + +78  +£lf +:: +CONV_METHOD_NOCHANGE +: + +79 +$phpName + = +$this +-> + `nochªgeM‘hod +( +$schemaName +); + +81  +£lf +:: +CONV_METHOD_UNDERSCORE +: + +83 +$phpName + = +$this +-> + `und”scÜeM‘hod +( +$schemaName +); + +86  +$phpName +; + +102 +´Ùeùed + +funùiÚ + + $und”scÜeM‘hod +( +$schemaName +) + +104 +$Çme + = ""; + +105 +$tok + = + `¡¹ok +( +$schemaName +, +£lf +:: +STD_SEPARATOR_CHAR +); + +106  +$tok +) { + +107 +$Çme + .ð + `ucfœ¡ +( + `¡¹Þow” +( +$tok +)); + +108 +$tok + = + `¡¹ok +( +£lf +:: +STD_SEPARATOR_CHAR +); + +110  +$Çme +; + +111 + } +} + +126 +´Ùeùed + +funùiÚ + + $þ—nM‘hod +( +$schemaName +) + +128 +$Çme + = ""; + +129 +$»gexp + = '/([a-z0-9]+)/i'; + +130 +$m©ches + = + `¬¿y +(); + +131 ià( + `´eg_m©ch_®l +( +$»gexp +, +$schemaName +, +$m©ches +)) { + +132 + `fܗch +( +$m©ches +[1] +AS + +$tok +) { + +133 +$Çme + .ð + `ucfœ¡ +( + `¡¹Þow” +( +$tok +)); + +136  +$schemaName +; + +138  +$Çme +; + +139 + } +} + +153 +´Ùeùed + +funùiÚ + + $ph²ameM‘hod +( +$schemaName +) + +155 +$Çme + = ""; + +156 +$tok + = + `¡¹ok +( +$schemaName +, +£lf +:: +STD_SEPARATOR_CHAR +); + +157  +$tok + !=ð +çl£ +) { + +158 +$Çme + .ð + `ucfœ¡ +( +$tok +); + +159 +$tok + = + `¡¹ok +( +£lf +:: +STD_SEPARATOR_CHAR +); + +161  +$Çme +; + +162 + } +} + +171 +´Ùeùed + +funùiÚ + + $nochªgeM‘hod +( +$Çme +) + +173  +$Çme +; + +174 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/PropelTypes.php + +1 s–f:: +CHAR_NATIVE_TYPE +, + +104 +£lf +:: +VARCHAR + => s–f:: +VARCHAR_NATIVE_TYPE +, + +105 +£lf +:: +LONGVARCHAR + => s–f:: +LONGVARCHAR_NATIVE_TYPE +, + +106 +£lf +:: +CLOB + => s–f:: +CLOB_NATIVE_TYPE +, + +107 +£lf +:: +NUMERIC + => s–f:: +NUMERIC_NATIVE_TYPE +, + +108 +£lf +:: +DECIMAL + => s–f:: +DECIMAL_NATIVE_TYPE +, + +109 +£lf +:: +TINYINT + => s–f:: +TINYINT_NATIVE_TYPE +, + +110 +£lf +:: +SMALLINT + => s–f:: +SMALLINT_NATIVE_TYPE +, + +111 +£lf +:: +INTEGER + => s–f:: +INTEGER_NATIVE_TYPE +, + +112 +£lf +:: +BIGINT + => s–f:: +BIGINT_NATIVE_TYPE +, + +113 +£lf +:: +REAL + => s–f:: +REAL_NATIVE_TYPE +, + +114 +£lf +:: +FLOAT + => s–f:: +FLOAT_NATIVE_TYPE +, + +115 +£lf +:: +DOUBLE + => s–f:: +DOUBLE_NATIVE_TYPE +, + +116 +£lf +:: +BINARY + => s–f:: +BINARY_NATIVE_TYPE +, + +117 +£lf +:: +VARBINARY + => s–f:: +VARBINARY_NATIVE_TYPE +, + +118 +£lf +:: +LONGVARBINARY + => s–f:: +LONGVARBINARY_NATIVE_TYPE +, + +119 +£lf +:: +BLOB + => s–f:: +BLOB_NATIVE_TYPE +, + +120 +£lf +:: +DATE + => s–f:: +DATE_NATIVE_TYPE +, + +121 +£lf +:: +BU_DATE + => s–f:: +BU_DATE_NATIVE_TYPE +, + +122 +£lf +:: +TIME + => s–f:: +TIME_NATIVE_TYPE +, + +123 +£lf +:: +TIMESTAMP + => s–f:: +TIMESTAMP_NATIVE_TYPE +, + +124 +£lf +:: +BU_TIMESTAMP + => s–f:: +BU_TIMESTAMP_NATIVE_TYPE +, + +125 +£lf +:: +BOOLEAN + => s–f:: +BOOLEAN_NATIVE_TYPE +, + +133 +´iv©e +  + m$´Ý–Ty³ToC»ÞeTy³M­ + = +¬¿y +( + +135 +£lf +:: +CHAR + => self::CHAR, + +136 +£lf +:: +VARCHAR + => self::VARCHAR, + +137 +£lf +:: +LONGVARCHAR + => self::LONGVARCHAR, + +138 +£lf +:: +CLOB + => self::CLOB, + +139 +£lf +:: +NUMERIC + => self::NUMERIC, + +140 +£lf +:: +DECIMAL + => self::DECIMAL, + +141 +£lf +:: +TINYINT + => self::TINYINT, + +142 +£lf +:: +SMALLINT + => self::SMALLINT, + +143 +£lf +:: +INTEGER + => self::INTEGER, + +144 +£lf +:: +BIGINT + => self::BIGINT, + +145 +£lf +:: +REAL + => self::REAL, + +146 +£lf +:: +FLOAT + => self::FLOAT, + +147 +£lf +:: +DOUBLE + => self::DOUBLE, + +148 +£lf +:: +BINARY + => self::BINARY, + +149 +£lf +:: +VARBINARY + => self::VARBINARY, + +150 +£lf +:: +LONGVARBINARY + => self::LONGVARBINARY, + +151 +£lf +:: +BLOB + => self::BLOB, + +152 +£lf +:: +DATE + => self::DATE, + +153 +£lf +:: +TIME + => self::TIME, + +154 +£lf +:: +TIMESTAMP + => self::TIMESTAMP, + +155 +£lf +:: +BOOLEAN + => self::BOOLEAN, + +160 +£lf +:: +BU_DATE + => s–f:: +VARCHAR +, + +161 +£lf +:: +BU_TIMESTAMP + => s–f:: +VARCHAR +, + +170 +´iv©e +  + m$´Ý–Ty³ToPDOTy³M­ + = +¬¿y +( + +171 +£lf +:: +CHAR + => +PDO +:: +PARAM_STR +, + +172 +£lf +:: +VARCHAR + => +PDO +:: +PARAM_STR +, + +173 +£lf +:: +LONGVARCHAR + => +PDO +:: +PARAM_STR +, + +174 +£lf +:: +CLOB + => +PDO +:: +PARAM_STR +, + +175 +£lf +:: +NUMERIC + => +PDO +:: +PARAM_INT +, + +176 +£lf +:: +DECIMAL + => +PDO +:: +PARAM_STR +, + +177 +£lf +:: +TINYINT + => +PDO +:: +PARAM_INT +, + +178 +£lf +:: +SMALLINT + => +PDO +:: +PARAM_INT +, + +179 +£lf +:: +INTEGER + => +PDO +:: +PARAM_INT +, + +180 +£lf +:: +BIGINT + => +PDO +:: +PARAM_INT +, + +181 +£lf +:: +REAL + => +PDO +:: +PARAM_STR +, + +182 +£lf +:: +FLOAT + => +PDO +:: +PARAM_STR +, + +183 +£lf +:: +DOUBLE + => +PDO +:: +PARAM_STR +, + +184 +£lf +:: +BINARY + => +PDO +:: +PARAM_STR +, + +185 +£lf +:: +VARBINARY + => +PDO +:: +PARAM_LOB +, + +186 +£lf +:: +LONGVARBINARY + => +PDO +:: +PARAM_LOB +, + +187 +£lf +:: +BLOB + => +PDO +:: +PARAM_LOB +, + +188 +£lf +:: +DATE + => +PDO +:: +PARAM_STR +, + +189 +£lf +:: +TIME + => +PDO +:: +PARAM_STR +, + +190 +£lf +:: +TIMESTAMP + => +PDO +:: +PARAM_STR +, + +191 +£lf +:: +BOOLEAN + => +PDO +:: +PARAM_BOOL +, + +196 +£lf +:: +BU_DATE + => +PDO +:: +PARAM_STR +, + +197 +£lf +:: +BU_TIMESTAMP + => +PDO +:: +PARAM_STR +, + +207 +public +  +funùiÚ + + $g‘PhpN©ive +( +$´Ý–Ty³ +) + +209  +£lf +:: +$´Ý–ToPHPN©iveM­ +[ +$´Ý–Ty³ +]; + +218 +public +  +funùiÚ + + $g‘C»ÞeTy³ +( +$ty³ +) + +220  +£lf +:: +$´Ý–Ty³ToC»ÞeTy³M­ +[ +$ty³ +]; + +221 + } +} + +227 +public +  +funùiÚ + + $g‘PDOTy³ +( +$ty³ +) + +229  +£lf +:: +$´Ý–Ty³ToPDOTy³M­ +[ +$ty³ +]; + +230 + } +} + +239 +public +  +funùiÚ + + $g‘PrݖTy³ +( +$sqlTy³ +) + +241 ià( + `is£t +( +£lf +:: +$üeÞeToPrݖTy³M­ +[ +$sqlTy³ +])) { + +242  +£lf +:: +$üeÞeToPrݖTy³M­ +[ +$sqlTy³ +]; + +244 + } +} + +251 +public +  +funùiÚ + + $g‘PrݖTy³s +() + +253  + `¬¿y_keys +( +£lf +:: +$´Ý–Ty³ToC»ÞeTy³M­ +); + +254 + } +} + +262 +public +  +funùiÚ + + $isTempÜ®Ty³ +( +$ty³ +) + +264  + `š_¬¿y +( +$ty³ +, +£lf +:: +$TEMPORAL_TYPES +); + +265 + } +} + +273 +public +  +funùiÚ + + $isTextTy³ +( +$ty³ +) + +275  + `š_¬¿y +( +$ty³ +, +£lf +:: +$TEXT_TYPES +); + +276 + } +} + +284 +public +  +funùiÚ + + $isNum”icTy³ +( +$ty³ +) + +286  + `š_¬¿y +( +$ty³ +, +£lf +:: +$NUMERIC_TYPES +); + +287 + } +} + +294 +public +  +funùiÚ + + $isLobTy³ +( +$ty³ +) + +296  + `š_¬¿y +( +$ty³ +, +£lf +:: +$LOB_TYPES +); + +297 + } +} + +305 +public +  +funùiÚ + + $isPhpPrim™iveTy³ +( +$phpTy³ +) + +307  + `š_¬¿y +( +$phpTy³ +, + `¬¿y +("boolean", "int", "double", "float", "string")); + +308 + } +} + +316 +public +  +funùiÚ + + $isPhpPrim™iveNum”icTy³ +( +$phpTy³ +) + +318  + `š_¬¿y +( +$phpTy³ +, + `¬¿y +("boolean", "int", "double", "float")); + +319 + } +} + +327 +public +  +funùiÚ + + $isPhpObjeùTy³ +( +$phpTy³ +) + +329  (! +£lf +:: + `isPhpPrim™iveTy³ +( +$phpTy³ +è&& ! + `š_¬¿y +($phpTy³, + `¬¿y +("resource", "array"))); + +330 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Rule.php + +1 +Çme + = $this-> + `g‘A‰ribu‹ +("name"); + +47 +$this +-> +v®ue + = $this-> + `g‘A‰ribu‹ +("value"); + +48 +$this +-> +þas¢ame + = $this-> + `g‘A‰ribu‹ +("class"); + +61 ià( +$this +-> +v®ue + ==ð +nuÎ +) { + +62  +$this +-> +Çme +) { + +64 +$this +-> +v®ue + = $this-> +v®id©Ü +-> + `g‘CÞumn +()-> + `g‘Size +(); + +69 +$this +-> +mes§ge + = $this-> + `g‘A‰ribu‹ +("message"); + +77 +public + +funùiÚ + + $£tV®id©Ü +( +V®id©Ü + +$v®id©Ü +) + +79 +$this +-> +v®id©Ü + = +$v®id©Ü +; + +80 + } +} + +86 +public + +funùiÚ + + $g‘V®id©Ü +() + +88  +$this +-> +v®id©Ü +; + +89 + } +} + +97 +public + +funùiÚ + + $£tCÏss +( +$þas¢ame +) + +99 +$this +-> +þas¢ame + = +$þas¢ame +; + +100 + } +} + +108 +public + +funùiÚ + + $g‘CÏss +() + +110 ià( +$this +-> +þas¢ame + ==ð +nuÎ + && $this-> +Çme + !==‚ull) { + +111  "´Ý–.v®id©Ü." . + `ucfœ¡ +( +$this +-> +Çme +) . "Validator"; + +113  +$this +-> +þas¢ame +; + +114 + } +} + +122 +public + +funùiÚ + + $£tName +( +$Çme +) + +124 +$this +-> +Çme + = +$Çme +; + +125 + } +} + +131 +public + +funùiÚ + + $g‘Name +() + +133  +$this +-> +Çme +; + +134 + } +} + +142 +public + +funùiÚ + + $£tV®ue +( +$v®ue +) + +144 +$this +-> +v®ue + = +$v®ue +; + +145 + } +} + +151 +public + +funùiÚ + + $g‘V®ue +() + +153  +$this +-> +v®ue +; + +154 + } +} + +164 +public + +funùiÚ + + $£tMes§ge +( +$mes§ge +) + +166 +$this +-> +mes§ge + = +$mes§ge +; + +167 + } +} + +177 +public + +funùiÚ + + $g‘Mes§ge +() + +179 +$mes§ge + = + `¡r_»¶aû +('${v®ue}', +$this +-> + `g‘V®ue +(), $this-> +mes§ge +); + +180  +$mes§ge +; + +181 + } +} + +186 +public + +funùiÚ + + $­³ndXml +( +DOMNode + +$node +) + +188 +$doc + = ( +$node + +š¡ªûof + +DOMDocum’t +è? $nod: $node-> +owÃrDocum’t +; + +190 +$ruËNode + = +$node +-> + `­³ndChžd +( +$doc +-> + `ü—‹EËm’t +('rule')); + +191 +$ruËNode +-> + `£tA‰ribu‹ +('Çme', +$this +-> + `g‘Name +()); + +193 ià( +$this +-> + `g‘V®ue +(è!=ð +nuÎ +) { + +194 +$ruËNode +-> + `£tA‰ribu‹ +('v®ue', +$this +-> + `g‘V®ue +()); + +197 ià( +$this +-> +þas¢ame + !=ð +nuÎ +) { + +198 +$ruËNode +-> + `£tA‰ribu‹ +('þass', +$this +-> + `g‘CÏss +()); + +201 +$ruËNode +-> + `£tA‰ribu‹ +('mes§ge', +$this +-> + `g‘Mes§ge +()); + +202 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Table.php + +1 +Çme + = +$Çme +; + +308 +public + +funùiÚ + + $£tupObjeù +() + +310 +$this +-> +Çme + = $this-> + `g‘A‰ribu‹ +("name"); + +311 +$this +-> +phpName + = $this-> + `g‘A‰ribu‹ +("phpName"); + +312 +$this +-> +idM‘hod + = $this-> + `g‘A‰ribu‹ +("idM‘hod", $this-> + `g‘D©aba£ +()-> + `g‘DeçuÉIdM‘hod +()); + +313 +$this +-> +®lowPkIn£¹ + = $this-> + `boޗnV®ue +($this-> + `g‘A‰ribu‹ +("allowPkInsert")); + +316 +$this +-> +phpNamšgM‘hod + = $this-> + `g‘A‰ribu‹ +("phpNamšgM‘hod", $this-> + `g‘D©aba£ +()-> + `g‘DeçuÉPhpNamšgM‘hod +()); + +318 +$this +-> +skSql + = $this-> + `boޗnV®ue +($this-> + `g‘A‰ribu‹ +("skipSql")); + +319 +$this +-> +»adOÆy + = $this-> + `boޗnV®ue +($this-> + `g‘A‰ribu‹ +("readOnly")); + +321 +$this +-> +pkg + = $this-> + `g‘A‰ribu‹ +("package"); + +322 +$this +-> +ab¡¿ùV®ue + = $this-> + `boޗnV®ue +($this-> + `g‘A‰ribu‹ +("abstract")); + +323 +$this +-> +ba£CÏss + = $this-> + `g‘A‰ribu‹ +("baseClass"); + +324 +$this +-> +ba£P“r + = $this-> + `g‘A‰ribu‹ +("basePeer"); + +325 +$this +-> +®Ÿs + = $this-> + `g‘A‰ribu‹ +("alias"); + +327 +$this +-> +h—vyIndexšg + = ( $this-> + `boޗnV®ue +($this-> + `g‘A‰ribu‹ +("heavyIndexing")) + +328 || ("çl£" !=ð +$this +-> + `g‘A‰ribu‹ +("heavyIndexing") + +329 && +$this +-> + `g‘D©aba£ +()-> + `isH—vyIndexšg +() ) ); + +330 +$this +-> +desütiÚ + = $this-> + `g‘A‰ribu‹ +("description"); + +331 +$this +-> +’‹rçû + = $this-> + `g‘A‰ribu‹ +("interface"); + +332 +$this +-> +Œ“Mode + = $this-> + `g‘A‰ribu‹ +("treeMode"); + +334 +$this +-> +»lßdOnIn£¹ + = $this-> + `boޗnV®ue +($this-> + `g‘A‰ribu‹ +("reloadOnInsert")); + +335 +$this +-> +»lßdOnUpd©e + = $this-> + `boޗnV®ue +($this-> + `g‘A‰ribu‹ +("reloadOnUpdate")); + +336 + } +} + +346 +public + +funùiÚ + + $doFš®In™Ÿliz©iÚ +() + +350 ià( +$this +-> +h—vyIndexšg +) { + +351 +$this +-> + `doH—vyIndexšg +(); + +356 +$this +-> + `doNamšg +(); + +359 + `fܗch + ( +$this +-> + `g‘BehaviÜs +(è +as + +$behaviÜ +) + +361 +$behaviÜ +-> + `g‘TabËModif›r +()-> + `modifyTabË +(); + +366 +$ªyAutoInc + = +çl£ +; + +367 + `fܗch + ( +$this +-> + `g‘CÞumns +(è +as + +$cÞ +) { + +368 ià( +$cÞ +-> + `isAutoInüem’t +()) { + +369 +$ªyAutoInc + = +Œue +; + +372 ià( +$this +-> + `g‘IdM‘hod +(è==ð +IDM‘hod +:: +NATIVE + && ! +$ªyAutoInc +) { + +373 +$this +-> + `£tIdM‘hod +( +IDM‘hod +:: +NO_ID_METHOD +); + +377 +$pk + = +$this +-> + `g‘Prim¬yKey +(); + +378 ià( + `em±y +( +$pk +)) { + +379 +throw + +Ãw + + `EngšeExû±iÚ +("TabË '". +$this +-> + `g‘Name +()."' does‚ot have‡…rimary key defined. Propel„equires‡llableso have‡…rimary key."); + +382 + } +} + +401 +´iv©e + +funùiÚ + + $doH—vyIndexšg +() + +403 ià( +£lf +:: +DEBUG +) { + +404 + `´št +("doH—vyIndex(èÿÎed oÀbË " . +$this +-> +Çme +."\n"); + +407 +$pk + = +$this +-> + `g‘Prim¬yKey +(); + +408 +$size + = + `couÁ +( +$pk +); + +413  +$i +=1; $˜< +$size +; $i++) { + +414 +$idx + = +Ãw + + `Index +(); + +415 +$idx +-> + `£tCÞumns +( + `¬¿y_¦iû +( +$pk +, +$i +, +$size +)); + +416 +$this +-> + `addIndex +( +$idx +); + +418 + } +} + +424 +´iv©e + +funùiÚ + + $doNamšg +() { + +427 +Œy + { + +428  +$i +=0, +$size + = + `couÁ +( +$this +-> +fÜeignKeys +); $i < $size; $i++) { + +429 +$fk + = +$this +-> +fÜeignKeys +[ +$i +]; + +430 +$Çme + = +$fk +-> + `g‘Name +(); + +431 ià( + `em±y +( +$Çme +)) { + +432 +$Çme + = +$this +-> + `acquœeCÚ¡¿štName +("FK", +$i + + 1); + +433 +$fk +-> + `£tName +( +$Çme +); + +437  +$i + = 0, +$size + = + `couÁ +( +$this +-> +šdiûs +); $i < $size; $i++) { + +438 +$šdex + = +$this +-> +šdiûs +[ +$i +]; + +439 +$Çme + = +$šdex +-> + `g‘Name +(); + +440 ià( + `em±y +( +$Çme +)) { + +441 +$Çme + = +$this +-> + `acquœeCÚ¡¿štName +("I", +$i + + 1); + +442 +$šdex +-> + `£tName +( +$Çme +); + +446  +$i + = 0, +$size + = + `couÁ +( +$this +-> +uniûs +); $i < $size; $i++) { + +447 +$šdex + = +$this +-> +uniûs +[ +$i +]; + +448 +$Çme + = +$šdex +-> + `g‘Name +(); + +449 ià( + `em±y +( +$Çme +)) { + +450 +$Çme + = +$this +-> + `acquœeCÚ¡¿štName +("U", +$i + + 1); + +451 +$šdex +-> + `£tName +( +$Çme +); + +459 } + `ÿtch + ( +EngšeExû±iÚ + +$ÇmeA̗dyInU£ +) { + +460 +´št + +$ÇmeA̗dyInU£ +-> + `g‘Mes§ge +() . "\n"; + +461 +´št + +$ÇmeA̗dyInU£ +-> + `g‘T¿ûAsSŒšg +(); + +463 + } +} + +473 +´iv©e + +funùiÚ + + $acquœeCÚ¡¿štName +( +$ÇmeTy³ +, +$nbr +) + +475 +$šputs + = + `¬¿y +(); + +476 +$šputs +[] = +$this +-> + `g‘D©aba£ +(); + +477 +$šputs +[] = +$this +-> + `g‘Name +(); + +478 +$šputs +[] = +$ÇmeTy³ +; + +479 +$šputs +[] = +$nbr +; + +480  +NameFaùÜy +:: + `g’”©eName +(NameFaùÜy:: +CONSTRAINT_GENERATOR +, +$šputs +); + +481 + } +} + +488 +public + +funùiÚ + + $g‘Ba£CÏss +() + +490 ià( +$this +-> + `isAlŸs +(è&& $this-> +ba£CÏss + ==ð +nuÎ +) { + +491  +$this +-> +®Ÿs +; + +492 } + `–£if + ( +$this +-> +ba£CÏss + ==ð +nuÎ +) { + +493  +$this +-> + `g‘D©aba£ +()-> + `g‘Ba£CÏss +(); + +495  +$this +-> +ba£CÏss +; + +497 + } +} + +503 +public + +funùiÚ + + $£tBa£CÏss +( +$v +) + +505 +$this +-> +ba£CÏss + = +$v +; + +506 + } +} + +512 +public + +funùiÚ + + $g‘Ba£P“r +() + +514 ià( +$this +-> + `isAlŸs +(è&& $this-> +ba£P“r + ==ð +nuÎ +) { + +515  +$this +-> +®Ÿs + . "Peer"; + +516 } + `–£if + ( +$this +-> +ba£P“r + ==ð +nuÎ +) { + +517  +$this +-> + `g‘D©aba£ +()-> + `g‘Ba£P“r +(); + +519  +$this +-> +ba£P“r +; + +521 + } +} + +527 +public + +funùiÚ + + $£tBa£P“r +( +$v +) + +529 +$this +-> +ba£P“r + = +$v +; + +530 + } +} + +539 +public + +funùiÚ + + $addCÞumn +( +$d©a +) + +541 ià( +$d©a + +š¡ªûof + +CÞumn +) { + +542 +$cÞ + = +$d©a +; + +543 +$cÞ +-> + `£tTabË +( +$this +); + +544 ià( +$cÞ +-> + `isInh”™ªû +()) { + +545 +$this +-> +šh”™ªûCÞumn + = +$cÞ +; + +547 +$this +-> +cÞumnLi¡ +[] = +$cÞ +; + +548 +$this +-> +cÞumnsByName +[ +$cÞ +-> + `g‘Name +()] = $col; + +549 +$this +-> +cÞumnsByPhpName +[ +$cÞ +-> + `g‘PhpName +()] = $col; + +550 +$cÞ +-> + `£tPos™iÚ +( + `couÁ +( +$this +-> +cÞumnLi¡ +)); + +551 +$this +-> +ÃedsT¿n§ùiÚInPo¡g»s + |ð +$cÞ +-> + `»quœesT¿n§ùiÚInPo¡g»s +(); + +552  +$cÞ +; + +554 +$cÞ + = +Ãw + + `CÞumn +(); + +555 +$cÞ +-> + `£tTabË +( +$this +); + +556 +$cÞ +-> + `lßdFromXML +( +$d©a +); + +557  +$this +-> + `addCÞumn +( +$cÞ +); + +559 + } +} + +572 +public + +funùiÚ + + $addV®id©Ü +( +$d©a +) + +574 ià( +$d©a + +š¡ªûof + +V®id©Ü +) { + +575 +$v®id©Ü + = +$d©a +; + +576 +$cÞ + = +$this +-> + `g‘CÞumn +( +$v®id©Ü +-> + `g‘CÞumnName +()); + +577 ià( +$cÞ + =ð +nuÎ +) { + +578 +throw + +Ãw + + `EngšeExû±iÚ +("Fažed‡ddšg v®id©ÜØbË '" . +$this +-> + `g‘Name +() . + +579 "': cÞumÀ'" . +$v®id©Ü +-> + `g‘CÞumnName +() . "' does‚otƒxist !"); + +581 +$v®id©Ü +-> + `£tCÞumn +( +$cÞ +); + +582 +$v®id©Ü +-> + `£tTabË +( +$this +); + +583 +$this +-> +v®id©ÜLi¡ +[] = +$v®id©Ü +; + +584  +$v®id©Ü +; + +586 +$v®id©Ü + = +Ãw + + `V®id©Ü +(); + +587 +$v®id©Ü +-> + `£tTabË +( +$this +); + +588 +$v®id©Ü +-> + `lßdFromXML +( +$d©a +); + +589  +$this +-> + `addV®id©Ü +( +$v®id©Ü +); + +591 + } +} + +597 +public + +funùiÚ + + $addFÜeignKey +( +$fkd©a +) + +599 ià( +$fkd©a + +š¡ªûof + +FÜeignKey +) { + +600 +$fk + = +$fkd©a +; + +601 +$fk +-> + `£tTabË +( +$this +); + +602 +$this +-> +fÜeignKeys +[] = +$fk +; + +604 ià( +$this +-> +fÜeignTabËNames + ==ð +nuÎ +) { + +605 +$this +-> +fÜeignTabËNames + = + `¬¿y +(); + +607 ià(! + `š_¬¿y +( +$fk +-> + `g‘FÜeignTabËName +(), +$this +-> +fÜeignTabËNames +)) { + +608 +$this +-> +fÜeignTabËNames +[] = +$fk +-> + `g‘FÜeignTabËName +(); + +610  +$fk +; + +612 +$fk + = +Ãw + + `FÜeignKey +(); + +613 +$fk +-> + `lßdFromXML +( +$fkd©a +); + +614  +$this +-> + `addFÜeignKey +( +$fk +); + +616 + } +} + +623 +public + +funùiÚ + + $g‘Chžd»nCÞumn +() + +625  +$this +-> +šh”™ªûCÞumn +; + +626 + } +} + +632 +public + +funùiÚ + + $g‘Chžd»nNames +() + +634 ià( +$this +-> +šh”™ªûCÞumn + ==ð +nuÎ + + +635 || ! +$this +-> +šh”™ªûCÞumn +-> + `isEnum”©edCÏs£s +()) { + +636  +nuÎ +; + +638 +$chžd»n + = +$this +-> +šh”™ªûCÞumn +-> + `g‘Chžd»n +(); + +639 +$Çmes + = + `¬¿y +(); + +640  +$i + = 0, +$size += + `couÁ +( +$chžd»n +); $i < $size; $i++) { + +641 +$Çmes +[] = + `g‘_þass +( +$chžd»n +[ +$i +]); + +643  +$Çmes +; + +644 + } +} + +649 +public + +funùiÚ + + $addRe㼔 +( +FÜeignKey + +$fk +) + +651 ià( +$this +-> +»ã¼”s + ==ð +nuÎ +) { + +652 +$this +-> +»ã¼”s + = + `¬¿y +(); + +654 +$this +-> +»ã¼”s +[] = +$fk +; + +655 + } +} + +660 +public + +funùiÚ + + $g‘Re㼔s +() + +662  +$this +-> +»ã¼”s +; + +663 + } +} + +668 +public + +funùiÚ + + $£tCڏšsFÜeignPK +( +$b +) + +670 +$this +-> +cڏšsFÜeignPK + = ( +boޗn +è +$b +; + +671 + } +} + +676 +public + +funùiÚ + + $g‘CڏšsFÜeignPK +() + +678  +$this +-> +cڏšsFÜeignPK +; + +679 + } +} + +684 +public + +funùiÚ + + $g‘FÜeignTabËNames +() + +686 ià( +$this +-> +fÜeignTabËNames + ==ð +nuÎ +) { + +687 +$this +-> +fÜeignTabËNames + = + `¬¿y +(); + +689  +$this +-> +fÜeignTabËNames +; + +690 + } +} + +695 +public + +funùiÚ + + $»quœesT¿n§ùiÚInPo¡g»s +() + +697  +$this +-> +ÃedsT¿n§ùiÚInPo¡g»s +; + +698 + } +} + +704 +public + +funùiÚ + + $addIdM‘hodP¬am‘” +( +$impd©a +) + +706 ià( +$impd©a + +š¡ªûof + +IdM‘hodP¬am‘” +) { + +707 +$imp + = +$impd©a +; + +708 +$imp +-> + `£tTabË +( +$this +); + +709 ià( +$this +-> +idM‘hodP¬am‘”s + ==ð +nuÎ +) { + +710 +$this +-> +idM‘hodP¬am‘”s + = + `¬¿y +(); + +712 +$this +-> +idM‘hodP¬am‘”s +[] = +$imp +; + +713  +$imp +; + +715 +$imp + = +Ãw + + `IdM‘hodP¬am‘” +(); + +716 +$imp +-> + `lßdFromXML +( +$impd©a +); + +717  +$this +-> + `addIdM‘hodP¬am‘” +( +$imp +); + +719 + } +} + +725 +public + +funùiÚ + + $addIndex +( +$idxd©a +) + +727 ià( +$idxd©a + +š¡ªûof + +Index +) { + +728 +$šdex + = +$idxd©a +; + +729 +$šdex +-> + `£tTabË +( +$this +); + +730 +$šdex +-> + `g‘Name +(); + +731 +$this +-> +šdiûs +[] = +$šdex +; + +732  +$šdex +; + +734 +$šdex + = +Ãw + + `Index +( +$this +); + +735 +$šdex +-> + `lßdFromXML +( +$idxd©a +); + +736  +$this +-> + `addIndex +( +$šdex +); + +738 + } +} + +744 +public + +funùiÚ + + $addUnique +( +$unqd©a +) + +746 ià( +$unqd©a + +š¡ªûof + +Unique +) { + +747 +$unique + = +$unqd©a +; + +748 +$unique +-> + `£tTabË +( +$this +); + +749 +$unique +-> + `g‘Name +(); + +750 +$this +-> +uniûs +[] = +$unique +; + +751  +$unique +; + +753 +$unique + = +Ãw + + `Unique +( +$this +); + +754 +$unique +-> + `lßdFromXML +( +$unqd©a +); + +755  +$this +-> + `addUnique +( +$unique +); + +757 + } +} + +764 +public + +funùiÚ + + $g‘G’”©ÜCÚfig +() + +766  +$this +-> + `g‘D©aba£ +()-> + `g‘AµD©a +()-> + `g‘PÏtfÜm +()-> + `g‘G’”©ÜCÚfig +(); + +767 + } +} + +773 +public + +funùiÚ + + $addBehaviÜ +( +$bd©a +) + +775 ià( +$bd©a + +š¡ªûof + +BehaviÜ +) { + +776 +$behaviÜ + = +$bd©a +; + +777 +$behaviÜ +-> + `£tTabË +( +$this +); + +778 +$this +-> +behaviÜs +[ +$behaviÜ +-> + `g‘Name +()] = $behavior; + +779  +$behaviÜ +; + +781 +$þass + = +$this +-> + `g‘CÚfigu»dBehaviÜ +( +$bd©a +['name']); + +782 +$behaviÜ + = +Ãw + + `$þass +(); + +783 +$behaviÜ +-> + `lßdFromXML +( +$bd©a +); + +784  +$this +-> + `addBehaviÜ +( +$behaviÜ +); + +786 + } +} + +792 +public + +funùiÚ + + $g‘BehaviÜs +() + +794  +$this +-> +behaviÜs +; + +795 + } +} + +802 +public + +funùiÚ + + $g‘BehaviÜ +( +$Çme +) + +804  +$this +-> +behaviÜs +[ +$Çme +]; + +805 + } +} + +810 +public + +funùiÚ + + $g‘Name +() + +812  +$this +-> +Çme +; + +813 + } +} + +818 +public + +funùiÚ + + $£tName +( +$ÃwName +) + +820 +$this +-> +Çme + = +$ÃwName +; + +821 + } +} + +826 +public + +funùiÚ + + $g‘DesütiÚ +() + +828  +$this +-> +desütiÚ +; + +829 + } +} + +836 +public + +funùiÚ + + $£tDesütiÚ +( +$ÃwDesütiÚ +) + +838 +$this +-> +desütiÚ + = +$ÃwDesütiÚ +; + +839 + } +} + +845 +public + +funùiÚ + + $g‘PhpName +() + +847 ià( +$this +-> +phpName + ==ð +nuÎ +) { + +848 +$šputs + = + `¬¿y +(); + +849 +$šputs +[] = +$this +-> +Çme +; + +850 +$šputs +[] = +$this +-> +phpNamšgM‘hod +; + +851 +Œy + { + +852 +$this +-> +phpName + = +NameFaùÜy +:: + `g’”©eName +(NameFaùÜy:: +PHP_GENERATOR +, +$šputs +); + +853 } + `ÿtch + ( +EngšeExû±iÚ + +$e +) { + +854 +´št + +$e +-> + `g‘Mes§ge +() . "\n"; + +855 +´št + +$e +-> + `g‘T¿ûAsSŒšg +(); + +858  +$this +-> +phpName +; + +859 + } +} + +865 +public + +funùiÚ + + $£tPhpName +( +$phpName +) + +867 +$this +-> +phpName + = +$phpName +; + +868 + } +} + +877 +public + +funùiÚ + + $g‘IdM‘hod +() + +879 ià( +$this +-> +idM‘hod + ==ð +nuÎ +) { + +880  +IDM‘hod +:: +NO_ID_METHOD +; + +882  +$this +-> +idM‘hod +; + +884 + } +} + +892 +public + +funùiÚ + + $isAÎowPkIn£¹ +() + +894  +$this +-> +®lowPkIn£¹ +; + +895 + } +} + +901 +public + +funùiÚ + + $£tIdM‘hod +( +$idM‘hod +) + +903 +$this +-> +idM‘hod + = +$idM‘hod +; + +904 + } +} + +911 +public + +funùiÚ + + $isSkSql +() + +913  ( +$this +-> +skSql + || $this-> + `isAlŸs +(è|| $this-> + `isFÜReã»nûOÆy +()); + +914 + } +} + +921 +public + +funùiÚ + + $isR—dOÆy +() + +923  +$this +-> +»adOÆy +; + +924 + } +} + +930 +public + +funùiÚ + + $£tSkSql +( +$v +) + +932 +$this +-> +skSql + = +$v +; + +933 + } +} + +939 +public + +funùiÚ + + $isR–ßdOnIn£¹ +() + +941  +$this +-> +»lßdOnIn£¹ +; + +942 + } +} + +948 +public + +funùiÚ + + $isR–ßdOnUpd©e +() + +950  +$this +-> +»lßdOnUpd©e +; + +951 + } +} + +957 +public + +funùiÚ + + $g‘AlŸs +() + +959  +$this +-> +®Ÿs +; + +960 + } +} + +967 +public + +funùiÚ + + $isAlŸs +() + +969  ( +$this +-> +®Ÿs + !=ð +nuÎ +); + +970 + } +} + +977 +public + +funùiÚ + + $£tAlŸs +( +$v +) + +979 +$this +-> +®Ÿs + = +$v +; + +980 + } +} + +987 +public + +funùiÚ + + $g‘IÁ”çû +() + +989  +$this +-> +’‹rçû +; + +990 + } +} + +996 +public + +funùiÚ + + $£tIÁ”çû +( +$v +) + +998 +$this +-> +’‹rçû + = +$v +; + +999 + } +} + +1009 +public + +funùiÚ + + $isAb¡¿ù +() + +1011  +$this +-> +ab¡¿ùV®ue +; + +1012 + } +} + +1023 +public + +funùiÚ + + $£tAb¡¿ù +( +$v +) + +1025 +$this +-> +ab¡¿ùV®ue + = ( +boޗn +è +$v +; + +1026 + } +} + +1032 +public + +funùiÚ + + $g‘Package +() + +1034  +$this +-> +pkg +; + +1035 + } +} + +1041 +public + +funùiÚ + + $£tPackage +( +$v +) + +1043 +$this +-> +pkg + = +$v +; + +1044 + } +} + +1050 +public + +funùiÚ + + $g‘CÞumns +() + +1052  +$this +-> +cÞumnLi¡ +; + +1053 + } +} + +1058 +public + +funùiÚ + + $g‘NumCÞumns +() + +1060  + `couÁ +( +$this +-> +cÞumnLi¡ +); + +1061 + } +} + +1066 +public + +funùiÚ + + $g‘NumLazyLßdCÞumns +() + +1068 +$couÁ + = 0; + +1069 + `fܗch + ( +$this +-> +cÞumnLi¡ + +as + +$cÞ +) { + +1070 ià( +$cÞ +-> + `isLazyLßd +()) { + +1071 +$couÁ +++; + +1074  +$couÁ +; + +1075 + } +} + +1081 +public + +funùiÚ + + $g‘V®id©Üs +() + +1083  +$this +-> +v®id©ÜLi¡ +; + +1084 + } +} + +1090 +public + +funùiÚ + + $g‘FÜeignKeys +() + +1092  +$this +-> +fÜeignKeys +; + +1093 + } +} + +1099 +public + +funùiÚ + + $g‘IdM‘hodP¬am‘”s +() + +1101  +$this +-> +idM‘hodP¬am‘”s +; + +1102 + } +} + +1108 +public + +funùiÚ + + $g‘Indiûs +() + +1110  +$this +-> +šdiûs +; + +1111 + } +} + +1117 +public + +funùiÚ + + $g‘Uniûs +() + +1119  +$this +-> +uniûs +; + +1120 + } +} + +1126 +public + +funùiÚ + + $g‘CÞumn +( +$Çme +) + +1128  @ +$this +-> +cÞumnsByName +[ +$Çme +]; + +1129 + } +} + +1135 +public + +funùiÚ + + $g‘CÞumnByPhpName +( +$phpName +) + +1137  @ +$this +-> +cÞumnsByPhpName +[ +$phpName +]; + +1138 + } +} + +1144 +public + +funùiÚ + + $g‘FÜeignKeysReã»ncšgTabË +( +$bËÇme +) + +1146 +$m©ches + = + `¬¿y +(); + +1147 +$keys + = +$this +-> + `g‘FÜeignKeys +(); + +1148 + `fܗch + ( +$keys + +as + +$fk +) { + +1149 ià( +$fk +-> + `g‘FÜeignTabËName +(è==ð +$bËÇme +) { + +1150 +$m©ches +[] = +$fk +; + +1153  +$m©ches +; + +1154 + } +} + +1162 +public + +funùiÚ + + $g‘CÞumnFÜeignKeys +( +$cÞÇme +) + +1164 +$m©ches + = + `¬¿y +(); + +1165 + `fܗch + ( +$this +-> +fÜeignKeys + +as + +$fk +) { + +1166 ià( + `š_¬¿y +( +$cÞÇme +, +$fk +-> + `g‘LoÿlCÞumns +())) { + +1167 +$m©ches +[] = +$fk +; + +1170  +$m©ches +; + +1171 + } +} + +1177 +public + +funùiÚ + + $cڏšsCÞumn +( +$cÞ +) + +1179 ià( +$cÞ + +š¡ªûof + +CÞumn +) { + +1180  + `š_¬¿y +( +$cÞ +, +$this +-> +cÞumnLi¡ +); + +1182  ( +$this +-> + `g‘CÞumn +( +$cÞ +è!=ð +nuÎ +); + +1184 + } +} + +1191 +public + +funùiÚ + + $£tD©aba£ +( +D©aba£ + +$db +) + +1193 +$this +-> +d©aba£ + = +$db +; + +1194 + } +} + +1201 +public + +funùiÚ + + $g‘D©aba£ +() + +1203  +$this +-> +d©aba£ +; + +1204 + } +} + +1211 +public + +funùiÚ + + $isFÜReã»nûOÆy +() + +1213  +$this +-> +fÜReã»nûOÆy +; + +1214 + } +} + +1221 +public + +funùiÚ + + $£tFÜReã»nûOÆy +( +$v +) + +1223 +$this +-> +fÜReã»nûOÆy + = ( +boޗn +è +$v +; + +1224 + } +} + +1230 +public + +funùiÚ + + $Œ“Mode +() + +1232  +$this +-> +Œ“Mode +; + +1233 + } +} + +1239 +public + +funùiÚ + + $£tT»eMode +( +$v +) + +1241 +$this +-> +Œ“Mode + = +$v +; + +1242 + } +} + +1249 +public + +funùiÚ + + $­³ndXml +( +DOMNode + +$node +) + +1251 +$doc + = ( +$node + +š¡ªûof + +DOMDocum’t +è? $nod: $node-> +owÃrDocum’t +; + +1253 +$bËNode + = +$node +-> + `­³ndChžd +( +$doc +-> + `ü—‹EËm’t +('table')); + +1254 +$bËNode +-> + `£tA‰ribu‹ +('Çme', +$this +-> + `g‘Name +()); + +1256 ià( +$this +-> +phpName + !=ð +nuÎ +) { + +1257 +$bËNode +-> + `£tA‰ribu‹ +('phpName', +$this +-> +phpName +); + +1260 ià( +$this +-> +idM‘hod + !=ð +nuÎ +) { + +1261 +$bËNode +-> + `£tA‰ribu‹ +('idM‘hod', +$this +-> +idM‘hod +); + +1264 ià( +$this +-> +skSql + !=ð +nuÎ +) { + +1265 +$bËNode +-> + `£tA‰ribu‹ +('idM‘hod', + `v¬_expÜt +( +$this +-> +skSql +, +Œue +)); + +1268 ià( +$this +-> +»adOÆy + !=ð +nuÎ +) { + +1269 +$bËNode +-> + `£tA‰ribu‹ +('»adOÆy', + `v¬_expÜt +( +$this +-> +»adOÆy +, +Œue +)); + +1272 ià( +$this +-> +Œ“Mode + !=ð +nuÎ +) { + +1273 +$bËNode +-> + `£tA‰ribu‹ +('Œ“Mode', +$this +-> +Œ“Mode +); + +1276 ià( +$this +-> +»lßdOnIn£¹ + !=ð +nuÎ +) { + +1277 +$bËNode +-> + `£tA‰ribu‹ +('»lßdOnIn£¹', + `v¬_expÜt +( +$this +-> +»lßdOnIn£¹ +, +Œue +)); + +1280 ià( +$this +-> +»lßdOnUpd©e + !=ð +nuÎ +) { + +1281 +$bËNode +-> + `£tA‰ribu‹ +('»lßdOnUpd©e', + `v¬_expÜt +( +$this +-> +»lßdOnUpd©e +, +Œue +)); + +1284 ià( +$this +-> +fÜReã»nûOÆy + !=ð +nuÎ +) { + +1285 +$bËNode +-> + `£tA‰ribu‹ +('fÜReã»nûOÆy', + `v¬_expÜt +( +$this +-> +fÜReã»nûOÆy +, +Œue +)); + +1288 ià( +$this +-> +ab¡¿ùV®ue + !=ð +nuÎ +) { + +1289 +$bËNode +-> + `£tA‰ribu‹ +('ab¡¿ù', + `v¬_expÜt +( +$this +-> +ab¡¿ùV®ue +, +Œue +)); + +1292 ià( +$this +-> +’‹rçû + !=ð +nuÎ +) { + +1293 +$bËNode +-> + `£tA‰ribu‹ +('š‹rçû', +$this +-> +’‹rçû +); + +1296 ià( +$this +-> +desütiÚ + !=ð +nuÎ +) { + +1297 +$bËNode +-> + `£tA‰ribu‹ +('desütiÚ', +$this +-> +desütiÚ +); + +1300 ià( +$this +-> +ba£CÏss + !=ð +nuÎ +) { + +1301 +$bËNode +-> + `£tA‰ribu‹ +('ba£CÏss', +$this +-> +ba£CÏss +); + +1304 ià( +$this +-> +ba£P“r + !=ð +nuÎ +) { + +1305 +$bËNode +-> + `£tA‰ribu‹ +('ba£P“r', +$this +-> +ba£P“r +); + +1308 + `fܗch + ( +$this +-> +cÞumnLi¡ + +as + +$cÞ +) { + +1309 +$cÞ +-> + `­³ndXml +( +$bËNode +); + +1312 + `fܗch + ( +$this +-> +v®id©ÜLi¡ + +as + +$v®id©Ü +) { + +1313 +$v®id©Ü +-> + `­³ndXml +( +$bËNode +); + +1316 + `fܗch + ( +$this +-> +fÜeignKeys + +as + +$fk +) { + +1317 +$fk +-> + `­³ndXml +( +$bËNode +); + +1320 + `fܗch + ( +$this +-> +idM‘hodP¬am‘”s + +as + +$·¿m +) { + +1321 +$·¿m +-> + `­³ndXml +( +$bËNode +); + +1324 + `fܗch + ( +$this +-> +šdiûs + +as + +$šdex +) { + +1325 +$šdex +-> + `­³ndXml +( +$bËNode +); + +1328 + `fܗch + ( +$this +-> +uniûs + +as + +$unique +) { + +1329 +$unique +-> + `­³ndXml +( +$bËNode +); + +1332 + `fܗch + ( +$this +-> +v’dÜInfos + +as + +$vi +) { + +1333 +$vi +-> + `­³ndXml +( +$bËNode +); + +1336 + } +} + +1344 +public + +funùiÚ + + $g‘Prim¬yKey +() + +1346 +$pk + = + `¬¿y +(); + +1347 + `fܗch + ( +$this +-> +cÞumnLi¡ + +as + +$cÞ +) { + +1348 ià( +$cÞ +-> + `isPrim¬yKey +()) { + +1349 +$pk +[] = +$cÞ +; + +1352  +$pk +; + +1353 + } +} + +1360 +public + +funùiÚ + + $hasPrim¬yKey +() + +1362  ( + `couÁ +( +$this +-> + `g‘Prim¬yKey +()) > 0); + +1363 + } +} + +1370 +public + +funùiÚ + + $hasAutoInüem’tPrim¬yKey +() + +1372 ià( +$this +-> + `g‘IdM‘hod +(è!ð +IDM‘hod +:: +NO_ID_METHOD +) { + +1373 +$pks + = +$this +-> + `g‘Prim¬yKey +(); + +1374 + `fܗch + ( +$pks + +as + +$pk +) { + +1375 ià( +$pk +-> + `isAutoInüem’t +()) { + +1376  +Œue +; + +1380  +çl£ +; + +1381 + } +} + +1388 +public + +funùiÚ + + $g‘AutoInüem’tPrim¬yKey +() + +1390 ià( +$this +-> + `g‘IdM‘hod +(è!ð +IDM‘hod +:: +NO_ID_METHOD +) { + +1391 +$pks + = +$this +-> + `g‘Prim¬yKey +(); + +1392 + `fܗch + ( +$pks + +as + +$pk +) { + +1393 ià( +$pk +-> + `isAutoInüem’t +()) { + +1394  +$pk +; + +1398  +nuÎ +; + +1399 + } +} + +1407 +public + +funùiÚ + + $´štPrim¬yKey +() + +1409  +$this +-> + `´štLi¡ +($this-> +cÞumnLi¡ +); + +1410 + } +} + +1418 +´iv©e + +funùiÚ + + $´štLi¡ +( +$li¡ +){ + +1419 +$»suÉ + = ""; + +1420 +$comma + = 0; + +1421  +$i +=0, +$_i += + `couÁ +( +$li¡ +); $i < $_i; $i++) { + +1422 +$cÞ + = +$li¡ +[ +$i +]; + +1423 ià( +$cÞ +-> + `isPrim¬yKey +()) { + +1424 +$»suÉ + .ð( +$comma +++ ? ',' : ''è. +$this +-> + `g‘D©aba£ +()-> + `g‘PÏtfÜm +()-> + `quÙeId’tif›r +( +$cÞ +-> + `g‘Name +()); + +1427  +$»suÉ +; + +1428 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Unique.php + +1 +owÃrDocum’t +; + +54 +$uniqueNode + = +$node +-> + `­³ndChžd +( +$doc +-> + `ü—‹EËm’t +('unique')); + +55 +$uniqueNode +-> + `£tA‰ribu‹ +('Çme', +$this +-> + `g‘Name +()); + +56 +$cÞumns + = +$this +-> + `g‘CÞumns +(); + +57 + `fܗch + ( +$this +-> + `g‘CÞumns +(è +as + +$cÞÇme +) { + +58 +$uniqueCÞNode + = +$uniqueNode +-> + `­³ndChžd +( +$doc +-> + `ü—‹EËm’t +('unique-column')); + +59 +$uniqueCÞNode +-> + `£tA‰ribu‹ +('Çme', +$cÞÇme +); + +62 + `fܗch + ( +$this +-> +v’dÜInfos + +as + +$vi +) { + +63 +$vi +-> + `­³ndXml +( +$uniqueNode +); + +65 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Validator.php + +1 +cÞumn + = $this-> + `g‘TabË +()-> + `g‘CÞumn +($this-> + `g‘A‰ribu‹ +("column")); + +74 +$this +-> +Œª¦©e + = $this-> + `g‘A‰ribu‹ +("Œª¦©e", $this-> + `g‘TabË +()-> + `g‘D©aba£ +()-> + `g‘DeçuÉT¿n¦©eM‘hod +());; + +85 +public + +funùiÚ + + $addRuË +( +$d©a +) + +87 ià( +$d©a + +š¡ªûof + +RuË +) { + +88 +$ruË + = +$d©a +; + +89 +$ruË +-> + `£tV®id©Ü +( +$this +); + +90 +$this +-> +ruËLi¡ +[] = +$ruË +; + +91  +$ruË +; + +94 +$ruË + = +Ãw + + `RuË +(); + +95 +$ruË +-> + `£tV®id©Ü +( +$this +); + +96 +$ruË +-> + `lßdFromXML +( +$d©a +); + +97  +$this +-> + `addRuË +( +$ruË +); + +99 + } +} + +105 +public + +funùiÚ + + $g‘RuËs +() + +107  +$this +-> +ruËLi¡ +; + +108 + } +} + +114 +public + +funùiÚ + + $g‘CÞumnName +() + +116  +$this +-> +cÞumn +-> + `g‘Name +(); + +117 + } +} + +124 +public + +funùiÚ + + $£tCÞumn +( +CÞumn + +$cÞumn +) + +126 +$this +-> +cÞumn + = +$cÞumn +; + +127 + } +} + +133 +public + +funùiÚ + + $g‘CÞumn +() + +135  +$this +-> +cÞumn +; + +136 + } +} + +142 +public + +funùiÚ + + $£tTabË +( +TabË + +$bË +) + +144 +$this +-> +bË + = +$bË +; + +145 + } +} + +151 +public + +funùiÚ + + $g‘TabË +() + +153  +$this +-> +bË +; + +154 + } +} + +161 +public + +funùiÚ + + $£tT¿n¦©e +( +$m‘hod +) + +163 +$this +-> +Œª¦©e + = +$m‘hod +; + +164 + } +} + +171 +public + +funùiÚ + + $g‘T¿n¦©e +() + +173  +$this +-> +Œª¦©e +; + +174 + } +} + +179 +public + +funùiÚ + + $­³ndXml +( +DOMNode + +$node +) + +181 +$doc + = ( +$node + +š¡ªûof + +DOMDocum’t +è? $nod: $node-> +owÃrDocum’t +; + +183 +$v®Node + = +$node +-> + `­³ndChžd +( +$doc +-> + `ü—‹EËm’t +('validator')); + +184 +$v®Node +-> + `£tA‰ribu‹ +('cÞumn', +$this +-> + `g‘CÞumnName +()); + +186 ià( +$this +-> +Œª¦©e + !=ð +nuÎ +) { + +187 +$v®Node +-> + `£tA‰ribu‹ +('Œª¦©e', +$this +-> +Œª¦©e +); + +190 + `fܗch + ( +$this +-> +ruËLi¡ + +as + +$ruË +) { + +191 +$ruË +-> + `­³ndXml +( +$v®Node +); + +193 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/VendorInfo.php + +1 +ty³ + = +$ty³ +; + +62 +´Ùeùed + +funùiÚ + + $£tupObjeù +() + +64 +$this +-> +ty³ + = $this-> + `g‘A‰ribu‹ +("type"); + +65 + } +} + +72 +public + +funùiÚ + + $£tTy³ +( +$v +) + +74 +$this +-> +ty³ + = +$v +; + +75 + } +} + +82 +public + +funùiÚ + + $g‘Ty³ +() + +84  +$this +-> +ty³ +; + +85 + } +} + +91 +public + +funùiÚ + + $addP¬am‘” +( +$©Œib +) + +93 +$Çme + = +$©Œib +["name"]; + +94 +$this +-> +·¿m‘”s +[ +$Çme +] = +$©Œib +["value"]; + +95 + } +} + +103 +public + +funùiÚ + + $£tP¬am‘” +( +$Çme +, +$v®ue +) + +105 +$this +-> +·¿m‘”s +[ +$Çme +] = +$v®ue +; + +106 + } +} + +114 +public + +funùiÚ + + $g‘P¬am‘” +( +$Çme +) + +116 ià( + `is£t +( +$this +-> +·¿m‘”s +[ +$Çme +])) { + +117  +$this +-> +·¿m‘”s +[ +$Çme +]; + +119  +nuÎ +; + +120 + } +} + +127 +public + +funùiÚ + + $hasP¬am‘” +( +$Çme +) + +129  + `is£t +( +$this +-> +·¿m‘”s +[ +$Çme +]); + +130 + } +} + +137 +public + +funùiÚ + +£tP¬am‘”s +( +¬¿y + +$·¿ms + = + $¬¿y +()) + +139 +$this +-> +·¿m‘”s + = +$·¿ms +; + +140 + } +} + +147 +public + +funùiÚ + + $g‘P¬am‘”s +() + +149  +$this +-> +·¿m‘”s +; + +150 + } +} + +157 +public + +funùiÚ + + $g‘M”gedV’dÜInfo +( +V’dÜInfo + +$m”ge +) + +159 +$ÃwP¬ams + = + `¬¿y_m”ge +( +$this +-> + `g‘P¬am‘”s +(), +$m”ge +->getParameters()); + +160 +$ÃwInfo + = +Ãw + + `V’dÜInfo +( +$this +-> + `g‘Ty³ +()); + +161 +$ÃwInfo +-> + `£tP¬am‘”s +( +$ÃwP¬ams +); + +162  +$ÃwInfo +; + +163 + } +} + +168 +public + +funùiÚ + + $­³ndXml +( +DOMNode + +$node +) + +170 +$doc + = ( +$node + +š¡ªûof + +DOMDocum’t +è? $nod: $node-> +owÃrDocum’t +; + +172 +$v’dÜNode + = +$node +-> + `­³ndChžd +( +$doc +-> + `ü—‹EËm’t +("vendor")); + +173 +$v’dÜNode +-> + `£tA‰ribu‹ +("ty³", +$this +-> + `g‘Ty³ +()); + +175 + `fܗch + ( +$this +-> +·¿m‘”s + +as + +$key + => +$v®ue +) { + +176 +$·¿m‘”Node + = +$doc +-> + `ü—‹EËm’t +("parameter"); + +177 +$·¿m‘”Node +-> + `£tA‰ribu‹ +("Çme", +$key +); + +178 +$·¿m‘”Node +-> + `£tA‰ribu‹ +("v®ue", +$v®ue +); + +179 +$v’dÜNode +-> + `­³ndChžd +( +$·¿m‘”Node +); + +181 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/XMLElement.php + +1 +©Œibu‹s + = + `¬¿y_chªge_key_ÿ£ +( +$©Œibu‹s +, +CASE_LOWER +); + +60 +$this +-> + `£tupObjeù +(); + +68 +public + +funùiÚ + + $g‘A‰ribu‹s +() + +70  +$this +-> +©Œibu‹s +; + +71 + } +} + +80 +public + +funùiÚ + + $g‘A‰ribu‹ +( +$Çme +, +$deçuÉV®ue + = +nuÎ +) + +82 +$Çme + = + `¡¹Þow” +($name); + +83 ià( + `is£t +( +$this +-> +©Œibu‹s +[ +$Çme +])) { + +84  +$this +-> +©Œibu‹s +[ +$Çme +]; + +86  +$deçuÉV®ue +; + +88 + } +} + +95 +´Ùeùed + +funùiÚ + + $boޗnV®ue +( +$v® +) + +97 ià( + `is_num”ic +( +$v® +)) { + +98  ( +boÞ +è +$v® +; + +100  ( + `š_¬¿y +( + `¡¹Þow” +( +$v® +), + `¬¿y +('Œue', 't', 'y', 'yes'), +Œue +è?ru: +çl£ +); + +102 + } +} + +108 +ab¡¿ù + +public + +funùiÚ + +­³ndXml +( +DOMNode + +$node +); + +116 +public + +funùiÚ + + $addV’dÜInfo +( +$d©a +) + +118 ià( +$d©a + +š¡ªûof + +V’dÜInfo +) { + +119 +$vi + = +$d©a +; + +120 +$this +-> +v’dÜInfos +[ +$vi +-> + `g‘Ty³ +()] = $vi; + +121  +$vi +; + +123 +$vi + = +Ãw + + `V’dÜInfo +(); + +124 +$vi +-> + `lßdFromXML +( +$d©a +); + +125  +$this +-> + `addV’dÜInfo +( +$vi +); + +127 + } +} + +133 +public + +funùiÚ + + $g‘V’dÜInfoFÜTy³ +( +$ty³ +) + +135 ià( + `is£t +( +$this +-> +v’dÜInfos +[ +$ty³ +])) { + +136  +$this +-> +v’dÜInfos +[ +$ty³ +]; + +139  +Ãw + + `V’dÜInfo +(); + +141 + } +} + +152 +public + +funùiÚ + + $g‘CÚfigu»dBehaviÜ +( +$bÇme +) + +154 ià( +$cÚfig + = +$this +-> + `g‘G’”©ÜCÚfig +()) { + +155 ià( +$þass + = +$cÚfig +-> + `g‘CÚfigu»dBehaviÜ +( +$bÇme +)) { + +156  +$þass +; + +160 +$g’ + = +Ãw + + `PhpNameG’”©Ü +(); + +161 if( + `þass_exi¡s +( +$þass + = +$g’ +-> + `g’”©eName +( +$bÇme +, +PhpNameG’”©Ü +:: +CONV_METHOD_PHPNAME +) . 'Behavior')) { + +162  +$þass +; + +166 + } +} + +175 +public + +funùiÚ + + $toSŒšg +() + +177 +$doc + = +Ãw + + `DOMDocum’t +('1.0'); + +178 +$doc +-> +fÜm©Ouut + = +Œue +; + +179 +$this +-> + `­³ndXml +( +$doc +); + +180 +$xml¡r + = +$doc +-> + `§veXML +(); + +181  + `Œim +( + `´eg_»¶aû +('/<\?xml.*?\?>/', '', +$xml¡r +)); + +182 + } +} + +188 +public + +funùiÚ + + $__toSŒšg +() + +190  +$this +-> + `toSŒšg +(); + +191 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/BaseSchemaParser.php + +1 + `£tCÚÃùiÚ +($dbh); + +80 +public + +funùiÚ + + $£tCÚÃùiÚ +( +PDO + +$dbh +) + +82 +$this +-> +dbh + = +$dbh +; + +83 + } +} + +89 +public + +funùiÚ + + $g‘CÚÃùiÚ +() + +91  +$this +-> +dbh +; + +92 + } +} + +99 +´Ùeùed + +funùiÚ + + $w¬n +( +$msg +) + +101 +$this +-> +w¬nšgs +[] = +$msg +; + +102 + } +} + +109 +public + +funùiÚ + + $g‘W¬nšgs +() + +111  +$this +-> +w¬nšgs +; + +112 + } +} + +119 +public + +funùiÚ + + $£tG’”©ÜCÚfig +( +G’”©ÜCÚfig + +$cÚfig +) + +121 +$this +-> +g’”©ÜCÚfig + = +$cÚfig +; + +122 + } +} + +129 +public + +funùiÚ + + $g‘G’”©ÜCÚfig +() + +131  +$this +-> +g’”©ÜCÚfig +; + +132 + } +} + +140 +public + +funùiÚ + + $g‘BuždPrݔty +( +$Çme +) + +142 ià( +$this +-> +g’”©ÜCÚfig + !=ð +nuÎ +) { + +143  +$this +-> +g’”©ÜCÚfig +-> + `g‘BuždPrݔty +( +$Çme +); + +145  +nuÎ +; + +146 + } +} + +153 +ab¡¿ù + +´Ùeùed + +funùiÚ + +g‘Ty³M­pšg +(); + +161 +´Ùeùed + +funùiÚ + + $g‘M­³dPrݖTy³ +( +$ÇtiveTy³ +) + +163 ià( +$this +-> +ÇtiveToPrݖTy³M­ + ==ð +nuÎ +) { + +164 +$this +-> +ÇtiveToPrݖTy³M­ + = $this-> + `g‘Ty³M­pšg +(); + +166 ià( + `is£t +( +$this +-> +ÇtiveToPrݖTy³M­ +[ +$ÇtiveTy³ +])) { + +167  +$this +-> +ÇtiveToPrݖTy³M­ +[ +$ÇtiveTy³ +]; + +169  +nuÎ +; + +170 + } +} + +178 +´Ùeùed + +funùiÚ + + $g‘M­³dN©iveTy³ +( +$´Ý–Ty³ +) + +180 ià( +$this +-> +»v”£Ty³M­ + ==ð +nuÎ +) { + +181 +$this +-> +»v”£Ty³M­ + = + `¬¿y_æ +($this-> + `g‘Ty³M­pšg +()); + +183  + `is£t +( +$this +-> +»v”£Ty³M­ +[ +$´Ý–Ty³ +]è? $this->»v”£Ty³M­[$´Ý–Ty³] : +nuÎ +; + +184 + } +} + +191 +´Ùeùed + +funùiÚ + + $g‘NewV’dÜInfoObjeù +( +¬¿y + +$·¿ms +) + +193 +$ty³ + = +$this +-> + `g‘G’”©ÜCÚfig +()-> + `g‘CÚfigu»dPÏtfÜm +()-> + `g‘D©aba£Ty³ +(); + +194 +$vi + = +Ãw + + `V’dÜInfo +( +$ty³ +); + +195 +$vi +-> + `£tP¬am‘”s +( +$·¿ms +); + +196  +$vi +; + +197 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/SchemaParser.php + +1 +C»ÞeTy³s +:: +BINARY +, + +39 "b™" => +PrݖTy³s +:: +BOOLEAN +, + +40 "ch¬" => +PrݖTy³s +:: +CHAR +, + +41 "d©‘ime" => +PrݖTy³s +:: +TIMESTAMP +, + +42 "decim®(èid’t™y" => +PrݖTy³s +:: +DECIMAL +, + +43 "decim®" => +PrݖTy³s +:: +DECIMAL +, + +44 "image" => +PrݖTy³s +:: +LONGVARBINARY +, + +45 "št" => +PrݖTy³s +:: +INTEGER +, + +46 "šˆid’t™y" => +PrݖTy³s +:: +INTEGER +, + +47 "š‹g”" => +PrݖTy³s +:: +INTEGER +, + +48 "mÚey" => +PrݖTy³s +:: +DECIMAL +, + +49 "nch¬" => +PrݖTy³s +:: +CHAR +, + +50 "Áext" => +PrݖTy³s +:: +LONGVARCHAR +, + +51 "num”ic(èid’t™y" => +PrݖTy³s +:: +NUMERIC +, + +52 "num”ic" => +PrݖTy³s +:: +NUMERIC +, + +53 "nv¬ch¬" => +PrݖTy³s +:: +VARCHAR +, + +54 "»®" => +PrݖTy³s +:: +REAL +, + +55 "æßt" => +PrݖTy³s +:: +FLOAT +, + +56 "sm®ld©‘ime" => +PrݖTy³s +:: +TIMESTAMP +, + +57 "sm®lšt" => +PrݖTy³s +:: +SMALLINT +, + +58 "sm®lšˆid’t™y" => +PrݖTy³s +:: +SMALLINT +, + +59 "sm®lmÚey" => +PrݖTy³s +:: +DECIMAL +, + +60 "sy¢ame" => +PrݖTy³s +:: +VARCHAR +, + +61 "‹xt" => +PrݖTy³s +:: +LONGVARCHAR +, + +62 "time¡amp" => +PrݖTy³s +:: +BINARY +, + +63 "tšyšˆid’t™y" => +PrݖTy³s +:: +TINYINT +, + +64 "tšyšt" => +PrݖTy³s +:: +TINYINT +, + +65 "uniqueid’tif›r" => +PrݖTy³s +:: +CHAR +, + +66 "v¬bš¬y" => +PrݖTy³s +:: +VARBINARY +, + +67 "v¬ch¬" => +PrݖTy³s +:: +VARCHAR +, + +68 "uniqueid’tif›r" => +PrݖTy³s +:: +CHAR +, + +70 "bigšˆid’t™y" => +PrݖTy³s +:: +BIGINT +, + +71 "bigšt" => +PrݖTy³s +:: +BIGINT +, + +72 "sql_v¬ŸÁ" => +PrݖTy³s +:: +VARCHAR +, + +80 +´Ùeùed + +funùiÚ + + $g‘Ty³M­pšg +() + +82  +£lf +:: +$mssqlTy³M­ +; + +88 +public + +funùiÚ + + $·r£ +( +D©aba£ + +$d©aba£ +) + +90 +$¡mt + = +$this +-> +dbh +-> + `qu”y +("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME <> 'dtproperties'"); + +93 +$bËs + = + `¬¿y +(); + +94  +$row + = +$¡mt +-> + `ãtch +( +PDO +:: +FETCH_NUM +)) { + +95 +$Çme + = +$row +[0]; + +96 +$bË + = +Ãw + + `TabË +( +$Çme +); + +97 +$d©aba£ +-> + `addTabË +( +$bË +); + +98 +$bËs +[] = +$bË +; + +102 + `fܗch + ( +$bËs + +as + +$bË +) { + +103 +$this +-> + `addCÞumns +( +$bË +); + +107 + `fܗch + ( +$bËs + +as + +$bË +) { + +108 +$this +-> + `addFÜeignKeys +( +$bË +); + +109 +$this +-> + `addIndexes +( +$bË +); + +110 +$this +-> + `addPrim¬yKey +( +$bË +); + +113 + } +} + +121 +´Ùeùed + +funùiÚ + + $addCÞumns +( +TabË + +$bË +) + +123 +$¡mt + = +$this +-> +dbh +-> + `qu”y +("¥_cÞumn '" . +$bË +-> + `g‘Name +() . "'"); + +125  +$row + = +$¡mt +-> + `ãtch +( +PDO +:: +FETCH_ASSOC +)) { + +127 +$Çme + = +$row +['COLUMN_NAME']; + +128 +$ty³ + = +$row +['TYPE_NAME']; + +129 +$size + = +$row +['LENGTH']; + +130 +$is_nuÎabË + = +$row +['NULLABLE']; + +131 +$deçuÉ + = +$row +['COLUMN_DEF']; + +132 +$´ecisiÚ + = +$row +['PRECISION']; + +133 +$sÿË + = +$row +['SCALE']; + +134 +$autošüem’t + = +çl£ +; + +135 ià( + `¡¹Þow” +( +$ty³ +) == "int identity") { + +136 +$autošüem’t + = +Œue +; + +139 +$´Ý–Ty³ + = +$this +-> + `g‘M­³dPrݖTy³ +( +$ty³ +); + +140 ià(! +$´Ý–Ty³ +) { + +141 +$´Ý–Ty³ + = +CÞumn +:: +DEFAULT_TYPE +; + +142 +$this +-> + `w¬n +("CÞumÀ[" . +$bË +-> + `g‘Name +(è. "." . +$Çme +. "] ha ¨cÞumÀty³ (". +$ty³ +.")hat Propel does‚ot support."); + +145 +$cÞumn + = +Ãw + + `CÞumn +( +$Çme +); + +146 +$cÞumn +-> + `£tTabË +( +$bË +); + +147 +$cÞumn +-> + `£tDomašFÜTy³ +( +$´Ý–Ty³ +); + +150 +$cÞumn +-> + `g‘Domaš +()-> + `»¶aûSize +( +$size +); + +151 +$cÞumn +-> + `g‘Domaš +()-> + `»¶aûSÿË +( +$sÿË +); + +152 ià( +$deçuÉ + !=ð +nuÎ +) { + +153 +$cÞumn +-> + `g‘Domaš +()-> + `£tDeçuÉV®ue +( +Ãw + + `CÞumnDeçuÉV®ue +( +$deçuÉ +, +CÞumnDeçuÉV®ue +:: +TYPE_VALUE +)); + +155 +$cÞumn +-> + `£tAutoInüem’t +( +$autošüem’t +); + +156 +$cÞumn +-> + `£tNÙNuÎ +(! +$is_nuÎabË +); + +158 +$bË +-> + `addCÞumn +( +$cÞumn +); + +162 + } +} + +167 +´Ùeùed + +funùiÚ + + $addFÜeignKeys +( +TabË + +$bË +) + +169 +$d©aba£ + = +$bË +-> + `g‘D©aba£ +(); + +171 +$¡mt + = +$this +-> +dbh +-> + `qu”y +("SELECT ccu1.TABLE_NAME, ccu1.COLUMN_NAME, ccu2.TABLE_NAME AS FK_TABLE_NAME, ccu2.COLUMN_NAME AS FK_COLUMN_NAME + +172 +FROM + +INFORMATION_SCHEMA +. +CONSTRAINT_COLUMN_USAGE + +ccu1 + +INNER + +JOIN + + +173 +INFORMATION_SCHEMA +. +TABLE_CONSTRAINTS + +tc1 + +ON +c1. +CONSTRAINT_NAME + = +ccu1 +.CONSTRAINT_NAME +AND + + +174 +CONSTRAINT_TYPE + = 'FÜeigÀKey' +INNER + +JOIN + + +175 +INFORMATION_SCHEMA +. +REFERENTIAL_CONSTRAINTS + +rc1 + +ON +„c1. +CONSTRAINT_NAME + = +tc1 +.CONSTRAINT_NAME +INNER + +JOIN + + +176 +INFORMATION_SCHEMA +. +CONSTRAINT_COLUMN_USAGE + +ccu2 + +ON + ccu2. +CONSTRAINT_NAME + = +rc1 +. +UNIQUE_CONSTRAINT_NAME + + +177 + `WHERE + ( +ccu1 +. +bË_Çme + = '".$table->getName()."')"); + +179 +$row + = +$¡mt +-> + `ãtch +( +PDO +:: +FETCH_NUM +); + +181 +$fÜeignKeys + = + `¬¿y +(); + +182  +$row + = +$¡mt +-> + `ãtch +( +PDO +:: +FETCH_ASSOC +)) { + +184 +$lcÞ + = +$row +['COLUMN_NAME']; + +185 +$ábl + = +$row +['FK_TABLE_NAME']; + +186 +$fcÞ + = +$row +['FK_COLUMN_NAME']; + +189 +$fÜeignTabË + = +$d©aba£ +-> + `g‘TabË +( +$ábl +); + +190 +$fÜeignCÞumn + = +$fÜeignTabË +-> + `g‘CÞumn +( +$fcÞ +); + +191 +$loÿlCÞumn + = +$bË +-> + `g‘CÞumn +( +$lcÞ +); + +193 ià(! + `is£t +( +$fÜeignKeys +[ +$Çme +])) { + +194 +$fk + = +Ãw + + `FÜeignKey +( +$Çme +); + +195 +$fk +-> + `£tFÜeignTabËName +( +$fÜeignTabË +-> + `g‘Name +()); + +198 +$bË +-> + `addFÜeignKey +( +$fk +); + +199 +$fÜeignKeys +[ +$Çme +] = +$fk +; + +201 +$fÜeignKeys +[ +$Çme +]-> + `addReã»nû +( +$loÿlCÞumn +, +$fÜeignCÞumn +); + +204 + } +} + +209 +´Ùeùed + +funùiÚ + + $addIndexes +( +TabË + +$bË +) + +211 +$¡mt + = +$this +-> +dbh +-> + `qu”y +("¥_šdexes_row£ˆ" . +$bË +-> + `g‘Name +()); + +213 +$šdexes + = + `¬¿y +(); + +214  +$row + = +$¡mt +-> + `ãtch +( +PDO +:: +FETCH_ASSOC +)) { + +215 +$cÞName + = +$row +["COLUMN_NAME"]; + +216 +$Çme + = +$row +['INDEX_NAME']; + +219 ià(! + `is£t +( +$šdexes +[ +$Çme +])) { + +220 +$šdexes +[ +$Çme +] = +Ãw + + `Index +($name); + +221 +$bË +-> + `addIndex +( +$šdexes +[ +$Çme +]); + +224 +$šdexes +[ +$Çme +]-> + `addCÞumn +( +$bË +-> + `g‘CÞumn +( +$cÞName +)); + +226 + } +} + +231 +´Ùeùed + +funùiÚ + + $addPrim¬yKey +( +TabË + +$bË +) + +233 +$¡mt + = +$this +-> +dbh +-> + `qu”y +("SELECT COLUMN_NAME + +234 +FROM + +INFORMATION_SCHEMA +. +TABLE_CONSTRAINTS + + +235 +INNER + +JOIN + +INFORMATION_SCHEMA +. +CONSTRAINT_COLUMN_USAGE + +ON + + +236 +INFORMATION_SCHEMA +. +TABLE_CONSTRAINTS +. +CONSTRAINT_NAME + = INFORMATION_SCHEMA. +CONSTRAINT_COLUMN_USAGE +. +cÚ¡¿št_Çme + + +237 + `WHERE + ( +INFORMATION_SCHEMA +. +TABLE_CONSTRAINTS +. +CONSTRAINT_TYPE + = 'PRIMARY KEY'è +AND + + +238 ( +INFORMATION_SCHEMA +. +TABLE_CONSTRAINTS +. +TABLE_NAME + = '".$table->getName()."')"); + +242  +$row + = +$¡mt +-> + `ãtch +( +PDO +:: +FETCH_NUM +)) { + +243 +$Çme + = +$row +[0]; + +244 +$bË +-> + `g‘CÞumn +( +$Çme +)-> + `£tPrim¬yKey +( +Œue +); + +246 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/mysql/MysqlSchemaParser.php + +1 +PrݖTy³s +:: +TINYINT +, + +44 'sm®lšt' => +PrݖTy³s +:: +SMALLINT +, + +45 'mediumšt' => +PrݖTy³s +:: +SMALLINT +, + +46 'št' => +PrݖTy³s +:: +INTEGER +, + +47 'š‹g”' => +PrݖTy³s +:: +INTEGER +, + +48 'bigšt' => +PrݖTy³s +:: +BIGINT +, + +49 'št24' => +PrݖTy³s +:: +BIGINT +, + +50 '»®' => +PrݖTy³s +:: +REAL +, + +51 'æßt' => +PrݖTy³s +:: +FLOAT +, + +52 'decim®' => +PrݖTy³s +:: +DECIMAL +, + +53 'num”ic' => +PrݖTy³s +:: +NUMERIC +, + +54 'doubË' => +PrݖTy³s +:: +DOUBLE +, + +55 'ch¬' => +PrݖTy³s +:: +CHAR +, + +56 'v¬ch¬' => +PrݖTy³s +:: +VARCHAR +, + +57 'd©e' => +PrݖTy³s +:: +DATE +, + +58 'time' => +PrݖTy³s +:: +TIME +, + +59 'y—r' => +PrݖTy³s +:: +INTEGER +, + +60 'd©‘ime' => +PrݖTy³s +:: +TIMESTAMP +, + +61 'time¡amp' => +PrݖTy³s +:: +TIMESTAMP +, + +62 'tšyblob' => +PrݖTy³s +:: +BINARY +, + +63 'blob' => +PrݖTy³s +:: +BLOB +, + +64 'mediumblob' => +PrݖTy³s +:: +BLOB +, + +65 'lÚgblob' => +PrݖTy³s +:: +BLOB +, + +66 'lÚg‹xt' => +PrݖTy³s +:: +CLOB +, + +67 'tšy‹xt' => +PrݖTy³s +:: +VARCHAR +, + +68 'medium‹xt' => +PrݖTy³s +:: +LONGVARCHAR +, + +69 '‹xt' => +PrݖTy³s +:: +LONGVARCHAR +, + +70 '’um' => +PrݖTy³s +:: +CHAR +, + +71 '£t' => +PrݖTy³s +:: +CHAR +, + +79 +´Ùeùed + +funùiÚ + + $g‘Ty³M­pšg +() + +81  +£lf +:: +$mysqlTy³M­ +; + +87 +public + +funùiÚ + + $·r£ +( +D©aba£ + +$d©aba£ +) + +89 +$this +-> +addV’dÜInfo + = $this-> + `g‘G’”©ÜCÚfig +()-> + `g‘BuždPrݔty +('addVendorInfo'); + +91 +$¡mt + = +$this +-> +dbh +-> + `qu”y +("SHOW TABLES"); + +94 +$bËs + = + `¬¿y +(); + +95  +$row + = +$¡mt +-> + `ãtch +( +PDO +:: +FETCH_NUM +)) { + +96 +$Çme + = +$row +[0]; + +97 +$bË + = +Ãw + + `TabË +( +$Çme +); + +98 +$d©aba£ +-> + `addTabË +( +$bË +); + +99 +$bËs +[] = +$bË +; + +103 + `fܗch + ( +$bËs + +as + +$bË +) { + +104 +$this +-> + `addCÞumns +( +$bË +); + +108 + `fܗch + ( +$bËs + +as + +$bË +) { + +109 +$this +-> + `addFÜeignKeys +( +$bË +); + +110 +$this +-> + `addIndexes +( +$bË +); + +111 +$this +-> + `addPrim¬yKey +( +$bË +); + +112 ià( +$this +-> +addV’dÜInfo +) { + +113 +$this +-> + `addTabËV’dÜInfo +( +$bË +); + +116 + } +} + +124 +´Ùeùed + +funùiÚ + + $addCÞumns +( +TabË + +$bË +) + +126 +$¡mt + = +$this +-> +dbh +-> + `qu”y +("SHOW COLUMNS FROM `" . +$bË +-> + `g‘Name +() . "`"); + +128  +$row + = +$¡mt +-> + `ãtch +( +PDO +:: +FETCH_ASSOC +)) { + +130 +$Çme + = +$row +['Field']; + +131 +$is_nuÎabË + = ( +$row +['Null'] == 'YES'); + +132 +$autošüem’t + = ( + `¡½os +( +$row +['ExŒa'], 'auto_šüem’t'è!=ð +çl£ +); + +133 +$size + = +nuÎ +; + +134 +$´ecisiÚ + = +nuÎ +; + +135 +$sÿË + = +nuÎ +; + +137 ià( + `´eg_m©ch +('/^(\w+)[\(]?([\d,]*)[\)]?Ð|$)/', +$row +['Ty³'], +$m©ches +)) { + +139 +$ÇtiveTy³ + = +$m©ches +[1]; + +140 ià( +$m©ches +[2]) { + +141 iàÐ( +$ýos + = + `¡½os +( +$m©ches +[2], ',')è!=ð +çl£ +) { + +142 +$size + = (è + `sub¡r +( +$m©ches +[2], 0, +$ýos +); + +143 +$´ecisiÚ + = +$size +; + +144 +$sÿË + = (è + `sub¡r +( +$m©ches +[2], +$ýos + + 1); + +146 +$size + = (è +$m©ches +[2]; + +149 } + `–£if + ( + `´eg_m©ch +('/^(\w+)\(/', +$row +['Ty³'], +$m©ches +)) { + +150 +$ÇtiveTy³ + = +$m©ches +[1]; + +152 +$ÇtiveTy³ + = +$row +['Type']; + +156 +$deçuÉ + = + `´eg_m©ch +('~blob|‹xt~', +$ÇtiveTy³ +è? +nuÎ + : +$row +['Default']; + +158 +$´Ý–Ty³ + = +$this +-> + `g‘M­³dPrݖTy³ +( +$ÇtiveTy³ +); + +159 ià(! +$´Ý–Ty³ +) { + +160 +$´Ý–Ty³ + = +CÞumn +:: +DEFAULT_TYPE +; + +161 +$this +-> + `w¬n +("CÞumÀ[" . +$bË +-> + `g‘Name +(è. "." . +$Çme +. "] ha ¨cÞumÀty³ (". +$ÇtiveTy³ +.")hat Propel does‚ot support."); + +164 +$cÞumn + = +Ãw + + `CÞumn +( +$Çme +); + +165 +$cÞumn +-> + `£tTabË +( +$bË +); + +166 +$cÞumn +-> + `£tDomašFÜTy³ +( +$´Ý–Ty³ +); + +169 +$cÞumn +-> + `g‘Domaš +()-> + `»¶aûSize +( +$size +); + +170 +$cÞumn +-> + `g‘Domaš +()-> + `»¶aûSÿË +( +$sÿË +); + +171 ià( +$deçuÉ + !=ð +nuÎ +) { + +172 +$cÞumn +-> + `g‘Domaš +()-> + `£tDeçuÉV®ue +( +Ãw + + `CÞumnDeçuÉV®ue +( +$deçuÉ +, +CÞumnDeçuÉV®ue +:: +TYPE_VALUE +)); + +174 +$cÞumn +-> + `£tAutoInüem’t +( +$autošüem’t +); + +175 +$cÞumn +-> + `£tNÙNuÎ +(! +$is_nuÎabË +); + +177 ià( +$this +-> +addV’dÜInfo +) { + +178 +$vi + = +$this +-> + `g‘NewV’dÜInfoObjeù +( +$row +); + +179 +$cÞumn +-> + `addV’dÜInfo +( +$vi +); + +182 +$bË +-> + `addCÞumn +( +$cÞumn +); + +186 + } +} + +191 +´Ùeùed + +funùiÚ + + $addFÜeignKeys +( +TabË + +$bË +) + +193 +$d©aba£ + = +$bË +-> + `g‘D©aba£ +(); + +195 +$¡mt + = +$this +-> +dbh +-> + `qu”y +("SHOW CREATE TABLE `" . +$bË +-> + `g‘Name +(). "`"); + +196 +$row + = +$¡mt +-> + `ãtch +( +PDO +:: +FETCH_NUM +); + +198 +$fÜeignKeys + = + `¬¿y +(); + +201 +$»gEx + = '/CONSTRAINT `([^`]+)` FOREIGN KEY \((.+)\) REFERENCES `([^`]*)` \((.+)\)(.*)/'; + +202 ià( + `´eg_m©ch_®l +( +$»gEx +, +$row +[1], +$m©ches +)) { + +203 +$tmpA¼ay + = + `¬¿y_keys +( +$m©ches +[0]); + +204 + `fܗch + ( +$tmpA¼ay + +as + +$curKey +) { + +205 +$Çme + = +$m©ches +[1][ +$curKey +]; + +206 +$¿wlcÞ + = +$m©ches +[2][ +$curKey +]; + +207 +$ábl + = +$m©ches +[3][ +$curKey +]; + +208 +$¿wfcÞ + = +$m©ches +[4][ +$curKey +]; + +209 +$fkey + = +$m©ches +[5][ +$curKey +]; + +211 +$lcÞs + = + `¬¿y +(); + +212 + `fܗch +( + `´eg_¥l™ +('/`, `/', +$¿wlcÞ +è +as + +$p›û +) { + +213 +$lcÞs +[] = + `Œim +( +$p›û +, '` '); + +216 +$fcÞs + = + `¬¿y +(); + +217 + `fܗch +( + `´eg_¥l™ +('/`, `/', +$¿wfcÞ +è +as + +$p›û +) { + +218 +$fcÞs +[] = + `Œim +( +$p›û +, '` '); + +222 +$fkaùiÚs + = + `¬¿y +( + +223 'ON DELETE' => +FÜeignKey +:: +RESTRICT +, + +224 'ON UPDATE' => +FÜeignKey +:: +RESTRICT +, + +227 ià( +$fkey +) { + +229 + `fܗch + ( + `¬¿y_keys +( +$fkaùiÚs +è +as + +$fkaùiÚ +) { + +230 +$»suÉ + = +NULL +; + +231 + `´eg_m©ch +('/' . +$fkaùiÚ + . ' (' . +FÜeignKey +:: +CASCADE + . '|' . FÜeignKey:: +SETNULL + . ')/', +$fkey +, +$»suÉ +); + +232 ià( +$»suÉ + && + `is_¬¿y +($»suÉè&& + `is£t +($result[1])) { + +233 +$fkaùiÚs +[ +$fkaùiÚ +] = +$»suÉ +[1]; + +238 +$loÿlCÞumns + = + `¬¿y +(); + +239 +$fÜeignCÞumns + = + `¬¿y +(); + +241 +$fÜeignTabË + = +$d©aba£ +-> + `g‘TabË +( +$ábl +); + +243 + `fܗch +( +$fcÞs + +as + +$fcÞ +) { + +244 +$fÜeignCÞumns +[] = +$fÜeignTabË +-> + `g‘CÞumn +( +$fcÞ +); + +246 + `fܗch +( +$lcÞs + +as + +$lcÞ +) { + +247 +$loÿlCÞumns +[] = +$bË +-> + `g‘CÞumn +( +$lcÞ +); + +250 ià(! + `is£t +( +$fÜeignKeys +[ +$Çme +])) { + +251 +$fk + = +Ãw + + `FÜeignKey +( +$Çme +); + +252 +$fk +-> + `£tFÜeignTabËName +( +$fÜeignTabË +-> + `g‘Name +()); + +253 +$fk +-> + `£tOnD–‘e +( +$fkaùiÚs +['ON DELETE']); + +254 +$fk +-> + `£tOnUpd©e +( +$fkaùiÚs +['ON UPDATE']); + +255 +$bË +-> + `addFÜeignKey +( +$fk +); + +256 +$fÜeignKeys +[ +$Çme +] = +$fk +; + +259  +$i +=0; $˜< + `couÁ +( +$loÿlCÞumns +); $i++) { + +260 +$fÜeignKeys +[ +$Çme +]-> + `addReã»nû +( +$loÿlCÞumns +[ +$i +], +$fÜeignCÞumns +[$i]); + +267 + } +} + +272 +´Ùeùed + +funùiÚ + + $addIndexes +( +TabË + +$bË +) + +274 +$¡mt + = +$this +-> +dbh +-> + `qu”y +("SHOW INDEX FROM `" . +$bË +-> + `g‘Name +() . "`"); + +279 +$šdexes + = + `¬¿y +(); + +280  +$row + = +$¡mt +-> + `ãtch +( +PDO +:: +FETCH_ASSOC +)) { + +281 +$cÞName + = +$row +["Column_name"]; + +282 +$Çme + = +$row +["Key_name"]; + +284 ià( +$Çme + == "PRIMARY") { + +288 ià(! + `is£t +( +$šdexes +[ +$Çme +])) { + +289 +$isUnique + = ( +$row +["Non_unique"] == 0); + +290 ià( +$isUnique +) { + +291 +$šdexes +[ +$Çme +] = +Ãw + + `Unique +($name); + +293 +$šdexes +[ +$Çme +] = +Ãw + + `Index +($name); + +295 ià( +$this +-> +addV’dÜInfo +) { + +296 +$vi + = +$this +-> + `g‘NewV’dÜInfoObjeù +( +$row +); + +297 +$šdexes +[ +$Çme +]-> + `addV’dÜInfo +( +$vi +); + +299 +$bË +-> + `addIndex +( +$šdexes +[ +$Çme +]); + +302 +$šdexes +[ +$Çme +]-> + `addCÞumn +( +$bË +-> + `g‘CÞumn +( +$cÞName +)); + +304 + } +} + +309 +´Ùeùed + +funùiÚ + + $addPrim¬yKey +( +TabË + +$bË +) + +311 +$¡mt + = +$this +-> +dbh +-> + `qu”y +("SHOW KEYS FROM `" . +$bË +-> + `g‘Name +() . "`"); + +315  +$row + = +$¡mt +-> + `ãtch +( +PDO +:: +FETCH_ASSOC +)) { + +317 ià( +$row +['Key_name'] !== 'PRIMARY') { + +320 +$Çme + = +$row +["Column_name"]; + +321 +$bË +-> + `g‘CÞumn +( +$Çme +)-> + `£tPrim¬yKey +( +Œue +); + +323 + } +} + +330 +´Ùeùed + +funùiÚ + + $addTabËV’dÜInfo +( +TabË + +$bË +) + +332 +$¡mt + = +$this +-> +dbh +-> + `qu”y +("SHOW TABLE STATUS LIKE '" . +$bË +-> + `g‘Name +() . "'"); + +333 +$row + = +$¡mt +-> + `ãtch +( +PDO +:: +FETCH_ASSOC +); + +334 +$vi + = +$this +-> + `g‘NewV’dÜInfoObjeù +( +$row +); + +335 +$bË +-> + `addV’dÜInfo +( +$vi +); + +336 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/oracle/OracleSchemaParser.php + +1 +PrݖTy³s +:: +BLOB +, + +53 'CHAR' => +PrݖTy³s +:: +CHAR +, + +54 'CLOB' => +PrݖTy³s +:: +CLOB +, + +55 'DATE' => +PrݖTy³s +:: +DATE +, + +56 'DECIMAL' => +PrݖTy³s +:: +DECIMAL +, + +57 'DOUBLE' => +PrݖTy³s +:: +DOUBLE +, + +58 'FLOAT' => +PrݖTy³s +:: +FLOAT +, + +59 'LONG' => +PrݖTy³s +:: +LONGVARCHAR +, + +60 'NCHAR' => +PrݖTy³s +:: +CHAR +, + +61 'NCLOB' => +PrݖTy³s +:: +CLOB +, + +62 'NUMBER' => +PrݖTy³s +:: +BIGINT +, + +63 'NVARCHAR2' => +PrݖTy³s +:: +VARCHAR +, + +64 'TIMESTAMP' => +PrݖTy³s +:: +TIMESTAMP +, + +65 'VARCHAR2' => +PrݖTy³s +:: +VARCHAR +, + +73 +´Ùeùed + +funùiÚ + + $g‘Ty³M­pšg +() + +75  +£lf +:: +$ÜaþeTy³M­ +; + +82 +public + +funùiÚ + + $·r£ +( +D©aba£ + +$d©aba£ +) + +84 +$bËs + = + `¬¿y +(); + +85 +$¡mt + = +$this +-> +dbh +-> + `qu”y +("SELECT OBJECT_NAME FROM USER_OBJECTS WHERE OBJECT_TYPE = 'TABLE'"); + +88  +$row + = +$¡mt +-> + `ãtch +( +PDO +:: +FETCH_ASSOC +)) { + +89 +$bË + = +Ãw + + `TabË +( +$row +['OBJECT_NAME']); + +90 +$d©aba£ +-> + `addTabË +( +$bË +); + +92 +$this +-> + `addCÞumns +( +$bË +); + +93 +$this +-> + `addPrim¬yKey +( +$bË +); + +94 +$this +-> + `addIndexes +( +$bË +); + +95 +$bËs +[] = +$bË +; + +97 + `fܗch + ( +$bËs + +as + +$bË +) { + +98 +$this +-> + `addFÜeignKeys +( +$bË +); + +100 + } +} + +107 +´Ùeùed + +funùiÚ + + $addCÞumns +( +TabË + +$bË +) + +109 +$¡mt + = +$this +-> +dbh +-> + `qu”y +("SELECT COLUMN_NAME, DATA_TYPE, NULLABLE, DATA_LENGTH, DATA_SCALE, DATA_DEFAULT FROM USER_TAB_COLS WHERE TABLE_NAME = '" . +$bË +-> + `g‘Name +() . "'"); + +111  +$row + = +$¡mt +-> + `ãtch +( +PDO +:: +FETCH_ASSOC +)) { + +112 +$size + = +$row +["DATA_LENGTH"]; + +113 +$sÿË + = +$row +["DATA_SCALE"]; + +114 +$deçuÉ + = +$row +['DATA_DEFAULT']; + +115 +$ty³ + = +$row +["DATA_TYPE"]; + +116 +$isNuÎabË + = ( +$row +['NULLABLE'] == 'Y'); + +117 ià( +$ty³ + =ð"NUMBER" && +$row +["DATA_SCALE"] > 0) { + +118 +$ty³ + = "DECIMAL"; + +120 ià( +$ty³ + =ð"FLOAT"&& +$row +["DATA_PRECISION"] == 126) { + +121 +$ty³ + = "DOUBLE"; + +123 ià( + `¡½os +( +$ty³ +, 'TIMESTAMP('è!=ð +çl£ +) { + +124 +$ty³ + = + `sub¡r +($ty³, 0, + `¡½os +($type, '(')); + +125 +$deçuÉ + = "0000-00-00 00:00:00"; + +126 +$size + = +nuÎ +; + +127 +$sÿË + = +nuÎ +; + +129 ià( +$ty³ + == "DATE") { + +130 +$deçuÉ + = "0000-00-00"; + +131 +$size + = +nuÎ +; + +132 +$sÿË + = +nuÎ +; + +135 +$´Ý–Ty³ + = +$this +-> + `g‘M­³dPrݖTy³ +( +$ty³ +); + +136 ià(! +$´Ý–Ty³ +) { + +137 +$´Ý–Ty³ + = +CÞumn +:: +DEFAULT_TYPE +; + +138 +$this +-> + `w¬n +("CÞumÀ[" . +$bË +-> + `g‘Name +(è. "." . +$row +['COLUMN_NAME']. "] has‡ columnype (".$row["DATA_TYPE"].")hat Propel does‚ot support."); + +141 +$cÞumn + = +Ãw + + `CÞumn +( +$row +['COLUMN_NAME']); + +142 +$cÞumn +-> + `£tPhpName +(); + +143 +$cÞumn +-> + `£tTabË +( +$bË +); + +144 +$cÞumn +-> + `£tDomašFÜTy³ +( +$´Ý–Ty³ +); + +145 +$cÞumn +-> + `g‘Domaš +()-> + `»¶aûSize +( +$size +); + +146 +$cÞumn +-> + `g‘Domaš +()-> + `»¶aûSÿË +( +$sÿË +); + +147 ià( +$deçuÉ + !=ð +nuÎ +) { + +148 +$cÞumn +-> + `g‘Domaš +()-> + `£tDeçuÉV®ue +( +Ãw + + `CÞumnDeçuÉV®ue +( +$deçuÉ +, +CÞumnDeçuÉV®ue +:: +TYPE_VALUE +)); + +150 +$cÞumn +-> + `£tAutoInüem’t +( +çl£ +); + +151 +$cÞumn +-> + `£tNÙNuÎ +(! +$isNuÎabË +); + +152 +$bË +-> + `addCÞumn +( +$cÞumn +); + +155 + } +} + +162 +´Ùeùed + +funùiÚ + + $addIndexes +( +TabË + +$bË +) + +164 +$¡mt + = +$this +-> +dbh +-> + `qu”y +("SELECT COLUMN_NAME, INDEX_NAME FROM USER_IND_COLUMNS WHERE TABLE_NAME = '" . +$bË +-> + `g‘Name +() . "' ORDER BY COLUMN_NAME"); + +166 +$rows + = +$¡mt +-> + `ãtchAÎ +( +PDO +:: +FETCH_ASSOC +); + +167 ià( + `couÁ +( +$rows +) > 0) { + +168 +$šdex + = +Ãw + + `Index +( +$rows +[0]['INDEX_NAME']); + +169 + `fܗch +( +$rows + +AS + +$row +) { + +170 +$šdex +-> + `addCÞumn +( +$row +['COLUMN_NAME']); + +172 +$bË +-> + `addIndex +( +$šdex +); + +174 + } +} + +181 +´Ùeùed + +funùiÚ + + $addFÜeignKeys +( +TabË + +$bË +) + +184 +$fÜeignKeys + = + `¬¿y +(); + +186 +$¡mt + = +$this +-> +dbh +-> + `qu”y +("SELECT CONSTRAINT_NAME, DELETE_RULE, R_CONSTRAINT_NAME FROM USER_CONSTRAINTS WHERE CONSTRAINT_TYPE = 'R' AND TABLE_NAME = '" . +$bË +-> + `g‘Name +(). "'"); + +188  +$row + = +$¡mt +-> + `ãtch +( +PDO +:: +FETCH_ASSOC +)) { + +190 +$¡mt2 + = +$this +-> +dbh +-> + `qu”y +("SELECT COLUMN_NAME FROM USER_CONS_COLUMNS WHERE CONSTRAINT_NAME = '". +$row +['CONSTRAINT_NAME']."' AND TABLE_NAME = '" . +$bË +-> + `g‘Name +(). "'"); + +192 +$loÿlReã»nûInfo + = +$¡mt2 +-> + `ãtch +( +PDO +:: +FETCH_ASSOC +); + +195 +$¡mt2 + = +$this +-> +dbh +-> + `qu”y +("SELECT TABLE_NAME, COLUMN_NAME FROM USER_CONS_COLUMNS WHERE CONSTRAINT_NAME = '". +$row +['R_CONSTRAINT_NAME']."'"); + +196 +$fÜeignReã»nûInfo + = +$¡mt2 +-> + `ãtch +( +PDO +:: +FETCH_ASSOC +); + +198 ià(! + `is£t +( +$fÜeignKeys +[ +$row +["CONSTRAINT_NAME"]])) { + +199 +$fk + = +Ãw + + `FÜeignKey +( +$row +["CONSTRAINT_NAME"]); + +200 +$fk +-> + `£tFÜeignTabËName +( +$fÜeignReã»nûInfo +['TABLE_NAME']); + +201 +$fk +-> + `£tOnD–‘e +( +$row +["DELETE_RULE"]); + +202 +$fk +-> + `£tOnUpd©e +( +$row +["DELETE_RULE"]); + +203 +$fk +-> + `addReã»nû +( + `¬¿y +("loÿl" => +$loÿlReã»nûInfo +['COLUMN_NAME'], "fÜeign" => +$fÜeignReã»nûInfo +['COLUMN_NAME'])); + +204 +$bË +-> + `addFÜeignKey +( +$fk +); + +205 +$fÜeignKeys +[ +$row +["CONSTRAINT_NAME"]] = +$fk +; + +208 + } +} + +215 +´Ùeùed + +funùiÚ + + $addPrim¬yKey +( +TabË + +$bË +) + +217 +$¡mt + = +$this +-> +dbh +-> + `qu”y +("SELECT COLS.COLUMN_NAME FROM USER_CONSTRAINTS CONS, USER_CONS_COLUMNS COLS WHERE CONS.CONSTRAINT_NAME = COLS.CONSTRAINT_NAME AND CONS.TABLE_NAME = '". +$bË +-> + `g‘Name +()."' AND CONS.CONSTRAINT_TYPE = 'P'"); + +219  +$row + = +$¡mt +-> + `ãtch +( +PDO +:: +FETCH_ASSOC +)) { + +222 ià( + `¬¿y_key_exi¡s +(0, +$row +)) { + +223 +$row + = $row[0]; + +225 +$bË +-> + `g‘CÞumn +( +$row +['COLUMN_NAME'])-> + `£tPrim¬yKey +( +Œue +); + +227 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/pgsql/PgsqlSchemaParser.php + +1 +PrݖTy³s +:: +BOOLEAN +, + +40 'boޗn' => +PrݖTy³s +:: +BOOLEAN +, + +41 'tšyšt' => +PrݖTy³s +:: +TINYINT +, + +42 'sm®lšt' => +PrݖTy³s +:: +SMALLINT +, + +43 'mediumšt' => +PrݖTy³s +:: +SMALLINT +, + +44 'št' => +PrݖTy³s +:: +INTEGER +, + +45 'št4' => +PrݖTy³s +:: +INTEGER +, + +46 'š‹g”' => +PrݖTy³s +:: +INTEGER +, + +47 'št8' => +PrݖTy³s +:: +BIGINT +, + +48 'bigšt' => +PrݖTy³s +:: +BIGINT +, + +49 'št24' => +PrݖTy³s +:: +BIGINT +, + +50 '»®' => +PrݖTy³s +:: +REAL +, + +51 'æßt' => +PrݖTy³s +:: +FLOAT +, + +52 'decim®' => +PrݖTy³s +:: +DECIMAL +, + +53 'num”ic' => +PrݖTy³s +:: +NUMERIC +, + +54 'doubË' => +PrݖTy³s +:: +DOUBLE +, + +55 'ch¬' => +PrݖTy³s +:: +CHAR +, + +56 'v¬ch¬' => +PrݖTy³s +:: +VARCHAR +, + +57 'd©e' => +PrݖTy³s +:: +DATE +, + +58 'time' => +PrݖTy³s +:: +TIME +, + +59 'tim‘z' => +PrݖTy³s +:: +TIME +, + +61 'd©‘ime' => +PrݖTy³s +:: +TIMESTAMP +, + +62 'time¡amp' => +PrݖTy³s +:: +TIMESTAMP +, + +63 'time¡am±z' => +PrݖTy³s +:: +TIMESTAMP +, + +64 'by‹a' => +PrݖTy³s +:: +BLOB +, + +65 '‹xt' => +PrݖTy³s +:: +LONGVARCHAR +, + +73 +´Ùeùed + +funùiÚ + + $g‘Ty³M­pšg +() + +75  +£lf +:: +$pgsqlTy³M­ +; + +81 +public + +funùiÚ + + $·r£ +( +D©aba£ + +$d©aba£ +) + +83 +$¡mt + = +$this +-> +dbh +-> + `qu”y +("SELECT version()‡s ver"); + +84 +$ÇtiveV”siÚ + = +$¡mt +-> + `ãtchCÞumn +(); + +86 ià(! +$ÇtiveV”siÚ +) { + +87 +throw + +Ãw + + `EngšeExû±iÚ +("Failedo get database version"); + +90 +$¬rV”siÚ + = + `ssÿnf + ( +$ÇtiveV”siÚ +, '%*s %d.%d'); + +91 +$v”siÚ + = + `¥rštf + ("%d.%d", +$¬rV”siÚ +[0], $arrVersion[1]); + +94 +$¡mt + = +nuÎ +; + +96 +$¡mt + = +$this +-> +dbh +-> + `qu”y +("SELECT c.oid, + +97  +wh’ + +n +. +n¥Çme +='public' +th’ + +c +. +»Êame + n.n¥Çme||'.'||c.»Êam +’d + +as +„elname + +98 +FROM + +pg_þass + +c + +još + +pg_Çme¥aû + +n + + `Ú + (c. +»Êame¥aû +ò. +oid +) + +99 +WHERE + +c +. +»lkšd + = 'r' + +100 +AND + +n +. +n¥Çme + +NOT + + `IN + ('information_schema','pg_catalog') + +101 +AND + +n +. +n¥Çme + +NOT + +LIKE + 'pg_temp%' + +102 +AND + +n +. +n¥Çme + +NOT + +LIKE + 'pg_toast%' + +103 +ORDER + +BY + +»Êame +"); + +105 +$bËW¿ps + = + `¬¿y +(); + +108  +$row + = +$¡mt +-> + `ãtch +( +PDO +:: +FETCH_ASSOC +)) { + +109 +$Çme + = +$row +['relname']; + +110 +$oid + = +$row +['oid']; + +111 +$bË + = +Ãw + + `TabË +( +$Çme +); + +112 +$d©aba£ +-> + `addTabË +( +$bË +); + +115 +$w¿p + = +Ãw + +¡dCÏss +; + +116 +$w¿p +-> +bË + = +$bË +; + +117 +$w¿p +-> +oid + = +$oid +; + +118 +$bËW¿ps +[] = +$w¿p +; + +122 + `fܗch + ( +$bËW¿ps + +as + +$w¿p +) { + +123 +$this +-> + `addCÞumns +( +$w¿p +-> +bË +, $w¿p-> +oid +, +$v”siÚ +); + +127 + `fܗch + ( +$bËW¿ps + +as + +$w¿p +) { + +128 +$this +-> + `addFÜeignKeys +( +$w¿p +-> +bË +, $w¿p-> +oid +, +$v”siÚ +); + +129 +$this +-> + `addIndexes +( +$w¿p +-> +bË +, $w¿p-> +oid +, +$v”siÚ +); + +130 +$this +-> + `addPrim¬yKey +( +$w¿p +-> +bË +, $w¿p-> +oid +, +$v”siÚ +); + +135 + } +} + +145 +´Ùeùed + +funùiÚ + + $addCÞumns +( +TabË + +$bË +, +$oid +, +$v”siÚ +) + +150 +$¡mt + = +$this +-> +dbh +-> + `´•¬e +("SELECT + +151 +©t +. +©Šame +, + +152 +©t +. +©‰ypmod +, + +153 +©t +. +©thasdef +, + +154 +©t +. +©ŠÙnuÎ +, + +155 +def +. +ad¤c +, + +156 +CASE + +WHEN + +©t +. +©Šdims + > 0 +THEN + 1 +ELSE + 0 +END + +AS + +i§¼ay +, + +157 +CASE + + +158 +WHEN + +ty +. +ty²ame + = 'bpchar' + +159 +THEN + 'char' + +160 +WHEN + +ty +. +ty²ame + = '_bpchar' + +161 +THEN + '_char' + +162 +ELSE + + +163 +ty +. +ty²ame + + +164 +END + +AS + +ty²ame +, + +165 +ty +. +ty±y³ + + +166 +FROM + +pg_©Œibu‹ + +©t + + +167 +JOIN + +pg_ty³ + +ty + +ON +y. +oid += +©t +. +©‰ypid + + +168 +LEFT + +OUTER + +JOIN + +pg_©Œdef + +def + +ON + +ad»lid += +©t +. +©Œ–id + +AND + +adnum +÷‰. +©Šum + + +169 +WHERE + +©t +. +©Œ–id + = ? +AND +‡‰. +©Šum + > 0 + +170 +AND + +©t +. +©tisdrݳd + +IS + +FALSE + + +171 +ORDER + +BY + +©t +. +©Šum +"); + +173 +$¡mt +-> + `bšdV®ue +(1, +$oid +, +PDO +:: +PARAM_INT +); + +174 +$¡mt +-> + `execu‹ +(); + +176  +$row + = +$¡mt +-> + `ãtch +( +PDO +:: +FETCH_ASSOC +)) { + +178 +$size + = +nuÎ +; + +179 +$´ecisiÚ + = +nuÎ +; + +180 +$sÿË + = +nuÎ +; + +183 ià(((è +$row +['isarray']) === 1) { + +184 +throw + +Ãw + + `EngšeExû±iÚ + ( + `¥rštf + ("A¼ay d©©y³ ¬nÙ cu¼’Žy suµÜ‹d [%s.%s]", +$this +-> +Çme +, +$row +['attname'])); + +187 +$Çme + = +$row +['attname']; + +190 ià( + `¡¹Þow” + ( +$row +['typtype']) == 'd') { + +191 +$¬rDomaš + = +$this +-> + `´oûssDomaš + ( +$row +['typname']); + +192 +$ty³ + = +$¬rDomaš +['type']; + +193 +$size + = +$¬rDomaš +['length']; + +194 +$´ecisiÚ + = +$size +; + +195 +$sÿË + = +$¬rDomaš +['scale']; + +196 +$boÞHasDeçuÉ + = ( + `¡¾’ + ( + `Œim + ( +$row +['©thasdef'])è> 0è? $row['©thasdef'] : +$¬rDomaš +['hasdefault']; + +197 +$deçuÉ + = ( + `¡¾’ + ( + `Œim + ( +$row +['ad¤c'])è> 0è? $row['ad¤c'] : +$¬rDomaš +['default']; + +198 +$is_nuÎabË + = ( + `¡¾’ + ( + `Œim + ( +$row +['©ŠÙnuÎ'])è> 0è? $row['©ŠÙnuÎ'] : +$¬rDomaš +['notnull']; + +199 +$is_nuÎabË + = (($is_nuÎabË =ð't'è? +çl£ + : +Œue +); + +201 +$ty³ + = +$row +['typname']; + +202 +$¬rL’gthP»cisiÚ + = +$this +-> + `´oûssL’gthSÿË + ( +$row +['©‰ypmod'], +$ty³ +); + +203 +$size + = +$¬rL’gthP»cisiÚ +['length']; + +204 +$´ecisiÚ + = +$size +; + +205 +$sÿË + = +$¬rL’gthP»cisiÚ +['scale']; + +206 +$boÞHasDeçuÉ + = +$row +['atthasdef']; + +207 +$deçuÉ + = +$row +['adsrc']; + +208 +$is_nuÎabË + = (( +$row +['©ŠÙnuÎ'] =ð't'è? +çl£ + : +Œue +); + +211 +$autošüem’t + = +nuÎ +; + +214 ià(( +$boÞHasDeçuÉ + =ð't'è&& ( + `¡¾’ + ( + `Œim + ( +$deçuÉ +)) > 0)) { + +215 ià(! + `´eg_m©ch +('/^Ãxtv®\(/', +$deçuÉ +)) { + +216 +$¡rDeçuÉ +ð + `´eg_»¶aû + ('/::[\W\D]*/', '', +$deçuÉ +); + +217 +$deçuÉ + = + `¡r_»¶aû + ("'", '', +$¡rDeçuÉ +); + +219 +$autošüem’t + = +Œue +; + +220 +$deçuÉ + = +nuÎ +; + +223 +$deçuÉ + = +nuÎ +; + +226 +$´Ý–Ty³ + = +$this +-> + `g‘M­³dPrݖTy³ +( +$ty³ +); + +227 ià(! +$´Ý–Ty³ +) { + +228 +$´Ý–Ty³ + = +CÞumn +:: +DEFAULT_TYPE +; + +229 +$this +-> + `w¬n +("CÞumÀ[" . +$bË +-> + `g‘Name +(è. "." . +$Çme +. "] ha ¨cÞumÀty³ (". +$ty³ +.")hat Propel does‚ot support."); + +232 +$cÞumn + = +Ãw + + `CÞumn +( +$Çme +); + +233 +$cÞumn +-> + `£tTabË +( +$bË +); + +234 +$cÞumn +-> + `£tDomašFÜTy³ +( +$´Ý–Ty³ +); + +237 +$cÞumn +-> + `g‘Domaš +()-> + `»¶aûSize +( +$size +); + +238 +$cÞumn +-> + `g‘Domaš +()-> + `»¶aûSÿË +( +$sÿË +); + +239 ià( +$deçuÉ + !=ð +nuÎ +) { + +240 +$cÞumn +-> + `g‘Domaš +()-> + `£tDeçuÉV®ue +( +Ãw + + `CÞumnDeçuÉV®ue +( +$deçuÉ +, +CÞumnDeçuÉV®ue +:: +TYPE_VALUE +)); + +242 +$cÞumn +-> + `£tAutoInüem’t +( +$autošüem’t +); + +243 +$cÞumn +-> + `£tNÙNuÎ +(! +$is_nuÎabË +); + +245 +$bË +-> + `addCÞumn +( +$cÞumn +); + +249 + } +} + +251 +´iv©e + +funùiÚ + + $´oûssL’gthSÿË +( +$štTypmod +, +$¡rName +) + +254 +$¬rR‘V® + = + `¬¿y + ('Ëngth'=> +nuÎ +, 'scale'=>null); + +257 ià( +$štTypmod + == -1) + +259  +$¬rR‘V® +; + +263 ià( +$¡rName + =ð +$this +-> + `g‘M­³dN©iveTy³ +( +PrݖTy³s +:: +NUMERIC +)) { + +264 +$štL’ + = ( +$štTypmod + - 4) >> 16; + +265 +$štP»c + = ( +$štTypmod + - 4) & 0xffff; + +266 +$štL’ + = + `¥rštf + ("%ld", $intLen); + +267 ià( +$štP»c +) + +269 +$štP»c + = + `¥rštf + ("%ld", $intPrec); + +271 +$¬rR‘V® +['Ëngth'] = +$štL’ +; + +272 +$¬rR‘V® +['sÿË'] = +$štP»c +; + +274 + `–£if + ( +$¡rName + =ð +$this +-> + `g‘M­³dN©iveTy³ +( +PrݖTy³s +:: +TIME +) || $strName == 'timetz' + +275 || +$¡rName + =ð +$this +-> + `g‘M­³dN©iveTy³ +( +PrݖTy³s +:: +TIMESTAMP +) || $strName == 'timestamptz' + +276 || +$¡rName + == 'interval' || $strName == 'bit') + +278 +$¬rR‘V® +['Ëngth'] = + `¥rštf + ("%ld", +$štTypmod +); + +282 +$¬rR‘V® +['Ëngth'] = + `¥rštf + ("%ld", ( +$štTypmod + - 4)); + +284  +$¬rR‘V® +; + +285 + } +} + +287 +´iv©e + +funùiÚ + + $´oûssDomaš +( +$¡rDomaš +) + +289 ià( + `¡¾’ +( + `Œim + ( +$¡rDomaš +)) < 1) { + +290 +throw + +Ãw + + `EngšeExû±iÚ + ("Inv®id domaš‚am[" . +$¡rDomaš + . "]"); + +293 +$¡mt + = +$this +-> +dbh +-> + `´•¬e +("SELECT + +294 +d +. +ty²ame + +as + +domÇme +, + +295 +b +. +ty²ame + +as + +ba£ty³ +, + +296 +d +. +ty¶’ +, + +297 +d +. +ty±ypmod +, + +298 +d +. +ty²ÙnuÎ +, + +299 +d +. +typdeçuÉ + + +300 +FROM + +pg_ty³ + +d + + +301 +INNER + +JOIN + +pg_ty³ + +b + +ON + b. +oid + = +CASE + +WHEN + +d +. +ty²dims + > 0 +th’ + d. +ty³Ëm + +ELSE + d. +typba£ty³ + +END + + +302 +WHERE + + +303 +d +. +ty±y³ + = 'd' + +304 +AND + +d +. +ty²ame + = ? + +305 +ORDER + +BY + +d +. +ty²ame +"); + +306 +$¡mt +-> + `bšdV®ue +(1, +$¡rDomaš +); + +307 +$¡mt +-> + `execu‹ +(); + +309 +$row + = +$¡mt +-> + `ãtch +( +PDO +:: +FETCH_ASSOC +); + +310 ià(! +$row +) { + +311 +throw + +Ãw + + `EngšeExû±iÚ + ("Domaš [" . +$¡rDomaš + . "]‚ot found."); + +314 +$¬rDomaš + = + `¬¿y + (); + +315 +$¬rDomaš +['ty³'] = +$row +['basetype']; + +316 +$¬rL’gthP»cisiÚ + = +$this +-> + `´oûssL’gthSÿË +( +$row +['typtypmod'], $row['basetype']); + +317 +$¬rDomaš +['Ëngth'] = +$¬rL’gthP»cisiÚ +['length']; + +318 +$¬rDomaš +['sÿË'] = +$¬rL’gthP»cisiÚ +['scale']; + +319 +$¬rDomaš +['nÙnuÎ'] = +$row +['typnotnull']; + +320 +$¬rDomaš +['deçuÉ'] = +$row +['typdefault']; + +321 +$¬rDomaš +['hasdeçuÉ'] = ( + `¡¾’ + ( + `Œim + ( +$row +['typdefault'])) > 0) ? 't' : 'f'; + +323 +$¡mt + = +nuÎ +; + +324  +$¬rDomaš +; + +325 + } +} + +330 +´Ùeùed + +funùiÚ + + $addFÜeignKeys +( +TabË + +$bË +, +$oid +, +$v”siÚ +) + +332 +$d©aba£ + = +$bË +-> + `g‘D©aba£ +(); + +333 +$¡mt + = +$this +-> +dbh +-> + `´•¬e +("SELECT + +334 +cÚÇme +, + +335 +cÚfupdty³ +, + +336 +cÚfd–ty³ +, + +337 +CASE + +Æ +. +n¥Çme + +WHEN + 'public' +THEN + +þ +. +»Êame + +ELSE +‚l.n¥Çme||'.'||þ.»Êam +END + +as + +fkb +, + +338 +a2 +. +©Šame + +as + +fkcÞ +, + +339 +CASE + +Ä +. +n¥Çme + +WHEN + 'public' +THEN + +ü +. +»Êame + +ELSE +‚r.n¥Çme||'.'||ü.»Êam +END + +as + +»áab +, + +340 +a1 +. +©Šame + +as + +»fcÞ + + +341 +FROM + +pg_cÚ¡¿št + +ù + + +342 +JOIN + +pg_þass + +þ + +ON + cl. +oid += +cÚ»lid + + +343 +JOIN + +pg_þass + +ü + +ON + cr. +oid += +cÚä–id + + +344 +JOIN + +pg_Çme¥aû + +Æ + +ON +‚l. +oid + = +þ +. +»Êame¥aû + + +345 +JOIN + +pg_Çme¥aû + +Ä + +ON +‚r. +oid + = +ü +. +»Êame¥aû + + +346 +LEFT + +JOIN + +pg_ÿlog +. +pg_©Œibu‹ + +a1 + +ON +‡1. +©Œ–id + = +ù +. +cÚä–id + + +347 +LEFT + +JOIN + +pg_ÿlog +. +pg_©Œibu‹ + +a2 + +ON +‡2. +©Œ–id + = +ù +. +cÚ»lid + + +348 +WHERE + + +349 +cÚty³ +='f' + +350 +AND + +cÚ»lid + = ? + +351 +AND + +a2 +. +©Šum + = +ù +. +cÚkey +[1] + +352 +AND + +a1 +. +©Šum + = +ù +. +cÚfkey +[1] + +353 +ORDER + +BY + +cÚÇme +"); + +354 +$¡mt +-> + `bšdV®ue +(1, +$oid +); + +355 +$¡mt +-> + `execu‹ +(); + +357 +$fÜeignKeys + = + `¬¿y +(); + +359  +$row + = +$¡mt +-> + `ãtch +( +PDO +:: +FETCH_ASSOC +)) { + +361 +$Çme + = +$row +['conname']; + +362 +$loÿl_bË + = +$row +['fktab']; + +363 +$loÿl_cÞumn + = +$row +['fkcol']; + +364 +$fÜeign_bË + = +$row +['reftab']; + +365 +$fÜeign_cÞumn + = +$row +['refcol']; + +368  +$row +['confupdtype']) { + +370 +$Úupd©e + = +FÜeignKey +:: +CASCADE +; ; + +372 +$Úupd©e + = +FÜeignKey +:: +SETDEFAULT +; ; + +374 +$Úupd©e + = +FÜeignKey +:: +SETNULL +; ; + +376 +$Úupd©e + = +FÜeignKey +:: +RESTRICT +; ; + +380 +$Úupd©e + = +FÜeignKey +:: +NONE +; ; + +383  +$row +['confdeltype']) { + +385 +$Úd–‘e + = +FÜeignKey +:: +CASCADE +; ; + +387 +$Úd–‘e + = +FÜeignKey +:: +SETDEFAULT +; ; + +389 +$Úd–‘e + = +FÜeignKey +:: +SETNULL +; ; + +391 +$Úd–‘e + = +FÜeignKey +:: +RESTRICT +; ; + +395 +$Úd–‘e + = +FÜeignKey +:: +NONE +; ; + +398 +$fÜeignTabË + = +$d©aba£ +-> + `g‘TabË +( +$fÜeign_bË +); + +399 +$fÜeignCÞumn + = +$fÜeignTabË +-> + `g‘CÞumn +( +$fÜeign_cÞumn +); + +401 +$loÿlTabË + = +$d©aba£ +-> + `g‘TabË +( +$loÿl_bË +); + +402 +$loÿlCÞumn + = +$loÿlTabË +-> + `g‘CÞumn +( +$loÿl_cÞumn +); + +404 ià(! + `is£t +( +$fÜeignKeys +[ +$Çme +])) { + +405 +$fk + = +Ãw + + `FÜeignKey +( +$Çme +); + +406 +$fk +-> + `£tFÜeignTabËName +( +$fÜeignTabË +-> + `g‘Name +()); + +407 +$fk +-> + `£tOnD–‘e +( +$Úd–‘e +); + +408 +$fk +-> + `£tOnUpd©e +( +$Úupd©e +); + +409 +$bË +-> + `addFÜeignKey +( +$fk +); + +410 +$fÜeignKeys +[ +$Çme +] = +$fk +; + +413 +$fÜeignKeys +[ +$Çme +]-> + `addReã»nû +( +$loÿlCÞumn +, +$fÜeignCÞumn +); + +415 + } +} + +420 +´Ùeùed + +funùiÚ + + $addIndexes +( +TabË + +$bË +, +$oid +, +$v”siÚ +) + +422 +$¡mt + = +$this +-> +dbh +-> + `´•¬e +("SELECT + +423 +DISTINCT + + `ON +( +þs +. +»Êame +) + +424 +þs +. +»Êame + +as + +idxÇme +, + +425 +šdkey +, + +426 +šdisunique + + +427 +FROM + +pg_šdex + +idx + + +428 +JOIN + +pg_þass + +þs + +ON + cls. +oid += +šdex»lid + + +429 +WHERE + +šd»lid + = ? +AND + +NOT + +šdi¥rim¬y + + +430 +ORDER + +BY + +þs +. +»Êame +"); + +432 +$¡mt +-> + `bšdV®ue +(1, +$oid +); + +433 +$¡mt +-> + `execu‹ +(); + +435 +$¡mt2 + = +$this +-> +dbh +-> + `´•¬e +("SELECT‡.attname + +436 +FROM + +pg_ÿlog +. +pg_þass + +c + +JOIN +…g_ÿlog. +pg_©Œibu‹ + +a + +ON +‡. +©Œ–id + = c. +oid + + +437 +WHERE + +c +. +oid + = ? +AND + +a +. +©Šum + = ? AND +NOT +‡. +©tisdrݳd + + +438 +ORDER + +BY + +a +. +©Šum +"); + +440 +$šdexes + = + `¬¿y +(); + +442  +$row + = +$¡mt +-> + `ãtch +( +PDO +:: +FETCH_ASSOC +)) { + +443 +$Çme + = +$row +["idxname"]; + +444 +$unique + = ( +$row +["šdisunique"] =ð't'è? +Œue + : +çl£ +; + +445 ià(! + `is£t +( +$šdexes +[ +$Çme +])) { + +446 ià( +$unique +) { + +447 +$šdexes +[ +$Çme +] = +Ãw + + `Unique +($name); + +449 +$šdexes +[ +$Çme +] = +Ãw + + `Index +($name); + +451 +$bË +-> + `addIndex +( +$šdexes +[ +$Çme +]); + +454 +$¬rCÞumns + = + `ex¶ode + (' ', +$row +['indkey']); + +455 + `fܗch + ( +$¬rCÞumns + +as + +$štCÞNum +) + +457 +$¡mt2 +-> + `bšdV®ue +(1, +$oid +); + +458 +$¡mt2 +-> + `bšdV®ue +(2, +$štCÞNum +); + +459 +$¡mt2 +-> + `execu‹ +(); + +461 +$row2 + = +$¡mt2 +-> + `ãtch +( +PDO +:: +FETCH_ASSOC +); + +463 +$šdexes +[ +$Çme +]-> + `addCÞumn +( +$bË +-> + `g‘CÞumn +( +$row2 +['attname'])); + +469 + } +} + +474 +´Ùeùed + +funùiÚ + + $addPrim¬yKey +( +TabË + +$bË +, +$oid +, +$v”siÚ +) + +477 +$¡mt + = +$this +-> +dbh +-> + `´•¬e +("SELECT + +478 +DISTINCT + + `ON +( +þs +. +»Êame +) + +479 +þs +. +»Êame + +as + +idxÇme +, + +480 +šdkey +, + +481 +šdisunique + + +482 +FROM + +pg_šdex + +idx + + +483 +JOIN + +pg_þass + +þs + +ON + cls. +oid += +šdex»lid + + +484 +WHERE + +šd»lid + = ? +AND + +šdi¥rim¬y + + +485 +ORDER + +BY + +þs +. +»Êame +"); + +486 +$¡mt +-> + `bšdV®ue +(1, +$oid +); + +487 +$¡mt +-> + `execu‹ +(); + +492  +$row + = +$¡mt +-> + `ãtch +( +PDO +:: +FETCH_ASSOC +)) { + +493 +$¬rCÞumns + = + `ex¶ode + (' ', +$row +['indkey']); + +494 + `fܗch + ( +$¬rCÞumns + +as + +$štCÞNum +) { + +495 +$¡mt2 + = +$this +-> +dbh +-> + `´•¬e +("SELECT‡.attname + +496 +FROM + +pg_ÿlog +. +pg_þass + +c + +JOIN +…g_ÿlog. +pg_©Œibu‹ + +a + +ON +‡. +©Œ–id + = c. +oid + + +497 +WHERE + +c +. +oid + = ? +AND + +a +. +©Šum + = ? AND +NOT +‡. +©tisdrݳd + + +498 +ORDER + +BY + +a +. +©Šum +"); + +499 +$¡mt2 +-> + `bšdV®ue +(1, +$oid +); + +500 +$¡mt2 +-> + `bšdV®ue +(2, +$štCÞNum +); + +501 +$¡mt2 +-> + `execu‹ +(); + +503 +$row2 + = +$¡mt2 +-> + `ãtch +( +PDO +:: +FETCH_ASSOC +); + +504 +$bË +-> + `g‘CÞumn +( +$row2 +['©Šame'])-> + `£tPrim¬yKey +( +Œue +); + +509 + } +} + +517 +´Ùeùed + +funùiÚ + + $addSequ’ûs +( +D©aba£ + +$d©aba£ +) + +543 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/sqlite/SqliteSchemaParser.php + +1 +PrݖTy³s +:: +TINYINT +, + +43 'sm®lšt' => +PrݖTy³s +:: +SMALLINT +, + +44 'mediumšt' => +PrݖTy³s +:: +SMALLINT +, + +45 'št' => +PrݖTy³s +:: +INTEGER +, + +46 'š‹g”' => +PrݖTy³s +:: +INTEGER +, + +47 'bigšt' => +PrݖTy³s +:: +BIGINT +, + +48 'št24' => +PrݖTy³s +:: +BIGINT +, + +49 '»®' => +PrݖTy³s +:: +REAL +, + +50 'æßt' => +PrݖTy³s +:: +FLOAT +, + +51 'decim®' => +PrݖTy³s +:: +DECIMAL +, + +52 'num”ic' => +PrݖTy³s +:: +NUMERIC +, + +53 'doubË' => +PrݖTy³s +:: +DOUBLE +, + +54 'ch¬' => +PrݖTy³s +:: +CHAR +, + +55 'v¬ch¬' => +PrݖTy³s +:: +VARCHAR +, + +56 'd©e' => +PrݖTy³s +:: +DATE +, + +57 'time' => +PrݖTy³s +:: +TIME +, + +58 'y—r' => +PrݖTy³s +:: +INTEGER +, + +59 'd©‘ime' => +PrݖTy³s +:: +TIMESTAMP +, + +60 'time¡amp' => +PrݖTy³s +:: +TIMESTAMP +, + +61 'tšyblob' => +PrݖTy³s +:: +BINARY +, + +62 'blob' => +PrݖTy³s +:: +BLOB +, + +63 'mediumblob' => +PrݖTy³s +:: +BLOB +, + +64 'lÚgblob' => +PrݖTy³s +:: +BLOB +, + +65 'lÚg‹xt' => +PrݖTy³s +:: +CLOB +, + +66 'tšy‹xt' => +PrݖTy³s +:: +VARCHAR +, + +67 'medium‹xt' => +PrݖTy³s +:: +LONGVARCHAR +, + +68 '‹xt' => +PrݖTy³s +:: +LONGVARCHAR +, + +69 '’um' => +PrݖTy³s +:: +CHAR +, + +70 '£t' => +PrݖTy³s +:: +CHAR +, + +78 +´Ùeùed + +funùiÚ + + $g‘Ty³M­pšg +() + +80  +£lf +:: +$sql™eTy³M­ +; + +86 +public + +funùiÚ + + $·r£ +( +D©aba£ + +$d©aba£ +) + +88 +$¡mt + = +$this +-> +dbh +-> + `qu”y +("SELECT‚ame FROM sqlite_master WHEREype='table' UNION ALL SELECT‚ame FROM sqlite_temp_master WHEREype='table' ORDER BY‚ame;"); + +91 +$bËs + = + `¬¿y +(); + +92  +$row + = +$¡mt +-> + `ãtch +( +PDO +:: +FETCH_NUM +)) { + +93 +$Çme + = +$row +[0]; + +94 +$bË + = +Ãw + + `TabË +( +$Çme +); + +95 +$d©aba£ +-> + `addTabË +( +$bË +); + +96 +$bËs +[] = +$bË +; + +100 + `fܗch + ( +$bËs + +as + +$bË +) { + +101 +$this +-> + `addCÞumns +( +$bË +); + +105 + `fܗch + ( +$bËs + +as + +$bË +) { + +106 +$this +-> + `addIndexes +( +$bË +); + +109 + } +} + +119 +´Ùeùed + +funùiÚ + + $addCÞumns +( +TabË + +$bË +) + +121 +$¡mt + = +$this +-> +dbh +-> + `qu”y +("PRAGMAabË_šfo('" . +$bË +-> + `g‘Name +() . "')"); + +123  +$row + = +$¡mt +-> + `ãtch +( +PDO +:: +FETCH_ASSOC +)) { + +125 +$Çme + = +$row +['name']; + +127 +$fuÎty³ + = +$row +['type']; + +128 +$size + = +nuÎ +; + +129 +$´ecisiÚ + = +nuÎ +; + +130 +$sÿË + = +nuÎ +; + +132 ià( + `´eg_m©ch +('/^([^\(]+)\(\s*(\d+)\s*,\s*(\d+)\s*\)$/', +$fuÎty³ +, +$m©ches +)) { + +133 +$ty³ + = +$m©ches +[1]; + +134 +$´ecisiÚ + = +$m©ches +[2]; + +135 +$sÿË + = +$m©ches +[3]; + +136 } + `–£if + ( + `´eg_m©ch +('/^([^\(]+)\(\s*(\d+)\s*\)$/', +$fuÎty³ +, +$m©ches +)) { + +137 +$ty³ + = +$m©ches +[1]; + +138 +$size + = +$m©ches +[2]; + +140 +$ty³ + = +$fuÎty³ +; + +144 +$autošüem’t + = ( +$row +['pk'] =ð1 && + `¡¹Þow” +( +$ty³ +) == 'integer'); + +145 +$nÙ_nuÎ + = +$row +['notnull']; + +146 +$deçuÉ + = +$row +['dflt_value']; + +149 +$´Ý–Ty³ + = +$this +-> + `g‘M­³dPrݖTy³ +( +$ty³ +); + +150 ià(! +$´Ý–Ty³ +) { + +151 +$´Ý–Ty³ + = +CÞumn +:: +DEFAULT_TYPE +; + +152 +$this +-> + `w¬n +("CÞumÀ[" . +$bË +-> + `g‘Name +(è. "." . +$Çme +. "] ha ¨cÞumÀty³ (". +$ty³ +.")hat Propel does‚ot support."); + +155 +$cÞumn + = +Ãw + + `CÞumn +( +$Çme +); + +156 +$cÞumn +-> + `£tTabË +( +$bË +); + +157 +$cÞumn +-> + `£tDomašFÜTy³ +( +$´Ý–Ty³ +); + +160 +$cÞumn +-> + `g‘Domaš +()-> + `»¶aûSize +( +$size +); + +161 +$cÞumn +-> + `g‘Domaš +()-> + `»¶aûSÿË +( +$sÿË +); + +162 ià( +$deçuÉ + !=ð +nuÎ +) { + +163 +$cÞumn +-> + `g‘Domaš +()-> + `£tDeçuÉV®ue +( +Ãw + + `CÞumnDeçuÉV®ue +( +$deçuÉ +, +CÞumnDeçuÉV®ue +:: +TYPE_VALUE +)); + +165 +$cÞumn +-> + `£tAutoInüem’t +( +$autošüem’t +); + +166 +$cÞumn +-> + `£tNÙNuÎ +( +$nÙ_nuÎ +); + +169 ià(( +$row +['pk'] =ð1è|| ( + `¡¹Þow” +( +$ty³ +) == 'integer')) { + +170 +$cÞumn +-> + `£tPrim¬yKey +( +Œue +); + +173 +$bË +-> + `addCÞumn +( +$cÞumn +); + +178 + } +} + +183 +´Ùeùed + +funùiÚ + + $addIndexes +( +TabË + +$bË +) + +185 +$¡mt + = +$this +-> +dbh +-> + `qu”y +("PRAGMA index_li¡('" . +$bË +-> + `g‘Name +() . "')"); + +187  +$row + = +$¡mt +-> + `ãtch +( +PDO +:: +FETCH_ASSOC +)) { + +189 +$Çme + = +$row +['name']; + +190 +$šdex + = +Ãw + + `Index +( +$Çme +); + +192 +$¡mt2 + = +$this +-> +dbh +-> + `qu”y +("PRAGMA index_šfo('". +$Çme +."')"); + +193  +$row2 + = +$¡mt2 +-> + `ãtch +( +PDO +:: +FETCH_ASSOC +)) { + +194 +$cÞÇme + = +$row2 +['name']; + +195 +$šdex +-> + `addCÞumn +( +$bË +-> + `g‘CÞumn +( +$cÞÇme +)); + +198 +$bË +-> + `addIndex +( +$šdex +); + +201 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/transform/XmlToAppData.php + +1 +­p + = +Ãw + +AµD©a +( +$¶©fÜm +); + +82 + m$this +-> + m¶©fÜm + = +$¶©fÜm +; + +83 + m$this +-> + mdeçuÉPackage + = +$deçuÉPackage +; + +84 + m$this +-> + mfœ¡Pass + = +Œue +; + +85 + m$this +-> + m’codšg + = +$’codšg +; + +95 +public + +funùiÚ + + $·r£Fže +( +$xmlFže +) + +98 ià( +$this +-> + `isA̗dyP¬£d +( +$xmlFže +)) { + +102 +$domDocum’t + = +Ãw + + `DomDocum’t +('1.0', 'UTF-8'); + +103 +$domDocum’t +-> + `lßd +( +$xmlFže +); + +106 +$this +-> +schemasTagsSck +[ +$xmlFže +] = + `¬¿y +(); + +108 +$this +-> +cu¼’tXmlFže + = +$xmlFže +; + +110 +Œy + { + +111 +$ä + = +Ãw + + `FžeR—d” +( +$xmlFže +); + +112 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +113 +$f + = +Ãw + + `PhšgFže +( +$xmlFže +); + +114 +throw + +Ãw + + `Exû±iÚ +("XML FžnÙ found: " . +$f +-> + `g‘AbsÞu‹P©h +()); + +117 +$br + = +Ãw + + `Bufã»dR—d” +( +$ä +); + +119 +$this +-> +·r£r + = +Ãw + + `Ex·tP¬£r +( +$br +); + +120 +$this +-> +·r£r +-> + `·r£rS‘O±iÚ +( +XML_OPTION_CASE_FOLDING +, 0); + +121 +$this +-> +·r£r +-> + `£tHªdËr +($this); + +123 +Œy + { + +124 +$this +-> +·r£r +-> + `·r£ +(); + +125 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +126 +$br +-> + `þo£ +(); + +127 +throw + +$e +; + +129 +$br +-> + `þo£ +(); + +131 + `¬¿y_pÝ +( +$this +-> +schemasTagsSck +); + +133  +$this +-> +­p +; + +134 + } +} + +146 +public + +funùiÚ + + $¡¬tEËm’t +( +$Çme +, +$©Œibu‹s +) { + +148 +Œy + { + +150 +$·»ÁTag + = +$this +-> + `³ekCu¼’tSchemaTag +(); + +152 ià( +$·»ÁTag + ==ð +çl£ +) { + +154  +$Çme +) { + +156 ià( +$this +-> + `isEx‹º®Schema +()) { + +157 +$this +-> +cu¼’tPackage + = @ +$©Œibu‹s +["package"]; + +158 ià( +$this +-> +cu¼’tPackage + ==ð +nuÎ +) { + +159 +$this +-> +cu¼’tPackage + = $this-> +deçuÉPackage +; + +162 +$this +-> +cu¼DB + = $this-> +­p +-> + `addD©aba£ +( +$©Œibu‹s +); + +167 +$this +-> + `_throwInv®idTagExû±iÚ +( +$Çme +); + +170 } + `–£if + ( +$·»ÁTag + == "database") { + +172  +$Çme +) { + +175 +$xmlFže + = @ +$©Œibu‹s +["filename"]; + +179 ià(! +$this +-> + `isEx‹º®Schema +()) { + +180 +$isFÜRefOÆy + = @ +$©Œibu‹s +["referenceOnly"]; + +181 +$this +-> +isFÜReã»nûOÆy + = ( +$isFÜRefOÆy + !=ð +nuÎ + ? ( + `¡¹Þow” +($isFÜRefOÆyè==ð"Œue"è: +Œue +); + +184 ià( +$xmlFže +{0} != '/') { + +185 +$f + = +Ãw + + `PhšgFže +( +$this +-> +cu¼’tXmlFže +); + +186 +$xf + = +Ãw + + `PhšgFže +( +$f +-> + `g‘P¬’t +(), +$xmlFže +); + +187 +$xmlFže + = +$xf +-> + `g‘P©h +(); + +190 +$this +-> + `·r£Fže +( +$xmlFže +); + +194 +$this +-> +cu¼DB +-> + `addDomaš +( +$©Œibu‹s +); + +198 +$this +-> +cu¼TabË + = $this-> +cu¼DB +-> + `addTabË +( +$©Œibu‹s +); + +199 ià( +$this +-> + `isEx‹º®Schema +()) { + +200 +$this +-> +cu¼TabË +-> + `£tFÜReã»nûOÆy +($this-> +isFÜReã»nûOÆy +); + +201 +$this +-> +cu¼TabË +-> + `£tPackage +($this-> +cu¼’tPackage +); + +206 +$this +-> +cu¼V’dÜObjeù + = $this-> +cu¼DB +-> + `addV’dÜInfo +( +$©Œibu‹s +); + +210 +$this +-> +cu¼BehaviÜ + = $this-> +cu¼DB +-> + `addBehaviÜ +( +$©Œibu‹s +); + +214 +$this +-> + `_throwInv®idTagExû±iÚ +( +$Çme +); + +217 } + `–£if + ( +$·»ÁTag + == "table") { + +219  +$Çme +) { + +221 +$this +-> +cu¼CÞumn + = $this-> +cu¼TabË +-> + `addCÞumn +( +$©Œibu‹s +); + +225 +$this +-> +cu¼FK + = $this-> +cu¼TabË +-> + `addFÜeignKey +( +$©Œibu‹s +); + +229 +$this +-> +cu¼Index + = $this-> +cu¼TabË +-> + `addIndex +( +$©Œibu‹s +); + +233 +$this +-> +cu¼Unique + = $this-> +cu¼TabË +-> + `addUnique +( +$©Œibu‹s +); + +237 +$this +-> +cu¼V’dÜObjeù + = $this-> +cu¼TabË +-> + `addV’dÜInfo +( +$©Œibu‹s +); + +241 +$this +-> +cu¼V®id©Ü + = $this-> +cu¼TabË +-> + `addV®id©Ü +( +$©Œibu‹s +); + +245 +$this +-> +cu¼TabË +-> + `addIdM‘hodP¬am‘” +( +$©Œibu‹s +); + +249 +$this +-> +cu¼BehaviÜ + = $this-> +cu¼TabË +-> + `addBehaviÜ +( +$©Œibu‹s +); + +253 +$this +-> + `_throwInv®idTagExû±iÚ +( +$Çme +); + +256 } + `–£if + ( +$·»ÁTag + == "column") { + +258  +$Çme +) { + +260 +$this +-> +cu¼CÞumn +-> + `addInh”™ªû +( +$©Œibu‹s +); + +264 +$this +-> +cu¼V’dÜObjeù + = $this-> +cu¼CÞumn +-> + `addV’dÜInfo +( +$©Œibu‹s +); + +268 +$this +-> + `_throwInv®idTagExû±iÚ +( +$Çme +); + +271 } + `–£if + ( +$·»ÁTag + == "foreign-key") { + +273  +$Çme +) { + +275 +$this +-> +cu¼FK +-> + `addReã»nû +( +$©Œibu‹s +); + +279 +$this +-> +cu¼V’dÜObjeù + = $this-> +cu¼Unique +-> + `addV’dÜInfo +( +$©Œibu‹s +); + +283 +$this +-> + `_throwInv®idTagExû±iÚ +( +$Çme +); + +286 } + `–£if + ( +$·»ÁTag + == "index") { + +288  +$Çme +) { + +290 +$this +-> +cu¼Index +-> + `addCÞumn +( +$©Œibu‹s +); + +294 +$this +-> +cu¼V’dÜObjeù + = $this-> +cu¼Index +-> + `addV’dÜInfo +( +$©Œibu‹s +); + +298 +$this +-> + `_throwInv®idTagExû±iÚ +( +$Çme +); + +301 } + `–£if + ( +$·»ÁTag + == "unique") { + +303  +$Çme +) { + +305 +$this +-> +cu¼Unique +-> + `addCÞumn +( +$©Œibu‹s +); + +309 +$this +-> +cu¼V’dÜObjeù + = $this-> +cu¼Unique +-> + `addV’dÜInfo +( +$©Œibu‹s +); + +313 +$this +-> + `_throwInv®idTagExû±iÚ +( +$Çme +); + +315 } + `–£if + ( +$·»ÁTag + == "behavior") { + +317  +$Çme +) { + +319 +$this +-> +cu¼BehaviÜ +-> + `addP¬am‘” +( +$©Œibu‹s +); + +323 +$this +-> + `_throwInv®idTagExû±iÚ +( +$Çme +); + +325 } + `–£if + ( +$·»ÁTag + == "validator") { + +326  +$Çme +) { + +328 +$this +-> +cu¼V®id©Ü +-> + `addRuË +( +$©Œibu‹s +); + +331 +$this +-> + `_throwInv®idTagExû±iÚ +( +$Çme +); + +333 } + `–£if + ( +$·»ÁTag + == "vendor") { + +335  +$Çme +) { + +337 +$this +-> +cu¼V’dÜObjeù +-> + `addP¬am‘” +( +$©Œibu‹s +); + +340 +$this +-> + `_throwInv®idTagExû±iÚ +( +$Çme +); + +345 +$this +-> + `_throwInv®idTagExû±iÚ +( +$Çme +); + +348 +$this +-> + `pushCu¼’tSchemaTag +( +$Çme +); + +350 } + `ÿtch + ( +BuždExû±iÚ + +$e +) { + +351 +throw + +$e +; + +352 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +353 +echo + +$e +; + +354 +echo + "\n"; + +355 +throw + +$e +; + +357 + } +} + +359 +funùiÚ + + $_throwInv®idTagExû±iÚ +( +$g_Çme +) + +361 +throw + +Ãw + + `BuždExû±iÚ +("UÃx³ùedag <" . +$g_Çme + . ">", +$this +-> +·r£r +-> + `g‘LoÿtiÚ +()); + +362 + } +} + +373 +public + +funùiÚ + + $’dEËm’t +( +$Çme +) + +375 ià( +£lf +:: +DEBUG +) { + +376 + `´št +("’dEËm’t(" . +$Çme + . ") called\n"); + +379 +$this +-> + `pÝCu¼’tSchemaTag +(); + +380 + } +} + +382 +´Ùeùed + +funùiÚ + + $³ekCu¼’tSchemaTag +() + +384 +$keys + = + `¬¿y_keys +( +$this +-> +schemasTagsSck +); + +385  + `’d +( +$this +-> +schemasTagsSck +[’d( +$keys +)]); + +386 + } +} + +388 +´Ùeùed + +funùiÚ + + $pÝCu¼’tSchemaTag +() + +390 +$keys + = + `¬¿y_keys +( +$this +-> +schemasTagsSck +); + +391 + `¬¿y_pÝ +( +$this +-> +schemasTagsSck +[ + `’d +( +$keys +)]); + +392 + } +} + +394 +´Ùeùed + +funùiÚ + + $pushCu¼’tSchemaTag +( +$g +) + +396 +$keys + = + `¬¿y_keys +( +$this +-> +schemasTagsSck +); + +397 +$this +-> +schemasTagsSck +[ + `’d +( +$keys +)][] = +$g +; + +398 + } +} + +400 +´Ùeùed + +funùiÚ + + $isEx‹º®Schema +() + +402  (( +$this +-> +schemasTagsSck +) > 1); + +403 + } +} + +405 +´Ùeùed + +funùiÚ + + $isA̗dyP¬£d +( +$fžeP©h +) + +407  + `is£t +( +$this +-> +schemasTagsSck +[ +$fžeP©h +]); + +408 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/DefaultPlatform.php + +1 + `£tCÚÃùiÚ +($con); + +61 +$this +-> + `š™Ÿlize +(); + +68 +public + +funùiÚ + + $£tCÚÃùiÚ +( +PDO + +$cÚ + = +nuÎ +) + +70 +$this +-> +cÚ + = +$cÚ +; + +71 + } +} + +78 +public + +funùiÚ + + $£tG’”©ÜCÚfig +( +G’”©ÜCÚfig + +$cÚfig +) + +80 +$this +-> +g’”©ÜCÚfig + = +$cÚfig +; + +81 + } +} + +88 +public + +funùiÚ + + $g‘G’”©ÜCÚfig +() + +90  +$this +-> +g’”©ÜCÚfig +; + +91 + } +} + +99 +´Ùeùed + +funùiÚ + + $g‘BuždPrݔty +( +$Çme +) + +101 ià( +$this +-> +g’”©ÜCÚfig + !=ð +nuÎ +) { + +102  +$this +-> +g’”©ÜCÚfig +-> + `g‘BuždPrݔty +( +$Çme +); + +104  +nuÎ +; + +105 + } +} + +111 +public + +funùiÚ + + $g‘CÚÃùiÚ +() + +113  +$this +-> +cÚ +; + +114 + } +} + +119 +´Ùeùed + +funùiÚ + + $š™Ÿlize +() + +121 +$this +-> +schemaDomašM­ + = + `¬¿y +(); + +122 + `fܗch + ( +PrݖTy³s +:: + `g‘PrݖTy³s +(è +as + +$ty³ +) { + +123 +$this +-> +schemaDomašM­ +[ +$ty³ +] = +Ãw + + `Domaš +($type); + +126 +$this +-> +schemaDomašM­ +[ +PrݖTy³s +:: +BU_DATE +] = +Ãw + + `Domaš +(PrݖTy³s:: +DATE +); + +127 +$this +-> +schemaDomašM­ +[ +PrݖTy³s +:: +BU_TIMESTAMP +] = +Ãw + + `Domaš +(PrݖTy³s:: +TIMESTAMP +); + +130 +$this +-> +schemaDomašM­ +[ +PrݖTy³s +:: +BOOLEAN +] = +Ãw + + `Domaš +(PropelTypes::BOOLEAN, "INTEGER"); + +131 + } +} + +137 +´Ùeùed + +funùiÚ + + $£tSchemaDomašM­pšg +( +Domaš + +$domaš +) + +139 +$this +-> +schemaDomašM­ +[ +$domaš +-> + `g‘Ty³ +()] = $domain; + +140 + } +} + +147 +public + +funùiÚ + + $g‘D©aba£Ty³ +() + +149 +$þazz + = + `g‘_þass +( +$this +); + +150 +$pos + = + `¡½os +( +$þazz +, 'Platform'); + +151  + `¡¹Þow” +( + `sub¡r +( +$þazz +,0, +$pos +)); + +152 + } +} + +157 +public + +funùiÚ + + $g‘MaxCÞumnNameL’gth +() + +160 + } +} + +165 +public + +funùiÚ + + $g‘N©iveIdM‘hod +() + +167  +PÏtfÜm +:: +IDENTITY +; + +168 + } +} + +173 +public + +funùiÚ + + $g‘DomašFÜTy³ +( +$´Ý–Ty³ +) + +175 ià(! + `is£t +( +$this +-> +schemaDomašM­ +[ +$´Ý–Ty³ +])) { + +176 +throw + +Ãw + + `EngšeExû±iÚ +("CªnÙ m­ unknowÀPrݖy³ " . + `v¬_expÜt +( +$´Ý–Ty³ +, +Œue +) . "o‚ative databaseype."); + +178  +$this +-> +schemaDomašM­ +[ +$´Ý–Ty³ +]; + +179 + } +} + +185 +public + +funùiÚ + + $g‘NuÎSŒšg +( +$nÙNuÎ +) + +187  ( +$nÙNuÎ + ? "NOT NULL" : ""); + +188 + } +} + +193 +public + +funùiÚ + + $g‘AutoInüem’t +() + +196 + } +} + +201 +public + +funùiÚ + + $hasSÿË +( +$sqlTy³ +) + +203  +Œue +; + +204 + } +} + +209 +public + +funùiÚ + + $hasSize +( +$sqlTy³ +) + +211  +Œue +; + +212 + } +} + +217 +public + +funùiÚ + + $quÙe +( +$‹xt +) + +219 ià( +$this +-> + `g‘CÚÃùiÚ +()) { + +220  +$this +-> + `g‘CÚÃùiÚ +()-> + `quÙe +( +$‹xt +); + +222  "'" . +$this +-> + `discÚÃùedEsÿ³Text +( +$‹xt +) . "'"; + +224 + } +} + +235 +´Ùeùed + +funùiÚ + + $discÚÃùedEsÿ³Text +( +$‹xt +) + +237  + `¡r_»¶aû +("'", "''", +$‹xt +); + +238 + } +} + +243 +public + +funùiÚ + + $quÙeId’tif›r +( +$‹xt +) + +245  '"' . +$‹xt + . '"'; + +246 + } +} + +251 +public + +funùiÚ + + $suµÜtsN©iveD–‘eTrigg” +() + +253  +çl£ +; + +254 + } +} + +259 +public + +funùiÚ + + $suµÜtsIn£¹NuÎPk +() + +261  +Œue +; + +262 + } +} + +268 +public + +funùiÚ + + $hasSŒ—mBlobIm¶ +() + +270  +çl£ +; + +271 + } +} + +276 +public + +funùiÚ + + $g‘BoޗnSŒšg +( +$b +) + +278 +$b + = ($b ==ð +Œue + || + `¡¹Þow” +($b) === 'true' || $b === 1 || $b === '1' || strtolower($b) === 'y' || strtolower($b) === 'yes'); + +279  ( +$b + ? '1' : '0'); + +280 + } +} + +286 +public + +funùiÚ + + $g‘Time¡ampFÜm©‹r +() + +288  +D©eTime +:: +ISO8601 +; + +289 + } +} + +295 +public + +funùiÚ + + $g‘TimeFÜm©‹r +() + +298 + } +} + +304 +public + +funùiÚ + + $g‘D©eFÜm©‹r +() + +307 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/MssqlPlatform.php + +1 + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +INTEGER +, "INT")); + +42 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +BOOLEAN +, "INT")); + +43 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +DOUBLE +, "FLOAT")); + +44 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +LONGVARCHAR +, "TEXT")); + +45 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +CLOB +, "TEXT")); + +46 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +DATE +, "DATETIME")); + +47 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +BU_DATE +, "DATETIME")); + +48 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +TIME +, "DATETIME")); + +49 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +TIMESTAMP +, "DATETIME")); + +50 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +BU_TIMESTAMP +, "DATETIME")); + +51 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +BINARY +, "BINARY(7132)")); + +52 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +VARBINARY +, "IMAGE")); + +53 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +LONGVARBINARY +, "IMAGE")); + +54 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +BLOB +, "IMAGE")); + +60 +public + +funùiÚ + + $g‘MaxCÞumnNameL’gth +() + +63 + } +} + +70 +public + +funùiÚ + + $g‘NuÎSŒšg +( +$nÙNuÎ +) + +72  ( +$nÙNuÎ + ? "NOT NULL" : "NULL"); + +73 + } +} + +78 +public + +funùiÚ + + $suµÜtsN©iveD–‘eTrigg” +() + +80  +Œue +; + +81 + } +} + +86 +public + +funùiÚ + + $suµÜtsIn£¹NuÎPk +() + +88  +çl£ +; + +89 + } +} + +94 +public + +funùiÚ + + $hasSize +( +$sqlTy³ +) + +96  !("INT" =ð +$sqlTy³ + || "TEXT" == $sqlType); + +97 + } +} + +102 +public + +funùiÚ + + $quÙeId’tif›r +( +$‹xt +) + +104  '[' . +$‹xt + . ']'; + +105 + } +} + +111 +public + +funùiÚ + + $g‘Time¡ampFÜm©‹r +() + +114 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/MysqlPlatform.php + +1 + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +BOOLEAN +, "TINYINT")); + +41 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +NUMERIC +, "DECIMAL")); + +42 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +LONGVARCHAR +, "TEXT")); + +43 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +BINARY +, "BLOB")); + +44 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +VARBINARY +, "MEDIUMBLOB")); + +45 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +LONGVARBINARY +, "LONGBLOB")); + +46 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +BLOB +, "LONGBLOB")); + +47 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +CLOB +, "LONGTEXT")); + +48 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +TIMESTAMP +, "DATETIME")); + +54 +public + +funùiÚ + + $g‘AutoInüem’t +() + +57 + } +} + +62 +public + +funùiÚ + + $g‘MaxCÞumnNameL’gth +() + +65 + } +} + +70 +public + +funùiÚ + + $suµÜtsN©iveD–‘eTrigg” +() + +72 +$usšgIÂoDB + = +çl£ +; + +73 ià( + `þass_exi¡s +('D©aMod–Bužd”', +çl£ +)) + +75 +$usšgIÂoDB + = + `¡¹Þow” +( +$this +-> + `g‘BuždPrݔty +('mysqlTableType')) == 'innodb'; + +77  +$usšgIÂoDB + || +çl£ +; + +78 + } +} + +83 +public + +funùiÚ + + $hasSize +( +$sqlTy³ +) + +85  !("MEDIUMTEXT" =ð +$sqlTy³ + || "LONGTEXT" == $sqlType + +86 || "BLOB" =ð +$sqlTy³ + || "MEDIUMBLOB" == $sqlType + +87 || "LONGBLOB" =ð +$sqlTy³ +); + +88 + } +} + +95 +public + +funùiÚ + + $discÚÃùedEsÿ³Text +( +$‹xt +) + +97 ià( + `funùiÚ_exi¡s +('mysql_escape_string')) { + +98  + `mysql_esÿ³_¡ršg +( +$‹xt +); + +100  + `add¦ashes +( +$‹xt +); + +102 + } +} + +107 +public + +funùiÚ + + $quÙeId’tif›r +( +$‹xt +) + +109  '`' . +$‹xt + . '`'; + +110 + } +} + +116 +public + +funùiÚ + + $g‘Time¡ampFÜm©‹r +() + +119 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/OraclePlatform.php + +1 + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +BOOLEAN +, "NUMBER", "1", "0")); + +41 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +TINYINT +, "NUMBER", "3", "0")); + +42 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +SMALLINT +, "NUMBER", "5", "0")); + +43 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +INTEGER +, "NUMBER")); + +44 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +BIGINT +, "NUMBER", "20", "0")); + +45 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +REAL +, "NUMBER")); + +46 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +DOUBLE +, "FLOAT")); + +47 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +DECIMAL +, "NUMBER")); + +48 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +NUMERIC +, "NUMBER")); + +49 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +VARCHAR +, "NVARCHAR2")); + +50 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +LONGVARCHAR +, "NVARCHAR2", "2000")); + +51 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +TIME +, "TIME")); + +52 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +DATE +, "DATE")); + +53 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +TIMESTAMP +, "TIMESTAMP")); + +54 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +BINARY +, "LONG RAW")); + +55 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +VARBINARY +, "BLOB")); + +56 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +LONGVARBINARY +, "LONG RAW")); + +62 +public + +funùiÚ + + $g‘MaxCÞumnNameL’gth +() + +65 + } +} + +70 +public + +funùiÚ + + $g‘N©iveIdM‘hod +() + +72  +PÏtfÜm +:: +SEQUENCE +; + +73 + } +} + +78 +public + +funùiÚ + + $g‘AutoInüem’t +() + +81 + } +} + +86 +public + +funùiÚ + + $suµÜtsN©iveD–‘eTrigg” +() + +88  +Œue +; + +89 + } +} + +95 +public + +funùiÚ + + $hasSŒ—mBlobIm¶ +() + +97  +Œue +; + +98 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/PgsqlPlatform.php + +1 + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +BOOLEAN +, "BOOLEAN")); + +41 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +TINYINT +, "INT2")); + +42 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +SMALLINT +, "INT2")); + +43 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +BIGINT +, "INT8")); + +44 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +REAL +, "FLOAT")); + +45 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +DOUBLE +, "DOUBLE PRECISION")); + +46 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +LONGVARCHAR +, "TEXT")); + +47 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +BINARY +, "BYTEA")); + +48 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +VARBINARY +, "BYTEA")); + +49 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +LONGVARBINARY +, "BYTEA")); + +50 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +BLOB +, "BYTEA")); + +51 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +CLOB +, "TEXT")); + +57 +public + +funùiÚ + + $g‘N©iveIdM‘hod +() + +59  +PÏtfÜm +:: +SERIAL +; + +60 + } +} + +65 +public + +funùiÚ + + $g‘AutoInüem’t +() + +68 + } +} + +73 +public + +funùiÚ + + $g‘MaxCÞumnNameL’gth +() + +76 + } +} + +83 +public + +funùiÚ + + $discÚÃùedEsÿ³Text +( +$‹xt +) + +85 ià( + `funùiÚ_exi¡s +('pg_escape_string')) { + +86  + `pg_esÿ³_¡ršg +( +$‹xt +); + +88  +·»Á +:: + `discÚÃùedEsÿ³Text +( +$‹xt +); + +90 + } +} + +95 +public + +funùiÚ + + $g‘BoޗnSŒšg +( +$b +) + +99 +$b + = +·»Á +:: + `g‘BoޗnSŒšg +($b); + +100  ( +$b + ? "'t'" : "'f'"); + +101 + } +} + +106 +public + +funùiÚ + + $suµÜtsN©iveD–‘eTrigg” +() + +108  +Œue +; + +109 + } +} + +115 +public + +funùiÚ + + $hasSize +( +$sqlTy³ +) + +117  !("BYTEA" =ð +$sqlTy³ + || "TEXT" == $sqlType); + +118 + } +} + +124 +public + +funùiÚ + + $hasSŒ—mBlobIm¶ +() + +126  +Œue +; + +127 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/Platform.php + +1 + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +NUMERIC +, "DECIMAL")); + +40 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +LONGVARCHAR +, "MEDIUMTEXT")); + +41 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +DATE +, "DATETIME")); + +42 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +BINARY +, "BLOB")); + +43 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +VARBINARY +, "MEDIUMBLOB")); + +44 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +LONGVARBINARY +, "LONGBLOB")); + +45 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +BLOB +, "LONGBLOB")); + +46 +$this +-> + `£tSchemaDomašM­pšg +( +Ãw + + `Domaš +( +PrݖTy³s +:: +CLOB +, "LONGTEXT")); + +53 +public + +funùiÚ + + $g‘AutoInüem’t +() + +57 + } +} + +62 +public + +funùiÚ + + $g‘MaxCÞumnNameL’gth +() + +65 + } +} + +70 +public + +funùiÚ + + $hasSize +( +$sqlTy³ +) { + +71  !("MEDIUMTEXT" =ð +$sqlTy³ + || "LONGTEXT" == $sqlType + +72 || "BLOB" =ð +$sqlTy³ + || "MEDIUMBLOB" == $sqlType + +73 || "LONGBLOB" =ð +$sqlTy³ +); + +74 + } +} + +81 +public + +funùiÚ + + $discÚÃùedEsÿ³Text +( +$‹xt +) + +83 ià( + `funùiÚ_exi¡s +('sqlite_escape_string')) { + +84  + `sql™e_esÿ³_¡ršg +( +$‹xt +); + +86  +·»Á +:: + `discÚÃùedEsÿ³Text +( +$‹xt +); + +88 + } +} + +93 +public + +funùiÚ + + $quÙeId’tif›r +( +$‹xt +) + +95  '[' . +$‹xt + . ']'; + +96 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/AbstractPropelDataModelTask.php + +1 +d©aMod–sLßded +è$this-> + `lßdD©aMod–s +(); + +166  +$this +-> +d©aMod–s +; + +174 +public + +funùiÚ + + $g‘D©aMod–DbM­ +() + +176 ià(! +$this +-> +d©aMod–sLßded +è$this-> + `lßdD©aMod–s +(); + +177  +$this +-> +d©aMod–DbM­ +; + +178 + } +} + +185 +public + +funùiÚ + + $addSchemaFže£t +( +Fže£t + +$£t +) + +187 +$this +-> +schemaFže£ts +[] = +$£t +; + +188 + } +} + +195 +public + +funùiÚ + + $g‘T¬g‘D©aba£ +() + +197  +$this +-> +rg‘D©aba£ +; + +198 + } +} + +205 +public + +funùiÚ + + $£tT¬g‘D©aba£ +( +$v +) + +207 +$this +-> +rg‘D©aba£ + = +$v +; + +208 + } +} + +215 +public + +funùiÚ + + $g‘T¬g‘Package +() + +217  +$this +-> +rg‘Package +; + +218 + } +} + +226 +public + +funùiÚ + + $£tT¬g‘Package +( +$v +) + +228 +$this +-> +rg‘Package + = +$v +; + +229 + } +} + +236 +public + +funùiÚ + + $£tPackageObjeùMod– +( +$v +) + +238 +$this +-> +·ckageObjeùMod– + = ( +$v + ==ð'1' ? +Œue + : +çl£ +); + +239 + } +} + +245 +public + +funùiÚ + + $£tV®id©e +( +$v +) + +247 +$this +-> +v®id©e + = +$v +; + +248 + } +} + +254 +public + +funùiÚ + + $£tXsd +( +PhšgFže + +$v +) + +256 +$this +-> +xsdFže + = +$v +; + +257 + } +} + +263 +public + +funùiÚ + + $£tX¦ +( +PhšgFže + +$v +) + +265 +$this +-> +x¦Fže + = +$v +; + +266 + } +} + +275 +public + +funùiÚ + + $£tOuutDœeùÜy +( +PhšgFže + +$ouutDœeùÜy +) { + +276 +Œy + { + +277 ià(! +$ouutDœeùÜy +-> + `exi¡s +()) { + +278 +$this +-> + `log +("OuuˆdœeùÜy dÛ nكxi¡, c»©šg: " . +$ouutDœeùÜy +-> + `g‘P©h +(), +Projeù +:: +MSG_VERBOSE +); + +279 ià(! +$ouutDœeùÜy +-> + `mkdœs +()) { + +280 +throw + +Ãw + + `IOExû±iÚ +("UÇbˁØü—‹ Ou±uˆdœeùÜy: " . +$ouutDœeùÜy +-> + `g‘AbsÞu‹P©h +()); + +283 +$this +-> +ouutDœeùÜy + = +$ouutDœeùÜy +-> + `g‘CªÚiÿlP©h +(); + +284 } + `ÿtch + ( +IOExû±iÚ + +$iÛ +) { + +285 +throw + +Ãw + + `BuždExû±iÚ +( +$iÛ +); + +287 + } +} + +294 +public + +funùiÚ + + $£tDbEncodšg +( +$v +) + +296 +$this +-> +dbEncodšg + = +$v +; + +297 + } +} + +304 +public + +funùiÚ + + $£tU¾ +( +$u¾ +) + +306 +$this +-> +u¾ + = +$u¾ +; + +307 + } +} + +314 +public + +funùiÚ + + $£tU£rid +( +$u£rId +) + +316 +$this +-> +u£rId + = +$u£rId +; + +317 + } +} + +324 +public + +funùiÚ + + $£tPasswÜd +( +$·sswÜd +) + +326 +$this +-> +·sswÜd + = +$·sswÜd +; + +327 + } +} + +333 +public + +funùiÚ + + $g‘OuutDœeùÜy +() { + +334  +$this +-> +ouutDœeùÜy +; + +335 + } +} + +343 +public + +funùiÚ + + $ü—‹M­³r +() { + +344 ià( +$this +-> +m­³rEËm’t + !=ð +nuÎ +) { + +345 +throw + +Ãw + + `BuždExû±iÚ +("CªnÙ defšmܐthª oà m­³r.", +$this +-> +loÿtiÚ +); + +347 +$this +-> +m­³rEËm’t + = +Ãw + + `M­³r +($this-> +´ojeù +); + +348  +$this +-> +m­³rEËm’t +; + +349 + } +} + +358 +´Ùeùed + +funùiÚ + + $g‘M­³dFže +( +$äom +) + +360 ià(! +$this +-> +m­³rEËm’t +) { + +361 +throw + +Ãw + + `BuždExû±iÚ +("Thisask„equires youo use‡ ƒlemento describe how filename changes should be handled."); + +364 +$m­³r + = +$this +-> +m­³rEËm’t +-> + `g‘Im¶em’tiÚ +(); + +365 +$m­³d + = +$m­³r +-> + `maš +( +$äom +); + +366 ià(! +$m­³d +) { + +367 +throw + +Ãw + + `BuždExû±iÚ +("CªnÙ c»©Ãw fž’amba£d on: " . +$äom +); + +370 +$outFž’ame + = + `¬¿y_shiá +( +$m­³d +); + +371 +$outFže + = +Ãw + + `PhšgFže +( +$this +-> + `g‘OuutDœeùÜy +(), +$outFž’ame +); + +372  +$outFže +; + +373 + } +} + +379 +public + +funùiÚ + + $g‘CÚÃùiÚ +() + +381 ià( +$this +-> +cÚn + ==ð +çl£ +) { + +382 +$this +-> +cÚn + = +nuÎ +; + +383 ià( +$this +-> +u¾ +) { + +384 +$buf + = "Using database settings:\n" + +385 . " URL: " . +$this +-> +u¾ + . "\n" + +386 . ( +$this +-> +u£rId + ? " user: " . $this->userId . "\n" : "") + +387 . ( +$this +-> +·sswÜd + ? "…assword: " . $this->password . "\n" : ""); + +389 +$this +-> + `log +( +$buf +, +Projeù +:: +MSG_VERBOSE +); + +392 ià(! +$this +-> +u£rId +è{ $this->u£rId = +nuÎ +; } + +393 ià(! +$this +-> +·sswÜd +è{ $this->·sswÜd = +nuÎ +; } + +394 +Œy + { + +395 +$this +-> +cÚn + = +Ãw + + `PDO +($this-> +u¾ +, $this-> +u£rId +, $this-> +·sswÜd +); + +396 +$this +-> +cÚn +-> + `£tA‰ribu‹ +( +PDO +:: +ATTR_ERRMODE +, PDO:: +ERRMODE_EXCEPTION +); + +397 } + `ÿtch + ( +PDOExû±iÚ + +$x +) { + +398 +$this +-> + `log +("UÇbˁØü—‹‡ PDO cÚÃùiÚ: " . +$x +-> + `g‘Mes§ge +(), +Projeù +:: +MSG_WARN +); + +402  +$this +-> +cÚn +; + +403 + } +} + +409 +´Ùeùed + +funùiÚ + + $lßdD©aMod–s +() + +411 +$ads + = + `¬¿y +(); + +414 + `fܗch + ( +$this +-> +schemaFže£ts + +as + +$fs +) { + +415 +$ds + = +$fs +-> + `g‘DœeùÜySÿ” +( +$this +-> +´ojeù +); + +416 +$¤cDœ + = +$fs +-> + `g‘Dœ +( +$this +-> +´ojeù +); + +418 +$d©aMod–Fžes + = +$ds +-> + `g‘InþudedFžes +(); + +420 +$¶©fÜm + = +$this +-> + `g‘G’”©ÜCÚfig +()-> + `g‘CÚfigu»dPÏtfÜm +(); + +423 + `fܗch + ( +$d©aMod–Fžes + +as + +$dmFž’ame +) { + +425 +$this +-> + `log +("Proûssšg: ". +$dmFž’ame +); + +426 +$xmlFže + = +Ãw + + `PhšgFže +( +$¤cDœ +, +$dmFž’ame +); + +428 +$dom + = +Ãw + + `DomDocum’t +('1.0', 'UTF-8'); + +429 +$dom +-> + `lßd +( +$xmlFže +-> + `g‘AbsÞu‹P©h +()); + +432 ià( +$this +-> +x¦Fže +) { + +433 +$this +-> + `log +("T¿nsfÜmšg " . +$xmlFže +-> + `g‘P©h +(è. " usšg styËsh“ˆ" . $this-> +x¦Fže +->g‘P©h(), +Projeù +:: +MSG_VERBOSE +); + +434 ià(! + `þass_exi¡s +('XSLTProcessor')) { + +435 +$this +-> + `log +("Could‚Ù…”fÜm XLST¿nsfÜm©iÚ. Maksu» PHP ha b“Àcompžed/cÚfigu»dØsuµÜˆXSLT.", +Projeù +:: +MSG_ERR +); + +438 +$this +-> + `šþudeEx‹º®Schemas +( +$dom +, +$¤cDœ +); + +441 +$x¦ + = +Ãw + + `X¦tProûssÜ +(); + +442 +$x¦ +-> + `impÜtStyËSh“t +( +DomDocum’t +:: + `lßd +( +$this +-> +x¦Fže +-> + `g‘AbsÞu‹P©h +())); + +443 +$ŒªsfÜmed + = +$x¦ +-> + `ŒªsfÜmToDoc +( +$dom +); + +444 +$ÃwXmlFž’ame + = + `sub¡r +( +$xmlFže +-> + `g‘Name +(), 0, + `¡¼pos +($xmlFile->getName(), '.')) . '-transformed.xml'; + +447 +$xmlFže + = +Ãw + + `PhšgFže +( +$¤cDœ +, +$ÃwXmlFž’ame +); + +448 +$ŒªsfÜmed +-> + `§ve +( +$xmlFže +-> + `g‘AbsÞu‹P©h +()); + +449 +$this +-> + `log +("\t- Usšg‚ew (po¡-ŒªsfÜm©iÚèXML fže: " . +$xmlFže +-> + `g‘P©h +(), +Projeù +:: +MSG_VERBOSE +); + +451 +$dom + = +Ãw + + `DomDocum’t +('1.0', 'UTF-8'); + +452 +$dom +-> + `lßd +( +$xmlFže +-> + `g‘AbsÞu‹P©h +()); + +457 ià( +$this +-> +v®id©e + && $this-> +xsdFže +) { + +458 +$this +-> + `log +("V®id©šg XML doø(". +$xmlFže +-> + `g‘P©h +()."èusšg schem¨fž" . $this-> +xsdFže +->g‘P©h(), +Projeù +:: +MSG_VERBOSE +); + +459 ià(! +$dom +-> + `schemaV®id©e +( +$this +-> +xsdFže +-> + `g‘AbsÞu‹P©h +())) { + +460 +throw + +Ãw + + `EngšeExû±iÚ +("XML schem¨fž(". +$xmlFže +-> + `g‘P©h +()."èdÛ nÙ v®id©e. S“ w¬nšg abovf܄—sÚ v®id©iÚ fažed (maksu»ƒ¼Ü_»pÜtšg i £ˆtØshow E_WARNING iàyou dÚ'ˆ£ªy).", +$this +-> + `g‘LoÿtiÚ +()); + +464 +$xmlP¬£r + = +Ãw + + `XmlToAµD©a +( +$¶©fÜm +, +$this +-> + `g‘T¬g‘Package +(), $this-> +dbEncodšg +); + +465 +$ad + = +$xmlP¬£r +-> + `·r£Fže +( +$xmlFže +-> + `g‘AbsÞu‹P©h +()); + +466 +$ad +-> + `£tName +( +$dmFž’ame +); + +467 +$ads +[] = +$ad +; + +471 ià( + `em±y +( +$ads +)) { + +472 +throw + +Ãw + + `BuždExû±iÚ +("No schema files were found (matching your schema fileset definition)."); + +475 ià(! +$this +-> +·ckageObjeùMod– +) { + +477 +$this +-> +d©aMod–s + = +$ads +; + +478 +$this +-> +d©aba£Names + = + `¬¿y +(); + +479 +$this +-> +d©aMod–DbM­ + = + `¬¿y +(); + +483 + `fܗch + ( +$this +-> +d©aMod–s + +as + +$dm +) { + +484 +$d©aba£ + = +$dm +-> + `g‘D©aba£ +(); + +485 +$this +-> +d©aMod–DbM­ +[ +$dm +-> + `g‘Name +()] = +$d©aba£ +->getName(); + +486 +$this +-> +d©aba£Names +[ +$d©aba£ +-> + `g‘Name +()] = $database->getName(); + +490 +$this +-> + `jošD©amod–s +( +$ads +); + +491 +$this +-> +d©aMod–s +[0]-> + `g‘D©aba£s +(); + +494 +$this +-> +d©aMod–sLßded + = +Œue +; + +495 + } +} + +508 +´Ùeùed + +funùiÚ + + $šþudeEx‹º®Schemas +( +DomDocum’t + +$dom +, +$¤cDœ +) { + +509 +$d©aba£Node + = +$dom +-> + `g‘EËm’tsByTagName +("d©aba£")-> + `™em +(0); + +510 +$ex‹º®SchemaNodes + = +$dom +-> + `g‘EËm’tsByTagName +("external-schema"); + +511 +$fs + = +FžeSy¡em +:: + `g‘FžeSy¡em +(); + +512  +$ex‹º®Schema + = +$ex‹º®SchemaNodes +-> + `™em +(0)) { + +513 +$šþude + = +$ex‹º®Schema +-> + `g‘A‰ribu‹ +("filename"); + +514 +$ex‹º®Schema +-> +·»ÁNode +-> + `»moveChžd +($externalSchema); + +515 ià( +$fs +-> + `´efixL’gth +( +$šþude +) != 0) { + +516 +$ex‹º®SchemaFže + = +Ãw + + `PhšgFže +( +$šþude +); + +518 +$ex‹º®SchemaFže + = +Ãw + + `PhšgFže +( +$¤cDœ +, +$šþude +); + +520 +$ex‹º®SchemaDom + = +Ãw + + `DomDocum’t +('1.0', 'UTF-8'); + +521 +$ex‹º®SchemaDom +-> + `lßd +( +$ex‹º®SchemaFže +-> + `g‘AbsÞu‹P©h +()); + +522 +$this +-> + `šþudeEx‹º®Schemas +( +$ex‹º®SchemaDom +, +$¤cDœ +); + +523 + `fܗch + ( +$ex‹º®SchemaDom +-> + `g‘EËm’tsByTagName +("bË"è +as + +$bËNode +) { + +524 +$d©aba£Node +-> + `­³ndChžd +( +$dom +-> + `impÜtNode +( +$bËNode +, +Œue +)); + +527 + } +} + +537 +´Ùeùed + +funùiÚ + + $jošD©amod–s +( +$ads +) { + +539 + `fܗch + ( +$ads + +as + +$ad +) { + +540 +$db + = +$ad +-> + `g‘D©aba£ +( +nuÎ +, +çl£ +); + +541 +$this +-> +d©aMod–DbM­ +[ +$ad +-> + `g‘Name +()] = +$db +->getName(); + +544 + `fܗch + ( +$ads + +as + +$addAd +) { + +546 +$ad + = & +$this +-> +d©aMod–s +[0]; + +547 ià(! + `is£t +( +$ad +)) { + +548 +$addAd +-> + `£tName +('JoinedDataModel'); + +549 +$ad + = +$addAd +; + +552 + `fܗch + ( +$addAd +-> + `g‘D©aba£s +( +çl£ +è +as + +$addDb +) { + +553 +$addDbName + = +$addDb +-> + `g‘Name +(); + +554 ià(! +$·ckage + = +$addDb +-> + `g‘Package +()) { + +555 +throw + +Ãw + + `BuždExû±iÚ +('NØ·ckagfound fÜ d©aba£ "' . +$addDbName + . '" iÀ' . +$addAd +-> + `g‘Name +() . '. The…ropel.packageObjectModel…roperty„equireshe…ackage‡ttributeo be set forƒach database.'); + +557 +$db + = +$ad +-> + `g‘D©aba£ +( +$addDbName +, +çl£ +); + +558 ià(! +$db +) { + +559 +$ad +-> + `addD©aba£ +( +$addDb +); + +562 + `fܗch + ( +$addDb +-> + `g‘TabËs +(è +as + +$addTabË +) { + +563 +$bË + = +$db +-> + `g‘TabË +( +$addTabË +-> + `g‘Name +()); + +564 ià( +$bË +) { + +565 +throw + +Ãw + + `BuždExû±iÚ +('Du¶iÿ‹abË found: ' . +$addDbName + . '.'); + +567 +$db +-> + `addTabË +( +$addTabË +); + +571 + } +} + +577 +´Ùeùed + +funùiÚ + + $g‘G’”©ÜCÚfig +() + +579 ià( +$this +-> +g’”©ÜCÚfig + ==ð +nuÎ +) { + +580 +$this +-> +g’”©ÜCÚfig + = +Ãw + + `G’”©ÜCÚfig +(); + +581 +$this +-> +g’”©ÜCÚfig +-> + `£tBuždPrݔt›s +($this-> + `g‘Projeù +()-> + `g‘Prݔt›s +()); + +583  +$this +-> +g’”©ÜCÚfig +; + +584 + } +} + +592 +´Ùeùed + +funùiÚ + + $v®id©e +() + +594 ià( + `em±y +( +$this +-> +schemaFže£ts +)) { + +595 +throw + +Ãw + + `BuždExû±iÚ +("You mu¡ s³cify‡ fže£ˆoàXML schemas.", +$this +-> + `g‘LoÿtiÚ +()); + +599 ià( +$this +-> +ouutDœeùÜy + ==ð +nuÎ +) { + +600 +throw + +Ãw + + `BuždExû±iÚ +("ThouuˆdœeùÜy‚“d tØbdefšed!", +$this +-> + `g‘LoÿtiÚ +()); + +603 ià( +$this +-> +v®id©e +) { + +604 ià(! +$this +-> +xsdFže +) { + +605 +throw + +Ãw + + `BuždExû±iÚ +("'v®id©e' s‘ØTRUE, buˆnØXSD s³cif›d (u£ 'xsd'‡‰ribu‹).", +$this +-> + `g‘LoÿtiÚ +()); + +609 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelConvertConfTask.php + +1 +xmlCÚfFže + = +$v +; + +66 +public + +funùiÚ + + $£tOuutFže +( +$ouutFže +) + +69 +$this +-> +ouutFže + = +$ouutFže +; + +70 + } +} + +78 +public + +funùiÚ + + $£tOuutCÏssm­Fže +( +$ouutFže +) + +81 +$this +-> +ouutCÏssm­Fže + = +$ouutFže +; + +82 + } +} + +87 +public + +funùiÚ + + $maš +() + +91 ià(! +$this +-> +xmlCÚfFže + || !$this->xmlCÚfFže-> + `exi¡s +()) { + +92 +throw + +Ãw + + `BuždExû±iÚ +("NØv®id xmlCÚfFž¥ecif›d.", +$this +-> + `g‘LoÿtiÚ +()); + +95 ià(! +$this +-> +ouutFže +) { + +96 +throw + +Ãw + + `BuždExû±iÚ +("NØouutFž¥ecif›d.", +$this +-> + `g‘LoÿtiÚ +()); + +101 +$xmlDom + = +Ãw + + `DOMDocum’t +(); + +102 +$xmlDom +-> + `lßd +( +$this +-> +xmlCÚfFže +-> + `g‘AbsÞu‹P©h +()); + +103 +$xml + = + `sim¶exml_lßd_¡ršg +( +$xmlDom +-> + `§veXML +()); + +104 +$phpcÚf + = +£lf +:: + `sim¶eXmlToA¼ay +( +$xml +); + +110 +$log + = + `¬¿y +(); + +111 ià( + `is£t +( +$phpcÚf +['log'])) { + +112 +$phpcÚf +['propel']['log'] = $phpconf['log']; + +113 + `un£t +( +$phpcÚf +['log']); + +116 if( + `is£t +( +$phpcÚf +['propel'])) { + +117 +$phpcÚf + = $phpconf['propel']; + +121 +$phpcÚf +['g’”©Ü_v”siÚ'] = +$this +-> + `g‘G’”©ÜCÚfig +()-> + `g‘BuždPrݔty +('version'); + +124 +$phpcÚf +['þassm­'] = +$this +-> + `g‘CÏssM­ +(); + +128 +$outfže + = +Ãw + + `PhšgFže +( +$this +-> +ouutDœeùÜy +, $this-> +ouutFže +); + +129 +$ouut + = " + `g‘G’”©ÜCÚfig +()-> + `g‘BuždPrݔty +('addTime¡amp'è? " oÀ" . + `¡ráime +("%c") : '') . "\n"; + +131 +$ouut + .ð"// from XML„uÁimcÚàfž" . +$this +-> +xmlCÚfFže +-> + `g‘P©h +() . "\n"; + +132 +$ouut + .= "return "; + +133 +$ouut + .ð + `v¬_expÜt +( +$phpcÚf +, +Œue +); + +134 +$ouut + .= ";"; + +136 +$this +-> + `log +("C»©šg PHP„uÁimcÚàfže: " . +$outfže +-> + `g‘P©h +()); + +137 ià(! + `fže_put_cڋÁs +( +$outfže +-> + `g‘AbsÞu‹P©h +(), +$ouut +)) { + +138 +throw + +Ãw + + `BuždExû±iÚ +("E¼Ü c»©šg ouuˆfže: " . +$outfže +-> + `g‘AbsÞu‹P©h +(), +$this +-> + `g‘LoÿtiÚ +()); + +141 + } +} + +149 +´iv©e +  +funùiÚ + + $sim¶eXmlToA¼ay +( +$xml +) + +151 +$¬ + = + `¬¿y +(); + +153 + `fܗch + ( +$xml +-> + `chžd»n +(è +as + +$k + => +$v + ) { + +156 +$chžd + = +£lf +:: + `sim¶eXmlToA¼ay +Ð +$v + ); + +161 iàÐ + `couÁ +( +$chžd +) == 0 ) { + +162 +$chžd + = +£lf +:: + `g‘CÚv”‹dXmlV®ue +( +$v +); + +167 + `fܗch + ( +$v +-> + `©Œibu‹s +(è +as + +$ak + => +$av + ) { + +170 iàÐ! + `is_¬¿y +Ð +$chžd + ) ) { + +171 +$chžd + = + `¬¿y +( "value" => $child ); + +174 ià( +$ak + == 'id') { + +177 +$k + = +£lf +:: + `g‘CÚv”‹dXmlV®ue +( +$av +); + +180 +$chžd +[ +$ak +] = +£lf +:: + `g‘CÚv”‹dXmlV®ue +( +$av +); + +186 iàÐ! + `š_¬¿y +Ð +$k +, + `¬¿y_keys +( +$¬ +) ) ) { + +187 +$¬ +[ +$k +] = +$chžd +; + +196 iàÐ! + `is_¬¿y +( +$¬ +[ +$k +]è|| ! + `is£t +($¬[$k][0]èè{ $¬[$k] = + `¬¿y +($ar[$k]); } + +197 +$¬ +[ +$k +][] = +$chžd +; + +202  +$¬ +; + +203 + } +} + +210 +´iv©e +  +funùiÚ + + $g‘CÚv”‹dXmlV®ue +( +$v®ue +) + +212 +$v®ue + = ( +¡ršg +) $value; + +214 +$lwr + = + `¡¹Þow” +( +$v®ue +); + +215 ià( +$lwr + === "false") { + +216 +$v®ue + = +çl£ +; + +217 } + `–£if + ( +$lwr + === "true") { + +218 +$v®ue + = +Œue +; + +220  +$v®ue +; + +221 + } +} + +228 +´Ùeùed + +funùiÚ + + $g‘CÏssM­ +() + +230 +$phpcÚfCÏssm­ + = + `¬¿y +(); + +232 +$g’”©ÜCÚfig + = +$this +-> + `g‘G’”©ÜCÚfig +(); + +234 + `fܗch + ( +$this +-> + `g‘D©aMod–s +(è +as + +$d©aMod– +) { + +236 + `fܗch + ( +$d©aMod– +-> + `g‘D©aba£s +(è +as + +$d©aba£ +) { + +238 +$þassM­ + = + `¬¿y +(); + +240 + `fܗch + ( +$d©aba£ +-> + `g‘TabËs +(è +as + +$bË +) { + +242 ià(! +$bË +-> + `isFÜReã»nûOÆy +()) { + +254 + `fܗch + ( + `¬¿y +('bËm­', '³”¡ub', 'objeù¡ub'è +as + +$rg‘ +) { + +255 +$bužd” + = +$g’”©ÜCÚfig +-> + `g‘CÚfigu»dBužd” +( +$bË +, +$rg‘ +); + +256 +$this +-> + `log +("Addšg cÏs m­pšg: " . +$bužd” +-> + `g‘CÏs¢ame +(è. ' => ' . $bužd”-> + `g‘CÏssFžeP©h +()); + +257 +$þassM­ +[ +$bužd” +-> + `g‘CÏs¢ame +()] = $bužd”-> + `g‘CÏssFžeP©h +(); + +260 ià( +$cÞ + = +$bË +-> + `g‘Chžd»nCÞumn +()) { + +261 ià( +$cÞ +-> + `isEnum”©edCÏs£s +()) { + +262 + `fܗch + ( +$cÞ +-> + `g‘Chžd»n +(è +as + +$chžd +) { + +263 +$bužd” + = +$g’”©ÜCÚfig +-> + `g‘CÚfigu»dBužd” +( +$bË +, 'objectmultiextend'); + +264 +$bužd” +-> + `£tChžd +( +$chžd +); + +265 +$this +-> + `log +("Addšg cÏs m­pšg: " . +$bužd” +-> + `g‘CÏs¢ame +(è. ' => ' . $bužd”-> + `g‘CÏssFžeP©h +()); + +266 +$þassM­ +[ +$bužd” +-> + `g‘CÏs¢ame +()] = $bužd”-> + `g‘CÏssFžeP©h +(); + +271 +$ba£CÏss + = +$bË +-> + `g‘Ba£CÏss +(); + +272 iàÐ +$ba£CÏss + !=ð +nuÎ + ) { + +273 +$þassName + = +CÏssToÞs +:: + `þas¢ame +( +$ba£CÏss +); + +274 ià(! + `is£t +( +$þassM­ +[ +$þassName +])) { + +275 +$þassP©h + = +CÏssToÞs +:: + `g‘FžeP©h +( +$ba£CÏss +); + +276 +$this +-> + `log +('Addšg cÏs m­pšg: ' . +$þassName + . ' => ' . +$þassP©h +); + +277 +$þassM­ +[ +$þassName +] = +$þassP©h +; + +281 +$ba£P“r + = +$bË +-> + `g‘Ba£P“r +(); + +282 iàÐ +$ba£P“r + !=ð +nuÎ + ) { + +283 +$þassName + = +CÏssToÞs +:: + `þas¢ame +( +$ba£P“r +); + +284 ià(! + `is£t +( +$þassM­ +[ +$þassName +])) { + +285 +$þassP©h + = +CÏssToÞs +:: + `g‘FžeP©h +( +$ba£P“r +); + +286 +$this +-> + `log +('Addšg cÏs m­pšg: ' . +$þassName + . ' => ' . +$þassP©h +); + +287 +$þassM­ +[ +$þassName +] = +$þassP©h +; + +295 ià('M©”ŸlizedP©h' =ð +$bË +-> + `Œ“Mode +()) { + +296 + `fܗch + ( + `¬¿y +('nod•“r¡ub', 'node¡ub'è +as + +$rg‘ +) { + +297 +$bužd” + = +$g’”©ÜCÚfig +-> + `g‘CÚfigu»dBužd” +( +$bË +, +$rg‘ +); + +298 +$this +-> + `log +("Addšg cÏs m­pšg: " . +$bužd” +-> + `g‘CÏs¢ame +(è. ' => ' . $bužd”-> + `g‘CÏssFžeP©h +()); + +299 +$þassM­ +[ +$bužd” +-> + `g‘CÏs¢ame +()] = $bužd”-> + `g‘CÏssFžeP©h +(); + +306 +$phpcÚfCÏssm­ + = + `¬¿y_m”ge +($phpcÚfCÏssm­, +$þassM­ +); + +310  +$phpcÚfCÏssm­ +; + +311 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelCreoleTransformTask.php + +1 +PrݖC»ÞeT¿nsfÜmTask +:: +VALIDATORS_NONE +, + +141 'maxËngth' => +PrݖC»ÞeT¿nsfÜmTask +:: +VALIDATORS_MAXLENGTH +, + +142 'maxv®ue' => +PrݖC»ÞeT¿nsfÜmTask +:: +VALIDATORS_MAXVALUE +, + +143 'ty³' => +PrݖC»ÞeT¿nsfÜmTask +:: +VALIDATORS_TYPE +, + +144 '»quœed' => +PrݖC»ÞeT¿nsfÜmTask +:: +VALIDATORS_REQUIRED +, + +145 'unique' => +PrݖC»ÞeT¿nsfÜmTask +:: +VALIDATORS_UNIQUE +, + +146 '®l' => +PrݖC»ÞeT¿nsfÜmTask +:: +VALIDATORS_ALL +, + +155  +´Ùeùed + + m$v®id©ÜMes§ges + = +¬¿y + ( + +156 'maxËngth' => +¬¿y + ( + +158 'v¬' => +¬¿y +('colName', 'value') + +160 'maxv®ue' => +¬¿y + ( + +162 'v¬' => +¬¿y +('colName', 'value') + +164 'ty³' => +¬¿y + ( + +166 'v¬' => +¬¿y +('colName') + +168 '»quœed' => +¬¿y + ( + +170 'v¬' => +¬¿y +('colName') + +172 'unique' => +¬¿y + ( + +174 'v¬' => +¬¿y +('colName', 'tableName') + +178 +public + +funùiÚ + + $g‘DbSchema +() + +180  +$this +-> +dbSchema +; + +183 +public + +funùiÚ + + $£tDbSchema +( +$dbSchema +) + +185 +$this +-> +dbSchema + = +$dbSchema +; + +186 + } +} + +188 +public + +funùiÚ + + $£tDbU¾ +( +$v +) + +190 +$this +-> +dbU¾ + = +$v +; + +191 + } +} + +193 +public + +funùiÚ + + $£tDbDriv” +( +$v +) + +195 +$this +-> +dbDriv” + = +$v +; + +196 + } +} + +198 +public + +funùiÚ + + $£tDbU£r +( +$v +) + +200 +$this +-> +dbU£r + = +$v +; + +201 + } +} + +203 +public + +funùiÚ + + $£tDbPasswÜd +( +$v +) + +205 +$this +-> +dbPasswÜd + = +$v +; + +206 + } +} + +208 +public + +funùiÚ + + $£tDbEncodšg +( +$v +) + +210 +$this +-> +dbEncodšg + = +$v +; + +211 + } +} + +213 +public + +funùiÚ + + $£tOuutFže +( +$v +) + +215 +$this +-> +xmlSchema + = +$v +; + +216 + } +} + +218 +public + +funùiÚ + + $£tSamePhpName +( +$v +) + +220 +$this +-> +§mePhpName + = +$v +; + +221 + } +} + +223 +public + +funùiÚ + + $£tAddV’dÜInfo +( +$v +) + +225 +$this +-> +addV’dÜInfo + = ( +boޗn +è +$v +; + +226 + } +} + +234 +public + +funùiÚ + + $£tAddV®id©Üs +( +$v +) + +236 +$v®idKeys + = + `¬¿y_keys +( +£lf +:: +$v®id©ÜB™M­ +); + +239 +$v + = + `¡¹Þow” +($v); + +241 +$b™s + = +£lf +:: +VALIDATORS_NONE +; + +243 +$ex´s + = + `ex¶ode +(',', +$v +); + +244 + `fܗch + ( +$ex´s + +as + +$ex´ +) { + +245 +$ex´ + = + `Œim +($expr); + +246 ià(! + `is£t +( +£lf +:: +$v®id©ÜB™M­ +[ +$ex´ +])) { + +247 +throw + +Ãw + + `BuždExû±iÚ +("UÇbˁؚ‹½»ˆv®id©Ü iÀex´essiÚ ('$v'): " . +$ex´ +); + +249 +$b™s + |ð +£lf +:: +$v®id©ÜB™M­ +[ +$ex´ +]; + +252 +$this +-> +v®id©ÜB™s + = +$b™s +; + +253 + } +} + +255 +public + +funùiÚ + + $isSamePhpName +() + +257  +$this +-> +§mePhpName +; + +258 + } +} + +265 +public + +funùiÚ + + $maš +() + +267 +šþude_Úû + 'creole/Creole.php'; + +268 ià(! + `þass_exi¡s +('Creole')) { + +269 +throw + +Ãw + + `BuždExû±iÚ +Ð + `g‘_þass +( +$this +è. "ask d•’d Ú C»Þþas£ bešg oÀšþude_·th. (i.e. inþudoà'üeÞe/C»Þe.php' fažed.)", $this-> + `g‘LoÿtiÚ +()); + +272 +$this +-> + `log +("Propel - CreoleToXMLSchema starting"); + +273 +$this +-> + `log +("Your DB settings‡re:"); + +274 +$this +-> + `log +("driv” : " . ($this-> +dbDriv” + ? $this->dbDriver : "(default)")); + +275 +$this +-> + `log +("URL : " . $this-> +dbU¾ +); + +281 +$this +-> +doc + = +Ãw + + `DOMDocum’t +('1.0', 'utf-8'); + +282 +$this +-> +doc +-> +fÜm©Ouut + = +Œue +; + +284 +$this +-> +doc +-> + `­³ndChžd +($this->doc-> + `ü—‹Comm’t +("Autogenerated by CreoleToXMLSchema!")); + +286 +Œy + { + +287 +$this +-> + `g’”©eXML +(); + +288 +$this +-> + `log +("Wr™šg XMLØfže: " . $this-> +xmlSchema +); + +289 +$outFže + = +Ãw + + `PhšgFže +( +$this +-> +xmlSchema +); + +290 +$out + = +Ãw + + `FžeWr™” +( +$outFže +); + +291 +$xml¡r + = +$this +-> +doc +-> + `§veXML +(); + +292 +$out +-> + `wr™e +( +$xml¡r +); + +293 +$out +-> + `þo£ +(); + +294 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +295 +$this +-> + `log +("Th”wa ªƒ¼Ü buždšg XML from m‘ad©a: " . +$e +-> + `g‘Mes§ge +(), +Projeù +:: +MSG_ERR +); + +297 +$this +-> + `log +("Propel - CreoleToXMLSchema finished"); + +298 + } +} + +306 +public + +funùiÚ + + $g’”©eXML +() + +309 +$cÚ + = +$this +-> + `g‘CÚÃùiÚ +(); + +312 +$dbInfo + = +$cÚ +-> + `g‘D©aba£Info +(); + +315 +$d©aba£Node + = +$this +-> + `ü—‹D©aba£Node +( +$dbInfo +); + +316 +$this +-> +doc +-> + `­³ndChžd +( +$d©aba£Node +); + +317 + } +} + +324 +´Ùeùed + +funùiÚ + + $g‘CÚÃùiÚ +() { + +327 +$this +-> +d¢ + = +C»Þe +:: + `·r£DSN +($this-> +dbU¾ +); + +328 ià( +$this +-> +dbU£r +) { + +329 +$this +-> +d¢ +["u£ºame"] = $this-> +dbU£r +; + +331 ià( +$this +-> +dbPasswÜd +) { + +332 +$this +-> +d¢ +["·sswÜd"] = $this-> +dbPasswÜd +; + +334 ià( +$this +-> +dbDriv” +) { + +335 +C»Þe +:: + `»gi¡”Driv” +( +$this +-> +d¢ +['ph±y³'], $this-> +dbDriv” +); + +337 +$cÚ + = +C»Þe +:: + `g‘CÚÃùiÚ +( +$this +-> +d¢ +); + +338 +$this +-> + `log +("DB connectionƒstablished"); + +340  +$cÚ +; + +341 + } +} + +349 +´Ùeùed + +funùiÚ + + $ü—‹D©aba£Node +( +$dbInfo +) { + +351 +$this +-> + `log +("Processing database"); + +353 +$node + = +$this +-> +doc +-> + `ü—‹EËm’t +("database"); + +354 +$node +-> + `£tA‰ribu‹ +("Çme", +$dbInfo +-> + `g‘Name +()); + +356 ià( +$v’dÜNode + = +$this +-> + `ü—‹V’dÜInfoNode +( +$dbInfo +-> + `g‘V’dÜS³cificInfo +())) { + +357 +$node +-> + `­³ndChžd +( +$v’dÜNode +); + +361 + `fܗch + ( +$dbInfo +-> + `g‘TabËs +(è +as + +$bË +) { + +362 +$bËNode + = +$this +-> + `ü—‹TabËNode +( +$bË +); + +363 +$node +-> + `­³ndChžd +( +$bËNode +); + +366  +$node +; + +367 + } +} + +375 +´Ùeùed + +funùiÚ + + $ü—‹TabËNode +( +$bË +) { + +377 +$this +-> + `log +("ProûssšgabË: " . +$bË +-> + `toSŒšg +()); + +379 +$node + = +$this +-> +doc +-> + `ü—‹EËm’t +("table"); + +380 +$node +-> + `£tA‰ribu‹ +("Çme", +$bË +-> + `g‘Name +()); + +381 ià( +$this +-> + `isSamePhpName +()) { + +382 +$node +-> + `£tA‰ribu‹ +("phpName", +$bË +-> + `g‘Name +()); + +384 ià( +$v’dÜNode + = +$this +-> + `ü—‹V’dÜInfoNode +( +$bË +-> + `g‘V’dÜS³cificInfo +())) { + +385 +$node +-> + `­³ndChžd +( +$v’dÜNode +); + +389 +$cÞumns + = +$bË +-> + `g‘CÞumns +(); + +390 + `fܗch + ( +$cÞumns + +as + +$cÞumn +) { + +391 +$cÞumnNode + = +$this +-> + `ü—‹CÞumnNode +( +$cÞumn +); + +392 +$node +-> + `­³ndChžd +( +$cÞumnNode +); + +393 +$this +-> + `»gi¡”V®id©ÜsFÜCÞumn +( +$cÞumn +); + +394 ià( +$cÞumn +-> + `isAutoInüem’t +()) { + +395 +$idM‘hod + = 'native'; + +398 ià( + `is£t +( +$idM‘hod +)) { + +399 +$node +-> + `£tA‰ribu‹ +("idM‘hod", +$idM‘hod +); + +403 +$fÜeignKeys + = +$bË +-> + `g‘FÜeignKeys +(); + +404 + `fܗch + ( +$fÜeignKeys + +as + +$fÜeignKey +) { + +405 +$fÜeignKeyNode + = +$this +-> + `ü—‹FÜeignKeyNode +( +$fÜeignKey +); + +406 +$node +-> + `­³ndChžd +( +$fÜeignKeyNode +); + +410 +$šdiûs + = +$bË +-> + `g‘Indiûs +(); + +411 + `fܗch + ( +$šdiûs + +as + +$šdex +) { + +412 +$šdexNode + = +$this +-> + `ü—‹IndexNode +( +$šdex +); + +413 +$node +-> + `­³ndChžd +( +$šdexNode +); + +419 +$pkey + = +$bË +-> + `g‘Prim¬yKey +(); + +420 ià( +$pkey +) { + +421 +$cÞs + = +$pkey +-> + `g‘CÞumns +(); + +422 ià( + `couÁ +( +$cÞs +) === 1) { + +423 +$cÞ + = + `¬¿y_shiá +( +$cÞs +); + +424 ià( +$cÞ +-> + `isAutoInüem’t +()) { + +425 +$£q_Çme + = +$bË +-> + `g‘Name +().'_'. +$cÞ +->getName().'_seq'; + +426 ià( +$bË +-> + `g‘D©aba£ +()-> + `isSequ’û +( +$£q_Çme +)) { + +427 +$idM‘hodP¬am‘”Node + = +$this +-> +doc +-> + `ü—‹EËm’t +("id-method-parameter"); + +428 +$idM‘hodP¬am‘”Node +-> + `£tA‰ribu‹ +("v®ue", +$£q_Çme +); + +429 +$node +-> + `­³ndChžd +( +$idM‘hodP¬am‘”Node +); + +437 +$nodes + = + `¬¿y +(); + +438 +$bËName + = +$bË +-> + `g‘Name +(); + +439 ià( + `is£t +( +$this +-> +v®id©ÜInfos +[ +$bËName +])) { + +440 + `fܗch + ( +$this +-> +v®id©ÜInfos +[ +$bËName +] +as + +$cÞName + => +$ruËs +) { + +441 +$cÞumn + = +$bË +-> + `g‘CÞumn +( +$cÞName +); + +442 +$cÞName + = +$cÞumn +-> + `g‘Name +(); + +443 + `fܗch + ( +$ruËs + +as + +$ruË +) { + +444 ià(! + `is£t +( +$nodes +[ +$cÞName +])) { + +445 +$nodes +[ +$cÞName +] = +$this +-> + `ü—‹V®id©Ü +( +$cÞumn +, +$ruË +['type']); + +446 +$node +-> + `­³ndChžd +( +$nodes +[ +$cÞName +]); + +448 +$ruËNode + = +$this +-> + `ü—‹RuËNode +( +$cÞumn +, +$ruË +); + +449 +$nodes +[ +$cÞName +]-> + `­³ndChžd +( +$ruËNode +); + +454  +$node +; + +455 + } +} + +467 +´Ùeùed +  +funùiÚ + + $g‘M­³dPrݖTy³ +( +$üeÞeTy³ +) + +469  +$üeÞeToPrݖTy³M­ +; + +470 ià( +$üeÞeToPrݖTy³M­ + ==ð +nuÎ +) { + +471 +$üeÞeToPrݖTy³M­ + = + `¬¿y +(); + +472 +$üeÞeToPrݖTy³M­ +[ +C»ÞeTy³s +:: +CHAR +] = +PrݖTy³s +::CHAR; + +473 +$üeÞeToPrݖTy³M­ +[ +C»ÞeTy³s +:: +VARCHAR +] = +PrݖTy³s +::VARCHAR; + +474 +$üeÞeToPrݖTy³M­ +[ +C»ÞeTy³s +:: +LONGVARCHAR +] = +PrݖTy³s +::LONGVARCHAR; + +475 +$üeÞeToPrݖTy³M­ +[ +C»ÞeTy³s +:: +CLOB +] = +PrݖTy³s +::CLOB; + +476 +$üeÞeToPrݖTy³M­ +[ +C»ÞeTy³s +:: +NUMERIC +] = +PrݖTy³s +::NUMERIC; + +477 +$üeÞeToPrݖTy³M­ +[ +C»ÞeTy³s +:: +DECIMAL +] = +PrݖTy³s +::DECIMAL; + +478 +$üeÞeToPrݖTy³M­ +[ +C»ÞeTy³s +:: +TINYINT +] = +PrݖTy³s +::TINYINT; + +479 +$üeÞeToPrݖTy³M­ +[ +C»ÞeTy³s +:: +SMALLINT +] = +PrݖTy³s +::SMALLINT; + +480 +$üeÞeToPrݖTy³M­ +[ +C»ÞeTy³s +:: +INTEGER +] = +PrݖTy³s +::INTEGER; + +481 +$üeÞeToPrݖTy³M­ +[ +C»ÞeTy³s +:: +BIGINT +] = +PrݖTy³s +::BIGINT; + +482 +$üeÞeToPrݖTy³M­ +[ +C»ÞeTy³s +:: +REAL +] = +PrݖTy³s +::REAL; + +483 +$üeÞeToPrݖTy³M­ +[ +C»ÞeTy³s +:: +FLOAT +] = +PrݖTy³s +::FLOAT; + +484 +$üeÞeToPrݖTy³M­ +[ +C»ÞeTy³s +:: +DOUBLE +] = +PrݖTy³s +::DOUBLE; + +485 +$üeÞeToPrݖTy³M­ +[ +C»ÞeTy³s +:: +BINARY +] = +PrݖTy³s +::BINARY; + +486 +$üeÞeToPrݖTy³M­ +[ +C»ÞeTy³s +:: +VARBINARY +] = +PrݖTy³s +::VARBINARY; + +487 +$üeÞeToPrݖTy³M­ +[ +C»ÞeTy³s +:: +LONGVARBINARY +] = +PrݖTy³s +::LONGVARBINARY; + +488 +$üeÞeToPrݖTy³M­ +[ +C»ÞeTy³s +:: +BLOB +] = +PrݖTy³s +::BLOB; + +489 +$üeÞeToPrݖTy³M­ +[ +C»ÞeTy³s +:: +DATE +] = +PrݖTy³s +::DATE; + +490 +$üeÞeToPrݖTy³M­ +[ +C»ÞeTy³s +:: +TIME +] = +PrݖTy³s +::TIME; + +491 +$üeÞeToPrݖTy³M­ +[ +C»ÞeTy³s +:: +TIMESTAMP +] = +PrݖTy³s +::TIMESTAMP; + +492 +$üeÞeToPrݖTy³M­ +[ +C»ÞeTy³s +:: +BOOLEAN +] = +PrݖTy³s +::BOOLEAN; + +493 +$üeÞeToPrݖTy³M­ +[ +C»ÞeTy³s +:: +YEAR +] = +PrݖTy³s +:: +INTEGER +; + +496 ià( + `is£t +( +$üeÞeToPrݖTy³M­ +[ +$üeÞeTy³ +])) { + +497  +$üeÞeToPrݖTy³M­ +[ +$üeÞeTy³ +]; + +499 + } +} + +507 +´Ùeùed + +funùiÚ + + $ü—‹CÞumnNode +( +$cÞumn +) { + +509 +$node + = +$this +-> +doc +-> + `ü—‹EËm’t +("column"); + +511 +$bË + = +$cÞumn +-> + `g‘TabË +(); + +512 +$cÞName + = +$cÞumn +-> + `g‘Name +(); + +513 +$cÞTy³ + = +$cÞumn +-> + `g‘Ty³ +(); + +514 +$cÞSize + = +$cÞumn +-> + `g‘Size +(); + +515 +$cÞSÿË + = +$cÞumn +-> + `g‘SÿË +(); + +517 ià( +$cÞTy³ + ==ð +C»ÞeTy³s +:: +OTHER +) { + +518 +$this +-> + `log +("CÞumÀ[" . +$bË +-> + `g‘Name +(è. "." . +$cÞName + . "] ha ¨cÞumÀty³ (". +$cÞumn +-> + `g‘N©iveTy³ +()."èth© Prݖ dÛ nÙ suµÜt.", +Projeù +:: +MSG_WARN +); + +521 +$node +-> + `£tA‰ribu‹ +("Çme", +$cÞName +); + +523 ià( +$this +-> + `isSamePhpName +()) { + +524 +$node +-> + `£tA‰ribu‹ +("phpName", +$cÞName +); + +527 +$node +-> + `£tA‰ribu‹ +("ty³", +£lf +:: + `g‘M­³dPrݖTy³ +( +$cÞTy³ +)); + +529 ià( +$cÞSize + > 0 && ( + +530 +$cÞTy³ + =ð +C»ÞeTy³s +:: +CHAR + + +531 || +$cÞTy³ + =ð +C»ÞeTy³s +:: +VARCHAR + + +532 || +$cÞTy³ + =ð +C»ÞeTy³s +:: +LONGVARCHAR + + +533 || +$cÞTy³ + =ð +C»ÞeTy³s +:: +DECIMAL + + +534 || +$cÞTy³ + =ð +C»ÞeTy³s +:: +FLOAT + + +535 || +$cÞTy³ + =ð +C»ÞeTy³s +:: +NUMERIC +)) { + +536 +$node +-> + `£tA‰ribu‹ +("size", ( +¡ršg +è +$cÞSize +); + +539 ià( +$cÞSÿË + > 0 && ( + +540 +$cÞTy³ + =ð +C»ÞeTy³s +:: +DECIMAL + + +541 || +$cÞTy³ + =ð +C»ÞeTy³s +:: +FLOAT + + +542 || +$cÞTy³ + =ð +C»ÞeTy³s +:: +NUMERIC +)) { + +543 +$node +-> + `£tA‰ribu‹ +("sÿË", ( +¡ršg +è +$cÞSÿË +); + +546 ià(! +$cÞumn +-> + `isNuÎabË +()) { + +547 +$node +-> + `£tA‰ribu‹ +("required", "true"); + +550 ià( +$cÞumn +-> + `isAutoInüem’t +()) { + +551 +$node +-> + `£tA‰ribu‹ +("autoIncrement", "true"); + +554 ià( + `š_¬¿y +( +$cÞName +, +$this +-> + `g‘TabËPkCÞs +( +$bË +))) { + +555 +$node +-> + `£tA‰ribu‹ +("primaryKey", "true"); + +558 ià(( +$defV®ue + = +$cÞumn +-> + `g‘DeçuÉV®ue +()è!=ð +nuÎ +) { + +559 +$node +-> + `£tA‰ribu‹ +("deçuÉ", + `icÚv +( +$this +-> +dbEncodšg +, 'utf-8', +$defV®ue +)); + +562 ià( +$v’dÜNode + = +$this +-> + `ü—‹V’dÜInfoNode +( +$cÞumn +-> + `g‘V’dÜS³cificInfo +())) { + +563 +$node +-> + `­³ndChžd +( +$v’dÜNode +); + +566  +$node +; + +567 + } +} + +575 +´Ùeùed + +funùiÚ + + $g‘TabËPkCÞs +( +$bË +) { + +577  +$cÞumns + = + `¬¿y +(); + +579 +$bËName + = +$bË +-> + `g‘Name +(); + +580 ià(! + `is£t +( +$cÞumns +[ +$bËName +])) { + +581 +$cÞumns +[ +$bËName +] = + `¬¿y +(); + +582 +$´im¬yKey + = +$bË +-> + `g‘Prim¬yKey +(); + +583 ià( +$´im¬yKey +) { + +584 + `fܗch + ( +$´im¬yKey +-> + `g‘CÞumns +(è +as + +$cÞObjeù +) { + +585 +$cÞumns +[ +$bËName +][] = +$cÞObjeù +-> + `g‘Name +(); + +589  +$cÞumns +[ +$bËName +]; + +590 + } +} + +598 +´Ùeùed + +funùiÚ + + $ü—‹FÜeignKeyNode +( +$fÜeignKey +) { + +600 +$node + = +$this +-> +doc +-> + `ü—‹EËm’t +("foreign-key"); + +601 ià( +$v’dÜNode + = +$this +-> + `ü—‹V’dÜInfoNode +( +$fÜeignKey +-> + `g‘V’dÜS³cificInfo +())) { + +602 +$node +-> + `­³ndChžd +( +$v’dÜNode +); + +605 +$»fs + = +$fÜeignKey +-> + `g‘Reã»nûs +(); + +607 +$node +-> + `£tA‰ribu‹ +("fÜeignTabË", +$»fs +[0][1]-> + `g‘TabË +()-> + `g‘Name +()); + +608 +$node +-> + `£tA‰ribu‹ +("ÚD–‘e", +$»fs +[0][2]); + +609 +$node +-> + `£tA‰ribu‹ +("ÚUpd©e", +$»fs +[0][3]); + +610  +$m + = 0, +$size + = + `couÁ +( +$»fs +); $m < $size; $m++) { + +611 +$»fNode + = +$this +-> +doc +-> + `ü—‹EËm’t +("reference"); + +612 +$»fD©a + = +$»fs +[ +$m +]; + +613 +$»fNode +-> + `£tA‰ribu‹ +("loÿl", +$»fD©a +[0]-> + `g‘Name +()); + +614 +$»fNode +-> + `£tA‰ribu‹ +("fÜeign", +$»fD©a +[1]-> + `g‘Name +()); + +615 +$node +-> + `­³ndChžd +( +$»fNode +); + +618  +$node +; + +619 + } +} + +627 +´Ùeùed + +funùiÚ + + $ü—‹IndexNode +( +$šdex +) { + +629 +$šdexTy³ + = +$šdex +-> + `isUnique +() ? 'unique' : 'index'; + +631 +$node + = +$this +-> +doc +-> + `ü—‹EËm’t +( +$šdexTy³ +); + +632 +$node +-> + `£tA‰ribu‹ +("Çme", +$šdex +-> + `g‘Name +()); + +634 +$cÞumns + = +$šdex +-> + `g‘CÞumns +(); + +635 + `fܗch + ( +$cÞumns + +as + +$cÞumn +) { + +636 +$bËName + = +$cÞumn +-> + `g‘TabË +()-> + `g‘Name +(); + +637 +$cÞName + = +$cÞumn +-> + `g‘Name +(); + +638 +$cÞumnNode + = +$this +-> +doc +-> + `ü—‹EËm’t +("{$indexType}-column"); + +639 +$cÞumnNode +-> + `£tA‰ribu‹ +("Çme", +$cÞName +); + +640 +$node +-> + `­³ndChžd +( +$cÞumnNode +); + +641 ià( +$šdexTy³ + =ð'unique' && +$this +-> + `isV®id©ÜRequœed +('unique')) { + +642 +$this +-> +v®id©ÜInfos +[ +$bËName +][ +$cÞName +][] = + `¬¿y +('type' => 'unique'); + +646 ià( +$v’dÜNode + = +$this +-> + `ü—‹V’dÜInfoNode +( +$šdex +-> + `g‘V’dÜS³cificInfo +())) { + +647 +$node +-> + `­³ndChžd +( +$v’dÜNode +); + +650  +$node +; + +651 + } +} + +659 +´Ùeùed + +funùiÚ + + $isV®id©ÜRequœed +( +$ty³ +) { + +660  (( +$this +-> +v®id©ÜB™s + & +$ty³ +) === $type); + +661 + } +} + +694 +´Ùeùed + +funùiÚ + + $»gi¡”V®id©ÜsFÜCÞumn +( +$cÞumn +) { + +696 +$bË + = +$cÞumn +-> + `g‘TabË +(); + +697 +$bËName + = +$bË +-> + `g‘Name +(); + +699 +$cÞName + = +$cÞumn +-> + `g‘Name +(); + +700 +$cÞTy³ + = +$cÞumn +-> + `g‘Ty³ +(); + +701 +$cÞSize + = +$cÞumn +-> + `g‘Size +(); + +703 ià( +$this +-> + `isV®id©ÜRequœed +( +£lf +:: +VALIDATORS_REQUIRED +)) { + +704 +$ruËInfo + = + `¬¿y +('type' => 'required'); + +705 +$this +-> +v®id©ÜInfos +[ +$bËName +][ +$cÞName +][] = +$ruËInfo +; + +707 +$isPrim¬ykeyCÞ + = + `š_¬¿y +( +$cÞName +, +$this +-> + `g‘TabËPkCÞs +( +$bË +)); + +708 ià( +$this +-> + `isV®id©ÜRequœed +( +£lf +:: +VALIDATORS_UNIQUE +è&& +$isPrim¬ykeyCÞ +) { + +709 +$ruËInfo + = + `¬¿y +('type' => 'unique'); + +710 +$this +-> +v®id©ÜInfos +[ +$bËName +][ +$cÞName +][] = +$ruËInfo +; + +712 ià( +$this +-> + `isV®id©ÜRequœed +( +£lf +:: +VALIDATORS_MAXLENGTH +) && + +713 +$cÞSize + > 0 && + `š_¬¿y +( +$cÞTy³ +, + `¬¿y +( + +714 +C»ÞeTy³s +:: +CHAR +, + +715 +C»ÞeTy³s +:: +VARCHAR +, + +716 +C»ÞeTy³s +:: +LONGVARCHAR +))) { + +717 +$ruËInfo + = + `¬¿y +('ty³' => 'maxL’gth', 'v®ue' => +$cÞSize +); + +718 +$this +-> +v®id©ÜInfos +[ +$bËName +][ +$cÞName +][] = +$ruËInfo +; + +720 ià( +$this +-> + `isV®id©ÜRequœed +( +£lf +:: +VALIDATORS_MAXVALUE +) && + +721 +$cÞSize + > 0 && + `š_¬¿y +( +$cÞTy³ +, + `¬¿y +( + +722 +C»ÞeTy³s +:: +SMALLINT +, + +723 +C»ÞeTy³s +:: +TINYINT +, + +724 +C»ÞeTy³s +:: +INTEGER +, + +725 +C»ÞeTy³s +:: +BIGINT +, + +726 +C»ÞeTy³s +:: +FLOAT +, + +727 +C»ÞeTy³s +:: +DOUBLE +, + +728 +C»ÞeTy³s +:: +NUMERIC +, + +729 +C»ÞeTy³s +:: +DECIMAL +, + +730 +C»ÞeTy³s +:: +REAL +))) { + +733 +$this +-> + `log +("WARNING: maxV®uv®id©Ü‡dded fÜ cÞumÀ$cÞName. You wžÈhavtØadju¡hsizv®umªu®ly.", +Projeù +:: +MSG_WARN +); + +734 +$ruËInfo + = + `¬¿y +('ty³' => 'maxV®ue', 'v®ue' => +$cÞSize +); + +735 +$this +-> +v®id©ÜInfos +[ +$bËName +][ +$cÞName +][] = +$ruËInfo +; + +737 ià( +$this +-> + `isV®id©ÜRequœed +( +£lf +:: +VALIDATORS_TYPE +) && + +738 +$cÞSize + > 0 && + `š_¬¿y +( +$cÞTy³ +, + `¬¿y +( + +739 +C»ÞeTy³s +:: +SMALLINT +, + +740 +C»ÞeTy³s +:: +TINYINT +, + +741 +C»ÞeTy³s +:: +INTEGER +, + +742 +C»ÞeTy³s +:: +TIMESTAMP +))) { + +743 +$ruËInfo + = + `¬¿y +('type' => 'type', 'value' => '[^\d]+'); + +744 +$this +-> +v®id©ÜInfos +[ +$bËName +][ +$cÞName +][] = +$ruËInfo +; + +746 ià( +$this +-> + `isV®id©ÜRequœed +( +£lf +:: +VALIDATORS_TYPE +) && + +747 +$cÞSize + > 0 && + `š_¬¿y +( +$cÞTy³ +, + `¬¿y +( + +748 +C»ÞeTy³s +:: +FLOAT +, + +749 +C»ÞeTy³s +:: +DOUBLE +, + +750 +C»ÞeTy³s +:: +NUMERIC +, + +751 +C»ÞeTy³s +:: +DECIMAL +, + +752 +C»ÞeTy³s +:: +REAL +))) { + +754 +$ruËInfo + = + `¬¿y +('type' => 'type', 'value' => '[^\d\.]+'); + +755 +$this +-> +v®id©ÜInfos +[ +$bËName +][ +$cÞName +][] = +$ruËInfo +; + +757 + } +} + +766 +´Ùeùed + +funùiÚ + + $ü—‹V®id©Ü +( +$cÞumn +, +$ty³ +) { + +768 +$node + = +$this +-> +doc +-> + `ü—‹EËm’t +('validator'); + +769 +$node +-> + `£tA‰ribu‹ +('cÞumn', +$cÞumn +-> + `g‘Name +()); + +771  +$node +; + +772 + } +} + +781 +´Ùeùed + +funùiÚ + + $ü—‹RuËNode +( +$cÞumn +, +$ruË +) { + +783 + `exŒaù +( +$ruË +); + +786 +$cÞName + = +$cÞumn +-> + `g‘Name +(); + +787 +$bËName + = +$cÞumn +-> + `g‘TabË +()-> + `g‘Name +(); + +788 +$msg + = +£lf +:: +$v®id©ÜMes§ges +[ + `¡¹Þow” +( +$ty³ +)]; + +789 +$tmp + = + `com·ù +( +$msg +['var']); + +790 + `¬¿y_unshiá +( +$tmp +, +$msg +['msg']); + +791 +$msg + = + `ÿÎ_u£r_func_¬¿y +('¥rštf', +$tmp +); + +794 +$node + = +$this +-> +doc +-> + `ü—‹EËm’t +('rule'); + +795 +$node +-> + `£tA‰ribu‹ +('Çme', +$ty³ + == 'type' ? 'notMatch' : $type); + +796 +$node +-> + `£tA‰ribu‹ +('mes§ge', +$msg +); + +798  +$node +; + +799 + } +} + +809 +´Ùeùed + +funùiÚ + + $ü—‹V’dÜInfoNode +( +$v’dÜInfo +) + +811 ià(! +$v’dÜInfo + +OR + ! +$this +-> +addV’dÜInfo +) { + +812  +çl£ +; + +815 +$v’dÜNode + = +$this +-> +doc +-> + `ü—‹EËm’t +("vendor"); + +816 +$v’dÜNode +-> + `£tA‰ribu‹ +("ty³", +$this +-> +d¢ +["phptype"]); + +818 + `fܗch + ( +$v’dÜInfo + +as + +$key + => +$v®ue +) { + +819 +$·¿m‘”Node + = +$this +-> +doc +-> + `ü—‹EËm’t +("parameter"); + +820 +$v®ue + = + `icÚv +( +$this +-> +dbEncodšg +, "utf-8", $value); + +821 +$·¿m‘”Node +-> + `£tA‰ribu‹ +("Çme", +$key +); + +822 +$·¿m‘”Node +-> + `£tA‰ribu‹ +("v®ue", +$v®ue +); + +823 +$v’dÜNode +-> + `­³ndChžd +( +$·¿m‘”Node +); + +826  +$v’dÜNode +; + +827 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelDataDTDTask.php + +1 + `v®id©e +(); + +40 ià(! +$this +-> +m­³rEËm’t +) { + +41 +throw + +Ãw + + `BuždExû±iÚ +("You must use‡ ƒlemento describe how‚ames should beransformed."); + +44 +$ba£·th + = +$this +-> + `g‘OuutDœeùÜy +(); + +47 +$g’”©Ü + = +$this +-> + `ü—‹Cڋxt +(); + +48 +$g’”©Ü +-> + `put +("ba£·th", +$ba£·th +); + +51 +$ba£P»fix + = +$g’”©Ü +-> + `g‘ +('basePrefix'); + +52 +$´ojeù + = +$g’”©Ü +-> + `g‘ +('project'); + +54 + `fܗch + ( +$this +-> + `g‘D©aMod–s +(è +as + +$d©aMod– +) { + +56 +$this +-> + `log +("Proûssšg D©amod– : " . +$d©aMod– +-> + `g‘Name +()); + +58 + `fܗch + ( +$d©aMod– +-> + `g‘D©aba£s +(è +as + +$d©aba£ +) { + +60 +$outFže + = +$this +-> + `g‘M­³dFže +( +$d©aMod– +-> + `g‘Name +()); + +62 +$g’”©Ü +-> + `put +("bËs", +$d©aba£ +-> + `g‘TabËs +()); + +63 +$g’”©Ü +-> + `·r£ +("d©a/dtd/d©a£t.l", +$outFže +-> + `g‘AbsÞu‹P©h +()); + +65 +$this +-> + `log +("G’”©šg DTD fÜ d©aba£: " . +$d©aba£ +-> + `g‘Name +()); + +66 +$this +-> + `log +("C»©šg DTD fže: " . +$outFže +-> + `g‘P©h +()); + +68 + `fܗch + ( +$d©aba£ +-> + `g‘TabËs +(è +as + +$tbl +) { + +69 +$this +-> + `log +("\ˆ+ " . +$tbl +-> + `g‘Name +()); + +70 +$g’”©Ü +-> + `put +("bË", +$tbl +); + +71 +$g’”©Ü +-> + `·r£ +("d©a/dtd/bË.l", +$outFže +-> + `g‘AbsÞu‹P©h +(), +Œue +); + +80 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelDataDumpTask.php + +1 +d©adbm­ + = +$d©adbm­ +; + +107 +public + +funùiÚ + + $g‘D©aDbM­ +() + +109  +$this +-> +d©adbm­ +; + +110 + } +} + +117 +public + +funùiÚ + + $g‘D©aba£Name +() + +119  +$this +-> +d©aba£Name +; + +120 + } +} + +127 +public + +funùiÚ + + $£tD©aba£Name +( +$v +) + +129 +$this +-> +d©aba£Name + = +$v +; + +130 + } +} + +137 +public + +funùiÚ + + $g‘D©aba£U¾ +() + +139  +$this +-> +d©aba£U¾ +; + +140 + } +} + +147 +public + +funùiÚ + + $£tD©aba£U¾ +( +$v +) + +149 +$this +-> +d©aba£U¾ + = +$v +; + +150 + } +} + +158 +public + +funùiÚ + + $g‘D©aba£U£r +() + +160  +$this +-> +d©aba£U£r +; + +161 + } +} + +169 +public + +funùiÚ + + $£tD©aba£U£r +( +$v +) + +171 +$this +-> +d©aba£U£r + = +$v +; + +172 + } +} + +179 +public + +funùiÚ + + $g‘D©aba£PasswÜd +() + +181  +$this +-> +d©aba£PasswÜd +; + +182 + } +} + +190 +public + +funùiÚ + + $£tD©aba£PasswÜd +( +$v +) + +192 +$this +-> +d©aba£PasswÜd + = +$v +; + +193 + } +} + +200 +public + +funùiÚ + + $g‘D©aba£Driv” +() + +202  +$this +-> +d©aba£Driv” +; + +203 + } +} + +210 +public + +funùiÚ + + $£tD©aba£Driv” +( +$v +) + +212 +$this +-> +d©aba£Driv” + = +$v +; + +213 + } +} + +224 +´iv©e + +funùiÚ + + $ü—‹D©aDbM­ +() + +226 ià( +$this +-> + `g‘D©aDbM­ +(è==ð +nuÎ +) { + +231 +$d©adbm­ + = +Ãw + + `Prݔt›s +(); + +234 ià( +$this +-> + `g‘D©aDbM­ +()-> + `exi¡s +()) { + +235 +$d©adbm­ +-> + `lßd +( +$this +-> + `g‘D©aDbM­ +()); + +238 + `fܗch + ( +$this +-> + `g‘D©aMod–s +(è +as + +$d©aMod– +) { + +239 + `fܗch + ( +$d©aMod– +-> + `g‘D©aba£s +(è +as + +$d©aba£ +) { + +242 ià( + `em±y +( +$this +-> +d©aba£Name +è|| ($this->d©aba£Nam&& +$d©aba£ +-> + `g‘Name +() == $this->databaseName)) { + +243 +$outFže + = +$this +-> + `g‘M­³dFže +( +$d©aMod– +-> + `g‘Name +()); + +244 +$d©adbm­ +-> + `£tPrݔty +( +$outFže +-> + `g‘Name +(), +$d©aba£ +->getName()); + +249 +Œy + { + +250 +$d©adbm­ +-> + `¡Üe +( +$this +-> + `g‘D©aDbM­ +(), "Data XML file -> Database map"); + +251 } + `ÿtch + ( +IOExû±iÚ + +$e +) { + +252 +throw + +Ãw + + `IOExû±iÚ +("UÇbˁءܐ´Ý”t›s: ". +$e +-> + `g‘Mes§ge +()); + +254 + } +} + +262 +public + +funùiÚ + + $maš +() + +264 +$this +-> + `v®id©e +(); + +266 +$buf + = "Database settings:\n" + +267 . " driv”: " . ( +$this +-> +d©aba£Driv” + ? $this->databaseDriver : "(default)" ). "\n" + +268 . " URL: " . +$this +-> +d©aba£U¾ + . "\n" + +269 . ( +$this +-> +d©aba£U£r + ? " user: " . $this->databaseUser . "\n" : "") + +270 . ( +$this +-> +d©aba£PasswÜd + ? "…assword: " . $this->databasePassword . "\n" : ""); + +272 +$this +-> + `log +( +$buf +, +Projeù +:: +MSG_VERBOSE +); + +275 +$this +-> + `ü—‹D©aDbM­ +(); + +278 + `fܗch + ( +$this +-> + `g‘D©aMod–s +(è +as + +$d©aMod– +) { + +279 + `fܗch + ( +$d©aMod– +-> + `g‘D©aba£s +(è +as + +$d©aba£ +) { + +282 ià( + `em±y +( +$this +-> +d©aba£Name +è|| ($this->d©aba£Nam&& +$d©aba£ +-> + `g‘Name +() == $this->databaseName)) { + +284 +$outFže + = +$this +-> + `g‘M­³dFže +( +$d©aMod– +-> + `g‘Name +()); + +286 +$this +-> + `log +("Dumpšg d©¨tØXML fÜ d©aba£: " . +$d©aba£ +-> + `g‘Name +()); + +287 +$this +-> + `log +("Wr™šgØXML fže: " . +$outFže +-> + `g‘Name +()); + +289 +Œy + { + +291 +$u¾ + = + `¡r_»¶aû +("@DB@", +$d©aba£ +-> + `g‘Name +(), +$this +-> +d©aba£U¾ +); + +293 ià( +$u¾ + !=ð +$this +-> +d©aba£U¾ +) { + +294 +$this +-> + `log +("New (»sÞvedèURL: " . +$u¾ +, +Projeù +:: +MSG_VERBOSE +); + +297 ià( + `em±y +( +$u¾ +)) { + +298 +throw + +Ãw + + `BuždExû±iÚ +("UÇbˁØcÚÃùØd©aba£;‚ØPDO cÚÃùiÚ URL s³cif›d.", +$this +-> + `g‘LoÿtiÚ +()); + +301 +$this +-> +cÚn + = +Ãw + + `PDO +( +$u¾ +, $this-> +d©aba£U£r +, $this-> +d©aba£PasswÜd +); + +302 +$this +-> +cÚn +-> + `£tA‰ribu‹ +( +PDO +:: +ATTR_ERRMODE +, PDO:: +ERRMODE_EXCEPTION +); + +304 +$doc + = +$this +-> + `ü—‹XMLDoc +( +$d©aba£ +); + +305 +$doc +-> + `§ve +( +$outFže +-> + `g‘AbsÞu‹P©h +()); + +307 } + `ÿtch + ( +SQLExû±iÚ + +$£ +) { + +308 +$this +-> + `log +("SQLExû±iÚ whžcÚÃùšgØDB: ". +$£ +-> + `g‘Mes§ge +(), +Projeù +:: +MSG_ERR +); + +309 +throw + +Ãw + + `BuždExû±iÚ +( +$£ +); + +314 + } +} + +322 +´iv©e + +funùiÚ + + $g‘TabËD©aStmt +( +$bËName +, +PÏtfÜm + +$¶©fÜm +) + +324  +$this +-> +cÚn +-> + `qu”y +("SELECT * FROM " . +$¶©fÜm +-> + `quÙeId’tif›r +Ð +$bËName + ) ); + +325 + } +} + +332 +´iv©e + +funùiÚ + + $ü—‹XMLDoc +( +D©aba£ + +$d©aba£ +) + +334 +$doc + = +Ãw + + `DOMDocum’t +('1.0', 'utf-8'); + +335 +$doc +-> +fÜm©Ouut + = +Œue +; + +336 +$doc +-> + `­³ndChžd +($doc-> + `ü—‹Comm’t +("Created by data/dump/Control.tplemplate.")); + +338 +$dsNode + = +$doc +-> + `ü—‹EËm’t +("dataset"); + +339 +$dsNode +-> + `£tA‰ribu‹ +("name", "all"); + +340 +$doc +-> + `­³ndChžd +( +$dsNode +); + +342 +$¶©fÜm + = +$this +-> + `g‘G’”©ÜCÚfig +()-> + `g‘CÚfigu»dPÏtfÜm +($this-> +cÚn +); + +344 +$this +-> + `log +("Building DOMree containing data fromables:"); + +346 + `fܗch + ( +$d©aba£ +-> + `g‘TabËs +(è +as + +$tbl +) { + +347 +$this +-> + `log +("\t+ " . +$tbl +-> + `g‘Name +()); + +348 +$¡mt + = +$this +-> + `g‘TabËD©aStmt +( +$tbl +-> + `g‘Name +(), +$¶©fÜm +); + +349  +$row + = +$¡mt +-> + `ãtch +()) { + +350 +$rowNode + = +$doc +-> + `ü—‹EËm’t +( +$tbl +-> + `g‘PhpName +()); + +351 + `fܗch + ( +$tbl +-> + `g‘CÞumns +(è +as + +$cÞ +) { + +352 +$cv® + = +$row +[ +$cÞ +-> + `g‘Name +()]; + +353 ià( +$cv® + !=ð +nuÎ +) { + +354 +$rowNode +-> + `£tA‰ribu‹ +( +$cÞ +-> + `g‘PhpName +(), + `icÚv +( +$this +-> +dbEncodšg +, 'utf-8', +$cv® +)); + +357 +$dsNode +-> + `­³ndChžd +( +$rowNode +); + +358 + `un£t +( +$rowNode +); + +360 + `un£t +( +$¡mt +); + +363  +$doc +; + +364 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelDataModelTemplateTask.php + +1 +ouutFže + = +$ouutFže +; + +77 +public + +funùiÚ + + $g‘OuutFže +() { + +78  +$this +-> +ouutFže +; + +79 + } +} + +87 +public + +funùiÚ + + $£tCڌÞTem¶©e + ( +$cڌÞTem¶©e +) { + +88 +$this +-> +cڌÞTem¶©e + = +$cڌÞTem¶©e +; + +89 + } +} + +96 +public + +funùiÚ + + $g‘CڌÞTem¶©e +() { + +97  +$this +-> +cڌÞTem¶©e +; + +98 + } +} + +107 +public + +funùiÚ + + $£tTem¶©eP©h +( +$‹m¶©eP©h +) { + +108 +$»sÞvedP©h + = ""; + +109 +$tok + = + `¡¹ok +( +$‹m¶©eP©h +, ","); + +110  +$tok + ) { + +113 +$fuÎP©h + = +$this +-> +´ojeù +-> + `»sÞveFže +( +$tok +); + +114 +$ý©h + = +$fuÎP©h +-> + `g‘CªÚiÿlP©h +(); + +115 ià( +$ý©h + ==ð +çl£ +) { + +116 +$this +-> + `log +("Tem¶©dœeùÜy dÛ nكxi¡: " . +$fuÎP©h +-> + `g‘AbsÞu‹P©h +()); + +118 +$»sÞvedP©h + .ð +$ý©h +; + +120 +$tok + = + `¡¹ok +(","); + +121 iàÐ +$tok + ) { + +122 +$»sÞvedP©h + .= ","; + +125 +$this +-> +‹m¶©eP©h + = +$»sÞvedP©h +; + +126 + } +} + +134 +public + +funùiÚ + + $g‘Tem¶©eP©h +() { + +135  +$this +-> +‹m¶©eP©h +; + +136 + } +} + +143 +´Ùeùed + +funùiÚ + + $ü—‹Cڋxt +() { + +145 +$cڋxt + = +Ãw + + `C­suË +(); + +149 +$ouutDœ + = +Ãw + + `PhšgFže +( +$this +-> +ouutDœeùÜy +); + +150 ià(! +$ouutDœ +-> + `exi¡s +()) { + +151 +$this +-> + `log +("OuuˆdœeùÜy dÛ nكxi¡, c»©šg: " . +$ouutDœ +-> + `g‘AbsÞu‹P©h +()); + +152 +$ouutDœ +-> + `mkdœs +(); + +157 +$cڋxt +-> + `put +("rg‘D©aba£", +$this +-> + `g‘T¬g‘D©aba£ +()); + +158 +$cڋxt +-> + `put +("rg‘Package", +$this +-> + `g‘T¬g‘Package +()); + +159 +$cڋxt +-> + `put +("now", + `¡ráime +("%c")); + +161 +$this +-> + `log +("T¬g‘ d©aba£y³: " . $this-> + `g‘T¬g‘D©aba£ +()); + +162 +$this +-> + `log +("T¬g‘…ackage: " . $this-> + `g‘T¬g‘Package +()); + +163 +$this +-> + `log +("Usšgem¶©·th: " . $this-> +‹m¶©eP©h +); + +164 +$this +-> + `log +("OuuˆdœeùÜy: " . $this-> + `g‘OuutDœeùÜy +()); + +166 +$cڋxt +-> + `£tTem¶©eP©h +( +$this +-> +‹m¶©eP©h +); + +167 +$cڋxt +-> + `£tOuutDœeùÜy +( +$this +-> +ouutDœeùÜy +); + +169 +$this +-> + `pÝuϋCڋxtPrݔt›s +( +$cڋxt +); + +171  +$cڋxt +; + +172 + } +} + +180 +public + +funùiÚ + + $pÝuϋCڋxtPrݔt›s +( +C­suË + +$cڋxt +) + +182 + `fܗch + ( +$this +-> + `g‘G’”©ÜCÚfig +()-> + `g‘BuždPrݔt›s +(è +as + +$key + => +$´ÝV®ue +) { + +183 +$this +-> + `log +('Addšg…rݔty ${' . +$key + . '}Øcڋxt', +Projeù +:: +MSG_DEBUG +); + +184 +$cڋxt +-> + `put +( +$key +, +$´ÝV®ue +); + +186 + } +} + +192 +´Ùeùed + +funùiÚ + + $sšgËFžeV®id©e +() + +194 +·»Á +:: + `v®id©e +(); + +197 ià( +$this +-> +cڌÞTem¶©e + ==ð +nuÎ +) { + +198 +throw + +Ãw + + `BuždExû±iÚ +("The controlemplate‚eedso be defined!"); + +201 ià( +$this +-> +ouutFže + ==ð +nuÎ +) { + +202 +throw + +Ãw + + `BuždExû±iÚ +("The output file‚eedso be defined!"); + +205 + } +} + +211 +public + +funùiÚ + + $maš +() + +213 +$this +-> + `sšgËFžeV®id©e +(); + +214 +$cڋxt + = +$this +-> + `ü—‹Cڋxt +(); + +216 +$cڋxt +-> + `put +("d©aMod–s", +$this +-> + `g‘D©aMod–s +()); + +218 +$·th + = +$this +-> +ouutDœeùÜy + . +DIRECTORY_SEPARATOR + . $this-> +ouutFže +; + +219 +$this +-> + `log +("G’”©šgØfž" . +$·th +); + +221 +Œy + { + +222 +$this +-> + `log +("P¬sšg cڌށem¶©e: " . $this-> +cڌÞTem¶©e +); + +223 +$cڋxt +-> + `·r£ +( +$this +-> +cڌÞTem¶©e +, +$·th +); + +224 } + `ÿtch + ( +Exû±iÚ + +$iÛ +) { + +225 +throw + +Ãw + + `BuždExû±iÚ +("CªnÙ wr™·r£dem¶©e: ". +$iÛ +-> + `g‘Mes§ge +()); + +227 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelDataSQLTask.php + +1 +sqldbm­ + = +$sqldbm­ +; + +74 +public + +funùiÚ + + $g‘SqlDbM­ +() + +76  +$this +-> +sqldbm­ +; + +77 + } +} + +85 +public + +funùiÚ + + $£tD©aDbM­ +( +PhšgFže + +$d©adbm­ +) + +87 +$this +-> +d©adbm­ + = +$d©adbm­ +; + +88 + } +} + +95 +public + +funùiÚ + + $g‘D©aDbM­ +() + +97  +$this +-> +d©adbm­ +; + +98 + } +} + +104 +public + +funùiÚ + + $£tSrcDœ +( +PhšgFže + +$¤cDœ +) + +106 +$this +-> +¤cDœ + = +$¤cDœ +; + +107 + } +} + +114 +public + +funùiÚ + + $g‘SrcDœ +() + +116  +$this +-> +¤cDœ +; + +117 + } +} + +123 +´iv©e + +funùiÚ + + $g‘D©aba£ +( +$Çme +) + +125 + `fܗch + ( +$this +-> + `g‘D©aMod–s +(è +as + +$dm +) { + +126 + `fܗch + ( +$dm +-> + `g‘D©aba£s +(è +as + +$db +) { + +127 ià( +$db +-> + `g‘Name +(è=ð +$Çme +) { + +128  +$db +; + +132 + } +} + +140 +public + +funùiÚ + + $maš +() + +142 +$this +-> + `v®id©e +(); + +144 +$rg‘D©aba£ + = +$this +-> + `g‘T¬g‘D©aba£ +(); + +146 +$¶©fÜm + = +$this +-> + `g‘G’”©ÜCÚfig +()-> + `g‘CÚfigu»dPÏtfÜm +(); + +149 +$m­ + = +Ãw + + `Prݔt›s +(); + +150 +Œy + { + +151 +$m­ +-> + `lßd +( +$this +-> + `g‘D©aDbM­ +()); + +152 } + `ÿtch + ( +IOExû±iÚ + +$iÛ +) { + +153 +throw + +Ãw + + `BuždExû±iÚ +("CªnÙ o³Àªd…roûs thd©adbm­!", +$iÛ +); + +157 + `fܗch + ( +$m­ +-> + `keys +(è +as + +$d©aXMLFž’ame +) { + +159 +$d©aXMLFže + = +Ãw + + `PhšgFže +( +$this +-> +¤cDœ +, +$d©aXMLFž’ame +); + +162 ià( +$d©aXMLFže +-> + `exi¡s +()) { + +164 +$dbÇme + = +$m­ +-> + `g‘ +( +$d©aXMLFž’ame +); + +166 +$db + = +$this +-> + `g‘D©aba£ +( +$dbÇme +); + +168 ià(! +$db +) { + +169 +throw + +Ãw + + `BuždExû±iÚ +("Cannot find instantiated Database for‚ame '$dbname' from datadbmap file."); + +172 +$db +-> + `£tPÏtfÜm +( +$¶©fÜm +); + +174 +$outFže + = +$this +-> + `g‘M­³dFže +( +$d©aXMLFž’ame +); + +175 +$sqlWr™” + = +Ãw + + `FžeWr™” +( +$outFže +); + +177 +$this +-> + `log +("C»©šg SQL from XML d©¨dum°fže: " . +$d©aXMLFže +-> + `g‘AbsÞu‹P©h +()); + +179 +Œy + { + +180 +$d©aXmlP¬£r + = +Ãw + + `XmlToD©aSQL +( +$db +, +$this +-> + `g‘G’”©ÜCÚfig +(), $this-> +dbEncodšg +); + +181 +$d©aXmlP¬£r +-> + `ŒªsfÜm +( +$d©aXMLFže +, +$sqlWr™” +); + +182 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +183 +throw + +Ãw + + `BuždExû±iÚ +("Exû±iڅ¬sšg d©¨XML: " . +$e +-> + `g‘Mes§ge +(), +$x +); + +187 +$p + = +Ãw + + `Prݔt›s +(); + +188 ià( +$this +-> + `g‘SqlDbM­ +()-> + `exi¡s +()) { + +189 +$p +-> + `lßd +( +$this +-> + `g‘SqlDbM­ +()); + +192 +$p +-> + `£tPrݔty +( +$outFže +-> + `g‘Name +(), +$db +->getName()); + +193 +$p +-> + `¡Üe +( +$this +-> + `g‘SqlDbM­ +(), "Sqlfile -> Database map"); + +196 +$this +-> + `log +("Fž'" . +$d©aXMLFže +-> + `g‘AbsÞu‹P©h +() + +197 . "' iÀd©adbm­ dÛ nكxi¡, sØskpšg it.", +Projeù +:: +MSG_WARN +); + +202 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelGraphvizTask.php + +1 + `exi¡s +()) { + +59 +$out +-> + `mkdœs +(); + +61 +$this +-> +outDœ + = +$out +; + +69 +public + +funùiÚ + + $£tSqlDbM­ +( +PhšgFže + +$sqldbm­ +) + +71 +$this +-> +sqldbm­ + = +$sqldbm­ +; + +72 + } +} + +78 +public + +funùiÚ + + $g‘SqlDbM­ +() + +80  +$this +-> +sqldbm­ +; + +81 + } +} + +87 +public + +funùiÚ + + $£tD©aba£ +( +$d©aba£ +) + +89 +$this +-> +d©aba£ + = +$d©aba£ +; + +90 + } +} + +96 +public + +funùiÚ + + $g‘D©aba£ +() + +98  +$this +-> +d©aba£ +; + +99 + } +} + +102 +public + +funùiÚ + + $maš +() + +105 +$couÁ + = 0; + +107 +$dÙSyÁax + = ''; + +111 +$dbM­s + = +$this +-> + `g‘D©aMod–DbM­ +(); + +113 + `fܗch + ( +$this +-> + `g‘D©aMod–s +(è +as + +$d©aMod– +) { + +115 +$dÙSyÁax + .= "digraph G {\n"; + +116 + `fܗch + ( +$d©aMod– +-> + `g‘D©aba£s +(è +as + +$d©aba£ +) { + +118 +$this +-> + `log +("db: " . +$d©aba£ +-> + `g‘Name +()); + +121 + `fܗch + ( +$d©aba£ +-> + `g‘TabËs +(è +as + +$tbl +) { + +123 +$this +-> + `log +("\t+ " . +$tbl +-> + `g‘Name +()); + +125 ++ +$couÁ +; + +126 +$dÙSyÁax + .ð'node'. +$tbl +-> + `g‘Name +().' [label="{'.$tbl->getName().'|'; + +128 + `fܗch + ( +$tbl +-> + `g‘CÞumns +(è +as + +$cÞ +) { + +129 +$dÙSyÁax + .ð +$cÞ +-> + `g‘Name +(è. ' (' . $cÞ-> + `g‘Ty³ +() . ')'; + +130 ià( + `couÁ +( +$cÞ +-> + `g‘FÜeignKeys +()) > 0) { + +131 +$dÙSyÁax + .= ' [FK]'; + +132 } + `–£if + ( +$cÞ +-> + `isPrim¬yKey +()) { + +133 +$dÙSyÁax + .= ' [PK]'; + +135 +$dÙSyÁax + .= '\l'; + +137 +$dÙSyÁax + .= '}", shape=record];'; + +138 +$dÙSyÁax + .= "\n"; + +143 +$couÁ + = 0; + +144 +$dÙSyÁax + .= "\n"; + +145 + `fܗch + ( +$d©aba£ +-> + `g‘TabËs +(è +as + +$tbl +) { + +146 ++ +$couÁ +; + +148 + `fܗch + ( +$tbl +-> + `g‘CÞumns +(è +as + +$cÞ +) { + +149 +$fk + = +$cÞ +-> + `g‘FÜeignKeys +(); + +150 iàÐ + `couÁ +( +$fk +è=ð0 +Ü + $fk ==ð +nuÎ + ) ; + +151 iàÐ + `couÁ +( +$fk +è> 1 ) + `throw +Ð +Ãw + + `Exû±iÚ +("not sure whato do here...") ); + +152 +$fk + = $fk[0]; + +153 +$dÙSyÁax + .ð'node'. +$tbl +-> + `g‘Name +(è.':cÞ ->‚ode'. +$fk +-> + `g‘FÜeignTabËName +(è. ':bË [Ïb–="' . +$cÞ +->g‘Name(è. '=' . + `im¶ode +(',', $fk-> + `g‘FÜeignCÞumns +()) . ' "];'; + +154 +$dÙSyÁax + .= "\n"; + +161 +$dÙSyÁax + .= "}\n"; + +163 +$this +-> + `wr™eDÙ +( +$dÙSyÁax +,$this-> +outDœ +, +$d©aba£ +-> + `g‘Name +()); + +165 +$dÙSyÁax + = ''; + +169 + } +} + +175 +funùiÚ + + $wr™eDÙ +( +$dÙSyÁax +, +PhšgFže + +$ouutDœ +, +$ba£Fž’ame +) { + +176 +$fže + = +Ãw + + `PhšgFže +( +$ouutDœ +, +$ba£Fž’ame + . '.schema.dot'); + +177 +$this +-> + `log +("Wr™šg dÙ fžtØ" . +$fže +-> + `g‘AbsÞu‹P©h +()); + +178 + `fže_put_cڋÁs +( +$fže +-> + `g‘AbsÞu‹P©h +(), +$dÙSyÁax +); + +179 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelOMTask.php + +1 +rg‘PÏtfÜm + = +$v +; + +53 +public + +funùiÚ + + $g‘T¬g‘PÏtfÜm +() { + +54  +$this +-> +rg‘PÏtfÜm +; + +55 + } +} + +62 +´Ùeùed + +funùiÚ + + $’su»DœExi¡s +( +$·th +) + +64 +$f + = +Ãw + + `PhšgFže +( +$this +-> + `g‘OuutDœeùÜy +(), +$·th +); + +65 ià(! +$f +-> + `exi¡s +()) { + +66 ià(! +$f +-> + `mkdœs +()) { + +67 +throw + +Ãw + + `BuždExû±iÚ +("E¼Ü c»©šg dœeùܛs: ". +$f +-> + `g‘P©h +()); + +70 + } +} + +79 +´Ùeùed + +funùiÚ + + $bužd +( +OMBužd” + +$bužd” +, +$ov”wr™e + = +Œue +) + +82 +$·th + = +$bužd” +-> + `g‘CÏssFžeP©h +(); + +83 +$this +-> + `’su»DœExi¡s +( + `dœÇme +( +$·th +)); + +85 +$_f + = +Ãw + + `PhšgFže +( +$this +-> + `g‘OuutDœeùÜy +(), +$·th +); + +86 ià( +$ov”wr™e + || ! +$_f +-> + `exi¡s +()) { + +87 +$this +-> + `log +("\t\t-> " . +$bužd” +-> + `g‘CÏs¢ame +(è. " [bužd”: " . + `g‘_þass +($builder) . "]"); + +88 +$süt + = +$bužd” +-> + `bužd +(); + +89 + `fže_put_cڋÁs +( +$_f +-> + `g‘AbsÞu‹P©h +(), +$süt +); + +90 + `fܗch + ( +$bužd” +-> + `g‘W¬nšgs +(è +as + +$w¬nšg +) { + +91 +$this +-> + `log +( +$w¬nšg +, +Projeù +:: +MSG_WARN +); + +94 +$this +-> + `log +("\t\t-> (exi¡sè" . +$bužd” +-> + `g‘CÏs¢ame +()); + +97 + } +} + +102 +public + +funùiÚ + + $maš +() + +105 +$this +-> + `v®id©e +(); + +107 +$g’”©ÜCÚfig + = +$this +-> + `g‘G’”©ÜCÚfig +(); + +109 + `fܗch + ( +$this +-> + `g‘D©aMod–s +(è +as + +$d©aMod– +) { + +110 +$this +-> + `log +("Proûssšg D©amod– : " . +$d©aMod– +-> + `g‘Name +()); + +112 + `fܗch + ( +$d©aMod– +-> + `g‘D©aba£s +(è +as + +$d©aba£ +) { + +114 +$this +-> + `log +(" -…roûssšg d©aba£ : " . +$d©aba£ +-> + `g‘Name +()); + +116 + `fܗch + ( +$d©aba£ +-> + `g‘TabËs +(è +as + +$bË +) { + +118 ià(! +$bË +-> + `isFÜReã»nûOÆy +()) { + +120 +$this +-> + `log +("\t+ " . +$bË +-> + `g‘Name +()); + +127 + `fܗch + ( + `¬¿y +('³”', 'objeù', 'bËm­'è +as + +$rg‘ +) { + +128 +$bužd” + = +$g’”©ÜCÚfig +-> + `g‘CÚfigu»dBužd” +( +$bË +, +$rg‘ +); + +129 +$this +-> + `bužd +( +$bužd” +); + +137 + `fܗch + ( + `¬¿y +('³”¡ub', 'objeù¡ub'è +as + +$rg‘ +) { + +138 +$bužd” + = +$g’”©ÜCÚfig +-> + `g‘CÚfigu»dBužd” +( +$bË +, +$rg‘ +); + +139 +$this +-> + `bužd +( +$bužd” +, +$ov”wr™e += +çl£ +); + +147 ià( +$bË +-> + `g‘Chžd»nCÞumn +()) { + +148 +$cÞ + = +$bË +-> + `g‘Chžd»nCÞumn +(); + +149 ià( +$cÞ +-> + `isEnum”©edCÏs£s +()) { + +150 + `fܗch + ( +$cÞ +-> + `g‘Chžd»n +(è +as + +$chžd +) { + +151 +$bužd” + = +$g’”©ÜCÚfig +-> + `g‘CÚfigu»dBužd” +( +$bË +, 'objectmultiextend'); + +152 +$bužd” +-> + `£tChžd +( +$chžd +); + +153 +$this +-> + `bužd +( +$bužd” +, +$ov”wr™e += +çl£ +); + +164 ià( +$bË +-> + `g‘IÁ”çû +()) { + +165 +$bužd” + = +$g’”©ÜCÚfig +-> + `g‘CÚfigu»dBužd” +( +$bË +, 'interface'); + +166 +$this +-> + `bužd +( +$bužd” +, +$ov”wr™e += +çl£ +); + +173 ià( +$bË +-> + `Œ“Mode +()) { + +174  +$bË +-> + `Œ“Mode +()) { + +176 + `fܗch + ( + `¬¿y +('áed£“r', 'áed£t'è +as + +$rg‘ +) { + +177 +$bužd” + = +$g’”©ÜCÚfig +-> + `g‘CÚfigu»dBužd” +( +$bË +, +$rg‘ +); + +178 +$this +-> + `bužd +( +$bužd” +); + +183 + `fܗch + ( + `¬¿y +('nod•“r', 'node'è +as + +$rg‘ +) { + +184 +$bužd” + = +$g’”©ÜCÚfig +-> + `g‘CÚfigu»dBužd” +( +$bË +, +$rg‘ +); + +185 +$this +-> + `bužd +( +$bužd” +); + +188 + `fܗch + ( + `¬¿y +('nod•“r¡ub', 'node¡ub'è +as + +$rg‘ +) { + +189 +$bužd” + = +$g’”©ÜCÚfig +-> + `g‘CÚfigu»dBužd” +( +$bË +, +$rg‘ +); + +190 +$this +-> + `bužd +( +$bužd” +, +$ov”wr™e += +çl£ +); + +211 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelSQLExec.php + +1 +sqldbm­ + = $this-> +´ojeù +-> + `»sÞveFže +( +$sqldbm­ +); + +124 +public + +funùiÚ + + $g‘SqlDbM­ +() + +126  +$this +-> +sqldbm­ +; + +127 + } +} + +134 +public + +funùiÚ + + $£tSrcDœ +( +PhšgFže + +$¤cDœ +) + +136 +$this +-> +¤cDœ + = +$¤cDœ +; + +137 + } +} + +144 +public + +funùiÚ + + $g‘SrcDœ +() + +146  +$this +-> +¤cDœ +; + +147 + } +} + +154 +public + +funùiÚ + + $addText +( +$sql +) + +156 +$this +-> +sqlCommªd + .ð +$sql +; + +157 + } +} + +164 +public + +funùiÚ + + $£tU¾ +( +$u¾ +) + +166 +$this +-> +u¾ + = +$u¾ +; + +167 + } +} + +175 +public + +funùiÚ + + $£tU£rid +( +$u£rId +) + +177 +$this +-> +u£rId + = +$u£rId +; + +178 + } +} + +186 +public + +funùiÚ + + $£tPasswÜd +( +$·sswÜd +) + +188 +$this +-> +·sswÜd + = +$·sswÜd +; + +189 + } +} + +196 +public + +funùiÚ + + $£tAutoComm™ +( +$autocomm™ +) + +198 +$this +-> +autocomm™ + = ( +boޗn +è +$autocomm™ +; + +199 + } +} + +209 +public + +funùiÚ + + $£tD–im™” +( +$d–im™” +) + +211 +$this +-> +d–im™” + = +$d–im™” +; + +212 + } +} + +222 +public + +funùiÚ + + $£tD–im™”Ty³ +( +$d–im™”Ty³ +) + +224 +$this +-> +d–im™”Ty³ + = +$d–im™”Ty³ +; + +225 + } +} + +232 +public + +funùiÚ + + $£tPršt +( +$´št +) + +234 +$this +-> +´št + = ( +boޗn +è +$´št +; + +235 + } +} + +242 +public + +funùiÚ + + $£tShowh—d”s +( +$showh—d”s +) + +244 +$this +-> +showh—d”s + = ( +boޗn +è +$showh—d”s +; + +245 + } +} + +252 +public + +funùiÚ + + $£tOuut +( +PhšgFže + +$ouut +) + +254 +$this +-> +ouut + = +$ouut +; + +255 + } +} + +262 +public + +funùiÚ + + $£tOÃ¼Ü +( +$aùiÚ +) + +264 +$this +-> +ÚE¼Ü + = +$aùiÚ +; + +265 + } +} + +272 +public + +funùiÚ + + $maš +() + +274 +$this +-> +sqlCommªd + = + `Œim +($this->sqlCommand); + +276 ià( +$this +-> +sqldbm­ + ==ð +nuÎ + || $this-> + `g‘SqlDbM­ +()-> + `exi¡s +(è==ð +çl£ +) { + +277 +throw + +Ãw + + `BuždExû±iÚ +("You haven't…rovided‡n sqldbmap, or " + +278 . "thÚyou s³cif›d dÛ¢'ˆexi¡: " . +$this +-> +sqldbm­ +-> + `g‘P©h +()); + +281 ià( +$this +-> +u¾ + ==ð +nuÎ +) { + +282 +throw + +Ãw + + `BuždExû±iÚ +("DSN url‡ttribute must be set!"); + +285 +$m­ + = +Ãw + + `Prݔt›s +(); + +287 +Œy + { + +288 +$m­ +-> + `lßd +( +$this +-> + `g‘SqlDbM­ +()); + +289 } + `ÿtch + ( +IOExû±iÚ + +$iÛ +) { + +290 +throw + +Ãw + + `BuždExû±iÚ +("Cannot open‡nd…rocesshe sqldbmap!"); + +293 +$d©aba£s + = + `¬¿y +(); + +295 + `fܗch + ( +$m­ +-> + `keys +(è +as + +$sqlfže +) { + +297 +$d©aba£ + = +$m­ +-> + `g‘Prݔty +( +$sqlfže +); + +300 ià(! + `is£t +( +$d©aba£s +[ +$d©aba£ +])) { + +302 +$d©aba£s +[ +$d©aba£ +] = + `¬¿y +(); + +307 ià( + `¡½os +( +$sqlfže +, "schema.sql"è!=ð +çl£ +) { + +309 + `¬¿y_unshiá +( +$d©aba£s +[ +$d©aba£ +], +$sqlfže +); + +311 + `¬¿y_push +( +$d©aba£s +[ +$d©aba£ +], +$sqlfže +); + +315 + `fܗch + ( +$d©aba£s + +as + +$db + => +$fžes +) { + +316 +$Œª§ùiÚs + = + `¬¿y +(); + +318 + `fܗch + ( +$fžes + +as + +$fžeName +) { + +320 +$fže + = +Ãw + + `PhšgFže +( +$this +-> +¤cDœ +, +$fžeName +); + +322 ià( +$fže +-> + `exi¡s +()) { + +323 +$this +-> + `log +("Executšg s‹m’t š fže: " . +$fže +-> + `__toSŒšg +()); + +324 +$Œª§ùiÚ + = +Ãw + + `PrݖSQLExecT¿n§ùiÚ +( +$this +); + +325 +$Œª§ùiÚ +-> + `£tSrc +( +$fže +); + +326 +$Œª§ùiÚs +[] = +$Œª§ùiÚ +; + +328 +$this +-> + `log +("Fž'" . +$fže +-> + `__toSŒšg +() + +332 +$this +-> + `š£¹D©aba£SqlFžes +($this-> +u¾ +, +$db +, +$Œª§ùiÚs +); + +334 + } +} + +344 +´iv©e + +funùiÚ + + $š£¹D©aba£SqlFžes +( +$u¾ +, +$d©aba£ +, +$Œª§ùiÚs +) + +346 +$u¾ + = + `¡r_»¶aû +("@DB@", +$d©aba£ +, $url); + +347 +$this +-> + `log +("Ou¸Ãw u¾ -> " . +$u¾ +); + +349 +Œy + { + +351 +$buf + = "D©aba£ s‘tšgs:" . +PHP_EOL + + +352 . " URL: " . +$u¾ + . +PHP_EOL + + +353 . ( +$this +-> +u£rId + ? " u£r: " . $this->u£rId . +PHP_EOL + : "") + +354 . ( +$this +-> +·sswÜd + ? "…asswÜd: " . $this->·sswÜd . +PHP_EOL + : ""); + +356 +$this +-> + `log +( +$buf +, +Projeù +:: +MSG_VERBOSE +); + +359 ià(! +$this +-> +u£rId +è{ $this->u£rId = +nuÎ +; } + +361 ià(! +$this +-> +·sswÜd +è{ $this->·sswÜd = +nuÎ +; } + +363 +$this +-> +cÚn + = +Ãw + + `PDO +( +$u¾ +, $this-> +u£rId +, $this-> +·sswÜd +); + +364 +$this +-> +cÚn +-> + `£tA‰ribu‹ +( +PDO +:: +ATTR_ERRMODE +, PDO:: +ERRMODE_EXCEPTION +); + +369 +$out + = +nuÎ +; + +371 +Œy + { + +372 ià( +$this +-> +ouut + !=ð +nuÎ +) { + +373 +$this +-> + `log +("O³nšg PrštSŒ—mØouuˆfž" . $this-> +ouut +-> + `__toSŒšg +(), +Projeù +:: +MSG_VERBOSE +); + +374 +$out + = +Ãw + + `FžeWr™” +( +$this +-> +ouut +); + +378  +$i +=0, +$size += + `couÁ +( +$Œª§ùiÚs +); $i < $size; $i++) { + +379 +$Œª§ùiÚs +[ +$i +]-> + `runT¿n§ùiÚ +( +$out +); + +380 ià(! +$this +-> +autocomm™ +) { + +381 +$this +-> + `log +("Comm™šg¿n§ùiÚ", +Projeù +:: +MSG_VERBOSE +); + +382 +$this +-> +cÚn +-> + `comm™ +(); + +385 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +386 ià( +$out +è$out-> + `þo£ +(); + +389 } + `ÿtch + ( +IOExû±iÚ + +$e +) { + +391 ià(! +$this +-> +autocomm™ + && $this-> +cÚn + !=ð +nuÎ + && $this-> +ÚE¼Ü + == "abort") { + +392 +Œy + { + +393 +$this +-> +cÚn +-> + `rÞlBack +(); + +394 } + `ÿtch + ( +PDOExû±iÚ + +$ex +) { + +396 +Sy¡em +:: + `´šŽn +("Rollback failed."); + +399 ià( +$this +-> +¡©em’t +è$this->¡©em’ˆð +nuÎ +; + +400 +throw + +Ãw + + `BuždExû±iÚ +( +$e +); + +401 } + `ÿtch + ( +PDOExû±iÚ + +$e +) { + +402 ià(! +$this +-> +autocomm™ + && $this-> +cÚn + !=ð +nuÎ + && $this-> +ÚE¼Ü + == "abort") { + +403 +Œy + { + +404 +$this +-> +cÚn +-> + `rÞlBack +(); + +405 } + `ÿtch + ( +PDOExû±iÚ + +$ex +) { + +407 +Sy¡em +:: + `´šŽn +("Rollback failed"); + +410 ià( +$this +-> +¡©em’t +è$this->¡©em’ˆð +nuÎ +; + +411 +throw + +Ãw + + `BuždExû±iÚ +( +$e +); + +414 +$this +-> +¡©em’t + = +nuÎ +; + +416 +$this +-> + `log +($this-> +goodSql + . " oà" . $this-> +tÙ®Sql + + +418 + } +} + +432 +public + +funùiÚ + + $runS‹m’ts +( +R—d” + +$»ad” +, +$out + = +nuÎ +) + +434 +$sql + = ""; + +435 +$lše + = ""; + +436 +$sqlBacklog + = ""; + +437 +$hasQu”y + = +çl£ +; + +439 +$š + = +Ãw + + `Bufã»dR—d” +( +$»ad” +); + +441 +$·r£r +['pointer'] = 0; + +442 +$·r£r +['isInSŒšg'] = +çl£ +; + +443 +$·r£r +['stringQuotes'] = ""; + +444 +$·r£r +['backslashCount'] = 0; + +445 +$·r£r +['parsedString'] = ""; + +447 +$sqlP¬ts + = + `¬¿y +(); + +449 ( +$lše + = +$š +-> + `»adLše +()è!=ð +nuÎ +) { + +451 +$lše + = + `Œim +($line); + +452 +$lše + = +ProjeùCÚfigu¿tÜ +:: + `»¶aûPrݔt›s +( +$this +-> +´ojeù +, $line, + +453 +$this +-> +´ojeù +-> + `g‘Prݔt›s +()); + +455 ià( +SŒšgH–³r +:: + `¡¬tsW™h +("//", +$lše +) + +456 || +SŒšgH–³r +:: + `¡¬tsW™h +("--", +$lše +) + +457 || +SŒšgH–³r +:: + `¡¬tsW™h +("#", +$lše +)) { + +461 ià( + `¡¾’ +( +$lše +è> 4 && + `¡¹ouµ” +( + `sub¡r +($line,0, 4)) == "REM ") { + +465 ià( +$sqlBacklog + !== "") { + +466 +$sql + = +$sqlBacklog +; + +467 +$sqlBacklog + = ""; + +470 +$sql + .ð" " . +$lše + . +PHP_EOL +; + +475 ià( + `¡½os +( +$lše +, "--"è!=ð +çl£ +) { + +476 +$sql + .ð +PHP_EOL +; + +480 ià( +$this +-> +d–im™”Ty³ + =ð +£lf +:: +DELIM_NORMAL +) { + +487 +$i + = +$·r£r +['pointer']; + +488 +$c + = + `¡¾’ +( +$sql +); + +489  +$i + < +$c +) { + +491 +$ch¬ + = +$sql +[ +$i +]; + +493  +$ch¬ +) { + +495 +$·r£r +['backslashCount']++; + +496 +$this +-> + `log +("c$i: found ". +$·r£r +['back¦ashCouÁ']." back¦ashÓs)", +Projeù +:: +MSG_VERBOSE +); + +500 ià( +$·r£r +['isInSŒšg'] && $·r£r['¡ršgQuÙes'] =ð +$ch¬ +) { + +501 ià(( +$·r£r +['backslashCount'] & 1) == 0) { + +502 #$this-> + `log +("$i: ouˆoà¡ršg", +Projeù +:: +MSG_VERBOSE +); + +503 +$·r£r +['isInSŒšg'] = +çl£ +; + +505 +$this +-> + `log +("c$i:„ejeùed quÙed d–im™”", +Projeù +:: +MSG_VERBOSE +); + +508 } + `–£if + (! +$·r£r +['isInString']) { + +509 +$·r£r +['¡ršgQuÙes'] = +$ch¬ +; + +510 +$·r£r +['isInSŒšg'] = +Œue +; + +511 #$this-> + `log +("$i: iÁØ¡ršg w™h $·r£r['¡ršgQuÙes']", +Projeù +:: +MSG_VERBOSE +); + +516 ià( +$ch¬ + =ð +$this +-> +d–im™” + && ! +$·r£r +['isInString']) { + +517 +$this +-> + `log +("c$i: v®idƒnd oàcommªd found!", +Projeù +:: +MSG_VERBOSE +); + +518 +$sqlP¬ts +[] = +$·r£r +['parsedString']; + +519 +$sqlP¬ts +[] = +$this +-> +d–im™” +; + +522 +$·r£r +['·r£dSŒšg'] .ð +$ch¬ +; + +523 ià( +$ch¬ + !== "\\") { + +524 ià( +$·r£r +['back¦ashCouÁ']è +$this +-> + `log +("$i: back¦ash„e£t", +Projeù +:: +MSG_VERBOSE +); + +525 +$·r£r +['backslashCount'] = 0; + +527 +$i +++; + +528 +$·r£r +['pointer']++; + +531 +$sqlBacklog + = ""; + +532 + `fܗch + ( +$sqlP¬ts + +as + +$sqlP¬t +) { + +534 +$sqlBacklog + .ð +$sqlP¬t +; + +537 ià( +$sqlP¬t + ==ð +$this +-> +d–im™” +) { + +538 +$sql + = +$sqlBacklog +; + +539 +$sqlBacklog + = ""; + +540 +$hasQu”y + = +Œue +; + +545 ià( +$hasQu”y + || ( +$this +-> +d–im™”Ty³ + =ð +£lf +:: +DELIM_ROW + && +$lše + =ð$this-> +d–im™” +)) { + +547 +$sql + = +SŒšgH–³r +:: + `sub¡ršg +($sql, 0, + `¡¾’ +($sqlè- 1 - sŒËn( +$this +-> +d–im™” +)); + +548 +$this +-> + `log +("SQL: " . +$sql +, +Projeù +:: +MSG_VERBOSE +); + +549 +$this +-> + `execSQL +( +$sql +, +$out +); + +550 +$sql + = ""; + +551 +$hasQu”y + = +çl£ +; + +553 +$·r£r +['pointer'] = 0; + +554 +$·r£r +['isInSŒšg'] = +çl£ +; + +555 +$·r£r +['stringQuotes'] = ""; + +556 +$·r£r +['backslashCount'] = 0; + +557 +$·r£r +['parsedString'] = ""; + +558 +$sqlP¬ts + = + `¬¿y +(); + +563 ià( +$sql + !== "") { + +564 +$this +-> + `execSQL +( +$sql +, +$out +); + +566 + } +} + +575 +´Ùeùed + +funùiÚ + + $execSQL +( +$sql +, +$out + = +nuÎ +) + +578 ià( + `Œim +( +$sql +) == "") { + +582 +Œy + { + +583 +$this +-> +tÙ®Sql +++; + +585 ià(! +$this +-> +autocomm™ +è$this-> +cÚn +-> + `begšT¿n§ùiÚ +(); + +587 +$¡mt + = +$this +-> +cÚn +-> + `´•¬e +( +$sql +); + +588 +$¡mt +-> + `execu‹ +(); + +589 +$this +-> + `log +( +$¡mt +-> + `rowCouÁ +(è. "„ow afãùed", +Projeù +:: +MSG_VERBOSE +); + +591 ià(! +$this +-> +autocomm™ +è$this-> +cÚn +-> + `comm™ +(); + +593 +$this +-> +goodSql +++; + +594 } + `ÿtch + ( +PDOExû±iÚ + +$e +) { + +595 +$this +-> + `log +("FažedØexecu‹: " . +$sql +, +Projeù +:: +MSG_ERR +); + +596 ià( +$this +-> +ÚE¼Ü + != "continue") { + +597 +throw + +$e +; + +599 +$this +-> + `log +( +$e +-> + `g‘Mes§ge +(), +Projeù +:: +MSG_ERR +); + +601 + } +} + +609 +´Ùeùed + +funùiÚ + + $´štResuÉs +( +$out + = +nuÎ +) + +611 +$rs + = +nuÎ +; + +614 +$rs + = +$this +-> +¡©em’t +-> + `g‘ResuÉS‘ +(); + +616 ià( +$rs + !=ð +nuÎ +) { + +618 +$this +-> + `log +("Proûssšg‚ew„esuÉ s‘.", +Projeù +:: +MSG_VERBOSE +); + +620 +$lše + = ""; + +622 +$cÞ¥rš‹d + = +çl£ +; + +624  +$rs +-> + `Ãxt +()) { + +626 ià(! +$cÞ¥rš‹d + && +$this +-> +showh—d”s +) { + +627 +$fœ¡ + = +Œue +; + +628 + `fܗch + ( +$this +-> +f›lds + +as + +$f›ldName + => +$ignÜe +) { + +629 ià( +$fœ¡ +è$fœ¡ = +çl£ +; +$lše + .= ","; + +630 +$lše + .ð +$f›ldName +; + +634 +$fœ¡ + = +Œue +; + +635 + `fܗch + ( +$rs +-> +f›lds + +as + +$cÞumnV®ue +) { + +637 ià( +$cÞumnV®ue + !ð +nuÎ +) { + +638 +$cÞumnV®ue + = + `Œim +($columnValue); + +641 ià( +$fœ¡ +) { + +642 +$fœ¡ + = +çl£ +; + +644 +$lše + .= ","; + +646 +$lše + .ð +$cÞumnV®ue +; + +649 ià( +$out + !=ð +nuÎ +) { + +650 +$out +-> + `wr™e +( +$lše +); + +651 +$out +-> + `ÃwLše +(); + +654 +Sy¡em +:: + `´šŽn +( +$lše +); + +655 +$lše + = ""; + +658 }  +$this +-> +¡©em’t +-> + `g‘MÜeResuÉs +()); + +659 +Sy¡em +:: + `´šŽn +(); + +660 ià( +$out + !=ð +nuÎ +è$out-> + `ÃwLše +(); + +661 + } +} + +672 þas  + cPrݖSQLExecT¿n§ùiÚ + { + +674 +´iv©e + + m$tSrcFže + = +nuÎ +; + +675 +´iv©e + + m$tSqlCommªd + = ""; + +676 +´iv©e + + m$·»Á +; + +678 +funùiÚ + + $__cÚ¡ruù +( +$·»Á +) + +681 +$this +-> +·»Á + = +$·»Á +; + +684 +public + +funùiÚ + + $£tSrc +( +PhšgFže + +$¤c +) + +686 +$this +-> +tSrcFže + = +$¤c +; + +687 + } +} + +689 +public + +funùiÚ + + $addText +( +$sql +) + +691 +$this +-> +tSqlCommªd + .ð +$sql +; + +692 + } +} + +697 +public + +funùiÚ + + $runT¿n§ùiÚ +( +$out + = +nuÎ +) + +699 ià(! + `em±y +( +$this +-> +tSqlCommªd +)) { + +700 +$this +-> +·»Á +-> + `log +("Executšg commªds", +Projeù +:: +MSG_INFO +); + +701 +$this +-> +·»Á +-> + `runS‹m’ts +($this-> +tSqlCommªd +, +$out +); + +704 ià( +$this +-> +tSrcFže + !=ð +nuÎ +) { + +705 +$this +-> +·»Á +-> + `log +("Executšg fže: " . $this-> +tSrcFže +-> + `g‘AbsÞu‹P©h +(), +Projeù +:: +MSG_INFO +); + +706 +$»ad” + = +Ãw + + `FžeR—d” +( +$this +-> +tSrcFže +); + +707 +$this +-> +·»Á +-> + `runS‹m’ts +( +$»ad” +, +$out +); + +708 +$»ad” +-> + `þo£ +(); + +710 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelSQLTask.php + +1 +sqldbm­ + = +$sqldbm­ +; + +59 +public + +funùiÚ + + $g‘SqlDbM­ +() + +61  +$this +-> +sqldbm­ +; + +62 + } +} + +68 +public + +funùiÚ + + $£tD©aba£ +( +$d©aba£ +) + +70 +$this +-> +d©aba£ + = +$d©aba£ +; + +71 + } +} + +77 +public + +funùiÚ + + $g‘D©aba£ +() + +79  +$this +-> +d©aba£ +; + +80 + } +} + +87 +´Ùeùed + +funùiÚ + + $ü—‹SqlDbM­ +() + +89 ià( +$this +-> + `g‘SqlDbM­ +(è==ð +nuÎ +) { + +94 +$sqldbm­ + = +Ãw + + `Prݔt›s +(); + +97 ià( +$this +-> + `g‘SqlDbM­ +()-> + `exi¡s +()) { + +98 +$sqldbm­ +-> + `lßd +( +$this +-> + `g‘SqlDbM­ +()); + +101 ià( +$this +-> +·ckageObjeùMod– +) { + +103 +$d©aMod–s + = +$this +-> + `·ckageD©aMod–s +(); + +104 + `fܗch + ( +$d©aMod–s + +as + +$·ckage + => +$d©aMod– +) { + +105 + `fܗch + ( +$d©aMod– +-> + `g‘D©aba£s +(è +as + +$d©aba£ +) { + +106 +$Çme + = ( +$·ckage + ? $package . '.' : '') . 'schema.xml'; + +107 +$sqlFže + = +$this +-> + `g‘M­³dFže +( +$Çme +); + +108 +$sqldbm­ +-> + `£tPrݔty +( +$sqlFže +-> + `g‘Name +(), +$d©aba£ +->getName()); + +113 +$dmM­ + = +$this +-> + `g‘D©aMod–DbM­ +(); + +114 + `fܗch + ( + `¬¿y_keys +( +$dmM­ +è +as + +$d©aMod–Name +) { + +115 +$sqlFže + = +$this +-> + `g‘M­³dFže +( +$d©aMod–Name +); + +116 ià( +$this +-> + `g‘D©aba£ +(è==ð +nuÎ +) { + +117 +$d©aba£Name + = +$dmM­ +[ +$d©aMod–Name +]; + +119 +$d©aba£Name + = +$this +-> + `g‘D©aba£ +(); + +121 +$sqldbm­ +-> + `£tPrݔty +( +$sqlFže +-> + `g‘Name +(), +$d©aba£Name +); + +125 +Œy + { + +126 +$sqldbm­ +-> + `¡Üe +( +$this +-> + `g‘SqlDbM­ +(), "Sqlfile -> Database map"); + +127 } + `ÿtch + ( +IOExû±iÚ + +$e +) { + +128 +throw + +Ãw + + `IOExû±iÚ +("UÇbˁءܐ´Ý”t›s: ". +$e +-> + `g‘Mes§ge +()); + +130 + } +} + +132 +public + +funùiÚ + + $maš +() { + +134 +$this +-> + `v®id©e +(); + +136 ià(! +$this +-> +m­³rEËm’t +) { + +137 +throw + +Ãw + + `BuždExû±iÚ +("You must use‡ ƒlemento describe how‚ames should beransformed."); + +140 ià( +$this +-> +·ckageObjeùMod– +) { + +141 +$d©aMod–s + = +$this +-> + `·ckageD©aMod–s +(); + +143 +$d©aMod–s + = +$this +-> + `g‘D©aMod–s +(); + +148 +$this +-> + `ü—‹SqlDbM­ +(); + +151 +$rg‘D©aba£ + = +$this +-> + `g‘T¬g‘D©aba£ +(); + +153 +$g’”©ÜCÚfig + = +$this +-> + `g‘G’”©ÜCÚfig +(); + +155 +$bužd”CÏzz + = +$g’”©ÜCÚfig +-> + `g‘Bužd”CÏs¢ame +('ddl'); + +157 + `fܗch + ( +$d©aMod–s + +as + +$·ckage + => +$d©aMod– +) { + +159 + `fܗch + ( +$d©aMod– +-> + `g‘D©aba£s +(è +as + +$d©aba£ +) { + +162 + `ÿÎ_u£r_func +( + `¬¿y +( +$bužd”CÏzz +, 'reset')); + +165 ià(! +$this +-> +·ckageObjeùMod– +) { + +166 +$Çme + = +$d©aMod– +-> + `g‘Name +(); + +168 +$Çme + = ( +$·ckage + ? $package . '.' : '') . 'schema.xml'; + +171 +$outFže + = +$this +-> + `g‘M­³dFže +( +$Çme +); + +173 +$this +-> + `log +("Wr™šgØSQL fže: " . +$outFže +-> + `g‘P©h +()); + +176 +$ddl + = + `ÿÎ_u£r_func +( + `¬¿y +( +$bužd”CÏzz +, 'getDatabaseStartDDL')); + +178 + `fܗch + ( +$d©aba£ +-> + `g‘TabËs +(è +as + +$bË +) { + +180 ià(! +$bË +-> + `isSkSql +()) { + +181 +$bužd” + = +$g’”©ÜCÚfig +-> + `g‘CÚfigu»dBužd” +( +$bË +, 'ddl'); + +182 +$this +-> + `log +("\t+ " . +$bË +-> + `g‘Name +(è. " [bužd”: " . + `g‘_þass +( +$bužd” +) . "]"); + +183 +$ddl + .ð +$bužd” +-> + `bužd +(); + +184 + `fܗch + ( +$bužd” +-> + `g‘W¬nšgs +(è +as + +$w¬nšg +) { + +185 +$this +-> + `log +( +$w¬nšg +, +Projeù +:: +MSG_WARN +); + +188 +$this +-> + `log +("\ˆ+ (skpšgè" . +$bË +-> + `g‘Name +()); + +194 +$ddl + .ð + `ÿÎ_u£r_func +( + `¬¿y +( +$bužd”CÏzz +, 'getDatabaseEndDDL')); + +196 #v¬_dump( +$outFže +-> + `g‘AbsÞu‹P©h +()); + +198 + `fže_put_cڋÁs +( +$outFže +-> + `g‘AbsÞu‹P©h +(), +$ddl +); + +203 + } +} + +214 +´Ùeùed + +funùiÚ + + $·ckageD©aMod–s +() { + +216  +$·ckagedD©aMod–s +; + +218 ià( + `is_nuÎ +( +$·ckagedD©aMod–s +)) { + +220 +$d©aMod–s + = +$this +-> + `g‘D©aMod–s +(); + +221 +$d©aMod– + = + `¬¿y_shiá +( +$d©aMod–s +); + +222 +$·ckagedD©aMod–s + = + `¬¿y +(); + +224 +$¶©fÜm + = +$this +-> + `g‘G’”©ÜCÚfig +()-> + `g‘CÚfigu»dPÏtfÜm +(); + +226 + `fܗch + ( +$d©aMod– +-> + `g‘D©aba£s +(è +as + +$db +) { + +227 + `fܗch + ( +$db +-> + `g‘TabËs +(è +as + +$bË +) { + +228 +$·ckage + = +$bË +-> + `g‘Package +(); + +229 ià(! + `is£t +( +$·ckagedD©aMod–s +[ +$·ckage +])) { + +230 +$dbClÚe + = +$this +-> + `þÚeD©aba£ +( +$db +); + +231 +$dbClÚe +-> + `£tPackage +( +$·ckage +); + +232 +$ad + = +Ãw + + `AµD©a +( +$¶©fÜm +); + +233 +$ad +-> + `£tName +( +$d©aMod– +-> + `g‘Name +()); + +234 +$ad +-> + `addD©aba£ +( +$dbClÚe +); + +235 +$·ckagedD©aMod–s +[ +$·ckage +] = +$ad +; + +237 +$·ckagedD©aMod–s +[ +$·ckage +]-> + `g‘D©aba£ +( +$db +-> + `g‘Name +())-> + `addTabË +( +$bË +); + +242  +$·ckagedD©aMod–s +; + +243 + } +} + +245 +´Ùeùed + +funùiÚ + + $þÚeD©aba£ +( +$db +) { + +247 +$©Œibu‹s + = + `¬¿y + ( + +248 'Çme' => +$db +-> + `g‘Name +(), + +249 'ba£CÏss' => +$db +-> + `g‘Ba£CÏss +(), + +250 'ba£P“r' => +$db +-> + `g‘Ba£P“r +(), + +251 'deçuÉIdM‘hod' => +$db +-> + `g‘DeçuÉIdM‘hod +(), + +252 'deçuÉPhpNamšgM‘hod' => +$db +-> + `g‘DeçuÉPhpNamšgM‘hod +(), + +253 'deçuÉT¿n¦©eM‘hod' => +$db +-> + `g‘DeçuÉT¿n¦©eM‘hod +(), + +254 'h—vyIndexšg' => +$db +-> + `g‘H—vyIndexšg +(), + +257 +$þÚe + = +Ãw + + `D©aba£ +(); + +258 +$þÚe +-> + `lßdFromXML +( +$©Œibu‹s +); + +259  +$þÚe +; + +260 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelSchemaReverseTask.php + +1 +PrݖSchemaRev”£Task +:: +VALIDATORS_NONE +, + +158 'maxËngth' => +PrݖSchemaRev”£Task +:: +VALIDATORS_MAXLENGTH +, + +159 'maxv®ue' => +PrݖSchemaRev”£Task +:: +VALIDATORS_MAXVALUE +, + +160 'ty³' => +PrݖSchemaRev”£Task +:: +VALIDATORS_TYPE +, + +161 '»quœed' => +PrݖSchemaRev”£Task +:: +VALIDATORS_REQUIRED +, + +162 'unique' => +PrݖSchemaRev”£Task +:: +VALIDATORS_UNIQUE +, + +163 '®l' => +PrݖSchemaRev”£Task +:: +VALIDATORS_ALL +, + +171  +´Ùeùed + + m$v®id©ÜMes§ges + = +¬¿y + ( + +172 'maxËngth' => +¬¿y + ( + +174 'v¬' => +¬¿y +('colName', 'value') + +176 'maxv®ue' => +¬¿y + ( + +178 'v¬' => +¬¿y +('colName', 'value') + +180 'ty³' => +¬¿y + ( + +182 'v¬' => +¬¿y +('colName', 'value') + +184 '»quœed' => +¬¿y + ( + +186 'v¬' => +¬¿y +('colName') + +188 'unique' => +¬¿y + ( + +190 'v¬' => +¬¿y +('colName', 'tableName') + +199 +public + +funùiÚ + + $g‘DbSchema +() + +201  +$this +-> +dbSchema +; + +209 +public + +funùiÚ + + $£tDbSchema +( +$dbSchema +) + +211 +$this +-> +dbSchema + = +$dbSchema +; + +212 + } +} + +219 +public + +funùiÚ + + $g‘DbEncodšg +( +$v +) + +221  +$this +-> +dbEncodšg +; + +222 + } +} + +229 +public + +funùiÚ + + $£tDbEncodšg +( +$v +) + +231 +$this +-> +dbEncodšg + = +$v +; + +232 + } +} + +239 +public + +funùiÚ + + $g‘D©aba£Name +() + +241  +$this +-> +d©aba£Name +; + +242 + } +} + +251 +public + +funùiÚ + + $£tD©aba£Name +( +$v +) + +253 +$this +-> +d©aba£Name + = +$v +; + +254 + } +} + +261 +public + +funùiÚ + + $£tOuutFže +( +PhšgFže + +$v +) + +263 +$this +-> +xmlSchema + = +$v +; + +264 + } +} + +271 +public + +funùiÚ + + $£tSamePhpName +( +$v +) + +273 +$this +-> +§mePhpName + = +$v +; + +274 + } +} + +281 +public + +funùiÚ + + $£tAddV’dÜInfo +( +$v +) + +283 +$this +-> +addV’dÜInfo + = ( +boޗn +è +$v +; + +284 + } +} + +292 +public + +funùiÚ + + $£tAddV®id©Üs +( +$v +) + +294 +$v®idKeys + = + `¬¿y_keys +( +£lf +:: +$v®id©ÜB™M­ +); + +297 +$v + = + `¡¹Þow” +($v); + +299 +$b™s + = +£lf +:: +VALIDATORS_NONE +; + +301 +$ex´s + = + `ex¶ode +(',', +$v +); + +302 + `fܗch + ( +$ex´s + +as + +$ex´ +) { + +303 +$ex´ + = + `Œim +($expr); + +304 if(! + `em±y +( +$ex´ +)) { + +305 ià(! + `is£t +( +£lf +:: +$v®id©ÜB™M­ +[ +$ex´ +])) { + +306 +throw + +Ãw + + `BuždExû±iÚ +("UÇbˁؚ‹½»ˆv®id©Ü iÀex´essiÚ ('$v'): " . +$ex´ +); + +308 +$b™s + |ð +£lf +:: +$v®id©ÜB™M­ +[ +$ex´ +]; + +312 +$this +-> +v®id©ÜB™s + = +$b™s +; + +313 + } +} + +321 +´Ùeùed + +funùiÚ + + $isV®id©ÜRequœed +( +$ty³ +) + +323  (( +$this +-> +v®id©ÜB™s + & +$ty³ +) === $type); + +324 + } +} + +331 +public + +funùiÚ + + $isSamePhpName +() + +333  +$this +-> +§mePhpName +; + +334 + } +} + +339 +public + +funùiÚ + + $maš +() + +341 ià(! +$this +-> + `g‘D©aba£Name +()) { + +342 +throw + +Ãw + + `BuždExû±iÚ +("d©aba£Nam©Œibu‹ i »quœed fÜ schem¨»v”£ƒngš“ršg", +$this +-> + `g‘LoÿtiÚ +()); + +349 +$this +-> +doc + = +Ãw + + `DOMDocum’t +('1.0', 'utf-8'); + +350 +$this +-> +doc +-> +fÜm©Ouut + = +Œue +; + +352 +$this +-> +doc +-> + `­³ndChžd +($this->doc-> + `ü—‹Comm’t +("Autog’”©ed by ". + `g‘_þass +($this)." class.")); + +354 +Œy + { + +356 +$d©aba£ + = +$this +-> + `buždMod– +(); + +358 ià( +$this +-> +v®id©ÜB™s + !=ð +£lf +:: +VALIDATORS_NONE +) { + +359 +$this +-> + `addV®id©Üs +( +$d©aba£ +); + +362 +$d©aba£ +-> + `­³ndXml +( +$this +-> +doc +); + +364 +$this +-> + `log +("Wr™šg XMLØfže: " . $this-> +xmlSchema +-> + `g‘P©h +()); + +365 +$out + = +Ãw + + `FžeWr™” +( +$this +-> +xmlSchema +); + +366 +$xml¡r + = +$this +-> +doc +-> + `§veXML +(); + +367 +$out +-> + `wr™e +( +$xml¡r +); + +368 +$out +-> + `þo£ +(); + +370 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +371 +$this +-> + `log +("Th”wa ªƒ¼Ü buždšg XML from m‘ad©a: " . +$e +-> + `g‘Mes§ge +(), +Projeù +:: +MSG_ERR +); + +374 +$this +-> + `log +("Schema„everseƒngineering finished"); + +375 + } +} + +381 +´Ùeùed + +funùiÚ + + $g‘G’”©ÜCÚfig +() + +383 ià( +$this +-> +g’”©ÜCÚfig + ==ð +nuÎ +) { + +384 +$this +-> +g’”©ÜCÚfig + = +Ãw + + `G’”©ÜCÚfig +(); + +385 +$this +-> +g’”©ÜCÚfig +-> + `£tBuždPrݔt›s +($this-> + `g‘Projeù +()-> + `g‘Prݔt›s +()); + +387  +$this +-> +g’”©ÜCÚfig +; + +388 + } +} + +394 +´Ùeùed + +funùiÚ + + $buždMod– +() + +396 +$cÚfig + = +$this +-> + `g‘G’”©ÜCÚfig +(); + +397 +$cÚ + = +$this +-> + `g‘CÚÃùiÚ +(); + +399 +$d©aba£ + = +Ãw + + `D©aba£ +( +$this +-> + `g‘D©aba£Name +()); + +400 +$d©aba£ +-> + `£tPÏtfÜm +( +$cÚfig +-> + `g‘CÚfigu»dPÏtfÜm +( +$cÚ +)); + +403 +$d©aba£ +-> + `£tDeçuÉIdM‘hod +( +IDM‘hod +:: +NATIVE +); + +405 +$·r£r + = +$cÚfig +-> + `g‘CÚfigu»dSchemaP¬£r +( +$cÚ +); + +407 +$·r£r +-> + `·r£ +( +$d©aba£ +); + +409  +$d©aba£ +; + +410 + } +} + +429 +´Ùeùed + +funùiÚ + + $addV®id©Üs +( +D©aba£ + +$d©aba£ +) + +432 +$¶©fÜm + = +$this +-> + `g‘G’”©ÜCÚfig +()-> + `g‘CÚfigu»dPÏtfÜm +(); + +434 + `fܗch + ( +$d©aba£ +-> + `g‘TabËs +(è +as + +$bË +) { + +436 +$£t + = +Ãw + + `PrݖSchemaRev”£_V®id©ÜS‘ +(); + +438 + `fܗch + ( +$bË +-> + `g‘CÞumns +(è +as + +$cÞ +) { + +440 ià( +$cÞ +-> + `isNÙNuÎ +(è&& +$this +-> + `isV®id©ÜRequœed +( +£lf +:: +VALIDATORS_REQUIRED +)) { + +441 +$v®id©Ü + = +$£t +-> + `g‘V®id©Ü +( +$cÞ +); + +442 +$v®id©Ü +-> + `addRuË +( +$this +-> + `g‘V®id©ÜRuË +( +$cÞ +, 'required')); + +445 ià( + `š_¬¿y +( +$cÞ +-> + `g‘Ty³ +(), + `¬¿y +( +PrݖTy³s +:: +CHAR +, PrݖTy³s:: +VARCHAR +, PrݖTy³s:: +LONGVARCHAR +)) + +446 && +$cÞ +-> + `g‘Size +(è&& +$this +-> + `isV®id©ÜRequœed +( +£lf +:: +VALIDATORS_MAXLENGTH +)) { + +447 +$v®id©Ü + = +$£t +-> + `g‘V®id©Ü +( +$cÞ +); + +448 +$v®id©Ü +-> + `addRuË +( +$this +-> + `g‘V®id©ÜRuË +( +$cÞ +, 'maxL’gth', $cÞ-> + `g‘Size +())); + +451 ià( +$cÞ +-> + `isNum”icTy³ +(è&& +$this +-> + `isV®id©ÜRequœed +( +£lf +:: +VALIDATORS_MAXVALUE +)) { + +452 +$this +-> + `log +("WARNING: maxV®uv®id©Ü‡dded fÜ cÞumÀ". +$cÞ +-> + `g‘Name +().". You wžÈhavtØadju¡hsizv®umªu®ly.", +Projeù +:: +MSG_WARN +); + +453 +$v®id©Ü + = +$£t +-> + `g‘V®id©Ü +( +$cÞ +); + +454 +$v®id©Ü +-> + `addRuË +( +$this +-> + `g‘V®id©ÜRuË +( +$cÞ +, 'maxSize', 'REPLACEME')); + +457 ià( +$cÞ +-> + `isPhpPrim™iveTy³ +(è&& +$this +-> + `isV®id©ÜRequœed +( +£lf +:: +VALIDATORS_TYPE +)) { + +458 +$v®id©Ü + = +$£t +-> + `g‘V®id©Ü +( +$cÞ +); + +459 +$v®id©Ü +-> + `addRuË +( +$this +-> + `g‘V®id©ÜRuË +( +$cÞ +, 'ty³', $cÞ-> + `g‘PhpTy³ +())); + +464 + `fܗch + ( +$bË +-> + `g‘Uniûs +(è +as + +$unique +) { + +465 +$cÞÇmes + = +$unique +-> + `g‘CÞumns +(); + +466 ià( + `couÁ +( +$cÞÇmes +) == 1) { + +467 +$cÞ + = +$bË +-> + `g‘CÞumn +( +$cÞÇmes +[0]); + +468 +$v®id©Ü + = +$£t +-> + `g‘V®id©Ü +( +$cÞ +); + +469 +$v®id©Ü +-> + `addRuË +( +$this +-> + `g‘V®id©ÜRuË +( +$cÞ +, 'unique')); + +473 + `fܗch + ( +$£t +-> + `g‘V®id©Üs +(è +as + +$v®id©Ü +) { + +474 +$bË +-> + `addV®id©Ü +( +$v®id©Ü +); + +479 + } +} + +488 +´Ùeùed + +funùiÚ + + $g‘V®id©ÜRuË +( +CÞumn + +$cÞumn +, +$ty³ +, +$v®ue + = +nuÎ +) + +490 +$ruË + = +Ãw + + `RuË +(); + +491 +$ruË +-> + `£tName +( +$ty³ +); + +492 ià( +$v®ue + !=ð +nuÎ +) { + +493 +$ruË +-> + `£tV®ue +( +$v®ue +); + +495 +$ruË +-> + `£tMes§ge +( +$this +-> + `g‘RuËMes§ge +( +$cÞumn +, +$ty³ +, +$v®ue +)); + +496  +$ruË +; + +497 + } +} + +506 +´Ùeùed + +funùiÚ + + $g‘RuËMes§ge +( +CÞumn + +$cÞumn +, +$ty³ +, +$v®ue +) + +509 +$cÞName + = +$cÞumn +-> + `g‘Name +(); + +510 +$bËName + = +$cÞumn +-> + `g‘TabË +()-> + `g‘Name +(); + +511 +$msg + = +£lf +:: +$v®id©ÜMes§ges +[ + `¡¹Þow” +( +$ty³ +)]; + +512 +$tmp + = + `com·ù +( +$msg +['var']); + +513 + `¬¿y_unshiá +( +$tmp +, +$msg +['msg']); + +514 +$msg + = + `ÿÎ_u£r_func_¬¿y +('¥rštf', +$tmp +); + +515  +$msg +; + +516 + } +} + +524 þas  + cPrݖSchemaRev”£_V®id©ÜS‘ + { + +531 +´iv©e + + m$v®id©Üs + = +¬¿y +(); + +538 +public + +funùiÚ + + $g‘V®id©Ü +( +CÞumn + +$cÞumn +) + +540 +$key + = +$cÞumn +-> + `g‘Name +(); + +541 ià(! + `is£t +( +$this +-> +v®id©Üs +[ +$key +])) { + +542 +$this +-> +v®id©Üs +[ +$key +] = +Ãw + + `V®id©Ü +(); + +543 +$this +-> +v®id©Üs +[ +$key +]-> + `£tCÞumn +( +$cÞumn +); + +545  +$this +-> +v®id©Üs +[ +$key +]; + +552 +public + +funùiÚ + + $g‘V®id©Üs +() + +554  +$this +-> +v®id©Üs +; + +555 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/BuildPropelGenPEARPackageTask.php + +1 = 1.6.0) in ordero create‡ PEAR…ackage.xml file."); + +53 +´iv©e + +funùiÚ + + $£tO±iÚs +( +$pkg +){ + +55 +$ÝtiÚs +['baseinstalldir'] = 'propel'; + +56 +$ÝtiÚs +['·ckagedœeùÜy'] = +$this +-> +dœ +-> + `g‘AbsÞu‹P©h +(); + +58 ià( + `em±y +( +$this +-> +fže£ts +)) { + +59 +throw + +Ãw + + `BuždExû±iÚ +("You must use‡ ago specifyhe fileso include inhe…ackage.xml"); + +62 +$ÝtiÚs +['filelistgenerator'] = 'Fileset'; + +65 +$ÝtiÚs +['phšg_´ojeù'] = +$this +-> + `g‘Projeù +(); + +66 +$ÝtiÚs +['phšg_fže£ts'] = +$this +-> +fže£ts +; + +68 ià( +$this +-> +·ckageFže + !=ð +nuÎ +) { + +70 +$f + = +Ãw + + `PhšgFže +( +$this +-> +·ckageFže +-> + `g‘AbsÞu‹P©h +()); + +71 +$ÝtiÚs +['·ckagefže'] = +$f +-> + `g‘Name +(); + +73 +$ÝtiÚs +['ouutdœeùÜy'] = +$f +-> + `g‘P¬’t +(è. +DIRECTORY_SEPARATOR +; + +74 +$this +-> + `log +("C»©šg…ackagfže: " . +$f +-> + `g‘P©h +(), +Projeù +:: +MSG_INFO +); + +76 +$this +-> + `log +("C»©šg [deçuÉ]…ackage.xmÈfžš ba£ dœeùÜy.", +Projeù +:: +MSG_INFO +); + +80 +$ÝtiÚs +['š¡®Ëxû±iÚs'] = + `¬¿y +( 'pear/pear-propel-gen' => '/', + +86 +$ÝtiÚs +['dœ_rÞes'] = + `¬¿y +( 'projects' => 'data', + +91 +$ÝtiÚs +['exû±iÚs'] = + `¬¿y +( 'pear/pear-propel-gen.bat' => 'script', + +98 +$pkg +-> + `£tO±iÚs +( +$ÝtiÚs +); + +100 + } +} + +106 +public + +funùiÚ + + $maš +() { + +108 ià( +$this +-> +dœ + ==ð +nuÎ +) { + +109 +throw + +Ãw + + `BuždExû±iÚ +("You must specifyhe \"dir\"‡ttribute for PEAR…ackageask."); + +112 ià( +$this +-> +v”siÚ + ==ð +nuÎ +) { + +113 +throw + +Ãw + + `BuždExû±iÚ +("You must specifyhe \"version\"‡ttribute for PEAR…ackageask."); + +116 +$·ckage + = +Ãw + + `PEAR_PackageFžeMªag”2 +(); + +118 +$this +-> + `£tO±iÚs +( +$·ckage +); + +121 +$·ckage +-> + `£tPackage +('propel_generator'); + +122 +$·ckage +-> + `£tSumm¬y +('Generator component ofhe Propel PHP object…ersistence†ayer'); + +123 +$·ckage +-> + `£tDesütiÚ +('Propel is‡n object…ersistence†ayer for PHP5 based on Apache Torque. This…ackage…rovideshe generatorƒnginehat builds PHP classes‡nd SQL DDL based on‡n XML„epresentation of your data model.'); + +124 +$·ckage +-> + `£tChªÃl +('pear.propelorm.org'); + +125 +$·ckage +-> + `£tPackageTy³ +('php'); + +127 +$·ckage +-> + `£tR–—£V”siÚ +( +$this +-> +v”siÚ +); + +128 +$·ckage +-> + `£tAPIV”siÚ +( +$this +-> +v”siÚ +); + +130 +$·ckage +-> + `£tR–—£Sbž™y +( +$this +-> +¡©e +); + +131 +$·ckage +-> + `£tAPISbž™y +( +$this +-> +¡©e +); + +133 +$·ckage +-> + `£tNÙes +( +$this +-> +nÙes +); + +135 +$·ckage +-> + `£tLiûn£ +('LGPL', 'http://www.gnu.org/licenses/lgpl.html'); + +138 +$·ckage +-> + `addMašš” +('lead', 'hans', 'Hans Lellelid', 'hans@xmpl.org'); + +139 +$·ckage +-> + `addMašš” +('lead', 'david', 'David Zuelke', 'dz@bitxtender.com'); + +140 +$·ckage +-> + `addMašš” +('lead', 'francois', 'Francois Zaninotto', 'fzaninotto@[gmail].com'); + +154 +$·ckage +-> + `addR–—£ +(); + +155 +$·ckage +-> + `£tOSIn¡®lCÚd™iÚ +('windows'); + +156 +$·ckage +-> + `addIn¡®lAs +('pear/pear-propel-gen.bat', 'propel-gen.bat'); + +157 +$·ckage +-> + `addIgnÜeToR–—£ +('pear/pear-propel-gen'); + +160 +$·ckage +-> + `addR–—£ +(); + +161 +$·ckage +-> + `addIn¡®lAs +('pear/pear-propel-gen', 'propel-gen'); + +162 +$·ckage +-> + `addIgnÜeToR–—£ +('pear/pear-propel-gen.bat'); + +166 +$·ckage +-> + `£tPhpD• +('5.2.4'); + +167 +$·ckage +-> + `£tP—rš¡®ËrD• +('1.4.0'); + +170 +$·ckage +-> + `addPackageD•W™hChªÃl +( 'required', 'phing', 'pear.phing.info', '2.3.0'); + +172 +$·ckage +-> + `addEx‹nsiÚD• +('required', 'pdo'); + +173 +$·ckage +-> + `addEx‹nsiÚD• +('required', 'xml'); + +174 +$·ckage +-> + `addEx‹nsiÚD• +('required', 'xsl'); + +177 +$·ckage +-> + `addR•Ïûm’t +('Phing.php', 'pear-config', '@DATA-DIR@', 'data_dir'); + +178 +$·ckage +-> + `addR•Ïûm’t +('pear/pear-propel-gen.bat', 'pear-config', '@PHP-BIN@', 'php_bin'); + +179 +$·ckage +-> + `addR•Ïûm’t +('pear/pear-propel-gen.bat', 'pear-config', '@BIN-DIR@', 'bin_dir'); + +180 +$·ckage +-> + `addR•Ïûm’t +('pear/pear-propel-gen.bat', 'pear-config', '@PEAR-DIR@', 'php_dir'); + +181 +$·ckage +-> + `addR•Ïûm’t +('pear/pear-propel-gen.bat', 'pear-config', '@DATA-DIR@', 'data_dir'); + +183 +$·ckage +-> + `addR•Ïûm’t +('pear/pear-propel-gen', 'pear-config', '@PHP-BIN@', 'php_bin'); + +184 +$·ckage +-> + `addR•Ïûm’t +('pear/pear-propel-gen', 'pear-config', '@BIN-DIR@', 'bin_dir'); + +185 +$·ckage +-> + `addR•Ïûm’t +('pear/pear-propel-gen', 'pear-config', '@PEAR-DIR@', 'php_dir'); + +186 +$·ckage +-> + `addR•Ïûm’t +('pear/pear-propel-gen', 'pear-config', '@DATA-DIR@', 'data_dir'); + +188 +$·ckage +-> + `addR•Ïûm’t +('pear/pear-build.xml', 'pear-config', '@PHP-BIN@', 'php_bin'); + +189 +$·ckage +-> + `addR•Ïûm’t +('pear/pear-build.xml', 'pear-config', '@BIN-DIR@', 'bin_dir'); + +190 +$·ckage +-> + `addR•Ïûm’t +('pear/pear-build.xml', 'pear-config', '@PEAR-DIR@', 'php_dir'); + +191 +$·ckage +-> + `addR•Ïûm’t +('pear/pear-build.xml', 'pear-config', '@DATA-DIR@', 'data_dir'); + +196 +$·ckage +-> + `g’”©eCڋÁs +(); + +198 +$e + = +$·ckage +-> + `wr™ePackageFže +(); + +200 ià( +PEAR +:: + `isE¼Ü +( +$e +)) { + +201 +throw + +Ãw + + `BuždExû±iÚ +("UÇbˁØwr™·ckagfže.",‚ew + `Exû±iÚ +( +$e +-> + `g‘Mes§ge +())); + +204 + } +} + +210 +public + +funùiÚ + + $g‘FžeS‘s +() { + +211  +$this +-> +fže£ts +; + +212 + } +} + +223 +funùiÚ + + $ü—‹FžeS‘ +() { + +224 +$num + = + `¬¿y_push +( +$this +-> +fže£ts +, +Ãw + + `FžeS‘ +()); + +225  +$this +-> +fže£ts +[ +$num +-1]; + +226 + } +} + +233 +public + +funùiÚ + + $£tV”siÚ +( +$v +){ + +234 +$this +-> +v”siÚ + = +$v +; + +235 + } +} + +242 +public + +funùiÚ + + $£tS‹ +( +$v +) { + +243 +$this +-> +¡©e + = +$v +; + +244 + } +} + +251 +public + +funùiÚ + + $£tNÙes +( +$v +) { + +252 +$this +-> +nÙes + = +$v +; + +253 + } +} + +259 +public + +funùiÚ + + $£tDœ +( +PhšgFže + +$f +) { + +260 +$this +-> +dœ + = +$f +; + +261 + } +} + +266 +public + +funùiÚ + + $£tDe¡Fže +( +PhšgFže + +$f +) { + +267 +$this +-> +·ckageFže + = +$f +; + +268 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/Propel.php + +1 +g‘P¬am‘”s +( +$ty³ +); + +360 +public +  +funùiÚ + + $£tLogg” +( +$logg” +) + +362 +£lf +:: +$logg” + = $logger; + +363 + } +} + +371 +public +  +funùiÚ + + $hasLogg” +() + +373  ( +£lf +:: +$logg” + !=ð +nuÎ +); + +374 + } +} + +381 +public +  +funùiÚ + + $logg” +() + +383  +£lf +:: +$logg” +; + +384 + } +} + +396 +public +  +funùiÚ + +log +( +$mes§ge +, +$Ëv– + = +£lf +:: +LOG_DEBUG +) + +398 ià( +£lf +:: +hasLogg” +()) { + +399 +$logg” + = +£lf +:: +logg” +(); + +400  + g$Ëv– +) { + +401  + g£lf +:: +LOG_EMERG +: + +402  +$logg” +-> +log +( +$mes§ge +, +$Ëv– +); + +403  + g£lf +:: +LOG_ALERT +: + +404  +$logg” +-> +®”t +( +$mes§ge +); + +405  + g£lf +:: +LOG_CRIT +: + +406  +$logg” +-> +ü™ +( +$mes§ge +); + +407  + g£lf +:: +LOG_ERR +: + +408  +$logg” +-> +”r +( +$mes§ge +); + +409  + g£lf +:: +LOG_WARNING +: + +410  +$logg” +-> +w¬nšg +( +$mes§ge +); + +411  + g£lf +:: +LOG_NOTICE +: + +412  +$logg” +-> +nÙiû +( +$mes§ge +); + +413  + g£lf +:: +LOG_INFO +: + +414  +$logg” +-> +šfo +( +$mes§ge +); + +416  +$logg” +-> +debug +( +$mes§ge +); + +419  + gŒue +; + +434 +public +  +funùiÚ + + $g‘D©aba£M­ +( +$Çme + = +nuÎ +) + +436 ià( +$Çme + ==ð +nuÎ +) { + +437 +$Çme + = +£lf +:: + `g‘DeçuÉDB +(); + +438 ià( +$Çme + ==ð +nuÎ +) { + +439 +throw + +Ãw + + `PrݖExû±iÚ +("DatabaseMap‚ame is‚ull!"); + +443 ià(! + `is£t +( +£lf +:: +$dbM­s +[ +$Çme +])) { + +444 +$þazz + = +£lf +:: +$d©aba£M­CÏss +; + +445 +£lf +:: +$dbM­s +[ +$Çme +] = +Ãw + + `$þazz +($name); + +448  +£lf +:: +$dbM­s +[ +$Çme +]; + +449 + } +} + +457 +public +  +funùiÚ + + $£tD©aba£M­ +( +$Çme +, +D©aba£M­ + +$m­ +) + +459 ià( +$Çme + ==ð +nuÎ +) { + +460 +$Çme + = +£lf +:: + `g‘DeçuÉDB +(); + +462 +£lf +:: +$dbM­s +[ +$Çme +] = +$m­ +; + +463 + } +} + +470 +public +  +funùiÚ + + $£tFÜûMa¡”CÚÃùiÚ +( +$b™ +) + +472 +£lf +:: +$fÜûMa¡”CÚÃùiÚ + = ( +boÞ +è +$b™ +; + +473 + } +} + +480 +public +  +funùiÚ + + $g‘FÜûMa¡”CÚÃùiÚ +() + +482  +£lf +:: +$fÜûMa¡”CÚÃùiÚ +; + +483 + } +} + +492 +public +  +funùiÚ + +£tCÚÃùiÚ +( +$Çme +, +PrݖPDO + +$cÚ +, +$mode + = +Prݖ +:: +CONNECTION_WRITE +) + +494 ià( +$Çme + ==ð +nuÎ +) { + +495 +$Çme + = +£lf +:: +g‘DeçuÉDB +(); + +497 ià( + g$mode + =ð +Prݖ +:: +CONNECTION_READ +) { + +498 +£lf +:: +$cÚÃùiÚM­ +[ +$Çme +]['¦ave'] = +$cÚ +; + +500 + g£lf +:: +$cÚÃùiÚM­ +[ +$Çme +]['ma¡”'] = +$cÚ +; + +514 +public +  +funùiÚ + +g‘CÚÃùiÚ +( +$Çme + = +nuÎ +, +$mode + = +Prݖ +:: +CONNECTION_WRITE +) + +516 ià( +$Çme + ==ð +nuÎ +) { + +517 +$Çme + = +£lf +:: +g‘DeçuÉDB +(); + +524 ià( + g$mode + !ð +Prݖ +:: +CONNECTION_READ + || +£lf +:: +$fÜûMa¡”CÚÃùiÚ + || ( +is£t +(£lf:: +$cÚÃùiÚM­ +[ +$Çme +]['¦ave']è&& s–f::$cÚÃùiÚM­[$Çme]['¦ave'] ==ð +çl£ +)) { + +525 ià(! +is£t +( +£lf +:: +$cÚÃùiÚM­ +[ +$Çme +]['master'])) { + +527 +$cÚ·¿ms + = +is£t +( +£lf +:: +$cÚfigu¿tiÚ +['d©asourûs'][ +$Çme +]['cÚÃùiÚ']è? s–f::$cÚfigu¿tiÚ['d©asourûs'][$Çme]['cÚÃùiÚ'] : +nuÎ +; + +528 ià( +em±y +( +$cÚ·¿ms +)) { + +529 +throw + +Ãw + +PrݖExû±iÚ +('NØcÚÃùiÚ infÜm©iÚ iÀyou¸ruÁimcÚfigu¿tiÚ fžfÜ d©asourû ['. +$Çme +.']'); + +532 + g$cÚ + = +Prݖ +:: +š™CÚÃùiÚ +( +$cÚ·¿ms +, +$Çme +); + +533 + g£lf +:: +$cÚÃùiÚM­ +[ +$Çme +]['ma¡”'] = +$cÚ +; + +536  + g£lf +:: +$cÚÃùiÚM­ +[ +$Çme +]['master']; + +540 ià(! +is£t +( +£lf +:: +$cÚÃùiÚM­ +[ +$Çme +]['slave'])) { + +543 +$¦avecÚfigs + = +is£t +( +£lf +:: +$cÚfigu¿tiÚ +['d©asourûs'][ +$Çme +]['¦aves']è? s–f::$cÚfigu¿tiÚ['d©asourûs'][$Çme]['¦aves'] : +nuÎ +; + +545 ià( +em±y +( +$¦avecÚfigs +)) { + +546 + g£lf +:: +$cÚÃùiÚM­ +[ +$Çme +]['¦ave'] = +çl£ +; + +547  + g£lf +:: +g‘CÚÃùiÚ +( +$Çme +, +Prݖ +:: +CONNECTION_WRITE +); + +549 ià( +is£t +( +$¦avecÚfigs +['connection']['dsn'])) { + +550 + g$cÚ·¿ms + = +$¦avecÚfigs +['connection']; + +552 + g$¿ndkey + = +¬¿y_¿nd +( +$¦avecÚfigs +['connection']); + +553 + g$cÚ·¿ms + = +$¦avecÚfigs +['cÚÃùiÚ'][ +$¿ndkey +]; + +554 ià( +em±y +( +$cÚ·¿ms +)) { + +555 +throw + +Ãw + +PrݖExû±iÚ +('NØcÚÃùiÚ infÜm©iÚ iÀyou¸ruÁimcÚfigu¿tiÚ fžfÜ SLAVE ['. +$¿ndkey +.']Ød©asourû ['. +$Çme +.']'); + +560 + g$cÚ + = +Prݖ +:: +š™CÚÃùiÚ +( +$cÚ·¿ms +, +$Çme +); + +561 + g£lf +:: +$cÚÃùiÚM­ +[ +$Çme +]['¦ave'] = +$cÚ +; + +566  + g£lf +:: +$cÚÃùiÚM­ +[ +$Çme +]['slave']; + +584 +public +  +funùiÚ + +š™CÚÃùiÚ +( +$cÚ·¿ms +, +$Çme +, +$deçuÉCÏss + = +Prݖ +:: +CLASS_PROPEL_PDO +) + +587 +$d¢ + = +$cÚ·¿ms +['dsn']; + +588 ià( + g$d¢ + ==ð +nuÎ +) { + +589 +throw + +Ãw + +PrݖExû±iÚ +('NØd¢ s³cif›d iÀyou¸cÚÃùiڅ¬am‘” fÜ d©asourû ['. +$Çme +.']'); + +592 ià( +is£t +( +$cÚ·¿ms +['þas¢ame']è&& ! +em±y +($conparams['classname'])) { + +593 + g$þas¢ame + = +$cÚ·¿ms +['classname']; + +594 ià(! +þass_exi¡s +( +$þas¢ame +)) { + +595 +throw + +Ãw + +PrݖExû±iÚ +('UÇbˁØlßd s³cif›d PDO subþass: ' . +$þas¢ame +); + +598 + g$þas¢ame + = +$deçuÉCÏss +; + +601 + g$u£r + = +is£t +( +$cÚ·¿ms +['u£r']è? $cÚ·¿ms['u£r'] : +nuÎ +; + +602 + g$·sswÜd + = +is£t +( +$cÚ·¿ms +['·sswÜd']è? $cÚ·¿ms['·sswÜd'] : +nuÎ +; + +606 + g$driv”_ÝtiÚs + = +¬¿y +(); + +607 iàÐ +is£t +( +$cÚ·¿ms +['ÝtiÚs']è&& +is_¬¿y +($conparams['options']) ) { + +608 + gŒy + { + +609 + g£lf +:: +´oûssDriv”O±iÚs +Ð +$cÚ·¿ms +['ÝtiÚs'], +$driv”_ÝtiÚs + ); + +610 } +ÿtch + ( +PrݖExû±iÚ + +$e +) { + +611 +throw + +Ãw + +PrݖExû±iÚ +('E¼Ü…roûssšg driv” o±iÚ fÜ d©asourû ['. +$Çme +.']', +$e +); + +615 + gŒy + { + +616 + g$cÚ + = +Ãw + +$þas¢ame +( +$d¢ +, +$u£r +, +$·sswÜd +, +$driv”_ÝtiÚs +); + +617 + g$cÚ +-> +£tA‰ribu‹ +( +PDO +:: +ATTR_ERRMODE +, PDO:: +ERRMODE_EXCEPTION +); + +618 } +ÿtch + ( +PDOExû±iÚ + +$e +) { + +619 +throw + +Ãw + +PrݖExû±iÚ +("UÇbˁØÝ’ PDO cÚÃùiÚ", +$e +); + +624 ià( +is£t +( +$cÚ·¿ms +['©Œibu‹s']è&& +is_¬¿y +($conparams['attributes'])) { + +625 + g$©Œibu‹s + = +¬¿y +(); + +626 + gŒy + { + +627 + g£lf +:: +´oûssDriv”O±iÚs +Ð +$cÚ·¿ms +['©Œibu‹s'], +$©Œibu‹s + ); + +628 } +ÿtch + ( +PrݖExû±iÚ + +$e +) { + +629 +throw + +Ãw + +PrݖExû±iÚ +('E¼Ü…roûssšg cÚÃùiڇ‰ribu‹ fÜ d©asourû ['. +$Çme +.']', +$e +); + +631 +fܗch + ( +$©Œibu‹s + +as + +$key + => +$v®ue +) { + +632 +$cÚ +-> +£tA‰ribu‹ +( +$key +, +$v®ue +); + +637 + g$ad­‹r + = +£lf +:: +g‘DB +( +$Çme +); + +638 + g$ad­‹r +-> +š™CÚÃùiÚ +( +$cÚ +, +is£t +( +$cÚ·¿ms +['£‰šgs']è&& +is_¬¿y +($cÚ·¿ms['£‰šgs']è? $cÚ·¿ms['£‰šgs'] : +¬¿y +()); + +640  + g$cÚ +; + +653 +´iv©e +  +funùiÚ + + $´oûssDriv”O±iÚs +( +$sourû +, & +$wr™e_to +) + +655 + `fܗch + ( +$sourû + +as + +$ÝtiÚ + => +$ÝtiÚd©a +) { + +656 ià( + `is_¡ršg +( +$ÝtiÚ +è&& + `¡½os +($ÝtiÚ, '::'è!=ð +çl£ +) { + +657 +$key + = +$ÝtiÚ +; + +658 } + `–£if + ( + `is_¡ršg +( +$ÝtiÚ +)) { + +659 +$key + = 'PrݖPDO::' . +$ÝtiÚ +; + +661 ià(! + `defšed +( +$key +)) { + +662 +throw + +Ãw + + `PrݖExû±iÚ +("Inv®id PDO o±iÚ/©Œibu‹‚am¥ecif›d: ". +$key +); + +664 +$key + = + `cÚ¡ªt +($key); + +666 +$v®ue + = +$ÝtiÚd©a +['value']; + +667 ià( + `is_¡ršg +( +$v®ue +è&& + `¡½os +($v®ue, '::'è!=ð +çl£ +) { + +668 ià(! + `defšed +( +$v®ue +)) { + +669 +throw + +Ãw + + `PrݖExû±iÚ +("Inv®id PDO o±iÚ/©Œibu‹ v®u¥ecif›d: ". +$v®ue +); + +671 +$v®ue + = + `cÚ¡ªt +($value); + +674 +$wr™e_to +[ +$key +] = +$v®ue +; + +676 + } +} + +687 +public +  +funùiÚ + + $g‘DB +( +$Çme + = +nuÎ +) + +689 ià( +$Çme + ==ð +nuÎ +) { + +690 +$Çme + = +£lf +:: + `g‘DeçuÉDB +(); + +693 ià(! + `is£t +( +£lf +:: +$ad­‹rM­ +[ +$Çme +])) { + +694 ià(! + `is£t +( +£lf +:: +$cÚfigu¿tiÚ +['d©asourûs'][ +$Çme +]['adapter'])) { + +695 +throw + +Ãw + + `PrݖExû±iÚ +("UÇbˁØfšd‡d­‹¸fÜ d©asourû [" . +$Çme + . "]."); + +697 +$db + = +DBAd­‹r +:: + `çùÜy +( +£lf +:: +$cÚfigu¿tiÚ +['d©asourûs'][ +$Çme +]['adapter']); + +699 +£lf +:: +$ad­‹rM­ +[ +$Çme +] = +$db +; + +702  +£lf +:: +$ad­‹rM­ +[ +$Çme +]; + +703 + } +} + +711 +public +  +funùiÚ + + $£tDB +( +$Çme +, +DBAd­‹r + +$ad­‹r +) + +713 ià( +$Çme + ==ð +nuÎ +) { + +714 +$Çme + = +£lf +:: + `g‘DeçuÉDB +(); + +716 +£lf +:: +$ad­‹rM­ +[ +$Çme +] = +$ad­‹r +; + +717 + } +} + +724 +public +  +funùiÚ + + $g‘DeçuÉDB +() + +726 ià( +£lf +:: +$deçuÉDBName + ==ð +nuÎ +) { + +728 +£lf +:: +$deçuÉDBName + = + `is£t +(£lf:: +$cÚfigu¿tiÚ +['d©asourûs']['deçuÉ']è? s–f::$cÚfigu¿tiÚ['d©asourûs']['deçuÉ'] : s–f:: +DEFAULT_NAME +; + +730  +£lf +:: +$deçuÉDBName +; + +731 + } +} + +739 +public +  +funùiÚ + + $þo£ +() + +741 + `fܗch + ( +£lf +:: +$cÚÃùiÚM­ + +as + +$idx + => +$cÚs +) { + +743 + `un£t +( +£lf +:: +$cÚÃùiÚM­ +[ +$idx +]); + +745 + } +} + +754 +public +  +funùiÚ + + $autÞßd +( +$þassName +) + +756 ià( + `is£t +( +£lf +:: +$autÞßdM­ +[ +$þassName +])) { + +757 + `»quœe +( +£lf +:: +$autÞßdM­ +[ +$þassName +]); + +758  +Œue +; + +760  +çl£ +; + +761 + } +} + +775 +public +  +funùiÚ + + $impÜtCÏss +( +$·th +) { + +778 ià(( +$pos + = + `¡¼pos +( +$·th +, '.')è==ð +çl£ +) { + +779 +$þass + = +$·th +; + +781 +$þass + = + `sub¡r +( +$·th +, +$pos + + 1); + +785 ià( + `þass_exi¡s +( +$þass +, +$u£AutÞßd += +Œue +)) { + +786  +$þass +; + +790 +$·th + = + `¡¹r +($·th, '.', +DIRECTORY_SEPARATOR +) . '.php'; + +793 +$»t + = + `šþude_Úû +( +$·th +); + +794 ià( +$»t + ==ð +çl£ +) { + +795 +throw + +Ãw + + `PrݖExû±iÚ +("UÇbˁØimp܈þass: " . +$þass + . " from " . +$·th +); + +799  +$þass +; + +800 + } +} + +809 +public +  +funùiÚ + + $£tD©aba£M­CÏss +( +$Çme +) + +811 +£lf +:: +$d©aba£M­CÏss + = +$Çme +; + +812 + } +} + +817 +public +  +funùiÚ + + $di§bËIn¡ªûPoޚg +() + +819 +£lf +:: +$š¡ªûPoޚgEÇbËd + = +çl£ +; + +820 + } +} + +825 +public +  +funùiÚ + + $’abËIn¡ªûPoޚg +() + +827 +£lf +:: +$š¡ªûPoޚgEÇbËd + = +Œue +; + +828 + } +} + +835 +public +  +funùiÚ + + $isIn¡ªûPoޚgEÇbËd +() + +837  +£lf +:: +$š¡ªûPoޚgEÇbËd +; + +838 + } +} + +841 +¥l_autÞßd_»gi¡” +( +¬¿y +('Propel', 'autoload')); + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/PropelException.php + +1 +ÿu£ + = +$ÿu£ +; + +53 +$this +-> +mes§ge + .ð" [w¿µed: " . +$ÿu£ +-> + `g‘Mes§ge +() ."]"; + +57 +funùiÚ + + $g‘Cau£ +() { + +58  +$this +-> +ÿu£ +; + +59 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/DBAdapter.php + +1 + `£tCh¬£t +( +$cÚ +, +$£‰šgs +['charset']['value']); + +103 ià( + `is£t +( +$£‰šgs +['qu”›s']è&& + `is_¬¿y +($settings['queries'])) { + +104 + `fܗch + ( +$£‰šgs +['qu”›s'] +as + +$qu”›s +) { + +105 + `fܗch + (( +¬¿y +) +$qu”›s + +as + +$qu”y +) { + +106 +$cÚ +-> + `exec +( +$qu”y +); + +110 + } +} + +122 +public + +funùiÚ + + $£tCh¬£t +( +PDO + +$cÚ +, +$ch¬£t +) + +124 +$cÚ +-> + `exec +("SET NAMES '" . +$ch¬£t + . "'"); + +125 + } +} + +133 +public + +ab¡¿ù + +funùiÚ + +toUµ”Ca£ +( +$š +); + +142 +public + +funùiÚ + + $g‘SŒšgD–im™” +() + +145 + } +} + +153 +public + +ab¡¿ù + +funùiÚ + +ignÜeCa£ +( +$š +); + +164 +public + +funùiÚ + + $ignÜeCa£InOrd”By +( +$š +) + +166  +$this +-> + `ignÜeCa£ +( +$š +); + +167 + } +} + +176 +public + +ab¡¿ù + +funùiÚ + +cÚÿtSŒšg +( +$s1 +, +$s2 +); + +186 +public + +ab¡¿ù + +funùiÚ + +subSŒšg +( +$s +, +$pos +, +$Ën +); + +194 +public + +ab¡¿ù + +funùiÚ + +¡rL’gth +( +$s +); + +202 +public + +funùiÚ + + $quÙeId’tif›r +( +$‹xt +) + +204  '"' . +$‹xt + . '"'; + +205 + } +} + +212 +public + +funùiÚ + + $quÙeId’tif›rTabË +( +$bË +) { + +213  + `im¶ode +(" ", + `¬¿y_m­ +( + `¬¿y +( +$this +, "quÙeId’tif›r"), + `ex¶ode +(" ", +$bË +) ) ); + +214 + } +} + +220 +´Ùeùed + +funùiÚ + + $g‘IdM‘hod +() + +222  +DBAd­‹r +:: +ID_METHOD_AUTOINCREMENT +; + +223 + } +} + +229 +public + +funùiÚ + + $isG‘IdBefÜeIn£¹ +() + +231  ( +$this +-> + `g‘IdM‘hod +(è==ð +DBAd­‹r +:: +ID_METHOD_SEQUENCE +); + +232 + } +} + +238 +public + +funùiÚ + + $isG‘IdAá”In£¹ +() + +240  ( +$this +-> + `g‘IdM‘hod +(è==ð +DBAd­‹r +:: +ID_METHOD_AUTOINCREMENT +); + +241 + } +} + +247 +public + +funùiÚ + + $g‘Id +( +PDO + +$cÚ +, +$Çme + = +nuÎ +) + +249  +$cÚ +-> + `Ï¡In£¹Id +( +$Çme +); + +250 + } +} + +256 +public + +funùiÚ + + $g‘Time¡ampFÜm©‹r +() + +259 + } +} + +265 +public + +funùiÚ + + $g‘D©eFÜm©‹r +() + +268 + } +} + +274 +public + +funùiÚ + + $g‘TimeFÜm©‹r +() + +277 + } +} + +289 +public + +funùiÚ + + $u£QuÙeId’tif›r +() + +291  +çl£ +; + +292 + } +} + +297 +public + +ab¡¿ù + +funùiÚ + +­¶yLim™ +(& +$sql +, +$off£t +, +$lim™ +); + +304 +public + +ab¡¿ù + +funùiÚ + +¿ndom +( +$£ed + = +nuÎ +); + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/DBMSSQL.php + +1 + `exec +("LOCK TABLE " . +$bË + . " WRITE"); + +105 + } +} + +115 +public + +funùiÚ + + $uÆockTabË +( +PDO + +$cÚ +, +$bË +) + +117 +$¡©em’t + = +$cÚ +-> + `exec +("UNLOCK TABLES"); + +118 + } +} + +123 +public + +funùiÚ + + $quÙeId’tif›r +( +$‹xt +) + +125  '`' . +$‹xt + . '`'; + +126 + } +} + +131 +public + +funùiÚ + + $u£QuÙeId’tif›r +() + +133  +Œue +; + +134 + } +} + +139 +public + +funùiÚ + + $­¶yLim™ +(& +$sql +, +$off£t +, +$lim™ +) + +141 iàÐ +$lim™ + > 0 ) { + +142 +$sql + .ð" LIMIT " . ( +$off£t + > 0 ? $off£ˆ. ", " : ""è. +$lim™ +; + +143 } iàÐ +$off£t + > 0 ) { + +144 +$sql + .ð" LIMIT " . +$off£t + . ", 18446744073709551615"; + +146 + } +} + +151 +public + +funùiÚ + + $¿ndom +( +$£ed + = +nuÎ +) + +153  '¿nd('.((è +$£ed +).')'; + +154 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/DBNone.php + +1 0 ) { + +108 +$sql + .ð' B.PROPEL$ROWNUM > ' . +$off£t +; + +110 iàÐ +$lim™ + > 0 ) + +112 +$sql + .= ' AND B.PROPEL$ROWNUM <= ' + +113 . ( +$off£t + + +$lim™ + ); + +116 +$sql + .ð' B.PROPEL$ROWNUM <ð' . +$lim™ +; + +118 + } +} + +120 +´Ùeùed + +funùiÚ + + $g‘IdM‘hod +() + +122  +DBAd­‹r +:: +ID_METHOD_SEQUENCE +; + +123 + } +} + +125 +public + +funùiÚ + + $g‘Id +( +PDO + +$cÚ +, +$Çme + = +nuÎ +) + +127 ià( +$Çme + ==ð +nuÎ +) { + +128 +throw + +Ãw + + `PrݖExû±iÚ +("Unableo fetch‚ext sequence ID without sequence‚ame."); + +131 +$¡mt + = +$cÚ +-> + `qu”y +("SELECT " . +$Çme + . ".nextval FROM dual"); + +132 +$row + = +$¡mt +-> + `ãtch +( +PDO +:: +FETCH_NUM +); + +134  +$row +[0]; + +135 + } +} + +137 +public + +funùiÚ + + $¿ndom +( +$£ed += +NULL +) + +140 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/DBPostgres.php + +1 -1 ? "for $len" : "") . ")"; + +80 + } +} + +88 +public + +funùiÚ + + $¡rL’gth +( +$s +) + +91 + } +} + +96 +´Ùeùed + +funùiÚ + + $g‘IdM‘hod +() + +98  +DBAd­‹r +:: +ID_METHOD_SEQUENCE +; + +99 + } +} + +104 +public + +funùiÚ + + $g‘Id +( +PDO + +$cÚ +, +$Çme + = +nuÎ +) + +106 ià( +$Çme + ==ð +nuÎ +) { + +107 +throw + +Ãw + + `PrݖExû±iÚ +("Unableo fetch‚ext sequence ID without sequence‚ame."); + +109 +$¡mt + = +$cÚ +-> + `qu”y +("SELECT‚extv®(".$cÚ-> + `quÙe +( +$Çme +).")"); + +110 +$row + = +$¡mt +-> + `ãtch +( +PDO +:: +FETCH_NUM +); + +111  +$row +[0]; + +112 + } +} + +118 +public + +funùiÚ + + $g‘Time¡ampFÜm©‹r +() + +121 + } +} + +127 +public + +funùiÚ + + $g‘TimeFÜm©‹r +() + +130 + } +} + +135 +public + +funùiÚ + + $­¶yLim™ +(& +$sql +, +$off£t +, +$lim™ +) + +137 iàÐ +$lim™ + > 0 ) { + +138 +$sql + .ð" LIMIT ". +$lim™ +; + +140 iàÐ +$off£t + > 0 ) { + +141 +$sql + .ð" OFFSET ". +$off£t +; + +143 + } +} + +148 +public + +funùiÚ + + $¿ndom +( +$£ed += +NULL +) + +151 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/DBSQLite.php + +1 0 ) { + +116 +$sql + .ð" LIMIT " . +$lim™ + . ( +$off£t + > 0 ? " OFFSET " . $offset : ""); + +117 } + `–£if + ( +$off£t + > 0 ) { + +118 +$sql + .ð" LIMIT -1 OFFSET " . +$off£t +; + +120 + } +} + +122 +public + +funùiÚ + + $¿ndom +( +$£ed += +NULL +) + +125 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/MSSQL/MssqlDateTime.class.php + +1 + `g‘Ne¡edT¿n§ùiÚCouÁ +(); + +20 iàÐ +$ÝcouÁ + === 0 ) { + +21 +$»tuº + = +£lf +:: + `exec +('BEGIN TRANSACTION'); + +22 +$this +-> +isUncomm™abË + = +çl£ +; + +24 +$this +-> + `šüem’tNe¡edT¿n§ùiÚCouÁ +(); + +25  +$»tuº +; + +34 +public + +funùiÚ + + $comm™ +() + +36 +$»tuº + = +Œue +; + +37 +$ÝcouÁ + = +$this +-> + `g‘Ne¡edT¿n§ùiÚCouÁ +(); + +38 ià( +$ÝcouÁ + > 0) { + +39 ià( +$ÝcouÁ + === 1) { + +40 ià( +$this +-> +isUncomm™abË +) { + +41 +throw + +Ãw + + `PrݖExû±iÚ +('Cannot commit because‡‚estedransaction was„olled back'); + +43 +$»tuº + = +£lf +:: + `exec +('COMMIT TRANSACTION'); + +46 +$this +-> + `deüem’tNe¡edT¿n§ùiÚCouÁ +(); + +48  +$»tuº +; + +49 + } +} + +57 +public + +funùiÚ + + $rÞlBack +() + +59 +$»tuº + = +Œue +; + +60 +$ÝcouÁ + = +$this +-> + `g‘Ne¡edT¿n§ùiÚCouÁ +(); + +61 ià( +$ÝcouÁ + > 0) { + +62 ià( +$ÝcouÁ + === 1) { + +63 +$»tuº + = +£lf +:: + `exec +('ROLLBACK TRANSACTION'); + +65 +$this +-> +isUncomm™abË + = +Œue +; + +67 +$this +-> + `deüem’tNe¡edT¿n§ùiÚCouÁ +(); + +69  +$»tuº +; + +70 + } +} + +79 +public + +funùiÚ + + $fÜûRÞlBack +() + +81 +$»tuº + = +Œue +; + +82 +$ÝcouÁ + = +$this +-> + `g‘Ne¡edT¿n§ùiÚCouÁ +(); + +83 ià( +$ÝcouÁ + > 0) { + +86 +$»tuº + = +£lf +:: + `exec +('ROLLBACK TRANSACTION'); + +90 +$this +-> +áedT¿n§ùiÚCouÁ + = 0; + +92  +$»tuº +; + +93 + } +} + +95 +public + +funùiÚ + + $Ï¡In£¹Id +( +$£qÇme + = +nuÎ +) + +97 +$»suÉ + = +£lf +:: + `qu”y +('SELECT SCOPE_IDENTITY()'); + +98  () +$»suÉ +-> + `ãtchCÞumn +(); + +99 + } +} + +101 +public + +funùiÚ + + $quÙeId’tif›r +( +$‹xt +) + +103  '[' . +$‹xt + . ']'; + +104 + } +} + +106 +public + +funùiÚ + + $u£QuÙeId’tif›r +() + +108  +Œue +; + +109 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/MSSQL/MssqlPropelPDO.php + +1 + `g‘Ne¡edT¿n§ùiÚCouÁ +(); + +20 iàÐ +$ÝcouÁ + === 0 ) { + +21 +$»tuº + = +£lf +:: + `exec +('BEGIN TRANSACTION'); + +22 +$this +-> +isUncomm™abË + = +çl£ +; + +24 +$this +-> + `šüem’tNe¡edT¿n§ùiÚCouÁ +(); + +25  +$»tuº +; + +34 +public + +funùiÚ + + $comm™ +() + +36 +$»tuº + = +Œue +; + +37 +$ÝcouÁ + = +$this +-> + `g‘Ne¡edT¿n§ùiÚCouÁ +(); + +38 ià( +$ÝcouÁ + > 0) { + +39 ià( +$ÝcouÁ + === 1) { + +40 ià( +$this +-> +isUncomm™abË +) { + +41 +throw + +Ãw + + `PrݖExû±iÚ +('Cannot commit because‡‚estedransaction was„olled back'); + +43 +$»tuº + = +£lf +:: + `exec +('COMMIT TRANSACTION'); + +46 +$this +-> + `deüem’tNe¡edT¿n§ùiÚCouÁ +(); + +48  +$»tuº +; + +49 + } +} + +57 +public + +funùiÚ + + $rÞlBack +() + +59 +$»tuº + = +Œue +; + +60 +$ÝcouÁ + = +$this +-> + `g‘Ne¡edT¿n§ùiÚCouÁ +(); + +61 ià( +$ÝcouÁ + > 0) { + +62 ià( +$ÝcouÁ + === 1) { + +63 +$»tuº + = +£lf +:: + `exec +('ROLLBACK TRANSACTION'); + +65 +$this +-> +isUncomm™abË + = +Œue +; + +67 +$this +-> + `deüem’tNe¡edT¿n§ùiÚCouÁ +(); + +69  +$»tuº +; + +70 + } +} + +79 +public + +funùiÚ + + $fÜûRÞlBack +() + +81 +$»tuº + = +Œue +; + +82 +$ÝcouÁ + = +$this +-> + `g‘Ne¡edT¿n§ùiÚCouÁ +(); + +83 ià( +$ÝcouÁ + > 0) { + +86 +$»tuº + = +£lf +:: + `exec +('ROLLBACK TRANSACTION'); + +90 +$this +-> +áedT¿n§ùiÚCouÁ + = 0; + +92  +$»tuº +; + +93 + } +} + +95 +public + +funùiÚ + + $Ï¡In£¹Id +( +$£qÇme + = +nuÎ +) + +97 +$»suÉ + = +£lf +:: + `qu”y +('SELECT SCOPE_IDENTITY()'); + +98  () +$»suÉ +-> + `ãtchCÞumn +(); + +99 + } +} + +101 +public + +funùiÚ + + $quÙeId’tif›r +( +$‹xt +) + +103  '[' . +$‹xt + . ']'; + +104 + } +} + +106 +public + +funùiÚ + + $u£QuÙeId’tif›r +() + +108  +Œue +; + +109 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/logger/BasicLogger.php + +1 +logg” + = +$logg” +; + +53 +public + +funùiÚ + + $®”t +( +$mes§ge +) + +55 +$this +-> + `log +( +$mes§ge +, 'alert'); + +56 + } +} + +64 +public + +funùiÚ + + $ü™ +( +$mes§ge +) + +66 +$this +-> + `log +( +$mes§ge +, 'crit'); + +67 + } +} + +75 +public + +funùiÚ + + $”r +( +$mes§ge +) + +77 +$this +-> + `log +( +$mes§ge +, 'err'); + +78 + } +} + +86 +public + +funùiÚ + + $w¬nšg +( +$mes§ge +) + +88 +$this +-> + `log +( +$mes§ge +, 'warning'); + +89 + } +} + +98 +public + +funùiÚ + + $nÙiû +( +$mes§ge +) + +100 +$this +-> + `log +( +$mes§ge +, 'notice'); + +101 + } +} + +108 +public + +funùiÚ + + $šfo +( +$mes§ge +) + +110 +$this +-> + `log +( +$mes§ge +, 'info'); + +111 + } +} + +119 +public + +funùiÚ + + $debug +( +$mes§ge +) + +121 +$this +-> + `log +( +$mes§ge +, 'debug'); + +122 + } +} + +132 +public + +funùiÚ + + $log +( +$mes§ge +, +$£v”™y + = +nuÎ +) + +134 ià( + `is_nuÎ +( +$this +-> +logg” +)) + +135 +$this +-> +logg” + = +LogMªag” +:: + `g‘Logg” +('propel'); + +137  +$£v”™y +) + +140 +$m‘hod + = 'fatal'; + +143 +$m‘hod + = 'error'; + +147 +$m‘hod + = 'warning'; + +151 +$m‘hod + = 'info'; + +155 +$m‘hod + = 'debug'; + +159 +$Œaû + = + `debug_backŒaû +(); + +162 +$this +-> +logg” +->{ +$m‘hod +} ( + +163 +$mes§ge +, + +164 +$Œaû +[2]['class'], + +165 +$Œaû +[2]['function'], + +166 +$Œaû +[1]['file'], + +167 +$Œaû +[1]['line'] + +169 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/ColumnMap.php + +1 +cÞumnName + = +$Çme +; + +82 +$this +-> +bË + = +$cڏššgTabË +; + +90 +public + +funùiÚ + + $g‘Name +() + +92  +$this +-> +cÞumnName +; + +93 + } +} + +99 +public + +funùiÚ + + $g‘TabË +() + +101  +$this +-> +bË +; + +102 + } +} + +109 +public + +funùiÚ + + $g‘TabËName +() + +111  +$this +-> +bË +-> + `g‘Name +(); + +112 + } +} + +119 +public + +funùiÚ + + $g‘FuÎyQu®if›dName +() + +121  +$this +-> + `g‘TabËName +(è. "." . $this-> +cÞumnName +; + +122 + } +} + +130 +public + +funùiÚ + + $£tPhpName +( +$phpName +) + +132 +$this +-> +phpName + = +$phpName +; + +133 + } +} + +140 +public + +funùiÚ + + $g‘PhpName +() + +142  +$this +-> +phpName +; + +143 + } +} + +151 +public + +funùiÚ + + $£tTy³ +( +$ty³ +) + +153 +$this +-> +ty³ + = +$ty³ +; + +154 + } +} + +161 +public + +funùiÚ + + $g‘Ty³ +() + +163  +$this +-> +ty³ +; + +164 + } +} + +171 +public + +funùiÚ + + $g‘PdoTy³ +() + +173  +PrݖCÞumnTy³s +:: + `g‘PdoTy³ +( +$this +-> +ty³ +); + +174 + } +} + +180 +public + +funùiÚ + + $isLob +() + +182  ( +$this +-> +ty³ + =ð +PrݖCÞumnTy³s +:: +BLOB + || $this->ty³ =ðPrݖCÞumnTy³s:: +VARBINARY + || $this->ty³ =ðPrݖCÞumnTy³s:: +LONGVARBINARY +); + +183 + } +} + +191 +public + +funùiÚ + + $isTempÜ® +() + +193  ( +$this +-> +ty³ + =ð +PrݖCÞumnTy³s +:: +TIMESTAMP + || $this->ty³ =ðPrݖCÞumnTy³s:: +DATE + || $this->ty³ =ðPrݖCÞumnTy³s:: +TIME + || $this->ty³ =ðPrݖCÞumnTy³s:: +BU_DATE + || $this->ty³ =ðPrݖCÞumnTy³s:: +BU_TIMESTAMP +); + +194 + } +} + +205 +public + +funùiÚ + + $isEpochTempÜ® +() + +207  ( +$this +-> +ty³ + =ð +PrݖCÞumnTy³s +:: +TIMESTAMP + || $this->ty³ =ðPrݖCÞumnTy³s:: +DATE + || $this->ty³ =ðPrݖCÞumnTy³s:: +TIME +); + +208 + } +} + +214 +public + +funùiÚ + + $isNum”ic +() + +216  ( +$this +-> +ty³ + =ð +PrݖCÞumnTy³s +:: +NUMERIC + || $this->ty³ =ðPrݖCÞumnTy³s:: +DECIMAL + || $this->ty³ =ðPrݖCÞumnTy³s:: +TINYINT + || $this->ty³ =ðPrݖCÞumnTy³s:: +SMALLINT + || $this->ty³ =ðPrݖCÞumnTy³s:: +INTEGER + || $this->ty³ =ðPrݖCÞumnTy³s:: +BIGINT + || $this->ty³ =ðPrݖCÞumnTy³s:: +REAL + || $this->ty³ =ðPrݖCÞumnTy³s:: +FLOAT + || $this->ty³ =ðPrݖCÞumnTy³s:: +DOUBLE +); + +217 + } +} + +223 +public + +funùiÚ + + $isText +() + +225  ( +$this +-> +ty³ + =ð +PrݖCÞumnTy³s +:: +VARCHAR + || $this->ty³ =ðPrݖCÞumnTy³s:: +LONGVARCHAR + || $this->ty³ =ðPrݖCÞumnTy³s:: +CHAR +); + +226 + } +} + +234 +public + +funùiÚ + + $£tSize +( +$size +) + +236 +$this +-> +size + = +$size +; + +237 + } +} + +244 +public + +funùiÚ + + $g‘Size +() + +246  +$this +-> +size +; + +247 + } +} + +255 +public + +funùiÚ + + $£tPrim¬yKey +( +$pk +) + +257 +$this +-> +pk + = +$pk +; + +258 + } +} + +265 +public + +funùiÚ + + $isPrim¬yKey +() + +267  +$this +-> +pk +; + +268 + } +} + +276 +public + +funùiÚ + + $£tNÙNuÎ +( +$ +) + +278 +$this +-> +nÙNuÎ + = +$ +; + +279 + } +} + +286 +public + +funùiÚ + + $isNÙNuÎ +() + +288  ( +$this +-> +nÙNuÎ + || $this-> + `isPrim¬yKey +()); + +289 + } +} + +296 +public + +funùiÚ + + $£tDeçuÉV®ue +( +$deçuÉV®ue +) + +298 +$this +-> +deçuÉV®ue + = +$deçuÉV®ue +; + +299 + } +} + +305 +public + +funùiÚ + + $g‘DeçuÉV®ue +() + +307  +$this +-> +deçuÉV®ue +; + +308 + } +} + +317 +public + +funùiÚ + + $£tFÜeignKey +( +$bËName +, +$cÞumnName +) + +319 ià( +$bËName + && +$cÞumnName +) { + +320 +$this +-> +»Ï‹dTabËName + = +$bËName +; + +321 +$this +-> +»Ï‹dCÞumnName + = +$cÞumnName +; + +323 +$this +-> +»Ï‹dTabËName + = ""; + +324 +$this +-> +»Ï‹dCÞumnName + = ""; + +326 + } +} + +333 +public + +funùiÚ + + $isFÜeignKey +() + +335 ià( +$this +-> +»Ï‹dTabËName +) { + +336  +Œue +; + +338  +çl£ +; + +340 + } +} + +345 +public + +funùiÚ + + $g‘R–©iÚ +() + +347 if(! +$this +-> +»Ï‹dTabËName +è +nuÎ +; + +348 + `fܗch + ( +$this +-> + `g‘TabË +()-> + `g‘R–©iÚs +(è +as + +$Çme + => +$»ÏtiÚ +) + +350 if( +$»ÏtiÚ +-> + `g‘Ty³ +(è=ð +R–©iÚM­ +:: +MANY_TO_ONE +) + +352 ià( +$»ÏtiÚ +-> + `g‘FÜeignTabË +()-> + `g‘Name +(è=ð +$this +-> + `g‘R–©edTabËName +() + +353 && + `¬¿y_key_exi¡s +( +$this +-> + `g‘FuÎyQu®if›dName +(), +$»ÏtiÚ +-> + `g‘CÞumnM­pšgs +())) + +355  +$»ÏtiÚ +; + +359 + } +} + +366 +public + +funùiÚ + + $g‘R–©edName +() + +368  +$this +-> +»Ï‹dTabËName + . "." . $this-> +»Ï‹dCÞumnName +; + +369 + } +} + +376 +public + +funùiÚ + + $g‘R–©edTabËName +() + +378  +$this +-> +»Ï‹dTabËName +; + +379 + } +} + +386 +public + +funùiÚ + + $g‘R–©edCÞumnName +() + +388  +$this +-> +»Ï‹dCÞumnName +; + +389 + } +} + +397 +public + +funùiÚ + + $g‘R–©edTabË +() + +399 ià( +$this +-> +»Ï‹dTabËName +) { + +400  +$this +-> +bË +-> + `g‘D©aba£M­ +()-> + `g‘TabË +($this-> +»Ï‹dTabËName +); + +402 +throw + +Ãw + + `PrݖExû±iÚ +("CªnÙ f‘ch R–©edTabË fÜ cÞumÀw™h‚ØfÜeigÀkey: " . +$this +-> +cÞumnName +); + +404 + } +} + +412 +public + +funùiÚ + + $g‘R–©edCÞumn +() + +414  +$this +-> + `g‘R–©edTabË +()-> + `g‘CÞumn +($this-> +»Ï‹dCÞumnName +); + +415 + } +} + +417 +public + +funùiÚ + + $addV®id©Ü +( +$v®id©Ü +) + +419 +$this +-> +v®id©Üs +[] = +$v®id©Ü +; + +420 + } +} + +422 +public + +funùiÚ + + $hasV®id©Üs +() + +424  + `couÁ +( +$this +-> +v®id©Üs +) > 0; + +425 + } +} + +427 +public + +funùiÚ + + $g‘V®id©Üs +() + +429  +$this +-> +v®id©Üs +; + +430 + } +} + +437 +public + +funùiÚ + + $ignÜeCa£ +( +$¡r +, +DBAd­‹r + +$db +) + +439 ià( +$this +-> + `isText +()) { + +440  +$db +-> + `ignÜeCa£ +( +$¡r +); + +442  +$¡r +; + +444 + } +} + +454 +public +  +funùiÚ + + $nÜm®izeName +( +$Çme +) + +456 ià( +çl£ + !=ð( +$pos + = + `¡½os +( +$Çme +, '.'))) { + +457 +$Çme + = + `sub¡r +($Çme, +$pos + + 1); + +459 +$Çme + = + `¡¹ouµ” +($name); + +460  +$Çme +; + +461 + } +} + +471 +public + +funùiÚ + + $g‘CÞumnName +() + +473  +$this +-> + `g‘Name +(); + +474 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/DatabaseMap.php + +1 +Çme + = +$Çme +; + +66 +public + +funùiÚ + + $g‘Name +() + +68  +$this +-> +Çme +; + +69 + } +} + +77 +public + +funùiÚ + + $addTabË +( +$bËName +) + +79 +$this +-> +bËs +[ +$bËName +] = +Ãw + + `TabËM­ +($tableName, $this); + +80  +$this +-> +bËs +[ +$bËName +]; + +81 + } +} + +88 +public + +funùiÚ + + $addTabËObjeù +( +TabËM­ + +$bË +) + +90 +$bË +-> + `£tD©aba£M­ +( +$this +); + +91 +$this +-> +bËs +[ +$bË +-> + `g‘Name +()] = $table; + +92 +$this +-> +bËsByPhpName +[ +$bË +-> + `g‘PhpName +()] = $table; + +93 + } +} + +101 +public + +funùiÚ + + $addTabËFromM­CÏss +( +$bËM­CÏss +) + +103 +$bË + = +Ãw + + `$bËM­CÏss +(); + +104 if(! +$this +-> + `hasTabË +( +$bË +-> + `g‘Name +())) { + +105 +$this +-> + `addTabËObjeù +( +$bË +); + +106  +$bË +; + +108  +$this +-> + `g‘TabË +( +$bË +-> + `g‘Name +()); + +110 + } +} + +118 +public + +funùiÚ + + $hasTabË +( +$Çme +) + +120 iàÐ + `¡½os +( +$Çme +, '.') > 0) { + +121 +$Çme + = + `sub¡r +($Çme, 0, + `¡½os +($name, '.')); + +123  + `is£t +( +$this +-> +bËs +[ +$Çme +]); + +124 + } +} + +133 +public + +funùiÚ + + $g‘TabË +( +$Çme +) + +135 ià(! + `is£t +( +$this +-> +bËs +[ +$Çme +])) { + +136 +throw + +Ãw + + `PrݖExû±iÚ +("CªnÙ f‘ch TabËM­ fÜ undefšedabË: " . +$Çme + ); + +138  +$this +-> +bËs +[ +$Çme +]; + +139 + } +} + +146 +public + +funùiÚ + + $g‘TabËs +() + +148  +$this +-> +bËs +; + +149 + } +} + +159 +public + +funùiÚ + + $g‘CÞumn +( +$qu®if›dCÞumnName +) + +161 + `li¡ +( +$bËName +, +$cÞumnName +èð + `ex¶ode +('.', +$qu®if›dCÞumnName +); + +162  +$this +-> + `g‘TabË +( +$bËName +)-> + `g‘CÞumn +( +$cÞumnName +, +çl£ +); + +163 + } +} + +174 +public + +funùiÚ + + $cڏšsTabË +( +$Çme +) + +176  +$this +-> + `hasTabË +( +$Çme +); + +177 + } +} + +179 +public + +funùiÚ + + $g‘TabËByPhpName +( +$phpName +) + +181 ià( + `¬¿y_key_exi¡s +( +$phpName +, +$this +-> +bËsByPhpName +)) { + +182  +$this +-> +bËsByPhpName +[ +$phpName +]; + +183 } ià( + `þass_exi¡s +( +$tmCÏss + = +$phpName + . 'TableMap')) { + +184 +$this +-> + `addTabËFromM­CÏss +( +$tmCÏss +); + +185  +$this +-> +bËsByPhpName +[ +$phpName +]; + +187 +throw + +Ãw + + `PrݖExû±iÚ +("CªnÙ f‘ch TabËM­ fÜ undefšedab˅hpName: " . +$phpName +); + +189 + } +} + +196 +public + +funùiÚ + + $g‘DBAd­‹r +() + +198  +Prݖ +:: + `g‘DB +( +$this +-> +Çme +); + +199 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/RelationMap.php + +1 +Çme + = +$Çme +; + +68 +public + +funùiÚ + + $g‘Name +() + +70  +$this +-> +Çme +; + +71 + } +} + +78 +public + +funùiÚ + + $£tTy³ +( +$ty³ +) + +80 +$this +-> +ty³ + = +$ty³ +; + +81 + } +} + +88 +public + +funùiÚ + + $g‘Ty³ +() + +90  +$this +-> +ty³ +; + +91 + } +} + +98 +public + +funùiÚ + + $£tLoÿlTabË +( +$bË +) + +100 +$this +-> +loÿlTabË + = +$bË +; + +101 + } +} + +108 +public + +funùiÚ + + $g‘LoÿlTabË +() + +110  +$this +-> +loÿlTabË +; + +111 + } +} + +118 +public + +funùiÚ + + $£tFÜeignTabË +( +$bË +) + +120 +$this +-> +fÜeignTabË + = +$bË +; + +121 + } +} + +128 +public + +funùiÚ + + $g‘FÜeignTabË +() + +130  +$this +-> +fÜeignTabË +; + +131 + } +} + +139 +public + +funùiÚ + + $addCÞumnM­pšg +( +CÞumnM­ + +$loÿl +, CÞumnM­ +$fÜeign +) + +141 +$this +-> +loÿlCÞumns +[] = +$loÿl +; + +142 +$this +-> +fÜeignCÞumns +[] = +$fÜeign +; + +143 + } +} + +150 +public + +funùiÚ + + $g‘CÞumnM­pšgs +() + +152 +$h + = + `¬¿y +(); + +153  +$i +=0, +$size += + `couÁ +( +$this +-> +loÿlCÞumns +); $i < $size; $i++) { + +154 +$h +[ +$this +-> +loÿlCÞumns +[ +$i +]-> + `g‘FuÎyQu®if›dName +()] = $this-> +fÜeignCÞumns +[$i]->getFullyQualifiedName(); + +156  +$h +; + +157 + } +} + +164 +public + +funùiÚ + + $g‘LoÿlCÞumns +() + +166  +$this +-> +loÿlCÞumns +; + +167 + } +} + +174 +public + +funùiÚ + + $g‘FÜeignCÞumns +() + +176  +$this +-> +fÜeignCÞumns +; + +177 + } +} + +184 +public + +funùiÚ + + $£tOnUpd©e +( +$ÚUpd©e +) + +186 +$this +-> +ÚUpd©e + = +$ÚUpd©e +; + +187 + } +} + +194 +public + +funùiÚ + + $g‘OnUpd©e +() + +196  +$this +-> +ÚUpd©e +; + +197 + } +} + +204 +public + +funùiÚ + + $£tOnD–‘e +( +$ÚD–‘e +) + +206 +$this +-> +ÚD–‘e + = +$ÚD–‘e +; + +207 + } +} + +214 +public + +funùiÚ + + $g‘OnD–‘e +() + +216  +$this +-> +ÚD–‘e +; + +217 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/TableMap.php + +1 + `£tName +($name); + +83 if(! + `is_nuÎ +( +$dbM­ +)è +$this +-> + `£tD©aba£M­ +($dbMap); + +84 +$this +-> + `š™Ÿlize +(); + +91 +public + +funùiÚ + + $š™Ÿlize +() + +93 + } +} + +100 +public + +funùiÚ + + $£tD©aba£M­ +( +D©aba£M­ + +$dbM­ +) + +102 +$this +-> +dbM­ + = +$dbM­ +; + +103 + } +} + +110 +public + +funùiÚ + + $g‘D©aba£M­ +() + +112  +$this +-> +dbM­ +; + +113 + } +} + +120 +public + +funùiÚ + + $£tName +( +$Çme +) + +122 +$this +-> +bËName + = +$Çme +; + +123 + } +} + +130 +public + +funùiÚ + + $g‘Name +() + +132  +$this +-> +bËName +; + +133 + } +} + +140 +public + +funùiÚ + + $£tPhpName +( +$phpName +) + +142 +$this +-> +phpName + = +$phpName +; + +143 + } +} + +150 +public + +funùiÚ + + $g‘PhpName +() + +152  +$this +-> +phpName +; + +153 + } +} + +160 +public + +funùiÚ + + $£tCÏs¢ame +( +$þas¢ame +) + +162 +$this +-> +þas¢ame + = +$þas¢ame +; + +163 + } +} + +169 +public + +funùiÚ + + $g‘CÏs¢ame +() + +171  +$this +-> +þas¢ame +; + +172 + } +} + +179 +public + +funùiÚ + + $£tPackage +( +$·ckage +) + +181 +$this +-> +·ckage + = +$·ckage +; + +182 + } +} + +188 +public + +funùiÚ + + $g‘Package +() + +190  +$this +-> +·ckage +; + +191 + } +} + +197 +public + +funùiÚ + + $£tU£IdG’”©Ü +( +$b™ +) + +199 +$this +-> +u£IdG’”©Ü + = +$b™ +; + +200 + } +} + +206 +public + +funùiÚ + + $isU£IdG’”©Ü +() + +208  +$this +-> +u£IdG’”©Ü +; + +209 + } +} + +216 +public + +funùiÚ + + $£tPrim¬yKeyM‘hodInfo +( +$pkInfo +) + +218 +$this +-> +pkInfo + = +$pkInfo +; + +219 + } +} + +226 +public + +funùiÚ + + $g‘Prim¬yKeyM‘hodInfo +() + +228  +$this +-> +pkInfo +; + +229 + } +} + +244 +public + +funùiÚ + + $addCÞumn +( +$Çme +, +$phpName +, +$ty³ +, +$isNÙNuÎ + = +çl£ +, +$size + = +nuÎ +, +$deçuÉV®ue + =‚uÎ, +$pk + = f®£, +$fkTabË + =‚uÎ, +$fkCÞumn + =‚ull) + +247 +$cÞ + = +Ãw + + `CÞumnM­ +( +$Çme +, +$this +); + +249 ià( +$fkTabË + && +$fkCÞumn +) { + +250 ià( + `¡½os +( +$fkCÞumn +, '.'è> 0 && sŒpos($fkCÞumn, +$fkTabË +è!=ð +çl£ +) { + +251 +$fkCÞumn + = + `sub¡r +($fkCÞumn, + `¡¾’ +( +$fkTabË +) + 1); + +253 +$cÞ +-> + `£tFÜeignKey +( +$fkTabË +, +$fkCÞumn +); + +254 +$this +-> +fÜeignKeys +[ +$Çme +] = +$cÞ +; + +257 +$cÞ +-> + `£tTy³ +( +$ty³ +); + +258 +$cÞ +-> + `£tSize +( +$size +); + +259 +$cÞ +-> + `£tPhpName +( +$phpName +); + +260 +$cÞ +-> + `£tNÙNuÎ +( +$isNÙNuÎ +); + +261 +$cÞ +-> + `£tDeçuÉV®ue +( +$deçuÉV®ue +); + +262 ià( +$pk +) { + +263 +$cÞ +-> + `£tPrim¬yKey +( +Œue +); + +264 +$this +-> +´im¬yKeys +[ +$Çme +] = +$cÞ +; + +266 +$this +-> +cÞumns +[ +$Çme +] = +$cÞ +; + +268  +$this +-> +cÞumns +[ +$Çme +]; + +269 + } +} + +278 +public + +funùiÚ + + $addCÚfigu»dCÞumn +( +$cm­ +) + +280 +$this +-> +cÞumns +[ +$cm­ +-> + `g‘CÞumnName +() ] = $cmap; + +281  +$cm­ +; + +282 + } +} + +291 +public + +funùiÚ + + $hasCÞumn +( +$Çme +, +$nÜm®ize + = +Œue +) + +293 ià( +$Çme + +š¡ªûof + +CÞumnM­ +) { + +294 +$Çme + = $Çme-> + `g‘CÞumnName +(); + +295 } if( +$nÜm®ize +) { + +296 +$Çme + = +CÞumnM­ +:: + `nÜm®izeName +($name); + +298  + `is£t +( +$this +-> +cÞumns +[ +$Çme +]); + +299 + } +} + +309 +public + +funùiÚ + + $g‘CÞumn +( +$Çme +, +$nÜm®ize + = +Œue +) + +311 ià( +$nÜm®ize +) { + +312 +$Çme + = +CÞumnM­ +:: + `nÜm®izeName +($name); + +314 ià(! +$this +-> + `cڏšsCÞumn +( +$Çme +, +çl£ +)) { + +315 +throw + +Ãw + + `PrݖExû±iÚ +("CªnÙ f‘ch CÞumnM­ fÜ undefšed cÞumn: " . +$Çme +); + +317  +$this +-> +cÞumns +[ +$Çme +]; + +318 + } +} + +325 +public + +funùiÚ + + $g‘CÞumns +() + +327  +$this +-> +cÞumns +; + +328 + } +} + +339 +public + +funùiÚ + + $addPrim¬yKey +( +$cÞumnName +, +$phpName +, +$ty³ +, +$isNÙNuÎ + = +çl£ +, +$size + = +nuÎ +, +$deçuÉV®ue + =‚ull) + +341  +$this +-> + `addCÞumn +( +$cÞumnName +, +$phpName +, +$ty³ +, +$isNÙNuÎ +, +$size +, +$deçuÉV®ue +, +Œue +, +nuÎ +,‚ull); + +342 + } +} + +356 +public + +funùiÚ + + $addFÜeignKey +( +$cÞumnName +, +$phpName +, +$ty³ +, +$fkTabË +, +$fkCÞumn +, +$isNÙNuÎ + = +çl£ +, +$size + = 0, +$deçuÉV®ue + = +nuÎ +) + +358  +$this +-> + `addCÞumn +( +$cÞumnName +, +$phpName +, +$ty³ +, +$isNÙNuÎ +, +$size +, +$deçuÉV®ue +, +çl£ +, +$fkTabË +, +$fkCÞumn +); + +359 + } +} + +373 +public + +funùiÚ + + $addFÜeignPrim¬yKey +( +$cÞumnName +, +$phpName +, +$ty³ +, +$fkTabË +, +$fkCÞumn +, +$isNÙNuÎ + = +çl£ +, +$size + = 0, +$deçuÉV®ue + = +nuÎ +) + +375  +$this +-> + `addCÞumn +( +$cÞumnName +, +$phpName +, +$ty³ +, +$isNÙNuÎ +, +$size +, +$deçuÉV®ue +, +Œue +, +$fkTabË +, +$fkCÞumn +); + +376 + } +} + +383 +public + +funùiÚ + + $g‘Prim¬yKeys +() + +385  +$this +-> +´im¬yKeys +; + +386 + } +} + +393 +public + +funùiÚ + + $g‘FÜeignKeys +() + +395  +$this +-> +fÜeignKeys +; + +396 + } +} + +408 +public + +funùiÚ + + $addV®id©Ü +( +$cÞumnName +, +$Çme +, +$þas¢ame +, +$v®ue +, +$mes§ge +) + +410 ià( +çl£ + !=ð( +$pos + = + `¡½os +( +$cÞumnName +, '.'))) { + +411 +$cÞumnName + = + `sub¡r +($cÞumnName, +$pos + + 1); + +414 +$cÞ + = +$this +-> + `g‘CÞumn +( +$cÞumnName +); + +415 ià( +$cÞ + !=ð +nuÎ +) { + +416 +$v®id©Ü + = +Ãw + + `V®id©ÜM­ +( +$cÞ +); + +417 +$v®id©Ü +-> + `£tName +( +$Çme +); + +418 +$v®id©Ü +-> + `£tCÏss +( +$þas¢ame +); + +419 +$v®id©Ü +-> + `£tV®ue +( +$v®ue +); + +420 +$v®id©Ü +-> + `£tMes§ge +( +$mes§ge +); + +421 +$cÞ +-> + `addV®id©Ü +( +$v®id©Ü +); + +423 + } +} + +430 +public + +funùiÚ + + $buždR–©iÚs +() + +432 + } +} + +443 +public + +funùiÚ + +addR–©iÚ +( +$Çme +, +$bËPhpName +, +$ty³ +, +$cÞumnM­pšg + = +¬¿y +(), +$ÚD–‘e + = +nuÎ +, +$ÚUpd©e + =‚ull) + +447 +$»ÏtiÚ + = +Ãw + +R–©iÚM­ +( +$Çme +); + +448 + g$»ÏtiÚ +-> +£tTy³ +( +$ty³ +); + +449 + g$»ÏtiÚ +-> +£tOnUpd©e +( +$ÚUpd©e +); + +450 + g$»ÏtiÚ +-> +£tOnD–‘e +( +$ÚD–‘e +); + +452 ià( + g$ty³ + =ð +R–©iÚM­ +:: +MANY_TO_ONE +) { + +453 +$»ÏtiÚ +-> +£tLoÿlTabË +( +$this +); + +454 + g$»ÏtiÚ +-> +£tFÜeignTabË +( +$this +-> +dbM­ +-> +g‘TabËByPhpName +( +$bËPhpName +)); + +456 + g$»ÏtiÚ +-> +£tLoÿlTabË +( +$this +-> +dbM­ +-> +g‘TabËByPhpName +( +$bËPhpName +)); + +457 + g$»ÏtiÚ +-> +£tFÜeignTabË +( +$this +); + +458 + g$cÞumnM­pšg + = +¬¿y_æ +( +$cÞumnM­pšg +); + +461 +fܗch + ( +$cÞumnM­pšg + +as + +$key + => +$v®ue +) + +463 +$»ÏtiÚ +-> +addCÞumnM­pšg +( + +464 +$»ÏtiÚ +-> +g‘LoÿlTabË +()-> +g‘CÞumn +( +$key +), + +465 +$»ÏtiÚ +-> +g‘FÜeignTabË +()-> +g‘CÞumn +( +$v®ue +) + +468 + g$this +-> + g»ÏtiÚs +[ +$Çme +] = +$»ÏtiÚ +; + +469  + g$»ÏtiÚ +; + +478 +public + +funùiÚ + + $hasR–©iÚ +( +$Çme +) + +480  + `¬¿y_key_exi¡s +( +$Çme +, +$this +-> + `g‘R–©iÚs +()); + +481 + } +} + +490 +public + +funùiÚ + + $g‘R–©iÚ +( +$Çme +) + +492 ià(! + `¬¿y_key_exi¡s +( +$Çme +, +$this +-> + `g‘R–©iÚs +())) + +494 +throw + +Ãw + + `PrݖExû±iÚ +('C®lšg g‘R–©iÚ(èڇÀunknowÀ»ÏtiÚ, ' . +$Çme +); + +496  +$this +-> +»ÏtiÚs +[ +$Çme +]; + +497 + } +} + +505 +public + +funùiÚ + + $g‘R–©iÚs +() + +507 if(! +$this +-> +»ÏtiÚsBužt +) + +509 +$this +-> + `buždR–©iÚs +(); + +510 +$this +-> +»ÏtiÚsBužt + = +Œue +; + +512  +$this +-> +»ÏtiÚs +; + +513 + } +} + +521 +public + +funùiÚ + + $g‘BehaviÜs +() + +523  + `¬¿y +(); + +524 + } +} + +536 +public + +funùiÚ + + $cڏšsCÞumn +( +$Çme +, +$nÜm®ize + = +Œue +) + +538  +$this +-> + `hasCÞumn +( +$Çme +, +$nÜm®ize +); + +539 + } +} + +549 +´Ùeùed + +funùiÚ + + $nÜm®izeCÞName +( +$Çme +) + +551  +CÞumnM­ +:: + `nÜm®izeName +( +$Çme +); + +552 + } +} + +560 +public + +funùiÚ + + $g‘Prim¬yKeyCÞumns +() + +562  + `¬¿y_v®ues +( +$this +-> +´im¬yKeys +); + +563 + } +} + +571 +´iv©e + + g$´efix +; + +579 +public + +funùiÚ + + $g‘P»fix +() + +581  +$this +-> +´efix +; + +582 + } +} + +592 +public + +funùiÚ + + $£tP»fix +( +$´efix +) + +594 +$this +-> +´efix + = +$´efix +; + +595 + } +} + +604 +´Ùeùed + +funùiÚ + + $hasP»fix +( +$d©a +) + +606  ( + `¡½os +( +$d©a +, +$this +-> +´efix +) === 0); + +607 + } +} + +616 +´Ùeùed + +funùiÚ + + $»moveP»fix +( +$d©a +) + +618  +$this +-> + `hasP»fix +( +$d©a +è? + `sub¡r +($d©a, + `¡¾’ +($this-> +´efix +)) : $data; + +619 + } +} + +631 +public + +fš® + +funùiÚ + + $»moveUnd”ScÜes +( +$d©a +) + +633 +$out + = ''; + +634 +$tmp + = +$this +-> + `»moveP»fix +( +$d©a +); + +635 +$tok + = + `¡¹ok +( +$tmp +, '_'); + +636  +$tok +) { + +637 +$out + .ð + `ucfœ¡ +( +$tok +); + +638 +$tok + = + `¡¹ok +('_'); + +640  +$out +; + +641 + } +} + +650 +´iv©e + +funùiÚ + + $fœ¡L‘‹rC­s +( +$d©a +) + +652 ( + `ucfœ¡ +( + `¡¹Þow” +( +$d©a +))); + +653 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/ValidatorMap.php + +1 +cÞumn + = +$cڏššgCÞumn +; + +54 +public + +funùiÚ + + $g‘CÞumn +() + +56  +$this +-> +cÞumn +; + +57 + } +} + +59 +public + +funùiÚ + + $g‘CÞumnName +() + +61  +$this +-> +cÞumn +-> + `g‘CÞumnName +(); + +62 + } +} + +64 +public + +funùiÚ + + $£tName +( +$Çme +) + +66 +$this +-> +Çme + = +$Çme +; + +67 + } +} + +69 +public + +funùiÚ + + $£tCÏss +( +$þas¢ame +) + +71 +$this +-> +þas¢ame + = +$þas¢ame +; + +72 + } +} + +74 +public + +funùiÚ + + $£tV®ue +( +$v®ue +) + +76 +$this +-> +v®ue + = +$v®ue +; + +77 + } +} + +79 +public + +funùiÚ + + $£tMes§ge +( +$mes§ge +) + +81 +$this +-> +mes§ge + = +$mes§ge +; + +82 + } +} + +84 +public + +funùiÚ + + $g‘Name +() + +86  +$this +-> +Çme +; + +87 + } +} + +89 +public + +funùiÚ + + $g‘CÏss +() + +91  +$this +-> +þas¢ame +; + +92 + } +} + +94 +public + +funùiÚ + + $g‘V®ue +() + +96  +$this +-> +v®ue +; + +97 + } +} + +99 +public + +funùiÚ + + $g‘Mes§ge +() + +101  +$this +-> +mes§ge +; + +102 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/BaseObject.php + +1 +modif›dCÞumns +); + +69 + } +} + +77 +public + +funùiÚ + + $isCÞumnModif›d +( +$cÞ +) + +79  + `š_¬¿y +( +$cÞ +, +$this +-> +modif›dCÞumns +); + +80 + } +} + +86 +public + +funùiÚ + + $g‘Modif›dCÞumns +() + +88  + `¬¿y_unique +( +$this +-> +modif›dCÞumns +); + +89 + } +} + +98 +public + +funùiÚ + + $isNew +() + +100  +$this +-> +_Ãw +; + +101 + } +} + +109 +public + +funùiÚ + + $£tNew +( +$b +) + +111 +$this +-> +_Ãw + = ( +boޗn +è +$b +; + +112 + } +} + +118 +public + +funùiÚ + + $isD–‘ed +() + +120  +$this +-> +_d–‘ed +; + +121 + } +} + +128 +public + +funùiÚ + + $£tD–‘ed +( +$b +) + +130 +$this +-> +_d–‘ed + = ( +boޗn +è +$b +; + +131 + } +} + +138 +public + +funùiÚ + + $´eSave +( +PrݖPDO + +$cÚ + = +nuÎ +) + +140  +Œue +; + +141 + } +} + +147 +public + +funùiÚ + + $po¡Save +( +PrݖPDO + +$cÚ + = +nuÎ +è{ + } +} + +154 +public + +funùiÚ + + $´eIn£¹ +( +PrݖPDO + +$cÚ + = +nuÎ +) + +156  +Œue +; + +157 + } +} + +163 +public + +funùiÚ + + $po¡In£¹ +( +PrݖPDO + +$cÚ + = +nuÎ +è{ + } +} + +170 +public + +funùiÚ + + $´eUpd©e +( +PrݖPDO + +$cÚ + = +nuÎ +) + +172  +Œue +; + +173 + } +} + +179 +public + +funùiÚ + + $po¡Upd©e +( +PrݖPDO + +$cÚ + = +nuÎ +è{ + } +} + +186 +public + +funùiÚ + + $´eD–‘e +( +PrݖPDO + +$cÚ + = +nuÎ +) + +188  +Œue +; + +189 + } +} + +195 +public + +funùiÚ + + $po¡D–‘e +( +PrݖPDO + +$cÚ + = +nuÎ +è{ + } +} + +202 +public + +funùiÚ + + $»£tModif›d +( +$cÞ + = +nuÎ +) + +204 ià( +$cÞ + !=ð +nuÎ +) + +206 ( +$off£t + = + `¬¿y_£¬ch +( +$cÞ +, +$this +-> +modif›dCÞumns +)è!=ð +çl£ +) + +207 + `¬¿y_¥liû +( +$this +-> +modif›dCÞumns +, +$off£t +, 1); + +211 +$this +-> +modif›dCÞumns + = + `¬¿y +(); + +213 + } +} + +223 +public + +funùiÚ + + $equ®s +( +$obj +) + +225 +$thisþazz + = + `g‘_þass +( +$this +); + +226 ià( + `is_objeù +( +$obj +è&& $obj +š¡ªûof + +$thisþazz +) { + +227 ià( +$this + ==ð +$obj +) { + +228  +Œue +; + +229 } + `–£if + ( +$this +-> + `g‘Prim¬yKey +(è==ð +nuÎ + || +$obj +->getPrimaryKey() ===‚ull) { + +230  +çl£ +; + +232  ( +$this +-> + `g‘Prim¬yKey +(è==ð +$obj +->getPrimaryKey()); + +235  +çl£ +; + +237 + } +} + +245 +public + +funùiÚ + + $hashCode +() + +247 +$ok + = +$this +-> + `g‘Prim¬yKey +(); + +248 ià( +$ok + ==ð +nuÎ +) { + +249  + `üc32 +( + `£rŸlize +( +$this +)); + +251  + `üc32 +( + `£rŸlize +( +$ok +)); + +252 + } +} + +261 +´Ùeùed + +funùiÚ + +log +( +$msg +, +$´iܙy + = +Prݖ +:: +LOG_INFO +) + +263  +Prݖ +:: +log +( +g‘_þass +( +$this +è. ': ' . +$msg +, +$´iܙy +); + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/NestedSetRecursiveIterator.php + +1 +tÝNode + = +$node +; + +38 +$this +-> +curNode + = +$node +; + +41 +public + +funùiÚ + + $»wšd +() { + +42 +$this +-> +curNode + = $this-> +tÝNode +; + +43 + } +} + +45 +public + +funùiÚ + + $v®id +() { + +46  ( +$this +-> +curNode + !=ð +nuÎ +); + +47 + } +} + +49 +public + +funùiÚ + + $cu¼’t +() { + +50  +$this +-> +curNode +; + +51 + } +} + +53 +public + +funùiÚ + + $key +() { + +54 +$key + = + `¬¿y +(); + +55 + `fܗch + ( +$this +-> +curNode +-> + `g‘P©h +(è +as + +$node +) { + +56 +$key +[] = +$node +-> + `g‘Prim¬yKey +(); + +58  + `im¶ode +('.', +$key +); + +59 + } +} + +61 +public + +funùiÚ + + $Ãxt +() { + +62 +$ÃxtNode + = +nuÎ +; + +64 ià( +$this +-> + `v®id +()) { + +65  +nuÎ + ==ð +$ÃxtNode +) { + +66 ià( +nuÎ + ==ð +$this +-> +curNode +) { + +70 ià( +$this +-> +curNode +-> + `hasNextSiblšg +()) { + +71 +$ÃxtNode + = +$this +-> +curNode +-> + `»Œ›veNextSiblšg +(); + +76 +$this +-> +curNode + = +$ÃxtNode +; + +78  +$this +-> +curNode +; + +79 + } +} + +81 +public + +funùiÚ + + $hasChžd»n +() { + +82  +$this +-> +curNode +-> + `hasChžd»n +(); + +83 + } +} + +85 +public + +funùiÚ + + $g‘Chžd»n +() { + +86  +Ãw + + `Ne¡edS‘RecursiveI‹¿tÜ +( +$this +-> +curNode +-> + `»Œ›veFœ¡Chžd +()); + +87 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/NodeObject.php + +1 +tÝNode + = +$node +; + +42 +$this +-> +curNode + = +$node +; + +44 ià( + `is£t +( +$Ýts +['con'])) + +45 +$this +-> +cÚ + = +$Ýts +['con']; + +47 ià( + `is£t +( +$Ýts +['querydb'])) + +48 +$this +-> +qu”ydb + = +$Ýts +['querydb']; + +51 +public + +funùiÚ + + $»wšd +() { + +52 +$this +-> +curNode + = $this-> +tÝNode +; + +53 + } +} + +55 +public + +funùiÚ + + $v®id +() { + +56  ( +$this +-> +curNode + !=ð +nuÎ +); + +57 + } +} + +59 +public + +funùiÚ + + $cu¼’t +() { + +60  +$this +-> +curNode +; + +61 + } +} + +63 +public + +funùiÚ + + $key +() { + +64  +$this +-> +curNode +-> + `g‘NodeP©h +(); + +65 + } +} + +67 +public + +funùiÚ + + $Ãxt +() { + +69 ià( +$this +-> + `v®id +()) + +71 +$ÃxtNode + = +$this +-> +curNode +-> + `g‘Fœ¡ChždNode +($this-> +qu”ydb +, $this-> +cÚ +); + +73  +$ÃxtNode + ==ð +nuÎ +) + +75 ià( +$this +-> +curNode + ==ð +nuÎ + || $this->curNode-> + `equ®s +($this-> +tÝNode +)) + +78 +$ÃxtNode + = +$this +-> +curNode +-> + `g‘SiblšgNode +( +çl£ +, $this-> +qu”ydb +, $this-> +cÚ +); + +80 ià( +$ÃxtNode + ==ð +nuÎ +) + +81 +$this +-> +curNode + = $this->curNode-> + `g‘P¬’tNode +($this-> +qu”ydb +, $this-> +cÚ +); + +84 +$this +-> +curNode + = +$ÃxtNode +; + +87  +$this +-> +curNode +; + +88 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/BasePeer.php + +1 + `g‘DbName +()); + +118 +$dbM­ + = +Prݖ +:: + `g‘D©aba£M­ +( +$ü™”Ÿ +-> + `g‘DbName +()); + +123 +$bËs_keys + = + `¬¿y +(); + +124 + `fܗch + ( +$ü™”Ÿ + +as + +$c +) { + +125 + `fܗch + ( +$c +-> + `g‘AÎTabËs +(è +as + +$bËName +) { + +126 +$bËName2 + = +$ü™”Ÿ +-> + `g‘TabËFÜAlŸs +( +$bËName +); + +127 ià( +$bËName2 + !=ð +nuÎ +) { + +128 +$bËs_keys +[ +$bËName2 + . ' ' . +$bËName +] = +Œue +; + +130 +$bËs_keys +[ +$bËName +] = +Œue +; + +135 +$afãùedRows + = 0; + +137 +$bËs + = + `¬¿y_keys +( +$bËs_keys +); + +139 + `fܗch + ( +$bËs + +as + +$bËName +) { + +141 +$wh”eCÏu£ + = + `¬¿y +(); + +142 +$£ËùP¬ams + = + `¬¿y +(); + +143 + `fܗch + ( +$dbM­ +-> + `g‘TabË +( +$bËName +)-> + `g‘CÞumns +(è +as + +$cÞM­ +) { + +144 +$key + = +$bËName + . '.' . +$cÞM­ +-> + `g‘CÞumnName +(); + +145 ià( +$ü™”Ÿ +-> + `cڏšsKey +( +$key +)) { + +146 +$sb + = ""; + +147 +$ü™”Ÿ +-> + `g‘Cr™”iÚ +( +$key +)-> + `­³ndPsTo +( +$sb +, +$£ËùP¬ams +); + +148 +$wh”eCÏu£ +[] = +$sb +; + +152 ià( + `em±y +( +$wh”eCÏu£ +)) { + +153 +throw + +Ãw + + `PrݖExû±iÚ +("Cowardly„efusingo delete fromable $tableName withƒmpty WHERE clause."); + +157 +Œy + { + +158 +$sql + = "DELETE FROM " . +$bËName + . " WHERE " . + `im¶ode +(" AND ", +$wh”eCÏu£ +); + +159 +$¡mt + = +$cÚ +-> + `´•¬e +( +$sql +); + +160 +£lf +:: + `pÝuϋStmtV®ues +( +$¡mt +, +$£ËùP¬ams +, +$dbM­ +, +$db +); + +161 +$¡mt +-> + `execu‹ +(); + +162 +$afãùedRows + = +$¡mt +-> + `rowCouÁ +(); + +163 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +164 +Prݖ +:: + `log +( +$e +-> + `g‘Mes§ge +(), Prݖ:: +LOG_ERR +); + +165 +throw + +Ãw + + `PrݖExû±iÚ +("UÇbˁØexecu‹ DELETE s‹m’t.", +$e +); + +170  +$afãùedRows +; + +171 + } +} + +192 +public +  +funùiÚ + + $doD–‘eAÎ +( +$bËName +, +PrݖPDO + +$cÚ +) + +194 +Œy + { + +195 +$sql + = "DELETE FROM " . +$bËName +; + +196 +$¡mt + = +$cÚ +-> + `´•¬e +( +$sql +); + +197 +$¡mt +-> + `execu‹ +(); + +198  +$¡mt +-> + `rowCouÁ +(); + +199 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +200 +Prݖ +:: + `log +( +$e +-> + `g‘Mes§ge +(), Prݖ:: +LOG_ERR +); + +201 +throw + +Ãw + + `PrݖExû±iÚ +("UÇbˁسrfÜm DELETE ALL o³¿tiÚ.", +$e +); + +203 + } +} + +228 +public +  +funùiÚ + + $doIn£¹ +( +Cr™”Ÿ + +$ü™”Ÿ +, +PrݖPDO + +$cÚ +) { + +231 +$id + = +nuÎ +; + +233 +$db + = +Prݖ +:: + `g‘DB +( +$ü™”Ÿ +-> + `g‘DbName +()); + +237 +$keys + = +$ü™”Ÿ +-> + `keys +(); + +238 ià(! + `em±y +( +$keys +)) { + +239 +$bËName + = +$ü™”Ÿ +-> + `g‘TabËName +Ð +$keys +[0] ); + +241 +throw + +Ãw + + `PrݖExû±iÚ +("Database insert‡ttempted without‡nything specifiedo insert"); + +244 +$dbM­ + = +Prݖ +:: + `g‘D©aba£M­ +( +$ü™”Ÿ +-> + `g‘DbName +()); + +245 +$bËM­ + = +$dbM­ +-> + `g‘TabË +( +$bËName +); + +246 +$keyInfo + = +$bËM­ +-> + `g‘Prim¬yKeyM‘hodInfo +(); + +247 +$u£IdG’ + = +$bËM­ +-> + `isU£IdG’”©Ü +(); + +250 +$pk + = +£lf +:: + `g‘Prim¬yKey +( +$ü™”Ÿ +); + +260 ià( +$pk + !=ð +nuÎ + && +$u£IdG’ + && ! +$ü™”Ÿ +-> + `keyCڏšsV®ue +($pk-> + `g‘FuÎyQu®if›dName +()è&& +$db +-> + `isG‘IdBefÜeIn£¹ +()) { + +261 +Œy + { + +262 +$id + = +$db +-> + `g‘Id +( +$cÚ +, +$keyInfo +); + +263 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +264 +throw + +Ãw + + `PrݖExû±iÚ +("UÇbˁØg‘ sequ’û id.", +$e +); + +266 +$ü™”Ÿ +-> + `add +( +$pk +-> + `g‘FuÎyQu®if›dName +(), +$id +); + +269 +Œy + { + +270 +$ad­‹r + = +Prݖ +:: + `g‘DB +( +$ü™”Ÿ +-> + `g‘DBName +()); + +272 +$qu®if›dCÞs + = +$ü™”Ÿ +-> + `keys +(); + +273 +$cÞumns + = + `¬¿y +(); + +274 + `fܗch + ( +$qu®if›dCÞs + +as + +$qu®if›dCÞ +) { + +275 +$cÞumns +[] = + `sub¡r +( +$qu®if›dCÞ +, + `¡¼pos +($qualifiedCol, '.') + 1); + +279 ià( +$ad­‹r +-> + `u£QuÙeId’tif›r +()) { + +280 +$cÞumns + = + `¬¿y_m­ +( + `¬¿y +( +$ad­‹r +, 'quoteIdentifier'), $columns); + +283 +$sql + = 'INSERT INTO ' . +$bËName + + +284 . ' (' . + `im¶ode +(',', +$cÞumns +) . ')' + +287  +$p +=1, +$út += + `couÁ +( +$cÞumns +); $p <= $cnt; $p++) { + +288 +$sql + .ð':p'. +$p +; + +289 ià( +$p + !=ð +$út +è +$sql + .= ','; + +291 +$sql + .= ')'; + +293 +$¡mt + = +$cÚ +-> + `´•¬e +( +$sql +); + +294 +£lf +:: + `pÝuϋStmtV®ues +( +$¡mt +, s–f:: + `buždP¬ams +( +$qu®if›dCÞs +, +$ü™”Ÿ +), +$dbM­ +, +$db +); + +295 +$¡mt +-> + `execu‹ +(); + +297 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +298 +Prݖ +:: + `log +( +$e +-> + `g‘Mes§ge +(), Prݖ:: +LOG_ERR +); + +299 +throw + +Ãw + + `PrݖExû±iÚ +("UÇbˁØexecu‹ INSERT s‹m’t.", +$e +); + +303 ià( +$pk + !=ð +nuÎ + && +$u£IdG’ + && +$db +-> + `isG‘IdAá”In£¹ +()) { + +304 +Œy + { + +305 +$id + = +$db +-> + `g‘Id +( +$cÚ +, +$keyInfo +); + +306 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +307 +throw + +Ãw + + `PrݖExû±iÚ +("UÇbˁØg‘‡utošüem’ˆid.", +$e +); + +311  +$id +; + +312 + } +} + +335 +public +  +funùiÚ + + $doUpd©e +( +Cr™”Ÿ + +$£ËùCr™”Ÿ +, Cr™”Ÿ +$upd©eV®ues +, +PrݖPDO + +$cÚ +) { + +337 +$db + = +Prݖ +:: + `g‘DB +( +$£ËùCr™”Ÿ +-> + `g‘DbName +()); + +338 +$dbM­ + = +Prݖ +:: + `g‘D©aba£M­ +( +$£ËùCr™”Ÿ +-> + `g‘DbName +()); + +341 +$bËsCÞumns + = +$£ËùCr™”Ÿ +-> + `g‘TabËsCÞumns +(); + +344 +$upd©eTabËsCÞumns + = +$upd©eV®ues +-> + `g‘TabËsCÞumns +(); + +346 +$afãùedRows + = 0; + +348 + `fܗch + ( +$bËsCÞumns + +as + +$bËName + => +$cÞumns +) { + +350 +$wh”eCÏu£ + = + `¬¿y +(); + +352 +$·¿ms + = + `¬¿y +(); + +354 +$¡mt + = +nuÎ +; + +355 +Œy + { + +357 +$sql + = "UPDATE " . +$bËName + . " SET "; + +358 +$p + = 1; + +359 + `fܗch + ( +$upd©eTabËsCÞumns +[ +$bËName +] +as + +$cÞ +) { + +360 +$upd©eCÞumnName + = + `sub¡r +( +$cÞ +, + `¡¼pos +($col, '.') + 1); + +362 ià( +$db +-> + `u£QuÙeId’tif›r +()) { + +363 +$upd©eCÞumnName + = +$db +-> + `quÙeId’tif›r +($updateColumnName); + +365 ià( +$upd©eV®ues +-> + `g‘Com·risÚ +( +$cÞ +è!ð +Cr™”Ÿ +:: +CUSTOM_EQUAL +) { + +366 +$sql + .ð +$upd©eCÞumnName + . '=:p'. +$p +++.', '; + +368 +$·¿m + = +$upd©eV®ues +-> + `g‘ +( +$cÞ +); + +369 +$sql + .ð +$upd©eCÞumnName + . ' = '; + +370 ià( + `is_¬¿y +( +$·¿m +)) { + +371 ià( + `is£t +( +$·¿m +['raw'])) { + +372 +$¿w + = +$·¿m +['raw']; + +373 +$¿wcvt + = ''; + +375  +$r +=0, +$Ën += + `¡¾’ +( +$¿w +); $r < $len; $r++) { + +376 ià( +$¿w +{ +$r +} == '?') { + +377 +$¿wcvt + .ð':p'. +$p +++; + +379 +$¿wcvt + .ð +$¿w +{ +$r +}; + +382 +$sql + .ð +$¿wcvt + . ', '; + +384 +$sql + .ð':p'. +$p +++.', '; + +386 ià( + `is£t +( +$·¿m +['value'])) { + +387 +$upd©eV®ues +-> + `put +( +$cÞ +, +$·¿m +['value']); + +390 +$upd©eV®ues +-> + `»move +( +$cÞ +); + +391 +$sql + .ð +$·¿m + . ', '; + +396 +$·¿ms + = +£lf +:: + `buždP¬ams +( +$upd©eTabËsCÞumns +[ +$bËName +], +$upd©eV®ues +); + +398 + `fܗch + ( +$cÞumns + +as + +$cÞName +) { + +399 +$sb + = ""; + +400 +$£ËùCr™”Ÿ +-> + `g‘Cr™”iÚ +( +$cÞName +)-> + `­³ndPsTo +( +$sb +, +$·¿ms +); + +401 +$wh”eCÏu£ +[] = +$sb +; + +404 +$sql + = + `sub¡r +($sql, 0, -2è. " WHERE " . + `im¶ode +(" AND ", +$wh”eCÏu£ +); + +406 +$¡mt + = +$cÚ +-> + `´•¬e +( +$sql +); + +409 +£lf +:: + `pÝuϋStmtV®ues +( +$¡mt +, +$·¿ms +, +$dbM­ +, +$db +); + +411 +$¡mt +-> + `execu‹ +(); + +413 +$afãùedRows + = +$¡mt +-> + `rowCouÁ +(); + +415 +$¡mt + = +nuÎ +; + +417 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +418 ià( +$¡mt +è$¡mˆð +nuÎ +; + +419 +Prݖ +:: + `log +( +$e +-> + `g‘Mes§ge +(), Prݖ:: +LOG_ERR +); + +420 +throw + +Ãw + + `PrݖExû±iÚ +("UÇbˁØexecu‹ UPDATE s‹m’t.", +$e +); + +425  +$afãùedRows +; + +426 + } +} + +437 +public +  +funùiÚ + + $doS–eù +( +Cr™”Ÿ + +$ü™”Ÿ +, +PrݖPDO + +$cÚ + = +nuÎ +) + +439 +$dbM­ + = +Prݖ +:: + `g‘D©aba£M­ +( +$ü™”Ÿ +-> + `g‘DbName +()); + +440 +$db + = +Prݖ +:: + `g‘DB +( +$ü™”Ÿ +-> + `g‘DbName +()); + +442 ià( +$cÚ + ==ð +nuÎ +) { + +443 +$cÚ + = +Prݖ +:: + `g‘CÚÃùiÚ +( +$ü™”Ÿ +-> + `g‘DbName +(), Prݖ:: +CONNECTION_READ +); + +446 +$¡mt + = +nuÎ +; + +448 ià( +$ü™”Ÿ +-> + `isU£T¿n§ùiÚ +()è +$cÚ +-> + `begšT¿n§ùiÚ +(); + +450 +Œy + { + +452 +$·¿ms + = + `¬¿y +(); + +453 +$sql + = +£lf +:: + `ü—‹S–eùSql +( +$ü™”Ÿ +, +$·¿ms +); + +455 +$¡mt + = +$cÚ +-> + `´•¬e +( +$sql +); + +457 +£lf +:: + `pÝuϋStmtV®ues +( +$¡mt +, +$·¿ms +, +$dbM­ +, +$db +); + +459 +$¡mt +-> + `execu‹ +(); + +461 ià( +$ü™”Ÿ +-> + `isU£T¿n§ùiÚ +()è +$cÚ +-> + `comm™ +(); + +463 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +464 ià( +$¡mt +è$¡mˆð +nuÎ +; + +465 ià( +$ü™”Ÿ +-> + `isU£T¿n§ùiÚ +()è +$cÚ +-> + `rÞlBack +(); + +466 +Prݖ +:: + `log +( +$e +-> + `g‘Mes§ge +(), Prݖ:: +LOG_ERR +); + +467 +throw + +Ãw + + `PrݖExû±iÚ +( +$e +); + +470  +$¡mt +; + +471 + } +} + +483 +public +  +funùiÚ + + $doCouÁ +( +Cr™”Ÿ + +$ü™”Ÿ +, +PrݖPDO + +$cÚ + = +nuÎ +) + +485 +$dbM­ + = +Prݖ +:: + `g‘D©aba£M­ +( +$ü™”Ÿ +-> + `g‘DbName +()); + +486 +$db + = +Prݖ +:: + `g‘DB +( +$ü™”Ÿ +-> + `g‘DbName +()); + +488 ià( +$cÚ + ==ð +nuÎ +) { + +489 +$cÚ + = +Prݖ +:: + `g‘CÚÃùiÚ +( +$ü™”Ÿ +-> + `g‘DbName +(), Prݖ:: +CONNECTION_READ +); + +492 +$¡mt + = +nuÎ +; + +494 ià( +$ü™”Ÿ +-> + `isU£T¿n§ùiÚ +()è +$cÚ +-> + `begšT¿n§ùiÚ +(); + +496 +$ÃedsCom¶exCouÁ + = ( +$ü™”Ÿ +-> + `g‘GroupByCÞumns +(è|| $ü™”Ÿ-> + `g‘Off£t +() + +497 || +$ü™”Ÿ +-> + `g‘Lim™ +(è|| $ü™”Ÿ-> + `g‘Havšg +(è|| + `š_¬¿y +( +Cr™”Ÿ +:: +DISTINCT +, $ü™”Ÿ-> + `g‘S–eùModif›rs +())); + +499 +Œy + { + +501 +$·¿ms + = + `¬¿y +(); + +503 ià( +$ÃedsCom¶exCouÁ +) { + +504 ià( +£lf +:: + `ÃedsS–eùAlŸ£s +( +$ü™”Ÿ +)) { + +505 +£lf +:: + `tuºS–eùCÞumnsToAlŸ£s +( +$ü™”Ÿ +); + +507 +$£ËùSql + = +£lf +:: + `ü—‹S–eùSql +( +$ü™”Ÿ +, +$·¿ms +); + +508 +$sql + = 'SELECT COUNT(*èFROM (' . +$£ËùSql + . ') AS…ropelmatch4cnt'; + +511 +$ü™”Ÿ +-> + `þ—rS–eùCÞumns +()-> + `addS–eùCÞumn +('COUNT(*)'); + +512 +$sql + = +£lf +:: + `ü—‹S–eùSql +( +$ü™”Ÿ +, +$·¿ms +); + +515 +$¡mt + = +$cÚ +-> + `´•¬e +( +$sql +); + +516 +£lf +:: + `pÝuϋStmtV®ues +( +$¡mt +, +$·¿ms +, +$dbM­ +, +$db +); + +517 +$¡mt +-> + `execu‹ +(); + +519 ià( +$ü™”Ÿ +-> + `isU£T¿n§ùiÚ +()è +$cÚ +-> + `comm™ +(); + +521 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +522 ià( +$¡mt +è$¡mˆð +nuÎ +; + +523 ià( +$ü™”Ÿ +-> + `isU£T¿n§ùiÚ +()è +$cÚ +-> + `rÞlBack +(); + +524 +Prݖ +:: + `log +( +$e +-> + `g‘Mes§ge +(), Prݖ:: +LOG_ERR +); + +525 +throw + +Ãw + + `PrݖExû±iÚ +( +$e +); + +528  +$¡mt +; + +529 + } +} + +551 +public +  +funùiÚ + + $pÝuϋStmtV®ues +( +PDOS‹m’t + +$¡mt +, +¬¿y + +$·¿ms +, +D©aba£M­ + +$dbM­ +, +DBAd­‹r + +$db +) + +553 +$i + = 1; + +554 + `fܗch + ( +$·¿ms + +as + +$·¿m +) { + +555 +$bËName + = +$·¿m +['table']; + +556 +$cÞumnName + = +$·¿m +['column']; + +557 +$v®ue + = +$·¿m +['value']; + +559 ià( +$v®ue + ==ð +nuÎ +) { + +561 +$¡mt +-> + `bšdV®ue +(':p'. +$i +++, +nuÎ +, +PDO +:: +PARAM_NULL +); + +563 } + `–£if + ( + `is£t +( +$bËName +) ) { + +565 +$cM­ + = +$dbM­ +-> + `g‘TabË +( +$bËName +)-> + `g‘CÞumn +( +$cÞumnName +); + +566 +$ty³ + = +$cM­ +-> + `g‘Ty³ +(); + +567 +$pdoTy³ + = +$cM­ +-> + `g‘PdoTy³ +(); + +571 ià( +$pdoTy³ + =ð +PDO +:: +PARAM_BOOL + && +$db + +š¡ªûof + +DBMySQL +) { + +572 +$v®ue + = () $value; + +573 +$pdoTy³ + = +PDO +:: +PARAM_INT +; + +574 } + `–£if + ( + `is_num”ic +( +$v®ue +è&& +$cM­ +-> + `isEpochTempÜ® +()) { + +575 ià( +$ty³ + =ð +PrݖCÞumnTy³s +:: +TIMESTAMP +) { + +576 +$v®ue + = + `d©e +( +$db +-> + `g‘Time¡ampFÜm©‹r +(), $value); + +577 } ià( +$ty³ + =ð +PrݖCÞumnTy³s +:: +DATE +) { + +578 +$v®ue + = + `d©e +( +$db +-> + `g‘D©eFÜm©‹r +(), $value); + +579 } ià( +$ty³ + =ð +PrݖCÞumnTy³s +:: +TIME +) { + +580 +$v®ue + = + `d©e +( +$db +-> + `g‘TimeFÜm©‹r +(), $value); + +582 } + `–£if + ( +$v®ue + +š¡ªûof + +D©eTime + && +$cM­ +-> + `isTempÜ® +()) { + +583 ià( +$ty³ + =ð +PrݖCÞumnTy³s +:: +TIMESTAMP + || $ty³ =ðPrݖCÞumnTy³s:: +BU_TIMESTAMP +) { + +584 +$v®ue + = $v®ue-> + `fÜm© +( +$db +-> + `g‘Time¡ampFÜm©‹r +()); + +585 } ià( +$ty³ + =ð +PrݖCÞumnTy³s +:: +DATE + || $ty³ =ðPrݖCÞumnTy³s:: +BU_DATE +) { + +586 +$v®ue + = $v®ue-> + `fÜm© +( +$db +-> + `g‘D©eFÜm©‹r +()); + +587 } ià( +$ty³ + =ð +PrݖCÞumnTy³s +:: +TIME +) { + +588 +$v®ue + = $v®ue-> + `fÜm© +( +$db +-> + `g‘TimeFÜm©‹r +()); + +590 } + `–£if + ( + `is_»sourû +( +$v®ue +è&& +$cM­ +-> + `isLob +()) { + +593 + `»wšd +( +$v®ue +); + +596 +$¡mt +-> + `bšdV®ue +(':p'. +$i +++, +$v®ue +, +$pdoTy³ +); + +598 +$¡mt +-> + `bšdV®ue +(':p'. +$i +++, +$v®ue +); + +601 + } +} + +610 +public +  +funùiÚ + + $doV®id©e +( +$dbName +, +$bËName +, +$cÞumns +) + +612 +$dbM­ + = +Prݖ +:: + `g‘D©aba£M­ +( +$dbName +); + +613 +$bËM­ + = +$dbM­ +-> + `g‘TabË +( +$bËName +); + +614 +$çžu»M­ + = + `¬¿y +(); + +615 + `fܗch + ( +$cÞumns + +as + +$cÞName + => +$cÞV®ue +) { + +616 ià( +$bËM­ +-> + `cڏšsCÞumn +( +$cÞName +)) { + +617 +$cÞ + = +$bËM­ +-> + `g‘CÞumn +( +$cÞName +); + +618 + `fܗch + ( +$cÞ +-> + `g‘V®id©Üs +(è +as + +$v®id©ÜM­ +) { + +619 +$v®id©Ü + = +Ba£P“r +:: + `g‘V®id©Ü +( +$v®id©ÜM­ +-> + `g‘CÏss +()); + +620 ià( +$v®id©Ü + && ( +$cÞ +-> + `isNÙNuÎ +(è|| +$cÞV®ue + !=ð +nuÎ +è&& $v®id©Ü-> + `isV®id +( +$v®id©ÜM­ +, $cÞV®ueè==ð +çl£ +) { + +621 ià(! + `is£t +( +$çžu»M­ +[ +$cÞName +])) { + +622 +$çžu»M­ +[ +$cÞName +] = +Ãw + + `V®id©iÚFažed +($cÞName, +$v®id©ÜM­ +-> + `g‘Mes§ge +(), +$v®id©Ü +); + +628  (! + `em±y +( +$çžu»M­ +è? $çžu»M­ : +Œue +); + +629 + } +} + +640 +´iv©e +  +funùiÚ + + $g‘Prim¬yKey +( +Cr™”Ÿ + +$ü™”Ÿ +) + +643 +$keys + = +$ü™”Ÿ +-> + `keys +(); + +644 +$key + = +$keys +[0]; + +645 +$bË + = +$ü™”Ÿ +-> + `g‘TabËName +( +$key +); + +647 +$pk + = +nuÎ +; + +649 ià(! + `em±y +( +$bË +)) { + +651 +$dbM­ + = +Prݖ +:: + `g‘D©aba£M­ +( +$ü™”Ÿ +-> + `g‘DbName +()); + +653 ià( +$dbM­ + ==ð +nuÎ +) { + +654 +throw + +Ãw + + `PrݖExû±iÚ +("\$dbMap is‚ull"); + +657 ià( +$dbM­ +-> + `g‘TabË +( +$bË +è==ð +nuÎ +) { + +658 +throw + +Ãw + + `PrݖExû±iÚ +("\$dbMap->getTable() is‚ull"); + +661 +$cÞumns + = +$dbM­ +-> + `g‘TabË +( +$bË +)-> + `g‘CÞumns +(); + +662 + `fܗch + ( + `¬¿y_keys +( +$cÞumns +è +as + +$key +) { + +663 ià( +$cÞumns +[ +$key +]-> + `isPrim¬yKey +()) { + +664 +$pk + = +$cÞumns +[ +$key +]; + +669  +$pk +; + +670 + } +} + +677 +public +  +funùiÚ + + $ÃedsS–eùAlŸ£s +( +Cr™”Ÿ + +$ü™”Ÿ +) + +679 +$cÞumnNames + = + `¬¿y +(); + +680 + `fܗch + ( +$ü™”Ÿ +-> + `g‘S–eùCÞumns +(è +as + +$fuÎyQu®if›dCÞumnName +) { + +681 ià( +$pos + = + `¡¼pos +( +$fuÎyQu®if›dCÞumnName +, '.')) { + +682 +$cÞumnName + = + `sub¡r +( +$fuÎyQu®if›dCÞumnName +, +$pos +); + +683 ià( + `is£t +( +$cÞumnNames +[ +$cÞumnName +])) { + +685  +Œue +; + +687 +$cÞumnNames +[ +$cÞumnName +] = +Œue +; + +690  +çl£ +; + +691 + } +} + +702 +public +  +funùiÚ + + $tuºS–eùCÞumnsToAlŸ£s +( +Cr™”Ÿ + +$ü™”Ÿ +) + +704 +$£ËùCÞumns + = +$ü™”Ÿ +-> + `g‘S–eùCÞumns +(); + +706 +$asCÞumns + = +$ü™”Ÿ +-> + `g‘AsCÞumns +(); + +707 +$ü™”Ÿ +-> + `þ—rS–eùCÞumns +(); + +708 +$cÞumnAlŸ£s + = +$asCÞumns +; + +710 + `fܗch + ( +$£ËùCÞumns + +as + +$þau£ +) { + +712 +$ba£AlŸs + = + `´eg_»¶aû +('/\W/', '_', +$þau£ +); + +713 +$®Ÿs + = +$ba£AlŸs +; + +715 +$i + = 0; + +716  + `is£t +( +$cÞumnAlŸ£s +[ +$®Ÿs +])) { + +717 +$i +++; + +718 +$®Ÿs + = +$ba£AlŸs + . '_' . +$i +; + +721 +$ü™”Ÿ +-> + `addAsCÞumn +( +$®Ÿs +, +$þau£ +); + +722 +$cÞumnAlŸ£s +[ +$®Ÿs +] = +$þau£ +; + +725 + `fܗch + ( +$asCÞumns + +as + +$Çme + => +$þau£ +) { + +726 +$ü™”Ÿ +-> + `addAsCÞumn +( +$Çme +, +$þau£ +); + +729  +$ü™”Ÿ +; + +730 + } +} + +745 +public +  +funùiÚ + + $ü—‹S–eùSql +( +Cr™”Ÿ + +$ü™”Ÿ +, & +$·¿ms +) + +747 +$db + = +Prݖ +:: + `g‘DB +( +$ü™”Ÿ +-> + `g‘DbName +()); + +748 +$dbM­ + = +Prݖ +:: + `g‘D©aba£M­ +( +$ü™”Ÿ +-> + `g‘DbName +()); + +751 +$£ËùCÏu£ + = + `¬¿y +(); + +752 +$äomCÏu£ + = + `¬¿y +(); + +753 +$jošCÏu£ + = + `¬¿y +(); + +754 +$jošTabËs + = + `¬¿y +(); + +755 +$wh”eCÏu£ + = + `¬¿y +(); + +756 +$Üd”ByCÏu£ + = + `¬¿y +(); + +759 +$Üd”By + = +$ü™”Ÿ +-> + `g‘Ord”ByCÞumns +(); + +760 +$groupBy + = +$ü™”Ÿ +-> + `g‘GroupByCÞumns +(); + +761 +$ignÜeCa£ + = +$ü™”Ÿ +-> + `isIgnÜeCa£ +(); + +762 +$£Ëù + = +$ü™”Ÿ +-> + `g‘S–eùCÞumns +(); + +763 +$®Ÿ£s + = +$ü™”Ÿ +-> + `g‘AsCÞumns +(); + +766 +$£ËùModif›rs + = +$ü™”Ÿ +-> + `g‘S–eùModif›rs +(); + +769 + `fܗch + ( +$£Ëù + +as + +$cÞumnName +) { + +774 +$bËName + = +nuÎ +; + +776 +$£ËùCÏu£ +[] = +$cÞumnName +; + +778 +$·»nPos + = + `¡¼pos +( +$cÞumnName +, '('); + +779 +$dÙPos + = + `¡¼pos +( +$cÞumnName +, '.', ( +$·»nPos + !=ð +çl£ + ? $parenPos : 0)); + +785 ià( +$dÙPos + !=ð +çl£ +) { + +787 ià( +$·»nPos + ==ð +çl£ +) { + +788 +$bËName + = + `sub¡r +( +$cÞumnName +, 0, +$dÙPos +); + +790 +$bËName + = + `sub¡r +( +$cÞumnName +, +$·»nPos + + 1, +$dÙPos + - ($parenPos + 1)); + +794 +$Ï¡S·û + = + `¡½os +( +$bËName +, ' '); + +795 ià( +$Ï¡S·û + !=ð +çl£ +) { + +796 +$bËName + = + `sub¡r +($bËName, +$Ï¡S·û + + 1); + +799 +$bËName2 + = +$ü™”Ÿ +-> + `g‘TabËFÜAlŸs +( +$bËName +); + +800 ià( +$bËName2 + !=ð +nuÎ +) { + +801 +$äomCÏu£ +[] = +$bËName2 + . ' ' . +$bËName +; + +803 +$äomCÏu£ +[] = +$bËName +; + +810 + `fܗch + ( +$®Ÿ£s + +as + +$®Ÿs + => +$cÞ +) { + +811 +$£ËùCÏu£ +[] = +$cÞ + . " AS " . +$®Ÿs +; + +817 + `fܗch + ( +$ü™”Ÿ +-> + `keys +(è +as + +$key +) { + +819 +$ü™”iÚ + = +$ü™”Ÿ +-> + `g‘Cr™”iÚ +( +$key +); + +820 +$someCr™”Ÿ + = +$ü™”iÚ +-> + `g‘A‰achedCr™”iÚ +(); + +821 +$someCr™”ŸL’gth + = + `couÁ +( +$someCr™”Ÿ +); + +822 +$bË + = +nuÎ +; + +823  +$i +=0; $˜< +$someCr™”ŸL’gth +; $i++) { + +824 +$bËName + = +$someCr™”Ÿ +[ +$i +]-> + `g‘TabË +(); + +826 +$bË + = +$ü™”Ÿ +-> + `g‘TabËFÜAlŸs +( +$bËName +); + +827 ià( +$bË + !=ð +nuÎ +) { + +828 +$äomCÏu£ +[] = +$bË + . ' ' . +$bËName +; + +830 +$äomCÏu£ +[] = +$bËName +; + +831 +$bË + = +$bËName +; + +834 +$ignÜeCa£ + = + +835 (( +$ü™”Ÿ +-> + `isIgnÜeCa£ +() + +836 || +$someCr™”Ÿ +[ +$i +]-> + `isIgnÜeCa£ +()) + +837 && ( + `¡½os +( +$dbM­ +-> + `g‘TabË +( +$bË +)-> + `g‘CÞumn +( +$someCr™”Ÿ +[ +$i +]->g‘CÞumn())-> + `g‘Ty³ +(), "VARCHAR"è!=ð +çl£ +) + +840 +$someCr™”Ÿ +[ +$i +]-> + `£tIgnÜeCa£ +( +$ignÜeCa£ +); + +843 +$ü™”iÚ +-> + `£tDB +( +$db +); + +845 +$sb + = ""; + +846 +$ü™”iÚ +-> + `­³ndPsTo +( +$sb +, +$·¿ms +); + +847 +$wh”eCÏu£ +[] = +$sb +; + +853 + `fܗch + (( +¬¿y +è +$ü™”Ÿ +-> + `g‘Jošs +(è +as + +$još +) { + +855 +$ËáTabË + = +$još +-> + `g‘LeáTabËName +(); + +856 +$ËáTabËAlŸs + = ''; + +857 ià( +$»®TabË + = +$ü™”Ÿ +-> + `g‘TabËFÜAlŸs +( +$ËáTabË +)) { + +858 +$ËáTabËAlŸs + = " $leftTable"; + +859 +$ËáTabË + = +$»®TabË +; + +862 +$rightTabË + = +$još +-> + `g‘RightTabËName +(); + +863 +$rightTabËAlŸs + = ''; + +864 ià( +$»®TabË + = +$ü™”Ÿ +-> + `g‘TabËFÜAlŸs +( +$rightTabË +)) { + +865 +$rightTabËAlŸs + = " $rightTable"; + +866 +$rightTabË + = +$»®TabË +; + +870 ià( +$ignÜeCa£ + = +$ü™”Ÿ +-> + `isIgnÜeCa£ +()) { + +871 +$ËáCÞTy³ + = +$dbM­ +-> + `g‘TabË +( +$ËáTabË +)-> + `g‘CÞumn +( +$još +-> + `g‘LeáCÞumnName +())-> + `g‘Ty³ +(); + +872 +$rightCÞTy³ + = +$dbM­ +-> + `g‘TabË +( +$rightTabË +)-> + `g‘CÞumn +( +$još +-> + `g‘RightCÞumnName +())-> + `g‘Ty³ +(); + +873 +$ignÜeCa£ + = ( +$ËáCÞTy³ + =ð'¡ršg' || +$rightCÞTy³ + == 'string'); + +877 +$cÚd™iÚ + = ''; + +878 + `fܗch + ( +$još +-> + `g‘CÚd™iÚs +(è +as + +$šdex + => +$cÚd™iÚDesc +) + +880 ià( +$ignÜeCa£ +) { + +881 +$cÚd™iÚ + .ð +$db +-> + `ignÜeCa£ +( +$cÚd™iÚDesc +['left']) . $conditionDesc['operator'] . $db->ignoreCase($conditionDesc['right']); + +883 +$cÚd™iÚ + .ð + `im¶ode +( +$cÚd™iÚDesc +); + +885 ià( +$šdex + + 1 < +$još +-> + `couÁCÚd™iÚs +()) { + +886 +$cÚd™iÚ + .= ' AND '; + +891 ià( +$jošTy³ + = +$još +-> + `g‘JošTy³ +()) { + +893 ià(! +$äomCÏu£ +) { + +894 +$äomCÏu£ +[] = +$ËáTabË + . +$ËáTabËAlŸs +; + +896 +$jošTabËs +[] = +$rightTabË + . +$rightTabËAlŸs +; + +897 +$jošCÏu£ +[] = +$još +-> + `g‘JošTy³ +(è. ' ' . +$rightTabË + . +$rightTabËAlŸs + . " ON ($condition)"; + +900 +$äomCÏu£ +[] = +$ËáTabË + . +$ËáTabËAlŸs +; + +901 +$äomCÏu£ +[] = +$rightTabË + . +$rightTabËAlŸs +; + +902 +$wh”eCÏu£ +[] = +$cÚd™iÚ +; + +907 +$äomCÏu£ + = + `¬¿y_unique +($fromClause); + +908 +$äomCÏu£ + = + `¬¿y_diff +($äomCÏu£, + `¬¿y +('')); + +911 ià( +$jošTabËs + && +$äomCÏu£ +) { + +912 + `fܗch + ( +$äomCÏu£ + +as + +$fi + => +$áabË +) { + +913 ià( + `š_¬¿y +( +$áabË +, +$jošTabËs +)) { + +914 + `un£t +( +$äomCÏu£ +[ +$fi +]); + +920 +$groupByCÏu£ + = +$groupBy +; + +922 +$havšg + = +$ü™”Ÿ +-> + `g‘Havšg +(); + +923 +$havšgSŒšg + = +nuÎ +; + +924 ià( +$havšg + !=ð +nuÎ +) { + +925 +$sb + = ""; + +926 +$havšg +-> + `­³ndPsTo +( +$sb +, +$·¿ms +); + +927 +$havšgSŒšg + = +$sb +; + +930 ià(! + `em±y +( +$Üd”By +)) { + +932 + `fܗch + ( +$Üd”By + +as + +$Üd”ByCÞumn +) { + +936 ià( + `¡½os +( +$Üd”ByCÞumn +, '('è!=ð +çl£ +) { + +937 +$Üd”ByCÏu£ +[] = +$Üd”ByCÞumn +; + +943 +$dÙPos + = + `¡¼pos +( +$Üd”ByCÞumn +, '.'); + +945 ià( +$dÙPos + !=ð +çl£ +) { + +946 +$bËName + = + `sub¡r +( +$Üd”ByCÞumn +, 0, +$dÙPos +); + +947 +$cÞumnName + = + `sub¡r +( +$Üd”ByCÞumn +, +$dÙPos ++1); + +950 +$bËName + = ''; + +951 +$cÞumnName + = +$Üd”ByCÞumn +; + +954 +$¥aûPos + = + `¡½os +( +$cÞumnName +, ' '); + +956 ià( +$¥aûPos + !=ð +çl£ +) { + +957 +$dœeùiÚ + = + `sub¡r +( +$cÞumnName +, +$¥aûPos +); + +958 +$cÞumnName + = + `sub¡r +($cÞumnName, 0, +$¥aûPos +); + +961 +$dœeùiÚ + = ''; + +964 +$bËAlŸs + = +$bËName +; + +965 ià( +$®ŸsTabËName + = +$ü™”Ÿ +-> + `g‘TabËFÜAlŸs +( +$bËName +)) { + +966 +$bËName + = +$®ŸsTabËName +; + +969 +$cÞumnAlŸs + = +$cÞumnName +; + +970 ià( +$asCÞumnName + = +$ü™”Ÿ +-> + `g‘CÞumnFÜAs +( +$cÞumnName +)) { + +971 +$cÞumnName + = +$asCÞumnName +; + +974 +$cÞumn + = +$bËName + ? +$dbM­ +-> + `g‘TabË +($bËName)-> + `g‘CÞumn +( +$cÞumnName +è: +nuÎ +; + +976 ià( +$ü™”Ÿ +-> + `isIgnÜeCa£ +(è&& +$cÞumn + && $cÞumn-> + `isText +()) { + +977 +$Üd”ByCÏu£ +[] = +$db +-> + `ignÜeCa£InOrd”By +("$bËAlŸs.$cÞumnAlŸs"è. +$dœeùiÚ +; + +978 +$£ËùCÏu£ +[] = +$db +-> + `ignÜeCa£InOrd”By +("$tableAlias.$columnAlias"); + +980 +$Üd”ByCÏu£ +[] = +$Üd”ByCÞumn +; + +985 ià( + `em±y +( +$äomCÏu£ +è&& +$ü™”Ÿ +-> + `g‘Prim¬yTabËName +()) { + +986 +$äomCÏu£ +[] = +$ü™”Ÿ +-> + `g‘Prim¬yTabËName +(); + +990 ià( +$db +-> + `u£QuÙeId’tif›r +()) { + +991 +$äomCÏu£ + = + `¬¿y_m­ +( + `¬¿y +( +$db +, 'quoteIdentifierTable'), $fromClause); + +992 +$jošCÏu£ + = $jošCÏu£ ? $jošCÏu£ : + `¬¿y_m­ +( + `¬¿y +( +$db +, 'quoteIdentifierTable'), $joinClause); + +996 +$äom + = ''; + +997 ià(! + `em±y +( +$jošCÏu£ +è&& + `couÁ +( +$äomCÏu£ +) > 1) { + +998 +$äom + .ð + `im¶ode +(" CROSS JOIN ", +$äomCÏu£ +); + +1000 +$äom + .ð + `im¶ode +(", ", +$äomCÏu£ +); + +1003 +$äom + .ð +$jošCÏu£ + ? ' ' . + `im¶ode +(' ', $joinClause) : ''; + +1006 +$sql + = "SELECT " + +1007 .( +$£ËùModif›rs + ? + `im¶ode +(" ", $selectModifiers) . " " : "") + +1008 . + `im¶ode +(", ", +$£ËùCÏu£ +) + +1009 ." FROM " . +$äom + + +1010 .( +$wh”eCÏu£ + ? " WHERE ". + `im¶ode +(" AND ", $whereClause) : "") + +1011 .( +$groupByCÏu£ + ? " GROUP BY ". + `im¶ode +(",", $groupByClause) : "") + +1012 .( +$havšgSŒšg + ? " HAVING ".$havingString : "") + +1013 .( +$Üd”ByCÏu£ + ? " ORDER BY ". + `im¶ode +(",", $orderByClause) : ""); + +1016 ià( +$ü™”Ÿ +-> + `g‘Lim™ +(è|| $ü™”Ÿ-> + `g‘Off£t +()) { + +1017 +$db +-> + `­¶yLim™ +( +$sql +, +$ü™”Ÿ +-> + `g‘Off£t +(), $ü™”Ÿ-> + `g‘Lim™ +()); + +1020  +$sql +; + +1021 + } +} + +1030 +´iv©e +  +funùiÚ + + $buždP¬ams +( +$cÞumns +, +Cr™”Ÿ + +$v®ues +) + +1032 +$·¿ms + = + `¬¿y +(); + +1033 + `fܗch + ( +$cÞumns + +as + +$key +) { + +1034 ià( +$v®ues +-> + `cڏšsKey +( +$key +)) { + +1035 +$ü™ + = +$v®ues +-> + `g‘Cr™”iÚ +( +$key +); + +1036 +$·¿ms +[] = + `¬¿y +('cÞumn' => +$ü™ +-> + `g‘CÞumn +(), 'bË' => $ü™-> + `g‘TabË +(), 'v®ue' => $ü™-> + `g‘V®ue +()); + +1039  +$·¿ms +; + +1040 + } +} + +1049 +public +  +funùiÚ + + $g‘V®id©Ü +( +$þas¢ame +) + +1051 +Œy + { + +1052 +$v + = + `is£t +( +£lf +:: +$v®id©ÜM­ +[ +$þas¢ame +]è? s–f::$v®id©ÜM­[$þas¢ame] : +nuÎ +; + +1053 ià( +$v + ==ð +nuÎ +) { + +1054 +$þs + = +Prݖ +:: + `impÜtCÏss +( +$þas¢ame +); + +1055 +$v + = +Ãw + + `$þs +(); + +1056 +£lf +:: +$v®id©ÜM­ +[ +$þas¢ame +] = +$v +; + +1058  +$v +; + +1059 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +1060 +Prݖ +:: + `log +("Ba£P“r::g‘V®id©Ü(): fažedryšgØš¡ªtŸ‹ " . +$þas¢ame + . ": ". +$e +-> + `g‘Mes§ge +(), Prݖ:: +LOG_ERR +); + +1062 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/Criteria.php + +1 "; + +47 cÚ¡ + mALT_NOT_EQUAL + = "!="; + +50 cÚ¡ + mGREATER_THAN + = ">"; + +53 cÚ¡ + mLESS_THAN + = "<"; + +56 cÚ¡ + mGREATER_EQUAL + = ">="; + +59 cÚ¡ + mLESS_EQUAL + = "<="; + +62 cÚ¡ + mLIKE + = " LIKE "; + +65 cÚ¡ + mNOT_LIKE + = " NOT LIKE "; + +68 cÚ¡ + mILIKE + = " ILIKE "; + +71 cÚ¡ + mNOT_ILIKE + = " NOT ILIKE "; + +74 cÚ¡ + mCUSTOM + = "CUSTOM"; + +77 cÚ¡ + mCUSTOM_EQUAL + = "CUSTOM_EQUAL"; + +80 cÚ¡ + mDISTINCT + = "DISTINCT "; + +83 cÚ¡ + mIN + = " IN "; + +86 cÚ¡ + mNOT_IN + = " NOT IN "; + +89 cÚ¡ + mALL + = "ALL "; + +92 cÚ¡ + mJOIN + = "JOIN"; + +95 cÚ¡ + mBINARY_AND + = "&"; + +98 cÚ¡ + mBINARY_OR + = "|"; + +101 cÚ¡ + mASC + = "ASC"; + +104 cÚ¡ + mDESC + = "DESC"; + +107 cÚ¡ + mISNULL + = " IS NULL "; + +110 cÚ¡ + mISNOTNULL + = " IS NOT NULL "; + +113 cÚ¡ + mCURRENT_DATE + = "CURRENT_DATE"; + +116 cÚ¡ + mCURRENT_TIME + = "CURRENT_TIME"; + +119 cÚ¡ + mCURRENT_TIMESTAMP + = "CURRENT_TIMESTAMP"; + +122 cÚ¡ + mLEFT_JOIN + = "LEFT JOIN"; + +125 cÚ¡ + mRIGHT_JOIN + = "RIGHT JOIN"; + +128 cÚ¡ + mINNER_JOIN + = "INNER JOIN"; + +130 +´iv©e + + m$ignÜeCa£ + = +çl£ +; + +131 +´iv©e + + m$sšgËRecÜd + = +çl£ +; + +132 +´iv©e + + m$£ËùModif›rs + = +¬¿y +(); + +133 +´iv©e + + m$£ËùCÞumns + = +¬¿y +(); + +134 +´iv©e + + m$Üd”ByCÞumns + = +¬¿y +(); + +135 +´iv©e + + m$groupByCÞumns + = +¬¿y +(); + +136 +´iv©e + + m$havšg + = +nuÎ +; + +137 +´iv©e + + m$asCÞumns + = +¬¿y +(); + +138 +´iv©e + + m$jošs + = +¬¿y +(); + +141 +´iv©e + + m$dbName +; + +149 +´iv©e + + m$´im¬yTabËName +; + +152 +´iv©e + + m$Üigš®DbName +; + +158 +´iv©e + + m$lim™ + = 0; + +161 +´iv©e + + m$off£t + = 0; + +164 +´iv©e + + m$blobFÏg + = +nuÎ +; + +166 +´iv©e + + m$®Ÿ£s + = +¬¿y +(); + +168 +´iv©e + + m$u£T¿n§ùiÚ + = +çl£ +; + +174 +´iv©e + + m$m­ + = +¬¿y +(); + +182 +public + +funùiÚ + + $__cÚ¡ruù +( +$dbName + = +nuÎ +) + +184 +$this +-> + `£tDbName +( +$dbName +); + +185 +$this +-> +Üigš®DbName + = +$dbName +; + +192 +public + +funùiÚ + + $g‘I‹¿tÜ +() + +194  +Ãw + + `Cr™”iÚI‹¿tÜ +( +$this +); + +195 + } +} + +201 +public + +funùiÚ + + $g‘M­ +() + +203  +$this +-> +m­ +; + +204 + } +} + +212 +public + +funùiÚ + + $þ—r +() + +214 +$this +-> +m­ + = + `¬¿y +(); + +215 +$this +-> +ignÜeCa£ + = +çl£ +; + +216 +$this +-> +sšgËRecÜd + = +çl£ +; + +217 +$this +-> +£ËùModif›rs + = + `¬¿y +(); + +218 +$this +-> +£ËùCÞumns + = + `¬¿y +(); + +219 +$this +-> +Üd”ByCÞumns + = + `¬¿y +(); + +220 +$this +-> +groupByCÞumns + = + `¬¿y +(); + +221 +$this +-> +havšg + = +nuÎ +; + +222 +$this +-> +asCÞumns + = + `¬¿y +(); + +223 +$this +-> +jošs + = + `¬¿y +(); + +224 +$this +-> +dbName + = $this-> +Üigš®DbName +; + +225 +$this +-> +off£t + = 0; + +226 +$this +-> +lim™ + = -1; + +227 +$this +-> +blobFÏg + = +nuÎ +; + +228 +$this +-> +®Ÿ£s + = + `¬¿y +(); + +229 +$this +-> +u£T¿n§ùiÚ + = +çl£ +; + +230 + } +} + +247 +public + +funùiÚ + + $addAsCÞumn +( +$Çme +, +$þau£ +) + +249 +$this +-> +asCÞumns +[ +$Çme +] = +$þau£ +; + +250  +$this +; + +251 + } +} + +259 +public + +funùiÚ + + $g‘AsCÞumns +() + +261  +$this +-> +asCÞumns +; + +262 + } +} + +270 +public + +funùiÚ + + $g‘CÞumnFÜAs +( +$as +) + +272 ià( + `is£t +( +$this +-> +asCÞumns +[ +$as +])) { + +273  +$this +-> +asCÞumns +[ +$as +]; + +275 + } +} + +285 +public + +funùiÚ + + $addAlŸs +( +$®Ÿs +, +$bË +) + +287 +$this +-> +®Ÿ£s +[ +$®Ÿs +] = +$bË +; + +288 + } +} + +296 +public + +funùiÚ + + $g‘TabËFÜAlŸs +( +$®Ÿs +) + +298 ià( + `is£t +( +$this +-> +®Ÿ£s +[ +$®Ÿs +])) { + +299  +$this +-> +®Ÿ£s +[ +$®Ÿs +]; + +301 + } +} + +307 +public + +funùiÚ + + $keys +() + +309  + `¬¿y_keys +( +$this +-> +m­ +); + +310 + } +} + +318 +public + +funùiÚ + + $cڏšsKey +( +$cÞumn +) + +322  + `¬¿y_key_exi¡s +( +$cÞumn +, +$this +-> +m­ +); + +323 + } +} + +331 +public + +funùiÚ + + $keyCڏšsV®ue +( +$cÞumn +) + +335  ( + `¬¿y_key_exi¡s +( +$cÞumn +, +$this +-> +m­ +è&& ($this->m­[$cÞumn]-> + `g‘V®ue +(è!=ð +nuÎ +) ); + +336 + } +} + +345 +public + +funùiÚ + + $£tU£T¿n§ùiÚ +( +$v +) + +347 +$this +-> +u£T¿n§ùiÚ + = ( +boޗn +è +$v +; + +348 + } +} + +356 +public + +funùiÚ + + $isU£T¿n§ùiÚ +() + +358  +$this +-> +u£T¿n§ùiÚ +; + +359 + } +} + +367 +public + +funùiÚ + + $g‘Cr™”iÚ +( +$cÞumn +) + +369 iàÐ + `is£t + ( +$this +-> +m­ +[ +$cÞumn +] ) ) { + +370  +$this +-> +m­ +[ +$cÞumn +]; + +372  +nuÎ +; + +373 + } +} + +385 +public + +funùiÚ + + $g‘NewCr™”iÚ +( +$cÞumn +, +$v®ue +, +$com·risÚ + = +nuÎ +) + +387  +Ãw + + `Cr™”iÚ +( +$this +, +$cÞumn +, +$v®ue +, +$com·risÚ +); + +388 + } +} + +396 +public + +funùiÚ + + $g‘CÞumnName +( +$Çme +) + +398 ià( + `is£t +( +$this +-> +m­ +[ +$Çme +])) { + +399  +$this +-> +m­ +[ +$Çme +]-> + `g‘CÞumn +(); + +401  +nuÎ +; + +402 + } +} + +408 +public + +funùiÚ + + $g‘TabËsCÞumns +() + +410 +$bËs + = + `¬¿y +(); + +411 + `fܗch + ( + `¬¿y_keys + ( +$this +-> +m­ + ) +as + +$key +) { + +412 +$t + = + `sub¡r + ( +$key +, 0, + `¡¼pos + ( $key, '.' ) ); + +413 iàÐ! + `is£t + ( +$bËs +[ +$t +] ) ) { + +414 +$bËs +[ +$t +] = + `¬¿y +Ð +$key + ); + +416 +$bËs +[ +$t +][] = +$key +; + +419  +$bËs +; + +420 + } +} + +428 +public + +funùiÚ + + $g‘Com·risÚ +( +$key +) + +430 iàÐ + `is£t + ( +$this +-> +m­ +[ +$key +] ) ) { + +431  +$this +-> +m­ +[ +$key +]-> + `g‘Com·risÚ +(); + +433  +nuÎ +; + +434 + } +} + +441 +public + +funùiÚ + + $g‘DbName +() + +443  +$this +-> +dbName +; + +444 + } +} + +453 +public + +funùiÚ + + $£tDbName +( +$dbName + = +nuÎ +) + +455 +$this +-> +dbName + = ( +$dbName + ==ð +nuÎ + ? +Prݖ +:: + `g‘DeçuÉDB +() : $dbName); + +456 + } +} + +467 +public + +funùiÚ + + $g‘Prim¬yTabËName +() + +469  +$this +-> +´im¬yTabËName +; + +470 + } +} + +481 +public + +funùiÚ + + $£tPrim¬yTabËName +( +$bËName +) + +483 +$this +-> +´im¬yTabËName + = +$bËName +; + +484 + } +} + +492 +public + +funùiÚ + + $g‘TabËName +( +$Çme +) + +494 ià( + `is£t +( +$this +-> +m­ +[ +$Çme +])) { + +495  +$this +-> +m­ +[ +$Çme +]-> + `g‘TabË +(); + +497  +nuÎ +; + +498 + } +} + +506 +public + +funùiÚ + + $g‘V®ue +( +$Çme +) + +508 ià( + `is£t +( +$this +-> +m­ +[ +$Çme +])) { + +509  +$this +-> +m­ +[ +$Çme +]-> + `g‘V®ue +(); + +511  +nuÎ +; + +512 + } +} + +520 +public + +funùiÚ + + $g‘ +( +$key +) + +522  +$this +-> + `g‘V®ue +( +$key +); + +523 + } +} + +539 +public + +funùiÚ + + $put +( +$key +, +$v®ue +) + +541  +$this +-> + `add +( +$key +, +$v®ue +); + +542 + } +} + +554 +public + +funùiÚ + + $putAÎ +( +$t +) + +557 ià( + `is_¬¿y +( +$t +)) { + +559 + `fܗch + ( +$t + +as + +$key +=> +$v®ue +) { + +561 ià( +$v®ue + +š¡ªûof + +Cr™”iÚ +) { + +563 +$this +-> +m­ +[ +$key +] = +$v®ue +; + +567 +$this +-> + `put +( +$key +, +$v®ue +); + +573 } + `–£if + ( +$t + +š¡ªûof + +Cr™”Ÿ +) { + +575 +$this +-> +jošs + = +$t +->joins; + +579 + } +} + +607 +public + +funùiÚ + + $add +( +$p1 +, +$v®ue + = +nuÎ +, +$com·risÚ + =‚ull) + +609 ià( +$p1 + +š¡ªûof + +Cr™”iÚ +) { + +610 +$this +-> +m­ +[ +$p1 +-> + `g‘TabË +(è. '.' . $p1-> + `g‘CÞumn +()] = $p1; + +612 +$this +-> +m­ +[ +$p1 +] = +Ãw + + `Cr™”iÚ +($this, $p1, +$v®ue +, +$com·risÚ +); + +614  +$this +; + +615 + } +} + +634 +public + +funùiÚ + + $addJoš +( +$Ëá +, +$right +, +$ݔ©Ü + = +nuÎ +) + +636 +$još + = +Ãw + + `Još +(); + +637 ià(! + `is_¬¿y +( +$Ëá +)) { + +639 +$još +-> + `addCÚd™iÚ +( +$Ëá +, +$right +); + +643 + `fܗch + ( +$Ëá + +as + +$key + => +$v®ue +) + +645 +$još +-> + `addCÚd™iÚ +( +$v®ue +, +$right +[ +$key +]); + +648 +$još +-> + `£tJošTy³ +( +$ݔ©Ü +); + +650  +$this +-> + `addJošObjeù +( +$još +); + +651 + } +} + +671 +public + +funùiÚ + + $addMuɝËJoš +( +$cÚd™iÚs +, +$jošTy³ + = +nuÎ +) + +673 +$još + = +Ãw + + `Još +(); + +674 + `fܗch + ( +$cÚd™iÚs + +as + +$cÚd™iÚ +) { + +675 +$još +-> + `addCÚd™iÚ +( +$cÚd™iÚ +[0], $cÚd™iÚ[1], + `is£t +($cÚd™iÚ[2]è? $cÚd™iÚ[2] : +Cr™”Ÿ +:: +EQUAL +); + +677 +$još +-> + `£tJošTy³ +( +$jošTy³ +); + +679  +$this +-> + `addJošObjeù +( +$još +); + +680 + } +} + +689 +public + +funùiÚ + + $addJošObjeù +( +Još + +$još +) + +691 ià(! + `š_¬¿y +( +$još +, +$this +-> +jošs +)) { + +692 +$this +-> +jošs +[] = +$još +; + +694  +$this +; + +695 + } +} + +702 +public + +funùiÚ + + $g‘Jošs +() + +704  +$this +-> +jošs +; + +705 + } +} + +711 +public + +funùiÚ + + $£tAÎ +() + +713 +$this +-> +£ËùModif›rs +[] = +£lf +:: +ALL +; + +714  +$this +; + +715 + } +} + +721 +public + +funùiÚ + + $£tDi¡šù +() + +723 +$this +-> +£ËùModif›rs +[] = +£lf +:: +DISTINCT +; + +724  +$this +; + +725 + } +} + +733 +public + +funùiÚ + + $£tIgnÜeCa£ +( +$b +) + +735 +$this +-> +ignÜeCa£ + = ( +boޗn +è +$b +; + +736  +$this +; + +737 + } +} + +744 +public + +funùiÚ + + $isIgnÜeCa£ +() + +746  +$this +-> +ignÜeCa£ +; + +747 + } +} + +761 +public + +funùiÚ + + $£tSšgËRecÜd +( +$b +) + +763 +$this +-> +sšgËRecÜd + = ( +boޗn +è +$b +; + +764  +$this +; + +765 + } +} + +772 +public + +funùiÚ + + $isSšgËRecÜd +() + +774  +$this +-> +sšgËRecÜd +; + +775 + } +} + +783 +public + +funùiÚ + + $£tLim™ +( +$lim™ +) + +786 +$this +-> +lim™ + = +$lim™ +; + +787  +$this +; + +788 + } +} + +795 +public + +funùiÚ + + $g‘Lim™ +() + +797  +$this +-> +lim™ +; + +798 + } +} + +807 +public + +funùiÚ + + $£tOff£t +( +$off£t +) + +809 +$this +-> +off£t + = (è +$off£t +; + +810  +$this +; + +811 + } +} + +818 +public + +funùiÚ + + $g‘Off£t +() + +820  +$this +-> +off£t +; + +821 + } +} + +829 +public + +funùiÚ + + $addS–eùCÞumn +( +$Çme +) + +831 +$this +-> +£ËùCÞumns +[] = +$Çme +; + +832  +$this +; + +833 + } +} + +844 +public + +funùiÚ + + $hasS–eùCÏu£ +() + +846  (! + `em±y +( +$this +-> +£ËùCÞumns +è|| !em±y($this-> +asCÞumns +)); + +847 + } +} + +855 +public + +funùiÚ + + $g‘S–eùCÞumns +() + +857  +$this +-> +£ËùCÞumns +; + +858 + } +} + +865 +public + +funùiÚ + + $þ—rS–eùCÞumns +() { + +866 +$this +-> +£ËùCÞumns + = $this-> +asCÞumns + = + `¬¿y +(); + +867  +$this +; + +868 + } +} + +875 +public + +funùiÚ + + $g‘S–eùModif›rs +() + +877  +$this +-> +£ËùModif›rs +; + +878 + } +} + +886 +public + +funùiÚ + + $addGroupByCÞumn +( +$groupBy +) + +888 +$this +-> +groupByCÞumns +[] = +$groupBy +; + +889  +$this +; + +890 + } +} + +898 +public + +funùiÚ + + $addAsûndšgOrd”ByCÞumn +( +$Çme +) + +900 +$this +-> +Üd”ByCÞumns +[] = +$Çme + . ' ' . +£lf +:: +ASC +; + +901  +$this +; + +902 + } +} + +910 +public + +funùiÚ + + $addDesûndšgOrd”ByCÞumn +( +$Çme +) + +912 +$this +-> +Üd”ByCÞumns +[] = +$Çme + . ' ' . +£lf +:: +DESC +; + +913  +$this +; + +914 + } +} + +921 +public + +funùiÚ + + $g‘Ord”ByCÞumns +() + +923  +$this +-> +Üd”ByCÞumns +; + +924 + } +} + +931 +public + +funùiÚ + + $þ—rOrd”ByCÞumns +() + +933 +$this +-> +Üd”ByCÞumns + = + `¬¿y +(); + +934  +$this +; + +935 + } +} + +942 +public + +funùiÚ + + $þ—rGroupByCÞumns +() + +944 +$this +-> +groupByCÞumns + = + `¬¿y +(); + +945  +$this +; + +946 + } +} + +953 +public + +funùiÚ + + $g‘GroupByCÞumns +() + +955  +$this +-> +groupByCÞumns +; + +956 + } +} + +963 +public + +funùiÚ + + $g‘Havšg +() + +965  +$this +-> +havšg +; + +966 + } +} + +974 +public + +funùiÚ + + $»move +( +$key +) + +976 iàÐ + `is£t + ( +$this +-> +m­ +[ +$key +] ) ) { + +977 +$»moved + = +$this +-> +m­ +[ +$key +]; + +978 + `un£t + ( +$this +-> +m­ +[ +$key +] ); + +979 iàÐ +$»moved + +š¡ªûof + +Cr™”iÚ + ) { + +980  +$»moved +-> + `g‘V®ue +(); + +982  +$»moved +; + +984 + } +} + +991 +public + +funùiÚ + + $toSŒšg +() + +994 +$sb + = "Criteria:"; + +995 +Œy + { + +997 +$·¿ms + = + `¬¿y +(); + +998 +$sb + .= "\nSQL (may‚ot be complete): " + +999 . +Ba£P“r +:: + `ü—‹S–eùSql +( +$this +, +$·¿ms +); + +1001 +$sb + .= "\nParams: "; + +1002 +$·¿m¡r + = + `¬¿y +(); + +1003 + `fܗch + ( +$·¿ms + +as + +$·¿m +) { + +1004 +$·¿m¡r +[] = +$·¿m +['bË'] . '.' . $·¿m['cÞumn'] . ' => ' . + `v¬_expÜt +($·¿m['v®ue'], +Œue +); + +1006 +$sb + .ð + `im¶ode +(", ", +$·¿m¡r +); + +1008 } + `ÿtch + ( +Exû±iÚ + +$exc +) { + +1009 +$sb + .ð"(E¼Ü: " . +$exc +-> + `g‘Mes§ge +() . ")"; + +1012  +$sb +; + +1013 + } +} + +1019 +public + +funùiÚ + + $size +() + +1021  + `couÁ +( +$this +-> +m­ +); + +1022 + } +} + +1029 +public + +funùiÚ + + $equ®s +( +$ü™ +) + +1031 +$isEquiv + = +çl£ +; + +1032 ià( +$ü™ + ==ð +nuÎ + || !($ü™ +š¡ªûof + +Cr™”Ÿ +)) { + +1033 +$isEquiv + = +çl£ +; + +1034 } + `–£if + ( +$this + ==ð +$ü™ +) { + +1035 +$isEquiv + = +Œue +; + +1036 } + `–£if + ( +$this +-> + `size +(è==ð +$ü™ +->size()) { + +1040 +$ü™”Ÿ + = +$ü™ +; + +1041 ià( +$this +-> +off£t + ==ð +$ü™”Ÿ +-> + `g‘Off£t +() + +1042 && +$this +-> +lim™ + ==ð +$ü™”Ÿ +-> + `g‘Lim™ +() + +1043 && +$this +-> +ignÜeCa£ + ==ð +$ü™”Ÿ +-> + `isIgnÜeCa£ +() + +1044 && +$this +-> +sšgËRecÜd + ==ð +$ü™”Ÿ +-> + `isSšgËRecÜd +() + +1045 && +$this +-> +dbName + ==ð +$ü™”Ÿ +-> + `g‘DbName +() + +1046 && +$this +-> +£ËùModif›rs + ==ð +$ü™”Ÿ +-> + `g‘S–eùModif›rs +() + +1047 && +$this +-> +£ËùCÞumns + ==ð +$ü™”Ÿ +-> + `g‘S–eùCÞumns +() + +1048 && +$this +-> +Üd”ByCÞumns + ==ð +$ü™”Ÿ +-> + `g‘Ord”ByCÞumns +() + +1049 && +$this +-> +groupByCÞumns + ==ð +$ü™”Ÿ +-> + `g‘GroupByCÞumns +() + +1052 +$isEquiv + = +Œue +; + +1053 + `fܗch + ( +$ü™”Ÿ +-> + `keys +(è +as + +$key +) { + +1054 ià( +$this +-> + `cڏšsKey +( +$key +)) { + +1055 +$a + = +$this +-> + `g‘Cr™”iÚ +( +$key +); + +1056 +$b + = +$ü™”Ÿ +-> + `g‘Cr™”iÚ +( +$key +); + +1057 ià(! +$a +-> + `equ®s +( +$b +)) { + +1058 +$isEquiv + = +çl£ +; + +1062 +$isEquiv + = +çl£ +; + +1068  +$isEquiv +; + +1069 + } +} + +1087 +public + +funùiÚ + + $addHavšg +( +Cr™”iÚ + +$havšg +) + +1089 +$this +-> +havšg + = +$havšg +; + +1090  +$this +; + +1091 + } +} + +1122 +public + +funùiÚ + + $addAnd +( +$p1 +, +$p2 + = +nuÎ +, +$p3 + =‚ull) + +1124 ià( +$p3 + !=ð +nuÎ +) { + +1126 +$oc + = +$this +-> + `g‘Cr™”iÚ +( +$p1 +); + +1127 +$nc + = +Ãw + + `Cr™”iÚ +( +$this +, +$p1 +, +$p2 +, +$p3 +); + +1128 iàÐ +$oc + ==ð +nuÎ +) { + +1129 +$this +-> +m­ +[ +$p1 +] = +$nc +; + +1131 +$oc +-> + `addAnd +( +$nc +); + +1133 } + `–£if + ( +$p2 + !=ð +nuÎ +) { + +1135 +$this +-> + `addAnd +( +$p1 +, +$p2 +, +£lf +:: +EQUAL +); + +1136 } + `–£if + ( +$p1 + +š¡ªûof + +Cr™”iÚ +) { + +1138 +$oc + = +$this +-> + `g‘Cr™”iÚ +( +$p1 +-> + `g‘TabË +(è. '.' . $p1-> + `g‘CÞumn +()); + +1139 ià( +$oc + ==ð +nuÎ +) { + +1140 +$this +-> + `add +( +$p1 +); + +1142 +$oc +-> + `addAnd +( +$p1 +); + +1144 } + `–£if + ( +$p2 + ==ð +nuÎ + && +$p3 + ===‚ull) { + +1148 +$this +-> + `addAnd +( +$p1 +, +$p2 +, +£lf +:: +EQUAL +); + +1150  +$this +; + +1151 + } +} + +1178 +public + +funùiÚ + + $addOr +( +$p1 +, +$p2 + = +nuÎ +, +$p3 + =‚ull) + +1180 ià( +$p3 + !=ð +nuÎ +) { + +1182 +$nc + = +Ãw + + `Cr™”iÚ +( +$this +, +$p1 +, +$p2 +, +$p3 +); + +1183 +$oc + = +$this +-> + `g‘Cr™”iÚ +( +$p1 +); + +1184 ià( +$oc + ==ð +nuÎ +) { + +1185 +$this +-> +m­ +[ +$p1 +] = +$nc +; + +1187 +$oc +-> + `addOr +( +$nc +); + +1189 } + `–£if + ( +$p2 + !=ð +nuÎ +) { + +1191 +$this +-> + `addOr +( +$p1 +, +$p2 +, +£lf +:: +EQUAL +); + +1192 } + `–£if + ( +$p1 + +š¡ªûof + +Cr™”iÚ +) { + +1194 +$oc + = +$this +-> + `g‘Cr™”iÚ +( +$p1 +-> + `g‘TabË +(è. '.' . $p1-> + `g‘CÞumn +()); + +1195 ià( +$oc + ==ð +nuÎ +) { + +1196 +$this +-> + `add +( +$p1 +); + +1198 +$oc +-> + `addOr +( +$p1 +); + +1200 } + `–£if + ( +$p2 + ==ð +nuÎ + && +$p3 + ===‚ull) { + +1204 +$this +-> + `addOr +( +$p1 +, +$p2 +, +£lf +:: +EQUAL +); + +1207  +$this +; + +1208 + } +} + +1223 þas  + cCr™”iÚI‹¿tÜ + +im¶em’ts + + mI‹¿tÜ + { + +1225 +´iv©e + + m$idx + = 0; + +1226 +´iv©e + + m$ü™”Ÿ +; + +1227 +´iv©e + + m$ü™”ŸKeys +; + +1228 +´iv©e + + m$ü™”ŸSize +; + +1230 +public + +funùiÚ + + $__cÚ¡ruù +( +Cr™”Ÿ + +$ü™”Ÿ +) { + +1231 +$this +-> +ü™”Ÿ + = +$ü™”Ÿ +; + +1232 +$this +-> +ü™”ŸKeys + = +$ü™”Ÿ +-> + `keys +(); + +1233 +$this +-> +ü™”ŸSize + = + `couÁ +($this-> +ü™”ŸKeys +); + +1236 +public + +funùiÚ + + $»wšd +() { + +1237 +$this +-> +idx + = 0; + +1238 + } +} + +1240 +public + +funùiÚ + + $v®id +() { + +1241  +$this +-> +idx + < $this-> +ü™”ŸSize +; + +1242 + } +} + +1244 +public + +funùiÚ + + $key +() { + +1245  +$this +-> +ü™”ŸKeys +[$this-> +idx +]; + +1246 + } +} + +1248 +public + +funùiÚ + + $cu¼’t +() { + +1249  +$this +-> +ü™”Ÿ +-> + `g‘Cr™”iÚ +($this-> +ü™”ŸKeys +[$this-> +idx +]); + +1250 + } +} + +1252 +public + +funùiÚ + + $Ãxt +() { + +1253 +$this +-> +idx +++; + +1254 + } +} + +1270 þas  + cCr™”iÚ + { + +1272 cÚ¡ + mUND + = " AND "; + +1273 cÚ¡ + mODER + = " OR "; + +1276 +´iv©e + + m$v®ue +; + +1281 +´iv©e + + m$com·risÚ +; + +1284 +´iv©e + + m$bË +; + +1287 +´iv©e + + m$»®bË +; + +1290 +´iv©e + + m$cÞumn +; + +1293 +´iv©e + + m$ignÜeSŒšgCa£ + = +çl£ +; + +1299 +´iv©e + + m$db +; + +1304 +´iv©e + + m$þau£s + = +¬¿y +(); + +1305 +´iv©e + + m$cÚjunùiÚs + = +¬¿y +(); + +1308 +´iv©e + + m$·»Á +; + +1318 +public + +funùiÚ + + $__cÚ¡ruù +( +Cr™”Ÿ + +$ou‹r +, +$cÞumn +, +$v®ue +, +$com·risÚ + = +nuÎ +) + +1320 +$this +-> +v®ue + = +$v®ue +; + +1321 +$dÙPos + = + `¡¼pos +( +$cÞumn +,'.'); + +1322 ià( +$dÙPos + ==ð +çl£ +) { + +1324 +$this +-> +bË + = +nuÎ +; + +1325 +$this +-> +cÞumn + = +$cÞumn +; + +1327 +$this +-> +bË + = + `sub¡r +( +$cÞumn +, 0, +$dÙPos +); + +1328 +$this +-> +cÞumn + = + `sub¡r +( +$cÞumn +, +$dÙPos ++1, + `¡¾’ +($column)); + +1330 +$this +-> +com·risÚ + = ( +$com·risÚ + ==ð +nuÎ + ? +Cr™”Ÿ +:: +EQUAL + : $comparison); + +1331 +$this +-> + `š™ +( +$ou‹r +); + +1338 +public + +funùiÚ + + $š™ +( +Cr™”Ÿ + +$ü™”Ÿ +) + +1341 +Œy + { + +1342 +$db + = +Prݖ +:: + `g‘DB +( +$ü™”Ÿ +-> + `g‘DbName +()); + +1343 +$this +-> + `£tDB +( +$db +); + +1344 } + `ÿtch + ( +Exû±iÚ + +$e +) { + +1347 +Prݖ +:: + `log +("Could‚Ù g‘‡ DBAd­‹r, sqÈmay bwrÚg", Prݖ:: +LOG_ERR +); + +1351 +$»®bË + = +$ü™”Ÿ +-> + `g‘TabËFÜAlŸs +( +$this +-> +bË +); + +1352 ià(! + `¡¾’ + ( +$»®bË + ) ) { + +1353 +$»®bË + = +$this +-> +bË +; + +1355 +$this +-> +»®bË + = +$»®bË +; + +1357 + } +} + +1364 +public + +funùiÚ + + $g‘CÞumn +() + +1366  +$this +-> +cÞumn +; + +1367 + } +} + +1375 +public + +funùiÚ + + $£tTabË +( +$Çme +) + +1377 +$this +-> +bË + = +$Çme +; + +1378 + } +} + +1385 +public + +funùiÚ + + $g‘TabË +() + +1387  +$this +-> +bË +; + +1388 + } +} + +1395 +public + +funùiÚ + + $g‘Com·risÚ +() + +1397  +$this +-> +com·risÚ +; + +1398 + } +} + +1405 +public + +funùiÚ + + $g‘V®ue +() + +1407  +$this +-> +v®ue +; + +1408 + } +} + +1416 +public + +funùiÚ + + $g‘DB +() + +1418  +$this +-> +db +; + +1419 + } +} + +1427 +public + +funùiÚ + + $£tDB +( +DBAd­‹r + +$v +) + +1429 +$this +-> +db + = +$v +; + +1430 + `fܗch + ( +$this +-> +þau£s + +as + +$þau£ + ) { + +1431 +$þau£ +-> + `£tDB +( +$v +); + +1433 + } +} + +1441 +public + +funùiÚ + + $£tIgnÜeCa£ +( +$b +) + +1443 +$this +-> +ignÜeSŒšgCa£ + = ( +boޗn +è +$b +; + +1444  +$this +; + +1445 + } +} + +1452 +public + +funùiÚ + + $isIgnÜeCa£ +() + +1454  +$this +-> +ignÜeSŒšgCa£ +; + +1455 + } +} + +1461 +´iv©e + +funùiÚ + + $g‘CÏu£s +() + +1463  +$this +-> +þau£s +; + +1464 + } +} + +1470 +public + +funùiÚ + + $g‘CÚjunùiÚs +() + +1472  +$this +-> +cÚjunùiÚs +; + +1473 + } +} + +1478 +public + +funùiÚ + + $addAnd +( +Cr™”iÚ + +$ü™”iÚ +) + +1480 +$this +-> +þau£s +[] = +$ü™”iÚ +; + +1481 +$this +-> +cÚjunùiÚs +[] = +£lf +:: +UND +; + +1482  +$this +; + +1483 + } +} + +1489 +public + +funùiÚ + + $addOr +( +Cr™”iÚ + +$ü™”iÚ +) + +1491 +$this +-> +þau£s +[] = +$ü™”iÚ +; + +1492 +$this +-> +cÚjunùiÚs +[] = +£lf +:: +ODER +; + +1493  +$this +; + +1494 + } +} + +1507 +public + +funùiÚ + + $­³ndPsTo +(& +$sb +, +¬¿y + & +$·¿ms +) + +1509 ià( +$this +-> +cÞumn + ==ð +nuÎ +) { + +1513 +$db + = +$this +-> + `g‘Db +(); + +1514 +$sb + .ð + `¡r_»³© + ( '(', + `couÁ +( +$this +-> +þau£s +) ); + +1516 ià( +Cr™”Ÿ +:: +CUSTOM + ==ð +$this +-> +com·risÚ +) { + +1517 ià( +$this +-> +v®ue + !== "") { + +1518 +$sb + .ð( +¡ršg +è +$this +-> +v®ue +; + +1522 ià( +$this +-> +bË + ==ð +nuÎ +) { + +1523 +$f›ld + = +$this +-> +cÞumn +; + +1525 +$f›ld + = +$this +-> +bË + . '.' . $this-> +cÞumn +; + +1530 +$»®bË + = +$this +-> +»®bË +; + +1536 ià( +$this +-> +com·risÚ + ==ð +Cr™”Ÿ +:: +IN + || $this->com·risÚ ==ðCr™”Ÿ:: +NOT_IN +) { + +1538 +$_bšdP¬ams + = + `¬¿y +(); + +1539 +$_idx¡¬t + = + `couÁ +( +$·¿ms +); + +1540 +$v®uesL’gth + = 0; + +1541 + `fܗch + ( ( +¬¿y +è +$this +-> +v®ue + +as + +$v®ue + ) { + +1542 +$v®uesL’gth +++; + +1543 +$·¿ms +[] = + `¬¿y +('bË' => +$»®bË +, 'cÞumn' => +$this +-> +cÞumn +, 'v®ue' => +$v®ue +); + +1544 +$_bšdP¬ams +[] = ':p'.( +$_idx¡¬t + + +$v®uesL’gth +); + +1546 iàÐ +$v®uesL’gth + !== 0 ) { + +1547 +$sb + .ð +$f›ld + . +$this +-> +com·risÚ + . '(' . + `im¶ode +(',', +$_bšdP¬ams +) . ')'; + +1549 +$sb + .ð( +$this +-> +com·risÚ + ==ð +Cr™”Ÿ +:: +IN +) ? "1<>1" : "1=1"; + +1551 + `un£t + ( +$v®ue +, +$v®uesL’gth + ); + +1554 } + `–£if + ( +$this +-> +com·risÚ + ==ð +Cr™”Ÿ +:: +LIKE + || $this->com·risÚ ==ðCr™”Ÿ:: +NOT_LIKE + + +1555 || +$this +-> +com·risÚ + ==ð +Cr™”Ÿ +:: +ILIKE + || $this->com·risÚ ==ðCr™”Ÿ:: +NOT_ILIKE +) { + +1560 ià( +$this +-> +ignÜeSŒšgCa£ +) { + +1561 ià( +$db + +š¡ªûof + +DBPo¡g»s +) { + +1562 ià( +$this +-> +com·risÚ + ==ð +Cr™”Ÿ +:: +LIKE +) { + +1563 +$this +-> +com·risÚ + = +Cr™”Ÿ +:: +ILIKE +; + +1564 } + `–£if + ( +$this +-> +com·risÚ + ==ð +Cr™”Ÿ +:: +NOT_LIKE +) { + +1565 +$this +-> +com·risÚ + = +Cr™”Ÿ +:: +NOT_ILIKE +; + +1568 +$f›ld + = +$db +-> + `ignÜeCa£ +($field); + +1572 +$·¿ms +[] = + `¬¿y +('bË' => +$»®bË +, 'cÞumn' => +$this +-> +cÞumn +, 'v®ue' => $this-> +v®ue +); + +1574 +$sb + .ð +$f›ld + . +$this +-> +com·risÚ +; + +1578 ià( +$this +-> +ignÜeSŒšgCa£ + && !( +$db + +š¡ªûof + +DBPo¡g»s +)) { + +1579 +$sb + .ð +$db +-> + `ignÜeCa£ +(':p'. + `couÁ +( +$·¿ms +)); + +1581 +$sb + .ð':p'. + `couÁ +( +$·¿ms +); + +1589 ià( +$this +-> +v®ue + !=ð +nuÎ +) { + +1592 ià( +$this +-> +v®ue + ==ð +Cr™”Ÿ +:: +CURRENT_DATE + || $this->v®u==ðCr™”Ÿ:: +CURRENT_TIME + || $this->v®u==ðCr™”Ÿ:: +CURRENT_TIMESTAMP +) { + +1593 +$sb + .ð +$f›ld + . +$this +-> +com·risÚ + . $this-> +v®ue +; + +1596 +$·¿ms +[] = + `¬¿y +('bË' => +$»®bË +, 'cÞumn' => +$this +-> +cÞumn +, 'v®ue' => $this-> +v®ue +); + +1600 ià( +$this +-> +ignÜeSŒšgCa£ +) { + +1601 +$sb + .ð +$db +-> + `ignÜeCa£ +( +$f›ld +è. +$this +-> +com·risÚ + . $db->ignÜeCa£(':p'. + `couÁ +( +$·¿ms +)); + +1603 +$sb + .ð +$f›ld + . +$this +-> +com·risÚ + . ':p'. + `couÁ +( +$·¿ms +); + +1611 ià( +$this +-> +com·risÚ + ==ð +Cr™”Ÿ +:: +EQUAL + || $this->com·risÚ ==ðCr™”Ÿ:: +ISNULL +) { + +1612 +$sb + .ð +$f›ld + . +Cr™”Ÿ +:: +ISNULL +; + +1613 } + `–£if + ( +$this +-> +com·risÚ + ==ð +Cr™”Ÿ +:: +NOT_EQUAL + || $this->com·risÚ ==ðCr™”Ÿ:: +ISNOTNULL +) { + +1614 +$sb + .ð +$f›ld + . +Cr™”Ÿ +:: +ISNOTNULL +; + +1617 +throw + +Ãw + + `PrݖExû±iÚ +("Could‚Ù bužd SQL f܃x´essiÚ: $f›ld " . +$this +-> +com·risÚ + . " NULL"); + +1625 + `fܗch + ( +$this +-> +þau£s + +as + +$key +=> +$þau£ + ) { + +1626 +$sb + .ð +$this +-> +cÚjunùiÚs +[ +$key +]; + +1627 +$þau£ +-> + `­³ndPsTo +( +$sb +, +$·¿ms +); + +1628 +$sb + .= ')'; + +1630 + } +} + +1637 +public + +funùiÚ + + $equ®s +( +$obj +) + +1640 ià( +$this + ==ð +$obj +) { + +1641  +Œue +; + +1644 ià(( +$obj + ==ð +nuÎ +è|| !($obj +š¡ªûof + +Cr™”iÚ +)) { + +1645  +çl£ +; + +1648 +$ü™ + = +$obj +; + +1650 +$isEquiv + = ( ( ( +$this +-> +bË + ==ð +nuÎ + && +$ü™ +-> + `g‘TabË +() ===‚ull) + +1651 || ( +$this +-> +bË + !=ð +nuÎ + && $this->bË ==ð +$ü™ +-> + `g‘TabË +() ) + +1653 && +$this +-> +cÞumn + ==ð +$ü™ +-> + `g‘CÞumn +() + +1654 && +$this +-> +com·risÚ + ==ð +$ü™ +-> + `g‘Com·risÚ +()); + +1658 +$þau£sL’gth + = + `couÁ +( +$this +-> +þau£s +); + +1659 +$isEquiv + &ð( + `couÁ +( +$ü™ +-> + `g‘CÏu£s +()è=ð +$þau£sL’gth +); + +1660 +$ü™CÚjunùiÚs + = +$ü™ +-> + `g‘CÚjunùiÚs +(); + +1661 +$ü™CÏu£s + = +$ü™ +-> + `g‘CÏu£s +(); + +1662  +$i +=0; $˜< +$þau£sL’gth + && +$isEquiv +; $i++) { + +1663 +$isEquiv + &ð( +$this +-> +cÚjunùiÚs +[ +$i +] ==ð +$ü™CÚjunùiÚs +[$i]); + +1664 +$isEquiv + &ð( +$this +-> +þau£s +[ +$i +] ==ð +$ü™CÏu£s +[$i]); + +1667 ià( +$isEquiv +) { + +1668 +$isEquiv + &ð +$this +-> +v®ue + ==ð +$ü™ +-> + `g‘V®ue +(); + +1671  +$isEquiv +; + +1672 + } +} + +1677 +public + +funùiÚ + + $hashCode +() + +1679 +$h + = + `üc32 +( + `£rŸlize +( +$this +-> +v®ue +)è^ crc32($this-> +com·risÚ +); + +1681 ià( +$this +-> +bË + !=ð +nuÎ +) { + +1682 +$h + ^ð + `üc32 +( +$this +-> +bË +); + +1685 ià( +$this +-> +cÞumn + !=ð +nuÎ +) { + +1686 +$h + ^ð + `üc32 +( +$this +-> +cÞumn +); + +1689 + `fܗch + ( +$this +-> +þau£s + +as + +$þau£ + ) { + +1694 +$sb + = ''; + +1695 +$·¿ms + = + `¬¿y +(); + +1696 +$þau£ +-> + `­³ndPsTo +( +$sb +, +$·¿ms +); + +1697 +$h + ^ð + `üc32 +( + `£rŸlize +( + `¬¿y +( +$sb +, +$·¿ms +))); + +1698 + `un£t + ( +$sb +, +$·¿ms + ); + +1701  +$h +; + +1702 + } +} + +1708 +public + +funùiÚ + + $g‘AÎTabËs +() + +1710 +$bËs + = + `¬¿y +(); + +1711 +$this +-> + `addCr™”iÚTabË +($this, +$bËs +); + +1712  +$bËs +; + +1713 + } +} + +1720 +´iv©e + +funùiÚ + + $addCr™”iÚTabË +( +Cr™”iÚ + +$c +, +¬¿y + & +$s +) + +1722 +$s +[] = +$c +-> + `g‘TabË +(); + +1723 + `fܗch + ( +$c +-> + `g‘CÏu£s +(è +as + +$þau£ + ) { + +1724 +$this +-> + `addCr™”iÚTabË +( +$þau£ +, +$s +); + +1726 + } +} + +1733 +public + +funùiÚ + + $g‘A‰achedCr™”iÚ +() + +1735 +$ü™s + = + `¬¿y +(); + +1736 +$this +-> + `Œav”£Cr™”iÚ +($this, +$ü™s +); + +1737  +$ü™s +; + +1738 + } +} + +1747 +´iv©e + +funùiÚ + + $Œav”£Cr™”iÚ +( +Cr™”iÚ + +$c +, +¬¿y + & +$a +) + +1749 +$a +[] = +$c +; + +1750 + `fܗch + ( +$c +-> + `g‘CÏu£s +(è +as + +$þau£ + ) { + +1751 +$this +-> + `Œav”£Cr™”iÚ +( +$þau£ +, +$a +); + +1753 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/DebugPDO.php + +1 + `g‘DebugSÇpshÙ +(); + +185 +·»Á +:: + `__cÚ¡ruù +( +$d¢ +, +$u£ºame +, +$·sswÜd +, +$driv”_ÝtiÚs +); + +187 +$this +-> + `cÚfigu»S‹m’tCÏss +( +$suµ»ss += +Œue +); + +188 +$this +-> + `log +('', +nuÎ +, +__METHOD__ +, +$debug +); + +197 +´Ùeùed + +funùiÚ + + $cÚfigu»S‹m’tCÏss +( +$suµ»ssE¼Ü + = +çl£ +) + +200 ià(! +$this +-> + `g‘A‰ribu‹ +( +PDO +:: +ATTR_PERSISTENT +)) { + +201 +$this +-> + `£tA‰ribu‹ +( +PDO +:: +ATTR_STATEMENT_CLASS +, + `¬¿y +($this-> + `g‘S‹m’tCÏss +(),‡rray($this))); + +202 } + `–£if + (! +$suµ»ssE¼Ü +) { + +203 +throw + +Ãw + + `PrݖExû±iÚ +('Extending PDOStatement is‚ot supported with…ersistent connections.'); + +205 + } +} + +215 +public + +funùiÚ + + $£tS‹m’tCÏss +( +$þas¢ame +) + +217 +$this +-> +¡©em’tCÏss + = +$þas¢ame +; + +218 +$this +-> + `cÚfigu»S‹m’tCÏss +(); + +219 + } +} + +226 +public + +funùiÚ + + $g‘S‹m’tCÏss +() + +228  +$this +-> +¡©em’tCÏss +; + +229 + } +} + +240 +public + +funùiÚ + + $g‘Qu”yCouÁ +() + +243 ià( +$this +-> + `g‘A‰ribu‹ +( +PDO +:: +ATTR_PERSISTENT +)) { + +244 +throw + +Ãw + + `PrݖExû±iÚ +('Extending PDOStatement is‚ot supported with…ersistent connections. ' . + +248  +$this +-> +qu”yCouÁ +; + +249 + } +} + +258 +public + +funùiÚ + + $šüem’tQu”yCouÁ +() + +260 +$this +-> +qu”yCouÁ +++; + +261 + } +} + +268 +public + +funùiÚ + + $g‘La¡Execu‹dQu”y +() + +270  +$this +-> +Ï¡Execu‹dQu”y +; + +271 + } +} + +278 +public + +funùiÚ + + $£tLa¡Execu‹dQu”y +( +$qu”y +) + +280 +$this +-> +Ï¡Execu‹dQu”y + = +$qu”y +; + +281 + } +} + +292 +public + +funùiÚ + +´•¬e +( +$sql +, +$driv”_ÝtiÚs + = + $¬¿y +()) + +294 +$debug + = +$this +-> + `g‘DebugSÇpshÙ +(); + +295 +$»tuº + = +·»Á +:: + `´•¬e +( +$sql +, +$driv”_ÝtiÚs +); + +297 +$this +-> + `log +( +$sql +, +nuÎ +, +__METHOD__ +, +$debug +); + +299  +$»tuº +; + +300 + } +} + +309 +public + +funùiÚ + + $exec +( +$sql +) + +311 +$debug + = +$this +-> + `g‘DebugSÇpshÙ +(); + +312 +$»tuº + = +·»Á +:: + `exec +( +$sql +); + +314 +$this +-> + `log +( +$sql +, +nuÎ +, +__METHOD__ +, +$debug +); + +315 +$this +-> + `£tLa¡Execu‹dQu”y +( +$sql +); + +316 +$this +-> + `šüem’tQu”yCouÁ +(); + +318  +$»tuº +; + +319 + } +} + +330 +public + +funùiÚ + + $qu”y +() + +332 +$debug + = +$this +-> + `g‘DebugSÇpshÙ +(); + +333 +$¬gs + = + `func_g‘_¬gs +(); + +334 ià( + `v”siÚ_com·» +( +PHP_VERSION +, '5.3', '<')) { + +335 +$»tuº + = + `ÿÎ_u£r_func_¬¿y +( + `¬¿y +( +$this +, '·»Á::qu”y'), +$¬gs +); + +337 +$»tuº + = + `ÿÎ_u£r_func_¬¿y +('·»Á::qu”y', +$¬gs +); + +340 +$sql + = +$¬gs +[0]; + +341 +$this +-> + `log +( +$sql +, +nuÎ +, +__METHOD__ +, +$debug +); + +342 +$this +-> + `£tLa¡Execu‹dQu”y +( +$sql +); + +343 +$this +-> + `šüem’tQu”yCouÁ +(); + +345  +$»tuº +; + +346 + } +} + +353 +public + +funùiÚ + + $£tLogLev– +( +$Ëv– +) + +355 +$this +-> +logLev– + = +$Ëv– +; + +356 + } +} + +365 +public + +funùiÚ + + $£tLogg” +( +$logg” +) + +367 +$this +-> +logg” + = +$logg” +; + +368 + } +} + +381 +public + +funùiÚ + + $log +( +$msg +, +$Ëv– + = +nuÎ +, +$m‘hodName + =‚uÎ, +¬¿y + +$debugSÇpshÙ + =‚ull) + +384 ià(! +$this +-> + `g‘LoggšgCÚfig +('’abËd', +Œue +)) + +388 ià(! + `š_¬¿y +( +$m‘hodName +, +$this +-> + `g‘LoggšgCÚfig +('m‘hods', +£lf +:: +$deçuÉLogM‘hods +))) + +392 ià( +$Ëv– + ==ð +nuÎ +) + +393 +$Ëv– + = +$this +-> +logLev– +; + +396 ià( +$this +-> + `g‘LoggšgCÚfig +("Úly¦ow", +£lf +:: +DEFAULT_ONLYSLOW_ENABLED +)) + +398 +$now + = +$this +-> + `g‘DebugSÇpshÙ +(); + +399 ià( +$now +['miüÙime'] - +$debugSÇpshÙ +['miüÙime'] < +$this +-> + `g‘LoggšgCÚfig +("d‘ažs.¦ow.th»shÞd", +£lf +:: +DEFAULT_SLOW_THRESHOLD +)) ; + +403 ià( +$m‘hodName + && +$debugSÇpshÙ +) + +404 +$msg + = +$this +-> + `g‘LogP»fix +( +$m‘hodName +, +$debugSÇpshÙ +) . $msg; + +407 ià(! +$msg +) + +411 ià( +$this +-> +logg” +) + +412 +$this +-> +logg” +-> + `log +( +$msg +, +$Ëv– +); + +414 +Prݖ +:: + `log +( +$msg +, +$Ëv– +); + +415 + } +} + +422 +public + +funùiÚ + + $g‘DebugSÇpshÙ +() + +424  + `¬¿y +( + +425 'miüÙime' => + `miüÙime +( +Œue +), + +426 'memÜy_g‘_u§ge' => + `memÜy_g‘_u§ge +( +$this +-> + `g‘LoggšgCÚfig +('»®memÜyu§ge', +çl£ +)), + +427 'memÜy_g‘_³ak_u§ge' => + `memÜy_g‘_³ak_u§ge +( +$this +-> + `g‘LoggšgCÚfig +('»®memÜyu§ge', +çl£ +)), + +429 + } +} + +440 +´Ùeùed + +funùiÚ + + $g‘LoggšgCÚfig +( +$key +, +$deçuÉV®ue +) + +442  +Prݖ +:: + `g‘CÚfigu¿tiÚ +( +PrݖCÚfigu¿tiÚ +:: +TYPE_OBJECT +)-> + `g‘P¬am‘” +("debugpdo.loggšg.$key", +$deçuÉV®ue +); + +443 + } +} + +458 +´Ùeùed + +funùiÚ + + $g‘LogP»fix +( +$m‘hodName +, +$debugSÇpshÙ +) + +460 +$´efix + = ''; + +461 +$now + = +$this +-> + `g‘DebugSÇpshÙ +(); + +462 +$logD‘ažs + = + `¬¿y_keys +( +$this +-> + `g‘LoggšgCÚfig +('d‘ažs', + `¬¿y +())); + +463 +$šÃrGlue + = +$this +-> + `g‘LoggšgCÚfig +('innerglue', ': '); + +464 +$ou‹rGlue + = +$this +-> + `g‘LoggšgCÚfig +('outerglue', ' | '); + +467 + `fܗch + ( +$logD‘ažs + +as + +$d‘ažName +) { + +469 ià(! +$this +-> + `g‘LoggšgCÚfig +("d‘ažs.$d‘ažName.’abËd", +çl£ +)) + +472  +$d‘ažName +) { + +475 +$v®ue + = +$now +['miüÙime'] - +$debugSÇpshÙ +['miüÙime'] >ð +$this +-> + `g‘LoggšgCÚfig +("d‘ažs.$d‘ažName.th»shÞd", +£lf +:: +DEFAULT_SLOW_THRESHOLD +) ? 'YES' : ' NO'; + +479 +$v®ue + = + `numb”_fÜm© +( +$now +['miüÙime'] - +$debugSÇpshÙ +['miüÙime'], +$this +-> + `g‘LoggšgCÚfig +("details.$detailName.precision", 3)) . ' sec'; + +480 +$v®ue + = + `¡r_·d +($v®ue, +$this +-> + `g‘LoggšgCÚfig +("d‘ažs.$d‘ažName.·d", 10), ' ', +STR_PAD_LEFT +); + +484 +$v®ue + = +£lf +:: + `g‘R—dabËBy‹s +( +$now +['memÜy_g‘_u§ge'], +$this +-> + `g‘LoggšgCÚfig +("details.$detailName.precision", 1)); + +485 +$v®ue + = + `¡r_·d +($v®ue, +$this +-> + `g‘LoggšgCÚfig +("d‘ažs.$d‘ažName.·d", 9), ' ', +STR_PAD_LEFT +); + +489 +$v®ue + = +$now +['memÜy_g‘_u§ge'] - +$debugSÇpshÙ +['memory_get_usage']; + +490 +$v®ue + = ($v®u> 0 ? '+' : ''è. +£lf +:: + `g‘R—dabËBy‹s +($v®ue, +$this +-> + `g‘LoggšgCÚfig +("details.$detailName.precision", 1)); + +491 +$v®ue + = + `¡r_·d +($v®ue, +$this +-> + `g‘LoggšgCÚfig +("d‘ažs.$d‘ažName.·d", 10), ' ', +STR_PAD_LEFT +); + +495 +$v®ue + = +£lf +:: + `g‘R—dabËBy‹s +( +$now +['memÜy_g‘_³ak_u§ge'], +$this +-> + `g‘LoggšgCÚfig +("details.$detailName.precision", 1)); + +496 +$v®ue + = + `¡r_·d +($v®ue, +$this +-> + `g‘LoggšgCÚfig +("d‘ažs.$d‘ažName.·d", 9), ' ', +STR_PAD_LEFT +); + +500 +$v®ue + = +$this +-> + `g‘Qu”yCouÁ +(); + +501 +$v®ue + = + `¡r_·d +($v®ue, +$this +-> + `g‘LoggšgCÚfig +("d‘ažs.$d‘ažName.·d", 2), ' ', +STR_PAD_LEFT +); + +505 +$v®ue + = +$m‘hodName +; + +506 +$v®ue + = + `¡r_·d +($v®ue, +$this +-> + `g‘LoggšgCÚfig +("d‘ažs.$d‘ažName.·d", 28), ' ', +STR_PAD_RIGHT +); + +510 +$v®ue + = 'n/a'; + +515 +$´efix + .ð +$d‘ažName + . +$šÃrGlue + . +$v®ue + . +$ou‹rGlue +; + +519  +$´efix +; + +520 + } +} + +529 +´Ùeùed + +funùiÚ + + $g‘R—dabËBy‹s +( +$by‹s +, +$´ecisiÚ +) + +531 +$suffix + = + `¬¿y +('B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'); + +532 +$tÙ® + = + `couÁ +( +$suffix +); + +534  +$i + = 0; +$by‹s + > 1024 && $˜< +$tÙ® +; $i++) + +535 +$by‹s + /= 1024; + +537  + `numb”_fÜm© +( +$by‹s +, +$´ecisiÚ +è. ' ' . +$suffix +[ +$i +]; + +538 + } +} + +545 +public + +funùiÚ + + $__de¡ruù +() + +547 +$this +-> + `log +('', +nuÎ +, +__METHOD__ +, $this-> + `g‘DebugSÇpshÙ +()); + +548 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/DebugPDOStatement.php + +1 "PDO::PARAM_BOOL", + +52 +PDO +:: +PARAM_INT + => "PDO::PARAM_INT", + +53 +PDO +:: +PARAM_STR + => "PDO::PARAM_STR", + +54 +PDO +:: +PARAM_LOB + => "PDO::PARAM_LOB", + +55 +PDO +:: +PARAM_NULL + => "PDO::PARAM_NULL", + +61 +´Ùeùed + + m$boundV®ues + = +¬¿y +(); + +69 +´Ùeùed + +funùiÚ + + $__cÚ¡ruù +( +DebugPDO + +$pdo +) + +71 +$this +-> +pdo + = +$pdo +; + +74 +public + +funùiÚ + + $g‘Execu‹dQu”ySŒšg +() + +76 +$sql + = +$this +-> +qu”ySŒšg +; + +78 +$m©ches + = + `¬¿y +(); + +79 ià( + `´eg_m©ch_®l +('/(:p[0-9]+\b)/', +$sql +, +$m©ches +)) { + +80 +$size + = + `couÁ +( +$m©ches +[1]); + +81  +$i + = +$size +-1; $i >= 0; $i--) { + +82 +$pos + = +$m©ches +[1][ +$i +]; + +83 +$sql + = + `¡r_»¶aû +( +$pos +, +$this +-> +boundV®ues +[$pos], $sql); + +87  +$sql +; + +88 + } +} + +97 +public + +funùiÚ + + $execu‹ +( +$šput_·¿m‘”s + = +nuÎ +) + +99 +$debug + = +$this +-> +pdo +-> + `g‘DebugSÇpshÙ +(); + +100 +$»tuº + = +·»Á +:: + `execu‹ +( +$šput_·¿m‘”s +); + +102 +$sql + = +$this +-> + `g‘Execu‹dQu”ySŒšg +(); + +103 +$this +-> +pdo +-> + `log +( +$sql +, +nuÎ +, +__METHOD__ +, +$debug +); + +104 +$this +-> +pdo +-> + `£tLa¡Execu‹dQu”y +( +$sql +); + +105 +$this +-> +pdo +-> + `šüem’tQu”yCouÁ +(); + +107  +$»tuº +; + +108 + } +} + +119 +public + +funùiÚ + +bšdV®ue +( +$pos +, +$v®ue +, +$ty³ + = +PDO +:: +PARAM_STR +) + +121 +$debug + = +$this +-> +pdo +-> +g‘DebugSÇpshÙ +(); + +122 + g$ty³¡r + = +is£t +( +£lf +:: +$ty³M­ +[ +$ty³ +]) ? self::$typeMap[$type] : '(default)'; + +123 + g$»tuº + = +·»Á +:: +bšdV®ue +( +$pos +, +$v®ue +, +$ty³ +); + +124 + g$v®ue¡r + = +$ty³ + =ð +PDO +:: +PARAM_LOB + ? '[LOB v®ue]' : +v¬_expÜt +( +$v®ue +, +Œue +); + +125 + g$msg + = "Binding $valuestr‡t…osition $pos w/ PDOype $typestr"; + +127 + g$this +-> + gboundV®ues +[ +$pos +] = +$v®ue¡r +; + +129 + g$this +-> + gpdo +-> +log +( +$msg +, +nuÎ +, +__METHOD__ +, +$debug +); + +131  + g$»tuº +; + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/Join.php + +1 + `addCÚd™iÚ +( +$ËáCÞumn +, +$rightCÞumn +); + +79 ià( + `couÁ +( +$ËáCÞumn +è!ðcouÁ( +$rightCÞumn +) ) { + +80 +throw + +Ãw + + `PrݖExû±iÚ +("Unableo create join becausehe†eft column count isn'tƒqualohe„ight column count"); + +82 + `fܗch + ( +$ËáCÞumn + +as + +$key + => +$v®ue +) + +84 +$this +-> + `addCÚd™iÚ +( +$v®ue +, +$rightCÞumn +[ +$key +]); + +87 +$this +-> + `£tJošTy³ +( +$jošTy³ +); + +101 +public + +funùiÚ + + `addCÚd™iÚ +( +$Ëá +, +$right +, +$ݔ©Ü + = +£lf +:: +EQUAL +) + +103 +$this +-> +Ëá +[] = +$Ëá +; + +104 +$this +-> +right +[] = +$right +; + +105 +$this +-> +ݔ©Ü +[] = +$ݔ©Ü +; + +106 +$this +-> +couÁ +++; + +107 + } +} + +114 +public + +funùiÚ + + $couÁCÚd™iÚs +() + +116  +$this +-> +couÁ +; + +117 + } +} + +124 +public + +funùiÚ + + $g‘CÚd™iÚs +() + +126 +$cÚd™iÚs + = + `¬¿y +(); + +127  +$i +=0; $˜< +$this +-> +couÁ +; $i++) { + +128 +$cÚd™iÚs +[] = + `¬¿y +( + +129 'Ëá' => +$this +-> + `g‘LeáCÞumn +( +$i +), + +130 'ݔ©Ü' => +$this +-> + `g‘O³¿tÜ +( +$i +), + +131 'right' => +$this +-> + `g‘RightCÞumn +( +$i +) + +134  +$cÚd™iÚs +; + +135 + } +} + +140 +public + +funùiÚ + + $g‘O³¿tÜ +( +$šdex + = 0) + +142  +$this +-> +ݔ©Ü +[ +$šdex +]; + +143 + } +} + +145 +public + +funùiÚ + + $g‘O³¿tÜs +() + +147  +$this +-> +ݔ©Ü +; + +148 + } +} + +157 +public + +funùiÚ + + $£tJošTy³ +( +$jošTy³ + = +nuÎ +) + +159 +$this +-> +jošTy³ + = +$jošTy³ +; + +160 + } +} + +168 +public + +funùiÚ + + $g‘JošTy³ +() + +170  +$this +-> +jošTy³ +; + +171 + } +} + +176 +public + +funùiÚ + + $g‘LeáCÞumn +( +$šdex + = 0) + +178  +$this +-> +Ëá +[ +$šdex +]; + +179 + } +} + +184 +public + +funùiÚ + + $g‘LeáCÞumns +() + +186  +$this +-> +Ëá +; + +187 + } +} + +190 +public + +funùiÚ + + $g‘LeáCÞumnName +( +$šdex + = 0) + +192  + `sub¡r +( +$this +-> +Ëá +[ +$šdex +], + `¡¼pos +($this->left[$index], '.') + 1); + +193 + } +} + +195 +public + +funùiÚ + + $g‘LeáTabËName +( +$šdex + = 0) + +197  + `sub¡r +( +$this +-> +Ëá +[ +$šdex +], 0, + `¡¼pos +($this->left[$index], '.')); + +198 + } +} + +203 +public + +funùiÚ + + $g‘RightCÞumn +( +$šdex + = 0) + +205  +$this +-> +right +[ +$šdex +]; + +206 + } +} + +211 +public + +funùiÚ + + $g‘RightCÞumns +() + +213  +$this +-> +right +; + +214 + } +} + +216 +public + +funùiÚ + + $g‘RightCÞumnName +( +$šdex + = 0) + +218  + `sub¡r +( +$this +-> +right +[ +$šdex +], + `¡¼pos +($this->right[$index], '.') + 1); + +219 + } +} + +221 +public + +funùiÚ + + $g‘RightTabËName +( +$šdex + = 0) + +223  + `sub¡r +( +$this +-> +right +[ +$šdex +], 0, + `¡¼pos +($this->right[$index], '.')); + +224 + } +} + +232 +public + +funùiÚ + + $toSŒšg +() + +234 +$»suÉ + = ''; + +235 ià( +$this +-> +jošTy³ + !=ð +nuÎ +) + +237 +$»suÉ + .ð +$this +-> +jošTy³ + . ' : '; + +239 + `fܗch + ( +$$this +-> + `g‘CÚd™iÚs +(è +as + +$šdex + => +$cÚd™iÚ +) + +241 +$»suÉ + .ð + `im¶ode +( +$cÚd™iÚ +); + +242 ià( +$šdex + + 1 < +$this +-> +couÁ +) { + +243 +$»suÉ + .= ' AND '; + +246 +$»suÉ + .= '(ignoreCase‚ot considered)'; + +248  +$»suÉ +; + +249 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/NodePeer.php + +1 +PDO +:: +PARAM_STR +, + +61 +£lf +:: +VARCHAR + => +PDO +:: +PARAM_STR +, + +62 +£lf +:: +LONGVARCHAR + => +PDO +:: +PARAM_STR +, + +63 +£lf +:: +CLOB + => +PDO +:: +PARAM_LOB +, + +64 +£lf +:: +NUMERIC + => +PDO +:: +PARAM_STR +, + +65 +£lf +:: +DECIMAL + => +PDO +:: +PARAM_STR +, + +66 +£lf +:: +TINYINT + => +PDO +:: +PARAM_INT +, + +67 +£lf +:: +SMALLINT + => +PDO +:: +PARAM_INT +, + +68 +£lf +:: +INTEGER + => +PDO +:: +PARAM_INT +, + +69 +£lf +:: +BIGINT + => +PDO +:: +PARAM_STR +, + +70 +£lf +:: +REAL + => +PDO +:: +PARAM_STR +, + +71 +£lf +:: +FLOAT + => +PDO +:: +PARAM_STR +, + +72 +£lf +:: +DOUBLE + => +PDO +:: +PARAM_STR +, + +73 +£lf +:: +BINARY + => +PDO +:: +PARAM_STR +, + +74 +£lf +:: +VARBINARY + => +PDO +:: +PARAM_STR +, + +75 +£lf +:: +LONGVARBINARY + => +PDO +:: +PARAM_STR +, + +76 +£lf +:: +BLOB + => +PDO +:: +PARAM_LOB +, + +77 +£lf +:: +DATE + => +PDO +:: +PARAM_STR +, + +78 +£lf +:: +TIME + => +PDO +:: +PARAM_STR +, + +79 +£lf +:: +TIMESTAMP + => +PDO +:: +PARAM_STR +, + +80 +£lf +:: +BU_DATE + => +PDO +:: +PARAM_STR +, + +81 +£lf +:: +BU_TIMESTAMP + => +PDO +:: +PARAM_STR +, + +82 +£lf +:: +BOOLEAN + => +PDO +:: +PARAM_BOOL +, + +90 +public +  +funùiÚ + + $g‘PdoTy³ +( +$´Ý–Ty³ +) + +92  +£lf +:: +$´Ý–ToPdoM­ +[ +$´Ý–Ty³ +]; + +95 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/PropelConfiguration.php + +1 +·¿m‘”s + = +$·¿m‘”s +; + +60 +public + +funùiÚ + + $off£tExi¡s +( +$off£t +) + +62  + `is£t +( +$this +-> +·¿m‘” +[ +$off£t +]è|| + `¬¿y_key_exi¡s +($off£t, $this-> +·¿m‘”s +); + +63 + } +} + +68 +public + +funùiÚ + + $off£tS‘ +( +$off£t +, +$v®ue +) + +70 +$this +-> +·¿m‘” +[ +$off£t +] = +$v®ue +; + +71 + } +} + +76 +public + +funùiÚ + + $off£tG‘ +( +$off£t +) + +78  +$this +-> +·¿m‘”s +[ +$off£t +]; + +79 + } +} + +84 +public + +funùiÚ + + $off£tUn£t +( +$off£t +) + +86 + `un£t +( +$this +-> +·¿m‘”s +[ +$off£t +]); + +87 + } +} + +97 +public + +funùiÚ + + $g‘P¬am‘” +( +$Çme +, +$deçuÉ + = +nuÎ +) + +99 +$»t + = +$this +-> +·¿m‘”s +; + +100 +$·¹s + = + `ex¶ode +('.', +$Çme +); + +101  +$·¹ + = + `¬¿y_shiá +( +$·¹s +)) { + +102 ià( + `¬¿y_key_exi¡s +( +$·¹ +, +$»t +)) { + +103 +$»t + = $»t[ +$·¹ +]; + +105  +$deçuÉ +; + +108  +$»t +; + +109 + } +} + +117 +public + +funùiÚ + + $£tP¬am‘” +( +$Çme +, +$v®ue +) + +119 +$·¿m + = & +$this +-> +·¿m‘”s +; + +120 +$·¹s + = + `ex¶ode +('.', +$Çme +); + +121  +$·¹ + = + `¬¿y_shiá +( +$·¹s +)) { + +122 +$·¿m + = &$·¿m[ +$·¹ +]; + +124 +$·¿m + = +$v®ue +; + +125 + } +} + +133 +public + +funùiÚ + +g‘P¬am‘”s +( +$ty³ + = +PrݖCÚfigu¿tiÚ +:: +TYPE_ARRAY +) + +135  +$ty³ +) { + +136  +PrݖCÚfigu¿tiÚ +:: +TYPE_ARRAY +: + +137  +$this +-> +·¿m‘”s +; + +138  + gPrݖCÚfigu¿tiÚ +:: +TYPE_ARRAY_FLAT +: + +139  +$this +-> +toFÏtA¼ay +(); + +140  + gPrݖCÚfigu¿tiÚ +:: +TYPE_OBJECT +: + +141  +$this +; + +143 +throw + +Ãw + +PrݖExû±iÚ +('UnknowÀcÚfigu¿tiځy³: '. +v¬_expÜt +( +$ty³ +, +Œue +)); + +154 +´Ùeùed + +funùiÚ + + $toFÏtA¼ay +() + +156 +$»suÉ + = + `¬¿y +(); + +157 +$™ + = +Ãw + + `PrݖCÚfigu¿tiÚI‹¿tÜ +Òew + `RecursiveA¼ayI‹¿tÜ +( +$this +-> +·¿m‘”s +), +RecursiveI‹¿tÜI‹¿tÜ +:: +SELF_FIRST +); + +158 + `fܗch +( +$™ + +as + +$key + => +$v®ue +) { + +159 +$ns + = +$™ +-> + `g‘D•th +(è? $™-> + `g‘Name¥aû +(è. '.'. +$key + : $key; + +160 ià( +$™ +-> + `g‘NodeTy³ +(è=ð +PrݖCÚfigu¿tiÚI‹¿tÜ +:: +NODE_ITEM +) { + +161 +$»suÉ +[ +$ns +] = +$v®ue +; + +165  +$»suÉ +; + +166 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/PropelConfigurationIterator.php + +1 +Çme¥aûSck +); + +75 +public + +funùiÚ + + $g‘NodeTy³ +() + +77  +$this +-> +nodeTy³ +; + +78 + } +} + +86 +public + +funùiÚ + + $cu¼’t +() + +88 +$cu¼’t + = +·»Á +:: + `cu¼’t +(); + +89 ià( + `is_¬¿y +( +$cu¼’t +)) { + +90 +$this +-> +Çme¥aûSck +[] = $this-> + `key +(); + +91 +$this +-> +nodeTy³ + = +£lf +:: +NODE_PARENT +; + +94 +$this +-> +nodeTy³ + = +£lf +:: +NODE_ITEM +; + +97  +$cu¼’t +; + +98 + } +} + +105 +public + +funùiÚ + + $’dChžd»n +() + +107 ià( +$this +-> +Çme¥aûSck +) { + +108 + `¬¿y_pÝ +( +$this +-> +Çme¥aûSck +); + +110 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/PropelDateTime.php + +1 +d©eSŒšg + = $this-> + `fÜm© +('Y-m-d H:i:s'); + +74 +$this +-> +tzSŒšg + = $this-> + `g‘TimeZÚe +()-> + `g‘Name +(); + +75  + `¬¿y +('dateString', 'tzString'); + +76 + } +} + +82 +funùiÚ + + $__wakeup +() + +84 +·»Á +:: + `__cÚ¡ruù +( +$this +-> +d©eSŒšg +, +Ãw + + `D©eTimeZÚe +($this-> +tzSŒšg +)); + +85 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/PropelPDO.php + +1 +áedT¿n§ùiÚCouÁ +; + +88 +´Ùeùed + +funùiÚ + + $£tNe¡edT¿n§ùiÚCouÁ +( +$v +) + +90 +$this +-> +áedT¿n§ùiÚCouÁ + = +$v +; + +91 + } +} + +96 +´Ùeùed + +funùiÚ + + $deüem’tNe¡edT¿n§ùiÚCouÁ +() + +98 +$this +-> +áedT¿n§ùiÚCouÁ +--; + +99 + } +} + +104 +´Ùeùed + +funùiÚ + + $šüem’tNe¡edT¿n§ùiÚCouÁ +() + +106 +$this +-> +áedT¿n§ùiÚCouÁ +++; + +107 + } +} + +115 +public + +funùiÚ + + $isInT¿n§ùiÚ +() + +117  ( +$this +-> + `g‘Ne¡edT¿n§ùiÚCouÁ +() > 0); + +118 + } +} + +123 +public + +funùiÚ + + $begšT¿n§ùiÚ +() + +125 +$»tuº + = +Œue +; + +126 +$ÝcouÁ + = +$this +-> + `g‘Ne¡edT¿n§ùiÚCouÁ +(); + +127 iàÐ +$ÝcouÁ + === 0 ) { + +128 +$»tuº + = +·»Á +:: + `begšT¿n§ùiÚ +(); + +129 +$this +-> +isUncomm™abË + = +çl£ +; + +131 +$this +-> + `šüem’tNe¡edT¿n§ùiÚCouÁ +(); + +132  +$»tuº +; + +133 + } +} + +139 +public + +funùiÚ + + $comm™ +() + +141 +$»tuº + = +Œue +; + +142 +$ÝcouÁ + = +$this +-> + `g‘Ne¡edT¿n§ùiÚCouÁ +(); + +143 ià( +$ÝcouÁ + > 0) { + +144 ià( +$ÝcouÁ + === 1) { + +145 ià( +$this +-> +isUncomm™abË +) { + +146 +throw + +Ãw + + `PrݖExû±iÚ +('Cannot commit because‡‚estedransaction was„olled back'); + +148 +$»tuº + = +·»Á +:: + `comm™ +(); + +151 +$this +-> + `deüem’tNe¡edT¿n§ùiÚCouÁ +(); + +153  +$»tuº +; + +154 + } +} + +161 +public + +funùiÚ + + $rÞlBack +() + +163 +$»tuº + = +Œue +; + +164 +$ÝcouÁ + = +$this +-> + `g‘Ne¡edT¿n§ùiÚCouÁ +(); + +165 ià( +$ÝcouÁ + > 0) { + +166 ià( +$ÝcouÁ + === 1) { + +167 +$»tuº + = +·»Á +:: + `rÞlBack +(); + +169 +$this +-> +isUncomm™abË + = +Œue +; + +171 +$this +-> + `deüem’tNe¡edT¿n§ùiÚCouÁ +(); + +173  +$»tuº +; + +174 + } +} + +181 +public + +funùiÚ + + $fÜûRÞlBack +() + +183 +$»tuº + = +Œue +; + +184 +$ÝcouÁ + = +$this +-> + `g‘Ne¡edT¿n§ùiÚCouÁ +(); + +185 ià( +$ÝcouÁ + > 0) { + +188 +$»tuº + = +·»Á +:: + `rÞlBack +(); + +192 +$this +-> +áedT¿n§ùiÚCouÁ + = 0; + +194  +$»tuº +; + +195 + } +} + +206 +public + +funùiÚ + + $£tA‰ribu‹ +( +$©Œibu‹ +, +$v®ue +) + +208  +$©Œibu‹ +) { + +209  +£lf +:: +PROPEL_ATTR_CACHE_PREPARES +: + +210 +$this +-> +ÿcheP»·»dS‹m’ts + = +$v®ue +; + +213 +·»Á +:: + `£tA‰ribu‹ +( +$©Œibu‹ +, +$v®ue +); + +215 + } +} + +225 +public + +funùiÚ + + $g‘A‰ribu‹ +( +$©Œibu‹ +) + +227  +$©Œibu‹ +) { + +228  +£lf +:: +PROPEL_ATTR_CACHE_PREPARES +: + +229  +$this +-> +ÿcheP»·»dS‹m’ts +; + +232  +·»Á +:: + `g‘A‰ribu‹ +( +$©Œibu‹ +); + +234 + } +} + +244 +public + +funùiÚ + +´•¬e +( +$sql +, +$driv”_ÝtiÚs + = + $¬¿y +()) + +246 ià( +$this +-> +ÿcheP»·»dS‹m’ts +) { + +247 +$key + = +$sql +; + +248 ià(! + `is£t +( +$this +-> +´•¬edS‹m’ts +[ +$key +])) { + +249 +$¡mt + = +·»Á +:: + `´•¬e +( +$sql +, +$driv”_ÝtiÚs +); + +250 +$this +-> +´•¬edS‹m’ts +[ +$key +] = +$¡mt +; + +251  +$¡mt +; + +253  +$this +-> +´•¬edS‹m’ts +[ +$key +]; + +256  +·»Á +:: + `´•¬e +( +$sql +, +$driv”_ÝtiÚs +); + +258 + } +} + +263 +public + +funùiÚ + + $þ—rS‹m’tCache +() + +265 +$this +-> +´•¬edS‹m’ts + = + `¬¿y +(); + +266 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/PropelPager.php + +1 +£tCr™”Ÿ +( +$c +); + +139 + g$this +-> +£tP“rCÏss +( +$³”CÏss +); + +140 + g$this +-> +£tP“rS–eùM‘hod +( +$³”S–eùM‘hod +); + +141 + g$this +-> +guessP“rCouÁM‘hod +(); + +142 + g$this +-> +£tPage +( +$·ge +); + +143 + g$this +-> +£tRowsP”Page +( +$rowsP”Page +); + +151 +public + +funùiÚ + +£tCr™”Ÿ +( +Cr™”Ÿ + +$c +) + +153 + g$this +-> + gü™”Ÿ + = +$c +; + +160 +public + +funùiÚ + +g‘Cr™”Ÿ +() + +162  + g$this +-> + gü™”Ÿ +; + +171 +public + +funùiÚ + +£tP“rCÏss +( +$þass +) + +173 + g$this +-> + g³”CÏss + = +$þass +; + +180 +public + +funùiÚ + +g‘P“rCÏss +() + +182  + g$this +-> + g³”CÏss +; + +193 +public + +funùiÚ + +£tP“rM‘hod +( +$m‘hod +) + +195 + g$this +-> +£tP“rS–eùM‘hod +( +$m‘hod +); + +205 +public + +funùiÚ + +g‘P“rM‘hod +() + +207  + g$this +-> +g‘P“rS–eùM‘hod +(); + +216 +public + +funùiÚ + +£tP“rS–eùM‘hod +( +$m‘hod +) + +218 + g$this +-> + g³”S–eùM‘hod + = +$m‘hod +; + +225 +public + +funùiÚ + +g‘P“rS–eùM‘hod +() + +227  + g$this +-> + g³”S–eùM‘hod +; + +236 +public + +funùiÚ + +£tP“rCouÁM‘hod +( +$m‘hod +) + +238 + g$this +-> + g³”CouÁM‘hod + = +$m‘hod +; + +244 +public + +funùiÚ + +g‘P“rCouÁM‘hod +() + +246  + g$this +-> + g³”CouÁM‘hod +; + +252 +´iv©e + +funùiÚ + +guessP“rCouÁM‘hod +() + +254 + g$£ËùM‘hod + = +$this +-> +g‘P“rS–eùM‘hod +(); + +255 ià( + g$£ËùM‘hod + == 'doSelect') { + +256 +$couÁM‘hod + = 'doCount'; + +257 } +–£if + ( ( +$pos + = +¡ros +( +$£ËùM‘hod +, 'doSelectJoin')) === 0) { + +258 +$couÁM‘hod + = 'doCouÁ' . +sub¡r +( +$£ËùM‘hod +, +¡¾’ +('doSelect')); + +263 + g$couÁM‘hod + = 'doCount'; + +265 + g$this +-> +£tP“rCouÁM‘hod +( +$couÁM‘hod +); + +273 +public + +funùiÚ + +g‘ResuÉ +() + +275 ià(! +is£t +( +$this +-> +rs +)) { + +276 + g$this +-> +doRs +(); + +279  + g$this +-> + grs +; + +289 +´iv©e + +funùiÚ + +doRs +() + +291 + g$this +-> + gü™”Ÿ +-> +£tOff£t +( +$this +-> +¡¬t +); + +292 + g$this +-> + gü™”Ÿ +-> +£tLim™ +( +$this +-> +max +); + +293 + g$this +-> + grs + = +ÿÎ_u£r_func +( +¬¿y +( +$this +-> +g‘P“rCÏss +(), $this-> +g‘P“rS–eùM‘hod +()), $this-> +ü™”Ÿ +); + +304 +public + +funùiÚ + +g‘Fœ¡Page +() + +314 +public + +funùiÚ + +©Fœ¡Page +() + +316  + g$this +-> +g‘Page +(è=ð +$this +-> +g‘Fœ¡Page +(); + +324 +public + +funùiÚ + +g‘La¡Page +() + +326 + g$tÙ®Pages + = +$this +-> +g‘TÙ®Pages +(); + +327 ià( + g$tÙ®Pages + == 0) { + +330  + g$tÙ®Pages +; + +339 +public + +funùiÚ + +©La¡Page +() + +341  + g$this +-> +g‘Page +(è=ð +$this +-> +g‘La¡Page +(); + +349 +public + +funùiÚ + +g‘TÙ®Pages +() { + +350 ià(! +is£t +( +$this +-> +·ges +)) { + +351 + g$»cÜdCouÁ + = +$this +-> +g‘TÙ®RecÜdCouÁ +(); + +352 ià( + g$this +-> + gmax + > 0) { + +353 + g$this +-> + g·ges + = +ûž +( +$»cÜdCouÁ +/ +$this +-> +max +); + +355 + g$this +-> + g·ges + = 0; + +358  + g$this +-> + g·ges +; + +367 +public + +funùiÚ + +g‘P»vLšks +( +$¿nge + = 5) + +369 +$tÙ® + = +$this +-> +g‘TÙ®Pages +(); + +370 + g$¡¬t + = +$this +-> +g‘Page +() - 1; + +371 + g$’d + = +$this +-> +g‘Page +(è- +$¿nge +; + +372 + g$fœ¡ + = +$this +-> +g‘Fœ¡Page +(); + +373 + g$lšks + = +¬¿y +(); + +374  + g$i += +$¡¬t +; $i> + g$’d +; $i--) { + +375 ià( + g$i + < + g$fœ¡ +) { + +378 + g$lšks +[] = +$i +; + +381  +¬¿y_»v”£ +( +$lšks +); + +390 +public + +funùiÚ + +g‘NextLšks +( +$¿nge + = 5) + +392 +$tÙ® + = +$this +-> +g‘TÙ®Pages +(); + +393 + g$¡¬t + = +$this +-> +g‘Page +() + 1; + +394 + g$’d + = +$this +-> +g‘Page +(è+ +$¿nge +; + +395 + g$Ï¡ + = +$this +-> +g‘La¡Page +(); + +396 + g$lšks + = +¬¿y +(); + +397  + g$i += +$¡¬t +; $i< + g$’d +; $i++) { + +398 ià( + g$i + > + g$Ï¡ +) { + +401 + g$lšks +[] = +$i +; + +404  + g$lšks +; + +412 +public + +funùiÚ + +isLa¡PageCom¶‘e +() + +414  !( + g$this +-> +g‘TÙ®RecÜdCouÁ +(è% $this-> + gmax +); + +422 +public + +funùiÚ + +g‘P»v +() { + +423 ià( + g$this +-> +g‘Page +(è!ð +$this +-> +g‘Fœ¡Page +()) { + +424 +$´ev + = +$this +-> +g‘Page +() - 1; + +426 + g$´ev + = +çl£ +; + +428  + g$´ev +; + +436 +public + +funùiÚ + +g‘Next +() { + +437 ià( + g$this +-> +g‘Page +(è!ð +$this +-> +g‘La¡Page +()) { + +438 +$Ãxt + = +$this +-> +g‘Page +() + 1; + +440 + g$Ãxt + = +çl£ +; + +442  + g$Ãxt +; + +450 +public + +funùiÚ + +£tPage +( +$·ge +) + +452 + g$this +-> + g·ge + = +$·ge +; + +454 + g$this +-> +ÿlcuϋS¹ +(); + +461 +public + +funùiÚ + +g‘Page +() + +463  + g$this +-> + g·ge +; + +470 +public + +funùiÚ + +£tRowsP”Page +( +$r +) + +472 + g$this +-> + gmax + = +$r +; + +474 + g$this +-> +ÿlcuϋS¹ +(); + +481 +public + +funùiÚ + +g‘RowsP”Page +() + +483  + g$this +-> + gmax +; + +490 +´iv©e + +funùiÚ + +ÿlcuϋS¹ +() + +492 + g$this +-> + g¡¬t + = ( ( +$this +-> +·ge + - 1è* $this-> +max + ); + +502 +public + +funùiÚ + +g‘TÙ®RecÜdCouÁ +() + +505 ià(! +is£t +( +$this +-> +rs +)) { + +506 + g$this +-> +doRs +(); + +509 ià( +em±y +( +$this +-> +»cÜdCouÁ +)) { + +510 + g$this +-> + gcouÁCr™”Ÿ + = +þÚe + +$this +-> +ü™”Ÿ +; + +511 + g$this +-> + gcouÁCr™”Ÿ +-> +£tLim™ +(0); + +512 + g$this +-> + gcouÁCr™”Ÿ +-> +£tOff£t +(0); + +514 + g$this +-> + g»cÜdCouÁ + = +ÿÎ_u£r_func +( + +515 +¬¿y +( + +516 +$this +-> +g‘P“rCÏss +(), + +517 +$this +-> +g‘P“rCouÁM‘hod +() + +519 +$this +-> +couÁCr™”Ÿ + + +524  + g$this +-> + g»cÜdCouÁ +; + +532 +public + +funùiÚ + +£tS¹ +( +$v +) + +534 + g$this +-> + g¡¬t + = +$v +; + +542 +public + +funùiÚ + +£tMax +( +$v +) + +544 + g$this +-> + gmax + = +$v +; + +551 +public + +funùiÚ + +couÁ +() + +553  +couÁ +( +$this +-> +g‘ResuÉ +()); + +560 +public + +funùiÚ + +cu¼’t +() + +562 ià(! +is£t +( +$this +-> +rs +)) { + +563 + g$this +-> +doRs +(); + +565  + g$this +-> + grs +[ +$this +-> +cu¼’tKey +]; + +572 +public + +funùiÚ + +key +() + +574  + g$this +-> + gcu¼’tKey +; + +581 +public + +funùiÚ + +Ãxt +() + +583 + g$this +-> + gcu¼’tKey +++; + +590 +public + +funùiÚ + +»wšd +() + +592 + g$this +-> + gcu¼’tKey + = 0; + +599 +public + +funùiÚ + +v®id +() + +601 ià(! +is£t +( +$this +-> +rs +)) { + +602 + g$this +-> +doRs +(); + +604  +š_¬¿y +( +$this +-> +cu¼’tKey +, +¬¿y_keys +($this-> +rs +)); + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/BasicValidator.php + +1 + `´•¬eRegexp +( +$m­ +-> + `g‘V®ue +()), +$¡r +) != 0); + +78 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/MaxLengthValidator.php + +1 + `g‘V®ue +()); + +50 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/MaxValueValidator.php + +1 + `g‘V®ue +()); + +52  +çl£ +; + +54 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/MinLengthValidator.php + +1 ð + `štv® +( +$m­ +-> + `g‘V®ue +()); + +47 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/MinValueValidator.php + +1 ðštv®( +$m­ +-> + `g‘V®ue +()); + +52  +çl£ +; + +54 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/NotMatchValidator.php + +1 + `´•¬eRegexp +( +$m­ +-> + `g‘V®ue +()), +$¡r +) == 0); + +76 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/RequiredValidator.php + +1 + `g‘V®ue +()); + +44 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/UniqueValidator.php + +1 + `g‘CÞumn +(); + +47 +$c + = +Ãw + + `Cr™”Ÿ +(); + +48 +$c +-> + `add +( +$cÞumn +-> + `g‘FuÎyQu®if›dName +(), +$¡r +, +Cr™”Ÿ +:: +EQUAL +); + +50 +$bË + = +$cÞumn +-> + `g‘TabË +()-> + `g‘CÏssName +(); + +52 +$þazz + = +$bË + . 'Peer'; + +53 +$couÁ + = + `ÿÎ_u£r_func +( + `¬¿y +( +$þazz +, 'doCouÁ'), +$c +); + +55 +$isV®id + = ( +$couÁ + === 0); + +57  +$isV®id +; + +59 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/ValidValuesValidator.php + +1 + `g‘V®ue +())); + +44 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/ValidationFailed.php + +1 +cÞÇme + = +$cÞÇme +; + +57 +$this +-> +mes§ge + = +$mes§ge +; + +58 +$this +-> +v®id©Ü + = +$v®id©Ü +; + +65 +public + +funùiÚ + + $£tCÞumn +( +$v +) + +67 +$this +-> +cÞÇme + = +$v +; + +68 + } +} + +74 +public + +funùiÚ + + $g‘CÞumn +() + +76  +$this +-> +cÞÇme +; + +77 + } +} + +83 +public + +funùiÚ + + $£tMes§ge +( +$v +) + +85 +$this +-> +mes§ge + = +$v +; + +86 + } +} + +92 +public + +funùiÚ + + $g‘Mes§ge +() + +94  +$this +-> +mes§ge +; + +95 + } +} + +101 +public + +funùiÚ + + $£tV®id©Ü +( +$v +) + +103 +$this +-> +v®id©Ü + = +$v +; + +104 + } +} + +110 +public + +funùiÚ + + $g‘V®id©Ü +() + +112  +$this +-> +v®id©Ü +; + +113 + } +} + +121 +public + +funùiÚ + + $__toSŒšg +() + +123  +$this +-> + `g‘Mes§ge +(); + +124 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/widget/sfWidgetFormPropelChoice.class.php + +1 + `addRequœedO±iÚ +('model'); + +54 +$this +-> + `addO±iÚ +('add_em±y', +çl£ +); + +55 +$this +-> + `addO±iÚ +('method', '__toString'); + +56 +$this +-> + `addO±iÚ +('key_method', 'getPrimaryKey'); + +57 +$this +-> + `addO±iÚ +('Üd”_by', +nuÎ +); + +58 +$this +-> + `addO±iÚ +('ü™”Ÿ', +nuÎ +); + +59 +$this +-> + `addO±iÚ +('cÚÃùiÚ', +nuÎ +); + +60 +$this +-> + `addO±iÚ +('muɝË', +çl£ +); + +61 +$this +-> + `addO±iÚ +('peer_method', 'doSelect'); + +63 +·»Á +:: + `cÚfigu» +( +$ÝtiÚs +, +$©Œibu‹s +); + +64 + } +} + +71 +public + +funùiÚ + + $g‘Choiûs +() + +73 +$choiûs + = + `¬¿y +(); + +74 ià( +çl£ + !=ð +$this +-> + `g‘O±iÚ +('add_empty')) + +76 +$choiûs +[''] = +Œue + ==ð +$this +-> + `g‘O±iÚ +('add_em±y'è? '' : $this-> + `Œª¦©e +($this->getOption('add_empty')); + +79 +$þass + = + `cÚ¡ªt +( +$this +-> + `g‘O±iÚ +('model').'::PEER'); + +81 +$ü™”Ÿ + = +nuÎ + ==ð +$this +-> + `g‘O±iÚ +('ü™”Ÿ'è? +Ãw + + `Cr™”Ÿ +(è: +þÚe + $this->getOption('criteria'); + +82 ià( +$Üd” + = +$this +-> + `g‘O±iÚ +('order_by')) + +84 +$m‘hod + = + `¥rštf +('add%sOrd”ByCÞumn', 0 ==ð + `¡½os +( + `¡¹ouµ” +( +$Üd” +[1]), 'ASC') ? 'Ascending' : 'Descending'); + +85 +$ü™”Ÿ +-> + `$m‘hod +( + `ÿÎ_u£r_func +( + `¬¿y +( +$þass +, 'Œª¦©eF›ldName'), +$Üd” +[0], +Ba£P“r +:: +TYPE_PHPNAME +, Ba£P“r:: +TYPE_COLNAME +)); + +87 +$objeùs + = + `ÿÎ_u£r_func +( + `¬¿y +( +$þass +, +$this +-> + `g‘O±iÚ +('³”_m‘hod')), +$ü™”Ÿ +, $this->getOption('connection')); + +89 +$m‘hodKey + = +$this +-> + `g‘O±iÚ +('key_method'); + +90 ià(! + `m‘hod_exi¡s +( +$this +-> + `g‘O±iÚ +('mod–'), +$m‘hodKey +)) + +92 +throw + +Ãw + + `RuÁimeExû±iÚ +( + `¥rštf +('CÏs "%s" mu¡ im¶em’ˆ¨"%s" m‘hodØb»nd”ed iÀ¨"%s" widg‘', +$this +-> + `g‘O±iÚ +('mod–'), +$m‘hodKey +, +__CLASS__ +)); + +95 +$m‘hodV®ue + = +$this +-> + `g‘O±iÚ +('method'); + +96 ià(! + `m‘hod_exi¡s +( +$this +-> + `g‘O±iÚ +('mod–'), +$m‘hodV®ue +)) + +98 +throw + +Ãw + + `RuÁimeExû±iÚ +( + `¥rštf +('CÏs "%s" mu¡ im¶em’ˆ¨"%s" m‘hodØb»nd”ed iÀ¨"%s" widg‘', +$this +-> + `g‘O±iÚ +('mod–'), +$m‘hodV®ue +, +__CLASS__ +)); + +101 + `fܗch + ( +$objeùs + +as + +$objeù +) + +103 +$choiûs +[ +$objeù +-> + `$m‘hodKey +()] = $objeù-> + `$m‘hodV®ue +(); + +106  +$choiûs +; + +107 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bin/prove.php + +1 + gba£_dœ + = +»®·th +( +dœÇme +( +__FILE__ +).'/..'); + +26 + g$h +->( + gsfFšd” +:: +ty³ +('fže')-> +´uà +('fixtu»s')-> +Çme +('*Te¡.php')-> +š +( +¬¿y +( + +27 +$h +-> +ba£_dœ +.'/unit', + +28 +$h +-> +ba£_dœ +.'/functional', + +31 +ex™ +( +$h +-> +run +() ? 0 : 1); + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bootstrap/functional.php + +1 +š™ŸlizePrݖ +( +$­p +); + +31 ià( + $is£t +( +$fixtu»s +)) + +33 +$cÚfigu¿tiÚ +-> + `lßdFixtu»s +( +$fixtu»s +); + +34 + } +} + +36 +funùiÚ + + $sf_funùiÚ®_‹¡_shutdown_þ—nup +() + +38 +sfToÞk™ +:: + `þ—rDœeùÜy +( +sfCÚfig +:: + `g‘ +('sf_cache_dir')); + +39 +sfToÞk™ +:: + `þ—rDœeùÜy +( +sfCÚfig +:: + `g‘ +('sf_log_dir')); + +40 + } +} + +42 +funùiÚ + + $sf_funùiÚ®_‹¡_shutdown +() + +45 +Œy + + +47 + `sf_funùiÚ®_‹¡_shutdown_þ—nup +(); + +49 + `ÿtch + ( +Exû±iÚ + +$e +) + +51 +echo + +$e +. +PHP_EOL +; + +53 + } +} + +55  + gŒue +; + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bootstrap/unit.php + +1 +addDœeùÜy +( +»®·th +( +dœÇme +( +__FILE__ +).'/../../lib')); + +16 + g$autÞßd +->(); + +18 + g$_‹¡_dœ + = +»®·th +( +dœÇme +( +__FILE__ +).'/..'); + +20 + gsfToÞk™ +:: +addInþudeP©h +( +»®·th +( +dœÇme +( +__FILE__ +).'/../../lib/vendor')); + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/crud10Test.php + +1 +brow£ +( +¬¿y +('with-show')); + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/crud2Test.php + +1 +brow£ +( +¬¿y +('generate-in-cache')); + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/crud3Test.php + +1 +brow£ +( +¬¿y +('generate-in-cache', 'non-verbose-templates')); + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/crud6Test.php + +1 +brow£ +( +¬¿y +()); + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/crud7Test.php + +1 +brow£ +( +¬¿y +('non-verbose-templates')); + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/crud9Test.php + +1 +brow£ +( +¬¿y +('generate-in-cache', 'with-show')); + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/crudBrowser.class.php + +1 +´ojeùDœ + = + `dœÇme +( +__FILE__ +).'/../fixtures'; + +22 +$this +-> + `þ—nup +(); + +24 + `chdœ +( +$this +-> +´ojeùDœ +); + +25 +$sk + = +Ãw + + `sfPrݖG’”©eModuËTask +Òew + `sfEv’tDi¥©ch” +(),‚ew + `sfFÜm©‹r +()); + +26 +$ÝtiÚs +[] = 'env=test'; + +27 +$ÝtiÚs +[] = 'sšguÏr='. +$this +-> +sšguÏrName +; + +28 +$ÝtiÚs +[] = '¶u¿l='. +$this +-> +¶u¿lName +; + +29 +$ÝtiÚs +[] = '--non-verbose-templates'; + +30 +$sk +-> + `run +( + `¬¿y +('üud', '¬tiþe', 'A¹iþe'), +$ÝtiÚs +); + +32 + `»quœe_Úû +( +$this +-> +´ojeùDœ +.'/config/ProjectConfiguration.class.php'); + +33 +sfCڋxt +:: + `ü—‹In¡ªû +( +ProjeùCÚfigu¿tiÚ +:: + `g‘AµliÿtiÚCÚfigu¿tiÚ +('üud', '‹¡', +Œue +, +$this +-> +´ojeùDœ +)); + +35  +$ÝtiÚs +; + +38 +public + +funùiÚ + + $‹¬down +() + +40 +$this +-> + `þ—nup +(); + +42  +$this +; + +43 + } +} + +45 +public + +funùiÚ + + $brow£ +( +$ÝtiÚs +) + +47 +$ÝtiÚs + = +$this +-> + `£tup +($options); + +50 +$this +-> + +51 + `šfo +('list…age')-> + +52 + `g‘ +('/'. +$this +-> +u¾P»fix +)-> + +53 + `w™h +('»que¡')-> + `begš +()-> + +54 + `isP¬am‘” +('moduË', +$this +-> +u¾P»fix +)-> + +55 + `isP¬am‘” +('action', 'index')-> + +56 + `’d +()-> + +57 + `w™h +('»¥Ú£')-> + `begš +()-> + +58 + `isStusCode +(200)-> + +60 + `checkEËm’t +('h1', +$this +-> +¶u¿lName +.' List')-> + +62 + `checkEËm’t +('tableheadrh:nth(0)', 'Id')-> + +63 + `checkEËm’t +('tableheadrh:nth(1)', 'Title')-> + +64 + `checkEËm’t +('tableheadrh:nth(2)', 'Body')-> + +65 + `checkEËm’t +('tableheadrh:nth(3)', 'Online')-> + +66 + `checkEËm’t +('tableheadrh:nth(4)', 'Excerpt')-> + +67 + `checkEËm’t +('tableheadrh:nth(5)', 'Category')-> + +68 + `checkEËm’t +('tableheadrh:nth(6)', 'Created‡t')-> + +69 + `checkEËm’t +('tableheadrh:nth(7)', 'End date')-> + +70 + `checkEËm’t +('tableheadrh:nth(8)', 'Book')-> + +72 + `checkEËm’t +('tablebodyrd:nth(0)', '1')-> + +73 + `checkEËm’t +('tablebodyrd:nth(1)', 'fooitle')-> + +74 + `checkEËm’t +('tablebodyrd:nth(2)', 'bar body')-> + +75 + `checkEËm’t +('tablebodyrd:nth(3)', '1')-> + +76 + `checkEËm’t +('tablebodyrd:nth(4)', 'fooƒxcerpt')-> + +77 + `checkEËm’t +('tablebodyrd:nth(5)', '1')-> + +78 + `checkEËm’t +('tablebodyrd:nth(6)', '/^\d{4}\-\d{2}\-\d{2} \d{2}\:\d{2}\:\d{2}$/')-> + +79 + `checkEËm’t +('tablebodyrd:nth(7)', '')-> + +80 + `checkEËm’t +('tablebodyrd:nth(8)', '')-> + +81 + `checkEËm’t +( + `¥rštf +('a[h»f*="/%s/Ãw"]', +$this +-> +u¾P»fix +))-> + +82 + `checkEËm’t +( + `¥rštf +('tbody‡[h»f*="/%s/1%s"]', +$this +-> +u¾P»fix +, + `š_¬¿y +('w™h-show', +$ÝtiÚs +) ? '' : '/edit'))-> + +83 + `checkEËm’t +( + `¥rštf +('tbody‡[h»f*="/%s/2%s"]', +$this +-> +u¾P»fix +, + `š_¬¿y +('w™h-show', +$ÝtiÚs +) ? '' : '/edit'))-> + +84 + `’d +() + +88 +$this +-> + +89 + `šfo +('create…age')-> + +90 + `þick +('New')-> + +91 + `w™h +('»que¡')-> + `begš +()-> + +92 + `isP¬am‘” +('moduË', +$this +-> +u¾P»fix +)-> + +93 + `isP¬am‘” +('action', 'new')-> + +94 + `isP¬am‘” +('id', +nuÎ +)-> + +95 + `’d +()-> + +96 + `w™h +('»¥Ú£')-> + `begš +()-> + +97 + `isStusCode +(200)-> + +98 + `checkEËm’t +('h1', 'New '. +$this +-> +sšguÏrName +)-> + +99 + `checkEËm’t +( + `¥rštf +('a[h»f*="/%s"]', +$this +-> +u¾P»fix +), 'Backo†ist')-> + +100 + `checkEËm’t +( + `¥rštf +('a[h»f*="/%s/"]', +$this +-> +u¾P»fix +), +çl£ +)-> + +101 + `’d +()-> + +102 + `checkFÜmV®ues +( + `¬¿y +( + +105 'Oƚe' => +çl£ +, + +107 '’d_d©e' => + `¬¿y +('year' => '', 'month' => '', 'day' => '', 'hour' => '', 'minute' => ''), + +109 'authÜ_¬tiþe_li¡' => + `¬¿y +(), + +114 +$this +-> + +115 + `šfo +('save')-> + +116 + `§veV®ues +( +$ÝtiÚs +, + `¬¿y +( + +119 'Oƚe' => +Œue +, + +121 '’d_d©e' => + `¬¿y +('year' => '', 'month' => '', 'day' => '', 'hour' => '', 'minute' => ''), + +122 'book_id' => +nuÎ +, + +123 'authÜ_¬tiþe_li¡' => + `¬¿y +(1, 2), + +124 ), 3, +Œue +) + +128 +$this +-> + +129 + `šfo +('go backohe†ist')-> + +130 + `þick +('Backo†ist')-> + +131 + `w™h +('»que¡')-> + `begš +()-> + +132 + `isP¬am‘” +('moduË', +$this +-> +u¾P»fix +)-> + +133 + `isP¬am‘” +('action', 'index')-> + +134 + `’d +()-> + +135 + `w™h +('»¥Ú£')-> + `isStusCode +(200) + +139 +$this +-> + `šfo +('edit…age'); + +140 ià(! + `š_¬¿y +('w™h-show', +$ÝtiÚs +è&& ($ÝtiÚs['w™h-show'] ==ð +Œue +)) + +142 +$this +-> + `þick +('3'); + +146 +$this +-> + `g‘ +( + `¥rštf +('/%s/3/ed™', $this-> +u¾P»fix +)); + +149 +$this +-> + +150 + `w™h +('»que¡')-> + `begš +()-> + +151 + `isP¬am‘” +('moduË', +$this +-> +u¾P»fix +)-> + +152 + `isP¬am‘” +('action', 'edit')-> + +153 + `isP¬am‘” +('id', 3)-> + +154 + `’d +()-> + +155 + `w™h +('»¥Ú£')-> + `begš +()-> + +156 + `isStusCode +(200)-> + +157 + `checkEËm’t +('h1', 'Ed™ '. +$this +-> +sšguÏrName +)-> + +158 + `checkEËm’t +( + `¥rštf +('a[h»f*="/%s"]', +$this +-> +u¾P»fix +), 'Backo†ist')-> + +159 + `checkEËm’t +( + `¥rštf +('a[h»f*="/%s/3"]', +$this +-> +u¾P»fix +), 'Delete')-> + +160 + `checkEËm’t +( + `¥rštf +('a[h»f*="/%s/3"][Úþick*="cÚfœm"]', +$this +-> +u¾P»fix +))-> + +161 + `checkEËm’t +('tablebodyh:nth(0)', 'Title')-> + +162 + `checkEËm’t +('tablebodyh:nth(1)', 'Body')-> + +163 + `checkEËm’t +('tablebodyh:nth(2)', 'Online')-> + +164 + `checkEËm’t +('tablebodyh:nth(3)', 'Excerpt')-> + +165 + `checkEËm’t +('tablebodyh:nth(4)', 'Category')-> + +166 + `checkEËm’t +('tablebodyh:nth(5)', 'Created‡t')-> + +167 + `checkEËm’t +('tablebodyh:nth(6)', 'End date')-> + +168 + `checkEËm’t +('tablebodyh:nth(7)', 'Book')-> + +169 + `checkEËm’t +('tablebodyh:nth(8)', 'Author‡rticle†ist')-> + +170 + `checkEËm’t +('tablebodyd select[id="article_category_id"][name="article[category_id]"] option', 2)-> + +171 + `checkEËm’t +('tablebodyd select[id="article_book_id"][name="article[book_id]"] option', 2)-> + +172 + `’d +() + +176 +$v®ues + = + `¬¿y +( + +180 'Oƚe' => +Œue +, + +182 'ÿ‹gÜy_id' => +nuÎ +, + +183 '’d_d©e' => + `¬¿y +('year' => 0, 'month' => 0, 'day' => 15, 'hour' => '10', 'minute' => '20'), + +185 'authÜ_¬tiþe_li¡' => + `¬¿y +(0, 5), + +188 +$this +-> + +189 + `šfo +('save / validation')-> + +190 + `þick +('Save', + `¬¿y +('¬tiþe' => +$v®ues +))-> + +191 + `w™h +('»que¡')-> + `begš +()-> + +192 + `isP¬am‘” +('moduË', +$this +-> +u¾P»fix +)-> + +193 + `isP¬am‘” +('action', 'update')-> + +194 + `’d +()-> + +195 + `checkFÜmV®ues +( + `¬¿y_m”ge +( +$v®ues +, + `¬¿y +( + +196 '’d_d©e' => + `¬¿y +('y—r' => +nuÎ +, 'month' =>‚ull, 'day' => 15, 'hour' => '10', 'minute' => '20'))) + +198 + `w™h +('»¥Ú£')-> + `begš +()-> + +199 + `isStusCode +(200)-> + +200 + `checkEËm’t +('ul[class="error_list"]†i:contains("Required.")', 2)-> + +201 + `checkEËm’t +('ul[class="error_list"]†i:contains("Invalid.")', 4)-> + +202 + `’d +() + +206 +$this +-> + +207 + `šfo +('save')-> + +208 + `§veV®ues +( +$ÝtiÚs +, + `¬¿y +( + +212 'Oƚe' => +çl£ +, + +214 '’d_d©e' => + `¬¿y +('y—r' => + `d©e +('Y'), 'month' => 10, 'day' => 15, 'hour' => '10', 'minute' => '20'), + +216 'authÜ_¬tiþe_li¡' => + `¬¿y +(1, 3), + +217 ), 3, +çl£ +) + +221 +$this +-> + +222 + `šfo +('go backohe†ist')-> + +223 + `þick +('Backo†ist')-> + +224 + `w™h +('»que¡')-> + `begš +()-> + +225 + `isP¬am‘” +('moduË', +$this +-> +u¾P»fix +)-> + +226 + `isP¬am‘” +('action', 'index')-> + +227 + `’d +()-> + +228 + `w™h +('»¥Ú£')-> + `isStusCode +(200) + +232 +$this +-> + +233 + `šfo +('delete')-> + +234 + `g‘ +( + `¥rštf +('/%s/3/ed™', +$this +-> +u¾P»fix +))-> + +235 + `þick +('D–‘e', + `¬¿y +(),‡¼ay('m‘hod' => 'd–‘e', '_w™h_c¤f' => +Œue +))-> + +236 + `w™h +('»que¡')-> + `begš +()-> + +237 + `isP¬am‘” +('moduË', +$this +-> +u¾P»fix +)-> + +238 + `isP¬am‘” +('action', 'delete')-> + +239 + `’d +()-> + +240 + `w™h +('»¥Ú£')-> + `begš +()-> + +241 + `isRedœeùed +()-> + +242 + `fÞlowRedœeù +()-> + +243 + `’d +()-> + +244 + `w™h +('»que¡')-> + `begš +()-> + +245 + `isP¬am‘” +('moduË', +$this +-> +u¾P»fix +)-> + +246 + `isP¬am‘” +('action', 'index')-> + +247 + `’d +()-> + +248 + `w™h +('»¥Ú£')-> + `isStusCode +(200)-> + +250 + `g‘ +( + `¥rštf +('/%s/3/ed™', +$this +-> +u¾P»fix +))-> + +251 + `w™h +('»¥Ú£')-> + `isStusCode +(404) + +254 ià( + `š_¬¿y +('w™h-show', +$ÝtiÚs +)) + +257 +$this +-> + +258 + `šfo +('show…age')-> + +259 + `g‘ +( + `¥rštf +('/%s/2', +$this +-> +u¾P»fix +))-> + +260 + `w™h +('»que¡')-> + `begš +()-> + +261 + `isP¬am‘” +('moduË', +$this +-> +u¾P»fix +)-> + +262 + `isP¬am‘” +('action', 'show')-> + +263 + `isP¬am‘” +('id', 2)-> + +264 + `’d +()-> + +265 + `w™h +('»¥Ú£')-> + `begš +()-> + +266 + `isStusCode +(200)-> + +267 + `checkEËm’t +( + `¥rštf +('a[h»f*="/%s/2%s"]', +$this +-> +u¾P»fix +, + `š_¬¿y +('w™h-show', +$ÝtiÚs +) ? '' : '/edit'), 'Edit')-> + +268 + `checkEËm’t +( + `¥rštf +('a[h»f*="/%s"]', +$this +-> +u¾P»fix +), 'Li¡', + `¬¿y +('position' => 1))-> + +269 + `checkEËm’t +('bodyablebodyr:nth(0)', '/Id\:\s+2/')-> + +270 + `checkEËm’t +('bodyablebodyr:nth(1)', '/Title\:\s+foo fooitle/')-> + +271 + `checkEËm’t +('bodyablebodyr:nth(2)', '/Body\:\s+bar bar body/')-> + +272 + `checkEËm’t +('bodyablebodyr:nth(3)', '/Online\:\s+/')-> + +273 + `checkEËm’t +('bodyablebodyr:nth(4)', '/Excerpt\:\s+fooƒxcerpt/')-> + +274 + `checkEËm’t +('bodyablebodyr:nth(5)', '/Category\:\s+2/')-> + +275 + `checkEËm’t +('bodyablebodyr:nth(6)', '/Created‡t\:\s+[0-9\-\:\s]+/')-> + +276 + `checkEËm’t +('bodyablebodyr:nth(7)', '/End date\:\s+[0-9\-\:\s]+/')-> + +277 + `checkEËm’t +('bodyablebodyr:nth(8)', '/Book\:\s+/')-> + +278 + `’d +() + +283 +$this +-> + `g‘ +( + `¥rštf +('/%s/show/id/2', $this-> +u¾P»fix +))-> + `w™h +('»¥Ú£')-> + `isStusCode +(404); + +286 +$this +-> + `‹¬down +(); + +288  +$this +; + +289 + } +} + +291 +public + +funùiÚ + + $§veV®ues +( +$ÝtiÚs +, +$v®ues +, +$id +, +$ü—tiÚ +) + +293 +$this +-> + +294 + `þick +('Save', + `¬¿y +('¬tiþe' => +$v®ues +))-> + +295 + `w™h +('»que¡')-> + `begš +()-> + +296 + `isP¬am‘” +('moduË', +$this +-> +u¾P»fix +)-> + +297 + `isP¬am‘” +('aùiÚ', +$ü—tiÚ + ? 'create' : 'update')-> + +298 + `’d +()-> + +299 + `w™h +('»¥Ú£')-> + `begš +()-> + +300 + `isRedœeùed +()-> + +301 + `fÞlowRedœeù +()-> + +302 + `’d +()-> + +303 + `w™h +('»¥Ú£')-> + `begš +()-> + +304 + `isStusCode +(200)-> + +305 + `’d +()-> + +306 + `w™h +('»que¡')-> + `begš +()-> + +307 + `isP¬am‘” +('moduË', +$this +-> +u¾P»fix +)-> + +308 + `isP¬am‘” +('action', 'edit')-> + +309 + `isP¬am‘” +('id', +$id +)-> + +310 + `’d +()-> + +311 + `checkFÜmV®ues +( +$v®ues +) + +314  +$this +; + +315 + } +} + +317 +public + +funùiÚ + + $checkFÜmV®ues +( +¬¿y + +$v®ues +) + +319  +$this +-> + `w™h +('»¥Ú£')-> + `begš +()-> + +320 + `checkEËm’t +( + `¥rštf +('bˁbodyd iÅut[id="¬tiþe_t™Ë"][Çme="¬tiþe[t™Ë]"][v®ue="%s"]', +$v®ues +['title']))-> + +322 + `checkEËm’t +('bˁbodydex»a[id="¬tiþe_body"][Çme="¬tiþe[body]"]', +$v®ues +['body'])-> + +324 + `checkEËm’t +( + `¥rštf +('bˁbodyd iÅut[id="¬tiþe_Oƚe"][Çme="¬tiþe[Oƚe]"][ty³="checkbox"]%s', +$v®ues +['Online'] ? '[checked="checked"]' : ''))-> + +326 + `checkEËm’t +( + `¥rštf +('bˁbodyd s–eù[id="¬tiþe_ÿ‹gÜy_id"][Çme="¬tiþe[ÿ‹gÜy_id]"] o±iÚ[v®ue="1"]%s', +$v®ues +['category_id'] == 1 ? '[selected="selected"]' : ''), 'Category 1')-> + +327 + `checkEËm’t +( + `¥rštf +('bˁbodyd s–eù[id="¬tiþe_ÿ‹gÜy_id"][Çme="¬tiþe[ÿ‹gÜy_id]"] o±iÚ[v®ue="2"]%s', +$v®ues +['category_id'] == 2 ? '[selected="selected"]' : ''), 'Category 2')-> + +329 + `checkEËm’t +( + `¥rštf +('bˁbodyd s–eù[id="¬tiþe_book_id"][Çme="¬tiþe[book_id]"] o±iÚ[v®ue=""]%s', +$v®ues +['book_id'] == '' ? '[selected="selected"]' : ''), '')-> + +330 + `checkEËm’t +( + `¥rštf +('bˁbodyd s–eù[id="¬tiþe_book_id"][Çme="¬tiþe[book_id]"] o±iÚ[v®ue="1"]%s', +$v®ues +['book_id'] == 1 ? '[selected="selected"]' : ''), 'The definitive guideo symfony')-> + +332 + `checkEËm’t +( + `¥rštf +('bˁbodyd s–eù[id="¬tiþe_authÜ_¬tiþe_li¡"][Çme="¬tiþe[authÜ_¬tiþe_li¡][]"] o±iÚ[v®ue="1"]%s', + `š_¬¿y +(1, +$v®ues +['author_article_list']) ? '[selected="selected"]' : ''), 'Fabien')-> + +333 + `checkEËm’t +( + `¥rštf +('bˁbodyd s–eù[id="¬tiþe_authÜ_¬tiþe_li¡"][Çme="¬tiþe[authÜ_¬tiþe_li¡][]"] o±iÚ[v®ue="2"]%s', + `š_¬¿y +(2, +$v®ues +['author_article_list']) ? '[selected="selected"]' : ''), 'Thomas')-> + +334 + `checkEËm’t +( + `¥rštf +('bˁbodyd s–eù[id="¬tiþe_authÜ_¬tiþe_li¡"][Çme="¬tiþe[authÜ_¬tiþe_li¡][]"] o±iÚ[v®ue="3"]%s', + `š_¬¿y +(3, +$v®ues +['author_article_list']) ? '[selected="selected"]' : ''), 'Hélène')-> + +336 + `checkEËm’t +('bˁbodyd s–eù[id="¬tiþe_’d_d©e_y—r"][Çme="¬tiþe[’d_d©e][y—r]"] o±iÚ[£Ëùed="£Ëùed"]', ( +¡ršg +è +$v®ues +['end_date']['year'])-> + +337 + `checkEËm’t +('bˁbodyd s–eù[id="¬tiþe_’d_d©e_mÚth"][Çme="¬tiþe[’d_d©e][mÚth]"] o±iÚ[£Ëùed="£Ëùed"]', ( +¡ršg +è +$v®ues +['end_date']['month'])-> + +338 + `checkEËm’t +('bˁbodyd s–eù[id="¬tiþe_’d_d©e_day"][Çme="¬tiþe[’d_d©e][day]"] o±iÚ[£Ëùed="£Ëùed"]', ( +¡ršg +è +$v®ues +['end_date']['day'])-> + +339 + `checkEËm’t +('bˁbodyd s–eù[id="¬tiþe_’d_d©e_hour"][Çme="¬tiþe[’d_d©e][hour]"] o±iÚ[£Ëùed="£Ëùed"]', ( +¡ršg +è +$v®ues +['end_date']['hour'])-> + +340 + `checkEËm’t +('bˁbodyd s–eù[id="¬tiþe_’d_d©e_mšu‹"][Çme="¬tiþe[’d_d©e][mšu‹]"] o±iÚ[£Ëùed="£Ëùed"]', ( +¡ršg +è +$v®ues +['end_date']['minute'])-> + +341 + `’d +(); + +342 + } +} + +344 +´Ùeùed + +funùiÚ + + $þ—rDœeùÜy +( +$dœ +) + +346 +sfToÞk™ +:: + `þ—rDœeùÜy +( +$dœ +); + +347 ià( + `is_dœ +( +$dœ +)) + +349 + `rmdœ +( +$dœ +); + +351 + } +} + +353 +´Ùeùed + +funùiÚ + + $þ—nup +() + +355 +$this +-> + `þ—rDœeùÜy +( + `¥rštf +($this-> +´ojeùDœ +.'/­ps/üud/moduËs/%s', $this-> +u¾P»fix +)); + +356 +$this +-> + `þ—rDœeùÜy +( + `¥rštf +($this-> +´ojeùDœ +.'/ÿche/üud/‹¡/moduËs/auto%s', + `ucfœ¡ +($this-> +u¾P»fix +))); + +357 +$this +-> + `þ—rDœeùÜy +($this-> +´ojeùDœ +.'/test/functional/crud'); + +358 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/rest1Test.php + +1 +brow£ +( +¬¿y +()); + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/rest2Test.php + +1 +brow£ +( +¬¿y +('non-verbose-templates')); + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/restBrowser.class.php + +1 +´ojeùDœ + = + `dœÇme +( +__FILE__ +).'/../fixtures'; + +21 +$this +-> + `þ—nup +(); + +23 + `chdœ +( +$this +-> +´ojeùDœ +); + +24 +$sk + = +Ãw + + `sfPrݖG’”©eModuËFÜRou‹Task +Òew + `sfEv’tDi¥©ch” +(),‚ew + `sfFÜm©‹r +()); + +25 +$ÝtiÚs +[] = 'env=test'; + +26 +$ÝtiÚs +[] = '--non-verbose-templates'; + +27 +$sk +-> + `run +( + `¬¿y +('üud', '¬tiþes'), +$ÝtiÚs +); + +29 + `»quœe_Úû +( +$this +-> +´ojeùDœ +.'/config/ProjectConfiguration.class.php'); + +30 +sfCڋxt +:: + `ü—‹In¡ªû +( +ProjeùCÚfigu¿tiÚ +:: + `g‘AµliÿtiÚCÚfigu¿tiÚ +('üud', '‹¡', +Œue +, +$this +-> +´ojeùDœ +)); + +32 +$ÝtiÚs +['w™h-show'] = +Œue +; + +34  +$ÝtiÚs +; + +36 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/backend_compatConfiguration.class.php + +1 + `»nd”Text +('S–eùed '. + `im¶ode +(', ', $this-> + `g‘Reque¡P¬am‘” +('sf_admš_b©ch_£ËùiÚ', + `¬¿y +()))); + +17 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/templates/_body.php + +1 + +2 +befÜe + +g‘Body +(è?> +aᔠ+ + +3 + +4 < +‹x»a + +Çme +="¬tiþe[body]" +id +="¬tiþe_body"> +befÜe + +g‘Body +(è?> +aᔠ+ + +5 + +6 < +šput + +ty³ +="‹xt" +Çme +="body_fž‹r" +v®ue +="before‡fter" /> + +7 + +8 +SOMETHING + +WRONG + +HAPPENED + + +9 + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/actions/actions.class.php + +1 + `g‘Reque¡P¬am‘” +('filter')) + +17 +$c +-> + `add +( +A¹iþeP“r +:: +ONLINE +, +Œue +); + +21 +´Ùeùed + +funùiÚ + + $addSÜtCr™”Ÿ +( +$c +) + +23 ià( +$this +-> + `g‘Reque¡P¬am‘” +('sort')) + +25 +$c +-> + `addAsûndšgOrd”ByCÞumn +( +A¹iþeP“r +:: +TITLE +); + +27 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/actions/actions.class.php + +1 + +2 < +html + + gxmÊs +="h‰p://www.w3.Üg/1999/xhtml" +xml +: +Ïng +="en"†ang="en"> + +3 < +h—d +> + +5 + +6 + +8 + +10 < +lšk + +»l +="shÜtcuˆicÚ" +h»f +="/favicon.ico" /> + +13 + +14 + +15 + +16 < +body +> + +18 + +20 + +21 + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/crudConfiguration.class.php + +1 + +2 < +html + + gxmÊs +="h‰p://www.w3.Üg/1999/xhtml" +xml +: +Ïng +="en"†ang="en"> + +3 < +h—d +> + +5 + +6 + +8 + +10 < +lšk + +»l +="shÜtcuˆicÚ" +h»f +="/favicon.ico" /> + +13 + +14 + +15 + +16 < +body +> + +18 + +20 + +21 + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/frontendConfiguration.class.php + +1 +fÜm + = +Ãw + + `A‰achm’tFÜm +(); + +16 + `un£t +( +$this +-> +fÜm +['article_id']); + +18 ià( +$»que¡ +-> + `isM‘hod +( +sfReque¡ +:: +POST +)) + +20 +$this +-> +fÜm +-> + `bšd +( +$»que¡ +-> + `g‘P¬am‘” +('©chm’t'), $»que¡-> + `g‘Fžes +('attachment')); + +22 ià( +$this +-> +fÜm +-> + `isV®id +()) + +24 +$this +-> +fÜm +-> + `§ve +(); + +26 +$this +-> + `»dœeù +('attachment/ok'); + +31 +public + +funùiÚ + + $execu‹Embedded +( +$»que¡ +) + +33 +$this +-> +fÜm + = +Ãw + + `A¹iþeFÜm +( +nuÎ +, + `¬¿y +('w™h_©chm’t' => +Œue +)); + +36 +$»que¡ +-> + `isM‘hod +( +sfReque¡ +:: +POST +) + +38 +$this +-> +fÜm +-> + `bšdAndSave +( +$»que¡ +-> + `g‘P¬am‘” +('¬tiþe'), $»que¡-> + `g‘Fžes +('article')) + +41 +$this +-> + `»dœeù +('attachment/ok'); + +44 +$this +-> + `£tTem¶©e +('index'); + +45 + } +} + +47 +public + +funùiÚ + + $execu‹Ok +() + +49  +$this +-> + `»nd”Text +('ok'); + +50 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/attachment/templates/indexSuccess.php + +1 < +fÜm + + gaùiÚ +="g‘AùiÚName()è?>" +m‘hod +="po¡" +’ùy³ +="multipart/form-data"> + +2 < +bË +> + +3 + +4 < +Œ +> + +5 < +td + +cÞ¥ª +="2"> + +6 < +šput + +ty³ +="subm™" +v®ue +="submit" /> + +7 + +8 + +9 + +10 + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/actions/actions.class.php + +1 +fÜm + = +Ãw + + `A¹iþeFÜm +(); + +17 ià( +$»que¡ +-> + `g‘P¬am‘” +('impossible_validator')) + +19 +$ü™”Ÿ + = +Ãw + + `Cr™”Ÿ +(); + +20 +$ü™”Ÿ +-> + `add +( +C©egÜyP“r +:: +ID +, +nuÎ +, +Cr™”Ÿ +:: +ISNULL +); + +22 +$this +-> +fÜm +-> + `g‘V®id©Ü +('ÿ‹gÜy_id')-> + `£tO±iÚ +('ü™”Ÿ', +$ü™”Ÿ +); + +25 ià( +$»que¡ +-> + `g‘P¬am‘” +('impossible_validator_many')) + +27 +$ü™”Ÿ + = +Ãw + + `Cr™”Ÿ +(); + +28 +$ü™”Ÿ +-> + `add +( +AuthÜP“r +:: +ID +, +nuÎ +, +Cr™”Ÿ +:: +ISNULL +); + +30 +$this +-> +fÜm +-> + `g‘V®id©Ü +('authÜ_¬tiþe_li¡')-> + `£tO±iÚ +('ü™”Ÿ', +$ü™”Ÿ +); + +33 ià( +$»que¡ +-> + `isM‘hod +( +sfReque¡ +:: +POST +)) + +35 +$this +-> +fÜm +-> + `bšd +( +$»que¡ +-> + `g‘P¬am‘” +('article')); + +37 ià( +$this +-> +fÜm +-> + `isV®id +()) + +39 +$this +-> +fÜm +-> + `§ve +(); + +41 +$this +-> + `»dœeù +('choice/ok'); + +46 +public + +funùiÚ + + $execu‹Ok +() + +48  +$this +-> + `»nd”Text +('ok'); + +49 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/templates/articleSuccess.php + +1 < +fÜm + + gaùiÚ +="" +m‘hod +="post"> + +2 < +bË +> + +3 + +4 < +Œ +> + +5 < +td + +cÞ¥ª +="2"> + +6 < +šput + +ty³ +="subm™" +v®ue +="submit" /> + +7 + +8 + +9 + +10 + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/actions/actions.class.php + +1 + `g‘U£r +()-> + `£tCuÉu» +('fr'); + +17 +$this +-> +mov›s + = +Mov›P“r +:: + `doS–eù +( +Ãw + + `Cr™”Ÿ +()); + +20 +public + +funùiÚ + + $execu‹DeçuÉ +() + +22 +$this +-> +mov›s + = +Mov›P“r +:: + `doS–eù +( +Ãw + + `Cr™”Ÿ +()); + +24 +$this +-> + `£tTem¶©e +('index'); + +25 + } +} + +27 +public + +funùiÚ + + $execu‹Mov› +( +$»que¡ +) + +29 +$this +-> +fÜm + = +Ãw + + `Mov›FÜm +( +Mov›P“r +:: + `»Œ›veByPk +( +$»que¡ +-> + `g‘P¬am‘” +('id'))); + +31 ià( +$»que¡ +-> + `isM‘hod +( +sfReque¡ +:: +POST +)) + +33 +$this +-> +fÜm +-> + `bšd +( +$»que¡ +-> + `g‘P¬am‘” +('movie')); + +35 ià( +$this +-> +fÜm +-> + `isV®id +()) + +37 +$mov› + = +$this +-> +fÜm +-> + `§ve +(); + +39 +$this +-> + `»dœeù +('i18n/mov›?id='. +$mov› +-> + `g‘Id +()); + +42 + } +} + +44 +public + +funùiÚ + + $execu‹Produùs +() + +46 +$this +-> +´oduùs + = +ProduùP“r +:: + `doS–eù +( +Ãw + + `Cr™”Ÿ +()); + +47 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/indexSuccess.php + +1 < +ul + + gid +="movies"> + +2 + +3 < +li + +þass +="toSŒšg"> + +4 < +li + +þass +="deçuÉ"> + `g‘T™Ë +() ?> + +5 < +li + +þass +="ä"> + `g‘T™Ë +('fr') ?> + +6 < +li + +þass +="™"> + `g‘T™Ë +('it') ?> + +7 + +8 + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/movieSuccess.php + +1 < +fÜm + + gaùiÚ +="" +m‘hod +="post"> + +2 < +bË +> + +3 + +4 < +Œ +> + +5 < +td + +cÞ¥ª +="2"> + +6 < +šput + +ty³ +="subm™" +v®ue +="submit" /> + +7 + +8 + +9 + +10 + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/productsSuccess.php + +1 < +ul + + gid +="products"> + +2 + +3 < +li + +þass +="toSŒšg"> + +4 + +5 + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/actions/actions.class.php + +1 +·g” + = +Ãw + + `sfPrݖPag” +('Article'); + +8 +$this +-> +·g” +-> + `š™ +(); + +10 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/templates/interfacesSuccess.php + +1 < +ul + + gid +="pagerResults"> + +2 +$¬tiþe +): ?> + +3 < +li + +id +="·g”ResuÉ"> +g‘T™Ë +() ?> + +4 + +5 + +7 < +¥ª + + gid +="·g”CouÁ"> + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pooling/actions/actions.class.php + +1 + `£tT™Ë +( +__METHOD__ +.'()'); + +18 +$ÿ‹gÜy + = +C©egÜyP“r +:: + `»Œ›veByPK +( +$»que¡ +-> + `g‘P¬am‘” +('category_id')); + +19 +$ÿ‹gÜy +-> + `addA¹iþe +( +$¬tiþe +); + +21  +sfV›w +:: +NONE +; + +24 +public + +funùiÚ + + $execu‹AddA¹iþeAndSave +( +sfWebReque¡ + +$»que¡ +) + +26 +$¬tiþe + = +Ãw + + `A¹iþe +(); + +27 +$¬tiþe +-> + `£tT™Ë +( +__METHOD__ +.'()'); + +29 +$ÿ‹gÜy + = +C©egÜyP“r +:: + `»Œ›veByPK +( +$»que¡ +-> + `g‘P¬am‘” +('category_id')); + +30 +$ÿ‹gÜy +-> + `addA¹iþe +( +$¬tiþe +); + +31 +$ÿ‹gÜy +-> + `§ve +(); + +33  +sfV›w +:: +NONE +; + +34 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/actions/actions.class.php + +1 +fÜm + = +Ãw + + `A¹iþeFÜm +(); + +17 ià( +$»que¡ +-> + `isM‘hod +( +sfReque¡ +:: +POST +)) + +19 +$this +-> +fÜm +-> + `bšd +( +$»que¡ +-> + `g‘P¬am‘” +('article')); + +21 ià( +$this +-> +fÜm +-> + `isV®id +()) + +23 +$this +-> +fÜm +-> + `§ve +(); + +25 +$this +-> + `»dœeù +('unique/ok'); + +30 +public + +funùiÚ + + $execu‹Ed™ +( +$»que¡ +) + +32 +$this +-> +fÜm + = +Ãw + + `A¹iþeFÜm +( +A¹iþeP“r +:: + `doS–eùOà +Òew + `Cr™”Ÿ +())); + +34 ià( +$»que¡ +-> + `isM‘hod +( +sfReque¡ +:: +POST +)) + +36 +$this +-> +fÜm +-> + `bšd +( +$»que¡ +-> + `g‘P¬am‘” +('article')); + +38 ià( +$this +-> +fÜm +-> + `isV®id +()) + +40 +$this +-> +fÜm +-> + `§ve +(); + +42 +$this +-> + `»dœeù +('unique/edit'); + +45 + } +} + +47 +public + +funùiÚ + + $execu‹C©egÜy +( +$»que¡ +) + +49 +$ÿ‹gÜy + = +C©egÜyP“r +:: + `»Œ›veByPk +( +$»que¡ +-> + `g‘P¬am‘” +('category[id]')); + +50 +$this +-> +fÜm + = +Ãw + + `C©egÜyFÜm +( +$ÿ‹gÜy +); + +52 ià( +$»que¡ +-> + `g‘P¬am‘” +('global')) + +54 +$this +-> +fÜm +-> + `g‘V®id©ÜSchema +()-> + `g‘Po¡V®id©Ü +()-> + `£tO±iÚ +('throw_glob®_”rÜ', +Œue +); + +57 ià( +$»que¡ +-> + `isM‘hod +( +sfReque¡ +:: +POST +)) + +59 +$this +-> +fÜm +-> + `bšd +( +$»que¡ +-> + `g‘P¬am‘” +('category')); + +61 ià( +$this +-> +fÜm +-> + `isV®id +()) + +63 +$this +-> +fÜm +-> + `§ve +(); + +65 +$this +-> + `»dœeù +('unique/ok'); + +68 + } +} + +70 +public + +funùiÚ + + $execu‹Ok +() + +72  +$this +-> + `»nd”Text +('ok'); + +73 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/articleSuccess.php + +1 < +fÜm + + gaùiÚ +="" +m‘hod +="post"> + +2 < +bË +> + +3 + +4 < +Œ +> + +5 < +td + +cÞ¥ª +="2"> + +6 < +šput + +ty³ +="subm™" +v®ue +="submit" /> + +7 + +8 + +9 + +10 + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/categorySuccess.php + +1 < +fÜm + + gaùiÚ +="" +m‘hod +="post"> + +2 < +bË +> + +3 + +4 < +Œ +> + +5 < +td + +cÞ¥ª +="2"> + +6 < +šput + +ty³ +="subm™" +v®ue +="submit" /> + +7 + +8 + +9 + +10 + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/editSuccess.php + +1 < +fÜm + + gaùiÚ +="" +m‘hod +="post"> + +2 < +bË +> + +3 + +4 < +Œ +> + +5 < +td + +cÞ¥ª +="2"> + +6 < +šput + +ty³ +="subm™" +v®ue +="submit" /> + +7 + +8 + +9 + +10 + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/templates/layout.php + +1 + +2 < +html + + gxmÊs +="h‰p://www.w3.Üg/1999/xhtml" +xml +: +Ïng +="en"†ang="en"> + +3 < +h—d +> + +5 + +6 + +8 + +10 < +lšk + +»l +="shÜtcuˆicÚ" +h»f +="/favicon.ico" /> + +13 + +14 + +15 + +16 < +body +> + +18 + +20 + +21 + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/ProjectConfiguration.class.php + +1 + `’abËAÎPlugšsExû± +( + `¬¿y +('sfDoctrinePlugin')); + +13 +public + +funùiÚ + + $š™ŸlizePrݖ +( +$­p +) + +16 +$fžes + = + `glob +( +sfCÚfig +:: + `g‘ +('sf_lib_dir').'/model/om/*.php'); + +17 ià( +çl£ + ==ð +$fžes + || ! + `couÁ +($files)) + +19 + `chdœ +( +sfCÚfig +:: + `g‘ +('sf_root_dir')); + +20 +$sk + = +Ãw + + `sfPrݖBuždMod–Task +( +$this +-> +di¥©ch” +,‚ew + `sfFÜm©‹r +()); + +21 + `ob_¡¬t +(); + +22 +$sk +-> + `run +(); + +23 +$ouut + = + `ob_g‘_þ—n +(); + +26 +$fžes + = + `glob +( +sfCÚfig +:: + `g‘ +('sf_data_dir').'/sql/*.php'); + +27 ià( +çl£ + ==ð +$fžes + || ! + `couÁ +($files)) + +29 + `chdœ +( +sfCÚfig +:: + `g‘ +('sf_root_dir')); + +30 +$sk + = +Ãw + + `sfPrݖBuždSqlTask +( +$this +-> +di¥©ch” +,‚ew + `sfFÜm©‹r +()); + +31 + `ob_¡¬t +(); + +32 +$sk +-> + `run +(); + +33 +$ouut + = + `ob_g‘_þ—n +(); + +36 +$fžes + = + `glob +( +sfCÚfig +:: + `g‘ +('sf_lib_dir').'/form/base/*.php'); + +37 ià( +çl£ + ==ð +$fžes + || ! + `couÁ +($files)) + +39 + `chdœ +( +sfCÚfig +:: + `g‘ +('sf_root_dir')); + +40 +$sk + = +Ãw + + `sfPrݖBuždFÜmsTask +( +$this +-> +di¥©ch” +,‚ew + `sfFÜm©‹r +()); + +41 +$sk +-> + `run +( + `¬¿y +(),‡¼ay('­¶iÿtiÚ='. +$­p +)); + +43 + } +} + +45 +public + +funùiÚ + + $lßdFixtu»s +( +$fixtu»s +) + +48 +$d©aba£Mªag” + = +Ãw + + `sfD©aba£Mªag” +( +$this +); + +51 +$db + = +sfCÚfig +:: + `g‘ +('sf_d©a_dœ'). +DIRECTORY_SEPARATOR +.'/database.sqlite'; + +52 ià( + `fže_exi¡s +( +$db +)) + +54 + `uƚk +( +$db +); + +58 +$sql + = + `fže_g‘_cڋÁs +( +sfCÚfig +:: + `g‘ +('sf_d©a_dœ'). +DIRECTORY_SEPARATOR +.'sql'.DIRECTORY_SEPARATOR.'lib.model.schema.sql'); + +59 +$sql + = + `´eg_»¶aû +('/^\s*\-\-.+$/m', '', $sql); + +60 +$sql + = + `´eg_»¶aû +('/^\s*DROP TABLE .+?$/m', '', $sql); + +61 +$cÚ + = +Prݖ +:: + `g‘CÚÃùiÚ +(); + +62 +$bËs + = + `´eg_¥l™ +('/CREATE TABLE/', +$sql +); + +63 + `fܗch + ( +$bËs + +as + +$bË +) + +65 +$bË + = + `Œim +($table); + +66 ià(! +$bË +) + +71 +$cÚ +-> + `qu”y +('CREATE TABLE '. +$bË +); + +75 +$d©a + = +Ãw + + `sfPrݖD©a +(); + +76 ià( + `is_¬¿y +( +$fixtu»s +)) + +78 +$d©a +-> + `lßdD©aFromA¼ay +( +$fixtu»s +); + +82 +$d©a +-> + `lßdD©a +( +sfCÚfig +:: + `g‘ +('sf_d©a_dœ').'/'. +$fixtu»s +); + +84 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/ArticleFormFilter.class.php + +1 + `g‘Objeù +()-> + `g‘C©egÜy +()) + +16 +$this +-> + `embedFÜm +('ÿ‹gÜy', +Ãw + + `C©egÜyFÜm +($this-> + `g‘Objeù +()-> + `g‘C©egÜy +())); + +19 ià( +$this +-> + `g‘O±iÚ +('with_attachment')) + +21 +$©chm’t + = +Ãw + + `A‰achm’t +(); + +22 +$©chm’t +-> + `£tA¹iþe +( +$this +-> +objeù +); + +24 +$©chm’tFÜm + = +Ãw + + `A‰achm’tFÜm +( +$©chm’t +); + +25 + `un£t +( +$©chm’tFÜm +['article_id']); + +27 +$this +-> + `embedFÜm +('©chm’t', +$©chm’tFÜm +); + +30 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/AttachmentForm.class.php + +1 +widg‘Schema +['fže'] = +Ãw + + `sfWidg‘FÜmIÅutFže +(); + +15 +$this +-> +v®id©ÜSchema +['fže'] = +Ãw + + `sfV®id©ÜFže +( + `¬¿y +( + +16 '·th' => +sfCÚfig +:: + `g‘ +('sf_cache_dir'), + +17 'mime_ty³_gues£rs' => + `¬¿y +(), + +20 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/AuthorForm.class.php + +1 + `embedI18n +( + `¬¿y +('en', 'fr')); + +16 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/MovieI18nForm.class.php + +1 + `g‘Ex‹nsiÚ +($fže-> + `g‘Origš®Ex‹nsiÚ +()); + +16 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/AttachmentPeer.php + +1 + `g‘Name +(); + +26 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/AuthorArticle.php + +1 + `g‘Name +(); + +26 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/BookPeer.php + +1 + `g‘Name +(); + +26 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/CategoryPeer.php + +1 + `add +( +£lf +:: +NAME +, +$Çme +); + +17  +£lf +:: + `doS–eùOà +( +$c +); + +19 + } +} + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/Movie.php + +1 + +25 +g‘ +('/attachment/index')-> + +26 +w™h +('»que¡')-> +begš +()-> + +27 +isP¬am‘” +('module', 'attachment')-> + +28 +isP¬am‘” +('action', 'index')-> + +29 +’d +()-> + +30 +w™h +('»¥Ú£')-> +isStusCode +(200)-> + +31 +þick +('subm™', +¬¿y +('©chm’t' =>‡¼ay('Çme' => +$Çme +, 'fže' => +$fžeToU¶ßd +)))-> + +32 +w™h +('»¥Ú£')-> +begš +()-> + +33 +isRedœeùed +()-> + +34 +fÞlowRedœeù +()-> + +35 +’d +()-> + +36 +w™h +('»¥Ú£')-> +begš +()-> + +37 +m©ches +('/ok/')-> + +38 +’d +() + +41 + g$b +-> +‹¡ +()-> +ok +( +fže_exi¡s +( +$u¶ßdedFže +), 'file is uploaded'); + +42 + g$b +-> +‹¡ +()-> +is +( +fže_g‘_cڋÁs +( +$u¶ßdedFže +), fže_g‘_cڋÁs( +$fžeToU¶ßd +), 'file is correctly uploaded'); + +44 + g$c + = +Ãw + +Cr™”Ÿ +(); + +45 + g$c +-> +add +( +A‰achm’tP“r +:: +NAME +, +$Çme +); + +46 + g$©chm’ts + = +A‰achm’tP“r +:: +doS–eù +( +$c +); + +48 + g$b +-> +‹¡ +()-> +is +( +couÁ +( +$©chm’ts +), 1, 'the‡ttachment has been saved inhe database'); + +49 + g$b +-> +‹¡ +()-> +is +( +$©chm’ts +[0]-> +g‘Fže +(), 'uploaded.yml', 'the‡ttachment filename has been saved inhe database'); + +51 @ +uƚk +( +$u¶ßdedFže +); + +52 + gA‰achm’tP“r +:: +doD–‘eAÎ +(); + +53 + g$b +-> +‹¡ +()-> +ok +(! +fže_exi¡s +( +$u¶ßdedFže +), 'uploaded file is deleted'); + +56 + g$b +-> + +57 +g‘AndCheck +('attachment', 'embedded')-> + +58 +w™h +('»¥Ú£')-> +begš +()-> + +59 +checkEËm’t +('šput[Çme="¬tiþe[©chm’t][¬tiþe_id]"]', +çl£ +)-> + +60 +checkEËm’t +('input[type="file"][name="article[attachment][file]"]')-> + +61 +’d +()-> + +63 +£tF›ld +('article[title]', 'Test Article')-> + +64 +£tF›ld +('¬tiþe[©chm’t][Çme]', +$Çme +)-> + +65 +£tF›ld +('¬tiþe[©chm’t][fže]', +$fžeToU¶ßd +)-> + +66 +þick +('submit')-> + +68 +w™h +('fÜm')-> +hasE¼Üs +( +çl£ +)-> + +70 +w™h +('»¥Ú£')-> +begš +()-> + +71 +isRedœeùed +()-> + +72 +fÞlowRedœeù +()-> + +73 +’d +()-> + +74 +w™h +('»¥Ú£')-> +begš +()-> + +75 +m©ches +('/ok/')-> + +76 +’d +() + +79 + g$b +-> +‹¡ +()-> +ok +( +fže_exi¡s +( +$u¶ßdedFže +), 'file is uploaded'); + +80 + g$b +-> +‹¡ +()-> +is +( +fže_g‘_cڋÁs +( +$u¶ßdedFže +), fže_g‘_cڋÁs( +$fžeToU¶ßd +), 'file is correctly uploaded'); + +82 + g$c + = +Ãw + +Cr™”Ÿ +(); + +83 + g$c +-> +add +( +A‰achm’tP“r +:: +NAME +, +$Çme +); + +84 + g$©chm’ts + = +A‰achm’tP“r +:: +doS–eù +( +$c +); + +86 + g$b +-> +‹¡ +()-> +is +( +couÁ +( +$©chm’ts +), 1, 'the‡ttachment has been saved inhe database'); + +87 + g$b +-> +‹¡ +()-> +ok +( +$©chm’ts +[0]-> +g‘A¹iþeId +(), 'the‡ttachment isiedo‡n‡rticle'); + +88 + g$b +-> +‹¡ +()-> +is +( +$©chm’ts +[0]-> +g‘Fže +(), 'uploaded.yml', 'the‡ttachment filename has been saved inhe database'); + +93 + g$b +-> + +94 +g‘ +('/unique/category')-> + +95 +w™h +('»que¡')-> +begš +()-> + +96 +isP¬am‘” +('module', 'unique')-> + +97 +isP¬am‘” +('action', 'category')-> + +98 +’d +()-> + +99 +w™h +('»¥Ú£')-> +isStusCode +(200)-> + +100 +þick +('subm™', +¬¿y +('category' =>‡rray('name' => 'foo')))-> + +101 +w™h +('»¥Ú£')-> +begš +()-> + +102 +isRedœeùed +()-> + +103 +fÞlowRedœeù +()-> + +104 +’d +()-> + +105 +w™h +('»¥Ú£')-> +begš +()-> + +106 +m©ches +('/ok/')-> + +107 +’d +() + +112 + g$b +-> + +113 +g‘ +('/unique/category')-> + +114 +w™h +('»que¡')-> +begš +()-> + +115 +isP¬am‘” +('module', 'unique')-> + +116 +isP¬am‘” +('action', 'category')-> + +117 +’d +()-> + +118 +w™h +('»¥Ú£')-> +isStusCode +(200)-> + +119 +þick +('subm™', +¬¿y +('category' =>‡rray('name' => 'foo')))-> + +120 +w™h +('fÜm')-> +begš +()-> + +121 +hasE¼Üs +(1)-> + +122 +hasGlob®E¼Ü +( +çl£ +)-> + +123 +isE¼Ü +('name', 'invalid')-> + +124 +’d +()-> + +125 +w™h +('»¥Ú£')-> +begš +()-> + +126 +checkEËm’t +('td[colspan="2"] .error_list†i', 0)-> + +127 +checkEËm’t +('.error_list†i', 'An object withhe same "name"‡lreadyƒxist.')-> + +128 +checkEËm’t +('.error_list†i', 1)-> + +129 +’d +() + +133 + g$b +-> + +134 +g‘ +('/unique/category')-> + +135 +w™h +('»que¡')-> +begš +()-> + +136 +isP¬am‘” +('module', 'unique')-> + +137 +isP¬am‘” +('action', 'category')-> + +138 +’d +()-> + +139 +w™h +('»¥Ú£')-> +isStusCode +(200)-> + +140 +þick +('subm™', +¬¿y +('category' =>‡rray('name' => 'foo'), 'global' => 1))-> + +141 +w™h +('fÜm')-> +begš +()-> + +142 +hasE¼Üs +(1)-> + +143 +hasGlob®E¼Ü +('invalid')-> + +144 +isE¼Ü +('Çme', +çl£ +)-> + +145 +’d +()-> + +146 +w™h +('»¥Ú£')-> +begš +()-> + +147 +checkEËm’t +('td[colspan="2"] .error_list†i', 'An object withhe same "name"‡lreadyƒxist.')-> + +148 +checkEËm’t +('td[colspan="2"] .error_list†i', 1)-> + +149 +’d +() + +153 + g$b +-> + +154 +g‘ +('/unique/ÿ‹gÜy?ÿ‹gÜy[id]='. +C©egÜyP“r +:: +g‘ByName +('foo')-> +g‘Id +())-> + +155 +w™h +('»que¡')-> +begš +()-> + +156 +isP¬am‘” +('module', 'unique')-> + +157 +isP¬am‘” +('action', 'category')-> + +158 +’d +()-> + +159 +w™h +('»¥Ú£')-> +isStusCode +(200)-> + +160 +þick +('submit')-> + +161 +w™h +('»¥Ú£')-> +begš +()-> + +162 +isRedœeùed +()-> + +163 +fÞlowRedœeù +()-> + +164 +’d +()-> + +165 +w™h +('»¥Ú£')-> +begš +()-> + +166 +m©ches +('/ok/')-> + +167 +’d +() + +171 + g$b +-> + +172 +g‘ +('/unique/article')-> + +173 +w™h +('»que¡')-> +begš +()-> + +174 +isP¬am‘” +('module', 'unique')-> + +175 +isP¬am‘” +('action', 'article')-> + +176 +’d +()-> + +177 +w™h +('»¥Ú£')-> +isStusCode +(200)-> + +178 +þick +('subm™', +¬¿y +('article' =>‡rray('title' => 'foo', 'category_id' => 1)))-> + +179 +w™h +('»¥Ú£')-> +begš +()-> + +180 +isRedœeùed +()-> + +181 +fÞlowRedœeù +()-> + +182 +’d +()-> + +183 +w™h +('»¥Ú£')-> +begš +()-> + +184 +m©ches +('/ok/')-> + +185 +’d +() + +189 + g$b +-> + +190 +g‘ +('/unique/article')-> + +191 +w™h +('»que¡')-> +begš +()-> + +192 +isP¬am‘” +('module', 'unique')-> + +193 +isP¬am‘” +('action', 'article')-> + +194 +’d +()-> + +195 +w™h +('»¥Ú£')-> +isStusCode +(200)-> + +196 +þick +('subm™', +¬¿y +('article' =>‡rray('title' => 'foo', 'category_id' => 2)))-> + +197 +w™h +('»¥Ú£')-> +begš +()-> + +198 +isRedœeùed +()-> + +199 +fÞlowRedœeù +()-> + +200 +’d +()-> + +201 +w™h +('»¥Ú£')-> +begš +()-> + +202 +m©ches +('/ok/')-> + +203 +’d +() + +208 + g$b +-> + +209 +g‘ +('/unique/article')-> + +210 +w™h +('»que¡')-> +begš +()-> + +211 +isP¬am‘” +('module', 'unique')-> + +212 +isP¬am‘” +('action', 'article')-> + +213 +’d +()-> + +214 +w™h +('»¥Ú£')-> +isStusCode +(200)-> + +215 +þick +('subm™', +¬¿y +('article' =>‡rray('title' => 'foo', 'category_id' => 1)))-> + +216 +w™h +('»¥Ú£')-> +checkEËm’t +('.error_list†i', 'An object withhe same "title, category_id"‡lreadyƒxist.') + +220 + g$b +-> + +221 +g‘ +('/unique/edit')-> + +222 +w™h +('»que¡')-> +begš +()-> + +223 +isP¬am‘” +('module', 'unique')-> + +224 +isP¬am‘” +('action', 'edit')-> + +225 +’d +()-> + +226 +w™h +('»¥Ú£')-> +begš +()-> + +227 +isStusCode +(200)-> + +228 +checkEËm’t +('input[value="fooitle"]')-> + +229 +checkEËm’t +('#article_category_id option[selected="selected"]', 1)-> + +230 +checkEËm’t +('input[value="Category 1"]')-> + +231 +’d +()-> + +232 +þick +('subm™', +¬¿y +('article' =>‡rray('title' => 'foo bar', 'category' =>‡rray('name' => 'Category foo'))))-> + +233 +w™h +('»¥Ú£')-> +begš +()-> + +234 +isRedœeùed +()-> + +235 +fÞlowRedœeù +()-> + +236 +’d +()-> + +237 +w™h +('»¥Ú£')-> +begš +()-> + +238 +checkEËm’t +('input[value="foo bar"]')-> + +239 +checkEËm’t +('#article_category_id option[selected="selected"]', 1)-> + +240 +checkEËm’t +('input[value="Category foo"]')-> + +241 +’d +() + +247 + g$b +-> + +248 +g‘ +('/choice/article')-> + +249 +w™h +('»que¡')-> +begš +()-> + +250 +isP¬am‘” +('module', 'choice')-> + +251 +isP¬am‘” +('action', 'article')-> + +252 +’d +()-> + +253 +w™h +('»¥Ú£')-> +begš +()-> + +254 +isStusCode +(200)-> + +255 +’d +()-> + +256 +þick +('subm™', +¬¿y +('article' =>‡rray('title' => 'foobar', 'category_id' => 1, 'author_article_list' =>‡rray(1)), 'impossible_validator' => 1))-> + +257 +w™h +('fÜm')-> +begš +()-> + +258 +hasE¼Üs +(1)-> + +259 +isE¼Ü +('category_id', 'invalid')-> + +260 +’d +() + +266 + g$b +-> + +267 +g‘ +('/choice/article')-> + +268 +w™h +('»que¡')-> +begš +()-> + +269 +isP¬am‘” +('module', 'choice')-> + +270 +isP¬am‘” +('action', 'article')-> + +271 +’d +()-> + +272 +w™h +('»¥Ú£')-> +begš +()-> + +273 +isStusCode +(200)-> + +274 +’d +()-> + +275 +þick +('subm™', +¬¿y +('article' =>‡rray('title' => 'foobar', 'category_id' => 1, 'author_article_list' =>‡rray(1)), 'impossible_validator_many' => 1))-> + +276 +w™h +('fÜm')-> +begš +()-> + +277 +hasE¼Üs +(1)-> + +278 +isE¼Ü +('author_article_list', 'invalid')-> + +279 +’d +() + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/i18nTest.php + +1 +£tTe¡” +('propel', 'sfTesterPropel'); + +22 + g$b +-> + +23 +g‘ +('/i18n/default')-> + +24 +w™h +('»que¡')-> +begš +()-> + +25 +isP¬am‘” +('module', 'i18n')-> + +26 +isP¬am‘” +('action', 'default')-> + +27 +’d +()-> + +28 +w™h +('»¥Ú£')-> +begš +()-> + +29 +isStusCode +(200)-> + +30 +checkEËm’t +('#movies .toString:first', '')-> + +31 +checkEËm’t +('#movies .default:first', '')-> + +32 +checkEËm’t +('#movies .it:first', 'La Vita è bella')-> + +33 +checkEËm’t +('#movies .fr:first', 'La Vieƒst belle')-> + +34 +’d +() + +38 + g$b +-> + +39 +g‘ +('/i18n/index')-> + +40 +w™h +('»que¡')-> +begš +()-> + +41 +isP¬am‘” +('module', 'i18n')-> + +42 +isP¬am‘” +('action', 'index')-> + +43 +’d +()-> + +44 +w™h +('»¥Ú£')-> +begš +()-> + +45 +isStusCode +(200)-> + +46 +checkEËm’t +('#movies .toString:first', 'La Vieƒst belle')-> + +47 +checkEËm’t +('#movies .default:first', 'La Vieƒst belle')-> + +48 +checkEËm’t +('#movies .it:first', 'La Vita è bella')-> + +49 +checkEËm’t +('#movies .fr:first', 'La Vieƒst belle')-> + +50 +’d +() + +54 + g$b +-> + +55 +g‘ +('/i18n/default')-> + +56 +w™h +('»que¡')-> +begš +()-> + +57 +isP¬am‘” +('module', 'i18n')-> + +58 +isP¬am‘” +('action', 'default')-> + +59 +’d +()-> + +60 +w™h +('»¥Ú£')-> +begš +()-> + +61 +isStusCode +(200)-> + +62 +checkEËm’t +('#movies .toString:first', 'La Vieƒst belle')-> + +63 +checkEËm’t +('#movies .default:first', 'La Vieƒst belle')-> + +64 +checkEËm’t +('#movies .it:first', 'La Vita è bella')-> + +65 +checkEËm’t +('#movies .fr:first', 'La Vieƒst belle')-> + +66 +’d +() + +70 + g$b +-> + +71 +g‘ +('/i18n/movie')-> + +72 +w™h +('»que¡')-> +begš +()-> + +73 +isP¬am‘” +('module', 'i18n')-> + +74 +isP¬am‘” +('action', 'movie')-> + +75 +’d +()-> + +76 +w™h +('»¥Ú£')-> +begš +()-> + +77 +isStusCode +(200)-> + +78 +checkEËm’t +('#mov›_ä_id', +çl£ +)-> + +79 +checkEËm’t +('#mov›_ä_cuÉu»', +çl£ +)-> + +80 +’d +()-> + +82 +þick +('subm™', +¬¿y +('movie' =>‡rray('director' => 'Robert Aldrich', 'en' =>‡rray('title' => 'The Dirty Dozen'), 'fr' =>‡rray('title' => 'Les Douze Salopards'))))-> + +83 +w™h +('»¥Ú£')-> +begš +()-> + +84 +isRedœeùed +()-> + +85 +fÞlowRedœeù +()-> + +86 +’d +()-> + +87 +w™h +('»¥Ú£')-> +begš +()-> + +88 +checkEËm’t +('input[value="Robert Aldrich"]')-> + +89 +checkEËm’t +('input[value="The Dirty Dozen"]')-> + +90 +checkEËm’t +('input[value="Les Douze Salopards"]')-> + +91 +checkEËm’t +('#mov›_ä_id', +Œue +)-> + +92 +checkEËm’t +('#mov›_ä_cuÉu»', +Œue +)-> + +93 +’d +()-> + +95 +w™h +('´Ý–')-> +begš +()-> + +96 +check +('Mov›', +¬¿y +(), 2)-> + +97 +check +('Mov›', +¬¿y +('director' => 'Robert Aldrich', 'id' => 2))-> + +98 +check +('Mov›I18N', +¬¿y +(), 4)-> + +99 +check +('Mov›I18N', +¬¿y +('id' => 2), 2)-> + +100 +check +('Mov›I18N', +¬¿y +('culture' => 'fr', 'id' => 2, 'title' => 'Les Douze Salopards'))-> + +101 +check +('Mov›I18N', +¬¿y +('culture' => 'en', 'id' => 2, 'title' => 'The Dirty Dozen'))-> + +102 +’d +()-> + +104 +þick +('subm™', +¬¿y +('movie' =>‡rray('director' => 'Robert Aldrich (1)', 'en' =>‡rray('title' => 'The Dirty Dozen (1)'), 'fr' =>‡rray('title' => 'Les Douze Salopards (1)'))))-> + +105 +w™h +('»¥Ú£')-> +begš +()-> + +106 +isRedœeùed +()-> + +107 +fÞlowRedœeù +()-> + +108 +’d +()-> + +109 +w™h +('»¥Ú£')-> +begš +()-> + +110 +checkEËm’t +('input[value="Robert Aldrich (1)"]')-> + +111 +checkEËm’t +('input[value="The Dirty Dozen (1)"]')-> + +112 +checkEËm’t +('input[value="Les Douze Salopards (1)"]')-> + +113 +’d +()-> + +115 +w™h +('´Ý–')-> +begš +()-> + +116 +check +('Mov›', +¬¿y +(), 2)-> + +117 +check +('Mov›', +¬¿y +('director' => 'Robert Aldrich (1)', 'id' => 2))-> + +118 +check +('Mov›I18N', +¬¿y +(), 4)-> + +119 +check +('Mov›I18N', +¬¿y +('id' => 2), 2)-> + +120 +check +('Mov›I18N', +¬¿y +('culture' => 'fr', 'id' => 2, 'title' => 'Les Douze Salopards (1)'))-> + +121 +check +('Mov›I18N', +¬¿y +('culture' => 'en', 'id' => 2, 'title' => 'The Dirty Dozen (1)'))-> + +122 +’d +()-> + +125 +þick +('submit')-> + +127 +w™h +('fÜm')-> +begš +()-> + +128 +hasE¼Üs +( +çl£ +)-> + +129 +’d +()-> + +131 +g‘ +('/i18n/movie')-> + +132 +þick +('subm™', +¬¿y +('movie' =>‡rray('director' => 'Robert Aldrich', 'en' =>‡rray('title' => 'The Dirty Dozen (1)'), 'fr' =>‡rray('title' => 'Les Douze Salopards (1)'))))-> + +134 +w™h +('fÜm')-> +begš +()-> + +135 +hasE¼Üs +(2)-> + +136 +’d +()-> + +138 +þick +('subm™', +¬¿y +('movie' =>‡rray('director' => 'Robert Aldrich', 'en' =>‡rray('title' => 'The Dirty Dozen'), 'fr' =>‡rray('title' => 'Les Douze Salopards'))))-> + +140 +w™h +('fÜm')-> +begš +()-> + +141 +hasE¼Üs +( +çl£ +)-> + +142 +’d +()-> + +143 +w™h +('»¥Ú£')-> +begš +()-> + +144 +isRedœeùed +()-> + +145 +fÞlowRedœeù +()-> + +146 +’d +()-> + +147 +w™h +('»¥Ú£')-> +begš +()-> + +148 +checkEËm’t +('input[value="Robert Aldrich"]')-> + +149 +checkEËm’t +('input[value="The Dirty Dozen"]')-> + +150 +checkEËm’t +('input[value="Les Douze Salopards"]')-> + +151 +’d +() + +155 + g$b +-> +g‘AndCheck +('i18n', 'products') + +156 -> +w™h +('»¥Ú£')-> +begš +() + +157 -> +checkEËm’t +('ul#products†i.toString', 'PRIMARY STRING') + +158 -> +’d +() + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/pagerTest.php + +1 + `£tT™Ë +( + `¥rštf +('A¹iþ#%s', +$n +)); + +27 +$¬tiþe +-> + `£tC©egÜy +( +$ÿ‹gÜy +); + +28 +$¬tiþe +-> + `§ve +(); + +29 + } +} + +31 + g$brow£r + + +32 -> +g‘AndCheck +('pager', 'interfaces') + +34 -> +w™h +('»¥Ú£')-> +begš +() + +35 -> +checkEËm’t +('#pagerResults†i', 10) + +37 -> +checkEËm’t +('#pagerCount:contains(20)') + +38 -> +’d +() + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/poolingTest.php + +1 'sfTesterPropel')); + +20 + gA¹iþeP“r +:: +doD–‘eAÎ +(); + +21 + g$c + = +C©egÜyP“r +:: +doS–eùOà +( +Ãw + +Cr™”Ÿ +()); + +22 + g$hash + = +¥l_objeù_hash +( +$c +); + +24 + g$b +-> + +25 +g‘ +('/poޚg/addA¹iþeButDÚtSave/ÿ‹gÜy_id/'. +$c +-> +g‘Id +())-> + +26 +w™h +('´Ý–')-> +check +('A¹iþe', +nuÎ +, 0)-> + +28 +g‘ +('/poޚg/addA¹iþeAndSave/ÿ‹gÜy_id/'. +$c +-> +g‘Id +())-> + +29 +w™h +('´Ý–')-> +check +('A¹iþe', +nuÎ +, 1) + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/database/sfPropelDatabaseTest.php + +1 +dŸg +('->__construct()'); + +24 + g$cÚfigu¿tiÚ + = +¬¿y +( + +25 '´Ý–' => +¬¿y +( + +26 'd©asourûs' => +¬¿y +( + +27 '´Ý–' => +¬¿y +( + +29 'cÚÃùiÚ' => +¬¿y +( + +34 'ÝtiÚs' => +¬¿y +( + +35 'ATTR_PERSISTENT' => +Œue +, + +36 'ATTR_AUTOCOMMIT' => +çl£ +, + +38 '£‰šgs' => +¬¿y +( + +39 'ch¬£t' => +¬¿y +('value' => 'utf8'), + +40 'qu”›s' => +¬¿y +(), + +49 + g$·¿m‘”sTe¡s + = +¬¿y +( + +54 '³rsi¡’t' => +Œue +, + +55 'ÝtiÚs' => +¬¿y +('ATTR_AUTOCOMMIT' => +çl£ +) + +58 + g$p + = +Ãw + +sfPrݖD©aba£ +( +$·¿m‘”sTe¡s +); + +59 + g$t +-> +is_d“¶y +( +$p +-> +g‘CÚfigu¿tiÚ +(), +$cÚfigu¿tiÚ +, '->__construct() creates‡ valid…ropel configuration from…arameters'); + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/debug/sfWebDebugPanelPropelTest.php + +1 + `£tP¬am‘” +('debugpdo.loggšg.d‘ažs.¦ow.’abËd', +Œue +); + +21 +$cÚfig +-> + `£tP¬am‘” +('debugpdo.logging.details.slow.threshold', 1); + +22  +$cÚfig +; + +24 + } +} + +26 þas  + csfWebDebugPª–PrݖTe¡Difã»ÁGlue + +ex‹nds + + msfWebDebugPª–Prݖ + + +28 +´Ùeùed + +funùiÚ + + $g‘PrݖCÚfigu¿tiÚ +() + +30 +$cÚfig + = +Ãw + + `PrݖCÚfigu¿tiÚ +( + `¬¿y +()); + +31 +$cÚfig +-> + `£tP¬am‘” +('debugpdo.logging.outerglue', 'xx'); + +32 +$cÚfig +-> + `£tP¬am‘” +('debugpdo.logging.innerglue', '/ '); + +33 +$cÚfig +-> + `£tP¬am‘” +('debugpdo.loggšg.d‘ažs.¦ow.’abËd', +Œue +); + +34 +$cÚfig +-> + `£tP¬am‘” +('debugpdo.logging.details.slow.threshold', 5); + +35  +$cÚfig +; + +37 + } +} + +40 + g$t +-> +dŸg +('->getPanelContent()'); + +42 + g$di¥©ch” + = +Ãw + +sfEv’tDi¥©ch” +(); + +43 + g$logg” + = +Ãw + +sfV¬Logg” +( +$di¥©ch” +); + +44 + g$logg” +-> +log +('{sfPropelLogger} SELECT * FROM foo WHERE bar<1'); + +45 + g$logg” +-> +log +('{sfPropelLogger}ime: 3.42 sec | mem: 2.8 MB | SELECT * FROM foo WHERE‡Text†ike \' | foo\''); + +46 + g$·Ãl + = +Ãw + +sfWebDebugPª–PrݖTe¡ +Òew +sfWebDebug +( +$di¥©ch” +, +$logg” +)); + +47 + g$cڋÁ + = +$·Ãl +-> +g‘Pª–CڋÁ +(); + +48 + g$t +-> +like +( +$cڋÁ +, '/bar<1/', '->getPanelContent()„eturnsƒscaped queries'); + +49 + g$t +-> +like +( +$cڋÁ +, '/aText†ike ' | foo'/', '->getPanelContent() works with glue string in SQL'); + +50 + g$t +-> +like +( +$cڋÁ +, '/sfWebDebugWarning/', '->getPanelContent() contains‡ slow query warning'); + +52 + g$logg” + = +Ãw + +sfV¬Logg” +( +$di¥©ch” +); + +53 + g$logg” +-> +log +('{sfPropelLogger}ime/ 3.42 secxxmem/ 2.8 MBxxSELECT * FROM foo WHERE bar == 42'); + +54 + g$·Ãl + = +Ãw + +sfWebDebugPª–PrݖTe¡Difã»ÁGlue +Òew +sfWebDebug +( +$di¥©ch” +, +$logg” +)); + +55 + g$cڋÁ + = +$·Ãl +-> +g‘Pª–CڋÁ +(); + +56 + g$t +-> +like +( +$cڋÁ +, '/time\/ 3.42 sec, mem\/ 2.8 MB/', '->getPanelContent() works with strange glue strings'); + +57 + g$t +-> +uÆike +( +$cڋÁ +, '/sfWebDebugWarning/', '->getPanelContent() should‚ot contain‡ slow warning'); + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/form/sfFormPropelTest.php + +1 +g‘SymfÚyLibDœ +().'/vendor/lime/lime.php'; + +15 + g$t + = +Ãw + +lime_‹¡ +(2); + +18 + g$t +-> +dŸg +('->__construct()'); + +20 þas  + cDeçuÉV®uesFÜm + +ex‹nds + + mAuthÜFÜm + + +22 +public + +funùiÚ + + $cÚfigu» +() + +24 +$this +-> + `£tDeçuÉ +('name', 'John Doe'); + +26 + } +} + +28 + g$authÜ + = +Ãw + +AuthÜ +(); + +29 + g$fÜm + = +Ãw + +DeçuÉV®uesFÜm +( +$authÜ +); + +30 + g$t +-> +is +( +$fÜm +-> +g‘DeçuÉ +('name'), 'John Doe', '->__construct() uses form defaults for‚ew objects'); + +32 + g$authÜ + = +Ãw + +AuthÜ +(); + +33 + g$authÜ +-> +£tName +('Jacques Doe'); + +34 + g$authÜ +-> +§ve +(); + +35 + g$fÜm + = +Ãw + +DeçuÉV®uesFÜm +( +$authÜ +); + +36 + g$t +-> +is +( +$fÜm +-> +g‘DeçuÉ +('name'), 'Jacques Doe', '->__construct() uses object value‡s‡ default forƒxisting objects'); + +37 + g$authÜ +-> +d–‘e +(); + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/sfMixerTest.php + +1 +»t + = "before myMethod\n"; + +23 +sfMix” +:: + `ÿÎMixšs +(); + +24 +$this +-> +»t + .= "after myMethod\n"; + +26  +$this +-> +»t +; + +29 +public + +funùiÚ + + $myM‘hodW™hSev”®Hooks +() + +31 +$this +-> +»t + = "before myMethodWithSeveralHooks\n"; + +32 +sfMix” +:: + `ÿÎMixšs +('before'); + +34 +$this +-> +»t + .= "myMethodWithSeveralHooks\n"; + +35 +sfMix” +:: + `ÿÎMixšs +(); + +37 +$this +-> +»t + .= "after myMethodWithSeveralHooks\n"; + +38 +sfMix” +:: + `ÿÎMixšs +('after'); + +40  +$this +-> +»t +; + +41 + } +} + +43 +public + +funùiÚ + +myM‘hodW™hArgs +( +$¬g1 +, +$¬g2 + = 'default') + +45 +$this +-> +»t + = "before myMethodWithArgs\n"; + +46 + gsfMix” +:: +ÿÎMixšs +(); + +47 + g$this +-> + g»t + .= "after myMethodWithArgs\n"; + +49  + g$this +-> + g»t +; + +52  +public + +funùiÚ + + $mySticM‘hod +() + +54 +£lf +:: +$»tStic + = "before myStaticMethod\n"; + +55 +sfMix” +:: + `ÿÎMixšs +(); + +56 +£lf +:: +$»tStic + .= "after myStaticMethod\n"; + +58  +£lf +:: +$»tStic +; + +59 + } +} + +61  +public + +funùiÚ + +mySticM‘hodW™hArgs +( +$¬g1 +, +$¬g2 + = 'default') + +63 +£lf +:: +$»tStic + = "before myStaticMethodWithArgs\n"; + +64 + gsfMix” +:: +ÿÎMixšs +(); + +65 + g£lf +:: +$»tStic + .= "after myStaticMethodWithArgs\n"; + +67  + g£lf +:: +$»tStic +; + +70 +funùiÚ + + $__ÿÎ +( +$m‘hod +, +$¬gum’ts +) + +72 +$r + = "before __call\n"; + +73 +$r + .ð +sfMix” +:: + `ÿÎMixšs +(); + +74 +$r + .= "after __call\n"; + +76  +$r +; + +77 + } +} + +80 + g$m + = +Ãw + +myCÏss +(); + +82 + g$t +-> +is +( +$m +-> +myM‘hod +(), "before myMethod\nafter myMethod\n", 'method call without mixins'); + +83 + g$t +-> +is +( +myCÏss +:: +mySticM‘hod +(), "before myStaticMethod\nafter myStaticMethod\n", 'static method call without mixins'); + +85 + gŒy + + +87 + g$m +-> +ÃwM‘hod +(); + +88 + g$t +-> +çž +('method callhat does‚otƒxist'); + +90 + $ÿtch + ( +Exû±iÚ + +$e +) + +92 +$t +-> + `·ss +('method callhat does‚otƒxist'); + +93 + } +} + +95 þas  + cmyCÏssMixšs + + +97 +public + +funùiÚ + + $myMixšM‘hod +( +$objeù +) + +99 +$objeù +-> +»t + .= "in myMethod mixin method\n"; + +102 +public + +funùiÚ + + $myM‘hodW™hSev”®Hooks +( +$objeù +) + +104 +$objeù +-> +»t + .= "in myMethodWithSeveralHooks mixin method for default hook\n"; + +105 + } +} + +107 +public + +funùiÚ + + $myM‘hodW™hSev”®HooksBefÜe +( +$objeù +) + +109 +$objeù +-> +»t + .= "in myMethodWithSeveralHooks mixin method for before hook\n"; + +110 + } +} + +112 +public + +funùiÚ + + $myM‘hodW™hSev”®HooksAᔠ+( +$objeù +) + +114 +$objeù +-> +»t + .= "in myMethodWithSeveralHooks mixin method for‡fter hook\n"; + +115 + } +} + +118 +public + +funùiÚ + + $mySticMixšM‘hod +( +$objeù +) + +120 +$objeù +-> +»t + .= "in myStaticMethod mixin method\n"; + +121 + } +} + +123 +public + +funùiÚ + +myMixšM‘hodW™hArgs +( +$objeù +, +$¬g1 +, +$¬g2 + = 'default') + +125 +$objeù +-> +»t + .= "in myMethodWithArgs mixin method ($arg1, $arg2)\n"; + +128 +public + +funùiÚ + + $myMixšSticM‘hod +() + +130 +myCÏss +:: +$»tStic + .= "in myStaticMethod mixin method\n"; + +131 + } +} + +133 +public + +funùiÚ + +myMixšSticM‘hodW™hArgs +( +$þass +, +$¬g1 +, +$¬g2 + = 'default') + +135 +myCÏss +:: +$»tStic + .= "in myStaticMethodWithArgs mixin method ($arg1, $arg2)\n"; + +138 +public + +funùiÚ + + $ÃwM‘hod +( +$objeù +) + +141 + } +} + +143 +public + +funùiÚ + +ÃwM‘hodW™hArgs +( +$objeù +, +$¬g1 +, +$¬g2 + = 'default') + +149 + gsfMix” +::('myCÏss:myM‘hod', +¬¿y +('myClassMixins', 'myMixinMethod')); + +150 + gsfMix” +::('myCÏss:mySticM‘hod', +¬¿y +('myClassMixins', 'myMixinStaticMethod')); + +152 + g$t +-> +is +( +$m +-> +myM‘hod +(), "before myMethod\nin myMethod mixin method\nafter myMethod\n", 'method call with‡ mixin'); + +153 + g$t +-> +is +( +myCÏss +:: +mySticM‘hod +(), "before myStaticMethod\nin myStaticMethod mixin method\nafter myStaticMethod\n", 'static method call with‡ mixin'); + +155 + gsfMix” +::('myCÏss:myM‘hodW™hArgs', +¬¿y +('myClassMixins', 'myMixinMethodWithArgs')); + +156 + g$t +-> +is +( +$m +-> +myM‘hodW™hArgs +('value'), "before myMethodWithArgs\nin myMethodWithArgs mixin method (value, default)\nafter myMethodWithArgs\n", 'method call with‡rguments with‡ mixin'); + +158 + gsfMix” +::('myCÏss:mySticM‘hodW™hArgs', +¬¿y +('myClassMixins', 'myMixinStaticMethodWithArgs')); + +159 + g$t +-> +is +( +myCÏss +:: +mySticM‘hodW™hArgs +('value'), "before myStaticMethodWithArgs\nin myStaticMethodWithArgs mixin method (value, default)\nafter myStaticMethodWithArgs\n", 'static method call with‡rguments with‡ mixin'); + +161 + gsfMix” +::('myCÏss', +¬¿y +('myClassMixins', 'newMethod')); + +162 + g$t +-> +is +( +$m +-> +ÃwM‘hod +(), "before __call\nin‚ewMethod mixin method\nafter __call\n", 'method call from‡ mixin'); + +164 + gsfMix” +::('myCÏss', +¬¿y +('myClassMixins', 'newMethodWithArgs')); + +165 + g$t +-> +is +( +$m +-> +ÃwM‘hodW™hArgs +('value'), "before __call\nin‚ewMethodWithArgs mixin method (value, default)\nafter __call\n", 'method call from‡ mixin with‡rguments'); + +167 + gsfMix” +::('myCÏss:myM‘hodW™hSev”®Hooks:befÜe', +¬¿y +('myClassMixins', 'myMethodWithSeveralHooksBefore')); + +168 + gsfMix” +::('myCÏss:myM‘hodW™hSev”®Hooks', +¬¿y +('myClassMixins', 'myMethodWithSeveralHooks')); + +169 + gsfMix” +::('myCÏss:myM‘hodW™hSev”®Hooks:aá”', +¬¿y +('myClassMixins', 'myMethodWithSeveralHooksAfter')); + +170 + g$t +-> +is +( +$m +-> +myM‘hodW™hSev”®Hooks +(), "before myMethodWithSeveralHooks\nin myMethodWithSeveralHooks mixin method for before hook\nmyMethodWithSeveralHooks\nin myMethodWithSeveralHooks mixin method for default hook\nafter myMethodWithSeveralHooks\nin myMethodWithSeveralHooks mixin method for‡fter hook\n", 'method call with several„egistered hooks'); + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/sfPropelDatabaseSchemaTest.php + +1 +$v®ue +) + +20 ià( +is_¬¿y +( +$v®ue +)) + +22 +$this +-> +is_¬¿y_ex¶ic™ +( +$v®ue +, +$rg‘ +[ +$key +], +$´efix +.' '.$key); + +26 + m$this +-> +is +( +$v®ue +, +$rg‘ +[ +$key +], +¥rštf +('% % i %s', +$´efix +, $key, $value)); + +31 +public + +funùiÚ + + $is_lše_by_lše +( +$exp1 +, +$exp2 +) + +33 +$¬¿y_exp1 + = + `ex¶ode +("\n", +$exp1 +); + +34 +$¬¿y_exp2 + = + `ex¶ode +("\n", +$exp2 +); + +35 +$nb_lšes + = + `couÁ +( +$¬¿y_exp1 +); + +36  +$i +=0; $˜< +$nb_lšes +; $i++) + +38 if(! +$¬¿y_exp1 +[ +$i +]) ; + +39 +$this +-> + `is +( + `Œim +( +$¬¿y_exp1 +[ +$i +]),rim( +$¬¿y_exp2 +[$i]), + `¥rštf +('Line %d matches %s', $i, $array_exp1[$i])); + +41 + } +} + +44 +»quœe_Úû +( +dœÇme +( +__FILE__ +).'/../../../../../test/bootstrap/unit.php'); + +45 +»quœe_Úû +( +dœÇme +( +__FILE__ +).'/../../lib/addon/sfPropelDatabaseSchema.class.php'); + +46 +»quœe_Úû +( +dœÇme +( +__FILE__ +).'/../../../../util/sfInflector.class.php'); + +47 +»quœe_Úû +( +dœÇme +( +__FILE__ +).'/../../../../util/sfToolkit.class.php'); + +48 +»quœe_Úû +( +dœÇme +( +__FILE__ +).'/../../../../yaml/sfYaml.php'); + +50 + g$t + = +Ãw + +my_lime_‹¡ +(401); + +52 + g$t +-> +dŸg +('Classical YAMLo XML conversion'); + +53 + g$p + = +Ãw + +sfPrݖD©aba£Schema +(); + +54 + g$p +-> +lßdYAML +( +dœÇme +( +__FILE__ +).'/fixtures/schema.yml'); + +55 + g$rg‘ + = +fže_g‘_cڋÁs +( +dœÇme +( +__FILE__ +).'/fixtures/schema.xml'); + +56 + g$t +-> +is_lše_by_lše +( +$p +-> +asXML +(), +$rg‘ +); + +58 + g$t +-> +dŸg +('New YAMLo XML conversion'); + +59 + g$p + = +Ãw + +sfPrݖD©aba£Schema +(); + +60 + g$p +-> +lßdYAML +( +dœÇme +( +__FILE__ +).'/fixtures/new_schema.yml'); + +61 + g$rg‘ + = +fže_g‘_cڋÁs +( +dœÇme +( +__FILE__ +).'/fixtures/schema.xml'); + +62 + g$t +-> +is_lše_by_lše +( +$p +-> +asXML +(), +$rg‘ +); + +64 + g$t +-> +dŸg +('New YAMLo Old YAML conversion'); + +65 + g$Þd_yml_rg‘ + = +sfYaml +:: +lßd +( +dœÇme +( +__FILE__ +).'/fixtures/schema.yml'); + +66 + g$p + = +Ãw + +sfPrݖD©aba£Schema +(); + +67 + g$Ãw_yml_ŒªsfÜmed + = +$p +-> +cÚv”tNewToOldYaml +( +sfYaml +:: +lßd +( +dœÇme +( +__FILE__ +).'/fixtures/new_schema.yml')); + +68 + g$t +-> +is_¬¿y_ex¶ic™ +( +$Ãw_yml_ŒªsfÜmed +, +$Þd_yml_rg‘ +); + +70 + g$t +-> +dŸg +('Old YAMLo New YAML conversion'); + +71 + g$Ãw_yml_rg‘ + = +sfYaml +:: +lßd +( +dœÇme +( +__FILE__ +).'/fixtures/new_schema.yml'); + +72 + g$p + = +Ãw + +sfPrݖD©aba£Schema +(); + +73 + g$Þd_yml_ŒªsfÜmed + = +$p +-> +cÚv”tOldToNewYaml +( +sfYaml +:: +lßd +( +dœÇme +( +__FILE__ +).'/fixtures/schema.yml')); + +74 + g$t +-> +is_¬¿y_ex¶ic™ +( +$Þd_yml_ŒªsfÜmed +, +$Ãw_yml_rg‘ +); + +77 + g$t +-> +todo +('XML‡nd classical YAML internal„epresentation'); + +78 + g$p1 + = +Ãw + +sfPrݖD©aba£Schema +(); + +79 + g$p1 +-> +lßdXML +( +dœÇme +( +__FILE__ +).'/fixtures/schema.xml'); + +80 + g$p2 + = +Ãw + +sfPrݖD©aba£Schema +(); + +81 + g$p2 +-> +lßdYAML +( +dœÇme +( +__FILE__ +).'/fixtures/schema.yml'); + +84 + g$t +-> +todo +('XML‡nd classical YAML compared‡s XML'); + +87 + g$t +-> +todo +('XML‡nd classical YAML compared‡s YAML'); + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/task/sfPhingTest.php + +1 +dŸg +('::getPhingVersion()'); + +18 + g$t +-> +is +( +sfPhšg +:: +g‘PhšgV”siÚ +(), 'sfPhing', '::getPhingVersion()„eturns "sfPhing"'); + + @lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/validator/sfValidatorPropelUniqueTest.php + +1 +g‘SymfÚyLibDœ +().'/vendor/lime/lime.php'; + +15 + g$t + = +Ãw + +lime_‹¡ +(2); + +18 + g$t +-> +dŸg +('->clean()'); + +20 + g$v®id©Ü + = +Ãw + +sfV®id©ÜPrݖUnique +( +¬¿y +('model' => 'Author', 'column' => 'name')); + +22 + g$authÜ + = +Ãw + +AuthÜ +(); + +23 + g$authÜ +-> +£tName +('==NAME=='); + +24 + g$authÜ +-> +§ve +(); + +26 + gŒy + + +28 + g$v®id©Ü +-> +þ—n +( +¬¿y +('name' => '==NAME==')); + +29 + g$t +-> +çž +('->clean()hrows‡nƒrror onhe column'); + +31 + $ÿtch + ( +sfV®id©ÜE¼ÜSchema + +$”rÜs +) + +33 +$t +-> + `is +( + `is£t +( +$”rÜs +['Çme']), +Œue +, '->clean()hrows‡nƒrror onhe column'); + +34 + } +} + +35 + $ÿtch + ( +Exû±iÚ + +$e +) + +37 +$t +-> + `çž +('->clean()hrows‡nƒrror onhe column'); + +38 +$t +-> + `dŸg +(' '. +$e +-> + `g‘Mes§ge +()); + +39 + } +} + +41 + g$v®id©Ü +-> +£tO±iÚ +('field', 'author_name'); + +43 + gŒy + + +45 + g$v®id©Ü +-> +þ—n +( +¬¿y +('author_name' => '==NAME==')); + +46 + g$t +-> +çž +('->clean()hrows‡nƒrror onhe field'); + +48 + $ÿtch + ( +sfV®id©ÜE¼ÜSchema + +$”rÜs +) + +50 +$t +-> + `is +( + `is£t +( +$”rÜs +['authÜ_Çme']), +Œue +, '->clean()hrows‡nƒrror onhe field'); + +51 + } +} + +52 + $ÿtch + ( +Exû±iÚ + +$e +) + +54 +$t +-> + `çž +('->clean()hrows‡nƒrror onhe field'); + +55 +$t +-> + `dŸg +(' '. +$e +-> + `g‘Mes§ge +()); + +56 + } +} + +58 + g$authÜ +-> +d–‘e +(); + + @lib/vendor/symfony/lib/request/sfRequest.class.php + +1 + `š™Ÿlize +( +$di¥©ch” +, +$·¿m‘”s +, +$©Œibu‹s +, +$ÝtiÚs +); + +65 +public + +funùiÚ + + `š™Ÿlize +( +sfEv’tDi¥©ch” + +$di¥©ch” +, +$·¿m‘”s + = + `¬¿y +(), +$©Œibu‹s + =‡¼ay(), +$ÝtiÚs + = + $¬¿y +()) + +67 +$this +-> +di¥©ch” + = +$di¥©ch” +; + +69 +$this +-> +ÝtiÚs + = +$ÝtiÚs +; + +71 ià(! + `is£t +( +$this +-> +ÝtiÚs +['logging'])) + +73 +$this +-> +ÝtiÚs +['loggšg'] = +çl£ +; + +77 +$this +-> +·¿m‘”HÞd” + = +Ãw + + `sfP¬am‘”HÞd” +(); + +78 +$this +-> +©Œibu‹HÞd” + = +Ãw + + `sfP¬am‘”HÞd” +(); + +80 +$this +-> +·¿m‘”HÞd” +-> + `add +( +$·¿m‘”s +); + +81 +$this +-> +©Œibu‹HÞd” +-> + `add +( +$©Œibu‹s +); + +82 + } +} + +89 +public + +funùiÚ + + $g‘O±iÚs +() + +91  +$this +-> +ÝtiÚs +; + +92 + } +} + +103 +public + +funùiÚ + + $exŒaùP¬am‘”s +( +$Çmes +) + +105 +$¬¿y + = + `¬¿y +(); + +107 +$·¿m‘”s + = +$this +-> +·¿m‘”HÞd” +-> + `g‘AÎ +(); + +108 + `fܗch + ( +$·¿m‘”s + +as + +$key + => +$v®ue +) + +110 ià( + `š_¬¿y +( +$key +, +$Çmes +)) + +112 +$¬¿y +[ +$key +] = +$v®ue +; + +116  +$¬¿y +; + +117 + } +} + +124 +public + +funùiÚ + + $g‘M‘hod +() + +126  +$this +-> +m‘hod +; + +127 + } +} + +136 +public + +funùiÚ + + $£tM‘hod +( +$m‘hod +) + +138 ià(! + `š_¬¿y +( + `¡¹ouµ” +( +$m‘hod +), + `¬¿y +( +£lf +:: +GET +, s–f:: +POST +, s–f:: +PUT +, s–f:: +DELETE +, s–f:: +HEAD +))) + +140 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('Inv®id„eque¡ m‘hod: %s.', +$m‘hod +)); + +143 +$this +-> +m‘hod + = + `¡¹ouµ” +( +$m‘hod +); + +144 + } +} + +153 +public + +funùiÚ + + $off£tExi¡s +( +$Çme +) + +155  +$this +-> + `hasP¬am‘” +( +$Çme +); + +156 + } +} + +165 +public + +funùiÚ + + $off£tG‘ +( +$Çme +) + +167  +$this +-> + `g‘P¬am‘” +( +$Çme +, +çl£ +); + +168 + } +} + +176 +public + +funùiÚ + + $off£tS‘ +( +$off£t +, +$v®ue +) + +178 +$this +-> + `£tP¬am‘” +( +$off£t +, +$v®ue +); + +179 + } +} + +186 +public + +funùiÚ + + $off£tUn£t +( +$off£t +) + +188 +$this +-> + `g‘P¬am‘”HÞd” +()-> + `»move +( +$off£t +); + +189 + } +} + +196 +public + +funùiÚ + + $g‘P¬am‘”HÞd” +() + +198  +$this +-> +·¿m‘”HÞd” +; + +199 + } +} + +206 +public + +funùiÚ + + $g‘A‰ribu‹HÞd” +() + +208  +$this +-> +©Œibu‹HÞd” +; + +209 + } +} + +219 +public + +funùiÚ + + $g‘A‰ribu‹ +( +$Çme +, +$deçuÉ + = +nuÎ +) + +221  +$this +-> +©Œibu‹HÞd” +-> + `g‘ +( +$Çme +, +$deçuÉ +); + +222 + } +} + +231 +public + +funùiÚ + + $hasA‰ribu‹ +( +$Çme +) + +233  +$this +-> +©Œibu‹HÞd” +-> + `has +( +$Çme +); + +234 + } +} + +243 +public + +funùiÚ + + $£tA‰ribu‹ +( +$Çme +, +$v®ue +) + +245 +$this +-> +©Œibu‹HÞd” +-> + `£t +( +$Çme +, +$v®ue +); + +246 + } +} + +255 +public + +funùiÚ + + $g‘P¬am‘” +( +$Çme +, +$deçuÉ + = +nuÎ +) + +257  +$this +-> +·¿m‘”HÞd” +-> + `g‘ +( +$Çme +, +$deçuÉ +); + +258 + } +} + +267 +public + +funùiÚ + + $hasP¬am‘” +( +$Çme +) + +269  +$this +-> +·¿m‘”HÞd” +-> + `has +( +$Çme +); + +270 + } +} + +279 +public + +funùiÚ + + $£tP¬am‘” +( +$Çme +, +$v®ue +) + +281 +$this +-> +·¿m‘”HÞd” +-> + `£t +( +$Çme +, +$v®ue +); + +282 + } +} + +289 +public + +funùiÚ + + $g‘CڋÁ +() + +291 ià( +nuÎ + ==ð +$this +-> +cڋÁ +) + +293 ià(0 ==ð + `¡¾’ +( + `Œim +( +$this +-> +cڋÁ + = + `fže_g‘_cڋÁs +('php://input')))) + +295 +$this +-> +cڋÁ + = +çl£ +; + +299  +$this +-> +cڋÁ +; + +300 + } +} + +312 +public + +funùiÚ + + $__ÿÎ +( +$m‘hod +, +$¬gum’ts +) + +314 +$ev’t + = +$this +-> +di¥©ch” +-> + `nÙifyUÁž +( +Ãw + + `sfEv’t +($this, '»que¡.m‘hod_nÙ_found', + `¬¿y +('m‘hod' => +$m‘hod +, '¬gum’ts' => +$¬gum’ts +))); + +315 ià(! +$ev’t +-> + `isProûs£d +()) + +317 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('C®ÈtØundefšed m‘hod %s::%s.', + `g‘_þass +( +$this +), +$m‘hod +)); + +320  +$ev’t +-> + `g‘R‘uºV®ue +(); + +321 + } +} + +323 +public + +funùiÚ + + $__þÚe +() + +325 +$this +-> +·¿m‘”HÞd” + = +þÚe + $this->parameterHolder; + +326 +$this +-> +©Œibu‹HÞd” + = +þÚe + $this->attributeHolder; + +327 + } +} + + @lib/vendor/symfony/lib/request/sfWebRequest.class.php + +1 +nuÎ +, + +71 'h‰ps_pÜt' => +nuÎ +, + +72 'deçuÉ_fÜm©' => +nuÎ +, + +73 ), +$ÝtiÚs +); + +74 +·»Á +:: + `š™Ÿlize +( +$di¥©ch” +, +$·¿m‘”s +, +$©Œibu‹s +, +$ÝtiÚs +); + +77 +$this +-> +g‘P¬am‘”s + = + `g‘_magic_quÙes_gpc +(è? +sfToÞk™ +:: + `¡r¦ashesD“p +( +$_GET +) : $_GET; + +78 +$this +-> +·¿m‘”HÞd” +-> + `add +($this-> +g‘P¬am‘”s +); + +80 +$po¡P¬am‘”s + = +$_POST +; + +82 ià( + `is£t +( +$_SERVER +['REQUEST_METHOD'])) + +84  +$_SERVER +['REQUEST_METHOD']) + +87 +$this +-> + `£tM‘hod +( +£lf +:: +GET +); + +91 ià( + `is£t +( +$_POST +['sf_method'])) + +93 +$this +-> + `£tM‘hod +( + `¡¹ouµ” +( +$_POST +['sf_method'])); + +94 + `un£t +( +$po¡P¬am‘”s +['sf_method']); + +96 + `–£if + ( + `is£t +( +$_GET +['sf_method'])) + +98 +$this +-> + `£tM‘hod +( + `¡¹ouµ” +( +$_GET +['sf_method'])); + +99 + `un£t +( +$_GET +['sf_method']); + +103 +$this +-> + `£tM‘hod +( +£lf +:: +POST +); + +105 +$this +-> +·¿m‘”HÞd” +-> + `»move +('sf_method'); + +109 +$this +-> + `£tM‘hod +( +£lf +:: +PUT +); + +110 ià('­¶iÿtiÚ/x-www-fÜm-u¾’coded' ==ð +$this +-> + `g‘CڋÁTy³ +()) + +112 + `·r£_¡r +( +$this +-> + `g‘CڋÁ +(), +$po¡P¬am‘”s +); + +117 +$this +-> + `£tM‘hod +( +£lf +:: +DELETE +); + +118 ià('­¶iÿtiÚ/x-www-fÜm-u¾’coded' ==ð +$this +-> + `g‘CڋÁTy³ +()) + +120 + `·r£_¡r +( +$this +-> + `g‘CڋÁ +(), +$po¡P¬am‘”s +); + +125 +$this +-> + `£tM‘hod +( +£lf +:: +HEAD +); + +129 +$this +-> + `£tM‘hod +( +£lf +:: +GET +); + +135 +$this +-> + `£tM‘hod +( +£lf +:: +GET +); + +138 +$this +-> +po¡P¬am‘”s + = + `g‘_magic_quÙes_gpc +(è? +sfToÞk™ +:: + `¡r¦ashesD“p +( +$po¡P¬am‘”s +) : $postParameters; + +139 +$this +-> +·¿m‘”HÞd” +-> + `add +($this-> +po¡P¬am‘”s +); + +141 ià( + `is£t +( +$this +-> +ÝtiÚs +['formats'])) + +143 + `fܗch + ( +$this +-> +ÝtiÚs +['fÜm©s'] +as + +$fÜm© + => +$mimeTy³s +) + +145 +$this +-> + `£tFÜm© +( +$fÜm© +, +$mimeTy³s +); + +150 +$this +-> +»que¡P¬am‘”s + = $this-> + `·r£Reque¡P¬am‘”s +(); + +151 +$this +-> +·¿m‘”HÞd” +-> + `add +($this-> +»que¡P¬am‘”s +); + +153 +$this +-> + `fixP¬am‘”s +(); + +163 +public + +funùiÚ + + $g‘CڋÁTy³ +( +$Œim + = +Œue +) + +165 +$cڋÁTy³ + = +$this +-> + `g‘H‰pH—d” +('CڋÁ-Ty³', +nuÎ +); + +167 ià( +$Œim + && +çl£ + !=ð +$pos + = + `¡½os +( +$cڋÁTy³ +, ';')) + +169 +$cڋÁTy³ + = + `sub¡r +($cڋÁTy³, 0, +$pos +); + +172  +$cڋÁTy³ +; + +173 + } +} + +180 +public + +funùiÚ + + $g‘Uri +() + +182 +$·thA¼ay + = +$this +-> + `g‘P©hInfoA¼ay +(); + +185 ià('HTTP_X_REWRITE_URL' =ð +$this +-> +ÝtiÚs +['path_info_key']) + +187 +$uri + = + `is£t +( +$·thA¼ay +['HTTP_X_REWRITE_URL']) ? $pathArray['HTTP_X_REWRITE_URL'] : ''; + +191 +$uri + = + `is£t +( +$·thA¼ay +['REQUEST_URI']) ? $pathArray['REQUEST_URI'] : ''; + +194  +$this +-> + `isAbsUri +(è? +$uri + : $this-> + `g‘UriP»fix +().$uri; + +195 + } +} + +202 +public + +funùiÚ + + $isAbsUri +() + +204 +$·thA¼ay + = +$this +-> + `g‘P©hInfoA¼ay +(); + +206  + `is£t +( +$·thA¼ay +['REQUEST_URI']è? + `´eg_m©ch +('/^h‰p/', $·thA¼ay['REQUEST_URI']è: +çl£ +; + +207 + } +} + +214 +public + +funùiÚ + + $g‘UriP»fix +() + +216 +$·thA¼ay + = +$this +-> + `g‘P©hInfoA¼ay +(); + +217 +$£cu» + = +$this +-> + `isSecu» +(); + +219 +$´ÙocÞ + = +$£cu» + ? 'https' : 'http'; + +220 +$ho¡ + = +$this +-> + `g‘Ho¡ +(); + +221 +$pÜt + = +nuÎ +; + +224 ià( +çl£ + !=ð + `¡½os +( +$ho¡ +, ':')) + +226 + `li¡ +( +$ho¡ +, +$pÜt +èð + `ex¶ode +(':', $host, 2); + +228 ià( + `is£t +( +$this +-> +ÝtiÚs +[ +$´ÙocÞ +.'_port'])) + +230 +$pÜt + = +$this +-> +ÝtiÚs +[ +$´ÙocÞ +.'_port']; + +232 ià( + `is£t +( +$·thA¼ay +['SERVER_PORT'])) + +234 +$pÜt + = +$·thA¼ay +['SERVER_PORT']; + +239 ià( +$this +-> + `isFÜw¬dedSecu» +()) + +241 +$pÜt + = + `is£t +( +$this +-> +ÝtiÚs +['h‰ps_pÜt']è&& +£lf +:: +PORT_HTTPS + !ð$this->ÝtiÚs['h‰ps_pÜt'] ? $this->ÝtiÚs['h‰ps_pÜt'] : +nuÎ +; + +243 + `–£if + (( +$£cu» + && +£lf +:: +PORT_HTTPS + =ð +$pÜt +è|| (!$£cu» && s–f:: +PORT_HTTP + == $port)) + +245 +$pÜt + = +nuÎ +; + +248  + `¥rštf +('%s://%s%s', +$´ÙocÞ +, +$ho¡ +, +$pÜt + ? ':'.$port : ''); + +249 + } +} + +256 +public + +funùiÚ + + $g‘P©hInfo +() + +258 +$·thInfo + = ''; + +260 +$·thA¼ay + = +$this +-> + `g‘P©hInfoA¼ay +(); + +263 +$sf_·th_šfo_key + = +$this +-> +ÝtiÚs +['path_info_key']; + +264 ià(! + `is£t +( +$·thA¼ay +[ +$sf_·th_šfo_key +]) || !$pathArray[$sf_path_info_key]) + +266 ià( + `is£t +( +$·thA¼ay +['REQUEST_URI'])) + +268 +$qs + = + `is£t +( +$·thA¼ay +['QUERY_STRING']) ? $pathArray['QUERY_STRING'] : ''; + +269 +$süt_Çme + = +$this +-> + `g‘SütName +(); + +270 +$uri_´efix + = +$this +-> + `isAbsUri +(è? $this-> + `g‘UriP»fix +() : ''; + +271 +$·thInfo + = + `´eg_»¶aû +('/^'. + `´eg_quÙe +( +$uri_´efix +, '/').'/','', +$·thA¼ay +['REQUEST_URI']); + +272 +$·thInfo + = + `´eg_»¶aû +('/^'. + `´eg_quÙe +( +$süt_Çme +, '/').'/', '', $pathInfo); + +273 +$´efix_Çme + = + `´eg_»¶aû +('#/[^/]+$#', '', +$süt_Çme +); + +274 +$·thInfo + = + `´eg_»¶aû +('/^'. + `´eg_quÙe +( +$´efix_Çme +, '/').'/', '', $pathInfo); + +275 +$·thInfo + = + `´eg_»¶aû +('/\??'. + `´eg_quÙe +( +$qs +, '/').'$/', '', $pathInfo); + +280 +$·thInfo + = +$·thA¼ay +[ +$sf_·th_šfo_key +]; + +281 ià( +$»ÏtiveU¾RoÙ + = +$this +-> + `g‘R–©iveU¾RoÙ +()) + +283 +$·thInfo + = + `´eg_»¶aû +('/^'. + `¡r_»¶aû +('/', '\\/', +$»ÏtiveU¾RoÙ +).'\//', '', $pathInfo); + +288 ià( + `is£t +( +$_SERVER +['SERVER_SOFTWARE']è&& +çl£ + !=ð + `¡ros +($_SERVER['SERVER_SOFTWARE'], 'iis'è&& +$pos + = sŒos( +$·thInfo +, '.php')) + +290 +$·thInfo + = + `sub¡r +($·thInfo, +$pos + + 4); + +293 ià(! +$·thInfo +) + +295 +$·thInfo + = '/'; + +298  +$·thInfo +; + +299 + } +} + +301 +public + +funùiÚ + + $g‘P©hInfoP»fix +() + +303 +$´efix + = +$this +-> + `g‘R–©iveU¾RoÙ +(); + +305 ià(! + `is£t +( +$this +-> +ÝtiÚs +['no_script_name']) || !$this->options['no_script_name']) + +307 +$sütName + = +$this +-> + `g‘SütName +(); + +308 +$´efix + = +nuÎ + ==ð$´efix ? +$sütName + : $´efix.'/'. + `ba£Çme +($scriptName); + +311  +$´efix +; + +312 + } +} + +314 +public + +funùiÚ + + $g‘G‘P¬am‘”s +() + +316  +$this +-> +g‘P¬am‘”s +; + +317 + } +} + +319 +public + +funùiÚ + + $g‘Po¡P¬am‘”s +() + +321  +$this +-> +po¡P¬am‘”s +; + +322 + } +} + +324 +public + +funùiÚ + + $g‘Reque¡P¬am‘”s +() + +326  +$this +-> +»que¡P¬am‘”s +; + +327 + } +} + +329 +public + +funùiÚ + + $addReque¡P¬am‘”s +( +$·¿m‘”s +) + +331 +$this +-> +»que¡P¬am‘”s + = + `¬¿y_m”ge +($this->»que¡P¬am‘”s, +$·¿m‘”s +); + +332 +$this +-> + `g‘P¬am‘”HÞd” +()-> + `add +( +$·¿m‘”s +); + +334 +$this +-> + `fixP¬am‘”s +(); + +335 + } +} + +342 +public + +funùiÚ + + $g‘Reã»r +() + +344 +$·thA¼ay + = +$this +-> + `g‘P©hInfoA¼ay +(); + +346  + `is£t +( +$·thA¼ay +['HTTP_REFERER']) ? $pathArray['HTTP_REFERER'] : ''; + +347 + } +} + +354 +public + +funùiÚ + + $g‘Ho¡ +() + +356 +$·thA¼ay + = +$this +-> + `g‘P©hInfoA¼ay +(); + +358 ià( + `is£t +( +$·thA¼ay +['HTTP_X_FORWARDED_HOST'])) + +360 +$–em’ts + = + `ex¶ode +(',', +$·thA¼ay +['HTTP_X_FORWARDED_HOST']); + +362  + `Œim +( +$–em’ts +[ + `couÁ +($elements) - 1]); + +366  + `is£t +( +$·thA¼ay +['HTTP_HOST']) ? $pathArray['HTTP_HOST'] : ''; + +368 + } +} + +375 +public + +funùiÚ + + $g‘SütName +() + +377 +$·thA¼ay + = +$this +-> + `g‘P©hInfoA¼ay +(); + +379  + `is£t +( +$·thA¼ay +['SCRIPT_NAME']) ? $pathArray['SCRIPT_NAME'] : (isset($pathArray['ORIG_SCRIPT_NAME']) ? $pathArray['ORIG_SCRIPT_NAME'] : ''); + +380 + } +} + +389 +public + +funùiÚ + + $isM‘hod +( +$m‘hod +) + +391  + `¡¹ouµ” +( +$m‘hod +è=ð +$this +-> + `g‘M‘hod +(); + +392 + } +} + +401 +public + +funùiÚ + + $g‘P»ã¼edCuÉu» +( +¬¿y + +$cuÉu»s + = +nuÎ +) + +403 +$´eã¼edCuÉu»s + = +$this +-> + `g‘Lªguages +(); + +405 ià( +nuÎ + ==ð +$cuÉu»s +) + +407  + `is£t +( +$´eã¼edCuÉu»s +[0]è? $´eã¼edCuÉu»s[0] : +nuÎ +; + +410 ià(! +$´eã¼edCuÉu»s +) + +412  +$cuÉu»s +[0]; + +415 +$´eã¼edCuÉu»s + = + `¬¿y_v®ues +( + `¬¿y_š‹r£ù +($´eã¼edCuÉu»s, +$cuÉu»s +)); + +417  + `is£t +( +$´eã¼edCuÉu»s +[0]è? $´eã¼edCuÉu»s[0] : +$cuÉu»s +[0]; + +418 + } +} + +425 +public + +funùiÚ + + $g‘Lªguages +() + +427 ià( +$this +-> +Ïnguages +) + +429  +$this +-> +Ïnguages +; + +432 ià(! + `is£t +( +$_SERVER +['HTTP_ACCEPT_LANGUAGE'])) + +434  + `¬¿y +(); + +437 +$Ïnguages + = +$this +-> + `¥l™H‰pAcû±H—d” +( +$_SERVER +['HTTP_ACCEPT_LANGUAGE']); + +438 + `fܗch + ( +$Ïnguages + +as + +$Ïng +) + +440 ià( + `¡r¡r +( +$Ïng +, '-')) + +442 +$codes + = + `ex¶ode +('-', +$Ïng +); + +443 ià( +$codes +[0] == 'i') + +448 ià( + `couÁ +( +$codes +) > 1) + +450 +$Ïng + = +$codes +[1]; + +455  +$i + = 0, +$max + = + `couÁ +( +$codes +); $i < $max; $i++) + +457 ià( +$i + == 0) + +459 +$Ïng + = + `¡¹Þow” +( +$codes +[0]); + +463 +$Ïng + .ð'_'. + `¡¹ouµ” +( +$codes +[ +$i +]); + +469 +$this +-> +Ïnguages +[] = +$Ïng +; + +472  +$this +-> +Ïnguages +; + +473 + } +} + +480 +public + +funùiÚ + + $g‘Ch¬£ts +() + +482 ià( +$this +-> +ch¬£ts +) + +484  +$this +-> +ch¬£ts +; + +487 ià(! + `is£t +( +$_SERVER +['HTTP_ACCEPT_CHARSET'])) + +489  + `¬¿y +(); + +492 +$this +-> +ch¬£ts + = $this-> + `¥l™H‰pAcû±H—d” +( +$_SERVER +['HTTP_ACCEPT_CHARSET']); + +494  +$this +-> +ch¬£ts +; + +495 + } +} + +502 +public + +funùiÚ + + $g‘Acû±abËCڋÁTy³s +() + +504 ià( +$this +-> +acû±abËCڋÁTy³s +) + +506  +$this +-> +acû±abËCڋÁTy³s +; + +509 ià(! + `is£t +( +$_SERVER +['HTTP_ACCEPT'])) + +511  + `¬¿y +(); + +514 +$this +-> +acû±abËCڋÁTy³s + = $this-> + `¥l™H‰pAcû±H—d” +( +$_SERVER +['HTTP_ACCEPT']); + +516  +$this +-> +acû±abËCڋÁTy³s +; + +517 + } +} + +527 +public + +funùiÚ + + $isXmlH‰pReque¡ +() + +529  ( +$this +-> + `g‘H‰pH—d” +('X_REQUESTED_WITH') == 'XMLHttpRequest'); + +530 + } +} + +532 +public + +funùiÚ + +g‘H‰pH—d” +( +$Çme +, +$´efix + = 'http') + +534 ià( +$´efix +) + +536 +$´efix + = +¡¹ouµ” +($prefix).'_'; + +539 + g$Çme + = +$´efix +. +¡¹ouµ” +( +¡¹r +( +$Çme +, '-', '_')); + +541 + g$·thA¼ay + = +$this +-> +g‘P©hInfoA¼ay +(); + +543  +is£t +( +$·thA¼ay +[ +$Çme +]è? + gsfToÞk™ +:: +¡r¦ashesD“p +($·thA¼ay[$Çme]è: +nuÎ +; + +554 +public + +funùiÚ + + $g‘Cook› +( +$Çme +, +$deçuÉV®ue + = +nuÎ +) + +556 +$»tv® + = +$deçuÉV®ue +; + +558 ià( + `is£t +( +$_COOKIE +[ +$Çme +])) + +560 +$»tv® + = + `g‘_magic_quÙes_gpc +(è? +sfToÞk™ +:: + `¡r¦ashesD“p +( +$_COOKIE +[ +$Çme +]) : $_COOKIE[$name]; + +563  +$»tv® +; + +564 + } +} + +571 +public + +funùiÚ + + $isSecu» +() + +573 +$·thA¼ay + = +$this +-> + `g‘P©hInfoA¼ay +(); + +576 ( + `is£t +( +$·thA¼ay +['HTTPS']è&& ('Ú' =ð + `¡¹Þow” +($pathArray['HTTPS']) || 1 == $pathArray['HTTPS'])) + +578 ( + `is£t +( +$·thA¼ay +['HTTP_SSL_HTTPS']è&& ('Ú' =ð + `¡¹Þow” +($pathArray['HTTP_SSL_HTTPS']) || 1 == $pathArray['HTTP_SSL_HTTPS'])) + +580 +$this +-> + `isFÜw¬dedSecu» +() + +582 + } +} + +589 +´Ùeùed + +funùiÚ + + $isFÜw¬dedSecu» +() + +591 +$·thA¼ay + = +$this +-> + `g‘P©hInfoA¼ay +(); + +593  + `is£t +( +$·thA¼ay +['HTTP_X_FORWARDED_PROTO']è&& 'h‰ps' =ð + `¡¹Þow” +($pathArray['HTTP_X_FORWARDED_PROTO']); + +594 + } +} + +601 +public + +funùiÚ + + $g‘R–©iveU¾RoÙ +() + +603 ià( +nuÎ + ==ð +$this +-> +»ÏtiveU¾RoÙ +) + +605 ià(! + `is£t +( +$this +-> +ÝtiÚs +['relative_url_root'])) + +607 +$this +-> +»ÏtiveU¾RoÙ + = + `´eg_»¶aû +('#/[^/]+\.php5?$#', '', $this-> + `g‘SütName +()); + +611 +$this +-> +»ÏtiveU¾RoÙ + = $this-> +ÝtiÚs +['relative_url_root']; + +615  +$this +-> +»ÏtiveU¾RoÙ +; + +616 + } +} + +623 +public + +funùiÚ + + $£tR–©iveU¾RoÙ +( +$v®ue +) + +625 +$this +-> +»ÏtiveU¾RoÙ + = +$v®ue +; + +626 + } +} + +633 +public + +funùiÚ + + $¥l™H‰pAcû±H—d” +( +$h—d” +) + +635 +$v®ues + = + `¬¿y +(); + +636 + `fܗch + ( + `¬¿y_fž‹r +( + `ex¶ode +(',', +$h—d” +)è +as + +$v®ue +) + +639 ià( +$pos + = + `¡½os +( +$v®ue +, ';')) + +641 +$q + = (è + `Œim +( + `sub¡r +( +$v®ue +, + `¡½os +($value, '=') + 1)); + +642 +$v®ue + = + `sub¡r +($v®ue, 0, +$pos +); + +646 +$q + = 1; + +649 ià(0 < +$q +) + +651 +$v®ues +[ + `Œim +( +$v®ue +)] = +$q +; + +655 + `¬sÜt +( +$v®ues +); + +657  + `¬¿y_keys +( +$v®ues +); + +658 + } +} + +667 +public + +funùiÚ + + $g‘P©hInfoA¼ay +() + +669 ià(! +$this +-> +·thInfoA¼ay +) + +672  +$this +-> +ÝtiÚs +['path_info_array']) + +675 +$this +-> +·thInfoA¼ay + =& +$_SERVER +; + +680 +$this +-> +·thInfoA¼ay + =& +$_ENV +; + +684  +$this +-> +·thInfoA¼ay +; + +685 + } +} + +694 +public + +funùiÚ + + $g‘MimeTy³ +( +$fÜm© +) + +696  + `is£t +( +$this +-> +fÜm©s +[ +$fÜm© +]è? $this->fÜm©s[$fÜm©][0] : +nuÎ +; + +697 + } +} + +706 +public + +funùiÚ + + $g‘FÜm© +( +$mimeTy³ +) + +708 + `fܗch + ( +$this +-> +fÜm©s + +as + +$fÜm© + => +$mimeTy³s +) + +710 ià( + `š_¬¿y +( +$mimeTy³ +, +$mimeTy³s +)) + +712  +$fÜm© +; + +716  +nuÎ +; + +717 + } +} + +725 +public + +funùiÚ + + $£tFÜm© +( +$fÜm© +, +$mimeTy³s +) + +727 +$this +-> +fÜm©s +[ +$fÜm© +] = + `is_¬¿y +( +$mimeTy³s +è? $mimeTy³ : + `¬¿y +($mimeTypes); + +728 + } +} + +735 +public + +funùiÚ + + $£tReque¡FÜm© +( +$fÜm© +) + +737 +$this +-> +fÜm© + = +$fÜm© +; + +738 + } +} + +751 +public + +funùiÚ + + $g‘Reque¡FÜm© +() + +753 ià( +nuÎ + ==ð +$this +-> +fÜm© +) + +755 +$this +-> + `£tReque¡FÜm© +($this-> + `g‘P¬am‘” +('sf_fÜm©', $this-> +ÝtiÚs +['default_format'])); + +758  +$this +-> +fÜm© +; + +759 + } +} + +767 +public + +funùiÚ + + $g‘Fžes +( +$key + = +nuÎ +) + +769 ià( +çl£ + ==ð +$this +-> +fixedFžeA¼ay +) + +771 +$this +-> +fixedFžeA¼ay + = +£lf +:: + `cÚv”tFžeInfÜm©iÚ +( +$_FILES +); + +774  +nuÎ + ==ð +$key + ? +$this +-> +fixedFžeA¼ay + : ( + `is£t +($this->fixedFžeA¼ay[$key]è? $this->fixedFžeA¼ay[$key] : + `¬¿y +()); + +775 + } +} + +786  +public + +funùiÚ + + $cÚv”tFžeInfÜm©iÚ +( +¬¿y + +$š‹dFžes +) + +788 +$fžes + = + `¬¿y +(); + +789 + `fܗch + ( +$š‹dFžes + +as + +$key + => +$d©a +) + +791 +$fžes +[ +$key +] = +£lf +:: + `fixPhpFžesA¼ay +( +$d©a +); + +794  +$fžes +; + +795 + } +} + +797  +´Ùeùed + +funùiÚ + + $fixPhpFžesA¼ay +( +$d©a +) + +799 +$fžeKeys + = + `¬¿y +('error', 'name', 'size', 'tmp_name', 'type'); + +800 +$keys + = + `¬¿y_keys +( +$d©a +); + +801 + `sÜt +( +$keys +); + +803 ià( +$fžeKeys + !ð +$keys + || ! + `is£t +( +$d©a +['Çme']è|| ! + `is_¬¿y +($data['name'])) + +805  +$d©a +; + +808 +$fžes + = +$d©a +; + +809 + `fܗch + ( +$fžeKeys + +as + +$k +) + +811 + `un£t +( +$fžes +[ +$k +]); + +813 + `fܗch + ( + `¬¿y_keys +( +$d©a +['Çme']è +as + +$key +) + +815 +$fžes +[ +$key +] = +£lf +:: + `fixPhpFžesA¼ay +( + `¬¿y +( + +816 '”rÜ' => +$d©a +['”rÜ'][ +$key +], + +817 'Çme' => +$d©a +['Çme'][ +$key +], + +818 'ty³' => +$d©a +['ty³'][ +$key +], + +819 'tmp_Çme' => +$d©a +['tmp_Çme'][ +$key +], + +820 'size' => +$d©a +['size'][ +$key +], + +824  +$fžes +; + +825 + } +} + +835 +public + +funùiÚ + + $g‘G‘P¬am‘” +( +$Çme +, +$deçuÉ + = +nuÎ +) + +837 ià( + `is£t +( +$this +-> +g‘P¬am‘”s +[ +$Çme +])) + +839  +$this +-> +g‘P¬am‘”s +[ +$Çme +]; + +843  +sfToÞk™ +:: + `g‘A¼ayV®ueFÜP©h +( +$this +-> +g‘P¬am‘”s +, +$Çme +, +$deçuÉ +); + +845 + } +} + +855 +public + +funùiÚ + + $g‘Po¡P¬am‘” +( +$Çme +, +$deçuÉ + = +nuÎ +) + +857 ià( + `is£t +( +$this +-> +po¡P¬am‘”s +[ +$Çme +])) + +859  +$this +-> +po¡P¬am‘”s +[ +$Çme +]; + +863  +sfToÞk™ +:: + `g‘A¼ayV®ueFÜP©h +( +$this +-> +po¡P¬am‘”s +, +$Çme +, +$deçuÉ +); + +865 + } +} + +875 +public + +funùiÚ + + $g‘U¾P¬am‘” +( +$Çme +, +$deçuÉ + = +nuÎ +) + +877 ià( + `is£t +( +$this +-> +»que¡P¬am‘”s +[ +$Çme +])) + +879  +$this +-> +»que¡P¬am‘”s +[ +$Çme +]; + +883  +sfToÞk™ +:: + `g‘A¼ayV®ueFÜP©h +( +$this +-> +»que¡P¬am‘”s +, +$Çme +, +$deçuÉ +); + +885 + } +} + +892 +public + +funùiÚ + + $g‘RemÙeAdd»ss +() + +894 +$·thInfo + = +$this +-> + `g‘P©hInfoA¼ay +(); + +896  +$·thInfo +['REMOTE_ADDR']; + +897 + } +} + +910 +public + +funùiÚ + + $g‘FÜw¬dedFÜ +() + +912 +$·thInfo + = +$this +-> + `g‘P©hInfoA¼ay +(); + +914 ià( + `em±y +( +$·thInfo +['HTTP_X_FORWARDED_FOR'])) + +916  +nuÎ +; + +919  + `ex¶ode +(', ', +$·thInfo +['HTTP_X_FORWARDED_FOR']); + +920 + } +} + +922 +public + +funùiÚ + + $checkCSRFPrÙeùiÚ +() + +924 +$fÜm + = +Ãw + + `Ba£FÜm +(); + +925 +$fÜm +-> + `bšd +($fÜm-> + `isCSRFPrÙeùed +(è? + `¬¿y +($fÜm-> + `g‘CSRFF›ldName +(è=> +$this +-> + `g‘P¬am‘” +($form->getCSRFFieldName())) :‡rray()); + +927 ià(! +$fÜm +-> + `isV®id +()) + +929 +throw + +$fÜm +-> + `g‘E¼ÜSchema +(); + +931 + } +} + +940 +´Ùeùed + +funùiÚ + + $·r£Reque¡P¬am‘”s +() + +942  +$this +-> +di¥©ch” +-> + `fž‹r +( +Ãw + + `sfEv’t +($this, '»que¡.fž‹r_·¿m‘”s', $this-> + `g‘Reque¡Cڋxt +()), + `¬¿y +())-> + `g‘R‘uºV®ue +(); + +943 + } +} + +950 +public + +funùiÚ + + $g‘Reque¡Cڋxt +() + +952  + `¬¿y +( + +953 '·th_šfo' => +$this +-> + `g‘P©hInfo +(), + +954 '´efix' => +$this +-> + `g‘P©hInfoP»fix +(), + +955 'm‘hod' => +$this +-> + `g‘M‘hod +(), + +956 'fÜm©' => +$this +-> + `g‘Reque¡FÜm© +(), + +957 'ho¡' => +$this +-> + `g‘Ho¡ +(), + +958 'is_£cu»' => +$this +-> + `isSecu» +(), + +959 '»que¡_uri' => +$this +-> + `g‘Uri +(), + +961 + } +} + +963 +´Ùeùed + +funùiÚ + + $fixP¬am‘”s +() + +966 + `fܗch + ( +$this +-> +·¿m‘”HÞd” +-> + `g‘AÎ +(è +as + +$key + => +$v®ue +) + +968 ià(0 ==ð + `¡ros +( +$key +, '_sf_')) + +970 +$this +-> +·¿m‘”HÞd” +-> + `»move +( +$key +); + +971 +$this +-> + `£tA‰ribu‹ +( + `sub¡r +( +$key +, 1), +$v®ue +); + +974 + } +} + + @lib/vendor/symfony/lib/response/sfResponse.class.php + +1 + `š™Ÿlize +( +$di¥©ch” +, +$ÝtiÚs +); + +51 +public + +funùiÚ + + `š™Ÿlize +( +sfEv’tDi¥©ch” + +$di¥©ch” +, +$ÝtiÚs + = + $¬¿y +()) + +53 +$this +-> +di¥©ch” + = +$di¥©ch” +; + +54 +$this +-> +ÝtiÚs + = +$ÝtiÚs +; + +56 ià(! + `is£t +( +$this +-> +ÝtiÚs +['logging'])) + +58 +$this +-> +ÝtiÚs +['loggšg'] = +çl£ +; + +60 + } +} + +67 +public + +funùiÚ + + $£tEv’tDi¥©ch” +( +sfEv’tDi¥©ch” + +$di¥©ch” +) + +69 +$this +-> +di¥©ch” + = +$di¥©ch” +; + +70 + } +} + +77 +public + +funùiÚ + + $£tCڋÁ +( +$cڋÁ +) + +79 +$this +-> +cڋÁ + = +$cڋÁ +; + +80 + } +} + +87 +public + +funùiÚ + + $g‘CڋÁ +() + +89  +$this +-> +cڋÁ +; + +90 + } +} + +95 +public + +funùiÚ + + $£ndCڋÁ +() + +97 +$ev’t + = +$this +-> +di¥©ch” +-> + `fž‹r +( +Ãw + + `sfEv’t +($this, '»¥Ú£.fž‹r_cڋÁ'), $this-> + `g‘CڋÁ +()); + +98 +$cڋÁ + = +$ev’t +-> + `g‘R‘uºV®ue +(); + +100 ià( +$this +-> +ÝtiÚs +['logging']) + +102 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, '­¶iÿtiÚ.log', + `¬¿y +( + `¥rštf +('S’d cڋÁ (% o)', + `¡¾’ +( +$cڋÁ +))))); + +105 +echo + +$cڋÁ +; + +106 + } +} + +111 +public + +funùiÚ + + $£nd +() + +113 +$this +-> + `£ndCڋÁ +(); + +114 + } +} + +121 +public + +funùiÚ + + $g‘O±iÚs +() + +123  +$this +-> +ÝtiÚs +; + +124 + } +} + +136 +public + +funùiÚ + + $__ÿÎ +( +$m‘hod +, +$¬gum’ts +) + +138 +$ev’t + = +$this +-> +di¥©ch” +-> + `nÙifyUÁž +( +Ãw + + `sfEv’t +($this, '»¥Ú£.m‘hod_nÙ_found', + `¬¿y +('m‘hod' => +$m‘hod +, '¬gum’ts' => +$¬gum’ts +))); + +139 ià(! +$ev’t +-> + `isProûs£d +()) + +141 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('C®ÈtØundefšed m‘hod %s::%s.', + `g‘_þass +( +$this +), +$m‘hod +)); + +144  +$ev’t +-> + `g‘R‘uºV®ue +(); + +145 + } +} + +152 +public + +funùiÚ + + $£rŸlize +() + +154  + `£rŸlize +( +$this +-> +cڋÁ +); + +155 + } +} + +165 +public + +funùiÚ + + $un£rŸlize +( +$£rŸlized +) + +167 +$this +-> +cڋÁ + = + `un£rŸlize +( +$£rŸlized +); + +168 + } +} + + @lib/vendor/symfony/lib/response/sfWebResponse.class.php + +1 +javasüts + = + `¬¿y_combše +($this-> +pos™iÚs +, + `¬¿y_fžl +(0, + `couÁ +($this->pos™iÚs), + `¬¿y +())); + +111 +$this +-> +¡yËsh“ts + = + `¬¿y_combše +($this-> +pos™iÚs +, + `¬¿y_fžl +(0, + `couÁ +($this->pos™iÚs), + `¬¿y +())); + +113 ià(! + `is£t +( +$this +-> +ÝtiÚs +['charset'])) + +115 +$this +-> +ÝtiÚs +['charset'] = 'utf-8'; + +118 ià(! + `is£t +( +$this +-> +ÝtiÚs +['send_http_headers'])) + +120 +$this +-> +ÝtiÚs +['£nd_h‰p_h—d”s'] = +Œue +; + +123 ià(! + `is£t +( +$this +-> +ÝtiÚs +['http_protocol'])) + +125 +$this +-> +ÝtiÚs +['http_protocol'] = 'HTTP/1.0'; + +128 +$this +-> +ÝtiÚs +['cڋÁ_ty³'] = $this-> + `fixCڋÁTy³ +( + `is£t +($this->options['content_type']) ? $this->options['content_type'] : 'text/html'); + +136 +public + +funùiÚ + + $£tH—d”OÆy +( +$v®ue + = +Œue +) + +138 +$this +-> +h—d”OÆy + = ( +boޗn +è +$v®ue +; + +139 + } +} + +146 +public + +funùiÚ + + $isH—d”OÆy +() + +148  +$this +-> +h—d”OÆy +; + +149 + } +} + +164 +public + +funùiÚ + +£tCook› +( +$Çme +, +$v®ue +, +$expœe + = +nuÎ +, +$·th + = '/', +$domaš + = '', +$£cu» + = +çl£ +, +$h‰pOÆy + = false) + +166 ià( +$expœe + !=ð +nuÎ +) + +168 ià( +is_num”ic +( +$expœe +)) + +170 +$expœe + = () $expire; + +174 + g$expœe + = +¡¹Ùime +( +$expœe +); + +175 ià( + g$expœe + ==ð +çl£ + || +$expœe + == -1) + +177 +throw + +Ãw + +sfExû±iÚ +('Yourƒxpire…arameter is‚ot valid.'); + +182 + g$this +-> + gcook›s +[ +$Çme +] = +¬¿y +( + +183 'Çme' => +$Çme +, + +184 'v®ue' => +$v®ue +, + +185 'expœe' => +$expœe +, + +186 '·th' => +$·th +, + +187 'domaš' => +$domaš +, + +188 '£cu»' => +$£cu» + ? +Œue + : +çl£ +, + +189 'h‰pOÆy' => +$h‰pOÆy +, + +200 +public + +funùiÚ + + $£tStusCode +( +$code +, +$Çme + = +nuÎ +) + +202 +$this +-> +¡©usCode + = +$code +; + +203 +$this +-> +¡©usText + = +nuÎ + !=ð +$Çme + ? $Çm: +£lf +:: +$¡©usTexts +[ +$code +]; + +204 + } +} + +211 +public + +funùiÚ + + $g‘StusText +() + +213  +$this +-> +¡©usText +; + +214 + } +} + +221 +public + +funùiÚ + + $g‘StusCode +() + +223  +$this +-> +¡©usCode +; + +224 + } +} + +234 +public + +funùiÚ + + $£tH‰pH—d” +( +$Çme +, +$v®ue +, +$»¶aû + = +Œue +) + +236 +$Çme + = +$this +-> + `nÜm®izeH—d”Name +($name); + +238 ià( +nuÎ + ==ð +$v®ue +) + +240 + `un£t +( +$this +-> +h—d”s +[ +$Çme +]); + +245 ià('CڋÁ-Ty³' =ð +$Çme +) + +247 ià( +$»¶aû + || ! +$this +-> + `g‘H‰pH—d” +('CڋÁ-Ty³', +nuÎ +)) + +249 +$this +-> + `£tCڋÁTy³ +( +$v®ue +); + +255 ià(! +$»¶aû +) + +257 +$cu¼’t + = + `is£t +( +$this +-> +h—d”s +[ +$Çme +]) ? $this->headers[$name] : ''; + +258 +$v®ue + = ( +$cu¼’t + ? $current.', ' : '').$value; + +261 +$this +-> +h—d”s +[ +$Çme +] = +$v®ue +; + +262 + } +} + +272 +public + +funùiÚ + + $g‘H‰pH—d” +( +$Çme +, +$deçuÉ + = +nuÎ +) + +274 +$Çme + = +$this +-> + `nÜm®izeH—d”Name +($name); + +276  + `is£t +( +$this +-> +h—d”s +[ +$Çme +]è? $this->h—d”s[$Çme] : +$deçuÉ +; + +277 + } +} + +286 +public + +funùiÚ + + $hasH‰pH—d” +( +$Çme +) + +288  + `¬¿y_key_exi¡s +( +$this +-> + `nÜm®izeH—d”Name +( +$Çme +), $this-> +h—d”s +); + +289 + } +} + +297 +public + +funùiÚ + + $£tCڋÁTy³ +( +$v®ue +) + +299 +$this +-> +h—d”s +['CڋÁ-Ty³'] = $this-> + `fixCڋÁTy³ +( +$v®ue +); + +300 + } +} + +307 +public + +funùiÚ + + $g‘Ch¬£t +() + +309  +$this +-> +ÝtiÚs +['charset']; + +310 + } +} + +317 +public + +funùiÚ + + $g‘CڋÁTy³ +() + +319  +$this +-> + `g‘H‰pH—d” +('CڋÁ-Ty³', $this-> +ÝtiÚs +['content_type']); + +320 + } +} + +327 +public + +funùiÚ + + $£ndH‰pH—d”s +() + +329 ià(! +$this +-> +ÝtiÚs +['send_http_headers']) + +335 +$¡©us + = +$this +-> +ÝtiÚs +['h‰p_´ÙocÞ'].' '.$this-> +¡©usCode +.' '.$this-> +¡©usText +; + +336 + `h—d” +( +$¡©us +); + +338 ià( + `sub¡r +( + `php_§pi_Çme +(), 0, 3) == 'cgi') + +342 + `un£t +( +$this +-> +h—d”s +['Status']); + +345 ià( +$this +-> +ÝtiÚs +['logging']) + +347 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, '­¶iÿtiÚ.log', + `¬¿y +( + `¥rštf +('S’d stu "%s"', +$¡©us +)))); + +351 ià(! +$this +-> + `g‘H‰pH—d” +('Content-Type')) + +353 +$this +-> + `£tCڋÁTy³ +($this-> +ÝtiÚs +['content_type']); + +355 + `fܗch + ( +$this +-> +h—d”s + +as + +$Çme + => +$v®ue +) + +357 + `h—d” +( +$Çme +.': '. +$v®ue +); + +359 ià( +$v®ue + !ð'' && +$this +-> +ÝtiÚs +['logging']) + +361 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, '­¶iÿtiÚ.log', + `¬¿y +( + `¥rštf +('S’d h—d” "%s: %s"', +$Çme +, +$v®ue +)))); + +366 + `fܗch + ( +$this +-> +cook›s + +as + +$cook› +) + +368 + `£Œawcook› +( +$cook› +['name'], $cookie['value'], $cookie['expire'], $cookie['path'], $cookie['domain'], $cookie['secure'], $cookie['httpOnly']); + +370 ià( +$this +-> +ÝtiÚs +['logging']) + +372 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, '­¶iÿtiÚ.log', + `¬¿y +( + `¥rštf +('S’d cook› "%s": "%s"', +$cook› +['name'], $cookie['value'])))); + +376 +$this +-> +ÝtiÚs +['£nd_h‰p_h—d”s'] = +çl£ +; + +377 + } +} + +383 +public + +funùiÚ + + $£ndCڋÁ +() + +385 ià(! +$this +-> +h—d”OÆy +) + +387 +·»Á +:: + `£ndCڋÁ +(); + +389 + } +} + +394 +public + +funùiÚ + + $£nd +() + +396 +$this +-> + `£ndH‰pH—d”s +(); + +397 +$this +-> + `£ndCڋÁ +(); + +398 + } +} + +407 +´Ùeùed + +funùiÚ + + $nÜm®izeH—d”Name +( +$Çme +) + +409  + `´eg_»¶aû +('/\-(.)/e', "'-'.¡¹ouµ”('\\1')", + `¡¹r +( + `ucfœ¡ +( + `¡¹Þow” +( +$Çme +)), '_', '-')); + +410 + } +} + +420  +public + +funùiÚ + +g‘D©e +( +$time¡amp +, +$ty³ + = 'rfc1123') + +422 +$ty³ + = +¡¹Þow” +($type); + +424 ià( + g$ty³ + == 'rfc1123') + +426  +sub¡r +( +gmd©e +('r', +$time¡amp +), 0, -5).'GMT'; + +428 ià( + g$ty³ + == 'rfc1036') + +430  +gmd©e +('l, d-M-y H:i: ', +$time¡amp +).'GMT'; + +432 ià( + g$ty³ + == 'asctime') + +434  +gmd©e +('D M j H:i:s', +$time¡amp +); + +438 +throw + +Ãw + +Inv®idArgum’tExû±iÚ +('The second getDate() method…arameter must be one of:„fc1123,„fc1036 or‡sctime.'); + +447 +public + +funùiÚ + + $addV¬yH‰pH—d” +( +$h—d” +) + +449 +$v¬y + = +$this +-> + `g‘H‰pH—d” +('Vary'); + +450 +$cu¼’tH—d”s + = + `¬¿y +(); + +451 ià( +$v¬y +) + +453 +$cu¼’tH—d”s + = + `´eg_¥l™ +('/\s*,\s*/', +$v¬y +); + +455 +$h—d” + = +$this +-> + `nÜm®izeH—d”Name +($header); + +457 ià(! + `š_¬¿y +( +$h—d” +, +$cu¼’tH—d”s +)) + +459 +$cu¼’tH—d”s +[] = +$h—d” +; + +460 +$this +-> + `£tH‰pH—d” +('V¬y', + `im¶ode +(', ', +$cu¼’tH—d”s +)); + +462 + } +} + +470 +public + +funùiÚ + + $addCacheCڌÞH‰pH—d” +( +$Çme +, +$v®ue + = +nuÎ +) + +472 +$ÿcheCÚŒÞ + = +$this +-> + `g‘H‰pH—d” +('Cache-Control'); + +473 +$cu¼’tH—d”s + = + `¬¿y +(); + +474 ià( +$ÿcheCÚŒÞ +) + +476 + `fܗch + ( + `´eg_¥l™ +('/\s*,\s*/', +$ÿcheCÚŒÞ +è +as + +$tmp +) + +478 +$tmp + = + `ex¶ode +('=', $tmp); + +479 +$cu¼’tH—d”s +[ +$tmp +[0]] = + `is£t +($tmp[1]è? $tmp[1] : +nuÎ +; + +482 +$cu¼’tH—d”s +[ + `¡¹r +( + `¡¹Þow” +( +$Çme +), '_', '-')] = +$v®ue +; + +484 +$h—d”s + = + `¬¿y +(); + +485 + `fܗch + ( +$cu¼’tH—d”s + +as + +$key + => +$v®ue +) + +487 +$h—d”s +[] = +$key +.( +nuÎ + !=ð +$v®ue + ? '='.$value : ''); + +490 +$this +-> + `£tH‰pH—d” +('Cache-CڌÞ', + `im¶ode +(', ', +$h—d”s +)); + +491 + } +} + +498 +public + +funùiÚ + + $g‘H‰pM‘as +() + +500  +$this +-> +h‰pM‘as +; + +501 + } +} + +510 +public + +funùiÚ + + $addH‰pM‘a +( +$key +, +$v®ue +, +$»¶aû + = +Œue +) + +512 +$key + = +$this +-> + `nÜm®izeH—d”Name +($key); + +515 +$this +-> + `£tH‰pH—d” +( +$key +, +$v®ue +, +$»¶aû +); + +517 ià( +nuÎ + ==ð +$v®ue +) + +519 + `un£t +( +$this +-> +h‰pM‘as +[ +$key +]); + +524 ià('CڋÁ-Ty³' =ð +$key +) + +526 +$v®ue + = +$this +-> + `g‘CڋÁTy³ +(); + +528 + `–£if + (! +$»¶aû +) + +530 +$cu¼’t + = + `is£t +( +$this +-> +h‰pM‘as +[ +$key +]) ? $this->httpMetas[$key] : ''; + +531 +$v®ue + = ( +$cu¼’t + ? $current.', ' : '').$value; + +534 +$this +-> +h‰pM‘as +[ +$key +] = +$v®ue +; + +535 + } +} + +542 +public + +funùiÚ + + $g‘M‘as +() + +544  +$this +-> +m‘as +; + +545 + } +} + +555 +public + +funùiÚ + + $addM‘a +( +$key +, +$v®ue +, +$»¶aû + = +Œue +, +$esÿ³ + =rue) + +557 +$key + = + `¡¹Þow” +($key); + +559 ià( +nuÎ + ==ð +$v®ue +) + +561 + `un£t +( +$this +-> +m‘as +[ +$key +]); + +568 ià( +$esÿ³ +) + +570 +$v®ue + = + `html¥ecŸlch¬s +($v®ue, +ENT_QUOTES +, +$this +-> +ÝtiÚs +['charset']); + +573 +$cu¼’t + = + `is£t +( +$this +-> +m‘as +[ +$key +]è? $this->m‘as[$key] : +nuÎ +; + +574 ià( +$»¶aû + || ! +$cu¼’t +) + +576 +$this +-> +m‘as +[ +$key +] = +$v®ue +; + +578 + } +} + +585 +public + +funùiÚ + + $g‘T™Ë +() + +587  + `is£t +( +$this +-> +m‘as +['title']) ? $this->metas['title'] : ''; + +588 + } +} + +596 +public + +funùiÚ + + $£tT™Ë +( +$t™Ë +, +$esÿ³ + = +Œue +) + +598 +$this +-> + `addM‘a +('t™Ë', +$t™Ë +, +Œue +, +$esÿ³ +); + +599 + } +} + +606 +public + +funùiÚ + + $g‘Pos™iÚs +() + +608  +$this +-> +pos™iÚs +; + +609 + } +} + +621 +public + +funùiÚ + +g‘StyËsh“ts +( +$pos™iÚ + = +£lf +:: +ALL +) + +623 ià( +£lf +:: +ALL + ==ð +$pos™iÚ +) + +625 +$¡yËsh“ts + = +¬¿y +(); + +626 +fܗch + ( +$this +-> +g‘Pos™iÚs +(è +as + +$pos™iÚ +) + +628 +fܗch + ( +$this +-> +¡yËsh“ts +[ +$pos™iÚ +] +as + +$fže + => +$ÝtiÚs +) + +630 +$¡yËsh“ts +[ +$fže +] = +$ÝtiÚs +; + +634  + g$¡yËsh“ts +; + +636 ià( + g£lf +:: +RAW + ==ð +$pos™iÚ +) + +638  +$this +-> +¡yËsh“ts +; + +641 + g$this +-> +v®id©ePos™iÚ +( +$pos™iÚ +); + +643  + g$this +-> + g¡yËsh“ts +[ +$pos™iÚ +]; + +653 +public + +funùiÚ + +addStyËsh“t +( +$fže +, +$pos™iÚ + = '', +$ÝtiÚs + = + $¬¿y +()) + +655 +$this +-> + `v®id©ePos™iÚ +( +$pos™iÚ +); + +657 +$this +-> +¡yËsh“ts +[ +$pos™iÚ +][ +$fže +] = +$ÝtiÚs +; + +658 + } +} + +665 +public + +funùiÚ + + $»moveStyËsh“t +( +$fže +) + +667 + `fܗch + ( +$this +-> + `g‘Pos™iÚs +(è +as + +$pos™iÚ +) + +669 + `un£t +( +$this +-> +¡yËsh“ts +[ +$pos™iÚ +][ +$fže +]); + +671 + } +} + +683 +public + +funùiÚ + +g‘Javasüts +( +$pos™iÚ + = +£lf +:: +ALL +) + +685 ià( +£lf +:: +ALL + ==ð +$pos™iÚ +) + +687 +$javasüts + = +¬¿y +(); + +688 +fܗch + ( +$this +-> +g‘Pos™iÚs +(è +as + +$pos™iÚ +) + +690 +fܗch + ( +$this +-> +javasüts +[ +$pos™iÚ +] +as + +$fže + => +$ÝtiÚs +) + +692 +$javasüts +[ +$fže +] = +$ÝtiÚs +; + +696  + g$javasüts +; + +698 ià( + g£lf +:: +RAW + ==ð +$pos™iÚ +) + +700  +$this +-> +javasüts +; + +703 + g$this +-> +v®id©ePos™iÚ +( +$pos™iÚ +); + +705  + g$this +-> + gjavasüts +[ +$pos™iÚ +]; + +715 +public + +funùiÚ + +addJavasüt +( +$fže +, +$pos™iÚ + = '', +$ÝtiÚs + = + $¬¿y +()) + +717 +$this +-> + `v®id©ePos™iÚ +( +$pos™iÚ +); + +719 +$this +-> +javasüts +[ +$pos™iÚ +][ +$fže +] = +$ÝtiÚs +; + +720 + } +} + +727 +public + +funùiÚ + + $»moveJavasüt +( +$fže +) + +729 + `fܗch + ( +$this +-> + `g‘Pos™iÚs +(è +as + +$pos™iÚ +) + +731 + `un£t +( +$this +-> +javasüts +[ +$pos™iÚ +][ +$fže +]); + +733 + } +} + +740 +public + +funùiÚ + + $g‘SlÙs +() + +742  +$this +-> +¦Ùs +; + +743 + } +} + +751 +public + +funùiÚ + + $£tSlÙ +( +$Çme +, +$cڋÁ +) + +753 +$this +-> +¦Ùs +[ +$Çme +] = +$cڋÁ +; + +754 + } +} + +761 +public + +funùiÚ + + $g‘Cook›s +() + +763  +$this +-> +cook›s +; + +764 + } +} + +771 +public + +funùiÚ + + $g‘H‰pH—d”s +() + +773  +$this +-> +h—d”s +; + +774 + } +} + +779 +public + +funùiÚ + + $þ—rH‰pH—d”s +() + +781 +$this +-> +h—d”s + = + `¬¿y +(); + +782 + } +} + +789 +public + +funùiÚ + + $cÝyPrݔt›s +( +sfWebRe¥Ú£ + +$»¥Ú£ +) + +791 +$this +-> +ÝtiÚs + = +$»¥Ú£ +-> + `g‘O±iÚs +(); + +792 +$this +-> +h—d”s + = +$»¥Ú£ +-> + `g‘H‰pH—d”s +(); + +793 +$this +-> +m‘as + = +$»¥Ú£ +-> + `g‘M‘as +(); + +794 +$this +-> +h‰pM‘as + = +$»¥Ú£ +-> + `g‘H‰pM‘as +(); + +795 +$this +-> +¡yËsh“ts + = +$»¥Ú£ +-> + `g‘StyËsh“ts +( +£lf +:: +RAW +); + +796 +$this +-> +javasüts + = +$»¥Ú£ +-> + `g‘Javasüts +( +£lf +:: +RAW +); + +797 +$this +-> +¦Ùs + = +$»¥Ú£ +-> + `g‘SlÙs +(); + +801 +$this +-> +ÝtiÚs +['h‰p_´ÙocÞ'] = + `is£t +( +$_SERVER +['SERVER_PROTOCOL']) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0'; + +802 + } +} + +809 +public + +funùiÚ + + $m”ge +( +sfWebRe¥Ú£ + +$»¥Ú£ +) + +811 + `fܗch + ( +$this +-> + `g‘Pos™iÚs +(è +as + +$pos™iÚ +) + +813 +$this +-> +javasüts +[ +$pos™iÚ +] = + `¬¿y_m”ge +($this-> + `g‘Javasüts +($pos™iÚ), +$»¥Ú£ +->getJavascripts($position)); + +814 +$this +-> +¡yËsh“ts +[ +$pos™iÚ +] = + `¬¿y_m”ge +($this-> + `g‘StyËsh“ts +($pos™iÚ), +$»¥Ú£ +->getStylesheets($position)); + +817 +$this +-> +¦Ùs + = + `¬¿y_m”ge +($this-> + `g‘SlÙs +(), +$»¥Ú£ +->getSlots()); + +818 + } +} + +823 +public + +funùiÚ + + $£rŸlize +() + +825  + `£rŸlize +( + `¬¿y +( +$this +-> +cڋÁ +, $this-> +¡©usCode +, $this-> +¡©usText +, $this-> +ÝtiÚs +, $this-> +h—d”OÆy +, $this-> +h—d”s +, $this-> +m‘as +, $this-> +h‰pM‘as +, $this-> +¡yËsh“ts +, $this-> +javasüts +, $this-> +¦Ùs +)); + +826 + } +} + +831 +public + +funùiÚ + + $un£rŸlize +( +$£rŸlized +) + +833 + `li¡ +( +$this +-> +cڋÁ +, $this-> +¡©usCode +, $this-> +¡©usText +, $this-> +ÝtiÚs +, $this-> +h—d”OÆy +, $this-> +h—d”s +, $this-> +m‘as +, $this-> +h‰pM‘as +, $this-> +¡yËsh“ts +, $this-> +javasüts +, $this-> +¦Ùs +èð + `un£rŸlize +( +$£rŸlized +); + +834 + } +} + +843 +´Ùeùed + +funùiÚ + + $v®id©ePos™iÚ +( +$pos™iÚ +) + +845 ià(! + `š_¬¿y +( +$pos™iÚ +, +$this +-> +pos™iÚs +, +Œue +)) + +847 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('Thpos™iÚ "%s" dÛ nكxi¡ (avažab˅os™iÚs: %s).', +$pos™iÚ +, + `im¶ode +(', ', +$this +-> +pos™iÚs +))); + +849 + } +} + +858 +´Ùeùed + +funùiÚ + + $fixCڋÁTy³ +( +$cڋÁTy³ +) + +861 ià( +çl£ + ==ð + `¡ros +( +$cڋÁTy³ +, 'ch¬£t'è&& (0 ==ð¡ros($cڋÁTy³, '‹xt/'è|| + `¡¾’ +($cڋÁTy³è- 3 ==ð + `¡¼os +($contentType, 'xml'))) + +863 +$cڋÁTy³ + .ð'; ch¬£t='. +$this +-> +ÝtiÚs +['charset']; + +867 ià( + `´eg_m©ch +('/ch¬£t\s*=\s*(.+)\s*$/', +$cڋÁTy³ +, +$m©ch +)) + +869 +$this +-> +ÝtiÚs +['ch¬£t'] = +$m©ch +[1]; + +872  +$cڋÁTy³ +; + +873 + } +} + + @lib/vendor/symfony/lib/routing/sfObjectRoute.class.php + +1 +ÝtiÚs +['ty³'] ? $this-> + `cÚv”tObjeùToA¼ay +( +$·¿ms +) : $params); + +68 + } +} + +79 +public + +funùiÚ + +g’”©e +( +$·¿ms +, +$cڋxt + = +¬¿y +(), +$absÞu‹ + = +çl£ +) + +81  +·»Á +:: +g’”©e +('objeù' =ð +$this +-> +ÝtiÚs +['ty³'] ? $this-> +cÚv”tObjeùToA¼ay +( +$·¿ms +è: $·¿ms, +$cڋxt +, +$absÞu‹ +); + +91 +public + +funùiÚ + + $g‘Objeù +() + +93 ià(! +$this +-> + `isBound +()) + +95 +throw + +Ãw + + `LogicExû±iÚ +('The„oute is‚ot bound.'); + +98 ià('objeù' !ð +$this +-> +ÝtiÚs +['type']) + +100 +throw + +Ãw + + `LogicExû±iÚ +( + `¥rštf +('Throu‹ "%s" i nÙ oàty³ "objeù".', +$this +-> +·‰”n +)); + +103 ià( +çl£ + !=ð +$this +-> +objeù +) + +105  +$this +-> +objeù +; + +109 ià(!( +$this +-> +objeù + = $this-> + `g‘ObjeùFÜP¬am‘”s +($this-> +·¿m‘”s +)è&& (! + `is£t +($this-> +ÝtiÚs +['allow_empty']) || !$this->options['allow_empty'])) + +111 +throw + +Ãw + + `sfE¼Ü404Exû±iÚ +( + `¥rštf +('UÇbˁØfšdh% objeù w™hhfÞlowšg…¬am‘” "%s").', +$this +-> +ÝtiÚs +['mod–'], + `¡r_»¶aû +("\n", '', + `v¬_expÜt +($this-> + `fž‹rP¬am‘”s +($this-> +·¿m‘”s +), +Œue +)))); + +114  +$this +-> +objeù +; + +115 + } +} + +124 +public + +funùiÚ + + $g‘Objeùs +() + +126 ià(! +$this +-> + `isBound +()) + +128 +throw + +Ãw + + `LogicExû±iÚ +('The„oute is‚ot bound.'); + +131 ià('li¡' !ð +$this +-> +ÝtiÚs +['type']) + +133 +throw + +Ãw + + `LogicExû±iÚ +( + `¥rštf +('Throu‹ "%s" i nÙ oàty³ "li¡".', +$this +-> +·‰”n +)); + +136 ià( +çl£ + !=ð +$this +-> +objeùs +) + +138  +$this +-> +objeùs +; + +141 +$this +-> +objeùs + = $this-> + `g‘ObjeùsFÜP¬am‘”s +($this-> +·¿m‘”s +); + +143 ià(! + `couÁ +( +$this +-> +objeùs +è&& + `is£t +($this-> +ÝtiÚs +['allow_empty']) && !$this->options['allow_empty']) + +145 +throw + +Ãw + + `sfE¼Ü404Exû±iÚ +( + `¥rštf +('NØ% objeù found f܁hfÞlowšg…¬am‘” "%s").', +$this +-> +ÝtiÚs +['mod–'], + `¡r_»¶aû +("\n", '', + `v¬_expÜt +($this-> + `fž‹rP¬am‘”s +($this-> +·¿m‘”s +), +Œue +)))); + +148  +$this +-> +objeùs +; + +149 + } +} + +151 +´Ùeùed + +funùiÚ + + $g‘ObjeùFÜP¬am‘”s +( +$·¿m‘”s +) + +153 +$þassName + = +$this +-> +ÝtiÚs +['model']; + +155 ià(! + `is£t +( +$this +-> +ÝtiÚs +['method'])) + +157 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('You mu¡…as ¨"m‘hod" o±iÚ f܇ % objeù.', + `g‘_þass +( +$this +))); + +160  + `ÿÎ_u£r_func +( + `¬¿y +( +$þassName +, +$this +-> +ÝtiÚs +['m‘hod']), $this-> + `fž‹rP¬am‘”s +( +$·¿m‘”s +)); + +161 + } +} + +163 +´Ùeùed + +funùiÚ + + $g‘ObjeùsFÜP¬am‘”s +( +$·¿m‘”s +) + +165 +$þassName + = +$this +-> +ÝtiÚs +['model']; + +167 ià(! + `is£t +( +$this +-> +ÝtiÚs +['method'])) + +169 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('You mu¡…as ¨"m‘hod" o±iÚ f܇ % objeù.', + `g‘_þass +( +$this +))); + +172  + `ÿÎ_u£r_func +( + `¬¿y +( +$þassName +, +$this +-> +ÝtiÚs +['m‘hod']), $this-> + `fž‹rP¬am‘”s +( +$·¿m‘”s +)); + +173 + } +} + +175 +´Ùeùed + +funùiÚ + + $fž‹rP¬am‘”s +( +$·¿m‘”s +) + +177 ià(! + `is_¬¿y +( +$·¿m‘”s +)) + +179  +$·¿m‘”s +; + +182 +$·¿ms + = + `¬¿y +(); + +183 + `fܗch + ( + `¬¿y_keys +( +$this +-> +v¬ŸbËs +è +as + +$v¬ŸbË +) + +185 +$·¿ms +[ +$v¬ŸbË +] = +$·¿m‘”s +[$variable]; + +188  +$·¿ms +; + +189 + } +} + +191 +´Ùeùed + +funùiÚ + + $cÚv”tObjeùToA¼ay +( +$objeù +) + +193 ià(! +$this +-> +compžed +) + +195 +$this +-> + `compže +(); + +198 ià( + `is_¬¿y +( +$objeù +)) + +200 ià(! + `is£t +( +$objeù +['sf_subject'])) + +202  +$objeù +; + +205 +$·¿m‘”s + = +$objeù +; + +206 +$objeù + = +$·¿m‘”s +['sf_subject']; + +207 + `un£t +( +$·¿m‘”s +['sf_subject']); + +211 +$·¿m‘”s + = + `¬¿y +(); + +214  + `¬¿y_m”ge +( +$·¿m‘”s +, +$this +-> + `doCÚv”tObjeùToA¼ay +( +$objeù +)); + +215 + } +} + +217 +´Ùeùed + +funùiÚ + + $doCÚv”tObjeùToA¼ay +( +$objeù +) + +219 +$m‘hod + = + `is£t +( +$this +-> +ÝtiÚs +['convert']) ? $this->options['convert'] : 'toParams'; + +221  +$objeù +-> + `$m‘hod +(); + +222 + } +} + +224 +´Ùeùed + +funùiÚ + + $g‘R—lV¬ŸbËs +() + +226 +$v¬ŸbËs + = + `¬¿y +(); + +228 + `fܗch + ( + `¬¿y_keys +( +$this +-> +v¬ŸbËs +è +as + +$v¬ŸbË +) + +230 ià(0 ==ð + `¡½os +( +$v¬ŸbË +, 'sf_'è|| + `š_¬¿y +($v¬ŸbË, + `¬¿y +('module', 'action'))) + +235 +$v¬ŸbËs +[] = +$v¬ŸbË +; + +238  +$v¬ŸbËs +; + +239 + } +} + + @lib/vendor/symfony/lib/routing/sfObjectRouteCollection.class.php + +1 +ÝtiÚs +['model'])) + +35 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('You mu¡…as ¨"mod–" o±iځØ% ("%s"„ou‹)', + `g‘_þass +( +$this +), $this-> +ÝtiÚs +['name'])); + +38 +$this +-> +ÝtiÚs + = + `¬¿y_m”ge +( + `¬¿y +( + +39 'aùiÚs' => +çl£ +, + +40 'moduË' => +$this +-> +ÝtiÚs +['name'], + +41 '´efix_·th' => '/'. +$this +-> +ÝtiÚs +['name'], + +42 'cÞumn' => + `is£t +( +$this +-> +ÝtiÚs +['column']) ? $this->options['column'] : 'id', + +43 'w™h_show' => +Œue +, + +44 '£gm’t_Çmes' => + `¬¿y +('edit' => 'edit', 'new' => 'new'), + +45 'mod–_m‘hods' => + `¬¿y +(), + +46 '»quœem’ts' => + `¬¿y +(), + +47 'w™h_wždÿrd_rou‹s' => +çl£ +, + +48 'deçuÉ_·¿ms' => + `¬¿y +(), + +49 ), +$this +-> +ÝtiÚs +); + +51 +$this +-> +ÝtiÚs +['»quœem’ts'] = + `¬¿y_m”ge +( + `¬¿y +($this->ÝtiÚs['cÞumn'] => 'id' =ð$this->ÝtiÚs['cÞumn'] ? '\d+' : +nuÎ +), $this->options['requirements']); + +52 +$this +-> +ÝtiÚs +['mod–_m‘hods'] = + `¬¿y_m”ge +( + `¬¿y +('li¡' => +nuÎ +, 'object' =>‚ull), $this->options['model_methods']); + +54 ià( + `is£t +( +$this +-> +ÝtiÚs +['route_class'])) + +56 +$this +-> +rou‹CÏss + = $this-> +ÝtiÚs +['route_class']; + +59 +$this +-> + `g’”©eRou‹s +(); + +62 +´Ùeùed + +funùiÚ + + $g’”©eRou‹s +() + +65 ià( + `is£t +( +$this +-> +ÝtiÚs +['collection_actions'])) + +67 + `fܗch + ( +$this +-> +ÝtiÚs +['cÞËùiÚ_aùiÚs'] +as + +$aùiÚ + => +$m‘hods +) + +69 +$this +-> +rou‹s +[$this-> + `g‘Rou‹ +( +$aùiÚ +)] = $this-> + `g‘Rou‹FÜCÞËùiÚ +($aùiÚ, +$m‘hods +); + +74 +$aùiÚs + = +çl£ + ==ð +$this +-> +ÝtiÚs +['aùiÚs'] ? $this-> + `g‘DeçuÉAùiÚs +() : $this->options['actions']; + +75 + `fܗch + ( +$aùiÚs + +as + +$aùiÚ +) + +77 +$m‘hod + = 'g‘Rou‹FÜ'. + `ucfœ¡ +( +$aùiÚ +); + +78 ià(! + `m‘hod_exi¡s +( +$this +, +$m‘hod +)) + +80 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('UÇbˁØg’”©¨rou‹ f܁h"%s"‡ùiÚ.', +$aùiÚ +)); + +83 +$this +-> +rou‹s +[$this-> + `g‘Rou‹ +( +$aùiÚ +)] = $this-> + `$m‘hod +(); + +87 ià( + `is£t +( +$this +-> +ÝtiÚs +['object_actions'])) + +89 + `fܗch + ( +$this +-> +ÝtiÚs +['objeù_aùiÚs'] +as + +$aùiÚ + => +$m‘hods +) + +91 +$this +-> +rou‹s +[$this-> + `g‘Rou‹ +( +$aùiÚ +)] = $this-> + `g‘Rou‹FÜObjeù +($aùiÚ, +$m‘hods +); + +95 ià( +$this +-> +ÝtiÚs +['with_wildcard_routes']) + +98 +$this +-> +rou‹s +[$this-> + `g‘Rou‹ +('objeù')] = +Ãw + $this-> + `rou‹CÏss +( + +99 + `¥rštf +('%s/:%s/:aùiÚ.:sf_fÜm©', +$this +-> +ÝtiÚs +['prefix_path'], $this->options['column']), + +100 + `¬¿y_m”ge +( + `¬¿y +('moduË' => +$this +-> +ÝtiÚs +['module'], 'sf_format' => 'html'), $this->options['default_params']), + +101 + `¬¿y_m”ge +( +$this +-> +ÝtiÚs +['»quœem’ts'], + `¬¿y +('sf_method' =>‡rray('get', 'head'))), + +102 + `¬¿y +('mod–' => +$this +-> +ÝtiÚs +['model'], 'type' => 'object', 'method' => $this->options['model_methods']['object']) + +106 +$this +-> +rou‹s +[$this-> + `g‘Rou‹ +('cÞËùiÚ')] = +Ãw + $this-> + `rou‹CÏss +( + +107 + `¥rštf +('%s/:aùiÚ/aùiÚ.:sf_fÜm©', +$this +-> +ÝtiÚs +['prefix_path']), + +108 + `¬¿y_m”ge +( + `¬¿y +('moduË' => +$this +-> +ÝtiÚs +['module'], 'sf_format' => 'html'), $this->options['default_params']), + +109 + `¬¿y_m”ge +( +$this +-> +ÝtiÚs +['»quœem’ts'], + `¬¿y +('sf_method' => 'post')), + +110 + `¬¿y +('mod–' => +$this +-> +ÝtiÚs +['model'], 'type' => 'list', 'method' => $this->options['model_methods']['list']) + +113 + } +} + +115 +´Ùeùed + +funùiÚ + + $g‘Rou‹FÜCÞËùiÚ +( +$aùiÚ +, +$m‘hods +) + +117  +Ãw + +$this +-> + `rou‹CÏss +( + +118 + `¥rštf +('%s/%s.:sf_fÜm©', +$this +-> +ÝtiÚs +['´efix_·th'], +$aùiÚ +), + +119 + `¬¿y_m”ge +( + `¬¿y +('moduË' => +$this +-> +ÝtiÚs +['moduË'], 'aùiÚ' => +$aùiÚ +, 'sf_format' => 'html'), $this->options['default_params']), + +120 + `¬¿y_m”ge +( +$this +-> +ÝtiÚs +['»quœem’ts'], + `¬¿y +('sf_m‘hod' => +$m‘hods +)), + +121 + `¬¿y +('mod–' => +$this +-> +ÝtiÚs +['model'], 'type' => 'list', 'method' => $this->options['model_methods']['list']) + +123 + } +} + +125 +´Ùeùed + +funùiÚ + + $g‘Rou‹FÜObjeù +( +$aùiÚ +, +$m‘hods +) + +127  +Ãw + +$this +-> + `rou‹CÏss +( + +128 + `¥rštf +('%s/:%s/%s.:sf_fÜm©', +$this +-> +ÝtiÚs +['´efix_·th'], $this->ÝtiÚs['cÞumn'], +$aùiÚ +), + +129 + `¬¿y_m”ge +( + `¬¿y +('moduË' => +$this +-> +ÝtiÚs +['moduË'], 'aùiÚ' => +$aùiÚ +, 'sf_format' => 'html'), $this->options['default_params']), + +130 + `¬¿y_m”ge +( +$this +-> +ÝtiÚs +['»quœem’ts'], + `¬¿y +('sf_m‘hod' => +$m‘hods +)), + +131 + `¬¿y +('mod–' => +$this +-> +ÝtiÚs +['model'], 'type' => 'object', 'method' => $this->options['model_methods']['object']) + +133 + } +} + +135 +´Ùeùed + +funùiÚ + + $g‘Rou‹FÜLi¡ +() + +137  +Ãw + +$this +-> + `rou‹CÏss +( + +138 + `¥rštf +('%s.:sf_fÜm©', +$this +-> +ÝtiÚs +['prefix_path']), + +139 + `¬¿y_m”ge +( + `¬¿y +('moduË' => +$this +-> +ÝtiÚs +['moduË'], 'aùiÚ' => $this-> + `g‘AùiÚM‘hod +('list'), 'sf_format' => 'html'), $this->options['default_params']), + +140 + `¬¿y_m”ge +( +$this +-> +ÝtiÚs +['»quœem’ts'], + `¬¿y +('sf_method' =>‡rray('get', 'head'))), + +141 + `¬¿y +('mod–' => +$this +-> +ÝtiÚs +['model'], 'type' => 'list', 'method' => $this->options['model_methods']['list']) + +143 + } +} + +145 +´Ùeùed + +funùiÚ + + $g‘Rou‹FÜNew +() + +147  +Ãw + +$this +-> + `rou‹CÏss +( + +148 + `¥rštf +('%s/%s.:sf_fÜm©', +$this +-> +ÝtiÚs +['prefix_path'], $this->options['segment_names']['new']), + +149 + `¬¿y_m”ge +( + `¬¿y +('moduË' => +$this +-> +ÝtiÚs +['moduË'], 'aùiÚ' => $this-> + `g‘AùiÚM‘hod +('new'), 'sf_format' => 'html'), $this->options['default_params']), + +150 + `¬¿y_m”ge +( +$this +-> +ÝtiÚs +['»quœem’ts'], + `¬¿y +('sf_method' =>‡rray('get', 'head'))), + +151 + `¬¿y +('mod–' => +$this +-> +ÝtiÚs +['model'], 'type' => 'object') + +153 + } +} + +155 +´Ùeùed + +funùiÚ + + $g‘Rou‹FÜC»©e +() + +157  +Ãw + +$this +-> + `rou‹CÏss +( + +158 + `¥rštf +('%s.:sf_fÜm©', +$this +-> +ÝtiÚs +['prefix_path']), + +159 + `¬¿y_m”ge +( + `¬¿y +('moduË' => +$this +-> +ÝtiÚs +['moduË'], 'aùiÚ' => $this-> + `g‘AùiÚM‘hod +('create'), 'sf_format' => 'html'), $this->options['default_params']), + +160 + `¬¿y_m”ge +( +$this +-> +ÝtiÚs +['»quœem’ts'], + `¬¿y +('sf_method' => 'post')), + +161 + `¬¿y +('mod–' => +$this +-> +ÝtiÚs +['model'], 'type' => 'object') + +163 + } +} + +165 +´Ùeùed + +funùiÚ + + $g‘Rou‹FÜShow +() + +167  +Ãw + +$this +-> + `rou‹CÏss +( + +168 + `¥rštf +('%s/:%s.:sf_fÜm©', +$this +-> +ÝtiÚs +['prefix_path'], $this->options['column']), + +169 + `¬¿y_m”ge +( + `¬¿y +('moduË' => +$this +-> +ÝtiÚs +['moduË'], 'aùiÚ' => $this-> + `g‘AùiÚM‘hod +('show'), 'sf_format' => 'html'), $this->options['default_params']), + +170 + `¬¿y_m”ge +( +$this +-> +ÝtiÚs +['»quœem’ts'], + `¬¿y +('sf_method' =>‡rray('get', 'head'))), + +171 + `¬¿y +('mod–' => +$this +-> +ÝtiÚs +['model'], 'type' => 'object', 'method' => $this->options['model_methods']['object']) + +173 + } +} + +175 +´Ùeùed + +funùiÚ + + $g‘Rou‹FÜEd™ +() + +177  +Ãw + +$this +-> + `rou‹CÏss +( + +178 + `¥rštf +('%s/:%s/%s.:sf_fÜm©', +$this +-> +ÝtiÚs +['prefix_path'], $this->options['column'], $this->options['segment_names']['edit']), + +179 + `¬¿y_m”ge +( + `¬¿y +('moduË' => +$this +-> +ÝtiÚs +['moduË'], 'aùiÚ' => $this-> + `g‘AùiÚM‘hod +('edit'), 'sf_format' => 'html'), $this->options['default_params']), + +180 + `¬¿y_m”ge +( +$this +-> +ÝtiÚs +['»quœem’ts'], + `¬¿y +('sf_method' =>‡rray('get', 'head'))), + +181 + `¬¿y +('mod–' => +$this +-> +ÝtiÚs +['model'], 'type' => 'object', 'method' => $this->options['model_methods']['object']) + +183 + } +} + +185 +´Ùeùed + +funùiÚ + + $g‘Rou‹FÜUpd©e +() + +187  +Ãw + +$this +-> + `rou‹CÏss +( + +188 + `¥rštf +('%s/:%s.:sf_fÜm©', +$this +-> +ÝtiÚs +['prefix_path'], $this->options['column']), + +189 + `¬¿y_m”ge +( + `¬¿y +('moduË' => +$this +-> +ÝtiÚs +['moduË'], 'aùiÚ' => $this-> + `g‘AùiÚM‘hod +('update'), 'sf_format' => 'html'), $this->options['default_params']), + +190 + `¬¿y_m”ge +( +$this +-> +ÝtiÚs +['»quœem’ts'], + `¬¿y +('sf_method' => 'put')), + +191 + `¬¿y +('mod–' => +$this +-> +ÝtiÚs +['model'], 'type' => 'object', 'method' => $this->options['model_methods']['object']) + +193 + } +} + +195 +´Ùeùed + +funùiÚ + + $g‘Rou‹FÜD–‘e +() + +197  +Ãw + +$this +-> + `rou‹CÏss +( + +198 + `¥rštf +('%s/:%s.:sf_fÜm©', +$this +-> +ÝtiÚs +['prefix_path'], $this->options['column']), + +199 + `¬¿y_m”ge +( + `¬¿y +('moduË' => +$this +-> +ÝtiÚs +['moduË'], 'aùiÚ' => $this-> + `g‘AùiÚM‘hod +('delete'), 'sf_format' => 'html'), $this->options['default_params']), + +200 + `¬¿y_m”ge +( +$this +-> +ÝtiÚs +['»quœem’ts'], + `¬¿y +('sf_method' => 'delete')), + +201 + `¬¿y +('mod–' => +$this +-> +ÝtiÚs +['model'], 'type' => 'object', 'method' => $this->options['model_methods']['object']) + +203 + } +} + +205 +´Ùeùed + +funùiÚ + + $g‘DeçuÉAùiÚs +() + +207 +$aùiÚs + = + `¬¿y +('list', 'new', 'create', 'edit', 'update', 'delete'); + +209 ià( +$this +-> +ÝtiÚs +['with_show']) + +211 +$aùiÚs +[] = 'show'; + +214  +$aùiÚs +; + +215 + } +} + +217 +´Ùeùed + +funùiÚ + + $g‘Rou‹ +( +$aùiÚ +) + +219  'li¡' =ð +$aùiÚ + ? +$this +-> +ÝtiÚs +['name'] : $this->options['name'].'_'.$action; + +220 + } +} + +222 +´Ùeùed + +funùiÚ + + $g‘AùiÚM‘hod +( +$aùiÚ +) + +224  'li¡' =ð +$aùiÚ + ? 'index' : $action; + +225 + } +} + + @lib/vendor/symfony/lib/routing/sfPatternRouting.class.php + +1 + `¬¿y +(':'), + +52 '£gm’t_£·¿tÜs' => + `¬¿y +('/', '.'), + +54 'lßd_cÚfigu¿tiÚ' => +çl£ +, + +56 'g’”©e_sh܋¡_u¾' => +Œue +, + +57 'exŒa_·¿m‘”s_as_qu”y_¡ršg' => +Œue +, + +58 'lookup_ÿche_dediÿ‹d_keys' => +çl£ +, + +59 ), +$ÝtiÚs +); + +62 ià('.' =ð +$ÝtiÚs +['suffix']) + +64 +$ÝtiÚs +['suffix'] = ''; + +67 +·»Á +:: + `š™Ÿlize +( +$di¥©ch” +, +$ÿche +, +$ÝtiÚs +); + +69 ià( +nuÎ + !=ð +$this +-> +ÿche + && ! +$ÝtiÚs +['lookup_ÿche_dediÿ‹d_keys'] && +$ÿcheD©a + = $this->ÿche-> + `g‘ +('symfony.routing.data')) + +71 +$this +-> +ÿcheD©a + = + `un£rŸlize +( +$ÿcheD©a +); + +78 +public + +funùiÚ + + $lßdCÚfigu¿tiÚ +() + +80 ià( +$this +-> +ÝtiÚs +['lßd_cÚfigu¿tiÚ'] && +$cÚfig + = $this-> + `g‘CÚfigFž’ame +()) + +82 + `šþude +( +$cÚfig +); + +85 +·»Á +:: + `lßdCÚfigu¿tiÚ +(); + +86 + } +} + +92 +´Ùeùed + +funùiÚ + + $’su»DeçuÉP¬am‘”sA»S‘ +() + +94 ià( +$this +-> +deçuÉP¬amsDœty +) + +96 + `fܗch + ( +$this +-> +rou‹s + +as + +$rou‹ +) + +98 +$rou‹ +-> + `£tDeçuÉP¬am‘”s +( +$this +-> +deçuÉP¬am‘”s +); + +100 +$this +-> +deçuÉP¬amsDœty + = +çl£ +; + +102 + } +} + +107 +public + +funùiÚ + + $£tDeçuÉP¬am‘” +( +$key +, +$v®ue +) + +109 +·»Á +:: + `£tDeçuÉP¬am‘” +( +$key +, +$v®ue +); + +110 +$this +-> +deçuÉP¬amsDœty + = +Œue +; + +111 + } +} + +116 +public + +funùiÚ + + $£tDeçuÉP¬am‘”s +( +$·¿m‘”s +) + +118 +·»Á +:: + `£tDeçuÉP¬am‘”s +( +$·¿m‘”s +); + +119 +$this +-> +deçuÉP¬amsDœty + = +Œue +; + +120 + } +} + +122 +´Ùeùed + +funùiÚ + + $g‘CÚfigFžeName +() + +124  +sfCڋxt +:: + `g‘In¡ªû +()-> + `g‘CÚfigCache +()-> + `checkCÚfig +('cÚfig/routšg.yml', +Œue +); + +125 + } +} + +130 +public + +funùiÚ + + $g‘Cu¼’tIÁ”ÇlUri +( +$w™hRou‹Name + = +çl£ +) + +132  +nuÎ + ==ð +$this +-> +cu¼’tRou‹Name + ?‚uÎ : $this-> +cu¼’tIÁ”ÇlUri +[ +$w™hRou‹Name + ? 0 : 1]; + +133 + } +} + +140 +public + +funùiÚ + + $g‘Cu¼’tRou‹Name +() + +142  +$this +-> +cu¼’tRou‹Name +; + +143 + } +} + +148 +public + +funùiÚ + + $g‘Rou‹s +() + +150  +$this +-> +rou‹s +; + +151 + } +} + +156 +public + +funùiÚ + + $£tRou‹s +( +$rou‹s +) + +158 + `fܗch + ( +$rou‹s + +as + +$Çme + => +$rou‹ +) + +160 +$this +-> + `cÚÃù +( +$Çme +, +$rou‹ +); + +162 + } +} + +167 +public + +funùiÚ + + $hasRou‹s +() + +169  + `couÁ +( +$this +-> +rou‹s +è? +Œue + : +çl£ +; + +170 + } +} + +175 +public + +funùiÚ + + $þ—rRou‹s +() + +177 ià( +$this +-> +ÝtiÚs +['logging']) + +179 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, '­¶iÿtiÚ.log', + `¬¿y +('Clear‡ll current„outes'))); + +182 +$this +-> +rou‹s + = + `¬¿y +(); + +183 + } +} + +192 +public + +funùiÚ + + $hasRou‹Name +( +$Çme +) + +194  + `is£t +( +$this +-> +rou‹s +[ +$Çme +]è? +Œue + : +çl£ +; + +195 + } +} + +202 +public + +funùiÚ + + $´•’dRou‹ +( +$Çme +, +$rou‹ +) + +204 +$rou‹s + = +$this +-> +rou‹s +; + +205 +$this +-> +rou‹s + = + `¬¿y +(); + +206 +$this +-> + `cÚÃù +( +$Çme +, +$rou‹ +); + +207 +$this +-> +rou‹s + = + `¬¿y_m”ge +($this->rou‹s, +$rou‹s +); + +208 + } +} + +217 +public + +funùiÚ + + $­³ndRou‹ +( +$Çme +, +$rou‹ +) + +219  +$this +-> + `cÚÃù +( +$Çme +, +$rou‹ +); + +220 + } +} + +227 +public + +funùiÚ + + $š£¹Rou‹BefÜe +( +$pivÙ +, +$Çme +, +$rou‹ +) + +229 ià(! + `is£t +( +$this +-> +rou‹s +[ +$pivÙ +])) + +231 +throw + +Ãw + + `sfCÚfigu¿tiÚExû±iÚ +( + `¥rštf +('UÇbˁؚ£¹„ou‹ "%s" befܐšexi¡’ˆrou‹ "%s".', +$Çme +, +$pivÙ +)); + +234 +$rou‹s + = +$this +-> +rou‹s +; + +235 +$this +-> +rou‹s + = + `¬¿y +(); + +236 +$Ãwrou‹s + = + `¬¿y +(); + +237 + `fܗch + ( +$rou‹s + +as + +$key + => +$v®ue +) + +239 ià( +$key + =ð +$pivÙ +) + +241 +$this +-> + `cÚÃù +( +$Çme +, +$rou‹ +); + +242 +$Ãwrou‹s + = + `¬¿y_m”ge +($Ãwrou‹s, +$this +-> +rou‹s +); + +244 +$Ãwrou‹s +[ +$key +] = +$v®ue +; + +247 +$this +-> +rou‹s + = +$Ãwrou‹s +; + +248 + } +} + +268 +public + +funùiÚ + + $cÚÃù +( +$Çme +, +$rou‹ +) + +270 +$rou‹s + = +$rou‹ + +š¡ªûof + +sfRou‹CÞËùiÚ + ? $rou‹ : + `¬¿y +( +$Çme + => $route); + +271 + `fܗch + ( +£lf +:: + `橋nRou‹s +( +$rou‹s +è +as + +$Çme + => +$rou‹ +) + +273 +$this +-> +rou‹s +[ +$Çme +] = +$rou‹ +; + +274 +$this +-> + `cÚfigu»Rou‹ +( +$rou‹ +); + +276 ià( +$this +-> +ÝtiÚs +['logging']) + +278 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, '­¶iÿtiÚ.log', + `¬¿y +( + `¥rštf +('CÚÃù % "%s" (%s)', + `g‘_þass +( +$rou‹ +), +$Çme +, $rou‹-> + `g‘P©‹º +())))); + +281 + } +} + +283 +public + +funùiÚ + + $cÚfigu»Rou‹ +( +sfRou‹ + +$rou‹ +) + +285 +$rou‹ +-> + `£tDeçuÉP¬am‘”s +( +$this +-> +deçuÉP¬am‘”s +); + +286 +$rou‹ +-> + `£tDeçuÉO±iÚs +( +$this +-> +ÝtiÚs +); + +287 + } +} + +292 +public + +funùiÚ + +g’”©e +( +$Çme +, +$·¿ms + = +¬¿y +(), +$absÞu‹ + = +çl£ +) + +295 ià( +nuÎ + !=ð +$this +-> +ÿche +) + +297 +$ÿcheKey + = 'g’”©e_'. +$Çme +.'_'. +md5 +( +£rŸlize +( +¬¿y_m”ge +( +$this +-> +deçuÉP¬am‘”s +, +$·¿ms +))).'_'.md5(£rŸlize($this-> +ÝtiÚs +['context'])); + +298 ià( + g$this +-> + gÝtiÚs +['lookup_ÿche_dediÿ‹d_keys'] && + g$u¾ + = +$this +-> +ÿche +-> +g‘ +('symfÚy.routšg.d©a.'. +$ÿcheKey +)) + +300  +$this +-> +fixG’”©edU¾ +( +$u¾ +, +$absÞu‹ +); + +302 +–£if + ( +is£t +( +$this +-> +ÿcheD©a +[ +$ÿcheKey +])) + +304  + g$this +-> +fixG’”©edU¾ +( +$this +-> +ÿcheD©a +[ +$ÿcheKey +], +$absÞu‹ +); + +308 ià( + g$Çme +) + +311 ià(! +is£t +( +$this +-> +rou‹s +[ +$Çme +])) + +313 +throw + +Ãw + +sfCÚfigu¿tiÚExû±iÚ +( +¥rštf +('Throu‹ "%s" dÛ nكxi¡.', +$Çme +)); + +315 + g$rou‹ + = +$this +-> +rou‹s +[ +$Çme +]; + +316 + g$this +-> +’su»DeçuÉP¬am‘”sA»S‘ +(); + +321 ià( + gçl£ + ==ð +$rou‹ + = +$this +-> +g‘Rou‹Th©M©chesP¬am‘”s +( +$·¿ms +)) + +323 +throw + +Ãw + +sfCÚfigu¿tiÚExû±iÚ +( +¥rštf +('UÇbˁØfšd‡ m©chšg„ou‹Øg’”©u¾ f܅¬am "%s".', +is_objeù +( +$·¿ms +è? 'Objeù('. +g‘_þass +($·¿ms).')' : +¡r_»¶aû +("\n", '', +v¬_expÜt +($·¿ms, +Œue +)))); + +327 + g$u¾ + = +$rou‹ +-> +g’”©e +( +$·¿ms +, +$this +-> +ÝtiÚs +['cڋxt'], +$absÞu‹ +); + +330 ià( + gnuÎ + !=ð +$this +-> +ÿche +) + +332 ià( +$this +-> +ÝtiÚs +['lookup_cache_dedicated_keys']) + +334 +$this +-> +ÿche +-> +£t +('symfÚy.routšg.d©a.'. +$ÿcheKey +, +$u¾ +); + +338 + g$this +-> + gÿcheChªged + = +Œue +; + +339 + g$this +-> + gÿcheD©a +[ +$ÿcheKey +] = +$u¾ +; + +343  + g$this +-> +fixG’”©edU¾ +( +$u¾ +, +$absÞu‹ +); + +349 +public + +funùiÚ + + $·r£ +( +$u¾ +) + +351 ià( +çl£ + ==ð +$šfo + = +$this +-> + `fšdRou‹ +( +$u¾ +)) + +353 +$this +-> +cu¼’tRou‹Name + = +nuÎ +; + +354 +$this +-> +cu¼’tIÁ”ÇlUri + = + `¬¿y +(); + +356  +çl£ +; + +359 ià( +$this +-> +ÝtiÚs +['logging']) + +361 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, '­¶iÿtiÚ.log', + `¬¿y +( + `¥rštf +('M©ch„ou‹ "%s" (%sèfÜ % w™h…¬am‘” %s', +$šfo +['Çme'], $šfo['·‰”n'], +$u¾ +, + `¡r_»¶aû +("\n", '', + `v¬_expÜt +($šfo['·¿m‘”s'], +Œue +)))))); + +365 +$this +-> + `upd©eCu¼’tIÁ”ÇlUri +( +$šfo +['name'], $info['parameters']); + +367 +$rou‹ + = +$this +-> +rou‹s +[ +$šfo +['name']]; + +369 +$this +-> + `’su»DeçuÉP¬am‘”sA»S‘ +(); + +371 +$rou‹ +-> + `bšd +( +$this +-> +ÝtiÚs +['cڋxt'], +$šfo +['parameters']); + +372 +$šfo +['·¿m‘”s']['_sf_rou‹'] = +$rou‹ +; + +374  +$šfo +['parameters']; + +375 + } +} + +377 +´Ùeùed + +funùiÚ + + $upd©eCu¼’tIÁ”ÇlUri +( +$Çme +, +¬¿y + +$·¿m‘”s +) + +380 +$this +-> +cu¼’tRou‹Name + = +$Çme +; + +382 +$š‹º®Uri + = + `¬¿y +('@'. +$this +-> +cu¼’tRou‹Name +, +$·¿m‘”s +['module'].'/'.$parameters['action']); + +383 + `un£t +( +$·¿m‘”s +['module'], $parameters['action']); + +385 +$·¿ms + = + `¬¿y +(); + +386 + `fܗch + ( +$·¿m‘”s + +as + +$key + => +$v®ue +) + +388 +$·¿ms +[] = +$key +.'='. +$v®ue +; + +392 + `sÜt +( +$·¿ms +); + +394 +$·¿ms + = $·¿m ? '?'. + `im¶ode +('&', $params) : ''; + +396 +$this +-> +cu¼’tIÁ”ÇlUri + = + `¬¿y +( +$š‹º®Uri +[0]. +$·¿ms +, $internalUri[1].$params); + +397 + } +} + +414 +public + +funùiÚ + + $fšdRou‹ +( +$u¾ +) + +416 +$u¾ + = +$this +-> + `nÜm®izeU¾ +($url); + +419 ià( +nuÎ + !=ð +$this +-> +ÿche +) + +421 +$ÿcheKey + = '·r£_'. +$u¾ +.'_'. + `md5 +( + `£rŸlize +( +$this +-> +ÝtiÚs +['context'])); + +422 ià( +$this +-> +ÝtiÚs +['lookup_ÿche_dediÿ‹d_keys'] && +$šfo + = $this-> +ÿche +-> + `g‘ +('symfÚy.routšg.d©a.'. +$ÿcheKey +)) + +424  + `un£rŸlize +( +$šfo +); + +426 + `–£if + ( + `is£t +( +$this +-> +ÿcheD©a +[ +$ÿcheKey +])) + +428  +$this +-> +ÿcheD©a +[ +$ÿcheKey +]; + +432 +$šfo + = +$this +-> + `g‘Rou‹Th©M©chesU¾ +( +$u¾ +); + +435 ià( +nuÎ + !=ð +$this +-> +ÿche +) + +437 ià( +$this +-> +ÝtiÚs +['lookup_cache_dedicated_keys']) + +439 +$this +-> +ÿche +-> + `£t +('symfÚy.routšg.d©a.'. +$ÿcheKey +, + `£rŸlize +( +$šfo +)); + +443 +$this +-> +ÿcheChªged + = +Œue +; + +444 +$this +-> +ÿcheD©a +[ +$ÿcheKey +] = +$šfo +; + +448  +$šfo +; + +449 + } +} + +451  +public + +funùiÚ + + $橋nRou‹s +( +$rou‹s +) + +453 +$橋nRou‹s + = + `¬¿y +(); + +454 + `fܗch + ( +$rou‹s + +as + +$Çme + => +$rou‹ +) + +456 ià( +$rou‹ + +š¡ªûof + +sfRou‹CÞËùiÚ +) + +458 +$橋nRou‹s + = + `¬¿y_m”ge +($橋nRou‹s, +£lf +:: + `橋nRou‹s +( +$rou‹ +)); + +462 +$橋nRou‹s +[ +$Çme +] = +$rou‹ +; + +466  +$橋nRou‹s +; + +467 + } +} + +469 +´Ùeùed + +funùiÚ + + $g‘Rou‹Th©M©chesU¾ +( +$u¾ +) + +471 +$this +-> + `’su»DeçuÉP¬am‘”sA»S‘ +(); + +472 + `fܗch + ( +$this +-> +rou‹s + +as + +$Çme + => +$rou‹ +) + +474 ià( +çl£ + ==ð +$·¿m‘”s + = +$rou‹ +-> + `m©chesU¾ +( +$u¾ +, +$this +-> +ÝtiÚs +['context'])) + +479  + `¬¿y +('Çme' => +$Çme +, '·‰”n' => +$rou‹ +-> + `g‘P©‹º +(), '·¿m‘”s' => +$·¿m‘”s +); + +482  +çl£ +; + +483 + } +} + +485 +´Ùeùed + +funùiÚ + + $g‘Rou‹Th©M©chesP¬am‘”s +( +$·¿m‘”s +) + +487 +$this +-> + `’su»DeçuÉP¬am‘”sA»S‘ +(); + +488 + `fܗch + ( +$this +-> +rou‹s + +as + +$rou‹ +) + +490 ià( +$rou‹ +-> + `m©chesP¬am‘”s +( +$·¿m‘”s +, +$this +-> +ÝtiÚs +['context'])) + +492  +$rou‹ +; + +496  +çl£ +; + +497 + } +} + +499 +´Ùeùed + +funùiÚ + + $nÜm®izeU¾ +( +$u¾ +) + +502 ià('/' !ð + `sub¡r +( +$u¾ +, 0, 1)) + +504 +$u¾ + = '/'.$url; + +508 ià( +çl£ + !=ð +$pos + = + `¡½os +( +$u¾ +, '?')) + +510 +$u¾ + = + `sub¡r +($u¾, 0, +$pos +); + +514 +$u¾ + = + `´eg_»¶aû +('#/+#', '/', $url); + +516  +$u¾ +; + +517 + } +} + +522 +public + +funùiÚ + + $shutdown +() + +524 ià( +nuÎ + !=ð +$this +-> +ÿche + && $this-> +ÿcheChªged +) + +526 +$this +-> +ÿcheChªged + = +çl£ +; + +527 +$this +-> +ÿche +-> + `£t +('symfÚy.routšg.d©a', + `£rŸlize +($this-> +ÿcheD©a +)); + +529 + } +} + + @lib/vendor/symfony/lib/routing/sfRequestRoute.class.php + +1 +»quœem’ts +['sf_method'])) + +62  +$·¿m‘”s +; + +65  +çl£ +; + +66 + } +} + +76 +public + +funùiÚ + +m©chesP¬am‘”s +( +$·¿ms +, +$cڋxt + = + $¬¿y +()) + +78 ià( + `is£t +( +$·¿ms +['sf_method'])) + +81 ià(! + `š_¬¿y +( + `¡¹Þow” +( +$·¿ms +['sf_m‘hod']), +$this +-> +»quœem’ts +['sf_method'])) + +83  +çl£ +; + +86 + `un£t +( +$·¿ms +['sf_method']); + +89  +·»Á +:: + `m©chesP¬am‘”s +( +$·¿ms +, +$cڋxt +); + +90 + } +} + +101 +public + +funùiÚ + +g’”©e +( +$·¿ms +, +$cڋxt + = +¬¿y +(), +$absÞu‹ + = +çl£ +) + +103 +un£t +( +$·¿ms +['sf_method']); + +105  + g·»Á +:: +g’”©e +( +$·¿ms +, +$cڋxt +, +$absÞu‹ +); + + @lib/vendor/symfony/lib/routing/sfRoute.class.php + +1 +·‰”n + = + `Œim +( +$·‰”n +); + +58 +$this +-> +deçuÉs + = +$deçuÉs +; + +59 +$this +-> +»quœem’ts + = +$»quœem’ts +; + +60 +$this +-> +ÝtiÚs + = +$ÝtiÚs +; + +69 +public + +funùiÚ + + $bšd +( +$cڋxt +, +$·¿m‘”s +) + +71 +$this +-> +isBound + = +Œue +; + +72 +$this +-> +cڋxt + = +$cڋxt +; + +73 +$this +-> +·¿m‘”s + = +$·¿m‘”s +; + +74 + } +} + +81 +public + +funùiÚ + + $isBound +() + +83  +$this +-> +isBound +; + +84 + } +} + +94 +public + +funùiÚ + +m©chesU¾ +( +$u¾ +, +$cڋxt + = + $¬¿y +()) + +96 ià(! +$this +-> +compžed +) + +98 +$this +-> + `compže +(); + +102 ià('' !=ð +$this +-> +¡©icP»fix + && 0 !=ð + `¡½os +( +$u¾ +, $this->staticPrefix)) + +104  +çl£ +; + +106 ià(! + `´eg_m©ch +( +$this +-> +»gex +, +$u¾ +, +$m©ches +)) + +108  +çl£ +; + +111 +$deçuÉs + = + `¬¿y_m”ge +( +$this +-> + `g‘DeçuÉP¬am‘”s +(), $this-> +deçuÉs +); + +112 +$·¿m‘”s + = + `¬¿y +(); + +115 ià( + `is£t +( +$m©ches +['_star'])) + +117 +$·¿m‘”s + = +$this +-> + `·r£SrP¬am‘” +( +$m©ches +['_star']); + +118 + `un£t +( +$m©ches +['_¡¬'], +$·¿m‘”s +['module'], $parameters['action']); + +122 +$·¿m‘”s + = +$this +-> + `m”geA¼ays +( +$deçuÉs +, $parameters); + +125 + `fܗch + ( +$m©ches + +as + +$key + => +$v®ue +) + +127 ià(! + `is_št +( +$key +)) + +129 +$·¿m‘”s +[ +$key +] = + `u¾decode +( +$v®ue +); + +133  +$·¿m‘”s +; + +134 + } +} + +144 +public + +funùiÚ + +m©chesP¬am‘”s +( +$·¿ms +, +$cڋxt + = + $¬¿y +()) + +146 ià(! +$this +-> +compžed +) + +148 +$this +-> + `compže +(); + +151 ià(! + `is_¬¿y +( +$·¿ms +)) + +153  +çl£ +; + +156 +$deçuÉs + = +$this +-> + `m”geA¼ays +($this-> + `g‘DeçuÉP¬am‘”s +(), $this-> +deçuÉs +); + +157 +$¬ams + = +$this +-> + `m”geA¼ays +( +$deçuÉs +, +$·¿ms +); + +160 ià( + `¬¿y_diff_key +( +$this +-> +v¬ŸbËs +, +$¬ams +)) + +162  +çl£ +; + +166 + `fܗch + ( + `¬¿y_keys +( +$this +-> +v¬ŸbËs +è +as + +$v¬ŸbË +) + +168 ià(! +$¬ams +[ +$v¬ŸbË +]) + +173 ià(! + `´eg_m©ch +('#'. +$this +-> +»quœem’ts +[ +$v¬ŸbË +].'#', +$¬ams +[$variable])) + +175  +çl£ +; + +180 ià(! +$this +-> +ÝtiÚs +['extra_parameters_as_query_string']) + +182 ià( +çl£ + ==ð + `¡½os +( +$this +-> +»gex +, '<_¡¬>'è&& + `¬¿y_diff_key +( +$·¿ms +, $this-> +v¬ŸbËs +, +$deçuÉs +)) + +184  +çl£ +; + +189 + `fܗch + ( +$deçuÉs + +as + +$key + => +$v®ue +) + +191 ià(! + `is£t +( +$this +-> +v¬ŸbËs +[ +$key +]è&& +$¬ams +[$key] !ð +$v®ue +) + +193  +çl£ +; + +197  +Œue +; + +198 + } +} + +209 +public + +funùiÚ + +g’”©e +( +$·¿ms +, +$cڋxt + = +¬¿y +(), +$absÞu‹ + = +çl£ +) + +211 ià(! +$this +-> +compžed +) + +213 +$this +-> +compže +(); + +216 + g$u¾ + = +$this +-> +·‰”n +; + +218 + g$deçuÉs + = +$this +-> +m”geA¼ays +($this-> +g‘DeçuÉP¬am‘”s +(), $this-> +deçuÉs +); + +219 + g$¬ams + = +$this +-> +m”geA¼ays +( +$deçuÉs +, +$·¿ms +); + +222 ià( + g$diff + = +¬¿y_diff_key +( +$this +-> +v¬ŸbËs +, +$¬ams +)) + +224 +throw + +Ãw + +Inv®idArgum’tExû±iÚ +( +¥rštf +('Th"%s"„ou‹ ha sommissšg mªd©Üy…¬am‘” (%s).', +$this +-> +·‰”n +, +im¶ode +(', ', +$diff +))); + +227 ià( + g$this +-> + gÝtiÚs +['g’”©e_sh܋¡_u¾'] || $this-> + gcu¡omTok’ +) + +229 + g$u¾ + = +$this +-> +g’”©eW™hTok’s +( +$¬ams +); + +234 + g$v¬ŸbËs + = +$this +-> +v¬ŸbËs +; + +235 +uasÜt +( +$v¬ŸbËs +, +¬¿y +('sfRoute', 'generateCompareVarsByStrlen')); + +236 +fܗch + ( +$v¬ŸbËs + +as + +$v¬ŸbË + => +$v®ue +) + +238 +$u¾ + = +¡r_»¶aû +( +$v®ue +, +u¾’code +( +$¬ams +[ +$v¬ŸbË +]), $url); + +241 if(! +š_¬¿y +( +$this +-> +suffix +, $this-> +ÝtiÚs +['segment_separators'])) + +243 + g$u¾ + .ð +$this +-> +suffix +; + +248 + g$u¾ + = +$this +-> +g’”©eSrP¬am‘” +( +$u¾ +, +$deçuÉs +, +$¬ams +); + +250 ià( + g$this +-> + gÝtiÚs +['exŒa_·¿m‘”s_as_qu”y_¡ršg'] && !$this-> +hasSrP¬am‘” +()) + +253 ià( + g$exŒa + = +¬¿y_diff_key +( +$·¿ms +, +$this +-> +v¬ŸbËs +, +$deçuÉs +)) + +255 + g$u¾ + .ð'?'. +h‰p_bužd_qu”y +( +$exŒa +); + +259  + g$u¾ +; + +262  +´iv©e + +funùiÚ + + $g’”©eCom·»V¬sBySŒËn +( +$a +, +$b +) + +264  + `¡¾’ +( +$a +è< sŒËn( +$b +); + +265 + } +} + +272 +´Ùeùed + +funùiÚ + + $g’”©eW™hTok’s +( +$·¿m‘”s +) + +274 +$u¾ + = + `¬¿y +(); + +275 +$ÝtiÚ® + = +$this +-> +ÝtiÚs +['generate_shortest_url']; + +276 +$fœ¡ + = +Œue +; + +277 +$tok’s + = + `¬¿y_»v”£ +( +$this +-> +tok’s +); + +278 + `fܗch + ( +$tok’s + +as + +$tok’ +) + +280  +$tok’ +[0]) + +283 ià(! +$ÝtiÚ® + || ! + `is£t +( +$this +-> +deçuÉs +[ +$tok’ +[3]]è|| +$·¿m‘”s +[$token[3]] != $this->defaults[$token[3]]) + +285 +$u¾ +[] = + `u¾’code +( +$·¿m‘”s +[ +$tok’ +[3]]); + +286 +$ÝtiÚ® + = +çl£ +; + +290 +$u¾ +[] = +$tok’ +[2]; + +291 +$ÝtiÚ® + = +çl£ +; + +294 ià( +çl£ + ==ð +$ÝtiÚ® + || +$fœ¡ +) + +296 +$u¾ +[] = +$tok’ +[2]; + +301 ià( +$£gm’t + = + `ÿÎ_u£r_func_¬¿y +( + `¬¿y +( +$this +, 'g’”©eFÜ'. + `ucfœ¡ +( + `¬¿y_shiá +( +$tok’ +))), + `¬¿y_m”ge +×¼ay( +$ÝtiÚ® +, +$·¿m‘”s +), $token))) + +303 +$u¾ +[] = +$£gm’t +; + +304 +$ÝtiÚ® + = +çl£ +; + +309 +$fœ¡ + = +çl£ +; + +312 +$u¾ + = + `im¶ode +('', + `¬¿y_»v”£ +($url)); + +313 ià(! +$u¾ +) + +315 +$u¾ + = '/'; + +318  +$u¾ +; + +319 + } +} + +326 +public + +funùiÚ + + $g‘P¬am‘”s +() + +328 ià(! +$this +-> +compžed +) + +330 +$this +-> + `compže +(); + +333  +$this +-> +·¿m‘”s +; + +334 + } +} + +341 +public + +funùiÚ + + $g‘P©‹º +() + +343 ià(! +$this +-> +compžed +) + +345 +$this +-> + `compže +(); + +348  +$this +-> +·‰”n +; + +349 + } +} + +356 +public + +funùiÚ + + $g‘Regex +() + +358 ià(! +$this +-> +compžed +) + +360 +$this +-> + `compže +(); + +363  +$this +-> +»gex +; + +364 + } +} + +371 +public + +funùiÚ + + $g‘Tok’s +() + +373 ià(! +$this +-> +compžed +) + +375 +$this +-> + `compže +(); + +378  +$this +-> +tok’s +; + +379 + } +} + +386 +public + +funùiÚ + + $g‘O±iÚs +() + +388 ià(! +$this +-> +compžed +) + +390 +$this +-> + `compže +(); + +393  +$this +-> +ÝtiÚs +; + +394 + } +} + +401 +public + +funùiÚ + + $g‘V¬ŸbËs +() + +403 ià(! +$this +-> +compžed +) + +405 +$this +-> + `compže +(); + +408  +$this +-> +v¬ŸbËs +; + +409 + } +} + +416 +public + +funùiÚ + + $g‘DeçuÉs +() + +418 ià(! +$this +-> +compžed +) + +420 +$this +-> + `compže +(); + +423  +$this +-> +deçuÉs +; + +424 + } +} + +431 +public + +funùiÚ + + $g‘Requœem’ts +() + +433 ià(! +$this +-> +compžed +) + +435 +$this +-> + `compže +(); + +438  +$this +-> +»quœem’ts +; + +439 + } +} + +444 +public + +funùiÚ + + $compže +() + +446 ià( +$this +-> +compžed +) + +451 +$this +-> + `š™ŸlizeO±iÚs +(); + +452 +$this +-> + `fixRequœem’ts +(); + +453 +$this +-> + `fixDeçuÉs +(); + +454 +$this +-> + `fixSuffix +(); + +456 +$this +-> +compžed + = +Œue +; + +457 +$this +-> +fœ¡O±iÚ® + = 0; + +458 +$this +-> +£gm’ts + = + `¬¿y +(); + +460 +$this +-> + `´eCompže +(); + +462 +$this +-> + `tok’ize +(); + +465 + `fܗch + ( +$this +-> +tok’s + +as + +$tok’ +) + +467 + `ÿÎ_u£r_func_¬¿y +( + `¬¿y +( +$this +, 'compžeFÜ'. + `ucfœ¡ +( + `¬¿y_shiá +( +$tok’ +))), $token); + +470 +$this +-> + `po¡Compže +(); + +472 +$£·¿tÜ + = ''; + +473 ià( + `couÁ +( +$this +-> +tok’s +)) + +475 +$Ï¡Tok’ + = +$this +-> +tok’s +[ + `couÁ +($this->tokens) - 1]; + +476 +$£·¿tÜ + = '£·¿tÜ' =ð +$Ï¡Tok’ +[0] ? $lastToken[2] : ''; + +479 +$this +-> +»gex + = "#^". + `im¶ode +("", $this-> +£gm’ts +)."". + `´eg_quÙe +( +$£·¿tÜ +, '#')."$#x"; + +480 + } +} + +485 +´Ùeùed + +funùiÚ + + $´eCompže +() + +488 ià( + `em±y +( +$this +-> +·‰”n +) || '/' != $this->pattern[0]) + +490 +$this +-> +·‰”n + = '/'.$this->pattern; + +492 + } +} + +497 +´Ùeùed + +funùiÚ + + $po¡Compže +() + +501  +$i + = +$this +-> +fœ¡O±iÚ® +, +$max + = + `couÁ +($this-> +£gm’ts +); $i < $max; $i++) + +503 +$this +-> +£gm’ts +[ +$i +] = (0 =ð$˜? '/?' : ''). + `¡r_»³© +(' ', $˜- $this-> +fœ¡O±iÚ® +).'(?:'.$this->segments[$i]; + +504 +$this +-> +£gm’ts +[] = + `¡r_»³© +(' ', +$max + - +$i + - 1).')?'; + +507 +$this +-> +¡©icP»fix + = ''; + +508 + `fܗch + ( +$this +-> +tok’s + +as + +$tok’ +) + +510  +$tok’ +[0]) + +515 ià( +$tok’ +[2] !== '*') + +518 +$this +-> +¡©icP»fix + .ð +$tok’ +[1].$token[2]; + +526 + } +} + +531 +´Ùeùed + +funùiÚ + + $tok’ize +() + +533 +$this +-> +tok’s + = + `¬¿y +(); + +534 +$bufãr + = +$this +-> +·‰”n +; + +535 +$aá”AS•¬©Ü + = +çl£ +; + +536 +$cu¼’tS•¬©Ü + = ''; + +539  + `¡¾’ +( +$bufãr +)) + +541 ià( +çl£ + !=ð +$this +-> + `tok’izeBufãrBefÜe +( +$bufãr +, $this-> +tok’s +, +$aá”AS•¬©Ü +, +$cu¼’tS•¬©Ü +)) + +544 +$this +-> +cu¡omTok’ + = +Œue +; + +546 ià( +$aá”AS•¬©Ü + && + `´eg_m©ch +('#^'. +$this +-> +ÝtiÚs +['v¬ŸbË_´efix_»gex'].'('.$this->ÝtiÚs['v¬ŸbË_»gex'].')#', +$bufãr +, +$m©ch +)) + +549 +$this +-> +tok’s +[] = + `¬¿y +('v¬ŸbË', +$cu¼’tS•¬©Ü +, +$m©ch +[0], $match[1]); + +551 +$cu¼’tS•¬©Ü + = ''; + +552 +$bufãr + = + `sub¡r +($bufãr, + `¡¾’ +( +$m©ch +[0])); + +553 +$aá”AS•¬©Ü + = +çl£ +; + +555 ià( +$aá”AS•¬©Ü + && + `´eg_m©ch +('#^('. +$this +-> +ÝtiÚs +['‹xt_»gex'].')(?:'.$this->ÝtiÚs['£gm’t_£·¿tÜs_»gex'].'|$)#', +$bufãr +, +$m©ch +)) + +558 +$this +-> +tok’s +[] = + `¬¿y +('‹xt', +$cu¼’tS•¬©Ü +, +$m©ch +[1], +nuÎ +); + +560 +$cu¼’tS•¬©Ü + = ''; + +561 +$bufãr + = + `sub¡r +($bufãr, + `¡¾’ +( +$m©ch +[1])); + +562 +$aá”AS•¬©Ü + = +çl£ +; + +564 ià(! +$aá”AS•¬©Ü + && + `´eg_m©ch +('#^/|^'. +$this +-> +ÝtiÚs +['£gm’t_£·¿tÜs_»gex'].'#', +$bufãr +, +$m©ch +)) + +567 +$this +-> +tok’s +[] = + `¬¿y +('£·¿tÜ', +$cu¼’tS•¬©Ü +, +$m©ch +[0], +nuÎ +); + +569 +$cu¼’tS•¬©Ü + = +$m©ch +[0]; + +570 +$bufãr + = + `sub¡r +($bufãr, + `¡¾’ +( +$m©ch +[0])); + +571 +$aá”AS•¬©Ü + = +Œue +; + +573 ià( +çl£ + !=ð +$this +-> + `tok’izeBufãrAᔠ+( +$bufãr +, $this-> +tok’s +, +$aá”AS•¬©Ü +, +$cu¼’tS•¬©Ü +)) + +576 +$this +-> +cu¡omTok’ + = +Œue +; + +581 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('UÇbˁطr£ "%s"„ou‹‚—¸"%s".', +$this +-> +·‰”n +, +$bufãr +)); + +586 ià( +$this +-> +suffix +) + +589 +$this +-> +tok’s +[] = + `¬¿y +('£·¿tÜ', +$cu¼’tS•¬©Ü +, $this-> +suffix +); + +592 + } +} + +606 +´Ùeùed + +funùiÚ + + $tok’izeBufãrBefÜe +(& +$bufãr +, & +$tok’s +, & +$aá”AS•¬©Ü +, & +$cu¼’tS•¬©Ü +) + +608  +çl£ +; + +609 + } +} + +623 +´Ùeùed + +funùiÚ + + $tok’izeBufãrAᔠ+(& +$bufãr +, & +$tok’s +, & +$aá”AS•¬©Ü +, & +$cu¼’tS•¬©Ü +) + +625  +çl£ +; + +626 + } +} + +628 +´Ùeùed + +funùiÚ + + $compžeFÜText +( +$£·¿tÜ +, +$‹xt +) + +630 ià('*' =ð +$‹xt +) + +632 +$this +-> +£gm’ts +[] = '(?:'. + `´eg_quÙe +( +$£·¿tÜ +, '#').'(?P<_star>.*))?'; + +636 +$this +-> +fœ¡O±iÚ® + = + `couÁ +($this-> +£gm’ts +) + 1; + +638 +$this +-> +£gm’ts +[] = + `´eg_quÙe +( +$£·¿tÜ +, '#').´eg_quÙe( +$‹xt +, '#'); + +640 + } +} + +642 +´Ùeùed + +funùiÚ + + $compžeFÜV¬ŸbË +( +$£·¿tÜ +, +$Çme +, +$v¬ŸbË +) + +644 ià(! + `is£t +( +$this +-> +»quœem’ts +[ +$v¬ŸbË +])) + +646 +$this +-> +»quœem’ts +[ +$v¬ŸbË +] = $this-> +ÝtiÚs +['variable_content_regex']; + +649 +$this +-> +£gm’ts +[] = + `´eg_quÙe +( +$£·¿tÜ +, '#').'(?P<'. +$v¬ŸbË +.'>'.$this-> +»quœem’ts +[$variable].')'; + +650 +$this +-> +v¬ŸbËs +[ +$v¬ŸbË +] = +$Çme +; + +652 ià(! + `is£t +( +$this +-> +deçuÉs +[ +$v¬ŸbË +])) + +654 +$this +-> +fœ¡O±iÚ® + = + `couÁ +($this-> +£gm’ts +); + +656 + } +} + +658 +´Ùeùed + +funùiÚ + + $compžeFÜS•¬©Ü +( +$£·¿tÜ +, +$»gexS•¬©Ü +) + +660 + } +} + +662 +public + +funùiÚ + + $g‘DeçuÉP¬am‘”s +() + +664  +$this +-> +deçuÉP¬am‘”s +; + +665 + } +} + +667 +public + +funùiÚ + + $£tDeçuÉP¬am‘”s +( +$·¿m‘”s +) + +669 +$this +-> +deçuÉP¬am‘”s + = +$·¿m‘”s +; + +670 + } +} + +672 +public + +funùiÚ + + $g‘DeçuÉO±iÚs +() + +674  +$this +-> +deçuÉO±iÚs +; + +675 + } +} + +677 +public + +funùiÚ + + $£tDeçuÉO±iÚs +( +$ÝtiÚs +) + +679 +$this +-> +deçuÉO±iÚs + = +$ÝtiÚs +; + +680 + } +} + +682 +´Ùeùed + +funùiÚ + + $š™ŸlizeO±iÚs +() + +684 +$this +-> +ÝtiÚs + = + `¬¿y_m”ge +( + `¬¿y +( + +686 'v¬ŸbË_´efixes' => + `¬¿y +(':'), + +687 '£gm’t_£·¿tÜs' => + `¬¿y +('/', '.'), + +690 'g’”©e_sh܋¡_u¾' => +Œue +, + +691 'exŒa_·¿m‘”s_as_qu”y_¡ršg' => +Œue +, + +692 ), +$this +-> + `g‘DeçuÉO±iÚs +(), $this-> +ÝtiÚs +); + +694 +$´eg_quÙe_hash + = + `ü—‹_funùiÚ +('$a', 'return…reg_quote($a, \'#\');'); + +697 +$this +-> +ÝtiÚs +['v¬ŸbË_´efix_»gex'] = '(?:'. + `im¶ode +('|', + `¬¿y_m­ +( +$´eg_quÙe_hash +, $this->options['variable_prefixes'])).')'; + +699 ià( + `couÁ +( +$this +-> +ÝtiÚs +['segment_separators'])) + +701 +$this +-> +ÝtiÚs +['£gm’t_£·¿tÜs_»gex'] = '(?:'. + `im¶ode +('|', + `¬¿y_m­ +( +$´eg_quÙe_hash +, $this->options['segment_separators'])).')'; + +704 +$´eg_quÙe_hash_53 + = + `ü—‹_funùiÚ +('$a', 'return str_replace(\'-\', \'\-\',…reg_quote($a, \'#\'));'); + +705 +$this +-> +ÝtiÚs +['v¬ŸbË_cڋÁ_»gex'] = '[^'. + `im¶ode +('', + +706 + `¬¿y_m­ +( + `v”siÚ_com·» +( +PHP_VERSION +, '5.3.0RC4', '>='è? +$´eg_quÙe_hash + : +$´eg_quÙe_hash_53 +, +$this +-> +ÝtiÚs +['segment_separators']) + +712 +$this +-> +ÝtiÚs +['segment_separators_regex'] = '()'; + +713 +$this +-> +ÝtiÚs +['variable_content_regex'] = '.+'; + +715 + } +} + +717 +´Ùeùed + +funùiÚ + + $·r£SrP¬am‘” +( +$¡¬ +) + +719 +$·¿m‘”s + = + `¬¿y +(); + +720 +$tmp + = + `ex¶ode +('/', +$¡¬ +); + +721  +$i + = 0, +$max + = + `couÁ +( +$tmp +); $i < $max; $i += 2) + +724 ià(! + `em±y +( +$tmp +[ +$i +])) + +726 +$·¿m‘”s +[ +$tmp +[ +$i +]] = + `is£t +($tmp[$˜+ 1]è? + `u¾decode +($tmp[$˜+ 1]è: +Œue +; + +730  +$·¿m‘”s +; + +731 + } +} + +733 +´Ùeùed + +funùiÚ + + $hasSrP¬am‘” +() + +735  +çl£ + !=ð + `¡½os +( +$this +-> +»gex +, '<_star>'); + +736 + } +} + +738 +´Ùeùed + +funùiÚ + + $g’”©eSrP¬am‘” +( +$u¾ +, +$deçuÉs +, +$·¿m‘”s +) + +740 ià( +çl£ + ==ð + `¡½os +( +$this +-> +»gex +, '<_star>')) + +742  +$u¾ +; + +745 +$tmp + = + `¬¿y +(); + +746 + `fܗch + ( + `¬¿y_diff_key +( +$·¿m‘”s +, +$this +-> +v¬ŸbËs +, +$deçuÉs +è +as + +$key + => +$v®ue +) + +748 ià( + `is_¬¿y +( +$v®ue +)) + +750 + `fܗch + ( +$v®ue + +as + +$v +) + +752 +$tmp +[] = +$key +.'='. + `u¾’code +( +$v +); + +757 +$tmp +[] = + `u¾’code +( +$key +).'/'.u¾’code( +$v®ue +); + +760 +$tmp + = + `im¶ode +('/', $tmp); + +761 ià( +$tmp +) + +763 +$tmp + = '/'.$tmp; + +766  + `´eg_»¶aû +('#'. +$this +-> +ÝtiÚs +['£gm’t_£·¿tÜs_»gex'].'\*('.$this->ÝtiÚs['£gm’t_£·¿tÜs_»gex'].'|$)#', "$tmp$1", +$u¾ +); + +767 + } +} + +769 +´Ùeùed + +funùiÚ + + $m”geA¼ays +( +$¬r1 +, +$¬r2 +) + +771 + `fܗch + ( +$¬r2 + +as + +$key + => +$v®ue +) + +773 +$¬r1 +[ +$key +] = +$v®ue +; + +776  +$¬r1 +; + +777 + } +} + +779 +´Ùeùed + +funùiÚ + + $fixDeçuÉs +() + +781 + `fܗch + ( +$this +-> +deçuÉs + +as + +$key + => +$v®ue +) + +783 ià( + `ùy³_dig™ +( +$key +)) + +785 +$this +-> +deçuÉs +[ +$v®ue +] = +Œue +; + +789 +$this +-> +deçuÉs +[ +$key +] = + `u¾decode +( +$v®ue +); + +792 + } +} + +794 +´Ùeùed + +funùiÚ + + $fixRequœem’ts +() + +796 + `fܗch + ( +$this +-> +»quœem’ts + +as + +$key + => +$»gex +) + +798 ià(! + `is_¡ršg +( +$»gex +)) + +803 ià('^' =ð +$»gex +[0]) + +805 +$»gex + = + `sub¡r +($regex, 1); + +807 ià('$' =ð + `sub¡r +( +$»gex +, -1)) + +809 +$»gex + = + `sub¡r +($regex, 0, -1); + +812 +$this +-> +»quœem’ts +[ +$key +] = +$»gex +; + +814 + } +} + +816 +´Ùeùed + +funùiÚ + + $fixSuffix +() + +818 +$Ëngth + = + `¡¾’ +( +$this +-> +·‰”n +); + +820 ià( +$Ëngth + > 0 && '/' =ð +$this +-> +·‰”n +[$length - 1]) + +823 +$this +-> +suffix + = '/'; + +825 ià( +$Ëngth + > 0 && '.' =ð +$this +-> +·‰”n +[$length - 1]) + +828 +$this +-> +suffix + = ''; + +829 +$this +-> +·‰”n + = + `sub¡r +($this->·‰”n, 0, +$Ëngth + - 1); + +831 ià( + `´eg_m©ch +('#\.(?:'. +$this +-> +ÝtiÚs +['v¬ŸbË_´efix_»gex'].$this->ÝtiÚs['v¬ŸbË_»gex'].'|'.$this->ÝtiÚs['v¬ŸbË_cڋÁ_»gex'].')$#i', $this-> +·‰”n +)) + +835 +$this +-> +suffix + = ''; + +839 +$this +-> +suffix + = $this-> +ÝtiÚs +['suffix']; + +841 + } +} + +843 +public + +funùiÚ + + $£rŸlize +() + +846 +$this +-> + `compže +(); + +848  + `£rŸlize +( + `¬¿y +( +$this +-> +tok’s +, $this-> +deçuÉO±iÚs +, $this-> +ÝtiÚs +, $this-> +·‰”n +, $this-> +¡©icP»fix +, $this-> +»gex +, $this-> +v¬ŸbËs +, $this-> +deçuÉs +, $this-> +»quœem’ts +, $this-> +suffix +, $this-> +cu¡omTok’ +)); + +849 + } +} + +851 +public + +funùiÚ + + $un£rŸlize +( +$d©a +) + +853 + `li¡ +( +$this +-> +tok’s +, $this-> +deçuÉO±iÚs +, $this-> +ÝtiÚs +, $this-> +·‰”n +, $this-> +¡©icP»fix +, $this-> +»gex +, $this-> +v¬ŸbËs +, $this-> +deçuÉs +, $this-> +»quœem’ts +, $this-> +suffix +, $this-> +cu¡omTok’ +èð + `un£rŸlize +( +$d©a +); + +854 +$this +-> +compžed + = +Œue +; + +855 + } +} + + @lib/vendor/symfony/lib/routing/sfRouteCollection.class.php + +1 +ÝtiÚs + = +$ÝtiÚs +; + +46 +public + +funùiÚ + + $g‘Rou‹s +() + +48  +$this +-> +rou‹s +; + +49 + } +} + +56 +public + +funùiÚ + + $g‘O±iÚs +() + +58  +$this +-> +ÝtiÚs +; + +59 + } +} + +64 +public + +funùiÚ + + $»wšd +() + +66 + `»£t +( +$this +-> +rou‹s +); + +68 +$this +-> +couÁ + = + `couÁ +($this-> +rou‹s +); + +69 + } +} + +76 +public + +funùiÚ + + $key +() + +78  + `key +( +$this +-> +rou‹s +); + +79 + } +} + +86 +public + +funùiÚ + + $cu¼’t +() + +88  + `cu¼’t +( +$this +-> +rou‹s +); + +89 + } +} + +94 +public + +funùiÚ + + $Ãxt +() + +96 + `Ãxt +( +$this +-> +rou‹s +); + +98 -- +$this +-> +couÁ +; + +99 + } +} + +106 +public + +funùiÚ + + $v®id +() + +108  +$this +-> +couÁ + > 0; + +109 + } +} + + @lib/vendor/symfony/lib/routing/sfRouting.class.php + +1 + `š™Ÿlize +( +$di¥©ch” +, +$ÿche +, +$ÝtiÚs +); + +36 ià(! + `is£t +( +$this +-> +ÝtiÚs +['auto_shutdown']) || $this->options['auto_shutdown']) + +38 + `»gi¡”_shutdown_funùiÚ +( + `¬¿y +( +$this +, 'shutdown')); + +47 +public + +funùiÚ + + $g‘Cache +() + +49  +$this +-> +ÿche +; + +50 + } +} + +67 +public + +funùiÚ + +š™Ÿlize +( +sfEv’tDi¥©ch” + +$di¥©ch” +, +sfCache + +$ÿche + = +nuÎ +, +$ÝtiÚs + = + $¬¿y +()) + +69 +$this +-> +di¥©ch” + = +$di¥©ch” +; + +71 +$ÝtiÚs +['debug'] = + `is£t +($ÝtiÚs['debug']è? ( +boޗn +è$ÝtiÚs['debug'] : +çl£ +; + +74 +$this +-> +ÿche + = +$ÝtiÚs +['debug'] ? +nuÎ + : +$ÿche +; + +76 +$this +-> + `£tDeçuÉP¬am‘” +('moduË', + `is£t +( +$ÝtiÚs +['default_module']) ? $options['default_module'] : 'default'); + +77 +$this +-> + `£tDeçuÉP¬am‘” +('aùiÚ', + `is£t +( +$ÝtiÚs +['default_action']) ? $options['default_action'] : 'index'); + +79 ià(! + `is£t +( +$ÝtiÚs +['logging'])) + +81 +$ÝtiÚs +['loggšg'] = +çl£ +; + +84 ià(! + `is£t +( +$ÝtiÚs +['context'])) + +86 +$ÝtiÚs +['cڋxt'] = + `¬¿y +(); + +89 +$this +-> +ÝtiÚs + = +$ÝtiÚs +; + +91 +$this +-> +di¥©ch” +-> + `cÚÃù +('u£r.chªge_cuÉu»', + `¬¿y +($this, 'listenToChangeCultureEvent')); + +92 +$this +-> +di¥©ch” +-> + `cÚÃù +('»que¡.fž‹r_·¿m‘”s', + `¬¿y +($this, 'filterParametersEvent')); + +94 +$this +-> + `lßdCÚfigu¿tiÚ +(); + +95 + } +} + +102 +public + +funùiÚ + + $g‘O±iÚs +() + +104  +$this +-> +ÝtiÚs +; + +105 + } +} + +112 +public + +funùiÚ + + $lßdCÚfigu¿tiÚ +() + +114 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, 'routing.load_configuration')); + +115 + } +} + +125 +ab¡¿ù + +public + +funùiÚ + +g‘Cu¼’tIÁ”ÇlUri +( +$w™h_rou‹_Çme + = +çl£ +); + +132 +ab¡¿ù + +public + +funùiÚ + +g‘Rou‹s +(); + +141 +ab¡¿ù + +public + +funùiÚ + +£tRou‹s +( +$rou‹s +); + +148 +ab¡¿ù + +public + +funùiÚ + +hasRou‹s +(); + +153 +ab¡¿ù + +public + +funùiÚ + +þ—rRou‹s +(); + +164 +ab¡¿ù + +public + +funùiÚ + +g’”©e +( +$Çme +, +$·¿ms + = +¬¿y +(), +$absÞu‹ + = +çl£ +); + +175 +ab¡¿ù + +public + +funùiÚ + +·r£ +( +$u¾ +); + +182 +public + +funùiÚ + + $g‘DeçuÉP¬am‘”s +() + +184  +$this +-> +deçuÉP¬am‘”s +; + +185 + } +} + +194 +public + +funùiÚ + + $g‘DeçuÉP¬am‘” +( +$key +) + +196  + `is£t +( +$this +-> +deçuÉP¬am‘”s +[ +$key +]è? $this->deçuÉP¬am‘”s[$key] : +nuÎ +; + +197 + } +} + +205 +public + +funùiÚ + + $£tDeçuÉP¬am‘” +( +$key +, +$v®ue +) + +207 +$this +-> +deçuÉP¬am‘”s +[ +$key +] = +$v®ue +; + +208 + } +} + +215 +public + +funùiÚ + + $£tDeçuÉP¬am‘”s +( +$·¿m‘”s +) + +217 +$this +-> +deçuÉP¬am‘”s + = +$·¿m‘”s +; + +218 + } +} + +226 +public + +funùiÚ + + $li¡’ToChªgeCuÉu»Ev’t +( +sfEv’t + +$ev’t +) + +229 +$this +-> + `£tDeçuÉP¬am‘” +('sf_cuÉu»', +$ev’t +['culture']); + +230 + } +} + +239 +public + +funùiÚ + + $fž‹rP¬am‘”sEv’t +( +sfEv’t + +$ev’t +, +$·¿m‘”s +) + +241 +$cڋxt + = +$ev’t +-> + `g‘P¬am‘”s +(); + +243 +$this +-> +ÝtiÚs +['cڋxt'] = +$cڋxt +; + +245 ià( +çl£ + ==ð +$·¿ms + = +$this +-> + `·r£ +( +$ev’t +['path_info'])) + +247  +$·¿m‘”s +; + +250  + `¬¿y_m”ge +( +$·¿m‘”s +, +$·¿ms +); + +251 + } +} + +253 +´Ùeùed + +funùiÚ + + $fixG’”©edU¾ +( +$u¾ +, +$absÞu‹ + = +çl£ +) + +255 ià( + `is£t +( +$this +-> +ÝtiÚs +['context']['prefix'])) + +257 ià(0 ==ð + `¡½os +( +$u¾ +, 'http')) + +259 +$u¾ + = + `´eg_»¶aû +('#h‰ps?\://[^/]+#', '$0'. +$this +-> +ÝtiÚs +['context']['prefix'], $url); + +263 +$u¾ + = +$this +-> +ÝtiÚs +['context']['prefix'].$url; + +267 ià( +$absÞu‹ + && + `is£t +( +$this +-> +ÝtiÚs +['cڋxt']['ho¡']è&& 0 !=ð + `¡½os +( +$u¾ +, 'http')) + +269 +$u¾ + = 'h‰p'.( + `is£t +( +$this +-> +ÝtiÚs +['context']['is_secure']) && $this->options['context']['is_secure'] ? 's' : '').'://'.$this->options['context']['host'].$url; + +272  +$u¾ +; + +273 + } +} + +280 +public + +funùiÚ + + $shutdown +() + +282 + } +} + + @lib/vendor/symfony/lib/storage/sfCacheSessionStorage.class.php + +1 'sfproject', + +54 '£ssiÚ_cook›_domaš' => +nuÎ +, + +55 '£ssiÚ_cook›_£cu»' => +çl£ +, + +56 '£ssiÚ_cook›_h‰pÚly' => +Œue +, + +57 '£ssiÚ_cook›_£ü‘' => 'sf$eü‘'), +$ÝtiÚs +)); + +60 ià( + `is£t +( +$this +-> +ÝtiÚs +['cache']) && $this->options['cache']['class']) + +62 +$this +-> +ÿche + = +Ãw + $this-> +ÝtiÚs +['ÿche']['þass']( + `is_¬¿y +($this->ÝtiÚs['ÿche']['·¿m']è? $this->ÝtiÚs['ÿche']['·¿m'] : + `¬¿y +()); + +66 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +('sfCacheSessionStorage„equires cache option.'); + +69 +$this +-> +cڋxt + = +sfCڋxt +:: + `g‘In¡ªû +(); + +71 +$this +-> +di¥©ch” + = $this-> +cڋxt +-> + `g‘Ev’tDi¥©ch” +(); + +72 +$this +-> +»que¡ + = $this-> +cڋxt +-> + `g‘Reque¡ +(); + +73 +$this +-> +»¥Ú£ + = $this-> +cڋxt +-> + `g‘Re¥Ú£ +(); + +75 +$cook› + = +$this +-> +»que¡ +-> + `g‘Cook› +($this-> +ÝtiÚs +['session_name']); + +77 if( + `¡½os +( +$cook› +, ':'è!=ð +çl£ +) + +80 + `li¡ +( +$id +, +$sigÇtu» +èð + `ex¶ode +(':', +$cook› +, 2); + +82 if( +$sigÇtu» + =ð + `sha1 +( +$id +.':'. +$this +-> +ÝtiÚs +['session_cookie_secret'])) + +85 +$this +-> +id + = +$id +; + +90 +$this +-> +id + = +nuÎ +; + +96 +$this +-> +id + = +nuÎ +; + +99 if( + `em±y +( +$this +-> +id +)) + +101 +$ + = + `is£t +( +$_SERVER +['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : 'localhost'; + +102 +$ua + = + `is£t +( +$_SERVER +['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'ua'; + +105 +$this +-> +id + = + `md5 +( + `¿nd +(0, 999999). +$ +. +$ua +.$this-> +ÝtiÚs +['session_cookie_secret']); + +107 if( +sfCÚfig +:: + `g‘ +('sf_logging_enabled')) + +109 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, '­¶iÿtiÚ.log', + `¬¿y +('New session created'))); + +113 +$this +-> +»¥Ú£ +-> + `£tCook› +($this-> +ÝtiÚs +['session_name'], + +114 +$this +-> +id +.':'. + `sha1 +($this->id.':'.$this-> +ÝtiÚs +['session_cookie_secret']), + +115 +$this +-> +ÝtiÚs +['session_cookie_lifetime'], + +116 +$this +-> +ÝtiÚs +['session_cookie_path'], + +117 +$this +-> +ÝtiÚs +['session_cookie_domain'], + +118 +$this +-> +ÝtiÚs +['session_cookie_secure'], + +119 +$this +-> +ÝtiÚs +['session_cookie_httponly']); + +121 +$this +-> +d©a + = + `¬¿y +(); + +127 +$¿w + = +$this +-> +ÿche +-> + `g‘ +($this-> +id +, +nuÎ +); + +128 ià( + `is_nuÎ +( +$¿w +)) + +130 +$this +-> +d©a + = + `¬¿y +(); + +132 + `–£if + ( + `is_¬¿y +( +$¿w +)) + +135 +$this +-> +d©a + = +$¿w +; + +139 +$this +-> +d©a + = + `un£rŸlize +( +$¿w +); + +142 if( +sfCÚfig +:: + `g‘ +('sf_logging_enabled')) + +144 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, '­¶iÿtiÚ.log', + `¬¿y +('Restored…revious session'))); + +147 + `£ssiÚ_id +( +$this +-> +id +); + +148 +$this +-> +»¥Ú£ +-> + `addCacheCڌÞH‰pH—d” +('private'); + +150  +Œue +; + +163 +public + +funùiÚ + + $wr™e +( +$key +, +$d©a +) + +165 +$this +-> +d©aChªged + = +Œue +; + +167 +$this +-> +d©a +[ +$key +] =& +$d©a +; + +168 + } +} + +179 +public + +funùiÚ + + $»ad +( +$key +) + +181 +$»tv® + = +nuÎ +; + +183 ià( + `is£t +( +$this +-> +d©a +[ +$key +])) + +185 +$»tv® + =& +$this +-> +d©a +[ +$key +]; + +188  +$»tv® +; + +189 + } +} + +200 +public + +funùiÚ + + $»move +( +$key +) + +202 +$»tv® + = +nuÎ +; + +204 ià( + `is£t +( +$this +-> +d©a +[ +$key +])) + +206 +$this +-> +d©aChªged + = +Œue +; + +208 +$»tv® + =& +$this +-> +d©a +[ +$key +]; + +209 + `un£t +( +$this +-> +d©a +[ +$key +]); + +212  +$»tv® +; + +213 + } +} + +224 +public + +funùiÚ + + $»g’”©e +( +$de¡roy + = +çl£ +) + +226 if( +$de¡roy +) + +228 +$this +-> +d©a + = + `¬¿y +(); + +229 +$this +-> +ÿche +-> + `»move +($this-> +id +); + +233 +$ua + = + `is£t +( +$_SERVER +['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'ua'; + +235 +$this +-> +id + = + `md5 +( + `¿nd +(0, 999999). +$_SERVER +['REMOTE_ADDR']. +$ua +.$this-> +ÝtiÚs +['session_cookie_secret']); + +238 +$this +-> +ÿche +-> + `£t +($this-> +id +, + `£rŸlize +($this-> +d©a +)); + +241 +$this +-> +»¥Ú£ +-> + `£tCook› +($this-> +ÝtiÚs +['session_name'], + +242 +$this +-> +id +.':'. + `sha1 +($this->id.':'.$this-> +ÝtiÚs +['session_cookie_secret']), + +243 +$this +-> +ÝtiÚs +['session_cookie_lifetime'], + +244 +$this +-> +ÝtiÚs +['session_cookie_path'], + +245 +$this +-> +ÝtiÚs +['session_cookie_domain'], + +246 +$this +-> +ÝtiÚs +['session_cookie_secure'], + +247 +$this +-> +ÝtiÚs +['session_cookie_httponly']); + +248 + `£ssiÚ_id +( +$this +-> +id +); + +249  +Œue +; + +250 + } +} + +255 +public + +funùiÚ + + $expœe +() + +258 +$this +-> + `»g’”©e +( +Œue +); + +260 if( +sfCÚfig +:: + `g‘ +('sf_logging_enabled')) + +262 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, '­¶iÿtiÚ.log', + `¬¿y +('new session created dueoƒxpiraton'))); + +264 + } +} + +271 +public + +funùiÚ + + $shutdown +() + +274 if( +$this +-> +d©aChªged + ==ð +Œue +) + +276 +$this +-> +ÿche +-> + `£t +($this-> +id +, + `£rŸlize +($this-> +d©a +)); + +277 if( +sfCÚfig +:: + `g‘ +('sf_logging_enabled')) + +279 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, '­¶iÿtiÚ.log', + `¬¿y +('Storing sessiono cache'))); + +282 + } +} + + @lib/vendor/symfony/lib/storage/sfDatabaseSessionStorage.class.php + +1 +ÝtiÚs +['db_table'])) + +56 +throw + +Ãw + + `sfIn™Ÿliz©iÚExû±iÚ +('You must…rovide‡ "db_table" optiono sfDatabaseSessionStorage.'); + +59 ià(! + `is£t +( +$this +-> +ÝtiÚs +['database'])) + +61 +throw + +Ãw + + `sfIn™Ÿliz©iÚExû±iÚ +('You must…rovide‡ "database" optiono sfDatabaseSessionStorage.'); + +65 + `£ssiÚ_£t_§ve_hªdËr +( + `¬¿y +( +$this +, 'sessionOpen'), + +66 + `¬¿y +( +$this +, 'sessionClose'), + +67 + `¬¿y +( +$this +, 'sessionRead'), + +68 + `¬¿y +( +$this +, 'sessionWrite'), + +69 + `¬¿y +( +$this +, 'sessionDestroy'), + +70 + `¬¿y +( +$this +, 'sessionGC')); + +73 + `£ssiÚ_¡¬t +(); + +81 +public + +funùiÚ + + $£ssiÚClo£ +() + +84  +Œue +; + +85 + } +} + +97 +public + +funùiÚ + + $£ssiÚO³n +( +$·th + = +nuÎ +, +$Çme + =‚ull) + +100 +$d©aba£ + = +$this +-> +ÝtiÚs +['database']; + +103 +$d©aba£CÏss + = + `g‘_þass +( +$d©aba£ +); + +104 if( +$d©aba£CÏss + == 'sfPropelDatabase') + +106 +$this +-> +db + = +Prݖ +:: + `g‘CÚÃùiÚ +( +$d©aba£ +-> + `g‘P¬am‘” +('name')); + +108 + `–£if +( +$d©aba£CÏss + == 'sfDoctrineDatabase') + +110 +$this +-> +db + = +$d©aba£ +-> + `g‘CÚÃùiÚ +(); + +114 +$this +-> +db + = +$d©aba£ +-> + `g‘Resourû +(); + +117 +$this +-> +cÚ + = +$d©aba£ +-> + `g‘CÚÃùiÚ +(); + +119 ià( +nuÎ + ==ð +$this +-> +db + &&‚uÎ ==ð$this-> +cÚ +) + +121 +throw + +Ãw + + `sfD©aba£Exû±iÚ +('Database connection does‚otƒxist. Unableo open session.'); + +124  +Œue +; + +125 + } +} + +136 +ab¡¿ù + +public + +funùiÚ + +£ssiÚDe¡roy +( +$id +); + +147 +ab¡¿ù + +public + +funùiÚ + +£ssiÚGC +( +$liãtime +); + +158 +ab¡¿ù + +public + +funùiÚ + +£ssiÚR—d +( +$id +); + +170 +ab¡¿ù + +public + +funùiÚ + +£ssiÚWr™e +( +$id +, +$d©a +); + +180 +public + +funùiÚ + + $»g’”©e +( +$de¡roy + = +çl£ +) + +182 ià( +£lf +:: +$£ssiÚIdReg’”©ed +) + +187 +$cu¼’tId + = + `£ssiÚ_id +(); + +189 +·»Á +:: + `»g’”©e +( +$de¡roy +); + +191 +$ÃwId + = + `£ssiÚ_id +(); + +192 +$this +-> + `£ssiÚR—d +( +$ÃwId +); + +194  +$this +-> + `£ssiÚWr™e +( +$ÃwId +, $this-> + `£ssiÚR—d +( +$cu¼’tId +)); + +195 + } +} + +201 +public + +funùiÚ + + $shutdown +() + +203 +·»Á +:: + `shutdown +(); + +204 + } +} + + @lib/vendor/symfony/lib/storage/sfMySQLSessionStorage.class.php + +1 +ÝtiÚs +['db_table']; + +39 +$db_id_cÞ + = +$this +-> +ÝtiÚs +['db_id_col']; + +42 +$id + = +$this +-> + `db_esÿ³ +($id); + +45 +$sql + = "DELETE FROM $db_table WHERE $db_id_col = '$id'"; + +47 ià( +$this +-> + `db_qu”y +( +$sql +)) + +49  +Œue +; + +53 +throw + +Ãw + + `sfD©aba£Exû±iÚ +( + `¥rštf +('% ÿÂÙ de¡roy sessiÚ id "%s" (%s).', + `g‘_þass +( +$this +), +$id +, $this-> + `db_”rÜ +())); + +65 +public + +funùiÚ + + $£ssiÚGC +( +$liãtime +) + +68 +$db_bË + = +$this +-> +ÝtiÚs +['db_table']; + +69 +$db_time_cÞ + = +$this +-> +ÝtiÚs +['db_time_col']; + +72 +$liãtime + = +$this +-> + `db_esÿ³ +($lifetime); + +73 +$sql + = "DELETE FROM $db_table WHERE $db_time_col + $lifetime < UNIX_TIMESTAMP()"; + +75 ià(! +$this +-> + `db_qu”y +( +$sql +)) + +77 +throw + +Ãw + + `sfD©aba£Exû±iÚ +( + `¥rštf +('% ÿÂÙ d–‘Þd sessiÚ (%s).', + `g‘_þass +( +$this +), $this-> + `db_”rÜ +())); + +80  +Œue +; + +81 + } +} + +92 +public + +funùiÚ + + $£ssiÚR—d +( +$id +) + +95 +$db_bË + = +$this +-> +ÝtiÚs +['db_table']; + +96 +$db_d©a_cÞ + = +$this +-> +ÝtiÚs +['db_data_col']; + +97 +$db_id_cÞ + = +$this +-> +ÝtiÚs +['db_id_col']; + +98 +$db_time_cÞ + = +$this +-> +ÝtiÚs +['db_time_col']; + +101 +$id + = +$this +-> + `db_esÿ³ +($id); + +104 +$sql + = "SELECT $db_data_col FROM $db_table WHERE $db_id_col = '$id'"; + +106 +$»suÉ + = +$this +-> + `db_qu”y +( +$sql +); + +108 ià( +$»suÉ + !ð +çl£ + && +$this +-> + `db_num_rows +($result) == 1) + +111 +$d©a + = +$this +-> + `db_ãtch_row +( +$»suÉ +); + +113  +$d©a +[0]; + +118 +$sql + = "INSERT INTO $db_table ($db_id_col, $db_data_col, $db_time_col) VALUES ('$id', '', UNIX_TIMESTAMP())"; + +119 ià( +$this +-> + `db_qu”y +( +$sql +)) + +125 +throw + +Ãw + + `sfD©aba£Exû±iÚ +( + `¥rštf +('% ÿÂÙ c»©Ãw„ecÜd fÜ id "%s" (%s).', + `g‘_þass +( +$this +), +$id +, $this-> + `db_”rÜ +())); + +127 + } +} + +139 +public + +funùiÚ + + $£ssiÚWr™e +( +$id +, +$d©a +) + +142 +$db_bË + = +$this +-> +ÝtiÚs +['db_table']; + +143 +$db_d©a_cÞ + = +$this +-> +ÝtiÚs +['db_data_col']; + +144 +$db_id_cÞ + = +$this +-> +ÝtiÚs +['db_id_col']; + +145 +$db_time_cÞ + = +$this +-> +ÝtiÚs +['db_time_col']; + +148 +$id + = +$this +-> + `db_esÿ³ +($id); + +149 +$d©a + = +$this +-> + `db_esÿ³ +($data); + +152 +$sql + = "UPDATE $db_table SET $db_data_col='$data', $db_time_col=UNIX_TIMESTAMP() WHERE $db_id_col='$id'"; + +154 ià( +$this +-> + `db_qu”y +( +$sql +)) + +156  +Œue +; + +160 +throw + +Ãw + + `sfD©aba£Exû±iÚ +( + `¥rštf +('% ÿÂÙ wr™£ssiÚ d©¨fÜ id "%s" (%s).', + `g‘_þass +( +$this +), +$id +, $this-> + `db_”rÜ +())); + +161 + } +} + +169 +´Ùeùed + +funùiÚ + + $db_qu”y +( +$qu”y +) + +171  @ + `mysql_qu”y +( +$qu”y +, +$this +-> +db +); + +172 + } +} + +180 +´Ùeùed + +funùiÚ + + $db_esÿ³ +( +$¡ršg +) + +182  + `mysql_»®_esÿ³_¡ršg +( +$¡ršg +, +$this +-> +db +); + +183 + } +} + +191 +´Ùeùed + +funùiÚ + + $db_num_rows +( +$»suÉ +) + +193  + `mysql_num_rows +( +$»suÉ +); + +194 + } +} + +202 +´Ùeùed + +funùiÚ + + $db_ãtch_row +( +$»suÉ +) + +204  + `mysql_ãtch_row +( +$»suÉ +); + +205 + } +} + +212 +´Ùeùed + +funùiÚ + + $db_”rÜ +() + +214  + `mysql_”rÜ +( +$this +-> +db +); + +215 + } +} + + @lib/vendor/symfony/lib/storage/sfMySQLiSessionStorage.class.php + +1 +db +, +$qu”y +); + +44 +´Ùeùed + +funùiÚ + + $db_esÿ³ +( +$¡ršg +) + +46  + `mysqli_»®_esÿ³_¡ršg +( +$this +-> +db +, +$¡ršg +); + +47 + } +} + +55 +´Ùeùed + +funùiÚ + + $db_num_rows +( +$»suÉ +) + +57  +$»suÉ +-> +num_rows +; + +58 + } +} + +66 +´Ùeùed + +funùiÚ + + $db_ãtch_row +( +$»suÉ +) + +68  +$»suÉ +-> + `ãtch_row +(); + +69 + } +} + +76 +´Ùeùed + +funùiÚ + + $db_”rÜ +() + +78  + `mysqli_”rÜ +( +$this +-> +db +); + +79 + } +} + + @lib/vendor/symfony/lib/storage/sfNoStorage.class.php + +1 +ÝtiÚs +['db_table']; + +39 +$db_id_cÞ + = +$this +-> +ÝtiÚs +['db_id_col']; + +42 +$sql + = 'DELETE FROM '. +$db_bË +.' WHERE '. +$db_id_cÞ +.'= ?'; + +44 +Œy + + +46 +$¡mt + = +$this +-> +db +-> + `´•¬e +( +$sql +); + +47 +$¡mt +-> + `bšdP¬am +(1, +$id +, +PDO +:: +PARAM_STR +); + +48 +$¡mt +-> + `execu‹ +(); + +50 + `ÿtch + ( +PDOExû±iÚ + +$e +) + +52 +throw + +Ãw + + `sfD©aba£Exû±iÚ +( + `¥rštf +('PDOExû±iÚ wa throwÀwh’ryšgØmªuϋ sessiÚ d©a. Mes§ge: %s', +$e +-> + `g‘Mes§ge +())); + +55  +Œue +; + +67 +public + +funùiÚ + + $£ssiÚGC +( +$liãtime +) + +70 +$db_bË + = +$this +-> +ÝtiÚs +['db_table']; + +71 +$db_time_cÞ + = +$this +-> +ÝtiÚs +['db_time_col']; + +74 +$sql + = 'DELETE FROM '. +$db_bË +.' WHERE '. +$db_time_cÞ +.' < '.( + `time +(è- +$liãtime +); + +76 +Œy + + +78 +$this +-> +db +-> + `qu”y +( +$sql +); + +80 + `ÿtch + ( +PDOExû±iÚ + +$e +) + +82 +throw + +Ãw + + `sfD©aba£Exû±iÚ +( + `¥rštf +('PDOExû±iÚ wa throwÀwh’ryšgØmªuϋ sessiÚ d©a. Mes§ge: %s', +$e +-> + `g‘Mes§ge +())); + +85  +Œue +; + +86 + } +} + +97 +public + +funùiÚ + + $£ssiÚR—d +( +$id +) + +100 +$db_bË + = +$this +-> +ÝtiÚs +['db_table']; + +101 +$db_d©a_cÞ + = +$this +-> +ÝtiÚs +['db_data_col']; + +102 +$db_id_cÞ + = +$this +-> +ÝtiÚs +['db_id_col']; + +103 +$db_time_cÞ + = +$this +-> +ÝtiÚs +['db_time_col']; + +105 +Œy + + +107 +$sql + = 'SELECT '. +$db_d©a_cÞ +.' FROM '. +$db_bË +.' WHERE '. +$db_id_cÞ +.'=?'; + +109 +$¡mt + = +$this +-> +db +-> + `´•¬e +( +$sql +); + +110 +$¡mt +-> + `bšdP¬am +(1, +$id +, +PDO +:: +PARAM_STR +, 255); + +112 +$¡mt +-> + `execu‹ +(); + +115 +$£ssiÚRows + = +$¡mt +-> + `ãtchAÎ +( +PDO +:: +FETCH_NUM +); + +116 ià( + `couÁ +( +$£ssiÚRows +) == 1) + +118  +$£ssiÚRows +[0][0]; + +123 +$sql + = 'INSERT INTO '. +$db_bË +.'('. +$db_id_cÞ +.', '. +$db_d©a_cÞ +.', '. +$db_time_cÞ +.') VALUES (?, ?, ?)'; + +125 +$¡mt + = +$this +-> +db +-> + `´•¬e +( +$sql +); + +126 +$¡mt +-> + `bšdP¬am +(1, +$id +, +PDO +:: +PARAM_STR +); + +127 +$¡mt +-> + `bšdV®ue +(2, '', +PDO +:: +PARAM_STR +); + +128 +$¡mt +-> + `bšdV®ue +(3, + `time +(), +PDO +:: +PARAM_INT +); + +129 +$¡mt +-> + `execu‹ +(); + +134 + `ÿtch + ( +PDOExû±iÚ + +$e +) + +136 +throw + +Ãw + + `sfD©aba£Exû±iÚ +( + `¥rštf +('PDOExû±iÚ wa throwÀwh’ryšgØmªuϋ sessiÚ d©a. Mes§ge: %s', +$e +-> + `g‘Mes§ge +())); + +138 + } +} + +150 +public + +funùiÚ + + $£ssiÚWr™e +( +$id +, +$d©a +) + +153 +$db_bË + = +$this +-> +ÝtiÚs +['db_table']; + +154 +$db_d©a_cÞ + = +$this +-> +ÝtiÚs +['db_data_col']; + +155 +$db_id_cÞ + = +$this +-> +ÝtiÚs +['db_id_col']; + +156 +$db_time_cÞ + = +$this +-> +ÝtiÚs +['db_time_col']; + +158 +$sql + = 'UPDATE '. +$db_bË +.' SET '. +$db_d©a_cÞ +.' = ?, '. +$db_time_cÞ +.' = '. + `time +().' WHERE '. +$db_id_cÞ +.'= ?'; + +160 +Œy + + +162 +$¡mt + = +$this +-> +db +-> + `´•¬e +( +$sql +); + +163 +$¡mt +-> + `bšdP¬am +(1, +$d©a +, +PDO +:: +PARAM_STR +); + +164 +$¡mt +-> + `bšdP¬am +(2, +$id +, +PDO +:: +PARAM_STR +); + +165 +$¡mt +-> + `execu‹ +(); + +167 + `ÿtch + ( +PDOExû±iÚ + +$e +) + +169 +throw + +Ãw + + `sfD©aba£Exû±iÚ +( + `¥rštf +('PDOExû±iÚ wa throwÀwh’ryšgØmªuϋ sessiÚ d©a. Mes§ge: %s', +$e +-> + `g‘Mes§ge +())); + +172  +Œue +; + +173 + } +} + + @lib/vendor/symfony/lib/storage/sfPostgreSQLSessionStorage.class.php + +1 +ÝtiÚs +['db_table']; + +38 +$db_id_cÞ + = +$this +-> +ÝtiÚs +['db_id_col']; + +41 +$id + = + `add¦ashes +($id); + +44 +$sql + = 'DELETE FROM '. +$db_bË +.' WHERE '. +$db_id_cÞ +.' = \''. +$id +.'\''; + +46 ià(@ + `pg_qu”y +( +$this +-> +db +, +$sql +)) + +48  +Œue +; + +52 +throw + +Ãw + + `sfD©aba£Exû±iÚ +( + `¥rštf +('sfPo¡g»SQLSessiÚStÜagÿÂÙ de¡roy sessiÚ id "%s".', +$id +)); + +64 +public + +funùiÚ + + $£ssiÚGC +( +$liãtime +) + +67 +$db_bË + = +$this +-> +ÝtiÚs +['db_table']; + +68 +$db_time_cÞ + = +$this +-> +ÝtiÚs +['db_time_col']; + +71 +$sql + = 'DELETE FROM '. +$db_bË +.' WHERE '. +$db_time_cÞ +.' < '.( + `time +(è- +$liãtime +); + +73 ià(!@ + `pg_qu”y +( +$this +-> +db +, +$sql +)) + +75 +throw + +Ãw + + `sfD©aba£Exû±iÚ +('sfPostgreSQLSessionStorage cannot delete old sessions.'); + +78  +Œue +; + +79 + } +} + +90 +public + +funùiÚ + + $£ssiÚR—d +( +$id +) + +93 +$db_bË + = +$this +-> +ÝtiÚs +['db_table']; + +94 +$db_d©a_cÞ + = +$this +-> +ÝtiÚs +['db_data_col']; + +95 +$db_id_cÞ + = +$this +-> +ÝtiÚs +['db_id_col']; + +96 +$db_time_cÞ + = +$this +-> +ÝtiÚs +['db_time_col']; + +99 +$id + = + `add¦ashes +($id); + +102 +$sql + = 'SELECT '. +$db_d©a_cÞ +.' FROM '. +$db_bË +.' WHERE '. +$db_id_cÞ +.' = \''. +$id +.'\''; + +104 +$»suÉ + = @ + `pg_qu”y +( +$this +-> +db +, +$sql +); + +106 ià( +$»suÉ + !ð +çl£ + && @ + `pg_num_rows +($result) == 1) + +109 +$d©a + = + `pg_ãtch_row +( +$»suÉ +); + +111  +$d©a +[0]; + +116 +$sql + = 'INSERT INTO '. +$db_bË +.' ('. +$db_id_cÞ +.', '. +$db_d©a_cÞ +.', '. +$db_time_cÞ +.'èVALUES (\''. +$id +.'\', \'\', '. + `time +().')'; + +118 ià(@ + `pg_qu”y +( +$this +-> +db +, +$sql +)) + +124 +throw + +Ãw + + `sfD©aba£Exû±iÚ +( + `¥rštf +('sfPo¡g»SQLSessiÚStÜagÿÂÙ c»©Ãw„ecÜd fÜ id "%s".', +$id +)); + +126 + } +} + +138 +public + +funùiÚ + + $£ssiÚWr™e +( +$id +, +$d©a +) + +141 +$db_bË + = +$this +-> +ÝtiÚs +['db_table']; + +142 +$db_d©a_cÞ + = +$this +-> +ÝtiÚs +['db_data_col']; + +143 +$db_id_cÞ + = +$this +-> +ÝtiÚs +['db_id_col']; + +144 +$db_time_cÞ + = +$this +-> +ÝtiÚs +['db_time_col']; + +147 +$id + = + `add¦ashes +($id); + +148 +$d©a + = + `add¦ashes +($data); + +151 +$sql + = 'UPDATE '. +$db_bË +.' SET '. +$db_d©a_cÞ +.' = \''. +$d©a +.'\', '. +$db_time_cÞ +.' = '. + `time +().' WHERE '. +$db_id_cÞ +.' = \''. +$id +.'\''; + +153 ià(@ + `pg_qu”y +( +$this +-> +db +, +$sql +)) + +155  +Œue +; + +159 +throw + +Ãw + + `sfD©aba£Exû±iÚ +( + `¥rštf +('sfPo¡g»SQLSessiÚStÜagÿÂÙ wr™£ssiÚ d©¨fÜ id "%s".', +$id +)); + +160 + } +} + + @lib/vendor/symfony/lib/storage/sfSessionStorage.class.php + +1 +nuÎ +, + +57 'auto_¡¬t' => +Œue +, + +58 '£ssiÚ_cook›_liãtime' => +$cook›DeçuÉs +['lifetime'], + +59 '£ssiÚ_cook›_·th' => +$cook›DeçuÉs +['path'], + +60 '£ssiÚ_cook›_domaš' => +$cook›DeçuÉs +['domain'], + +61 '£ssiÚ_cook›_£cu»' => +$cook›DeçuÉs +['secure'], + +62 '£ssiÚ_cook›_h‰pÚly' => + `is£t +( +$cook›DeçuÉs +['h‰pÚly']è? $cook›DeçuÉs['h‰pÚly'] : +çl£ +, + +63 '£ssiÚ_ÿche_lim™”' => +nuÎ +, + +64 ), +$ÝtiÚs +); + +67 +·»Á +:: + `š™Ÿlize +( +$ÝtiÚs +); + +70 +$£ssiÚName + = +$this +-> +ÝtiÚs +['session_name']; + +72 + `£ssiÚ_Çme +( +$£ssiÚName +); + +74 ià(!( +boޗn +è + `ši_g‘ +('£ssiÚ.u£_cook›s'è&& +$£ssiÚId + = +$this +-> +ÝtiÚs +['session_id']) + +76 + `£ssiÚ_id +( +$£ssiÚId +); + +79 +$liãtime + = +$this +-> +ÝtiÚs +['session_cookie_lifetime']; + +80 +$·th + = +$this +-> +ÝtiÚs +['session_cookie_path']; + +81 +$domaš + = +$this +-> +ÝtiÚs +['session_cookie_domain']; + +82 +$£cu» + = +$this +-> +ÝtiÚs +['session_cookie_secure']; + +83 +$h‰pOÆy + = +$this +-> +ÝtiÚs +['session_cookie_httponly']; + +84 + `£ssiÚ_£t_cook›_·¿ms +( +$liãtime +, +$·th +, +$domaš +, +$£cu» +, +$h‰pOÆy +); + +86 ià( +nuÎ + !=ð +$this +-> +ÝtiÚs +['session_cache_limiter']) + +88 + `£ssiÚ_ÿche_lim™” +( +$this +-> +ÝtiÚs +['session_cache_limiter']); + +91 ià( +$this +-> +ÝtiÚs +['auto_¡¬t'] && ! +£lf +:: +$£ssiÚS¹ed +) + +93 + `£ssiÚ_¡¬t +(); + +94 +£lf +:: +$£ssiÚS¹ed + = +Œue +; + +107 +public + +funùiÚ + + $»ad +( +$key +) + +109 +$»tv® + = +nuÎ +; + +111 ià( + `is£t +( +$_SESSION +[ +$key +])) + +113 +$»tv® + = +$_SESSION +[ +$key +]; + +116  +$»tv® +; + +117 + } +} + +128 +public + +funùiÚ + + $»move +( +$key +) + +130 +$»tv® + = +nuÎ +; + +132 ià( + `is£t +( +$_SESSION +[ +$key +])) + +134 +$»tv® + = +$_SESSION +[ +$key +]; + +135 + `un£t +( +$_SESSION +[ +$key +]); + +138  +$»tv® +; + +139 + } +} + +150 +public + +funùiÚ + + $wr™e +( +$key +, +$d©a +) + +152 +$_SESSION +[ +$key +] = +$d©a +; + +153 + } +} + +163 +public + +funùiÚ + + $»g’”©e +( +$de¡roy + = +çl£ +) + +165 ià( +£lf +:: +$£ssiÚIdReg’”©ed +) + +171 + `£ssiÚ_»g’”©e_id +( +$de¡roy +); + +173 +£lf +:: +$£ssiÚIdReg’”©ed + = +Œue +; + +174 + } +} + +180 +public + +funùiÚ + + $shutdown +() + +183 + `£ssiÚ_wr™e_þo£ +(); + +184 + } +} + + @lib/vendor/symfony/lib/storage/sfSessionTestStorage.class.php + +1 +nuÎ +, + +44 ), +$ÝtiÚs +); + +47 +·»Á +:: + `š™Ÿlize +( +$ÝtiÚs +); + +49 +$this +-> +£ssiÚId + = +nuÎ + !=ð$this-> +ÝtiÚs +['£ssiÚ_id'] ? $this->ÝtiÚs['£ssiÚ_id'] : ( + `¬¿y_key_exi¡s +('£ssiÚ_id', +$_SERVER +) ? $_SERVER['session_id'] :‚ull); + +51 ià( +$this +-> +£ssiÚId +) + +54 +$fže + = +$this +-> +ÝtiÚs +['£ssiÚ_·th']. +DIRECTORY_SEPARATOR +.$this-> +£ssiÚId +.'.session'; + +55 +$this +-> +£ssiÚD©a + = + `fže_exi¡s +( +$fže +è? + `un£rŸlize +( + `fže_g‘_cڋÁs +($fže)è: + `¬¿y +(); + +59 +$this +-> +£ssiÚId + = + `md5 +( + `uniqid +( + `¿nd +(), +Œue +)); + +60 +$this +-> +£ssiÚD©a + = + `¬¿y +(); + +69 +public + +funùiÚ + + $g‘SessiÚId +() + +71  +$this +-> +£ssiÚId +; + +72 + } +} + +83 +public + +funùiÚ + + $»ad +( +$key +) + +85 +$»tv® + = +nuÎ +; + +87 ià( + `is£t +( +$this +-> +£ssiÚD©a +[ +$key +])) + +89 +$»tv® + = +$this +-> +£ssiÚD©a +[ +$key +]; + +92  +$»tv® +; + +93 + } +} + +104 +public + +funùiÚ + + $»move +( +$key +) + +106 +$»tv® + = +nuÎ +; + +108 ià( + `is£t +( +$this +-> +£ssiÚD©a +[ +$key +])) + +110 +$»tv® + = +$this +-> +£ssiÚD©a +[ +$key +]; + +111 + `un£t +( +$this +-> +£ssiÚD©a +[ +$key +]); + +114  +$»tv® +; + +115 + } +} + +126 +public + +funùiÚ + + $wr™e +( +$key +, +$d©a +) + +128 +$this +-> +£ssiÚD©a +[ +$key +] = +$d©a +; + +129 + } +} + +134 +public + +funùiÚ + + $þ—r +() + +136 +sfToÞk™ +:: + `þ—rDœeùÜy +( +$this +-> +ÝtiÚs +['session_path']); + +137 + } +} + +147 +public + +funùiÚ + + $»g’”©e +( +$de¡roy + = +çl£ +) + +149  +Œue +; + +150 + } +} + +156 +public + +funùiÚ + + $shutdown +() + +158 ià( +$this +-> +£ssiÚId +) + +160 +$cu¼’t_umask + = + `umask +(0000); + +161 ià(! + `is_dœ +( +$this +-> +ÝtiÚs +['session_path'])) + +163 + `mkdœ +( +$this +-> +ÝtiÚs +['£ssiÚ_·th'], 0777, +Œue +); + +165 + `umask +( +$cu¼’t_umask +); + +166 + `fže_put_cڋÁs +( +$this +-> +ÝtiÚs +['£ssiÚ_·th']. +DIRECTORY_SEPARATOR +.$this-> +£ssiÚId +.'.£ssiÚ', + `£rŸlize +($this-> +£ssiÚD©a +)); + +167 +$this +-> +£ssiÚId + = ''; + +168 +$this +-> +£ssiÚD©a + = + `¬¿y +(); + +170 + } +} + + @lib/vendor/symfony/lib/storage/sfStorage.class.php + +1 + `š™Ÿlize +( +$ÝtiÚs +); + +35 ià( +$this +-> +ÝtiÚs +['auto_shutdown']) + +37 + `»gi¡”_shutdown_funùiÚ +( + `¬¿y +( +$this +, 'shutdown')); + +54 +public + +funùiÚ + + `š™Ÿlize +( +$ÝtiÚs + = + $¬¿y +()) + +56 +$this +-> +ÝtiÚs + = + `¬¿y_m”ge +( + `¬¿y +( + +57 'auto_shutdown' => +Œue +, + +58 ), +$ÝtiÚs +); + +59 + } +} + +66 +public + +funùiÚ + + $g‘O±iÚs +() + +68  +$this +-> +ÝtiÚs +; + +69 + } +} + +82 +ab¡¿ù + +public + +funùiÚ + +»ad +( +$key +); + +93 +ab¡¿ù + +public + +funùiÚ + +»g’”©e +( +$de¡roy + = +çl£ +); + +106 +ab¡¿ù + +public + +funùiÚ + +»move +( +$key +); + +113 +ab¡¿ù + +public + +funùiÚ + +shutdown +(); + +125 +ab¡¿ù + +public + +funùiÚ + +wr™e +( +$key +, +$d©a +); + + @lib/vendor/symfony/lib/task/app/sfAppRoutesTask.class.php + +1 + `addArgum’ts +( + `¬¿y +( + +30 +Ãw + + `sfCommªdArgum’t +('­¶iÿtiÚ', +sfCommªdArgum’t +:: +REQUIRED +, 'The‡pplication‚ame'), + +31 +Ãw + + `sfCommªdArgum’t +('Çme', +sfCommªdArgum’t +:: +OPTIONAL +, 'A„oute‚ame'), + +34 +$this +-> +Çme¥aû + = 'app'; + +35 +$this +-> +Çme + = 'routes'; + +36 +$this +-> +br›fDesütiÚ + = 'Displays current„outes for‡n‡pplication'; + +38 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +39 +The + [ +­p +: +rou‹s +| +INFO +] +di¥Ïys + +the + +cu¼’t +„ou‹  +a + +giv’ + +­¶iÿtiÚ +: + +41 [./ +symfÚy + +­p +: +rou‹s + +äڋnd +| +INFO +] + +42 +EOF +; + +48 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +50 +$this +-> +rou‹s + = $this-> + `g‘Routšg +()-> + `g‘Rou‹s +(); + +53 +$¬gum’ts +['Çme'] ? +$this +-> + `ouutRou‹ +($¬gum’ts['­¶iÿtiÚ'], $¬gum’ts['Çme']è: $this-> + `ouutRou‹s +($arguments['application']); + +54 + } +} + +56 +´Ùeùed + +funùiÚ + + $ouutRou‹s +( +$­¶iÿtiÚ +) + +58 +$this +-> + `logSeùiÚ +('­p', + `¥rštf +('Cu¼’ˆrou‹ f܇µliÿtiÚ "%s"', +$­¶iÿtiÚ +)); + +60 +$maxName + = 4; + +61 +$maxM‘hod + = 6; + +62 + `fܗch + ( +$this +-> +rou‹s + +as + +$Çme + => +$rou‹ +) + +64 +$»quœem’ts + = +$rou‹ +-> + `g‘Requœem’ts +(); + +65 +$m‘hod + = + `is£t +( +$»quœem’ts +['sf_m‘hod']è? + `¡¹ouµ” +( + `is_¬¿y +($»quœem’ts['sf_m‘hod']è? + `im¶ode +(', ', $requirements['sf_method']) : $requirements['sf_method']) : 'ANY'; + +67 ià( + `¡¾’ +( +$Çme +è> +$maxName +) + +69 +$maxName + = + `¡¾’ +( +$Çme +); + +72 ià( + `¡¾’ +( +$m‘hod +è> +$maxM‘hod +) + +74 +$maxM‘hod + = + `¡¾’ +( +$m‘hod +); + +77 +$fÜm© + = '%-'. +$maxName +.' %-'. +$maxM‘hod +.'s %s'; + +80 +$fÜm©1 + = '%-'.( +$maxName + + 9).' %-'.( +$maxM‘hod + + 9).'s %s'; + +81 +$this +-> + `log +( + `¥rštf +( +$fÜm©1 +, $this-> +fÜm©‹r +-> + `fÜm© +('Name', 'COMMENT'), $this->formatter->format('Method', 'COMMENT'), $this->formatter->format('Pattern', 'COMMENT'))); + +82 + `fܗch + ( +$this +-> +rou‹s + +as + +$Çme + => +$rou‹ +) + +84 +$»quœem’ts + = +$rou‹ +-> + `g‘Requœem’ts +(); + +85 +$m‘hod + = + `is£t +( +$»quœem’ts +['sf_m‘hod']è? + `¡¹ouµ” +( + `is_¬¿y +($»quœem’ts['sf_m‘hod']è? + `im¶ode +(', ', $requirements['sf_method']) : $requirements['sf_method']) : 'ANY'; + +86 +$this +-> + `log +( + `¥rštf +( +$fÜm© +, +$Çme +, +$m‘hod +, +$rou‹ +-> + `g‘P©‹º +())); + +88 + } +} + +90 +´Ùeùed + +funùiÚ + + $ouutRou‹ +( +$­¶iÿtiÚ +, +$Çme +) + +92 +$this +-> + `logSeùiÚ +('­p', + `¥rštf +('Rou‹ "%s" f܇µliÿtiÚ "%s"', +$Çme +, +$­¶iÿtiÚ +)); + +94 ià(! + `is£t +( +$this +-> +rou‹s +[ +$Çme +])) + +96 +throw + +Ãw + + `sfCommªdExû±iÚ +( + `¥rštf +('Throu‹ "%s" dÛ nكxi¡.', +$Çme +)); + +99 +$rou‹ + = +$this +-> +rou‹s +[ +$Çme +]; + +100 +$this +-> + `log +( + `¥rštf +('%  %s', $this-> +fÜm©‹r +-> + `fÜm© +('Name', 'COMMENT'), +$Çme +)); + +101 +$this +-> + `log +( + `¥rštf +('%  %s', $this-> +fÜm©‹r +-> + `fÜm© +('P©‹º', 'COMMENT'), +$rou‹ +-> + `g‘P©‹º +())); + +102 +$this +-> + `log +( + `¥rštf +('%  %s', $this-> +fÜm©‹r +-> + `fÜm© +('CÏss', 'COMMENT'), + `g‘_þass +( +$rou‹ +))); + +104 +$deçuÉs + = ''; + +105 +$d + = +$rou‹ +-> + `g‘DeçuÉs +(); + +106 + `ksÜt +( +$d +); + +107 + `fܗch + ( +$d + +as + +$Çme + => +$v®ue +) + +109 +$deçuÉs + .ð($deçuÉ ? "\n". + `¡r_»³© +(' ', 13è: ''). +$Çme +.': '. +$this +-> + `fÜm©V®ue +( +$v®ue +); + +111 +$this +-> + `log +( + `¥rštf +('%  %s', $this-> +fÜm©‹r +-> + `fÜm© +('DeçuÉs', 'COMMENT'), +$deçuÉs +)); + +113 +$»quœem’ts + = ''; + +114 +$r + = +$rou‹ +-> + `g‘Requœem’ts +(); + +115 + `ksÜt +( +$r +); + +116 + `fܗch + ( +$r + +as + +$Çme + => +$v®ue +) + +118 +$»quœem’ts + .ð($»quœem’t ? "\n". + `¡r_»³© +(' ', 13è: ''). +$Çme +.': '. +$this +-> + `fÜm©V®ue +( +$v®ue +); + +120 +$this +-> + `log +( + `¥rštf +('% %s', $this-> +fÜm©‹r +-> + `fÜm© +('Requœem’ts', 'COMMENT'), +$»quœem’ts +)); + +122 +$ÝtiÚs + = ''; + +123 +$o + = +$rou‹ +-> + `g‘O±iÚs +(); + +124 + `ksÜt +( +$o +); + +125 + `fܗch + ( +$o + +as + +$Çme + => +$v®ue +) + +127 +$ÝtiÚs + .ð($ÝtiÚ ? "\n". + `¡r_»³© +(' ', 13è: ''). +$Çme +.': '. +$this +-> + `fÜm©V®ue +( +$v®ue +); + +129 +$this +-> + `log +( + `¥rštf +('%  %s', $this-> +fÜm©‹r +-> + `fÜm© +('O±iÚs', 'COMMENT'), +$ÝtiÚs +)); + +130 +$this +-> + `log +( + `¥rštf +('%  %s', $this-> +fÜm©‹r +-> + `fÜm© +('Regex', 'COMMENT'), + `´eg_»¶aû +('/^ /', '',…»g_»¶aû('/^/m', ' ', +$rou‹ +-> + `g‘Regex +())))); + +132 +$tok’s + = ''; + +133 + `fܗch + ( +$rou‹ +-> + `g‘Tok’s +(è +as + +$tok’ +) + +135 ià(! +$tok’s +) + +137 +$tok’s + = +$this +-> + `di¥ÏyTok’ +( +$tok’ +); + +141 +$tok’s + .ð"\n". + `¡r_»³© +(' ', 13). +$this +-> + `di¥ÏyTok’ +( +$tok’ +); + +144 +$this +-> + `log +( + `¥rštf +('%  %s', $this-> +fÜm©‹r +-> + `fÜm© +('Tok’s', 'COMMENT'), +$tok’s +)); + +145 + } +} + +147 +´Ùeùed + +funùiÚ + + $di¥ÏyTok’ +( +$tok’ +) + +149 +$ty³ + = + `¬¿y_shiá +( +$tok’ +); + +150 + `¬¿y_shiá +( +$tok’ +); + +152  + `¥rštf +('%-10 %s', +$ty³ +, +$this +-> + `fÜm©V®ue +( +$tok’ +)); + +153 + } +} + +155 +´Ùeùed + +funùiÚ + + $fÜm©V®ue +( +$v®ue +) + +157 ià( + `is_objeù +( +$v®ue +)) + +159  + `¥rštf +('objeù(%s)', + `g‘_þass +( +$v®ue +)); + +163  + `´eg_»¶aû +("/\n\s*/s", '', + `v¬_expÜt +( +$v®ue +, +Œue +)); + +165 + } +} + + @lib/vendor/symfony/lib/task/cache/sfCacheClearTask.class.php + +1 + `addO±iÚs +( + `¬¿y +( + +30 +Ãw + + `sfCommªdO±iÚ +('­p', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL +, 'The‡pplication‚ame',‚ull), + +31 +Ãw + + `sfCommªdO±iÚ +('’v', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL +, 'Theƒnvironment',‚ull), + +32 +Ãw + + `sfCommªdO±iÚ +('ty³', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL +, 'Theype', 'all'), + +35 +$this +-> +®Ÿ£s + = + `¬¿y +('cc'); + +36 +$this +-> +Çme¥aû + = 'cache'; + +37 +$this +-> +Çme + = 'clear'; + +38 +$this +-> +br›fDesütiÚ + = 'Clearshe cache'; + +40 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +41 +The + [ +ÿche +: +þ—r +| +INFO +] +sk + +þ—rs + +the + +symfÚy + cache. + +43 +By + , +™ + +»moves + +the + +ÿche +  +®l + +avažabË + +ty³s +,‡Î +­¶iÿtiÚs +, + +44 +ªd + +®l + +’vœÚm’ts +. + +46 +You + +ÿn + +»¡riù + +by + +ty³ +, +­¶iÿtiÚ +, +Ü + +’vœÚm’t +: + +48 +FÜ + +exam¶e +, +to + +þ—r + +the + [ +äڋnd +| +COMMENT +] +­¶iÿtiÚ + +ÿche +: + +50 [./ +symfÚy + +ÿche +: +þ—r + -- +­p += +äڋnd +| +INFO +] + +52 +To + +þ—r + +the + +ÿche + th[ +´od +| +COMMENT +] +’vœÚm’t + th[ +äڋnd +|COMMENT] +­¶iÿtiÚ +: + +54 [./ +symfÚy + +ÿche +: +þ—r + -- +­p += +äڋnd + -- +’v += +´od +| +INFO +] + +56 +To + +þ—r + +the + +ÿche +  +®l + [ +´od +| +COMMENT +] +’vœÚm’ts +: + +58 [./ +symfÚy + +ÿche +: +þ—r + -- +’v += +´od +| +INFO +] + +60 +To + +þ—r + +the + [ +cÚfig +| +COMMENT +] +ÿche +  +®l + [ +´od +|COMMENT] +’vœÚm’ts +: + +62 [./ +symfÚy + +ÿche +: +þ—r + -- +ty³ += +cÚfig + -- +’v += +´od +| +INFO +] + +64 +The + +bužt +- +š + +ty³s + +¬e +: [ +cÚfig +| +COMMENT +], [ +i18n +|COMMENT], [ +routšg +|COMMENT], [ +moduË +|COMMENT] + +65 +ªd + [ +‹m¶©e +| +COMMENT +]. + +67 +EOF +; + +73 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +75 ià(! +sfCÚfig +:: + `g‘ +('sf_ÿche_dœ'è|| ! + `is_dœ +(sfConfig::get('sf_cache_dir'))) + +77 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('CachdœeùÜy "%s" dÛ nكxi¡.', +sfCÚfig +:: + `g‘ +('sf_cache_dir'))); + +81 +$dœFšd” + = +sfFšd” +:: + `ty³ +('dœ')-> + `disÿrd +('.sf')-> + `maxd•th +(0)-> + `»Ïtive +(); + +84 +$­ps + = +nuÎ + ==ð +$ÝtiÚs +['­p'] ? +$dœFšd” +-> + `š +( +sfCÚfig +:: + `g‘ +('sf_­ps_dœ')è: + `¬¿y +($options['app']); + +85 + `fܗch + ( +$­ps + +as + +$­p +) + +87 +$this +-> + `checkAµExi¡s +( +$­p +); + +89 ià(! + `is_dœ +( +sfCÚfig +:: + `g‘ +('sf_ÿche_dœ').'/'. +$­p +)) + +95 +$’vs + = +nuÎ + ==ð +$ÝtiÚs +['’v'] ? +$dœFšd” +-> + `š +( +sfCÚfig +:: + `g‘ +('sf_ÿche_dœ').'/'. +$­p +è: + `¬¿y +($options['env']); + +96 + `fܗch + ( +$’vs + +as + +$’v +) + +98 ià(! + `is_dœ +( +sfCÚfig +:: + `g‘ +('sf_ÿche_dœ').'/'. +$­p +.'/'. +$’v +)) + +103 +$this +-> + `logSeùiÚ +('ÿche', + `¥rštf +('Cˬšg cachty³ "%s" fÜ "%s"‡µ‡nd "%s"ƒnv', +$ÝtiÚs +['ty³'], +$­p +, +$’v +)); + +105 +$­pCÚfigu¿tiÚ + = +ProjeùCÚfigu¿tiÚ +:: + `g‘AµliÿtiÚCÚfigu¿tiÚ +( +$­p +, +$’v +, +Œue +); + +107 +$this +-> + `lock +( +$­p +, +$’v +); + +109 +$ev’t + = +$­pCÚfigu¿tiÚ +-> + `g‘Ev’tDi¥©ch” +()-> + `nÙifyUÁž +( +Ãw + + `sfEv’t +( +$this +, 'sk.ÿche.þ—r', + `¬¿y +('­p' => $­pCÚfigu¿tiÚ, '’v' => +$’v +, 'ty³' => +$ÝtiÚs +['type']))); + +110 ià(! +$ev’t +-> + `isProûs£d +()) + +113 +$m‘hod + = +$this +-> + `g‘CˬCacheM‘hod +( +$ÝtiÚs +['type']); + +114 ià(! + `m‘hod_exi¡s +( +$this +, +$m‘hod +)) + +116 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('DØnÙ know howØ»movÿchf܁y³ "%s".', +$ÝtiÚs +['type'])); + +118 +$this +-> + `$m‘hod +( +$­pCÚfigu¿tiÚ +); + +121 +$this +-> + `uÆock +( +$­p +, +$’v +); + +126 ià( +nuÎ + ==ð +$ÝtiÚs +['app'] && 'all' == $options['type']) + +128 +$this +-> + `g‘Fžesy¡em +()-> + `»move +( +sfFšd” +:: + `ty³ +('fže')-> + `disÿrd +('.sf')-> + `š +( +sfCÚfig +:: + `g‘ +('sf_cache_dir'))); + +130 + } +} + +132 +´Ùeùed + +funùiÚ + + $g‘CˬCacheM‘hod +( +$ty³ +) + +134  + `¥rštf +('þ—r%sCache', + `ucfœ¡ +( +$ty³ +)); + +135 + } +} + +137 +´Ùeùed + +funùiÚ + + $þ—rAÎCache +( +sfAµliÿtiÚCÚfigu¿tiÚ + +$­pCÚfigu¿tiÚ +) + +139 +$this +-> + `þ—rI18NCache +( +$­pCÚfigu¿tiÚ +); + +140 +$this +-> + `þ—rRoutšgCache +( +$­pCÚfigu¿tiÚ +); + +141 +$this +-> + `þ—rTem¶©eCache +( +$­pCÚfigu¿tiÚ +); + +142 +$this +-> + `þ—rModuËCache +( +$­pCÚfigu¿tiÚ +); + +143 +$this +-> + `þ—rCÚfigCache +( +$­pCÚfigu¿tiÚ +); + +144 + } +} + +146 +´Ùeùed + +funùiÚ + + $þ—rCÚfigCache +( +sfAµliÿtiÚCÚfigu¿tiÚ + +$­pCÚfigu¿tiÚ +) + +148 +$subDœ + = +sfCÚfig +:: + `g‘ +('sf_ÿche_dœ').'/'. +$­pCÚfigu¿tiÚ +-> + `g‘AµliÿtiÚ +().'/'.$­pCÚfigu¿tiÚ-> + `g‘EnvœÚm’t +().'/config'; + +150 ià( + `is_dœ +( +$subDœ +)) + +153 +$this +-> + `g‘Fžesy¡em +()-> + `»move +( +sfFšd” +:: + `ty³ +('fže')-> + `disÿrd +('.sf')-> + `š +( +$subDœ +)); + +155 + } +} + +157 +´Ùeùed + +funùiÚ + + $þ—rI18NCache +( +sfAµliÿtiÚCÚfigu¿tiÚ + +$­pCÚfigu¿tiÚ +) + +159 +$cÚfig + = +$this +-> + `g‘FaùܛsCÚfigu¿tiÚ +( +$­pCÚfigu¿tiÚ +); + +161 ià( + `is£t +( +$cÚfig +['i18n']['param']['cache'])) + +163 +$this +-> + `þ—nCacheFromFaùÜyCÚfig +( +$cÚfig +['i18n']['param']['cache']); + +165 + } +} + +167 +´Ùeùed + +funùiÚ + + $þ—rRoutšgCache +( +sfAµliÿtiÚCÚfigu¿tiÚ + +$­pCÚfigu¿tiÚ +) + +169 +$cÚfig + = +$this +-> + `g‘FaùܛsCÚfigu¿tiÚ +( +$­pCÚfigu¿tiÚ +); + +171 ià( + `is£t +( +$cÚfig +['routing']['param']['cache'])) + +173 +$this +-> + `þ—nCacheFromFaùÜyCÚfig +( +$cÚfig +['routing']['param']['cache']); + +175 + } +} + +177 +´Ùeùed + +funùiÚ + + $þ—rTem¶©eCache +( +sfAµliÿtiÚCÚfigu¿tiÚ + +$­pCÚfigu¿tiÚ +) + +179 +$cÚfig + = +$this +-> + `g‘FaùܛsCÚfigu¿tiÚ +( +$­pCÚfigu¿tiÚ +); + +181 ià( + `is£t +( +$cÚfig +['view_cache'])) + +183 +$this +-> + `þ—nCacheFromFaùÜyCÚfig +( +$cÚfig +['view_cache']); + +185 + } +} + +187 +´Ùeùed + +funùiÚ + + $þ—rModuËCache +( +sfAµliÿtiÚCÚfigu¿tiÚ + +$­pCÚfigu¿tiÚ +) + +189 +$subDœ + = +sfCÚfig +:: + `g‘ +('sf_ÿche_dœ').'/'. +$­pCÚfigu¿tiÚ +-> + `g‘AµliÿtiÚ +().'/'.$­pCÚfigu¿tiÚ-> + `g‘EnvœÚm’t +().'/modules'; + +191 ià( + `is_dœ +( +$subDœ +)) + +194 +$this +-> + `g‘Fžesy¡em +()-> + `»move +( +sfFšd” +:: + `ty³ +('fže')-> + `disÿrd +('.sf')-> + `š +( +$subDœ +)); + +196 + } +} + +198 +public + +funùiÚ + + $g‘FaùܛsCÚfigu¿tiÚ +( +sfAµliÿtiÚCÚfigu¿tiÚ + +$­pCÚfigu¿tiÚ +) + +200 +$­p + = +$­pCÚfigu¿tiÚ +-> + `g‘AµliÿtiÚ +(); + +201 +$’v + = +$­pCÚfigu¿tiÚ +-> + `g‘EnvœÚm’t +(); + +203 ià(! + `is£t +( +$this +-> +cÚfig +[ +$­p +])) + +205 +$this +-> +cÚfig +[ +$­p +] = + `¬¿y +(); + +208 ià(! + `is£t +( +$this +-> +cÚfig +[ +$­p +][ +$’v +])) + +210 +$this +-> +cÚfig +[ +$­p +][ +$’v +] = +sfFaùÜyCÚfigHªdËr +:: + `g‘CÚfigu¿tiÚ +( +$­pCÚfigu¿tiÚ +-> + `g‘CÚfigP©hs +('config/factories.yml')); + +213  +$this +-> +cÚfig +[ +$­p +][ +$’v +] ; + +214 + } +} + +216 +public + +funùiÚ + +þ—nCacheFromFaùÜyCÚfig +( +$þass +, +$·¿m‘”s + = + $¬¿y +()) + +218 ià( +$þass +) + +221 ià( + `is_¬¿y +( +$þass +)) + +223 ià(! + `is£t +( +$þass +['class'])) + +227 ià( + `is£t +( +$þass +['param'])) + +229 +$·¿m‘”s + = +$þass +['param']; + +231 +$þass + = $class['class']; + +233 +$ÿche + = +Ãw + + `$þass +( +$·¿m‘”s +); + +234 +$ÿche +-> + `þ—n +(); + +236 + } +} + +238 +´Ùeùed + +funùiÚ + + $lock +( +$­p +, +$’v +) + +241 +$this +-> + `g‘Fžesy¡em +()-> + `touch +($this-> + `g‘LockFže +( +$­p +, +$’v +)); + +244 +$this +-> + `g‘Fžesy¡em +()-> + `chmod +($this-> + `g‘LockFže +( +$­p +, +$’v +), 0777); + +245 + } +} + +247 +´Ùeùed + +funùiÚ + + $uÆock +( +$­p +, +$’v +) + +250 +$this +-> + `g‘Fžesy¡em +()-> + `»move +($this-> + `g‘LockFže +( +$­p +, +$’v +)); + +251 + } +} + +253 +´Ùeùed + +funùiÚ + + $g‘LockFže +( +$­p +, +$’v +) + +255  +sfCÚfig +:: + `g‘ +('sf_d©a_dœ').'/'. +$­p +.'_'. +$’v +.'-cli.lck'; + +256 + } +} + + @lib/vendor/symfony/lib/task/configure/sfConfigureAuthorTask.class.php + +1 + `addArgum’ts +( + `¬¿y +( + +27 +Ãw + + `sfCommªdArgum’t +('authÜ', +sfCommªdArgum’t +:: +REQUIRED +, 'The…roject‡uthor'), + +30 +$this +-> +Çme¥aû + = 'configure'; + +31 +$this +-> +Çme + = 'author'; + +33 +$this +-> +br›fDesütiÚ + = 'Configure…roject‡uthor'; + +35 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +36 +The + [ +cÚfigu» +: +authÜ +| +INFO +] +sk + +cÚfigu»s + +the +‡uthÜ  +a + +´ojeù +: + +38 [./ +symfÚy + +cÚfigu» +: +authÜ + "Fab›ÀPْc›¸<çb›n.pْc›r@symfÚy-´ojeù.com>"| +INFO +] + +40 +The + +authÜ + +is + +u£d + +by + +the + +g’”©es + +to + +´e +- +cÚfigu» +h +PHPDoc + +h—d” +  +—ch + +g’”©ed + +fže +. + +42 +The + +v®ue + +is + +¡Üed + +š + [ +cÚfig +/ +´Ý”t›s +. +ši +]. + +43 +EOF +; + +49 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +51 +$fže + = +sfCÚfig +:: + `g‘ +('sf_config_dir').'/properties.ini'; + +52 +$cڋÁ + = + `·r£_ši_fže +( +$fže +, +Œue +); + +54 ià(! + `is£t +( +$cڋÁ +['symfony'])) + +56 +$cڋÁ +['symfÚy'] = + `¬¿y +(); + +59 +$cڋÁ +['symfÚy']['authÜ'] = +$¬gum’ts +['author']; + +61 +$ši + = ''; + +62 + `fܗch + ( +$cڋÁ + +as + +$£ùiÚ + => +$v®ues +) + +64 +$ši + .ð + `¥rštf +("[%s]\n", +$£ùiÚ +); + +65 + `fܗch + ( +$v®ues + +as + +$key + => +$v®ue +) + +67 +$ši + .ð + `¥rštf +(" %s=%s\n", +$key +, +$v®ue +); + +71 + `fže_put_cڋÁs +( +$fže +, +$ši +); + +72 + } +} + + @lib/vendor/symfony/lib/task/generator/sfGenerateAppTask.class.php + +1 + `addArgum’ts +( + `¬¿y +( + +29 +Ãw + + `sfCommªdArgum’t +('­p', +sfCommªdArgum’t +:: +REQUIRED +, 'The‡pplication‚ame'), + +32 +$this +-> + `addO±iÚs +( + `¬¿y +( + +33 +Ãw + + `sfCommªdO±iÚ +('esÿpšg-¡¿‹gy', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Ouuˆesÿpšg sŒ©egy', +Œue +), + +34 +Ãw + + `sfCommªdO±iÚ +('c¤f-£ü‘', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Seü‘Øu£ fÜ CSRF…rÙeùiÚ', +Œue +), + +37 +$this +-> +Çme¥aû + = 'generate'; + +38 +$this +-> +Çme + = 'app'; + +40 +$this +-> +br›fDesütiÚ + = 'Generates‡‚ew‡pplication'; + +42 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +43 +The + [ +g’”©e +: +­p +| +INFO +] +sk + +ü—‹s + +the + +basic + +dœeùÜy + +¡ruùu» + + +44  +a + +Ãw + +­¶iÿtiÚ + +š + +the + +cu¼’t + +´ojeù +: + +46 [./ +symfÚy + +g’”©e +: +­p + +äڋnd +| +INFO +] + +48 +This + +sk + +®so + +ü—‹s + +two + +äÚt + +cڌÞËr + +süts + +š + +the + + +49 [ +web +/| +COMMENT +] +dœeùÜy +: + +51 [ +web +/% +­¶iÿtiÚ +%. +php +| +INFO +]  +the + +´oduùiÚ + +’vœÚm’t + + +52 [ +web +/% +­¶iÿtiÚ +% +_dev +. +php +| +INFO +]  +the + +dev–Ým’t + +’vœÚm’t + + +54 +FÜ + +the + +fœ¡ + +­¶iÿtiÚ +,h +´oduùiÚ + +’vœÚm’t + +süt + +is + +Çmed + + +55 [ +šdex +. +php +| +COMMENT +]. + +57 +If + +ª + +­¶iÿtiÚ + +w™h + +the + +§me + +Çme + +®»ady + +exi¡s +, + +58 +™ + +throws + +a + [ +sfCommªdExû±iÚ +| +COMMENT +]. + +60 +By + , +the + +ouut + +esÿpšg + +is + + `’abËd + ( +to + +´ev’t + +XSS +), +ªd + +a + +¿ndom + + +61 +£ü‘ + +is + +®so + +g’”©ed + +to + +´ev’t + +CSRF +. + +63 +You + +ÿn + +di§bË + +ouut + +esÿpšg + +by + +usšg + +the + [esÿpšg- +¡¿‹gy +| +COMMENT +] + +64 +ÝtiÚ +: + +66 [./ +symfÚy + +g’”©e +: +­p + +äڋnd + -- +esÿpšg +- +¡¿‹gy += +çl£ +| +INFO +] + +68 +You + +ÿn + +’abË + +£ssiÚ + +tok’ + +š + + `fÜms + ( +to + +´ev’t + +CSRF +è +by + +defššg + + +69 +a + +£ü‘ + +w™h + +the + [ +c¤f +-£ü‘| +COMMENT +] +ÝtiÚ +: + +71 [./ +symfÚy + +g’”©e +: +­p + +äڋnd + -- +c¤f +- +£ü‘ += +UniqueSeü‘ +| +INFO +] + +73 +You + +ÿn + +cu¡omize + +the +  +sk–‘Ú + +u£d + +by +h +sk + by +ü—tšg + +a + + +74 [% +sf_d©a_dœ +%/ +sk–‘Ú +/ +­p +| +COMMENT +] +dœeùÜy +. + +75 +EOF +; + +81 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +83 +$­p + = +$¬gum’ts +['app']; + +86 ià(! + `´eg_m©ch +('/^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*$/', +$­p +)) + +88 +throw + +Ãw + + `sfCommªdExû±iÚ +( + `¥rštf +('Th­¶iÿtiڂam"%s" i šv®id.', +$­p +)); + +91 +$­pDœ + = +sfCÚfig +:: + `g‘ +('sf_­ps_dœ').'/'. +$­p +; + +93 ià( + `is_dœ +( +$­pDœ +)) + +95 +throw + +Ãw + + `sfCommªdExû±iÚ +( + `¥rštf +('Th­¶iÿtiÚ "%s"‡Ì—dyƒxi¡s.', +$­pDœ +)); + +98 ià( + `is_»adabË +( +sfCÚfig +:: + `g‘ +('sf_data_dir').'/skeleton/app')) + +100 +$sk–‘ÚDœ + = +sfCÚfig +:: + `g‘ +('sf_data_dir').'/skeleton/app'; + +104 +$sk–‘ÚDœ + = + `dœÇme +( +__FILE__ +).'/skeleton/app'; + +108 +$fšd” + = +sfFšd” +:: + `ty³ +('ªy')-> + `disÿrd +('.sf'); + +109 +$this +-> + `g‘Fžesy¡em +()-> + `mœrÜ +( +$sk–‘ÚDœ +.'/­p', +$­pDœ +, +$fšd” +); + +112 +$šdexName + = 'index'; + +113 +$fœ¡Aµ + = ! + `fže_exi¡s +( +sfCÚfig +:: + `g‘ +('sf_web_dir').'/index.php'); + +114 ià(! +$fœ¡Aµ +) + +116 +$šdexName + = +$­p +; + +119 ià( +Œue + ==ð +$ÝtiÚs +['csrf-secret']) + +121 +$ÝtiÚs +['c¤f-£ü‘'] = + `sha1 +( + `¿nd +(111111111, 99999999). + `g‘mypid +()); + +125 +$fšd” + = +sfFšd” +:: + `ty³ +('fže')-> + `Çme +('settings.yml'); + +126 +$this +-> + `g‘Fžesy¡em +()-> + `»¶aûTok’s +( +$fšd” +-> + `š +( +$­pDœ +.'/cÚfig'), '##', '##', + `¬¿y +( + +127 'NO_SCRIPT_NAME' => +$fœ¡Aµ + ? 'true' : 'false', + +128 'CSRF_SECRET' => +sfYamlIƚe +:: + `dump +(sfYamlIƚe:: + `·r£SÿÏr +( +$ÝtiÚs +['csrf-secret'])), + +129 'ESCAPING_STRATEGY' => +sfYamlIƚe +:: + `dump +(( +boޗn +èsfYamlIƚe:: + `·r£SÿÏr +( +$ÝtiÚs +['escaping-strategy'])), + +130 'USE_DATABASE' => +sfCÚfig +:: + `has +('sf_orm') ? 'true' : 'false', + +133 +$this +-> + `g‘Fžesy¡em +()-> + `cÝy +( +$sk–‘ÚDœ +.'/web/šdex.php', +sfCÚfig +:: + `g‘ +('sf_web_dœ').'/'. +$šdexName +.'.php'); + +134 +$this +-> + `g‘Fžesy¡em +()-> + `cÝy +( +$sk–‘ÚDœ +.'/web/šdex.php', +sfCÚfig +:: + `g‘ +('sf_web_dœ').'/'. +$­p +.'_dev.php'); + +136 +$this +-> + `g‘Fžesy¡em +()-> + `»¶aûTok’s +( +sfCÚfig +:: + `g‘ +('sf_web_dœ').'/'. +$šdexName +.'.php', '##', '##', + `¬¿y +( + +137 'APP_NAME' => +$­p +, + +143 +$this +-> + `g‘Fžesy¡em +()-> + `»¶aûTok’s +( +sfCÚfig +:: + `g‘ +('sf_web_dœ').'/'. +$­p +.'_dev.php', '##', '##', + `¬¿y +( + +144 'APP_NAME' => +$­p +, + +147 'IP_CHECK' => '//hi check…»v’t acûs tØdebug frڈcڌÞËr th©‡» d•loyed by‡ccid’ˆtØ´oduùiÚ s”v”s.'. +PHP_EOL +. + +148 '// f“È䓁ػmovthis,ƒx‹nd iˆÜ maksom‘hšg mܐsÝhi¡iÿ‹d.'. +PHP_EOL +. + +149 'ià(!š_¬¿y(@$_SERVER[\'REMOTE_ADDR\'],‡¼ay(\'127.0.0.1\', \'::1\')))'. +PHP_EOL +. + +150 '{'. +PHP_EOL +. + +151 ' d›(\'You‡»‚Ù‡ÎowedØacûs thi fže. Check \'.ba£Çme(__FILE__).\' fÜ mܐšfÜm©iÚ.\');'. +PHP_EOL +. + +152 '}'. +PHP_EOL +, + +155 +$this +-> + `g‘Fžesy¡em +()-> + `»Çme +( +$­pDœ +.'/cÚfig/AµliÿtiÚCÚfigu¿tiÚ.þass.php', $­pDœ.'/cÚfig/'. +$­p +.'Configuration.class.php'); + +157 +$this +-> + `g‘Fžesy¡em +()-> + `»¶aûTok’s +( +$­pDœ +.'/cÚfig/'. +$­p +.'CÚfigu¿tiÚ.þass.php', '##', '##', + `¬¿y +('APP_NAME' => $app)); + +159 +$fixP”ms + = +Ãw + + `sfProjeùP”missiÚsTask +( +$this +-> +di¥©ch” +, $this-> +fÜm©‹r +); + +160 +$fixP”ms +-> + `£tCommªdAµliÿtiÚ +( +$this +-> +commªdAµliÿtiÚ +); + +161 +$fixP”ms +-> + `£tCÚfigu¿tiÚ +( +$this +-> +cÚfigu¿tiÚ +); + +162 +$fixP”ms +-> + `run +(); + +165 +$this +-> + `g‘Fžesy¡em +()-> + `mkdœs +( +sfCÚfig +:: + `g‘ +('sf_‹¡_dœ').'/funùiÚ®/'. +$­p +); + +166 + } +} + + @lib/vendor/symfony/lib/task/generator/sfGenerateModuleTask.class.php + +1 + `addArgum’ts +( + `¬¿y +( + +29 +Ãw + + `sfCommªdArgum’t +('­¶iÿtiÚ', +sfCommªdArgum’t +:: +REQUIRED +, 'The‡pplication‚ame'), + +30 +Ãw + + `sfCommªdArgum’t +('moduË', +sfCommªdArgum’t +:: +REQUIRED +, 'The module‚ame'), + +33 +$this +-> +Çme¥aû + = 'generate'; + +34 +$this +-> +Çme + = 'module'; + +36 +$this +-> +br›fDesütiÚ + = 'Generates‡‚ew module'; + +38 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +39 +The + [ +g’”©e +: +moduË +| +INFO +] +sk + +ü—‹s + +the + +basic + +dœeùÜy + +¡ruùu» + + +40  +a + +Ãw + +moduË + +š + +ª + +exi¡šg + +­¶iÿtiÚ +: + +42 [./ +symfÚy + +g’”©e +: +moduË + +äڋnd + +¬tiþe +| +INFO +] + +44 +The + +sk + +ÿn + +®so + +chªge + +the + +authÜ + +Çme + +found + +š +h[ +aùiÚs +. +þass +. +php +| +COMMENT +] + +45  +you + +have + +cÚfigu» + +™ + +š + [ +cÚfig +/ +´Ý”t›s +. +ši +| +COMMENT +]: + +47 [[ +symfÚy +] + +48 +Çme += +blog + + +49 +authÜ += +Fab›n + +Pْc›r + < +çb›n +. +pْc›r +@ +£nsio +. +com +>| +INFO +] + +51 +You + +ÿn + +cu¡omize + +the +  +sk–‘Ú + +u£d + +by +h +sk + by +ü—tšg + +a + + +52 [% +sf_d©a_dœ +%/ +sk–‘Ú +/ +moduË +| +COMMENT +] +dœeùÜy +. + +54 +The + +sk + +®so + +ü—‹s + +a + +funùiÚ® + +‹¡ + +¡ub + +Çmed + + +55 [% +sf_‹¡_dœ +%/ +funùiÚ® +/% +­¶iÿtiÚ +%/% +moduË +% +AùiÚsTe¡ +. +þass +. +php +| +COMMENT +] + +56 +th© + +dÛs + +nÙ + +·ss + +by + . + +58 +If + +a + +moduË + +w™h + +the + +§me + +Çme + +®»ady + +exi¡s + +š +h +­¶iÿtiÚ +, + +59 +™ + +throws + +a + [ +sfCommªdExû±iÚ +| +COMMENT +]. + +60 +EOF +; + +66 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +68 +$­p + = +$¬gum’ts +['application']; + +69 +$moduË + = +$¬gum’ts +['module']; + +72 ià(! + `´eg_m©ch +('/^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*$/', +$moduË +)) + +74 +throw + +Ãw + + `sfCommªdExû±iÚ +( + `¥rštf +('Thmodu˂am"%s" i šv®id.', +$moduË +)); + +77 +$moduËDœ + = +sfCÚfig +:: + `g‘ +('sf_­p_moduË_dœ').'/'. +$moduË +; + +79 ià( + `is_dœ +( +$moduËDœ +)) + +81 +throw + +Ãw + + `sfCommªdExû±iÚ +( + `¥rštf +('ThmoduË "%s"‡Ì—dyƒxi¡ šh"%s"‡µliÿtiÚ.', +$moduËDœ +, +$­p +)); + +84 +$´Ý”t›s + = + `·r£_ši_fže +( +sfCÚfig +:: + `g‘ +('sf_cÚfig_dœ').'/´Ý”t›s.ši', +Œue +); + +86 +$cÚ¡ªts + = + `¬¿y +( + +87 'PROJECT_NAME' => + `is£t +( +$´Ý”t›s +['symfony']['name']) ? $properties['symfony']['name'] : 'symfony', + +88 'APP_NAME' => +$­p +, + +89 'MODULE_NAME' => +$moduË +, + +90 'AUTHOR_NAME' => + `is£t +( +$´Ý”t›s +['symfony']['author']) ? $properties['symfony']['author'] : 'Your‚ame here', + +93 ià( + `is_»adabË +( +sfCÚfig +:: + `g‘ +('sf_data_dir').'/skeleton/module')) + +95 +$sk–‘ÚDœ + = +sfCÚfig +:: + `g‘ +('sf_data_dir').'/skeleton/module'; + +99 +$sk–‘ÚDœ + = + `dœÇme +( +__FILE__ +).'/skeleton/module'; + +103 +$fšd” + = +sfFšd” +:: + `ty³ +('ªy')-> + `disÿrd +('.sf'); + +104 +$this +-> + `g‘Fžesy¡em +()-> + `mœrÜ +( +$sk–‘ÚDœ +.'/moduË', +$moduËDœ +, +$fšd” +); + +107 +$this +-> + `g‘Fžesy¡em +()-> + `cÝy +( +$sk–‘ÚDœ +.'/‹¡/aùiÚsTe¡.php', +sfCÚfig +:: + `g‘ +('sf_‹¡_dœ').'/funùiÚ®/'. +$­p +.'/'. +$moduË +.'ActionsTest.php'); + +110 +$this +-> + `g‘Fžesy¡em +()-> + `»¶aûTok’s +( +sfCÚfig +:: + `g‘ +('sf_‹¡_dœ').'/funùiÚ®/'. +$­p +. +DIRECTORY_SEPARATOR +. +$moduË +.'AùiÚsTe¡.php', '##', '##', +$cÚ¡ªts +); + +113 +$fšd” + = +sfFšd” +:: + `ty³ +('fže')-> + `Çme +('*.php', '*.yml'); + +114 +$this +-> + `g‘Fžesy¡em +()-> + `»¶aûTok’s +( +$fšd” +-> + `š +( +$moduËDœ +), '##', '##', +$cÚ¡ªts +); + +115 + } +} + + @lib/vendor/symfony/lib/task/generator/sfGenerateProjectTask.class.php + +1 + `´oûss +( +$commªdMªag” +, +$ÝtiÚs +); + +30  +$this +-> + `execu‹ +( +$commªdMªag” +-> + `g‘Argum’tV®ues +(), $commªdMªag”-> + `g‘O±iÚV®ues +()); + +36 +´Ùeùed + +funùiÚ + + $cÚfigu» +() + +38 +$this +-> + `addArgum’ts +( + `¬¿y +( + +39 +Ãw + + `sfCommªdArgum’t +('Çme', +sfCommªdArgum’t +:: +REQUIRED +, 'The…roject‚ame'), + +40 +Ãw + + `sfCommªdArgum’t +('authÜ', +sfCommªdArgum’t +:: +OPTIONAL +, 'The…roject‡uthor', 'Your‚ame here'), + +43 +$this +-> + `addO±iÚs +( + `¬¿y +( + +44 +Ãw + + `sfCommªdO±iÚ +('Üm', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The ORMo use by default', 'Doctrine'), + +45 +Ãw + + `sfCommªdO±iÚ +('š¡®Ër', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'An installer scriptoƒxecute',‚ull), + +48 +$this +-> +Çme¥aû + = 'generate'; + +49 +$this +-> +Çme + = 'project'; + +51 +$this +-> +br›fDesütiÚ + = 'Generates‡‚ew…roject'; + +53 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +54 +The + [ +g’”©e +: +´ojeù +| +INFO +] +sk + +ü—‹s + +the + +basic + +dœeùÜy + +¡ruùu» + + +55  +a + +Ãw + +´ojeù + +š + +the + +cu¼’t + +dœeùÜy +: + +57 [./ +symfÚy + +g’”©e +: +´ojeù + +blog +| +INFO +] + +59 +If + +the + +cu¼’t + +dœeùÜy + +®»ady + +cڏšs + +a + +symfÚy + +´ojeù +, + +60 +™ + +throws + +a + [ +sfCommªdExû±iÚ +| +COMMENT +]. + +62 +By + , +the + +sk + +cÚfigu»s + +Doùrše + +as +h +ORM +. +If + +you + +wªt + +to + +u£ + + +63 +Prݖ +, +u£ + +the + [-- +Üm +| +COMMENT +] +ÝtiÚ +: + +65 [./ +symfÚy + +g’”©e +: +´ojeù + +blog + -- +Üm += +Prݖ +| +INFO +] + +67 +If + +you + +dÚ +'t wanto use‡n ORM,…ass [none|COMMENT]o [--orm|COMMENT] option: + +69 [./ +symfÚy + +g’”©e +: +´ojeù + +blog + -- +Üm += +nÚe +| +INFO +] + +71 +You + +ÿn + +®so + +·ss + +the + [-- +š¡®Ër +| +COMMENT +] +ÝtiÚ + +to + +fu¹h” + +cu¡omize +he + +72 +´ojeù +: + +74 [./ +symfÚy + +g’”©e +: +´ojeù + +blog + -- +š¡®Ër +=./š¡®Ër. +php +| +INFO +] + +76 +You + +ÿn + +ÝtiÚ®ly + +šþude + +a + +£cÚd + [ +authÜ +| +COMMENT +] +¬gum’t + +to + +¥ecify + +wh© + +Çme +o + +77 +u£ + +as + +authÜ + +wh’ + +symfÚy + +g’”©es + +Ãw + +þas£s +: + +79 [./ +symfÚy + +g’”©e +: +´ojeù + +blog + "Jack DÛ"| +INFO +] + +80 +EOF +; + +81 + } +} + +86 +´Ùeùed + +funùiÚ + +execu‹ +( +$¬gum’ts + = +¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +88 ià( + `fže_exi¡s +('symfony')) + +90 +throw + +Ãw + + `sfCommªdExû±iÚ +( + `¥rštf +('A symfÚy…rojeù‡Ì—dyƒxi¡ šhi dœeùÜy (%s).', + `g‘cwd +())); + +93 ià(! + `š_¬¿y +( + `¡¹Þow” +( +$ÝtiÚs +['Üm']), + `¬¿y +('propel', 'doctrine', 'none'))) + +95 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('Inv®id ORM‚am"%s".', +$ÝtiÚs +['orm'])); + +98 ià( +$ÝtiÚs +['š¡®Ër'] && +$this +-> +commªdAµliÿtiÚ + && ! + `fže_exi¡s +($options['installer'])) + +100 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('Thš¡®Ë¸"%s" dÛ nكxi¡.', +$ÝtiÚs +['installer'])); + +104 +$ÝtiÚs +['Üm'] = + `ucfœ¡ +( + `¡¹Þow” +($options['orm'])); + +106 +$this +-> +¬gum’ts + = +$¬gum’ts +; + +107 +$this +-> +ÝtiÚs + = +$ÝtiÚs +; + +110 +$this +-> + `š¡®lDœ +( + `dœÇme +( +__FILE__ +).'/skeleton/project'); + +113 +$symfÚyCÜeAutÞßd + = 0 ==ð + `¡½os +( +sfCÚfig +:: + `g‘ +('sf_symfony_lib_dir'), sfConfig::get('sf_root_dir')) ? + +114 + `¥rštf +('dœÇme(__FILE__).\'/..%s/autÞßd/sfCÜeAutÞßd.þass.php\'', + `¡r_»¶aû +( +sfCÚfig +:: + `g‘ +('sf_root_dir'), '', sfConfig::get('sf_symfony_lib_dir'))) : + +115 + `v¬_expÜt +( +sfCÚfig +:: + `g‘ +('sf_symfÚy_lib_dœ').'/autÞßd/sfCÜeAutÞßd.þass.php', +Œue +); + +117 +$this +-> + `»¶aûTok’s +( + `¬¿y +( +sfCÚfig +:: + `g‘ +('sf_cÚfig_dœ')),‡¼ay('SYMFONY_CORE_AUTOLOAD' => + `¡r_»¶aû +('\\', '/', +$symfÚyCÜeAutÞßd +))); + +119 +$this +-> +tok’s + = + `¬¿y +( + +120 'ORM' => +$this +-> +ÝtiÚs +['orm'], + +121 'PROJECT_NAME' => +$this +-> +¬gum’ts +['name'], + +122 'AUTHOR_NAME' => +$this +-> +¬gum’ts +['author'], + +123 'PROJECT_DIR' => +sfCÚfig +:: + `g‘ +('sf_root_dir'), + +126 +$this +-> + `»¶aûTok’s +(); + +129 ià( + `š_¬¿y +( +$ÝtiÚs +['Üm'], + `¬¿y +('Doctrine', 'Propel'))) + +131 +šþude + + `dœÇme +( +__FILE__ +).'/../../¶ugšs/sf'. +$ÝtiÚs +['orm'].'Plugin/config/installer.php'; + +135 ià( +$ÝtiÚs +['š¡®Ër'] && +$this +-> +commªdAµliÿtiÚ +) + +137 ià( +$this +-> + `ÿnRunIn¡®Ër +( +$ÝtiÚs +['installer'])) + +139 +$this +-> + `»lßdTasks +(); + +140 +šþude + +$ÝtiÚs +['installer']; + +145 +$fixP”ms + = +Ãw + + `sfProjeùP”missiÚsTask +( +$this +-> +di¥©ch” +, $this-> +fÜm©‹r +); + +146 +$fixP”ms +-> + `£tCommªdAµliÿtiÚ +( +$this +-> +commªdAµliÿtiÚ +); + +147 +$fixP”ms +-> + `£tCÚfigu¿tiÚ +( +$this +-> +cÚfigu¿tiÚ +); + +148 +$fixP”ms +-> + `run +(); + +150 +$this +-> + `»¶aûTok’s +(); + +151 + } +} + +153 +´Ùeùed + +funùiÚ + + $ÿnRunIn¡®Ër +( +$š¡®Ër +) + +155 ià( + `´eg_m©ch +('#^(h‰ps?|áps?)://#', +$š¡®Ër +)) + +157 ià( + `ši_g‘ +('®low_u¾_fݒ'è==ð +çl£ +) + +159 +$this +-> + `logSeùiÚ +('g’”©e', + `¥rštf +('CªnلuÀ»mِš¡®Ë¸"%s" beÿu£ "®low_u¾_fݒ" i off', +$š¡®Ër +)); + +161 ià( + `ši_g‘ +('®low_u¾_šþude'è==ð +çl£ +) + +163 +$this +-> + `logSeùiÚ +('g’”©e', + `¥rštf +('CªnلuÀ»mِš¡®Ë¸"%s" beÿu£ "®low_u¾_šþude" i off', +$š¡®Ër +)); + +165  + `ši_g‘ +('allow_url_fopen') && ini_get('allow_url_include'); + +167  +Œue +; + +168 + } +} + + @lib/vendor/symfony/lib/task/generator/sfGenerateTaskTask.class.php + +1 + `addArgum’ts +( + `¬¿y +( + +26 +Ãw + + `sfCommªdArgum’t +('sk_Çme', +sfCommªdArgum’t +:: +REQUIRED +, 'Theask‚ame (can contain‚amespace)'), + +29 +$this +-> + `addO±iÚs +( + `¬¿y +( + +30 +Ãw + + `sfCommªdO±iÚ +('dœ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The directoryo createheask in', 'lib/task'), + +31 +Ãw + + `sfCommªdO±iÚ +('u£-d©aba£', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Wh‘h”hsk‚“d mod– in™Ÿliz©iځØacûs d©aba£', +sfCÚfig +:: + `g‘ +('sf_orm')), + +32 +Ãw + + `sfCommªdO±iÚ +('br›f-desütiÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'A briefask description (appears inask†ist)'), + +35 +$this +-> +Çme¥aû + = 'generate'; + +36 +$this +-> +Çme + = 'task'; + +37 +$this +-> +br›fDesütiÚ + = 'Creates‡ skeleton class for‡‚ewask'; + +39 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +40 +The + [ +g’”©e +: +sk +| +INFO +] +ü—‹s + +a + +Ãw + +sfTask + +þass + +ba£d + +Ú + +the + +Çme + +·s£d + +as + + +41 +¬gum’t +: + +43 [./ +symfÚy + +g’”©e +: +sk + +Çme¥aû +: +Çme +| +INFO +] + +45 +The + [ +Çme¥aûNameTask +. +þass +. +php +| +COMMENT +] +sk–‘Ú + +sk + +is + +ü—‹d + +und” + +the + [ +lib +/task/|COMMENT] + +46 +dœeùÜy +. +NÙe + +th© + +the + +Çme¥aû + +is + +ÝtiÚ® +. + +48 +If + +you + +wªt + +to + +ü—‹ + +the + +fže + +š + +ªÙh” + + `dœeùÜy + ( +»Ïtive +Øth +´ojeù + + +49 +roÙ + +fÞd” +), +·ss + +™ + +š + +the + [-- +dœ +| +COMMENT +] +ÝtiÚ +. +This + +dœeùÜy + +wžl + +be + +ü—‹d + + +50  +™ + +dÛs + +nÙ + +®»ady + +exi¡ +. + +52 [./ +symfÚy + +g’”©e +: +sk + +Çme¥aû +: +Çme + -- +dœ += +¶ugšs +/ +myPlugš +/ +lib +/sk| +INFO +] + +54 +If + +you + +wªt + +the + +sk + +to + Ø +a + +cÚÃùiÚ + +Ùh” + +thª + [ +doùrše +| +COMMENT +], +´ovide + + +55 +the + +Çme + +of + +this + +cÚÃùiÚ + +w™h +h[-- +u£ +- +d©aba£ +| +COMMENT +] +ÝtiÚ +: + +57 [./ +symfÚy + +g’”©e +: +sk + +Çme¥aû +: +Çme + -- +u£ +- +d©aba£ += +maš +| +INFO +] + +59 +The + [-- +u£ +- +d©aba£ +| +COMMENT +] +ÝtiÚ + +ÿn + +®so + +be + +u£d + +to + +di§bË + database + +60 +š™Ÿliz©iÚ + +š + +the + +g’”©ed + +sk +: + +62 [./ +symfÚy + +g’”©e +: +sk + +Çme¥aû +: +Çme + -- +u£ +- +d©aba£ += +çl£ +| +INFO +] + +64 +You + +ÿn + +®so + +¥ecify + +a + +desütiÚ +: + +66 [./ +symfÚy + +g’”©e +: +sk + +Çme¥aû +: +Çme + -- +br›f +- +desütiÚ +="DÛ š‹»¡šghšgs"| +INFO +] + +67 +EOF +; + +73 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +75 +$skName + = +$¬gum’ts +['task_name']; + +76 +$skNameCompڒts + = + `ex¶ode +(':', +$skName +); + +77 +$Çme¥aû + = + `is£t +( +$skNameCompڒts +[1]) ? $taskNameComponents[0] : ''; + +78 +$Çme + = + `is£t +( +$skNameCompڒts +[1]) ? $taskNameComponents[1] : $taskNameComponents[0]; + +79 +$skCÏssName + = + `¡r_»¶aû +('-', '', ( +$Çme¥aû + ? $Çme¥aû. + `ucfœ¡ +( +$Çme +) : $name)).'Task'; + +82 ià(! + `´eg_m©ch +('/^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*$/', +$skCÏssName +)) + +84 +throw + +Ãw + + `sfCommªdExû±iÚ +( + `¥rštf +('Thsk cÏs Çm"%s" i šv®id.', +$skCÏssName +)); + +87 +$br›fDesütiÚ + = +$ÝtiÚs +['brief-description']; + +88 +$d‘ažedDesütiÚ + = <<< +HED + + +89 +The + [ +$skName +| +INFO +] +sk + +dÛs + +thšgs +. + +90 +C®l + +™ + +w™h +: + +92 [ +php + +symfÚy + +$skName +| +INFO +] + +93 +HED +; + +95 +$u£D©aba£ + = +sfToÞk™ +:: + `l™”®ize +( +$ÝtiÚs +['use-database']); + +96 +$deçuÉCÚÃùiÚ + = + `is_¡ršg +( +$u£D©aba£ +è? $u£D©aba£ : +sfCÚfig +:: + `g‘ +('sf_orm'); + +98 ià( +$u£D©aba£ +) + +100 +$cڋÁ + = <<< +HED + + +101 + `addO±iÚs +( + `¬¿y +( + +113 +Ãw + + `sfCommªdO±iÚ +('­¶iÿtiÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The‡pplication‚ame'), + +114 +Ãw + + `sfCommªdO±iÚ +('’v', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Theƒnvironment', 'dev'), + +115 +Ãw + + `sfCommªdO±iÚ +('cÚÃùiÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The connection‚ame', '$defaultConnection'), + +119 \ +$this +-> +Çme¥aû + = '$namespace'; + +120 \ +$this +-> +Çme + = '$name'; + +121 \ +$this +-> +br›fDesütiÚ + = '$briefDescription'; + +122 \ +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +123 +$d‘ažedDesütiÚ + + +124 +EOF +; + +127 +´Ùeùed + +funùiÚ + + `execu‹ +(\ +$¬gum’ts + = + `¬¿y +(), \ +$ÝtiÚs + =‡rray()) + +130 \ +$d©aba£Mªag” + = +Ãw + + `sfD©aba£Mªag” +(\ +$this +-> +cÚfigu¿tiÚ +); + +131 \ +$cÚÃùiÚ + = \ +$d©aba£Mªag” +-> + `g‘D©aba£ +(\ +$ÝtiÚs +['cÚÃùiÚ'])-> + `g‘CÚÃùiÚ +(); + +137 +HED +; + +141 +$cڋÁ + = <<< +HED + + +142 +Çme¥aû + = '$namespace'; + +159 \ +$this +-> +Çme + = '$name'; + +160 \ +$this +-> +br›fDesütiÚ + = '$briefDescription'; + +161 \ +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +162 +$d‘ažedDesütiÚ + + +163 +EOF +; + +166 +´Ùeùed + +funùiÚ + + `execu‹ +(\ +$¬gum’ts + = + `¬¿y +(), \ +$ÝtiÚs + =‡rray()) + +172 +HED +; + +176 ià(! + `is_»adabË +( +sfCÚfig +:: + `g‘ +('sf_roÙ_dœ').'/'. +$ÝtiÚs +['dir'])) + +178 +$this +-> + `g‘Fžesy¡em +()-> + `mkdœs +( +$ÝtiÚs +['dir']); + +181 +$skFže + = +sfCÚfig +:: + `g‘ +('sf_roÙ_dœ').'/'. +$ÝtiÚs +['dœ'].'/'. +$skCÏssName +.'.class.php'; + +182 ià( + `is_»adabË +( +$skFže +)) + +184 +throw + +Ãw + + `sfCommªdExû±iÚ +( + `¥rštf +('A "%s"ask‡Ì—dyƒxi¡ š "%s".', +$skName +, +$skFže +)); + +187 +$this +-> + `logSeùiÚ +('sk', + `¥rštf +('C»©šg "%s"ask fže', +$skFže +)); + +188 + `fže_put_cڋÁs +( +$skFže +, +$cڋÁ +); + +189 + } +} + + @lib/vendor/symfony/lib/task/generator/sfGeneratorBaseTask.class.php + +1 + +2 < +html + + gxmÊs +="h‰p://www.w3.Üg/1999/xhtml" +xml +: +Ïng +="en"†ang="en"> + +3 < +h—d +> + +4 + +5 + +6 + +7 < +lšk + +»l +="shÜtcuˆicÚ" +h»f +="/favicon.ico" /> + +8 + +9 + +10 + +11 < +body +> + +12 + +13 + +14 + + @lib/vendor/symfony/lib/task/generator/skeleton/app/web/index.php + +1 +di¥©ch +(); + + @lib/vendor/symfony/lib/task/generator/skeleton/module/module/actions/actions.class.php + +1 +fÜw¬d +('default', 'module'); + + @lib/vendor/symfony/lib/task/generator/skeleton/module/module/templates/indexSuccess.php + + @lib/vendor/symfony/lib/task/generator/skeleton/module/test/actionsTest.php + +1 + +8 +g‘ +('/##MODULE_NAME##/index')-> + +10 +w™h +('»que¡')-> +begš +()-> + +11 +isP¬am‘” +('module', '##MODULE_NAME##')-> + +12 +isP¬am‘” +('action', 'index')-> + +13 +’d +()-> + +15 +w™h +('»¥Ú£')-> +begš +()-> + +16 +isStusCode +(200)-> + +17 +checkEËm’t +('body', '!/This is‡emporary…age/')-> + +18 +’d +() + + @lib/vendor/symfony/lib/task/generator/skeleton/project/config/ProjectConfiguration.class.php + +1 + `lßdCÚfigu¿tiÚ +( +sfFšd” +:: + `ty³ +('fže')-> + `Çme +('autÞßd.yml')-> + `š +( + `¬¿y +( + +20 +sfCÚfig +:: + `g‘ +('sf_symfony_lib_dir').'/config/config', + +21 +sfCÚfig +:: + `g‘ +('sf_config_dir'), + +23 +$autÞßd +->(); + +26 +šþude + +$cÚfigu¿tiÚ +-> + `g‘SymfÚyLibDœ +().'/vendor/lime/lime.php'; + + @lib/vendor/symfony/lib/task/help/sfHelpTask.class.php + +1 + `addArgum’ts +( + `¬¿y +( + +27 +Ãw + + `sfCommªdArgum’t +('sk_Çme', +sfCommªdArgum’t +:: +OPTIONAL +, 'Theask‚ame', 'help'), + +30 +$this +-> + `addO±iÚs +( + `¬¿y +( + +31 +Ãw + + `sfCommªdO±iÚ +('xml', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'To output help‡s XML'), + +34 +$this +-> +br›fDesütiÚ + = 'Displays help for‡ask'; + +36 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +37 +The + [ +h–p +| +INFO +] +sk + +di¥Ïys + h–° +a + +giv’ +ask: + +39 [./ +symfÚy + +h–p + +‹¡ +: +®l +| +INFO +] + +41 +You + +ÿn + +®so + +ouut + +the + +h–p + +as + +XML + +by + +usšg +h[-- +xml +| +COMMENT +] +ÝtiÚ +: + +43 [./ +symfÚy + +h–p + +‹¡ +: +®l + -- +xml +| +INFO +] + +44 +EOF +; + +50 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +52 ià(! + `is£t +( +$this +-> +commªdAµliÿtiÚ +)) + +54 +throw + +Ãw + + `sfCommªdExû±iÚ +('You can only†aunchhisask fromhe command†ine.'); + +57 +$sk + = +$this +-> +commªdAµliÿtiÚ +-> + `g‘Task +( +$¬gum’ts +['task_name']); + +59 ià( +$ÝtiÚs +['xml']) + +61 +$this +-> + `ouutAsXml +( +$sk +); + +65 +$this +-> + `ouutAsText +( +$sk +); + +67 + } +} + +69 +´Ùeùed + +funùiÚ + + $ouutAsText +( +sfTask + +$sk +) + +71 +$mes§ges + = + `¬¿y +(); + +73 +$mes§ges +[] = +$this +-> +fÜm©‹r +-> + `fÜm© +('Usage:', 'COMMENT'); + +74 +$mes§ges +[] = +$this +-> +fÜm©‹r +-> + `fÜm© +( + `¥rštf +(' '. +$sk +-> + `g‘SynÝsis +(), +nuÎ + ==ð$this-> +commªdAµliÿtiÚ + ? '' : $this->commªdAµliÿtiÚ-> + `g‘Name +()))."\n"; + +77 +$max + = 0; + +78 + `fܗch + ( +$sk +-> + `g‘O±iÚs +(è +as + +$ÝtiÚ +) + +80 +$max + = + `¡¾’ +( +$ÝtiÚ +-> + `g‘Name +()) + 2 > $max ? strlen($option->getName()) + 2 : $max; + +82 + `fܗch + ( +$sk +-> + `g‘Argum’ts +(è +as + +$¬gum’t +) + +84 +$max + = + `¡¾’ +( +$¬gum’t +-> + `g‘Name +()) > $max ? strlen($argument->getName()) : $max; + +86 +$max + +ð + `¡¾’ +( +$this +-> +fÜm©‹r +-> + `fÜm© +(' ', 'INFO')); + +88 ià( +$sk +-> + `g‘AlŸ£s +()) + +90 +$mes§ges +[] = +$this +-> +fÜm©‹r +-> + `fÜm© +('AlŸ£s:', 'COMMENT').' '.$this->fÜm©‹r->fÜm©( + `im¶ode +(', ', +$sk +-> + `g‘AlŸ£s +()), 'INFO')."\n"; + +93 ià( +$sk +-> + `g‘Argum’ts +()) + +95 +$mes§ges +[] = +$this +-> +fÜm©‹r +-> + `fÜm© +('Arguments:', 'COMMENT'); + +96 + `fܗch + ( +$sk +-> + `g‘Argum’ts +(è +as + +$¬gum’t +) + +98 +$deçuÉ + = +nuÎ + !=ð +$¬gum’t +-> + `g‘DeçuÉ +(è&& (! + `is_¬¿y +($¬gum’t->g‘DeçuÉ()è|| + `couÁ +($¬gum’t->g‘DeçuÉ())è? +$this +-> +fÜm©‹r +-> + `fÜm© +( + `¥rštf +(' (deçuÉ: %s)', is_¬¿y($¬gum’t->g‘DeçuÉ()è? + `¡r_»¶aû +("\n", '', + `´št_r +($¬gum’t->g‘DeçuÉ(), +Œue +)): $argument->getDefault()), 'COMMENT') : ''; + +99 +$mes§ges +[] = + `¥rštf +(" %-${max} %s%s", +$this +-> +fÜm©‹r +-> + `fÜm© +( +$¬gum’t +-> + `g‘Name +(), 'INFO'), $¬gum’t-> + `g‘H–p +(), +$deçuÉ +); + +102 +$mes§ges +[] = ''; + +105 ià( +$sk +-> + `g‘O±iÚs +()) + +107 +$mes§ges +[] = +$this +-> +fÜm©‹r +-> + `fÜm© +('Options:', 'COMMENT'); + +109 + `fܗch + ( +$sk +-> + `g‘O±iÚs +(è +as + +$ÝtiÚ +) + +111 +$deçuÉ + = +$ÝtiÚ +-> + `acû±P¬am‘” +(è&& +nuÎ + !=ð$ÝtiÚ-> + `g‘DeçuÉ +(è&& (! + `is_¬¿y +($ÝtiÚ->g‘DeçuÉ()è|| + `couÁ +($ÝtiÚ->g‘DeçuÉ())è? +$this +-> +fÜm©‹r +-> + `fÜm© +( + `¥rštf +(' (deçuÉ: %s)', is_¬¿y($ÝtiÚ->g‘DeçuÉ()è? + `¡r_»¶aû +("\n", '', + `´št_r +($ÝtiÚ->g‘DeçuÉ(), +Œue +)): $option->getDefault()), 'COMMENT') : ''; + +112 +$muÉË + = +$ÝtiÚ +-> + `isA¼ay +(è? +$this +-> +fÜm©‹r +-> + `fÜm© +(' (multiple values‡llowed)', 'COMMENT') : ''; + +113 +$mes§ges +[] = + `¥rštf +(' %-'. +$max +.' %s%s%s%s', +$this +-> +fÜm©‹r +-> + `fÜm© +('--'. +$ÝtiÚ +-> + `g‘Name +(), 'INFO'), $ÝtiÚ-> + `g‘ShÜtcut +(è? s´štf('(-%sè', $ÝtiÚ->g‘ShÜtcut()è: '', $ÝtiÚ-> + `g‘H–p +(), +$deçuÉ +, +$muÉË +); + +116 +$mes§ges +[] = ''; + +119 ià( +$d‘ažedDesütiÚ + = +$sk +-> + `g‘D‘ažedDesütiÚ +()) + +121 +$mes§ges +[] = +$this +-> +fÜm©‹r +-> + `fÜm© +('Description:', 'COMMENT'); + +123 +$mes§ges +[] = ' '. + `im¶ode +("\À", + `ex¶ode +("\n", +$d‘ažedDesütiÚ +))."\n"; + +126 +$this +-> + `log +( +$mes§ges +); + +127 + } +} + +129 +´Ùeùed + +funùiÚ + + $ouutAsXml +( +sfTask + +$sk +) + +131 +echo + +$sk +-> + `asXml +(); + +132 + } +} + + @lib/vendor/symfony/lib/task/help/sfListTask.class.php + +1 + `addArgum’ts +( + `¬¿y +( + +27 +Ãw + + `sfCommªdArgum’t +('Çme¥aû', +sfCommªdArgum’t +:: +OPTIONAL +, 'The‚amespace‚ame'), + +30 +$this +-> + `addO±iÚs +( + `¬¿y +( + +31 +Ãw + + `sfCommªdO±iÚ +('xml', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'To output help‡s XML'), + +34 +$this +-> +br›fDesütiÚ + = 'Listsasks'; + +36 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +37 +The + [ +li¡ +| +INFO +] +sk + +li¡s + +®l + +sks +: + +39 [./ +symfÚy + +li¡ +| +INFO +] + +41 +You + +ÿn + +®so + +di¥Ïy + +the + +sks +  +a + +¥ecific + +Çme¥aû +: + +43 [./ +symfÚy + +li¡ + +‹¡ +| +INFO +] + +45 +You + +ÿn + +®so + +ouut + +the + +šfÜm©iÚ + +as + +XML + +by + +usšg +h[-- +xml +| +COMMENT +] +ÝtiÚ +: + +47 [./ +symfÚy + +li¡ + -- +xml +| +INFO +] + +48 +EOF +; + +54 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +56 +$sks + = + `¬¿y +(); + +57 + `fܗch + ( +$this +-> +commªdAµliÿtiÚ +-> + `g‘Tasks +(è +as + +$Çme + => +$sk +) + +59 ià( +$¬gum’ts +['Çme¥aû'] && $¬gum’ts['Çme¥aû'] !ð +$sk +-> + `g‘Name¥aû +()) + +64 ià( +$Çme + !ð +$sk +-> + `g‘FuÎName +()) + +70 ià(! +$sk +-> + `g‘Name¥aû +()) + +72 +$Çme + = '_default:'.$name; + +75 +$sks +[ +$Çme +] = +$sk +; + +78 ià( +$ÝtiÚs +['xml']) + +80 +$this +-> + `ouutAsXml +( +$¬gum’ts +['Çme¥aû'], +$sks +); + +84 +$this +-> + `ouutAsText +( +$¬gum’ts +['Çme¥aû'], +$sks +); + +86 + } +} + +88 +´Ùeùed + +funùiÚ + + $ouutAsText +( +$Çme¥aû +, +$sks +) + +90 +$this +-> +commªdAµliÿtiÚ +-> + `h–p +(); + +91 +$this +-> + `log +(''); + +93 +$width + = 0; + +94 + `fܗch + ( +$sks + +as + +$Çme + => +$sk +) + +96 +$width + = + `¡¾’ +( +$sk +-> + `g‘Name +()) > $width ? strlen($task->getName()) : $width; + +98 +$width + +ð + `¡¾’ +( +$this +-> +fÜm©‹r +-> + `fÜm© +(' ', 'INFO')); + +100 +$mes§ges + = + `¬¿y +(); + +101 ià( +$Çme¥aû +) + +103 +$mes§ges +[] = +$this +-> +fÜm©‹r +-> + `fÜm© +( + `¥rštf +("Avažabˁask f܁h\"%s\"‚ame¥aû:", +$Çme¥aû +), 'COMMENT'); + +107 +$mes§ges +[] = +$this +-> +fÜm©‹r +-> + `fÜm© +('Availableasks:', 'COMMENT'); + +111 + `ksÜt +( +$sks +); + +112 +$cu¼’tName¥aû + = ''; + +113 + `fܗch + ( +$sks + +as + +$Çme + => +$sk +) + +115 ià(! +$Çme¥aû + && +$cu¼’tName¥aû + !ð +$sk +-> + `g‘Name¥aû +()) + +117 +$cu¼’tName¥aû + = +$sk +-> + `g‘Name¥aû +(); + +118 +$mes§ges +[] = +$this +-> +fÜm©‹r +-> + `fÜm© +( +$sk +-> + `g‘Name¥aû +(), 'COMMENT'); + +121 +$®Ÿ£s + = +$sk +-> + `g‘AlŸ£s +(è? +$this +-> +fÜm©‹r +-> + `fÜm© +(' ('. + `im¶ode +(', ', $task->getAliases()).')', 'COMMENT') : ''; + +123 +$mes§ges +[] = + `¥rštf +(" %-${width} %s%s", +$this +-> +fÜm©‹r +-> + `fÜm© +(':'. +$sk +-> + `g‘Name +(), 'INFO'), $sk-> + `g‘Br›fDesütiÚ +(), +$®Ÿ£s +); + +126 +$this +-> + `log +( +$mes§ges +); + +127 + } +} + +129 +´Ùeùed + +funùiÚ + + $ouutAsXml +( +$Çme¥aû +, +$sks +) + +131 +$dom + = +Ãw + + `DOMDocum’t +('1.0', 'UTF-8'); + +132 +$dom +-> +fÜm©Ouut + = +Œue +; + +133 +$dom +-> + `­³ndChžd +( +$symfÚyXML + = $dom-> + `ü—‹EËm’t +('symfony')); + +135 +$symfÚyXML +-> + `­³ndChžd +( +$sksXML + = +$dom +-> + `ü—‹EËm’t +('tasks')); + +137 ià( +$Çme¥aû +) + +139 +$sksXML +-> + `£tA‰ribu‹ +('Çme¥aû', +$Çme¥aû +); + +143 +$symfÚyXML +-> + `­³ndChžd +( +$Çme¥aûsXML + = +$dom +-> + `ü—‹EËm’t +('namespaces')); + +147 + `ksÜt +( +$sks +); + +148 +$cu¼’tName¥aû + = 'foobar'; + +149 +$Çme¥aûA¼ayXML + = + `¬¿y +(); + +150 + `fܗch + ( +$sks + +as + +$Çme + => +$sk +) + +152 ià(! +$Çme¥aû + && +$cu¼’tName¥aû + !ð +$sk +-> + `g‘Name¥aû +()) + +154 +$cu¼’tName¥aû + = +$sk +-> + `g‘Name¥aû +(); + +155 +$Çme¥aûsXML +-> + `­³ndChžd +( +$Çme¥aûA¼ayXML +[ +$sk +-> + `g‘Name¥aû +()] = +$dom +-> + `ü—‹EËm’t +('namespace')); + +157 +$Çme¥aûA¼ayXML +[ +$sk +-> + `g‘Name¥aû +()]-> + `£tA‰ribu‹ +('id', $task->getNamespace() ? $task->getNamespace() : '_global'); + +160 ià(! +$Çme¥aû +) + +162 +$Çme¥aûA¼ayXML +[ +$sk +-> + `g‘Name¥aû +()]-> + `­³ndChžd +( +$skXML + = +$dom +-> + `ü—‹EËm’t +('task')); + +163 +$skXML +-> + `­³ndChžd +( +$dom +-> + `ü—‹TextNode +( +$sk +-> + `g‘Name +())); + +166 +$skXML + = +Ãw + + `DOMDocum’t +('1.0', 'UTF-8'); + +167 +$skXML +-> +fÜm©Ouut + = +Œue +; + +168 +$skXML +-> + `lßdXML +( +$sk +-> + `asXml +()); + +169 +$node + = +$skXML +-> + `g‘EËm’tsByTagName +('sk')-> + `™em +(0); + +170 +$node + = +$dom +-> + `impÜtNode +($node, +Œue +); + +172 +$sksXML +-> + `­³ndChžd +( +$node +); + +175 +echo + +$dom +-> + `§veXml +(); + +176 + } +} + + @lib/vendor/symfony/lib/task/i18n/sfI18nExtractTask.class.php + +1 + `addArgum’ts +( + `¬¿y +( + +33 +Ãw + + `sfCommªdArgum’t +('­¶iÿtiÚ', +sfCommªdArgum’t +:: +REQUIRED +, 'The‡pplication‚ame'), + +34 +Ãw + + `sfCommªdArgum’t +('cuÉu»', +sfCommªdArgum’t +:: +REQUIRED +, 'Thearget culture'), + +37 +$this +-> + `addO±iÚs +( + `¬¿y +( + +38 +Ãw + + `sfCommªdO±iÚ +('di¥Ïy-Ãw', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Output‡ll‚ew found strings'), + +39 +Ãw + + `sfCommªdO±iÚ +('di¥Ïy-Þd', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Output‡ll old strings'), + +40 +Ãw + + `sfCommªdO±iÚ +('auto-§ve', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Savehe‚ew strings'), + +41 +Ãw + + `sfCommªdO±iÚ +('auto-d–‘e', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Delete old strings'), + +44 +$this +-> +Çme¥aû + = 'i18n'; + +45 +$this +-> +Çme + = 'extract'; + +46 +$this +-> +br›fDesütiÚ + = 'Extracts i18n strings from…hp files'; + +48 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +49 +The + [ +i18n +: +exŒaù +| +INFO +] +sk + +exŒaùs + i18À +¡ršgs + +äom + +your + +´ojeù + +fžes + + +50  +the + +giv’ + +­¶iÿtiÚ + +ªd + +rg‘ + +cuÉu» +: + +52 [./ +symfÚy + +i18n +: +exŒaù + +äڋnd + +ä +| +INFO +] + +54 +By + , +the + +sk + +Úly + +di¥Ïys +h +numb” + +of + +Ãw + +ªd + +Þd + +¡ršgs + + +55 +™ + +found + +š + +the + +cu¼’t + +´ojeù +. + +57 +If + +you + +wªt + +to + +di¥Ïy + +the + +Ãw + +¡ršgs +, +u£ +h[--di¥Ïy-Ãw| +COMMENT +] +ÝtiÚ +: + +59 [./ +symfÚy + +i18n +: +exŒaù + -- +di¥Ïy +- +Ãw + +äڋnd + +ä +| +INFO +] + +61 +To + +§ve + +them + +š + +the + +i18n + +mes§ge + +ÿlogue +, +u£ +h[--auto-§ve| +COMMENT +] +ÝtiÚ +: + +63 [./ +symfÚy + +i18n +: +exŒaù + --auto- +§ve + +äڋnd + +ä +| +INFO +] + +65 +If + +you + +wªt + +to + +di¥Ïy + +¡ršgs + +th© + +¬e + +´e£Á + +š + +the + +i18n + +mes§ges + + +66 +ÿlogue + +but + +¬e + +nÙ + +found + +š + +the + +­¶iÿtiÚ +, +u£ +he + +67 [-- +di¥Ïy +- +Þd +| +COMMENT +] +ÝtiÚ +: + +69 [./ +symfÚy + +i18n +: +exŒaù + -- +di¥Ïy +- +Þd + +äڋnd + +ä +| +INFO +] + +71 +To + +autom©iÿÎy + +d–‘e + +Þd + +¡ršgs +, +u£ + +the + [--auto-d–‘e| +COMMENT +] +but + + +72 +be + +ÿ»ful +, +e¥ecŸÎy +  +you + +have + +Œª¦©iÚs +  +¶ugšs + +as + +they + +wžl + + +73 +­³¬ + +as + +Þd + +¡ršgs + +but + +they + +¬e + +nÙ +: + +75 [./ +symfÚy + +i18n +: +exŒaù + --auto- +d–‘e + +äڋnd + +ä +| +INFO +] + +76 +EOF +; + +82 +public + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +84 +$this +-> + `logSeùiÚ +('i18n', + `¥rštf +('exŒaùšg i18À¡ršg f܁h"%s"‡µliÿtiÚ', +$¬gum’ts +['application'])); + +87 +$cÚfig + = +sfFaùÜyCÚfigHªdËr +:: + `g‘CÚfigu¿tiÚ +( +$this +-> +cÚfigu¿tiÚ +-> + `g‘CÚfigP©hs +('config/factories.yml')); + +89 +$þass + = +$cÚfig +['i18n']['class']; + +90 +$·¿ms + = +$cÚfig +['i18n']['param']; + +91 + `un£t +( +$·¿ms +['cache']); + +93 +$exŒaù + = +Ãw + + `sfI18nAµliÿtiÚExŒaù +Òew + `$þass +( +$this +-> +cÚfigu¿tiÚ +,‚ew + `sfNoCache +(), +$·¿ms +), +$¬gum’ts +['culture']); + +94 +$exŒaù +-> + `exŒaù +(); + +96 +$this +-> + `logSeùiÚ +('i18n', + `¥rštf +('found "%d"‚ew i18À¡ršgs', + `couÁ +( +$exŒaù +-> + `g‘NewMes§ges +()))); + +97 +$this +-> + `logSeùiÚ +('i18n', + `¥rštf +('found "%d" old i18À¡ršgs', + `couÁ +( +$exŒaù +-> + `g‘OldMes§ges +()))); + +99 ià( +$ÝtiÚs +['display-new']) + +101 +$this +-> + `logSeùiÚ +('i18n', + `¥rštf +('di¥Ïy‚ew i18À¡ršgs', + `couÁ +( +$exŒaù +-> + `g‘OldMes§ges +()))); + +102 + `fܗch + ( +$exŒaù +-> + `g‘NewMes§ges +(è +as + +$mes§ge +) + +104 +$this +-> + `log +(' '. +$mes§ge +."\n"); + +108 ià( +$ÝtiÚs +['auto-save']) + +110 +$this +-> + `logSeùiÚ +('i18n', 'saving‚ew i18n strings'); + +112 +$exŒaù +-> + `§veNewMes§ges +(); + +115 ià( +$ÝtiÚs +['display-old']) + +117 +$this +-> + `logSeùiÚ +('i18n', + `¥rštf +('di¥Ïy old i18À¡ršgs', + `couÁ +( +$exŒaù +-> + `g‘OldMes§ges +()))); + +118 + `fܗch + ( +$exŒaù +-> + `g‘OldMes§ges +(è +as + +$mes§ge +) + +120 +$this +-> + `log +(' '. +$mes§ge +."\n"); + +124 ià( +$ÝtiÚs +['auto-delete']) + +126 +$this +-> + `logSeùiÚ +('i18n', 'deleting old i18n strings'); + +128 +$exŒaù +-> + `d–‘eOldMes§ges +(); + +130 + } +} + + @lib/vendor/symfony/lib/task/i18n/sfI18nFindTask.class.php + +1 + `addArgum’ts +( + `¬¿y +( + +27 +Ãw + + `sfCommªdArgum’t +('­¶iÿtiÚ', +sfCommªdArgum’t +:: +REQUIRED +, 'The‡pplication‚ame'), + +30 +$this +-> + `addO±iÚs +( + `¬¿y +( + +31 +Ãw + + `sfCommªdO±iÚ +('’v', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Theƒnvironment', 'dev'), + +34 +$this +-> +Çme¥aû + = 'i18n'; + +35 +$this +-> +Çme + = 'find'; + +36 +$this +-> +br›fDesütiÚ + = 'Finds‚on "i18n„eady" strings in‡n‡pplication'; + +38 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +39 +The + [ +i18n +: +fšd +| +INFO +] +sk + +fšds + +nÚ + +š‹º©iÚ®ized + +¡ršgs + +embedded + +š + +‹m¶©es +: + +41 [./ +symfÚy + +i18n +: +fšd + +äڋnd +| +INFO +] + +43 +This + +sk + +is + +abË + +to + +fšd + +nÚ + +š‹º©iÚ®ized + +¡ršgs + +š + +pu» + +HTML + +ªd + iÀ +PHP + +code +: + +45 < +p +> +NÚ + +i18n + +‹xt +

    + +46 < +p +>

    + +48 +As + +the + +sk + +»tuºs + +®l + +¡ršgs + +embedded + +š + +PHP +, +you + +ÿn + +have + +some + +çl£ + + `pos™ive + ( +e¥ecŸÎy + + +49  +you + +u£ + +the + +¡ršg + +syÁax +  +h–³r + +¬gum’ts +). + +50 +EOF +; + +56 +public + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +58 +$this +-> + `logSeùiÚ +('i18n', + `¥rštf +('fšd‚Ú "i18À»ady" sŒšg šh"%s"‡µliÿtiÚ', +$¬gum’ts +['application'])); + +61 +$dœs + = + `¬¿y +(); + +62 +$moduËNames + = +sfFšd” +:: + `ty³ +('dœ')-> + `maxd•th +(0)-> + `»Ïtive +()-> + `š +( +sfCÚfig +:: + `g‘ +('sf_app_module_dir')); + +63 + `fܗch + ( +$moduËNames + +as + +$moduËName +) + +65 +$dœs +[] = +sfCÚfig +:: + `g‘ +('sf_­p_moduË_dœ').'/'. +$moduËName +.'/templates'; + +67 +$dœs +[] = +sfCÚfig +:: + `g‘ +('sf_app_dir').'/templates'; + +69 +$¡ršgs + = + `¬¿y +(); + +70 + `fܗch + ( +$dœs + +as + +$dœ +) + +72 +$‹m¶©es + = +sfFšd” +:: + `ty³ +('fže')-> + `Çme +('*.php')-> + `š +( +$dœ +); + +73 + `fܗch + ( +$‹m¶©es + +as + +$‹m¶©e +) + +75 ià(! + `is£t +( +$¡ršgs +[ +$‹m¶©e +])) + +77 +$¡ršgs +[ +$‹m¶©e +] = + `¬¿y +(); + +80 +$dom + = +Ãw + + `DomDocum’t +('1.0', +sfCÚfig +:: + `g‘ +('sf_charset', 'UTF-8')); + +81 +$cڋÁ + = + `fže_g‘_cڋÁs +( +$‹m¶©e +); + +84 +$cڋÁ + = + `´eg_»¶aû +('//', '', $content); + +86 @ +$dom +-> + `lßdXML +(''. +$cڋÁ +.''); + +88 +$nodes + = + `¬¿y +( +$dom +); + +89  +$nodes +) + +91 +$node + = + `¬¿y_shiá +( +$nodes +); + +93 ià( +XML_TEXT_NODE + ==ð +$node +-> +nodeTy³ +) + +95 ià(! +$node +-> + `isWh™e¥aûInEËm’tCڋÁ +()) + +97 +$¡ršgs +[ +$‹m¶©e +][] = +$node +-> +nodeV®ue +; + +100 ià( +$node +-> +chždNodes +) + +102  +$i + = 0, +$max + = +$node +-> +chždNodes +-> +Ëngth +; $i < $max; $i++) + +104 +$nodes +[] = +$node +-> +chždNodes +-> + `™em +( +$i +); + +107 ià('DOMProûssšgIn¡ruùiÚ' =ð + `g‘_þass +( +$node +è&& 'php' =ð$node-> +rg‘ +) + +110 +$tok’s + = + `tok’_g‘_®l +(' +nodeV®ue +); + +111 + `fܗch + ( +$tok’s + +as + +$tok’ +) + +113 ià( + `is_¬¿y +( +$tok’ +)) + +115 + `li¡ +( +$id +, +$‹xt +èð +$tok’ +; + +117 ià( +T_CONSTANT_ENCAPSED_STRING + ==ð +$id +) + +119 +$¡ršgs +[ +$‹m¶©e +][] = + `sub¡r +( +$‹xt +, 1, -1); + +128 + `fܗch + ( +$¡ršgs + +as + +$‹m¶©e + => +$mes§ges +) + +130 ià(! +$mes§ges +) + +135 +$this +-> + `logSeùiÚ +('i18n', + `¥rštf +('¡ršg š "%s"', + `¡r_»¶aû +( +sfCÚfig +:: + `g‘ +('sf_roÙ_dœ'), '', +$‹m¶©e +)), 1000); + +136 + `fܗch + ( +$mes§ges + +as + +$mes§ge +) + +138 +$this +-> + `log +(" $message\n"); + +141 + } +} + + @lib/vendor/symfony/lib/task/log/sfLogClearTask.class.php + +1 +Çme¥aû + = 'log'; + +27 +$this +-> +Çme + = 'clear'; + +28 +$this +-> +br›fDesütiÚ + = 'Clears†og files'; + +30 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +31 +The + [ +log +: +þ—r +| +INFO +] +sk + +þ—rs + +®l + +symfÚy +†og +fžes +: + +33 [./ +symfÚy + +log +: +þ—r +| +INFO +] + +34 +EOF +; + +40 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +42 +$logs + = +sfFšd” +:: + `ty³ +('fže')-> + `š +( +sfCÚfig +:: + `g‘ +('sf_log_dir')); + +43 +$this +-> + `g‘Fžesy¡em +()-> + `»move +( +$logs +); + +44 + } +} + + @lib/vendor/symfony/lib/task/log/sfLogRotateTask.class.php + +1 + `addArgum’ts +( + `¬¿y +( + +33 +Ãw + + `sfCommªdArgum’t +('­¶iÿtiÚ', +sfCommªdArgum’t +:: +REQUIRED +, 'The‡pplication‚ame'), + +34 +Ãw + + `sfCommªdArgum’t +('’v', +sfCommªdArgum’t +:: +REQUIRED +, 'Theƒnvironment‚ame'), + +37 +$this +-> + `addO±iÚs +( + `¬¿y +( + +38 +Ãw + + `sfCommªdO±iÚ +('hi¡Üy', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Thmaximum‚umb” oàÞd†og fže tØk“p', +£lf +:: +DEF_HISTORY +), + +39 +Ãw + + `sfCommªdO±iÚ +('³riod', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Th³riod iÀdays', +£lf +:: +DEF_PERIOD +), + +42 +$this +-> +Çme¥aû + = 'log'; + +43 +$this +-> +Çme + = 'rotate'; + +44 +$this +-> +br›fDesütiÚ + = 'Rotates‡n‡pplication\'s†og files'; + +46 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +47 +The + [ +log +: +rÙ©e +| +INFO +] +sk + +rÙ©es + +­¶iÿtiÚ +†og +fžes +  +a + +giv’ + + +48 +’vœÚm’t +: + +50 [./ +symfÚy + +log +: +rÙ©e + +äڋnd + +dev +| +INFO +] + +52 +You + +ÿn + +¥ecify + +a + [ +³riod +| +COMMENT +] +Ü +‡ [ +hi¡Üy +|COMMENT] +ÝtiÚ +: + +54 [./ +symfÚy + +log +: +rÙ©e + +äڋnd + +dev + -- +hi¡Üy +=10 -- +³riod +=7| +INFO +] + +55 +EOF +; + +61 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +63 +$this +-> + `rÙ©e +( +$¬gum’ts +['­¶iÿtiÚ'], $¬gum’ts['’v'], +$ÝtiÚs +['³riod'], $ÝtiÚs['hi¡Üy'], +Œue +); + +64 + } +} + +77 +public + +funùiÚ + + $rÙ©e +( +$­p +, +$’v +, +$³riod + = +nuÎ +, +$hi¡Üy + =‚uÎ, +$ov”ride + = +çl£ +) + +79 +$logfže + = +$­p +.'_'. +$’v +; + +80 +$logdœ + = +sfCÚfig +:: + `g‘ +('sf_log_dir'); + +83 +$³riod + = + `is£t +($³riodè? $³riod : +£lf +:: +DEF_PERIOD +; + +84 +$hi¡Üy + = + `is£t +($hi¡Üyè? $hi¡Üy : +£lf +:: +DEF_HISTORY +; + +87 +$today + = + `d©e +('Ymd'); + +90 ià(! + `is_dœ +( +$logdœ +.'/history')) + +92 +$this +-> + `g‘Fžesy¡em +()-> + `mkdœs +( +$logdœ +.'/history'); + +96 +$logs + = +sfFšd” +:: + `ty³ +('fže')-> + `maxd•th +(1)-> + `Çme +( +$logfže +.'_*.log')-> + `sÜt_by_Çme +()-> + `š +( +$logdœ +.'/history'); + +97 +$»ûÁlog + = + `is_¬¿y +( +$logs +è? + `¬¿y_pÝ +($logsè: +nuÎ +; + +99 ià( +$»ûÁlog +) + +102 +$Ï¡RÙ©edOn + = + `fžemtime +( +$»ûÁlog +); + +103 +$rÙ©eOn + = + `d©e +('Ymd', + `¡¹Ùime +('+ '. +$³riod +.' days', +$Ï¡RÙ©edOn +)); + +108 +$rÙ©eOn + = +nuÎ +; + +111 +$¤cLog + = +$logdœ +.'/'. +$logfže +.'.log'; + +112 +$de¡Log + = +$logdœ +.'/hi¡Üy/'. +$logfže +.'_'. +$today +.'.log'; + +115 ià(! +$rÙ©eOn + || ($rÙ©eOÀ=ð +$today +è|| +$ov”ride +) + +118 +$lockFže + = +sfCÚfig +:: + `g‘ +('sf_d©a_dœ').'/'. +$­p +.'_'. +$’v +.'-cli.lck'; + +119 +$this +-> + `g‘Fžesy¡em +()-> + `touch +( +$lockFže +); + +122 +$this +-> + `g‘Fžesy¡em +()-> + `chmod +( +$lockFže +, 0777); + +125 ià( + `fže_exi¡s +( +$¤cLog +)) + +128 ià( + `fže_exi¡s +( +$de¡Log +)) + +131 +$hªdË + = + `fݒ +( +$de¡Log +, 'a'); + +132 +$­³nd + = + `fže_g‘_cڋÁs +( +$¤cLog +); + +134 +$this +-> + `logSeùiÚ +('fže+', +$de¡Log +); + +135 + `fwr™e +( +$hªdË +, +$­³nd +); + +140 +$this +-> + `g‘Fžesy¡em +()-> + `cÝy +( +$¤cLog +, +$de¡Log +); + +144 +$this +-> + `g‘Fžesy¡em +()-> + `»move +( +$¤cLog +); + +147 +$ÃwLogs + = +sfFšd” +:: + `ty³ +('fže')-> + `maxd•th +(1)-> + `Çme +( +$logfže +.'_*.log')-> + `sÜt_by_Çme +()-> + `š +( +$logdœ +.'/history'); + +150 ià( + `couÁ +( +$ÃwLogs +è> +$hi¡Üy +) + +152 +$this +-> + `g‘Fžesy¡em +()-> + `»move +( +$ÃwLogs +[0]); + +157 +$this +-> + `g‘Fžesy¡em +()-> + `»move +( +$lockFže +); + +159 + } +} + + @lib/vendor/symfony/lib/task/plugin/sfPluginAddChannelTask.class.php + +1 + `addArgum’ts +( + `¬¿y +( + +29 +Ãw + + `sfCommªdArgum’t +('Çme', +sfCommªdArgum’t +:: +REQUIRED +, 'The channel‚ame'), + +32 +$this +-> +Çme¥aû + = 'plugin'; + +33 +$this +-> +Çme + = 'add-channel'; + +35 +$this +-> +br›fDesütiÚ + = 'Add‡‚ew PEAR channel'; + +37 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +38 +The + [ +¶ugš +: +add +- +chªÃl +| +INFO +] +sk + +adds + +a + +Ãw + +PEAR + channel: + +40 [./ +symfÚy + +¶ugš +: +add +- +chªÃl + symfÚy. +¶ugšs +. +³¬ +. +exam¶e +. +com +| +INFO +] + +41 +EOF +; + +47 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +49 +$this +-> + `logSeùiÚ +('¶ugš', + `¥rštf +('add chªÃÈ"%s"', +$¬gum’ts +['name'])); + +51 +$this +-> + `g‘PlugšMªag” +()-> + `g‘EnvœÚm’t +()-> + `»gi¡”ChªÃl +( +$¬gum’ts +['name']); + +52 + } +} + + @lib/vendor/symfony/lib/task/plugin/sfPluginBaseTask.class.php + +1 + `addArgum’ts +( + `¬¿y +( + +29 +Ãw + + `sfCommªdArgum’t +('Çme', +sfCommªdArgum’t +:: +REQUIRED +, 'The…lugin‚ame'), + +32 +$this +-> + `addO±iÚs +( + `¬¿y +( + +33 +Ãw + + `sfCommªdO±iÚ +('¡abž™y', 's', +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Th´eã¼ed sbž™y (¡abË, b‘a,‡Íha)', +nuÎ +), + +34 +Ãw + + `sfCommªdO±iÚ +('»Ëa£', 'r', +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Th´eã¼ed v”siÚ', +nuÎ +), + +35 +Ãw + + `sfCommªdO±iÚ +('chªÃl', 'c', +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'ThPEAR chªÃÈÇme', +nuÎ +), + +36 +Ãw + + `sfCommªdO±iÚ +('š¡®l_d•s', 'd', +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Wh‘h”ØfÜû in¡®ÏtiÚ oà»quœed d•’d’c›s', +nuÎ +), + +37 +Ãw + + `sfCommªdO±iÚ +('fÜû-liûn£', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Whethero force installationƒven ifhe†icense is‚ot MIT†ike'), + +40 +$this +-> +Çme¥aû + = 'plugin'; + +41 +$this +-> +Çme + = 'install'; + +43 +$this +-> +br›fDesütiÚ + = 'Installs‡…lugin'; + +45 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +46 +The + [ +¶ugš +: +š¡®l +| +INFO +] +sk + +š¡®ls + +a +…lugin: + +48 [./ +symfÚy + +¶ugš +: +š¡®l + +sfGu¬dPlugš +| +INFO +] + +50 +By + , +™ + +š¡®ls + +the + +ϋ¡ + [ +¡abË +| +COMMENT +] +»Ëa£ +. + +52 +If + +you + +wªt + +to + +š¡®l + +a + +¶ugš + +th© + +is + +nÙ + +¡abË + +y‘ +, + +53 +u£ + +the + [ +¡abž™y +| +COMMENT +] +ÝtiÚ +: + +55 [./ +symfÚy + +¶ugš +: +š¡®l + -- +¡abž™y += +b‘a + +sfGu¬dPlugš +| +INFO +] + +56 [./ +symfÚy + +¶ugš +: +š¡®l + - +s + +b‘a + +sfGu¬dPlugš +| +INFO +] + +58 +You + +ÿn + +®so + +fÜû + +the + +š¡®ÏtiÚ + +of + +a + +¥ecific + +v”siÚ +: + +60 [./ +symfÚy + +¶ugš +: +š¡®l + -- +»Ëa£ +=1.0.0 +sfGu¬dPlugš +| +INFO +] + +61 [./ +symfÚy + +¶ugš +: +š¡®l + - +r + 1.0.0 +sfGu¬dPlugš +| +INFO +] + +63 +To + +fÜû + +š¡®ÏtiÚ + +of + +®l + +»quœed + +d•’d’c›s +, +u£ + +the + [ +š¡®l_d•s +| +INFO +] +æag +: + +65 [./ +symfÚy + +¶ugš +: +š¡®l + --š¡®l- +d•s + +sfGu¬dPlugš +| +INFO +] + +66 [./ +symfÚy + +¶ugš +: +š¡®l + - +d + +sfGu¬dPlugš +| +INFO +] + +68 +By + , +the + +PEAR + +chªÃl + +u£d + +is + [ +symfÚy +- +¶ugšs +| +INFO +] + +69 ( +¶ugšs +. +symfÚy +- +´ojeù +. +Üg +). + +71 +You + +ÿn + +¥ecify + +ªÙh” + +chªÃl + +w™h + +the + [chªÃl| +COMMENT +] +ÝtiÚ +: + +73 [./ +symfÚy + +¶ugš +: +š¡®l + -- +chªÃl += +my³¬chªÃl + +sfGu¬dPlugš +| +INFO +] + +74 [./ +symfÚy + +¶ugš +: +š¡®l + - +c + +my³¬chªÃl + +sfGu¬dPlugš +| +INFO +] + +76 +You + +ÿn + +®so + +š¡®l + +PEAR + +·ckages + +ho¡ed + +Ú + +a + +webs™e +: + +78 [./ +symfÚy + +¶ugš +: +š¡®l + +h‰p +: + +80 +Or + +loÿl + +PEAR + +·ckages +: + +82 [./ +symfÚy + +¶ugš +: +š¡®l + / +home +/ +çb›n +/ +¶ugšs +/ +sfGu¬dPlugš +-1.0.0. +tgz +| +INFO +] + +84 +If + +the + +¶ugš + +cڏšs + +some + +web + + `cڋÁ + ( +images +, +¡yËsh“ts + +Ü + +javasüts +), + +85 +the + +sk + +ü—‹s + +a + [% +Çme +%| +COMMENT +] +symbÞic + +lšk +  +tho£ + +as£ts + +und” + [ +web +/|COMMENT]. + +86 +On + +Wšdows +, +the + +sk + +cÝy + +®l +h +fžes + +to +h[ +web +/% +Çme +%| +COMMENT +] +dœeùÜy +. + +87 +EOF +; + +93 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +95 +$this +-> + `logSeùiÚ +('¶ugš', + `¥rštf +('š¡®lšg…lugš "%s"', +$¬gum’ts +['name'])); + +97 +$ÝtiÚs +['version'] = $options['release']; + +98 + `un£t +( +$ÝtiÚs +['release']); + +101 ià(! +$ÝtiÚs +['force-license']) + +103 +Œy + + +105 +$liûn£ + = +$this +-> + `g‘PlugšMªag” +()-> + `g‘PlugšLiûn£ +( +$¬gum’ts +['Çme'], +$ÝtiÚs +); + +107 + `ÿtch + ( +Exû±iÚ + +$e +) + +109 +throw + +Ãw + + `sfCommªdExû±iÚ +( + `¥rštf +('% (u£ --fÜû-liûn£ØfÜû in¡®ÏtiÚ)', +$e +-> + `g‘Mes§ge +())); + +112 ià( +çl£ + !=ð +$liûn£ +) + +114 +$‹mp + = + `Œim +( + `¡r_»¶aû +('liûn£', '', + `¡¹Þow” +( +$liûn£ +))); + +115 ià( +nuÎ + !=ð +$liûn£ + && ! + `š_¬¿y +( +$‹mp +, + `¬¿y +('mit', 'bsd', 'lgpl', 'php', 'apache'))) + +117 +throw + +Ãw + + `sfCommªdExû±iÚ +( + `¥rštf +('Thliûn£ oàthi ¶ugš "%s" i nÙ MIT†ik(u£ --fÜû-liûn£ØfÜû in¡®ÏtiÚ).', +$liûn£ +)); + +122 +$this +-> + `g‘PlugšMªag” +()-> + `š¡®lPlugš +( +$¬gum’ts +['Çme'], +$ÝtiÚs +); + +123 + } +} + + @lib/vendor/symfony/lib/task/plugin/sfPluginListTask.class.php + +1 +Çme¥aû + = 'plugin'; + +29 +$this +-> +Çme + = 'list'; + +31 +$this +-> +br›fDesütiÚ + = 'Lists installed…lugins'; + +33 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +34 +The + [ +¶ugš +: +li¡ +| +INFO +] +sk + +li¡s + +®l + +š¡®Ëd + +¶ugšs +: + +36 [./ +symfÚy + +¶ugš +: +li¡ +| +INFO +] + +38 +It + +®so + +gives + +the + +chªÃl + +ªd + +v”siÚ +  +—ch + +¶ugš +. + +39 +EOF +; + +45 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +47 +$this +-> + `log +($this-> +fÜm©‹r +-> + `fÜm© +('Installed…lugins:', 'COMMENT')); + +49 + `fܗch + ( +$this +-> + `g‘PlugšMªag” +()-> + `g‘In¡®ËdPlugšs +(è +as + +$·ckage +) + +51 +$®Ÿs + = +$this +-> + `g‘PlugšMªag” +()-> + `g‘EnvœÚm’t +()-> + `g‘Regi¡ry +()-> + `g‘ChªÃl +( +$·ckage +->g‘ChªÃl())-> + `g‘AlŸs +(); + +52 +$this +-> + `log +( + `¥rštf +(' %-40 %10s-%-6 %s', $this-> +fÜm©‹r +-> + `fÜm© +( +$·ckage +-> + `g‘Package +(), 'INFO'), $·ckage-> + `g‘V”siÚ +(), $·ckage-> + `g‘S‹ +(è? $·ckage->g‘S‹(è: +nuÎ +, $this->fÜm©‹r->fÜm©(¥rštf('# % (%s)', $·ckage-> + `g‘ChªÃl +(), +$®Ÿs +), 'COMMENT'))); + +54 + } +} + + @lib/vendor/symfony/lib/task/plugin/sfPluginPublishAssetsTask.class.php + +1 + `addArgum’ts +( + `¬¿y +( + +29 +Ãw + + `sfCommªdArgum’t +('¶ugšs', +sfCommªdArgum’t +:: +OPTIONAL + | sfCommªdArgum’t:: +IS_ARRAY +, 'Publishhis…lugin\'s‡ssets'), + +32 +$this +-> + `addO±iÚs +( + `¬¿y +( + +33 +Ãw + + `sfCommªdO±iÚ +('cÜe-Úly', '', +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'If set only core…lugins will…ublishheir‡ssets'), + +36 +$this +-> +Çme¥aû + = 'plugin'; + +37 +$this +-> +Çme + = 'publish-assets'; + +39 +$this +-> +br›fDesütiÚ + = 'Publishes web‡ssets for‡ll…lugins'; + +41 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +42 +The + [ +¶ugš +: +publish +- +as£ts +| +INFO +] +sk + +wžl +…ublish +web +‡s£t  +äom + +®l + +¶ugšs +. + +44 [./ +symfÚy + +¶ugš +: +publish +- +as£ts +| +INFO +] + +46 +In + +çù + +this + +wžl + +£nd + +the + [ +¶ugš +. +po¡_š¡®l +| +INFO +] +ev’t + +to + +—ch +…lugin. + +48 +You + +ÿn + +¥ecify + +which + +¶ugš + +Ü + +¶ugšs + +should + +š¡®l + +theœ + +as£ts + +by + +·ssšg + + +49 +tho£ + +¶ugšs +'‚ames‡s‡rguments: + +51 [./ +symfÚy + +¶ugš +: +publish +- +as£ts + +sfDoùršePlugš +| +INFO +] + +52 +EOF +; + +58 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +60 +$’abËdPlugšs + = +$this +-> +cÚfigu¿tiÚ +-> + `g‘Plugšs +(); + +62 ià( +$diff + = + `¬¿y_diff +( +$¬gum’ts +['¶ugšs'], +$’abËdPlugšs +)) + +64 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +('Plugš(sènÙ found: '. + `još +(', ', +$diff +)); + +67 ià( +$ÝtiÚs +['core-only']) + +69 +$cÜePlugšs + = +sfFšd” +:: + `ty³ +('dœ')-> + `»Ïtive +()-> + `maxd•th +(0)-> + `š +( +$this +-> +cÚfigu¿tiÚ +-> + `g‘SymfÚyLibDœ +().'/plugins'); + +70 +$¬gum’ts +['¶ugšs'] = + `¬¿y_unique +( + `¬¿y_m”ge +($¬gum’ts['¶ugšs'], + `¬¿y_š‹r£ù +( +$’abËdPlugšs +, +$cÜePlugšs +))); + +72 ià(! + `couÁ +( +$¬gum’ts +['plugins'])) + +74 +$¬gum’ts +['¶ugšs'] = +$’abËdPlugšs +; + +77 + `fܗch + ( +$¬gum’ts +['¶ugšs'] +as + +$¶ugš +) + +79 +$¶ugšCÚfigu¿tiÚ + = +$this +-> +cÚfigu¿tiÚ +-> + `g‘PlugšCÚfigu¿tiÚ +( +$¶ugš +); + +81 +$this +-> + `logSeùiÚ +('¶ugš', 'CÚfiguršg…lugš - '. +$¶ugš +); + +82 +$this +-> + `š¡®lPlugšAs£ts +( +$¶ugš +, +$¶ugšCÚfigu¿tiÚ +-> + `g‘RoÙDœ +()); + +84 + } +} + +92 +´Ùeùed + +funùiÚ + + $š¡®lPlugšAs£ts +( +$¶ugš +, +$dœ +) + +94 +$webDœ + = +$dœ +. +DIRECTORY_SEPARATOR +.'web'; + +96 ià( + `is_dœ +( +$webDœ +)) + +98 +$this +-> + `g‘Fžesy¡em +()-> + `»ÏtiveSymlšk +( +$webDœ +, +sfCÚfig +:: + `g‘ +('sf_web_dœ'). +DIRECTORY_SEPARATOR +. +$¶ugš +, +Œue +); + +100 + } +} + + @lib/vendor/symfony/lib/task/plugin/sfPluginUninstallTask.class.php + +1 + `addArgum’ts +( + `¬¿y +( + +29 +Ãw + + `sfCommªdArgum’t +('Çme', +sfCommªdArgum’t +:: +REQUIRED +, 'The…lugin‚ame'), + +32 +$this +-> + `addO±iÚs +( + `¬¿y +( + +33 +Ãw + + `sfCommªdO±iÚ +('chªÃl', 'c', +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'ThPEAR chªÃÈÇme', +nuÎ +), + +34 +Ãw + + `sfCommªdO±iÚ +('š¡®l_d•s', 'd', +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Wh‘h”ØfÜû in¡®ÏtiÚ oàd•’d’c›s', +nuÎ +), + +37 +$this +-> +Çme¥aû + = 'plugin'; + +38 +$this +-> +Çme + = 'uninstall'; + +40 +$this +-> +br›fDesütiÚ + = 'Uninstalls‡…lugin'; + +42 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +43 +The + [ +¶ugš +: +unš¡®l +| +INFO +] +sk + +unš¡®ls + +a +…lugin: + +45 [./ +symfÚy + +¶ugš +: +unš¡®l + +sfGu¬dPlugš +| +INFO +] + +47 +The +  +chªÃl + +is + [ +symfÚy +| +INFO +]. + +49 +You + +ÿn + +®so + +unš¡®l + +a + +¶ugš + +which + +has +‡ +difã»Á + +chªÃl +: + +51 [./ +symfÚy + +¶ugš +: +unš¡®l + -- +chªÃl += +my³¬chªÃl + +sfGu¬dPlugš +| +INFO +] + +53 [./ +symfÚy + +¶ugš +: +unš¡®l + - +c + +my³¬chªÃl + +sfGu¬dPlugš +| +INFO +] + +55 +Or + +you + +ÿn + +u£ + +the + [ +chªÃl +/ +·ckage +| +INFO +] +nÙ©iÚ +: + +57 [./ +symfÚy + +¶ugš +: +unš¡®l + +my³¬chªÃl +/ +sfGu¬dPlugš +| +INFO +] + +59 +You + +ÿn + +g‘ + +the + +PEAR + +chªÃl + +Çme + +of + +a + +¶ugš + +by + +Ïunchšg +he + +60 [ +¶ugš +: +li¡ +] +sk +. + +62 +If + +the + +¶ugš + +cڏšs + +some + +web + + `cڋÁ + ( +images +, +¡yËsh“ts + +Ü + +javasüts +), + +63 +the + +sk + +®so + +»moves +h[ +web +/% +Çme +%| +COMMENT +] +symbÞic + + `lšk + ( +Ú + * +nix +) + +64 +Ü + + `dœeùÜy + ( +Ú + +Wšdows +). + +65 +EOF +; + +71 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +73 +$this +-> + `logSeùiÚ +('¶ugš', + `¥rštf +('unš¡®lšg…lugš "%s"', +$¬gum’ts +['name'])); + +75 +$this +-> + `g‘PlugšMªag” +()-> + `unš¡®lPlugš +( +$¬gum’ts +['Çme'], +$ÝtiÚs +['channel']); + +76 + } +} + + @lib/vendor/symfony/lib/task/plugin/sfPluginUpgradeTask.class.php + +1 + `addArgum’ts +( + `¬¿y +( + +29 +Ãw + + `sfCommªdArgum’t +('Çme', +sfCommªdArgum’t +:: +REQUIRED +, 'The…lugin‚ame'), + +32 +$this +-> + `addO±iÚs +( + `¬¿y +( + +33 +Ãw + + `sfCommªdO±iÚ +('¡abž™y', 's', +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Th´eã¼ed sbž™y (¡abË, b‘a,‡Íha)', +nuÎ +), + +34 +Ãw + + `sfCommªdO±iÚ +('»Ëa£', 'r', +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Th´eã¼ed v”siÚ', +nuÎ +), + +35 +Ãw + + `sfCommªdO±iÚ +('chªÃl', 'c', +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'ThPEAR chªÃÈÇme', +nuÎ +), + +38 +$this +-> +Çme¥aû + = 'plugin'; + +39 +$this +-> +Çme + = 'upgrade'; + +41 +$this +-> +br›fDesütiÚ + = 'Upgrades‡…lugin'; + +43 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +44 +The + [ +¶ugš +: +upg¿de +| +INFO +] +sk + +Œ›s + +to + upg¿d +a +…lugin: + +46 [./ +symfÚy + +¶ugš +: +upg¿de + +sfGu¬dPlugš +| +INFO +] + +48 +The +  +chªÃl + +is + [ +symfÚy +| +INFO +]. + +50 +If + +the + +¶ugš + +cڏšs + +some + +web + + `cڋÁ + ( +images +, +¡yËsh“ts + +Ü + +javasüts +), + +51 +the + +sk + +®so + +upd©es +h[ +web +/% +Çme +%| +COMMENT +] +dœeùÜy + +cڋÁ + +Ú + +Wšdows +. + +53 +S“ + [ +¶ugš +: +š¡®l +| +INFO +]  +mÜe + +šfÜm©iÚ + +about + +the + +fÜm© + +of +h¶ugš +Çme + +ªd + +ÝtiÚs +. + +54 +EOF +; + +60 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +62 +$this +-> + `logSeùiÚ +('¶ugš', + `¥rštf +('upg¿dšg…lugš "%s"', +$¬gum’ts +['name'])); + +64 +$this +-> + `g‘PlugšMªag” +()-> + `š¡®lPlugš +( +$¬gum’ts +['Çme'], +$ÝtiÚs +); + +65 + } +} + + @lib/vendor/symfony/lib/task/project/sfProjectClearControllersTask.class.php + +1 +Çme¥aû + = 'project'; + +27 +$this +-> +Çme + = 'clear-controllers'; + +28 +$this +-> +br›fDesütiÚ + = 'Clears‡ll‚on…roductionƒnvironment controllers'; + +30 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +31 +The + [ +´ojeù +: +þ—r +- +cڌÞËrs +| +INFO +] +sk + +þ—rs + +®l + +nÚ + +´oduùiÚ + +’vœÚm’t + + +32 +cڌÞËrs +: + +34 [./ +symfÚy + +´ojeù +: +þ—r +- +cڌÞËrs +| +INFO +] + +36 +You + +ÿn + +u£ + +this + +sk + +Ú + +a + +´oduùiÚ + +£rv” + +to + +»move + +®l + +äÚt + + +37 +cڌÞËr + +süts + +exû± + +the + +´oduùiÚ + +Úes +. + +39 +If + +you + +have + +two + +­¶iÿtiÚs + +Çmed + [ +äڋnd +| +COMMENT +] +ªd + [ +back’d +|COMMENT], + +40 +you + +have + +four +  +cڌÞËr + +süts + +š + [ +web +/| +COMMENT +]: + +42 [ +šdex +. +php + + +43 +äڋnd_dev +. +php + + +44 +back’d +. +php + + +45 +back’d_dev +. +php +| +INFO +] + +47 +Aᔠ+ +executšg + +the + [ +´ojeù +: +þ—r +- +cڌÞËrs +| +COMMENT +] +sk +, +two + +äÚt + + +48 +cڌÞËr + +süts + +¬e + +Ëá + +š + [ +web +/| +COMMENT +]: + +50 [ +šdex +. +php + + +51 +back’d +. +php +| +INFO +] + +53 +Tho£ + +two + +cڌÞËrs + +¬e + +§ã + +beÿu£ + +debug + +mode + +ªd + +the + +web + debug + +54 +toÞb¬ + +¬e + +di§bËd +. + +55 +EOF +; + +61 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +63 +$fšd” + = +sfFšd” +:: + `ty³ +('fže')-> + `maxd•th +(1)-> + `Çme +('*.php'); + +64 + `fܗch + ( +$fšd” +-> + `š +( +sfCÚfig +:: + `g‘ +('sf_web_dœ')è +as + +$cڌÞËr +) + +66 +$cڋÁ + = + `fže_g‘_cڋÁs +( +$cڌÞËr +); + +68 ià( + `´eg_m©ch +('/ProjeùCÚfigu¿tiÚ::g‘AµliÿtiÚCÚfigu¿tiÚ\(\'(.*?)\', \'(.*?)\'/', +$cڋÁ +, +$m©ch +)) + +71 ià( +$m©ch +[2] != 'prod') + +73 +$this +-> + `g‘Fžesy¡em +()-> + `»move +( +$cڌÞËr +); + +77 + } +} + + @lib/vendor/symfony/lib/task/project/sfProjectDeployTask.class.php + +1 + `addArgum’ts +( + `¬¿y +( + +31 +Ãw + + `sfCommªdArgum’t +('£rv”', +sfCommªdArgum’t +:: +REQUIRED +, 'The server‚ame'), + +34 +$this +-> + `addO±iÚs +( + `¬¿y +( + +35 +Ãw + + `sfCommªdO±iÚ +('go', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Dohe deployment'), + +36 +Ãw + + `sfCommªdO±iÚ +('rsync-dœ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The directory whereo†ook for„sync*.txt files', 'config'), + +37 +Ãw + + `sfCommªdO±iÚ +('rsync-ÝtiÚs', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL +, 'To optionso…assohe„syncƒxecutable', '-azC --force --delete --progress'), + +40 +$this +-> +Çme¥aû + = 'project'; + +41 +$this +-> +Çme + = 'deploy'; + +42 +$this +-> +br›fDesütiÚ + = 'Deploys‡…rojecto‡nother server'; + +44 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +45 +The + [ +´ojeù +: +d•loy +| +INFO +] +sk + +d•loys + +a +…rojeù +Ú +‡ +£rv” +: + +47 [./ +symfÚy + +´ojeù +: +d•loy + +´oduùiÚ +| +INFO +] + +49 +The + +£rv” + +mu¡ + +be + +cÚfigu»d + +š + [ +cÚfig +/ +´Ý”t›s +. +ši +| +COMMENT +]: + +51 [[ +´oduùiÚ +] + +52 +ho¡ += +www +. +exam¶e +. +com + + +53 +pÜt +=22 + +54 +u£r += +çb›n + + +55 +dœ +=/ +v¬ +/ +www +/ +sfblog +/ + +56 +ty³ += +rsync +| +INFO +] + +58 +To + +autom©e + +the + +d•loym’t +,h +sk + +u£s + +rsync + +ov” + +SSH +. + +59 +You + +mu¡ + +cÚfigu» + +SSH + +acûss + +w™h + +a + +key + +Ü + cÚfigu» +the + +·sswÜd + + +60 +š + [ +cÚfig +/ +´Ý”t›s +. +ši +| +COMMENT +]. + +62 +By + , +the + +sk + +is + +š + +dry +- +mode +. +To + dØ +a + +»® + +d•loym’t +, +you + + +63 +mu¡ + +·ss + +the + [-- +go +| +COMMENT +] +ÝtiÚ +: + +65 [./ +symfÚy + +´ojeù +: +d•loy + -- +go + +´oduùiÚ +| +INFO +] + +67 +Fžes + +ªd + +dœeùܛs + +cÚfigu»d + +š + [ +cÚfig +/ +rsync_exþude +. +txt +| +COMMENT +] +¬e + + +68 +nÙ + +d•loyed +: + +70 [. +svn + + +71 / +web +/ +u¶ßds + + +92 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + =‡rray()) + +94 +$’v + = +$¬gum’ts +['server']; + +96 +$ši + = +sfCÚfig +:: + `g‘ +('sf_config_dir').'/properties.ini'; + +97 ià(! + `fže_exi¡s +( +$ši +)) + +99 +throw + +Ãw + + `sfCommªdExû±iÚ +('You must create‡ config/properties.ini file'); + +102 +$´Ý”t›s + = + `·r£_ši_fže +( +$ši +, +Œue +); + +104 ià(! + `is£t +( +$´Ý”t›s +[ +$’v +])) + +106 +throw + +Ãw + + `sfCommªdExû±iÚ +( + `¥rštf +('You mu¡ defšthcÚfigu¿tiÚ fÜ s”v” "%s" iÀcÚfig/´Ý”t›s.ši', +$’v +)); + +109 +$´Ý”t›s + = $´Ý”t›s[ +$’v +]; + +111 ià(! + `is£t +( +$´Ý”t›s +['host'])) + +113 +throw + +Ãw + + `sfCommªdExû±iÚ +('You must define‡ "host"ƒntry.'); + +116 ià(! + `is£t +( +$´Ý”t›s +['dir'])) + +118 +throw + +Ãw + + `sfCommªdExû±iÚ +('You must define‡ "dir"ƒntry.'); + +121 +$ho¡ + = +$´Ý”t›s +['host']; + +122 +$dœ + = +$´Ý”t›s +['dir']; + +123 +$u£r + = + `is£t +( +$´Ý”t›s +['user']) ? $properties['user'].'@' : ''; + +125 ià( + `sub¡r +( +$dœ +, -1) != '/') + +127 +$dœ + .= '/'; + +130 +$ssh + = 'ssh'; + +132 ià( + `is£t +( +$´Ý”t›s +['port'])) + +134 +$pÜt + = +$´Ý”t›s +['port']; + +135 +$ssh + = '"ssh -p'. +$pÜt +.'"'; + +138 ià( + `is£t +( +$´Ý”t›s +['parameters'])) + +140 +$·¿m‘”s + = +$´Ý”t›s +['parameters']; + +144 +$·¿m‘”s + = +$ÝtiÚs +['rsync-options']; + +145 ià( + `fže_exi¡s +( +$ÝtiÚs +['rsync-dir'].'/rsync_include.txt')) + +147 +$·¿m‘”s + .ð + `¥rštf +(' --šþude-äom=%s/rsync_šþude.txt', +$ÝtiÚs +['rsync-dir']); + +150 ià( + `fže_exi¡s +( +$ÝtiÚs +['rsync-dir'].'/rsync_exclude.txt')) + +152 +$·¿m‘”s + .ð + `¥rštf +(' --exþude-äom=%s/rsync_exþude.txt', +$ÝtiÚs +['rsync-dir']); + +155 ià( + `fže_exi¡s +( +$ÝtiÚs +['rsync-dir'].'/rsync.txt')) + +157 +$·¿m‘”s + .ð + `¥rštf +(' --fžes-äom=%s/rsync.txt', +$ÝtiÚs +['rsync-dir']); + +161 +$dryRun + = +$ÝtiÚs +['go'] ? '' : '--dry-run'; + +162 +$commªd + = "rsync $dryRun $parameters -e $ssh ./ $user$host:$dir"; + +164 +$this +-> + `g‘Fžesy¡em +()-> + `execu‹ +( +$commªd +, +$ÝtiÚs +['Œaû'] ? + `¬¿y +($this, 'logOuut'è: +nuÎ +,‡rray($this, 'logErrors')); + +166 +$this +-> + `þ—rBufãrs +(); + +169 +public + +funùiÚ + + `logOuut +( +$ouut +) + +171 ià( +çl£ + !=ð +$pos + = + `¡½os +( +$ouut +, "\n")) + +173 +$this +-> +ouutBufãr + .ð + `sub¡r +( +$ouut +, 0, +$pos +); + +174 +$this +-> + `log +($this-> +ouutBufãr +); + +175 +$this +-> +ouutBufãr + = + `sub¡r +( +$ouut +, +$pos + + 1); + +179 +$this +-> +ouutBufãr + .ð +$ouut +; + +183 +public + +funùiÚ + + `logE¼Üs +( +$ouut +) + +185 ià( +çl£ + !=ð +$pos + = + `¡½os +( +$ouut +, "\n")) + +187 +$this +-> +”rÜBufãr + .ð + `sub¡r +( +$ouut +, 0, +$pos +); + +188 +$this +-> + `log +($this-> +fÜm©‹r +-> + `fÜm© +($this-> +”rÜBufãr +, 'ERROR')); + +189 +$this +-> +”rÜBufãr + = + `sub¡r +( +$ouut +, +$pos + + 1); + +193 +$this +-> +”rÜBufãr + .ð +$ouut +; + +197 +´Ùeùed + +funùiÚ + + `þ—rBufãrs +() + +199 ià( +$this +-> +ouutBufãr +) + +201 +$this +-> + `log +($this-> +ouutBufãr +); + +202 +$this +-> +ouutBufãr + = ''; + +205 ià( +$this +-> +”rÜBufãr +) + +207 +$this +-> + `log +($this-> +fÜm©‹r +-> + `fÜm© +($this-> +”rÜBufãr +, 'ERROR')); + +208 +$this +-> +”rÜBufãr + = ''; + + @lib/vendor/symfony/lib/task/project/sfProjectDisableTask.class.php + +1 + `addArgum’ts +( + `¬¿y +( + +27 +Ãw + + `sfCommªdArgum’t +('’v', +sfCommªdArgum’t +:: +REQUIRED +, 'Theƒnvironment‚ame'), + +28 +Ãw + + `sfCommªdArgum’t +('­p', +sfCommªdArgum’t +:: +OPTIONAL + | sfCommªdArgum’t:: +IS_ARRAY +, 'The‡pplication‚ame'), + +31 +$this +-> +Çme¥aû + = 'project'; + +32 +$this +-> +Çme + = 'disable'; + +33 +$this +-> +br›fDesütiÚ + = 'Disables‡n‡pplication in‡ givenƒnvironment'; + +35 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +36 +The + [ +´ojeù +: +di§bË +| +INFO +] +sk + +di§bËs + +ª + +’vœÚm’t +: + +38 [./ +symfÚy + +´ojeù +: +di§bË + +´od +| +INFO +] + +40 +You + +ÿn + +®so + +¥ecify + +šdividu® + +­¶iÿtiÚs + +to + +be + +di§bËd + +š + +th© + + +41 +’vœÚm’t +: + +43 [./ +symfÚy + +´ojeù +: +di§bË + +´od + +äڋnd + +back’d +| +INFO +] + +44 +EOF +; + +50 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +52 ià(1 =ð + `couÁ +( +$¬gum’ts +['­p']è&& ! + `fže_exi¡s +( +sfCÚfig +:: + `g‘ +('sf_apps_dir').'/'.$arguments['app'][0])) + +55 +$­¶iÿtiÚs + = + `¬¿y +( +$¬gum’ts +['env']); + +56 +$’v + = +$¬gum’ts +['app'][0]; + +60 +$­¶iÿtiÚs + = + `couÁ +( +$¬gum’ts +['­p']è? $¬gum’ts['­p'] : +sfFšd” +:: + `ty³ +('dœ')-> + `»Ïtive +()-> + `maxd•th +(0)-> + `š +( +sfCÚfig +:: + `g‘ +('sf_apps_dir')); + +61 +$’v + = +$¬gum’ts +['env']; + +64 + `fܗch + ( +$­¶iÿtiÚs + +as + +$­p +) + +66 +$lockFže + = +sfCÚfig +:: + `g‘ +('sf_d©a_dœ').'/'. +$­p +.'_'. +$’v +.'.lck'; + +67 ià( + `fže_exi¡s +( +$lockFže +)) + +69 +$this +-> + `logSeùiÚ +('’abË', + `¥rštf +('% [%s] i cu¼’Žy DISABLED', +$­p +, +$’v +)); + +73 +$this +-> + `g‘Fžesy¡em +()-> + `touch +( +$lockFže +); + +75 +$this +-> + `logSeùiÚ +('’abË', + `¥rštf +('% [%s] ha b“ÀDISABLED', +$­p +, +$’v +)); + +78 + } +} + + @lib/vendor/symfony/lib/task/project/sfProjectEnableTask.class.php + +1 + `addArgum’ts +( + `¬¿y +( + +27 +Ãw + + `sfCommªdArgum’t +('’v', +sfCommªdArgum’t +:: +REQUIRED +, 'Theƒnvironment‚ame'), + +28 +Ãw + + `sfCommªdArgum’t +('­p', +sfCommªdArgum’t +:: +OPTIONAL + | sfCommªdArgum’t:: +IS_ARRAY +, 'The‡pplication‚ame'), + +31 +$this +-> +Çme¥aû + = 'project'; + +32 +$this +-> +Çme + = 'enable'; + +33 +$this +-> +br›fDesütiÚ + = 'Enables‡n‡pplication in‡ givenƒnvironment'; + +35 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +36 +The + [ +´ojeù +: +’abË +| +INFO +] +sk + +’abËs + +a + +¥ecific + +’vœÚm’t +: + +38 [./ +symfÚy + +´ojeù +: +’abË + +äڋnd + +´od +| +INFO +] + +40 +You + +ÿn + +®so + +¥ecify + +šdividu® + +­¶iÿtiÚs + +to + +be + +’abËd + +š + +th© + + +41 +’vœÚm’t +: + +43 [./ +symfÚy + +´ojeù +: +’abË + +´od + +äڋnd + +back’d +| +INFO +] + +44 +EOF +; + +50 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +52 ià(1 =ð + `couÁ +( +$¬gum’ts +['­p']è&& ! + `fže_exi¡s +( +sfCÚfig +:: + `g‘ +('sf_apps_dir').'/'.$arguments['app'][0])) + +55 +$­¶iÿtiÚs + = + `¬¿y +( +$¬gum’ts +['env']); + +56 +$’v + = +$¬gum’ts +['app'][0]; + +60 +$­¶iÿtiÚs + = + `couÁ +( +$¬gum’ts +['­p']è? $¬gum’ts['­p'] : +sfFšd” +:: + `ty³ +('dœ')-> + `»Ïtive +()-> + `maxd•th +(0)-> + `š +( +sfCÚfig +:: + `g‘ +('sf_apps_dir')); + +61 +$’v + = +$¬gum’ts +['env']; + +64 + `fܗch + ( +$­¶iÿtiÚs + +as + +$­p +) + +66 +$lockFže + = +sfCÚfig +:: + `g‘ +('sf_d©a_dœ').'/'. +$­p +.'_'. +$’v +.'.lck'; + +67 ià(! + `fže_exi¡s +( +$lockFže +)) + +69 +$this +-> + `logSeùiÚ +('’abË', + `¥rštf +('% [%s] i cu¼’Žy ENABLED', +$­p +, +$’v +)); + +73 +$this +-> + `g‘Fžesy¡em +()-> + `»move +( +$lockFže +); + +75 +$þ—rCache + = +Ãw + + `sfCacheCˬTask +( +$this +-> +di¥©ch” +, $this-> +fÜm©‹r +); + +76 +$þ—rCache +-> + `£tCommªdAµliÿtiÚ +( +$this +-> +commªdAµliÿtiÚ +); + +77 +$þ—rCache +-> + `£tCÚfigu¿tiÚ +( +$this +-> +cÚfigu¿tiÚ +); + +78 +$þ—rCache +-> + `run +( + `¬¿y +(),‡¼ay('--­p='. +$­p +, '--’v='. +$’v +)); + +80 +$this +-> + `logSeùiÚ +('’abË', + `¥rštf +('% [%s] ha b“ÀENABLED', +$­p +, +$’v +)); + +83 + } +} + + @lib/vendor/symfony/lib/task/project/sfProjectOptimizeTask.class.php + +1 + `addArgum’ts +( + `¬¿y +( + +27 +Ãw + + `sfCommªdArgum’t +('­¶iÿtiÚ', +sfCommªdArgum’t +:: +REQUIRED +, 'The‡pplication‚ame'), + +28 +Ãw + + `sfCommªdArgum’t +('’v', +sfCommªdArgum’t +:: +OPTIONAL +, 'Theƒnvironment‚ame', 'prod'), + +31 +$this +-> +Çme¥aû + = 'project'; + +32 +$this +-> +Çme + = 'optimize'; + +33 +$this +-> +br›fDesütiÚ + = 'Optimizes‡…roject for better…erformance'; + +35 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +36 +The + [ +´ojeù +: +Ýtimize +| +INFO +] +Ýtimizes + +a +…rojeù  +b‘‹r + +³rfÜmªû +: + +38 [./ +symfÚy + +´ojeù +: +Ýtimize + +äڋnd + +´od +| +INFO +] + +40 +This + +sk + +should + +Úly + +be + +u£d + +Ú + +a + +´oduùiÚ + +£rv” +. +DÚ +'t forgeto„e-run + +41 +the + +sk + +—ch + +time +h +´ojeù + +chªges +. + +42 +EOF +; + +48 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +50 +$d©a + = + `¬¿y +(); + +51 +$moduËs + = +$this +-> + `fšdModuËs +(); + +52 +$rg‘ + = +sfCÚfig +:: + `g‘ +('sf_ÿche_dœ').'/'. +$¬gum’ts +['application'].'/'.$arguments['env'].'/config/configuration.php'; + +55 ià( + `fže_exi¡s +( +$rg‘ +)) + +57 +$this +-> + `g‘Fžesy¡em +()-> + `»move +( +$rg‘ +); + +61 +$this +-> + `£tCÚfigu¿tiÚ +($this-> + `ü—‹CÚfigu¿tiÚ +($this-> +cÚfigu¿tiÚ +-> + `g‘AµliÿtiÚ +(), $this->cÚfigu¿tiÚ-> + `g‘EnvœÚm’t +())); + +64 +sfCڋxt +:: + `ü—‹In¡ªû +( +$this +-> +cÚfigu¿tiÚ +); + +67 + `fܗch + ( +$moduËs + +as + +$moduË +) + +69 +$this +-> +cÚfigu¿tiÚ +-> + `g‘CÚfigCache +()-> + `impÜt +('moduËs/'. +$moduË +.'/cÚfig/g’”©Ü.yml', +çl£ +, +Œue +); + +72 +$‹m¶©es + = +$this +-> + `fšdTem¶©es +( +$moduËs +); + +74 +$d©a +['g‘Tem¶©eDœ'] = +$this +-> + `ÝtimizeG‘Tem¶©eDœ +( +$moduËs +, +$‹m¶©es +); + +75 +$d©a +['g‘CڌÞËrDœs'] = +$this +-> + `ÝtimizeG‘CڌÞËrDœs +( +$moduËs +); + +76 +$d©a +['g‘PlugšP©hs'] = +$this +-> +cÚfigu¿tiÚ +-> + `g‘PlugšP©hs +(); + +77 +$d©a +['lßdH–³rs'] = +$this +-> + `ÝtimizeLßdH–³rs +( +$moduËs +); + +79 ià(! + `fže_exi¡s +( +$dœeùÜy + = + `dœÇme +( +$rg‘ +))) + +81 +$this +-> + `g‘Fžesy¡em +()-> + `mkdœs +( +$dœeùÜy +); + +84 +$this +-> + `logSeùiÚ +('fže+', +$rg‘ +); + +85 + `fže_put_cڋÁs +( +$rg‘ +, ' +cÚfigu¿tiÚ +-> + `g‘CڌÞËrDœs +($module); + +96  +$d©a +; + +97 + } +} + +99 +´Ùeùed + +funùiÚ + + $ÝtimizeG‘Tem¶©eDœ +( +$moduËs +, +$‹m¶©es +) + +101 +$d©a + = + `¬¿y +(); + +102 + `fܗch + ( +$moduËs + +as + +$moduË +) + +104 +$d©a +[ +$moduË +] = + `¬¿y +(); + +105 + `fܗch + ( +$‹m¶©es +[ +$moduË +] +as + +$‹m¶©e +) + +107 ià( +nuÎ + !=ð +$dœ + = +$this +-> +cÚfigu¿tiÚ +-> + `g‘Tem¶©eDœ +( +$moduË +, +$‹m¶©e +)) + +109 +$d©a +[ +$moduË +][ +$‹m¶©e +] = +$dœ +; + +114  +$d©a +; + +115 + } +} + +117 +´Ùeùed + +funùiÚ + + $ÝtimizeLßdH–³rs +( +$moduËs +) + +119 +$d©a + = + `¬¿y +(); + +121 +$fšd” + = +sfFšd” +:: + `ty³ +('fže')-> + `Çme +('*Helper.php'); + +124 + `fܗch + ( +$moduËs + +as + +$moduË +) + +126 +$h–³rs + = + `¬¿y +(); + +128 +$dœs + = +$this +-> +cÚfigu¿tiÚ +-> + `g‘H–³rDœs +( +$moduË +); + +129 + `fܗch + ( +$fšd” +-> + `š +( +$dœs +[0]è +as + +$fže +) + +131 +$h–³rs +[ + `ba£Çme +( +$fže +, 'Helper.php')] = $file; + +134 ià( + `couÁ +( +$h–³rs +)) + +136 +$d©a +[ +$moduË +] = +$h–³rs +; + +141 + `fܗch + ( +$this +-> +cÚfigu¿tiÚ +-> + `g‘H–³rDœs +(è +as + +$dœ +) + +143 + `fܗch + ( +$fšd” +-> + `š +( +$dœ +è +as + +$fže +) + +145 +$h–³r + = + `ba£Çme +( +$fže +, 'Helper.php'); + +146 ià(! + `is£t +( +$d©a +[''][ +$h–³r +])) + +148 +$d©a +[''][ +$h–³r +] = +$fže +; + +153  +$d©a +; + +154 + } +} + +156 +´Ùeùed + +funùiÚ + + $fšdTem¶©es +( +$moduËs +) + +158 +$fžes + = + `¬¿y +(); + +160 + `fܗch + ( +$moduËs + +as + +$moduË +) + +162 +$fžes +[ +$moduË +] = +sfFšd” +:: + `ty³ +('fže')-> + `fÞlow_lšk +()-> + `»Ïtive +()-> + `š +( +$this +-> +cÚfigu¿tiÚ +-> + `g‘Tem¶©eDœs +($module)); + +165  +$fžes +; + +166 + } +} + +168 +´Ùeùed + +funùiÚ + + $fšdModuËs +() + +171 +$dœs + = + `¬¿y +( +sfCÚfig +:: + `g‘ +('sf_app_module_dir')); + +174 +$¶ugšSubP©hs + = +$this +-> +cÚfigu¿tiÚ +-> + `g‘PlugšSubP©hs +( +DIRECTORY_SEPARATOR +.'modules'); + +175 +$moduËs + = + `¬¿y +(); + +176 + `fܗch + ( +sfFšd” +:: + `ty³ +('dœ')-> + `maxd•th +(0)-> + `fÞlow_lšk +()-> + `»Ïtive +()-> + `š +( +$¶ugšSubP©hs +è +as + +$moduË +) + +178 ià( + `š_¬¿y +( +$moduË +, +sfCÚfig +:: + `g‘ +('sf_enabled_modules'))) + +180 +$moduËs +[] = +$moduË +; + +185 +$dœs +[] = +sfCÚfig +:: + `g‘ +('sf_symfony_lib_dir').'/controller'; + +187  + `¬¿y_unique +( + `¬¿y_m”ge +( +sfFšd” +:: + `ty³ +('dœ')-> + `maxd•th +(0)-> + `fÞlow_lšk +()-> + `»Ïtive +()-> + `š +( +$dœs +), +$moduËs +)); + +188 + } +} + + @lib/vendor/symfony/lib/task/project/sfProjectPermissionsTask.class.php + +1 +Çme¥aû + = 'project'; + +31 +$this +-> +Çme + = 'permissions'; + +32 +$this +-> +br›fDesütiÚ + = 'Fixes symfony directory…ermissions'; + +34 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +35 +The + [ +´ojeù +: +³rmissiÚs +| +INFO +] +sk + +fixes + +dœeùÜy +…ermissions: + +37 [./ +symfÚy + +´ojeù +: +³rmissiÚs +| +INFO +] + +38 +EOF +; + +44 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +46 ià( + `fže_exi¡s +( +sfCÚfig +:: + `g‘ +('sf_upload_dir'))) + +48 +$this +-> + `chmod +( +sfCÚfig +:: + `g‘ +('sf_upload_dir'), 0777); + +51 +$this +-> + `chmod +( +sfCÚfig +:: + `g‘ +('sf_cache_dir'), 0777); + +52 +$this +-> + `chmod +( +sfCÚfig +:: + `g‘ +('sf_log_dir'), 0777); + +53 +$this +-> + `chmod +( +sfCÚfig +:: + `g‘ +('sf_root_dir').'/symfony', 0777); + +55 +$dœs + = + `¬¿y +( + +56 +sfCÚfig +:: + `g‘ +('sf_cache_dir'), + +57 +sfCÚfig +:: + `g‘ +('sf_log_dir'), + +58 +sfCÚfig +:: + `g‘ +('sf_upload_dir'), + +61 +$dœFšd” + = +sfFšd” +:: + `ty³ +('dir'); + +62 +$fžeFšd” + = +sfFšd” +:: + `ty³ +('file'); + +64 + `fܗch + ( +$dœs + +as + +$dœ +) + +66 +$this +-> + `chmod +( +$dœFšd” +-> + `š +( +$dœ +), 0777); + +67 +$this +-> + `chmod +( +$fžeFšd” +-> + `š +( +$dœ +), 0666); + +71 ià( + `couÁ +( +$this +-> +çžed +)) + +73 +$this +-> + `logBlock +( + `¬¿y_m”ge +( + +74 + `¬¿y +('Permissions onhe following file(s) could‚ot be fixed:', ''), + +75 + `¬¿y_m­ +( + `ü—‹_funùiÚ +('$f', '»tuº \' - \'.sfDebug::sh܋nFžeP©h($f);'), +$this +-> +çžed +) + +78 + } +} + +89 +´Ùeùed + +funùiÚ + + $chmod +( +$fže +, +$mode +, +$umask + = 0000) + +91 ià( + `is_¬¿y +( +$fže +)) + +93 + `fܗch + ( +$fže + +as + +$f +) + +95 +$this +-> + `chmod +( +$f +, +$mode +, +$umask +); + +100 + `£t_”rÜ_hªdËr +( + `¬¿y +( +$this +, 'handleError')); + +102 +$this +-> +cu¼’t + = +$fže +; + +103 @ +$this +-> + `g‘Fžesy¡em +()-> + `chmod +( +$fže +, +$mode +, +$umask +); + +104 +$this +-> +cu¼’t + = +nuÎ +; + +106 + `»¡Üe_”rÜ_hªdËr +(); + +108 + } +} + +115 +public + +funùiÚ + + $hªdËE¼Ü +( +$no +, +$¡ršg +, +$fže +, +$lše +, +$cڋxt +) + +117 +$this +-> +çžed +[] = $this-> +cu¼’t +; + +118 + } +} + + @lib/vendor/symfony/lib/task/project/sfProjectSendEmailsTask.class.php + +1 + `addO±iÚs +( + `¬¿y +( + +27 +Ãw + + `sfCommªdO±iÚ +('­¶iÿtiÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL +, 'Th­¶iÿtiڂame', +Œue +), + +28 +Ãw + + `sfCommªdO±iÚ +('’v', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'Theƒnvironment', 'dev'), + +29 +Ãw + + `sfCommªdO±iÚ +('mes§ge-lim™', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL +, 'The maximum‚umber of messageso send', 0), + +30 +Ãw + + `sfCommªdO±iÚ +('time-lim™', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL +, 'Theime†imit for sending messages (in seconds)', 0), + +33 +$this +-> +Çme¥aû + = 'project'; + +34 +$this +-> +Çme + = 'send-emails'; + +36 +$this +-> +br›fDesütiÚ + = 'Sendsƒmails stored in‡ queue'; + +38 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +39 +The + [ +´ojeù +: +£nd +- +emažs +| +INFO +] +£nds +ƒmaž  +¡Üed + +š + +a + +queue +: + +41 [ +php + +symfÚy + +´ojeù +: +£nd +- +emažs +| +INFO +] + +43 +You + +ÿn + +lim™ + +the + +numb” + +of + +mes§ges + +to + +£nd +: + +45 [ +php + +symfÚy + +´ojeù +: +£nd +- +emažs + -- +mes§ge +- +lim™ +=10| +INFO +] + +47 +Or + +lim™ + +to + + `time + ( +š + +£cÚds +): + +49 [ +php + +symfÚy + +´ojeù +: +£nd +- +emažs + -- +time +- +lim™ +=10| +INFO +] + +50 +EOF +; + +53 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +55 +$d©aba£Mªag” + = +Ãw + + `sfD©aba£Mªag” +( +$this +-> +cÚfigu¿tiÚ +); + +57 +$¥oÞ + = +$this +-> + `g‘Maž” +()-> + `g‘SpoÞ +(); + +58 +$¥oÞ +-> + `£tMes§geLim™ +( +$ÝtiÚs +['message-limit']); + +59 +$¥oÞ +-> + `£tTimeLim™ +( +$ÝtiÚs +['time-limit']); + +61 +$£Á + = +$this +-> + `g‘Maž” +()-> + `æushQueue +(); + +63 +$this +-> + `logSeùiÚ +('´ojeù', + `¥rštf +('£Á % emažs', +$£Á +)); + +64 + } +} + + @lib/vendor/symfony/lib/task/project/sfProjectValidateTask.class.php + +1 +Çme¥aû + = 'project'; + +27 +$this +-> +Çme + = 'validate'; + +28 +$this +-> +br›fDesütiÚ + = 'Finds deprecated usage in‡…roject'; + +30 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +31 +The + [ +´ojeù +: +v®id©e +| +INFO +] +sk + +d‘eùs + +d•»ÿ‹d + +u§ge + +š + +your +…roject. + +33 [./ +symfÚy + +´ojeù +: +v®id©e +| +INFO +] + +35 +The + +sk + +li¡s + +®l + +the + +fžes + +you + +Ãed + +to + +chªge + +befÜe + +sw™chšg +o + +36 +symfÚy + 1.4. + +37 +EOF +; + +43 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +45 + `fܗch + ( +$this +-> + `g‘Upg¿deCÏs£s +(è +as + +$i + => +$þass +) + +47 +$v + = +Ãw + + `$þass +( +$this +-> +di¥©ch” +, $this-> +fÜm©‹r +); + +49 +$this +-> + `logBlock +(( +$i + + 1).'. '. +$v +-> + `g‘H—d” +(), 'QUESTION_LARGE'); + +51 +$v +-> + `£tCommªdAµliÿtiÚ +( +$this +-> +commªdAµliÿtiÚ +); + +52 +$v +-> + `£tCÚfigu¿tiÚ +( +$this +-> +cÚfigu¿tiÚ +); + +53 +$fžes + = +$v +-> + `v®id©e +(); + +55 ià(! +$fžes +) + +57 +$this +-> + `log +(' '.$this-> +fÜm©‹r +-> + `fÜm© +(' OK ', 'INFO')); + +62 +$this +-> + `log +(' '.$this-> +fÜm©‹r +-> + `fÜm© +(' '. + `couÁ +( +$fžes +).' file(s)‚eedo be changed. ', 'ERROR')); + +64 + `fܗch + ( +$fžes + +as + +$fže + => +$v®ue +) + +66 +$this +-> + `log +(' '.$this-> +fÜm©‹r +-> + `fÜm© +($this-> + `fÜm©Fže +( +$fže +), 'INFO')); + +68 ià( +Œue + !=ð +$v®ue +) + +70 +$this +-> + `log +(' '. +$v®ue +); + +74 +$this +-> + `log +( +$v +-> + `g‘Ex¶ª©iÚ +()); + +76 + } +} + +78 +´Ùeùed + +funùiÚ + + $fÜm©Fže +( +$fže +) + +80  + `¡r_»¶aû +( + `»®·th +( +sfCÚfig +:: + `g‘ +('sf_roÙ_dœ')), 'ROOT',„—Í©h( +$fže +)); + +81 + } +} + +83 +´Ùeùed + +funùiÚ + + $g‘Upg¿deCÏs£s +() + +85 +$ba£Dœ + = + `dœÇme +( +__FILE__ +).'/validation/'; + +86 +$þas£s + = + `¬¿y +(); + +88 + `fܗch + ( + `glob +( +$ba£Dœ +.'*.þass.php'è +as + +$fže +) + +90 +$þass + = + `¡r_»¶aû +( + `¬¿y +( +$ba£Dœ +, '.þass.php'), '', +$fže +); + +92 ià('sfV®id©iÚ' !ð +$þass +) + +94 +$þas£s +[] = +$þass +; + +96 +»quœe_Úû + +$ba£Dœ +. +$þass +.'.class.php'; + +100  +$þas£s +; + +101 + } +} + + @lib/vendor/symfony/lib/task/project/validation/sfDeprecatedClassesValidation.class.php + +1 + `Çme +('*.php')-> + `´uà +('v’dÜ')-> + `š +( + `¬¿y +( + +67 +sfCÚfig +:: + `g‘ +('sf_apps_dir'), + +68 +sfCÚfig +:: + `g‘ +('sf_lib_dir'), + +69 +sfCÚfig +:: + `g‘ +('sf_test_dir'), + +70 +sfCÚfig +:: + `g‘ +('sf_plugins_dir'), + +72 + `fܗch + ( +$fžes + +as + +$fže +) + +74 +$cڋÁ + = +sfToÞk™ +:: + `¡rComm’ts +( + `fže_g‘_cڋÁs +( +$fže +)); + +76 +$m©ches + = + `¬¿y +(); + +77 + `fܗch + ( +$þas£s + +as + +$þass +) + +79 ià( + `´eg_m©ch +('#\b'. + `´eg_quÙe +( +$þass +, '#').'\b#', +$cڋÁ +)) + +81 +$m©ches +[] = +$þass +; + +85 ià( +$m©ches +) + +87 +$found +[ +$fže +] = + `im¶ode +(', ', +$m©ches +); + +91  +$found +; + +92 + } +} + + @lib/vendor/symfony/lib/task/project/validation/sfDeprecatedConfigurationFilesValidation.class.php + +1 + `Çme +('maž”.yml')-> + `š +( +$this +-> + `g‘ProjeùCÚfigDœeùܛs +()); + +41 +$found + = + `¬¿y +(); + +42 + `fܗch + ( +$fžes + +as + +$fže +) + +44 +$found +[ +$fže +] = +Œue +; + +48 +$fžes + = +sfFšd” +:: + `ty³ +('fže')-> + `Çme +('*.yml')-> + `š +( + `¬¿y_m”ge +( + +49 + `glob +( +sfCÚfig +:: + `g‘ +('sf_apps_dir').'/*/modules/*/validate'), + +50 + `glob +( +sfCÚfig +:: + `g‘ +('sf_plugins_dir').'/*/modules/*/validate') + +52 + `fܗch + ( +$fžes + +as + +$fže +) + +54 +$found +[ +$fže +] = +Œue +; + +58 +$fžes + = +sfFšd” +:: + `ty³ +('fže')-> + `Çme +('g’”©Ü.yml')-> + `š +( + `¬¿y +( + +59 +sfCÚfig +:: + `g‘ +('sf_apps_dir'), + +60 +sfCÚfig +:: + `g‘ +('sf_plugins_dir'), + +62 + `fܗch + ( +$fžes + +as + +$fže +) + +64 +$cڋÁ + = + `fže_g‘_cڋÁs +( +$fže +); + +66 ià( +çl£ + !=ð + `¡½os +( +$cڋÁ +, 'sfPropelAdminGenerator')) + +68 +$found +[ +$fže +] = +Œue +; + +72  +$found +; + +73 + } +} + + @lib/vendor/symfony/lib/task/project/validation/sfDeprecatedHelpersValidation.class.php + +1 + `Çme +('*.php')-> + `´uà +('v’dÜ')-> + `š +( + `¬¿y +( + +62 +sfCÚfig +:: + `g‘ +('sf_apps_dir'), + +63 +sfCÚfig +:: + `g‘ +('sf_lib_dir'), + +64 +sfCÚfig +:: + `g‘ +('sf_test_dir'), + +65 +sfCÚfig +:: + `g‘ +('sf_plugins_dir'), + +67 + `fܗch + ( +$fžes + +as + +$fže +) + +69 +$cڋÁ + = +sfToÞk™ +:: + `¡rComm’ts +( + `fže_g‘_cڋÁs +( +$fže +)); + +71 +$m©ches + = + `¬¿y +(); + +72 + `fܗch + ( +$h–³rs + +as + +$h–³r +) + +74 ià( + `´eg_m©ch +('#\b'. + `´eg_quÙe +( +$h–³r +, '#').'\b#', +$cڋÁ +)) + +76 +$m©ches +[] = +$h–³r +; + +80 ià( +$m©ches +) + +82 +$found +[ +$fže +] = + `im¶ode +(', ', +$m©ches +); + +86  +$found +; + +87 + } +} + + @lib/vendor/symfony/lib/task/project/validation/sfDeprecatedMethodsValidation.class.php + +1 + `doV®id©e +( + `¬¿y +( + +56 ), + `¬¿y +( + +57 +sfCÚfig +:: + `g‘ +('sf_apps_dir'), + +58 +sfCÚfig +:: + `g‘ +('sf_lib_dir'), + +59 +sfCÚfig +:: + `g‘ +('sf_test_dir'), + +60 +sfCÚfig +:: + `g‘ +('sf_plugins_dir'), + +63 +$this +-> + `doV®id©e +( + `¬¿y +( + +66 ), +sfCÚfig +:: + `g‘ +('sf_test_dir')), + +68 +$this +-> + `doV®id©e +( + `¬¿y +( + +70 ), +$this +-> + `g‘ProjeùAùiÚDœeùܛs +()) + +73  +$found +; + +74 + } +} + +76 +public + +funùiÚ + + $doV®id©e +( +$m‘hods +, +$dœ +) + +78 +$found + = + `¬¿y +(); + +79 +$fžes + = +sfFšd” +:: + `ty³ +('fže')-> + `Çme +('*.php')-> + `´uà +('v’dÜ')-> + `š +( +$dœ +); + +80 + `fܗch + ( +$fžes + +as + +$fže +) + +82 +$cڋÁ + = +sfToÞk™ +:: + `¡rComm’ts +( + `fže_g‘_cڋÁs +( +$fže +)); + +84 +$m©ches + = + `¬¿y +(); + +85 + `fܗch + ( +$m‘hods + +as + +$m‘hod +) + +87 ià( + `´eg_m©ch +('#\b'. + `´eg_quÙe +( +$m‘hod +, '#').'\b#', +$cڋÁ +)) + +89 +$m©ches +[] = +$m‘hod +; + +93 ià( +$m©ches +) + +95 +$found +[ +$fže +] = + `im¶ode +(', ', +$m©ches +); + +99  +$found +; + +100 + } +} + + @lib/vendor/symfony/lib/task/project/validation/sfDeprecatedPluginsValidation.class.php + +1 + `Çme +('*CÚfigu¿tiÚ.þass.php')-> + `š +( +$this +-> + `g‘ProjeùCÚfigDœeùܛs +()); + +42 + `fܗch + ( +$fžes + +as + +$fže +) + +44 +$cڋÁ + = +sfToÞk™ +:: + `¡rComm’ts +( + `fže_g‘_cڋÁs +( +$fže +)); + +46 +$m©ches + = + `¬¿y +(); + +47 ià( +çl£ + !=ð + `¡½os +( +$cڋÁ +, 'sfCompat10Plugin')) + +49 +$m©ches +[] = 'sfCompat10Plugin'; + +51 ià( +çl£ + !=ð + `¡½os +( +$cڋÁ +, 'sfProtoculousPlugin')) + +53 +$m©ches +[] = 'sfProtoculousPlugin'; + +56 ià( +$m©ches +) + +58 +$found +[ +$fže +] = + `im¶ode +(', ', +$m©ches +); + +62  +$found +; + +63 + } +} + + @lib/vendor/symfony/lib/task/project/validation/sfDeprecatedSettingsValidation.class.php + +1 + `Çme +('*.php')-> + `´uà +('v’dÜ')-> + `š +( + `¬¿y +( + +52 +sfCÚfig +:: + `g‘ +('sf_apps_dir'), + +53 +sfCÚfig +:: + `g‘ +('sf_lib_dir'), + +54 +sfCÚfig +:: + `g‘ +('sf_test_dir'), + +55 +sfCÚfig +:: + `g‘ +('sf_plugins_dir'), + +57 + `fܗch + ( +$fžes + +as + +$fže +) + +59 +$cڋÁ + = +sfToÞk™ +:: + `¡rComm’ts +( + `fže_g‘_cڋÁs +( +$fže +)); + +61 +$m©ches + = + `¬¿y +(); + +62 + `fܗch + ( +$£‰šgs + +as + +$£‰šg +) + +64 ià( +çl£ + !=ð + `¡ros +( +$cڋÁ +, +$£‰šg +)) + +66 +$m©ches +[] = +$£‰šg +; + +70 ià( +$m©ches +) + +72 +$found +[ +$fže +] = + `im¶ode +(', ', +$m©ches +); + +76  +$found +; + +77 + } +} + + @lib/vendor/symfony/lib/task/project/validation/sfParameterHolderValidation.class.php + +1 + `Çme +('*.php')-> + `´uà +('v’dÜ')-> + `š +( + `¬¿y +( + +48 +sfCÚfig +:: + `g‘ +('sf_apps_dir'), + +49 +sfCÚfig +:: + `g‘ +('sf_lib_dir'), + +50 +sfCÚfig +:: + `g‘ +('sf_test_dir'), + +51 +sfCÚfig +:: + `g‘ +('sf_plugins_dir'), + +53 + `fܗch + ( +$fžes + +as + +$fže +) + +55 +$cڋÁ + = +sfToÞk™ +:: + `¡rComm’ts +( + `fže_g‘_cڋÁs +( +$fže +)); + +57 ià( + `´eg_m©ch +('#\b(g‘|has|»move)(Reque¡)*P¬am‘”\(\s*[\'"][^\),]*?\[[^\),]#', +$cڋÁ +)) + +59 +$found +[ +$fže +] = +Œue +; + +63  +$found +; + +64 + } +} + + @lib/vendor/symfony/lib/task/project/validation/sfValidation.class.php + +1 + `´uà +('symfÚy')-> + `disÿrd +('symfony'); + +46 + } +} + +51 +´Ùeùed + +funùiÚ + + $g‘ProjeùCÏssDœeùܛs +() + +53  + `¬¿y_m”ge +( + +54 +$this +-> + `g‘ProjeùLibDœeùܛs +(), + +55 +$this +-> + `g‘ProjeùAùiÚDœeùܛs +() + +57 + } +} + +62 +´Ùeùed + +funùiÚ + + $g‘ProjeùTem¶©eDœeùܛs +() + +64  + `¬¿y_m”ge +( + +65 + `glob +( +sfCÚfig +:: + `g‘ +('sf_apps_dir').'/*/modules/*/templates'), + +66 + `glob +( +sfCÚfig +:: + `g‘ +('sf_apps_dir').'/*/templates') + +68 + } +} + +73 +´Ùeùed + +funùiÚ + + $g‘ProjeùAùiÚDœeùܛs +() + +75  + `glob +( +sfCÚfig +:: + `g‘ +('sf_apps_dir').'/*/modules/*/actions'); + +76 + } +} + +83 +´Ùeùed + +funùiÚ + + $g‘ProjeùLibDœeùܛs +( +$subdœeùÜy + = +nuÎ +) + +85  + `¬¿y_m”ge +( + +86 + `glob +( +sfCÚfig +:: + `g‘ +('sf_­ps_dœ').'/*/moduËs/*/lib'. +$subdœeùÜy +), + +87 + `glob +( +sfCÚfig +:: + `g‘ +('sf_­ps_dœ').'/*/lib'. +$subdœeùÜy +), + +88 + `¬¿y +( + +89 +sfCÚfig +:: + `g‘ +('sf_­ps_dœ').'/lib'. +$subdœeùÜy +, + +90 +sfCÚfig +:: + `g‘ +('sf_lib_dœ'). +$subdœeùÜy +, + +93 + } +} + +98 +´Ùeùed + +funùiÚ + + $g‘ProjeùCÚfigDœeùܛs +() + +100  + `¬¿y_m”ge +( + +101 + `glob +( +sfCÚfig +:: + `g‘ +('sf_apps_dir').'/*/modules/*/config'), + +102 + `glob +( +sfCÚfig +:: + `g‘ +('sf_apps_dir').'/*/config'), + +103 + `glob +( +sfCÚfig +:: + `g‘ +('sf_config_dir')) + +105 + } +} + +112 +´Ùeùed + +funùiÚ + + $g‘AµliÿtiÚs +() + +114  +sfFšd” +:: + `ty³ +('dœ')-> + `maxd•th +(0)-> + `»Ïtive +()-> + `š +( +sfCÚfig +:: + `g‘ +('sf_apps_dir')); + +115 + } +} + + @lib/vendor/symfony/lib/task/sfBaseTask.class.php + +1 +di¥©ch” +-> + `fž‹r +( +Ãw + + `sfEv’t +($this, 'commªd.fž‹r_ÝtiÚs', + `¬¿y +('commªd_mªag”' => +$commªdMªag” +)), +$ÝtiÚs +); + +31 +$ÝtiÚs + = +$ev’t +-> + `g‘R‘uºV®ue +(); + +33 +$this +-> + `´oûss +( +$commªdMªag” +, +$ÝtiÚs +); + +35 +$ev’t + = +Ãw + + `sfEv’t +( +$this +, 'commªd.´e_commªd', + `¬¿y +('¬gum’ts' => +$commªdMªag” +-> + `g‘Argum’tV®ues +(), 'ÝtiÚs' => $commªdMªag”-> + `g‘O±iÚV®ues +())); + +36 +$this +-> +di¥©ch” +-> + `nÙifyUÁž +( +$ev’t +); + +37 ià( +$ev’t +-> + `isProûs£d +()) + +39  +$ev’t +-> + `g‘R‘uºV®ue +(); + +42 +$this +-> + `checkProjeùExi¡s +(); + +44 +$»quœesAµliÿtiÚ + = +$commªdMªag” +-> + `g‘Argum’tS‘ +()-> + `hasArgum’t +('­¶iÿtiÚ'è|| $commªdMªag”-> + `g‘O±iÚS‘ +()-> + `hasO±iÚ +('application'); + +45 ià( +nuÎ + ==ð +$this +-> +cÚfigu¿tiÚ + || ( +$»quœesAµliÿtiÚ + && !$this->cÚfigu¿tiÚ +š¡ªûof + +sfAµliÿtiÚCÚfigu¿tiÚ +)) + +47 +$­¶iÿtiÚ + = +$commªdMªag” +-> + `g‘Argum’tS‘ +()-> + `hasArgum’t +('­¶iÿtiÚ'è? $commªdMªag”-> + `g‘Argum’tV®ue +('­¶iÿtiÚ'è: ($commªdMªag”-> + `g‘O±iÚS‘ +()-> + `hasO±iÚ +('­¶iÿtiÚ'è? $commªdMªag”-> + `g‘O±iÚV®ue +('­¶iÿtiÚ'è: +nuÎ +); + +48 +$’v + = +$commªdMªag” +-> + `g‘O±iÚS‘ +()-> + `hasO±iÚ +('’v'è? $commªdMªag”-> + `g‘O±iÚV®ue +('env') : 'test'; + +50 ià( +Œue + ==ð +$­¶iÿtiÚ +) + +52 +$­¶iÿtiÚ + = +$this +-> + `g‘Fœ¡AµliÿtiÚ +(); + +54 ià( +$commªdMªag” +-> + `g‘O±iÚS‘ +()-> + `hasO±iÚ +('application')) + +56 +$commªdMªag” +-> + `£tO±iÚ +($commªdMªag”-> + `g‘O±iÚS‘ +()-> + `g‘O±iÚ +('­¶iÿtiÚ'), +$­¶iÿtiÚ +); + +60 +$this +-> +cÚfigu¿tiÚ + = $this-> + `ü—‹CÚfigu¿tiÚ +( +$­¶iÿtiÚ +, +$’v +); + +63 ià( +nuÎ + !=ð +$this +-> +commªdAµliÿtiÚ + && !$this->commªdAµliÿtiÚ-> + `w™hT¿û +()) + +65 +sfCÚfig +:: + `£t +('sf_loggšg_’abËd', +çl£ +); + +68 +$»t + = +$this +-> + `execu‹ +( +$commªdMªag” +-> + `g‘Argum’tV®ues +(), $commªdMªag”-> + `g‘O±iÚV®ues +()); + +70 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, 'command.post_command')); + +72  +$»t +; + +80 +public + +funùiÚ + + $£tCÚfigu¿tiÚ +( +sfProjeùCÚfigu¿tiÚ + +$cÚfigu¿tiÚ + = +nuÎ +) + +82 +$this +-> +cÚfigu¿tiÚ + = +$cÚfigu¿tiÚ +; + +83 + } +} + +90 +public + +funùiÚ + + $g‘Fžesy¡em +() + +92 ià(! + `is£t +( +$this +-> +fžesy¡em +)) + +94 ià( +nuÎ + ==ð +$this +-> +commªdAµliÿtiÚ + || $this->commªdAµliÿtiÚ-> + `isV”bo£ +()) + +96 +$this +-> +fžesy¡em + = +Ãw + + `sfFžesy¡em +($this-> +di¥©ch” +, $this-> +fÜm©‹r +); + +100 +$this +-> +fžesy¡em + = +Ãw + + `sfFžesy¡em +(); + +104  +$this +-> +fžesy¡em +; + +105 + } +} + +112 +public + +funùiÚ + + $checkProjeùExi¡s +() + +114 ià(! + `fže_exi¡s +('symfony')) + +116 +throw + +Ãw + + `sfExû±iÚ +('You must be in‡ symfony…roject directory.'); + +118 + } +} + +127 +public + +funùiÚ + + $checkAµExi¡s +( +$­p +) + +129 ià(! + `is_dœ +( +sfCÚfig +:: + `g‘ +('sf_­ps_dœ').'/'. +$­p +)) + +131 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('AµliÿtiÚ "%s" dÛ nكxi¡', +$­p +)); + +133 + } +} + +143 +public + +funùiÚ + + $checkModuËExi¡s +( +$­p +, +$moduË +) + +145 ià(! + `is_dœ +( +sfCÚfig +:: + `g‘ +('sf_­ps_dœ').'/'. +$­p +.'/moduËs/'. +$moduË +)) + +147 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('ModuË "%s/%s" dÛ nكxi¡.', +$­p +, +$moduË +)); + +149 + } +} + +159 +´Ùeùed + +funùiÚ + + $ü—‹CÚfigu¿tiÚ +( +$­¶iÿtiÚ +, +$’v +) + +161 ià( +nuÎ + !=ð +$­¶iÿtiÚ +) + +163 +$this +-> + `checkAµExi¡s +( +$­¶iÿtiÚ +); + +165 +»quœe_Úû + +sfCÚfig +:: + `g‘ +('sf_config_dir').'/ProjectConfiguration.class.php'; + +167 +$cÚfigu¿tiÚ + = +ProjeùCÚfigu¿tiÚ +:: + `g‘AµliÿtiÚCÚfigu¿tiÚ +( +$­¶iÿtiÚ +, +$’v +, +Œue +, +nuÎ +, +$this +-> +di¥©ch” +); + +171 ià( + `fže_exi¡s +( +sfCÚfig +:: + `g‘ +('sf_config_dir').'/ProjectConfiguration.class.php')) + +173 +»quœe_Úû + +sfCÚfig +:: + `g‘ +('sf_config_dir').'/ProjectConfiguration.class.php'; + +174 +$cÚfigu¿tiÚ + = +Ãw + + `ProjeùCÚfigu¿tiÚ +( +nuÎ +, +$this +-> +di¥©ch” +); + +178 +$cÚfigu¿tiÚ + = +Ãw + + `sfProjeùCÚfigu¿tiÚ +( + `g‘cwd +(), +$this +-> +di¥©ch” +); + +181 ià( +nuÎ + !=ð +$’v +) + +183 +sfCÚfig +:: + `£t +('sf_’vœÚm’t', +$’v +); + +186 +$this +-> + `š™ŸlizeAutÞßd +( +$cÚfigu¿tiÚ +); + +189  +$cÚfigu¿tiÚ +; + +190 + } +} + +197 +´Ùeùed + +funùiÚ + + $g‘Fœ¡AµliÿtiÚ +() + +199 ià( + `couÁ +( +$dœs + = +sfFšd” +:: + `ty³ +('dœ')-> + `maxd•th +(0)-> + `fÞlow_lšk +()-> + `»Ïtive +()-> + `š +( +sfCÚfig +:: + `g‘ +('sf_apps_dir')))) + +201  +$dœs +[0]; + +204  +nuÎ +; + +205 + } +} + +216 +´Ùeùed + +funùiÚ + + $»lßdAutÞßd +() + +218 +$this +-> + `š™ŸlizeAutÞßd +($this-> +cÚfigu¿tiÚ +, +Œue +); + +219 + } +} + +227 +´Ùeùed + +funùiÚ + + $š™ŸlizeAutÞßd +( +sfProjeùCÚfigu¿tiÚ + +$cÚfigu¿tiÚ +, +$»lßd + = +çl£ +) + +230 ià( +$»lßd +) + +232 +$this +-> + `logSeùiÚ +('autoload', 'Resetting‡pplication‡utoloaders'); + +234 +$fšd” + = +sfFšd” +:: + `ty³ +('fže')-> + `Çme +('*autoload.yml.php'); + +235 +$this +-> + `g‘Fžesy¡em +()-> + `»move +( +$fšd” +-> + `š +( +sfCÚfig +:: + `g‘ +('sf_cache_dir'))); + +236 +sfAutÞßd +:: + `g‘In¡ªû +()-> + `»lßdCÏs£s +( +Œue +); + +240 ià(! +$cÚfigu¿tiÚ + +š¡ªûof + +sfAµliÿtiÚCÚfigu¿tiÚ +) + +243 ià( +$»lßd +) + +245 + `fܗch + ( +$cÚfigu¿tiÚ +-> + `g‘Plugšs +(è +as + +$Çme +) + +247 +$cÚfigu¿tiÚ +-> + `g‘PlugšCÚfigu¿tiÚ +( +$Çme +)-> + `š™ŸlizeAutÞßd +(); + +252 +$autÞßd + = +sfSim¶eAutÞßd +:: + `g‘In¡ªû +( +sfCÚfig +:: + `g‘ +('sf_cache_dir').'/project_autoload.cache'); + +253 +$autÞßd +-> + `lßdCÚfigu¿tiÚ +( +sfFšd” +:: + `ty³ +('fže')-> + `Çme +('autÞßd.yml')-> + `š +( + `¬¿y +( + +254 +sfCÚfig +:: + `g‘ +('sf_symfony_lib_dir').'/config/config', + +255 +sfCÚfig +:: + `g‘ +('sf_config_dir'), + +257 +$autÞßd +->(); + +259 ià( +$»lßd +) + +261 +$this +-> + `logSeùiÚ +('autoload', 'Resetting CLI‡utoloader'); + +262 +$autÞßd +-> + `»lßd +(); + +265 + } +} + +273 +´Ùeùed + +funùiÚ + + $š¡®lDœ +( +$dœ +, +$fšd” + = +nuÎ +) + +275 ià( +nuÎ + ==ð +$fšd” +) + +277 +$fšd” + = +sfFšd” +:: + `ty³ +('ªy')-> + `disÿrd +('.sf'); + +280 +$this +-> + `g‘Fžesy¡em +()-> + `mœrÜ +( +$dœ +, +sfCÚfig +:: + `g‘ +('sf_roÙ_dœ'), +$fšd” +); + +281 + } +} + +293 +´Ùeùed + +funùiÚ + +»¶aûTok’s +( +$dœs + = +¬¿y +(), +$tok’s + = + $¬¿y +()) + +295 ià(! +$dœs +) + +297 +$dœs + = + `¬¿y +( +sfCÚfig +:: + `g‘ +('sf_config_dir'), sfConfig::get('sf_lib_dir')); + +300 +$tok’s + = + `¬¿y_m”ge +( + `is£t +( +$this +-> +tok’s +è? $this->tok’ : + `¬¿y +(), $tokens); + +302 +$this +-> + `g‘Fžesy¡em +()-> + `»¶aûTok’s +( +sfFšd” +:: + `ty³ +('fže')-> + `´uà +('v’dÜ')-> + `š +( +$dœs +), '##', '##', +$tok’s +); + +303 + } +} + +310 +´Ùeùed + +funùiÚ + + $»lßdTasks +() + +312 ià( +nuÎ + ==ð +$this +-> +commªdAµliÿtiÚ +) + +317 +$this +-> +cÚfigu¿tiÚ + = $this-> + `ü—‹CÚfigu¿tiÚ +( +nuÎ +,‚ull); + +319 +$this +-> +commªdAµliÿtiÚ +-> + `þ—rTasks +(); + +320 +$this +-> +commªdAµliÿtiÚ +-> + `lßdTasks +($this-> +cÚfigu¿tiÚ +); + +322 +$di§bËdPlugšsRegex + = + `¥rštf +('#^(%s)#', + `im¶ode +('|', + `¬¿y_diff +( +$this +-> +cÚfigu¿tiÚ +-> + `g‘AÎPlugšP©hs +(), $this->cÚfigu¿tiÚ-> + `g‘PlugšP©hs +()))); + +323 +$sks + = + `¬¿y +(); + +324 + `fܗch + ( + `g‘_deþ¬ed_þas£s +(è +as + +$þass +) + +326 +$r + = +Ãw + + `ReæeùiÚþass +( +$þass +); + +327 ià( +$r +-> + `isSubþassOf +('sfTask'è&& !$r-> + `isAb¡¿ù +(è&& ! + `´eg_m©ch +( +$di§bËdPlugšsRegex +, $r-> + `g‘FžeName +())) + +329 +$sks +[] = +Ãw + + `$þass +( +$this +-> +di¥©ch” +, $this-> +fÜm©‹r +); + +333 +$this +-> +commªdAµliÿtiÚ +-> + `»gi¡”Tasks +( +$sks +); + +334 + } +} + +341 +´Ùeùed + +funùiÚ + + $’abËPlugš +( +$¶ugš +) + +343 +sfSymfÚyPlugšMªag” +:: + `’abËPlugš +( +$¶ugš +, +sfCÚfig +:: + `g‘ +('sf_config_dir')); + +344 + } +} + +351 +´Ùeùed + +funùiÚ + + $di§bËPlugš +( +$¶ugš +) + +353 +sfSymfÚyPlugšMªag” +:: + `di§bËPlugš +( +$¶ugš +, +sfCÚfig +:: + `g‘ +('sf_config_dir')); + +354 + } +} + +361 +´Ùeùed + +funùiÚ + + $g‘PlugšMªag” +() + +363 ià( +nuÎ + ==ð +$this +-> +¶ugšMªag” +) + +365 +$’vœÚm’t + = +Ãw + + `sfP—rEnvœÚm’t +( +$this +-> +di¥©ch” +, + `¬¿y +( + +366 '¶ugš_dœ' => +sfCÚfig +:: + `g‘ +('sf_plugins_dir'), + +367 'ÿche_dœ' => +sfCÚfig +:: + `g‘ +('sf_cache_dir').'/.pear', + +368 'web_dœ' => +sfCÚfig +:: + `g‘ +('sf_web_dir'), + +369 'cÚfig_dœ' => +sfCÚfig +:: + `g‘ +('sf_config_dir'), + +372 +$this +-> +¶ugšMªag” + = +Ãw + + `sfSymfÚyPlugšMªag” +($this-> +di¥©ch” +, +$’vœÚm’t +); + +375  +$this +-> +¶ugšMªag” +; + +376 + } +} + +381 +´Ùeùed + +funùiÚ + + $ü—‹Task +( +$Çme +) + +383 +$sk + = +·»Á +:: + `ü—‹Task +( +$Çme +); + +385 ià( +$sk + +š¡ªûof + +sfBa£Task +) + +387 +$sk +-> + `£tCÚfigu¿tiÚ +( +$this +-> +cÚfigu¿tiÚ +); + +390  +$sk +; + +391 + } +} + + @lib/vendor/symfony/lib/task/sfCommandApplicationTask.class.php + +1 +commªdAµliÿtiÚ + = +$commªdAµliÿtiÚ +; + +39 +public + +funùiÚ + + $log +( +$mes§ges +) + +41 ià( +nuÎ + ==ð +$this +-> +commªdAµliÿtiÚ + || $this->commªdAµliÿtiÚ-> + `isV”bo£ +()) + +43 +·»Á +:: + `log +( +$mes§ges +); + +45 + } +} + +50 +public + +funùiÚ + +logSeùiÚ +( +$£ùiÚ +, +$mes§ge +, +$size + = +nuÎ +, +$¡yË + = 'INFO') + +52 ià( +nuÎ + ==ð +$this +-> +commªdAµliÿtiÚ + || $this->commªdAµliÿtiÚ-> +isV”bo£ +()) + +54 +·»Á +:: +logSeùiÚ +( +$£ùiÚ +, +$mes§ge +, +$size +, +$¡yË +); + +67 +´Ùeùed + +funùiÚ + + $ü—‹Task +( +$Çme +) + +69 ià( +nuÎ + ==ð +$this +-> +commªdAµliÿtiÚ +) + +71 +throw + +Ãw + + `LogicExû±iÚ +('Unableo create‡ask‡s‚o command‡pplication is‡ssociated withhisask yet.'); + +74 +$sk + = +$this +-> +commªdAµliÿtiÚ +-> + `g‘TaskToExecu‹ +( +$Çme +); + +76 ià( +$sk + +š¡ªûof + +sfCommªdAµliÿtiÚTask +) + +78 +$sk +-> + `£tCommªdAµliÿtiÚ +( +$this +-> +commªdAµliÿtiÚ +); + +81  +$sk +; + +82 + } +} + +95 +´Ùeùed + +funùiÚ + +runTask +( +$Çme +, +$¬gum’ts + = +¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +97  +$this +-> + `ü—‹Task +( +$Çme +)-> + `run +( +$¬gum’ts +, +$ÝtiÚs +); + +98 + } +} + +110 +´Ùeùed + +funùiÚ + + $g‘Maž” +() + +112 ià(! +$this +-> +maž” +) + +114 +$this +-> +maž” + = $this-> + `š™ŸlizeMaž” +(); + +117  +$this +-> +maž” +; + +118 + } +} + +120 +´Ùeùed + +funùiÚ + + $š™ŸlizeMaž” +() + +122 +»quœe_Úû + +sfCÚfig +:: + `g‘ +('sf_symfony_lib_dir').'/vendor/swiftmailer/classes/Swift.php'; + +123 +Swiá +:: + `»gi¡”AutÞßd +(); + +124 +sfMaž” +:: + `š™Ÿlize +(); + +126 +$cÚfig + = +sfFaùÜyCÚfigHªdËr +:: + `g‘CÚfigu¿tiÚ +( +$this +-> +cÚfigu¿tiÚ +-> + `g‘CÚfigP©hs +('config/factories.yml')); + +128  +Ãw + +$cÚfig +['maž”']['þass']( +$this +-> +di¥©ch” +, $config['mailer']['param']); + +129 + } +} + +141 +´Ùeùed + +funùiÚ + + $g‘Routšg +() + +143 ià(! +$this +-> +routšg +) + +145 +$this +-> +routšg + = $this-> + `š™ŸlizeRoutšg +(); + +148  +$this +-> +routšg +; + +149 + } +} + +151 +´Ùeùed + +funùiÚ + + $š™ŸlizeRoutšg +() + +153 +$cÚfig + = +sfFaùÜyCÚfigHªdËr +:: + `g‘CÚfigu¿tiÚ +( +$this +-> +cÚfigu¿tiÚ +-> + `g‘CÚfigP©hs +('config/factories.yml')); + +154 +$·¿ms + = + `¬¿y_m”ge +( +$cÚfig +['routšg']['·¿m'], + `¬¿y +('lßd_cÚfigu¿tiÚ' => +çl£ +, 'logging' => false)); + +156 +$hªdËr + = +Ãw + + `sfRoutšgCÚfigHªdËr +(); + +157 +$rou‹s + = +$hªdËr +-> + `ev®u©e +( +$this +-> +cÚfigu¿tiÚ +-> + `g‘CÚfigP©hs +('config/routing.yml')); + +159 +$routšg + = +Ãw + +$cÚfig +['routšg']['þass']( +$this +-> +di¥©ch” +, +nuÎ +, +$·¿ms +); + +160 +$routšg +-> + `£tRou‹s +( +$rou‹s +); + +162 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +( +$routšg +, 'routing.load_configuration')); + +164  +$routšg +; + +165 + } +} + + @lib/vendor/symfony/lib/task/sfFilesystem.class.php + +1 +di¥©ch” + = +$di¥©ch” +; + +34 +$this +-> +fÜm©‹r + = +$fÜm©‹r +; + +50 +public + +funùiÚ + + `cÝy +( +$ÜigšFže +, +$rg‘Fže +, +$ÝtiÚs + = + $¬¿y +()) + +52 ià(! + `¬¿y_key_exi¡s +('ov”ride', +$ÝtiÚs +)) + +54 +$ÝtiÚs +['ov”ride'] = +çl£ +; + +58 ià(! + `is_dœ +( + `dœÇme +( +$rg‘Fže +))) + +60 +$this +-> + `mkdœs +( + `dœÇme +( +$rg‘Fže +)); + +63 +$mo¡ReûÁ + = +çl£ +; + +64 ià( + `fže_exi¡s +( +$rg‘Fže +)) + +66 +$¡©T¬g‘ + = + `¡© +( +$rg‘Fže +); + +67 +$¡©_Üigš + = + `¡© +( +$ÜigšFže +); + +68 +$mo¡ReûÁ + = ( +$¡©_Üigš +['mtime'] > +$¡©T¬g‘ +['mtime']è? +Œue + : +çl£ +; + +71 ià( +$ÝtiÚs +['ov”ride'] || ! + `fže_exi¡s +( +$rg‘Fže +è|| +$mo¡ReûÁ +) + +73 +$this +-> + `logSeùiÚ +('fže+', +$rg‘Fže +); + +74 + `cÝy +( +$ÜigšFže +, +$rg‘Fže +); + +76 + } +} + +86 +public + +funùiÚ + + $mkdœs +( +$·th +, +$mode + = 0777) + +88 ià( + `is_dœ +( +$·th +)) + +90  +Œue +; + +93 +$this +-> + `logSeùiÚ +('dœ+', +$·th +); + +95  @ + `mkdœ +( +$·th +, +$mode +, +Œue +); + +96 + } +} + +103 +public + +funùiÚ + + $touch +( +$fžes +) + +105 ià(! + `is_¬¿y +( +$fžes +)) + +107 +$fžes + = + `¬¿y +($files); + +110 + `fܗch + ( +$fžes + +as + +$fže +) + +112 +$this +-> + `logSeùiÚ +('fže+', +$fže +); + +114 + `touch +( +$fže +); + +116 + } +} + +123 +public + +funùiÚ + + $»move +( +$fžes +) + +125 ià(! + `is_¬¿y +( +$fžes +)) + +127 +$fžes + = + `¬¿y +($files); + +130 +$fžes + = + `¬¿y_»v”£ +($files); + +131 + `fܗch + ( +$fžes + +as + +$fže +) + +133 ià( + `is_dœ +( +$fže +è&& ! + `is_lšk +($file)) + +135 +$this +-> + `logSeùiÚ +('dœ-', +$fže +); + +137 + `rmdœ +( +$fže +); + +141 +$this +-> + `logSeùiÚ +( + `is_lšk +( +$fže +) ? 'link-' : 'file-', $file); + +143 + `uƚk +( +$fže +); + +146 + } +} + +155 +public + +funùiÚ + + $chmod +( +$fžes +, +$mode +, +$umask + = 0000) + +157 +$cu¼’tUmask + = + `umask +(); + +158 + `umask +( +$umask +); + +160 ià(! + `is_¬¿y +( +$fžes +)) + +162 +$fžes + = + `¬¿y +($files); + +165 + `fܗch + ( +$fžes + +as + +$fže +) + +167 +$this +-> + `logSeùiÚ +( + `¥rštf +('chmod %o', +$mode +), +$fže +); + +168 + `chmod +( +$fže +, +$mode +); + +171 + `umask +( +$cu¼’tUmask +); + +172 + } +} + +180 +public + +funùiÚ + + $»Çme +( +$Üigš +, +$rg‘ +) + +183 ià( + `is_»adabË +( +$rg‘ +)) + +185 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('Cªnل’ambeÿu£hrg‘ "%s"‡Ì—dyƒxi¡.', +$rg‘ +)); + +188 +$this +-> + `logSeùiÚ +('»Çme', +$Üigš +.' > '. +$rg‘ +); + +189 + `»Çme +( +$Üigš +, +$rg‘ +); + +190 + } +} + +199 +public + +funùiÚ + + $symlšk +( +$ÜigšDœ +, +$rg‘Dœ +, +$cÝyOnWšdows + = +çl£ +) + +201 ià('\\' =ð +DIRECTORY_SEPARATOR + && +$cÝyOnWšdows +) + +203 +$fšd” + = +sfFšd” +:: + `ty³ +('any'); + +204 +$this +-> + `mœrÜ +( +$ÜigšDœ +, +$rg‘Dœ +, +$fšd” +); + +208 +$ok + = +çl£ +; + +209 ià( + `is_lšk +( +$rg‘Dœ +)) + +211 ià( + `»adlšk +( +$rg‘Dœ +è!ð +$ÜigšDœ +) + +213 + `uƚk +( +$rg‘Dœ +); + +217 +$ok + = +Œue +; + +221 ià(! +$ok +) + +223 +$this +-> + `logSeùiÚ +('lšk+', +$rg‘Dœ +); + +224 + `symlšk +( +$ÜigšDœ +, +$rg‘Dœ +); + +226 + } +} + +235 +public + +funùiÚ + + $»ÏtiveSymlšk +( +$ÜigšDœ +, +$rg‘Dœ +, +$cÝyOnWšdows + = +çl£ +) + +237 ià('\\' !ð +DIRECTORY_SEPARATOR + || ! +$cÝyOnWšdows +) + +239 +$ÜigšDœ + = +$this +-> + `ÿlcuϋR–©iveDœ +( +$rg‘Dœ +, $originDir); + +242 +$this +-> + `symlšk +( +$ÜigšDœ +, +$rg‘Dœ +, +$cÝyOnWšdows +); + +243 + } +} + +253 +public + +funùiÚ + +mœrÜ +( +$ÜigšDœ +, +$rg‘Dœ +, +$fšd” +, +$ÝtiÚs + = + $¬¿y +()) + +255 + `fܗch + ( +$fšd” +-> + `»Ïtive +()-> + `š +( +$ÜigšDœ +è +as + +$fže +) + +257 ià( + `is_dœ +( +$ÜigšDœ +. +DIRECTORY_SEPARATOR +. +$fže +)) + +259 +$this +-> + `mkdœs +( +$rg‘Dœ +. +DIRECTORY_SEPARATOR +. +$fže +); + +261 ià( + `is_fže +( +$ÜigšDœ +. +DIRECTORY_SEPARATOR +. +$fže +)) + +263 +$this +-> + `cÝy +( +$ÜigšDœ +. +DIRECTORY_SEPARATOR +. +$fže +, +$rg‘Dœ +.DIRECTORY_SEPARATOR.$fže, +$ÝtiÚs +); + +265 ià( + `is_lšk +( +$ÜigšDœ +. +DIRECTORY_SEPARATOR +. +$fže +)) + +267 +$this +-> + `symlšk +( +$ÜigšDœ +. +DIRECTORY_SEPARATOR +. +$fže +, +$rg‘Dœ +.DIRECTORY_SEPARATOR.$file); + +271 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('UÇbˁØgues "%s" fžty³.', +$fže +)); + +274 + } +} + +285 +public + +funùiÚ + + $execu‹ +( +$cmd +, +$¡doutC®lback + = +nuÎ +, +$¡d”rC®lback + =‚ull) + +287 +$this +-> + `logSeùiÚ +('exeø', +$cmd +); + +289 +$desütÜ¥ec + = + `¬¿y +( + +290 1 => + `¬¿y +('pipe', 'w'), + +291 2 => + `¬¿y +('pipe', 'w'), + +294 +$´oûss + = + `´oc_ݒ +( +$cmd +, +$desütÜ¥ec +, +$pes +); + +295 ià(! + `is_»sourû +( +$´oûss +)) + +297 +throw + +Ãw + + `RuÁimeExû±iÚ +('Unableoƒxecutehe command.'); + +300 + `¡»am_£t_blockšg +( +$pes +[1], +çl£ +); + +301 + `¡»am_£t_blockšg +( +$pes +[2], +çl£ +); + +303 +$ouut + = ''; + +304 +$”r + = ''; + +305 ! + `ãof +( +$pes +[1]) || !feof($pipes[2])) + +307 + `fܗch + ( +$pes + +as + +$key + => +$pe +) + +309 ià(! +$lše + = + `ä—d +( +$pe +, 128)) + +314 ià(1 =ð +$key +) + +317 +$ouut + .ð +$lše +; + +318 ià( +$¡doutC®lback +) + +320 + `ÿÎ_u£r_func +( +$¡doutC®lback +, +$lše +); + +326 +$”r + .ð +$lše +; + +327 ià( +$¡d”rC®lback +) + +329 + `ÿÎ_u£r_func +( +$¡d”rC®lback +, +$lše +); + +334 + `u¦“p +(100000); + +337 + `fþo£ +( +$pes +[1]); + +338 + `fþo£ +( +$pes +[2]); + +340 ià(( +$»tuº + = + `´oc_þo£ +( +$´oûss +)) > 0) + +342 +throw + +Ãw + + `RuÁimeExû±iÚ +('ProbËmƒxecutšg commªd.', +$»tuº +); + +345  + `¬¿y +( +$ouut +, +$”r +); + +346 + } +} + +356 +public + +funùiÚ + + $»¶aûTok’s +( +$fžes +, +$begšTok’ +, +$’dTok’ +, +$tok’s +) + +358 ià(! + `is_¬¿y +( +$fžes +)) + +360 +$fžes + = + `¬¿y +($files); + +363 + `fܗch + ( +$fžes + +as + +$fže +) + +365 +$cڋÁ + = + `fže_g‘_cڋÁs +( +$fže +); + +366 + `fܗch + ( +$tok’s + +as + +$key + => +$v®ue +) + +368 +$cڋÁ + = + `¡r_»¶aû +( +$begšTok’ +. +$key +. +$’dTok’ +, +$v®ue +, $cڋÁ, +$couÁ +); + +371 +$this +-> + `logSeùiÚ +('tok’s', +$fže +); + +373 + `fže_put_cڋÁs +( +$fže +, +$cڋÁ +); + +375 + } +} + +384 +´Ùeùed + +funùiÚ + + $logSeùiÚ +( +$£ùiÚ +, +$mes§ge +, +$size + = +nuÎ +) + +386 ià(! +$this +-> +di¥©ch” +) + +391 +$mes§ge + = +$this +-> +fÜm©‹r + ? $this->fÜm©‹r-> + `fÜm©SeùiÚ +( +$£ùiÚ +, $mes§ge, +$size +) : $section.' '.$message."\n"; + +393 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, 'commªd.log', + `¬¿y +( +$mes§ge +))); + +394 + } +} + +406 +´Ùeùed + +funùiÚ + + $ÿlcuϋR–©iveDœ +( +$äom +, +$to +) + +408 +$äom + = +$this +-> + `ÿnÚiÿlizeP©h +($from); + +409 +$to + = +$this +-> + `ÿnÚiÿlizeP©h +($to); + +411 +$commÚL’gth + = 0; + +412 +$mšP©hL’gth + = + `mš +( + `¡¾’ +( +$äom +), sŒËn( +$to +)); + +415  +$i + = 0; $˜< +$mšP©hL’gth +; $i++) + +417 ià( +$äom +[ +$i +] !ð +$to +[$i]) + +422 ià( +DIRECTORY_SEPARATOR + =ð +$äom +[ +$i +]) + +424 +$commÚL’gth + = +$i + + 1; + +428 ià( +$commÚL’gth +) + +430 ià( + `ex‹nsiÚ_lßded +('mbstring')) + +432 +$Ëv–Up + = + `mb_sub¡r_couÁ +( + `mb_¡rcut +( +$äom +, +$commÚL’gth +), +DIRECTORY_SEPARATOR +); + +436 +$Ëv–Up + = + `sub¡r_couÁ +( +$äom +, +DIRECTORY_SEPARATOR +, +$commÚL’gth +); + +440 +$»ÏtiveDœ + = + `¡r_»³© +('..'. +DIRECTORY_SEPARATOR +, +$Ëv–Up +); + +443 +$»ÏtiveDœ + .ð + `sub¡r +( +$to +, +$commÚL’gth +); + +445  +$»ÏtiveDœ +; + +448  +$to +; + +449 + } +} + +456 +´Ùeùed + +funùiÚ + + $ÿnÚiÿlizeP©h +( +$·th +) + +458 ià( + `em±y +( +$·th +)) + +463 +$out + = + `¬¿y +(); + +464 + `fܗch + ( + `ex¶ode +( +DIRECTORY_SEPARATOR +, +$·th +è +as + +$i + => +$fÞd +) + +466 ià('' =ð +$fÞd + || '.' == $fold) + +471 ià('..' =ð +$fÞd + && +$i + > 0 && '..' !ð + `’d +( +$out +)) + +473 + `¬¿y_pÝ +( +$out +); + +477 +$out +[] = +$fÞd +; + +481 +$»suÉ + = +DIRECTORY_SEPARATOR + =ð +$·th +[0] ? DIRECTORY_SEPARATOR : ''; + +482 +$»suÉ + .ð + `im¶ode +( +DIRECTORY_SEPARATOR +, +$out +); + +483 +$»suÉ + .ð +DIRECTORY_SEPARATOR + =ð +$·th +[ + `¡¾’ +($path) - 1] ? DIRECTORY_SEPARATOR : ''; + +485  +$»suÉ +; + +486 + } +} + + @lib/vendor/symfony/lib/task/sfTask.class.php + +1 + `š™Ÿlize +( +$di¥©ch” +, +$fÜm©‹r +); + +42 +$this +-> + `cÚfigu» +(); + +51 +public + +funùiÚ + + $š™Ÿlize +( +sfEv’tDi¥©ch” + +$di¥©ch” +, +sfFÜm©‹r + +$fÜm©‹r +) + +53 +$this +-> +di¥©ch” + = +$di¥©ch” +; + +54 +$this +-> +fÜm©‹r + = +$fÜm©‹r +; + +55 + } +} + +60 +´Ùeùed + +funùiÚ + + $cÚfigu» +() + +62 + } +} + +69 +public + +funùiÚ + + $g‘FÜm©‹r +() + +71  +$this +-> +fÜm©‹r +; + +72 + } +} + +79 +public + +funùiÚ + + $£tFÜm©‹r +( +sfFÜm©‹r + +$fÜm©‹r +) + +81 +$this +-> +fÜm©‹r + = +$fÜm©‹r +; + +82 + } +} + +92 +public + +funùiÚ + + $runFromCLI +( +sfCommªdMªag” + +$commªdMªag” +, +$ÝtiÚs + = +nuÎ +) + +94 +$commªdMªag” +-> + `g‘Argum’tS‘ +()-> + `addArgum’ts +( +$this +-> + `g‘Argum’ts +()); + +95 +$commªdMªag” +-> + `g‘O±iÚS‘ +()-> + `addO±iÚs +( +$this +-> + `g‘O±iÚs +()); + +97  +$this +-> + `doRun +( +$commªdMªag” +, +$ÝtiÚs +); + +98 + } +} + +108 +public + +funùiÚ + +run +( +$¬gum’ts + = +¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +110 +$commªdMªag” + = +Ãw + + `sfCommªdMªag” +Òew + `sfCommªdArgum’tS‘ +( +$this +-> + `g‘Argum’ts +()),‚ew + `sfCommªdO±iÚS‘ +($this-> + `g‘O±iÚs +())); + +112 ià( + `is_¬¿y +( +$¬gum’ts +è&& + `is_¡ršg +( + `key +($arguments))) + +115 +$šdexArgum’ts + = + `¬¿y +(); + +116 + `fܗch + ( +$this +-> +¬gum’ts + +as + +$¬gum’t +) + +118 +$šdexArgum’ts +[ +$¬gum’t +-> + `g‘Name +()] = $argument; + +121 + `fܗch + ( +$¬gum’ts + +as + +$Çme + => +$v®ue +) + +123 ià( +çl£ + !=ð +$pos + = + `¬¿y_£¬ch +( +$Çme +, + `¬¿y_keys +( +$šdexArgum’ts +))) + +125 ià( +$šdexArgum’ts +[ +$Çme +]-> + `isA¼ay +()) + +127 +$v®ue + = + `još +(' ', ( +¬¿y +) $value); + +128 +$¬gum’ts +[ +$pos +] = + `is£t +($¬gum’ts[$pos]è? $¬gum’ts[$pos].' '. +$v®ue + : $value; + +132 +$¬gum’ts +[ +$pos +] = +$v®ue +; + +135 + `un£t +( +$¬gum’ts +[ +$Çme +]); + +139 + `ksÜt +( +$¬gum’ts +); + +143 +$šdexedO±iÚs + = + `¬¿y +(); + +144 + `fܗch + ( +$this +-> +ÝtiÚs + +as + +$ÝtiÚ +) + +146 +$šdexedO±iÚs +[ +$ÝtiÚ +-> + `g‘Name +()] = $option; + +149 + `fܗch + ( +$ÝtiÚs + +as + +$Çme + => +$v®ue +) + +151 ià( + `is_¡ršg +( +$Çme +)) + +153 ià( +çl£ + ==ð +$v®ue + || +nuÎ + ==ð$v®u|| ( + `is£t +( +$šdexedO±iÚs +[ +$Çme +]è&& $šdexedO±iÚs[$Çme]-> + `isA¼ay +() && !$value)) + +155 + `un£t +( +$ÝtiÚs +[ +$Çme +]); + +160 +$v®ue + = +Œue + ==ð$v®u? +$Çme + : + `¥rštf +('%s=%s', $Çme, + `is£t +( +$šdexedO±iÚs +[$Çme]è&& $šdexedO±iÚs[$Çme]-> + `isA¼ay +(è? + `još +(' --'.$Çme.'=', ( +¬¿y +) $value) : $value); + +164 ià(0 !=ð + `¡½os +( +$v®ue +, '--')) + +166 +$v®ue + = '--'.$value; + +169 +$ÝtiÚs +[] = +$v®ue +; + +170 + `un£t +( +$ÝtiÚs +[ +$Çme +]); + +173  +$this +-> + `doRun +( +$commªdMªag” +, + `is_¡ršg +( +$¬gum’ts +è? $¬gum’t : + `im¶ode +(' ', + `¬¿y_m”ge +($¬gum’ts, +$ÝtiÚs +))); + +174 + } +} + +181 +public + +funùiÚ + + $g‘Argum’ts +() + +183  +$this +-> +¬gum’ts +; + +184 + } +} + +191 +public + +funùiÚ + + $addArgum’ts +( +$¬gum’ts +) + +193 +$this +-> +¬gum’ts + = + `¬¿y_m”ge +($this->¬gum’ts, +$¬gum’ts +); + +194 + } +} + +203 +public + +funùiÚ + +addArgum’t +( +$Çme +, +$mode + = +nuÎ +, +$h–p + = '', +$deçuÉ + =‚ull) + +205 +$this +-> +¬gum’ts +[] = +Ãw + +sfCommªdArgum’t +( +$Çme +, +$mode +, +$h–p +, +$deçuÉ +); + +213 +public + +funùiÚ + + $g‘O±iÚs +() + +215  +$this +-> +ÝtiÚs +; + +216 + } +} + +223 +public + +funùiÚ + + $addO±iÚs +( +$ÝtiÚs +) + +225 +$this +-> +ÝtiÚs + = + `¬¿y_m”ge +($this->ÝtiÚs, +$ÝtiÚs +); + +226 + } +} + +235 +public + +funùiÚ + +addO±iÚ +( +$Çme +, +$shÜtcut + = +nuÎ +, +$mode + =‚uÎ, +$h–p + = '', +$deçuÉ + =‚ull) + +237 +$this +-> +ÝtiÚs +[] = +Ãw + +sfCommªdO±iÚ +( +$Çme +, +$shÜtcut +, +$mode +, +$h–p +, +$deçuÉ +); + +245 +public + +funùiÚ + + $g‘Name¥aû +() + +247  +$this +-> +Çme¥aû +; + +248 + } +} + +255 +public + +funùiÚ + + $g‘Name +() + +257 ià( +$this +-> +Çme +) + +259  +$this +-> +Çme +; + +262 +$Çme + = + `g‘_þass +( +$this +); + +264 ià('sf' =ð + `sub¡r +( +$Çme +, 0, 2)) + +266 +$Çme + = + `sub¡r +($name, 2); + +269 ià('Task' =ð + `sub¡r +( +$Çme +, -4)) + +271 +$Çme + = + `sub¡r +($name, 0, -4); + +274  + `¡r_»¶aû +('_', '-', +sfInæeùÜ +:: + `und”scÜe +( +$Çme +)); + +275 + } +} + +282 +fš® + +funùiÚ + + $g‘FuÎName +() + +284  +$this +-> + `g‘Name¥aû +(è? $this->g‘Name¥aû().':'.$this-> + `g‘Name +() : $this->getName(); + +285 + } +} + +292 +public + +funùiÚ + + $g‘Br›fDesütiÚ +() + +294  +$this +-> +br›fDesütiÚ +; + +295 + } +} + +305 +public + +funùiÚ + + $g‘D‘ažedDesütiÚ +() + +307  + `´eg_»¶aû +('/\[(.+?)\|(\w+)\]/£', '$this->fÜm©‹r->fÜm©("$1", "$2")', +$this +-> +d‘ažedDesütiÚ +); + +308 + } +} + +315 +public + +funùiÚ + + $g‘AlŸ£s +() + +317  +$this +-> +®Ÿ£s +; + +318 + } +} + +325 +public + +funùiÚ + + $g‘SynÝsis +() + +327 +$ÝtiÚs + = + `¬¿y +(); + +328 + `fܗch + ( +$this +-> + `g‘O±iÚs +(è +as + +$ÝtiÚ +) + +330 +$shÜtcut + = +$ÝtiÚ +-> + `g‘ShÜtcut +(è? + `¥rštf +('-%s|', $option->getShortcut()) : ''; + +331 +$ÝtiÚs +[] = + `¥rštf +('['.( +$ÝtiÚ +-> + `isP¬am‘”Requœed +(è? '%s--%s="..."' : ($ÝtiÚ-> + `isP¬am‘”O±iÚ® +(è? '%s--%s[="..."]' : '%s--%s')).']', +$shÜtcut +, $ÝtiÚ-> + `g‘Name +()); + +334 +$¬gum’ts + = + `¬¿y +(); + +335 + `fܗch + ( +$this +-> + `g‘Argum’ts +(è +as + +$¬gum’t +) + +337 +$¬gum’ts +[] = + `¥rštf +( +$¬gum’t +-> + `isRequœed +(è? '%s' : '[%s]', $¬gum’t-> + `g‘Name +().($¬gum’t-> + `isA¼ay +() ? '1' : '')); + +339 ià( +$¬gum’t +-> + `isA¼ay +()) + +341 +$¬gum’ts +[] = + `¥rštf +('... [%sN]', +$¬gum’t +-> + `g‘Name +()); + +345  + `¥rštf +('%% % % %s', +$this +-> + `g‘FuÎName +(), + `im¶ode +(' ', +$ÝtiÚs +), im¶ode(' ', +$¬gum’ts +)); + +346 + } +} + +348 +´Ùeùed + +funùiÚ + + $´oûss +( +sfCommªdMªag” + +$commªdMªag” +, +$ÝtiÚs +) + +350 +$commªdMªag” +-> + `´oûss +( +$ÝtiÚs +); + +351 ià(! +$commªdMªag” +-> + `isV®id +()) + +353 +throw + +Ãw + + `sfCommªdArgum’tsExû±iÚ +( + `¥rštf +("ThexecutiÚ oàsk \"%s\" fažed.\n- %s", +$this +-> + `g‘FuÎName +(), + `im¶ode +("\n- ", +$commªdMªag” +-> + `g‘E¼Üs +()))); + +355 + } +} + +357 +´Ùeùed + +funùiÚ + + $doRun +( +sfCommªdMªag” + +$commªdMªag” +, +$ÝtiÚs +) + +359 +$ev’t + = +$this +-> +di¥©ch” +-> + `fž‹r +( +Ãw + + `sfEv’t +($this, 'commªd.fž‹r_ÝtiÚs', + `¬¿y +('commªd_mªag”' => +$commªdMªag” +)), +$ÝtiÚs +); + +360 +$ÝtiÚs + = +$ev’t +-> + `g‘R‘uºV®ue +(); + +362 +$this +-> + `´oûss +( +$commªdMªag” +, +$ÝtiÚs +); + +364 +$ev’t + = +Ãw + + `sfEv’t +( +$this +, 'commªd.´e_commªd', + `¬¿y +('¬gum’ts' => +$commªdMªag” +-> + `g‘Argum’tV®ues +(), 'ÝtiÚs' => $commªdMªag”-> + `g‘O±iÚV®ues +())); + +365 +$this +-> +di¥©ch” +-> + `nÙifyUÁž +( +$ev’t +); + +366 ià( +$ev’t +-> + `isProûs£d +()) + +368  +$ev’t +-> + `g‘R‘uºV®ue +(); + +371 +$»t + = +$this +-> + `execu‹ +( +$commªdMªag” +-> + `g‘Argum’tV®ues +(), $commªdMªag”-> + `g‘O±iÚV®ues +()); + +373 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, 'command.post_command')); + +375  +$»t +; + +376 + } +} + +383 +public + +funùiÚ + + $log +( +$mes§ges +) + +385 ià(! + `is_¬¿y +( +$mes§ges +)) + +387 +$mes§ges + = + `¬¿y +($messages); + +390 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, 'commªd.log', +$mes§ges +)); + +391 + } +} + +401 +public + +funùiÚ + +logSeùiÚ +( +$£ùiÚ +, +$mes§ge +, +$size + = +nuÎ +, +$¡yË + = 'INFO') + +403 +$this +-> +di¥©ch” +-> +nÙify +( +Ãw + +sfEv’t +($this, 'commªd.log', +¬¿y +($this-> +fÜm©‹r +-> +fÜm©SeùiÚ +( +$£ùiÚ +, +$mes§ge +, +$size +, +$¡yË +)))); + +412 +public + +funùiÚ + + $logBlock +( +$mes§ges +, +$¡yË +) + +414 ià(! + `is_¬¿y +( +$mes§ges +)) + +416 +$mes§ges + = + `¬¿y +($messages); + +419 +$¡yË + = + `¡r_»¶aû +('_LARGE', '', $¡yË, +$couÁ +); + +420 +$Ïrge + = ( +Boޗn +è +$couÁ +; + +422 +$Ën + = 0; + +423 +$lšes + = + `¬¿y +(); + +424 + `fܗch + ( +$mes§ges + +as + +$mes§ge +) + +426 +$lšes +[] = + `¥rštf +( +$Ïrge + ? ' %  ' : ' % ', +$mes§ge +); + +427 +$Ën + = + `max +( +$this +-> + `¡¾’ +( +$mes§ge +è+ ( +$Ïrge + ? 4 : 2), $len); + +430 +$mes§ges + = +$Ïrge + ? + `¬¿y +( + `¡r_»³© +(' ', +$Ën +)) :‡rray(); + +431 + `fܗch + ( +$lšes + +as + +$lše +) + +433 +$mes§ges +[] = +$lše +. + `¡r_»³© +(' ', +$Ën + - +$this +-> + `¡¾’ +($line)); + +435 ià( +$Ïrge +) + +437 +$mes§ges +[] = + `¡r_»³© +(' ', +$Ën +); + +440 + `fܗch + ( +$mes§ges + +as + +$mes§ge +) + +442 +$this +-> + `log +($this-> +fÜm©‹r +-> + `fÜm© +( +$mes§ge +, +$¡yË +)); + +444 + } +} + +455 +public + +funùiÚ + +ask +( +$que¡iÚ +, +$¡yË + = 'QUESTION', +$deçuÉ + = +nuÎ +) + +457 ià( +çl£ + ==ð +$¡yË +) + +459 +$this +-> +log +( +$que¡iÚ +); + +463 + g$this +-> +logBlock +( +$que¡iÚ +, +nuÎ + ==ð +$¡yË + ? 'QUESTION' : $style); + +466 + g$»t + = +Œim +( +fg‘s +( +STDIN +)); + +468  + g$»t + ? $»ˆ: +$deçuÉ +; + +482 +public + +funùiÚ + +askCÚfœm©iÚ +( +$que¡iÚ +, +$¡yË + = 'QUESTION', +$deçuÉ + = +Œue +) + +484 +$ªsw” + = 'z'; + +485  + g$ªsw” + && ! +š_¬¿y +( +¡¹Þow” +( +$ªsw” +[0]), +¬¿y +('y', 'n'))) + +487 + g$ªsw” + = +$this +-> +ask +( +$que¡iÚ +, +$¡yË +); + +490 ià( + gçl£ + ==ð +$deçuÉ +) + +492  +$ªsw” + && 'y' =ð +¡¹Þow” +($answer[0]); + +496  ! + g$ªsw” + || 'y' =ð +¡¹Þow” +( +$ªsw” +[0]); + +515 +public + +funùiÚ + +askAndV®id©e +( +$que¡iÚ +, +sfV®id©ÜBa£ + +$v®id©Ü +, +¬¿y + +$ÝtiÚs + = + $¬¿y +()) + +517 ià(! + `is_¬¿y +( +$que¡iÚ +)) + +519 +$que¡iÚ + = + `¬¿y +($question); + +522 +$ÝtiÚs + = + `¬¿y_m”ge +( + `¬¿y +( + +523 'v®ue' => +nuÎ +, + +524 '©‹m±s' => +çl£ +, + +526 ), +$ÝtiÚs +); + +529 ià( +$ÝtiÚs +['value']) + +531 +Œy + + +533  +$v®id©Ü +-> + `þ—n +( +$ÝtiÚs +['value']); + +535 + `ÿtch + ( +sfV®id©ÜE¼Ü + +$”rÜ +) + +541 +$”rÜ + = +nuÎ +; + +542  +çl£ + ==ð +$ÝtiÚs +['attempts'] || $options['attempts']--) + +544 ià( +nuÎ + !=ð +$”rÜ +) + +546 +$this +-> + `logBlock +( +$”rÜ +-> + `g‘Mes§ge +(), 'ERROR'); + +549 +$v®ue + = +$this +-> + `ask +( +$que¡iÚ +, +$ÝtiÚs +['¡yË'], +nuÎ +); + +551 +Œy + + +553  +$v®id©Ü +-> + `þ—n +( +$v®ue +); + +555 + `ÿtch + ( +sfV®id©ÜE¼Ü + +$”rÜ +) + +560 +throw + +$”rÜ +; + +561 + } +} + +568 +public + +funùiÚ + + $asXml +() + +570 +$dom + = +Ãw + + `DOMDocum’t +('1.0', 'UTF-8'); + +571 +$dom +-> +fÜm©Ouut + = +Œue +; + +572 +$dom +-> + `­³ndChžd +( +$skXML + = $dom-> + `ü—‹EËm’t +('task')); + +573 +$skXML +-> + `£tA‰ribu‹ +('id', +$this +-> + `g‘FuÎName +()); + +574 +$skXML +-> + `£tA‰ribu‹ +('Çme¥aû', +$this +-> + `g‘Name¥aû +() ? $this->getNamespace() : '_global'); + +575 +$skXML +-> + `£tA‰ribu‹ +('Çme', +$this +-> + `g‘Name +()); + +577 +$skXML +-> + `­³ndChžd +( +$u§geXML + = +$dom +-> + `ü—‹EËm’t +('usage')); + +578 +$u§geXML +-> + `­³ndChžd +( +$dom +-> + `ü—‹TextNode +( + `¥rštf +( +$this +-> + `g‘SynÝsis +(), ''))); + +580 +$skXML +-> + `­³ndChžd +( +$desütiÚXML + = +$dom +-> + `ü—‹EËm’t +('description')); + +581 +$desütiÚXML +-> + `­³ndChžd +( +$dom +-> + `ü—‹TextNode +( + `im¶ode +("\À", + `ex¶ode +("\n", +$this +-> + `g‘Br›fDesütiÚ +())))); + +583 +$skXML +-> + `­³ndChžd +( +$h–pXML + = +$dom +-> + `ü—‹EËm’t +('help')); + +584 +$h–p + = +$this +-> +d‘ažedDesütiÚ +; + +585 +$h–p + = + `¡r_»¶aû +( + `¬¿y +('|COMMENT', '|INFO'),‡rray('|strong', '|em'), $help); + +586 +$h–p + = + `´eg_»¶aû +('/\[(.+?)\|(\w+)\]/s', '<$2>$1', $help); + +587 +$h–pXML +-> + `­³ndChžd +( +$dom +-> + `ü—‹TextNode +( + `im¶ode +("\À", + `ex¶ode +("\n", +$h–p +)))); + +589 +$skXML +-> + `­³ndChžd +( +$®Ÿ£sXML + = +$dom +-> + `ü—‹EËm’t +('aliases')); + +590 + `fܗch + ( +$this +-> + `g‘AlŸ£s +(è +as + +$®Ÿs +) + +592 +$®Ÿ£sXML +-> + `­³ndChžd +( +$®ŸsXML + = +$dom +-> + `ü—‹EËm’t +('alias')); + +593 +$®ŸsXML +-> + `­³ndChžd +( +$dom +-> + `ü—‹TextNode +( +$®Ÿs +)); + +596 +$skXML +-> + `­³ndChžd +( +$¬gum’tsXML + = +$dom +-> + `ü—‹EËm’t +('arguments')); + +597 + `fܗch + ( +$this +-> + `g‘Argum’ts +(è +as + +$¬gum’t +) + +599 +$¬gum’tsXML +-> + `­³ndChžd +( +$¬gum’tXML + = +$dom +-> + `ü—‹EËm’t +('argument')); + +600 +$¬gum’tXML +-> + `£tA‰ribu‹ +('Çme', +$¬gum’t +-> + `g‘Name +()); + +601 +$¬gum’tXML +-> + `£tA‰ribu‹ +('is_»quœed', +$¬gum’t +-> + `isRequœed +() ? 1 : 0); + +602 +$¬gum’tXML +-> + `£tA‰ribu‹ +('is_¬¿y', +$¬gum’t +-> + `isA¼ay +() ? 1 : 0); + +603 +$¬gum’tXML +-> + `­³ndChžd +( +$h–pXML + = +$dom +-> + `ü—‹EËm’t +('description')); + +604 +$h–pXML +-> + `­³ndChžd +( +$dom +-> + `ü—‹TextNode +( +$¬gum’t +-> + `g‘H–p +())); + +606 +$¬gum’tXML +-> + `­³ndChžd +( +$deçuÉsXML + = +$dom +-> + `ü—‹EËm’t +('defaults')); + +607 +$deçuÉs + = + `is_¬¿y +( +$¬gum’t +-> + `g‘DeçuÉ +()è? $¬gum’t->g‘DeçuÉ(è: ($¬gum’t->g‘DeçuÉ(è? + `¬¿y +($argument->getDefault()) :‡rray()); + +608 + `fܗch + ( +$deçuÉs + +as + +$deçuÉ +) + +610 +$deçuÉsXML +-> + `­³ndChžd +( +$deçuÉXML + = +$dom +-> + `ü—‹EËm’t +('default')); + +611 +$deçuÉXML +-> + `­³ndChžd +( +$dom +-> + `ü—‹TextNode +( +$deçuÉ +)); + +615 +$skXML +-> + `­³ndChžd +( +$ÝtiÚsXML + = +$dom +-> + `ü—‹EËm’t +('options')); + +616 + `fܗch + ( +$this +-> + `g‘O±iÚs +(è +as + +$ÝtiÚ +) + +618 +$ÝtiÚsXML +-> + `­³ndChžd +( +$ÝtiÚXML + = +$dom +-> + `ü—‹EËm’t +('option')); + +619 +$ÝtiÚXML +-> + `£tA‰ribu‹ +('Çme', '--'. +$ÝtiÚ +-> + `g‘Name +()); + +620 +$ÝtiÚXML +-> + `£tA‰ribu‹ +('shÜtcut', +$ÝtiÚ +-> + `g‘ShÜtcut +() ? '-'.$option->getShortcut() : ''); + +621 +$ÝtiÚXML +-> + `£tA‰ribu‹ +('acû±_·¿m‘”', +$ÝtiÚ +-> + `acû±P¬am‘” +() ? 1 : 0); + +622 +$ÝtiÚXML +-> + `£tA‰ribu‹ +('is_·¿m‘”_»quœed', +$ÝtiÚ +-> + `isP¬am‘”Requœed +() ? 1 : 0); + +623 +$ÝtiÚXML +-> + `£tA‰ribu‹ +('is_muɝË', +$ÝtiÚ +-> + `isA¼ay +() ? 1 : 0); + +624 +$ÝtiÚXML +-> + `­³ndChžd +( +$h–pXML + = +$dom +-> + `ü—‹EËm’t +('description')); + +625 +$h–pXML +-> + `­³ndChžd +( +$dom +-> + `ü—‹TextNode +( +$ÝtiÚ +-> + `g‘H–p +())); + +627 ià( +$ÝtiÚ +-> + `acû±P¬am‘” +()) + +629 +$ÝtiÚXML +-> + `­³ndChžd +( +$deçuÉsXML + = +$dom +-> + `ü—‹EËm’t +('defaults')); + +630 +$deçuÉs + = + `is_¬¿y +( +$ÝtiÚ +-> + `g‘DeçuÉ +()è? $ÝtiÚ->g‘DeçuÉ(è: ($ÝtiÚ->g‘DeçuÉ(è? + `¬¿y +($option->getDefault()) :‡rray()); + +631 + `fܗch + ( +$deçuÉs + +as + +$deçuÉ +) + +633 +$deçuÉsXML +-> + `­³ndChžd +( +$deçuÉXML + = +$dom +-> + `ü—‹EËm’t +('default')); + +634 +$deçuÉXML +-> + `­³ndChžd +( +$dom +-> + `ü—‹TextNode +( +$deçuÉ +)); + +639  +$dom +-> + `§veXml +(); + +640 + } +} + +650 +ab¡¿ù + +´Ùeùed + +funùiÚ + +execu‹ +( +$¬gum’ts + = +¬¿y +(), +$ÝtiÚs + =‡rray()); + +652 +´Ùeùed + +funùiÚ + + $¡¾’ +( +$¡ršg +) + +654 ià(! + `funùiÚ_exi¡s +('mb_strlen')) { + +655  + `¡¾’ +( +$¡ršg +); + +658 ià( +çl£ + ==ð +$’codšg + = + `mb_d‘eù_’codšg +( +$¡ršg +)) { + +659  + `¡¾’ +( +$¡ršg +); + +662  + `mb_¡¾’ +( +$¡ršg +, +$’codšg +); + +663 + } +} + + @lib/vendor/symfony/lib/task/symfony/lime_symfony.php + +1 +ba£_dœ +). +DIRECTORY_SEPARATOR +, + +17 + `»®·th +( +$this +-> +ba£_dœ +.'/../lib/¶ugšs'). +DIRECTORY_SEPARATOR +, + +18 +$this +-> +ex‹nsiÚ +, + +19 ), '', +$fže +)); + +21  + `´eg_»¶aû +('#^(.*?)Plugš/‹¡/(un™|funùiÚ®)/#', '[$1] $2/', +$fže +); + +23 + } +} + + @lib/vendor/symfony/lib/task/symfony/sfSymfonyTestTask.class.php + +1 + `addO±iÚs +( + `¬¿y +( + +27 +Ãw + + `sfCommªdO±iÚ +('upd©e-autÞßd”', 'u', +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Updatehe sfCoreAutoload class'), + +28 +Ãw + + `sfCommªdO±iÚ +('Úly-çžed', 'f', +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Only„unestshat failed†astime'), + +29 +Ãw + + `sfCommªdO±iÚ +('xml', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The file‚ame forhe JUnit compatible XML†og file'), + +30 +Ãw + + `sfCommªdO±iÚ +('»bužd-®l', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Rebuild‡ll generated fixture files'), + +33 +$this +-> +Çme¥aû + = 'symfony'; + +34 +$this +-> +Çme + = 'test'; + +35 +$this +-> +br›fDesütiÚ + = 'Launcheshe symfonyest suite'; + +37 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +38 +The + [ +‹¡ +: +®l +| +INFO +] +sk + +Ïunches + +the + +symfÚy +e¡ +su™e +: + +40 [./ +symfÚy + symfÚy: +‹¡ +| +INFO +] + +41 +EOF +; + +47 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +49 + `»quœe_Úû +( + `dœÇme +( +__FILE__ +).'/../../vendor/lime/lime.php'); + +50 + `»quœe_Úû +( + `dœÇme +( +__FILE__ +).'/lime_symfony.php'); + +53 + `»quœe_Úû +( + `dœÇme +( +__FILE__ +).'/../../util/sfToolkit.class.php'); + +54 ià( +$fžes + = + `glob +( + `sys_g‘_‹mp_dœ +(). +DIRECTORY_SEPARATOR +.'/sf_autoload_unit_*')) + +56 + `fܗch + ( +$fžes + +as + +$fže +) + +58 + `uƚk +( +$fže +); + +63 ià( +$ÝtiÚs +['update-autoloader']) + +65 + `»quœe_Úû +( + `dœÇme +( +__FILE__ +).'/../../autoload/sfCoreAutoload.class.php'); + +66 +sfCÜeAutÞßd +:: + `make +(); + +69 +$¡©us + = +çl£ +; + +70 +$¡©usFže + = + `sys_g‘_‹mp_dœ +(). +DIRECTORY_SEPARATOR +. + `¥rštf +('/.‹¡_symfÚy_%s_¡©us', + `md5 +( + `dœÇme +( +__FILE__ +))); + +71 ià( +$ÝtiÚs +['only-failed']) + +73 ià( + `fže_exi¡s +( +$¡©usFže +)) + +75 +$¡©us + = + `un£rŸlize +( + `fže_g‘_cڋÁs +( +$¡©usFže +)); + +79 +$h + = +Ãw + + `lime_symfÚy +( + `¬¿y +('fÜû_cÞÜs' => +$ÝtiÚs +['color'], 'verbose' => $options['trace'])); + +80 +$h +-> +ba£_dœ + = + `»®·th +( + `dœÇme +( +__FILE__ +).'/../../../test'); + +83 ià( +$ÝtiÚs +['rebuild-all']) + +85 +$fšd” + = +sfFšd” +:: + `ty³ +('dœ')-> + `Çme +( + `¬¿y +('base', 'om', 'map')); + +86 + `fܗch + ( +$fšd” +-> + `š +( + `glob +( +$h +-> +ba£_dœ +.'/../lib/¶ugšs/*/‹¡/funùiÚ®/fixtu»s/lib')è +as + +$dœ +) + +88 +sfToÞk™ +:: + `þ—rDœeùÜy +( +$dœ +); + +92 ià( +$¡©us +) + +94 + `fܗch + ( +$¡©us + +as + +$fže +) + +96 +$h +->( +$fže +); + +101 +$h +->( +sfFšd” +:: + `ty³ +('fže')-> + `´uà +('fixtu»s')-> + `Çme +('*Te¡.php')-> + `š +( + `¬¿y_m”ge +( + +103 + `¬¿y +( +$h +-> +ba£_dœ +.'/unit'), + +104 + `glob +( +$h +-> +ba£_dœ +.'/../lib/plugins/*/test/unit'), + +107 + `¬¿y +( +$h +-> +ba£_dœ +.'/functional'), + +108 + `glob +( +$h +-> +ba£_dœ +.'/../lib/plugins/*/test/functional'), + +111 + `¬¿y +( +$h +-> +ba£_dœ +.'/other') + +115 +$»t + = +$h +-> + `run +() ? 0 : 1; + +117 + `fže_put_cڋÁs +( +$¡©usFže +, + `£rŸlize +( +$h +-> + `g‘_çžed_fžes +())); + +119 ià( +$ÝtiÚs +['xml']) + +121 + `fže_put_cڋÁs +( +$ÝtiÚs +['xml'], +$h +-> + `to_xml +()); + +124  +$»t +; + +125 + } +} + + @lib/vendor/symfony/lib/task/test/sfLimeHarness.class.php + +1 +¶ugšs +[ +$¶ugš +-> + `g‘RoÙDœ +(). +DIRECTORY_SEPARATOR +.'‹¡'.DIRECTORY_SEPARATOR] = '['. + `´eg_»¶aû +('/Plugš$/i', '', $¶ugš-> + `g‘Name +()).'] '; + +18 +´Ùeùed + +funùiÚ + + $g‘_»Ïtive_fže +( +$fže +) + +20 +$fže + = + `¡¹r +($fže, +$this +-> +¶ugšs +); + +21  + `¡r_»¶aû +( +DIRECTORY_SEPARATOR +, '/', sŒ_»¶aû( + `¬¿y +( + `»®·th +( +$this +-> +ba£_dœ +).DIRECTORY_SEPARATOR, $this-> +ex‹nsiÚ +), '', +$fže +)); + +22 + } +} + + @lib/vendor/symfony/lib/task/test/sfTestAllTask.class.php + +1 + `addO±iÚs +( + `¬¿y +( + +27 +Ãw + + `sfCommªdO±iÚ +('Úly-çžed', 'f', +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Only„unestshat failed†astime'), + +28 +Ãw + + `sfCommªdO±iÚ +('xml', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The file‚ame forhe JUnit compatible XML†og file'), + +31 +$this +-> +Çme¥aû + = 'test'; + +32 +$this +-> +Çme + = 'all'; + +33 +$this +-> +br›fDesütiÚ + = 'Launches‡llests'; + +35 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +36 +The + [ +‹¡ +: +®l +| +INFO +] +sk + +Ïunches +‡Î +un™ + +ªd + +funùiÚ® + +‹¡s +: + +38 [./ +symfÚy + +‹¡ +: +®l +| +INFO +] + +40 +The + +sk + +Ïunches + +®l + +‹¡s + +found + +š + [ +‹¡ +/| +COMMENT +]. + +42 +If + +some + +‹¡s + +çž +, +you + +ÿn + +u£ + +the + [-- +Œaû +| +COMMENT +] +ÝtiÚ + +to + +have + +mÜe + + +43 +šfÜm©iÚ + +about + +the + +çžu»s +: + +45 [./ +symfÚy + +‹¡ +: +®l + - +t +| +INFO +] + +47 +Or + +you + +ÿn + +®so + +Œy + +to + +fix + +the + +´obËm + +by + +Ïunchšg + +them + by +hªd + +Ü + +w™h +he + +48 [ +‹¡ +: +un™ +| +COMMENT +] +ªd + [‹¡: +funùiÚ® +|COMMENT] +sk +. + +50 +U£ + +the + [-- +Úly +- +çžed +| +COMMENT +] +ÝtiÚ + +to + +fÜû +h +sk +ØÚly +execu‹ + +‹¡s + + +51 +th© + +çžed + +duršg + +the + +´evious + +run +: + +53 [./ +symfÚy + +‹¡ +: +®l + -- +Úly +- +çžed +| +INFO +] + +55 +H”e + +is + +how + +™ + +wÜks +: +the + +fœ¡ + +time +, +®l + +‹¡s + +¬e + +run + +as + +usu® +. +But +  + +56 +sub£qu’t + +‹¡ + +runs +, +Úly + +‹¡s + +th© + +çžed + +Ï¡ + +time + +¬e + +execu‹d +. +As + +you + + +57 +fix + +your + +code +, +some + +‹¡s + +wžl + +·ss +, +ªd + wžÈ +be + +»moved + +äom + +sub£qu’t + +runs +. + +58 +Wh’ + +®l + +‹¡s + +·ss + +agaš +, +the + +fuÎ + +‹¡ + +su™e + +is + +run +... +you + +ÿn + +th’ + +rš£ + + +59 +ªd + +»³© +. + +61 +The + +sk + +ÿn + +ouut + +a + +JUn™ + +com·tibË + +XML + +log + +fže + +w™h + +the + [-- +xml +| +COMMENT +] + +62 +ÝtiÚs +: + +64 [./ +symfÚy + +‹¡ +: +®l + -- +xml += +log +.xml| +INFO +] + +65 +EOF +; + +71 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +73 +»quœe_Úû + + `dœÇme +( +__FILE__ +).'/sfLimeHarness.class.php'; + +75 +$h + = +Ãw + + `sfLimeH¬Ãss +( + `¬¿y +( + +76 'fÜû_cÞÜs' => + `is£t +( +$ÝtiÚs +['color']) && $options['color'], + +77 'v”bo£' => + `is£t +( +$ÝtiÚs +['trace']) && $options['trace'], + +79 +$h +-> + `addPlugšs +( + `¬¿y_m­ +( + `¬¿y +( +$this +-> +cÚfigu¿tiÚ +, 'g‘PlugšCÚfigu¿tiÚ'), $this->cÚfigu¿tiÚ-> + `g‘Plugšs +())); + +80 +$h +-> +ba£_dœ + = +sfCÚfig +:: + `g‘ +('sf_test_dir'); + +82 +$¡©us + = +çl£ +; + +83 +$¡©usFže + = +sfCÚfig +:: + `g‘ +('sf_cache_dir').'/.test_all_status'; + +84 ià( +$ÝtiÚs +['only-failed']) + +86 ià( + `fže_exi¡s +( +$¡©usFže +)) + +88 +$¡©us + = + `un£rŸlize +( + `fže_g‘_cڋÁs +( +$¡©usFže +)); + +92 ià( +$¡©us +) + +94 + `fܗch + ( +$¡©us + +as + +$fže +) + +96 +$h +->( +$fže +); + +102 +$fšd” + = +sfFšd” +:: + `ty³ +('fže')-> + `fÞlow_lšk +()-> + `Çme +('*Test.php'); + +103 +$h +->( +$this +-> + `fž‹rTe¡Fžes +( +$fšd” +-> + `š +($h-> +ba£_dœ +), +$¬gum’ts +, +$ÝtiÚs +)); + +106 +$»t + = +$h +-> + `run +() ? 0 : 1; + +108 + `fže_put_cڋÁs +( +$¡©usFže +, + `£rŸlize +( +$h +-> + `g‘_çžed_fžes +())); + +110 ià( +$ÝtiÚs +['xml']) + +112 + `fže_put_cڋÁs +( +$ÝtiÚs +['xml'], +$h +-> + `to_xml +()); + +115  +$»t +; + +116 + } +} + + @lib/vendor/symfony/lib/task/test/sfTestBaseTask.class.php + +1 +$¬gum’ts +, 'ÝtiÚs' => +$ÝtiÚs +)); + +34 +$this +-> +di¥©ch” +-> + `fž‹r +( +$ev’t +, +$‹¡s +); + +36  +$ev’t +-> + `g‘R‘uºV®ue +(); + +38 + } +} + + @lib/vendor/symfony/lib/task/test/sfTestCoverageTask.class.php + +1 + `addArgum’ts +( + `¬¿y +( + +27 +Ãw + + `sfCommªdArgum’t +('‹¡_Çme', +sfCommªdArgum’t +:: +REQUIRED +, 'Aest file‚ame or‡est directory'), + +28 +Ãw + + `sfCommªdArgum’t +('lib_Çme', +sfCommªdArgum’t +:: +REQUIRED +, 'A†ib file‚ame or‡†ib directory for wich you wanto knowhe coverage'), + +31 +$this +-> + `addO±iÚs +( + `¬¿y +( + +32 +Ãw + + `sfCommªdO±iÚ +('d‘ažed', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +, 'Output detailed information'), + +35 +$this +-> +Çme¥aû + = 'test'; + +36 +$this +-> +Çme + = 'coverage'; + +37 +$this +-> +br›fDesütiÚ + = 'Outputsest code coverage'; + +39 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +40 +The + [ +‹¡ +: +cov”age +| +INFO +] +sk + +ouuts + +the + +code + coverage + +41 +giv’ + +a + +‹¡ + +fže + +Ü +e¡ +dœeùÜy + + +42 +ªd + +a + +lib + +fže + +Ü +†ib +dœeùÜy +  +which + +you + +wªt + +code + + +43 +cov”age +: + +45 [./ +symfÚy + +‹¡ +: +cov”age +e¡/ +un™ +/ +mod– + +lib +/mod–| +INFO +] + +47 +To + +ouut + +the + +lšes + +nÙ + +cov”ed +, +·ss +h[-- +d‘ažed +| +INFO +] +ÝtiÚ +: + +49 [./ +symfÚy + +‹¡ +: +cov”age + -- +d‘ažed +e¡/ +un™ +/ +mod– + +lib +/mod–| +INFO +] + +50 +EOF +; + +56 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +58 +»quœe_Úû + +sfCÚfig +:: + `g‘ +('sf_symfony_lib_dir').'/vendor/lime/lime.php'; + +60 +$cov”age + = +$this +-> + `g‘Cov”age +($this-> + `g‘Te¡H¬Ãss +( + `¬¿y +('fÜû_cÞÜs' => + `is£t +( +$ÝtiÚs +['color']) && $options['color'])), $options['detailed']); + +62 +$‹¡Fžes + = +$this +-> + `g‘Fžes +( +sfCÚfig +:: + `g‘ +('sf_roÙ_dœ').'/'. +$¬gum’ts +['test_name']); + +63 +$max + = + `couÁ +( +$‹¡Fžes +); + +64 + `fܗch + ( +$‹¡Fžes + +as + +$i + => +$fže +) + +66 +$this +-> + `logSeùiÚ +('cov”age', + `¥rštf +('rušg % (%d/%d)', +$fže +, +$i + + 1, +$max +)); + +67 +$cov”age +-> + `´oûss +( +$fže +); + +70 +$cov”edFžes + = +$this +-> + `g‘Fžes +( +sfCÚfig +:: + `g‘ +('sf_roÙ_dœ').'/'. +$¬gum’ts +['lib_name']); + +71 +$cov”age +-> + `ouut +( +$cov”edFžes +); + +72 + } +} + +74 +´Ùeùed + +funùiÚ + +g‘Te¡H¬Ãss +( +$h¬ÃssO±iÚs + = + $¬¿y +()) + +76 +»quœe_Úû + + `dœÇme +( +__FILE__ +).'/sfLimeHarness.class.php'; + +78 +$h¬Ãss + = +Ãw + + `sfLimeH¬Ãss +( +$h¬ÃssO±iÚs +); + +79 +$h¬Ãss +-> + `addPlugšs +( + `¬¿y_m­ +( + `¬¿y +( +$this +-> +cÚfigu¿tiÚ +, 'g‘PlugšCÚfigu¿tiÚ'), $this->cÚfigu¿tiÚ-> + `g‘Plugšs +())); + +80 +$h¬Ãss +-> +ba£_dœ + = +sfCÚfig +:: + `g‘ +('sf_root_dir'); + +82  +$h¬Ãss +; + +83 + } +} + +85 +´Ùeùed + +funùiÚ + + $g‘Cov”age +( +lime_h¬Ãss + +$h¬Ãss +, +$d‘ažed + = +çl£ +) + +87 +$cov”age + = +Ãw + + `lime_cov”age +( +$h¬Ãss +); + +88 +$cov”age +-> +v”bo£ + = +$d‘ažed +; + +89 +$cov”age +-> +ba£_dœ + = +sfCÚfig +:: + `g‘ +('sf_root_dir'); + +91  +$cov”age +; + +92 + } +} + +94 +´Ùeùed + +funùiÚ + + $g‘Fžes +( +$dœeùÜy +) + +96 ià( + `is_dœ +( +$dœeùÜy +)) + +98  +sfFšd” +:: + `ty³ +('fže')-> + `Çme +('*.php')-> + `š +( +$dœeùÜy +); + +100 ià( + `fže_exi¡s +( +$dœeùÜy +)) + +102  + `¬¿y +( +$dœeùÜy +); + +106 +throw + +Ãw + + `sfCommªdExû±iÚ +( + `¥rštf +('FžÜ dœeùÜy "%s" dÛ nكxi¡.', +$dœeùÜy +)); + +108 + } +} + + @lib/vendor/symfony/lib/task/test/sfTestFunctionalTask.class.php + +1 + `addArgum’ts +( + `¬¿y +( + +27 +Ãw + + `sfCommªdArgum’t +('­¶iÿtiÚ', +sfCommªdArgum’t +:: +REQUIRED +, 'The‡pplication‚ame'), + +28 +Ãw + + `sfCommªdArgum’t +('cڌÞËr', +sfCommªdArgum’t +:: +OPTIONAL + | sfCommªdArgum’t:: +IS_ARRAY +, 'The controller‚ame'), + +31 +$this +-> + `addO±iÚs +( + `¬¿y +( + +32 +Ãw + + `sfCommªdO±iÚ +('xml', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The file‚ame forhe JUnit compatible XML†og file'), + +35 +$this +-> +Çme¥aû + = 'test'; + +36 +$this +-> +Çme + = 'functional'; + +37 +$this +-> +br›fDesütiÚ + = 'Launches functionalests'; + +39 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +40 +The + [ +‹¡ +: +funùiÚ® +| +INFO +] +sk + +Ïunches + funùiÚ® +‹¡s +  +a + + +41 +giv’ + +­¶iÿtiÚ +: + +43 [./ +symfÚy + +‹¡ +: +funùiÚ® + +äڋnd +| +INFO +] + +45 +The + +sk + +Ïunches + +®l + +‹¡s + +found + +š + [ +‹¡ +/ +funùiÚ® +/% +­¶iÿtiÚ +%| +COMMENT +]. + +47 +If + +some + +‹¡s + +çž +, +you + +ÿn + +u£ + +the + [-- +Œaû +| +COMMENT +] +ÝtiÚ + +to + +have + +mÜe + + +48 +šfÜm©iÚ + +about + +the + +çžu»s +: + +50 [./ +symfÚy + +‹¡ +: +funùiÚ® + +äڋnd + - +t +| +INFO +] + +52 +You + +ÿn + +Ïunch + +®l + +funùiÚ® + +‹¡s +  +a + +¥ecific + +cڌÞËr + +by + + +53 +givšg + +a + +cڌÞËr + +Çme +: + +55 [./ +symfÚy + +‹¡ +: +funùiÚ® + +äڋnd + +¬tiþe +| +INFO +] + +57 +You + +ÿn + +®so + +Ïunch + +®l + +funùiÚ® + +‹¡s +  +£v”® + +cڌÞËrs +: + +59 [./ +symfÚy + +‹¡ +: +funùiÚ® + +äڋnd + +¬tiþe + +comm’t +| +INFO +] + +61 +The + +sk + +ÿn + +ouut + +a + +JUn™ + +com·tibË + +XML + +log + +fže + +w™h + +the + [-- +xml +| +COMMENT +] + +62 +ÝtiÚs +: + +64 [./ +symfÚy + +‹¡ +: +funùiÚ® + -- +xml += +log +.xml| +INFO +] + +65 +EOF +; + +71 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +73 +$­p + = +$¬gum’ts +['application']; + +75 ià( + `couÁ +( +$¬gum’ts +['controller'])) + +77 +$fžes + = + `¬¿y +(); + +79 + `fܗch + ( +$¬gum’ts +['cڌÞËr'] +as + +$cڌÞËr +) + +81 +$fšd” + = +sfFšd” +:: + `ty³ +('fže')-> + `fÞlow_lšk +()-> + `Çme +( + `ba£Çme +( +$cڌÞËr +).'Test.php'); + +82 +$fžes + = + `¬¿y_m”ge +($fžes, +$fšd” +-> + `š +( +sfCÚfig +:: + `g‘ +('sf_‹¡_dœ').'/funùiÚ®/'. +$­p +.'/'. + `dœÇme +( +$cڌÞËr +))); + +85 if( +$®lFžes + = +$this +-> + `fž‹rTe¡Fžes +( +$fžes +, +$¬gum’ts +, +$ÝtiÚs +)) + +87 + `fܗch + ( +$®lFžes + +as + +$fže +) + +89 + `šþude +( +$fže +); + +94 +$this +-> + `logSeùiÚ +('funùiÚ®', 'nØcڌÞ˸found', +nuÎ +, 'ERROR'); + +99 +»quœe_Úû + + `dœÇme +( +__FILE__ +).'/sfLimeHarness.class.php'; + +101 +$h + = +Ãw + + `sfLimeH¬Ãss +( + `¬¿y +( + +102 'fÜû_cÞÜs' => + `is£t +( +$ÝtiÚs +['color']) && $options['color'], + +103 'v”bo£' => + `is£t +( +$ÝtiÚs +['trace']) && $options['trace'], + +105 +$h +-> + `addPlugšs +( + `¬¿y_m­ +( + `¬¿y +( +$this +-> +cÚfigu¿tiÚ +, 'g‘PlugšCÚfigu¿tiÚ'), $this->cÚfigu¿tiÚ-> + `g‘Plugšs +())); + +106 +$h +-> +ba£_dœ + = +sfCÚfig +:: + `g‘ +('sf_‹¡_dœ').'/funùiÚ®/'. +$­p +; + +109 +$fšd” + = +sfFšd” +:: + `ty³ +('fže')-> + `fÞlow_lšk +()-> + `Çme +('*Test.php'); + +110 +$h +->( +$this +-> + `fž‹rTe¡Fžes +( +$fšd” +-> + `š +($h-> +ba£_dœ +), +$¬gum’ts +, +$ÝtiÚs +)); + +112 +$»t + = +$h +-> + `run +() ? 0 : 1; + +114 ià( +$ÝtiÚs +['xml']) + +116 + `fže_put_cڋÁs +( +$ÝtiÚs +['xml'], +$h +-> + `to_xml +()); + +119  +$»t +; + +121 + } +} + + @lib/vendor/symfony/lib/task/test/sfTestUnitTask.class.php + +1 + `addArgum’ts +( + `¬¿y +( + +27 +Ãw + + `sfCommªdArgum’t +('Çme', +sfCommªdArgum’t +:: +OPTIONAL + | sfCommªdArgum’t:: +IS_ARRAY +, 'Theest‚ame'), + +30 +$this +-> + `addO±iÚs +( + `¬¿y +( + +31 +Ãw + + `sfCommªdO±iÚ +('xml', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, 'The file‚ame forhe JUnit compatible XML†og file'), + +34 +$this +-> +Çme¥aû + = 'test'; + +35 +$this +-> +Çme + = 'unit'; + +36 +$this +-> +br›fDesütiÚ + = 'Launches unitests'; + +38 +$this +-> +d‘ažedDesütiÚ + = <<< +EOF + + +39 +The + [ +‹¡ +: +un™ +| +INFO +] +sk + +Ïunches + un™ +‹¡s +: + +41 [./ +symfÚy + +‹¡ +: +un™ +| +INFO +] + +43 +The + +sk + +Ïunches + +®l + +‹¡s + +found + +š + [ +‹¡ +/ +un™ +| +COMMENT +]. + +45 +If + +some + +‹¡s + +çž +, +you + +ÿn + +u£ + +the + [-- +Œaû +| +COMMENT +] +ÝtiÚ + +to + +have + +mÜe + + +46 +šfÜm©iÚ + +about + +the + +çžu»s +: + +48 [./ +symfÚy + +‹¡ +: +un™ + - +t +| +INFO +] + +50 +You + +ÿn + +Ïunch + +un™ + +‹¡s +  +a + +¥ecific + +Çme +: + +52 [./ +symfÚy + +‹¡ +: +un™ + +¡¹Þow” +| +INFO +] + +54 +You + +ÿn + +®so + +Ïunch + +un™ + +‹¡s +  +£v”® + +Çmes +: + +56 [./ +symfÚy + +‹¡ +: +un™ + +¡¹Þow” + +¡¹ouµ” +| +INFO +] + +58 +The + +sk + +ÿn + +ouut + +a + +JUn™ + +com·tibË + +XML + +log + +fže + +w™h + +the + [-- +xml +| +COMMENT +] + +59 +ÝtiÚs +: + +61 [./ +symfÚy + +‹¡ +: +un™ + -- +xml += +log +.xml| +INFO +] + +62 +EOF +; + +68 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +70 ià( + `couÁ +( +$¬gum’ts +['name'])) + +72 +$fžes + = + `¬¿y +(); + +74 + `fܗch + ( +$¬gum’ts +['Çme'] +as + +$Çme +) + +76 +$fšd” + = +sfFšd” +:: + `ty³ +('fže')-> + `fÞlow_lšk +()-> + `Çme +( + `ba£Çme +( +$Çme +).'Test.php'); + +77 +$fžes + = + `¬¿y_m”ge +($fžes, +$fšd” +-> + `š +( +sfCÚfig +:: + `g‘ +('sf_‹¡_dœ').'/un™/'. + `dœÇme +( +$Çme +))); + +80 if( +$®lFžes + = +$this +-> + `fž‹rTe¡Fžes +( +$fžes +, +$¬gum’ts +, +$ÝtiÚs +)) + +82 + `fܗch + ( +$®lFžes + +as + +$fže +) + +84 + `šþude +( +$fže +); + +89 +$this +-> + `logSeùiÚ +('‹¡', 'n؋¡ found', +nuÎ +, 'ERROR'); + +94 +»quœe_Úû + + `dœÇme +( +__FILE__ +).'/sfLimeHarness.class.php'; + +96 +$h + = +Ãw + + `sfLimeH¬Ãss +( + `¬¿y +( + +97 'fÜû_cÞÜs' => + `is£t +( +$ÝtiÚs +['color']) && $options['color'], + +98 'v”bo£' => + `is£t +( +$ÝtiÚs +['trace']) && $options['trace'], + +100 +$h +-> + `addPlugšs +( + `¬¿y_m­ +( + `¬¿y +( +$this +-> +cÚfigu¿tiÚ +, 'g‘PlugšCÚfigu¿tiÚ'), $this->cÚfigu¿tiÚ-> + `g‘Plugšs +())); + +101 +$h +-> +ba£_dœ + = +sfCÚfig +:: + `g‘ +('sf_test_dir').'/unit'; + +104 +$fšd” + = +sfFšd” +:: + `ty³ +('fže')-> + `fÞlow_lšk +()-> + `Çme +('*Test.php'); + +105 +$h +->( +$this +-> + `fž‹rTe¡Fžes +( +$fšd” +-> + `š +($h-> +ba£_dœ +), +$¬gum’ts +, +$ÝtiÚs +)); + +107 +$»t + = +$h +-> + `run +() ? 0 : 1; + +109 ià( +$ÝtiÚs +['xml']) + +111 + `fže_put_cڋÁs +( +$ÝtiÚs +['xml'], +$h +-> + `to_xml +()); + +114  +$»t +; + +116 + } +} + + @lib/vendor/symfony/lib/test/sfTestBrowser.class.php + +1 +brow£r +-> + `g‘Cڋxt +()-> + `g‘AùiÚSck +(); + +50  +$pos™iÚ +) + +53 +$’Œy + = +$aùiÚSck +-> + `g‘Fœ¡EÁry +(); + +56 +$’Œy + = +$aùiÚSck +-> + `g‘La¡EÁry +(); + +59 +$’Œy + = +$aùiÚSck +-> + `g‘EÁry +( +$pos™iÚ +); + +62 +$this +-> + `‹¡ +()-> + `is +( +$’Œy +-> + `g‘ModuËName +(), +$moduËName +, + `¥rštf +('»que¡ i fÜw¬dedØth"%s" moduË (%s)', $moduËName, +$pos™iÚ +)); + +63 +$this +-> + `‹¡ +()-> + `is +( +$’Œy +-> + `g‘AùiÚName +(), +$aùiÚName +, + `¥rštf +('»que¡ i fÜw¬dedØth"%s"‡ùiÚ (%s)', $aùiÚName, +$pos™iÚ +)); + +65  +$this +; + +66 + } +} + + @lib/vendor/symfony/lib/test/sfTestFunctionalBase.class.php + +1 +brow£r + = +$brow£r +; + +42 ià( +nuÎ + ==ð +£lf +:: +$‹¡ +) + +44 +£lf +:: +$‹¡ + = +nuÎ + !=ð +$lime + ? $lim: +Ãw + + `lime_‹¡ +(); + +47 +$this +-> + `£tTe¡”s +( + `¬¿y_m”ge +( + `¬¿y +( + +52 ), +$‹¡”s +)); + +55 + `»gi¡”_shutdown_funùiÚ +( + `¬¿y +( +$this +, 'shutdown')); + +58 + `£t_”rÜ_hªdËr +( + `¬¿y +( +$this +, 'handlePhpError')); + +59 + `£t_exû±iÚ_hªdËr +( + `¬¿y +( +$this +, 'handleException')); + +69 +public + +funùiÚ + + $w™h +( +$Çme +) + +71 ià(! + `is£t +( +$this +-> +‹¡”s +[ +$Çme +])) + +73 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('Th"%s"e¡” dÛ nكxi¡.', +$Çme +)); + +76 ià( +$this +-> +blockTe¡” +) + +78 +throw + +Ãw + + `LogicExû±iÚ +( + `¥rštf +('You cannot‚estester blocks.')); + +81 +$this +-> +cu¼’tTe¡” + = $this-> +‹¡”s +[ +$Çme +]; + +82 +$this +-> +cu¼’tTe¡” +-> + `š™Ÿlize +(); + +84  +$this +-> +cu¼’tTe¡” +; + +85 + } +} + +92 +public + +funùiÚ + + $begš +() + +94 ià(! +$this +-> +cu¼’tTe¡” +) + +96 +throw + +Ãw + + `LogicExû±iÚ +( + `¥rštf +('You must call with() before beginning‡ester block.')); + +99  +$this +-> +blockTe¡” + = $this-> +cu¼’tTe¡” +; + +100 + } +} + +107 +public + +funùiÚ + + $’d +() + +109 ià( +nuÎ + ==ð +$this +-> +blockTe¡” +) + +111 +throw + +Ãw + + `LogicExû±iÚ +( + `¥rštf +('There is‚o currentester blockoƒnd.')); + +114 +$this +-> +blockTe¡” + = +nuÎ +; + +116  +$this +; + +117 + } +} + +124 +public + +funùiÚ + + $£tTe¡”s +( +$‹¡”s +) + +126 + `fܗch + ( +$‹¡”s + +as + +$Çme + => +$‹¡” +) + +128 +$this +-> + `£tTe¡” +( +$Çme +, +$‹¡” +); + +130 + } +} + +138 +public + +funùiÚ + + $£tTe¡” +( +$Çme +, +$‹¡” +) + +140 ià( + `is_¡ršg +( +$‹¡” +)) + +142 +$‹¡” + = +Ãw + + `$‹¡” +( +$this +, +£lf +:: +$‹¡ +); + +145 ià(! +$‹¡” + +š¡ªûof + +sfTe¡” +) + +147 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('Th‹¡” "%s" i nÙ oàþas sfTe¡”.', +$Çme +)); + +150 +$this +-> +‹¡”s +[ +$Çme +] = +$‹¡” +; + +151 + } +} + +158 +public + +funùiÚ + + $shutdown +() + +160 +$this +-> + `checkCu¼’tExû±iÚIsEm±y +(); + +161 + } +} + +168 +public + +funùiÚ + + $‹¡ +() + +170  +£lf +:: +$‹¡ +; + +171 + } +} + +182 +public + +funùiÚ + +g‘ +( +$uri +, +$·¿m‘”s + = +¬¿y +(), +$chªgeSck + = +Œue +) + +184  +$this +-> +ÿÎ +( +$uri +, 'g‘', +$·¿m‘”s +, +$chªgeSck +); + +197 +public + +funùiÚ + + $g‘AndCheck +( +$moduË +, +$aùiÚ +, +$u¾ + = +nuÎ +, +$code + = 200) + +199  +$this +-> + +200 + `g‘ +( +nuÎ + !=ð +$u¾ + ? $u¾ : + `¥rštf +('/%s/%s', +$moduË +, +$aùiÚ +))-> + +201 + `w™h +('»que¡')-> + `begš +()-> + +202 + `isP¬am‘” +('moduË', +$moduË +)-> + +203 + `isP¬am‘” +('aùiÚ', +$aùiÚ +)-> + +204 + `’d +()-> + +205 + `w™h +('»¥Ú£')-> + `isStusCode +( +$code +) + +207 + } +} + +218 +public + +funùiÚ + +po¡ +( +$uri +, +$·¿m‘”s + = +¬¿y +(), +$chªgeSck + = +Œue +) + +220  +$this +-> +ÿÎ +( +$uri +, 'po¡', +$·¿m‘”s +, +$chªgeSck +); + +233 +public + +funùiÚ + +ÿÎ +( +$uri +, +$m‘hod + = 'g‘', +$·¿m‘”s + = +¬¿y +(), +$chªgeSck + = +Œue +) + +235 +$this +-> +checkCu¼’tExû±iÚIsEm±y +(); + +237 + g$uri + = +$this +-> +brow£r +-> +fixUri +( +$uri +); + +239 + g$this +-> +‹¡ +()-> +comm’t +( +¥rštf +('% %s', +¡¹Þow” +( +$m‘hod +), +$uri +)); + +241 +fܗch + ( +$this +-> +‹¡”s + +as + +$‹¡” +) + +243 + g$‹¡” +-> +´•¬e +(); + +246 + g$this +-> + gbrow£r +-> +ÿÎ +( +$uri +, +$m‘hod +, +$·¿m‘”s +, +$chªgeSck +); + +248  + g$this +; + +258 +public + +funùiÚ + + $de£Ëù +( +$Çme +) + +260 +$this +-> +brow£r +-> + `doS–eù +( +$Çme +, +çl£ +); + +262  +$this +; + +263 + } +} + +272 +public + +funùiÚ + + $£Ëù +( +$Çme +) + +274 +$this +-> +brow£r +-> + `doS–eù +( +$Çme +, +Œue +); + +276  +$this +; + +277 + } +} + +288 +public + +funùiÚ + +þick +( +$Çme +, +$¬gum’ts + = +¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +290 ià( +$Çme + +š¡ªûof + +DOMEËm’t +) + +292 + `li¡ +( +$uri +, +$m‘hod +, +$·¿m‘”s +èð +$this +-> + `doClickEËm’t +( +$Çme +, +$¬gum’ts +, +$ÝtiÚs +); + +296 +Œy + + +298 + `li¡ +( +$uri +, +$m‘hod +, +$·¿m‘”s +èð +$this +-> + `doClick +( +$Çme +, +$¬gum’ts +, +$ÝtiÚs +); + +300 + `ÿtch + ( +Inv®idArgum’tExû±iÚ + +$e +) + +302 + `li¡ +( +$uri +, +$m‘hod +, +$·¿m‘”s +èð +$this +-> + `doClickCssS–eùÜ +( +$Çme +, +$¬gum’ts +, +$ÝtiÚs +); + +306  +$this +-> + `ÿÎ +( +$uri +, +$m‘hod +, +$·¿m‘”s +); + +307 + } +} + +314 +public + +funùiÚ + + $back +() + +316 +$this +-> + `‹¡ +()-> + `comm’t +('back'); + +318 +$this +-> +brow£r +-> + `back +(); + +320  +$this +; + +321 + } +} + +328 +public + +funùiÚ + + $fÜw¬d +() + +330 +$this +-> + `‹¡ +()-> + `comm’t +('forward'); + +332 +$this +-> +brow£r +-> + `fÜw¬d +(); + +334  +$this +; + +335 + } +} + +344 +public + +funùiÚ + + $šfo +( +$mes§ge +) + +346 +$this +-> + `‹¡ +()-> + `šfo +( +$mes§ge +); + +348  +$this +; + +349 + } +} + +359 +public + +funùiÚ + + $check +( +$uri +, +$‹xt + = +nuÎ +) + +361 +$this +-> + `g‘ +( +$uri +)-> + `w™h +('»¥Ú£')-> + `isStusCode +(); + +363 ià( +$‹xt + !=ð +nuÎ +) + +365 +$this +-> + `w™h +('»¥Ú£')-> + `cڏšs +( +$‹xt +); + +368  +$this +; + +369 + } +} + +379 +public + +funùiÚ + + $throwsExû±iÚ +( +$þass + = +nuÎ +, +$mes§ge + =‚ull) + +381 +$e + = +$this +-> +brow£r +-> + `g‘Cu¼’tExû±iÚ +(); + +383 ià( +nuÎ + ==ð +$e +) + +385 +$this +-> + `‹¡ +()-> + `çž +('response„eturns‡nƒxception'); + +389 ià( +nuÎ + !=ð +$þass +) + +391 +$this +-> + `‹¡ +()-> + `ok +( +$e + +š¡ªûof + +$þass +, + `¥rštf +('response„eturns‡nƒxception of class "%s"', $class)); + +394 ià( +nuÎ + !=ð +$mes§ge + && + `´eg_m©ch +('/^(!)?([^a-zA-Z0-9\\\\]).+?\\2[ims]?$/', $mes§ge, +$m©ch +)) + +396 ià( +$m©ch +[1] == '!') + +398 +$this +-> + `‹¡ +()-> + `uÆike +( +$e +-> + `g‘Mes§ge +(), + `sub¡r +( +$mes§ge +, 1), + `¥rštf +('responseƒxception message does‚ot match„egex "%s"', $message)); + +402 +$this +-> + `‹¡ +()-> + `like +( +$e +-> + `g‘Mes§ge +(), +$mes§ge +, + `¥rštf +('responseƒxception message matches„egex "%s"', $message)); + +405 ià( +nuÎ + !=ð +$mes§ge +) + +407 +$this +-> + `‹¡ +()-> + `is +( +$e +-> + `g‘Mes§ge +(), +$mes§ge +, + `¥rštf +('responseƒxception message is "%s"', $message)); + +411 +$this +-> + `»£tCu¼’tExû±iÚ +(); + +413  +$this +; + +414 + } +} + +421 +public + +funùiÚ + + $checkCu¼’tExû±iÚIsEm±y +() + +423 ià( +çl£ + ==ð( +$em±y + = +$this +-> +brow£r +-> + `checkCu¼’tExû±iÚIsEm±y +())) + +425 +$this +-> + `‹¡ +()-> + `çž +( + `¥rštf +('Ï¡„eque¡h»w‡Àunÿughˆexû±iÚ "%s: %s"', + `g‘_þass +($this-> +brow£r +-> + `g‘Cu¼’tExû±iÚ +()), $this->brow£r->g‘Cu¼’tExû±iÚ()-> + `g‘Mes§ge +())); + +428  +$em±y +; + +429 + } +} + +431 +public + +funùiÚ + + $__ÿÎ +( +$m‘hod +, +$¬gum’ts +) + +433 +$»tv® + = + `ÿÎ_u£r_func_¬¿y +( + `¬¿y +( +$this +-> +brow£r +, +$m‘hod +), +$¬gum’ts +); + +436  +$»tv® + ==ð +$this +-> +brow£r + ? $this : $retval; + +437 + } +} + +447  +public + +funùiÚ + + $hªdËPhpE¼Ü +( +$”ºo +, +$”r¡r +, +$”rfže +, +$”¾še +) + +449 ià(( +$”ºo + & + `”rÜ_»pÜtšg +()) == 0) + +451  +çl£ +; + +454 +$msg + = + `¥rštf +('PHP s’ˆ¨"%%s"ƒ¼Ü‡ˆ% lš% (%s)', +$”rfže +, +$”¾še +, +$”r¡r +); + +455  +$”ºo +) + +457  +E_WARNING +: + +458 +$msg + = + `¥rštf +($msg, 'warning'); + +459 +throw + +Ãw + + `RuÁimeExû±iÚ +( +$msg +); + +461  +E_NOTICE +: + +462 +$msg + = + `¥rštf +($msg, 'notice'); + +463 +throw + +Ãw + + `RuÁimeExû±iÚ +( +$msg +); + +465  +E_STRICT +: + +466 +$msg + = + `¥rštf +($msg, 'strict'); + +467 +throw + +Ãw + + `RuÁimeExû±iÚ +( +$msg +); + +469  +E_RECOVERABLE_ERROR +: + +470 +$msg + = + `¥rštf +($msg, 'catchable'); + +471 +throw + +Ãw + + `RuÁimeExû±iÚ +( +$msg +); + +475  +çl£ +; + +476 + } +} + +483 +funùiÚ + + $hªdËExû±iÚ +( +Exû±iÚ + +$exû±iÚ +) + +485 +$this +-> + `‹¡ +()-> + `”rÜ +( + `¥rštf +('%s: %s', + `g‘_þass +( +$exû±iÚ +), $exû±iÚ-> + `g‘Mes§ge +())); + +487 +$ŒaûD©a + = +$exû±iÚ +-> + `g‘T¿û +(); + +488 + `¬¿y_unshiá +( +$ŒaûD©a +, + `¬¿y +( + +490 'fže' => +$exû±iÚ +-> + `g‘Fže +(è!ð +nuÎ + ? $exception->getFile() : 'n/a', + +491 'lše' => +$exû±iÚ +-> + `g‘Lše +(è!ð +nuÎ + ? $exception->getLine() : 'n/a', + +492 '¬gs' => + `¬¿y +(), + +495 +$Œaûs + = + `¬¿y +(); + +496 +$lšeFÜm© + = '‡t %s%s%s() in %s†ine %s'; + +497  +$i + = 0, +$couÁ + = + `couÁ +( +$ŒaûD©a +); $i < $count; $i++) + +499 +$lše + = + `is£t +( +$ŒaûD©a +[ +$i +]['line']) ? $traceData[$i]['line'] : 'n/a'; + +500 +$fže + = + `is£t +( +$ŒaûD©a +[ +$i +]['file']) ? $traceData[$i]['file'] : 'n/a'; + +501 +$¬gs + = + `is£t +( +$ŒaûD©a +[ +$i +]['¬gs']è? $ŒaûD©a[$i]['¬gs'] : + `¬¿y +(); + +502 +$this +-> + `‹¡ +()-> + `”rÜ +( + `¥rštf +( +$lšeFÜm© +, + +503 ( + `is£t +( +$ŒaûD©a +[ +$i +]['class']) ? $traceData[$i]['class'] : ''), + +504 ( + `is£t +( +$ŒaûD©a +[ +$i +]['type']) ? $traceData[$i]['type'] : ''), + +505 +$ŒaûD©a +[ +$i +]['function'], + +506 +$fže +, + +507 +$lše + + +511 +$this +-> + `‹¡ +()-> + `çž +('An uncaughtƒxception has beenhrown.'); + +512 + } +} + + @lib/vendor/symfony/lib/test/sfTester.class.php + +1 +brow£r + = +$brow£r +; + +35 +$this +-> +‹¡” + = +$‹¡” +; + +41 +ab¡¿ù + +public + +funùiÚ + + `´•¬e +(); + +46 +ab¡¿ù + +public + +funùiÚ + + `š™Ÿlize +(); + +53 +public + +funùiÚ + + $begš +() + +55 +$this +-> +šABlock + = +Œue +; + +57  +$this +-> +brow£r +-> + `begš +(); + +58 + } +} + +65 +public + +funùiÚ + + $’d +() + +67 +$this +-> +šABlock + = +çl£ +; + +69  +$this +-> +brow£r +-> + `’d +(); + +70 + } +} + +77 +public + +funùiÚ + + $g‘ObjeùToR‘uº +() + +79  +$this +-> +šABlock + ? $thi : $this-> +brow£r +; + +80 + } +} + +82 +public + +funùiÚ + + $__ÿÎ +( +$m‘hod +, +$¬gum’ts +) + +84 + `ÿÎ_u£r_func_¬¿y +( + `¬¿y +( +$this +-> +brow£r +, +$m‘hod +), +$¬gum’ts +); + +86  +$this +-> + `g‘ObjeùToR‘uº +(); + +87 + } +} + + @lib/vendor/symfony/lib/test/sfTesterForm.class.php + +1 +brow£r +-> + `addLi¡’” +('‹m¶©e.fž‹r_·¿m‘”s', + `¬¿y +($this, 'filterTemplateParameters')); + +40 +public + +funùiÚ + + $´•¬e +() + +42 +$this +-> +fÜm + = +nuÎ +; + +43 + } +} + +48 +public + +funùiÚ + + $š™Ÿlize +() + +50 ià( +nuÎ + ==ð +$this +-> +fÜm +) + +52 +$aùiÚ + = +$this +-> +brow£r +-> + `g‘Cڋxt +()-> + `g‘AùiÚSck +()-> + `g‘La¡EÁry +()-> + `g‘AùiÚIn¡ªû +(); + +54 + `fܗch + ( +$aùiÚ +-> + `g‘V¬HÞd” +()-> + `g‘AÎ +(è +as + +$Çme + => +$v®ue +) + +56 ià( +$v®ue + +š¡ªûof + +sfFÜm + && $v®ue-> + `isBound +()) + +58 +$this +-> +fÜm + = +$v®ue +; + +63 + } +} + +70 +public + +funùiÚ + + $g‘FÜm +() + +72  +$this +-> +fÜm +; + +73 + } +} + +82 +public + +funùiÚ + + $hasE¼Üs +( +$v®ue + = +Œue +) + +84 ià( +nuÎ + ==ð +$this +-> +fÜm +) + +86 +throw + +Ãw + + `LogicExû±iÚ +('no form has been submitted.'); + +89 ià( + `is_št +( +$v®ue +)) + +91 +$this +-> +‹¡” +-> + `is +( + `couÁ +($this-> +fÜm +-> + `g‘E¼ÜSchema +()), +$v®ue +, + `¥rštf +('the submitted form has "%s"ƒrrors.', $value)); + +95 +$this +-> +‹¡” +-> + `is +($this-> +fÜm +-> + `hasE¼Üs +(), +$v®ue +, + `¥rštf +('the submitted form %s.', ($value) ? 'has someƒrrors' : 'is valid')); + +98  +$this +-> + `g‘ObjeùToR‘uº +(); + +99 + } +} + +108 +public + +funùiÚ + + $hasGlob®E¼Ü +( +$v®ue + = +Œue +) + +110  +$this +-> + `isE¼Ü +( +nuÎ +, +$v®ue +); + +111 + } +} + +121 +public + +funùiÚ + + $isE¼Ü +( +$f›ld +, +$v®ue + = +Œue +) + +123 ià( +nuÎ + ==ð +$this +-> +fÜm +) + +125 +throw + +Ãw + + `LogicExû±iÚ +('no form has been submitted.'); + +128 ià( +nuÎ + ==ð +$f›ld +) + +130 +$”rÜ + = +Ãw + + `sfV®id©ÜE¼ÜSchema +Òew + `sfV®id©ÜPass +(), +$this +-> +fÜm +-> + `g‘Glob®E¼Üs +()); + +134 +$”rÜ + = +$this +-> + `g‘FÜmF›ld +( +$f›ld +)-> + `g‘E¼Ü +(); + +137 ià( +çl£ + ==ð +$v®ue +) + +139 +$this +-> +‹¡” +-> + `ok +(! +$”rÜ + || 0 =ð + `couÁ +($”rÜ), + `¥rštf +('thsubm™‹d fÜm ha nØ"%s"ƒ¼Ü.', +$f›ld +)); + +141 ià( +Œue + ==ð +$v®ue +) + +143 +$this +-> +‹¡” +-> + `ok +( +$”rÜ + && + `couÁ +($”rÜè> 0, + `¥rštf +('thsubm™‹d fÜm ha ¨"%s"ƒ¼Ü.', +$f›ld +)); + +145 ià( + `is_št +( +$v®ue +)) + +147 +$this +-> +‹¡” +-> + `ok +( +$”rÜ + && + `couÁ +($”rÜè=ð +$v®ue +, + `¥rštf +('thsubm™‹d fÜm ha % "%s"ƒ¼Ü(s).', $v®ue, +$f›ld +)); + +149 ià( + `´eg_m©ch +('/^(!)?([^a-zA-Z0-9\\\\]).+?\\2[ims]?$/', +$v®ue +, +$m©ch +)) + +151 ià(! +$”rÜ +) + +153 +$this +-> +‹¡” +-> + `çž +( + `¥rštf +('thsubm™‹d fÜm ha ¨"%s"ƒ¼Ü.', +$f›ld +)); + +157 ià( +$m©ch +[1] == '!') + +159 +$this +-> +‹¡” +-> + `uÆike +( +$”rÜ +-> + `g‘Code +(), + `sub¡r +( +$v®ue +, 1), + `¥rštf +('thsubm™‹d fÜm ha ¨"%s"ƒ¼Üh© dÛ nÙ m©ch "%s".', +$f›ld +, $value)); + +163 +$this +-> +‹¡” +-> + `like +( +$”rÜ +-> + `g‘Code +(), +$v®ue +, + `¥rštf +('thsubm™‹d fÜm ha ¨"%s"ƒ¼Üh© m©che "%s".', +$f›ld +, $value)); + +169 ià(! +$”rÜ +) + +171 +$this +-> +‹¡” +-> + `çž +( + `¥rštf +('thsubm™‹d fÜm ha ¨"%s"ƒ¼Ü (%s).', +$f›ld +, +$v®ue +)); + +175 +$this +-> +‹¡” +-> + `is +( +$”rÜ +-> + `g‘Code +(), +$v®ue +, + `¥rštf +('thsubm™‹d fÜm ha ¨"%s"ƒ¼Ü (%s).', +$f›ld +, $value)); + +179  +$this +-> + `g‘ObjeùToR‘uº +(); + +180 + } +} + +185 +public + +funùiÚ + + $debug +() + +187 ià( +nuÎ + ==ð +$this +-> +fÜm +) + +189 +throw + +Ãw + + `LogicExû±iÚ +('no form has been submitted.'); + +192 +´št + +$this +-> +‹¡” +-> + `”rÜ +('Form debug'); + +194 +´št + + `¥rštf +("Subm™‹d v®ues: %s\n", + `¡r_»¶aû +("\n", '', + `v¬_expÜt +( +$this +-> +fÜm +-> + `g‘Taš‹dV®ues +(), +Œue +))); + +195 +´št + + `¥rštf +("E¼Üs: %s\n", +$this +-> +fÜm +-> + `g‘E¼ÜSchema +()); + +197 + `ex™ +(1); + +198 + } +} + +208 +public + +funùiÚ + + $fž‹rTem¶©eP¬am‘”s +( +sfEv’t + +$ev’t +, +$·¿m‘”s +) + +210 ià(! + `is£t +( +$·¿m‘”s +['sf_type'])) + +212  +$·¿m‘”s +; + +215 ià('aùiÚ' =ð +$·¿m‘”s +['sf_type']) + +217 + `fܗch + ( +$·¿m‘”s + +as + +$key + => +$v®ue +) + +219 ià( +$v®ue + +š¡ªûof + +sfFÜm + && $v®ue-> + `isBound +()) + +221 +$this +-> +fÜm + = +$v®ue +; + +227  +$·¿m‘”s +; + +228 + } +} + +235 +public + +funùiÚ + + $g‘FÜmF›ld +( +$·th +) + +237 ià( +çl£ + !=ð +$pos + = + `¡½os +( +$·th +, '[')) + +239 +$f›ld + = +$this +-> +fÜm +[ + `sub¡r +( +$·th +, 0, +$pos +)]; + +243  +$this +-> +fÜm +[ +$·th +]; + +246 ià( + `´eg_m©ch_®l +('/\[(?P<·¹>[^]]+)\]/', +$·th +, +$m©ches +)) + +248 + `fܗch +( +$m©ches +['·¹'] +as + +$·¹ +) + +250 +$f›ld + = $f›ld[ +$·¹ +]; + +254  +$f›ld +; + +255 + } +} + + @lib/vendor/symfony/lib/test/sfTesterMailer.class.php + +1 +logg” + = $this-> +brow£r +-> + `g‘Cڋxt +()-> + `g‘Maž” +()-> + `g‘Logg” +(); + +39 ià( +$this +-> +logg” +-> + `couÁMes§ges +()) + +41 +$mes§ges + = +$this +-> +logg” +-> + `g‘Mes§ges +(); + +43 +$this +-> +mes§ge + = +$mes§ges +[0]; + +45 + } +} + +54 +public + +funùiÚ + + $hasS’t +( +$nb + = +nuÎ +) + +56 ià( +nuÎ + ==ð +$nb +) + +58 +$this +-> +‹¡” +-> + `ok +($this-> +logg” +-> + `couÁMes§ges +() > 0, 'mailer sent someƒmail(s).'); + +62 +$this +-> +‹¡” +-> + `is +($this-> +logg” +-> + `couÁMes§ges +(), +$nb +, + `¥rštf +('mailer sent %sƒmail(s).', $nb)); + +65  +$this +-> + `g‘ObjeùToR‘uº +(); + +66 + } +} + +71 +public + +funùiÚ + + $debug +() + +73 + `fܗch + ( +$this +-> +logg” +-> + `g‘Mes§ges +(è +as + +$mes§ge +) + +75 +echo + +$mes§ge +-> + `toSŒšg +()."\n\n"; + +78 + `ex™ +(1); + +79 + } +} + +89 +public + +funùiÚ + + $w™hMes§ge +( +$to +, +$pos™iÚ + = 1) + +91 +$mes§geEmaž + = +$to +; + +92 if( + `is_¬¿y +( +$to +)) + +94 +$®Ÿs + = + `cu¼’t +( +$to +); + +95 +$to + = + `key +($to); + +96 +$mes§geEmaž + = + `¥rštf +('% <%s>', +$®Ÿs +, +$to +); + +99 +$m©ches + = 0; + +100 + `fܗch + ( +$this +-> +logg” +-> + `g‘Mes§ges +(è +as + +$mes§ge +) + +102 +$emaž + = +$mes§ge +-> + `g‘To +(); + +103 ià( +$to + =ð + `key +( +$emaž +)) + +105 +$m©ches +++; + +107 ià( +$m©ches + =ð +$pos™iÚ +) + +109 +$this +-> +mes§ge + = +$mes§ge +; + +111 if( + `is£t +( +$®Ÿs +è +AND + $®Ÿ !ð + `cu¼’t +( +$emaž +)) + +116 +$this +-> +‹¡” +-> + `·ss +( + `¥rštf +('sw™ch cڋxˆtØthmes§gnumb” "%s" s’ˆtØ"%s"', +$pos™iÚ +, +$mes§geEmaž +)); + +118  +$this +; + +123 +$this +-> +‹¡” +-> + `çž +( + `¥rštf +('uÇbˁØfšd‡ mes§g£ÁØ"%s"', +$mes§geEmaž +)); + +125  +$this +; + +126 + } +} + +135 +public + +funùiÚ + + $checkBody +( +$v®ue +) + +137 ià(! +$this +-> +mes§ge +) + +139 +$this +-> +‹¡” +-> + `çž +('unableoest‡s‚oƒmail were sent'); + +142 +$body + = +$this +-> +mes§ge +-> + `g‘Body +(); + +143 +$ok + = +çl£ +; + +144 +$»gex + = +çl£ +; + +145 +$mu¡M©ch + = +Œue +; + +146 ià( + `´eg_m©ch +('/^(!)?([^a-zA-Z0-9\\\\]).+?\\2[ims]?$/', +$v®ue +, +$m©ch +)) + +148 +$»gex + = +$v®ue +; + +149 ià( +$m©ch +[1] == '!') + +151 +$mu¡M©ch + = +çl£ +; + +152 +$»gex + = + `sub¡r +( +$v®ue +, 1); + +156 ià( +çl£ + !=ð +$»gex +) + +158 ià( +$mu¡M©ch +) + +160 ià( + `´eg_m©ch +( +$»gex +, +$body +)) + +162 +$ok + = +Œue +; + +163 +$this +-> +‹¡” +-> + `·ss +( + `¥rštf +('emaž body m©che "%s"', +$v®ue +)); + +168 ià( + `´eg_m©ch +( +$»gex +, +$body +)) + +170 +$ok + = +Œue +; + +171 +$this +-> +‹¡” +-> + `çž +( + `¥rštf +('emaž body dÛ nÙ m©ch "%s"', +$v®ue +)); + +175 ià( +$body + =ð +$v®ue +) + +177 +$ok + = +Œue +; + +178 +$this +-> +‹¡” +-> + `·ss +( + `¥rštf +('emaž body i "%s"', +$v®ue +)); + +181 ià(! +$ok +) + +183 ià(! +$mu¡M©ch +) + +185 +$this +-> +‹¡” +-> + `·ss +( + `¥rštf +('emaž body m©che "%s"', +$v®ue +)); + +189 +$this +-> +‹¡” +-> + `çž +( + `¥rštf +('emaž body m©che "%s"', +$v®ue +)); + +193  +$this +-> + `g‘ObjeùToR‘uº +(); + +194 + } +} + +204 +public + +funùiÚ + + $checkH—d” +( +$key +, +$v®ue +) + +206 ià(! +$this +-> +mes§ge +) + +208 +$this +-> +‹¡” +-> + `çž +('unableoest‡s‚oƒmail were sent'); + +211 +$h—d”s + = + `¬¿y +(); + +212 + `fܗch + ( +$this +-> +mes§ge +-> + `g‘H—d”s +()-> + `g‘AÎ +( +$key +è +as + +$h—d” +) + +214 +$h—d”s +[] = +$h—d” +-> + `g‘F›ldBody +(); + +216 +$cu¼’t + = + `im¶ode +(', ', +$h—d”s +); + +217 +$ok + = +çl£ +; + +218 +$»gex + = +çl£ +; + +219 +$mu¡M©ch + = +Œue +; + +220 ià( + `´eg_m©ch +('/^(!)?([^a-zA-Z0-9\\\\]).+?\\2[ims]?$/', +$v®ue +, +$m©ch +)) + +222 +$»gex + = +$v®ue +; + +223 ià( +$m©ch +[1] == '!') + +225 +$mu¡M©ch + = +çl£ +; + +226 +$»gex + = + `sub¡r +( +$v®ue +, 1); + +230 + `fܗch + ( +$h—d”s + +as + +$h—d” +) + +232 ià( +çl£ + !=ð +$»gex +) + +234 ià( +$mu¡M©ch +) + +236 ià( + `´eg_m©ch +( +$»gex +, +$h—d” +)) + +238 +$ok + = +Œue +; + +239 +$this +-> +‹¡” +-> + `·ss +( + `¥rštf +('emaž h—d” "%s" m©che "%s" (%s)', +$key +, +$v®ue +, +$cu¼’t +)); + +245 ià( + `´eg_m©ch +( +$»gex +, +$h—d” +)) + +247 +$ok + = +Œue +; + +248 +$this +-> +‹¡” +-> + `çž +( + `¥rštf +('emaž h—d” "%s" dÛ nÙ m©ch "%s" (%s)', +$key +, +$v®ue +, +$cu¼’t +)); + +253 ià( +$h—d” + =ð +$v®ue +) + +255 +$ok + = +Œue +; + +256 +$this +-> +‹¡” +-> + `·ss +( + `¥rštf +('emaž h—d” "%s" i "%s" (%s)', +$key +, +$v®ue +, +$cu¼’t +)); + +261 ià(! +$ok +) + +263 ià(! +$mu¡M©ch +) + +265 +$this +-> +‹¡” +-> + `·ss +( + `¥rštf +('emaž h—d” "%s" m©che "%s" (%s)', +$key +, +$v®ue +, +$cu¼’t +)); + +269 +$this +-> +‹¡” +-> + `çž +( + `¥rštf +('emaž h—d” "%s" m©che "%s" (%s)', +$key +, +$v®ue +, +$cu¼’t +)); + +273  +$this +-> + `g‘ObjeùToR‘uº +(); + +274 + } +} + + @lib/vendor/symfony/lib/test/sfTesterRequest.class.php + +1 +»que¡ + = $this-> +brow£r +-> + `g‘Reque¡ +(); + +36 + } +} + +46 +public + +funùiÚ + + $isP¬am‘” +( +$key +, +$v®ue +) + +48 +$this +-> +‹¡” +-> + `is +($this-> +»que¡ +-> + `g‘P¬am‘” +( +$key +), +$v®ue +, + `¥rštf +('request…arameter "%s" is "%s"', $key, $value)); + +50  +$this +-> + `g‘ObjeùToR‘uº +(); + +51 + } +} + +60 +public + +funùiÚ + + $isFÜm© +( +$fÜm© +) + +62 +$this +-> +‹¡” +-> + `is +($this-> +»que¡ +-> + `g‘Reque¡FÜm© +(), +$fÜm© +, + `¥rštf +('request format is "%s"', $format)); + +64  +$this +-> + `g‘ObjeùToR‘uº +(); + +65 + } +} + +74 +public + +funùiÚ + + $isM‘hod +( +$m‘hod +) + +76 +$this +-> +‹¡” +-> + `ok +($this-> +»que¡ +-> + `isM‘hod +( +$m‘hod +), + `¥rštf +('»que¡ m‘hod i "%s"', + `¡¹ouµ” +($method))); + +78  +$this +-> + `g‘ObjeùToR‘uº +(); + +79 + } +} + +89 +public + +funùiÚ + + $hasCook› +( +$Çme +, +$exi¡s + = +Œue +) + +91 ià(! + `¬¿y_key_exi¡s +( +$Çme +, +$_COOKIE +)) + +93 ià( +$exi¡s +) + +95 +$this +-> +‹¡” +-> + `çž +( + `¥rštf +('cook› "%s"ƒxi¡s.', +$Çme +)); + +99 +$this +-> +‹¡” +-> + `·ss +( + `¥rštf +('cook› "%s" dÛ nكxi¡.', +$Çme +)); + +102  +$this +-> + `g‘ObjeùToR‘uº +(); + +105 ià( +$exi¡s +) + +107 +$this +-> +‹¡” +-> + `·ss +( + `¥rštf +('cook› "%s"ƒxi¡s.', +$Çme +)); + +111 +$this +-> +‹¡” +-> + `çž +( + `¥rštf +('cook› "%s" dÛ nكxi¡.', +$Çme +)); + +114  +$this +-> + `g‘ObjeùToR‘uº +(); + +115 + } +} + +125 +public + +funùiÚ + + $isCook› +( +$Çme +, +$v®ue +) + +127 ià(! + `¬¿y_key_exi¡s +( +$Çme +, +$_COOKIE +)) + +129 +$this +-> +‹¡” +-> + `çž +( + `¥rštf +('cook› "%s" dÛ nكxi¡.', +$Çme +)); + +131  +$this +-> + `g‘ObjeùToR‘uº +(); + +134 ià( + `´eg_m©ch +('/^(!)?([^a-zA-Z0-9\\\\]).+?\\2[ims]?$/', +$v®ue +, +$m©ch +)) + +136 ià( +$m©ch +[1] == '!') + +138 +$this +-> +‹¡” +-> + `uÆike +( +$_COOKIE +[ +$Çme +], + `sub¡r +( +$v®ue +, 1), + `¥rštf +('cookie "%s" content does‚ot match„egex "%s"', $name, $value)); + +142 +$this +-> +‹¡” +-> + `like +( +$_COOKIE +[ +$Çme +], +$v®ue +, + `¥rštf +('cookie "%s" content matches„egex "%s"', $name, $value)); + +147 +$this +-> +‹¡” +-> + `is +( +$_COOKIE +[ +$Çme +], +$v®ue +, + `¥rštf +('cookie "%s" content is ok', $name)); + +150  +$this +-> + `g‘ObjeùToR‘uº +(); + +151 + } +} + + @lib/vendor/symfony/lib/test/sfTesterResponse.class.php + +1 +»¥Ú£ + = $this-> +brow£r +-> + `g‘Re¥Ú£ +(); + +40 +$this +-> +dom + = +nuÎ +; + +41 +$this +-> +domCssS–eùÜ + = +nuÎ +; + +42 ià( + `´eg_m©ch +('/(x|ht)ml/i', +$this +-> +»¥Ú£ +-> + `g‘CڋÁTy³ +(), +$m©ches +)) + +44 +$this +-> +dom + = +Ãw + + `DOMDocum’t +('1.0', $this-> +»¥Ú£ +-> + `g‘Ch¬£t +()); + +45 +$this +-> +dom +-> +v®id©eOnP¬£ + = +Œue +; + +46 ià('x' =ð +$m©ches +[1]) + +48 @ +$this +-> +dom +-> + `lßdXML +($this-> +»¥Ú£ +-> + `g‘CڋÁ +()); + +52 @ +$this +-> +dom +-> + `lßdHTML +($this-> +»¥Ú£ +-> + `g‘CڋÁ +()); + +54 +$this +-> +domCssS–eùÜ + = +Ãw + + `sfDomCssS–eùÜ +($this-> +dom +); + +56 + } +} + +67 +public + +funùiÚ + +checkEËm’t +( +$£ËùÜ +, +$v®ue + = +Œue +, +$ÝtiÚs + = + $¬¿y +()) + +69 ià( +nuÎ + ==ð +$this +-> +dom +) + +71 +throw + +Ãw + + `LogicExû±iÚ +('The DOM is‚ot‡ccessible becausehe browser„esponse contentype is‚ot HTML.'); + +74 ià( + `is_objeù +( +$£ËùÜ +)) + +76 +$v®ues + = +$£ËùÜ +-> + `g‘V®ues +(); + +80 +$v®ues + = +$this +-> +domCssS–eùÜ +-> + `m©chAÎ +( +$£ËùÜ +)-> + `g‘V®ues +(); + +83 ià( +çl£ + ==ð +$v®ue +) + +85 +$this +-> +‹¡” +-> + `is +( + `couÁ +( +$v®ues +), 0, + `¥rštf +('»¥Ú£ s–eùÜ "%s" dÛ nكxi¡', +$£ËùÜ +)); + +87 ià( +Œue + ==ð +$v®ue +) + +89 +$this +-> +‹¡” +-> + `cmp_ok +( + `couÁ +( +$v®ues +), '>', 0, + `¥rštf +('»¥Ú£ s–eùÜ "%s"ƒxi¡s', +$£ËùÜ +)); + +91 ià( + `is_št +( +$v®ue +)) + +93 +$this +-> +‹¡” +-> + `is +( + `couÁ +( +$v®ues +), +$v®ue +, + `¥rštf +('»¥Ú£ s–eùÜ "%s" m©che "%s"imes', +$£ËùÜ +, $value)); + +95 ià( + `´eg_m©ch +('/^(!)?([^a-zA-Z0-9\\\\]).+?\\2[ims]?$/', +$v®ue +, +$m©ch +)) + +97 +$pos™iÚ + = + `is£t +( +$ÝtiÚs +['position']) ? $options['position'] : 0; + +98 ià( +$m©ch +[1] == '!') + +100 +$this +-> +‹¡” +-> + `uÆike +(@ +$v®ues +[ +$pos™iÚ +], + `sub¡r +( +$v®ue +, 1), + `¥rštf +('»¥Ú£ s–eùÜ "%s" dÛ nÙ m©ch„egex "%s"', +$£ËùÜ +, substr($value, 1))); + +104 +$this +-> +‹¡” +-> + `like +(@ +$v®ues +[ +$pos™iÚ +], +$v®ue +, + `¥rštf +('»¥Ú£ s–eùÜ "%s" m©che »gex "%s"', +$£ËùÜ +, $value)); + +109 +$pos™iÚ + = + `is£t +( +$ÝtiÚs +['position']) ? $options['position'] : 0; + +110 +$this +-> +‹¡” +-> + `is +(@ +$v®ues +[ +$pos™iÚ +], +$v®ue +, + `¥rštf +('»¥Ú£ s–eùÜ "%s" m©che "%s"', +$£ËùÜ +, $value)); + +113 ià( + `is£t +( +$ÝtiÚs +['count'])) + +115 +$this +-> +‹¡” +-> + `is +( + `couÁ +( +$v®ues +), +$ÝtiÚs +['couÁ'], + `¥rštf +('»¥Ú£ s–eùÜ "%s" m©che "%s"imes', +$£ËùÜ +, $options['count'])); + +118  +$this +-> + `g‘ObjeùToR‘uº +(); + +119 + } +} + +129 +public + +funùiÚ + +checkFÜm +( +$fÜm +, +$£ËùÜ + = 'form') + +131 ià(! +$fÜm + +š¡ªûof + +sfFÜm +) + +133 +$fÜm + = +Ãw + $form(); + +136 + g$»nd”ed + = +¬¿y +(); + +137 +fܗch + ( +$this +-> +domCssS–eùÜ +-> +m©chAÎ +( +¥rštf +('%1$ šput, %1$ ‹x»a, %1$ £Ëù', +$£ËùÜ +))-> +g‘Nodes +(è +as + +$–em’t +) + +139 + g$»nd”ed +[] = +$–em’t +-> +g‘A‰ribu‹ +('name'); + +142 +fܗch + ( +$fÜm + +as + +$f›ld + => +$widg‘ +) + +144 +$dom + = +Ãw + +DOMDocum’t +('1.0', +sfCÚfig +:: +g‘ +('sf_charset')); + +145 + g$dom +-> +lßdHTML +(( +¡ršg +è +$widg‘ +); + +147 +fܗch + ( +$dom +-> +g‘EËm’tsByTagName +('*'è +as + +$–em’t +) + +149 ià( +š_¬¿y +( +$–em’t +-> +gName +, +¬¿y +('input', 'select', 'textarea'))) + +151 ià( + gçl£ + !=ð +$pos + = +¬¿y_£¬ch +( +$–em’t +-> +g‘A‰ribu‹ +('Çme'), +$»nd”ed +)) + +153 +un£t +( +$»nd”ed +[ +$pos +]); + +156 + g$this +-> + g‹¡” +-> +ok +( +çl£ + !=ð +$pos +, +¥rštf +('»¥Ú£ inþude "%s" fÜm "%s" f›ld - "% %s[Çme=%s]"', +g‘_þass +( +$fÜm +), +$f›ld +, +$£ËùÜ +, +$–em’t +-> +gName +, $–em’t-> +g‘A‰ribu‹ +('name'))); + +161  + g$this +-> +g‘ObjeùToR‘uº +(); + +174 +public + +funùiÚ + + $isV®id +( +$checkDTD + = +çl£ +) + +176 ià( + `´eg_m©ch +('/(x|ht)ml/i', +$this +-> +»¥Ú£ +-> + `g‘CڋÁTy³ +())) + +178 +$»v”t + = + `libxml_u£_š‹º®_”rÜs +( +Œue +); + +180 +$dom + = +Ãw + + `DOMDocum’t +('1.0', +$this +-> +»¥Ú£ +-> + `g‘Ch¬£t +()); + +181 +$cڋÁ + = +$this +-> +»¥Ú£ +-> + `g‘CڋÁ +(); + +183 ià( +Œue + ==ð +$checkDTD +) + +185 +$ÿche + = +sfCÚfig +:: + `g‘ +('sf_cache_dir').'/sf_tester_response/w3'; + +186 ià( +$ÿche +[1] == ':') + +195 +$loÿl + = 'fže://'. + `sub¡r +( + `¡r_»¶aû +( +DIRECTORY_SEPARATOR +, '/', +$ÿche +), 2); + +199 +$loÿl + = 'fže://'. +$ÿche +; + +202 ià(! + `fže_exi¡s +( +$ÿche +.'/TR/xhtml11/DTD/xhtml11.dtd')) + +204 +$fžesy¡em + = +Ãw + + `sfFžesy¡em +(); + +206 +$fšd” + = +sfFšd” +:: + `ty³ +('ªy')-> + `disÿrd +('.sf'); + +207 +$fžesy¡em +-> + `mœrÜ +( + `dœÇme +( +__FILE__ +).'/w3', +$ÿche +, +$fšd” +); + +209 +$fšd” + = +sfFšd” +:: + `ty³ +('file'); + +210 +$fžesy¡em +-> + `»¶aûTok’s +( +$fšd” +-> + `š +( +$ÿche +), '##', '##', + `¬¿y +('LOCAL_W3' => +$loÿl +)); + +213 +$cڋÁ + = + `´eg_»¶aû +('#(]+")h‰p://www.w3.Üg(.*")#i', '\\1'. +$loÿl +.'\\2', $content); + +214 +$dom +-> +v®id©eOnP¬£ + = +$checkDTD +; + +217 +$dom +-> + `lßdXML +( +$cڋÁ +); + +219  + `·thšfo +( +$checkDTD +, +PATHINFO_EXTENSION +)) + +222 +$dom +-> + `schemaV®id©e +( +$checkDTD +); + +223 +$mes§ge + = + `¥rštf +('»¥Ú£ v®id©e ³¸XSD schem¨"%s"', + `ba£Çme +( +$checkDTD +)); + +227 +$dom +-> + `»ÏxNGV®id©e +( +$checkDTD +); + +228 +$mes§ge + = + `¥rštf +('»¥Ú£ v®id©e ³¸»ÏxNG schem¨"%s"', + `ba£Çme +( +$checkDTD +)); + +231 +$mes§ge + = +$dom +-> +v®id©eOnP¬£ + ? + `¥rštf +('»¥Ú£ v®id©e a "%s"', $dom-> +doùy³ +-> +Çme +) : 'response is well-formed "xml"'; + +234 ià( + `couÁ +( +$”rÜs + = + `libxml_g‘_”rÜs +())) + +236 +$lšes + = + `ex¶ode +( +PHP_EOL +, +$this +-> +»¥Ú£ +-> + `g‘CڋÁ +()); + +238 +$this +-> +‹¡” +-> + `çž +( +$mes§ge +); + +239 + `fܗch + ( +$”rÜs + +as + +$”rÜ +) + +241 +$this +-> +‹¡” +-> + `dŸg +(' '. + `Œim +( +$”rÜ +-> +mes§ge +)); + +242 ià( + `´eg_m©ch +('/lš(\d+)/', +$”rÜ +-> +mes§ge +, +$m©ch +è&& $”rÜ-> +lše + != $match[1]) + +244 +$this +-> +‹¡” +-> + `dŸg +(' '. + `¡r_·d +( +$m©ch +[1].':', 6). + `Œim +( +$lšes +[$match[1] - 1])); + +246 +$this +-> +‹¡” +-> + `dŸg +(' '. + `¡r_·d +( +$”rÜ +-> +lše +.':', 6). + `Œim +( +$lšes +[$error->line - 1])); + +251 +$this +-> +‹¡” +-> + `·ss +( +$mes§ge +); + +254 + `libxml_u£_š‹º®_”rÜs +( +$»v”t +); + +258 +throw + +Ãw + + `LogicExû±iÚ +( + `¥rštf +('UÇbˁØv®id©»¥Ú£ oàcڋÁy³ "%s"', +$this +-> +»¥Ú£ +-> + `g‘CڋÁTy³ +())); + +261  +$this +-> + `g‘ObjeùToR‘uº +(); + +262 + } +} + +272 +public + +funùiÚ + + $isH—d” +( +$key +, +$v®ue +) + +274 +$h—d”s + = + `ex¶ode +(', ', +$this +-> +»¥Ú£ +-> + `g‘H‰pH—d” +( +$key +)); + +275 +$ok + = +çl£ +; + +276 +$»gex + = +çl£ +; + +277 +$mu¡M©ch + = +Œue +; + +278 ià( + `´eg_m©ch +('/^(!)?([^a-zA-Z0-9\\\\]).+?\\2[ims]?$/', +$v®ue +, +$m©ch +)) + +280 +$»gex + = +$v®ue +; + +281 ià( +$m©ch +[1] == '!') + +283 +$mu¡M©ch + = +çl£ +; + +284 +$»gex + = + `sub¡r +( +$v®ue +, 1); + +288 + `fܗch + ( +$h—d”s + +as + +$h—d” +) + +290 ià( +çl£ + !=ð +$»gex +) + +292 ià( +$mu¡M©ch +) + +294 ià( + `´eg_m©ch +( +$»gex +, +$h—d” +)) + +296 +$ok + = +Œue +; + +297 +$this +-> +‹¡” +-> + `·ss +( + `¥rštf +('»¥Ú£ h—d” "%s" m©che "%s" (%s)', +$key +, +$v®ue +, $this-> +»¥Ú£ +-> + `g‘H‰pH—d” +($key))); + +303 ià( + `´eg_m©ch +( +$»gex +, +$h—d” +)) + +305 +$ok + = +Œue +; + +306 +$this +-> +‹¡” +-> + `çž +( + `¥rštf +('»¥Ú£ h—d” "%s" dÛ nÙ m©ch "%s" (%s)', +$key +, +$v®ue +, $this-> +»¥Ú£ +-> + `g‘H‰pH—d” +($key))); + +311 ià( +$h—d” + =ð +$v®ue +) + +313 +$ok + = +Œue +; + +314 +$this +-> +‹¡” +-> + `·ss +( + `¥rštf +('»¥Ú£ h—d” "%s" i "%s" (%s)', +$key +, +$v®ue +, $this-> +»¥Ú£ +-> + `g‘H‰pH—d” +($key))); + +319 ià(! +$ok +) + +321 ià(! +$mu¡M©ch +) + +323 +$this +-> +‹¡” +-> + `·ss +( + `¥rštf +('»¥Ú£ h—d” "%s" m©che "%s" (%s)', +$key +, +$v®ue +, $this-> +»¥Ú£ +-> + `g‘H‰pH—d” +($key))); + +327 +$this +-> +‹¡” +-> + `çž +( + `¥rštf +('»¥Ú£ h—d” "%s" m©che "%s" (%s)', +$key +, +$v®ue +, $this-> +»¥Ú£ +-> + `g‘H‰pH—d” +($key))); + +331  +$this +-> + `g‘ObjeùToR‘uº +(); + +332 + } +} + +343 +public + +funùiÚ + +£tsCook› +( +$Çme +, +$v®ue + = +nuÎ +, +$©Œibu‹s + = + $¬¿y +()) + +345 + `fܗch + ( +$this +-> +»¥Ú£ +-> + `g‘Cook›s +(è +as + +$cook› +) + +347 ià( +$Çme + =ð +$cook› +['name']) + +349 ià( +nuÎ + ==ð +$v®ue +) + +351 +$this +-> +‹¡” +-> + `·ss +( + `¥rštf +('»¥Ú£ s‘ cook› "%s"', +$Çme +)); + +355 +$this +-> +‹¡” +-> + `ok +( +$v®ue + =ð +$cook› +['v®ue'], + `¥rštf +('»¥Ú£ s‘ cook› "%s"Ø"%s"', +$Çme +, $value)); + +358 + `fܗch + ( +$©Œibu‹s + +as + +$©Œibu‹Name + => +$©Œibu‹V®ue +) + +360 ià(! + `¬¿y_key_exi¡s +( +$©Œibu‹Name +, +$cook› +)) + +362 +throw + +Ãw + + `LogicExû±iÚ +( + `¥rštf +('Thcook›‡‰ribu‹ "%s" i nÙ v®id.', +$©Œibu‹Name +)); + +365 +$this +-> +‹¡” +-> + `is +( +$cook› +[ +$©Œibu‹Name +], +$©Œibu‹V®ue +, + `¥rštf +('"%s" cook› "%s"‡‰ribu‹ i "%s"', +$Çme +, $attributeName, $attributeValue)); + +368  +$this +-> + `g‘ObjeùToR‘uº +(); + +372 +$this +-> +‹¡” +-> + `çž +( + `¥rštf +('»¥Ú£ s‘ cook› "%s"', +$Çme +)); + +374  +$this +-> + `g‘ObjeùToR‘uº +(); + +375 + } +} + +384 +public + +funùiÚ + + $m©ches +( +$»gex +) + +386 ià(! + `´eg_m©ch +('/^(!)?([^a-zA-Z0-9\\\\]).+?\\2[ims]?$/', +$»gex +, +$m©ch +)) + +388 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('"%s" i nه v®id„eguϸex´essiÚ.', +$»gex +)); + +391 ià( +$m©ch +[1] == '!') + +393 +$this +-> +‹¡” +-> + `uÆike +($this-> +»¥Ú£ +-> + `g‘CڋÁ +(), + `sub¡r +( +$»gex +, 1), + `¥rštf +('response content does‚ot match„egex "%s"', substr($regex, 1))); + +397 +$this +-> +‹¡” +-> + `like +($this-> +»¥Ú£ +-> + `g‘CڋÁ +(), +$»gex +, + `¥rštf +('response content matches„egex "%s"', $regex)); + +400  +$this +-> + `g‘ObjeùToR‘uº +(); + +401 + } +} + +410 +public + +funùiÚ + + $isStusCode +( +$¡©usCode + = 200) + +412 +$this +-> +‹¡” +-> + `is +($this-> +»¥Ú£ +-> + `g‘StusCode +(), +$¡©usCode +, + `¥rštf +('status code is "%s"', $statusCode)); + +414  +$this +-> + `g‘ObjeùToR‘uº +(); + +415 + } +} + +424 +public + +funùiÚ + + $isRedœeùed +( +$boޗn + = +Œue +) + +426 ià( +$loÿtiÚ + = +$this +-> +»¥Ú£ +-> + `g‘H‰pH—d” +('location')) + +428 +$boޗn + ? +$this +-> +‹¡” +-> + `·ss +( + `¥rštf +('·g»dœeùedØ"%s"', +$loÿtiÚ +)è: $this->‹¡”-> + `çž +(sprintf('page„edirectedo "%s"', $location)); + +432 +$boޗn + ? +$this +-> +‹¡” +-> + `çž +('·g»dœeùed'è: $this->‹¡”-> + `·ss +('page‚ot„edirected'); + +435  +$this +-> + `g‘ObjeùToR‘uº +(); + +436 + } +} + +444 +public + +funùiÚ + + $debug +( +$»®Ouut + = +çl£ +) + +446 +´št + +$this +-> +‹¡” +-> + `”rÜ +('Response debug'); + +448 ià(! +$»®Ouut + && +nuÎ + !=ð +sfExû±iÚ +:: + `g‘La¡Exû±iÚ +()) + +451 +$this +-> +‹¡” +-> + `comm’t +('WARNING'); + +452 +$this +-> +‹¡” +-> + `comm’t +('Anƒrror occurred when…rocessinghis„equest.'); + +453 +$this +-> +‹¡” +-> + `comm’t +('The„eal„esponse content has been„eplaced withheƒxception messageoƒase debugging.'); + +456 + `´štf +("HTTP/1.X %s\n", +$this +-> +»¥Ú£ +-> + `g‘StusCode +()); + +458 + `fܗch + ( +$this +-> +»¥Ú£ +-> + `g‘H‰pH—d”s +(è +as + +$Çme + => +$v®ue +) + +460 + `´štf +("%s: %s\n", +$Çme +, +$v®ue +); + +463 + `fܗch + ( +$this +-> +»¥Ú£ +-> + `g‘Cook›s +(è +as + +$cook› +) + +465 + `v´štf +("S‘-Cook›: %s=%s; %¥©h=%s%s%s%s\n", + `¬¿y +( + +466 +$cook› +['name'], + +467 +$cook› +['value'], + +468 +nuÎ + ==ð +$cook› +['expœe'] ? '' : + `¥rštf +('expœes=%s; ', + `d©e +('D d-M-Y H:i:s T', $cookie['expire'])), + +469 +$cook› +['path'], + +470 +$cook› +['domaš'] ? + `¥rštf +('; domain=%s', $cookie['domain']) : '', + +471 +$cook› +['secure'] ? '; secure' : '', + +472 +$cook› +['httpOnly'] ? '; HttpOnly' : '', + +476 +echo + "\n"; + +477 ià(! +$»®Ouut + && +nuÎ + !=ð +$exû±iÚ + = +sfExû±iÚ +:: + `g‘La¡Exû±iÚ +()) + +479 +echo + +$exû±iÚ +; + +483 +echo + +$this +-> +»¥Ú£ +-> + `g‘CڋÁ +(); + +485 +echo + "\n"; + +487 + `ex™ +(1); + +488 + } +} + + @lib/vendor/symfony/lib/test/sfTesterUser.class.php + +1 +u£r + = $this-> +brow£r +-> + `g‘U£r +(); + +36 + } +} + +47 +public + +funùiÚ + + $isA‰ribu‹ +( +$key +, +$v®ue +, +$ns + = +nuÎ +) + +49 +$this +-> +‹¡” +-> + `is +($this-> +u£r +-> + `g‘A‰ribu‹ +( +$key +, +nuÎ +, +$ns +), +$v®ue +, + `¥rštf +('user‡ttribute "%s" is "%s"', $key, $value)); + +51  +$this +-> + `g‘ObjeùToR‘uº +(); + +52 + } +} + +62 +public + +funùiÚ + + $isFÏsh +( +$key +, +$v®ue +) + +64 +$this +-> +‹¡” +-> + `is +($this-> +u£r +-> + `g‘FÏsh +( +$key +), +$v®ue +, + `¥rštf +('user flash "%s" is "%s"', $key, $value)); + +66  +$this +-> + `g‘ObjeùToR‘uº +(); + +67 + } +} + +76 +public + +funùiÚ + + $isCuÉu» +( +$cuÉu» +) + +78 +$this +-> +‹¡” +-> + `is +($this-> +u£r +-> + `g‘CuÉu» +(), +$cuÉu» +, + `¥rštf +('user culture is "%s"', $culture)); + +80  +$this +-> + `g‘ObjeùToR‘uº +(); + +81 + } +} + +90 +public + +funùiÚ + + $isAuth’tiÿ‹d +( +$boޗn + = +Œue +) + +92 +$this +-> +‹¡” +-> + `is +($this-> +u£r +-> + `isAuth’tiÿ‹d +(), +$boޗn +, + `¥rštf +('user is %sauthenticated', $boolean ? '' : 'not ')); + +94  +$this +-> + `g‘ObjeùToR‘uº +(); + +95 + } +} + +106 +public + +funùiÚ + + $hasC»d’tŸl +( +$üed’tŸls +, +$boޗn + = +Œue +, +$u£And + =rue) + +108 +$this +-> +‹¡” +-> + `is +($this-> +u£r +-> + `hasC»d’tŸl +( +$üed’tŸls +, +$u£And +), +$boޗn +, + `¥rštf +('user has %sthe„ight credentials', $boolean ? '' : 'not ')); + +110  +$this +-> + `g‘ObjeùToR‘uº +(); + +111 + } +} + + @lib/vendor/symfony/lib/test/sfTesterViewCache.class.php + +1 +v›wCacheMªag” + = $this-> +brow£r +-> + `g‘Cڋxt +()-> + `g‘V›wCacheMªag” +(); + +39 +$this +-> +routšg + = $this-> +brow£r +-> + `g‘Cڋxt +()-> + `g‘Routšg +(); + +40 +$this +-> +»¥Ú£ + = $this-> +brow£r +-> + `g‘Re¥Ú£ +(); + +41 + } +} + +51 +public + +funùiÚ + + $isCached +( +$boޗn +, +$w™h_Ïyout + = +çl£ +) + +53  +$this +-> + `isUriCached +($this-> +v›wCacheMªag” +-> + `g‘Cu¼’tCacheKey +(), +$boޗn +, +$w™h_Ïyout +); + +54 + } +} + +65 +public + +funùiÚ + + $isUriCached +( +$uri +, +$boޗn +, +$w™h_Ïyout + = +çl£ +) + +67 +$ÿcheMªag” + = +$this +-> +v›wCacheMªag” +; + +70 ià(! +$ÿcheMªag” +) + +72 +$this +-> +‹¡” +-> + `ok +(! +$boޗn +, 'cache is disabled'); + +74  +$this +-> + `g‘ObjeùToR‘uº +(); + +77 ià( +$uri + =ð +$this +-> +v›wCacheMªag” +-> + `g‘Cu¼’tCacheKey +()) + +79 +$maš + = +Œue +; + +80 +$ty³ + = +$w™h_Ïyout + ? 'page' : 'action'; + +84 +$maš + = +çl£ +; + +85 +$ty³ + = +$uri +; + +89 ià( +$ÿcheMªag” +-> + `w™hLayout +( +$uri +è&& ! +$w™h_Ïyout +) + +91 +$this +-> +‹¡” +-> + `çž +('cache without†ayout'); + +92 +$this +-> +‹¡” +-> + `sk +('cache is‚ot configured…roperly', 2); + +94 ià(! +$ÿcheMªag” +-> + `w™hLayout +( +$uri +è&& +$w™h_Ïyout +) + +96 +$this +-> +‹¡” +-> + `çž +('cache with†ayout'); + +97 +$this +-> +‹¡” +-> + `sk +('cache is‚ot configured…roperly', 2); + +101 +$this +-> +‹¡” +-> + `·ss +('cache is configured…roperly'); + +104 +$»t + = +$this +-> +‹¡” +-> + `is +( +$ÿcheMªag” +-> + `has +( +$uri +), +$boޗn +, + `¥rštf +('"%s" % š cache', +$ty³ +, $boolean ? 'is' : 'is‚ot')); + +107 ià( +$boޗn +) + +109 ià(! +$»t +) + +111 +$this +-> +‹¡” +-> + `çž +('content in cache is ok'); + +113 ià( +$w™h_Ïyout +) + +115 +$»¥Ú£ + = + `un£rŸlize +( +$ÿcheMªag” +-> + `g‘ +( +$uri +)); + +116 +$cڋÁ + = +$»¥Ú£ +-> + `g‘CڋÁ +(); + +117 +$this +-> +‹¡” +-> + `ok +( +$cڋÁ + =ð$this-> +»¥Ú£ +-> + `g‘CڋÁ +(), 'content in cache is ok'); + +121 +$»t + = + `un£rŸlize +( +$ÿcheMªag” +-> + `g‘ +( +$uri +)); + +122 +$cڋÁ + = +$»t +['content']; + +123 +$this +-> +‹¡” +-> + `ok +( +çl£ + !=ð + `¡½os +($this-> +»¥Ú£ +-> + `g‘CڋÁ +(), +$cڋÁ +), 'content in cache is ok'); + +128  +$this +-> + `g‘ObjeùToR‘uº +(); + +129 + } +} + + @lib/vendor/symfony/lib/user/sfBasicSecurityUser.class.php + +1 +üed’tŸls + = + `¬¿y +(); + +48 +public + +funùiÚ + + $g‘C»d’tŸls +() + +50  +$this +-> +üed’tŸls +; + +51 + } +} + +58 +public + +funùiÚ + + $»moveC»d’tŸl +( +$üed’tŸl +) + +60 ià( +$this +-> + `hasC»d’tŸl +( +$üed’tŸl +)) + +62 + `fܗch + ( +$this +-> +üed’tŸls + +as + +$key + => +$v®ue +) + +64 ià( +$üed’tŸl + =ð +$v®ue +) + +66 ià( +$this +-> +ÝtiÚs +['logging']) + +68 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, '­¶iÿtiÚ.log', + `¬¿y +( + `¥rštf +('Removüed’tŸÈ"%s"', +$üed’tŸl +)))); + +71 + `un£t +( +$this +-> +üed’tŸls +[ +$key +]); + +73 +$this +-> +¡Üage +-> + `»g’”©e +( +çl£ +); + +79 + } +} + +86 +public + +funùiÚ + + $addC»d’tŸl +( +$üed’tŸl +) + +88 +$this +-> + `addC»d’tŸls +( + `func_g‘_¬gs +()); + +89 + } +} + +96 +public + +funùiÚ + + $addC»d’tŸls +() + +98 ià( + `func_num_¬gs +() == 0) ; + +101 +$üed’tŸls + = ( + `is_¬¿y +( + `func_g‘_¬g +(0))è? func_g‘_¬g(0è: + `func_g‘_¬gs +(); + +103 ià( +$this +-> +ÝtiÚs +['logging']) + +105 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, '­¶iÿtiÚ.log', + `¬¿y +( + `¥rštf +('Add c»d’tŸl(sè"%s"', + `im¶ode +(', ', +$üed’tŸls +))))); + +108 +$added + = +çl£ +; + +109 + `fܗch + ( +$üed’tŸls + +as + +$aC»d’tŸl +) + +111 ià(! + `š_¬¿y +( +$aC»d’tŸl +, +$this +-> +üed’tŸls +)) + +113 +$added + = +Œue +; + +114 +$this +-> +üed’tŸls +[] = +$aC»d’tŸl +; + +118 ià( +$added +) + +120 +$this +-> +¡Üage +-> + `»g’”©e +( +çl£ +); + +122 + } +} + +133 +public + +funùiÚ + + $hasC»d’tŸl +( +$üed’tŸls +, +$u£And + = +Œue +) + +135 ià( +nuÎ + ==ð +$this +-> +üed’tŸls +) + +137  +çl£ +; + +140 ià(! + `is_¬¿y +( +$üed’tŸls +)) + +142  + `š_¬¿y +( +$üed’tŸls +, +$this +-> +üed’tŸls +); + +146 +$‹¡ + = +çl£ +; + +148 + `fܗch + ( +$üed’tŸls + +as + +$üed’tŸl +) + +151 +$‹¡ + = +$this +-> + `hasC»d’tŸl +( +$üed’tŸl +, +$u£And + ? +çl£ + : +Œue +); + +153 ià( +$u£And +) + +155 +$‹¡ + = $‹¡ ? +çl£ + : +Œue +; + +158 ià( +$‹¡ +) + +164 ià( +$u£And +) + +166 +$‹¡ + = $‹¡ ? +çl£ + : +Œue +; + +169  +$‹¡ +; + +170 + } +} + +177 +public + +funùiÚ + + $isAuth’tiÿ‹d +() + +179  +$this +-> +auth’tiÿ‹d +; + +180 + } +} + +187 +public + +funùiÚ + + $£tAuth’tiÿ‹d +( +$auth’tiÿ‹d +) + +189 ià( +$this +-> +ÝtiÚs +['logging']) + +191 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, '­¶iÿtiÚ.log', + `¬¿y +( + `¥rštf +('U£¸i %§uth’tiÿ‹d', +$auth’tiÿ‹d + ==ð +Œue + ? '' : 'not ')))); + +194 ià(( +boÞ +è +$auth’tiÿ‹d + !=ð +$this +-> +auth’tiÿ‹d +) + +196 ià( +$auth’tiÿ‹d + ==ð +Œue +) + +198 +$this +-> +auth’tiÿ‹d + = +Œue +; + +202 +$this +-> +auth’tiÿ‹d + = +çl£ +; + +203 +$this +-> + `þ—rC»d’tŸls +(); + +206 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, 'u£r.chªge_auth’tiÿtiÚ', + `¬¿y +('auth’tiÿ‹d' => $this-> +auth’tiÿ‹d +))); + +208 +$this +-> +¡Üage +-> + `»g’”©e +( +çl£ +); + +210 + } +} + +212 +public + +funùiÚ + + $£tTimedOut +() + +214 +$this +-> +timedout + = +Œue +; + +215 + } +} + +217 +public + +funùiÚ + + $isTimedOut +() + +219  +$this +-> +timedout +; + +220 + } +} + +227 +public + +funùiÚ + + $g‘La¡Reque¡Time +() + +229  +$this +-> +Ï¡Reque¡ +; + +230 + } +} + +244 +public + +funùiÚ + +š™Ÿlize +( +sfEv’tDi¥©ch” + +$di¥©ch” +, +sfStÜage + +$¡Üage +, +$ÝtiÚs + = + $¬¿y +()) + +247 +·»Á +:: + `š™Ÿlize +( +$di¥©ch” +, +$¡Üage +, +$ÝtiÚs +); + +249 ià(! + `¬¿y_key_exi¡s +('timeout', +$this +-> +ÝtiÚs +)) + +251 +$this +-> +ÝtiÚs +['timeout'] = 1800; + +255 ià( + `ši_g‘ +('£ssiÚ.gc_maxliãtime'è< +$this +-> +ÝtiÚs +['timeout']) + +257 + `ši_£t +('£ssiÚ.gc_maxliãtime', +$this +-> +ÝtiÚs +['timeout']); + +261 +$this +-> +auth’tiÿ‹d + = +$¡Üage +-> + `»ad +( +£lf +:: +AUTH_NAMESPACE +); + +262 +$this +-> +üed’tŸls + = +$¡Üage +-> + `»ad +( +£lf +:: +CREDENTIAL_NAMESPACE +); + +263 +$this +-> +Ï¡Reque¡ + = +$¡Üage +-> + `»ad +( +£lf +:: +LAST_REQUEST_NAMESPACE +); + +265 ià( +nuÎ + ==ð +$this +-> +auth’tiÿ‹d +) + +267 +$this +-> +auth’tiÿ‹d + = +çl£ +; + +268 +$this +-> +üed’tŸls + = + `¬¿y +(); + +273 +$timeout + = +$this +-> +ÝtiÚs +['timeout']; + +274 ià( +çl£ + !=ð +$timeout + && +nuÎ + !=ð +$this +-> +Ï¡Reque¡ + && + `time +() - $this->lastRequest >= $timeout) + +276 ià( +$this +-> +ÝtiÚs +['logging']) + +278 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, '­¶iÿtiÚ.log', + `¬¿y +('Automatic user†ogout dueoimeout'))); + +281 +$this +-> + `£tTimedOut +(); + +282 +$this +-> + `£tAuth’tiÿ‹d +( +çl£ +); + +286 +$this +-> +Ï¡Reque¡ + = + `time +(); + +287 + } +} + +289 +public + +funùiÚ + + $shutdown +() + +292 +$this +-> +¡Üage +-> + `wr™e +( +£lf +:: +LAST_REQUEST_NAMESPACE +, $this-> +Ï¡Reque¡ +); + +294 +$this +-> +¡Üage +-> + `wr™e +( +£lf +:: +AUTH_NAMESPACE +, $this-> +auth’tiÿ‹d +); + +295 +$this +-> +¡Üage +-> + `wr™e +( +£lf +:: +CREDENTIAL_NAMESPACE +, $this-> +üed’tŸls +); + +298 +·»Á +:: + `shutdown +(); + +299 + } +} + + @lib/vendor/symfony/lib/user/sfSecurityUser.class.php + +1 + `š™Ÿlize +( +$di¥©ch” +, +$¡Üage +, +$ÝtiÚs +); + +50 ià( +$this +-> +ÝtiÚs +['auto_shutdown']) + +52 + `»gi¡”_shutdown_funùiÚ +( + `¬¿y +( +$this +, 'shutdown')); + +73 +public + +funùiÚ + + `š™Ÿlize +( +sfEv’tDi¥©ch” + +$di¥©ch” +, +sfStÜage + +$¡Üage +, +$ÝtiÚs + = + $¬¿y +()) + +75 +$this +-> +di¥©ch” + = +$di¥©ch” +; + +76 +$this +-> +¡Üage + = +$¡Üage +; + +78 +$this +-> +ÝtiÚs + = + `¬¿y_m”ge +( + `¬¿y +( + +79 'auto_shutdown' => +Œue +, + +80 'cuÉu»' => +nuÎ +, + +82 'u£_æash' => +çl£ +, + +83 'loggšg' => +çl£ +, + +84 ), +$ÝtiÚs +); + +86 +$this +-> +©Œibu‹HÞd” + = +Ãw + + `sfName¥aûdP¬am‘”HÞd” +( +£lf +:: +ATTRIBUTE_NAMESPACE +); + +89 +$©Œibu‹s + = +$¡Üage +-> + `»ad +( +£lf +:: +ATTRIBUTE_NAMESPACE +); + +90 ià( + `is_¬¿y +( +$©Œibu‹s +)) + +92 + `fܗch + ( +$©Œibu‹s + +as + +$Çme¥aû + => +$v®ues +) + +94 +$this +-> +©Œibu‹HÞd” +-> + `add +( +$v®ues +, +$Çme¥aû +); + +102 +$cu¼’tCuÉu» + = +$¡Üage +-> + `»ad +( +£lf +:: +CULTURE_NAMESPACE +); + +103 +$this +-> + `£tCuÉu» +( +nuÎ + !=ð$this-> +ÝtiÚs +['cuÉu»'] ? $this->ÝtiÚs['cuÉu»'] : (nuÎ !=ð +$cu¼’tCuÉu» + ? $currentCulture : $this->options['default_culture'])); + +106 ià( +$this +-> +ÝtiÚs +['u£_æash'] && +$Çmes + = $this-> +©Œibu‹HÞd” +-> + `g‘Names +('symfony/user/sfUser/flash')) + +108 ià( +$this +-> +ÝtiÚs +['logging']) + +110 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, '­¶iÿtiÚ.log', + `¬¿y +( + `¥rštf +('FÏg old fÏsh mes§ge ("%s")', + `im¶ode +('", "', +$Çmes +))))); + +113 + `fܗch + ( +$Çmes + +as + +$Çme +) + +115 +$this +-> +©Œibu‹HÞd” +-> + `£t +( +$Çme +, +Œue +, 'symfony/user/sfUser/flash/remove'); + +118 + } +} + +125 +public + +funùiÚ + + $g‘O±iÚs +() + +127  +$this +-> +ÝtiÚs +; + +128 + } +} + +135 +public + +funùiÚ + + $£tCuÉu» +( +$cuÉu» +) + +137 ià( +$this +-> +cuÉu» + !ð +$cuÉu» +) + +139 +$this +-> +cuÉu» + = +$cuÉu» +; + +141 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, 'u£r.chªge_cuÉu»', + `¬¿y +('cuÉu»' => +$cuÉu» +))); + +143 + } +} + +152 +public + +funùiÚ + + $£tFÏsh +( +$Çme +, +$v®ue +, +$³rsi¡ + = +Œue +) + +154 ià(! +$this +-> +ÝtiÚs +['use_flash']) + +159 +$this +-> + `£tA‰ribu‹ +( +$Çme +, +$v®ue +, 'symfony/user/sfUser/flash'); + +161 ià( +$³rsi¡ +) + +164 +$this +-> +©Œibu‹HÞd” +-> + `»move +( +$Çme +, +nuÎ +, 'symfony/user/sfUser/flash/remove'); + +168 +$this +-> + `£tA‰ribu‹ +( +$Çme +, +Œue +, 'symfony/user/sfUser/flash/remove'); + +170 + } +} + +180 +public + +funùiÚ + + $g‘FÏsh +( +$Çme +, +$deçuÉ + = +nuÎ +) + +182 ià(! +$this +-> +ÝtiÚs +['use_flash']) + +184  +$deçuÉ +; + +187  +$this +-> + `g‘A‰ribu‹ +( +$Çme +, +$deçuÉ +, 'symfony/user/sfUser/flash'); + +188 + } +} + +197 +public + +funùiÚ + + $hasFÏsh +( +$Çme +) + +199 ià(! +$this +-> +ÝtiÚs +['use_flash']) + +201  +çl£ +; + +204  +$this +-> + `hasA‰ribu‹ +( +$Çme +, 'symfony/user/sfUser/flash'); + +205 + } +} + +212 +public + +funùiÚ + + $g‘CuÉu» +() + +214  +$this +-> +cuÉu» +; + +215 + } +} + +224 +public + +funùiÚ + + $off£tExi¡s +( +$Çme +) + +226  +$this +-> + `hasA‰ribu‹ +( +$Çme +); + +227 + } +} + +236 +public + +funùiÚ + + $off£tG‘ +( +$Çme +) + +238  +$this +-> + `g‘A‰ribu‹ +( +$Çme +, +çl£ +); + +239 + } +} + +247 +public + +funùiÚ + + $off£tS‘ +( +$off£t +, +$v®ue +) + +249 +$this +-> + `£tA‰ribu‹ +( +$off£t +, +$v®ue +); + +250 + } +} + +257 +public + +funùiÚ + + $off£tUn£t +( +$off£t +) + +259 +$this +-> + `g‘A‰ribu‹HÞd” +()-> + `»move +( +$off£t +); + +260 + } +} + +262 +public + +funùiÚ + + $g‘A‰ribu‹HÞd” +() + +264  +$this +-> +©Œibu‹HÞd” +; + +265 + } +} + +267 +public + +funùiÚ + + $g‘A‰ribu‹ +( +$Çme +, +$deçuÉ + = +nuÎ +, +$ns + =‚ull) + +269  +$this +-> +©Œibu‹HÞd” +-> + `g‘ +( +$Çme +, +$deçuÉ +, +$ns +); + +270 + } +} + +272 +public + +funùiÚ + + $hasA‰ribu‹ +( +$Çme +, +$ns + = +nuÎ +) + +274  +$this +-> +©Œibu‹HÞd” +-> + `has +( +$Çme +, +$ns +); + +275 + } +} + +277 +public + +funùiÚ + + $£tA‰ribu‹ +( +$Çme +, +$v®ue +, +$ns + = +nuÎ +) + +279  +$this +-> +©Œibu‹HÞd” +-> + `£t +( +$Çme +, +$v®ue +, +$ns +); + +280 + } +} + +285 +public + +funùiÚ + + $shutdown +() + +288 ià( +$this +-> +ÝtiÚs +['u£_æash'] && +$Çmes + = $this-> +©Œibu‹HÞd” +-> + `g‘Names +('symfony/user/sfUser/flash/remove')) + +290 ià( +$this +-> +ÝtiÚs +['logging']) + +292 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, '­¶iÿtiÚ.log', + `¬¿y +( + `¥rštf +('RemovÞd fÏsh mes§ge ("%s")', + `im¶ode +('", "', +$Çmes +))))); + +295 + `fܗch + ( +$Çmes + +as + +$Çme +) + +297 +$this +-> +©Œibu‹HÞd” +-> + `»move +( +$Çme +, +nuÎ +, 'symfony/user/sfUser/flash'); + +298 +$this +-> +©Œibu‹HÞd” +-> + `»move +( +$Çme +, +nuÎ +, 'symfony/user/sfUser/flash/remove'); + +302 +$©Œibu‹s + = + `¬¿y +(); + +303 + `fܗch + ( +$this +-> +©Œibu‹HÞd” +-> + `g‘Name¥aûs +(è +as + +$Çme¥aû +) + +305 +$©Œibu‹s +[ +$Çme¥aû +] = +$this +-> +©Œibu‹HÞd” +-> + `g‘AÎ +($namespace); + +309 +$this +-> +¡Üage +-> + `wr™e +( +£lf +:: +ATTRIBUTE_NAMESPACE +, +$©Œibu‹s +); + +312 +$this +-> +¡Üage +-> + `wr™e +( +£lf +:: +CULTURE_NAMESPACE +, $this-> +cuÉu» +); + +313 + } +} + +325 +public + +funùiÚ + + $__ÿÎ +( +$m‘hod +, +$¬gum’ts +) + +327 +$ev’t + = +$this +-> +di¥©ch” +-> + `nÙifyUÁž +( +Ãw + + `sfEv’t +($this, 'u£r.m‘hod_nÙ_found', + `¬¿y +('m‘hod' => +$m‘hod +, '¬gum’ts' => +$¬gum’ts +))); + +328 ià(! +$ev’t +-> + `isProûs£d +()) + +330 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('C®ÈtØundefšed m‘hod %s::%s.', + `g‘_þass +( +$this +), +$m‘hod +)); + +333  +$ev’t +-> + `g‘R‘uºV®ue +(); + +334 + } +} + + @lib/vendor/symfony/lib/util/sfBrowser.class.php + +1 +cڋxt + = $this-> + `g‘Cڋxt +( +Œue +); + +34 +sfCÚfig +:: + `£t +('sf_‹¡', +Œue +); + +37 +sfCÚfig +:: + `£t +('sf_»nd”šg_fž‹r', + `¬¿y +('sfFakeR’d”šgFž‹r', +nuÎ +)); + +39 +$this +-> + `»£tCu¼’tExû±iÚ +(); + +42 + `ob_¡¬t +(); + +43 +$this +-> +cڋxt +-> + `g‘CڌÞËr +()-> + `di¥©ch +(); + +44 +$»tv® + = + `ob_g‘_þ—n +(); + +47 +$this +-> +cڋxt +-> + `g‘Re¥Ú£ +()-> + `£tCڋÁ +( +$»tv® +); + +50 ià( +$this +-> +cڋxt +-> + `g‘U£r +()) + +52 +$this +-> +cڋxt +-> + `g‘U£r +()-> + `shutdown +(); + +53 +$this +-> +cڋxt +-> + `g‘StÜage +()-> + `shutdown +(); + +64 +public + +funùiÚ + + $g‘Cڋxt +( +$fÜûR–ßd + = +çl£ +) + +66 ià( +nuÎ + ==ð +$this +-> +cڋxt + || +$fÜûR–ßd +) + +68 +$isCڋxtEm±y + = +nuÎ + ==ð +$this +-> +cڋxt +; + +69 +$cڋxt + = +$isCڋxtEm±y + ? +sfCڋxt +:: + `g‘In¡ªû +(è: +$this +-> +cڋxt +; + +72 +$cu¼’tCÚfigu¿tiÚ + = +$cڋxt +-> + `g‘CÚfigu¿tiÚ +(); + +73 +$cÚfigu¿tiÚ + = +ProjeùCÚfigu¿tiÚ +:: + `g‘AµliÿtiÚCÚfigu¿tiÚ +( +$cu¼’tCÚfigu¿tiÚ +-> + `g‘AµliÿtiÚ +(), $cu¼’tCÚfigu¿tiÚ-> + `g‘EnvœÚm’t +(), $cu¼’tCÚfigu¿tiÚ-> + `isDebug +()); + +76 +$cÚfigu¿tiÚ +-> + `g‘Ev’tDi¥©ch” +()-> + `cÚÃù +('­¶iÿtiÚ.throw_exû±iÚ', + `¬¿y +( +$this +, 'listenToException')); + +77 + `fܗch + ( +$this +-> +li¡’”s + +as + +$Çme + => +$li¡’” +) + +79 +$cÚfigu¿tiÚ +-> + `g‘Ev’tDi¥©ch” +()-> + `cÚÃù +( +$Çme +, +$li¡’” +); + +83 +$this +-> +cڋxt + = +sfCڋxt +:: + `ü—‹In¡ªû +( +$cÚfigu¿tiÚ +); + +84 + `un£t +( +$cu¼’tCÚfigu¿tiÚ +); + +86 ià(! +$isCڋxtEm±y +) + +88 +sfCÚfig +:: + `þ—r +(); + +89 +sfCÚfig +:: + `add +( +$this +-> +¿wCÚfigu¿tiÚ +); + +93 +$this +-> +¿wCÚfigu¿tiÚ + = +sfCÚfig +:: + `g‘AÎ +(); + +97  +$this +-> +cڋxt +; + +98 + } +} + +100 +public + +funùiÚ + + $addLi¡’” +( +$Çme +, +$li¡’” +) + +102 +$this +-> +li¡’”s +[ +$Çme +] = +$li¡’” +; + +103 + } +} + +110 +public + +funùiÚ + + $g‘Re¥Ú£ +() + +112  +$this +-> +cڋxt +-> + `g‘Re¥Ú£ +(); + +113 + } +} + +120 +public + +funùiÚ + + $g‘Reque¡ +() + +122  +$this +-> +cڋxt +-> + `g‘Reque¡ +(); + +123 + } +} + +130 +public + +funùiÚ + + $g‘U£r +() + +132  +$this +-> +cڋxt +-> + `g‘U£r +(); + +133 + } +} + +140 +public + +funùiÚ + + $shutdown +() + +142 +·»Á +:: + `shutdown +(); + +145 +sfToÞk™ +:: + `þ—rDœeùÜy +( +sfCÚfig +:: + `g‘ +('sf_test_cache_dir').'/sessions'); + +146 + } +} + +155 +public + +funùiÚ + + $li¡’ToExû±iÚ +( +sfEv’t + +$ev’t +) + +157 +$this +-> + `£tCu¼’tExû±iÚ +( +$ev’t +-> + `g‘Subjeù +()); + +158 + } +} + +161 þas  + csfFakeR’d”šgFž‹r + +ex‹nds + + msfFž‹r + + +163 +public + +funùiÚ + + $execu‹ +( +$fž‹rChaš +) + +165 +$fž‹rChaš +-> + `execu‹ +(); + +167 +$this +-> +cڋxt +-> + `g‘Re¥Ú£ +()-> + `£ndCڋÁ +(); + +169 + } +} + + @lib/vendor/symfony/lib/util/sfBrowserBase.class.php + +1 + `š™Ÿlize +( +$ho¡Çme +, +$»mÙe +, +$ÝtiÚs +); + +61 +public + +funùiÚ + + `š™Ÿlize +( +$ho¡Çme + = +nuÎ +, +$»mÙe + =‚uÎ, +$ÝtiÚs + = + $¬¿y +()) + +63 + `un£t +( +$_SERVER +['argv']); + +64 + `un£t +( +$_SERVER +['argc']); + +67 +$this +-> +ho¡Çme + = +nuÎ + ==ð +$ho¡Çme + ? 'localhost' : $hostname; + +68 +$this +-> +»mÙe + = +nuÎ + ==ð +$»mÙe + ? '127.0.0.1' : $remote; + +71 +$this +-> + `ÃwSessiÚ +(); + +74 +$this +-> +deçuÉS”v”A¼ay + = +$_SERVER +; + +77 + `»gi¡”_shutdown_funùiÚ +( + `¬¿y +( +$this +, 'shutdown')); + +78 + } +} + +88 +public + +funùiÚ + + $£tV¬ +( +$Çme +, +$v®ue +) + +90 +$this +-> +v¬s +[ +$Çme +] = +$v®ue +; + +92  +$this +; + +93 + } +} + +101 +public + +funùiÚ + + $£tH‰pH—d” +( +$h—d” +, +$v®ue +) + +103 +$this +-> +h—d”s +[ +$h—d” +] = +$v®ue +; + +105  +$this +; + +106 + } +} + +121 +public + +funùiÚ + +£tCook› +( +$Çme +, +$v®ue +, +$expœe + = +nuÎ +, +$·th + = '/', +$domaš + = '', +$£cu» + = +çl£ +, +$h‰pOÆy + = false) + +123 +$this +-> +cook›J¬ +[ +$Çme +] = +¬¿y +( + +124 'Çme' => +$Çme +, + +125 'v®ue' => +$v®ue +, + +126 'expœe' => +$expœe +, + +127 '·th' => +$·th +, + +128 'domaš' => +$domaš +, + +129 '£cu»' => ( +Boޗn +è +$£cu» +, + +130 'h‰pOÆy' => +$h‰pOÆy +, + +133  + g$this +; + +143 +public + +funùiÚ + + $»moveCook› +( +$Çme +) + +145 + `un£t +( +$this +-> +cook›J¬ +[ +$Çme +]); + +147  +$this +; + +148 + } +} + +155 +public + +funùiÚ + + $þ—rCook›s +() + +157 +$this +-> +cook›J¬ + = + `¬¿y +(); + +159  +$this +; + +160 + } +} + +170 +public + +funùiÚ + + $£tAuth +( +$u£ºame +, +$·sswÜd +) + +172 +$this +-> +v¬s +['PHP_AUTH_USER'] = +$u£ºame +; + +173 +$this +-> +v¬s +['PHP_AUTH_PW'] = +$·sswÜd +; + +175  +$this +; + +176 + } +} + +187 +public + +funùiÚ + +g‘ +( +$uri +, +$·¿m‘”s + = +¬¿y +(), +$chªgeSck + = +Œue +) + +189  +$this +-> +ÿÎ +( +$uri +, 'g‘', +$·¿m‘”s +, +$chªgeSck +); + +201 +public + +funùiÚ + +po¡ +( +$uri +, +$·¿m‘”s + = +¬¿y +(), +$chªgeSck + = +Œue +) + +203  +$this +-> +ÿÎ +( +$uri +, 'po¡', +$·¿m‘”s +, +$chªgeSck +); + +216 +public + +funùiÚ + +ÿÎ +( +$uri +, +$m‘hod + = 'g‘', +$·¿m‘”s + = +¬¿y +(), +$chªgeSck + = +Œue +) + +219 +$this +-> +checkCu¼’tExû±iÚIsEm±y +(); + +221 + g$uri + = +$this +-> +fixUri +( +$uri +); + +224 ià( + g$chªgeSck +) + +226 + g$this +-> + g¡ack + = +¬¿y_¦iû +( +$this +-> +¡ack +, 0, $this-> +¡ackPos™iÚ + + 1); + +227 + g$this +-> + g¡ack +[] = +¬¿y +( + +228 'uri' => +$uri +, + +229 'm‘hod' => +$m‘hod +, + +230 '·¿m‘”s' => +$·¿m‘”s +, + +232 + g$this +-> + g¡ackPos™iÚ + = +couÁ +( +$this +-> +¡ack +) - 1; + +235 +li¡ +( +$·th +, +$qu”ySŒšg +èð +çl£ + !=ð( +$pos + = +¡½os +( +$uri +, '?')è? +¬¿y +( +sub¡r +($uri, 0, $pos), substr($uri, $pos + 1)) :‡rray($uri, ''); + +236 + g$qu”ySŒšg + = +html_’t™y_decode +( +$qu”ySŒšg +); + +239 + g$·th + = +´eg_»¶aû +('/#.*/', '', +$·th +); + +242 + g$this +-> + gf›lds + = +¬¿y +(); + +245 + g$_SERVER + = +$this +-> +deçuÉS”v”A¼ay +; + +246 + g$_SERVER +['HTTP_HOST'] = +$this +-> +ho¡Çme +; + +247 + g$_SERVER +['SERVER_NAME'] = +$_SERVER +['HTTP_HOST']; + +248 + g$_SERVER +['SERVER_PORT'] = 80; + +249 + g$_SERVER +['HTTP_USER_AGENT'] = 'PHP5/CLI'; + +250 + g$_SERVER +['REMOTE_ADDR'] = +$this +-> +»mÙe +; + +251 + g$_SERVER +['REQUEST_METHOD'] = +¡¹ouµ” +( +$m‘hod +); + +252 + g$_SERVER +['PATH_INFO'] = +$·th +; + +253 + g$_SERVER +['REQUEST_URI'] = '/šdex.php'. +$uri +; + +254 + g$_SERVER +['SCRIPT_NAME'] = '/index.php'; + +255 + g$_SERVER +['SCRIPT_FILENAME'] = '/index.php'; + +256 + g$_SERVER +['QUERY_STRING'] = +$qu”ySŒšg +; + +258 ià( + g$this +-> + g¡ackPos™iÚ + >= 1) + +260 +$_SERVER +['HTTP_REFERER'] = +¥rštf +('h‰p%s://%s%s', +is£t +( +$this +-> +deçuÉS”v”A¼ay +['HTTPS']è? 's' : '', $this-> +ho¡Çme +, $this-> +¡ack +[$this-> +¡ackPos™iÚ + - 1]['uri']); + +263 +fܗch + ( +$this +-> +v¬s + +as + +$key + => +$v®ue +) + +265 +$_SERVER +[ +¡¹ouµ” +( +$key +)] = +$v®ue +; + +268 +fܗch + ( +$this +-> +h—d”s + +as + +$h—d” + => +$v®ue +) + +270 +$_SERVER +['HTTP_'. +¡¹ouµ” +( +¡r_»¶aû +('-', '_', +$h—d” +))] = +$v®ue +; + +272 + g$this +-> + gh—d”s + = +¬¿y +(); + +275 + g$_GET + = +$_POST + = +¬¿y +(); + +276 ià( +š_¬¿y +( +¡¹ouµ” +( +$m‘hod +), +¬¿y +('POST', 'DELETE', 'PUT'))) + +278 ià( +is£t +( +$·¿m‘”s +['_w™h_c¤f']è&& + g$·¿m‘”s +['_with_csrf']) + +280 +un£t +( +$·¿m‘”s +['_with_csrf']); + +281 + g$fÜm + = +Ãw + +Ba£FÜm +(); + +282 + g$·¿m‘”s +[ +$fÜm +-> +g‘CSRFF›ldName +()] = $fÜm-> +g‘CSRFTok’ +(); + +285 + g$_POST + = +$·¿m‘”s +; + +287 ià( +¡¹ouµ” +( +$m‘hod +) == 'GET') + +289 +$_GET + = +$·¿m‘”s +; + +293 + g$_FILES + = +¬¿y +(); + +294 ià( +couÁ +( +$this +-> +fžes +)) + +296 + g$_FILES + = +$this +-> +fžes +; + +298 + g$this +-> + gfžes + = +¬¿y +(); + +300 +·r£_¡r +( +$qu”ySŒšg +, +$qs +); + +301 ià( +is_¬¿y +( +$qs +)) + +303 + g$_GET + = +¬¿y_m”ge +( +$qs +, +$_GET +); + +307 + g$cook›s + = +$this +-> +cook›J¬ +; + +308 +fܗch + ( +$cook›s + +as + +$Çme + => +$cook› +) + +310 ià( +$cook› +['expœe'] && $cook›['expœe'] < +time +()) + +312 +un£t +( +$this +-> +cook›J¬ +[ +$Çme +]); + +317 + g$_COOKIE + = +¬¿y +(); + +318 +fܗch + ( +$this +-> +cook›J¬ + +as + +$Çme + => +$cook› +) + +320 +$_COOKIE +[ +$Çme +] = +$cook› +['value']; + +323 + g$this +-> +doC®l +(); + +325 + g$»¥Ú£ + = +$this +-> +g‘Re¥Ú£ +(); + +328 +fܗch + ( +$»¥Ú£ +-> +g‘Cook›s +(è +as + +$Çme + => +$cook› +) + +331 +$this +-> +cook›J¬ +[ +$Çme +] = +$cook› +; + +335 ià( + g$‘ag + = +$»¥Ú£ +-> +g‘H‰pH—d” +('Etag')) + +337 +$this +-> +v¬s +['HTTP_IF_NONE_MATCH'] = +$‘ag +; + +341 +un£t +( +$this +-> +v¬s +['HTTP_IF_NONE_MATCH']); + +345 ià( + g$Ï¡Modif›d + = +$»¥Ú£ +-> +g‘H‰pH—d” +('Last-Modified')) + +347 +$this +-> +v¬s +['HTTP_IF_MODIFIED_SINCE'] = +$Ï¡Modif›d +; + +351 +un£t +( +$this +-> +v¬s +['HTTP_IF_MODIFIED_SINCE']); + +355 + g$this +-> + gdom + = +nuÎ +; + +356 + g$this +-> + gdomCssS–eùÜ + = +nuÎ +; + +357 ià( +´eg_m©ch +('/(x|ht)ml/i', +$»¥Ú£ +-> +g‘CڋÁTy³ +(), +$m©ches +)) + +359 + g$this +-> + gdom + = +Ãw + +DomDocum’t +('1.0', +$»¥Ú£ +-> +g‘Ch¬£t +()); + +360 + g$this +-> + gdom +-> + gv®id©eOnP¬£ + = +Œue +; + +361 ià('x' =ð +$m©ches +[1]) + +363 @ +$this +-> +dom +-> +lßdXML +( +$»¥Ú£ +-> +g‘CڋÁ +()); + +367 @ + g$this +-> + gdom +-> +lßdHTML +( +$»¥Ú£ +-> +g‘CڋÁ +()); + +369 + g$this +-> + gdomCssS–eùÜ + = +Ãw + +sfDomCssS–eùÜ +( +$this +-> +dom +); + +372  + g$this +; + +378 +ab¡¿ù + +´Ùeùed + +funùiÚ + +doC®l +(); + +385 +public + +funùiÚ + + $back +() + +387 ià( +$this +-> +¡ackPos™iÚ + < 1) + +389 +throw + +Ãw + + `LogicExû±iÚ +('You‡re‡lready onhe first…age.'); + +392 -- +$this +-> +¡ackPos™iÚ +; + +393  +$this +-> + `ÿÎ +($this-> +¡ack +[$this-> +¡ackPos™iÚ +]['uri'], $this->¡ack[$this->¡ackPos™iÚ]['m‘hod'], $this->¡ack[$this->¡ackPos™iÚ]['·¿m‘”s'], +çl£ +); + +394 + } +} + +401 +public + +funùiÚ + + $fÜw¬d +() + +403 ià( +$this +-> +¡ackPos™iÚ + > + `couÁ +($this-> +¡ack +) - 2) + +405 +throw + +Ãw + + `LogicExû±iÚ +('You‡re‡lready onhe†ast…age.'); + +408 ++ +$this +-> +¡ackPos™iÚ +; + +409  +$this +-> + `ÿÎ +($this-> +¡ack +[$this-> +¡ackPos™iÚ +]['uri'], $this->¡ack[$this->¡ackPos™iÚ]['m‘hod'], $this->¡ack[$this->¡ackPos™iÚ]['·¿m‘”s'], +çl£ +); + +410 + } +} + +417 +public + +funùiÚ + + $»lßd +() + +419 ià(-1 =ð +$this +-> +¡ackPos™iÚ +) + +421 +throw + +Ãw + + `LogicExû±iÚ +('No…ageo„eload.'); + +424  +$this +-> + `ÿÎ +($this-> +¡ack +[$this-> +¡ackPos™iÚ +]['uri'], $this->¡ack[$this->¡ackPos™iÚ]['m‘hod'], $this->¡ack[$this->¡ackPos™iÚ]['·¿m‘”s'], +çl£ +); + +425 + } +} + +432 +public + +funùiÚ + + $g‘Re¥Ú£DomCssS–eùÜ +() + +434 ià( +nuÎ + ==ð +$this +-> +domCssS–eùÜ +) + +436 +throw + +Ãw + + `LogicExû±iÚ +('The DOM is‚ot‡ccessible becausehe browser„esponse contentype is‚ot HTML.'); + +439  +$this +-> +domCssS–eùÜ +; + +440 + } +} + +449 +public + +funùiÚ + + $g‘Re¥Ú£DomX·th +() + +451  +Ãw + + `DOMXP©h +( +$this +-> + `g‘Re¥Ú£Dom +()); + +452 + } +} + +459 +public + +funùiÚ + + $g‘Re¥Ú£Dom +() + +461 ià( +nuÎ + ==ð +$this +-> +dom +) + +463 +throw + +Ãw + + `LogicExû±iÚ +('The DOM is‚ot‡ccessible becausehe browser„esponse contentype is‚ot HTML.'); + +466  +$this +-> +dom +; + +467 + } +} + +474 +ab¡¿ù + +public + +funùiÚ + +g‘Re¥Ú£ +(); + +481 +ab¡¿ù + +public + +funùiÚ + +g‘Reque¡ +(); + +488 +ab¡¿ù + +public + +funùiÚ + +g‘U£r +(); + +495 +public + +funùiÚ + + $g‘Cu¼’tExû±iÚ +() + +497  +$this +-> +cu¼’tExû±iÚ +; + +498 + } +} + +505 +public + +funùiÚ + + $£tCu¼’tExû±iÚ +( +Exû±iÚ + +$exû±iÚ +) + +507 +$this +-> +cu¼’tExû±iÚ + = +$exû±iÚ +; + +508 + } +} + +513 +public + +funùiÚ + + $»£tCu¼’tExû±iÚ +() + +515 +$this +-> +cu¼’tExû±iÚ + = +nuÎ +; + +516 +sfExû±iÚ +:: + `þ—rLa¡Exû±iÚ +(); + +517 + } +} + +524 +public + +funùiÚ + + $checkCu¼’tExû±iÚIsEm±y +() + +526  +nuÎ + ==ð +$this +-> + `g‘Cu¼’tExû±iÚ +(è|| $this->g‘Cu¼’tExû±iÚ(è +š¡ªûof + +sfE¼Ü404Exû±iÚ +; + +527 + } +} + +536 +public + +funùiÚ + + $fÞlowRedœeù +() + +538 ià( +nuÎ + ==ð +$this +-> + `g‘Re¥Ú£ +()-> + `g‘H‰pH—d” +('Location')) + +540 +throw + +Ãw + + `LogicExû±iÚ +('The„equest was‚ot„edirected.'); + +543  +$this +-> + `g‘ +($this-> + `g‘Re¥Ú£ +()-> + `g‘H‰pH—d” +('Location')); + +544 + } +} + +554 +public + +funùiÚ + + $£tF›ld +( +$Çme +, +$v®ue +) + +557 +$this +-> + `·r£Argum’tAsA¼ay +( +$Çme +, +$v®ue +, $this-> +f›lds +); + +559  +$this +; + +560 + } +} + +571 +public + +funùiÚ + + $de£Ëù +( +$Çme +) + +573 +$this +-> + `doS–eù +( +$Çme +, +çl£ +); + +575  +$this +; + +576 + } +} + +587 +public + +funùiÚ + + $£Ëù +( +$Çme +) + +589 +$this +-> + `doS–eù +( +$Çme +, +Œue +); + +591  +$this +; + +592 + } +} + +603 +public + +funùiÚ + + $doS–eù +( +$Çme +, +$£Ëùed +) + +605 +$x·th + = +$this +-> + `g‘Re¥Ú£DomX·th +(); + +607 ià( +$–em’t + = +$x·th +-> + `qu”y +( + `¥rštf +('//šput[(@ty³="¿dio" o¸@ty³="checkbox"èªd (.="%s" o¸@id="%s" o¸@Çme="%s")]', +$Çme +, $Çme, $Çme))-> + `™em +(0)) + +609 ià( +$£Ëùed +) + +611 ià( +$–em’t +-> + `g‘A‰ribu‹ +('type') == 'radio') + +614 + `fܗch + ( +$x·th +-> + `qu”y +( + `¥rštf +('//šput[@ty³="¿dio"‡nd @Çme="%s"]', +$–em’t +-> + `g‘A‰ribu‹ +('Çme'))è +as + +$¿dio +) + +616 +$¿dio +-> + `»moveA‰ribu‹ +('checked'); + +619 +$–em’t +-> + `£tA‰ribu‹ +('checked', 'checked'); + +623 ià( +$–em’t +-> + `g‘A‰ribu‹ +('type') == 'radio') + +625 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +('Radiobutton cannot be deselected - Select‡nother„adiobuttono deselecthe current.'); + +627 +$–em’t +-> + `»moveA‰ribu‹ +('checked'); + +632 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('CªnÙ fšdh"%s" checkbox o¸¿diobu‰Ú.', +$Çme +)); + +634 + } +} + +654 +public + +funùiÚ + +þick +( +$Çme +, +$¬gum’ts + = +¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +656 ià( +$Çme + +š¡ªûof + +DOMEËm’t +) + +658 + `li¡ +( +$uri +, +$m‘hod +, +$·¿m‘”s +èð +$this +-> + `doClickEËm’t +( +$Çme +, +$¬gum’ts +, +$ÝtiÚs +); + +662 +Œy + + +664 + `li¡ +( +$uri +, +$m‘hod +, +$·¿m‘”s +èð +$this +-> + `doClick +( +$Çme +, +$¬gum’ts +, +$ÝtiÚs +); + +666 + `ÿtch + ( +Inv®idArgum’tExû±iÚ + +$e +) + +668 + `li¡ +( +$uri +, +$m‘hod +, +$·¿m‘”s +èð +$this +-> + `doClickCssS–eùÜ +( +$Çme +, +$¬gum’ts +, +$ÝtiÚs +); + +672  +$this +-> + `ÿÎ +( +$uri +, +$m‘hod +, +$·¿m‘”s +); + +673 + } +} + +691 +public + +funùiÚ + +doClick +( +$Çme +, +$¬gum’ts + = +¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +693 ià( +çl£ + !=ð + `¡½os +( +$Çme +, '[') || false !== strpos($name, ']')) + +695 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('ThÇm"%s" i nÙ v®id', +$Çme +)); + +698 +$qu”y + = + `¥rštf +('//a[.="%s"]', +$Çme +); + +699 +$qu”y + .ð + `¥rštf +('|//a/img[@®t="%s"]/ªû¡Ü::a', +$Çme +); + +700 +$qu”y + .ð + `¥rštf +('|//šput[((@ty³="subm™" o¸@ty³="bu‰Ú"èªd @v®ue="%s"èÜ (@ty³="image"‡nd @®t="%s")]', +$Çme +, $name); + +701 +$qu”y + .ð + `¥rštf +('|//bu‰Ú[.="%s" o¸@id="%s" o¸@Çme="%s"]', +$Çme +, $name, $name); + +703 ià(! +$li¡ + = @ +$this +-> + `g‘Re¥Ú£DomX·th +()-> + `qu”y +( +$qu”y +)) + +705 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('ThÇm"%s" i nÙ v®id', +$Çme +)); + +708 +$pos™iÚ + = + `is£t +( +$ÝtiÚs +['position']) ? $options['position'] - 1 : 0; + +710 ià(! +$™em + = +$li¡ +-> + `™em +( +$pos™iÚ +)) + +712 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('CªnÙ fšdh"%s"†šk o¸bu‰Ú (pos™iÚ %d).', +$Çme +, +$pos™iÚ + + 1)); + +715  +$this +-> + `doClickEËm’t +( +$™em +, +$¬gum’ts +, +$ÝtiÚs +); + +716 + } +} + +732 +public + +funùiÚ + +doClickCssS–eùÜ +( +$£ËùÜ +, +$¬gum’ts + = +¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +734 +$–em’ts + = +$this +-> + `g‘Re¥Ú£DomCssS–eùÜ +()-> + `m©chAÎ +( +$£ËùÜ +)-> + `g‘Nodes +(); + +735 +$pos™iÚ + = + `is£t +( +$ÝtiÚs +['position']) ? $options['position'] - 1 : 0; + +737 ià( + `is£t +( +$–em’ts +[ +$pos™iÚ +])) + +739  +$this +-> + `doClickEËm’t +( +$–em’ts +[ +$pos™iÚ +], +$¬gum’ts +, +$ÝtiÚs +); + +743 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('Could‚Ù fšdh–em’ˆ"%s" (pos™iÚ %d蚁hcu¼’ˆDOM.', +$£ËùÜ +, +$pos™iÚ + + 1)); + +745 + } +} + +760 +public + +funùiÚ + +doClickEËm’t +( +DOMEËm’t + +$™em +, +$¬gum’ts + = +¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +762 +$m‘hod + = + `¡¹Þow” +( + `is£t +( +$ÝtiÚs +['method']) ? $options['method'] : 'get'); + +764 ià('a' =ð +$™em +-> +nodeName +) + +766 ià( + `š_¬¿y +( +$m‘hod +, + `¬¿y +('post', 'put', 'delete'))) + +768 ià( + `is£t +( +$ÝtiÚs +['_with_csrf']) && $options['_with_csrf']) + +770 +$¬gum’ts +['_w™h_c¤f'] = +Œue +; + +773  + `¬¿y +( +$™em +-> + `g‘A‰ribu‹ +('h»f'), +$m‘hod +, +$¬gum’ts +); + +777  + `¬¿y +( +$™em +-> + `g‘A‰ribu‹ +('h»f'), 'g‘', +$¬gum’ts +); + +780 ià('bu‰Ú' =ð +$™em +-> +nodeName + || ('šput' =ð$™em->nodeNam&& + `š_¬¿y +($™em-> + `g‘A‰ribu‹ +('ty³'), + `¬¿y +('submit', 'button', 'image')))) + +783 +$this +-> + `·r£Argum’tAsA¼ay +( +$™em +-> + `g‘A‰ribu‹ +('Çme'), $™em->g‘A‰ribu‹('v®ue'), +$¬gum’ts +); + +788 ià( +nuÎ + ==ð +$™em + = $™em-> +·»ÁNode +) + +790 +throw + +Ãw + + `Exû±iÚ +('The clicked formƒlement does‚ot have‡ form‡ncestor.'); + +793 'fÜm' !ð +$™em +-> +nodeName +); + +797 +$u¾ + = +$™em +-> + `g‘A‰ribu‹ +('action'); + +798 ià(! +$u¾ + || '#' == $url) + +800 +$u¾ + = +$this +-> +¡ack +[$this-> +¡ackPos™iÚ +]['uri']; + +802 +$m‘hod + = + `¡¹Þow” +( + `is£t +( +$ÝtiÚs +['m‘hod']è? $ÝtiÚs['m‘hod'] : ( +$™em +-> + `g‘A‰ribu‹ +('method') ? $item->getAttribute('method') : 'get')); + +805 +$deçuÉs + = + `¬¿y +(); + +806 +$¬gum’ts + = +sfToÞk™ +:: + `¬¿yD“pM”ge +( +$this +-> +f›lds +, $arguments); + +808 +$x·th + = +$this +-> + `g‘Re¥Ú£DomX·th +(); + +809 + `fܗch + ( +$x·th +-> + `qu”y +('desûndªt::špuˆ| desûndªt::‹x»¨| desûndªt::£Ëù', +$™em +è +as + +$–em’t +) + +811 ià( +$–em’t +-> + `hasA‰ribu‹ +('disabled')) + +816 +$–em’tName + = +$–em’t +-> + `g‘A‰ribu‹ +('name'); + +817 +$nodeName + = +$–em’t +-> +nodeName +; + +818 +$v®ue + = +nuÎ +; + +820 ià( +$nodeName + =ð'šput' && ( +$–em’t +-> + `g‘A‰ribu‹ +('type') == 'checkbox' || $element->getAttribute('type') == 'radio')) + +822 ià( +$–em’t +-> + `g‘A‰ribu‹ +('checked')) + +824 +$v®ue + = +$–em’t +-> + `hasA‰ribu‹ +('v®ue'è? $–em’t-> + `g‘A‰ribu‹ +('value') : '1'; + +827 ià( +$nodeName + =ð'šput' && +$–em’t +-> + `g‘A‰ribu‹ +('type') == 'file') + +829 +$fž’ame + = + `¬¿y_key_exi¡s +( +$–em’tName +, +$¬gum’ts +è? $¬gum’ts[$–em’tName] : +sfToÞk™ +:: + `g‘A¼ayV®ueFÜP©h +($arguments, $elementName, ''); + +831 ià( + `is_»adabË +( +$fž’ame +)) + +833 +$fžeE¼Ü + = +UPLOAD_ERR_OK +; + +834 +$fžeSize + = + `fžesize +( +$fž’ame +); + +838 +$fžeE¼Ü + = +UPLOAD_ERR_NO_FILE +; + +839 +$fžeSize + = 0; + +842 + `un£t +( +$¬gum’ts +[ +$–em’tName +]); + +844 +$this +-> + `·r£Argum’tAsA¼ay +( +$–em’tName +, + `¬¿y +('Çme' => + `ba£Çme +( +$fž’ame +), 'ty³' => '', 'tmp_Çme' => $fž’ame, '”rÜ' => +$fžeE¼Ü +, 'size' => +$fžeSize +), $this-> +fžes +); + +846 ià('šput' =ð +$nodeName + && ! + `š_¬¿y +( +$–em’t +-> + `g‘A‰ribu‹ +('ty³'), + `¬¿y +('submit', 'button', 'image'))) + +848 +$v®ue + = +$–em’t +-> + `g‘A‰ribu‹ +('value'); + +850 ià( +$nodeName + == 'textarea') + +852 +$v®ue + = ''; + +853 + `fܗch + ( +$–em’t +-> +chždNodes + +as + +$– +) + +855 +$v®ue + .ð +$this +-> + `g‘Re¥Ú£Dom +()-> + `§veXML +( +$– +); + +858 ià( +$nodeName + == 'select') + +860 ià( +$muÉË + = +$–em’t +-> + `hasA‰ribu‹ +('multiple')) + +862 +$–em’tName + = + `¡r_»¶aû +('[]', '', $elementName); + +863 +$v®ue + = + `¬¿y +(); + +867 +$v®ue + = +nuÎ +; + +870 +$found + = +çl£ +; + +871 + `fܗch + ( +$x·th +-> + `qu”y +('desûndªt::ÝtiÚ', +$–em’t +è +as + +$ÝtiÚ +) + +873 ià( +$ÝtiÚ +-> + `g‘A‰ribu‹ +('selected')) + +875 +$found + = +Œue +; + +876 ià( +$muÉË +) + +878 +$v®ue +[] = +$ÝtiÚ +-> + `g‘A‰ribu‹ +('value'); + +882 +$v®ue + = +$ÝtiÚ +-> + `g‘A‰ribu‹ +('value'); + +888 +$ÝtiÚ + = +$x·th +-> + `qu”y +('desûndªt::ÝtiÚ', +$–em’t +)-> + `™em +(0); + +889 ià(! +$found + && ! +$muÉË + && +$ÝtiÚ + +š¡ªûof + +DOMEËm’t +) + +891 +$v®ue + = +$ÝtiÚ +-> + `g‘A‰ribu‹ +('value'); + +895 ià( +nuÎ + !=ð +$v®ue +) + +897 +$this +-> + `·r£Argum’tAsA¼ay +( +$–em’tName +, +$v®ue +, +$deçuÉs +); + +902 +$¬gum’ts + = +sfToÞk™ +:: + `¬¿yD“pM”ge +( +$deçuÉs +, $arguments); + +903 ià( + `š_¬¿y +( +$m‘hod +, + `¬¿y +('post', 'put', 'delete'))) + +905  + `¬¿y +( +$u¾ +, +$m‘hod +, +$¬gum’ts +); + +909 +$qu”ySŒšg + = + `h‰p_bužd_qu”y +( +$¬gum’ts +, +nuÎ +, '&'); + +910 +$£p + = +çl£ + ==ð + `¡½os +( +$u¾ +, '?') ? '?' : '&'; + +912  + `¬¿y +( +$u¾ +.( +$qu”ySŒšg + ? +$£p +.$queryString : ''), 'get',‡rray()); + +914 + } +} + +923 +´Ùeùed + +funùiÚ + + $·r£Argum’tAsA¼ay +( +$Çme +, +$v®ue +, & +$v¬s +) + +925 ià( +çl£ + !=ð +$pos + = + `¡½os +( +$Çme +, '[')) + +927 +$v¬ + = & +$v¬s +; + +928 +$tmps + = + `¬¿y_fž‹r +( + `´eg_¥l™ +('/(\[ | \[\] | \])/x', +$Çme +), + `ü—‹_funùiÚ +('$s', 'return $s !== "";')); + +929 + `fܗch + ( +$tmps + +as + +$tmp +) + +931 +$v¬ + = &$v¬[ +$tmp +]; + +933 ià( +$v¬ + && '[]' ==ð + `sub¡r +( +$Çme +, -2)) + +935 ià(! + `is_¬¿y +( +$v¬ +)) + +937 +$v¬ + = + `¬¿y +($var); + +939 +$v¬ +[] = +$v®ue +; + +943 +$v¬ + = +$v®ue +; + +948 +$v¬s +[ +$Çme +] = +$v®ue +; + +950 + } +} + +957 +public + +funùiÚ + + $»¡¬t +() + +959 +$this +-> + `ÃwSessiÚ +(); + +960 +$this +-> +cook›J¬ + = + `¬¿y +(); + +961 +$this +-> +¡ack + = + `¬¿y +(); + +962 +$this +-> +f›lds + = + `¬¿y +(); + +963 +$this +-> +v¬s + = + `¬¿y +(); + +964 +$this +-> +dom + = +nuÎ +; + +965 +$this +-> +¡ackPos™iÚ + = -1; + +967  +$this +; + +968 + } +} + +975 +public + +funùiÚ + + $shutdown +() + +977 +$this +-> + `checkCu¼’tExû±iÚIsEm±y +(); + +978 + } +} + +986 +public + +funùiÚ + + $fixUri +( +$uri +) + +989 ià(0 ==ð + `¡½os +( +$uri +, 'http')) + +992 ià(0 ==ð + `¡½os +( +$uri +, 'https')) + +994 +$this +-> +deçuÉS”v”A¼ay +['HTTPS'] = 'on'; + +998 + `un£t +( +$this +-> +deçuÉS”v”A¼ay +['HTTPS']); + +1001 +$uri + = + `´eg_»¶aû +('#^https?\://[^/]+/#', '/', $uri); + +1003 +$uri + = + `¡r_»¶aû +('/index.php', '', $uri); + +1006 ià( +$uri + && '#' == $uri[0]) + +1008 +$uri + = +$this +-> +¡ack +[$this-> +¡ackPos™iÚ +]['uri'].$uri; + +1011  +$uri +; + +1012 + } +} + +1019 +´Ùeùed + +funùiÚ + + $ÃwSessiÚ +() + +1021 +$this +-> +deçuÉS”v”A¼ay +['£ssiÚ_id'] = +$_SERVER +['£ssiÚ_id'] = + `md5 +( + `uniqid +( + `¿nd +(), +Œue +)); + +1022 + } +} + + @lib/vendor/symfony/lib/util/sfCallable.class.php + +1 +ÿÎabË + = +$ÿÎabË +; + +39 +public + +funùiÚ + + $g‘C®ÏbË +() + +41  +$this +-> +ÿÎabË +; + +42 + } +} + +53 +public + +funùiÚ + + $ÿÎ +() + +55 ià(! + `is_ÿÎabË +( +$this +-> +ÿÎabË +)) + +57 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('"%s" i nه v®id c®ÏbË.', + `is_¬¿y +( +$this +-> +ÿÎabË +è? s´štf('%s:%s', + `is_objeù +($this->ÿÎabË[0]è? + `g‘_þass +($this->ÿÎabË[0]è: $this->ÿÎabË[0], $this->ÿÎabË[1]è: (is_objeù($this->ÿÎabËè? s´štf('Objeù(%s)', g‘_þass($this->ÿÎabË)è: + `v¬_expÜt +($this->ÿÎabË, +Œue +)))); + +60 +$¬gum’ts + = + `func_g‘_¬gs +(); + +62  + `ÿÎ_u£r_func_¬¿y +( +$this +-> +ÿÎabË +, +$¬gum’ts +); + +63 + } +} + + @lib/vendor/symfony/lib/util/sfClassManipulator.class.php + +1 +code + = +$code +; + +50  +public + +funùiÚ + + $äomFže +( +$fže +) + +52 +$mªuÏtÜ + = +Ãw + + `£lf +( + `fže_g‘_cڋÁs +( +$fže +)); + +53 +$mªuÏtÜ +-> + `£tFže +( +$fže +); + +55  +$mªuÏtÜ +; + +56 + } +} + +65 +public + +funùiÚ + + $§ve +() + +67 ià(! +$this +-> +fže +) + +69 +throw + +Ãw + + `LogicExû±iÚ +('Unableo savehe code‡s‚o file has been…rovided.'); + +72 + `fže_put_cڋÁs +( +$this +-> +fže +, $this-> +code +); + +73 + } +} + +80 +public + +funùiÚ + + $g‘Code +() + +82  +$this +-> +code +; + +83 + } +} + +90 +public + +funùiÚ + + $g‘Fže +() + +92  +$this +-> +fže +; + +93 + } +} + +100 +public + +funùiÚ + + $£tFže +( +$fže +) + +102 +$this +-> +fže + = +$fže +; + +103 + } +} + +112 +public + +funùiÚ + +w¿pM‘hod +( +$m‘hod +, +$tÝCode + = '', +$bÙtomCode + = '') + +114 +$code + = ''; + +115 + g$šsideS‘up + = -1; + +116 + g$·»ns + = 0; + +117 +fܗch + ( +tok’_g‘_®l +( +$this +-> +code +è +as + +$tok’ +) + +119 ià( +is£t +( +$tok’ +[1])) + +121 ià(-1 =ð +$šsideS‘up + && +T_FUNCTION + =ð +$tok’ +[0]) + +123 +$šsideS‘up + = 0; + +125 +–£if + (0 =ð +$šsideS‘up + && +T_STRING + =ð +$tok’ +[0]) + +127 +$šsideS‘up + = +$m‘hod + =ð +$tok’ +[1] ? 1 : -1; + +130 + g$code + .ð +$tok’ +[1]; + +134 ià(1 =ð +$šsideS‘up + && '{' =ð +$tok’ +) + +136 ià(! +$·»ns +) + +138 +$code + .ð +$tÝCode + ? +$tok’ +. +PHP_EOL +.' '.$topCode : $token; + +142 + g$code + .ð +$tok’ +; + +145 ++ + g$·»ns +; + +147 +–£if + (1 =ð +$šsideS‘up + && '}' =ð +$tok’ +) + +149 -- +$·»ns +; + +151 ià(! + g$·»ns +) + +153 + g$šsideS‘up + = -1; + +155 + g$code + .ð +$bÙtomCode + ? ' '.$bÙtomCode. +PHP_EOL +.' '. +$tok’ + : $token; + +159 + g$code + .ð +$tok’ +; + +164 + g$code + .ð +$tok’ +; + +169  + g$this +-> + gcode + = +$code +; + +178 +public + +funùiÚ + + $fž‹rM‘hod +( +$m‘hod +, +$ÿÎabË +) + +180 +$lše + = ''; + +181 +$code + = ''; + +182 +$šsideS‘up + = -1; + +183 +$·»ns + = 0; + +184 +$b»ak + = +çl£ +; + +186 +$tok’s + = + `tok’_g‘_®l +( +$this +-> +code +); + +187  +$i + = 0; $˜< + `couÁ +( +$tok’s +); $i++) + +189 +$tok’ + = +$tok’s +[ +$i +]; + +191 ià( + `is_¬¿y +( +$tok’ +)) + +193 +$lše + .ð +$tok’ +[1]; + +195 ià(-1 =ð +$šsideS‘up + && +T_FUNCTION + =ð +$tok’ +[0]) + +197 +$šsideS‘up + = 0; + +199 + `–£if + (0 =ð +$šsideS‘up + && +T_STRING + =ð +$tok’ +[0]) + +201 +$šsideS‘up + = +$m‘hod + =ð +$tok’ +[1] ? 1 : -1; + +206 ià(1 =ð +$šsideS‘up + && '{' =ð +$tok’ +) + +208 ++ +$·»ns +; + +210 + `–£if + (1 =ð +$šsideS‘up + && '}' =ð +$tok’ +) + +212 -- +$·»ns +; + +214 ià(! +$·»ns +) + +216 +$b»ak + = +Œue +; + +220 +$lše + .ð +$tok’ +; + +223 +$lšes + = + `´eg_¥l™ +('/(\r?\n)/', +$lše +, +nuÎ +, +PREG_SPLIT_DELIM_CAPTURE +); + +224 ià( + `couÁ +( +$lšes +è> 1 || +$b»ak +) + +226 +$lše + = +$b»ak + ? '' : + `¬¿y_pÝ +( +$lšes +); + +227 + `fܗch + ( + `¬¿y_chunk +( +$lšes +, 2è +as + +$chunk +) + +229 + `li¡ +( +$l +, +$eÞ +èð + `¬¿y_·d +( +$chunk +, 2, ''); + +231 ià(1 =ð +$šsideS‘up +) + +233 + `li¡ +( +$befÜe +, +$£tup +èð +$this +-> + `¥l™S‘up +( +$l +); + +234 +$code + .ð +$befÜe +; + +235 +$code + .ð + `ÿÎ_u£r_func +( +$ÿÎabË +, +$£tup +. +$eÞ +); + +239 +$code + .ð +$l +. +$eÞ +; + +244 ià( +$b»ak +) + +246 +$šsideS‘up + = -1; + +247 +$b»ak + = +çl£ +; + +251 ià( +$lše +) + +253 +$code + .ð +$lše +; + +256  +$this +-> +code + = +$code +; + +257 + } +} + +259 +´Ùeùed + +funùiÚ + + $¥l™S‘up +( +$lše +) + +261 +$befÜe + = ''; + +262 +$£tup + = ''; + +264 ià( +$lše +) + +266 ià( +çl£ + ==ð + `¡ros +( +$lše +, ' + `g‘Tok’V®ue +( +$tok’ +); + +282 ià( + `is_¬¿y +( +$tok’ +è&& + `š_¬¿y +($tok’[0], +£lf +:: +$sigÇtu»Tok’s +)) + +284 +$šSigÇtu» + = +Œue +; + +286 + `–£if + ( +$šSigÇtu» + && ! + `´eg_m©ch +('/\s+/', +$v®ue +)) + +289 + `´eg_m©ch +('/^\s*/', +$£tup +, +$m©ch +); + +290 +$befÜe + = + `im¶ode +('', + `¬¿y_m­ +( + `¬¿y +( +$this +, 'g‘Tok’V®ue'), +$tok’s +)). +$v®ue +. +$m©ch +[0]; + +291 +$£tup + = + `sub¡r +($£tup, + `¡¾’ +( +$m©ch +[0])); + +293  + `¬¿y +( +$befÜe +, +$£tup +); + +296 +$£tup + = +$v®ue +.$setup; + +300  + `¬¿y +( +$befÜe +, +$£tup +); + +301 + } +} + +310 +´Ùeùed + +funùiÚ + + $g‘Tok’V®ue +( +$tok’ +) + +312  + `is_¬¿y +( +$tok’ +) ? $token[1] : $token; + +313 + } +} + + @lib/vendor/symfony/lib/util/sfContext.class.php + +1 + `g‘AµliÿtiÚ +(); + +51 +£lf +:: +$cu¼’t + = +$Çme +; + +53 +£lf +:: +$š¡ªûs +[ +$Çme +] = +Ãw + + `$þass +(); + +55 ià(! +£lf +:: +$š¡ªûs +[ +$Çme +] +š¡ªûof + +sfCڋxt +) + +57 +throw + +Ãw + + `sfFaùÜyExû±iÚ +( + `¥rštf +('CÏs "%s" i nÙ oàthty³ sfCڋxt.', +$þass +)); + +60 +£lf +:: +$š¡ªûs +[ +$Çme +]-> + `š™Ÿlize +( +$cÚfigu¿tiÚ +); + +62  +£lf +:: +$š¡ªûs +[ +$Çme +]; + +70 +public + +funùiÚ + + $š™Ÿlize +( +sfAµliÿtiÚCÚfigu¿tiÚ + +$cÚfigu¿tiÚ +) + +72 +$this +-> +cÚfigu¿tiÚ + = +$cÚfigu¿tiÚ +; + +73 +$this +-> +di¥©ch” + = +$cÚfigu¿tiÚ +-> + `g‘Ev’tDi¥©ch” +(); + +75 +Œy + + +77 +$this +-> + `lßdFaùܛs +(); + +79 + `ÿtch + ( +sfExû±iÚ + +$e +) + +81 +$e +-> + `´štSckT¿û +(); + +83 + `ÿtch + ( +Exû±iÚ + +$e +) + +85 +sfExû±iÚ +:: + `ü—‹FromExû±iÚ +( +$e +)-> + `´štSckT¿û +(); + +88 +$this +-> +di¥©ch” +-> + `cÚÃù +('‹m¶©e.fž‹r_·¿m‘”s', + `¬¿y +($this, 'filterTemplateParameters')); + +91 + `»gi¡”_shutdown_funùiÚ +( + `¬¿y +( +$this +, 'shutdown')); + +92 + } +} + +102  +public + +funùiÚ + + $g‘In¡ªû +( +$Çme + = +nuÎ +, +$þass + = +__CLASS__ +) + +104 ià( +nuÎ + ==ð +$Çme +) + +106 +$Çme + = +£lf +:: +$cu¼’t +; + +109 ià(! + `is£t +( +£lf +:: +$š¡ªûs +[ +$Çme +])) + +111 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('Th"%s" cڋxˆdÛ nكxi¡.', +$Çme +)); + +114  +£lf +:: +$š¡ªûs +[ +$Çme +]; + +115 + } +} + +125 +public +  +funùiÚ + + $hasIn¡ªû +( +$Çme + = +nuÎ +) + +127 ià( +nuÎ + ==ð +$Çme +) + +129 +$Çme + = +£lf +:: +$cu¼’t +; + +132  + `is£t +( +£lf +:: +$š¡ªûs +[ +$Çme +]); + +133 + } +} + +138 +public + +funùiÚ + + $lßdFaùܛs +() + +140 ià( +sfCÚfig +:: + `g‘ +('sf_use_database')) + +143 +$this +-> +çùܛs +['d©aba£Mªag”'] = +Ãw + + `sfD©aba£Mªag” +($this-> +cÚfigu¿tiÚ +, + `¬¿y +('auto_shutdown' => +çl£ +)); + +147 +$this +-> +çùܛs +['aùiÚSck'] = +Ãw + + `sfAùiÚSck +(); + +149 ià( +sfCÚfig +:: + `g‘ +('sf_debug') && sfConfig::get('sf_logging_enabled')) + +151 +$tim” + = +sfTim”Mªag” +:: + `g‘Tim” +('Factories'); + +155 + `»quœe +( +$this +-> +cÚfigu¿tiÚ +-> + `g‘CÚfigCache +()-> + `checkCÚfig +('config/factories.yml')); + +157 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, 'context.load_factories')); + +159 ià( +sfCÚfig +:: + `g‘ +('sf_debug') && sfConfig::get('sf_logging_enabled')) + +161 +$tim” +-> + `addTime +(); + +163 + } +} + +168 +public + +funùiÚ + + $di¥©ch +() + +170 +$this +-> + `g‘CڌÞËr +()-> + `di¥©ch +(); + +171 + } +} + +179 +public +  +funùiÚ + + $sw™chTo +( +$Çme +) + +181 ià(! + `is£t +( +£lf +:: +$š¡ªûs +[ +$Çme +])) + +183 +$cu¼’tCÚfigu¿tiÚ + = +sfCڋxt +:: + `g‘In¡ªû +()-> + `g‘CÚfigu¿tiÚ +(); + +184 +sfCڋxt +:: + `ü—‹In¡ªû +( +ProjeùCÚfigu¿tiÚ +:: + `g‘AµliÿtiÚCÚfigu¿tiÚ +( +$Çme +, +$cu¼’tCÚfigu¿tiÚ +-> + `g‘EnvœÚm’t +(), $cu¼’tCÚfigu¿tiÚ-> + `isDebug +())); + +187 +£lf +:: +$cu¼’t + = +$Çme +; + +189 +sfCڋxt +:: + `g‘In¡ªû +()-> + `g‘CÚfigu¿tiÚ +()-> + `aùiv©e +(); + +190 + } +} + +197 +public + +funùiÚ + + $g‘CÚfigu¿tiÚ +() + +199  +$this +-> +cÚfigu¿tiÚ +; + +200 + } +} + +207 +public + +funùiÚ + + $g‘Ev’tDi¥©ch” +() + +209  +$this +-> +di¥©ch” +; + +210 + } +} + +218 +public + +funùiÚ + + $g‘AùiÚName +() + +221 ià( +$this +-> +çùܛs +['aùiÚSck'] && +$Ï¡EÁry + = $this->çùܛs['aùiÚSck']-> + `g‘La¡EÁry +()) + +223  +$Ï¡EÁry +-> + `g‘AùiÚName +(); + +225 + } +} + +233 +public + +funùiÚ + + $g‘AùiÚSck +() + +235  +$this +-> +çùܛs +['actionStack']; + +236 + } +} + +243 +public + +funùiÚ + + $g‘CڌÞËr +() + +245  + `is£t +( +$this +-> +çùܛs +['cڌÞËr']è? $this->çùܛs['cڌÞËr'] : +nuÎ +; + +246 + } +} + +253 +public + +funùiÚ + + $g‘Maž” +() + +255 ià(! + `is£t +( +$this +-> +çùܛs +['mailer'])) + +257 +$this +-> +çùܛs +['maž”'] = +Ãw + $this-> +maž”CÚfigu¿tiÚ +['þass']($this-> +di¥©ch” +, $this->mailerConfiguration); + +260  +$this +-> +çùܛs +['mailer']; + +261 + } +} + +263 +public + +funùiÚ + + $£tMaž”CÚfigu¿tiÚ +( +$cÚfigu¿tiÚ +) + +265 +$this +-> +maž”CÚfigu¿tiÚ + = +$cÚfigu¿tiÚ +; + +266 + } +} + +273 +public + +funùiÚ + + $g‘Logg” +() + +275 ià(! + `is£t +( +$this +-> +çùܛs +['logger'])) + +277 +$this +-> +çùܛs +['logg”'] = +Ãw + + `sfNoLogg” +($this-> +di¥©ch” +); + +280  +$this +-> +çùܛs +['logger']; + +281 + } +} + +297 +public + +funùiÚ + +g‘D©aba£CÚÃùiÚ +( +$Çme + = 'default') + +299 ià( +nuÎ + !=ð +$this +-> +çùܛs +['databaseManager']) + +301  +$this +-> +çùܛs +['d©aba£Mªag”']-> +g‘D©aba£ +( +$Çme +)-> +g‘CÚÃùiÚ +(); + +304  + gnuÎ +; + +312 +public + +funùiÚ + + $g‘D©aba£Mªag” +() + +314  + `is£t +( +$this +-> +çùܛs +['d©aba£Mªag”']è? $this->çùܛs['d©aba£Mªag”'] : +nuÎ +; + +315 + } +} + +323 +public + +funùiÚ + + $g‘ModuËDœeùÜy +() + +326 ià( + `is£t +( +$this +-> +çùܛs +['aùiÚSck']è&& +$Ï¡EÁry + = $this->çùܛs['aùiÚSck']-> + `g‘La¡EÁry +()) + +328  +sfCÚfig +:: + `g‘ +('sf_­p_moduË_dœ').'/'. +$Ï¡EÁry +-> + `g‘ModuËName +(); + +330 + } +} + +338 +public + +funùiÚ + + $g‘ModuËName +() + +341 ià( + `is£t +( +$this +-> +çùܛs +['aùiÚSck']è&& +$Ï¡EÁry + = $this->çùܛs['aùiÚSck']-> + `g‘La¡EÁry +()) + +343  +$Ï¡EÁry +-> + `g‘ModuËName +(); + +345 + } +} + +352 +public + +funùiÚ + + $g‘Reque¡ +() + +354  + `is£t +( +$this +-> +çùܛs +['»que¡']è? $this->çùܛs['»que¡'] : +nuÎ +; + +355 + } +} + +362 +public + +funùiÚ + + $g‘Re¥Ú£ +() + +364  + `is£t +( +$this +-> +çùܛs +['»¥Ú£']è? $this->çùܛs['»¥Ú£'] : +nuÎ +; + +365 + } +} + +374 +public + +funùiÚ + + $£tRe¥Ú£ +( +$»¥Ú£ +) + +376 +$this +-> +çùܛs +['»¥Ú£'] = +$»¥Ú£ +; + +377 + } +} + +384 +public + +funùiÚ + + $g‘StÜage +() + +386  + `is£t +( +$this +-> +çùܛs +['¡Üage']è? $this->çùܛs['¡Üage'] : +nuÎ +; + +387 + } +} + +394 +public + +funùiÚ + + $g‘V›wCacheMªag” +() + +396  + `is£t +( +$this +-> +çùܛs +['v›wCacheMªag”']è? $this->çùܛs['v›wCacheMªag”'] : +nuÎ +; + +397 + } +} + +404 +public + +funùiÚ + + $g‘I18N +() + +406 ià(! +sfCÚfig +:: + `g‘ +('sf_i18n')) + +408 +throw + +Ãw + + `sfCÚfigu¿tiÚExû±iÚ +('You mustƒnable i18n support in your settings.yml configuration file.'); + +411  +$this +-> +çùܛs +['i18n']; + +412 + } +} + +419 +public + +funùiÚ + + $g‘Routšg +() + +421  + `is£t +( +$this +-> +çùܛs +['routšg']è? $this->çùܛs['routšg'] : +nuÎ +; + +422 + } +} + +429 +public + +funùiÚ + + $g‘U£r +() + +431  + `is£t +( +$this +-> +çùܛs +['u£r']è? $this->çùܛs['u£r'] : +nuÎ +; + +432 + } +} + +439 +public + +funùiÚ + + $g‘CÚfigCache +() + +441  +$this +-> +cÚfigu¿tiÚ +-> + `g‘CÚfigCache +(); + +442 + } +} + +451 +public + +funùiÚ + + $off£tExi¡s +( +$Çme +) + +453  +$this +-> + `has +( +$Çme +); + +454 + } +} + +463 +public + +funùiÚ + + $off£tG‘ +( +$Çme +) + +465  +$this +-> + `g‘ +( +$Çme +); + +466 + } +} + +474 +public + +funùiÚ + + $off£tS‘ +( +$off£t +, +$v®ue +) + +476 +$this +-> + `£t +( +$off£t +, +$v®ue +); + +477 + } +} + +484 +public + +funùiÚ + + $off£tUn£t +( +$off£t +) + +486 + `un£t +( +$this +-> +çùܛs +[ +$off£t +]); + +487 + } +} + +496 +public + +funùiÚ + + $g‘ +( +$Çme +) + +498 ià(! +$this +-> + `has +( +$Çme +)) + +500 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('Th"%s" objeù dÛ nكxi¡ iÀthcu¼’ˆcڋxt.', +$Çme +)); + +503  +$this +-> +çùܛs +[ +$Çme +]; + +504 + } +} + +512 +public + +funùiÚ + + $£t +( +$Çme +, +$objeù +) + +514 +$this +-> +çùܛs +[ +$Çme +] = +$objeù +; + +515 + } +} + +524 +public + +funùiÚ + + $has +( +$Çme +) + +526  + `is£t +( +$this +-> +çùܛs +[ +$Çme +]); + +527 + } +} + +537 +public + +funùiÚ + + $fž‹rTem¶©eP¬am‘”s +( +sfEv’t + +$ev’t +, +$·¿m‘”s +) + +539 +$·¿m‘”s +['sf_cڋxt'] = +$this +; + +540 +$·¿m‘”s +['sf_»que¡'] = +$this +-> +çùܛs +['request']; + +541 +$·¿m‘”s +['sf_·¿ms'] = +$this +-> +çùܛs +['»que¡']-> + `g‘P¬am‘”HÞd” +(); + +542 +$·¿m‘”s +['sf_»¥Ú£'] = +$this +-> +çùܛs +['response']; + +543 +$·¿m‘”s +['sf_u£r'] = +$this +-> +çùܛs +['user']; + +545  +$·¿m‘”s +; + +546 + } +} + +561 +public + +funùiÚ + + $__ÿÎ +( +$m‘hod +, +$¬gum’ts +) + +563 +$ev’t + = +$this +-> +di¥©ch” +-> + `nÙifyUÁž +( +Ãw + + `sfEv’t +($this, 'cڋxt.m‘hod_nÙ_found', + `¬¿y +('m‘hod' => +$m‘hod +, '¬gum’ts' => +$¬gum’ts +))); + +564 ià(! +$ev’t +-> + `isProûs£d +()) + +566 +$v”b + = + `sub¡r +( +$m‘hod +, 0, 3); + +567 +$çùÜy + = + `¡¹Þow” +( + `sub¡r +( +$m‘hod +, 3)); + +569 ià('g‘' =ð +$v”b + && +$this +-> + `has +( +$çùÜy +)) + +571  +$this +-> +çùܛs +[ +$çùÜy +]; + +573 ià('£t' =ð +$v”b + && + `is£t +( +$¬gum’ts +[0])) + +575  +$this +-> + `£t +( +$çùÜy +, +$¬gum’ts +[0]); + +578 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('C®ÈtØundefšed m‘hod %s::%s.', + `g‘_þass +( +$this +), +$m‘hod +)); + +581  +$ev’t +-> + `g‘R‘uºV®ue +(); + +582 + } +} + +589 +public + +funùiÚ + + $shutdown +() + +592 if( +$this +-> + `has +('user')) + +594 +$this +-> + `g‘U£r +()-> + `shutdown +(); + +595 +$this +-> + `g‘StÜage +()-> + `shutdown +(); + +598 ià( +$this +-> + `has +('routing')) + +600 +$this +-> + `g‘Routšg +()-> + `shutdown +(); + +603 ià( +sfCÚfig +:: + `g‘ +('sf_use_database')) + +605 +$this +-> + `g‘D©aba£Mªag” +()-> + `shutdown +(); + +608 ià( +sfCÚfig +:: + `g‘ +('sf_logging_enabled')) + +610 +$this +-> + `g‘Logg” +()-> + `shutdown +(); + +612 + } +} + + @lib/vendor/symfony/lib/util/sfDomCssSelector.class.php + +1 + gnodes + = +$nodes +; + +40 +public + +funùiÚ + +g‘Nodes +() + +42  + g$this +-> + gnodes +; + +45 +public + +funùiÚ + +g‘Node +() + +47  + g$this +-> + gnodes + ? $this->nodes[0] : +nuÎ +; + +50 +public + +funùiÚ + +g‘V®ue +() + +52  + g$this +-> + gnodes +[0]-> + gnodeV®ue +; + +55 +public + +funùiÚ + +g‘V®ues +() + +57 + g$v®ues + = +¬¿y +(); + +58 +fܗch + ( +$this +-> +nodes + +as + +$node +) + +60 + g$v®ues +[] = +$node +-> +nodeV®ue +; + +63  + g$v®ues +; + +66 +public + +funùiÚ + +m©chSšgË +( +$£ËùÜ +) + +68 + g$nodes + = +$this +-> +g‘EËm’ts +( +$£ËùÜ +); + +70  + g$nodes + ? +Ãw + +sfDomCssS–eùÜ +( +$nodes +[0]è:‚ew sfDomCssS–eùÜ( +¬¿y +()); + +73 +public + +funùiÚ + +m©chAÎ +( +$£ËùÜ +) + +75 + g$nodes + = +$this +-> +g‘EËm’ts +( +$£ËùÜ +); + +77  + g$nodes + ? +Ãw + +sfDomCssS–eùÜ +( +$nodes +è:‚ew sfDomCssS–eùÜ( +¬¿y +()); + +80 +´Ùeùed + +funùiÚ + +g‘EËm’ts +( +$£ËùÜ +) + +82 + g$nodes + = +¬¿y +(); + +83 +fܗch + ( +$this +-> +nodes + +as + +$node +) + +85 + g$»suÉ_nodes + = +$this +-> +g‘EËm’tsFÜNode +( +$£ËùÜ +, +$node +); + +86 ià( + g$»suÉ_nodes +) + +88 + g$nodes + = +¬¿y_m”ge +( +$nodes +, +$»suÉ_nodes +); + +92 +fܗch + ( +$nodes + +as + +$node +) + +94 + g$node +-> +»moveA‰ribu‹ +('sf_matched'); + +97  + g$nodes +; + +100 +´Ùeùed + +funùiÚ + +g‘EËm’tsFÜNode +( +$£ËùÜ +, +$roÙ_node +) + +102 + g$®l_nodes + = +¬¿y +(); + +103 +fܗch + ( +$this +-> +tok’ize_£ËùÜs +( +$£ËùÜ +è +as + $selector) + +105 + g$nodes + = +¬¿y +( +$roÙ_node +); + +106 +fܗch + ( +$this +-> +tok’ize +( +$£ËùÜ +è +as + +$tok’ +) + +108 + g$combš©Ü + = +$tok’ +['combinator']; + +109 + g$£ËùÜ + = +$tok’ +['selector']; + +111 + g$tok’ + = +Œim +( +$tok’ +['name']); + +113 + g$pos + = +¡½os +( +$tok’ +, '#'); + +114 ià( + gçl£ + !=ð +$pos + && +´eg_m©ch +('/^[A-Za-z0-9]*$/', +sub¡r +( +$tok’ +, 0, $pos))) + +117 + g$gName + = +sub¡r +( +$tok’ +, 0, +$pos +); + +118 + g$id + = +sub¡r +( +$tok’ +, +$pos + + 1); + +119 + g$x·th + = +Ãw + +DomXP©h +( +$roÙ_node +); + +120 + g$–em’t + = +$x·th +-> +qu”y +( +¥rštf +("//*[@id = '%s']", +$id +))-> +™em +(0); + +121 ià(! + g$–em’t + || ( + g$gName + && +¡¹Þow” +( +$–em’t +-> +nodeName +è!ð +$gName +)) + +124  +¬¿y +(); + +128 + g$nodes + = +¬¿y +( +$–em’t +); + +129 + g$nodes + = +$this +-> +m©chMuɝËCu¡omS–eùÜs +( +$nodes +, +$£ËùÜ +); + +134 + g$pos + = +¡½os +( +$tok’ +, '.'); + +135 ià( + gçl£ + !=ð +$pos + && +´eg_m©ch +('/^[A-Za-z0-9\*]*$/', +sub¡r +( +$tok’ +, 0, $pos))) + +138 + g$gName + = +sub¡r +( +$tok’ +, 0, +$pos +); + +139 ià(! + g$gName +) + +141 + g$gName + = '*'; + +143 + g$þassName + = +sub¡r +( +$tok’ +, +$pos + + 1); + +146 + g$founds + = +$this +-> +g‘EËm’tsByTagName +( +$nodes +, +$gName +, +$combš©Ü +); + +147 + g$nodes + = +¬¿y +(); + +148 +fܗch + ( +$founds + +as + +$found +) + +150 ià( +´eg_m©ch +('/(^|\s+)'. +$þassName +.'($|\s+)/', +$found +-> +g‘A‰ribu‹ +('class'))) + +152 + g$nodes +[] = +$found +; + +156 + g$nodes + = +$this +-> +m©chMuɝËCu¡omS–eùÜs +( +$nodes +, +$£ËùÜ +); + +162 ià( +´eg_m©ch +('/^(\w+|\*)(\[.+\])$/', +$tok’ +, +$m©ches +)) + +164 + g$gName + = +$m©ches +[1] ? $matches[1] : '*'; + +165 +´eg_m©ch_®l +('/ + +167 ([\ +w +\-]+) #attribute + +168 ([=~\|\^\ +$ +\*]?è#modif›¸( +ÝtiÚ® +) + +169 =? #equ® ( +ÝtiÚ® +) + +173 ([^\]]*è#nÚ +quÙed + +v®ue + ( +ÝtiÚ® +) + +176 / +x +', $matches[2], $matches, PREG_SET_ORDER); + +179 +$founds + = +$this +-> +g‘EËm’tsByTagName +( +$nodes +, +$gName +, +$combš©Ü +); + +180 + g$nodes + = +¬¿y +(); + +181 +fܗch + ( +$founds + +as + +$found +) + +183 + g$ok + = +çl£ +; + +184 +fܗch + ( +$m©ches + +as + +$m©ch +) + +186 + g$©ŒName + = +$m©ch +[1]; + +187 + g$©ŒO³¿tÜ + = +$m©ch +[2]; + +188 + g$©ŒV®ue + = +$m©ch +[4] ==ð'' ? ( +is£t +($match[5]) ? $match[5] : '') : $match[4]; + +190  + g$©ŒO³¿tÜ +) + +193 +$ok + = +$found +-> +g‘A‰ribu‹ +( +$©ŒName +è=ð +$©ŒV®ue +; + +196 +$ok + = +´eg_m©ch +('/\b'. +´eg_quÙe +( +$©ŒV®ue +, '/').'\b/', +$found +-> +g‘A‰ribu‹ +( +$©ŒName +)); + +199 +$ok + = +´eg_m©ch +('/^'. +´eg_quÙe +( +$©ŒV®ue +, '/').'-?/', +$found +-> +g‘A‰ribu‹ +( +$©ŒName +)); + +202 +$ok + = 0 ==ð +¡½os +( +$found +-> +g‘A‰ribu‹ +( +$©ŒName +), +$©ŒV®ue +); + +205 +$ok + = +$©ŒV®ue + =ð +sub¡r +( +$found +-> +g‘A‰ribu‹ +( +$©ŒName +), - +¡¾’ +($attrValue)); + +208 +$ok + = +çl£ + !=ð +¡½os +( +$found +-> +g‘A‰ribu‹ +( +$©ŒName +), +$©ŒV®ue +); + +212 +$ok + = +$found +-> +hasA‰ribu‹ +( +$©ŒName +); + +215 ià( + gçl£ + =ð +$ok +) + +221 ià( + g$ok +) + +223 + g$nodes +[] = +$found +; + +231 + g$nodes + = +$this +-> +g‘EËm’tsByTagName +( +$nodes +, +$tok’ +, +$combš©Ü +); + +233 + g$nodes + = +$this +-> +m©chMuɝËCu¡omS–eùÜs +( +$nodes +, +$£ËùÜ +); + +236 +fܗch + ( +$nodes + +as + +$node +) + +238 ià(! + g$node +-> +g‘A‰ribu‹ +('sf_matched')) + +240 + g$node +-> +£tA‰ribu‹ +('sf_m©ched', +Œue +); + +241 + g$®l_nodes +[] = +$node +; + +246  + g$®l_nodes +; + +249 +´Ùeùed + +funùiÚ + +g‘EËm’tsByTagName +( +$nodes +, +$gName +, +$combš©Ü + = ' ') + +251 +$founds + = +¬¿y +(); + +252 +fܗch + ( +$nodes + +as + +$node +) + +254  + g$combš©Ü +) + +258 +fܗch + ( +$node +-> +g‘EËm’tsByTagName +( +$gName +è +as + +$–em’t +) + +260 +$founds +[] = +$–em’t +; + +265 +fܗch + ( +$node +-> +chždNodes + +as + +$–em’t +) + +267 ià( +$gName + =ð +$–em’t +-> +nodeName +) + +269 +$founds +[] = +$–em’t +; + +275 +$–em’t + = +$node +-> +ÃxtSiblšg +; + +276 ià( + g$–em’t + && '#‹xt' =ð +$–em’t +-> +nodeName +) + +278 +$–em’t + = $–em’t-> +ÃxtSiblšg +; + +281 ià( + g$–em’t + && + g$gName + =ð +$–em’t +-> +nodeName +) + +283 +$founds +[] = +$–em’t +; + +287 +throw + +Ãw + +Exû±iÚ +( +¥rštf +('UÄecognized combš©Ü "%s".', +$combš©Ü +)); + +291  + g$founds +; + +294 +´Ùeùed + +funùiÚ + +tok’ize_£ËùÜs +( +$£ËùÜ +) + +297 + g$tok’s + = +¬¿y +(); + +298 + g$quÙed + = +çl£ +; + +299 + g$tok’ + = ''; + +300  + g$i + = 0, + g$max + = +¡¾’ +( +$£ËùÜ +); $i < $max; $i++) + +302 ià(',' =ð +$£ËùÜ +[ +$i +] && ! +$quÙed +) + +304 +$tok’s +[] = +Œim +( +$tok’ +); + +305 + g$tok’ + = ''; + +307 ià('"' =ð +$£ËùÜ +[ +$i +]) + +309 +$tok’ + .ð +$£ËùÜ +[ +$i +]; + +310 + g$quÙed + = +$quÙed + ? +çl£ + : +Œue +; + +314 + g$tok’ + .ð +$£ËùÜ +[ +$i +]; + +317 ià( + g$tok’ +) + +319 + g$tok’s +[] = +Œim +( +$tok’ +); + +322  + g$tok’s +; + +325 +´Ùeùed + +funùiÚ + +tok’ize +( +$£ËùÜ +) + +328 + g$tok’s + = +¬¿y +(); + +329 + g$combš©Üs + = +¬¿y +(' ', '>', '+'); + +330 + g$quÙed + = +çl£ +; + +331 + g$tok’ + = +¬¿y +('combinator' => ' ', 'name' => ''); + +332  + g$i + = 0, + g$max + = +¡¾’ +( +$£ËùÜ +); $i < $max; $i++) + +334 ià( +š_¬¿y +( +$£ËùÜ +[ +$i +], +$combš©Üs +è&& ! + g$quÙed +) + +337 + g$combš©Ü + = +$£ËùÜ +[ +$i +]; + +338  +š_¬¿y +( +$£ËùÜ +[ +$i + + 1], +$combš©Üs +)) + +340 ià(' ' !ð +$£ËùÜ +[++ +$i +]) + +342 +$combš©Ü + = +$£ËùÜ +[ +$i +]; + +346 + g$tok’s +[] = +$tok’ +; + +347 + g$tok’ + = +¬¿y +('combš©Ü' => +$combš©Ü +, 'name' => ''); + +349 ià('"' =ð +$£ËùÜ +[ +$i +]) + +351 +$tok’ +['Çme'] .ð +$£ËùÜ +[ +$i +]; + +352 + g$quÙed + = +$quÙed + ? +çl£ + : +Œue +; + +356 + g$tok’ +['Çme'] .ð +$£ËùÜ +[ +$i +]; + +359 ià( + g$tok’ +['name']) + +361 + g$tok’s +[] = +$tok’ +; + +364 +fܗch + ( +$tok’s + +as + & +$tok’ +) + +366 +li¡ +( +$tok’ +['Çme'], $tok’['£ËùÜ']èð +$this +-> +tok’ize_£ËùÜ_Çme +($token['name']); + +369  + g$tok’s +; + +372 +´Ùeùed + +funùiÚ + +tok’ize_£ËùÜ_Çme +( +$tok’_Çme +) + +375 + g$quÙed + = +çl£ +; + +376 + g$Çme + = ''; + +377 + g$£ËùÜ + = ''; + +378 + g$š_£ËùÜ + = +çl£ +; + +379  + g$i + = 0, + g$max + = +¡¾’ +( +$tok’_Çme +); $i < $max; $i++) + +381 ià('"' =ð +$tok’_Çme +[ +$i +]) + +383 +$quÙed + = $quÙed ? +çl£ + : +Œue +; + +386 ià(! + g$quÙed + && ':' =ð +$tok’_Çme +[ +$i +]) + +388 +$š_£ËùÜ + = +Œue +; + +391 ià( + g$š_£ËùÜ +) + +393 + g$£ËùÜ + .ð +$tok’_Çme +[ +$i +]; + +397 + g$Çme + .ð +$tok’_Çme +[ +$i +]; + +401  +¬¿y +( +$Çme +, +$£ËùÜ +); + +404 +´Ùeùed + +funùiÚ + +m©chMuɝËCu¡omS–eùÜs +( +$nodes +, +$£ËùÜ +) + +406 ià(! + g$£ËùÜ +) + +408  + g$nodes +; + +411 +fܗch + ( +$this +-> +¥l™_cu¡om_£ËùÜ +( +$£ËùÜ +è +as + $selector) { + +412 + g$nodes + = +$this +-> +m©chCu¡omS–eùÜ +( +$nodes +, +$£ËùÜ +); + +414  + g$nodes +; + +417 +´Ùeùed + +funùiÚ + +m©chCu¡omS–eùÜ +( +$nodes +, +$£ËùÜ +) + +419 ià(! + g$£ËùÜ +) + +421  + g$nodes +; + +424 + g$£ËùÜ + = +$this +-> +tok’ize_cu¡om_£ËùÜ +( +$£ËùÜ +); + +425 + g$m©chšgNodes + = +¬¿y +(); + +426  + g$i + = 0, + g$max + = +couÁ +( +$nodes +); $i < $max; $i++) + +428  + g$£ËùÜ +['selector']) + +431 ià( +çl£ + !=ð +¡½os +( +$nodes +[ +$i +]-> +‹xtCڋÁ +, +$£ËùÜ +['parameter'])) + +433 + g$m©chšgNodes +[] = +$nodes +[ +$i +]; + +437 ià( +$nodes +[ +$i +] ==ð +$this +-> +Áh +($nodes[$i]-> +·»ÁNode +-> +fœ¡Chžd +, ( +š‹g” +è +$£ËùÜ +['parameter'])) + +439 + g$m©chšgNodes +[] = +$nodes +[ +$i +]; + +443 ià( +$nodes +[ +$i +] ==ð +$this +-> +Áh +($nodes[$i]-> +·»ÁNode +-> +fœ¡Chžd +)) + +445 +$m©chšgNodes +[] = +$nodes +[ +$i +]; + +449 ià( +$nodes +[ +$i +] ==ð +$this +-> +Áh +($nodes[$i]-> +·»ÁNode +-> +Ï¡Chžd +, 1, 'previousSibling')) + +451 + g$m©chšgNodes +[] = +$nodes +[ +$i +]; + +455 ià( +$i + < ( +š‹g” +è +$£ËùÜ +['parameter']) + +457 +$m©chšgNodes +[] = +$nodes +[ +$i +]; + +461 ià( +$i + > ( +š‹g” +è +$£ËùÜ +['parameter']) + +463 +$m©chšgNodes +[] = +$nodes +[ +$i +]; + +467 ià( +$i + % 2) + +469 +$m©chšgNodes +[] = +$nodes +[ +$i +]; + +473 ià(0 =ð +$i + % 2) + +475 +$m©chšgNodes +[] = +$nodes +[ +$i +]; + +480 ià( +$i + =ð( +š‹g” +è +$£ËùÜ +['parameter']) + +482 +$m©chšgNodes +[] = +$nodes +[ +$i +]; + +486 ià( +$i + == 0) + +488 +$m©chšgNodes +[] = +$nodes +[ +$i +]; + +492 ià( +$i + =ð +$max + - 1) + +494 +$m©chšgNodes +[] = +$nodes +[ +$i +]; + +498 +throw + +Ãw + +Exû±iÚ +( +¥rštf +('UÄecognized s–eùÜ "%s".', +$£ËùÜ +['selector'])); + +502  + g$m©chšgNodes +; + +505 +´Ùeùed + +funùiÚ + +¥l™_cu¡om_£ËùÜ +( +$£ËùÜs +) + +507 ià(! +´eg_m©ch_®l +('/ + +509 (?:[ +a +- +zA +- +Z0 +-9\-]+) + +519 / +x +', $selectors, $matches, PREG_PATTERN_ORDER)) + +521 +throw + +Ãw + +Exû±iÚ +( +¥rštf +('UÇbˁإl™ cu¡om s–eùÜ "%s".', +$£ËùÜs +)); + +523  +$m©ches +[0]; + +526 +´Ùeùed + +funùiÚ + +tok’ize_cu¡om_£ËùÜ +( +$£ËùÜ +) + +528 ià(! +´eg_m©ch +('/ + +529 ([ +a +- +zA +- +Z0 +-9\-]+) + +539 / +x +', substr($selector, 1), $matches)) + +541 +throw + +Ãw + +Exû±iÚ +( +¥rštf +('UÇbˁطr£ cu¡om s–eùÜ "%s".', +$£ËùÜ +)); + +543  +¬¿y +('£ËùÜ' => +$m©ches +[1], '·¿m‘”' => +is£t +($matches[3]) ? ($matches[3] ? $matches[3] : $matches[4]) : ''); + +546 +´Ùeùed + +funùiÚ + +Áh +( +$cur +, +$»suÉ + = 1, +$dœ + = 'nextSibling') + +548 +$num + = 0; + +549 ; +$cur +; $cu¸ð$cur-> +$dœ +) + +551 ià(1 =ð +$cur +-> +nodeTy³ +) + +553 ++ +$num +; + +556 ià( +$num + =ð +$»suÉ +) + +558  +$cur +; + +566 +public + +funùiÚ + +»wšd +() + +568 +»£t +( +$this +-> +nodes +); + +570 +$this +-> +couÁ + = couÁ($this-> +nodes +); + +578 +public + +funùiÚ + +key +() + +580  +key +( +$this +-> +nodes +); + +588 +public + +funùiÚ + +cu¼’t +() + +590  +cu¼’t +( +$this +-> +nodes +); + +596 +public + +funùiÚ + +Ãxt +() + +598 +Ãxt +( +$this +-> +nodes +); + +600 +$this +-> +couÁ + --; + +612 +public + +funùiÚ + +v®id +() + +614  +$this +-> +couÁ + > 0; + +622 +public + +funùiÚ + +couÁ +() + +624  +couÁ +( +$this +-> +nodes +); + + @lib/vendor/symfony/lib/util/sfFinder.class.php + +1 +maxd•th + = +$Ëv– +; + +58  +$this +; + +69 +public + +funùiÚ + + $mšd•th +( +$Ëv– +) + +71 +$this +-> +mšd•th + = +$Ëv– +; + +73  +$this +; + +74 + } +} + +76 +public + +funùiÚ + + $g‘_ty³ +() + +78  +$this +-> +ty³ +; + +79 + } +} + +87 +public +  +funùiÚ + + $ty³ +( +$Çme +) + +89 +$fšd” + = +Ãw + + `£lf +(); + +90  +$fšd” +-> + `£tTy³ +( +$Çme +); + +91 + } +} + +98 +public + +funùiÚ + + $£tTy³ +( +$Çme +) + +100 +$Çme + = + `¡¹Þow” +($name); + +102 ià( + `sub¡r +( +$Çme +, 0, 3) === 'dir') + +104 +$this +-> +ty³ + = 'directory'; + +106  +$this +; + +108 ià( +$Çme + === 'any') + +110 +$this +-> +ty³ + = 'any'; + +112  +$this +; + +115 +$this +-> +ty³ + = 'file'; + +117  +$this +; + +118 + } +} + +123 +´Ùeùed + +funùiÚ + + $to_»gex +( +$¡r +) + +125 ià( + `´eg_m©ch +('/^(!)?([^a-zA-Z0-9\\\\]).+?\\2[ims]?$/', +$¡r +)) + +127  +$¡r +; + +130  +sfGlobToRegex +:: + `glob_to_»gex +( +$¡r +); + +131 + } +} + +133 +´Ùeùed + +funùiÚ + + $¬gs_to_¬¿y +( +$¬g_li¡ +, +$nÙ + = +çl£ +) + +135 +$li¡ + = + `¬¿y +(); + +136 +$nbArgLi¡ + = + `couÁ +( +$¬g_li¡ +); + +137  +$i + = 0; $˜< +$nbArgLi¡ +; $i++) + +139 ià( + `is_¬¿y +( +$¬g_li¡ +[ +$i +])) + +141 + `fܗch + ( +$¬g_li¡ +[ +$i +] +as + +$¬g +) + +143 +$li¡ +[] = + `¬¿y +( +$nÙ +, +$this +-> + `to_»gex +( +$¬g +)); + +148 +$li¡ +[] = + `¬¿y +( +$nÙ +, +$this +-> + `to_»gex +( +$¬g_li¡ +[ +$i +])); + +152  +$li¡ +; + +153 + } +} + +167 +public + +funùiÚ + + $Çme +() + +169 +$¬gs + = + `func_g‘_¬gs +(); + +170 +$this +-> +Çmes + = + `¬¿y_m”ge +($this->Çmes, $this-> + `¬gs_to_¬¿y +( +$¬gs +)); + +172  +$this +; + +173 + } +} + +182 +public + +funùiÚ + + $nÙ_Çme +() + +184 +$¬gs + = + `func_g‘_¬gs +(); + +185 +$this +-> +Çmes + = + `¬¿y_m”ge +($this->Çmes, $this-> + `¬gs_to_¬¿y +( +$¬gs +, +Œue +)); + +187  +$this +; + +188 + } +} + +200 +public + +funùiÚ + + $size +() + +202 +$¬gs + = + `func_g‘_¬gs +(); + +203 +$num¬gs + = + `couÁ +( +$¬gs +); + +204  +$i + = 0; $˜< +$num¬gs +; $i++) + +206 +$this +-> +sizes +[] = +Ãw + + `sfNumb”Com·» +( +$¬gs +[ +$i +]); + +209  +$this +; + +210 + } +} + +218 +public + +funùiÚ + + $´uà +() + +220 +$¬gs + = + `func_g‘_¬gs +(); + +221 +$this +-> +´uÃs + = + `¬¿y_m”ge +($this->´uÃs, $this-> + `¬gs_to_¬¿y +( +$¬gs +)); + +223  +$this +; + +224 + } +} + +232 +public + +funùiÚ + + $disÿrd +() + +234 +$¬gs + = + `func_g‘_¬gs +(); + +235 +$this +-> +disÿrds + = + `¬¿y_m”ge +($this->disÿrds, $this-> + `¬gs_to_¬¿y +( +$¬gs +)); + +237  +$this +; + +238 + } +} + +249 +public + +funùiÚ + + $ignÜe_v”siÚ_cÚŒÞ +( +$ignÜe + = +Œue +) + +251 +$this +-> +ignÜe_v”siÚ_cÚŒÞ + = +$ignÜe +; + +253  +$this +; + +254 + } +} + +261 +public + +funùiÚ + + $sÜt_by_Çme +() + +263 +$this +-> +sÜt + = 'name'; + +265  +$this +; + +266 + } +} + +273 +public + +funùiÚ + + $sÜt_by_ty³ +() + +275 +$this +-> +sÜt + = 'type'; + +277  +$this +; + +278 + } +} + +291 +public + +funùiÚ + + $exec +() + +293 +$¬gs + = + `func_g‘_¬gs +(); + +294 +$num¬gs + = + `couÁ +( +$¬gs +); + +295  +$i + = 0; $˜< +$num¬gs +; $i++) + +297 ià( + `is_¬¿y +( +$¬gs +[ +$i +]è&& ! + `m‘hod_exi¡s +($args[$i][0], $args[$i][1])) + +299 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('m‘hod "%s" dÛ nكxi¡ fÜ objeù "%s".', +$¬gs +[ +$i +][1], $args[$i][0])); + +301 ià(! + `is_¬¿y +( +$¬gs +[ +$i +]è&& ! + `funùiÚ_exi¡s +($args[$i])) + +303 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('funùiÚ "%s" dÛ nكxi¡.', +$¬gs +[ +$i +])); + +306 +$this +-> +execs +[] = +$¬gs +[ +$i +]; + +309  +$this +; + +310 + } +} + +317 +public + +funùiÚ + + $»Ïtive +() + +319 +$this +-> +»Ïtive + = +Œue +; + +321  +$this +; + +322 + } +} + +329 +public + +funùiÚ + + $fÞlow_lšk +() + +331 +$this +-> +fÞlow_lšk + = +Œue +; + +333  +$this +; + +334 + } +} + +341 +public + +funùiÚ + + $š +() + +343 +$fžes + = + `¬¿y +(); + +344 +$h”e_dœ + = + `g‘cwd +(); + +346 +$fšd” + = +þÚe + +$this +; + +348 ià( +$this +-> +ignÜe_v”siÚ_cÚŒÞ +) + +350 +$ignÜes + = + `¬¿y +('.svn', '_svn', 'CVS', '_darcs', '.arch-params', '.monotone', '.bzr', '.git', '.hg'); + +352 +$fšd” +-> + `disÿrd +( +$ignÜes +)-> + `´uà +($ignores); + +356 +$num¬gs + = + `func_num_¬gs +(); + +357 +$¬g_li¡ + = + `func_g‘_¬gs +(); + +358 ià( +$num¬gs + ==ð1 && + `is_¬¿y +( +$¬g_li¡ +[0])) + +360 +$¬g_li¡ + = $arg_list[0]; + +361 +$num¬gs + = + `couÁ +( +$¬g_li¡ +); + +364  +$i + = 0; $˜< +$num¬gs +; $i++) + +366 +$dœ + = + `»®·th +( +$¬g_li¡ +[ +$i +]); + +368 ià(! + `is_dœ +( +$dœ +)) + +373 +$dœ + = + `¡r_»¶aû +('\\', '/', $dir); + +376 ià(! +£lf +:: + `isP©hAbsÞu‹ +( +$dœ +)) + +378 +$dœ + = +$h”e_dœ +.'/'.$dir; + +381 +$Ãw_fžes + = + `¡r_»¶aû +('\\', '/', +$fšd” +-> + `£¬ch_š +( +$dœ +)); + +383 ià( +$this +-> +»Ïtive +) + +385 +$Ãw_fžes + = + `´eg_»¶aû +('#^'. + `´eg_quÙe +( + `¹rim +( +$dœ +, '/'), '#').'/#', '', $new_files); + +388 +$fžes + = + `¬¿y_m”ge +($fžes, +$Ãw_fžes +); + +391 ià( +$this +-> +sÜt + === 'name') + +393 + `sÜt +( +$fžes +); + +396  + `¬¿y_unique +( +$fžes +); + +397 + } +} + +399 +´Ùeùed + +funùiÚ + + $£¬ch_š +( +$dœ +, +$d•th + = 0) + +401 ià( +$d•th + > +$this +-> +maxd•th +) + +403  + `¬¿y +(); + +406 +$dœ + = + `»®·th +($dir); + +408 ià((! +$this +-> +fÞlow_lšk +è&& + `is_lšk +( +$dœ +)) + +410  + `¬¿y +(); + +413 +$fžes + = + `¬¿y +(); + +414 +$‹mp_fžes + = + `¬¿y +(); + +415 +$‹mp_fÞd”s + = + `¬¿y +(); + +416 ià( + `is_dœ +( +$dœ +è&& + `is_»adabË +($dir)) + +418 +$cu¼’t_dœ + = + `ݒdœ +( +$dœ +); + +419  +çl£ + !=ð +$’ŒyÇme + = + `»addœ +( +$cu¼’t_dœ +)) + +421 ià( +$’ŒyÇme + == '.' || $entryname == '..') ; + +423 +$cu¼’t_’Œy + = +$dœ +. +DIRECTORY_SEPARATOR +. +$’ŒyÇme +; + +424 ià((! +$this +-> +fÞlow_lšk +è&& + `is_lšk +( +$cu¼’t_’Œy +)) + +429 ià( + `is_dœ +( +$cu¼’t_’Œy +)) + +431 ià( +$this +-> +sÜt + === 'type') + +433 +$‹mp_fÞd”s +[ +$’ŒyÇme +] = +$cu¼’t_’Œy +; + +437 ià(( +$this +-> +ty³ + ==ð'dœeùÜy' || $this->ty³ ==ð'ªy'è&& ( +$d•th + >ð$this-> +mšd•th +è&& !$this-> + `is_disÿrded +( +$dœ +, +$’ŒyÇme +è&& $this-> + `m©ch_Çmes +($dœ, $’ŒyÇmeè&& $this-> + `exec_ok +($dir, $entryname)) + +439 +$fžes +[] = +$cu¼’t_’Œy +; + +442 ià(! +$this +-> + `is_´uÃd +( +$dœ +, +$’ŒyÇme +)) + +444 +$fžes + = + `¬¿y_m”ge +($fžes, +$this +-> + `£¬ch_š +( +$cu¼’t_’Œy +, +$d•th + + 1)); + +450 ià(( +$this +-> +ty³ + !=ð'dœeùÜy' || $this->ty³ ==ð'ªy'è&& ( +$d•th + >ð$this-> +mšd•th +è&& !$this-> + `is_disÿrded +( +$dœ +, +$’ŒyÇme +è&& $this-> + `m©ch_Çmes +($dœ, $’ŒyÇmeè&& $this-> + `size_ok +($dœ, $’ŒyÇmeè&& $this-> + `exec_ok +($dir, $entryname)) + +452 ià( +$this +-> +sÜt + === 'type') + +454 +$‹mp_fžes +[] = +$cu¼’t_’Œy +; + +458 +$fžes +[] = +$cu¼’t_’Œy +; + +464 ià( +$this +-> +sÜt + === 'type') + +466 + `ksÜt +( +$‹mp_fÞd”s +); + +467 + `fܗch +( +$‹mp_fÞd”s + +as + +$’ŒyÇme + => +$cu¼’t_’Œy +) + +469 ià(( +$this +-> +ty³ + ==ð'dœeùÜy' || $this->ty³ ==ð'ªy'è&& ( +$d•th + >ð$this-> +mšd•th +è&& !$this-> + `is_disÿrded +( +$dœ +, +$’ŒyÇme +è&& $this-> + `m©ch_Çmes +($dœ, $’ŒyÇmeè&& $this-> + `exec_ok +($dir, $entryname)) + +471 +$fžes +[] = +$cu¼’t_’Œy +; + +474 ià(! +$this +-> + `is_´uÃd +( +$dœ +, +$’ŒyÇme +)) + +476 +$fžes + = + `¬¿y_m”ge +($fžes, +$this +-> + `£¬ch_š +( +$cu¼’t_’Œy +, +$d•th + + 1)); + +480 + `sÜt +( +$‹mp_fžes +); + +481 +$fžes + = + `¬¿y_m”ge +($fžes, +$‹mp_fžes +); + +484 + `þo£dœ +( +$cu¼’t_dœ +); + +487  +$fžes +; + +488 + } +} + +490 +´Ùeùed + +funùiÚ + + $m©ch_Çmes +( +$dœ +, +$’Œy +) + +492 ià(! + `couÁ +( +$this +-> +Çmes +)è +Œue +; + +497 +$Úe_nÙ_Çme_ruË + = +çl£ +; + +498 +$Úe_Çme_ruË + = +çl£ +; + +500 + `fܗch + ( +$this +-> +Çmes + +as + +$¬gs +) + +502 + `li¡ +( +$nÙ +, +$»gex +èð +$¬gs +; + +503 +$nÙ + ? +$Úe_nÙ_Çme_ruË + = +Œue + : +$Úe_Çme_ruË + =rue; + +504 ià( + `´eg_m©ch +( +$»gex +, +$’Œy +)) + +509  +$nÙ + ? +çl£ + : +Œue +; + +513 ià( +$Úe_nÙ_Çme_ruË + && +$Úe_Çme_ruË +) + +515  +çl£ +; + +517 ià( +$Úe_nÙ_Çme_ruË +) + +519  +Œue +; + +521 ià( +$Úe_Çme_ruË +) + +523  +çl£ +; + +525  +Œue +; + +526 + } +} + +528 +´Ùeùed + +funùiÚ + + $size_ok +( +$dœ +, +$’Œy +) + +530 ià(0 ==ð + `couÁ +( +$this +-> +sizes +)è +Œue +; + +532 ià(! + `is_fže +( +$dœ +. +DIRECTORY_SEPARATOR +. +$’Œy +)è +Œue +; + +534 +$fžesize + = + `fžesize +( +$dœ +. +DIRECTORY_SEPARATOR +. +$’Œy +); + +535 + `fܗch + ( +$this +-> +sizes + +as + +$numb”_com·» +) + +537 ià(! +$numb”_com·» +-> + `‹¡ +( +$fžesize +)è +çl£ +; + +540  +Œue +; + +541 + } +} + +543 +´Ùeùed + +funùiÚ + + $is_´uÃd +( +$dœ +, +$’Œy +) + +545 ià(0 ==ð + `couÁ +( +$this +-> +´uÃs +)è +çl£ +; + +547 + `fܗch + ( +$this +-> +´uÃs + +as + +$¬gs +) + +549 +$»gex + = +$¬gs +[1]; + +550 ià( + `´eg_m©ch +( +$»gex +, +$’Œy +)è +Œue +; + +553  +çl£ +; + +554 + } +} + +556 +´Ùeùed + +funùiÚ + + $is_disÿrded +( +$dœ +, +$’Œy +) + +558 ià(0 ==ð + `couÁ +( +$this +-> +disÿrds +)è +çl£ +; + +560 + `fܗch + ( +$this +-> +disÿrds + +as + +$¬gs +) + +562 +$»gex + = +$¬gs +[1]; + +563 ià( + `´eg_m©ch +( +$»gex +, +$’Œy +)è +Œue +; + +566  +çl£ +; + +567 + } +} + +569 +´Ùeùed + +funùiÚ + + $exec_ok +( +$dœ +, +$’Œy +) + +571 ià(0 ==ð + `couÁ +( +$this +-> +execs +)è +Œue +; + +573 + `fܗch + ( +$this +-> +execs + +as + +$exec +) + +575 ià(! + `ÿÎ_u£r_func_¬¿y +( +$exec +, + `¬¿y +( +$dœ +, +$’Œy +))è +çl£ +; + +578  +Œue +; + +579 + } +} + +581 +public +  +funùiÚ + + $isP©hAbsÞu‹ +( +$·th +) + +583 ià( +$·th +{0} === '/' || $path{0} === '\\' || + +584 ( + `¡¾’ +( +$·th +è> 3 && + `ùy³_®pha +($path{0}) && + +585 +$·th +{1} === ':' && + +586 ( +$·th +{2} === '\\' || $path{2} === '/') + +590  +Œue +; + +593  +çl£ +; + +594 + } +} + +622 þas  + csfGlobToRegex + + +624 +´Ùeùed +  + m$¡riù_Ëadšg_dÙ + = +Œue +; + +625 +´Ùeùed +  + m$¡riù_wždÿrd_¦ash + = +Œue +; + +627 +public +  +funùiÚ + + $£tSŒiùL—dšgDÙ +( +$boޗn +) + +629 +£lf +:: +$¡riù_Ëadšg_dÙ + = +$boޗn +; + +632 +public +  +funùiÚ + + $£tSŒiùWždÿrdSÏsh +( +$boޗn +) + +634 +£lf +:: +$¡riù_wždÿrd_¦ash + = +$boޗn +; + +635 + } +} + +643 +public +  +funùiÚ + + $glob_to_»gex +( +$glob +) + +645 +$fœ¡_by‹ + = +Œue +; + +646 +$esÿpšg + = +çl£ +; + +647 +$š_cu¾›s + = 0; + +648 +$»gex + = ''; + +649 +$sizeGlob + = + `¡¾’ +( +$glob +); + +650  +$i + = 0; $˜< +$sizeGlob +; $i++) + +652 +$ÿr + = +$glob +[ +$i +]; + +653 ià( +$fœ¡_by‹ +) + +655 ià( +£lf +:: +$¡riù_Ëadšg_dÙ + && +$ÿr + !== '.') + +657 +$»gex + .= '(?=[^\.])'; + +660 +$fœ¡_by‹ + = +çl£ +; + +663 ià( +$ÿr + === '/') + +665 +$fœ¡_by‹ + = +Œue +; + +668 ià( +$ÿr + === '.' || $car === '(' || $car === ')' || $car === '|' || $car === '+' || $car === '^' || $car === '$') + +670 +$»gex + .= "\\$car"; + +672 + `–£if + ( +$ÿr + === '*') + +674 +$»gex + .ð( +$esÿpšg + ? '\\*' : ( +£lf +:: +$¡riù_wždÿrd_¦ash + ? '[^/]*' : '.*')); + +676 + `–£if + ( +$ÿr + === '?') + +678 +$»gex + .ð( +$esÿpšg + ? '\\?' : ( +£lf +:: +$¡riù_wždÿrd_¦ash + ? '[^/]' : '.')); + +680 + `–£if + ( +$ÿr + === '{') + +682 +$»gex + .ð( +$esÿpšg + ? '\\{' : '('); + +683 ià(! +$esÿpšg +è++ +$š_cu¾›s +; + +685 + `–£if + ( +$ÿr + ==ð'}' && +$š_cu¾›s +) + +687 +$»gex + .ð( +$esÿpšg + ? '}' : ')'); + +688 ià(! +$esÿpšg +è-- +$š_cu¾›s +; + +690 + `–£if + ( +$ÿr + ==ð',' && +$š_cu¾›s +) + +692 +$»gex + .ð( +$esÿpšg + ? ',' : '|'); + +694 + `–£if + ( +$ÿr + === '\\') + +696 ià( +$esÿpšg +) + +698 +$»gex + .= '\\\\'; + +699 +$esÿpšg + = +çl£ +; + +703 +$esÿpšg + = +Œue +; + +710 +$»gex + .ð +$ÿr +; + +712 +$esÿpšg + = +çl£ +; + +715  '#^'. +$»gex +.'$#'; + +716 + } +} + +744 þas  + csfNumb”Com·» + + +746 +´Ùeùed + + m$‹¡ + = ''; + +748 +public + +funùiÚ + + $__cÚ¡ruù +( +$‹¡ +) + +750 +$this +-> +‹¡ + = +$‹¡ +; + +753 +public + +funùiÚ + + $‹¡ +( +$numb” +) + +755 ià(! + `´eg_m©ch +('{^([<>]=?)?(.*?)([kmg]i?)?$}i', +$this +-> +‹¡ +, +$m©ches +)) + +757 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('dÚ\'ˆund”¡ªd "%s"‡ ¨‹¡.', +$this +-> +‹¡ +)); + +760 +$rg‘ + = + `¬¿y_key_exi¡s +(2, +$m©ches +) ? $matches[2] : ''; + +761 +$magn™ude + = + `¬¿y_key_exi¡s +(3, +$m©ches +) ? $matches[3] : ''; + +762 ià( + `¡¹Þow” +( +$magn™ude +è==ð'k'è +$rg‘ + *= 1000; + +763 ià( + `¡¹Þow” +( +$magn™ude +è==ð'ki'è +$rg‘ + *= 1024; + +764 ià( + `¡¹Þow” +( +$magn™ude +è==ð'm'è +$rg‘ + *= 1000000; + +765 ià( + `¡¹Þow” +( +$magn™ude +è==ð'mi'è +$rg‘ + *= 1024*1024; + +766 ià( + `¡¹Þow” +( +$magn™ude +è==ð'g'è +$rg‘ + *= 1000000000; + +767 ià( + `¡¹Þow” +( +$magn™ude +è==ð'gi'è +$rg‘ + *= 1024*1024*1024; + +769 +$com·risÚ + = + `¬¿y_key_exi¡s +(1, +$m©ches +) ? $matches[1] : '=='; + +770 ià( +$com·risÚ + === '==' || $comparison == '') + +772  ( +$numb” + =ð +$rg‘ +); + +774 ià( +$com·risÚ + === '>') + +776  ( +$numb” + > +$rg‘ +); + +778 ià( +$com·risÚ + === '>=') + +780  ( +$numb” + >ð +$rg‘ +); + +782 ià( +$com·risÚ + === '<') + +784  ( +$numb” + < +$rg‘ +); + +786 ià( +$com·risÚ + === '<=') + +788  ( +$numb” + <ð +$rg‘ +); + +791  +çl£ +; + +792 + } +} + + @lib/vendor/symfony/lib/util/sfInflector.class.php + +1 "'::'.strtoupper('\\1')", + +34  +$tmp +; + +44 +public +  +funùiÚ + + $und”scÜe +( +$ÿm–_ÿ£d_wÜd +) + +46 +$tmp + = +$ÿm–_ÿ£d_wÜd +; + +47 +$tmp + = + `¡r_»¶aû +('::', '/', $tmp); + +48 +$tmp + = +sfToÞk™ +:: + `´egŒ +($tmp, + `¬¿y +('/([A-Z]+)([A-Z][a-z])/' => '\\1_\\2', + +51  + `¡¹Þow” +( +$tmp +); + +52 + } +} + +61 +public +  +funùiÚ + + $demodulize +( +$þass_Çme_š_moduË +) + +63  + `´eg_»¶aû +('/^.*::/', '', +$þass_Çme_š_moduË +); + +64 + } +} + +75 +public +  +funùiÚ + + $fÜeign_key +( +$þass_Çme +, +$£·¿‹_w™h_und”scÜe + = +Œue +) + +77  +sfInæeùÜ +:: + `und”scÜe +(sfInæeùÜ:: + `demodulize +( +$þass_Çme +)).( +$£·¿‹_w™h_und”scÜe + ? "_id" : "id"); + +78 + } +} + +87 +public +  +funùiÚ + + $bËize +( +$þass_Çme +) + +89  +sfInæeùÜ +:: + `und”scÜe +( +$þass_Çme +); + +90 + } +} + +99 +public +  +funùiÚ + + $þassify +( +$bË_Çme +) + +101  +sfInæeùÜ +:: + `ÿm–ize +( +$bË_Çme +); + +102 + } +} + +112 +public +  +funùiÚ + + $humªize +( +$low”_ÿ£_ªd_und”scÜed_wÜd +) + +114 ià( + `sub¡r +( +$low”_ÿ£_ªd_und”scÜed_wÜd +, -3) === '_id') + +116 +$low”_ÿ£_ªd_und”scÜed_wÜd + = + `sub¡r +($lower_case_and_underscored_word, 0, -3); + +119  + `ucfœ¡ +( + `¡r_»¶aû +('_', ' ', +$low”_ÿ£_ªd_und”scÜed_wÜd +)); + +120 + } +} + + @lib/vendor/symfony/lib/util/sfNamespacedParameterHolder.class.php + +1 +deçuÉ_Çme¥aû + = +$Çme¥aû +; + +51 +public + +funùiÚ + + $£tDeçuÉName¥aû +( +$Çme¥aû +, +$move + = +Œue +) + +53 ià( +$move +) + +55 ià( +nuÎ + !=ð +$v®ues + = +$this +-> + `»moveName¥aû +()) + +57 +$this +-> + `addByRef +( +$v®ues +, +$Çme¥aû +); + +61 +$this +-> +deçuÉ_Çme¥aû + = +$Çme¥aû +; + +62 + } +} + +71 +public + +funùiÚ + + $g‘DeçuÉName¥aû +() + +73  +$this +-> +deçuÉ_Çme¥aû +; + +74 + } +} + +79 +public + +funùiÚ + + $þ—r +() + +81 +$this +-> +·¿m‘”s + = +nuÎ +; + +82 +$this +-> +·¿m‘”s + = + `¬¿y +(); + +83 + } +} + +98 +public + + gfunùiÚ + & + $g‘ +( +$Çme +, +$deçuÉ + = +nuÎ +, +$ns + =‚ull) + +100 ià(! +$ns +) + +102 +$ns + = +$this +-> +deçuÉ_Çme¥aû +; + +105 ià( + `is£t +( +$this +-> +·¿m‘”s +[ +$ns +][ +$Çme +])) + +107 +$v®ue + = & +$this +-> +·¿m‘”s +[ +$ns +][ +$Çme +]; + +111 +$v®ue + = +$deçuÉ +; + +114  +$v®ue +; + +115 + } +} + +124 +public + +funùiÚ + + $g‘Names +( +$ns + = +nuÎ +) + +126 ià(! +$ns +) + +128 +$ns + = +$this +-> +deçuÉ_Çme¥aû +; + +131 ià( + `is£t +( +$this +-> +·¿m‘”s +[ +$ns +])) + +133  + `¬¿y_keys +( +$this +-> +·¿m‘”s +[ +$ns +]); + +136  + `¬¿y +(); + +137 + } +} + +144 +public + +funùiÚ + + $g‘Name¥aûs +() + +146  + `¬¿y_keys +( +$this +-> +·¿m‘”s +); + +147 + } +} + +161 +public + + gfunùiÚ + & + $g‘AÎ +( +$ns + = +nuÎ +) + +163 ià(! +$ns +) + +165 +$ns + = +$this +-> +deçuÉ_Çme¥aû +; + +168 +$·¿m‘”s + = + `¬¿y +(); + +170 ià( + `is£t +( +$this +-> +·¿m‘”s +[ +$ns +])) + +172 +$·¿m‘”s + = +$this +-> +·¿m‘”s +[ +$ns +]; + +175  +$·¿m‘”s +; + +176 + } +} + +186 +public + +funùiÚ + + $has +( +$Çme +, +$ns + = +nuÎ +) + +188 ià(! +$ns +) + +190 +$ns + = +$this +-> +deçuÉ_Çme¥aû +; + +193  + `is£t +( +$this +-> +·¿m‘”s +[ +$ns +][ +$Çme +]); + +194 + } +} + +203 +public + +funùiÚ + + $hasName¥aû +( +$ns +) + +205  + `is£t +( +$this +-> +·¿m‘”s +[ +$ns +]); + +206 + } +} + +217 +public + +funùiÚ + + $»move +( +$Çme +, +$deçuÉ + = +nuÎ +, +$ns + =‚ull) + +219 ià(! +$ns +) + +221 +$ns + = +$this +-> +deçuÉ_Çme¥aû +; + +224 +$»tv® + = +$deçuÉ +; + +226 ià( + `is£t +( +$this +-> +·¿m‘”s +[ +$ns +]è&& + `¬¿y_key_exi¡s +( +$Çme +, $this->parameters[$ns])) + +228 +$»tv® + = +$this +-> +·¿m‘”s +[ +$ns +][ +$Çme +]; + +229 + `un£t +( +$this +-> +·¿m‘”s +[ +$ns +][ +$Çme +]); + +232  +$»tv® +; + +233 + } +} + +240 +public + + gfunùiÚ + & + $»moveName¥aû +( +$ns + = +nuÎ +) + +242 ià(! +$ns +) + +244 +$ns + = +$this +-> +deçuÉ_Çme¥aû +; + +247 +$»tv® + = +nuÎ +; + +249 ià( + `is£t +( +$this +-> +·¿m‘”s +[ +$ns +])) + +251 +$»tv® + =& +$this +-> +·¿m‘”s +[ +$ns +]; + +252 + `un£t +( +$this +-> +·¿m‘”s +[ +$ns +]); + +255  +$»tv® +; + +256 + } +} + +267 +public + +funùiÚ + + $£t +( +$Çme +, +$v®ue +, +$ns + = +nuÎ +) + +269 ià(! +$ns +) + +271 +$ns + = +$this +-> +deçuÉ_Çme¥aû +; + +274 ià(! + `is£t +( +$this +-> +·¿m‘”s +[ +$ns +])) + +276 +$this +-> +·¿m‘”s +[ +$ns +] = + `¬¿y +(); + +279 +$this +-> +·¿m‘”s +[ +$ns +][ +$Çme +] = +$v®ue +; + +280 + } +} + +291 +public + +funùiÚ + + $£tByRef +( +$Çme +, & +$v®ue +, +$ns + = +nuÎ +) + +293 ià(! +$ns +) + +295 +$ns + = +$this +-> +deçuÉ_Çme¥aû +; + +298 ià(! + `is£t +( +$this +-> +·¿m‘”s +[ +$ns +])) + +300 +$this +-> +·¿m‘”s +[ +$ns +] = + `¬¿y +(); + +303 +$this +-> +·¿m‘”s +[ +$ns +][ +$Çme +] =& +$v®ue +; + +304 + } +} + +315 +public + +funùiÚ + + $add +( +$·¿m‘”s +, +$ns + = +nuÎ +) + +317 ià( +$·¿m‘”s + ==ð +nuÎ +) ; + +319 ià(! +$ns +) + +321 +$ns + = +$this +-> +deçuÉ_Çme¥aû +; + +324 ià(! + `is£t +( +$this +-> +·¿m‘”s +[ +$ns +])) + +326 +$this +-> +·¿m‘”s +[ +$ns +] = + `¬¿y +(); + +329 + `fܗch + ( +$·¿m‘”s + +as + +$key + => +$v®ue +) + +331 +$this +-> +·¿m‘”s +[ +$ns +][ +$key +] = +$v®ue +; + +333 + } +} + +344 +public + +funùiÚ + + $addByRef +(& +$·¿m‘”s +, +$ns + = +nuÎ +) + +346 ià(! +$ns +) + +348 +$ns + = +$this +-> +deçuÉ_Çme¥aû +; + +351 ià(! + `is£t +( +$this +-> +·¿m‘”s +[ +$ns +])) + +353 +$this +-> +·¿m‘”s +[ +$ns +] = + `¬¿y +(); + +356 + `fܗch + ( +$·¿m‘”s + +as + +$key + => & +$v®ue +) + +358 +$this +-> +·¿m‘”s +[ +$ns +][ +$key +] =& +$v®ue +; + +360 + } +} + +367 +public + +funùiÚ + + $£rŸlize +() + +369  + `£rŸlize +( + `¬¿y +( +$this +-> +deçuÉ_Çme¥aû +, $this-> +·¿m‘”s +)); + +370 + } +} + +377 +public + +funùiÚ + + $un£rŸlize +( +$£rŸlized +) + +379 +$d©a + = + `un£rŸlize +( +$£rŸlized +); + +381 +$this +-> +deçuÉ_Çme¥aû + = +$d©a +[0]; + +382 +$this +-> +·¿m‘”s + = +$d©a +[1]; + +383 + } +} + + @lib/vendor/symfony/lib/util/sfParameterHolder.class.php + +1 +·¿m‘”s + = + `¬¿y +(); + +41 + } +} + +51 +public + + gfunùiÚ + & + $g‘ +( +$Çme +, +$deçuÉ + = +nuÎ +) + +53 ià( + `¬¿y_key_exi¡s +( +$Çme +, +$this +-> +·¿m‘”s +)) + +55 +$v®ue + = & +$this +-> +·¿m‘”s +[ +$Çme +]; + +59 +$v®ue + = +$deçuÉ +; + +62  +$v®ue +; + +63 + } +} + +70 +public + +funùiÚ + + $g‘Names +() + +72  + `¬¿y_keys +( +$this +-> +·¿m‘”s +); + +73 + } +} + +80 +public + + gfunùiÚ + & + $g‘AÎ +() + +82  +$this +-> +·¿m‘”s +; + +83 + } +} + +92 +public + +funùiÚ + + $has +( +$Çme +) + +94  + `¬¿y_key_exi¡s +( +$Çme +, +$this +-> +·¿m‘”s +); + +95 + } +} + +105 +public + +funùiÚ + + $»move +( +$Çme +, +$deçuÉ + = +nuÎ +) + +107 +$»tv® + = +$deçuÉ +; + +109 ià( + `¬¿y_key_exi¡s +( +$Çme +, +$this +-> +·¿m‘”s +)) + +111 +$»tv® + = +$this +-> +·¿m‘”s +[ +$Çme +]; + +112 + `un£t +( +$this +-> +·¿m‘”s +[ +$Çme +]); + +115  +$»tv® +; + +116 + } +} + +126 +public + +funùiÚ + + $£t +( +$Çme +, +$v®ue +) + +128 +$this +-> +·¿m‘”s +[ +$Çme +] = +$v®ue +; + +129 + } +} + +139 +public + +funùiÚ + + $£tByRef +( +$Çme +, & +$v®ue +) + +141 +$this +-> +·¿m‘”s +[ +$Çme +] =& +$v®ue +; + +142 + } +} + +152 +public + +funùiÚ + + $add +( +$·¿m‘”s +) + +154 ià( +nuÎ + ==ð +$·¿m‘”s +) + +159 + `fܗch + ( +$·¿m‘”s + +as + +$key + => +$v®ue +) + +161 +$this +-> +·¿m‘”s +[ +$key +] = +$v®ue +; + +163 + } +} + +173 +public + +funùiÚ + + $addByRef +(& +$·¿m‘”s +) + +175 + `fܗch + ( +$·¿m‘”s + +as + +$key + => & +$v®ue +) + +177 +$this +-> +·¿m‘”s +[ +$key +] =& +$v®ue +; + +179 + } +} + +186 +public + +funùiÚ + + $£rŸlize +() + +188  + `£rŸlize +( +$this +-> +·¿m‘”s +); + +189 + } +} + +196 +public + +funùiÚ + + $un£rŸlize +( +$£rŸlized +) + +198 +$this +-> +·¿m‘”s + = + `un£rŸlize +( +$£rŸlized +); + +199 + } +} + + @lib/vendor/symfony/lib/util/sfToolkit.class.php + +1 3 && + `ùy³_®pha +($path[0]) && + +137 +$·th +[1] == ':' && + +138 ( +$·th +[2] == '\\' || $path[2] == '/') + +142  +Œue +; + +145  +çl£ +; + +146 + } +} + +155 +public +  +funùiÚ + + $¡rComm’ts +( +$sourû +) + +157 ià(! + `funùiÚ_exi¡s +('token_get_all')) + +159  +$sourû +; + +162 +$ignÜe + = + `¬¿y +( +T_COMMENT + => +Œue +, +T_DOC_COMMENT + =>rue); + +163 +$ouut + = ''; + +165 + `fܗch + ( + `tok’_g‘_®l +( +$sourû +è +as + +$tok’ +) + +168 ià( + `is£t +( +$tok’ +[1])) + +171 ià(! + `is£t +( +$ignÜe +[ +$tok’ +[0]])) + +174 +$ouut + .ð +$tok’ +[1]; + +180 +$ouut + .ð +$tok’ +; + +184  +$ouut +; + +185 + } +} + +194 +public +  +funùiÚ + + $¡r¦ashesD“p +( +$v®ue +) + +196  + `is_¬¿y +( +$v®ue +è? + `¬¿y_m­ +( + `¬¿y +('sfToÞk™', '¡r¦ashesD“p'), $v®ueè: + `¡r¦ashes +($value); + +197 + } +} + +218 +public +  +funùiÚ + + $¬¿yD“pM”ge +() + +220  + `func_num_¬gs +()) + +223  +çl£ +; + +225  + `func_g‘_¬g +(0); + +227 +$¬gs + = + `func_g‘_¬gs +(); + +228 +$¬gs +[2] = + `¬¿y +(); + +229 ià( + `is_¬¿y +( +$¬gs +[0]) && is_array($args[1])) + +231 + `fܗch + ( + `¬¿y_unique +( + `¬¿y_m”ge +( + `¬¿y_keys +( +$¬gs +[0]),¬¿y_keys($¬gs[1]))è +as + +$key +) + +233 +$isKey0 + = + `¬¿y_key_exi¡s +( +$key +, +$¬gs +[0]); + +234 +$isKey1 + = + `¬¿y_key_exi¡s +( +$key +, +$¬gs +[1]); + +235 ià( +$isKey0 + && +$isKey1 + && + `is_¬¿y +( +$¬gs +[0][ +$key +]) && is_array($args[1][$key])) + +237 +$¬gs +[2][ +$key +] = +£lf +:: + `¬¿yD“pM”ge +($args[0][$key], $args[1][$key]); + +239 ià( +$isKey0 + && +$isKey1 +) + +241 +$¬gs +[2][ +$key +] = $args[1][$key]; + +243 ià(! +$isKey1 +) + +245 +$¬gs +[2][ +$key +] = $args[0][$key]; + +247 ià(! +$isKey0 +) + +249 +$¬gs +[2][ +$key +] = $args[1][$key]; + +252  +$¬gs +[2]; + +256  +$¬gs +[1]; + +259 +$¬gs + = + `func_g‘_¬gs +(); + +260 +$¬gs +[1] = +sfToÞk™ +:: + `¬¿yD“pM”ge +($args[0], $args[1]); + +261 + `¬¿y_shiá +( +$¬gs +); + +262  + `ÿÎ_u£r_func_¬¿y +( + `¬¿y +('sfToÞk™', '¬¿yD“pM”ge'), +$¬gs +); + +265 + } +} + +274 +public +  +funùiÚ + + $¡ršgToA¼ay +( +$¡ršg +) + +276 + `´eg_m©ch_®l +('/ + +277 \ +s +*(\ +w ++) #key \\1 + +278 \ +s +*=\s* #= + +282 \ +s +*(?: + +283 (?=\ +w ++\ +s +*=è| \s* +$ + #fÞlowed +by + +ªÙh” + +key +ð +Ü + +the + +’d + +of +h +¡ršg + + +285 / +x +', $string, $matches, PREG_SET_ORDER); + +287 +$©Œibu‹s + = + `¬¿y +(); + +288 + `fܗch + ( +$m©ches + +as + +$v® +) + +290 +$©Œibu‹s +[ +$v® +[1]] = +£lf +:: + `l™”®ize +($val[3]); + +293  +$©Œibu‹s +; + +294 + } +} + +304 +public +  +funùiÚ + + $l™”®ize +( +$v®ue +, +$quÙed + = +çl£ +) + +307 +$v®ue + = + `Œim +($value); + +308 +$lv®ue + = + `¡¹Þow” +( +$v®ue +); + +310 ià( + `š_¬¿y +( +$lv®ue +, + `¬¿y +('null', '~', ''))) + +312 +$v®ue + = +nuÎ +; + +314 ià( + `š_¬¿y +( +$lv®ue +, + `¬¿y +('true', 'on', '+', 'yes'))) + +316 +$v®ue + = +Œue +; + +318 ià( + `š_¬¿y +( +$lv®ue +, + `¬¿y +('false', 'off', '-', 'no'))) + +320 +$v®ue + = +çl£ +; + +322 ià( + `ùy³_dig™ +( +$v®ue +)) + +324 +$v®ue + = () $value; + +326 ià( + `is_num”ic +( +$v®ue +)) + +328 +$v®ue + = () $value; + +332 +$v®ue + = +£lf +:: + `»¶aûCÚ¡ªts +($value); + +333 ià( +$quÙed +) + +335 +$v®ue + = '\''. + `¡r_»¶aû +('\'', '\\\'', $value).'\''; + +339  +$v®ue +; + +340 + } +} + +349 +public +  +funùiÚ + + $»¶aûCÚ¡ªts +( +$v®ue +) + +351  + `is_¡ršg +( +$v®ue +è? + `´eg_»¶aû_ÿÎback +('/%(.+?)%/', + `ü—‹_funùiÚ +('$v', 'return sfConfig::has(strtolower($v[1])) ? sfConfig::get(strtolower($v[1])) : "%{$v[1]}%";'), $value) : $value; + +352 + } +} + +360 +public +  +funùiÚ + + $´egŒ +( +$£¬ch +, +$»¶aûPaœs +) + +362  + `´eg_»¶aû +( + `¬¿y_keys +( +$»¶aûPaœs +), + `¬¿y_v®ues +($»¶aûPaœs), +$£¬ch +); + +363 + } +} + +371 +public +  +funùiÚ + + $isA¼ayV®uesEm±y +( +$¬¿y +) + +373  +$isEm±y + = +Œue +; + +374 + `fܗch + ( +$¬¿y + +as + +$v®ue +) + +376 +$isEm±y + = ( + `is_¬¿y +( +$v®ue +)è? +£lf +:: + `isA¼ayV®uesEm±y +($v®ueè: ( + `¡¾’ +($value) == 0); + +377 ià(! +$isEm±y +) + +383  +$isEm±y +; + +384 + } +} + +397 +public +  +funùiÚ + + $isUTF8 +( +$¡ršg +) + +399  +$idx + = 0, +$¡¾’ + = + `¡¾’ +( +$¡ršg +); $idx < $strlen; $idx++) + +401 +$by‹ + = + `Üd +( +$¡ršg +[ +$idx +]); + +403 ià( +$by‹ + & 0x80) + +405 ià(( +$by‹ + & 0xE0) == 0xC0) + +408 +$by‹s_»maššg + = 1; + +410 ià(( +$by‹ + & 0xF0) == 0xE0) + +413 +$by‹s_»maššg + = 2; + +415 ià(( +$by‹ + & 0xF8) == 0xF0) + +418 +$by‹s_»maššg + = 3; + +422  +çl£ +; + +425 ià( +$idx + + +$by‹s_»maššg + >ð +$¡¾’ +) + +427  +çl£ +; + +430  +$by‹s_»maššg +--) + +432 ià(( + `Üd +( +$¡ršg +[++ +$idx +]) & 0xC0) != 0x80) + +434  +çl£ +; + +440  +Œue +; + +441 + } +} + +452 +public +  +funùiÚ + + $g‘A¼ayV®ueFÜP©h +( +$v®ues +, +$Çme +, +$deçuÉ + = +nuÎ +) + +454 ià( +çl£ + ==ð +$off£t + = + `¡½os +( +$Çme +, '[')) + +456  + `is£t +( +$v®ues +[ +$Çme +]è? $v®ues[$Çme] : +$deçuÉ +; + +459 ià(! + `is£t +( +$v®ues +[ + `sub¡r +( +$Çme +, 0, +$off£t +)])) + +461  +$deçuÉ +; + +464 +$¬¿y + = +$v®ues +[ + `sub¡r +( +$Çme +, 0, +$off£t +)]; + +466  +çl£ + !=ð +$pos + = + `¡½os +( +$Çme +, '[', +$off£t +)) + +468 +$’d + = + `¡½os +( +$Çme +, ']', +$pos +); + +469 ià( +$’d + =ð +$pos + + 1) + +472 ià(! + `is_¬¿y +( +$¬¿y +)) + +474  +$deçuÉ +; + +478 ià(! + `is£t +( +$¬¿y +[ + `sub¡r +( +$Çme +, +$pos + + 1, +$’d + - $pos - 1)])) + +480  +$deçuÉ +; + +482 ià( + `is_¬¿y +( +$¬¿y +)) + +484 +$¬¿y + = $¬¿y[ + `sub¡r +( +$Çme +, +$pos + + 1, +$’d + - $pos - 1)]; + +485 +$off£t + = +$’d +; + +489  +$deçuÉ +; + +493  +$¬¿y +; + +494 + } +} + +502 +public +  +funùiÚ + + $g‘PhpCli +() + +504 +$·th + = + `g‘’v +('PATH') ? getenv('PATH') : getenv('Path'); + +505 +$suffixes + = +DIRECTORY_SEPARATOR + =ð'\\' ? ( + `g‘’v +('PATHEXT'è? + `ex¶ode +( +PATH_SEPARATOR +, g‘’v('PATHEXT')è: + `¬¿y +('.exe', '.bat', '.cmd', '.com')) :‡rray(''); + +506 + `fܗch + ( + `¬¿y +('php5', 'php'è +as + +$phpCli +) + +508 + `fܗch + ( +$suffixes + +as + +$suffix +) + +510 + `fܗch + ( + `ex¶ode +( +PATH_SEPARATOR +, +$·th +è +as + +$dœ +) + +512 ià( + `is_fže +( +$fže + = +$dœ +. +DIRECTORY_SEPARATOR +. +$phpCli +. +$suffix +è&& + `is_execubË +($file)) + +514  +$fže +; + +520 +throw + +Ãw + + `sfExû±iÚ +('Unableo find PHPƒxecutable.'); + +521 + } +} + +533  +public + +funùiÚ + + $I18N_toUTF8 +( +$¡ršg +, +$äom +) + +535 +$äom + = + `¡¹ouµ” +($from); + +536 ià( +$äom + != 'UTF-8') + +538 +$s + = + `icÚv +( +$äom +,'UTF-8', +$¡ršg +); + +540  +$s + !=ð +çl£ + ? $ : +$¡ršg +; + +543  +$¡ršg +; + +544 + } +} + +556  +public + +funùiÚ + + $I18N_toEncodšg +( +$¡ršg +, +$to +) + +558 +$to + = + `¡¹ouµ” +($to); + +559 ià( +$to + != 'UTF-8') + +561 +$s + = + `icÚv +('UTF-8', +$to +, +$¡ršg +); + +563  +$s + !=ð +çl£ + ? $ : +$¡ršg +; + +566  +$¡ršg +; + +567 + } +} + +577  +public + +funùiÚ + +addInþudeP©h +( +$·th +, +$pos™iÚ + = 'front') + +579 ià( +is_¬¿y +( +$·th +)) + +581 +fܗch + ('äÚt' =ð +$pos™iÚ + ? +¬¿y_»v”£ +( +$·th +è: $·th +as + +$p +) + +583 +£lf +:: +addInþudeP©h +( +$p +, +$pos™iÚ +); + +589 + g$·ths + = +ex¶ode +( +PATH_SEPARATOR +, +g‘_šþude_·th +()); + +592 ià( + gçl£ + !=ð +$key + = +¬¿y_£¬ch +( +»®·th +( +$·th +), +¬¿y_m­ +('»®·th', +$·ths +))) + +594 +un£t +( +$·ths +[ +$key +]); + +597  + g$pos™iÚ +) + +600 +¬¿y_unshiá +( +$·ths +, +$·th +); + +603 +$·ths +[] = +$·th +; + +606 +throw + +Ãw + +Inv®idArgum’tExû±iÚ +( +¥rštf +('UÄecognized…os™iÚ: "%s"', +$pos™iÚ +)); + +609  +£t_šþude_·th +( +još +( +PATH_SEPARATOR +, +$·ths +)); + + @lib/vendor/symfony/lib/validator/i18n/sfValidatorI18nChoiceCountry.class.php + +1 + `addO±iÚ +('countries'); + +40 +$couÁr›s + = + `¬¿y_keys +( +sfCuÉu»Info +:: + `g‘In¡ªû +()-> + `g‘CouÁr›s +()); + +43 ià( + `is£t +( +$ÝtiÚs +['countries'])) + +45 ià( +$´obËms + = + `¬¿y_diff +( +$ÝtiÚs +['couÁr›s'], +$couÁr›s +)) + +47 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('ThfÞlowšg couÁr› dØnكxi¡: %s.', + `im¶ode +(', ', +$´obËms +))); + +50 +$couÁr›s + = +$ÝtiÚs +['countries']; + +53 +$this +-> + `£tO±iÚ +('choiûs', +$couÁr›s +); + +55 + } +} + + @lib/vendor/symfony/lib/validator/i18n/sfValidatorI18nChoiceLanguage.class.php + +1 + `addO±iÚ +('languages'); + +40 +$Ïnguages + = + `¬¿y_keys +( +sfCuÉu»Info +:: + `g‘In¡ªû +()-> + `g‘Lªguages +()); + +43 ià( + `is£t +( +$ÝtiÚs +['languages'])) + +45 ià( +$´obËms + = + `¬¿y_diff +( +$ÝtiÚs +['Ïnguages'], +$Ïnguages +)) + +47 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('ThfÞlowšg†ªguage dØnكxi¡: %s.', + `im¶ode +(', ', +$´obËms +))); + +50 +$Ïnguages + = +$ÝtiÚs +['languages']; + +53 +$this +-> + `£tO±iÚ +('choiûs', +$Ïnguages +); + +55 + } +} + + @lib/vendor/symfony/lib/validator/i18n/sfValidatorI18nChoiceTimezone.class.php + +1 + `£tO±iÚ +('choiûs', + `¬¿y_keys +( +sfCuÉu»Info +:: + `g‘In¡ªû +()-> + `g‘TimeZÚes +())); + +37 + } +} + + @lib/vendor/symfony/lib/validator/sfValidatedFile.class.php + +1 +Üigš®Name + = +$Üigš®Name +; + +41 +$this +-> +‹mpName + = +$‹mpName +; + +42 +$this +-> +ty³ + = +$ty³ +; + +43 +$this +-> +size + = +$size +; + +44 +$this +-> +·th + = +$·th +; + +50 +public + +funùiÚ + + $__toSŒšg +() + +52  +nuÎ + ==ð +$this +-> +§vedName + ? '' : $this->savedName; + +53 + } +} + +72 +public + +funùiÚ + + $§ve +( +$fže + = +nuÎ +, +$fžeMode + = 0666, +$ü—‹ + = +Œue +, +$dœMode + = 0777) + +74 ià( +nuÎ + ==ð +$fže +) + +76 +$fže + = +$this +-> + `g’”©eFž’ame +(); + +79 ià( +$fže +[0] !ð'/' && $fže[0] !ð'\\' && !( + `¡¾’ +($fžeè> 3 && + `ùy³_®pha +($file[0]) && $file[1] == ':' && ($file[2] == '\\' || $file[2] == '/'))) + +81 ià( +nuÎ + ==ð +$this +-> +·th +) + +83 +throw + +Ãw + + `RuÁimeExû±iÚ +('You must give‡ "path" when you give‡„elative file‚ame.'); + +86 +$fže + = +$this +-> +·th +. +DIRECTORY_SEPARATOR +.$file; + +90 +$dœeùÜy + = + `dœÇme +( +$fže +); + +92 ià(! + `is_»adabË +( +$dœeùÜy +)) + +94 ià( +$ü—‹ + && !@ + `mkdœ +( +$dœeùÜy +, +$dœMode +, +Œue +)) + +97 +throw + +Ãw + + `Exû±iÚ +( + `¥rštf +('FažedØü—‹ fžu¶ßd dœeùÜy "%s".', +$dœeùÜy +)); + +101 + `chmod +( +$dœeùÜy +, +$dœMode +); + +104 ià(! + `is_dœ +( +$dœeùÜy +)) + +107 +throw + +Ãw + + `Exû±iÚ +( + `¥rštf +('Fžu¶ßd…©h "%s"ƒxi¡s, buˆi nه dœeùÜy.', +$dœeùÜy +)); + +110 ià(! + `is_wr™abË +( +$dœeùÜy +)) + +113 +throw + +Ãw + + `Exû±iÚ +( + `¥rštf +('Fžu¶ßd…©h "%s" i nÙ wr™abË.', +$dœeùÜy +)); + +117 + `cÝy +( +$this +-> + `g‘TempName +(), +$fže +); + +120 + `chmod +( +$fže +, +$fžeMode +); + +122 +$this +-> +§vedName + = +$fže +; + +124  +nuÎ + ==ð +$this +-> +·th + ? +$fže + : + `¡r_»¶aû +($this->·th. +DIRECTORY_SEPARATOR +, '', $file); + +125 + } +} + +132 +public + +funùiÚ + + $g’”©eFž’ame +() + +134  + `sha1 +( +$this +-> + `g‘Origš®Name +(). + `¿nd +(11111, 99999)).$this-> + `g‘Ex‹nsiÚ +($this-> + `g‘Origš®Ex‹nsiÚ +()); + +135 + } +} + +142 +public + +funùiÚ + + $g‘P©h +() + +144  +$this +-> +·th +; + +145 + } +} + +154 +public + +funùiÚ + +g‘Ex‹nsiÚ +( +$deçuÉ + = '') + +156  +$this +-> +g‘Ex‹nsiÚFromTy³ +($this-> +ty³ +, +$deçuÉ +); + +166 +public + +funùiÚ + +g‘Origš®Ex‹nsiÚ +( +$deçuÉ + = '') + +168  ( +çl£ + ==ð +$pos + = +¡¼pos +( +$this +-> +g‘Origš®Name +(), '.')è? + g$deçuÉ + : +sub¡r +($this->getOriginalName(), $pos); + +176 +public + +funùiÚ + + $isSaved +() + +178  +nuÎ + !=ð +$this +-> +§vedName +; + +179 + } +} + +186 +public + +funùiÚ + + $g‘SavedName +() + +188  +$this +-> +§vedName +; + +189 + } +} + +196 +public + +funùiÚ + + $g‘Origš®Name +() + +198  +$this +-> +Üigš®Name +; + +199 + } +} + +206 +public + +funùiÚ + + $g‘TempName +() + +208  +$this +-> +‹mpName +; + +209 + } +} + +216 +public + +funùiÚ + + $g‘Ty³ +() + +218  +$this +-> +ty³ +; + +219 + } +} + +226 +public + +funùiÚ + + $g‘Size +() + +228  +$this +-> +size +; + +229 + } +} + +239 +´Ùeùed + +funùiÚ + +g‘Ex‹nsiÚFromTy³ +( +$ty³ +, +$deçuÉ + = '') + +241  +$ex‹nsiÚs + = +¬¿y +( + +655  ! + g$ty³ + ? + g$deçuÉ + : ( +is£t +( +$ex‹nsiÚs +[ +$ty³ +]è? '.'.$ex‹nsiÚs[$ty³] : +$deçuÉ +); + + @lib/vendor/symfony/lib/validator/sfValidatorAnd.class.php + +1 + `addV®id©Ü +( +$v®id©Üs +); + +45 ià( + `is_¬¿y +( +$v®id©Üs +)) + +47 + `fܗch + ( +$v®id©Üs + +as + +$v®id©Ü +) + +49 +$this +-> + `addV®id©Ü +( +$v®id©Ü +); + +52 ià( +nuÎ + !=ð +$v®id©Üs +) + +54 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +('sfValidatorAnd constructorakes‡ sfValidatorBase object, or‡ sfValidatorBase‡rray.'); + +57 +·»Á +:: + `__cÚ¡ruù +( +$ÝtiÚs +, +$mes§ges +); + +72 +´Ùeùed + +funùiÚ + + `cÚfigu» +( +$ÝtiÚs + = + `¬¿y +(), +$mes§ges + = + $¬¿y +()) + +74 +$this +-> + `addO±iÚ +('h®t_Ú_”rÜ', +çl£ +); + +76 +$this +-> + `£tMes§ge +('šv®id', +nuÎ +); + +77 + } +} + +84 +public + +funùiÚ + + $addV®id©Ü +( +sfV®id©ÜBa£ + +$v®id©Ü +) + +86 +$this +-> +v®id©Üs +[] = +$v®id©Ü +; + +87 + } +} + +94 +public + +funùiÚ + + $g‘V®id©Üs +() + +96  +$this +-> +v®id©Üs +; + +97 + } +} + +102 +´Ùeùed + +funùiÚ + + $doC˪ +( +$v®ue +) + +104 +$þ—n + = +$v®ue +; + +105 +$”rÜs + = + `¬¿y +(); + +106 + `fܗch + ( +$this +-> +v®id©Üs + +as + +$v®id©Ü +) + +108 +Œy + + +110 +$þ—n + = +$v®id©Ü +-> + `þ—n +($clean); + +112 + `ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +114 +$”rÜs +[] = +$e +; + +116 ià( +$this +-> + `g‘O±iÚ +('halt_on_error')) + +123 ià( + `couÁ +( +$”rÜs +)) + +125 ià( +$this +-> + `g‘Mes§ge +('invalid')) + +127 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'šv®id', + `¬¿y +('v®ue' => +$v®ue +)); + +130 +throw + +Ãw + + `sfV®id©ÜE¼ÜSchema +( +$this +, +$”rÜs +); + +133  +$þ—n +; + +134 + } +} + +139 +public + +funùiÚ + + $asSŒšg +( +$šd’t + = 0) + +141 +$v®id©Üs + = ''; + +142  +$i + = 0, +$max + = + `couÁ +( +$this +-> +v®id©Üs +); $i < $max; $i++) + +144 +$v®id©Üs + .ð"\n". +$this +-> +v®id©Üs +[ +$i +]-> + `asSŒšg +( +$šd’t + + 2)."\n"; + +146 ià( +$i + < +$max + - 1) + +148 +$v®id©Üs + .ð + `¡r_»³© +(' ', +$šd’t + + 2).'and'; + +151 ià( +$i + =ð +$max + - 2) + +153 +$ÝtiÚs + = +$this +-> + `g‘O±iÚsW™houtDeçuÉs +(); + +154 +$mes§ges + = +$this +-> + `g‘Mes§gesW™houtDeçuÉs +(); + +156 ià( +$ÝtiÚs + || +$mes§ges +) + +158 +$v®id©Üs + .ð + `¥rštf +('(%s%s)', + +159 +$ÝtiÚs + ? +sfYamlIƚe +:: + `dump +($ÝtiÚsè: ( +$mes§ges + ? '{}' : ''), + +160 +$mes§ges + ? ', '. +sfYamlIƚe +:: + `dump +($messages) : '' + +166  + `¥rštf +("%s(%s%s)", + `¡r_»³© +(' ', +$šd’t +), +$v®id©Üs +, str_repeat(' ', $indent)); + +167 + } +} + + @lib/vendor/symfony/lib/validator/sfValidatorBase.class.php + +1 'Invalid.', 'required' => 'Required.'); + +27 +´Ùeùed + + +28 + m$»quœedO±iÚs + = +¬¿y +(), + +29 + m$deçuÉMes§ges + = +¬¿y +(), + +30 + m$deçuÉO±iÚs + = +¬¿y +(), + +31 + m$mes§ges + = +¬¿y +(), + +32 + m$ÝtiÚs + = +¬¿y +(); + +51 +public + +funùiÚ + +__cÚ¡ruù +( +$ÝtiÚs + = +¬¿y +(), +$mes§ges + = + $¬¿y +()) + +53 +$this +-> +ÝtiÚs + = + `¬¿y_m”ge +( + `¬¿y +('»quœed' => +Œue +, 'Œim' => +çl£ +, 'em±y_v®ue' => +nuÎ +), $this->options); + +54 +$this +-> +mes§ges + = + `¬¿y_m”ge +( + `¬¿y +('»quœed' => +£lf +:: +$glob®DeçuÉMes§ges +['required'], 'invalid' => self::$globalDefaultMessages['invalid']), $this->messages); + +56 +$this +-> + `cÚfigu» +( +$ÝtiÚs +, +$mes§ges +); + +58 +$this +-> + `£tDeçuÉO±iÚs +($this-> + `g‘O±iÚs +()); + +59 +$this +-> + `£tDeçuÉMes§ges +($this-> + `g‘Mes§ges +()); + +61 +$cu¼’tO±iÚKeys + = + `¬¿y_keys +( +$this +-> +ÝtiÚs +); + +62 +$ÝtiÚKeys + = + `¬¿y_keys +( +$ÝtiÚs +); + +65 ià( +$diff + = + `¬¿y_diff +( +$ÝtiÚKeys +, + `¬¿y_m”ge +( +$cu¼’tO±iÚKeys +, +$this +-> +»quœedO±iÚs +))) + +67 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('% dÛ nÙ suµÜˆthfÞlowšg o±iÚs: \'%s\'.', + `g‘_þass +( +$this +), + `im¶ode +('\', \'', +$diff +))); + +71 ià( +$diff + = + `¬¿y_diff +( + `¬¿y_keys +( +$mes§ges +),‡¼ay_keys( +$this +-> +mes§ges +))) + +73 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('% dÛ nÙ suµÜˆthfÞlowšgƒ¼Ü codes: \'%s\'.', + `g‘_þass +( +$this +), + `im¶ode +('\', \'', +$diff +))); + +77 ià( +$diff + = + `¬¿y_diff +( +$this +-> +»quœedO±iÚs +, + `¬¿y_m”ge +( +$cu¼’tO±iÚKeys +, +$ÝtiÚKeys +))) + +79 +throw + +Ãw + + `RuÁimeExû±iÚ +( + `¥rštf +('% »quœe thfÞlowšg o±iÚs: \'%s\'.', + `g‘_þass +( +$this +), + `im¶ode +('\', \'', +$diff +))); + +82 +$this +-> +ÝtiÚs + = + `¬¿y_m”ge +($this->ÝtiÚs, +$ÝtiÚs +); + +83 +$this +-> +mes§ges + = + `¬¿y_m”ge +($this->mes§ges, +$mes§ges +); + +101 +´Ùeùed + +funùiÚ + + `cÚfigu» +( +$ÝtiÚs + = + `¬¿y +(), +$mes§ges + = + $¬¿y +()) + +103 + } +} + +112 +public + +funùiÚ + + $g‘Mes§ge +( +$Çme +) + +114  + `is£t +( +$this +-> +mes§ges +[ +$Çme +]) ? $this->messages[$name] : ''; + +115 + } +} + +125 +public + +funùiÚ + + $addMes§ge +( +$Çme +, +$v®ue +) + +127 +$this +-> +mes§ges +[ +$Çme +] = + `is£t +( +£lf +:: +$glob®DeçuÉMes§ges +[$Çme]è? s–f::$glob®DeçuÉMes§ges[$Çme] : +$v®ue +; + +129  +$this +; + +130 + } +} + +140 +public + +funùiÚ + + $£tMes§ge +( +$Çme +, +$v®ue +) + +142 ià(! + `š_¬¿y +( +$Çme +, + `¬¿y_keys +( +$this +-> +mes§ges +))) + +144 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('% dÛ nÙ suµÜˆthfÞlowšgƒ¼Ü code: \'%s\'.', + `g‘_þass +( +$this +), +$Çme +)); + +147 +$this +-> +mes§ges +[ +$Çme +] = +$v®ue +; + +149  +$this +; + +150 + } +} + +157 +public + +funùiÚ + + $g‘Mes§ges +() + +159  +$this +-> +mes§ges +; + +160 + } +} + +169 +public + +funùiÚ + + $£tMes§ges +( +$v®ues +) + +171 +$this +-> +mes§ges + = + `¬¿y_m”ge +( + `¬¿y +('»quœed' => +£lf +:: +$glob®DeçuÉMes§ges +['»quœed'], 'šv®id' => s–f::$glob®DeçuÉMes§ges['šv®id']), +$v®ues +); + +173  +$this +; + +174 + } +} + +183 +public + +funùiÚ + + $g‘O±iÚ +( +$Çme +) + +185  + `is£t +( +$this +-> +ÝtiÚs +[ +$Çme +]è? $this->ÝtiÚs[$Çme] : +nuÎ +; + +186 + } +} + +196 +public + +funùiÚ + + $addO±iÚ +( +$Çme +, +$v®ue + = +nuÎ +) + +198 +$this +-> +ÝtiÚs +[ +$Çme +] = +$v®ue +; + +200  +$this +; + +201 + } +} + +211 +public + +funùiÚ + + $£tO±iÚ +( +$Çme +, +$v®ue +) + +213 ià(! + `š_¬¿y +( +$Çme +, + `¬¿y_m”ge +( + `¬¿y_keys +( +$this +-> +ÝtiÚs +), $this-> +»quœedO±iÚs +))) + +215 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('% dÛ nÙ suµÜˆthfÞlowšg o±iÚ: \'%s\'.', + `g‘_þass +( +$this +), +$Çme +)); + +218 +$this +-> +ÝtiÚs +[ +$Çme +] = +$v®ue +; + +220  +$this +; + +221 + } +} + +230 +public + +funùiÚ + + $hasO±iÚ +( +$Çme +) + +232  + `is£t +( +$this +-> +ÝtiÚs +[ +$Çme +]); + +233 + } +} + +240 +public + +funùiÚ + + $g‘O±iÚs +() + +242  +$this +-> +ÝtiÚs +; + +243 + } +} + +252 +public + +funùiÚ + + $£tO±iÚs +( +$v®ues +) + +254 +$this +-> +ÝtiÚs + = + `¬¿y_m”ge +( + `¬¿y +('»quœed' => +Œue +, 'Œim' => +çl£ +, 'em±y_v®ue' => +nuÎ +), +$v®ues +); + +256  +$this +; + +257 + } +} + +266 +public + +funùiÚ + + $addRequœedO±iÚ +( +$Çme +) + +268 +$this +-> +»quœedO±iÚs +[] = +$Çme +; + +270  +$this +; + +271 + } +} + +278 +public + +funùiÚ + + $g‘RequœedO±iÚs +() + +280  +$this +-> +»quœedO±iÚs +; + +281 + } +} + +289  +public + +funùiÚ + + $£tDeçuÉMes§ge +( +$Çme +, +$mes§ge +) + +291 +£lf +:: +$glob®DeçuÉMes§ges +[ +$Çme +] = +$mes§ge +; + +292 + } +} + +306 +public + +funùiÚ + + $þ—n +( +$v®ue +) + +308 +$þ—n + = +$v®ue +; + +310 ià( +$this +-> +ÝtiÚs +['Œim'] && + `is_¡ršg +( +$þ—n +)) + +312 +$þ—n + = + `Œim +($clean); + +316 ià( +$this +-> + `isEm±y +( +$þ—n +)) + +319 ià( +$this +-> +ÝtiÚs +['required']) + +321 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'required'); + +324  +$this +-> + `g‘Em±yV®ue +(); + +327  +$this +-> + `doC˪ +( +$þ—n +); + +328 + } +} + +341 +ab¡¿ù + +´Ùeùed + +funùiÚ + +doC˪ +( +$v®ue +); + +348  +public + +funùiÚ + + $£tCh¬£t +( +$ch¬£t +) + +350 +£lf +:: +$ch¬£t + = $charset; + +351 + } +} + +358  +public + +funùiÚ + + $g‘Ch¬£t +() + +360  +£lf +:: +$ch¬£t +; + +361 + } +} + +370 +´Ùeùed + +funùiÚ + + $isEm±y +( +$v®ue +) + +372  + `š_¬¿y +( +$v®ue +, + `¬¿y +( +nuÎ +, '',‡¼ay()), +Œue +); + +373 + } +} + +380 +´Ùeùed + +funùiÚ + + $g‘Em±yV®ue +() + +382  +$this +-> + `g‘O±iÚ +('empty_value'); + +383 + } +} + +392 +fš® + +public + +funùiÚ + + $g‘E¼ÜCodes +() + +394  + `¬¿y_keys +( +$this +-> + `g‘DeçuÉMes§ges +()); + +395 + } +} + +402 +public + +funùiÚ + + $g‘DeçuÉMes§ges +() + +404  +$this +-> +deçuÉMes§ges +; + +405 + } +} + +412 +´Ùeùed + +funùiÚ + + $£tDeçuÉMes§ges +( +$mes§ges +) + +414 +$this +-> +deçuÉMes§ges + = +$mes§ges +; + +415 + } +} + +422 +public + +funùiÚ + + $g‘DeçuÉO±iÚs +() + +424  +$this +-> +deçuÉO±iÚs +; + +425 + } +} + +432 +´Ùeùed + +funùiÚ + + $£tDeçuÉO±iÚs +( +$ÝtiÚs +) + +434 +$this +-> +deçuÉO±iÚs + = +$ÝtiÚs +; + +435 + } +} + +444 +public + +funùiÚ + + $asSŒšg +( +$šd’t + = 0) + +446 +$ÝtiÚs + = +$this +-> + `g‘O±iÚsW™houtDeçuÉs +(); + +447 +$mes§ges + = +$this +-> + `g‘Mes§gesW™houtDeçuÉs +(); + +449  + `¥rštf +('%s%s(%s%s)', + +450 + `¡r_»³© +(' ', +$šd’t +), + +451 + `¡r_»¶aû +('sfV®id©Ü', '', + `g‘_þass +( +$this +)), + +452 +$ÝtiÚs + ? +sfYamlIƚe +:: + `dump +($ÝtiÚsè: ( +$mes§ges + ? '{}' : ''), + +453 +$mes§ges + ? ', '. +sfYamlIƚe +:: + `dump +($messages) : '' + +455 + } +} + +462 +´Ùeùed + +funùiÚ + + $g‘Mes§gesW™houtDeçuÉs +() + +464 +$mes§ges + = +$this +-> +mes§ges +; + +467 + `fܗch + ( +$this +-> + `g‘DeçuÉMes§ges +(è +as + +$key + => +$v®ue +) + +469 ià( + `¬¿y_key_exi¡s +( +$key +, +$mes§ges +è&& $mes§ges[$key] ==ð +$v®ue +) + +471 + `un£t +( +$mes§ges +[ +$key +]); + +475  +$mes§ges +; + +476 + } +} + +483 +´Ùeùed + +funùiÚ + + $g‘O±iÚsW™houtDeçuÉs +() + +485 +$ÝtiÚs + = +$this +-> +ÝtiÚs +; + +488 + `fܗch + ( +$this +-> + `g‘DeçuÉO±iÚs +(è +as + +$key + => +$v®ue +) + +490 ià( + `¬¿y_key_exi¡s +( +$key +, +$ÝtiÚs +è&& $ÝtiÚs[$key] ==ð +$v®ue +) + +492 + `un£t +( +$ÝtiÚs +[ +$key +]); + +496  +$ÝtiÚs +; + +497 + } +} + + @lib/vendor/symfony/lib/validator/sfValidatorBoolean.class.php + +1 + `addO±iÚ +('Œue_v®ues', + `¬¿y +('true', 't', 'yes', 'y', 'on', '1')); + +37 +$this +-> + `addO±iÚ +('çl£_v®ues', + `¬¿y +('false', 'f', 'no', 'n', 'off', '0')); + +39 +$this +-> + `£tO±iÚ +('»quœed', +çl£ +); + +40 +$this +-> + `£tO±iÚ +('em±y_v®ue', +çl£ +); + +46 +´Ùeùed + +funùiÚ + + $doC˪ +( +$v®ue +) + +48 ià( + `š_¬¿y +( +$v®ue +, +$this +-> + `g‘O±iÚ +('true_values'))) + +50  +Œue +; + +53 ià( + `š_¬¿y +( +$v®ue +, +$this +-> + `g‘O±iÚ +('false_values'))) + +55  +çl£ +; + +58 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'šv®id', + `¬¿y +('v®ue' => +$v®ue +)); + +59 + } +} + + @lib/vendor/symfony/lib/validator/sfValidatorCSRFToken.class.php + +1 + `addRequœedO±iÚ +('token'); + +28 +$this +-> + `£tO±iÚ +('»quœed', +Œue +); + +30 +$this +-> + `addMes§ge +('csrf_attack', 'CSRF‡ttack detected.'); + +36 +´Ùeùed + +funùiÚ + + $doC˪ +( +$v®ue +) + +38 ià( +$v®ue + !ð +$this +-> + `g‘O±iÚ +('token')) + +40 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'csrf_attack'); + +43  +$v®ue +; + +44 + } +} + + @lib/vendor/symfony/lib/validator/sfValidatorCallback.class.php + +1 + `addRequœedO±iÚ +('callback'); + +37 +$this +-> + `addO±iÚ +('¬gum’ts', + `¬¿y +()); + +39 +$this +-> + `£tO±iÚ +('»quœed', +çl£ +); + +45 +´Ùeùed + +funùiÚ + + $doC˪ +( +$v®ue +) + +47  + `ÿÎ_u£r_func +( +$this +-> + `g‘O±iÚ +('ÿÎback'), $this, +$v®ue +, $this->getOption('arguments')); + +48 + } +} + + @lib/vendor/symfony/lib/validator/sfValidatorChoice.class.php + +1 + `addRequœedO±iÚ +('choices'); + +39 +$this +-> + `addO±iÚ +('muɝË', +çl£ +); + +40 +$this +-> + `addO±iÚ +('min'); + +41 +$this +-> + `addO±iÚ +('max'); + +43 +$this +-> + `addMes§ge +('min', 'At†east %min% values must be selected (%count% values selected).'); + +44 +$this +-> + `addMes§ge +('max', 'At most %max% values must be selected (%count% values selected).'); + +50 +´Ùeùed + +funùiÚ + + $doC˪ +( +$v®ue +) + +52 +$choiûs + = +$this +-> + `g‘Choiûs +(); + +54 ià( +$this +-> + `g‘O±iÚ +('multiple')) + +56 +$v®ue + = +$this +-> + `þ—nMuÉË +($v®ue, +$choiûs +); + +60 ià(! +£lf +:: + `šChoiûs +( +$v®ue +, +$choiûs +)) + +62 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'šv®id', + `¬¿y +('v®ue' => +$v®ue +)); + +66  +$v®ue +; + +67 + } +} + +69 +public + +funùiÚ + + $g‘Choiûs +() + +71 +$choiûs + = +$this +-> + `g‘O±iÚ +('choices'); + +72 ià( +$choiûs + +š¡ªûof + +sfC®ÏbË +) + +74 +$choiûs + = $choiûs-> + `ÿÎ +(); + +77  +$choiûs +; + +78 + } +} + +87 +´Ùeùed + +funùiÚ + + $þ—nMuÉË +( +$v®ue +, +$choiûs +) + +89 ià(! + `is_¬¿y +( +$v®ue +)) + +91 +$v®ue + = + `¬¿y +($value); + +94 + `fܗch + ( +$v®ue + +as + +$v +) + +96 ià(! +£lf +:: + `šChoiûs +( +$v +, +$choiûs +)) + +98 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'šv®id', + `¬¿y +('v®ue' => +$v +)); + +102 +$couÁ + = + `couÁ +( +$v®ue +); + +104 ià( +$this +-> + `hasO±iÚ +('mš'è&& +$couÁ + < $this-> + `g‘O±iÚ +('min')) + +106 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'mš', + `¬¿y +('couÁ' => +$couÁ +, 'mš' => $this-> + `g‘O±iÚ +('min'))); + +109 ià( +$this +-> + `hasO±iÚ +('max'è&& +$couÁ + > $this-> + `g‘O±iÚ +('max')) + +111 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'max', + `¬¿y +('couÁ' => +$couÁ +, 'max' => $this-> + `g‘O±iÚ +('max'))); + +114  +$v®ue +; + +115 + } +} + +125  +´Ùeùed + +funùiÚ + +šChoiûs +( +$v®ue +, +¬¿y + +$choiûs + = + $¬¿y +()) + +127 + `fܗch + ( +$choiûs + +as + +$choiû +) + +129 ià(( +¡ršg +è +$choiû + =ð(¡ršgè +$v®ue +) + +131  +Œue +; + +135  +çl£ +; + +136 + } +} + + @lib/vendor/symfony/lib/validator/sfValidatorDate.class.php + +1 + `addMes§ge +('bad_format', '"%value%" does‚ot matchhe date format (%date_format%).'); + +51 +$this +-> + `addMes§ge +('max', 'The date must be before %max%.'); + +52 +$this +-> + `addMes§ge +('min', 'The date must be‡fter %min%.'); + +54 +$this +-> + `addO±iÚ +('d©e_fÜm©', +nuÎ +); + +55 +$this +-> + `addO±iÚ +('w™h_time', +çl£ +); + +56 +$this +-> + `addO±iÚ +('date_output', 'Y-m-d'); + +57 +$this +-> + `addO±iÚ +('datetime_output', 'Y-m-d H:i:s'); + +58 +$this +-> + `addO±iÚ +('date_format_error'); + +59 +$this +-> + `addO±iÚ +('mš', +nuÎ +); + +60 +$this +-> + `addO±iÚ +('max', +nuÎ +); + +61 +$this +-> + `addO±iÚ +('date_format_range_error', 'd/m/Y H:i:s'); + +67 +´Ùeùed + +funùiÚ + + $doC˪ +( +$v®ue +) + +70 ià( + `is_¡ršg +( +$v®ue +è&& +$»gex + = +$this +-> + `g‘O±iÚ +('date_format')) + +72 ià(! + `´eg_m©ch +( +$»gex +, +$v®ue +, +$m©ch +)) + +74 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'bad_fÜm©', + `¬¿y +('v®ue' => +$v®ue +, 'd©e_fÜm©' => $this-> + `g‘O±iÚ +('date_format_error') ? $this->getOption('date_format_error') : $this->getOption('date_format'))); + +77 +$v®ue + = +$m©ch +; + +81 ià( + `is_¬¿y +( +$v®ue +)) + +83 +$v®ue + = +$this +-> + `cÚv”tD©eA¼ayToSŒšg +($value); + +87 ià( + `is_num”ic +( +$v®ue +)) + +89 +$þ—nTime + = ( +š‹g” +è +$v®ue +; + +90 +$þ—n + = + `d©e +('YmdHis', +$þ—nTime +); + +95 +Œy + + +97 +$d©e + = +Ãw + + `D©eTime +( +$v®ue +); + +98 +$d©e +-> + `£tTimezÚe +( +Ãw + + `D©eTimeZÚe +( + `d©e_deçuÉ_timezÚe_g‘ +())); + +99 +$þ—n + = +$d©e +-> + `fÜm© +('YmdHis'); + +101 + `ÿtch + ( +Exû±iÚ + +$e +) + +103 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'šv®id', + `¬¿y +('v®ue' => +$v®ue +)); + +108 ià( +$max + = +$this +-> + `g‘O±iÚ +('max')) + +111 ià( + `is_num”ic +( +$max +)) + +113 +$maxE¼Ü + = + `d©e +( +$this +-> + `g‘O±iÚ +('d©e_fÜm©_¿nge_”rÜ'), +$max +); + +114 +$max + = + `d©e +('YmdHis', $max); + +119 +$d©eMax + = +Ãw + + `D©eTime +( +$max +); + +120 +$max + = +$d©eMax +-> + `fÜm© +('YmdHis'); + +121 +$maxE¼Ü + = +$d©eMax +-> + `fÜm© +( +$this +-> + `g‘O±iÚ +('date_format_range_error')); + +124 ià( +$þ—n + > +$max +) + +126 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'max', + `¬¿y +('v®ue' => +$v®ue +, 'max' => +$maxE¼Ü +)); + +131 ià( +$mš + = +$this +-> + `g‘O±iÚ +('min')) + +134 ià( + `is_num”ic +( +$mš +)) + +136 +$mšE¼Ü + = + `d©e +( +$this +-> + `g‘O±iÚ +('d©e_fÜm©_¿nge_”rÜ'), +$mš +); + +137 +$mš + = + `d©e +('YmdHis', $min); + +142 +$d©eMš + = +Ãw + + `D©eTime +( +$mš +); + +143 +$mš + = +$d©eMš +-> + `fÜm© +('YmdHis'); + +144 +$mšE¼Ü + = +$d©eMš +-> + `fÜm© +( +$this +-> + `g‘O±iÚ +('date_format_range_error')); + +147 ià( +$þ—n + < +$mš +) + +149 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'mš', + `¬¿y +('v®ue' => +$v®ue +, 'mš' => +$mšE¼Ü +)); + +153 ià( +$þ—n + ==ð +$this +-> + `g‘Em±yV®ue +()) + +155  +$þ—nTime +; + +158 +$fÜm© + = +$this +-> + `g‘O±iÚ +('with_time') ? $this->getOption('datetime_output') : $this->getOption('date_output'); + +160  + `is£t +( +$d©e +è? $d©e-> + `fÜm© +( +$fÜm© +è: + `d©e +($fÜm©, +$þ—nTime +); + +161 + } +} + +172 +´Ùeùed + +funùiÚ + + $cÚv”tD©eA¼ayToSŒšg +( +$v®ue +) + +175 + `fܗch + ( + `¬¿y +('y—r', 'mÚth', 'day', 'hour', 'mšu‹', '£cÚd'è +as + +$key +) + +177 ià( + `is£t +( +$v®ue +[ +$key +]è&& ! + `´eg_m©ch +('#^\d+$#', $v®ue[$key]è&& ! + `em±y +($value[$key])) + +179 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'šv®id', + `¬¿y +('v®ue' => +$v®ue +)); + +184 +$em±›s + = + +185 (! + `is£t +( +$v®ue +['year']) || !$value['year'] ? 1 : 0) + + +186 (! + `is£t +( +$v®ue +['month']) || !$value['month'] ? 1 : 0) + + +187 (! + `is£t +( +$v®ue +['day']) || !$value['day'] ? 1 : 0) + +189 ià( +$em±›s + > 0 && $empties < 3) + +191 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'šv®id', + `¬¿y +('v®ue' => +$v®ue +)); + +193 ià(3 =ð +$em±›s +) + +195  +$this +-> + `g‘Em±yV®ue +(); + +198 ià(! + `checkd©e +( + `štv® +( +$v®ue +['month']), intval($value['day']), intval($value['year']))) + +200 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'šv®id', + `¬¿y +('v®ue' => +$v®ue +)); + +203 ià( +$this +-> + `g‘O±iÚ +('with_time')) + +208 +$this +-> + `isV®ueS‘ +( +$v®ue +, 'second') && (!$this->isValueSet($value, 'minute') || !$this->isValueSet($value, 'hour')) + +210 +$this +-> + `isV®ueS‘ +( +$v®ue +, 'minute') && !$this->isValueSet($value, 'hour') + +213 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'šv®id', + `¬¿y +('v®ue' => +$v®ue +)); + +216 +$þ—n + = + `¥rštf +( + +218 + `štv® +( +$v®ue +['year']), + +219 + `štv® +( +$v®ue +['month']), + +220 + `štv® +( +$v®ue +['day']), + +221 + `is£t +( +$v®ue +['hour']è? + `štv® +($value['hour']) : 0, + +222 + `is£t +( +$v®ue +['mšu‹']è? + `štv® +($value['minute']) : 0, + +223 + `is£t +( +$v®ue +['£cÚd']è? + `štv® +($value['second']) : 0 + +228 +$þ—n + = + `¥rštf +( + +230 + `štv® +( +$v®ue +['year']), + +231 + `štv® +( +$v®ue +['month']), + +232 + `štv® +( +$v®ue +['day']), + +239  +$þ—n +; + +240 + } +} + +242 +´Ùeùed + +funùiÚ + + $isV®ueS‘ +( +$v®ues +, +$key +) + +244  + `is£t +( +$v®ues +[ +$key +]è&& ! + `š_¬¿y +($v®ues[$key], + `¬¿y +( +nuÎ +, ''), +Œue +); + +245 + } +} + +250 +´Ùeùed + +funùiÚ + + $isEm±y +( +$v®ue +) + +252 ià( + `is_¬¿y +( +$v®ue +)) + +254 +$fž‹»d + = + `¬¿y_fž‹r +( +$v®ue +); + +256  + `em±y +( +$fž‹»d +); + +259  +·»Á +:: + `isEm±y +( +$v®ue +); + +260 + } +} + + @lib/vendor/symfony/lib/validator/sfValidatorDateRange.class.php + +1 + `£tMes§ge +('invalid', 'The begin date must be beforeheƒnd date.'); + +40 +$this +-> + `addRequœedO±iÚ +('from_date'); + +41 +$this +-> + `addRequœedO±iÚ +('to_date'); + +42 +$this +-> + `addO±iÚ +('from_field', 'from'); + +43 +$this +-> + `addO±iÚ +('to_field', 'to'); + +49 +´Ùeùed + +funùiÚ + + $doC˪ +( +$v®ue +) + +51 +$äomF›ld + = +$this +-> + `g‘O±iÚ +('from_field'); + +52 +$toF›ld + = +$this +-> + `g‘O±iÚ +('to_field'); + +54 +$v®ue +[ +$äomF›ld +] = +$this +-> + `g‘O±iÚ +('äom_d©e')-> + `þ—n +( + `is£t +($v®ue[$äomF›ld]è? $v®ue[$äomF›ld] : +nuÎ +); + +55 +$v®ue +[ +$toF›ld +] = +$this +-> + `g‘O±iÚ +('to_d©e')-> + `þ—n +( + `is£t +($v®ue[$toF›ld]è? $v®ue[$toF›ld] : +nuÎ +); + +57 ià( +$v®ue +[ +$äomF›ld +] && $v®ue[ +$toF›ld +]) + +59 +$v + = +Ãw + + `sfV®id©ÜSchemaCom·» +( +$äomF›ld +, +sfV®id©ÜSchemaCom·» +:: +LESS_THAN_EQUAL +, +$toF›ld +, + `¬¿y +('throw_glob®_”rÜ' => +Œue +),‡¼ay('šv®id' => +$this +-> + `g‘Mes§ge +('invalid'))); + +60 +$v +-> + `þ—n +( +$v®ue +); + +63  +$v®ue +; + +64 + } +} + + @lib/vendor/symfony/lib/validator/sfValidatorDateTime.class.php + +1 + `£tO±iÚ +('w™h_time', +Œue +); + +30 + } +} + + @lib/vendor/symfony/lib/validator/sfValidatorDecorator.class.php + +1 +v®id©Ü + = $this-> + `g‘V®id©Ü +(); + +35 ià(! +$this +-> +v®id©Ü + +š¡ªûof + +sfV®id©ÜBa£ +) + +37 +throw + +Ãw + + `RuÁimeExû±iÚ +('The getValidator() method must„eturn‡ sfValidatorBase instance.'); + +40 + `fܗch + ( +$ÝtiÚs + +as + +$key + => +$v®ue +) + +42 +$this +-> +v®id©Ü +-> + `£tO±iÚ +( +$key +, +$v®ue +); + +45 + `fܗch + ( +$mes§ges + +as + +$key + => +$v®ue +) + +47 +$this +-> +v®id©Ü +-> + `£tMes§ge +( +$key +, +$v®ue +); + +58 +ab¡¿ù + +´Ùeùed + +funùiÚ + + `g‘V®id©Ü +(); + +63 +public + +funùiÚ + + $þ—n +( +$v®ue +) + +65  +$this +-> + `doC˪ +( +$v®ue +); + +66 + } +} + +71 +´Ùeùed + +funùiÚ + + $doC˪ +( +$v®ue +) + +73  +$this +-> +v®id©Ü +-> + `þ—n +( +$v®ue +); + +74 + } +} + +79 +public + +funùiÚ + + $g‘Mes§ge +( +$Çme +) + +81  +$this +-> +v®id©Ü +-> + `g‘Mes§ge +( +$Çme +); + +82 + } +} + +87 +public + +funùiÚ + + $£tMes§ge +( +$Çme +, +$v®ue +) + +89 +$this +-> +v®id©Ü +-> + `£tMes§ge +( +$Çme +, +$v®ue +); + +90 + } +} + +95 +public + +funùiÚ + + $g‘Mes§ges +() + +97  +$this +-> +v®id©Ü +-> + `g‘Mes§ges +(); + +98 + } +} + +103 +public + +funùiÚ + + $£tMes§ges +( +$v®ues +) + +105  +$this +-> +v®id©Ü +-> + `£tMes§ges +( +$v®ues +); + +106 + } +} + +111 +public + +funùiÚ + + $g‘O±iÚ +( +$Çme +) + +113  +$this +-> +v®id©Ü +-> + `g‘O±iÚ +( +$Çme +); + +114 + } +} + +119 +public + +funùiÚ + + $£tO±iÚ +( +$Çme +, +$v®ue +) + +121 +$this +-> +v®id©Ü +-> + `£tO±iÚ +( +$Çme +, +$v®ue +); + +122 + } +} + +127 +public + +funùiÚ + + $hasO±iÚ +( +$Çme +) + +129  +$this +-> +v®id©Ü +-> + `hasO±iÚ +( +$Çme +); + +130 + } +} + +135 +public + +funùiÚ + + $g‘O±iÚs +() + +137  +$this +-> +v®id©Ü +-> + `g‘O±iÚs +(); + +138 + } +} + +143 +public + +funùiÚ + + $£tO±iÚs +( +$v®ues +) + +145 +$this +-> +v®id©Ü +-> + `£tO±iÚs +( +$v®ues +); + +146 + } +} + +151 +public + +funùiÚ + + $asSŒšg +( +$šd’t + = 0) + +153  +$this +-> +v®id©Ü +-> + `asSŒšg +( +$šd’t +); + +154 + } +} + +159 +public + +funùiÚ + + $g‘DeçuÉO±iÚs +() + +161  +$this +-> +v®id©Ü +-> + `g‘DeçuÉO±iÚs +(); + +162 + } +} + +167 +public + +funùiÚ + + $g‘DeçuÉMes§ges +() + +169  +$this +-> +v®id©Ü +-> + `g‘DeçuÉMes§ges +(); + +170 + } +} + + @lib/vendor/symfony/lib/validator/sfValidatorEmail.class.php + +1 + `£tO±iÚ +('·‰”n', +£lf +:: +REGEX_EMAIL +); + +32 + } +} + + @lib/vendor/symfony/lib/validator/sfValidatorError.class.php + +1 +v®id©Ü + = +$v®id©Ü +; + +35 +$this +-> +¬gum’ts + = +$¬gum’ts +; + +38 +$this +-> +code + = +$code +; + +40 ià(! +$mes§geFÜm© + = +$this +-> + `g‘Mes§geFÜm© +()) + +42 +$mes§geFÜm© + = +$code +; + +44 +$this +-> +mes§ge + = + `¡¹r +( +$mes§geFÜm© +, $this-> + `g‘Argum’ts +()); + +52 +public + +funùiÚ + + $__toSŒšg +() + +54  +$this +-> + `g‘Mes§ge +(); + +55 + } +} + +62 +public + +funùiÚ + + $g‘V®ue +() + +64  + `is£t +( +$this +-> +¬gum’ts +['v®ue']è? $this->¬gum’ts['v®ue'] : +nuÎ +; + +65 + } +} + +72 +public + +funùiÚ + + $g‘V®id©Ü +() + +74  +$this +-> +v®id©Ü +; + +75 + } +} + +84 +public + +funùiÚ + + $g‘Argum’ts +( +$¿w + = +çl£ +) + +86 ià( +$¿w +) + +88  +$this +-> +¬gum’ts +; + +91 +$¬gum’ts + = + `¬¿y +(); + +92 + `fܗch + ( +$this +-> +¬gum’ts + +as + +$key + => +$v®ue +) + +94 ià( + `is_¬¿y +( +$v®ue +)) + +99 +$¬gum’ts +["%$key%"] = + `html¥ecŸlch¬s +( +$v®ue +, +ENT_QUOTES +, +sfV®id©ÜBa£ +:: + `g‘Ch¬£t +()); + +102  +$¬gum’ts +; + +103 + } +} + +118 +public + +funùiÚ + + $g‘Mes§geFÜm© +() + +120 +$mes§geFÜm© + = +$this +-> +v®id©Ü +-> + `g‘Mes§ge +($this-> +code +); + +121 ià(! +$mes§geFÜm© +) + +123 +$mes§geFÜm© + = +$this +-> + `g‘Mes§ge +(); + +126  +$mes§geFÜm© +; + +127 + } +} + +141 +public + +funùiÚ + + $£rŸlize +() + +143  + `£rŸlize +( + `¬¿y +( +$this +-> +v®id©Ü +, $this-> +¬gum’ts +, $this-> +code +, $this-> +mes§ge +)); + +144 + } +} + +152 +public + +funùiÚ + + $un£rŸlize +( +$£rŸlized +) + +154 + `li¡ +( +$this +-> +v®id©Ü +, $this-> +¬gum’ts +, $this-> +code +, $this-> +mes§ge +èð + `un£rŸlize +( +$£rŸlized +); + +155 + } +} + + @lib/vendor/symfony/lib/validator/sfValidatorErrorSchema.class.php + +1 +v®id©Ü + = +$v®id©Ü +; + +36 + g$this +-> + g¬gum’ts + = +¬¿y +(); + +39 + g$this +-> + gcode + = ''; + +40 + g$this +-> + gmes§ge + = ''; + +42 + g$this +-> +addE¼Üs +( +$”rÜs +); + +55 +public + +funùiÚ + +addE¼Ü +( +sfV®id©ÜE¼Ü + +$”rÜ +, +$Çme + = +nuÎ +) + +57 ià( +nuÎ + ==ð +$Çme + || +is_š‹g” +($name)) + +59 ià( +$”rÜ + +š¡ªûof + +sfV®id©ÜE¼ÜSchema +) + +61 +$this +-> +addE¼Üs +( +$”rÜ +); + +65 + g$this +-> + gglob®E¼Üs +[] = +$”rÜ +; + +66 + g$this +-> + g”rÜs +[] = +$”rÜ +; + +71 ià(! +is£t +( +$this +-> +ÇmedE¼Üs +[ +$Çme +]è&& ! +$”rÜ + +š¡ªûof + + gsfV®id©ÜE¼ÜSchema +) + +73 + g$this +-> + gÇmedE¼Üs +[ +$Çme +] = +$”rÜ +; + +74 + g$this +-> + g”rÜs +[ +$Çme +] = +$”rÜ +; + +78 ià(! +is£t +( +$this +-> +ÇmedE¼Üs +[ +$Çme +])) + +80 + g$this +-> + gÇmedE¼Üs +[ +$Çme +] = +Ãw + +sfV®id©ÜE¼ÜSchema +( +$”rÜ +-> +g‘V®id©Ü +()); + +81 + g$this +-> + g”rÜs +[ +$Çme +] = +Ãw + +sfV®id©ÜE¼ÜSchema +( +$”rÜ +-> +g‘V®id©Ü +()); + +83 ià(! + g$this +-> + gÇmedE¼Üs +[ +$Çme +] +š¡ªûof + + gsfV®id©ÜE¼ÜSchema +) + +85 + g$cu¼’t + = +$this +-> +ÇmedE¼Üs +[ +$Çme +]; + +86 + g$this +-> + gÇmedE¼Üs +[ +$Çme +] = +Ãw + +sfV®id©ÜE¼ÜSchema +( +$cu¼’t +-> +g‘V®id©Ü +()); + +87 + g$this +-> + g”rÜs +[ +$Çme +] = +Ãw + +sfV®id©ÜE¼ÜSchema +( +$cu¼’t +-> +g‘V®id©Ü +()); + +89 + g$m‘hod + = +$cu¼’t + +š¡ªûof + +sfV®id©ÜE¼ÜSchema + ? 'addErrors' : 'addError'; + +90 + g$this +-> + gÇmedE¼Üs +[ +$Çme +]-> +$m‘hod +( +$cu¼’t +); + +91 + g$this +-> + g”rÜs +[ +$Çme +]-> +$m‘hod +( +$cu¼’t +); + +94 + g$m‘hod + = +$”rÜ + +š¡ªûof + +sfV®id©ÜE¼ÜSchema + ? 'addErrors' : 'addError'; + +95 + g$this +-> + gÇmedE¼Üs +[ +$Çme +]-> +$m‘hod +( +$”rÜ +); + +96 + g$this +-> + g”rÜs +[ +$Çme +]-> +$m‘hod +( +$”rÜ +); + +100 + g$this +-> +upd©eCode +(); + +101 + g$this +-> +upd©eMes§ge +(); + +103  + g$this +; + +113 +public + +funùiÚ + +addE¼Üs +( +$”rÜs +) + +115 ià( +$”rÜs + +š¡ªûof + + gsfV®id©ÜE¼ÜSchema +) + +117 +fܗch + ( +$”rÜs +-> +g‘Glob®E¼Üs +(è +as + +$”rÜ +) + +119 + g$this +-> +addE¼Ü +( +$”rÜ +); + +122 +fܗch + ( +$”rÜs +-> +g‘NamedE¼Üs +(è +as + +$Çme + => +$”rÜ +) + +124 +$this +-> +addE¼Ü +( +$”rÜ +, ( +¡ršg +è +$Çme +); + +129 +fܗch + ( +$”rÜs + +as + +$Çme + => +$”rÜ +) + +131 +$this +-> +addE¼Ü +( +$”rÜ +, +$Çme +); + +135  + g$this +; + +143 +public + +funùiÚ + +g‘E¼Üs +() + +145  + g$this +-> + g”rÜs +; + +153 +public + +funùiÚ + +g‘NamedE¼Üs +() + +155  + g$this +-> + gÇmedE¼Üs +; + +163 +public + +funùiÚ + +g‘Glob®E¼Üs +() + +165  + g$this +-> + gglob®E¼Üs +; + +171 +public + +funùiÚ + +g‘V®ue +() + +173  + gnuÎ +; + +179 +public + +funùiÚ + +g‘Argum’ts +( +$¿w + = +çl£ +) + +181  +¬¿y +(); + +187 +public + +funùiÚ + +g‘Mes§geFÜm© +() + +197 +public + +funùiÚ + +couÁ +() + +199  +couÁ +( +$this +-> +”rÜs +); + +205 +public + +funùiÚ + +»wšd +() + +207 +»£t +( +$this +-> +”rÜs +); + +209 + g$this +-> + gcouÁ + = +couÁ +( +$this +-> +”rÜs +); + +217 +public + +funùiÚ + +key +() + +219  +key +( +$this +-> +”rÜs +); + +227 +public + +funùiÚ + +cu¼’t +() + +229  +cu¼’t +( +$this +-> +”rÜs +); + +235 +public + +funùiÚ + +Ãxt +() + +237 +Ãxt +( +$this +-> +”rÜs +); + +239 -- + g$this +-> + gcouÁ +; + +247 +public + +funùiÚ + +v®id +() + +249  + g$this +-> + gcouÁ + > 0; + +259 +public + +funùiÚ + +off£tExi¡s +( +$Çme +) + +261  +is£t +( +$this +-> +”rÜs +[ +$Çme +]); + +271 +public + +funùiÚ + +off£tG‘ +( +$Çme +) + +273  +is£t +( +$this +-> +”rÜs +[ +$Çme +]è? + g$this +-> + g”rÜs +[$Çme] : +nuÎ +; + +284 +public + +funùiÚ + +off£tS‘ +( +$off£t +, +$v®ue +) + +286 +throw + +Ãw + +LogicExû±iÚ +('Unable update‡nƒrror.'); + +294 +public + +funùiÚ + +off£tUn£t +( +$off£t +) + +301 +´Ùeùed + +funùiÚ + +upd©eCode +() + +303 + g$this +-> + gcode + = +im¶ode +(' ', +¬¿y_m”ge +( + +304 +¬¿y_m­ +( +ü—‹_funùiÚ +('$e', '»tuº $e->g‘Code();'), +$this +-> +glob®E¼Üs +), + +305 +¬¿y_m­ +( +ü—‹_funùiÚ +('$n,$e', '»tuº $n.\' [\'.$e->g‘Code().\']\';'), +¬¿y_keys +( +$this +-> +ÇmedE¼Üs +), +¬¿y_v®ues +($this->namedErrors)) + +312 +´Ùeùed + +funùiÚ + +upd©eMes§ge +() + +314 + g$this +-> + gmes§ge + = +im¶ode +(' ', +¬¿y_m”ge +( + +315 +¬¿y_m­ +( +ü—‹_funùiÚ +('$e', '»tuº $e->g‘Mes§ge();'), +$this +-> +glob®E¼Üs +), + +316 +¬¿y_m­ +( +ü—‹_funùiÚ +('$n,$e', '»tuº $n.\' [\'.$e->g‘Mes§ge().\']\';'), +¬¿y_keys +( +$this +-> +ÇmedE¼Üs +), +¬¿y_v®ues +($this->namedErrors)) + +325 +public + +funùiÚ + +£rŸlize +() + +327  +£rŸlize +( +¬¿y +( +$this +-> +v®id©Ü +, $this-> +¬gum’ts +, $this-> +code +, $this-> +mes§ge +, $this-> +”rÜs +, $this-> +glob®E¼Üs +, $this-> +ÇmedE¼Üs +)); + +336 +public + +funùiÚ + +un£rŸlize +( +$£rŸlized +) + +338 +li¡ +( +$this +-> +v®id©Ü +, $this-> +¬gum’ts +, $this-> +code +, $this-> +mes§ge +, $this-> +”rÜs +, $this-> +glob®E¼Üs +, $this-> +ÇmedE¼Üs +èð +un£rŸlize +( +$£rŸlized +); + + @lib/vendor/symfony/lib/validator/sfValidatorFile.class.php + +1 + `addO±iÚ +('max_size'); + +61 +$this +-> + `addO±iÚ +('mime_types'); + +62 +$this +-> + `addO±iÚ +('mime_ty³_gues£rs', + `¬¿y +( + +63 + `¬¿y +( +$this +, 'guessFromFileinfo'), + +64 + `¬¿y +( +$this +, 'guessFromMimeContentType'), + +65 + `¬¿y +( +$this +, 'guessFromFileBinary'), + +67 +$this +-> + `addO±iÚ +('mime_ÿ‹gܛs', + `¬¿y +( + +68 'web_images' => + `¬¿y +( + +75 +$this +-> + `addO±iÚ +('validated_file_class', 'sfValidatedFile'); + +76 +$this +-> + `addO±iÚ +('·th', +nuÎ +); + +78 +$this +-> + `addMes§ge +('max_size', 'File isoo†arge (maximum is %max_size% bytes).'); + +79 +$this +-> + `addMes§ge +('mime_types', 'Invalid mimeype (%mime_type%).'); + +80 +$this +-> + `addMes§ge +('partial', 'The uploaded file was only…artially uploaded.'); + +81 +$this +-> + `addMes§ge +('no_tmp_dir', 'Missing‡emporary folder.'); + +82 +$this +-> + `addMes§ge +('cant_write', 'Failedo write fileo disk.'); + +83 +$this +-> + `addMes§ge +('extension', 'File upload stopped byƒxtension.'); + +99 +´Ùeùed + +funùiÚ + + $doC˪ +( +$v®ue +) + +101 ià(! + `is_¬¿y +( +$v®ue +è|| ! + `is£t +($value['tmp_name'])) + +103 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'šv®id', + `¬¿y +('v®ue' => ( +¡ršg +è +$v®ue +)); + +106 ià(! + `is£t +( +$v®ue +['name'])) + +108 +$v®ue +['name'] = ''; + +111 ià(! + `is£t +( +$v®ue +['error'])) + +113 +$v®ue +['”rÜ'] = +UPLOAD_ERR_OK +; + +116 ià(! + `is£t +( +$v®ue +['size'])) + +118 +$v®ue +['size'] = + `fžesize +($value['tmp_name']); + +121 ià(! + `is£t +( +$v®ue +['type'])) + +123 +$v®ue +['type'] = 'application/octet-stream'; + +126  +$v®ue +['error']) + +128  +UPLOAD_ERR_INI_SIZE +: + +129 +$max + = + `ši_g‘ +('upload_max_filesize'); + +130 ià( +$this +-> + `g‘O±iÚ +('max_size')) + +132 +$max + = + `mš +($max, +$this +-> + `g‘O±iÚ +('max_size')); + +134 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'max_size', + `¬¿y +('max_size' => +$max +, 'size' => (è +$v®ue +['size'])); + +135  +UPLOAD_ERR_FORM_SIZE +: + +136 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'max_size', + `¬¿y +('max_size' => 0, 'size' => (è +$v®ue +['size'])); + +137  +UPLOAD_ERR_PARTIAL +: + +138 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'partial'); + +139  +UPLOAD_ERR_NO_TMP_DIR +: + +140 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'no_tmp_dir'); + +141  +UPLOAD_ERR_CANT_WRITE +: + +142 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'cant_write'); + +143  +UPLOAD_ERR_EXTENSION +: + +144 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'extension'); + +148 ià( +$this +-> + `hasO±iÚ +('max_size'è&& $this-> + `g‘O±iÚ +('max_size'è< (è +$v®ue +['size']) + +150 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'max_size', + `¬¿y +('max_size' => $this-> + `g‘O±iÚ +('max_size'), 'size' => (è +$v®ue +['size'])); + +153 +$mimeTy³ + = +$this +-> + `g‘MimeTy³ +(( +¡ršg +è +$v®ue +['tmp_name'], (string) $value['type']); + +156 ià( +$this +-> + `hasO±iÚ +('mime_types')) + +158 +$mimeTy³s + = + `is_¬¿y +( +$this +-> + `g‘O±iÚ +('mime_ty³s')è? $this->g‘O±iÚ('mime_ty³s'è: $this-> + `g‘MimeTy³sFromC©egÜy +($this->getOption('mime_types')); + +159 ià(! + `š_¬¿y +( +$mimeTy³ +, + `¬¿y_m­ +('¡¹Þow”', +$mimeTy³s +))) + +161 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'mime_ty³s', + `¬¿y +('mime_ty³s' => +$mimeTy³s +, 'mime_ty³' => +$mimeTy³ +)); + +165 +$þass + = +$this +-> + `g‘O±iÚ +('validated_file_class'); + +167  +Ãw + + `$þass +( +$v®ue +['Çme'], +$mimeTy³ +, $v®ue['tmp_Çme'], $v®ue['size'], +$this +-> + `g‘O±iÚ +('path')); + +168 + } +} + +184 +´Ùeùed + +funùiÚ + + $g‘MimeTy³ +( +$fže +, +$çÎback +) + +186 + `fܗch + ( +$this +-> + `g‘O±iÚ +('mime_ty³_gues£rs'è +as + +$m‘hod +) + +188 +$ty³ + = + `ÿÎ_u£r_func +( +$m‘hod +, +$fže +); + +190 ià( +nuÎ + !=ð +$ty³ + && $ty³ !=ð +çl£ +) + +192  + `¡¹Þow” +( +$ty³ +); + +196  + `¡¹Þow” +( +$çÎback +); + +197 + } +} + +206 +´Ùeùed + +funùiÚ + + $guessFromFžešfo +( +$fže +) + +208 ià(! + `funùiÚ_exi¡s +('fšfo_ݒ'è|| ! + `is_»adabË +( +$fže +)) + +210  +nuÎ +; + +213 ià(! +$fšfo + = +Ãw + + `fšfo +( +FILEINFO_MIME +)) + +215  +nuÎ +; + +218 +$ty³ + = +$fšfo +-> + `fže +( +$fže +); + +221 ià( +çl£ + !=ð +$pos + = + `¡½os +( +$ty³ +, ';')) + +223 +$ty³ + = + `sub¡r +($ty³, 0, +$pos +); + +226  +$ty³ +; + +227 + } +} + +236 +´Ùeùed + +funùiÚ + + $guessFromMimeCڋÁTy³ +( +$fže +) + +238 ià(! + `funùiÚ_exi¡s +('mime_cڋÁ_ty³'è|| ! + `is_»adabË +( +$fže +)) + +240  +nuÎ +; + +243  + `mime_cڋÁ_ty³ +( +$fže +); + +244 + } +} + +253 +´Ùeùed + +funùiÚ + + $guessFromFžeBš¬y +( +$fže +) + +255 + `ob_¡¬t +(); + +257 + `·s¡hru +( + `¥rštf +('fž-b --mim% 2>/dev/nuÎ', + `esÿ³sh–Ïrg +( +$fže +)), +$»tuº +); + +258 ià( +$»tuº + > 0) + +260 + `ob_’d_þ—n +(); + +262  +nuÎ +; + +264 +$ty³ + = + `Œim +( + `ob_g‘_þ—n +()); + +266 ià(! + `´eg_m©ch +('#^([a-z0-9\-]+/[a-z0-9\-.]+)#i', +$ty³ +, +$m©ch +)) + +269  +nuÎ +; + +272  +$m©ch +[1]; + +273 + } +} + +275 +´Ùeùed + +funùiÚ + + $g‘MimeTy³sFromC©egÜy +( +$ÿ‹gÜy +) + +277 +$ÿ‹gܛs + = +$this +-> + `g‘O±iÚ +('mime_categories'); + +279 ià(! + `is£t +( +$ÿ‹gܛs +[ +$ÿ‹gÜy +])) + +281 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('Inv®id mimty³ c©egÜy "%s".', +$ÿ‹gÜy +)); + +284  +$ÿ‹gܛs +[ +$ÿ‹gÜy +]; + +285 + } +} + +290 +´Ùeùed + +funùiÚ + + $isEm±y +( +$v®ue +) + +295 (! + `is_¬¿y +( +$v®ue +)) + +297 ( + `is_¬¿y +( +$v®ue +è&& + `is£t +($v®ue['”rÜ']è&& +UPLOAD_ERR_NO_FILE + === $value['error']); + +298 + } +} + + @lib/vendor/symfony/lib/validator/sfValidatorFromDescription.class.php + +1 +¡ršg + = +$¡ršg +; + +31 +$this +-> +tok’s + = $this-> + `tok’ize +( +$¡ršg +); + +33 +·»Á +:: + `__cÚ¡ruù +( +$ÝtiÚs +, +$mes§ges +); + +45 +public + +funùiÚ + + $asPhp +() + +47  +$this +-> + `»duûTok’s +($this-> +tok’s +, 'asPhp'); + +48 + } +} + +53 +public + +funùiÚ + + $g‘V®id©Ü +() + +55 ià( +nuÎ + ==ð +$this +-> +v®id©Ü +) + +57 +$this +-> +v®id©Ü + = $this-> + `»duûTok’s +($this-> +tok’s +, 'getValidator'); + +60  +$this +-> +v®id©Ü +; + +61 + } +} + +70 +´Ùeùed + +funùiÚ + + $tok’ize +( +$¡ršg +) + +72 +$tok’s + = + `¬¿y +(); + +73 +$Ën + = + `¡¾’ +( +$¡ršg +); + +74 +$i + = 0; + +75  +$i + < +$Ën +) + +77 ià( + `´eg_m©ch +('/^([a-z0-9_\-]+)\s*(<=|>=|<|>|==|!=)/i', + `sub¡r +( +$¡ršg +, +$i +), +$m©ch +)) + +80 +$i + +ð + `¡¾’ +( +$m©ch +[0]); + +82 +$ËáF›ld + = +$m©ch +[1]; + +83 +$ݔ©Ü + = +$m©ch +[2]; + +86 +$¬gum’ts + = +$this +-> + `·r£Argum’ts +( +$¡ršg +, +$i +); + +89 ià(! + `´eg_m©ch +('/\s*([a-z0-9_\-]+)/', + `sub¡r +( +$¡ršg +, +$i +), +$m©ch +)) + +91 +throw + +Ãw + + `DomašExû±iÚ +('Parsing…roblem.'); + +94 +$i + +ð + `¡¾’ +( +$m©ch +[0]); + +95 +$rightF›ld + = +$m©ch +[1]; + +97 +$tok’s +[] = +Ãw + + `sfV®id©ÜFDTok’ +('sfV®id©ÜSchemaCom·»', + `¬¿y +( +$ËáF›ld +, +$ݔ©Ü +, +$rightF›ld +, +$¬gum’ts +[0], + `is£t +($arguments[1]) ? $arguments[1] :‡rray())); + +99 ià( + `´eg_m©ch +('/^×nd|Ü)/i', + `sub¡r +( +$¡ršg +, +$i +), +$m©ch +)) + +102 +$i + +ð + `¡¾’ +( +$m©ch +[0]); + +105 +$¬gum’ts + = +$this +-> + `·r£Argum’ts +( +$¡ršg +, +$i +); + +107 +$tok’s +[] = +Ãw + + `sfV®id©ÜFDTok’O³¿tÜ +( + `¡¹Þow” +( +$m©ch +[1]), +$¬gum’ts +); + +109 ià( + `´eg_m©ch +('/^(?:([a-z0-9_\-]+)\:)?([a-z0-9_\-]+)/i', + `sub¡r +( +$¡ršg +, +$i +), +$m©ch +)) + +112 +$i + +ð + `¡¾’ +( +$m©ch +[0]); + +114 +$þass + = 'sfV®id©Ü'. +$m©ch +[2]; + +115 +$¬gum’ts + = +$this +-> + `·r£Argum’ts +( +$¡ršg +, +$i +); + +116 +$tok’ + = +Ãw + + `sfV®id©ÜFDTok’ +( +$þass +, + `¬¿y +( +$¬gum’ts +[0], + `is£t +($arguments[1]) ? $arguments[1] :‡rray())); + +117 ià( +$m©ch +[1]) + +119 +$tok’ + = +Ãw + + `sfV®id©ÜFDTok’Fž‹r +( +$m©ch +[1], $token); + +122 +$tok’s +[] = +$tok’ +; + +124 ià('(' =ð +$¡ršg +[ +$i +]) + +126 +$tok’s +[] = +Ãw + + `sfV®id©ÜFDTok’LeáB¿ck‘ +(); + +127 ++ +$i +; + +129 ià(')' =ð +$¡ršg +[ +$i +]) + +131 +$tok’s +[] = +Ãw + + `sfV®id©ÜFDTok’RightB¿ck‘ +(); + +132 ++ +$i +; + +134 ià( + `š_¬¿y +( +$¡ršg +[ +$i +], + `¬¿y +(' ', "\t", "\r", "\n"))) + +136 ++ +$i +; + +140 +throw + +Ãw + + `DomašExû±iÚ +( + `¥rštf +('UÇbˁطr£ sŒšg (%s).', +$¡ršg +)); + +144  +$this +-> + `cÚv”tInfixToR² +( +$tok’s +); + +145 + } +} + +155 +´Ùeùed + +funùiÚ + + $·r£Argum’ts +( +$¡ršg +, & +$i +) + +157 +$Ën + = + `¡¾’ +( +$¡ršg +); + +159 ià( +$i + + 1 > +$Ën + || '(' !ð +$¡ršg +[$i]) + +161  + `¬¿y +(array(),‡rray()); + +164 ++ +$i +; + +166 +$¬gs + = ''; + +167 +$ݒed + = 0; + +168  +$i + < +$Ën +) + +170 ià('(' =ð +$¡ršg +[ +$i +]) + +172 ++ +$ݒed +; + +174 ià(')' =ð +$¡ršg +[ +$i +]) + +176 ià(! +$ݒed +) + +181 -- +$ݒed +; + +184 +$¬gs + .ð +$¡ršg +[ +$i +++]; + +187 ++ +$i +; + +189  +sfYamlIƚe +:: + `lßd +('['.(! +$¬gs + ? '{}' : $args).']'); + +190 + } +} + +199 +´Ùeùed + +funùiÚ + + $cÚv”tInfixToR² +( +$tok’s +) + +201 +$ouutSck + = + `¬¿y +(); + +202 +$ݔ©ÜSck + = + `¬¿y +(); + +203 +$´eûd’ûs + = + `¬¿y +('and' => 2, 'or' => 1, '(' => 0); + +206 + `fܗch + ( +$tok’s + +as + +$tok’ +) + +208  + `g‘_þass +( +$tok’ +)) + +211 +$ouutSck +[] = +$tok’ +; + +214 +$ݔ©ÜSck +[] = +$tok’ +; + +217 ! +$ݔ©ÜSck +[ + `couÁ +($ݔ©ÜSckè- 1] +š¡ªûof + +sfV®id©ÜFDTok’LeáB¿ck‘ +) + +219 +$ouutSck +[] = + `¬¿y_pÝ +( +$ݔ©ÜSck +); + +221 + `¬¿y_pÝ +( +$ݔ©ÜSck +); + +224  + `couÁ +( +$ݔ©ÜSck +è&& +$´eûd’ûs +[ +$tok’ +-> + `__toSŒšg +()] <= $precedences[$operatorStack[count($operatorStack) - 1]->__toString()]) + +226 +$ouutSck +[] = + `¬¿y_pÝ +( +$ݔ©ÜSck +); + +228 +$ݔ©ÜSck +[] = +$tok’ +; + +231 +$ouutSck +[] = +$tok’ +; + +235  + `couÁ +( +$ݔ©ÜSck +)) + +237 +$tok’ + = + `¬¿y_pÝ +( +$ݔ©ÜSck +); + +238 ià( +$tok’ + +š¡ªûof + +sfV®id©ÜFDTok’LeáB¿ck‘ + || $tok’ in¡ªûoà +sfV®id©ÜFDTok’RightB¿ck‘ +) + +240 +throw + +Ãw + + `DomašExû±iÚ +( + `¥rštf +('UÃv’…¬’thesi š sŒšg (%s).', +$this +-> +¡ršg +)); + +243 +$ouutSck +[] = +$tok’ +; + +246  +$ouutSck +; + +247 + } +} + +257 +´Ùeùed + +funùiÚ + + $»duûTok’s +( +$tok’s +, +$m‘hod +) + +259 ià(1 =ð + `couÁ +( +$tok’s +)) + +261  +$tok’s +[0]-> + `$m‘hod +(); + +265  + `couÁ +( +$tok’s +) > 1) + +267 +$i + = 0; + +268  + `is£t +( +$tok’s +[ +$i +]è&& !$tok’s[$i] +š¡ªûof + +sfV®id©ÜFDTok’O³¿tÜ +) + +270 +$i +++; + +273 +$tok’s +[ +$i +] = $tok’s[$i]-> + `$m‘hod +($tokens[$i - 2], $tokens[$i - 1]); + +274 + `un£t +( +$tok’s +[ +$i + - 1], $tokens[$i - 2]); + +276 +$tok’s + = + `¬¿y_v®ues +($tokens); + +279  +$tok’s +[0]; + +280 + } +} + +283 þas  + csfV®id©ÜFDTok’ + + +285 +´Ùeùed + + +286 + m$þass +, + +287 + m$¬gum’ts +; + +289 +public + +funùiÚ + +__cÚ¡ruù +( +$þass +, +$¬gum’ts + = + $¬¿y +()) + +291 +$this +-> +þass + = +$þass +; + +292 +$this +-> +¬gum’ts + = +$¬gum’ts +; + +295 +public + +funùiÚ + + $asPhp +() + +297  + `¥rštf +('Ãw %s(%s)', +$this +-> +þass +, + `im¶ode +(', ', + `¬¿y_m­ +( + `ü—‹_funùiÚ +('$a', '»tuº v¬_expÜt($a,rue);'), $this-> +¬gum’ts +))); + +298 + } +} + +300 +public + +funùiÚ + + $g‘V®id©Ü +() + +302 +$»æeùiÚ + = +Ãw + + `ReæeùiÚCÏss +( +$this +-> +þass +); + +304  +$»æeùiÚ +-> + `ÃwIn¡ªûArgs +( +$this +-> +¬gum’ts +); + +305 + } +} + +308 þas  + csfV®id©ÜFDTok’Fž‹r + + +310 +´Ùeùed + + +311 + m$f›ld +, + +312 + m$tok’ +; + +314 +public + +funùiÚ + + $__cÚ¡ruù +( +$f›ld +, +sfV®id©ÜFDTok’ + +$tok’ +) + +316 +$this +-> +f›ld + = +$f›ld +; + +317 +$this +-> +tok’ + = +$tok’ +; + +320 +public + +funùiÚ + + $asPhp +() + +322  + `¥rštf +('Ãw sfV®id©ÜSchemaFž‹r(\'%s\', %s)', +$this +-> +f›ld +, $this-> +tok’ +-> + `asPhp +()); + +323 + } +} + +325 +public + +funùiÚ + + $g‘V®id©Ü +() + +327  +Ãw + + `sfV®id©ÜSchemaFž‹r +( +$this +-> +f›ld +, $this-> +tok’ +-> + `g‘V®id©Ü +()); + +328 + } +} + +331 þas  + csfV®id©ÜFDTok’O³¿tÜ + + +333 +´Ùeùed + + +334 + m$þass +, + +335 + m$ݔ©Ü +, + +336 + m$tok’ +; + +338 +public + +funùiÚ + +__cÚ¡ruù +( +$ݔ©Ü +, +$¬gum’ts + = + $¬¿y +()) + +340 +$this +-> +ݔ©Ü + = +$ݔ©Ü +; + +341 +$this +-> +¬gum’ts + = +$¬gum’ts +; + +342 +$this +-> +þass + = 'Ü' =ð +$ݔ©Ü + ? 'sfValidatorOr' : 'sfValidatorAnd'; + +345 +public + +funùiÚ + + $__toSŒšg +() + +347  +$this +-> +ݔ©Ü +; + +348 + } +} + +350 +public + +funùiÚ + + $asPhp +( +$tok’Leá +, +$tok’Right +) + +352  + `¥rštf +('new %s(array(%s, %s), %s)', + +353 +$this +-> +þass +, + +354 + `is_objeù +( +$tok’Leá +è&& + `š_¬¿y +( + `g‘_þass +($tok’Leá), + `¬¿y +('sfV®id©ÜFDTok’', 'sfV®id©ÜFDTok’Fž‹r')è? $tok’Leá-> + `asPhp +() : $tokenLeft, + +355 + `is_objeù +( +$tok’Right +è&& + `š_¬¿y +( + `g‘_þass +($tok’Right), + `¬¿y +('sfV®id©ÜFDTok’', 'sfV®id©ÜFDTok’Fž‹r')è? $tok’Right-> + `asPhp +() : $tokenRight, + +356 + `im¶ode +(', ', + `¬¿y_m­ +( + `ü—‹_funùiÚ +('$a', '»tuº v¬_expÜt($a,rue);'), +$this +-> +¬gum’ts +)) + +358 + } +} + +360 +public + +funùiÚ + + $g‘V®id©Ü +( +$tok’Leá +, +$tok’Right +) + +362 +$»æeùiÚ + = +Ãw + + `ReæeùiÚCÏss +( +$this +-> +þass +); + +364 +$v®id©Üs + = + `¬¿y +( + +365 + `š_¬¿y +( + `g‘_þass +( +$tok’Leá +), + `¬¿y +('sfV®id©ÜFDTok’', 'sfV®id©ÜFDTok’Fž‹r')è? $tok’Leá-> + `g‘V®id©Ü +() : $tokenLeft, + +366 + `š_¬¿y +( + `g‘_þass +( +$tok’Right +), + `¬¿y +('sfV®id©ÜFDTok’', 'sfV®id©ÜFDTok’Fž‹r')è? $tok’Right-> + `g‘V®id©Ü +() : $tokenRight, + +369  +$»æeùiÚ +-> + `ÃwIn¡ªûArgs +( + `¬¿y_m”ge +( + `¬¿y +( +$v®id©Üs +), +$this +-> +¬gum’ts +)); + +370 + } +} + +373 þas  + csfV®id©ÜFDTok’LeáB¿ck‘ + + +375 +public + +funùiÚ + + $__toSŒšg +() + +379 + } +} + +381 þas  + csfV®id©ÜFDTok’RightB¿ck‘ + + +383 +public + +funùiÚ + + $__toSŒšg +() + +387 + } +} + + @lib/vendor/symfony/lib/validator/sfValidatorInteger.class.php + +1 + `addMes§ge +('max', '"%value%" must be‡t most %max%.'); + +42 +$this +-> + `addMes§ge +('min', '"%value%" must be‡t†east %min%.'); + +44 +$this +-> + `addO±iÚ +('min'); + +45 +$this +-> + `addO±iÚ +('max'); + +47 +$this +-> + `£tMes§ge +('invalid', '"%value%" is‚ot‡n integer.'); + +53 +´Ùeùed + +funùiÚ + + $doC˪ +( +$v®ue +) + +55 +$þ—n + = + `štv® +( +$v®ue +); + +57 ià( + `¡rv® +( +$þ—n +è!ð +$v®ue +) + +59 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'šv®id', + `¬¿y +('v®ue' => +$v®ue +)); + +62 ià( +$this +-> + `hasO±iÚ +('max'è&& +$þ—n + > $this-> + `g‘O±iÚ +('max')) + +64 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'max', + `¬¿y +('v®ue' => +$v®ue +, 'max' => $this-> + `g‘O±iÚ +('max'))); + +67 ià( +$this +-> + `hasO±iÚ +('mš'è&& +$þ—n + < $this-> + `g‘O±iÚ +('min')) + +69 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'mš', + `¬¿y +('v®ue' => +$v®ue +, 'mš' => $this-> + `g‘O±iÚ +('min'))); + +72  +$þ—n +; + +73 + } +} + + @lib/vendor/symfony/lib/validator/sfValidatorNumber.class.php + +1 + `addMes§ge +('max', '"%value%" must be‡t most %max%.'); + +42 +$this +-> + `addMes§ge +('min', '"%value%" must be‡t†east %min%.'); + +44 +$this +-> + `addO±iÚ +('min'); + +45 +$this +-> + `addO±iÚ +('max'); + +47 +$this +-> + `£tMes§ge +('invalid', '"%value%" is‚ot‡‚umber.'); + +53 +´Ùeùed + +funùiÚ + + $doC˪ +( +$v®ue +) + +55 ià(! + `is_num”ic +( +$v®ue +)) + +57 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'šv®id', + `¬¿y +('v®ue' => +$v®ue +)); + +60 +$þ—n + = + `æßtv® +( +$v®ue +); + +62 ià( +$this +-> + `hasO±iÚ +('max'è&& +$þ—n + > $this-> + `g‘O±iÚ +('max')) + +64 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'max', + `¬¿y +('v®ue' => +$v®ue +, 'max' => $this-> + `g‘O±iÚ +('max'))); + +67 ià( +$this +-> + `hasO±iÚ +('mš'è&& +$þ—n + < $this-> + `g‘O±iÚ +('min')) + +69 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'mš', + `¬¿y +('v®ue' => +$v®ue +, 'mš' => $this-> + `g‘O±iÚ +('min'))); + +72  +$þ—n +; + +73 + } +} + + @lib/vendor/symfony/lib/validator/sfValidatorOr.class.php + +1 + `addV®id©Ü +( +$v®id©Üs +); + +45 ià( + `is_¬¿y +( +$v®id©Üs +)) + +47 + `fܗch + ( +$v®id©Üs + +as + +$v®id©Ü +) + +49 +$this +-> + `addV®id©Ü +( +$v®id©Ü +); + +52 ià( +nuÎ + !=ð +$v®id©Üs +) + +54 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +('sfValidatorOr constructorakes‡ sfValidatorBase object, or‡ sfValidatorBase‡rray.'); + +57 +·»Á +:: + `__cÚ¡ruù +( +$ÝtiÚs +, +$mes§ges +); + +63 +´Ùeùed + +funùiÚ + + `cÚfigu» +( +$ÝtiÚs + = + `¬¿y +(), +$mes§ges + = + $¬¿y +()) + +65 +$this +-> + `£tMes§ge +('šv®id', +nuÎ +); + +66 + } +} + +73 +public + +funùiÚ + + $addV®id©Ü +( +sfV®id©ÜBa£ + +$v®id©Ü +) + +75 +$this +-> +v®id©Üs +[] = +$v®id©Ü +; + +76 + } +} + +83 +public + +funùiÚ + + $g‘V®id©Üs +() + +85  +$this +-> +v®id©Üs +; + +86 + } +} + +91 +´Ùeùed + +funùiÚ + + $doC˪ +( +$v®ue +) + +93 +$”rÜs + = + `¬¿y +(); + +94 + `fܗch + ( +$this +-> +v®id©Üs + +as + +$v®id©Ü +) + +96 +Œy + + +98  +$v®id©Ü +-> + `þ—n +( +$v®ue +); + +100 + `ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +102 +$”rÜs +[] = +$e +; + +106 ià( +$this +-> + `g‘Mes§ge +('invalid')) + +108 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'šv®id', + `¬¿y +('v®ue' => +$v®ue +)); + +111 +throw + +Ãw + + `sfV®id©ÜE¼ÜSchema +( +$this +, +$”rÜs +); + +112 + } +} + +117 +public + +funùiÚ + + $asSŒšg +( +$šd’t + = 0) + +119 +$v®id©Üs + = ''; + +120  +$i + = 0, +$max + = + `couÁ +( +$this +-> +v®id©Üs +); $i < $max; $i++) + +122 +$v®id©Üs + .ð"\n". +$this +-> +v®id©Üs +[ +$i +]-> + `asSŒšg +( +$šd’t + + 2)."\n"; + +124 ià( +$i + < +$max + - 1) + +126 +$v®id©Üs + .ð + `¡r_»³© +(' ', +$šd’t + + 2).'or'; + +129 ià( +$i + =ð +$max + - 2) + +131 +$ÝtiÚs + = +$this +-> + `g‘O±iÚsW™houtDeçuÉs +(); + +132 +$mes§ges + = +$this +-> + `g‘Mes§gesW™houtDeçuÉs +(); + +134 ià( +$ÝtiÚs + || +$mes§ges +) + +136 +$v®id©Üs + .ð + `¥rštf +('(%s%s)', + +137 +$ÝtiÚs + ? +sfYamlIƚe +:: + `dump +($ÝtiÚsè: ( +$mes§ges + ? '{}' : ''), + +138 +$mes§ges + ? ', '. +sfYamlIƚe +:: + `dump +($messages) : '' + +144  + `¥rštf +("%s(%s%s)", + `¡r_»³© +(' ', +$šd’t +), +$v®id©Üs +, str_repeat(' ', $indent)); + +145 + } +} + + @lib/vendor/symfony/lib/validator/sfValidatorPass.class.php + +1 + `doC˪ +( +$v®ue +); + +32 +´Ùeùed + +funùiÚ + + $doC˪ +( +$v®ue +) + +34  +$v®ue +; + +35 + } +} + + @lib/vendor/symfony/lib/validator/sfValidatorRegex.class.php + +1 + `addRequœedO±iÚ +('pattern'); + +39 +$this +-> + `addO±iÚ +('mu¡_m©ch', +Œue +); + +45 +´Ùeùed + +funùiÚ + + $doC˪ +( +$v®ue +) + +47 +$þ—n + = +·»Á +:: + `doC˪ +( +$v®ue +); + +49 +$·‰”n + = +$this +-> + `g‘P©‹º +(); + +52 ( +$this +-> + `g‘O±iÚ +('mu¡_m©ch'è&& ! + `´eg_m©ch +( +$·‰”n +, +$þ—n +)) + +54 (! +$this +-> + `g‘O±iÚ +('mu¡_m©ch'è&& + `´eg_m©ch +( +$·‰”n +, +$þ—n +)) + +57 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'šv®id', + `¬¿y +('v®ue' => +$v®ue +)); + +60  +$þ—n +; + +61 + } +} + +68 +public + +funùiÚ + + $g‘P©‹º +() + +70 +$·‰”n + = +$this +-> + `g‘O±iÚ +('pattern'); + +72  +$·‰”n + +š¡ªûof + +sfC®ÏbË + ? $·‰”n-> + `ÿÎ +() : $pattern; + +73 + } +} + + @lib/vendor/symfony/lib/validator/sfValidatorSchema.class.php + +1 +$v®id©Ü +) + +48 +$this +[ +$Çme +] = +$v®id©Ü +; + +51 ià( +nuÎ + !=ð +$f›lds +) + +53 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +('sfValidatorSchema constructorakes‡n‡rray of sfValidatorBase objects.'); + +56 +·»Á +:: + `__cÚ¡ruù +( +$ÝtiÚs +, +$mes§ges +); + +76 +´Ùeùed + +funùiÚ + + `cÚfigu» +( +$ÝtiÚs + = + `¬¿y +(), +$mes§ges + = + $¬¿y +()) + +78 +$this +-> + `addO±iÚ +('®low_exŒa_f›lds', +çl£ +); + +79 +$this +-> + `addO±iÚ +('fž‹r_exŒa_f›lds', +Œue +); + +81 +$this +-> + `addMes§ge +('extra_fields', 'Unexpectedƒxtra form field‚amed "%field%".'); + +82 +$this +-> + `addMes§ge +('post_max_size', 'The form submission cannot be…rocessed. It…robably meanshat you have uploaded‡ filehat isoo big.'); + +83 + } +} + +88 +public + +funùiÚ + + $þ—n +( +$v®ues +) + +90  +$this +-> + `doC˪ +( +$v®ues +); + +91 + } +} + +96 +´Ùeùed + +funùiÚ + + $doC˪ +( +$v®ues +) + +98 ià( +nuÎ + ==ð +$v®ues +) + +100 +$v®ues + = + `¬¿y +(); + +103 ià(! + `is_¬¿y +( +$v®ues +)) + +105 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +('You must…ass‡n‡rray…arameterohe clean() method'); + +108 +$þ—n + = + `¬¿y +(); + +109 +$unu£d + = + `¬¿y_keys +( +$this +-> +f›lds +); + +110 +$”rÜSchema + = +Ãw + + `sfV®id©ÜE¼ÜSchema +( +$this +); + +113 ià( + `is£t +( +$_SERVER +['CONTENT_LENGTH']è&& (è$_SERVER['CONTENT_LENGTH'] > +$this +-> + `g‘By‹s +( + `ši_g‘ +('post_max_size'))) + +115 +$”rÜSchema +-> + `addE¼Ü +( +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'post_max_size')); + +117 +throw + +$”rÜSchema +; + +121 +Œy + + +123 +$this +-> + `´eC˪ +( +$v®ues +); + +125 + `ÿtch + ( +sfV®id©ÜE¼ÜSchema + +$e +) + +127 +$”rÜSchema +-> + `addE¼Üs +( +$e +); + +129 + `ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +131 +$”rÜSchema +-> + `addE¼Ü +( +$e +); + +135 + `fܗch + ( +$v®ues + +as + +$Çme + => +$v®ue +) + +138 ià(! + `¬¿y_key_exi¡s +( +$Çme +, +$this +-> +f›lds +)) + +140 ià(! +$this +-> +ÝtiÚs +['allow_extra_fields']) + +142 +$”rÜSchema +-> + `addE¼Ü +( +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'exŒa_f›lds', + `¬¿y +('f›ld' => +$Çme +))); + +144 ià(! +$this +-> +ÝtiÚs +['filter_extra_fields']) + +146 +$þ—n +[ +$Çme +] = +$v®ue +; + +152 + `un£t +( +$unu£d +[ + `¬¿y_£¬ch +( +$Çme +, $unu£d, +Œue +)]); + +155 +Œy + + +157 +$þ—n +[ +$Çme +] = +$this +-> +f›lds +[$Çme]-> + `þ—n +( +$v®ue +); + +159 + `ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +161 +$þ—n +[ +$Çme +] = +nuÎ +; + +163 +$”rÜSchema +-> + `addE¼Ü +( +$e +, ( +¡ršg +è +$Çme +); + +168 + `fܗch + ( +$unu£d + +as + +$Çme +) + +171 +Œy + + +173 +$þ—n +[ +$Çme +] = +$this +-> +f›lds +[$Çme]-> + `þ—n +( +nuÎ +); + +175 + `ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +177 +$þ—n +[ +$Çme +] = +nuÎ +; + +179 +$”rÜSchema +-> + `addE¼Ü +( +$e +, ( +¡ršg +è +$Çme +); + +184 +Œy + + +186 +$þ—n + = +$this +-> + `po¡C˪ +($clean); + +188 + `ÿtch + ( +sfV®id©ÜE¼ÜSchema + +$e +) + +190 +$”rÜSchema +-> + `addE¼Üs +( +$e +); + +192 + `ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +194 +$”rÜSchema +-> + `addE¼Ü +( +$e +); + +197 ià( + `couÁ +( +$”rÜSchema +)) + +199 +throw + +$”rÜSchema +; + +202  +$þ—n +; + +203 + } +} + +217 +public + +funùiÚ + + $´eC˪ +( +$v®ues +) + +219 ià( +nuÎ + ==ð +$v®id©Ü + = +$this +-> + `g‘P»V®id©Ü +()) + +224 +$v®id©Ü +-> + `þ—n +( +$v®ues +); + +225 + } +} + +239 +public + +funùiÚ + + $po¡C˪ +( +$v®ues +) + +241 ià( +nuÎ + ==ð +$v®id©Ü + = +$this +-> + `g‘Po¡V®id©Ü +()) + +243  +$v®ues +; + +246  +$v®id©Ü +-> + `þ—n +( +$v®ues +); + +247 + } +} + +256 +public + +funùiÚ + + $£tP»V®id©Ü +( +sfV®id©ÜBa£ + +$v®id©Ü +) + +258 +$this +-> +´eV®id©Ü + = +þÚe + +$v®id©Ü +; + +260  +$this +; + +261 + } +} + +268 +public + +funùiÚ + + $g‘P»V®id©Ü +() + +270  +$this +-> +´eV®id©Ü +; + +271 + } +} + +280 +public + +funùiÚ + + $£tPo¡V®id©Ü +( +sfV®id©ÜBa£ + +$v®id©Ü +) + +282 +$this +-> +po¡V®id©Ü + = +þÚe + +$v®id©Ü +; + +284  +$this +; + +285 + } +} + +292 +public + +funùiÚ + + $g‘Po¡V®id©Ü +() + +294  +$this +-> +po¡V®id©Ü +; + +295 + } +} + +304 +public + +funùiÚ + + $off£tExi¡s +( +$Çme +) + +306  + `is£t +( +$this +-> +f›lds +[ +$Çme +]); + +307 + } +} + +316 +public + +funùiÚ + + $off£tG‘ +( +$Çme +) + +318  + `is£t +( +$this +-> +f›lds +[ +$Çme +]è? $this->f›lds[$Çme] : +nuÎ +; + +319 + } +} + +327 +public + +funùiÚ + + $off£tS‘ +( +$Çme +, +$v®id©Ü +) + +329 ià(! +$v®id©Ü + +š¡ªûof + +sfV®id©ÜBa£ +) + +331 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +('A field must be‡n instance of sfValidatorBase.'); + +334 +$this +-> +f›lds +[ +$Çme +] = +þÚe + +$v®id©Ü +; + +335 + } +} + +342 +public + +funùiÚ + + $off£tUn£t +( +$Çme +) + +344 + `un£t +( +$this +-> +f›lds +[ +$Çme +]); + +345 + } +} + +352 +public + +funùiÚ + + $g‘F›lds +() + +354  +$this +-> +f›lds +; + +355 + } +} + +360 +public + +funùiÚ + + $asSŒšg +( +$šd’t + = 0) + +362 +throw + +Ãw + + `Exû±iÚ +('Unableo convert‡ sfValidatorSchemao string.'); + +363 + } +} + +365 +public + +funùiÚ + + $__þÚe +() + +367 + `fܗch + ( +$this +-> +f›lds + +as + +$Çme + => +$f›ld +) + +369 +$this +-> +f›lds +[ +$Çme +] = +þÚe + +$f›ld +; + +372 ià( +nuÎ + !=ð +$this +-> +´eV®id©Ü +) + +374 +$this +-> +´eV®id©Ü + = +þÚe + $this->preValidator; + +377 ià( +nuÎ + !=ð +$this +-> +po¡V®id©Ü +) + +379 +$this +-> +po¡V®id©Ü + = +þÚe + $this->postValidator; + +381 + } +} + +383 +´Ùeùed + +funùiÚ + + $g‘By‹s +( +$v®ue +) + +385 +$v®ue + = + `Œim +($value); + +386  + `¡¹Þow” +( +$v®ue +[ + `¡¾’ +($value) - 1])) + +390 +$v®ue + *= 1024; + +392 +$v®ue + *= 1024; + +394 +$v®ue + *= 1024; + +397  +$v®ue +; + +398 + } +} + + @lib/vendor/symfony/lib/validator/sfValidatorSchemaCompare.class.php + +1 '; + +28 cÚ¡ + mGREATER_THAN_EQUAL + = '>='; + +56 +public + +funùiÚ + +__cÚ¡ruù +( +$ËáF›ld +, +$ݔ©Ü +, +$rightF›ld +, +$ÝtiÚs + = +¬¿y +(), +$mes§ges + = + $¬¿y +()) + +58 +$this +-> + `addO±iÚ +('Ëá_f›ld', +$ËáF›ld +); + +59 +$this +-> + `addO±iÚ +('ݔ©Ü', +$ݔ©Ü +); + +60 +$this +-> + `addO±iÚ +('right_f›ld', +$rightF›ld +); + +62 +$this +-> + `addO±iÚ +('throw_glob®_”rÜ', +çl£ +); + +64 +·»Á +:: + `__cÚ¡ruù +( +nuÎ +, +$ÝtiÚs +, +$mes§ges +); + +70 +´Ùeùed + +funùiÚ + + $doC˪ +( +$v®ues +) + +72 ià( +nuÎ + ==ð +$v®ues +) + +74 +$v®ues + = + `¬¿y +(); + +77 ià(! + `is_¬¿y +( +$v®ues +)) + +79 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +('You must…ass‡n‡rray…arameterohe clean() method'); + +82 +$ËáV®ue + = + `is£t +( +$v®ues +[ +$this +-> + `g‘O±iÚ +('Ëá_f›ld')]è? $v®ues[$this->g‘O±iÚ('Ëá_f›ld')] : +nuÎ +; + +83 +$rightV®ue + = + `is£t +( +$v®ues +[ +$this +-> + `g‘O±iÚ +('right_f›ld')]è? $v®ues[$this->g‘O±iÚ('right_f›ld')] : +nuÎ +; + +85  +$this +-> + `g‘O±iÚ +('operator')) + +87  +£lf +:: +GREATER_THAN +: + +88 +$v®id + = +$ËáV®ue + > +$rightV®ue +; + +90  +£lf +:: +GREATER_THAN_EQUAL +: + +91 +$v®id + = +$ËáV®ue + >ð +$rightV®ue +; + +93  +£lf +:: +LESS_THAN +: + +94 +$v®id + = +$ËáV®ue + < +$rightV®ue +; + +96  +£lf +:: +LESS_THAN_EQUAL +: + +97 +$v®id + = +$ËáV®ue + <ð +$rightV®ue +; + +99  +£lf +:: +NOT_EQUAL +: + +100 +$v®id + = +$ËáV®ue + !ð +$rightV®ue +; + +102  +£lf +:: +EQUAL +: + +103 +$v®id + = +$ËáV®ue + =ð +$rightV®ue +; + +105  +£lf +:: +NOT_IDENTICAL +: + +106 +$v®id + = +$ËáV®ue + !=ð +$rightV®ue +; + +108  +£lf +:: +IDENTICAL +: + +109 +$v®id + = +$ËáV®ue + ==ð +$rightV®ue +; + +112 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('ThÝ”©Ü "%s" dÛ nكxi¡.', +$this +-> + `g‘O±iÚ +('operator'))); + +115 ià(! +$v®id +) + +117 +$”rÜ + = +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'šv®id', + `¬¿y +( + +118 'Ëá_f›ld' => +$ËáV®ue +, + +119 'right_f›ld' => +$rightV®ue +, + +120 'ݔ©Ü' => +$this +-> + `g‘O±iÚ +('operator'), + +122 ià( +$this +-> + `g‘O±iÚ +('throw_global_error')) + +124 +throw + +$”rÜ +; + +127 +throw + +Ãw + + `sfV®id©ÜE¼ÜSchema +( +$this +, + `¬¿y +($this-> + `g‘O±iÚ +('Ëá_f›ld'è=> +$”rÜ +)); + +130  +$v®ues +; + +131 + } +} + +136 +public + +funùiÚ + + $asSŒšg +( +$šd’t + = 0) + +138 +$ÝtiÚs + = +$this +-> + `g‘O±iÚsW™houtDeçuÉs +(); + +139 +$mes§ges + = +$this +-> + `g‘Mes§gesW™houtDeçuÉs +(); + +140 + `un£t +( +$ÝtiÚs +['left_field'], $options['operator'], $options['right_field']); + +142 +$¬gum’ts + = ''; + +143 ià( +$ÝtiÚs + || +$mes§ges +) + +145 +$¬gum’ts + = + `¥rštf +('(%s%s)', + +146 +$ÝtiÚs + ? +sfYamlIƚe +:: + `dump +($ÝtiÚsè: ( +$mes§ges + ? '{}' : ''), + +147 +$mes§ges + ? ', '. +sfYamlIƚe +:: + `dump +($messages) : '' + +151  + `¥rštf +('%s%s %s%s %s', + +152 + `¡r_»³© +(' ', +$šd’t +), + +153 +$this +-> + `g‘O±iÚ +('left_field'), + +154 +$this +-> + `g‘O±iÚ +('operator'), + +155 +$¬gum’ts +, + +156 +$this +-> + `g‘O±iÚ +('right_field') + +158 + } +} + + @lib/vendor/symfony/lib/validator/sfValidatorSchemaFilter.class.php + +1 + `addO±iÚ +('f›ld', +$f›ld +); + +34 +$this +-> + `addO±iÚ +('v®id©Ü', +$v®id©Ü +); + +36 +·»Á +:: + `__cÚ¡ruù +( +nuÎ +, +$ÝtiÚs +, +$mes§ges +); + +42 +´Ùeùed + +funùiÚ + + $doC˪ +( +$v®ues +) + +44 ià( +nuÎ + ==ð +$v®ues +) + +46 +$v®ues + = + `¬¿y +(); + +49 ià(! + `is_¬¿y +( +$v®ues +)) + +51 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +('You must…ass‡n‡rray…arameterohe clean() method'); + +54 +$v®ue + = + `is£t +( +$v®ues +[ +$this +-> + `g‘O±iÚ +('f›ld')]è? $v®ues[$this->g‘O±iÚ('f›ld')] : +nuÎ +; + +56 +Œy + + +58 +$v®ues +[ +$this +-> + `g‘O±iÚ +('f›ld')] = $this->g‘O±iÚ('v®id©Ü')-> + `þ—n +( +$v®ue +); + +60 + `ÿtch + ( +sfV®id©ÜE¼Ü + +$”rÜ +) + +62 +throw + +Ãw + + `sfV®id©ÜE¼ÜSchema +( +$this +, + `¬¿y +($this-> + `g‘O±iÚ +('f›ld'è=> +$”rÜ +)); + +65  +$v®ues +; + +66 + } +} + +71 +public + +funùiÚ + + $asSŒšg +( +$šd’t + = 0) + +73  + `¥rštf +('%s%s:%s', + `¡r_»³© +(' ', +$šd’t +), +$this +-> + `g‘O±iÚ +('f›ld'), $this->g‘O±iÚ('v®id©Ü')-> + `asSŒšg +(0)); + +74 + } +} + + @lib/vendor/symfony/lib/validator/sfValidatorSchemaForEach.class.php + +1 + `addMes§ge +('max_length', '"%value%" isoo†ong (%max_length% characters max).'); + +42 +$this +-> + `addMes§ge +('min_length', '"%value%" isoo short (%min_length% characters min).'); + +44 +$this +-> + `addO±iÚ +('max_length'); + +45 +$this +-> + `addO±iÚ +('min_length'); + +47 +$this +-> + `£tO±iÚ +('empty_value', ''); + +53 +´Ùeùed + +funùiÚ + + $doC˪ +( +$v®ue +) + +55 +$þ—n + = ( +¡ršg +è +$v®ue +; + +57 +$Ëngth + = + `funùiÚ_exi¡s +('mb_¡¾’'è? + `mb_¡¾’ +( +$þ—n +, +$this +-> + `g‘Ch¬£t +()è: + `¡¾’ +($clean); + +59 ià( +$this +-> + `hasO±iÚ +('max_Ëngth'è&& +$Ëngth + > $this-> + `g‘O±iÚ +('max_length')) + +61 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'max_Ëngth', + `¬¿y +('v®ue' => +$v®ue +, 'max_Ëngth' => $this-> + `g‘O±iÚ +('max_length'))); + +64 ià( +$this +-> + `hasO±iÚ +('mš_Ëngth'è&& +$Ëngth + < $this-> + `g‘O±iÚ +('min_length')) + +66 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'mš_Ëngth', + `¬¿y +('v®ue' => +$v®ue +, 'mš_Ëngth' => $this-> + `g‘O±iÚ +('min_length'))); + +69  +$þ—n +; + +70 + } +} + + @lib/vendor/symfony/lib/validator/sfValidatorTime.class.php + +1 + `addMes§ge +('bad_format', '"%value%" does‚ot matchheime format (%time_format%).'); + +44 +$this +-> + `addO±iÚ +('time_fÜm©', +nuÎ +); + +45 +$this +-> + `addO±iÚ +('time_output', 'H:i:s'); + +46 +$this +-> + `addO±iÚ +('time_format_error'); + +52 +´Ùeùed + +funùiÚ + + $doC˪ +( +$v®ue +) + +54 ià( + `is_¬¿y +( +$v®ue +)) + +56 +$þ—n + = +$this +-> + `cÚv”tTimeA¼ayToTime¡amp +( +$v®ue +); + +58 ià( +$»gex + = +$this +-> + `g‘O±iÚ +('time_format')) + +60 ià(! + `´eg_m©ch +( +$»gex +, +$v®ue +, +$m©ch +)) + +62 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'bad_fÜm©', + `¬¿y +('v®ue' => +$v®ue +, 'time_fÜm©' => $this-> + `g‘O±iÚ +('time_format_error') ? $this->getOption('time_format_error') : $this->getOption('time_format'))); + +65 +$þ—n + = +$this +-> + `cÚv”tTimeA¼ayToTime¡amp +( +$m©ch +); + +67 ià(! + `ùy³_dig™ +( +$v®ue +)) + +69 +$þ—n + = + `¡¹Ùime +( +$v®ue +); + +70 ià( +çl£ + ==ð +$þ—n +) + +72 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'šv®id', + `¬¿y +('v®ue' => +$v®ue +)); + +77 +$þ—n + = ( +š‹g” +è +$v®ue +; + +80  +$þ—n + ==ð +$this +-> + `g‘Em±yV®ue +(è? $þ—À: + `d©e +($this-> + `g‘O±iÚ +('time_output'), $clean); + +81 + } +} + +92 +´Ùeùed + +funùiÚ + + $cÚv”tTimeA¼ayToTime¡amp +( +$v®ue +) + +95 + `fܗch + ( + `¬¿y +('hour', 'mšu‹', '£cÚd'è +as + +$key +) + +97 ià( + `is£t +( +$v®ue +[ +$key +]è&& ! + `´eg_m©ch +('#^\d+$#', $v®ue[$key]è&& ! + `em±y +($value[$key])) + +99 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'šv®id', + `¬¿y +('v®ue' => +$v®ue +)); + +106 +$this +-> + `isV®ueS‘ +( +$v®ue +, 'second') && (!$this->isValueSet($value, 'minute') || !$this->isValueSet($value, 'hour')) + +108 +$this +-> + `isV®ueS‘ +( +$v®ue +, 'minute') && !$this->isValueSet($value, 'hour') + +111 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'šv®id', + `¬¿y +('v®ue' => +$v®ue +)); + +114 +$þ—n + = + `mktime +( + +115 + `is£t +( +$v®ue +['hour']è? + `štv® +($value['hour']) : 0, + +116 + `is£t +( +$v®ue +['mšu‹']è? + `štv® +($value['minute']) : 0, + +117 + `is£t +( +$v®ue +['£cÚd']è? + `štv® +($value['second']) : 0 + +120 ià( +çl£ + ==ð +$þ—n +) + +122 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 'šv®id', + `¬¿y +('v®ue' => + `v¬_expÜt +( +$v®ue +, +Œue +))); + +125  +$þ—n +; + +126 + } +} + +128 +´Ùeùed + +funùiÚ + + $isV®ueS‘ +( +$v®ues +, +$key +) + +130  + `is£t +( +$v®ues +[ +$key +]è&& ! + `š_¬¿y +($v®ues[$key], + `¬¿y +( +nuÎ +, ''), +Œue +); + +131 + } +} + +136 +´Ùeùed + +funùiÚ + + $isEm±y +( +$v®ue +) + +138 ià( + `is_¬¿y +( +$v®ue +)) + +141 + `fܗch +( +$v®ue + +as + +$key + => +$v® +) + +144 ià( +$v® + ==ð0 || $v® ==ð'0' || ! + `em±y +($v®)è +çl£ +; + +146  +Œue +; + +149  +·»Á +:: + `isEm±y +( +$v®ue +); + +150 + } +} + + @lib/vendor/symfony/lib/validator/sfValidatorUrl.class.php + +1 + `addO±iÚ +('´ÙocÞs', + `¬¿y +('http', 'https', 'ftp', 'ftps')); + +47 +$this +-> + `£tO±iÚ +('·‰”n', +Ãw + + `sfC®ÏbË +( + `¬¿y +($this, 'generateRegex'))); + +48 + } +} + +55 +public + +funùiÚ + + $g’”©eRegex +() + +57  + `¥rštf +( +£lf +:: +REGEX_URL_FORMAT +, + `im¶ode +('|', +$this +-> + `g‘O±iÚ +('protocols'))); + +58 + } +} + + @lib/vendor/symfony/lib/vendor/lime/lime.php + +1 $options); + +37 +$this +-> +ÝtiÚs + = + `¬¿y_m”ge +( + `¬¿y +( + +38 'fÜû_cÞÜs' => +çl£ +, + +39 'ouut' => +nuÎ +, + +40 'v”bo£' => +çl£ +, + +41 '”rÜ_»pÜtšg' => +çl£ +, + +42 ), +$ÝtiÚs +); + +44 +$this +-> +ouut + = $this-> +ÝtiÚs +['ouut'] ? $this->ÝtiÚs['ouut'] : +Ãw + + `lime_ouut +($this->options['force_colors']); + +46 +$ÿΔ + = +$this +-> + `fšd_ÿΔ +( + `debug_backŒaû +()); + +47 +£lf +:: +$®l_»suÉs +[] = + `¬¿y +( + +48 'fže' => +$ÿΔ +[0], + +49 '‹¡s' => + `¬¿y +(), + +50 '¡©s' => + `¬¿y +('¶ª' => +$¶ª +, 'total' => 0, 'failed' =>‡rray(), 'passed' =>‡rray(), 'skipped' =>‡rray(), 'errors' =>‡rray()), + +53 +$this +-> +»suÉs + = & +£lf +:: +$®l_»suÉs +[ + `couÁ +(self::$all_results) - 1]; + +55 +nuÎ + !=ð +$¶ª + +ªd + +$this +-> +ouut +-> + `echÞn +( + `¥rštf +("1..%d", $plan)); + +57 + `£t_”rÜ_hªdËr +( + `¬¿y +( +$this +, 'handle_error')); + +58 + `£t_exû±iÚ_hªdËr +( + `¬¿y +( +$this +, 'handle_exception')); + +61  +public + +funùiÚ + + $»£t +() + +63 +£lf +:: +$®l_»suÉs + = + `¬¿y +(); + +64 + } +} + +66  +public + +funùiÚ + + $to_¬¿y +() + +68  +£lf +:: +$®l_»suÉs +; + +69 + } +} + +71  +public + +funùiÚ + + $to_xml +( +$»suÉs + = +nuÎ +) + +73 ià( + `is_nuÎ +( +$»suÉs +)) + +75 +$»suÉs + = +£lf +:: +$®l_»suÉs +; + +78 +$dom + = +Ãw + + `DOMDocum’t +('1.0', 'UTF-8'); + +79 +$dom +-> +fÜm©Ouut + = +Œue +; + +80 +$dom +-> + `­³ndChžd +( +$‹¡su™es + = $dom-> + `ü—‹EËm’t +('testsuites')); + +82 +$”rÜs + = 0; + +83 +$çžu»s + = 0; + +84 +$”rÜs + = 0; + +85 +$sk³d + = 0; + +86 +$as£¹iÚs + = 0; + +88 + `fܗch + ( +$»suÉs + +as + +$»suÉ +) + +90 +$‹¡su™es +-> + `­³ndChžd +( +$‹¡su™e + = +$dom +-> + `ü—‹EËm’t +('testsuite')); + +91 +$‹¡su™e +-> + `£tA‰ribu‹ +('Çme', + `ba£Çme +( +$»suÉ +['file'], '.php')); + +92 +$‹¡su™e +-> + `£tA‰ribu‹ +('fže', +$»suÉ +['file']); + +93 +$‹¡su™e +-> + `£tA‰ribu‹ +('çžu»s', + `couÁ +( +$»suÉ +['stats']['failed'])); + +94 +$‹¡su™e +-> + `£tA‰ribu‹ +('”rÜs', + `couÁ +( +$»suÉ +['stats']['errors'])); + +95 +$‹¡su™e +-> + `£tA‰ribu‹ +('sk³d', + `couÁ +( +$»suÉ +['stats']['skipped'])); + +96 +$‹¡su™e +-> + `£tA‰ribu‹ +('‹¡s', +$»suÉ +['stats']['plan']); + +97 +$‹¡su™e +-> + `£tA‰ribu‹ +('as£¹iÚs', +$»suÉ +['stats']['plan']); + +99 +$çžu»s + +ð + `couÁ +( +$»suÉ +['stats']['failed']); + +100 +$”rÜs + +ð + `couÁ +( +$»suÉ +['stats']['errors']); + +101 +$sk³d + +ð + `couÁ +( +$»suÉ +['stats']['skipped']); + +102 +$as£¹iÚs + +ð +$»suÉ +['stats']['plan']; + +104 + `fܗch + ( +$»suÉ +['‹¡s'] +as + +$‹¡ +) + +106 +$‹¡su™e +-> + `­³ndChžd +( +$‹¡ÿ£ + = +$dom +-> + `ü—‹EËm’t +('testcase')); + +107 +$‹¡ÿ£ +-> + `£tA‰ribu‹ +('Çme', +$‹¡ +['message']); + +108 +$‹¡ÿ£ +-> + `£tA‰ribu‹ +('fže', +$‹¡ +['file']); + +109 +$‹¡ÿ£ +-> + `£tA‰ribu‹ +('lše', +$‹¡ +['line']); + +110 +$‹¡ÿ£ +-> + `£tA‰ribu‹ +('assertions', 1); + +111 ià(! +$‹¡ +['status']) + +113 +$‹¡ÿ£ +-> + `­³ndChžd +( +$çžu» + = +$dom +-> + `ü—‹EËm’t +('failure')); + +114 +$çžu» +-> + `£tA‰ribu‹ +('type', 'lime'); + +115 ià( + `is£t +( +$‹¡ +['error'])) + +117 +$çžu» +-> + `­³ndChžd +( +$dom +-> + `ü—‹TextNode +( +$‹¡ +['error'])); + +123 +$‹¡su™es +-> + `£tA‰ribu‹ +('çžu»s', +$çžu»s +); + +124 +$‹¡su™es +-> + `£tA‰ribu‹ +('”rÜs', +$”rÜs +); + +125 +$‹¡su™es +-> + `£tA‰ribu‹ +('‹¡s', +$as£¹iÚs +); + +126 +$‹¡su™es +-> + `£tA‰ribu‹ +('as£¹iÚs', +$as£¹iÚs +); + +127 +$‹¡su™es +-> + `£tA‰ribu‹ +('sk³d', +$sk³d +); + +129  +$dom +-> + `§veXml +(); + +130 + } +} + +132 +public + +funùiÚ + + $__de¡ruù +() + +134 +$¶ª + = +$this +-> +»suÉs +['stats']['plan']; + +135 +$·s£d + = + `couÁ +( +$this +-> +»suÉs +['stats']['passed']); + +136 +$çžed + = + `couÁ +( +$this +-> +»suÉs +['stats']['failed']); + +137 +$tÙ® + = +$this +-> +»suÉs +['stats']['total']; + +138 + `is_nuÎ +( +$¶ª +è +ªd + $¶ª = +$tÙ® +‡nd +$this +-> +ouut +-> + `echÞn +( + `¥rštf +("1..%d", $plan)); + +140 ià( +$tÙ® + > +$¶ª +) + +142 +$this +-> +ouut +-> + `»d_b¬ +( + `¥rštf +("# Look likyou…ÏÂed %de¡ buˆ¿À%dƒxŒa.", +$¶ª +, +$tÙ® + - $plan)); + +144 + `–£if + ( +$tÙ® + < +$¶ª +) + +146 +$this +-> +ouut +-> + `»d_b¬ +( + `¥rštf +("# Look likyou…ÏÂed %de¡ buˆÚly„ª %d.", +$¶ª +, +$tÙ® +)); + +149 ià( +$çžed +) + +151 +$this +-> +ouut +-> + `»d_b¬ +( + `¥rštf +("# Look likyou fažed %de¡ oà%d.", +$çžed +, +$·s£d + + $failed)); + +153 ià( +$tÙ® + =ð +$¶ª +) + +155 +$this +-> +ouut +-> + `g»’_b¬ +("# Looks†ikeƒverything went fine."); + +158 + `æush +(); + +159 + } +} + +169 +public + +funùiÚ + +ok +( +$exp +, +$mes§ge + = '') + +171 +$this +-> +upd©e_¡©s +(); + +173 ià( + g$»suÉ + = ( +boޗn +è +$exp +) + +175 +$this +-> +»suÉs +['¡©s']['·s£d'][] = $this-> +‹¡_nb +; + +179 + g$this +-> + g»suÉs +['¡©s']['çžed'][] = +$this +-> +‹¡_nb +; + +181 + g$this +-> + g»suÉs +['‹¡s'][ +$this +-> +‹¡_nb +]['mes§ge'] = +$mes§ge +; + +182 + g$this +-> + g»suÉs +['‹¡s'][ +$this +-> +‹¡_nb +]['¡©us'] = +$»suÉ +; + +183 + g$this +-> + gouut +-> +echÞn +( +¥rštf +("% %d%s", +$»suÉ + ? 'ok' : 'nÙ ok', +$this +-> +‹¡_nb +, +$mes§ge + = $mes§g? s´štf('% %s', 0 ==ð +¡½os +($message, '#') ? '' : ' -', $message) : '')); + +185 ià(! + g$»suÉ +) + +187 + g$this +-> + gouut +-> +dŸg +( +¥rštf +(' Fažede¡ (% ©†š%d)', +¡r_»¶aû +( +g‘cwd +(), '.', +$this +-> +»suÉs +['‹¡s'][$this-> +‹¡_nb +]['file']), $this->results['tests'][$this->test_nb]['line'])); + +190  + g$»suÉ +; + +202 +public + +funùiÚ + +is +( +$exp1 +, +$exp2 +, +$mes§ge + = '') + +204 ià( +is_objeù +( +$exp1 +è|| is_objeù( +$exp2 +)) + +206 +$v®ue + = +$exp1 + ==ð +$exp2 +; + +208 ià( +is_æßt +( +$exp1 +è&& is_æßt( +$exp2 +)) + +210 + g$v®ue + = +abs +( +$exp1 + - +$exp2 +è< +£lf +:: +EPSILON +; + +214 + g$v®ue + = +$exp1 + =ð +$exp2 +; + +217 ià(! + g$»suÉ + = +$this +-> +ok +( +$v®ue +, +$mes§ge +)) + +219 + g$this +-> +£t_Ï¡_‹¡_”rÜs +( +¬¿y +( +¥rštf +(" gÙ: %s", +v¬_expÜt +( +$exp1 +, +Œue +)), s´štf("ƒx³ùed: %s", v¬_expÜt( +$exp2 +,rue)))); + +222  + g$»suÉ +; + +234 +public + +funùiÚ + +i¢t +( +$exp1 +, +$exp2 +, +$mes§ge + = '') + +236 ià(! +$»suÉ + = +$this +-> +ok +( +$exp1 + !ð +$exp2 +, +$mes§ge +)) + +238 + g$this +-> +£t_Ï¡_‹¡_”rÜs +( +¬¿y +( +¥rštf +(" %s", +v¬_expÜt +( +$exp2 +, +Œue +)), '‚e', sprintf(" %s", var_export($exp2,rue)))); + +241  + g$»suÉ +; + +253 +public + +funùiÚ + +like +( +$exp +, +$»gex +, +$mes§ge + = '') + +255 ià(! +$»suÉ + = +$this +-> +ok +( +´eg_m©ch +( +$»gex +, +$exp +), +$mes§ge +)) + +257 + g$this +-> +£t_Ï¡_‹¡_”rÜs +( +¬¿y +( +¥rštf +(" '%s'", +$exp +), s´štf(" dÛ¢'ˆm©ch '%s'", +$»gex +))); + +260  + g$»suÉ +; + +272 +public + +funùiÚ + +uÆike +( +$exp +, +$»gex +, +$mes§ge + = '') + +274 ià(! +$»suÉ + = +$this +-> +ok +(! +´eg_m©ch +( +$»gex +, +$exp +), +$mes§ge +)) + +276 + g$this +-> +£t_Ï¡_‹¡_”rÜs +( +¬¿y +( +¥rštf +(" '%s'", +$exp +), s´štf(" m©che '%s'", +$»gex +))); + +279  + g$»suÉ +; + +292 +public + +funùiÚ + +cmp_ok +( +$exp1 +, +$Ý +, +$exp2 +, +$mes§ge + = '') + +294 +$php + = +¥rštf +("\$result = \$exp1 $op \$exp2;"); + +297 +ev® +( +$php +); + +299 ià(! + g$this +-> +ok +( +$»suÉ +, +$mes§ge +)) + +301 + g$this +-> +£t_Ï¡_‹¡_”rÜs +( +¬¿y +( +¥rštf +(" %s", +¡r_»¶aû +("\n", '', +v¬_expÜt +( +$exp1 +, +Œue +))), s´štf(" %s", +$Ý +), s´štf(" %s", sŒ_»¶aû("\n", '', v¬_expÜt( +$exp2 +,rue))))); + +304  + g$»suÉ +; + +316 +public + +funùiÚ + +ÿn_ok +( +$objeù +, +$m‘hods +, +$mes§ge + = '') + +318 +$»suÉ + = +Œue +; + +319 + g$çžed_mes§ges + = +¬¿y +(); + +320 +fܗch + (( +¬¿y +è +$m‘hods + +as + +$m‘hod +) + +322 ià(! +m‘hod_exi¡s +( +$objeù +, +$m‘hod +)) + +324 + g$çžed_mes§ges +[] = +¥rštf +(" m‘hod '%s' dÛ nكxi¡", +$m‘hod +); + +325 + g$»suÉ + = +çl£ +; + +329 ! + g$this +-> +ok +( +$»suÉ +, +$mes§ge +); + +331 ! +$»suÉ + +ªd + + g$this +-> +£t_Ï¡_‹¡_”rÜs +( +$çžed_mes§ges +); + +333  + g$»suÉ +; + +345 +public + +funùiÚ + +i§_ok +( +$v¬ +, +$þass +, +$mes§ge + = '') + +347 +$ty³ + = +is_objeù +( +$v¬ +è? +g‘_þass +($v¬è: +g‘ty³ +($var); + +348 ià(! + g$»suÉ + = +$this +-> +ok +( +$ty³ + =ð +$þass +, +$mes§ge +)) + +350 + g$this +-> +£t_Ï¡_‹¡_”rÜs +( +¬¿y +( +¥rštf +(" v¬ŸbË i¢'ˆ¨'%s' it' ¨'%s'", +$þass +, +$ty³ +))); + +353  + g$»suÉ +; + +365 +public + +funùiÚ + +is_d“¶y +( +$exp1 +, +$exp2 +, +$mes§ge + = '') + +367 ià(! +$»suÉ + = +$this +-> +ok +($this-> +‹¡_is_d“¶y +( +$exp1 +, +$exp2 +), +$mes§ge +)) + +369 + g$this +-> +£t_Ï¡_‹¡_”rÜs +( +¬¿y +( +¥rštf +(" gÙ: %s", +¡r_»¶aû +("\n", '', +v¬_expÜt +( +$exp1 +, +Œue +))), s´štf("ƒx³ùed: %s", sŒ_»¶aû("\n", '', v¬_expÜt( +$exp2 +,rue))))); + +372  + g$»suÉ +; + +382 +public + +funùiÚ + +·ss +( +$mes§ge + = '') + +384  +$this +-> +ok +( +Œue +, +$mes§ge +); + +394 +public + +funùiÚ + +çž +( +$mes§ge + = '') + +396  +$this +-> +ok +( +çl£ +, +$mes§ge +); + +406 +public + +funùiÚ + + $dŸg +( +$mes§ge +) + +408 +$this +-> +ouut +-> + `dŸg +( +$mes§ge +); + +409 + } +} + +419 +public + +funùiÚ + +sk +( +$mes§ge + = '', +$nb_‹¡s + = 1) + +421  +$i + = 0; + g$i + < + g$nb_‹¡s +; $i++) + +423 + g$this +-> +·ss +( +¥rštf +("# SKIP%s", +$mes§ge + ? ' '.$message : '')); + +424 + g$this +-> + g»suÉs +['¡©s']['sk³d'][] = +$this +-> +‹¡_nb +; + +425 +¬¿y_pÝ +( +$this +-> +»suÉs +['stats']['passed']); + +436 +public + +funùiÚ + +todo +( +$mes§ge + = '') + +438 +$this +-> +·ss +( +¥rštf +("# TODO%s", +$mes§ge + ? ' '.$message : '')); + +439 + g$this +-> + g»suÉs +['¡©s']['sk³d'][] = +$this +-> +‹¡_nb +; + +440 +¬¿y_pÝ +( +$this +-> +»suÉs +['stats']['passed']); + +451 +public + +funùiÚ + +šþude_ok +( +$fže +, +$mes§ge + = '') + +453 ià(! +$»suÉ + = +$this +-> +ok +((@ +šþude +( +$fže +)è=ð1, +$mes§ge +)) + +455 + g$this +-> +£t_Ï¡_‹¡_”rÜs +( +¬¿y +( +¥rštf +(" Tr›dØšþud'%s'", +$fže +))); + +458  + g$»suÉ +; + +461 +´iv©e + +funùiÚ + + $‹¡_is_d“¶y +( +$v¬1 +, +$v¬2 +) + +463 ià( + `g‘ty³ +( +$v¬1 +è!ðg‘ty³( +$v¬2 +)) + +465  +çl£ +; + +468 ià( + `is_¬¿y +( +$v¬1 +)) + +470 + `ksÜt +( +$v¬1 +); + +471 + `ksÜt +( +$v¬2 +); + +473 +$keys1 + = + `¬¿y_keys +( +$v¬1 +); + +474 +$keys2 + = + `¬¿y_keys +( +$v¬2 +); + +475 ià( + `¬¿y_diff +( +$keys1 +, +$keys2 +) ||‡rray_diff($keys2, $keys1)) + +477  +çl£ +; + +479 +$is_equ® + = +Œue +; + +480 + `fܗch + ( +$v¬1 + +as + +$key + => +$v®ue +) + +482 +$is_equ® + = +$this +-> + `‹¡_is_d“¶y +( +$v¬1 +[ +$key +], +$v¬2 +[$key]); + +483 ià( +$is_equ® + ==ð +çl£ +) + +489  +$is_equ® +; + +493  +$v¬1 + ==ð +$v¬2 +; + +495 + } +} + +497 +public + +funùiÚ + + $comm’t +( +$mes§ge +) + +499 +$this +-> +ouut +-> + `comm’t +( +$mes§ge +); + +500 + } +} + +502 +public + +funùiÚ + + $šfo +( +$mes§ge +) + +504 +$this +-> +ouut +-> + `šfo +( +$mes§ge +); + +505 + } +} + +507 +public + +funùiÚ + +”rÜ +( +$mes§ge +, +$fže + = +nuÎ +, +$lše + =‚uÎ, +¬¿y + +$Œaûs + = + $¬¿y +()) + +509 +$this +-> +ouut +-> + `”rÜ +( +$mes§ge +, +$fže +, +$lše +, +$Œaûs +); + +511 +$this +-> +»suÉs +['¡©s']['”rÜs'][] = + `¬¿y +( + +512 'mes§ge' => +$mes§ge +, + +513 'fže' => +$fže +, + +514 'lše' => +$lše +, + +516 + } +} + +518 +´Ùeùed + +funùiÚ + + $upd©e_¡©s +() + +520 ++ +$this +-> +‹¡_nb +; + +521 ++ +$this +-> +»suÉs +['stats']['total']; + +523 + `li¡ +( +$this +-> +»suÉs +['‹¡s'][$this-> +‹¡_nb +]['fže'], $this->»suÉs['‹¡s'][$this->‹¡_nb]['lše']èð$this-> + `fšd_ÿΔ +( + `debug_backŒaû +()); + +524 + } +} + +526 +´Ùeùed + +funùiÚ + + $£t_Ï¡_‹¡_”rÜs +( +¬¿y + +$”rÜs +) + +528 +$this +-> +ouut +-> + `dŸg +( +$”rÜs +); + +530 +$this +-> +»suÉs +['‹¡s'][$this-> +‹¡_nb +]['”rÜ'] = + `im¶ode +("\n", +$”rÜs +); + +531 + } +} + +533 +´Ùeùed + +funùiÚ + + $fšd_ÿΔ +( +$Œaûs +) + +536 +$t + = + `¬¿y_»v”£ +( +$Œaûs +); + +537 + `fܗch + ( +$t + +as + +$Œaû +) + +539 ià( + `is£t +( +$Œaû +['objeù']è&& $Œaû['objeù'] +š¡ªûof + +lime_‹¡ +) + +541  + `¬¿y +( +$Œaû +['file'], $trace['line']); + +546 +$Ï¡ + = + `couÁ +( +$Œaûs +) - 1; + +547  + `¬¿y +( +$Œaûs +[ +$Ï¡ +]['file'], $traces[$last]['line']); + +548 + } +} + +550 +public + +funùiÚ + + $hªdË_”rÜ +( +$code +, +$mes§ge +, +$fže +, +$lše +, +$cڋxt +) + +552 ià(! +$this +-> +ÝtiÚs +['”rÜ_»pÜtšg'] || ( +$code + & + `”rÜ_»pÜtšg +()) == 0) + +554  +çl£ +; + +557  +$code +) + +559  +E_WARNING +: + +560 +$ty³ + = 'Warning'; + +563 +$ty³ + = 'Notice'; + +567 +$Œaû + = + `debug_backŒaû +(); + +568 + `¬¿y_shiá +( +$Œaû +); + +570 +$this +-> + `”rÜ +( +$ty³ +.': '. +$mes§ge +, +$fže +, +$lše +, +$Œaû +); + +571 + } +} + +573 +public + +funùiÚ + + $hªdË_exû±iÚ +( +Exû±iÚ + +$exû±iÚ +) + +575 +$this +-> + `”rÜ +( + `g‘_þass +( +$exû±iÚ +).': '.$exû±iÚ-> + `g‘Mes§ge +(), $exû±iÚ-> + `g‘Fže +(), $exû±iÚ-> + `g‘Lše +(), $exû±iÚ-> + `g‘T¿û +()); + +578  +Œue +; + +579 + } +} + +582 þas  + clime_ouut + + +584 +public + + m$cÞÜiz” + = +nuÎ +; + +585 +public + + m$ba£_dœ + = +nuÎ +; + +587 +public + +funùiÚ + + $__cÚ¡ruù +( +$fÜû_cÞÜs + = +çl£ +, +$ba£_dœ + = +nuÎ +) + +589 +$this +-> +cÞÜiz” + = +Ãw + + `lime_cÞÜiz” +( +$fÜû_cÞÜs +); + +590 +$this +-> +ba£_dœ + = +$ba£_dœ + ==ð +nuÎ + ? + `g‘cwd +() : $base_dir; + +593 +public + +funùiÚ + + $dŸg +() + +595 +$mes§ges + = + `func_g‘_¬gs +(); + +596 + `fܗch + ( +$mes§ges + +as + +$mes§ge +) + +598 +echo + +$this +-> +cÞÜiz” +-> + `cÞÜize +('# '. + `još +("\n# ", ( +¬¿y +è +$mes§ge +), 'COMMENT')."\n"; + +600 + } +} + +602 +public + +funùiÚ + + $comm’t +( +$mes§ge +) + +604 +echo + +$this +-> +cÞÜiz” +-> + `cÞÜize +( + `¥rštf +('# %s', +$mes§ge +), 'COMMENT')."\n"; + +605 + } +} + +607 +public + +funùiÚ + + $šfo +( +$mes§ge +) + +609 +echo + +$this +-> +cÞÜiz” +-> + `cÞÜize +( + `¥rštf +('> %s', +$mes§ge +), 'INFO_BAR')."\n"; + +610 + } +} + +612 +public + +funùiÚ + +”rÜ +( +$mes§ge +, +$fže + = +nuÎ +, +$lše + =‚uÎ, +$Œaûs + = + $¬¿y +()) + +614 ià( +$fže + !=ð +nuÎ +) + +616 +$mes§ge + .ð + `¥rštf +("\n(š % Ú†š%s)", +$fže +, +$lše +); + +620 +$mes§ge + = +$this +-> + `¡r_ba£_dœ +($message); + +622 +$¥aû + = +$this +-> +cÞÜiz” +-> + `cÞÜize +( + `¡r_»³© +(' ', 71), 'RED_BAR')."\n"; + +623 +$mes§ge + = + `Œim +($message); + +624 +$mes§ge + = + `wÜdw¿p +($message, 66, "\n"); + +626 +echo + "\n". +$¥aû +; + +627 + `fܗch + ( + `ex¶ode +("\n", +$mes§ge +è +as + +$mes§ge_lše +) + +629 +echo + +$this +-> +cÞÜiz” +-> + `cÞÜize +( + `¡r_·d +(' '. +$mes§ge_lše +, 71, ' '), 'RED_BAR')."\n"; + +631 +echo + +$¥aû +."\n"; + +633 ià( + `couÁ +( +$Œaûs +) > 0) + +635 +echo + +$this +-> +cÞÜiz” +-> + `cÞÜize +('Exceptionrace:', 'COMMENT')."\n"; + +637 +$this +-> + `´št_Œaû +( +nuÎ +, +$fže +, +$lše +); + +639 + `fܗch + ( +$Œaûs + +as + +$Œaû +) + +641 ià( + `¬¿y_key_exi¡s +('þass', +$Œaû +)) + +643 +$m‘hod + = + `¥rštf +('%s%s%s()', +$Œaû +['class'], $trace['type'], $trace['function']); + +647 +$m‘hod + = + `¥rštf +('%s()', +$Œaû +['function']); + +650 ià( + `¬¿y_key_exi¡s +('fže', +$Œaû +)) + +652 +$this +-> + `´št_Œaû +( +$m‘hod +, +$Œaû +['file'], $trace['line']); + +656 +$this +-> + `´št_Œaû +( +$m‘hod +); + +660 +echo + "\n"; + +662 + } +} + +664 +´Ùeùed + +funùiÚ + + $´št_Œaû +( +$m‘hod + = +nuÎ +, +$fže + =‚uÎ, +$lše + =‚ull) + +666 ià(! + `is_nuÎ +( +$m‘hod +)) + +668 +$m‘hod + .= ' '; + +671 +echo + ' '. +$m‘hod +.'at '; + +673 ià(! + `is_nuÎ +( +$fže +è&& !is_nuÎ( +$lše +)) + +675 + `´štf +("%s:%s\n", +$this +-> +cÞÜiz” +-> + `cÞÜize +($this-> + `¡r_ba£_dœ +( +$fže +), 'TRACE'), $this->cÞÜiz”->cÞÜize( +$lše +, 'TRACE')); + +679 +echo + "[internal function]\n"; + +681 + } +} + +683 +public + +funùiÚ + + $echÞn +( +$mes§ge +, +$cÞÜiz”_·¿m‘” + = +nuÎ +, +$cÞÜize + = +Œue +) + +685 ià( +$cÞÜize +) + +687 +$mes§ge + = + `´eg_»¶aû +('/(?:^|\.)((?:not ok|dubious|errors) *\d*)\b/e', '$this->colorizer->colorize(\'$1\', \'ERROR\')', $message); + +688 +$mes§ge + = + `´eg_»¶aû +('/(?:^|\.)(ok *\d*)\b/e', '$this->colorizer->colorize(\'$1\', \'INFO\')', $message); + +689 +$mes§ge + = + `´eg_»¶aû +('/"(.+?)"/e', '$this->colorizer->colorize(\'$1\', \'PARAMETER\')', $message); + +690 +$mes§ge + = + `´eg_»¶aû +('/(\->|\:\:)?([a-zA-Z0-9_]+?)\(\)/e', '$this->colorizer->colorize(\'$1$2()\', \'PARAMETER\')', $message); + +693 + `echo + ( +$cÞÜiz”_·¿m‘” + ? +$this +-> +cÞÜiz” +-> + `cÞÜize +( +$mes§ge +, $colorizer_parameter) : $message)."\n"; + +694 + } +} + +696 +public + +funùiÚ + + $g»’_b¬ +( +$mes§ge +) + +698 +echo + +$this +-> +cÞÜiz” +-> + `cÞÜize +( +$mes§ge +. + `¡r_»³© +(' ', 71 - + `mš +(71, + `¡¾’ +($message))), 'GREEN_BAR')."\n"; + +699 + } +} + +701 +public + +funùiÚ + + $»d_b¬ +( +$mes§ge +) + +703 +echo + +$this +-> +cÞÜiz” +-> + `cÞÜize +( +$mes§ge +. + `¡r_»³© +(' ', 71 - + `mš +(71, + `¡¾’ +($message))), 'RED_BAR')."\n"; + +704 + } +} + +706 +´Ùeùed + +funùiÚ + + $¡r_ba£_dœ +( +$‹xt +) + +708  + `¡r_»¶aû +( +DIRECTORY_SEPARATOR +, '/', sŒ_»¶aû( + `»®·th +( +$this +-> +ba£_dœ +).DIRECTORY_SEPARATOR, '', +$‹xt +)); + +709 + } +} + +712 þas  + clime_ouut_cÞÜ + +ex‹nds + + mlime_ouut + + +716 þas  + clime_cÞÜiz” + + +718  +public + + m$¡yËs + = +¬¿y +(); + +720 +´Ùeùed + + m$cÞÜs_suµÜ‹d + = +çl£ +; + +722 +public + +funùiÚ + + $__cÚ¡ruù +( +$fÜû_cÞÜs + = +çl£ +) + +724 ià( +$fÜû_cÞÜs +) + +726 +$this +-> +cÞÜs_suµÜ‹d + = +Œue +; + +731 ià( +DIRECTORY_SEPARATOR + == '\\') + +733 +$this +-> +cÞÜs_suµÜ‹d + = +çl£ + !=ð + `g‘’v +('ANSICON'); + +737 +$this +-> +cÞÜs_suµÜ‹d + = + `funùiÚ_exi¡s +('posix_i§‰y'è&& @ + `posix_i§‰y +( +STDOUT +); + +742 +public +  +funùiÚ + + `¡yË +( +$Çme +, +$ÝtiÚs + = + $¬¿y +()) + +744 +£lf +:: +$¡yËs +[ +$Çme +] = +$ÝtiÚs +; + +745 + } +} + +747 +public + +funùiÚ + +cÞÜize +( +$‹xt + = '', +$·¿m‘”s + = + $¬¿y +()) + +750 ià(! +$this +-> +cÞÜs_suµÜ‹d +) + +752  +$‹xt +; + +755  +$ÝtiÚs + = + `¬¿y +('bold' => 1, 'underscore' => 4, 'blink' => 5, 'reverse' => 7, 'conceal' => 8); + +756  +$fÜeground + = + `¬¿y +('black' => 30, 'red' => 31, 'green' => 32, 'yellow' => 33, 'blue' => 34, 'magenta' => 35, 'cyan' => 36, 'white' => 37); + +757  +$background + = + `¬¿y +('black' => 40, 'red' => 41, 'green' => 42, 'yellow' => 43, 'blue' => 44, 'magenta' => 45, 'cyan' => 46, 'white' => 47); + +759 ! + `is_¬¿y +( +$·¿m‘”s +è&& + `is£t +( +£lf +:: +$¡yËs +[$·¿m‘”s]è +ªd + $parameters = self::$styles[$parameters]; + +761 +$codes + = + `¬¿y +(); + +762 + `is£t +( +$·¿m‘”s +['fg']è +ªd + +$codes +[] = +$fÜeground +[$parameters['fg']]; + +763 + `is£t +( +$·¿m‘”s +['bg']è +ªd + +$codes +[] = +$background +[$parameters['bg']]; + +764 + `fܗch + ( +$ÝtiÚs + +as + +$ÝtiÚ + => +$v®ue +) + +766 + `is£t +( +$·¿m‘”s +[ +$ÝtiÚ +]è&& $·¿m‘”s[$ÝtiÚ] +ªd + +$codes +[] = +$v®ue +; + +769  "\033[". + `im¶ode +(';', +$codes +).'m'. +$‹xt +."\033[0m"; + +770 + } +} + +773 + glime_cÞÜiz” +:: +¡yË +('ERROR', +¬¿y +('bg' => '»d', 'fg' => 'wh™e', 'bÞd' => +Œue +)); + +774 + glime_cÞÜiz” +:: +¡yË +('INFO', +¬¿y +('fg' => 'g»’', 'bÞd' => +Œue +)); + +775 + glime_cÞÜiz” +:: +¡yË +('TRACE', +¬¿y +('fg' => 'g»’', 'bÞd' => +Œue +)); + +776 + glime_cÞÜiz” +:: +¡yË +('PARAMETER', +¬¿y +('fg' => 'cyan')); + +777 + glime_cÞÜiz” +:: +¡yË +('COMMENT', +¬¿y +('fg' => 'yellow')); + +779 + glime_cÞÜiz” +:: +¡yË +('GREEN_BAR', +¬¿y +('fg' => 'wh™e', 'bg' => 'g»’', 'bÞd' => +Œue +)); + +780 + glime_cÞÜiz” +:: +¡yË +('RED_BAR', +¬¿y +('fg' => 'wh™e', 'bg' => '»d', 'bÞd' => +Œue +)); + +781 + glime_cÞÜiz” +:: +¡yË +('INFO_BAR', +¬¿y +('fg' => 'cyª', 'bÞd' => +Œue +)); + +783 þas  + clime_h¬Ãss + +ex‹nds + + mlime_»gi¡¿tiÚ + + +785 +public + + m$ÝtiÚs + = +¬¿y +(); + +786 +public + + m$php_þi + = +nuÎ +; + +787 +public + + m$¡©s + = +¬¿y +(); + +788 +public + + m$ouut + = +nuÎ +; + +790 +public + +funùiÚ + +__cÚ¡ruù +( +$ÝtiÚs + = + $¬¿y +()) + +793 ià(! + `is_¬¿y +( +$ÝtiÚs +)) + +795 +$ÝtiÚs + = + `¬¿y +('output' => $options); + +798 +$this +-> +ÝtiÚs + = + `¬¿y_m”ge +( + `¬¿y +( + +799 'php_þi' => +nuÎ +, + +800 'fÜû_cÞÜs' => +çl£ +, + +801 'ouut' => +nuÎ +, + +802 'v”bo£' => +çl£ +, + +803 ), +$ÝtiÚs +); + +805 +$this +-> +php_þi + = $this-> + `fšd_php_þi +($this-> +ÝtiÚs +['php_cli']); + +806 +$this +-> +ouut + = $this-> +ÝtiÚs +['ouut'] ? $this->ÝtiÚs['ouut'] : +Ãw + + `lime_ouut +($this->options['force_colors']); + +809 +´Ùeùed + +funùiÚ + + $fšd_php_þi +( +$php_þi + = +nuÎ +) + +811 ià( + `is_nuÎ +( +$php_þi +)) + +813 ià( + `g‘’v +('PHP_PATH')) + +815 +$php_þi + = + `g‘’v +('PHP_PATH'); + +817 ià(! + `is_execubË +( +$php_þi +)) + +819 +throw + +Ãw + + `Exû±iÚ +('The defined PHP_PATHƒnvironment variable is‚ot‡ valid PHPƒxecutable.'); + +824 +$php_þi + = +PHP_BINDIR +. +DIRECTORY_SEPARATOR +.'php'; + +828 ià( + `is_execubË +( +$php_þi +)) + +830  +$php_þi +; + +833 +$·th + = + `g‘’v +('PATH') ? getenv('PATH') : getenv('Path'); + +834 +$exe_suffixes + = +DIRECTORY_SEPARATOR + =ð'\\' ? ( + `g‘’v +('PATHEXT'è? + `ex¶ode +( +PATH_SEPARATOR +, g‘’v('PATHEXT')è: + `¬¿y +('.exe', '.bat', '.cmd', '.com')) :‡rray(''); + +835 + `fܗch + ( + `¬¿y +('php5', 'php'è +as + +$php_þi +) + +837 + `fܗch + ( +$exe_suffixes + +as + +$suffix +) + +839 + `fܗch + ( + `ex¶ode +( +PATH_SEPARATOR +, +$·th +è +as + +$dœ +) + +841 +$fže + = +$dœ +. +DIRECTORY_SEPARATOR +. +$php_þi +. +$suffix +; + +842 ià( + `is_execubË +( +$fže +)) + +844  +$fže +; + +850 +throw + +Ãw + + `Exû±iÚ +("Unableo find PHPƒxecutable."); + +851 + } +} + +853 +public + +funùiÚ + + $to_¬¿y +() + +855 +$»suÉs + = + `¬¿y +(); + +856 + `fܗch + ( +$this +-> +¡©s +['fžes'] +as + +$fže + => +$¡© +) + +858 +$»suÉs + = + `¬¿y_m”ge +($»suÉs, +$¡© +['output']); + +861  +$»suÉs +; + +862 + } +} + +864 +public + +funùiÚ + + $to_xml +() + +866  +lime_‹¡ +:: + `to_xml +( +$this +-> + `to_¬¿y +()); + +867 + } +} + +869 +public + +funùiÚ + + $run +() + +871 ià(! + `couÁ +( +$this +-> +fžes +)) + +873 +throw + +Ãw + + `Exû±iÚ +('You must„egister someest files before„unninghem!'); + +877 + `sÜt +( +$this +-> +fžes +); + +879 +$this +-> +¡©s + = + `¬¿y +( + +880 'fžes' => + `¬¿y +(), + +881 'çžed_fžes' => + `¬¿y +(), + +886 + `fܗch + ( +$this +-> +fžes + +as + +$fže +) + +888 +$this +-> +¡©s +['fžes'][ +$fže +] = + `¬¿y +(); + +889 +$¡©s + = & +$this +-> +¡©s +['fžes'][ +$fže +]; + +891 +$»Ïtive_fže + = +$this +-> + `g‘_»Ïtive_fže +( +$fže +); + +893 +$‹¡_fže + = + `‹m²am +( + `sys_g‘_‹mp_dœ +(), 'lime'); + +894 +$»suÉ_fže + = + `‹m²am +( + `sys_g‘_‹mp_dœ +(), 'lime'); + +895 + `fže_put_cڋÁs +( +$‹¡_fže +, <<< +EOF + + +896 &1', + `esÿ³sh–Ïrg +( +$this +-> +php_þi +),ƒsÿ³sh–Ïrg( +$‹¡_fže +)), +$»tuº +); + +909 + `ob_’d_þ—n +(); + +910 + `uƚk +( +$‹¡_fže +); + +912 +$ouut + = + `fže_g‘_cڋÁs +( +$»suÉ_fže +); + +913 +$¡©s +['ouut'] = +$ouut + ? + `un£rŸlize +($output) : ''; + +914 ià(! +$¡©s +['output']) + +916 +$¡©s +['ouut'] = + `¬¿y +×¼ay('fže' => +$fže +, 'tests' =>‡rray(), 'stats' =>‡rray('plan' => 1, 'total' => 1, 'failed' =>‡rray(0), 'passed' =>‡rray(), 'skipped' =>‡rray(), 'errors' =>‡rray()))); + +918 + `uƚk +( +$»suÉ_fže +); + +920 +$fže_¡©s + = & +$¡©s +['output'][0]['stats']; + +922 +$d– + = 0; + +923 ià( +$»tuº + > 0) + +925 +$¡©s +['¡©us'] = +$fže_¡©s +['errors'] ? 'errors' : 'dubious'; + +926 +$¡©s +['¡©us_code'] = +$»tuº +; + +930 +$this +-> +¡©s +['tÙ®'] +ð +$fže_¡©s +['total']; + +932 ià(! +$fže_¡©s +['plan']) + +934 +$fže_¡©s +['plan'] = $file_stats['total']; + +937 +$d– + = +$fže_¡©s +['plan'] - $file_stats['total']; + +938 ià(0 !ð +$d– +) + +940 +$¡©s +['¡©us'] = +$fže_¡©s +['errors'] ? 'errors' : 'dubious'; + +941 +$¡©s +['status_code'] = 255; + +945 +$¡©s +['¡©us'] = +$fže_¡©s +['failed'] ? 'not ok' : ($file_stats['errors'] ? 'errors' : 'ok'); + +946 +$¡©s +['status_code'] = 0; + +950 +$this +-> +ouut +-> + `echÞn +( + `¥rštf +('%s%s%s', + `sub¡r +( +$»Ïtive_fže +, - + `mš +(67, + `¡¾’ +($»Ïtive_fže))), + `¡r_»³© +('.', 70 - mš(67, sŒËn($»Ïtive_fže))), +$¡©s +['status'])); + +952 ià('dubious' =ð +$¡©s +['status']) + +954 +$this +-> +ouut +-> + `echÞn +( + `¥rštf +(' Te¡„‘uºed stu %s', +$¡©s +['status_code'])); + +957 ià('ok' !ð +$¡©s +['status']) + +959 +$this +-> +¡©s +['çžed_fžes'][] = +$fže +; + +962 ià( +$d– + > 0) + +964 +$this +-> +ouut +-> + `echÞn +( + `¥rštf +(' Look likyou…ÏÂed %de¡ buˆÚly„ª %d.', +$fže_¡©s +['plan'], $file_stats['total'])); + +966 +$this +-> +¡©s +['çžed_‹¡s'] +ð +$d– +; + +967 +$this +-> +¡©s +['tÙ®'] +ð +$d– +; + +969 ià( +$d– + < 0) + +971 +$this +-> +ouut +-> + `echÞn +( + `¥rštf +(' Look likyou…ÏÂed % ‹¡ buˆ¿À% exŒa.', +$fže_¡©s +['plan'], $file_stats['total'] - $file_stats['plan'])); + +974 ià( +çl£ + !=ð +$fže_¡©s + && $file_stats['failed']) + +976 +$this +-> +¡©s +['çžed_‹¡s'] +ð + `couÁ +( +$fže_¡©s +['failed']); + +978 +$this +-> +ouut +-> + `echÞn +( + `¥rštf +(" Fažede¡s: %s", + `im¶ode +(', ', +$fže_¡©s +['failed']))); + +981 ià( +çl£ + !=ð +$fže_¡©s + && $file_stats['errors']) + +983 +$this +-> +ouut +-> + `echÞn +(' Errors:'); + +985 +$”rÜ_couÁ + = + `couÁ +( +$fže_¡©s +['errors']); + +986  +$i + = 0; $˜< 3 && $˜< +$”rÜ_couÁ +; ++$i) + +988 +$this +-> +ouut +-> + `echÞn +(' - ' . +$fže_¡©s +['”rÜs'][ +$i +]['mes§ge'], +nuÎ +, +çl£ +); + +990 ià( +$”rÜ_couÁ + > 3) + +992 +$this +-> +ouut +-> + `echÞn +( + `¥rštf +(' ...‡nd % mÜe', +$”rÜ_couÁ +-3)); + +997 ià( + `couÁ +( +$this +-> +¡©s +['failed_files'])) + +999 +$fÜm© + = "%-30s %4s %5s %5s %5s %s"; + +1000 +$this +-> +ouut +-> + `echÞn +( + `¥rštf +( +$fÜm© +, 'Failed Test', 'Stat', 'Total', 'Fail', 'Errors', 'List of Failed')); + +1001 +$this +-> +ouut +-> + `echÞn +("--------------------------------------------------------------------------"); + +1002 + `fܗch + ( +$this +-> +¡©s +['fžes'] +as + +$fže + => +$¡© +) + +1004 ià(! + `š_¬¿y +( +$fže +, +$this +-> +¡©s +['failed_files'])) + +1008 +$»Ïtive_fže + = +$this +-> + `g‘_»Ïtive_fže +( +$fže +); + +1010 ià( + `is£t +( +$¡© +['output'][0])) + +1012 +$this +-> +ouut +-> + `echÞn +( + `¥rštf +( +$fÜm© +, + `sub¡r +( +$»Ïtive_fže +, - + `mš +(30, + `¡¾’ +($»Ïtive_fže))), +$¡© +['¡©us_code'], + `couÁ +($¡©['ouut'][0]['¡©s']['çžed']è+ couÁ($¡©['ouut'][0]['¡©s']['·s£d']), couÁ($¡©['ouut'][0]['¡©s']['çžed']), couÁ($¡©['ouut'][0]['¡©s']['”rÜs']), + `im¶ode +(' ', $stat['output'][0]['stats']['failed']))); + +1016 +$this +-> +ouut +-> + `echÞn +( + `¥rštf +( +$fÜm© +, + `sub¡r +( +$»Ïtive_fže +, - + `mš +(30, + `¡¾’ +($»Ïtive_fže))), +$¡© +['status_code'], '', '', '')); + +1020 +$this +-> +ouut +-> + `»d_b¬ +( + `¥rštf +('Failed %d/%dest scripts, %.2f%% okay. %d/%d subtests failed, %.2f%% okay.', + +1021 +$nb_çžed_fžes + = + `couÁ +( +$this +-> +¡©s +['failed_files']), + +1022 +$nb_fžes + = + `couÁ +( +$this +-> +fžes +), + +1023 ( +$nb_fžes + - +$nb_çžed_fžes +) * 100 / $nb_files, + +1024 +$nb_çžed_‹¡s + = +$this +-> +¡©s +['failed_tests'], + +1025 +$nb_‹¡s + = +$this +-> +¡©s +['total'], + +1026 +$nb_‹¡s + > 0 ? ($nb_‹¡ - +$nb_çžed_‹¡s +) * 100 / $nb_tests : 0 + +1029 ià( +$this +-> +ÝtiÚs +['verbose']) + +1031 + `fܗch + ( +$this +-> + `to_¬¿y +(è +as + +$‹¡su™e +) + +1033 +$fœ¡ + = +Œue +; + +1034 + `fܗch + ( +$‹¡su™e +['¡©s']['çžed'] +as + +$‹¡ÿ£ +) + +1036 ià(! + `is£t +( +$‹¡su™e +['‹¡s'][ +$‹¡ÿ£ +]['file'])) + +1041 ià( +$fœ¡ +) + +1043 +$this +-> +ouut +-> + `echÞn +(''); + +1044 +$this +-> +ouut +-> + `”rÜ +($this-> + `g‘_»Ïtive_fže +( +$‹¡su™e +['fže']).$this-> +ex‹nsiÚ +); + +1045 +$fœ¡ + = +çl£ +; + +1048 +$this +-> +ouut +-> + `comm’t +( + `¥rštf +('‡ˆ% lš%s', $this-> + `g‘_»Ïtive_fže +( +$‹¡su™e +['‹¡s'][ +$‹¡ÿ£ +]['fže']).$this-> +ex‹nsiÚ +, $testsuite['tests'][$testcase]['line'])); + +1049 +$this +-> +ouut +-> + `šfo +(' '. +$‹¡su™e +['‹¡s'][ +$‹¡ÿ£ +]['message']); + +1050 +$this +-> +ouut +-> + `echÞn +( +$‹¡su™e +['‹¡s'][ +$‹¡ÿ£ +]['”rÜ'], +nuÎ +, +çl£ +); + +1057 +$this +-> +ouut +-> + `g»’_b¬ +(' Allests successful.'); + +1058 +$this +-> +ouut +-> + `g»’_b¬ +( + `¥rštf +(' Fžes=%d, Te¡s=%d', + `couÁ +($this-> +fžes +), $this-> +¡©s +['total'])); + +1061  +$this +-> +¡©s +['çžed_fžes'] ? +çl£ + : +Œue +; + +1062 + } +} + +1064 +public + +funùiÚ + + $g‘_çžed_fžes +() + +1066  + `is£t +( +$this +-> +¡©s +['çžed_fžes']è? $this->¡©s['çžed_fžes'] : + `¬¿y +(); + +1067 + } +} + +1070 þas  + clime_cov”age + +ex‹nds + + mlime_»gi¡¿tiÚ + + +1072 +public + + m$fžes + = +¬¿y +(); + +1073 +public + + m$ex‹nsiÚ + = '.php'; + +1074 +public + + m$ba£_dœ + = ''; + +1075 +public + + m$h¬Ãss + = +nuÎ +; + +1076 +public + + m$v”bo£ + = +çl£ +; + +1077 +´Ùeùed + + m$cov”age + = +¬¿y +(); + +1079 +public + +funùiÚ + + $__cÚ¡ruù +( +$h¬Ãss +) + +1081 +$this +-> +h¬Ãss + = +$h¬Ãss +; + +1083 ià(! + `funùiÚ_exi¡s +('xdebug_start_code_coverage')) + +1085 +throw + +Ãw + + `Exû±iÚ +('You must install‡ndƒnable xdebug before using†ime coverage.'); + +1088 ià(! + `ši_g‘ +('xdebug.extended_info')) + +1090 +throw + +Ãw + + `Exû±iÚ +('You must set xdebug.extended_infoo 1 in your…hp.inio use†ime coverage.'); + +1094 +public + +funùiÚ + + $run +() + +1096 ià(! + `couÁ +( +$this +-> +h¬Ãss +-> +fžes +)) + +1098 +throw + +Ãw + + `Exû±iÚ +('You must„egister someest files before„unning coverage!'); + +1101 ià(! + `couÁ +( +$this +-> +fžes +)) + +1103 +throw + +Ãw + + `Exû±iÚ +('You must„egister some fileso cover!'); + +1106 +$this +-> +cov”age + = + `¬¿y +(); + +1108 +$this +-> + `´oûss +($this-> +h¬Ãss +-> +fžes +); + +1110 +$this +-> + `ouut +($this-> +fžes +); + +1111 + } +} + +1113 +public + +funùiÚ + + $´oûss +( +$fžes +) + +1115 ià(! + `is_¬¿y +( +$fžes +)) + +1117 +$fžes + = + `¬¿y +($files); + +1120 +$tmp_fže + = + `sys_g‘_‹mp_dœ +(). +DIRECTORY_SEPARATOR +.'test.php'; + +1121 + `fܗch + ( +$fžes + +as + +$fže +) + +1123 +$tmp + = <<< +EOF + + +1124 '. + `£rŸlize +( + `xdebug_g‘_code_cov”age +()).''; + +1128 +EOF +; + +1129 + `fže_put_cڋÁs +( +$tmp_fže +, +$tmp +); + +1130 + `ob_¡¬t +(); + +1132 + `·s¡hru +( + `¥rštf +('cd & % % 2>&1', + `esÿ³sh–Ïrg +( +$this +-> +h¬Ãss +-> +php_þi +),ƒsÿ³sh–Ïrg( +$tmp_fže +)), +$»tuº +); + +1133 +$»tv® + = + `ob_g‘_þ—n +(); + +1135 ià(0 !ð +$»tuº +) + +1140 +$this +-> +h¬Ãss +-> +ouut +-> + `echÞn +( + `¥rštf +('W¬nšg: % »tuºed stu %d,„esuÉ may bšaccu¿‹', +$fže +, +$»tuº +), 'ERROR'); + +1143 ià( +çl£ + ==ð +$cov + = @ + `un£rŸlize +( + `sub¡r +( +$»tv® +, + `¡½os +($retval, '') + 9, strpos($retval, '') - 9))) + +1145 ià(0 =ð +$»tuº +) + +1149 +throw + +Ãw + + `Exû±iÚ +( + `¥rštf +('UÇbˁØun£rŸlizcov”agfÜ fž"%s"', +$fže +)); + +1159 + `fܗch + ( +$cov + +as + +$fže + => +$lšes +) + +1161 ià(! + `is£t +( +$this +-> +cov”age +[ +$fže +])) + +1163 +$this +-> +cov”age +[ +$fže +] = +$lšes +; + +1167 + `fܗch + ( +$lšes + +as + +$lše + => +$æag +) + +1169 ià( +$æag + == 1) + +1171 +$this +-> +cov”age +[ +$fže +][ +$lše +] = 1; + +1177 ià( + `fže_exi¡s +( +$tmp_fže +)) + +1179 + `uƚk +( +$tmp_fže +); + +1181 + } +} + +1183 +public + +funùiÚ + + $ouut +( +$fžes +) + +1185 + `ksÜt +( +$this +-> +cov”age +); + +1186 +$tÙ®_php_lšes + = 0; + +1187 +$tÙ®_cov”ed_lšes + = 0; + +1188 + `fܗch + ( +$fžes + +as + +$fže +) + +1190 +$fže + = + `»®·th +($file); + +1191 +$is_cov”ed + = + `is£t +( +$this +-> +cov”age +[ +$fže +]); + +1192 +$cov + = + `is£t +( +$this +-> +cov”age +[ +$fže +]è? $this->cov”age[$fže] : + `¬¿y +(); + +1193 +$cov”ed_lšes + = + `¬¿y +(); + +1194 +$missšg_lšes + = + `¬¿y +(); + +1196 + `fܗch + ( +$cov + +as + +$lše + => +$æag +) + +1198  +$æag +) + +1201 +$cov”ed_lšes +[] = +$lše +; + +1204 +$missšg_lšes +[] = +$lše +; + +1209 +$tÙ®_lšes + = + `couÁ +( +$cov”ed_lšes +è+ couÁ( +$missšg_lšes +); + +1210 ià(! +$tÙ®_lšes +) + +1213 +$tÙ®_lšes + = + `couÁ +( +$this +-> + `g‘_php_lšes +( + `fže_g‘_cڋÁs +( +$fže +))); + +1216 +$ouut + = +$this +-> +h¬Ãss +-> +ouut +; + +1217 +$³rûÁ + = +$tÙ®_lšes + ? + `couÁ +( +$cov”ed_lšes +) * 100 / $total_lines : 0; + +1219 +$tÙ®_php_lšes + +ð +$tÙ®_lšes +; + +1220 +$tÙ®_cov”ed_lšes + +ð + `couÁ +( +$cov”ed_lšes +); + +1222 +$»Ïtive_fže + = +$this +-> + `g‘_»Ïtive_fže +( +$fže +); + +1223 +$ouut +-> + `echÞn +( + `¥rštf +("%-70 %3.0f%%", + `sub¡r +( +$»Ïtive_fže +, - + `mš +(70, + `¡¾’ +($»Ïtive_fže))), +$³rûÁ +), $percent == 100 ? 'INFO' : ($percent > 90 ? 'PARAMETER' : ($percent < 20 ? 'ERROR' : ''))); + +1224 ià( +$this +-> +v”bo£ + && +$is_cov”ed + && +$³rûÁ + != 100) + +1226 +$ouut +-> + `comm’t +( + `¥rštf +("missšg: %s", +$this +-> + `fÜm©_¿nge +( +$missšg_lšes +))); + +1230 +$ouut +-> + `echÞn +( + `¥rštf +("TOTAL COVERAGE: %3.0f%%", +$tÙ®_php_lšes + ? +$tÙ®_cov”ed_lšes + * 100 / $total_php_lines : 0)); + +1231 + } +} + +1233 +public +  +funùiÚ + + $g‘_php_lšes +( +$cڋÁ +) + +1235 ià( + `is_»adabË +( +$cڋÁ +)) + +1237 +$cڋÁ + = + `fže_g‘_cڋÁs +($content); + +1240 +$tok’s + = + `tok’_g‘_®l +( +$cڋÁ +); + +1241 +$php_lšes + = + `¬¿y +(); + +1242 +$cu¼’t_lše + = 1; + +1243 +$š_þass + = +çl£ +; + +1244 +$š_funùiÚ + = +çl£ +; + +1245 +$š_funùiÚ_deþ¬©iÚ + = +çl£ +; + +1246 +$’d_of_cu¼’t_ex´ + = +Œue +; + +1247 +$ݒ_b¿ûs + = 0; + +1248 + `fܗch + ( +$tok’s + +as + +$tok’ +) + +1250 ià( + `is_¡ršg +( +$tok’ +)) + +1252  +$tok’ +) + +1255 ià( +çl£ + ==ð +$š_þass + || (çl£ !=ð +$š_funùiÚ + && ! +$š_funùiÚ_deþ¬©iÚ +)) + +1257 +$php_lšes +[ +$cu¼’t_lše +] = +Œue +; + +1261 ++ +$ݒ_b¿ûs +; + +1262 +$š_funùiÚ_deþ¬©iÚ + = +çl£ +; + +1265 +$š_funùiÚ_deþ¬©iÚ + = +çl£ +; + +1266 +$’d_of_cu¼’t_ex´ + = +Œue +; + +1269 +$’d_of_cu¼’t_ex´ + = +Œue +; + +1270 -- +$ݒ_b¿ûs +; + +1271 ià( +$ݒ_b¿ûs + =ð +$š_þass +) + +1273 +$š_þass + = +çl£ +; + +1275 ià( +$ݒ_b¿ûs + =ð +$š_funùiÚ +) + +1277 +$š_funùiÚ + = +çl£ +; + +1285 + `li¡ +( +$id +, +$‹xt +èð +$tok’ +; + +1287  +$id +) + +1289  +T_CURLY_OPEN +: + +1290  +T_DOLLAR_OPEN_CURLY_BRACES +: + +1291 ++ +$ݒ_b¿ûs +; + +1293  +T_WHITESPACE +: + +1294  +T_OPEN_TAG +: + +1295  +T_CLOSE_TAG +: + +1296 +$’d_of_cu¼’t_ex´ + = +Œue +; + +1297 +$cu¼’t_lše + +ð + `couÁ +( + `ex¶ode +("\n", +$‹xt +)) - 1; + +1299  +T_COMMENT +: + +1300  +T_DOC_COMMENT +: + +1301 +$cu¼’t_lše + +ð + `couÁ +( + `ex¶ode +("\n", +$‹xt +)) - 1; + +1303  +T_CLASS +: + +1304 +$š_þass + = +$ݒ_b¿ûs +; + +1306  +T_FUNCTION +: + +1307 +$š_funùiÚ + = +$ݒ_b¿ûs +; + +1308 +$š_funùiÚ_deþ¬©iÚ + = +Œue +; + +1310  +T_AND_EQUAL +: + +1311  +T_BREAK +: + +1312  +T_CASE +: + +1313  +T_CATCH +: + +1314  +T_CLONE +: + +1315  +T_CONCAT_EQUAL +: + +1316  +T_CONTINUE +: + +1317  +T_DEC +: + +1318  +T_DECLARE +: + +1319  +T_DEFAULT +: + +1320  +T_DIV_EQUAL +: + +1321  +T_DO +: + +1322  +T_ECHO +: + +1323  +T_ELSEIF +: + +1324  +T_EMPTY +: + +1325  +T_ENDDECLARE +: + +1326  +T_ENDFOR +: + +1327  +T_ENDFOREACH +: + +1328  +T_ENDIF +: + +1329  +T_ENDSWITCH +: + +1330  +T_ENDWHILE +: + +1331  +T_EVAL +: + +1332  +T_EXIT +: + +1333  +T_FOR +: + +1334  +T_FOREACH +: + +1335  +T_GLOBAL +: + +1336  +T_IF +: + +1337  +T_INC +: + +1338  +T_INCLUDE +: + +1339  +T_INCLUDE_ONCE +: + +1340  +T_INSTANCEOF +: + +1341  +T_ISSET +: + +1342  +T_IS_EQUAL +: + +1343  +T_IS_GREATER_OR_EQUAL +: + +1344  +T_IS_IDENTICAL +: + +1345  +T_IS_NOT_EQUAL +: + +1346  +T_IS_NOT_IDENTICAL +: + +1347  +T_IS_SMALLER_OR_EQUAL +: + +1348  +T_LIST +: + +1349  +T_LOGICAL_AND +: + +1350  +T_LOGICAL_OR +: + +1351  +T_LOGICAL_XOR +: + +1352  +T_MINUS_EQUAL +: + +1353  +T_MOD_EQUAL +: + +1354  +T_MUL_EQUAL +: + +1355  +T_NEW +: + +1356  +T_OBJECT_OPERATOR +: + +1357  +T_OR_EQUAL +: + +1358  +T_PLUS_EQUAL +: + +1359  +T_PRINT +: + +1360  +T_REQUIRE +: + +1361  +T_REQUIRE_ONCE +: + +1362  +T_RETURN +: + +1363  +T_SL +: + +1364  +T_SL_EQUAL +: + +1365  +T_SR +: + +1366  +T_SR_EQUAL +: + +1367  +T_SWITCH +: + +1368  +T_THROW +: + +1369  +T_TRY +: + +1370  +T_UNSET +: + +1371  +T_UNSET_CAST +: + +1372  +T_USE +: + +1373  +T_WHILE +: + +1374  +T_XOR_EQUAL +: + +1375 +$php_lšes +[ +$cu¼’t_lše +] = +Œue +; + +1376 +$’d_of_cu¼’t_ex´ + = +çl£ +; + +1379 ià( +çl£ + ==ð +$’d_of_cu¼’t_ex´ +) + +1381 +$php_lšes +[ +$cu¼’t_lše +] = +Œue +; + +1386  +$php_lšes +; + +1387 + } +} + +1389 +public + +funùiÚ + + $compu‹ +( +$cڋÁ +, +$cov +) + +1391 +$php_lšes + = +£lf +:: + `g‘_php_lšes +( +$cڋÁ +); + +1394 + `fܗch + ( + `¬¿y_diff_key +( +$cov +, +$php_lšes +è +as + +$lše + => +$tmp +) + +1396 + `un£t +( +$cov +[ +$lše +]); + +1399  + `¬¿y +( +$cov +, +$php_lšes +); + +1400 + } +} + +1402 +public + +funùiÚ + + $fÜm©_¿nge +( +$lšes +) + +1404 + `sÜt +( +$lšes +); + +1405 +$fÜm©‹d + = ''; + +1406 +$fœ¡ + = -1; + +1407 +$Ï¡ + = -1; + +1408 + `fܗch + ( +$lšes + +as + +$lše +) + +1410 ià( +$Ï¡ + + 1 !ð +$lše +) + +1412 ià( +$fœ¡ + != -1) + +1414 +$fÜm©‹d + .ð +$fœ¡ + =ð +$Ï¡ + ? "$first " : "[$first - $last] "; + +1416 +$fœ¡ + = +$lše +; + +1417 +$Ï¡ + = +$lše +; + +1421 +$Ï¡ + = +$lše +; + +1424 ià( +$fœ¡ + != -1) + +1426 +$fÜm©‹d + .ð +$fœ¡ + =ð +$Ï¡ + ? "$first " : "[$first - $last] "; + +1429  +$fÜm©‹d +; + +1430 + } +} + +1433 þas  + clime_»gi¡¿tiÚ + + +1435 +public + + m$fžes + = +¬¿y +(); + +1436 +public + + m$ex‹nsiÚ + = '.php'; + +1437 +public + + m$ba£_dœ + = ''; + +1439 +public + +funùiÚ + ( +$fžes_Ü_dœeùܛs +) + +1441 + `fܗch + (( +¬¿y +è +$fžes_Ü_dœeùܛs + +as + +$f_Ü_d +) + +1443 ià( + `is_fže +( +$f_Ü_d +)) + +1445 +$this +-> +fžes +[] = + `»®·th +( +$f_Ü_d +); + +1447 + `–£if + ( + `is_dœ +( +$f_Ü_d +)) + +1449 +$this +-> + `»gi¡”_dœ +( +$f_Ü_d +); + +1453 +throw + +Ãw + + `Exû±iÚ +( + `¥rštf +('ThfžÜ dœeùÜy "%s" dÛ nكxi¡.', +$f_Ü_d +)); + +1458 +public + +funùiÚ + + $»gi¡”_glob +( +$glob +) + +1460 ià( +$dœs + = + `glob +( +$glob +)) + +1462 + `fܗch + ( +$dœs + +as + +$fže +) + +1464 +$this +-> +fžes +[] = + `»®·th +( +$fže +); + +1467 + } +} + +1469 +public + +funùiÚ + + $»gi¡”_dœ +( +$dœeùÜy +) + +1471 ià(! + `is_dœ +( +$dœeùÜy +)) + +1473 +throw + +Ãw + + `Exû±iÚ +( + `¥rštf +('ThdœeùÜy "%s" dÛ nكxi¡.', +$dœeùÜy +)); + +1476 +$fžes + = + `¬¿y +(); + +1478 +$cu¼’t_dœ + = + `ݒdœ +( +$dœeùÜy +); + +1479  +$’Œy + = + `»addœ +( +$cu¼’t_dœ +)) + +1481 ià( +$’Œy + == '.' || $entry == '..') ; + +1483 ià( + `is_dœ +( +$’Œy +)) + +1485 +$this +-> + `»gi¡”_dœ +( +$’Œy +); + +1487 + `–£if + ( + `´eg_m©ch +('#'. +$this +-> +ex‹nsiÚ +.'$#', +$’Œy +)) + +1489 +$fžes +[] = + `»®·th +( +$dœeùÜy +. +DIRECTORY_SEPARATOR +. +$’Œy +); + +1493 +$this +-> +fžes + = + `¬¿y_m”ge +($this->fžes, +$fžes +); + +1494 + } +} + +1496 +´Ùeùed + +funùiÚ + + $g‘_»Ïtive_fže +( +$fže +) + +1498  + `¡r_»¶aû +( +DIRECTORY_SEPARATOR +, '/', sŒ_»¶aû( + `¬¿y +( + `»®·th +( +$this +-> +ba£_dœ +).DIRECTORY_SEPARATOR, $this-> +ex‹nsiÚ +), '', +$fže +)); + +1499 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift.php + +1 + `ü—‹D•’d’c›sFÜ +('mime.attachment') + +40 +$this +-> + `£tBody +( +$d©a +); + +41 +$this +-> + `£tFž’ame +( +$fž’ame +); + +42 ià( +$cڋÁTy³ +) + +44 +$this +-> + `£tCڋÁTy³ +( +$cڋÁTy³ +); + +55 +public +  +funùiÚ + + $ÃwIn¡ªû +( +$d©a + = +nuÎ +, +$fž’ame + =‚ull, + +56 +$cڋÁTy³ + = +nuÎ +) + +58  +Ãw + + `£lf +( +$d©a +, +$fž’ame +, +$cڋÁTy³ +); + +59 + } +} + +67 +public +  +funùiÚ + + $äomP©h +( +$·th +, +$cڋÁTy³ + = +nuÎ +) + +69  +£lf +:: + `ÃwIn¡ªû +()-> + `£tFže +( + +70 +Ãw + + `Swiá_By‹SŒ—m_FžeBy‹SŒ—m +( +$·th +), + +71 +$cڋÁTy³ + + +73 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/ByteStream/AbstractFilterableInputStream.php + +1 + g_fž‹rs +[ +$key +] = +$fž‹r +; + +64 +public + +funùiÚ + +»moveFž‹r +( +$key +) + +66 +un£t +( +$this +-> +_fž‹rs +[ +$key +]); + +74 +public + +funùiÚ + +wr™e +( +$by‹s +) + +76 + g$this +-> + g_wr™eBufãr + .ð +$by‹s +; + +77 +fܗch + ( +$this +-> +_fž‹rs + +as + +$fž‹r +) + +79 ià( + g$fž‹r +-> +shouldBufãr +( +$this +-> +_wr™eBufãr +)) + +84 + g$this +-> +_doWr™e +( +$this +-> +_wr™eBufãr +); + +85  ++ + g$this +-> + g_£qu’û +; + +94 +public + +funùiÚ + +comm™ +() + +96 + g$this +-> +_doWr™e +( +$this +-> +_wr™eBufãr +); + +106 +public + +funùiÚ + +bšd +( +Swiá_IÅutBy‹SŒ—m + +$is +) + +108 + g$this +-> + g_mœrÜs +[] = +$is +; + +119 +public + +funùiÚ + +unbšd +( +Swiá_IÅutBy‹SŒ—m + +$is +) + +121 +fܗch + ( +$this +-> +_mœrÜs + +as + +$k + => +$¡»am +) + +123 ià( +$is + ==ð +$¡»am +) + +125 ià( +$this +-> +_wr™eBufãr + !== '') + +127 +$¡»am +-> +wr™e +( +$this +-> +_fž‹r +($this-> +_wr™eBufãr +)); + +129 +un£t +( +$this +-> +_mœrÜs +[ +$k +]); + +139 +public + +funùiÚ + +æushBufãrs +() + +141 ià( + g$this +-> + g_wr™eBufãr + !== '') + +143 +$this +-> +_doWr™e +($this-> +_wr™eBufãr +); + +145 + g$this +-> +_æush +(); + +147 +fܗch + ( +$this +-> +_mœrÜs + +as + +$¡»am +) + +149 + g$¡»am +-> +æushBufãrs +(); + +156 +´iv©e + +funùiÚ + +_fž‹r +( +$by‹s +) + +158 +fܗch + ( +$this +-> +_fž‹rs + +as + +$fž‹r +) + +160 + g$by‹s + = +$fž‹r +-> +fž‹r +( +$by‹s +); + +162  + g$by‹s +; + +166 +´iv©e + +funùiÚ + +_doWr™e +( +$by‹s +) + +168 + g$this +-> +_comm™ +( +$this +-> +_fž‹r +( +$by‹s +)); + +170 +fܗch + ( +$this +-> +_mœrÜs + +as + +$¡»am +) + +172 + g$¡»am +-> +wr™e +( +$by‹s +); + +175 + g$this +-> + g_wr™eBufãr + = ''; + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/ByteStream/ArrayByteStream.php + +1 +_¬¿y + = +$¡ack +; + +58 + g$this +-> + g_¬¿ySize + = +couÁ +( +$¡ack +); + +60 +–£if + ( +is_¡ršg +( +$¡ack +)) + +62 + g$this +-> +wr™e +( +$¡ack +); + +66 + g$this +-> + g_¬¿y + = +¬¿y +(); + +78 +public + +funùiÚ + +»ad +( +$Ëngth +) + +80 ià( + g$this +-> + g_off£t + =ð +$this +-> +_¬¿ySize +) + +82  +çl£ +; + +86 + g$’d + = +$Ëngth + + +$this +-> +_off£t +; + +87 + g$’d + = +$this +-> +_¬¿ySize +< +$’d + + +88 ? +$this +-> +_¬¿ySize + + +89 : +$’d +; + +90 + g$»t + = ''; + +91 ; + g$this +-> + g_off£t + < + g$’d +; ++$this->_offset) + +93 + g$»t + .ð +$this +-> +_¬¿y +[$this-> +_off£t +]; + +95  + g$»t +; + +102 +public + +funùiÚ + +wr™e +( +$by‹s +) + +104 + g$to_add + = +¡r_¥l™ +( +$by‹s +); + +105 +fܗch + ( +$to_add + +as + +$v®ue +) + +107 + g$this +-> + g_¬¿y +[] = +$v®ue +; + +109 + g$this +-> + g_¬¿ySize + = +couÁ +( +$this +-> +_¬¿y +); + +111 +fܗch + ( +$this +-> +_mœrÜs + +as + +$¡»am +) + +113 + g$¡»am +-> +wr™e +( +$by‹s +); + +120 +public + +funùiÚ + +comm™ +() + +131 +public + +funùiÚ + +bšd +( +Swiá_IÅutBy‹SŒ—m + +$is +) + +133 + g$this +-> + g_mœrÜs +[] = +$is +; + +144 +public + +funùiÚ + +unbšd +( +Swiá_IÅutBy‹SŒ—m + +$is +) + +146 +fܗch + ( +$this +-> +_mœrÜs + +as + +$k + => +$¡»am +) + +148 ià( +$is + ==ð +$¡»am +) + +150 +un£t +( +$this +-> +_mœrÜs +[ +$k +]); + +160 +public + +funùiÚ + +£tR—dPoš‹r +( +$by‹Off£t +) + +162 ià( + g$by‹Off£t + > + g$this +-> + g_¬¿ySize +) + +164 + g$by‹Off£t + = +$this +-> +_¬¿ySize +; + +166 +–£if + ( +$by‹Off£t + < 0) + +168 + g$by‹Off£t + = 0; + +171 + g$this +-> + g_off£t + = +$by‹Off£t +; + +178 +public + +funùiÚ + +æushBufãrs +() + +180 + g$this +-> + g_off£t + = 0; + +181 + g$this +-> + g_¬¿y + = +¬¿y +(); + +182 + g$this +-> + g_¬¿ySize + = 0; + +184 +fܗch + ( +$this +-> +_mœrÜs + +as + +$¡»am +) + +186 + g$¡»am +-> +æushBufãrs +(); + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/ByteStream/FileByteStream.php + +1 +_·th + = +$·th +; + +53 +$this +-> +_mode + = +$wr™abË + ? 'w+b' : 'rb'; + +54 +$this +-> +_quÙes + = + `g‘_magic_quÙes_ruÁime +(); + +61 +public + +funùiÚ + + $g‘P©h +() + +63  +$this +-> +_·th +; + +64 + } +} + +75 +public + +funùiÚ + + $»ad +( +$Ëngth +) + +77 +$å + = +$this +-> + `_g‘R—dHªdË +(); + +78 ià(! + `ãof +( +$å +)) + +80 ià( +$this +-> +_quÙes +) + +82 + `£t_magic_quÙes_ruÁime +(0); + +84 +$by‹s + = + `ä—d +( +$å +, +$Ëngth +); + +85 ià( +$this +-> +_quÙes +) + +87 + `£t_magic_quÙes_ruÁime +(1); + +89 +$this +-> +_off£t + = + `á–l +( +$å +); + +90  +$by‹s +; + +94  +çl£ +; + +96 + } +} + +103 +public + +funùiÚ + + $£tR—dPoš‹r +( +$by‹Off£t +) + +105 ià( + `is£t +( +$this +-> +_»ad” +)) + +107 + `f£ek +( +$this +-> +_»ad” +, +$by‹Off£t +, +SEEK_SET +); + +109 +$this +-> +_off£t + = +$by‹Off£t +; + +110 + } +} + +115 +´Ùeùed + +funùiÚ + + $_comm™ +( +$by‹s +) + +117 + `fwr™e +( +$this +-> + `_g‘Wr™eHªdË +(), +$by‹s +); + +118 +$this +-> + `_»£tR—dHªdË +(); + +119 + } +} + +122 +´Ùeùed + +funùiÚ + + $_æush +() + +124 + } +} + +127 +´iv©e + +funùiÚ + + $_g‘R—dHªdË +() + +129 ià(! + `is£t +( +$this +-> +_»ad” +)) + +131 ià(! +$this +-> +_»ad” + = + `fݒ +($this-> +_·th +, 'rb')) + +133 +throw + +Ãw + + `Swiá_IoExû±iÚ +( + +134 'UÇbˁØÝ’ fžf܄—dšg [' . +$this +-> +_·th + . ']' + +137 + `f£ek +( +$this +-> +_»ad” +, $this-> +_off£t +, +SEEK_SET +); + +139  +$this +-> +_»ad” +; + +140 + } +} + +143 +´iv©e + +funùiÚ + + $_g‘Wr™eHªdË +() + +145 ià(! + `is£t +( +$this +-> +_wr™” +)) + +147 ià(! +$this +-> +_wr™” + = + `fݒ +($this-> +_·th +, $this-> +_mode +)) + +149 +throw + +Ãw + + `Swiá_IoExû±iÚ +( + +150 'UÇbˁØÝ’ fžfÜ wr™šg [' . +$this +-> +_·th + . ']' + +154  +$this +-> +_wr™” +; + +155 + } +} + +158 +´iv©e + +funùiÚ + + $_»£tWr™eHªdË +() + +160 ià( + `is£t +( +$this +-> +_wr™” +)) + +162 + `fþo£ +( +$this +-> +_wr™” +); + +163 +$this +-> +_wr™” + = +nuÎ +; + +165 + } +} + +168 +´iv©e + +funùiÚ + + $_»£tR—dHªdË +() + +170 ià( + `is£t +( +$this +-> +_»ad” +)) + +172 + `fþo£ +( +$this +-> +_»ad” +); + +173 +$this +-> +_»ad” + = +nuÎ +; + +175 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReader.php + +1 +_width + = +$width +; + +49 +public + +funùiÚ + + $g‘Ch¬Pos™iÚs +( +$¡ršg +, +$¡¬tOff£t +, & +$cu¼’tM­ +, & +$ignÜedCh¬s +) + +51 +$¡¾’ + = + `¡¾’ +( +$¡ršg +); + +53 +$ignÜed + = +$¡¾’ +% +$this +-> +_width +; + +54 +$ignÜedCh¬s + = + `sub¡r +( +$¡ršg +, - +$ignÜed +); + +55 +$cu¼’tM­ + = +$this +-> +_width +; + +56  ( +$¡¾’ + - +$ignÜed +)/ +$this +-> +_width +; + +58 + } +} + +64 +public + +funùiÚ + + $g‘M­Ty³ +() + +66  +£lf +:: +MAP_TYPE_FIXED_LEN +; + +67 + } +} + +78 +public + +funùiÚ + + $v®id©eBy‹Sequ’û +( +$by‹s +, +$size +) + +80 +$Ãeded + = +$this +-> +_width + - +$size +; + +81  ( +$Ãeded + > -1) + +82 ? +$Ãeded + + +85 + } +} + +91 +public + +funùiÚ + + $g‘In™ŸlBy‹Size +() + +93  +$this +-> +_width +; + +94 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReader/UsAsciiReader.php + +1 "\x07F") + +37 +$cu¼’tM­ +[ +$i ++ +$¡¬tOff£t +]= +$¡ršg +[$i]; + +40  +$¡¾’ +; + +47 +public + +funùiÚ + + $g‘M­Ty³ +() + +49  +£lf +:: +MAP_TYPE_INVALID +; + +50 + } +} + +61 +public + +funùiÚ + + $v®id©eBy‹Sequ’û +( +$by‹s +, +$size +) + +63 +$by‹ + = + `»£t +( +$by‹s +); + +64 ià(1 =ð + `couÁ +( +$by‹s +è&& +$by‹ + >= 0x00 && $byte <= 0x7F) + +72 + } +} + +78 +public + +funùiÚ + + $g‘In™ŸlBy‹Size +() + +81 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReader/Utf8Reader.php + +1 +$¡¾’ +){ + +118 +$ignÜedCh¬s += + `sub¡r +( +$¡ršg +, +$i +); + +121  +$j +=1; $j< +$size +; ++$j) + +123 +$ch¬ += +$¡ršg +[ +$i ++ +$j +]; + +124 ià( +$ch¬ +>"\x7F" && $char<"\xC0") + +131 +$šv®id += +Œue +; + +136 +$Ï¡Ch¬ += +$cu¼’tM­ +['p'][ +$ch¬Pos ++ +$foundCh¬s +]= +$¡¬tOff£t ++ +$i ++ +$size +; + +137 +$i ++= +$j +-1; + +138 ++ +$foundCh¬s +; + +141  +$foundCh¬s +; + +148 +public + +funùiÚ + + $g‘M­Ty³ +() + +150  +£lf +:: +MAP_TYPE_POSITIONS +; + +151 + } +} + +162 +public + +funùiÚ + + $v®id©eBy‹Sequ’û +( +$by‹s +, +$size +) + +164 ià( +$size +<1){ + +167 +$Ãeded + = +£lf +:: +$Ëngth_m­ +[ +$by‹s +[0]] - +$size +; + +168  ( +$Ãeded + > -1) + +169 ? +$Ãeded + + +172 + } +} + +178 +public + +funùiÚ + + $g‘In™ŸlBy‹Size +() + +181 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReaderFactory.php + +1 +$´efix + . 'GenericFixedWidthReader', + +46 'cÚ¡ruùÜ' => + `¬¿y +(1) + +49 +$doubËBy‹ + = + `¬¿y +( + +50 'þass' => +$´efix + . 'GenericFixedWidthReader', + +51 'cÚ¡ruùÜ' => + `¬¿y +(2) + +54 +$fourBy‹s + = + `¬¿y +( + +55 'þass' => +$´efix + . 'GenericFixedWidthReader', + +56 'cÚ¡ruùÜ' => + `¬¿y +(4) + +60 +$this +-> +_m­ +['utf-?8'] = + `¬¿y +( + +61 'þass' => +$´efix + . 'Utf8Reader', + +62 'cÚ¡ruùÜ' => + `¬¿y +() + +66 +$this +-> +_m­ +['(us-)?ascii'] = +$sšgËBy‹ +; + +67 +$this +-> +_m­ +['(iso|›c)-?8859-?[0-9]+'] = +$sšgËBy‹ +; + +68 +$this +-> +_m­ +['wšdows-?125[0-9]'] = +$sšgËBy‹ +; + +69 +$this +-> +_m­ +['ý-?[0-9]+'] = +$sšgËBy‹ +; + +70 +$this +-> +_m­ +['ªsi'] = +$sšgËBy‹ +; + +71 +$this +-> +_m­ +['macštosh'] = +$sšgËBy‹ +; + +72 +$this +-> +_m­ +['koi-?7'] = +$sšgËBy‹ +; + +73 +$this +-> +_m­ +['koi-?8-?.+'] = +$sšgËBy‹ +; + +74 +$this +-> +_m­ +['mik'] = +$sšgËBy‹ +; + +75 +$this +-> +_m­ +['(cÜk|t1)'] = +$sšgËBy‹ +; + +76 +$this +-> +_m­ +['v?iscii'] = +$sšgËBy‹ +; + +79 +$this +-> +_m­ +['(ucs-?2|utf-?16)'] = +$doubËBy‹ +; + +82 +$this +-> +_m­ +['(ucs-?4|utf-?32)'] = +$fourBy‹s +; + +85 +$this +-> +_m­ +['.*'] = +$sšgËBy‹ +; + +93 +public + +funùiÚ + + $g‘R—d”FÜ +( +$ch¬£t +) + +95 +$ch¬£t + = + `Œim +( + `¡¹Þow” +($charset)); + +96 + `fܗch + ( +$this +-> +_m­ + +as + +$·‰”n + => +$¥ec +) + +98 +$» + = '/^' . +$·‰”n + . '$/D'; + +99 ià( + `´eg_m©ch +( +$» +, +$ch¬£t +)) + +101 ià(! + `¬¿y_key_exi¡s +( +$·‰”n +, +$this +-> +_lßded +)) + +103 +$»æeùÜ + = +Ãw + + `ReæeùiÚCÏss +( +$¥ec +['class']); + +104 ià( +$»æeùÜ +-> + `g‘CÚ¡ruùÜ +()) + +106 +$»ad” + = +$»æeùÜ +-> + `ÃwIn¡ªûArgs +( +$¥ec +['constructor']); + +110 +$»ad” + = +$»æeùÜ +-> + `ÃwIn¡ªû +(); + +112 +$this +-> +_lßded +[ +$·‰”n +] = +$»ad” +; + +114  +$this +-> +_lßded +[ +$·‰”n +]; + +117 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterStream.php + +1 + `£tCh¬aù”R—d”FaùÜy +( +$çùÜy +); + +59 +$this +-> + `£tCh¬aù”S‘ +( +$ch¬£t +); + +66 +public + +funùiÚ + + $£tCh¬aù”S‘ +( +$ch¬£t +) + +68 +$this +-> +_ch¬£t + = +$ch¬£t +; + +69 +$this +-> +_ch¬R—d” + = +nuÎ +; + +70 + } +} + +76 +public + +funùiÚ + + $£tCh¬aù”R—d”FaùÜy +( + +77 +Swiá_Ch¬aù”R—d”FaùÜy + +$çùÜy +) + +79 +$this +-> +_ch¬R—d”FaùÜy + = +$çùÜy +; + +80 + } +} + +86 +public + +funùiÚ + + $impÜtBy‹SŒ—m +( +Swiá_OuutBy‹SŒ—m + +$os +) + +88 ià(! + `is£t +( +$this +-> +_ch¬R—d” +)) + +90 +$this +-> +_ch¬R—d” + = $this-> +_ch¬R—d”FaùÜy + + +91 -> + `g‘R—d”FÜ +( +$this +-> +_ch¬£t +); + +94 +$¡¬tL’gth + = +$this +-> +_ch¬R—d” +-> + `g‘In™ŸlBy‹Size +(); + +95  +çl£ + !=ð +$by‹s + = +$os +-> + `»ad +( +$¡¬tL’gth +)) + +97 +$c + = + `¬¿y +(); + +98  +$i + = 0, +$Ën + = + `¡¾’ +( +$by‹s +); $i < $len; ++$i) + +100 +$c +[] = +£lf +:: +$_by‹M­ +[ +$by‹s +[ +$i +]]; + +102 +$size + = + `couÁ +( +$c +); + +103 +$Ãed + = +$this +-> +_ch¬R—d” + + +104 -> + `v®id©eBy‹Sequ’û +( +$c +, +$size +); + +105 ià( +$Ãed + > 0 && + +106 +çl£ + !=ð +$by‹s + = +$os +-> + `»ad +( +$Ãed +)) + +108  +$i + = 0, +$Ën + = + `¡¾’ +( +$by‹s +); $i < $len; ++$i) + +110 +$c +[] = +£lf +:: +$_by‹M­ +[ +$by‹s +[ +$i +]]; + +113 +$this +-> +_¬¿y +[] = +$c +; + +114 ++ +$this +-> +_¬¿y_size +; + +116 + } +} + +123 +public + +funùiÚ + + $impÜtSŒšg +( +$¡ršg +) + +125 +$this +-> + `æushCڋÁs +(); + +126 +$this +-> + `wr™e +( +$¡ršg +); + +127 + } +} + +135 +public + +funùiÚ + + $»ad +( +$Ëngth +) + +137 ià( +$this +-> +_off£t + =ð$this-> +_¬¿y_size +) + +139  +çl£ +; + +143 +$¬¿ys + = + `¬¿y +(); + +144 +$’d + = +$Ëngth + + +$this +-> +_off£t +; + +145  +$i + = +$this +-> +_off£t +; $˜< +$’d +; ++$i) + +147 ià(! + `is£t +( +$this +-> +_¬¿y +[ +$i +])) + +151 +$¬¿ys +[] = +$this +-> +_¬¿y +[ +$i +]; + +153 +$this +-> +_off£t + +ð +$i + - $this->_offset; + +154 +$ch¬s + = +çl£ +; + +155 + `fܗch + ( +$¬¿ys + +as + +$¬¿y +) + +157 +$ch¬s + .ð + `im¶ode +('', + `¬¿y_m­ +('chr', +$¬¿y +)); + +159  +$ch¬s +; + +160 + } +} + +168 +public + +funùiÚ + + $»adBy‹s +( +$Ëngth +) + +170 ià( +$this +-> +_off£t + =ð$this-> +_¬¿y_size +) + +172  +çl£ +; + +174 +$¬¿ys + = + `¬¿y +(); + +175 +$’d + = +$Ëngth + + +$this +-> +_off£t +; + +176  +$i + = +$this +-> +_off£t +; $˜< +$’d +; ++$i) + +178 ià(! + `is£t +( +$this +-> +_¬¿y +[ +$i +])) + +182 +$¬¿ys +[] = +$this +-> +_¬¿y +[ +$i +]; + +184 +$this +-> +_off£t + +ð( +$i + - $this->_offset); + +185  + `ÿÎ_u£r_func_¬¿y +('¬¿y_m”ge', +$¬¿ys +); + +186 + } +} + +192 +public + +funùiÚ + + $wr™e +( +$ch¬s +) + +194 ià(! + `is£t +( +$this +-> +_ch¬R—d” +)) + +196 +$this +-> +_ch¬R—d” + = $this-> +_ch¬R—d”FaùÜy +-> + `g‘R—d”FÜ +( + +197 +$this +-> +_ch¬£t +); + +200 +$¡¬tL’gth + = +$this +-> +_ch¬R—d” +-> + `g‘In™ŸlBy‹Size +(); + +202 +$å + = + `fݒ +('php://memory', 'w+b'); + +203 + `fwr™e +( +$å +, +$ch¬s +); + +204 + `un£t +( +$ch¬s +); + +205 + `f£ek +( +$å +, 0, +SEEK_SET +); + +207 +$bufãr + = + `¬¿y +(0); + +208 +$buf_pos + = 1; + +209 +$buf_Ën + = 1; + +210 +$has_d©as + = +Œue +; + +213 +$by‹s + = + `¬¿y +(); + +215 ià( +$buf_Ën + - +$buf_pos + < +$¡¬tL’gth +) + +217 +$buf + = + `¬¿y_¥liû +( +$bufãr +, +$buf_pos +); + +218 +$Ãw + = +$this +-> + `_»lßdBufãr +( +$å +, 100); + +219 ià( +$Ãw +) + +221 +$bufãr + = + `¬¿y_m”ge +( +$buf +, +$Ãw +); + +222 +$buf_Ën + = + `couÁ +( +$bufãr +); + +223 +$buf_pos + = 0; + +227 +$has_d©as + = +çl£ +; + +230 ià( +$buf_Ën + - +$buf_pos + > 0) + +232 +$size + = 0; + +233  +$i + = 0; $˜< +$¡¬tL’gth + && + `is£t +( +$bufãr +[ +$buf_pos +]); ++$i) + +235 ++ +$size +; + +236 +$by‹s +[] = +$bufãr +[ +$buf_pos +++]; + +238 +$Ãed + = +$this +-> +_ch¬R—d” +-> + `v®id©eBy‹Sequ’û +( + +239 +$by‹s +, +$size +); + +240 ià( +$Ãed + > 0) + +242 ià( +$buf_Ën + - +$buf_pos + < +$Ãed +) + +244 +$Ãw + = +$this +-> + `_»lßdBufãr +( +$å +, +$Ãed +); + +246 ià( +$Ãw +) + +248 +$bufãr + = + `¬¿y_m”ge +($bufãr, +$Ãw +); + +249 +$buf_Ën + = + `couÁ +( +$bufãr +); + +252  +$i + = 0; $˜< +$Ãed + && + `is£t +( +$bufãr +[ +$buf_pos +]); ++$i) + +254 +$by‹s +[] = +$bufãr +[ +$buf_pos +++]; + +257 +$this +-> +_¬¿y +[] = +$by‹s +; + +258 ++ +$this +-> +_¬¿y_size +; + +261  +$has_d©as +); + +263 + `fþo£ +( +$å +); + +264 + } +} + +270 +public + +funùiÚ + + $£tPoš‹r +( +$ch¬Off£t +) + +272 ià( +$ch¬Off£t + > +$this +-> +_¬¿y_size +) + +274 +$ch¬Off£t + = +$this +-> +_¬¿y_size +; + +276 + `–£if + ( +$ch¬Off£t + < 0) + +278 +$ch¬Off£t + = 0; + +280 +$this +-> +_off£t + = +$ch¬Off£t +; + +281 + } +} + +286 +public + +funùiÚ + + $æushCڋÁs +() + +288 +$this +-> +_off£t + = 0; + +289 +$this +-> +_¬¿y + = + `¬¿y +(); + +290 +$this +-> +_¬¿y_size + = 0; + +291 + } +} + +293 +´iv©e + +funùiÚ + + $_»lßdBufãr +( +$å +, +$Ën +) + +295 ià(! + `ãof +( +$å +è&& ( +$by‹s + = + `ä—d +($å, +$Ën +)è!=ð +çl£ +) + +297 +$buf + = + `¬¿y +(); + +298  +$i + = 0, +$Ën + = + `¡¾’ +( +$by‹s +); $i < $len; ++$i) + +300 +$buf +[] = +£lf +:: +$_by‹M­ +[ +$by‹s +[ +$i +]]; + +302  +$buf +; + +304  +çl£ +; + +305 + } +} + +307 +´iv©e +  +funùiÚ + + $_š™ŸlizeM­s +() + +309 ià(! + `is£t +( +£lf +:: +$_ch¬M­ +)) + +311 +£lf +:: +$_ch¬M­ + = + `¬¿y +(); + +312  +$by‹ + = 0; $byte < 256; ++$byte) + +314 +£lf +:: +$_ch¬M­ +[ +$by‹ +] = + `chr +($byte); + +316 +£lf +:: +$_by‹M­ + = + `¬¿y_æ +(£lf:: +$_ch¬M­ +); + +318 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterStream/NgCharacterStream.php + +1 +£tCh¬aù”R—d”FaùÜy +( +$çùÜy +); + +109 + g$this +-> +£tCh¬aù”S‘ +( +$ch¬£t +); + +118 +public + +funùiÚ + +£tCh¬aù”S‘ +( +$ch¬£t +) + +120 + g$this +-> + g_ch¬£t + = +$ch¬£t +; + +121 + g$this +-> + g_ch¬R—d” + = +nuÎ +; + +122 + g$this +-> + g_m­Ty³ + = 0; + +129 +public + +funùiÚ + +£tCh¬aù”R—d”FaùÜy +( + +130 +Swiá_Ch¬aù”R—d”FaùÜy + +$çùÜy +) + +132 + g$this +-> + g_ch¬R—d”FaùÜy + = +$çùÜy +; + +139 +public + +funùiÚ + +æushCڋÁs +() + +141 + g$this +-> + g_d©as + = +nuÎ +; + +142 + g$this +-> + g_m­ + = +nuÎ +; + +143 + g$this +-> + g_ch¬CouÁ + = 0; + +144 + g$this +-> + g_cu¼’tPos + = 0; + +145 + g$this +-> + g_d©asSize + = 0; + +153 +public + +funùiÚ + +impÜtBy‹SŒ—m +( +Swiá_OuutBy‹SŒ—m + +$os +) + +155 + g$this +-> +æushCڋÁs +(); + +156 + g$blocks +=512; + +157 + g$os +-> +£tR—dPoš‹r +(0); + +158  + gçl£ +!==( +$»ad + = +$os +-> +»ad +( +$blocks +))) + +159 +$this +-> +wr™e +( +$»ad +); + +167 +public + +funùiÚ + +impÜtSŒšg +( +$¡ršg +) + +169 + g$this +-> +æushCڋÁs +(); + +170 + g$this +-> +wr™e +( +$¡ršg +); + +179 +public + +funùiÚ + +»ad +( +$Ëngth +) + +181 ià( + g$this +-> + g_cu¼’tPos +>= +$this +-> +_ch¬CouÁ +) + +183  +çl£ +; + +185 + g$»t += +çl£ +; + +186 + g$Ëngth + = ( +$this +-> +_cu¼’tPos ++ +$Ëngth + > $this-> +_ch¬CouÁ +) + +187 ? +$this +-> +_ch¬CouÁ + - $this-> +_cu¼’tPos + + +188 : +$Ëngth +; + +189  + g$this +-> + g_m­Ty³ +) + +191  + gSwiá_Ch¬aù”R—d” +:: +MAP_TYPE_FIXED_LEN +: + +192 +$Ën + = +$Ëngth +* +$this +-> +_m­ +; + +193 + g$»t + = +sub¡r +( +$this +-> +_d©as +, + +194 +$this +-> +_cu¼’tPos + * $this-> +_m­ +, + +195 +$Ën +); + +196 + g$this +-> + g_cu¼’tPos + +ð +$Ëngth +; + +199  + gSwiá_Ch¬aù”R—d” +:: +MAP_TYPE_INVALID +: + +200 +$’d + = +$this +-> +_cu¼’tPos + + +$Ëngth +; + +201 + g$’d + = +$’d + > +$this +-> +_ch¬CouÁ + + +202 ? +$this +-> +_ch¬CouÁ + + +203 : +$’d +; + +204 + g$»t + = ''; + +205 ; + g$this +-> + g_cu¼’tPos + < + g$Ëngth +; ++$this->_currentPos) + +207 ià( +is£t + ( +$this +-> +_m­ +[$this-> +_cu¼’tPos +])) + +209 + g$»t + .= '?'; + +213 + g$»t + .ð +$this +-> +_d©as +[$this-> +_cu¼’tPos +]; + +218  + gSwiá_Ch¬aù”R—d” +:: +MAP_TYPE_POSITIONS +: + +219 +$’d + = +$this +-> +_cu¼’tPos + + +$Ëngth +; + +220 + g$’d + = +$’d + > +$this +-> +_ch¬CouÁ + + +221 ? +$this +-> +_ch¬CouÁ + + +222 : +$’d +; + +223 + g$»t + = ''; + +224 + g$¡¬t + = 0; + +225 ià( + g$this +-> + g_cu¼’tPos +>0) + +227 + g$¡¬t + = +$this +-> +_m­ +['p'][$this-> +_cu¼’tPos +-1]; + +229 + g$to + = +$¡¬t +; + +230 ; + g$this +-> + g_cu¼’tPos + < + g$’d +; ++$this->_currentPos) + +232 ià( +is£t +( +$this +-> +_m­ +['i'][$this-> +_cu¼’tPos +])) { + +233 + g$»t + .ð +sub¡r +( +$this +-> +_d©as +, +$¡¬t +, +$to + - $start).'?'; + +234 + g$¡¬t + = +$this +-> +_m­ +['p'][$this-> +_cu¼’tPos +]; + +236 + g$to + = +$this +-> +_m­ +['p'][$this-> +_cu¼’tPos +]; + +239 + g$»t + .ð +sub¡r +( +$this +-> +_d©as +, +$¡¬t +, +$to + - $start); + +242  + g$»t +; + +251 +public + +funùiÚ + +»adBy‹s +( +$Ëngth +) + +253 + g$»ad += +$this +-> +»ad +( +$Ëngth +); + +254 ià( + g$»ad +!== +çl£ +) + +256 +$»t + = +¬¿y_m­ +('Üd', +¡r_¥l™ +( +$»ad +, 1)); + +257  + g$»t +; + +259  + gçl£ +; + +267 +public + +funùiÚ + +£tPoš‹r +( +$ch¬Off£t +) + +269 ià( + g$this +-> + g_ch¬CouÁ +< + g$ch¬Off£t +){ + +270 + g$ch¬Off£t += +$this +-> +_ch¬CouÁ +; + +272 + g$this +-> + g_cu¼’tPos + = +$ch¬Off£t +; + +280 +public + +funùiÚ + +wr™e +( +$ch¬s +) + +282 ià(! +is£t +( +$this +-> +_ch¬R—d” +)) + +284 + g$this +-> + g_ch¬R—d” + = +$this +-> +_ch¬R—d”FaùÜy +-> +g‘R—d”FÜ +( + +285 +$this +-> +_ch¬£t +); + +286 + g$this +-> + g_m­ + = +¬¿y +(); + +287 + g$this +-> + g_m­Ty³ + = +$this +-> +_ch¬R—d” +-> +g‘M­Ty³ +(); + +289 + g$ignÜed +=''; + +290 + g$this +-> + g_d©as + .ð +$ch¬s +; + +291 + g$this +-> + g_ch¬CouÁ + +ð +$this +-> +_ch¬R—d” +-> +g‘Ch¬Pos™iÚs +( +sub¡r +($this-> +_d©as +, $this-> +_d©asSize +), $this->_d©asSize, $this-> +_m­ +, +$ignÜed +); + +292 ià( + g$ignÜed +!== +çl£ +) { + +293 +$this +-> +_d©asSize += +¡¾’ +($this-> +_d©as +)-¡¾’( +$ignÜed +); + +297 + g$this +-> + g_d©asSize += +¡¾’ +( +$this +-> +_d©as +); + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/ConfigurableSpool.php + +1 +_mes§ge_lim™ + = (è +$lim™ +; + +37 +public + +funùiÚ + + $g‘Mes§geLim™ +() + +39  +$this +-> +_mes§ge_lim™ +; + +40 + } +} + +46 +public + +funùiÚ + + $£tTimeLim™ +( +$lim™ +) + +48 +$this +-> +_time_lim™ + = (è +$lim™ +; + +49 + } +} + +55 +public + +funùiÚ + + $g‘TimeLim™ +() + +57  +$this +-> +_time_lim™ +; + +58 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/DependencyContainer.php + +1 +_¡Üe +); + +68 + } +} + +76 +public + +funùiÚ + + $has +( +$™emName +) + +78  + `¬¿y_key_exi¡s +( +$™emName +, +$this +-> +_¡Üe +) + +79 && + `is£t +( +$this +-> +_¡Üe +[ +$™emName +]['lookupType']); + +80 + } +} + +89 +public + +funùiÚ + + $lookup +( +$™emName +) + +91 ià(! +$this +-> + `has +( +$™emName +)) + +93 +throw + +Ãw + + `Swiá_D•’d’cyExû±iÚ +( + +94 'Cªnنooku°d•’d’cy "' . +$™emName + . '" since it is‚ot„egistered.' + +98  +$this +-> +_¡Üe +[ +$™emName +]['lookupType']) + +100  +£lf +:: +TYPE_ALIAS +: + +101  +$this +-> + `_ü—‹AlŸs +( +$™emName +); + +102  +£lf +:: +TYPE_VALUE +: + +103  +$this +-> + `_g‘V®ue +( +$™emName +); + +104  +£lf +:: +TYPE_INSTANCE +: + +105  +$this +-> + `_ü—‹NewIn¡ªû +( +$™emName +); + +106  +£lf +:: +TYPE_SHARED +: + +107  +$this +-> + `_ü—‹Sh¬edIn¡ªû +( +$™emName +); + +109 + } +} + +116 +public + +funùiÚ + + $ü—‹D•’d’c›sFÜ +( +$™emName +) + +118 +$¬gs + = + `¬¿y +(); + +119 ià( + `is£t +( +$this +-> +_¡Üe +[ +$™emName +]['args'])) + +121 +$¬gs + = +$this +-> + `_»sÞveArgs +($this-> +_¡Üe +[ +$™emName +]['args']); + +123  +$¬gs +; + +124 + } +} + +136 +public + +funùiÚ + ( +$™emName +) + +138 +$this +-> +_¡Üe +[ +$™emName +] = + `¬¿y +(); + +139 +$this +-> +_’dPošt + =& $this-> +_¡Üe +[ +$™emName +]; + +140  +$this +; + +141 + } +} + +150 +public + +funùiÚ + + $asV®ue +( +$v®ue +) + +152 +$’dPošt + =& +$this +-> + `_g‘EndPošt +(); + +153 +$’dPošt +['lookupTy³'] = +£lf +:: +TYPE_VALUE +; + +154 +$’dPošt +['v®ue'] = +$v®ue +; + +155  +$this +; + +156 + } +} + +163 +public + +funùiÚ + + $asAlŸsOf +( +$lookup +) + +165 +$’dPošt + =& +$this +-> + `_g‘EndPošt +(); + +166 +$’dPošt +['lookupTy³'] = +£lf +:: +TYPE_ALIAS +; + +167 +$’dPošt +['»f'] = +$lookup +; + +168  +$this +; + +169 + } +} + +181 +public + +funùiÚ + + $asNewIn¡ªûOf +( +$þassName +) + +183 +$’dPošt + =& +$this +-> + `_g‘EndPošt +(); + +184 +$’dPošt +['lookupTy³'] = +£lf +:: +TYPE_INSTANCE +; + +185 +$’dPošt +['þassName'] = +$þassName +; + +186  +$this +; + +187 + } +} + +195 +public + +funùiÚ + + $asSh¬edIn¡ªûOf +( +$þassName +) + +197 +$’dPošt + =& +$this +-> + `_g‘EndPošt +(); + +198 +$’dPošt +['lookupTy³'] = +£lf +:: +TYPE_SHARED +; + +199 +$’dPošt +['þassName'] = +$þassName +; + +200  +$this +; + +201 + } +} + +211 +public + +funùiÚ + + $w™hD•’d’c›s +( +¬¿y + +$lookups +) + +213 +$’dPošt + =& +$this +-> + `_g‘EndPošt +(); + +214 +$’dPošt +['¬gs'] = + `¬¿y +(); + +215 + `fܗch + ( +$lookups + +as + +$lookup +) + +217 +$this +-> + `addCÚ¡ruùÜLookup +( +$lookup +); + +219  +$this +; + +220 + } +} + +230 +public + +funùiÚ + + $addCÚ¡ruùÜV®ue +( +$v®ue +) + +232 +$’dPošt + =& +$this +-> + `_g‘EndPošt +(); + +233 ià(! + `is£t +( +$’dPošt +['args'])) + +235 +$’dPošt +['¬gs'] = + `¬¿y +(); + +237 +$’dPošt +['¬gs'][] = + `¬¿y +('ty³' => 'v®ue', '™em' => +$v®ue +); + +238  +$this +; + +239 + } +} + +249 +public + +funùiÚ + + $addCÚ¡ruùÜLookup +( +$lookup +) + +251 +$’dPošt + =& +$this +-> + `_g‘EndPošt +(); + +252 ià(! + `is£t +( +$this +-> +_’dPošt +['args'])) + +254 +$’dPošt +['¬gs'] = + `¬¿y +(); + +256 +$’dPošt +['¬gs'][] = + `¬¿y +('ty³' => 'lookup', '™em' => +$lookup +); + +257  +$this +; + +258 + } +} + +263 +´iv©e + +funùiÚ + + $_g‘V®ue +( +$™emName +) + +265  +$this +-> +_¡Üe +[ +$™emName +]['value']; + +266 + } +} + +269 +´iv©e + +funùiÚ + + $_ü—‹AlŸs +( +$™emName +) + +271  +$this +-> + `lookup +($this-> +_¡Üe +[ +$™emName +]['ref']); + +272 + } +} + +275 +´iv©e + +funùiÚ + + $_ü—‹NewIn¡ªû +( +$™emName +) + +277 +$»æeùÜ + = +Ãw + + `ReæeùiÚCÏss +( +$this +-> +_¡Üe +[ +$™emName +]['className']); + +278 ià( +$»æeùÜ +-> + `g‘CÚ¡ruùÜ +()) + +280  +$»æeùÜ +-> + `ÃwIn¡ªûArgs +( + +281 +$this +-> + `ü—‹D•’d’c›sFÜ +( +$™emName +) + +286  +$»æeùÜ +-> + `ÃwIn¡ªû +(); + +288 + } +} + +291 +´iv©e + +funùiÚ + + $_ü—‹Sh¬edIn¡ªû +( +$™emName +) + +293 ià(! + `is£t +( +$this +-> +_¡Üe +[ +$™emName +]['instance'])) + +295 +$this +-> +_¡Üe +[ +$™emName +]['š¡ªû'] = $this-> + `_ü—‹NewIn¡ªû +($itemName); + +297  +$this +-> +_¡Üe +[ +$™emName +]['instance']; + +298 + } +} + +301 +´iv©e + + gfunùiÚ + & + $_g‘EndPošt +() + +303 ià(! + `is£t +( +$this +-> +_’dPošt +)) + +305 +throw + +Ãw + + `BadM‘hodC®lExû±iÚ +( + +309  +$this +-> +_’dPošt +; + +310 + } +} + +313 +´iv©e + +funùiÚ + + $_»sÞveArgs +( +¬¿y + +$¬gs +) + +315 +$»sÞved + = + `¬¿y +(); + +316 + `fܗch + ( +$¬gs + +as + +$¬gDefš™iÚ +) + +318  +$¬gDefš™iÚ +['type']) + +321 +$»sÞved +[] = +$this +-> + `_lookupRecursive +( +$¬gDefš™iÚ +['item']); + +324 +$»sÞved +[] = +$¬gDefš™iÚ +['item']; + +328  +$»sÞved +; + +329 + } +} + +332 +´iv©e + +funùiÚ + + $_lookupRecursive +( +$™em +) + +334 ià( + `is_¬¿y +( +$™em +)) + +336 +$cÞËùiÚ + = + `¬¿y +(); + +337 + `fܗch + ( +$™em + +as + +$k + => +$v +) + +339 +$cÞËùiÚ +[ +$k +] = +$this +-> + `_lookupRecursive +( +$v +); + +341  +$cÞËùiÚ +; + +345  +$this +-> + `lookup +( +$™em +); + +347 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/DependencyException.php + +1 + `ü—‹D•’d’c›sFÜ +('mime.embeddedfile') + +40 +$this +-> + `£tBody +( +$d©a +); + +41 +$this +-> + `£tFž’ame +( +$fž’ame +); + +42 ià( +$cڋÁTy³ +) + +44 +$this +-> + `£tCڋÁTy³ +( +$cڋÁTy³ +); + +55 +public +  +funùiÚ + + $ÃwIn¡ªû +( +$d©a + = +nuÎ +, +$fž’ame + =‚ull, + +56 +$cڋÁTy³ + = +nuÎ +) + +58  +Ãw + + `£lf +( +$d©a +, +$fž’ame +, +$cڋÁTy³ +); + +59 + } +} + +66 +public +  +funùiÚ + + $äomP©h +( +$·th +) + +68  +£lf +:: + `ÃwIn¡ªû +()-> + `£tFže +( + +69 +Ãw + + `Swiá_By‹SŒ—m_FžeBy‹SŒ—m +( +$·th +) + +71 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Encoder.php + +1 ð +$maxLšeL’gth + || 76 < $maxLineLength) + +37 +$maxLšeL’gth + = 76; + +40 +$’codedSŒšg + = + `ba£64_’code +( +$¡ršg +); + +41 +$fœ¡Lše + = ''; + +43 ià(0 !ð +$fœ¡LšeOff£t +) + +45 +$fœ¡Lše + = + `sub¡r +( + +46 +$’codedSŒšg +, 0, +$maxLšeL’gth + - +$fœ¡LšeOff£t + + +48 +$’codedSŒšg + = + `sub¡r +( + +49 +$’codedSŒšg +, +$maxLšeL’gth + - +$fœ¡LšeOff£t + + +53  +$fœ¡Lše + . + `Œim +( + `chunk_¥l™ +( +$’codedSŒšg +, +$maxLšeL’gth +, "\r\n")); + +59 +public + +funùiÚ + + $ch¬£tChªged +( +$ch¬£t +) + +61 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Encoder/QpEncoder.php + +1 +_ch¬SŒ—m + = +$ch¬SŒ—m +; + +114 ià( + `em±y +( +£lf +:: +$_§ãM­ +)) + +116 + `fܗch + ( + `¬¿y_m”ge +( + +117 + `¬¿y +(0x09, 0x20), + `¿nge +(0x21, 0x3C),„ªge(0x3E, 0x7E)è +as + +$by‹ +) + +119 +£lf +:: +$_§ãM­ +[ +$by‹ +] = + `chr +($byte); + +122 +$this +-> +_fž‹r + = +$fž‹r +; + +135 +public + +funùiÚ + + $’codeSŒšg +( +$¡ršg +, +$fœ¡LšeOff£t + = 0, + +136 +$maxLšeL’gth + = 0) + +138 ià( +$maxLšeL’gth + > 76 || $maxLineLength <= 0) + +140 +$maxLšeL’gth + = 76; + +143 +$thisLšeL’gth + = +$maxLšeL’gth + - +$fœ¡LšeOff£t +; + +145 +$lšes + = + `¬¿y +(); + +146 +$lNo + = 0; + +147 +$lšes +[ +$lNo +] = ''; + +148 +$cu¼’tLše + =& +$lšes +[ +$lNo +++]; + +149 +$size += +$lšeL’ +=0; + +151 +$this +-> +_ch¬SŒ—m +-> + `æushCڋÁs +(); + +152 +$this +-> +_ch¬SŒ—m +-> + `impÜtSŒšg +( +$¡ršg +); + +157  +çl£ + !=ð +$by‹s + = +$this +-> + `_ÃxtSequ’û +()) + +160 ià( + `is£t +( +$this +-> +_fž‹r +)) + +163  +$this +-> +_fž‹r +-> + `shouldBufãr +( +$by‹s +)) + +166 ià( +çl£ + ==ð +$mÜeBy‹s + = +$this +-> + `_ÃxtSequ’û +(1)) + +171 + `fܗch + ( +$mÜeBy‹s + +as + +$b +) + +173 +$by‹s +[] = +$b +; + +177 +$by‹s + = +$this +-> +_fž‹r +-> + `fž‹r +($bytes); + +180 +$’c + = +$this +-> + `_’codeBy‹Sequ’û +( +$by‹s +, +$size +); + +181 ià( +$cu¼’tLše + && +$lšeL’ ++ +$size + >ð +$thisLšeL’gth +) + +183 +$lšes +[ +$lNo +] = ''; + +184 +$cu¼’tLše + =& +$lšes +[ +$lNo +++]; + +185 +$thisLšeL’gth + = +$maxLšeL’gth +; + +186 +$lšeL’ +=0; + +188 +$lšeL’ ++= +$size +; + +189 +$cu¼’tLše + .ð +$’c +; + +192  +$this +-> + `_¡ªd¬dize +( + `im¶ode +("=\r\n", +$lšes +)); + +193 + } +} + +199 +public + +funùiÚ + + $ch¬£tChªged +( +$ch¬£t +) + +201 +$this +-> +_ch¬SŒ—m +-> + `£tCh¬aù”S‘ +( +$ch¬£t +); + +202 + } +} + +212 +´Ùeùed + +funùiÚ + + $_’codeBy‹Sequ’û +( +¬¿y + +$by‹s +, & +$size +) + +214 +$»t + = ''; + +215 +$size +=0; + +216 + `fܗch + ( +$by‹s + +as + +$b +) + +218 ià( + `is£t +( +£lf +:: +$_§ãM­ +[ +$b +])) + +220 +$»t + .ð +£lf +:: +$_§ãM­ +[ +$b +]; + +221 ++ +$size +; + +225 +$»t + .ð +£lf +:: +$_qpM­ +[ +$b +]; + +226 +$size ++=3; + +229  +$»t +; + +230 + } +} + +238 +´Ùeùed + +funùiÚ + + $_ÃxtSequ’û +( +$size + = 4) + +240  +$this +-> +_ch¬SŒ—m +-> + `»adBy‹s +( +$size +); + +241 + } +} + +249 +´Ùeùed + +funùiÚ + + $_¡ªd¬dize +( +$¡ršg +) + +251 +$¡ršg + = + `¡r_»¶aû +( + `¬¿y +("\t=0D=0A", " =0D=0A", "=0D=0A"), + +252 + `¬¿y +("=09\r\n", "=20\r\n", "\r\n"), +$¡ršg + + +254  +$’d + = + `Üd +( + `sub¡r +( +$¡ršg +, -1))) + +258 +$¡ršg + = + `sub¡r_»¶aû +($¡ršg, +£lf +:: +$_qpM­ +[ +$’d +], -1); + +260  +$¡ršg +; + +261 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Encoder/Rfc2231Encoder.php + +1 +_ch¬SŒ—m + = +$ch¬SŒ—m +; + +47 +public + +funùiÚ + + $’codeSŒšg +( +$¡ršg +, +$fœ¡LšeOff£t + = 0, + +48 +$maxLšeL’gth + = 0) + +50 +$lšes + = + `¬¿y +(); +$lšeCouÁ + = 0; + +51 +$lšes +[] = ''; + +52 +$cu¼’tLše + =& +$lšes +[ +$lšeCouÁ +++]; + +54 ià(0 >ð +$maxLšeL’gth +) + +56 +$maxLšeL’gth + = 75; + +59 +$this +-> +_ch¬SŒ—m +-> + `æushCڋÁs +(); + +60 +$this +-> +_ch¬SŒ—m +-> + `impÜtSŒšg +( +$¡ršg +); + +62 +$thisLšeL’gth + = +$maxLšeL’gth + - +$fœ¡LšeOff£t +; + +64  +çl£ + !=ð +$ch¬ + = +$this +-> +_ch¬SŒ—m +-> + `»ad +(4)) + +66 +$’codedCh¬ + = + `¿wu¾’code +( +$ch¬ +); + +67 ià(0 !ð + `¡¾’ +( +$cu¼’tLše +) + +68 && + `¡¾’ +( +$cu¼’tLše + . +$’codedCh¬ +è> +$thisLšeL’gth +) + +70 +$lšes +[] = ''; + +71 +$cu¼’tLše + =& +$lšes +[ +$lšeCouÁ +++]; + +72 +$thisLšeL’gth + = +$maxLšeL’gth +; + +74 +$cu¼’tLše + .ð +$’codedCh¬ +; + +77  + `im¶ode +("\r\n", +$lšes +); + +78 + } +} + +84 +public + +funùiÚ + + $ch¬£tChªged +( +$ch¬£t +) + +86 +$this +-> +_ch¬SŒ—m +-> + `£tCh¬aù”S‘ +( +$ch¬£t +); + +87 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Encoding.php + +1 + `lookup +( +$key +); + +68 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/CommandEvent.php + +1 +_commªd + = +$commªd +; + +46 +$this +-> +_sucûssCodes + = +$sucûssCodes +; + +53 +public + +funùiÚ + + $g‘Commªd +() + +55  +$this +-> +_commªd +; + +56 + } +} + +62 +public + +funùiÚ + + $g‘SucûssCodes +() + +64  +$this +-> +_sucûssCodes +; + +65 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/CommandListener.php + +1 +_sourû + = +$sourû +; + +42 +public + +funùiÚ + + $g‘Sourû +() + +44  +$this +-> +_sourû +; + +45 + } +} + +51 +public + +funùiÚ + + $ÿnûlBubbË +( +$ÿnûl + = +Œue +) + +53 +$this +-> +_bubbËCªûÎed + = +$ÿnûl +; + +54 + } +} + +60 +public + +funùiÚ + + $bubbËCªûÎed +() + +62  +$this +-> +_bubbËCªûÎed +; + +63 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/ResponseEvent.php + +1 +_»¥Ú£ + = +$»¥Ú£ +; + +44 +$this +-> +_v®id + = +$v®id +; + +51 +public + +funùiÚ + + $g‘Re¥Ú£ +() + +53  +$this +-> +_»¥Ú£ +; + +54 + } +} + +60 +public + +funùiÚ + + $isV®id +() + +62  +$this +-> +_v®id +; + +63 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/ResponseListener.php + +1 +_mes§ge + = +$mes§ge +; + +68 +$this +-> +_»suÉ + = +£lf +:: +RESULT_PENDING +; + +75 +public + +funùiÚ + + $g‘T¿n¥Üt +() + +77  +$this +-> + `g‘Sourû +(); + +78 + } +} + +84 +public + +funùiÚ + + $g‘Mes§ge +() + +86  +$this +-> +_mes§ge +; + +87 + } +} + +93 +public + +funùiÚ + + $£tFažedRec›Ás +( +$»c›Ás +) + +95 +$this +-> +_çžedRec›Ás + = +$»c›Ás +; + +96 + } +} + +102 +public + +funùiÚ + + $g‘FažedRec›Ás +() + +104  +$this +-> +_çžedRec›Ás +; + +105 + } +} + +111 +public + +funùiÚ + + $£tResuÉ +( +$»suÉ +) + +113 +$this +-> +_»suÉ + = +$»suÉ +; + +114 + } +} + +122 +public + +funùiÚ + + $g‘ResuÉ +() + +124  +$this +-> +_»suÉ +; + +125 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/SendListener.php + +1 +_ev’tM­ + = + `¬¿y +( + +60 +public + +funùiÚ + + $ü—‹S’dEv’t +( +Swiá_T¿n¥Üt + +$sourû +, + +61 +Swiá_Mime_Mes§ge + +$mes§ge +) + +63  +Ãw + + `Swiá_Ev’ts_S’dEv’t +( +$sourû +, +$mes§ge +); + +64 + } +} + +74 +public + +funùiÚ + +ü—‹CommªdEv’t +( +Swiá_T¿n¥Üt + +$sourû +, + +75 +$commªd +, +$sucûssCodes + = + $¬¿y +()) + +77  +Ãw + + `Swiá_Ev’ts_CommªdEv’t +( +$sourû +, +$commªd +, +$sucûssCodes +); + +78 + } +} + +88 +public + +funùiÚ + + $ü—‹Re¥Ú£Ev’t +( +Swiá_T¿n¥Üt + +$sourû +, + +89 +$»¥Ú£ +, +$v®id +) + +91  +Ãw + + `Swiá_Ev’ts_Re¥Ú£Ev’t +( +$sourû +, +$»¥Ú£ +, +$v®id +); + +92 + } +} + +100 +public + +funùiÚ + + $ü—‹T¿n¥ÜtChªgeEv’t +( +Swiá_T¿n¥Üt + +$sourû +) + +102  +Ãw + + `Swiá_Ev’ts_T¿n¥ÜtChªgeEv’t +( +$sourû +); + +103 + } +} + +112 +public + +funùiÚ + + $ü—‹T¿n¥ÜtExû±iÚEv’t +( +Swiá_T¿n¥Üt + +$sourû +, + +113 +Swiá_T¿n¥ÜtExû±iÚ + +$ex +) + +115  +Ãw + + `Swiá_Ev’ts_T¿n¥ÜtExû±iÚEv’t +( +$sourû +, +$ex +); + +116 + } +} + +123 +public + +funùiÚ + + $bšdEv’tLi¡’” +( +Swiá_Ev’ts_Ev’tLi¡’” + +$li¡’” +) + +125 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$l +) + +128 ià( +$l + ==ð +$li¡’” +) + +133 +$this +-> +_li¡’”s +[] = +$li¡’” +; + +134 + } +} + +142 +public + +funùiÚ + + $di¥©chEv’t +( +Swiá_Ev’ts_Ev’tObjeù + +$evt +, +$rg‘ +) + +144 +$this +-> + `_´•¬eBubbËQueue +( +$evt +); + +145 +$this +-> + `_bubbË +( +$evt +, +$rg‘ +); + +146 + } +} + +151 +´iv©e + +funùiÚ + + $_´•¬eBubbËQueue +( +Swiá_Ev’ts_Ev’tObjeù + +$evt +) + +153 +$this +-> +_bubbËQueue + = + `¬¿y +(); + +154 +$evtCÏss + = + `g‘_þass +( +$evt +); + +155 + `fܗch + ( +$this +-> +_li¡’”s + +as + +$li¡’” +) + +157 ià( + `¬¿y_key_exi¡s +( +$evtCÏss +, +$this +-> +_ev’tM­ +) + +158 && ( +$li¡’” + +š¡ªûof + +$this +-> +_ev’tM­ +[ +$evtCÏss +])) + +160 +$this +-> +_bubbËQueue +[] = +$li¡’” +; + +163 + } +} + +166 +´iv©e + +funùiÚ + + $_bubbË +( +Swiá_Ev’ts_Ev’tObjeù + +$evt +, +$rg‘ +) + +168 ià(! +$evt +-> + `bubbËCªûÎed +(è&& +$li¡’” + = + `¬¿y_shiá +( +$this +-> +_bubbËQueue +)) + +170 +$li¡’” +-> + `$rg‘ +( +$evt +); + +171 +$this +-> + `_bubbË +( +$evt +, +$rg‘ +); + +173 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/TransportChangeEvent.php + +1 + `g‘Sourû +(); + +31 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/TransportChangeListener.php + +1 +_exû±iÚ + = +$ex +; + +45 +public + +funùiÚ + + $g‘Exû±iÚ +() + +47  +$this +-> +_exû±iÚ +; + +48 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/TransportExceptionListener.php + +1 + `ü—‹D•’d’c›sFÜ +('transport.failover') + +35 +$this +-> + `£tT¿n¥Üts +( +$Œª¥Üts +); + +43 +public +  +funùiÚ + + `ÃwIn¡ªû +( +$Œª¥Üts + = + $¬¿y +()) + +45  +Ãw + + `£lf +( +$Œª¥Üts +); + +46 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/FileSpool.php + +1 +_·th + = +$·th +; + +29 ià(! + `fže_exi¡s +( +$this +-> +_·th +)) + +31 + `mkdœ +( +$this +-> +_·th +, 0777, +Œue +); + +40 +public + +funùiÚ + + $isS¹ed +() + +42  +Œue +; + +43 + } +} + +48 +public + +funùiÚ + + $¡¬t +() + +50 + } +} + +55 +public + +funùiÚ + + $¡Ý +() + +57 + } +} + +63 +public + +funùiÚ + + $queueMes§ge +( +Swiá_Mime_Mes§ge + +$mes§ge +) + +65 +$£r + = + `£rŸlize +( +$mes§ge +); + +67 + `fže_put_cڋÁs +( +$this +-> +_·th +.'/'. + `md5 +( +$£r +. + `uniqid +()).'.message', $ser); + +68 + } +} + +78 +public + +funùiÚ + + $æushQueue +( +Swiá_T¿n¥Üt + +$Œª¥Üt +, & +$çžedRec›Ás + = +nuÎ +) + +80 ià(! +$Œª¥Üt +-> + `isS¹ed +()) + +82 +$Œª¥Üt +-> + `¡¬t +(); + +85 +$çžedRec›Ás + = ( +¬¿y +) $failedRecipients; + +86 +$couÁ + = 0; + +87 +$time + = + `time +(); + +88 + `fܗch + ( +Ãw + + `DœeùÜyI‹¿tÜ +( +$this +-> +_·th +è +as + +$fže +) + +90 +$fže + = $fže-> + `g‘R—lP©h +(); + +92 ià(! + `¡½os +( +$fže +, '.message')) + +97 +$mes§ge + = + `un£rŸlize +( + `fže_g‘_cڋÁs +( +$fže +)); + +99 +$couÁ + +ð +$Œª¥Üt +-> + `£nd +( +$mes§ge +, +$çžedRec›Ás +); + +101 + `uƚk +( +$fže +); + +103 ià( +$this +-> + `g‘Mes§geLim™ +(è&& +$couÁ + >= $this->getMessageLimit()) + +108 ià( +$this +-> + `g‘TimeLim™ +(è&& ( + `time +(è- +$time +) >= $this->getTimeLimit()) + +114  +$couÁ +; + +115 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/FileStream.php + +1 + `£tFže +( + +57 +Ãw + + `Swiá_By‹SŒ—m_FžeBy‹SŒ—m +( +$·th +) + +59  +$image +; + +60 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/InputByteStream.php + +1 +_¡»am + = +$¡»am +; + +58 +public + +funùiÚ + + $£tSŒšg +( +$nsKey +, +$™emKey +, +$¡ršg +, +$mode +) + +60 +$this +-> + `_´•¬eCache +( +$nsKey +); + +61  +$mode +) + +63  +£lf +:: +MODE_WRITE +: + +64 +$this +-> +_cڋÁs +[ +$nsKey +][ +$™emKey +] = +$¡ršg +; + +66  +£lf +:: +MODE_APPEND +: + +67 ià(! +$this +-> + `hasKey +( +$nsKey +, +$™emKey +)) + +69 +$this +-> +_cڋÁs +[ +$nsKey +][ +$™emKey +] = ''; + +71 +$this +-> +_cڋÁs +[ +$nsKey +][ +$™emKey +] .ð +$¡ršg +; + +74 +throw + +Ãw + + `Swiá_SwiáExû±iÚ +( + +75 'Inv®id mod[' . +$mode + . '] usedo set‚sKey='. + +76 +$nsKey + . ', i‹mKey=' . +$™emKey + + +79 + } +} + +89 +public + +funùiÚ + + $impÜtFromBy‹SŒ—m +( +$nsKey +, +$™emKey +, +Swiá_OuutBy‹SŒ—m + +$os +, + +90 +$mode +) + +92 +$this +-> + `_´•¬eCache +( +$nsKey +); + +93  +$mode +) + +95  +£lf +:: +MODE_WRITE +: + +96 +$this +-> + `þ—rKey +( +$nsKey +, +$™emKey +); + +97  +£lf +:: +MODE_APPEND +: + +98 ià(! +$this +-> + `hasKey +( +$nsKey +, +$™emKey +)) + +100 +$this +-> +_cڋÁs +[ +$nsKey +][ +$™emKey +] = ''; + +102  +çl£ + !=ð +$by‹s + = +$os +-> + `»ad +(8192)) + +104 +$this +-> +_cڋÁs +[ +$nsKey +][ +$™emKey +] .ð +$by‹s +; + +108 +throw + +Ãw + + `Swiá_SwiáExû±iÚ +( + +109 'Inv®id mod[' . +$mode + . '] usedo set‚sKey='. + +110 +$nsKey + . ', i‹mKey=' . +$™emKey + + +113 + } +} + +122 +public + +funùiÚ + + $g‘IÅutBy‹SŒ—m +( +$nsKey +, +$™emKey +, + +123 +Swiá_IÅutBy‹SŒ—m + +$wr™eThrough + = +nuÎ +) + +125 +$is + = +þÚe + +$this +-> +_¡»am +; + +126 +$is +-> + `£tKeyCache +( +$this +); + +127 +$is +-> + `£tNsKey +( +$nsKey +); + +128 +$is +-> + `£tI‹mKey +( +$™emKey +); + +129 ià( + `is£t +( +$wr™eThrough +)) + +131 +$is +-> + `£tWr™eThroughSŒ—m +( +$wr™eThrough +); + +133  +$is +; + +134 + } +} + +142 +public + +funùiÚ + + $g‘SŒšg +( +$nsKey +, +$™emKey +) + +144 +$this +-> + `_´•¬eCache +( +$nsKey +); + +145 ià( +$this +-> + `hasKey +( +$nsKey +, +$™emKey +)) + +147  +$this +-> +_cڋÁs +[ +$nsKey +][ +$™emKey +]; + +149 + } +} + +157 +public + +funùiÚ + + $expÜtToBy‹SŒ—m +( +$nsKey +, +$™emKey +, +Swiá_IÅutBy‹SŒ—m + +$is +) + +159 +$this +-> + `_´•¬eCache +( +$nsKey +); + +160 +$is +-> + `wr™e +( +$this +-> + `g‘SŒšg +( +$nsKey +, +$™emKey +)); + +161 + } +} + +169 +public + +funùiÚ + + $hasKey +( +$nsKey +, +$™emKey +) + +171 +$this +-> + `_´•¬eCache +( +$nsKey +); + +172  + `¬¿y_key_exi¡s +( +$™emKey +, +$this +-> +_cڋÁs +[ +$nsKey +]); + +173 + } +} + +180 +public + +funùiÚ + + $þ—rKey +( +$nsKey +, +$™emKey +) + +182 + `un£t +( +$this +-> +_cڋÁs +[ +$nsKey +][ +$™emKey +]); + +183 + } +} + +189 +public + +funùiÚ + + $þ—rAÎ +( +$nsKey +) + +191 + `un£t +( +$this +-> +_cڋÁs +[ +$nsKey +]); + +192 + } +} + +201 +´iv©e + +funùiÚ + + $_´•¬eCache +( +$nsKey +) + +203 ià(! + `¬¿y_key_exi¡s +( +$nsKey +, +$this +-> +_cڋÁs +)) + +205 +$this +-> +_cڋÁs +[ +$nsKey +] = + `¬¿y +(); + +207 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/KeyCache/DiskKeyCache.php + +1 +_¡»am + = +$¡»am +; + +70 +$this +-> +_·th + = +$·th +; + +71 +$this +-> +_quÙes + = + `g‘_magic_quÙes_ruÁime +(); + +83 +public + +funùiÚ + + $£tSŒšg +( +$nsKey +, +$™emKey +, +$¡ršg +, +$mode +) + +85 +$this +-> + `_´•¬eCache +( +$nsKey +); + +86  +$mode +) + +88  +£lf +:: +MODE_WRITE +: + +89 +$å + = +$this +-> + `_g‘HªdË +( +$nsKey +, +$™emKey +, +£lf +:: +POSITION_START +); + +91  +£lf +:: +MODE_APPEND +: + +92 +$å + = +$this +-> + `_g‘HªdË +( +$nsKey +, +$™emKey +, +£lf +:: +POSITION_END +); + +95 +throw + +Ãw + + `Swiá_SwiáExû±iÚ +( + +96 'Inv®id mod[' . +$mode + . '] usedo set‚sKey='. + +97 +$nsKey + . ', i‹mKey=' . +$™emKey + + +101 + `fwr™e +( +$å +, +$¡ršg +); + +102 + } +} + +113 +public + +funùiÚ + + $impÜtFromBy‹SŒ—m +( +$nsKey +, +$™emKey +, +Swiá_OuutBy‹SŒ—m + +$os +, + +114 +$mode +) + +116 +$this +-> + `_´•¬eCache +( +$nsKey +); + +117  +$mode +) + +119  +£lf +:: +MODE_WRITE +: + +120 +$å + = +$this +-> + `_g‘HªdË +( +$nsKey +, +$™emKey +, +£lf +:: +POSITION_START +); + +122  +£lf +:: +MODE_APPEND +: + +123 +$å + = +$this +-> + `_g‘HªdË +( +$nsKey +, +$™emKey +, +£lf +:: +POSITION_END +); + +126 +throw + +Ãw + + `Swiá_SwiáExû±iÚ +( + +127 'Inv®id mod[' . +$mode + . '] usedo set‚sKey='. + +128 +$nsKey + . ', i‹mKey=' . +$™emKey + + +132  +çl£ + !=ð +$by‹s + = +$os +-> + `»ad +(8192)) + +134 + `fwr™e +( +$å +, +$by‹s +); + +136 + } +} + +145 +public + +funùiÚ + + $g‘IÅutBy‹SŒ—m +( +$nsKey +, +$™emKey +, + +146 +Swiá_IÅutBy‹SŒ—m + +$wr™eThrough + = +nuÎ +) + +148 +$is + = +þÚe + +$this +-> +_¡»am +; + +149 +$is +-> + `£tKeyCache +( +$this +); + +150 +$is +-> + `£tNsKey +( +$nsKey +); + +151 +$is +-> + `£tI‹mKey +( +$™emKey +); + +152 ià( + `is£t +( +$wr™eThrough +)) + +154 +$is +-> + `£tWr™eThroughSŒ—m +( +$wr™eThrough +); + +156  +$is +; + +157 + } +} + +166 +public + +funùiÚ + + $g‘SŒšg +( +$nsKey +, +$™emKey +) + +168 +$this +-> + `_´•¬eCache +( +$nsKey +); + +169 ià( +$this +-> + `hasKey +( +$nsKey +, +$™emKey +)) + +171 +$å + = +$this +-> + `_g‘HªdË +( +$nsKey +, +$™emKey +, +£lf +:: +POSITION_START +); + +172 ià( +$this +-> +_quÙes +) + +174 + `£t_magic_quÙes_ruÁime +(0); + +176 +$¡r + = ''; + +177 ! + `ãof +( +$å +è&& +çl£ + !=ð +$by‹s + = + `ä—d +($fp, 8192)) + +179 +$¡r + .ð +$by‹s +; + +181 ià( +$this +-> +_quÙes +) + +183 + `£t_magic_quÙes_ruÁime +(1); + +185  +$¡r +; + +187 + } +} + +195 +public + +funùiÚ + + $expÜtToBy‹SŒ—m +( +$nsKey +, +$™emKey +, +Swiá_IÅutBy‹SŒ—m + +$is +) + +197 ià( +$this +-> + `hasKey +( +$nsKey +, +$™emKey +)) + +199 +$å + = +$this +-> + `_g‘HªdË +( +$nsKey +, +$™emKey +, +£lf +:: +POSITION_START +); + +200 ià( +$this +-> +_quÙes +) + +202 + `£t_magic_quÙes_ruÁime +(0); + +204 ! + `ãof +( +$å +è&& +çl£ + !=ð +$by‹s + = + `ä—d +($fp, 8192)) + +206 +$is +-> + `wr™e +( +$by‹s +); + +208 ià( +$this +-> +_quÙes +) + +210 + `£t_magic_quÙes_ruÁime +(1); + +213 + } +} + +221 +public + +funùiÚ + + $hasKey +( +$nsKey +, +$™emKey +) + +223  + `is_fže +( +$this +-> +_·th + . '/' . +$nsKey + . '/' . +$™emKey +); + +224 + } +} + +231 +public + +funùiÚ + + $þ—rKey +( +$nsKey +, +$™emKey +) + +233 ià( +$this +-> + `hasKey +( +$nsKey +, +$™emKey +)) + +235 +$å + = +$this +-> + `_g‘HªdË +( +$nsKey +, +$™emKey +, +£lf +:: +POSITION_END +); + +236 + `fþo£ +( +$å +); + +237 + `uƚk +( +$this +-> +_·th + . '/' . +$nsKey + . '/' . +$™emKey +); + +239 + `un£t +( +$this +-> +_keys +[ +$nsKey +][ +$™emKey +]); + +240 + } +} + +246 +public + +funùiÚ + + $þ—rAÎ +( +$nsKey +) + +248 ià( + `¬¿y_key_exi¡s +( +$nsKey +, +$this +-> +_keys +)) + +250 + `fܗch + ( +$this +-> +_keys +[ +$nsKey +] +as + +$™emKey +=> +$nuÎ +) + +252 +$this +-> + `þ—rKey +( +$nsKey +, +$™emKey +); + +254 + `rmdœ +( +$this +-> +_·th + . '/' . +$nsKey +); + +255 + `un£t +( +$this +-> +_keys +[ +$nsKey +]); + +257 + } +} + +266 +´iv©e + +funùiÚ + + $_´•¬eCache +( +$nsKey +) + +268 +$ÿcheDœ + = +$this +-> +_·th + . '/' . +$nsKey +; + +269 ià(! + `is_dœ +( +$ÿcheDœ +)) + +271 ià(! + `mkdœ +( +$ÿcheDœ +)) + +273 +throw + +Ãw + + `Swiá_IoExû±iÚ +('FažedØü—‹ cachdœeùÜy ' . +$ÿcheDœ +); + +275 +$this +-> +_keys +[ +$nsKey +] = + `¬¿y +(); + +277 + } +} + +287 +´iv©e + +funùiÚ + + $_g‘HªdË +( +$nsKey +, +$™emKey +, +$pos™iÚ +) + +289 ià(! + `is£t +( +$this +-> +_keys +[ +$nsKey +]è|| ! + `¬¿y_key_exi¡s +( +$™emKey +, $this->_keys[$nsKey])) + +291 +$å + = + `fݒ +( +$this +-> +_·th + . '/' . +$nsKey + . '/' . +$™emKey +, 'w+b'); + +292 +$this +-> +_keys +[ +$nsKey +][ +$™emKey +] = +$å +; + +294 ià( +£lf +:: +POSITION_START + =ð +$pos™iÚ +) + +296 + `f£ek +( +$this +-> +_keys +[ +$nsKey +][ +$™emKey +], 0, +SEEK_SET +); + +300 + `f£ek +( +$this +-> +_keys +[ +$nsKey +][ +$™emKey +], 0, +SEEK_END +); + +302  +$this +-> +_keys +[ +$nsKey +][ +$™emKey +]; + +303 + } +} + +308 +public + +funùiÚ + + $__de¡ruù +() + +310 + `fܗch + ( +$this +-> +_keys + +as + +$nsKey +=> +$nuÎ +) + +312 +$this +-> + `þ—rAÎ +( +$nsKey +); + +314 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/KeyCache/KeyCacheInputStream.php + +1 +_keyCache + = +$keyCache +; + +49 +public + +funùiÚ + + $£tWr™eThroughSŒ—m +( +Swiá_IÅutBy‹SŒ—m + +$is +) + +51 +$this +-> +_wr™eThrough + = +$is +; + +52 + } +} + +59 +public + +funùiÚ + + $wr™e +( +$by‹s +, +Swiá_IÅutBy‹SŒ—m + +$is + = +nuÎ +) + +61 +$this +-> +_keyCache +-> + `£tSŒšg +( + +62 +$this +-> +_nsKey +, $this-> +_™emKey +, +$by‹s +, +Swiá_KeyCache +:: +MODE_APPEND + + +64 ià( + `is£t +( +$is +)) + +66 +$is +-> + `wr™e +( +$by‹s +); + +68 ià( + `is£t +( +$this +-> +_wr™eThrough +)) + +70 +$this +-> +_wr™eThrough +-> + `wr™e +( +$by‹s +); + +72 + } +} + +77 +public + +funùiÚ + + $comm™ +() + +79 + } +} + +84 +public + +funùiÚ + + $bšd +( +Swiá_IÅutBy‹SŒ—m + +$is +) + +86 + } +} + +91 +public + +funùiÚ + + $unbšd +( +Swiá_IÅutBy‹SŒ—m + +$is +) + +93 + } +} + +99 +public + +funùiÚ + + $æushBufãrs +() + +101 +$this +-> +_keyCache +-> + `þ—rKey +($this-> +_nsKey +, $this-> +_™emKey +); + +102 + } +} + +108 +public + +funùiÚ + + $£tNsKey +( +$nsKey +) + +110 +$this +-> +_nsKey + = +$nsKey +; + +111 + } +} + +117 +public + +funùiÚ + + $£tI‹mKey +( +$™emKey +) + +119 +$this +-> +_™emKey + = +$™emKey +; + +120 + } +} + +126 +public + +funùiÚ + + $__þÚe +() + +128 +$this +-> +_wr™eThrough + = +nuÎ +; + +129 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/LoadBalancedTransport.php + +1 + `ü—‹D•’d’c›sFÜ +('transport.loadbalanced') + +35 +$this +-> + `£tT¿n¥Üts +( +$Œª¥Üts +); + +43 +public +  +funùiÚ + + `ÃwIn¡ªû +( +$Œª¥Üts + = + $¬¿y +()) + +45  +Ãw + + `£lf +( +$Œª¥Üts +); + +46 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/MailTransport.php + +1 +ü—‹D•’d’c›sFÜ +('transport.mail') + +35 + m$this +-> +£tExŒaP¬ams +( +$exŒaP¬ams +); + +43 +public +  +funùiÚ + +ÃwIn¡ªû +( +$exŒaP¬ams + = '-f%s') + +45  +Ãw + +£lf +( +$exŒaP¬ams +); + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mailer.php + +1 +_Œª¥Üt + = +$Œª¥Üt +; + +44 +public +  +funùiÚ + + $ÃwIn¡ªû +( +Swiá_T¿n¥Üt + +$Œª¥Üt +) + +46  +Ãw + + `£lf +( +$Œª¥Üt +); + +47 + } +} + +68 +public + +funùiÚ + + $£nd +( +Swiá_Mime_Mes§ge + +$mes§ge +, & +$çžedRec›Ás + = +nuÎ +) + +70 +$çžedRec›Ás + = ( +¬¿y +) $failedRecipients; + +72 ià(! +$this +-> +_Œª¥Üt +-> + `isS¹ed +()) + +74 +$this +-> +_Œª¥Üt +-> + `¡¬t +(); + +77  +$this +-> +_Œª¥Üt +-> + `£nd +( +$mes§ge +, +$çžedRec›Ás +); + +78 + } +} + +102 +public + +funùiÚ + + $b©chS’d +( +Swiá_Mime_Mes§ge + +$mes§ge +, + +103 & +$çžedRec›Ás + = +nuÎ +, + +104 +Swiá_Maž”_Rec›ÁI‹¿tÜ + +$™ + = +nuÎ +) + +106 +$çžedRec›Ás + = ( +¬¿y +) $failedRecipients; + +108 +$£Á + = 0; + +109 +$to + = +$mes§ge +-> + `g‘To +(); + +110 +$cc + = +$mes§ge +-> + `g‘Cc +(); + +111 +$bcc + = +$mes§ge +-> + `g‘Bcc +(); + +113 ià(! + `em±y +( +$cc +)) + +115 +$mes§ge +-> + `£tCc +( + `¬¿y +()); + +117 ià(! + `em±y +( +$bcc +)) + +119 +$mes§ge +-> + `£tBcc +( + `¬¿y +()); + +123 ià( + `is£t +( +$™ +)) + +125  +$™ +-> + `hasNext +()) + +127 +$mes§ge +-> + `£tTo +( +$™ +-> + `ÃxtRec›Á +()); + +128 +$£Á + +ð +$this +-> + `£nd +( +$mes§ge +, +$çžedRec›Ás +); + +133 + `fܗch + ( +$to + +as + +$add»ss + => +$Çme +) + +135 +$mes§ge +-> + `£tTo +( + `¬¿y +( +$add»ss + => +$Çme +)); + +136 +$£Á + +ð +$this +-> + `£nd +( +$mes§ge +, +$çžedRec›Ás +); + +140 +$mes§ge +-> + `£tTo +( +$to +); + +142 ià(! + `em±y +( +$cc +)) + +144 +$mes§ge +-> + `£tCc +( +$cc +); + +146 ià(! + `em±y +( +$bcc +)) + +148 +$mes§ge +-> + `£tBcc +( +$bcc +); + +151  +$£Á +; + +152 + } +} + +160 +public + +funùiÚ + + $»gi¡”Plugš +( +Swiá_Ev’ts_Ev’tLi¡’” + +$¶ugš +) + +162 +$this +-> +_Œª¥Üt +-> + `»gi¡”Plugš +( +$¶ugš +); + +163 + } +} + +169 +public + +funùiÚ + + $g‘T¿n¥Üt +() + +171  +$this +-> +_Œª¥Üt +; + +172 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mailer/ArrayRecipientIterator.php + +1 +_»c›Ás + = +$»c›Ás +; + +43 +public + +funùiÚ + + $hasNext +() + +45  ! + `em±y +( +$this +-> +_»c›Ás +); + +46 + } +} + +54 +public + +funùiÚ + + $ÃxtRec›Á +() + +56  + `¬¿y_¥liû +( +$this +-> +_»c›Ás +, 0, 1); + +57 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mailer/RecipientIterator.php + +1 + `ü—‹D•’d’c›sFÜ +('mime.message') + +41 ià(! + `is£t +( +$ch¬£t +)) + +43 +$ch¬£t + = +Swiá_D•’d’cyCڏš” +:: + `g‘In¡ªû +() + +44 -> + `lookup +('properties.charset'); + +46 +$this +-> + `£tSubjeù +( +$subjeù +); + +47 +$this +-> + `£tBody +( +$body +); + +48 +$this +-> + `£tCh¬£t +( +$ch¬£t +); + +49 ià( +$cڋÁTy³ +) + +51 +$this +-> + `£tCڋÁTy³ +( +$cڋÁTy³ +); + +63 +public +  +funùiÚ + + $ÃwIn¡ªû +( +$subjeù + = +nuÎ +, +$body + =‚ull, + +64 +$cڋÁTy³ + = +nuÎ +, +$ch¬£t + =‚ull) + +66  +Ãw + + `£lf +( +$subjeù +, +$body +, +$cڋÁTy³ +, +$ch¬£t +); + +67 + } +} + +75 +public + +funùiÚ + + $addP¬t +( +$body +, +$cڋÁTy³ + = +nuÎ +, +$ch¬£t + =‚ull) + +77  +$this +-> + `©ch +( +Swiá_MimeP¬t +:: + `ÃwIn¡ªû +( + +78 +$body +, +$cڋÁTy³ +, +$ch¬£t + + +80 + } +} + +82 +public + +funùiÚ + + $__wakeup +() + +84 +Swiá_D•’d’cyCڏš” +:: + `g‘In¡ªû +()-> + `ü—‹D•’d’c›sFÜ +('mime.message'); + +85 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Attachment.php + +1 + `£tDi¥os™iÚ +('attachment'); + +42 +$this +-> + `£tCڋÁTy³ +('application/octet-stream'); + +43 +$this +-> +_mimeTy³s + = +$mimeTy³s +; + +51 +public + +funùiÚ + + $g‘Ne¡šgLev– +() + +53  +£lf +:: +LEVEL_MIXED +; + +54 + } +} + +61 +public + +funùiÚ + + $g‘Di¥os™iÚ +() + +63  +$this +-> + `_g‘H—d”F›ldMod– +('Content-Disposition'); + +64 + } +} + +70 +public + +funùiÚ + + $£tDi¥os™iÚ +( +$di¥os™iÚ +) + +72 ià(! +$this +-> + `_£tH—d”F›ldMod– +('CڋÁ-Di¥os™iÚ', +$di¥os™iÚ +)) + +74 +$this +-> + `g‘H—d”s +()-> + `addP¬am‘”izedH—d” +( + +75 'CڋÁ-Di¥os™iÚ', +$di¥os™iÚ + + +78  +$this +; + +79 + } +} + +85 +public + +funùiÚ + + $g‘Fž’ame +() + +87  +$this +-> + `_g‘H—d”P¬am‘” +('Content-Disposition', 'filename'); + +88 + } +} + +94 +public + +funùiÚ + + $£tFž’ame +( +$fž’ame +) + +96 +$this +-> + `_£tH—d”P¬am‘” +('CڋÁ-Di¥os™iÚ', 'fž’ame', +$fž’ame +); + +97 +$this +-> + `_£tH—d”P¬am‘” +('CڋÁ-Ty³', 'Çme', +$fž’ame +); + +98  +$this +; + +99 + } +} + +105 +public + +funùiÚ + + $g‘Size +() + +107  +$this +-> + `_g‘H—d”P¬am‘” +('Content-Disposition', 'size'); + +108 + } +} + +114 +public + +funùiÚ + + $£tSize +( +$size +) + +116 +$this +-> + `_£tH—d”P¬am‘” +('CڋÁ-Di¥os™iÚ', 'size', +$size +); + +117  +$this +; + +118 + } +} + +125 +public + +funùiÚ + + $£tFže +( +Swiá_FžeSŒ—m + +$fže +, +$cڋÁTy³ + = +nuÎ +) + +127 +$this +-> + `£tFž’ame +( + `ba£Çme +( +$fže +-> + `g‘P©h +())); + +128 +$this +-> + `£tBody +( +$fže +, +$cڋÁTy³ +); + +129 ià(! + `is£t +( +$cڋÁTy³ +)) + +131 +$ex‹nsiÚ + = + `¡¹Þow” +( + `sub¡r +( + +132 +$fže +-> + `g‘P©h +(), + `¡¼pos +($file->getPath(), '.') + 1 + +135 ià( + `¬¿y_key_exi¡s +( +$ex‹nsiÚ +, +$this +-> +_mimeTy³s +)) + +137 +$this +-> + `£tCڋÁTy³ +($this-> +_mimeTy³s +[ +$ex‹nsiÚ +]); + +140  +$this +; + +141 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/CharsetObserver.php + +1 ð +$maxLšeL’gth + || 76 < $maxLineLength) + +40 +$maxLšeL’gth + = 76; + +43 +$»mašd” + = 0; + +45  +çl£ + !=ð +$by‹s + = +$os +-> + `»ad +(8190)) + +47 +$’coded + = + `ba£64_’code +( +$by‹s +); + +48 +$’codedT¿nsfÜmed + = ''; + +49 +$thisMaxLšeL’gth + = +$maxLšeL’gth + - +$»mašd” + - +$fœ¡LšeOff£t +; + +51  +$thisMaxLšeL’gth + < + `¡¾’ +( +$’coded +)) + +53 +$’codedT¿nsfÜmed + .ð + `sub¡r +( +$’coded +, 0, +$thisMaxLšeL’gth +) . "\r\n"; + +54 +$fœ¡LšeOff£t + = 0; + +55 +$’coded + = + `sub¡r +($’coded, +$thisMaxLšeL’gth +); + +56 +$thisMaxLšeL’gth + = +$maxLšeL’gth +; + +57 +$»mašd” + = 0; + +60 ià(0 < +$»maššgL’gth + = + `¡¾’ +( +$’coded +)) + +62 +$»mašd” + +ð +$»maššgL’gth +; + +63 +$’codedT¿nsfÜmed + .ð +$’coded +; + +64 +$’coded + = +nuÎ +; + +67 +$is +-> + `wr™e +( +$’codedT¿nsfÜmed +); + +76 +public + +funùiÚ + + $g‘Name +() + +79 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/ContentEncoder/PlainContentEncoder.php + +1 +_Çme + = +$Çme +; + +47 +$this +-> +_ÿnÚiÿl + = +$ÿnÚiÿl +; + +57 +public + +funùiÚ + + $’codeSŒšg +( +$¡ršg +, +$fœ¡LšeOff£t + = 0, + +58 +$maxLšeL’gth + = 0) + +60 ià( +$this +-> +_ÿnÚiÿl +) + +62 +$¡ršg + = +$this +-> + `_ÿnÚiÿlize +($string); + +64  +$this +-> + `_§ãWÜdW¿p +( +$¡ršg +, +$maxLšeL’gth +, "\r\n"); + +65 + } +} + +74 +public + +funùiÚ + + $’codeBy‹SŒ—m +( + +75 +Swiá_OuutBy‹SŒ—m + +$os +, +Swiá_IÅutBy‹SŒ—m + +$is +, +$fœ¡LšeOff£t + = 0, + +76 +$maxLšeL’gth + = 0) + +78 +$ËáOv” + = ''; + +79  +çl£ + !=ð +$by‹s + = +$os +-> + `»ad +(8192)) + +81 +$tÛncode + = +$ËáOv” + . +$by‹s +; + +82 ià( +$this +-> +_ÿnÚiÿl +) + +84 +$tÛncode + = +$this +-> + `_ÿnÚiÿlize +($toencode); + +86 +$w¿µed + = +$this +-> + `_§ãWÜdW¿p +( +$tÛncode +, +$maxLšeL’gth +, "\r\n"); + +87 +$Ï¡LšePos + = + `¡¼pos +( +$w¿µed +, "\r\n"); + +88 +$ËáOv” + = + `sub¡r +( +$w¿µed +, +$Ï¡LšePos +); + +89 +$w¿µed + = + `sub¡r +($w¿µed, 0, +$Ï¡LšePos +); + +91 +$is +-> + `wr™e +( +$w¿µed +); + +93 ià( + `¡¾’ +( +$ËáOv” +)) + +95 +$is +-> + `wr™e +( +$ËáOv” +); + +97 + } +} + +103 +public + +funùiÚ + + $g‘Name +() + +105  +$this +-> +_Çme +; + +106 + } +} + +111 +public + +funùiÚ + + $ch¬£tChªged +( +$ch¬£t +) + +113 + } +} + +125 +´iv©e + +funùiÚ + +_§ãWÜdw¿p +( +$¡ršg +, +$Ëngth + = 75, +$Ë + = "\r\n") + +127 ià(0 >ð +$Ëngth +) + +129  +$¡ršg +; + +132 + g$Üigš®Lšes + = +ex¶ode +( +$Ë +, +$¡ršg +); + +134 + g$lšes + = +¬¿y +(); + +135 + g$lšeCouÁ + = 0; + +137 +fܗch + ( +$Üigš®Lšes + +as + +$Üigš®Lše +) + +139 + g$lšes +[] = ''; + +140 + g$cu¼’tLše + =& +$lšes +[ +$lšeCouÁ +++]; + +143 + g$chunks + = +´eg_¥l™ +('/(?<=\s)/', +$Üigš®Lše +); + +145 +fܗch + ( +$chunks + +as + +$chunk +) + +147 ià(0 !ð +¡¾’ +( +$cu¼’tLše +) + +148 && +¡¾’ +( +$cu¼’tLše + . +$chunk +è> +$Ëngth +) + +150 +$lšes +[] = ''; + +151 + g$cu¼’tLše + =& +$lšes +[ +$lšeCouÁ +++]; + +153 + g$cu¼’tLše + .ð +$chunk +; + +157  +im¶ode +("\r\n", +$lšes +); + +166 +´iv©e + +funùiÚ + + $_ÿnÚiÿlize +( +$¡ršg +) + +168  + `¡r_»¶aû +( + +169 + `¬¿y +("\r\n", "\r", "\n"), + +170 + `¬¿y +("\n", "\n", "\r\n"), + +171 +$¡ršg + + +173 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/ContentEncoder/QpContentEncoder.php + +1 76 || $maxLineLength <= 0) + +54 +$maxLšeL’gth + = 76; + +57 +$thisLšeL’gth + = +$maxLšeL’gth + - +$fœ¡LšeOff£t +; + +59 +$this +-> +_ch¬SŒ—m +-> + `æushCڋÁs +(); + +60 +$this +-> +_ch¬SŒ—m +-> + `impÜtBy‹SŒ—m +( +$os +); + +62 +$cu¼’tLše + = ''; + +63 +$´•’d + = ''; + +64 +$size += +$lšeL’ +=0; + +66  +çl£ + !=ð +$by‹s + = +$this +-> + `_ÃxtSequ’û +()) + +69 ià( + `is£t +( +$this +-> +_fž‹r +)) + +72  +$this +-> +_fž‹r +-> + `shouldBufãr +( +$by‹s +)) + +75 ià( +çl£ + ==ð +$mÜeBy‹s + = +$this +-> + `_ÃxtSequ’û +(1)) + +80 + `fܗch + ( +$mÜeBy‹s + +as + +$b +) + +82 +$by‹s +[] = +$b +; + +86 +$by‹s + = +$this +-> +_fž‹r +-> + `fž‹r +($bytes); + +89 +$’c + = +$this +-> + `_’codeBy‹Sequ’û +( +$by‹s +, +$size +); + +90 ià( +$cu¼’tLše + && +$lšeL’ ++ +$size + >ð +$thisLšeL’gth +) + +92 +$is +-> + `wr™e +( +$´•’d + . +$this +-> + `_¡ªd¬dize +( +$cu¼’tLše +)); + +93 +$cu¼’tLše + = ''; + +94 +$´•’d + = "=\r\n"; + +95 +$thisLšeL’gth + = +$maxLšeL’gth +; + +96 +$lšeL’ +=0; + +98 +$lšeL’ ++= +$size +; + +99 +$cu¼’tLše + .ð +$’c +; + +101 ià( + `¡¾’ +( +$cu¼’tLše +)) + +103 +$is +-> + `wr™e +( +$´•’d + . +$this +-> + `_¡ªd¬dize +( +$cu¼’tLše +)); + +105 + } +} + +112 +public + +funùiÚ + + $g‘Name +() + +115 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/EmbeddedFile.php + +1 + `£tDi¥os™iÚ +('inline'); + +38 +$this +-> + `£tId +($this-> + `g‘Id +()); + +46 +public + +funùiÚ + + $g‘Ne¡šgLev– +() + +48  +£lf +:: +LEVEL_RELATED +; + +49 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/EncodingObserver.php + +1 + `þ—rCachedV®ueIf +( +$ch¬£t + !ð$this-> +_ch¬£t +); + +86 +$this +-> +_ch¬£t + = +$ch¬£t +; + +87 ià( + `is£t +( +$this +-> +_’cod” +)) + +89 +$this +-> +_’cod” +-> + `ch¬£tChªged +( +$ch¬£t +); + +97 +public + +funùiÚ + + $g‘Ch¬£t +() + +99  +$this +-> +_ch¬£t +; + +100 + } +} + +108 +public + +funùiÚ + + $£tLªguage +( +$Ïng +) + +110 +$this +-> + `þ—rCachedV®ueIf +($this-> +_Ïng + !ð +$Ïng +); + +111 +$this +-> +_Ïng + = +$Ïng +; + +112 + } +} + +118 +public + +funùiÚ + + $g‘Lªguage +() + +120  +$this +-> +_Ïng +; + +121 + } +} + +127 +public + +funùiÚ + + $£tEncod” +( +Swiá_Mime_H—d”Encod” + +$’cod” +) + +129 +$this +-> +_’cod” + = +$’cod” +; + +130 +$this +-> + `£tCachedV®ue +( +nuÎ +); + +131 + } +} + +137 +public + +funùiÚ + + $g‘Encod” +() + +139  +$this +-> +_’cod” +; + +140 + } +} + +146 +public + +funùiÚ + + $g‘F›ldName +() + +148  +$this +-> +_Çme +; + +149 + } +} + +155 +public + +funùiÚ + + $£tMaxLšeL’gth +( +$lšeL’gth +) + +157 +$this +-> + `þ—rCachedV®ueIf +($this-> +_lšeL’gth + !ð +$lšeL’gth +); + +158 +$this +-> +_lšeL’gth + = +$lšeL’gth +; + +159 + } +} + +165 +public + +funùiÚ + + $g‘MaxLšeL’gth +() + +167  +$this +-> +_lšeL’gth +; + +168 + } +} + +175 +public + +funùiÚ + + $toSŒšg +() + +177  +$this +-> + `_tok’sToSŒšg +($this-> + `toTok’s +()); + +178 + } +} + +187 +public + +funùiÚ + + $__toSŒšg +() + +189  +$this +-> + `toSŒšg +(); + +190 + } +} + +199 +´Ùeùed + +funùiÚ + + $£tF›ldName +( +$Çme +) + +201 +$this +-> +_Çme + = +$Çme +; + +202 + } +} + +208 +´Ùeùed + +funùiÚ + + $š™ŸlizeG¿mm¬ +() + +210 +$this +-> +_¥ecŸls + = + `¬¿y +( + +218 +$this +-> +_g¿mm¬ +['NO-WS-CTL'] = '[\x01-\x08\x0B\x0C\x0E-\x19\x7F]'; + +219 +$this +-> +_g¿mm¬ +['WSP'] = '[ \t]'; + +220 +$this +-> +_g¿mm¬ +['CRLF'] = '(?:\r\n)'; + +221 +$this +-> +_g¿mm¬ +['FWS'] = '(?:(?:' . $this->_grammar['WSP'] . '*' . + +222 +$this +-> +_g¿mm¬ +['CRLF'] . ')?' . $this->_grammar['WSP'] . ')'; + +223 +$this +-> +_g¿mm¬ +['text'] = '[\x00-\x08\x0B\x0C\x0E-\x7F]'; + +224 +$this +-> +_g¿mm¬ +['quoted-pair'] = '(?:\\\\' . $this->_grammar['text'] . ')'; + +225 +$this +-> +_g¿mm¬ +['ctext'] = '(?:' . $this->_grammar['NO-WS-CTL'] . + +228 +$this +-> +_g¿mm¬ +['ccontent'] = '(?:' . $this->_grammar['ctext'] . '|' . + +229 +$this +-> +_g¿mm¬ +['quoted-pair'] . '|(?1))'; + +230 +$this +-> +_g¿mm¬ +['comment'] = '(\((?:' . $this->_grammar['FWS'] . '|' . + +231 +$this +-> +_g¿mm¬ +['ccontent']. ')*' . $this->_grammar['FWS'] . '?\))'; + +232 +$this +-> +_g¿mm¬ +['CFWS'] = '(?:(?:' . $this->_grammar['FWS'] . '?' . + +233 +$this +-> +_g¿mm¬ +['comment'] . ')*(?:(?:' . $this->_grammar['FWS'] . '?' . + +234 +$this +-> +_g¿mm¬ +['comment'] . ')|' . $this->_grammar['FWS'] . '))'; + +235 +$this +-> +_g¿mm¬ +['qtext'] = '(?:' . $this->_grammar['NO-WS-CTL'] . + +237 +$this +-> +_g¿mm¬ +['qcontent'] = '(?:' . $this->_grammar['qtext'] . '|' . + +238 +$this +-> +_g¿mm¬ +['quoted-pair'] . ')'; + +239 +$this +-> +_g¿mm¬ +['quoted-string'] = '(?:' . $this->_grammar['CFWS'] . '?"' . + +240 '(' . +$this +-> +_g¿mm¬ +['FWS'] . '?' . $this->_grammar['qcontent'] . ')*' . + +241 +$this +-> +_g¿mm¬ +['FWS'] . '?"' . $this->_grammar['CFWS'] . '?)'; + +242 +$this +-> +_g¿mm¬ +['atext'] = '[a-zA-Z0-9!#\$%&\'\*\+\-\/=\?\^_`\{\}\|~]'; + +243 +$this +-> +_g¿mm¬ +['atom'] = '(?:' . $this->_grammar['CFWS'] . '?' . + +244 +$this +-> +_g¿mm¬ +['atext'] . '+' . $this->_grammar['CFWS'] . '?)'; + +245 +$this +-> +_g¿mm¬ +['dot-atom-text'] = '(?:' . $this->_grammar['atext'] . '+' . + +246 '(\.' . +$this +-> +_g¿mm¬ +['atext'] . '+)*)'; + +247 +$this +-> +_g¿mm¬ +['dot-atom'] = '(?:' . $this->_grammar['CFWS'] . '?' . + +248 +$this +-> +_g¿mm¬ +['dot-atom-text'] . '+' . $this->_grammar['CFWS'] . '?)'; + +249 +$this +-> +_g¿mm¬ +['word'] = '(?:' . $this->_grammar['atom'] . '|' . + +250 +$this +-> +_g¿mm¬ +['quoted-string'] . ')'; + +251 +$this +-> +_g¿mm¬ +['phrase'] = '(?:' . $this->_grammar['word'] . '+?)'; + +252 +$this +-> +_g¿mm¬ +['no-fold-quote'] = '(?:"(?:' . $this->_grammar['qtext'] . + +253 '|' . +$this +-> +_g¿mm¬ +['quoted-pair'] . ')*")'; + +254 +$this +-> +_g¿mm¬ +['dtext'] = '(?:' . $this->_grammar['NO-WS-CTL'] . + +256 +$this +-> +_g¿mm¬ +['no-fold-literal'] = '(?:\[(?:' . $this->_grammar['dtext'] . + +257 '|' . +$this +-> +_g¿mm¬ +['quoted-pair'] . ')*\])'; + +260 +$this +-> +_g¿mm¬ +['id-left'] = '(?:' . $this->_grammar['dot-atom-text'] . '|' . + +261 +$this +-> +_g¿mm¬ +['no-fold-quote'] . ')'; + +262 +$this +-> +_g¿mm¬ +['id-right'] = '(?:' . $this->_grammar['dot-atom-text'] . '|' . + +263 +$this +-> +_g¿mm¬ +['no-fold-literal'] . ')'; + +266 +$this +-> +_g¿mm¬ +['local-part'] = '(?:' . $this->_grammar['dot-atom'] . '|' . + +267 +$this +-> +_g¿mm¬ +['quoted-string'] . ')'; + +268 +$this +-> +_g¿mm¬ +['dcontent'] = '(?:' . $this->_grammar['dtext'] . '|' . + +269 +$this +-> +_g¿mm¬ +['quoted-pair'] . ')'; + +270 +$this +-> +_g¿mm¬ +['domain-literal'] = '(?:' . $this->_grammar['CFWS'] . '?\[(' . + +271 +$this +-> +_g¿mm¬ +['FWS'] . '?' . $this->_grammar['dcontent'] . ')*?' . + +272 +$this +-> +_g¿mm¬ +['FWS'] . '?\]' . $this->_grammar['CFWS'] . '?)'; + +273 +$this +-> +_g¿mm¬ +['domain'] = '(?:' . $this->_grammar['dot-atom'] . '|' . + +274 +$this +-> +_g¿mm¬ +['domain-literal'] . ')'; + +275 +$this +-> +_g¿mm¬ +['addr-spec'] = '(?:' . $this->_grammar['local-part'] . '@' . + +276 +$this +-> +_g¿mm¬ +['domain'] . ')'; + +277 + } +} + +284 +´Ùeùed + +funùiÚ + + $g‘G¿mm¬ +( +$Çme +) + +286 ià( + `¬¿y_key_exi¡s +( +$Çme +, +$this +-> +_g¿mm¬ +)) + +288  +$this +-> +_g¿mm¬ +[ +$Çme +]; + +292 +throw + +Ãw + + `Swiá_RfcCom¶ŸnûExû±iÚ +( + +293 "NØsuch g¿mm¬ '" . +$Çme + . "' defined." + +296 + } +} + +305 +´Ùeùed + +funùiÚ + +esÿ³S³cŸls +( +$tok’ +, +$šþude + = +¬¿y +(), + +306 +$exþude + = + $¬¿y +()) + +308 + `fܗch + ( + +309 + `¬¿y_m”ge +( + `¬¿y +('\\'), + `¬¿y_diff +( +$this +-> +_¥ecŸls +, +$exþude +), +$šþude +è +as + +$ch¬ +) + +311 +$tok’ + = + `¡r_»¶aû +( +$ch¬ +, '\\' . $char, $token); + +313  +$tok’ +; + +314 + } +} + +325 +´Ùeùed + +funùiÚ + + $ü—‹Ph¿£ +( +Swiá_Mime_H—d” + +$h—d” +, +$¡ršg +, +$ch¬£t +, + +326 +Swiá_Mime_H—d”Encod” + +$’cod” + = +nuÎ +, +$sh܋n + = +çl£ +) + +329 +$ph¿£SŒ + = +$¡ršg +; + +331 ià(! + `´eg_m©ch +('/^' . +$this +-> +_g¿mm¬ +['ph¿£'] . '$/D', +$ph¿£SŒ +)) + +335 ià( + `´eg_m©ch +('/^' . +$this +-> +_g¿mm¬ +['‹xt'] . '*$/D', +$ph¿£SŒ +)) + +337 +$ph¿£SŒ + = +$this +-> + `esÿ³S³cŸls +( + +338 +$ph¿£SŒ +, + `¬¿y +('"'), +$this +-> +_¥ecŸls + + +340 +$ph¿£SŒ + = '"' . $phraseStr . '"'; + +345 ià( +$sh܋n +) + +347 +$u£dL’gth + = + `¡¾’ +( +$h—d” +-> + `g‘F›ldName +() . ': '); + +351 +$u£dL’gth + = 0; + +353 +$ph¿£SŒ + = +$this +-> + `’codeWÜds +( +$h—d” +, +$¡ršg +, +$u£dL’gth +); + +357  +$ph¿£SŒ +; + +358 + } +} + +366 +´Ùeùed + +funùiÚ + +’codeWÜds +( +Swiá_Mime_H—d” + +$h—d” +, +$šput +, + +367 +$u£dL’gth + = -1) + +369 +$v®ue + = ''; + +371 + g$tok’s + = +$this +-> +g‘EncodabËWÜdTok’s +( +$šput +); + +373 +fܗch + ( +$tok’s + +as + +$tok’ +) + +376 ià( + g$this +-> +tok’N“dsEncodšg +( +$tok’ +)) + +379 + g$fœ¡Ch¬ + = +sub¡r +( +$tok’ +, 0, 1); + +380  + g$fœ¡Ch¬ +) + +384 +$v®ue + .ð +$fœ¡Ch¬ +; + +385 + g$tok’ + = +sub¡r +( +$tok’ +, 1); + +388 ià(-1 =ð +$u£dL’gth +) + +390 +$u£dL’gth + = +¡¾’ +( +$h—d” +-> +g‘F›ldName +(è. ': 'è+ sŒËn( +$v®ue +); + +392 + g$v®ue + .ð +$this +-> +g‘Tok’AsEncodedWÜd +( +$tok’ +, +$u£dL’gth +); + +394 + g$h—d” +-> +£tMaxLšeL’gth +(76); + +398 + g$v®ue + .ð +$tok’ +; + +402  + g$v®ue +; + +410 +´Ùeùed + +funùiÚ + + $tok’N“dsEncodšg +( +$tok’ +) + +412  + `´eg_m©ch +('~[\x00-\x08\x10-\x19\x7F-\xFF\r\n]~', +$tok’ +); + +413 + } +} + +420 +´Ùeùed + +funùiÚ + + $g‘EncodabËWÜdTok’s +( +$¡ršg +) + +422 +$tok’s + = + `¬¿y +(); + +424 +$’codedTok’ + = ''; + +426 + `fܗch + ( + `´eg_¥l™ +('~(?=[\ˆ])~', +$¡ršg +è +as + +$tok’ +) + +428 ià( +$this +-> + `tok’N“dsEncodšg +( +$tok’ +)) + +430 +$’codedTok’ + .ð +$tok’ +; + +434 ià( + `¡¾’ +( +$’codedTok’ +) > 0) + +436 +$tok’s +[] = +$’codedTok’ +; + +437 +$’codedTok’ + = ''; + +439 +$tok’s +[] = +$tok’ +; + +442 ià( + `¡¾’ +( +$’codedTok’ +)) + +444 +$tok’s +[] = +$’codedTok’ +; + +447  +$tok’s +; + +448 + } +} + +456 +´Ùeùed + +funùiÚ + + $g‘Tok’AsEncodedWÜd +( +$tok’ +, +$fœ¡LšeOff£t + = 0) + +459 +$ch¬£tDeþ + = +$this +-> +_ch¬£t +; + +460 ià( + `is£t +( +$this +-> +_Ïng +)) + +462 +$ch¬£tDeþ + .ð'*' . +$this +-> +_Ïng +; + +464 +$’codšgW¿µ”L’gth + = + `¡¾’ +( + +465 '=?' . +$ch¬£tDeþ + . '?' . +$this +-> +_’cod” +-> + `g‘Name +() . '??=' + +468 ià( +$fœ¡LšeOff£t + >= 75) + +470 +$fœ¡LšeOff£t + = 0; + +473 +$’codedTextLšes + = + `ex¶ode +("\r\n", + +474 +$this +-> +_’cod” +-> + `’codeSŒšg +( + +475 +$tok’ +, +$fœ¡LšeOff£t +, 75 - +$’codšgW¿µ”L’gth + + +479 + `fܗch + ( +$’codedTextLšes + +as + +$lšeNum + => +$lše +) + +481 +$’codedTextLšes +[ +$lšeNum +] = '=?' . +$ch¬£tDeþ + . + +482 '?' . +$this +-> +_’cod” +-> + `g‘Name +() . + +483 '?' . +$lše + . '?='; + +486  + `im¶ode +("\r\À", +$’codedTextLšes +); + +487 + } +} + +495 +´Ùeùed + +funùiÚ + + $g’”©eTok’Lšes +( +$tok’ +) + +497  + `´eg_¥l™ +('~(\r\n)~', +$tok’ +, -1, +PREG_SPLIT_DELIM_CAPTURE +); + +498 + } +} + +505 +´Ùeùed + +funùiÚ + + $£tCachedV®ue +( +$v®ue +) + +507 +$this +-> +_ÿchedV®ue + = +$v®ue +; + +508 + } +} + +515 +´Ùeùed + +funùiÚ + + $g‘CachedV®ue +() + +517  +$this +-> +_ÿchedV®ue +; + +518 + } +} + +525 +´Ùeùed + +funùiÚ + + $þ—rCachedV®ueIf +( +$cÚd™iÚ +) + +527 ià( +$cÚd™iÚ +) + +529 +$this +-> + `£tCachedV®ue +( +nuÎ +); + +531 + } +} + +541 +´Ùeùed + +funùiÚ + + $toTok’s +( +$¡ršg + = +nuÎ +) + +543 ià( + `is_nuÎ +( +$¡ršg +)) + +545 +$¡ršg + = +$this +-> + `g‘F›ldBody +(); + +548 +$tok’s + = + `¬¿y +(); + +551 + `fܗch + ( + `´eg_¥l™ +('~(?=[ \t])~', +$¡ršg +è +as + +$tok’ +) + +553 +$tok’s + = + `¬¿y_m”ge +($tok’s, +$this +-> + `g’”©eTok’Lšes +( +$tok’ +)); + +556  +$tok’s +; + +557 + } +} + +566 +´iv©e + +funùiÚ + + $_tok’sToSŒšg +( +¬¿y + +$tok’s +) + +568 +$lšeCouÁ + = 0; + +569 +$h—d”Lšes + = + `¬¿y +(); + +570 +$h—d”Lšes +[] = +$this +-> +_Çme + . ': '; + +571 +$cu¼’tLše + =& +$h—d”Lšes +[ +$lšeCouÁ +++]; + +574 + `fܗch + ( +$tok’s + +as + +$i + => +$tok’ +) + +577 ià(("\r\n" =ð +$tok’ +) || + +578 ( +$i + > 0 && + `¡¾’ +( +$cu¼’tLše + . +$tok’ +è> +$this +-> +_lšeL’gth +) + +579 && 0 < + `¡¾’ +( +$cu¼’tLše +)) + +581 +$h—d”Lšes +[] = ''; + +582 +$cu¼’tLše + =& +$h—d”Lšes +[ +$lšeCouÁ +++]; + +586 ià("\r\n" !ð +$tok’ +) + +588 +$cu¼’tLše + .ð +$tok’ +; + +593  + `im¶ode +("\r\n", +$h—d”Lšes +) . "\r\n"; + +594 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/DateHeader.php + +1 + `£tF›ldName +( +$Çme +); + +51 +public + +funùiÚ + + $g‘F›ldTy³ +() + +53  +£lf +:: +TYPE_DATE +; + +54 + } +} + +61 +public + +funùiÚ + + $£tF›ldBodyMod– +( +$mod– +) + +63 +$this +-> + `£tTime¡amp +( +$mod– +); + +64 + } +} + +71 +public + +funùiÚ + + $g‘F›ldBodyMod– +() + +73  +$this +-> + `g‘Time¡amp +(); + +74 + } +} + +80 +public + +funùiÚ + + $g‘Time¡amp +() + +82  +$this +-> +_time¡amp +; + +83 + } +} + +89 +public + +funùiÚ + + $£tTime¡amp +( +$time¡amp +) + +91 ià(! + `is_nuÎ +( +$time¡amp +)) + +93 +$time¡amp + = () $timestamp; + +95 +$this +-> + `þ—rCachedV®ueIf +($this-> +_time¡amp + !ð +$time¡amp +); + +96 +$this +-> +_time¡amp + = +$time¡amp +; + +97 + } +} + +106 +public + +funùiÚ + + $g‘F›ldBody +() + +108 ià(! +$this +-> + `g‘CachedV®ue +()) + +110 ià( + `is£t +( +$this +-> +_time¡amp +)) + +112 +$this +-> + `£tCachedV®ue +( + `d©e +('r', $this-> +_time¡amp +)); + +115  +$this +-> + `g‘CachedV®ue +(); + +116 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/IdentificationHeader.php + +1 + `£tF›ldName +( +$Çme +); + +39 +$this +-> + `š™ŸlizeG¿mm¬ +(); + +48 +public + +funùiÚ + + $g‘F›ldTy³ +() + +50  +£lf +:: +TYPE_ID +; + +51 + } +} + +59 +public + +funùiÚ + + $£tF›ldBodyMod– +( +$mod– +) + +61 +$this +-> + `£tId +( +$mod– +); + +62 + } +} + +69 +public + +funùiÚ + + $g‘F›ldBodyMod– +() + +71  +$this +-> + `g‘Ids +(); + +72 + } +} + +79 +public + +funùiÚ + + $£tId +( +$id +) + +81  +$this +-> + `£tIds +( + `¬¿y +( +$id +)); + +82 + } +} + +89 +public + +funùiÚ + + $g‘Id +() + +91 ià( + `couÁ +( +$this +-> +_ids +) > 0) + +93  +$this +-> +_ids +[0]; + +95 + } +} + +102 +public + +funùiÚ + + $£tIds +( +¬¿y + +$ids +) + +104 +$aùu®Ids + = + `¬¿y +(); + +106 + `fܗch + ( +$ids + +as + +$k + => +$id +) + +108 ià( + `´eg_m©ch +( + +109 '/^' . +$this +-> + `g‘G¿mm¬ +('id-left') . '@' . + +110 +$this +-> + `g‘G¿mm¬ +('id-right') . '$/D', + +111 +$id + + +114 +$aùu®Ids +[] = +$id +; + +118 +throw + +Ãw + + `Swiá_RfcCom¶ŸnûExû±iÚ +( + +119 'Inv®id ID giv’ <' . +$id + . '>' + +124 +$this +-> + `þ—rCachedV®ueIf +($this-> +_ids + !ð +$aùu®Ids +); + +125 +$this +-> +_ids + = +$aùu®Ids +; + +126 + } +} + +132 +public + +funùiÚ + + $g‘Ids +() + +134  +$this +-> +_ids +; + +135 + } +} + +145 +public + +funùiÚ + + $g‘F›ldBody +() + +147 ià(! +$this +-> + `g‘CachedV®ue +()) + +149 +$ªgËAddrs + = + `¬¿y +(); + +151 + `fܗch + ( +$this +-> +_ids + +as + +$id +) + +153 +$ªgËAddrs +[] = '<' . +$id + . '>'; + +156 +$this +-> + `£tCachedV®ue +( + `im¶ode +(' ', +$ªgËAddrs +)); + +158  +$this +-> + `g‘CachedV®ue +(); + +159 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/MailboxHeader.php + +1 + `£tF›ldName +( +$Çme +); + +38 +$this +-> + `£tEncod” +( +$’cod” +); + +39 +$this +-> + `š™ŸlizeG¿mm¬ +(); + +48 +public + +funùiÚ + + $g‘F›ldTy³ +() + +50  +£lf +:: +TYPE_MAILBOX +; + +51 + } +} + +59 +public + +funùiÚ + + $£tF›ldBodyMod– +( +$mod– +) + +61 +$this +-> + `£tNameAdd»s£s +( +$mod– +); + +62 + } +} + +70 +public + +funùiÚ + + $g‘F›ldBodyMod– +() + +72  +$this +-> + `g‘NameAdd»s£s +(); + +73 + } +} + +95 +public + +funùiÚ + + $£tNameAdd»s£s +( +$mažboxes +) + +97 +$this +-> +_mažboxes + = $this-> + `nÜm®izeMažboxes +(( +¬¿y +è +$mažboxes +); + +98 +$this +-> + `£tCachedV®ue +( +nuÎ +); + +99 + } +} + +122 +public + +funùiÚ + + $g‘NameAdd»ssSŒšgs +() + +124  +$this +-> + `_ü—‹NameAdd»ssSŒšgs +($this-> + `g‘NameAdd»s£s +()); + +125 + } +} + +148 +public + +funùiÚ + + $g‘NameAdd»s£s +() + +150  +$this +-> +_mažboxes +; + +151 + } +} + +169 +public + +funùiÚ + + $£tAdd»s£s +( +$add»s£s +) + +171  +$this +-> + `£tNameAdd»s£s +( + `¬¿y_v®ues +(( +¬¿y +è +$add»s£s +)); + +172 + } +} + +179 +public + +funùiÚ + + $g‘Add»s£s +() + +181  + `¬¿y_keys +( +$this +-> +_mažboxes +); + +182 + } +} + +188 +public + +funùiÚ + + $»moveAdd»s£s +( +$add»s£s +) + +190 +$this +-> + `£tCachedV®ue +( +nuÎ +); + +191 + `fܗch + (( +¬¿y +è +$add»s£s + +as + +$add»ss +) + +193 + `un£t +( +$this +-> +_mažboxes +[ +$add»ss +]); + +195 + } +} + +205 +public + +funùiÚ + + $g‘F›ldBody +() + +208 ià( + `is_nuÎ +( +$this +-> + `g‘CachedV®ue +())) + +210 +$this +-> + `£tCachedV®ue +($this-> + `ü—‹MažboxLi¡SŒšg +($this-> +_mažboxes +)); + +212  +$this +-> + `g‘CachedV®ue +(); + +213 + } +} + +223 +´Ùeùed + +funùiÚ + + $nÜm®izeMažboxes +( +¬¿y + +$mažboxes +) + +225 +$aùu®Mažboxes + = + `¬¿y +(); + +227 + `fܗch + ( +$mažboxes + +as + +$key + => +$v®ue +) + +229 ià( + `is_¡ršg +( +$key +)) + +231 +$add»ss + = +$key +; + +232 +$Çme + = +$v®ue +; + +236 +$add»ss + = +$v®ue +; + +237 +$Çme + = +nuÎ +; + +239 +$this +-> + `_as£¹V®idAdd»ss +( +$add»ss +); + +240 +$aùu®Mažboxes +[ +$add»ss +] = +$Çme +; + +243  +$aùu®Mažboxes +; + +244 + } +} + +253 +´Ùeùed + +funùiÚ + + $ü—‹Di¥ÏyNameSŒšg +( +$di¥ÏyName +, +$sh܋n + = +çl£ +) + +255  +$this +-> + `ü—‹Ph¿£ +($this, +$di¥ÏyName +, + +256 +$this +-> + `g‘Ch¬£t +(), $this-> + `g‘Encod” +(), +$sh܋n + + +258 + } +} + +267 +´Ùeùed + +funùiÚ + + $ü—‹MažboxLi¡SŒšg +( +¬¿y + +$mažboxes +) + +269  + `im¶ode +(', ', +$this +-> + `_ü—‹NameAdd»ssSŒšgs +( +$mažboxes +)); + +270 + } +} + +280 +´iv©e + +funùiÚ + + $_ü—‹NameAdd»ssSŒšgs +( +¬¿y + +$mažboxes +) + +282 +$¡ršgs + = + `¬¿y +(); + +284 + `fܗch + ( +$mažboxes + +as + +$emaž + => +$Çme +) + +286 +$mažboxSŒ + = +$emaž +; + +287 ià(! + `is_nuÎ +( +$Çme +)) + +289 +$ÇmeSŒ + = +$this +-> + `ü—‹Di¥ÏyNameSŒšg +( +$Çme +, + `em±y +( +$¡ršgs +)); + +290 +$mažboxSŒ + = +$ÇmeSŒ + . ' <' . $mailboxStr . '>'; + +292 +$¡ršgs +[] = +$mažboxSŒ +; + +295  +$¡ršgs +; + +296 + } +} + +304 +´iv©e + +funùiÚ + + $_as£¹V®idAdd»ss +( +$add»ss +) + +306 ià(! + `´eg_m©ch +('/^' . +$this +-> + `g‘G¿mm¬ +('addr-spec') . '$/D', + +307 +$add»ss +)) + +309 +throw + +Ãw + + `Swiá_RfcCom¶ŸnûExû±iÚ +( + +310 'Add»s š mažbox giv’ [' . +$add»ss + . + +314 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/ParameterizedHeader.php + +1 + `£tF›ldName +( +$Çme +); + +58 +$this +-> + `£tEncod” +( +$’cod” +); + +59 +$this +-> +_·¿mEncod” + = +$·¿mEncod” +; + +60 +$this +-> + `š™ŸlizeG¿mm¬ +(); + +61 +$this +-> +_tok’Re + = '(?:[\x21\x23-\x27\x2A\x2B\x2D\x2E\x30-\x39\x41-\x5A\x5E-\x7E]+)'; + +70 +public + +funùiÚ + + $g‘F›ldTy³ +() + +72  +£lf +:: +TYPE_PARAMETERIZED +; + +73 + } +} + +79 +public + +funùiÚ + + $£tCh¬£t +( +$ch¬£t +) + +81 +·»Á +:: + `£tCh¬£t +( +$ch¬£t +); + +82 ià( + `is£t +( +$this +-> +_·¿mEncod” +)) + +84 +$this +-> +_·¿mEncod” +-> + `ch¬£tChªged +( +$ch¬£t +); + +86 + } +} + +93 +public + +funùiÚ + + $£tP¬am‘” +( +$·¿m‘” +, +$v®ue +) + +95 +$this +-> + `£tP¬am‘”s +( + `¬¿y_m”ge +($this-> + `g‘P¬am‘”s +(), + `¬¿y +( +$·¿m‘” + => +$v®ue +))); + +96 + } +} + +102 +public + +funùiÚ + + $g‘P¬am‘” +( +$·¿m‘” +) + +104 +$·¿ms + = +$this +-> + `g‘P¬am‘”s +(); + +105  + `¬¿y_key_exi¡s +( +$·¿m‘” +, +$·¿ms +) + +106 ? +$·¿ms +[ +$·¿m‘” +] + +107 : +nuÎ +; + +108 + } +} + +114 +public + +funùiÚ + + $£tP¬am‘”s +( +¬¿y + +$·¿m‘”s +) + +116 +$this +-> + `þ—rCachedV®ueIf +($this-> +_·¿ms + !ð +$·¿m‘”s +); + +117 +$this +-> +_·¿ms + = +$·¿m‘”s +; + +118 + } +} + +124 +public + +funùiÚ + + $g‘P¬am‘”s +() + +126  +$this +-> +_·¿ms +; + +127 + } +} + +133 +public + +funùiÚ + + $g‘F›ldBody +() + +135 +$body + = +·»Á +:: + `g‘F›ldBody +(); + +136 + `fܗch + ( +$this +-> +_·¿ms + +as + +$Çme + => +$v®ue +) + +138 ià(! + `is_nuÎ +( +$v®ue +)) + +141 +$body + .ð'; ' . +$this +-> + `_ü—‹P¬am‘” +( +$Çme +, +$v®ue +); + +144  +$body +; + +145 + } +} + +156 +´Ùeùed + +funùiÚ + + $toTok’s +( +$¡ršg + = +nuÎ +) + +158 +$tok’s + = +·»Á +:: + `toTok’s +Õ¬’t:: + `g‘F›ldBody +()); + +161 + `fܗch + ( +$this +-> +_·¿ms + +as + +$Çme + => +$v®ue +) + +163 ià(! + `is_nuÎ +( +$v®ue +)) + +166 +$tok’s +[ + `couÁ +($tokens)-1] .= ';'; + +167 +$tok’s + = + `¬¿y_m”ge +($tok’s, +$this +-> + `g’”©eTok’Lšes +( + +168 ' ' . +$this +-> + `_ü—‹P¬am‘” +( +$Çme +, +$v®ue +) + +173  +$tok’s +; + +174 + } +} + +185 +´iv©e + +funùiÚ + + $_ü—‹P¬am‘” +( +$Çme +, +$v®ue +) + +187 +$ÜigV®ue + = +$v®ue +; + +189 +$’coded + = +çl£ +; + +191 +$maxV®ueL’gth + = +$this +-> + `g‘MaxLšeL’gth +(è- + `¡¾’ +( +$Çme + . '=*N"";') - 1; + +192 +$fœ¡LšeOff£t + = 0; + +195 ià(! + `´eg_m©ch +('/^' . +$this +-> +_tok’Re + . '$/D', +$v®ue +)) + +199 ià(! + `´eg_m©ch +('/^' . +$this +-> + `g‘G¿mm¬ +('‹xt'è. '*$/D', +$v®ue +)) + +201 +$’coded + = +Œue +; + +203 +$maxV®ueL’gth + = +$this +-> + `g‘MaxLšeL’gth +(è- + `¡¾’ +( +$Çme + . '*N*="";') - 1; + +204 +$fœ¡LšeOff£t + = + `¡¾’ +( + +205 +$this +-> + `g‘Ch¬£t +(è. "'" . $this-> + `g‘Lªguage +() . "'" + +211 ià( +$’coded + || + `¡¾’ +( +$v®ue +è> +$maxV®ueL’gth +) + +213 ià( + `is£t +( +$this +-> +_·¿mEncod” +)) + +215 +$v®ue + = +$this +-> +_·¿mEncod” +-> + `’codeSŒšg +( + +216 +$ÜigV®ue +, +$fœ¡LšeOff£t +, +$maxV®ueL’gth + + +221 +$v®ue + = +$this +-> + `g‘Tok’AsEncodedWÜd +( +$ÜigV®ue +); + +222 +$’coded + = +çl£ +; + +226 +$v®ueLšes + = + `is£t +( +$this +-> +_·¿mEncod” +è? + `ex¶ode +("\r\n", +$v®ue +è: + `¬¿y +($value); + +229 ià( + `couÁ +( +$v®ueLšes +) > 1) + +231 +$·¿mLšes + = + `¬¿y +(); + +232 + `fܗch + ( +$v®ueLšes + +as + +$i + => +$lše +) + +234 +$·¿mLšes +[] = +$Çme + . '*' . +$i + . + +235 +$this +-> + `_g‘EndOfP¬am‘”V®ue +( +$lše +, +$’coded +, +$i + == 0); + +237  + `im¶ode +(";\r\À", +$·¿mLšes +); + +241  +$Çme + . +$this +-> + `_g‘EndOfP¬am‘”V®ue +( + +242 +$v®ueLšes +[0], +$’coded +, +Œue + + +245 + } +} + +255 +´iv©e + +funùiÚ + + $_g‘EndOfP¬am‘”V®ue +( +$v®ue +, +$’coded + = +çl£ +, +$fœ¡Lše + = false) + +257 ià(! + `´eg_m©ch +('/^' . +$this +-> +_tok’Re + . '$/D', +$v®ue +)) + +259 +$v®ue + = '"' . $value . '"'; + +261 +$´•’d + = '='; + +262 ià( +$’coded +) + +264 +$´•’d + = '*='; + +265 ià( +$fœ¡Lše +) + +267 +$´•’d + = '*=' . +$this +-> + `g‘Ch¬£t +(è. "'" . $this-> + `g‘Lªguage +() . + +271  +$´•’d + . +$v®ue +; + +272 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/PathHeader.php + +1 + `£tF›ldName +( +$Çme +); + +37 +$this +-> + `š™ŸlizeG¿mm¬ +(); + +46 +public + +funùiÚ + + $g‘F›ldTy³ +() + +48  +£lf +:: +TYPE_PATH +; + +49 + } +} + +57 +public + +funùiÚ + + $£tF›ldBodyMod– +( +$mod– +) + +59 +$this +-> + `£tAdd»ss +( +$mod– +); + +60 + } +} + +67 +public + +funùiÚ + + $g‘F›ldBodyMod– +() + +69  +$this +-> + `g‘Add»ss +(); + +70 + } +} + +77 +public + +funùiÚ + + $£tAdd»ss +( +$add»ss +) + +79 ià( + `is_nuÎ +( +$add»ss +)) + +81 +$this +-> +_add»ss + = +nuÎ +; + +83 + `–£if + ('' =ð +$add»ss + + +84 || + `´eg_m©ch +('/^' . +$this +-> + `g‘G¿mm¬ +('addr-¥ec'è. '$/D', +$add»ss +)) + +86 +$this +-> +_add»ss + = +$add»ss +; + +90 +throw + +Ãw + + `Swiá_RfcCom¶ŸnûExû±iÚ +( + +94 +$this +-> + `£tCachedV®ue +( +nuÎ +); + +95 + } +} + +102 +public + +funùiÚ + + $g‘Add»ss +() + +104  +$this +-> +_add»ss +; + +105 + } +} + +114 +public + +funùiÚ + + $g‘F›ldBody +() + +116 ià(! +$this +-> + `g‘CachedV®ue +()) + +118 ià( + `is£t +( +$this +-> +_add»ss +)) + +120 +$this +-> + `£tCachedV®ue +('<' . $this-> +_add»ss + . '>'); + +123  +$this +-> + `g‘CachedV®ue +(); + +124 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/UnstructuredHeader.php + +1 + `£tF›ldName +( +$Çme +); + +39 +$this +-> + `£tEncod” +( +$’cod” +); + +47 +public + +funùiÚ + + $g‘F›ldTy³ +() + +49  +£lf +:: +TYPE_TEXT +; + +50 + } +} + +57 +public + +funùiÚ + + $£tF›ldBodyMod– +( +$mod– +) + +59 +$this +-> + `£tV®ue +( +$mod– +); + +60 + } +} + +67 +public + +funùiÚ + + $g‘F›ldBodyMod– +() + +69  +$this +-> + `g‘V®ue +(); + +70 + } +} + +76 +public + +funùiÚ + + $g‘V®ue +() + +78  +$this +-> +_v®ue +; + +79 + } +} + +85 +public + +funùiÚ + + $£tV®ue +( +$v®ue +) + +87 +$this +-> + `þ—rCachedV®ueIf +($this-> +_v®ue + !ð +$v®ue +); + +88 +$this +-> +_v®ue + = +$v®ue +; + +89 + } +} + +95 +public + +funùiÚ + + $g‘F›ldBody +() + +97 ià(! +$this +-> + `g‘CachedV®ue +()) + +99 +$this +-> + `£tCachedV®ue +( + +100 + `¡r_»¶aû +('\\', '\\\\', +$this +-> + `’codeWÜds +( + +101 +$this +, $this-> +_v®ue +, -1, $this-> + `g‘Ch¬£t +(), $this-> + `g‘Encod” +() + +105  +$this +-> + `g‘CachedV®ue +(); + +106 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Message.php + +1 + `£tCڋÁTy³ +('text/plain'); + +51 ià(! + `is_nuÎ +( +$ch¬£t +)) + +53 +$this +-> + `£tCh¬£t +( +$ch¬£t +); + +65 +public + +funùiÚ + + $£tBody +( +$body +, +$cڋÁTy³ + = +nuÎ +, +$ch¬£t + =‚ull) + +67 +·»Á +:: + `£tBody +( +$body +, +$cڋÁTy³ +); + +68 ià( + `is£t +( +$ch¬£t +)) + +70 +$this +-> + `£tCh¬£t +( +$ch¬£t +); + +72  +$this +; + +73 + } +} + +80 +public + +funùiÚ + + $g‘Ch¬£t +() + +82  +$this +-> + `_g‘H—d”P¬am‘” +('Content-Type', 'charset'); + +83 + } +} + +90 +public + +funùiÚ + + $£tCh¬£t +( +$ch¬£t +) + +92 +$this +-> + `_£tH—d”P¬am‘” +('CڋÁ-Ty³', 'ch¬£t', +$ch¬£t +); + +93 ià( +$ch¬£t + !=ð +$this +-> +_u£rCh¬£t +) + +95 +$this +-> + `_þ—rCache +(); + +97 +$this +-> +_u£rCh¬£t + = +$ch¬£t +; + +98 +·»Á +:: + `ch¬£tChªged +( +$ch¬£t +); + +99  +$this +; + +100 + } +} + +107 +public + +funùiÚ + + $g‘FÜm© +() + +109  +$this +-> + `_g‘H—d”P¬am‘” +('Content-Type', 'format'); + +110 + } +} + +117 +public + +funùiÚ + + $£tFÜm© +( +$fÜm© +) + +119 +$this +-> + `_£tH—d”P¬am‘” +('CڋÁ-Ty³', 'fÜm©', +$fÜm© +); + +120 +$this +-> +_u£rFÜm© + = +$fÜm© +; + +121  +$this +; + +122 + } +} + +129 +public + +funùiÚ + + $g‘D–Sp +() + +131  ( +$this +-> + `_g‘H—d”P¬am‘” +('Content-Type', 'delsp') == 'yes') + +132 ? +Œue + + +133 : +çl£ +; + +134 + } +} + +141 +public + +funùiÚ + + $£tD–Sp +( +$d–¥ + = +Œue +) + +143 +$this +-> + `_£tH—d”P¬am‘” +('CڋÁ-Ty³', 'd–¥', +$d–¥ + ? 'yes' : +nuÎ +); + +144 +$this +-> +_u£rD–Sp + = +$d–¥ +; + +145  +$this +; + +146 + } +} + +154 +public + +funùiÚ + + $g‘Ne¡šgLev– +() + +156  +$this +-> +_ášgLev– +; + +157 + } +} + +165 +public + +funùiÚ + + $ch¬£tChªged +( +$ch¬£t +) + +167 +$this +-> + `£tCh¬£t +( +$ch¬£t +); + +168 + } +} + +173 +´Ùeùed + +funùiÚ + + $_fixH—d”s +() + +175 +·»Á +:: + `_fixH—d”s +(); + +176 ià( + `couÁ +( +$this +-> + `g‘Chžd»n +())) + +178 +$this +-> + `_£tH—d”P¬am‘” +('CڋÁ-Ty³', 'ch¬£t', +nuÎ +); + +179 +$this +-> + `_£tH—d”P¬am‘” +('CڋÁ-Ty³', 'fÜm©', +nuÎ +); + +180 +$this +-> + `_£tH—d”P¬am‘” +('CڋÁ-Ty³', 'd–¥', +nuÎ +); + +184 +$this +-> + `£tCh¬£t +($this-> +_u£rCh¬£t +); + +185 +$this +-> + `£tFÜm© +($this-> +_u£rFÜm© +); + +186 +$this +-> + `£tD–Sp +($this-> +_u£rD–Sp +); + +188 + } +} + +191 +´Ùeùed + +funùiÚ + + $_£tNe¡šgLev– +( +$Ëv– +) + +193 +$this +-> +_ášgLev– + = +$Ëv– +; + +194 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/ParameterizedHeader.php + +1 +_’cod” + = +$’cod” +; + +49 +$this +-> +_·¿mEncod” + = +$·¿mEncod” +; + +50 +$this +-> +_ch¬£t + = +$ch¬£t +; + +59 +public + +funùiÚ + + $ü—‹MažboxH—d” +( +$Çme +, +$add»s£s + = +nuÎ +) + +61 +$h—d” + = +Ãw + + `Swiá_Mime_H—d”s_MažboxH—d” +( +$Çme +, +$this +-> +_’cod” +); + +62 ià( + `is£t +( +$add»s£s +)) + +64 +$h—d” +-> + `£tF›ldBodyMod– +( +$add»s£s +); + +66 +$this +-> + `_£tH—d”Ch¬£t +( +$h—d” +); + +67  +$h—d” +; + +68 + } +} + +76 +public + +funùiÚ + + $ü—‹D©eH—d” +( +$Çme +, +$time¡amp + = +nuÎ +) + +78 +$h—d” + = +Ãw + + `Swiá_Mime_H—d”s_D©eH—d” +( +$Çme +); + +79 ià( + `is£t +( +$time¡amp +)) + +81 +$h—d” +-> + `£tF›ldBodyMod– +( +$time¡amp +); + +83 +$this +-> + `_£tH—d”Ch¬£t +( +$h—d” +); + +84  +$h—d” +; + +85 + } +} + +93 +public + +funùiÚ + + $ü—‹TextH—d” +( +$Çme +, +$v®ue + = +nuÎ +) + +95 +$h—d” + = +Ãw + + `Swiá_Mime_H—d”s_Un¡ruùu»dH—d” +( +$Çme +, +$this +-> +_’cod” +); + +96 ià( + `is£t +( +$v®ue +)) + +98 +$h—d” +-> + `£tF›ldBodyMod– +( +$v®ue +); + +100 +$this +-> + `_£tH—d”Ch¬£t +( +$h—d” +); + +101  +$h—d” +; + +102 + } +} + +111 +public + +funùiÚ + +ü—‹P¬am‘”izedH—d” +( +$Çme +, +$v®ue + = +nuÎ +, + +112 +$·¿ms + = + $¬¿y +()) + +114 +$h—d” + = +Ãw + + `Swiá_Mime_H—d”s_P¬am‘”izedH—d” +( +$Çme +, + +115 +$this +-> +_’cod” +, ( + `¡¹Þow” +( +$Çme +) == 'content-disposition') + +116 ? +$this +-> +_·¿mEncod” + + +117 : +nuÎ + + +119 ià( + `is£t +( +$v®ue +)) + +121 +$h—d” +-> + `£tF›ldBodyMod– +( +$v®ue +); + +123 + `fܗch + ( +$·¿ms + +as + +$k + => +$v +) + +125 +$h—d” +-> + `£tP¬am‘” +( +$k +, +$v +); + +127 +$this +-> + `_£tH—d”Ch¬£t +( +$h—d” +); + +128  +$h—d” +; + +129 + } +} + +137 +public + +funùiÚ + + $ü—‹IdH—d” +( +$Çme +, +$ids + = +nuÎ +) + +139 +$h—d” + = +Ãw + + `Swiá_Mime_H—d”s_Id’tifiÿtiÚH—d” +( +$Çme +); + +140 ià( + `is£t +( +$ids +)) + +142 +$h—d” +-> + `£tF›ldBodyMod– +( +$ids +); + +144 +$this +-> + `_£tH—d”Ch¬£t +( +$h—d” +); + +145  +$h—d” +; + +146 + } +} + +154 +public + +funùiÚ + + $ü—‹P©hH—d” +( +$Çme +, +$·th + = +nuÎ +) + +156 +$h—d” + = +Ãw + + `Swiá_Mime_H—d”s_P©hH—d” +( +$Çme +); + +157 ià( + `is£t +( +$·th +)) + +159 +$h—d” +-> + `£tF›ldBodyMod– +( +$·th +); + +161 +$this +-> + `_£tH—d”Ch¬£t +( +$h—d” +); + +162  +$h—d” +; + +163 + } +} + +169 +public + +funùiÚ + + $ch¬£tChªged +( +$ch¬£t +) + +171 +$this +-> +_ch¬£t + = +$ch¬£t +; + +172 +$this +-> +_’cod” +-> + `ch¬£tChªged +( +$ch¬£t +); + +173 +$this +-> +_·¿mEncod” +-> + `ch¬£tChªged +( +$ch¬£t +); + +174 + } +} + +179 +´iv©e + +funùiÚ + + $_£tH—d”Ch¬£t +( +Swiá_Mime_H—d” + +$h—d” +) + +181 ià( + `is£t +( +$this +-> +_ch¬£t +)) + +183 +$h—d” +-> + `£tCh¬£t +( +$this +-> +_ch¬£t +); + +185 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/SimpleHeaderSet.php + +1 +_çùÜy + = +$çùÜy +; + +50 ià( + `is£t +( +$ch¬£t +)) + +52 +$this +-> + `£tCh¬£t +( +$ch¬£t +); + +61 +public + +funùiÚ + + $£tCh¬£t +( +$ch¬£t +) + +63 +$this +-> +_ch¬£t + = +$ch¬£t +; + +64 +$this +-> +_çùÜy +-> + `ch¬£tChªged +( +$ch¬£t +); + +65 +$this +-> + `_nÙifyH—d”sOfCh¬£t +( +$ch¬£t +); + +66 + } +} + +74 +public + +funùiÚ + + $addMažboxH—d” +( +$Çme +, +$add»s£s + = +nuÎ +) + +76 +$this +-> + `_¡ÜeH—d” +( +$Çme +, + +77 +$this +-> +_çùÜy +-> + `ü—‹MažboxH—d” +( +$Çme +, +$add»s£s +)); + +78 + } +} + +86 +public + +funùiÚ + + $addD©eH—d” +( +$Çme +, +$time¡amp + = +nuÎ +) + +88 +$this +-> + `_¡ÜeH—d” +( +$Çme +, + +89 +$this +-> +_çùÜy +-> + `ü—‹D©eH—d” +( +$Çme +, +$time¡amp +)); + +90 + } +} + +98 +public + +funùiÚ + + $addTextH—d” +( +$Çme +, +$v®ue + = +nuÎ +) + +100 +$this +-> + `_¡ÜeH—d” +( +$Çme +, + +101 +$this +-> +_çùÜy +-> + `ü—‹TextH—d” +( +$Çme +, +$v®ue +)); + +102 + } +} + +111 +public + +funùiÚ + +addP¬am‘”izedH—d” +( +$Çme +, +$v®ue + = +nuÎ +, + +112 +$·¿ms + = + $¬¿y +()) + +114 +$this +-> + `_¡ÜeH—d” +( +$Çme +, + +115 +$this +-> +_çùÜy +-> + `ü—‹P¬am‘”izedH—d” +( +$Çme +, +$v®ue +, + +116 +$·¿ms +)); + +117 + } +} + +125 +public + +funùiÚ + + $addIdH—d” +( +$Çme +, +$ids + = +nuÎ +) + +127 +$this +-> + `_¡ÜeH—d” +( +$Çme +, $this-> +_çùÜy +-> + `ü—‹IdH—d” +($Çme, +$ids +)); + +128 + } +} + +136 +public + +funùiÚ + + $addP©hH—d” +( +$Çme +, +$·th + = +nuÎ +) + +138 +$this +-> + `_¡ÜeH—d” +( +$Çme +, $this-> +_çùÜy +-> + `ü—‹P©hH—d” +($Çme, +$·th +)); + +139 + } +} + +151 +public + +funùiÚ + + $has +( +$Çme +, +$šdex + = 0) + +153 +$low”Name + = + `¡¹Þow” +( +$Çme +); + +154  + `¬¿y_key_exi¡s +( +$low”Name +, +$this +-> +_h—d”s +) + +155 && + `¬¿y_key_exi¡s +( +$šdex +, +$this +-> +_h—d”s +[ +$low”Name +]); + +156 + } +} + +170 +public + +funùiÚ + + $£t +( +Swiá_Mime_H—d” + +$h—d” +, +$šdex + = 0) + +172 +$this +-> + `_¡ÜeH—d” +( +$h—d” +-> + `g‘F›ldName +(), $h—d”, +$šdex +); + +173 + } +} + +186 +public + +funùiÚ + + $g‘ +( +$Çme +, +$šdex + = 0) + +188 ià( +$this +-> + `has +( +$Çme +, +$šdex +)) + +190 +$low”Name + = + `¡¹Þow” +( +$Çme +); + +191  +$this +-> +_h—d”s +[ +$low”Name +][ +$šdex +]; + +193 + } +} + +202 +public + +funùiÚ + + $g‘AÎ +( +$Çme + = +nuÎ +) + +204 ià(! + `is£t +( +$Çme +)) + +206 +$h—d”s + = + `¬¿y +(); + +207 + `fܗch + ( +$this +-> +_h—d”s + +as + +$cÞËùiÚ +) + +209 +$h—d”s + = + `¬¿y_m”ge +($h—d”s, +$cÞËùiÚ +); + +211  +$h—d”s +; + +214 +$low”Name + = + `¡¹Þow” +( +$Çme +); + +215 ià(! + `¬¿y_key_exi¡s +( +$low”Name +, +$this +-> +_h—d”s +)) + +217  + `¬¿y +(); + +219  +$this +-> +_h—d”s +[ +$low”Name +]; + +220 + } +} + +230 +public + +funùiÚ + + $»move +( +$Çme +, +$šdex + = 0) + +232 +$low”Name + = + `¡¹Þow” +( +$Çme +); + +233 + `un£t +( +$this +-> +_h—d”s +[ +$low”Name +][ +$šdex +]); + +234 + } +} + +241 +public + +funùiÚ + + $»moveAÎ +( +$Çme +) + +243 +$low”Name + = + `¡¹Þow” +( +$Çme +); + +244 + `un£t +( +$this +-> +_h—d”s +[ +$low”Name +]); + +245 + } +} + +252 +public + +funùiÚ + + $ÃwIn¡ªû +() + +254  +Ãw + + `£lf +( +$this +-> +_çùÜy +); + +255 + } +} + +264 +public + +funùiÚ + + $defšeOrd”šg +( +¬¿y + +$£qu’û +) + +266 +$this +-> +_Üd” + = + `¬¿y_æ +( + `¬¿y_m­ +('¡¹Þow”', +$£qu’û +)); + +267 + } +} + +276 +public + +funùiÚ + + $£tAlwaysDi¥Ïyed +( +¬¿y + +$Çmes +) + +278 +$this +-> +_»quœed + = + `¬¿y_æ +( + `¬¿y_m­ +('¡¹Þow”', +$Çmes +)); + +279 + } +} + +286 +public + +funùiÚ + + $ch¬£tChªged +( +$ch¬£t +) + +288 +$this +-> + `£tCh¬£t +( +$ch¬£t +); + +289 + } +} + +296 +public + +funùiÚ + + $toSŒšg +() + +298 +$¡ršg + = ''; + +299 +$h—d”s + = +$this +-> +_h—d”s +; + +300 ià( +$this +-> + `_ÿnSÜt +()) + +302 + `uksÜt +( +$h—d”s +, + `¬¿y +( +$this +, '_sortHeaders')); + +304 + `fܗch + ( +$h—d”s + +as + +$cÞËùiÚ +) + +306 + `fܗch + ( +$cÞËùiÚ + +as + +$h—d” +) + +308 ià( +$this +-> + `_isDi¥Ïyed +( +$h—d” +è|| $h—d”-> + `g‘F›ldBody +() != '') + +310 +$¡ršg + .ð +$h—d” +-> + `toSŒšg +(); + +314  +$¡ršg +; + +315 + } +} + +324 +public + +funùiÚ + + $__toSŒšg +() + +326  +$this +-> + `toSŒšg +(); + +327 + } +} + +332 +´iv©e + +funùiÚ + + $_¡ÜeH—d” +( +$Çme +, +Swiá_Mime_H—d” + +$h—d” +, +$off£t + = +nuÎ +) + +334 ià(! + `is£t +( +$this +-> +_h—d”s +[ + `¡¹Þow” +( +$Çme +)])) + +336 +$this +-> +_h—d”s +[ + `¡¹Þow” +( +$Çme +)] = + `¬¿y +(); + +338 ià(! + `is£t +( +$off£t +)) + +340 +$this +-> +_h—d”s +[ + `¡¹Þow” +( +$Çme +)][] = +$h—d” +; + +344 +$this +-> +_h—d”s +[ + `¡¹Þow” +( +$Çme +)][ +$off£t +] = +$h—d” +; + +346 + } +} + +349 +´iv©e + +funùiÚ + + $_ÿnSÜt +() + +351  + `couÁ +( +$this +-> +_Üd” +) > 0; + +352 + } +} + +355 +´iv©e + +funùiÚ + + $_sÜtH—d”s +( +$a +, +$b +) + +357 +$low”A + = + `¡¹Þow” +( +$a +); + +358 +$low”B + = + `¡¹Þow” +( +$b +); + +359 +$aPos + = + `¬¿y_key_exi¡s +( +$low”A +, +$this +-> +_Üd” +) + +360 ? +$this +-> +_Üd” +[ +$low”A +] + +362 +$bPos + = + `¬¿y_key_exi¡s +( +$low”B +, +$this +-> +_Üd” +) + +363 ? +$this +-> +_Üd” +[ +$low”B +] + +366 ià( +$aPos + == -1) + +370 + `–£if + ( +$bPos + == -1) + +375  ( +$aPos + < +$bPos +) ? -1 : 1; + +376 + } +} + +379 +´iv©e + +funùiÚ + + $_isDi¥Ïyed +( +Swiá_Mime_H—d” + +$h—d” +) + +381  + `¬¿y_key_exi¡s +( + `¡¹Þow” +( +$h—d” +-> + `g‘F›ldName +()), +$this +-> +_»quœed +); + +382 + } +} + +385 +´iv©e + +funùiÚ + + $_nÙifyH—d”sOfCh¬£t +( +$ch¬£t +) + +387 + `fܗch + ( +$this +-> +_h—d”s + +as + +$h—d”Group +) + +389 + `fܗch + ( +$h—d”Group + +as + +$h—d” +) + +391 +$h—d” +-> + `£tCh¬£t +( +$ch¬£t +); + +394 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/SimpleMessage.php + +1 + `g‘H—d”s +()-> + `defšeOrd”šg +( + `¬¿y +( + +53 +$this +-> + `g‘H—d”s +()-> + `£tAlwaysDi¥Ïyed +( + +54 + `¬¿y +('Date', 'Message-ID', 'From') + +56 +$this +-> + `g‘H—d”s +()-> + `addTextH—d” +('MIME-Version', '1.0'); + +57 +$this +-> + `£tD©e +( + `time +()); + +58 +$this +-> + `£tId +($this-> + `g‘Id +()); + +59 +$this +-> + `g‘H—d”s +()-> + `addMažboxH—d” +('From'); + +66 +public + +funùiÚ + + $g‘Ne¡šgLev– +() + +68  +£lf +:: +LEVEL_TOP +; + +69 + } +} + +75 +public + +funùiÚ + + $£tSubjeù +( +$subjeù +) + +77 ià(! +$this +-> + `_£tH—d”F›ldMod– +('Subjeù', +$subjeù +)) + +79 +$this +-> + `g‘H—d”s +()-> + `addTextH—d” +('Subjeù', +$subjeù +); + +81  +$this +; + +82 + } +} + +88 +public + +funùiÚ + + $g‘Subjeù +() + +90  +$this +-> + `_g‘H—d”F›ldMod– +('Subject'); + +91 + } +} + +97 +public + +funùiÚ + + $£tD©e +( +$d©e +) + +99 ià(! +$this +-> + `_£tH—d”F›ldMod– +('D©e', +$d©e +)) + +101 +$this +-> + `g‘H—d”s +()-> + `addD©eH—d” +('D©e', +$d©e +); + +103  +$this +; + +104 + } +} + +110 +public + +funùiÚ + + $g‘D©e +() + +112  +$this +-> + `_g‘H—d”F›ldMod– +('Date'); + +113 + } +} + +119 +public + +funùiÚ + + $£tR‘uºP©h +( +$add»ss +) + +121 ià(! +$this +-> + `_£tH—d”F›ldMod– +('R‘uº-P©h', +$add»ss +)) + +123 +$this +-> + `g‘H—d”s +()-> + `addP©hH—d” +('R‘uº-P©h', +$add»ss +); + +125  +$this +; + +126 + } +} + +132 +public + +funùiÚ + + $g‘R‘uºP©h +() + +134  +$this +-> + `_g‘H—d”F›ldMod– +('Return-Path'); + +135 + } +} + +143 +public + +funùiÚ + + $£tS’d” +( +$add»ss +, +$Çme + = +nuÎ +) + +145 ià(! + `is_¬¿y +( +$add»ss +è&& + `is£t +( +$Çme +)) + +147 +$add»ss + = + `¬¿y +($add»s => +$Çme +); + +150 ià(! +$this +-> + `_£tH—d”F›ldMod– +('S’d”', ( +¬¿y +è +$add»ss +)) + +152 +$this +-> + `g‘H—d”s +()-> + `addMažboxH—d” +('S’d”', ( +¬¿y +è +$add»ss +); + +154  +$this +; + +155 + } +} + +161 +public + +funùiÚ + + $g‘S’d” +() + +163  +$this +-> + `_g‘H—d”F›ldMod– +('Sender'); + +164 + } +} + +174 +public + +funùiÚ + + $addFrom +( +$add»ss +, +$Çme + = +nuÎ +) + +176 +$cu¼’t + = +$this +-> + `g‘From +(); + +177 +$cu¼’t +[ +$add»ss +] = +$Çme +; + +178  +$this +-> + `£tFrom +( +$cu¼’t +); + +179 + } +} + +192 +public + +funùiÚ + + $£tFrom +( +$add»s£s +, +$Çme + = +nuÎ +) + +194 ià(! + `is_¬¿y +( +$add»s£s +è&& + `is£t +( +$Çme +)) + +196 +$add»s£s + = + `¬¿y +($add»s£ => +$Çme +); + +199 ià(! +$this +-> + `_£tH—d”F›ldMod– +('From', ( +¬¿y +è +$add»s£s +)) + +201 +$this +-> + `g‘H—d”s +()-> + `addMažboxH—d” +('From', ( +¬¿y +è +$add»s£s +); + +203  +$this +; + +204 + } +} + +211 +public + +funùiÚ + + $g‘From +() + +213  +$this +-> + `_g‘H—d”F›ldMod– +('From'); + +214 + } +} + +224 +public + +funùiÚ + + $addR•lyTo +( +$add»ss +, +$Çme + = +nuÎ +) + +226 +$cu¼’t + = +$this +-> + `g‘R•lyTo +(); + +227 +$cu¼’t +[ +$add»ss +] = +$Çme +; + +228  +$this +-> + `£tR•lyTo +( +$cu¼’t +); + +229 + } +} + +242 +public + +funùiÚ + + $£tR•lyTo +( +$add»s£s +, +$Çme + = +nuÎ +) + +244 ià(! + `is_¬¿y +( +$add»s£s +è&& + `is£t +( +$Çme +)) + +246 +$add»s£s + = + `¬¿y +($add»s£ => +$Çme +); + +249 ià(! +$this +-> + `_£tH—d”F›ldMod– +('R•ly-To', ( +¬¿y +è +$add»s£s +)) + +251 +$this +-> + `g‘H—d”s +()-> + `addMažboxH—d” +('R•ly-To', ( +¬¿y +è +$add»s£s +); + +253  +$this +; + +254 + } +} + +261 +public + +funùiÚ + + $g‘R•lyTo +() + +263  +$this +-> + `_g‘H—d”F›ldMod– +('Reply-To'); + +264 + } +} + +274 +public + +funùiÚ + + $addTo +( +$add»ss +, +$Çme + = +nuÎ +) + +276 +$cu¼’t + = +$this +-> + `g‘To +(); + +277 +$cu¼’t +[ +$add»ss +] = +$Çme +; + +278  +$this +-> + `£tTo +( +$cu¼’t +); + +279 + } +} + +292 +public + +funùiÚ + + $£tTo +( +$add»s£s +, +$Çme + = +nuÎ +) + +294 ià(! + `is_¬¿y +( +$add»s£s +è&& + `is£t +( +$Çme +)) + +296 +$add»s£s + = + `¬¿y +($add»s£ => +$Çme +); + +299 ià(! +$this +-> + `_£tH—d”F›ldMod– +('To', ( +¬¿y +è +$add»s£s +)) + +301 +$this +-> + `g‘H—d”s +()-> + `addMažboxH—d” +('To', ( +¬¿y +è +$add»s£s +); + +303  +$this +; + +304 + } +} + +311 +public + +funùiÚ + + $g‘To +() + +313  +$this +-> + `_g‘H—d”F›ldMod– +('To'); + +314 + } +} + +324 +public + +funùiÚ + + $addCc +( +$add»ss +, +$Çme + = +nuÎ +) + +326 +$cu¼’t + = +$this +-> + `g‘Cc +(); + +327 +$cu¼’t +[ +$add»ss +] = +$Çme +; + +328  +$this +-> + `£tCc +( +$cu¼’t +); + +329 + } +} + +340 +public + +funùiÚ + + $£tCc +( +$add»s£s +, +$Çme + = +nuÎ +) + +342 ià(! + `is_¬¿y +( +$add»s£s +è&& + `is£t +( +$Çme +)) + +344 +$add»s£s + = + `¬¿y +($add»s£ => +$Çme +); + +347 ià(! +$this +-> + `_£tH—d”F›ldMod– +('Cc', ( +¬¿y +è +$add»s£s +)) + +349 +$this +-> + `g‘H—d”s +()-> + `addMažboxH—d” +('Cc', ( +¬¿y +è +$add»s£s +); + +351  +$this +; + +352 + } +} + +359 +public + +funùiÚ + + $g‘Cc +() + +361  +$this +-> + `_g‘H—d”F›ldMod– +('Cc'); + +362 + } +} + +372 +public + +funùiÚ + + $addBcc +( +$add»ss +, +$Çme + = +nuÎ +) + +374 +$cu¼’t + = +$this +-> + `g‘Bcc +(); + +375 +$cu¼’t +[ +$add»ss +] = +$Çme +; + +376  +$this +-> + `£tBcc +( +$cu¼’t +); + +377 + } +} + +388 +public + +funùiÚ + + $£tBcc +( +$add»s£s +, +$Çme + = +nuÎ +) + +390 ià(! + `is_¬¿y +( +$add»s£s +è&& + `is£t +( +$Çme +)) + +392 +$add»s£s + = + `¬¿y +($add»s£ => +$Çme +); + +395 ià(! +$this +-> + `_£tH—d”F›ldMod– +('Bcc', ( +¬¿y +è +$add»s£s +)) + +397 +$this +-> + `g‘H—d”s +()-> + `addMažboxH—d” +('Bcc', ( +¬¿y +è +$add»s£s +); + +399  +$this +; + +400 + } +} + +407 +public + +funùiÚ + + $g‘Bcc +() + +409  +$this +-> + `_g‘H—d”F›ldMod– +('Bcc'); + +410 + } +} + +417 +public + +funùiÚ + + $£tPriܙy +( +$´iܙy +) + +419 +$´iܙyM­ + = + `¬¿y +( + +426 +$pM­Keys + = + `¬¿y_keys +( +$´iܙyM­ +); + +427 ià( +$´iܙy + > + `max +( +$pM­Keys +)) + +429 +$´iܙy + = + `max +( +$pM­Keys +); + +431 + `–£if + ( +$´iܙy + < + `mš +( +$pM­Keys +)) + +433 +$´iܙy + = + `mš +( +$pM­Keys +); + +435 ià(! +$this +-> + `_£tH—d”F›ldMod– +('X-Priority', + +436 + `¥rštf +('%d (%s)', +$´iܙy +, +$´iܙyM­ +[$priority]))) + +438 +$this +-> + `g‘H—d”s +()-> + `addTextH—d” +('X-Priority', + +439 + `¥rštf +('%d (%s)', +$´iܙy +, +$´iܙyM­ +[$priority])); + +441  +$this +; + +442 + } +} + +450 +public + +funùiÚ + + $g‘Priܙy +() + +452 + `li¡ +( +$´iܙy +èð + `ssÿnf +( +$this +-> + `_g‘H—d”F›ldMod– +('X-Priority'), + +455  + `is£t +( +$´iܙy +) ? $priority : 3; + +456 + } +} + +462 +public + +funùiÚ + + $£tR—dReûtTo +( +$add»s£s +) + +464 ià(! +$this +-> + `_£tH—d”F›ldMod– +('Di¥os™iÚ-NÙifiÿtiÚ-To', +$add»s£s +)) + +466 +$this +-> + `g‘H—d”s +() + +467 -> + `addMažboxH—d” +('Di¥os™iÚ-NÙifiÿtiÚ-To', +$add»s£s +); + +469  +$this +; + +470 + } +} + +476 +public + +funùiÚ + + $g‘R—dReûtTo +() + +478  +$this +-> + `_g‘H—d”F›ldMod– +('Disposition-Notification-To'); + +479 + } +} + +485 +public + +funùiÚ + + $©ch +( +Swiá_Mime_MimeEÁ™y + +$’t™y +) + +487 +$this +-> + `£tChžd»n +( + `¬¿y_m”ge +($this-> + `g‘Chžd»n +(), + `¬¿y +( +$’t™y +))); + +488  +$this +; + +489 + } +} + +495 +public + +funùiÚ + + $d‘ach +( +Swiá_Mime_MimeEÁ™y + +$’t™y +) + +497 +$ÃwChžd»n + = + `¬¿y +(); + +498 + `fܗch + ( +$this +-> + `g‘Chžd»n +(è +as + +$chžd +) + +500 ià( +$’t™y + !=ð +$chžd +) + +502 +$ÃwChžd»n +[] = +$chžd +; + +505 +$this +-> + `£tChžd»n +( +$ÃwChžd»n +); + +506  +$this +; + +507 + } +} + +515 +public + +funùiÚ + + $embed +( +Swiá_Mime_MimeEÁ™y + +$’t™y +) + +517 +$this +-> + `©ch +( +$’t™y +); + +518  'cid:' . +$’t™y +-> + `g‘Id +(); + +519 + } +} + +525 +public + +funùiÚ + + $toSŒšg +() + +527 ià( + `couÁ +( +$chžd»n + = +$this +-> + `g‘Chžd»n +()è> 0 && $this-> + `g‘Body +() != '') + +529 +$this +-> + `£tChžd»n +( + `¬¿y_m”ge +( + `¬¿y +($this-> + `_becomeMimeP¬t +()), +$chžd»n +)); + +530 +$¡ršg + = +·»Á +:: + `toSŒšg +(); + +531 +$this +-> + `£tChžd»n +( +$chžd»n +); + +535 +$¡ršg + = +·»Á +:: + `toSŒšg +(); + +537  +$¡ršg +; + +538 + } +} + +547 +public + +funùiÚ + + $__toSŒšg +() + +549  +$this +-> + `toSŒšg +(); + +550 + } +} + +556 +public + +funùiÚ + + $toBy‹SŒ—m +( +Swiá_IÅutBy‹SŒ—m + +$is +) + +558 ià( + `couÁ +( +$chžd»n + = +$this +-> + `g‘Chžd»n +()è> 0 && $this-> + `g‘Body +() != '') + +560 +$this +-> + `£tChžd»n +( + `¬¿y_m”ge +( + `¬¿y +($this-> + `_becomeMimeP¬t +()), +$chžd»n +)); + +561 +·»Á +:: + `toBy‹SŒ—m +( +$is +); + +562 +$this +-> + `£tChžd»n +( +$chžd»n +); + +566 +·»Á +:: + `toBy‹SŒ—m +( +$is +); + +568 + } +} + +573 +´Ùeùed + +funùiÚ + + $_g‘IdF›ld +() + +576 + } +} + +581 +´iv©e + +funùiÚ + + $_becomeMimeP¬t +() + +583 +$·¹ + = +Ãw + + `·»Á +( +$this +-> + `g‘H—d”s +()-> + `ÃwIn¡ªû +(), $this-> + `g‘Encod” +(), + +584 +$this +-> + `_g‘Cache +(), $this-> +_u£rCh¬£t + + +586 +$·¹ +-> + `£tCڋÁTy³ +( +$this +-> +_u£rCڋÁTy³ +); + +587 +$·¹ +-> + `£tBody +( +$this +-> + `g‘Body +()); + +588 +$·¹ +-> + `£tFÜm© +( +$this +-> +_u£rFÜm© +); + +589 +$·¹ +-> + `£tD–Sp +( +$this +-> +_u£rD–Sp +); + +590 +$·¹ +-> + `_£tNe¡šgLev– +( +$this +-> + `_g‘TÝNe¡šgLev– +()); + +591  +$·¹ +; + +592 + } +} + +595 +´iv©e + +funùiÚ + + $_g‘TÝNe¡šgLev– +() + +597 +$highe¡Lev– + = +$this +-> + `g‘Ne¡šgLev– +(); + +598 + `fܗch + ( +$this +-> + `g‘Chžd»n +(è +as + +$chžd +) + +600 +$chždLev– + = +$chžd +-> + `g‘Ne¡šgLev– +(); + +601 ià( +$highe¡Lev– + < +$chždLev– +) + +603 +$highe¡Lev– + = +$chždLev– +; + +606  +$highe¡Lev– +; + +607 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/SimpleMimeEntity.php + +1 +¬¿y +( +£lf +:: +LEVEL_TOP +, s–f:: +LEVEL_MIXED +), + +40 'muɝ¬t/®‹º©ive' => +¬¿y +( +£lf +:: +LEVEL_MIXED +, s–f:: +LEVEL_ALTERNATIVE +), + +41 'muɝ¬t/»Ï‹d' => +¬¿y +( +£lf +:: +LEVEL_ALTERNATIVE +, s–f:: +LEVEL_RELATED +) + +45 +´iv©e + + m$_compoundLev–Fž‹rs + = +¬¿y +(); + +48 +´iv©e + + m$_ášgLev– + = +£lf +:: +LEVEL_ALTERNATIVE +; + +51 +´iv©e + + m$_ÿche +; + +54 +´iv©e + + m$_immedŸ‹Chžd»n + = +¬¿y +(); + +57 +´iv©e + + m$_chžd»n + = +¬¿y +(); + +60 +´iv©e + + m$_maxLšeL’gth + = 78; + +63 +´iv©e + + m$_®‹º©iveP¬tOrd” + = +¬¿y +( + +70 +´iv©e + + m$_id +; + +73 +´iv©e + + m$_ÿcheKey +; + +75 +´Ùeùed + + m$_u£rCڋÁTy³ +; + +83 +public + +funùiÚ + + $__cÚ¡ruù +( +Swiá_Mime_H—d”S‘ + +$h—d”s +, + +84 +Swiá_Mime_CڋÁEncod” + +$’cod” +, +Swiá_KeyCache + +$ÿche +) + +86 +$this +-> +_ÿcheKey + = + `uniqid +(); + +87 +$this +-> +_ÿche + = +$ÿche +; + +88 +$this +-> +_h—d”s + = +$h—d”s +; + +89 +$this +-> + `£tEncod” +( +$’cod” +); + +90 +$this +-> +_h—d”s +-> + `defšeOrd”šg +( + +91 + `¬¿y +('Content-Type', 'Content-Transfer-Encoding') + +107 +$this +-> +_compoundLev–Fž‹rs + = + `¬¿y +( + +108 ( +£lf +:: +LEVEL_ALTERNATIVE + + s–f:: +LEVEL_RELATED +è=> + `¬¿y +( + +109 +£lf +:: +LEVEL_ALTERNATIVE + => + `¬¿y +( + +110 '‹xt/¶aš' => +£lf +:: +LEVEL_ALTERNATIVE +, + +111 '‹xt/html' => +£lf +:: +LEVEL_RELATED + + +115 +$this +-> + `g’”©eId +(); + +122 +public + +funùiÚ + + $g’”©eId +() + +124 +$idLeá + = + `time +(è. '.' . + `uniqid +(); + +125 +$idRight + = ! + `em±y +( +$_SERVER +['SERVER_NAME']) + +126 ? +$_SERVER +['SERVER_NAME'] + +128 +$this +-> +_id + = +$idLeá + . '@' . +$idRight +; + +129  +$this +-> + `g‘Id +(); + +130 + } +} + +136 +public + +funùiÚ + + $g‘H—d”s +() + +138  +$this +-> +_h—d”s +; + +139 + } +} + +146 +public + +funùiÚ + + $g‘Ne¡šgLev– +() + +148  +$this +-> +_ášgLev– +; + +149 + } +} + +155 +public + +funùiÚ + + $g‘CڋÁTy³ +() + +157  +$this +-> + `_g‘H—d”F›ldMod– +('Content-Type'); + +158 + } +} + +164 +public + +funùiÚ + + $£tCڋÁTy³ +( +$ty³ +) + +166 +$this +-> + `_£tCڋÁTy³InH—d”s +( +$ty³ +); + +169 +$this +-> +_u£rCڋÁTy³ + = +$ty³ +; + +170  +$this +; + +171 + } +} + +178 +public + +funùiÚ + + $g‘Id +() + +180  +$this +-> +_h—d”s +-> + `has +($this-> + `_g‘IdF›ld +()) + +181 ? + `cu¼’t +(( +¬¿y +è +$this +-> + `_g‘H—d”F›ldMod– +($this-> + `_g‘IdF›ld +())) + +182 : +$this +-> +_id +; + +183 + } +} + +189 +public + +funùiÚ + + $£tId +( +$id +) + +191 ià(! +$this +-> + `_£tH—d”F›ldMod– +($this-> + `_g‘IdF›ld +(), +$id +)) + +193 +$this +-> +_h—d”s +-> + `addIdH—d” +($this-> + `_g‘IdF›ld +(), +$id +); + +195 +$this +-> +_id + = +$id +; + +196  +$this +; + +197 + } +} + +204 +public + +funùiÚ + + $g‘DesütiÚ +() + +206  +$this +-> + `_g‘H—d”F›ldMod– +('Content-Description'); + +207 + } +} + +214 +public + +funùiÚ + + $£tDesütiÚ +( +$desütiÚ +) + +216 ià(! +$this +-> + `_£tH—d”F›ldMod– +('CڋÁ-DesütiÚ', +$desütiÚ +)) + +218 +$this +-> +_h—d”s +-> + `addTextH—d” +('CڋÁ-DesütiÚ', +$desütiÚ +); + +220  +$this +; + +221 + } +} + +227 +public + +funùiÚ + + $g‘MaxLšeL’gth +() + +229  +$this +-> +_maxLšeL’gth +; + +230 + } +} + +237 +public + +funùiÚ + + $£tMaxLšeL’gth +( +$Ëngth +) + +239 +$this +-> +_maxLšeL’gth + = +$Ëngth +; + +240  +$this +; + +241 + } +} + +247 +public + +funùiÚ + + $g‘Chžd»n +() + +249  +$this +-> +_chžd»n +; + +250 + } +} + +257 +public + +funùiÚ + + $£tChžd»n +( +¬¿y + +$chžd»n +, +$compoundLev– + = +nuÎ +) + +261 +$compoundLev– + = + `is£t +($compoundLevel) + +262 ? +$compoundLev– + + +263 : +$this +-> + `_g‘CompoundLev– +( +$chžd»n +) + +266 +$immedŸ‹Chžd»n + = + `¬¿y +(); + +267 +$g¿ndchžd»n + = + `¬¿y +(); + +268 +$ÃwCڋÁTy³ + = +$this +-> +_u£rCڋÁTy³ +; + +270 + `fܗch + ( +$chžd»n + +as + +$chžd +) + +272 +$Ëv– + = +$this +-> + `_g‘N“dedChždLev– +( +$chžd +, +$compoundLev– +); + +273 ià( + `em±y +( +$immedŸ‹Chžd»n +)) + +275 +$immedŸ‹Chžd»n + = + `¬¿y +( +$chžd +); + +279 +$ÃxtLev– + = +$this +-> + `_g‘N“dedChždLev– +( +$immedŸ‹Chžd»n +[0], +$compoundLev– +); + +280 ià( +$ÃxtLev– + =ð +$Ëv– +) + +282 +$immedŸ‹Chžd»n +[] = +$chžd +; + +284 + `–£if + ( +$Ëv– + < +$ÃxtLev– +) + +287 +$g¿ndchžd»n + = + `¬¿y_m”ge +($g¿ndchžd»n, +$immedŸ‹Chžd»n +); + +289 +$immedŸ‹Chžd»n + = + `¬¿y +( +$chžd +); + +293 +$g¿ndchžd»n +[] = +$chžd +; + +298 ià(! + `em±y +( +$immedŸ‹Chžd»n +)) + +300 +$lowe¡Lev– + = +$this +-> + `_g‘N“dedChždLev– +( +$immedŸ‹Chžd»n +[0], +$compoundLev– +); + +304 + `fܗch + ( +$this +-> +_compos™eRªges + +as + +$medŸTy³ + => +$¿nge +) + +306 ià( +$lowe¡Lev– + > +$¿nge +[0] + +307 && +$lowe¡Lev– + <ð +$¿nge +[1]) + +309 +$ÃwCڋÁTy³ + = +$medŸTy³ +; + +315 ià(! + `em±y +( +$g¿ndchžd»n +)) + +317 +$sub’t™y + = +$this +-> + `_ü—‹Chžd +(); + +318 +$sub’t™y +-> + `_£tNe¡šgLev– +( +$lowe¡Lev– +); + +319 +$sub’t™y +-> + `£tChžd»n +( +$g¿ndchžd»n +, +$compoundLev– +); + +320 + `¬¿y_unshiá +( +$immedŸ‹Chžd»n +, +$sub’t™y +); + +324 +$this +-> +_immedŸ‹Chžd»n + = +$immedŸ‹Chžd»n +; + +325 +$this +-> +_chžd»n + = +$chžd»n +; + +326 +$this +-> + `_£tCڋÁTy³InH—d”s +( +$ÃwCڋÁTy³ +); + +327 +$this +-> + `_fixH—d”s +(); + +328 +$this +-> + `_sÜtChžd»n +(); + +330  +$this +; + +331 + } +} + +337 +public + +funùiÚ + + $g‘Body +() + +339  ( +$this +-> +_body + +š¡ªûof + +Swiá_OuutBy‹SŒ—m +) + +340 ? +$this +-> + `_»adSŒ—m +($this-> +_body +) + +341 : +$this +-> +_body +; + +342 + } +} + +350 +public + +funùiÚ + + $£tBody +( +$body +, +$cڋÁTy³ + = +nuÎ +) + +352 ià( +$body + !=ð +$this +-> +_body +) + +354 +$this +-> + `_þ—rCache +(); + +357 +$this +-> +_body + = +$body +; + +358 ià( + `is£t +( +$cڋÁTy³ +)) + +360 +$this +-> + `£tCڋÁTy³ +( +$cڋÁTy³ +); + +362  +$this +; + +363 + } +} + +369 +public + +funùiÚ + + $g‘Encod” +() + +371  +$this +-> +_’cod” +; + +372 + } +} + +378 +public + +funùiÚ + + $£tEncod” +( +Swiá_Mime_CڋÁEncod” + +$’cod” +) + +380 ià( +$’cod” + !=ð +$this +-> +_’cod” +) + +382 +$this +-> + `_þ—rCache +(); + +385 +$this +-> +_’cod” + = +$’cod” +; + +386 +$this +-> + `_£tEncodšg +( +$’cod” +-> + `g‘Name +()); + +387 +$this +-> + `_nÙifyEncod”Chªged +( +$’cod” +); + +388  +$this +; + +389 + } +} + +395 +public + +funùiÚ + + $g‘Bound¬y +() + +397 ià(! + `is£t +( +$this +-> +_bound¬y +)) + +399 +$this +-> +_bound¬y + = '_=_swiá_v4_' . + `time +(è. + `uniqid +() . '_=_'; + +401  +$this +-> +_bound¬y +; + +402 + } +} + +409 +public + +funùiÚ + + $£tBound¬y +( +$bound¬y +) + +411 +$this +-> + `_as£¹V®idBound¬y +( +$bound¬y +); + +412 +$this +-> +_bound¬y + = +$bound¬y +; + +413  +$this +; + +414 + } +} + +421 +public + +funùiÚ + + $ch¬£tChªged +( +$ch¬£t +) + +423 +$this +-> + `_nÙifyCh¬£tChªged +( +$ch¬£t +); + +424 + } +} + +431 +public + +funùiÚ + + $’cod”Chªged +( +Swiá_Mime_CڋÁEncod” + +$’cod” +) + +433 +$this +-> + `_nÙifyEncod”Chªged +( +$’cod” +); + +434 + } +} + +440 +public + +funùiÚ + + $toSŒšg +() + +442 +$¡ršg + = +$this +-> +_h—d”s +-> + `toSŒšg +(); + +443 ià( + `is£t +( +$this +-> +_body +è&& + `em±y +($this-> +_immedŸ‹Chžd»n +)) + +445 ià( +$this +-> +_ÿche +-> + `hasKey +($this-> +_ÿcheKey +, 'body')) + +447 +$body + = +$this +-> +_ÿche +-> + `g‘SŒšg +($this-> +_ÿcheKey +, 'body'); + +451 +$body + = "\r\n" . +$this +-> +_’cod” +-> + `’codeSŒšg +($this-> + `g‘Body +(), 0, + +452 +$this +-> + `g‘MaxLšeL’gth +() + +454 +$this +-> +_ÿche +-> + `£tSŒšg +($this-> +_ÿcheKey +, 'body', +$body +, + +455 +Swiá_KeyCache +:: +MODE_WRITE + + +458 +$¡ršg + .ð +$body +; + +461 ià(! + `em±y +( +$this +-> +_immedŸ‹Chžd»n +)) + +463 + `fܗch + ( +$this +-> +_immedŸ‹Chžd»n + +as + +$chžd +) + +465 +$¡ršg + .ð"\r\n\r\n--" . +$this +-> + `g‘Bound¬y +() . "\r\n"; + +466 +$¡ršg + .ð +$chžd +-> + `toSŒšg +(); + +468 +$¡ršg + .ð"\r\n\r\n--" . +$this +-> + `g‘Bound¬y +() . "--\r\n"; + +471  +$¡ršg +; + +472 + } +} + +481 +public + +funùiÚ + + $__toSŒšg +() + +483  +$this +-> + `toSŒšg +(); + +484 + } +} + +490 +public + +funùiÚ + + $toBy‹SŒ—m +( +Swiá_IÅutBy‹SŒ—m + +$is +) + +492 +$is +-> + `wr™e +( +$this +-> +_h—d”s +-> + `toSŒšg +()); + +493 +$is +-> + `comm™ +(); + +495 ià( + `em±y +( +$this +-> +_immedŸ‹Chžd»n +)) + +497 ià( + `is£t +( +$this +-> +_body +)) + +499 ià( +$this +-> +_ÿche +-> + `hasKey +($this-> +_ÿcheKey +, 'body')) + +501 +$this +-> +_ÿche +-> + `expÜtToBy‹SŒ—m +($this-> +_ÿcheKey +, 'body', +$is +); + +505 +$ÿcheIs + = +$this +-> +_ÿche +-> + `g‘IÅutBy‹SŒ—m +($this-> +_ÿcheKey +, 'body'); + +506 ià( +$ÿcheIs +) + +508 +$is +-> + `bšd +( +$ÿcheIs +); + +511 +$is +-> + `wr™e +("\r\n"); + +513 ià( +$this +-> +_body + +š¡ªûof + +Swiá_OuutBy‹SŒ—m +) + +515 +$this +-> +_body +-> + `£tR—dPoš‹r +(0); + +517 +$this +-> +_’cod” +-> + `’codeBy‹SŒ—m +($this-> +_body +, +$is +, 0, + +518 +$this +-> + `g‘MaxLšeL’gth +() + +523 +$is +-> + `wr™e +( +$this +-> +_’cod” +-> + `’codeSŒšg +( + +524 +$this +-> + `g‘Body +(), 0, $this-> + `g‘MaxLšeL’gth +() + +528 ià( +$ÿcheIs +) + +530 +$is +-> + `unbšd +( +$ÿcheIs +); + +536 ià(! + `em±y +( +$this +-> +_immedŸ‹Chžd»n +)) + +538 + `fܗch + ( +$this +-> +_immedŸ‹Chžd»n + +as + +$chžd +) + +540 +$is +-> + `wr™e +("\r\n\r\n--" . +$this +-> + `g‘Bound¬y +() . "\r\n"); + +541 +$chžd +-> + `toBy‹SŒ—m +( +$is +); + +543 +$is +-> + `wr™e +("\r\n\r\n--" . +$this +-> + `g‘Bound¬y +() . "--\r\n"); + +545 + } +} + +551 +´Ùeùed + +funùiÚ + + $_g‘IdF›ld +() + +554 + } +} + +559 +´Ùeùed + +funùiÚ + + $_g‘H—d”F›ldMod– +( +$f›ld +) + +561 ià( +$this +-> +_h—d”s +-> + `has +( +$f›ld +)) + +563  +$this +-> +_h—d”s +-> + `g‘ +( +$f›ld +)-> + `g‘F›ldBodyMod– +(); + +565 + } +} + +570 +´Ùeùed + +funùiÚ + + $_£tH—d”F›ldMod– +( +$f›ld +, +$mod– +) + +572 ià( +$this +-> +_h—d”s +-> + `has +( +$f›ld +)) + +574 +$this +-> +_h—d”s +-> + `g‘ +( +$f›ld +)-> + `£tF›ldBodyMod– +( +$mod– +); + +575  +Œue +; + +579  +çl£ +; + +581 + } +} + +586 +´Ùeùed + +funùiÚ + + $_g‘H—d”P¬am‘” +( +$f›ld +, +$·¿m‘” +) + +588 ià( +$this +-> +_h—d”s +-> + `has +( +$f›ld +)) + +590  +$this +-> +_h—d”s +-> + `g‘ +( +$f›ld +)-> + `g‘P¬am‘” +( +$·¿m‘” +); + +592 + } +} + +597 +´Ùeùed + +funùiÚ + + $_£tH—d”P¬am‘” +( +$f›ld +, +$·¿m‘” +, +$v®ue +) + +599 ià( +$this +-> +_h—d”s +-> + `has +( +$f›ld +)) + +601 +$this +-> +_h—d”s +-> + `g‘ +( +$f›ld +)-> + `£tP¬am‘” +( +$·¿m‘” +, +$v®ue +); + +602  +Œue +; + +606  +çl£ +; + +608 + } +} + +613 +´Ùeùed + +funùiÚ + + $_fixH—d”s +() + +615 ià( + `couÁ +( +$this +-> +_immedŸ‹Chžd»n +)) + +617 +$this +-> + `_£tH—d”P¬am‘” +('Content-Type', 'boundary', + +618 +$this +-> + `g‘Bound¬y +() + +620 +$this +-> +_h—d”s +-> + `»move +('Content-Transfer-Encoding'); + +624 +$this +-> + `_£tH—d”P¬am‘” +('CڋÁ-Ty³', 'bound¬y', +nuÎ +); + +625 +$this +-> + `_£tEncodšg +($this-> +_’cod” +-> + `g‘Name +()); + +627 + } +} + +632 +´Ùeùed + +funùiÚ + + $_g‘Cache +() + +634  +$this +-> +_ÿche +; + +635 + } +} + +640 +´Ùeùed + +funùiÚ + + $_þ—rCache +() + +642 +$this +-> +_ÿche +-> + `þ—rKey +($this-> +_ÿcheKey +, 'body'); + +643 + } +} + +647 +´iv©e + +funùiÚ + + $_»adSŒ—m +( +Swiá_OuutBy‹SŒ—m + +$os +) + +649 +$¡ršg + = ''; + +650  +çl£ + !=ð +$by‹s + = +$os +-> + `»ad +(8192)) + +652 +$¡ršg + .ð +$by‹s +; + +654  +$¡ršg +; + +655 + } +} + +657 +´iv©e + +funùiÚ + + $_£tEncodšg +( +$’codšg +) + +659 ià(! +$this +-> + `_£tH—d”F›ldMod– +('CڋÁ-T¿nsãr-Encodšg', +$’codšg +)) + +661 +$this +-> +_h—d”s +-> + `addTextH—d” +('CڋÁ-T¿nsãr-Encodšg', +$’codšg +); + +663 + } +} + +665 +´iv©e + +funùiÚ + + $_as£¹V®idBound¬y +( +$bound¬y +) + +667 ià(! + `´eg_m©ch +( + +669 +$bound¬y +)) + +671 +throw + +Ãw + + `Exû±iÚ +('Mime boundary set is‚ot RFC 2046 compliant.'); + +673 + } +} + +675 +´iv©e + +funùiÚ + + $_£tCڋÁTy³InH—d”s +( +$ty³ +) + +677 ià(! +$this +-> + `_£tH—d”F›ldMod– +('CڋÁ-Ty³', +$ty³ +)) + +679 +$this +-> +_h—d”s +-> + `addP¬am‘”izedH—d” +('CڋÁ-Ty³', +$ty³ +); + +681 + } +} + +683 +´iv©e + +funùiÚ + + $_£tNe¡šgLev– +( +$Ëv– +) + +685 +$this +-> +_ášgLev– + = +$Ëv– +; + +686 + } +} + +688 +´iv©e + +funùiÚ + + $_g‘CompoundLev– +( +$chžd»n +) + +690 +$Ëv– + = 0; + +691 + `fܗch + ( +$chžd»n + +as + +$chžd +) + +693 +$Ëv– + |ð +$chžd +-> + `g‘Ne¡šgLev– +(); + +695  +$Ëv– +; + +696 + } +} + +698 +´iv©e + +funùiÚ + + $_g‘N“dedChždLev– +( +$chžd +, +$compoundLev– +) + +700 +$fž‹r + = + `¬¿y +(); + +701 + `fܗch + ( +$this +-> +_compoundLev–Fž‹rs + +as + +$b™mask + => +$ruËs +) + +703 ià(( +$compoundLev– + & +$b™mask +) === $bitmask) + +705 +$fž‹r + = +$ruËs + + $filter; + +709 +$»®Lev– + = +$chžd +-> + `g‘Ne¡šgLev– +(); + +710 +$low”ÿ£Ty³ + = + `¡¹Þow” +( +$chžd +-> + `g‘CڋÁTy³ +()); + +712 ià( + `is£t +( +$fž‹r +[ +$»®Lev– +]) + +713 && + `is£t +( +$fž‹r +[ +$»®Lev– +][ +$low”ÿ£Ty³ +])) + +715  +$fž‹r +[ +$»®Lev– +][ +$low”ÿ£Ty³ +]; + +719  +$»®Lev– +; + +721 + } +} + +723 +´iv©e + +funùiÚ + + $_ü—‹Chžd +() + +725  +Ãw + + `£lf +( +$this +-> +_h—d”s +-> + `ÃwIn¡ªû +(), + +726 +$this +-> +_’cod” +, $this-> +_ÿche +); + +727 + } +} + +729 +´iv©e + +funùiÚ + + $_nÙifyEncod”Chªged +( +Swiá_Mime_CڋÁEncod” + +$’cod” +) + +731 + `fܗch + ( +$this +-> +_immedŸ‹Chžd»n + +as + +$chžd +) + +733 +$chžd +-> + `’cod”Chªged +( +$’cod” +); + +735 + } +} + +737 +´iv©e + +funùiÚ + + $_nÙifyCh¬£tChªged +( +$ch¬£t +) + +739 +$this +-> +_’cod” +-> + `ch¬£tChªged +( +$ch¬£t +); + +740 +$this +-> +_h—d”s +-> + `ch¬£tChªged +( +$ch¬£t +); + +741 + `fܗch + ( +$this +-> +_immedŸ‹Chžd»n + +as + +$chžd +) + +743 +$chžd +-> + `ch¬£tChªged +( +$ch¬£t +); + +745 + } +} + +747 +´iv©e + +funùiÚ + + $_sÜtChžd»n +() + +749 +$shouldSÜt + = +çl£ +; + +750 + `fܗch + ( +$this +-> +_immedŸ‹Chžd»n + +as + +$chžd +) + +753 ià( +$chžd +-> + `g‘Ne¡šgLev– +(è=ð +£lf +:: +LEVEL_ALTERNATIVE +) + +755 +$shouldSÜt + = +Œue +; + +761 ià( +$shouldSÜt +) + +763 + `usÜt +( +$this +-> +_immedŸ‹Chžd»n +, + `¬¿y +($this, '_childSortAlgorithm')); + +765 + } +} + +767 +´iv©e + +funùiÚ + + $_chždSÜtAlgܙhm +( +$a +, +$b +) + +769 +$ty³P»fs + = + `¬¿y +(); + +770 +$ty³s + = + `¬¿y +( + +771 + `¡¹Þow” +( +$a +-> + `g‘CڋÁTy³ +()), + +772 + `¡¹Þow” +( +$b +-> + `g‘CڋÁTy³ +()) + +774 + `fܗch + ( +$ty³s + +as + +$ty³ +) + +776 +$ty³P»fs +[] = ( + `¬¿y_key_exi¡s +( +$ty³ +, +$this +-> +_®‹º©iveP¬tOrd” +)) + +777 ? +$this +-> +_®‹º©iveP¬tOrd” +[ +$ty³ +] + +778 : ( + `max +( +$this +-> +_®‹º©iveP¬tOrd” +) + 1); + +780  ( +$ty³P»fs +[0] >= $typePrefs[1]) ? 1 : -1; + +781 + } +} + +788 +public + +funùiÚ + + $__de¡ruù +() + +790 +$this +-> +_ÿche +-> + `þ—rAÎ +($this-> +_ÿcheKey +); + +791 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/MimePart.php + +1 + `ü—‹D•’d’c›sFÜ +('mime.part') + +39 ià(! + `is£t +( +$ch¬£t +)) + +41 +$ch¬£t + = +Swiá_D•’d’cyCڏš” +:: + `g‘In¡ªû +() + +42 -> + `lookup +('properties.charset'); + +44 +$this +-> + `£tBody +( +$body +); + +45 +$this +-> + `£tCh¬£t +( +$ch¬£t +); + +46 ià( +$cڋÁTy³ +) + +48 +$this +-> + `£tCڋÁTy³ +( +$cڋÁTy³ +); + +59 +public +  +funùiÚ + + $ÃwIn¡ªû +( +$body + = +nuÎ +, +$cڋÁTy³ + =‚ull, + +60 +$ch¬£t + = +nuÎ +) + +62  +Ãw + + `£lf +( +$body +, +$cڋÁTy³ +, +$ch¬£t +); + +63 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/NullTransport.php + +1 + `ü—‹D•’d’c›sFÜ +('transport.null') + +34 +public +  +funùiÚ + + $ÃwIn¡ªû +() + +36  +Ãw + + `£lf +(); + +37 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/OutputByteStream.php + +1 +£tTh»shÞd +( +$th»shÞd +); + +63 + g$this +-> +£tS˕Time +( +$¦“p +); + +64 + g$this +-> + g_¦“³r + = +$¦“³r +; + +71 +public + +funùiÚ + +£tTh»shÞd +( +$th»shÞd +) + +73 + g$this +-> + g_th»shÞd + = +$th»shÞd +; + +80 +public + +funùiÚ + +g‘Th»shÞd +() + +82  + g$this +-> + g_th»shÞd +; + +89 +public + +funùiÚ + +£tS˕Time +( +$¦“p +) + +91 + g$this +-> + g_¦“p + = +$¦“p +; + +98 +public + +funùiÚ + +g‘S˕Time +() + +100  + g$this +-> + g_¦“p +; + +107 +public + +funùiÚ + +befÜeS’dP”fÜmed +( +Swiá_Ev’ts_S’dEv’t + +$evt +) + +115 +public + +funùiÚ + +£ndP”fÜmed +( +Swiá_Ev’ts_S’dEv’t + +$evt +) + +117 ++ + g$this +-> + g_couÁ” +; + +118 ià( + g$this +-> + g_couÁ” + >ð +$this +-> +_th»shÞd +) + +120 +$Œª¥Üt + = +$evt +-> +g‘T¿n¥Üt +(); + +121 + g$Œª¥Üt +-> +¡Ý +(); + +122 ià( + g$this +-> + g_¦“p +) + +124 + g$this +-> +¦“p +( +$this +-> +_¦“p +); + +126 + g$Œª¥Üt +-> +¡¬t +(); + +127 + g$this +-> + g_couÁ” + = 0; + +135 +public + +funùiÚ + +¦“p +( +$£cÚds +) + +137 ià( +is£t +( +$this +-> +_¦“³r +)) + +139 + g$this +-> + g_¦“³r +-> +¦“p +( +$£cÚds +); + +143 +¦“p +( +$£cÚds +); + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/BandwidthMonitorPlugin.php + +1 +g‘Mes§ge +(); + +61 + g$mes§ge +-> +toBy‹SŒ—m +( +$this +); + +68 +public + +funùiÚ + +commªdS’t +( +Swiá_Ev’ts_CommªdEv’t + +$evt +) + +70 + g$commªd + = +$evt +-> +g‘Commªd +(); + +71 + g$this +-> + g_out + +ð +¡¾’ +( +$commªd +); + +78 +public + +funùiÚ + +»¥Ú£Reûived +( +Swiá_Ev’ts_Re¥Ú£Ev’t + +$evt +) + +80 + g$»¥Ú£ + = +$evt +-> +g‘Re¥Ú£ +(); + +81 + g$this +-> + g_š + +ð +¡¾’ +( +$»¥Ú£ +); + +88 +public + +funùiÚ + +wr™e +( +$by‹s +) + +90 + g$this +-> + g_out + +ð +¡¾’ +( +$by‹s +); + +91 +fܗch + ( +$this +-> +_mœrÜs + +as + +$¡»am +) + +93 + g$¡»am +-> +wr™e +( +$by‹s +); + +100 +public + +funùiÚ + +comm™ +() + +111 +public + +funùiÚ + +bšd +( +Swiá_IÅutBy‹SŒ—m + +$is +) + +113 + g$this +-> + g_mœrÜs +[] = +$is +; + +124 +public + +funùiÚ + +unbšd +( +Swiá_IÅutBy‹SŒ—m + +$is +) + +126 +fܗch + ( +$this +-> +_mœrÜs + +as + +$k + => +$¡»am +) + +128 ià( +$is + ==ð +$¡»am +) + +130 +un£t +( +$this +-> +_mœrÜs +[ +$k +]); + +138 +public + +funùiÚ + +æushBufãrs +() + +140 +fܗch + ( +$this +-> +_mœrÜs + +as + +$¡»am +) + +142 + g$¡»am +-> +æushBufãrs +(); + +150 +public + +funùiÚ + +g‘By‹sOut +() + +152  + g$this +-> + g_out +; + +159 +public + +funùiÚ + +g‘By‹sIn +() + +161  + g$this +-> + g_š +; + +167 +public + +funùiÚ + +»£t +() + +169 + g$this +-> + g_out + = 0; + +170 + g$this +-> + g_š + = 0; + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/BlackholePlugin.php + +1 + `ÿnûlBubbË +(); + +34 +public + +funùiÚ + + $£ndP”fÜmed +( +Swiá_Ev’ts_S’dEv’t + +$evt +) + +36 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Decorator/Replacements.php + +1 + g_»¶aûm’ts + = ( +¬¿y +è +$»¶aûm’ts +; + +70 + g$this +-> + g_»¶aûm’ts + = +$»¶aûm’ts +; + +79 +public + +funùiÚ + +befÜeS’dP”fÜmed +( +Swiá_Ev’ts_S’dEv’t + +$evt +) + +81 + g$mes§ge + = +$evt +-> +g‘Mes§ge +(); + +82 + g$this +-> +_»¡ÜeMes§ge +( +$mes§ge +); + +83 + g$to + = +¬¿y_keys +( +$mes§ge +-> +g‘To +()); + +84 + g$add»ss + = +¬¿y_shiá +( +$to +); + +85 ià( + g$»¶aûm’ts + = +$this +-> +g‘R•Ïûm’tsFÜ +( +$add»ss +)) + +87 +$body + = +$mes§ge +-> +g‘Body +(); + +88 + g$£¬ch + = +¬¿y_keys +( +$»¶aûm’ts +); + +89 + g$»¶aû + = +¬¿y_v®ues +( +$»¶aûm’ts +); + +90 + g$bodyR•Ïûd + = +¡r_»¶aû +( + +91 +$£¬ch +, +$»¶aû +, +$body + + +93 ià( + g$body + !ð +$bodyR•Ïûd +) + +95 +$this +-> +_Üigš®Body + = +$body +; + +96 + g$mes§ge +-> +£tBody +( +$bodyR•Ïûd +); + +98 + g$subjeù + = +$mes§ge +-> +g‘Subjeù +(); + +99 + g$subjeùR•Ïûd + = +¡r_»¶aû +( + +100 +$£¬ch +, +$»¶aû +, +$subjeù + + +102 ià( + g$subjeù + !ð +$subjeùR•Ïûd +) + +104 +$this +-> +_Üigš®Subjeù + = +$subjeù +; + +105 + g$mes§ge +-> +£tSubjeù +( +$subjeùR•Ïûd +); + +107 + g$chžd»n + = ( +¬¿y +è +$mes§ge +-> +g‘Chžd»n +(); + +108 +fܗch + ( +$chžd»n + +as + +$chžd +) + +110 +li¡ +( +$ty³ +, ) = +ssÿnf +( +$chžd +-> +g‘CڋÁTy³ +(), '%[^/]/%s'); + +111 ià('‹xt' =ð +$ty³ +) + +113 +$body + = +$chžd +-> +g‘Body +(); + +114 + g$bodyR•Ïûd + = +¡r_»¶aû +( + +115 +$£¬ch +, +$»¶aû +, +$body + + +117 ià( + g$body + !ð +$bodyR•Ïûd +) + +119 +$chžd +-> +£tBody +( +$bodyR•Ïûd +); + +120 + g$this +-> + g_Üigš®ChždBod›s +[ +$chžd +-> +g‘Id +()] = +$body +; + +124 + g$this +-> + g_Ï¡Mes§ge + = +$mes§ge +; + +142 +public + +funùiÚ + +g‘R•Ïûm’tsFÜ +( +$add»ss +) + +144 ià( + g$this +-> +_»¶aûm’ts + +š¡ªûof + + gSwiá_Plugšs_DecÜ©Ü_R•Ïûm’ts +) + +146  + g$this +-> + g_»¶aûm’ts +-> +g‘R•Ïûm’tsFÜ +( +$add»ss +); + +150  +is£t +( +$this +-> +_»¶aûm’ts +[ +$add»ss +]) + +151 ? + g$this +-> + g_»¶aûm’ts +[ +$add»ss +] + +152 : +nuÎ + + +162 +public + +funùiÚ + +£ndP”fÜmed +( +Swiá_Ev’ts_S’dEv’t + +$evt +) + +164 + g$this +-> +_»¡ÜeMes§ge +( +$evt +-> +g‘Mes§ge +()); + +170 +´iv©e + +funùiÚ + +_»¡ÜeMes§ge +( +Swiá_Mime_Mes§ge + +$mes§ge +) + +172 ià( + g$this +-> + g_Ï¡Mes§ge + ==ð +$mes§ge +) + +174 ià( +is£t +( +$this +-> +_Üigš®Body +)) + +176 +$mes§ge +-> +£tBody +( +$this +-> +_Üigš®Body +); + +177 + g$this +-> + g_Üigš®Body + = +nuÎ +; + +179 ià( +is£t +( +$this +-> +_Üigš®Subjeù +)) + +181 + g$mes§ge +-> +£tSubjeù +( +$this +-> +_Üigš®Subjeù +); + +182 + g$this +-> + g_Üigš®Subjeù + = +nuÎ +; + +184 ià(! +em±y +( +$this +-> +_Üigš®ChždBod›s +)) + +186 + g$chžd»n + = ( +¬¿y +è +$mes§ge +-> +g‘Chžd»n +(); + +187 +fܗch + ( +$chžd»n + +as + +$chžd +) + +189 + g$id + = +$chžd +-> +g‘Id +(); + +190 ià( +¬¿y_key_exi¡s +( +$id +, +$this +-> +_Üigš®ChždBod›s +)) + +192 + g$chžd +-> +£tBody +( +$this +-> +_Üigš®ChždBod›s +[ +$id +]); + +195 + g$this +-> + g_Üigš®ChždBod›s + = +¬¿y +(); + +197 + g$this +-> + g_Ï¡Mes§ge + = +nuÎ +; + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Logger.php + +1 + g_logg” + = +$logg” +; + +54 +public + +funùiÚ + +add +( +$’Œy +) + +56 + g$this +-> + g_logg” +-> +add +( +$’Œy +); + +62 +public + +funùiÚ + +þ—r +() + +64 + g$this +-> + g_logg” +-> +þ—r +(); + +72 +public + +funùiÚ + +dump +() + +74  + g$this +-> + g_logg” +-> +dump +(); + +82 +public + +funùiÚ + +commªdS’t +( +Swiá_Ev’ts_CommªdEv’t + +$evt +) + +84 + g$commªd + = +$evt +-> +g‘Commªd +(); + +85 + g$this +-> + g_logg” +-> +add +( +¥rštf +(">> %s", +$commªd +)); + +93 +public + +funùiÚ + +»¥Ú£Reûived +( +Swiá_Ev’ts_Re¥Ú£Ev’t + +$evt +) + +95 + g$»¥Ú£ + = +$evt +-> +g‘Re¥Ú£ +(); + +96 + g$this +-> + g_logg” +-> +add +( +¥rštf +("<< %s", +$»¥Ú£ +)); + +104 +public + +funùiÚ + +befÜeT¿n¥ÜtS¹ed +( +Swiá_Ev’ts_T¿n¥ÜtChªgeEv’t + +$evt +) + +106 + g$Œª¥ÜtName + = +g‘_þass +( +$evt +-> +g‘Sourû +()); + +107 + g$this +-> + g_logg” +-> +add +( +¥rštf +("++ S¹šg %s", +$Œª¥ÜtName +)); + +115 +public + +funùiÚ + +Œª¥ÜtS¹ed +( +Swiá_Ev’ts_T¿n¥ÜtChªgeEv’t + +$evt +) + +117 + g$Œª¥ÜtName + = +g‘_þass +( +$evt +-> +g‘Sourû +()); + +118 + g$this +-> + g_logg” +-> +add +( +¥rštf +("++ % ¡¬‹d", +$Œª¥ÜtName +)); + +126 +public + +funùiÚ + +befÜeT¿n¥ÜtStݳd +( +Swiá_Ev’ts_T¿n¥ÜtChªgeEv’t + +$evt +) + +128 + g$Œª¥ÜtName + = +g‘_þass +( +$evt +-> +g‘Sourû +()); + +129 + g$this +-> + g_logg” +-> +add +( +¥rštf +("++ StÝpšg %s", +$Œª¥ÜtName +)); + +137 +public + +funùiÚ + +Œª¥ÜtStݳd +( +Swiá_Ev’ts_T¿n¥ÜtChªgeEv’t + +$evt +) + +139 + g$Œª¥ÜtName + = +g‘_þass +( +$evt +-> +g‘Sourû +()); + +140 + g$this +-> + g_logg” +-> +add +( +¥rštf +("++ % ¡Ý³d", +$Œª¥ÜtName +)); + +148 +public + +funùiÚ + +exû±iÚThrown +( +Swiá_Ev’ts_T¿n¥ÜtExû±iÚEv’t + +$evt +) + +150 + g$e + = +$evt +-> +g‘Exû±iÚ +(); + +151 + g$mes§ge + = +$e +-> +g‘Mes§ge +(); + +152 + g$this +-> + g_logg” +-> +add +( +¥rštf +("!! %s", +$mes§ge +)); + +153 + g$mes§ge + .ð +PHP_EOL +; + +154 + g$mes§ge + .ð'Log d©a:' . +PHP_EOL +; + +155 + g$mes§ge + .ð +$this +-> +_logg” +-> +dump +(); + +156 + g$evt +-> +ÿnûlBubbË +(); + +157 +throw + +Ãw + +Swiá_T¿n¥ÜtExû±iÚ +( +$mes§ge +); + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Loggers/ArrayLogger.php + +1 +_size + = +$size +; + +47 +public + +funùiÚ + + $add +( +$’Œy +) + +49 +$this +-> +_log +[] = +$’Œy +; + +50  + `couÁ +( +$this +-> +_log +è> $this-> +_size +) + +52 + `¬¿y_shiá +( +$this +-> +_log +); + +54 + } +} + +59 +public + +funùiÚ + + $þ—r +() + +61 +$this +-> +_log + = + `¬¿y +(); + +62 + } +} + +68 +public + +funùiÚ + + $dump +() + +70  + `im¶ode +( +PHP_EOL +, +$this +-> +_log +); + +71 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Loggers/EchoLogger.php + +1 +_isHtml + = +$isHtml +; + +38 +public + +funùiÚ + + $add +( +$’Œy +) + +40 ià( +$this +-> +_isHtml +) + +42 + `´štf +('%s%s%s', + `html¥ecŸlch¬s +( +$’Œy +, +ENT_QUOTES +), '', +PHP_EOL +); + +46 + `´štf +('%s%s', +$’Œy +, +PHP_EOL +); + +48 + } +} + +53 +public + +funùiÚ + + $þ—r +() + +55 + } +} + +60 +public + +funùiÚ + + $dump +() + +62 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Pop/Pop3Connection.php + +1 +_ho¡ + = +$ho¡ +; + +63 + g$this +-> + g_pÜt + = +$pÜt +; + +64 + g$this +-> + g_üy±o + = +$üy±o +; + +76 +public +  +funùiÚ + +ÃwIn¡ªû +( +$ho¡ +, +$pÜt + = 110, +$üy±o + = +nuÎ +) + +78  +Ãw + +£lf +( +$ho¡ +, +$pÜt +, +$üy±o +); + +86 +public + +funùiÚ + +£tCÚÃùiÚ +( +Swiá_Plugšs_PÝ_PÝ3CÚÃùiÚ + +$cÚÃùiÚ +) + +88 + g$this +-> + g_cÚÃùiÚ + = +$cÚÃùiÚ +; + +89  + g$this +; + +97 +public + +funùiÚ + +bšdSm +( +Swiá_T¿n¥Üt + +$sm +) + +99 + g$this +-> + g_Œª¥Üt + = +$sm +; + +107 +public + +funùiÚ + +£tTimeout +( +$timeout +) + +109 + g$this +-> + g_timeout + = (è +$timeout +; + +110  + g$this +; + +118 +public + +funùiÚ + +£tU£ºame +( +$u£ºame +) + +120 + g$this +-> + g_u£ºame + = +$u£ºame +; + +121  + g$this +; + +129 +public + +funùiÚ + +£tPasswÜd +( +$·sswÜd +) + +131 + g$this +-> + g_·sswÜd + = +$·sswÜd +; + +132  + g$this +; + +140 +public + +funùiÚ + +cÚÃù +() + +142 ià( +is£t +( +$this +-> +_cÚÃùiÚ +)) + +144 + g$this +-> + g_cÚÃùiÚ +-> +cÚÃù +(); + +148 ià(! +is£t +( +$this +-> +_sock‘ +)) + +150 ià(! + g$sock‘ + = +fsockݒ +( + +151 +$this +-> +_g‘Ho¡SŒšg +(), $this-> +_pÜt +, +$”ºo +, +$”r¡r +, $this-> +_timeout +)) + +153 +throw + +Ãw + +Swiá_Plugšs_PÝ_PÝ3Exû±iÚ +( + +154 +¥rštf +('FažedØcÚÃùØPOP3 ho¡ [%s]: %s', +$this +-> +_ho¡ +, +$”r¡r +) + +157 + g$this +-> + g_sock‘ + = +$sock‘ +; + +159 ià( + gçl£ + ==ð +$g»‘šg + = +fg‘s +( +$this +-> +_sock‘ +)) + +161 +throw + +Ãw + +Swiá_Plugšs_PÝ_PÝ3Exû±iÚ +( + +162 +¥rštf +('FažedØcÚÃùØPOP3 ho¡ [%s]', +Œim +( +$g»‘šg +)) + +166 + g$this +-> +_as£¹Ok +( +$g»‘šg +); + +168 ià( + g$this +-> + g_u£ºame +) + +170 + g$this +-> +_commªd +( +¥rštf +("USER %s\r\n", +$this +-> +_u£ºame +)); + +171 + g$this +-> +_commªd +( +¥rštf +("PASS %s\r\n", +$this +-> +_·sswÜd +)); + +180 +public + +funùiÚ + +discÚÃù +() + +182 ià( +is£t +( +$this +-> +_cÚÃùiÚ +)) + +184 + g$this +-> + g_cÚÃùiÚ +-> +discÚÃù +(); + +188 + g$this +-> +_commªd +("QUIT\r\n"); + +189 ià(! +fþo£ +( +$this +-> +_sock‘ +)) + +191 +throw + +Ãw + +Swiá_Plugšs_PÝ_PÝ3Exû±iÚ +( + +192 +¥rštf +('POP3 ho¡ [%s] cÚÃùiÚ could‚Ù b¡Ý³d', +$this +-> +_ho¡ +) + +195 + g$this +-> + g_sock‘ + = +nuÎ +; + +204 +public + +funùiÚ + +befÜeT¿n¥ÜtS¹ed +( +Swiá_Ev’ts_T¿n¥ÜtChªgeEv’t + +$evt +) + +206 ià( +is£t +( +$this +-> +_Œª¥Üt +)) + +208 ià( + g$this +-> + g_Œª¥Üt + !=ð +$evt +-> +g‘T¿n¥Üt +()) + +214 + g$this +-> +cÚÃù +(); + +215 + g$this +-> +discÚÃù +(); + +221 +public + +funùiÚ + +Œª¥ÜtS¹ed +( +Swiá_Ev’ts_T¿n¥ÜtChªgeEv’t + +$evt +) + +228 +public + +funùiÚ + +befÜeT¿n¥ÜtStݳd +( +Swiá_Ev’ts_T¿n¥ÜtChªgeEv’t + +$evt +) + +235 +public + +funùiÚ + +Œª¥ÜtStݳd +( +Swiá_Ev’ts_T¿n¥ÜtChªgeEv’t + +$evt +) + +241 +´iv©e + +funùiÚ + +_commªd +( +$commªd +) + +243 ià(! +fwr™e +( +$this +-> +_sock‘ +, +$commªd +)) + +245 +throw + +Ãw + +Swiá_Plugšs_PÝ_PÝ3Exû±iÚ +( + +246 +¥rštf +('FažedØwr™commªd [%s]ØPOP3 ho¡', +Œim +( +$commªd +)) + +250 ià( + gçl£ + ==ð +$»¥Ú£ + = +fg‘s +( +$this +-> +_sock‘ +)) + +252 +throw + +Ãw + +Swiá_Plugšs_PÝ_PÝ3Exû±iÚ +( + +253 +¥rštf +('FažedØ»ad from POP3 ho¡‡á” commªd [%s]', +Œim +( +$commªd +)) + +257 + g$this +-> +_as£¹Ok +( +$»¥Ú£ +); + +259  + g$»¥Ú£ +; + +262 +´iv©e + +funùiÚ + +_as£¹Ok +( +$»¥Ú£ +) + +264 ià( +sub¡r +( +$»¥Ú£ +, 0, 3) != '+OK') + +266 +throw + +Ãw + +Swiá_Plugšs_PÝ_PÝ3Exû±iÚ +( + +267 +¥rštf +('POP3 commªd fažed [%s]', +Œim +( +$»¥Ú£ +)) + +272 +´iv©e + +funùiÚ + +_g‘Ho¡SŒšg +() + +274 + g$ho¡ + = +$this +-> +_ho¡ +; + +275  +¡¹Þow” +( +$this +-> +_üy±o +)) + +278 +$ho¡ + = 'ssl://' . $host; + +282 +$ho¡ + = 'tls://' . $host; + +285  + g$ho¡ +; + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/RedirectingPlugin.php + +1 +_»c›Á + = +$»c›Á +; + +40 +public + +funùiÚ + + $£tRec›Á +( +$»c›Á +) + +42 +$this +-> +_»c›Á + = +$»c›Á +; + +43 + } +} + +49 +public + +funùiÚ + + $g‘Rec›Á +() + +51  +$this +-> +_»c›Á +; + +52 + } +} + +58 +public + +funùiÚ + + $befÜeS’dP”fÜmed +( +Swiá_Ev’ts_S’dEv’t + +$evt +) + +60 +$mes§ge + = +$evt +-> + `g‘Mes§ge +(); + +61 +$h—d”s + = +$mes§ge +-> + `g‘H—d”s +(); + +64 +$h—d”s +-> + `addMažboxH—d” +('X-Swiá-To', +$mes§ge +-> + `g‘To +()); + +65 +$h—d”s +-> + `addMažboxH—d” +('X-Swiá-Cc', +$mes§ge +-> + `g‘Cc +()); + +66 +$h—d”s +-> + `addMažboxH—d” +('X-Swiá-Bcc', +$mes§ge +-> + `g‘Bcc +()); + +69 +$mes§ge +-> + `£tTo +( +$this +-> +_»c›Á +); + +70 +$h—d”s +-> + `»moveAÎ +('Cc'); + +71 +$h—d”s +-> + `»moveAÎ +('Bcc'); + +72 + } +} + +79 +public + +funùiÚ + + $£ndP”fÜmed +( +Swiá_Ev’ts_S’dEv’t + +$evt +) + +81 +$this +-> + `_»¡ÜeMes§ge +( +$evt +-> + `g‘Mes§ge +()); + +82 + } +} + +86 +´iv©e + +funùiÚ + + $_»¡ÜeMes§ge +( +Swiá_Mime_Mes§ge + +$mes§ge +) + +89 +$h—d”s + = +$mes§ge +-> + `g‘H—d”s +(); + +91 ià( +$h—d”s +-> + `has +('X-Swift-To')) + +93 +$mes§ge +-> + `£tTo +( +$h—d”s +-> + `g‘ +('X-Swiá-To')-> + `g‘NameAdd»s£s +()); + +94 +$h—d”s +-> + `»moveAÎ +('X-Swift-To'); + +97 ià( +$h—d”s +-> + `has +('X-Swift-Cc')) + +99 +$mes§ge +-> + `£tCc +( +$h—d”s +-> + `g‘ +('X-Swiá-Cc')-> + `g‘NameAdd»s£s +()); + +100 +$h—d”s +-> + `»moveAÎ +('X-Swift-Cc'); + +103 ià( +$h—d”s +-> + `has +('X-Swift-Bcc')) + +105 +$mes§ge +-> + `£tBcc +( +$h—d”s +-> + `g‘ +('X-Swiá-Bcc')-> + `g‘NameAdd»s£s +()); + +106 +$h—d”s +-> + `»moveAÎ +('X-Swift-Bcc'); + +108 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Reporter.php + +1 +_»p܋r + = +$»p܋r +; + +44 +public + +funùiÚ + + $befÜeS’dP”fÜmed +( +Swiá_Ev’ts_S’dEv’t + +$evt +) + +46 + } +} + +52 +public + +funùiÚ + + $£ndP”fÜmed +( +Swiá_Ev’ts_S’dEv’t + +$evt +) + +54 +$mes§ge + = +$evt +-> + `g‘Mes§ge +(); + +55 +$çžu»s + = + `¬¿y_æ +( +$evt +-> + `g‘FažedRec›Ás +()); + +56 + `fܗch + (( +¬¿y +è +$mes§ge +-> + `g‘To +(è +as + +$add»ss + => +$nuÎ +) + +58 +$this +-> +_»p܋r +-> + `nÙify +( + +59 +$mes§ge +, +$add»ss +, ( + `¬¿y_key_exi¡s +($add»ss, +$çžu»s +) + +60 ? +Swiá_Plugšs_R•Ü‹r +:: +RESULT_FAIL + + +61 : +Swiá_Plugšs_R•Ü‹r +:: +RESULT_PASS +) + +64 + `fܗch + (( +¬¿y +è +$mes§ge +-> + `g‘Cc +(è +as + +$add»ss + => +$nuÎ +) + +66 +$this +-> +_»p܋r +-> + `nÙify +( + +67 +$mes§ge +, +$add»ss +, ( + `¬¿y_key_exi¡s +($add»ss, +$çžu»s +) + +68 ? +Swiá_Plugšs_R•Ü‹r +:: +RESULT_FAIL + + +69 : +Swiá_Plugšs_R•Ü‹r +:: +RESULT_PASS +) + +72 + `fܗch + (( +¬¿y +è +$mes§ge +-> + `g‘Bcc +(è +as + +$add»ss + => +$nuÎ +) + +74 +$this +-> +_»p܋r +-> + `nÙify +( + +75 +$mes§ge +, +$add»ss +, ( + `¬¿y_key_exi¡s +($add»ss, +$çžu»s +) + +76 ? +Swiá_Plugšs_R•Ü‹r +:: +RESULT_FAIL + + +77 : +Swiá_Plugšs_R•Ü‹r +:: +RESULT_PASS +) + +80 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Reporters/HitReporter.php + +1 +_çžu»s_ÿche +[ +$add»ss +])) + +41 +$this +-> +_çžu»s +[] = +$add»ss +; + +42 +$this +-> +_çžu»s_ÿche +[ +$add»ss +] = +Œue +; + +50 +public + +funùiÚ + + $g‘FažedRec›Ás +() + +52  +$this +-> +_çžu»s +; + +53 + } +} + +58 +public + +funùiÚ + + $þ—r +() + +60 +$this +-> +_çžu»s + = $this-> +_çžu»s_ÿche + = + `¬¿y +(); + +61 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Reporters/HtmlReporter.php + +1 " . +PHP_EOL +; + +34 +echo + "PASS " . +$add»ss + . +PHP_EOL +; + +35 +echo + "" . +PHP_EOL +; + +36 + `æush +(); + +40 +echo + "
    " . +PHP_EOL +; + +41 +echo + "FAIL " . +$add»ss + . +PHP_EOL +; + +42 +echo + "
    " . +PHP_EOL +; + +43 + `æush +(); + +47 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Sleeper.php + +1 +_¿‹ + = +$¿‹ +; + +87 + g$this +-> + g_mode + = +$mode +; + +88 + g$this +-> + g_¦“³r + = +$¦“³r +; + +89 + g$this +-> + g_tim” + = +$tim” +; + +96 +public + +funùiÚ + +befÜeS’dP”fÜmed +( +Swiá_Ev’ts_S’dEv’t + +$evt +) + +98 + g$time + = +$this +-> +g‘Time¡amp +(); + +99 ià(! +is£t +( +$this +-> +_¡¬t +)) + +101 + g$this +-> + g_¡¬t + = +$time +; + +103 + g$du¿tiÚ + = +$time + - +$this +-> +_¡¬t +; + +105 ià( + g£lf +:: +BYTES_PER_MINUTE + =ð +$this +-> +_mode +) + +107 +$¦“p + = +$this +-> +_thrَeBy‹sP”Mšu‹ +( +$du¿tiÚ +); + +111 + g$¦“p + = +$this +-> +_thrَeMes§gesP”Mšu‹ +( +$du¿tiÚ +); + +114 ià( + g$¦“p + > 0) + +116 + g$this +-> +¦“p +( +$¦“p +); + +124 +public + +funùiÚ + +£ndP”fÜmed +( +Swiá_Ev’ts_S’dEv’t + +$evt +) + +126 + g·»Á +:: +£ndP”fÜmed +( +$evt +); + +127 ++ + g$this +-> + g_mes§ges +; + +134 +public + +funùiÚ + +¦“p +( +$£cÚds +) + +136 ià( +is£t +( +$this +-> +_¦“³r +)) + +138 + g$this +-> + g_¦“³r +-> +¦“p +( +$£cÚds +); + +142 +¦“p +( +$£cÚds +); + +150 +public + +funùiÚ + +g‘Time¡amp +() + +152 ià( +is£t +( +$this +-> +_tim” +)) + +154  + g$this +-> + g_tim” +-> +g‘Time¡amp +(); + +158  +time +(); + +170 +´iv©e + +funùiÚ + +_thrَeBy‹sP”Mšu‹ +( +$timePas£d +) + +172 + g$ex³ùedDu¿tiÚ + = +$this +-> +g‘By‹sOut +(è/ ($this-> +_¿‹ + / 60); + +173  (è +ûž +( +$ex³ùedDu¿tiÚ + - +$timePas£d +); + +182 +´iv©e + +funùiÚ + +_thrَeMes§gesP”Mšu‹ +( +$timePas£d +) + +184 + g$ex³ùedDu¿tiÚ + = +$this +-> +_mes§ges + / ($this-> +_¿‹ + / 60); + +185  (è +ûž +( +$ex³ùedDu¿tiÚ + - +$timePas£d +); + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Timer.php + +1 ('´Ý”t›s.ch¬£t')-> + `asV®ue +( +$ch¬£t +); + +49  +$this +; + +50 + } +} + +57 +public + +funùiÚ + + $£tTempDœ +( +$dœ +) + +59 +Swiá_D•’d’cyCڏš” +:: + `g‘In¡ªû +() + +60 ->('‹mpdœ')-> + `asV®ue +( +$dœ +); + +61  +$this +; + +62 + } +} + +69 +public + +funùiÚ + + $£tCacheTy³ +( +$ty³ +) + +71 +Swiá_D•’d’cyCڏš” +:: + `g‘In¡ªû +() + +72 ->('ÿche')-> + `asAlŸsOf +( + `¥rštf +('ÿche.%s', +$ty³ +)); + +73  +$this +; + +74 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/ReplacementFilterFactory.php + +1 +ü—‹D•’d’c›sFÜ +('transport.sendmail') + +35 + m$this +-> +£tCommªd +( +$commªd +); + +43 +public +  +funùiÚ + +ÃwIn¡ªû +( +$commªd + = '/usr/sbin/sendmail -bs') + +45  +Ãw + +£lf +( +$commªd +); + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/SmtpTransport.php + +1 +ü—‹D•’d’c›sFÜ +('transport.smtp') + +38 + m$this +-> +£tHo¡ +( +$ho¡ +); + +39 + m$this +-> +£tPÜt +( +$pÜt +); + +40 + m$this +-> +£tEnüy±iÚ +( +$£cur™y +); + +50 +public +  +funùiÚ + +ÃwIn¡ªû +( +$ho¡ + = 'loÿlho¡', +$pÜt + = 25, + +51 +$£cur™y + = +nuÎ +) + +53  +Ãw + +£lf +( +$ho¡ +, +$pÜt +, +$£cur™y +); + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Spool.php + +1 + `ü—‹D•’d’c›sFÜ +('transport.spool'); + +27 +$¬gum’ts +[] = +$¥oÞ +; + +29 + `ÿÎ_u£r_func_¬¿y +( + +30 + `¬¿y +( +$this +, 'Swift_Transport_SpoolTransport::__construct'), + +31 +$¬gum’ts + + +40 +public +  +funùiÚ + + $ÃwIn¡ªû +( +Swiá_SpoÞ + +$¥oÞ +) + +42  +Ãw + + `£lf +( +$¥oÞ +); + +43 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/StreamFilter.php + +1 +_£¬ch + = +$£¬ch +; + +48 +$this +-> +_šdex + = + `¬¿y +(); + +49 +$this +-> +_Œ“ + = + `¬¿y +(); + +50 +$this +-> +_»¶aû + = + `¬¿y +(); + +51 +$this +-> +_»pSize + = + `¬¿y +(); + +53 +$Œ“ + = +nuÎ +; + +54 +$i + = +nuÎ +; + +55 +$Ï¡_size + = +$size + = 0; + +56 + `fܗch + ( +$£¬ch + +as + +$i + => +$£¬ch_–em’t +) + +58 ià( +$Œ“ + !=ð +nuÎ +) + +60 +$Œ“ +[-1] = + `mš + ( + `couÁ +( +$»¶aû +è- 1, +$i + - 1); + +61 +$Œ“ +[-2] = +$Ï¡_size +; + +63 +$Œ“ + = & +$this +-> +_Œ“ +; + +64 ià( + `is_¬¿y + ( +$£¬ch_–em’t +)) + +66 + `fܗch + ( +$£¬ch_–em’t + +as + +$k + => +$ch¬ +) + +68 +$this +-> +_šdex +[ +$ch¬ +] = +Œue +; + +69 ià(! + `is£t +( +$Œ“ +[ +$ch¬ +])) + +71 +$Œ“ +[ +$ch¬ +] = + `¬¿y +(); + +73 +$Œ“ + = &$Œ“[ +$ch¬ +]; + +75 +$Ï¡_size + = +$k ++1; + +76 +$size + = + `max +($size, +$Ï¡_size +); + +80 +$Ï¡_size + = 1; + +81 ià(! + `is£t +( +$Œ“ +[ +$£¬ch_–em’t +])) + +83 +$Œ“ +[ +$£¬ch_–em’t +] = + `¬¿y +(); + +85 +$Œ“ + = &$Œ“[ +$£¬ch_–em’t +]; + +86 +$size + = + `max +( +$Ï¡_size +, $size); + +87 +$this +-> +_šdex +[ +$£¬ch_–em’t +] = +Œue +; + +90 ià( +$i + !=ð +nuÎ +) + +92 +$Œ“ +[-1] = + `mš + ( + `couÁ + ( +$»¶aû +è- 1, +$i +); + +93 +$Œ“ +[-2] = +$Ï¡_size +; + +94 +$this +-> +_Œ“MaxL’ + = +$size +; + +96 + `fܗch + ( +$»¶aû + +as + +$»p +) + +98 ià(! + `is_¬¿y +( +$»p +)) + +100 +$»p + = + `¬¿y + ($rep); + +102 +$this +-> +_»¶aû +[] = +$»p +; + +104  +$i + = + `couÁ +( +$this +-> +_»¶aû +) - 1; $i >= 0; --$i) + +106 +$this +-> +_»¶aû +[ +$i +] = +$»p + = $this-> + `fž‹r +($this->_replace[$i], $i); + +107 +$this +-> +_»pSize +[ +$i +] = + `couÁ +( +$»p +); + +116 +public + +funùiÚ + + $shouldBufãr +( +$bufãr +) + +118 +$’dOfBufãr + = + `’d +( +$bufãr +); + +119  + `is£t + ( +$this +-> +_šdex +[ +$’dOfBufãr +]); + +120 + } +} + +127 +public + +funùiÚ + +fž‹r +( +$bufãr +, +$_mšR•Ïûs + = -1) + +129 ià( +$this +-> +_Œ“MaxL’ + == 0) + +131  +$bufãr +; + +134 + g$ÃwBufãr + = +¬¿y +(); + +135 + g$buf_size + = +couÁ +( +$bufãr +); + +136  + g$i + = 0; $˜< + g$buf_size +; ++$i) + +138 + g$£¬ch_pos + = +$this +-> +_Œ“ +; + +139 + g$Ï¡_found + = +PHP_INT_MAX +; + +141  + g$j + = 0; $j <ð +$this +-> +_Œ“MaxL’ +; ++$j) + +144 ià( +is£t + ( +$bufãr + [ +$p + = +$i + + +$j +]è&& is£t( +$£¬ch_pos +[$buffer[$p]])) + +146 +$£¬ch_pos + = $£¬ch_pos[ +$bufãr +[ +$p +]]; + +148 ià( +is£t +( +$£¬ch_pos +[- 1]è&& + g$£¬ch_pos +[-1] < + g$Ï¡_found + + +149 && + g$£¬ch_pos +[-1] > + g$_mšR•Ïûs +) + +151 + g$Ï¡_found + = +$£¬ch_pos +[-1]; + +152 + g$Ï¡_size + = +$£¬ch_pos +[-2]; + +156 +–£if + ( +$Ï¡_found + !=ð +PHP_INT_MAX +) + +159 +$»p_size + = +$this +-> +_»pSize +[ +$Ï¡_found +]; + +160  + g$j + = 0; $j < + g$»p_size +; ++$j) + +162 + g$ÃwBufãr +[] = +$this +-> +_»¶aû +[ +$Ï¡_found +][ +$j +]; + +165 + g$i + +ð +$Ï¡_size + - 1; + +167 ià( + g$i + >ð +$buf_size +) + +169 +$ÃwBufãr +[] = +$bufãr +[ +$i +]; + +182 + g$ÃwBufãr +[] = +$bufãr +[ +$i +]; + +185  + g$ÃwBufãr +; + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/StreamFilters/StringReplacementFilter.php + +1 +_£¬ch + = +$£¬ch +; + +35 +$this +-> +_»¶aû + = +$»¶aû +; + +43 +public + +funùiÚ + + $shouldBufãr +( +$bufãr +) + +45 +$’dOfBufãr + = + `sub¡r +( +$bufãr +, -1); + +46 + `fܗch + (( +¬¿y +è +$this +-> +_£¬ch + +as + +$ÃedË +) + +48 ià( +çl£ + !=ð + `¡½os +( +$ÃedË +, +$’dOfBufãr +)) + +50  +Œue +; + +53  +çl£ +; + +54 + } +} + +61 +public + +funùiÚ + + $fž‹r +( +$bufãr +) + +63  + `¡r_»¶aû +( +$this +-> +_£¬ch +, $this-> +_»¶aû +, +$bufãr +); + +64 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/StreamFilters/StringReplacementFilterFactory.php + +1 +_fž‹rs +[ +$£¬ch +][ +$»¶aû +])) + +36 ià(! + `is£t +( +$this +-> +_fž‹rs +[ +$£¬ch +])) + +38 +$this +-> +_fž‹rs +[ +$£¬ch +] = + `¬¿y +(); + +41 ià(! + `is£t +( +$this +-> +_fž‹rs +[ +$£¬ch +][ +$»¶aû +])) + +43 +$this +-> +_fž‹rs +[ +$£¬ch +][ +$»¶aû +] = + `¬¿y +(); + +46 +$this +-> +_fž‹rs +[ +$£¬ch +][ +$»¶aû +] + +47 ð +Ãw + + `Swiá_SŒ—mFž‹rs_SŒšgR•Ïûm’tFž‹r +( +$£¬ch +, +$»¶aû +); + +50  +$this +-> +_fž‹rs +[ +$£¬ch +][ +$»¶aû +]; + +53 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/SwiftException.php + +1 +_ev’tDi¥©ch” + = +$di¥©ch” +; + +55 +$this +-> +_bufãr + = +$buf +; + +56 +$this +-> + `_lookupHo¡Çme +(); + +67 +public + +funùiÚ + + $£tLoÿlDomaš +( +$domaš +) + +69 +$this +-> +_domaš + = +$domaš +; + +70  +$this +; + +71 + } +} + +78 +public + +funùiÚ + + $g‘LoÿlDomaš +() + +80  +$this +-> +_domaš +; + +81 + } +} + +86 +public + +funùiÚ + + $¡¬t +() + +88 ià(! +$this +-> +_¡¬‹d +) + +90 ià( +$evt + = +$this +-> +_ev’tDi¥©ch” +-> + `ü—‹T¿n¥ÜtChªgeEv’t +($this)) + +92 +$this +-> +_ev’tDi¥©ch” +-> + `di¥©chEv’t +( +$evt +, 'beforeTransportStarted'); + +93 ià( +$evt +-> + `bubbËCªûÎed +()) + +99 +Œy + + +101 +$this +-> +_bufãr +-> + `š™Ÿlize +($this-> + `_g‘BufãrP¬ams +()); + +103 + `ÿtch + ( +Swiá_T¿n¥ÜtExû±iÚ + +$e +) + +105 +$this +-> + `_throwExû±iÚ +( +$e +); + +107 +$this +-> + `_»adG»‘šg +(); + +108 +$this +-> + `_doH–oCommªd +(); + +110 ià( +$evt +) + +112 +$this +-> +_ev’tDi¥©ch” +-> + `di¥©chEv’t +( +$evt +, 'transportStarted'); + +115 +$this +-> +_¡¬‹d + = +Œue +; + +117 + } +} + +124 +public + +funùiÚ + + $isS¹ed +() + +126  +$this +-> +_¡¬‹d +; + +127 + } +} + +139 +public + +funùiÚ + + $£nd +( +Swiá_Mime_Mes§ge + +$mes§ge +, & +$çžedRec›Ás + = +nuÎ +) + +141 +$£Á + = 0; + +142 +$çžedRec›Ás + = ( +¬¿y +) $failedRecipients; + +144 ià(! +$»v”£P©h + = +$this +-> + `_g‘Rev”£P©h +( +$mes§ge +)) + +146 +throw + +Ãw + + `Swiá_T¿n¥ÜtExû±iÚ +( + +151 ià( +$evt + = +$this +-> +_ev’tDi¥©ch” +-> + `ü—‹S’dEv’t +($this, +$mes§ge +)) + +153 +$this +-> +_ev’tDi¥©ch” +-> + `di¥©chEv’t +( +$evt +, 'beforeSendPerformed'); + +154 ià( +$evt +-> + `bubbËCªûÎed +()) + +160 +$to + = ( +¬¿y +è +$mes§ge +-> + `g‘To +(); + +161 +$cc + = ( +¬¿y +è +$mes§ge +-> + `g‘Cc +(); + +162 +$bcc + = ( +¬¿y +è +$mes§ge +-> + `g‘Bcc +(); + +164 +$mes§ge +-> + `£tBcc +( + `¬¿y +()); + +166 +Œy + + +168 +$£Á + +ð +$this +-> + `_£ndTo +( +$mes§ge +, +$»v”£P©h +, +$to +, +$çžedRec›Ás +); + +169 +$£Á + +ð +$this +-> + `_£ndCc +( +$mes§ge +, +$»v”£P©h +, +$cc +, +$çžedRec›Ás +); + +170 +$£Á + +ð +$this +-> + `_£ndBcc +( +$mes§ge +, +$»v”£P©h +, +$bcc +, +$çžedRec›Ás +); + +172 + `ÿtch + ( +Exû±iÚ + +$e +) + +174 +$mes§ge +-> + `£tBcc +( +$bcc +); + +175 +throw + +$e +; + +178 +$mes§ge +-> + `£tBcc +( +$bcc +); + +180 ià( +$evt +) + +182 ià( +$£Á + =ð + `couÁ +( +$to +è+ couÁ( +$cc +è+ couÁ( +$bcc +)) + +184 +$evt +-> + `£tResuÉ +( +Swiá_Ev’ts_S’dEv’t +:: +RESULT_SUCCESS +); + +186 + `–£if + ( +$£Á + > 0) + +188 +$evt +-> + `£tResuÉ +( +Swiá_Ev’ts_S’dEv’t +:: +RESULT_TENTATIVE +); + +192 +$evt +-> + `£tResuÉ +( +Swiá_Ev’ts_S’dEv’t +:: +RESULT_FAILED +); + +194 +$evt +-> + `£tFažedRec›Ás +( +$çžedRec›Ás +); + +195 +$this +-> +_ev’tDi¥©ch” +-> + `di¥©chEv’t +( +$evt +, 'sendPerformed'); + +198 +$mes§ge +-> + `g’”©eId +(); + +200  +$£Á +; + +201 + } +} + +206 +public + +funùiÚ + + $¡Ý +() + +208 ià( +$this +-> +_¡¬‹d +) + +210 ià( +$evt + = +$this +-> +_ev’tDi¥©ch” +-> + `ü—‹T¿n¥ÜtChªgeEv’t +($this)) + +212 +$this +-> +_ev’tDi¥©ch” +-> + `di¥©chEv’t +( +$evt +, 'beforeTransportStopped'); + +213 ià( +$evt +-> + `bubbËCªûÎed +()) + +219 +Œy + + +221 +$this +-> + `execu‹Commªd +("QUIT\r\n", + `¬¿y +(221)); + +223 + `ÿtch + ( +Swiá_T¿n¥ÜtExû±iÚ + +$e +) {} + +225 +Œy + + +227 +$this +-> +_bufãr +-> + `‹rmš©e +(); + +229 ià( +$evt +) + +231 +$this +-> +_ev’tDi¥©ch” +-> + `di¥©chEv’t +( +$evt +, 'transportStopped'); + +234 + `ÿtch + ( +Swiá_T¿n¥ÜtExû±iÚ + +$e +) + +236 +$this +-> + `_throwExû±iÚ +( +$e +); + +239 +$this +-> +_¡¬‹d + = +çl£ +; + +240 + } +} + +247 +public + +funùiÚ + + $»gi¡”Plugš +( +Swiá_Ev’ts_Ev’tLi¡’” + +$¶ugš +) + +249 +$this +-> +_ev’tDi¥©ch” +-> + `bšdEv’tLi¡’” +( +$¶ugš +); + +250 + } +} + +255 +public + +funùiÚ + + $»£t +() + +257 +$this +-> + `execu‹Commªd +("RSET\r\n", + `¬¿y +(250)); + +258 + } +} + +265 +public + +funùiÚ + + $g‘Bufãr +() + +267  +$this +-> +_bufãr +; + +268 + } +} + +281 +public + +funùiÚ + +execu‹Commªd +( +$commªd +, +$codes + = +¬¿y +(), & +$çžu»s + = +nuÎ +) + +283 +$çžu»s + = ( +¬¿y +) $failures; + +284 + g$£q + = +$this +-> +_bufãr +-> +wr™e +( +$commªd +); + +285 + g$»¥Ú£ + = +$this +-> +_g‘FuÎRe¥Ú£ +( +$£q +); + +286 ià( + g$evt + = +$this +-> +_ev’tDi¥©ch” +-> +ü—‹CommªdEv’t +($this, +$commªd +, +$codes +)) + +288 + g$this +-> + g_ev’tDi¥©ch” +-> +di¥©chEv’t +( +$evt +, 'commandSent'); + +290 + g$this +-> +_as£¹Re¥Ú£Code +( +$»¥Ú£ +, +$codes +); + +291  + g$»¥Ú£ +; + +297 +´Ùeùed + +funùiÚ + + $_»adG»‘šg +() + +299 +$this +-> + `_as£¹Re¥Ú£Code +($this-> + `_g‘FuÎRe¥Ú£ +(0), + `¬¿y +(220)); + +300 + } +} + +303 +´Ùeùed + +funùiÚ + + $_doH–oCommªd +() + +305 +$this +-> + `execu‹Commªd +( + +306 + `¥rštf +("HELO %s\r\n", +$this +-> +_domaš +), + `¬¿y +(250) + +308 + } +} + +311 +´Ùeùed + +funùiÚ + + $_doMažFromCommªd +( +$add»ss +) + +313 +$this +-> + `execu‹Commªd +( + +314 + `¥rštf +("MAIL FROM: <%s>\r\n", +$add»ss +), + `¬¿y +(250) + +316 + } +} + +319 +´Ùeùed + +funùiÚ + + $_doRýtToCommªd +( +$add»ss +) + +321 +$this +-> + `execu‹Commªd +( + +322 + `¥rštf +("RCPT TO: <%s>\r\n", +$add»ss +), + `¬¿y +(250, 251, 252) + +324 + } +} + +327 +´Ùeùed + +funùiÚ + + $_doD©aCommªd +() + +329 +$this +-> + `execu‹Commªd +("DATA\r\n", + `¬¿y +(354)); + +330 + } +} + +333 +´Ùeùed + +funùiÚ + + $_¡»amMes§ge +( +Swiá_Mime_Mes§ge + +$mes§ge +) + +335 +$this +-> +_bufãr +-> + `£tWr™eT¿n¦©iÚs +( + `¬¿y +("\r\n." => "\r\n..")); + +336 +Œy + + +338 +$mes§ge +-> + `toBy‹SŒ—m +( +$this +-> +_bufãr +); + +339 +$this +-> +_bufãr +-> + `æushBufãrs +(); + +341 + `ÿtch + ( +Swiá_T¿n¥ÜtExû±iÚ + +$e +) + +343 +$this +-> + `_throwExû±iÚ +( +$e +); + +345 +$this +-> +_bufãr +-> + `£tWr™eT¿n¦©iÚs +( + `¬¿y +()); + +346 +$this +-> + `execu‹Commªd +("\r\n.\r\n", + `¬¿y +(250)); + +347 + } +} + +350 +´Ùeùed + +funùiÚ + + $_g‘Rev”£P©h +( +Swiá_Mime_Mes§ge + +$mes§ge +) + +352 +$»tuº + = +$mes§ge +-> + `g‘R‘uºP©h +(); + +353 +$£nd” + = +$mes§ge +-> + `g‘S’d” +(); + +354 +$äom + = +$mes§ge +-> + `g‘From +(); + +355 +$·th + = +nuÎ +; + +356 ià(! + `em±y +( +$»tuº +)) + +358 +$·th + = +$»tuº +; + +360 + `–£if + (! + `em±y +( +$£nd” +)) + +363 + `»£t +( +$£nd” +); + +364 +$·th + = + `key +( +$£nd” +); + +366 + `–£if + (! + `em±y +( +$äom +)) + +368 + `»£t +( +$äom +); + +369 +$·th + = + `key +( +$äom +); + +371  +$·th +; + +372 + } +} + +375 +´Ùeùed + +funùiÚ + + $_throwExû±iÚ +( +Swiá_T¿n¥ÜtExû±iÚ + +$e +) + +377 ià( +$evt + = +$this +-> +_ev’tDi¥©ch” +-> + `ü—‹T¿n¥ÜtExû±iÚEv’t +($this, +$e +)) + +379 +$this +-> +_ev’tDi¥©ch” +-> + `di¥©chEv’t +( +$evt +, 'exceptionThrown'); + +380 ià(! +$evt +-> + `bubbËCªûÎed +()) + +382 +throw + +$e +; + +387 +throw + +$e +; + +389 + } +} + +392 +´Ùeùed + +funùiÚ + + $_as£¹Re¥Ú£Code +( +$»¥Ú£ +, +$wª‹d +) + +394 + `li¡ +( +$code +, +$£·¿tÜ +, +$‹xt +èð + `ssÿnf +( +$»¥Ú£ +, '%3d%[ -]%s'); + +395 +$v®id + = ( + `em±y +( +$wª‹d +è|| + `š_¬¿y +( +$code +, $wanted)); + +397 ià( +$evt + = +$this +-> +_ev’tDi¥©ch” +-> + `ü—‹Re¥Ú£Ev’t +($this, +$»¥Ú£ +, + +398 +$v®id +)) + +400 +$this +-> +_ev’tDi¥©ch” +-> + `di¥©chEv’t +( +$evt +, 'responseReceived'); + +403 ià(! +$v®id +) + +405 +$this +-> + `_throwExû±iÚ +( + +406 +Ãw + + `Swiá_T¿n¥ÜtExû±iÚ +( + +407 'Ex³ùed„e¥Ú£ cod' . + `im¶ode +('/', +$wª‹d +) . ' but got code ' . + +408 '"' . +$code + . '", w™h mes§g"' . +$»¥Ú£ + . '"' + +412 + } +} + +415 +´Ùeùed + +funùiÚ + + $_g‘FuÎRe¥Ú£ +( +$£q +) + +417 +$»¥Ú£ + = ''; + +418 +Œy + + +422 +$lše + = +$this +-> +_bufãr +-> + `»adLše +( +$£q +); + +423 +$»¥Ú£ + .ð +$lše +; + +425  +nuÎ + !=ð +$lše + && +çl£ + !== $line && ' ' != $line{3}); + +427 + `ÿtch + ( +Swiá_T¿n¥ÜtExû±iÚ + +$e +) + +429 +$this +-> + `_throwExû±iÚ +( +$e +); + +431  +$»¥Ú£ +; + +432 + } +} + +437 +´iv©e + +funùiÚ + + $_doMažT¿n§ùiÚ +( +$mes§ge +, +$»v”£P©h +, + +438 +¬¿y + +$»c›Ás +,‡¼ay & +$çžedRec›Ás +) + +440 +$£Á + = 0; + +441 +$this +-> + `_doMažFromCommªd +( +$»v”£P©h +); + +442 + `fܗch + ( +$»c›Ás + +as + +$fÜw¬dP©h +) + +444 +Œy + + +446 +$this +-> + `_doRýtToCommªd +( +$fÜw¬dP©h +); + +447 +$£Á +++; + +449 + `ÿtch + ( +Swiá_T¿n¥ÜtExû±iÚ + +$e +) + +451 +$çžedRec›Ás +[] = +$fÜw¬dP©h +; + +455 ià( +$£Á + != 0) + +457 +$this +-> + `_doD©aCommªd +(); + +458 +$this +-> + `_¡»amMes§ge +( +$mes§ge +); + +462 +$this +-> + `»£t +(); + +465  +$£Á +; + +466 + } +} + +469 +´iv©e + +funùiÚ + + $_£ndTo +( +Swiá_Mime_Mes§ge + +$mes§ge +, +$»v”£P©h +, + +470 +¬¿y + +$to +,‡¼ay & +$çžedRec›Ás +) + +472 ià( + `em±y +( +$to +)) + +476  +$this +-> + `_doMažT¿n§ùiÚ +( +$mes§ge +, +$»v”£P©h +, + `¬¿y_keys +( +$to +), + +477 +$çžedRec›Ás +); + +478 + } +} + +481 +´iv©e + +funùiÚ + + $_£ndCc +( +Swiá_Mime_Mes§ge + +$mes§ge +, +$»v”£P©h +, + +482 +¬¿y + +$cc +,‡¼ay & +$çžedRec›Ás +) + +484 ià( + `em±y +( +$cc +)) + +488  +$this +-> + `_doMažT¿n§ùiÚ +( +$mes§ge +, +$»v”£P©h +, + `¬¿y_keys +( +$cc +), + +489 +$çžedRec›Ás +); + +490 + } +} + +493 +´iv©e + +funùiÚ + + $_£ndBcc +( +Swiá_Mime_Mes§ge + +$mes§ge +, +$»v”£P©h +, + +494 +¬¿y + +$bcc +,‡¼ay & +$çžedRec›Ás +) + +496 +$£Á + = 0; + +497 + `fܗch + ( +$bcc + +as + +$fÜw¬dP©h + => +$Çme +) + +499 +$mes§ge +-> + `£tBcc +( + `¬¿y +( +$fÜw¬dP©h + => +$Çme +)); + +500 +$£Á + +ð +$this +-> + `_doMažT¿n§ùiÚ +( + +501 +$mes§ge +, +$»v”£P©h +, + `¬¿y +( +$fÜw¬dP©h +), +$çžedRec›Ás + + +504  +$£Á +; + +505 + } +} + +508 +´iv©e + +funùiÚ + + $_lookupHo¡Çme +() + +510 ià(! + `em±y +( +$_SERVER +['SERVER_NAME']) + +511 && +$this +-> + `_isFqdn +( +$_SERVER +['SERVER_NAME'])) + +513 +$this +-> +_domaš + = +$_SERVER +['SERVER_NAME']; + +515 + `–£if + (! + `em±y +( +$_SERVER +['SERVER_ADDR'])) + +517 +$this +-> +_domaš + = + `¥rštf +('[%s]', +$_SERVER +['SERVER_ADDR']); + +519 + } +} + +522 +´iv©e + +funùiÚ + + $_isFqdn +( +$ho¡Çme +) + +525 ià( +çl£ + !=ð +$dÙPos + = + `¡½os +( +$ho¡Çme +, '.')) + +527  ( +$dÙPos + > 0è&& ($dÙPo !ð + `¡¾’ +( +$ho¡Çme +) - 1); + +531  +çl£ +; + +533 + } +} + +538 +public + +funùiÚ + + $__de¡ruù +() + +540 +$this +-> + `¡Ý +(); + +541 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/Auth/CramMd5Authenticator.php + +1 + `execu‹Commªd +("AUTH CRAM-MD5\r\n", + `¬¿y +(334)); + +47 +$ch®Ënge + = + `ba£64_decode +( + `sub¡r +($challenge, 4)); + +48 +$mes§ge + = + `ba£64_’code +( + +49 +$u£ºame + . ' ' . +$this +-> + `_g‘Re¥Ú£ +( +$·sswÜd +, +$ch®Ënge +) + +51 +$ag’t +-> + `execu‹Commªd +( + `¥rštf +("%s\r\n", +$mes§ge +), + `¬¿y +(235)); + +52  +Œue +; + +54 + `ÿtch + ( +Swiá_T¿n¥ÜtExû±iÚ + +$e +) + +56 +$ag’t +-> + `execu‹Commªd +("RSET\r\n", + `¬¿y +(250)); + +57  +çl£ +; + +59 + } +} + +67 +´iv©e + +funùiÚ + + $_g‘Re¥Ú£ +( +$£ü‘ +, +$ch®Ënge +) + +69 ià( + `¡¾’ +( +$£ü‘ +) > 64) + +71 +$£ü‘ + = + `·ck +('H32', + `md5 +($secret)); + +74 ià( + `¡¾’ +( +$£ü‘ +) < 64) + +76 +$£ü‘ + = + `¡r_·d +($£ü‘, 64, + `chr +(0)); + +79 +$k_ad + = + `sub¡r +( +$£ü‘ +, 0, 64è^ + `¡r_»³© +( + `chr +(0x36), 64); + +80 +$k_Ýad + = + `sub¡r +( +$£ü‘ +, 0, 64è^ + `¡r_»³© +( + `chr +(0x5C), 64); + +82 +$šÃr + = + `·ck +('H32', + `md5 +( +$k_ad + . +$ch®Ënge +)); + +83 +$dige¡ + = + `md5 +( +$k_Ýad + . +$šÃr +); + +85  +$dige¡ +; + +86 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/Auth/LoginAuthenticator.php + +1 + `execu‹Commªd +("AUTH LOGIN\r\n", + `¬¿y +(334)); + +47 +$ag’t +-> + `execu‹Commªd +( + `¥rštf +("%s\r\n", + `ba£64_’code +( +$u£ºame +)), + `¬¿y +(334)); + +48 +$ag’t +-> + `execu‹Commªd +( + `¥rštf +("%s\r\n", + `ba£64_’code +( +$·sswÜd +)), + `¬¿y +(235)); + +49  +Œue +; + +51 + `ÿtch + ( +Swiá_T¿n¥ÜtExû±iÚ + +$e +) + +53 +$ag’t +-> + `execu‹Commªd +("RSET\r\n", + `¬¿y +(250)); + +54  +çl£ +; + +56 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/Auth/PlainAuthenticator.php + +1 + `execu‹Commªd +( + `¥rštf +("AUTH PLAIN %s\r\n", +$mes§ge +), + `¬¿y +(235)); + +48  +Œue +; + +50 + `ÿtch + ( +Swiá_T¿n¥ÜtExû±iÚ + +$e +) + +52 +$ag’t +-> + `execu‹Commªd +("RSET\r\n", + `¬¿y +(250)); + +53  +çl£ +; + +55 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/AuthHandler.php + +1 + `£tAuth’tiÿtÜs +( +$auth’tiÿtÜs +); + +72 +public + +funùiÚ + + $£tAuth’tiÿtÜs +( +¬¿y + +$auth’tiÿtÜs +) + +74 +$this +-> +_auth’tiÿtÜs + = +$auth’tiÿtÜs +; + +75 + } +} + +81 +public + +funùiÚ + + $g‘Auth’tiÿtÜs +() + +83  +$this +-> +_auth’tiÿtÜs +; + +84 + } +} + +90 +public + +funùiÚ + + $£tU£ºame +( +$u£ºame +) + +92 +$this +-> +_u£ºame + = +$u£ºame +; + +93 + } +} + +99 +public + +funùiÚ + + $g‘U£ºame +() + +101  +$this +-> +_u£ºame +; + +102 + } +} + +108 +public + +funùiÚ + + $£tPasswÜd +( +$·sswÜd +) + +110 +$this +-> +_·sswÜd + = +$·sswÜd +; + +111 + } +} + +117 +public + +funùiÚ + + $g‘PasswÜd +() + +119  +$this +-> +_·sswÜd +; + +120 + } +} + +126 +public + +funùiÚ + + $£tAuthMode +( +$mode +) + +128 +$this +-> +_auth_mode + = +$mode +; + +129 + } +} + +135 +public + +funùiÚ + + $g‘AuthMode +() + +137  +$this +-> +_auth_mode +; + +138 + } +} + +144 +public + +funùiÚ + + $g‘HªdËdKeywÜd +() + +147 + } +} + +153 +public + +funùiÚ + + $£tKeywÜdP¬ams +( +¬¿y + +$·¿m‘”s +) + +155 +$this +-> +_esmP¬ams + = +$·¿m‘”s +; + +156 + } +} + +162 +public + +funùiÚ + + $aá”Ehlo +( +Swiá_T¿n¥Üt_SmAg’t + +$ag’t +) + +164 ià( +$this +-> +_u£ºame +) + +166 +$couÁ + = 0; + +167 + `fܗch + ( +$this +-> + `_g‘Auth’tiÿtÜsFÜAg’t +(è +as + +$auth’tiÿtÜ +) + +169 ià( + `š_¬¿y +( + `¡¹Þow” +( +$auth’tiÿtÜ +-> + `g‘AuthKeywÜd +()), + +170 + `¬¿y_m­ +('¡¹Þow”', +$this +-> +_esmP¬ams +))) + +172 +$couÁ +++; + +173 ià( +$auth’tiÿtÜ +-> + `auth’tiÿ‹ +( +$ag’t +, +$this +-> +_u£ºame +, $this-> +_·sswÜd +)) + +179 +throw + +Ãw + + `Swiá_T¿n¥ÜtExû±iÚ +( + +181 +$this +-> +_u£ºame + . '" usšg ' . +$couÁ + . '…ossible‡uthenticators' + +184 + } +} + +189 +public + +funùiÚ + + $g‘MažP¬ams +() + +191  + `¬¿y +(); + +192 + } +} + +197 +public + +funùiÚ + + $g‘RýtP¬ams +() + +199  + `¬¿y +(); + +200 + } +} + +205 +public + +funùiÚ + +ÚCommªd +( +Swiá_T¿n¥Üt_SmAg’t + +$ag’t +, + +206 +$commªd +, +$codes + = +¬¿y +(), & +$çžedRec›Ás + = +nuÎ +, & +$¡Ý + = +çl£ +) + +216 +public + +funùiÚ + + $g‘PriܙyOv” +( +$esmKeywÜd +) + +219 + } +} + +225 +public + +funùiÚ + + $expo£MixšM‘hods +() + +227  + `¬¿y +('setUsername', 'getUsername', 'setPassword', 'getPassword', 'setAuthMode', 'getAuthMode'); + +228 + } +} + +233 +public + +funùiÚ + + $»£tS‹ +() + +235 + } +} + +245 +´Ùeùed + +funùiÚ + + $_g‘Auth’tiÿtÜsFÜAg’t +() + +247 ià(! +$mode + = + `¡¹Þow” +( +$this +-> +_auth_mode +)) + +249  +$this +-> +_auth’tiÿtÜs +; + +252 + `fܗch + ( +$this +-> +_auth’tiÿtÜs + +as + +$auth’tiÿtÜ +) + +254 ià( + `¡¹Þow” +( +$auth’tiÿtÜ +-> + `g‘AuthKeywÜd +()è=ð +$mode +) + +256  + `¬¿y +( +$auth’tiÿtÜ +); + +260 +throw + +Ãw + + `Swiá_T¿n¥ÜtExû±iÚ +('Auth mod'. +$mode +.' is invalid'); + +261 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/Authenticator.php + +1 +Swiá_T¿n¥Üt_IoBufãr +:: +TYPE_SOCKET + + +64 +public + +funùiÚ + + $__cÚ¡ruù +( +Swiá_T¿n¥Üt_IoBufãr + +$buf +, + +65 +¬¿y + +$ex‹nsiÚHªdËrs +, +Swiá_Ev’ts_Ev’tDi¥©ch” + +$di¥©ch” +) + +67 +·»Á +:: + `__cÚ¡ruù +( +$buf +, +$di¥©ch” +); + +68 +$this +-> + `£tEx‹nsiÚHªdËrs +( +$ex‹nsiÚHªdËrs +); + +75 +public + +funùiÚ + + $£tHo¡ +( +$ho¡ +) + +77 +$this +-> +_·¿ms +['ho¡'] = +$ho¡ +; + +78  +$this +; + +79 + } +} + +85 +public + +funùiÚ + + $g‘Ho¡ +() + +87  +$this +-> +_·¿ms +['host']; + +88 + } +} + +94 +public + +funùiÚ + + $£tPÜt +( +$pÜt +) + +96 +$this +-> +_·¿ms +['pÜt'] = (è +$pÜt +; + +97  +$this +; + +98 + } +} + +104 +public + +funùiÚ + + $g‘PÜt +() + +106  +$this +-> +_·¿ms +['port']; + +107 + } +} + +113 +public + +funùiÚ + + $£tTimeout +( +$timeout +) + +115 +$this +-> +_·¿ms +['timeout'] = (è +$timeout +; + +116  +$this +; + +117 + } +} + +123 +public + +funùiÚ + + $g‘Timeout +() + +125  +$this +-> +_·¿ms +['timeout']; + +126 + } +} + +132 +public + +funùiÚ + + $£tEnüy±iÚ +( +$’c +) + +134 +$this +-> +_·¿ms +['´ÙocÞ'] = +$’c +; + +135  +$this +; + +136 + } +} + +142 +public + +funùiÚ + + $g‘Enüy±iÚ +() + +144  +$this +-> +_·¿ms +['protocol']; + +145 + } +} + +151 +public + +funùiÚ + + $£tEx‹nsiÚHªdËrs +( +¬¿y + +$hªdËrs +) + +153 +$assoc + = + `¬¿y +(); + +154 + `fܗch + ( +$hªdËrs + +as + +$hªdËr +) + +156 +$assoc +[ +$hªdËr +-> + `g‘HªdËdKeywÜd +()] = $handler; + +158 + `uasÜt +( +$assoc +, + `¬¿y +( +$this +, '_sortHandlers')); + +159 +$this +-> +_hªdËrs + = +$assoc +; + +160 +$this +-> + `_£tHªdËrP¬ams +(); + +161  +$this +; + +162 + } +} + +168 +public + +funùiÚ + + $g‘Ex‹nsiÚHªdËrs +() + +170  + `¬¿y_v®ues +( +$this +-> +_hªdËrs +); + +171 + } +} + +182 +public + +funùiÚ + +execu‹Commªd +( +$commªd +, +$codes + = +¬¿y +(), & +$çžu»s + = +nuÎ +) + +184 +$çžu»s + = ( +¬¿y +) $failures; + +185 + g$¡ÝSigÇl + = +çl£ +; + +186 + g$»¥Ú£ + = +nuÎ +; + +187 +fܗch + ( +$this +-> +_g‘AùiveHªdËrs +(è +as + +$hªdËr +) + +189 + g$»¥Ú£ + = +$hªdËr +-> +ÚCommªd +( + +190 +$this +, +$commªd +, +$codes +, +$çžu»s +, +$¡ÝSigÇl + + +192 ià( + g$¡ÝSigÇl +) + +194  + g$»¥Ú£ +; + +197  + g·»Á +:: +execu‹Commªd +( +$commªd +, +$codes +, +$çžu»s +); + +203 +public + +funùiÚ + + $__ÿÎ +( +$m‘hod +, +$¬gs +) + +205 + `fܗch + ( +$this +-> +_hªdËrs + +as + +$hªdËr +) + +207 ià( + `š_¬¿y +( + `¡¹Þow” +( +$m‘hod +), + +208 + `¬¿y_m­ +('¡¹Þow”', ( +¬¿y +è +$hªdËr +-> + `expo£MixšM‘hods +()) + +211 +$»tuº + = + `ÿÎ_u£r_func_¬¿y +( + `¬¿y +( +$hªdËr +, +$m‘hod +), +$¬gs +); + +213 ià( + `is_nuÎ +( +$»tuº +è&& + `sub¡r +( +$m‘hod +, 0, 3) == 'set') + +215  +$this +; + +219  +$»tuº +; + +223 + `Œigg”_”rÜ +('C®ÈtØundefšed m‘hod ' . +$m‘hod +, +E_USER_ERROR +); + +224 + } +} + +229 +´Ùeùed + +funùiÚ + + $_g‘BufãrP¬ams +() + +231  +$this +-> +_·¿ms +; + +232 + } +} + +235 +´Ùeùed + +funùiÚ + + $_doH–oCommªd +() + +237 +Œy + + +239 +$»¥Ú£ + = +$this +-> + `execu‹Commªd +( + +240 + `¥rštf +("EHLO %s\r\n", +$this +-> +_domaš +), + `¬¿y +(250) + +242 +$this +-> +_ÿ·bž™›s + = $this-> + `_g‘C­abž™›s +( +$»¥Ú£ +); + +243 +$this +-> + `_£tHªdËrP¬ams +(); + +244 + `fܗch + ( +$this +-> + `_g‘AùiveHªdËrs +(è +as + +$hªdËr +) + +246 +$hªdËr +-> + `aá”Ehlo +( +$this +); + +249 + `ÿtch + ( +Swiá_T¿n¥ÜtExû±iÚ + +$e +) + +251 +·»Á +:: + `_doH–oCommªd +(); + +253 + } +} + +256 +´Ùeùed + +funùiÚ + + $_doMažFromCommªd +( +$add»ss +) + +258 +$hªdËrs + = +$this +-> + `_g‘AùiveHªdËrs +(); + +259 +$·¿ms + = + `¬¿y +(); + +260 + `fܗch + ( +$hªdËrs + +as + +$hªdËr +) + +262 +$·¿ms + = + `¬¿y_m”ge +($·¿ms, ( +¬¿y +è +$hªdËr +-> + `g‘MažP¬ams +()); + +264 +$·¿mSŒ + = ! + `em±y +( +$·¿ms +è? ' ' . + `im¶ode +(' ', $params) : ''; + +265 +$this +-> + `execu‹Commªd +( + +266 + `¥rštf +("MAIL FROM: <%s>%s\r\n", +$add»ss +, +$·¿mSŒ +), + `¬¿y +(250) + +268 + } +} + +271 +´Ùeùed + +funùiÚ + + $_doRýtToCommªd +( +$add»ss +) + +273 +$hªdËrs + = +$this +-> + `_g‘AùiveHªdËrs +(); + +274 +$·¿ms + = + `¬¿y +(); + +275 + `fܗch + ( +$hªdËrs + +as + +$hªdËr +) + +277 +$·¿ms + = + `¬¿y_m”ge +($·¿ms, ( +¬¿y +è +$hªdËr +-> + `g‘RýtP¬ams +()); + +279 +$·¿mSŒ + = ! + `em±y +( +$·¿ms +è? ' ' . + `im¶ode +(' ', $params) : ''; + +280 +$this +-> + `execu‹Commªd +( + +281 + `¥rštf +("RCPT TO: <%s>%s\r\n", +$add»ss +, +$·¿mSŒ +), + `¬¿y +(250, 251, 252) + +283 + } +} + +288 +´iv©e + +funùiÚ + + $_g‘C­abž™›s +( +$ehloRe¥Ú£ +) + +290 +$ÿ·bž™›s + = + `¬¿y +(); + +291 +$ehloRe¥Ú£ + = + `Œim +($ehloResponse); + +292 +$lšes + = + `ex¶ode +("\r\n", +$ehloRe¥Ú£ +); + +293 + `¬¿y_shiá +( +$lšes +); + +294 + `fܗch + ( +$lšes + +as + +$lše +) + +296 ià( + `´eg_m©ch +('/^[0-9]{3}[ -]([A-Z0-9-]+)((?:[ =].*)?)$/Di', +$lše +, +$m©ches +)) + +298 +$keywÜd + = + `¡¹ouµ” +( +$m©ches +[1]); + +299 +$·¿mSŒ + = + `¡¹ouµ” +( + `Érim +( +$m©ches +[2], ' =')); + +300 +$·¿ms + = ! + `em±y +( +$·¿mSŒ +è? + `ex¶ode +(' ', $·¿mSŒè: + `¬¿y +(); + +301 +$ÿ·bž™›s +[ +$keywÜd +] = +$·¿ms +; + +304  +$ÿ·bž™›s +; + +305 + } +} + +308 +´iv©e + +funùiÚ + + $_£tHªdËrP¬ams +() + +310 + `fܗch + ( +$this +-> +_hªdËrs + +as + +$keywÜd + => +$hªdËr +) + +312 ià( + `¬¿y_key_exi¡s +( +$keywÜd +, +$this +-> +_ÿ·bž™›s +)) + +314 +$hªdËr +-> + `£tKeywÜdP¬ams +( +$this +-> +_ÿ·bž™›s +[ +$keywÜd +]); + +317 + } +} + +320 +´iv©e + +funùiÚ + + $_g‘AùiveHªdËrs +() + +322 +$hªdËrs + = + `¬¿y +(); + +323 + `fܗch + ( +$this +-> +_hªdËrs + +as + +$keywÜd + => +$hªdËr +) + +325 ià( + `¬¿y_key_exi¡s +( +$keywÜd +, +$this +-> +_ÿ·bž™›s +)) + +327 +$hªdËrs +[] = +$hªdËr +; + +330  +$hªdËrs +; + +331 + } +} + +334 +´iv©e + +funùiÚ + + $_sÜtHªdËrs +( +$a +, +$b +) + +336  +$a +-> + `g‘PriܙyOv” +( +$b +-> + `g‘HªdËdKeywÜd +()); + +337 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/FailoverTransport.php + +1 +_Œª¥Üts +); + +50 +$£Á + = 0; + +52  +$i + = 0; $˜< +$maxT¿n¥Üts + + +53 && +$Œª¥Üt + = +$this +-> + `_g‘NextT¿n¥Üt +(); ++ +$i +) + +55 +Œy + + +57 ià(! +$Œª¥Üt +-> + `isS¹ed +()) + +59 +$Œª¥Üt +-> + `¡¬t +(); + +62  +$Œª¥Üt +-> + `£nd +( +$mes§ge +, +$çžedRec›Ás +); + +64 + `ÿtch + ( +Swiá_T¿n¥ÜtExû±iÚ + +$e +) + +66 +$this +-> + `_kžlCu¼’tT¿n¥Üt +(); + +70 ià( + `couÁ +( +$this +-> +_Œª¥Üts +) == 0) + +72 +throw + +Ãw + + `Swiá_T¿n¥ÜtExû±iÚ +( + +77  +$£Á +; + +78 + } +} + +82 +´Ùeùed + +funùiÚ + + $_g‘NextT¿n¥Üt +() + +84 ià(! + `is£t +( +$this +-> +_cu¼’tT¿n¥Üt +)) + +86 +$this +-> +_cu¼’tT¿n¥Üt + = +·»Á +:: + `_g‘NextT¿n¥Üt +(); + +88  +$this +-> +_cu¼’tT¿n¥Üt +; + +89 + } +} + +91 +´Ùeùed + +funùiÚ + + $_kžlCu¼’tT¿n¥Üt +() + +93 +$this +-> +_cu¼’tT¿n¥Üt + = +nuÎ +; + +94 +·»Á +:: + `_kžlCu¼’tT¿n¥Üt +(); + +95 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/IoBuffer.php + +1 +_Œª¥Üts + = +$Œª¥Üts +; + +51 +$this +-> +_d—dT¿n¥Üts + = + `¬¿y +(); + +52 + } +} + +59 +public + +funùiÚ + + $g‘T¿n¥Üts +( +¬¿y + +$Œª¥Üts +) + +61  + `¬¿y_m”ge +( +$this +-> +_Œª¥Üts +, $this-> +_d—dT¿n¥Üts +); + +62 + } +} + +69 +public + +funùiÚ + + $isS¹ed +() + +71  + `couÁ +( +$this +-> +_Œª¥Üts +) > 0; + +72 + } +} + +77 +public + +funùiÚ + + $¡¬t +() + +79 +$this +-> +_Œª¥Üts + = + `¬¿y_m”ge +($this->_Œª¥Üts, $this-> +_d—dT¿n¥Üts +); + +80 + } +} + +85 +public + +funùiÚ + + $¡Ý +() + +87 + `fܗch + ( +$this +-> +_Œª¥Üts + +as + +$Œª¥Üt +) + +89 +$Œª¥Üt +-> + `¡Ý +(); + +91 + } +} + +103 +public + +funùiÚ + + $£nd +( +Swiá_Mime_Mes§ge + +$mes§ge +, & +$çžedRec›Ás + = +nuÎ +) + +105 +$maxT¿n¥Üts + = + `couÁ +( +$this +-> +_Œª¥Üts +); + +106 +$£Á + = 0; + +108  +$i + = 0; $˜< +$maxT¿n¥Üts + + +109 && +$Œª¥Üt + = +$this +-> + `_g‘NextT¿n¥Üt +(); ++ +$i +) + +111 +Œy + + +113 ià(! +$Œª¥Üt +-> + `isS¹ed +()) + +115 +$Œª¥Üt +-> + `¡¬t +(); + +117 ià( +$£Á + = +$Œª¥Üt +-> + `£nd +( +$mes§ge +, +$çžedRec›Ás +)) + +122 + `ÿtch + ( +Swiá_T¿n¥ÜtExû±iÚ + +$e +) + +124 +$this +-> + `_kžlCu¼’tT¿n¥Üt +(); + +128 ià( + `couÁ +( +$this +-> +_Œª¥Üts +) == 0) + +130 +throw + +Ãw + + `Swiá_T¿n¥ÜtExû±iÚ +( + +135  +$£Á +; + +136 + } +} + +143 +public + +funùiÚ + + $»gi¡”Plugš +( +Swiá_Ev’ts_Ev’tLi¡’” + +$¶ugš +) + +145 + `fܗch + ( +$this +-> +_Œª¥Üts + +as + +$Œª¥Üt +) + +147 +$Œª¥Üt +-> + `»gi¡”Plugš +( +$¶ugš +); + +149 + } +} + +159 +´Ùeùed + +funùiÚ + + $_g‘NextT¿n¥Üt +() + +161 ià( +$Ãxt + = + `¬¿y_shiá +( +$this +-> +_Œª¥Üts +)) + +163 +$this +-> +_Œª¥Üts +[] = +$Ãxt +; + +165  +$Ãxt +; + +166 + } +} + +173 +´Ùeùed + +funùiÚ + + $_kžlCu¼’tT¿n¥Üt +() + +175 ià( +$Œª¥Üt + = + `¬¿y_pÝ +( +$this +-> +_Œª¥Üts +)) + +177 +Œy + + +179 +$Œª¥Üt +-> + `¡Ý +(); + +181 + `ÿtch + ( +Exû±iÚ + +$e +) + +184 +$this +-> +_d—dT¿n¥Üts +[] = +$Œª¥Üt +; + +186 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/MailInvoker.php + +1 +_švok” + = +$švok” +; + +51 +$this +-> +_ev’tDi¥©ch” + = +$ev’tDi¥©ch” +; + +57 +public + +funùiÚ + + $isS¹ed +() + +59  +çl£ +; + +60 + } +} + +65 +public + +funùiÚ + + $¡¬t +() + +67 + } +} + +72 +public + +funùiÚ + + $¡Ý +() + +74 + } +} + +83 +public + +funùiÚ + + $£tExŒaP¬ams +( +$·¿ms +) + +85 +$this +-> +_exŒaP¬ams + = +$·¿ms +; + +86  +$this +; + +87 + } +} + +96 +public + +funùiÚ + + $g‘ExŒaP¬ams +() + +98  +$this +-> +_exŒaP¬ams +; + +99 + } +} + +111 +public + +funùiÚ + + $£nd +( +Swiá_Mime_Mes§ge + +$mes§ge +, & +$çžedRec›Ás + = +nuÎ +) + +113 +$çžedRec›Ás + = ( +¬¿y +) $failedRecipients; + +115 ià( +$evt + = +$this +-> +_ev’tDi¥©ch” +-> + `ü—‹S’dEv’t +($this, +$mes§ge +)) + +117 +$this +-> +_ev’tDi¥©ch” +-> + `di¥©chEv’t +( +$evt +, 'beforeSendPerformed'); + +118 ià( +$evt +-> + `bubbËCªûÎed +()) + +124 +$couÁ + = ( + +125 + `couÁ +(( +¬¿y +è +$mes§ge +-> + `g‘To +()) + +126 + + `couÁ +(( +¬¿y +è +$mes§ge +-> + `g‘Cc +()) + +127 + + `couÁ +(( +¬¿y +è +$mes§ge +-> + `g‘Bcc +()) + +130 +$toH—d” + = +$mes§ge +-> + `g‘H—d”s +()-> + `g‘ +('To'); + +131 +$subjeùH—d” + = +$mes§ge +-> + `g‘H—d”s +()-> + `g‘ +('Subject'); + +133 +$to + = +$toH—d” +-> + `g‘F›ldBody +(); + +134 +$subjeù + = +$subjeùH—d” +-> + `g‘F›ldBody +(); + +136 +$»v”£P©h + = +$this +-> + `_g‘Rev”£P©h +( +$mes§ge +); + +139 +$mes§ge +-> + `g‘H—d”s +()-> + `»move +('To'); + +140 +$mes§ge +-> + `g‘H—d”s +()-> + `»move +('Subject'); + +142 +$mes§geSŒ + = +$mes§ge +-> + `toSŒšg +(); + +144 +$mes§ge +-> + `g‘H—d”s +()-> + `£t +( +$toH—d” +); + +145 +$mes§ge +-> + `g‘H—d”s +()-> + `£t +( +$subjeùH—d” +); + +148 ià( +çl£ + !=ð +$’dH—d”s + = + `¡½os +( +$mes§geSŒ +, "\r\n\r\n")) + +150 +$h—d”s + = + `sub¡r +( +$mes§geSŒ +, 0, +$’dH—d”s +) . "\r\n"; + +151 +$body + = + `sub¡r +( +$mes§geSŒ +, +$’dH—d”s + + 4); + +155 +$h—d”s + = +$mes§geSŒ + . "\r\n"; + +156 +$body + = ''; + +159 + `un£t +( +$mes§geSŒ +); + +161 ià("\r\n" !ð +PHP_EOL +) + +163 +$h—d”s + = + `¡r_»¶aû +("\r\n", +PHP_EOL +, $headers); + +164 +$body + = + `¡r_»¶aû +("\r\n", +PHP_EOL +, $body); + +168 +$h—d”s + = + `¡r_»¶aû +("\r\n.", "\r\n..", $headers); + +169 +$body + = + `¡r_»¶aû +("\r\n.", "\r\n..", $body); + +172 ià( +$this +-> +_švok” +-> + `maž +( +$to +, +$subjeù +, +$body +, +$h—d”s +, + +173 + `¥rštf +( +$this +-> +_exŒaP¬ams +, +$»v”£P©h +))) + +175 ià( +$evt +) + +177 +$evt +-> + `£tResuÉ +( +Swiá_Ev’ts_S’dEv’t +:: +RESULT_SUCCESS +); + +178 +$evt +-> + `£tFažedRec›Ás +( +$çžedRec›Ás +); + +179 +$this +-> +_ev’tDi¥©ch” +-> + `di¥©chEv’t +( +$evt +, 'sendPerformed'); + +184 +$çžedRec›Ás + = + `¬¿y_m”ge +( + +185 +$çžedRec›Ás +, + +186 + `¬¿y_keys +(( +¬¿y +è +$mes§ge +-> + `g‘To +()), + +187 + `¬¿y_keys +(( +¬¿y +è +$mes§ge +-> + `g‘Cc +()), + +188 + `¬¿y_keys +(( +¬¿y +è +$mes§ge +-> + `g‘Bcc +()) + +191 ià( +$evt +) + +193 +$evt +-> + `£tResuÉ +( +Swiá_Ev’ts_S’dEv’t +:: +RESULT_FAILED +); + +194 +$evt +-> + `£tFažedRec›Ás +( +$çžedRec›Ás +); + +195 +$this +-> +_ev’tDi¥©ch” +-> + `di¥©chEv’t +( +$evt +, 'sendPerformed'); + +198 +$mes§ge +-> + `g’”©eId +(); + +200 +$couÁ + = 0; + +203  +$couÁ +; + +204 + } +} + +211 +public + +funùiÚ + + $»gi¡”Plugš +( +Swiá_Ev’ts_Ev’tLi¡’” + +$¶ugš +) + +213 +$this +-> +_ev’tDi¥©ch” +-> + `bšdEv’tLi¡’” +( +$¶ugš +); + +214 + } +} + +219 +´iv©e + +funùiÚ + + $_g‘Rev”£P©h +( +Swiá_Mime_Mes§ge + +$mes§ge +) + +221 +$»tuº + = +$mes§ge +-> + `g‘R‘uºP©h +(); + +222 +$£nd” + = +$mes§ge +-> + `g‘S’d” +(); + +223 +$äom + = +$mes§ge +-> + `g‘From +(); + +224 +$·th + = +nuÎ +; + +225 ià(! + `em±y +( +$»tuº +)) + +227 +$·th + = +$»tuº +; + +229 + `–£if + (! + `em±y +( +$£nd” +)) + +231 +$keys + = + `¬¿y_keys +( +$£nd” +); + +232 +$·th + = + `¬¿y_shiá +( +$keys +); + +234 + `–£if + (! + `em±y +( +$äom +)) + +236 +$keys + = + `¬¿y_keys +( +$äom +); + +237 +$·th + = + `¬¿y_shiá +( +$keys +); + +239  +$·th +; + +240 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/NullTransport.php + +1 +_ev’tDi¥©ch” + = +$ev’tDi¥©ch” +; + +34 +public + +funùiÚ + + $isS¹ed +() + +36  +Œue +; + +37 + } +} + +42 +public + +funùiÚ + + $¡¬t +() + +44 + } +} + +49 +public + +funùiÚ + + $¡Ý +() + +51 + } +} + +61 +public + +funùiÚ + + $£nd +( +Swiá_Mime_Mes§ge + +$mes§ge +, & +$çžedRec›Ás + = +nuÎ +) + +63 ià( +$evt + = +$this +-> +_ev’tDi¥©ch” +-> + `ü—‹S’dEv’t +($this, +$mes§ge +)) + +65 +$this +-> +_ev’tDi¥©ch” +-> + `di¥©chEv’t +( +$evt +, 'beforeSendPerformed'); + +66 ià( +$evt +-> + `bubbËCªûÎed +()) + +72 ià( +$evt +) + +74 +$evt +-> + `£tResuÉ +( +Swiá_Ev’ts_S’dEv’t +:: +RESULT_SUCCESS +); + +75 +$this +-> +_ev’tDi¥©ch” +-> + `di¥©chEv’t +( +$evt +, 'sendPerformed'); + +79 + } +} + +86 +public + +funùiÚ + + $»gi¡”Plugš +( +Swiá_Ev’ts_Ev’tLi¡’” + +$¶ugš +) + +88 +$this +-> +_ev’tDi¥©ch” +-> + `bšdEv’tLi¡’” +( +$¶ugš +); + +89 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/SendmailTransport.php + +1 +Swiá_T¿n¥Üt_IoBufãr +:: +TYPE_PROCESS + + +48 +public + +funùiÚ + + $__cÚ¡ruù +( +Swiá_T¿n¥Üt_IoBufãr + +$buf +, + +49 +Swiá_Ev’ts_Ev’tDi¥©ch” + +$di¥©ch” +) + +51 +·»Á +:: + `__cÚ¡ruù +( +$buf +, +$di¥©ch” +); + +57 +public + +funùiÚ + + $¡¬t +() + +59 ià( +çl£ + !=ð + `¡½os +( +$this +-> + `g‘Commªd +(), ' -bs')) + +61 +·»Á +:: + `¡¬t +(); + +63 + } +} + +74 +public + +funùiÚ + + $£tCommªd +( +$commªd +) + +76 +$this +-> +_·¿ms +['commªd'] = +$commªd +; + +77  +$this +; + +78 + } +} + +84 +public + +funùiÚ + + $g‘Commªd +() + +86  +$this +-> +_·¿ms +['command']; + +87 + } +} + +99 +public + +funùiÚ + + $£nd +( +Swiá_Mime_Mes§ge + +$mes§ge +, & +$çžedRec›Ás + = +nuÎ +) + +101 +$çžedRec›Ás + = ( +¬¿y +) $failedRecipients; + +102 +$commªd + = +$this +-> + `g‘Commªd +(); + +103 +$bufãr + = +$this +-> + `g‘Bufãr +(); + +105 ià( +çl£ + !=ð + `¡½os +( +$commªd +, ' -t')) + +107 ià( +$evt + = +$this +-> +_ev’tDi¥©ch” +-> + `ü—‹S’dEv’t +($this, +$mes§ge +)) + +109 +$this +-> +_ev’tDi¥©ch” +-> + `di¥©chEv’t +( +$evt +, 'beforeSendPerformed'); + +110 ià( +$evt +-> + `bubbËCªûÎed +()) + +116 ià( +çl£ + ==ð + `¡½os +( +$commªd +, ' -f')) + +118 +$commªd + .ð' -f' . +$this +-> + `_g‘Rev”£P©h +( +$mes§ge +); + +121 +$bufãr +-> + `š™Ÿlize +( + `¬¿y_m”ge +( +$this +-> +_·¿ms +, + `¬¿y +('commªd' => +$commªd +))); + +123 ià( +çl£ + ==ð + `¡½os +( +$commªd +, ' -i') && false === strpos($command, ' -oi')) + +125 +$bufãr +-> + `£tWr™eT¿n¦©iÚs +( + `¬¿y +("\r\n" => "\n", "\n." => "\n..")); + +129 +$bufãr +-> + `£tWr™eT¿n¦©iÚs +( + `¬¿y +("\r\n"=>"\n")); + +132 +$couÁ + = + `couÁ +(( +¬¿y +è +$mes§ge +-> + `g‘To +()) + +133 + + `couÁ +(( +¬¿y +è +$mes§ge +-> + `g‘Cc +()) + +134 + + `couÁ +(( +¬¿y +è +$mes§ge +-> + `g‘Bcc +()) + +136 +$mes§ge +-> + `toBy‹SŒ—m +( +$bufãr +); + +137 +$bufãr +-> + `æushBufãrs +(); + +138 +$bufãr +-> + `£tWr™eT¿n¦©iÚs +( + `¬¿y +()); + +139 +$bufãr +-> + `‹rmš©e +(); + +141 ià( +$evt +) + +143 +$evt +-> + `£tResuÉ +( +Swiá_Ev’ts_S’dEv’t +:: +RESULT_SUCCESS +); + +144 +$evt +-> + `£tFažedRec›Ás +( +$çžedRec›Ás +); + +145 +$this +-> +_ev’tDi¥©ch” +-> + `di¥©chEv’t +( +$evt +, 'sendPerformed'); + +148 +$mes§ge +-> + `g’”©eId +(); + +150 + `–£if + ( +çl£ + !=ð + `¡½os +( +$commªd +, ' -bs')) + +152 +$couÁ + = +·»Á +:: + `£nd +( +$mes§ge +, +$çžedRec›Ás +); + +156 +$this +-> + `_throwExû±iÚ +( +Ãw + + `Swiá_T¿n¥ÜtExû±iÚ +( + +157 'UnsuµÜ‹d s’dmaž commªd fÏg [' . +$commªd + . ']. ' . + +162  +$couÁ +; + +163 + } +} + +168 +´Ùeùed + +funùiÚ + + $_g‘BufãrP¬ams +() + +170  +$this +-> +_·¿ms +; + +171 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/SimpleMailInvoker.php + +1 +_ev’tDi¥©ch” + = +$ev’tDi¥©ch” +; + +30 +$this +-> +_¥oÞ + = +$¥oÞ +; + +37 +public + +funùiÚ + + $£tSpoÞ +( +Swiá_SpoÞ + +$¥oÞ +) + +39 +$this +-> +_¥oÞ + = +$¥oÞ +; + +40  +$this +; + +41 + } +} + +47 +public + +funùiÚ + + $g‘SpoÞ +() + +49  +$this +-> +_¥oÞ +; + +50 + } +} + +57 +public + +funùiÚ + + $isS¹ed +() + +59  +Œue +; + +60 + } +} + +65 +public + +funùiÚ + + $¡¬t +() + +67 + } +} + +72 +public + +funùiÚ + + $¡Ý +() + +74 + } +} + +84 +public + +funùiÚ + + $£nd +( +Swiá_Mime_Mes§ge + +$mes§ge +, & +$çžedRec›Ás + = +nuÎ +) + +86 ià( +$evt + = +$this +-> +_ev’tDi¥©ch” +-> + `ü—‹S’dEv’t +($this, +$mes§ge +)) + +88 +$this +-> +_ev’tDi¥©ch” +-> + `di¥©chEv’t +( +$evt +, 'beforeSendPerformed'); + +89 ià( +$evt +-> + `bubbËCªûÎed +()) + +95 +$sucûss + = +$this +-> +_¥oÞ +-> + `queueMes§ge +( +$mes§ge +); + +97 ià( +$evt +) + +99 +$evt +-> + `£tResuÉ +( +$sucûss + ? +Swiá_Ev’ts_S’dEv’t +:: +RESULT_SUCCESS + : Swiá_Ev’ts_S’dEv’t:: +RESULT_FAILED +); + +100 +$this +-> +_ev’tDi¥©ch” +-> + `di¥©chEv’t +( +$evt +, 'sendPerformed'); + +104 + } +} + +111 +public + +funùiÚ + + $»gi¡”Plugš +( +Swiá_Ev’ts_Ev’tLi¡’” + +$¶ugš +) + +113 +$this +-> +_ev’tDi¥©ch” +-> + `bšdEv’tLi¡’” +( +$¶ugš +); + +114 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/StreamBuffer.php + +1 +_»¶aûm’tFaùÜy + = +$»¶aûm’tFaùÜy +; + +60 +public + +funùiÚ + + $š™Ÿlize +( +¬¿y + +$·¿ms +) + +62 +$this +-> +_·¿ms + = +$·¿ms +; + +63  +$·¿ms +['type']) + +65  +£lf +:: +TYPE_PROCESS +: + +66 +$this +-> + `_e¡ablishProûssCÚÃùiÚ +(); + +68  +£lf +:: +TYPE_SOCKET +: + +70 +$this +-> + `_e¡ablishSock‘CÚÃùiÚ +(); + +73 + } +} + +80 +public + +funùiÚ + + $£tP¬am +( +$·¿m +, +$v®ue +) + +82 ià( + `is£t +( +$this +-> +_¡»am +)) + +84  +$·¿m +) + +87 ià(! + `¬¿y_key_exi¡s +('´ÙocÞ', +$this +-> +_·¿ms +) + +88 || +$v®ue + !ð +$this +-> +_·¿ms +['protocol']) + +90 ià('Žs' =ð +$v®ue +) + +92 + `¡»am_sock‘_’abË_üy±o +( + +93 +$this +-> +_¡»am +, +Œue +, +STREAM_CRYPTO_METHOD_TLS_CLIENT + + +100 +$this +-> +_·¿ms +[ +$·¿m +] = +$v®ue +; + +101 + } +} + +106 +public + +funùiÚ + + $‹rmš©e +() + +108 ià( + `is£t +( +$this +-> +_¡»am +)) + +110  +$this +-> +_·¿ms +['type']) + +112  +£lf +:: +TYPE_PROCESS +: + +113 + `fþo£ +( +$this +-> +_š +); + +114 + `fþo£ +( +$this +-> +_out +); + +115 + `´oc_þo£ +( +$this +-> +_¡»am +); + +117  +£lf +:: +TYPE_SOCKET +: + +119 + `fþo£ +( +$this +-> +_¡»am +); + +123 +$this +-> +_¡»am + = +nuÎ +; + +124 +$this +-> +_out + = +nuÎ +; + +125 +$this +-> +_š + = +nuÎ +; + +126 + } +} + +133 +public + +funùiÚ + + $£tWr™eT¿n¦©iÚs +( +¬¿y + +$»¶aûm’ts +) + +135 + `fܗch + ( +$this +-> +_Œª¦©iÚs + +as + +$£¬ch + => +$»¶aû +) + +137 ià(! + `is£t +( +$»¶aûm’ts +[ +$£¬ch +])) + +139 +$this +-> + `»moveFž‹r +( +$£¬ch +); + +140 + `un£t +( +$this +-> +_Œª¦©iÚs +[ +$£¬ch +]); + +144 + `fܗch + ( +$»¶aûm’ts + +as + +$£¬ch + => +$»¶aû +) + +146 ià(! + `is£t +( +$this +-> +_Œª¦©iÚs +[ +$£¬ch +])) + +148 +$this +-> + `addFž‹r +( + +149 +$this +-> +_»¶aûm’tFaùÜy +-> + `ü—‹Fž‹r +( +$£¬ch +, +$»¶aû +), $search + +151 +$this +-> +_Œª¦©iÚs +[ +$£¬ch +] = +Œue +; + +154 + } +} + +163 +public + +funùiÚ + + $»adLše +( +$£qu’û +) + +165 ià( + `is£t +( +$this +-> +_out +è&& ! + `ãof +($this->_out)) + +167 +$lše + = + `fg‘s +( +$this +-> +_out +); + +168  +$lše +; + +170 + } +} + +180 +public + +funùiÚ + + $»ad +( +$Ëngth +) + +182 ià( + `is£t +( +$this +-> +_out +è&& ! + `ãof +($this->_out)) + +184 +$»t + = + `ä—d +( +$this +-> +_out +, +$Ëngth +); + +185  +$»t +; + +187 + } +} + +190 +public + +funùiÚ + + $£tR—dPoš‹r +( +$by‹Off£t +) + +192 + } +} + +197 +´Ùeùed + +funùiÚ + + $_æush +() + +199 ià( + `is£t +( +$this +-> +_š +)) + +201 + `fæush +( +$this +-> +_š +); + +203 + } +} + +206 +´Ùeùed + +funùiÚ + + $_comm™ +( +$by‹s +) + +208 ià( + `is£t +( +$this +-> +_š +) + +209 && + `fwr™e +( +$this +-> +_š +, +$by‹s +)) + +211  ++ +$this +-> +_£qu’û +; + +213 + } +} + +221 +´iv©e + +funùiÚ + + $_e¡ablishSock‘CÚÃùiÚ +() + +223 +$ho¡ + = +$this +-> +_·¿ms +['host']; + +224 ià(! + `em±y +( +$this +-> +_·¿ms +['protocol'])) + +226 +$ho¡ + = +$this +-> +_·¿ms +['protocol'] . '://' . $host; + +228 +$timeout + = 15; + +229 ià(! + `em±y +( +$this +-> +_·¿ms +['timeout'])) + +231 +$timeout + = +$this +-> +_·¿ms +['timeout']; + +233 ià(! +$this +-> +_¡»am + = + `fsockݒ +( +$ho¡ +, $this-> +_·¿ms +['pÜt'], +$”ºo +, +$”r¡r +, +$timeout +)) + +235 +throw + +Ãw + + `Swiá_T¿n¥ÜtExû±iÚ +( + +236 'CÚÃùiÚ could‚Ù be¡ablished w™h ho¡ ' . +$this +-> +_·¿ms +['host'] . + +237 ' [' . +$”r¡r + . ' #' . +$”ºo + . ']' + +240 ià(! + `em±y +( +$this +-> +_·¿ms +['blocking'])) + +242 + `¡»am_£t_blockšg +( +$this +-> +_¡»am +, 1); + +246 + `¡»am_£t_blockšg +( +$this +-> +_¡»am +, 0); + +248 +$this +-> +_š + =& $this-> +_¡»am +; + +249 +$this +-> +_out + =& $this-> +_¡»am +; + +250 + } +} + +256 +´iv©e + +funùiÚ + + $_e¡ablishProûssCÚÃùiÚ +() + +258 +$commªd + = +$this +-> +_·¿ms +['command']; + +259 +$desütÜS³c + = + `¬¿y +( + +260 0 => + `¬¿y +('pipe', 'r'), + +261 1 => + `¬¿y +('pipe', 'w'), + +262 2 => + `¬¿y +('pipe', 'w') + +264 +$this +-> +_¡»am + = + `´oc_ݒ +( +$commªd +, +$desütÜS³c +, +$pes +); + +265 + `¡»am_£t_blockšg +( +$pes +[2], 0); + +266 ià( +$”r + = + `¡»am_g‘_cڋÁs +( +$pes +[2])) + +268 +throw + +Ãw + + `Swiá_T¿n¥ÜtExû±iÚ +( + +269 'Proûs could‚Ù b¡¬‹d [' . +$”r + . ']' + +272 +$this +-> +_š + =& +$pes +[0]; + +273 +$this +-> +_out + =& +$pes +[1]; + +274 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/TransportException.php + +1 +asAlŸsOf +('cache.array') + +9 -> +asV®ue +('/tmp') + +12 -> +asSh¬edIn¡ªûOf +('Swift_KeyCache_NullKeyCache') + +15 -> +asSh¬edIn¡ªûOf +('Swift_KeyCache_ArrayKeyCache') + +16 -> +w™hD•’d’c›s +( +¬¿y +('cache.inputstream')) + +19 -> +asSh¬edIn¡ªûOf +('Swift_KeyCache_DiskKeyCache') + +20 -> +w™hD•’d’c›s +( +¬¿y +('cache.inputstream', 'tempdir')) + +23 -> +asNewIn¡ªûOf +('Swift_KeyCache_SimpleKeyCacheInputStream') + + @lib/vendor/symfony/lib/vendor/swiftmailer/dependency_maps/mime_deps.php + +1 +asV®ue +('utf-8') + +11 -> +asNewIn¡ªûOf +('Swift_Mime_SimpleMessage') + +12 -> +w™hD•’d’c›s +( +¬¿y +( + +20 -> +asNewIn¡ªûOf +('Swift_Mime_MimePart') + +21 -> +w™hD•’d’c›s +( +¬¿y +( + +29 -> +asNewIn¡ªûOf +('Swift_Mime_Attachment') + +30 -> +w™hD•’d’c›s +( +¬¿y +( + +35 -> +addCÚ¡ruùÜV®ue +( +$swiá_mime_ty³s +) + +38 -> +asNewIn¡ªûOf +('Swift_Mime_EmbeddedFile') + +39 -> +w™hD•’d’c›s +( +¬¿y +( + +44 -> +addCÚ¡ruùÜV®ue +( +$swiá_mime_ty³s +) + +47 -> +asNewIn¡ªûOf +('Swift_Mime_SimpleHeaderFactory') + +48 -> +w™hD•’d’c›s +( +¬¿y +( + +55 -> +asNewIn¡ªûOf +('Swift_Mime_SimpleHeaderSet') + +56 -> +w™hD•’d’c›s +( +¬¿y +('mime.headerfactory', 'properties.charset')) + +59 -> +asNewIn¡ªûOf +('Swift_Mime_HeaderEncoder_QpHeaderEncoder') + +60 -> +w™hD•’d’c›s +( +¬¿y +('mime.charstream')) + +63 -> +asNewIn¡ªûOf +('Swift_CharacterStream_NgCharacterStream') + +64 -> +w™hD•’d’c›s +( +¬¿y +('mime.characterreaderfactory', 'properties.charset')) + +67 -> +asSh¬edIn¡ªûOf +('Swift_StreamFilters_ByteArrayReplacementFilter') + +68 -> +addCÚ¡ruùÜV®ue +( +¬¿y +(array(0x0D, 0x0A),‡rray(0x0D),‡rray(0x0A))) + +69 -> +addCÚ¡ruùÜV®ue +( +¬¿y +(array(0x0A),‡rray(0x0A),‡rray(0x0D, 0x0A))) + +72 -> +asSh¬edIn¡ªûOf +('Swift_CharacterReaderFactory_SimpleCharacterReaderFactory') + +75 -> +asNewIn¡ªûOf +('Swift_Mime_ContentEncoder_QpContentEncoder') + +76 -> +w™hD•’d’c›s +( +¬¿y +('mime.charstream', 'mime.bytecanonicalizer')) + +79 -> +asNewIn¡ªûOf +('Swift_Mime_ContentEncoder_PlainContentEncoder') + +80 -> +addCÚ¡ruùÜV®ue +('7bit') + +81 -> +addCÚ¡ruùÜV®ue +( +Œue +) + +84 -> +asNewIn¡ªûOf +('Swift_Mime_ContentEncoder_PlainContentEncoder') + +85 -> +addCÚ¡ruùÜV®ue +('8bit') + +86 -> +addCÚ¡ruùÜV®ue +( +Œue +) + +89 -> +asSh¬edIn¡ªûOf +('Swift_Mime_ContentEncoder_Base64ContentEncoder') + +92 -> +asNewIn¡ªûOf +('Swift_Encoder_Rfc2231Encoder') + +93 -> +w™hD•’d’c›s +( +¬¿y +('mime.charstream')) + +97 +un£t +( +$swiá_mime_ty³s +); + + @lib/vendor/symfony/lib/vendor/swiftmailer/dependency_maps/transport_deps.php + +1 +asNewIn¡ªûOf +('Swift_Transport_EsmtpTransport') + +7 -> +w™hD•’d’c›s +( +¬¿y +( + +9 +¬¿y +('transport.authhandler'), + +14 -> +asNewIn¡ªûOf +('Swift_Transport_SendmailTransport') + +15 -> +w™hD•’d’c›s +( +¬¿y +( + +21 -> +asNewIn¡ªûOf +('Swift_Transport_MailTransport') + +22 -> +w™hD•’d’c›s +( +¬¿y +('transport.mailinvoker', 'transport.eventdispatcher')) + +25 -> +asNewIn¡ªûOf +('Swift_Transport_LoadBalancedTransport') + +28 -> +asNewIn¡ªûOf +('Swift_Transport_FailoverTransport') + +31 -> +asNewIn¡ªûOf +('Swift_Transport_SpoolTransport') + +32 -> +w™hD•’d’c›s +( +¬¿y +('transport.eventdispatcher')) + +35 -> +asNewIn¡ªûOf +('Swift_Transport_NullTransport') + +36 -> +w™hD•’d’c›s +( +¬¿y +('transport.eventdispatcher')) + +39 -> +asSh¬edIn¡ªûOf +('Swift_Transport_SimpleMailInvoker') + +42 -> +asNewIn¡ªûOf +('Swift_Transport_StreamBuffer') + +43 -> +w™hD•’d’c›s +( +¬¿y +('transport.replacementfactory')) + +46 -> +asNewIn¡ªûOf +('Swift_Transport_Esmtp_AuthHandler') + +47 -> +w™hD•’d’c›s +( +¬¿y +( + +48 +¬¿y +( + +56 -> +asNewIn¡ªûOf +('Swift_Transport_Esmtp_Auth_CramMd5Authenticator') + +59 -> +asNewIn¡ªûOf +('Swift_Transport_Esmtp_Auth_LoginAuthenticator') + +62 -> +asNewIn¡ªûOf +('Swift_Transport_Esmtp_Auth_PlainAuthenticator') + +65 -> +asNewIn¡ªûOf +('Swift_Events_SimpleEventDispatcher') + +68 -> +asSh¬edIn¡ªûOf +('Swift_StreamFilters_StringReplacementFilterFactory') + + @lib/vendor/symfony/lib/vendor/swiftmailer/mime_types.php + +1 +£tCh¬£t +('utf-8'); + +15 ià( +funùiÚ_exi¡s +('sys_g‘_‹mp_dœ'è&& +is_wr™abË +( + $sys_g‘_‹mp_dœ +())) + +17 +Swiá_P»ã»nûs +:: + `g‘In¡ªû +() + +18 -> + `£tTempDœ +( + `sys_g‘_‹mp_dœ +()) + +19 -> + `£tCacheTy³ +('disk'); + +20 + } +} + + @lib/vendor/symfony/lib/vendor/swiftmailer/swift_init.php + +1 +cڋxt +-> + `g‘CÚfigu¿tiÚ +()-> + `lßdH–³rs +( +$h–³rs +); + +47 + } +} + +56 +´Ùeùed + +funùiÚ + + $»nd”Fže +( +$_sfFže +) + +58 ià( +sfCÚfig +:: + `g‘ +('sf_logging_enabled')) + +60 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, '­¶iÿtiÚ.log', + `¬¿y +( + `¥rštf +('R’d” "%s"', +$_sfFže +)))); + +63 +$this +-> + `lßdCÜeAndSnd¬dH–³rs +(); + +66 +$v¬s + = +$this +-> +©Œibu‹HÞd” +-> + `toA¼ay +(); + +67 + `exŒaù +( +$v¬s +); + +70 + `ob_¡¬t +(); + +71 + `ob_im¶ic™_æush +(0); + +73 +Œy + + +75 + `»quœe +( +$_sfFže +); + +77 + `ÿtch + ( +Exû±iÚ + +$e +) + +80 + `ob_’d_þ—n +(); + +81 +throw + +$e +; + +84  + `ob_g‘_þ—n +(); + +85 + } +} + +94 +public + +funùiÚ + + $g‘Engše +() + +96  +nuÎ +; + +97 + } +} + +104 +public + +funùiÚ + + $cÚfigu» +() + +107 +$this +-> +cڋxt +-> + `£t +('view_instance', $this); + +110 + `»quœe +( +$this +-> +cڋxt +-> + `g‘CÚfigCache +()-> + `checkCÚfig +('moduËs/'.$this-> +moduËName +.'/config/view.yml')); + +113 ià(! +$this +-> +dœeùÜy +) + +115 +$this +-> + `£tDœeùÜy +($this-> +cڋxt +-> + `g‘CÚfigu¿tiÚ +()-> + `g‘Tem¶©eDœ +($this-> +moduËName +, $this-> + `g‘Tem¶©e +())); + +117 + } +} + +126 +´Ùeùed + +funùiÚ + + $decÜ©e +( +$cڋÁ +) + +128 ià( +sfCÚfig +:: + `g‘ +('sf_logging_enabled')) + +130 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, '­¶iÿtiÚ.log', + `¬¿y +( + `¥rštf +('DecÜ©cڋÁ w™h "%s/%s"', $this-> + `g‘DecÜ©ÜDœeùÜy +(), $this-> + `g‘DecÜ©ÜTem¶©e +())))); + +134 +$©Œibu‹HÞd” + = +$this +-> +©Œibu‹HÞd” +; + +136 +$this +-> +©Œibu‹HÞd” + = $this-> + `š™ŸlizeA‰ribu‹HÞd” +( + `¬¿y +('sf_cڋÁ' => +Ãw + + `sfOuutEsÿ³rSaã +( +$cڋÁ +))); + +137 +$this +-> +©Œibu‹HÞd” +-> + `£t +('sf_type', 'layout'); + +140 ià(! + `is_»adabË +( +$this +-> + `g‘DecÜ©ÜDœeùÜy +().'/'.$this-> + `g‘DecÜ©ÜTem¶©e +())) + +142 +throw + +Ãw + + `sfR’d”Exû±iÚ +( + `¥rštf +('Thdecܩ܁em¶©"%s" dÛ nكxi¡ o¸i uėdabË iÀ"%s".', +$this +-> +decÜ©ÜTem¶©e +, $this-> +decÜ©ÜDœeùÜy +)); + +146 +$»t + = +$this +-> + `»nd”Fže +($this-> + `g‘DecÜ©ÜDœeùÜy +().'/'.$this-> + `g‘DecÜ©ÜTem¶©e +()); + +148 +$this +-> +©Œibu‹HÞd” + = +$©Œibu‹HÞd” +; + +150  +$»t +; + +151 + } +} + +158 +public + +funùiÚ + + $»nd” +() + +160 +$cڋÁ + = +nuÎ +; + +161 ià( +sfCÚfig +:: + `g‘ +('sf_cache')) + +163 +$v›wCache + = +$this +-> +cڋxt +-> + `g‘V›wCacheMªag” +(); + +164 +$uri + = +$v›wCache +-> + `g‘Cu¼’tCacheKey +(); + +166 ià( +nuÎ + !=ð +$uri +) + +168 + `li¡ +( +$cڋÁ +, +$decÜ©ÜTem¶©e +èð +$v›wCache +-> + `g‘AùiÚCache +( +$uri +); + +169 ià( +nuÎ + !=ð +$cڋÁ +) + +171 +$this +-> + `£tDecÜ©ÜTem¶©e +( +$decÜ©ÜTem¶©e +); + +177 ià( +nuÎ + ==ð +$cڋÁ +) + +180 +$this +-> + `´eR’d”Check +(); + +182 +$this +-> +©Œibu‹HÞd” +-> + `£t +('sf_type', 'action'); + +185 +$cڋÁ + = +$this +-> + `»nd”Fže +($this-> + `g‘DœeùÜy +().'/'.$this-> + `g‘Tem¶©e +()); + +187 ià( +sfCÚfig +:: + `g‘ +('sf_ÿche'è&& +nuÎ + !=ð +$uri +) + +189 +$cڋÁ + = +$v›wCache +-> + `£tAùiÚCache +( +$uri +, $cڋÁ, +$this +-> + `isDecÜ©Ü +(è? $this-> + `g‘DecÜ©ÜDœeùÜy +().'/'.$this-> + `g‘DecÜ©ÜTem¶©e +(è: +çl£ +); + +194 ià( +$this +-> + `isDecÜ©Ü +()) + +196 +$cڋÁ + = +$this +-> + `decÜ©e +($content); + +199  +$cڋÁ +; + +200 + } +} + + @lib/vendor/symfony/lib/view/sfPartialView.class.php + +1 +v›wCache + = $this-> +cڋxt +-> + `g‘V›wCacheMªag” +(); + +38 ià( +sfCÚfig +:: + `g‘ +('sf_cache')) + +40 +$this +-> +checkCache + = $this-> +v›wCache +-> + `isAùiÚCach—bË +( +$moduËName +, +$aùiÚName +); + +43  +$»t +; + +49 +public + +funùiÚ + + $execu‹ +() + +51 + } +} + +56 +public + +funùiÚ + + $£tP¬tŸlV¬s +( +¬¿y + +$·¹ŸlV¬s +) + +58 +$this +-> +·¹ŸlV¬s + = +$·¹ŸlV¬s +; + +59 +$this +-> + `g‘A‰ribu‹HÞd” +()-> + `add +( +$·¹ŸlV¬s +); + +60 + } +} + +65 +public + +funùiÚ + + $cÚfigu» +() + +67 +$this +-> + `£tDecÜ©Ü +( +çl£ +); + +68 +$this +-> + `£tTem¶©e +($this-> +aùiÚName +.$this-> + `g‘Ex‹nsiÚ +()); + +69 ià('glob®' =ð +$this +-> +moduËName +) + +71 +$this +-> + `£tDœeùÜy +($this-> +cڋxt +-> + `g‘CÚfigu¿tiÚ +()-> + `g‘DecÜ©ÜDœ +($this-> + `g‘Tem¶©e +())); + +75 +$this +-> + `£tDœeùÜy +($this-> +cڋxt +-> + `g‘CÚfigu¿tiÚ +()-> + `g‘Tem¶©eDœ +($this-> +moduËName +, $this-> + `g‘Tem¶©e +())); + +77 + } +} + +84 +public + +funùiÚ + + $»nd” +() + +86 ià( +sfCÚfig +:: + `g‘ +('sf_debug') && sfConfig::get('sf_logging_enabled')) + +88 +$tim” + = +sfTim”Mªag” +:: + `g‘Tim” +( + `¥rštf +('P¬tŸÈ"%s/%s"', +$this +-> +moduËName +, $this-> +aùiÚName +)); + +91 ià( +$»tv® + = +$this +-> + `g‘Cache +()) + +93  +$»tv® +; + +96 ià( +$this +-> +checkCache +) + +98 +$mašRe¥Ú£ + = +$this +-> +cڋxt +-> + `g‘Re¥Ú£ +(); + +100 +$»¥Ú£CÏss + = + `g‘_þass +( +$mašRe¥Ú£ +); + +101 +$»¥Ú£ + = +Ãw + + `$»¥Ú£CÏss +( +$this +-> +cڋxt +-> + `g‘Ev’tDi¥©ch” +(), +$mašRe¥Ú£ +-> + `g‘O±iÚs +()); + +104 ià( +$this +-> +v›wCache +-> + `isCڋxtu® +($this->v›wCache-> + `g‘P¬tŸlUri +($this-> +moduËName +, $this-> +aùiÚName +, $this-> +ÿcheKey +))) + +106 +$»¥Ú£ +-> + `cÝyPrݔt›s +( +$mašRe¥Ú£ +); + +110 +$»¥Ú£ +-> + `£tCڋÁTy³ +( +$mašRe¥Ú£ +-> + `g‘CڋÁTy³ +()); + +113 +$this +-> +cڋxt +-> + `£tRe¥Ú£ +( +$»¥Ú£ +); + +116 +Œy + + +119 +$this +-> + `´eR’d”Check +(); + +121 +$this +-> + `g‘A‰ribu‹HÞd” +()-> + `£t +('sf_type', 'partial'); + +124 +$»tv® + = +$this +-> + `»nd”Fže +($this-> + `g‘DœeùÜy +().'/'.$this-> + `g‘Tem¶©e +()); + +126 + `ÿtch + ( +Exû±iÚ + +$e +) + +128 ià( +$this +-> +checkCache +) + +130 +$this +-> +cڋxt +-> + `£tRe¥Ú£ +( +$mašRe¥Ú£ +); + +131 +$mašRe¥Ú£ +-> + `m”ge +( +$»¥Ú£ +); + +134 +throw + +$e +; + +137 ià( +$this +-> +checkCache +) + +139 +$»tv® + = +$this +-> +v›wCache +-> + `£tP¬tŸlCache +($this-> +moduËName +, $this-> +aùiÚName +, $this-> +ÿcheKey +, $retval); + +140 +$this +-> +cڋxt +-> + `£tRe¥Ú£ +( +$mašRe¥Ú£ +); + +141 +$mašRe¥Ú£ +-> + `m”ge +( +$»¥Ú£ +); + +144 ià( +sfCÚfig +:: + `g‘ +('sf_debug') && sfConfig::get('sf_logging_enabled')) + +146 +$tim” +-> + `addTime +(); + +149  +$»tv® +; + +150 + } +} + +152 +public + +funùiÚ + + $g‘Cache +() + +154 ià(! +$this +-> +checkCache +) + +156  +nuÎ +; + +159 +$this +-> +ÿcheKey + = $this-> +v›wCache +-> + `checkCacheKey +($this-> +·¹ŸlV¬s +); + +160 ià( +$»tv® + = +$this +-> +v›wCache +-> + `g‘P¬tŸlCache +($this-> +moduËName +, $this-> +aùiÚName +, $this-> +ÿcheKey +)) + +162  +$»tv® +; + +164 + } +} + + @lib/vendor/symfony/lib/view/sfView.class.php + +1 + `š™Ÿlize +( +$cڋxt +, +$moduËName +, +$aùiÚName +, +$v›wName +); + +106 +public + +funùiÚ + + $š™Ÿlize +( +$cڋxt +, +$moduËName +, +$aùiÚName +, +$v›wName +) + +108 +$this +-> +moduËName + = +$moduËName +; + +109 +$this +-> +aùiÚName + = +$aùiÚName +; + +110 +$this +-> +v›wName + = +$v›wName +; + +112 +$this +-> +cڋxt + = +$cڋxt +; + +113 +$this +-> +di¥©ch” + = +$cڋxt +-> + `g‘Ev’tDi¥©ch” +(); + +115 +sfOuutEsÿ³r +:: + `m¬kCÏs£sAsSaã +( + `¬¿y +('sfForm', 'sfFormField', 'sfFormFieldSchema', 'sfModelGeneratorHelper')); + +117 +$this +-> +©Œibu‹HÞd” + = $this-> + `š™ŸlizeA‰ribu‹HÞd” +(); + +119 +$this +-> +·¿m‘”HÞd” + = +Ãw + + `sfP¬am‘”HÞd” +(); + +120 +$this +-> +·¿m‘”HÞd” +-> + `add +( +sfCÚfig +:: + `g‘ +('mod_'. + `¡¹Þow” +( +$moduËName +).'_v›w_·¿m', + `¬¿y +())); + +122 +$»que¡ + = +$cڋxt +-> + `g‘Reque¡ +(); + +124 +$fÜm© + = +$»que¡ +-> + `g‘Reque¡FÜm© +(); + +125 ià( +nuÎ + !=ð +$fÜm© +) + +127 ià('html' !ð +$fÜm© +) + +129 +$this +-> + `£tEx‹nsiÚ +('.'. +$fÜm© +.$this-> + `g‘Ex‹nsiÚ +()); + +132 ià( +$mimeTy³ + = +$»que¡ +-> + `g‘MimeTy³ +( +$fÜm© +)) + +134 +$this +-> +cڋxt +-> + `g‘Re¥Ú£ +()-> + `£tCڋÁTy³ +( +$mimeTy³ +); + +136 ià('html' !ð +$fÜm© +) + +138 +$this +-> + `£tDecÜ©Ü +( +çl£ +); + +142 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, 'v›w.cÚfigu»_fÜm©', + `¬¿y +('fÜm©' => +$fÜm© +, '»¥Ú£' => +$cڋxt +-> + `g‘Re¥Ú£ +(), '»que¡' => $cڋxt-> + `g‘Reque¡ +()))); + +145 +$this +-> + `cÚfigu» +(); + +147  +Œue +; + +148 + } +} + +150 +´Ùeùed + +funùiÚ + +š™ŸlizeA‰ribu‹HÞd” +( +$©Œibu‹s + = + $¬¿y +()) + +152 +$©Œibu‹HÞd” + = +Ãw + + `sfV›wP¬am‘”HÞd” +( +$this +-> +di¥©ch” +, +$©Œibu‹s +, + `¬¿y +( + +153 'esÿpšg_m‘hod' => +sfCÚfig +:: + `g‘ +('sf_escaping_method'), + +154 'esÿpšg_¡¿‹gy' => +sfCÚfig +:: + `g‘ +('sf_escaping_strategy'), + +157  +$©Œibu‹HÞd” +; + +158 + } +} + +163 +ab¡¿ù + +funùiÚ + +execu‹ +(); + +168 +ab¡¿ù + +funùiÚ + +cÚfigu» +(); + +175 +public + +funùiÚ + + $g‘DecÜ©ÜDœeùÜy +() + +177  +$this +-> +decÜ©ÜDœeùÜy +; + +178 + } +} + +185 +public + +funùiÚ + + $g‘DecÜ©ÜTem¶©e +() + +187  +$this +-> +decÜ©ÜTem¶©e +; + +188 + } +} + +195 +public + +funùiÚ + + $g‘DœeùÜy +() + +197  +$this +-> +dœeùÜy +; + +198 + } +} + +207 +ab¡¿ù + +funùiÚ + +g‘Engše +(); + +214 +public + +funùiÚ + + $g‘Tem¶©e +() + +216  +$this +-> +‹m¶©e +; + +217 + } +} + +224 +public + +funùiÚ + + $g‘A‰ribu‹HÞd” +() + +226  +$this +-> +©Œibu‹HÞd” +; + +227 + } +} + +237 +public + +funùiÚ + + $g‘A‰ribu‹ +( +$Çme +, +$deçuÉ + = +nuÎ +) + +239  +$this +-> +©Œibu‹HÞd” +-> + `g‘ +( +$Çme +, +$deçuÉ +); + +240 + } +} + +249 +public + +funùiÚ + + $hasA‰ribu‹ +( +$Çme +) + +251  +$this +-> +©Œibu‹HÞd” +-> + `has +( +$Çme +); + +252 + } +} + +260 +public + +funùiÚ + + $£tA‰ribu‹ +( +$Çme +, +$v®ue +) + +262 +$this +-> +©Œibu‹HÞd” +-> + `£t +( +$Çme +, +$v®ue +); + +263 + } +} + +270 +public + +funùiÚ + + $g‘P¬am‘”HÞd” +() + +272  +$this +-> +·¿m‘”HÞd” +; + +273 + } +} + +283 +public + +funùiÚ + + $g‘P¬am‘” +( +$Çme +, +$deçuÉ + = +nuÎ +) + +285  +$this +-> +·¿m‘”HÞd” +-> + `g‘ +( +$Çme +, +$deçuÉ +); + +286 + } +} + +295 +public + +funùiÚ + + $hasP¬am‘” +( +$Çme +) + +297  +$this +-> +·¿m‘”HÞd” +-> + `has +( +$Çme +); + +298 + } +} + +306 +public + +funùiÚ + + $£tP¬am‘” +( +$Çme +, +$v®ue +) + +308 +$this +-> +·¿m‘”HÞd” +-> + `£t +( +$Çme +, +$v®ue +); + +309 + } +} + +316 +public + +funùiÚ + + $isDecÜ©Ü +() + +318  +$this +-> +decÜ©Ü +; + +319 + } +} + +326 +public + +funùiÚ + + $£tDecÜ©Ü +( +$boޗn +) + +328 +$this +-> +decÜ©Ü + = ( +boޗn +è +$boޗn +; + +330 ià( +çl£ + ==ð +$boޗn +) + +332 +$this +-> +decÜ©ÜTem¶©e + = +çl£ +; + +334 + } +} + +342 +´Ùeùed + +funùiÚ + + $´eR’d”Check +() + +344 ià( +nuÎ + ==ð +$this +-> +‹m¶©e +) + +347 +throw + +Ãw + + `sfR’d”Exû±iÚ +('Aemplate has‚ot been set.'); + +350 ià(! + `is_»adabË +( +$this +-> +dœeùÜy +.'/'.$this-> +‹m¶©e +)) + +353 ià('404' =ð +$this +-> +cڋxt +-> + `g‘Re¥Ú£ +()-> + `g‘StusCode +()) + +356 +$this +-> +‹m¶©e + = +sfExû±iÚ +:: + `g‘Tem¶©eP©hFÜE¼Ü +($this-> +cڋxt +-> + `g‘Reque¡ +()-> + `g‘Reque¡FÜm© +(), +çl£ +); + +357 +$this +-> +dœeùÜy + = + `dœÇme +($this-> +‹m¶©e +); + +358 +$this +-> +‹m¶©e + = + `ba£Çme +($this->template); + +359 +$this +-> + `£tA‰ribu‹ +('code', '404'); + +360 +$this +-> + `£tA‰ribu‹ +('text', 'Not Found'); + +364 +throw + +Ãw + + `sfR’d”Exû±iÚ +( + `¥rštf +('Th‹m¶©"%s" dÛ nكxi¡ o¸i uėdabË iÀ"%s".', +$this +-> +‹m¶©e +, $this-> +dœeùÜy +)); + +367 + } +} + +374 +ab¡¿ù + +funùiÚ + +»nd” +(); + +381 +public + +funùiÚ + + $£tDecÜ©ÜDœeùÜy +( +$dœeùÜy +) + +383 +$this +-> +decÜ©ÜDœeùÜy + = +$dœeùÜy +; + +384 + } +} + +394 +public + +funùiÚ + + $£tDecÜ©ÜTem¶©e +( +$‹m¶©e +) + +396 ià( +çl£ + ==ð +$‹m¶©e +) + +398 +$this +-> + `£tDecÜ©Ü +( +çl£ +); + +402 ià( +nuÎ + ==ð +$‹m¶©e +) + +407 ià(! + `¡½os +( +$‹m¶©e +, '.')) + +409 +$‹m¶©e + .ð +$this +-> + `g‘Ex‹nsiÚ +(); + +412 ià( +sfToÞk™ +:: + `isP©hAbsÞu‹ +( +$‹m¶©e +)) + +414 +$this +-> +decÜ©ÜDœeùÜy + = + `dœÇme +( +$‹m¶©e +); + +415 +$this +-> +decÜ©ÜTem¶©e + = + `ba£Çme +( +$‹m¶©e +); + +419 +$this +-> +decÜ©ÜDœeùÜy + = $this-> +cڋxt +-> + `g‘CÚfigu¿tiÚ +()-> + `g‘DecÜ©ÜDœ +( +$‹m¶©e +); + +420 +$this +-> +decÜ©ÜTem¶©e + = +$‹m¶©e +; + +424 +$this +-> +decÜ©Ü + = +Œue +; + +425 + } +} + +432 +public + +funùiÚ + + $£tDœeùÜy +( +$dœeùÜy +) + +434 +$this +-> +dœeùÜy + = +$dœeùÜy +; + +435 + } +} + +444 +public + +funùiÚ + + $£tCompڒtSlÙ +( +$©Œibu‹Name +, +$moduËName +, +$compڒtName +) + +446 +$this +-> +compڒtSlÙs +[ +$©Œibu‹Name +] = + `¬¿y +(); + +447 +$this +-> +compڒtSlÙs +[ +$©Œibu‹Name +]['moduË_Çme'] = +$moduËName +; + +448 +$this +-> +compڒtSlÙs +[ +$©Œibu‹Name +]['compڒt_Çme'] = +$compڒtName +; + +449 + } +} + +458 +public + +funùiÚ + + $hasCompڒtSlÙ +( +$Çme +) + +460  + `is£t +( +$this +-> +compڒtSlÙs +[ +$Çme +]); + +461 + } +} + +470 +public + +funùiÚ + + $g‘CompڒtSlÙ +( +$Çme +) + +472 ià( + `is£t +( +$this +-> +compڒtSlÙs +[ +$Çme +]) && $this->componentSlots[$name]['module_name'] && $this->componentSlots[$name]['component_name']) + +474  + `¬¿y +( +$this +-> +compڒtSlÙs +[ +$Çme +]['module_name'], $this->componentSlots[$name]['component_name']); + +477  +nuÎ +; + +478 + } +} + +488 +public + +funùiÚ + + $£tTem¶©e +( +$‹m¶©e +) + +490 ià( +sfToÞk™ +:: + `isP©hAbsÞu‹ +( +$‹m¶©e +)) + +492 +$this +-> +dœeùÜy + = + `dœÇme +( +$‹m¶©e +); + +493 +$this +-> +‹m¶©e + = + `ba£Çme +( +$‹m¶©e +); + +497 +$this +-> +dœeùÜy + = $this-> +cڋxt +-> + `g‘CÚfigu¿tiÚ +()-> + `g‘Tem¶©eDœ +($this-> +moduËName +, +$‹m¶©e +); + +498 +$this +-> +‹m¶©e + = +$‹m¶©e +; + +500 + } +} + +507 +public + +funùiÚ + + $g‘Ex‹nsiÚ +() + +509  +$this +-> +ex‹nsiÚ +; + +510 + } +} + +517 +public + +funùiÚ + + $£tEx‹nsiÚ +( +$ex‹nsiÚ +) + +519 +$this +-> +ex‹nsiÚ + = +$ex‹nsiÚ +; + +520 + } +} + +527 +public + +funùiÚ + + $g‘ModuËName +() + +529  +$this +-> +moduËName +; + +530 + } +} + +537 +public + +funùiÚ + + $g‘AùiÚName +() + +539  +$this +-> +aùiÚName +; + +540 + } +} + +547 +public + +funùiÚ + + $g‘V›wName +() + +549  +$this +-> +v›wName +; + +550 + } +} + +562 +public + +funùiÚ + + $__ÿÎ +( +$m‘hod +, +$¬gum’ts +) + +564 +$ev’t + = +$this +-> +di¥©ch” +-> + `nÙifyUÁž +( +Ãw + + `sfEv’t +($this, 'v›w.m‘hod_nÙ_found', + `¬¿y +('m‘hod' => +$m‘hod +, '¬gum’ts' => +$¬gum’ts +))); + +565 ià(! +$ev’t +-> + `isProûs£d +()) + +567 +throw + +Ãw + + `sfExû±iÚ +( + `¥rštf +('C®ÈtØundefšed m‘hod %s::%s.', + `g‘_þass +( +$this +), +$m‘hod +)); + +570  +$ev’t +-> + `g‘R‘uºV®ue +(); + +571 + } +} + + @lib/vendor/symfony/lib/view/sfViewCacheManager.class.php + +1 + `š™Ÿlize +( +$cڋxt +, +$ÿche +, +$ÝtiÚs +); + +51 +public + +funùiÚ + + `š™Ÿlize +( +$cڋxt +, +sfCache + +$ÿche +, +$ÝtiÚs + = + $¬¿y +()) + +53 +$this +-> +cڋxt + = +$cڋxt +; + +54 +$this +-> +di¥©ch” + = +$cڋxt +-> + `g‘Ev’tDi¥©ch” +(); + +55 +$this +-> +cڌÞËr + = +$cڋxt +-> + `g‘CڌÞËr +(); + +56 +$this +-> +»que¡ + = +$cڋxt +-> + `g‘Reque¡ +(); + +57 +$this +-> +ÝtiÚs + = + `¬¿y_m”ge +( + `¬¿y +( + +58 'ÿche_key_u£_v¬y_h—d”s' => +Œue +, + +59 'ÿche_key_u£_ho¡_Çme' => +Œue +, + +60 ), +$ÝtiÚs +); + +62 ià( +sfCÚfig +:: + `g‘ +('sf_web_debug')) + +64 +$this +-> +di¥©ch” +-> + `cÚÃù +('v›w.ÿche.fž‹r_cڋÁ', + `¬¿y +($this, 'decorateContentWithDebug')); + +68 +$this +-> +ÿcheCÚfig + = + `¬¿y +(); + +71 +$this +-> +ÿche + = +$ÿche +; + +74 +$this +-> +routšg + = +$cڋxt +-> + `g‘Routšg +(); + +75 + } +} + +82 +public + +funùiÚ + + $g‘Cڋxt +() + +84  +$this +-> +cڋxt +; + +85 + } +} + +92 +public + +funùiÚ + + $g‘Cache +() + +94  +$this +-> +ÿche +; + +95 + } +} + +120 +public + +funùiÚ + +g’”©eCacheKey +( +$š‹º®Uri +, +$ho¡Name + = '', +$v¬y + = '', +$cڋxtu®P»fix + = '') + +122 ià( +$ÿÎabË + = +sfCÚfig +:: +g‘ +('sf_cache_namespace_callable')) + +124 ià(! +is_ÿÎabË +( +$ÿÎabË +)) + +126 +throw + +Ãw + +sfExû±iÚ +( +¥rštf +('"%s" cªnÙ bÿÎed‡ ¨funùiÚ.', +v¬_expÜt +( +$ÿÎabË +, +Œue +))); + +129  +ÿÎ_u£r_func +( +$ÿÎabË +, +$š‹º®Uri +, +$ho¡Name +, +$v¬y +, +$cڋxtu®P»fix +, +$this +); + +132 ià( +¡½os +( +$š‹º®Uri +, '@'è==ð0 && sŒpos($š‹º®Uri, '@sf_ÿche_·¹Ÿl'è==ð +çl£ +) + +134 +throw + +Ãw + +sfExû±iÚ +('A cache key cannot be generated for‡n internal URI usinghe @rule syntax'); + +137 + g$ÿcheKey + = ''; + +139 ià( + g$this +-> +isCڋxtu® +( +$š‹º®Uri +)) + +142 ià(! + g$cڋxtu®P»fix +) + +144 +li¡ +( +$rou‹_Çme +, +$·¿ms +èð +$this +-> +cڌÞËr +-> +cÚv”tU¾SŒšgToP¬am‘”s +($this-> +routšg +-> +g‘Cu¼’tIÁ”ÇlUri +()); + +147 ià(! +is£t +( +$·¿ms +['module']) || !isset($params['action'])) + +149 + g$·¿ms +['moduË'] = +sfCÚfig +:: +g‘ +('sf_error_404_module'); + +150 + g$·¿ms +['aùiÚ'] = +sfCÚfig +:: +g‘ +('sf_error_404_action'); + +152 + g$ÿcheKey + = +$this +-> +cÚv”tP¬am‘”sToKey +( +$·¿ms +); + +156 + g$ÿcheKey + = +$cڋxtu®P»fix +; + +158 +li¡ +( +$rou‹_Çme +, +$·¿ms +èð +$this +-> +cڌÞËr +-> +cÚv”tU¾SŒšgToP¬am‘”s +( +$š‹º®Uri +); + +159 + g$ÿcheKey + .ð +¥rštf +('/%s/%s/%s', +$·¿ms +['moduË'], $·¿ms['aùiÚ'], +is£t +($params['sf_cache_key']) ? $params['sf_cache_key'] : ''); + +164 +li¡ +( +$rou‹_Çme +, +$·¿ms +èð +$this +-> +cڌÞËr +-> +cÚv”tU¾SŒšgToP¬am‘”s +( +$š‹º®Uri +); + +165 ià( + g$rou‹_Çme + == 'sf_cache_partial') + +167 +$ÿcheKey + = 'sf_cache_partial/'; + +170 + g$ÿcheKey + .ð +$this +-> +cÚv”tP¬am‘”sToKey +( +$·¿ms +); + +174 ià( + g$v¬yP¬t + = +$this +-> +g‘CacheKeyV¬yH—d”P¬t +( +$š‹º®Uri +, +$v¬y +)) + +176 + g$ÿcheKey + = '/'. +$v¬yP¬t +.'/'. +Érim +( +$ÿcheKey +, '/'); + +180 ià( + g$ho¡NameP¬t + = +$this +-> +g‘CacheKeyHo¡NameP¬t +( +$ho¡Name +)) + +182 +$ÿcheKey + = '/'. +$ho¡NameP¬t +.'/'. +Érim +($cacheKey, '/'); + +186 ià(0 !=ð +¡½os +( +$ÿcheKey +, '/')) + +188 + g$ÿcheKey + = '/'. +$ÿcheKey +; + +192  + gçl£ + !=ð +¡½os +( +$ÿcheKey +, '//')) + +194 + g$ÿcheKey + = +¡r_»¶aû +('//', '/'. +sub¡r +( +sha1 +( +$ÿcheKey +), 0, 7).'/', $cacheKey); + +198 + g$ÿcheKey + = +¡¹r +( +$ÿcheKey +, +¬¿y +( + +205  + g$ÿcheKey +; + +214 +´Ùeùed + +funùiÚ + +g‘CacheKeyV¬yH—d”P¬t +( +$š‹º®Uri +, +$v¬y + = '') + +216 ià(! +$this +-> +ÝtiÚs +['cache_key_use_vary_headers']) + +222 ià(! + g$v¬y +) + +224 + g$v¬yH—d”s + = +$this +-> +g‘V¬y +( +$š‹º®Uri +); + +226 ià(! + g$v¬yH—d”s +) + +231 +sÜt +( +$v¬yH—d”s +); + +232 + g$»que¡ + = +$this +-> +cڋxt +-> +g‘Reque¡ +(); + +233 + g$v¬ys + = +¬¿y +(); + +235 +fܗch + ( +$v¬yH—d”s + +as + +$h—d” +) + +237 + g$v¬ys +[] = +$h—d” + . '-' . +´eg_»¶aû +('/\W+/', '_', +$»que¡ +-> +g‘H‰pH—d” +($header)); + +239 + g$v¬y + = +im¶ode +( +$v¬ys +, '-'); + +242  + g$v¬y +; + +251 +´Ùeùed + +funùiÚ + +g‘CacheKeyHo¡NameP¬t +( +$ho¡Name + = '') + +253 ià(! +$this +-> +ÝtiÚs +['cache_key_use_host_name']) + +258 ià(! + g$ho¡Name +) + +260 + g$ho¡Name + = +$this +-> +cڋxt +-> +g‘Reque¡ +()-> +g‘Ho¡ +(); + +263 + g$ho¡Name + = +´eg_»¶aû +('/[^a-z0-9\*]/i', '_', +$ho¡Name +); + +264 + g$ho¡Name + = +´eg_»¶aû +('/_+/', '_', +$ho¡Name +); + +266  +¡¹Þow” +( +$ho¡Name +); + +276 +´Ùeùed + +funùiÚ + + $cÚv”tP¬am‘”sToKey +( +$·¿ms +) + +278 if(! + `is£t +( +$·¿ms +['module']) || !isset($params['action'])) + +280 +throw + +Ãw + + `sfExû±iÚ +('A cache key must contain both‡ module‡nd‡n‡ction…arameter'); + +282 +$moduË + = +$·¿ms +['module']; + +283 + `un£t +( +$·¿ms +['module']); + +284 +$aùiÚ + = +$·¿ms +['action']; + +285 + `un£t +( +$·¿ms +['action']); + +286 + `ksÜt +( +$·¿ms +); + +287 +$ÿcheKey + = + `¥rštf +('%s/%s', +$moduË +, +$aùiÚ +); + +288 + `fܗch + ( +$·¿ms + +as + +$key + => +$v®ue +) + +290 +$ÿcheKey + .ð + `¥rštf +('/%s/%s', +$key +, +$v®ue +); + +293  +$ÿcheKey +; + +294 + } +} + +303 +public + +funùiÚ + +addCache +( +$moduËName +, +$aùiÚName +, +$ÝtiÚs + = + $¬¿y +()) + +306 ià( + `is£t +( +$ÝtiÚs +['vary'])) + +308 + `fܗch + ( +$ÝtiÚs +['v¬y'] +as + +$key + => +$Çme +) + +310 +$ÝtiÚs +['v¬y'][ +$key +] = + `¡¹r +( + `¡¹Þow” +( +$Çme +), '_', '-'); + +314 +$ÝtiÚs +['liãTime'] = + `is£t +($options['lifeTime']) ? $options['lifeTime'] : 0; + +315 ià(! + `is£t +( +$this +-> +ÿcheCÚfig +[ +$moduËName +])) + +317 +$this +-> +ÿcheCÚfig +[ +$moduËName +] = + `¬¿y +(); + +319 +$this +-> +ÿcheCÚfig +[ +$moduËName +][ +$aùiÚName +] = + `¬¿y +( + +320 'w™hLayout' => + `is£t +( +$ÝtiÚs +['w™hLayout']è? $ÝtiÚs['w™hLayout'] : +çl£ +, + +321 'liãTime' => +$ÝtiÚs +['lifeTime'], + +322 'þ›ÁLiãTime' => + `is£t +( +$ÝtiÚs +['clientLifeTime']) ? $options['clientLifeTime'] : $options['lifeTime'], + +323 'cڋxtu®' => + `is£t +( +$ÝtiÚs +['cڋxtu®']è? $ÝtiÚs['cڋxtu®'] : +çl£ +, + +324 'v¬y' => + `is£t +( +$ÝtiÚs +['v¬y']è? $ÝtiÚs['v¬y'] : + `¬¿y +(), + +326 + } +} + +333 +public + +funùiÚ + + $»gi¡”CÚfigu¿tiÚ +( +$moduËName +) + +335 ià(! + `is£t +( +$this +-> +lßded +[ +$moduËName +])) + +337 + `»quœe +( +$this +-> +cڋxt +-> + `g‘CÚfigCache +()-> + `checkCÚfig +('moduËs/'. +$moduËName +.'/config/cache.yml')); + +338 +$this +-> +lßded +[ +$moduËName +] = +Œue +; + +340 + } +} + +349 +public + +funùiÚ + + $w™hLayout +( +$š‹º®Uri +) + +351  +$this +-> + `g‘CacheCÚfig +( +$š‹º®Uri +, 'w™hLayout', +çl£ +); + +352 + } +} + +361 +public + +funùiÚ + + $g‘LiãTime +( +$š‹º®Uri +) + +363  +$this +-> + `g‘CacheCÚfig +( +$š‹º®Uri +, 'lifeTime', 0); + +364 + } +} + +373 +public + +funùiÚ + + $g‘Cl›ÁLiãTime +( +$š‹º®Uri +) + +375  +$this +-> + `g‘CacheCÚfig +( +$š‹º®Uri +, 'clientLifeTime', 0); + +376 + } +} + +385 +public + +funùiÚ + + $isCڋxtu® +( +$š‹º®Uri +) + +387  +$this +-> + `g‘CacheCÚfig +( +$š‹º®Uri +, 'cڋxtu®', +çl£ +); + +388 + } +} + +397 +public + +funùiÚ + + $g‘V¬y +( +$š‹º®Uri +) + +399  +$this +-> + `g‘CacheCÚfig +( +$š‹º®Uri +, 'v¬y', + `¬¿y +()); + +400 + } +} + +411 +´Ùeùed + +funùiÚ + + $g‘CacheCÚfig +( +$š‹º®Uri +, +$key +, +$deçuÉV®ue + = +nuÎ +) + +413 + `li¡ +( +$rou‹_Çme +, +$·¿ms +èð +$this +-> +cڌÞËr +-> + `cÚv”tU¾SŒšgToP¬am‘”s +( +$š‹º®Uri +); + +415 ià(! + `is£t +( +$·¿ms +['module'])) + +417  +$deçuÉV®ue +; + +420 +$this +-> + `»gi¡”CÚfigu¿tiÚ +( +$·¿ms +['module']); + +422 +$v®ue + = +$deçuÉV®ue +; + +423 ià( + `is£t +( +$this +-> +ÿcheCÚfig +[ +$·¿ms +['moduË']][$·¿ms['aùiÚ']][ +$key +])) + +425 +$v®ue + = +$this +-> +ÿcheCÚfig +[ +$·¿ms +['moduË']][$·¿ms['aùiÚ']][ +$key +]; + +427 ià( + `is£t +( +$this +-> +ÿcheCÚfig +[ +$·¿ms +['moduË']]['DEFAULT'][ +$key +])) + +429 +$v®ue + = +$this +-> +ÿcheCÚfig +[ +$·¿ms +['moduË']]['DEFAULT'][ +$key +]; + +432  +$v®ue +; + +433 + } +} + +448 +public + +funùiÚ + + $isCach—bË +( +$š‹º®Uri +) + +450 ià( +$this +-> +»que¡ + +š¡ªûof + +sfWebReque¡ + && !$this->»que¡-> + `isM‘hod +( +sfReque¡ +:: +GET +)) + +452  +çl£ +; + +455 + `li¡ +( +$rou‹_Çme +, +$·¿ms +èð +$this +-> +cڌÞËr +-> + `cÚv”tU¾SŒšgToP¬am‘”s +( +$š‹º®Uri +); + +457 ià(! + `is£t +( +$·¿ms +['module'])) + +459  +çl£ +; + +462 +$this +-> + `»gi¡”CÚfigu¿tiÚ +( +$·¿ms +['module']); + +464 ià( + `is£t +( +$this +-> +ÿcheCÚfig +[ +$·¿ms +['module']][$params['action']])) + +466  ( +$this +-> +ÿcheCÚfig +[ +$·¿ms +['module']][$params['action']]['lifeTime'] > 0); + +468 ià( + `is£t +( +$this +-> +ÿcheCÚfig +[ +$·¿ms +['module']]['DEFAULT'])) + +470  ( +$this +-> +ÿcheCÚfig +[ +$·¿ms +['module']]['DEFAULT']['lifeTime'] > 0); + +473  +çl£ +; + +474 + } +} + +486 +public + +funùiÚ + + $isAùiÚCach—bË +( +$moduËName +, +$aùiÚName +) + +488 ià( +$this +-> +»que¡ + +š¡ªûof + +sfWebReque¡ + && !$this->»que¡-> + `isM‘hod +( +sfReque¡ +:: +GET +)) + +490  +çl£ +; + +493 +$this +-> + `»gi¡”CÚfigu¿tiÚ +( +$moduËName +); + +495 ià( + `is£t +( +$this +-> +ÿcheCÚfig +[ +$moduËName +][ +$aùiÚName +])) + +497  +$this +-> +ÿcheCÚfig +[ +$moduËName +][ +$aùiÚName +]['lifeTime'] > 0; + +499 ià( + `is£t +( +$this +-> +ÿcheCÚfig +[ +$moduËName +]['DEFAULT'])) + +501  +$this +-> +ÿcheCÚfig +[ +$moduËName +]['DEFAULT']['lifeTime'] > 0; + +504  +çl£ +; + +505 + } +} + +514 +public + +funùiÚ + + $g‘ +( +$š‹º®Uri +) + +517 ià(! +$this +-> + `isCach—bË +( +$š‹º®Uri +è|| $this-> + `ignÜe +()) + +519  +nuÎ +; + +522 +$»tv® + = +$this +-> +ÿche +-> + `g‘ +($this-> + `g’”©eCacheKey +( +$š‹º®Uri +)); + +524 ià( +sfCÚfig +:: + `g‘ +('sf_logging_enabled')) + +526 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, '­¶iÿtiÚ.log', + `¬¿y +( + `¥rštf +('CachfÜ "%s" %s', +$š‹º®Uri +, +$»tv® + !=ð +nuÎ + ? 'exists' : 'does‚otƒxist')))); + +529  +$»tv® +; + +530 + } +} + +539 +public + +funùiÚ + + $has +( +$š‹º®Uri +) + +541 ià(! +$this +-> + `isCach—bË +( +$š‹º®Uri +è|| $this-> + `ignÜe +()) + +543  +nuÎ +; + +546  +$this +-> +ÿche +-> + `has +($this-> + `g’”©eCacheKey +( +$š‹º®Uri +)); + +547 + } +} + +554 +´Ùeùed + +funùiÚ + + $ignÜe +() + +557 ià( +sfCÚfig +:: + `g‘ +('sf_debug'è&& +$this +-> +cڋxt +-> + `g‘Reque¡ +()-> + `g‘A‰ribu‹ +('sf_ignore_cache')) + +559 ià( +sfCÚfig +:: + `g‘ +('sf_logging_enabled')) + +561 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, '­¶iÿtiÚ.log', + `¬¿y +('Discard cache'))); + +564  +Œue +; + +567  +çl£ +; + +568 + } +} + +578 +public + +funùiÚ + + $£t +( +$d©a +, +$š‹º®Uri +) + +580 ià(! +$this +-> + `isCach—bË +( +$š‹º®Uri +)) + +582  +çl£ +; + +585 +Œy + + +587 +$»t + = +$this +-> +ÿche +-> + `£t +($this-> + `g’”©eCacheKey +( +$š‹º®Uri +), +$d©a +, $this-> + `g‘LiãTime +($internalUri)); + +589 + `ÿtch + ( +Exû±iÚ + +$e +) + +591  +çl£ +; + +594 ià( +sfCÚfig +:: + `g‘ +('sf_logging_enabled')) + +596 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, '­¶iÿtiÚ.log', + `¬¿y +( + `¥rštf +('SavÿchfÜ "%s"', +$š‹º®Uri +)))); + +599  +Œue +; + +600 + } +} + +612 +public + +funùiÚ + +»move +( +$š‹º®Uri +, +$ho¡Name + = '', +$v¬y + = '', +$cڋxtu®P»fix + = '**') + +614 ià( +sfCÚfig +:: +g‘ +('sf_logging_enabled')) + +616 +$this +-> +di¥©ch” +-> +nÙify +( +Ãw + +sfEv’t +($this, '­¶iÿtiÚ.log', +¬¿y +( +¥rštf +('RemovÿchfÜ "%s"', +$š‹º®Uri +)))); + +619 + g$ÿcheKey + = +$this +-> +g’”©eCacheKey +( +$š‹º®Uri +, +$ho¡Name +, +$v¬y +, +$cڋxtu®P»fix +); + +621 if( +¡½os +( +$ÿcheKey +, '*')) + +623  + g$this +-> + gÿche +-> +»moveP©‹º +( +$ÿcheKey +); + +625 +–£if + ( +$this +-> +ÿche +-> +has +( +$ÿcheKey +)) + +627  + g$this +-> + gÿche +-> +»move +( +$ÿcheKey +); + +638 +public + +funùiÚ + + $g‘La¡Modif›d +( +$š‹º®Uri +) + +640 ià(! +$this +-> + `isCach—bË +( +$š‹º®Uri +)) + +645  +$this +-> +ÿche +-> + `g‘La¡Modif›d +($this-> + `g’”©eCacheKey +( +$š‹º®Uri +)); + +646 + } +} + +655 +public + +funùiÚ + + $g‘Timeout +( +$š‹º®Uri +) + +657 ià(! +$this +-> + `isCach—bË +( +$š‹º®Uri +)) + +662  +$this +-> +ÿche +-> + `g‘Timeout +($this-> + `g’”©eCacheKey +( +$š‹º®Uri +)); + +663 + } +} + +675 +public + +funùiÚ + +¡¬t +( +$Çme +, +$liãTime +, +$þ›ÁLiãTime + = +nuÎ +, +$v¬y + = + $¬¿y +()) + +677 +$š‹º®Uri + = +$this +-> +routšg +-> + `g‘Cu¼’tIÁ”ÇlUri +(); + +679 ià(! +$þ›ÁLiãTime +) + +681 +$þ›ÁLiãTime + = +$liãTime +; + +685 + `li¡ +( +$rou‹_Çme +, +$·¿ms +èð +$this +-> +cڌÞËr +-> + `cÚv”tU¾SŒšgToP¬am‘”s +( +$š‹º®Uri +); + +686 +$this +-> + `addCache +( +$·¿ms +['moduË'], $·¿ms['aùiÚ'], + `¬¿y +('w™hLayout' => +çl£ +, 'liãTime' => +$liãTime +, 'þ›ÁLiãTime' => +$þ›ÁLiãTime +, 'v¬y' => +$v¬y +)); + +689 +$d©a + = +$this +-> + `g‘ +( +$š‹º®Uri +.( + `¡½os +($š‹º®Uri, '?'è? '&' : '?').'_sf_ÿche_key='. +$Çme +); + +690 ià( +$d©a + !=ð +nuÎ +) + +692  +$d©a +; + +696 + `ob_¡¬t +(); + +697 + `ob_im¶ic™_æush +(0); + +699  +nuÎ +; + +701 + } +} + +710 +public + +funùiÚ + + $¡Ý +( +$Çme +) + +712 +$d©a + = + `ob_g‘_þ—n +(); + +715 +$š‹º®Uri + = +$this +-> +routšg +-> + `g‘Cu¼’tIÁ”ÇlUri +(); + +716 +Œy + + +718 +$this +-> + `£t +( +$d©a +, +$š‹º®Uri +.( + `¡½os +($š‹º®Uri, '?'è? '&' : '?').'_sf_ÿche_key='. +$Çme +); + +720 + `ÿtch + ( +Exû±iÚ + +$e +) + +724  +$d©a +; + +725 + } +} + +732 +public + +funùiÚ + + $compu‹CacheKey +( +¬¿y + +$·¿m‘”s +) + +734 ià( + `is£t +( +$·¿m‘”s +['sf_cache_key'])) + +736  +$·¿m‘”s +['sf_cache_key']; + +739 ià( +sfCÚfig +:: + `g‘ +('sf_logging_enabled')) + +741 +$this +-> +di¥©ch” +-> + `nÙify +( +Ãw + + `sfEv’t +($this, '­¶iÿtiÚ.log', + `¬¿y +('Generate cache key'))); + +743 + `ksÜt +( +$·¿m‘”s +); + +745  + `md5 +( + `£rŸlize +( +$·¿m‘”s +)); + +746 + } +} + +758 +public + +funùiÚ + + $checkCacheKey +( +¬¿y + & +$·¿m‘”s +) + +760 +$·¿m‘”s +['sf_ÿche_key'] = +$this +-> + `compu‹CacheKey +($parameters); + +762  +$·¿m‘”s +['sf_cache_key']; + +763 + } +} + +774 +public + +funùiÚ + + $g‘P¬tŸlUri +( +$moduË +, +$aùiÚ +, +$ÿcheKey +) + +776  + `¥rštf +('@sf_ÿche_·¹Ÿl?moduË=%s&aùiÚ=%s&sf_ÿche_key=%s', +$moduË +, +$aùiÚ +, +$ÿcheKey +); + +777 + } +} + +788 +public + +funùiÚ + + $hasP¬tŸlCache +( +$moduË +, +$aùiÚ +, +$ÿcheKey +) + +790  +$this +-> + `has +($this-> + `g‘P¬tŸlUri +( +$moduË +, +$aùiÚ +, +$ÿcheKey +)); + +791 + } +} + +802 +public + +funùiÚ + + $g‘P¬tŸlCache +( +$moduË +, +$aùiÚ +, +$ÿcheKey +) + +804 +$uri + = +$this +-> + `g‘P¬tŸlUri +( +$moduË +, +$aùiÚ +, +$ÿcheKey +); + +806 ià(! +$this +-> + `isCach—bË +( +$uri +)) + +808  +nuÎ +; + +812 +$ÿche + = +$this +-> + `g‘ +( +$uri +); + +814 ià( +nuÎ + ==ð +$ÿche +) + +816  +nuÎ +; + +819 +$ÿche + = + `un£rŸlize +($cache); + +820 +$cڋÁ + = +$ÿche +['content']; + +821 +$this +-> +cڋxt +-> + `g‘Re¥Ú£ +()-> + `m”ge +( +$ÿche +['response']); + +823 ià( +sfCÚfig +:: + `g‘ +('sf_web_debug')) + +825 +$cڋÁ + = +$this +-> +di¥©ch” +-> + `fž‹r +( +Ãw + + `sfEv’t +($this, 'v›w.ÿche.fž‹r_cڋÁ', + `¬¿y +('»¥Ú£' => $this-> +cڋxt +-> + `g‘Re¥Ú£ +(), 'uri' => +$uri +, 'Ãw' => +çl£ +)), $cڋÁ)-> + `g‘R‘uºV®ue +(); + +828  +$cڋÁ +; + +829 + } +} + +841 +public + +funùiÚ + + $£tP¬tŸlCache +( +$moduË +, +$aùiÚ +, +$ÿcheKey +, +$cڋÁ +) + +843 +$uri + = +$this +-> + `g‘P¬tŸlUri +( +$moduË +, +$aùiÚ +, +$ÿcheKey +); + +844 ià(! +$this +-> + `isCach—bË +( +$uri +)) + +846  +$cڋÁ +; + +849 +$§ved + = +$this +-> + `£t +( + `£rŸlize +( + `¬¿y +('cڋÁ' => +$cڋÁ +, '»¥Ú£' => $this-> +cڋxt +-> + `g‘Re¥Ú£ +())), +$uri +); + +851 ià( +$§ved + && +sfCÚfig +:: + `g‘ +('sf_web_debug')) + +853 +$cڋÁ + = +$this +-> +di¥©ch” +-> + `fž‹r +( +Ãw + + `sfEv’t +($this, 'v›w.ÿche.fž‹r_cڋÁ', + `¬¿y +('»¥Ú£' => $this-> +cڋxt +-> + `g‘Re¥Ú£ +(), 'uri' => +$uri +, 'Ãw' => +Œue +)), $cڋÁ)-> + `g‘R‘uºV®ue +(); + +856  +$cڋÁ +; + +857 + } +} + +866 +public + +funùiÚ + + $hasAùiÚCache +( +$uri +) + +868  +$this +-> + `has +( +$uri +è&& !$this-> + `w™hLayout +($uri); + +869 + } +} + +878 +public + +funùiÚ + + $g‘AùiÚCache +( +$uri +) + +880 ià(! +$this +-> + `isCach—bË +( +$uri +è|| $this-> + `w™hLayout +($uri)) + +882  +nuÎ +; + +886 +$ÿche + = +$this +-> + `g‘ +( +$uri +); + +888 ià( +nuÎ + ==ð +$ÿche +) + +890  +nuÎ +; + +893 +$ÿche + = + `un£rŸlize +($cache); + +894 +$cڋÁ + = +$ÿche +['content']; + +895 +$ÿche +['»¥Ú£']-> + `£tEv’tDi¥©ch” +( +$this +-> +di¥©ch” +); + +896 +$this +-> +cڋxt +-> + `g‘Re¥Ú£ +()-> + `cÝyPrݔt›s +( +$ÿche +['response']); + +898 ià( +sfCÚfig +:: + `g‘ +('sf_web_debug')) + +900 +$cڋÁ + = +$this +-> +di¥©ch” +-> + `fž‹r +( +Ãw + + `sfEv’t +($this, 'v›w.ÿche.fž‹r_cڋÁ', + `¬¿y +('»¥Ú£' => $this-> +cڋxt +-> + `g‘Re¥Ú£ +(), 'uri' => +$uri +, 'Ãw' => +çl£ +)), $cڋÁ)-> + `g‘R‘uºV®ue +(); + +903  + `¬¿y +( +$cڋÁ +, +$ÿche +['decoratorTemplate']); + +904 + } +} + +915 +public + +funùiÚ + + $£tAùiÚCache +( +$uri +, +$cڋÁ +, +$decÜ©ÜTem¶©e +) + +917 ià(! +$this +-> + `isCach—bË +( +$uri +è|| $this-> + `w™hLayout +($uri)) + +919  +$cڋÁ +; + +922 +$§ved + = +$this +-> + `£t +( + `£rŸlize +( + `¬¿y +('cڋÁ' => +$cڋÁ +, 'decÜ©ÜTem¶©e' => +$decÜ©ÜTem¶©e +, '»¥Ú£' => $this-> +cڋxt +-> + `g‘Re¥Ú£ +())), +$uri +); + +924 ià( +$§ved + && +sfCÚfig +:: + `g‘ +('sf_web_debug')) + +926 +$cڋÁ + = +$this +-> +di¥©ch” +-> + `fž‹r +( +Ãw + + `sfEv’t +($this, 'v›w.ÿche.fž‹r_cڋÁ', + `¬¿y +('»¥Ú£' => $this-> +cڋxt +-> + `g‘Re¥Ú£ +(), 'uri' => +$uri +, 'Ãw' => +Œue +)), $cڋÁ)-> + `g‘R‘uºV®ue +(); + +929  +$cڋÁ +; + +930 + } +} + +937 +public + +funùiÚ + + $£tPageCache +( +$uri +) + +939 ià( +sfV›w +:: +RENDER_CLIENT + !ð +$this +-> +cڌÞËr +-> + `g‘R’d”Mode +()) + +945 +$§ved + = +$this +-> + `£t +( + `£rŸlize +($this-> +cڋxt +-> + `g‘Re¥Ú£ +()), +$uri +); + +947 ià( +$§ved + && +sfCÚfig +:: + `g‘ +('sf_web_debug')) + +949 +$cڋÁ + = +$this +-> +di¥©ch” +-> + `fž‹r +( +Ãw + + `sfEv’t +($this, 'v›w.ÿche.fž‹r_cڋÁ', + `¬¿y +('»¥Ú£' => $this-> +cڋxt +-> + `g‘Re¥Ú£ +(), 'uri' => +$uri +, 'Ãw' => +Œue +)), $this->cڋxt->g‘Re¥Ú£()-> + `g‘CڋÁ +())-> + `g‘R‘uºV®ue +(); + +951 +$this +-> +cڋxt +-> + `g‘Re¥Ú£ +()-> + `£tCڋÁ +( +$cڋÁ +); + +953 + } +} + +962 +public + +funùiÚ + + $g‘PageCache +( +$uri +) + +964 +$»tv® + = +$this +-> + `g‘ +( +$uri +); + +966 ià( +nuÎ + ==ð +$»tv® +) + +968  +çl£ +; + +971 +$ÿchedRe¥Ú£ + = + `un£rŸlize +( +$»tv® +); + +972 +$ÿchedRe¥Ú£ +-> + `£tEv’tDi¥©ch” +( +$this +-> +di¥©ch” +); + +974 ià( +sfV›w +:: +RENDER_VAR + =ð +$this +-> +cڌÞËr +-> + `g‘R’d”Mode +()) + +976 +$this +-> +cڌÞËr +-> + `g‘AùiÚSck +()-> + `g‘La¡EÁry +()-> + `£tP»£Á©iÚ +( +$ÿchedRe¥Ú£ +-> + `g‘CڋÁ +()); + +977 +$this +-> +cڋxt +-> + `g‘Re¥Ú£ +()-> + `£tCڋÁ +(''); + +981 +$this +-> +cڋxt +-> + `£tRe¥Ú£ +( +$ÿchedRe¥Ú£ +); + +983 ià( +sfCÚfig +:: + `g‘ +('sf_web_debug')) + +985 +$cڋÁ + = +$this +-> +di¥©ch” +-> + `fž‹r +( +Ãw + + `sfEv’t +($this, 'v›w.ÿche.fž‹r_cڋÁ', + `¬¿y +('»¥Ú£' => $this-> +cڋxt +-> + `g‘Re¥Ú£ +(), 'uri' => +$uri +, 'Ãw' => +çl£ +)), $this->cڋxt->g‘Re¥Ú£()-> + `g‘CڋÁ +())-> + `g‘R‘uºV®ue +(); + +987 +$this +-> +cڋxt +-> + `g‘Re¥Ú£ +()-> + `£tCڋÁ +( +$cڋÁ +); + +991  +Œue +; + +992 + } +} + +1002 +public + +funùiÚ + + $g‘Cu¼’tCacheKey +() + +1004 +$ÿcheKey + = +$this +-> +routšg +-> + `g‘Cu¼’tIÁ”ÇlUri +(); + +1006 ià( +$g‘P¬am‘”s + = +$this +-> +»que¡ +-> + `g‘G‘P¬am‘”s +()) + +1008 +$ÿcheKey + .ð +çl£ + ==ð + `¡½os +($cacheKey, '?') ? '?' : '&'; + +1009 +$ÿcheKey + .ð + `h‰p_bužd_qu”y +( +$g‘P¬am‘”s +, +nuÎ +, '&'); + +1012  +$ÿcheKey +; + +1013 + } +} + +1023 +public + +funùiÚ + + $decÜ©eCڋÁW™hDebug +( +sfEv’t + +$ev’t +, +$cڋÁ +) + +1026 ià(! +$cڋÁ + || +çl£ + ==ð + `¡½os +( +$ev’t +['»¥Ú£']-> + `g‘CڋÁTy³ +(), 'html')) + +1028  +$cڋÁ +; + +1031 +$this +-> +cڋxt +-> + `g‘CÚfigu¿tiÚ +()-> + `lßdH–³rs +( + `¬¿y +('Helper', 'Url', 'Asset', 'Tag')); + +1033 +$sf_ÿche_key + = +$this +-> + `g’”©eCacheKey +( +$ev’t +['uri']); + +1034 +$bgCÞÜ + = +$ev’t +['new'] ? '#9ff' : '#ff9'; + +1035 +$Ï¡Modif›d + = +$this +-> +ÿche +-> + `g‘La¡Modif›d +( +$sf_ÿche_key +); + +1036 +$ÿcheKey + = +$this +-> +ÿche +-> + `g‘O±iÚ +('´efix'). +$sf_ÿche_key +; + +1037 +$id + = + `md5 +( +$ev’t +['uri']); + +1040 < +div + +id +="maš_'.$id.'" +þass +="sfWebDebugAùiÚCache" +¡yË +="border: 1px solid #f00"> + +1041 < +div + +id +="sub_maš_'.$id.'" +þass +="sfWebDebugCache" +¡yË +="background-color: '.$bgColor.'; border-right: 1px solid #f00; border-bottom: 1px solid #f00;"> + +1042 < +div + +¡yË +="height: 16px;…addšg: 2px">< +a + +h»f +="#" +Úþick +="sfWebDebugToggË(\'sub_maš_šfo_'.$id.'\');„‘uº f®£;">< +¡rÚg +> +ÿche + +šfÜm©iÚ +& +nb¥ +;<¨h»f="#" onþick="sfWebDebugToggË(\'sub_maš_'.$id.'\'); docum’t.g‘EËm’tById(\'maš_'.$id.'\').¡yË.bÜd” = \'nÚe\';„‘uº f®£;">'.image_g(sfCÚfig::g‘(' +sf_web_debug_web_dœ +').'/ +images +/ +þo£ +. +²g +',‡¼ay(' +®t +' => 'close')).'  + +1043 < +div + +¡yË +="·ddšg: 2px; di¥Ïy:‚Úe" +id +="sub_main_info_'.$id.'"> + +1044 [ +uri +]& +nb¥ +;'.html¥ecŸlch¬s($ev’t['uri'], ENT_QUOTES, sfCÚfig::g‘(' +sf_ch¬£t +')).'< +br + /> + +1045 [ +key +& +nb¥ +;&nb¥; +ÿche +]&nb¥;'.html¥ecŸlch¬s($ÿcheKey, ENT_QUOTES, sfCÚfig::g‘(' +sf_ch¬£t +')).'< +br + /> + +1046 [ +liã +& +nb¥ +; +time +]&nb¥;'.$this->g‘LiãTime($ev’t[' +uri +']).'&nb¥; +£cÚds +< +br + /> + +1047 [ +Ï¡ +& +nb¥ +; +modif›d +]&nb¥;'.Ñime(è- $Ï¡Modif›d).'&nb¥; +£cÚds +< +br + /> + +1048 & +nb¥ +;< +br + />  + +1049 + +1050
    + +1052
    + +1054 + } +} + + @lib/vendor/symfony/lib/view/sfViewParameterHolder.class.php + +1 + `š™Ÿlize +( +$di¥©ch” +, +$·¿m‘”s +, +$ÝtiÚs +); + +52 +public + +funùiÚ + + `š™Ÿlize +( +sfEv’tDi¥©ch” + +$di¥©ch” +, +$·¿m‘”s + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +54 +$this +-> +di¥©ch” + = +$di¥©ch” +; + +56 +$this +-> + `add +( +$·¿m‘”s +); + +58 +$this +-> + `£tEsÿpšg +( + `is£t +( +$ÝtiÚs +['esÿpšg_¡¿‹gy']è? $ÝtiÚs['esÿpšg_¡¿‹gy'] : +çl£ +); + +59 +$this +-> + `£tEsÿpšgM‘hod +( + `is£t +( +$ÝtiÚs +['escaping_method']) ? $options['escaping_method'] : 'ESC_SPECIALCHARS'); + +60 + } +} + +67 +public + +funùiÚ + + $isEsÿ³d +() + +69  + `š_¬¿y +( +$this +-> + `g‘Esÿpšg +(), + `¬¿y +('Ú', 'Œue', +Œue +),rue); + +70 + } +} + +79 +public + +funùiÚ + + $toA¼ay +() + +81 +$ev’t + = +$this +-> +di¥©ch” +-> + `fž‹r +( +Ãw + + `sfEv’t +($this, '‹m¶©e.fž‹r_·¿m‘”s'), $this-> + `g‘AÎ +()); + +82 +$·¿m‘”s + = +$ev’t +-> + `g‘R‘uºV®ue +(); + +83 +$©Œibu‹s + = + `¬¿y +(); + +85 ià( +$this +-> + `isEsÿ³d +()) + +87 +$©Œibu‹s +['sf_d©a'] = +sfOuutEsÿ³r +:: + `esÿ³ +( +$this +-> + `g‘EsÿpšgM‘hod +(), +$·¿m‘”s +); + +88 + `fܗch + ( +$©Œibu‹s +['sf_d©a'] +as + +$key + => +$v®ue +) + +90 +$©Œibu‹s +[ +$key +] = +$v®ue +; + +93 ià( + `š_¬¿y +( +$this +-> + `g‘Esÿpšg +(), + `¬¿y +('off', +çl£ +), +Œue +)) + +95 +$©Œibu‹s + = +$·¿m‘”s +; + +96 +$©Œibu‹s +['sf_d©a'] = +sfOuutEsÿ³r +:: + `esÿ³ +( +ESC_RAW +, +$·¿m‘”s +); + +100 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('UnknowÀ¡¿‹gy "%s".', +$this +-> + `g‘Esÿpšg +())); + +103  +$©Œibu‹s +; + +104 + } +} + +113 +public + +funùiÚ + + $g‘Esÿpšg +() + +115  +$this +-> +esÿpšg +; + +116 + } +} + +123 +public + +funùiÚ + + $£tEsÿpšg +( +$esÿpšg +) + +125 +$this +-> +esÿpšg + = +$esÿpšg +; + +126 + } +} + +140 +public + +funùiÚ + + $g‘EsÿpšgM‘hod +() + +142 ià( + `em±y +( +$this +-> +esÿpšgM‘hod +)) + +144  +$this +-> +esÿpšgM‘hod +; + +147 ià(! + `defšed +( +$this +-> +esÿpšgM‘hod +)) + +149 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('Thesÿpšg m‘hod "%s" i nهvažabË.', +$this +-> +esÿpšgM‘hod +)); + +152  + `cÚ¡ªt +( +$this +-> +esÿpšgM‘hod +); + +153 + } +} + +160 +public + +funùiÚ + + $£tEsÿpšgM‘hod +( +$m‘hod +) + +162 +$this +-> +esÿpšgM‘hod + = +$m‘hod +; + +163 + } +} + +170 +public + +funùiÚ + + $£rŸlize +() + +172  + `£rŸlize +( + `¬¿y +( +$this +-> + `g‘AÎ +(), $this-> +esÿpšgM‘hod +, $this-> +esÿpšg +)); + +173 + } +} + +180 +public + +funùiÚ + + $un£rŸlize +( +$£rŸlized +) + +182 + `li¡ +( +$this +-> +·¿m‘”s +, +$esÿpšgM‘hod +, +$esÿpšg +èð + `un£rŸlize +( +$£rŸlized +); + +184 +$this +-> + `š™Ÿlize +( +sfCڋxt +:: + `hasIn¡ªû +(è? sfCڋxt:: + `g‘In¡ªû +()-> + `g‘Ev’tDi¥©ch” +(è: +Ãw + + `sfEv’tDi¥©ch” +()); + +186 +$this +-> + `£tEsÿpšgM‘hod +( +$esÿpšgM‘hod +); + +187 +$this +-> + `£tEsÿpšg +( +$esÿpšg +); + +188 + } +} + + @lib/vendor/symfony/lib/widget/i18n/sfWidgetFormI18nChoiceCountry.class.php + +1 + `addO±iÚ +('culture'); + +41 +$this +-> + `addO±iÚ +('countries'); + +42 +$this +-> + `addO±iÚ +('add_em±y', +çl£ +); + +45 +$cuÉu» + = + `is£t +( +$ÝtiÚs +['culture']) ? $options['culture'] : 'en'; + +47 +$couÁr›s + = +sfCuÉu»Info +:: + `g‘In¡ªû +( +$cuÉu» +)-> + `g‘CouÁr›s +( + `is£t +( +$ÝtiÚs +['couÁr›s']è? $ÝtiÚs['couÁr›s'] : +nuÎ +); + +49 +$addEm±y + = + `is£t +( +$ÝtiÚs +['add_em±y']è? $ÝtiÚs['add_em±y'] : +çl£ +; + +50 ià( +çl£ + !=ð +$addEm±y +) + +52 +$couÁr›s + = + `¬¿y_m”ge +( + `¬¿y +('' => +Œue + ==ð +$addEm±y + ? '' : $addEmpty), $countries); + +55 +$this +-> + `£tO±iÚ +('choiûs', +$couÁr›s +); + +57 + } +} + + @lib/vendor/symfony/lib/widget/i18n/sfWidgetFormI18nChoiceCurrency.class.php + +1 + `addO±iÚ +('culture'); + +41 +$this +-> + `addO±iÚ +('currencies'); + +42 +$this +-> + `addO±iÚ +('add_em±y', +çl£ +); + +45 +$cuÉu» + = + `is£t +( +$ÝtiÚs +['culture']) ? $options['culture'] : 'en'; + +47 +$cu¼’c›s + = +sfCuÉu»Info +:: + `g‘In¡ªû +( +$cuÉu» +)-> + `g‘Cu¼’c›s +( + `is£t +( +$ÝtiÚs +['cu¼’c›s']è? $ÝtiÚs['cu¼’c›s'] : +nuÎ +); + +49 +$addEm±y + = + `is£t +( +$ÝtiÚs +['add_em±y']è? $ÝtiÚs['add_em±y'] : +çl£ +; + +50 ià( +çl£ + !=ð +$addEm±y +) + +52 +$cu¼’c›s + = + `¬¿y_m”ge +( + `¬¿y +('' => +Œue + ==ð +$addEm±y + ? '' : $addEmpty), $currencies); + +55 +$this +-> + `£tO±iÚ +('choiûs', +$cu¼’c›s +); + +57 + } +} + + @lib/vendor/symfony/lib/widget/i18n/sfWidgetFormI18nChoiceLanguage.class.php + +1 + `addO±iÚ +('culture'); + +41 +$this +-> + `addO±iÚ +('languages'); + +42 +$this +-> + `addO±iÚ +('add_em±y', +çl£ +); + +45 +$cuÉu» + = + `is£t +( +$ÝtiÚs +['culture']) ? $options['culture'] : 'en'; + +47 +$Ïnguages + = +sfCuÉu»Info +:: + `g‘In¡ªû +( +$cuÉu» +)-> + `g‘Lªguages +( + `is£t +( +$ÝtiÚs +['Ïnguages']è? $ÝtiÚs['Ïnguages'] : +nuÎ +); + +49 +$addEm±y + = + `is£t +( +$ÝtiÚs +['add_em±y']è? $ÝtiÚs['add_em±y'] : +çl£ +; + +50 ià( +çl£ + !=ð +$addEm±y +) + +52 +$Ïnguages + = + `¬¿y_m”ge +( + `¬¿y +('' => +Œue + ==ð +$addEm±y + ? '' : $addEmpty), $languages); + +55 +$this +-> + `£tO±iÚ +('choiûs', +$Ïnguages +); + +57 + } +} + + @lib/vendor/symfony/lib/widget/i18n/sfWidgetFormI18nChoiceTimezone.class.php + +1 + `addO±iÚ +('culture'); + +40 +$this +-> + `addO±iÚ +('add_em±y', +çl£ +); + +42 +$cuÉu» + = + `is£t +( +$ÝtiÚs +['culture']) ? $options['culture'] : 'en'; + +43 +$timezÚes + = + `¬¿y_keys +( +sfCuÉu»Info +:: + `g‘In¡ªû +( +$cuÉu» +)-> + `g‘TimeZÚes +()); + +44 +$timezÚes + = + `¬¿y_combše +($timezones, $timezones); + +46 +$addEm±y + = + `is£t +( +$ÝtiÚs +['add_em±y']è? $ÝtiÚs['add_em±y'] : +çl£ +; + +47 ià( +çl£ + !=ð +$addEm±y +) + +49 +$timezÚes + = + `¬¿y_m”ge +( + `¬¿y +('' => +Œue + ==ð +$addEm±y + ? '' : $addEmpty), $timezones); + +52 +$this +-> + `£tO±iÚ +('choiûs', +$timezÚes +); + +54 + } +} + + @lib/vendor/symfony/lib/widget/i18n/sfWidgetFormI18nDate.class.php + +1 + `addRequœedO±iÚ +('culture'); + +39 +$this +-> + `addO±iÚ +('month_format'); + +41 +$cuÉu» + = + `is£t +( +$ÝtiÚs +['culture']) ? $options['culture'] : 'en'; + +42 +$mÚthFÜm© + = + `is£t +( +$ÝtiÚs +['month_format']) ? $options['month_format'] : 'name'; + +45 +$this +-> + `£tO±iÚ +('fÜm©', $this-> + `g‘D©eFÜm© +( +$cuÉu» +)); + +48 +$this +-> + `£tO±iÚ +('mÚths', $this-> + `g‘MÚthFÜm© +( +$cuÉu» +, +$mÚthFÜm© +)); + +51 +´Ùeùed + +funùiÚ + + $g‘MÚthFÜm© +( +$cuÉu» +, +$mÚthFÜm© +) + +53  +$mÚthFÜm© +) + +56  + `¬¿y_combše +( + `¿nge +(1, 12), +sfD©eTimeFÜm©Info +:: + `g‘In¡ªû +( +$cuÉu» +)-> + `g‘MÚthNames +()); + +58  + `¬¿y_combše +( + `¿nge +(1, 12), +sfD©eTimeFÜm©Info +:: + `g‘In¡ªû +( +$cuÉu» +)-> + `g‘Abb»vŸ‹dMÚthNames +()); + +60  +$this +-> + `g‘O±iÚ +('months'); + +62 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('ThmÚth fÜm© "%s" i šv®id.', +$mÚthFÜm© +)); + +64 + } +} + +66 +´Ùeùed + +funùiÚ + + $g‘D©eFÜm© +( +$cuÉu» +) + +68 +$d©eFÜm© + = +sfD©eTimeFÜm©Info +:: + `g‘In¡ªû +( +$cuÉu» +)-> + `g‘ShÜtD©eP©‹º +(); + +70 ià( +çl£ + ==ð( +$dayPos + = + `¡ros +( +$d©eFÜm© +, 'd')è|| f®£ ==ð( +$mÚthPos + = sŒos($d©eFÜm©, 'm')è|| f®£ ==ð( +$y—rPos + = stripos($dateFormat, 'y'))) + +72  +$this +-> + `g‘O±iÚ +('format'); + +75  + `¡¹r +( +$d©eFÜm© +, + `¬¿y +( + +76 + `sub¡r +( +$d©eFÜm© +, +$dayPos +, + `¡¼os +($dateFormat, 'd') - $dayPos + 1) => '%day%', + +77 + `sub¡r +( +$d©eFÜm© +, +$mÚthPos +, + `¡¼os +($dateFormat, 'm') - $monthPos + 1) => '%month%', + +78 + `sub¡r +( +$d©eFÜm© +, +$y—rPos +, + `¡¼os +($dateFormat, 'y') - $yearPos + 1) => '%year%', + +80 + } +} + + @lib/vendor/symfony/lib/widget/i18n/sfWidgetFormI18nDateTime.class.php + +1 + `addRequœedO±iÚ +('culture'); + +39 +$cuÉu» + = + `is£t +( +$ÝtiÚs +['culture']) ? $options['culture'] : 'en'; + +42 +$this +-> + `£tO±iÚ +('fÜm©', + `¡r_»¶aû +( + `¬¿y +('{0}', '{1}'),‡¼ay('%time%', '%d©e%'), +sfD©eTimeFÜm©Info +:: + `g‘In¡ªû +( +$cuÉu» +)-> + `g‘D©eTimeOrd”P©‹º +())); + +48 +´Ùeùed + +funùiÚ + + `g‘D©eWidg‘ +( +$©Œibu‹s + = + $¬¿y +()) + +50  +Ãw + + `sfWidg‘FÜmI18nD©e +( + `¬¿y_m”ge +( + `¬¿y +('cuÉu»' => +$this +-> + `g‘O±iÚ +('cuÉu»')), $this-> + `g‘O±iÚsFÜ +('d©e')), $this-> + `g‘A‰ribu‹sFÜ +('d©e', +$©Œibu‹s +)); + +51 + } +} + +56 +´Ùeùed + +funùiÚ + +g‘TimeWidg‘ +( +$©Œibu‹s + = + $¬¿y +()) + +58  +Ãw + + `sfWidg‘FÜmI18nTime +( + `¬¿y_m”ge +( + `¬¿y +('cuÉu»' => +$this +-> + `g‘O±iÚ +('cuÉu»')), $this-> + `g‘O±iÚsFÜ +('time')), $this-> + `g‘A‰ribu‹sFÜ +('time', +$©Œibu‹s +)); + +59 + } +} + + @lib/vendor/symfony/lib/widget/i18n/sfWidgetFormI18nTime.class.php + +1 + `addRequœedO±iÚ +('culture'); + +39 +$cuÉu» + = + `is£t +( +$ÝtiÚs +['culture']) ? $options['culture'] : 'en'; + +42 +$this +-> + `£tO±iÚ +('fÜm©', $this-> + `g‘TimeFÜm© +( +$cuÉu» +, +Œue +)); + +45 +$this +-> + `£tO±iÚ +('fÜm©_w™hout_£cÚds', $this-> + `g‘TimeFÜm© +( +$cuÉu» +, +çl£ +)); + +48 +´Ùeùed + +funùiÚ + + $g‘TimeFÜm© +( +$cuÉu» +, +$w™hSecÚds +) + +50 +$timeFÜm© + = +$w™hSecÚds + ? +sfD©eTimeFÜm©Info +:: + `g‘In¡ªû +( +$cuÉu» +)-> + `g‘MediumTimeP©‹º +(è: sfD©eTimeFÜm©Info::g‘In¡ªû($cuÉu»)-> + `g‘ShÜtTimeP©‹º +(); + +52 ià( +çl£ + ==ð( +$hourPos + = + `¡ros +( +$timeFÜm© +, 'h')è|| f®£ ==ð( +$mšu‹Pos + = stripos($timeFormat, 'm'))) + +54  +$this +-> + `g‘O±iÚ +('format'); + +57 +$Œªs + = + `¬¿y +( + +58 + `sub¡r +( +$timeFÜm© +, +$hourPos +, + `¡¼os +($timeFormat, 'h') - $hourPos + 1) => '%hour%', + +59 + `sub¡r +( +$timeFÜm© +, +$mšu‹Pos +, + `¡¼os +($timeFormat, 'm') - $minutePos + 1) => '%minute%', + +62 ià( +$w™hSecÚds +) + +64 ià( +çl£ + ==ð +$£cÚdPos + = + `¡ros +( +$timeFÜm© +, 's')) + +66  +$this +-> + `g‘O±iÚ +('format'); + +69 +$Œªs +[ + `sub¡r +( +$timeFÜm© +, +$£cÚdPos +, + `¡¼os +($timeFormat, 's') - $secondPos + 1)] = '%second%'; + +72  + `¡¹r +( +$timeFÜm© +, +$Œªs +); + +73 + } +} + + @lib/vendor/symfony/lib/widget/sfWidget.class.php + +1 + `cÚfigu» +( +$ÝtiÚs +, +$©Œibu‹s +); + +43 +$cu¼’tO±iÚKeys + = + `¬¿y_keys +( +$this +-> +ÝtiÚs +); + +44 +$ÝtiÚKeys + = + `¬¿y_keys +( +$ÝtiÚs +); + +47 ià( +$diff + = + `¬¿y_diff +( +$ÝtiÚKeys +, + `¬¿y_m”ge +( +$cu¼’tO±iÚKeys +, +$this +-> +»quœedO±iÚs +))) + +49 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('% dÛ nÙ suµÜˆthfÞlowšg o±iÚs: \'%s\'.', + `g‘_þass +( +$this +), + `im¶ode +('\', \'', +$diff +))); + +53 ià( +$diff + = + `¬¿y_diff +( +$this +-> +»quœedO±iÚs +, + `¬¿y_m”ge +( +$cu¼’tO±iÚKeys +, +$ÝtiÚKeys +))) + +55 +throw + +Ãw + + `RuÁimeExû±iÚ +( + `¥rštf +('% »quœe thfÞlowšg o±iÚs: \'%s\'.', + `g‘_þass +( +$this +), + `im¶ode +('\', \'', +$diff +))); + +58 +$this +-> +ÝtiÚs + = + `¬¿y_m”ge +($this->ÝtiÚs, +$ÝtiÚs +); + +59 +$this +-> +©Œibu‹s + = + `¬¿y_m”ge +($this->©Œibu‹s, +$©Œibu‹s +); + +77 +´Ùeùed + +funùiÚ + + `cÚfigu» +( +$ÝtiÚs + = + `¬¿y +(), +$©Œibu‹s + = + $¬¿y +()) + +79 + } +} + +93 +ab¡¿ù + +public + +funùiÚ + +»nd” +( +$Çme +, +$v®ue + = +nuÎ +, +$©Œibu‹s + = +¬¿y +(), +$”rÜs + =‡rray()); + +102 +public + +funùiÚ + + $addRequœedO±iÚ +( +$Çme +) + +104 +$this +-> +»quœedO±iÚs +[] = +$Çme +; + +106  +$this +; + +107 + } +} + +114 +public + +funùiÚ + + $g‘RequœedO±iÚs +() + +116  +$this +-> +»quœedO±iÚs +; + +117 + } +} + +127 +public + +funùiÚ + + $addO±iÚ +( +$Çme +, +$v®ue + = +nuÎ +) + +129 +$this +-> +ÝtiÚs +[ +$Çme +] = +$v®ue +; + +131  +$this +; + +132 + } +} + +144 +public + +funùiÚ + + $£tO±iÚ +( +$Çme +, +$v®ue +) + +146 ià(! + `š_¬¿y +( +$Çme +, + `¬¿y_m”ge +( + `¬¿y_keys +( +$this +-> +ÝtiÚs +), $this-> +»quœedO±iÚs +))) + +148 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('% dÛ nÙ suµÜˆthfÞlowšg o±iÚ: \'%s\'.', + `g‘_þass +( +$this +), +$Çme +)); + +151 +$this +-> +ÝtiÚs +[ +$Çme +] = +$v®ue +; + +153  +$this +; + +154 + } +} + +163 +public + +funùiÚ + + $g‘O±iÚ +( +$Çme +) + +165  + `is£t +( +$this +-> +ÝtiÚs +[ +$Çme +]è? $this->ÝtiÚs[$Çme] : +nuÎ +; + +166 + } +} + +175 +public + +funùiÚ + + $hasO±iÚ +( +$Çme +) + +177  + `¬¿y_key_exi¡s +( +$Çme +, +$this +-> +ÝtiÚs +); + +178 + } +} + +185 +public + +funùiÚ + + $g‘O±iÚs +() + +187  +$this +-> +ÝtiÚs +; + +188 + } +} + +197 +public + +funùiÚ + + $£tO±iÚs +( +$ÝtiÚs +) + +199 +$this +-> +ÝtiÚs + = +$ÝtiÚs +; + +201  +$this +; + +202 + } +} + +209 +public + +funùiÚ + + $g‘A‰ribu‹s +() + +211  +$this +-> +©Œibu‹s +; + +212 + } +} + +222 +public + +funùiÚ + + $£tA‰ribu‹ +( +$Çme +, +$v®ue +) + +224 +$this +-> +©Œibu‹s +[ +$Çme +] = +$v®ue +; + +226  +$this +; + +227 + } +} + +236 +public + +funùiÚ + + $g‘A‰ribu‹ +( +$Çme +) + +238  + `is£t +( +$this +-> +©Œibu‹s +[ +$Çme +]è? $this->©Œibu‹s[$Çme] : +nuÎ +; + +239 + } +} + +248 +public + +funùiÚ + + $£tA‰ribu‹s +( +$©Œibu‹s +) + +250 +$this +-> +©Œibu‹s + = +$©Œibu‹s +; + +252  +$this +; + +253 + } +} + +264 +public + +funùiÚ + + $g‘StyËsh“ts +() + +266  + `¬¿y +(); + +267 + } +} + +274 +public + +funùiÚ + + $g‘JavaSüts +() + +276  + `¬¿y +(); + +277 + } +} + +284  +public + +funùiÚ + + $£tCh¬£t +( +$ch¬£t +) + +286 +£lf +:: +$ch¬£t + = $charset; + +287 + } +} + +294  +public + +funùiÚ + + $g‘Ch¬£t +() + +296  +£lf +:: +$ch¬£t +; + +297 + } +} + +304  +public + +funùiÚ + + $£tXhtml +( +$boޗn +) + +306 +£lf +:: +$xhtml + = ( +boޗn +è +$boޗn +; + +307 + } +} + +314  +public + +funùiÚ + + $isXhtml +() + +316  +£lf +:: +$xhtml +; + +317 + } +} + +327 +public + +funùiÚ + +»nd”Tag +( +$g +, +$©Œibu‹s + = + $¬¿y +()) + +329 ià( + `em±y +( +$g +)) + +334  + `¥rštf +('<%s%s%s', +$g +, +$this +-> + `©Œibu‹sToHtml +( +$©Œibu‹s +), +£lf +:: +$xhtml + ? ' />' : ( + `¡¹Þow” +($tag) == 'input' ? '>' : sprintf('>', $tag))); + +335 + } +} + +346 +public + +funùiÚ + +»nd”CڋÁTag +( +$g +, +$cڋÁ + = +nuÎ +, +$©Œibu‹s + = + $¬¿y +()) + +348 ià( + `em±y +( +$g +)) + +353  + `¥rštf +('<%s%s>%s', +$g +, +$this +-> + `©Œibu‹sToHtml +( +$©Œibu‹s +), +$cڋÁ +, $tag); + +354 + } +} + +362  +public + +funùiÚ + + $esÿ³Onû +( +$v®ue +) + +364  +£lf +:: + `fixDoubËEsÿ³ +( + `html¥ecŸlch¬s +(( +¡ršg +è +$v®ue +, +ENT_QUOTES +, s–f:: + `g‘Ch¬£t +())); + +365 + } +} + +373  +public + +funùiÚ + + $fixDoubËEsÿ³ +( +$esÿ³d +) + +375  + `´eg_»¶aû +('/&([a-z]+|(#\d+)|(#x[\da-f]+));/i', '&$1;', +$esÿ³d +); + +376 + } +} + +385 +public + +funùiÚ + + $©Œibu‹sToHtml +( +$©Œibu‹s +) + +387 +$©Œibu‹s + = + `¬¿y_m”ge +( +$this +-> +©Œibu‹s +, $attributes); + +389  + `im¶ode +('', + `¬¿y_m­ +( + `¬¿y +( +$this +, '©Œibu‹sToHtmlC®lback'), + `¬¿y_keys +( +$©Œibu‹s +), + `¬¿y_v®ues +($attributes))); + +390 + } +} + +402 +´Ùeùed + +funùiÚ + + $©Œibu‹sToHtmlC®lback +( +$k +, +$v +) + +404  +çl£ + ==ð +$v + || +nuÎ + ==ð$v || ('' ==ð$v && 'v®ue' !ð +$k +è? '' : + `¥rštf +(' %s="%s"', $k, +$this +-> + `esÿ³Onû +($v)); + +405 + } +} + + @lib/vendor/symfony/lib/widget/sfWidgetForm.class.php + +1 + `addO±iÚ +('id_format', '%s'); + +43 +$this +-> + `addO±iÚ +('is_hidd’', +çl£ +); + +44 +$this +-> + `addO±iÚ +('Ãeds_muɝ¬t', +çl£ +); + +45 +$this +-> + `addO±iÚ +('deçuÉ', +nuÎ +); + +46 +$this +-> + `addO±iÚ +('Ïb–', +nuÎ +); + +48 +·»Á +:: + `__cÚ¡ruù +( +$ÝtiÚs +, +$©Œibu‹s +); + +58 +public + +funùiÚ + + $£tDeçuÉ +( +$v®ue +) + +60 +$this +-> + `£tO±iÚ +('deçuÉ', +$v®ue +); + +62  +$this +; + +63 + } +} + +70 +public + +funùiÚ + + $g‘DeçuÉ +() + +72  +$this +-> + `g‘O±iÚ +('default'); + +73 + } +} + +82 +public + +funùiÚ + + $£tLab– +( +$v®ue +) + +84 +$this +-> + `£tO±iÚ +('Ïb–', +$v®ue +); + +86  +$this +; + +87 + } +} + +94 +public + +funùiÚ + + $g‘Lab– +() + +96  +$this +-> + `g‘O±iÚ +('label'); + +97 + } +} + +106 +public + +funùiÚ + + $£tIdFÜm© +( +$fÜm© +) + +108 +$this +-> + `£tO±iÚ +('id_fÜm©', +$fÜm© +); + +110  +$this +; + +111 + } +} + +118 +public + +funùiÚ + + $g‘IdFÜm© +() + +120  +$this +-> + `g‘O±iÚ +('id_format'); + +121 + } +} + +128 +public + +funùiÚ + + $isHidd’ +() + +130  +$this +-> + `g‘O±iÚ +('is_hidden'); + +131 + } +} + +140 +public + +funùiÚ + + $£tHidd’ +( +$boޗn +) + +142 +$this +-> + `£tO±iÚ +('is_hidd’', ( +boޗn +è +$boޗn +); + +144  +$this +; + +145 + } +} + +152 +public + +funùiÚ + + $ÃedsMuɝ¬tFÜm +() + +154  +$this +-> + `g‘O±iÚ +('needs_multipart'); + +155 + } +} + +168 +public + +funùiÚ + +»nd”Tag +( +$g +, +$©Œibu‹s + = + $¬¿y +()) + +170 ià( + `em±y +( +$g +)) + +175 +$©Œibu‹s + = +$this +-> + `fixFÜmId +($attributes); + +177  +·»Á +:: + `»nd”Tag +( +$g +, +$©Œibu‹s +); + +178 + } +} + +192 +public + +funùiÚ + +»nd”CڋÁTag +( +$g +, +$cڋÁ + = +nuÎ +, +$©Œibu‹s + = + $¬¿y +()) + +194  +·»Á +:: + `»nd”CڋÁTag +( +$g +, +$cڋÁ +, +$this +-> + `fixFÜmId +( +$©Œibu‹s +)); + +195 + } +} + +204 +´Ùeùed + +funùiÚ + + $fixFÜmId +( +$©Œibu‹s +) + +206 ià(! + `is£t +( +$©Œibu‹s +['id']) && isset($attributes['name'])) + +208 +$©Œibu‹s +['id'] = +$this +-> + `g’”©eId +($©Œibu‹s['Çme'], + `is£t +($©Œibu‹s['v®ue']è? $©Œibu‹s['v®ue'] : +nuÎ +); + +211  +$©Œibu‹s +; + +212 + } +} + +237 +public + +funùiÚ + + $g’”©eId +( +$Çme +, +$v®ue + = +nuÎ +) + +239 ià( +çl£ + ==ð +$this +-> + `g‘O±iÚ +('id_format')) + +241  +nuÎ +; + +245 ià( + `¡r¡r +( +$Çme +, '[')) + +247 +$Çme + = + `¡r_»¶aû +( + `¬¿y +('[]', '][', '[', ']'),‡¼ay(( +nuÎ + !=ð +$v®ue + ? '_'.$value : ''), '_', '_', ''), $name); + +250 ià( +çl£ + !=ð + `¡½os +( +$this +-> + `g‘O±iÚ +('id_format'), '%s')) + +252 +$Çme + = + `¥rštf +( +$this +-> + `g‘O±iÚ +('id_format'), $name); + +256 +$Çme + = + `´eg_»¶aû +( + `¬¿y +('/^[^A-Za-z]+/', '/[^A-Za-z0-9\:_\.\-]/'),‡rray('', '_'), $name); + +258  +$Çme +; + +259 + } +} + +268  +´Ùeùed + +funùiÚ + + $g’”©eTwoCh¬sRªge +( +$¡¬t +, +$¡Ý +) + +270 +$»suÉs + = + `¬¿y +(); + +271  +$i + = +$¡¬t +; $˜<ð +$¡Ý +; $i++) + +273 +$»suÉs +[ +$i +] = + `¥rštf +('%02d', $i); + +275  +$»suÉs +; + +276 + } +} + +285 +public + +funùiÚ + + $£tP¬’t +( +sfWidg‘FÜmSchema + +$widg‘Schema + = +nuÎ +) + +287 +$this +-> +·»Á + = +$widg‘Schema +; + +289  +$this +; + +290 + } +} + +299 +public + +funùiÚ + + $g‘P¬’t +() + +301  +$this +-> +·»Á +; + +302 + } +} + +314 +´Ùeùed + +funùiÚ + +Œª¦©e +( +$‹xt +, +¬¿y + +$·¿m‘”s + = + $¬¿y +()) + +316 ià( +nuÎ + ==ð +$this +-> +·»Á +) + +318  +$‹xt +; + +322  +$this +-> +·»Á +-> + `g‘FÜmFÜm©‹r +()-> + `Œª¦©e +( +$‹xt +, +$·¿m‘”s +); + +324 + } +} + +336 +´Ùeùed + +funùiÚ + +Œª¦©eAÎ +( +¬¿y + +$‹xts +,‡¼ay +$·¿m‘”s + = + $¬¿y +()) + +338 ià( +nuÎ + ==ð +$this +-> +·»Á +) + +340  +$‹xts +; + +344 +$»suÉ + = + `¬¿y +(); + +346 + `fܗch + ( +$‹xts + +as + +$key + => +$‹xt +) + +348 +$»suÉ +[ +$key +] = +$this +-> +·»Á +-> + `g‘FÜmFÜm©‹r +()-> + `Œª¦©e +( +$‹xt +, +$·¿m‘”s +); + +351  +$»suÉ +; + +353 + } +} + + @lib/vendor/symfony/lib/widget/sfWidgetFormChoice.class.php + +1 + `addO±iÚ +('muɝË', +çl£ +); + +46 +$this +-> + `addO±iÚ +('ex·nded', +çl£ +); + +47 +$this +-> + `addO±iÚ +('»nd””_þass', +çl£ +); + +48 +$this +-> + `addO±iÚ +('»nd””_ÝtiÚs', + `¬¿y +()); + +49 +$this +-> + `addO±iÚ +('»nd””', +çl£ +); + +60 +public + +funùiÚ + + $£tIdFÜm© +( +$fÜm© +) + +62 +$this +-> +ÝtiÚs +['»nd””_ÝtiÚs']['id_fÜm©'] = +$fÜm© +; + +63 + } +} + +77 +public + +funùiÚ + +»nd” +( +$Çme +, +$v®ue + = +nuÎ +, +$©Œibu‹s + = +¬¿y +(), +$”rÜs + = + $¬¿y +()) + +79 ià( +$this +-> + `g‘O±iÚ +('multiple')) + +81 +$©Œibu‹s +['multiple'] = 'multiple'; + +83 ià('[]' !ð + `sub¡r +( +$Çme +, -2)) + +85 +$Çme + .= '[]'; + +89 ià(! +$this +-> + `g‘O±iÚ +('renderer') && !$this->getOption('renderer_class') && $this->getOption('expanded')) + +91 + `un£t +( +$©Œibu‹s +['multiple']); + +94  +$this +-> + `g‘R’d”” +()-> + `»nd” +( +$Çme +, +$v®ue +, +$©Œibu‹s +, +$”rÜs +); + +95 + } +} + +102 +public + +funùiÚ + + $g‘StyËsh“ts +() + +104  +$this +-> + `g‘R’d”” +()-> + `g‘StyËsh“ts +(); + +105 + } +} + +112 +public + +funùiÚ + + $g‘JavaSüts +() + +114  +$this +-> + `g‘R’d”” +()-> + `g‘JavaSüts +(); + +115 + } +} + +117 +public + +funùiÚ + + $g‘R’d”” +() + +119 ià( +$this +-> + `g‘O±iÚ +('renderer')) + +121  +$this +-> + `g‘O±iÚ +('renderer'); + +124 ià(! +$þass + = +$this +-> + `g‘O±iÚ +('renderer_class')) + +126 +$ty³ + = ! +$this +-> + `g‘O±iÚ +('expanded') ? '' : ($this->getOption('multiple') ? 'checkbox' : 'radio'); + +127 +$þass + = + `¥rštf +('sfWidg‘FÜmS–eù%s', + `ucfœ¡ +( +$ty³ +)); + +130 +$ÝtiÚs + = +$this +-> +ÝtiÚs +['renderer_options']; + +131 +$ÝtiÚs +['choiûs'] = +Ãw + + `sfC®ÏbË +( + `¬¿y +( +$this +, 'getChoices')); + +133 +$»nd”” + = +Ãw + + `$þass +( +$ÝtiÚs +, +$this +-> + `g‘A‰ribu‹s +()); + +136 ià( +$»nd”” +-> + `hasO±iÚ +('translate_choices')) { + +137 +$»nd”” +-> + `£tO±iÚ +('Œª¦©e_choiûs', +çl£ +); + +140 +$»nd”” +-> + `£tP¬’t +( +$this +-> + `g‘P¬’t +()); + +142  +$»nd”” +; + +143 + } +} + + @lib/vendor/symfony/lib/widget/sfWidgetFormChoiceBase.class.php + +1 + `addRequœedO±iÚ +('choices'); + +36 +$this +-> + `addO±iÚ +('Œª¦©e_choiûs', +Œue +); + +44 +public + +funùiÚ + + $g‘Choiûs +() + +46 +$choiûs + = +$this +-> + `g‘O±iÚ +('choices'); + +48 ià( +$choiûs + +š¡ªûof + +sfC®ÏbË +) + +50 +$choiûs + = $choiûs-> + `ÿÎ +(); + +53 ià(! +$this +-> + `g‘O±iÚ +('translate_choices')) + +55  +$choiûs +; + +58 +$»suÉs + = + `¬¿y +(); + +59 + `fܗch + ( +$choiûs + +as + +$key + => +$choiû +) + +61 ià( + `is_¬¿y +( +$choiû +)) + +63 +$»suÉs +[ +$this +-> + `Œª¦©e +( +$key +)] = $this-> + `Œª¦©eAÎ +( +$choiû +); + +67 +$»suÉs +[ +$key +] = +$this +-> + `Œª¦©e +( +$choiû +); + +71  +$»suÉs +; + +72 + } +} + +77 +public + +funùiÚ + + $__þÚe +() + +79 ià( +$this +-> + `g‘O±iÚ +('choiûs'è +š¡ªûof + +sfC®ÏbË +) + +81 +$ÿÎabË + = +$this +-> + `g‘O±iÚ +('choiûs')-> + `g‘C®ÏbË +(); + +82 ià( + `is_¬¿y +( +$ÿÎabË +è&& $ÿÎabË[0] +š¡ªûof + +£lf +) + +84 +$ÿÎabË +[0] = +$this +; + +85 +$this +-> + `£tO±iÚ +('choiûs', +Ãw + + `sfC®ÏbË +( +$ÿÎabË +)); + +88 + } +} + + @lib/vendor/symfony/lib/widget/sfWidgetFormDate.class.php + +1 + `addO±iÚ +('format', '%month%/%day%/%year%'); + +42 +$this +-> + `addO±iÚ +('days', +·»Á +:: + `g’”©eTwoCh¬sRªge +(1, 31)); + +43 +$this +-> + `addO±iÚ +('mÚths', +·»Á +:: + `g’”©eTwoCh¬sRªge +(1, 12)); + +44 +$y—rs + = + `¿nge +( + `d©e +('Y') - 5, date('Y') + 5); + +45 +$this +-> + `addO±iÚ +('y—rs', + `¬¿y_combše +( +$y—rs +, $years)); + +47 +$this +-> + `addO±iÚ +('ÿn_be_em±y', +Œue +); + +48 +$this +-> + `addO±iÚ +('em±y_v®ues', + `¬¿y +('year' => '', 'month' => '', 'day' => '')); + +63 +public + +funùiÚ + + `»nd” +( +$Çme +, +$v®ue + = +nuÎ +, +$©Œibu‹s + = + `¬¿y +(), +$”rÜs + = + $¬¿y +()) + +66 +$deçuÉ + = + `¬¿y +('y—r' => +nuÎ +, 'month' =>‚ull, 'day' =>‚ull); + +67 ià( + `is_¬¿y +( +$v®ue +)) + +69 +$v®ue + = + `¬¿y_m”ge +( +$deçuÉ +, $value); + +73 +$v®ue + = ( +¡ršg +è$v®u=ð(¡ršgè( +š‹g” +è$v®u? (š‹g”è$v®u: + `¡¹Ùime +($value); + +74 ià( +çl£ + ==ð +$v®ue +) + +76 +$v®ue + = +$deçuÉ +; + +80 +$v®ue + = + `¬¿y +('y—r' => + `d©e +('Y', $value), 'month' => date('n', $value), 'day' => date('j', $value)); + +84 +$d©e + = + `¬¿y +(); + +85 +$em±yV®ues + = +$this +-> + `g‘O±iÚ +('empty_values'); + +87 +$d©e +['%day%'] = +$this +-> + `»nd”DayWidg‘ +( +$Çme +.'[day]', +$v®ue +['day'], + `¬¿y +('choiûs' => $this-> + `g‘O±iÚ +('ÿn_be_em±y'è?‡¼ay('' => +$em±yV®ues +['day']è+ $this->g‘O±iÚ('days'è: $this->g‘O±iÚ('days'), 'id_fÜm©' => $this->g‘O±iÚ('id_fÜm©')), + `¬¿y_m”ge +($this-> +©Œibu‹s +, +$©Œibu‹s +)); + +88 +$d©e +['%mÚth%'] = +$this +-> + `»nd”MÚthWidg‘ +( +$Çme +.'[mÚth]', +$v®ue +['mÚth'], + `¬¿y +('choiûs' => $this-> + `g‘O±iÚ +('ÿn_be_em±y'è?‡¼ay('' => +$em±yV®ues +['mÚth']è+ $this->g‘O±iÚ('mÚths'è: $this->g‘O±iÚ('mÚths'), 'id_fÜm©' => $this->g‘O±iÚ('id_fÜm©')), + `¬¿y_m”ge +($this-> +©Œibu‹s +, +$©Œibu‹s +)); + +89 +$d©e +['%y—r%'] = +$this +-> + `»nd”Y—rWidg‘ +( +$Çme +.'[y—r]', +$v®ue +['y—r'], + `¬¿y +('choiûs' => $this-> + `g‘O±iÚ +('ÿn_be_em±y'è?‡¼ay('' => +$em±yV®ues +['y—r']è+ $this->g‘O±iÚ('y—rs'è: $this->g‘O±iÚ('y—rs'), 'id_fÜm©' => $this->g‘O±iÚ('id_fÜm©')), + `¬¿y_m”ge +($this-> +©Œibu‹s +, +$©Œibu‹s +)); + +91  + `¡¹r +( +$this +-> + `g‘O±iÚ +('fÜm©'), +$d©e +); + +92 + } +} + +101 +´Ùeùed + +funùiÚ + + $»nd”DayWidg‘ +( +$Çme +, +$v®ue +, +$ÝtiÚs +, +$©Œibu‹s +) + +103 +$widg‘ + = +Ãw + + `sfWidg‘FÜmS–eù +( +$ÝtiÚs +, +$©Œibu‹s +); + +104  +$widg‘ +-> + `»nd” +( +$Çme +, +$v®ue +); + +105 + } +} + +114 +´Ùeùed + +funùiÚ + + $»nd”MÚthWidg‘ +( +$Çme +, +$v®ue +, +$ÝtiÚs +, +$©Œibu‹s +) + +116 +$widg‘ + = +Ãw + + `sfWidg‘FÜmS–eù +( +$ÝtiÚs +, +$©Œibu‹s +); + +117  +$widg‘ +-> + `»nd” +( +$Çme +, +$v®ue +); + +118 + } +} + +127 +´Ùeùed + +funùiÚ + + $»nd”Y—rWidg‘ +( +$Çme +, +$v®ue +, +$ÝtiÚs +, +$©Œibu‹s +) + +129 +$widg‘ + = +Ãw + + `sfWidg‘FÜmS–eù +( +$ÝtiÚs +, +$©Œibu‹s +); + +130  +$widg‘ +-> + `»nd” +( +$Çme +, +$v®ue +); + +131 + } +} + + @lib/vendor/symfony/lib/widget/sfWidgetFormDateRange.class.php + +1 + `addRequœedO±iÚ +('from_date'); + +39 +$this +-> + `addRequœedO±iÚ +('to_date'); + +41 +$this +-> + `addO±iÚ +('template', 'from %from_date%o %to_date%'); + +56 +public + +funùiÚ + + `»nd” +( +$Çme +, +$v®ue + = +nuÎ +, +$©Œibu‹s + = + `¬¿y +(), +$”rÜs + = + $¬¿y +()) + +58 +$v®ue + = + `¬¿y_m”ge +( + `¬¿y +('äom' => '', 'to' => ''), + `is_¬¿y +($value) ? $value :‡rray()); + +60  + `¡¹r +( +$this +-> + `Œª¦©e +($this-> + `g‘O±iÚ +('‹m¶©e')), + `¬¿y +( + +61 '%äom_d©e%' => +$this +-> + `g‘O±iÚ +('äom_d©e')-> + `»nd” +( +$Çme +.'[äom]', +$v®ue +['from']), + +62 '%to_d©e%' => +$this +-> + `g‘O±iÚ +('to_d©e')-> + `»nd” +( +$Çme +.'[to]', +$v®ue +['to']), + +64 + } +} + +71 +public + +funùiÚ + + $g‘StyËsh“ts +() + +73  + `¬¿y_unique +( + `¬¿y_m”ge +( +$this +-> + `g‘O±iÚ +('äom_d©e')-> + `g‘StyËsh“ts +(), $this->getOption('to_date')->getStylesheets())); + +74 + } +} + +81 +public + +funùiÚ + + $g‘JavaSüts +() + +83  + `¬¿y_unique +( + `¬¿y_m”ge +( +$this +-> + `g‘O±iÚ +('äom_d©e')-> + `g‘JavaSüts +(), $this->getOption('to_date')->getJavaScripts())); + +84 + } +} + + @lib/vendor/symfony/lib/widget/sfWidgetFormDateTime.class.php + +1 + `addO±iÚ +('d©e', + `¬¿y +()); + +44 +$this +-> + `addO±iÚ +('time', + `¬¿y +()); + +45 +$this +-> + `addO±iÚ +('w™h_time', +Œue +); + +46 +$this +-> + `addO±iÚ +('format', '%date% %time%'); + +61 +funùiÚ + + `»nd” +( +$Çme +, +$v®ue + = +nuÎ +, +$©Œibu‹s + = + `¬¿y +(), +$”rÜs + = + $¬¿y +()) + +63 +$d©e + = +$this +-> + `g‘D©eWidg‘ +( +$©Œibu‹s +)-> + `»nd” +( +$Çme +, +$v®ue +); + +65 ià(! +$this +-> + `g‘O±iÚ +('with_time')) + +67  +$d©e +; + +70  + `¡¹r +( +$this +-> + `g‘O±iÚ +('fÜm©'), + `¬¿y +( + +71 '%d©e%' => +$d©e +, + +72 '%time%' => +$this +-> + `g‘TimeWidg‘ +( +$©Œibu‹s +)-> + `»nd” +( +$Çme +, +$v®ue +), + +74 + } +} + +83 +´Ùeùed + +funùiÚ + +g‘D©eWidg‘ +( +$©Œibu‹s + = + $¬¿y +()) + +85  +Ãw + + `sfWidg‘FÜmD©e +( +$this +-> + `g‘O±iÚsFÜ +('d©e'), $this-> + `g‘A‰ribu‹sFÜ +('d©e', +$©Œibu‹s +)); + +86 + } +} + +95 +´Ùeùed + +funùiÚ + +g‘TimeWidg‘ +( +$©Œibu‹s + = + $¬¿y +()) + +97  +Ãw + + `sfWidg‘FÜmTime +( +$this +-> + `g‘O±iÚsFÜ +('time'), $this-> + `g‘A‰ribu‹sFÜ +('time', +$©Œibu‹s +)); + +98 + } +} + +109 +´Ùeùed + +funùiÚ + + $g‘O±iÚsFÜ +( +$ty³ +) + +111 +$ÝtiÚs + = +$this +-> + `g‘O±iÚ +( +$ty³ +); + +112 ià(! + `is_¬¿y +( +$ÝtiÚs +)) + +114 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('You mu¡…as ª‡¼ay f܁h% ÝtiÚ.', +$ty³ +)); + +118 +$ÝtiÚs + +ð + `¬¿y +('id_fÜm©' => +$this +-> + `g‘O±iÚ +('id_format')); + +120  +$ÝtiÚs +; + +121 + } +} + +131 +´Ùeùed + +funùiÚ + + $g‘A‰ribu‹sFÜ +( +$ty³ +, +$©Œibu‹s +) + +133 +$deçuÉs + = + `is£t +( +$this +-> +©Œibu‹s +[ +$ty³ +]è? $this->©Œibu‹s[$ty³] : + `¬¿y +(); + +135  + `is£t +( +$©Œibu‹s +[ +$ty³ +]è? + `¬¿y_m”ge +( +$deçuÉs +, $attributes[$type]) : $defaults; + +136 + } +} + + @lib/vendor/symfony/lib/widget/sfWidgetFormFilterDate.class.php + +1 + `addO±iÚ +('w™h_em±y', +Œue +); + +43 +$this +-> + `addO±iÚ +('empty_label', 'isƒmpty'); + +44 +$this +-> + `addO±iÚ +('template', 'from %from_date%
    to %to_date%'); + +45 +$this +-> + `addO±iÚ +('filter_template', '%date_range%
    %empty_checkbox% %empty_label%'); + +60 +public + +funùiÚ + + `»nd” +( +$Çme +, +$v®ue + = +nuÎ +, +$©Œibu‹s + = + `¬¿y +(), +$”rÜs + = + $¬¿y +()) + +62 +$v®ues + = + `¬¿y_m”ge +( + `¬¿y +('is_em±y' => ''), + `is_¬¿y +( +$v®ue +) ? $value :‡rray()); + +64  + `¡¹r +( +$this +-> + `g‘O±iÚ +('fž‹r_‹m¶©e'), + `¬¿y +( + +65 '%d©e_¿nge%' => +·»Á +:: + `»nd” +( +$Çme +, +$v®ue +, +$©Œibu‹s +, +$”rÜs +), + +66 '%em±y_checkbox%' => +$this +-> + `g‘O±iÚ +('w™h_em±y'è? $this-> + `»nd”Tag +('šput', + `¬¿y +('ty³' => 'checkbox', 'Çme' => +$Çme +.'[is_em±y]', 'checked' => +$v®ues +['is_empty'] ? 'checked' : '')) : '', + +67 '%em±y_Ïb–%' => +$this +-> + `g‘O±iÚ +('w™h_em±y'è? $this-> + `»nd”CڋÁTag +('Ïb–', $this-> + `Œª¦©e +($this->g‘O±iÚ('em±y_Ïb–')), + `¬¿y +('fÜ' => $this-> + `g’”©eId +( +$Çme +.'[is_empty]'))) : '', + +69 + } +} + + @lib/vendor/symfony/lib/widget/sfWidgetFormFilterInput.class.php + +1 + `addO±iÚ +('w™h_em±y', +Œue +); + +39 +$this +-> + `addO±iÚ +('empty_label', 'isƒmpty'); + +40 +$this +-> + `addO±iÚ +('template', '%input%
    %empty_checkbox% %empty_label%'); + +55 +public + +funùiÚ + + `»nd” +( +$Çme +, +$v®ue + = +nuÎ +, +$©Œibu‹s + = + `¬¿y +(), +$”rÜs + = + $¬¿y +()) + +57 +$v®ues + = + `¬¿y_m”ge +( + `¬¿y +('‹xt' => '', 'is_em±y' => +çl£ +), + `is_¬¿y +( +$v®ue +) ? $value :‡rray()); + +59  + `¡¹r +( +$this +-> + `g‘O±iÚ +('‹m¶©e'), + `¬¿y +( + +60 '%šput%' => +$this +-> + `»nd”Tag +('šput', + `¬¿y_m”ge +( + `¬¿y +('ty³' => '‹xt', 'id' => $this-> + `g’”©eId +( +$Çme +), 'Çme' => $Çme.'[‹xt]', 'v®ue' => +$v®ues +['‹xt']), +$©Œibu‹s +)), + +61 '%em±y_checkbox%' => +$this +-> + `g‘O±iÚ +('w™h_em±y'è? $this-> + `»nd”Tag +('šput', + `¬¿y +('ty³' => 'checkbox', 'Çme' => +$Çme +.'[is_em±y]', 'checked' => +$v®ues +['is_empty'] ? 'checked' : '')) : '', + +62 '%em±y_Ïb–%' => +$this +-> + `g‘O±iÚ +('w™h_em±y'è? $this-> + `»nd”CڋÁTag +('Ïb–', $this-> + `Œª¦©e +($this->g‘O±iÚ('em±y_Ïb–')), + `¬¿y +('fÜ' => $this-> + `g’”©eId +( +$Çme +.'[is_empty]'))) : '', + +64 + } +} + + @lib/vendor/symfony/lib/widget/sfWidgetFormInput.class.php + +1 + `addRequœedO±iÚ +('type'); + +38 +$this +-> + `£tO±iÚ +('type', 'text'); + +53 +public + +funùiÚ + + `»nd” +( +$Çme +, +$v®ue + = +nuÎ +, +$©Œibu‹s + = + `¬¿y +(), +$”rÜs + = + $¬¿y +()) + +55  +$this +-> + `»nd”Tag +('šput', + `¬¿y_m”ge +( + `¬¿y +('ty³' => $this-> + `g‘O±iÚ +('ty³'), 'Çme' => +$Çme +, 'v®ue' => +$v®ue +), +$©Œibu‹s +)); + +56 + } +} + + @lib/vendor/symfony/lib/widget/sfWidgetFormInputCheckbox.class.php + +1 + `addO±iÚ +('value_attribute_value'); + +37 +·»Á +:: + `__cÚ¡ruù +( +$ÝtiÚs +, +$©Œibu‹s +); + +46 +´Ùeùed + +funùiÚ + + `cÚfigu» +( +$ÝtiÚs + = + `¬¿y +(), +$©Œibu‹s + = + $¬¿y +()) + +48 +·»Á +:: + `cÚfigu» +( +$ÝtiÚs +, +$©Œibu‹s +); + +50 +$this +-> + `£tO±iÚ +('type', 'checkbox'); + +52 ià( + `is£t +( +$©Œibu‹s +['value'])) + +54 +$this +-> + `£tO±iÚ +('v®ue_©Œibu‹_v®ue', +$©Œibu‹s +['value']); + +56 + } +} + +70 +public + +funùiÚ + +»nd” +( +$Çme +, +$v®ue + = +nuÎ +, +$©Œibu‹s + = +¬¿y +(), +$”rÜs + = + $¬¿y +()) + +72 ià( +nuÎ + !=ð +$v®ue + && $v®u!=ð +çl£ +) + +74 +$©Œibu‹s +['checked'] = 'checked'; + +77 ià(! + `is£t +( +$©Œibu‹s +['v®ue']è&& +nuÎ + !=ð +$this +-> + `g‘O±iÚ +('value_attribute_value')) + +79 +$©Œibu‹s +['v®ue'] = +$this +-> + `g‘O±iÚ +('value_attribute_value'); + +82  +·»Á +:: + `»nd” +( +$Çme +, +nuÎ +, +$©Œibu‹s +, +$”rÜs +); + +83 + } +} + + @lib/vendor/symfony/lib/widget/sfWidgetFormInputFile.class.php + +1 + `£tO±iÚ +('type', 'file'); + +34 +$this +-> + `£tO±iÚ +('Ãeds_muɝ¬t', +Œue +); + +36 + } +} + + @lib/vendor/symfony/lib/widget/sfWidgetFormInputFileEditable.class.php + +1 + `£tO±iÚ +('type', 'file'); + +53 +$this +-> + `£tO±iÚ +('Ãeds_muɝ¬t', +Œue +); + +55 +$this +-> + `addRequœedO±iÚ +('file_src'); + +56 +$this +-> + `addO±iÚ +('is_image', +çl£ +); + +57 +$this +-> + `addO±iÚ +('ed™_mode', +Œue +); + +58 +$this +-> + `addO±iÚ +('w™h_d–‘e', +Œue +); + +59 +$this +-> + `addO±iÚ +('delete_label', 'removehe current file'); + +60 +$this +-> + `addO±iÚ +('template', '%file%
    %input%
    %delete% %delete_label%'); + +75 +public + +funùiÚ + + `»nd” +( +$Çme +, +$v®ue + = +nuÎ +, +$©Œibu‹s + = + `¬¿y +(), +$”rÜs + = + $¬¿y +()) + +77 +$šput + = +·»Á +:: + `»nd” +( +$Çme +, +$v®ue +, +$©Œibu‹s +, +$”rÜs +); + +79 ià(! +$this +-> + `g‘O±iÚ +('edit_mode')) + +81  +$šput +; + +84 ià( +$this +-> + `g‘O±iÚ +('with_delete')) + +86 +$d–‘eName + = ']' =ð + `sub¡r +( +$Çme +, -1) ? substr($name, 0, -1).'_delete]' : $name.'_delete'; + +88 +$d–‘e + = +$this +-> + `»nd”Tag +('šput', + `¬¿y_m”ge +( + `¬¿y +('ty³' => 'checkbox', 'Çme' => +$d–‘eName +), +$©Œibu‹s +)); + +89 +$d–‘eLab– + = +$this +-> + `Œª¦©e +($this-> + `g‘O±iÚ +('delete_label')); + +90 +$d–‘eLab– + = +$this +-> + `»nd”CڋÁTag +('Ïb–', $d–‘eLab–, + `¬¿y_m”ge +( + `¬¿y +('fÜ' => $this-> + `g’”©eId +( +$d–‘eName +)))); + +94 +$d–‘e + = ''; + +95 +$d–‘eLab– + = ''; + +98  + `¡¹r +( +$this +-> + `g‘O±iÚ +('‹m¶©e'), + `¬¿y +('%šput%' => +$šput +, '%d–‘e%' => +$d–‘e +, '%d–‘e_Ïb–%' => +$d–‘eLab– +, '%fže%' => $this-> + `g‘FžeAsTag +( +$©Œibu‹s +))); + +99 + } +} + +101 +´Ùeùed + +funùiÚ + + $g‘FžeAsTag +( +$©Œibu‹s +) + +103 ià( +$this +-> + `g‘O±iÚ +('is_image')) + +105  +çl£ + !=ð +$this +-> + `g‘O±iÚ +('fže_¤c'è? $this-> + `»nd”Tag +('img', + `¬¿y_m”ge +( + `¬¿y +('¤c' => $this->g‘O±iÚ('fže_¤c')), +$©Œibu‹s +)) : ''; + +109  +$this +-> + `g‘O±iÚ +('file_src'); + +111 + } +} + + @lib/vendor/symfony/lib/widget/sfWidgetFormInputHidden.class.php + +1 + `£tO±iÚ +('is_hidd’', +Œue +); + +34 +$this +-> + `£tO±iÚ +('type', 'hidden'); + +36 + } +} + + @lib/vendor/symfony/lib/widget/sfWidgetFormInputPassword.class.php + +1 + `addO±iÚ +('®ways_»nd”_em±y', +Œue +); + +39 +$this +-> + `£tO±iÚ +('type', 'password'); + +54 +public + +funùiÚ + + `»nd” +( +$Çme +, +$v®ue + = +nuÎ +, +$©Œibu‹s + = + `¬¿y +(), +$”rÜs + = + $¬¿y +()) + +56  +·»Á +:: + `»nd” +( +$Çme +, +$this +-> + `g‘O±iÚ +('®ways_»nd”_em±y'è? +nuÎ + : +$v®ue +, +$©Œibu‹s +, +$”rÜs +); + +57 + } +} + + @lib/vendor/symfony/lib/widget/sfWidgetFormInputText.class.php + +1 + `£tO±iÚ +('type', 'text'); + +35 + } +} + + @lib/vendor/symfony/lib/widget/sfWidgetFormSchema.class.php + +1 + `addO±iÚ +('name_format', '%s'); + +64 +$this +-> + `addO±iÚ +('fÜm_fÜm©‹r', +nuÎ +); + +66 +·»Á +:: + `__cÚ¡ruù +( +$ÝtiÚs +, +$©Œibu‹s +); + +68 ià( + `is_¬¿y +( +$f›lds +)) + +70 + `fܗch + ( +$f›lds + +as + +$Çme + => +$widg‘ +) + +72 +$this +[ +$Çme +] = +$widg‘ +; + +75 ià( +nuÎ + !=ð +$f›lds +) + +77 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +('sfWidgetFormSchema constructorakes‡n‡rray of sfWidget objects.'); + +80 +$this +-> + `£tLab–s +( +$Ïb–s +); + +81 +$this +-> +h–ps + = +$h–ps +; + +92 +public + +funùiÚ + + $£tDeçuÉ +( +$Çme +, +$v®ue + = +nuÎ +) + +94 +$this +[ +$Çme +]-> + `£tDeçuÉ +( +$v®ue +); + +96  +$this +; + +97 + } +} + +106 +public + +funùiÚ + + $g‘DeçuÉ +( +$Çme + = +nuÎ +) + +108  +$this +[ +$Çme +]-> + `g‘DeçuÉ +(); + +109 + } +} + +118 +public + +funùiÚ + + $£tDeçuÉs +( +¬¿y + +$v®ues +) + +120 + `fܗch + ( +$this +-> +f›lds + +as + +$Çme + => +$widg‘ +) + +122 ià( + `¬¿y_key_exi¡s +( +$Çme +, +$v®ues +)) + +124 +$widg‘ +-> + `£tDeçuÉ +( +$v®ues +[ +$Çme +]); + +128  +$this +; + +129 + } +} + +136 +public + +funùiÚ + + $g‘DeçuÉs +() + +138 +$deçuÉs + = + `¬¿y +(); + +140 + `fܗch + ( +$this +-> +f›lds + +as + +$Çme + => +$widg‘ +) + +142 +$deçuÉs +[ +$Çme +] = +$widg‘ + +š¡ªûof + +sfWidg‘FÜmSchema + ? $widg‘-> + `g‘DeçuÉs +(è: $widg‘-> + `g‘DeçuÉ +(); + +145  +$deçuÉs +; + +146 + } +} + +156 +public + +funùiÚ + + $addFÜmFÜm©‹r +( +$Çme +, +sfWidg‘FÜmSchemaFÜm©‹r + +$fÜm©‹r +) + +158 +$this +-> +fÜmFÜm©‹rs +[ +$Çme +] = +$fÜm©‹r +; + +160  +$this +; + +161 + } +} + +168 +public + +funùiÚ + + $g‘FÜmFÜm©‹rs +() + +170  +$this +-> +fÜmFÜm©‹rs +; + +171 + } +} + +190  +public + +funùiÚ + + $£tDeçuÉFÜmFÜm©‹rName +( +$Çme +) + +192 +£lf +:: +$deçuÉFÜm©‹rName + = +$Çme +; + +193 + } +} + +202 +public + +funùiÚ + + $£tFÜmFÜm©‹rName +( +$Çme +) + +204 +$this +-> +ÝtiÚs +['fÜm_fÜm©‹r'] = +$Çme +; + +206  +$this +; + +207 + } +} + +214 +public + +funùiÚ + + $g‘FÜmFÜm©‹rName +() + +216  +nuÎ + ==ð +$this +-> +ÝtiÚs +['fÜm_fÜm©‹r'] ? +£lf +:: +$deçuÉFÜm©‹rName + : $this->options['form_formatter']; + +217 + } +} + +226 +public + +funùiÚ + + $g‘FÜmFÜm©‹r +() + +228 +$Çme + = +$this +-> + `g‘FÜmFÜm©‹rName +(); + +230 ià(! + `is£t +( +$this +-> +fÜmFÜm©‹rs +[ +$Çme +])) + +232 +$þass + = 'sfWidg‘FÜmSchemaFÜm©‹r'. + `ucfœ¡ +( +$Çme +); + +234 ià(! + `þass_exi¡s +( +$þass +)) + +236 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('ThfÜm fÜm©‹¸"%s" dÛ nكxi¡.', +$Çme +)); + +239 +$this +-> +fÜmFÜm©‹rs +[ +$Çme +] = +Ãw + + `$þass +($this); + +242  +$this +-> +fÜmFÜm©‹rs +[ +$Çme +]; + +243 + } +} + +265 +public + +funùiÚ + + $£tNameFÜm© +( +$fÜm© +) + +267 ià( +çl£ + !=ð +$fÜm© + && f®£ ==ð + `¡½os +($format, '%s')) + +269 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('ThÇmfÜm© mu¡ cڏš %% ("%s" giv’)', +$fÜm© +)); + +272 +$this +-> +ÝtiÚs +['Çme_fÜm©'] = +$fÜm© +; + +274  +$this +; + +275 + } +} + +282 +public + +funùiÚ + + $g‘NameFÜm© +() + +284  +$this +-> +ÝtiÚs +['name_format']; + +285 + } +} + +294 +public + +funùiÚ + + $£tLab–s +( +¬¿y + +$Ïb–s +) + +296 + `fܗch + ( +$this +-> +f›lds + +as + +$Çme + => +$widg‘ +) + +298 ià( + `¬¿y_key_exi¡s +( +$Çme +, +$Ïb–s +)) + +300 +$widg‘ +-> + `£tLab– +( +$Ïb–s +[ +$Çme +]); + +304  +$this +; + +305 + } +} + +312 +public + +funùiÚ + + $g‘Lab–s +() + +314 +$Ïb–s + = + `¬¿y +(); + +316 + `fܗch + ( +$this +-> +f›lds + +as + +$Çme + => +$widg‘ +) + +318 +$Ïb–s +[ +$Çme +] = +$widg‘ +-> + `g‘Lab– +(); + +321  +$Ïb–s +; + +322 + } +} + +334 +public + +funùiÚ + + $£tLab– +( +$Çme +, +$v®ue + = +nuÎ +) + +336 ià(2 =ð + `func_num_¬gs +()) + +338 ià(! + `is£t +( +$this +-> +f›lds +[ +$Çme +])) + +340 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('UÇbˁأˆthÏb– oÀª uÃxi¡ªˆwidg‘ ("%s").', +$Çme +)); + +343 +$this +-> +f›lds +[ +$Çme +]-> + `£tLab– +( +$v®ue +); + +348 +·»Á +:: + `£tLab– +( +$Çme +); + +351  +$this +; + +352 + } +} + +363 +public + +funùiÚ + + $g‘Lab– +( +$Çme + = +nuÎ +) + +365 ià(1 =ð + `func_num_¬gs +()) + +367 ià(! + `is£t +( +$this +-> +f›lds +[ +$Çme +])) + +369 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('UÇbˁØg‘hÏb– oÀª uÃxi¡ªˆwidg‘ ("%s").', +$Çme +)); + +372  +$this +-> +f›lds +[ +$Çme +]-> + `g‘Lab– +(); + +377  +·»Á +:: + `g‘Lab– +(); + +379 + } +} + +388 +public + +funùiÚ + + $£tH–ps +( +¬¿y + +$h–ps +) + +390 +$this +-> +h–ps + = +$h–ps +; + +392  +$this +; + +393 + } +} + +400 +public + +funùiÚ + + $g‘H–ps +() + +402  +$this +-> +h–ps +; + +403 + } +} + +413 +public + +funùiÚ + + $£tH–p +( +$Çme +, +$h–p +) + +415 +$this +-> +h–ps +[ +$Çme +] = +$h–p +; + +417  +$this +; + +418 + } +} + +427 +public + +funùiÚ + + $g‘H–p +( +$Çme +) + +429  + `¬¿y_key_exi¡s +( +$Çme +, +$this +-> +h–ps +) ? $this->helps[$name] : ''; + +430 + } +} + +437 +public + +funùiÚ + + $g‘StyËsh“ts +() + +439 +$¡yËsh“ts + = + `¬¿y +(); + +441 + `fܗch + ( +$this +-> +f›lds + +as + +$f›ld +) + +443 +$¡yËsh“ts + = + `¬¿y_m”ge +($¡yËsh“ts, +$f›ld +-> + `g‘StyËsh“ts +()); + +446  +$¡yËsh“ts +; + +447 + } +} + +454 +public + +funùiÚ + + $g‘JavaSüts +() + +456 +$javasüts + = + `¬¿y +(); + +458 + `fܗch + ( +$this +-> +f›lds + +as + +$f›ld +) + +460 +$javasüts + = + `¬¿y_m”ge +($javasüts, +$f›ld +-> + `g‘JavaSüts +()); + +463  + `¬¿y_unique +( +$javasüts +); + +464 + } +} + +471 +public + +funùiÚ + + $ÃedsMuɝ¬tFÜm +() + +473 + `fܗch + ( +$this +-> +f›lds + +as + +$f›ld +) + +475 ià( +$f›ld +-> + `ÃedsMuɝ¬tFÜm +()) + +477  +Œue +; + +481  +çl£ +; + +482 + } +} + +496 +public + +funùiÚ + +»nd”F›ld +( +$Çme +, +$v®ue + = +nuÎ +, +$©Œibu‹s + = +¬¿y +(), +$”rÜs + = + $¬¿y +()) + +498 ià( +nuÎ + ==ð +$widg‘ + = +$this +[ +$Çme +]) + +500 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('Thf›ld‚amed "%s" dÛ nكxi¡.', +$Çme +)); + +503 ià( +$widg‘ + +š¡ªûof + +sfWidg‘FÜmSchema + && +$”rÜs + && !$”rÜ š¡ªûoà +sfV®id©ÜE¼ÜSchema +) + +505 +$”rÜs + = +Ãw + + `sfV®id©ÜE¼ÜSchema +($”rÜs-> + `g‘V®id©Ü +(), + `¬¿y +($errors)); + +509 +$þÚe + = +þÚe + +$widg‘ +; + +510 +$þÚe +-> + `£tIdFÜm© +( +$this +-> +ÝtiÚs +['id_format']); + +512  +$þÚe +-> + `»nd” +( +$this +-> + `g’”©eName +( +$Çme +), +$v®ue +, + `¬¿y_m”ge +($þÚe-> + `g‘A‰ribu‹s +(), +$©Œibu‹s +), +$”rÜs +); + +513 + } +} + +527 +public + +funùiÚ + +»nd” +( +$Çme +, +$v®ues + = +¬¿y +(), +$©Œibu‹s + =‡¼ay(), +$”rÜs + = + $¬¿y +()) + +529 ià( +nuÎ + ==ð +$v®ues +) + +531 +$v®ues + = + `¬¿y +(); + +534 ià(! + `is_¬¿y +( +$v®ues +è&& !$v®ue  +š¡ªûof + +A¼ayAcûss +) + +536 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +('You must…ass‡n‡rray of valueso„ender‡ widget schema'); + +539 +$fÜmFÜm© + = +$this +-> + `g‘FÜmFÜm©‹r +(); + +541 +$rows + = + `¬¿y +(); + +542 +$hidd’Rows + = + `¬¿y +(); + +543 +$”rÜRows + = + `¬¿y +(); + +546 + `fܗch + ( +$this +-> +pos™iÚs + +as + +$Çme +) + +548 +$widg‘ + = +$this +[ +$Çme +]; + +549 +$v®ue + = + `is£t +( +$v®ues +[ +$Çme +]è? $v®ues[$Çme] : +nuÎ +; + +550 +$”rÜ + = + `is£t +( +$”rÜs +[ +$Çme +]è? $”rÜs[$Çme] : + `¬¿y +(); + +551 +$widg‘A‰ribu‹s + = + `is£t +( +$©Œibu‹s +[ +$Çme +]è? $©Œibu‹s[$Çme] : + `¬¿y +(); + +553 ià( +$widg‘ + +š¡ªûof + +sfWidg‘FÜm + && $widg‘-> + `isHidd’ +()) + +555 +$hidd’Rows +[] = +$this +-> + `»nd”F›ld +( +$Çme +, +$v®ue +, +$widg‘A‰ribu‹s +); + +559 +$f›ld + = +$this +-> + `»nd”F›ld +( +$Çme +, +$v®ue +, +$widg‘A‰ribu‹s +, +$”rÜ +); + +562 +$Ïb– + = +$widg‘ + +š¡ªûof + +sfWidg‘FÜmSchema + ? +$this +-> + `g‘FÜmFÜm©‹r +()-> + `g’”©eLab–Name +( +$Çme +è: $this->g‘FÜmFÜm©‹r()-> + `g’”©eLab– +($name); + +563 +$”rÜ + = +$widg‘ + +š¡ªûof + +sfWidg‘FÜmSchema + ? + `¬¿y +() : $error; + +565 +$rows +[] = +$fÜmFÜm© +-> + `fÜm©Row +( +$Ïb– +, +$f›ld +, +$”rÜ +, +$this +-> + `g‘H–p +( +$Çme +)); + +569 ià( +$rows +) + +572  +$i + = 0, +$max + = + `couÁ +( +$rows +); $i < $max; $i++) + +574 +$rows +[ +$i +] = + `¡¹r +($rows[$i], + `¬¿y +('%hidd’_f›lds%' => $˜=ð +$max + - 1 ? + `im¶ode +("\n", +$hidd’Rows +) : '')); + +580 +$rows +[0] = + `im¶ode +("\n", +$hidd’Rows +); + +583  +$this +-> + `g‘FÜmFÜm©‹r +()-> + `fÜm©E¼ÜRow +($this-> + `g‘Glob®E¼Üs +( +$”rÜs +)). + `im¶ode +('', +$rows +); + +584 + } +} + +593 +public + +funùiÚ + + $g‘Glob®E¼Üs +( +$”rÜs +) + +595 +$glob®E¼Üs + = + `¬¿y +(); + +598 ià( +nuÎ + !=ð +$”rÜs +) + +600 + `fܗch + ( +$”rÜs + +as + +$Çme + => +$”rÜ +) + +602 ià(! + `is£t +( +$this +-> +f›lds +[ +$Çme +])) + +604 +$glob®E¼Üs +[] = +$”rÜ +; + +610 + `fܗch + ( +$this +-> +pos™iÚs + +as + +$Çme +) + +612 ià( +$this +[ +$Çme +] +š¡ªûof + +sfWidg‘FÜm + && $this[$Çme]-> + `isHidd’ +()) + +614 ià( + `is£t +( +$”rÜs +[ +$Çme +])) + +616 +$glob®E¼Üs +[ +$this +-> + `g‘FÜmFÜm©‹r +()-> + `g’”©eLab–Name +( +$Çme +)] = +$”rÜs +[$name]; + +621  +$glob®E¼Üs +; + +622 + } +} + +631 +public + +funùiÚ + + $g’”©eName +( +$Çme +) + +633 +$fÜm© + = +$this +-> + `g‘NameFÜm© +(); + +635 ià('[%s]' =ð + `sub¡r +( +$fÜm© +, -4è&& + `´eg_m©ch +('/^(.+?)\[(.+)\]$/', +$Çme +, +$m©ch +)) + +637 +$Çme + = + `¥rštf +('%s[%s][%s]', + `sub¡r +( +$fÜm© +, 0, -4), +$m©ch +[1], $match[2]); + +639 ià( +çl£ + !=ð +$fÜm© +) + +641 +$Çme + = + `¥rštf +( +$fÜm© +, $name); + +644 ià( +$·»Á + = +$this +-> + `g‘P¬’t +()) + +646 +$Çme + = +$·»Á +-> + `g’”©eName +($name); + +649  +$Çme +; + +650 + } +} + +659 +public + +funùiÚ + + $off£tExi¡s +( +$Çme +) + +661  + `is£t +( +$this +-> +f›lds +[ +$Çme +]); + +662 + } +} + +671 +public + +funùiÚ + + $off£tG‘ +( +$Çme +) + +673  + `is£t +( +$this +-> +f›lds +[ +$Çme +]è? $this->f›lds[$Çme] : +nuÎ +; + +674 + } +} + +684 +public + +funùiÚ + + $off£tS‘ +( +$Çme +, +$widg‘ +) + +686 ià(! +$widg‘ + +š¡ªûof + +sfWidg‘ +) + +688 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +('A field must be‡n instance of sfWidget.'); + +691 ià(! + `is£t +( +$this +-> +f›lds +[ +$Çme +])) + +693 +$this +-> +pos™iÚs +[] = ( +¡ršg +è +$Çme +; + +696 +$this +-> +f›lds +[ +$Çme +] = +þÚe + +$widg‘ +; + +697 +$this +-> +f›lds +[ +$Çme +]-> + `£tP¬’t +($this); + +699 ià( +$widg‘ + +š¡ªûof + +sfWidg‘FÜmSchema +) + +701 +$this +-> +f›lds +[ +$Çme +]-> + `£tNameFÜm© +($name.'[%s]'); + +703 + } +} + +710 +public + +funùiÚ + + $off£tUn£t +( +$Çme +) + +712 + `un£t +( +$this +-> +f›lds +[ +$Çme +]); + +713 ià( +çl£ + !=ð +$pos™iÚ + = + `¬¿y_£¬ch +(( +¡ršg +è +$Çme +, +$this +-> +pos™iÚs +)) + +715 + `un£t +( +$this +-> +pos™iÚs +[ +$pos™iÚ +]); + +717 +$this +-> +pos™iÚs + = + `¬¿y_v®ues +($this->positions); + +719 + } +} + +726 +public + +funùiÚ + + $g‘F›lds +() + +728  +$this +-> +f›lds +; + +729 + } +} + +738 +public + +funùiÚ + + $g‘Pos™iÚs +() + +740  +$this +-> +pos™iÚs +; + +741 + } +} + +754 +public + +funùiÚ + + $£tPos™iÚs +( +¬¿y + +$pos™iÚs +) + +756 +$pos™iÚs + = + `¬¿y_unique +( + `¬¿y_v®ues +($positions)); + +757 +$cu¼’t + = + `¬¿y_keys +( +$this +-> +f›lds +); + +759 ià( +$diff + = + `¬¿y_diff +( +$pos™iÚs +, +$cu¼’t +)) + +761 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +('Widg‘ schem¨dÛ nÙ inþudthfÞlowšg f›ld(s): '. + `im¶ode +(', ', +$diff +)); + +764 ià( +$diff + = + `¬¿y_diff +( +$cu¼’t +, +$pos™iÚs +)) + +766 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +('Pos™iÚ ¬¿y mu¡ inþud®Èf›lds. Missšg: '. + `im¶ode +(', ', +$diff +)); + +769 + `fܗch + ( +$pos™iÚs + +as + & +$pos™iÚ +) + +771 +$pos™iÚ + = ( +¡ršg +) $position; + +774 +$this +-> +pos™iÚs + = +$pos™iÚs +; + +776  +$this +; + +777 + } +} + +798 +public + +funùiÚ + + $moveF›ld +( +$f›ld +, +$aùiÚ +, +$pivÙ + = +nuÎ +) + +800 +$f›ld + = ( +¡ršg +) $field; + +801 ià( +çl£ + ==ð +$f›ldPos™iÚ + = + `¬¿y_£¬ch +( +$f›ld +, +$this +-> +pos™iÚs +)) + +803 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('F›ld "%s" dÛ nكxi¡.', +$f›ld +)); + +805 + `un£t +( +$this +-> +pos™iÚs +[ +$f›ldPos™iÚ +]); + +806 +$this +-> +pos™iÚs + = + `¬¿y_v®ues +($this->positions); + +808 ià( +nuÎ + !=ð +$pivÙ +) + +810 +$pivÙ + = ( +¡ršg +) $pivot; + +811 ià( +çl£ + ==ð +$pivÙPos™iÚ + = + `¬¿y_£¬ch +( +$pivÙ +, +$this +-> +pos™iÚs +)) + +813 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('F›ld "%s" dÛ nكxi¡.', +$pivÙ +)); + +817  +$aùiÚ +) + +819  +sfWidg‘FÜmSchema +:: +FIRST +: + +820 + `¬¿y_unshiá +( +$this +-> +pos™iÚs +, +$f›ld +); + +822  +sfWidg‘FÜmSchema +:: +LAST +: + +823 + `¬¿y_push +( +$this +-> +pos™iÚs +, +$f›ld +); + +825  +sfWidg‘FÜmSchema +:: +BEFORE +: + +826 ià( +nuÎ + ==ð +$pivÙ +) + +828 +throw + +Ãw + + `LogicExû±iÚ +( + `¥rštf +('UÇbˁØmovf›ld "%s" w™houˆ¨»Ïtivf›ld.', +$f›ld +)); + +830 +$this +-> +pos™iÚs + = + `¬¿y_m”ge +( + +831 + `¬¿y_¦iû +( +$this +-> +pos™iÚs +, 0, +$pivÙPos™iÚ +), + +832 + `¬¿y +( +$f›ld +), + +833 + `¬¿y_¦iû +( +$this +-> +pos™iÚs +, +$pivÙPos™iÚ +) + +836  +sfWidg‘FÜmSchema +:: +AFTER +: + +837 ià( +nuÎ + ==ð +$pivÙ +) + +839 +throw + +Ãw + + `LogicExû±iÚ +( + `¥rštf +('UÇbˁØmovf›ld "%s" w™houˆ¨»Ïtivf›ld.', +$f›ld +)); + +841 +$this +-> +pos™iÚs + = + `¬¿y_m”ge +( + +842 + `¬¿y_¦iû +( +$this +-> +pos™iÚs +, 0, +$pivÙPos™iÚ + + 1), + +843 + `¬¿y +( +$f›ld +), + +844 + `¬¿y_¦iû +( +$this +-> +pos™iÚs +, +$pivÙPos™iÚ + + 1) + +848 +throw + +Ãw + + `LogicExû±iÚ +( + `¥rštf +('UnknowÀmovÝ”©iÚ fÜ f›ld "%s".', +$f›ld +)); + +850 + } +} + +852 +public + +funùiÚ + + $__þÚe +() + +854 + `fܗch + ( +$this +-> +f›lds + +as + +$Çme + => +$f›ld +) + +857 +$this +[ +$Çme +] = +$f›ld +; + +860 + `fܗch + ( +$this +-> +fÜmFÜm©‹rs + +as + & +$fÜmFÜm©‹r +) + +862 +$fÜmFÜm©‹r + = +þÚe + $formFormatter; + +863 +$fÜmFÜm©‹r +-> + `£tWidg‘Schema +( +$this +); + +865 + } +} + + @lib/vendor/symfony/lib/widget/sfWidgetFormSchemaDecorator.class.php + +1 +widg‘ + = +$widg‘ +; + +36 +$this +-> +decÜ©Ü + = +$decÜ©Ü +; + +38 +·»Á +:: + `__cÚ¡ruù +(); + +46 +public + +funùiÚ + + $g‘Widg‘ +() + +48  +$this +-> +widg‘ +; + +49 + } +} + +61 +public + +funùiÚ + +»nd” +( +$Çme +, +$v®ues + = +¬¿y +(), +$©Œibu‹s + =‡¼ay(), +$”rÜs + = + $¬¿y +()) + +63  + `¡¹r +( +$this +-> +decÜ©Ü +, + `¬¿y +('%cڋÁ%' => $this-> +widg‘ +-> + `»nd” +( +$Çme +, +$v®ues +, +$©Œibu‹s +, +$”rÜs +))); + +64 + } +} + +69 +public + +funùiÚ + + $addFÜmFÜm©‹r +( +$Çme +, +sfWidg‘FÜmSchemaFÜm©‹r + +$fÜm©‹r +) + +71 +$this +-> +widg‘ +-> + `addFÜmFÜm©‹r +( +$Çme +, +$fÜm©‹r +); + +73  +$this +; + +74 + } +} + +79 +public + +funùiÚ + + $g‘FÜmFÜm©‹rs +() + +81  +$this +-> +widg‘ +-> + `g‘FÜmFÜm©‹rs +(); + +82 + } +} + +87 +public + +funùiÚ + + $£tFÜmFÜm©‹rName +( +$Çme +) + +89 +$this +-> +widg‘ +-> + `£tFÜmFÜm©‹rName +( +$Çme +); + +91  +$this +; + +92 + } +} + +97 +public + +funùiÚ + + $g‘FÜmFÜm©‹rName +() + +99  +$this +-> +widg‘ +-> + `g‘FÜmFÜm©‹rName +(); + +100 + } +} + +105 +public + +funùiÚ + + $g‘FÜmFÜm©‹r +() + +107  +$this +-> +widg‘ +-> + `g‘FÜmFÜm©‹r +(); + +108 + } +} + +113 +public + +funùiÚ + + $£tNameFÜm© +( +$fÜm© +) + +115 +$this +-> +widg‘ +-> + `£tNameFÜm© +( +$fÜm© +); + +117  +$this +; + +118 + } +} + +123 +public + +funùiÚ + + $g‘NameFÜm© +() + +125  +$this +-> +widg‘ +-> + `g‘NameFÜm© +(); + +126 + } +} + +131 +public + +funùiÚ + + $£tLab–s +( +¬¿y + +$Ïb–s +) + +133 +$this +-> +widg‘ +-> + `£tLab–s +( +$Ïb–s +); + +135  +$this +; + +136 + } +} + +141 +public + +funùiÚ + + $g‘Lab–s +() + +143  +$this +-> +widg‘ +-> + `g‘Lab–s +(); + +144 + } +} + +149 +public + +funùiÚ + + $£tLab– +( +$Çme +, +$v®ue + = +nuÎ +) + +151 ià(2 =ð + `func_num_¬gs +()) + +153 +$this +-> +widg‘ +-> + `£tLab– +( +$Çme +, +$v®ue +); + +157 +$this +-> +widg‘ +-> + `£tLab– +( +$Çme +); + +160  +$this +; + +161 + } +} + +166 +public + +funùiÚ + + $g‘Lab– +( +$Çme + = +nuÎ +) + +168  1 =ð + `func_num_¬gs +(è? +$this +-> +widg‘ +-> + `g‘Lab– +( +$Çme +) : $this->widget->getLabel(); + +169 + } +} + +174 +public + +funùiÚ + + $£tH–ps +( +¬¿y + +$h–ps +) + +176 +$this +-> +widg‘ +-> + `£tH–ps +( +$h–ps +); + +178  +$this +; + +179 + } +} + +184 +public + +funùiÚ + + $g‘H–ps +() + +186  +$this +-> +widg‘ +-> + `g‘H–ps +(); + +187 + } +} + +192 +public + +funùiÚ + + $£tH–p +( +$Çme +, +$h–p +) + +194 +$this +-> +widg‘ +-> + `£tH–p +( +$Çme +, +$h–p +); + +196  +$this +; + +197 + } +} + +202 +public + +funùiÚ + + $g‘H–p +( +$Çme +) + +204  +$this +-> +widg‘ +-> + `g‘H–p +( +$Çme +); + +205 + } +} + +212 +public + +funùiÚ + + $g‘StyËsh“ts +() + +214  +$this +-> +widg‘ +-> + `g‘StyËsh“ts +(); + +215 + } +} + +222 +public + +funùiÚ + + $g‘JavaSüts +() + +224  +$this +-> +widg‘ +-> + `g‘JavaSüts +(); + +225 + } +} + +230 +public + +funùiÚ + + $ÃedsMuɝ¬tFÜm +() + +232  +$this +-> +widg‘ +-> + `ÃedsMuɝ¬tFÜm +(); + +233 + } +} + +238 +public + +funùiÚ + +»nd”F›ld +( +$Çme +, +$v®ue + = +nuÎ +, +$©Œibu‹s + = +¬¿y +(), +$”rÜs + = + $¬¿y +()) + +240  +$this +-> +widg‘ +-> + `»nd”F›ld +( +$Çme +, +$v®ue +, +$©Œibu‹s +, +$”rÜs +); + +241 + } +} + +246 +public + +funùiÚ + + $g’”©eLab– +( +$Çme +) + +248  +$this +-> +widg‘ +-> + `g‘FÜmFÜm©‹r +()-> + `g’”©eLab– +( +$Çme +); + +249 + } +} + +254 +public + +funùiÚ + + $g’”©eLab–Name +( +$Çme +) + +256  +$this +-> +widg‘ +-> + `g‘FÜmFÜm©‹r +()-> + `g’”©eLab–Name +( +$Çme +); + +257 + } +} + +262 +public + +funùiÚ + + $g’”©eName +( +$Çme +) + +264  +$this +-> +widg‘ +-> + `g’”©eName +( +$Çme +); + +265 + } +} + +270 +public + +funùiÚ + + $g‘P¬’t +() + +272  +$this +-> +widg‘ +-> + `g‘P¬’t +(); + +273 + } +} + +278 +public + +funùiÚ + + $£tP¬’t +( +sfWidg‘FÜmSchema + +$·»Á + = +nuÎ +) + +280 +$this +-> +widg‘ +-> + `£tP¬’t +( +$·»Á +); + +282  +$this +; + +283 + } +} + +288 +public + +funùiÚ + + $g‘F›lds +() + +290  +$this +-> +widg‘ +-> + `g‘F›lds +(); + +291 + } +} + +296 +public + +funùiÚ + + $g‘Pos™iÚs +() + +298  +$this +-> +widg‘ +-> + `g‘Pos™iÚs +(); + +299 + } +} + +304 +public + +funùiÚ + + $£tPos™iÚs +( +¬¿y + +$pos™iÚs +) + +306 +$this +-> +widg‘ +-> + `£tPos™iÚs +( +$pos™iÚs +); + +308  +$this +; + +309 + } +} + +314 +public + +funùiÚ + + $moveF›ld +( +$f›ld +, +$aùiÚ +, +$pivÙ + = +nuÎ +) + +316  +$this +-> +widg‘ +-> + `moveF›ld +( +$f›ld +, +$aùiÚ +, +$pivÙ +); + +317 + } +} + +322 +public + +funùiÚ + + $off£tExi¡s +( +$Çme +) + +324  + `is£t +( +$this +-> +widg‘ +[ +$Çme +]); + +325 + } +} + +330 +public + +funùiÚ + + $off£tG‘ +( +$Çme +) + +332  +$this +-> +widg‘ +[ +$Çme +]; + +333 + } +} + +338 +public + +funùiÚ + + $off£tS‘ +( +$Çme +, +$widg‘ +) + +340 +$this +-> +widg‘ +[ +$Çme +] = +$widg‘ +; + +341 + } +} + +346 +public + +funùiÚ + + $off£tUn£t +( +$Çme +) + +348 + `un£t +( +$this +-> +widg‘ +[ +$Çme +]); + +349 + } +} + +351 +public + +funùiÚ + + $__þÚe +() + +353 +$this +-> +widg‘ + = +þÚe + $this->widget; + +354 + } +} + + @lib/vendor/symfony/lib/widget/sfWidgetFormSchemaForEach.class.php + +1 \n%errors% \n", + +29 + m$”rÜRowFÜm©InARow + = "
  • %error%
  • \n", + +30 + m$ÇmedE¼ÜRowFÜm©InARow + = "
  • %name%: %error%
  • \n", + +31 + m$decÜ©ÜFÜm© + = '', + +32 + m$widg‘Schema + = +nuÎ +, + +33 + m$Œª¦©iÚC©®ogue + = +nuÎ +; + +40 +public + +funùiÚ + + $__cÚ¡ruù +( +sfWidg‘FÜmSchema + +$widg‘Schema +) + +42 +$this +-> + `£tWidg‘Schema +( +$widg‘Schema +); + +45 +public + +funùiÚ + + `fÜm©Row +( +$Ïb– +, +$f›ld +, +$”rÜs + = + `¬¿y +(), +$h–p + = '', +$hidd’F›lds + = +nuÎ +) + +47  + `¡¹r +( +$this +-> + `g‘RowFÜm© +(), + `¬¿y +( + +48 '%Ïb–%' => +$Ïb– +, + +49 '%f›ld%' => +$f›ld +, + +50 '%”rÜ%' => +$this +-> + `fÜm©E¼ÜsFÜRow +( +$”rÜs +), + +51 '%h–p%' => +$this +-> + `fÜm©H–p +( +$h–p +), + +52 '%hidd’_f›lds%' => +nuÎ + ==ð +$hidd’F›lds + ? '%hidden_fields%' : $hiddenFields, + +54 + } +} + +63 +public + +funùiÚ + +Œª¦©e +( +$subjeù +, +$·¿m‘”s + = + $¬¿y +()) + +65 ià( +çl£ + ==ð +$subjeù +) + +67  +çl£ +; + +70 ià( +nuÎ + ==ð +£lf +:: +$Œª¦©iÚC®ÏbË +) + +73 + `fܗch + ( +$·¿m‘”s + +as + +$key + => +$v®ue +) + +75 ià( + `is_objeù +( +$v®ue +è&& + `m‘hod_exi¡s +($value, '__toString')) + +77 +$·¿m‘”s +[ +$key +] = +$v®ue +-> + `__toSŒšg +(); + +81  + `¡¹r +( +$subjeù +, +$·¿m‘”s +); + +84 +$ÿlogue + = +$this +-> + `g‘T¿n¦©iÚC©®ogue +(); + +86 ià( +£lf +:: +$Œª¦©iÚC®ÏbË + +š¡ªûof + +sfC®ÏbË +) + +88  +£lf +:: +$Œª¦©iÚC®ÏbË +-> + `ÿÎ +( +$subjeù +, +$·¿m‘”s +, +$ÿlogue +); + +91  + `ÿÎ_u£r_func +( +£lf +:: +$Œª¦©iÚC®ÏbË +, +$subjeù +, +$·¿m‘”s +, +$ÿlogue +); + +92 + } +} + +99  +public + +funùiÚ + + $g‘T¿n¦©iÚC®ÏbË +() + +101  +£lf +:: +$Œª¦©iÚC®ÏbË +; + +102 + } +} + +111  +public + +funùiÚ + + $£tT¿n¦©iÚC®ÏbË +( +$ÿÎabË +) + +113 ià(! +$ÿÎabË + +š¡ªûof + +sfC®ÏbË + && ! + `is_ÿÎabË +($callable)) + +115 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +('Provided i18n callable should beƒither‡n instance of sfCallable or‡ valid PHP callable'); + +118 +£lf +:: +$Œª¦©iÚC®ÏbË + = +$ÿÎabË +; + +119 + } +} + +121 +public + +funùiÚ + + $fÜm©H–p +( +$h–p +) + +123 ià(! +$h–p +) + +128  + `¡¹r +( +$this +-> + `g‘H–pFÜm© +(), + `¬¿y +('%h–p%' => $this-> + `Œª¦©e +( +$h–p +))); + +129 + } +} + +131 +public + +funùiÚ + + $fÜm©E¼ÜRow +( +$”rÜs +) + +133 ià( +nuÎ + ==ð +$”rÜs + || !$errors) + +138  + `¡¹r +( +$this +-> + `g‘E¼ÜRowFÜm© +(), + `¬¿y +('%”rÜs%' => $this-> + `fÜm©E¼ÜsFÜRow +( +$”rÜs +))); + +139 + } +} + +141 +public + +funùiÚ + + $fÜm©E¼ÜsFÜRow +( +$”rÜs +) + +143 ià( +nuÎ + ==ð +$”rÜs + || !$errors) + +148 ià(! + `is_¬¿y +( +$”rÜs +)) + +150 +$”rÜs + = + `¬¿y +($errors); + +153  + `¡¹r +( +$this +-> + `g‘E¼ÜLi¡FÜm©InARow +(), + `¬¿y +('%”rÜs%' => + `im¶ode +('', $this-> + `uÂe¡E¼Üs +( +$”rÜs +)))); + +154 + } +} + +164 +public + +funùiÚ + +g’”©eLab– +( +$Çme +, +$©Œibu‹s + = + $¬¿y +()) + +166 +$Ïb–Name + = +$this +-> + `g’”©eLab–Name +( +$Çme +); + +168 ià( +çl£ + ==ð +$Ïb–Name +) + +173 ià(! + `is£t +( +$©Œibu‹s +['for'])) + +175 +$©Œibu‹s +['fÜ'] = +$this +-> +widg‘Schema +-> + `g’”©eId +($this->widg‘Schema-> + `g’”©eName +( +$Çme +)); + +178  +$this +-> +widg‘Schema +-> + `»nd”CڋÁTag +('Ïb–', +$Ïb–Name +, +$©Œibu‹s +); + +179 + } +} + +188 +public + +funùiÚ + + $g’”©eLab–Name +( +$Çme +) + +190 +$Ïb– + = +$this +-> +widg‘Schema +-> + `g‘Lab– +( +$Çme +); + +192 ià(! +$Ïb– + && +çl£ + !== $label) + +194 +$Ïb– + = + `¡r_»¶aû +('_', ' ', + `ucfœ¡ +('_id' =ð + `sub¡r +( +$Çme +, -3) ? substr($name, 0, -3) : $name)); + +197  +$this +-> + `Œª¦©e +( +$Ïb– +); + +198 + } +} + +205 +public + +funùiÚ + + $g‘T¿n¦©iÚC©®ogue +() + +207  +$this +-> +Œª¦©iÚC©®ogue +; + +208 + } +} + +217 +public + +funùiÚ + + $£tT¿n¦©iÚC©®ogue +( +$ÿlogue +) + +219 ià(! + `is_¡ršg +( +$ÿlogue +)) + +221 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +('Catalogue‚ame must be‡ string'); + +224 +$this +-> +Œª¦©iÚC©®ogue + = +$ÿlogue +; + +225 + } +} + +227 +´Ùeùed + +funùiÚ + +uÂe¡E¼Üs +( +$”rÜs +, +$´efix + = '') + +229 +$ÃwE¼Üs + = +¬¿y +(); + +231 +fܗch + ( +$”rÜs + +as + +$Çme + => +$”rÜ +) + +233 ià( +$”rÜ + +š¡ªûof + +A¼ayAcûss + || +is_¬¿y +($error)) + +235 +$ÃwE¼Üs + = +¬¿y_m”ge +($ÃwE¼Üs, +$this +-> +uÂe¡E¼Üs +( +$”rÜ +, ( +$´efix + ? $´efix.' > ' : ''). +$Çme +)); + +239 ià( +$”rÜ + +š¡ªûof + + gsfV®id©ÜE¼Ü +) + +241 + g$”r + = +$this +-> +Œª¦©e +( +$”rÜ +-> +g‘Mes§geFÜm© +(), $”rÜ-> +g‘Argum’ts +()); + +245 + g$”r + = +$this +-> +Œª¦©e +( +$”rÜ +); + +248 ià(! +is_š‹g” +( +$Çme +)) + +250 + g$ÃwE¼Üs +[] = +¡¹r +( +$this +-> +g‘NamedE¼ÜRowFÜm©InARow +(), +¬¿y +('%”rÜ%' => +$”r +, '%Çme%' => ( +$´efix + ? $´efix.' > ' : ''). +$Çme +)); + +254 + g$ÃwE¼Üs +[] = +¡¹r +( +$this +-> +g‘E¼ÜRowFÜm©InARow +(), +¬¿y +('%”rÜ%' => +$”r +)); + +259  + g$ÃwE¼Üs +; + +262 +public + +funùiÚ + + $£tRowFÜm© +( +$fÜm© +) + +264 +$this +-> +rowFÜm© + = +$fÜm© +; + +265 + } +} + +267 +public + +funùiÚ + + $g‘RowFÜm© +() + +269  +$this +-> +rowFÜm© +; + +270 + } +} + +272 +public + +funùiÚ + + $£tE¼ÜRowFÜm© +( +$fÜm© +) + +274 +$this +-> +”rÜRowFÜm© + = +$fÜm© +; + +275 + } +} + +277 +public + +funùiÚ + + $g‘E¼ÜRowFÜm© +() + +279  +$this +-> +”rÜRowFÜm© +; + +280 + } +} + +282 +public + +funùiÚ + + $£tE¼ÜLi¡FÜm©InARow +( +$fÜm© +) + +284 +$this +-> +”rÜLi¡FÜm©InARow + = +$fÜm© +; + +285 + } +} + +287 +public + +funùiÚ + + $g‘E¼ÜLi¡FÜm©InARow +() + +289  +$this +-> +”rÜLi¡FÜm©InARow +; + +290 + } +} + +292 +public + +funùiÚ + + $£tE¼ÜRowFÜm©InARow +( +$fÜm© +) + +294 +$this +-> +”rÜRowFÜm©InARow + = +$fÜm© +; + +295 + } +} + +297 +public + +funùiÚ + + $g‘E¼ÜRowFÜm©InARow +() + +299  +$this +-> +”rÜRowFÜm©InARow +; + +300 + } +} + +302 +public + +funùiÚ + + $£tNamedE¼ÜRowFÜm©InARow +( +$fÜm© +) + +304 +$this +-> +ÇmedE¼ÜRowFÜm©InARow + = +$fÜm© +; + +305 + } +} + +307 +public + +funùiÚ + + $g‘NamedE¼ÜRowFÜm©InARow +() + +309  +$this +-> +ÇmedE¼ÜRowFÜm©InARow +; + +310 + } +} + +312 +public + +funùiÚ + + $£tDecÜ©ÜFÜm© +( +$fÜm© +) + +314 +$this +-> +decÜ©ÜFÜm© + = +$fÜm© +; + +315 + } +} + +317 +public + +funùiÚ + + $g‘DecÜ©ÜFÜm© +() + +319  +$this +-> +decÜ©ÜFÜm© +; + +320 + } +} + +322 +public + +funùiÚ + + $£tH–pFÜm© +( +$fÜm© +) + +324 +$this +-> +h–pFÜm© + = +$fÜm© +; + +325 + } +} + +327 +public + +funùiÚ + + $g‘H–pFÜm© +() + +329  +$this +-> +h–pFÜm© +; + +330 + } +} + +337 +public + +funùiÚ + + $£tWidg‘Schema +( +sfWidg‘FÜmSchema + +$widg‘Schema +) + +339 +$this +-> +widg‘Schema + = +$widg‘Schema +; + +340 + } +} + +342 +public + +funùiÚ + + $g‘Widg‘Schema +() + +344  +$this +-> +widg‘Schema +; + +345 + } +} + + @lib/vendor/symfony/lib/widget/sfWidgetFormSchemaFormatterList.class.php + +1 \n %error%%label%\n %field%%help%\n%hidden_fields%\n", + +23 + m$”rÜRowFÜm© + = "
  • \n%errors%
  • \n", + +24 + m$h–pFÜm© + = '
    %help%', + +25 + m$decÜ©ÜFÜm© + = "
      \n %content%
    "; + + @lib/vendor/symfony/lib/widget/sfWidgetFormSchemaFormatterTable.class.php + +1 \n
    \n \n\n", + +23 + m$”rÜRowFÜm© + = "\n", + +24 + m$h–pFÜm© + = '
    %help%', + +25 + m$decÜ©ÜFÜm© + = "
    %label%%error%%field%%help%%hidden_fields%
    \n%errors%
    \n %content%
    "; + + @lib/vendor/symfony/lib/widget/sfWidgetFormSelect.class.php + +1 + `addO±iÚ +('muɝË', +çl£ +); + +53 +public + +funùiÚ + + `»nd” +( +$Çme +, +$v®ue + = +nuÎ +, +$©Œibu‹s + = + `¬¿y +(), +$”rÜs + = + $¬¿y +()) + +55 ià( +$this +-> + `g‘O±iÚ +('multiple')) + +57 +$©Œibu‹s +['multiple'] = 'multiple'; + +59 ià('[]' !ð + `sub¡r +( +$Çme +, -2)) + +61 +$Çme + .= '[]'; + +65 +$choiûs + = +$this +-> + `g‘Choiûs +(); + +67  +$this +-> + `»nd”CڋÁTag +('£Ëù', "\n". + `im¶ode +("\n", $this-> + `g‘O±iÚsFÜS–eù +( +$v®ue +, +$choiûs +))."\n", + `¬¿y_m”ge +( + `¬¿y +('Çme' => +$Çme +), +$©Œibu‹s +)); + +68 + } +} + +78 +´Ùeùed + +funùiÚ + + $g‘O±iÚsFÜS–eù +( +$v®ue +, +$choiûs +) + +80 +$mašA‰ribu‹s + = +$this +-> +©Œibu‹s +; + +81 +$this +-> +©Œibu‹s + = + `¬¿y +(); + +83 ià(! + `is_¬¿y +( +$v®ue +)) + +85 +$v®ue + = + `¬¿y +($value); + +88 +$v®ue + = + `¬¿y_m­ +('¡rv®', + `¬¿y_v®ues +($value)); + +89 +$v®ue_£t + = + `¬¿y_æ +( +$v®ue +); + +91 +$ÝtiÚs + = + `¬¿y +(); + +92 + `fܗch + ( +$choiûs + +as + +$key + => +$ÝtiÚ +) + +94 ià( + `is_¬¿y +( +$ÝtiÚ +)) + +96 +$ÝtiÚs +[] = +$this +-> + `»nd”CڋÁTag +('Ýtgroup', + `im¶ode +("\n", $this-> + `g‘O±iÚsFÜS–eù +( +$v®ue +, +$ÝtiÚ +)), + `¬¿y +('Ïb–' => +£lf +:: + `esÿ³Onû +( +$key +))); + +100 +$©Œibu‹s + = + `¬¿y +('v®ue' => +£lf +:: + `esÿ³Onû +( +$key +)); + +101 ià( + `is£t +( +$v®ue_£t +[ + `¡rv® +( +$key +)])) + +103 +$©Œibu‹s +['selected'] = 'selected'; + +106 +$ÝtiÚs +[] = +$this +-> + `»nd”CڋÁTag +('ÝtiÚ', +£lf +:: + `esÿ³Onû +( +$ÝtiÚ +), +$©Œibu‹s +); + +110 +$this +-> +©Œibu‹s + = +$mašA‰ribu‹s +; + +112  +$ÝtiÚs +; + +113 + } +} + + @lib/vendor/symfony/lib/widget/sfWidgetFormSelectCheckbox.class.php + +1 + `addO±iÚ +('class', 'checkbox_list'); + +44 +$this +-> + `addO±iÚ +('label_separator', ' '); + +45 +$this +-> + `addO±iÚ +('separator', "\n"); + +46 +$this +-> + `addO±iÚ +('fÜm©‹r', + `¬¿y +($this, 'formatter')); + +47 +$this +-> + `addO±iÚ +('template', '%group% %options%'); + +62 +public + +funùiÚ + + `»nd” +( +$Çme +, +$v®ue + = +nuÎ +, +$©Œibu‹s + = + `¬¿y +(), +$”rÜs + = + $¬¿y +()) + +64 ià('[]' !ð + `sub¡r +( +$Çme +, -2)) + +66 +$Çme + .= '[]'; + +69 ià( +nuÎ + ==ð +$v®ue +) + +71 +$v®ue + = + `¬¿y +(); + +74 +$choiûs + = +$this +-> + `g‘Choiûs +(); + +77 ià( + `couÁ +( +$choiûs +è&& + `is_¬¿y +( + `cu¼’t +($choices))) + +79 +$·¹s + = + `¬¿y +(); + +80 + `fܗch + ( +$choiûs + +as + +$key + => +$ÝtiÚ +) + +82 +$·¹s +[] = + `¡¹r +( +$this +-> + `g‘O±iÚ +('‹m¶©e'), + `¬¿y +('%group%' => +$key +, '%ÝtiÚs%' => $this-> + `fÜm©Choiûs +( +$Çme +, +$v®ue +, +$ÝtiÚ +, +$©Œibu‹s +))); + +85  + `im¶ode +("\n", +$·¹s +); + +89  +$this +-> + `fÜm©Choiûs +( +$Çme +, +$v®ue +, +$choiûs +, +$©Œibu‹s +); + +91 + } +} + +93 +´Ùeùed + +funùiÚ + + $fÜm©Choiûs +( +$Çme +, +$v®ue +, +$choiûs +, +$©Œibu‹s +) + +95 +$šputs + = + `¬¿y +(); + +96 + `fܗch + ( +$choiûs + +as + +$key + => +$ÝtiÚ +) + +98 +$ba£A‰ribu‹s + = + `¬¿y +( + +99 'Çme' => +$Çme +, + +101 'v®ue' => +£lf +:: + `esÿ³Onû +( +$key +), + +102 'id' => +$id + = +$this +-> + `g’”©eId +( +$Çme +, +£lf +:: + `esÿ³Onû +( +$key +)), + +105 ià(( + `is_¬¿y +( +$v®ue +è&& + `š_¬¿y +( + `¡rv® +( +$key +), $v®ue)è|| ( + `is_¡ršg +($value) && strval($key) == strval($value))) + +107 +$ba£A‰ribu‹s +['checked'] = 'checked'; + +110 +$šputs +[ +$id +] = + `¬¿y +( + +111 'šput' => +$this +-> + `»nd”Tag +('šput', + `¬¿y_m”ge +( +$ba£A‰ribu‹s +, +$©Œibu‹s +)), + +112 'Ïb–' => +$this +-> + `»nd”CڋÁTag +('Ïb–', +£lf +:: + `esÿ³Onû +( +$ÝtiÚ +), + `¬¿y +('fÜ' => +$id +)), + +116  + `ÿÎ_u£r_func +( +$this +-> + `g‘O±iÚ +('fÜm©‹r'), $this, +$šputs +); + +117 + } +} + +119 +public + +funùiÚ + + $fÜm©‹r +( +$widg‘ +, +$šputs +) + +121 +$rows + = + `¬¿y +(); + +122 + `fܗch + ( +$šputs + +as + +$šput +) + +124 +$rows +[] = +$this +-> + `»nd”CڋÁTag +('li', +$šput +['šput'].$this-> + `g‘O±iÚ +('label_separator').$input['label']); + +127  ! +$rows + ? '' : +$this +-> + `»nd”CڋÁTag +('ul', + `im¶ode +($this-> + `g‘O±iÚ +('£·¿tÜ'), $rows), + `¬¿y +('class' => $this->getOption('class'))); + +128 + } +} + + @lib/vendor/symfony/lib/widget/sfWidgetFormSelectMany.class.php + +1 + `£tO±iÚ +('muɝË', +Œue +); + +35 + } +} + + @lib/vendor/symfony/lib/widget/sfWidgetFormSelectRadio.class.php + +1 + `addO±iÚ +('class', 'radio_list'); + +44 +$this +-> + `addO±iÚ +('label_separator', ' '); + +45 +$this +-> + `addO±iÚ +('separator', "\n"); + +46 +$this +-> + `addO±iÚ +('fÜm©‹r', + `¬¿y +($this, 'formatter')); + +47 +$this +-> + `addO±iÚ +('template', '%group% %options%'); + +62 +public + +funùiÚ + + `»nd” +( +$Çme +, +$v®ue + = +nuÎ +, +$©Œibu‹s + = + `¬¿y +(), +$”rÜs + = + $¬¿y +()) + +64 ià('[]' !ð + `sub¡r +( +$Çme +, -2)) + +66 +$Çme + .= '[]'; + +69 +$choiûs + = +$this +-> + `g‘Choiûs +(); + +72 ià( + `couÁ +( +$choiûs +è&& + `is_¬¿y +( + `Ãxt +($choices))) + +74 +$·¹s + = + `¬¿y +(); + +75 + `fܗch + ( +$choiûs + +as + +$key + => +$ÝtiÚ +) + +77 +$·¹s +[] = + `¡¹r +( +$this +-> + `g‘O±iÚ +('‹m¶©e'), + `¬¿y +('%group%' => +$key +, '%ÝtiÚs%' => $this-> + `fÜm©Choiûs +( +$Çme +, +$v®ue +, +$ÝtiÚ +, +$©Œibu‹s +))); + +80  + `im¶ode +("\n", +$·¹s +); + +84  +$this +-> + `fÜm©Choiûs +( +$Çme +, +$v®ue +, +$choiûs +, +$©Œibu‹s +); + +86 + } +} + +88 +´Ùeùed + +funùiÚ + + $fÜm©Choiûs +( +$Çme +, +$v®ue +, +$choiûs +, +$©Œibu‹s +) + +90 +$šputs + = + `¬¿y +(); + +91 + `fܗch + ( +$choiûs + +as + +$key + => +$ÝtiÚ +) + +93 +$ba£A‰ribu‹s + = + `¬¿y +( + +94 'Çme' => + `sub¡r +( +$Çme +, 0, -2), + +96 'v®ue' => +£lf +:: + `esÿ³Onû +( +$key +), + +97 'id' => +$id + = +$this +-> + `g’”©eId +( +$Çme +, +£lf +:: + `esÿ³Onû +( +$key +)), + +100 ià( + `¡rv® +( +$key +è=ð¡rv®( +$v®ue + ==ð +çl£ + ? 0 : $value)) + +102 +$ba£A‰ribu‹s +['checked'] = 'checked'; + +105 +$šputs +[ +$id +] = + `¬¿y +( + +106 'šput' => +$this +-> + `»nd”Tag +('šput', + `¬¿y_m”ge +( +$ba£A‰ribu‹s +, +$©Œibu‹s +)), + +107 'Ïb–' => +$this +-> + `»nd”CڋÁTag +('Ïb–', +£lf +:: + `esÿ³Onû +( +$ÝtiÚ +), + `¬¿y +('fÜ' => +$id +)), + +111  + `ÿÎ_u£r_func +( +$this +-> + `g‘O±iÚ +('fÜm©‹r'), $this, +$šputs +); + +112 + } +} + +114 +public + +funùiÚ + + $fÜm©‹r +( +$widg‘ +, +$šputs +) + +116 +$rows + = + `¬¿y +(); + +117 + `fܗch + ( +$šputs + +as + +$šput +) + +119 +$rows +[] = +$this +-> + `»nd”CڋÁTag +('li', +$šput +['šput'].$this-> + `g‘O±iÚ +('label_separator').$input['label']); + +122  ! +$rows + ? '' : +$this +-> + `»nd”CڋÁTag +('ul', + `im¶ode +($this-> + `g‘O±iÚ +('£·¿tÜ'), $rows), + `¬¿y +('class' => $this->getOption('class'))); + +123 + } +} + + @lib/vendor/symfony/lib/widget/sfWidgetFormTextarea.class.php + +1 + `£tA‰ribu‹ +('rows', 4); + +32 +$this +-> + `£tA‰ribu‹ +('cols', 30); + +47 +public + +funùiÚ + + `»nd” +( +$Çme +, +$v®ue + = +nuÎ +, +$©Œibu‹s + = + `¬¿y +(), +$”rÜs + = + $¬¿y +()) + +49  +$this +-> + `»nd”CڋÁTag +('‹x»a', +£lf +:: + `esÿ³Onû +( +$v®ue +), + `¬¿y_m”ge +( + `¬¿y +('Çme' => +$Çme +), +$©Œibu‹s +)); + +50 + } +} + + @lib/vendor/symfony/lib/widget/sfWidgetFormTime.class.php + +1 + `addO±iÚ +('format', '%hour%:%minute%:%second%'); + +43 +$this +-> + `addO±iÚ +('format_without_seconds', '%hour%:%minute%'); + +44 +$this +-> + `addO±iÚ +('w™h_£cÚds', +çl£ +); + +45 +$this +-> + `addO±iÚ +('hours', +·»Á +:: + `g’”©eTwoCh¬sRªge +(0, 23)); + +46 +$this +-> + `addO±iÚ +('mšu‹s', +·»Á +:: + `g’”©eTwoCh¬sRªge +(0, 59)); + +47 +$this +-> + `addO±iÚ +('£cÚds', +·»Á +:: + `g’”©eTwoCh¬sRªge +(0, 59)); + +49 +$this +-> + `addO±iÚ +('ÿn_be_em±y', +Œue +); + +50 +$this +-> + `addO±iÚ +('em±y_v®ues', + `¬¿y +('hour' => '', 'minute' => '', 'second' => '')); + +65 +public + +funùiÚ + + `»nd” +( +$Çme +, +$v®ue + = +nuÎ +, +$©Œibu‹s + = + `¬¿y +(), +$”rÜs + = + $¬¿y +()) + +68 +$deçuÉ + = + `¬¿y +('hour' => +nuÎ +, 'minute' =>‚ull, 'second' =>‚ull); + +69 ià( + `is_¬¿y +( +$v®ue +)) + +71 +$v®ue + = + `¬¿y_m”ge +( +$deçuÉ +, $value); + +75 +$v®ue + = + `ùy³_dig™ +($v®ueè? ( +š‹g” +è$v®u: + `¡¹Ùime +($value); + +76 ià( +çl£ + ==ð +$v®ue +) + +78 +$v®ue + = +$deçuÉ +; + +83 +$v®ue + = + `¬¿y +('hour' => (è + `d©e +('H', $value), 'minute' => () date('i', $value), 'second' => () date('s', $value)); + +87 +$time + = + `¬¿y +(); + +88 +$em±yV®ues + = +$this +-> + `g‘O±iÚ +('empty_values'); + +91 +$widg‘ + = +Ãw + + `sfWidg‘FÜmS–eù +( + `¬¿y +('choiûs' => +$this +-> + `g‘O±iÚ +('ÿn_be_em±y'è?‡¼ay('' => +$em±yV®ues +['hour']è+ $this->g‘O±iÚ('hours'è: $this->g‘O±iÚ('hours'), 'id_fÜm©' => $this->g‘O±iÚ('id_fÜm©')), + `¬¿y_m”ge +($this-> +©Œibu‹s +, +$©Œibu‹s +)); + +92 +$time +['%hour%'] = +$widg‘ +-> + `»nd” +( +$Çme +.'[hour]', +$v®ue +['hour']); + +95 +$widg‘ + = +Ãw + + `sfWidg‘FÜmS–eù +( + `¬¿y +('choiûs' => +$this +-> + `g‘O±iÚ +('ÿn_be_em±y'è?‡¼ay('' => +$em±yV®ues +['mšu‹']è+ $this->g‘O±iÚ('mšu‹s'è: $this->g‘O±iÚ('mšu‹s'), 'id_fÜm©' => $this->g‘O±iÚ('id_fÜm©')), + `¬¿y_m”ge +($this-> +©Œibu‹s +, +$©Œibu‹s +)); + +96 +$time +['%mšu‹%'] = +$widg‘ +-> + `»nd” +( +$Çme +.'[mšu‹]', +$v®ue +['minute']); + +98 ià( +$this +-> + `g‘O±iÚ +('with_seconds')) + +101 +$widg‘ + = +Ãw + + `sfWidg‘FÜmS–eù +( + `¬¿y +('choiûs' => +$this +-> + `g‘O±iÚ +('ÿn_be_em±y'è?‡¼ay('' => +$em±yV®ues +['£cÚd']è+ $this->g‘O±iÚ('£cÚds'è: $this->g‘O±iÚ('£cÚds'), 'id_fÜm©' => $this->g‘O±iÚ('id_fÜm©')), + `¬¿y_m”ge +($this-> +©Œibu‹s +, +$©Œibu‹s +)); + +102 +$time +['%£cÚd%'] = +$widg‘ +-> + `»nd” +( +$Çme +.'[£cÚd]', +$v®ue +['second']); + +105  + `¡¹r +( +$this +-> + `g‘O±iÚ +('w™h_£cÚds'è? $this->g‘O±iÚ('fÜm©'è: $this->g‘O±iÚ('fÜm©_w™hout_£cÚds'), +$time +); + +106 + } +} + + @lib/vendor/symfony/lib/yaml/sfYaml.php + +1 + `·r£ +( +$šput +); + +98 + `ÿtch + ( +Exû±iÚ + +$e +) + +100 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('UÇbˁطr£ %s: %s', +$fže + ? s´štf('fž"%s"', $fžeè: '¡ršg', +$e +-> + `g‘Mes§ge +())); + +103  +$»t +; + +104 + } +} + +117 +public +  +funùiÚ + + $dump +( +$¬¿y +, +$šlše + = 2) + +119 +»quœe_Úû + + `dœÇme +( +__FILE__ +).'/sfYamlDumper.php'; + +121 +$yaml + = +Ãw + + `sfYamlDum³r +(); + +123  +$yaml +-> + `dump +( +$¬¿y +, +$šlše +); + +124 + } +} + +132 +funùiÚ + + $echÞn +( +$¡ršg +) + +134 +echo + +$¡ršg +."\n"; + +135 + } +} + + @lib/vendor/symfony/lib/yaml/sfYamlDumper.php + +1 +$v®ue +) + +47 +$wžlBeIƚed + = +$šlše + - 1 <ð0 || ! + `is_¬¿y +( +$v®ue +è|| + `em±y +($value); + +49 +$ouut + .ð + `¥rštf +('%s%s%s%s', + +50 +$´efix +, + +51 +$isAHash + ? +sfYamlIƚe +:: + `dump +( +$key +).':' : '-', + +52 +$wžlBeIƚed + ? ' ' : "\n", + +53 +$this +-> + `dump +( +$v®ue +, +$šlše + - 1, +$wžlBeIƚed + ? 0 : +$šd’t + + 2) + +54 ).( +$wžlBeIƚed + ? "\n" : ''); + +58  +$ouut +; + +60 + } +} + + @lib/vendor/symfony/lib/yaml/sfYamlInline.php + +1 = ! % @ ` ]/x', +$v®ue +): + +108  + `¥rštf +("'%s'", + `¡r_»¶aû +('\'', '\'\'', +$v®ue +)); + +109 '' =ð +$v®ue +: + +111  + `´eg_m©ch +( +£lf +:: + `g‘Time¡ampRegex +(), +$v®ue +): + +113  + `š_¬¿y +( + `¡¹Þow” +( +$v®ue +), +$ŒueV®ues +): + +115  + `š_¬¿y +( + `¡¹Þow” +( +$v®ue +), +$çl£V®ues +): + +117  + `š_¬¿y +( + `¡¹Þow” +( +$v®ue +), + `¬¿y +('null', '~')): + +120  +$v®ue +; + +122 + } +} + +131  +´Ùeùed + +funùiÚ + + $dumpA¼ay +( +$v®ue +) + +134 +$keys + = + `¬¿y_keys +( +$v®ue +); + +136 (1 =ð + `couÁ +( +$keys +) && '0' == $keys[0]) + +138 ( + `couÁ +( +$keys +è> 1 && + `¬¿y_»duû +($keys, + `ü—‹_funùiÚ +('$v,$w', 'return (integer) $v + $w;'), 0) == count($keys) * (count($keys) - 1) / 2)) + +140 +$ouut + = + `¬¿y +(); + +141 + `fܗch + ( +$v®ue + +as + +$v® +) + +143 +$ouut +[] = +£lf +:: + `dump +( +$v® +); + +146  + `¥rštf +('[%s]', + `im¶ode +(', ', +$ouut +)); + +150 +$ouut + = + `¬¿y +(); + +151 + `fܗch + ( +$v®ue + +as + +$key + => +$v® +) + +153 +$ouut +[] = + `¥rštf +('%s: %s', +£lf +:: + `dump +( +$key +), s–f::dump( +$v® +)); + +156  + `¥rštf +('{ % }', + `im¶ode +(', ', +$ouut +)); + +157 + } +} + +170  +public + +funùiÚ + +·r£SÿÏr +( +$sÿÏr +, +$d–im™”s + = +nuÎ +, +$¡ršgD–im™”s + = +¬¿y +('"', "'"), & +$i + = 0, +$ev®u©e + = +Œue +) + +172 ià( +š_¬¿y +( +$sÿÏr +[ +$i +], +$¡ršgD–im™”s +)) + +175 +$ouut + = +£lf +:: +·r£QuÙedSÿÏr +( +$sÿÏr +, +$i +); + +180 ià(! + g$d–im™”s +) + +182 + g$ouut + = +sub¡r +( +$sÿÏr +, +$i +); + +183 + g$i + +ð +¡¾’ +( +$ouut +); + +186 ià( + gçl£ + !=ð +$¡½os + = +¡½os +( +$ouut +, ' #')) + +188 + g$ouut + = +¹rim +( +sub¡r +( +$ouut +, 0, +$¡½os +)); + +191 ià( +´eg_m©ch +('/^(.+?)('. +im¶ode +('|', +$d–im™”s +).')/', +sub¡r +( +$sÿÏr +, +$i +), +$m©ch +)) + +193 + g$ouut + = +$m©ch +[1]; + +194 + g$i + +ð +¡¾’ +( +$ouut +); + +198 +throw + +Ãw + +Inv®idArgum’tExû±iÚ +( +¥rštf +('M®fÜmed iƚYAML sŒšg (%s).', +$sÿÏr +)); + +201 + g$ouut + = +$ev®u©e + ? +£lf +:: +ev®u©eSÿÏr +( +$ouut +) : $output; + +204  + g$ouut +; + +215  +´Ùeùed + +funùiÚ + + $·r£QuÙedSÿÏr +( +$sÿÏr +, & +$i +) + +217 ià(! + `´eg_m©ch +('/'. +£lf +:: +REGEX_QUOTED_STRING +.'/Au', + `sub¡r +( +$sÿÏr +, +$i +), +$m©ch +)) + +219 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('M®fÜmed iƚYAML sŒšg (%s).', + `sub¡r +( +$sÿÏr +, +$i +))); + +222 +$ouut + = + `sub¡r +( +$m©ch +[0], 1, + `¡¾’ +($match[0]) - 2); + +224 ià('"' =ð +$sÿÏr +[ +$i +]) + +227 +$ouut + = + `¡r_»¶aû +( + `¬¿y +('\\"', '\\n', '\\r'),‡rray('"', "\n", "\r"), $output); + +232 +$ouut + = + `¡r_»¶aû +('\'\'', '\'', $output); + +235 +$i + +ð + `¡¾’ +( +$m©ch +[0]); + +237  +$ouut +; + +238 + } +} + +248  +´Ùeùed + +funùiÚ + + $·r£Sequ’û +( +$£qu’û +, & +$i + = 0) + +250 +$ouut + = + `¬¿y +(); + +251 +$Ën + = + `¡¾’ +( +$£qu’û +); + +252 +$i + += 1; + +255  +$i + < +$Ën +) + +257  +$£qu’û +[ +$i +]) + +261 +$ouut +[] = +£lf +:: + `·r£Sequ’û +( +$£qu’û +, +$i +); + +265 +$ouut +[] = +£lf +:: + `·r£M­pšg +( +$£qu’û +, +$i +); + +268  +$ouut +; + +273 +$isQuÙed + = + `š_¬¿y +( +$£qu’û +[ +$i +], + `¬¿y +('"', "'")); + +274 +$v®ue + = +£lf +:: + `·r£SÿÏr +( +$£qu’û +, + `¬¿y +(',', ']'),‡¼ay('"', "'"), +$i +); + +276 ià(! +$isQuÙed + && +çl£ + !=ð + `¡½os +( +$v®ue +, ': ')) + +279 +Œy + + +281 +$v®ue + = +£lf +:: + `·r£M­pšg +('{'.$value.'}'); + +283 + `ÿtch + ( +Inv®idArgum’tExû±iÚ + +$e +) + +289 +$ouut +[] = +$v®ue +; + +291 -- +$i +; + +294 ++ +$i +; + +297 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('M®fÜmed iƚYAML sŒšg %s', +$£qu’û +)); + +298 + } +} + +308  +´Ùeùed + +funùiÚ + + $·r£M­pšg +( +$m­pšg +, & +$i + = 0) + +310 +$ouut + = + `¬¿y +(); + +311 +$Ën + = + `¡¾’ +( +$m­pšg +); + +312 +$i + += 1; + +315  +$i + < +$Ën +) + +317  +$m­pšg +[ +$i +]) + +321 ++ +$i +; + +324  +$ouut +; + +328 +$key + = +£lf +:: + `·r£SÿÏr +( +$m­pšg +, + `¬¿y +(':', ' '),‡¼ay('"', "'"), +$i +, +çl£ +); + +331 +$dÚe + = +çl£ +; + +332  +$i + < +$Ën +) + +334  +$m­pšg +[ +$i +]) + +338 +$ouut +[ +$key +] = +£lf +:: + `·r£Sequ’û +( +$m­pšg +, +$i +); + +339 +$dÚe + = +Œue +; + +343 +$ouut +[ +$key +] = +£lf +:: + `·r£M­pšg +( +$m­pšg +, +$i +); + +344 +$dÚe + = +Œue +; + +350 +$ouut +[ +$key +] = +£lf +:: + `·r£SÿÏr +( +$m­pšg +, + `¬¿y +(',', '}'),‡¼ay('"', "'"), +$i +); + +351 +$dÚe + = +Œue +; + +352 -- +$i +; + +355 ++ +$i +; + +357 ià( +$dÚe +) + +364 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('M®fÜmed iƚYAML sŒšg %s', +$m­pšg +)); + +365 + } +} + +374  +´Ùeùed + +funùiÚ + + $ev®u©eSÿÏr +( +$sÿÏr +) + +376 +$sÿÏr + = + `Œim +($scalar); + +378 ià('1.1' ==ð +sfYaml +:: + `g‘S³cV”siÚ +()) + +380 +$ŒueV®ues + = + `¬¿y +('true', 'on', '+', 'yes', 'y'); + +381 +$çl£V®ues + = + `¬¿y +('false', 'off', '-', 'no', 'n'); + +385 +$ŒueV®ues + = + `¬¿y +('true'); + +386 +$çl£V®ues + = + `¬¿y +('false'); + +389  +Œue +) + +391 'nuÎ' =ð + `¡¹Þow” +( +$sÿÏr +): + +392 '' =ð +$sÿÏr +: + +393 '~' =ð +$sÿÏr +: + +394  +nuÎ +; + +395 0 ==ð + `¡½os +( +$sÿÏr +, '!str'): + +396  ( +¡ršg +è + `sub¡r +( +$sÿÏr +, 5); + +397 0 ==ð + `¡½os +( +$sÿÏr +, '! '): + +398  + `štv® +( +£lf +:: + `·r£SÿÏr +( + `sub¡r +( +$sÿÏr +, 2))); + +399 0 ==ð + `¡½os +( +$sÿÏr +, '!!php/object:'): + +400  + `un£rŸlize +( + `sub¡r +( +$sÿÏr +, 13)); + +401  + `ùy³_dig™ +( +$sÿÏr +): + +402 +$¿w + = +$sÿÏr +; + +403 +$ÿ¡ + = + `štv® +( +$sÿÏr +); + +404  '0' =ð +$sÿÏr +[0] ? + `oùdec +($sÿÏrè: ((( +¡ršg +è +$¿w + =ð(¡ršgè +$ÿ¡ +) ? $cast : $raw); + +405  + `š_¬¿y +( + `¡¹Þow” +( +$sÿÏr +), +$ŒueV®ues +): + +406  +Œue +; + +407  + `š_¬¿y +( + `¡¹Þow” +( +$sÿÏr +), +$çl£V®ues +): + +408  +çl£ +; + +409  + `is_num”ic +( +$sÿÏr +): + +410  '0x' =ð +$sÿÏr +[0].$sÿÏr[1] ? + `hexdec +($sÿÏrè: + `æßtv® +($scalar); + +411 0 =ð + `¡rÿ£cmp +( +$sÿÏr +, '.inf'): + +412 0 =ð + `¡rÿ£cmp +( +$sÿÏr +, '.NaN'): + +413  - + `log +(0); + +414 0 =ð + `¡rÿ£cmp +( +$sÿÏr +, '-.inf'): + +415  + `log +(0); + +416  + `´eg_m©ch +('/^(-|\+)?[0-9,]+(\.[0-9]+)?$/', +$sÿÏr +): + +417  + `æßtv® +( + `¡r_»¶aû +(',', '', +$sÿÏr +)); + +418  + `´eg_m©ch +( +£lf +:: + `g‘Time¡ampRegex +(), +$sÿÏr +): + +419  + `¡¹Ùime +( +$sÿÏr +); + +421  ( +¡ršg +è +$sÿÏr +; + +423 + } +} + +425  +´Ùeùed + +funùiÚ + + $g‘Time¡ampRegex +() + +427  <<< +EOF + + +429 (? +P +< +y—r +>[0-9][0-9][0-9][0-9]) + +430 -(? +P +< +mÚth +>[0-9][0-9]?) + +431 -(? +P +< +day +>[0-9][0-9]?) + +432 (?:(?:[ +Tt +]|[ \ +t +]+) + +433 (? +P +< +hour +>[0-9][0-9]?) + +434 :(? +P +< +mšu‹ +>[0-9][0-9]) + +435 :(? +P +< +£cÚd +>[0-9][0-9]) + +436 (?:\.(? +P +< +äaùiÚ +>[0-9]*))? + +437 (?:[ \ +t +]*(? +P +< +tz +> +Z +|(?P< +tz_sign +>[-+])(?P< +tz_hour +>[0-9][0-9]?) + +438 (?::(? +P +< +tz_mšu‹ +>[0-9][0-9]))?))?)? + +439 +$ +~ +x + + +440 +EOF +; + +441 + } +} + + @lib/vendor/symfony/lib/yaml/sfYamlParser.php + +1 +off£t + = +$off£t +; + +54 +public + +funùiÚ + + $·r£ +( +$v®ue +) + +56 +$this +-> +cu¼’tLšeNb + = -1; + +57 +$this +-> +cu¼’tLše + = ''; + +58 +$this +-> +lšes + = + `ex¶ode +("\n", $this-> + `þ—nup +( +$v®ue +)); + +60 ià( + `funùiÚ_exi¡s +('mb_š‹º®_’codšg'è&& ((è + `ši_g‘ +('mbstring.func_overload')) & 2) + +62 +$mbEncodšg + = + `mb_š‹º®_’codšg +(); + +63 + `mb_š‹º®_’codšg +('UTF-8'); + +66 +$d©a + = + `¬¿y +(); + +67  +$this +-> + `moveToNextLše +()) + +69 ià( +$this +-> + `isCu¼’tLšeEm±y +()) + +75 ià( + `´eg_m©ch +('#^\t+#', +$this +-> +cu¼’tLše +)) + +77 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('A YAML fžÿÂÙ cڏšab a šd’tiڇˆlš%d (%s).', +$this +-> + `g‘R—lCu¼’tLšeNb +(è+ 1, $this-> +cu¼’tLše +)); + +80 +$isRef + = +$isInPÏû + = +$isProûs£d + = +çl£ +; + +81 ià( + `´eg_m©ch +('#^\-(\s+(?P.+?))?\s*$#u', +$this +-> +cu¼’tLše +, +$v®ues +)) + +83 ià( + `is£t +( +$v®ues +['v®ue']è&& + `´eg_m©ch +('#^&(?P<»f>[^ ]+è*(?P.*)#u', $v®ues['v®ue'], +$m©ches +)) + +85 +$isRef + = +$m©ches +['ref']; + +86 +$v®ues +['v®ue'] = +$m©ches +['value']; + +90 ià(! + `is£t +( +$v®ues +['v®ue']è|| '' =ð + `Œim +($v®ues['v®ue'], ' 'è|| 0 ==ð + `¡½os +( + `Érim +($values['value'], ' '), '#')) + +92 +$c + = +$this +-> + `g‘R—lCu¼’tLšeNb +() + 1; + +93 +$·r£r + = +Ãw + + `sfYamlP¬£r +( +$c +); + +94 +$·r£r +-> +»fs + =& +$this +->refs; + +95 +$d©a +[] = +$·r£r +-> + `·r£ +( +$this +-> + `g‘NextEmbedBlock +()); + +99 ià( + `´eg_m©ch +('/^([^ ]+)\: +({.*?)$/u', +$v®ues +['v®ue'], +$m©ches +)) + +101 +$d©a +[] = + `¬¿y +( +$m©ches +[1] => +sfYamlIƚe +:: + `lßd +($matches[2])); + +105 +$d©a +[] = +$this +-> + `·r£V®ue +( +$v®ues +['value']); + +109 ià( + `´eg_m©ch +('#^(?P'. +sfYamlIƚe +:: +REGEX_QUOTED_STRING +.'|[^ \{\[].*?è*\:(\s+(?P.+?))?\s*$#u', +$this +-> +cu¼’tLše +, +$v®ues +)) + +111 +$key + = +sfYamlIƚe +:: + `·r£SÿÏr +( +$v®ues +['key']); + +113 ià('<<' ==ð +$key +) + +115 ià( + `is£t +( +$v®ues +['v®ue']è&& '*' ==ð + `sub¡r +($values['value'], 0, 1)) + +117 +$isInPÏû + = + `sub¡r +( +$v®ues +['value'], 1); + +118 ià(! + `¬¿y_key_exi¡s +( +$isInPÏû +, +$this +-> +»fs +)) + +120 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('Reã»nû "%s" dÛ nكxi¡‡ˆlš% (%s).', +$isInPÏû +, +$this +-> + `g‘R—lCu¼’tLšeNb +(è+ 1, $this-> +cu¼’tLše +)); + +125 ià( + `is£t +( +$v®ues +['value']) && $values['value'] !== '') + +127 +$v®ue + = +$v®ues +['value']; + +131 +$v®ue + = +$this +-> + `g‘NextEmbedBlock +(); + +133 +$c + = +$this +-> + `g‘R—lCu¼’tLšeNb +() + 1; + +134 +$·r£r + = +Ãw + + `sfYamlP¬£r +( +$c +); + +135 +$·r£r +-> +»fs + =& +$this +->refs; + +136 +$·r£d + = +$·r£r +-> + `·r£ +( +$v®ue +); + +138 +$m”ged + = + `¬¿y +(); + +139 ià(! + `is_¬¿y +( +$·r£d +)) + +141 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +("YAML m”gkey u£d w™h‡ sÿϸv®uš¡—d oઇ¼ay‡ˆlš% (%s)", +$this +-> + `g‘R—lCu¼’tLšeNb +(è+ 1, $this-> +cu¼’tLše +)); + +143 ià( + `is£t +( +$·r£d +[0])) + +146 + `fܗch + ( + `¬¿y_»v”£ +( +$·r£d +è +as + +$·r£dI‹m +) + +148 ià(! + `is_¬¿y +( +$·r£dI‹m +)) + +150 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +("M”g™em mu¡ b¬¿y ©†š% (%s).", +$this +-> + `g‘R—lCu¼’tLšeNb +(è+ 1, +$·r£dI‹m +)); + +152 +$m”ged + = + `¬¿y_m”ge +( +$·r£dI‹m +, $merged); + +158 +$m”ged + = + `¬¿y_m”ge +($m”ged, +$·r£d +); + +161 +$isProûs£d + = +$m”ged +; + +164 ià( + `is£t +( +$v®ues +['v®ue']è&& + `´eg_m©ch +('#^&(?P<»f>[^ ]+è*(?P.*)#u', $v®ues['v®ue'], +$m©ches +)) + +166 +$isRef + = +$m©ches +['ref']; + +167 +$v®ues +['v®ue'] = +$m©ches +['value']; + +170 ià( +$isProûs£d +) + +173 +$d©a + = +$isProûs£d +; + +176 ià(! + `is£t +( +$v®ues +['v®ue']è|| '' =ð + `Œim +($v®ues['v®ue'], ' 'è|| 0 ==ð + `¡½os +( + `Érim +($values['value'], ' '), '#')) + +179 ià( +$this +-> + `isNextLšeInd’‹d +()) + +181 +$d©a +[ +$key +] = +nuÎ +; + +185 +$c + = +$this +-> + `g‘R—lCu¼’tLšeNb +() + 1; + +186 +$·r£r + = +Ãw + + `sfYamlP¬£r +( +$c +); + +187 +$·r£r +-> +»fs + =& +$this +->refs; + +188 +$d©a +[ +$key +] = +$·r£r +-> + `·r£ +( +$this +-> + `g‘NextEmbedBlock +()); + +193 ià( +$isInPÏû +) + +195 +$d©a + = +$this +-> +»fs +[ +$isInPÏû +]; + +199 +$d©a +[ +$key +] = +$this +-> + `·r£V®ue +( +$v®ues +['value']); + +206 ià(2 =ð + `couÁ +( +$this +-> +lšes +è&& + `em±y +($this->lines[1])) + +208 +$v®ue + = +sfYamlIƚe +:: + `lßd +( +$this +-> +lšes +[0]); + +209 ià( + `is_¬¿y +( +$v®ue +)) + +211 +$fœ¡ + = + `»£t +( +$v®ue +); + +212 ià('*' ==ð + `sub¡r +( +$fœ¡ +, 0, 1)) + +214 +$d©a + = + `¬¿y +(); + +215 + `fܗch + ( +$v®ue + +as + +$®Ÿs +) + +217 +$d©a +[] = +$this +-> +»fs +[ + `sub¡r +( +$®Ÿs +, 1)]; + +219 +$v®ue + = +$d©a +; + +223 ià( + `is£t +( +$mbEncodšg +)) + +225 + `mb_š‹º®_’codšg +( +$mbEncodšg +); + +228  +$v®ue +; + +231  + `´eg_Ï¡_”rÜ +()) + +233  +PREG_INTERNAL_ERROR +: + +234 +$”rÜ + = 'Internal PCREƒrror on†ine'; + +236  +PREG_BACKTRACK_LIMIT_ERROR +: + +237 +$”rÜ + = 'pcre.backtrack_limit„eached on†ine'; + +239  +PREG_RECURSION_LIMIT_ERROR +: + +240 +$”rÜ + = 'pcre.recursion_limit„eached on†ine'; + +242  +PREG_BAD_UTF8_ERROR +: + +243 +$”rÜ + = 'Malformed UTF-8 data on†ine'; + +245  +PREG_BAD_UTF8_OFFSET_ERROR +: + +246 +$”rÜ + = 'Offset doesn\'t correspondohe begin of‡ valid UTF-8 code…oint on†ine'; + +249 +$”rÜ + = 'Unableo…arse†ine'; + +252 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('% %d (%s).', +$”rÜ +, +$this +-> + `g‘R—lCu¼’tLšeNb +(è+ 1, $this-> +cu¼’tLše +)); + +255 ià( +$isRef +) + +257 +$this +-> +»fs +[ +$isRef +] = + `’d +( +$d©a +); + +261 ià( + `is£t +( +$mbEncodšg +)) + +263 + `mb_š‹º®_’codšg +( +$mbEncodšg +); + +266  + `em±y +( +$d©a +è? +nuÎ + : $data; + +267 + } +} + +274 +´Ùeùed + +funùiÚ + + $g‘R—lCu¼’tLšeNb +() + +276  +$this +-> +cu¼’tLšeNb + + $this-> +off£t +; + +277 + } +} + +284 +´Ùeùed + +funùiÚ + + $g‘Cu¼’tLšeInd’tiÚ +() + +286  + `¡¾’ +( +$this +-> +cu¼’tLše +è- sŒËn( + `Érim +($this->currentLine, ' ')); + +287 + } +} + +294 +´Ùeùed + +funùiÚ + + $g‘NextEmbedBlock +() + +296 +$this +-> + `moveToNextLše +(); + +298 +$ÃwInd’t + = +$this +-> + `g‘Cu¼’tLšeInd’tiÚ +(); + +300 ià(! +$this +-> + `isCu¼’tLšeEm±y +(è&& 0 =ð +$ÃwInd’t +) + +302 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('Ind’tiڅrobËm‡ˆlš%d (%s)', +$this +-> + `g‘R—lCu¼’tLšeNb +(è+ 1, $this-> +cu¼’tLše +)); + +305 +$d©a + = + `¬¿y +( + `sub¡r +( +$this +-> +cu¼’tLše +, +$ÃwInd’t +)); + +307  +$this +-> + `moveToNextLše +()) + +309 ià( +$this +-> + `isCu¼’tLšeEm±y +()) + +311 ià( +$this +-> + `isCu¼’tLšeBÏnk +()) + +313 +$d©a +[] = + `sub¡r +( +$this +-> +cu¼’tLše +, +$ÃwInd’t +); + +319 +$šd’t + = +$this +-> + `g‘Cu¼’tLšeInd’tiÚ +(); + +321 ià( + `´eg_m©ch +('#^(?P<‹xt> *)$#', +$this +-> +cu¼’tLše +, +$m©ch +)) + +324 +$d©a +[] = +$m©ch +['text']; + +326 ià( +$šd’t + >ð +$ÃwInd’t +) + +328 +$d©a +[] = + `sub¡r +( +$this +-> +cu¼’tLše +, +$ÃwInd’t +); + +330 ià(0 =ð +$šd’t +) + +332 +$this +-> + `moveToP»viousLše +(); + +338 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('Ind’tiڅrobËm‡ˆlš%d (%s)', +$this +-> + `g‘R—lCu¼’tLšeNb +(è+ 1, $this-> +cu¼’tLše +)); + +342  + `im¶ode +("\n", +$d©a +); + +343 + } +} + +348 +´Ùeùed + +funùiÚ + + $moveToNextLše +() + +350 ià( +$this +-> +cu¼’tLšeNb + >ð + `couÁ +($this-> +lšes +) - 1) + +352  +çl£ +; + +355 +$this +-> +cu¼’tLše + = $this-> +lšes +[++$this-> +cu¼’tLšeNb +]; + +357  +Œue +; + +358 + } +} + +363 +´Ùeùed + +funùiÚ + + $moveToP»viousLše +() + +365 +$this +-> +cu¼’tLše + = $this-> +lšes +[--$this-> +cu¼’tLšeNb +]; + +366 + } +} + +375 +´Ùeùed + +funùiÚ + + $·r£V®ue +( +$v®ue +) + +377 ià('*' ==ð + `sub¡r +( +$v®ue +, 0, 1)) + +379 ià( +çl£ + !=ð +$pos + = + `¡½os +( +$v®ue +, '#')) + +381 +$v®ue + = + `sub¡r +($v®ue, 1, +$pos + - 2); + +385 +$v®ue + = + `sub¡r +($value, 1); + +388 ià(! + `¬¿y_key_exi¡s +( +$v®ue +, +$this +-> +»fs +)) + +390 +throw + +Ãw + + `Inv®idArgum’tExû±iÚ +( + `¥rštf +('Reã»nû "%s" dÛ nكxi¡ (%s).', +$v®ue +, +$this +-> +cu¼’tLše +)); + +392  +$this +-> +»fs +[ +$v®ue +]; + +395 ià( + `´eg_m©ch +('/^(?P<£·¿tÜ>\||>)(?P\+|\-|\d+|\+\d+|\-\d+|\d+\+|\d+\-)?(?P +#.*)?$/', +$v®ue +, +$m©ches +)) + +397 +$modif›rs + = + `is£t +( +$m©ches +['modifiers']) ? $matches['modifiers'] : ''; + +399  +$this +-> + `·r£FÞdedSÿÏr +( +$m©ches +['£·¿tÜ'], + `´eg_»¶aû +('#\d+#', '', +$modif›rs +), + `štv® +( + `abs +($modifiers))); + +403  +sfYamlIƚe +:: + `lßd +( +$v®ue +); + +405 + } +} + +416 +´Ùeùed + +funùiÚ + +·r£FÞdedSÿÏr +( +$£·¿tÜ +, +$šdiÿtÜ + = '', +$šd’tiÚ + = 0) + +418 +$£·¿tÜ + = '|' == $separator ? "\n" : ' '; + +419 + g$‹xt + = ''; + +421 + g$nÙEOF + = +$this +-> +moveToNextLše +(); + +423  + g$nÙEOF + && + g$this +-> +isCu¼’tLšeBÏnk +()) + +425 + g$‹xt + .= "\n"; + +427 + g$nÙEOF + = +$this +-> +moveToNextLše +(); + +430 ià(! + g$nÙEOF +) + +435 ià(! +´eg_m©ch +('#^(?P<šd’t>'.( +$šd’tiÚ + ? +¡r_»³© +(' ', $šd’tiÚè: ' +').')(?P<‹xt>.*)$#u', +$this +-> +cu¼’tLše +, +$m©ches +)) + +437 + g$this +-> +moveToP»viousLše +(); + +442 + g$‹xtInd’t + = +$m©ches +['indent']; + +443 + g$´eviousInd’t + = 0; + +445 + g$‹xt + .ð +$m©ches +['‹xt']. +$£·¿tÜ +; + +446  + g$this +-> + gcu¼’tLšeNb + + 1 < +couÁ +( +$this +-> +lšes +)) + +448 + g$this +-> +moveToNextLše +(); + +450 ià( +´eg_m©ch +('#^(?P<šd’t> {'. +¡¾’ +( +$‹xtInd’t +).',})(?P<‹xt>.+)$#u', +$this +-> +cu¼’tLše +, +$m©ches +)) + +452 ià(' ' =ð +$£·¿tÜ + && +$´eviousInd’t + !ð +$m©ches +['indent']) + +454 +$‹xt + = +sub¡r +($text, 0, -1)."\n"; + +456 + g$´eviousInd’t + = +$m©ches +['indent']; + +458 + g$‹xt + .ð +¡r_»³© +(' ', +$diff + = +¡¾’ +( +$m©ches +['šd’t']è- sŒËn( +$‹xtInd’t +)).$m©ches['‹xt'].($difà? "\n" : +$£·¿tÜ +); + +460 ià( +´eg_m©ch +('#^(?P<‹xt> *)$#', +$this +-> +cu¼’tLše +, +$m©ches +)) + +462 + g$‹xt + .ð +´eg_»¶aû +('#^ {1,'. +¡¾’ +( +$‹xtInd’t +).'}#', '', +$m©ches +['text'])."\n"; + +466 + g$this +-> +moveToP»viousLše +(); + +472 ià(' ' =ð +$£·¿tÜ +) + +475 +$‹xt + = +´eg_»¶aû +('/ (\n*)$/', "\n$1", $text); + +478  + g$šdiÿtÜ +) + +481 +$‹xt + = +´eg_»¶aû +('#\n+$#s', "\n", $text); + +486 +$‹xt + = +´eg_»¶aû +('#\n+$#s', '', $text); + +490  + g$‹xt +; + +498 +´Ùeùed + +funùiÚ + + $isNextLšeInd’‹d +() + +500 +$cu¼’tInd’tiÚ + = +$this +-> + `g‘Cu¼’tLšeInd’tiÚ +(); + +501 +$nÙEOF + = +$this +-> + `moveToNextLše +(); + +503  +$nÙEOF + && +$this +-> + `isCu¼’tLšeEm±y +()) + +505 +$nÙEOF + = +$this +-> + `moveToNextLše +(); + +508 ià( +çl£ + ==ð +$nÙEOF +) + +510  +çl£ +; + +513 +$»t + = +çl£ +; + +514 ià( +$this +-> + `g‘Cu¼’tLšeInd’tiÚ +(è<ð +$cu¼’tInd’tiÚ +) + +516 +$»t + = +Œue +; + +519 +$this +-> + `moveToP»viousLše +(); + +521  +$»t +; + +522 + } +} + +529 +´Ùeùed + +funùiÚ + + $isCu¼’tLšeEm±y +() + +531  +$this +-> + `isCu¼’tLšeBÏnk +(è|| $this-> + `isCu¼’tLšeComm’t +(); + +532 + } +} + +539 +´Ùeùed + +funùiÚ + + $isCu¼’tLšeBÏnk +() + +541  '' =ð + `Œim +( +$this +-> +cu¼’tLše +, ' '); + +542 + } +} + +549 +´Ùeùed + +funùiÚ + + $isCu¼’tLšeComm’t +() + +552 +$ÉrimmedLše + = + `Érim +( +$this +-> +cu¼’tLše +, ' '); + +553  +$ÉrimmedLše +[0] === '#'; + +554 + } +} + +563 +´Ùeùed + +funùiÚ + + $þ—nup +( +$v®ue +) + +565 +$v®ue + = + `¡r_»¶aû +( + `¬¿y +("\r\n", "\r"), "\n", $value); + +567 ià(! + `´eg_m©ch +("#\n$#", +$v®ue +)) + +569 +$v®ue + .= "\n"; + +573 +$couÁ + = 0; + +574 +$v®ue + = + `´eg_»¶aû +('#^\%YAML[: ][\d\.]+.*\n#su', '', $v®ue, -1, +$couÁ +); + +575 +$this +-> +off£t + +ð +$couÁ +; + +578 +$ŒimmedV®ue + = + `´eg_»¶aû +('#^(\#.*?\n)+#s', '', +$v®ue +, -1, +$couÁ +); + +579 ià( +$couÁ + == 1) + +582 +$this +-> +off£t + +ð + `sub¡r_couÁ +( +$v®ue +, "\n"è- sub¡r_couÁ( +$ŒimmedV®ue +, "\n"); + +583 +$v®ue + = +$ŒimmedV®ue +; + +587 +$ŒimmedV®ue + = + `´eg_»¶aû +('#^\-\-\-.*?\n#s', '', +$v®ue +, -1, +$couÁ +); + +588 ià( +$couÁ + == 1) + +591 +$this +-> +off£t + +ð + `sub¡r_couÁ +( +$v®ue +, "\n"è- sub¡r_couÁ( +$ŒimmedV®ue +, "\n"); + +592 +$v®ue + = +$ŒimmedV®ue +; + +595 +$v®ue + = + `´eg_»¶aû +('#\.\.\.\s*$#s', '', $value); + +598  +$v®ue +; + +599 + } +} + + @lib/vendor/symfony/test/bin/coverage.php + +1 + gba£_dœ + = +»®·th +( +dœÇme +( +__FILE__ +).'/..'); + +18 + g$h +-> +»gi¡”_glob +( +$h +-> +ba£_dœ +.'/unit/*/*Test.php'); + +19 + g$h +-> +»gi¡”_glob +( +$h +-> +ba£_dœ +.'/unit/*/*/*Test.php'); + +20 + g$h +-> +»gi¡”_glob +( +$h +-> +ba£_dœ +.'/../lib/plugins/*/unit/*Test.php'); + +21 + g$h +-> +»gi¡”_glob +( +$h +-> +ba£_dœ +.'/../lib/plugins/*/unit/*/*Test.php'); + +24 + g$h +-> +»gi¡”_glob +( +$h +-> +ba£_dœ +.'/functional/*Test.php'); + +25 + g$h +-> +»gi¡”_glob +( +$h +-> +ba£_dœ +.'/functional/*/*Test.php'); + +26 + g$h +-> +»gi¡”_glob +( +$h +-> +ba£_dœ +.'/../lib/plugins/*/functional/*Test.php'); + +28 + g$c + = +Ãw + +lime_cov”age +( +$h +); + +29 + g$c +-> + gex‹nsiÚ + = '.class.php'; + +30 + g$c +-> + gv”bo£ + = +çl£ +; + +31 + g$c +-> + gba£_dœ + = +»®·th +( +dœÇme +( +__FILE__ +).'/../../lib'); + +33 + g$fšd” + = +sfFšd” +:: +ty³ +('fže')-> +Çme +('*.php')-> +´uà +('vendor')->prune('test')->prune('data'); + +34 + g$c +->( + g$fšd” +-> +š +( +$c +-> +ba£_dœ +)); + +35 + g$c +-> +run +(); + + @lib/vendor/symfony/test/bin/loc.php + +1 +Çme +('*.php')-> +´uà +('v’dÜ', '¶ugšs')-> +š +( +$roÙ_dœ +.'/lib'); + +16 + $fܗch + ( +$fžes + +as + +$fže +) + +18 +$tÙ®_loc + +ð + `couÁ +( +lime_cov”age +:: + `g‘_php_lšes +( +$fže +)); + +19 + } +} + +20 + g$fžes + = +sfFšd” +:: +ty³ +('fže')-> +Çme +('*.php')-> +´uà +('v’dÜ')-> +š +( +$roÙ_dœ +.'/lib/plugins/*/lib'); + +21 + $fܗch + ( +$fžes + +as + +$fže +) + +23 +$tÙ®_loc + +ð + `couÁ +( +lime_cov”age +:: + `g‘_php_lšes +( +$fže +)); + +24 + } +} + +27 + g$tÙ®_‹¡s_loc + = 0; + +28 + g$fžes + = +sfFšd” +:: +ty³ +('fže')-> +Çme +('*Te¡.php')-> +š +( +¬¿y +( + +29 +$roÙ_dœ +.'/lib/plugins/sfPropelPlugin/test/unit', + +30 +$roÙ_dœ +.'/lib/plugins/sfPropelPlugin/test/functional', + +31 +$roÙ_dœ +.'/lib/plugins/sfDoctrinePlugin/test/unit', + +32 +$roÙ_dœ +.'/lib/plugins/sfDoctrinePlugin/test/functional', + +33 +$roÙ_dœ +.'/test/unit', + +34 +$roÙ_dœ +.'/test/functional', + +35 +$roÙ_dœ +.'/test/other', + +37 + $fܗch + ( +$fžes + +as + +$fže +) + +39 +$tÙ®_‹¡s_loc + +ð + `couÁ +( +lime_cov”age +:: + `g‘_php_lšes +( +$fže +)); + +40 + } +} + +42 +´štf +("cܐlib¿œ›s: %6d\n", +$tÙ®_loc +); + +43 +´štf +("un™‡nd funùiÚ®e¡s: %6d\n", +$tÙ®_‹¡s_loc +); + +44 + gecho + "---------------------------------\n"; + +45 +´štf +("¿ti؋¡s/lib¿œ›s: %5d%%\n", +$tÙ®_‹¡s_loc + / +$tÙ®_loc + * 100); + + @lib/vendor/symfony/test/bootstrap/functional.php + +1 +sfCÚfig +:: +g‘ +('sf_symfony_lib_dir'), + + @lib/vendor/symfony/test/bootstrap/unit.php + +1 + +22 + `g‘ +('/auth/basic')-> + +23 + `w™h +('»que¡')-> + `begš +()-> + +24 + `isP¬am‘” +('module', 'auth')-> + +25 + `isP¬am‘” +('action', 'basic')-> + +26 + `’d +()-> + +27 + `w™h +('»¥Ú£')-> + `begš +()-> + +28 + `isStusCode +(401)-> + +29 + `checkEËm’t +('#user', '')-> + +30 + `checkEËm’t +('#password', '')-> + +31 + `checkEËm’t +('#msg', 'KO')-> + +32 + `’d +() + +36 +public + +funùiÚ + + $checkAuth +() + +38  +$this +-> + +39 + `g‘ +('/auth/basic')-> + +40 + `w™h +('»que¡')-> + `begš +()-> + +41 + `isP¬am‘” +('module', 'auth')-> + +42 + `isP¬am‘” +('action', 'basic')-> + +43 + `’d +()-> + +44 + `w™h +('»¥Ú£')-> + `begš +()-> + +45 + `isStusCode +(200)-> + +46 + `checkEËm’t +('#user', 'foo')-> + +47 + `checkEËm’t +('#password', 'bar')-> + +48 + `checkEËm’t +('#msg', 'OK')-> + +49 + `’d +() + +51 + } +} + +54 + g$b + = +Ãw + +sfAuthTe¡Brow£r +(); + +57 + g$b +-> + +58 +checkNÚAuth +()-> + +60 +£tAuth +('foo', 'bar')-> + +62 +checkAuth +()-> + +64 +»¡¬t +()-> + +66 +checkNÚAuth +() + + @lib/vendor/symfony/test/functional/autoloadTest.php + +1 + +20 +g‘ +('/autoload/myAutoload')-> + +21 +w™h +('»que¡')-> +begš +()-> + +22 +isP¬am‘” +('module', 'autoload')-> + +23 +isP¬am‘” +('action', 'myAutoload')-> + +24 +’d +()-> + +25 +w™h +('»¥Ú£')-> +begš +()-> + +26 +isStusCode +(200)-> + +27 +checkEËm’t +('body div', 'foo')-> + +28 +’d +() + +31 + g$t + = +$b +-> +‹¡ +(); + +33 + g$autÞßd + = +sfAutÞßd +:: +g‘In¡ªû +(); + +34 + g$t +-> +ok +(@ +fže_g‘_cڋÁs +( +$autÞßd +-> +g‘CÏssP©h +('sårݖ'), +FILE_USE_INCLUDE_PATH +), '"sfAutoload" is case insensitive'); + +36 + g$t +-> +ok +( +þass_exi¡s +('BaseExtendMe'), 'plugin†ib directory‡ddedo‡utoload'); + +37 + g$r + = +Ãw + +ReæeùiÚCÏss +('ExtendMe'); + +38 + g$t +-> +like +( +¡r_»¶aû +( +DIRECTORY_SEPARATOR +, '/', +$r +-> +g‘Fž’ame +()), '~fixtures/lib/ExtendMe~', 'plugin class can be„eplaced by…roject'); + +39 + g$t +-> +ok +( +þass_exi¡s +('NotInLib'), 'plugin‡utoload sets class…aths'); + +40 + g$t +-> +ok +(! +þass_exi¡s +('ExcludedFromAutoload'), 'plugin‡utoloadƒxcludes directories'); + + @lib/vendor/symfony/test/functional/cacheTest.php + +1 + `‹¡ +()-> + `ok +($this-> + `g‘Re¥Ú£ +()-> + `g‘CڋÁ +(è=ð +$cڋÁ +, +$mes§ge +); + +23  +$this +; + +26 +funùiÚ + + $g‘MuÉiAùiÚ +( +$·¿m‘” + = +nuÎ +) + +28  +$this +-> + +29 + `g‘ +('/ÿche/muÉi'.( +nuÎ + !=ð +$·¿m‘” + ? '/param/'.$parameter : ''))-> + +30 + `w™h +('»que¡')-> + `begš +()-> + +31 + `isP¬am‘” +('module', 'cache')-> + +32 + `isP¬am‘” +('action', 'multi')-> + +33 + `’d +()-> + +35 + `w™h +('»¥Ú£')-> + `begš +()-> + +36 + `isStusCode +(200)-> + +39 + `checkEËm’t +('#partial .partial')-> + +42 + `checkEËm’t +('#contextualPartial .contextualPartial')-> + +43 + `checkEËm’t +('#cڋxtu®Cach—bËP¬tŸÈ.cڋxtu®Cach—bËP¬tŸl__'. +$·¿m‘” +, 'Param: '.$parameter)-> + +44 + `checkEËm’t +('#cڋxtu®Cach—bËP¬tŸlV¬P¬am .cڋxtu®Cach—bËP¬tŸl_v¬P¬am_'. +$·¿m‘” +, 'Param: '.$parameter)-> + +47 + `checkEËm’t +('#compڒˆ.compڒt__compڒtP¬am_'. +$·¿m‘” +)-> + +48 + `checkEËm’t +('#compڒtV¬P¬am .compڒt_v¬P¬am_compڒtP¬am_'. +$·¿m‘” +)-> + +51 + `checkEËm’t +('#cڋxtu®Compڒˆ.cڋxtu®Compڒt__compڒtP¬am_'. +$·¿m‘” +)-> + +52 + `checkEËm’t +('#cڋxtu®CompڒtV¬P¬am .cڋxtu®Compڒt_v¬P¬am_compڒtP¬am_'. +$·¿m‘” +)-> + +53 + `checkEËm’t +('#cڋxtu®Cach—bËCompڒˆ.cڋxtu®Cach—bËCompڒt__compڒtP¬am_'. +$·¿m‘” +, 'Param: '.$parameter)-> + +54 + `checkEËm’t +('#cڋxtu®Cach—bËCompڒtV¬P¬am .cڋxtu®Cach—bËCompڒt_v¬P¬am_compڒtP¬am_'. +$·¿m‘” +, 'Param: '.$parameter)-> + +55 + `’d +()-> + +57 + `w™h +('v›w_ÿche')-> + `begš +()-> + +58 + `isCached +( +çl£ +)-> + +61 + `isUriCached +('@sf_ÿche_·¹Ÿl?moduË=ÿche&aùiÚ=_·¹Ÿl&sf_ÿche_key='. + `md5 +( + `£rŸlize +( + `¬¿y +())), +çl£ +)-> + +62 + `isUriCached +('@sf_ÿche_·¹Ÿl?moduË=ÿche&aùiÚ=_·¹Ÿl&sf_ÿche_key='. + `md5 +( + `£rŸlize +( + `¬¿y +('v¬P¬am' => 'v¬P¬am'))), +çl£ +)-> + +64 + `isUriCached +('@sf_ÿche_·¹Ÿl?moduË=ÿche&aùiÚ=_ÿch—bËP¬tŸl&sf_ÿche_key='. + `md5 +( + `£rŸlize +( + `¬¿y +())), +Œue +)-> + +65 + `isUriCached +('@sf_ÿche_·¹Ÿl?moduË=ÿche&aùiÚ=_ÿch—bËP¬tŸl&sf_ÿche_key='. + `md5 +( + `£rŸlize +( + `¬¿y +('v¬P¬am' => 'v¬P¬am'))), +Œue +)-> + +67 + `isUriCached +('@sf_ÿche_·¹Ÿl?moduË=ÿche&aùiÚ=_ÿch—bËP¬tŸl&sf_ÿche_key='. + `md5 +( + `£rŸlize +( + `¬¿y +('v¬P¬am' => 'ªÙh”'))), +çl£ +)-> + +70 + `isUriCached +('@sf_ÿche_·¹Ÿl?moduË=ÿche&aùiÚ=_cڋxtu®P¬tŸl&sf_ÿche_key='. + `md5 +( + `£rŸlize +( + `¬¿y +())), +çl£ +)-> + +71 + `isUriCached +('@sf_ÿche_·¹Ÿl?moduË=ÿche&aùiÚ=_cڋxtu®P¬tŸl&sf_ÿche_key='. + `md5 +( + `£rŸlize +( + `¬¿y +('v¬P¬am' => 'v¬P¬am'))), +çl£ +)-> + +73 + `isUriCached +('@sf_ÿche_·¹Ÿl?moduË=ÿche&aùiÚ=_cڋxtu®Cach—bËP¬tŸl&sf_ÿche_key='. + `md5 +( + `£rŸlize +( + `¬¿y +())), +Œue +)-> + +74 + `isUriCached +('@sf_ÿche_·¹Ÿl?moduË=ÿche&aùiÚ=_cڋxtu®Cach—bËP¬tŸl&sf_ÿche_key='. + `md5 +( + `£rŸlize +( + `¬¿y +('v¬P¬am' => 'v¬P¬am'))), +Œue +)-> + +76 + `isUriCached +('@sf_ÿche_·¹Ÿl?moduË=ÿche&aùiÚ=_cڋxtu®Cach—bËP¬tŸl&sf_ÿche_key='. + `md5 +( + `£rŸlize +( + `¬¿y +('v¬P¬am' => 'ªÙh”'))), +çl£ +)-> + +79 + `isUriCached +('@sf_ÿche_·¹Ÿl?moduË=ÿche&aùiÚ=_compڒt&sf_ÿche_key='. + `md5 +( + `£rŸlize +( + `¬¿y +())), +çl£ +)-> + +80 + `isUriCached +('@sf_ÿche_·¹Ÿl?moduË=ÿche&aùiÚ=_compڒt&sf_ÿche_key='. + `md5 +( + `£rŸlize +( + `¬¿y +('v¬P¬am' => 'v¬P¬am'))), +çl£ +)-> + +82 + `isUriCached +('@sf_ÿche_·¹Ÿl?moduË=ÿche&aùiÚ=_ÿch—bËCompڒt&sf_ÿche_key='. + `md5 +( + `£rŸlize +( + `¬¿y +())), +Œue +)-> + +83 + `isUriCached +('@sf_ÿche_·¹Ÿl?moduË=ÿche&aùiÚ=_ÿch—bËCompڒt&sf_ÿche_key='. + `md5 +( + `£rŸlize +( + `¬¿y +('v¬P¬am' => 'v¬P¬am'))), +Œue +)-> + +85 + `isUriCached +('@sf_ÿche_·¹Ÿl?moduË=ÿche&aùiÚ=_ÿch—bËCompڒt&sf_ÿche_key='. + `md5 +( + `£rŸlize +( + `¬¿y +('v¬P¬am' => 'ªÙh”'))), +çl£ +)-> + +88 + `isUriCached +('@sf_ÿche_·¹Ÿl?moduË=ÿche&aùiÚ=_cڋxtu®Compڒt&sf_ÿche_key='. + `md5 +( + `£rŸlize +( + `¬¿y +())), +çl£ +)-> + +89 + `isUriCached +('@sf_ÿche_·¹Ÿl?moduË=ÿche&aùiÚ=_cڋxtu®Compڒt&sf_ÿche_key='. + `md5 +( + `£rŸlize +( + `¬¿y +('v¬P¬am' => 'v¬P¬am'))), +çl£ +)-> + +91 + `isUriCached +('@sf_ÿche_·¹Ÿl?moduË=ÿche&aùiÚ=_cڋxtu®Cach—bËCompڒt&sf_ÿche_key='. + `md5 +( + `£rŸlize +( + `¬¿y +())), +Œue +)-> + +92 + `isUriCached +('@sf_ÿche_·¹Ÿl?moduË=ÿche&aùiÚ=_cڋxtu®Cach—bËCompڒt&sf_ÿche_key='. + `md5 +( + `£rŸlize +( + `¬¿y +('v¬P¬am' => 'v¬P¬am'))), +Œue +)-> + +94 + `isUriCached +('@sf_ÿche_·¹Ÿl?moduË=ÿche&aùiÚ=_cڋxtu®Cach—bËCompڒt&sf_ÿche_key='. + `md5 +( + `£rŸlize +( + `¬¿y +('v¬P¬am' => 'ªÙh”'))), +çl£ +)-> + +95 + `’d +() + +97 + } +} + +99 +public + +funùiÚ + + $Ïunch +() + +101 +$b + = +$this +; + +104 +$b +-> + +105 + `g‘ +('/')-> + +106 + `w™h +('»que¡')-> + `begš +()-> + +107 + `isP¬am‘” +('module', 'default')-> + +108 + `isP¬am‘” +('action', 'index')-> + +109 + `’d +()-> + +111 + `w™h +('»¥Ú£')-> + `begš +()-> + +112 + `isStusCode +(200)-> + +113 + `checkEËm’t +('body', '/congratulations/i')-> + +114 + `’d +()-> + +116 + `w™h +('v›w_ÿche')-> + `isCached +( +Œue +) + +119 +$b +-> + +120 + `g‘ +('/nocache')-> + +121 + `w™h +('»que¡')-> + `begš +()-> + +122 + `isP¬am‘” +('module', 'nocache')-> + +123 + `isP¬am‘” +('action', 'index')-> + +124 + `’d +()-> + +125 + `w™h +('»¥Ú£')-> + `begš +()-> + +126 + `isStusCode +(200)-> + +127 + `checkEËm’t +('body', '/nocache/i')-> + +128 + `’d +()-> + +129 + `w™h +('v›w_ÿche')-> + `isCached +( +çl£ +) + +132 +$b +-> + +133 + `g‘ +('/cache/page')-> + +134 + `w™h +('»que¡')-> + `begš +()-> + +135 + `isP¬am‘” +('module', 'cache')-> + +136 + `isP¬am‘” +('action', 'page')-> + +137 + `’d +()-> + +138 + `w™h +('»¥Ú£')-> + `begš +()-> + +139 + `isStusCode +(200)-> + +140 + `checkEËm’t +('body', '/page in cache/')-> + +141 + `’d +()-> + +142 + `w™h +('v›w_ÿche')-> + `isCached +( +Œue +,rue) + +145 +$b +-> + +146 + `g‘ +('/cache/forward')-> + +147 + `w™h +('»que¡')-> + `begš +()-> + +148 + `isP¬am‘” +('module', 'cache')-> + +149 + `isP¬am‘” +('action', 'forward')-> + +150 + `’d +()-> + +151 + `w™h +('»¥Ú£')-> + `begš +()-> + +152 + `isStusCode +(200)-> + +153 + `checkEËm’t +('body', '/page in cache/')-> + +154 + `’d +()-> + +155 + `w™h +('v›w_ÿche')-> + `isCached +( +Œue +) + +159 +sfToÞk™ +:: + `þ—rDœeùÜy +( +sfCÚfig +:: + `g‘ +('sf_app_cache_dir')); + +161 +$b +-> + +162 + `g‘MuÉiAùiÚ +()-> + +164 + `g‘MuÉiAùiÚ +('requestParam')-> + +167 + `w™h +('»¥Ú£')-> + `begš +()-> + +168 + `checkEËm’t +('#cacheableComponent .cacheableComponent__componentParam_')-> + +169 + `checkEËm’t +('#cacheableComponentVarParam .cacheableComponent_varParam_componentParam_')-> + +170 + `checkEËm’t +('#cacheablePartial .cacheablePartial__')-> + +171 + `checkEËm’t +('#cacheablePartialVarParam .cacheablePartial_varParam_')-> + +172 + `’d +() + +176 +sfToÞk™ +:: + `þ—rDœeùÜy +( +sfCÚfig +:: + `g‘ +('sf_app_cache_dir')); + +178 +$b +-> + +179 + `g‘MuÉiAùiÚ +('requestParam')-> + +181 + `w™h +('»¥Ú£')-> + `begš +()-> + +182 + `checkEËm’t +('#cacheableComponent .cacheableComponent__componentParam_requestParam')-> + +183 + `checkEËm’t +('#cacheableComponentVarParam .cacheableComponent_varParam_componentParam_requestParam')-> + +184 + `checkEËm’t +('#cacheablePartial .cacheablePartial__requestParam')-> + +185 + `checkEËm’t +('#cacheablePartialVarParam .cacheablePartial_varParam_requestParam')-> + +186 + `’d +()-> + +188 + `g‘MuÉiAùiÚ +()-> + +190 + `w™h +('»¥Ú£')-> + `begš +()-> + +191 + `checkEËm’t +('#cacheableComponent .cacheableComponent__componentParam_requestParam')-> + +192 + `checkEËm’t +('#cacheableComponentVarParam .cacheableComponent_varParam_componentParam_requestParam')-> + +193 + `checkEËm’t +('#cacheablePartial .cacheablePartial__requestParam')-> + +194 + `checkEËm’t +('#cacheablePartialVarParam .cacheablePartial_varParam_requestParam')-> + +195 + `’d +()-> + +197 + `g‘MuÉiAùiÚ +('anotherRequestParam')-> + +199 + `w™h +('»¥Ú£')-> + `begš +()-> + +200 + `checkEËm’t +('#cacheableComponent .cacheableComponent__componentParam_requestParam')-> + +201 + `checkEËm’t +('#cacheableComponentVarParam .cacheableComponent_varParam_componentParam_requestParam')-> + +202 + `checkEËm’t +('#cacheablePartial .cacheablePartial__requestParam')-> + +203 + `checkEËm’t +('#cacheablePartialVarParam .cacheablePartial_varParam_requestParam')-> + +204 + `’d +() + +208 +$b +-> + +209 + `g‘ +('/cache/multiBis')-> + +210 + `w™h +('»que¡')-> + `begš +()-> + +211 + `isP¬am‘” +('module', 'cache')-> + +212 + `isP¬am‘” +('action', 'multiBis')-> + +213 + `’d +()-> + +215 + `w™h +('»¥Ú£')-> + `begš +()-> + +216 + `isStusCode +(200)-> + +219 + `checkEËm’t +('#cacheablePartial .cacheablePartial__requestParam')-> + +222 + `checkEËm’t +('#contextualCacheablePartial .contextualCacheablePartial__')-> + +225 + `checkEËm’t +('#cacheableComponent .cacheableComponent__componentParam_requestParam')-> + +228 + `checkEËm’t +('#contextualCacheableComponent .contextualCacheableComponent__componentParam_')-> + +229 + `’d +()-> + +231 + `w™h +('v›w_ÿche')-> + `begš +()-> + +232 + `isCached +( +çl£ +)-> + +234 + `isUriCached +('@sf_ÿche_·¹Ÿl?moduË=ÿche&aùiÚ=_ÿch—bËP¬tŸl&sf_ÿche_key='. + `md5 +( + `£rŸlize +( + `¬¿y +())), +Œue +)-> + +237 + `isUriCached +('@sf_ÿche_·¹Ÿl?moduË=ÿche&aùiÚ=_cڋxtu®Cach—bËCompڒt&sf_ÿche_key='. + `md5 +( + `£rŸlize +( + `¬¿y +())), +Œue +)-> + +240 + `isUriCached +('@sf_ÿche_·¹Ÿl?moduË=ÿche&aùiÚ=_ÿch—bËCompڒt&sf_ÿche_key='. + `md5 +( + `£rŸlize +( + `¬¿y +())), +Œue +)-> + +243 + `isUriCached +('@sf_ÿche_·¹Ÿl?moduË=ÿche&aùiÚ=_cڋxtu®Cach—bËCompڒt&sf_ÿche_key='. + `md5 +( + `£rŸlize +( + `¬¿y +())), +Œue +)-> + +244 + `’d +() + +248 +sfToÞk™ +:: + `þ—rDœeùÜy +( +sfCÚfig +:: + `g‘ +('sf_app_cache_dir')); + +251 +$b +-> + +252 + `g‘ +('/cache/specificCacheKey')-> + +253 + `w™h +('»que¡')-> + `begš +()-> + +254 + `isP¬am‘” +('module', 'cache')-> + +255 + `isP¬am‘” +('action', 'specificCacheKey')-> + +256 + `’d +()-> + +258 + `w™h +('»¥Ú£')-> + `isStusCode +(200)-> + +259 + `w™h +('v›w_ÿche')-> + `begš +(200)-> + +260 + `isCached +( +çl£ +)-> + +263 + `isUriCached +('@sf_ÿche_·¹Ÿl?moduË=ÿche&aùiÚ=_ÿch—bËP¬tŸl&sf_ÿche_key=ÿch—bËP¬tŸl', +Œue +)-> + +266 + `isUriCached +('@sf_ÿche_·¹Ÿl?moduË=ÿche&aùiÚ=_cڋxtu®Cach—bËCompڒt&sf_ÿche_key=cڋxtu®Cach—bËCompڒt', +Œue +)-> + +269 + `isUriCached +('@sf_ÿche_·¹Ÿl?moduË=ÿche&aùiÚ=_ÿch—bËCompڒt&sf_ÿche_key=ÿch—bËCompڒt', +Œue +)-> + +272 + `isUriCached +('@sf_ÿche_·¹Ÿl?moduË=ÿche&aùiÚ=_cڋxtu®Cach—bËCompڒt&sf_ÿche_key=cڋxtu®Cach—bËCompڒt', +Œue +)-> + +273 + `’d +() + +279 +sfToÞk™ +:: + `þ—rDœeùÜy +( +sfCÚfig +:: + `g‘ +('sf_app_cache_dir')); + +281 +$b +-> + +282 + `g‘ +('/cache/action')-> + +283 + `w™h +('»que¡')-> + `begš +()-> + +284 + `isP¬am‘” +('module', 'cache')-> + +285 + `isP¬am‘” +('action', 'action')-> + +286 + `’d +()-> + +287 + `w™h +('»¥Ú£')-> + `isStusCode +(200)-> + +288 + `w™h +('v›w_ÿche')-> + `isCached +( +Œue +) + +291 +$b +-> + `‹¡ +()-> + `is +( +sfCÚfig +:: + `g‘ +('ACTION_EXECUTED', +çl£ +), +Œue +, 'action isƒxecuted when‚ot in cache'); + +292 +sfCÚfig +:: + `£t +('ACTION_EXECUTED', +çl£ +); + +294 +$»¥Ú£ + = +$b +-> + `g‘Re¥Ú£ +(); + +295 +$cڋÁ1 + = +$»¥Ú£ +-> + `g‘CڋÁ +(); + +296 +$cڋÁTy³1 + = +$»¥Ú£ +-> + `g‘CڋÁTy³ +(); + +297 +$h—d”s1 + = +$»¥Ú£ +-> + `g‘H‰pH—d”s +(); + +299 +$b +-> + +300 + `g‘ +('/cache/action')-> + +301 + `w™h +('»que¡')-> + `begš +()-> + +302 + `isP¬am‘” +('module', 'cache')-> + +303 + `isP¬am‘” +('action', 'action')-> + +304 + `’d +()-> + +305 + `w™h +('»¥Ú£')-> + `isStusCode +(200)-> + +306 + `w™h +('v›w_ÿche')-> + `isCached +( +Œue +) + +309 +$b +-> + `‹¡ +()-> + `is +( +sfCÚfig +:: + `g‘ +('ACTION_EXECUTED', +çl£ +), false, 'action is‚otƒxecuted when in cache'); + +311 +$»¥Ú£ + = +$b +-> + `g‘Re¥Ú£ +(); + +312 +$cڋÁ2 + = +$»¥Ú£ +-> + `g‘CڋÁ +(); + +313 +$cڋÁTy³2 + = +$»¥Ú£ +-> + `g‘CڋÁTy³ +(); + +314 +$h—d”s2 + = +$»¥Ú£ +-> + `g‘H‰pH—d”s +(); + +316 +$b +-> + `‹¡ +()-> + `is +( +$cڋÁ1 +, +$cڋÁ2 +, 'response content ishe same'); + +317 +$b +-> + `‹¡ +()-> + `is +( +$cڋÁTy³1 +, +$cڋÁTy³2 +, 'response contentype ishe same'); + +318 +$b +-> + `‹¡ +()-> + `is +( +$h—d”s1 +, +$h—d”s2 +, 'response http headers‡rehe same'); + +319 + } +} + +322 + g$b + = +Ãw + +myTe¡Brow£r +(); + +325 + g$image + = +fže_g‘_cڋÁs +( +dœÇme +( +__FILE__ +).'/fixtures/apps/cache/modules/cache/data/ok48.png'); + +326 + gsfCÚfig +:: +£t +('sf_web_debug', +Œue +); + +327 + g$b +-> + +328 +g‘ +('/cache/imageWithLayoutCacheWithLayout')-> + +329 +w™h +('v›w_ÿche')-> +isCached +( +Œue +,rue)-> + +330 +checkRe¥Ú£CڋÁ +( +$image +, 'image (with†ayout/page cache) in cache is‚ot decorated when web_debug is on')-> + +331 +g‘ +('/cache/imageWithLayoutCacheWithLayout')-> + +332 +w™h +('v›w_ÿche')-> +isCached +( +Œue +,rue)-> + +333 +checkRe¥Ú£CڋÁ +( +$image +, 'image (with†ayout/page cache) in cache is‚ot decorated when web_debug is on')-> + +334 +g‘ +('/cache/imageWithLayoutCacheNoLayout')-> + +335 +w™h +('v›w_ÿche')-> +isCached +( +Œue +)-> + +336 +checkRe¥Ú£CڋÁ +( +$image +, 'image (with†ayout/action cache) in cache is‚ot decorated when web_debug is on')-> + +337 +g‘ +('/cache/imageWithLayoutCacheNoLayout')-> + +338 +w™h +('v›w_ÿche')-> +isCached +( +Œue +)-> + +339 +checkRe¥Ú£CڋÁ +( +$image +, 'image (with†ayout/action cache) in cache is‚ot decorated when web_debug is on')-> + +340 +g‘ +('/cache/imageNoLayoutCacheWithLayout')-> + +341 +w™h +('v›w_ÿche')-> +isCached +( +Œue +,rue)-> + +342 +checkRe¥Ú£CڋÁ +( +$image +, 'image (no†ayout/page cache) in cache is‚ot decorated when web_debug is on')-> + +343 +g‘ +('/cache/imageNoLayoutCacheWithLayout')-> + +344 +w™h +('v›w_ÿche')-> +isCached +( +Œue +,rue)-> + +345 +checkRe¥Ú£CڋÁ +( +$image +, 'image (no†ayout/page cache) in cache is‚ot decorated when web_debug is on')-> + +346 +g‘ +('/cache/imageNoLayoutCacheNoLayout')-> + +347 +w™h +('v›w_ÿche')-> +isCached +( +Œue +)-> + +348 +checkRe¥Ú£CڋÁ +( +$image +, 'image (no†ayout/action cache) in cache is‚ot decorated when web_debug is on')-> + +349 +g‘ +('/cache/imageNoLayoutCacheNoLayout')-> + +350 +w™h +('v›w_ÿche')-> +isCached +( +Œue +)-> + +351 +checkRe¥Ú£CڋÁ +( +$image +, 'image (no†ayout/action cache) in cache is‚ot decorated when web_debug is on') + +353 + gsfCÚfig +:: +£t +('sf_web_debug', +çl£ +); + +356 + gsfToÞk™ +:: +þ—rDœeùÜy +( +sfCÚfig +:: +g‘ +('sf_app_cache_dir')); + +357 + g$b +-> + +358 +g‘ +('/cache/multiBis')-> + +359 +w™h +('»que¡')-> +begš +()-> + +360 +isP¬am‘” +('module', 'cache')-> + +361 +isP¬am‘” +('action', 'multiBis')-> + +362 +’d +()-> + +364 +w™h +('»¥Ú£')-> +begš +()-> + +365 +isStusCode +(200)-> + +368 +checkEËm’t +('link[href*="/main_css"]')-> + +369 +checkEËm’t +('script[src*="/main_js"]')-> + +370 +checkEËm’t +('link[href*="/partial_css"]')-> + +371 +checkEËm’t +('script[src*="/partial_js"]')-> + +372 +checkEËm’t +('link[href*="/another_partial_css"]')-> + +373 +checkEËm’t +('script[src*="/another_partial_js"]')-> + +374 +checkEËm’t +('link[href*="/component_css"]')-> + +375 +checkEËm’t +('script[src*="/component_js"]')-> + +377 +checkEËm’t +('#partial_slot_content', 'Partial')-> + +378 +checkEËm’t +('#another_partial_slot_content', 'Another Partial')-> + +379 +checkEËm’t +('#component_slot_content', 'Component')-> + +380 +’d +()-> + +382 +g‘ +('/cache/multiBis')-> + +383 +w™h +('»¥Ú£')-> +begš +()-> + +386 +checkEËm’t +('link[href*="/main_css"]')-> + +387 +checkEËm’t +('script[src*="/main_js"]')-> + +388 +checkEËm’t +('link[href*="/partial_css"]')-> + +389 +checkEËm’t +('script[src*="/partial_js"]')-> + +390 +checkEËm’t +('link[href*="/another_partial_css"]')-> + +391 +checkEËm’t +('script[src*="/another_partial_js"]')-> + +392 +checkEËm’t +('link[href*="/component_css"]')-> + +393 +checkEËm’t +('script[src*="/component_js"]')-> + +395 +checkEËm’t +('#partial_slot_content', 'Partial')-> + +396 +checkEËm’t +('#another_partial_slot_content', 'Another Partial')-> + +397 +checkEËm’t +('#component_slot_content', 'Component')-> + +398 +’d +() + +401 + g$b +-> + +402 +g‘ +('/cache/partial')-> + +403 +w™h +('»que¡')-> +begš +()-> + +404 +isP¬am‘” +('module', 'cache')-> + +405 +isP¬am‘” +('action', 'partial')-> + +406 +’d +()-> + +408 +w™h +('»¥Ú£')-> +begš +()-> + +409 +isStusCode +(200)-> + +412 +checkEËm’t +('lšk[h»f*="/maš_css"]', +çl£ +)-> + +413 +checkEËm’t +('süt[¤c*="/maš_js"]', +çl£ +)-> + +414 +checkEËm’t +('link[href*="/partial_css"]')-> + +415 +checkEËm’t +('script[src*="/partial_js"]')-> + +416 +checkEËm’t +('link[href*="/another_partial_css"]')-> + +417 +checkEËm’t +('script[src*="/another_partial_js"]')-> + +418 +checkEËm’t +('lšk[h»f*="/compڒt_css"]', +çl£ +)-> + +419 +checkEËm’t +('süt[¤c*="/compڒt_js"]', +çl£ +)-> + +421 +checkEËm’t +('#partial_slot_content', 'Partial')-> + +422 +checkEËm’t +('#another_partial_slot_content', 'Another Partial')-> + +423 +checkEËm’t +('#component_slot_content', '')-> + +424 +’d +()-> + +426 +g‘ +('/cache/anotherPartial')-> + +427 +w™h +('»que¡')-> +begš +()-> + +428 +isP¬am‘” +('module', 'cache')-> + +429 +isP¬am‘” +('action', 'anotherPartial')-> + +430 +’d +()-> + +432 +w™h +('»¥Ú£')-> +begš +()-> + +433 +isStusCode +(200)-> + +436 +checkEËm’t +('lšk[h»f*="/maš_css"]', +çl£ +)-> + +437 +checkEËm’t +('süt[¤c*="/maš_js"]', +çl£ +)-> + +438 +checkEËm’t +('lšk[h»f*="/·¹Ÿl_css"]', +çl£ +)-> + +439 +checkEËm’t +('süt[¤c*="/·¹Ÿl_js"]', +çl£ +)-> + +440 +checkEËm’t +('link[href*="/another_partial_css"]')-> + +441 +checkEËm’t +('script[src*="/another_partial_js"]')-> + +442 +checkEËm’t +('lšk[h»f*="/compڒt_css"]', +çl£ +)-> + +443 +checkEËm’t +('süt[¤c*="/compڒt_js"]', +çl£ +)-> + +445 +checkEËm’t +('#partial_slot_content', '')-> + +446 +checkEËm’t +('#another_partial_slot_content', 'Another Partial')-> + +447 +checkEËm’t +('#component_slot_content', '')-> + +448 +’d +()-> + +450 +g‘ +('/cache/component')-> + +451 +w™h +('»que¡')-> +begš +()-> + +452 +isP¬am‘” +('module', 'cache')-> + +453 +isP¬am‘” +('action', 'component')-> + +454 +’d +()-> + +456 +w™h +('»¥Ú£')-> +begš +()-> + +457 +isStusCode +(200)-> + +460 +checkEËm’t +('lšk[h»f*="/maš_css"]', +çl£ +)-> + +461 +checkEËm’t +('süt[¤c*="/maš_js"]', +çl£ +)-> + +462 +checkEËm’t +('lšk[h»f*="/·¹Ÿl_css"]', +çl£ +)-> + +463 +checkEËm’t +('süt[¤c*="/·¹Ÿl_js"]', +çl£ +)-> + +464 +checkEËm’t +('lšk[h»f*="/ªÙh”_·¹Ÿl_css"]', +çl£ +)-> + +465 +checkEËm’t +('süt[¤c*="/ªÙh”_·¹Ÿl_js"]', +çl£ +)-> + +466 +checkEËm’t +('link[href*="/component_css"]')-> + +467 +checkEËm’t +('script[src*="/component_js"]')-> + +469 +checkEËm’t +('#partial_slot_content', '')-> + +470 +checkEËm’t +('#another_partial_slot_content', '')-> + +471 +checkEËm’t +('#component_slot_content', 'Component')-> + +472 +’d +() + +475 + g$b +-> +g‘ +('/') + +476 -> +w™h +('v›w_ÿche')-> +isUriCached +('ÿche/li¡', +çl£ +) + +477 -> +g‘ +('/cache/list') + +478 -> +w™h +('v›w_ÿche')-> +isUriCached +('ÿche/li¡', +Œue +) + +481 -> +w™h +('v›w_ÿche')-> +isUriCached +('ÿche/li¡?·ge=10', +çl£ +) + +482 -> +g‘ +('/cache/list?page=10') + +483 -> +w™h +('»¥Ú£')-> +checkEËm’t +('#page', '10') + +484 -> +w™h +('v›w_ÿche')-> +isUriCached +('ÿche/li¡?·ge=10', +Œue +) + +487 -> +w™h +('v›w_ÿche')-> +isUriCached +('ÿche/li¡?·ge=20', +çl£ +) + +488 -> +g‘ +('/cache/list?page=20') + +489 -> +w™h +('»¥Ú£')-> +checkEËm’t +('#page', '20') + +490 -> +w™h +('v›w_ÿche')-> +isUriCached +('ÿche/li¡?·ge=20', +Œue +) + +494 + gsfCÚfig +:: +£t +('LAST_MODIFIED', +¡¹Ùime +('2010-01-01')); + +495 + g$b +-> +g‘ +('/cache/lastModifiedResponse') + +496 -> +w™h +('»¥Ú£')-> +isStusCode +(200) + +499 + g$b +-> +£tH‰pH—d” +('If-Modif›d-Sšû', +sfWebRe¥Ú£ +:: +g‘D©e +( +sfCÚfig +:: +g‘ +('LAST_MODIFIED'))) + +500 -> +g‘ +('/cache/lastModifiedResponse') + +501 -> +w™h +('»¥Ú£')-> +isStusCode +(304) + +505 + g$b +-> +Ïunch +(); + +508 ià( +ex‹nsiÚ_lßded +('SQLite') ||ƒxtension_loaded('pdo_SQLite')) + +510 + gsfCÚfig +:: +£t +('sf_factory_view_cache', 'sfSQLiteCache'); + +511 + gsfCÚfig +:: +£t +('sf_çùÜy_v›w_ÿche_·¿m‘”s', +¬¿y +('d©aba£' => +sfCÚfig +:: +g‘ +('sf_‹m¶©e_ÿche_dœ'). +DIRECTORY_SEPARATOR +.'cache.db')); + +512 + g$b +-> +Ïunch +(); + + @lib/vendor/symfony/test/functional/escapingTest.php + +1 +g‘ +('/escaping/on') + +21 -> +w™h +('»que¡')-> +begš +() + +22 -> +isP¬am‘” +('module', 'escaping') + +23 -> +isP¬am‘” +('action', 'on') + +24 -> +’d +() + +26 -> +w™h +('»¥Ú£')-> +begš +() + +27 -> +isStusCode +(200) + +28 -> +m©ches +('#

    Lorem <strong>ipsum</strong> dolor sit‡met.

    #') + +29 -> +m©ches +('#

    Lorem <strong>ipsum</strong> dolor sit‡met.

    #') + +30 -> +m©ches +('#

    Lorem <strong>ipsum</strong> dolor sit‡met.

    #') + +31 -> +m©ches +('#

    Lorem ipsum dolor sit‡met.

    #') + +32 -> +m©ches +('#
    Lorem <strong>ipsum</strong> dolor sit‡met.
    #') + +33 -> +m©ches +('#
    Lorem ipsum dolor sit‡met.
    #') + +34 -> +checkEËm’t +('span.no', 2) + +35 -> +’d +() + +38 + g$b +-> +g‘ +('/escaping/off') + +40 -> +w™h +('»que¡')-> +begš +() + +41 -> +isP¬am‘” +('module', 'escaping') + +42 -> +isP¬am‘” +('action', 'off') + +43 -> +’d +() + +45 -> +w™h +('»¥Ú£')-> +begš +() + +46 -> +isStusCode +(200) + +47 -> +m©ches +('#

    Lorem ipsum dolor sit‡met.

    #') + +48 -> +m©ches +('#

    Lorem ipsum dolor sit‡met.

    #') + +49 -> +’d +() + + @lib/vendor/symfony/test/functional/filterTest.php + +1 + +21 +g‘ +('/filter')-> + +22 +w™h +('»que¡')-> +begš +()-> + +23 +isP¬am‘” +('module', 'filter')-> + +24 +isP¬am‘” +('action', 'index')-> + +25 +’d +()-> + +26 +w™h +('»¥Ú£')-> +begš +()-> + +27 +isStusCode +(200)-> + +28 +checkEËm’t +('div[class="before"]', 1)-> + +29 +checkEËm’t +('div[class="after"]', 1)-> + +30 +’d +() + +34 + g$b +-> + +35 +g‘ +('/filter/indexWithForward')-> + +36 +w™h +('»que¡')-> +begš +()-> + +37 +isP¬am‘” +('module', 'filter')-> + +38 +isP¬am‘” +('action', 'indexWithForward')-> + +39 +’d +()-> + +40 +w™h +('»¥Ú£')-> +begš +()-> + +41 +isStusCode +(200)-> + +42 +checkEËm’t +('div[class="before"]', 2)-> + +43 +checkEËm’t +('div[class="after"]', 1)-> + +44 +’d +() + + @lib/vendor/symfony/test/functional/fixtures/apps/cache/config/cacheConfiguration.class.php + +1 +·ge + = +$»que¡ +-> + `g‘P¬am‘” +('page', 1); + +24 + } +} + +26 +public + +funùiÚ + + $execu‹FÜw¬d +() + +28 +$this +-> + `fÜw¬d +('cache', 'page'); + +29 + } +} + +31 +public + +funùiÚ + + $execu‹MuÉi +() + +33 +$this +-> + `g‘Re¥Ú£ +()-> + `£tT™Ë +('P¬am: '.$this-> + `g‘Reque¡P¬am‘” +('param')); + +34 + } +} + +36 +public + +funùiÚ + + $execu‹MuÉiBis +() + +38 + } +} + +40 +public + +funùiÚ + + $execu‹P¬tŸl +() + +42 + } +} + +44 +public + +funùiÚ + + $execu‹AnÙh”P¬tŸl +() + +46 + } +} + +48 +public + +funùiÚ + + $execu‹Compڒt +() + +50 + } +} + +52 +public + +funùiÚ + + $execu‹S³cificCacheKey +() + +54 + } +} + +56 +public + +funùiÚ + + $execu‹AùiÚ +() + +58 +$»¥Ú£ + = +$this +-> + `g‘Re¥Ú£ +(); + +59 +$»¥Ú£ +-> + `£tH‰pH—d” +('symfony', 'foo'); + +60 +$»¥Ú£ +-> + `£tCڋÁTy³ +('text/plain'); + +61 +$»¥Ú£ +-> + `£tT™Ë +('Myitle'); + +62 +$»¥Ú£ +-> + `addM‘a +('meta1', 'bar'); + +63 +$»¥Ú£ +-> + `addH‰pM‘a +('httpmeta1', 'foobar'); + +65 +sfCÚfig +:: + `£t +('ACTION_EXECUTED', +Œue +); + +66 + } +} + +68 +public + +funùiÚ + + $execu‹ImageW™hLayoutCacheW™hLayout +() + +70 +$this +-> + `´•¬eImage +(); + +71 +$this +-> + `£tLayout +('image'); + +72 + } +} + +74 +public + +funùiÚ + + $execu‹ImageW™hLayoutCacheNoLayout +() + +76 +$this +-> + `´•¬eImage +(); + +77 +$this +-> + `£tLayout +('image'); + +78 + } +} + +80 +public + +funùiÚ + + $execu‹ImageNoLayoutCacheW™hLayout +() + +82 +$this +-> + `´•¬eImage +(); + +83 +$this +-> + `£tLayout +( +çl£ +); + +84 + } +} + +86 +public + +funùiÚ + + $execu‹ImageNoLayoutCacheNoLayout +() + +88 +$this +-> + `´•¬eImage +(); + +89 +$this +-> + `£tLayout +( +çl£ +); + +90 + } +} + +92 +´Ùeùed + +funùiÚ + + $´•¬eImage +() + +94 +$this +-> + `g‘Re¥Ú£ +()-> + `£tCڋÁTy³ +('image/png'); + +95 +$this +-> +image + = + `fže_g‘_cڋÁs +( + `dœÇme +( +__FILE__ +).'/../data/ok48.png'); + +96 +$this +-> + `£tTem¶©e +('image'); + +97 + } +} + +99 +public + +funùiÚ + + $execu‹La¡Modif›dRe¥Ú£ +() + +101 +$this +-> + `g‘Re¥Ú£ +()-> + `£tH‰pH—d” +('La¡-Modif›d', $this->g‘Re¥Ú£()-> + `g‘D©e +( +sfCÚfig +:: + `g‘ +('LAST_MODIFIED'))); + +102 +$this +-> + `£tTem¶©e +('action'); + +103 + } +} + + @lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/actions/components.class.php + +1 +compڒtP¬am + = 'componentParam'; + +16 +$this +-> +»que¡P¬am + = $this-> + `g‘Reque¡P¬am‘” +('param'); + +19 +public + +funùiÚ + + $execu‹Cach—bËCompڒt +() + +21 +$this +-> +compڒtP¬am + = 'componentParam'; + +22 +$this +-> +»que¡P¬am + = $this-> + `g‘Reque¡P¬am‘” +('param'); + +23 + } +} + +25 +public + +funùiÚ + + $execu‹Cڋxtu®Compڒt +() + +27 +$this +-> +compڒtP¬am + = 'componentParam'; + +28 +$this +-> +»que¡P¬am + = $this-> + `g‘Reque¡P¬am‘” +('param'); + +29 + } +} + +31 +public + +funùiÚ + + $execu‹Cڋxtu®Cach—bËCompڒt +() + +33 +$this +-> +compڒtP¬am + = 'componentParam'; + +34 +$this +-> +»que¡P¬am + = $this-> + `g‘Reque¡P¬am‘” +('param'); + +35 + } +} + + @lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/_anotherCacheablePartial.php + +1 + +2 + +4 < +div + + gþass +="ÿch—bËP¬tŸl__g‘('·¿m'è?>"> +OK + + +5 + +6 + +8 < +div + +þass +="ÿch—bËP¬tŸl__g‘('·¿m'è?>"> +OK + + +10 +AnÙh” + +P¬tŸl + + + @lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/_cacheableComponent.php + +1 + +2 + +4 < +div + + gþass +="ÿch—bËCompڒt___"> +OK + + +6 +Compڒt + + + @lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/_cacheablePartial.php + +1 + +2 + +4 < +div + + gþass +="ÿch—bËP¬tŸl__g‘('·¿m'è?>"> +OK + + +6 < +div + +id +="ªÙh”Cach—bËP¬tŸl"> + +8 +P¬tŸl + + + @lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/_component.php + +1 < +div + + gþass +="compڒt___"> +OK + + + @lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/_contextualCacheableComponent.php + +1 < +div + + gþass +="cڋxtu®Cach—bËCompڒt___"> +g‘T™Ë +() ?> + + @lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/_contextualCacheablePartial.php + +1 < +div + + gþass +="cڋxtu®Cach—bËP¬tŸl__g‘('·¿m'è?>"> +g‘T™Ë +() ?> + + @lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/_contextualComponent.php + +1 < +div + + gþass +="cڋxtu®Compڒt___"> +OK + + + @lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/_contextualPartial.php + +1 < +div + + gþass +="cڋxtu®P¬tŸl"> +OK + + + @lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/_partial.php + +1 < +div + + gþass +="·¹Ÿl"> +OK + + + @lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/actionSuccess.php + +1 +AùiÚ + +ÿche + +HTML + content + + @lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/anotherPartialSuccess.php + +1 < +div + + gid +="ªÙh”Cach—bËP¬tŸl"> + + @lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/componentSuccess.php + +1 < +div + + gid +="ÿch—bËCompڒt"> + +2 < +div + + gid +="ÿch—bËCompڒt"> + + @lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/imageSuccess.php + +1 + + @lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/indexSuccess.php + +1 < + gh1 +> +ModuË + + gÿche + + +3 < + gp +> + gCÚg¿tuÏtiÚs +!

    + + @lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/listSuccess.php + +1 < +¥ª + + gid +="·ge"> + + @lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/multiBisSuccess.php + +1 + +2 + +4 < +div + + gid +="ÿch—bËP¬tŸl"> + +6 < +div + +id +="cڋxtu®Cach—bËP¬tŸl"> + +8 < +div + +id +="ÿch—bËCompڒt"> + +10 < +div + + gid +="cڋxtu®Cach—bËCompڒt"> + + @lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/multiSuccess.php + +1 < +div + + gid +="·¹Ÿl"> + +3 < +div + +id +="ÿch—bËP¬tŸl"> + +5 < +div + +id +="ÿch—bËP¬tŸlV¬P¬am"> 'varParam')) ?> + +8 < +div + +id +="cڋxtu®P¬tŸl"> + +10 < +div + +id +="cڋxtu®Cach—bËP¬tŸl"> + +12 < +div + +id +="cڋxtu®Cach—bËP¬tŸlV¬P¬am"> 'varParam')) ?> + +15 < +div + +id +="compڒt"> + +17 < +div + + gid +="compڒtV¬P¬am"> 'varParam')) ?> + +19 < +div + +id +="ÿch—bËCompڒt"> + +21 < +div + + gid +="ÿch—bËCompڒtV¬P¬am"> 'varParam')) ?> + +24 < +div + +id +="cڋxtu®Compڒt"> + +26 < +div + + gid +="cڋxtu®CompڒtV¬P¬am"> 'varParam')) ?> + +28 < +div + +id +="cڋxtu®Cach—bËCompڒt"> + +30 < +div + + gid +="cڋxtu®Cach—bËCompڒtV¬P¬am"> 'varParam')) ?> + + @lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/pageSuccess.php + +1 +·ge + +š + cache + + @lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/partialSuccess.php + +1 < +div + + gid +="ÿch—bËP¬tŸl"> + + @lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/specificCacheKeySuccess.php + +1 < +div + + gid +="ÿch—bËP¬tŸlV¬P¬am"> 'varParam', 'sf_cache_key' => 'cacheablePartial')) ?> + +2 < +div + +id +="cڋxtu®Cach—bËP¬tŸlV¬P¬am"> 'varParam', 'sf_cache_key' => 'contextualCacheablePartial')) ?> + +4 < +div + +id +="ÿch—bËCompڒtV¬P¬am"> 'varParam', 'sf_cache_key' => 'cacheableComponent')) ?> + +5 < +div + +id +="cڋxtu®Cach—bËCompڒtV¬P¬am"> 'varParam', 'sf_cache_key' => 'contextualCacheableComponent')) ?> + + @lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/actions/actions.class.php + +1 + `£tTem¶©e +('index'); + +10 +public + +funùiÚ + + $execu‹Page2 +( +sfWebReque¡ + +$»que¡ +) + +12 +$this +-> + `£tTem¶©e +('index'); + +13 + } +} + +15 +public + +funùiÚ + + $execu‹Page3 +( +sfWebReque¡ + +$»que¡ +) + +17 +$this +-> + `g‘Re¥Ú£ +()-> + `£tH‰pH—d” +('La¡-Modif›d', +sfWebRe¥Ú£ +:: + `g‘D©e +( + `time +() - 86400)); + +19 +$this +-> + `£tTem¶©e +('index'); + +20 + } +} + +22 +public + +funùiÚ + + $execu‹Page4 +( +sfWebReque¡ + +$»que¡ +) + +24 +$this +-> + `g‘Re¥Ú£ +()-> + `£tH‰pH—d” +('La¡-Modif›d', +sfWebRe¥Ú£ +:: + `g‘D©e +( + `time +() - 86400)); + +26 +$this +-> + `£tTem¶©e +('index'); + +27 + } +} + + @lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/templates/indexSuccess.php + +1 +H–lo + + gWÜld +! + + @lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/actions/actions.class.php + +1 +ModuË + + gnoÿche + + +3 < + gp +> + gCÚg¿tuÏtiÚs +!

    + + @lib/vendor/symfony/test/functional/fixtures/apps/cache/templates/image.php + +1 + + @lib/vendor/symfony/test/functional/fixtures/apps/cache/templates/layout.php + +1 + +2 < +html + + gxmÊs +="h‰p://www.w3.Üg/1999/xhtml" +xml +: +Ïng +="en"†ang="en"> + +3 < +h—d +> + +5 + +6 + +8 + +10 < +lšk + +»l +="shÜtcuˆicÚ" +h»f +="/favicon.ico" /> + +13 + +14 + +15 + +16 < +body +> + +18 + +20 < +div + +id +="compڒt_¦Ù_cڋÁ"> + +21 < +div + +id +="·¹Ÿl_¦Ù_cڋÁ"> + +22 < +div + +id +="ªÙh”_·¹Ÿl_¦Ù_cڋÁ"> + +24 + +25 + + @lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/frontendConfiguration.class.php + +1 +di¥©ch” +-> + `cÚÃù +('v›w.cÚfigu»_fÜm©', + `¬¿y +($this, 'configure_format_foo')); + +8 +$this +-> +di¥©ch” +-> + `cÚÃù +('»que¡.fž‹r_·¿m‘”s', + `¬¿y +($this, 'filter_parameters')); + +9 +$this +-> +di¥©ch” +-> + `cÚÃù +('v›w.cÚfigu»_fÜm©', + `¬¿y +($this, 'configure_iphone_format')); + +12 +public + +funùiÚ + + $fž‹r_·¿m‘”s +( +sfEv’t + +$ev’t +, +$·¿m‘”s +) + +14 ià( +çl£ + !=ð + `¡ros +( +$ev’t +-> + `g‘Subjeù +()-> + `g‘H‰pH—d” +('user-agent'), 'iPhone')) + +16 +$ev’t +-> + `g‘Subjeù +()-> + `£tReque¡FÜm© +('iphone'); + +19  +$·¿m‘”s +; + +20 + } +} + +22 +public + +funùiÚ + + $cÚfigu»_hÚe_fÜm© +( +sfEv’t + +$ev’t +) + +24 ià('hÚe' =ð +$ev’t +['format']) + +26 +$ev’t +['»¥Ú£']-> + `addStyËsh“t +('iphone.css'); + +28 +$ev’t +-> + `g‘Subjeù +()-> + `£tDecÜ©Ü +( +Œue +); + +30 + } +} + +32 +public + +funùiÚ + + $cÚfigu»_fÜm©_foo +( +sfEv’t + +$ev’t +) + +34 ià('foo' !ð +$ev’t +['format']) + +39 +$ev’t +['»¥Ú£']-> + `£tH‰pH—d” +('x-foo', 'true'); + +40 +$ev’t +-> + `g‘Subjeù +()-> + `£tEx‹nsiÚ +('.php'); + +41 + } +} + + @lib/vendor/symfony/test/functional/fixtures/apps/frontend/lib/myAppsFrontendLibClass.class.php + +1 + `g‘Cڋxt +()-> + `g‘ModuËName +()) + +10 +$fž‹rChaš +-> + `execu‹ +(); + +14 +$»¥Ú£ + = +$this +-> + `g‘Cڋxt +()-> + `g‘Re¥Ú£ +(); + +16 +$»¥Ú£ +-> + `£tCڋÁ +($»¥Ú£-> + `g‘CڋÁ +().'
    '); + +18 +$fž‹rChaš +-> + `execu‹ +(); + +20 +$»¥Ú£ +-> + `£tCڋÁ +($»¥Ú£-> + `g‘CڋÁ +().'
    '); + +22 + } +} + + @lib/vendor/symfony/test/functional/fixtures/apps/frontend/lib/myUser.class.php + +1 + `g‘Re¥Ú£ +(); + +17 ià(! + `is£t +( +$_SERVER +['PHP_AUTH_USER'])) + +19 +$»¥Ú£ +-> + `£tStusCode +(401); + +20 +$»¥Ú£ +-> + `£tH‰pH—d” +('WWW-Authenticate', 'Basic„ealm="My Realm"'); + +22 +$this +-> +auth_u£r + = ''; + +23 +$this +-> +auth_·sswÜd + = ''; + +24 +$this +-> +msg + = 'KO'; + +28 +$this +-> +auth_u£r + = +$_SERVER +['PHP_AUTH_USER']; + +29 +$this +-> +auth_·sswÜd + = +$_SERVER +['PHP_AUTH_PW']; + +30 +$this +-> +msg + = 'OK'; + +33 + } +} + + @lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/auth/templates/basicSuccess.php + +1 < +div + + gid +="u£r">
    + +2 < +div + +id +="·sswÜd">
    + +3 < +div + +id +='msg'> + + @lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/actions/actions.class.php + +1 +lib1 + = +myLibCÏss +:: + `pšg +(); + +16 +$this +-> +lib2 + = +myAµsFrڋndLibCÏss +:: + `pšg +(); + +17 +$this +-> +lib3 + = +myAµsFrڋndModuËsAutÞßdLibCÏss +:: + `pšg +(); + +18 +$this +-> +lib4 + = + `þass_exi¡s +('myPluginsSfAutoloadPluginModulesAutoloadPluginLibClass') ? 'pong' : 'nopong'; + +21 +public + +funùiÚ + + $execu‹MyAutÞßd +() + +23 +$this +-> +o + = +Ãw + + `myAutÞßdedCÏss +(); + +24 + } +} + + @lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/lib/myAppsFrontendModulesAutoloadLib.class.php + +1 + +2 < +div + +id +="lib2"> + +3 < +div + +id +="lib3"> + +4 < +div + +id +="lib4"> + + @lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/templates/myAutoloadSuccess.php + +1 < + gdiv +> +g‘Foo +() ?> + + @lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/actions/actions.class.php + +1 + `»nd”Text +('

    html

    '); + +18 +public + +funùiÚ + + $execu‹Text +() + +20 +$this +-> + `g‘Re¥Ú£ +()-> + `£tCڋÁTy³ +('text/plain'); + +22  +$this +-> + `»nd”Text +('text'); + +23 + } +} + +25 +public + +funùiÚ + + $execu‹Re¥Ú£H—d” +() + +27 +$»¥Ú£ + = +$this +-> + `g‘Re¥Ú£ +(); + +29 +$»¥Ú£ +-> + `£tCڋÁTy³ +('text/plain'); + +30 +$»¥Ú£ +-> + `£tH‰pH—d” +('foo', 'b¬', +Œue +); + +31 +$»¥Ú£ +-> + `£tH‰pH—d” +('foo', 'foob¬', +çl£ +); + +33  +$this +-> + `»nd”Text +('ok'); + +34 + } +} + +36 +public + +funùiÚ + + $execu‹Tem¶©eCu¡om +( +$»que¡ +) + +38 ià( +$»que¡ +-> + `g‘P¬am‘” +('custom')) + +40 +$this +-> + `£tTem¶©e +('templateCustomCustom'); + +42 + } +} + +44 +public + +funùiÚ + + $execu‹Redœeù1 +() + +46 +$this +-> + `»dœeù +('browser/redirectTarget1'); + +47 + } +} + +49 +public + +funùiÚ + + $execu‹RedœeùT¬g‘1 +() + +51 + } +} + +53 +public + +funùiÚ + + $execu‹Redœeù2 +() + +55 +$this +-> + `»dœeù +('browser/redirectTarget2'); + +56 + } +} + +58 +public + +funùiÚ + + $execu‹RedœeùT¬g‘2 +() + +60  +$this +-> + `»nd”Text +('ok'); + +61 + } +} + + @lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/templates/redirectTarget1Success.php + +1 < + gh1 +> + gok + + + @lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/templates/templateCustomCustomSuccess.php + +1 < +div + + gid +="‹¡"> +‹m¶©e + 1 + + @lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/templates/templateCustomSuccess.php + +1 < +div + + gid +="‹¡"> +‹m¶©e + + + @lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/actions/actions.class.php + +1 + `g‘Cڋxt +()-> + `g‘Reque¡ +()-> + `£tP¬am‘” +('filter', 'in‡ filter'); + +10 +$fž‹rChaš +-> + `execu‹ +(); + +12 + } +} + + @lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/templates/indexSuccess.php + +1 +g‘ +('filter') ?> + + @lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/actions/actions.class.php + +1 + `fÜw¬d +('configSettingsMaxForwards', 'selfForward'); + +17 + } +} + + @lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/templates/indexSuccess.php + + @lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/actions/actions.class.php + +1 + `»nd”Text +('

    '. +$»que¡ +-> + `g‘Cook› +('foo').'.'.$request->getCookie('bar').'-'.$request->getCookie('foobar').'

    '); + +18 +public + +funùiÚ + + $execu‹S‘Cook› +( +$»que¡ +) + +20 +$this +-> + `g‘Re¥Ú£ +()-> + `£tCook› +('foobar', 'barfoo'); + +22  +sfV›w +:: +NONE +; + +23 + } +} + +25 +public + +funùiÚ + + $execu‹RemoveCook› +( +$»que¡ +) + +27 +$this +-> + `g‘Re¥Ú£ +()-> + `£tCook› +('foob¬', 'foofoob¬', + `time +() - 10); + +29  +sfV›w +:: +NONE +; + +30 + } +} + + @lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/actions/actions.class.php + +1 +v¬ + = 'Lorem ipsum dolor sit‡met.'; + +16 +$this +-> + `£tLayout +( +çl£ +); + +17 +$this +-> + `£tTem¶©e +('index'); + +20 +public + +funùiÚ + + $execu‹On +() + +22 +sfCÚfig +:: + `£t +('sf_esÿpšg_¡¿‹gy', +Œue +); + +23 + } +} + +25 +public + +funùiÚ + + $execu‹Off +() + +27 +sfCÚfig +:: + `£t +('sf_esÿpšg_¡¿‹gy', +çl£ +); + +28 + } +} + + @lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/templates/_partial1.php + +1 < + gh3 +> + +2 < + gh4 +> +g‘Raw +('var') ?> + +4 < +¥ª + + gþass +="getRaw('arr') ? 'yes' : 'no' ?>"> + +6 +$v¬ +, '¬r' => +$¬r +)) ?> + + @lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/templates/_partial2.php + +1 < + gh5 +> + +2 < + gh6 +> +g‘Raw +('var') ?> + +4 < +¥ª + + gþass +="getRaw('arr') ? 'yes' : 'no' ?>"> + + @lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/templates/indexSuccess.php + +1 < + gh1 +> + +2 < + gh2 +> +g‘ +('var') ?> + +4 +$v¬ +, 'arr' =>‡rray())) ?> + + @lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/exception/actions/actions.class.php + +1 + `»nd”Text +('foo'); + +18 +public + +funùiÚ + + $execu‹ThrowsExû±iÚ +() + +20 +throw + +Ãw + + `Exû±iÚ +('Exception message'); + +21 + } +} + +23 +public + +funùiÚ + + $execu‹ThrowsSfExû±iÚ +() + +25 +throw + +Ãw + + `sfExû±iÚ +('sfException message'); + +26 + } +} + + @lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/filter/actions/actions.class.php + +1 + `»nd”Text +('foo'); + +18 +public + +funùiÚ + + $execu‹IndexW™hFÜw¬d +() + +20 +$this +-> + `fÜw¬d +('filter', 'index'); + +21 + } +} + + @lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/actions/actions.class.php + +1 + `g‘Reque¡FÜm© +()) + +17 +$this +-> + `£tLayout +('layout'); + +21 +public + +funùiÚ + + $execu‹FÜTheIPhÚe +( +$»que¡ +) + +23 +$this +-> + `£tTem¶©e +('index'); + +24 + } +} + +26 +public + +funùiÚ + + $execu‹Js +( +$»que¡ +) + +28 +$»que¡ +-> + `£tReque¡FÜm© +('js'); + +29 + } +} + +31 +public + +funùiÚ + + $execu‹JsW™hAcû± +() + +33 +$this +-> + `£tTem¶©e +('index'); + +34 + } +} + +36 +public + +funùiÚ + + $execu‹ThrowsExû±iÚ +() + +38 +throw + +Ãw + + `Exû±iÚ +('Descriptive message'); + +39 + } +} + +41 +public + +funùiÚ + + $execu‹ThrowsNÚDebugExû±iÚ +() + +43 +sfCÚfig +:: + `£t +('sf_debug', +çl£ +); + +44 +throw + +Ãw + + `Exû±iÚ +('Descriptive message'); + +45 + } +} + + @lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/_js_header.js.php + +1 +Some + +js + + gh—d”s + + + @lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/indexSuccess.css.php + +1 +This + +is + +a + +css + file + + @lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/indexSuccess.iphone.php + +1 < +div + + gid +="cڋÁ"> +This + +is + +ª + +HTML + +fže +  +the + +iPhÚe + + + @lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/indexSuccess.js.php + +1 + +3 +This + +is + +a + +js + + gfže + + + @lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/indexSuccess.php + +1 < +div + + gid +="cڋÁ"> +This + +is + +ª + +HTML + +fže + + + @lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/indexSuccess.xml.php + +1 < + g£Á’û +> +This + +is + +a + +XML + + gfže + + + @lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/jsSuccess.js.php + +1 +A + +js + file + + @lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/notfound/actions/actions.class.php + +1 + `g‘Re¥Ú£ +()-> + `£tStusCode +(404); + +17  +$this +-> + `»nd”Text +('404'); + +19 + } +} + + @lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/actions/actions.class.php + +1 +foo + = $this-> + `g‘CڌÞËr +()-> + `g‘P»£Á©iÚFÜ +('presentation', 'foo'); + +18 +public + +funùiÚ + + $execu‹Foo +() + +20 +$this +-> + `£tLayout +( +çl£ +); + +21 + } +} + + @lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/templates/fooSuccess.php + + @lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/templates/indexSuccess.php + +1 < +div + + gid +="foo"> + +2 < +div + +id +="foo_bis"> +g‘CڌÞËr +()-> +g‘P»£Á©iÚFÜ +('´e£Á©iÚ', 'foo'è?> + + @lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/renderText/actions/actions.class.php + +1 + `»nd”Text +('foo'); + +17 + } +} + + @lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/actions/actions.class.php + +1 + `£tTem¶©e +('foo'); + +18 +public + +funùiÚ + + $execu‹PϚ +() + +20 + } +} + +22 +public + +funùiÚ + + $execu‹Image +() + +24 + } +} + + @lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/templates/fooSuccess.php + + @lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/templates/imageSuccess.php + + @lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/templates/plainSuccess.php + + @lib/vendor/symfony/test/functional/fixtures/apps/frontend/templates/layout.iphone.php + +1 + +2 < +html + + gxmÊs +="h‰p://www.w3.Üg/1999/xhtml" +xml +: +Ïng +="en"†ang="en"> + +3 < +h—d +> + +5 + +6 + +8 + +10 < +lšk + +»l +="shÜtcuˆicÚ" +h»f +="/favicon.ico" /> + +13 + +14 + +15 + +16 < +body +> + +18 + +20 + +21 + + @lib/vendor/symfony/test/functional/fixtures/apps/frontend/templates/layout.php + +1 + +2 < +html + + gxmÊs +="h‰p://www.w3.Üg/1999/xhtml" +xml +: +Ïng +="en"†ang="en"> + +3 < +h—d +> + +5 + +6 + +8 + +10 < +lšk + +»l +="shÜtcuˆicÚ" +h»f +="/favicon.ico" /> + +13 + +14 + +15 + +16 < +body +> + +18 + +20 + +21 + + @lib/vendor/symfony/test/functional/fixtures/apps/frontend/templates/layout.xml.php + +1 < + g£Á’ûs +> + +2 + +3 + + @lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/i18nConfiguration.class.php + +1 + `’abËPlugšs +('sfI18NPlugin'); + +10 + } +} + + @lib/vendor/symfony/test/functional/fixtures/apps/i18n/lib/myUser.class.php + +1 + `g‘Cڋxt +()-> + `g‘I18N +(); + +17 +$this +-> +‹¡ + = +$i18n +-> + `__ +('anƒnglish sentence'); + +18 +$this +-> +loÿlTe¡ + = +$i18n +-> + `__ +('a†ocalƒnglish sentence'); + +19 +$this +-> +Ùh”Te¡ + = +$i18n +-> + `__ +('ªƒnglish s’‹nû', + `¬¿y +(), 'other'); + +20 +$this +-> +Ùh”LoÿlTe¡ + = +$i18n +-> + `__ +('¨loÿȒglish s’‹nû', + `¬¿y +(), 'other'); + +23 +public + +funùiÚ + + $execu‹IndexFÜFr +() + +26 +$this +-> + `g‘U£r +()-> + `£tCuÉu» +('fr'); + +27 +$this +-> + `g‘U£r +()-> + `£tCuÉu» +('en'); + +28 +$this +-> + `g‘U£r +()-> + `£tCuÉu» +('fr'); + +30 +$this +-> + `fÜw¬d +('i18n', 'index'); + +31 + } +} + +33 +public + +funùiÚ + + $execu‹I18nFÜm +( +sfWebReque¡ + +$»que¡ +) + +35 +$this +-> +fÜm + = +Ãw + + `I18nFÜm +(); + +36 ià( +$»que¡ +-> + `isM‘hod +('post')) + +38 +$this +-> +fÜm +-> + `bšd +( +$»que¡ +-> + `g‘P¬am‘” +('i18n')); + +40 + } +} + +42 +public + +funùiÚ + + $execu‹I18nCu¡omC©®ogueFÜm +( +sfWebReque¡ + +$»que¡ +) + +44 +$this +-> +fÜm + = +Ãw + + `I18nCu¡omC©®ogueFÜm +(); + +45 +$this +-> + `£tTem¶©e +('i18nForm'); + +46 + } +} + + @lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/lib/I18nCustomCatalogueForm.class.php + +1 +widg‘Schema +-> + `g‘FÜmFÜm©‹r +()-> + `£tT¿n¦©iÚC©®ogue +('custom'); + +9 + } +} + + @lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/lib/I18nForm.class.php + +1 + `£tWidg‘s +( + `¬¿y +( + +7 'fœ¡_Çme' => +Ãw + + `sfWidg‘FÜmIÅutText +(), + +8 'Ï¡_Çme' => +Ãw + + `sfWidg‘FÜmIÅutText +(), + +9 'emaž' => +Ãw + + `sfWidg‘FÜmIÅutText +(), + +12 +$this +-> + `£tV®id©Üs +( + `¬¿y +( + +13 'fœ¡_Çme' => +Ãw + + `sfV®id©ÜSŒšg +( + `¬¿y +('»quœed' => +Œue +)), + +14 'Ï¡_Çme' => +Ãw + + `sfV®id©ÜSŒšg +( + `¬¿y +('»quœed' => +Œue +)), + +15 'emaž' => +Ãw + + `sfV®id©ÜEmaž +( + `¬¿y +('»quœed' => +Œue +), + +16 + `¬¿y +('invalid' => '%value% is‡n invalidƒmail‡ddress')), + +19 +$this +-> +widg‘Schema +-> + `£tLab– +('email', 'Email‡ddress'); + +20 +$this +-> +widg‘Schema +-> + `£tH–p +('first_name', 'Put your first‚ame here'); + +22 +$this +-> +widg‘Schema +-> + `£tNameFÜm© +('i18n[%s]'); + +24 + } +} + + @lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/templates/i18nFormSuccess.php + +1 < +fÜm + + gaùiÚ +="" +m‘hod +="post"> + +2 < +bË +> + +3 + +4 < +Œ +> + +5 < +td +>< +šput + +ty³ +="subm™" +v®ue +="Submit" /> + +6 + +7 + +8 + + @lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/templates/indexSuccess.php + +1 + +3 < +div + + gid +="aùiÚ"> + +4 < +div + +id +="‹m¶©e"> + +6 < +div + +id +="aùiÚ_loÿl"> + +7 < +div + +id +="‹m¶©e_loÿl"> + +9 < +div + +id +="aùiÚ_Ùh”"> + +10 < +div + +id +="‹m¶©e_Ùh”"> + +12 < +div + + gid +="aùiÚ_Ùh”_loÿl"> + +13 < +div + +id +="‹m¶©e_Ùh”_loÿl"> + + @lib/vendor/symfony/test/functional/fixtures/apps/i18n/templates/layout.php + +1 + +2 < +html + + gxmÊs +="h‰p://www.w3.Üg/1999/xhtml" +xml +: +Ïng +="en"†ang="en"> + +3 < +h—d +> + +5 + +6 + +8 + +10 < +lšk + +»l +="shÜtcuˆicÚ" +h»f +="/favicon.ico" /> + +13 + +14 + +15 + +16 < +body +> + +18 + +20 + +21 + + @lib/vendor/symfony/test/functional/fixtures/config/ProjectConfiguration.class.php + +1 + `’abËAÎPlugšsExû± +( + `¬¿y +('sfDoctrinePlugin')); + +11 +$this +-> + `’abËPlugšs +('sfAutoloadPlugin'); + +13 + } +} + + @lib/vendor/symfony/test/functional/fixtures/lib/ExtendMe.class.php + +1 +lib1 + = +myLibCÏss +:: + `pšg +(); + +8 +$this +-> +lib2 + = +myAµsFrڋndLibCÏss +:: + `pšg +(); + +9 +$this +-> +lib3 + = +myPlugšsSfAutÞßdPlugšModuËsAutÞßdPlugšLibCÏss +:: + `pšg +(); + +11 + } +} + + @lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/modules/autoloadPlugin/lib/myPluginsSfAutoloadPluginModulesAutoloadPluginLib.class.php + +1 + +2 < +div + +id +="lib2"> + +3 < +div + +id +="lib3"> + + @lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/BarFunctionalTest.php + + @lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/FooFunctionalTest.php + + @lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/nested/NestedFunctionalTest.php + + @lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/BarUnitTest.php + + @lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/FooUnitTest.php + + @lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/nested/NestedUnitTest.php + + @lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/actions/actions.class.php + +1 + `g‘Cڋxt +()-> + `g‘I18N +(); + +17 +$this +-> +‹¡ + = +$i18n +-> + `__ +('anƒnglish sentence from…lugin'); + +18 +$this +-> +loÿlTe¡ + = +$i18n +-> + `__ +('a†ocalƒnglish sentence from…lugin'); + +19 +$this +-> +Ùh”Te¡ + = +$i18n +-> + `__ +('anotherƒnglish sentence from…lugin'); + +20 +$this +-> +y‘AnÙh”Te¡ + = +$i18n +-> + `__ +('yet‡notherƒnglish sentence from…lugin'); + +22 +$this +-> +‹¡FÜPlugšI18N + = +$i18n +-> + `__ +('anƒnglish sentence from…lugin - global'); + +24 + } +} + + @lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/templates/indexSuccess.php + +1 + +3 < +div + + gid +="aùiÚ"> + +4 < +div + +id +="‹m¶©e"> + +6 < +div + +id +="aùiÚ_loÿl"> + +7 < +div + +id +="‹m¶©e_loÿl"> + +9 < +div + +id +="aùiÚ_Ùh”"> + +10 < +div + +id +="‹m¶©e_Ùh”"> + +12 < +div + +id +="aùiÚ_y‘AnÙh”"> + +13 < +div + +id +="‹m¶©e_y‘AnÙh”"> + +15 < +div + +id +="aùiÚ_‹¡FÜPlugšI18N"> + +16 < +div + +id +="‹m¶©e_‹¡FÜPlugšI18N"> + + @lib/vendor/symfony/test/functional/formatTest.php + +1 + +20 +g‘ +('/format_test.js')-> + +21 +w™h +('»que¡')-> +begš +()-> + +22 +isP¬am‘” +('module', 'format')-> + +23 +isP¬am‘” +('action', 'index')-> + +24 +isFÜm© +('js')-> + +25 +’d +()-> + +26 +w™h +('»¥Ú£')-> +begš +()-> + +27 +isStusCode +(200)-> + +28 +isH—d” +('content-type', 'application/javascript')-> + +29 +m©ches +('!//')-> + +30 +m©ches +('/Some js headers/')-> + +31 +m©ches +('/This is‡ js file/')-> + +32 +’d +() + +35 + g$b +-> + +36 +g‘ +('/format_test.css')-> + +37 +w™h +('»que¡')-> +begš +()-> + +38 +isP¬am‘” +('module', 'format')-> + +39 +isP¬am‘” +('action', 'index')-> + +40 +isFÜm© +('css')-> + +41 +’d +()-> + +42 +w™h +('»¥Ú£')-> +begš +()-> + +43 +isStusCode +(200)-> + +44 +isH—d” +('content-type', 'text/css; charset=utf-8')-> + +45 +m©ches +('/This is‡ css file/')-> + +46 +’d +() + +49 + g$b +-> + +50 +g‘ +('/format_test')-> + +51 +w™h +('»que¡')-> +begš +()-> + +52 +isP¬am‘” +('module', 'format')-> + +53 +isP¬am‘” +('action', 'index')-> + +54 +isFÜm© +('html')-> + +55 +’d +()-> + +56 +w™h +('»¥Ú£')-> +begš +()-> + +57 +isStusCode +(200)-> + +58 +isH—d” +('content-type', 'text/html; charset=utf-8')-> + +59 +checkEËm’t +('body #content', 'This is‡n HTML file')-> + +60 +’d +() + +63 + g$b +-> + +64 +g‘ +('/format_test.xml')-> + +65 +w™h +('»que¡')-> +begš +()-> + +66 +isP¬am‘” +('module', 'format')-> + +67 +isP¬am‘” +('action', 'index')-> + +68 +isFÜm© +('xml')-> + +69 +’d +()-> + +70 +w™h +('»¥Ú£')-> +begš +()-> + +71 +isStusCode +(200)-> + +72 +isH—d” +('content-type', 'text/xml; charset=utf-8')-> + +73 +checkEËm’t +('sentences sentence:first', 'This is‡ XML file')-> + +74 +’d +() + +77 + g$b +-> + +78 +g‘ +('/format_test.foo')-> + +79 +w™h +('»que¡')-> +begš +()-> + +80 +isP¬am‘” +('module', 'format')-> + +81 +isP¬am‘” +('action', 'index')-> + +82 +isFÜm© +('foo')-> + +83 +’d +()-> + +84 +w™h +('»¥Ú£')-> +begš +()-> + +85 +isStusCode +(200)-> + +86 +isH—d” +('content-type', 'text/html; charset=utf-8')-> + +87 +isH—d” +('x-foo', 'true')-> + +88 +checkEËm’t +('body #content', 'This is‡n HTML file')-> + +89 +’d +() + +92 + g$b +-> + +93 +g‘ +('/format/js')-> + +94 +w™h +('»que¡')-> +begš +()-> + +95 +isP¬am‘” +('module', 'format')-> + +96 +isP¬am‘” +('action', 'js')-> + +97 +isFÜm© +('js')-> + +98 +’d +()-> + +99 +w™h +('»¥Ú£')-> +begš +()-> + +100 +isStusCode +(200)-> + +101 +isH—d” +('content-type', 'application/javascript')-> + +102 +m©ches +('/A js file/')-> + +103 +’d +() + +106 + g$b +-> + +107 +£tH‰pH—d” +('User-Agent', 'Mozilla/5.0 (iPhone; U; CPU†ike Mac OS X;ƒn) AppleWebKit/420+ (KHTML,†ike Gecko) Version/3.0 Mobile/1A543a Safari/419.3')-> + +108 +g‘ +('/format/forTheIPhone')-> + +109 +w™h +('»que¡')-> +begš +()-> + +110 +isP¬am‘” +('module', 'format')-> + +111 +isP¬am‘” +('action', 'forTheIPhone')-> + +112 +isFÜm© +('iphone')-> + +113 +’d +()-> + +114 +w™h +('»¥Ú£')-> +begš +()-> + +115 +isStusCode +(200)-> + +116 +isH—d” +('content-type', 'text/html; charset=utf-8')-> + +117 +checkEËm’t +('#content', 'This is‡n HTML file forhe iPhone')-> + +118 +checkEËm’t +('link[href*="iphone.css"]')-> + +119 +’d +() + +122 + g$b +-> + +123 +g‘AndCheck +('fÜm©', 'throwsExû±iÚ', +nuÎ +, 500)-> + +124 +throwsExû±iÚ +('Exception', '/message/') + + @lib/vendor/symfony/test/functional/genericTest.php + +1 + +21 +g‘AndCheck +('default', 'index', '/')-> + +22 +w™h +('»¥Ú£')-> +begš +()-> + +23 +checkEËm’t +('body', '/congratulations/i')-> + +24 +checkEËm’t +('link[href="/sf/sf_default/css/screen.css"]')-> + +25 +checkEËm’t +('link[href="/css/main.css"]')-> + +26 +checkEËm’t +('link[href="/css/multiple_media.css"][media="print,handheld"]')-> + +27 +m©ches +('#'. +´eg_quÙe +('').'#')-> + +28 +’d +() + +32 + g$b +-> + +33 +g‘ +('/nonexistant')-> + +34 +w™h +('»¥Ú£')-> +isStusCode +(404) + +43 + gsfCÚfig +:: +£t +('sf_ÿche', +Œue +); + +44 + gsfCÚfig +:: +£t +('sf_‘ag', +Œue +); + +45 + g$b +-> + +46 +g‘ +('/notfound')-> + +47 +w™h +('»que¡')-> +begš +()-> + +48 +isP¬am‘” +('module', 'notfound')-> + +49 +isP¬am‘” +('action', 'index')-> + +50 +’d +()-> + +51 +w™h +('»¥Ú£')-> +begš +()-> + +52 +isStusCode +(404)-> + +53 +checkEËm’t +('body', '/404/')-> + +54 +’d +()-> + +56 +g‘ +('/notfound')-> + +57 +w™h +('»que¡')-> +begš +()-> + +58 +isP¬am‘” +('module', 'notfound')-> + +59 +isP¬am‘” +('action', 'index')-> + +60 +’d +()-> + +61 +w™h +('»¥Ú£')-> +begš +()-> + +62 +isStusCode +(404)-> + +63 +checkEËm’t +('body', '/404/')-> + +64 +’d +() + +66 + gsfCÚfig +:: +£t +('sf_ÿche', +çl£ +); + +67 + gsfCÚfig +:: +£t +('sf_‘ag', +çl£ +); + +70 + g$b +-> + +71 +g‘ +('/default/nonexistantaction')-> + +72 +w™h +('»¥Ú£')-> +isStusCode +(404) + +76 + g$b +-> + +77 +g‘ +('/configModuleDisabled')-> + +78 +w™h +('»que¡')-> +begš +()-> + +79 +isFÜw¬dedTo +('default', 'disabled')-> + +80 +’d +()-> + +81 +w™h +('»¥Ú£')-> +begš +()-> + +82 +isStusCode +(200)-> + +83 +checkEËm’t +('body', '/module is unavailable/i')-> + +84 +checkEËm’t +('body', '!/congratulations/i')-> + +85 +checkEËm’t +('link[href="/sf/sf_default/css/screen.css"]')-> + +86 +’d +() + +90 + g$b +-> + +91 +g‘ +('/configViewHasLayout/withoutLayout')-> + +92 +w™h +('»¥Ú£')-> +begš +()-> + +93 +isStusCode +(200)-> + +94 +checkEËm’t +('body', '/no†ayout/i')-> + +95 +checkEËm’t +('h—d™Ë', +çl£ +)-> + +96 +’d +() + +100 + g$b +-> + +101 +g‘ +('/configSecurityIsSecure')-> + +102 +w™h +('»que¡')-> +begš +()-> + +103 +isFÜw¬dedTo +('default', 'login')-> + +104 +’d +()-> + +105 +w™h +('»¥Ú£')-> +begš +()-> + +106 +isStusCode +(200)-> + +107 +checkEËm’t +('body', '/Login Required/i')-> + +110 +checkEËm’t +('body', 1)-> + +111 +checkEËm’t +('link[href="/sf/sf_default/css/screen.css"]')-> + +112 +’d +() + +116 + g$b +-> + +117 +g‘ +('/configSecurityIsSecureAction/index')-> + +118 +w™h +('»que¡')-> +begš +()-> + +119 +isFÜw¬dedTo +('default', 'login')-> + +120 +’d +()-> + +121 +w™h +('»¥Ú£')-> +begš +()-> + +122 +isStusCode +(200)-> + +123 +checkEËm’t +('body', '/Login Required/i')-> + +124 +’d +() + +127 + g$b +-> + +128 +g‘ +('/configSecurityIsSecureAction/Index')-> + +129 +w™h +('»que¡')-> +begš +()-> + +130 +isFÜw¬dedTo +('default', 'login')-> + +131 +’d +()-> + +132 +w™h +('»¥Ú£')-> +begš +()-> + +133 +isStusCode +(200)-> + +134 +checkEËm’t +('body', '/Login Required/i')-> + +135 +’d +() + +139 + g$b +-> + +140 +g‘ +('/configSettingsMaxForwards/selfForward')-> + +141 +w™h +('»¥Ú£')-> +isStusCode +(500)-> + +142 +throwsExû±iÚ +( +nuÎ +, '/Too many forwards have been detected forhis„equest/i') + +146 + g$b +-> + +147 +g‘ +('/configFiltersSimpleFilter')-> + +148 +w™h +('»¥Ú£')-> +begš +()-> + +149 +isStusCode +(200)-> + +150 +checkEËm’t +('body', '/in‡ filter/i')-> + +151 +checkEËm’t +('body', '!/congratulation/i')-> + +152 +’d +() + +156 + g$b +-> + +157 +g‘ +('/assetInclusion/index')-> + +158 +w™h +('»¥Ú£')-> +begš +()-> + +159 +isStusCode +(200)-> + +160 +checkEËm’t +('h—d†šk[»l="¡yËsh“t"]', +çl£ +)-> + +161 +checkEËm’t +('h—d süt[ty³="‹xt/javasüt"]', +çl£ +)-> + +162 +’d +() + +166 + g$b +-> + +167 +g‘ +('/autoload/index')-> + +168 +w™h +('»¥Ú£')-> +begš +()-> + +169 +isStusCode +(200)-> + +170 +checkEËm’t +('#lib1', 'pong')-> + +171 +checkEËm’t +('#lib2', 'pong')-> + +172 +checkEËm’t +('#lib3', 'pong')-> + +173 +checkEËm’t +('#lib4', 'nopong')-> + +174 +’d +() + +178 + g$b +-> + +179 +g‘ +('/autoloadPlugin/index')-> + +180 +w™h +('»¥Ú£')-> +begš +()-> + +181 +isStusCode +(200)-> + +182 +checkEËm’t +('#lib1', 'pong')-> + +183 +checkEËm’t +('#lib2', 'pong')-> + +184 +checkEËm’t +('#lib3', 'pong')-> + +185 +’d +() + +189 + g$b +-> + +190 +g‘ +('/renderText')-> + +191 +w™h +('»¥Ú£')-> +begš +()-> + +192 +isStusCode +(200)-> + +193 +m©ches +('/foo/')-> + +194 +’d +() + +198 + g$b +-> + +199 +g‘ +('/view')-> + +200 +w™h +('»¥Ú£')-> +begš +()-> + +201 +isStusCode +(200)-> + +202 +isH—d” +('Content-Type', 'text/html; charset=utf-8')-> + +203 +checkEËm’t +('headitle', 'fooitle')-> + +204 +’d +() + +208 + g$b +-> + +209 +g‘ +('/view/plain')-> + +210 +w™h +('»¥Ú£')-> +begš +()-> + +211 +isH—d” +('Content-Type', 'text/plain; charset=utf-8')-> + +212 +isStusCode +(200)-> + +213 +m©ches +('//')-> + +214 +m©ches +('/plaintext/')-> + +215 +’d +() + +219 + g$b +-> + +220 +g‘ +('/view/image')-> + +221 +w™h +('»¥Ú£')-> +begš +()-> + +222 +isStusCode +(200)-> + +223 +isH—d” +('Content-Type', 'image/jpg')-> + +224 +m©ches +('/image/')-> + +225 +’d +() + +229 + g$b +-> + +230 +g‘ +('/presentation')-> + +231 +w™h +('»¥Ú£')-> +begš +()-> + +232 +isStusCode +(200)-> + +233 +checkEËm’t +('#foo', 'foo')-> + +234 +checkEËm’t +('#foo_bis', 'foo')-> + +235 +’d +() + + @lib/vendor/symfony/test/functional/httpcacheTest.php + +1 + +20 +šfo +('Noƒxpiration (client_lifetime is 0)')-> + +21 +g‘ +('/httpcache/page1')-> + +22 +w™h +('»¥Ú£')-> +begš +()-> + +23 +isH—d” +('La¡-Modif›d', '/^'. +sub¡r +( +´eg_quÙe +( +sfWebRe¥Ú£ +:: +g‘D©e +( +time +()), '/'), 5, 16).'/')-> + +24 +isH—d” +('ETag', +Œue +)-> + +25 +isH—d” +('Expœes', +çl£ +)-> + +26 +isH—d” +('Cache-CڌÞ', +çl£ +)-> + +27 +’d +() + +30 + g$b +-> + +31 +šfo +('Expiration (client_lifetime is 86400)')-> + +32 +g‘ +('/httpcache/page2')-> + +33 +w™h +('»¥Ú£')-> +begš +()-> + +34 +isH—d” +('La¡-Modif›d', +çl£ +)-> + +35 +isH—d” +('ETag', +çl£ +)-> + +36 +isH—d” +('Expœes', '/^'. +sub¡r +( +´eg_quÙe +( +sfWebRe¥Ú£ +:: +g‘D©e +( +time +() + 86400), '/'), 5, 16).'/')-> + +37 +isH—d” +('Cache-Control', '/max-age=86400/')-> + +38 +’d +() + +41 + g$b +-> + +42 +šfo +('Expiration (client_lifetime is 86400) buthe developer has set‡ Last-Modified header')-> + +43 +g‘ +('/httpcache/page3')-> + +44 +w™h +('»¥Ú£')-> +begš +()-> + +45 +isH—d” +('La¡-Modif›d', '/^'. +sub¡r +( +´eg_quÙe +( +sfWebRe¥Ú£ +:: +g‘D©e +( +time +() - 86400), '/'), 5, 16).'/')-> + +46 +isH—d” +('ETag', +çl£ +)-> + +47 +isH—d” +('Expœes', +çl£ +)-> + +48 +isH—d” +('Cache-CڌÞ', +çl£ +)-> + +49 +’d +() + +52 + g$b +-> + +53 +šfo +('Noƒxpiration‡ndhe developer has set‡ Last-Modified header')-> + +54 +g‘ +('/httpcache/page4')-> + +55 +w™h +('»¥Ú£')-> +begš +()-> + +56 +isH—d” +('La¡-Modif›d', '/^'. +sub¡r +( +´eg_quÙe +( +sfWebRe¥Ú£ +:: +g‘D©e +( +time +() - 86400), '/'), 5, 16).'/')-> + +57 +isH—d” +('ETag', +Œue +)-> + +58 +isH—d” +('Expœes', +çl£ +)-> + +59 +isH—d” +('Cache-CڌÞ', +çl£ +)-> + +60 +’d +() + + @lib/vendor/symfony/test/functional/i18nFormTest.php + +1 + +21 +g‘ +('/en/i18n/i18nForm')-> + +22 +w™h +('»que¡')-> +begš +()-> + +23 +isP¬am‘” +('module', 'i18n')-> + +24 +isP¬am‘” +('action', 'i18nForm')-> + +25 +’d +()-> + +26 +w™h +('u£r')-> +isCuÉu» +('en')-> + +27 +w™h +('»¥Ú£')-> +begš +()-> + +28 +isStusCode +(200)-> + +29 +checkEËm’t +('Ïb–', 'Fœ¡‚ame', +¬¿y +('position' => 0))-> + +30 +checkEËm’t +('Ïb–', 'La¡‚ame', +¬¿y +('position' => 1))-> + +31 +checkEËm’t +('Ïb–', 'Emaž‡dd»ss', +¬¿y +('position' => 2))-> + +32 +checkEËm’t +('td', '/Puˆyou¸fœ¡‚amh”e/i', +¬¿y +('position' => 0))-> + +33 +’d +()-> + +34 +£tF›ld +('i18n[email]', 'foo/bar')-> + +35 +þick +('Submit')-> + +36 +w™h +('»¥Ú£')-> +begš +()-> + +37 +checkEËm’t +('uÈli', 'Requœed.', +¬¿y +('position' => 0))-> + +38 +checkEËm’t +('uÈli', 'foo/b¬ i ª inv®idƒmaž‡dd»ss', +¬¿y +('position' => 2))-> + +39 +’d +() + +43 + g$b +-> + +44 +g‘ +('/fr/i18n/i18nForm')-> + +45 +w™h +('»que¡')-> +begš +()-> + +46 +isP¬am‘” +('module', 'i18n')-> + +47 +isP¬am‘” +('action', 'i18nForm')-> + +48 +’d +()-> + +49 +w™h +('u£r')-> +isCuÉu» +('fr')-> + +50 +w™h +('»¥Ú£')-> +begš +()-> + +51 +isStusCode +(200)-> + +52 +checkEËm’t +('Ïb–', 'Prénom', +¬¿y +('position' => 0))-> + +53 +checkEËm’t +('Ïb–', 'Nom', +¬¿y +('position' => 1))-> + +54 +checkEËm’t +('Ïb–', 'Ad»s£ƒmaž', +¬¿y +('position' => 2))-> + +55 +checkEËm’t +('td', '/M‘‹z vÙ»…rénom ici/i', +¬¿y +('position' => 0))-> + +56 +’d +()-> + +57 +£tF›ld +('i18n[email]', 'foo/bar')-> + +58 +þick +('Submit')-> + +59 +w™h +('»¥Ú£')-> +begš +()-> + +60 +checkEËm’t +('uÈli', 'Cham°»quis.', +¬¿y +('position' => 0))-> + +61 +checkEËm’t +('uÈli', 'foo/b¬ƒ¡ uÇd»s£ƒmaž inv®ide', +¬¿y +('position' => 2))-> + +62 +’d +() + +66 + g$b +-> + +67 +g‘ +('/fr/i18n/i18nCustomCatalogueForm')-> + +68 +w™h +('»que¡')-> +begš +()-> + +69 +isP¬am‘” +('module', 'i18n')-> + +70 +isP¬am‘” +('action', 'i18nCustomCatalogueForm')-> + +71 +’d +()-> + +72 +w™h +('u£r')-> +isCuÉu» +('fr')-> + +73 +w™h +('»¥Ú£')-> +begš +()-> + +74 +isStusCode +(200)-> + +75 +checkEËm’t +('Ïb–', 'Prénom!!!', +¬¿y +('position' => 0))-> + +76 +checkEËm’t +('Ïb–', 'Nom!!!', +¬¿y +('position' => 1))-> + +77 +checkEËm’t +('Ïb–', 'Ad»s£ƒmaž!!!', +¬¿y +('position' => 2))-> + +78 +’d +() + + @lib/vendor/symfony/test/functional/i18nTest.php + +1 + +22 +w™h +('»¥Ú£')-> +begš +()-> + +24 +checkEËm’t +('#action', '/une…hraseƒn français/i')-> + +25 +checkEËm’t +('#template', '/une…hraseƒn français/i')-> + +28 +checkEËm’t +('#action_local', '/une…hrase†ocaleƒn français/i')-> + +29 +checkEËm’t +('#template_local', '/une…hrase†ocaleƒn français/i')-> + +32 +checkEËm’t +('#action_other', '/une‡utre…hraseƒn français/i')-> + +33 +checkEËm’t +('#template_other', '/une‡utre…hraseƒn français/i')-> + +36 +checkEËm’t +('#action_other_local', '/une‡utre…hrase†ocaleƒn français/i')-> + +37 +checkEËm’t +('#template_other_local', '/une‡utre…hrase†ocaleƒn français/i')-> + +38 +’d +() + +43 + g$b + = +Ãw + +myTe¡Brow£r +(); + +46 + g$b +-> + +47 +g‘ +('/')-> + +48 +w™h +('»que¡')-> +begš +()-> + +49 +isP¬am‘” +('module', 'i18n')-> + +50 +isP¬am‘” +('action', 'index')-> + +51 +’d +()-> + +52 +w™h +('»¥Ú£')-> +begš +()-> + +53 +isStusCode +(200)-> + +54 +checkEËm’t +('#action', '/anƒnglish sentence/i')-> + +55 +checkEËm’t +('#template', '/anƒnglish sentence/i')-> + +56 +’d +()-> + +57 +w™h +('u£r')-> +isCuÉu» +('en') + +60 + g$b +-> + +61 +g‘ +('/fr/i18n/index')-> + +62 +w™h +('»que¡')-> +begš +()-> + +63 +isP¬am‘” +('module', 'i18n')-> + +64 +isP¬am‘” +('action', 'index')-> + +65 +’d +()-> + +66 +w™h +('»¥Ú£')-> +isStusCode +(200)-> + +67 +w™h +('u£r')-> +isCuÉu» +('fr')-> + +68 +checkRe¥Ú£FÜCuÉu» +('fr') + +72 + g$b +-> + +73 +g‘ +('/en/i18n/indexForFr')-> + +74 +w™h +('»que¡')-> +begš +()-> + +75 +isP¬am‘” +('module', 'i18n')-> + +76 +isP¬am‘” +('action', 'indexForFr')-> + +77 +’d +()-> + +78 +w™h +('»¥Ú£')-> +isStusCode +(200)-> + +79 +w™h +('u£r')-> +isCuÉu» +('fr')-> + +80 +checkRe¥Ú£FÜCuÉu» +('fr') + +84 + g$b +-> + +85 +g‘ +('/fr/sfI18NPlugin/index')-> + +86 +w™h +('»que¡')-> +begš +()-> + +87 +isP¬am‘” +('module', 'sfI18NPlugin')-> + +88 +isP¬am‘” +('action', 'index')-> + +89 +’d +()-> + +90 +w™h +('u£r')-> +isCuÉu» +('fr')-> + +91 +w™h +('»¥Ú£')-> +begš +()-> + +92 +isStusCode +(200)-> + +93 +checkEËm’t +('#action', '/une…hraseƒn français - from…lugin/i')-> + +94 +checkEËm’t +('#template', '/une…hraseƒn français - from…lugin/i')-> + +95 +checkEËm’t +('#action_local', '/une…hrase†ocaleƒn français - from…lugin/i')-> + +96 +checkEËm’t +('#template_local', '/une…hrase†ocaleƒn français - from…lugin/i')-> + +97 +checkEËm’t +('#action_other', '/une‡utre…hraseƒn français - from…lugin butranslation overridden inhe module/i')-> + +98 +checkEËm’t +('#template_other', '/une‡utre…hraseƒn français - from…lugin butranslation overridden inhe module/i')-> + +99 +checkEËm’t +('#action_yetAnother', '/encore une‡utre…hraseƒn français - from…lugin butranslation overridden inhe‡pplication/i')-> + +100 +checkEËm’t +('#template_yetAnother', '/encore une‡utre…hraseƒn français - from…lugin butranslation overridden inhe‡pplication/i')-> + +101 +checkEËm’t +('#action_testForPluginI18N', '/une…hraseƒn français depuis un…lugin - global/i')-> + +102 +checkEËm’t +('#template_testForPluginI18N', '/une…hraseƒn français depuis un…lugin - global/i')-> + +103 +’d +() + + @lib/vendor/symfony/test/functional/prodTest.php + +1 + +22 +g‘ +('/')-> + +23 +w™h +('»que¡')-> +begš +()-> + +24 +isP¬am‘” +('module', 'default')-> + +25 +isP¬am‘” +('action', 'index')-> + +26 +’d +()-> + +27 +w™h +('»¥Ú£')-> +begš +()-> + +28 +isStusCode +(200)-> + +29 +checkEËm’t +('body', '/congratulations/i')-> + +30 +’d +() + +34 + g$b +-> + +35 +g‘ +('/')-> + +36 +w™h +('»que¡')-> +begš +()-> + +37 +isP¬am‘” +('module', 'default')-> + +38 +isP¬am‘” +('action', 'index')-> + +39 +’d +()-> + +40 +w™h +('»¥Ú£')-> +begš +()-> + +41 +isStusCode +(200)-> + +42 +checkEËm’t +('body', '/congratulations/i')-> + +43 +’d +() + +47 + g$b +-> + +48 +g‘ +('/nonexistant')-> + +49 +w™h +('»que¡')-> +begš +()-> + +50 +isFÜw¬dedTo +('default', 'error404')-> + +51 +’d +()-> + +52 +w™h +('»¥Ú£')-> +begš +()-> + +53 +isStusCode +(404)-> + +54 +checkEËm’t +('body', '!/congratulations/i')-> + +55 +checkEËm’t +('link[href="/sf/sf_default/css/screen.css"]')-> + +56 +’d +() + +59 + g$b +-> + +60 +g‘ +('/nonexistant/')-> + +61 +w™h +('»que¡')-> +begš +()-> + +62 +isFÜw¬dedTo +('default', 'error404')-> + +63 +’d +()-> + +64 +w™h +('»¥Ú£')-> +begš +()-> + +65 +isStusCode +(404)-> + +66 +checkEËm’t +('body', '!/congratulations/i')-> + +67 +checkEËm’t +('link[href="/sf/sf_default/css/screen.css"]')-> + +68 +’d +() + +72 + g$b +-> + +73 +g‘ +('/default/nonexistantaction')-> + +74 +w™h +('»que¡')-> +begš +()-> + +75 +isFÜw¬dedTo +('default', 'error404')-> + +76 +’d +()-> + +77 +w™h +('»¥Ú£')-> +begš +()-> + +78 +isStusCode +(404)-> + +79 +checkEËm’t +('body', '!/congratulations/i')-> + +80 +checkEËm’t +('link[href="/sf/sf_default/css/screen.css"]')-> + +81 +’d +() + + @lib/vendor/symfony/test/functional/sfTestBrowserTest.php + +1 +ev’ts +[] = +$ev’t +; + +24 + } +} + +26 + g$b + = +Ãw + +Te¡Brow£r +(); + +27 + g$b +-> +addLi¡’” +('cڋxt.lßd_çùܛs', +¬¿y +( +$b +, 'listen')); + +30 + g$b +-> +g‘ +('/'); + +31 + g$b +-> +‹¡ +()-> +is +( +couÁ +( +$b +-> +ev’ts +), 1, 'browser can connecto context.load_factories'); + +34 + g$b +-> + +35 +g‘ +('/exception/noException')-> + +36 +w™h +('»que¡')-> +begš +()-> + +37 +isP¬am‘” +('module', 'exception')-> + +38 +isP¬am‘” +('action', 'noException')-> + +39 +’d +()-> + +41 +w™h +('»¥Ú£')-> +begš +()-> + +42 +isStusCode +(200)-> + +43 +m©ches +('/foo/')-> + +44 +’d +()-> + +46 +g‘ +('/exception/throwsException')-> + +47 +w™h +('»que¡')-> +begš +()-> + +48 +isP¬am‘” +('module', 'exception')-> + +49 +isP¬am‘” +('action', 'throwsException')-> + +50 +’d +()-> + +51 +w™h +('»¥Ú£')-> +isStusCode +(500)-> + +52 +throwsExû±iÚ +('Exception')-> + +54 +g‘ +('/exception/throwsException')-> + +55 +w™h +('»que¡')-> +begš +()-> + +56 +isP¬am‘” +('module', 'exception')-> + +57 +isP¬am‘” +('action', 'throwsException')-> + +58 +’d +()-> + +59 +w™h +('»¥Ú£')-> +isStusCode +(500)-> + +60 +throwsExû±iÚ +('Exception', '/Exception message/')-> + +62 +g‘ +('/exception/throwsException')-> + +63 +w™h +('»que¡')-> +begš +()-> + +64 +isP¬am‘” +('module', 'exception')-> + +65 +isP¬am‘” +('action', 'throwsException')-> + +66 +’d +()-> + +67 +w™h +('»¥Ú£')-> +isStusCode +(500)-> + +68 +throwsExû±iÚ +('Exception', '/message/')-> + +70 +g‘ +('/exception/throwsException')-> + +71 +w™h +('»que¡')-> +begš +()-> + +72 +isP¬am‘” +('module', 'exception')-> + +73 +isP¬am‘” +('action', 'throwsException')-> + +74 +’d +()-> + +75 +w™h +('»¥Ú£')-> +isStusCode +(500)-> + +76 +throwsExû±iÚ +( +nuÎ +, '!/sfException/')-> + +78 +g‘ +('/exception/throwsSfException')-> + +79 +w™h +('»que¡')-> +begš +()-> + +80 +isP¬am‘” +('module', 'exception')-> + +81 +isP¬am‘” +('action', 'throwsSfException')-> + +82 +’d +()-> + +83 +w™h +('»¥Ú£')-> +isStusCode +(500)-> + +84 +throwsExû±iÚ +('sfException')-> + +86 +g‘ +('/exception/throwsSfException')-> + +87 +w™h +('»que¡')-> +begš +()-> + +88 +isP¬am‘” +('module', 'exception')-> + +89 +isP¬am‘” +('action', 'throwsSfException')-> + +90 +’d +()-> + +91 +w™h +('»¥Ú£')-> +isStusCode +(500)-> + +92 +throwsExû±iÚ +('sfException', 'sfException message') + +95 + g$b +-> + +96 +g‘ +('/browser')-> + +97 +w™h +('»¥Ú£')-> +begš +()-> + +98 +m©ches +('/html/')-> + +99 +checkEËm’t +('h1', 'html')-> + +100 +’d +()-> + +102 +g‘ +('/browser/text')-> + +103 +w™h +('»¥Ú£')-> +begš +()-> + +104 +m©ches +('/text/')-> + +105 +’d +() + +108 + gŒy + + +110 + g$b +-> +w™h +('»¥Ú£')-> +checkEËm’t +('h1', 'text'); + +111 + g$b +-> +‹¡ +()-> +çž +('The DOM is‚ot‡ccessible ifhe„esponse contentype is‚ot HTML'); + +113 + $ÿtch + ( +LogicExû±iÚ + +$e +) + +115 +$b +-> + `‹¡ +()-> + `·ss +('The DOM is‚ot‡ccessible ifhe„esponse contentype is‚ot HTML'); + +116 + } +} + +119 + g$b +-> + +120 +g‘ +('/browser/responseHeader')-> + +121 +w™h +('»¥Ú£')-> +begš +()-> + +122 +isStusCode +()-> + +123 +isH—d” +('content-type', 'text/plain; charset=utf-8')-> + +124 +isH—d” +('content-type', '#text/plain#')-> + +125 +isH—d” +('content-type', '!#text/html#')-> + +126 +isH—d” +('foo', 'bar')-> + +127 +isH—d” +('foo', 'foobar')-> + +128 +’d +() + +132 + g$b +-> + +133 +£tCook› +('foo', 'bar')-> + +134 +£tCook› +('bar', 'foo')-> + +135 +£tCook› +('foofoo', 'foo', +time +() - 10)-> + +137 +g‘ +('/cookie')-> + +138 +w™h +('»que¡')-> +begš +()-> + +139 +hasCook› +('foofoo', +çl£ +)-> + +140 +hasCook› +('foo')-> + +141 +isCook› +('foo', 'bar')-> + +142 +isCook› +('foo', '/a/')-> + +143 +isCook› +('foo', '!/z/')-> + +144 +’d +()-> + +145 +w™h +('»¥Ú£')-> +checkEËm’t +('p', 'bar.foo-')-> + +146 +g‘ +('/cookie')-> + +147 +w™h +('»que¡')-> +begš +()-> + +148 +hasCook› +('foo')-> + +149 +isCook› +('foo', 'bar')-> + +150 +isCook› +('foo', '/a/')-> + +151 +isCook› +('foo', '!/z/')-> + +152 +’d +()-> + +153 +w™h +('»¥Ú£')-> +checkEËm’t +('p', 'bar.foo-')-> + +154 +»moveCook› +('foo')-> + +155 +g‘ +('/cookie')-> + +156 +w™h +('»que¡')-> +begš +()-> + +157 +hasCook› +('foo', +çl£ +)-> + +158 +hasCook› +('bar')-> + +159 +’d +()-> + +160 +w™h +('»¥Ú£')-> +checkEËm’t +('p', '.foo-')-> + +161 +þ—rCook›s +()-> + +162 +g‘ +('/cookie')-> + +163 +w™h +('»que¡')-> +begš +()-> + +164 +hasCook› +('foo', +çl£ +)-> + +165 +hasCook› +('b¬', +çl£ +)-> + +166 +’d +()-> + +167 +w™h +('»¥Ú£')-> +checkEËm’t +('p', '.-') + +170 + g$b +-> + +171 +£tCook› +('foo', 'bar')-> + +172 +£tCook› +('bar', 'foo')-> + +174 +g‘ +('/cookie/setCookie')-> + +176 +g‘ +('/cookie')-> + +177 +w™h +('»que¡')-> +begš +()-> + +178 +hasCook› +('foo')-> + +179 +isCook› +('foo', 'bar')-> + +180 +isCook› +('foo', '/a/')-> + +181 +isCook› +('foo', '!/z/')-> + +182 +’d +()-> + +183 +w™h +('»¥Ú£')-> +checkEËm’t +('p', 'bar.foo-barfoo')-> + +184 +g‘ +('/cookie')-> + +185 +w™h +('»que¡')-> +begš +()-> + +186 +hasCook› +('foo')-> + +187 +isCook› +('foo', 'bar')-> + +188 +isCook› +('foo', '/a/')-> + +189 +isCook› +('foo', '!/z/')-> + +190 +’d +()-> + +191 +w™h +('»¥Ú£')-> +checkEËm’t +('p', 'bar.foo-barfoo')-> + +192 +»moveCook› +('foo')-> + +193 +g‘ +('/cookie')-> + +194 +w™h +('»que¡')-> +begš +()-> + +195 +hasCook› +('foo', +çl£ +)-> + +196 +hasCook› +('bar')-> + +197 +’d +()-> + +198 +w™h +('»¥Ú£')-> +checkEËm’t +('p', '.foo-barfoo')-> + +200 +g‘ +('/cookie/removeCookie')-> + +202 +g‘ +('/cookie')-> + +203 +w™h +('»que¡')-> +begš +()-> + +204 +hasCook› +('foo', +çl£ +)-> + +205 +hasCook› +('bar')-> + +206 +’d +()-> + +207 +w™h +('»¥Ú£')-> +checkEËm’t +('p', '.foo-')-> + +209 +g‘ +('/cookie/setCookie')-> + +211 +þ—rCook›s +()-> + +212 +g‘ +('/cookie')-> + +213 +w™h +('»que¡')-> +begš +()-> + +214 +hasCook› +('foo', +çl£ +)-> + +215 +hasCook› +('b¬', +çl£ +)-> + +216 +’d +()-> + +217 +w™h +('»¥Ú£')-> +checkEËm’t +('p', '.-') + +220 + g$b +-> + +221 +g‘ +('/browser')-> + +222 +w™h +('»que¡')-> +isM‘hod +('get')-> + +223 +po¡ +('/browser')-> + +224 +w™h +('»que¡')-> +isM‘hod +('post')-> + +225 +ÿÎ +('/browser', 'put')-> + +226 +w™h +('»que¡')-> +isM‘hod +('put') + +230 + g$b +-> + +231 +g‘ +('/browser/templateCustom')-> + +232 +w™h +('»¥Ú£')-> +checkEËm’t +('#test', 'template')-> + +234 +g‘ +('/browser/templateCustom/custom/1')-> + +235 +w™h +('»¥Ú£')-> +checkEËm’t +('#test', 'template 1')-> + +237 +g‘ +('/browser/templateCustom')-> + +238 +w™h +('»¥Ú£')-> +checkEËm’t +('#test', 'template') + +241 + g$b + + +242 -> +g‘AndCheck +('brow£r', '»dœeù1', +nuÎ +, 302) + +244 -> +fÞlowRedœeù +() + +246 -> +w™h +('»que¡')-> +begš +() + +247 -> +isP¬am‘” +('module', 'browser') + +248 -> +isP¬am‘” +('action', 'redirectTarget1') + +249 -> +’d +() + +251 -> +w™h +('»¥Ú£')-> +isStusCode +(200) + +253 -> +g‘AndCheck +('brow£r', '»dœeù2', +nuÎ +, 302) + +255 -> +fÞlowRedœeù +() + +257 -> +w™h +('»que¡')-> +begš +() + +258 -> +isP¬am‘” +('module', 'browser') + +259 -> +isP¬am‘” +('action', 'redirectTarget2') + +260 -> +’d +() + +262 -> +w™h +('»¥Ú£')-> +isStusCode +(200) + + @lib/vendor/symfony/test/other/fixtures/propel/Category.php + +1 +Çme +; + +9 + } +} + + @lib/vendor/symfony/test/other/fixtures/task/aTask.class.php + +1 +Çme¥aû + = 'a'; + +7 +$this +-> +Çme + = 'run'; + +9 +public + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +11 + } +} + + @lib/vendor/symfony/test/other/fixtures/task/myPluginTask.class.php + +1 +Çme¥aû + = 'p'; + +7 +$this +-> +Çme + = 'run'; + +9 +public + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +11 + } +} + + @lib/vendor/symfony/test/other/fixtures/task/zTask.class.php + +1 +Çme¥aû + = 'z'; + +7 +$this +-> +Çme + = 'run'; + +9 +public + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +11 + } +} + + @lib/vendor/symfony/test/other/fixtures/test/unit/testTest.php + +1 +·ss +('this is ok'); + + @lib/vendor/symfony/test/other/tasksTest.php + +1 +t + = +$t +; + +20 +$this +-> +tmp_dœ + = + `sys_g‘_‹mp_dœ +(). +DS +.'sf_test_project'; + +22 ià( + `is_dœ +( +$this +-> +tmp_dœ +)) + +24 +$this +-> + `þ—rTmpDœ +(); + +25 + `rmdœ +( +$this +-> +tmp_dœ +); + +28 + `mkdœ +( +$this +-> +tmp_dœ +, 0777); + +30 +$this +-> +cu¼’t_dœ + = + `g‘cwd +(); + +31 + `chdœ +( +$this +-> +tmp_dœ +); + +33 +$this +-> +php_þi + = +sfToÞk™ +:: + `g‘PhpCli +(); + +36 +public + +funùiÚ + + $shutdown +() + +38 +$this +-> + `þ—rTmpDœ +(); + +39 + `rmdœ +( +$this +-> +tmp_dœ +); + +40 + `chdœ +( +$this +-> +cu¼’t_dœ +); + +41 + } +} + +43 +´Ùeùed + +funùiÚ + + $þ—rTmpDœ +() + +45 + `»quœe_Úû +( + `dœÇme +( +__FILE__ +).'/../../lib/util/sfToolkit.class.php'); + +46 +sfToÞk™ +:: + `þ—rDœeùÜy +( +$this +-> +tmp_dœ +); + +47 + } +} + +49 +public + +funùiÚ + + $execu‹_commªd +( +$cmd +, +$awa™ed_»tuº +=0) + +51 + `chdœ +( +$this +-> +tmp_dœ +); + +52 +$symfÚy + = + `fže_exi¡s +('symfÚy'è? 'symfÚy' : + `dœÇme +( +__FILE__ +).'/../../data/bin/symfony'; + +54 + `ob_¡¬t +(); + +55 + `·s¡hru +( + `¥rštf +('% "%s" % 2>&1', +$this +-> +php_þi +, +$symfÚy +, +$cmd +), +$»tuº +); + +56 +$cڋÁ + = + `ob_g‘_þ—n +(); + +57 +$this +-> +t +-> + `cmp_ok +( +$»tuº +, '==', +$awa™ed_»tuº +, + `¥rštf +('"symfÚy %s"„‘uº awa™ed v®u(%d)', +$cmd +, $awaited_return)); + +59  +$cڋÁ +; + +60 + } +} + +62 +public + +funùiÚ + + $g‘_fixtu»_cڋÁ +( +$fže +) + +64  + `¡r_»¶aû +("\r\n", "\n", + `fže_g‘_cڋÁs +( + `dœÇme +( +__FILE__ +).'/fixtu»s/'. +$fže +)); + +65 + } +} + +68 + g$¶ª + = 39; + +69 + g$t + = +Ãw + +lime_‹¡ +( +$¶ª +); + +71 ià(! +ex‹nsiÚ_lßded +('SQLite') && !extension_loaded('pdo_SQLite')) + +73 + g$t +-> +sk +('You‚“d SQL™tØruÀthe£e¡s', +$¶ª +); + +78 + g$c + = +Ãw + +sf_‹¡_´ojeù +(); + +79 + g$c +-> +š™Ÿlize +( +$t +); + +82 + g$cڋÁ + = +$c +-> +execu‹_commªd +('generate:project myproject --orm=Propel'); + +83 + g$t +-> +ok +( +fže_exi¡s +( +$c +-> +tmp_dœ +. +DS +.'symfony'), '"generate:project" installshe symfony CLI in„oot…roject directory'); + +85 + g$cڋÁ + = +$c +-> +execu‹_commªd +('generate:app frontend'); + +86 + g$t +-> +ok +( +is_dœ +( +$c +-> +tmp_dœ +. +DS +.'apps'.DS.'frontend'), '"generate:app" creates‡ "frontend" directory under "apps" directory'); + +87 + g$t +-> +like +( +fže_g‘_cڋÁs +( +$c +-> +tmp_dœ +.'/apps/frontend/config/settings.yml'), '/escaping_strategy: +true/', '"generate:app" switchesƒscaping_strategy "on" by default'); + +88 + g$t +-> +like +( +fže_g‘_cڋÁs +( +$c +-> +tmp_dœ +.'/apps/frontend/config/settings.yml'), '/csrf_secret: +\w+/', '"generate:app" generates‡ csrf_token by default'); + +90 + g$cڋÁ + = +$c +-> +execu‹_commªd +('generate:app backend --escaping-strategy=false --csrf-secret=false'); + +91 + g$t +-> +like +( +fže_g‘_cڋÁs +( +$c +-> +tmp_dœ +.'/apps/backend/config/settings.yml'), '/escaping_strategy: +false/', '"generate:app" switchesƒscaping_strategy "false"'); + +92 + g$t +-> +like +( +fže_g‘_cڋÁs +( +$c +-> +tmp_dœ +.'/apps/backend/config/settings.yml'), '/csrf_secret: +false/', '"generate:app" switches csrf_tokeno "false"'); + +95 + g$cڋÁ + = +$c +-> +execu‹_commªd +('generate:module wrongapp foo', 1); + +97 + g$cڋÁ + = +$c +-> +execu‹_commªd +('generate:module frontend foo'); + +98 + g$t +-> +ok +( +is_dœ +( +$c +-> +tmp_dœ +. +DS +.'apps'.DS.'frontend'.DS.'modules'.DS.'foo'), '"generate:module" creates‡ "foo" directory under "modules" directory'); + +100 +cÝy +( +dœÇme +( +__FILE__ +).'/fixtu»s/´Ý–/schema.yml', +$c +-> +tmp_dœ +. +DS +.'config'.DS.'schema.yml'); + +101 +cÝy +( +dœÇme +( +__FILE__ +).'/fixtu»s/´Ý–/d©aba£s.yml', +$c +-> +tmp_dœ +. +DS +.'config'.DS.'databases.yml'); + +102 +cÝy +( +dœÇme +( +__FILE__ +).'/fixtu»s/´Ý–/´Ý–.ši', +$c +-> +tmp_dœ +. +DS +.'config'.DS.'propel.ini'); + +103 +cÝy +( +dœÇme +( +__FILE__ +).'/fixtu»s/çùܛs.yml', +$c +-> +tmp_dœ +. +DS +.'apps'.DS.'frontend'.DS.'config'.DS.'factories.yml'); + +106 +fže_put_cڋÁs +( +$c +-> +tmp_dœ +. +DS +.'cÚfig'.DS.'´Ý–.ši', +¡r_»¶aû +('%SF_ROOT_DIR%', $c->tmp_dœ, sŒ_»¶aû('%SF_DATA_DIR%', $c->tmp_dœ.'/d©a', +fže_g‘_cڋÁs +($c->tmp_dir.DS.'config'.DS.'propel.ini')))); + +109 + g$cڋÁ + = +$c +-> +execu‹_commªd +('propel:build-sql'); + +110 + g$t +-> +ok +( +fže_exi¡s +( +$c +-> +tmp_dœ +. +DS +.'data'.DS.'sql'.DS.'lib.model.schema.sql'), '"propel:build-sql" creates‡ "schema.sql" file under "data/sql" directory'); + +112 + g$cڋÁ + = +$c +-> +execu‹_commªd +('propel:build-model'); + +113 + g$t +-> +ok +( +fže_exi¡s +( +$c +-> +tmp_dœ +. +DS +.'lib'.DS.'model'.DS.'Article.php'), '"propel:build-model" creates model classes under "lib/model" directory'); + +115 +cÝy +( +dœÇme +( +__FILE__ +).'/fixtu»s/´Ý–/C©egÜy.php', +$c +-> +tmp_dœ +. +DS +.'lib'.DS.'model'.DS.'Category.php'); + +117 + g$cڋÁ + = +$c +-> +execu‹_commªd +('propel:build-form'); + +118 + g$t +-> +ok +( +fže_exi¡s +( +$c +-> +tmp_dœ +. +DS +.'lib'.DS.'form'.DS.DS.'BaseFormPropel.class.php'), '"propel:build-form" creates form classes under "lib/form" directory'); + +120 + g$c +-> +execu‹_commªd +('propel:insert-sql --no-confirmation'); + +121 + g$t +-> +ok +( +fže_exi¡s +( +$c +-> +tmp_dœ +. +DS +.'data'.DS.'database.sqlite'), '"propel:insert-sql" createsables inhe database'); + +123 + g$c +-> +execu‹_commªd +('propel:build-all --no-confirmation'); + +125 + g$cڋÁ + = +$c +-> +execu‹_commªd +('propel:generate-module --generate-in-cache frontend‡rticleInitCrud Article'); + +126 + g$t +-> +ok +( +fže_exi¡s +( +$c +-> +tmp_dœ +. +DS +.'apps'.DS.'frontend'.DS.'modules'.DS.'articleInitCrud'.DS.'config'.DS.'generator.yml'), '"propel:generate-module" initializes‡ CRUD module'); + +128 + g$cڋÁ + = +$c +-> +execu‹_commªd +('propel:generate-admin frontend Article --module=articleInitAdmin'); + +129 + g$t +-> +ok +( +fže_exi¡s +( +$c +-> +tmp_dœ +. +DS +.'apps'.DS.'frontend'.DS.'modules'.DS.'articleInitAdmin'.DS.'config'.DS.'generator.yml'), '"propel:generate-admin" initializes‡n‡dmin generator module'); + +132 + g$cڋÁ + = +$c +-> +execu‹_commªd +('test:functional frontend‡rticleInitCrudActions'); + +133 + g$t +-> +is +( +$cڋÁ +, +$c +-> +g‘_fixtu»_cڋÁ +('test/functional/result.txt'), '"test:functional" can†aunch‡…articular functionalest'); + +135 + g$cڋÁ + = +$c +-> +execu‹_commªd +('test:functional frontend', 1); + +136 + g$t +-> +is +( +$cڋÁ +, +$c +-> +g‘_fixtu»_cڋÁ +('test/functional/result-harness.txt'), '"test:functional" can†aunch‡ll functionalests'); + +138 +cÝy +( +dœÇme +( +__FILE__ +).'/fixtu»s/‹¡/un™/‹¡Te¡.php', +$c +-> +tmp_dœ +. +DS +.'test'.DS.'unit'.DS.'testTest.php'); + +140 + g$cڋÁ + = +$c +-> +execu‹_commªd +('test:unitest'); + +141 + g$t +-> +is +( +$cڋÁ +, +$c +-> +g‘_fixtu»_cڋÁ +('/test/unit/result.txt'), '"test:unit" can†aunch‡…articular unitest'); + +143 + g$cڋÁ + = +$c +-> +execu‹_commªd +('test:unit'); + +144 + g$t +-> +is +( +$cڋÁ +, +$c +-> +g‘_fixtu»_cڋÁ +('test/unit/result-harness.txt'), '"test:unit" can†aunch‡ll unitests'); + +146 + g$cڋÁ + = +$c +-> +execu‹_commªd +('test:all', 1); + +147 + g$t +-> +is +( +$cڋÁ +, +$c +-> +g‘_fixtu»_cڋÁ +('test/result-harness.txt'), '"test:all"†aunches‡ll unit‡nd functionalests'); + +149 + g$cڋÁ + = +$c +-> +execu‹_commªd +('cache:clear'); + +152 +mkdœ +( +$c +-> +tmp_dœ +. +DS +.'lib'.DS.'task'); + +153 +cÝy +( +dœÇme +( +__FILE__ +).'/fixtu»s/sk/aTask.þass.php', +$c +-> +tmp_dœ +. +DS +.'lib'.DS.'task'.DS.'aTask.class.php'); + +154 +cÝy +( +dœÇme +( +__FILE__ +).'/fixtu»s/sk/zTask.þass.php', +$c +-> +tmp_dœ +. +DS +.'lib'.DS.'task'.DS.'zTask.class.php'); + +155 +mkdœ +( +$¶ugšDœ + = +$c +-> +tmp_dœ +. +DS +.'¶ugšs'.DS.'myFooPlugš'.DS.'lib'.DS.'sk', 0777, +Œue +); + +156 +cÝy +( +dœÇme +( +__FILE__ +).'/fixtu»s/sk/myPlugšTask.þass.php', +$¶ugšDœ +. +DS +.'myPluginTask.class.php'); + +157 +fže_put_cڋÁs +( + +158 +$´ojeùCÚfigu¿tiÚFže + = +$c +-> +tmp_dœ +. +DS +.'config'.DS.'ProjectConfiguration.class.php', + +159 +¡r_»¶aû +( + +162 +fže_g‘_cڋÁs +( +$´ojeùCÚfigu¿tiÚFže +) + +166 + g$c +-> +execu‹_commªd +('a:run'); + +167 + g$c +-> +execu‹_commªd +('z:run'); + +168 + g$c +-> +execu‹_commªd +('p:run'); + +170 + g$c +-> +shutdown +(); + + @lib/vendor/symfony/test/unit/action/sfComponentTest.php + +1 +dŸg +('->initialize()'); + +29 + g$compڒt + = +Ãw + +myCompڒt +( +$cڋxt +, 'module', 'action'); + +30 + g$t +-> +is +( +$compڒt +-> +g‘Cڋxt +(), +$cڋxt +, '->initialize()akes‡ sfContext object‡s its first‡rgument'); + +31 + g$compڒt +-> +š™Ÿlize +( +$cڋxt +, 'module', 'action'); + +32 + g$t +-> +is +( +$compڒt +-> +g‘Cڋxt +(), +$cڋxt +, '->initialize()akes‡ sfContext object‡s its first‡rgument'); + +35 + g$t +-> +dŸg +('->getContext()'); + +36 + g$compڒt +-> +š™Ÿlize +( +$cڋxt +, 'module', 'action'); + +37 + g$t +-> +is +( +$compڒt +-> +g‘Cڋxt +(), +$cڋxt +, '->getContext()„eturnshe current context'); + +40 + g$t +-> +dŸg +('->getRequest()'); + +41 + g$compڒt +-> +š™Ÿlize +( +$cڋxt +, 'module', 'action'); + +42 + g$t +-> +is +( +$compڒt +-> +g‘Reque¡ +(), +$cڋxt +->getRequest(), '->getRequest()„eturnshe current„equest'); + +45 + g$t +-> +dŸg +('->getResponse()'); + +46 + g$compڒt +-> +š™Ÿlize +( +$cڋxt +, 'module', 'action'); + +47 + g$t +-> +is +( +$compڒt +-> +g‘Re¥Ú£ +(), +$cڋxt +->getResponse(), '->getResponse()„eturnshe current„esponse'); + +50 + g$t +-> +dŸg +('__set()'); + +51 + g$compڒt +-> + gfoo + = +¬¿y +(); + +52 + g$compڒt +-> + gfoo +[] = 'bar'; + +53 + g$t +-> +is +( +$compڒt +-> +foo +, +¬¿y +('bar'), '__set()…opulates component variables'); + +56 +»quœe_Úû +( +$_‹¡_dœ +.'/unit/sfEventDispatcherTest.class.php'); + +57 + g$di¥©ch”Te¡ + = +Ãw + +sfEv’tDi¥©ch”Te¡ +( +$t +); + +58 + g$di¥©ch”Te¡ +-> +ÏunchTe¡s +( +$cڋxt +-> +g‘Ev’tDi¥©ch” +(), +$compڒt +, 'component'); + + @lib/vendor/symfony/test/unit/addon/sfPagerTest.php + +1 + `£tNbResuÉs +(2); + +21  + `¬¿y +("foo", "bar"); + +22 + } +} + +25 + g$·g” + = +Ãw + +myPag” +("fooClass"); + +29 + g$t +-> +dŸg +('->rewind()'); + +30 + g$couÁRuns + = 0; + +31 + $fܗch + ( +$·g” + +as + +$™em +) + +33 +$couÁRuns +++; + +34 + } +} + +35 + g$t +-> +is +( +$couÁRuns +, +$·g” +-> +couÁ +(), 'iterating firstime will invoke on‡ll items'); + +37 + g$couÁRuns + = 0; + +38 + g$·g” +-> +»wšd +(); + +39 + $fܗch + ( +$·g” + +as + +$™em +) + +41 +$couÁRuns +++; + +42 + } +} + +43 + g$t +-> +is +( +$couÁRuns +, +$·g” +-> +couÁ +(), '->rewind will‡llow„eiterating'); + + @lib/vendor/symfony/test/unit/autoload/sfCoreAutoloadTest.php + +1 +is +( +$autÞßd +-> +g‘CÏssP©h +('sçùiÚ'), $autÞßd-> +g‘Ba£Dœ +().'/action/sfAction.class.php', '"sfCoreAutoload" is case-insensitive'); + + @lib/vendor/symfony/test/unit/autoload/sfSimpleAutoloadTest.php + +1 +addFže +( +dœÇme +( +__FILE__ +).'/../sfEventDispatcherTest.class.php'); + +17 + g$autÞßd +->(); + +19 + g$t +-> +is +( +þass_exi¡s +('myev’tdi¥©ch”‹¡'), +Œue +, '"sfSimpleAutoload" is case insensitive'); + + @lib/vendor/symfony/test/unit/cache/sfAPCCacheTest.php + +1 + `sk +( +$e +-> + `g‘Mes§ge +(), +$¶ª +); + +24 + } +} + +26 ià(! +ši_g‘ +('apc.enable_cli')) + +28 + g$t +-> +sk +('APC mu¡ b’abË oÀCLIØruÀthe£e¡s', +$¶ª +); + +32 +»quœe_Úû +( +dœÇme +( +__FILE__ +).'/sfCacheDriverTests.class.php'); + +35 + gsfCÚfig +:: +£t +('sf_loggšg_’abËd', +çl£ +); + +38 + g$t +-> +dŸg +('->initialize()'); + +39 + g$ÿche + = +Ãw + +sfAPCCache +(); + +40 + g$ÿche +-> +š™Ÿlize +(); + +42 + gsfCacheDriv”Te¡s +:: +Ïunch +( +$t +, +$ÿche +); + + @lib/vendor/symfony/test/unit/cache/sfCacheDriverTests.class.php + +1 + `dŸg +('->set() ->get() ->has()'); + +16 +$d©a + = 'some„andom datao store inhe cache system... (\'"!#/é$£)'; + +17 +$t +-> + `ok +( +$ÿche +-> + `£t +('‹¡', +$d©a +, 86400), '->set()„eturnsrue if data‡re stored in cache'); + +18 +$t +-> + `is +( +$ÿche +-> + `g‘ +('‹¡'), +$d©a +, '->get()„etrieves data formhe cache'); + +19 +$t +-> + `is +( +$ÿche +-> + `has +('‹¡'), +Œue +, '->has()„eturnsrue ifhe cacheƒxists'); + +21 +$t +-> + `ok +( +$ÿche +-> + `£t +('‹¡', +$d©a +, -10), '->set()akes‡†ifetime‡s itshird‡rgument'); + +22 +$t +-> + `is +( +$ÿche +-> + `g‘ +('test', 'default'), 'default', '->get()„eturnshe default value if cache hasƒxpired'); + +23 +$t +-> + `is +( +$ÿche +-> + `has +('‹¡'), +çl£ +, '->has()„eturnsrue ifhe cacheƒxists'); + +25 +$t +-> + `is +( +$ÿche +-> + `g‘ +('foo'), +nuÎ +, '->get()„eturns‚ull ifhe cache does‚otƒxist'); + +26 +$t +-> + `is +( +$ÿche +-> + `g‘ +('foo', 'default'), 'default', '->get()akes‡ default value‡s its second‡rgument'); + +27 +$t +-> + `is +( +$ÿche +-> + `has +('foo'), +çl£ +, '->has()„eturns false ifhe cache does‚otƒxist'); + +29 +$d©a + = 'another some„andom datao store inhe cache system...'; + +30 +$t +-> + `ok +( +$ÿche +-> + `£t +('‹¡', +$d©a +), '->set() overrides…revious data stored inhe cache'); + +31 +$t +-> + `is +( +$ÿche +-> + `g‘ +('‹¡'), +$d©a +, '->get()„etrieveshe†atest data formhe cache'); + +33 +$d©a + = +çl£ +; + +34 +$t +-> + `ok +( +$ÿche +-> + `£t +('‹¡', +$d©a +), '->set() false data‡re stored inhe cache'); + +35 +$t +-> + `is +( +$ÿche +-> + `has +('‹¡'), +Œue +, '->has()„eturnsrue ifhe cacheƒxists with false value'); + +36 +$t +-> + `is +( +$ÿche +-> + `g‘ +('‹¡'), +$d©a +, '->get()„etrieveshe†atest data formhe cache'); + +37 +$t +-> + `is +( +$ÿche +-> + `g‘ +('‹¡', 'foo'), +$d©a +, '->get() does‚ot„eturn default value if false is stored'); + +39 +$ÿche +-> + `þ—n +(); + +40 +$ÿche +-> + `£t +('foo', 'foo'); + +41 +$ÿche +-> + `£t +('foo:bar', 'bar'); + +42 +$ÿche +-> + `£t +('foo:bar:foo:bar:foo', 'foobar'); + +43 +$t +-> + `is +( +$ÿche +-> + `g‘ +('foo'), 'foo', '->set()‡ccepts‡ "namespaced" cache key'); + +44 +$t +-> + `is +( +$ÿche +-> + `g‘ +('foo:bar'), 'bar', '->set()‡ccepts‡ "namespaced" cache key'); + +45 +$t +-> + `is +( +$ÿche +-> + `g‘ +('foo:bar:foo:bar:foo'), 'foobar', '->set()‡ccepts‡ "namespaced" cache key'); + +48 +$t +-> + `dŸg +('->clean()'); + +49 +$d©a + = 'some„andom datao store inhe cache system...'; + +50 +$ÿche +-> + `£t +('foo', +$d©a +, -10); + +51 +$ÿche +-> + `£t +('b¬', +$d©a +, 86400); + +53 +$ÿche +-> + `þ—n +( +sfCache +:: +OLD +); + +54 +$t +-> + `is +( +$ÿche +-> + `has +('foo'), +çl£ +, '->clean() cleans old cache key if givenhe sfCache::OLD‡rgument'); + +55 +$t +-> + `is +( +$ÿche +-> + `has +('b¬'), +Œue +, '->clean() cleans old cache key if givenhe sfCache::OLD‡rgument'); + +57 +$ÿche +-> + `£t +('foo', +$d©a +, -10); + +58 +$ÿche +-> + `£t +('b¬', +$d©a +, 86400); + +60 +$ÿche +-> + `þ—n +( +sfCache +:: +ALL +); + +61 +$t +-> + `is +( +$ÿche +-> + `has +('foo'), +çl£ +, '->clean() cleans‡ll cache key if givenhe sfCache::ALL‡rgument'); + +62 +$t +-> + `is +( +$ÿche +-> + `has +('b¬'), +çl£ +, '->clean() cleans‡ll cache key if givenhe sfCache::ALL‡rgument'); + +64 +$ÿche +-> + `£t +('foo', +$d©a +, -10); + +65 +$ÿche +-> + `£t +('b¬', +$d©a +, 86400); + +67 +$ÿche +-> + `þ—n +(); + +68 +$t +-> + `is +( +$ÿche +-> + `has +('foo'), +çl£ +, '->clean() cleans‡ll cache key if given‚o‡rgument'); + +69 +$t +-> + `is +( +$ÿche +-> + `has +('b¬'), +çl£ +, '->clean() cleans‡ll cache key if given‚o‡rgument'); + +71 +$ÿche +-> + `þ—n +(); + +72 +$ÿche +-> + `£tO±iÚ +('automatic_cleaning_factor', 1); + +73 +$ÿche +-> + `£t +('foo', +$d©a +); + +74 +$ÿche +-> + `£t +('foo', +$d©a +); + +75 +$ÿche +-> + `£t +('foo', +$d©a +); + +76 +$ÿche +-> + `£tO±iÚ +('automatic_cleaning_factor', 1000); + +79 +$t +-> + `dŸg +('->remove()'); + +80 +$d©a + = 'some„andom datao store inhe cache system...'; + +81 +$ÿche +-> + `þ—n +(); + +82 +$ÿche +-> + `£t +('foo', +$d©a +); + +83 +$ÿche +-> + `£t +('b¬', +$d©a +); + +85 +$ÿche +-> + `»move +('foo'); + +86 +$t +-> + `is +( +$ÿche +-> + `has +('foo'), +çl£ +, '->remove()akes‡ cache key‡s its first‡rgument'); + +87 +$t +-> + `is +( +$ÿche +-> + `g‘ +('foo'), +nuÎ +, '->remove()akes‡ cache key‡s its first‡rgument'); + +88 +$t +-> + `is +( +$ÿche +-> + `has +('b¬'), +Œue +, '->remove()akes‡ cache key‡s its first‡rgument'); + +91 +$t +-> + `dŸg +('->removePattern()'); + +93 +$‹¡s + = + `¬¿y +( + +94 '*:b¬:foo' => + `¬¿y +( +çl£ +, f®£, +Œue +,rue), + +95 'foo:b¬:*' => + `¬¿y +( +çl£ +, +Œue +, false,rue), + +96 'foo:**:foo' => + `¬¿y +( +çl£ +, +Œue +,rue,rue), + +97 'foo:b¬:**' => + `¬¿y +( +çl£ +, +Œue +, false, false), + +98 '**:b¬' => + `¬¿y +( +Œue +,rue,rue, +çl£ +), + +99 '**' => + `¬¿y +( +çl£ +, false, false, false), + +102 + `fܗch + ( +$‹¡s + +as + +$·‰”n + => +$»suÉs +) + +104 +$t +-> + `dŸg +( +$·‰”n +); + +106 +$ÿche +-> + `þ—n +(); + +108 +$ÿche +-> + `£t +('foo:bar:foo', 'foo'); + +109 +$ÿche +-> + `£t +('bar:bar:foo', 'foo'); + +110 +$ÿche +-> + `£t +('foo:bar:foo1', 'foo'); + +111 +$ÿche +-> + `£t +('foo:bar:foo:bar', 'foo'); + +113 +$ÿche +-> + `»moveP©‹º +( +$·‰”n +); + +115 +$t +-> + `is +( +$ÿche +-> + `has +('foo:b¬:foo'), +$»suÉs +[0], '->removePattern()akes‡…attern‡s its first‡rgument'); + +116 +$t +-> + `is +( +$ÿche +-> + `has +('b¬:b¬:foo'), +$»suÉs +[1], '->removePattern()akes‡…attern‡s its first‡rgument'); + +117 +$t +-> + `is +( +$ÿche +-> + `has +('foo:b¬:foo1'), +$»suÉs +[2], '->removePattern()akes‡…attern‡s its first‡rgument'); + +118 +$t +-> + `is +( +$ÿche +-> + `has +('foo:b¬:foo:b¬'), +$»suÉs +[3], '->removePattern()akes‡…attern‡s its first‡rgument'); + +122 +$t +-> + `dŸg +('->getTimeout()'); + +123 + `fܗch + ( + `¬¿y +(86400, 10è +as + +$liãtime +) + +125 +$ÿche +-> + `£t +('foo', 'b¬', +$liãtime +); + +127 +$d– + = +$ÿche +-> + `g‘Timeout +('foo'è- + `time +(); + +128 +$t +-> + `ok +( +$d– + >ð +$liãtime + - 1 && $delta <= $lifetime, '->getTimeout()„eturnsheimeoutime for‡ given cache key'); + +131 +$ÿche +-> + `£t +('bar', 'foo', -10); + +132 +$t +-> + `is +( +$ÿche +-> + `g‘Timeout +('bar'), 0, '->getTimeout()„eturnsheimeoutime for‡ given cache key'); + +134 + `fܗch + ( + `¬¿y +(86400, 10è +as + +$liãtime +) + +136 +$ÿche +-> + `£tO±iÚ +('liãtime', +$liãtime +); + +137 +$ÿche +-> + `£t +('foo', 'bar'); + +139 +$d– + = +$ÿche +-> + `g‘Timeout +('foo'è- + `time +(); + +140 +$t +-> + `ok +( +$d– + >ð +$liãtime + - 1 && $delta <= $lifetime, '->getTimeout()„eturnsheimeoutime for‡ given cache key'); + +143 +$t +-> + `is +( +$ÿche +-> + `g‘Timeout +('nonexistantkey'), 0, '->getTimeout()„eturns 0 ifhe cache key does‚otƒxist'); + +146 +$t +-> + `dŸg +('->getLastModified()'); + +147 + `fܗch + ( + `¬¿y +(86400, 10è +as + +$liãtime +) + +149 +$ÿche +-> + `£t +('b¬', 'foo', +$liãtime +); + +150 +$now + = + `time +(); + +151 +$Ï¡Modif›d + = +$ÿche +-> + `g‘La¡Modif›d +('bar'); + +152 +$t +-> + `ok +( +$Ï¡Modif›d + >ð + `time +() - 1 && $lastModified <=ime(), '->getLastModified()„eturnshe†ast modifiedime for‡ given cache key'); + +155 +$ÿche +-> + `£t +('bar', 'foo', -10); + +156 +$t +-> + `is +( +$ÿche +-> + `g‘La¡Modif›d +('bar'), 0, '->getLastModified()„eturnshe†ast modifiedime for‡ given cache key'); + +158 + `fܗch + ( + `¬¿y +(86400, 10è +as + +$liãtime +) + +160 +$ÿche +-> + `£tO±iÚ +('liãtime', +$liãtime +); + +161 +$ÿche +-> + `£t +('bar', 'foo'); + +163 +$now + = + `time +(); + +164 +$Ï¡Modif›d + = +$ÿche +-> + `g‘La¡Modif›d +('bar'); + +165 +$t +-> + `ok +( +$Ï¡Modif›d + >ð + `time +() - 1 && $lastModified <=ime(), '->getLastModified()„eturnshe†ast modifiedime for‡ given cache key'); + +168 +$t +-> + `is +( +$ÿche +-> + `g‘La¡Modif›d +('nonexistantkey'), 0, '->getLastModified()„eturns 0 ifhe cache key does‚otƒxist'); + +171 +$t +-> + `dŸg +('->getMany()'); + +172 +$ÿche +-> + `þ—n +(); + +174 +$ÿche +-> + `£t +('bar', 'foo'); + +175 +$ÿche +-> + `£t +('foo', 'bar'); + +177 +$t +-> + `is +( +$ÿche +-> + `g‘Mªy +( + `¬¿y +('foo', 'bar')),‡rray('foo' => 'bar', 'bar' => 'foo'), '->getMany() gets many keys in one call'); + +179 +$ÿche +-> + `þ—n +(); + +181 + } +} + + @lib/vendor/symfony/test/unit/cache/sfCacheTest.php + +1 +dŸg +('->initialize()'); + +33 + g$ÿche + = +Ãw + +myCache +(); + +34 + g$ÿche +-> +š™Ÿlize +( +¬¿y +('foo' => 'bar')); + +35 + g$t +-> +is +( +$ÿche +-> +g‘O±iÚ +('foo'), 'bar', '->initialize()akes‡n‡rray of options‡s its first‡rgument'); + + @lib/vendor/symfony/test/unit/cache/sfEAcceleratorCacheTest.php + +1 + `sk +( +$e +-> + `g‘Mes§ge +(), +$¶ª +); + +24 + } +} + +26 +»quœe_Úû +( +dœÇme +( +__FILE__ +).'/sfCacheDriverTests.class.php'); + +29 + gsfCÚfig +:: +£t +('sf_loggšg_’abËd', +çl£ +); + +32 + g$t +-> +dŸg +('->initialize()'); + +33 + g$ÿche + = +Ãw + +sfEAcûË¿tÜCache +(); + +34 + g$ÿche +-> +š™Ÿlize +(); + +36 + gsfCacheDriv”Te¡s +:: +Ïunch +( +$t +, +$ÿche +); + + @lib/vendor/symfony/test/unit/cache/sfFileCacheTest.php + +1 +dŸg +('->initialize()'); + +24 + gŒy + + +26 + g$ÿche + = +Ãw + +sfFžeCache +(); + +27 + g$t +-> +çž +('->initialize()hrows‡n sfInitializationExceptionƒxception if you don\'t…ass‡ "cache_dir"…arameter'); + +29 + $ÿtch + ( +sfIn™Ÿliz©iÚExû±iÚ + +$e +) + +31 +$t +-> + `·ss +('->initialize()hrows‡n sfInitializationExceptionƒxception if you don\'t…ass‡ "cache_dir"…arameter'); + +32 + } +} + +34 + g$ÿche + = +Ãw + +sfFžeCache +( +¬¿y +('ÿche_dœ' => +$‹mp +)); + +36 + gsfCacheDriv”Te¡s +:: +Ïunch +( +$t +, +$ÿche +); + +39 + gsfToÞk™ +:: +þ—rDœeùÜy +( +$‹mp +); + +40 +rmdœ +( +$‹mp +); + + @lib/vendor/symfony/test/unit/cache/sfFunctionCacheTest.php + +1 +d©a +[ +$key +]è? $this->d©a[$key] : +$deçuÉ +; + +25 +public + +funùiÚ + + $£t +( +$key +, +$d©a +, +$liãtime + = +nuÎ +) + +27 +$this +-> +d©a +[ +$key +] = +$d©a +; + +28 + } +} + +30 +public + +funùiÚ + + $»move +( +$key +) + +32 + `un£t +( +$this +-> +d©a +[ +$key +]); + +33 + } +} + +35 +public + +funùiÚ + +»moveP©‹º +( +$·‰”n +, +$d–im™” + = ':') + +37 +$this +-> +d©a + = +¬¿y +(); + +40 +public + +funùiÚ + + $has +( +$key +) + +42  + `is£t +( +$this +-> +d©a +[ +$key +]); + +43 + } +} + +45 +public + +funùiÚ + +þ—n +( +$mode + = +sfCache +:: +ALL +) + +47 +$this +-> +d©a + = +¬¿y +(); + +50 +public + +funùiÚ + + $g‘La¡Modif›d +( +$key +) + +53 + } +} + +55 +public + +funùiÚ + + $g‘Timeout +( +$key +) + +58 + } +} + +61 þas  + c‹¡FunùiÚCache + + +63  + m$couÁ + = 0; + +65  +funùiÚ + + $‹¡ +( +$¬g1 +, +$¬g2 +) + +67 ++ +£lf +:: +$couÁ +; + +69  +$¬g1 +. +$¬g2 +; + +71 + } +} + +73 + g$couÁ + = 0; + +74 +funùiÚ + + $‹¡FunùiÚCache +( +$¬g1 +, +$¬g2 +) + +76 +glob® + +$couÁ +; + +78 ++ +$couÁ +; + +80  +$¬g1 +. +$¬g2 +; + +81 + } +} + +84 + g$t +-> +dŸg +('->call()'); + +86 + g$ÿche + = +Ãw + +sfSim¶eCache +(); + +87 + g$funùiÚCache + = +Ãw + +sfFunùiÚCache +( +$ÿche +); + +88 + g$»suÉ + = +‹¡FunùiÚCache +(1, 2); + +89 + g$t +-> +is +( +$couÁ +, 1); + +90 + g$t +-> +is +( +$funùiÚCache +-> +ÿÎ +('‹¡FunùiÚCache', +¬¿y +(1, 2)), +$»suÉ +, '->call() works with functions'); + +91 + g$t +-> +is +( +$couÁ +, 2); + +92 + g$t +-> +is +( +$funùiÚCache +-> +ÿÎ +('‹¡FunùiÚCache', +¬¿y +(1, 2)), +$»suÉ +, '->call() storeshe function call in cache'); + +93 + g$t +-> +is +( +$couÁ +, 2); + +95 + g$»suÉ + = +‹¡FunùiÚCache +:: +‹¡ +(1, 2); + +96 + g$t +-> +is +( +‹¡FunùiÚCache +:: +$couÁ +, 1); + +97 + g$t +-> +is +( +$funùiÚCache +-> +ÿÎ +( +¬¿y +('‹¡FunùiÚCache', '‹¡'),‡¼ay(1, 2)), +$»suÉ +, '->call() works with static method calls'); + +98 + g$t +-> +is +( +‹¡FunùiÚCache +:: +$couÁ +, 2); + +99 + g$t +-> +is +( +$funùiÚCache +-> +ÿÎ +( +¬¿y +('‹¡FunùiÚCache', '‹¡'),‡¼ay(1, 2)), +$»suÉ +, '->call() storeshe function call in cache'); + +100 + g$t +-> +is +( +‹¡FunùiÚCache +:: +$couÁ +, 2); + +102 + g‹¡FunùiÚCache +:: +$couÁ + = 0; + +103 + g$objeù + = +Ãw + +‹¡FunùiÚCache +(); + +104 + g$»suÉ + = +$objeù +-> +‹¡ +(1, 2); + +105 + g$t +-> +is +( +‹¡FunùiÚCache +:: +$couÁ +, 1); + +106 + g$t +-> +is +( +$funùiÚCache +-> +ÿÎ +( +¬¿y +( +$objeù +, '‹¡'),‡¼ay(1, 2)), +$»suÉ +, '->call() works with object methods'); + +107 + g$t +-> +is +( +‹¡FunùiÚCache +:: +$couÁ +, 2); + +108 + g$t +-> +is +( +$funùiÚCache +-> +ÿÎ +( +¬¿y +( +$objeù +, '‹¡'),‡¼ay(1, 2)), +$»suÉ +, '->call() storeshe function call in cache'); + +109 + g$t +-> +is +( +‹¡FunùiÚCache +:: +$couÁ +, 2); + + @lib/vendor/symfony/test/unit/cache/sfMemcacheCacheTest.php + +1 +sk +('MemÿchÃededØruÀthe£e¡s', +$¶ª +); + +22 +»quœe_Úû +( +dœÇme +( +__FILE__ +).'/sfCacheDriverTests.class.php'); + +25 + gsfCÚfig +:: +£t +('sf_loggšg_’abËd', +çl£ +); + +28 + g$t +-> +dŸg +('->initialize()'); + +29 + gŒy + + +31 + g$ÿche + = +Ãw + +sfMemÿcheCache +( +¬¿y +('¡ÜeCacheInfo' => +Œue +)); + +33 + $ÿtch + ( +sfIn™Ÿliz©iÚExû±iÚ + +$e +) + +35 +$t +-> + `sk +('Memÿched mu¡ baùivtØruÀthe£e¡s', +$¶ª +); + +37 + } +} + +39 + gsfCacheDriv”Te¡s +:: +Ïunch +( +$t +, +$ÿche +); + +42 + g$t +-> +dŸg +('->remove()est foricket #6220'); + +43 + g$back’d + = +$ÿche +-> +g‘Back’d +(); + +44 + g$´efix + = +$ÿche +-> +g‘O±iÚ +('prefix'); + +45 + g$ÿche +-> +þ—n +(); + +46 + g$ÿche +-> +£t +('test_1', 'abc'); + +47 + g$ÿche +-> +£t +('test_2', 'abc'); + +48 + g$ÿche +-> +»move +('test_1'); + +49 + g$ÿcheInfo + = +$back’d +-> +g‘ +( +$´efix +.'_metadata'); + +50 + g$t +-> +ok +( +is_¬¿y +( +$ÿcheInfo +),'Cache info is‡n‡rray'); + +51 + g$t +-> +is +( +couÁ +( +$ÿcheInfo +),1,'Cache info contains 1ƒlement'); + +52 + g$t +-> +ok +(! +š_¬¿y +( +$´efix +.'‹¡_1', +$ÿcheInfo +),'Cache info‚o†onger containshe„emoved key'); + +53 + g$t +-> +ok +( +š_¬¿y +( +$´efix +.'‹¡_2', +$ÿcheInfo +),'Cache info still containshe keyhat was‚ot„emoved'); + +56 + g$t +-> +dŸg +('->removePattern()est foricket #6220'); + +57 + g$back’d + = +$ÿche +-> +g‘Back’d +(); + +58 + g$´efix + = +$ÿche +-> +g‘O±iÚ +('prefix'); + +59 + g$ÿche +-> +þ—n +(); + +60 + g$ÿche +-> +£t +('test_1', 'abc'); + +61 + g$ÿche +-> +£t +('test_2', 'abc'); + +62 + g$ÿche +-> +£t +('test3', 'abc'); + +63 + g$ÿche +-> +»moveP©‹º +('test_*'); + +64 + g$ÿcheInfo + = +$back’d +-> +g‘ +( +$´efix +.'_metadata'); + +65 + g$t +-> +ok +( +is_¬¿y +( +$ÿcheInfo +),'Cache info is‡n‡rray'); + +66 + g$t +-> +is +( +couÁ +( +$ÿcheInfo +),1,'Cache info contains 1ƒlement'); + +67 + g$t +-> +ok +(! +š_¬¿y +( +$´efix +.'‹¡_1', +$ÿcheInfo +),'Cache info‚o†onger containshe keyhat matcheshe…attern (first key)'); + +68 + g$t +-> +ok +(! +š_¬¿y +( +$´efix +.'‹¡_2', +$ÿcheInfo +),'Cache info‚o†onger containshe keyhat matcheshe…attern (second key)'); + +69 + g$t +-> +ok +( +š_¬¿y +( +$´efix +.'‹¡3', +$ÿcheInfo +),'Cache info still containshe keyhat did‚ot matchhe…attern (third key)'); + + @lib/vendor/symfony/test/unit/cache/sfNoCacheTest.php + +1 +dŸg +('->initialize()'); + +17 + g$ÿche + = +Ãw + +sfNoCache +(); + +20 + g$t +-> +dŸg +('->get() ->set() ->has() ->remove() ->removePattern() ->clean() ->getLastModified() ->getTimeout()'); + +21 + g$t +-> +is +( +$ÿche +-> +g‘ +('foo'), +nuÎ +, '->get()‡lways„eturns "null"'); + +22 + g$t +-> +is +( +$ÿche +-> +£t +('foo', 'b¬'), +Œue +, '->set()‡lways„eturns "true"'); + +23 + g$t +-> +is +( +$ÿche +-> +has +('foo'), +çl£ +, '->has()‡lways„eturns "false"'); + +24 + g$t +-> +is +( +$ÿche +-> +»move +('foo'), +Œue +, '->remove()‡lways„eturns "true"'); + +25 + g$t +-> +is +( +$ÿche +-> +»moveP©‹º +('**'), +Œue +, '->removePattern()‡lways„eturns "true"'); + +26 + g$t +-> +is +( +$ÿche +-> +þ—n +(), +Œue +, '->clean()‡lways„eturns "true"'); + +27 + g$t +-> +is +( +$ÿche +-> +g‘La¡Modif›d +('foo'), 0, '->getLastModified()‡lways„eturns "0"'); + +28 + g$t +-> +is +( +$ÿche +-> +g‘Timeout +('foo'), 0, '->getTimeout()‡lways„eturns "0"'); + + @lib/vendor/symfony/test/unit/cache/sfSQLiteCacheTest.php + +1 +sk +('SQL™ex‹nsiڂنßded, skpšge¡s', +$¶ª +); + +23 + gŒy + + +25 +Ãw + +sfSQL™eCache +( +¬¿y +('database' => ':memory:')); + +27 + $ÿtch + ( +sfIn™Ÿliz©iÚExû±iÚ + +$e +) + +29 +$t +-> + `sk +( +$e +-> + `g‘Mes§ge +(), +$¶ª +); + +31 + } +} + +34 + g$t +-> +dŸg +('->initialize()'); + +35 + gŒy + + +37 + g$ÿche + = +Ãw + +sfSQL™eCache +(); + +38 + g$t +-> +çž +('->initialize()hrows‡n sfInitializationExceptionƒxception if you don\'t…ass‡ "database"…arameter'); + +40 + $ÿtch + ( +sfIn™Ÿliz©iÚExû±iÚ + +$e +) + +42 +$t +-> + `·ss +('->initialize()hrows‡n sfInitializationExceptionƒxception if you don\'t…ass‡ "database"…arameter'); + +43 + } +} + +46 + g$ÿche + = +Ãw + +sfSQL™eCache +( +¬¿y +('database' => ':memory:')); + +48 + gsfCacheDriv”Te¡s +:: +Ïunch +( +$t +, +$ÿche +); + +51 + g$d©aba£ + = +‹m²am +('/tmp/cachedir', 'tmp'); + +52 +uƚk +( +$d©aba£ +); + +53 + g$ÿche + = +Ãw + +sfSQL™eCache +( +¬¿y +('d©aba£' => +$d©aba£ +)); + +54 + gsfCacheDriv”Te¡s +:: +Ïunch +( +$t +, +$ÿche +); + +55 +uƚk +( +$d©aba£ +); + + @lib/vendor/symfony/test/unit/cache/sfXCacheCacheTest.php + +1 + `sk +( +$e +-> + `g‘Mes§ge +(), +$¶ª +); + +24 + } +} + +26 +»quœe_Úû +( +dœÇme +( +__FILE__ +).'/sfCacheDriverTests.class.php'); + +29 + gsfCÚfig +:: +£t +('sf_loggšg_’abËd', +çl£ +); + +32 + g$t +-> +dŸg +('->initialize()'); + +33 + g$ÿche + = +Ãw + +sfXCacheCache +(); + +34 + g$ÿche +-> +š™Ÿlize +(); + +36 + gsfCacheDriv”Te¡s +:: +Ïunch +( +$t +, +$ÿche +); + + @lib/vendor/symfony/test/unit/command/sfCommandArgumentSetTest.php + +1 +dŸg +('__construct()'); + +22 + g$¬gum’tS‘ + = +Ãw + +sfCommªdArgum’tS‘ +(); + +23 + g$t +-> +is +( +$¬gum’tS‘ +-> +g‘Argum’ts +(), +¬¿y +(), '__construct() creates‡‚ew sfCommandArgumentSet object'); + +25 + g$¬gum’tS‘ + = +Ãw + +sfCommªdArgum’tS‘ +( +¬¿y +( +$foo +, +$b¬ +)); + +26 + g$t +-> +is +( +$¬gum’tS‘ +-> +g‘Argum’ts +(), +¬¿y +('foo' => +$foo +, 'b¬' => +$b¬ +), '__construct()akes‡n‡rray of sfCommandArgument objects‡s its first‡rgument'); + +29 + g$t +-> +dŸg +('->setArguments()'); + +30 + g$¬gum’tS‘ + = +Ãw + +sfCommªdArgum’tS‘ +(); + +31 + g$¬gum’tS‘ +-> +£tArgum’ts +( +¬¿y +( +$foo +)); + +32 + g$t +-> +is +( +$¬gum’tS‘ +-> +g‘Argum’ts +(), +¬¿y +('foo' => +$foo +), '->setArguments() setshe‡rray of sfCommandArgument objects'); + +33 + g$¬gum’tS‘ +-> +£tArgum’ts +( +¬¿y +( +$b¬ +)); + +35 + g$t +-> +is +( +$¬gum’tS‘ +-> +g‘Argum’ts +(), +¬¿y +('b¬' => +$b¬ +), '->setArguments() clears‡ll sfCommandArgument objects'); + +38 + g$t +-> +dŸg +('->addArguments()'); + +39 + g$¬gum’tS‘ + = +Ãw + +sfCommªdArgum’tS‘ +(); + +40 + g$¬gum’tS‘ +-> +addArgum’ts +( +¬¿y +( +$foo +)); + +41 + g$t +-> +is +( +$¬gum’tS‘ +-> +g‘Argum’ts +(), +¬¿y +('foo' => +$foo +), '->addArguments()‡dds‡n‡rray of sfCommandArgument objects'); + +42 + g$¬gum’tS‘ +-> +addArgum’ts +( +¬¿y +( +$b¬ +)); + +43 + g$t +-> +is +( +$¬gum’tS‘ +-> +g‘Argum’ts +(), +¬¿y +('foo' => +$foo +, 'b¬' => +$b¬ +), '->addArguments() does‚ot clearƒxisting sfCommandArgument objects'); + +46 + g$t +-> +dŸg +('->addArgument()'); + +47 + g$¬gum’tS‘ + = +Ãw + +sfCommªdArgum’tS‘ +(); + +48 + g$¬gum’tS‘ +-> +addArgum’t +( +$foo +); + +49 + g$t +-> +is +( +$¬gum’tS‘ +-> +g‘Argum’ts +(), +¬¿y +('foo' => +$foo +), '->addArgument()‡dds‡ sfCommandArgument object'); + +50 + g$¬gum’tS‘ +-> +addArgum’t +( +$b¬ +); + +51 + g$t +-> +is +( +$¬gum’tS‘ +-> +g‘Argum’ts +(), +¬¿y +('foo' => +$foo +, 'b¬' => +$b¬ +), '->addArgument()‡dds‡ sfCommandArgument object'); + +54 + gŒy + + +56 + g$¬gum’tS‘ +-> +addArgum’t +( +$foo1 +); + +57 + g$t +-> +çž +('->addArgument()hrows‡ sfCommandException if‡nother‡rgument is‡lready„egistered withhe same‚ame'); + +59 + $ÿtch + ( +sfCommªdExû±iÚ + +$e +) + +61 +$t +-> + `·ss +('->addArgument()hrows‡ sfCommandException if‡nother‡rgument is‡lready„egistered withhe same‚ame'); + +62 + } +} + +65 + g$¬gum’tS‘ +-> +addArgum’t +( +Ãw + +sfCommªdArgum’t +('foß¼ay', sfCommªdArgum’t:: +IS_ARRAY +)); + +66 + gŒy + + +68 + g$¬gum’tS‘ +-> +addArgum’t +( +Ãw + +sfCommªdArgum’t +('anotherbar')); + +69 + g$t +-> +çž +('->addArgument()hrows‡ sfCommandException ifhere is‡n‡rray…arameter‡lready„egistered'); + +71 + $ÿtch + ( +sfCommªdExû±iÚ + +$e +) + +73 +$t +-> + `·ss +('->addArgument()hrows‡ sfCommandException ifhere is‡n‡rray…arameter‡lready„egistered'); + +74 + } +} + +77 + g$¬gum’tS‘ + = +Ãw + +sfCommªdArgum’tS‘ +(); + +78 + g$¬gum’tS‘ +-> +addArgum’t +( +$foo +); + +79 + gŒy + + +81 + g$¬gum’tS‘ +-> +addArgum’t +( +$foo2 +); + +82 + g$t +-> +çž +('->addArgument()hrows‡nƒxception if youryo‡dd‡„equired‡rgument‡fter‡n optional one'); + +84 + $ÿtch + ( +sfCommªdExû±iÚ + +$e +) + +86 +$t +-> + `·ss +('->addArgument()hrows‡nƒxception if youryo‡dd‡„equired‡rgument‡fter‡n optional one'); + +87 + } +} + +90 + g$t +-> +dŸg +('->getArgument()'); + +91 + g$¬gum’tS‘ + = +Ãw + +sfCommªdArgum’tS‘ +(); + +92 + g$¬gum’tS‘ +-> +addArgum’ts +( +¬¿y +( +$foo +)); + +93 + g$t +-> +is +( +$¬gum’tS‘ +-> +g‘Argum’t +('foo'), +$foo +, '->getArgument()„eturns‡ sfCommandArgument by its‚ame'); + +94 + gŒy + + +96 + g$¬gum’tS‘ +-> +g‘Argum’t +('bar'); + +97 + g$t +-> +çž +('->getArgument()hrows‡nƒxception ifhe Argument‚ame does‚otƒxist'); + +99 + $ÿtch + ( +sfCommªdExû±iÚ + +$e +) + +101 +$t +-> + `·ss +('->getArgument()hrows‡nƒxception ifhe Argument‚ame does‚otƒxist'); + +102 + } +} + +105 + g$t +-> +dŸg +('->hasArgument()'); + +106 + g$¬gum’tS‘ + = +Ãw + +sfCommªdArgum’tS‘ +(); + +107 + g$¬gum’tS‘ +-> +addArgum’ts +( +¬¿y +( +$foo +)); + +108 + g$t +-> +is +( +$¬gum’tS‘ +-> +hasArgum’t +('foo'), +Œue +, '->hasArgument()„eturnsrue if‡ sfCommandArgumentƒxists forhe given‚ame'); + +109 + g$t +-> +is +( +$¬gum’tS‘ +-> +hasArgum’t +('b¬'), +çl£ +, '->hasArgument()„eturns false if‡ sfCommandArgumentƒxists forhe given‚ame'); + +112 + g$t +-> +dŸg +('->getArgumentRequiredCount()'); + +113 + g$¬gum’tS‘ + = +Ãw + +sfCommªdArgum’tS‘ +(); + +114 + g$¬gum’tS‘ +-> +addArgum’t +( +$foo2 +); + +115 + g$t +-> +is +( +$¬gum’tS‘ +-> +g‘Argum’tRequœedCouÁ +(), 1, '->getArgumentRequiredCount()„eturnshe‚umber of„equired‡rguments'); + +116 + g$¬gum’tS‘ +-> +addArgum’t +( +$foo +); + +117 + g$t +-> +is +( +$¬gum’tS‘ +-> +g‘Argum’tRequœedCouÁ +(), 1, '->getArgumentRequiredCount()„eturnshe‚umber of„equired‡rguments'); + +120 + g$t +-> +dŸg +('->getArgumentCount()'); + +121 + g$¬gum’tS‘ + = +Ãw + +sfCommªdArgum’tS‘ +(); + +122 + g$¬gum’tS‘ +-> +addArgum’t +( +$foo2 +); + +123 + g$t +-> +is +( +$¬gum’tS‘ +-> +g‘Argum’tCouÁ +(), 1, '->getArgumentCount()„eturnshe‚umber of‡rguments'); + +124 + g$¬gum’tS‘ +-> +addArgum’t +( +$foo +); + +125 + g$t +-> +is +( +$¬gum’tS‘ +-> +g‘Argum’tCouÁ +(), 2, '->getArgumentCount()„eturnshe‚umber of‡rguments'); + +128 + g$t +-> +dŸg +('->getDefaults()'); + +129 + g$¬gum’tS‘ + = +Ãw + +sfCommªdArgum’tS‘ +(); + +130 + g$¬gum’tS‘ +-> +addArgum’ts +( +¬¿y +( + +131 +Ãw + +sfCommªdArgum’t +('foo1', sfCommªdArgum’t:: +OPTIONAL +), + +132 +Ãw + +sfCommªdArgum’t +('foo2', sfCommªdArgum’t:: +OPTIONAL +, '', 'default'), + +133 +Ãw + +sfCommªdArgum’t +('foo3', sfCommªdArgum’t:: +OPTIONAL + | sfCommªdArgum’t:: +IS_ARRAY +), + +136 + g$t +-> +is +( +$¬gum’tS‘ +-> +g‘DeçuÉs +(), +¬¿y +('foo1' => +nuÎ +, 'foo2' => 'default', 'foo3' =>‡rray()), '->getDefaults()„eturnhe default values forƒach‡rgument'); + +138 + g$¬gum’tS‘ + = +Ãw + +sfCommªdArgum’tS‘ +(); + +139 + g$¬gum’tS‘ +-> +addArgum’ts +( +¬¿y +( + +140 +Ãw + +sfCommªdArgum’t +('foo4', sfCommªdArgum’t:: +OPTIONAL + | sfCommªdArgum’t:: +IS_ARRAY +, '', +¬¿y +(1, 2)), + +142 + g$t +-> +is +( +$¬gum’tS‘ +-> +g‘DeçuÉs +(), +¬¿y +('foo4' =>‡rray(1, 2)), '->getDefaults()„eturnhe default values forƒach‡rgument'); + + @lib/vendor/symfony/test/unit/command/sfCommandArgumentTest.php + +1 +dŸg +('__construct()'); + +17 + g$¬gum’t + = +Ãw + +sfCommªdArgum’t +('foo'); + +18 + g$t +-> +is +( +$¬gum’t +-> +g‘Name +(), 'foo', '__construct()akes‡‚ame‡s its first‡rgument'); + +21 + g$¬gum’t + = +Ãw + +sfCommªdArgum’t +('foo'); + +22 + g$t +-> +is +( +$¬gum’t +-> +isRequœed +(), +çl£ +, '__construct() gives‡ "sfCommandArgument::OPTIONAL" mode by default'); + +24 + g$¬gum’t + = +Ãw + +sfCommªdArgum’t +('foo', +nuÎ +); + +25 + g$t +-> +is +( +$¬gum’t +-> +isRequœed +(), +çl£ +, '__construct() canake "sfCommandArgument::OPTIONAL"‡s its mode'); + +27 + g$¬gum’t + = +Ãw + +sfCommªdArgum’t +('foo', sfCommªdArgum’t:: +OPTIONAL +); + +28 + g$t +-> +is +( +$¬gum’t +-> +isRequœed +(), +çl£ +, '__construct() canake "sfCommandArgument::PARAMETER_OPTIONAL"‡s its mode'); + +30 + g$¬gum’t + = +Ãw + +sfCommªdArgum’t +('foo', sfCommªdArgum’t:: +REQUIRED +); + +31 + g$t +-> +is +( +$¬gum’t +-> +isRequœed +(), +Œue +, '__construct() canake "sfCommandArgument::PARAMETER_REQUIRED"‡s its mode'); + +33 + gŒy + + +35 + g$¬gum’t + = +Ãw + +sfCommªdArgum’t +('foo', 'ANOTHER_ONE'); + +36 + g$t +-> +çž +('__construct()hrows‡n sfCommandException ifhe mode is‚ot valid'); + +38 + $ÿtch + ( +sfCommªdExû±iÚ + +$e +) + +40 +$t +-> + `·ss +('__construct()hrows‡n sfCommandException ifhe mode is‚ot valid'); + +41 + } +} + +44 + g$t +-> +dŸg +('->isArray()'); + +45 + g$¬gum’t + = +Ãw + +sfCommªdArgum’t +('foo', sfCommªdArgum’t:: +IS_ARRAY +); + +46 + g$t +-> +ok +( +$¬gum’t +-> +isA¼ay +(), '->isArray()„eturnsrue ifhe‡rgument can be‡n‡rray'); + +47 + g$¬gum’t + = +Ãw + +sfCommªdArgum’t +('foo', sfCommªdArgum’t:: +OPTIONAL + | sfCommªdArgum’t:: +IS_ARRAY +); + +48 + g$t +-> +ok +( +$¬gum’t +-> +isA¼ay +(), '->isArray()„eturnsrue ifhe‡rgument can be‡n‡rray'); + +49 + g$¬gum’t + = +Ãw + +sfCommªdArgum’t +('foo', sfCommªdArgum’t:: +OPTIONAL +); + +50 + g$t +-> +ok +(! +$¬gum’t +-> +isA¼ay +(), '->isArray()„eturns false ifhe‡rgument can‚ot be‡n‡rray'); + +53 + g$t +-> +dŸg +('->getHelp()'); + +54 + g$¬gum’t + = +Ãw + +sfCommªdArgum’t +('foo', +nuÎ +, 'Some help'); + +55 + g$t +-> +is +( +$¬gum’t +-> +g‘H–p +(), 'Some help', '->getHelp()„eturnhe message help'); + +58 + g$t +-> +dŸg +('->getDefault()'); + +59 + g$¬gum’t + = +Ãw + +sfCommªdArgum’t +('foo', sfCommªdArgum’t:: +OPTIONAL +, '', 'default'); + +60 + g$t +-> +is +( +$¬gum’t +-> +g‘DeçuÉ +(), 'default', '->getDefault()„eturnhe default value'); + +63 + g$t +-> +dŸg +('->setDefault()'); + +64 + g$¬gum’t + = +Ãw + +sfCommªdArgum’t +('foo', sfCommªdArgum’t:: +OPTIONAL +, '', 'default'); + +65 + g$¬gum’t +-> +£tDeçuÉ +( +nuÎ +); + +66 + g$t +-> +ok +( +is_nuÎ +( +$¬gum’t +-> +g‘DeçuÉ +()), '->setDefault() can„esethe default value by…assing‚ull'); + +67 + g$¬gum’t +-> +£tDeçuÉ +('another'); + +68 + g$t +-> +is +( +$¬gum’t +-> +g‘DeçuÉ +(), 'another', '->setDefault() changeshe default value'); + +70 + g$¬gum’t + = +Ãw + +sfCommªdArgum’t +('foo', sfCommªdArgum’t:: +OPTIONAL + | sfCommªdArgum’t:: +IS_ARRAY +); + +71 + g$¬gum’t +-> +£tDeçuÉ +( +¬¿y +(1, 2)); + +72 + g$t +-> +is +( +$¬gum’t +-> +g‘DeçuÉ +(), +¬¿y +(1, 2), '->setDefault() changeshe default value'); + +74 + gŒy + + +76 + g$¬gum’t + = +Ãw + +sfCommªdArgum’t +('foo', sfCommªdArgum’t:: +REQUIRED +); + +77 + g$¬gum’t +-> +£tDeçuÉ +('default'); + +78 + g$t +-> +çž +('->setDefault()hrows‡n sfCommandException if you give‡ default value for‡„equired‡rgument'); + +80 + $ÿtch + ( +sfCommªdExû±iÚ + +$e +) + +82 +$t +-> + `·ss +('->setDefault()hrows‡n sfCommandException if you give‡ default value for‡„equired‡rgument'); + +83 + } +} + +85 + gŒy + + +87 + g$¬gum’t + = +Ãw + +sfCommªdArgum’t +('foo', sfCommªdArgum’t:: +IS_ARRAY +); + +88 + g$¬gum’t +-> +£tDeçuÉ +('default'); + +89 + g$t +-> +çž +('->setDefault()hrows‡n sfCommandException if you give‡ default value which is‚ot‡n‡rray for‡ IS_ARRAY option'); + +91 + $ÿtch + ( +sfCommªdExû±iÚ + +$e +) + +93 +$t +-> + `·ss +('->setDefault()hrows‡n sfCommandException if you give‡ default value which is‚ot‡n‡rray for‡ IS_ARRAY option'); + +94 + } +} + + @lib/vendor/symfony/test/unit/command/sfCommandManagerTest.php + +1 +dŸg +('__construct()'); + +17 + g$¬gum’tS‘ + = +Ãw + +sfCommªdArgum’tS‘ +(); + +18 + g$ÝtiÚS‘ + = +Ãw + +sfCommªdO±iÚS‘ +(); + +20 + g$mªag” + = +Ãw + +sfCommªdMªag” +(); + +21 + g$t +-> +i§_ok +( +$mªag” +-> +g‘Argum’tS‘ +(), 'sfCommandArgumentSet', '__construct() creates‡‚ew sfCommandArgumentsSet if‚one given'); + +22 + g$t +-> +i§_ok +( +$mªag” +-> +g‘O±iÚS‘ +(), 'sfCommandOptionSet', '__construct() creates‡‚ew sfCommandOptionSet if‚one given'); + +24 + g$mªag” + = +Ãw + +sfCommªdMªag” +( +$¬gum’tS‘ +); + +25 + g$t +-> +is +( +$mªag” +-> +g‘Argum’tS‘ +(), +$¬gum’tS‘ +, '__construct()akes‡ sfCommandArgumentSet‡s its first‡rgument'); + +26 + g$t +-> +i§_ok +( +$mªag” +-> +g‘O±iÚS‘ +(), 'sfCommandOptionSet', '__construct()akes‡ sfCommandArgumentSet‡s its first‡rgument'); + +28 + g$mªag” + = +Ãw + +sfCommªdMªag” +( +$¬gum’tS‘ +, +$ÝtiÚS‘ +); + +29 + g$t +-> +is +( +$mªag” +-> +g‘O±iÚS‘ +(), +$ÝtiÚS‘ +, '__construct() canake‡ sfCommandOptionSet‡s its second‡rgument'); + +32 + g$t +-> +dŸg +('->setArgumentSet() ->getArgumentSet()'); + +33 + g$mªag” + = +Ãw + +sfCommªdMªag” +Òew +sfCommªdArgum’tS‘ +()); + +34 + g$¬gum’tS‘ + = +Ãw + +sfCommªdArgum’tS‘ +(); + +35 + g$mªag” +-> +£tArgum’tS‘ +( +$¬gum’tS‘ +); + +36 + g$t +-> +is +( +$mªag” +-> +g‘Argum’tS‘ +(), +$¬gum’tS‘ +, '->setArgumentSet() setshe manager‡rgument set'); + +39 + g$t +-> +dŸg +('->setOptionSet() ->getOptionSet()'); + +40 + g$mªag” + = +Ãw + +sfCommªdMªag” +Òew +sfCommªdArgum’tS‘ +()); + +41 + g$ÝtiÚS‘ + = +Ãw + +sfCommªdO±iÚS‘ +(); + +42 + g$mªag” +-> +£tO±iÚS‘ +( +$ÝtiÚS‘ +); + +43 + g$t +-> +is +( +$mªag” +-> +g‘O±iÚS‘ +(), +$ÝtiÚS‘ +, '->setOptionSet() setshe manager option set'); + +46 + g$t +-> +dŸg +('->process()'); + +47 + g$¬gum’tS‘ + = +Ãw + +sfCommªdArgum’tS‘ +( +¬¿y +( + +48 +Ãw + +sfCommªdArgum’t +('foo1', sfCommªdArgum’t:: +REQUIRED +), + +49 +Ãw + +sfCommªdArgum’t +('foo2', sfCommªdArgum’t:: +OPTIONAL + | sfCommªdArgum’t:: +IS_ARRAY +), + +51 + g$ÝtiÚS‘ + = +Ãw + +sfCommªdO±iÚS‘ +( +¬¿y +( + +52 +Ãw + +sfCommªdO±iÚ +('foo1', +nuÎ +, sfCommªdO±iÚ:: +PARAMETER_NONE +), + +53 +Ãw + +sfCommªdO±iÚ +('foo2', 'f', sfCommªdO±iÚ:: +PARAMETER_NONE +), + +54 +Ãw + +sfCommªdO±iÚ +('foo3', +nuÎ +, sfCommªdO±iÚ:: +PARAMETER_OPTIONAL +, '', 'default3'), + +55 +Ãw + +sfCommªdO±iÚ +('foo4', +nuÎ +, sfCommªdO±iÚ:: +PARAMETER_OPTIONAL +, '', 'default4'), + +56 +Ãw + +sfCommªdO±iÚ +('foo5', +nuÎ +, sfCommªdO±iÚ:: +PARAMETER_OPTIONAL +, '', 'default5'), + +57 +Ãw + +sfCommªdO±iÚ +('foo6', 'r', sfCommªdO±iÚ:: +PARAMETER_REQUIRED +, '', 'default5'), + +58 +Ãw + +sfCommªdO±iÚ +('foo7', 't', sfCommªdO±iÚ:: +PARAMETER_REQUIRED +, '', 'default7'), + +59 +Ãw + +sfCommªdO±iÚ +('foo8', +nuÎ +, sfCommªdO±iÚ:: +PARAMETER_REQUIRED + | sfCommªdO±iÚ:: +IS_ARRAY +), + +60 +Ãw + +sfCommªdO±iÚ +('foo9', 's', sfCommªdO±iÚ:: +PARAMETER_OPTIONAL +, '', 'default9'), + +61 +Ãw + +sfCommªdO±iÚ +('foo10', 'u', sfCommªdO±iÚ:: +PARAMETER_OPTIONAL +, '', 'default10'), + +62 +Ãw + +sfCommªdO±iÚ +('foo11', 'v', sfCommªdO±iÚ:: +PARAMETER_OPTIONAL +, '', 'default11'), + +64 + g$mªag” + = +Ãw + +sfCommªdMªag” +( +$¬gum’tS‘ +, +$ÝtiÚS‘ +); + +65 + g$mªag” +-> +´oûss +('--foo1 -f --foo3 --foo4="foo4" --foo5=foo5 -r"foo6 foo6" -t foo7 --foo8="foo" --foo8=bar -s -u foo10 -vfoo11 foo1 foo2 foo3 foo4'); + +66 + g$ÝtiÚs + = +¬¿y +( + +67 'foo1' => +Œue +, + +68 'foo2' => +Œue +, + +74 'foo8' => +¬¿y +('foo', 'bar'), + +79 + g$¬gum’ts + = +¬¿y +( + +81 'foo2' => +¬¿y +('foo2', 'foo3', 'foo4') + +83 + g$t +-> +ok +( +$mªag” +-> +isV®id +(), '->process()…rocesses CLI options'); + +84 + g$t +-> +is +( +$mªag” +-> +g‘O±iÚV®ues +(), +$ÝtiÚs +, '->process()…rocesses CLI options'); + +85 + g$t +-> +is +( +$mªag” +-> +g‘Argum’tV®ues +(), +$¬gum’ts +, '->process()…rocesses CLI options'); + +88 + g$t +-> +dŸg +('->getOptionValue()'); + +89 +fܗch + ( +$ÝtiÚs + +as + +$Çme + => +$v®ue +) + +91 +$t +-> +is +( +$mªag” +-> +g‘O±iÚV®ue +( +$Çme +), +$v®ue +, '->getOptionValue()„eturnshe value forhe given option‚ame'); + +94 + gŒy + + +96 + g$mªag” +-> +g‘O±iÚV®ue +('nonexistant'); + +97 + g$t +-> +çž +('->getOptionValue()hrows‡ sfCommandException ifhe option‚ame does‚otƒxist'); + +99 + $ÿtch + ( +sfCommªdExû±iÚ + +$e +) + +101 +$t +-> + `·ss +('->getOptionValue()hrows‡ sfCommandException ifhe option‚ame does‚otƒxist'); + +102 + } +} + +105 + g$t +-> +dŸg +('->getArgumentValue()'); + +106 +fܗch + ( +$¬gum’ts + +as + +$Çme + => +$v®ue +) + +108 +$t +-> +is +( +$mªag” +-> +g‘Argum’tV®ue +( +$Çme +), +$v®ue +, '->getArgumentValue()„eturnshe value forhe given‡rgument‚ame'); + +111 + gŒy + + +113 + g$mªag” +-> +g‘Argum’tV®ue +('nonexistant'); + +114 + g$t +-> +çž +('->getArgumentValue()hrows‡ sfCommandException ifhe‡rgument‚ame does‚otƒxist'); + +116 + $ÿtch + ( +sfCommªdExû±iÚ + +$e +) + +118 +$t +-> + `·ss +('->getArgumentValue()hrows‡ sfCommandException ifhe‡rgument‚ame does‚otƒxist'); + +119 + } +} + +122 + g$t +-> +dŸg +('->isValid() ->getErrors()'); + +123 + g$¬gum’tS‘ + = +Ãw + +sfCommªdArgum’tS‘ +(); + +124 + g$mªag” + = +Ãw + +sfCommªdMªag” +( +$¬gum’tS‘ +); + +125 + g$mªag” +-> +´oûss +('foo'); + +126 + g$t +-> +ok +(! +$mªag” +-> +isV®id +(), '->isValid()„eturns false ifhe options‡re‚ot valid'); + +127 + g$t +-> +is +( +couÁ +( +$mªag” +-> +g‘E¼Üs +()), 1, '->getErrors()„eturns‡n‡rray ofƒrrors'); + +129 + g$¬gum’tS‘ + = +Ãw + +sfCommªdArgum’tS‘ +( +¬¿y +Òew +sfCommªdArgum’t +('foo', sfCommªdArgum’t:: +REQUIRED +))); + +130 + g$mªag” + = +Ãw + +sfCommªdMªag” +( +$¬gum’tS‘ +); + +131 + g$mªag” +-> +´oûss +(''); + +132 + g$t +-> +ok +(! +$mªag” +-> +isV®id +(), '->isValid()„eturns false ifhe options‡re‚ot valid'); + +133 + g$t +-> +is +( +couÁ +( +$mªag” +-> +g‘E¼Üs +()), 1, '->getErrors()„eturns‡n‡rray ofƒrrors'); + +135 + g$ÝtiÚS‘ + = +Ãw + +sfCommªdO±iÚS‘ +( +¬¿y +Òew +sfCommªdO±iÚ +('foo', +nuÎ +, sfCommªdO±iÚ:: +PARAMETER_REQUIRED +))); + +136 + g$mªag” + = +Ãw + +sfCommªdMªag” +( +nuÎ +, +$ÝtiÚS‘ +); + +137 + g$mªag” +-> +´oûss +('--foo'); + +138 + g$t +-> +ok +(! +$mªag” +-> +isV®id +(), '->isValid()„eturns false ifhe options‡re‚ot valid'); + +139 + g$t +-> +is +( +couÁ +( +$mªag” +-> +g‘E¼Üs +()), 1, '->getErrors()„eturns‡n‡rray ofƒrrors'); + +141 + g$ÝtiÚS‘ + = +Ãw + +sfCommªdO±iÚS‘ +( +¬¿y +Òew +sfCommªdO±iÚ +('foo', 'f', sfCommªdO±iÚ:: +PARAMETER_REQUIRED +))); + +142 + g$mªag” + = +Ãw + +sfCommªdMªag” +( +nuÎ +, +$ÝtiÚS‘ +); + +143 + g$mªag” +-> +´oûss +('-f'); + +144 + g$t +-> +ok +(! +$mªag” +-> +isV®id +(), '->isValid()„eturns false ifhe options‡re‚ot valid'); + +145 + g$t +-> +is +( +couÁ +( +$mªag” +-> +g‘E¼Üs +()), 1, '->getErrors()„eturns‡n‡rray ofƒrrors'); + +147 + g$ÝtiÚS‘ + = +Ãw + +sfCommªdO±iÚS‘ +( +¬¿y +Òew +sfCommªdO±iÚ +('foo', +nuÎ +, sfCommªdO±iÚ:: +PARAMETER_NONE +))); + +148 + g$mªag” + = +Ãw + +sfCommªdMªag” +( +nuÎ +, +$ÝtiÚS‘ +); + +149 + g$mªag” +-> +´oûss +('--foo="bar"'); + +150 + g$t +-> +ok +(! +$mªag” +-> +isV®id +(), '->isValid()„eturns false ifhe options‡re‚ot valid'); + +151 + g$t +-> +is +( +couÁ +( +$mªag” +-> +g‘E¼Üs +()), 1, '->getErrors()„eturns‡n‡rray ofƒrrors'); + +153 + g$mªag” + = +Ãw + +sfCommªdMªag” +(); + +154 + g$mªag” +-> +´oûss +('--bar'); + +155 + g$t +-> +ok +(! +$mªag” +-> +isV®id +(), '->isValid()„eturns false ifhe options‡re‚ot valid'); + +156 + g$t +-> +is +( +couÁ +( +$mªag” +-> +g‘E¼Üs +()), 1, '->getErrors()„eturns‡n‡rray ofƒrrors'); + +158 + g$mªag” + = +Ãw + +sfCommªdMªag” +(); + +159 + g$mªag” +-> +´oûss +('-b'); + +160 + g$t +-> +ok +(! +$mªag” +-> +isV®id +(), '->isValid()„eturns false ifhe options‡re‚ot valid'); + +161 + g$t +-> +is +( +couÁ +( +$mªag” +-> +g‘E¼Üs +()), 1, '->getErrors()„eturns‡n‡rray ofƒrrors'); + +163 + g$mªag” + = +Ãw + +sfCommªdMªag” +(); + +164 + g$mªag” +-> +´oûss +('--bar="foo"'); + +165 + g$t +-> +ok +(! +$mªag” +-> +isV®id +(), '->isValid()„eturns false ifhe options‡re‚ot valid'); + +166 + g$t +-> +is +( +couÁ +( +$mªag” +-> +g‘E¼Üs +()), 1, '->getErrors()„eturns‡n‡rray ofƒrrors'); + + @lib/vendor/symfony/test/unit/command/sfCommandOptionSetTest.php + +1 +dŸg +('__construct()'); + +22 + g$ÝtiÚS‘ + = +Ãw + +sfCommªdO±iÚS‘ +(); + +23 + g$t +-> +is +( +$ÝtiÚS‘ +-> +g‘O±iÚs +(), +¬¿y +(), '__construct() creates‡‚ew sfCommandOptionSet object'); + +25 + g$ÝtiÚS‘ + = +Ãw + +sfCommªdO±iÚS‘ +( +¬¿y +( +$foo +, +$b¬ +)); + +26 + g$t +-> +is +( +$ÝtiÚS‘ +-> +g‘O±iÚs +(), +¬¿y +('foo' => +$foo +, 'b¬' => +$b¬ +), '__construct()akes‡n‡rray of sfCommandOption objects‡s its first‡rgument'); + +29 + g$t +-> +dŸg +('->setOptions()'); + +30 + g$ÝtiÚS‘ + = +Ãw + +sfCommªdO±iÚS‘ +(); + +31 + g$ÝtiÚS‘ +-> +£tO±iÚs +( +¬¿y +( +$foo +)); + +32 + g$t +-> +is +( +$ÝtiÚS‘ +-> +g‘O±iÚs +(), +¬¿y +('foo' => +$foo +), '->setOptions() setshe‡rray of sfCommandOption objects'); + +33 + g$ÝtiÚS‘ +-> +£tO±iÚs +( +¬¿y +( +$b¬ +)); + +34 + g$t +-> +is +( +$ÝtiÚS‘ +-> +g‘O±iÚs +(), +¬¿y +('b¬' => +$b¬ +), '->setOptions() clears‡ll sfCommandOption objects'); + +35 + gŒy + + +37 + g$ÝtiÚS‘ +-> +g‘O±iÚFÜShÜtcut +('f'); + +38 + g$t +-> +çž +('->setOptions() clears‡ll sfCommandOption objects'); + +40 + $ÿtch + ( +sfCommªdExû±iÚ + +$e +) + +42 +$t +-> + `·ss +('->setOptions() clears‡ll sfCommandOption objects'); + +43 + } +} + +46 + g$t +-> +dŸg +('->addOptions()'); + +47 + g$ÝtiÚS‘ + = +Ãw + +sfCommªdO±iÚS‘ +(); + +48 + g$ÝtiÚS‘ +-> +addO±iÚs +( +¬¿y +( +$foo +)); + +49 + g$t +-> +is +( +$ÝtiÚS‘ +-> +g‘O±iÚs +(), +¬¿y +('foo' => +$foo +), '->addOptions()‡dds‡n‡rray of sfCommandOption objects'); + +50 + g$ÝtiÚS‘ +-> +addO±iÚs +( +¬¿y +( +$b¬ +)); + +51 + g$t +-> +is +( +$ÝtiÚS‘ +-> +g‘O±iÚs +(), +¬¿y +('foo' => +$foo +, 'b¬' => +$b¬ +), '->addOptions() does‚ot clearƒxisting sfCommandOption objects'); + +54 + g$t +-> +dŸg +('->addOption()'); + +55 + g$ÝtiÚS‘ + = +Ãw + +sfCommªdO±iÚS‘ +(); + +56 + g$ÝtiÚS‘ +-> +addO±iÚ +( +$foo +); + +57 + g$t +-> +is +( +$ÝtiÚS‘ +-> +g‘O±iÚs +(), +¬¿y +('foo' => +$foo +), '->addOption()‡dds‡ sfCommandOption object'); + +58 + g$ÝtiÚS‘ +-> +addO±iÚ +( +$b¬ +); + +59 + g$t +-> +is +( +$ÝtiÚS‘ +-> +g‘O±iÚs +(), +¬¿y +('foo' => +$foo +, 'b¬' => +$b¬ +), '->addOption()‡dds‡ sfCommandOption object'); + +60 + gŒy + + +62 + g$ÝtiÚS‘ +-> +addO±iÚ +( +$foo2 +); + +63 + g$t +-> +çž +('->addOption()hrows‡ sfCommandException ifhe‡nother option is‡lready„egistered withhe same‚ame'); + +65 + $ÿtch + ( +sfCommªdExû±iÚ + +$e +) + +67 +$t +-> + `·ss +('->addOption()hrows‡ sfCommandException ifhe‡nother option is‡lready„egistered withhe same‚ame'); + +68 + } +} + +69 + gŒy + + +71 + g$ÝtiÚS‘ +-> +addO±iÚ +( +$foo1 +); + +72 + g$t +-> +çž +('->addOption()hrows‡ sfCommandException ifhe‡nother option is‡lready„egistered withhe same shortcut'); + +74 + $ÿtch + ( +sfCommªdExû±iÚ + +$e +) + +76 +$t +-> + `·ss +('->addOption()hrows‡ sfCommandException ifhe‡nother option is‡lready„egistered withhe same shortcut'); + +77 + } +} + +80 + g$t +-> +dŸg +('->getOption()'); + +81 + g$ÝtiÚS‘ + = +Ãw + +sfCommªdO±iÚS‘ +(); + +82 + g$ÝtiÚS‘ +-> +addO±iÚs +( +¬¿y +( +$foo +)); + +83 + g$t +-> +is +( +$ÝtiÚS‘ +-> +g‘O±iÚ +('foo'), +$foo +, '->getOption()„eturns‡ sfCommandOption by its‚ame'); + +84 + gŒy + + +86 + g$ÝtiÚS‘ +-> +g‘O±iÚ +('bar'); + +87 + g$t +-> +çž +('->getOption()hrows‡nƒxception ifhe option‚ame does‚otƒxist'); + +89 + $ÿtch + ( +sfCommªdExû±iÚ + +$e +) + +91 +$t +-> + `·ss +('->getOption()hrows‡nƒxception ifhe option‚ame does‚otƒxist'); + +92 + } +} + +95 + g$t +-> +dŸg +('->hasOption()'); + +96 + g$ÝtiÚS‘ + = +Ãw + +sfCommªdO±iÚS‘ +(); + +97 + g$ÝtiÚS‘ +-> +addO±iÚs +( +¬¿y +( +$foo +)); + +98 + g$t +-> +is +( +$ÝtiÚS‘ +-> +hasO±iÚ +('foo'), +Œue +, '->hasOption()„eturnsrue if‡ sfCommandOptionƒxists forhe given‚ame'); + +99 + g$t +-> +is +( +$ÝtiÚS‘ +-> +hasO±iÚ +('b¬'), +çl£ +, '->hasOption()„eturns false if‡ sfCommandOptionƒxists forhe given‚ame'); + +102 + g$t +-> +dŸg +('->hasShortcut()'); + +103 + g$ÝtiÚS‘ + = +Ãw + +sfCommªdO±iÚS‘ +(); + +104 + g$ÝtiÚS‘ +-> +addO±iÚs +( +¬¿y +( +$foo +)); + +105 + g$t +-> +is +( +$ÝtiÚS‘ +-> +hasShÜtcut +('f'), +Œue +, '->hasShortcut()„eturnsrue if‡ sfCommandOptionƒxists forhe given shortcut'); + +106 + g$t +-> +is +( +$ÝtiÚS‘ +-> +hasShÜtcut +('b'), +çl£ +, '->hasShortcut()„eturns false if‡ sfCommandOptionƒxists forhe given shortcut'); + +109 + g$t +-> +dŸg +('->getOptionForShortcut()'); + +110 + g$ÝtiÚS‘ + = +Ãw + +sfCommªdO±iÚS‘ +(); + +111 + g$ÝtiÚS‘ +-> +addO±iÚs +( +¬¿y +( +$foo +)); + +112 + g$t +-> +is +( +$ÝtiÚS‘ +-> +g‘O±iÚFÜShÜtcut +('f'), +$foo +, '->getOptionForShortcut()„eturns‡ sfCommandOption by its shortcut'); + +113 + gŒy + + +115 + g$ÝtiÚS‘ +-> +g‘O±iÚFÜShÜtcut +('l'); + +116 + g$t +-> +çž +('->getOption()hrows‡nƒxception ifhe shortcut does‚otƒxist'); + +118 + $ÿtch + ( +sfCommªdExû±iÚ + +$e +) + +120 +$t +-> + `·ss +('->getOption()hrows‡nƒxception ifhe shortcut does‚otƒxist'); + +121 + } +} + +124 + g$t +-> +dŸg +('->getDefaults()'); + +125 + g$ÝtiÚS‘ + = +Ãw + +sfCommªdO±iÚS‘ +(); + +126 + g$ÝtiÚS‘ +-> +addO±iÚs +( +¬¿y +( + +127 +Ãw + +sfCommªdO±iÚ +('foo1', +nuÎ +, sfCommªdO±iÚ:: +PARAMETER_NONE +), + +128 +Ãw + +sfCommªdO±iÚ +('foo2', +nuÎ +, sfCommªdO±iÚ:: +PARAMETER_REQUIRED +), + +129 +Ãw + +sfCommªdO±iÚ +('foo3', +nuÎ +, sfCommªdO±iÚ:: +PARAMETER_REQUIRED +, '', 'default'), + +130 +Ãw + +sfCommªdO±iÚ +('foo4', +nuÎ +, sfCommªdO±iÚ:: +PARAMETER_OPTIONAL +), + +131 +Ãw + +sfCommªdO±iÚ +('foo5', +nuÎ +, sfCommªdO±iÚ:: +PARAMETER_OPTIONAL +, '', 'default'), + +132 +Ãw + +sfCommªdO±iÚ +('foo6', +nuÎ +, sfCommªdO±iÚ:: +PARAMETER_OPTIONAL + | sfCommªdO±iÚ:: +IS_ARRAY +), + +133 +Ãw + +sfCommªdO±iÚ +('foo7', +nuÎ +, sfCommªdO±iÚ:: +PARAMETER_OPTIONAL + | sfCommªdO±iÚ:: +IS_ARRAY +, '', +¬¿y +(1, 2)), + +135 + g$deçuÉs + = +¬¿y +( + +136 'foo1' => +nuÎ +, + +137 'foo2' => +nuÎ +, + +139 'foo4' => +nuÎ +, + +141 'foo6' => +¬¿y +(), + +142 'foo7' => +¬¿y +(1, 2), + +144 + g$t +-> +is +( +$ÝtiÚS‘ +-> +g‘DeçuÉs +(), +$deçuÉs +, '->getDefaults()„eturnshe default values for‡ll options'); + + @lib/vendor/symfony/test/unit/command/sfCommandOptionTest.php + +1 +dŸg +('__construct()'); + +17 + g$ÝtiÚ + = +Ãw + +sfCommªdO±iÚ +('foo'); + +18 + g$t +-> +is +( +$ÝtiÚ +-> +g‘Name +(), 'foo', '__construct()akes‡‚ame‡s its first‡rgument'); + +19 + g$ÝtiÚ + = +Ãw + +sfCommªdO±iÚ +('--foo'); + +20 + g$t +-> +is +( +$ÝtiÚ +-> +g‘Name +(), 'foo', '__construct()„emoveshe†eading -- ofhe option‚ame'); + +23 + g$ÝtiÚ + = +Ãw + +sfCommªdO±iÚ +('foo', 'f'); + +24 + g$t +-> +is +( +$ÝtiÚ +-> +g‘ShÜtcut +(), 'f', '__construct() canake‡ shortcut‡s its second‡rgument'); + +25 + g$ÝtiÚ + = +Ãw + +sfCommªdO±iÚ +('foo', '-f'); + +26 + g$t +-> +is +( +$ÝtiÚ +-> +g‘ShÜtcut +(), 'f', '__construct()„emoveshe†eading - ofhe shortcut'); + +29 + g$ÝtiÚ + = +Ãw + +sfCommªdO±iÚ +('foo', 'f'); + +30 + g$t +-> +is +( +$ÝtiÚ +-> +acû±P¬am‘” +(), +çl£ +, '__construct() gives‡ "sfCommandOption::PARAMETER_NONE" mode by default'); + +31 + g$t +-> +is +( +$ÝtiÚ +-> +isP¬am‘”Requœed +(), +çl£ +, '__construct() gives‡ "sfCommandOption::PARAMETER_NONE" mode by default'); + +32 + g$t +-> +is +( +$ÝtiÚ +-> +isP¬am‘”O±iÚ® +(), +çl£ +, '__construct() gives‡ "sfCommandOption::PARAMETER_NONE" mode by default'); + +34 + g$ÝtiÚ + = +Ãw + +sfCommªdO±iÚ +('foo', 'f', +nuÎ +); + +35 + g$t +-> +is +( +$ÝtiÚ +-> +acû±P¬am‘” +(), +çl£ +, '__construct() canake "sfCommandOption::PARAMETER_NONE"‡s its mode'); + +36 + g$t +-> +is +( +$ÝtiÚ +-> +isP¬am‘”Requœed +(), +çl£ +, '__construct() canake "sfCommandOption::PARAMETER_NONE"‡s its mode'); + +37 + g$t +-> +is +( +$ÝtiÚ +-> +isP¬am‘”O±iÚ® +(), +çl£ +, '__construct() canake "sfCommandOption::PARAMETER_NONE"‡s its mode'); + +39 + g$ÝtiÚ + = +Ãw + +sfCommªdO±iÚ +('foo', 'f', sfCommªdO±iÚ:: +PARAMETER_NONE +); + +40 + g$t +-> +is +( +$ÝtiÚ +-> +acû±P¬am‘” +(), +çl£ +, '__construct() canake "sfCommandOption::PARAMETER_NONE"‡s its mode'); + +41 + g$t +-> +is +( +$ÝtiÚ +-> +isP¬am‘”Requœed +(), +çl£ +, '__construct() canake "sfCommandOption::PARAMETER_NONE"‡s its mode'); + +42 + g$t +-> +is +( +$ÝtiÚ +-> +isP¬am‘”O±iÚ® +(), +çl£ +, '__construct() canake "sfCommandOption::PARAMETER_NONE"‡s its mode'); + +44 + g$ÝtiÚ + = +Ãw + +sfCommªdO±iÚ +('foo', 'f', sfCommªdO±iÚ:: +PARAMETER_REQUIRED +); + +45 + g$t +-> +is +( +$ÝtiÚ +-> +acû±P¬am‘” +(), +Œue +, '__construct() canake "sfCommandOption::PARAMETER_REQUIRED"‡s its mode'); + +46 + g$t +-> +is +( +$ÝtiÚ +-> +isP¬am‘”Requœed +(), +Œue +, '__construct() canake "sfCommandOption::PARAMETER_REQUIRED"‡s its mode'); + +47 + g$t +-> +is +( +$ÝtiÚ +-> +isP¬am‘”O±iÚ® +(), +çl£ +, '__construct() canake "sfCommandOption::PARAMETER_REQUIRED"‡s its mode'); + +49 + g$ÝtiÚ + = +Ãw + +sfCommªdO±iÚ +('foo', 'f', sfCommªdO±iÚ:: +PARAMETER_OPTIONAL +); + +50 + g$t +-> +is +( +$ÝtiÚ +-> +acû±P¬am‘” +(), +Œue +, '__construct() canake "sfCommandOption::PARAMETER_OPTIONAL"‡s its mode'); + +51 + g$t +-> +is +( +$ÝtiÚ +-> +isP¬am‘”Requœed +(), +çl£ +, '__construct() canake "sfCommandOption::PARAMETER_OPTIONAL"‡s its mode'); + +52 + g$t +-> +is +( +$ÝtiÚ +-> +isP¬am‘”O±iÚ® +(), +Œue +, '__construct() canake "sfCommandOption::PARAMETER_OPTIONAL"‡s its mode'); + +54 + gŒy + + +56 + g$ÝtiÚ + = +Ãw + +sfCommªdO±iÚ +('foo', 'f', 'ANOTHER_ONE'); + +57 + g$t +-> +çž +('__construct()hrows‡n sfCommandException ifhe mode is‚ot valid'); + +59 + $ÿtch + ( +sfCommªdExû±iÚ + +$e +) + +61 +$t +-> + `·ss +('__construct()hrows‡n sfCommandException ifhe mode is‚ot valid'); + +62 + } +} + +65 + g$t +-> +dŸg +('->isArray()'); + +66 + g$ÝtiÚ + = +Ãw + +sfCommªdO±iÚ +('foo', +nuÎ +, sfCommªdO±iÚ:: +IS_ARRAY +); + +67 + g$t +-> +ok +( +$ÝtiÚ +-> +isA¼ay +(), '->isArray()„eturnsrue ifhe option can be‡n‡rray'); + +68 + g$ÝtiÚ + = +Ãw + +sfCommªdO±iÚ +('foo', +nuÎ +, sfCommªdO±iÚ:: +PARAMETER_NONE + | sfCommªdO±iÚ:: +IS_ARRAY +); + +69 + g$t +-> +ok +( +$ÝtiÚ +-> +isA¼ay +(), '->isArray()„eturnsrue ifhe option can be‡n‡rray'); + +70 + g$ÝtiÚ + = +Ãw + +sfCommªdO±iÚ +('foo', +nuÎ +, sfCommªdO±iÚ:: +PARAMETER_NONE +); + +71 + g$t +-> +ok +(! +$ÝtiÚ +-> +isA¼ay +(), '->isArray()„eturns false ifhe option can‚ot be‡n‡rray'); + +74 + g$t +-> +dŸg +('->getHelp()'); + +75 + g$ÝtiÚ + = +Ãw + +sfCommªdO±iÚ +('foo', 'f', +nuÎ +, 'Some help'); + +76 + g$t +-> +is +( +$ÝtiÚ +-> +g‘H–p +(), 'Some help', '->getHelp()„eturnshe help message'); + +79 + g$t +-> +dŸg +('->getDefault()'); + +80 + g$ÝtiÚ + = +Ãw + +sfCommªdO±iÚ +('foo', +nuÎ +, sfCommªdO±iÚ:: +PARAMETER_OPTIONAL +, '', 'default'); + +81 + g$t +-> +is +( +$ÝtiÚ +-> +g‘DeçuÉ +(), 'default', '->getDefault()„eturnshe default value'); + +83 + g$ÝtiÚ + = +Ãw + +sfCommªdO±iÚ +('foo', +nuÎ +, sfCommªdO±iÚ:: +PARAMETER_REQUIRED +, '', 'default'); + +84 + g$t +-> +is +( +$ÝtiÚ +-> +g‘DeçuÉ +(), 'default', '->getDefault()„eturnshe default value'); + +86 + g$ÝtiÚ + = +Ãw + +sfCommªdO±iÚ +('foo', +nuÎ +, sfCommªdO±iÚ:: +PARAMETER_REQUIRED +); + +87 + g$t +-> +ok +( +is_nuÎ +( +$ÝtiÚ +-> +g‘DeçuÉ +()), '->getDefault()„eturns‚ull if‚o default value is configured'); + +89 + g$ÝtiÚ + = +Ãw + +sfCommªdO±iÚ +('foo', +nuÎ +, sfCommªdO±iÚ:: +IS_ARRAY +); + +90 + g$t +-> +is +( +$ÝtiÚ +-> +g‘DeçuÉ +(), +¬¿y +(), '->getDefault()„eturns‡nƒmpty‡rray if option is‡n‡rray'); + +92 + g$ÝtiÚ + = +Ãw + +sfCommªdO±iÚ +('foo', +nuÎ +, sfCommªdO±iÚ:: +PARAMETER_NONE +); + +93 + g$t +-> +ok +( +$ÝtiÚ +-> +g‘DeçuÉ +(è==ð +çl£ +, '->getDefault()„eturns false ifhe option does‚otake‡…arameter'); + +96 + g$t +-> +dŸg +('->setDefault()'); + +97 + g$ÝtiÚ + = +Ãw + +sfCommªdO±iÚ +('foo', +nuÎ +, sfCommªdO±iÚ:: +PARAMETER_REQUIRED +, '', 'default'); + +98 + g$ÝtiÚ +-> +£tDeçuÉ +( +nuÎ +); + +99 + g$t +-> +ok +( +is_nuÎ +( +$ÝtiÚ +-> +g‘DeçuÉ +()), '->setDefault() can„esethe default value by…assing‚ull'); + +100 + g$ÝtiÚ +-> +£tDeçuÉ +('another'); + +101 + g$t +-> +is +( +$ÝtiÚ +-> +g‘DeçuÉ +(), 'another', '->setDefault() changeshe default value'); + +103 + g$ÝtiÚ + = +Ãw + +sfCommªdO±iÚ +('foo', +nuÎ +, sfCommªdO±iÚ:: +PARAMETER_REQUIRED + | sfCommªdO±iÚ:: +IS_ARRAY +); + +104 + g$ÝtiÚ +-> +£tDeçuÉ +( +¬¿y +(1, 2)); + +105 + g$t +-> +is +( +$ÝtiÚ +-> +g‘DeçuÉ +(), +¬¿y +(1, 2), '->setDefault() changeshe default value'); + +107 + gŒy + + +109 + g$ÝtiÚ + = +Ãw + +sfCommªdO±iÚ +('foo', 'f', sfCommªdO±iÚ:: +PARAMETER_NONE +); + +110 + g$ÝtiÚ +-> +£tDeçuÉ +('default'); + +111 + g$t +-> +çž +('->setDefault()hrows‡n sfCommandException if you give‡ default value for‡ PARAMETER_NONE option'); + +113 + $ÿtch + ( +sfCommªdExû±iÚ + +$e +) + +115 +$t +-> + `·ss +('->setDefault()hrows‡n sfCommandException if you give‡ default value for‡ PARAMETER_NONE option'); + +116 + } +} + +118 + gŒy + + +120 + g$ÝtiÚ + = +Ãw + +sfCommªdO±iÚ +('foo', 'f', sfCommªdO±iÚ:: +IS_ARRAY +); + +121 + g$ÝtiÚ +-> +£tDeçuÉ +('default'); + +122 + g$t +-> +çž +('->setDefault()hrows‡n sfCommandException if you give‡ default value which is‚ot‡n‡rray for‡ IS_ARRAY option'); + +124 + $ÿtch + ( +sfCommªdExû±iÚ + +$e +) + +126 +$t +-> + `·ss +('->setDefault()hrows‡n sfCommandException if you give‡ default value which is‚ot‡n‡rray for‡ IS_ARRAY option'); + +127 + } +} + + @lib/vendor/symfony/test/unit/config/fixtures/sfDefineEnvironmentConfigHandler/prefix_result.php + +1 +çl£ +, + +8 'sf_i18n' => +Œue +, + +9 'sf_’abËd_moduËs' => +¬¿y + ( + + @lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/result.php + +1 ( + g$fž‹r +); + +10 +li¡ +( +$þass +, +$·¿m‘”s +èð( +¬¿y +è +sfCÚfig +:: +g‘ +('sf_deçuÉ_fž‹r',‡¼ay('deçuÉFž‹rCÏss', +nuÎ +)); + +11 + g$fž‹r + = +Ãw + +$þass +( +sfCڋxt +:: +g‘In¡ªû +(), +$·¿m‘”s +); + +12 + g$this +->( + g$fž‹r +); + +14 +li¡ +( +$þass +, +$·¿m‘”s +èð( +¬¿y +è +sfCÚfig +:: +g‘ +('sf_new_filter',‡rray('newFilterClass',‡rray ( + +17 + g$fž‹r + = +Ãw + +$þass +( +sfCڋxt +:: +g‘In¡ªû +(), +$·¿m‘”s +); + +18 + g$this +->( + g$fž‹r +); + +20 +li¡ +( +$þass +, +$·¿m‘”s +èð( +¬¿y +è +sfCÚfig +:: +g‘ +('sf_rendering_filter',‡rray('sfRenderingFilter',‡rray ( + +23 + g$fž‹r + = +Ãw + +$þass +( +sfCڋxt +:: +g‘In¡ªû +(), +$·¿m‘”s +); + +24 + g$this +->( + g$fž‹r +); + + @lib/vendor/symfony/test/unit/config/sfConfigHandlerTest.php + +1 +š™Ÿlize +(); + +24 + g$t +-> +dŸg +('->initialize()'); + +25 + g$cÚfig +-> +š™Ÿlize +( +¬¿y +('foo' => 'bar')); + +26 + g$t +-> +is +( +$cÚfig +-> +g‘P¬am‘”HÞd” +()-> +g‘ +('foo'), 'bar', '->initialize()akes‡n‡rray of…arameters‡s its first‡rgument'); + +29 + g$t +-> +dŸg +('::replaceConstants()'); + +30 + gsfCÚfig +:: +£t +('foo', 'bar'); + +31 + g$t +-> +is +( +sfCÚfigHªdËr +:: +»¶aûCÚ¡ªts +('my value with‡ %foo% constant'), 'my value with‡ bar constant', '::replaceConstants()„eplaces constantsƒnclosed in %'); + +33 + g$t +-> +is +( +sfCÚfigHªdËr +:: +»¶aûCÚ¡ªts +('%Y/%m/%d %H:%M'), '%Y/%m/%d %H:%M', '::replaceConstants() does‚ot„eplace unknown constants'); + +35 + gsfCÚfig +:: +£t +('foo', 'bar'); + +36 + g$v®ue + = +¬¿y +( + +38 'b¬' => +¬¿y +( + +42 + g$v®ue + = +sfCÚfigHªdËr +:: +»¶aûCÚ¡ªts +( +$v®ue +); + +43 + g$t +-> +is +( +$v®ue +['foo'], 'my value with‡ bar constant', '::replaceConstants()„eplaces constants in‡rrays„ecursively'); + +44 + g$t +-> +is +( +$v®ue +['bar']['foo'], 'my value with‡ bar constant', '::replaceConstants()„eplaces constants in‡rrays„ecursively'); + +47 + g$t +-> +dŸg +('->getParameterHolder()'); + +48 + g$t +-> +i§_ok +( +$cÚfig +-> +g‘P¬am‘”HÞd” +(), 'sfParameterHolder', "->getParameterHolder()„eturns‡…arameter holder instance"); + +51 + g$t +-> +dŸg +('->replacePath()'); + +52 + gsfCÚfig +:: +£t +('sf_app_dir', 'ROOTDIR'); + +53 + g$t +-> +is +( +$cÚfig +-> +»¶aûP©h +('test'), 'ROOTDIR/test', '->replacePath()…refix‡„elative…ath with "sf_app_dir"'); + +54 + g$t +-> +is +( +$cÚfig +-> +»¶aûP©h +('/test'), '/test', '->replacePath()…refix‡„elative…ath with "sf_app_dir"'); + + @lib/vendor/symfony/test/unit/config/sfConfigTest.php + +1 +dŸg +('::get() ::set()'); + +17 + gsfCÚfig +:: +þ—r +(); + +19 + gsfCÚfig +:: +£t +('foo', 'bar'); + +20 + g$t +-> +is +( +sfCÚfig +:: +g‘ +('foo'), 'bar', '::get()„eturnshe value of key config'); + +21 + g$t +-> +is +( +sfCÚfig +:: +g‘ +('foo1', 'default_value'), 'default_value', '::get()akes‡ default value‡s its second‡rgument'); + +24 + g$t +-> +dŸg +('::has()'); + +25 + gsfCÚfig +:: +þ—r +(); + +26 + g$t +-> +is +( +sfCÚfig +:: +has +('foo'), +çl£ +, '::has()„eturns false ifhe key config does‚otƒxist'); + +27 + gsfCÚfig +:: +£t +('foo', 'bar'); + +28 + g$t +-> +is +( +sfCÚfig +:: +has +('foo'), +Œue +, '::has()„eturnsrue ifhe key configƒxists'); + +31 + g$t +-> +dŸg +('::add()'); + +32 + gsfCÚfig +:: +þ—r +(); + +34 + gsfCÚfig +:: +£t +('foo', 'bar'); + +35 + gsfCÚfig +:: +£t +('foo1', 'foo1'); + +36 + gsfCÚfig +:: +add +( +¬¿y +('foo' => 'foo', 'bar' => 'bar')); + +38 + g$t +-> +is +( +sfCÚfig +:: +g‘ +('foo'), 'foo', '::add()‡dds‡n‡rray of config…arameters'); + +39 + g$t +-> +is +( +sfCÚfig +:: +g‘ +('bar'), 'bar', '::add()‡dds‡n‡rray of config…arameters'); + +40 + g$t +-> +is +( +sfCÚfig +:: +g‘ +('foo1'), 'foo1', '::add()‡dds‡n‡rray of config…arameters'); + +43 + g$t +-> +dŸg +('::getAll()'); + +44 + gsfCÚfig +:: +þ—r +(); + +45 + gsfCÚfig +:: +£t +('foo', 'bar'); + +46 + gsfCÚfig +:: +£t +('foo1', 'foo1'); + +48 + g$t +-> +is +( +sfCÚfig +:: +g‘AÎ +(), +¬¿y +('foo' => 'bar', 'foo1' => 'foo1'), '::getAll()„eturns‡ll config…arameters'); + +51 + g$t +-> +dŸg +('::clear()'); + +52 + gsfCÚfig +:: +þ—r +(); + +53 + g$t +-> +is +( +sfCÚfig +:: +g‘ +('foo1'), +nuÎ +, '::clear()„emoves‡ll config…arameters'); + + @lib/vendor/symfony/test/unit/config/sfDefineEnvironmentConfigHandlerTest.php + +1 +š™Ÿlize +( +¬¿y +('prefix' => 'sf_')); + +21 + g$dœ + = +dœÇme +( +__FILE__ +). +DIRECTORY_SEPARATOR +.'fixtures'.DIRECTORY_SEPARATOR.'sfDefineEnvironmentConfigHandler'.DIRECTORY_SEPARATOR; + +23 + g$fžes + = +¬¿y +( + +24 +$dœ +.'prefix_default.yml', + +25 +$dœ +.'prefix_all.yml', + +28 + gsfCÚfig +:: +£t +('sf_environment', 'prod'); + +30 + g$d©a + = +$hªdËr +-> +execu‹ +( +$fžes +); + +31 + g$d©a + = +´eg_»¶aû +('#d©e\: \d+/\d+/\d+ \d+\:\d+\:\d+#', '', +$d©a +); + +33 + g$t +-> +is +( +$d©a +, +¡r_»¶aû +("\r\n", "\n", +fže_g‘_cڋÁs +( +$dœ +.'prefix_result.php'))); + + @lib/vendor/symfony/test/unit/config/sfFilterConfigHandlerTest.php + +1 +š™Ÿlize +(); + +18 + g$dœ + = +dœÇme +( +__FILE__ +). +DIRECTORY_SEPARATOR +.'fixtures'.DIRECTORY_SEPARATOR.'sfFilterConfigHandler'.DIRECTORY_SEPARATOR; + +21 + g$t +-> +dŸg +('parseƒrrors'); + +22 + g$fžes + = +¬¿y +( + +23 +$dœ +.'no_class.yml', + +26 + gŒy + + +28 + g$d©a + = +$hªdËr +-> +execu‹ +( +$fžes +); + +29 + g$t +-> +çž +('filters.yml must have‡ "class" section forƒach filterƒntry'); + +31 + $ÿtch + ( +sfP¬£Exû±iÚ + +$e +) + +33 +$t +-> + `like +( +$e +-> + `g‘Mes§ge +(), '/with missing class key/', 'filters.yml must have‡ "class" section forƒach filterƒntry'); + +34 + } +} + +37 +fܗch + ( +¬¿y +('executiÚ', '»nd”šg'è +as + +$key +) + +39 + g$fžes + = +¬¿y +( + +40 +$dœ +. +¥rštf +('no_%s.yml', +$key +), + +43 + gŒy + + +45 + g$d©a + = +$hªdËr +-> +execu‹ +( +$fžes +); + +46 + g$t +-> +çž +( +¥rštf +('fž‹rs.ymÈmu¡ hav¨fž‹¸oàty³ "%s"', +$key +)); + +48 +ÿtch + ( +sfP¬£Exû±iÚ + +$e +) + +50 + g$t +-> +like +( +$e +-> +g‘Mes§ge +(), +¥rštf +('/mu¡„egi¡”‡ fž‹¸oàty³ "%s"/', +$key +), sprintf('filters.yml must have‡ filter ofype "%s"', $key)); + +55 + g$t +-> +dŸg +('filter inheritance'); + +56 + g$fžes + = +¬¿y +( + +57 +$dœ +.'default_filters.yml', + +58 +$dœ +.'not_disabled.yml', + +61 + gŒy + + +63 + g$d©a + = +$hªdËr +-> +execu‹ +( +$fžes +); + +64 + g$t +-> +çž +('filters.yml must keep‡ll filters when inheriting from‡ master filters configuration file'); + +66 + $ÿtch + ( +sfCÚfigu¿tiÚExû±iÚ + +$e +) + +68 +$t +-> + `like +( +$e +-> + `g‘Mes§ge +(), '/but‚ot…resent/', 'filters.yml must keep‡ll filters when inheriting from‡ master filters configuration file'); + +69 + } +} + +72 + g$t +-> +dŸg +('disabling‡ filter'); + +73 + g$fžes + = +¬¿y +( + +74 +$dœ +.'disable.yml', + +77 + g$t +-> +uÆike +( +$hªdËr +-> +execu‹ +( +$fžes +), '/defaultFilterClass/', 'you can disable‡ filter by settings "enabled"o false'); + +80 + g$t +-> +dŸg +('condition support'); + +81 + g$fžes + = +¬¿y +( + +82 +$dœ +.'condition.yml', + +85 + gsfCÚfig +:: +£t +('deçuÉ_‹¡', +Œue +); + +86 + g$t +-> +like +( +$hªdËr +-> +execu‹ +( +$fžes +), '/defaultFilterClass/', 'you can‡dd‡ "condition" keyohe filter…arameters'); + +88 + gsfCÚfig +:: +£t +('deçuÉ_‹¡', +çl£ +); + +89 + g$t +-> +uÆike +( +$hªdËr +-> +execu‹ +( +$fžes +), '/defaultFilterClass/', 'you can‡dd‡ "condition" keyohe filter…arameters'); + +92 + g$t +-> +dŸg +('usual configuration'); + +93 + g$fžes + = +¬¿y +( + +94 +$dœ +.'default_filters.yml', + +95 +$dœ +.'filters.yml', + +98 + g$d©a + = +$hªdËr +-> +execu‹ +( +$fžes +); + +99 + g$d©a + = +´eg_»¶aû +('#d©e\: \d+/\d+/\d+ \d+\:\d+\:\d+\n#', '', +$d©a +); + +100 + g$t +-> +is +( +$d©a +, +¡r_»¶aû +("\r\n", "\n", +fže_g‘_cڋÁs +( +$dœ +.'result.php')), 'core filters.yml can be overriden'); + + @lib/vendor/symfony/test/unit/config/sfGeneratorConfigHandlerTest.php + +1 +š™Ÿlize +(); + +20 + g$dœ + = +dœÇme +( +__FILE__ +). +DIRECTORY_SEPARATOR +.'fixtures'.DIRECTORY_SEPARATOR.'sfGeneratorConfigHandler'.DIRECTORY_SEPARATOR; + +22 + g$t +-> +dŸg +('parseƒrrors'); + +23 + g$fžes + = +¬¿y +( + +24 +$dœ +.'empty.yml', + +25 +$dœ +.'no_generator_class.yml', + +28 + gŒy + + +30 + g$d©a + = +$hªdËr +-> +execu‹ +( +$fžes +); + +31 + g$t +-> +çž +('generator.yml must have‡ "class" section'); + +33 + $ÿtch + ( +sfP¬£Exû±iÚ + +$e +) + +35 +$t +-> + `like +( +$e +-> + `g‘Mes§ge +(), '/must specify‡ generator class section underhe generator section/', 'generator.yml must have‡ "class" section'); + +36 + } +} + +38 + g$fžes + = +¬¿y +( + +39 +$dœ +.'empty.yml', + +40 +$dœ +.'no_generator_section.yml', + +43 + gŒy + + +45 + g$d©a + = +$hªdËr +-> +execu‹ +( +$fžes +); + +46 + g$t +-> +çž +('generator.yml must have‡ "generator" section'); + +48 + $ÿtch + ( +sfP¬£Exû±iÚ + +$e +) + +50 +$t +-> + `like +( +$e +-> + `g‘Mes§ge +(), '/must specify‡ generator section/', 'generator.yml must have‡ "generator" section'); + +51 + } +} + +53 + g$fžes + = +¬¿y +( + +54 +$dœ +.'empty.yml', + +55 +$dœ +.'root_fields_section.yml', + +58 + gŒy + + +60 + g$d©a + = +$hªdËr +-> +execu‹ +( +$fžes +); + +61 + g$t +-> +çž +('generator.yml can have‡ "fields" section but only under "param"'); + +63 + $ÿtch + ( +sfP¬£Exû±iÚ + +$e +) + +65 +$t +-> + `like +( +$e +-> + `g‘Mes§ge +(), '/can specify‡ "fields" section but only underhe…aram section/', 'generator.yml can have‡ "fields" section but only under "param"'); + +66 + } +} + +68 + g$fžes + = +¬¿y +( + +69 +$dœ +.'empty.yml', + +70 +$dœ +.'root_list_section.yml', + +73 + gŒy + + +75 + g$d©a + = +$hªdËr +-> +execu‹ +( +$fžes +); + +76 + g$t +-> +çž +('generator.yml can have‡ "list" section but only under "param"'); + +78 + $ÿtch + ( +sfP¬£Exû±iÚ + +$e +) + +80 +$t +-> + `like +( +$e +-> + `g‘Mes§ge +(), '/can specify‡ "list" section but only underhe…aram section/', 'generator.yml can have‡ "list" section but only under "param"'); + +81 + } +} + +83 + g$fžes + = +¬¿y +( + +84 +$dœ +.'empty.yml', + +85 +$dœ +.'root_edit_section.yml', + +88 + gŒy + + +90 + g$d©a + = +$hªdËr +-> +execu‹ +( +$fžes +); + +91 + g$t +-> +çž +('generator.yml can have‡ "edit" section but only under "param"'); + +93 + $ÿtch + ( +sfP¬£Exû±iÚ + +$e +) + +95 +$t +-> + `like +( +$e +-> + `g‘Mes§ge +(), '/can specify‡ "edit" section but only underhe…aram section/', 'generator.yml can have‡ "edit" section but only under "param"'); + +96 + } +} + + @lib/vendor/symfony/test/unit/config/sfPluginConfigurationTest.php + +1 + `’abËPlugšs +('sfAutoloadPlugin'); + +26 + } +} + +29 + g$t +-> +dŸg +('->guessRootDir() ->guessName()'); + +31 + g$cÚfigu¿tiÚ + = +Ãw + +sfProjeùCÚfigu¿tiÚ +( +$roÙDœ +); + +32 + g$¶ugšCÚfig + = +Ãw + +sfAutÞßdPlugšCÚfigu¿tiÚ +( +$cÚfigu¿tiÚ +); + +34 + g$t +-> +is +( +$¶ugšCÚfig +-> +g‘RoÙDœ +(), +$¶ugšRoÙ +, '->guessRootDir() guesses…lugin„oot directory'); + +35 + g$t +-> +is +( +$¶ugšCÚfig +-> +g‘Name +(), 'sfAutoloadPlugin', '->guessName() guesses…lugin‚ame'); + +38 + g$t +-> +dŸg +('->filterTestFiles()'); + +41 + g$sk + = +Ãw + +sfTe¡AÎTask +( +$cÚfigu¿tiÚ +-> +g‘Ev’tDi¥©ch” +(),‚ew +sfFÜm©‹r +()); + +42 + g$ev’t + = +Ãw + +sfEv’t +( +$sk +, 'sk.‹¡.fž‹r_‹¡_fžes', +¬¿y +('arguments' =>‡rray(), 'options' =>‡rray())); + +43 + g$fžes + = +$¶ugšCÚfig +-> +fž‹rTe¡Fžes +( +$ev’t +, +¬¿y +()); + +44 + g$t +-> +is +( +couÁ +( +$fžes +), 6, '->filterTestFiles()‡dds‡ll…luginests'); + +47 + g$sk + = +Ãw + +sfTe¡FunùiÚ®Task +( +$cÚfigu¿tiÚ +-> +g‘Ev’tDi¥©ch” +(),‚ew +sfFÜm©‹r +()); + +48 + g$ev’t + = +Ãw + +sfEv’t +( +$sk +, 'sk.‹¡.fž‹r_‹¡_fžes', +¬¿y +('arguments' =>‡rray('controller' =>‡rray()), 'options' =>‡rray())); + +49 + g$fžes + = +$¶ugšCÚfig +-> +fž‹rTe¡Fžes +( +$ev’t +, +¬¿y +()); + +50 + g$t +-> +is +( +couÁ +( +$fžes +), 3, '->filterTestFiles()‡dds functional…luginests'); + +52 + g$sk + = +Ãw + +sfTe¡FunùiÚ®Task +( +$cÚfigu¿tiÚ +-> +g‘Ev’tDi¥©ch” +(),‚ew +sfFÜm©‹r +()); + +53 + g$ev’t + = +Ãw + +sfEv’t +( +$sk +, 'sk.‹¡.fž‹r_‹¡_fžes', +¬¿y +('arguments' =>‡rray('controller' =>‡rray('BarFunctional')), 'options' =>‡rray())); + +54 + g$fžes + = +$¶ugšCÚfig +-> +fž‹rTe¡Fžes +( +$ev’t +, +¬¿y +()); + +55 + g$t +-> +is +( +couÁ +( +$fžes +), 1, '->filterTestFiles()‡dds functional…luginests when‡ controller is specified'); + +57 + g$sk + = +Ãw + +sfTe¡FunùiÚ®Task +( +$cÚfigu¿tiÚ +-> +g‘Ev’tDi¥©ch” +(),‚ew +sfFÜm©‹r +()); + +58 + g$ev’t + = +Ãw + +sfEv’t +( +$sk +, 'sk.‹¡.fž‹r_‹¡_fžes', +¬¿y +('arguments' =>‡rray('controller' =>‡rray('nested/NestedFunctional')), 'options' =>‡rray())); + +59 + g$fžes + = +$¶ugšCÚfig +-> +fž‹rTe¡Fžes +( +$ev’t +, +¬¿y +()); + +60 + g$t +-> +is +( +couÁ +( +$fžes +), 1, '->filterTestFiles()‡dds functional…luginests when‡‚ested controller is specified'); + +63 + g$sk + = +Ãw + +sfTe¡Un™Task +( +$cÚfigu¿tiÚ +-> +g‘Ev’tDi¥©ch” +(),‚ew +sfFÜm©‹r +()); + +64 + g$ev’t + = +Ãw + +sfEv’t +( +$sk +, 'sk.‹¡.fž‹r_‹¡_fžes', +¬¿y +('arguments' =>‡rray('name' =>‡rray()), 'options' =>‡rray())); + +65 + g$fžes + = +$¶ugšCÚfig +-> +fž‹rTe¡Fžes +( +$ev’t +, +¬¿y +()); + +66 + g$t +-> +is +( +couÁ +( +$fžes +), 3, '->filterTestFiles()‡dds unit…luginests'); + +68 + g$sk + = +Ãw + +sfTe¡Un™Task +( +$cÚfigu¿tiÚ +-> +g‘Ev’tDi¥©ch” +(),‚ew +sfFÜm©‹r +()); + +69 + g$ev’t + = +Ãw + +sfEv’t +( +$sk +, 'sk.‹¡.fž‹r_‹¡_fžes', +¬¿y +('arguments' =>‡rray('name' =>‡rray('FooUnit')), 'options' =>‡rray())); + +70 + g$fžes + = +$¶ugšCÚfig +-> +fž‹rTe¡Fžes +( +$ev’t +, +¬¿y +()); + +71 + g$t +-> +is +( +couÁ +( +$fžes +), 1, '->filterTestFiles()‡dds unit…luginests when‡‚ame is specified'); + +73 + g$sk + = +Ãw + +sfTe¡Un™Task +( +$cÚfigu¿tiÚ +-> +g‘Ev’tDi¥©ch” +(),‚ew +sfFÜm©‹r +()); + +74 + g$ev’t + = +Ãw + +sfEv’t +( +$sk +, 'sk.‹¡.fž‹r_‹¡_fžes', +¬¿y +('arguments' =>‡rray('name' =>‡rray('nested/NestedUnit')), 'options' =>‡rray())); + +75 + g$fžes + = +$¶ugšCÚfig +-> +fž‹rTe¡Fžes +( +$ev’t +, +¬¿y +()); + +76 + g$t +-> +is +( +couÁ +( +$fžes +), 1, '->filterTestFiles()‡dds unit…luginests when‡‚ested‚ame is specified'); + + @lib/vendor/symfony/test/unit/config/sfProjectConfigurationTest.php + +1 + `’abËPlugšs +( + `¬¿y +('sfAutoloadPlugin', 'sfConfigPlugin')); + +20 +$this +-> + `£tPlugšP©h +('sfCÚfigPlugš', $this-> +roÙDœ +.'/lib/plugins/sfConfigPlugin'); + +22 + } +} + +24 + g$cÚfigu¿tiÚ + = +Ãw + +ProjeùCÚfigu¿tiÚ +( +dœÇme +( +__FILE__ +).'/../../functional/fixtures'); + +27 + g$t +-> +dŸg +('->setPlugins() ->disablePlugins() ->enablePlugins() ->enableAllPluginsExcept()'); + +29 +fܗch + ( +¬¿y +('£tPlugšs', 'di§bËPlugšs', '’abËPlugšs', '’abËAÎPlugšsExû±'è +as + +$m‘hod +) + +31 + gŒy + + +33 + g$cÚfigu¿tiÚ +-> +$m‘hod +( +¬¿y +()); + +34 + g$t +-> +çž +('->'. +$m‘hod +.'()hrows‡nƒxception if calledoo†ate'); + +36 +ÿtch + ( +Exû±iÚ + +$e +) + +38 + g$t +-> +·ss +('->'. +$m‘hod +.'()hrows‡nƒxception if calledoo†ate'); + +42 þas  + cProjeùCÚfigu¿tiÚ2 + +ex‹nds + + msfProjeùCÚfigu¿tiÚ + + +44 +public + +funùiÚ + + $£tup +() + +46 +$this +-> + `’abËPlugšs +('sfAutoloadPlugin', 'sfConfigPlugin'); + +48 + } +} + +50 + g$cÚfigu¿tiÚ + = +Ãw + +ProjeùCÚfigu¿tiÚ2 +( +dœÇme +( +__FILE__ +).'/../../functional/fixtures'); + +51 + g$t +-> +is_d“¶y +( +$cÚfigu¿tiÚ +-> +g‘Plugšs +(), +¬¿y +('sfAutoloadPlugin', 'sfConfigPlugin'), '->enablePlugins() canƒnable…lugins…assed‡s‡rguments instead of‡rray'); + +54 + g$t +-> +dŸg +('->__construct()'); + +56 þas  + cProjeùCÚfigu¿tiÚ3 + +ex‹nds + + msfProjeùCÚfigu¿tiÚ + + +58 +public + +funùiÚ + + $£tup +() + +60 +$this +-> + `’abËPlugšs +('NonExistantPlugin'); + +62 + } +} + +64 + gŒy + + +66 + g$cÚfigu¿tiÚ + = +Ãw + +ProjeùCÚfigu¿tiÚ3 +( +dœÇme +( +__FILE__ +).'/../../functional/fixtures'); + +67 + g$t +-> +çž +('->__construct()hrows‡nƒxception if‡‚on-existant…lugin isƒnabled'); + +69 + $ÿtch + ( +Exû±iÚ + +$e +) + +71 +$t +-> + `·ss +('->__construct()hrows‡nƒxception if‡‚on-existant…lugin isƒnabled'); + +72 + } +} + + @lib/vendor/symfony/test/unit/config/sfSimpleYamlConfigHandlerTest.php + +1 +š™Ÿlize +(); + +18 + g$dœ + = +dœÇme +( +__FILE__ +). +DIRECTORY_SEPARATOR +.'fixtures'.DIRECTORY_SEPARATOR.'sfSimpleYamlConfigHandler'.DIRECTORY_SEPARATOR; + +20 + g$¬¿y + = +g‘_»tv® +( +$cÚfig +, +¬¿y +( +$dœ +.'config.yml')); + +21 + g$t +-> +is +( +$¬¿y +['article']['title'], 'foo', '->execute()„eturns configuration file‡s‡n‡rray'); + +23 + g$¬¿y + = +g‘_»tv® +( +$cÚfig +, +¬¿y +( +$dœ +.'config.yml', $dir.'config_bis.yml')); + +24 + g$t +-> +is +( +$¬¿y +['article']['title'], 'bar', '->execute()„eturns configuration file‡s‡n‡rray'); + +26 +funùiÚ + + $g‘_»tv® +( +$cÚfig +, +$fžes +) + +28 +$»tv® + = +$cÚfig +-> + `execu‹ +( +$fžes +); + +29 +$»tv® + = + `´eg_»¶aû +('#^<\?php#', '', $retval); + +30 +$»tv® + = + `´eg_»¶aû +('#<\?php$#s', '', $retval); + +32  + `ev® +( +$»tv® +); + +33 + } +} + + @lib/vendor/symfony/test/unit/config/sfViewConfigHandlerTest.php + +1 +yamlCÚfig + = +£lf +:: + `m”geCÚfig +( +$cÚfig +); + +22 +public + +funùiÚ + + `addHtmlAs£t +( +$v›wName + = '') + +24  +·»Á +:: + `addHtmlAs£t +( +$v›wName +); + +25 + } +} + +28 + g$hªdËr + = +Ãw + +myV›wCÚfigHªdËr +(); + +31 + g$t +-> +dŸg +('addHtmlAsset() basic‡sset‡ddition'); + +33 + g$hªdËr +-> +£tCÚfigu¿tiÚ +( +¬¿y +( + +34 'myV›w' => +¬¿y +( + +35 '¡yËsh“ts' => +¬¿y +('foobar'), + +38 + g$cڋÁ + = <<< +EOF + + +39 \ +$»¥Ú£ +-> +addStyËsh“t +('foob¬', '', +¬¿y + ()); + +41 + gEOF +; + +42 + g$t +-> +is +( +fix_lšeb»aks +( +$hªdËr +-> +addHtmlAs£t +('myV›w')), fix_lšeb»aks( +$cڋÁ +), 'addHtmlAsset()‡dds stylesheetsohe„esponse'); + +44 + g$hªdËr +-> +£tCÚfigu¿tiÚ +( +¬¿y +( + +45 'myV›w' => +¬¿y +( + +46 '¡yËsh“ts' => +¬¿y +(array('foobar' =>‡rray('position' => 'last'))), + +49 + g$cڋÁ + = <<< +EOF + + +50 \ +$»¥Ú£ +-> +addStyËsh“t +('foob¬', 'Ï¡', +¬¿y + ()); + +52 + gEOF +; + +53 + g$t +-> +is +( +fix_lšeb»aks +( +$hªdËr +-> +addHtmlAs£t +('myV›w')), fix_lšeb»aks( +$cڋÁ +), 'addHtmlAsset()‡dds stylesheetsohe„esponse'); + +55 + g$hªdËr +-> +£tCÚfigu¿tiÚ +( +¬¿y +( + +56 'myV›w' => +¬¿y +( + +57 'javasüts' => +¬¿y +('foobar'), + +60 + g$cڋÁ + = <<< +EOF + + +61 \ +$»¥Ú£ +-> +addJavasüt +('foob¬', '', +¬¿y + ()); + +63 + gEOF +; + +64 + g$t +-> +is +( +fix_lšeb»aks +( +$hªdËr +-> +addHtmlAs£t +('myV›w')), fix_lšeb»aks( +$cڋÁ +), 'addHtmlAsset()‡dds JavaScriptohe„esponse'); + +66 + g$hªdËr +-> +£tCÚfigu¿tiÚ +( +¬¿y +( + +67 'myV›w' => +¬¿y +( + +68 'javasüts' => +¬¿y +(array('foobar' =>‡rray('position' => 'last'))), + +71 + g$cڋÁ + = <<< +EOF + + +72 \ +$»¥Ú£ +-> +addJavasüt +('foob¬', 'Ï¡', +¬¿y + ()); + +74 + gEOF +; + +75 + g$t +-> +is +( +fix_lšeb»aks +( +$hªdËr +-> +addHtmlAs£t +('myV›w')), fix_lšeb»aks( +$cڋÁ +), 'addHtmlAsset()‡dds JavaScriptohe„esponse'); + +78 + g$t +-> +dŸg +('addHtmlAsset() insertion order for stylesheets'); + +80 + g$hªdËr +-> +£tCÚfigu¿tiÚ +( +¬¿y +( + +81 'myV›w' => +¬¿y +( + +82 '¡yËsh“ts' => +¬¿y +('foobar'), + +84 '®l' => +¬¿y +( + +85 '¡yËsh“ts' => +¬¿y +('all_foobar'), + +88 + g$cڋÁ + = <<< +EOF + + +89 \ +$»¥Ú£ +-> +addStyËsh“t +('®l_foob¬', '', +¬¿y + ()); + +90 \ + g$»¥Ú£ +-> +addStyËsh“t +('foob¬', '', +¬¿y + ()); + +92 + gEOF +; + +93 + g$t +-> +is +( +fix_lšeb»aks +( +$hªdËr +-> +addHtmlAs£t +('myV›w')), fix_lšeb»aks( +$cڋÁ +), 'addHtmlAsset()‡dds view-specific stylesheets‡fter‡pplication-wide‡ssets'); + +95 + g$hªdËr +-> +£tCÚfigu¿tiÚ +( +¬¿y +( + +96 '®l' => +¬¿y +( + +97 '¡yËsh“ts' => +¬¿y +('all_foobar'), + +99 'myV›w' => +¬¿y +( + +100 '¡yËsh“ts' => +¬¿y +('foobar'), + +103 + g$cڋÁ + = <<< +EOF + + +104 \ +$»¥Ú£ +-> +addStyËsh“t +('®l_foob¬', '', +¬¿y + ()); + +105 \ + g$»¥Ú£ +-> +addStyËsh“t +('foob¬', '', +¬¿y + ()); + +107 + gEOF +; + +108 + g$t +-> +is +( +fix_lšeb»aks +( +$hªdËr +-> +addHtmlAs£t +('myV›w')), fix_lšeb»aks( +$cڋÁ +), 'addHtmlAsset()‡dds view-specific stylesheets‡fter‡pplication-wide‡ssets'); + +110 + g$hªdËr +-> +£tCÚfigu¿tiÚ +( +¬¿y +( + +111 'myV›w' => +¬¿y +( + +112 '¡yËsh“ts' => +¬¿y +('foobar'), + +114 'deçuÉ' => +¬¿y +( + +115 '¡yËsh“ts' => +¬¿y +('default_foobar'), + +118 + g$cڋÁ + = <<< +EOF + + +119 \ +$»¥Ú£ +-> +addStyËsh“t +('deçuÉ_foob¬', '', +¬¿y + ()); + +120 \ + g$»¥Ú£ +-> +addStyËsh“t +('foob¬', '', +¬¿y + ()); + +122 + gEOF +; + +123 + g$t +-> +is +( +fix_lšeb»aks +( +$hªdËr +-> +addHtmlAs£t +('myV›w')), fix_lšeb»aks( +$cڋÁ +), 'addHtmlAsset()‡dds view-specific stylesheets‡fter default‡ssets'); + +125 + g$hªdËr +-> +£tCÚfigu¿tiÚ +( +¬¿y +( + +126 'deçuÉ' => +¬¿y +( + +127 '¡yËsh“ts' => +¬¿y +('default_foobar'), + +129 'myV›w' => +¬¿y +( + +130 '¡yËsh“ts' => +¬¿y +('foobar'), + +133 + g$cڋÁ + = <<< +EOF + + +134 \ +$»¥Ú£ +-> +addStyËsh“t +('deçuÉ_foob¬', '', +¬¿y + ()); + +135 \ + g$»¥Ú£ +-> +addStyËsh“t +('foob¬', '', +¬¿y + ()); + +137 + gEOF +; + +138 + g$t +-> +is +( +fix_lšeb»aks +( +$hªdËr +-> +addHtmlAs£t +('myV›w')), fix_lšeb»aks( +$cڋÁ +), 'addHtmlAsset()‡dds view-specific stylesheets‡fter default‡ssets'); + +140 + g$hªdËr +-> +£tCÚfigu¿tiÚ +( +¬¿y +( + +141 'deçuÉ' => +¬¿y +( + +142 '¡yËsh“ts' => +¬¿y +('default_foobar'), + +144 '®l' => +¬¿y +( + +145 '¡yËsh“ts' => +¬¿y +('all_foobar'), + +148 + g$cڋÁ + = <<< +EOF + + +149 \ +$»¥Ú£ +-> +addStyËsh“t +('deçuÉ_foob¬', '', +¬¿y + ()); + +150 \ + g$»¥Ú£ +-> +addStyËsh“t +('®l_foob¬', '', +¬¿y + ()); + +152 + gEOF +; + +153 + g$t +-> +is +( +fix_lšeb»aks +( +$hªdËr +-> +addHtmlAs£t +('myV›w')), fix_lšeb»aks( +$cڋÁ +), 'addHtmlAsset()‡dds‡pplication-specific stylesheets‡fter default‡ssets'); + +155 + g$hªdËr +-> +£tCÚfigu¿tiÚ +( +¬¿y +( + +156 '®l' => +¬¿y +( + +157 '¡yËsh“ts' => +¬¿y +('all_foobar'), + +159 'deçuÉ' => +¬¿y +( + +160 '¡yËsh“ts' => +¬¿y +('default_foobar'), + +163 + g$cڋÁ + = <<< +EOF + + +164 \ +$»¥Ú£ +-> +addStyËsh“t +('deçuÉ_foob¬', '', +¬¿y + ()); + +165 \ + g$»¥Ú£ +-> +addStyËsh“t +('®l_foob¬', '', +¬¿y + ()); + +167 + gEOF +; + +168 + g$t +-> +is +( +fix_lšeb»aks +( +$hªdËr +-> +addHtmlAs£t +('myV›w')), fix_lšeb»aks( +$cڋÁ +), 'addHtmlAsset()‡dds‡pplication-specific stylesheets‡fter default‡ssets'); + +171 + g$t +-> +dŸg +('addHtmlAsset() insertion order for javascripts'); + +173 + g$hªdËr +-> +£tCÚfigu¿tiÚ +( +¬¿y +( + +174 'myV›w' => +¬¿y +( + +175 'javasüts' => +¬¿y +('foobar'), + +177 '®l' => +¬¿y +( + +178 'javasüts' => +¬¿y +('all_foobar'), + +181 + g$cڋÁ + = <<< +EOF + + +182 \ +$»¥Ú£ +-> +addJavasüt +('®l_foob¬', '', +¬¿y + ()); + +183 \ + g$»¥Ú£ +-> +addJavasüt +('foob¬', '', +¬¿y + ()); + +185 + gEOF +; + +186 + g$t +-> +is +( +fix_lšeb»aks +( +$hªdËr +-> +addHtmlAs£t +('myV›w')), fix_lšeb»aks( +$cڋÁ +), 'addHtmlAsset()‡dds view-specific javascripts‡fter‡pplication-wide‡ssets'); + +188 + g$hªdËr +-> +£tCÚfigu¿tiÚ +( +¬¿y +( + +189 '®l' => +¬¿y +( + +190 'javasüts' => +¬¿y +('all_foobar'), + +192 'myV›w' => +¬¿y +( + +193 'javasüts' => +¬¿y +('foobar'), + +196 + g$cڋÁ + = <<< +EOF + + +197 \ +$»¥Ú£ +-> +addJavasüt +('®l_foob¬', '', +¬¿y + ()); + +198 \ + g$»¥Ú£ +-> +addJavasüt +('foob¬', '', +¬¿y + ()); + +200 + gEOF +; + +201 + g$t +-> +is +( +fix_lšeb»aks +( +$hªdËr +-> +addHtmlAs£t +('myV›w')), fix_lšeb»aks( +$cڋÁ +), 'addHtmlAsset()‡dds view-specific javascripts‡fter‡pplication-wide‡ssets'); + +203 + g$hªdËr +-> +£tCÚfigu¿tiÚ +( +¬¿y +( + +204 'myV›w' => +¬¿y +( + +205 'javasüts' => +¬¿y +('foobar'), + +207 'deçuÉ' => +¬¿y +( + +208 'javasüts' => +¬¿y +('default_foobar'), + +211 + g$cڋÁ + = <<< +EOF + + +212 \ +$»¥Ú£ +-> +addJavasüt +('deçuÉ_foob¬', '', +¬¿y + ()); + +213 \ + g$»¥Ú£ +-> +addJavasüt +('foob¬', '', +¬¿y + ()); + +215 + gEOF +; + +216 + g$t +-> +is +( +fix_lšeb»aks +( +$hªdËr +-> +addHtmlAs£t +('myV›w')), fix_lšeb»aks( +$cڋÁ +), 'addHtmlAsset()‡dds view-specific javascripts‡fter default‡ssets'); + +218 + g$hªdËr +-> +£tCÚfigu¿tiÚ +( +¬¿y +( + +219 'deçuÉ' => +¬¿y +( + +220 'javasüts' => +¬¿y +('default_foobar'), + +222 'myV›w' => +¬¿y +( + +223 'javasüts' => +¬¿y +('foobar'), + +226 + g$cڋÁ + = <<< +EOF + + +227 \ +$»¥Ú£ +-> +addJavasüt +('deçuÉ_foob¬', '', +¬¿y + ()); + +228 \ + g$»¥Ú£ +-> +addJavasüt +('foob¬', '', +¬¿y + ()); + +230 + gEOF +; + +231 + g$t +-> +is +( +fix_lšeb»aks +( +$hªdËr +-> +addHtmlAs£t +('myV›w')), fix_lšeb»aks( +$cڋÁ +), 'addHtmlAsset()‡dds view-specific javascripts‡fter default‡ssets'); + +233 + g$hªdËr +-> +£tCÚfigu¿tiÚ +( +¬¿y +( + +234 'deçuÉ' => +¬¿y +( + +235 'javasüts' => +¬¿y +('default_foobar'), + +237 '®l' => +¬¿y +( + +238 'javasüts' => +¬¿y +('all_foobar'), + +241 + g$cڋÁ + = <<< +EOF + + +242 \ +$»¥Ú£ +-> +addJavasüt +('deçuÉ_foob¬', '', +¬¿y + ()); + +243 \ + g$»¥Ú£ +-> +addJavasüt +('®l_foob¬', '', +¬¿y + ()); + +245 + gEOF +; + +246 + g$t +-> +is +( +fix_lšeb»aks +( +$hªdËr +-> +addHtmlAs£t +('myV›w')), fix_lšeb»aks( +$cڋÁ +), 'addHtmlAsset()‡dds‡pplication-specific javascripts‡fter default‡ssets'); + +248 + g$hªdËr +-> +£tCÚfigu¿tiÚ +( +¬¿y +( + +249 '®l' => +¬¿y +( + +250 'javasüts' => +¬¿y +('all_foobar'), + +252 'deçuÉ' => +¬¿y +( + +253 'javasüts' => +¬¿y +('default_foobar'), + +256 + g$cڋÁ + = <<< +EOF + + +257 \ +$»¥Ú£ +-> +addJavasüt +('deçuÉ_foob¬', '', +¬¿y + ()); + +258 \ + g$»¥Ú£ +-> +addJavasüt +('®l_foob¬', '', +¬¿y + ()); + +260 + gEOF +; + +261 + g$t +-> +is +( +fix_lšeb»aks +( +$hªdËr +-> +addHtmlAs£t +('myV›w')), fix_lšeb»aks( +$cڋÁ +), 'addHtmlAsset()‡dds‡pplication-specific javascripts‡fter default‡ssets'); + +264 + g$t +-> +dŸg +('addHtmlAsset()„emoval of‡ssets'); + +266 + g$hªdËr +-> +£tCÚfigu¿tiÚ +( +¬¿y +( + +267 '®l' => +¬¿y +( + +268 '¡yËsh“ts' => +¬¿y +('all_foo', 'all_bar'), + +270 'myV›w' => +¬¿y +( + +271 '¡yËsh“ts' => +¬¿y +('foobar', '-all_bar'), + +274 + g$cڋÁ + = <<< +EOF + + +275 \ +$»¥Ú£ +-> +addStyËsh“t +('®l_foo', '', +¬¿y + ()); + +276 \ + g$»¥Ú£ +-> +addStyËsh“t +('foob¬', '', +¬¿y + ()); + +278 + gEOF +; + +279 + g$t +-> +is +( +fix_lšeb»aks +( +$hªdËr +-> +addHtmlAs£t +('myV›w')), fix_lšeb»aks( +$cڋÁ +), 'addHtmlAsset() supportshe - optiono„emove one stylesheet…reviously‡dded'); + +281 + g$hªdËr +-> +£tCÚfigu¿tiÚ +( +¬¿y +( + +282 '®l' => +¬¿y +( + +283 'javasüts' => +¬¿y +('all_foo', 'all_bar'), + +285 'myV›w' => +¬¿y +( + +286 'javasüts' => +¬¿y +('foobar', '-all_bar'), + +289 + g$cڋÁ + = <<< +EOF + + +290 \ +$»¥Ú£ +-> +addJavasüt +('®l_foo', '', +¬¿y + ()); + +291 \ + g$»¥Ú£ +-> +addJavasüt +('foob¬', '', +¬¿y + ()); + +293 + gEOF +; + +294 + g$t +-> +is +( +fix_lšeb»aks +( +$hªdËr +-> +addHtmlAs£t +('myV›w')), fix_lšeb»aks( +$cڋÁ +), 'addHtmlAsset() supportshe - optiono„emove one javascript…reviously‡dded'); + +296 + g$hªdËr +-> +£tCÚfigu¿tiÚ +( +¬¿y +( + +297 '®l' => +¬¿y +( + +298 '¡yËsh“ts' => +¬¿y +('foo', 'bar', '-*', 'baz'), + +301 + g$cڋÁ + = <<< +EOF + + +302 \ +$»¥Ú£ +-> +addStyËsh“t +('baz', '', +¬¿y + ()); + +304 + gEOF +; + +305 + g$t +-> +is +( +fix_lšeb»aks +( +$hªdËr +-> +addHtmlAs£t +('myV›w')), fix_lšeb»aks( +$cڋÁ +), 'addHtmlAsset() supportshe -* optiono„emove‡ll stylesheets…reviously‡dded'); + +307 + g$hªdËr +-> +£tCÚfigu¿tiÚ +( +¬¿y +( + +308 '®l' => +¬¿y +( + +309 'javasüts' => +¬¿y +('foo', 'bar', '-*', 'baz'), + +312 + g$cڋÁ + = <<< +EOF + + +313 \ +$»¥Ú£ +-> +addJavasüt +('baz', '', +¬¿y + ()); + +315 + gEOF +; + +316 + g$t +-> +is +( +fix_lšeb»aks +( +$hªdËr +-> +addHtmlAs£t +('myV›w')), fix_lšeb»aks( +$cڋÁ +), 'addHtmlAsset() supportshe -* optiono„emove‡ll javascripts…reviously‡dded'); + +318 + g$hªdËr +-> +£tCÚfigu¿tiÚ +( +¬¿y +( + +319 '®l' => +¬¿y +( + +320 '¡yËsh“ts' => +¬¿y +('-*', 'foobar'), + +322 'deçuÉ' => +¬¿y +( + +323 '¡yËsh“ts' => +¬¿y +('default_foo', 'default_bar'), + +326 + g$cڋÁ + = <<< +EOF + + +327 \ +$»¥Ú£ +-> +addStyËsh“t +('foob¬', '', +¬¿y + ()); + +329 + gEOF +; + +330 + g$t +-> +is +( +fix_lšeb»aks +( +$hªdËr +-> +addHtmlAs£t +('myV›w')), fix_lšeb»aks( +$cڋÁ +), 'addHtmlAsset() supportshe -* optiono„emove‡ll‡ssets…reviously‡dded'); + +332 + g$hªdËr +-> +£tCÚfigu¿tiÚ +( +¬¿y +( + +333 'myV›w' => +¬¿y +( + +334 '¡yËsh“ts' => +¬¿y +('foobar', '-*', 'bar'), + +335 'javasüts' => +¬¿y +('foobar', '-*', 'bar'), + +337 '®l' => +¬¿y +( + +338 '¡yËsh“ts' => +¬¿y +('all_foo', 'all_foofoo', 'all_barbar'), + +339 'javasüts' => +¬¿y +('all_foo', 'all_foofoo', 'all_barbar'), + +341 'deçuÉ' => +¬¿y +( + +342 '¡yËsh“ts' => +¬¿y +('default_foo', 'default_foofoo', 'default_barbar'), + +343 'javasüts' => +¬¿y +('default_foo', 'default_foofoo', 'default_barbar'), + +346 + g$cڋÁ + = <<< +EOF + + +347 \ +$»¥Ú£ +-> +addStyËsh“t +('b¬', '', +¬¿y + ()); + +348 \ + g$»¥Ú£ +-> +addJavasüt +('b¬', '', +¬¿y + ()); + +350 + gEOF +; + +351 + g$t +-> +is +( +fix_lšeb»aks +( +$hªdËr +-> +addHtmlAs£t +('myV›w')), fix_lšeb»aks( +$cڋÁ +), 'addHtmlAsset() supportshe -* optiono„emove‡ll‡ssets…reviously‡dded'); + + @lib/vendor/symfony/test/unit/config/sfYamlConfigHandlerTest.php + +1 +š™Ÿlize +(); + +46 + g$t +-> +dŸg +('->parseYamls()'); + +49 + g$t +-> +dŸg +('->parseYaml()'); + +52 + g$t +-> +dŸg +('->mergeConfigValue()'); + +53 + g$cÚfig +-> + gyamlCÚfig + = +¬¿y +( + +54 'b¬' => +¬¿y +( + +55 'foo' => +¬¿y +( + +60 '®l' => +¬¿y +( + +61 'foo' => +¬¿y +( + +67 + g$v®ues + = +$cÚfig +-> +m”geCÚfigV®ue +('foo', 'bar'); + +68 + g$t +-> +is +( +$v®ues +['foo'], 'foobar', '->mergeConfigValue() merges values for‡ given key under‡ given category'); + +69 + g$t +-> +is +( +$v®ues +['bar'], 'bar', '->mergeConfigValue() merges values for‡ given key under‡ given category'); + +70 + g$t +-> +is +( +$v®ues +['barall'], 'barall', '->mergeConfigValue() merges values for‡ given key under‡ given category'); + +73 + g$t +-> +dŸg +('->getConfigValue()'); + +74 + g$cÚfig +-> + gyamlCÚfig + = +¬¿y +( + +75 'b¬' => +¬¿y +( + +78 '®l' => +¬¿y +( + +82 + g$t +-> +is +( +$cÚfig +-> +g‘CÚfigV®ue +('foo', 'bar'), 'foobar', '->getConfigValue()„eturnshe value forhe key inhe given category'); + +83 + g$t +-> +is +( +$cÚfig +-> +g‘CÚfigV®ue +('foo', 'all'), 'fooall', '->getConfigValue()„eturnshe value forhe key inhe given category'); + +84 + g$t +-> +is +( +$cÚfig +-> +g‘CÚfigV®ue +('foo', 'foofoo'), 'fooall', '->getConfigValue()„eturnshe value forhe key inhe "all" category ifhe key does‚otƒxist inhe given category'); + +85 + g$t +-> +is +( +$cÚfig +-> +g‘CÚfigV®ue +('foofoo', 'foofoo', 'default'), 'default', '->getConfigValue()„eturnshe default value if key is‚ot found inhe category‡nd inhe "all" category'); + + @lib/vendor/symfony/test/unit/controller/sfControllerTest.php + +1 +ÏunchTe¡s +( +$cڋxt +-> +g‘Ev’tDi¥©ch” +(), +$cڌÞËr +, 'controller'); + + @lib/vendor/symfony/test/unit/controller/sfWebControllerTest.php + +1 +¬¿y +( + +42 +¬¿y +( + +47 'moduË/aùiÚ?id=12' => +¬¿y +( + +49 +¬¿y +( + +55 'moduË/aùiÚ?id=12&' => +¬¿y +( + +57 +¬¿y +( + +63 'moduË/aùiÚ?id=12&‹¡=4&tÙo=9' => +¬¿y +( + +65 +¬¿y +( + +73 'moduË/aùiÚ?id=12&‹¡=4&5&6&7&&tÙo=9' => +¬¿y +( + +75 +¬¿y +( + +83 'moduË/aùiÚ?‹¡=v®ue1&v®ue2&tÙo=9' => +¬¿y +( + +85 +¬¿y +( + +92 'moduË/aùiÚ?‹¡=v®ue1&v®ue2' => +¬¿y +( + +94 +¬¿y +( + +100 'moduË/aùiÚ?‹¡=v®ue1=v®ue2&tÙo=9' => +¬¿y +( + +102 +¬¿y +( + +109 'moduË/aùiÚ?‹¡=v®ue1=v®ue2' => +¬¿y +( + +111 +¬¿y +( + +117 'moduË/aùiÚ?‹¡=4&5&6&7&&tÙo=9&id=' => +¬¿y +( + +119 +¬¿y +( + +127 '@‹¡?‹¡=4' => +¬¿y +( + +129 +¬¿y +( + +133 '@‹¡' => +¬¿y +( + +135 +¬¿y +( + +138 '@‹¡?id=12&foo=b¬' => +¬¿y +( + +140 +¬¿y +( + +145 '@‹¡?id=foo%26b¬&foo=b¬%3Dfoo' => +¬¿y +( + +147 +¬¿y +( + +155 + g$t +-> +dŸg +('->convertUrlStringToParameters()'); + +156 +fܗch + ( +$‹¡s + +as + +$u¾ + => +$»suÉ +) + +158 +$t +-> +is +( +$cڌÞËr +-> +cÚv”tU¾SŒšgToP¬am‘”s +( +$u¾ +), +$»suÉ +, +¥rštf +('->convertUrlStringToParameters() converts‡ symfony internal URIo‡n‡rray of…arameters (%s)', $url)); + +161 + gŒy + + +163 + g$cڌÞËr +-> +cÚv”tU¾SŒšgToP¬am‘”s +('@test?foobar'); + +164 + g$t +-> +çž +('->convertUrlStringToParameters()hrow‡ sfParseException if it cannot…arsehe query string'); + +166 + $ÿtch + ( +sfP¬£Exû±iÚ + +$e +) + +168 +$t +-> + `·ss +('->convertUrlStringToParameters()hrow‡ sfParseException if it cannot…arsehe query string'); + +169 + } +} + +172 + g$t +-> +dŸg +('->redirect()'); + +173 + g$cڌÞËr +-> +»dœeù +('module/action?id=1#photos'); + +174 + g$»¥Ú£ + = +$cڋxt +-> +g‘Re¥Ú£ +(); + +175 + g$t +-> +like +( +$»¥Ú£ +-> +g‘CڋÁ +(), '~http\://localhost/index.php/\?module=module&action=action&id=1#photos~', '->redirect()‡dds‡„efresh meta inhe content'); + +176 + g$t +-> +like +( +$»¥Ú£ +-> +g‘H‰pH—d” +('Location'), '~http\://localhost/index.php/\?module=module&action=action&id=1#photos~', '->redirect()‡dds‡ Location HTTP header'); + +179 + gŒy + + +181 + g$cڌÞËr +-> +»dœeù +( +nuÎ +); + +182 + g$t +-> +çž +('->redirect()hrow‡n InvalidArgumentException whenhe url‡rgument is‚ull'); + +184 + $ÿtch + ( +Inv®idArgum’tExû±iÚ + +$Ÿe +) + +186 +$t +-> + `·ss +('->redirect()hrow‡n InvalidArgumentException whenhe url‡rgument is‚ull'); + +187 + } +} + +188 + $ÿtch +( +Exû±iÚ + +$e +) + +190 +$t +-> + `çž +('->»dœeù(èthrow‡ÀInv®idArgum’tExû±iÚ wh’hu¾‡rgum’ˆi nuÎ. '. + `g‘_þass +( +$e +).' was„eceived'); + +191 + } +} + +194 + gŒy + + +196 + g$cڌÞËr +-> +»dœeù +(''); + +197 + g$t +-> +çž +('->redirect()hrow‡n InvalidArgumentException whenhe url‡rgument is‡nƒmpty string'); + +199 + $ÿtch + ( +Inv®idArgum’tExû±iÚ + +$Ÿe +) + +201 +$t +-> + `·ss +('->redirect()hrow‡n InvalidArgumentException whenhe url‡rgument is‡nƒmpty string'); + +202 + } +} + +203 + $ÿtch +( +Exû±iÚ + +$e +) + +205 +$t +-> + `çž +('->»dœeù(èthrow‡ÀInv®idArgum’tExû±iÚ wh’hu¾‡rgum’ˆi ªƒm±y sŒšg. '. + `g‘_þass +( +$e +).' was„eceived'); + +206 + } +} + +209 + g$t +-> +dŸg +('->genUrl()'); + +210 + g$t +-> +is +( +$cڌÞËr +-> +g’U¾ +('moduË/aùiÚ?id=4'), $cڌÞËr->g’U¾( +¬¿y +('action' => 'action', 'module' => 'module', 'id' => 4)), '->genUrl()‡ccepts‡ string or‡n‡rray‡s its first‡rgument'); + +212 + g$Ï¡E¼Ü + = +”rÜ_g‘_Ï¡ +(); + +213 + g$cڌÞËr +-> +g’U¾ +(''); + +214 + g$t +-> +is_d“¶y +( +”rÜ_g‘_Ï¡ +(), +$Ï¡E¼Ü +, '->genUrl()‡ccepts‡nƒmpty string'); + + @lib/vendor/symfony/test/unit/database/sfDatabaseTest.php + +1 +š™Ÿlize +( +$cڋxt +); + +28 +»quœe_Úû +( +$_‹¡_dœ +.'/unit/sfParameterHolderTest.class.php'); + +29 + g$pht + = +Ãw + +sfP¬am‘”HÞd”ProxyTe¡ +( +$t +); + +30 + g$pht +-> +ÏunchTe¡s +( +$d©aba£ +, 'parameter'); + + @lib/vendor/symfony/test/unit/debug/sfDebugTest.php + +1 +dŸg +('::removeObjects()'); + +17 + g$objeùA¼ay + = +¬¿y +('foo', 42, +Ãw + +sfDebug +(),‡¼ay('b¬', 23,‚ew +lime_‹¡ +( +nuÎ +))); + +18 + g$þ—ÃdA¼ay + = +¬¿y +('foo', 42, 'sfDebug Object()',‡rray('bar', 23, 'lime_test Object()')); + +19 + g$t +-> +is_d“¶y +( +sfDebug +:: +»moveObjeùs +( +$objeùA¼ay +), +$þ—ÃdA¼ay +, '::removeObjects() converts objectso String„epresentations usinghe class‚ame'); + + @lib/vendor/symfony/test/unit/debug/sfTimerTest.php + +1 +dŸg +('sfTimer starting‡nd stopping'); + +16 + g$tim” + = +Ãw + +sfTim” +(); + +17 + g$tim” +-> +addTime +(); + +18 +¦“p +(1); + +19 + g$tim” +-> +addTime +(); + +20 + g$t +-> +is +( +$tim” +-> +g‘C®ls +(), 2, '->getCalls()„eturnshe‡mount of‡ddTime() calls'); + +21 + g$t +-> +ok +( +$tim” +-> +g‘EÏp£dTime +() > 0, '->getElapsedTime()„eturns‡ value greaterhan zero. No…recision isested byhe unitesto‡void false‡larms'); + +23 + g$t +-> +dŸg +('sfTimerManager'); + +24 + g$tim”A + = +sfTim”Mªag” +:: +g‘Tim” +('timerA'); + +25 + g$tim”B + = +sfTim”Mªag” +:: +g‘Tim” +('timerB'); + +26 + g$t +-> +i§_ok +( +$tim”A +, 'sfTimer', '::getTimer()„eturns‡n sfTimer instance'); + +27 + g$tim”s + = +sfTim”Mªag” +:: +g‘Tim”s +(); + +28 + g$t +-> +is +( +couÁ +( +$tim”s +), 2, '::getTimers()„eturns‡n‡rray withheimers created byheimer manager'); + +29 + g$t +-> +is +( +$tim”s +['tim”A'], +$tim”A +, '::getTimers()„eturns‡n‡rray with keys beingheimer‚ame'); + +30 + gsfTim”Mªag” +:: +þ—rTim”s +(); + +31 + g$t +-> +is +( +couÁ +( +sfTim”Mªag” +:: +g‘Tim”s +()), 0, '::clearTimers()ƒmptieshe†ist ofheimer instances'); + + @lib/vendor/symfony/test/unit/debug/sfWebDebugTest.php + +1 +ÝtiÚs +['image_root_path'] = ''; + +20 +$this +-> +ÝtiÚs +['»que¡_·¿m‘”s'] = + `¬¿y +(); + +22 + } +} + +24 + g$debug + = +Ãw + +sfWebDebugTe¡ +(); + +27 + g$t +-> +dŸg +('->injectToolbar()'); + +29 + g$befÜe + = ''; + +30 + g$aᔠ+ = +$debug +-> +šjeùToÞb¬ +( +$befÜe +); + +32 + g$t +-> +like +( +$aᔠ+, '//', '->injectToolbar()‡dds styles'); + +33 + g$t +-> +like +( +$aᔠ+, '//', '->injectToolbar()‡dds javascript'); + +34 + g$t +-> +like +( +$aᔠ+, '/
    /', '->injectToolbar()‡ddsheoolbar'); + +36 + g$befÜe + = ''; + +37 + g$aᔠ+ = +$debug +-> +šjeùToÞb¬ +( +$befÜe +); + +39 + g$t +-> +uÆike +( +$aᔠ+, '//', '->injectToolbar() does‚ot‡dd styles ifhere is‚o head'); + +40 + g$t +-> +uÆike +( +$aᔠ+, '//', '->injectToolbar() does‚ot‡dd javascripts ifhere is‚o body'); + +41 + g$t +-> +like +( +$aᔠ+, '/
    /', '->injectToolbar()‡ddsheoolbar ifhere is‚o body'); + +43 + g$befÜe + = <<< +HTML + + +44 < +html +> + +45 < +h—d +> + +46 < +body +> + +47 < +‹x»a +>< +html +>< +h—d +>< +body +> + +48 + +49 + +50 +HTML +; + +52 + g$aᔠ+ = +$debug +-> +šjeùToÞb¬ +( +$befÜe +); + +54 + g$t +-> +is +( +sub¡r_couÁ +( +$aᔠ+, ''), 1, '->injectToolbar()‡dds styles once'); + +55 + g$t +-> +is +( +sub¡r_couÁ +( +$aᔠ+, ''), 1, '->injectToolbar()‡dds javascripts once'); + +56 + g$t +-> +is +( +sub¡r_couÁ +( +$aᔠ+, '
    '), 1, '->injectToolbar()‡dds styles once'); + +58 + g$t +-> +i§_ok +( +¡½os +( +$aᔠ+, ''), 'integer', '->injectToolbar()†eaves inner…ages untouched'); + + @lib/vendor/symfony/test/unit/escaper/sfOutputEscaperArrayDecoratorTest.php + +1 esÿ³d!', 1, +nuÎ +,‡rray(2, 'escaped!')); + +30 + g$esÿ³d + = +sfOuutEsÿ³r +:: +esÿ³ +('esc_’t™›s', +$a +); + +33 + g$t +-> +dŸg +('->getRaw()'); + +34 + g$t +-> +is +( +$esÿ³d +-> +g‘Raw +(0), 'escaped!', '->getRaw()„eturnshe„aw value'); + +37 + g$t +-> +dŸg +('ArrayAccess interface'); + +38 + g$t +-> +is +( +$esÿ³d +[0], '<strong>escaped!</strong>', 'Theƒscaped object behaves†ike‡n‡rray'); + +39 + g$t +-> +is +( +$esÿ³d +[2], +nuÎ +, 'Theƒscaped object behaves†ike‡n‡rray'); + +40 + g$t +-> +is +( +$esÿ³d +[3][1], '<strong>escaped!</strong>', 'Theƒscaped object behaves†ike‡n‡rray'); + +42 + g$t +-> +ok +( +is£t +( +$esÿ³d +[1]), 'Theƒscaped object behaves†ike‡n‡rray (isset)'); + +44 + g$t +-> +dŸg +('ArrayAccess interface is„ead only'); + +45 + gŒy + + +47 +un£t +( +$esÿ³d +[0]); + +48 + g$t +-> +çž +('Theƒscaped object is„ead only (unset)'); + +50 + $ÿtch + ( +sfExû±iÚ + +$e +) + +52 +$t +-> + `·ss +('Theƒscaped object is„ead only (unset)'); + +53 + } +} + +55 + gŒy + + +57 + g$esÿ³d +[0] = 12; + +58 + g$t +-> +çž +('Theƒscaped object is„ead only (set)'); + +60 + $ÿtch + ( +sfExû±iÚ + +$e +) + +62 +$t +-> + `·ss +('Theƒscaped object is„ead only (set)'); + +63 + } +} + +66 + g$t +-> +dŸg +('Iterator interface'); + +67 +fܗch + ( +$esÿ³d + +as + +$key + => +$v®ue +) + +69  +$key +) + +72 +$t +-> +is +( +$v®ue +, '<strong>escaped!</strong>', 'Theƒscaped object behaves†ike‡n‡rray'); + +75 +$t +-> +is +( +$v®ue +, 1, 'Theƒscaped object behaves†ike‡n‡rray'); + +78 +$t +-> +is +( +$v®ue +, +nuÎ +, 'Theƒscaped object behaves†ike‡n‡rray'); + +83 +$t +-> +çž +('Theƒscaped object behaves†ike‡n‡rray'); + +88 + g$t +-> +dŸg +('->valid()'); + +90 + g$esÿ³d + = +sfOuutEsÿ³r +:: +esÿ³ +('esc_’t™›s', +¬¿y +(1, 2, 3)); + +91 + g$t +-> +is +( +$esÿ³d +-> +v®id +(), +Œue +, '->valid()„eturnsrue if called before iteration'); + + @lib/vendor/symfony/test/unit/escaper/sfOutputEscaperObjectDecoratorTest.php + +1 + `g‘T™Ë +(); + +36 +public + +funùiÚ + + $g‘T™Ë +() + +39 + } +} + +41 +public + +funùiÚ + + $g‘T™Ës +() + +43  + `¬¿y +(1, 2, 'escaped!'); + +44 + } +} + +47 + g$objeù + = +Ãw + +OuutEsÿ³rTe¡ +(); + +48 + g$esÿ³d + = +sfOuutEsÿ³r +:: +esÿ³ +('esc_’t™›s', +$objeù +); + +50 + g$t +-> +is +( +$esÿ³d +-> +g‘T™Ë +(), '<strong>escaped!</strong>', 'Theƒscaped object behaves†ikehe„eal object'); + +52 + g$¬¿y + = +$esÿ³d +-> +g‘T™Ës +(); + +53 + g$t +-> +is +( +$¬¿y +[2], '<strong>escaped!</strong>', 'Theƒscaped object behaves†ikehe„eal object'); + +56 + g$t +-> +dŸg +('__toString()'); + +58 + g$t +-> +is +( +$esÿ³d +-> +__toSŒšg +(), '<strong>escaped!</strong>', 'Theƒscaped object behaves†ikehe„eal object'); + +60 ià( +þass_exi¡s +('SimpleXMLElement')) + +62 + g$–em’t + = +Ãw + +Sim¶eXMLEËm’t +('bar'); + +63 + g$esÿ³d + = +sfOuutEsÿ³r +:: +esÿ³ +('esc_’t™›s', +$–em’t +); + +64 + g$t +-> +is +(( +¡ršg +è +$esÿ³d +, (¡ršgè +$–em’t +, '->__toString() is compatible with SimpleXMLElement'); + +68 + g$t +-> +sk +('->__toString() is compatible with SimpleXMLElement'); + +71 þas  + cFoo + + +75 þas  + cFooCouÁabË + +im¶em’ts + + mCouÁabË + + +77 +public + +funùiÚ + + $couÁ +() + +81 + } +} + +84 + g$t +-> +dŸg +('implements Countable'); + +85 + g$foo + = +sfOuutEsÿ³r +:: +esÿ³ +('esc_’t™›s', +Ãw + +Foo +()); + +86 + g$fooc + = +sfOuutEsÿ³r +:: +esÿ³ +('esc_’t™›s', +Ãw + +FooCouÁabË +()); + +87 + g$t +-> +is +( +couÁ +( +$foo +), 1, '->count()„eturns 1 ifheƒmbedded object does‚ot implementhe Countable interface'); + +88 + g$t +-> +is +( +couÁ +( +$fooc +), 2, '->count()„eturnshe count() forheƒmbedded object'); + +91 + g$t +-> +dŸg +('->__isset()'); + +93 + g$¿w + = +Ãw + +¡dCÏss +(); + +94 + g$¿w +-> + gfoo + = 'bar'; + +95 + g$esc + = +sfOuutEsÿ³r +:: +esÿ³ +('esc_’t™›s', +$¿w +); + +96 + g$t +-> +ok +( +is£t +( +$esc +-> +foo +), '->__isset()‡skshe wrapped object whether‡…roperty is set'); + +97 +un£t +( +$¿w +-> +foo +); + +98 + g$t +-> +ok +(! +is£t +( +$esc +-> +foo +), '->__isset()‡skshe wrapped object whether‡…roperty is set'); + + @lib/vendor/symfony/test/unit/escaper/sfOutputEscaperSafeTest.php + +1 +dŸg +('->getValue()'); + +19 + g$§ã + = +Ãw + +sfOuutEsÿ³rSaã +('foo'); + +20 + g$t +-> +is +( +$§ã +-> +g‘V®ue +(), 'foo', '->getValue()„eturnsheƒmbedded value'); + +23 + g$t +-> +dŸg +('->__set() ->__get()'); + +25 þas  + cTe¡CÏss1 + + +27 +public + + m$foo + = 'bar'; + +30 + g$§ã + = +Ãw + +sfOuutEsÿ³rSaã +Òew +Te¡CÏss1 +()); + +32 + g$t +-> +is +( +$§ã +-> +foo +, 'bar', '->__get()„eturnshe object…arameter'); + +33 + g$§ã +-> + gfoo + = 'baz'; + +34 + g$t +-> +is +( +$§ã +-> +foo +, 'baz', '->__set() setshe object…arameter'); + +37 + g$t +-> +dŸg +('->__call()'); + +39 þas  + cTe¡CÏss2 + + +41 +public + +funùiÚ + + $doSom‘hšg +() + +45 + } +} + +47 + g$§ã + = +Ãw + +sfOuutEsÿ³rSaã +Òew +Te¡CÏss2 +()); + +48 + g$t +-> +is +( +$§ã +-> +doSom‘hšg +(), 'ok', '->__call() invokesheƒmbedded method'); + +51 + g$t +-> +dŸg +('->__isset() ->__unset()'); + +53 þas  + cTe¡CÏss3 + + +55 +public + + +56 + m$boÞV®ue + = +Œue +, + +57 + m$nuÎV®ue + = +nuÎ +; + +60 + g$§ã + = +Ãw + +sfOuutEsÿ³rSaã +Òew +Te¡CÏss3 +()); + +62 + g$t +-> +is +( +is£t +( +$§ã +-> +boÞV®ue +), +Œue +, '->__isset()„eturnsrue ifhe…roperty is‚ot‚ull'); + +63 + g$t +-> +is +( +is£t +( +$§ã +-> +nuÎV®ue +), +çl£ +, '->__isset()„eturns false ifhe…roperty is‚ull'); + +64 + g$t +-> +is +( +is£t +( +$§ã +-> +undefšedV®ue +), +çl£ +, '->__isset()„eturns false ifhe…roperty does‚otƒxist'); + +66 +un£t +( +$§ã +-> +boÞV®ue +); + +67 + g$t +-> +is +( +is£t +( +$§ã +-> +boÞV®ue +), +çl£ +, '->__unset() unsetsheƒmbedded…roperty'); + +70 + g$t +-> +dŸg +('Iterator'); + +72 + g$šput + = +¬¿y +('one' => 1, 'two' => 2, 'three' => 3, 'children' =>‡rray(1, 2, 3)); + +73 + g$ouut + = +¬¿y +(); + +75 + g$§ã + = +Ãw + +sfOuutEsÿ³rSaã +( +$šput +); + +76 +fܗch + ( +$§ã + +as + +$key + => +$v®ue +) + +78 +$ouut +[ +$key +] = +$v®ue +; + +80 + g$t +-> +is_d“¶y +( +$ouut +, +$šput +, '"Iterator" implementation imitates‡n‡rray'); + +83 + g$t +-> +dŸg +('ArrayAccess'); + +85 + g$§ã + = +Ãw + +sfOuutEsÿ³rSaã +( +¬¿y +('foo' => 'bar')); + +87 + g$t +-> +is +( +$§ã +['foo'], 'bar', '"ArrayAccess" implementation„eturns‡ value fromheƒmbedded‡rray'); + +88 + g$§ã +['foo'] = 'baz'; + +89 + g$t +-> +is +( +$§ã +['foo'], 'baz', '"ArrayAccess" implementation sets‡ value onheƒmbedded‡rray'); + +90 + g$t +-> +is +( +is£t +( +$§ã +['foo']), +Œue +, '"ArrayAccess" checks if‡ value is set onheƒmbedded‡rray'); + +91 +un£t +( +$§ã +['foo']); + +92 + g$t +-> +is +( +is£t +( +$§ã +['foo']), +çl£ +, '"ArrayAccess" unsets‡ value onheƒmbedded‡rray'); + + @lib/vendor/symfony/test/unit/escaper/sfOutputEscaperTest.php + +1 escaped!'; + +30 +public + +funùiÚ + + $g‘T™Ë +() + +32  +$this +-> +t™Ë +; + +35 +public + +funùiÚ + + $g‘T™ËT™Ë +() + +37 +$o + = +Ãw + +£lf +; + +39  +$o +-> + `g‘T™Ë +(); + +40 + } +} + +43 þas  + cOuutEsÿ³rTe¡CÏssChžd + +ex‹nds + + mOuutEsÿ³rTe¡CÏss + + +48 + g$t +-> +dŸg +('::escape()'); + +49 + g$t +-> +dŸg +('::escape() does‚otƒscape special values'); + +50 + g$t +-> +ok +( +sfOuutEsÿ³r +:: +esÿ³ +('esc_’t™›s', +nuÎ +) ===‚ull, '::escape()„eturns‚ull ifhe valueoƒscape is‚ull'); + +51 + g$t +-> +ok +( +sfOuutEsÿ³r +:: +esÿ³ +('esc_’t™›s', +çl£ +) === false, '::escape()„eturns false ifhe valueoƒscape is false'); + +52 + g$t +-> +ok +( +sfOuutEsÿ³r +:: +esÿ³ +('esc_’t™›s', +Œue +) ===rue, '::escape()„eturnsrue ifhe valueoƒscape isrue'); + +54 + g$t +-> +dŸg +('::escape() does‚otƒscape‡ value whenƒscaping method is ESC_RAW'); + +55 + g$t +-> +is +( +sfOuutEsÿ³r +:: +esÿ³ +('esc_raw', 'escaped!'), 'escaped!', '::escape()akes‡nƒscaping strategy function‚ame‡s its first‡rgument'); + +57 + g$t +-> +dŸg +('::escape()ƒscapes strings'); + +58 + g$t +-> +is +( +sfOuutEsÿ³r +:: +esÿ³ +('esc_entities', 'escaped!'), '<strong>escaped!</strong>', '::escape()„eturns‡nƒscaped string ifhe valueoƒscape is‡ string'); + +59 + g$t +-> +is +( +sfOuutEsÿ³r +:: +esÿ³ +('esc_entities', 'échappé'), '<strong>échappé</strong>', '::escape()„eturns‡nƒscaped string ifhe valueoƒscape is‡ string'); + +61 + g$t +-> +dŸg +('::escape()ƒscapes‡rrays'); + +62 + g$šput + = +¬¿y +( + +64 'b¬' => +¬¿y +('foo' => 'escaped!'), + +66 + g$ouut + = +sfOuutEsÿ³r +:: +esÿ³ +('esc_’t™›s', +$šput +); + +67 + g$t +-> +i§_ok +( +$ouut +, 'sfOutputEscaperArrayDecorator', '::escape()„eturns‡ sfOutputEscaperArrayDecorator object ifhe valueoƒscape is‡n‡rray'); + +68 + g$t +-> +is +( +$ouut +['foo'], '<strong>escaped!</strong>', '::escape()ƒscapes‡llƒlements ofhe original‡rray'); + +69 + g$t +-> +is +( +$ouut +['bar']['foo'], '<strong>escaped!</strong>', '::escape() is„ecursive'); + +70 + g$t +-> +is +( +$ouut +-> +g‘RawV®ue +(), +$šput +, '->getRawValue()„eturnshe unescaped value'); + +72 + g$t +-> +dŸg +('::escape()ƒscapes objects'); + +73 + g$šput + = +Ãw + +OuutEsÿ³rTe¡CÏss +(); + +74 + g$ouut + = +sfOuutEsÿ³r +:: +esÿ³ +('esc_’t™›s', +$šput +); + +75 + g$t +-> +i§_ok +( +$ouut +, 'sfOutputEscaperObjectDecorator', '::escape()„eturns‡ sfOutputEscaperObjectDecorator object ifhe valueoƒscape is‡n object'); + +76 + g$t +-> +is +( +$ouut +-> +g‘T™Ë +(), '<strong>escaped!</strong>', '::escape()ƒscapes‡ll methods ofhe original object'); + +77 + g$t +-> +is +( +$ouut +-> +t™Ë +, '<strong>escaped!</strong>', '::escape()ƒscapes‡ll…roperties ofhe original object'); + +78 + g$t +-> +is +( +$ouut +-> +g‘T™ËT™Ë +(), '<strong>escaped!</strong>', '::escape() is„ecursive'); + +79 + g$t +-> +is +( +$ouut +-> +g‘RawV®ue +(), +$šput +, '->getRawValue()„eturnshe unescaped value'); + +81 + g$t +-> +is +( +sfOuutEsÿ³r +:: +esÿ³ +('esc_’t™›s', +$ouut +)-> +g‘T™Ë +(), '<strong>escaped!</strong>', '::escape() does‚ot doubleƒscape‡n object'); + +82 + g$t +-> +i§_ok +( +sfOuutEsÿ³r +:: +esÿ³ +('esc_’t™›s', +Ãw + +DœeùÜyI‹¿tÜ +('.')), 'sfOutputEscaperIteratorDecorator', '::escape()„eturns‡ sfOutputEscaperIteratorDecorator object ifhe valueoƒscape is‡n objecthat implementshe ArrayAccess interface'); + +84 + g$t +-> +dŸg +('::escape() does‚otƒscape object marked‡s being safe'); + +85 + g$t +-> +i§_ok +( +sfOuutEsÿ³r +:: +esÿ³ +('esc_’t™›s', +Ãw + +sfOuutEsÿ³rSaã +Òew +OuutEsÿ³rTe¡CÏss +())), 'OutputEscaperTestClass', '::escape()„eturnshe original value if it is marked‡s being safe'); + +87 + gsfOuutEsÿ³r +:: +m¬kCÏssAsSaã +('OutputEscaperTestClass'); + +88 + g$t +-> +i§_ok +( +sfOuutEsÿ³r +:: +esÿ³ +('esc_’t™›s', +Ãw + +OuutEsÿ³rTe¡CÏss +()), 'OutputEscaperTestClass', '::escape()„eturnshe original value ifhe object class is marked‡s being safe'); + +89 + g$t +-> +i§_ok +( +sfOuutEsÿ³r +:: +esÿ³ +('esc_’t™›s', +Ãw + +OuutEsÿ³rTe¡CÏssChžd +()), 'OutputEscaperTestClassChild', '::escape()„eturnshe original value if one ofhe object…arent class is marked‡s being safe'); + +91 + g$t +-> +dŸg +('::escape() cannotƒscape„esources'); + +92 + g$fh + = +fݒ +( +__FILE__ +, 'r'); + +93 + gŒy + + +95 + gsfOuutEsÿ³r +:: +esÿ³ +('esc_’t™›s', +$fh +); + +96 + g$t +-> +çž +('::escape()hrows‡n InvalidArgumentException ifhe value cannot beƒscaped'); + +98 + $ÿtch + ( +Inv®idArgum’tExû±iÚ + +$e +) + +100 +$t +-> + `·ss +('::escape()hrows‡n InvalidArgumentException ifhe value cannot beƒscaped'); + +101 + } +} + +104 + g$t +-> +dŸg +('::unescape()'); + +105 + g$t +-> +dŸg +('::unescape() does‚ot unescape special values'); + +106 + g$t +-> +ok +( +sfOuutEsÿ³r +:: +uÃsÿ³ +( +nuÎ +) ===‚ull, '::unescape()„eturns‚ull ifhe valueo unescape is‚ull'); + +107 + g$t +-> +ok +( +sfOuutEsÿ³r +:: +uÃsÿ³ +( +çl£ +) === false, '::unescape()„eturns false ifhe valueo unescape is false'); + +108 + g$t +-> +ok +( +sfOuutEsÿ³r +:: +uÃsÿ³ +( +Œue +) ===rue, '::unescape()„eturnsrue ifhe valueo unescape isrue'); + +110 + g$t +-> +dŸg +('::unescape() unescapes strings'); + +111 + g$t +-> +is +( +sfOuutEsÿ³r +:: +uÃsÿ³ +('<strong>escaped!</strong>'), 'escaped!', '::unescape()„eturns‡n unescaped string ifhe valueo unescape is‡ string'); + +112 + g$t +-> +is +( +sfOuutEsÿ³r +:: +uÃsÿ³ +('<strong>échappé</strong>'), 'échappé', '::unescape()„eturns‡n unescaped string ifhe valueo unescape is‡ string'); + +114 + g$t +-> +dŸg +('::unescape() unescapes‡rrays'); + +115 + g$šput + = +sfOuutEsÿ³r +:: +esÿ³ +('esc_’t™›s', +¬¿y +( + +117 'b¬' => +¬¿y +('foo' => 'escaped!'), + +119 + g$ouut + = +sfOuutEsÿ³r +:: +uÃsÿ³ +( +$šput +); + +120 + g$t +-> +ok +( +is_¬¿y +( +$ouut +), '::unescape()„eturns‡n‡rray ifhe input is‡ sfOutputEscaperArrayDecorator object'); + +121 + g$t +-> +is +( +$ouut +['foo'], 'escaped!', '::unescape() unescapes‡llƒlements ofhe original‡rray'); + +122 + g$t +-> +is +( +$ouut +['bar']['foo'], 'escaped!', '::unescape() is„ecursive'); + +124 + g$t +-> +dŸg +('::unescape() unescapes objects'); + +125 + g$objeù + = +Ãw + +OuutEsÿ³rTe¡CÏss +(); + +126 + g$šput + = +sfOuutEsÿ³r +:: +esÿ³ +('esc_’t™›s', +$objeù +); + +127 + g$ouut + = +sfOuutEsÿ³r +:: +uÃsÿ³ +( +$šput +); + +128 + g$t +-> +i§_ok +( +$ouut +, 'OutputEscaperTestClass', '::unescape()„eturnshe original object when‡ sfOutputEscaperObjectDecorator object is…assed'); + +129 + g$t +-> +is +( +$ouut +-> +g‘T™Ë +(), 'escaped!', '::unescape() unescapes‡ll methods ofhe original object'); + +130 + g$t +-> +is +( +$ouut +-> +t™Ë +, 'escaped!', '::unescape() unescapes‡ll…roperties ofhe original object'); + +131 + g$t +-> +is +( +$ouut +-> +g‘T™ËT™Ë +(), 'escaped!', '::unescape() is„ecursive'); + +133 + g$t +-> +i§_ok +( +sfOuutEsÿ³rI‹¿tÜDecÜ©Ü +:: +uÃsÿ³ +( +sfOuutEsÿ³r +:: +esÿ³ +('esc_’t™›s', +Ãw + +DœeùÜyI‹¿tÜ +('.'))), 'DirectoryIterator', '::unescape() unescapes sfOutputEscaperIteratorDecorator objects'); + +135 + g$t +-> +dŸg +('::unescape() does‚ot unescape object marked‡s being safe'); + +136 + g$t +-> +i§_ok +( +sfOuutEsÿ³r +:: +uÃsÿ³ +(sfOuutEsÿ³r:: +esÿ³ +('esc_’t™›s', +Ãw + +sfOuutEsÿ³rSaã +Òew +OuutEsÿ³rTe¡CÏss +()))), 'OutputEscaperTestClass', '::unescape()„eturnshe original value if it is marked‡s being safe'); + +138 + gsfOuutEsÿ³r +:: +m¬kCÏssAsSaã +('OutputEscaperTestClass'); + +139 + g$t +-> +i§_ok +( +sfOuutEsÿ³r +:: +uÃsÿ³ +(sfOuutEsÿ³r:: +esÿ³ +('esc_’t™›s', +Ãw + +OuutEsÿ³rTe¡CÏss +())), 'OutputEscaperTestClass', '::unescape()„eturnshe original value ifhe object class is marked‡s being safe'); + +140 + g$t +-> +i§_ok +( +sfOuutEsÿ³r +:: +uÃsÿ³ +(sfOuutEsÿ³r:: +esÿ³ +('esc_’t™›s', +Ãw + +OuutEsÿ³rTe¡CÏssChžd +())), 'OutputEscaperTestClassChild', '::unescape()„eturnshe original value if one ofhe object…arent class is marked‡s being safe'); + +142 + g$t +-> +dŸg +('::unescape() do‚othingo„esources'); + +143 + g$fh + = +fݒ +( +__FILE__ +, 'r'); + +144 + g$t +-> +is +( +sfOuutEsÿ³r +:: +uÃsÿ³ +( +$fh +), $fh, '::unescape() do‚othingo„esources'); + +146 + g$t +-> +dŸg +('::unescape() unescapes mixed‡rrays'); + +147 + g$objeù + = +Ãw + +OuutEsÿ³rTe¡CÏss +(); + +148 + g$šput + = +¬¿y +( + +150 'b¬' => +sfOuutEsÿ³r +:: +esÿ³ +('esc_entities', 'bar'), + +151 'foob¬' => +sfOuutEsÿ³r +:: +esÿ³ +('esc_’t™›s', +$objeù +), + +153 + g$ouut + = +¬¿y +( + +156 'foob¬' => +$objeù +, + +158 + g$t +-> +is +( +sfOuutEsÿ³r +:: +uÃsÿ³ +( +$šput +), +$ouut +, '::unescape() unescapes values with someƒscaped‡nd unescaped values'); + + @lib/vendor/symfony/test/unit/exception/sfExceptionsTest.php + +1 +ok +( +$e + +š¡ªûof + +sfExû±iÚ +, +¥rštf +('"%s" inh”™ äom sfExû±iÚ', +$þass +)); + +26 þas  + cmyExû±iÚ + +ex‹nds + + msfExû±iÚ + + +28  +public + +funùiÚ + +fÜm©ArgsTe¡ +( +$¬gs +, +$sšgË + = +çl£ +, +$fÜm© + = 'html') + +30  +·»Á +:: +fÜm©Args +( +$¬gs +, +$sšgË +, +$fÜm© +); + +35 + g$t +-> +dŸg +('sfException::formatArgs()'); + +36 + g$t +-> +is +( +myExû±iÚ +:: +fÜm©ArgsTe¡ +('foo', +Œue +), "'foo'", 'formatArgs() can format‡ single‡rgument'); + +37 + g$t +-> +is +( +myExû±iÚ +:: +fÜm©ArgsTe¡ +( +¬¿y +('foo', 'bar')), "'foo', 'bar'", 'formatArgs() can format‡n‡rray of‡rguments'); + +38 + g$t +-> +is +( +myExû±iÚ +:: +fÜm©ArgsTe¡ +( +Ãw + +¡dCÏss +(), +Œue +), "object('stdClass')", 'formatArgs() can format‡n objet instance'); + +39 + g$t +-> +is +( +myExû±iÚ +:: +fÜm©ArgsTe¡ +( +nuÎ +, +Œue +), "null", 'formatArgs() can format‡‚ull'); + +40 + g$t +-> +is +( +myExû±iÚ +:: +fÜm©ArgsTe¡ +(100, +Œue +), "100", 'formatArgs() can format‡n integer'); + +41 + g$t +-> +is +( +myExû±iÚ +:: +fÜm©ArgsTe¡ +( +¬¿y +('foo' => +Ãw + +¡dCÏss +(), 'b¬' => 2), +Œue +), "array('foo' => object('stdClass'), 'bar' => 2)", 'formatArgs() can format‡‚ested‡rray'); + +43 + g$t +-> +is +( +myExû±iÚ +:: +fÜm©ArgsTe¡ +('&', +Œue +), "'&'", 'formatArgs()ƒscapes strings'); + +44 + g$t +-> +is +( +myExû±iÚ +:: +fÜm©ArgsTe¡ +( +¬¿y +('&' => '&'), +Œue +), "array('&' => '&')", 'formatArgs()ƒscapes strings for keys‡nd values in‡rrays'); + + @lib/vendor/symfony/test/unit/filter/sfFilterTest.php + +1 +dŸg +('->initialize()'); + +29 + g$fž‹r + = +Ãw + +myFž‹r +( +$cڋxt +); + +30 + g$t +-> +is +( +$fž‹r +-> +g‘Cڋxt +(), +$cڋxt +, '->initialize()akes‡ sfContext object‡s its first‡rgument'); + +31 + g$fž‹r +-> +š™Ÿlize +( +$cڋxt +, +¬¿y +('foo' => 'bar')); + +32 + g$t +-> +is +( +$fž‹r +-> +g‘P¬am‘” +('foo'), 'bar', '->initialize()akes‡n‡rray of…arameters‡s its second‡rgument'); + +35 + g$t +-> +dŸg +('->getContext()'); + +36 + g$fž‹r +-> +š™Ÿlize +( +$cڋxt +); + +37 + g$t +-> +is +( +$fž‹r +-> +g‘Cڋxt +(), +$cڋxt +, '->getContext()„eturnshe current context'); + +40 + g$t +-> +dŸg +('->isFirstCall()'); + +41 + g$t +-> +is +( +$fž‹r +-> +isFœ¡C®l +('befÜeExecutiÚ'), +Œue +, '->isFirstCall()„eturnsrue ifhis ishe first call withhis‡rgument'); + +42 + g$t +-> +is +( +$fž‹r +-> +isFœ¡C®l +('befÜeExecutiÚ'), +çl£ +, '->isFirstCall()„eturns false ifhis is‚othe first call withhis‡rgument'); + +43 + g$t +-> +is +( +$fž‹r +-> +isFœ¡C®l +('befÜeExecutiÚ'), +çl£ +, '->isFirstCall()„eturns false ifhis is‚othe first call withhis‡rgument'); + +45 + g$fž‹r + = +Ãw + +myFž‹r +( +$cڋxt +); + +46 + g$fž‹r +-> +š™Ÿlize +( +$cڋxt +); + +47 + g$t +-> +is +( +$fž‹r +-> +isFœ¡C®l +('befÜeExecutiÚ'), +çl£ +, '->isFirstCall()„eturns false ifhis is‚othe first call withhis‡rgument'); + +50 +»quœe_Úû +( +$_‹¡_dœ +.'/unit/sfParameterHolderTest.class.php'); + +51 + g$pht + = +Ãw + +sfP¬am‘”HÞd”ProxyTe¡ +( +$t +); + +52 + g$pht +-> +ÏunchTe¡s +( +$fž‹r +, 'parameter'); + + @lib/vendor/symfony/test/unit/form/addon/sfFormSymfonyTest.php + +1 +ev’ts +[] = + `func_g‘_¬gs +(); + +24 +public + +funùiÚ + + $fž‹r +( +sfEv’t + +$ev’t +, +$v®ue +) + +26 +$this +-> +ev’ts +[] = + `func_g‘_¬gs +(); + +28  +$v®ue +; + +29 + } +} + +31 +public + +funùiÚ + + $»£t +() + +33 +$this +-> +ev’ts + = + `¬¿y +(); + +34 + } +} + +37 + g$li¡’” + = +Ãw + +FÜmLi¡’” +(); + +38 + g$di¥©ch” + = +Ãw + +sfEv’tDi¥©ch” +(); + +40 + g$di¥©ch” +-> +cÚÃù +('fÜm.po¡_cÚfigu»', +¬¿y +( +$li¡’” +, 'listen')); + +41 + g$di¥©ch” +-> +cÚÃù +('fÜm.fž‹r_v®ues', +¬¿y +( +$li¡’” +, 'filter')); + +42 + g$di¥©ch” +-> +cÚÃù +('fÜm.v®id©iÚ_”rÜ', +¬¿y +( +$li¡’” +, 'listen')); + +44 + gsfFÜmSymfÚy +:: +£tEv’tDi¥©ch” +( +$di¥©ch” +); + +46 þas  + cTe¡FÜm + +ex‹nds + + msfFÜmSymfÚy + + +48 +public + +funùiÚ + + $cÚfigu» +() + +50 +$this +-> + `£tV®id©Üs +( + `¬¿y +( + +51 'fœ¡_Çme' => +Ãw + + `sfV®id©ÜSŒšg +(), + +52 'Ï¡_Çme' => +Ãw + + `sfV®id©ÜSŒšg +(), + +55 + } +} + +58 + g$t +-> +dŸg +('->__construct()'); + +60 + g$li¡’” +-> +»£t +(); + +61 + g$fÜm + = +Ãw + +Te¡FÜm +(); + +62 + g$t +-> +is +( +couÁ +( +$li¡’” +-> +ev’ts +), 1, '->__construct()‚otifies oneƒvent'); + +63 + g$t +-> +is +( +$li¡’” +-> +ev’ts +[0][0]-> +g‘Name +(), 'form.post_configure', '->__construct()‚otifieshe "form.post_configure"ƒvent'); + +66 + g$t +-> +dŸg +('->bind()'); + +68 + g$fÜm + = +Ãw + +Te¡FÜm +(); + +69 + g$li¡’” +-> +»£t +(); + +70 + g$fÜm +-> +bšd +( +¬¿y +( + +75 + g$t +-> +is +( +couÁ +( +$li¡’” +-> +ev’ts +), 1, '->bind()‚otifies oneƒvent when validation is successful'); + +76 + g$t +-> +is +( +$li¡’” +-> +ev’ts +[0][0]-> +g‘Name +(), 'form.filter_values', '->bind()‚otifieshe "form.filter_values"ƒvent'); + +77 + g$t +-> +is_d“¶y +( +$li¡’” +-> +ev’ts +[0][1], +¬¿y +('first_name' => 'John', 'last_name' => 'Doe'), '->bind() filtersheainted values'); + +79 + g$fÜm + = +Ãw + +Te¡FÜm +(); + +80 + g$li¡’” +-> +»£t +(); + +81 + g$fÜm +-> +bšd +(); + +83 + g$t +-> +is +( +couÁ +( +$li¡’” +-> +ev’ts +), 2, '->bind()‚otifieswoƒvents when validation fails'); + +84 + g$t +-> +is +( +$li¡’” +-> +ev’ts +[1][0]-> +g‘Name +(), 'form.validation_error', '->bind()‚otifieshe "form.validation_error"ƒvent'); + +85 + g$t +-> +i§_ok +( +$li¡’” +-> +ev’ts +[1][0]['error'], 'sfValidatorErrorSchema', '->bind()‚otifiesheƒrror schema'); + + @lib/vendor/symfony/test/unit/form/sfFormFieldSchemaTest.php + +1 +$ÇmeWidg‘ + = +Ãw + +sfWidg‘FÜmIÅutText +(), + +19 + g$authÜSchema +-> +£tNameFÜm© +('article[author][%s]'); + +21 + g$schema + = +Ãw + +sfWidg‘FÜmSchema +( +¬¿y +( + +22 't™Ë' => +$t™ËWidg‘ + = +Ãw + +sfWidg‘FÜmIÅutText +(), + +23 'authÜ' => +$authÜSchema +, + +25 + g$schema +-> +£tNameFÜm© +('article[%s]'); + +28 + g$authÜE¼ÜSchema + = +Ãw + +sfV®id©ÜE¼ÜSchema +Òew +sfV®id©ÜSŒšg +()); + +29 + g$authÜE¼ÜSchema +-> +addE¼Ü +( +Ãw + +sfV®id©ÜE¼Ü +Òew +sfV®id©ÜSŒšg +(), 'nameƒrror'), 'name'); + +31 + g$¬tiþeE¼ÜSchema + = +Ãw + +sfV®id©ÜE¼ÜSchema +Òew +sfV®id©ÜSŒšg +()); + +32 + g$¬tiþeE¼ÜSchema +-> +addE¼Ü +( +$t™ËE¼Ü + = +Ãw + +sfV®id©ÜE¼Ü +Òew +sfV®id©ÜSŒšg +(), 'titleƒrror'), 'title'); + +33 + g$¬tiþeE¼ÜSchema +-> +addE¼Ü +( +$authÜE¼ÜSchema +, 'author'); + +35 + g$·»Á + = +Ãw + +sfFÜmF›ldSchema +( +$schema +, +nuÎ +, '¬tiþe', +¬¿y +('t™Ë' => 'symfÚy', 'authÜ' =>‡¼ay('Çme' => 'Fab›n')), +$¬tiþeE¼ÜSchema +); + +36 + g$f + = +$·»Á +['title']; + +37 + g$chžd + = +$·»Á +['author']; + +40 + g$t +-> +dŸg +('ArrayAccess interface'); + +41 + g$t +-> +is +( +is£t +( +$·»Á +['t™Ë']), +Œue +, 'sfFormField implementshe ArrayAccess interface'); + +42 + g$t +-> +is +( +is£t +( +$·»Á +['t™Ë1']), +çl£ +, 'sfFormField implementshe ArrayAccess interface'); + +43 + g$t +-> +is +( +$·»Á +['t™Ë'], +$f +, 'sfFormField implementshe ArrayAccess interface'); + +44 + gŒy + + +46 +un£t +( +$·»Á +['title']); + +47 + g$t +-> +çž +('sfFormField implementshe ArrayAccess interface but in„ead-only mode'); + +49 + $ÿtch + ( +LogicExû±iÚ + +$e +) + +51 +$t +-> + `·ss +('sfFormField implementshe ArrayAccess interface but in„ead-only mode'); + +52 + } +} + +54 + gŒy + + +56 + g$·»Á +['t™Ë'] = +nuÎ +; + +57 + g$t +-> +çž +('sfFormField implementshe ArrayAccess interface but in„ead-only mode'); + +59 + $ÿtch + ( +LogicExû±iÚ + +$e +) + +61 +$t +-> + `·ss +('sfFormField implementshe ArrayAccess interface but in„ead-only mode'); + +62 + } +} + +64 + gŒy + + +66 + g$·»Á +['title1']; + +67 + g$t +-> +çž +('sfFormField implementshe ArrayAccess interface but in„ead-only mode'); + +69 + $ÿtch + ( +LogicExû±iÚ + +$e +) + +71 +$t +-> + `·ss +('sfFormField implementshe ArrayAccess interface but in„ead-only mode'); + +72 + } +} + +75 + g$t +-> +dŸg +('implements Countable'); + +76 + g$widg‘Schema + = +Ãw + +sfWidg‘FÜmSchema +( +¬¿y +( + +77 'w1' => +$w1 + = +Ãw + +sfWidg‘FÜmIÅutText +(), + +78 'w2' => +$w2 + = +Ãw + +sfWidg‘FÜmIÅutText +(), + +80 + g$f + = +Ãw + +sfFÜmF›ldSchema +( +$widg‘Schema +, +nuÎ +, '¬tiþe', +¬¿y +()); + +81 + g$t +-> +is +( +couÁ +( +$f +), 2, 'sfFormFieldSchema implementshe Countable interface'); + +84 + g$t +-> +dŸg +('implements Iterator'); + +85 + g$f + = +Ãw + +sfFÜmF›ldSchema +( +$widg‘Schema +, +nuÎ +, '¬tiþe', +¬¿y +()); + +87 + g$v®ues + = +¬¿y +(); + +88 +fܗch + ( +$f + +as + +$Çme + => +$v®ue +) + +90 +$v®ues +[ +$Çme +] = +$v®ue +; + +92 + g$t +-> +is +( +is£t +( +$v®ues +['w1']), +Œue +, 'sfFormFieldSchema implementshe Iterator interface'); + +93 + g$t +-> +is +( +is£t +( +$v®ues +['w2']), +Œue +, 'sfFormFieldSchema implementshe Iterator interface'); + +94 + g$t +-> +is +( +couÁ +( +$v®ues +), 2, 'sfFormFieldSchema implementshe Iterator interface'); + +96 + g$t +-> +dŸg +('implements Iterator„espectinghe order of fields'); + +97 + g$widg‘Schema +-> +moveF›ld +('w2', 'first'); + +98 + g$f + = +Ãw + +sfFÜmF›ldSchema +( +$widg‘Schema +, +nuÎ +, '¬tiþe', +¬¿y +()); + +100 + g$v®ues + = +¬¿y +(); + +101 +fܗch + ( +$f + +as + +$Çme + => +$v®ue +) + +103 +$v®ues +[ +$Çme +] = +$v®ue +; + +105 + g$t +-> +is +( +¬¿y_keys +( +$v®ues +), +¬¿y +('w2', 'w1'), 'sfFormFieldSchema keepshe order'); + + @lib/vendor/symfony/test/unit/form/sfFormFieldTest.php + +1 +Ãw + +sfWidg‘FÜmIÅutHidd’ +(), + +18 'Çme' => +$ÇmeWidg‘ + = +Ãw + +sfWidg‘FÜmIÅutText +(), + +20 + g$authÜSchema +-> +£tNameFÜm© +('article[author][%s]'); + +22 + g$schema + = +Ãw + +sfWidg‘FÜmSchema +( +¬¿y +( + +23 't™Ë' => +$t™ËWidg‘ + = +Ãw + +sfWidg‘FÜmIÅutText +(), + +24 'authÜ' => +$authÜSchema +, + +26 + g$schema +-> +£tNameFÜm© +('article[%s]'); + +27 + g$t™ËWidg‘ +-> +£tP¬’t +( +$schema +); + +30 + g$authÜE¼ÜSchema + = +Ãw + +sfV®id©ÜE¼ÜSchema +Òew +sfV®id©ÜSŒšg +()); + +31 + g$authÜE¼ÜSchema +-> +addE¼Ü +( +Ãw + +sfV®id©ÜE¼Ü +Òew +sfV®id©ÜSŒšg +(), 'nameƒrror'), 'name'); + +33 + g$¬tiþeE¼ÜSchema + = +Ãw + +sfV®id©ÜE¼ÜSchema +Òew +sfV®id©ÜSŒšg +()); + +34 + g$¬tiþeE¼ÜSchema +-> +addE¼Ü +( +$t™ËE¼Ü + = +Ãw + +sfV®id©ÜE¼Ü +Òew +sfV®id©ÜSŒšg +(), 'titleƒrror'), 'title'); + +35 + g$¬tiþeE¼ÜSchema +-> +addE¼Ü +( +$authÜE¼ÜSchema +, 'author'); + +37 + g$·»Á + = +Ãw + +sfFÜmF›ldSchema +( +$schema +, +nuÎ +, '¬tiþe', +¬¿y +('t™Ë' => 'symfÚy', 'authÜ' =>‡¼ay('Çme' => 'Fab›n')), +$¬tiþeE¼ÜSchema +); + +38 + g$f + = +$·»Á +['title']; + +39 + g$chžd + = +$·»Á +['author']; + +42 + g$t +-> +dŸg +('->getValue() ->getName() ->getWidget() ->getParent() ->getError() ->hasError()'); + +43 + g$t +-> +ok +( +$f +-> +g‘Widg‘ +(è=ð +$t™ËWidg‘ +, '->getWidget()„eturnshe form field widget'); + +44 + g$t +-> +is +( +$f +-> +g‘Name +(), 'title', '->getName()„eturnshe form field‚ame'); + +45 + g$t +-> +is +( +$f +-> +g‘V®ue +(), 'symfony', '->getValue()„eturnshe form field value'); + +46 + g$t +-> +is +( +$f +-> +g‘P¬’t +(), +$·»Á +, '->getParent()„eturnshe form field…arent'); + +47 + g$t +-> +is +( +$f +-> +g‘E¼Ü +(), +$t™ËE¼Ü +, '->getError()„eturnshe form fieldƒrror'); + +48 + g$t +-> +is +( +$f +-> +hasE¼Ü +(), +Œue +, '->hasError()„eturnsrue ifhe form field has someƒrror'); + +50 + g$”rÜSchema1 + = +Ãw + +sfV®id©ÜE¼ÜSchema +Òew +sfV®id©ÜSŒšg +()); + +51 + g$”rÜSchema1 +-> +addE¼Ü +( +Ãw + +sfV®id©ÜE¼Ü +Òew +sfV®id©ÜSŒšg +(), 'error'), 'title1'); + +52 + g$·»Á1 + = +Ãw + +sfFÜmF›ldSchema +( +$schema +, +nuÎ +, '¬tiþe', +¬¿y +('t™Ë' => 'symfÚy'), +$”rÜSchema1 +); + +53 + g$f1 + = +$·»Á1 +['title']; + +54 + g$t +-> +is +( +$f1 +-> +hasE¼Ü +(), +çl£ +, '->hasError()„eturns false ifhe form field has‚oƒrror'); + +57 + g$t +-> +dŸg +('__toString()'); + +58 + g$t +-> +is +( +$f +-> +__toSŒšg +(), '', '__toString()„endershe form field with default HTML‡ttributes'); + +61 + g$t +-> +dŸg +('->render()'); + +62 + g$t +-> +is +( +$f +-> +»nd” +( +¬¿y +('class' => 'foo')), '', '->render()„endershe form field'); + +65 + g$t +-> +dŸg +('->renderRow()'); + +66 + g$ouut + = <<< +EOF + + +67 < +Œ +> + +68 < +th +>< +Ïb– + ="¬tiþe_t™Ë"> +T™Ë + + +69 < +td +> < +ul + +þass +="error_list"> + +70 < +li +> +t™Ë + +”rÜ + + +71 + +72 < +šput + +ty³ +="‹xt" +Çme +="¬tiþe[t™Ë]" +v®ue +="symfÚy" +id +="¬tiþe_t™Ë" /> + +73 + +75 +EOF +; + +76 + g$t +-> +is +( +$f +-> +»nd”Row +(), +fix_lšeb»aks +( +$ouut +), '->renderRow()„enders‡„ow'); + +78 + g$ouut + = <<< +EOF + + +79 < +Œ +> + +80 < +th +>< +Ïb– + ="¬tiþe_t™Ë"> +T™Ë + + +81 < +td +> < +ul + +þass +="error_list"> + +82 < +li +> +t™Ë + +”rÜ + + +83 + +84 < +šput + +ty³ +="·sswÜd" +Çme +="¬tiþe[t™Ë]" +v®ue +="symfÚy" +þass +="foo" +id +="t™Ë" /> + +85 + +87 +EOF +; + +88 + g$t +-> +is +( +$f +-> +»nd”Row +( +¬¿y +('þass' => 'foo', 'ty³' => '·sswÜd', 'id' => 't™Ë')), +fix_lšeb»aks +( +$ouut +), '->renderRow() canake‡n‡rray of HTML‡ttributes‡s its first‡rgument'); + +90 + g$ouut + = <<< +EOF + + +91 < +Œ +> + +92 < +th +>< +Ïb– + ="¬tiþe_t™Ë"> +My + +t™Ë + + +93 < +td +> < +ul + +þass +="error_list"> + +94 < +li +> +t™Ë + +”rÜ + + +95 + +96 < +šput + +ty³ +="‹xt" +Çme +="¬tiþe[t™Ë]" +v®ue +="symfÚy" +id +="¬tiþe_t™Ë" /> + +97 + +99 +EOF +; + +100 + g$t +-> +is +( +$f +-> +»nd”Row +( +¬¿y +(), 'My™Ë'), +fix_lšeb»aks +( +$ouut +), '->renderRow() canake‡†abel‚ame‡s its second‡rgument'); + +102 + g$ouut + = <<< +EOF + + +103 < +Œ +> + +104 < +th +>< +Ïb– + ="¬tiþe_t™Ë"> +T™Ë + + +105 < +td +> < +ul + +þass +="error_list"> + +106 < +li +> +t™Ë + +”rÜ + + +107 + +108 < +šput + +ty³ +="‹xt" +Çme +="¬tiþe[t™Ë]" +v®ue +="symfÚy" +id +="¬tiþe_t™Ë" />< +br + /> +h–p + + +109 + +111 +EOF +; + +112 + g$t +-> +is +( +$f +-> +»nd”Row +( +¬¿y +(), +nuÎ +, 'h–p'), +fix_lšeb»aks +( +$ouut +), '->renderRow() canake‡ help message‡s itshird‡rgument'); + +114 + g$ouut + = <<< +EOF + + +115 < +Œ +> + +116 < +th +>< +Ïb– + ="¬tiþe_authÜ"> +AuthÜ + + +117 < +td +>< +Œ +> + +118 < +th +>< +Ïb– + ="¬tiþe_authÜ_Çme"> +Name + + +119 < +td +> < +ul + +þass +="error_list"> + +120 < +li +> +Çme + +”rÜ + + +121 + +122 < +šput + +ty³ +="‹xt" +Çme +="¬tiþe[authÜ][Çme]" +v®ue +="Fab›n" +id +="¬tiþe_authÜ_Çme" /><špuˆty³="hidd’"‚ame="¬tiþe[authÜ][id]" id="¬tiþe_authÜ_id" /> + +123 + +124 + +125 + +127 +EOF +; + +128 + g$t +-> +is +( +$chžd +-> +»nd”Row +(), +fix_lšeb»aks +( +$ouut +), '->renderRow()„enders‡„ow whenhe widget has‡…arent'); + +130 + gŒy + + +132 + g$·»Á +-> +»nd”Row +(); + +133 + g$t +-> +çž +('->renderRow()hrows‡n LogicException ifhe form field has‚o…arent'); + +135 + $ÿtch + ( +LogicExû±iÚ + +$e +) + +137 +$t +-> + `·ss +('->renderRow()hrows‡n LogicException ifhe form field has‚o…arent'); + +138 + } +} + +141 + g$t +-> +dŸg +('->renderLabel()'); + +142 + g$t +-> +is +( +$f +-> +»nd”Lab– +(), '', '->renderLabel()„endershe†abel‡s HTML'); + +143 + g$t +-> +is +( +$f +-> +»nd”Lab– +( +nuÎ +, +¬¿y +('class' => 'foo')), '', '->renderLabel()„enders optional HTML‡ttributes'); + +144 + gŒy + + +146 + g$·»Á +-> +»nd”Lab– +(); + +147 + g$t +-> +çž +('->renderLabel()hrows‡n LogicException ifhe form field has‚o…arent'); + +149 + $ÿtch + ( +LogicExû±iÚ + +$e +) + +151 +$t +-> + `·ss +('->renderLabel()hrows‡n LogicException ifhe form field has‚o…arent'); + +152 + } +} + +155 + g$t +-> +dŸg +('->renderLabelName()'); + +156 + g$t +-> +is +( +$f +-> +»nd”Lab–Name +(), 'Title', '->renderLabelName()„endershe†abel‚ame'); + +157 + gŒy + + +159 + g$·»Á +-> +»nd”Lab–Name +(); + +160 + g$t +-> +çž +('->renderLabelName()hrows‡n LogicException ifhe form field has‚o…arent'); + +162 + $ÿtch + ( +LogicExû±iÚ + +$e +) + +164 +$t +-> + `·ss +('->renderLabelName()hrows‡n LogicException ifhe form field has‚o…arent'); + +165 + } +} + +168 + g$t +-> +dŸg +('->renderName()'); + +169 + g$t +-> +is +( +$f +-> +»nd”Name +(), 'article[title]', '->renderName()„endershe‚ame‡ttribute ofhe field'); + +170 + g$t +-> +is +( +$chžd +['Çme']-> +»nd”Name +(), 'article[author][name]', '->renderName()„endershe‚ame‡ttribute ofhe field'); + +173 + g$t +-> +dŸg +('->renderId()'); + +174 + g$t +-> +is +( +$f +-> +»nd”Id +(), 'article_title', '->renderId()„endershe id‡ttribute ofhe field'); + +175 + g$t +-> +is +( +$chžd +['Çme']-> +»nd”Id +(), 'article_author_name', '->renderId()„endershe id‡ttribute ofhe field'); + +178 + g$t +-> +dŸg +('->isHidden()'); + +179 + g$t +-> +is +( +$f +-> +isHidd’ +(), +çl£ +, '->isHidden() is‡…roxy methodohe isHidden() method ofhe widget'); + +182 + g$t +-> +dŸg +('->renderError()'); + +183 + g$ouut + = <<< +EOF + + +184 < +ul + +þass +="error_list"> + +185 < +li +> +t™Ë + +”rÜ + + +186 + +188 +EOF +; + +189 + g$t +-> +is +( +$f +-> +»nd”E¼Ü +(), +fix_lšeb»aks +( +$ouut +), '->renderError()„endersƒrrors‡s HTML'); + +190 + g$t +-> +is +( +$chžd +-> +»nd”E¼Ü +(), '', '->renderRow()„endersƒrrors‡s HTML whenhe widget has‡…arent'); + +191 + g$ouut + = <<< +EOF + + +192 < +ul + +þass +="error_list"> + +193 < +li +> +Çme + +”rÜ + + +194 + +196 +EOF +; + +197 + g$t +-> +is +( +$chžd +['Çme']-> +»nd”E¼Ü +(), +fix_lšeb»aks +( +$ouut +), '->renderRow()„endersƒrrors‡s HTML whenhe widget has‡…arent'); + +199 + gŒy + + +201 + g$·»Á +-> +»nd”E¼Ü +(); + +202 + g$t +-> +çž +('->renderError()hrows‡n LogicException ifhe form field has‚o…arent'); + +204 + $ÿtch + ( +LogicExû±iÚ + +$e +) + +206 +$t +-> + `·ss +('->renderError()hrows‡n LogicException ifhe form field has‚o…arent'); + +207 + } +} + +210 + g$authÜE¼ÜSchema + = +Ãw + +sfV®id©ÜE¼ÜSchema +Òew +sfV®id©ÜSŒšg +()); + +211 + g$authÜE¼ÜSchema +-> +addE¼Ü +( +Ãw + +sfV®id©ÜE¼Ü +Òew +sfV®id©ÜSŒšg +(), 'nameƒrror'), 'name'); + +212 + g$authÜE¼ÜSchema +-> +addE¼Ü +( +Ãw + +sfV®id©ÜE¼Ü +Òew +sfV®id©ÜSŒšg +(), 'nonƒxistent fieldƒrror'), 'non_existent_field'); + +213 + g$authÜE¼ÜSchema +-> +addE¼Ü +( +Ãw + +sfV®id©ÜE¼Ü +Òew +sfV®id©ÜSŒšg +(), 'hidden fieldƒrror'), 'id'); + +215 + g$¬tiþeE¼ÜSchema + = +Ãw + +sfV®id©ÜE¼ÜSchema +Òew +sfV®id©ÜSŒšg +()); + +216 + g$¬tiþeE¼ÜSchema +-> +addE¼Ü +( +$t™ËE¼Ü + = +Ãw + +sfV®id©ÜE¼Ü +Òew +sfV®id©ÜSŒšg +(), 'titleƒrror'), 'title'); + +217 + g$¬tiþeE¼ÜSchema +-> +addE¼Ü +( +$authÜE¼ÜSchema +, 'author'); + +219 + g$·»Á + = +Ãw + +sfFÜmF›ldSchema +( +$schema +, +nuÎ +, '¬tiþe', +¬¿y +('t™Ë' => 'symfÚy', 'authÜ' =>‡¼ay('Çme' => 'Fab›n')), +$¬tiþeE¼ÜSchema +); + +220 + g$chžd + = +$·»Á +['author']; + +221 + g$ouut + = <<< +EOF + + +222 < +ul + +þass +="error_list"> + +223 < +li +> +nÚ + +exi¡’t + +f›ld + +”rÜ + + +224 < +li +> +Id +: +hidd’ + +f›ld + +”rÜ + + +225 + +227 +EOF +; + +228 + g$t +-> +is +( +$chžd +-> +»nd”E¼Ü +(), +fix_lšeb»aks +( +$ouut +), '->renderError()„enders globalƒrrors‡sƒxpected (globalƒrrors, hidden fieldƒrrors,‚onƒxistent fieldƒrrors)'); + +231 + g$schema +-> +£tIdFÜm© +('%s_id_format_test'); + +232 + g$·»Á + = +Ãw + +sfFÜmF›ldSchema +( +$schema +, +nuÎ +, '¬tiþe', +¬¿y +('t™Ë' => 'symfÚy', 'authÜ' =>‡¼ay('Çme' => 'Fab›n')), +$¬tiþeE¼ÜSchema +); + +233 + g$t +-> +like +( +$·»Á +['authÜ']-> +»nd” +(), '/_id_format_test/', '->render() useshe…arent id format'); + + @lib/vendor/symfony/test/unit/form/sfFormTest.php + +1 + `di§bËCSRFPrÙeùiÚ +(); + +28 +$this +-> + `£tWidg‘s +( + `¬¿y +( + +29 'a' => +Ãw + + `sfWidg‘FÜmIÅutText +(), + +30 'b' => +Ãw + + `sfWidg‘FÜmIÅutText +(), + +31 'c' => +Ãw + + `sfWidg‘FÜmIÅutText +(), + +33 +$this +-> + `£tV®id©Üs +( + `¬¿y +( + +34 'a' => +Ãw + + `sfV®id©ÜSŒšg +( + `¬¿y +('min_length' => 2)), + +35 'b' => +Ãw + + `sfV®id©ÜSŒšg +( + `¬¿y +('max_length' => 3)), + +36 'c' => +Ãw + + `sfV®id©ÜSŒšg +( + `¬¿y +('max_length' => 1000)), + +38 +$this +-> + `g‘Widg‘Schema +()-> + `£tLab–s +( + `¬¿y +( + +43 +$this +-> + `g‘Widg‘Schema +()-> + `£tH–ps +( + `¬¿y +( + +49 + } +} + +51 þas  + cTe¡FÜm2 + +ex‹nds + + mFÜmTe¡ + + +53 +public + +funùiÚ + + $cÚfigu» +() + +55 +$this +-> + `di§bËCSRFPrÙeùiÚ +(); + +56 +$this +-> + `£tWidg‘s +( + `¬¿y +( + +57 'c' => +Ãw + + `sfWidg‘FÜmTex»a +(), + +58 'd' => +Ãw + + `sfWidg‘FÜmTex»a +(), + +60 +$this +-> + `£tV®id©Üs +( + `¬¿y +( + +61 'c' => +Ãw + + `sfV®id©ÜPass +(), + +62 'd' => +Ãw + + `sfV®id©ÜSŒšg +( + `¬¿y +('max_length' => 5)), + +64 +$this +-> + `g‘Widg‘Schema +()-> + `£tLab–s +( + `¬¿y +( + +68 +$this +-> + `g‘Widg‘Schema +()-> + `£tH–ps +( + `¬¿y +( + +72 +$this +-> +v®id©ÜSchema +-> + `£tP»V®id©Ü +( +Ãw + + `sfV®id©ÜPass +()); + +73 +$this +-> +v®id©ÜSchema +-> + `£tPo¡V®id©Ü +( +Ãw + + `sfV®id©ÜPass +()); + +75 + } +} + +77 þas  + cTe¡FÜm3 + +ex‹nds + + mFÜmTe¡ + + +79 +public + +funùiÚ + + $cÚfigu» +() + +81 +$this +-> + `di§bËLoÿlCSRFPrÙeùiÚ +(); + +83 + } +} + +85 þas  + cTe¡FÜm4 + +ex‹nds + + mFÜmTe¡ + + +87 +public + +funùiÚ + + $cÚfigu» +() + +89 +$this +-> + `’abËLoÿlCSRFPrÙeùiÚ +($this-> + `g‘O±iÚ +('csrf_secret')); + +91 + } +} + +93 þas  + cNum”icF›ldsFÜm + +ex‹nds + + msfFÜm + + +95 +public + +funùiÚ + + $cÚfigu» +() + +97 +$this +-> + `£tWidg‘s +( + `¬¿y +( + +98 '5' => +Ãw + + `sfWidg‘FÜmIÅutText +(), + +101 +$this +-> + `£tV®id©Üs +( + `¬¿y +( + +102 '5' => +Ãw + + `sfV®id©ÜSŒšg +(), + +105 +$this +-> +widg‘Schema +-> + `£tLab–s +( + `¬¿y +('5' => 'Ïb–'.$this-> + `g‘O±iÚ +('salt'))); + +106 +$this +-> +widg‘Schema +-> + `£tH–ps +( + `¬¿y +('5' => 'h–p'.$this-> + `g‘O±iÚ +('salt'))); + +108 + } +} + +110 + gsfFÜm +:: +di§bËCSRFPrÙeùiÚ +(); + +113 + g$t +-> +dŸg +('__construct'); + +114 + g$f + = +Ãw + +FÜmTe¡ +(); + +115 + g$t +-> +ok +( +$f +-> + $g‘V®id©ÜSchema +(è +š¡ªûof + +sfV®id©ÜSchema +, '__construct() creates‡nƒmpty validator schema'); + +116 +$t +-> + `ok +( +$f +-> + $g‘Widg‘Schema +(è +š¡ªûof + +sfWidg‘FÜmSchema +, '__construct() creates‡nƒmpty widget form schema'); + +118 +$f + = +Ãw + + `sfFÜm +( + `¬¿y +('first_name' => 'Fabien')); + +119 +$t +-> + `is +( +$f +-> + `g‘DeçuÉs +(), + `¬¿y +('first_name' => 'Fabien'), '__construct() canake‡n‡rray of default values‡s its first‡rgument'); + +121 +$f + = +Ãw + + `FÜmTe¡ +( + `¬¿y +(),‡rray(), 'secret'); + +122 +$v + = +$f +-> + `g‘V®id©ÜSchema +(); + +123 +$t +-> + `ok +( +$f +-> + `isCSRFPrÙeùed +(), '__construct()akes‡ CSRF secret‡s its second‡rgument'); + +124 +$t +-> + `is +( +$v +[ +sfFÜm +:: + `g‘CSRFF›ldName +()]-> + `g‘O±iÚ +('token'), '*secret*', '__construct()akes‡ CSRF secret‡s its second‡rgument'); + +126 +sfFÜm +:: + `’abËCSRFPrÙeùiÚ +(); + +127 +$f + = +Ãw + + `FÜmTe¡ +( + `¬¿y +(),‡¼ay(), +çl£ +); + +128 +$t +-> + `ok +(! +$f +-> + `isCSRFPrÙeùed +(), '__construct() can disablehe CSRF…rotection by…assing false‡she second‡rgument'); + +130 +$f + = +Ãw + + `FÜmTe¡ +(); + +131 +$t +-> + `ok +( +$f +-> + `isCSRFPrÙeùed +(), '__construct() uses CSRF…rotection if‚ull is…assed‡she second‡rgument‡nd it\'sƒnabled globally'); + +134 +$t +-> + `dŸg +('->getOption() ->setOption()'); + +135 +$f + = +Ãw + + `FÜmTe¡ +( + `¬¿y +(),‡rray('foo' => 'bar')); + +136 +$t +-> + `is +( +$f +-> + `g‘O±iÚ +('foo'), 'bar', '__constructakes‡n option‡rray‡s its second‡rgument'); + +137 +$f +-> + `£tO±iÚ +('bar', 'foo'); + +138 +$t +-> + `is +( +$f +-> + `g‘O±iÚ +('bar'), 'foo', '->setOption() changeshe value of‡n option'); + +139 +$t +-> + `is_d“¶y +( +$f +-> + `g‘O±iÚs +(), + `¬¿y +('foo' => 'bar', 'bar' => 'foo'), '->getOptions()„eturns‡ll options'); + +141 +sfFÜm +:: + `di§bËCSRFPrÙeùiÚ +(); + +144 +$t +-> + `dŸg +('->setDefault() ->getDefault() ->hasDefault() ->setDefaults() ->getDefaults()'); + +145 +$f + = +Ãw + + `FÜmTe¡ +(); + +146 +$f +-> + `£tDeçuÉs +( + `¬¿y +('first_name' => 'Fabien')); + +147 +$t +-> + `is +( +$f +-> + `g‘DeçuÉs +(), + `¬¿y +('first_name' => 'Fabien'), 'setDefaults() setshe form default values'); + +148 +$f +-> + `£tDeçuÉ +('last_name', 'Potencier'); + +149 +$t +-> + `is +( +$f +-> + `g‘DeçuÉs +(), + `¬¿y +('first_name' => 'Fabien', 'last_name' => 'Potencier'), 'setDefault() sets‡ default value'); + +150 +$t +-> + `is +( +$f +-> + `hasDeçuÉ +('fœ¡_Çme'), +Œue +, 'hasDefault()„eturnsrue ifhe form has‡ default value forhe given field'); + +151 +$t +-> + `is +( +$f +-> + `hasDeçuÉ +('Çme'), +çl£ +, 'hasDefault()„eturns false ifhe form does‚ot have‡ default value forhe given field'); + +152 +$t +-> + `is +( +$f +-> + `g‘DeçuÉ +('first_name'), 'Fabien', 'getDefault()„eturns‡ default value for‡ given field'); + +153 +$t +-> + `is +( +$f +-> + `g‘DeçuÉ +('Çme'), +nuÎ +, 'getDefault()„eturns‚ull ifhe form does‚ot have‡ default value for‡ given field'); + +155 +sfFÜm +:: + `’abËCSRFPrÙeùiÚ +('*mygreatsecret*'); + +156 +$f + = +Ãw + + `FÜmTe¡ +(); + +157 +$f +-> + `£tDeçuÉs +( + `¬¿y +('first_name' => 'Fabien')); + +158 +$t +-> + `is +( +$f +-> + `g‘DeçuÉ +('_c¤f_tok’'), $f-> + `g‘CSRFTok’ +('*mygreatsecret*'), '->getDefaults() keepshe CSRFoken default value'); + +160 +$f + = +Ãw + + `FÜmTe¡ +( + `¬¿y +(),‡¼ay(), +çl£ +); + +161 +$f +-> + `£tDeçuÉs +( + `¬¿y +('first_name' => 'Fabien')); + +162 +$t +-> + `is +( + `¬¿y_key_exi¡s +('_c¤f_tok’', +$f +-> + `g‘DeçuÉs +()), +çl£ +, '->setDefaults() does‚ot sethe CSRFoken if CSRF is disabled'); + +163 +sfFÜm +:: + `di§bËCSRFPrÙeùiÚ +(); + +166 +$t +-> + `dŸg +('->getName()'); + +167 +$f + = +Ãw + + `FÜmTe¡ +(); + +168 +$w + = +Ãw + + `sfWidg‘FÜmSchema +(); + +169 +$f +-> + `£tWidg‘Schema +( +$w +); + +170 +$t +-> + `ok +( +$f +-> + `g‘Name +(è==ð +çl£ +, '->getName()„eturns false ifhe‚ame format is‚ot‡n‡rray'); + +171 +$w +-> + `£tNameFÜm© +('foo_%s'); + +172 +$t +-> + `ok +( +$f +-> + `g‘Name +(è==ð +çl£ +, '->getName()„eturns false ifhe‚ame format is‚ot‡n‡rray'); + +173 +$w +-> + `£tNameFÜm© +('foo[%s]'); + +174 +$t +-> + `is +( +$f +-> + `g‘Name +(), 'foo', '->getName()„eturnshe‚ame under which user data can be„etrieved'); + +177 +$t +-> + `dŸg +('::enableCSRFProtection() ::disableCSRFProtection()'); + +178 +sfFÜm +:: + `’abËCSRFPrÙeùiÚ +(); + +179 +$f1 + = +Ãw + + `FÜmTe¡ +(); + +180 +$t +-> + `ok +( +$f1 +-> + `isCSRFPrÙeùed +(),'::enableCSRFProtection()ƒnabled CSRF…rotection for‡ll future forms'); + +181 +sfFÜm +:: + `di§bËCSRFPrÙeùiÚ +(); + +182 +$f2 + = +Ãw + + `FÜmTe¡ +(); + +183 +$t +-> + `ok +(! +$f2 +-> + `isCSRFPrÙeùed +(),'::disableCSRFProtection() disables CSRF…rotection for‡ll future forms'); + +184 +$t +-> + `ok +( +$f1 +-> + `isCSRFPrÙeùed +(),'::enableCSRFProtection()ƒnabled CSRF…rotection for‡ll future forms'); + +185 +sfFÜm +:: + `’abËCSRFPrÙeùiÚ +(); + +186 +$t +-> + `ok +(! +$f2 +-> + `isCSRFPrÙeùed +(),'::disableCSRFProtection() disables CSRF…rotection for‡ll future forms'); + +188 +$f + = +Ãw + + `FÜmTe¡ +( + `¬¿y +(),‡¼ay(), +çl£ +); + +189 +$t +-> + `ok +(! +$f +-> + `isCSRFPrÙeùed +(), '->isCSRFProtected()„eturnsrue ifhe form is CSRF…rotected'); + +191 +sfFÜm +:: + `’abËCSRFPrÙeùiÚ +('mygreatsecret'); + +192 +$f + = +Ãw + + `FÜmTe¡ +(); + +193 +$v + = +$f +-> + `g‘V®id©ÜSchema +(); + +194 +$t +-> + `is +( +$v +[ +sfFÜm +:: + `g‘CSRFF›ldName +()]-> + `g‘O±iÚ +('token'), '*mygreatsecret*', '::enableCSRFProtection() canake‡ secret‡rgument'); + +197 +$t +-> + `dŸg +('->enableLocalCSRFProtection() ->disableLocalCSRFProtection()'); + +198 +$f + = +Ãw + + `Te¡FÜm3 +(); + +199 +sfFÜm +:: + `di§bËCSRFPrÙeùiÚ +(); + +200 +$t +-> + `ok +(! +$f +-> + `isCSRFPrÙeùed +(),'->disableLocalCSRFProtection() disabled CSRF…rotection forhe current form'); + +201 +sfFÜm +:: + `’abËCSRFPrÙeùiÚ +(); + +202 +$t +-> + `ok +(! +$f +-> + `isCSRFPrÙeùed +(),'->disableLocalCSRFProtection() disabled CSRF…rotection forhe current form,ƒven ifhe global CSRF…rotection isƒnabled'); + +203 +$f + = +Ãw + + `Te¡FÜm3 +( + `¬¿y +(),‡rray(), 'foo'); + +204 +$t +-> + `ok +(! +$f +-> + `isCSRFPrÙeùed +(),'->disableLocalCSRFProtection() disabled CSRF…rotection forhe current form,ƒven‡ CSRF secret is…rovided inhe constructor'); + +205 +sfFÜm +:: + `di§bËCSRFPrÙeùiÚ +(); + +206 +$f + = +Ãw + + `Te¡FÜm4 +(); + +207 +$t +-> + `ok +( +$f +-> + `isCSRFPrÙeùed +(), '->enableLocalCSRFProtection()ƒnables CSRF…rotection when…assed‚ull‡nd global CSRF is disabled'); + +208 +$f + = +Ãw + + `Te¡FÜm4 +( + `¬¿y +(),‡rray('csrf_secret' => '**localsecret**')); + +209 +$t +-> + `ok +( +$f +-> + `isCSRFPrÙeùed +(), '->enableLocalCSRFProtection()ƒnables CSRF…rotection when…assed‡ string global CSRF is disabled'); + +212 +$t +-> + `dŸg +('::getCSRFFieldName() ::setCSRFFieldName()'); + +213 +sfFÜm +:: + `’abËCSRFPrÙeùiÚ +(); + +214 +sfFÜm +:: + `£tCSRFF›ldName +('_token_'); + +215 +$f + = +Ãw + + `FÜmTe¡ +(); + +216 +$v + = +$f +-> + `g‘V®id©ÜSchema +(); + +217 +$t +-> + `ok +( + `is£t +( +$v +['_token_']), '::setCSRFFieldName() changeshe CSRFoken field‚ame'); + +218 +$t +-> + `is +( +sfFÜm +:: + `g‘CSRFF›ldName +(), '_token_', '::getCSRFFieldName()„eturnshe CSRFoken field‚ame'); + +221 +$t +-> + `dŸg +('->isMultipart()'); + +222 +$f + = +Ãw + + `FÜmTe¡ +(); + +223 +$t +-> + `ok +(! +$f +-> + `isMuɝ¬t +(),'->isMultipart()„eturns false ifhe form does‚ot‚eed‡ multipart form'); + +224 +$f +-> + `£tWidg‘Schema +( +Ãw + + `sfWidg‘FÜmSchema +( + `¬¿y +('image' =>‚ew + `sfWidg‘FÜmIÅutFže +()))); + +225 +$t +-> + `ok +( +$f +-> + `isMuɝ¬t +(),'->isMultipart()„eturnsrue ifhe form‚eeds‡ multipart form'); + +228 +$t +-> + `dŸg +('->setValidators() ->setValidatorSchema() ->getValidatorSchema() ->setValidator() ->getValidator()'); + +229 +$f + = +Ãw + + `FÜmTe¡ +(); + +230 +$v®id©Üs + = + `¬¿y +( + +231 'fœ¡_Çme' => +Ãw + + `sfV®id©ÜPass +(), + +232 'Ï¡_Çme' => +Ãw + + `sfV®id©ÜPass +(), + +234 +$v®id©ÜSchema + = +Ãw + + `sfV®id©ÜSchema +( +$v®id©Üs +); + +235 +$f +-> + `£tV®id©ÜSchema +( +$v®id©ÜSchema +); + +236 +$t +-> + `is_d“¶y +( +$f +-> + `g‘V®id©ÜSchema +(), +$v®id©ÜSchema +, '->setValidatorSchema() setshe current validator schema'); + +237 +$f +-> + `£tV®id©Üs +( +$v®id©Üs +); + +238 +$schema + = +$f +-> + `g‘V®id©ÜSchema +(); + +239 +$t +-> + `ok +( +$schema +['fœ¡_Çme'] =ð +$v®id©Üs +['first_name'], '->setValidators() sets field validators'); + +240 +$t +-> + `ok +( +$schema +['Ï¡_Çme'] =ð +$v®id©Üs +['last_name'], '->setValidators() sets field validators'); + +241 +$f +-> + `£tV®id©Ü +('Çme', +$v3 + = +Ãw + + `sfV®id©ÜPass +()); + +242 +$t +-> + `ok +( +$f +-> + `g‘V®id©Ü +('Çme'è=ð +$v3 +, '->setValidator() sets‡ validator for‡ field'); + +245 +$t +-> + `dŸg +('->setWidgets() ->setWidgetSchema() ->getWidgetSchema()'); + +246 +$f + = +Ãw + + `FÜmTe¡ +(); + +247 +$widg‘s + = + `¬¿y +( + +248 'fœ¡_Çme' => +Ãw + + `sfWidg‘FÜmIÅutText +(), + +249 'Ï¡_Çme' => +Ãw + + `sfWidg‘FÜmIÅutText +(), + +251 +$widg‘Schema + = +Ãw + + `sfWidg‘FÜmSchema +( +$widg‘s +); + +252 +$f +-> + `£tWidg‘Schema +( +$widg‘Schema +); + +253 +$t +-> + `ok +( +$f +-> + `g‘Widg‘Schema +(è=ð +$widg‘Schema +, '->setWidgetSchema() setshe current widget schema'); + +254 +$f +-> + `£tWidg‘s +( +$widg‘s +); + +255 +$schema + = +$f +-> + `g‘Widg‘Schema +(); + +256 +$widg‘s +['fœ¡_Çme']-> + `£tP¬’t +( +$schema +); $widgets['last_name']->setParent($schema); + +257 +$t +-> + `ok +( +$schema +['fœ¡_Çme'] =ð +$widg‘s +['first_name'], '->setWidgets() sets field widgets'); + +258 +$t +-> + `ok +( +$schema +['Ï¡_Çme'] =ð +$widg‘s +['last_name'], '->setWidgets() sets field widgets'); + +259 +$f +-> + `£tWidg‘ +('Çme', +$w3 + = +Ãw + + `sfWidg‘FÜmIÅutText +()); + +260 +$w3 +-> + `£tP¬’t +( +$schema +); + +261 +$t +-> + `ok +( +$f +-> + `g‘Widg‘ +('Çme'è=ð +$w3 +, '->setWidget() sets‡ widget for‡ field'); + +264 +$t +-> + `dŸg +('ArrayAccess interface'); + +265 +$f + = +Ãw + + `FÜmTe¡ +(); + +266 +$f +-> + `£tWidg‘Schema +( +Ãw + + `sfWidg‘FÜmSchema +( + `¬¿y +( + +267 'fœ¡_Çme' => +Ãw + + `sfWidg‘FÜmIÅutText +( + `¬¿y +('default' => 'Fabien')), + +268 'Ï¡_Çme' => +Ãw + + `sfWidg‘FÜmIÅutText +(), + +269 'image' => +Ãw + + `sfWidg‘FÜmIÅutFže +(), + +271 +$f +-> + `£tV®id©ÜSchema +( +Ãw + + `sfV®id©ÜSchema +( + `¬¿y +( + +272 'fœ¡_Çme' => +Ãw + + `sfV®id©ÜPass +(), + +273 'Ï¡_Çme' => +Ãw + + `sfV®id©ÜPass +(), + +274 'image' => +Ãw + + `sfV®id©ÜPass +(), + +276 +$f +-> + `£tDeçuÉs +( + `¬¿y +( + +279 +$f +-> + `embedFÜm +('embedded', +Ãw + + `sfFÜm +()); + +280 +$t +-> + `ok +( +$f +['fœ¡_Çme'] +š¡ªûof + +sfFÜmF›ld +, '"sfForm" implementshe ArrayAccess interface'); + +281 +$t +-> + `is +( +$f +['fœ¡_Çme']-> + `»nd” +(), '', '"sfForm" implementshe ArrayAccess interface'); + +283 +Œy + + +285 +$f +['image'] = 'image'; + +286 +$t +-> + `çž +('"sfForm" ArrayAccess implementation does‚ot…ermito set‡ form field'); + +287 + } +} + +288 + $ÿtch + ( +LogicExû±iÚ + +$e +) + +290 +$t +-> + `·ss +('"sfForm" ArrayAccess implementation does‚ot…ermito set‡ form field'); + +291 + } +} + +292 + g$t +-> +ok +( +is£t +( +$f +['image']), '"sfForm" implementshe ArrayAccess interface'); + +293 +un£t +( +$f +['image']); + +294 + g$t +-> +ok +(! +is£t +( +$f +['image']), '"sfForm" implementshe ArrayAccess interface'); + +295 + g$t +-> +ok +(! +¬¿y_key_exi¡s +('image', +$f +-> +g‘DeçuÉs +()), '"sfForm" ArrayAccess implementation„emoves form defaults'); + +296 + g$v + = +$f +-> +g‘V®id©ÜSchema +(); + +297 + g$t +-> +ok +(! +is£t +( +$v +['image']), '"sfForm" ArrayAccess implementation„emoveshe widget‡ndhe validator'); + +298 + g$w + = +$f +-> +g‘Widg‘Schema +(); + +299 + g$t +-> +ok +(! +is£t +( +$w +['image']), '"sfForm" ArrayAccess implementation„emoveshe widget‡ndhe validator'); + +300 + gŒy + + +302 + g$f +['nonexistant']; + +303 + g$t +-> +çž +('"sfForm" ArrayAccess implementationhrows‡ LogicException ifhe form field does‚otƒxist'); + +305 + $ÿtch + ( +LogicExû±iÚ + +$e +) + +307 +$t +-> + `·ss +('"sfForm" ArrayAccess implementationhrows‡ LogicException ifhe form field does‚otƒxist'); + +308 + } +} + +310 +un£t +( +$f +['embedded']); + +311 + g$t +-> +ok +(! +¬¿y_key_exi¡s +('embedded', +$f +-> +g‘EmbeddedFÜms +()), '"sfForm" ArrayAccess implementation„emovesƒmbedded forms'); + +313 + g$f +-> +bšd +( +¬¿y +( + +317 +un£t +( +$f +['first_name']); + +318 + g$t +-> +is_d“¶y +( +$f +-> +g‘V®ues +(), +¬¿y +('last_name' => 'Doe'), '"sfForm" ArrayAccess implementation„emoves bound values'); + +319 + g$w +['fœ¡_Çme'] = +Ãw + +sfWidg‘FÜmIÅutText +(); + +320 + g$t +-> +is +( +$f +['fœ¡_Çme']-> +g‘V®ue +(), '', '"sfForm" ArrayAccess implementation„emovesainted values'); + +323 + g$t +-> +dŸg +('Countable interface'); + +324 + g$f + = +Ãw + +FÜmTe¡ +(); + +325 + g$f +-> +£tWidg‘Schema +( +Ãw + +sfWidg‘FÜmSchema +( +¬¿y +( + +326 'fœ¡_Çme' => +Ãw + +sfWidg‘FÜmIÅutText +( +¬¿y +('default' => 'Fabien')), + +327 'Ï¡_Çme' => +Ãw + +sfWidg‘FÜmIÅutText +(), + +328 'image' => +Ãw + +sfWidg‘FÜmIÅutFže +(), + +330 + g$t +-> +is +( +couÁ +( +$f +), 3, '"sfForm" implementshe Countable interface'); + +333 + g$t +-> +dŸg +('Iterator interface'); + +334 + g$f + = +Ãw + +FÜmTe¡ +(); + +335 + g$f +-> +£tWidg‘Schema +( +Ãw + +sfWidg‘FÜmSchema +( +¬¿y +( + +336 'fœ¡_Çme' => +Ãw + +sfWidg‘FÜmIÅutText +( +¬¿y +('default' => 'Fabien')), + +337 'Ï¡_Çme' => +Ãw + +sfWidg‘FÜmIÅutText +(), + +338 'image' => +Ãw + +sfWidg‘FÜmIÅutFže +(), + +340 +fܗch + ( +$f + +as + +$Çme + => +$v®ue +) + +342 +$v®ues +[ +$Çme +] = +$v®ue +; + +344 + g$t +-> +is +( +is£t +( +$v®ues +['fœ¡_Çme']), +Œue +, '"sfForm" implementshe Iterator interface'); + +345 + g$t +-> +is +( +is£t +( +$v®ues +['Ï¡_Çme']), +Œue +, '"sfForm" implementshe Iterator interface'); + +346 + g$t +-> +is_d“¶y +( +¬¿y_keys +( +$v®ues +), +¬¿y +('first_name', 'last_name', 'image'), '"sfForm" implementshe Iterator interface'); + +349 + g$t +-> +dŸg +('->useFields()'); + +350 + g$f + = +Ãw + +FÜmTe¡ +(); + +351 + g$f +-> +£tWidg‘Schema +( +Ãw + +sfWidg‘FÜmSchema +( +¬¿y +( + +352 'fœ¡_Çme' => +Ãw + +sfWidg‘FÜmIÅutText +(), + +353 'Ï¡_Çme' => +Ãw + +sfWidg‘FÜmIÅutText +(), + +354 'emaž' => +Ãw + +sfWidg‘FÜmIÅutText +(), + +356 + g$f +-> +u£F›lds +( +¬¿y +('first_name', 'last_name')); + +357 + g$t +-> +is +( +$f +-> +g‘Widg‘Schema +()-> +g‘Pos™iÚs +(), +¬¿y +('first_name', 'last_name'), '->useFields()„emoves‡ll fieldsƒxcepthe ones given‡s‡n‡rgument'); + +358 + g$f +-> +£tWidg‘Schema +( +Ãw + +sfWidg‘FÜmSchema +( +¬¿y +( + +359 'fœ¡_Çme' => +Ãw + +sfWidg‘FÜmIÅutText +(), + +360 'Ï¡_Çme' => +Ãw + +sfWidg‘FÜmIÅutText +(), + +361 'emaž' => +Ãw + +sfWidg‘FÜmIÅutText +(), + +363 + g$f +-> +u£F›lds +( +¬¿y +('email', 'first_name')); + +364 + g$t +-> +is +( +$f +-> +g‘Widg‘Schema +()-> +g‘Pos™iÚs +(), +¬¿y +('email', 'first_name'), '->useFields()„eordershe fields'); + +365 + g$f +-> +£tWidg‘Schema +( +Ãw + +sfWidg‘FÜmSchema +( +¬¿y +( + +366 'fœ¡_Çme' => +Ãw + +sfWidg‘FÜmIÅutText +(), + +367 'Ï¡_Çme' => +Ãw + +sfWidg‘FÜmIÅutText +(), + +368 'emaž' => +Ãw + +sfWidg‘FÜmIÅutText +(), + +370 + g$f +-> +u£F›lds +( +¬¿y +('emaž', 'fœ¡_Çme'), +çl£ +); + +371 + g$t +-> +is +( +$f +-> +g‘Widg‘Schema +()-> +g‘Pos™iÚs +(), +¬¿y +('first_name', 'email'), '->useFields() does‚ot„eorderhe fields ifhe second‡rgument is false'); + +372 + g$f +-> +£tWidg‘Schema +( +Ãw + +sfWidg‘FÜmSchema +( +¬¿y +( + +373 'id' => +Ãw + +sfWidg‘FÜmIÅutHidd’ +(), + +374 'fœ¡_Çme' => +Ãw + +sfWidg‘FÜmIÅutText +(), + +375 'Ï¡_Çme' => +Ãw + +sfWidg‘FÜmIÅutText +(), + +376 'emaž' => +Ãw + +sfWidg‘FÜmIÅutText +(), + +378 + g$f +-> +u£F›lds +( +¬¿y +('first_name', 'last_name')); + +379 + g$t +-> +is +( +$f +-> +g‘Widg‘Schema +()-> +g‘Pos™iÚs +(), +¬¿y +('first_name', 'last_name', 'id'), '->useFields() does‚ot„emove hidden fields'); + +382 + g$t +-> +dŸg +('->bind() ->isValid() ->getValues() ->isBound() ->getErrorSchema()'); + +383 + g$f + = +Ãw + +FÜmTe¡ +(); + +384 + g$f +-> +£tV®id©ÜSchema +( +Ãw + +sfV®id©ÜSchema +( +¬¿y +( + +385 'fœ¡_Çme' => +Ãw + +sfV®id©ÜSŒšg +( +¬¿y +('min_length' => 2)), + +386 'Ï¡_Çme' => +Ãw + +sfV®id©ÜSŒšg +( +¬¿y +('min_length' => 2)), + +388 + g$t +-> +ok +(! +$f +-> +isBound +(), '->isBound()„eturns false ifhe form is‚ot bound'); + +389 + g$t +-> +is +( +$f +-> +g‘V®ues +(), +¬¿y +(), '->getValues()„eturns‡nƒmpty‡rray ifhe form is‚ot bound'); + +390 + g$t +-> +ok +(! +$f +-> +isV®id +(), '->isValid()„eturns false ifhe form is‚ot bound'); + +391 + g$t +-> +ok +(! +$f +-> +hasE¼Üs +(), '->hasErrors()„eturns false ifhe form is‚ot bound'); + +393 + g$t +-> +is +( +$f +-> +g‘V®ue +('fœ¡_Çme'), +nuÎ +, '->getValue()„eturns‚ull ifhe form is‚ot bound'); + +394 + g$f +-> +bšd +( +¬¿y +('first_name' => 'Fabien', 'last_name' => 'Potencier')); + +395 + g$t +-> +ok +( +$f +-> +isBound +(), '->isBound()„eturnsrue ifhe form is bound'); + +396 + g$t +-> +is +( +$f +-> +g‘V®ues +(), +¬¿y +('first_name' => 'Fabien', 'last_name' => 'Potencier'), '->getValues()„eturns‡n‡rray of cleaned values ifhe form is bound'); + +397 + g$t +-> +ok +( +$f +-> +isV®id +(), '->isValid()„eturnsrue ifhe form…asseshe validation'); + +398 + g$t +-> +ok +(! +$f +-> +hasE¼Üs +(), '->hasErrors()„eturns false ifhe form…asseshe validation'); + +399 + g$t +-> +is +( +$f +-> +g‘V®ue +('first_name'), 'Fabien', '->getValue()„eturnshe cleaned value for‡ field‚ame ifhe form is bound'); + +400 + g$t +-> +is +( +$f +-> +g‘V®ue +('nÚ£n£'), +nuÎ +, '->getValue()„eturns‚ull when‚on-existant…aram is„equested'); + +402 + g$f +-> +bšd +( +¬¿y +()); + +403 + g$t +-> +ok +(! +$f +-> +isV®id +(), '->isValid()„eturns false ifhe form does‚ot…asshe validation'); + +404 + g$t +-> +ok +( +$f +-> +hasE¼Üs +(), '->isValid()„eturnsrue ifhe form does‚ot…asshe validation'); + +405 + g$t +-> +is +( +$f +-> +g‘V®ues +(), +¬¿y +(), '->getValues()„eturns‡nƒmpty‡rray ifhe form does‚ot…asshe validation'); + +406 + g$t +-> +is +( +$f +-> +g‘E¼ÜSchema +()-> +g‘Mes§ge +(), 'first_name [Required.]†ast_name [Required.]', '->getErrorSchema()„eturns‡nƒrror schema object with‡llƒrrors'); + +408 + g$t +-> +dŸg +('bind when field‚ames‡re‚umeric'); + +409 + g$f + = +Ãw + +FÜmTe¡ +(); + +410 + g$f +-> +£tV®id©ÜSchema +( +Ãw + +sfV®id©ÜSchema +( +¬¿y +( + +411 1 => +Ãw + +sfV®id©ÜSŒšg +( +¬¿y +('min_length' => 2)), + +412 2 => +Ãw + +sfV®id©ÜSŒšg +( +¬¿y +('min_length' => 2)), + +414 + g$f +-> +bšd +( +¬¿y +(1 => 'fabien', 2 => 'potencier')); + +415 + g$t +-> +ok +( +$f +-> +isV®id +(), '->bind() behaves correctly when field‚ames‡re‚umeric'); + +417 + g$t +-> +dŸg +('bind with files'); + +418 + g$f + = +Ãw + +FÜmTe¡ +(); + +419 + g$f +-> +£tV®id©ÜSchema +( +Ãw + +sfV®id©ÜSchema +( +¬¿y +( + +420 1 => +Ãw + +sfV®id©ÜSŒšg +( +¬¿y +('min_length' => 2)), + +421 2 => +Ãw + +sfV®id©ÜSŒšg +( +¬¿y +('min_length' => 2)), + +422 'fže' => +Ãw + +sfV®id©ÜFže +( +¬¿y +('max_size' => 2)), + +424 + g$f +-> +£tWidg‘Schema +( +Ãw + +sfWidg‘FÜmSchema +( +¬¿y +('fže' =>‚ew +sfWidg‘FÜmIÅutFže +()))); + +425 + g$f +-> +bšd +( +¬¿y +(1 => 'f', 2 => 'potencier'),‡rray( + +426 'fže' => +¬¿y +('name' => 'test1.txt', 'type' => 'text/plain', 'tmp_name' => '/tmp/test1.txt', 'error' => 0, 'size' => 100) + +428 + g$t +-> +is +( +$f +-> +g‘E¼ÜSchema +()-> +g‘Code +(), '1 [min_length] file [max_size]', '->bind() behaves correctly with files'); + +430 + gŒy + + +432 + g$f +-> +bšd +( +¬¿y +(1 => 'f', 2 => 'potencier')); + +433 + g$t +-> +çž +('->bind() second‡rgument is mandatory ifhe form is multipart'); + +435 + $ÿtch + ( +Inv®idArgum’tExû±iÚ + +$e +) + +437 +$t +-> + `·ss +('->bind() second‡rgument is mandatory ifhe form is multipart'); + +438 + } +} + +440 + g$t +-> +dŸg +('bind with files inƒmbed form'); + +441 + g$pf + = +Ãw + +FÜmTe¡ +(); + +442 + g$pf +-> +£tV®id©ÜSchema +( +Ãw + +sfV®id©ÜSchema +()); + +444 + g$ef + = +Ãw + +FÜmTe¡ +(); + +446 + g$ef +-> +£tV®id©ÜSchema +( +Ãw + +sfV®id©ÜSchema +( +¬¿y +( + +447 1 => +Ãw + +sfV®id©ÜSŒšg +( +¬¿y +('min_length' => 2)), + +448 2 => +Ãw + +sfV®id©ÜSŒšg +( +¬¿y +('min_length' => 2)), + +449 'fže' => +Ãw + +sfV®id©ÜFže +( +¬¿y +('max_size' => 2)), + +451 + g$ef +-> +£tWidg‘Schema +( +Ãw + +sfWidg‘FÜmSchema +( +¬¿y +('fže' =>‚ew +sfWidg‘FÜmIÅutFže +()))); + +452 + g$pf +-> +embedFÜm +('ef', +$ef +); + +453 + g$pf +-> +bšd +( +¬¿y +('ef' =>‡rray(1 => 'f', 2 => 'potencier')),‡rray('ef' =>‡rray( + +454 'fže' => +¬¿y +('name' => 'test1.txt', 'type' => 'text/plain', 'tmp_name' => '/tmp/test1.txt', 'error' => 0, 'size' => 100) + +456 + g$t +-> +is +( +$pf +-> +g‘E¼ÜSchema +()-> +g‘Code +(), 'ef [1 [min_length] file [max_size]]', '->bind() behaves correctly with files inƒmbed form'); + +460 + g$t +-> +dŸg +('->renderGlobalErrors()'); + +461 + g$f + = +Ãw + +FÜmTe¡ +(); + +462 + g$f +-> +£tV®id©ÜSchema +( +Ãw + +sfV®id©ÜSchema +( +¬¿y +( + +463 'id' => +Ãw + +sfV®id©ÜIÁeg” +(), + +464 'fœ¡_Çme' => +Ãw + +sfV®id©ÜSŒšg +( +¬¿y +('min_length' => 2)), + +465 'Ï¡_Çme' => +Ãw + +sfV®id©ÜSŒšg +( +¬¿y +('min_length' => 2)), + +467 + g$f +-> +£tWidg‘Schema +( +Ãw + +sfWidg‘FÜmSchema +( +¬¿y +( + +468 'id' => +Ãw + +sfWidg‘FÜmIÅutHidd’ +(), + +469 'fœ¡_Çme' => +Ãw + +sfWidg‘FÜmIÅutText +(), + +470 'Ï¡_Çme' => +Ãw + +sfWidg‘FÜmIÅutText +(), + +472 + g$f +-> +bšd +( +¬¿y +( + +477 + g$ouut + = <<< +EOF + + +478 < +ul + +þass +="error_list"> + +479 < +li +> +Id +: "dddd" +is + +nÙ + +ª + +š‹g” +. + +480 + +482 +EOF +; + +483 + g$t +-> +is +( +$f +-> +»nd”Glob®E¼Üs +(), +fix_lšeb»aks +( +$ouut +), '->renderGlobalErrors()„enders globalƒrrors‡s‡n HTML†ist'); + +486 + g$t +-> +dŸg +('->render()'); + +487 + g$f + = +Ãw + +FÜmTe¡ +( +¬¿y +('first_name' => 'Fabien', 'last_name' => 'Potencier')); + +488 + g$f +-> +£tV®id©Üs +( +¬¿y +( + +489 'id' => +Ãw + +sfV®id©ÜIÁeg” +(), + +490 'fœ¡_Çme' => +Ãw + +sfV®id©ÜSŒšg +( +¬¿y +('min_length' => 2)), + +491 'Ï¡_Çme' => +Ãw + +sfV®id©ÜSŒšg +( +¬¿y +('min_length' => 2)), + +493 + g$f +-> +£tWidg‘s +( +¬¿y +( + +494 'id' => +Ãw + +sfWidg‘FÜmIÅutHidd’ +( +¬¿y +('default' => 3)), + +495 'fœ¡_Çme' => +Ãw + +sfWidg‘FÜmIÅutText +( +¬¿y +('default' => 'Thomas')), + +496 'Ï¡_Çme' => +Ãw + +sfWidg‘FÜmIÅutText +(), + +500 + g$ouut + = <<< +EOF + + +501 < +Œ +> + +502 < +th +>< +Ïb– + ="fœ¡_Çme"> +Fœ¡ + +Çme + + +503 < +td +>< +šput + +ty³ +="‹xt" +Çme +="fœ¡_Çme" +v®ue +="Fab›n" +id +="first_name" /> + +504 + +505 < +Œ +> + +506 < +th +>< +Ïb– + ="Ï¡_Çme"> +La¡ + +Çme + + +507 < +td +>< +šput + +ty³ +="‹xt" +Çme +="Ï¡_Çme" +v®ue +="Pْc›r" +id +="last_name" /> + +508 + +510 +EOF +; + +511 + g$t +-> +is +( +$f +-> +__toSŒšg +(), +fix_lšeb»aks +( +$ouut +), '->__toString()„endershe form‡s HTML'); + +512 + g$ouut + = <<< +EOF + + +513 < +Œ +> + +514 < +th +>< +Ïb– + ="fœ¡_Çme"> +Fœ¡ + +Çme + + +515 < +td +>< +šput + +ty³ +="‹xt" +Çme +="fœ¡_Çme" +v®ue +="Fab›n" +þass +="foo" +id +="first_name" /> + +516 + +517 < +Œ +> + +518 < +th +>< +Ïb– + ="Ï¡_Çme"> +La¡ + +Çme + + +519 < +td +>< +šput + +ty³ +="‹xt" +Çme +="Ï¡_Çme" +v®ue +="Pْc›r" +id +="last_name" /> + +520 + +522 +EOF +; + +523 + g$t +-> +is +( +$f +-> +»nd” +( +¬¿y +('fœ¡_Çme' =>‡¼ay('þass' => 'foo'))), +fix_lšeb»aks +( +$ouut +), '->render()„endershe form‡s HTML'); + +524 + g$t +-> +is +(( +¡ršg +è +$f +['id'], '', '->offsetGet()„eturns‡ sfFormField'); + +525 + g$t +-> +is +(( +¡ršg +è +$f +['first_name'], '', '->offsetGet()„eturns‡ sfFormField'); + +526 + g$t +-> +is +(( +¡ršg +è +$f +['last_name'], '', '->offsetGet()„eturns‡ sfFormField'); + +529 + g$f +-> +bšd +( +¬¿y +( + +534 + g$ouut + = <<< +EOF + + +535 < +Œ +> + +536 < +th +>< +Ïb– + ="fœ¡_Çme"> +Fœ¡ + +Çme + + +537 < +td +>< +šput + +ty³ +="‹xt" +Çme +="fœ¡_Çme" +v®ue +="Fab›n" +id +="first_name" /> + +538 + +539 < +Œ +> + +540 < +th +>< +Ïb– + ="Ï¡_Çme"> +La¡ + +Çme + + +541 < +td +>< +šput + +ty³ +="‹xt" +Çme +="Ï¡_Çme" +v®ue +="Pْc›r" +id +="last_name" /> + +542 + +544 +EOF +; + +545 + g$t +-> +is +( +$f +-> +__toSŒšg +(), +fix_lšeb»aks +( +$ouut +), '->__toString()„endershe form‡s HTML'); + +546 + g$ouut + = <<< +EOF + + +547 < +Œ +> + +548 < +th +>< +Ïb– + ="fœ¡_Çme"> +Fœ¡ + +Çme + + +549 < +td +>< +šput + +ty³ +="‹xt" +Çme +="fœ¡_Çme" +v®ue +="Fab›n" +þass +="foo" +id +="first_name" /> + +550 + +551 < +Œ +> + +552 < +th +>< +Ïb– + ="Ï¡_Çme"> +La¡ + +Çme + + +553 < +td +>< +šput + +ty³ +="‹xt" +Çme +="Ï¡_Çme" +v®ue +="Pْc›r" +id +="last_name" /> + +554 + +556 +EOF +; + +557 + g$t +-> +is +( +$f +-> +»nd” +( +¬¿y +('fœ¡_Çme' =>‡¼ay('þass' => 'foo'))), +fix_lšeb»aks +( +$ouut +), '->render()„endershe form‡s HTML'); + +558 + g$t +-> +is +(( +¡ršg +è +$f +['id'], '', '->offsetGet()„eturns‡ sfFormField'); + +559 + g$t +-> +is +(( +¡ršg +è +$f +['first_name'], '', '->offsetGet()„eturns‡ sfFormField'); + +560 + g$t +-> +is +(( +¡ršg +è +$f +['last_name'], '', '->offsetGet()„eturns‡ sfFormField'); + +563 + g$t +-> +dŸg +('->renderUsing()'); + +564 + g$f + = +Ãw + +sfFÜm +(); + +565 + g$f +-> +£tWidg‘s +( +¬¿y +('Çme' => +Ãw + +sfWidg‘FÜmIÅutText +())); + +566 + g$ouut + = <<< +EOF + + +567 < +li +> + +568 < +Ïb– + ="Çme"> +Name + + +569 < +šput + +ty³ +="‹xt" +Çme +="Çme" +id +="name" /> + +570 + +572 +EOF +; + +573 + g$t +-> +is +( +$f +-> +»nd”Usšg +('li¡'), +fix_lšeb»aks +( +$ouut +), 'renderUsing()„endershe widget schema usinghe given form formatter'); + +574 + g$t +-> +is +( +$f +-> +g‘Widg‘Schema +()-> +g‘FÜmFÜm©‹rName +(), 'table', 'renderUsing() does‚ot…ersist form formatter‚ame forhe current form instance'); + +576 + g$w + = +$f +-> +g‘Widg‘Schema +(); + +577 + g$w +-> +addFÜmFÜm©‹r +('cu¡om', +Ãw + +sfWidg‘FÜmSchemaFÜm©‹rLi¡ +( +$w +)); + +578 + g$t +-> +is +( +$f +-> +»nd”Usšg +('cu¡om'), +fix_lšeb»aks +( +$ouut +), 'renderUsing()„enders‡ custom form formatter'); + +580 + gŒy + + +582 + g$f +-> +»nd”Usšg +('nonexistant'); + +583 + g$t +-> +çž +('renderUsing()hrows‡nƒxception if formatter‚ame does‚otƒxist'); + +585 + $ÿtch + ( +Inv®idArgum’tExû±iÚ + +$e +) + +587 +$t +-> + `·ss +('renderUsing()hrows‡nƒxception if formatter‚ame does‚otƒxist'); + +588 + } +} + +591 + g$t +-> +dŸg +('->renderHiddenFields()'); + +592 + g$f + = +Ãw + +sfFÜm +(); + +593 + g$f +-> +£tWidg‘s +( +¬¿y +( + +594 'id' => +Ãw + +sfWidg‘FÜmIÅutHidd’ +(), + +595 'Çme' => +Ãw + +sfWidg‘FÜmIÅutText +(), + +596 'is_admš' => +Ãw + +sfWidg‘FÜmIÅutHidd’ +(), + +598 + g$ouut + = ''; + +599 + g$t +-> +is +( +$f +-> +»nd”Hidd’F›lds +(), +$ouut +, 'renderHiddenFields()„enders‡ll hidden fields,‚o visible fields'); + +600 + g$t +-> +is +( +couÁ +( +$f +-> +g‘FÜmF›ldSchema +()), 3, 'renderHiddenFields() does‚ot modifyhe form fields'); + +602 + g$authÜ + = +Ãw + +sfFÜm +(); + +603 + g$authÜ +-> +£tWidg‘s +( +¬¿y +('id' => +Ãw + +sfWidg‘FÜmIÅutHidd’ +(), 'Çme' =>‚ew +sfWidg‘FÜmIÅutText +())); + +605 + g$com·ny + = +Ãw + +sfFÜm +(); + +606 + g$com·ny +-> +£tWidg‘s +( +¬¿y +('id' => +Ãw + +sfWidg‘FÜmIÅutHidd’ +(), 'Çme' =>‚ew +sfWidg‘FÜmIÅutText +())); + +608 + g$authÜ +-> +embedFÜm +('com·ny', +$com·ny +); + +610 + g$ouut + = ''; + +611 + g$t +-> +is +( +$authÜ +-> +»nd”Hidd’F›lds +(), +$ouut +, 'renderHiddenFields()„enders hidden fields fromƒmbedded forms'); + +613 + g$ouut + = ''; + +614 + g$t +-> +is +( +$authÜ +-> +»nd”Hidd’F›lds +( +çl£ +), +$ouut +, 'renderHiddenFields() does‚ot„ender hidden fields fromƒmbedded forms ifhe first…arameter is "false"'); + +617 + g$t +-> +dŸg +('->embedForm()'); + +619 + g$authÜ + = +Ãw + +FÜmTe¡ +( +¬¿y +('first_name' => 'Fabien')); + +620 + g$authÜ +-> +£tWidg‘Schema +( +$authÜ_widg‘_schema + = +Ãw + +sfWidg‘FÜmSchema +( +¬¿y +('fœ¡_Çme' =>‚ew +sfWidg‘FÜmIÅutText +()))); + +621 + g$authÜ +-> +£tV®id©ÜSchema +( +$authÜ_v®id©Ü_schema + = +Ãw + +sfV®id©ÜSchema +( +¬¿y +('fœ¡_Çme' =>‚ew +sfV®id©ÜSŒšg +(array('min_length' => 2))))); + +623 + g$com·ny + = +Ãw + +FÜmTe¡ +(); + +624 + g$com·ny +-> +£tWidg‘Schema +( +$com·ny_widg‘_schema + = +Ãw + +sfWidg‘FÜmSchema +( +¬¿y +('Çme' =>‚ew +sfWidg‘FÜmIÅutText +()))); + +625 + g$com·ny +-> +£tV®id©ÜSchema +( +$com·ny_v®id©Ü_schema + = +Ãw + +sfV®id©ÜSchema +( +¬¿y +('Çme' =>‚ew +sfV®id©ÜSŒšg +(array('min_length' => 2))))); + +627 + g$¬tiþe + = +Ãw + +FÜmTe¡ +(); + +628 + g$¬tiþe +-> +£tWidg‘Schema +( +$¬tiþe_widg‘_schema + = +Ãw + +sfWidg‘FÜmSchema +( +¬¿y +('t™Ë' =>‚ew +sfWidg‘FÜmIÅutText +()))); + +629 + g$¬tiþe +-> +£tV®id©ÜSchema +( +$¬tiþe_v®id©Ü_schema + = +Ãw + +sfV®id©ÜSchema +( +¬¿y +('t™Ë' =>‚ew +sfV®id©ÜSŒšg +(array('min_length' => 2))))); + +631 + g$authÜ +-> +embedFÜm +('com·ny', +$com·ny +); + +632 + g$¬tiþe +-> +embedFÜm +('authÜ', +$authÜ +); + +633 + g$v + = +$¬tiþe +-> +g‘V®id©ÜSchema +(); + +634 + g$w + = +$¬tiþe +-> +g‘Widg‘Schema +(); + +635 + g$d + = +$¬tiþe +-> +g‘DeçuÉs +(); + +637 + g$w +-> +£tNameFÜm© +('article[%s]'); + +639 + g$t +-> +ok +( +$v +['authÜ']['fœ¡_Çme'] =ð +$authÜ_v®id©Ü_schema +['first_name'], '->embedForm()ƒmbedshe validator schema'); + +641 + g$w +['authÜ']['fœ¡_Çme']-> +£tP¬’t +( +nuÎ +); + g$authÜ_widg‘_schema +['first_name']->setParent(null); + +642 + g$t +-> +ok +( +$w +['authÜ']['fœ¡_Çme'] =ð +$authÜ_widg‘_schema +['first_name'], '->embedForm()ƒmbedshe widget schema'); + +643 + g$t +-> +is +( +$d +['author']['first_name'], 'Fabien', '->embedForm() merges default values fromheƒmbedded form'); + +644 + g$t +-> +is +( +$v +['authÜ'][ +sfFÜm +:: +g‘CSRFF›ldName +()], +nuÎ +, '->embedForm()„emoveshe CSRFoken forheƒmbedded form'); + +645 + g$t +-> +is +( +$w +['authÜ'][ +sfFÜm +:: +g‘CSRFF›ldName +()], +nuÎ +, '->embedForm()„emoveshe CSRFoken forheƒmbedded form'); + +647 + g$t +-> +is +( +$w +['authÜ']-> +g’”©eName +('first_name'), 'article[author][first_name]', '->embedForm() changeshe‚ame formato„eflectheƒmbedding'); + +648 + g$t +-> +is +( +$w +['authÜ']['com·ny']-> +g’”©eName +('name'), 'article[author][company][name]', '->embedForm() changeshe‚ame formato„eflectheƒmbedding'); + +651 + g$f1 + = +Ãw + +Te¡FÜm1 +(); + +652 + g$f2 + = +Ãw + +Te¡FÜm2 +(); + +653 + g$f1 +-> +embedFÜm +('f2', +$f2 +); + +654 + g$t +-> +is +( +$f1 +['f2']['c']-> +»nd” +(), '', '->embedForm() generates‡ correct id inƒmbedded form fields'); + +655 + g$t +-> +is +( +$f1 +['f2']['c']-> +»nd”Lab– +(), '', '->embedForm() generates‡ correct†abel id correctly inƒmbedded form fields'); + +658 + g$t +-> +dŸg +('->embedFormForEach()'); + +659 + g$¬tiþe +-> +embedFÜmFÜEach +('authÜs', +$authÜ +, 2, +nuÎ +,‚uÎ, +¬¿y +('id_format' => '%s_id'),‡rray('class' => 'embedded')); + +660 + g$v + = +$¬tiþe +-> +g‘V®id©ÜSchema +(); + +661 + g$w + = +$¬tiþe +-> +g‘Widg‘Schema +(); + +662 + g$d + = +$¬tiþe +-> +g‘DeçuÉs +(); + +663 + g$w +-> +£tNameFÜm© +('article[%s]'); + +665  + g$i + = 0; $i < 2; $i++) + +667 + g$t +-> +ok +( +$v +['authÜs'][ +$i +]['fœ¡_Çme'] =ð +$authÜ_v®id©Ü_schema +['first_name'], '->embedFormForEach()ƒmbedshe validator schema'); + +669 + g$w +['authÜs'][ +$i +]['fœ¡_Çme']-> +£tP¬’t +( +nuÎ +); + g$authÜ_widg‘_schema +['first_name']->setParent(null); + +670 + g$t +-> +ok +( +$w +['authÜs'][ +$i +]['fœ¡_Çme'] =ð +$authÜ_widg‘_schema +['first_name'], '->embedFormForEach()ƒmbedshe widget schema'); + +671 + g$t +-> +is +( +$d +['authÜs'][ +$i +]['first_name'], 'Fabien', '->embedFormForEach() merges default values fromheƒmbedded forms'); + +672 + g$t +-> +is +( +$v +['authÜs'][ +$i +][ +sfFÜm +:: +g‘CSRFF›ldName +()], +nuÎ +, '->embedFormForEach()„emoveshe CSRFoken forheƒmbedded forms'); + +673 + g$t +-> +is +( +$w +['authÜs'][ +$i +][ +sfFÜm +:: +g‘CSRFF›ldName +()], +nuÎ +, '->embedFormForEach()„emoveshe CSRFoken forheƒmbedded forms'); + +676 + g$t +-> +is +( +$w +['authÜs'][0]-> +g’”©eName +('first_name'), 'article[authors][0][first_name]', '->embedFormForEach() changeshe‚ame formato„eflectheƒmbedding'); + +679 + g$t +-> +dŸg +('bindoo many values forƒmbedded forms'); + +680 + g$li¡ + = +Ãw + +FÜmTe¡ +(); + +681 + g$li¡ +-> +£tWidg‘s +( +¬¿y +('t™Ë' => +Ãw + +sfWidg‘FÜmIÅutText +())); + +682 + g$li¡ +-> +£tV®id©Üs +( +¬¿y +('t™Ë' => +Ãw + +sfV®id©ÜSŒšg +())); + +683 + g$li¡ +-> +embedFÜmFÜEach +('™ems', +þÚe + +$li¡ +, 2); + +684 + g$li¡ +-> +bšd +( +¬¿y +( + +686 '™ems' => +¬¿y +( + +687 +¬¿y +('title' => 'item 1'), + +688 +¬¿y +('title' => 'item 2'), + +689 +¬¿y +('title' => 'extra item'), + +693 + g$t +-> +i§_ok +( +$li¡ +['™ems'][0]-> +g‘E¼Ü +(), 'sfValidatorErrorSchema', '"sfFormFieldSchema" is given‡nƒrror schema when‡nƒxtraƒmbedded form is bound'); + +696 + g$li¡ +['™ems']-> +»nd” +(); + +697 + g$t +-> +·ss +('"sfFormFieldSchema"„enders when‡nƒxtraƒmbedded form is bound'); + +700 + g$t +-> +dŸg +('->getEmbeddedForms()'); + +701 + g$¬tiþe + = +Ãw + +FÜmTe¡ +(); + +702 + g$com·ny + = +Ãw + +FÜmTe¡ +(); + +703 + g$authÜ + = +Ãw + +FÜmTe¡ +(); + +704 + g$¬tiþe +-> +embedFÜm +('com·ny', +$com·ny +); + +705 + g$¬tiþe +-> +embedFÜm +('authÜ', +$authÜ +); + +706 + g$fÜms + = +$¬tiþe +-> +g‘EmbeddedFÜms +(); + +707 + g$t +-> +is +( +¬¿y_keys +( +$fÜms +), +¬¿y +('company', 'author'), '->getEmbeddedForms()„eturnsheƒmbedded forms'); + +708 + g$t +-> +is +( +$fÜms +['com·ny'], +$com·ny +, '->getEmbeddedForms()„eturnsheƒmbedded forms'); + +709 + g$t +-> +i§_ok +( +$¬tiþe +-> +g‘EmbeddedFÜm +('company'), 'FormTest', '->getEmbeddedForm()„eturn‡nƒmbedded form'); + +710 + gŒy + + +712 + g$¬tiþe +-> +g‘EmbeddedFÜm +('nonexistant'); + +713 + g$t +-> +çž +('->getEmbeddedForm()hrows‡nƒxception ifheƒmbedded form does‚otƒxist'); + +715 + $ÿtch + ( +Inv®idArgum’tExû±iÚ + +$e +) + +717 +$t +-> + `·ss +('->getEmbeddedForm()hrows‡nƒxception ifheƒmbedded form does‚otƒxist'); + +718 + } +} + +721 + g$t +-> +dŸg +('::convertFileInformation()'); + +722 + g$šput + = +¬¿y +( + +723 'fže' => +¬¿y +( + +730 'fže1' => +¬¿y +( + +738 + g$t +-> +is_d“¶y +( +sfFÜm +:: +cÚv”tFžeInfÜm©iÚ +( +$šput +), $input, '::convertFileInformation() converts $_FILESo be coherent with $_GET‡nd $_POST‚aming convention'); + +740 + g$šput + = +¬¿y +( + +741 '¬tiþe' => +¬¿y +( + +742 'Çme' => +¬¿y +( + +746 'ty³' => +¬¿y +( + +750 'tmp_Çme' => +¬¿y +( + +754 '”rÜ' => +¬¿y +( + +758 'size' => +¬¿y +( + +764 + g$ex³ùed + = +¬¿y +( + +765 '¬tiþe' => +¬¿y +( + +766 'fže1' => +¬¿y +( + +773 'fže2' => +¬¿y +( + +782 + g$t +-> +is_d“¶y +( +sfFÜm +:: +cÚv”tFžeInfÜm©iÚ +( +$šput +), +$ex³ùed +, '::convertFileInformation() converts $_FILESo be coherent with $_GET‡nd $_POST‚aming convention'); + +783 + g$t +-> +is_d“¶y +( +sfFÜm +:: +cÚv”tFžeInfÜm©iÚ +( +$ex³ùed +), $expected, '::convertFileInformation() only changeshe input‡rray if‚eeded'); + +785 + g$šput + = +¬¿y +( + +786 'fže' => +¬¿y +( + +793 '¬tiþe' => +¬¿y +( + +794 'Çme' => +¬¿y +( + +795 'Çme' => +¬¿y +( + +797 'ªÙh”' => +¬¿y +('file2' => 'test2.txt'), + +800 'ty³' => +¬¿y +( + +801 'Çme' => +¬¿y +( + +803 'ªÙh”' => +¬¿y +('file2' => 'text/plain'), + +806 'tmp_Çme' => +¬¿y +( + +807 'Çme' => +¬¿y +( + +809 'ªÙh”' => +¬¿y +('file2' => '/tmp/test2.txt'), + +812 '”rÜ' => +¬¿y +( + +813 'Çme' => +¬¿y +( + +815 'ªÙh”' => +¬¿y +('file2' => 0), + +818 'size' => +¬¿y +( + +819 'Çme' => +¬¿y +( + +821 'ªÙh”' => +¬¿y +('file2' => 200), + +826 + g$ex³ùed + = +¬¿y +( + +827 'fže' => +¬¿y +( + +834 '¬tiþe' => +¬¿y +( + +835 'Çme' => +¬¿y +( + +836 'Çme' => +¬¿y +( + +843 'ªÙh”' => +¬¿y +( + +844 'fže2' => +¬¿y +( + +855 + g$t +-> +is_d“¶y +( +sfFÜm +:: +cÚv”tFžeInfÜm©iÚ +( +$šput +), +$ex³ùed +, '::convertFileInformation() converts $_FILESo be coherent with $_GET‡nd $_POST‚aming convention'); + +856 + g$t +-> +is_d“¶y +( +sfFÜm +:: +cÚv”tFžeInfÜm©iÚ +( +$ex³ùed +), $expected, '::convertFileInformation() converts $_FILESo be coherent with $_GET‡nd $_POST‚aming convention'); + +859 + g$t +-> +dŸg +('->renderFormTag()'); + +860 + g$f + = +Ãw + +FÜmTe¡ +(); + +861 + g$t +-> +is +( +$f +-> +»nd”FÜmTag +('/url'), '', '->renderFormTag()„endershe formag'); + +862 + g$t +-> +is +( +$f +-> +»nd”FÜmTag +('/u¾', +¬¿y +('method' => 'put')), '
    ', '->renderFormTag()‡dds‡ hidden inputag ifhe method is‚ot GET or POST'); + +863 + g$f +-> +£tWidg‘Schema +( +Ãw + +sfWidg‘FÜmSchema +( +¬¿y +('image' =>‚ew +sfWidg‘FÜmIÅutFže +()))); + +864 + g$t +-> +is +( +$f +-> +»nd”FÜmTag +('/url'), '', '->renderFormTag()‡ddsheƒnctype‡ttribute ifhe form is multipart'); + +867 + g$t +-> +dŸg +('__clone()'); + +868 + g$a + = +Ãw + +FÜmTe¡ +(); + +869 + g$a +-> +£tV®id©ÜSchema +( +Ãw + +sfV®id©ÜSchema +( +¬¿y +( + +870 'fœ¡_Çme' => +Ãw + +sfV®id©ÜSŒšg +( +¬¿y +('min_length' => 2)), + +872 + g$a +-> +bšd +( +¬¿y +('first_name' => 'F')); + +873 + g$a1 + = +þÚe + +$a +; + +875 + g$t +-> +ok +( +$a1 +-> +g‘V®id©ÜSchema +(è!=ð +$a +->getValidatorSchema(), '__clone() cloneshe validator schema'); + +876 + g$t +-> +ok +( +$a1 +-> +g‘V®id©ÜSchema +(è=ð +$a +->getValidatorSchema(), '__clone() cloneshe validator schema'); + +878 + g$t +-> +ok +( +$a1 +-> +g‘Widg‘Schema +(è!=ð +$a +->getWidgetSchema(), '__clone() cloneshe widget schema'); + +879 + g$t +-> +ok +( +$a1 +-> +g‘Widg‘Schema +(è=ð +$a +->getWidgetSchema(), '__clone() cloneshe widget schema'); + +881 + g$t +-> +ok +( +$a1 +-> +g‘E¼ÜSchema +(è!=ð +$a +->getErrorSchema(), '__clone() clonesheƒrror schema'); + +882 + g$t +-> +ok +( +$a1 +-> +g‘E¼ÜSchema +()-> +g‘Mes§ge +(è=ð +$a +->getErrorSchema()->getMessage(), '__clone() clonesheƒrror schema'); + +885 + g$t +-> +dŸg +('mergeForm()'); + +887 + g$f1 + = +Ãw + +Te¡FÜm1 +(); + +888 + g$f2 + = +Ãw + +Te¡FÜm2 +(); + +889 + g$f1 +-> +m”geFÜm +( +$f2 +); + +891 + g$widg‘Schema + = +$f1 +-> +g‘Widg‘Schema +(); + +892 + g$v®id©ÜSchema + = +$f1 +-> +g‘V®id©ÜSchema +(); + +893 + g$t +-> +is +( +couÁ +( +$widg‘Schema +-> +g‘F›lds +()), 4, 'mergeForm() merges‡ widget form schema'); + +894 + g$t +-> +is +( +couÁ +( +$v®id©ÜSchema +-> +g‘F›lds +()), 4, 'mergeForm() merges‡ validator schema'); + +895 + g$t +-> +is +( +¬¿y_keys +( +$widg‘Schema +-> +g‘F›lds +()), +¬¿y +('a', 'b', 'c', 'd'), 'mergeForms() mergeshe correct widgets'); + +896 + g$t +-> +is +( +¬¿y_keys +( +$v®id©ÜSchema +-> +g‘F›lds +()), +¬¿y +('a', 'b', 'c', 'd'), 'mergeForms() mergeshe correct validators'); + +897 + g$t +-> +is +( +$widg‘Schema +-> +g‘Lab–s +(), +¬¿y +('a' => '1_a', 'b' => '1_b', 'c' => '2_c', 'd' => '2_d'), 'mergeForm() merges†abels correctly'); + +898 + g$t +-> +is +( +$widg‘Schema +-> +g‘H–ps +(), +¬¿y +('a' => '1_a', 'b' => '1_b', 'c' => '2_c', 'd' => '2_d'), 'mergeForm() merges helps correctly'); + +899 + g$t +-> +i§_ok +( +$widg‘Schema +['c'], 'sfWidgetFormTextarea', 'mergeForm() overrides original form widget'); + +900 + g$t +-> +i§_ok +( +$v®id©ÜSchema +['c'], 'sfValidatorPass', 'mergeForm() overrides original form validator'); + +901 + g$t +-> +i§_ok +( +$v®id©ÜSchema +-> +g‘P»V®id©Ü +(), 'sfValidatorPass', 'mergeForm() merges…re validator'); + +902 + g$t +-> +i§_ok +( +$v®id©ÜSchema +-> +g‘Po¡V®id©Ü +(), 'sfValidatorPass', 'mergeForm() merges…ost validator'); + +904 + gŒy + + +906 + g$f1 +-> +bšd +( +¬¿y +('a' => 'foo', 'b' => 'bar', 'd' => 'far_too_long_value')); + +907 + g$f1 +-> +m”geFÜm +( +$f2 +); + +908 + g$t +-> +çž +('mergeForm() disallows merging‡lready bound forms'); + +910 + $ÿtch + ( +LogicExû±iÚ + +$e +) + +912 +$t +-> + `·ss +('mergeForm() disallows merging‡lready bound forms'); + +913 + } +} + +915 + g$”rÜSchema + = +$f1 +-> +g‘E¼ÜSchema +(); + +916 + g$t +-> +ok +( +¬¿y_key_exi¡s +('d', +$”rÜSchema +-> +g‘E¼Üs +()), 'mergeForm() mergesƒrrors‡fter having been bound'); + +918 + g$f1 + = +Ãw + +Te¡FÜm1 +(); + +919 + g$f1 +-> +g‘Widg‘Schema +()-> +moveF›ld +('a', 'last'); + +922 +fܗch +( +$f1 + +as + +$f1Çme + => +$f1f›ld +) + +924 +$t +-> +is + ( +$f1Çme +, 'b', 'iterating on formakes in‡ccount ->moveField() operations.'); + +928 + g$f2 + = +Ãw + +Te¡FÜm2 +(); + +929 + g$f2 +-> +m”geFÜm +( +$f1 +); + +931 + g$t +-> +is_d“¶y +( +¬¿y_keys +( +$f2 +-> +g‘Widg‘Schema +()-> +g‘F›lds +()), +¬¿y +('c', 'd', 'b', 'a'), 'mergeForm() merges fields inhe correct order'); + +933 + g$f1 + = +Ãw + +Num”icF›ldsFÜm +( +¬¿y +('5' => 'default1'),‡rray('salt' => '1')); + +934 + g$f2 + = +Ãw + +Num”icF›ldsFÜm +( +¬¿y +('5' => 'default2'),‡rray('salt' => '2')); + +935 + g$f1 +-> +m”geFÜm +( +$f2 +); + +937 + g$t +-> +is_d“¶y +( +$f1 +-> +g‘DeçuÉs +(), +¬¿y +('5' => 'default2'), '->mergeForm() merges‚umeric defaults'); + +938 + g$t +-> +is_d“¶y +( +$f1 +-> +g‘Widg‘Schema +()-> +g‘Lab–s +(), +¬¿y +('5' => 'label2'), '->mergeForm() merges‚umeric†abels'); + +939 + g$t +-> +is_d“¶y +( +$f1 +-> +g‘Widg‘Schema +()-> +g‘H–ps +(), +¬¿y +('5' => 'help2'), '->mergeForm() merges‚umeric helps'); + +942 + g$t +-> +dŸg +('->getJavaScripts() ->getStylesheets()'); + +944 þas  + cMyWidg‘ + +ex‹nds + + msfWidg‘FÜm + + +946 +´Ùeùed + +funùiÚ + +cÚfigu» +( +$ÝtiÚs + = +¬¿y +(), +$©Œibu‹s + = + $¬¿y +()) + +948 +$this +-> + `addRequœedO±iÚ +('name'); + +951 +public + +funùiÚ + + `»nd” +( +$Çme +, +$v®ue + = +nuÎ +, +$©Œibu‹s + = + `¬¿y +(), +$”rÜs + = + $¬¿y +()) + +953  +nuÎ +; + +954 + } +} + +956 +public + +funùiÚ + + $g‘JavaSüts +() + +958  + `¬¿y +('/·th/to/a/'. +$this +-> + `g‘O±iÚ +('name').'.js'); + +959 + } +} + +961 +public + +funùiÚ + + $g‘StyËsh“ts +() + +963  + `¬¿y +('/·th/to/a/'. +$this +-> + `g‘O±iÚ +('name').'.css' => 'all'); + +964 + } +} + +967 + g$f + = +Ãw + +FÜmTe¡ +(); + +968 + g$f +-> +£tWidg‘s +( +¬¿y +( + +969 'foo' => +Ãw + +MyWidg‘ +( +¬¿y +('name' => 'foo')), + +970 'b¬' => +Ãw + +MyWidg‘ +( +¬¿y +('name' => 'bar')), + +972 + g$t +-> +is +( +$f +-> +g‘JavaSüts +(), +¬¿y +('/path/to/a/foo.js', '/path/to/a/bar.js'), '->getJavaScripts()„eturnshe stylesheets of‡ll widgets'); + +973 + g$t +-> +is +( +$f +-> +g‘StyËsh“ts +(), +¬¿y +('/path/to/a/foo.css' => 'all', '/path/to/a/bar.css' => 'all'), '->getStylesheets()„eturnshe JavaScripts of‡ll widgets'); + +976 + g$t +-> +dŸg +('->getFormFieldSchema()'); + +978 + g$f + = +Ãw + +Num”icF›ldsFÜm +( +¬¿y +('5' => 'default')); + +979 + g$t +-> +is_d“¶y +( +$f +-> +g‘FÜmF›ldSchema +()-> +g‘V®ue +(), +¬¿y +('5' => 'default'), '->getFormFieldSchema() includes default‚umeric fields'); + +980 + g$f +-> +bšd +( +¬¿y +('5' => 'bound')); + +981 + g$t +-> +is_d“¶y +( +$f +-> +g‘FÜmF›ldSchema +()-> +g‘V®ue +(), +¬¿y +('5' => 'bound'), '->getFormFieldSchema() includes bound‚umeric fields'); + + @lib/vendor/symfony/test/unit/generator/sfGeneratorTest.php + +1 +dŸg +('->isPartial() ->isComponent() ->isLink()'); + +18 + g$f›ld + = +Ãw + +sfMod–G’”©ÜCÚfigu¿tiÚF›ld +('my_f›ld', +¬¿y +()); + +19 + g$t +-> +is +( +$f›ld +-> +isP¬tŸl +(), +çl£ +, '->isPartial() defaultso false'); + +20 + g$t +-> +is +( +$f›ld +-> +isCompڒt +(), +çl£ +, '->isComponent() defaultso false'); + +21 + g$t +-> +is +( +$f›ld +-> +isLšk +(), +çl£ +, '->isLink() defaultso false'); + +23 + g$f›ld + = +Ãw + +sfMod–G’”©ÜCÚfigu¿tiÚF›ld +('my_f›ld', +¬¿y +('flag' => '_')); + +24 + g$t +-> +is +( +$f›ld +-> +isP¬tŸl +(), +Œue +, '->isPartial()„eturnsrue if flag is "_"'); + +25 + g$t +-> +is +( +$f›ld +-> +isCompڒt +(), +çl£ +, '->isComponent() defaultso false'); + +26 + g$t +-> +is +( +$f›ld +-> +isLšk +(), +çl£ +, '->isLink() defaultso false'); + +28 + g$f›ld + = +Ãw + +sfMod–G’”©ÜCÚfigu¿tiÚF›ld +('my_f›ld', +¬¿y +('flag' => '~')); + +29 + g$t +-> +is +( +$f›ld +-> +isP¬tŸl +(), +çl£ +, '->isPartial() defaultso false'); + +30 + g$t +-> +is +( +$f›ld +-> +isCompڒt +(), +Œue +, '->isComponent()„eturnsrue if flag is "~"'); + +31 + g$t +-> +is +( +$f›ld +-> +isLšk +(), +çl£ +, '->isLink() defaultso false'); + +33 + g$f›ld + = +Ãw + +sfMod–G’”©ÜCÚfigu¿tiÚF›ld +('my_f›ld', +¬¿y +('flag' => '=')); + +34 + g$t +-> +is +( +$f›ld +-> +isP¬tŸl +(), +çl£ +, '->isPartial() defaultso false'); + +35 + g$t +-> +is +( +$f›ld +-> +isCompڒt +(), +çl£ +, '->isComponent() defaultso false'); + +36 + g$t +-> +is +( +$f›ld +-> +isLšk +(), +Œue +, '->isLink()„eturnsrue if flag is "="'); + + @lib/vendor/symfony/test/unit/helper/AssetHelperTest.php + +1 +»ÏtiveU¾RoÙ +; + +29 +public + +funùiÚ + + $isSecu» +() + +31  +çl£ +; + +32 + } +} + +34 +public + +funùiÚ + + $g‘Ho¡ +() + +37 + } +} + +40 þas  + cmyRe¥Ú£ + +ex‹nds + + msfWebRe¥Ú£ + + +42 +public + +funùiÚ + + $»£tAs£ts +() + +44 +$this +-> +javasüts + = + `¬¿y_combše +($this-> +pos™iÚs +, + `¬¿y_fžl +(0, + `couÁ +($this->pos™iÚs), + `¬¿y +())); + +45 +$this +-> +¡yËsh“ts + = + `¬¿y_combše +($this-> +pos™iÚs +, + `¬¿y_fžl +(0, + `couÁ +($this->pos™iÚs), + `¬¿y +())); + +47 + } +} + +49 þas  + cmyCڌÞËr + + +51 +public + +funùiÚ + +g’U¾ +( +$·¿m‘”s + = +¬¿y +(), +$absÞu‹ + = +çl£ +) + +53  ( +$absÞu‹ + ? '/' : ''). +$·¿m‘”s +; + +57 + g$cڋxt + = +sfCڋxt +:: +g‘In¡ªû +( +¬¿y +('request' => 'myRequest', 'response' => 'myResponse', 'controller' => 'myController')); + +60 + g$t +-> +dŸg +('_compute_public_path'); + +61 + g$t +-> +is +( +_compu‹_public_·th +('foo', 'css', 'css'), '/css/foo.css', '_compute_public_path() converts‡ stringo‡ web…ath'); + +62 + g$t +-> +is +( +_compu‹_public_·th +('foo', 'css', 'css', +Œue +), 'http://localhost/css/foo.css', '_compute_public_path() can create‡bsolute†inks'); + +63 + g$t +-> +is +( +_compu‹_public_·th +('foo.css2', 'css', 'css'), '/css/foo.css2', '_compute_public_path() does‚ot‡dd suffix if one‡lreadyƒxists'); + +64 + g$cڋxt +-> + g»que¡ +-> + g»ÏtiveU¾RoÙ + = '/bar'; + +65 + g$t +-> +is +( +_compu‹_public_·th +('foo', 'css', 'css'), '/bar/css/foo.css', '_compute_public_path()akes into‡ccounthe„elative url„oot configuration'); + +66 + g$cڋxt +-> + g»que¡ +-> + g»ÏtiveU¾RoÙ + = ''; + +67 + g$t +-> +is +( +_compu‹_public_·th +('foo.css?foo=bar', 'css', 'css'), '/css/foo.css?foo=bar', '_compute_public_path()akes into‡ccount query strings'); + +68 + g$t +-> +is +( +_compu‹_public_·th +('foo?foo=bar', 'css', 'css'), '/css/foo.css?foo=bar', '_compute_public_path()akes into‡ccount query strings'); + +71 + g$t +-> +dŸg +('image_tag()'); + +72 + g$t +-> +is +( +image_g +(''), '', 'image_tag()„eturns‚othing when called without‡rguments'); + +73 + g$t +-> +is +( +image_g +('test'), '', 'image_tag()akes‡n image‚ame‡s its first‡rgument'); + +74 + g$t +-> +is +( +image_g +('test.png'), '', 'image_tag() canake‡n image‚ame with‡nƒxtension'); + +75 + g$t +-> +is +( +image_g +('/images/test.png'), '', 'image_tag() canake‡n‡bsolute image…ath'); + +76 + g$t +-> +is +( +image_g +('/images/test'), '', 'image_tag() canake‡n‡bsolute image…ath withoutƒxtension'); + +77 + g$t +-> +is +( +image_g +('test.jpg'), '', 'image_tag() canake‡n image‚ame with‡nƒxtension'); + +78 + g$t +-> +is +( +image_g +('‹¡', +¬¿y +('alt' => 'Foo')), '', 'image_tag()akes‡n‡rray of options‡s its second‡rgumento override‡lt'); + +79 + g$t +-> +is +( +image_g +('‹¡', +¬¿y +('size' => '10x10')), '', 'image_tag()akes‡ size option'); + +80 + g$t +-> +is +( +image_g +('‹¡', +¬¿y +('absÞu‹' => +Œue +)), '', 'image_tag() canake‡n‡bsolute…arameter'); + +81 + g$t +-> +is +( +image_g +('‹¡', +¬¿y +('class' => 'bar')), '', 'image_tag()akes whatever option you want'); + +82 + g$t +-> +is +( +image_g +('‹¡', +¬¿y +('alt_title' => 'Foo')), '', 'image_tag()akes‡n‡rray of options‡s its second‡rgumento create‡lt‡nditle'); + +83 + g$t +-> +is +( +image_g +('‹¡', +¬¿y +('alt_title' => 'Foo', 'title' => 'Bar')), '', 'image_tag()akes‡n‡rray of options‡s its second‡rgumento create‡lt‡nditle'); + +86 + g$t +-> +dŸg +('stylesheet_tag()'); + +87 + g$t +-> +is +( +¡yËsh“t_g +('style'), + +90 + g$t +-> +is +( +¡yËsh“t_g +('random.styles', '/css/stylish'), + +94 + g$t +-> +is +( +¡yËsh“t_g +('¡yË', +¬¿y +('media' => 'all')), + +97 + g$t +-> +is +( +¡yËsh“t_g +('¡yË', +¬¿y +('absÞu‹' => +Œue +)), + +100 + g$t +-> +is +( +¡yËsh“t_g +('¡yË', +¬¿y +('¿w_Çme' => +Œue +)), + +103 + g$t +-> +is +( +¡yËsh“t_g +('¡yË', +¬¿y +('condition' => 'IE 6')), + +108 + g$t +-> +dŸg +('javascript_include_tag()'); + +109 + g$t +-> +is +( +javasüt_šþude_g +('xmlhr'), + +112 + g$t +-> +is +( +javasüt_šþude_g +('common.javascript', '/elsewhere/cools'), + +116 + g$t +-> +is +( +javasüt_šþude_g +('xmlhr', +¬¿y +('absÞu‹' => +Œue +)), + +119 + g$t +-> +is +( +javasüt_šþude_g +('xmlhr', +¬¿y +('¿w_Çme' => +Œue +)), + +122 + g$t +-> +is +( +javasüt_šþude_g +('xmlhr', +¬¿y +('defer' => 'defer')), + +125 + g$t +-> +is +( +javasüt_šþude_g +('xmlhr', +¬¿y +('condition' => 'IE 6')), + +130 + g$t +-> +dŸg +('javascript_path()'); + +131 + g$t +-> +is +( +javasüt_·th +('xmlhr'), '/js/xmlhr.js', 'javascript_path() decorates‡„elative filename with js dir‚ame‡ndƒxtension'); + +132 + g$t +-> +is +( +javasüt_·th +('/xmlhr'), '/xmlhr.js', 'javascript_path() does‚ot decorate‡bsolute file‚ames with js dir‚ame'); + +133 + g$t +-> +is +( +javasüt_·th +('xmlhr.foo'), '/js/xmlhr.foo', 'javascript_path() does‚ot decorate file‚ames withƒxtension with .js'); + +134 + g$t +-> +is +( +javasüt_·th +('xmlhr.foo', +Œue +), 'http://localhost/js/xmlhr.foo', 'javascript_path()‡ccepts‡ second…arametero output‡n‡bsolute„esource…ath'); + +137 + g$t +-> +dŸg +('stylesheet_path()'); + +138 + g$t +-> +is +( +¡yËsh“t_·th +('style'), '/css/style.css', 'stylesheet_path() decorates‡„elative filename with css dir‚ame‡ndƒxtension'); + +139 + g$t +-> +is +( +¡yËsh“t_·th +('/style'), '/style.css', 'stylesheet_path() does‚ot decorate‡bsolute file‚ames with css dir‚ame'); + +140 + g$t +-> +is +( +¡yËsh“t_·th +('style.foo'), '/css/style.foo', 'stylesheet_path() does‚ot decorate file‚ames withƒxtension with .css'); + +141 + g$t +-> +is +( +¡yËsh“t_·th +('¡yË.foo', +Œue +), 'http://localhost/css/style.foo', 'stylesheet_path()‡ccepts‡ second…arametero output‡n‡bsolute„esource…ath'); + +144 + g$t +-> +dŸg +('image_path()'); + +145 + g$t +-> +is +( +image_·th +('img'), '/images/img.png', 'image_path() decorates‡„elative filename with images dir‚ame‡nd…ngƒxtension'); + +146 + g$t +-> +is +( +image_·th +('/img'), '/img.png', 'image_path() does‚ot decorate‡bsolute file‚ames with images dir‚ame'); + +147 + g$t +-> +is +( +image_·th +('img.jpg'), '/images/img.jpg', 'image_path() does‚ot decorate file‚ames withƒxtension with .png'); + +148 + g$t +-> +is +( +image_·th +('img.jpg', +Œue +), 'http://localhost/images/img.jpg', 'image_path()‡ccepts‡ second…arametero output‡n‡bsolute„esource…ath'); + +151 + g$t +-> +dŸg +('use_javascript() get_javascripts()'); + +152 +u£_javasüt +('xmlhr'); + +153 + g$t +-> +is +( +g‘_javasüts +(), + +156 +u£_javasüt +('xmlhr', '', +¬¿y +('¿w_Çme' => +Œue +)); + +157 + g$t +-> +is +( +g‘_javasüts +(), + +160 +u£_javasüt +('xmlhr', '', +¬¿y +('absÞu‹' => +Œue +)); + +161 + g$t +-> +is +( +g‘_javasüts +(), + +164 +u£_javasüt +('xmlhr'); + +165 +u£_javasüt +('xmlhr2'); + +166 + g$t +-> +is +( +g‘_javasüts +(), + +171 + g$t +-> +dŸg +('use_stylesheet() get_stylesheets()'); + +172 +u£_¡yËsh“t +('style'); + +173 + g$t +-> +is +( +g‘_¡yËsh“ts +(), + +176 +u£_¡yËsh“t +('¡yË', '', +¬¿y +('¿w_Çme' => +Œue +)); + +177 + g$t +-> +is +( +g‘_¡yËsh“ts +(), + +180 +u£_¡yËsh“t +('¡yË', '', +¬¿y +('absÞu‹' => +Œue +)); + +181 + g$t +-> +is +( +g‘_¡yËsh“ts +(), + +184 +u£_¡yËsh“t +('style'); + +185 +u£_¡yËsh“t +('style2'); + +186 + g$t +-> +is +( +g‘_¡yËsh“ts +(), + +191 + g$t +-> +dŸg +('_dynamic_path()'); + +192 + g$t +-> +is +( +_dyÇmic_·th +('module/action', 'js'), 'module/action?sf_format=js', '_dynamic_path() converts‡n internal URIo‡ URL'); + +193 + g$t +-> +is +( +_dyÇmic_·th +('module/action?key=value', 'js'), 'module/action?key=value&sf_format=js', '_dynamic_path() converts‡n internal URIo‡ URL'); + +194 + g$t +-> +is +( +_dyÇmic_·th +('moduË/aùiÚ', 'js', +Œue +), '/module/action?sf_format=js', '_dynamic_path() converts‡n internal URIo‡ URL'); + +197 + g$t +-> +dŸg +('dynamic_javascript_include_tag()'); + +198 + g$t +-> +is +( +dyÇmic_javasüt_šþude_g +('module/action'), ''."\n", 'dynamic_javascript_include_tag()„eturns‡ag„elativeohe given‡ction'); + +199 + g$t +-> +is +( +dyÇmic_javasüt_šþude_g +('moduË/aùiÚ', +Œue +), ''."\n", 'dynamic_javascript_include_tag()akes‡n‡bsolute boolean‡s its second‡rgument'); + +200 + g$t +-> +is +( +dyÇmic_javasüt_šþude_g +('moduË/aùiÚ', +Œue +, +¬¿y +('class' => 'foo')), ''."\n", 'dynamic_javascript_include_tag()akes‡n‡rray of HTML‡ttributes‡s itshird‡rgument'); + +202 + g$cڋxt +-> + g»¥Ú£ + = +Ãw + +myRe¥Ú£ +( +$cڋxt +-> +g‘Ev’tDi¥©ch” +()); + +205 + g$t +-> +dŸg +('use_dynamic_javascript()'); + +206 +u£_dyÇmic_javasüt +('module/action'); + +207 + g$t +-> +is +( +g‘_javasüts +(), + +213 + g$t +-> +dŸg +('use_dynamic_stylesheet()'); + +214 +u£_dyÇmic_¡yËsh“t +('module/action'); + +215 + g$t +-> +is +( +g‘_¡yËsh“ts +(), + +220 þas  + cMyFÜm + +ex‹nds + + msfFÜm + + +222 +public + +funùiÚ + + $g‘StyËsh“ts +() + +224  + `¬¿y +('/path/to/a/foo.css' => 'all', '/path/to/a/bar.css' => 'print'); + +227 +public + +funùiÚ + + $g‘JavaSüts +() + +229  + `¬¿y +('/path/to/a/foo.js', '/path/to/a/bar.js'); + +230 + } +} + +234 + g$t +-> +dŸg +('get_javascripts_for_form() get_stylesheets_for_form()'); + +235 + g$fÜm + = +Ãw + +MyFÜm +(); + +236 + g$ouut + = <<< +EOF + + +237 < +süt + +ty³ +="‹xt/javasüt" +¤c +="/path/to/a/foo.js"> + +238 < +süt + +ty³ +="‹xt/javasüt" +¤c +="/path/to/a/bar.js"> + +240 +EOF +; + +241 + g$t +-> +is +( +g‘_javasüts_fÜ_fÜm +( +$fÜm +), +fix_lšeb»aks +( +$ouut +), 'get_javascripts_for_form()„eturns scriptags'); + +242 + g$ouut + = <<< +EOF + + +243 < +lšk + +»l +="¡yËsh“t" +ty³ +="‹xt/css" +medŸ +="®l" +h»f +="/path/to/a/foo.css" /> + +244 < +lšk + +»l +="¡yËsh“t" +ty³ +="‹xt/css" +medŸ +="´št" +h»f +="/path/to/a/bar.css" /> + +246 +EOF +; + +247 + g$t +-> +is +( +g‘_¡yËsh“ts_fÜ_fÜm +( +$fÜm +), +fix_lšeb»aks +( +$ouut +), 'get_stylesheets_for_form()„eturns†inkags'); + +250 + g$t +-> +dŸg +('use_javascripts_for_form() use_stylesheets_for_form()'); + +252 + g$»¥Ú£ + = +sfCڋxt +:: +g‘In¡ªû +()-> +g‘Re¥Ú£ +(); + +253 + g$fÜm + = +Ãw + +MyFÜm +(); + +255 + g$»¥Ú£ +-> +»£tAs£ts +(); + +256 +u£_¡yËsh“ts_fÜ_fÜm +( +$fÜm +); + +257 + g$t +-> +is_d“¶y +( +$»¥Ú£ +-> +g‘StyËsh“ts +(), +¬¿y +('/path/to/a/foo.css' =>‡rray('media' => 'all'), '/path/to/a/bar.css' =>‡rray('media' => 'print')), 'use_stylesheets_for_form()‡dds stylesheetsohe„esponse'); + +259 + g$»¥Ú£ +-> +»£tAs£ts +(); + +260 +u£_javasüts_fÜ_fÜm +( +$fÜm +); + +261 + g$t +-> +is_d“¶y +( +$»¥Ú£ +-> +g‘JavaSüts +(), +¬¿y +('/path/to/a/foo.js' =>‡rray(), '/path/to/a/bar.js' =>‡rray()), 'use_javascripts_for_form()‡dds javascriptsohe„esponse'); + +264 + g$t +-> +dŸg +('Custom‡sset…ath handling'); + +266 + gsfCÚfig +:: +£t +('sf_web_js_dir_name', 'static/js'); + +267 + g$t +-> +is +( +javasüt_·th +('xmlhr'), '/static/js/xmlhr.js', 'javascript_path() decorates‡„elative filename with js dir‚ame‡ndƒxtension with custom js dir'); + +268 + g$t +-> +is +( +javasüt_šþude_g +('xmlhr'), + +272 + gsfCÚfig +:: +£t +('sf_web_css_dir_name', 'static/css'); + +273 + g$t +-> +is +( +¡yËsh“t_·th +('style'), '/static/css/style.css', 'stylesheet_path() decorates‡„elative filename with css dir‚ame‡ndƒxtension with custom css dir'); + +274 + g$t +-> +is +( +¡yËsh“t_g +('style'), + +278 + gsfCÚfig +:: +£t +('sf_web_images_dir_name', 'static/img'); + +279 + g$t +-> +is +( +image_·th +('img'), '/static/img/img.png', 'image_path() decorates‡„elative filename with images dir‚ame‡nd…ngƒxtension with custom images dir'); + +280 + g$t +-> +is +( +image_g +('test'), '', 'image_tag()akes‡n image‚ame‡s its first‡rgument'); + + @lib/vendor/symfony/test/unit/helper/DateHelperTest.php + +1 +cuÉu» +; + +24 + } +} + +26 + gsfCÚfig +:: +£t +('sf_charset', 'utf-8'); + +28 + g$cڋxt + = +sfCڋxt +:: +g‘In¡ªû +( +¬¿y +('user' => 'sfUser')); + +30 +»quœe_Úû +( +dœÇme +( +__FILE__ +).'/../../../lib/helper/UrlHelper.php'); + +31 +»quœe_Úû +( +dœÇme +( +__FILE__ +).'/../../../lib/helper/TagHelper.php'); + +32 +»quœe_Úû +( +dœÇme +( +__FILE__ +).'/../../../lib/helper/DateHelper.php'); + +35 + g$now + = +time +(); + +36 + g$t +-> +dŸg +('time¡am°u£d f܁e¡šg: '. +$now +); + +39 + g$t +-> +dŸg +('distance_of_time_in_words()'); + +40 + g$msg + = 'distance_of_time_in_words() format‡ distance ofime in words!'; + +41 + g$t +-> +is +( +di¡ªû_of_time_š_wÜds +( +$now + - 2, $now), 'Ës thª‡ mšu‹', +$msg +); + +42 + g$t +-> +is +( +di¡ªû_of_time_š_wÜds +( +$now + - 8, $now), 'Ës thª‡ mšu‹', +$msg +); + +43 + g$t +-> +is +( +di¡ªû_of_time_š_wÜds +( +$now + - 13, $now), 'Ës thª‡ mšu‹', +$msg +); + +44 + g$t +-> +is +( +di¡ªû_of_time_š_wÜds +( +$now + - 25, $now), 'Ës thª‡ mšu‹', +$msg +); + +45 + g$t +-> +is +( +di¡ªû_of_time_š_wÜds +( +$now + - 49, $now), 'Ës thª‡ mšu‹', +$msg +); + +46 + g$t +-> +is +( +di¡ªû_of_time_š_wÜds +( +$now + - 60, $now, +Œue +), '1 mšu‹', +$msg +); + +48 + g$t +-> +is +( +di¡ªû_of_time_š_wÜds +( +$now + - 2, $now, +Œue +), 'Ës thª 5 secÚds', +$msg +); + +49 + g$t +-> +is +( +di¡ªû_of_time_š_wÜds +( +$now + - 8, $now, +Œue +), 'Ës thª 10 secÚds', +$msg +); + +50 + g$t +-> +is +( +di¡ªû_of_time_š_wÜds +( +$now + - 13, $now, +Œue +), 'Ës thª 20 secÚds', +$msg +); + +51 + g$t +-> +is +( +di¡ªû_of_time_š_wÜds +( +$now + - 25, $now, +Œue +), 'h®à¨mšu‹', +$msg +); + +52 + g$t +-> +is +( +di¡ªû_of_time_š_wÜds +( +$now + - 49, $now, +Œue +), 'Ës thª‡ mšu‹', +$msg +); + +53 + g$t +-> +is +( +di¡ªû_of_time_š_wÜds +( +$now + - 60, $now, +Œue +), '1 mšu‹', +$msg +); + +55 + g$t +-> +is +( +di¡ªû_of_time_š_wÜds +( +$now + - 10 * 60, $now), '10 mšu‹s', +$msg +); + +56 + g$t +-> +is +( +di¡ªû_of_time_š_wÜds +( +$now + - 50 * 60, $now), 'abouˆ1 hour', +$msg +); + +58 + g$t +-> +is +( +di¡ªû_of_time_š_wÜds +( +$now + - 3 * 3600, $now), 'abouˆ3 hours', +$msg +); + +59 + g$t +-> +is +( +di¡ªû_of_time_š_wÜds +( +$now + - 25 * 3600, $now), '1 day', +$msg +); + +61 + g$t +-> +is +( +di¡ªû_of_time_š_wÜds +( +$now + - 4 * 86400, $now), '4 days', +$msg +); + +62 + g$t +-> +is +( +di¡ªû_of_time_š_wÜds +( +$now + - 35 * 86400, $now), 'abouˆ1 mÚth', +$msg +); + +63 + g$t +-> +is +( +di¡ªû_of_time_š_wÜds +( +$now + - 75 * 86400, $now), '3 mÚths', +$msg +); + +65 + g$t +-> +is +( +di¡ªû_of_time_š_wÜds +( +$now + - 370 * 86400, $now), 'abouˆ1 y—r', +$msg +); + +66 + g$t +-> +is +( +di¡ªû_of_time_š_wÜds +( +$now + - 4 * 370 * 86400, $now), 'ov” 4 y—rs', +$msg +); + +67 + g$t +-> +is +( +di¡ªû_of_time_š_wÜds +( +$now + - 1000 * 86400, $now), 'ov” 2 y—rs', +$msg +); + +70 + g$t +-> +dŸg +('format_date()'); + +71 + g$cڋxt +-> + gu£r +-> + gcuÉu» + = 'fr'; + +72 + g$t +-> +is +( +fÜm©_d©e +( +time +()), +d©e +('d/m/y'), 'format_date() format‡‚umerical date‡ccordingohe user culture'); + +73 + g$t +-> +is +( +fÜm©_d©e +( +d©e +('Y-m-d')), date('d/m/y'), 'format_date() format‡ string date‡ccordingohe user culture'); + +74 + g$t +-> +is +( +fÜm©_d©e +( +d©e +('y-m-d')), date('d/m/y'), 'format_date() format‡ string date withwo digit year‡ccordingohe user culture'); + +75 + g$t +-> +is +( +fÜm©_d©e +('1789-07-14'), '14/07/89', 'format_date() formats…re-epoch dates'); + +77 + g$cڋxt +-> + gu£r +-> + gcuÉu» + = 'en'; + +78 + g$t +-> +is +( +fÜm©_d©e +( +$now +, 'F'), +d©e +('F j, Y g:i:s A', $now).' '.date('T', $now), 'format_date()akes‡ format string‡s its second‡rgument'); + +80 + g$cڋxt +-> + gu£r +-> + gcuÉu» + = 'fr'; + +81 + g$t +-> +is +( +fÜm©_d©e +( +$now +, 'F', '’'), +d©e +('F j, Y g:i:s A', $now).' '.date('T', $now), 'format_date()akes‡ culture‡s itshird‡rgument'); + +84 + g$t +-> +dŸg +('format_datetime()'); + +85 + g$cڋxt +-> + gu£r +-> + gcuÉu» + = 'en'; + +86 + g$t +-> +is +( +fÜm©_d©‘ime +( +$now +), +d©e +('F j, Y g:i:s A', $now).' '.date('T', $now), 'format_datetime() format‡‚umerical dateime‡ccordingohe user culture'); + +87 + g$t +-> +is +( +fÜm©_d©‘ime +( +d©e +('Y-m-d', +$now +)), date('F j, Y', $now).' 12:00:00 AM '.date('T', $now), 'format_datetime() format‡ string dateime‡ccordingohe user culture'); + +88 + g$t +-> +is +( +fÜm©_d©‘ime +( +d©e +('Y-m-d H:i:s', +$now +), 'f'), date('F j, Y g:i A', $now), 'formatsimestamps correctly'); + +90 + g$t +-> +dŸg +('sfDateFormat'); + +91 + g$df + = +Ãw + +sfD©eFÜm© +('en_US'); + +92 + g$t +-> +is +( +$df +-> +fÜm© +('7/14/1789', 'i', 'd'), '1789-07-14', 'pre-epoch date fromƒn_USo iso'); + +93 + g$t +-> +is +( +$df +-> +fÜm© +('7/14/1789 14:29', 'I', $df-> +g‘IÅutP©‹º +('g')), '1789-07-14 14:29:00', 'pre-epoch date-time fromƒn_USo iso with getInputPattern()'); + +94 + g$df + = +Ãw + +sfD©eFÜm© +('fr'); + +95 + g$t +-> +is +( +$df +-> +fÜm© +( +d©e +('d/m/y', +$now +), 'i', 'd'), date('Y-m-d', $now), 'formatwo digit year from fro iso'); + +97 + g$cuÉu»s + = +sfCuÉu»Info +:: +g‘CuÉu»s +(); + +98 + $fܗch + ( +$cuÉu»s + +as + +$cuÉu» +) + +100 ià( +sfCuÉu»Info +:: + `v®idCuÉu» +( +$cuÉu» +)) + +102 +$df + = +Ãw + + `sfD©eFÜm© +( +$cuÉu» +); + +103 +$shÜtD©e + = +$df +-> + `fÜm© +( +$now +, 'd'); + +104 +$t +-> + `is +( +$df +-> + `fÜm© +( +$shÜtD©e +, 'i', 'd'), + `d©e +('Y-m-d', +$now +), + `¥rštf +('"%s": cÚv”siÚ "d"Ø"i"', +$cuÉu» +)); + +105 +$d©eTime + = +$df +-> + `fÜm© +( +$now +, $df-> + `g‘IÅutP©‹º +('g')); + +106 +$t +-> + `is +( +$df +-> + `fÜm© +( +$d©eTime +, 'I', $df-> + `g‘IÅutP©‹º +('g')), + `d©e +('Y-m-d H:i:', +$now +).'00', + `¥rštf +('"%s": CÚv”siÚ "g"Ø"I"', +$cuÉu» +)); + +108 + } +} + + @lib/vendor/symfony/test/unit/helper/EscapingHelperTest.php + +1 +dŸg +('esc_entities()'); + +21 + g$t +-> +is +( +esc_’t™›s +(10), 10, 'esc_entities() does‚otƒscape integers'); + +22 + g$t +-> +is +( +esc_’t™›s +( +çl£ +), false, 'esc_entities() does‚otƒscape booleans'); + +23 + g$t +-> +is +( +esc_’t™›s +('foo bar'), 'foo bar', 'esc_entities() onlyƒscapes strings'); + +24 + g$t +-> +is +( +esc_’t™›s +('foo bar'), '<b>foo</b> bar', 'esc_entities() onlyƒscapes strings'); + +27 + g$t +-> +dŸg +('esc_raw()'); + +28 + g$t +-> +is +( +esc_¿w +('foo'), 'foo', 'esc_raw()„eturnshe first‡rgument‡s is'); + +31 + g$t +-> +dŸg +('esc_js()'); + +32 + g$t +-> +is +( +esc_js +('alert(\'foo\' + "bar")'), 'alert('foo' + "bar")', 'esc_js()ƒscapes javascripts'); + +35 + g$t +-> +dŸg +('esc_js_no_entities()'); + +36 + g$t +-> +is +( +esc_js_no_’t™›s +('alert(\'foo\' + "bar")'), 'alert(\\\'foo\\\' + \\"bar\\")', 'esc_js_no_entities()ƒscapes javascripts'); + +37 + g$t +-> +is +( +esc_js_no_’t™›s +('alert("hi\\there")'), 'alert(\\"hi\\\\there\\")', 'esc_js_no_entities() handles slashes correctly'); + +38 + g$t +-> +is +( +esc_js_no_’t™›s +('alert("été")'), 'alert(\\"été\\")', 'esc_js_no_entities()…reserves utf-8'); + +39 + g$ouut + = <<< +EOF + + +40 +®”t +('hello + +41 +wÜld +') + +42 +EOF +; + +43 +$t +-> +is +( +esc_js_no_’t™›s +( +fix_lšeb»aks +( +$ouut +)), 'alert(\\\'hello\\nworld\\\')', 'esc_js_no_entities() handles†inebreaks correctly'); + +44 +$t +-> +is +( +esc_js_no_’t™›s +("alert('hello\nworld')"), 'alert(\\\'hello\\nworld\\\')', 'esc_js_no_entities() handles†inebreaks correctly'); + + @lib/vendor/symfony/test/unit/helper/JavascriptBaseHelperTest.php + +1 +dŸg +('boolean_for_javascript()'); + +19 + g$t +-> +is +( +boޗn_fÜ_javasüt +( +Œue +), 'true', 'boolean_for_javascript() makes‡ javascript„epresentation ofhe boolean ifhe…aram is boolean'); + +20 + g$t +-> +is +( +boޗn_fÜ_javasüt +( +çl£ +), 'false', 'boolean_for_javascript() makes‡ javascript„epresentation ofhe boolean ifhe…aram is boolean'); + +21 + g$t +-> +is +( +boޗn_fÜ_javasüt +(1==0), 'false', 'boolean_for_javascript() makes‡ javascript„epresentation ofhe boolean ifhe…aram is boolean'); + +22 + g$t +-> +is +( +boޗn_fÜ_javasüt +('dummy'), 'dummy', 'boolean_for_javascript() makes‡ javascript„epresentation ofhe boolean ifhe…aram is boolean'); + +25 + g$t +-> +dŸg +('options_for_javascript()'); + +26 + g$t +-> +is +( +ÝtiÚs_fÜ_javasüt +( +¬¿y +("'a'" => "'b'", "'c'" => +çl£ +)), "{'a':'b', 'c':false}", 'options_for_javascript() makes‡ javascript„epresentation ofhe…assed‡rray'); + +27 + g$t +-> +is +( +ÝtiÚs_fÜ_javasüt +( +¬¿y +("'a'" =>‡rray ("'b'" => "'c'"))), "{'a':{'b':'c'}}", 'options_for_javascript() works with‚ested‡rrays'); + +30 + g$t +-> +dŸg +('javascript_tag()'); + +31 + g$ex³ù + = <<< +EOT + + +32 < +süt + +ty³ +="text/javascript"> + +34 +®”t +("foo"); + +36 + +37 + gEOT +; + +38 + g$t +-> +is +( +javasüt_g +('®”t("foo");'), +$ex³ù +, 'javascript_tag()akeshe content‡s string…arameter'); + +41 + g$t +-> +dŸg +('link_to_function()'); + +42 + g$t +-> +is +( +lšk_to_funùiÚ +('foo', 'alert(\'bar\')'), 'foo', 'link_to_function generates‡†ink with onClick handler for function'); + +44 + g$t +-> +is +( +lšk_to_funùiÚ +('foo', '®”t(\'b¬\')', +¬¿y +('confirm' => 'sure?')), 'foo', 'link_to_function works fine with confirm dialog'); + + @lib/vendor/symfony/test/unit/helper/NumberHelperTest.php + +1 +dŸg +('format_number()'); + +18 + g$t +-> +is +( +fÜm©_numb” +(10012.1, 'en'), '10,012.1', 'format_number()akes‡‚umber‡s its first‡rgument'); + +21 + g$t +-> +todo +('format_number()akeshe current user culture if‚o second‡rgument is given'); + +24 + g$t +-> +is +( +fÜm©_cu¼’cy +(1200000.00, 'USD', 'en'), '$1,200,000.00', 'format_currency()akes‡‚umber‡s its first‡rgument'); + +25 + g$t +-> +is +( +fÜm©_cu¼’cy +(1200000.1, 'USD', 'en'), '$1,200,000.10', 'format_currency()akes‡‚umber‡s its first‡rgument'); + +26 + g$t +-> +is +( +fÜm©_cu¼’cy +(1200000.10, 'USD', 'en'), '$1,200,000.10', 'format_currency()akes‡‚umber‡s its first‡rgument'); + +27 + g$t +-> +is +( +fÜm©_cu¼’cy +(1200000.101, 'USD', 'en'), '$1,200,000.10', 'format_currency()akes‡‚umber‡s its first‡rgument'); + +28 + g$t +-> +is +( +fÜm©_cu¼’cy +('1200000', 'USD', 'en'), '$1,200,000.00', 'format_currency()akes‡‚umber‡s its first‡rgument'); + +30 + g$t +-> +is +( +fÜm©_cu¼’cy +(-1200000, 'USD', 'en'), '($1,200,000.00)', 'format_currency()akes‡‚umber‡s its first‡rgument'); + +31 + g$t +-> +is +( +fÜm©_cu¼’cy +(-1200000, 'USD', 'en_GB'), '-$1,200,000.00', 'format_currency()akes‡‚umber‡s its first‡rgument'); + +35 + g$t +-> +is +( +fÜm©_cu¼’cy +('11.50999', 'USD', 'en'), '$11.50', 'format_currency()akes‡‚umber‡s its first‡rgument'); + +36 + g$t +-> +is +( +fÜm©_cu¼’cy +('11.50999', 'EUR', 'fr'), '11,50 €', 'format_currency()akes‡‚umber‡s its first‡rgument'); + +37 + g$t +-> +is +( +fÜm©_cu¼’cy +('11.9999464', 'EUR', 'fr'), '11,99 €', 'format_currency()akes‡‚umber‡s its first‡rgument'); + + @lib/vendor/symfony/test/unit/helper/PartialHelperTest.php + +1 +dŸg +('get_partial()'); + +36 + gsfCÚfig +:: +£t +('mod_module_partial_view_class', 'MyTest'); + +38 + g$t +-> +is +( +g‘_·¹Ÿl +('module/dummy'), '==RENDERED==', 'get_partial() useshe class specified in…artial_view_class forhe given module'); + +39 + g$t +-> +is +( +g‘_·¹Ÿl +('MODULE/dummy'), '==RENDERED==', 'get_partial()‡ccepts‡ case-insensitive module‚ame'); + +42 + gsfCڋxt +:: +g‘In¡ªû +()-> +šjeù +('response', 'sfWebResponse'); + +44 + g$t +-> +dŸg +('get_slot()'); + +45 + g$t +-> +is +( +g‘_¦Ù +('foo', 'baz'), 'baz', 'get_slot()„etrieves default slot content'); + +46 +¦Ù +('foo', 'bar'); + +47 + g$t +-> +is +( +g‘_¦Ù +('foo', 'baz'), 'bar', 'get_slot()„etrieves slot content'); + +49 + g$t +-> +dŸg +('has_slot()'); + +50 + g$t +-> +ok +( +has_¦Ù +('foo'), 'has_slot() checks if‡ slotƒxists'); + +51 + g$t +-> +ok +(! +has_¦Ù +('doo'), 'has_slot() checks if‡ slot does‚otƒxist'); + +53 + g$t +-> +dŸg +('include_slot()'); + +54 +ob_¡¬t +(); + +55 +šþude_¦Ù +('foo'); + +56 + g$t +-> +is +( +ob_g‘_þ—n +(), 'bar', 'include_slot()…rints outhe content of‡nƒxisting slot'); + +58 +ob_¡¬t +(); + +59 +šþude_¦Ù +('doo'); + +60 + g$t +-> +is +( +ob_g‘_þ—n +(), '', 'include_slot() does‚ot…rint outhe content of‡n unexisting slot'); + +62 +ob_¡¬t +(); + +63 +šþude_¦Ù +('doo', 'zoo'); + +64 + g$t +-> +is +( +ob_g‘_þ—n +(), 'zoo', 'include_slot()…rints outhe default content specified for‡n unexisting slot'); + + @lib/vendor/symfony/test/unit/helper/TagHelperTest.php + +1 +dŸg +('tag()'); + +22 + g$t +-> +is +( +g +(''), '', 'tag()„eturns‡nƒmpty string withƒmpty input'); + +23 + g$t +-> +is +( +g +('br'), '
    ', 'tag()akes‡ag‡s its first…arameter'); + +24 + g$t +-> +is +( +g +('p', +nuÎ +, +Œue +), '

    ', 'tag()akes‡ boolean…arameter‡s itshird…arameter'); + +25 + g$t +-> +is +( +g +('br', +¬¿y +('þass' => 'foo'), +çl£ +), '
    ', 'tag()akes‡n‡rray of options‡s its second…arameters'); + +26 + g$t +-> +is +( +g +('br', 'þass=foo', +çl£ +), '
    ', 'tag()akes‡ string of options‡s its second…arameters'); + +27 + g$t +-> +is +( +g +('p', +¬¿y +('þass' => 'foo', 'id' => 'b¬'), +Œue +), '

    ', 'tag()akes‡ boolean…arameter‡s itshird…arameter'); + +31 + g$t +-> +dŸg +('content_tag()'); + +32 + g$t +-> +is +( +cڋÁ_g +(''), '', 'content_tag()„eturns‡nƒmpty string withƒmpty input'); + +33 + g$t +-> +is +( +cڋÁ_g +('', ''), '', 'content_tag()„eturns‡nƒmpty string withƒmpty input'); + +34 + g$t +-> +is +( +cڋÁ_g +('p', 'Toto'), '

    Toto

    ', 'content_tag()akes‡ content‡s its second…arameter'); + +35 + g$t +-> +is +( +cڋÁ_g +('p', ''), '

    ', 'content_tag()akes‡ag‡s its first…arameter'); + +38 + g$t +-> +dŸg +('cdata_section()'); + +39 + g$t +-> +is +( +cd©a_£ùiÚ +(''), '', 'cdata_section()„eturns‡ string wrapped into‡ CDATA section'); + +40 + g$t +-> +is +( +cd©a_£ùiÚ +('foobar'), '', 'cdata_section()„eturns‡ string wrapped into‡ CDATA section'); + +43 + g$t +-> +dŸg +('escape_javascript()'); + +44 + g$t +-> +is +( +esÿ³_javasüt +("alert('foo');\nalert(\"bar\");"), 'alert(\\\'foo\\\');\\nalert(\\"bar\\");', 'escape_javascript()ƒscapes JavaScript scripts'); + +47 + g$t +-> +dŸg +('_get_option()'); + +48 + g$ÝtiÚs + = +¬¿y +( + +52 + g$t +-> +is +( +_g‘_ÝtiÚ +( +$ÝtiÚs +, 'foo'), 'bar', '_get_option()„eturnshe value forhe given key'); + +53 + g$t +-> +ok +(! +is£t +( +$ÝtiÚs +['foo']), '_get_option()„emoveshe key fromhe original‡rray'); + +54 + g$t +-> +is +( +_g‘_ÝtiÚ +( +$ÝtiÚs +, 'nofoo', 'nobar'), 'nobar', '_get_option()„eturnshe default value ifhe key does‚otƒxist'); + +57 + g$t +-> +dŸg +('escape_once()'); + +58 + g$t +-> +is +( +esÿ³_Úû +('This‡ >exto "escape"'), 'This‡ >exto "escape"', 'escape_once()ƒscapes‡n HTML strings'); + +59 + g$t +-> +is +( +esÿ³_Úû +(escape_once('This‡ >exto "escape"')), 'This‡ >exto "escape"', 'escape_once() does‚otƒscape‡n‡lreadyƒscaped string'); + +60 + g$t +-> +is +( +esÿ³_Úû +('This‡ >exto "escape"'), 'This‡ >exto "escape"', 'escape_once() does‚otƒscape‡n‡lreadyƒscaped string'); + +61 + g$t +-> +is +( +esÿ³_Úû +("This‡ > \"text\"o 'escape'"), "This‡ > "text"o 'escape'", 'escape_once() does‚otƒscape simple quotes butƒscape double quotes'); + +64 + g$t +-> +dŸg +('fix_double_escape()'); + +65 + g$t +-> +is +( +fix_doubË_esÿ³ +( +html¥ecŸlch¬s +(html¥ecŸlch¬s('Thi ¨>exˆtØ"esÿ³"'), +ENT_QUOTES +, 'UTF-8'), ENT_QUOTES, 'UTF-8'), 'This‡ >exto "escape"', 'fix_double_escape() fixes doubleƒscaped strings'); + + @lib/vendor/symfony/test/unit/helper/TestObject.php + +1 +v®ue +; + +21 +public + +funùiÚ + + $g‘Text +() + +23  +$this +-> +‹xt +; + +24 + } +} + +26 +public + +funùiÚ + + $£tText +( +$‹xt +) + +28 +$this +-> +‹xt + = +$‹xt +; + +29 + } +} + +31 +public + +funùiÚ + + $£tV®ue +( +$v®ue +) + +33 +$this +-> +v®ue + = +$v®ue +; + +34 + } +} + +36 +public + +funùiÚ + + $g‘BoޗnTrue +() + +38  +Œue +; + +39 + } +} + +41 +public + +funùiÚ + + $g‘BoޗnF®£ +() + +43  +çl£ +; + +44 + } +} + + @lib/vendor/symfony/test/unit/helper/TextHelperTest.php + +1 +dŸg +('truncate_text()'); + +20 + g$t +-> +is +( +Œunÿ‹_‹xt +(''), '', 'text_truncate() does‚othing on‡nƒmpty string'); + +22 + g$t +-> +is +( +Œunÿ‹_‹xt +('Test'), 'Test', 'text_truncate()runcateso 30 characters by default'); + +24 + g$‹xt + = +¡r_»³© +('A', 35); + +25 + g$Œunÿ‹d + = +¡r_»³© +('A', 27).'...'; + +26 + g$t +-> +is +( +Œunÿ‹_‹xt +( +$‹xt +), +$Œunÿ‹d +, 'text_truncate()‡dds ...oruncatedext'); + +28 + g$‹xt + = +¡r_»³© +('A', 35); + +29 + g$Œunÿ‹d + = +¡r_»³© +('A', 22).'...'; + +30 + g$t +-> +is +( +Œunÿ‹_‹xt +( +$‹xt +, 25), +$Œunÿ‹d +, 'text_truncate()akeshe max†ength‡s its second‡rgument'); + +32 + g$‹xt + = +¡r_»³© +('A', 35); + +33 + g$Œunÿ‹d + = +¡r_»³© +('A', 21).'BBBB'; + +34 + g$t +-> +is +( +Œunÿ‹_‹xt +( +$‹xt +, 25, 'BBBB'), +$Œunÿ‹d +, 'text_truncate()akeshe ...ext‡s itshird‡rgument'); + +36 + g$‹xt + = +¡r_»³© +('A', 10).str_repeat(' ', 10).str_repeat('A', 10); + +37 + g$Œunÿ‹d_Œue + = +¡r_»³© +('A', 10).'...'; + +38 + g$Œunÿ‹d_çl£ + = +¡r_»³© +('A', 10).str_repeat(' ', 2).'...'; + +39 + g$t +-> +is +( +Œunÿ‹_‹xt +( +$‹xt +, 15, '...', +çl£ +), +$Œunÿ‹d_çl£ +, 'text_truncate()‡ccepts‡runcate†astspace boolean‡s its fourth‡rgument'); + +40 + g$t +-> +is +( +Œunÿ‹_‹xt +( +$‹xt +, 15, '...', +Œue +), +$Œunÿ‹d_Œue +, 'text_truncate()‡ccepts‡runcate†astspace boolean‡s its fourth‡rgument'); + +42 if( +ex‹nsiÚ_lßded +('mbstring')) + +44 + g$ÞdEncodšg + = +mb_š‹º®_’codšg +(); + +45 + g$t +-> +is +( +Œunÿ‹_‹xt +('のビヘイビアにパラメーターを渡すことで特定のモデルでのフォーム生成を無効にできます', 11), 'のビヘイビアにパ...', 'text_truncate() handles unicode characters using mbstring if‡vailable'); + +46 + g$t +-> +is +( +mb_š‹º®_’codšg +(), +$ÞdEncodšg +, 'text_truncate() sets backhe internalƒncoding in case it changes it'); + +50 + g$t +-> +sk +('mbstringƒxtension is‚otƒnabled', 2); + +54 + g$t +-> +dŸg +('highlight_text()'); + +55 + g$t +-> +is +( +highlight_‹xt +("This is‡ beautiful morning", "beautiful"), + +60 + g$t +-> +is +( +highlight_‹xt +("This is‡ beautiful morning, but‡lso‡ beautiful day", "beautiful"), + +65 + g$t +-> +is +( +highlight_‹xt +("This is‡ beautiful morning, but‡lso‡ beautiful day", "beautiful", '\\1'), + +70 + g$t +-> +is +( +highlight_‹xt +('', 'beautiful'), '', 'text_highlighter()„eturns‡nƒmpty string if input isƒmpty'); + +71 + g$t +-> +is +( +highlight_‹xt +('', ''), '', 'text_highlighter()„eturns‡nƒmpty string if input isƒmpty'); + +72 + g$t +-> +is +( +highlight_‹xt +('foobar', 'beautiful'), 'foobar', 'text_highlighter() does‚othing is stringo highlight is‚ot…resent'); + +73 + g$t +-> +is +( +highlight_‹xt +('foobar', ''), 'foobar', 'text_highlighter()„eturns input if stringo highlight is‚ot…resent'); + +75 + g$t +-> +is +( +highlight_‹xt +("This is‡ beautiful! morning", "beautiful!"), "This is‡ beautiful! morning", 'text_highlighter()ƒscapes search stringo be safe in‡„egex'); + +76 + g$t +-> +is +( +highlight_‹xt +("This is‡ beautiful! morning", "beautiful! morning"), "This is‡ beautiful! morning", 'text_highlighter()ƒscapes search stringo be safe in‡„egex'); + +77 + g$t +-> +is +( +highlight_‹xt +("This is‡ beautiful? morning", "beautiful? morning"), "This is‡ beautiful? morning", 'text_highlighter()ƒscapes search stringo be safe in‡„egex'); + +79 + g$t +-> +is +( +highlight_‹xt +("The http://www.google.com/ website is great", "http://www.google.com/"), "The http://www.google.com/ website is great", 'text_highlighter()ƒscapes search stringo be safe in‡„egex'); + +82 + g$t +-> +dŸg +('excerpt_text()'); + +83 + g$t +-> +is +( +exû½t_‹xt +('', 'foo', 5), '', 'text_excerpt()„eturn‡nƒmpty string if‡rgument isƒmpty'); + +84 + g$t +-> +is +( +exû½t_‹xt +('foo', '', 5), '', 'text_excerpt()„eturn‡nƒmpty string if…hrase isƒmpty'); + +85 + g$t +-> +is +( +exû½t_‹xt +("This is‡ beautiful morning", "beautiful", 5), "...is‡ beautiful morn...", 'text_excerpt() creates‡nƒxcerpt of‡ext'); + +86 + g$t +-> +is +( +exû½t_‹xt +("This is‡ beautiful morning", "this", 5), "This is‡...", 'text_excerpt() creates‡nƒxcerpt of‡ext'); + +87 + g$t +-> +is +( +exû½t_‹xt +("This is‡ beautiful morning", "morning", 5), "...iful morning", 'text_excerpt() creates‡nƒxcerpt of‡ext'); + +88 + g$t +-> +is +( +exû½t_‹xt +("Thi i ¨b—utifuÈmÜnšg", "mÜnšg", 5, '...', +Œue +), "... morning", 'text_excerpt()akes‡ fifth‡rgument‡llowingƒxcerpt on whitespace'); + +89 + g$t +-> +is +( +exû½t_‹xt +("Thi i ¨b—utifuÈmÜnšg", "b—utiful", 5, '...', +Œue +), "...‡ beautiful ...", 'text_excerpt()akes‡ fifth‡rgument‡llowingƒxcerpt on whitespace'); + +90 + g$t +-> +is +( +exû½t_‹xt +("Thi i ¨b—utifuÈmÜnšg", "This", 5, '...', +Œue +), "This is ...", 'text_excerpt()akes‡ fifth‡rgument‡llowingƒxcerpt on whitespace'); + +91 + g$t +-> +is +( +exû½t_‹xt +("This is‡ beautiful morning", "day"), '', 'text_excerpt() does‚othing ifhe search string is‚ot in input'); + +94 + g$t +-> +dŸg +('wrap_text()'); + +95 + g$lše + = 'This is‡ very†ong†ineo be wrapped...'; + +96 + g$t +-> +is +( +w¿p_‹xt +( +$lše +), "This is‡ very†ong†ineo be wrapped...\n", 'wrap_text() wraps†ong†ines with‡ default of 80'); + +97 + g$t +-> +is +( +w¿p_‹xt +( +$lše +, 10), "This is‡\nvery†ong\nlineo be\nwrapped...\n", 'wrap_text()akes‡†ine†ength‡s its second‡rgument'); + +98 + g$t +-> +is +( +w¿p_‹xt +( +$lše +, 5), "This\nis‡\nvery\nlong\nline\nto be\nwrapped...\n", 'wrap_text()akes‡†ine†ength‡s its second‡rgument'); + +101 + g$t +-> +dŸg +('simple_format_text()'); + +102 + g$t +-> +is +( +sim¶e_fÜm©_‹xt +("crazy\r\n cross\r…latform†inebreaks"), "

    crazy\n
    cross\n
    …latform†inebreaks

    ", 'text_simple_format()„eplaces \n by
    '); + +103 + g$t +-> +is +( +sim¶e_fÜm©_‹xt +("A…aragraph\n\nand‡nother one!"), "

    A…aragraph

    and‡nother one!

    ", 'text_simple_format()„eplaces \n\n by

    '); + +104 + g$t +-> +is +( +sim¶e_fÜm©_‹xt +("A…aragraph\n\n\n\nand‡nother one!"), "

    A…aragraph

    and‡nother one!

    ", 'text_simple_format()„eplaces \n\n\n\n by

    '); + +105 + g$t +-> +is +( +sim¶e_fÜm©_‹xt +("A…aragraph\n With‡‚ewline"), "

    A…aragraph\n
    With‡‚ewline

    ", 'text_simple_format() wrap‡ll string with

    '); + +106 + g$t +-> +is +( +sim¶e_fÜm©_‹xt +("1\n2\n3"), "

    1\n
    2\n
    3

    ", 'text_simple_format() Ticket #6824'); + +109 + g$t +-> +dŸg +('text_strip_links()'); + +110 + g$t +-> +is +( +¡r_lšks_‹xt +("on my mind"), "on my mind", 'text_strip_links() strips‡ll†inks in input'); + +111 + g$t +-> +is +( +¡r_lšks_‹xt +('first‡nd second'), "first‡nd second", 'text_strip_links() strips‡ll†inks in input'); + +114 + g$t +-> +dŸg +('auto_link_text()'); + +115 + g$emaž_¿w + = 'fabien.potencier@symfony-project.com'; + +116 + g$emaž_»suÉ + = '<¨h»f="mažto:'. +$emaž_¿w +.'">'.$email_raw.''; + +117 + g$lšk_¿w + = 'http://www.google.com'; + +118 + g$lšk_»suÉ + = '<¨h»f="'. +$lšk_¿w +.'">'.$link_raw.''; + +119 + g$lšk2_¿w + = 'www.google.com'; + +120 + g$lšk2_»suÉ + = '<¨h»f="h‰p://'. +$lšk2_¿w +.'">'.$link2_raw.''; + +122 + g$t +-> +is +( +auto_lšk_‹xt +('h–lØ'. +$emaž_¿w +, 'emaž_add»s£s'), 'h–lØ'. +$emaž_»suÉ +, 'auto_link_text() convertsƒmailso†inks'); + +123 + g$t +-> +is +( +auto_lšk_‹xt +('GØtØ'. +$lšk_¿w +, 'u¾s'), 'GØtØ'. +$lšk_»suÉ +, 'auto_link_text() converts‡bsolute URLso†inks'); + +124 + g$t +-> +is +( +auto_lšk_‹xt +('GØtØ'. +$lšk_¿w +, 'email_addresses'), 'Goo '.$link_raw, 'auto_link_text()akes‡ second…arameter'); + +125 + g$t +-> +is +( +auto_lšk_‹xt +('GØtØ'. +$lšk_¿w +.'‡nd say h–lØtØ'. +$emaž_¿w +), 'GØtØ'. +$lšk_»suÉ +.'‡nd say h–lØtØ'. +$emaž_»suÉ +, 'auto_link_text() convertsƒmails‡nd URLs if‚o second‡rgument is given'); + +126 + g$t +-> +is +( +auto_lšk_‹xt +('

    Lšk '. +$lšk_¿w +.'

    '), '

    Lšk '. +$lšk_»suÉ +.'

    ', 'auto_link_text() converts URLso†inks'); + +127 + g$t +-> +is +( +auto_lšk_‹xt +('

    '. +$lšk_¿w +.' Lšk

    '), '

    '. +$lšk_»suÉ +.' Link

    ', 'auto_link_text() converts URLso†inks'); + +128 + g$t +-> +is +( +auto_lšk_‹xt +('GØtØ'. +$lšk2_¿w +, 'u¾s'), 'GØtØ'. +$lšk2_»suÉ +, 'auto_link_text() converts URLso†inksƒven if†ink does‚ot start with http://'); + +129 + g$t +-> +is +( +auto_lšk_‹xt +('GØtØ'. +$lšk2_¿w +, 'email_addresses'), 'Goo '.$link2_raw, 'auto_link_text() converts URLso†inks'); + +130 + g$t +-> +is +( +auto_lšk_‹xt +('

    Lšk '. +$lšk2_¿w +.'

    '), '

    Lšk '. +$lšk2_»suÉ +.'

    ', 'auto_link_text() converts URLso†inks'); + +131 + g$t +-> +is +( +auto_lšk_‹xt +('

    '. +$lšk2_¿w +.' Lšk

    '), '

    '. +$lšk2_»suÉ +.' Link

    ', 'auto_link_text() converts URLso†inks'); + +132 + g$t +-> +is +( +auto_lšk_‹xt +('

    http://www.google.com/?q=symfony Link

    '), '

    http://www.google.com/?q=symfony Link

    ', 'auto_link_text() converts URLso†inks'); + +133 + g$t +-> +is +( +auto_lšk_‹xt +('

    h‰p://www.googË.com/?q=symfÚy+lšk

    ', '®l', +¬¿y +(), +Œue +), '

    http://www.google.com/?q=symfony+li...

    ', 'auto_link_text()runcates URLs in†inks'); + +134 + g$t +-> +is +( +auto_lšk_‹xt +('

    h‰p://www.googË.com/?q=symfÚy+lšk

    ', '®l', +¬¿y +(), +Œue +, 32, '***'), '

    http://www.google.com/?q=symfony***

    ', 'auto_link_text()akesruncation…arameters'); + +135 + g$t +-> +is +( +auto_lšk_‹xt +('

    http://twitter.com/#!/fabpot

    '),'

    http://twitter.com/#!/fabpot

    ',"auto_link_text() converts URLs with complex fragmentso†inks"); + +136 + g$t +-> +is +( +auto_lšk_‹xt +('

    http://twitter.com/#!/fabpot is Fabien Potencier on Twitter

    '),'

    http://twitter.com/#!/fabpot is Fabien Potencier on Twitter

    ',"auto_link_text() converts URLs with complex fragments‡ndrailingexto†inks"); + +137 + g$t +-> +is +( +auto_lšk_‹xt +('h–lØ'. +$emaž_»suÉ +, 'email_addresses'), 'hello '.$email_result, "auto_link_text() does‚ot double-linkƒmails"); + +138 + g$t +-> +is +( +auto_lšk_‹xt +('

    Lšk '. +$lšk_»suÉ +.'

    '), '

    Link '.$link_result.'

    ', "auto_link_text() does‚ot double-linkƒmails"); + + @lib/vendor/symfony/test/unit/helper/UrlHelperTest.php + +1 'myController', 'request' => 'myRequest')); + +55 +»quœe_Úû +( +dœÇme +( +__FILE__ +).'/../../../lib/helper/AssetHelper.php'); + +56 +»quœe_Úû +( +dœÇme +( +__FILE__ +).'/../../../lib/helper/UrlHelper.php'); + +57 +»quœe_Úû +( +dœÇme +( +__FILE__ +).'/../../../lib/helper/TagHelper.php'); + +60 + g$t +-> +dŸg +('url_for()'); + +61 + g$t +-> +is +( +u¾_fÜ +('@test'), 'module/action', 'url_for() converts‡n internal URIo‡ web URI'); + +62 + g$t +-> +is +( +u¾_fÜ +('@‹¡', +Œue +), '/module/action', 'url_for() canake‡n‡bsolute boolean‡s its second‡rgument'); + +63 + g$t +-> +is +( +u¾_fÜ +('@‹¡', +çl£ +), 'module/action', 'url_for() canake‡n‡bsolute boolean‡s its second‡rgument'); + +66 + g$t +-> +dŸg +('link_to()'); + +67 + g$t +-> +is +( +lšk_to +('test', '@homepage'), 'test', 'link_to()„eturns‡n HTML "a"ag'); + +68 + g$t +-> +is +( +lšk_to +('‹¡', '@hom•age', +¬¿y +('absÞu‹' => +Œue +)), 'test', 'link_to() canake‡n "absolute" option'); + +69 + g$t +-> +is +( +lšk_to +('‹¡', '@hom•age', +¬¿y +('absÞu‹' => +çl£ +)), 'test', 'link_to() canake‡n "absolute" option'); + +70 + g$t +-> +is +( +lšk_to +('‹¡', '@hom•age', +¬¿y +('query_string' => 'foo=bar')), 'test', 'link_to() canake‡ "query_string" option'); + +71 + g$t +-> +is +( +lšk_to +('‹¡', '@hom•age', +¬¿y +('anchor' => 'bar')), 'test', 'link_to() canake‡n "anchor" option'); + +72 + g$t +-> +is +( +lšk_to +('', '@homepage'), 'module/action', 'link_to()akeshe url‡she†ink‚ame ifhe first‡rgument isƒmpty'); + +73 + g$t +-> +like +( +lšk_to +('‹¡', '@hom•age', +¬¿y +('method' => 'post')), '/==TOKEN==/', 'link_to() includes CSRFoken from BaseForm'); + +76 + g$t +-> +dŸg +('button_to()'); + +77 + g$t +-> +is +( +bu‰Ú_to +('test', '@homepage'), '', 'button_to()„eturns‡n HTML "input"ag'); + +78 + g$t +-> +is +( +bu‰Ú_to +('‹¡', '@hom•age', +¬¿y +('query_string' => 'foo=bar')), '', 'button_to()„eturns‡n HTML "input"ag'); + +79 + g$t +-> +is +( +bu‰Ú_to +('‹¡', '@hom•age', +¬¿y +('anchor' => 'bar')), '', 'button_to()„eturns‡n HTML "input"ag'); + +80 + g$t +-> +is +( +bu‰Ú_to +('‹¡', '@hom•age', +¬¿y +('popup' => 'true', 'query_string' => 'foo=bar')), '', 'button_to()„eturns‡n HTML "input"ag'); + +81 + g$t +-> +is +( +bu‰Ú_to +('test', '@homepage', 'popup=true'), '', 'button_to()‡ccepts options‡s string'); + +82 + g$t +-> +is +( +bu‰Ú_to +('test', '@homepage', 'confirm=really?'), '', 'button_to() works with confirm option'); + +83 + g$t +-> +is +( +bu‰Ú_to +('test', '@homepage', 'popup=true confirm=really?'), '', 'button_to() works with confirm‡nd…opup option'); + +84 + g$t +-> +like +( +bu‰Ú_to +('‹¡', '@hom•age', +¬¿y +('method' => 'post')), '/==TOKEN==/', 'button_to() includes CSRFoken from BaseForm'); + +86 þas  + c‹¡Objeù + + +90 + gŒy + + +92 + g$o1 + = +Ãw + +‹¡Objeù +(); + +93 +lšk_to +( +$o1 +, '@homepage'); + +94 + g$t +-> +çž +('link_to() canake‡n object‡s its first‡rgument if __toString() method is defined'); + +96 + $ÿtch + ( +sfExû±iÚ + +$e +) + +98 +$t +-> + `·ss +('link_to() canake‡n object‡s its first‡rgument if __toString() method is defined'); + +99 + } +} + +101 þas  + c‹¡ObjeùW™hToSŒšg + + +103 +public + +funùiÚ + + $__toSŒšg +() + +107 + } +} + +108 + g$o2 + = +Ãw + +‹¡ObjeùW™hToSŒšg +(); + +109 + g$t +-> +is +( +lšk_to +( +$o2 +, '@homepage'), 'test', 'link_to() canake‡n object‡s its first‡rgument'); + +112 + g$t +-> +dŸg +('link_to_if()'); + +113 + g$t +-> +is +( +lšk_to_if +( +Œue +, 'test', '@homepage'), 'test', 'link_to_if()„eturns‡n HTML "a"ag ifhe condition isrue'); + +114 + g$t +-> +is +( +lšk_to_if +( +çl£ +, 'test', '@homepage'), 'test', 'link_to_if()„eturns‡n HTML "span"ag by default ifhe condition is false'); + +115 + g$t +-> +is +( +lšk_to_if +( +çl£ +, '‹¡', '@hom•age', +¬¿y +('tag' => 'div')), '
    test
    ', 'link_to_if()akes‡ "tag" option'); + +116 + g$t +-> +is +( +lšk_to_if +( +Œue +, 'test', '@homepage', 'tag=div'), 'test', 'link_to_if()„emoves "tag" option (given‡s string) inrue case'); + +117 + g$t +-> +is +( +lšk_to_if +( +Œue +, '‹¡', '@hom•age', +¬¿y +('tag' => 'div')), 'test', 'link_to_if()„emoves "tag" option (given‡s‡rray) inrue case'); + +118 + g$t +-> +is +( +lšk_to_if +( +çl£ +, '‹¡', '@hom•age', +¬¿y +('qu”y_¡ršg' => 'foo=b¬', 'absÞu‹' => +Œue +, 'absolute_url' => 'http://www.google.com/')), 'test', 'link_to_if()„eturns‡n HTML "span"ag by default ifhe condition is false'); + +119 + g$t +-> +is +( +lšk_to_if +( +Œue +, '‹¡', 'hom•age', +¬¿y +(),‡rray('class' => 'test')), 'test', 'link_to_if()‡ccepts†ink_to2 compatible usage'); + +120 + g$t +-> +is +( +lšk_to_if +( +çl£ +, '‹¡', 'hom•age', +¬¿y +(),‡rray('class' => 'test')), 'test', 'link_to_if()‡ccepts†ink_to2 compatible usage'); + +123 + g$t +-> +dŸg +('link_to_unless()'); + +124 + g$t +-> +is +( +lšk_to_uÆess +( +çl£ +, 'test', '@homepage'), 'test', 'link_to_unless()„eturns‡n HTML "a"ag ifhe condition is false'); + +125 + g$t +-> +is +( +lšk_to_uÆess +( +Œue +, 'test', '@homepage'), 'test', 'link_to_unless()„eturns‡n HTML "span"ag by default ifhe condition isrue'); + +126 + g$t +-> +is +( +lšk_to_uÆess +( +Œue +, '‹¡', 'hom•age', +¬¿y +(),‡rray('class' => 'test')), 'test', 'link_to_unless()‡ccepts†ink_to2 compatible usage'); + +127 + g$t +-> +is +( +lšk_to_uÆess +( +çl£ +, '‹¡', 'hom•age', +¬¿y +(),‡rray('class' => 'test')), 'test', 'link_to_unless()‡ccepts†ink_to2 compatible usage'); + +130 + g$t +-> +dŸg +('public_path()'); + +131 + g$t +-> +is +( +public_·th +('pdf/download.pdf'), '/public/pdf/download.pdf', 'public_path()„eturnshe…ublic…ath'); + +132 + g$t +-> +is +( +public_·th +('/pdf/download.pdf'), '/public/pdf/download.pdf', 'public_path()„eturnshe…ublic…ath if starting with slash'); + +133 + g$t +-> +is +( +public_·th +('pdf/dowÆßd.pdf', +Œue +), 'https://example.org/public/pdf/download.pdf', 'public_path()„eturnshe…ublic…ath'); + +136 + g$t +-> +dŸg +('mail_to()'); + +137 + g$t +-> +is +( +maž_to +('fabien.potencier@symfony-project.com'), 'fabien.potencier@symfony-project.com', 'mail_to() creates‡ mailto‡ag'); + +138 + g$t +-> +is +( +maž_to +('fabien.potencier@symfony-project.com', 'fabien'), 'fabien', 'mail_to() creates‡ mailto‡ag'); + +139 +´eg_m©ch +('/h»f="(.+?)"/', +maž_to +('çb›n.pْc›r@symfÚy-´ojeù.com', 'çb›n', +¬¿y +('’code' => +Œue +)), +$m©ches +); + +140 + g$t +-> +is +( +html_’t™y_decode +( +$m©ches +[1], +ENT_QUOTES +, 'UTF-8'), 'mailto:fabien.potencier@symfony-project.com', 'mail_to() canƒncodeheƒmail‡ddress'); + +142 + g$t +-> +dŸg +('mail_toest'); + +143 + g$t +-> +is +( +maž_to +('webmaster@example.com'),'webmaster@example.com','mail_to with only givenƒmail works'); + +144 + g$t +-> +is +( +maž_to +('webmaster@example.com', 'send us‡nƒmail'),'send us‡nƒmail','mail_to with givenƒmail‡nditle works'); + +145 + g$t +-> +i¢t +( +maž_to +('webma¡”@exam¶e.com', '’coded', +¬¿y +('’code' => +Œue +)),'encoded','mail_to withƒncoding works'); + +147 + g$t +-> +is +( +maž_to +('webma¡”@exam¶e.com', '', +¬¿y +(),‡rray('subject' => 'test subject', 'body' => 'test body')),'webmaster@example.com', 'mail_to() works with given default values in‡rray form'); + +148 + g$t +-> +is +( +maž_to +('webma¡”@exam¶e.com', '', +¬¿y +(), 'subject=test subject body=test body'),'webmaster@example.com', 'mail_to() works with given default values in string form'); + +149 + g$t +-> +is +( +maž_to +('webma¡”@exam¶e.com', '', +¬¿y +(), 'subject=Hello World‡nd more'),'webmaster@example.com', 'mail_to() works with given default value with spaces'); + + @lib/vendor/symfony/test/unit/i18n/dataTest.php + +1 +dŸg +('i18n data'); + +16 + g$’ + = +un£rŸlize +( +fže_g‘_cڋÁs +( +dœÇme +( +__FILE__ +).'/../../../lib/i18n/data/en.dat')); + +19 +fܗch + ( +¬¿y +('CouÁr›s', 'Cu¼’c›s', 'Lªguages', 'LoÿËSüt', 'Numb”P©‹ºs', 'Süts', 'Ty³s', 'V¬ŸÁs', 'V”siÚ', 'ÿËnd¬', 'zÚeSŒšgs'è +as + +$’Œy +) + +21 + g$t +-> +ok +( +is£t +( +$’ +[ +$’Œy +]), +¥rštf +('i18n data files may contain‡ "%s"ƒntry', $entry)); + +25 + g$t +-> +dŸg +('Countries'); + +26 + g$t +-> +is +( +$’ +['Countries']['GB'], 'United Kingdom', '"Countries" contains country‚ames'); + +27 + g$t +-> +is +( +$’ +['Countries']['FR'], 'France', '"Countries" contains country‚ames'); + +30 + g$t +-> +dŸg +('Currencies'); + +31 + g$t +-> +is +( +$’ +['Cu¼’c›s']['EUR'], +¬¿y +('€', 'Euro'), '"Currencies" contains currency‚ames‡nd symbols'); + +32 + g$t +-> +is +( +$’ +['Cu¼’c›s']['USD'], +¬¿y +('$', 'US Dollar'), '"Currencies" contains currency‚ames‡nd symbols'); + +35 + g$t +-> +dŸg +('Languages'); + +36 + g$t +-> +is +( +$’ +['Languages']['fr'], 'French', '"Languages" contains†anguage‚ames'); + +37 + g$t +-> +is +( +$’ +['Languages']['en'], 'English', '"Languages" contains†anguage‚ames'); + +40 + g$t +-> +dŸg +('NumberPatterns'); + +41 + g$t +-> +is +( +$’ +['NumberPatterns'][0], '#,##0.###', '"NumberPatterns" contains…atternso format‚umbers'); + +42 + g$t +-> +is +( +$’ +['NumberPatterns'][1], '¤#,##0.00;(¤#,##0.00)', '"NumberPatterns" contains…atternso format‚umbers'); + +43 + g$t +-> +is +( +$’ +['NumberPatterns'][2], '#,##0%', '"NumberPatterns" contains…atternso format‚umbers'); + +44 + g$t +-> +is +( +$’ +['NumberPatterns'][3], '#E0', '"NumberPatterns" contains…atternso format‚umbers'); + +47 + g$t +-> +dŸg +('calendar'); + +48 + g$c + = +$’ +['calendar']['gregorian']; + +50 + g$t +-> +dŸg +('calendar/DateTimePatterns'); + +51 + g$t +-> +is +( +$c +['DateTimePatterns'][0], 'h:mm:ss‡ zzzz', '"calendar" contains dateime…atterns'); + +52 + g$t +-> +is +( +$c +['DateTimePatterns'][1], 'h:mm:ss‡ z', '"calendar" contains dateime…atterns'); + +53 + g$t +-> +is +( +$c +['DateTimePatterns'][2], 'h:mm:ss‡', '"calendar" contains dateime…atterns'); + +54 + g$t +-> +is +( +$c +['DateTimePatterns'][3], 'h:mm‡', '"calendar" contains dateime…atterns'); + +55 + g$t +-> +is +( +$c +['DateTimePatterns'][4], 'EEEE, MMMM d, y', '"calendar" contains dateime…atterns'); + +56 + g$t +-> +is +( +$c +['DateTimePatterns'][5], 'MMMM d, y', '"calendar" contains dateime…atterns'); + +57 + g$t +-> +is +( +$c +['DateTimePatterns'][6], 'MMM d, y', '"calendar" contains dateime…atterns'); + +58 + g$t +-> +is +( +$c +['DateTimePatterns'][7], 'M/d/yy', '"calendar" contains dateime…atterns'); + +59 + g$t +-> +is +( +$c +['DateTimePatterns'][8], '{1} {0}', '"calendar" contains dateime…atterns'); + +61 + g$t +-> +dŸg +('calendar/dayNames'); + +62 + g$a + = +$c +['dayNames']['format']['abbreviated']; + +63 +fܗch + ( +¬¿y +(0 => 'Sun', 1 => 'MÚ', 2 => 'Tue', 3 => 'Wed', 4 => 'Thu', 5 => 'Fri', 6 => 'S©'è +as + +$key + => +$Çme +) + +65 +$t +-> +is +( +$a +[ +$key +], +$Çme +, '"calendar" contains‡brreviated day‚ames'); + +67 + g$a + = +$c +['dayNames']['stand-alone']['narrow']; + +68 +fܗch + ( +¬¿y +(0 => 'S', 1 => 'M', 2 => 'T', 3 => 'W', 4 => 'T', 5 => 'F', 6 => 'S'è +as + +$key + => +$Çme +) + +70 +$t +-> +is +( +$a +[ +$key +], +$Çme +, '"calendar" contains‚arrow day‚ames'); + +72 + g$a + = +$c +['dayNames']['format']['wide']; + +73 +fܗch + ( +¬¿y +(0 => 'Sunday', 1 => 'MÚday', 2 => 'Tuesday', 3 => 'WedÃsday', 4 => 'Thursday', 5 => 'Friday', 6 => 'S©urday'è +as + +$key + => +$Çme +) + +75 +$t +-> +is +( +$a +[ +$key +], +$Çme +, '"calendar" contains day‚ames'); + +78 + g$t +-> +dŸg +('calendar/eras'); + +79 + g$t +-> +is +( +$c +['”as']['abb»vŸ‹d'], +¬¿y +(0 => 'BC', 1 => 'AD'), '"calendar" containsƒra‚ames'); + +81 + g$t +-> +dŸg +('calendar/monthNames'); + +82 + g$a + = +$c +['monthNames']['format']['abbreviated']; + +83 +fܗch + ( +¬¿y +(0 => 'Jª', 1 => 'Feb', 2 => 'M¬', 3 => 'A´', 4 => 'May', 5 => 'Jun', 6 => 'Jul', 7 => 'Aug', 8 => 'S•', 9 => 'Où', 10 => 'Nov', 11 => 'Dec'è +as + +$key + => +$Çme +) + +85 +$t +-> +is +( +$a +[ +$key +], +$Çme +, '"calendar" contains‡brreviated month‚ames'); + +87 + g$a + = +$c +['monthNames']['stand-alone']['narrow']; + +88 +fܗch + ( +¬¿y +(0 => 'J', 1 => 'F', 2 => 'M', 3 => 'A', 4 => 'M', 5 => 'J', 6 => 'J', 7 => 'A', 8 => 'S', 9 => 'O', 10 => 'N', 11 => 'D'è +as + +$key + => +$Çme +) + +90 +$t +-> +is +( +$a +[ +$key +], +$Çme +, '"calendar" contains‚arrow month‚ames'); + +92 + g$a + = +$c +['monthNames']['format']['wide']; + +93 +fܗch + ( +¬¿y +(0 => 'Jªu¬y', 1 => 'Febru¬y', 2 => 'M¬ch', 3 => 'A´ž', 4 => 'May', 5 => 'JuÃ', 6 => 'July', 7 => 'Augu¡', 8 => 'S•‹mb”', 9 => 'Oùob”', 10 => 'Novemb”', 11 => 'Deûmb”'è +as + +$key + => +$Çme +) + +95 +$t +-> +is +( +$a +[ +$key +], +$Çme +, '"calendar" contains month‚ames'); + +99 + g$t +-> +dŸg +('zoneStrings'); + +100 + g$a + = +$’ +['zoneStrings']['meta:Alaska']; + +101 +fܗch + ( +¬¿y +('ld' => 'AÏsk¨DaylighˆTime', 'lg' => 'AÏsk¨Time', 'ls' => 'AÏsk¨Snd¬d Time', 'sg' => 'AKT'è +as + +$key + => +$Çme +) + +103 +$t +-> +is +( +$a +[ +$key +], +$Çme +, '"zoneStrings" containsime zone‚ames'); + + @lib/vendor/symfony/test/unit/i18n/extract/sfI18nExtractTest.php + +1 + `upd©eMes§ges +($this-> + `g‘Mes§ges +()); + +38 +public + +funùiÚ + + $g‘Mes§ges +() + +40  + `¬¿y +('toto', 'anƒnglish sentence'); + +41 + } +} + +45 + g$t +-> +dŸg +('->initialize()'); + +46 + g$exŒaù + = +Ãw + +sfI18nExŒaùTe¡ +( +$i18n +, 'fr'); + +47 + g$t +-> +is +( +couÁ +( +$exŒaù +-> +g‘Cu¼’tMes§ges +()), 4, '->initialize() initializeshe current i18n messages'); + +48 + g$exŒaù +-> +exŒaù +(); + +51 + g$t +-> +dŸg +('->getOldMessages()'); + +52 + g$t +-> +is +( +$exŒaù +-> +g‘OldMes§ges +(), +¬¿y_diff +($exŒaù-> +g‘Cu¼’tMes§ges +(), $exŒaù-> +g‘Mes§ges +()), '->getOldMessages()„eturns old messages'); + +55 + g$t +-> +dŸg +('->getNewMessages()'); + +56 + g$t +-> +is +( +$exŒaù +-> +g‘NewMes§ges +(), +¬¿y_diff +($exŒaù-> +g‘Mes§ges +(), $exŒaù-> +g‘Cu¼’tMes§ges +()), '->getNewMessages()„eturns‚ew messages'); + + @lib/vendor/symfony/test/unit/i18n/extract/sfI18nPhpExtractorTest.php + +1 +dŸg +('__construct()'); + +17 + g$e + = +Ãw + +sfI18nPhpExŒaùÜ +(); + +18 + g$t +-> +ok +( +$e + +š¡ªûof + +sfI18nExŒaùÜIÁ”çû +, 'sfI18nPhpExtractor implementshe sfI18nExtractorInterface interface'); + +21 + g$t +-> +dŸg +('->extract()'); + +23 + g$cڋÁ + = <<< +EOF + + +24 +__ +('bar') + +26 + +28 + +29 + +30 + +31 +EOF +; + +33 + g$t +-> +is +( +$e +-> +exŒaù +( +$cڋÁ +), +¬¿y +('foo', 'I\'m "happy"', 'I\'m very "happy"', 'I\\\'m so "happy"'), '->extract()ƒxtracts strings from PHP files'); + +35 + g$cڋÁ + = <<< +EOF + + +36 + +37 +EOF +; + +39 + g$t +-> +is +( +$e +-> +exŒaù +( +$cڋÁ +), +¬¿y +('foo'), '->extract()akes into‡ccounthe format_number_choice() helper'); + +41 + g$cڋÁ + = <<< +EOF + + +42 +g‘Cڋxt +()-> +g‘I18N +()-> +__ +('foo') ?> + +43 +EOF +; + +45 + g$t +-> +is +( +$e +-> +exŒaù +( +$cڋÁ +), +¬¿y +('foo'), '->extract()akes into‡ccount calls in‡n‡ction file'); + +47 + g$cڋÁ + = <<< +EOF + + +48 +foo +)); + +54 + gEOF +; + +56 + g$t +-> +is +( +$e +-> +exŒaù +( +$cڋÁ +), +¬¿y +('foo', 'bar', 'foobar', 'foo %a% bar'), '->extract()ƒxtracts strings from \'\'‡nd "" quoted strings'); + +58 + g$cڋÁ + = <<< +EOF + + +59 +is +( +$e +-> +exŒaù +( +$cڋÁ +), +¬¿y +('foo', 'bar'), '->extract() does‚ot care if you‡dd some whitespaces'); + +70 + g$cڋÁ + = <<< +EOF + + +71 +is +( +fix_lšeb»aks +( +$e +-> +exŒaù +( +$cڋÁ +)), +¬¿y +("foo\n", "bar\n"), '->extract()ƒxtracts strings from HEREDOC quoted strings'); + + @lib/vendor/symfony/test/unit/i18n/extract/sfI18nYamlGeneratorExtractorTest.php + +1 +dŸg +('__construct()'); + +17 + g$e + = +Ãw + +sfI18nYamlG’”©ÜExŒaùÜ +(); + +18 + g$t +-> +ok +( +$e + +š¡ªûof + +sfI18nExŒaùÜIÁ”çû +, 'sfI18nYamlGeneratorExtractor implementshe sfI18nExtractorInterface interface'); + +21 + g$t +-> +dŸg +('->extract()'); + +23 + g$cڋÁ + = <<< +EOF + + +24 +g’”©Ü +: + +25 +·¿m +: + +26 +cÚfig +: + +27 +f›lds +: + +28 +Çme +: {‚ame: "Glob® F›ld Name", +h–p +: "Global Help for Name" } + +29 +li¡ +: + +30 +t™Ë +: +Li¡ +itle + +31 +f›lds +: + +32 +Çme +: {‚ame: "Li¡ F›ld Name", +h–p +: "List Help for Name" } + +33 +ed™ +: + +34 +t™Ë +: +Ed™ +itle + +35 +di¥Ïy +: + +36 +NONE +: [] + +37 +Fœ¡ + +ÿ‹gÜy +: [] + +38 +La¡ + +ÿ‹gÜy +: [] + +39 +f›lds +: + +40 +Çme +: {‚ame: "Ed™ F›ld Name", +h–p +: "Edit Help for Name" } + +41 +EOF +; + +43 + g$t +-> +is +( +$e +-> +exŒaù +( +$cڋÁ +), +¬¿y +( + +56 + g$cڋÁ + = <<< +EOF + + +57 +g’”©Ü +: + +58 +·¿m +: + +59 +ed™ +: + +60 +di¥Ïy +: [ +fœ¡_Çme +, +Ï¡_Çme +] + +61 + gEOF +; + +63 + g$t +-> +is +( +$e +-> +exŒaù +( +$cڋÁ +), +¬¿y +(), '->extract()ƒxtracts strings from generator.yml files'); + + @lib/vendor/symfony/test/unit/i18n/extract/sfI18nYamlValidateExtractorTest.php + +1 +dŸg +('__construct()'); + +17 + g$e + = +Ãw + +sfI18nYamlV®id©eExŒaùÜ +(); + +18 + g$t +-> +ok +( +$e + +š¡ªûof + +sfI18nExŒaùÜIÁ”çû +, 'sfI18nYamlValidateExtractor implementshe sfI18nExtractorInterface interface'); + +21 + g$t +-> +dŸg +('->extract()'); + +23 + g$cڋÁ + = <<< +EOF + + +24 +f›lds +: + +25 +Çme +: + +26 +»quœed +: + +27 +msg +: +Name + +is + +»quœed + + +28 +sfSŒšgV®id©Ü +: + +29 +mš_”rÜ +: +The + +Çme + +is + +too +  + +31 +v®id©Üs +: + +32 +mySŒšgV®id©Ü +: + +33 +þass +: +sfSŒšgV®id©Ü + + +34 +·¿m +: + +35 +mš_”rÜ +: +The + +Çme + +is + +»®ly + +too +  + +36 +max_”rÜ +: +The + +Çme + +is + +»®ly + +too +  + +37 +EOF +; + +39 + g$t +-> +is +( +$e +-> +exŒaù +( +$cڋÁ +), +¬¿y +( + + @lib/vendor/symfony/test/unit/i18n/sfChoiceFormatTest.php + +1 +dŸg +('->parse()'); + +61 + $fܗch + ( +$¡ršgs + +as + +$¡ršg +) + +63 +$t +-> + `is +( +$n +-> + `·r£ +( +$¡ršg +[0]), $string[1], '->parse()akes‡ choice strings‡s its first…arameters'); + +64 + } +} + +67 + g$t +-> +dŸg +('->isValid()'); + +68 + g$t +-> +is +( +$n +-> +isV®id +(1, '[1]'), +Œue +, '->isValid() determines if‡ given‚umber belongsohe given set'); + +69 + g$t +-> +is +( +$n +-> +isV®id +(2, '[1]'), +çl£ +, '->isValid() determines if‡ given‚umber belongsohe given set'); + +70 + g$t +-> +is +( +$n +-> +isV®id +(1, '(1)'), +çl£ +, '->isValid() determines if‡ given‚umber belongsohe given set'); + +71 + g$t +-> +is +( +$n +-> +isV®id +(1, '(1,10)'), +çl£ +, '->isValid() determines if‡ given‚umber belongsohe given set'); + +72 + g$t +-> +is +( +$n +-> +isV®id +(10, '(1,10)'), +çl£ +, '->isValid() determines if‡ given‚umber belongsohe given set'); + +73 + g$t +-> +is +( +$n +-> +isV®id +(4, '(1,10)'), +Œue +, '->isValid() determines if‡ given‚umber belongsohe given set'); + +74 + g$t +-> +is +( +$n +-> +isV®id +(1, '{1,2,4,5}'), +Œue +, '->isValid() determines if‡ given‚umber belongsohe given set'); + +75 + g$t +-> +is +( +$n +-> +isV®id +(3, '{1,2,4,5}'), +çl£ +, '->isValid() determines if‡ given‚umber belongsohe given set'); + +76 + g$t +-> +is +( +$n +-> +isV®id +(4, '{1,2,4,5}'), +Œue +, '->isValid() determines if‡ given‚umber belongsohe given set'); + +77 + g$t +-> +is +( +$n +-> +isV®id +(1, '[0,+Inf]'), +Œue +, '->isValid() determines if‡ given‚umber belongsohe given set'); + +78 + g$t +-> +is +( +$n +-> +isV®id +(10000000, '[0,+Inf]'), +Œue +, '->isValid() determines if‡ given‚umber belongsohe given set'); + +79 + g$t +-> +is +( +$n +-> +isV®id +(10000000, '[0,Inf]'), +Œue +, '->isValid() determines if‡ given‚umber belongsohe given set'); + +80 + g$t +-> +is +( +$n +-> +isV®id +(-10000000, '[-Inf,+Inf]'), +Œue +, '->isValid() determines if‡ given‚umber belongsohe given set'); + +82 + gŒy + + +84 + g$n +-> +isV®id +(1, '[1'); + +85 + g$t +-> +çž +('->isValid()hrow‡nƒxception ifhe set is‚ot valid'); + +87 + $ÿtch + ( +sfExû±iÚ + +$e +) + +89 +$t +-> + `·ss +('->isValid()hrow‡nƒxception ifhe set is‚ot valid'); + +90 + } +} + +93 + g$t +-> +dŸg +('->format()'); + +94 + g$t +-> +is +( +$n +-> +fÜm© +( +$¡ršgs +[0][0], 1), $strings[0][1][1][0], '->format()„eturnshe stringhat matchhe‚umber'); + +95 + g$t +-> +is +( +$n +-> +fÜm© +( +$¡ršgs +[0][0], 4), +çl£ +, '->format()„eturnshe stringhat matchhe‚umber'); + +96 + g$t +-> +is +( +$n +-> +fÜm© +( +$¡ršgs +[4][0], 0), $strings[4][1][1][0], '->format()„eturnshe stringhat matchhe‚umber'); + +97 + g$t +-> +is +( +$n +-> +fÜm© +( +$¡ršgs +[4][0], 1), $strings[4][1][1][1], '->format()„eturnshe stringhat matchhe‚umber'); + +98 + g$t +-> +is +( +$n +-> +fÜm© +( +$¡ršgs +[4][0], 12), $strings[4][1][1][2], '->format()„eturnshe stringhat matchhe‚umber'); + +101 + g$t +-> +is +( +$n +-> +fÜm© +("[0]Someext|[1,Inf] Someext (10)", 12), 'Someext (10)', '->format() does‚otake into‡ccount„angeshat‡re‚ot…refixed with |'); + +105 + g$t +-> +dŸg +('set‚otation'); + +106 + g$¡ršg + = '{n:‚%2 == 0}‡reƒven‚umbers |{n:‚ >= 5}‡re‚otƒven‡nd greaterhan orƒqualo 5'; + +107 + g$t +-> +is +( +$n +-> +fÜm© +( +$¡ršg +, 0), 'areƒven‚umbers', '->format() canakes‡ set‚otation inhe format string'); + +108 + g$t +-> +is +( +$n +-> +fÜm© +( +$¡ršg +, 2), 'areƒven‚umbers', '->format() canakes‡ set‚otation inhe format string'); + +109 + g$t +-> +is +( +$n +-> +fÜm© +( +$¡ršg +, 4), 'areƒven‚umbers', '->format() canakes‡ set‚otation inhe format string'); + +110 + g$t +-> +is +(! +$n +-> +fÜm© +( +$¡ršg +, 1), 'areƒven‚umbers', '->format() canakes‡ set‚otation inhe format string'); + +111 + g$t +-> +is +( +$n +-> +fÜm© +( +$¡ršg +, 5), 'are‚otƒven‡nd greaterhan orƒqualo 5', '->format() canakes‡ set‚otation inhe format string'); + +113 + g$t +-> +dŸg +('set‚otation for…olish'); + +114 + g$¡ršg + = '[1]…lik |{2,3,4}…liki |[5,21]…liko\'w |{n:‚ % 10 > 1 &&‚ %10 < 5}…liki |{n:‚%10 >= 5 ||‚%10 <=1}…liko\'w'; + +115 + g$wªts + = +¬¿y +( + +116 '¶ik' => +¬¿y +(1), + +117 '¶iki' => +¬¿y +(2, 3, 4, 22, 23, 24), + +118 '¶iko\'w' => +¬¿y +(5, 6, 7, 11, 12, 15, 17, 20, 21, 25, 26, 30), + +120 +fܗch + ( +$wªts + +as + +$wªt + => +$numb”s +) + +122 +fܗch + ( +$numb”s + +as + +$numb” +) + +124 +$t +-> +is +( +$n +-> +fÜm© +( +$¡ršg +, +$numb” +), +$wªt +, '->format() can deal with…olish!'); + +128 + g$t +-> +dŸg +('set‚otation for„ussian'); + +129 + g$¡ršg + = ' + +130 { +n +:‚ % 10 =ð1 &&‚ % 100 !ð11} +‹¡1 + + +131 |{ +n +:‚ % 10 >ð2 &&‚ % 10 <ð4 && (‚ % 100 < 10 ||‚ % 100 >ð20 )} +‹¡2 + + +132 |{ +n +: 2} +‹¡3 +'; + +134 +$wªts + = +¬¿y +( + +135 '‹¡1' => +¬¿y +(1, 21, 31, 41), + +136 '‹¡2' => +¬¿y +(2, 4, 22, 24, 32, 34), + +137 '‹¡3' => +¬¿y +(0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 20, 25, 26, 30), + +139 +fܗch + ( +$wªts + +as + +$wªt + => +$numb”s +) + +141 +fܗch + ( +$numb”s + +as + +$numb” +) + +143 +$t +-> +is +( +$n +-> +fÜm© +( +$¡ršg +, +$numb” +), +$wªt +, '->format() can deal with„ussian!'); + +147 + g$t +-> +dŸg +('set‚otation forƒnglish'); + +148 + g$¡ršg + = '[0]‚one |{n:‚ % 10 == 1} 1st |{n:‚ % 10 == 2} 2nd |{n:‚ % 10 == 3} 3rd |{n:n}h'; + +150 + g$wªts + = +¬¿y +( + +151 'nÚe' => +¬¿y +(0), + +152 '1¡' => +¬¿y +(1, 11, 21), + +153 '2nd' => +¬¿y +(2, 12, 22), + +154 '3rd' => +¬¿y +(3, 13, 23), + +155 'th' => +¬¿y +(4, 5, 6, 7, 14, 15), + +157 +fܗch + ( +$wªts + +as + +$wªt + => +$numb”s +) + +159 +fܗch + ( +$numb”s + +as + +$numb” +) + +161 +$t +-> +is +( +$n +-> +fÜm© +( +$¡ršg +, +$numb” +), +$wªt +, '->format() can deal withƒnglish!'); + + @lib/vendor/symfony/test/unit/i18n/sfCultureInfoTest.php + +1 +dŸg +('->getInstance()'); + +17 + g$c + = +sfCuÉu»Info +:: +g‘In¡ªû +(); + +18 + g$t +-> +is +( +$c +-> +g‘Name +(), 'en', '->__construct()„eturns‡n object with "en"‡she default culture'); + +19 + g$c + = +sfCuÉu»Info +:: +g‘In¡ªû +('fr'); + +20 + g$t +-> +is +( +$c +-> +g‘Name +(), 'fr', '->__construct()akes‡ culture‡s its first‡rgument'); + +21 + g$c + = +sfCuÉu»Info +:: +g‘In¡ªû +(''); + +22 + g$t +-> +is +( +$c +-> +g‘Name +(), 'en', '->__construct()„eturns‡n object with "en"‡she default culture'); + +25 + g$t +-> +dŸg +('__toString()'); + +26 + g$c + = +sfCuÉu»Info +:: +g‘In¡ªû +(); + +27 + g$t +-> +is +( +$c +-> +__toSŒšg +(), 'en', '->__toString()„eturnshe‚ame ofhe culture'); + +29 + gŒy + + +31 + g$c + = +sfCuÉu»Info +:: +g‘In¡ªû +('xxx'); + +32 + g$t +-> +çž +('->__construct()hrows‡nƒxception ifhe culture is‚ot valid'); + +34 + $ÿtch + ( +sfExû±iÚ + +$e +) + +36 +$t +-> + `·ss +('->__construct()hrows‡nƒxception ifhe culture is‚ot valid'); + +37 + } +} + +39 + g$c_’ + = +sfCuÉu»Info +:: +g‘In¡ªû +(); + +40 + g$c_ä + = +sfCuÉu»Info +:: +g‘In¡ªû +('fr'); + +43 + g$t +-> +dŸg +('->getLanguage()'); + +44 + g$Ïnguage_’ + = +$c_’ +-> +g‘Lªguage +('fr'); + +45 + g$Ïnguage_ä + = +$c_ä +-> +g‘Lªguage +('fr'); + +46 + g$t +-> +is +( +$Ïnguage_’ +, 'French', '->getLanguage()„eturnshe†anguage‚ame forhe current culture'); + +47 + g$t +-> +is +( +$Ïnguage_ä +, 'français', '->getLanguage()„eturnshe†anguage‚ame forhe current culture'); + +49 + gŒy + + +51 + g$c_’ +-> +g‘Lªguage +('gb'); + +52 + g$t +-> +çž +('->getLanguage()hrows‡n Exception ifhe given†anguage is invalid.'); + +54 + $ÿtch + ( +Exû±iÚ + +$e +) + +56 +$t +-> + `·ss +('->getLanguage()hrows‡n Exception ifhe given†anguage is invalid.'); + +57 + } +} + +60 + g$t +-> +dŸg +('->getCurrency()'); + +61 + g$cu¼’cy_’ + = +$c_’ +-> +g‘Cu¼’cy +('EUR'); + +62 + g$cu¼’cy_ä + = +$c_ä +-> +g‘Cu¼’cy +('EUR'); + +63 + g$t +-> +is +( +$cu¼’cy_’ +, 'Euro', '->getCurrency()„eturnshe currency‚ame forhe current culture'); + +64 + g$t +-> +is +( +$cu¼’cy_ä +, 'euro', '->getCurrency()„eturnshe currency‚ame forhe current culture'); + +66 + gŒy + + +68 + g$c_’ +-> +g‘Cu¼’cy +('FRANCS'); + +69 + g$t +-> +çž +('->getCurrency()hrows‡n Exception ifhe given currency is invalid.'); + +71 + $ÿtch + ( +Exû±iÚ + +$e +) + +73 +$t +-> + `·ss +('->getCurrency()hrows‡n Exception ifhe given currency is invalid.'); + +74 + } +} + +77 + g$t +-> +dŸg +('->getCountry()'); + +78 + g$couÁry_’ + = +$c_’ +-> +g‘CouÁry +('FR'); + +79 + g$couÁry_ä + = +$c_ä +-> +g‘CouÁry +('FR'); + +80 + g$t +-> +is +( +$couÁry_’ +, 'France', '->getCountry()„eturnshe country‚ame forhe current culture'); + +81 + g$t +-> +is +( +$couÁry_ä +, 'France', '->getCountry()„eturnshe country‚ame forhe current culture'); + +83 + gŒy + + +85 + g$c_’ +-> +g‘CouÁry +('en'); + +86 + g$t +-> +çž +('->getCountry()hrows‡n Exception ifhe given country is invalid.'); + +88 + $ÿtch + ( +Exû±iÚ + +$e +) + +90 +$t +-> + `·ss +('->getCountry()hrows‡n Exception ifhe given country is invalid.'); + +91 + } +} + +94 + g$t +-> +dŸg +('->getLanguages()'); + +95 + g$Ïnguages_’ + = +$c_’ +-> +g‘Lªguages +(); + +96 + g$Ïnguages_ä + = +$c_ä +-> +g‘Lªguages +(); + +97 + g$t +-> +is +( +$Ïnguages_’ +['fr'], 'French', '->getLanguages()„eturns‡†ist of†anguages inhe†anguage ofhe†ocalized version'); + +98 + g$t +-> +is +( +$Ïnguages_ä +['fr'], 'français', '->getLanguages()„eturns‡†ist of†anguages inhe†anguage ofhe†ocalized version'); + +99 + g$t +-> +is +( +$Ïnguages_’ +, +$c_’ +-> +Lªguages +, '->getLanguages() isƒquivalento ->Languages'); + +101 + g$Ïnguages + = +$c_’ +-> +g‘Lªguages +( +¬¿y +('fr', 'es')); + +102 + g$t +-> +is +( +¬¿y_keys +( +$Ïnguages +), +¬¿y +('fr', 'es'), '->getLanguages()akes‡n‡rray of†anguages‡s its first‡rgument'); + +104 + gŒy + + +106 + g$c_’ +-> +g‘Lªguages +( +¬¿y +('fr', 'gb')); + +107 + g$t +-> +çž +('->getLanguages()hrows‡n Exception ifhe†ist of given†anguages contains some invalid ones.'); + +109 + $ÿtch + ( +Exû±iÚ + +$e +) + +111 +$t +-> + `·ss +('->getLanguages()hrows‡n Exception ifhe†ist of given†anguages contains some invalid ones.'); + +112 + } +} + +115 + g$t +-> +dŸg +('->getCurrencies()'); + +116 + g$cu¼’c›s_’ + = +$c_’ +-> +g‘Cu¼’c›s +(); + +117 + g$cu¼’c›s_ä + = +$c_ä +-> +g‘Cu¼’c›s +(); + +118 + g$t +-> +is +( +$cu¼’c›s_’ +['EUR'], 'Euro', '->getCurrencies()„eturns‡†ist of currencies inhe†anguage ofhe†ocalized version'); + +119 + g$t +-> +is +( +$cu¼’c›s_ä +['EUR'], 'euro', '->getCurrencies()„eturns‡†ist of currencies inhe†anguage ofhe†ocalized version'); + +120 + g$t +-> +is +( +$cu¼’c›s_’ +, +$c_’ +-> +Cu¼’c›s +, '->getCurrencies() isƒquivalento ->Currencies'); + +122 + g$cu¼’c›s + = +$c_’ +-> +g‘Cu¼’c›s +( +¬¿y +('USD', 'EUR')); + +123 + g$t +-> +is +( +¬¿y_keys +( +$cu¼’c›s +), +¬¿y +('EUR', 'USD'), '->getCurrencies()akes‡n‡rray of currencies‡s its first‡rgument'); + +125 + gŒy + + +127 + g$c_’ +-> +g‘Cu¼’c›s +( +¬¿y +('USD', 'FRANCS')); + +128 + g$t +-> +çž +('->getCurrencies()hrows‡n Exception ifhe†ist of given currencies contains some invalid ones.'); + +130 + $ÿtch + ( +Exû±iÚ + +$e +) + +132 +$t +-> + `·ss +('->getCurrencies()hrows‡n Exception ifhe†ist of given currencies contains some invalid ones.'); + +133 + } +} + +136 + g$t +-> +dŸg +('->getCountries()'); + +137 + g$couÁr›s_’ + = +$c_’ +-> +g‘CouÁr›s +(); + +138 + g$couÁr›s_ä + = +$c_ä +-> +g‘CouÁr›s +(); + +139 + g$t +-> +is +( +$couÁr›s_’ +['ES'], 'Spain', '->getCountries()„eturns‡†ist of countries inhe†anguage ofhe†ocalized version'); + +140 + g$t +-> +is +( +$couÁr›s_ä +['ES'], 'Espagne', '->getCountries()„eturns‡†ist of countries inhe†anguage ofhe†ocalized version'); + +141 + g$t +-> +is +( +$couÁr›s_’ +, +$c_’ +-> +CouÁr›s +, '->getCountries() isƒquivalento ->Countries'); + +143 + g$couÁr›s + = +$c_’ +-> +g‘CouÁr›s +( +¬¿y +('FR', 'ES')); + +144 + g$t +-> +is +( +¬¿y_keys +( +$couÁr›s +), +¬¿y +('FR', 'ES'), '->getCountries()akes‡n‡rray of countries‡s its first‡rgument'); + +146 + gŒy + + +148 + g$c_’ +-> +g‘CouÁr›s +( +¬¿y +('FR', 'EN')); + +149 + g$t +-> +çž +('->getCountries()hrows‡n Exception ifhe†ist of given countries contains some invalid ones.'); + +151 + $ÿtch + ( +Exû±iÚ + +$e +) + +153 +$t +-> + `·ss +('->getCountries()hrows‡n Exception ifhe†ist of given countries contains some invalid ones.'); + +154 + } +} + +157 + g$t +-> +dŸg +('->getScripts()'); + +158 + g$süts_’ + = +$c_’ +-> +g‘Süts +(); + +159 + g$süts_ä + = +$c_ä +-> +g‘Süts +(); + +160 + g$t +-> +is +( +$süts_’ +['Arab'], 'Arabic', '->getScripts()„eturns‡†ist of scripts inhe†anguage ofhe†ocalized version'); + +161 + g$t +-> +is +( +$süts_ä +['Arab'], 'arabe', '->getScripts()„eturns‡†ist of scripts inhe†anguage ofhe†ocalized version'); + +162 + g$t +-> +is +( +$süts_’ +, +$c_’ +-> +Süts +, '->getScripts() isƒquivalento ->Scripts'); + +165 + g$t +-> +dŸg +('->getTimeZones()'); + +166 + g$time_zÚes_’ + = +$c_’ +-> +g‘TimeZÚes +(); + +167 + g$time_zÚes_ä + = +$c_ä +-> +g‘TimeZÚes +(); + +169 + g$t +-> +is +( +$time_zÚes_’ +['America/Juneau']['ld'], 'Alaska Daylight Time', '->getTimeZones()„eturns‡†ist ofime zones inhe†anguage ofhe†ocalized version'); + +170 + g$t +-> +is +( +$time_zÚes_ä +['America/Juneau']['ld'], 'heure‡vancée de†â€™Alaska', '->getTimeZones()„eturns‡†ist ofime zones inhe†anguage ofhe†ocalized version'); + +171 + g$t +-> +is +( +$time_zÚes_’ +, +$c_’ +-> +TimeZÚes +, '->getTimeZones() isƒquivalento ->TimeZones'); + +174 + g$t +-> +dŸg +('->validCulture()'); + +175 + g$t +-> +is +( +$c +-> +v®idCuÉu» +('ä'), +Œue +, '->validCulture()„eturnsrue ifhe culture is valid'); + +176 + g$t +-> +is +( +$c +-> +v®idCuÉu» +('ä_FR'), +Œue +, '->validCulture()„eturnsrue ifhe culture is valid'); + +177 +fܗch + ( +¬¿y +('xxx', 'µ', 'äFR'è +as + +$cuÉu» +) + +179 + g$t +-> +is +( +$c +-> +v®idCuÉu» +( +$cuÉu» +), +çl£ +, '->validCulture()„eturns false ifhe culture does‚otƒxist'); + +183 + g$t +-> +dŸg +('::getCultures()'); + +184 + g$cuÉu»s + = +sfCuÉu»Info +:: +g‘CuÉu»s +(); + +185 + g$t +-> +is +( +š_¬¿y +('ä', +$cuÉu»s +), +Œue +, '::getCultures()„eturns‡n‡rray of‡ll‡vailable cultures'); + +186 + g$t +-> +is +( +š_¬¿y +('ä_FR', +$cuÉu»s +), +Œue +, '::getCultures()„eturns‡n‡rray of‡ll‡vailable cultures'); + +188 + g$cuÉu»s + = +sfCuÉu»Info +:: +g‘CuÉu»s +(sfCuÉu»Info:: +NEUTRAL +); + +189 + g$t +-> +is +( +š_¬¿y +('ä', +$cuÉu»s +), +Œue +, '::getCultures()„eturns‡n‡rray of‡ll‡vailable cultures'); + +190 + g$t +-> +is +( +š_¬¿y +('ä_FR', +$cuÉu»s +), +çl£ +, '::getCultures()„eturns‡n‡rray of‡ll‡vailable cultures'); + +192 + g$cuÉu»s + = +sfCuÉu»Info +:: +g‘CuÉu»s +(sfCuÉu»Info:: +SPECIFIC +); + +193 + g$t +-> +is +( +š_¬¿y +('ä', +$cuÉu»s +), +çl£ +, '::getCultures()„eturns‡n‡rray of‡ll‡vailable cultures'); + +194 + g$t +-> +is +( +š_¬¿y +('ä_FR', +$cuÉu»s +), +Œue +, '::getCultures()„eturns‡n‡rray of‡ll‡vailable cultures'); + +197 + g$t +-> +dŸg +('->getParent()'); + +198 + g$c + = +sfCuÉu»Info +:: +g‘In¡ªû +('fr_FR'); + +199 + g$t +-> +i§_ok +( +$c +-> +g‘P¬’t +(), 'sfCultureInfo', '->getParent()„eturns‡ sfCultureInfo instance'); + +200 + g$t +-> +is +( +$c +-> +g‘P¬’t +()-> +g‘Name +(), 'fr', '->getParent()„eturnshe…arent culture'); + +201 + g$c + = +sfCuÉu»Info +:: +g‘In¡ªû +('fr'); + +202 + g$t +-> +is +( +$c +-> +g‘P¬’t +()-> +g‘Name +(), 'en', '->getParent()„eturnshe invariant culture ifhe culture is‚eutral'); + +205 + g$t +-> +dŸg +('->getIsNeutralCulture()'); + +206 + g$c + = +sfCuÉu»Info +:: +g‘In¡ªû +('fr_FR'); + +207 + g$t +-> +is +( +$c +-> +g‘IsNeuŒ®CuÉu» +(), +çl£ +, '->getIsNeutralCulture()„eturns false ifhe culture is specific'); + +208 + g$c + = +sfCuÉu»Info +:: +g‘In¡ªû +('fr'); + +209 + g$t +-> +is +( +$c +-> +g‘IsNeuŒ®CuÉu» +(), +Œue +, '->getIsNeutralCulture()„eturnsrue ifhe culture is‚eutral'); + +212 + g$t +-> +dŸg +('->getEnglishName()'); + +213 + g$c + = +sfCuÉu»Info +:: +g‘In¡ªû +('fr_FR'); + +214 + g$t +-> +is +( +$c +-> +g‘EnglishName +(), 'French (France)', '->getEnglishName()„eturnsheƒnglish‚ame ofhe current culture'); + +215 + g$c + = +sfCuÉu»Info +:: +g‘In¡ªû +('fr'); + +216 + g$t +-> +is +( +$c +-> +g‘EnglishName +(), 'French', '->getEnglishName()„eturnsheƒnglish‚ame ofhe current culture'); + +217 + g$t +-> +is +( +$c +-> +g‘EnglishName +(), $c-> +EnglishName +, '->getEnglishName() isƒquivalento ->EnglishName'); + +220 + g$t +-> +dŸg +('->getNativeName()'); + +221 + g$c + = +sfCuÉu»Info +:: +g‘In¡ªû +('fr_FR'); + +222 + g$t +-> +is +( +$c +-> +g‘N©iveName +(), 'français (France)', '->getNativeName()„eturnshe‚ative‚ame ofhe current culture'); + +223 + g$c + = +sfCuÉu»Info +:: +g‘In¡ªû +('fr'); + +224 + g$t +-> +is +( +$c +-> +g‘N©iveName +(), 'français', '->getNativeName()„eturnshe‚ative‚ame ofhe current culture'); + +225 + g$t +-> +is +( +$c +-> +g‘N©iveName +(), $c-> +N©iveName +, '->getNativeName() isƒquivalento ->NativeName'); + +228 + g$t +-> +dŸg +('->getCalendar()'); + +229 + g$c + = +sfCuÉu»Info +:: +g‘In¡ªû +('fr'); + +230 + g$t +-> +is +( +$c +-> +g‘C®’d¬ +(), 'gregorian', '->getCalendar()„eturnshe default calendar'); + +231 + g$t +-> +is +( +$c +-> +g‘C®’d¬ +(), $c-> +C®’d¬ +, '->getCalendar() isƒquivalento ->Calendar'); + +234 + g$t +-> +dŸg +('__get()'); + +235 + gŒy + + +237 + g$c +-> + gNÚExi¡ªt +; + +238 + g$t +-> +çž +('__get()hrows‡nƒxception ifhe…roperty does‚otƒxist'); + +240 + $ÿtch + ( +sfExû±iÚ + +$e +) + +242 +$t +-> + `·ss +('__get()hrows‡nƒxception ifhe…roperty does‚otƒxist'); + +243 + } +} + +246 + g$t +-> +dŸg +('__set()'); + +247 + gŒy + + +249 + g$c +-> + gNÚExi¡ªt + = 12; + +250 + g$t +-> +çž +('__set()hrows‡nƒxception ifhe…roperty does‚otƒxist'); + +252 + $ÿtch + ( +sfExû±iÚ + +$e +) + +254 +$t +-> + `·ss +('__set()hrows‡nƒxception ifhe…roperty does‚otƒxist'); + +255 + } +} + +258 + g$t +-> +dŸg +('->getDateTimeFormat()'); + +259 + g$c + = +sfCuÉu»Info +:: +g‘In¡ªû +(); + +260 + g$t +-> +i§_ok +( +$c +-> +g‘D©eTimeFÜm© +(), 'sfDateTimeFormatInfo', '->getDateTimeFormat()„eturns‡ sfDateTimeFormatInfo instance'); + +263 + g$t +-> +dŸg +('->setDateTimeFormat()'); + +264 + g$d + = +$c +-> +g‘D©eTimeFÜm© +(); + +265 + g$c +-> +£tD©eTimeFÜm© +('yyyy'); + +266 + g$t +-> +is +( +$c +-> +g‘D©eTimeFÜm© +(), 'yyyy', '->setDateTimeFormat() setshe sfDateTimeFormatInfo instance'); + +267 + g$c +-> + gD©eTimeFÜm© + = 'mm'; + +268 + g$t +-> +is +( +$c +-> +g‘D©eTimeFÜm© +(), 'mm', '->setDateTimeFormat() isƒquivalento ->DateTimeFormat = '); + +271 + g$t +-> +dŸg +('->getNumberFormat()'); + +272 + g$c + = +sfCuÉu»Info +:: +g‘In¡ªû +(); + +273 + g$t +-> +i§_ok +( +$c +-> +g‘Numb”FÜm© +(), 'sfNumberFormatInfo', '->getNumberFormat()„eturns‡ sfNumberFormatInfo instance'); + +276 + g$t +-> +dŸg +('->setNumberFormat()'); + +277 + g$d + = +$c +-> +g‘Numb”FÜm© +(); + +278 + g$c +-> +£tNumb”FÜm© +('.'); + +279 + g$t +-> +is +( +$c +-> +g‘Numb”FÜm© +(), '.', '->setNumberFormat() setshe sfNumberFormatInfo instance'); + +280 + g$c +-> + gNumb”FÜm© + = '#'; + +281 + g$t +-> +is +( +$c +-> +g‘Numb”FÜm© +(), '#', '->setNumberFormat() isƒquivalento ->NumberFormat = '); + + @lib/vendor/symfony/test/unit/i18n/sfI18NTest.php + +1 +g‘Ev’tDi¥©ch” +(); + +29 + g$ÿche + = +Ãw + +sfNoCache +(); + +32 + g$t +-> +dŸg +('->initialize()'); + +33 + g$i18n + = +Ãw + +sfI18N +( +$cÚfigu¿tiÚ +, +$ÿche +); + +34 + g$di¥©ch” +-> +nÙify +( +Ãw + +sfEv’t +( +nuÎ +, 'u£r.chªge_cuÉu»', +¬¿y +('culture' => 'fr'))); + +35 + g$t +-> +is +( +$i18n +-> +g‘CuÉu» +(), 'fr', '->initialize() connectsohe user.change_cultureƒvent'); + +38 ià( +þass_exi¡s +('LoÿË'è&& ( + g$’ + = +LoÿË +:: +lookup +( +¬¿y +('’-US'), '’-US', +Œue +)è&& ( + g$ä + = Locale::lookup(array('fr-FR'), 'fr-FR',rue))) + +40 + g$i18n + = +Ãw + +sfI18N +( +$cÚfigu¿tiÚ +, +$ÿche +, +¬¿y +('cuÉu»' => +$ä +)); + +41 + g$äLoÿË + = +loÿËcÚv +(); + +42 + g$i18n + = +Ãw + +sfI18N +( +$cÚfigu¿tiÚ +, +$ÿche +, +¬¿y +('cuÉu»' => +$’ +)); + +43 + g$’LoÿË + = +loÿËcÚv +(); + +44 + g$t +-> +i¢t +( +£rŸlize +( +$äLoÿË +), s”Ÿlize( +$’LoÿË +), '->initialize() setshe PHP†ocale when‡ "culture" option is…rovided'); + +48 + g$t +-> +sk +('Locale class or English‡nd French†ocales‡re‚ot installed'); + +52 + g$t +-> +dŸg +('->getCulture() ->setCulture()'); + +53 + g$i18n + = +Ãw + +sfI18N +( +$cÚfigu¿tiÚ +, +$ÿche +); + +54 + g$t +-> +is +( +$i18n +-> +g‘CuÉu» +(), 'en', '->getCulture()„eturnshe current culture'); + +55 + g$i18n +-> +£tCuÉu» +('fr'); + +56 + g$t +-> +is +( +$i18n +-> +g‘CuÉu» +(), 'fr', '->setCulture() setshe current culture'); + +59 + g$t +-> +dŸg +('->__()'); + +60 + gsfCÚfig +:: +£t +('sf_charset', 'UTF-8'); + +61 + g$i18n + = +Ãw + +sfI18N +( +$cÚfigu¿tiÚ +, +$ÿche +, +¬¿y +('culture' => 'fr')); + +62 + g$t +-> +is +( +$i18n +-> +__ +('anƒnglish sentence'), 'une…hraseƒn français', '->__()ranslates‡ string'); + +63 þas  + cEnglishS’‹nû + + +65 +public + +funùiÚ + + $__toSŒšg +() + +69 + } +} + +70 + g$t +-> +is +( +$i18n +-> +__ +( +Ãw + +EnglishS’‹nû +()), 'une…hraseƒn français', '->__()ranslates‡n object with __toString()'); + +71 + g$¬gs + = +¬¿y +('%time¡amp%' => +$time¡amp + = +time +()); + +72 + g$t +-> +is +( +$i18n +-> +__ +('Cu¼’ˆtime¡am°i %time¡amp%', +$¬gs +), +¡¹r +('Leimestamp courantƒst %timestamp%', $args), '->__()akes‡n‡rray of‡rguments‡s its second‡rgument'); + +73 + g$t +-> +is +( +$i18n +-> +__ +('ªƒnglish s’‹nû', +¬¿y +(), 'messages_bis'), 'une…hraseƒn français (bis)', '->__()akes‡ catalogue‡s itshird‡rgument'); + +76 + g$t +-> +is +( +$i18n +-> +__ +('1 minute'), '1 menit', '->__() "1 minute"ranslated‡s "1 menit"'); + +77 + g$t +-> +is +( +$i18n +-> +__ +('1'), '1', '->__() "1"ranslated‡s "1"'); + +78 + g$t +-> +is +( +$i18n +-> +__ +(1), '1', '->__()‚umber 1ranslated‡s "1"'); + +80 + g$i18n +-> +£tCuÉu» +('fr_BE'); + +81 + g$t +-> +is +( +$i18n +-> +__ +('anƒnglish sentence'), 'une…hraseƒn belge', '->__()ranslates‡ string'); + +84 + g$i18n + = +Ãw + +sfI18N +( +$cÚfigu¿tiÚ +, +$ÿche +, +¬¿y +('debug' => +Œue +)); + +85 + g$t +-> +is +( +$i18n +-> +__ +('unknown'), '[T]unknown[/T]', '->__()‡dds‡…refix‡nd‡ suffix on untranslated strings if debug is on'); + +86 + g$i18n + = +Ãw + +sfI18N +( +$cÚfigu¿tiÚ +, +$ÿche +, +¬¿y +('debug' => +Œue +, 'untranslated_prefix' => '-', 'untranslated_suffix' => '#')); + +87 + g$t +-> +is +( +$i18n +-> +__ +('unknown'), '-unknown#', '->initialize() can changehe default…refix‡nd suffix dor untranslated strings'); + +90 + g$t +-> +dŸg +('->getCountry()'); + +91 + g$i18n + = +Ãw + +sfI18N +( +$cÚfigu¿tiÚ +, +$ÿche +, +¬¿y +('culture' => 'fr')); + +92 + g$t +-> +is +( +$i18n +-> +g‘CouÁry +('FR'), 'France', '->getCountry()„eturnshe‚ame of‡ country forhe current culture'); + +93 + g$t +-> +is +( +$i18n +-> +g‘CouÁry +('FR', 'es'), 'Francia', '->getCountry()akes‡n optional culture‡s its second‡rgument'); + +96 + g$t +-> +dŸg +('->getNativeName()'); + +97 + g$i18n + = +Ãw + +sfI18N +( +$cÚfigu¿tiÚ +, +$ÿche +, +¬¿y +('culture' => 'fr')); + +98 + g$t +-> +is +( +$i18n +-> +g‘N©iveName +('fr'), 'français', '->getNativeName()„eturnshe‚ame of‡ culture'); + +101 + g$t +-> +dŸg +('->getTimestampForCulture()'); + +102 + g$i18n + = +Ãw + +sfI18N +( +$cÚfigu¿tiÚ +, +$ÿche +, +¬¿y +('culture' => 'fr')); + +103 + g$t +-> +is +( +$i18n +-> +g‘Time¡ampFÜCuÉu» +('15/10/2005'), +mktime +(0, 0, 0, '10', '15', '2005'), '->getTimestampForCulture()„eturnsheimestamp for‡ data formatted inhe current culture'); + +104 + g$t +-> +is +( +$i18n +-> +g‘Time¡ampFÜCuÉu» +('15/10/2005 15:33'), +mktime +(15, 33, 0, '10', '15', '2005'), '->getTimestampForCulture()„eturnsheimestamp for‡ data formatted inhe current culture'); + +105 + g$t +-> +is +( +$i18n +-> +g‘Time¡ampFÜCuÉu» +('10/15/2005', '’_US'), +mktime +(0, 0, 0, '10', '15', '2005'), '->getTimestampForCulture() canake‡ culture‡s its second‡rgument'); + +106 + g$t +-> +is +( +$i18n +-> +g‘Time¡ampFÜCuÉu» +('10/15/2005 3:33…m', '’_US'), +mktime +(15, 33, 0, '10', '15', '2005'), '->getTimestampForCulture() canake‡ culture‡s its second‡rgument'); + +107 + g$t +-> +is +( +$i18n +-> +g‘Time¡ampFÜCuÉu» +('nه d©e'), +nuÎ +, '->getTimestampForCulture()„eturnshe day, month‡nd year for‡ data formatted inhe current culture'); + +110 + g$t +-> +dŸg +('->getDateForCulture()'); + +111 + g$i18n + = +Ãw + +sfI18N +( +$cÚfigu¿tiÚ +, +$ÿche +, +¬¿y +('culture' => 'fr')); + +112 + g$t +-> +is +( +$i18n +-> +g‘D©eFÜCuÉu» +('15/10/2005'), +¬¿y +('15', '10', '2005'), '->getDateForCulture()„eturnshe day, month‡nd year for‡ data formatted inhe current culture'); + +113 + g$t +-> +is +( +$i18n +-> +g‘D©eFÜCuÉu» +('10/15/2005', '’_US'), +¬¿y +('15', '10', '2005'), '->getDateForCulture() canake‡ culture‡s its second‡rgument'); + +114 + g$t +-> +is +( +$i18n +-> +g‘D©eFÜCuÉu» +( +nuÎ +),‚ull, '->getDateForCulture()„eturns‚ull in case of conversion…roblem'); + +115 + g$t +-> +is +( +$i18n +-> +g‘D©eFÜCuÉu» +('nه d©e'), +nuÎ +, '->getDateForCulture()„eturns‚ull in case of conversion…roblem'); + +118 + g$i18n + = +Ãw + +sfI18N +( +$cÚfigu¿tiÚ +, +$ÿche +, +¬¿y +('culture' => 'de')); + +119 + g$t +-> +is +( +$i18n +-> +g‘D©eFÜCuÉu» +('15.10.2005'), +¬¿y +('15', '10', '2005'), '->getDateForCulture()„eturnshe day, month‡nd year for‡ data formatted in culture with dots‡s separators'); + +120 + g$t +-> +is +( +$i18n +-> +g‘D©eFÜCuÉu» +('15x10x2005'), +nuÎ +, '->getDateForCulture()„eturns‚ull in case of conversion…roblem with dots‡s separators'); + +123 + g$t +-> +dŸg +('->getTimeForCulture()'); + +124 + g$i18n + = +Ãw + +sfI18N +( +$cÚfigu¿tiÚ +, +$ÿche +, +¬¿y +('culture' => 'fr')); + +125 + g$t +-> +is +( +$i18n +-> +g‘TimeFÜCuÉu» +('15:33'), +¬¿y +('15', '33'), '->getTimeForCulture()„eturnshe hour‡nd minuter for‡ime formatted inhe current culture'); + +126 + g$t +-> +is +( +$i18n +-> +g‘TimeFÜCuÉu» +('3:33…m', '’_US'), +¬¿y +('15', '33'), '->getTimeForCulture() canake‡ culture‡s its second‡rgument'); + +127 + g$t +-> +is +( +$i18n +-> +g‘TimeFÜCuÉu» +( +nuÎ +),‚ull, '->getTimeForCulture()„eturns‚ull in case of conversion…roblem'); + +128 + g$t +-> +is +( +$i18n +-> +g‘TimeFÜCuÉu» +('nهime'), +nuÎ +, '->getTimeForCulture()„eturns‚ull in case of conversion…roblem'); + +131 + g$i18n + = +Ãw + +sfI18N +( +$cÚfigu¿tiÚ +, +$ÿche +, +¬¿y +('culture' => 'sv')); + +132 + g$t +-> +is +( +$i18n +-> +g‘TimeFÜCuÉu» +('15.33'), +¬¿y +('15', '33'), '->getTimeForCulture()„eturnshe hour‡nd minuter for‡ime formatted in culture with dots‡s separators'); + +133 + g$t +-> +is +( +$i18n +-> +g‘TimeFÜCuÉu» +('15x33'), +nuÎ +, '->getTimeForCulture()„eturns‚ull in case of conversion…roblem with dots‡s separators'); + + @lib/vendor/symfony/test/unit/i18n/sfMessageSourceTest.php + +1 +dŸg +('::factory()'); + +27 + g$sourû + = +sfMes§geSourû +:: +çùÜy +('Simple'); + +28 + g$t +-> +ok +( +$sourû + +š¡ªûof + +sfIMes§geSourû +, '::factory()„eturns‡ sfMessageSource instance'); + +31 + g$t +-> +dŸg +('->getCulture() ->setCulture()'); + +32 + g$sourû +-> +£tCuÉu» +('en'); + +33 + g$t +-> +is +( +$sourû +-> +g‘CuÉu» +(), 'en', '->setCulture() changeshe source culture'); + +34 + g$sourû +-> +£tCuÉu» +('fr'); + +35 + g$t +-> +is +( +$sourû +-> +g‘CuÉu» +(), 'fr', '->getCulture() getshe current source culture'); + + @lib/vendor/symfony/test/unit/i18n/sfMessageSource_AggregateTest.php + +1 +£tCuÉu» +('fr_FR'); + +32 + g$t +-> +dŸg +('->save()'); + +33 + g$t +-> +is +( +$sourû +-> +§ve +(), +çl£ +, '->save()„eturns false if‚o message is saved'); + +34 + g$sourû +-> +­³nd +('New message'); + +35 + g$t +-> +is +( +$sourû +-> +§ve +(), +Œue +, '->save()„eturnsrue if some messages‡re saved'); + +36 + g$sourû + = +g‘_sourû +( +$‹mp1 +, +$‹mp2 +); + +37 + g$sourû +-> +£tCuÉu» +('fr_FR'); + +38 + g$fÜm© + = +Ãw + +sfMes§geFÜm© +( +$sourû +); + +39 + g$t +-> +is +( +$fÜm© +-> +fÜm© +('New message'), 'New message', '->save() saves‚ew messages'); + +42 + g$sourû +-> +£tCuÉu» +('it'); + +43 + g$sourû +-> +­³nd +('New message (it)'); + +44 + g$sourû +-> +§ve +(); + +46 + g$sourû + = +g‘_sourû +( +$‹mp1 +, +$‹mp2 +); + +47 + g$sourû +-> +£tCuÉu» +('it'); + +48 + g$fÜm© + = +Ãw + +sfMes§geFÜm© +( +$sourû +); + +49 + g$t +-> +is +( +$fÜm© +-> +fÜm© +('New message (it)'), 'New message (it)', '->save() saves‚ew messages'); + +51 + g$sourû +-> +£tCuÉu» +('fr_FR'); + +54 + g$t +-> +dŸg +('->update()'); + +55 + g$t +-> +is +( +$sourû +-> +upd©e +('New mes§ge', 'Nouv—u mes§ge', 'Comm’ts'), +Œue +, '->update()„eturnsrue ifhe message has been updated'); + +56 + g$sourû + = +g‘_sourû +( +$‹mp1 +, +$‹mp2 +); + +57 + g$sourû +-> +£tCuÉu» +('fr_FR'); + +58 + g$fÜm© + = +Ãw + +sfMes§geFÜm© +( +$sourû +); + +59 + g$t +-> +is +( +$fÜm© +-> +fÜm© +('New message'), 'Nouveau message', '->update() updates‡ messageranslation'); + +62 + g$t +-> +dŸg +('->delete()'); + +63 + g$t +-> +is +( +$sourû +-> +d–‘e +('Nڃxi¡ªˆmes§ge'), +çl£ +, '->delete()„eturns false ifhe message has‚ot been deleted'); + +64 + g$t +-> +is +( +$sourû +-> +d–‘e +('New mes§ge'), +Œue +, '->delete()„eturnsrue ifhe message has been deleted'); + +65 + g$sourû + = +g‘_sourû +( +$‹mp1 +, +$‹mp2 +); + +66 + g$sourû +-> +£tCuÉu» +('fr_FR'); + +67 + g$fÜm© + = +Ãw + +sfMes§geFÜm© +( +$sourû +); + +68 + g$t +-> +is +( +$fÜm© +-> +fÜm© +('New message'), 'New message', '->delete() deletes‡ message'); + +71 + gsfToÞk™ +:: +þ—rDœeùÜy +( +$‹mp1 +); + +72 + gsfToÞk™ +:: +þ—rDœeùÜy +( +$‹mp2 +); + +73 +rmdœ +( +$‹mp1 +); + +74 +rmdœ +( +$‹mp2 +); + +76 +funùiÚ + + $g‘_sourû +( +$‹mp1 +, +$‹mp2 +) + +78 +$sourû1 + = +sfMes§geSourû +:: + `çùÜy +('XLIFF', +$‹mp1 +); + +79 +$sourû2 + = +sfMes§geSourû +:: + `çùÜy +('XLIFF', +$‹mp2 +); + +81  +sfMes§geSourû +:: + `çùÜy +('Agg»g©e', + `¬¿y +( +$sourû1 +, +$sourû2 +)); + +82 + } +} + + @lib/vendor/symfony/test/unit/i18n/sfMessageSource_FileTest.php + +1 +£tCuÉu» +('fr_FR'); + +33 + g$t +-> +dŸg +('->getCatalogueByDir()'); + +34 + g$t +-> +is +( +$sourû +-> +g‘C©®ogueByDœ +('mes§ges'), +¬¿y +('fr_FR/messages.xml', 'fr/messages.xml'), '->getCatalogueByDir()„eturns catalogues by directory'); + +37 + g$t +-> +dŸg +('->getCatalogueList()'); + +38 + g$t +-> +is +( +$sourû +-> +g‘C©®ogueLi¡ +('mes§ges'), +¬¿y +('fr_FR/messages.xml', 'fr/messages.xml', 'messages.fr_FR.xml', 'messages.fr.xml', 'messages.xml'), '->getCatalogueByDir()„eturns‡ll catalogues forhe current culture'); + +41 + g$t +-> +dŸg +('->getSource()'); + +42 + g$t +-> +is +( +$sourû +-> +g‘Sourû +('ä_FR/mes§ges.xml'), +dœÇme +( +__FILE__ +).'/fixtures/fr_FR/messages.xml', '->getSource()„eturnshe full…ath‚ameo‡ specific variant'); + +45 + g$t +-> +dŸg +('->isValidSource()'); + +46 + g$t +-> +is +( +$sourû +-> +isV®idSourû +($sourû-> +g‘Sourû +('ä_FR/mes§ges.xml')), +çl£ +, '->isValidSource()„eturns false ifhe source is‚ot valid'); + +47 + g$t +-> +is +( +$sourû +-> +isV®idSourû +($sourû-> +g‘Sourû +('mes§ges.ä.xml')), +Œue +, '->isValidSource()„eturnsrue ifhe source is valid'); + +50 + g$t +-> +dŸg +('->getLastModified()'); + +51 + g$t +-> +is +( +$sourû +-> +g‘La¡Modif›d +($sourû-> +g‘Sourû +('fr_FR/messages.xml')), 0, '->getLastModified()„eturns 0 ifhe source does‚otƒxist'); + +52 + g$t +-> +is +( +$sourû +-> +g‘La¡Modif›d +($sourû-> +g‘Sourû +('mes§ges.ä.xml')), +fžemtime +($source->getSource('messages.fr.xml')), '->getLastModified()„eturnshe†ast modifiedime ofhe source'); + + @lib/vendor/symfony/test/unit/i18n/sfMessageSource_SQLiteTest.php + +1 +sk +('SQL™ÃededØruÀthe£e¡s', +$¶ª +); + +23 + g$‹mp + = +dœÇme +( +__FILE__ +).'/'. +¿nd +(11111, 99999); + +24 +sf_‹¡_shutdown +(); + +26 +»gi¡”_shutdown_funùiÚ +('sf_test_shutdown'); + +28 +funùiÚ + + $sf_‹¡_shutdown +() + +30 +glob® + +$‹mp +; + +32 ià( + `fže_exi¡s +( +$‹mp +)) + +34 + `uƚk +( +$‹mp +); + +36 + } +} + +38 + g$sourû + = +š™_fixtu»s +( +$‹mp +); + +39 + g$sourû +-> +£tCuÉu» +('fr_FR'); + +42 + g$t +-> +dŸg +('->loadData()'); + +43 + g$mes§ges + = +$sourû +-> +lßdD©a +($sourû-> +g‘Sourû +('messages.fr_FR')); + +44 + g$t +-> +is +( +$mes§ges +['anƒnglish sentence'][0], 'une…hraseƒn français', '->loadData()†oads messages from‡ SQLite file'); + +47 + g$t +-> +dŸg +('->save()'); + +48 + g$t +-> +is +( +$sourû +-> +§ve +(), +çl£ +, '->save()„eturns false if‚o message is saved'); + +49 + g$sourû +-> +­³nd +('New message'); + +50 + g$t +-> +is +( +$sourû +-> +§ve +(), +Œue +, '->save()„eturnsrue if some messages‡re saved'); + +51 + g$sourû + = +sfMes§geSourû +:: +çùÜy +('SQL™e', 'sql™e://loÿlho¡/'. +$‹mp +); + +52 + g$sourû +-> +£tCuÉu» +('fr_FR'); + +53 + g$fÜm© + = +Ãw + +sfMes§geFÜm© +( +$sourû +); + +54 + g$t +-> +is +( +$fÜm© +-> +fÜm© +('New message'), 'New message', '->save() saves‚ew messages'); + +57 + g$sourû +-> +£tCuÉu» +('it'); + +58 + g$sourû +-> +­³nd +('New message (it)'); + +59 + g$sourû +-> +§ve +(); + +61 + g$sourû + = +sfMes§geSourû +:: +çùÜy +('SQL™e', 'sql™e://loÿlho¡/'. +$‹mp +); + +62 + g$sourû +-> +£tCuÉu» +('it'); + +63 + g$fÜm© + = +Ãw + +sfMes§geFÜm© +( +$sourû +); + +64 + g$t +-> +is +( +$fÜm© +-> +fÜm© +('New message (it)'), 'New message (it)', '->save() saves‚ew messages'); + +66 + g$sourû +-> +£tCuÉu» +('fr_FR'); + +69 + g$t +-> +dŸg +('->update()'); + +70 + g$t +-> +is +( +$sourû +-> +upd©e +('New mes§ge', 'Nouv—u mes§ge', 'Comm’ts'), +Œue +, '->update()„eturnsrue ifhe message has been updated'); + +71 + g$sourû + = +sfMes§geSourû +:: +çùÜy +('SQL™e', 'sql™e://loÿlho¡/'. +$‹mp +); + +72 + g$sourû +-> +£tCuÉu» +('fr_FR'); + +73 + g$fÜm© + = +Ãw + +sfMes§geFÜm© +( +$sourû +); + +74 + g$t +-> +is +( +$fÜm© +-> +fÜm© +('New message'), 'Nouveau message', '->update() updates‡ messageranslation'); + +77 + g$t +-> +dŸg +('->delete()'); + +78 + g$t +-> +is +( +$sourû +-> +d–‘e +('Nڃxi¡ªˆmes§ge'), +çl£ +, '->delete()„eturns false ifhe message has‚ot been deleted'); + +79 + g$t +-> +is +( +$sourû +-> +d–‘e +('New mes§ge'), +Œue +, '->delete()„eturnsrue ifhe message has been deleted'); + +80 + g$sourû + = +sfMes§geSourû +:: +çùÜy +('SQL™e', 'sql™e://loÿlho¡/'. +$‹mp +); + +81 + g$sourû +-> +£tCuÉu» +('fr_FR'); + +82 + g$fÜm© + = +Ãw + +sfMes§geFÜm© +( +$sourû +); + +83 + g$t +-> +is +( +$fÜm© +-> +fÜm© +('New message'), 'New message', '->delete() deletes‡ message'); + +85 +funùiÚ + + $š™_fixtu»s +( +$‹mp +) + +87 +$db + = + `sql™e_ݒ +( +$‹mp +); + +89 + `sql™e_qu”y +('CREATE TABLE c©®ogu(ÿt_id INTEGER PRIMARY KEY,‚amVARCHAR NOT NULL, sourû_Ïng VARCHAR,¬g‘_Ïng VARCHAR, d©e_ü—‹d INT, d©e_modif›d INT,‡uthÜ VARCHAR);', +$db +); + +90 + `sql™e_qu”y +('CREATE TABLE¿ns_un™ (msg_id INTEGER PRIMARY KEY, c©_id INTEGER NOT NULL DEFAULT \'1\', id VARCHAR, sourû TEXT,¬g‘ TEXT, comm’t TEXT, d©e_added INT, d©e_modif›d INT,‡uthÜ VARCHAR,¿n¦©ed INT(1èNOT NULL DEFAULT \'0\');', +$db +); + +91 + `sql™e_qu”y +("INSERT INTO c©®ogu(ÿt_id,‚ameèVALUES (1, 'mes§ges.ä_FR')", +$db +); + +92 + `sql™e_qu”y +("INSERT INTO c©®ogu(ÿt_id,‚ameèVALUES (2, 'mes§ges.™')", +$db +); + +93 + `sql™e_qu”y +("INSERT INTO¿ns_un™ (msg_id, c©_id, id, sourû,¬g‘,¿n¦©edèVALUES (1, 1, 1, 'ªƒnglish s’‹nû', 'uÅh¿£ƒÀäªÃ§ais', 1)", +$db +); + +94 + `sql™e_qu”y +("INSERT INTO¿ns_un™ (msg_id, c©_id, id, sourû,¬g‘,¿n¦©edèVALUES (2, 1, 2, 'ªÙh”ƒnglish s’‹nû', 'uÇuŒph¿£ƒÀäªÃ§ais', 1)", +$db +); + +96 + `sql™e_þo£ +( +$db +); + +98  +sfMes§geSourû +:: + `çùÜy +('SQL™e', 'sql™e://loÿlho¡/'. +$‹mp +); + +99 + } +} + + @lib/vendor/symfony/test/unit/i18n/sfMessageSource_XLIFFTest.php + +1 +£tCuÉu» +('fr_FR'); + +27 + g$t +-> +dŸg +('->loadData()'); + +28 + g$mes§ges + = +$sourû +-> +lßdD©a +($sourû-> +g‘Sourû +('messages.fr.xml')); + +29 + g$t +-> +is +( +$mes§ges +['anƒnglish sentence'][0], 'une…hraseƒn français', '->loadData()†oads messages from‡ XLIFF file'); + +31 + g$t +-> +is +( +$sourû +-> +lßdD©a +($sourû-> +g‘Sourû +('šv®id.xml')), +çl£ +, '->loadData()„eturns false if it cannot†oadhe messages fromhe file'); + +34 + g$t +-> +dŸg +('->save()'); + +35 + g$t +-> +is +( +$sourû +-> +§ve +(), +çl£ +, '->save()„eturns false if‚o message is saved'); + +36 + g$sourû +-> +­³nd +('New message'); + +37 + g$t +-> +is +( +$sourû +-> +§ve +(), +Œue +, '->save()„eturnsrue if some messages‡re saved'); + +38 + g$sourû + = +sfMes§geSourû +:: +çùÜy +('XLIFF', +$‹mp +); + +39 + g$sourû +-> +£tCuÉu» +('fr_FR'); + +40 + g$fÜm© + = +Ãw + +sfMes§geFÜm© +( +$sourû +); + +41 + g$t +-> +is +( +$fÜm© +-> +fÜm© +('New message'), 'New message', '->save() saves‚ew messages'); + +44 + g$sourû +-> +£tCuÉu» +('it'); + +45 + g$sourû +-> +­³nd +('New message & (it)'); + +46 + g$sourû +-> +§ve +(); + +48 + g$sourû + = +sfMes§geSourû +:: +çùÜy +('XLIFF', +$‹mp +); + +49 + g$sourû +-> +£tCuÉu» +('it'); + +50 + g$fÜm© + = +Ãw + +sfMes§geFÜm© +( +$sourû +); + +51 + g$t +-> +is +( +$fÜm© +-> +fÜm© +('New message & (it)'), 'New message & (it)', '->save() saves‚ew messages'); + +53 + g$sourû +-> +£tCuÉu» +('fr_FR'); + +56 + g$t +-> +dŸg +('->update()'); + +57 + g$t +-> +is +( +$sourû +-> +upd©e +('New mes§ge', 'Nouv—u mes§ge', ''), +Œue +, '->update()„eturnsrue ifhe message has been updated'); + +58 + g$sourû + = +sfMes§geSourû +:: +çùÜy +('XLIFF', +$‹mp +); + +59 + g$sourû +-> +£tCuÉu» +('fr_FR'); + +60 + g$fÜm© + = +Ãw + +sfMes§geFÜm© +( +$sourû +); + +61 + g$t +-> +is +( +$fÜm© +-> +fÜm© +('New message'), 'Nouveau message', '->update() updates‡ messageranslation'); + +64 + g$t +-> +dŸg +('->delete()'); + +65 + g$t +-> +is +( +$sourû +-> +d–‘e +('Nڃxi¡ªˆmes§ge'), +çl£ +, '->delete()„eturns false ifhe message has‚ot been deleted'); + +66 + g$t +-> +is +( +$sourû +-> +d–‘e +('New mes§ge'), +Œue +, '->delete()„eturnsrue ifhe message has been deleted'); + +67 + g$sourû + = +sfMes§geSourû +:: +çùÜy +('XLIFF', +$‹mp +); + +68 + g$sourû +-> +£tCuÉu» +('fr_FR'); + +69 + g$fÜm© + = +Ãw + +sfMes§geFÜm© +( +$sourû +); + +70 + g$t +-> +is +( +$fÜm© +-> +fÜm© +('New message'), 'New message', '->delete() deletes‡ message'); + +73 + gsfToÞk™ +:: +þ—rDœeùÜy +( +$‹mp +); + +74 +rmdœ +( +$‹mp +); + + @lib/vendor/symfony/test/unit/i18n/sfNumberFormatInfoTest.php + +1 +dŸg +('__construct()'); + +17 + gŒy + + +19 + g$c + = +Ãw + +sfNumb”FÜm©Info +(); + +20 + g$t +-> +çž +('__construct()akes‡ mandatory ICU‡rray‡s its first‡rgument'); + +22 + $ÿtch + ( +sfExû±iÚ + +$e +) + +24 +$t +-> + `·ss +('__construct()akes‡ mandatory ICU‡rray‡s its first‡rgument'); + +25 + } +} + +28 + g$t +-> +dŸg +('::getInstance()'); + +29 + g$t +-> +i§_ok +( +sfNumb”FÜm©Info +:: +g‘In¡ªû +(), 'sfNumberFormatInfo', '::getInstance()„eturns‡n sfNumberFormatInfo instance'); + +30 + g$c + = +sfCuÉu»Info +:: +g‘In¡ªû +(); + +31 + g$t +-> +is +( +sfNumb”FÜm©Info +:: +g‘In¡ªû +( +$c +), $c-> +g‘Numb”FÜm© +(), '::getInstance() canake‡ sfCultureInfo instance‡s its first‡rgument'); + +32 + g$t +-> +i§_ok +( +sfNumb”FÜm©Info +:: +g‘In¡ªû +('fr'), 'sfNumberFormatInfo', '::getInstance() canake‡ culture‡s its first‡rgument'); + +33 + g$n + = +sfNumb”FÜm©Info +:: +g‘In¡ªû +(); + +34 + g$n +-> +£tP©‹º +( +sfNumb”FÜm©Info +:: +PERCENTAGE +); + +35 + g$t +-> +is +( +sfNumb”FÜm©Info +:: +g‘In¡ªû +( +nuÎ +, sfNumb”FÜm©Info:: +PERCENTAGE +)-> +g‘P©‹º +(), +$n +->getPattern(), '::getInstance() canake‡ formattingype‡s its second‡rgument'); + +38 + g$t +-> +dŸg +('->getPattern() ->setPattern()'); + +39 + g$n + = +sfNumb”FÜm©Info +:: +g‘In¡ªû +(); + +40 + g$n1 + = +sfNumb”FÜm©Info +:: +g‘In¡ªû +(); + +41 + g$n +-> +£tP©‹º +( +sfNumb”FÜm©Info +:: +CURRENCY +); + +42 + g$·‰”n + = +$n +-> +g‘P©‹º +(); + +43 + g$n1 +-> +£tP©‹º +( +sfNumb”FÜm©Info +:: +PERCENTAGE +); + +44 + g$·‰”n1 + = +$n1 +-> +g‘P©‹º +(); + +45 + g$t +-> +i¢t +( +$·‰”n +, +$·‰”n1 +, '->getPattern() ->setPattern() changeshe current…attern'); + +47 + g$n + = +sfNumb”FÜm©Info +:: +g‘In¡ªû +(); + +48 + g$n1 + = +sfNumb”FÜm©Info +:: +g‘In¡ªû +(); + +49 + g$n +-> + gP©‹º + = +sfNumb”FÜm©Info +:: +CURRENCY +; + +50 + g$n1 +-> +£tP©‹º +( +sfNumb”FÜm©Info +:: +CURRENCY +); + +51 + g$t +-> +is +( +$n +-> +g‘P©‹º +(), +$n1 +->getPattern(), '->setPattern() isƒquivalento ->Pattern = '); + +52 + g$t +-> +is +( +$n +-> +g‘P©‹º +(), $n-> +P©‹º +, '->getPattern() isƒquivalento ->Pattern'); + +55 + g$t +-> +dŸg +('::getCurrencyInstance()'); + +56 + g$t +-> +is +( +sfNumb”FÜm©Info +:: +g‘Cu¼’cyIn¡ªû +()-> +g‘P©‹º +(), sfNumb”FÜm©Info:: +g‘In¡ªû +( +nuÎ +, sfNumb”FÜm©Info:: +CURRENCY +)->getPattern(), '::getCurrencyInstance() is‡ shortcut for ::getInstance()‡ndype sfNumberFormatInfo::CURRENCY'); + +59 + g$t +-> +dŸg +('::getPercentageInstance()'); + +60 + g$t +-> +is +( +sfNumb”FÜm©Info +:: +g‘P”ûÁageIn¡ªû +()-> +g‘P©‹º +(), sfNumb”FÜm©Info:: +g‘In¡ªû +( +nuÎ +, sfNumb”FÜm©Info:: +PERCENTAGE +)->getPattern(), '::getPercentageInstance() is‡ shortcut for ::getInstance()‡ndype sfNumberFormatInfo::PERCENTAGE'); + +63 + g$t +-> +dŸg +('::getScientificInstance()'); + +64 + g$t +-> +is +( +sfNumb”FÜm©Info +:: +g‘Sc›ÁificIn¡ªû +()-> +g‘P©‹º +(), sfNumb”FÜm©Info:: +g‘In¡ªû +( +nuÎ +, sfNumb”FÜm©Info:: +SCIENTIFIC +)->getPattern(), '::getScientificInstance() is‡ shortcut for ::getInstance()‡ndype sfNumberFormatInfo::SCIENTIFIC'); + +66 + g$‹¡s + = +¬¿y +( + +67 'ä' => +¬¿y +( + +80 '’' => +¬¿y +( + +95 +fܗch + ( +$‹¡s + +as + +$cuÉu» + => +$fixtu»s +) + +97 +$n + = +sfNumb”FÜm©Info +:: +g‘In¡ªû +( +$cuÉu» +); + +99 +fܗch + ( +$fixtu»s + +as + +$m‘hod + => +$»suÉ +) + +101 +$g‘‹r + = 'g‘'. +$m‘hod +; + +102 + g$t +-> +is +( +$n +-> +$g‘‹r +(), +$»suÉ +, +¥rštf +('->%s(è»tuº "%s" fÜ cuÉu» "%s"', $g‘‹r, $»suÉ, +$cuÉu» +)); + +107 +fܗch + ( +¬¿y +( + +111 è +as + +$m‘hod +) + +113 + g$t +-> +dŸg +( +¥rštf +('->g‘%s(è->£t%s()', +$m‘hod +, $method)); + +114 + g$n + = +sfNumb”FÜm©Info +:: +g‘In¡ªû +(); + +115 + g$£‰” + = '£t'. +$m‘hod +; + +116 + g$g‘‹r + = 'g‘'. +$m‘hod +; + +117 + g$n +-> +$£‰” +('foo'); + +118 + g$t +-> +is +( +$n +-> +$g‘‹r +(), 'foo', +¥rštf +('->%s(è£t thcu¼’ˆdecim® dig™s', +$£‰” +)); + +119 + g$t +-> +is +( +$n +-> +$m‘hod +, $n-> +$g‘‹r +(), +¥rštf +('->%s() isƒquivalento ->%s', $getter, $method)); + +120 + g$n +-> + g$m‘hod + = 'bar'; + +121 + g$t +-> +is +( +$n +-> +$g‘‹r +(), 'b¬', +¥rštf +('->%s(èi equiv®’ˆtØ->% ð', +$£‰” +, +$m‘hod +)); + +124 +fܗch + ( +¬¿y +('GroupSizes', 'Neg©iveP©‹º', 'Pos™iveP©‹º'è +as + +$m‘hod +) + +126 + g$t +-> +dŸg +( +¥rštf +('->g‘%s(è->£t%s()', +$m‘hod +, $method)); + +127 + g$n + = +sfNumb”FÜm©Info +:: +g‘In¡ªû +(); + +128 + g$£‰” + = '£t'. +$m‘hod +; + +129 + g$g‘‹r + = 'g‘'. +$m‘hod +; + +130 + g$n +-> +$£‰” +( +¬¿y +('foo', 'foo')); + +131 + g$t +-> +is +( +$n +-> +$g‘‹r +(), +¬¿y +('foo', 'foo'), +¥rštf +('->%s(è£t thcu¼’ˆdecim® dig™s', +$£‰” +)); + +132 + g$t +-> +is +( +$n +-> +$m‘hod +, $n-> +$g‘‹r +(), +¥rštf +('->%s() isƒquivalento ->%s', $getter, $method)); + +133 + g$n +-> + g$m‘hod + = +¬¿y +('bar', 'bar'); + +134 + g$t +-> +is +( +$n +-> +$g‘‹r +(), +¬¿y +('b¬', 'b¬'), +¥rštf +('->%s(èi equiv®’ˆtØ->% ð', +$£‰” +, +$m‘hod +)); + + @lib/vendor/symfony/test/unit/log/sfAggregateLoggerTest.php + +1 +$fže +)); + +24 + g$bufãr + = +fݒ +('php://memory', 'rw'); + +25 + g$¡»amLogg” + = +Ãw + +sfSŒ—mLogg” +( +$di¥©ch” +, +¬¿y +('¡»am' => +$bufãr +)); + +28 + g$t +-> +dŸg +('->initialize()'); + +29 + g$logg” + = +Ãw + +sfAgg»g©eLogg” +( +$di¥©ch” +, +¬¿y +('logg”s' => +$fžeLogg” +)); + +30 + g$t +-> +is +( +$logg” +-> +g‘Logg”s +(), +¬¿y +( +$fžeLogg” +), '->initialize() canake‡ "loggers"…arameter'); + +32 + g$logg” + = +Ãw + +sfAgg»g©eLogg” +( +$di¥©ch” +, +¬¿y +('logg”s' =>‡¼ay( +$fžeLogg” +, +$¡»amLogg” +))); + +33 + g$t +-> +is +( +$logg” +-> +g‘Logg”s +(), +¬¿y +( +$fžeLogg” +, +$¡»amLogg” +), '->initialize() canake‡ "loggers"…arameter'); + +36 + g$t +-> +dŸg +('->log()'); + +37 + g$logg” +-> +log +('foo'); + +38 +»wšd +( +$bufãr +); + +39 + g$cڋÁ + = +¡»am_g‘_cڋÁs +( +$bufãr +); + +40 + g$lšes + = +ex¶ode +("\n", +fže_g‘_cڋÁs +( +$fže +)); + +41 + g$t +-> +like +( +$lšes +[0], '/foo/', '->log()†ogs‡ messageo‡ll†oggers'); + +42 + g$t +-> +is +( +$cڋÁ +, 'foo'. +PHP_EOL +, '->log()†ogs‡ messageo‡ll†oggers'); + +45 + g$logg” + = +Ãw + +sfAgg»g©eLogg” +( +$di¥©ch” +); + +46 + g$logg” +-> +addLogg” +( +$fžeLogg” +); + +47 + g$t +-> +is +( +$logg” +-> +g‘Logg”s +(), +¬¿y +( +$fžeLogg” +), '->addLogger()‡dds‡‚ew sfLogger instance'); + +49 + g$logg” + = +Ãw + +sfAgg»g©eLogg” +( +$di¥©ch” +); + +50 + g$logg” +-> +addLogg”s +( +¬¿y +( +$fžeLogg” +, +$¡»amLogg” +)); + +51 + g$t +-> +is +( +$logg” +-> +g‘Logg”s +(), +¬¿y +( +$fžeLogg” +, +$¡»amLogg” +), '->addLoggers()‡dds‡n‡rray of sfLogger instances'); + +54 + g$t +-> +dŸg +('->shutdown()'); + +55 + g$logg” +-> +shutdown +(); + +57 +uƚk +( +$fže +); + + @lib/vendor/symfony/test/unit/log/sfConsoleLoggerTest.php + +1 +£tSŒ—m +( +$bufãr + = +fݒ +('php://memory', 'rw')); + +18 + g$logg” +-> +log +('foo'); + +19 +»wšd +( +$bufãr +); + +20 + g$t +-> +is +( +fix_lšeb»aks +( +¡»am_g‘_cڋÁs +( +$bufãr +)), "foo\n", 'sfConsoleLogger†ogs messagesohe console'); + + @lib/vendor/symfony/test/unit/log/sfFileLoggerTest.php + +1 +dŸg +('->initialize()'); + +26 + gŒy + + +28 + g$logg” + = +Ãw + +sfFžeLogg” +( +$di¥©ch” +); + +29 + g$t +-> +çž +('->initialize()…arameters must contains‡ "file"…arameter'); + +31 + $ÿtch + ( +sfCÚfigu¿tiÚExû±iÚ + +$e +) + +33 +$t +-> + `·ss +('->initialize()…arameters must contains‡ "file"…arameter'); + +34 + } +} + +37 + g$t +-> +dŸg +('->log()'); + +38 + g$logg” + = +Ãw + +sfFžeLogg” +( +$di¥©ch” +, +¬¿y +('fže' => +$fže +)); + +39 + g$logg” +-> +log +('foo'); + +40 + g$lšes + = +ex¶ode +("\n", +fže_g‘_cڋÁs +( +$fže +)); + +41 + g$t +-> +like +( +$lšes +[0], '/foo/', '->log()†ogs‡ messageohe file'); + +42 + g$logg” +-> +log +('bar'); + +43 + g$lšes + = +ex¶ode +("\n", +fže_g‘_cڋÁs +( +$fže +)); + +44 + g$t +-> +like +( +$lšes +[1], '/bar/', '->log()†ogs‡ messageohe file'); + +46 þas  + cTe¡Logg” + +ex‹nds + + msfFžeLogg” + + +48 +public + +funùiÚ + + $g‘TimeFÜm© +() + +50  +$this +-> +timeFÜm© +; + +53 +´Ùeùed + +funùiÚ + + $g‘Priܙy +( +$´iܙy +) + +55  '*'. +$´iܙy +.'*'; + +56 + } +} + +60 + g$t +-> +dŸg +('option: format'); + +61 +uƚk +( +$fže +); + +62 + g$logg” + = +Ãw + +Te¡Logg” +( +$di¥©ch” +, +¬¿y +('fže' => +$fže +)); + +63 + g$logg” +-> +log +('foo'); + +64 + g$t +-> +is +( +fže_g‘_cڋÁs +( +$fže +), +¡ráime +( +$logg” +-> +g‘TimeFÜm© +()).' symfÚy [*6*] foo'. +PHP_EOL +, '->initialize() canake‡ format option'); + +66 +uƚk +( +$fže +); + +67 + g$logg” + = +Ãw + +Te¡Logg” +( +$di¥©ch” +, +¬¿y +('fže' => +$fže +, 'format' => '%message%')); + +68 + g$logg” +-> +log +('foo'); + +69 + g$t +-> +is +( +fže_g‘_cڋÁs +( +$fže +), 'foo', '->initialize() canake‡ format option'); + +72 + g$t +-> +dŸg +('option:ime_format'); + +73 +uƚk +( +$fže +); + +74 + g$logg” + = +Ãw + +Te¡Logg” +( +$di¥©ch” +, +¬¿y +('fže' => +$fže +, 'time_format' => '%Y %m %d')); + +75 + g$logg” +-> +log +('foo'); + +76 + g$t +-> +is +( +fže_g‘_cڋÁs +( +$fže +), +¡ráime +( +$logg” +-> +g‘TimeFÜm© +()).' symfÚy [*6*] foo'. +PHP_EOL +, '->initialize() canake‡ format option'); + +79 + g$t +-> +dŸg +('option:ype'); + +80 +uƚk +( +$fže +); + +81 + g$logg” + = +Ãw + +Te¡Logg” +( +$di¥©ch” +, +¬¿y +('fže' => +$fže +, 'type' => 'foo')); + +82 + g$logg” +-> +log +('foo'); + +83 + g$t +-> +is +( +fže_g‘_cڋÁs +( +$fže +), +¡ráime +( +$logg” +-> +g‘TimeFÜm© +()).' foØ[*6*] foo'. +PHP_EOL +, '->initialize() canake‡ format option'); + +86 + g$t +-> +dŸg +('->shutdown()'); + +87 + g$logg” +-> +shutdown +(); + +89 +uƚk +( +$fže +); + + @lib/vendor/symfony/test/unit/log/sfLoggerTest.php + +1 +log + .ð +$mes§ge +; + +23 + } +} + +25 þas  + cnÙaLogg” + + +29 + g$di¥©ch” + = +Ãw + +sfEv’tDi¥©ch” +(); + +30 + g$logg” + = +Ãw + +myLogg” +( +$di¥©ch” +, +¬¿y +('log_dir_name' => '/tmp')); + +32 + g$ÝtiÚs + = +$logg” +-> +g‘O±iÚs +(); + +33 + g$t +-> +is +( +$ÝtiÚs +['log_dir_name'], '/tmp', '->getOptions()„eturnshe options forhe†ogger instance'); + +36 + g$t +-> +dŸg +('->setLogLevel() ->getLogLevel()'); + +37 + g$t +-> +is +( +$logg” +-> +g‘LogLev– +(), +sfLogg” +:: +INFO +, '->getLogLevel() getshe current†og†evel'); + +38 + g$logg” +-> +£tLogLev– +( +sfLogg” +:: +WARNING +); + +39 + g$t +-> +is +( +$logg” +-> +g‘LogLev– +(), +sfLogg” +:: +WARNING +, '->setLogLevel() setshe†og†evel'); + +40 + g$logg” +-> +£tLogLev– +('err'); + +41 + g$t +-> +is +( +$logg” +-> +g‘LogLev– +(), +sfLogg” +:: +ERR +, '->setLogLevel()‡ccepts‡ class constant or‡ string‡s its‡rgument'); + +44 + g$t +-> +dŸg +('->initialize()'); + +45 + g$logg” +-> +š™Ÿlize +( +$di¥©ch” +, +¬¿y +('Ëv–' => +sfLogg” +:: +ERR +)); + +46 + g$t +-> +is +( +$logg” +-> +g‘LogLev– +(), +sfLogg” +:: +ERR +, '->initialize()akes‡n‡rray of options‡s its second‡rgument'); + +49 + g$t +-> +dŸg +('::getPriorityName()'); + +50 + g$t +-> +is +( +sfLogg” +:: +g‘PriܙyName +(sfLogg”:: +INFO +), 'info', '::getPriorityName()„eturnshe‚ame of‡…riority class constant'); + +51 + gŒy + + +53 + gsfLogg” +:: +g‘PriܙyName +(100); + +54 + g$t +-> +çž +('::getPriorityName()hrows‡n sfException ifhe…riority constant does‚otƒxist'); + +56 + $ÿtch + ( +sfExû±iÚ + +$e +) + +58 +$t +-> + `·ss +('::getPriorityName()hrows‡n sfException ifhe…riority constant does‚otƒxist'); + +59 + } +} + +62 + g$t +-> +dŸg +('->log()'); + +63 + g$logg” +-> +£tLogLev– +( +sfLogg” +:: +DEBUG +); + +64 + g$logg” +-> +log +('message'); + +65 + g$t +-> +is +( +$logg” +-> +log +, 'message', '->log()†ogs‡ message'); + +68 + g$t +-> +dŸg +('log†evels'); + +69 +fܗch + ( +¬¿y +('em”g', '®”t', 'ü™', '”r', 'w¬nšg', 'nÙiû', 'šfo', 'debug'è +as + +$Ëv– +) + +71 + g$Ëv–CÚ¡ªt + = 'sfLogg”::'. +¡¹ouµ” +( +$Ëv– +); + +73 +fܗch + ( +¬¿y +('em”g', '®”t', 'ü™', '”r', 'w¬nšg', 'nÙiû', 'šfo', 'debug'è +as + +$logLev– +) + +75 + g$logLev–CÚ¡ªt + = 'sfLogg”::'. +¡¹ouµ” +( +$logLev– +); + +76 + g$logg” +-> +£tLogLev– +( +cÚ¡ªt +( +$logLev–CÚ¡ªt +)); + +78 + g$logg” +-> + glog + = ''; + +79 + g$logg” +-> +log +('foo', +cÚ¡ªt +( +$Ëv–CÚ¡ªt +)); + +81 + g$t +-> +is +( +$logg” +-> +log +, +cÚ¡ªt +( +$logLev–CÚ¡ªt +è>ðcÚ¡ªt( +$Ëv–CÚ¡ªt +), +¥rštf +('->log() only†ogs ifhe†evel is >=ohe defined†og†evel (%s >= %s)', $logLevelConstant, $levelConstant)); + +86 + g$t +-> +dŸg +('log shortcuts'); + +87 +fܗch + ( +¬¿y +('em”g', '®”t', 'ü™', '”r', 'w¬nšg', 'nÙiû', 'šfo', 'debug'è +as + +$Ëv– +) + +89 + g$Ëv–CÚ¡ªt + = 'sfLogg”::'. +¡¹ouµ” +( +$Ëv– +); + +91 +fܗch + ( +¬¿y +('em”g', '®”t', 'ü™', '”r', 'w¬nšg', 'nÙiû', 'šfo', 'debug'è +as + +$logLev– +) + +93 + g$logg” +-> +£tLogLev– +( +cÚ¡ªt +('sfLogg”::'. +¡¹ouµ” +( +$logLev– +))); + +95 + g$logg” +-> + glog + = ''; + +96 + g$logg” +-> +log +('foo', +cÚ¡ªt +( +$Ëv–CÚ¡ªt +)); + +97 + g$log1 + = +$logg” +-> +log +; + +99 + g$logg” +-> + glog + = ''; + +100 + g$logg” +-> +$Ëv– +('foo'); + +101 + g$log2 + = +$logg” +-> +log +; + +103 + g$t +-> +is +( +$log1 +, +$log2 +, +¥rštf +('->%s($msgèi ¨shÜtcuˆfÜ ->log($msg, %s)', +$Ëv– +, +$Ëv–CÚ¡ªt +)); + + @lib/vendor/symfony/test/unit/log/sfLoggerWrapperTest.php + +1 +log + = +$mes§ge +; + +23 + } +} + +25 þas  + cmyLogg”W¿µ” + +ex‹nds + + msfLogg”W¿µ” + + +27 +public + +funùiÚ + + $g‘Logg” +() + +29  +$this +-> +logg” +; + +31 + } +} + +33 + g$myLogg” + = +Ãw + +myLogg” +(); + +36 + g$t +-> +dŸg +('__construct()'); + +37 + g$logg” + = +Ãw + +myLogg”W¿µ” +( +$myLogg” +); + +38 + g$t +-> +is +( +$logg” +-> +g‘Logg” +(), +$myLogg” +, '__construct()akes‡†oggerhat implements sfLoggerInterface‡s its‡rgument'); + +41 + g$t +-> +dŸg +('->log()'); + +42 + g$logg” +-> +log +('foo'); + +43 + g$t +-> +is +( +$myLogg” +-> +log +, 'foo', '->log()†ogs‡ message withhe wrapped†ogger'); + + @lib/vendor/symfony/test/unit/log/sfStreamLoggerTest.php + +1 +$bufãr +)); + +20 + g$logg” +-> +log +('foo'); + +21 +»wšd +( +$bufãr +); + +22 + g$t +-> +is +( +fix_lšeb»aks +( +¡»am_g‘_cڋÁs +( +$bufãr +)), "foo\n", 'sfStreamLogger†ogs messageso‡ PHP stream'); + + @lib/vendor/symfony/test/unit/log/sfVarLoggerTest.php + +1 +log +('foo'); + +21 + g$logg” +-> +log +('{sfFoo} b¬', +sfLogg” +:: +ERR +); + +23 + g$logs + = +$logg” +-> +g‘Logs +(); + +24 + g$t +-> +is +( +couÁ +( +$logs +), 2, 'sfVarLogger†ogs‡ll messages into its instance'); + +26 + g$t +-> +is +( +$logs +[0]['message'], 'foo', 'sfVarLogger„eturns‡n‡rray withhe message'); + +27 + g$t +-> +is +( +$logs +[0]['priority'], 6, 'sfVarLogger„eturns‡n‡rray withhe…riority'); + +28 + g$t +-> +is +( +$logs +[0]['priority_name'], 'info', 'sfVarLogger„eturns‡n‡rray withhe…riority‚ame'); + +29 + g$t +-> +is +( +$logs +[0]['type'], 'sfOther', 'sfVarLogger„eturns‡n‡rray withheype'); + +31 + g$t +-> +is +( +$logs +[1]['message'], 'bar', 'sfVarLogger„eturns‡n‡rray withhe message'); + +32 + g$t +-> +is +( +$logs +[1]['priority'], 3, 'sfVarLogger„eturns‡n‡rray withhe…riority'); + +33 + g$t +-> +is +( +$logs +[1]['priority_name'], 'err', 'sfVarLogger„eturns‡n‡rray withhe…riority‚ame'); + +34 + g$t +-> +is +( +$logs +[1]['type'], 'sfFoo', 'sfVarLogger„eturns‡n‡rray withheype'); + + @lib/vendor/symfony/test/unit/log/sfWebDebugLoggerTest.php + +1 +dŸg +('->handlePhpError()'); + +23 + g$”rÜ + = +”rÜ_g‘_Ï¡ +(); + +24 + g$logg” +-> +hªdËPhpE¼Ü +( +E_NOTICE +, '%', +__FILE__ +, +__LINE__ +); + +25 + g$t +-> +is_d“¶y +( +”rÜ_g‘_Ï¡ +(), +$”rÜ +, '->handlePhpError() works when message has‡ "%" character'); + + @lib/vendor/symfony/test/unit/mailer/fixtures/TestMailMessage.class.php + +1 +¦“p + = +$¦“p +; + +23 +public + +funùiÚ + + $isS¹ed +(è{  +$this +-> +¡¬‹d +; + } +} + +24 +public + +funùiÚ + + $¡¬t +(è{ +$this +-> +¡¬‹d + = +Œue +; + } +} + +25 +public + +funùiÚ + + $¡Ý +(è{ +$this +-> +¡¬‹d + = +çl£ +; + } +} + +26 +public + +funùiÚ + + $»gi¡”Plugš +( +Swiá_Ev’ts_Ev’tLi¡’” + +$¶ugš +è{ + } +} + +28 +public + +funùiÚ + + $£tFoo +( +$foo +) + +30 +$this +-> +foo + = +$foo +; + +31 + } +} + +33 +public + +funùiÚ + + $g‘Foo +() + +35  +$this +-> +foo +; + +36 + } +} + +38 +public + +funùiÚ + + $g‘S’tCouÁ +() + +40  +$this +-> +couÁ +; + +41 + } +} + +43 +public + +funùiÚ + + $£nd +( +Swiá_Mime_Mes§ge + +$mes§ge +, & +$çžedRec›Ás + = +nuÎ +) + +45 ++ +$this +-> +couÁ +; + +47 ià( +$this +-> +¦“p +) + +49 + `¦“p +( +$this +-> +¦“p +); + +53 + } +} + +55 +public + +funùiÚ + + $»£t +() + +57 +$this +-> +couÁ + = 0; + +58 +$this +-> +¡¬‹d + = +çl£ +; + +59 + } +} + + @lib/vendor/symfony/test/unit/mailer/fixtures/TestSpool.class.php + +1 +mes§ges +[] = +$mes§ge +; + +37 + } +} + +39 +public + +funùiÚ + + $æushQueue +( +Swiá_T¿n¥Üt + +$Œª¥Üt +, & +$çžedRec›Ás + = +nuÎ +) + +41 + `fܗch + ( +$this +-> +mes§ges + +as + +$mes§ge +) + +43 +$Œª¥Üt +-> + `£nd +( +$mes§ge +); + +46 +$this +-> +mes§ges + = + `¬¿y +(); + +47 + } +} + +49 +public + +funùiÚ + + $g‘Mes§ges +() + +51  +$this +-> +mes§ges +; + +52 + } +} + +54 +public + +funùiÚ + + $g‘QueuedCouÁ +() + +56  + `couÁ +( +$this +-> +mes§ges +); + +57 + } +} + +59 +public + +funùiÚ + + $»£t +() + +61 +$this +-> +mes§ges + = + `¬¿y +(); + +62 + } +} + + @lib/vendor/symfony/test/unit/mailer/sfMailerTest.php + +1 +dŸg +('__construct()'); + +24 + gŒy + + +26 +Ãw + +sfMaž” +( +$di¥©ch” +, +¬¿y +('delivery_strategy' => 'foo')); + +28 + g$t +-> +çž +('__construct()hrows‡n InvalidArgumentExceptionƒxception ifhe strategy is‚ot valid'); + +30 + $ÿtch + ( +Inv®idArgum’tExû±iÚ + +$e +) + +32 +$t +-> + `·ss +('__construct()hrows‡n InvalidArgumentExceptionƒxception ifhe strategy is‚ot valid'); + +33 + } +} + +36 + g$maž” + = +Ãw + +sfMaž” +( +$di¥©ch” +, +¬¿y +( + +37 'loggšg' => +Œue +, + +39 'Œª¥Üt' => +¬¿y +('class' => 'TestMailerTransport', 'param' =>‡rray('foo' => 'bar', 'bar' => 'foo')), + +41 + g$t +-> +is +( +$maž” +-> +g‘T¿n¥Üt +()-> +g‘Foo +(), 'bar', '__construct()…asseshe…arametersohe mainransport'); + +44 + g$maž” + = +Ãw + +sfMaž” +( +$di¥©ch” +, +¬¿y +( + +45 'loggšg' => +Œue +, + +48 '¥oÞ_¬gum’ts' => +¬¿y +('TestMailMessage'), + +49 'Œª¥Üt' => +¬¿y +('class' => 'Swift_SmtpTransport', 'param' =>‡rray('username' => 'foo')), + +51 + g$t +-> +is +( +$maž” +-> +g‘R—lTimeT¿n¥Üt +()-> +g‘U£ºame +(), 'foo', '__construct()…asseshe…arametersohe mainransport'); + +53 + gŒy + + +55 + g$maž” + = +Ãw + +sfMaž” +( +$di¥©ch” +, +¬¿y +('delivery_strategy' => 'spool')); + +57 + g$t +-> +çž +('__construct()hrows‡n InvalidArgumentExceptionƒxception ifhe spool_class option is‚ot set withhe spool delivery strategy'); + +59 + $ÿtch + ( +Inv®idArgum’tExû±iÚ + +$e +) + +61 +$t +-> + `·ss +('__construct()hrows‡n InvalidArgumentExceptionƒxception ifhe spool_class option is‚ot set withhe spool delivery strategy'); + +62 + } +} + +64 + g$maž” + = +Ãw + +sfMaž” +( +$di¥©ch” +, +¬¿y +('delivery_strategy' => 'spool', 'spool_class' => 'TestSpool')); + +65 + g$t +-> +is +( +g‘_þass +( +$maž” +-> +g‘T¿n¥Üt +()), 'Swift_SpoolTransport', '__construct()„ecognizeshe spool delivery strategy'); + +66 + g$t +-> +is +( +g‘_þass +( +$maž” +-> +g‘T¿n¥Üt +()-> +g‘SpoÞ +()), 'TestSpool', '__construct()„ecognizeshe spool delivery strategy'); + +69 + gŒy + + +71 + g$maž” + = +Ãw + +sfMaž” +( +$di¥©ch” +, +¬¿y +('delivery_strategy' => 'single_address')); + +73 + g$t +-> +çž +('__construct()hrows‡n InvalidArgumentExceptionƒxception ifhe delivery_address option is‚ot set withhe spool single_address strategy'); + +75 + $ÿtch + ( +Inv®idArgum’tExû±iÚ + +$e +) + +77 +$t +-> + `·ss +('__construct()hrows‡n InvalidArgumentExceptionƒxception ifhe delivery_address option is‚ot set withhe spool single_address strategy'); + +78 + } +} + +80 + g$maž” + = +Ãw + +sfMaž” +( +$di¥©ch” +, +¬¿y +('delivery_strategy' => 'single_address', 'delivery_address' => 'foo@example.com')); + +81 + g$t +-> +is +( +$maž” +-> +g‘D–iv”yAdd»ss +(), 'foo@example.com', '__construct()„ecognizeshe single_address delivery strategy'); + +84 + g$maž” + = +Ãw + +sfMaž” +( +$di¥©ch” +, +¬¿y +('loggšg' => +çl£ +)); + +85 + g$t +-> +is +( +$maž” +-> +g‘Logg” +(), +nuÎ +, '__construct() disables†ogging ifhe†ogging option is seto false'); + +86 + g$maž” + = +Ãw + +sfMaž” +( +$di¥©ch” +, +¬¿y +('loggšg' => +Œue +)); + +87 + g$t +-> +ok +( +$maž” +-> + $g‘Logg” +(è +š¡ªûof + +sfMaž”Mes§geLogg”Plugš +, '__construct()ƒnables†ogging ifhe†ogging option is setorue'); + +90 +$t +-> + `dŸg +('->compose()'); + +91 +$maž” + = +Ãw + + `sfMaž” +( +$di¥©ch” +, + `¬¿y +('delivery_strategy' => 'none')); + +92 +$t +-> + `ok +( +$maž” +-> + $compo£ +(è +š¡ªûof + +Swiá_Mes§ge +, '->compose()„eturns‡ Swift_Message instance'); + +93 +$mes§ge + = +$maž” +-> + `compo£ +('from@example.com', 'to@example.com', 'Subject', 'Body'); + +94 +$t +-> + `is +( +$mes§ge +-> + `g‘From +(), + `¬¿y +('from@example.com' => ''), '->compose()akeshe from‡ddress‡s its first‡rgument'); + +95 +$t +-> + `is +( +$mes§ge +-> + `g‘To +(), + `¬¿y +('to@example.com' => ''), '->compose()akesheo‡ddress‡s its second‡rgument'); + +96 +$t +-> + `is +( +$mes§ge +-> + `g‘Subjeù +(), 'Subject', '->compose()akeshe subject‡s itshird‡rgument'); + +97 +$t +-> + `is +( +$mes§ge +-> + `g‘Body +(), 'Body', '->compose()akeshe body‡s its fourth‡rgument'); + +100 +$t +-> + `dŸg +('->composeAndSend()'); + +101 +$maž” + = +Ãw + + `sfMaž” +( +$di¥©ch” +, + `¬¿y +('loggšg' => +Œue +, 'delivery_strategy' => 'none')); + +102 +$maž” +-> + `compo£AndS’d +('from@example.com', 'to@example.com', 'Subject', 'Body'); + +103 +$t +-> + `is +( +$maž” +-> + `g‘Logg” +()-> + `couÁMes§ges +(), 1, '->composeAndSend() composes‡nd sendshe message'); + +104 +$mes§ges + = +$maž” +-> + `g‘Logg” +()-> + `g‘Mes§ges +(); + +105 +$t +-> + `is +( +$mes§ges +[0]-> + `g‘From +(), + `¬¿y +('from@example.com' => ''), '->composeAndSend()akeshe from‡ddress‡s its first‡rgument'); + +106 +$t +-> + `is +( +$mes§ges +[0]-> + `g‘To +(), + `¬¿y +('to@example.com' => ''), '->composeAndSend()akesheo‡ddress‡s its second‡rgument'); + +107 +$t +-> + `is +( +$mes§ges +[0]-> + `g‘Subjeù +(), 'Subject', '->composeAndSend()akeshe subject‡s itshird‡rgument'); + +108 +$t +-> + `is +( +$mes§ges +[0]-> + `g‘Body +(), 'Body', '->composeAndSend()akeshe body‡s its fourth‡rgument'); + +111 +$t +-> + `dŸg +('->flushQueue()'); + +112 +$maž” + = +Ãw + + `sfMaž” +( +$di¥©ch” +, + `¬¿y +('delivery_strategy' => 'none')); + +113 +$maž” +-> + `compo£AndS’d +('from@example.com', 'to@example.com', 'Subject', 'Body'); + +114 +Œy + + +116 +$maž” +-> + `æushQueue +(); + +118 +$t +-> + `çž +('->flushQueue()hrows‡ LogicExceptionƒxception ifhe delivery_strategy is‚ot spool'); + +119 + } +} + +120 + $ÿtch + ( +LogicExû±iÚ + +$e +) + +122 +$t +-> + `·ss +('->flushQueue()hrows‡ LogicExceptionƒxception ifhe delivery_strategy is‚ot spool'); + +123 + } +} + +125 + g$maž” + = +Ãw + +sfMaž” +( +$di¥©ch” +, +¬¿y +( + +128 '¥oÞ_¬gum’ts' => +¬¿y +('TestMailMessage'), + +129 'Œª¥Üt' => +¬¿y +('class' => 'TestMailerTransport'), + +131 + g$Œª¥Üt + = +$maž” +-> +g‘R—ÉimeT¿n¥Üt +(); + +132 + g$¥oÞ + = +$maž” +-> +g‘T¿n¥Üt +()-> +g‘SpoÞ +(); + +134 + g$maž” +-> +compo£AndS’d +('from@example.com', 'to@example.com', 'Subject', 'Body'); + +135 + g$t +-> +is +( +$¥oÞ +-> +g‘QueuedCouÁ +(), 1, '->flushQueue() sends messages inhe spool'); + +136 + g$t +-> +is +( +$Œª¥Üt +-> +g‘S’tCouÁ +(), 0, '->flushQueue() sends messages inhe spool'); + +137 + g$maž” +-> +æushQueue +(); + +138 + g$t +-> +is +( +$¥oÞ +-> +g‘QueuedCouÁ +(), 0, '->flushQueue() sends messages inhe spool'); + +139 + g$t +-> +is +( +$Œª¥Üt +-> +g‘S’tCouÁ +(), 1, '->flushQueue() sends messages inhe spool'); + +142 + g$t +-> +dŸg +('->sendNextImmediately()'); + +143 + g$maž” + = +Ãw + +sfMaž” +( +$di¥©ch” +, +¬¿y +( + +144 'loggšg' => +Œue +, + +147 '¥oÞ_¬gum’ts' => +¬¿y +('TestMailMessage'), + +148 'Œª¥Üt' => +¬¿y +('class' => 'TestMailerTransport'), + +150 + g$Œª¥Üt + = +$maž” +-> +g‘R—ÉimeT¿n¥Üt +(); + +151 + g$¥oÞ + = +$maž” +-> +g‘T¿n¥Üt +()-> +g‘SpoÞ +(); + +152 + g$t +-> +is +( +$maž” +-> +£ndNextImmedŸ‹ly +(), $mailer, '->sendNextImmediately() implements‡ fluid interface'); + +153 + g$maž” +-> +compo£AndS’d +('from@example.com', 'to@example.com', 'Subject', 'Body'); + +154 + g$t +-> +is +( +$¥oÞ +-> +g‘QueuedCouÁ +(), 0, '->sendNextImmediately() bypasseshe spool'); + +155 + g$t +-> +is +( +$Œª¥Üt +-> +g‘S’tCouÁ +(), 1, '->sendNextImmediately() bypasseshe spool'); + +156 + g$Œª¥Üt +-> +»£t +(); + +157 + g$¥oÞ +-> +»£t +(); + +159 + g$maž” +-> +compo£AndS’d +('from@example.com', 'to@example.com', 'Subject', 'Body'); + +160 + g$t +-> +is +( +$¥oÞ +-> +g‘QueuedCouÁ +(), 1, '->sendNextImmediately() bypasseshe spool but only forhe very‚ext message'); + +161 + g$t +-> +is +( +$Œª¥Üt +-> +g‘S’tCouÁ +(), 0, '->sendNextImmediately() bypasseshe spool but only forhe very‚ext message'); + +164 + g$t +-> +dŸg +('->getDeliveryAddress() ->setDeliveryAddress()'); + +165 + g$maž” + = +Ãw + +sfMaž” +( +$di¥©ch” +, +¬¿y +('delivery_strategy' => 'none')); + +166 + g$maž” +-> +£tD–iv”yAdd»ss +('foo@example.com'); + +167 + g$t +-> +is +( +$maž” +-> +g‘D–iv”yAdd»ss +(), 'foo@example.com', '->setDeliveryAddress() setshe delivery‡ddress forhe single_address strategy'); + +170 + g$t +-> +dŸg +('->getLogger() ->setLogger()'); + +171 + g$maž” + = +Ãw + +sfMaž” +( +$di¥©ch” +, +¬¿y +('delivery_strategy' => 'none')); + +172 + g$maž” +-> +£tLogg” +( +$logg” + = +Ãw + +sfMaž”Mes§geLogg”Plugš +( +$di¥©ch” +)); + +173 + g$t +-> +ok +( +$maž” +-> +g‘Logg” +(è==ð +$logg” +, '->setLogger() setshe mailer†ogger'); + +176 + g$t +-> +dŸg +('->getDeliveryStrategy()'); + +177 + g$maž” + = +Ãw + +sfMaž” +( +$di¥©ch” +, +¬¿y +('delivery_strategy' => 'none')); + +178 + g$t +-> +is +( +$maž” +-> +g‘D–iv”ySŒ©egy +(), 'none', '->getDeliveryStrategy()„eturnshe delivery strategy'); + +181 + g$t +-> +dŸg +('->getRealtimeTransport() ->setRealtimeTransport()'); + +182 + g$maž” + = +Ãw + +sfMaž” +( +$di¥©ch” +, +¬¿y +('delivery_strategy' => 'none')); + +183 + g$maž” +-> +£tR—ÉimeT¿n¥Üt +( +$Œª¥Üt + = +Ãw + +Te¡Maž”T¿n¥Üt +()); + +184 + g$t +-> +ok +( +$maž” +-> +g‘R—ÉimeT¿n¥Üt +(è==ð +$Œª¥Üt +, '->setRealtimeTransport() setshe mailerransport'); + + @lib/vendor/symfony/test/unit/plugin/sfPearDownloaderTest.class.php + +1 +g‘Mes§ge +()); + +37 ià( + m$Ï¡modif›d + ==ð +çl£ + || +$Ï¡modif›d +) + +39  +¬¿y +( +$fže +, 0,‡rray()); + +42  + m$fže +; + + @lib/vendor/symfony/test/unit/plugin/sfPearEnvironmentTest.php + +1 +sk +('PEAR must be installed', 3); + +24 +»quœe_Úû + +dœÇme +( +__FILE__ +).'/sfPearDownloaderTest.class.php'; + +25 +»quœe_Úû + +dœÇme +( +__FILE__ +).'/sfPearRestTest.class.php'; + +26 +»quœe_Úû + +dœÇme +( +__FILE__ +).'/sfPluginTestHelper.class.php'; + +29 + g$‹mp + = +‹m²am +('/tmp/sf_plugin_test', 'tmp'); + +30 +uƚk +( +$‹mp +); + +31 +mkdœ +( +$‹mp +, 0777, +Œue +); + +33 +defše +('SF_PLUGIN_TEST_DIR', +$‹mp +); + +35 + g$ÝtiÚs + = +¬¿y +( + +36 '¶ugš_dœ' => +$‹mp +.'/plugins', + +37 'ÿche_dœ' => +$‹mp +.'/cache', + +43 + g$di¥©ch” + = +Ãw + +sfEv’tDi¥©ch” +(); + +46 + g$t +-> +dŸg +('->initialize()'); + +48 +fܗch + ( +¬¿y +('¶ugš_dœ', 'ÿche_dœ'è +as + +$ÝtiÚ +) + +50 + gŒy + + +52 + g$loÿlO±iÚs + = +$ÝtiÚs +; + +53 +un£t +( +$loÿlO±iÚs +[ +$ÝtiÚ +]); + +54 + g$’vœÚm’t + = +Ãw + +sfP—rEnvœÚm’t +( +$di¥©ch” +, +$loÿlO±iÚs +); + +56 + g$t +-> +çž +( +¥rštf +('->š™Ÿlize(èthrow ªƒxû±iÚ iàyou dÚ\'ˆ·s ¨"%s" o±iÚ', +$ÝtiÚ +)); + +58 +ÿtch + ( +sfExû±iÚ + +$e +) + +60 + g$t +-> +·ss +( +¥rštf +('->š™Ÿlize(èthrow ªƒxû±iÚ iàyou dÚ\'ˆ·s ¨"%s" o±iÚ', +$ÝtiÚ +)); + +65 + g$t +-> +dŸg +('->registerChannel()'); + +66 + g$’vœÚm’t + = +Ãw + +sfP—rEnvœÚm’t +( +$di¥©ch” +, +$ÝtiÚs +); + +67 + g$’vœÚm’t +-> +»gi¡”ChªÃl +('³¬.exam¶e.com', +Œue +); + +68 + g$t +-> +·ss +('->registerChannel()„egisters‡ PEAR channel'); + +71 + gsfToÞk™ +:: +þ—rDœeùÜy +( +$‹mp +); + +72 +rmdœ +( +$‹mp +); + + @lib/vendor/symfony/test/unit/plugin/sfPearRestPluginTest.php + +1 +sk +('PEAR must be installed', 5); + +24 +»quœe_Úû + +dœÇme +( +__FILE__ +).'/sfPearDownloaderTest.class.php'; + +25 +»quœe_Úû + +dœÇme +( +__FILE__ +).'/sfPearRestTest.class.php'; + +26 +»quœe_Úû + +dœÇme +( +__FILE__ +).'/sfPluginTestHelper.class.php'; + +29 + g$‹mp + = +‹m²am +('/tmp/sf_plugin_test', 'tmp'); + +30 +uƚk +( +$‹mp +); + +31 +mkdœ +( +$‹mp +, 0777, +Œue +); + +33 +defše +('SF_PLUGIN_TEST_DIR', +$‹mp +); + +35 + g$ÝtiÚs + = +¬¿y +( + +36 '¶ugš_dœ' => +$‹mp +.'/plugins', + +37 'ÿche_dœ' => +$‹mp +.'/cache', + +43 + g$di¥©ch” + = +Ãw + +sfEv’tDi¥©ch” +(); + +44 + g$’vœÚm’t + = +Ãw + +sfP—rEnvœÚm’t +( +$di¥©ch” +, +$ÝtiÚs +); + +45 + g$’vœÚm’t +-> +»gi¡”ChªÃl +('³¬.exam¶e.com', +Œue +); + +47 + g$»¡ + = +$’vœÚm’t +-> +g‘Re¡ +(); + +50 + g$t +-> +dŸg +('->getPluginVersions()'); + +51 + g$t +-> +is +( +$»¡ +-> +g‘PlugšV”siÚs +('sfTe¡Plugš'), +¬¿y +('1.1.3', '1.0.3', '1.0.0'), '->getPluginVersions()„eturns‡n‡rray of stable versions for‡…lugin'); + +52 + g$t +-> +is +( +$»¡ +-> +g‘PlugšV”siÚs +('sfTe¡Plugš', '¡abË'), +¬¿y +('1.1.3', '1.0.3', '1.0.0'), '->getPluginVersions()‡ccepts stability‡s‡ second…arameter‡nd„eturns‡n‡rray of versions for‡…lugin based on stability'); + +53 + g$t +-> +is +( +$»¡ +-> +g‘PlugšV”siÚs +('sfTe¡Plugš', 'b‘a'), +¬¿y +('1.0.4', '1.1.4', '1.1.3', '1.0.3', '1.0.0'), '->getPluginVersions()‡ccepts stability‡s‡ second…arameter‡nd„eturns‡n‡rray of versions for‡…lugin based on stability cascade (beta includes stable)'); + +56 + g$t +-> +dŸg +('->getPluginDependencies()'); + +57 + g$d•’d’c›s + = +$»¡ +-> +g‘PlugšD•’d’c›s +('sfTestPlugin', '1.1.4'); + +58 + g$t +-> +is +( +$d•’d’c›s +['required']['package']['min'], '1.1.0', '->getPluginDependencies()„eturns‡n‡rray of dependencies'); + +61 + g$t +-> +dŸg +('->getPluginDownloadURL()'); + +62 + g$t +-> +is +( +$»¡ +-> +g‘PlugšDowÆßdURL +('sfTestPlugin', '1.1.3', 'stable'), 'http://pear.example.com/get/sfTestPlugin/sfTestPlugin-1.1.3.tgz', '->getPluginDownloadURL()„eturns‡…lugin URL'); + +65 + gsfToÞk™ +:: +þ—rDœeùÜy +( +$‹mp +); + +66 +rmdœ +( +$‹mp +); + + @lib/vendor/symfony/test/unit/plugin/sfPearRestTest.class.php + +1 + `g‘Mes§ge +()); + +35 +$h—d”s + = + `¬¿y +( + +36 'cڋÁ-ty³' => + `´eg_m©ch +('/\.xml$/', +$fže +) ? 'text/xml' : 'text/plain', + +39  + `¬¿y +( + `fže_g‘_cڋÁs +( +$fže +), 0, +$h—d”s +); + +43 +public + +funùiÚ + + $§veCache +( +$u¾ +, +$cڋÁs +, +$Ï¡modif›d +, +$nochªge + = +çl£ +, +$ÿcheid + = +nuÎ +) + +45  +çl£ +; + +46 + } +} + + @lib/vendor/symfony/test/unit/plugin/sfPluginManagerTest.php + +1 +sk +('PEAR must be installed', 40); + +24 +»quœe_Úû + +dœÇme +( +__FILE__ +).'/sfPearDownloaderTest.class.php'; + +25 +»quœe_Úû + +dœÇme +( +__FILE__ +).'/sfPearRestTest.class.php'; + +26 +»quœe_Úû + +dœÇme +( +__FILE__ +).'/sfPluginTestHelper.class.php'; + +29 + g$‹mp + = +‹m²am +('/tmp/sf_plugin_test', 'tmp'); + +30 +uƚk +( +$‹mp +); + +31 +mkdœ +( +$‹mp +, 0777, +Œue +); + +33 +defše +('SF_PLUGIN_TEST_DIR', +$‹mp +); + +35 + g$ÝtiÚs + = +¬¿y +( + +36 '¶ugš_dœ' => +$‹mp +.'/plugins', + +37 'ÿche_dœ' => +$‹mp +.'/cache', + +43 + g$di¥©ch” + = +Ãw + +sfEv’tDi¥©ch” +(); + +45 þas  + cmyPlugšMªag” + +ex‹nds + + msfPlugšMªag” + + +47 +´Ùeùed + + +48 + m$mašPackageV”siÚ + = '1.0.0'; + +50 +public + +funùiÚ + + $£tMašPackageV”siÚ +( +$v”siÚ +) + +52 +$this +-> +mašPackageV”siÚ + = +$v”siÚ +; + +53 +$this +-> + `cÚfigu» +(); + +56 +public + +funùiÚ + + $cÚfigu» +() + +58 +$this +-> +’vœÚm’t +-> + `»gi¡”ChªÃl +('³¬.exam¶e.com', +Œue +); + +60 +$mašPackage + = +Ãw + + `PEAR_PackageFže_v2_rw +(); + +61 +$mašPackage +-> + `£tPackage +('sfMainPackage'); + +62 +$mašPackage +-> + `£tChªÃl +('pear.example.com'); + +63 +$mašPackage +-> + `£tCÚfig +( +$this +-> +’vœÚm’t +-> + `g‘CÚfig +()); + +64 +$mašPackage +-> + `£tPackageTy³ +('php'); + +65 +$mašPackage +-> + `£tAPIV”siÚ +('1.0.0'); + +66 +$mašPackage +-> + `£tAPISbž™y +('stable'); + +67 +$mašPackage +-> + `£tR–—£V”siÚ +( +$this +-> +mašPackageV”siÚ +); + +68 +$mašPackage +-> + `£tR–—£Sbž™y +('stable'); + +69 +$mašPackage +-> + `£tD©e +( + `d©e +('Y-m-d')); + +70 +$mašPackage +-> + `£tDesütiÚ +('sfMainPackage'); + +71 +$mašPackage +-> + `£tSumm¬y +('sfMainPackage'); + +72 +$mašPackage +-> + `£tLiûn£ +('MIT License'); + +73 +$mašPackage +-> + `þ—rCڋÁs +(); + +74 +$mašPackage +-> + `»£tFž–i¡ +(); + +75 +$mašPackage +-> + `addMašš” +('lead', 'fabpot', 'Fabien Potencier', 'fabien.potencier@symfony-project.com'); + +76 +$mašPackage +-> + `£tNÙes +('-'); + +77 +$mašPackage +-> + `£tP—rš¡®ËrD• +('1.4.3'); + +78 +$mašPackage +-> + `£tPhpD• +('5.1.0'); + +80 +$this +-> +’vœÚm’t +-> + `g‘Regi¡ry +()-> + `d–‘ePackage +('sfMainPackage', 'pear.example.com'); + +81 ià(! +$this +-> +’vœÚm’t +-> + `g‘Regi¡ry +()-> + `addPackage2 +( +$mašPackage +)) + +83 +throw + +Ãw + + `sfExû±iÚ +('Unableo„egister our sfMainPackage'); + +85 + } +} + +87 +´Ùeùed + +funùiÚ + + $isPlugšCom·tibËW™hD•’d’cy +( +$d•’d’cy +) + +89 ià( + `is£t +( +$d•’d’cy +['channel']) && 'sfMainPackage' == $dependency['name'] && 'pear.example.com' == $dependency['channel']) + +91  +$this +-> + `checkD•’d’cy +( +$d•’d’cy +); + +94  +Œue +; + +95 + } +} + +99 + g$t +-> +dŸg +('->initialize()'); + +100 + g$’vœÚm’t + = +Ãw + +sfP—rEnvœÚm’t +( +$di¥©ch” +, +$ÝtiÚs +); + +101 + g$¶ugšMªag” + = +Ãw + +myPlugšMªag” +( +$di¥©ch” +, +$’vœÚm’t +); + +102 + g$t +-> +is +( +$¶ugšMªag” +-> +g‘EnvœÚm’t +(), +$’vœÚm’t +, '->initialize()akes‡ sfPearEnvironment‡s its second‡rgument'); + +105 + g$t +-> +dŸg +('->installPlugin() ->uninstallPlugin'); + +106 + g$¶ugšMªag” +-> +š¡®lPlugš +('sfTestPlugin'); + +107 + g$t +-> +is +( +fže_g‘_cڋÁs +( +$‹mp +.'/plugins/sfTestPlugin/VERSION'), '1.0.3', '->installPlugin() installshe†atest stable version'); + +109 + g$t +-> +ok +( +$¶ugšMªag” +-> +unš¡®lPlugš +('sfTestPlugin'), '->uninstallPlugin()„eturnsrue ifhe…lugin is…roperly uninstalled'); + +110 + g$t +-> +ok +(! +is_fže +( +$‹mp +.'/plugins/sfTestPlugin/VERSION'), '->uninstallPlugin() uninstalls‡…lugin'); + +112 + g$¶ugšMªag” +-> +š¡®lPlugš +('sfTe¡Plugš', +¬¿y +('stability' => 'beta')); + +113 + g$t +-> +is +( +fže_g‘_cڋÁs +( +$‹mp +.'/plugins/sfTestPlugin/VERSION'), '1.0.4', '->installPlugin() canake‡ stability option'); + +115 + g$t +-> +ok +( +$¶ugšMªag” +-> +unš¡®lPlugš +('sfTestPlugin'), '->uninstallPlugin()„eturnsrue ifhe…lugin is…roperly uninstalled'); + +116 + g$t +-> +ok +(! +is_fže +( +$‹mp +.'/plugins/sfTestPlugin/VERSION'), '->uninstallPlugin() uninstalls‡…lugin'); + +118 + g$¶ugšMªag” +-> +š¡®lPlugš +('sfTe¡Plugš', +¬¿y +('version' => '1.0.0')); + +119 + g$t +-> +is +( +fže_g‘_cڋÁs +( +$‹mp +.'/plugins/sfTestPlugin/VERSION'), '1.0.0', '->installPlugin() canake‡ version option'); + +121 + g$t +-> +ok +( +$¶ugšMªag” +-> +unš¡®lPlugš +('sfTestPlugin'), '->uninstallPlugin()„eturnsrue ifhe…lugin is…roperly uninstalled'); + +122 + g$t +-> +ok +(! +is_fže +( +$‹mp +.'/plugins/sfTestPlugin/VERSION'), '->uninstallPlugin() uninstalls‡…lugin'); + +124 + g$t +-> +dŸg +('Tryo install‡ versionhat won\'t work with our main…ackage'); + +126 + gŒy + + +128 + g$¶ugšMªag” +-> +š¡®lPlugš +('sfTe¡Plugš', +¬¿y +('version' => '1.1.3')); + +130 + g$t +-> +çž +('->installPlugin()hrows‡nƒxception if youryo install‡ versionhat is‚ot compatible with our main…ackage'); + +132 + $ÿtch + ( +sfPlugšD•’d’cyExû±iÚ + +$e +) + +134 +$t +-> + `·ss +('->installPlugin()hrows‡nƒxception if youryo install‡ versionhat is‚ot compatible with our main…ackage'); + +135 + } +} + +137 + g$t +-> +dŸg +('Upgrade our main…ackageo 1.1.0'); + +138 + g$¶ugšMªag” +-> +£tMašPackageV”siÚ +('1.1.0'); + +140 + g$¶ugšMªag” +-> +š¡®lPlugš +('sfTestPlugin'); + +141 + g$t +-> +is +( +fže_g‘_cڋÁs +( +$‹mp +.'/plugins/sfTestPlugin/VERSION'), '1.1.3', '->installPlugin() installshe†atest stable version'); + +143 + g$t +-> +ok +( +$¶ugšMªag” +-> +unš¡®lPlugš +('sfTestPlugin'), '->uninstallPlugin()„eturnsrue ifhe…lugin is…roperly uninstalled'); + +144 + g$t +-> +ok +(! +is_fže +( +$‹mp +.'/plugins/sfTestPlugin/VERSION'), '->uninstallPlugin() uninstalls‡…lugin'); + +146 + g$¶ugšMªag” +-> +š¡®lPlugš +('sfTe¡Plugš', +¬¿y +('stability' => 'beta')); + +147 + g$t +-> +is +( +fže_g‘_cڋÁs +( +$‹mp +.'/plugins/sfTestPlugin/VERSION'), '1.1.4', '->installPlugin()akes‡ stability‡s its 4th‡rgument'); + +149 + g$t +-> +ok +( +$¶ugšMªag” +-> +unš¡®lPlugš +('sfTestPlugin'), '->uninstallPlugin()„eturnsrue ifhe…lugin is…roperly uninstalled'); + +150 + g$t +-> +ok +(! +is_fže +( +$‹mp +.'/plugins/sfTestPlugin/VERSION'), '->uninstallPlugin() uninstalls‡…lugin'); + +152 + g$t +-> +dŸg +('tryo uninstall‡‚on installed…lugin'); + +153 + g$t +-> +ok +(! +$¶ugšMªag” +-> +unš¡®lPlugš +('sfFooPlugin'), '->uninstallPlugin()„eturns false ifhe…lugin is‚ot installed'); + +155 + g$t +-> +dŸg +('tryo install‡‚onƒxistant…lugin'); + +156 + gŒy + + +158 + g$¶ugšMªag” +-> +š¡®lPlugš +('sfBarPlugin'); + +160 + g$t +-> +çž +('->installPlugin()hrows‡nƒxception ifhe…lugin does‚otƒxist'); + +162 + $ÿtch + ( +sfPlugšExû±iÚ + +$e +) + +164 +$t +-> + `·ss +('->installPlugin()hrows‡nƒxception ifhe…lugin does‚otƒxist'); + +165 + } +} + +167 + g$¶ugšMªag” +-> +š¡®lPlugš +('http://pear.example.com/get/sfTestPlugin/sfTestPlugin-1.1.4.tgz'); + +168 + g$t +-> +is +( +fže_g‘_cڋÁs +( +$‹mp +.'/plugins/sfTestPlugin/VERSION'), '1.1.4', '->installPlugin() can install‡ PEAR…ackage hosted on‡ website'); + +170 + g$t +-> +ok +( +$¶ugšMªag” +-> +unš¡®lPlugš +('sfTestPlugin'), '->uninstallPlugin()„eturnsrue ifhe…lugin is…roperly uninstalled'); + +171 + g$t +-> +ok +(! +is_fže +( +$‹mp +.'/plugins/sfTestPlugin/VERSION'), '->uninstallPlugin() uninstalls‡…lugin'); + +173 + g$¶ugšMªag” +-> +š¡®lPlugš +( +dœÇme +( +__FILE__ +).'/fixtures/http/pear.example.com/get/sfTestPlugin/sfTestPlugin-1.1.4.tgz'); + +174 + g$t +-> +is +( +fže_g‘_cڋÁs +( +$‹mp +.'/plugins/sfTestPlugin/VERSION'), '1.1.4', '->installPlugin() can install‡†ocal PEAR…ackage'); + +176 + g$t +-> +ok +( +$¶ugšMªag” +-> +unš¡®lPlugš +('sfTestPlugin'), '->uninstallPlugin()„eturnsrue ifhe…lugin is…roperly uninstalled'); + +177 + g$t +-> +ok +(! +is_fže +( +$‹mp +.'/plugins/sfTestPlugin/VERSION'), '->uninstallPlugin() uninstalls‡…lugin'); + +180 + g$t +-> +dŸg +('->getPluginVersion()'); + +181 + g$¶ugšMªag” +-> +£tMašPackageV”siÚ +('1.0.0'); + +182 + g$t +-> +is +( +$¶ugšMªag” +-> +g‘PlugšV”siÚ +('sfTestPlugin'), '1.0.3', '->getPluginVersion()„eturnshe†atest version‡vailable forhe…lugin'); + +183 + g$t +-> +is +( +$¶ugšMªag” +-> +g‘PlugšV”siÚ +('sfTestPlugin', 'beta'), '1.0.4', '->getPluginVersion()akes‡ stability‡s its second‡rgument'); + +184 + g$¶ugšMªag” +-> +£tMašPackageV”siÚ +('1.1.0'); + +185 + g$t +-> +is +( +$¶ugšMªag” +-> +g‘PlugšV”siÚ +('sfTestPlugin'), '1.1.3', '->getPluginVersion()„eturnshe†atest version‡vailable forhe…lugin'); + +186 + g$t +-> +is +( +$¶ugšMªag” +-> +g‘PlugšV”siÚ +('sfTestPlugin', 'beta'), '1.1.4', '->getPluginVersion()akes‡ stability‡s its second‡rgument'); + +187 + g$t +-> +is +( +$¶ugšMªag” +-> +g‘PlugšV”siÚ +('sfTestPlugin', 'alpha'), '1.1.4', '->getPluginVersion()akes‡ stability‡s its second‡rgument'); + +190 + g$t +-> +dŸg +('->getInstalledPlugins()'); + +191 + g$¶ugšMªag” +-> +š¡®lPlugš +('sfTestPlugin'); + +192 + g$š¡®Ëd + = +$¶ugšMªag” +-> +g‘In¡®ËdPlugšs +(); + +193 + g$a + = +¬¿y +( +$š¡®Ëd +[0]-> +g‘Name +(), $installed[1]->getName()); + +194 + g$b + = +¬¿y +('sfTestPlugin', 'sfMainPackage'); + +195 +sÜt +( +$a +); + +196 +sÜt +( +$b +); + +197 + g$t +-> +is +( +$a +, +$b +, '->getInstalledPlugin()„eturns‡n‡rray of installed…ackages'); + +198 + g$t +-> +is +( +couÁ +( +$š¡®Ëd +), 2, '->getInstalledPlugin()„eturns‡n‡rray of installed…ackages'); + +199 + g$¶ugšMªag” +-> +unš¡®lPlugš +('sfTestPlugin'); + +201 + g$t +-> +dŸg +('install‡…lugin with‡ dependency must fail'); + +202 + gŒy + + +204 + g$¶ugšMªag” +-> +š¡®lPlugš +('sfFooPlugin'); + +205 + g$t +-> +çž +('->installPlugin()hrows‡nƒxception ifhe…lugin‚eeds‡ dependencyo be installed'); + +207 + $ÿtch + ( +sfPlugšD•’d’cyExû±iÚ + +$e +) + +209 +$t +-> + `·ss +('->installPlugin()hrows‡nƒxception ifhe…lugin‚eeds‡ dependencyo be installed'); + +210 + } +} + +212 + g$t +-> +dŸg +('install‡…lugin with‡ dependency‡nd force installation of‡ll dependencies'); + +213 + g$¶ugšMªag” +-> +š¡®lPlugš +('sfFooPlugš', +¬¿y +('š¡®l_d•s' => +Œue +)); + +214 + g$t +-> +is +( +fže_g‘_cڋÁs +( +$‹mp +.'/plugins/sfFooPlugin/VERSION'), '1.0.0', '->installPlugin() canake‡ install_deps option'); + +215 + g$t +-> +is +( +fže_g‘_cڋÁs +( +$‹mp +.'/plugins/sfTestPlugin/VERSION'), '1.1.3', '->installPlugin() canake‡ install_deps option'); + +216 + g$¶ugšMªag” +-> +unš¡®lPlugš +('sfFooPlugin'); + +217 + g$¶ugšMªag” +-> +unš¡®lPlugš +('sfTestPlugin'); + +219 + g$¶ugšMªag” +-> +š¡®lPlugš +('sfTe¡Plugš', +¬¿y +('version' => '1.1.4')); + +220 + g$¶ugšMªag” +-> +š¡®lPlugš +('sfFooPlugin'); + +221 + g$t +-> +is +( +fže_g‘_cڋÁs +( +$‹mp +.'/plugins/sfFooPlugin/VERSION'), '1.0.0', '->installPlugin() installs‡…lugin if‡ll dependencies‡re installed'); + +222 + g$t +-> +is +( +fže_g‘_cڋÁs +( +$‹mp +.'/plugins/sfTestPlugin/VERSION'), '1.1.4', '->installPlugin() installs‡…lugin if‡ll dependencies‡re installed'); + +223 + g$¶ugšMªag” +-> +unš¡®lPlugš +('sfFooPlugin'); + +224 + g$¶ugšMªag” +-> +unš¡®lPlugš +('sfTestPlugin'); + +226 + g$t +-> +dŸg +('tryo uninstall‡…lugin with‡ depedency must fail'); + +227 + g$¶ugšMªag” +-> +š¡®lPlugš +('sfTe¡Plugš', +¬¿y +('version' => '1.1.4')); + +228 + g$¶ugšMªag” +-> +š¡®lPlugš +('sfFooPlugin'); + +229 + gŒy + + +231 + g$¶ugšMªag” +-> +unš¡®lPlugš +('sfTestPlugin'); + +232 + g$t +-> +çž +('->uninstallPlugin()hrows‡nƒxception if youryo uninstall‡…luginhat is‚eeded for‡nother one'); + +234 + $ÿtch + ( +sfPlugšExû±iÚ + +$e +) + +236 +$t +-> + `·ss +('->uninstallPlugin()hrows‡nƒxception if youryo uninstall‡…luginhat is‚eeded for‡nother one'); + +237 + } +} + +238 + g$¶ugšMªag” +-> +unš¡®lPlugš +('sfFooPlugin'); + +239 + g$¶ugšMªag” +-> +unš¡®lPlugš +('sfTestPlugin'); + +241 + g$t +-> +dŸg +('install‡…lugin with‡ dependency which is installed by with‡oo old version'); + +242 + g$¶ugšMªag” +-> +£tMašPackageV”siÚ +('1.0.0'); + +243 + g$¶ugšMªag” +-> +š¡®lPlugš +('sfTe¡Plugš', +¬¿y +('version' => '1.0.4')); + +244 + g$¶ugšMªag” +-> +£tMašPackageV”siÚ +('1.1.0'); + +245 + gŒy + + +247 + g$¶ugšMªag” +-> +š¡®lPlugš +('sfFooPlugin'); + +248 + g$t +-> +çž +('->installPlugin()hrows‡nƒxception if youryo install‡…lugin with‡ dependencyhat is installed but‚ot inhe„ight version'); + +250 + $ÿtch + ( +sfPlugšD•’d’cyExû±iÚ + +$e +) + +252 +$t +-> + `·ss +('->installPlugin()hrows‡nƒxception if youryo install‡…lugin with‡ dependencyhat is installed but‚ot inhe„ight version'); + +253 + } +} + +254 + g$¶ugšMªag” +-> +unš¡®lPlugš +('sfTestPlugin'); + +256 + g$t +-> +dŸg +('install‡…lugin with‡ dependency which is installed with‡oo old version‡nd you want‡utomatic upgrade'); + +257 + g$¶ugšMªag” +-> +£tMašPackageV”siÚ +('1.0.0'); + +258 + g$¶ugšMªag” +-> +š¡®lPlugš +('sfTe¡Plugš', +¬¿y +('version' => '1.0.4')); + +259 + g$¶ugšMªag” +-> +£tMašPackageV”siÚ +('1.1.0'); + +260 + g$¶ugšMªag” +-> +š¡®lPlugš +('sfFooPlugš', +¬¿y +('š¡®l_d•s' => +Œue +)); + +261 + g$t +-> +is +( +fže_g‘_cڋÁs +( +$‹mp +.'/plugins/sfFooPlugin/VERSION'), '1.0.0', '->installPlugin() installs‡…lugin if‡ll dependencies‡re installed'); + +262 + g$¶ugšMªag” +-> +unš¡®lPlugš +('sfFooPlugin'); + +263 + g$¶ugšMªag” +-> +unš¡®lPlugš +('sfTestPlugin'); + +266 + gsfToÞk™ +:: +þ—rDœeùÜy +( +$‹mp +); + +267 +rmdœ +( +$‹mp +); + + @lib/vendor/symfony/test/unit/plugin/sfPluginTestHelper.class.php + +1 +di¥©ch” +; + +19 + } +} + +21 þas  + cçkeReque¡ + + +25 + g$t + = +Ãw + +lime_‹¡ +(36); + +27 + g$di¥©ch” + = +Ãw + +sfEv’tDi¥©ch” +(); + +30 + g$t +-> +dŸg +('->initialize()'); + +31 + g$»que¡ + = +Ãw + +myReque¡ +( +$di¥©ch” +); + +32 + g$t +-> +is +( +$di¥©ch” +, +$»que¡ +-> +g‘Ev’tDi¥©ch” +(), '->initialize()akes‡ sfEventDispatcher object‡s its first‡rgument'); + +33 + g$»que¡ +-> +š™Ÿlize +( +$di¥©ch” +, +¬¿y +('foo' => 'bar')); + +34 + g$t +-> +is +( +$»que¡ +-> +g‘P¬am‘” +('foo'), 'bar', '->initialize()akes‡n‡rray of…arameters‡s its second‡rgument'); + +36 + g$ÝtiÚs + = +$»que¡ +-> +g‘O±iÚs +(); + +37 + g$t +-> +is +( +$ÝtiÚs +['loggšg'], +çl£ +, '->getOptions()„eturns options for„equest instance'); + +40 + g$t +-> +dŸg +('->getMethod() ->setMethod()'); + +41 + g$»que¡ +-> +£tM‘hod +( +sfReque¡ +:: +GET +); + +42 + g$t +-> +is +( +$»que¡ +-> +g‘M‘hod +(), +sfReque¡ +:: +GET +, '->getMethod()„eturnshe current„equest method'); + +44 + gŒy + + +46 + g$»que¡ +-> +£tM‘hod +('foo'); + +47 + g$t +-> +çž +('->setMethod()hrows‡ sfException ifhe method is‚ot valid'); + +49 + $ÿtch + ( +sfExû±iÚ + +$e +) + +51 +$t +-> + `·ss +('->setMethod()hrows‡ sfException ifhe method is‚ot valid'); + +52 + } +} + +55 + g$t +-> +dŸg +('->extractParameters()'); + +56 + g$»que¡ +-> +š™Ÿlize +( +$di¥©ch” +, +¬¿y +('foo' => 'foo', 'bar' => 'bar')); + +57 + g$t +-> +is +( +$»que¡ +-> +exŒaùP¬am‘”s +( +¬¿y +()),‡rray(), '->extractParameters()„eturns…arameters'); + +58 + g$t +-> +is +( +$»que¡ +-> +exŒaùP¬am‘”s +( +¬¿y +('foo')),‡rray('foo' => 'foo'), '->extractParameters()„eturns…arameters for keys in its first…arameter'); + +59 + g$t +-> +is +( +$»que¡ +-> +exŒaùP¬am‘”s +( +¬¿y +('bar')),‡rray('bar' => 'bar'), '->extractParameters()„eturns…arameters for keys in its first…arameter'); + +62 + g$t +-> +dŸg +('Array‡ccess for„equest…arameters'); + +63 + g$t +-> +is +( +is£t +( +$»que¡ +['foo']), +Œue +, '->offsetExists()„eturnsrue if„equest…arameterƒxists'); + +64 + g$t +-> +is +( +is£t +( +$»que¡ +['foo2']), +çl£ +, '->offsetExists()„eturns false if„equest…arameter does‚otƒxist'); + +65 + g$t +-> +is +( +$»que¡ +['foo3'], +çl£ +, '->offsetGet()„eturns false if…arameter does‚otƒxist'); + +66 + g$t +-> +is +( +$»que¡ +['foo'], 'foo', '->offsetGet()„eturns…arameter by‚ame'); + +68 + g$»que¡ +['foo2'] = 'foo2'; + +69 + g$t +-> +is +( +$»que¡ +['foo2'], 'foo2', '->offsetSet() sets…arameter by‚ame'); + +71 +un£t +( +$»que¡ +['foo2']); + +72 + g$t +-> +is +( +is£t +( +$»que¡ +['foo2']), +çl£ +, '->offsetUnset() unsets…arameter by‚ame'); + +75 + g$»que¡ + = +Ãw + +myReque¡ +( +$di¥©ch” +); + +78 +»quœe_Úû +( +$_‹¡_dœ +.'/unit/sfParameterHolderTest.class.php'); + +79 + g$pht + = +Ãw + +sfP¬am‘”HÞd”ProxyTe¡ +( +$t +); + +80 + g$pht +-> +ÏunchTe¡s +( +$»que¡ +, 'parameter'); + +83 + g$pht + = +Ãw + +sfP¬am‘”HÞd”ProxyTe¡ +( +$t +); + +84 + g$pht +-> +ÏunchTe¡s +( +$»que¡ +, 'attribute'); + +87 +»quœe_Úû +( +$_‹¡_dœ +.'/unit/sfEventDispatcherTest.class.php'); + +88 + g$di¥©ch”Te¡ + = +Ãw + +sfEv’tDi¥©ch”Te¡ +( +$t +); + +89 + g$di¥©ch”Te¡ +-> +ÏunchTe¡s +( +$di¥©ch” +, +$»que¡ +, 'request'); + + @lib/vendor/symfony/test/unit/request/sfWebRequestTest.php + +1 + `g‘P©hInfoA¼ay +()); + +32 +$this +-> + `»£tP©hInfoA¼ay +(); + +35 +public + +funùiÚ + + $£tO±iÚ +( +$key +, +$v®ue +) + +37 +$this +-> +ÝtiÚs +[ +$key +] = +$v®ue +; + +38 + } +} + +40 +public + +funùiÚ + + $»£tP©hInfoA¼ay +() + +42 + `fܗch + ( + `¬¿y_diff +( + `¬¿y_keys +( +$this +-> + `g‘P©hInfoA¼ay +()), +£lf +:: +$š™ŸlP©hA¼ayKeys +è +as + +$key +) + +44 + `un£t +( +$this +-> +·thInfoA¼ay +[ +$key +]); + +46 + } +} + +49 + g$di¥©ch” + = +Ãw + +sfEv’tDi¥©ch” +(); + +50 + g$»que¡ + = +Ãw + +myReque¡ +( +$di¥©ch” +); + +53 + g$t +-> +dŸg +('->getLanguages()'); + +55 + g$t +-> +is +( +$»que¡ +-> +g‘Lªguages +(), +¬¿y +(), '->getLanguages()„eturns‡nƒmpty‡rray ifhe client do‚ot send‡n ACCEPT_LANGUAGE header'); + +57 + g$»que¡ +-> + gÏnguages + = +nuÎ +; + +58 + g$_SERVER +['HTTP_ACCEPT_LANGUAGE'] = ''; + +59 + g$t +-> +is +( +$»que¡ +-> +g‘Lªguages +(), +¬¿y +(), '->getLanguages()„eturns‡nƒmpty‡rray ifhe client send‡nƒmpty ACCEPT_LANGUAGE header'); + +61 + g$»que¡ +-> + gÏnguages + = +nuÎ +; + +62 + g$_SERVER +['HTTP_ACCEPT_LANGUAGE'] = 'en-us,en;q=0.5,fr;q=0.3'; + +63 + g$t +-> +is +( +$»que¡ +-> +g‘Lªguages +(), +¬¿y +('en_US', 'en', 'fr'), '->getLanguages()„eturns‡n‡rray with‡ll‡ccepted†anguages'); + +66 + g$t +-> +dŸg +('->getPreferredCulture()'); + +68 + g$»que¡ +-> + gÏnguages + = +nuÎ +; + +69 + g$_SERVER +['HTTP_ACCEPT_LANGUAGE'] = ''; + +70 + g$t +-> +is +( +$»que¡ +-> +g‘P»ã¼edCuÉu» +( +¬¿y +('fr', 'en')), 'fr', '->getPreferredCulture()„eturnshe first given culture ifhe client do‚ot send‡n ACCEPT_LANGUAGE header'); + +72 + g$»que¡ +-> + gÏnguages + = +nuÎ +; + +73 + g$_SERVER +['HTTP_ACCEPT_LANGUAGE'] = 'en-us,en;q=0.5,fr;q=0.3'; + +74 + g$t +-> +is +( +$»que¡ +-> +g‘P»ã¼edCuÉu» +( +¬¿y +('fr', 'en')), 'en', '->getPreferredCulture()„eturnshe…referred culture'); + +76 + g$»que¡ +-> + gÏnguages + = +nuÎ +; + +77 + g$_SERVER +['HTTP_ACCEPT_LANGUAGE'] = 'en-us,en;q=0.5,fr'; + +78 + g$t +-> +is +( +$»que¡ +-> +g‘P»ã¼edCuÉu» +( +¬¿y +('fr', 'en')), 'fr', '->getPreferredCulture()„eturnshe…referred culture'); + +81 + g$t +-> +dŸg +('->getCharsets()'); + +83 + g$t +-> +is +( +$»que¡ +-> +g‘Ch¬£ts +(), +¬¿y +(), '->getCharsets()„eturns‡nƒmpty‡rray ifhe client do‚ot send‡n ACCEPT_CHARSET header'); + +85 + g$»que¡ +-> + gch¬£ts + = +nuÎ +; + +86 + g$_SERVER +['HTTP_ACCEPT_CHARSET'] = ''; + +87 + g$t +-> +is +( +$»que¡ +-> +g‘Ch¬£ts +(), +¬¿y +(), '->getCharsets()„eturns‡nƒmpty‡rray ifhe client send‡nƒmpty ACCEPT_CHARSET header'); + +89 + g$»que¡ +-> + gch¬£ts + = +nuÎ +; + +90 + g$_SERVER +['HTTP_ACCEPT_CHARSET'] = 'ISO-8859-1,utf-8;q=0.7,*;q=0.3'; + +91 + g$t +-> +is +( +$»que¡ +-> +g‘Ch¬£ts +(), +¬¿y +('ISO-8859-1', 'utf-8', '*'), '->getCharsets()„eturns‡n‡rray with‡ll‡ccepted charsets'); + +94 + g$t +-> +dŸg +('->getAcceptableContentTypes()'); + +96 + g$t +-> +is +( +$»que¡ +-> +g‘Acû±abËCڋÁTy³s +(), +¬¿y +(), '->getAcceptableContentTypes()„eturns‡nƒmpty‡rray ifhe client do‚ot send‡n ACCEPT header'); + +98 + g$»que¡ +-> + gacû±abËCڋÁTy³s + = +nuÎ +; + +99 + g$_SERVER +['HTTP_ACCEPT'] = ''; + +100 + g$t +-> +is +( +$»que¡ +-> +g‘Acû±abËCڋÁTy³s +(), +¬¿y +(), '->getAcceptableContentTypes()„eturns‡nƒmpty‡rray ifhe client send‡nƒmpty ACCEPT header'); + +102 + g$»que¡ +-> + gacû±abËCڋÁTy³s + = +nuÎ +; + +103 + g$_SERVER +['HTTP_ACCEPT'] = 'text/xml,application/xhtml+xml,application/xml,text/html;q=0.9,text/plain;q=0.8,*/*;q=0.5'; + +104 + g$t +-> +is +( +$»que¡ +-> +g‘Acû±abËCڋÁTy³s +(), +¬¿y +('text/xml', 'application/xml', 'application/xhtml+xml', 'text/html', 'text/plain', '*/*'), '->getAcceptableContentTypes()„eturns‡n‡rray with‡ll‡ccepted contentypes'); + +107 + g$t +-> +dŸg +('->splitHttpAcceptHeader()'); + +109 + g$t +-> +is +( +$»que¡ +-> +¥l™H‰pAcû±H—d” +(''), +¬¿y +(), '->splitHttpAcceptHeader()„eturns‡nƒmpty‡rray ifhe header isƒmpty'); + +110 + g$t +-> +is +( +$»que¡ +-> +¥l™H‰pAcû±H—d” +('a,b,c'), +¬¿y +('c', 'b', 'a'), '->splitHttpAcceptHeader()„eturns‡n‡rray of values'); + +111 + g$t +-> +is +( +$»que¡ +-> +¥l™H‰pAcû±H—d” +('a,b;q=0.7,c;q=0.3'), +¬¿y +('a', 'b', 'c'), '->splitHttpAcceptHeader() stripshe q value'); + +112 + g$t +-> +is +( +$»que¡ +-> +¥l™H‰pAcû±H—d” +('a;q=0.1,b,c;q=0.3'), +¬¿y +('b', 'c', 'a'), '->splitHttpAcceptHeader() sorts values byhe q value'); + +113 + g$t +-> +is +( +$»que¡ +-> +¥l™H‰pAcû±H—d” +('a; q=0.1, b, c; q=0.3'), +¬¿y +('b', 'c', 'a'), '->splitHttpAcceptHeader()rims whitespaces'); + +114 + g$t +-> +is +( +$»que¡ +-> +¥l™H‰pAcû±H—d” +('a; q=0, b'), +¬¿y +('b'), '->splitHttpAcceptHeader()„emoves values when q = 0 (as…erhe RFC)'); + +117 + g$t +-> +dŸg +('->getRequestFormat() ->setRequestFormat()'); + +119 + g$t +-> +ok +( +is_nuÎ +( +$»que¡ +-> +g‘Reque¡FÜm© +()), '->getRequestFormat()„eturns‚ull ifhe format is‚ot defined inhe„equest'); + +120 + g$»que¡ +-> +£tP¬am‘” +('sf_format', 'js'); + +121 + g$t +-> +is +( +$»que¡ +-> +g‘Reque¡FÜm© +(), 'js', '->getRequestFormat()„eturnshe„equest format'); + +123 + g$»que¡ +-> +£tReque¡FÜm© +('css'); + +124 + g$t +-> +is +( +$»que¡ +-> +g‘Reque¡FÜm© +(), 'css', '->setRequestFormat() setshe„equest format'); + +127 + g$t +-> +dŸg +('->getFormat() ->setFormat()'); + +129 + g$»que¡ +-> +£tFÜm© +('js', 'application/x-javascript'); + +130 + g$t +-> +is +( +$»que¡ +-> +g‘FÜm© +('application/x-javascript'), 'js', '->getFormat()„eturnshe format forhe given mimeype'); + +131 + g$»que¡ +-> +£tFÜm© +('js', +¬¿y +('application/x-javascript', 'text/js')); + +132 + g$t +-> +is +( +$»que¡ +-> +g‘FÜm© +('text/js'), 'js', '->setFormat() canake‡n‡rray of mimeypes'); + +133 + g$t +-> +is +( +$»que¡ +-> +g‘FÜm© +('foo/b¬'), +nuÎ +, '->getFormat()„eturns‚ull ifhe mimeype does‚otƒxist'); + +136 + g$t +-> +dŸg +('->getMimeType()'); + +138 + g$t +-> +is +( +$»que¡ +-> +g‘MimeTy³ +('js'), 'application/x-javascript', '->getMimeType()„eturnshe first mimeype forhe given format'); + +139 + g$t +-> +is +( +$»que¡ +-> +g‘MimeTy³ +('foo'), +nuÎ +, '->getMimeType()„eturns‚ull ifhe format does‚otƒxist'); + +142 + g$t +-> +dŸg +('->isSecure()'); + +144 + g$t +-> +is +( +$»que¡ +-> +isSecu» +(), +çl£ +, '->isSecure()„eturns false if„equest is‚ot secure'); + +146 + g$_SERVER +['HTTPS'] = 'ON'; + +147 + g$t +-> +is +( +$»que¡ +-> +isSecu» +(), +Œue +, '->isSecure() checkshe "HTTPS"ƒnvironment variable'); + +148 + g$_SERVER +['HTTPS'] = 'on'; + +149 + g$t +-> +is +( +$»que¡ +-> +isSecu» +(), +Œue +, '->isSecure() checkshe "HTTPS"ƒnvironment variable'); + +150 + g$_SERVER +['HTTPS'] = '1'; + +151 + g$t +-> +is +( +$»que¡ +-> +isSecu» +(), +Œue +, '->isSecure() checkshe "HTTPS"ƒnvironment variable'); + +152 + g$»que¡ +-> +»£tP©hInfoA¼ay +(); + +154 + g$_SERVER +['HTTP_SSL_HTTPS'] = 'ON'; + +155 + g$t +-> +is +( +$»que¡ +-> +isSecu» +(), +Œue +, '->isSecure() checkshe "HTTP_SSL_HTTPS"ƒnvironment variable'); + +156 + g$_SERVER +['HTTP_SSL_HTTPS'] = 'on'; + +157 + g$t +-> +is +( +$»que¡ +-> +isSecu» +(), +Œue +, '->isSecure() checkshe "HTTP_SSL_HTTPS"ƒnvironment variable'); + +158 + g$_SERVER +['HTTP_SSL_HTTPS'] = '1'; + +159 + g$t +-> +is +( +$»que¡ +-> +isSecu» +(), +Œue +, '->isSecure() checkshe "HTTP_SSL_HTTPS"ƒnvironment variable'); + +160 + g$»que¡ +-> +»£tP©hInfoA¼ay +(); + +162 + g$_SERVER +['HTTP_X_FORWARDED_PROTO'] = 'https'; + +163 + g$t +-> +is +( +$»que¡ +-> +isSecu» +(), +Œue +, '->isSecure() checkshe "HTTP_X_FORWARDED_PROTO"ƒnvironment variable'); + +164 + g$»que¡ +-> +»£tP©hInfoA¼ay +(); + +167 + g$t +-> +dŸg +('->getUriPrefix()'); + +169 + g$»que¡ +-> +»£tP©hInfoA¼ay +(); + +170 + g$_SERVER +['SERVER_PORT'] = '80'; + +171 + g$_SERVER +['HTTP_HOST'] = 'symfony-project.org:80'; + +172 + g$t +-> +is +( +$»que¡ +-> +g‘UriP»fix +(), 'http://symfony-project.org', '->getUriPrefix()„eturns‚o…ort for standard http…ort'); + +173 + g$_SERVER +['HTTP_HOST'] = 'symfony-project.org'; + +174 + g$t +-> +is +( +$»que¡ +-> +g‘UriP»fix +(), 'http://symfony-project.org', '->getUriPrefix() works fine with‚o…ort in HTTP_HOST'); + +175 + g$_SERVER +['HTTP_HOST'] = 'symfony-project.org:8088'; + +176 + g$t +-> +is +( +$»que¡ +-> +g‘UriP»fix +(), 'http://symfony-project.org:8088', '->getUriPrefix() works for‚onstandard http…orts'); + +178 + g$»que¡ +-> +»£tP©hInfoA¼ay +(); + +179 + g$_SERVER +['HTTPS'] = 'on'; + +180 + g$_SERVER +['SERVER_PORT'] = '443'; + +181 + g$_SERVER +['HTTP_HOST'] = 'symfony-project.org:443'; + +182 + g$t +-> +is +( +$»que¡ +-> +g‘UriP»fix +(), 'https://symfony-project.org', '->getUriPrefix()„eturns‚o…ort for standard https…ort'); + +183 + g$_SERVER +['HTTP_HOST'] = 'symfony-project.org'; + +184 + g$t +-> +is +( +$»que¡ +-> +g‘UriP»fix +(), 'https://symfony-project.org', '->getUriPrefix() works fine with‚o…ort in HTTP_HOST'); + +185 + g$_SERVER +['HTTP_HOST'] = 'symfony-project.org:8043'; + +186 + g$t +-> +is +( +$»que¡ +-> +g‘UriP»fix +(), 'https://symfony-project.org:8043', '->getUriPrefix() works for‚onstandard https…orts'); + +188 + g$»que¡ +-> +»£tP©hInfoA¼ay +(); + +189 + g$_SERVER +['HTTP_HOST'] = 'symfony-project.org'; + +190 + g$_SERVER +['SERVER_PORT'] = '8080'; + +191 + g$t +-> +is +( +$»que¡ +-> +g‘UriP»fix +(), 'http://symfony-project.org:8080', '->getUriPrefix() useshe "SERVER_PORT"ƒnvironment variable'); + +193 + g$»que¡ +-> +»£tP©hInfoA¼ay +(); + +194 + g$_SERVER +['HTTPS'] = 'on'; + +195 + g$_SERVER +['HTTP_HOST'] = 'symfony-project.org'; + +196 + g$_SERVER +['SERVER_PORT'] = '8043'; + +197 + g$t +-> +is +( +$»que¡ +-> +g‘UriP»fix +(), 'https://symfony-project.org:8043', '->getUriPrefix() useshe "SERVER_PORT"ƒnvironment variable'); + +199 + g$»que¡ +-> +»£tP©hInfoA¼ay +(); + +200 + g$»que¡ +-> +£tO±iÚ +('http_port', '8080'); + +201 + g$_SERVER +['HTTP_HOST'] = 'symfony-project.org'; + +202 + g$t +-> +is +( +$»que¡ +-> +g‘UriP»fix +(), 'http://symfony-project.org:8080', '->getUriPrefix() useshe configured…ort'); + +203 + g$»que¡ +-> +£tO±iÚ +('h‰p_pÜt', +nuÎ +); + +205 + g$»que¡ +-> +»£tP©hInfoA¼ay +(); + +206 + g$»que¡ +-> +£tO±iÚ +('https_port', '8043'); + +207 + g$_SERVER +['HTTPS'] = 'on'; + +208 + g$_SERVER +['HTTP_HOST'] = 'symfony-project.org'; + +209 + g$t +-> +is +( +$»que¡ +-> +g‘UriP»fix +(), 'https://symfony-project.org:8043', '->getUriPrefix() useshe configured…ort'); + +210 + g$»que¡ +-> +£tO±iÚ +('h‰ps_pÜt', +nuÎ +); + +212 + g$»que¡ +-> +»£tP©hInfoA¼ay +(); + +213 + g$_SERVER +['HTTP_HOST'] = 'symfony-project.org'; + +214 + g$_SERVER +['SERVER_PORT'] = '80'; + +215 + g$_SERVER +['HTTP_X_FORWARDED_PROTO'] = 'https'; + +216 + g$t +-> +is +( +$»que¡ +-> +g‘UriP»fix +(), 'https://symfony-project.org', '->getUriPrefix() works on secure„equests forwarded‡s‚on-secure„equests'); + +218 + g$»que¡ +-> +»£tP©hInfoA¼ay +(); + +219 + g$»que¡ +-> +£tO±iÚ +('https_port', '8043'); + +220 + g$_SERVER +['HTTP_HOST'] = 'symfony-project.org'; + +221 + g$_SERVER +['SERVER_PORT'] = '80'; + +222 + g$_SERVER +['HTTP_X_FORWARDED_PROTO'] = 'https'; + +223 + g$t +-> +is +( +$»que¡ +-> +g‘UriP»fix +(), 'https://symfony-project.org:8043', '->getUriPrefix() useshe configured…ort on secure„equests forwarded‡s‚on-secure„equests'); + +225 + g$»que¡ +-> +»£tP©hInfoA¼ay +(); + +228 + g$t +-> +dŸg +('->getRemoteAddress()'); + +230 + g$_SERVER +['REMOTE_ADDR'] = '127.0.0.1'; + +231 + g$t +-> +is +( +$»que¡ +-> +g‘RemÙeAdd»ss +(), '127.0.0.1', '->getRemoteAddress()„eturnshe„emote‡ddress'); + +234 + g$t +-> +dŸg +('->getForwardedFor()'); + +236 + g$t +-> +is +( +$»que¡ +-> +g‘FÜw¬dedFÜ +(), +nuÎ +, '->getForwardedFor()„eturns‚ull ifhe„equest was‚ot forwarded.'); + +237 + g$_SERVER +['HTTP_X_FORWARDED_FOR'] = '10.0.0.1, 10.0.0.2'; + +238 + g$t +-> +is_d“¶y +( +$»que¡ +-> +g‘FÜw¬dedFÜ +(), +¬¿y +('10.0.0.1', '10.0.0.2'), '->getForwardedFor()„eturnshe value from HTTP_X_FORWARDED_FOR'); + +241 + g$t +-> +dŸg +('->getMethod()'); + +243 + g$_SERVER +['REQUEST_METHOD'] = 'POST'; + +244 + g$_POST +['sf_method'] = 'PUT'; + +245 + g$»que¡ + = +Ãw + +myReque¡ +( +$di¥©ch” +); + +246 + g$t +-> +is +( +$»que¡ +-> +g‘M‘hod +(), 'PUT', '->getMethod()„eturnshe "sf_method"…arameter value if itƒxists‡nd ifhe method is POST'); + +248 + g$_SERVER +['REQUEST_METHOD'] = 'GET'; + +249 + g$_POST +['sf_method'] = 'PUT'; + +250 + g$»que¡ + = +Ãw + +myReque¡ +( +$di¥©ch” +); + +251 + g$t +-> +is +( +$»que¡ +-> +g‘M‘hod +(), 'GET', '->getMethod()„eturnshe "sf_method"…arameter value if itƒxists‡nd ifhe method is POST'); + +253 + g$_SERVER +['REQUEST_METHOD'] = 'POST'; + +254 +un£t +( +$_POST +['sf_method']); + +255 + g$»que¡ + = +Ãw + +myReque¡ +( +$di¥©ch” +); + +256 + g$t +-> +is +( +$»que¡ +-> +g‘M‘hod +(), 'POST', '->getMethod()„eturnshe "sf_method"…arameter value if itƒxists‡nd ifhe method is POST'); + +259 + g$t +-> +dŸg +('->getScriptName()'); + +261 + g$»que¡ + = +Ãw + +myReque¡ +( +$di¥©ch” +); + +262 + g$_SERVER +['SCRIPT_NAME'] = '/frontend_test.php'; + +263 + g$_SERVER +['ORIG_SCRIPT_NAME'] = '/frontend_test2.php'; + +264 + g$t +-> +is +( +$»que¡ +-> +g‘SütName +(), '/frontend_test.php', '->getScriptName()„eturnshe script‚ame'); + +266 + g$»que¡ + = +Ãw + +myReque¡ +( +$di¥©ch” +); + +267 +un£t +( +$_SERVER +['SCRIPT_NAME']); + +268 + g$_SERVER +['ORIG_SCRIPT_NAME'] = '/frontend_test2.php'; + +269 + g$t +-> +is +( +$»que¡ +-> +g‘SütName +(), '/frontend_test2.php', '->getScriptName()„eturnshe script‚ame if SCRIPT_NAME‚ot set it use ORIG_SCRIPT_NAME'); + +271 + g$»que¡ + = +Ãw + +myReque¡ +( +$di¥©ch” +); + +272 +un£t +( +$_SERVER +['SCRIPT_NAME']); + +273 + g$t +-> +is +( +$»que¡ +-> +g‘SütName +(), '', '->getScriptName()„eturnshe script‚ame if SCRIPT_NAME‡nd ORIG_SCRIPT_NAME‚ot set it„eturnƒmpty'); + +276 + g$t +-> +dŸg +('->getPathInfo()'); + +278 + g$»que¡ + = +Ãw + +myReque¡ +( +$di¥©ch” +); + +279 + g$ÝtiÚs + = +$»que¡ +-> +g‘O±iÚs +(); + +280 + g$t +-> +is +( +$ÝtiÚs +['path_info_key'], 'PATH_INFO', 'check if default…ath_info_key is PATH_INFO'); + +282 + g$»que¡ + = +Ãw + +myReque¡ +( +$di¥©ch” +); + +283 + g$_SERVER +['PATH_INFO'] = '/test/klaus'; + +284 + g$_SERVER +['REQUEST_URI'] = '/test/klaus2'; + +285 + g$t +-> +is +( +$»que¡ +-> +g‘P©hInfo +(), '/test/klaus', '->getPathInfo()„eturnshe url…ath value'); + +287 + g$»que¡ + = +Ãw + +myReque¡ +( +$di¥©ch” +, +¬¿y +(),‡rray(),‡rray('path_info_key' => 'SPECIAL')); + +288 + g$_SERVER +['SPECIAL'] = '/special'; + +289 + g$t +-> +is +( +$»que¡ +-> +g‘P©hInfo +(), '/special', '->getPathInfo()„eturnshe url…ath value use…ath_info_key'); + +290 + g$»que¡ +-> +»£tP©hInfoA¼ay +(); + +292 + g$»que¡ +-> +»£tP©hInfoA¼ay +(); + +293 + g$»que¡ + = +Ãw + +myReque¡ +( +$di¥©ch” +); + +294 + g$_SERVER +['SCRIPT_NAME'] = '/frontend_test.php'; + +295 + g$_SERVER +['REQUEST_URI'] = '/frontend_test.php/test/klaus2'; + +296 + g$_SERVER +['QUERY_STRING'] = ''; + +297 + g$t +-> +is +( +$»que¡ +-> +g‘P©hInfo +(), '/test/klaus2', '->getPathInfo()„eturnshe url…ath value if it‚otƒxists use default REQUEST_URI'); + +299 + g$»que¡ + = +Ãw + +myReque¡ +( +$di¥©ch” +); + +300 + g$_SERVER +['QUERY_STRING'] = 'test'; + +301 + g$_SERVER +['REQUEST_URI'] = '/frontend_test.php/test/klaus2?test'; + +302 + g$t +-> +is +( +$»que¡ +-> +g‘P©hInfo +(), '/test/klaus2', '->getPathInfo()„eturnshe url…ath value if it‚otƒxists use default REQUEST_URI without query'); + +304 + g$»que¡ +-> +»£tP©hInfoA¼ay +(); + +305 + g$»que¡ + = +Ãw + +myReque¡ +( +$di¥©ch” +); + +306 + g$t +-> +is +( +$»que¡ +-> +g‘P©hInfo +(), '/', '->getPathInfo()„eturnshe url…ath value if it‚otƒxists use default /'); + +309 + g$t +-> +dŸg +('getPathInfo'); + +311 + g$»que¡ + = +Ãw + +myReque¡ +( +$di¥©ch” +); + +312 + g$t +-> +is +( +$»que¡ +-> +g‘Reque¡P¬am‘”s +(), +¬¿y +(), '->getRequestParameters()„eturnshe„equest…arameters default‡rray'); + +314 + g$»que¡ +-> +addReque¡P¬am‘”s +( +¬¿y +('test' => 'test')); + +315 + g$t +-> +is +( +$»que¡ +-> +g‘Reque¡P¬am‘”s +(), +¬¿y +('test' => 'test'), '->getRequestParameters()„eturnshe„equest…arameters'); + +317 + g$»que¡ +-> +addReque¡P¬am‘”s +( +¬¿y +('test' => 'test')); + +318 + g$t +-> +is +( +$»que¡ +-> +g‘Reque¡P¬am‘”s +(), +¬¿y +('test' => 'test'), '->getRequestParameters()„eturnshe„equest…arameters‡llreadyƒxists'); + +320 + g$»que¡ +-> +addReque¡P¬am‘”s +( +¬¿y +('_sf_ignore_cache' => 1, 'test2' => 'test2')); + +321 + g$t +-> +is +( +$»que¡ +-> +g‘Reque¡P¬am‘”s +(), +¬¿y +('test' => 'test', 'test2' => 'test2', '_sf_ignore_cache' => 1), '->getRequestParameters()„eturnshe„equest…arameters check fixParameters call for special _sf_…arams'); + +322 + g$t +-> +is +( +$»que¡ +-> +g‘A‰ribu‹ +('sf_ignore_cache'), 1, '->getAttribute() check special…aram is set‡s‡ttribute'); + +325 + g$t +-> +dŸg +('->checkCSRFProtection()'); + +327 þas  + cBa£FÜm + +ex‹nds + + msfFÜm + + +329 +public + +funùiÚ + + $g‘CSRFTok’ +( +$£ü‘ + = +nuÎ +) + +333 + } +} + +335 + gsfFÜm +:: +’abËCSRFPrÙeùiÚ +(); + +337 + g$»que¡ + = +Ãw + +myReque¡ +( +$di¥©ch” +); + +338 + gŒy + + +340 + g$»que¡ +-> +checkCSRFPrÙeùiÚ +(); + +341 + g$t +-> +çž +('->checkCSRFProtection()hrows‡ validatorƒrror if CSRF…rotection fails'); + +343 + $ÿtch + ( +sfV®id©ÜE¼ÜSchema + +$”rÜ +) + +345 +$t +-> + `·ss +('->checkCSRFProtection()hrows‡ validatorƒrror if CSRF…rotection fails'); + +346 + } +} + +348 + g$»que¡ + = +Ãw + +myReque¡ +( +$di¥©ch” +); + +349 + g$»que¡ +-> +£tP¬am‘” +('_csrf_token', '==TOKEN=='); + +350 + gŒy + + +352 + g$»que¡ +-> +checkCSRFPrÙeùiÚ +(); + +353 + g$t +-> +·ss +('->checkCSRFProtection() checksoken from BaseForm'); + +355 + $ÿtch + ( +sfV®id©ÜE¼ÜSchema + +$”rÜ +) + +357 +$t +-> + `çž +('->checkCSRFProtection() checksoken from BaseForm'); + +358 + } +} + +361 + g$t +-> +dŸg +('->getContentType()'); + +363 + g$»que¡ + = +Ãw + +myReque¡ +( +$di¥©ch” +); + +364 + g$_SERVER +['CONTENT_TYPE'] = 'text/html'; + +365 + g$t +-> +is +( +$»que¡ +-> +g‘CڋÁTy³ +(), 'text/html', '->getContentType()„eturnshe contentype'); + +366 + g$»que¡ + = +Ãw + +myReque¡ +( +$di¥©ch” +); + +367 + g$_SERVER +['CONTENT_TYPE'] = 'text/html; charset=UTF-8'; + +368 + g$t +-> +is +( +$»que¡ +-> +g‘CڋÁTy³ +(), 'text/html', '->getContentType() stripshe charset information by default'); + +369 + g$t +-> +is +( +$»que¡ +-> +g‘CڋÁTy³ +( +çl£ +), 'text/html; charset=UTF-8', '->getContentType() does‚ot striphe charset information by defaultif you…ass false‡she first‡rgument'); + +372 + g$t +-> +dŸg +('->getHost()'); + +374 + g$»que¡ + = +Ãw + +myReque¡ +( +$di¥©ch” +); + +375 + g$_SERVER +['HTTP_X_FORWARDED_HOST'] = 'example1.com,ƒxample2.com,ƒxample3.com'; + +376 + g$t +-> +is +( +$»que¡ +-> +g‘Ho¡ +(), 'example3.com', '->getHost()„eturnshe†ast forwarded host'); + +377 +un£t +( +$_SERVER +['HTTP_X_FORWARDED_HOST']); + + @lib/vendor/symfony/test/unit/response/sfResponseTest.php + +1 +dŸg +('->initialize()'); + +29 + g$»¥Ú£ + = +Ãw + +myRe¥Ú£ +( +$di¥©ch” +, +¬¿y +('foo' => 'bar')); + +30 + g$ÝtiÚs + = +$»¥Ú£ +-> +g‘O±iÚs +(); + +31 + g$t +-> +is +( +$ÝtiÚs +['foo'], 'bar', '->initialize()akes‡n‡rray of options‡s its second‡rgument'); + +32 + g$t +-> +is +( +$ÝtiÚs +['loggšg'], +çl£ +, '->getOptions()„eturns options for„esponse instance'); + +35 + g$t +-> +dŸg +('->getContent() ->setContent()'); + +36 + g$t +-> +is +( +$»¥Ú£ +-> +g‘CڋÁ +(), +nuÎ +, '->getContent()„eturnshe current„esponse content which is‚ull by default'); + +37 + g$»¥Ú£ +-> +£tCڋÁ +('test'); + +38 + g$t +-> +is +( +$»¥Ú£ +-> +g‘CڋÁ +(), 'test', '->setContent() setshe„esponse content'); + +41 + g$t +-> +dŸg +('->sendContent()'); + +42 +ob_¡¬t +(); + +43 + g$»¥Ú£ +-> +£ndCڋÁ +(); + +44 + g$cڋÁ + = +ob_g‘_þ—n +(); + +45 + g$t +-> +is +( +$cڋÁ +, 'test', '->sendContent() outputhe current„esponse content'); + +48 + g$t +-> +dŸg +('->serialize() ->unserialize()'); + +49 + g$t +-> +ok +( +Ãw + + $myRe¥Ú£ +( +$di¥©ch” +è +š¡ªûof + +S”ŸlizabË +, 'sfResponse implementshe Serializable interface'); + +52 + `»quœe_Úû +( +$_‹¡_dœ +.'/unit/sfEventDispatcherTest.class.php'); + +53 +$di¥©ch”Te¡ + = +Ãw + + `sfEv’tDi¥©ch”Te¡ +( +$t +); + +54 +$di¥©ch”Te¡ +-> + `ÏunchTe¡s +( +$di¥©ch” +, +$»¥Ú£ +, 'response'); + + @lib/vendor/symfony/test/unit/response/sfWebResponseTest.php + +1 +¡©usText +; + +22 +public + +funùiÚ + + $nÜm®izeH—d”Name +( +$Çme +) + +24  +·»Á +:: + `nÜm®izeH—d”Name +( +$Çme +); + +25 + } +} + +28 + g$di¥©ch” + = +Ãw + +sfEv’tDi¥©ch” +(); + +31 + g$t +-> +dŸg +('->initialize()'); + +32 + g$»¥Ú£ + = +Ãw + +myWebRe¥Ú£ +( +$di¥©ch” +, +¬¿y +('charset' => 'ISO-8859-1')); + +33 + g$t +-> +is +( +$»¥Ú£ +-> +g‘CڋÁTy³ +(), 'text/html; charset=ISO-8859-1', '->initialize()akes‡ "charset" option'); + +34 + g$»¥Ú£ + = +Ãw + +myWebRe¥Ú£ +( +$di¥©ch” +, +¬¿y +('content_type' => 'text/plain')); + +35 + g$t +-> +is +( +$»¥Ú£ +-> +g‘CڋÁTy³ +(), 'text/plain; charset=utf-8', '->initialize()akes‡ "content_type" option'); + +37 + g$»¥Ú£ + = +Ãw + +myWebRe¥Ú£ +( +$di¥©ch” +); + +40 + g$t +-> +dŸg +('->getStatusCode() ->setStatusCode()'); + +41 + g$t +-> +is +( +$»¥Ú£ +-> +g‘StusCode +(), 200, '->getStatusCode()„eturns 200 by default'); + +42 + g$»¥Ú£ +-> +£tStusCode +(404); + +43 + g$t +-> +is +( +$»¥Ú£ +-> +g‘StusCode +(), 404, '->setStatusCode() sets status code'); + +44 + g$t +-> +is +( +$»¥Ú£ +-> +g‘StusText +(), 'Not Found', '->setStatusCode()‡lso setshe statusext‡ssociated withhe status code if‚o message is given'); + +45 + g$»¥Ú£ +-> +£tStusCode +(404, 'myext'); + +46 + g$t +-> +is +( +$»¥Ú£ +-> +g‘StusText +(), 'myext', '->setStatusCode()akes‡ message‡s its second‡rgument‡she statusext'); + +47 + g$»¥Ú£ +-> +£tStusCode +(404, ''); + +48 + g$t +-> +is +( +$»¥Ú£ +-> +g‘StusText +(), '', '->setStatusCode()akes‡ message‡s its second‡rgument‡she statusext'); + +51 + g$t +-> +dŸg +('->hasHttpHeader()'); + +52 + g$t +-> +is +( +$»¥Ú£ +-> +hasH‰pH—d” +('nÚ-exi¡ªt'), +çl£ +, '->hasHttpHeader()„eturns false if http header is‚ot set'); + +53 + g$»¥Ú£ +-> +£tH‰pH—d” +('My-Header', 'foo'); + +54 + g$t +-> +is +( +$»¥Ú£ +-> +hasH‰pH—d” +('My-H—d”'), +Œue +, '->hasHttpHeader()„eturnsrue if http header is‚ot set'); + +55 + g$t +-> +is +( +$»¥Ú£ +-> +hasH‰pH—d” +('my-h—d”'), +Œue +, '->hasHttpHeader()‚ormalizes http header‚ame'); + +58 + g$t +-> +dŸg +('->getHttpHeader()'); + +59 + g$»¥Ú£ +-> +£tH‰pH—d” +('My-Header', 'foo'); + +60 + g$t +-> +is +( +$»¥Ú£ +-> +g‘H‰pH—d” +('My-Header'), 'foo', '->getHttpHeader()„eturnshe current http header values'); + +61 + g$t +-> +is +( +$»¥Ú£ +-> +g‘H‰pH—d” +('my-header'), 'foo', '->getHttpHeader()‚ormalizes http header‚ame'); + +64 + g$t +-> +dŸg +('->setHttpHeader()'); + +65 + g$»¥Ú£ +-> +£tH‰pH—d” +('My-Header', 'foo'); + +66 + g$»¥Ú£ +-> +£tH‰pH—d” +('My-H—d”', 'b¬', +çl£ +); + +67 + g$»¥Ú£ +-> +£tH‰pH—d” +('my-h—d”', 'foob¬', +çl£ +); + +68 + g$t +-> +is +( +$»¥Ú£ +-> +g‘H‰pH—d” +('My-Header'), 'foo, bar, foobar', '->setHttpHeader()akes‡„eplace‡rgument‡s itshird‡rgument'); + +69 + g$»¥Ú£ +-> +£tH‰pH—d” +('My-Oth”-H—d”', 'foo', +çl£ +); + +70 + g$t +-> +is +( +$»¥Ú£ +-> +g‘H‰pH—d” +('My-Other-Header'), 'foo', '->setHttpHeader()akes‡„eplace‡rgument‡s itshird‡rgument'); + +72 + g$»¥Ú£ +-> +£tH‰pH—d” +('my-header', 'foo'); + +73 + g$t +-> +is +( +$»¥Ú£ +-> +g‘H‰pH—d” +('My-Header'), 'foo', '->setHttpHeader()‚ormalizes http header‚ame'); + +76 + g$t +-> +dŸg +('->clearHttpHeaders()'); + +77 + g$»¥Ú£ +-> +£tH‰pH—d” +('my-header', 'foo'); + +78 + g$»¥Ú£ +-> +þ—rH‰pH—d”s +(); + +79 + g$t +-> +is +( +$»¥Ú£ +-> +g‘H‰pH—d” +('My-Header'), '', '->clearHttpHeaders() clears‡ll current http headers'); + +82 + g$t +-> +dŸg +('->getHttpHeaders()'); + +83 + g$»¥Ú£ +-> +þ—rH‰pH—d”s +(); + +84 + g$»¥Ú£ +-> +£tH‰pH—d” +('my-header', 'foo'); + +85 + g$»¥Ú£ +-> +£tH‰pH—d” +('my-h—d”', 'b¬', +çl£ +); + +86 + g$»¥Ú£ +-> +£tH‰pH—d” +('another', 'foo'); + +87 + g$t +-> +is +( +$»¥Ú£ +-> +g‘H‰pH—d”s +(), +¬¿y +('My-Header' => 'foo, bar', 'Another' => 'foo'), '->getHttpHeaders()„eturn‡ll current„esponse http headers'); + +90 + g$t +-> +dŸg +('->normalizeHeaderName()'); + +91 +fܗch + ( +¬¿y +( + +92 +¬¿y +('header', 'Header'), + +93 +¬¿y +('HEADER', 'Header'), + +94 +¬¿y +('hEaDeR', 'Header'), + +95 +¬¿y +('my-header', 'My-Header'), + +96 +¬¿y +('my_header', 'My-Header'), + +97 +¬¿y +('MY_HEADER', 'My-Header'), + +98 +¬¿y +('my-header_is_very-long', 'My-Header-Is-Very-Long'), + +99 +¬¿y +('Content-Type', 'Content-Type'), + +100 +¬¿y +('content-type', 'Content-Type'), + +101 è +as + +$‹¡ +) + +103 + g$t +-> +is +( +$»¥Ú£ +-> +nÜm®izeH—d”Name +( +$‹¡ +[0]), $test[1], '->normalizeHeaderName()‚ormalizes http header‚ame'); + +107 + g$t +-> +dŸg +('->getContentType() ->setContentType() ->getCharset()'); + +109 + g$»¥Ú£ + = +Ãw + +myWebRe¥Ú£ +( +$di¥©ch” +); + +110 + g$t +-> +is +( +$»¥Ú£ +-> +g‘CڋÁTy³ +(), 'text/html; charset=utf-8', '->getContentType()„eturns‡ sensible default value'); + +111 + g$t +-> +is +( +$»¥Ú£ +-> +g‘Ch¬£t +(), 'utf-8', '->getCharset()„eturnshe current charset ofhe„esponse'); + +113 + g$»¥Ú£ +-> +£tCڋÁTy³ +('text/xml'); + +114 + g$t +-> +is +( +$»¥Ú£ +-> +g‘CڋÁTy³ +(), 'text/xml; charset=utf-8', '->setContentType()‡dds‡ charset if‚one is given'); + +116 + g$»¥Ú£ +-> +£tCڋÁTy³ +('application/vnd.mozilla.xul+xml'); + +117 + g$t +-> +is +( +$»¥Ú£ +-> +g‘CڋÁTy³ +(), 'application/vnd.mozilla.xul+xml; charset=utf-8', '->setContentType()‡dds‡ charset if‚one is given'); + +118 + g$t +-> +is +( +$»¥Ú£ +-> +g‘Ch¬£t +(), 'utf-8', '->getCharset()„eturnshe current charset ofhe„esponse'); + +120 + g$»¥Ú£ +-> +£tCڋÁTy³ +('image/jpg'); + +121 + g$t +-> +is +( +$»¥Ú£ +-> +g‘CڋÁTy³ +(), 'image/jpg', '->setContentType() does‚ot‡dd‡ charset ifhe content-type is‚otext/*'); + +123 + g$»¥Ú£ +-> +£tCڋÁTy³ +('text/xml; charset=ISO-8859-1'); + +124 + g$t +-> +is +( +$»¥Ú£ +-> +g‘CڋÁTy³ +(), 'text/xml; charset=ISO-8859-1', '->setContentType() does‚othing if‡ charset is given'); + +125 + g$t +-> +is +( +$»¥Ú£ +-> +g‘Ch¬£t +(), 'ISO-8859-1', '->getCharset()„eturnshe current charset ofhe„esponse'); + +127 + g$»¥Ú£ +-> +£tCڋÁTy³ +('text/xml;charset = ISO-8859-1'); + +128 + g$t +-> +is +( +$»¥Ú£ +-> +g‘CڋÁTy³ +(), 'text/xml;charset = ISO-8859-1', '->setContentType() does‚othing if‡ charset is given'); + +129 + g$t +-> +is +( +$»¥Ú£ +-> +g‘Ch¬£t +(), 'ISO-8859-1', '->getCharset()„eturnshe current charset ofhe„esponse'); + +131 + g$t +-> +is +( +$»¥Ú£ +-> +g‘CڋÁTy³ +(), $»¥Ú£-> +g‘H‰pH—d” +('content-type'), '->getContentType() is‡n‡lias for ->getHttpHeader(\'content-type\')'); + +133 + g$»¥Ú£ +-> +£tCڋÁTy³ +('text/xml'); + +134 + g$»¥Ú£ +-> +£tCڋÁTy³ +('text/html'); + +135 + g$t +-> +is +( +couÁ +( +$»¥Ú£ +-> +g‘H‰pH—d” +('content-type')), 1, '->setContentType() overrides…revious contentype if„eplace isrue'); + +138 + g$t +-> +dŸg +('->getTitle() ->setTitle()'); + +139 + g$t +-> +is +( +$»¥Ú£ +-> +g‘T™Ë +(), '', '->getTitle()„eturns‡nƒmpty string by default'); + +140 + g$»¥Ú£ +-> +£tT™Ë +('myitle'); + +141 + g$t +-> +is +( +$»¥Ú£ +-> +g‘T™Ë +(), 'myitle', '->setTitle() setsheitle'); + +142 + g$»¥Ú£ +-> +£tT™Ë +('fööbäär'); + +143 + g$t +-> +is +( +$»¥Ú£ +-> +g‘T™Ë +(), 'fööbäär', '->setTitle() will†eaveƒncoding intact'); + +146 + g$t +-> +dŸg +('->addHttpMeta()'); + +147 + g$»¥Ú£ +-> +þ—rH‰pH—d”s +(); + +148 + g$»¥Ú£ +-> +addH‰pM‘a +('My-Header', 'foo'); + +149 + g$»¥Ú£ +-> +addH‰pM‘a +('My-H—d”', 'b¬', +çl£ +); + +150 + g$»¥Ú£ +-> +addH‰pM‘a +('my-h—d”', 'foob¬', +çl£ +); + +151 + g$m‘as + = +$»¥Ú£ +-> +g‘H‰pM‘as +(); + +152 + g$t +-> +is +( +$m‘as +['My-Header'], 'foo, bar, foobar', '->addHttpMeta()akes‡„eplace‡rgument‡s itshird‡rgument'); + +153 + g$t +-> +is +( +$»¥Ú£ +-> +g‘H‰pH—d” +('My-Header'), 'foo, bar, foobar', '->addHttpMeta()‡lso setshe corresponding http header'); + +154 + g$»¥Ú£ +-> +addH‰pM‘a +('My-Oth”-H—d”', 'foo', +çl£ +); + +155 + g$m‘as + = +$»¥Ú£ +-> +g‘H‰pM‘as +(); + +156 + g$t +-> +is +( +$m‘as +['My-Other-Header'], 'foo', '->addHttpMeta()akes‡„eplace‡rgument‡s itshird‡rgument'); + +157 + g$»¥Ú£ +-> +addH‰pM‘a +('my-header', 'foo'); + +158 + g$m‘as + = +$»¥Ú£ +-> +g‘H‰pM‘as +(); + +159 + g$t +-> +is +( +$m‘as +['My-Header'], 'foo', '->addHttpMeta()‚ormalizes http header‚ame'); + +162 + g$t +-> +dŸg +('->addVaryHttpHeader()'); + +163 + g$»¥Ú£ +-> +þ—rH‰pH—d”s +(); + +164 + g$»¥Ú£ +-> +addV¬yH‰pH—d” +('Cookie'); + +165 + g$t +-> +is +( +$»¥Ú£ +-> +g‘H‰pH—d” +('Vary'), 'Cookie', '->addVaryHttpHeader()‡dds‡‚ew Vary header'); + +166 + g$»¥Ú£ +-> +addV¬yH‰pH—d” +('Cookie'); + +167 + g$t +-> +is +( +$»¥Ú£ +-> +g‘H‰pH—d” +('Vary'), 'Cookie', '->addVaryHttpHeader() does‚ot‡ddhe same headerwice'); + +168 + g$»¥Ú£ +-> +addV¬yH‰pH—d” +('Accept-Language'); + +169 + g$t +-> +is +( +$»¥Ú£ +-> +g‘H‰pH—d” +('Vary'), 'Cookie, Accept-Language', '->addVaryHttpHeader()„espects ordering'); + +172 + g$t +-> +dŸg +('->addCacheControlHttpHeader()'); + +173 + g$»¥Ú£ +-> +þ—rH‰pH—d”s +(); + +174 + g$»¥Ú£ +-> +addCacheCڌÞH‰pH—d” +('max-age', 0); + +175 + g$t +-> +is +( +$»¥Ú£ +-> +g‘H‰pH—d” +('Cache-Control'), 'max-age=0', '->addCacheControlHttpHeader()‡dds‡‚ew Cache-Control header'); + +176 + g$»¥Ú£ +-> +addCacheCڌÞH‰pH—d” +('max-age', 12); + +177 + g$t +-> +is +( +$»¥Ú£ +-> +g‘H‰pH—d” +('Cache-Control'), 'max-age=12', '->addCacheControlHttpHeader() does‚ot‡ddhe same headerwice'); + +178 + g$»¥Ú£ +-> +addCacheCڌÞH‰pH—d” +('no-cache'); + +179 + g$t +-> +is +( +$»¥Ú£ +-> +g‘H‰pH—d” +('Cache-Control'), 'max-age=12,‚o-cache', '->addCacheControlHttpHeader()„espects ordering'); + +182 + g$t +-> +dŸg +('->copyProperties()'); + +183 + g$»¥Ú£1 + = +Ãw + +myWebRe¥Ú£ +( +$di¥©ch” +); + +184 + g$»¥Ú£2 + = +Ãw + +myWebRe¥Ú£ +( +$di¥©ch” +); + +186 + g$»¥Ú£1 +-> +£tH‰pH—d” +('symfony', 'foo'); + +187 + g$»¥Ú£1 +-> +£tCڋÁTy³ +('text/plain'); + +188 + g$»¥Ú£1 +-> +£tT™Ë +('Myitle'); + +190 + g$»¥Ú£2 +-> +cÝyPrݔt›s +( +$»¥Ú£1 +); + +191 + g$t +-> +is +( +$»¥Ú£1 +-> +g‘H‰pH—d” +('symfÚy'), +$»¥Ú£2 +->getHttpHeader('symfony'), '->copyProperties() merges http headers'); + +192 + g$t +-> +is +( +$»¥Ú£1 +-> +g‘CڋÁTy³ +(), +$»¥Ú£2 +->getContentType(), '->copyProperties() merges contentype'); + +193 + g$t +-> +is +( +$»¥Ú£1 +-> +g‘T™Ë +(), +$»¥Ú£2 +->getTitle(), '->copyProperties() mergesitles'); + +196 + g$t +-> +dŸg +('->addStylesheet()'); + +197 + g$»¥Ú£ + = +Ãw + +myWebRe¥Ú£ +( +$di¥©ch” +); + +198 + g$»¥Ú£ +-> +addStyËsh“t +('test'); + +199 + g$t +-> +ok +( +¬¿y_key_exi¡s +('‹¡', +$»¥Ú£ +-> +g‘StyËsh“ts +()), '->addStylesheet()‡dds‡‚ew stylesheet forhe„esponse'); + +200 + g$»¥Ú£ +-> +addStyËsh“t +('foo', ''); + +201 + g$t +-> +ok +( +¬¿y_key_exi¡s +('foo', +$»¥Ú£ +-> +g‘StyËsh“ts +()), '->addStylesheet()‡dds‡‚ew stylesheet forhe„esponse'); + +202 + g$»¥Ú£ +-> +addStyËsh“t +('first', 'first'); + +203 + g$t +-> +ok +( +¬¿y_key_exi¡s +('fœ¡', +$»¥Ú£ +-> +g‘StyËsh“ts +('first')), '->addStylesheet()akes‡…osition‡s its second‡rgument'); + +204 + g$»¥Ú£ +-> +addStyËsh“t +('last', 'last'); + +205 + g$t +-> +ok +( +¬¿y_key_exi¡s +('Ï¡', +$»¥Ú£ +-> +g‘StyËsh“ts +('last')), '->addStylesheet()akes‡…osition‡s its second‡rgument'); + +206 + g$»¥Ú£ +-> +addStyËsh“t +('b¬', '', +¬¿y +('media' => 'print')); + +207 + g$¡yËsh“ts + = +$»¥Ú£ +-> +g‘StyËsh“ts +(); + +208 + g$t +-> +is +( +$¡yËsh“ts +['b¬'], +¬¿y +('media' => 'print'), '->addStylesheet()akes‡n‡rray of…arameters‡s itshird‡rgument'); + +210 + gŒy + + +212 + g$»¥Ú£ +-> +addStyËsh“t +('last', 'none'); + +213 + g$t +-> +çž +('->addStylesheet()hrows‡n InvalidArgumentException ifhe…osition is‚ot first,heƒmpty string, or†ast'); + +215 + $ÿtch + ( +Inv®idArgum’tExû±iÚ + +$e +) + +217 +$t +-> + `·ss +('->addStylesheet()hrows‡n InvalidArgumentException ifhe…osition is‚ot first,heƒmpty string, or†ast'); + +218 + } +} + +221 + g$t +-> +dŸg +('->getStylesheets()'); + +222 + g$t +-> +is +( +¬¿y_keys +( +$»¥Ú£ +-> +g‘StyËsh“ts +()), +¬¿y +('first', 'test', 'foo', 'bar', 'last'), '->getStylesheets()„eturns‡ll current„egistered stylesheets ordered by…osition'); + +223 + g$t +-> +is +( +$»¥Ú£ +-> +g‘StyËsh“ts +(''), +¬¿y +('test' =>‡rray(), 'foo' =>‡rray(), 'bar' =>‡rray('media' => 'print')), '->getStylesheets()akes‡…osition‡s its first‡rgument'); + +224 + g$t +-> +is +( +$»¥Ú£ +-> +g‘StyËsh“ts +('fœ¡'), +¬¿y +('first' =>‡rray()), '->getStylesheets()akes‡…osition‡s its first‡rgument'); + +225 + g$t +-> +is +( +$»¥Ú£ +-> +g‘StyËsh“ts +('Ï¡'), +¬¿y +('last' =>‡rray()), '->getStylesheets()akes‡…osition‡s its first‡rgument'); + +227 + g$t +-> +dŸg +('->removeStylesheet()'); + +228 + g$»¥Ú£ +-> +»moveStyËsh“t +('foo'); + +229 + g$t +-> +is +( +¬¿y_keys +( +$»¥Ú£ +-> +g‘StyËsh“ts +()), +¬¿y +('first', 'test', 'bar', 'last'), '->getStylesheets()„emoves‡ stylesheet fromhe„esponse'); + +231 + g$»¥Ú£ +-> +»moveStyËsh“t +('first'); + +232 + g$t +-> +is +( +¬¿y_keys +( +$»¥Ú£ +-> +g‘StyËsh“ts +()), +¬¿y +('test', 'bar', 'last'), '->getStylesheets()„emoves‡ stylesheet fromhe„esponse'); + +235 + g$t +-> +dŸg +('->addJavascript()'); + +236 + g$»¥Ú£ + = +Ãw + +myWebRe¥Ú£ +( +$di¥©ch” +); + +237 + g$»¥Ú£ +-> +addJavasüt +('test'); + +238 + g$t +-> +ok +( +¬¿y_key_exi¡s +('‹¡', +$»¥Ú£ +-> +g‘Javasüts +()), '->addJavascript()‡dds‡‚ew javascript forhe„esponse'); + +239 + g$»¥Ú£ +-> +addJavasüt +('foo', '', +¬¿y +('¿w_Çme' => +Œue +)); + +240 + g$t +-> +ok +( +¬¿y_key_exi¡s +('foo', +$»¥Ú£ +-> +g‘Javasüts +()), '->addJavascript()‡dds‡‚ew javascript forhe„esponse'); + +241 + g$»¥Ú£ +-> +addJavasüt +('first_js', 'first'); + +242 + g$t +-> +ok +( +¬¿y_key_exi¡s +('fœ¡_js', +$»¥Ú£ +-> +g‘Javasüts +('first')), '->addJavascript()akes‡…osition‡s its second‡rgument'); + +243 + g$»¥Ú£ +-> +addJavasüt +('last_js', 'last'); + +244 + g$t +-> +ok +( +¬¿y_key_exi¡s +('Ï¡_js', +$»¥Ú£ +-> +g‘Javasüts +('last')), '->addJavascript()akes‡…osition‡s its second‡rgument'); + +246 + gŒy + + +248 + g$»¥Ú£ +-> +addJavasüt +('last_js', 'none'); + +249 + g$t +-> +çž +('->addJavascript()hrows‡n InvalidArgumentException ifhe…osition is‚ot first,heƒmpty string, or†ast'); + +251 + $ÿtch + ( +Inv®idArgum’tExû±iÚ + +$e +) + +253 +$t +-> + `·ss +('->addJavascript()hrows‡n InvalidArgumentException ifhe…osition is‚ot first,heƒmpty string, or†ast'); + +254 + } +} + +257 + g$t +-> +dŸg +('->getJavascripts()'); + +258 + g$t +-> +is +( +¬¿y_keys +( +$»¥Ú£ +-> +g‘Javasüts +()), +¬¿y +('first_js', 'test', 'foo', 'last_js'), '->getJavascripts()„eturns‡ll current„egistered javascripts ordered by…osition'); + +259 + g$t +-> +is +( +$»¥Ú£ +-> +g‘Javasüts +(''), +¬¿y +('‹¡' =>‡¼ay(), 'foo' =>‡¼ay('¿w_Çme' => +Œue +)), '->getJavascripts()akes‡…osition‡s its first‡rgument'); + +260 + g$t +-> +is +( +$»¥Ú£ +-> +g‘Javasüts +('fœ¡'), +¬¿y +('first_js' =>‡rray()), '->getJavascripts()akes‡…osition‡s its first‡rgument'); + +261 + g$t +-> +is +( +$»¥Ú£ +-> +g‘Javasüts +('Ï¡'), +¬¿y +('last_js' =>‡rray()), '->getJavascripts()akes‡…osition‡s its first‡rgument'); + +263 + g$t +-> +dŸg +('->removeJavascript()'); + +264 + g$»¥Ú£ +-> +»moveJavasüt +('test'); + +265 + g$t +-> +is +( +¬¿y_keys +( +$»¥Ú£ +-> +g‘Javasüts +()), +¬¿y +('first_js', 'foo', 'last_js'), '->removeJavascripts()„emoves‡ javascript file'); + +267 + g$»¥Ú£ +-> +»moveJavasüt +('first_js'); + +268 + g$t +-> +is +( +¬¿y_keys +( +$»¥Ú£ +-> +g‘Javasüts +()), +¬¿y +('foo', 'last_js'), '->removeJavascripts()„emoves‡ javascript file'); + +271 + g$t +-> +dŸg +('->setCookie() ->getCookies()'); + +272 + g$»¥Ú£ +-> +£tCook› +('foo', 'bar'); + +273 + g$t +-> +is +( +$»¥Ú£ +-> +g‘Cook›s +(), +¬¿y +('foo' =>‡¼ay('Çme' => 'foo', 'v®ue' => 'b¬', 'expœe' => +nuÎ +, '·th' => '/', 'domaš' => '', '£cu»' => +çl£ +, 'httpOnly' => false)), '->setCookie()‡dds‡ cookie forhe„esponse'); + +276 + g$t +-> +dŸg +('->setHeaderOnly() ->isHeaderOnly()'); + +277 + g$»¥Ú£ + = +Ãw + +myWebRe¥Ú£ +( +$di¥©ch” +); + +278 + g$t +-> +is +( +$»¥Ú£ +-> +isH—d”OÆy +(), +çl£ +, '->isHeaderOnly()„eturns false ifhe content must be sendohe client'); + +279 + g$»¥Ú£ +-> +£tH—d”OÆy +( +Œue +); + +280 + g$t +-> +is +( +$»¥Ú£ +-> +isH—d”OÆy +(), +Œue +, '->setHeaderOnly() changeshe current value of header only'); + +283 + g$t +-> +dŸg +('->sendContent()'); + +284 + g$»¥Ú£ +-> +£tH—d”OÆy +( +Œue +); + +285 + g$»¥Ú£ +-> +£tCڋÁ +('foo'); + +286 +ob_¡¬t +(); + +287 + g$»¥Ú£ +-> +£ndCڋÁ +(); + +288 + g$t +-> +is +( +ob_g‘_þ—n +(), '', '->sendContent()„eturns‚othing if headerOnly isrue'); + +290 + g$»¥Ú£ +-> +£tH—d”OÆy +( +çl£ +); + +291 + g$»¥Ú£ +-> +£tCڋÁ +('foo'); + +292 +ob_¡¬t +(); + +293 + g$»¥Ú£ +-> +£ndCڋÁ +(); + +294 + g$t +-> +is +( +ob_g‘_þ—n +(), 'foo', '->sendContent()„eturnshe„esponse content if headerOnly is false'); + +297 + g$t +-> +dŸg +('->serialize() ->unserialize()'); + +298 + g$»¥ + = +un£rŸlize +( +£rŸlize +( +$»¥Ú£ +)); + +299 + g$»¥ +-> +š™Ÿlize +( +$di¥©ch” +); + +300 + g$t +-> +ok +( +$»¥Ú£ + =ð +$»¥ +, 'sfWebResponse implementshe Serializable interface'); + + @lib/vendor/symfony/test/unit/routing/sfObjectRouteCollectionTest.php + +1 +dŸg +('->__construct()'); + +18 + gŒy + + +20 + g$cÞËùiÚ + = +Ãw + +sfObjeùRou‹CÞËùiÚ +( +¬¿y +('name' => 'test')); + +21 + g$t +-> +çž +('->__construct()hrows‡nƒxception if‚o "model" option is…rovided'); + +23 + $ÿtch + ( +Inv®idArgum’tExû±iÚ + +$e +) + +25 +$t +-> + `·ss +('->__construct()hrows‡nƒxception if‚o "model" option is…rovided'); + +26 + } +} + +28 + g$cÞËùiÚ + = +Ãw + +sfObjeùRou‹CÞËùiÚ +( +¬¿y +('name' => 'test', 'model' => 'TestModel')); + +29 + g$ÝtiÚs + = +$cÞËùiÚ +-> +g‘O±iÚs +(); + +30 + g$t +-> +is +( +$ÝtiÚs +['column'], 'id', '->__construct() defaults "column" optiono "id"'); + +31 + g$t +-> +is_d“¶y +( +$ÝtiÚs +['»quœem’ts'], +¬¿y +('id' => '\d+'), '->__construct() defaults "requirements" for columno "\d+"'); + +33 + g$cÞËùiÚ + = +Ãw + +sfObjeùRou‹CÞËùiÚ +( +¬¿y +('name' => 'test', 'model' => 'TestModel', 'column' => 'slug', 'default_params' =>‡rray('foo' => 'bar'))); + +34 + g$ÝtiÚs + = +$cÞËùiÚ +-> +g‘O±iÚs +(); + +35 + g$t +-> +is_d“¶y +( +$ÝtiÚs +['»quœem’ts'], +¬¿y +('¦ug' => +nuÎ +), '->__construct() does‚ot set‡ default„equirement for custom columns'); + +36 + g$t +-> +is_d“¶y +( +$ÝtiÚs +['deçuÉ_·¿ms'], +¬¿y +('foo' => 'bar'), '->__construct()‡dds…assed„equest…arametersohe„elated option'); + +39 + g$t +-> +dŸg +('with_wildcard_routes'); + +41 + g$cÞËùiÚ + = +Ãw + +sfObjeùRou‹CÞËùiÚ +( +¬¿y +( + +44 'w™h_wždÿrd_rou‹s' => +Œue +, + +47 + g$rou‹s + = +$cÞËùiÚ +-> +g‘Rou‹s +(); + +48 + g$t +-> +i§_ok +( +$rou‹s +['test_object'], 'sfObjectRoute', '->generateRoutes() generates‡ wildcard object„oute when "with_wildcard_routes" isrue'); + +49 + g$t +-> +i§_ok +( +$rou‹s +['test_collection'], 'sfObjectRoute', '->generateRoutes() generates‡ wildcard collection„oute when "with_wildcard_routes" isrue'); + +51 + g$u¾ + = +$rou‹s +['‹¡_objeù']-> +g’”©e +( +¬¿y +('id' => 123, 'action' => 'export')); + +52 + g$t +-> +i§_ok +( +$rou‹s +['‹¡_objeù']-> +m©chesU¾ +( +$u¾ +, +¬¿y +('method' => 'get')), 'array', '->generateRoutes() creates‡ wildcard object„outehat matches‡ URL it generates'); + +54 + g$m©ch + = +nuÎ +; + +55 +fܗch + ( +$rou‹s + +as + +$Çme + => +$rou‹ +) + +57 ià( +$rou‹ +-> +m©chesU¾ +( +$u¾ +, +¬¿y +('method' => 'get'))) + +59 +$m©ch + = +$Çme +; + +63 + g$t +-> +is +( +$m©ch +, 'test_object', '->generateRoutes() orders„outes so URLs generated byhe wildcard object„oute‡re matched byhat„oute'); + +65 + g$u¾ + = +$rou‹s +['‹¡_cÞËùiÚ']-> +g’”©e +( +¬¿y +('action' => 'export')); + +66 + g$t +-> +i§_ok +( +$rou‹s +['‹¡_cÞËùiÚ']-> +m©chesU¾ +( +$u¾ +, +¬¿y +('method' => 'post')), 'array', '->generateRoutes() creates‡ wildcard collection„outehat matches‡ URL it generates'); + +68 + g$m©ch + = +nuÎ +; + +69 +fܗch + ( +$rou‹s + +as + +$Çme + => +$rou‹ +) + +71 ià( +$rou‹ +-> +m©chesU¾ +( +$u¾ +, +¬¿y +('method' => 'post'))) + +73 +$m©ch + = +$Çme +; + +77 + g$t +-> +is +( +$m©ch +, 'test_collection', '->generateRoutes() orders„outes so URLs generated byhe wildcard collection„oute‡re matched byhat„oute'); + +80 + g$t +-> +dŸg +('collection_actions'); + +82 + g$cÞËùiÚ + = +Ãw + +sfObjeùRou‹CÞËùiÚ +( +¬¿y +( + +85 'w™h_wždÿrd_rou‹s' => +Œue +, + +86 'cÞËùiÚ_aùiÚs' => +¬¿y +('export' =>‡rray('post')), + +87 'deçuÉ_·¿ms' => +¬¿y +('foo' => 'bar'), + +90 + g$rou‹s + = +$cÞËùiÚ +-> +g‘Rou‹s +(); + +91 + g$t +-> +i§_ok +( +$rou‹s +['test_export'], 'sfObjectRoute', '->generateRoutes() generates custom collection„outes'); + +93 + g$u¾ + = +$rou‹s +['‹¡_expÜt']-> +g’”©e +( +¬¿y +()); + +94 + g$t +-> +i§_ok +( +$rou‹s +['‹¡_expÜt']-> +m©chesU¾ +( +$u¾ +, +¬¿y +('method' => 'post')), 'array', '->generateRoutes() creates‡ collection‡ction„outehat matches‡ URL it generates'); + +96 + g$m©ch + = +nuÎ +; + +97 +fܗch + ( +$rou‹s + +as + +$Çme + => +$rou‹ +) + +99 ià( +$rou‹ +-> +m©chesU¾ +( +$u¾ +, +¬¿y +('method' => 'post'))) + +101 +$m©ch + = +$Çme +; + +105 + g$t +-> +is +( +$m©ch +, 'test_export', '->generateRoutes() orders„outes so URLs generated byhe collection‡ction„oute‡re matched byhat„oute'); + +107 + g$u¾ + = +$rou‹s +['‹¡_cÞËùiÚ']-> +g’”©e +( +¬¿y +('action' => 'export')); + +108 + g$m©ch + = +nuÎ +; + +109 +fܗch + ( +$rou‹s + +as + +$Çme + => +$rou‹ +) + +111 ià( +$rou‹ +-> +m©chesU¾ +( +$u¾ +, +¬¿y +('method' => 'post'))) + +113 +$m©ch + = +$Çme +; + +117 + g$t +-> +is +( +$m©ch +, 'test_collection', '->generateRoutes() orders„outes so URLs generated byhe wildcard collection‡nd collection‡ction„outes do‚ot conflict'); + +120 + g$t +-> +dŸg +('default_params'); + +122 +fܗch + ( +$rou‹s + +as + +$Çme + => +$rou‹ +) + +124 +$deçuÉs + = +$rou‹ +-> +g‘DeçuÉs +(); + +125 + g$t +-> +is +( +$deçuÉs +['foo'], 'b¬', +¥rštf +('->g’”©eRou‹s(èdi¥©che th"deçuÉ_·¿ms" o±iځØth"%s"„ou‹', +$Çme +)); + + @lib/vendor/symfony/test/unit/routing/sfObjectRouteTest.php + +1 + `g‘R—lV¬ŸbËs +(è +as + +$v¬ŸbË +) + +31 ià( + `m‘hod_exi¡s +( +$objeù +, +$m‘hod + = 'g‘'. +$v¬ŸbË +)) + +33 +$·¿m‘”s +[ +$v¬ŸbË +] = +$objeù +-> + `$m‘hod +(); + +37  +$·¿m‘”s +; + +39 + } +} + +42 + g$t +-> +dŸg +('->generate()'); + +43 + g$rou‹ + = +Ãw + +ObjeùRou‹ +('/:id', +¬¿y +(),‡rray(),‡rray('model' => 'Foo', 'type' => 'object')); + +44 + g$t +-> +is +( +$rou‹ +-> +g’”©e +( +¬¿y +('sf_subjeù' => +Ãw + +Foo +())), '/1', '->generate() generates‡ URL withhe given…arameters'); + + @lib/vendor/symfony/test/unit/routing/sfPatternRoutingTest.php + +1 +ÝtiÚs +['context']['host'] = 'localhost'; + +24 +public + +funùiÚ + + $·r£ +( +$u¾ +) + +26 +$·¿m‘”s + = +·»Á +:: + `·r£ +( +$u¾ +); + +27 + `un£t +( +$·¿m‘”s +['_sf_route']); + +29  +$·¿m‘”s +; + +30 + } +} + +32 +public + +funùiÚ + + $g‘Cu¼’tRou‹Name +() + +34  +$this +-> +cu¼’tRou‹Name +; + +35 + } +} + +37 +public + +funùiÚ + + $isRou‹Lßded +( +$Çme +) + +39  + `is£t +( +$this +-> +rou‹s +[ +$Çme +]è&& + `is_objeù +($this->routes[$name]); + +40 + } +} + +43 þas  + csfAlwaysAbsÞu‹Rou‹ + +ex‹nds + + msfRou‹ + + +45 +public + +funùiÚ + +g’”©e +( +$·¿ms +, +$cڋxt + = +¬¿y +(), +$absÞu‹ + = +çl£ +) + +47 +$u¾ + = +·»Á +:: +g’”©e +( +$·¿ms +, +$cڋxt +, +$absÞu‹ +); + +49  'h‰p://'. + m$cڋxt +['ho¡']. + m$u¾ +; + +53 + g$ÝtiÚs + = +¬¿y +('g’”©e_sh܋¡_u¾' => +çl£ +, 'extra_parameters_as_query_string' => false); + +55 + g$r + = +Ãw + +sfP©‹ºRoutšgTe¡ +Òew +sfEv’tDi¥©ch” +(), +nuÎ +, +$ÝtiÚs +); + +58 + g$t +-> +dŸg +('->getRoutes()'); + +59 + g$r +-> +þ—rRou‹s +(); + +60 + g$r +-> +cÚÃù +('‹¡1', +Ãw + +sfRou‹ +('/:module/:action')); + +61 + g$r +-> +cÚÃù +('‹¡2', +Ãw + +sfRou‹ +('/home')); + +62 + g$rou‹s + = +$r +-> +g‘Rou‹s +(); + +63 + g$t +-> +is +( +couÁ +( +$rou‹s +), 2, '->getRoutes()„eturns‡ll current„outes'); + +64 + g$t +-> +ok +( +is£t +( +$rou‹s +['test1']), '->getRoutes()„eturns‡ hash indexed by„oute‚ames'); + +65 + g$t +-> +ok +( +is£t +( +$rou‹s +['test2']), '->getRoutes()„eturns‡ hash indexed by„oute‚ames'); + +68 + g$t +-> +dŸg +('->setRoutes()'); + +69 + g$r +-> +þ—rRou‹s +(); + +70 + g$r +-> +cÚÃù +('‹¡1', +Ãw + +sfRou‹ +('/:module/:action')); + +71 + g$r +-> +cÚÃù +('‹¡2', +Ãw + +sfRou‹ +('/home')); + +72 + g$rou‹s + = +$r +-> +g‘Rou‹s +(); + +73 + g$r +-> +þ—rRou‹s +(); + +74 + g$r +-> +£tRou‹s +( +$rou‹s +); + +75 + g$t +-> +is +( +$r +-> +g‘Rou‹s +(), +$rou‹s +, '->setRoutes()akes‡„outes‡rray‡s its first…arameter'); + +78 + g$t +-> +dŸg +('->clearRoutes()'); + +79 + g$r +-> +þ—rRou‹s +(); + +80 + g$r +-> +cÚÃù +('‹¡1', +Ãw + +sfRou‹ +('/:module/:action')); + +81 + g$r +-> +þ—rRou‹s +(); + +82 + g$rou‹s + = +$r +-> +g‘Rou‹s +(); + +83 + g$t +-> +is +( +couÁ +( +$rou‹s +), 0, '->clearRoutes() clears‡ll current„outing„ules'); + +86 + g$t +-> +dŸg +('->hasRoutes()'); + +87 + g$r +-> +þ—rRou‹s +(); + +88 + g$t +-> +is +( +$r +-> +hasRou‹s +(), +çl£ +, '->hasRoutes()„eturns false ifhere is‚o„oute'); + +89 + g$r +-> +cÚÃù +('‹¡1', +Ãw + +sfRou‹ +('/:module/:action')); + +90 + g$t +-> +is +( +$r +-> +hasRou‹s +(), +Œue +, '->hasRoutes()„eturnsrue if some„outes‡re„egistered'); + +93 + g$t +-> +dŸg +('->connect()'); + +94 + g$r +-> +þ—rRou‹s +(); + +95 + g$r +-> +cÚÃù +('‹¡', +Ãw + +sfRou‹ +(':moduË/:aùiÚ', +¬¿y +('module' => 'default', 'action' => 'index'))); + +96 + g$r +-> +cÚÃù +('‹¡1', +Ãw + +sfRou‹ +('', +¬¿y +('module' => 'default', 'action' => 'index'))); + +98 + g$rou‹s + = +$r +-> +g‘Rou‹s +(); + +100 + g$t +-> +is +( +$rou‹s +['‹¡']-> +g‘P©‹º +(), '/:module/:action', '->connect()‡utomatically‡ddsrailing /o„oute if missing'); + +101 + g$t +-> +is +( +$rou‹s +['‹¡1']-> +g‘P©‹º +(), '/', '->connect() detectsƒmpty„outes'); + +104 + g$t +-> +dŸg +('route syntax'); + +107 + g$r +-> +þ—rRou‹s +(); + +108 + g$r +-> +cÚÃù +('‹¡1', +Ãw + +sfRou‹ +('/:moduË/:aùiÚ', +¬¿y +('module' => 'default', 'action' => 'index1'))); + +109 + g$r +-> +cÚÃù +('‹¡2', +Ãw + +sfRou‹ +('/foo/b¬', +¬¿y +('module' => 'default', 'action' => 'index2'))); + +110 + g$r +-> +cÚÃù +('‹¡3', +Ãw + +sfRou‹ +('/foo/:moduË/b¬/:aùiÚ', +¬¿y +('module' => 'default', 'action' => 'index3'))); + +111 + g$r +-> +cÚÃù +('‹¡4', +Ãw + +sfRou‹ +('/nodefault/:module/:action')); + +113 + g$·¿ms + = +¬¿y +('module' => 'default', 'action' => 'index1'); + +114 + g$u¾ + = '/default/index1'; + +115 + g$t +-> +is +( +$r +-> +·r£ +( +$u¾ +), +$·¿ms +, '->parse() /:module/:action„oute'); + +116 + g$t +-> +is +( +$r +-> +g’”©e +('', +$·¿ms +), +$u¾ +, '->generate() /:module/:action url'); + +119 + g$t +-> +dŸg +('route order'); + +120 + g$r +-> +þ—rRou‹s +(); + +121 + g$r +-> +cÚÃù +('‹¡', +Ãw + +sfRou‹ +('/‹¡/:id', +¬¿y +('module' => 'default1', 'action' => 'index1'),‡rray('id' => '\d+'))); + +122 + g$r +-> +cÚÃù +('‹¡1', +Ãw + +sfRou‹ +('/‹¡/:id', +¬¿y +('module' => 'default2', 'action' => 'index2'))); + +123 + g$·¿ms + = +¬¿y +('module' => 'default1', 'action' => 'index1', 'id' => '12'); + +124 + g$u¾ + = '/test/12'; + +125 + g$t +-> +is +( +$r +-> +·r£ +( +$u¾ +), +$·¿ms +, '->parse()akeshe first matching„oute'); + +126 + g$t +-> +is +( +$r +-> +g’”©e +('', +$·¿ms +), +$u¾ +, '->generate()akeshe first matching„oute'); + +128 + g$·¿ms + = +¬¿y +('module' => 'default2', 'action' => 'index2', 'id' => 'foo'); + +129 + g$u¾ + = '/test/foo'; + +130 + g$t +-> +is +( +$r +-> +·r£ +( +$u¾ +), +$·¿ms +, '->parse()akeshe first matching„oute'); + +131 + g$t +-> +is +( +$r +-> +g’”©e +('', +$·¿ms +), +$u¾ +, '->generate()akeshe first matching„oute'); + +133 + g$r +-> +þ—rRou‹s +(); + +134 + g$r +-> +cÚÃù +('‹¡', +Ãw + +sfRou‹ +('/:moduË/:aùiÚ/‹¡/:id/:‹¡', +¬¿y +('module' => 'default', 'action' => 'index'))); + +135 + g$r +-> +cÚÃù +('‹¡1', +Ãw + +sfRou‹ +('/:moduË/:aùiÚ/‹¡/:id', +¬¿y +('module' => 'default', 'action' => 'index', 'id' => 'foo'))); + +136 + g$·¿ms + = +¬¿y +('module' => 'default', 'action' => 'index', 'id' => 'foo'); + +137 + g$u¾ + = '/default/index/test/foo'; + +138 + g$t +-> +is +( +$r +-> +·r£ +( +$u¾ +), +$·¿ms +, '->parse()akeshe first matching„oute'); + +139 + g$t +-> +is +( +$r +-> +g’”©e +('', +$·¿ms +), +$u¾ +, '->generate()akeshe first matching„oute'); + +142 + g$t +-> +dŸg +('suffix'); + +143 + g$r +-> +þ—rRou‹s +(); + +144 + g$r + = +Ãw + +sfP©‹ºRoutšgTe¡ +Òew +sfEv’tDi¥©ch” +(), +nuÎ +, +¬¿y_m”ge +( +$ÝtiÚs +, +¬¿y +('suffix' => '.html'))); + +145 + g$r +-> +cÚÃù +('foo0', +Ãw + +sfRou‹ +('/foo0/:moduË/:aùiÚ/:·¿m0', +¬¿y +('module' => 'default', 'action' => 'index0'))); + +146 + g$u¾0 + = '/foo0/default/index0/foo0.html'; + +147 + g$r +-> +cÚÃù +('foo1', +Ãw + +sfRou‹ +('/foo1/:moduË/:aùiÚ/:·¿m1.', +¬¿y +('module' => 'default', 'action' => 'index1'))); + +148 + g$u¾1 + = '/foo1/default/index1/foo1'; + +149 + g$r +-> +cÚÃù +('foo2', +Ãw + +sfRou‹ +('/foo2/:moduË/:aùiÚ/:·¿m2/', +¬¿y +('module' => 'default', 'action' => 'index2'))); + +150 + g$u¾2 + = '/foo2/default/index2/foo2/'; + +151 + g$r +-> +cÚÃù +('foo3', +Ãw + +sfRou‹ +('/foo3/:moduË/:aùiÚ/:·¿m3.foo', +¬¿y +('module' => 'default', 'action' => 'index3'))); + +152 + g$u¾3 + = '/foo3/default/index3/foo3.foo'; + +153 + g$r +-> +cÚÃù +('foo4', +Ãw + +sfRou‹ +('/foo4/:moduË/:aùiÚ/:·¿m4.:·¿m_5', +¬¿y +('module' => 'default', 'action' => 'index4'))); + +154 + g$u¾4 + = '/foo4/default/index4/foo.bar'; + +156 + g$t +-> +is +( +$r +-> +g’”©e +('', +¬¿y +('moduË' => 'deçuÉ', 'aùiÚ' => 'šdex0', '·¿m0' => 'foo0')), +$u¾0 +, '->generate() creates URL suffixed by "sf_suffix"…arameter'); + +157 + g$t +-> +is +( +$r +-> +g’”©e +('', +¬¿y +('moduË' => 'deçuÉ', 'aùiÚ' => 'šdex1', '·¿m1' => 'foo1')), +$u¾1 +, '->generate() creates URL with‚o suffix when„outeƒnds with .'); + +158 + g$t +-> +is +( +$r +-> +g’”©e +('', +¬¿y +('moduË' => 'deçuÉ', 'aùiÚ' => 'šdex2', '·¿m2' => 'foo2')), +$u¾2 +, '->generate() creates URL with‚o suffix when„outeƒnds with /'); + +159 + g$t +-> +is +( +$r +-> +g’”©e +('', +¬¿y +('moduË' => 'deçuÉ', 'aùiÚ' => 'šdex3', '·¿m3' => 'foo3')), +$u¾3 +, '->generate() creates URL with special suffix when„outeƒnds with .suffix'); + +160 + g$t +-> +is +( +$r +-> +g’”©e +('', +¬¿y +('moduË' => 'deçuÉ', 'aùiÚ' => 'šdex4', '·¿m4' => 'foo', '·¿m_5' => 'b¬')), +$u¾4 +, '->generate() creates URL with‚o special suffix when„outeƒnds with .:suffix'); + +162 + g$t +-> +is +( +$r +-> +·r£ +( +$u¾0 +), +¬¿y +('module' => 'default', 'action' => 'index0', 'param0' => 'foo0'), '->parse() finds„oute from URL suffixed by "sf_suffix"'); + +163 + g$t +-> +is +( +$r +-> +·r£ +( +$u¾1 +), +¬¿y +('module' => 'default', 'action' => 'index1', 'param1' => 'foo1'), '->parse() finds„oute with‚o suffix when„outeƒnds with .'); + +164 + g$t +-> +is +( +$r +-> +·r£ +( +$u¾2 +), +¬¿y +('module' => 'default', 'action' => 'index2', 'param2' => 'foo2'), '->parse() finds„oute with‚o suffix when„outeƒnds with /'); + +165 + g$t +-> +is +( +$r +-> +·r£ +( +$u¾3 +), +¬¿y +('module' => 'default', 'action' => 'index3', 'param3' => 'foo3'), '->parse() finds„oute with special suffix when„outeƒnds with .suffix'); + +166 + g$t +-> +is +( +$r +-> +·r£ +( +$u¾4 +), +¬¿y +('module' => 'default', 'action' => 'index4', 'param4' => 'foo', 'param_5' => 'bar'), '->parse() finds„oute with special suffix when„outeƒnds with .:suffix'); + +168 + g$r + = +Ãw + +sfP©‹ºRoutšgTe¡ +Òew +sfEv’tDi¥©ch” +(), +nuÎ +, +$ÝtiÚs +); + +171 + g$t +-> +dŸg +('query string'); + +172 + g$r +-> +þ—rRou‹s +(); + +173 + g$r +-> +cÚÃù +('‹¡', +Ãw + +sfRou‹ +('/šdex.php/:moduË/:aùiÚ', +¬¿y +('module' => 'default', 'action' => 'index'))); + +174 + g$·¿ms + = +¬¿y +('module' => 'default', 'action' => 'index'); + +175 + g$u¾ + = '/index.php/default/index?test=1&toto=2'; + +176 + g$t +-> +is +( +$r +-> +·r£ +( +$u¾ +), +$·¿ms +, '->parse() does‚otake query string into‡ccount'); + +179 + g$t +-> +dŸg +('default values'); + +180 + g$r +-> +þ—rRou‹s +(); + +181 + g$r +-> +cÚÃù +('‹¡', +Ãw + +sfRou‹ +('/:moduË/:aùiÚ', +¬¿y +('module' => 'default', 'action' => 'index'))); + +182 + g$t +-> +is +( +$r +-> +g’”©e +('', +¬¿y +('module' => 'default')), '/default/index', + +184 + g$t +-> +is +( +$r +-> +·r£ +('/deçuÉ'), +¬¿y +('module' => 'default', 'action' => 'index'), + +187 + g$r +-> +þ—rRou‹s +(); + +188 + g$r +-> +cÚÃù +('‹¡', +Ãw + +sfRou‹ +('/:moduË/:aùiÚ/:foo', +¬¿y +('module' => 'default', 'action' => 'index', 'foo' => 'bar'))); + +189 + g$t +-> +is +( +$r +-> +g’”©e +('', +¬¿y +('module' => 'default')), '/default/index/bar', + +191 + g$t +-> +is +( +$r +-> +·r£ +('/deçuÉ'), +¬¿y +('module' => 'default', 'action' => 'index', 'foo' => 'bar'), + +194 + g$r +-> +þ—rRou‹s +(); + +195 + g$r +-> +cÚÃù +('‹¡', +Ãw + +sfRou‹ +('/:moduË/:aùiÚ', +¬¿y +('module' => 'default', 'action' => 'index'))); + +196 + g$·¿ms + = +¬¿y +('module' => 'foo', 'action' => 'bar'); + +197 + g$u¾ + = '/foo/bar'; + +198 + g$t +-> +is +( +$r +-> +g’”©e +('', +$·¿ms +), +$u¾ +, '->generate()…arameters overridehe„oute default values'); + +199 + g$t +-> +is +( +$r +-> +·r£ +( +$u¾ +), +$·¿ms +, '->parse() finds„oute with…arameters distinct fromhe default values'); + +201 + g$r +-> +þ—rRou‹s +(); + +202 + g$r +-> +cÚÃù +('‹¡', +Ãw + +sfRou‹ +('/:moduË/:aùiÚ', +¬¿y +('module' => 'default'))); + +203 + g$·¿ms + = +¬¿y +('module' => 'default', 'action' => 'index'); + +204 + g$u¾ + = '/default/index'; + +205 + g$t +-> +is +( +$r +-> +g’”©e +('', +$·¿ms +), +$u¾ +, '->generate() creates URLƒven ifhere is‚o default value'); + +206 + g$t +-> +is +( +$r +-> +·r£ +( +$u¾ +), +$·¿ms +, '->parse() finds„outeƒven when„oute has‚o default value'); + +209 + g$r +-> +þ—rRou‹s +(); + +210 + g$r +-> +cÚÃù +('‹¡', +Ãw + +sfRou‹ +('/:moduË/:aùiÚ/:‹¡/:id', +¬¿y +('module' => 'default', 'action' => 'index', 'id' => 'toto'))); + +211 + g$·¿ms + = +¬¿y +('module' => 'default', 'action' => 'index', 'test' => 'foo', 'id' => 'bar'); + +212 + g$u¾ + = '/default/index/foo/bar'; + +213 + g$t +-> +is +( +$r +-> +g’”©e +('', +$·¿ms +), +$u¾ +, '->generate()„outes have default…arameters valuehat can be overriden'); + +214 + g$t +-> +is +( +$r +-> +·r£ +( +$u¾ +), +$·¿ms +, '->parse()„outes have default…arameters valuehat can be overriden'); + +215 + g$·¿ms + = +¬¿y +('module' => 'default', 'action' => 'index', 'test' => 'foo', 'id' => 'toto'); + +216 + g$u¾ + = '/default/index/foo'; + +217 + g$t +-> +i¢t +( +$r +-> +g’”©e +('', +$·¿ms +), +$u¾ +, '->generate() does‚ot„emovehe†ast…arameter ifhe…arameter is default value'); + +218 + g$t +-> +is +( +$r +-> +·r£ +( +$u¾ +), +$·¿ms +, '->parse()„emoveshe†ast…arameter ifhe…arameter is default value'); + +220 + g$r +-> +þ—rRou‹s +(); + +221 + g$r +-> +cÚÃù +('‹¡', +Ãw + +sfRou‹ +('/:moduË/:aùiÚ/:‹¡/:id', +¬¿y +('module' => 'default', 'action' => 'index', 'test' => 'foo', 'id' => 'bar'))); + +222 + g$·¿ms + = +¬¿y +('module' => 'default', 'action' => 'index', 'test' => 'foo', 'id' => 'bar'); + +223 + g$u¾ + = '/default/index'; + +224 + g$t +-> +i¢t +( +$r +-> +g’”©e +('', +$·¿ms +), +$u¾ +, '->generate() does‚ot„emove†ast…arameters ifhey have default values'); + +225 + g$t +-> +is +( +$r +-> +·r£ +( +$u¾ +), +$·¿ms +, '->parse()„emoves†ast…arameters ifhey have default values'); + +228 + g$r +-> +£tDeçuÉP¬am‘” +('foo', 'bar'); + +229 + g$r +-> +þ—rRou‹s +(); + +230 + g$r +-> +cÚÃù +('‹¡', +Ãw + +sfRou‹ +('/‹¡/:foo/:id', +¬¿y +('module' => 'default', 'action' => 'index'))); + +231 + g$·¿ms + = +¬¿y +('module' => 'default', 'action' => 'index', 'id' => 12); + +232 + g$u¾ + = '/test/bar/12'; + +233 + g$t +-> +is +( +$r +-> +g’”©e +('', +$·¿ms +), +$u¾ +, '->generate() merges…arameters with defaults from "sf_routing_defaults"'); + +234 + g$r +-> +£tDeçuÉP¬am‘”s +( +¬¿y +()); + +237 + g$t +-> +dŸg +('unnamed wildcard *'); + +238 + g$r +-> +þ—rRou‹s +(); + +239 + g$r +-> +cÚÃù +('‹¡', +Ãw + +sfRou‹ +('/:moduË/:aùiÚ/‹¡/*', +¬¿y +('module' => 'default', 'action' => 'index'))); + +240 + g$·¿ms + = +¬¿y +('module' => 'default', 'action' => 'index'); + +241 + g$u¾ + = '/default/index/test'; + +242 + g$t +-> +is +( +$r +-> +·r£ +( +$u¾ +), +$·¿ms +, '->parse() finds„oute for URL with‚o‡dditional…arameters when„outeƒnds with unnamed wildcard *'); + +243 + g$t +-> +is +( +$r +-> +g’”©e +('', +$·¿ms +), +$u¾ +, '->generate() creates URL for„oute with‚o‡dditional…arameters when„outeƒnds with unnamed wildcard *'); + +246 + g$u¾ + = '/default/index/test/'; + +247 + g$t +-> +is +( +$r +-> +·r£ +( +$u¾ +), +$·¿ms +, '->parse() finds„oute for URL with‚o‡dditional…arameters‡ndrailing slash when„outeƒnds with unnamed wildcard *'); + +248 + g$·¿ms + = +¬¿y +('module' => 'default', 'action' => 'index', 'titi' => 'toto'); + +249 + g$u¾ + = '/default/index/test/titi/toto/'; + +250 + g$t +-> +is +( +$r +-> +·r£ +( +$u¾ +), +$·¿ms +, '->parse() finds„oute for URL with‡dditional…arameters‡ndrailing slash when„outeƒnds with unnamed wildcard *'); + +252 + g$·¿ms + = +¬¿y +('moduË' => 'deçuÉ', 'aùiÚ' => 'šdex', '·ge' => '4.html', 'tÙo' => +Œue +, 'titi' => 'toto', 'OK' =>rue); + +253 + g$u¾ + = '/default/index/test/page/4.html/toto/1/titi/toto/OK/1'; + +254 + g$t +-> +is +( +$r +-> +·r£ +( +$u¾ +), +$·¿ms +, '->parse() finds„oute for URL with‡dditional…arameters when„outeƒnds with unnamed wildcard *'); + +255 + g$t +-> +is +( +$r +-> +g’”©e +('', +$·¿ms +), +$u¾ +, '->generate() creates URL for„oute with‡dditional…arameters when„outeƒnds with unnamed wildcard *'); + +256 + g$t +-> +is +( +$r +-> +·r£ +('/deçuÉ/šdex/‹¡/·ge/4.html/tÙo/1/t™i/tÙo/OK/1/moduË/‹¡/aùiÚ/tutu'), +$·¿ms +, '->parse() does‚ot override‚amed wildcards with…arameters…assed in unnamed wildcard *'); + +257 + g$t +-> +is +( +$r +-> +·r£ +('/deçuÉ/šdex/‹¡/·ge/4.html////tÙo//1/t™i//tÙo//OK/1'), +$·¿ms +, '->parse() considers multiple separators‡s single in unnamed wildcard *'); + +260 + g$r +-> +þ—rRou‹s +(); + +261 + g$r +-> +cÚÃù +('‹¡', +Ãw + +sfRou‹ +('/:moduË', +¬¿y +('action' => 'index'))); + +262 + g$r +-> +cÚÃù +('‹¡1', +Ãw + +sfRou‹ +('/:moduË/:aùiÚ/*', +¬¿y +())); + +263 + g$·¿ms + = +¬¿y +('module' => 'default', 'action' => 'index', 'toto' => 'titi'); + +264 + g$u¾ + = '/default/index/toto/titi'; + +265 + g$t +-> +is +( +$r +-> +·r£ +( +$u¾ +), +$·¿ms +, '->parse()akeshe first matching„oute butakes * into‡ccounts'); + +266 + g$t +-> +is +( +$r +-> +g’”©e +('', +$·¿ms +), +$u¾ +, '->generate()akeshe first matching„oute butakes * into‡ccounts'); + +267 + g$·¿ms + = +¬¿y +('module' => 'default', 'action' => 'index'); + +268 + g$u¾ + = '/default'; + +269 + g$t +-> +is +( +$r +-> +·r£ +( +$u¾ +), +$·¿ms +, '->parse()akeshe first matching„oute butakes * into‡ccounts'); + +270 + g$t +-> +is +( +$r +-> +g’”©e +('', +$·¿ms +), +$u¾ +, '->generate()akeshe first matching„oute butakes * into‡ccounts'); + +273 + g$t +-> +dŸg +('unnamed wildcard * inhe middle of‡„ule'); + +274 + g$r +-> +þ—rRou‹s +(); + +275 + g$r +-> +cÚÃù +('‹¡', +Ãw + +sfRou‹ +('/:moduË/:aùiÚ/*/‹¡', +¬¿y +('module' => 'default', 'action' => 'index'))); + +277 + g$·¿ms + = +¬¿y +('module' => 'default', 'action' => 'index'); + +278 + g$u¾ + = '/default/index/test'; + +279 + g$t +-> +is +( +$r +-> +·r£ +( +$u¾ +), +$·¿ms +, '->parse() finds„oute for URL when‚oƒxtra…arameters‡re…resent inhe URL'); + +280 + g$t +-> +is +( +$r +-> +g’”©e +('', +$·¿ms +), +$u¾ +, '->generate() creates URL for„oute when‚oƒxtra…arameters‡re‡ddedohe internal URI'); + +282 + g$·¿ms + = +¬¿y +('moduË' => 'deçuÉ', 'aùiÚ' => 'šdex', 'foo' => +Œue +, 'bar' => 'foobar'); + +283 + g$u¾ + = '/default/index/foo/1/bar/foobar/test'; + +284 + g$t +-> +is +( +$r +-> +·r£ +( +$u¾ +), +$·¿ms +, '->parse() finds„oute for URL whenƒxtra…arameters‡re…resent inhe URL'); + +285 + g$t +-> +is +( +$r +-> +g’”©e +('', +$·¿ms +), +$u¾ +, '->generate() creates URL for„oute whenƒxtra…arameters‡re‡ddedohe internal URI'); + +288 + g$r +-> +þ—rRou‹s +(); + +289 + g$r +-> +cÚÃù +('‹¡', +Ãw + +sfRou‹ +('/:moduË/:aùiÚ/*.‹¡', +¬¿y +('module' => 'default', 'action' => 'index'))); + +291 + g$·¿ms + = +¬¿y +('module' => 'default', 'action' => 'index'); + +292 + g$u¾ + = '/default/index.test'; + +293 + g$t +-> +is +( +$r +-> +·r£ +( +$u¾ +), +$·¿ms +, '->parse() finds„oute for URL when‚oƒxtra…arameters‡re…resent inhe URL'); + +294 + g$t +-> +is +( +$r +-> +g’”©e +('', +$·¿ms +), +$u¾ +, '->generate() creates URL for„oute when‚oƒxtra…arameters‡re‡ddedohe internal URI'); + +296 + g$·¿ms + = +¬¿y +('moduË' => 'deçuÉ', 'aùiÚ' => 'šdex', 'foo' => +Œue +, 'bar' => 'foobar'); + +297 + g$u¾ + = '/default/index/foo/1/bar/foobar.test'; + +298 + g$t +-> +is +( +$r +-> +·r£ +( +$u¾ +), +$·¿ms +, '->parse() finds„oute for URL whenƒxtra…arameters‡re…resent inhe URL'); + +299 + g$t +-> +is +( +$r +-> +g’”©e +('', +$·¿ms +), +$u¾ +, '->generate() creates URL for„oute whenƒxtra…arameters‡re‡ddedohe internal URI'); + +302 + g$t +-> +dŸg +('requirements'); + +303 + g$r +-> +þ—rRou‹s +(); + +304 + g$r +-> +cÚÃù +('‹¡', +Ãw + +sfRou‹ +('/:moduË/:aùiÚ/id/:id', +¬¿y +('module' => 'default', 'action' => 'integer'),‡rray('id' => '\d+'))); + +305 + g$r +-> +cÚÃù +('‹¡1', +Ãw + +sfRou‹ +('/:moduË/:aùiÚ/:id', +¬¿y +('module' => 'default', 'action' => 'string'))); + +307 + g$·¿ms + = +¬¿y +('module' => 'default', 'action' => 'integer', 'id' => 12); + +308 + g$u¾ + = '/default/integer/id/12'; + +309 + g$t +-> +is +( +$r +-> +·r£ +( +$u¾ +), +$·¿ms +, '->parse() finds„oute for URL when…arameters meet„equirements'); + +310 + g$t +-> +is +( +$r +-> +g’”©e +('', +$·¿ms +), +$u¾ +, '->generate() creates URL for„oute when…arameters meet„equirements'); + +312 + g$·¿ms + = +¬¿y +('module' => 'default', 'action' => 'string', 'id' => 'NOTANINTEGER'); + +313 + g$u¾ + = '/default/string/NOTANINTEGER'; + +314 + g$t +-> +is +( +$r +-> +·r£ +( +$u¾ +), +$·¿ms +, '->parse() ignore„outes when…arameters don\'t meet„equirements'); + +315 + g$t +-> +is +( +$r +-> +g’”©e +('', +$·¿ms +), +$u¾ +, '->generate() ignore„outes when…arameters don\'t meet„equirements'); + +317 + g$r +-> +þ—rRou‹s +(); + +318 + g$r +-> +cÚÃù +('‹¡', +Ãw + +sfRou‹ +('/:moduË/:aùiÚ/id/:id', +¬¿y +('module' => 'default', 'action' => 'integer'),‡rray('id' => '[^/]{2}'))); + +320 + g$·¿ms + = +¬¿y +('module' => 'default', 'action' => 'integer', 'id' => 'a1'); + +321 + g$u¾ + = '/default/integer/id/a1'; + +322 + g$t +-> +is +( +$r +-> +·r£ +( +$u¾ +), +$·¿ms +, '->parse() finds„oute for URL when…arameters meet„equirements'); + +323 + g$t +-> +is +( +$r +-> +g’”©e +('', +$·¿ms +), +$u¾ +, '->generate() creates URL for„oute when…arameters meet„equirements'); + +326 + g$t +-> +dŸg +('separators'); + +327 + g$r + = +Ãw + +sfP©‹ºRoutšgTe¡ +Òew +sfEv’tDi¥©ch” +(), +nuÎ +, +¬¿y_m”ge +( +$ÝtiÚs +, +¬¿y +('segment_separators' =>‡rray('/', ';', ':', '|', '.', '-', '+')))); + +328 + g$r +-> +cÚÃù +('‹¡', +Ãw + +sfRou‹ +('/:moduË/:aùiÚ;:foo::baz+¡©ic+:tÙo|:h-:zozo.:fÜm©', +¬¿y +())); + +329 + g$r +-> +cÚÃù +('‹¡0', +Ãw + +sfRou‹ +('/:moduË/:aùiÚ0', +¬¿y +())); + +330 + g$r +-> +cÚÃù +('‹¡1', +Ãw + +sfRou‹ +('/:moduË;:aùiÚ1', +¬¿y +())); + +331 + g$r +-> +cÚÃù +('‹¡2', +Ãw + +sfRou‹ +('/:moduË::aùiÚ2', +¬¿y +())); + +332 + g$r +-> +cÚÃù +('‹¡3', +Ãw + +sfRou‹ +('/:moduË+:aùiÚ3', +¬¿y +())); + +333 + g$r +-> +cÚÃù +('‹¡4', +Ãw + +sfRou‹ +('/:moduË|:aùiÚ4', +¬¿y +())); + +334 + g$r +-> +cÚÃù +('‹¡5', +Ãw + +sfRou‹ +('/:moduË.:aùiÚ5', +¬¿y +())); + +335 + g$r +-> +cÚÃù +('‹¡6', +Ãw + +sfRou‹ +('/:moduË-:aùiÚ6', +¬¿y +())); + +336 + g$·¿ms + = +¬¿y +('module' => 'default', 'action' => 'index', 'action0' => 'foobar'); + +337 + g$u¾ + = '/default/foobar'; + +338 + g$t +-> +is +( +$r +-> +·r£ +( +$u¾ +), +$·¿ms +, '->parse()„ecognizes…arameters separated by /'); + +339 + g$t +-> +is +( +$r +-> +g’”©e +('', +$·¿ms +), +$u¾ +, '->generate() creates„outes with / separator'); + +340 + g$·¿ms + = +¬¿y +('module' => 'default', 'action' => 'index', 'action1' => 'foobar'); + +341 + g$u¾ + = '/default;foobar'; + +342 + g$t +-> +is +( +$r +-> +·r£ +( +$u¾ +), +$·¿ms +, '->parse()„ecognizes…arameters separated by ;'); + +343 + g$t +-> +is +( +$r +-> +g’”©e +('', +$·¿ms +), +$u¾ +, '->generate() creates„outes with ; separator'); + +344 + g$·¿ms + = +¬¿y +('module' => 'default', 'action' => 'index', 'action2' => 'foobar'); + +345 + g$u¾ + = '/default:foobar'; + +346 + g$t +-> +is +( +$r +-> +·r£ +( +$u¾ +), +$·¿ms +, '->parse()„ecognizes…arameters separated by :'); + +347 + g$t +-> +is +( +$r +-> +g’”©e +('', +$·¿ms +), +$u¾ +, '->generate() creates„outes with : separator'); + +348 + g$·¿ms + = +¬¿y +('module' => 'default', 'action' => 'index', 'action3' => 'foobar'); + +349 + g$u¾ + = '/default+foobar'; + +350 + g$t +-> +is +( +$r +-> +·r£ +( +$u¾ +), +$·¿ms +, '->parse()„ecognizes…arameters separated by +'); + +351 + g$t +-> +is +( +$r +-> +g’”©e +('', +$·¿ms +), +$u¾ +, '->generate() creates„outes with + separator'); + +352 + g$·¿ms + = +¬¿y +('module' => 'default', 'action' => 'index', 'action4' => 'foobar'); + +353 + g$u¾ + = '/default|foobar'; + +354 + g$t +-> +is +( +$r +-> +·r£ +( +$u¾ +), +$·¿ms +, '->parse()„ecognizes…arameters separated by |'); + +355 + g$t +-> +is +( +$r +-> +g’”©e +('', +$·¿ms +), +$u¾ +, '->generate() creates„outes with | separator'); + +356 + g$·¿ms + = +¬¿y +('module' => 'default', 'action' => 'index', 'action5' => 'foobar'); + +357 + g$u¾ + = '/default.foobar'; + +358 + g$t +-> +is +( +$r +-> +·r£ +( +$u¾ +), +$·¿ms +, '->parse()„ecognizes…arameters separated by .'); + +359 + g$t +-> +is +( +$r +-> +g’”©e +('', +$·¿ms +), +$u¾ +, '->generate() creates„outes with . separator'); + +360 + g$·¿ms + = +¬¿y +('module' => 'default', 'action' => 'index', 'action' => 'index', 'action6' => 'foobar'); + +361 + g$u¾ + = '/default-foobar'; + +362 + g$t +-> +is +( +$r +-> +·r£ +( +$u¾ +), +$·¿ms +, '->parse()„ecognizes…arameters separated by -'); + +363 + g$t +-> +is +( +$r +-> +g’”©e +('', +$·¿ms +), +$u¾ +, '->generate() creates„outes with - separator'); + +364 + g$·¿ms + = +¬¿y +('module' => 'default', 'action' => 'index', 'action' => 'foobar', 'foo' => 'bar', 'baz' => 'baz', 'toto' => 'titi', 'hip' => 'hop', 'zozo' => 'zaza', 'format' => 'xml'); + +365 + g$u¾ + = '/default/foobar;bar:baz+static+titi|hop-zaza.xml'; + +366 + g$t +-> +is +( +$r +-> +·r£ +( +$u¾ +), +$·¿ms +, '->parse()„ecognizes…arameters separated by mixed separators'); + +367 + g$t +-> +is +( +$r +-> +g’”©e +('', +$·¿ms +), +$u¾ +, '->generate() creates„outes with mixed separators'); + +370 + g$r + = +Ãw + +sfP©‹ºRoutšgTe¡ +Òew +sfEv’tDi¥©ch” +(), +nuÎ +, +¬¿y_m”ge +( +$ÝtiÚs +, +¬¿y +('segment_separators' =>‡rray()))); + +371 + g$r +-> +cÚÃù +('no£gm’t', +Ãw + +sfRou‹ +('/:nÚ£gm’‹d', +¬¿y +())); + +372 + g$·¿ms + = +¬¿y +('module' => 'default', 'action' => 'index', 'nonsegmented' => 'plainurl'); + +373 + g$u¾ + = '/plainurl'; + +374 + g$t +-> +is +( +$r +-> +·r£ +( +$u¾ +), +$·¿ms +, '->parse() works without segment_separators'); + +375 + g$t +-> +is +( +$r +-> +g’”©e +('', +$·¿ms +), +$u¾ +, '->generate() works without segment_separators'); + +376 + g$·¿ms + = +¬¿y +('module' => 'default', 'action' => 'index', 'nonsegmented' => 'foo/bar/baz'); + +377 + g$t +-> +is +( +$r +-> +·r£ +('/foo/b¬/baz'), +$·¿ms +, '->parse() works without segment_separators'); + +378 + g$t +-> +is +( +$r +-> +g’”©e +('', +$·¿ms +), '/foo%2Fbar%2Fbaz', '->generate() works without segment_separators'); + +380 + g$r + = +Ãw + +sfP©‹ºRoutšgTe¡ +Òew +sfEv’tDi¥©ch” +(), +nuÎ +, +¬¿y_m”ge +( +$ÝtiÚs +, +¬¿y +('segment_separators' =>‡rray('~')))); + +381 + g$r +-> +cÚÃù +('no£gm’t', +Ãw + +sfRou‹ +('/:nÚ£gm’‹d', +¬¿y +())); + +382 + g$·¿ms + = +¬¿y +('module' => 'default', 'action' => 'index', 'nonsegmented' => 'plainurl'); + +383 + g$u¾ + = '/plainurl'; + +384 + g$t +-> +is +( +$r +-> +·r£ +( +$u¾ +), +$·¿ms +, '->parse() works with segment_separators which‡re‚ot in url'); + +385 + g$t +-> +is +( +$r +-> +g’”©e +('', +$·¿ms +), +$u¾ +, '->generate() works with segment_separators which‡re‚ot in url'); + +386 + g$·¿ms + = +¬¿y +('module' => 'default', 'action' => 'index', 'nonsegmented' => 'foo/bar/baz'); + +387 + g$t +-> +is +( +$r +-> +·r£ +('/foo/b¬/baz'), +$·¿ms +, '->parse() works with segment_separators which‡re‚ot in url'); + +388 + g$t +-> +is +( +$r +-> +g’”©e +('', +$·¿ms +), '/foo%2Fbar%2Fbaz', '->generate() works with segment_separators which‡re‚ot in url'); + +390 + g$r + = +Ãw + +sfP©‹ºRoutšgTe¡ +Òew +sfEv’tDi¥©ch” +(), +nuÎ +, +¬¿y_m”ge +( +$ÝtiÚs +, +¬¿y +('variable_prefixes' =>‡rray(':', '$')))); + +393 + g$t +-> +dŸg +('token‚ames'); + +394 + g$r +-> +þ—rRou‹s +(); + +395 + g$r +-> +cÚÃù +('‹¡1', +Ãw + +sfRou‹ +('/:foo_1/:b¬2', +¬¿y +())); + +396 + g$·¿ms + = +¬¿y +('module' => 'default', 'action' => 'index', 'foo_1' => 'test', 'bar2' => 'foobar'); + +397 + g$u¾ + = '/test/foobar'; + +398 + g$t +-> +is +( +$r +-> +·r£ +( +$u¾ +), +$·¿ms +, '->parse()‡cceptsoken‚ames composed of†etters, digits‡nd _'); + +399 + g$t +-> +is +( +$r +-> +g’”©e +('', +$·¿ms +), +$u¾ +, '->generate()‡cceptsoken‚ames composed of†etters, digits‡nd _'); + +402 + g$t +-> +dŸg +('token…refix'); + +403 + g$r +-> +þ—rRou‹s +(); + +404 + g$r +-> +cÚÃù +('‹¡2', +Ãw + +sfRou‹ +('/2/$moduË/$aùiÚ/$id', +¬¿y +())); + +405 + g$r +-> +cÚÃù +('‹¡3', +Ãw + +sfRou‹ +('/3/$moduË/:aùiÚ/$fœ¡_Çme/:Ï¡_Çme', +¬¿y +())); + +406 + g$r +-> +cÚÃù +('‹¡1', +Ãw + +sfRou‹ +('/1/:moduË/:aùiÚ', +¬¿y +())); + +407 + g$·¿ms1 + = +¬¿y +('module' => 'foo', 'action' => 'bar'); + +408 + g$u¾1 + = '/1/foo/bar'; + +409 + g$t +-> +is +( +$r +-> +·r£ +( +$u¾1 +), +$·¿ms1 +, '->parse()‡cceptsoken‚ames starting with :'); + +410 + g$t +-> +is +( +$r +-> +g’”©e +('', +$·¿ms1 +), +$u¾1 +, '->generate()‡cceptsoken‚ames starting with :'); + +411 + g$·¿ms2 + = +¬¿y +('module' => 'foo', 'action' => 'bar', 'id' => 12); + +412 + g$u¾2 + = '/2/foo/bar/12'; + +413 + g$t +-> +is +( +$r +-> +·r£ +( +$u¾2 +), +$·¿ms2 +, '->parse()‡cceptsoken‚ames starting with $'); + +414 + g$t +-> +is +( +$r +-> +g’”©e +('', +$·¿ms2 +), +$u¾2 +, '->generate()‡cceptsoken‚ames starting with $'); + +415 + g$·¿ms3 + = +¬¿y +('module' => 'foo', 'action' => 'bar', 'first_name' => 'John', 'last_name' => 'Doe'); + +416 + g$u¾3 + = '/3/foo/bar/John/Doe'; + +417 + g$t +-> +is +( +$r +-> +·r£ +( +$u¾3 +), +$·¿ms3 +, '->parse()‡cceptsoken‚ames starting with mixed :‡nd $'); + +418 + g$t +-> +is +( +$r +-> +g’”©e +('', +$·¿ms3 +), +$u¾3 +, '->generate()‡cceptsoken‚ames starting with mixed :‡nd $'); + +421 + g$t +-> +dŸg +('named„outes'); + +422 + g$r +-> +þ—rRou‹s +(); + +423 + g$r +-> +cÚÃù +('‹¡', +Ãw + +sfRou‹ +('/‹¡/:id', +¬¿y +('module' => 'default', 'action' => 'integer'),‡rray('id' => '\d+'))); + +424 + g$·¿ms + = +¬¿y +('module' => 'default', 'action' => 'integer', 'id' => 12); + +425 + g$u¾ + = '/test/12'; + +426 + g$Çmed_·¿ms + = +¬¿y +('id' => 12); + +427 + g$t +-> +is +( +$r +-> +g’”©e +('', +$·¿ms +), +$u¾ +, '->generate() canake‡nƒmpty„oute‚ame‡s its first…arameter'); + +428 + g$t +-> +is +( +$r +-> +g’”©e +('‹¡', +$·¿ms +), +$u¾ +, '->generate() canake‡„oute‚ame‡s its first…arameter'); + +429 + g$t +-> +is +( +$r +-> +g’”©e +('‹¡', +$Çmed_·¿ms +), +$u¾ +, '->generate() with‚amed„outes‚eeds only…arameters‚ot defined in„oute default'); + +432 + g$t +-> +dŸg +('->appendRoute()'); + +433 + g$r +-> +þ—rRou‹s +(); + +434 + g$r +-> +cÚÃù +('‹¡', +Ãw + +sfRou‹ +('/:moduË', +¬¿y +('action' => 'index'))); + +435 + g$r +-> +cÚÃù +('‹¡1', +Ãw + +sfRou‹ +('/:moduË/:aùiÚ/*', +¬¿y +())); + +436 + g$rou‹s + = +$r +-> +g‘Rou‹s +(); + +437 + g$r +-> +þ—rRou‹s +(); + +438 + g$r +-> +­³ndRou‹ +('‹¡', +Ãw + +sfRou‹ +('/:moduË', +¬¿y +('action' => 'index'))); + +439 + g$r +-> +­³ndRou‹ +('‹¡1', +Ãw + +sfRou‹ +('/:moduË/:aùiÚ/*', +¬¿y +())); + +440 + g$t +-> +is +( +$r +-> +g‘Rou‹s +(), +$rou‹s +, '->appendRoute() is‡n‡lias for ->connect()'); + +443 + g$t +-> +dŸg +('->prependRoute()'); + +444 + g$r +-> +þ—rRou‹s +(); + +445 + g$r +-> +cÚÃù +('‹¡', +Ãw + +sfRou‹ +('/:moduË', +¬¿y +('action' => 'index'))); + +446 + g$r +-> +cÚÃù +('‹¡1', +Ãw + +sfRou‹ +('/:moduË/:aùiÚ/*', +¬¿y +())); + +447 + g$rou‹_Çmes + = +¬¿y_keys +( +$r +-> +g‘Rou‹s +()); + +448 + g$r +-> +þ—rRou‹s +(); + +449 + g$r +-> +´•’dRou‹ +('‹¡', +Ãw + +sfRou‹ +('/:moduË', +¬¿y +('action' => 'index'))); + +450 + g$r +-> +´•’dRou‹ +('‹¡1', +Ãw + +sfRou‹ +('/:moduË/:aùiÚ/*', +¬¿y +())); + +451 + g$p_rou‹_Çmes + = +¬¿y_keys +( +$r +-> +g‘Rou‹s +()); + +452 + g$t +-> +is +( +im¶ode +('-', +$p_rou‹_Çmes +), im¶ode('-', +¬¿y_»v”£ +( +$rou‹_Çmes +)), '->prependRoute()‡dds‚ew„outes‡the beginning ofheƒxistings ones'); + +455 + g$t +-> +dŸg +('->insertRouteBefore()'); + +456 + g$r +-> +þ—rRou‹s +(); + +457 + g$r +-> +cÚÃù +('‹¡1', +Ãw + +sfRou‹ +('/:moduË', +¬¿y +('action' => 'index'))); + +458 + g$r +-> +cÚÃù +('‹¡3', +Ãw + +sfRou‹ +('/:moduË/:aùiÚ/*', +¬¿y +())); + +459 + g$r +-> +š£¹Rou‹BefÜe +('‹¡3', '‹¡2', +Ãw + +sfRou‹ +('/:moduË/:aùiÚ', +¬¿y +('module' => 'default'))); + +460 + g$rou‹_Çmes + = +¬¿y_keys +( +$r +-> +g‘Rou‹s +()); + +461 + g$r +-> +þ—rRou‹s +(); + +462 + g$r +-> +cÚÃù +('‹¡1', +Ãw + +sfRou‹ +('/:moduË', +¬¿y +('action' => 'index'))); + +463 + g$r +-> +cÚÃù +('‹¡2', +Ãw + +sfRou‹ +('/:moduË/:aùiÚ', +¬¿y +('module' => 'default'))); + +464 + g$r +-> +cÚÃù +('‹¡3', +Ãw + +sfRou‹ +('/:moduË/:aùiÚ/*', +¬¿y +())); + +465 + g$‹¡_rou‹_Çmes + = +¬¿y_keys +( +$r +-> +g‘Rou‹s +()); + +466 + g$t +-> +is +( +im¶ode +('-', +$‹¡_rou‹_Çmes +), im¶ode('-', +$rou‹_Çmes +), '->insertRouteBefore()‡dds‡‚ew„oute before‡notherƒxistings one'); + +467 + g$r +-> +þ—rRou‹s +(); + +468 + g$msg + = '->insertRouteBefore()hrows‡n sfConfigurationException whenryingo insert‡„oute before‡‚onƒxistent one'; + +469 + gŒy + + +471 + g$r +-> +š£¹Rou‹BefÜe +('‹¡2', '‹¡', +Ãw + +sfRou‹ +('/šdex.php/:moduË/:aùiÚ', +¬¿y +('module' => 'default', 'action' => 'index'))); + +472 + g$t +-> +çž +( +$msg +); + +474 + $ÿtch + ( +sfCÚfigu¿tiÚExû±iÚ + +$e +) + +476 +$t +-> + `·ss +( +$msg +); + +477 + } +} + +480 + g$t +-> +dŸg +('->getCurrentInternalUri()'); + +481 + g$r +-> +þ—rRou‹s +(); + +482 + g$r +-> +cÚÃù +('‹¡2', +Ãw + +sfRou‹ +('/moduË/aùiÚ/:id', +¬¿y +('module' => 'foo', 'action' => 'bar'))); + +483 + g$r +-> +cÚÃù +('‹¡', +Ãw + +sfRou‹ +('/:moduË', +¬¿y +('action' => 'index'))); + +484 + g$r +-> +cÚÃù +('‹¡1', +Ãw + +sfRou‹ +('/:moduË/:aùiÚ/*', +¬¿y +())); + +485 + g$r +-> +cÚÃù +('‹¡3', +Ãw + +sfRou‹ +('/', +¬¿y +())); + +486 + g$r +-> +·r£ +('/'); + +487 + g$t +-> +is +( +$r +-> +g‘Cu¼’tIÁ”ÇlUri +(), 'default/index', '->getCurrentInternalUri()„eturnshe internal URI for†ast…arsed URL'); + +488 + g$r +-> +·r£ +('/foo/bar/bar/foo/a/b'); + +489 + g$t +-> +is +( +$r +-> +g‘Cu¼’tIÁ”ÇlUri +(), 'foo/bar?a=b&bar=foo', '->getCurrentInternalUri()„eturnshe internal URI for†ast…arsed URL'); + +490 + g$r +-> +·r£ +('/module/action/2'); + +491 + g$t +-> +is +( +$r +-> +g‘Cu¼’tIÁ”ÇlUri +( +Œue +), '@test2?id=2', '->getCurrentInternalUri()„eturnshe internal URI for†ast…arsed URL'); + +494 + g$t +-> +dŸg +('Lazy Routes Config Cache'); + +495 + g$di¥©ch” + = +Ãw + +sfEv’tDi¥©ch” +(); + +496 + g$di¥©ch” +-> +cÚÃù +('routing.load_configuration', 'configureRouting'); + +497 +funùiÚ + + $cÚfigu»Routšg +( +$ev’t +) + +499 +$ev’t +-> + `g‘Subjeù +()-> + `cÚÃù +('fœ¡', +Ãw + + `sfRou‹ +('/first')); + +500 +$ev’t +-> + `g‘Subjeù +()-> + `cÚÃù +('£cÚd', +Ãw + + `sfRou‹ +('/', + `¬¿y +())); + +501 + } +} + +504 + g$t +-> +is +( +$r +-> +g‘Cu¼’tIÁ”ÇlUri +( +çl£ +), 'foo/bar?id=2', '->getCurrentInternalUri()„eturnshe internal URI for†ast…arsed URL'); + +505 + g$t +-> +is +( +$r +-> +g‘Cu¼’tIÁ”ÇlUri +( +Œue +), '@test2?id=2', '->getCurrentInternalUri()„eturnshe internal URI for†ast…arsed URL'); + +506 + g$t +-> +is +( +$r +-> +g‘Cu¼’tIÁ”ÇlUri +( +çl£ +), 'foo/bar?id=2', '->getCurrentInternalUri()„eturnshe internal URI for†ast…arsed URL'); + +509 + g$rCached + = +Ãw + +sfP©‹ºRoutšgTe¡ +Òew +sfEv’tDi¥©ch” +(),‚ew +sfNoCache +(), +$ÝtiÚs +); + +510 + g$rCached +-> +cÚÃù +('‹¡', +Ãw + +sfRou‹ +('/:moduË', +¬¿y +('action' => 'index'))); + +511 + g$rCached +-> +cÚÃù +('‹¡2', +Ãw + +sfRou‹ +('/', +¬¿y +())); + +512 + g$rCached +-> +·r£ +('/'); + +513 + g$t +-> +is +( +$rCached +-> +g‘Cu¼’tIÁ”ÇlUri +(), 'default/index', '->getCurrentInternalUri()„eturnshe internal URI for†ast…arsed URL using cache'); + +514 + g$rCached +-> +·r£ +('/test'); + +515 + g$t +-> +is +( +$rCached +-> +g‘Cu¼’tIÁ”ÇlUri +(), 'test/index', '->getCurrentInternalUri()„eturnshe internal URI for†ast…arsed URL using cache'); + +516 + g$rCached +-> +·r£ +('/'); + +517 + g$t +-> +is +( +$rCached +-> +g‘Cu¼’tIÁ”ÇlUri +(), 'default/index', '->getCurrentInternalUri()„eturnshe internal URI for†ast…arsed URL using cache'); + +519 + g$·¿m‘”s + = +$rCached +-> +fšdRou‹ +('/test'); + +520 + g$t +-> +is +( +$·¿m‘”s +, + +521 +¬¿y +('name' => 'test', 'pattern' => '/:module', 'parameters' =>‡rray('action' => 'index', 'module' => 'test')), + +523 + g$t +-> +is +( +$rCached +-> +g‘Cu¼’tIÁ”ÇlUri +(), 'default/index', '->findRoute() does‚ot changehe internal URI of sfPatternRouting'); + +524 + g$t +-> +is +( +$rCached +-> +fšdRou‹ +('/no/m©ch/found'), +nuÎ +, '->findRoute()„eturns‚ull on‚on-matching„oute'); + +527 + g$r +-> +þ—rRou‹s +(); + +528 + g$r +-> +cÚÃù +('‹¡', +Ãw + +sfRou‹ +('/‹¡', +¬¿y +('bar' => 'foo'))); + +529 + g$r +-> +·r£ +('/test'); + +530 + g$r +-> +·r£ +('/notfound'); + +531 + g$t +-> +is +( +$r +-> +g‘Cu¼’tIÁ”ÇlUri +(), +nuÎ +, '->getCurrentInternalUri()„eseted‡fter‚egative match'); + +532 + g$t +-> +is +( +$r +-> +g‘Cu¼’tRou‹Name +(), +nuÎ +, '->getCurrentRouteName()„eseted‡fter‚egative match'); + +535 + g$t +-> +dŸg +('defaults'); + +536 + g$r +-> +þ—rRou‹s +(); + +537 + g$r +-> +cÚÃù +('‹¡', +Ãw + +sfRou‹ +('/‹¡', +¬¿y +('bar' => 'foo'))); + +538 + g$·¿ms + = +¬¿y +('module' => 'default', 'action' => 'index'); + +539 + g$u¾ + = '/test'; + +540 + g$t +-> +is +( +$r +-> +g’”©e +('', +$·¿ms +), +$u¾ +, '->generate()„outesakes default values into‡ccount when matching‡„oute'); + +541 + g$·¿ms + = +¬¿y +('module' => 'default', 'action' => 'index', 'bar' => 'foo'); + +542 + g$t +-> +is +( +$r +-> +g’”©e +('', +$·¿ms +), +$u¾ +, '->generate()„outesakes default values into‡ccount when matching‡„oute'); + +543 + g$·¿ms + = +¬¿y +('module' => 'default', 'action' => 'index', 'bar' => 'bar'); + +544 + gŒy + + +546 + g$r +-> +g’”©e +('', +$·¿ms +); + +547 + g$t +-> +çž +('->generate()hrows‡ sfConfigurationException if‚o„oute matcheshe…arams'); + +549 + $ÿtch + ( +sfCÚfigu¿tiÚExû±iÚ + +$e +) + +551 +$t +-> + `·ss +('->generate()hrows‡ sfConfigurationException if‚o„oute matcheshe…arams'); + +552 + } +} + +555 + g$t +-> +dŸg +('mandatory…arameters'); + +556 + g$r +-> +þ—rRou‹s +(); + +557 + g$r +-> +cÚÃù +('‹¡', +Ãw + +sfRou‹ +('/test/:foo/:bar')); + +558 + g$·¿ms + = +¬¿y +('foo' => 'bar'); + +559 + gŒy + + +561 + g$r +-> +g’”©e +('‹¡', +$·¿ms +); + +562 + g$t +-> +çž +('->generate()hrows‡ InvalidArgumentException if some mandatory…arameters‡re‚ot…rovided'); + +564 + $ÿtch + ( +Inv®idArgum’tExû±iÚ + +$e +) + +566 +$t +-> + `·ss +('->generate()hrows‡ InvalidArgumentException if some mandatory…arameters‡re‚ot…rovided'); + +567 + } +} + +570 + g$t +-> +dŸg +('module/action overriding'); + +571 + g$r +-> +þ—rRou‹s +(); + +572 + g$r +-> +cÚÃù +('‹¡', +Ãw + +sfRou‹ +('/', +¬¿y +('module' => 'default1', 'action' => 'default1'))); + +573 + g$·¿ms + = +¬¿y +('module' => 'default1', 'action' => 'default1'); + +574 + g$t +-> +is +( +$r +-> +·r£ +('/'), +$·¿ms +, '->parse() overrideshe default module/action if…rovided inhe defaults'); + +575 + g$t +-> +is +( +$r +-> +g’”©e +('', +$·¿ms +), '/', '->generate() overrideshe default module/action if…rovided inhe defaults'); + +578 + g$t +-> +dŸg +('parameter values decoding'); + +579 + g$r +-> +þ—rRou‹s +(); + +580 + g$r +-> +cÚÃù +('‹¡', +Ãw + +sfRou‹ +('/‹¡/:v®ue', +¬¿y +('module' => 'default', 'action' => 'index'))); + +581 + g$r +-> +cÚÃù +('‹¡1', +Ãw + +sfRou‹ +('/‹¡1/*', +¬¿y +('module' => 'default', 'action' => 'index'))); + +582 + g$t +-> +is +( +$r +-> +·r£ +('/‹¡/‹¡%26foo%3Db¬%2Bfoo'), +¬¿y +('module' => 'default', 'action' => 'index', 'value' => 'test&foo=bar+foo'), '->parse() decodes…arameter values'); + +583 + g$t +-> +is +( +$r +-> +·r£ +('/‹¡1/v®ue/‹¡%26foo%3Db¬%2Bfoo'), +¬¿y +('module' => 'default', 'action' => 'index', 'value' => 'test&foo=bar+foo'), '->parse() decodes…arameter values'); + +586 + g$r +-> +þ—rRou‹s +(); + +587 + g$r +-> +cÚÃù +('‹¡', +Ãw + +sfRou‹ +('/cu¡om”/:·¿m1/:aùiÚ/*', +¬¿y +('module' => 'default'))); + +588 + g$r +-> +cÚÃù +('deçuÉ', +Ãw + +sfRou‹ +('/:module/:action')); + +589 + g$u¾ + = '/customer/create'; + +590 + g$·¿ms + = +¬¿y +('module' => 'customer', 'action' => 'create'); + +591 + g$t +-> +is +( +$r +-> +·r£ +( +$u¾ +), +$·¿ms +, '->parse() /:module/:action„oute'); + +593 + g$u¾ + = '/customer/param1/action'; + +594 + g$·¿ms + = +¬¿y +('module' => 'default', 'action' => 'action', 'param1' => 'param1'); + +595 + g$t +-> +is +( +$r +-> +·r£ +( +$u¾ +), +$·¿ms +, '->parse() /customer/:param1/:action/*„oute'); + +597 + g$r +-> +þ—rRou‹s +(); + +598 + g$r +-> +cÚÃù +('‹¡', +Ãw + +sfRou‹ +('/cu¡om”/:id/:id_Çme', +¬¿y +('module' => 'default'))); + +599 + g$t +-> +is +( +$r +-> +g’”©e +('', +¬¿y +('id' => 2, 'id_name' => 'fabien')), '/customer/2/fabien', '->generate() first„eplaceshe†ongest variable‚ames'); + +601 + g$r +-> +þ—rRou‹s +(); + +602 + g$r +-> +cÚÃù +('deçuÉ', +Ãw + +sfAlwaysAbsÞu‹Rou‹ +('/:module/:action')); + +603 + g$t +-> +is +( +$r +-> +g’”©e +('', +¬¿y +('module' => 'foo', 'action' => 'bar')), 'http://localhost/foo/bar', '->generate()‡llows„outeo generate‡bsolute urls'); + +604 + g$t +-> +is +( +$r +-> +g’”©e +('', +¬¿y +('moduË' => 'foo', 'aùiÚ' => 'b¬'), +Œue +), 'http://localhost/foo/bar', '->generate() does‚ot double-absolutize urls'); + +607 + g$t +-> +dŸg +('suffix handling with generate_shortest_url option'); + +609 + g$r + = +Ãw + +sfP©‹ºRoutšgTe¡ +Òew +sfEv’tDi¥©ch” +(), +nuÎ +, +¬¿y +('g’”©e_sh܋¡_u¾' => +Œue +, 'exŒa_·¿m‘”s_as_qu”y_¡ršg' => +çl£ +, 'suffix' => '.html')); + +610 + g$r +-> +cÚÃù +('‹¡2', +Ãw + +sfRou‹ +('/u£rs/:u£ºame/:sÜt/:¡¬t/', +¬¿y +('module' => 'user', 'action' => 'show', 'sort' => 'all', 'start' => '0'),‡rray('requirements' =>‡rray('username' => '\w+', 'start' => '\d+')))); + +611 + g$t +-> +is +( +$r +-> +g’”©e +('', +¬¿y +('username' => 'test1', 'module' => 'user', 'action' => 'show')), '/users/test1/', '->generate() creates URL when using suffix‡nd generate_shortest_url'); + +612 + g$t +-> +is +( +$r +-> +g’”©e +('', +¬¿y +('username' => 'test1', 'module' => 'user', 'action' => 'show', 'sort' => 'all', 'start' => '1')), '/users/test1/all/1/', '->generate() creates URL when using suffix‡nd generate_shortest_url'); + +613 + g$t +-> +is +( +$r +-> +·r£ +('/u£rs/‹¡1/'), +¬¿y +('module' => 'user', 'action' => 'show', 'sort' => 'all', 'start' => '0', 'username' => 'test1'), '->parse()„eturns‡ll default…arameters when…rovided suffix‡nd generate_shortest_urlƒnabled with / suffix'); + +615 + g$r + = +Ãw + +sfP©‹ºRoutšgTe¡ +Òew +sfEv’tDi¥©ch” +(), +nuÎ +, +¬¿y +('g’”©e_sh܋¡_u¾' => +Œue +, 'exŒa_·¿m‘”s_as_qu”y_¡ršg' => +çl£ +, 'suffix' => '.html')); + +616 + g$r +-> +cÚÃù +('‹¡1', +Ãw + +sfRou‹ +('/u£rs/:u£ºame/:sÜt/:¡¬t', +¬¿y +('module' => 'user', 'action' => 'show', 'sort' => 'all', 'start' => '0'),‡rray('requirements' =>‡rray('username' => '\w+', 'start' => '\d+')))); + +617 + g$t +-> +is +( +$r +-> +g’”©e +('', +¬¿y +('username' => 'test1', 'module' => 'user', 'action' => 'show')), '/users/test1.html', '->generate() creates URL when using suffix‡nd generate_shortest_url'); + +618 + g$t +-> +is +( +$r +-> +g’”©e +('', +¬¿y +('username' => 'test1', 'module' => 'user', 'action' => 'show', 'sort' => 'all', 'start' => '0')), '/users/test1.html', '->generate() creates URL when using suffix‡nd generate_shortest_url'); + +619 + g$t +-> +is +( +$r +-> +g’”©e +('', +¬¿y +('username' => 'test1', 'module' => 'user', 'action' => 'show', 'sort' => 'all', 'start' => '1')), '/users/test1/all/1.html', '->generate() creates URL when using suffix‡nd generate_shortest_url'); + +621 + g$t +-> +is +( +$r +-> +·r£ +('/u£rs/‹¡1.html'), +¬¿y +('module' => 'user', 'action' => 'show', 'sort' => 'all', 'start' => '0', 'username' => 'test1'), '->parse()„eturns‡ll default…arameters when…rovided suffix‡nd generate_shortest_urlƒnabled with .html suffix'); + +623 + g$r + = +Ãw + +sfP©‹ºRoutšgTe¡ +Òew +sfEv’tDi¥©ch” +(), +nuÎ +, +¬¿y +('g’”©e_sh܋¡_u¾' => +Œue +, 'exŒa_·¿m‘”s_as_qu”y_¡ršg' => +çl£ +, 'suffix' => '.html')); + +624 + g$r +-> +cÚÃù +('po¡s', +Ãw + +sfRou‹ +('/po¡s', +¬¿y +('module' => 'posts', 'action' => 'index', 'page' => '1'))); + +625 + g$r +-> +cÚÃù +('po¡s_·ges', +Ãw + +sfRou‹ +('/po¡s/:·ge', +¬¿y +('module' => 'posts', 'action' => 'index', 'page' => '1'))); + +627 + g$t +-> +is +( +$r +-> +g’”©e +('', +¬¿y +('module' => 'posts', 'action' => 'index')), '/posts.html', '->generate() creates URL when using suffix‡nd generate_shortest_url'); + +628 + g$t +-> +is +( +$r +-> +g’”©e +('', +¬¿y +('module' => 'posts', 'action' => 'index', 'page' => '1')), '/posts.html', '->generate() creates URL when using suffix‡nd generate_shortest_url'); + +629 + g$t +-> +is +( +$r +-> +g’”©e +('', +¬¿y +('module' => 'posts', 'action' => 'index', 'page' => '2')), '/posts/2.html', '->generate() creates URL when using suffix‡nd generate_shortest_url'); + + @lib/vendor/symfony/test/unit/routing/sfRequestRouteTest.php + +1 +dŸg +('->__construct()'); + +18 + g$rou‹ + = +Ãw + +sfReque¡Rou‹ +('/'); + +19 + g$»quœem’ts + = +$rou‹ +-> +g‘Requœem’ts +(); + +20 + g$t +-> +is_d“¶y +( +$»quœem’ts +['sf_m‘hod'], +¬¿y +('get', 'head'), '->__construct()‡pplies‡ default "sf_method"„equirement of GET or HEAD'); + +22 + g$rou‹ + = +Ãw + +sfReque¡Rou‹ +('/', +¬¿y +(),‡rray('sf_method' =>‡rray('post'))); + +23 + g$»quœem’ts + = +$rou‹ +-> +g‘Requœem’ts +(); + +24 + g$t +-> +is_d“¶y +( +$»quœem’ts +['sf_m‘hod'], +¬¿y +('post'), '->__construct() does‚ot‡pply‡ default "sf_method"„equirement if one is‡lready set'); + +26 + g$rou‹ + = +Ãw + +sfReque¡Rou‹ +('/', +¬¿y +(),‡rray('sf_method' => 'get')); + +27 + g$»quœem’ts + = +$rou‹ +-> +g‘Requœem’ts +(); + +28 + g$t +-> +is_d“¶y +( +$»quœem’ts +['sf_m‘hod'], +¬¿y +('get'), '->__construct() converts‡ string "sf_method"„equiremento‡n‡rray'); + +31 + g$t +-> +dŸg +('->matchesParameters()'); + +33 + g$rou‹ + = +Ãw + +sfReque¡Rou‹ +('/', +¬¿y +(),‡rray('sf_method' =>‡rray('get', 'head'))); + +34 + g$t +-> +ok +( +$rou‹ +-> +m©chesP¬am‘”s +( +¬¿y +('sf_method' => 'get')), '->matchesParameters() matcheshe "sf_method"…arameter'); + +36 + g$rou‹ + = +Ãw + +sfReque¡Rou‹ +('/', +¬¿y +(),‡rray('sf_method' =>‡rray('get'))); + +37 + g$t +-> +ok +( +$rou‹ +-> +m©chesP¬am‘”s +( +¬¿y +('sf_method' => 'GET')), '->matchesParameters() checks "sf_method"„equirement case-insensitively'); + +39 + g$rou‹ + = +Ãw + +sfReque¡Rou‹ +('/', +¬¿y +(),‡rray('sf_method' =>‡rray('GET'))); + +40 + g$t +-> +ok +( +$rou‹ +-> +m©chesP¬am‘”s +( +¬¿y +('sf_method' => 'get')), '->matchesParameters() checks "sf_method"„equirement case-insensitively'); + +43 + g$t +-> +dŸg +('->matchesUrl()'); + +45 + g$rou‹ + = +Ãw + +sfReque¡Rou‹ +('/', +¬¿y +(),‡rray('sf_method' => 'GET')); + +46 + g$t +-> +i§_ok +( +$rou‹ +-> +m©chesU¾ +('/', +¬¿y +('method' => 'get')), 'array', '->matchesUrl() check "sf_method"„equirement case-insensitively'); + +48 + g$rou‹ + = +Ãw + +sfReque¡Rou‹ +('/', +¬¿y +(),‡rray('sf_method' => 'get')); + +49 + g$t +-> +i§_ok +( +$rou‹ +-> +m©chesU¾ +('/', +¬¿y +('method' => 'GET')), 'array', '->matchesUrl() check "sf_method"„equirement case-insensitively'); + + @lib/vendor/symfony/test/unit/routing/sfRouteTest.php + +1 +dŸg +('->matchesUrl()'); + +17 + g$rou‹ + = +Ãw + +sfRou‹ +('/'); + +18 + g$t +-> +is +( +$rou‹ +-> +m©chesU¾ +('/'), +¬¿y +(), '->matchesUrl()akes‡ URL‡s its first‡rgument'); + +19 + g$t +-> +is +( +$rou‹ +-> +m©chesU¾ +('/foo'), +çl£ +, '->matchesUrl()„eturns false ifhe„oute does‚ot match'); + +21 + g$rou‹ + = +Ãw + +sfRou‹ +('/', +¬¿y +('foo' => 'bar')); + +22 + g$t +-> +is +( +$rou‹ +-> +m©chesU¾ +('/'), +¬¿y +('foo' => 'bar'), '->matchesUrl()„eturns default values for…arameters‚ot inhe„oute'); + +24 + g$rou‹ + = +Ãw + +sfRou‹ +('/:b¬', +¬¿y +('foo' => 'bar')); + +25 + g$t +-> +is +( +$rou‹ +-> +m©chesU¾ +('/foob¬'), +¬¿y +('foo' => 'bar', 'bar' => 'foobar'), '->matchesUrl()„eturns variables fromhe…attern'); + +27 + g$rou‹ + = +Ãw + +sfRou‹ +('/:foo', +¬¿y +('foo' => 'bar')); + +28 + g$t +-> +is +( +$rou‹ +-> +m©chesU¾ +('/foob¬'), +¬¿y +('foo' => 'foobar'), '->matchesUrl() overrides default value with…attern value'); + +30 + g$rou‹ + = +Ãw + +sfRou‹ +('/:foo', +¬¿y +('foo' => 'bar')); + +31 + g$t +-> +is +( +$rou‹ +-> +m©chesU¾ +('/'), +¬¿y +('foo' => 'bar'), '->matchesUrl() matches„outes with‡n optional…arameter‡theƒnd'); + +33 + g$rou‹ + = +Ãw + +sfRou‹ +('/:foo', +¬¿y +('foo' => +nuÎ +)); + +34 + g$t +-> +is +( +$rou‹ +-> +m©chesU¾ +('/'), +¬¿y +('foo' => +nuÎ +), '->matchesUrl() matches„outes with‡n optional…arameter‡theƒnd,ƒven if it is‚ull'); + +36 + g$rou‹ + = +Ãw + +sfRou‹ +('/:foo', +¬¿y +('foo' => '')); + +37 + g$t +-> +is +( +$rou‹ +-> +m©chesU¾ +('/'), +¬¿y +('foo' => ''), '->matchesUrl() matches„outes with‡n optional…arameter‡theƒnd,ƒven if it isƒmpty'); + +39 + g$rou‹ + = +Ãw + +sfRou‹ +('/:foo/b¬', +¬¿y +('foo' => +nuÎ +)); + +40 + g$t +-> +is +( +$rou‹ +-> +m©chesU¾ +('//b¬'), +çl£ +, '->matchesUrl() does‚ot match„outes with‡nƒmpty…arameter‚ot‡theƒnd'); + +41 + g$t +-> +is +( +$rou‹ +-> +m©chesU¾ +('/b¬'), +çl£ +, '->matchesUrl() does‚ot match„outes with‡nƒmpty…arameter‚ot‡theƒnd'); + +43 + g$rou‹ + = +Ãw + +sfRou‹ +('/foo/:foo/b¬/:b¬', +¬¿y +('foo' => 'bar', 'bar' => 'foo')); + +44 + g$t +-> +is +( +$rou‹ +-> +m©chesU¾ +('/foo/b¬/b¬'), +¬¿y +('foo' => 'bar', 'bar' => 'foo'), '->matchesUrl() matches„outes with‡n optional…arameter‡theƒnd'); + +46 + g$rou‹ + = +Ãw + +sfRou‹ +('/:foo/:b¬', +¬¿y +('foo' => 'bar', 'bar' => 'foo')); + +47 + g$t +-> +is +( +$rou‹ +-> +m©chesU¾ +('/'), +¬¿y +('foo' => 'bar', 'bar' => 'foo'), '->matchesUrl() matches„outes with multiple optionals…arameters‡theƒnd'); + +49 + g$rou‹ + = +Ãw + +sfRou‹ +('/', +¬¿y +()); + +50 + g$rou‹ +-> +£tDeçuÉP¬am‘”s +( +¬¿y +('foo' => 'bar')); + +51 + g$t +-> +is +( +$rou‹ +-> +m©chesU¾ +('/'), +¬¿y +('foo' => 'bar'), '->matchesUrl() gets default…arameters fromhe„outing object if itƒxists'); + +53 + g$rou‹ + = +Ãw + +sfRou‹ +('/', +¬¿y +('foo' => 'foobar')); + +54 + g$rou‹ +-> +£tDeçuÉP¬am‘”s +( +¬¿y +('foo' => 'bar')); + +55 + g$t +-> +is +( +$rou‹ +-> +m©chesU¾ +('/'), +¬¿y +('foo' => 'foobar'), '->matchesUrl() overrides„outing default…arameters with„oute default…arameters'); + +57 + g$rou‹ + = +Ãw + +sfRou‹ +('/:foo', +¬¿y +('foo' => 'foobar')); + +58 + g$rou‹ +-> +£tDeçuÉP¬am‘”s +( +¬¿y +('foo' => 'bar')); + +59 + g$t +-> +is +( +$rou‹ +-> +m©chesU¾ +('/b¬foo'), +¬¿y +('foo' => 'barfoo'), '->matchesUrl() overrides„outing default…arameters with…attern…arameters'); + +61 + g$rou‹ + = +Ãw + +sfRou‹ +('/:foo', +¬¿y +(),‡rray('foo' => '\d+')); + +62 + g$t +-> +is +( +$rou‹ +-> +m©chesU¾ +('/b¬'), +çl£ +, '->matchesUrl()ƒnforces„equirements'); + +64 + g$rou‹ + = +Ãw + +sfRou‹ +('/:foo', +¬¿y +(),‡rray('foo' => '\w+')); + +65 + g$t +-> +is +( +$rou‹ +-> +m©chesU¾ +('/b¬'), +¬¿y +('foo' => 'bar'), '->matchesUrl()ƒnforces„equirements'); + +68 + g$t +-> +dŸg +('->matchesParameters()'); + +69 + g$rou‹ + = +Ãw + +sfRou‹ +('/', +¬¿y +()); + +70 + g$t +-> +is +( +$rou‹ +-> +m©chesP¬am‘”s +('¡ršg'), +çl£ +, '->matchesParameters()„eturns false ifhe‡rgument is‚ot‡n‡rray of…arameters'); + +72 + g$rou‹ + = +Ãw + +sfRou‹ +('/:foo'); + +73 + g$t +-> +is +( +$rou‹ +-> +m©chesP¬am‘”s +( +¬¿y +()), +çl£ +, '->matchesParameters()„eturns false if one ofhe…attern variable is‚ot…rovided'); + +75 + g$rou‹ + = +Ãw + +sfRou‹ +('/:foo', +¬¿y +('foo' => 'bar')); + +76 + g$t +-> +is +( +$rou‹ +-> +m©chesP¬am‘”s +( +¬¿y +()), +Œue +, '->matchesParameters() mergeshe default…arameters withhe…rovided…arameterso matchhe„oute'); + +78 + g$rou‹ + = +Ãw + +sfRou‹ +('/:foo'); + +79 + g$t +-> +is +( +$rou‹ +-> +m©chesP¬am‘”s +( +¬¿y +('foo' => 'b¬')), +Œue +, '->matchesParameters() matches if‡ll variables‡re given‡s…arameters'); + +81 + g$rou‹ + = +Ãw + +sfRou‹ +('/:foo'); + +82 + g$t +-> +is +( +$rou‹ +-> +m©chesP¬am‘”s +( +¬¿y +('foo' => '')), +Œue +, '->matchesParameters() matches if optional…arametersƒmpty'); + +83 + g$t +-> +is +( +$rou‹ +-> +m©chesP¬am‘”s +( +¬¿y +('foo' => +nuÎ +)), +Œue +, '->matchesParameters() matches if optional…arametersƒmpty'); + +91 + g$rou‹ + = +Ãw + +sfRou‹ +('/:foo'); + +92 + g$rou‹ +-> +£tDeçuÉP¬am‘”s +( +¬¿y +('foo' => 'bar')); + +93 + g$t +-> +is +( +$rou‹ +-> +m©chesP¬am‘”s +( +¬¿y +()), +Œue +, '->matchesParameters() mergeshe„outing default…arameters withhe…rovided…arameterso matchhe„oute'); + +95 + g$rou‹ + = +Ãw + +sfRou‹ +('/:foo', +¬¿y +(),‡rray('foo' => '\d+')); + +96 + g$t +-> +is +( +$rou‹ +-> +m©chesP¬am‘”s +( +¬¿y +('foo' => 'b¬')), +çl£ +, '->matchesParameters()ƒnforces„equirements'); + +98 + g$rou‹ + = +Ãw + +sfRou‹ +('/:foo', +¬¿y +(),‡rray('foo' => '\d+')); + +99 + g$t +-> +is +( +$rou‹ +-> +m©chesP¬am‘”s +( +¬¿y +('foo' => 12)), +Œue +, '->matchesParameters()ƒnforces„equirements'); + +101 + g$rou‹ + = +Ãw + +sfRou‹ +('/', +¬¿y +('foo' => 'bar')); + +102 + g$t +-> +is +( +$rou‹ +-> +m©chesP¬am‘”s +( +¬¿y +('foo' => 'foob¬')), +çl£ +, '->matchesParameters() checkshathere is‚o…arameterhat is‚ot‡…attern variable'); + +104 + g$rou‹ + = +Ãw + +sfRou‹ +('/', +¬¿y +('foo' => 'bar')); + +105 + g$t +-> +is +( +$rou‹ +-> +m©chesP¬am‘”s +( +¬¿y +('foo' => 'b¬')), +Œue +, '->matchesParameters() can override‡…arameterhat is‚ot‡…attern variable ifhe value ishe same‡she default one'); + +107 + g$rou‹ + = +Ãw + +sfRou‹ +('/:foo', +¬¿y +('bar' => 'foo')); + +108 + g$t +-> +is +( +$rou‹ +-> +m©chesP¬am‘”s +( +¬¿y +('foo' => 'b¬', 'b¬' => 'foo')), +Œue +, '->matchesParameters() can override‡…arameterhat is‚ot‡…attern variable ifhe value ishe same‡she default one'); + +110 + g$rou‹ + = +Ãw + +sfRou‹ +('/:foo'); + +111 + g$t +-> +is +( +$rou‹ +-> +m©chesP¬am‘”s +( +¬¿y +('foo' => 'b¬', 'b¬' => 'foo')), +Œue +, '->generate() matchesƒven ifhere‡reƒxtra…arameters'); + +113 + g$rou‹ + = +Ãw + +sfRou‹ +('/:foo', +¬¿y +(),‡¼ay(),‡¼ay('exŒa_·¿m‘”s_as_qu”y_¡ršg' => +çl£ +)); + +114 + g$t +-> +is +( +$rou‹ +-> +m©chesP¬am‘”s +( +¬¿y +('foo' => 'b¬', 'b¬' => 'foo')), +çl£ +, '->generate() does‚ot match ifhere‡reƒxtra…arameters ifƒxtra_parameters_as_query_string is seto false'); + +117 + g$t +-> +dŸg +('->generate()'); + +118 + g$rou‹ + = +Ãw + +sfRou‹ +('/:foo'); + +119 + g$t +-> +is +( +$rou‹ +-> +g’”©e +( +¬¿y +('foo' => 'bar')), '/bar', '->generate() generates‡ URL withhe given…arameters'); + +120 + g$rou‹ + = +Ãw + +sfRou‹ +('/:foo/:foobar'); + +121 + g$t +-> +is +( +$rou‹ +-> +g’”©e +( +¬¿y +('foo' => 'bar', 'foobar' => 'barfoo')), '/bar/barfoo', '->generate()„eplaces†onger variables first'); + +123 + g$rou‹ + = +Ãw + +sfRou‹ +('/:foo'); + +124 + g$t +-> +is +( +$rou‹ +-> +g’”©e +( +¬¿y +('foo' => '')), '/', '->generate() generates‡„oute if‡ variable isƒmpty'); + +125 + g$t +-> +is +( +$rou‹ +-> +g’”©e +( +¬¿y +('foo' => +nuÎ +)), '/', '->generate() generates‡„oute if‡ variable isƒmpty'); + +147 + g$rou‹ + = +Ãw + +sfRou‹ +('/:foo'); + +148 + g$t +-> +is +( +$rou‹ +-> +g’”©e +( +¬¿y +('foo' => 'bar', 'bar' => 'foo')), '/bar?bar=foo', '->generate() generatesƒxtra…arameters‡s‡ query string'); + +150 + g$rou‹ + = +Ãw + +sfRou‹ +('/:foo', +¬¿y +(),‡¼ay(),‡¼ay('exŒa_·¿m‘”s_as_qu”y_¡ršg' => +çl£ +)); + +151 + g$t +-> +is +( +$rou‹ +-> +g’”©e +( +¬¿y +('foo' => 'bar', 'bar' => 'foo')), '/bar', '->generate() ignoresƒxtra…arameters ifƒxtra_parameters_as_query_string is false'); + +154 + g$rou‹ + = +Ãw + +sfRou‹ +('/:foo', +¬¿y +(),‡¼ay(),‡¼ay('exŒa_·¿m‘”s_as_qu”y_¡ršg' => +Œue +)); + +155 + g$t +-> +is +( +$rou‹ +-> +g’”©e +( +¬¿y +('foo' => 'bar', 'bar' => '0')), '/bar?bar=0', '->generate()‡ddsƒxtra…arameters ifƒxtra_parameters_as_query_string isrue'); + +157 + g$rou‹ + = +Ãw + +sfRou‹ +('/:foo/:b¬', +¬¿y +('bar' => 'foo')); + +158 + g$t +-> +is +( +$rou‹ +-> +g’”©e +( +¬¿y +('foo' => 'bar')), '/bar', '->generate() generateshe shortest URL…ossible'); + +160 + g$rou‹ + = +Ãw + +sfRou‹ +('/:foo/:b¬', +¬¿y +('b¬' => 'foo'),‡¼ay(),‡¼ay('g’”©e_sh܋¡_u¾' => +çl£ +)); + +161 + g$t +-> +is +( +$rou‹ +-> +g’”©e +( +¬¿y +('foo' => 'bar')), '/bar/foo', '->generate() generateshe†ongest URL…ossible if generate_shortest_url is false'); + +164 + g$t +-> +dŸg +('->parseStarParameter()'); + +165 + g$rou‹ + = +Ãw + +sfRou‹ +('/foo/*'); + +166 + g$t +-> +is +( +$rou‹ +-> +m©chesU¾ +('/foo/foo/b¬/b¬/foo'), +¬¿y +('foo' => 'bar', 'bar' => 'foo'), '->parseStarParameter()…arses *‡s key/value…airs'); + +167 + g$t +-> +is +( +$rou‹ +-> +m©chesU¾ +('/foo/foo/foo.b¬'), +¬¿y +('foo' => 'foo.bar'), '->parseStarParameter() uses /‡she key/value separator'); + +168 + g$t +-> +is +( +$rou‹ +-> +m©chesU¾ +('/foo'), +¬¿y +(), '->parseStarParameter()„eturns‚o‡dditional…arameters ifhe * value isƒmpty'); + +170 + g$rou‹ + = +Ãw + +sfRou‹ +('/foo/*', +¬¿y +('module' => 'foo')); + +171 + g$t +-> +is +( +$rou‹ +-> +m©chesU¾ +('/foo/foo/b¬/moduË/b¬b¬'), +¬¿y +('foo' => 'bar', 'module' => 'foo'), '->parseStarParameter() cannot override special module/sction values'); + +173 + g$rou‹ + = +Ãw + +sfRou‹ +('/foo/*', +¬¿y +('foo' => 'foo')); + +174 + g$t +-> +is +( +$rou‹ +-> +m©chesU¾ +('/foo/foo/b¬'), +¬¿y +('foo' => 'bar'), '->parseStarParameter() can override‡ default value'); + +176 + g$rou‹ + = +Ãw + +sfRou‹ +('/:foo/*'); + +177 + g$t +-> +is +( +$rou‹ +-> +m©chesU¾ +('/b¬/foo/b¬b¬'), +¬¿y +('foo' => 'bar'), '->parseStarParameter() cannot override…attern variables'); + +179 + g$rou‹ + = +Ãw + +sfRou‹ +('/foo/*/bar'); + +180 + g$t +-> +is +( +$rou‹ +-> +m©chesU¾ +('/foo/foo/b¬/b¬'), +¬¿y +('foo' => 'bar'), '->parseStarParameter() is‡bleo…arse‡ star inhe middle of‡„ule'); + +181 + g$t +-> +is +( +$rou‹ +-> +m©chesU¾ +('/foo/b¬'), +¬¿y +(), '->parseStarParameter() is‡bleo…arse‡ star if it isƒmpty'); + +184 + g$t +-> +dŸg +('->generateStarParameter()'); + +185 + g$rou‹ + = +Ãw + +sfRou‹ +('/foo/:foo/*'); + +186 + g$t +-> +is +( +$rou‹ +-> +g’”©e +( +¬¿y +('foo' => 'bar', 'bar' => 'foo')), '/foo/bar/bar/foo', '->generateStarParameter()„eplaces * with‡llhe key/pair valueshat‡re‚ot variables'); + +189 + g$t +-> +dŸg +('customoken'); + +191 þas  + cMyRou‹ + +ex‹nds + + msfRou‹ + + +193 +´Ùeùed + +funùiÚ + + $tok’izeBufãrBefÜe +(& +$bufãr +, & +$tok’s +, & +$aá”AS•¬©Ü +, & +$cu¼’tS•¬©Ü +) + +195 ià( +$aá”AS•¬©Ü + && + `´eg_m©ch +('#^=('. +$this +-> +ÝtiÚs +['v¬ŸbË_»gex'].')#', +$bufãr +, +$m©ch +)) + +198 +$this +-> +tok’s +[] = + `¬¿y +('Ïb–', +$cu¼’tS•¬©Ü +, +$m©ch +[0], $match[1]); + +200 +$cu¼’tS•¬©Ü + = ''; + +201 +$bufãr + = + `sub¡r +($bufãr, + `¡¾’ +( +$m©ch +[0])); + +202 +$aá”AS•¬©Ü + = +çl£ +; + +206  +çl£ +; + +210 +´Ùeùed + +funùiÚ + + $compžeFÜLab– +( +$£·¿tÜ +, +$Çme +, +$v¬ŸbË +) + +212 ià(! + `is£t +( +$this +-> +»quœem’ts +[ +$v¬ŸbË +])) + +214 +$this +-> +»quœem’ts +[ +$v¬ŸbË +] = $this-> +ÝtiÚs +['variable_content_regex']; + +217 +$this +-> +£gm’ts +[] = + `´eg_quÙe +( +$£·¿tÜ +, '#'). +$v¬ŸbË +.$£·¿tÜ.'(?P<'.$v¬ŸbË.'>'.$this-> +»quœem’ts +[$variable].')'; + +218 +$this +-> +v¬ŸbËs +[ +$v¬ŸbË +] = +$Çme +; + +220 ià(! + `is£t +( +$this +-> +deçuÉs +[ +$v¬ŸbË +])) + +222 +$this +-> +fœ¡O±iÚ® + = + `couÁ +($this-> +£gm’ts +); + +224 + } +} + +226 +´Ùeùed + +funùiÚ + + $g’”©eFÜLab– +( +$ÝtiÚ® +, +$¬ams +, +$£·¿tÜ +, +$Çme +, +$v¬ŸbË +) + +228 ià(! + `em±y +( +$¬ams +[ +$v¬ŸbË +]è&& (! +$ÝtiÚ® + || ! + `is£t +( +$this +-> +deçuÉs +[$variable]) || $tparams[$variable] != $this->defaults[$variable])) + +230  +$v¬ŸbË + . '/' . + `u¾’code +( +$¬ams +[$variable]); + +232 + } +} + +235 + g$rou‹ + = +Ãw + +MyRou‹ +('/=foo'); + +236 + g$t +-> +is +( +$rou‹ +-> +m©chesU¾ +('/foo/b¬'), +¬¿y +('foo' => 'bar'), '->tokenizeBufferBefore()‡llowso‡dd‡ customoken'); + +237 + g$t +-> +is +( +$rou‹ +-> +g’”©e +( +¬¿y +('foo' => 'bar')), '/foo/bar', '->compileForLabel()‡dds†ogico generate‡„oute for‡ customoken'); + +239 þas  + cCompžeCheckRou‹ + +ex‹nds + + msfRou‹ + + +241 +public + +funùiÚ + + $isCompžed +() + +243  +$this +-> +compžed +; + +245 + } +} + +248 + g$t +-> +dŸg +('state checking'); + +249 + g$rou‹ + = +Ãw + +CompžeCheckRou‹ +('/foo'); + +250 + g$t +-> +is +( +$rou‹ +-> +isCompžed +(), +çl£ +, '__construct() creates‡n uncompiled instanceof sfRoute'); + +251 + g$t +-> +is +( +$rou‹ +-> +isBound +(), +çl£ +, '->isBound()„eturns false before binding'); + +252 + g$rou‹ +-> +bšd +( +nuÎ +, +¬¿y +('foo' => 'bar')); + +253 + g$t +-> +is +( +$rou‹ +-> +isBound +(), +Œue +, '->isBound()„eturnsrue‡fter binding'); + +254 + g$t +-> +is +( +$rou‹ +-> +g‘P¬am‘”s +(), +¬¿y +('foo' => 'bar'), '->getParameters() compileshe„oute‡nd„eturns…arameters'); + +255 + g$t +-> +is +( +$rou‹ +-> +isCompžed +(), +Œue +, '->getParameters() compileshe„oute‡nd„eturns…arameters'); + +257 + g$rou‹ + = +Ãw + +CompžeCheckRou‹ +('/foo'); + +258 + g$t +-> +is +( +$rou‹ +-> +g‘P©‹º +(), '/foo', '->getPattern() compileshe„oute‡nd„eturnshe…attern'); + +259 + g$t +-> +is +( +$rou‹ +-> +isCompžed +(), +Œue +, '->getPattern() compileshe„oute‡nd„eturns…attern'); + +261 + g$rou‹ + = +Ãw + +CompžeCheckRou‹ +('/foo', +¬¿y +('default' => 'bar')); + +262 + g$t +-> +is +( +$rou‹ +-> +g‘DeçuÉs +(), +¬¿y +('default' => 'bar'), '->getDefaults() compileshe„oute‡nd„eturnshe defaults'); + +263 + g$t +-> +is +( +$rou‹ +-> +isCompžed +(), +Œue +, '->getDefaults() compileshe„oute‡nd„eturns defaults'); + +265 + g$rou‹ + = +Ãw + +CompžeCheckRou‹ +('/foo', +¬¿y +(),‡rray('requirements' => 'bar')); + +266 + g$t +-> +is +( +$rou‹ +-> +g‘Requœem’ts +(), +¬¿y +('requirements' => 'bar'), '->getRequirements() compileshe„oute‡nd„eturnshe„equirements'); + +267 + g$t +-> +is +( +$rou‹ +-> +isCompžed +(), +Œue +, '->getRequirements() compileshe„oute‡nd„eturns„equirements'); + +269 + g$rou‹ + = +Ãw + +CompžeCheckRou‹ +('/foo', +¬¿y +(),‡rray(),‡rray('options' => 'bar')); + +270 + g$ÝtiÚs + = +$rou‹ +-> +g‘O±iÚs +(); + +271 + g$t +-> +is +( +$ÝtiÚs +['options'], 'bar', '->getOptions() compileshe„oute‡nd„eturnshe compiled options'); + +272 + g$t +-> +is +( +couÁ +( +$ÝtiÚs +è> 1, +Œue +, '->getOptions() compileshe„oute‡nd„eturns many compiled options'); + +273 + g$t +-> +is +( +$rou‹ +-> +isCompžed +(), +Œue +, '->getOptions() compileshe„oute‡nd„eturns compiled options'); + + @lib/vendor/symfony/test/unit/sfContextMock.class.php + +1 +£ssiÚP©h + = +sys_g‘_‹mp_dœ +().'/£ssiÚs_'. +¿nd +(11111, 99999); + +35 + m£lf +:: +$š¡ªû +-> +¡Üage + = +Ãw + +sfSessiÚTe¡StÜage +( +¬¿y +('£ssiÚ_·th' => +£lf +::$š¡ªû-> +£ssiÚP©h +)); + +37 + m£lf +:: +$š¡ªû +-> +di¥©ch” + = +Ãw + +sfEv’tDi¥©ch” +(); + +39 +fܗch + ( +$çùܛs + +as + +$ty³ + => +$þass +) + +41 +£lf +:: +$š¡ªû +-> +šjeù +( +$ty³ +, +$þass +); + +45  + m£lf +:: +$š¡ªû +; + +48 +public + +funùiÚ + + $__de¡ruù +() + +50 +sfToÞk™ +:: + `þ—rDœeùÜy +( +$this +-> +£ssiÚP©h +); + +51 + } +} + +53  +public + +funùiÚ + + $hasIn¡ªû +() + +55  +Œue +; + +56 + } +} + +58 +public + +funùiÚ + + $g‘Ev’tDi¥©ch” +() + +60  +£lf +:: +$š¡ªû +-> +di¥©ch” +; + +61 + } +} + +63 +public + +funùiÚ + + $g‘ModuËName +() + +66 + } +} + +68 +public + +funùiÚ + + $g‘AùiÚName +() + +71 + } +} + +73 +public + +funùiÚ + + $g‘CÚfigu¿tiÚ +() + +75  +$this +-> +cÚfigu¿tiÚ +; + +76 + } +} + +78 +public + +funùiÚ + + $g‘Reque¡ +() + +80  +$this +-> +»que¡ +; + +81 + } +} + +83 +public + +funùiÚ + + $g‘Re¥Ú£ +() + +85  +$this +-> +»¥Ú£ +; + +86 + } +} + +88 +public + +funùiÚ + + $g‘Routšg +() + +90  +$this +-> +routšg +; + +91 + } +} + +93 +public + +funùiÚ + + $g‘StÜage +() + +95  +$this +-> +¡Üage +; + +96 + } +} + +98 +public + +funùiÚ + + $g‘U£r +() + +100  +$this +-> +u£r +; + +101 + } +} + +103 +public + +funùiÚ + + $g‘CڌÞËr +() + +105  +$this +-> +cڌÞËr +; + +106 + } +} + +108 +public + +funùiÚ + +šjeù +( +$ty³ +, +$þass +, +$·¿m‘”s + = + $¬¿y +()) + +110  +$ty³ +) + +113 +$objeù + = +Ãw + + `$þass +( +$this +-> +di¥©ch” +, +nuÎ +, +$·¿m‘”s +); + +116 +$objeù + = +Ãw + + `$þass +( +$this +-> +di¥©ch” +, +$·¿m‘”s +); + +119 +$objeù + = +Ãw + + `$þass +( +$this +-> +di¥©ch” +, $this-> +routšg +, +$·¿m‘”s +); + +122 +$objeù + = +Ãw + + `$þass +( +$this +, +$·¿m‘”s +); + +125 +$this +-> +$ty³ + = +$objeù +; + +126 + } +} + + @lib/vendor/symfony/test/unit/sfEventDispatcherTest.class.php + +1 +t + = +$‹¡Objeù +; + +21 +public + +funùiÚ + + $ÏunchTe¡s +( +$di¥©ch” +, +$objeù +, +$þass +) + +23 +$this +-> +t +-> + `dŸg +('New methods via sfEventDispatcher'); + +24 +$di¥©ch” +-> + `cÚÃù +( +$þass +.'.m‘hod_nÙ_found', + `¬¿y +('myEventDispatcherTest', 'newMethod')); + +25 +$this +-> +t +-> + `is +( +$objeù +-> + `ÃwM‘hod +('ok'), 'ok', '__call()‡ccepts‚ew methods via sfEventDispatcher'); + +27 +Œy + + +29 +$objeù +-> + `nÚexi¡ªtm‘hodÇme +(); + +30 +$this +-> +t +-> + `çž +('__call()hrows‡nƒxception ifhe method does‚otƒxist‡s‡ sfEventDispatcher†istener'); + +32 + `ÿtch + ( +sfExû±iÚ + +$e +) + +34 +$this +-> +t +-> + `·ss +('__call()hrows‡nƒxception ifhe method does‚otƒxist‡s‡ sfEventDispatcher†istener'); + +36 + } +} + +39 þas  + cmyEv’tDi¥©ch”Te¡ + + +41  +public + +funùiÚ + + $ÃwM‘hod +( +sfEv’t + +$ev’t +) + +43 ià( +$ev’t +['method'] == 'newMethod') + +45 +$¬gum’ts + = +$ev’t +['arguments']; + +46 +$ev’t +-> + `£tR‘uºV®ue +( +$¬gum’ts +[0]); + +48  +Œue +; + +51 + } +} + + @lib/vendor/symfony/test/unit/sfNoRouting.class.php + +1 + `m”geA¼ays +($this-> +deçuÉP¬am‘”s +, +$_GET +); + +27 +$aùiÚ + = + `¥rštf +('%s/%s', +$·¿m‘”s +['module'], $parameters['action']); + +30 + `un£t +( +$·¿m‘”s +['module'], $parameters['action']); + +31 + `ksÜt +( +$·¿m‘”s +); + +32 +$·¿m‘”s + = + `couÁ +($·¿m‘”sè? '?'. + `h‰p_bužd_qu”y +($·¿m‘”s, +nuÎ +, '&') : ''; + +34  + `¥rštf +('%s%s', +$aùiÚ +, +$·¿m‘”s +); + +40 +public + +funùiÚ + + `g’”©e +( +$Çme +, +$·¿ms + = + `¬¿y +(), +$absÞu‹ + = +çl£ +) + +42 +$·¿m‘”s + = +$this +-> + `m”geA¼ays +($this-> +deçuÉP¬am‘”s +, +$·¿ms +); + +43 ià( +$this +-> + `g‘DeçuÉP¬am‘” +('moduË'è=ð +$·¿m‘”s +['module']) + +45 + `un£t +( +$·¿m‘”s +['module']); + +47 ià( +$this +-> + `g‘DeçuÉP¬am‘” +('aùiÚ'è=ð +$·¿m‘”s +['action']) + +49 + `un£t +( +$·¿m‘”s +['action']); + +52 +$·¿m‘”s + = + `h‰p_bužd_qu”y +($·¿m‘”s, +nuÎ +, '&'); + +54  +$this +-> + `fixG’”©edU¾ +('/'.( +$·¿m‘”s + ? '?'.$·¿m‘” : ''), +$absÞu‹ +); + +55 + } +} + +60 +public + +funùiÚ + + $·r£ +( +$u¾ +) + +62  + `¬¿y +(); + +63 + } +} + +68 +public + +funùiÚ + + $g‘Rou‹s +() + +70  + `¬¿y +(); + +71 + } +} + +76 +public + +funùiÚ + + $£tRou‹s +( +$rou‹s +) + +78  + `¬¿y +(); + +79 + } +} + +84 +public + +funùiÚ + + $hasRou‹s +() + +86  +çl£ +; + +87 + } +} + +92 +public + +funùiÚ + + $þ—rRou‹s +() + +94 + } +} + +96 +´Ùeùed + +funùiÚ + + $m”geA¼ays +( +$¬r1 +, +$¬r2 +) + +98 + `fܗch + ( +$¬r2 + +as + +$key + => +$v®ue +) + +100 +$¬r1 +[ +$key +] = +$v®ue +; + +103  +$¬r1 +; + +104 + } +} + + @lib/vendor/symfony/test/unit/sfParameterHolderTest.class.php + +1 +t + = +$‹¡Objeù +; + +21 +public + +funùiÚ + + `ÏunchTe¡s +( +$objeù +, +$m‘hodName + = 'parameter') + +23 +$t + = +$this +-> +t +; + +25 +$hasM‘hod + = 'has'. + `ucfœ¡ +( +$m‘hodName +); + +26 +$g‘M‘hod + = 'g‘'. + `ucfœ¡ +( +$m‘hodName +); + +27 +$£tM‘hod + = '£t'. + `ucfœ¡ +( +$m‘hodName +); + +28 +$hÞd”M‘hod + = 'g‘'. + `ucfœ¡ +( +$m‘hodName +).'Holder'; + +30 +$t +-> + `dŸg +( + `ucfœ¡ +( +$m‘hodName +).' holder…roxy'); + +32 +$Çme¥aûd + = +$objeù +-> + `$hÞd”M‘hod +(è +š¡ªûof + +sfName¥aûdP¬am‘”HÞd” + ? +Œue + : +çl£ +; + +34 +$t +-> + `i§_ok +( +$objeù +-> + `$hÞd”M‘hod +(), +$Çme¥aûd + ? 'sfNamespacedParameterHolder' : 'sfParameterHolder', "->$holderMethod()„eturns‡…arameter holder instance"); + +35 +$t +-> + `is +( +$objeù +-> + `$hasM‘hod +('foo'), +çl£ +, "->$hasMethod()„eturns false ifhe $methodName does‚otƒxist"); + +36 +$t +-> + `is +( +$objeù +-> + `$g‘M‘hod +('foo', 'default'), 'default', "->$getMethod()„eturnshe default value if $methodName does‚otƒxist"); + +37 +$objeù +-> + `$£tM‘hod +('foo', 'bar'); + +38 +$t +-> + `is +( +$objeù +-> + `$hasM‘hod +('foo'), +Œue +, "->$hasMethod()„eturnsrue ifhe $methodNameƒxists"); + +39 +$t +-> + `is +( +$objeù +-> + `$hasM‘hod +('foo'), $objeù-> + `$hÞd”M‘hod +()-> + `has +('foo'), "->$hasMethod() is‡…roxy method"); + +40 +$t +-> + `is +( +$objeù +-> + `$g‘M‘hod +('foo'), 'bar', "->$getMethod()„eturnshe value ofhe $methodName"); + +41 +$t +-> + `is +( +$objeù +-> + `$g‘M‘hod +('foo'), $objeù-> + `$hÞd”M‘hod +()-> + `g‘ +('foo'), "->$getMethod() is‡…roxy method"); + +42 +$t +-> + `is +( +$objeù +-> + `$g‘M‘hod +('foo', 'default'), 'bar', "->$getMethod() does‚ot„eturnhe default value ifhe $methodNameƒxists"); + +44 ià( +$Çme¥aûd +) + +46 +$objeù +-> + `$£tM‘hod +('foo1', 'bar1', 'mynamespace'); + +47 +$t +-> + `is +( +$objeù +-> + `$hasM‘hod +('foo1'), +çl£ +, "->$hasMethod()akes‡‚amespace‡s its second…arameter"); + +48 +$t +-> + `is +( +$objeù +-> + `$hasM‘hod +('foo1', 'myÇme¥aû'), +Œue +, "->$hasMethod()akes‡‚amespace‡s its second…arameter"); + +49 +$t +-> + `is +( +$objeù +-> + `$g‘M‘hod +('foo1', 'default', 'mynamespace'), 'bar1', "->$getMethod()akes‡‚amespace‡s itshird…arameter"); + +52 +$objeù +-> + `$£tM‘hod +('foo2', 'bar2'); + +53 +$objeù +-> + `$hÞd”M‘hod +()-> + `£t +('foo3', 'bar3'); + +54 +$t +-> + `is +( +$objeù +-> + `$g‘M‘hod +('foo2'), $objeù-> + `$hÞd”M‘hod +()-> + `g‘ +('foo2'), "->$setMethod() is‡…roxy method"); + +55 +$t +-> + `is +( +$objeù +-> + `$g‘M‘hod +('foo3'), $objeù-> + `$hÞd”M‘hod +()-> + `g‘ +('foo3'), "->$setMethod() is‡…roxy method"); + +56 + } +} + + @lib/vendor/symfony/test/unit/storage/sfCacheSessionStorageTest.php + +1 +sk +('APC mu¡ b’abË oÀCLIØruÀthe£e¡s', +$¶ª +); + +30 + gŒy + + +32 + g$¡Üage + = +Ãw + +sfCacheSessiÚStÜage +(); + +33 + g$t +-> +çž +('->__construct() does‚othrow‡nƒxception when‚ot…rovided‡ cache option'); + +35 + $ÿtch + ( +Inv®idArgum’tExû±iÚ + +$e +) + +37 +$t +-> + `·ss +('->__construct()hrows‡nƒxception when‚ot…rovided‡ cache option'); + +38 + } +} + +41 + g$¡Üage + = +Ãw + +sfCacheSessiÚStÜage +( +¬¿y +('cache' =>‡rray('class' => 'sfAPCCache', 'param' =>‡rray()))); + +42 + g$t +-> +ok +( +$¡Üage + +š¡ªûof + +sfStÜage +, '->__construct() is‡n instance of sfStorage'); + +44 + g$¡Üage +-> +wr™e +('test', 123); + +46 + g$t +-> +is +( +$¡Üage +-> +»ad +('test'), 123, '->read() can„ead datahat has been writteno storage'); + +49 + g$ÞdSessiÚD©a + = 'foo:bar'; + +50 + g$key + = +md5 +( +$ÞdSessiÚD©a +); + +52 + g$¡Üage +-> +wr™e +( +$key +, +$ÞdSessiÚD©a +); + +53 + g$£ssiÚ_id + = +£ssiÚ_id +(); + +54 + g$¡Üage +-> +»g’”©e +( +çl£ +); + +55 + g$t +-> +is +( +$¡Üage +-> +»ad +( +$key +), +$ÞdSessiÚD©a +, '->regenerate()„egeneratedhe session with‡ different session id'); + +56 + g$t +-> +i¢t +( +£ssiÚ_id +(), +$£ssiÚ_id +, '->regenerate()„egeneratedhe session with‡ different session id'); + +58 + g$¡Üage +-> +»g’”©e +( +Œue +); + +59 + g$t +-> +i¢t +( +$¡Üage +-> +»ad +( +$key +), +$ÞdSessiÚD©a +, '->regenerate()„egeneratedhe session with‡ different session id‡nd destroyed data'); + +60 + g$t +-> +i¢t +( +£ssiÚ_id +(), +$£ssiÚ_id +, '->regenerate()„egeneratedhe session with‡ different session id'); + +62 + g$¡Üage +-> +»move +( +$key +); + +63 + g$t +-> +is +( +$¡Üage +-> +»ad +( +$key +), +nuÎ +, '->remove()„emoves data fromhe storage'); + +66 + g$¡Üage +-> +shutdown +(); + + @lib/vendor/symfony/test/unit/storage/sfMySQLStorageTest.php + +1 +sk +('MysqÈex‹nsiÚ mu¡ blßded', +$¶ª +); + +25 + g$mysql_cÚfig + = +¬¿y +( + +31 ià(! + $is£t +( +$mysql_cÚfig +)) + +33 +$t +-> + `sk +('MysqÈüed’tŸl ÃededØruÀthe£e¡s', +$¶ª +); + +35 + } +} + +37 + gŒy + + +40 + g$d©aba£ + = +Ãw + +sfMySQLD©aba£ +( +$mysql_cÚfig +); + +41 + g$cÚÃùiÚ + = +$d©aba£ +-> +g‘Resourû +(); + +43 + $ÿtch + ( +sfD©aba£Exû±iÚ + +$e +) + +45 +$t +-> + `dŸg +( +$e +-> + `g‘Mes§ge +()); + +46 +$t +-> + `sk +('UÇbˁØcÚÃùØMySQL d©aba£, skpšg', +$¶ª +); + +48 + } +} + +51 +mysql_qu”y +('DROP DATABASE IF EXISTS sf_mysql_¡Üage_un™_‹¡', +$cÚÃùiÚ +); + +52 +mysql_qu”y +('CREATE DATABASE sf_mysql_¡Üage_un™_‹¡', +$cÚÃùiÚ +è +Ü + + g$t +-> +çž +('Cannot create database sf_mysql_storage_unit_test'); + +53 +mysql_£Ëù_db +('sf_mysql_¡Üage_un™_‹¡', +$cÚÃùiÚ +); + +54 +mysql_qu”y +("CREATE TABLE `session` ( + +55 ` +£ss_id +` + $v¬ch¬ +(40è +NOT + +NULL + +PRIMARY + +KEY +, + +56 ` +£ss_time +` (10è +NOT + +NULL +  '0', + +57 ` +£ss_d©a +` +‹xt + +cÞϋ + +utf8_unicode_ci + + +58 è +ENGINE += +MyISAM +", $connection) + +59 +Ü + +$t +-> + `çž +('Can‚ot createable session'); + +61 + `ši_£t +('session.use_cookies', 0); + +62 +$£ssiÚ_id + = "1"; + +64 +$¡Üage + = +Ãw + + `sfMySQLSessiÚStÜage +( + `¬¿y +( + +66 '£ssiÚ_id' => +$£ssiÚ_id +, + +67 'd©aba£' => +$d©aba£ +) + +70 +$t +-> + `ok +( +$¡Üage + +š¡ªûof + +sfStÜage +, 'sfMySQLSessionStorage is‡n instance of sfStorage'); + +71 +$t +-> + `ok +( +$¡Üage + +š¡ªûof + +sfD©aba£SessiÚStÜage +, 'sfMySQLSessionStorage is‡n instance of sfDatabaseSessionStorage'); + +74 +$ÞdSessiÚD©a + = 'foo:bar'; + +75 +$¡Üage +-> + `£ssiÚWr™e +( +$£ssiÚ_id +, +$ÞdSessiÚD©a +); + +76 +$¡Üage +-> + `»g’”©e +( +çl£ +); + +78 +$ÃwSessiÚD©a + = 'foo:bar:baz'; + +79 +$¡Üage +-> + `£ssiÚWr™e +( + `£ssiÚ_id +(), +$ÃwSessiÚD©a +); + +80 +$t +-> + `i¢t +( + `£ssiÚ_id +(), +$£ssiÚ_id +, 'regenerate()„egeneratedhe session with‡ different session id'); + +83 +$»suÉ + = + `mysql_qu”y +( + `¥rštf +('SELECT sess_d©¨FROM sessiÚ WHERE sess_id = "%s"', +$£ssiÚ_id +), +$cÚÃùiÚ +); + +84 +$t +-> + `is +( + `mysql_num_rows +( +$»suÉ +), 1, 'regenerate() has kept destroyed old session'); + +85 +$rSessiÚD©a + = + `li¡ +( +$thisSessD©a +èð + `mysql_ãtch_row +( +$»suÉ +); + +86 +$t +-> + `is +( +$rSessiÚD©a +[0], +$ÞdSessiÚD©a +, 'regenerate() has kept destroyed old session data'); + +89 +$»suÉ + = + `mysql_qu”y +( + `¥rštf +('SELECT sess_d©¨FROM sessiÚ WHERE sess_id = "%s"', + `£ssiÚ_id +()), +$cÚÃùiÚ +); + +90 +$t +-> + `is +( + `mysql_num_rows +( +$»suÉ +), 1, 'regenerate() has created‡‚ew session„ecord'); + +91 +$rSessiÚD©a + = + `li¡ +( +$thisSessD©a +èð + `mysql_ãtch_row +( +$»suÉ +); + +92 +$t +-> + `is +( +$rSessiÚD©a +[0], +$ÃwSessiÚD©a +, 'regenerate() has created‡‚ew„ecord with correct data'); + +94 +$£ssiÚ_id + = + `£ssiÚ_id +(); + +97 +$»suÉ + = + `mysql_qu”y +( + `¥rštf +('SELECT sess_d©¨FROM sessiÚ WHERE sess_id = "%s"', +$£ssiÚ_id +), +$cÚÃùiÚ +); + +98 + `li¡ +( +$thisSessD©a +èð + `mysql_ãtch_row +( +$»suÉ +); + +99 +$t +-> + `is +( + `mysql_num_rows +( +$»suÉ +), 1, 'session is stored inhe database'); + +100 +$t +-> + `is +( +$thisSessD©a +, +$ÃwSessiÚD©a +, 'session variables‡re stored inhe database'); + +102 + `mysql_ä“_»suÉ +( +$»suÉ +); + +103 + `un£t +( +$thisSessD©a +, +$»suÉ +); + +106 +Œy + + +108 +$»Œ›ved_d©a + = +$¡Üage +-> + `£ssiÚR—d +( +$£ssiÚ_id +); + +109 +$t +-> + `·ss +('sessionRead() does‚othrow‡nƒxception'); + +110 + } +} + +111 + $ÿtch + ( +Exû±iÚ + +$e +) + +113 +$t +-> + `çž +('sessionRead() does‚othrow‡nƒxception'); + +114 + } +} + +115 + g$t +-> +is +( +$»Œ›ved_d©a +, +$ÃwSessiÚD©a +, 'sessionRead()„eads session data'); + +118 + g$Ùh”SessiÚD©a + = 'foo:foo:foo'; + +119 + gŒy + + +121 + g$wr™e + = +$¡Üage +-> +£ssiÚWr™e +( +$£ssiÚ_id +, +$Ùh”SessiÚD©a +); + +122 + g$t +-> +·ss +('sessionWrite() does‚othrow‡nƒxception'); + +124 + $ÿtch + ( +Exû±iÚ + +$e +) + +126 +$t +-> + `çž +('sessionWrite() does‚othrow‡nƒxception'); + +127 + } +} + +129 + g$t +-> +ok +( +$wr™e +, 'sessionWrite()„eturnsrue'); + +130 + g$t +-> +is +( +$¡Üage +-> +£ssiÚR—d +( +$£ssiÚ_id +), +$Ùh”SessiÚD©a +, 'sessionWrite() wrote session data'); + +133 + gŒy + + +135 + g$¡Üage +-> +£ssiÚDe¡roy +( +$£ssiÚ_id +); + +136 + g$t +-> +·ss +('sessionDestroy() does‚othrow‡nƒxception'); + +138 + $ÿtch + ( +Exû±iÚ + +$e +) + +140 +$t +-> + `çž +('sessionDestroy() does‚othrow‡nƒxception'); + +141 + } +} + +143 + g$»suÉ + = +mysql_qu”y +( +¥rštf +('SELECT COUNT(£ss_idèFROM sessiÚ WHERE sess_id = "%s"', +$£ssiÚ_id +), +$cÚÃùiÚ +); + +145 +li¡ +( +$couÁ +èð +mysql_ãtch_row +( +$»suÉ +); + +146 + g$t +-> +is +( +$couÁ +, 0, 'session is„emoved fromhe database'); + +148 +mysql_ä“_»suÉ +( +$»suÉ +); + +149 +un£t +( +$couÁ +, +$»suÉ +); + + @lib/vendor/symfony/test/unit/storage/sfMySQLiStorageTest.php + +1 +sk +('Mysql˜ex‹nsiÚ mu¡ blßded', +$¶ª +); + +26 + g$mysqli_cÚfig + = +¬¿y +( + +32 ià(! + $is£t +( +$mysqli_cÚfig +)) + +34 +$t +-> + `sk +('MysqÈüed’tŸl ÃededØruÀthe£e¡s', +$¶ª +); + +37 + } +} + +39 + gŒy + + +42 + g$d©aba£ + = +Ãw + +sfMySQLiD©aba£ +( +$mysqli_cÚfig +); + +43 + g$cÚÃùiÚ + = +$d©aba£ +-> +g‘Resourû +(); + +45 + $ÿtch + ( +sfD©aba£Exû±iÚ + +$e +) + +47 +$t +-> + `dŸg +( +$e +-> + `g‘Mes§ge +()); + +48 +$t +-> + `sk +('UÇbˁØcÚÃùØMySQL d©aba£, skpšg', +$¶ª +); + +50 + } +} + +53 +mysqli_qu”y +( +$cÚÃùiÚ +, 'DROP DATABASE IF EXISTS sf_mysqli_storage_unit_test'); + +54 +mysqli_qu”y +( +$cÚÃùiÚ +, 'CREATE DATABASE sf_mysqli_¡Üage_un™_‹¡'è +Ü + + g$t +-> +çž +('Cannot create database sf_mysqli_storage_unit_test'); + +55 +mysqli_£Ëù_db +( +$cÚÃùiÚ +, 'sf_mysqli_storage_unit_test'); + +56 +mysqli_qu”y +( +$cÚÃùiÚ +, "CREATE TABLE `session` ( + +57 ` +£ss_id +` + $v¬ch¬ +(40è +NOT + +NULL + +PRIMARY + +KEY +, + +58 ` +£ss_time +` (10è +NOT + +NULL +  '0', + +59 ` +£ss_d©a +` +‹xt + +cÞϋ + +utf8_unicode_ci + + +60 è +ENGINE += +MyISAM +") + +61 +Ü + +$t +-> + `çž +('Can‚ot createable session'); + +63 + `ši_£t +('session.use_cookies', 0); + +64 +$£ssiÚ_id + = "1"; + +66 +$¡Üage + = +Ãw + + `sfMySQLiSessiÚStÜage +( + `¬¿y +( + +68 '£ssiÚ_id' => +$£ssiÚ_id +, + +69 'd©aba£' => +$d©aba£ +) + +72 +$t +-> + `ok +( +$¡Üage + +š¡ªûof + +sfStÜage +, 'sfMySQLSessionStorage is‡n instance of sfStorage'); + +73 +$t +-> + `ok +( +$¡Üage + +š¡ªûof + +sfD©aba£SessiÚStÜage +, 'sfMySQLSessionStorage is‡n instance of sfDatabaseSessionStorage'); + +76 +$¡Üage +-> + `»g’”©e +( +çl£ +); + +77 +$t +-> + `i¢t +( + `£ssiÚ_id +(), +$£ssiÚ_id +, 'regenerate()„egeneratedhe session id'); + +78 +$£ssiÚ_id + = + `£ssiÚ_id +(); + +81 +$_SESSION +['foo'] = 'bar'; + +82 +$_SESSION +['bar'] = 'foo'; + +83 + `un£t +( +$_SESSION +['foo']); + +84 +$£ssiÚ_d©a + = + `£ssiÚ_’code +(); + +87 + `£ssiÚ_wr™e_þo£ +(); + +90 +$»suÉ + = + `mysqli_qu”y +( +$cÚÃùiÚ +, + `¥rštf +('SELECT sess_d©¨FROM sessiÚ WHERE sess_id = "%s"', +$£ssiÚ_id +)); + +91 + `li¡ +( +$thisSessD©a +èð + `mysqli_ãtch_row +( +$»suÉ +); + +92 +$t +-> + `is +( + `mysqli_num_rows +( +$»suÉ +), 1, 'session is stored inhe database'); + +93 +$t +-> + `is +( +$thisSessD©a +, +$£ssiÚ_d©a +, 'session variables‡re stored inhe database'); + +95 + `mysqli_ä“_»suÉ +( +$»suÉ +); + +96 + `un£t +( +$thisSessD©a +, +$»suÉ +); + +99 +Œy + + +101 +$»Œ›ved_d©a + = +$¡Üage +-> + `£ssiÚR—d +( +$£ssiÚ_id +); + +102 +$t +-> + `·ss +('sessionRead() does‚othrow‡nƒxception'); + +103 + } +} + +104 + $ÿtch + ( +Exû±iÚ + +$e +) + +106 +$t +-> + `çž +('sessionRead() does‚othrow‡nƒxception'); + +107 + } +} + +108 + g$t +-> +is +( +$»Œ›ved_d©a +, +$£ssiÚ_d©a +, 'sessionRead()„eads session data'); + +111 + g$_SESSION +['baz'] = 'woo'; + +112 + g$£ssiÚ_d©a + = +£ssiÚ_’code +(); + +113 + gŒy + + +115 + g$wr™e + = +$¡Üage +-> +£ssiÚWr™e +( +$£ssiÚ_id +, +$£ssiÚ_d©a +); + +116 + g$t +-> +·ss +('sessionWrite() does‚othrow‡nƒxception'); + +118 + $ÿtch + ( +Exû±iÚ + +$e +) + +120 +$t +-> + `çž +('sessionWrite() does‚othrow‡nƒxception'); + +121 + } +} + +123 + g$t +-> +ok +( +$wr™e +, 'sessionWrite()„eturnsrue'); + +124 + g$t +-> +is +( +$¡Üage +-> +£ssiÚR—d +( +$£ssiÚ_id +), +$£ssiÚ_d©a +, 'sessionWrite() wrote session data'); + +127 + gŒy + + +129 + g$¡Üage +-> +£ssiÚDe¡roy +( +$£ssiÚ_id +); + +130 + g$t +-> +·ss +('sessionDestroy() does‚othrow‡nƒxception'); + +132 + $ÿtch + ( +Exû±iÚ + +$e +) + +134 +$t +-> + `çž +('sessionDestroy() does‚othrow‡nƒxception'); + +135 + } +} + +137 + g$»suÉ + = +mysqli_qu”y +( +$cÚÃùiÚ +, +¥rštf +('SELECT COUNT(£ss_idèFROM sessiÚ WHERE sess_id = "%s"', +$£ssiÚ_id +)); + +139 +li¡ +( +$couÁ +èð +mysqli_ãtch_row +( +$»suÉ +); + +140 + g$t +-> +is +( +$couÁ +, 0, 'session is„emoved fromhe database'); + +142 +mysqli_ä“_»suÉ +( +$»suÉ +); + +143 +un£t +( +$couÁ +, +$»suÉ +); + +145 +mysqli_qu”y +( +$cÚÃùiÚ +, 'DROP DATABASE sf_mysqli_storage_unit_test'); + +148 + g$¡Üage +-> +shutdown +(); + +151 + g$d©aba£ +-> +shutdown +(); + +153 +un£t +( +$mysqli_cÚfig +); + + @lib/vendor/symfony/test/unit/storage/sfNoStorageTest.php + +1 +ok +( +$¡Üage + +š¡ªûof + +sfStÜage +, 'sfNoStorage is‡n instance of sfStorage'); + +21 + g$¡Üage +-> +shutdown +(); + + @lib/vendor/symfony/test/unit/storage/sfPDOSessionStorageTest.php + +1 +sk +('SQL™ÃededØruÀthe£e¡s', +$¶ª +); + +24 + g$d©aba£ + = +Ãw + +sfPDOD©aba£ +( +¬¿y +('dsn' => 'sqlite::memory:')); + +25 + g$cÚÃùiÚ + = +$d©aba£ +-> +g‘CÚÃùiÚ +(); + +26 + g$cÚÃùiÚ +-> +exec +('CREATE TABLE session (sess_id, sess_data, sess_time)'); + +28 +ši_£t +('session.use_cookies', 0); + +29 + g$£ssiÚ_id + = "1"; + +31 + g$¡Üage + = +Ãw + +sfPDOSessiÚStÜage +( +¬¿y +('db_bË' => '£ssiÚ', '£ssiÚ_id' => +$£ssiÚ_id +, 'd©aba£' => +$d©aba£ +)); + +32 + g$t +-> +ok +( +$¡Üage + +š¡ªûof + +sfStÜage +, 'sfPDOSessionStorage is‡n instance of sfStorage'); + +33 + g$t +-> +ok +( +$¡Üage + +š¡ªûof + +sfD©aba£SessiÚStÜage +, 'sfPDOSessionStorage is‡n instance of sfDatabaseSessionStorage'); + +36 + g$ÞdSessiÚD©a + = 'foo:bar'; + +37 + g$¡Üage +-> +£ssiÚWr™e +( +$£ssiÚ_id +, +$ÞdSessiÚD©a +); + +38 + g$¡Üage +-> +»g’”©e +( +çl£ +); + +40 + g$ÃwSessiÚD©a + = 'foo:bar:baz'; + +41 + g$¡Üage +-> +£ssiÚWr™e +( +£ssiÚ_id +(), +$ÃwSessiÚD©a +); + +42 + g$t +-> +i¢t +( +£ssiÚ_id +(), +$£ssiÚ_id +, 'regenerate()„egeneratedhe session with‡ different session id'); + +45 + g$»suÉ + = +$cÚÃùiÚ +-> +qu”y +( +¥rštf +('SELECT sess_id, sess_d©¨FROM sessiÚ WHERE sess_id = "%s"', +$£ssiÚ_id +)); + +46 + g$d©a + = +$»suÉ +-> +ãtchAÎ +(); + +47 + g$t +-> +is +( +couÁ +( +$d©a +), 1, 'regenerate() has kept destroyed old session'); + +48 + g$t +-> +is +( +$d©a +[0]['£ss_d©a'], +$ÞdSessiÚD©a +, 'regenerate() has kept destroyed old session data'); + +51 + g$»suÉ + = +$cÚÃùiÚ +-> +qu”y +( +¥rštf +('SELECT sess_id, sess_d©¨FROM sessiÚ WHERE sess_id = "%s"', +£ssiÚ_id +())); + +52 + g$d©a + = +$»suÉ +-> +ãtchAÎ +(); + +53 + g$t +-> +is +( +couÁ +( +$d©a +), 1, 'regenerate() has created‡‚ew session„ecord'); + +54 + g$t +-> +is +( +$d©a +[0]['£ss_d©a'], +$ÃwSessiÚD©a +, 'regenerate() has created‡‚ew„ecord with correct data'); + +56 + g$£ssiÚ_id + = +£ssiÚ_id +(); + +59 + gŒy + + +61 + g$»Œ›ved_d©a + = +$¡Üage +-> +£ssiÚR—d +( +$£ssiÚ_id +); + +62 + g$t +-> +·ss +('sessionRead() does‚othrow‡nƒxception'); + +64 + $ÿtch + ( +Exû±iÚ + +$e +) + +66 +$t +-> + `çž +('sessionRead() does‚othrow‡nƒxception'); + +67 + } +} + +68 + g$t +-> +is +( +$»Œ›ved_d©a +, +$ÃwSessiÚD©a +, 'sessionRead()„eads session data'); + +71 + g$Ùh”SessiÚD©a + = 'foo:foo:foo'; + +72 + gŒy + + +74 + g$wr™e + = +$¡Üage +-> +£ssiÚWr™e +( +$£ssiÚ_id +, +$Ùh”SessiÚD©a +); + +75 + g$t +-> +·ss +('sessionWrite() does‚othrow‡nƒxception'); + +77 + $ÿtch + ( +Exû±iÚ + +$e +) + +79 +$t +-> + `çž +('sessionWrite() does‚othrow‡nƒxception'); + +80 + } +} + +82 + g$t +-> +ok +( +$wr™e +, 'sessionWrite()„eturnsrue'); + +83 + g$t +-> +is +( +$¡Üage +-> +£ssiÚR—d +( +$£ssiÚ_id +), +$Ùh”SessiÚD©a +, 'sessionWrite() wrote session data'); + +86 + gŒy + + +88 + g$¡Üage +-> +£ssiÚGC +(0); + +89 + g$t +-> +·ss +('sessionGC() does‚othrow‡nƒxception'); + +91 + $ÿtch + ( +Exû±iÚ + +$e +) + +93 +$t +-> + `çž +('sessionGC() does‚othrow‡nƒxception'); + +94 + } +} + +97 + gŒy + + +99 + g$¡Üage +-> +£ssiÚDe¡roy +( +$£ssiÚ_id +); + +100 + g$t +-> +·ss +('sessionDestroy() does‚othrow‡nƒxception'); + +102 + $ÿtch + ( +Exû±iÚ + +$e +) + +104 +$t +-> + `çž +('sessionClose() does‚othrow‡nƒxception'); + +105 + } +} + +106 + g$»suÉ + = +$cÚÃùiÚ +-> +qu”y +( +¥rštf +('SELECT sess_id, sess_d©¨FROM sessiÚ WHERE sess_id = "%s"', +$£ssiÚ_id +)); + +107 + g$d©a + = +$»suÉ +-> +ãtchAÎ +(); + +108 + g$t +-> +is +( +couÁ +( +$d©a +), 0, 'session is„emoved fromhe database'); + +111 + g$¡Üage +-> +shutdown +(); + + @lib/vendor/symfony/test/unit/storage/sfSessionStorageTest.php + +1 +·ss +('->__construct() does‚othrow‡nƒxception when‚ot…rovided with options'); + +30 + $ÿtch + ( +Inv®idArgum’tExû±iÚ + +$e +) + +32 +$t +-> + `çž +('->__construct() Startup failure'); + +33 + } +} + +36 + g$¡Üage + = +Ãw + +sfSessiÚStÜage +(); + +37 + g$t +-> +ok +( +$¡Üage + +š¡ªûof + +sfStÜage +, '->__construct() is‡n instance of sfStorage'); + +39 + g$¡Üage +-> +wr™e +('test', 123); + +41 + g$t +-> +is +( +$¡Üage +-> +»ad +('test'), 123, '->read() can„ead datahat has been writteno storage'); + +44 + g$ÞdSessiÚD©a + = 'foo:bar'; + +45 + g$key + = +md5 +( +$ÞdSessiÚD©a +); + +47 + g$¡Üage +-> +wr™e +( +$key +, +$ÞdSessiÚD©a +); + +48 + g$£ssiÚ_id + = +£ssiÚ_id +(); + +49 + g$¡Üage +-> +»g’”©e +( +çl£ +); + +50 + g$t +-> +is +( +$¡Üage +-> +»ad +( +$key +), +$ÞdSessiÚD©a +, '->regenerate(false)„egeneratedhe session with‡ different session id -his class by default doesn\'t„egenhe id'); + +51 + g$t +-> +i¢t +( +£ssiÚ_id +(), +$£ssiÚ_id +, '->regenerate(false)„egeneratedhe session with‡ different session id'); + +53 + g$¡Üage +-> +»g’”©e +( +Œue +); + +54 + g$t +-> +is +( +$¡Üage +-> +»ad +( +$key +), +$ÞdSessiÚD©a +, '->regenerate(true)„egeneratedhe session with‡ different session id‡nd destroyed data'); + +55 + g$t +-> +i¢t +( +£ssiÚ_id +(), +$£ssiÚ_id +, '->regenerate(true)„egeneratedhe session with‡ different session id'); + +57 + g$¡Üage +-> +»move +( +$key +); + +58 + g$t +-> +is +( +$¡Üage +-> +»ad +( +$key +), +nuÎ +, '->remove()„emoves data fromhe storage'); + +61 + g$¡Üage +-> +shutdown +(); + + @lib/vendor/symfony/test/unit/storage/sfStorageTest.php + +1 +run +( +¬¿y +('test')); + +20 + g$sk + = +Ãw + +sfG’”©eAµTask +( +$di¥©ch” +, +$fÜm©‹r +); + +21 + g$sk +-> +run +( +¬¿y +('frontend')); + +23 +»quœe_Úû + + gsfCÚfig +:: +g‘ +('sf_root_dir').'/config/ProjectConfiguration.class.php'; + +24 + g$cÚfigu¿tiÚ + = +ProjeùCÚfigu¿tiÚ +:: +g‘AµliÿtiÚCÚfigu¿tiÚ +('äڋnd', '‹¡', +Œue +); + +27 + g$fže + = +sfCÚfig +:: +g‘ +('sf_cÚfig_ÿche_dœ'). +DIRECTORY_SEPARATOR +.'test'; + +28 +touch +( +$fže +); + +30 + g$t +-> +ok +( +fže_exi¡s +( +$fže +), 'Theest file is inhe cache'); + +32 + g$sk + = +Ãw + +sfCacheCˬTask +( +$di¥©ch” +, +$fÜm©‹r +); + +33 + g$sk +-> +run +(); + +35 + g$t +-> +ok +(! +fže_exi¡s +( +$fže +), 'Theest file is„emoved byhe cache:clearask'); + + @lib/vendor/symfony/test/unit/task/sfBaseTaskTest.php + +1 +dŸg +('->initializeAutoload()'); + +45 + g$t +-> +is +( +$autÞßd +-> +g‘CÏssP©h +('myLibCÏss'), +nuÎ +, 'no…roject classes‡re‡utoloaded before ->initializeAutoload()'); + +47 + g$sk +-> +š™ŸlizeAutÞßd +( +$cÚfigu¿tiÚ +); + +49 + g$t +-> +ok +( +nuÎ + !=ð +$autÞßd +-> +g‘CÏssP©h +('myLibClass'), '->initializeAutoload()†oads…roject classes'); + +50 + g$t +-> +ok +( +nuÎ + !=ð +$autÞßd +-> +g‘CÏssP©h +('BaseExtendMe'), '->initializeAutoload() includes…lugin classes'); + +51 + g$t +-> +is +( +$autÞßd +-> +g‘CÏssP©h +('Ex‹ndMe'), +sfCÚfig +:: +g‘ +('sf_lib_dir').'/ExtendMe.class.php', '->initializeAutoload()…refers…rojecto…lugin classes'); + +53 + g$sk +-> +š™ŸlizeAutÞßd +( +$cÚfigu¿tiÚ +, +Œue +); + +54 + g$t +-> +is +( +$autÞßd +-> +g‘CÏssP©h +('Ex‹ndMe'), +sfCÚfig +:: +g‘ +('sf_lib_dir').'/ExtendMe.class.php', '->initializeAutoload()…refers…rojecto…lugin classes‡fter„eload'); + +57 + g$t +-> +dŸg +('->run()'); + +59 þas  + cAµliÿtiÚTask + +ex‹nds + + msfBa£Task + + +61 +´Ùeùed + +funùiÚ + + $cÚfigu» +() + +63 +$this +-> + `addO±iÚ +('­¶iÿtiÚ', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +, '', +Œue +); + +66 +´Ùeùed + +funùiÚ + + `execu‹ +( +$¬gum’ts + = + `¬¿y +(), +$ÝtiÚs + = + $¬¿y +()) + +68 ià(! +$this +-> +cÚfigu¿tiÚ + +š¡ªûof + +sfAµliÿtiÚCÚfigu¿tiÚ +) + +70 +throw + +Ãw + + `Exû±iÚ +('Thisask„equires‡n‡pplication configuration be†oaded.'); + +72 + } +} + +75 +chdœ +( +$roÙDœ +); + +77 + g$sk + = +Ãw + +AµliÿtiÚTask +( +$di¥©ch” +,‚ew +sfFÜm©‹r +()); + +78 + gŒy + + +80 + g$sk +-> +run +(); + +81 + g$t +-> +·ss +('->run() creates‡n‡pplication configuration if‚one is set'); + +83 + $ÿtch + ( +Exû±iÚ + +$e +) + +85 +$t +-> + `dŸg +( +$e +-> + `g‘Mes§ge +()); + +86 +$t +-> + `çž +('->run() creates‡n‡pplication configuration if‚one is set'); + +87 + } +} + +89 + g$sk + = +Ãw + +AµliÿtiÚTask +( +$di¥©ch” +,‚ew +sfFÜm©‹r +()); + +90 + g$sk +-> +£tCÚfigu¿tiÚ +( +$cÚfigu¿tiÚ +); + +91 + gŒy + + +93 + g$sk +-> +run +(); + +94 + g$t +-> +·ss +('->run() creates‡n‡pplication configuration if only‡…roject configuration is set'); + +96 + $ÿtch + ( +Exû±iÚ + +$e +) + +98 +$t +-> + `dŸg +( +$e +-> + `g‘Mes§ge +()); + +99 +$t +-> + `çž +('->run() creates‡n‡pplication configuration if only‡…roject configuration is set'); + +100 + } +} + + @lib/vendor/symfony/test/unit/task/sfFilesystemTest.php + +1 +dŸg +('sfFilesystem canonicalizes…athes'); + +33 + g$t +-> +is +( +$fžesy¡em +-> +ÿnÚiÿlizeP©h +('..'. +DS +.DS.'.'.DS.'..'.DS.'dir4'.DS.DS.'.'.DS.'dir5'.DS.'dir6'.DS.'..'.DS.DS.'dir7'.DS), '..'.DS.'..'.DS.'dir4'.DS.'dir5'.DS.'dir7'.DS, '->canonicalizePath() correctly„esolves "\\.."‡nd "\\."'); + +35 + g$t +-> +dŸg +('sfFilesystem calculates„elative…athes'); + +36 + g$commÚ + = +DS +.'tmp'.DS.'sfproject'.DS; + +37 + g$sourû + = +$commÚ +.'web'. +DS +.'myplugin'; + +38 + g$rg‘ + = +$commÚ +.'¶ugšs'. +DS +.'myplugin'.DS.'web'; + +39 + g$t +-> +is +( +$fžesy¡em +-> +ÿlcuϋR–©iveDœ +( +$sourû +, +$rg‘ +), '..'. +DS +.'plugins'.DS.'myplugin'.DS.'web', '->calculateRelativeDir() correctly calculateshe„elative…ath'); + +41 + g$sourû + = +$commÚ +.'web'. +DS +.'myplugin'; + +42 + g$rg‘ + = +$commÚ +.'web¶ugšs'. +DS +.'myplugin'.DS.'web'; + +43 + g$t +-> +is +( +$fžesy¡em +-> +ÿlcuϋR–©iveDœ +( +$sourû +, +$rg‘ +), '..'. +DS +.'webplugins'.DS.'myplugin'.DS.'web', '->calculateRelativeDir() correctly calculateshe„elative…ath for dirshat share chars'); + +45 + g$sourû + = +$commÚ +.'web'. +DS +.'myplugin'; + +46 + g$rg‘ + = +$commÚ +.'web'. +DS +.'otherplugin'.DS.'sub'; + +47 + g$t +-> +is +( +$fžesy¡em +-> +ÿlcuϋR–©iveDœ +( +$sourû +, +$rg‘ +), 'Ùh”¶ugš'. +DS +.'sub', '->calculateRelativeDir() works without going up one dir'); + +49 + g$sourû + = 'c:\sfproject\web\myplugin'; + +50 + g$rg‘ + = 'd:\symfony\plugins\myplugin\web'; + +51 + g$t +-> +is +( +$fžesy¡em +-> +ÿlcuϋR–©iveDœ +( +$sourû +, +$rg‘ +), 'd:\symfony\plugins\myplugin\web', '->calculateRelativeDir()„eturns‡bsolute…ath when‚o„elative…ath…ossible'); + +53 + g$sourû + = +$commÚ +.'web'. +DS +.'myplugin'; + +54 + g$rg‘ + = +$commÚ +.'web'. +DS +.'myotherplugin'.DS.'sub'; + +55 + g$t +-> +is +( +$fžesy¡em +-> +ÿlcuϋR–©iveDœ +( +$sourû +, +$rg‘ +), 'myÙh”¶ugš'. +DS +.'sub', '->calculateRelativeDir() correctly calculateshe„elative…ath for dirshat share chars'); + +57 + g$sourû + = +$commÚ +.'web'. +DS +.'myplugin'; + +58 + g$rg‘ + = +$commÚ +.'web'. +DS +.'motherplugin'.DS.'sub'; + +59 + g$t +-> +is +( +$fžesy¡em +-> +ÿlcuϋR–©iveDœ +( +$sourû +, +$rg‘ +), 'mÙh”¶ugš'. +DS +.'sub', '->calculateRelativeDir() correctly calculateshe„elative…ath for dirshat share chars'); + +62 + g$sourû + = +$commÚ +.'..'. +DS +.'web'.DS.'myplugin'; + +63 + g$rg‘ + = +$commÚ +.'lib'. +DS +.'vendor'.DS.'symfony'.DS.'plugins'.DS.'myplugin'.DS.'web'; + +64 + g$t +-> +is +( +$fžesy¡em +-> +ÿlcuϋR–©iveDœ +( +$sourû +, +$rg‘ +), '..'. +DS +.'sfproject'.DS.'lib'.DS.'vendor'.DS.'symfony'.DS.'plugins'.DS.'myplugin'.DS.'web', '->calculateRelativeDir() correctly calculateshe„elative…ath for dirshat share chars'); + + @lib/vendor/symfony/test/unit/task/sfTaskTest.php + +1 +Ï¡Argum’ts + = +$¬gum’ts +; + +29 +$this +-> +Ï¡O±iÚs + = +$ÝtiÚs +; + +30 + } +} + +34 + g$t +-> +dŸg +('->run()'); + +36 þas  + cArgum’tsTe¡1Task + +ex‹nds + + mBa£Te¡Task + + +38 +´Ùeùed + +funùiÚ + + $cÚfigu» +() + +40 +$this +-> + `addArgum’ts +( + `¬¿y +( + +41 +Ãw + + `sfCommªdArgum’t +('foo', +sfCommªdArgum’t +:: +REQUIRED +), + +42 +Ãw + + `sfCommªdArgum’t +('b¬', +sfCommªdArgum’t +:: +OPTIONAL +), + +45 + } +} + +47 + g$sk + = +Ãw + +Argum’tsTe¡1Task +(); + +48 + g$sk +-> +run +( +¬¿y +('FOO')); + +49 + g$t +-> +is_d“¶y +( +$sk +-> +Ï¡Argum’ts +, +¬¿y +('foo' => 'FOO', 'b¬' => +nuÎ +), '->run()‡ccepts‡n indexed‡rray of‡rguments'); + +51 + g$sk +-> +run +( +¬¿y +('foo' => 'FOO')); + +52 + g$t +-> +is_d“¶y +( +$sk +-> +Ï¡Argum’ts +, +¬¿y +('foo' => 'FOO', 'b¬' => +nuÎ +), '->run()‡ccepts‡n‡ssociative‡rray of‡rguments'); + +54 + g$sk +-> +run +( +¬¿y +('bar' => 'BAR', 'foo' => 'FOO')); + +55 + g$t +-> +is_d“¶y +( +$sk +-> +Ï¡Argum’ts +, +¬¿y +('foo' => 'FOO', 'bar' => 'BAR'), '->run()‡ccepts‡n unordered‡ssociative‡rray of‡rguments'); + +57 + g$sk +-> +run +('FOO BAR'); + +58 + g$t +-> +is_d“¶y +( +$sk +-> +Ï¡Argum’ts +, +¬¿y +('foo' => 'FOO', 'bar' => 'BAR'), '->run()‡ccepts‡ string of‡rguments'); + +60 + g$sk +-> +run +( +¬¿y +('foo' => 'FOO', 'b¬' => +nuÎ +)); + +61 + g$t +-> +is_d“¶y +( +$sk +-> +Ï¡Argum’ts +, +¬¿y +('foo' => 'FOO', 'b¬' => +nuÎ +), '->run()‡ccepts‡n‡ssociative‡rray of‡rguments when optional‡rguments‡re…assed‡s‚ull'); + +63 + g$sk +-> +run +( +¬¿y +('b¬' => +nuÎ +, 'foo' => 'FOO')); + +64 + g$t +-> +is_d“¶y +( +$sk +-> +Ï¡Argum’ts +, +¬¿y +('foo' => 'FOO', 'b¬' => +nuÎ +), '->run()‡ccepts‡n unordered‡ssociative‡rray of‡rguments when optional‡rguments‡re…assed‡s‚ull'); + +66 þas  + cArgum’tsTe¡2Task + +ex‹nds + + mBa£Te¡Task + + +68 +´Ùeùed + +funùiÚ + + $cÚfigu» +() + +70 +$this +-> + `addArgum’ts +( + `¬¿y +( + +71 +Ãw + + `sfCommªdArgum’t +('foo', +sfCommªdArgum’t +:: +OPTIONAL + | sfCommªdArgum’t:: +IS_ARRAY +), + +74 + } +} + +76 + g$sk + = +Ãw + +Argum’tsTe¡2Task +(); + +77 + g$sk +-> +run +( +¬¿y +('arg1', 'arg2', 'arg3')); + +78 + g$t +-> +is_d“¶y +( +$sk +-> +Ï¡Argum’ts +, +¬¿y +('foo' =>‡rray('arg1', 'arg2', 'arg3')), '->run()‡ccepts‡n indexed‡rray of‡n IS_ARRAY‡rgument'); + +80 + g$sk +-> +run +( +¬¿y +('foo' =>‡rray('arg1', 'arg2', 'arg3'))); + +81 + g$t +-> +is_d“¶y +( +$sk +-> +Ï¡Argum’ts +, +¬¿y +('foo' =>‡rray('arg1', 'arg2', 'arg3')), '->run()‡ccepts‡n‡ssociative‡rray of‡n IS_ARRAY‡rgument'); + +83 þas  + cO±iÚsTe¡1Task + +ex‹nds + + mBa£Te¡Task + + +85 +´Ùeùed + +funùiÚ + + $cÚfigu» +() + +87 +$this +-> + `addO±iÚs +( + `¬¿y +( + +88 +Ãw + + `sfCommªdO±iÚ +('nÚe', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_NONE +), + +89 +Ãw + + `sfCommªdO±iÚ +('»quœed', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED +), + +90 +Ãw + + `sfCommªdO±iÚ +('ÝtiÚ®', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_OPTIONAL +), + +91 +Ãw + + `sfCommªdO±iÚ +('¬¿y', +nuÎ +, +sfCommªdO±iÚ +:: +PARAMETER_REQUIRED + | sfCommªdO±iÚ:: +IS_ARRAY +), + +94 + } +} + +96 + g$sk + = +Ãw + +O±iÚsTe¡1Task +(); + +97 + g$sk +-> +run +(); + +98 + g$t +-> +is_d“¶y +( +$sk +-> +Ï¡O±iÚs +, +¬¿y +('nÚe' => +çl£ +, '»quœed' => +nuÎ +, 'optional' =>‚ull, 'array' =>‡rray()), '->run() setsƒmpty option values'); + +100 + g$sk +-> +run +( +¬¿y +(),‡rray('--none', '--required=TEST1', '--array=one', '--array=two', '--array=three')); + +101 + g$t +-> +is_d“¶y +( +$sk +-> +Ï¡O±iÚs +, +¬¿y +('nÚe' => +Œue +, '»quœed' => 'TEST1', 'ÝtiÚ®' => +nuÎ +, 'array' =>‡rray('one', 'two', 'three')), '->run()‡ccepts‡n indexed‡rray of option values'); + +103 + g$sk +-> +run +( +¬¿y +(),‡rray('none', 'required=TEST1', 'array=one', 'array=two', 'array=three')); + +104 + g$t +-> +is_d“¶y +( +$sk +-> +Ï¡O±iÚs +, +¬¿y +('nÚe' => +Œue +, '»quœed' => 'TEST1', 'ÝtiÚ®' => +nuÎ +, 'array' =>‡rray('one', 'two', 'three')), '->run()‡ccepts‡n indexed‡rray of unflagged option values'); + +106 + g$sk +-> +run +( +¬¿y +(),‡¼ay('nÚe' => +çl£ +, 'required' => 'TEST1', 'array' =>‡rray('one', 'two', 'three'))); + +107 + g$t +-> +is_d“¶y +( +$sk +-> +Ï¡O±iÚs +, +¬¿y +('nÚe' => +çl£ +, '»quœed' => 'TEST1', 'ÝtiÚ®' => +nuÎ +, 'array' =>‡rray('one', 'two', 'three')), '->run()‡ccepts‡n‡ssociative‡rray of option values'); + +109 + g$sk +-> +run +( +¬¿y +(),‡¼ay('ÝtiÚ®' => +nuÎ +, 'array' =>‡rray())); + +110 + g$t +-> +is_d“¶y +( +$sk +-> +Ï¡O±iÚs +, +¬¿y +('nÚe' => +çl£ +, '»quœed' => +nuÎ +, 'optional' =>‚ull, 'array' =>‡rray()), '->run()‡ccepts‡n‡ssociative‡rray of options when optional values‡re…assed‡sƒmpty'); + +112 + g$sk +-> +run +('--none --required=TEST1 --array=one --array=two --array=three'); + +113 + g$t +-> +is_d“¶y +( +$sk +-> +Ï¡O±iÚs +, +¬¿y +('nÚe' => +Œue +, '»quœed' => 'TEST1', 'ÝtiÚ®' => +nuÎ +, 'array' =>‡rray('one', 'two', 'three')), '->run()‡ccepts‡ string of options'); + +115 + g$sk +-> +run +( +¬¿y +(),‡rray('array' => 'one')); + +116 + g$t +-> +is_d“¶y +( +$sk +-> +Ï¡O±iÚs +, +¬¿y +('nÚe' => +çl£ +, '»quœed' => +nuÎ +, 'optional' =>‚ull, 'array' =>‡rray('one')), '->run()‡ccepts‡n‡ssociative‡rray of options with‡ scalar‡rray option value'); + + @lib/vendor/symfony/test/unit/test/sfTestFunctionalTest.php + +1 +dom + = +Ãw + + `DomDocum’t +('1.0'); + +20 +$this +-> +dom +-> +v®id©eOnP¬£ + = +Œue +; + +21 @ +$this +-> +dom +-> + `lßdHTML +( +$cڋÁ +); + +22 +$this +-> +domCssS–eùÜ + = +Ãw + + `sfDomCssS–eùÜ +($this-> +dom +); + +24 + } +} + +26 þas  + cmockLime + +ex‹nds + + mlime_‹¡ + + +28 +public + +funùiÚ + + $__de¡ruù +() + +31 + } +} + +33 þas  + cmockTe¡FunùiÚ® + +ex‹nds + + msfTe¡FunùiÚ® + + +35 +public + + m$ÿÎed + = +¬¿y +(); + +37 +public + +funùiÚ + +ÿÎ +( +$uri +, +$m‘hod + = 'g‘', +$·¿m‘”s + = +¬¿y +(), +$chªgeSck + = +Œue +) + +39 +$this +-> +ÿÎed +[] = +func_g‘_¬gs +(); + +43 + g$html + = <<< +HTML + + +44 < +html +> + +45 < +h—d +> + +46 + +47 < +body +> + +48 < +a + +h»f +="/somewh”e" +þass +="clickme"> + +49 + +50 + +51 +HTML +; + +53 + g$brow£r + = +Ãw + +mockBrow£r +(); + +54 + g$brow£r +-> +£tRe¥Ú£CڋÁ +( +$html +); + +56 + g$lime + = +Ãw + +mockLime +(); + +57 + g$‹¡” + = +Ãw + +mockTe¡FunùiÚ® +( +$brow£r +, +$lime +); + +59 + gŒy + + +61 + g$‹¡” +-> +þick +('a.clickme'); + +62 + g$t +-> +·ss +('->click()‡ccepts‡ CSS selector'); + +64 + $ÿtch + ( +Exû±iÚ + +$e +) + +66 +$t +-> + `dŸg +( +$e +-> + `g‘Mes§ge +()); + +67 +$t +-> + `çž +('->click()‡ccepts‡ CSS selector'); + +68 + } +} + +70 + g$t +-> +is_d“¶y +( +$‹¡” +-> +ÿÎed +, +¬¿y +(array('/somewhere', 'get',‡rray())), '->click()…arses‡ CSS selector'); + + @lib/vendor/symfony/test/unit/user/sfBasicSecurityUserTest.php + +1 +£ssiÚId + = + `¿nd +(1, 9999); + +21  +Œue +; + +23 + } +} + +25 + g$di¥©ch” + = +Ãw + +sfEv’tDi¥©ch” +(); + +26 + g$£ssiÚP©h + = +sys_g‘_‹mp_dœ +().'/£ssiÚs_'. +¿nd +(11111, 99999); + +27 + g$¡Üage + = +Ãw + +MySessiÚStÜage +( +¬¿y +('£ssiÚ_·th' => +$£ssiÚP©h +)); + +29 + g$u£r + = +Ãw + +sfBasicSecur™yU£r +( +$di¥©ch” +, +$¡Üage +); + +32 + g$t +-> +dŸg +('->initialize()'); + +33 + g$t +-> +todo +('->initialize()imes outhe user if‚o„equest made for‡†ongime'); + +36 + g$t +-> +dŸg +('->getCredentials()'); + +37 + g$u£r +-> +þ—rC»d’tŸls +(); + +38 + g$u£r +-> +addC»d’tŸl +('user'); + +39 + g$t +-> +is +( +$u£r +-> +g‘C»d’tŸls +(), +¬¿y +('user'), '->getCredentials()„eturns user credentials‡s‡n‡rray'); + +42 + g$t +-> +dŸg +('->setAuthenticated() ->isAuthenticated()'); + +43 + g$t +-> +is +( +$u£r +-> +isAuth’tiÿ‹d +(), +çl£ +, '->isAuthenticated()„eturns false by default'); + +44 + g$u£r +-> +£tAuth’tiÿ‹d +( +Œue +); + +45 + g$t +-> +is +( +$u£r +-> +isAuth’tiÿ‹d +(), +Œue +, '->isAuthenticated()„eturnsrue ifhe user is‡uthenticated'); + +46 + g$u£r +-> +£tAuth’tiÿ‹d +( +çl£ +); + +47 + g$t +-> +is +( +$u£r +-> +isAuth’tiÿ‹d +(), +çl£ +, '->setAuthenticated()‡ccepts‡ boolean‡s its first…arameter'); + +50 + g$u£r +-> +£tAuth’tiÿ‹d +( +çl£ +); + +51 + g$id + = +$¡Üage +-> +g‘SessiÚId +(); + +52 + g$u£r +-> +£tAuth’tiÿ‹d +( +Œue +); + +53 + g$t +-> +i¢t +( +$id +, $id = +$¡Üage +-> +g‘SessiÚId +(), '->setAuthenticated()„egenerateshe session id ifhe‡uthentication changes'); + +54 + g$u£r +-> +£tAuth’tiÿ‹d +( +Œue +); + +55 + g$t +-> +is +( +$¡Üage +-> +g‘SessiÚId +(), +$id +, '->setAuthenticated() does‚ot„egeneratehe session id ifhe‡uthentication does‚ot change'); + +56 + g$u£r +-> +addC»d’tŸl +('foo'); + +57 + g$t +-> +i¢t +( +$id +, $id = +$¡Üage +-> +g‘SessiÚId +(), '->addCredential()„egenerateshe session id if‡‚ew credential is‡dded'); + +58 + g$t +-> +is +( +$id +, +$¡Üage +-> +g‘SessiÚId +(), '->addCredential() does‚ot„egeneratehe session id ifhe credential‡lreadyƒxists'); + +59 + g$u£r +-> +»moveC»d’tŸl +('foo'); + +60 + g$t +-> +i¢t +( +$id +, $id = +$¡Üage +-> +g‘SessiÚId +(), '->removeCredential()„egenerateshe session id if‡ credential is„emoved'); + +61 + g$t +-> +is +( +$id +, +$¡Üage +-> +g‘SessiÚId +(), '->removeCredential() does‚ot„egeneratehe session id ifhe credential does‚otƒxist'); + +64 + g$u£r + = +Ãw + +sfBasicSecur™yU£r +( +$di¥©ch” +, +$¡Üage +); + +65 + g$t +-> +dŸg +('->setTimedOut() ->isTimedOut()'); + +66 + g$t +-> +is +( +$u£r +-> +isTimedOut +(), +çl£ +, '->isTimedOut()„eturns false ifhe session is‚otimed out'); + +67 + g$u£r +-> +£tTimedOut +(); + +68 + g$t +-> +is +( +$u£r +-> +isTimedOut +(), +Œue +, '->isTimedOut()„eturnsrue ifhe session isimed out'); + +71 + g$t +-> +dŸg +('->hasCredential()'); + +72 + g$u£r +-> +þ—rC»d’tŸls +(); + +73 + g$t +-> +is +( +$u£r +-> +hasC»d’tŸl +('admš'), +çl£ +, '->hasCredential()„eturns false if user has‚othe credential'); + +75 + g$u£r +-> +addC»d’tŸl +('admin'); + +76 + g$t +-> +is +( +$u£r +-> +hasC»d’tŸl +('admš'), +Œue +, '->addCredential()akes‡ credential‡s its first‡rgument'); + +79 + g$t +-> +is +( +$u£r +-> +hasC»d’tŸl +( +¬¿y +('admš', 'u£r')), +çl£ +, '->hasCredential() canakes‡n‡rray of credential‡s‡…arameter'); + +82 + g$t +-> +is +( +$u£r +-> +hasC»d’tŸl +( +¬¿y +×¼ay('admš', 'u£r'))), +Œue +, '->hasCredential() canakes‡n‡rray of credential‡s‡…arameter'); + +85 + g$t +-> +is +( +$u£r +-> +hasC»d’tŸl +( +¬¿y +×¼ay('admš', 'u£r'), 'owÃr')), +çl£ +, '->hasCredential() canakes‡n‡rray of credential‡s‡…arameter'); + +86 + g$u£r +-> +addC»d’tŸl +('owner'); + +87 + g$t +-> +is +( +$u£r +-> +hasC»d’tŸl +( +¬¿y +×¼ay('admš', 'u£r'), 'owÃr')), +Œue +, '->hasCredential() canakes‡n‡rray of credential‡s‡…arameter'); + +91 + g$u£r +-> +þ—rC»d’tŸls +(); + +92 + g$üed’tŸl + = +¬¿y +(array('root', 'admin', 'editor',‡rray('supplier', 'owner'),‡rray('supplier', 'group'), 'accounts')); + +93 + g$t +-> +is +( +$u£r +-> +hasC»d’tŸl +( +$üed’tŸl +), +çl£ +, '->hasCredential() canakes‡n‡rray of credential‡s‡…arameter'); + +94 + g$u£r +-> +addC»d’tŸl +('admin'); + +95 + g$t +-> +is +( +$u£r +-> +hasC»d’tŸl +( +$üed’tŸl +), +Œue +, '->hasCredential() canakes‡n‡rray of credential‡s‡…arameter'); + +96 + g$u£r +-> +þ—rC»d’tŸls +(); + +97 + g$u£r +-> +addC»d’tŸl +('supplier'); + +98 + g$t +-> +is +( +$u£r +-> +hasC»d’tŸl +( +$üed’tŸl +), +çl£ +, '->hasCredential() canakes‡n‡rray of credential‡s‡…arameter'); + +99 + g$u£r +-> +addC»d’tŸl +('owner'); + +100 + g$t +-> +is +( +$u£r +-> +hasC»d’tŸl +( +$üed’tŸl +), +Œue +, '->hasCredential() canakes‡n‡rray of credential‡s‡…arameter'); + +104 + g$u£r +-> +þ—rC»d’tŸls +(); + +105 + g$üed’tŸl + = +¬¿y +(array('root',‡rray('supplier',‡rray('owner', 'quasiowner')), 'accounts')); + +106 + g$t +-> +is +( +$u£r +-> +hasC»d’tŸl +( +$üed’tŸl +), +çl£ +, '->hasCredential() canakes‡n‡rray of credential‡s‡…arameter'); + +107 + g$u£r +-> +addC»d’tŸl +('root'); + +108 + g$t +-> +is +( +$u£r +-> +hasC»d’tŸl +( +$üed’tŸl +), +Œue +, '->hasCredential() canakes‡n‡rray of credential‡s‡…arameter'); + +109 + g$u£r +-> +þ—rC»d’tŸls +(); + +110 + g$u£r +-> +addC»d’tŸl +('supplier'); + +111 + g$t +-> +is +( +$u£r +-> +hasC»d’tŸl +( +$üed’tŸl +), +çl£ +, '->hasCredential() canakes‡n‡rray of credential‡s‡…arameter'); + +112 + g$u£r +-> +addC»d’tŸl +('owner'); + +113 + g$t +-> +is +( +$u£r +-> +hasC»d’tŸl +( +$üed’tŸl +), +Œue +, '->hasCredential() canakes‡n‡rray of credential‡s‡…arameter'); + +114 + g$u£r +-> +addC»d’tŸl +('quasiowner'); + +115 + g$t +-> +is +( +$u£r +-> +hasC»d’tŸl +( +$üed’tŸl +), +Œue +, '->hasCredential() canakes‡n‡rray of credential‡s‡…arameter'); + +116 + g$u£r +-> +»moveC»d’tŸl +('owner'); + +117 + g$t +-> +is +( +$u£r +-> +hasC»d’tŸl +( +$üed’tŸl +), +Œue +, '->hasCredential() canakes‡n‡rray of credential‡s‡…arameter'); + +118 + g$u£r +-> +»moveC»d’tŸl +('supplier'); + +119 + g$t +-> +is +( +$u£r +-> +hasC»d’tŸl +( +$üed’tŸl +), +çl£ +, '->hasCredential() canakes‡n‡rray of credential‡s‡…arameter'); + +121 + g$u£r +-> +þ—rC»d’tŸls +(); + +122 + g$u£r +-> +addC»d’tŸl +('admin'); + +123 + g$u£r +-> +addC»d’tŸl +('user'); + +124 + g$t +-> +is +( +$u£r +-> +hasC»d’tŸl +('admš'), +Œue +); + +125 + g$t +-> +is +( +$u£r +-> +hasC»d’tŸl +('u£r'), +Œue +); + +127 + g$u£r +-> +addC»d’tŸls +('superadmin', 'subscriber'); + +128 + g$t +-> +is +( +$u£r +-> +hasC»d’tŸl +('subsüib”'), +Œue +); + +129 + g$t +-> +is +( +$u£r +-> +hasC»d’tŸl +('su³¿dmš'), +Œue +); + +132 + g$t +-> +is +( +$u£r +-> +hasC»d’tŸl +( +¬¿y +×¼ay('admš',‡¼ay('u£r', 'subsüib”')))), +Œue +); + +134 + g$u£r +-> +addC»d’tŸls +( +¬¿y +('superadmin1', 'subscriber1')); + +135 + g$t +-> +is +( +$u£r +-> +hasC»d’tŸl +('subsüib”1'), +Œue +); + +136 + g$t +-> +is +( +$u£r +-> +hasC»d’tŸl +('su³¿dmš1'), +Œue +); + +139 + g$t +-> +is +( +$u£r +-> +hasC»d’tŸl +( +¬¿y +×¼ay('admš',‡¼ay('u£r', 'subsüib”'),‡¼ay('su³¿dmš1', 'subsüib”1')))), +Œue +); + +142 + g$u£r +-> +þ—rC»d’tŸls +(); + +143 + g$u£r +-> +addC»d’tŸls +( +¬¿y +('1', 2)); + +144 + g$t +-> +is +( +$u£r +-> +hasC»d’tŸl +(1), +Œue +, '->hasCrendential() supports‚umerical credentials'); + +145 + g$t +-> +is +( +$u£r +-> +hasC»d’tŸl +('2'), +Œue +, '->hasCrendential() supports‚umerical credentials'); + +146 + g$t +-> +is +( +$u£r +-> +hasC»d’tŸl +( +¬¿y +('1', 2)), +Œue +, '->hasCrendential() supports‚umerical credentials'); + +147 + g$t +-> +is +( +$u£r +-> +hasC»d’tŸl +( +¬¿y +(1, '2')), +Œue +, '->hasCrendential() supports‚umerical credentials'); + +150 + g$t +-> +dŸg +('->removeCredential()'); + +151 + g$u£r +-> +»moveC»d’tŸl +('user'); + +152 + g$t +-> +is +( +$u£r +-> +hasC»d’tŸl +('u£r'), +çl£ +); + +155 + g$t +-> +dŸg +('->clearCredentials()'); + +156 + g$u£r +-> +þ—rC»d’tŸls +(); + +157 + g$t +-> +is +( +$u£r +-> +hasC»d’tŸl +('subsüib”'), +çl£ +); + +158 + g$t +-> +is +( +$u£r +-> +hasC»d’tŸl +('su³¿dmš'), +çl£ +); + +161 + g$u£r +-> +£tAuth’tiÿ‹d +( +Œue +); + +162 + g$u£r +-> +shutdown +(); + +163 + g$u£r + = +Ãw + +sfBasicSecur™yU£r +( +$di¥©ch” +, +$¡Üage +, +¬¿y +('timeout' => 0)); + +164 + g$t +-> +is +( +$u£r +-> +isTimedOut +(), +Œue +, '->initialize()imes outhe user if‚o„equest made for‡†ongime'); + +166 + g$u£r + = +Ãw + +sfBasicSecur™yU£r +( +$di¥©ch” +, +$¡Üage +, +¬¿y +('timeout' => +çl£ +)); + +167 + g$t +-> +is +( +$u£r +-> +isTimedOut +(), +çl£ +, '->initialize()akes‡imeout…arameter which can be falseo disable sessionimeout'); + +169 + gsfToÞk™ +:: +þ—rDœeùÜy +( +$£ssiÚP©h +); + + @lib/vendor/symfony/test/unit/user/sfUserTest.php + +1 +$£ssiÚP©h +)); + +21 + g$u£r + = +Ãw + +sfU£r +( +$di¥©ch” +, +$¡Üage +); + +24 + g$t +-> +dŸg +('->initialize()'); + +25 + g$t +-> +is +( +$u£r +-> +g‘CuÉu» +(), 'en', '->initialize() setshe cultureo "en" by default'); + +27 + g$u£r +-> +£tCuÉu» +( +nuÎ +); + +28 + g$u£r +-> +š™Ÿlize +( +$di¥©ch” +, +$¡Üage +, +¬¿y +('default_culture' => 'de')); + +30 +u£r_æush +( +$di¥©ch” +, +$u£r +, +$¡Üage +); + +32 + g$t +-> +is +( +$u£r +-> +g‘CuÉu» +(), 'de', '->initialize() setshe cultureohe value of default_culture if‡vailable'); + +34 +u£r_æush +( +$di¥©ch” +, +$u£r +, +$¡Üage +); + +35 + g$t +-> +is +( +$u£r +-> +g‘CuÉu» +(), 'de', '->initialize()„eadshe culture fromhe session data if‡vailable'); + +37 + g$u£rBis + = +Ãw + +sfU£r +( +$di¥©ch” +, +$¡Üage +); + +38 + g$t +-> +is +( +$u£rBis +-> +g‘CuÉu» +(), 'de', '->initialize() serializeshe cultureohe session data'); + +41 + g$t +-> +dŸg +('->setCulture() ->getCulture()'); + +42 + g$u£r +-> +£tCuÉu» +('fr'); + +43 + g$t +-> +is +( +$u£r +-> +g‘CuÉu» +(), 'fr', '->setCulture() changeshe current user culture'); + +46 + g$t +-> +dŸg +('->setFlash() ->getFlash() ->hasFlash()'); + +47 + g$u£r +-> +š™Ÿlize +( +$di¥©ch” +, +$¡Üage +, +¬¿y +('u£_æash' => +Œue +)); + +48 + g$u£r +-> +£tFÏsh +('foo', 'bar'); + +49 + g$t +-> +is +( +$u£r +-> +g‘FÏsh +('foo'), 'bar', '->setFlash() sets‡ flash variable'); + +50 + g$t +-> +is +( +$u£r +-> +hasFÏsh +('foo'), +Œue +, '->hasFlash()„eturnsrue ifhe flash variableƒxists'); + +51 +u£r_æush +( +$di¥©ch” +, +$u£r +, +$¡Üage +, +¬¿y +('u£_æash' => +Œue +)); + +53 + g$u£rBis + = +Ãw + +sfU£r +( +$di¥©ch” +, +$¡Üage +, +¬¿y +('u£_æash' => +Œue +)); + +54 + g$t +-> +is +( +$u£rBis +-> +g‘FÏsh +('foo'), 'bar', '->getFlash()„eturns‡ flash…reviously set'); + +55 + g$t +-> +is +( +$u£rBis +-> +hasFÏsh +('foo'), +Œue +, '->hasFlash()„eturnsrue ifhe flash variableƒxists'); + +56 +u£r_æush +( +$di¥©ch” +, +$u£r +, +$¡Üage +, +¬¿y +('u£_æash' => +Œue +)); + +58 + g$u£rBis + = +Ãw + +sfU£r +( +$di¥©ch” +, +$¡Üage +, +¬¿y +('u£_æash' => +Œue +)); + +59 + g$t +-> +is +( +$u£rBis +-> +g‘FÏsh +('foo'), +nuÎ +, 'Flashes‡re‡utomatically„emoved‡fterhe‚ext„equest'); + +60 + g$t +-> +is +( +$u£rBis +-> +hasFÏsh +('foo'), +çl£ +, '->hasFlash()„eturnsrue ifhe flash variableƒxists'); + +63 + g$u£r +-> +£tA‰ribu‹ +('foo', 'foo'); + +65 + g$t +-> +dŸg +('Array‡ccess for user‡ttributes'); + +66 + g$t +-> +is +( +is£t +( +$u£r +['foo']), +Œue +, '->offsetExists()„eturnsrue if user‡ttributeƒxists'); + +67 + g$t +-> +is +( +is£t +( +$u£r +['foo2']), +çl£ +, '->offsetExists()„eturns false if user‡ttribute does‚otƒxist'); + +68 + g$t +-> +is +( +$u£r +['foo3'], +çl£ +, '->offsetGet()„eturns false if‡ttribute does‚otƒxist'); + +69 + g$t +-> +is +( +$u£r +['foo'], 'foo', '->offsetGet()„eturns‡ttribute by‚ame'); + +71 + g$u£r +['foo2'] = 'foo2'; + +72 + g$t +-> +is +( +$u£r +['foo2'], 'foo2', '->offsetSet() sets‡ttribute by‚ame'); + +74 +un£t +( +$u£r +['foo2']); + +75 + g$t +-> +is +( +is£t +( +$u£r +['foo2']), +çl£ +, '->offsetUnset() unsets‡ttribute by‚ame'); + +77 + g$u£r + = +Ãw + +sfU£r +( +$di¥©ch” +, +$¡Üage +); + +80 +»quœe_Úû +( +$_‹¡_dœ +.'/unit/sfParameterHolderTest.class.php'); + +81 + g$pht + = +Ãw + +sfP¬am‘”HÞd”ProxyTe¡ +( +$t +); + +82 + g$pht +-> +ÏunchTe¡s +( +$u£r +, 'attribute'); + +85 +»quœe_Úû +( +$_‹¡_dœ +.'/unit/sfEventDispatcherTest.class.php'); + +86 + g$di¥©ch”Te¡ + = +Ãw + +sfEv’tDi¥©ch”Te¡ +( +$t +); + +87 + g$di¥©ch”Te¡ +-> +ÏunchTe¡s +( +$di¥©ch” +, +$u£r +, 'user'); + +89 + g$¡Üage +-> +þ—r +(); + +91 +funùiÚ + +u£r_æush +( +$di¥©ch” +, +$u£r +, +$¡Üage +, +$ÝtiÚs + = + $¬¿y +()) + +93 +$u£r +-> + `shutdown +(); + +94 +$u£r +-> + `š™Ÿlize +( +$di¥©ch” +, +$¡Üage +, +$ÝtiÚs +); + +95 +$·¿m‘”s + = +$¡Üage +-> + `g‘O±iÚs +(); + +96 +$¡Üage +-> + `shutdown +(); + +97 +$¡Üage +-> + `š™Ÿlize +( +$·¿m‘”s +); + +98 + } +} + +100 + gsfToÞk™ +:: +þ—rDœeùÜy +( +$£ssiÚP©h +); + + @lib/vendor/symfony/test/unit/util/fixtures/finder/dir1/dir2/file21.php + + @lib/vendor/symfony/test/unit/util/fixtures/finder/dir1/file12.php + + @lib/vendor/symfony/test/unit/util/sfBrowserTest.php + +1 +dŸg +('->click()'); + +18 þas  + cmyClickBrow£r + +ex‹nds + + msfBrow£r + + +20 +public + +funùiÚ + + $£tHtml +( +$html +) + +22 +$this +-> +dom + = +Ãw + + `DomDocum’t +('1.0', 'UTF-8'); + +23 +$this +-> +dom +-> +v®id©eOnP¬£ + = +Œue +; + +24 +$this +-> +dom +-> + `lßdHTML +( +$html +); + +25 +$this +-> +domCssS–eùÜ + = +Ãw + + `sfDomCssS–eùÜ +($this-> +dom +); + +28 +public + +funùiÚ + + $g‘Fžes +() + +30 +$f + = +$this +-> +fžes +; + +31 +$this +-> +fžes + = + `¬¿y +(); + +33  +$f +; + +34 + } +} + +36 +public + +funùiÚ + +ÿÎ +( +$uri +, +$m‘hod + = 'g‘', +$·¿m‘”s + = +¬¿y +(), +$chªgeSck + = +Œue +) + +38 +$uri + = +$this +-> +fixUri +($uri); + +40 + g$this +-> + gf›lds + = +¬¿y +(); + +42  +¬¿y +( +$m‘hod +, +$uri +, +$·¿m‘”s +); + +45 +public + +funùiÚ + + $g‘DeçuÉS”v”A¼ay +( +$Çme +) + +47  + `is£t +( +$this +-> +deçuÉS”v”A¼ay +[ +$Çme +]è? $this->deçuÉS”v”A¼ay[$Çme] : +çl£ +; + +48 + } +} + +51 + g$html + = <<< +EOF + + +52 < +html +> + +53 < +body +> + +54 < +a + +h»f +="/mylšk" +id +="þickabË-lšk" +þass +="Úe-of-mªy-þickabË-lšks"> +‹¡ + +lšk + + +55 < +a + +h»f +="/myimag–šk" +þass +="Úe-of-mªy-þickabË-lšks">< +img + +¤c +="myimage.gif" +®t +="image†ink" /> + +56 < +fÜm + +aùiÚ +="/myfÜm" +m‘hod +="post"> + +57 < +šput + +ty³ +="‹xt" +Çme +="‹xt_deçuÉ_v®ue" +v®ue +="default" /> + +58 < +šput + +ty³ +="‹xt" +Çme +="‹xt" +v®ue +="" /> + +59 < +šput + +ty³ +="‹xt" +Çme +="i_am_di§bËd" +v®ue +="i_am_di§bËd" +di§bËd +="disabled" /> + +60 < +‹x»a + +Çme +="‹x»a"> +cڋÁ + + +61 < +£Ëù + +Çme +="select"> + +62 < +ÝtiÚ + +v®ue +="fœ¡"> +fœ¡ + + +63 < +ÝtiÚ + +v®ue +="£Ëùed" +£Ëùed +="selected">selected + +64 < +ÝtiÚ + +v®ue +="Ï¡"> +Ï¡ + + +65 + +66 < +£Ëù + +Çme +="£Ëù_muɝË" +muÉË +="multiple"> + +67 < +ÝtiÚ + +v®ue +="fœ¡"> +fœ¡ + + +68 < +ÝtiÚ + +v®ue +="£Ëùed" +£Ëùed +="selected">selected + +69 < +ÝtiÚ + +v®ue +="Ï¡" +£Ëùed +="£Ëùed"> +Ï¡ + + +70 + +71 < +šput + +Çme +="¬tiþe[t™Ë]" +v®ue +="title"/> + +72 < +£Ëù + +Çme +="¬tiþe[ÿ‹gÜy]" +muÉË +="multiple"> + +73 < +ÝtiÚ + +v®ue +="1">1 + +74 < +ÝtiÚ + +v®ue +="2" +£Ëùed +="selected">2 + +75 < +ÝtiÚ + +v®ue +="3" +£Ëùed +="selected">3 + +76 + +77 < +šput + +Çme +="¬tiþe[Ü][much][lÚg”]" +v®ue +="very†ong!" /> + +78 < +šput + +Çme +="my¬¿y[]" +v®ue +="value1" /> + +79 < +šput + +Çme +="my¬¿y[]" +v®ue +="value2" /> + +80 < +šput + +Çme +="my¬¿y[]" +v®ue +="value3" /> + +81 < +šput + +ty³ +="fže" +Çme +="myfile" /> + +82 < +šput + +ty³ +="checkbox" +Çme +="checkbox1" +v®ue +="checkboxv®ue" +checked +="checked" /> + +83 < +šput + +ty³ +="checkbox" +Çme +="checkbox2" +checked +="checked" /> + +84 < +šput + +ty³ +="checkbox" +Çme +="checkbox3" /> + +85 < +šput + +ty³ +="¿dio" +Çme +="¿dio1" +v®ue +="a" +id +="a-radio" /> + +86 < +šput + +ty³ +="¿dio" +Çme +="¿dio1" +v®ue +="b" +id +="b-radio" /> + +87 < +šput + +ty³ +="bu‰Ú" +Çme +="mybu‰Ú" +v®ue +="mybuttonvalue" /> + +88 < +šput + +ty³ +="subm™" +Çme +="subm™" +v®ue +="subm™" +id +="clickable-input-submit" /> + +89 + +91 < +fÜm + +aùiÚ +="/myfÜm1" +m‘hod +="get"> + +92 < +šput + +ty³ +="‹xt" +Çme +="‹xt_deçuÉ_v®ue" +v®ue +="default" /> + +93 < +šput + +ty³ +="subm™" +Çme +="subm™" +v®ue +="submit1" /> + +94 + +96 < +fÜm + +aùiÚ +="/myform2"> + +97 < +šput + +ty³ +="‹xt" +Çme +="‹xt_deçuÉ_v®ue" +v®ue +="default" /> + +98 < +šput + +ty³ +="subm™" +Çme +="subm™" +v®ue +="submit2" /> + +99 + +101 < +fÜm + +aùiÚ +="/myform3?key=value"> + +102 < +šput + +ty³ +="‹xt" +Çme +="‹xt_deçuÉ_v®ue" +v®ue +="default" /> + +103 < +šput + +ty³ +="subm™" +Çme +="subm™" +v®ue +="submit3" /> + +104 + +106 < +fÜm + +aùiÚ +="/myform4"> + +107 < +div +>< +¥ª +> + +108 < +šput + +ty³ +="subm™" +Çme +="subm™" +v®ue +="submit4" /> + +109 < +šput + +ty³ +="image" +¤c +="myimage.²g" +®t +="imagsubm™" +Çme +="subm™_image" +v®ue +="image" /> + +110 + +111 + +113 < +fÜm + +aùiÚ +="/myform5"> + +114 < +div +>< +¥ª +> + +115 < +bu‰Ú + +id +="subm™5"> +Click + + +116 < +šput + +ty³ +="image" +¤c +="myimage.²g" +®t +="imagsubm™" +Çme +="subm™_image" +v®ue +="image" /> + +117 + +118 + +120 < +fÜm + +aùiÚ +="/myfÜm6" +m‘hod +="post"> + +121 < +div +>< +¥ª +> + +122 < +šput + +ty³ +="‹xt" +Çme +="foo[b¬]" +v®ue +="foo" /> + +123 < +šput + +ty³ +="‹xt" +Çme +="foo[b¬]" +v®ue +="bar" /> + +124 < +šput + +ty³ +="‹xt" +Çme +="b¬" +v®ue +="foo" /> + +125 < +šput + +ty³ +="‹xt" +Çme +="b¬" +v®ue +="bar" /> + +126 < +šput + +ty³ +="subm™" +Çme +="subm™" +v®ue +="submit6" /> + +127 + +128 + +130 < +a + +h»f +="/myÙh”lšk"> +‹¡ + +lšk + + +131 < +a + +h»f +="/subm™lšk"> +subm™ + + +132 < +a + +h»f +="/subm™imag–šk">< +img + +¤c +="myimage.gif" +®t +="submit" /> + +134 < +šput + +ty³ +="subm™" +id +="orphaned-input-submit" /> + +136 < +ul + +þass +="css-selector-test"> + +137 < +li +> +my + +fœ¡ + < +a + +h»f +="myfœ¡lšk"> +·¿g¿ph + + +138 < +li +> +my + +£cÚd + < +a + +h»f +="my£cÚdlšk"> +·¿g¿ph + + +139 + +141 + +142 + +143 +EOF +; + +145 + g$b + = +Ãw + +myClickBrow£r +(); + +146 + g$b +-> +£tHtml +( +$html +); + +148 + gŒy + + +150 + g$b +-> +þick +('nonexistantname'); + +151 + g$t +-> +çž +('->click()hrows‡nƒrror ifhe‚ame does‚otƒxist'); + +153 + $ÿtch + ( +Exû±iÚ + +$e +) + +155 +$t +-> + `·ss +('->click()hrows‡nƒrror ifhe‚ame does‚otƒxist'); + +156 + } +} + +158 + gŒy + + +160 +li¡ +( +$m‘hod +, +$uri +, +$·¿m‘”s +èð +$b +-> +þick +('submit5'); + +161 + g$t +-> +·ss +('->click() clicks on button†inks'); + +163 + $ÿtch +( +Exû±iÚ + +$e +) + +165 +$t +-> + `çž +('->click() clicks on button†inks'); + +166 + } +} + +168 +li¡ +( +$m‘hod +, +$uri +, +$·¿m‘”s +èð +$b +-> +þick +('test†ink'); + +169 + g$t +-> +is +( +$uri +, '/mylink', '->click() clicks on†inks'); + +171 +li¡ +( +$m‘hod +, +$uri +, +$·¿m‘”s +èð +$b +-> +þick +('‹¡†šk', +¬¿y +(),‡rray('position' => 2)); + +172 + g$t +-> +is +( +$uri +, '/myotherlink', '->click() canake‡hird‡rgumentoellhe…osition ofhe†inko click on'); + +174 +li¡ +( +$m‘hod +, +$uri +, +$·¿m‘”s +èð +$b +-> +þick +('image†ink'); + +175 + g$t +-> +is +( +$uri +, '/myimagelink', '->click() clicks on image†inks'); + +177 +li¡ +( +$m‘hod +, +$uri +, +$·¿m‘”s +èð +$b +-> +þick +('subm™', +nuÎ +, +¬¿y +('position' => 2)); + +178 + g$t +-> +is +( +$uri +, '/submitlink', '->click() clicks on submit†ink‡t…osition 2'); + +180 +li¡ +( +$m‘hod +, +$uri +, +$·¿m‘”s +èð +$b +-> +þick +('subm™', +nuÎ +, +¬¿y +('position' => 3)); + +181 + g$t +-> +is +( +$uri +, '/submitimagelink', '->click() clicks on submit image†ink‡t…osition 3'); + +183 +li¡ +( +$m‘hod +, +$uri +, +$·¿m‘”s +èð +$b +-> +þick +('submit'); + +184 + g$t +-> +is +( +$m‘hod +, 'post', '->click() getshe form method'); + +185 + g$t +-> +is +( +$uri +, '/myform', '->click() clicks on form submit buttons'); + +186 + g$t +-> +is +( +$·¿m‘”s +['text_default_value'], 'default', '->click() uses default form field values (input)'); + +187 + g$t +-> +is +( +$·¿m‘”s +['text'], '', '->click() uses default form field values (input)'); + +188 + g$t +-> +is +( +$·¿m‘”s +['textarea'], 'content', '->click() uses default form field values (textarea)'); + +189 + g$t +-> +is +( +$·¿m‘”s +['select'], 'selected', '->click() uses default form field values (select)'); + +190 + g$t +-> +is +( +$·¿m‘”s +['£Ëù_muɝË'], +¬¿y +('selected', 'last'), '->click() uses default form field values (select - multiple)'); + +191 + g$t +-> +is +( +$·¿m‘”s +['article']['title'], 'title', '->click()„ecognizes‡rray‚ames'); + +192 + g$t +-> +is +( +$·¿m‘”s +['¬tiþe']['ÿ‹gÜy'], +¬¿y +('2', '3'), '->click()„ecognizes‡rray‚ames'); + +193 + g$t +-> +is +( +$·¿m‘”s +['article']['or']['much']['longer'], 'very†ong!', '->click()„ecognizes‡rray‚ames'); + +194 + g$t +-> +is +( +$·¿m‘”s +['submit'], 'submit', '->click()…opulates button clicked'); + +195 + g$t +-> +ok +(! +is£t +( +$·¿m‘”s +['mybutton']), '->click() do‚ot…opulate buttons‚ot clicked'); + +196 + g$t +-> +is +( +$·¿m‘”s +['my¬¿y'], +¬¿y +('value1', 'value2', 'value3'), '->click()„ecognizes‡rray‚ames'); + +197 + g$t +-> +is +( +$·¿m‘”s +['checkbox1'], 'checkboxvalue', '->click()„eturnshe value ofhe checkbox value‡ttribute'); + +198 + g$t +-> +is +( +$·¿m‘”s +['checkbox2'], '1', '->click()„eturns 1 ifhe checkbox has‚o value'); + +200 +li¡ +( +$m‘hod +, +$uri +, +$·¿m‘”s +èð +$b +-> +þick +('mybuttonvalue'); + +201 + g$t +-> +is +( +$uri +, '/myform', '->click() clicks on form buttons'); + +202 + g$t +-> +is +( +$·¿m‘”s +['text_default_value'], 'default', '->click() uses default form field values'); + +203 + g$t +-> +is +( +$·¿m‘”s +['mybutton'], 'mybuttonvalue', '->click()…opulates button clicked'); + +204 + g$t +-> +ok +(! +is£t +( +$·¿m‘”s +['submit']), '->click() do‚ot…opulate buttons‚ot clicked'); + +206 +li¡ +( +$m‘hod +, +$uri +, +$·¿m‘”s +èð +$b +-> +þick +('submit1'); + +207 + g$t +-> +is +( +$uri +, '/myform1?text_default_value=default&submit=submit1', '->click() clicks on form buttons'); + +208 + g$t +-> +is +( +$m‘hod +, 'get', '->click() getshe form method'); + +210 +li¡ +( +$m‘hod +, +$uri +, +$·¿m‘”s +èð +$b +-> +þick +('submit2'); + +211 + g$t +-> +is +( +$m‘hod +, 'get', '->click() defaultso get method'); + +213 +li¡ +( +$m‘hod +, +$uri +, +$·¿m‘”s +èð +$b +-> +þick +('submit3'); + +214 + g$t +-> +is +( +$uri +, '/myform3?key=value&text_default_value=default&submit=submit3', '->click() concatenates fields values withƒxisting‡ction…arameters'); + +216 +li¡ +( +$m‘hod +, +$uri +, +$·¿m‘”s +èð +$b +-> +þick +('submit4'); + +217 + g$t +-> +is +( +$uri +, '/myform4?submit=submit4', '->click() can click on submit button‡nywhere in‡ form'); + +219 +li¡ +( +$m‘hod +, +$uri +, +$·¿m‘”s +èð +$b +-> +þick +('image submit'); + +220 + g$t +-> +is +( +$uri +, '/myform4?submit_image=image', '->click() can click on image button in forms'); + +222 +li¡ +( +$m‘hod +, +$uri +, +$·¿m‘”s +èð +$b +-> +þick +('subm™', +¬¿y +( + +227 '£Ëù_muɝË' => +¬¿y +('first', 'selected', 'last'), + +228 '¬tiþe' => +¬¿y +( + +230 'ÿ‹gÜy' => +¬¿y +(1, 2, 3), + +231 'Ü' => +¬¿y +('much' =>‡rray('longer' => 'long')), + +234 + g$t +-> +is +( +$·¿m‘”s +['text_default_value'], 'myvalue', '->click()akes‡n‡rray of…arameters‡s its second‡rgument'); + +235 + g$t +-> +is +( +$·¿m‘”s +['text'], 'myothervalue', '->click() can override input fields'); + +236 + g$t +-> +is +( +$·¿m‘”s +['textarea'], 'mycontent', '->click() can overrideextarea fields'); + +237 + g$t +-> +is +( +$·¿m‘”s +['select'], 'last', '->click() can override select fields'); + +238 + g$t +-> +is +( +$·¿m‘”s +['£Ëù_muɝË'], +¬¿y +('first', 'selected', 'last'), '->click() can override select (multiple) fields'); + +239 + g$t +-> +is +( +$·¿m‘”s +['article']['title'], 'mytitle', '->click() can override‡rray fields'); + +240 + g$t +-> +is +( +$·¿m‘”s +['¬tiþe']['ÿ‹gÜy'], +¬¿y +(1, 2, 3), '->click() can override‡rray fields'); + +241 + g$t +-> +is +( +$·¿m‘”s +['article']['or']['much']['longer'], 'long', '->click()„ecognizes‡rray‚ames'); + +242 + g$t +-> +is +( +is£t +( +$·¿m‘”s +['i_am_di§bËd']), +çl£ +, '->click() ignores disabled fields'); + +244 +li¡ +( +$m‘hod +, +$uri +, +$·¿m‘”s +èð +$b +-> +þick +('#clickable-link'); + +245 + g$t +-> +is +( +$m‘hod +, 'get', '->click()‡ccepts‡ CSS selector'); + +246 + g$t +-> +is +( +$uri +, '/mylink', '->click()‡ccepts‡ CSS selector'); + +247 + g$t +-> +is_d“¶y +( +$·¿m‘”s +, +¬¿y +(), '->click()‡ccepts‡ CSS selector'); + +249 +li¡ +( +$m‘hod +, +$uri +, +$·¿m‘”s +èð +$b +-> +þick +('.Úe-of-mªy-þickabË-lšks', +¬¿y +(),‡rray('position' => 2)); + +250 + g$t +-> +is +( +$m‘hod +, 'get', '->click()‡ccepts‡ CSS selector‡nd…osition option'); + +251 + g$t +-> +is +( +$uri +, '/myimagelink', '->click()‡ccepts‡ CSS selector‡nd…osition option'); + +252 + g$t +-> +is_d“¶y +( +$·¿m‘”s +, +¬¿y +(), '->click()‡ccepts‡ CSS selector‡nd…osition option'); + +254 +li¡ +( +$m‘hod +, +$uri +, +$·¿m‘”s +èð +$b +-> +þick +('#clickable-input-submit'); + +255 + g$t +-> +is +( +$m‘hod +, 'post', '->click()‡ccepts‡ CSS selector for‡ submit input'); + +256 + g$t +-> +is +( +$uri +, '/myform', '->click()‡ccepts‡ CSS selector for‡ submit input'); + +258 + gŒy + + +260 + g$b +-> +þick +('#orphaned-input-submit'); + +261 + g$t +-> +çž +('->click()hrows‡nƒrror if‡ submit is clicked outside‡ form'); + +263 + $ÿtch + ( +Exû±iÚ + +$e +) + +265 +$t +-> + `·ss +('->click()hrows‡nƒrror if‡ submit is clicked outside‡ form'); + +266 + } +} + +269 + g$t +-> +dŸg +('->setField()'); + +270 +li¡ +( +$m‘hod +, +$uri +, +$·¿m‘”s +èð +$b +-> + +271 +£tF›ld +('text_default_value', 'myvalue')-> + +272 +£tF›ld +('text', 'myothervalue')-> + +273 +£tF›ld +('article[title]', 'mytitle')-> + +274 +£tF›ld +('myarray[0]', 'value0')-> + +275 +£tF›ld +('myarray[1]', 'value1')-> + +276 +£tF›ld +('myarray[2]', 'value2')-> + +277 +þick +('submit') + +279 + g$t +-> +is +( +$·¿m‘”s +['text_default_value'], 'myvalue', '->setField() overrides default form field values'); + +280 + g$t +-> +is +( +$·¿m‘”s +['text'], 'myothervalue', '->setField() overrides default form field values'); + +281 + g$t +-> +is +( +$·¿m‘”s +['article']['title'], 'mytitle', '->setField() overrides default form field values'); + +282 + g$t +-> +is +( +$·¿m‘”s +['my¬¿y'], +¬¿y +('value0', 'value1', 'value2'), '->setField() overrides default form field values'); + +284 +li¡ +( +$m‘hod +, +$uri +, +$·¿m‘”s +èð +$b +-> + +285 +£tF›ld +('text_default_value', 'myvalue')-> + +286 +£tF›ld +('text', 'myothervalue')-> + +287 +þick +('subm™', +¬¿y +('text_default_value' => 'yourvalue', 'text' => 'yourothervalue')) + +289 + g$t +-> +is +( +$·¿m‘”s +['text_default_value'], 'yourvalue', '->setField() is overriden by…arameters from click call'); + +290 + g$t +-> +is +( +$·¿m‘”s +['text'], 'yourothervalue', '->setField() is overriden by…arameters from click call'); + +293 + g$t +-> +dŸg +('->deselect()/select()'); + +294 +li¡ +( +$m‘hod +, +$uri +, +$·¿m‘”s +èð +$b +-> + +295 +de£Ëù +('checkbox1')-> + +296 +£Ëù +('checkbox3')-> + +297 +£Ëù +('b-radio')-> + +298 +þick +('submit') + +300 + g$t +-> +is +( +is£t +( +$·¿m‘”s +['checkbox1']), +çl£ +, '->deselect() unckecks‡ checkbox'); + +301 + g$t +-> +is +( +is£t +( +$·¿m‘”s +['checkbox3']), +Œue +, '->select() ckecks‡ checkbox'); + +302 + g$t +-> +is +( +$·¿m‘”s +['radio1'], 'b', '->select() selects‡„adiobutton'); + +303 +li¡ +( +$m‘hod +, +$uri +, +$·¿m‘”s +èð +$b +-> + +304 +£Ëù +('a-radio')-> + +305 +þick +('submit') + +307 + g$t +-> +is +( +$·¿m‘”s +['radio1'], 'a', '->select()oggles„adiobuttons'); + +309 + gŒy + + +311 + g$b +-> +de£Ëù +('b-radio'); + +312 + g$t +-> +çž +('->deselect() cannot deselect„adiobuttons'); + +314 + $ÿtch +( +Exû±iÚ + +$e +) + +316 +$t +-> + `·ss +('->deselect() cannot deselect„adiobuttons'); + +317 + } +} + +319 +li¡ +( +$m‘hod +, +$uri +, +$·¿m‘”s +èð +$b +-> +þick +('li:contains("first")‡'); + +320 + g$t +-> +is +( +$uri +, 'myfirstlink', 'click‡ccept css selectors without "[" or "]"'); + +323 + g$t +-> +dŸg +('->call()'); + +324 + g$b +-> +ÿÎ +('https://app-test/index.phpmain/index'); + +325 + g$t +-> +is +( +$b +-> +g‘DeçuÉS”v”A¼ay +('HTTPS'), 'on', '->call() detects secure„equests'); + +326 + g$t +-> +is +( +$b +-> +g‘DeçuÉS”v”A¼ay +('HTTPS'), 'on', '->call()…reserves SSL information between„equests'); + +327 + g$b +-> +ÿÎ +('http://app-test/index.phpmain/index'); + +328 + g$t +-> +is +( +$b +-> +g‘DeçuÉS”v”A¼ay +('HTTPS'), +nuÎ +, '->call()…reserve‚on-secure„equests'); + +331 + g$t +-> +dŸg +('file uploads'); + +333 + g$uÃxi¡’tFž’ame + = +sfCÚfig +:: +g‘ +('sf_‹¡_ÿche_dœ'è. +DIRECTORY_SEPARATOR + . 'uÃxi¡’t-fže-'. +md5 +( +g‘mypid +().'-'. +miüÙime +()); + +334 + g$exi¡’tFž’ame + = +sfCÚfig +:: +g‘ +('sf_‹¡_ÿche_dœ'è. +DIRECTORY_SEPARATOR + . 'exi¡’t-fže-'. +md5 +( +g‘mypid +().'-'. +miüÙime +()); + +335 +fže_put_cڋÁs +( +$exi¡’tFž’ame +, 'test'); + +337 +li¡ +( +$m‘hod +, +$uri +, +$·¿m‘”s +èð +$b +-> +þick +('subm™', +¬¿y +('myfže'=> +$uÃxi¡’tFž’ame +)); + +338 + g$fžes + = +$b +-> +g‘Fžes +(); + +339 + g$t +-> +is +( +$m‘hod +, 'post', 'file upload is using„ight method'); + +340 + g$t +-> +is +(! +is£t +( +$·¿m‘”s +['myfile']), 'file upload key is„emoved fromhe main„equest'); + +341 + g$t +-> +is +( +is£t +( +$fžes +['myfže'])&& +is_¬¿y +($fžes['myfže']), +Œue +, 'file upload set up‡ _FILEƒntry for ourest file'); + +342 + g$t +-> +is +( +¬¿y_keys +( +$fžes +['myfže']), +¬¿y +('name','type','tmp_name','error','size'), 'file upload„eturns correctly formatted‡rray'); + +343 + g$t +-> +is +( +$fžes +['myfže']['”rÜ'], +UPLOAD_ERR_NO_FILE +, 'unexistent file does‚otƒxists (UPLOAD_ERR_NO_FILE)'); + +345 +li¡ +( +$m‘hod +, +$uri +, +$·¿m‘”s +èð +$b +-> +þick +('subm™', +¬¿y +('myfže' => +$exi¡’tFž’ame +)); + +346 + g$fžes + = +$b +-> +g‘Fžes +(); + +348 + g$t +-> +is +( +$fžes +['myfže']['”rÜ'], +UPLOAD_ERR_OK +, 'existent fileƒxists (UPLOAD_ERR_OK)'); + +349 + g$t +-> +is +( +$fžes +['myfže']['Çme'], +ba£Çme +( +$exi¡’tFž’ame +), 'name key ok'); + +352 + g$t +-> +dŸg +('bug #7816'); + +353 +li¡ +( +$m‘hod +, +$uri +, +$·¿m‘”s +èð +$b +-> +þick +('submit6'); + +354 + g$t +-> +is +( +$·¿m‘”s +['bar'], 'bar', '->click() overrides inputƒlements defined severalimes'); + +355 + g$t +-> +is +( +$·¿m‘”s +['foo']['bar'], 'bar', '->click() overrides inputƒlements defined severalimes'); + + @lib/vendor/symfony/test/unit/util/sfCallableTest.php + +1 +dŸg +('call()'); + +17 + g$c + = +Ãw + +sfC®ÏbË +('trim'); + +18 + g$t +-> +is +( +$c +-> +ÿÎ +(' foo '), 'foo', '->call() callshe callable withhe given‡rguments'); + +20 þas  + cTrimTe¡ + + +22  +public + +funùiÚ + + $ŒimStic +( +$‹xt +) + +24  + `Œim +( +$‹xt +); + +27 +public + +funùiÚ + + $Œim +( +$‹xt +) + +29  + `Œim +( +$‹xt +); + +30 + } +} + +33 + g$c + = +Ãw + +sfC®ÏbË +( +¬¿y +('TrimTest', 'trimStatic')); + +34 + g$t +-> +is +( +$c +-> +ÿÎ +(' foo '), 'foo', '->call() callshe callable withhe given‡rguments'); + +36 + g$c + = +Ãw + +sfC®ÏbË +( +¬¿y +Òew +TrimTe¡ +(), 'trim')); + +37 + g$t +-> +is +( +$c +-> +ÿÎ +(' foo '), 'foo', '->call() callshe callable withhe given‡rguments'); + +39 + g$c + = +Ãw + +sfC®ÏbË +('nonexistantcallable'); + +40 + gŒy + + +42 + g$c +-> +ÿÎ +(); + +43 + g$t +-> +çž +('->call()hrows‡n sfException ifhe callable is‚ot valid'); + +45 + $ÿtch + ( +sfExû±iÚ + +$e +) + +47 +$t +-> + `·ss +('->call()hrows‡n sfException ifhe callable is‚ot valid'); + +48 + } +} + +51 + g$t +-> +dŸg +('->getCallable()'); + +52 + g$c + = +Ãw + +sfC®ÏbË +('trim'); + +53 + g$t +-> +is +( +$c +-> +g‘C®ÏbË +(), 'trim', '->getCallable()„eturnshe current callable'); + + @lib/vendor/symfony/test/unit/util/sfClassManipulatorTest.php + +1 +dŸg +('->wrapMethod()'); + +113 + g$m + = +Ãw + +sfCÏssMªuÏtÜ +( +$sourû +); + +114 + g$t +-> +is +( +fix_lšeb»aks +( +$m +-> +w¿pM‘hod +('b¬', '// codbefÜe', '// codaá”')), fix_lšeb»aks( +$sourû +), '->wrapMethod() does‚othing ifhe method does‚otƒxist.'); + +115 + g$m + = +Ãw + +sfCÏssMªuÏtÜ +( +$sourû +); + +116 + g$t +-> +is +( +fix_lšeb»aks +( +$m +-> +w¿pM‘hod +('foo', '// codbefÜe')), fix_lšeb»aks( +$sourûW™hCodeBefÜe +), '->wrapMethod()‡dds code beforehe beginning of‡ method.'); + +117 + g$m + = +Ãw + +sfCÏssMªuÏtÜ +( +$sourû +); + +118 + g$t +-> +is +( +fix_lšeb»aks +( +$m +-> +w¿pM‘hod +('foo', '', '// codaá”')), fix_lšeb»aks( +$sourûW™hCodeAᔠ+), '->wrapMethod()‡dds code‡fterheƒnd of‡ method.'); + +119 + g$t +-> +is +( +fix_lšeb»aks +( +$m +-> +w¿pM‘hod +('foo', '// codbefÜe')), fix_lšeb»aks( +$sourûW™hCodeBefÜeAndAᔠ+), '->wrapMethod()‡dds codeohe…reviously manipulated code.'); + +122 + g$t +-> +dŸg +('->getCode()'); + +123 + g$m + = +Ãw + +sfCÏssMªuÏtÜ +( +$sourû +); + +124 + g$t +-> +is +( +fix_lšeb»aks +( +$m +-> +g‘Code +()), fix_lšeb»aks( +$sourû +), '->getCode()„eturnshe source code when‚o manipulations has been done'); + +125 + g$m +-> +w¿pM‘hod +('foo', '', '// code‡fter'); + +126 + g$t +-> +is +( +fix_lšeb»aks +( +$m +-> +g‘Code +()), fix_lšeb»aks( +$sourûW™hCodeAᔠ+), '->getCode()„eturnshe modified code'); + +129 + g$t +-> +dŸg +('->setFile() ->getFile()'); + +130 + g$m + = +Ãw + +sfCÏssMªuÏtÜ +( +$sourû +); + +131 + g$m +-> +£tFže +('foo'); + +132 + g$t +-> +is +( +$m +-> +g‘Fže +(), 'foo', '->setFile() setshe‚ame ofhe file‡ssociated withhe source code'); + +135 + g$t +-> +dŸg +('::fromFile()'); + +136 + g$fže + = +sys_g‘_‹mp_dœ +().'/sf_tmp.php'; + +137 +fže_put_cڋÁs +( +$fže +, +$sourû +); + +138 + g$m + = +sfCÏssMªuÏtÜ +:: +äomFže +( +$fže +); + +139 + g$t +-> +is +( +$m +-> +g‘Fže +(), +$fže +, '::fromFile() setshe file internally'); + +142 + g$t +-> +dŸg +('->save()'); + +143 + g$m + = +sfCÏssMªuÏtÜ +:: +äomFže +( +$fže +); + +144 + g$m +-> +w¿pM‘hod +('foo', '', '// code‡fter'); + +145 + g$m +-> +§ve +(); + +146 + g$t +-> +is +( +fix_lšeb»aks +( +fže_g‘_cڋÁs +( +$fže +)), fix_lšeb»aks( +$sourûW™hCodeAᔠ+), '->save() saveshe modified code if‡ file is‡ssociated withhe instance'); + +148 +uƚk +( +$fže +); + +151 + g$t +-> +dŸg +('->filterMethod()'); + +153 þas  + cM‘hodFž‹»r + + +155 +public + + m$lšes + = +¬¿y +(); + +157 +public + +funùiÚ + + $fž‹r1 +( +$lše +) + +159 +$this +-> +lšes +[] = +$lše +; + +160  +$lše +; + +163 +public + +funùiÚ + + $fž‹r2 +( +$lše +) + +165  + `¡r_»¶aû +( + `¬¿y +( + +168 ), + `¬¿y +( + +171 ), +$lše +); + +172 + } +} + +174 + g$f + = +Ãw + +M‘hodFž‹»r +(); + +176 + g$sourûFž‹»d + = <<< +EOF + + +177 +dŸg +('CRLF'); + +211 +$m + = +Ãw + +sfCÏssMªuÏtÜ +( +$sourûCRLF +); + +212 +$f +-> +lšes + = +¬¿y +(); + +213 +$m +-> +fž‹rM‘hod +('foo', +¬¿y +( +$f +, 'filter1')); + +214 +$t +-> +is +( +$m +-> +g‘Code +(), +$sourûCRLF +, '->filterMethod() does‚ot changehe code ifhe filter does‚othing'); + +215 +$t +-> +is_d“¶y +( +$f +-> +lšes +, +¬¿y +( + +224 +$m +-> +fž‹rM‘hod +('foo', +¬¿y +( +$f +, 'filter2')); + +225 +$t +-> +is +( +$m +-> +g‘Code +(), +$sourûFž‹»dCRLF +, '->filterMethod() modifieshe method'); + +228 +$t +-> +dŸg +('LF'); + +230 +$m + = +Ãw + +sfCÏssMªuÏtÜ +( +$sourûLF +); + +231 +$f +-> +lšes + = +¬¿y +(); + +232 +$m +-> +fž‹rM‘hod +('foo', +¬¿y +( +$f +, 'filter1')); + +233 +$t +-> +is +( +$m +-> +g‘Code +(), +$sourûLF +, '->filterMethod() does‚ot changehe code ifhe filter does‚othing'); + +234 +$t +-> +is_d“¶y +( +$f +-> +lšes +, +¬¿y +( + +243 +$m +-> +fž‹rM‘hod +('foo', +¬¿y +( +$f +, 'filter2')); + +244 +$t +-> +is +( +$m +-> +g‘Code +(), +$sourûFž‹»dLF +, '->filterMethod() modifieshe method'); + +247 +$t +-> +dŸg +('no EOL'); + +249 +$sourûFÏt + = ' +lšes + = +¬¿y +(); + +252 +$m +-> +fž‹rM‘hod +('foo', +¬¿y +( +$f +, 'filter1')); + +253 +$t +-> +is_d“¶y +( +$f +-> +lšes +, +¬¿y +('function foo() { if (true) {„eturn; } }'), '->filterMethod() works whenhere‡re‚o†ine breaks'); + +254 +$t +-> +is +( +$m +-> +g‘Code +(), +$sourûFÏt +, '->filterMethod() works whenhere‡re‚o†ine breaks'); + +257 +$t +-> +dŸg +('mixed EOL'); + +259 +$sourûMixed + = " +lšes + = +¬¿y +(); + +262 +$m +-> +fž‹rM‘hod +('foo', +¬¿y +( +$f +, 'filter1')); + +263 +$t +-> +is_d“¶y +( +$f +-> +lšes +, +¬¿y +( + + @lib/vendor/symfony/test/unit/util/sfContextTest.php + +1 +dŸg +('::getInstance()'); + +44 + g$t +-> +i§_ok +( +$äڋnd_cڋxt +, 'sfContext', '::createInstance()akes‡n‡pplication configuration‡nd„eturns‡pplication context instance'); + +45 + g$t +-> +i§_ok +( +sfCڋxt +:: +g‘In¡ªû +('frontend'), 'sfContext', '::createInstance() creates‡pplication‚ame context instance'); + +47 + g$cڋxt + = +sfCڋxt +:: +g‘In¡ªû +('frontend'); + +48 + g$cڋxt1 + = +sfCڋxt +:: +g‘In¡ªû +('i18n'); + +49 + g$cڋxt2 + = +sfCڋxt +:: +g‘In¡ªû +('cache'); + +50 + g$t +-> +is +( +sfCڋxt +:: +g‘In¡ªû +('i18n'), +$cڋxt1 +, '::getInstance()„eturnshe‚amed context if it‡lreadyƒxists'); + +53 + g$t +-> +dŸg +('::switchTo()'); + +54 + gsfCڋxt +:: +sw™chTo +('i18n'); + +55 + g$t +-> +is +( +sfCڋxt +:: +g‘In¡ªû +(), +$cڋxt1 +, '::switchTo() changeshe default context instance„eturned by ::getInstance()'); + +56 + gsfCڋxt +:: +sw™chTo +('cache'); + +57 + g$t +-> +is +( +sfCڋxt +:: +g‘In¡ªû +(), +$cڋxt2 +, '::switchTo() changeshe default context instance„eturned by ::getInstance()'); + +60 + g$t +-> +dŸg +('->get() ->set() ->has()'); + +61 + g$t +-> +is +( +$cڋxt1 +-> +has +('objeù'), +çl£ +, '->has()„eturns false if‚o object ofhe given‚ameƒxist'); + +62 + g$objeù + = +Ãw + +¡dCÏss +(); + +63 + g$cڋxt1 +-> +£t +('objeù', +$objeù +, '->set() stores‡n object inhe current context instance'); + +64 + g$t +-> +is +( +$cڋxt1 +-> +has +('objeù'), +Œue +, '->has()„eturnsrue if‡n object is stored forhe given‚ame'); + +65 + g$t +-> +is +( +$cڋxt1 +-> +g‘ +('objeù'), +$objeù +, '->get()„eturnshe object‡ssociated withhe given‚ame'); + +66 + gŒy + + +68 + g$cڋxt1 +-> +g‘ +('object1'); + +69 + g$t +-> +çž +('->get()hrows‡n sfException if‚o object is stored forhe given‚ame'); + +71 + $ÿtch + ( +sfExû±iÚ + +$e +) + +73 +$t +-> + `·ss +('->get()hrows‡n sfException if‚o object is stored forhe given‚ame'); + +74 + } +} + +76 + g$cڋxt +['foo'] = +$äڋnd_cڋxt +; + +77 + g$t +-> +dŸg +('Array‡ccess for context objects'); + +78 + g$t +-> +is +( +is£t +( +$cڋxt +['foo']), +Œue +, '->offsetExists()„eturnsrue if context objectƒxists'); + +79 + g$t +-> +is +( +is£t +( +$cڋxt +['foo2']), +çl£ +, '->offsetExists()„eturns false if context object does‚otƒxist'); + +80 + g$t +-> +i§_ok +( +$cڋxt +['foo'], 'sfContext', '->offsetGet()„eturns‡ttribute by‚ame'); + +82 + g$cڋxt +['foo2'] = +$i18n_cڋxt +; + +83 + g$t +-> +i§_ok +( +$cڋxt +['foo2'], 'sfContext', '->offsetSet() sets object by‚ame'); + +85 +un£t +( +$cڋxt +['foo2']); + +86 + g$t +-> +is +( +is£t +( +$cڋxt +['foo2']), +çl£ +, '->offsetUnset() unsets object by‚ame'); + +88 + g$t +-> +dŸg +('->__call()'); + +90 + g$cڋxt +-> +£tFoo4 +( +$i18n_cڋxt +); + +91 + g$t +-> +is +( +$cڋxt +-> +has +('foo4'), +Œue +, '->__call() sets context objects by‚ame using setName()'); + +92 + g$t +-> +i§_ok +( +$cڋxt +-> +g‘Foo4 +(), 'sfContext', '->__call()„eturns context objects by‚ame using getName()'); + +94 + gŒy + + +96 + g$cڋxt +-> +unknown +(); + +97 + g$t +-> +çž +('->__call()hrows‡n sfException if factory / method does‚otƒxist'); + +99 + $ÿtch + ( +sfExû±iÚ + +$e +) + +101 +$t +-> + `·ss +('->__call()hrows‡n sfException if factory / method does‚otƒxist'); + +102 + } +} + + @lib/vendor/symfony/test/unit/util/sfDomCssSelectorTest.php + +1 + +17 < +h—d +> + +18 + +19 < +body +> + +20 < +h1 +> +Te¡ + +·ge + + +22 < +h2 +> +T™Ë + 1 + +23 < +p + +þass +="h—d”"> +h—d” +

    + +24 < +p + +þass +="foØb¬ foob¬"> +muÉi +- +þas£s +

    + +25 < +p + +þass +="myfoo"> +myfoo +

    + +26 < +p + +þass +="myfoo" +id +="myb¬"> +myfoo + +bis +

    + +28 < +p + +Úþick +="javasüt:®”t('w™h‡ .‡nd‡ # insidª‡‰ribu‹');"> +wÜks + +g»© +

    + +30 < +£Ëù +> + +31 < +ÝtiÚ + +v®ue +="0"> +foo + +šput + + +32 + +34 < +div + +id +="simplelist"> + +35 < +ul + +id +="list"> + +36 < +li +> +Fœ¡ + + +37 < +li +> +SecÚd + +w™h + +a + <¨ +h»f +="h‰p://www.googË.com/" +þass +="foo1 b¬1 b¬1-foo1 foob¬1"> +lšk + + +38 + +40 < +ul + +id +="anotherlist"> + +41 < +li +> +Fœ¡ + + +42 < +li +> +SecÚd + + +43 < +li +> +Thœd + +w™h + < +a + +þass +="b¬1-foo1"> +ªÙh” + +lšk + + +44 + +45 + +47 < +h2 +> +T™Ë + 2 + +48 < +ul + +id +="mylist"> + +49 < +li +> +–em’t + 1 + +50 < +li +> +–em’t + 2 + +51 < +li +> + +52 < +ul +> + +53 < +li +> +–em’t + 3 + +54 < +li +> +–em’t + 4 + +55 + +56 + +57 + +59 < +div + +id +="combinators"> + +60 < +ul +> + +61 < +li +> +‹¡ + 1 + +62 < +li +> +‹¡ + 2 + +63 < +ul +> + +64 < +li +> +‹¡ + 3 + +65 < +li +> +‹¡ + 4 + +66 + +67 + +68 + +70 < +div + +id +="adjacent_bug"> + +71 < +p +> +Fœ¡ + +·¿g¿ph +

    + +72 < +p +> +SecÚd + +·¿g¿ph +

    + +73 < +p +> +Thœd + < +a + +h»f +='#'> +·¿g¿ph +

    + +74 + +76 < +div + +id +="foٔ"> +foٔ +
    + +77 + +78 + +79 +EOF +; + +81 + g$dom + = +Ãw + +DomDocum’t +('1.0', 'utf-8'); + +82 + g$dom +-> + gv®id©eOnP¬£ + = +Œue +; + +83 + g$dom +-> +lßdHTML +( +$html +); + +85 + g$c + = +Ãw + +sfDomCssS–eùÜ +( +$dom +); + +88 + g$t +-> +dŸg +('->matchAll()'); + +90 + g$t +-> +dŸg +('basic selectors'); + +91 + g$t +-> +is +( +$c +-> +m©chAÎ +('h1')-> +g‘V®ues +(), +¬¿y +('Test…age'), '->matchAll()akes‡ CSS selector‡s its first‡rgument'); + +92 + g$t +-> +is +( +$c +-> +m©chAÎ +('h2')-> +g‘V®ues +(), +¬¿y +('Title 1', 'Title 2'), '->matchAll()„eturns‡n‡rray of matchingexts'); + +93 + g$t +-> +is +( +$c +-> +m©chAÎ +('#foٔ')-> +g‘V®ues +(), +¬¿y +('footer'), '->matchAll() supports searching htmlƒlements by id'); + +94 + g$t +-> +is +( +$c +-> +m©chAÎ +('div#foٔ')-> +g‘V®ues +(), +¬¿y +('footer'), '->matchAll() supports searching htmlƒlements by id for‡ag‚ame'); + +95 + g$t +-> +is +( +$c +-> +m©chAÎ +('*[þass="myfoo"]')-> +g‘V®ues +(), +¬¿y +('myfoo', 'myfoo bis'), '->matchAll() canake‡ *o matchƒveryƒlements'); + +96 + g$t +-> +is +( +$c +-> +m©chAÎ +('*[þass=myfoo]')-> +g‘V®ues +(), +¬¿y +('myfoo', 'myfoo bis'), '->matchAll() canake‡ *o matchƒveryƒlements'); + +97 + g$t +-> +is +( +$c +-> +m©chAÎ +('*[v®ue="0"]')-> +g‘V®ues +(), +¬¿y +('foo input'), '->matchAll() canake‡ *o matchƒveryƒlements'); + +99 + g$t +-> +is +( +$c +-> +m©chAÎ +('.h—d”')-> +g‘V®ues +(), +¬¿y +('header'), '->matchAll() supports searching htmlƒlements by class‚ame'); + +100 + g$t +-> +is +( +$c +-> +m©chAÎ +('p.h—d”')-> +g‘V®ues +(), +¬¿y +('header'), '->matchAll() supports searching htmlƒlements by class‚ame for‡ag‚ame'); + +101 + g$t +-> +is +( +$c +-> +m©chAÎ +('div.h—d”')-> +g‘V®ues +(), +¬¿y +(), '->matchAll() supports searching htmlƒlements by class‚ame for‡ag‚ame'); + +102 + g$t +-> +is +( +$c +-> +m©chAÎ +('*.h—d”')-> +g‘V®ues +(), +¬¿y +('header'), '->matchAll() supports searching htmlƒlements by class‚ame'); + +104 + g$t +-> +is +( +$c +-> +m©chAÎ +('.foo')-> +g‘V®ues +(), +¬¿y +('multi-classes'), '->matchAll() supports searching htmlƒlements by class‚ame for multi-classƒlements'); + +105 + g$t +-> +is +( +$c +-> +m©chAÎ +('.b¬')-> +g‘V®ues +(), +¬¿y +('multi-classes'), '->matchAll() supports searching htmlƒlements by class‚ame for multi-classƒlements'); + +106 + g$t +-> +is +( +$c +-> +m©chAÎ +('.foob¬')-> +g‘V®ues +(), +¬¿y +('multi-classes'), '->matchAll() supports searching htmlƒlements by class‚ame for multi-classƒlements'); + +108 + g$t +-> +is +( +$c +-> +m©chAÎ +('ul#myli¡ uÈli')-> +g‘V®ues +(), +¬¿y +('element 3', 'element 4'), '->matchAll() supports searching htmlƒlements by several selectors'); + +110 + g$t +-> +is +( +$c +-> +m©chAÎ +('#nÚexi¡ªt')-> +g‘V®ues +(), +¬¿y +(), '->matchAll()„eturns‡nƒmpty‡rray ifhe id does‚otƒxist'); + +112 + g$t +-> +is +( +$c +-> +m©chAÎ +('.b¬1-foo1')-> +g‘V®ues +(), +¬¿y +('link', 'another†ink'), 'Hyphenated class‚ames‡re matched correctly'); + +114 + g$t +-> +dŸg +('attribute selectors'); + +115 + g$t +-> +is +( +$c +-> +m©chAÎ +('ul#li¡†˜a[h»f]')-> +g‘V®ues +(), +¬¿y +('link'), '->matchAll() supports checking‡ttributeƒxistence'); + +116 + g$t +-> +is +( +$c +-> +m©chAÎ +('ul#li¡†˜a[þass~="foo1"]')-> +g‘V®ues +(), +¬¿y +('link'), '->matchAll() supports checking‡ttribute word matching'); + +117 + g$t +-> +is +( +$c +-> +m©chAÎ +('ul#li¡†˜a[þass~="b¬1"]')-> +g‘V®ues +(), +¬¿y +('link'), '->matchAll() supports checking‡ttribute word matching'); + +118 + g$t +-> +is +( +$c +-> +m©chAÎ +('ul#li¡†˜a[þass~="foob¬1"]')-> +g‘V®ues +(), +¬¿y +('link'), '->matchAll() supports checking‡ttribute word matching'); + +119 + g$t +-> +is +( +$c +-> +m©chAÎ +('ul#li¡†˜a[þass^="foo1"]')-> +g‘V®ues +(), +¬¿y +('link'), '->matchAll() supports checking‡ttribute starting with'); + +120 + g$t +-> +is +( +$c +-> +m©chAÎ +('ul#li¡†˜a[þass$="foob¬1"]')-> +g‘V®ues +(), +¬¿y +('link'), '->matchAll() supports checking‡ttributeƒnding with'); + +121 + g$t +-> +is +( +$c +-> +m©chAÎ +('ul#li¡†˜a[þass*="oba"]')-> +g‘V®ues +(), +¬¿y +('link'), '->matchAll() supports checking‡ttribute with *'); + +122 + g$t +-> +is +( +$c +-> +m©chAÎ +('ul#li¡†˜a[h»f="h‰p://www.googË.com/"]')-> +g‘V®ues +(), +¬¿y +('link'), '->matchAll() supports checking‡ttribute word matching'); + +123 + g$t +-> +is +( +$c +-> +m©chAÎ +('ul#ªÙh”li¡†˜a[þass|="b¬1"]')-> +g‘V®ues +(), +¬¿y +('another†ink'), '->matchAll() supports checking‡ttribute starting with value followed by optional hyphen'); + +125 + g$t +-> +is +( +$c +-> +m©chAÎ +('ul#li¡†˜a[þass*="oba"][þass*="ba"]')-> +g‘V®ues +(), +¬¿y +('link'), '->matchAll() supports chaining‡ttribute selectors'); + +126 + g$t +-> +is +( +$c +-> +m©chAÎ +('p[þass="myfoo"][id="myb¬"]')-> +g‘V®ues +(), +¬¿y +('myfoo bis'), '->matchAll() supports chaining‡ttribute selectors'); + +128 + g$t +-> +is +( +$c +-> +m©chAÎ +('p[Úþick*="¨.‡nd‡ #"]')-> +g‘V®ues +(), +¬¿y +('works great'), '->matchAll() support . #‡nd spaces in‡ttribute selectors'); + +130 + g$t +-> +dŸg +('combinators'); + +131 + g$t +-> +is +( +$c +-> +m©chAÎ +('body h1')-> +g‘V®ues +(), +¬¿y +('Test…age'), '->matchAll()akes‡ CSS selectors separated by one or more spaces'); + +132 + g$t +-> +is +( +$c +-> +m©chAÎ +('div#combš©Ü > uÈ >†i')-> +g‘V®ues +(), +¬¿y +('test 1', 'test 2'), '->matchAll() support > combinator'); + +133 + g$t +-> +is +( +$c +-> +m©chAÎ +('div#combš©Üs>ul>li')-> +g‘V®ues +(), +¬¿y +('test 1', 'test 2'), '->matchAll() support > combinator with optional surrounding spaces'); + +134 + g$t +-> +is +( +$c +-> +m©chAÎ +('div#combš©Ü l˜ +†i')-> +g‘V®ues +(), +¬¿y +('test 2', 'test 4'), '->matchAll() support + combinator'); + +135 + g$t +-> +is +( +$c +-> +m©chAÎ +('div#combš©Ü li+li')-> +g‘V®ues +(), +¬¿y +('test 2', 'test 4'), '->matchAll() support + combinator with optional surrounding spaces'); + +137 + g$t +-> +is +( +$c +-> +m©chAÎ +('h1, h2')-> +g‘V®ues +(), +¬¿y +('Test…age', 'Title 1', 'Title 2'), '->matchAll()akes‡ multiple CSS selectors separated by‡ ,'); + +138 + g$t +-> +is +( +$c +-> +m©chAÎ +('h1,h2')-> +g‘V®ues +(), +¬¿y +('Test…age', 'Title 1', 'Title 2'), '->matchAll()akes‡ multiple CSS selectors separated by‡ ,'); + +139 + g$t +-> +is +( +$c +-> +m©chAÎ +('h1 , h2')-> +g‘V®ues +(), +¬¿y +('Test…age', 'Title 1', 'Title 2'), '->matchAll()akes‡ multiple CSS selectors separated by‡ ,'); + +140 + g$t +-> +is +( +$c +-> +m©chAÎ +('h1, h1,h1')-> +g‘V®ues +(), +¬¿y +('Test…age'), '->matchAll()„eturns‚odes only once for multiple selectors'); + +141 + g$t +-> +is +( +$c +-> +m©chAÎ +('h1,h2,h1')-> +g‘V®ues +(), +¬¿y +('Test…age', 'Title 1', 'Title 2'), '->matchAll()„eturns‚odes only once for multiple selectors'); + +143 + g$t +-> +is +( +$c +-> +m©chAÎ +('p[Úþick*="¨.‡nd‡ #"], div#combš©Ü > uÈl˜+†i')-> +g‘V®ues +(), +¬¿y +('works great', 'test 2', 'test 4'), '->matchAll() megaƒxample!'); + +145 + g$t +-> +is +( +$c +-> +m©chAÎ +('.myfoo:cڏšs("bis")')-> +g‘V®ues +(), +¬¿y +('myfoo bis'), '->matchAll() :contains()'); + +146 + g$t +-> +is +( +$c +-> +m©chAÎ +('.myfoo:eq(1)')-> +g‘V®ues +(), +¬¿y +('myfoo bis'), '->matchAll() :eq()'); + +147 + g$t +-> +is +( +$c +-> +m©chAÎ +('.myfoo:Ï¡')-> +g‘V®ues +(), +¬¿y +('myfoo bis'), '->matchAll() :last'); + +148 + g$t +-> +is +( +$c +-> +m©chAÎ +('.myfoo:fœ¡')-> +g‘V®ues +(), +¬¿y +('myfoo'), '->matchAll() :first'); + +149 + g$t +-> +is +( +$c +-> +m©chAÎ +('h2:fœ¡')-> +g‘V®ues +(), +¬¿y +('Title 1'), '->matchAll() :first'); + +150 + g$t +-> +is +( +$c +-> +m©chAÎ +('p.myfoo:fœ¡')-> +g‘V®ues +(), +¬¿y +('myfoo'), '->matchAll() :first'); + +151 + g$t +-> +is +( +$c +-> +m©chAÎ +('p:É(2)')-> +g‘V®ues +(), +¬¿y +('header', 'multi-classes'), '->matchAll() :lt'); + +152 + g$t +-> +is +( +$c +-> +m©chAÎ +('p:gt(2)')-> +g‘V®ues +(), +¬¿y +('myfoo bis', 'works great', 'First…aragraph', 'Second…aragraph', 'Third…aragraph'), '->matchAll() :gt'); + +153 + g$t +-> +is +( +$c +-> +m©chAÎ +('p:odd')-> +g‘V®ues +(), +¬¿y +('multi-classes', 'myfoo bis', 'First…aragraph', 'Third…aragraph'), '->matchAll() :odd'); + +154 + g$t +-> +is +( +$c +-> +m©chAÎ +('p:ev’')-> +g‘V®ues +(), +¬¿y +('header', 'myfoo', 'works great', 'Second…aragraph'), '->matchAll() :even'); + +155 + g$t +-> +is +( +$c +-> +m©chAÎ +('#sim¶–i¡†i:fœ¡-chžd')-> +g‘V®ues +(), +¬¿y +('First', 'First'), '->matchAll() :first-child'); + +156 + g$t +-> +is +( +$c +-> +m©chAÎ +('#sim¶–i¡†i:Áh-chžd(1)')-> +g‘V®ues +(), +¬¿y +('First', 'First'), '->matchAll() :nth-child'); + +157 + g$t +-> +is +( +$c +-> +m©chAÎ +('#sim¶–i¡†i:Áh-chžd(2)')-> +g‘V®ues +(), +¬¿y +('Second with‡†ink', 'Second'), '->matchAll() :nth-child'); + +158 + g$t +-> +is +( +$c +-> +m©chAÎ +('#sim¶–i¡†i:Áh-chžd(3)')-> +g‘V®ues +(), +¬¿y +('Third with‡nother†ink'), '->matchAll() :nth-child'); + +159 + g$t +-> +is +( +$c +-> +m©chAÎ +('#sim¶–i¡†i:Ï¡-chžd')-> +g‘V®ues +(), +¬¿y +('Second with‡†ink', 'Third with‡nother†ink'), '->matchAll() :last-child'); + +161 + g$t +-> +dŸg +('combinations of…seudo-selectors'); + +162 + g$t +-> +is +( +$c +-> +m©chAÎ +('.myfoo:cڏšs("myfoo"):cڏšs("bis")')-> +g‘V®ues +(), +¬¿y +('myfoo bis'), '->matchAll() :contains():contains()'); + +163 + g$t +-> +is +( +$c +-> +m©chAÎ +('.myfoo:cڏšs("myfoo"):Ï¡')-> +g‘V®ues +(), +¬¿y +('myfoo bis'), '->matchAll() :contains():last'); + +164 + g$t +-> +is +( +$c +-> +m©chAÎ +('.myfoo:Ï¡:cڏšs("foob¬baz")')-> +g‘V®ues +(), +¬¿y +(), '->matchAll() :last:contains()'); + +165 + g$t +-> +is +( +$c +-> +m©chAÎ +('.myfoo:cڏšs("myfoo"):cڏšs(\'bis\'):cڏšs(foo)')-> +g‘V®ues +(), +¬¿y +('myfoo bis'), '->matchAll() :contains() supports different quote styles'); + +168 + g$t +-> +dŸg +('->matchAll()'); + +169 + g$t +-> +is +( +$c +-> +m©chAÎ +('ul')->m©chAÎ('li')-> +g‘V®ues +(), $c->matchAll('ul†i')->getValues(), '->matchAll()„eturns‡‚ew sfDomCssSelector„estrictedohe„esult‚odes'); + +172 + g$t +-> +dŸg +('->matchSingle()'); + +173 + g$t +-> +is +( +¬¿y +( +$c +-> +m©chAÎ +('uÈli')-> +g‘V®ue +()), $c-> +m©chSšgË +('uÈli')-> +g‘V®ues +(), '->matchSingle()„eturns‡‚ew sfDomCssSelector„estrictedohe first„esult‚ode'); + +176 + g$t +-> +dŸg +('->getValues()'); + +177 + g$t +-> +is +( +$c +-> +m©chAÎ +('p.myfoo')-> +g‘V®ues +(), +¬¿y +('myfoo', 'myfoo bis'), '->getValues()„eturns‡ll‚ode values'); + +180 + g$t +-> +dŸg +('->getValue()'); + +181 + g$t +-> +is +( +$c +-> +m©chAÎ +('h1')-> +g‘V®ue +(), 'Test…age', '->getValue()„eturnshe first‚ode value'); + +183 + g$t +-> +is +( +$c +-> +m©chAÎ +('#adjaûÁ_bug >…')-> +g‘V®ues +(), +¬¿y +('First…aragraph', 'Second…aragraph', 'Third…aragraph'), '->matchAll() suppportshe + combinator'); + +184 + g$t +-> +is +( +$c +-> +m©chAÎ +('#adjaûÁ_bug >… >‡')-> +g‘V®ues +(), +¬¿y +('paragraph'), '->matchAll() suppportshe + combinator'); + +185 + g$t +-> +is +( +$c +-> +m©chAÎ +('#adjaûÁ_bug… +…')-> +g‘V®ues +(), +¬¿y +('Second…aragraph', 'Third…aragraph'), '->matchAll() suppportshe + combinator'); + +186 + g$t +-> +is +( +$c +-> +m©chAÎ +('#adjaûÁ_bug >… +…')-> +g‘V®ues +(), +¬¿y +('Second…aragraph', 'Third…aragraph'), '->matchAll() suppportshe + combinator'); + +187 + g$t +-> +is +( +$c +-> +m©chAÎ +('#adjaûÁ_bug >… +… >‡')-> +g‘V®ues +(), +¬¿y +('paragraph'), '->matchAll() suppportshe + combinator'); + +190 + g$t +-> +dŸg +('Iterator interface'); + +191 +fܗch + ( +$c +-> +m©chAÎ +('h2'è +as + +$key + => +$v®ue +) + +193  +$key +) + +196 +$t +-> +is +( +$v®ue +-> +nodeV®ue +, 'Title 1', 'The object is‡n iterator'); + +199 +$t +-> +is +( +$v®ue +-> +nodeV®ue +, 'Title 2', 'The object is‡n iterator'); + +202 +$t +-> +çž +('The object is‡n iterator'); + +207 + g$t +-> +dŸg +('Countable interface'); + +208 + g$t +-> +is +( +couÁ +( +$c +-> +m©chAÎ +('h1')), 1, 'sfDomCssSelector implements Countable'); + +209 + g$t +-> +is +( +couÁ +( +$c +-> +m©chAÎ +('h2')), 2, 'sfDomCssSelector implements Countable'); + + @lib/vendor/symfony/test/unit/util/sfFinderTest.php + +1 + `is +( +$a +, +$b +, +$mes§ge +); + +22 + } +} + +23 + g$t + = +Ãw + +my_lime_‹¡ +(39); + +25 +»quœe_Úû +( +$_‹¡_dœ +.'/../lib/util/sfFinder.class.php'); + +27 + g$fixtu»Dœ + = +dœÇme +( +__FILE__ +).'/fixtures/finder'; + +28 + g$phpFžes + = +¬¿y +( + +32 + g$txtFžes + = +¬¿y +( + +36 + g$»gexpFžes + = +¬¿y +( + +43 + g$»gexpW™hModif›rFžes + = +¬¿y +( + +51 + g$®lFžes + = +¬¿y +( + +65 + g$mšD•th1Fžes + = +¬¿y +( + +76 + g$maxD•th2Fžes + = +¬¿y +( + +88 + g$ªyW™houtDœ2 + = +¬¿y +( + +100 + g$t +-> +dŸg +('::type()'); + +101 + g$fšd” + = +sfFšd” +:: +ty³ +('file'); + +102 + g$t +-> +ok +( +$fšd” + +š¡ªûof + +sfFšd” +, '::type()„eturns‡ sfFinder instance'); + +103 + g$t +-> +is +( +$fšd” +-> +g‘_ty³ +(), 'file', '::type()akes‡ file, dir, or‡ny‡s its first‡rgument'); + +104 + g$fšd” + = +sfFšd” +:: +ty³ +('dir'); + +105 + g$t +-> +is +( +$fšd” +-> +g‘_ty³ +(), 'directory', '::type()akes‡ file, dir, or‡ny‡s its first‡rgument'); + +106 + g$fšd” + = +sfFšd” +:: +ty³ +('any'); + +107 + g$t +-> +is +( +$fšd” +-> +g‘_ty³ +(), 'any', '::type()akes‡ file, dir, or‡ny‡s its first‡rgument'); + +108 + g$fšd” + = +sfFšd” +:: +ty³ +('somethingelse'); + +109 + g$t +-> +is +( +$fšd” +-> +g‘_ty³ +(), 'file', '::type()akes‡ file, dir, or‡ny‡s its first‡rgument'); + +112 + g$t +-> +dŸg +('->setType() ->get_type()'); + +113 + g$fšd” + = +sfFšd” +:: +ty³ +('file'); + +114 + g$fšd” +-> +£tTy³ +('dir'); + +115 + g$t +-> +is +( +$fšd” +-> +g‘_ty³ +(), 'directory', '->getType()„eturnsheype of searched files'); + +116 + g$t +-> +is +( +$fšd” +-> +£tTy³ +('file'), $finder, '->setType() implements‡ fluent interface'); + +119 + g$t +-> +dŸg +('->name()'); + +120 + g$fšd” + = +sfFšd” +:: +ty³ +('file'); + +121 + g$t +-> +is +( +$fšd” +-> +Çme +('*.php'), $finder, '->name() implementshe fluent interface'); + +123 + g$t +-> +dŸg +('->name() file‚ame support'); + +124 + g$fšd” + = +sfFšd” +:: +ty³ +('fže')-> +Çme +('fže21.php')-> +»Ïtive +(); + +125 + g$t +-> +¬¿ys_¬e_equ® +( +$fšd” +-> +š +( +$fixtu»Dœ +), +¬¿y +('dir1/dir2/file21.php'), '->name() canake‡ file‚ame‡s‡n‡rgument'); + +127 + g$t +-> +dŸg +('->name() globs support'); + +128 + g$fšd” + = +sfFšd” +:: +ty³ +('fže')-> +Çme +('*.php')-> +»Ïtive +(); + +129 + g$t +-> +¬¿ys_¬e_equ® +( +$fšd” +-> +š +( +$fixtu»Dœ +), +$phpFžes +, '->name() canake‡ glob…attern‡s‡n‡rgument'); + +131 + g$t +-> +dŸg +('->name()„egexp support'); + +132 + g$fšd” + = +sfFšd” +:: +ty³ +('fže')-> +Çme +('/^fže2.*$/')-> +»Ïtive +(); + +133 + g$t +-> +¬¿ys_¬e_equ® +( +$fšd” +-> +š +( +$fixtu»Dœ +), +$»gexpFžes +, '->name() canake‡„egexp‡s‡n‡rgument'); + +135 + g$t +-> +dŸg +('->name()„egexp support with modifier'); + +136 + g$fšd” + = +sfFšd” +:: +ty³ +('fže')-> +Çme +('/^fže(2|5).*$/i')-> +»Ïtive +(); + +137 + g$t +-> +¬¿ys_¬e_equ® +( +$fšd” +-> +š +( +$fixtu»Dœ +), +$»gexpW™hModif›rFžes +, '->name() canake‡„egexp with‡ modifier‡s‡n‡rgument'); + +139 + g$t +-> +dŸg +('->name()‡rray /‡rgs / chaining'); + +140 + g$fšd” + = +sfFšd” +:: +ty³ +('fže')-> +Çme +( +¬¿y +('*.php', '*.txt'))-> +»Ïtive +(); + +141 + g$t +-> +¬¿ys_¬e_equ® +( +$fšd” +-> +š +( +$fixtu»Dœ +), +¬¿y_m”ge +( +$phpFžes +, +$txtFžes +), '->name() canake‡n‡rray of…atterns'); + +142 + g$fšd” + = +sfFšd” +:: +ty³ +('fže')-> +Çme +('*.php', '*.txt')-> +»Ïtive +(); + +143 + g$t +-> +¬¿ys_¬e_equ® +( +$fšd” +-> +š +( +$fixtu»Dœ +), +¬¿y_m”ge +( +$phpFžes +, +$txtFžes +), '->name() canake…atterns‡s‡rguments'); + +144 + g$fšd” + = +sfFšd” +:: +ty³ +('fže')-> +Çme +('*.php')->Çme('*.txt')-> +»Ïtive +(); + +145 + g$t +-> +¬¿ys_¬e_equ® +( +$fšd” +-> +š +( +$fixtu»Dœ +), +¬¿y_m”ge +( +$phpFžes +, +$txtFžes +), '->name() can be called severalimes'); + +148 + g$t +-> +dŸg +('->not_name()'); + +149 + g$fšd” + = +sfFšd” +:: +ty³ +('file'); + +150 + g$t +-> +is +( +$fšd” +-> +nÙ_Çme +('*.php'), $finder, '->not_name() implementshe fluent interface'); + +152 + g$t +-> +dŸg +('->not_name() file‚ame support'); + +153 + g$fšd” + = +sfFšd” +:: +ty³ +('fže')-> +nÙ_Çme +('fže21.php')-> +»Ïtive +(); + +154 + g$t +-> +¬¿ys_¬e_equ® +( +$fšd” +-> +š +( +$fixtu»Dœ +), +¬¿y_v®ues +( +¬¿y_diff +( +$®lFžes +, +¬¿y +('dir1/dir2/file21.php'))), '->not_name() canake‡ file‚ame‡s‡n‡rgument'); + +156 + g$t +-> +dŸg +('->not_name() globs support'); + +157 + g$fšd” + = +sfFšd” +:: +ty³ +('fže')-> +nÙ_Çme +('*.php')-> +»Ïtive +(); + +158 + g$t +-> +¬¿ys_¬e_equ® +( +$fšd” +-> +š +( +$fixtu»Dœ +), +¬¿y_v®ues +( +¬¿y_diff +( +$®lFžes +, +$phpFžes +)), '->not_name() canake‡ glob…attern‡s‡n‡rgument'); + +160 + g$t +-> +dŸg +('->not_name()„egexp support'); + +161 + g$fšd” + = +sfFšd” +:: +ty³ +('fže')-> +nÙ_Çme +('/^fže2.*$/')-> +»Ïtive +(); + +162 + g$t +-> +¬¿ys_¬e_equ® +( +$fšd” +-> +š +( +$fixtu»Dœ +), +¬¿y_v®ues +( +¬¿y_diff +( +$®lFžes +, +$»gexpFžes +)), '->not_name() canake‡„egexp‡s‡n‡rgument'); + +164 + g$t +-> +dŸg +('->not_name()‡rray /‡rgs / chaining'); + +165 + g$fšd” + = +sfFšd” +:: +ty³ +('fže')-> +nÙ_Çme +( +¬¿y +('*.php', '*.txt'))-> +»Ïtive +(); + +166 + g$t +-> +¬¿ys_¬e_equ® +( +$fšd” +-> +š +( +$fixtu»Dœ +), +¬¿y_v®ues +( +¬¿y_diff +( +$®lFžes +, +¬¿y_m”ge +( +$phpFžes +, +$txtFžes +))), '->not_name() canake‡n‡rray of…atterns'); + +167 + g$fšd” + = +sfFšd” +:: +ty³ +('fže')-> +nÙ_Çme +('*.php', '*.txt')-> +»Ïtive +(); + +168 + g$t +-> +¬¿ys_¬e_equ® +( +$fšd” +-> +š +( +$fixtu»Dœ +), +¬¿y_v®ues +( +¬¿y_diff +( +$®lFžes +, +¬¿y_m”ge +( +$phpFžes +, +$txtFžes +))), '->not_name() canake…atterns‡s‡rguments'); + +169 + g$fšd” + = +sfFšd” +:: +ty³ +('fže')-> +nÙ_Çme +('*.php')->nÙ_Çme('*.txt')-> +»Ïtive +(); + +170 + g$t +-> +¬¿ys_¬e_equ® +( +$fšd” +-> +š +( +$fixtu»Dœ +), +¬¿y_v®ues +( +¬¿y_diff +( +$®lFžes +, +¬¿y_m”ge +( +$phpFžes +, +$txtFžes +))), '->not_name() can be called severalimes'); + +172 + g$t +-> +dŸg +('->name() ->not_name() inhe same query'); + +173 + g$fšd” + = +sfFšd” +:: +ty³ +('fže')-> +nÙ_Çme +('/^fže2.*$/')-> +Çme +('*.php')-> +»Ïtive +(); + +174 + g$t +-> +¬¿ys_¬e_equ® +( +$fšd” +-> +š +( +$fixtu»Dœ +), +¬¿y +('dir1/file12.php'), '->not_name()‡nd ->name() can be called inhe same query'); + +177 + g$t +-> +dŸg +('->size()'); + +178 + g$fšd” + = +sfFšd” +:: +ty³ +('file'); + +179 + g$t +-> +is +( +$fšd” +-> +size +('> 2K'), $finder, '->size() implementshe fluent interface'); + +181 + g$fšd” + = +sfFšd” +:: +ty³ +('fže')-> +size +('> 100K')-> +»Ïtive +(); + +182 + g$t +-> +is +( +$fšd” +-> +š +( +$fixtu»Dœ +), +¬¿y +(), '->size()akes‡ size comparison string‡s its‡rgument'); + +183 + g$fšd” + = +sfFšd” +:: +ty³ +('fže')-> +size +('> 1K')-> +»Ïtive +(); + +184 + g$t +-> +is +( +$fšd” +-> +š +( +$fixtu»Dœ +), +¬¿y +('file1'), '->size()akes‡ size comparison string‡s its‡rgument'); + +185 + g$fšd” + = +sfFšd” +:: +ty³ +('fže')-> +size +('> 1K')->size('< 2K')-> +»Ïtive +(); + +186 + g$t +-> +is +( +$fšd” +-> +š +( +$fixtu»Dœ +), +¬¿y +(), '->size()akes‡ size comparison string‡s its‡rgument'); + +189 + g$t +-> +dŸg +('->mindepth() ->maxdepth()'); + +190 + g$fšd” + = +sfFšd” +:: +ty³ +('file'); + +191 + g$t +-> +is +( +$fšd” +-> +mšd•th +(1), $finder, '->mindepth() implementshe fluent interface'); + +192 + g$t +-> +is +( +$fšd” +-> +maxd•th +(1), $finder, '->maxdepth() implementshe fluent interface'); + +194 + g$fšd” + = +sfFšd” +:: +ty³ +('fže')-> +»Ïtive +()-> +mšd•th +(1); + +195 + g$t +-> +¬¿ys_¬e_equ® +( +$fšd” +-> +š +( +$fixtu»Dœ +), +$mšD•th1Fžes +, '->mindepth()akes‡ minimum depth‡s its‡rgument'); + +196 + g$fšd” + = +sfFšd” +:: +ty³ +('fže')-> +»Ïtive +()-> +maxd•th +(2); + +197 + g$t +-> +¬¿ys_¬e_equ® +( +$fšd” +-> +š +( +$fixtu»Dœ +), +$maxD•th2Fžes +, '->maxdepth()akes‡ maximum depth‡s its‡rgument'); + +198 + g$fšd” + = +sfFšd” +:: +ty³ +('fže')-> +»Ïtive +()-> +mšd•th +(1)-> +maxd•th +(2); + +199 + g$t +-> +¬¿ys_¬e_equ® +( +$fšd” +-> +š +( +$fixtu»Dœ +), +¬¿y_v®ues +( +¬¿y_š‹r£ù +( +$mšD•th1Fžes +, +$maxD•th2Fžes +)), '->maxdepth()‡nd ->mindepth() can be called inhe same query'); + +202 + g$t +-> +dŸg +('->discard()'); + +203 + g$t +-> +is +( +$fšd” +-> +disÿrd +('file2.txt'), $finder, '->discard() implementshe fluent interface'); + +205 + g$t +-> +dŸg +('->discard() file‚ame support'); + +206 + g$fšd” + = +sfFšd” +:: +ty³ +('fže')-> +»Ïtive +()-> +disÿrd +('file2.txt'); + +207 + g$t +-> +¬¿ys_¬e_equ® +( +$fšd” +-> +š +( +$fixtu»Dœ +), +¬¿y_v®ues +( +¬¿y_diff +( +$®lFžes +, +¬¿y +('file2.txt'))), '->discard() can discard‡ file‚ame'); + +209 + g$t +-> +dŸg +('->discard() glob support'); + +210 + g$fšd” + = +sfFšd” +:: +ty³ +('fže')-> +»Ïtive +()-> +disÿrd +('*.php'); + +211 + g$t +-> +¬¿ys_¬e_equ® +( +$fšd” +-> +š +( +$fixtu»Dœ +), +¬¿y_v®ues +( +¬¿y_diff +( +$®lFžes +, +$phpFžes +)), '->discard() can discard‡ glob…attern'); + +213 + g$t +-> +dŸg +('->discard()„egexp support'); + +214 + g$fšd” + = +sfFšd” +:: +ty³ +('fže')-> +»Ïtive +()-> +disÿrd +('/^file2.*$/'); + +215 + g$t +-> +¬¿ys_¬e_equ® +( +$fšd” +-> +š +( +$fixtu»Dœ +), +¬¿y_v®ues +( +¬¿y_diff +( +$®lFžes +, +$»gexpFžes +)), '->discard() can discard‡„egexp…attern'); + +218 + g$t +-> +dŸg +('->prune()'); + +219 + g$t +-> +is +( +$fšd” +-> +´uà +('dir2'), $finder, '->prune() implementshe fluent interface'); + +221 + g$fšd” + = +sfFšd” +:: +ty³ +('ªy')-> +»Ïtive +()-> +´uà +('dir2'); + +222 + g$t +-> +¬¿ys_¬e_equ® +( +$fšd” +-> +š +( +$fixtu»Dœ +), +$ªyW™houtDœ2 +, '->prune() ignore‡ll files/directories underhe given directory'); + +225 + g$t +-> +dŸg +('->in()…ermissions'); + +226 +chmod +( +$fixtu»Dœ +.'_permissions/secret', 0000); + +227 + g$fšd” + = +sfFšd” +:: +ty³ +('fže')-> +»Ïtive +(); + +228 + g$t +-> +¬¿ys_¬e_equ® +( +$fšd” +-> +š +( +$fixtu»Dœ +.'_³rmissiÚs'), +¬¿y +(), '->in() ignores directories it cannot„ead'); + +229 +chmod +( +$fixtu»Dœ +.'_permissions/secret', 0755); + + @lib/vendor/symfony/test/unit/util/sfInflectorTest.php + +1 +dŸg +('::camelize()'); + +19 + g$t +-> +is +( +sfInæeùÜ +:: +ÿm–ize +('symfony'), 'Symfony', '::camelize() upper-casehe first†etter'); + +20 + g$t +-> +is +( +sfInæeùÜ +:: +ÿm–ize +('symfony_is_great'), 'SymfonyIsGreat', '::camelize() upper-caseƒach†etter‡fter‡ _‡nd„emove _'); + +23 + g$t +-> +dŸg +('::underscore()'); + +24 + g$t +-> +is +( +sfInæeùÜ +:: +und”scÜe +('Symfony'), 'symfony', '::underscore()†ower-casehe first†etter'); + +25 + g$t +-> +is +( +sfInæeùÜ +:: +und”scÜe +('SymfonyIsGreat'), 'symfony_is_great', '::underscore()†ower-caseƒach upper-case†etter‡nd‡dd‡ _ before'); + +26 + g$t +-> +is +( +sfInæeùÜ +:: +und”scÜe +('HTMLTest'), 'html_test', '::underscore()†ower-case‡ll other†etters'); + +29 + g$t +-> +dŸg +('::humanize()'); + +30 + g$t +-> +is +( +sfInæeùÜ +:: +humªize +('symfony'), 'Symfony', '::humanize() upper-casehe first†etter'); + +31 + g$t +-> +is +( +sfInæeùÜ +:: +humªize +('symfony_is_great'), 'Symfony is great', '::humanize()„eplaces _ by‡ space'); + + @lib/vendor/symfony/test/unit/util/sfNamespacedParameterHolderTest.php + +1 +dŸg +('->clear()'); + +17 + g$ph + = +Ãw + +sfName¥aûdP¬am‘”HÞd” +(); + +18 + g$ph +-> +þ—r +(); + +19 + g$t +-> +is +( +$ph +-> +g‘AÎ +(), +nuÎ +, '->clear() clears‡ll…arameters'); + +21 + g$ph +-> +£t +('foo', 'bar'); + +22 + g$ph +-> +þ—r +(); + +23 + g$t +-> +is +( +$ph +-> +g‘AÎ +(), +nuÎ +, '->clear() clears‡ll…arameters'); + +26 + g$t +-> +dŸg +('->get()'); + +27 + g$ph + = +Ãw + +sfName¥aûdP¬am‘”HÞd” +(); + +28 + g$ph +-> +£t +('foo', 'bar'); + +29 + g$t +-> +is +( +$ph +-> +g‘ +('foo'), 'bar', '->get()„eturnshe…arameter value forhe given key'); + +30 + g$t +-> +is +( +$ph +-> +g‘ +('b¬'), +nuÎ +, '->get()„eturns‚ull ifhe key does‚otƒxist'); + +32 + g$ph + = +Ãw + +sfName¥aûdP¬am‘”HÞd” +(); + +33 + g$t +-> +is +('deçuÉ_v®ue', +$ph +-> +g‘ +('foo1', 'default_value'), '->get()akeshe default value‡s its second‡rgument'); + +35 + g$ph + = +Ãw + +sfName¥aûdP¬am‘”HÞd” +(); + +36 + g$ph +-> +£t +('myfoo', 'bar', 'symfony/mynamespace'); + +37 + g$t +-> +is +('b¬', +$ph +-> +g‘ +('myfoo', +nuÎ +, 'symfony/mynamespace'), '->get()akes‡n optional‚amespace‡s itshird‡rgument'); + +38 + g$t +-> +is +( +nuÎ +, +$ph +-> +g‘ +('myfoo'), '->get() can havehe same key for several‚amespaces'); + +41 + g$t +-> +dŸg +('->getNames()'); + +42 + g$ph + = +Ãw + +sfName¥aûdP¬am‘”HÞd” +(); + +43 + g$ph +-> +£t +('foo', 'bar'); + +44 + g$ph +-> +£t +('yourfoo', 'bar'); + +45 + g$ph +-> +£t +('myfoo', 'bar', 'symfony/mynamespace'); + +47 + g$t +-> +is +( +$ph +-> +g‘Names +(), +¬¿y +('foo', 'yourfoo'), '->getNames()„eturns‡ll key‚ames forhe default‚amespace'); + +48 + g$t +-> +is +( +$ph +-> +g‘Names +('symfÚy/myÇme¥aû'), +¬¿y +('myfoo'), '->getNames()akes‡‚amepace‡s its first‡rgument'); + +51 + g$t +-> +dŸg +('->getNamespaces()'); + +52 + g$ph + = +Ãw + +sfName¥aûdP¬am‘”HÞd” +(); + +53 + g$ph +-> +£t +('foo', 'bar'); + +54 + g$ph +-> +£t +('yourfoo', 'bar'); + +55 + g$ph +-> +£t +('myfoo', 'bar', 'symfony/mynamespace'); + +57 + g$t +-> +is +( +$ph +-> +g‘Name¥aûs +(), +¬¿y +($ph-> +g‘DeçuÉName¥aû +(), 'symfony/mynamespace'), '->getNamespaces()„eturns‡ll‚onƒmpty‚amespaces'); + +60 + g$t +-> +dŸg +('->setDefaultNamespace()'); + +61 + g$ph + = +Ãw + +sfName¥aûdP¬am‘”HÞd” +('symfony/mynamespace'); + +62 + g$ph +-> +£tDeçuÉName¥aû +('othernamespace'); + +64 + g$t +-> +is +( +$ph +-> +g‘DeçuÉName¥aû +(), 'othernamespace', '->setDefaultNamespace() setshe default‚amespace'); + +66 + g$ph +-> +£t +('foo', 'bar'); + +67 + g$ph +-> +£tDeçuÉName¥aû +('foonamespace'); + +69 + g$t +-> +is +( +$ph +-> +g‘ +('foo'), 'bar', '->setDefaultNamespace() moves values fromhe old‚amespaceohe‚ew'); + +70 + g$t +-> +is +( +$ph +-> +g‘ +('foo', +nuÎ +, 'othernamespace'),‚ull, '->setDefaultNamespace() moves values fromhe old‚amespaceohe‚ew'); + +72 + g$ph +-> +£t +('foo', 'bar'); + +73 + g$ph +-> +£tDeçuÉName¥aû +('b¬Çme¥aû', +çl£ +); + +75 + g$t +-> +is +( +$ph +-> +g‘ +('foo'), +nuÎ +, '->setDefaultNamespace() does‚ot move old valuesohe‚ew‚amespace ifhe second‡rgument is false'); + +76 + g$t +-> +is +( +$ph +-> +g‘ +('foo', +nuÎ +, 'foonamespace'), 'bar', '->setDefaultNamespace() does‚ot move old valuesohe‚ew‚amespace ifhe second‡rgument is false'); + +79 + g$t +-> +dŸg +('->getAll()'); + +80 + g$·¿m‘”s + = +¬¿y +('foo' => 'bar', 'myfoo' => 'bar'); + +81 + g$ph + = +Ãw + +sfName¥aûdP¬am‘”HÞd” +(); + +82 + g$ph +-> +add +( +$·¿m‘”s +); + +83 + g$ph +-> +£t +('myfoo', 'bar', 'symfony/mynamespace'); + +84 + g$t +-> +is +( +$ph +-> +g‘AÎ +(), +$·¿m‘”s +, '->getAll()„eturns‡ll…arameters fromhe default‚amespace'); + +87 + g$t +-> +dŸg +('->has()'); + +88 + g$ph + = +Ãw + +sfName¥aûdP¬am‘”HÞd” +(); + +89 + g$ph +-> +£t +('foo', 'bar'); + +90 + g$ph +-> +£t +('myfoo', 'bar', 'symfony/mynamespace'); + +91 + g$t +-> +is +( +$ph +-> +has +('foo'), +Œue +, '->has()„eturnsrue ifhe keyƒxists'); + +92 + g$t +-> +is +( +$ph +-> +has +('b¬'), +çl£ +, '->has()„eturns false ifhe key does‚otƒxist'); + +93 + g$t +-> +is +( +$ph +-> +has +('myfoo'), +çl£ +, '->has()„eturns false ifhe keyƒxists but in‡nother‚amespace'); + +94 + g$t +-> +is +( +$ph +-> +has +('myfoo', 'symfÚy/myÇme¥aû'), +Œue +, '->has()„eturnsrue ifhe keyƒxists inhe‚amespace given‡s its second‡rgument'); + +97 + g$t +-> +dŸg +('->hasNamespace()'); + +98 + g$ph + = +Ãw + +sfName¥aûdP¬am‘”HÞd” +(); + +99 + g$ph +-> +£t +('foo', 'bar'); + +100 + g$ph +-> +£t +('myfoo', 'bar', 'symfony/mynamespace'); + +101 + g$t +-> +is +( +$ph +-> +hasName¥aû +($ph-> +g‘DeçuÉName¥aû +()), +Œue +, '->hasNamespace()„eturnsrue forhe default‚amespace'); + +102 + g$t +-> +is +( +$ph +-> +hasName¥aû +('symfÚy/myÇme¥aû'), +Œue +, '->hasNamespace()„eturnsrue ifhe‚amespaceƒxists'); + +103 + g$t +-> +is +( +$ph +-> +hasName¥aû +('symfÚy/nÚexi¡ªt'), +çl£ +, '->hasNamespace()„eturns false ifhe‚amespace does‚otƒxist'); + +106 + g$t +-> +dŸg +('->remove()'); + +107 + g$ph + = +Ãw + +sfName¥aûdP¬am‘”HÞd” +(); + +108 + g$ph +-> +£t +('foo', 'bar'); + +109 + g$ph +-> +£t +('myfoo', 'bar'); + +110 + g$ph +-> +£t +('myfoo', 'bar', 'symfony/mynamespace'); + +112 + g$ph +-> +»move +('foo'); + +113 + g$t +-> +is +( +$ph +-> +has +('foo'), +çl£ +, '->remove()„emoveshe key from…arameters'); + +115 + g$ph +-> +»move +('myfoo'); + +116 + g$t +-> +is +( +$ph +-> +has +('myfoo'), +çl£ +, '->remove()„emoveshe key from…arameters'); + +117 + g$t +-> +is +( +$ph +-> +has +('myfoo', 'symfÚy/myÇme¥aû'), +Œue +, '->remove()„emoveshe key from…arameters for‡ given‚amespace'); + +119 + g$ph +-> +»move +('myfoo', +nuÎ +, 'symfony/mynamespace'); + +120 + g$t +-> +is +( +$ph +-> +has +('myfoo', 'symfÚy/myÇme¥aû'), +çl£ +, '->remove()akes‡‚amespace‡s itshird‡rgument'); + +122 + g$t +-> +is +( +$ph +-> +»move +('nonexistant', 'foobar', 'symfony/mynamespace'), 'foobar', '->remove()akes‡ default value‡s its second‡rgument'); + +124 + g$t +-> +is +( +$ph +-> +g‘AÎ +(), +nuÎ +, '->remove()„emoveshe key from…arameters'); + +127 + g$t +-> +dŸg +('->removeNamespace()'); + +128 + g$ph + = +Ãw + +sfName¥aûdP¬am‘”HÞd” +(); + +129 + g$ph +-> +£t +('foo', 'bar'); + +130 + g$ph +-> +£t +('myfoo', 'bar'); + +131 + g$ph +-> +£t +('myfoo', 'bar', 'symfony/mynamespace'); + +133 + g$ph +-> +»moveName¥aû +( +$ph +-> +g‘DeçuÉName¥aû +()); + +134 + g$t +-> +is +( +$ph +-> +has +('foo'), +çl£ +, '->removeNamespace()„emoves‡ll keys‡nd values from‡‚amespace'); + +135 + g$t +-> +is +( +$ph +-> +has +('myfoo'), +çl£ +, '->removeNamespace()„emoves‡ll keys‡nd values from‡‚amespace'); + +136 + g$t +-> +is +( +$ph +-> +has +('myfoo', 'symfÚy/myÇme¥aû'), +Œue +, '->removeNamespace() does‚ot„emove keys in other‚amepaces'); + +138 + g$ph +-> +£t +('foo', 'bar'); + +139 + g$ph +-> +£t +('myfoo', 'bar'); + +140 + g$ph +-> +£t +('myfoo', 'bar', 'symfony/mynamespace'); + +142 + g$ph +-> +»moveName¥aû +(); + +143 + g$t +-> +is +( +$ph +-> +has +('foo'), +çl£ +, '->removeNamespace()„emoves‡ll keys‡nd values fromhe default‚amespace by default'); + +144 + g$t +-> +is +( +$ph +-> +has +('myfoo'), +çl£ +, '->removeNamespace()„emoves‡ll keys‡nd values fromhe default‚amespace by default'); + +145 + g$t +-> +is +( +$ph +-> +has +('myfoo', 'symfÚy/myÇme¥aû'), +Œue +, '->removeNamespace() does‚ot„emove keys in other‚amepaces'); + +147 + g$ph +-> +»moveName¥aû +('symfony/mynamespace'); + +148 + g$t +-> +is +( +$ph +-> +has +('myfoo', 'symfÚy/myÇme¥aû'), +çl£ +, '->removeNamespace()akes‡‚amespace‡s its first…arameter'); + +150 + g$t +-> +is +( +nuÎ +, +$ph +-> +g‘AÎ +(), '->removeNamespace()„emoves‡llhe keys from…arameters'); + +153 + g$t +-> +dŸg +('->set()'); + +154 + g$foo + = 'bar'; + +156 + g$ph + = +Ãw + +sfName¥aûdP¬am‘”HÞd” +(); + +157 + g$ph +-> +£t +('foo', +$foo +); + +158 + g$t +-> +is +( +$ph +-> +g‘ +('foo'), +$foo +, '->set() setshe value for‡ key'); + +160 + g$foo + = 'foo'; + +161 + g$t +-> +is +( +$ph +-> +g‘ +('foo'), 'bar', '->set() setshe value for‡ key,‚ot‡„eference'); + +163 + g$ph +-> +£t +('myfoo', 'bar', 'symfony/mynamespace'); + +164 + g$t +-> +is +( +$ph +-> +g‘ +('myfoo', +nuÎ +, 'symfony/mynamespace'), 'bar', '->set()akes‡‚amespace‡s itshird…arameter'); + +167 + g$t +-> +dŸg +('->setByRef()'); + +168 + g$foo + = 'bar'; + +170 + g$ph + = +Ãw + +sfName¥aûdP¬am‘”HÞd” +(); + +171 + g$ph +-> +£tByRef +('foo', +$foo +); + +172 + g$t +-> +is +( +$ph +-> +g‘ +('foo'), +$foo +, '->setByRef() setshe value for‡ key'); + +174 + g$foo + = 'foo'; + +175 + g$t +-> +is +( +$ph +-> +g‘ +('foo'), +$foo +, '->setByRef() setshe value for‡ key‡s‡„eference'); + +177 + g$myfoo + = 'bar'; + +178 + g$ph +-> +£tByRef +('myfoo', +$myfoo +, 'symfony/mynamespace'); + +179 + g$t +-> +is +( +$ph +-> +g‘ +('myfoo', +nuÎ +, 'symfÚy/myÇme¥aû'), +$myfoo +, '->setByRef()akes‡‚amespace‡s itshird…arameter'); + +182 + g$t +-> +dŸg +('->add()'); + +183 + g$foo + = 'bar'; + +184 + g$·¿m‘”s + = +¬¿y +('foo' => +$foo +, 'bar' => 'bar'); + +185 + g$my·¿m‘”s + = +¬¿y +('myfoo' => 'bar', 'mybar' => 'bar'); + +187 + g$ph + = +Ãw + +sfName¥aûdP¬am‘”HÞd” +(); + +188 + g$ph +-> +add +( +$·¿m‘”s +); + +189 + g$ph +-> +add +( +$my·¿m‘”s +, 'symfony/mynamespace'); + +191 + g$t +-> +is +( +$ph +-> +g‘AÎ +(), +$·¿m‘”s +, '->add()‡dds‡n‡rray of…arameters'); + +192 + g$t +-> +is +( +$ph +-> +g‘AÎ +('symfÚy/myÇme¥aû'), +$my·¿m‘”s +, '->add()akes‡‚amespace‡s its second‡rgument'); + +194 + g$foo + = 'mybar'; + +195 + g$t +-> +is +( +$ph +-> +g‘AÎ +(), +$·¿m‘”s +, '->add()‡dds‡n‡rray of…arameters,‚ot‡„eference'); + +198 + g$t +-> +dŸg +('->addByRef()'); + +199 + g$foo + = 'bar'; + +200 + g$·¿m‘”s + = +¬¿y +('foo' => & +$foo +, 'bar' => 'bar'); + +201 + g$my·¿m‘”s + = +¬¿y +('myfoo' => 'bar', 'mybar' => 'bar'); + +203 + g$ph + = +Ãw + +sfName¥aûdP¬am‘”HÞd” +(); + +204 + g$ph +-> +addByRef +( +$·¿m‘”s +); + +205 + g$ph +-> +addByRef +( +$my·¿m‘”s +, 'symfony/mynamespace'); + +207 + g$t +-> +is +( +$·¿m‘”s +, +$ph +-> +g‘AÎ +(), '->add()‡dds‡n‡rray of…arameters'); + +208 + g$t +-> +is +( +$my·¿m‘”s +, +$ph +-> +g‘AÎ +('symfony/mynamespace'), '->add()akes‡‚amespace‡s its second‡rgument'); + +210 + g$foo + = 'mybar'; + +211 + g$t +-> +is +( +$·¿m‘”s +, +$ph +-> +g‘AÎ +(), '->add()‡dds‡„eference of‡n‡rray of…arameters'); + +214 + g$t +-> +dŸg +('->serialize() ->unserialize()'); + +215 + g$t +-> +ok +( +$ph + =ð +un£rŸlize +( +£rŸlize +($ph)), 'sfNamespacedParameterHolder implementshe Serializable interface'); + + @lib/vendor/symfony/test/unit/util/sfParameterHolderTest.php + +1 +dŸg +('->clear()'); + +17 + g$ph + = +Ãw + +sfP¬am‘”HÞd” +(); + +18 + g$ph +-> +þ—r +(); + +19 + g$t +-> +is +( +$ph +-> +g‘AÎ +(), +nuÎ +, '->clear() clears‡ll…arameters'); + +21 + g$ph +-> +£t +('foo', 'bar'); + +22 + g$ph +-> +þ—r +(); + +23 + g$t +-> +is +( +$ph +-> +g‘AÎ +(), +nuÎ +, '->clear() clears‡ll…arameters'); + +26 + g$t +-> +dŸg +('->get()'); + +27 + g$ph + = +Ãw + +sfP¬am‘”HÞd” +(); + +28 + g$ph +-> +£t +('foo', 'bar'); + +29 + g$t +-> +is +( +$ph +-> +g‘ +('foo'), 'bar', '->get()„eturnshe…arameter value forhe given key'); + +30 + g$t +-> +is +( +$ph +-> +g‘ +('b¬'), +nuÎ +, '->get()„eturns‚ull ifhe key does‚otƒxist'); + +33 + g$»f + = 'foobar'; + +34 + g$ph +-> +£t +('»f', +$»f +); + +35 + g$»f2 + = +nuÎ +; + +36 + g$»f2 + &ð +$ph +-> +g‘ +('ref'); + +37 + g$»f2 + &= 'barfoo'; + +38 + g$t +-> +is +( +$»f2 + , +$»f +, '->get()„eturns‡„eference forhe given key'); + +40 + g$ph + = +Ãw + +sfP¬am‘”HÞd” +(); + +41 + g$t +-> +is +('deçuÉ_v®ue', +$ph +-> +g‘ +('foo1', 'default_value'), '->get()akeshe default value‡s its second‡rgument'); + +44 + g$t +-> +dŸg +('->getNames()'); + +45 + g$ph + = +Ãw + +sfP¬am‘”HÞd” +(); + +46 + g$ph +-> +£t +('foo', 'bar'); + +47 + g$ph +-> +£t +('yourfoo', 'bar'); + +49 + g$t +-> +is +( +$ph +-> +g‘Names +(), +¬¿y +('foo', 'yourfoo'), '->getNames()„eturns‡ll key‚ames'); + +52 + g$t +-> +dŸg +('->getAll()'); + +53 + g$·¿m‘”s + = +¬¿y +('foo' => 'bar', 'myfoo' => 'bar'); + +54 + g$ph + = +Ãw + +sfP¬am‘”HÞd” +(); + +55 + g$ph +-> +add +( +$·¿m‘”s +); + +56 + g$t +-> +is +( +$ph +-> +g‘AÎ +(), +$·¿m‘”s +, '->getAll()„eturns‡ll…arameters'); + +59 + g$t +-> +dŸg +('->has()'); + +60 + g$ph + = +Ãw + +sfP¬am‘”HÞd” +(); + +61 + g$ph +-> +£t +('foo', 'bar'); + +62 + g$t +-> +is +( +$ph +-> +has +('foo'), +Œue +, '->has()„eturnsrue ifhe keyƒxists'); + +63 + g$t +-> +is +( +$ph +-> +has +('b¬'), +çl£ +, '->has()„eturns false ifhe key does‚otƒxist'); + +64 + g$ph +-> +£t +('b¬', +nuÎ +); + +65 + g$t +-> +is +( +$ph +-> +has +('b¬'), +Œue +, '->has()„eturnsrue ifhe keyƒxist,ƒven ifhe value is‚ull'); + +68 + g$t +-> +dŸg +('->remove()'); + +69 + g$ph + = +Ãw + +sfP¬am‘”HÞd” +(); + +70 + g$ph +-> +£t +('foo', 'bar'); + +71 + g$ph +-> +£t +('myfoo', 'bar'); + +73 + g$ph +-> +»move +('foo'); + +74 + g$t +-> +is +( +$ph +-> +has +('foo'), +çl£ +, '->remove()„emoveshe key from…arameters'); + +76 + g$ph +-> +»move +('myfoo'); + +77 + g$t +-> +is +( +$ph +-> +has +('myfoo'), +çl£ +, '->remove()„emoveshe key from…arameters'); + +79 + g$t +-> +is +( +$ph +-> +»move +('nonexistant', 'foobar'), 'foobar', '->remove()akes‡ default value‡s its second‡rgument'); + +81 + g$t +-> +is +( +$ph +-> +g‘AÎ +(), +nuÎ +, '->remove()„emoveshe key from…arameters'); + +84 + g$t +-> +dŸg +('->set()'); + +85 + g$foo + = 'bar'; + +87 + g$ph + = +Ãw + +sfP¬am‘”HÞd” +(); + +88 + g$ph +-> +£t +('foo', +$foo +); + +89 + g$t +-> +is +( +$ph +-> +g‘ +('foo'), +$foo +, '->set() setshe value for‡ key'); + +91 + g$foo + = 'foo'; + +92 + g$t +-> +is +( +$ph +-> +g‘ +('foo'), 'bar', '->set() setshe value for‡ key,‚ot‡„eference'); + +95 + g$t +-> +dŸg +('->setByRef()'); + +96 + g$foo + = 'bar'; + +98 + g$ph + = +Ãw + +sfP¬am‘”HÞd” +(); + +99 + g$ph +-> +£tByRef +('foo', +$foo +); + +100 + g$t +-> +is +( +$ph +-> +g‘ +('foo'), +$foo +, '->setByRef() setshe value for‡ key'); + +102 + g$foo + = 'foo'; + +103 + g$t +-> +is +( +$ph +-> +g‘ +('foo'), +$foo +, '->setByRef() setshe value for‡ key‡s‡„eference'); + +106 + g$t +-> +dŸg +('->add()'); + +107 + g$foo + = 'bar'; + +108 + g$·¿m‘”s + = +¬¿y +('foo' => +$foo +, 'bar' => 'bar'); + +109 + g$my·¿m‘”s + = +¬¿y +('myfoo' => 'bar', 'mybar' => 'bar'); + +111 + g$ph + = +Ãw + +sfP¬am‘”HÞd” +(); + +112 + g$ph +-> +add +( +$·¿m‘”s +); + +114 + g$t +-> +is +( +$ph +-> +g‘AÎ +(), +$·¿m‘”s +, '->add()‡dds‡n‡rray of…arameters'); + +116 + g$foo + = 'mybar'; + +117 + g$t +-> +is +( +$ph +-> +g‘AÎ +(), +$·¿m‘”s +, '->add()‡dds‡n‡rray of…arameters,‚ot‡„eference'); + +120 + g$t +-> +dŸg +('->addByRef()'); + +121 + g$foo + = 'bar'; + +122 + g$·¿m‘”s + = +¬¿y +('foo' => & +$foo +, 'bar' => 'bar'); + +123 + g$my·¿m‘”s + = +¬¿y +('myfoo' => 'bar', 'mybar' => 'bar'); + +125 + g$ph + = +Ãw + +sfP¬am‘”HÞd” +(); + +126 + g$ph +-> +addByRef +( +$·¿m‘”s +); + +128 + g$t +-> +is +( +$·¿m‘”s +, +$ph +-> +g‘AÎ +(), '->add()‡dds‡n‡rray of…arameters'); + +130 + g$foo + = 'mybar'; + +131 + g$t +-> +is +( +$·¿m‘”s +, +$ph +-> +g‘AÎ +(), '->add()‡dds‡„eference of‡n‡rray of…arameters'); + +134 + g$t +-> +dŸg +('->serialize() ->unserialize()'); + +135 + g$t +-> +ok +( +$ph + =ð +un£rŸlize +( +£rŸlize +($ph)), 'sfParameterHolder implementshe Serializable interface'); + + @lib/vendor/symfony/test/unit/util/sfToolkitTest.php + +1 +dŸg +('::stringToArray()'); + +17 + g$‹¡s + = +¬¿y +( + +18 'foo=b¬' => +¬¿y +('foo' => 'bar'), + +19 'foo1=b¬1 foo=b¬ ' => +¬¿y +('foo1' => 'bar1', 'foo' => 'bar'), + +20 'foo1="b¬1 foo1"' => +¬¿y +('foo1' => 'bar1 foo1'), + +21 'foo1="b¬1 foo1" foo=b¬' => +¬¿y +('foo1' => 'bar1 foo1', 'foo' => 'bar'), + +22 'foo1 = "b¬1=foo1" foo=b¬' => +¬¿y +('foo1' => 'bar1=foo1', 'foo' => 'bar'), + +23 'foo1ð\'b¬1 foo1\' foØ = b¬' => +¬¿y +('foo1' => 'bar1 foo1', 'foo' => 'bar'), + +24 'foo1=\'b¬1=foo1\' foØðb¬' => +¬¿y +('foo1' => 'bar1=foo1', 'foo' => 'bar'), + +25 'foo1ð b¬1 foo1 foo=b¬' => +¬¿y +('foo1' => 'bar1 foo1', 'foo' => 'bar'), + +26 'foo1="l\'auŒe" foo=b¬' => +¬¿y +('foo1' => 'l\'autre', 'foo' => 'bar'), + +27 'foo1="l"auŒe" foo=b¬' => +¬¿y +('foo1' => 'l"autre', 'foo' => 'bar'), + +28 'foo_1=b¬_1' => +¬¿y +('foo_1' => 'bar_1'), + +31 +fܗch + ( +$‹¡s + +as + +$¡ršg + => +$©Œibu‹s +) + +33 +$t +-> +is +( +sfToÞk™ +:: +¡ršgToA¼ay +( +$¡ršg +), +$©Œibu‹s +, '->stringToArray()'); + +37 + g$t +-> +dŸg +('::isUTF8()'); + +38 + g$t +-> +is +('été', +Œue +, '::isUTF8()„eturnsrue ifhe…arameter is‡n UTF-8ƒncoded string'); + +39 + g$t +-> +is +( +sfToÞk™ +:: +isUTF8 +('AZERTYaz”ty1234-_'), +Œue +, '::isUTF8()„eturnsrue ifhe…arameter is‡n UTF-8ƒncoded string'); + +40 + g$t +-> +is +( +sfToÞk™ +:: +isUTF8 +('AZERTYaz”ty1234-_'. +chr +(254)), +çl£ +, '::isUTF8()„eturns false ifhe…arameter is‚ot‡n UTF-8ƒncoded string'); + +42 + g$¡ršg + = +¡r_»³© +('Here is‡n UTF8 string‡vec du français.', 1000); + +43 + g$t +-> +is +( +sfToÞk™ +:: +isUTF8 +( +$¡ršg +), +Œue +, '::isUTF8() can operate on very†arge strings'); + +46 + g$t +-> +dŸg +('::literalize()'); + +47 +fܗch + ( +¬¿y +('Œue', 'Ú', '+', 'yes'è +as + +$·¿m +) + +49 + g$t +-> +is +( +sfToÞk™ +:: +l™”®ize +( +$·¿m +), +Œue +, +¥rštf +('::literalize()„eturnsrue with "%s"', $param)); + +50 ià( +¡¹ouµ” +( +$·¿m +) != $param) + +52 +$t +-> +is +( +sfToÞk™ +:: +l™”®ize +( +¡¹ouµ” +( +$·¿m +)), +Œue +, +¥rštf +('::literalize()„eturnsrue with "%s"', strtoupper($param))); + +54 + g$t +-> +is +( +sfToÞk™ +:: +l™”®ize +(' '. +$·¿m +.' '), +Œue +, +¥rštf +('::literalize()„eturnsrue with "%s"', ' '.$param.' ')); + +57 +fܗch + ( +¬¿y +('çl£', 'off', '-', 'no'è +as + +$·¿m +) + +59 + g$t +-> +is +( +sfToÞk™ +:: +l™”®ize +( +$·¿m +), +çl£ +, +¥rštf +('::literalize()„eturns false with "%s"', $param)); + +60 ià( +¡¹ouµ” +( +$·¿m +) != $param) + +62 +$t +-> +is +( +sfToÞk™ +:: +l™”®ize +( +¡¹ouµ” +( +$·¿m +)), +çl£ +, +¥rštf +('::literalize()„eturns false with "%s"', strtoupper($param))); + +64 + g$t +-> +is +( +sfToÞk™ +:: +l™”®ize +(' '. +$·¿m +.' '), +çl£ +, +¥rštf +('::literalize()„eturns false with "%s"', ' '.$param.' ')); + +67 +fܗch + ( +¬¿y +('nuÎ', '~', ''è +as + +$·¿m +) + +69 + g$t +-> +is +( +sfToÞk™ +:: +l™”®ize +( +$·¿m +), +nuÎ +, +¥rštf +('::literalize()„eturns‚ull with "%s"', $param)); + +70 ià( +¡¹ouµ” +( +$·¿m +) != $param) + +72 +$t +-> +is +( +sfToÞk™ +:: +l™”®ize +( +¡¹ouµ” +( +$·¿m +)), +nuÎ +, +¥rštf +('::literalize()„eturns‚ull with "%s"', strtoupper($param))); + +74 + g$t +-> +is +( +sfToÞk™ +:: +l™”®ize +(' '. +$·¿m +.' '), +nuÎ +, +¥rštf +('::literalize()„eturns‚ull with "%s"', ' '.$param.' ')); + +78 + g$t +-> +dŸg +('::replaceConstants()'); + +79 + gsfCÚfig +:: +£t +('foo', 'bar'); + +80 + g$t +-> +is +( +sfToÞk™ +:: +»¶aûCÚ¡ªts +('my value with‡ %foo% constant'), 'my value with‡ bar constant', '::replaceConstantsCallback()„eplaces constantsƒnclosed in %'); + +81 + g$t +-> +is +( +sfToÞk™ +:: +»¶aûCÚ¡ªts +('%Y/%m/%d %H:%M'), '%Y/%m/%d %H:%M', '::replaceConstantsCallback() does‚ot„eplace unknown constants'); + +82 + gsfCÚfig +:: +£t +('b¬', +nuÎ +); + +83 + g$t +-> +is +( +sfToÞk™ +:: +»¶aûCÚ¡ªts +('my value with‡ %bar% constant'), 'my value with‡ constant', '::replaceConstantsCallback()„eplaces constantsƒnclosed in %ƒven if value is‚ull'); + +84 + g$t +-> +is +( +sfToÞk™ +:: +»¶aûCÚ¡ªts +('my value with‡ %foobar% constant'), 'my value with‡ %foobar% constant', '::replaceConstantsCallback()„eturnshe original string ifhe constant is‚ot defined'); + +85 + g$t +-> +is +( +sfToÞk™ +:: +»¶aûCÚ¡ªts +('my value with‡ %foo\'bar% constant'), 'my value with‡ %foo\'bar% constant', '::replaceConstantsCallback()„eturnshe original string ifhe constant is‚ot defined'); + +86 + g$t +-> +is +( +sfToÞk™ +:: +»¶aûCÚ¡ªts +('my value with‡ %foo"bar% constant'), 'my value with‡ %foo"bar% constant', '::replaceConstantsCallback()„eturnshe original string ifhe constant is‚ot defined'); + +89 + g$t +-> +dŸg +('::isPathAbsolute()'); + +90 + g$t +-> +is +( +sfToÞk™ +:: +isP©hAbsÞu‹ +('/‹¡'), +Œue +, '::isPathAbsolute()„eturnsrue if…ath is‡bsolute'); + +91 + g$t +-> +is +( +sfToÞk™ +:: +isP©hAbsÞu‹ +('\\‹¡'), +Œue +, '::isPathAbsolute()„eturnsrue if…ath is‡bsolute'); + +92 + g$t +-> +is +( +sfToÞk™ +:: +isP©hAbsÞu‹ +('C:\\‹¡'), +Œue +, '::isPathAbsolute()„eturnsrue if…ath is‡bsolute'); + +93 + g$t +-> +is +( +sfToÞk™ +:: +isP©hAbsÞu‹ +('d:/‹¡'), +Œue +, '::isPathAbsolute()„eturnsrue if…ath is‡bsolute'); + +94 + g$t +-> +is +( +sfToÞk™ +:: +isP©hAbsÞu‹ +('‹¡'), +çl£ +, '::isPathAbsolute()„eturns false if…ath is„elative'); + +95 + g$t +-> +is +( +sfToÞk™ +:: +isP©hAbsÞu‹ +('../‹¡'), +çl£ +, '::isPathAbsolute()„eturns false if…ath is„elative'); + +96 + g$t +-> +is +( +sfToÞk™ +:: +isP©hAbsÞu‹ +('..\\‹¡'), +çl£ +, '::isPathAbsolute()„eturns false if…ath is„elative'); + +99 + g$t +-> +dŸg +('::stripComments()'); + +101 + g$php + = <<< +EOF + + +102 +is +( +´eg_»¶aû +('/\s*(\r?\n)+/', ' ', +sfToÞk™ +:: +¡rComm’ts +( +$php +)), +$¡r³d_php +, '::stripComments() strip‡ll comments from‡…hp string'); + +118 + g$php + = <<< +EOF + + +119 +is +( +sfToÞk™ +:: +¡rComm’ts +( +$php +), $php, '::stripComments() correctly handles comments within strings'); + +129 + g$t +-> +dŸg +('::stripslashesDeep()'); + +130 + g$t +-> +is +( +sfToÞk™ +:: +¡r¦ashesD“p +('foo'), 'foo', '::stripslashesDeep() strip slashes on string'); + +131 + g$t +-> +is +( +sfToÞk™ +:: +¡r¦ashesD“p +( +add¦ashes +("foo's bar")), "foo's bar", '::stripslashesDeep() strip slashes on‡rray'); + +132 + g$t +-> +is +( +sfToÞk™ +:: +¡r¦ashesD“p +( +¬¿y +( +add¦ashes +("foo's bar"),‡ddslashes("foo's bar"))),‡rray("foo's bar", "foo's bar"), '::stripslashesDeep() strip slashes on deep‡rrays'); + +133 + g$t +-> +is +( +sfToÞk™ +:: +¡r¦ashesD“p +( +¬¿y +×¼ay('foo' => +add¦ashes +("foo's bar")),‡ddslashes("foo's bar"))),‡rray(array('foo' => "foo's bar"), "foo's bar"), '::stripslashesDeep() strip slashes on deep‡rrays'); + +136 + g$t +-> +dŸg +('::clearDirectory()'); + +137 + g$tmp_dœ + = +sys_g‘_‹mp_dœ +(). +DIRECTORY_SEPARATOR +.'symfÚy_‹¡s_'. +¿nd +(1, 999); + +138 +mkdœ +( +$tmp_dœ +); + +139 +fže_put_cڋÁs +( +$tmp_dœ +. +DIRECTORY_SEPARATOR +.'test', 'ok'); + +140 +mkdœ +( +$tmp_dœ +. +DIRECTORY_SEPARATOR +.'foo'); + +141 +fže_put_cڋÁs +( +$tmp_dœ +. +DIRECTORY_SEPARATOR +.'foo'.DIRECTORY_SEPARATOR.'bar', 'ok'); + +142 + gsfToÞk™ +:: +þ—rDœeùÜy +( +$tmp_dœ +); + +143 + g$t +-> +ok +(! +is_dœ +( +$tmp_dœ +. +DIRECTORY_SEPARATOR +.'foo'), '::clearDirectory()„emoves‡ll directories fromhe directory…arameter'); + +144 + g$t +-> +ok +(! +is_fže +( +$tmp_dœ +. +DIRECTORY_SEPARATOR +.'foo'.DIRECTORY_SEPARATOR.'bar'), '::clearDirectory()„emoves‡ll directories fromhe directory…arameter'); + +145 + g$t +-> +ok +(! +is_fže +( +$tmp_dœ +. +DIRECTORY_SEPARATOR +.'test'), '::clearDirectory()„emoves‡ll directories fromhe directory…arameter'); + +146 +rmdœ +( +$tmp_dœ +); + +149 + g$t +-> +dŸg +('::clearGlob()'); + +150 + g$tmp_dœ + = +sys_g‘_‹mp_dœ +(). +DIRECTORY_SEPARATOR +.'symfÚy_‹¡s_'. +¿nd +(1, 999); + +151 +mkdœ +( +$tmp_dœ +); + +152 +mkdœ +( +$tmp_dœ +. +DIRECTORY_SEPARATOR +.'foo'); + +153 +mkdœ +( +$tmp_dœ +. +DIRECTORY_SEPARATOR +.'bar'); + +154 +fže_put_cڋÁs +( +$tmp_dœ +. +DIRECTORY_SEPARATOR +.'foo'.DIRECTORY_SEPARATOR.'bar', 'ok'); + +155 +fže_put_cڋÁs +( +$tmp_dœ +. +DIRECTORY_SEPARATOR +.'foo'.DIRECTORY_SEPARATOR.'foo', 'ok'); + +156 +fže_put_cڋÁs +( +$tmp_dœ +. +DIRECTORY_SEPARATOR +.'bar'.DIRECTORY_SEPARATOR.'bar', 'ok'); + +157 + gsfToÞk™ +:: +þ—rGlob +( +$tmp_dœ +.'/*/bar'); + +158 + g$t +-> +ok +(! +is_fže +( +$tmp_dœ +. +DIRECTORY_SEPARATOR +.'foo'.DIRECTORY_SEPARATOR.'bar'), '::clearGlob()„emoves‡ll files‡nd directories matchinghe…attern…arameter'); + +159 + g$t +-> +ok +(! +is_fže +( +$tmp_dœ +. +DIRECTORY_SEPARATOR +.'foo'.DIRECTORY_SEPARATOR.'bar'), '::clearGlob()„emoves‡ll files‡nd directories matchinghe…attern…arameter'); + +160 + g$t +-> +ok +( +is_fže +( +$tmp_dœ +. +DIRECTORY_SEPARATOR +.'foo'.DIRECTORY_SEPARATOR.'foo'), '::clearGlob()„emoves‡ll files‡nd directories matchinghe…attern…arameter'); + +161 + gsfToÞk™ +:: +þ—rDœeùÜy +( +$tmp_dœ +); + +162 +rmdœ +( +$tmp_dœ +); + +165 + g$t +-> +dŸg +('::arrayDeepMerge()'); + +166 + g$t +-> +is +( + +167 +sfToÞk™ +:: +¬¿yD“pM”ge +( +¬¿y +('d' => 'due', 't' => 'tre'),‡rray('d' => 'bis', 'q' => 'quattro')), + +168 +¬¿y +('d' => 'bis', 't' => 'tre', 'q' => 'quattro'), + +171 + g$t +-> +is +( + +172 +sfToÞk™ +:: +¬¿yD“pM”ge +( +¬¿y +('d' => 'due', 't' => 'tre', 'c' =>‡rray('c' => 'cinco')),‡rray('d' =>‡rray('due', 'bis'), 'q' => 'quattro', 'c' =>‡rray('c' => 'cinque', 'c2' => 'cinco'))), + +173 +¬¿y +('d' =>‡rray('due', 'bis'), 't' => 'tre', 'q' => 'quattro', 'c' =>‡rray('c' => 'cinque', 'c2' => 'cinco')), + +176 + g$t +-> +is +( + +177 +sfToÞk™ +:: +¬¿yD“pM”ge +( +¬¿y +(2 => 'due', 3 => 'tre'),‡rray(2 => 'bis', 4 => 'quattro')), + +178 +¬¿y +(2 => 'bis', 3 => 'tre', 4 => 'quattro'), + +181 + g$t +-> +is +( + +182 +sfToÞk™ +:: +¬¿yD“pM”ge +( +¬¿y +(2 =>‡rray('due'), 3 => 'tre'),‡rray(2 =>‡rray('bis', 'bes'), 4 => 'quattro')), + +183 +¬¿y +(2 =>‡rray('bis', 'bes'), 3 => 'tre', 4 => 'quattro'), + +187 + g$¬r + = +¬¿y +( + +189 'foo' => +¬¿y +( + +190 'b¬' => +¬¿y +( + +194 'b¬' => +¬¿y +( + +202 + g$t +-> +dŸg +('::getArrayValueForPath()'); + +204 + g$t +-> +is +( +sfToÞk™ +:: +g‘A¼ayV®ueFÜP©h +( +$¬r +, 'foobar'), 'foo', '::getArrayValueForPath()„eturnshe value ofhe…ath if itƒxists'); + +205 + g$t +-> +is +( +sfToÞk™ +:: +g‘A¼ayV®ueFÜP©h +( +$¬r +, 'b¬foo'), +nuÎ +, '::getArrayValueForPath()„eturns‚ull ifhe…ath does‚otƒxist'); + +206 + g$t +-> +is +( +sfToÞk™ +:: +g‘A¼ayV®ueFÜP©h +( +$¬r +, 'barfoo', 'bar'), 'bar', '::getArrayValueForPath()akes‡ default value‡s itshird‡rgument'); + +208 + g$t +-> +is +( +sfToÞk™ +:: +g‘A¼ayV®ueFÜP©h +( +$¬r +, 'foo[bar][baz]'), 'foo bar', '::getArrayValueForPath() works with deep…aths'); + +209 + g$t +-> +is +( +sfToÞk™ +:: +g‘A¼ayV®ueFÜP©h +( +$¬r +, 'foo[b¬][b¬]'), +çl£ +, '::getArrayValueForPath() works with deep…aths'); + +210 + g$t +-> +is +( +sfToÞk™ +:: +g‘A¼ayV®ueFÜP©h +( +$¬r +, 'foo[bar][bar]', 'bar'), 'bar', '::getArrayValueForPath() works with deep…aths'); + +212 + g$t +-> +is +( +sfToÞk™ +:: +g‘A¼ayV®ueFÜP©h +( +$¬r +, 'foo[]'), +¬¿y +('bar' =>‡rray('baz' => 'foo bar')), '::getArrayValueForPath()‡ccepts‡ []‡theƒndo check for‡n‡rray'); + +213 + g$t +-> +is +( +sfToÞk™ +:: +g‘A¼ayV®ueFÜP©h +( +$¬r +, 'foob¬[]'), +nuÎ +, '::getArrayValueForPath()‡ccepts‡ []‡theƒndo check for‡n‡rray'); + +214 + g$t +-> +is +( +sfToÞk™ +:: +g‘A¼ayV®ueFÜP©h +( +$¬r +, 'b¬foo[]'), +nuÎ +, '::getArrayValueForPath()‡ccepts‡ []‡theƒndo check for‡n‡rray'); + +215 + g$t +-> +is +( +sfToÞk™ +:: +g‘A¼ayV®ueFÜP©h +( +$¬r +, 'foobar[]', 'foo'), 'foo', '::getArrayValueForPath()‡ccepts‡ []‡theƒndo check for‡n‡rray'); + +217 + g$t +-> +is +( +sfToÞk™ +:: +g‘A¼ayV®ueFÜP©h +( +$¬r +, 'bar[1]'), 'bar', '::getArrayValueForPath() canake‡n‡rray indexed by integer'); + +218 + g$t +-> +is +( +sfToÞk™ +:: +g‘A¼ayV®ueFÜP©h +( +$¬r +, 'b¬[2]'), +nuÎ +, '::getArrayValueForPath() canake‡n‡rray indexed by integer'); + +219 + g$t +-> +is +( +sfToÞk™ +:: +g‘A¼ayV®ueFÜP©h +( +$¬r +, 'bar[2]', 'foo'), 'foo', '::getArrayValueForPath() canake‡n‡rray indexed by integer'); + +221 + g$t +-> +is +( +sfToÞk™ +:: +g‘A¼ayV®ueFÜP©h +( +$¬r +, 'foo[b¬][baz][booze]'), +nuÎ +, '::getArrayValueForPath() is‚ot fooled by…hp mistaking strings‡nd‡rray'); + +224 + g$t +-> +dŸg +('::addIncludePath()'); + +225 + g$·th + = +g‘_šþude_·th +(); + +226 + g$t +-> +is +( +sfToÞk™ +:: +addInþudeP©h +( +dœÇme +( +__FILE__ +)), +$·th +, '::addIncludePath()„eturnshe…revious include_path'); + +227 + g$t +-> +is +( +g‘_šþude_·th +(), +dœÇme +( +__FILE__ +). +PATH_SEPARATOR +. +$·th +, '::addIncludePath()‡dds‡…athohe front of include_path'); + +229 + gsfToÞk™ +:: +addInþudeP©h +( +dœÇme +( +__FILE__ +), 'back'); + +230 + g$t +-> +is +( +g‘_šþude_·th +(), +$·th +. +PATH_SEPARATOR +. +dœÇme +( +__FILE__ +), '::addIncludePath() moves‡…athoheƒnd of include_path'); + +232 + gsfToÞk™ +:: +addInþudeP©h +( +¬¿y +( + +233 +dœÇme +( +__FILE__ +), + +234 +dœÇme +( +__FILE__ +).'/..', + +236 + g$t +-> +is +( +g‘_šþude_·th +(), +dœÇme +( +__FILE__ +). +PATH_SEPARATOR +.dœÇme(__FILE__).'/..'.PATH_SEPARATOR. +$·th +, '::addIncludePath()‡dds multiple…athshehe front of include_path'); + +238 + gsfToÞk™ +:: +addInþudeP©h +( +¬¿y +( + +239 +dœÇme +( +__FILE__ +), + +240 +dœÇme +( +__FILE__ +).'/..', + +242 + g$t +-> +is +( +g‘_šþude_·th +(), +$·th +. +PATH_SEPARATOR +. +dœÇme +( +__FILE__ +).PATH_SEPARATOR.dirname(__FILE__).'/..', '::addIncludePath()‡dds multiple…athshehe back of include_path'); + +244 + gŒy + + +246 + gsfToÞk™ +:: +addInþudeP©h +( +dœÇme +( +__FILE__ +), 'foobar'); + +247 + g$t +-> +çž +('::addIncludePath()hrows‡nƒxception if…osition is‚ot valid'); + +249 + $ÿtch + ( +Exû±iÚ + +$e +) + +251 +$t +-> + `·ss +('::addIncludePath()hrows‡nƒxception if…osition is‚ot valid'); + +252 + } +} + + @lib/vendor/symfony/test/unit/validator/i18n/sfValidatorI18nChoiceCountryTest.php + +1 +dŸg +('->configure()'); + +18 + gŒy + + +20 +Ãw + +sfV®id©ÜI18nChoiûCouÁry +( +¬¿y +('countries' =>‡rray('EN'))); + +21 + g$t +-> +çž +('->configure()hrows‡n InvalidArgumentException if‡ country does‚otƒxist'); + +23 + $ÿtch + ( +Inv®idArgum’tExû±iÚ + +$e +) + +25 +$t +-> + `·ss +('->configure()hrows‡n InvalidArgumentException if‡ country does‚otƒxist'); + +26 + } +} + +28 + g$v + = +Ãw + +sfV®id©ÜI18nChoiûCouÁry +( +¬¿y +('countries' =>‡rray('FR', 'GB'))); + +29 + g$t +-> +is +( +$v +-> +g‘O±iÚ +('choiûs'), +¬¿y +('FR', 'GB'), '->configure() can„estricthe‚umber of countries withhe countries option'); + +32 + g$t +-> +dŸg +('->clean()'); + +33 + g$v + = +Ãw + +sfV®id©ÜI18nChoiûCouÁry +( +¬¿y +('countries' =>‡rray('FR', 'GB'))); + +34 + g$t +-> +is +( +$v +-> +þ—n +('FR'), 'FR', '->clean() cleanshe input value'); + + @lib/vendor/symfony/test/unit/validator/i18n/sfValidatorI18nChoiceLanguageTest.php + +1 +dŸg +('->configure()'); + +18 + gŒy + + +20 +Ãw + +sfV®id©ÜI18nChoiûLªguage +( +¬¿y +('languages' =>‡rray('xx'))); + +21 + g$t +-> +çž +('->configure()hrows‡n InvalidArgumentException if‡†anguage does‚otƒxist'); + +23 + $ÿtch + ( +Inv®idArgum’tExû±iÚ + +$e +) + +25 +$t +-> + `·ss +('->configure()hrows‡n InvalidArgumentException if‡†anguage does‚otƒxist'); + +26 + } +} + +28 + g$v + = +Ãw + +sfV®id©ÜI18nChoiûLªguage +( +¬¿y +('languages' =>‡rray('fr', 'en'))); + +29 + g$t +-> +is +( +$v +-> +g‘O±iÚ +('choiûs'), +¬¿y +('fr', 'en'), '->configure() can„estricthe‚umber of†anguages withhe†anguages option'); + +32 + g$t +-> +dŸg +('->clean()'); + +33 + g$v + = +Ãw + +sfV®id©ÜI18nChoiûLªguage +( +¬¿y +('languages' =>‡rray('fr', 'en'))); + +34 + g$t +-> +is +( +$v +-> +þ—n +('fr'), 'fr', '->clean() cleanshe input value'); + + @lib/vendor/symfony/test/unit/validator/i18n/sfValidatorI18nChoiceTimezoneTest.php + +1 +dŸg +('->configure()'); + +19 + g$t +-> +dŸg +('->clean()'); + +20 + g$v + = +Ãw + +sfV®id©ÜI18nChoiûTimezÚe +(); + +21 + g$t +-> +is +( +$v +-> +þ—n +('Europe/Paris'), 'Europe/Paris', '->clean() cleanshe input value'); + + @lib/vendor/symfony/test/unit/validator/sfValidatorAndTest.php + +1 3)); + +16 + g$v2 + = +Ãw + +sfV®id©ÜSŒšg +( +¬¿y +('min_length' => 3)); + +18 + g$v + = +Ãw + +sfV®id©ÜAnd +( +¬¿y +( +$v1 +, +$v2 +)); + +21 + g$t +-> +dŸg +('__construct()'); + +22 + g$v + = +Ãw + +sfV®id©ÜAnd +(); + +23 + g$t +-> +is +( +$v +-> +g‘V®id©Üs +(), +¬¿y +(), '->__construct() canake‚o‡rgument'); + +24 + g$v + = +Ãw + +sfV®id©ÜAnd +( +$v1 +); + +25 + g$t +-> +is +( +$v +-> +g‘V®id©Üs +(), +¬¿y +( +$v1 +), '->__construct() canake‡ validator‡s its first‡rgument'); + +26 + g$v + = +Ãw + +sfV®id©ÜAnd +( +¬¿y +( +$v1 +, +$v2 +)); + +27 + g$t +-> +is +( +$v +-> +g‘V®id©Üs +(), +¬¿y +( +$v1 +, +$v2 +), '->__construct() canake‡n‡rray of validators‡s its first‡rgument'); + +28 + gŒy + + +30 + g$v + = +Ãw + +sfV®id©ÜAnd +('string'); + +31 + g$t +-> +çž +('__construct()hrows‡nƒxception when…assing‡‚on supported first‡rgument'); + +33 + $ÿtch + ( +Inv®idArgum’tExû±iÚ + +$e +) + +35 +$t +-> + `·ss +('__construct()hrows‡nƒxception when…assing‡‚on supported first‡rgument'); + +36 + } +} + +39 + g$t +-> +dŸg +('->addValidator()'); + +40 + g$v + = +Ãw + +sfV®id©ÜAnd +(); + +41 + g$v +-> +addV®id©Ü +( +$v1 +); + +42 + g$v +-> +addV®id©Ü +( +$v2 +); + +43 + g$t +-> +is +( +$v +-> +g‘V®id©Üs +(), +¬¿y +( +$v1 +, +$v2 +), '->addValidator()‡dds‡ validator'); + +46 + g$t +-> +dŸg +('->clean()'); + +47 + g$t +-> +is +( +$v +-> +þ—n +('foo'), 'foo', '->clean()„eturnshe string unmodified'); + +49 + gŒy + + +51 + g$v +-> +£tO±iÚ +('»quœed', +Œue +); + +52 + g$v +-> +þ—n +( +nuÎ +); + +53 + g$t +-> +çž +('->clean()hrows‡n sfValidatorErrorƒxception ifhe input value is„equired'); + +54 + g$t +-> +sk +('', 1); + +56 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +58 +$t +-> + `·ss +('->clean()hrows‡n sfValidatorErrorƒxception ifhe input value is„equired'); + +59 +$t +-> + `is +( +$e +-> + `g‘Code +(), 'required', '->clean()hrows‡ sfValidatorError'); + +60 + } +} + +62 + g$v2 +-> +£tO±iÚ +('max_length', 2); + +63 + gŒy + + +65 + g$v +-> +þ—n +('foo'); + +66 + g$t +-> +çž +('->clean()hrows‡n sfValidatorErrorƒxception if one ofhe validators fails'); + +67 + g$t +-> +sk +('', 2); + +69 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +71 +$t +-> + `·ss +('->clean()hrows‡n sfValidatorErrorƒxception if one ofhe validators fails'); + +72 +$t +-> + `is +( +$e +[0]-> + `g‘Code +(), 'max_length', '->clean()hrows‡ sfValidatorSchemaError'); + +73 +$t +-> + `is +( +$e + +š¡ªûof + +sfV®id©ÜE¼ÜSchema +, 'max_length', '->clean()hrows‡ sfValidatorSchemaError'); + +74 + } +} + +76 + g$v1 +-> +£tO±iÚ +('max_length', 2); + +77 + gŒy + + +79 + g$v +-> +þ—n +('foo'); + +80 + g$t +-> +çž +('->clean()hrows‡n sfValidatorErrorƒxception if one ofhe validators fails'); + +81 + g$t +-> +sk +('', 4); + +83 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +85 +$t +-> + `·ss +('->clean()hrows‡n sfValidatorErrorƒxception if one ofhe validators fails'); + +86 +$t +-> + `is +( + `couÁ +( +$e +), 2, '->clean()hrows‡nƒrror forƒveryƒrror'); + +87 +$t +-> + `is +( +$e +[0]-> + `g‘Code +(), 'max_length', '->clean()hrows‡ sfValidatorSchemaError'); + +88 +$t +-> + `is +( +$e +[1]-> + `g‘Code +(), 'max_length', '->clean()hrows‡ sfValidatorSchemaError'); + +89 +$t +-> + `is +( +$e + +š¡ªûof + +sfV®id©ÜE¼ÜSchema +, 'max_length', '->clean()hrows‡ sfValidatorSchemaError'); + +90 + } +} + +92 + g$v +-> +£tO±iÚ +('h®t_Ú_”rÜ', +Œue +); + +93 + gŒy + + +95 + g$v +-> +þ—n +('foo'); + +96 + g$t +-> +çž +('->clean()hrows‡n sfValidatorErrorƒxception if one ofhe validators fails'); + +97 + g$t +-> +sk +('', 3); + +99 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +101 +$t +-> + `·ss +('->clean()hrows‡n sfValidatorErrorƒxception if one ofhe validators fails'); + +102 +$t +-> + `is +( + `couÁ +( +$e +), 1, '->clean() only„eturnshe firstƒrror if halt_on_error option isrue'); + +103 +$t +-> + `is +( +$e +[0]-> + `g‘Code +(), 'max_length', '->clean()hrows‡ sfValidatorSchemaError'); + +104 +$t +-> + `is +( +$e + +š¡ªûof + +sfV®id©ÜE¼ÜSchema +, 'max_length', '->clean()hrows‡ sfValidatorSchemaError'); + +105 + } +} + +107 + gŒy + + +109 + g$v +-> +£tMes§ge +('invalid', 'Invalid.'); + +110 + g$v +-> +þ—n +('foo'); + +111 + g$t +-> +çž +('->clean()hrows‡n sfValidatorErrorƒxception if one ofhe validators fails'); + +112 + g$t +-> +sk +('', 2); + +114 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +116 +$t +-> + `·ss +('->clean()hrows‡n sfValidatorErrorƒxception if one ofhe validators fails'); + +117 +$t +-> + `is +( +$e +-> + `g‘Code +(), 'invalid', '->clean()hrows‡ sfValidatorError if invalid message is‚otƒmpty'); + +118 +$t +-> + `is +(! +$e + +š¡ªûof + +sfV®id©ÜE¼ÜSchema +, 'max_length', '->clean()hrows‡ sfValidatorError if invalid message is‚otƒmpty'); + +119 + } +} + +122 + g$t +-> +dŸg +('->asString()'); + +123 + g$v1 + = +Ãw + +sfV®id©ÜSŒšg +( +¬¿y +('max_length' => 3)); + +124 + g$v2 + = +Ãw + +sfV®id©ÜSŒšg +( +¬¿y +('min_length' => 3)); + +125 + g$v + = +Ãw + +sfV®id©ÜAnd +( +¬¿y +( +$v1 +, +$v2 +)); + +126 + g$t +-> +is +( +$v +-> +asSŒšg +(), "(\n String({ max_length: 3 })\n‡nd\n String({ min_length: 3 })\n)" + +129 + g$v + = +Ãw + +sfV®id©ÜAnd +( +¬¿y +( +$v1 +, +$v2 +),‡rray(),‡rray('required' => 'This is„equired.')); + +130 + g$t +-> +is +( +$v +-> +asSŒšg +(), "(\n String({ max_length: 3 })\n‡nd({}, {„equired: 'This is„equired.' })\n String({ min_length: 3 })\n)" + + @lib/vendor/symfony/test/unit/validator/sfValidatorBaseTest.php + +1 + `addO±iÚ +('foo', 'bar'); + +20 +$this +-> + `addMes§ge +('foo', 'bar'); + +23 +public + +funùiÚ + + $‹¡IsEm±y +( +$v®ue +) + +25  +$this +-> + `isEm±y +( +$v®ue +); + +26 + } +} + +28 +´Ùeùed + +funùiÚ + + $doC˪ +( +$v®ue +) + +30  +$v®ue +; + +31 + } +} + +34 þas  + cV®id©ÜId’t™yW™hRequœed + +ex‹nds + + msfV®id©ÜBa£ + + +36 +´Ùeùed + +funùiÚ + +cÚfigu» +( +$ÝtiÚs + = +¬¿y +(), +$mes§ges + = + $¬¿y +()) + +38 +$this +-> + `addRequœedO±iÚ +('foo'); + +41 +´Ùeùed + +funùiÚ + + $doC˪ +( +$v®ue +) + +43  +$v®ue +; + +44 + } +} + +48 + g$t +-> +dŸg +('->configure()'); + +49 + g$v + = +Ãw + +V®id©ÜId’t™y +(); + +50 + g$t +-> +is +( +$v +-> +g‘O±iÚ +('foo'), 'bar', '->configure() can‡dd some options'); + +51 + g$v + = +Ãw + +V®id©ÜId’t™y +( +¬¿y +('foo' => 'foobar')); + +52 + g$t +-> +is +( +$v +-> +g‘O±iÚ +('foo'), 'foobar', '->configure()akes‡n options‡rray‡s its first‡rgument‡nd values override default option values'); + +53 + g$v + = +Ãw + +V®id©ÜId’t™y +(); + +54 + g$t +-> +is +( +$v +-> +g‘Mes§ge +('foo'), 'bar', '->configure() can‡dd some message'); + +55 + g$v + = +Ãw + +V®id©ÜId’t™y +( +¬¿y +(),‡rray('foo' => 'foobar')); + +56 + g$t +-> +is +( +$v +-> +g‘Mes§ge +('foo'), 'foobar', '->configure()akes‡ messages‡rray‡s its second‡rgument‡nd values override default message values'); + +58 + gŒy + + +60 +Ãw + +V®id©ÜId’t™y +( +¬¿y +('nÚexi¡ªt' => +çl£ +, 'foo' => 'foob¬', 'ªÙh”nÚexi¡ªt' => 'b¬', '»quœed' => +Œue +)); + +61 + g$t +-> +çž +('__construct()hrows‡n InvalidArgumentException if you…ass some‚onƒxistant options'); + +62 + g$t +-> +sk +(); + +64 + $ÿtch + ( +Inv®idArgum’tExû±iÚ + +$e +) + +66 +$t +-> + `·ss +('__construct()hrows‡n InvalidArgumentException if you…ass some‚onƒxistant options'); + +67 +$t +-> + `like +( +$e +-> + `g‘Mes§ge +(), '/ \'nonexistant\', \'anothernonexistant\'/', 'Theƒxception containshe‚onƒxistant option‚ames'); + +68 + } +} + +70 + gŒy + + +72 +Ãw + +V®id©ÜId’t™y +( +¬¿y +(),‡¼ay('»quœed' => 'Thi i »quœed.', 'nÚexi¡ªt' => 'foo', 'ªÙh”nÚexi¡ªt' => +çl£ +)); + +73 + g$t +-> +çž +('__construct()hrows‡n InvalidArgumentException if you…ass some‚onƒxistantƒrror codes'); + +74 + g$t +-> +sk +(); + +76 + $ÿtch + ( +Inv®idArgum’tExû±iÚ + +$e +) + +78 +$t +-> + `·ss +('__construct()hrows‡n InvalidArgumentException if you…ass some‚onƒxistantƒrror codes'); + +79 +$t +-> + `like +( +$e +-> + `g‘Mes§ge +(), '/ \'nonexistant\', \'anothernonexistant\'/', 'Theƒxception containshe‚onƒxistantƒrror codes'); + +80 + } +} + +83 + g$t +-> +dŸg +('getRequiredOptions'); + +84 + g$v + = +Ãw + +V®id©ÜId’t™yW™hRequœed +( +¬¿y +('foo' => 'bar')); + +85 + g$t +-> +is +( +$v +-> +g‘RequœedO±iÚs +(), +¬¿y +('foo'), '->getRequiredOptions()„eturns‡n‡rray of„equired option‚ames'); + +87 + gŒy + + +89 +Ãw + +V®id©ÜId’t™yW™hRequœed +(); + +90 + g$t +-> +çž +('__construct()hrows‡n RuntimeException if you don\'t…ass‡„equired option'); + +92 + $ÿtch + ( +RuÁimeExû±iÚ + +$e +) + +94 +$t +-> + `·ss +('__construct()hrows‡n RuntimeException if you don\'t…ass‡„equired option'); + +95 + } +} + +97 + g$v + = +Ãw + +V®id©ÜId’t™y +(); + +100 + g$t +-> +dŸg +('->clean()'); + +101 + g$t +-> +is +( +$v +-> +þ—n +('foo'), 'foo', '->clean()„eturns‡ cleanup version ofhe datao validate'); + +102 + gŒy + + +104 + g$t +-> +is +( +$v +-> +þ—n +(''), ''); + +105 + g$t +-> +çž +('->clean()hrows‡ sfValidatorErrorƒxception ifhe data does‚ot validate'); + +106 + g$t +-> +sk +('', 1); + +108 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +110 +$t +-> + `·ss +('->clean()hrows‡ sfValidatorErrorƒxception ifhe data does‚ot validate'); + +111 +$t +-> + `is +( +$e +-> + `g‘Code +(), 'required', '->clean()hrows‡ sfValidatorError'); + +112 + } +} + +113 + g$t +-> +is +( +$v +-> +þ—n +(' foo '), ' foo ', '->clean() does‚otrim whitespaces by default'); + +116 + g$t +-> +dŸg +('->isEmpty()'); + +117 + g$t +-> +is +( +$v +-> +‹¡IsEm±y +( +nuÎ +), +Œue +, 'null value isEmpty()'); + +118 + g$t +-> +is +( +$v +-> +‹¡IsEm±y +(''), +Œue +, 'empty string value isEmpty()'); + +119 + g$t +-> +is +( +$v +-> +‹¡IsEm±y +( +¬¿y +()), +Œue +, 'empty‡rray value isEmpty()'); + +120 + g$t +-> +is +( +$v +-> +‹¡IsEm±y +( +çl£ +), false, 'false value‚ot isEmpty()'); + +123 + g$t +-> +dŸg +('->getEmptyValue()'); + +124 + g$v +-> +£tO±iÚ +('»quœed', +çl£ +); + +125 + g$v +-> +£tO±iÚ +('empty_value', 'defaultnullvalue'); + +126 + g$t +-> +is +( +$v +-> +þ—n +(''), 'defaultnullvalue', '->getEmptyValue()„eturnshe„epresentation of‡nƒmpty value forhis validator'); + +127 + g$v +-> +£tO±iÚ +('em±y_v®ue', +nuÎ +); + +130 + g$t +-> +dŸg +('->setOption()'); + +131 + g$v +-> +£tO±iÚ +('»quœed', +çl£ +); + +132 + g$t +-> +is +( +$v +-> +þ—n +(''), +nuÎ +, '->setOption() changes options (required forƒxample)'); + +133 + g$v +-> +£tO±iÚ +('Œim', +Œue +); + +134 + g$t +-> +is +( +$v +-> +þ—n +(' foo '), 'foo', '->setOption() canurn on whitespacerimming'); + +135 + gŒy + + +137 + g$v +-> +£tO±iÚ +('foobar', 'foo'); + +138 + g$t +-> +çž +('->setOption()hrows‡n InvalidArgumentException ifhe option is‚ot„egistered'); + +140 + $ÿtch + ( +Inv®idArgum’tExû±iÚ + +$e +) + +142 +$t +-> + `·ss +('->setOption()hrows‡n InvalidArgumentException ifhe option is‚ot„egistered'); + +143 + } +} + +146 + g$t +-> +dŸg +('->hasOption()'); + +147 + g$t +-> +ok +( +$v +-> +hasO±iÚ +('required'), '->hasOption()„eturnsrue ifhe validator hashe option'); + +148 + g$t +-> +ok +(! +$v +-> +hasO±iÚ +('nonexistant'), '->hasOption()„eturns false ifhe validator does‚ot havehe option'); + +151 + g$t +-> +dŸg +('->getOption()'); + +152 + g$t +-> +is +( +$v +-> +g‘O±iÚ +('»quœed'), +çl£ +, '->getOption()„eturnshe value of‡n option'); + +153 + g$t +-> +is +( +$v +-> +g‘O±iÚ +('nÚexi¡ªt'), +nuÎ +, '->getOption()„eturns‚ull ifhe option does‚otƒxist'); + +156 + g$t +-> +dŸg +('->addOption()'); + +157 + g$v +-> +addO±iÚ +('foobar'); + +158 + g$v +-> +£tO±iÚ +('foobar', 'foo'); + +159 + g$t +-> +is +( +$v +-> +g‘O±iÚ +('foobar'), 'foo', '->addOption()‡dds‡‚ew optiono‡ validator'); + +162 + g$t +-> +dŸg +('->getOptions() ->setOptions()'); + +163 + g$v +-> +£tO±iÚs +( +¬¿y +('»quœed' => +Œue +, 'Œim' => +çl£ +)); + +164 + g$t +-> +is +( +$v +-> +g‘O±iÚs +(), +¬¿y +('»quœed' => +Œue +, 'Œim' => +çl£ +, 'em±y_v®ue' => +nuÎ +), '->setOptions() changes‡ll options'); + +167 + g$t +-> +dŸg +('->getMessages()'); + +168 + g$t +-> +is +( +$v +-> +g‘Mes§ges +(), +¬¿y +('required' => 'Required.', 'invalid' => 'Invalid.', 'foo' => 'bar'), '->getMessages()„eturns‡n‡rray of‡llƒrror messages'); + +171 + g$t +-> +dŸg +('->getMessage()'); + +172 + g$t +-> +is +( +$v +-> +g‘Mes§ge +('required'), 'Required.', '->getMessage()„eturns‡nƒrror message string'); + +173 + g$t +-> +is +( +$v +-> +g‘Mes§ge +('nonexistant'), '', '->getMessage()„eturns‡nƒmpty string ifhe message does‚otƒxist'); + +176 + g$t +-> +dŸg +('->setMessage()'); + +177 + g$v +-> +£tMes§ge +('required', 'The field is„equired.'); + +178 + gŒy + + +180 + g$v +-> +þ—n +(''); + +181 + g$t +-> +i¢t +( +$e +-> +g‘Mes§ge +(), 'The field is„equired.', '->setMessage() changeshe defaultƒrror message string'); + +183 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +185 +$t +-> + `is +( +$e +-> + `g‘Mes§ge +(), 'The field is„equired.', '->setMessage() changeshe defaultƒrror message string'); + +186 + } +} + +188 + gŒy + + +190 + g$v +-> +£tMes§ge +('foobar', 'foo'); + +191 + g$t +-> +çž +('->setMessage()hrows‡n InvalidArgumentException ifhe message is‚ot„egistered'); + +193 + $ÿtch + ( +Inv®idArgum’tExû±iÚ + +$e +) + +195 +$t +-> + `·ss +('->setMessage()hrows‡n InvalidArgumentException ifhe message is‚ot„egistered'); + +196 + } +} + +199 + g$t +-> +dŸg +('->setMessages()'); + +200 + g$v +-> +£tMes§ges +( +¬¿y +('required' => 'This is„equired!')); + +201 + g$t +-> +is +( +$v +-> +g‘Mes§ges +(), +¬¿y +('invalid' => 'Invalid.', 'required' => 'This is„equired!'), '->setMessages() changes‡llƒrror messages'); + +204 + g$t +-> +dŸg +('->addMessage()'); + +205 + g$v +-> +addMes§ge +('foobar', 'foo'); + +206 + g$v +-> +£tMes§ge +('foobar', 'bar'); + +207 + g$t +-> +is +( +$v +-> +g‘Mes§ge +('foobar'), 'bar', '->addMessage()‡dds‡‚ewƒrror code'); + +210 + g$t +-> +dŸg +('->getErrorCodes()'); + +211 + g$t +-> +is +( +$v +-> +g‘E¼ÜCodes +(), +¬¿y +('required', 'invalid', 'foo'), '->getErrorCodes()„eturns‡n‡rray ofƒrror codeshe validator can use'); + +214 + g$t +-> +dŸg +('::getCharset() ::setCharset()'); + +215 + g$t +-> +is +( +sfV®id©ÜBa£ +:: +g‘Ch¬£t +(), 'UTF-8', '::getCharset()„eturnshe charseto use for validators'); + +216 + gsfV®id©ÜBa£ +:: +£tCh¬£t +('ISO-8859-1'); + +217 + g$t +-> +is +( +sfV®id©ÜBa£ +:: +g‘Ch¬£t +(), 'ISO-8859-1', '::setCharset() changeshe charseto use for validators'); + +220 + g$t +-> +dŸg +('->asString()'); + +221 + g$v + = +Ãw + +V®id©ÜId’t™y +(); + +222 + g$t +-> +is +( +$v +-> +asSŒšg +(), 'ValidatorIdentity()', '->asString()„eturns‡ string„epresentation ofhe validator'); + +223 + g$v +-> +£tO±iÚ +('»quœed', +çl£ +); + +224 + g$v +-> +£tO±iÚ +('foo', 'foo'); + +225 + g$t +-> +is +( +$v +-> +asSŒšg +(), 'ValidatorIdentity({„equired: false, foo: foo })', '->asString()„eturns‡ string„epresentation ofhe validator'); + +227 + g$v +-> +£tMes§ge +('required', 'This is„equired.'); + +228 + g$t +-> +is +( +$v +-> +asSŒšg +(), 'ValidatorIdentity({„equired: false, foo: foo }, {„equired: \'This is„equired.\' })', '->asString()„eturns‡ string„epresentation ofhe validator'); + +230 + g$v + = +Ãw + +V®id©ÜId’t™y +(); + +231 + g$v +-> +£tMes§ge +('required', 'This is„equired.'); + +232 + g$t +-> +is +( +$v +-> +asSŒšg +(), 'ValidatorIdentity({}, {„equired: \'This is„equired.\' })', '->asString()„eturns‡ string„epresentation ofhe validator'); + +235 + g$t +-> +dŸg +('::setDefaultMessage()'); + +236 + gV®id©ÜId’t™y +:: +£tDeçuÉMes§ge +('required', 'This field is„equired.'); + +237 + gV®id©ÜId’t™y +:: +£tDeçuÉMes§ge +('invalid', 'This field is invalid.'); + +238 + gV®id©ÜId’t™y +:: +£tDeçuÉMes§ge +('foo', 'Foo bar.'); + +239 + g$v + = +Ãw + +V®id©ÜId’t™y +(); + +240 + g$t +-> +is +( +$v +-> +g‘Mes§ge +('required'), 'This field is„equired.', '::setDefaultMessage() setshe default message for‡nƒrror'); + +241 + g$t +-> +is +( +$v +-> +g‘Mes§ge +('invalid'), 'This field is invalid.', '::setDefaultMessage() setshe default message for‡nƒrror'); + +242 + g$t +-> +is +( +$v +-> +g‘Mes§ge +('foo'), 'Foo bar.', '::setDefaultMessage() setshe default message for‡nƒrror'); + +244 + g$v + = +Ãw + +V®id©ÜId’t™y +( +¬¿y +(),‡rray('required' => 'Yep,his is„equired!', 'foo' => 'Yep,his is‡ fooƒrror!')); + +245 + g$t +-> +is +( +$v +-> +g‘Mes§ge +('required'), 'Yep,his is„equired!', '::setDefaultMessage() is ignored ifhe validatorƒxplicitly overrideshe message'); + +246 + g$t +-> +is +( +$v +-> +g‘Mes§ge +('foo'), 'Yep,his is‡ fooƒrror!', '::setDefaultMessage() is ignored ifhe validatorƒxplicitly overrideshe message'); + + @lib/vendor/symfony/test/unit/validator/sfValidatorBooleanTest.php + +1 +dŸg +('->clean()'); + +21 + g$t +-> +dŸg +('true values'); + +22 +fܗch + ( +$v +-> +g‘O±iÚ +('Œue_v®ues'è +as + +$Œue_v®ue +) + +24 + g$t +-> +is +( +$v +-> +þ—n +( +$Œue_v®ue +), +Œue +, '->clean()„eturnsrue ifhe value is inherue_values option'); + +28 + g$t +-> +dŸg +('false values'); + +29 +fܗch + ( +$v +-> +g‘O±iÚ +('çl£_v®ues'è +as + +$çl£_v®ue +) + +31 + g$t +-> +is +( +$v +-> +þ—n +( +$çl£_v®ue +), +çl£ +, '->clean()„eturns false ifhe value is inhe false_values option'); + +35 + g$t +-> +is +( +$v +-> +þ—n +( +nuÎ +), +çl£ +, '->clean()„eturns false ifhe value is‚ull'); + +37 + gŒy + + +39 + g$v +-> +þ—n +('astring'); + +40 + g$t +-> +çž +('->clean()hrows‡nƒrror ifhe input value is‚ot‡rue or‡ false value'); + +41 + g$t +-> +sk +('', 1); + +43 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +45 +$t +-> + `·ss +('->clean()hrows‡nƒrror ifhe input value is‚ot‡rue or‡ false value'); + +46 +$t +-> + `is +( +$e +-> + `g‘Code +(), 'invalid', '->clean()hrows‡ sfValidatorError'); + +47 + } +} + +50 + g$t +-> +dŸg +('empty'); + +51 + g$v +-> +£tO±iÚ +('»quœed', +çl£ +); + +52 + g$t +-> +ok +( +$v +-> +þ—n +( +nuÎ +è==ð +çl£ +, '->clean()„eturns false if‚o value is given'); + +53 + g$v +-> +£tO±iÚ +('em±y_v®ue', +Œue +); + +54 + g$t +-> +ok +( +$v +-> +þ—n +( +nuÎ +è==ð +Œue +, '->clean()„eturnshe value ofheƒmpty_value option if‚o value is given'); + + @lib/vendor/symfony/test/unit/validator/sfValidatorCSRFTokenTest.php + +1 +dŸg +('__construct()'); + +17 + gŒy + + +19 +Ãw + +sfV®id©ÜCSRFTok’ +(); + +20 + g$t +-> +çž +('__construct()hrows‡n RuntimeException if you don\'t…ass‡oken option'); + +22 + $ÿtch + ( +RuÁimeExû±iÚ + +$e +) + +24 +$t +-> + `·ss +('__construct()hrows‡n RuntimeException if you don\'t…ass‡oken option'); + +25 + } +} + +27 + g$v + = +Ãw + +sfV®id©ÜCSRFTok’ +( +¬¿y +('token' => 'symfony')); + +30 + g$t +-> +dŸg +('->clean()'); + +31 + g$t +-> +is +( +$v +-> +þ—n +('symfony'), 'symfony', '->clean() checkshatheoken is valid'); + +33 + gŒy + + +35 + g$v +-> +þ—n +('another'); + +36 + g$t +-> +çž +('->clean()hrows‡n sfValidatorError ifheoken is‚ot valid'); + +37 + g$t +-> +sk +('', 1); + +39 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +41 +$t +-> + `·ss +('->clean()hrows‡n sfValidatorError ifheoken is‚ot valid'); + +42 +$t +-> + `is +( +$e +-> + `g‘Code +(), 'csrf_attack', '->clean()hrows‡ sfValidatorError'); + +43 + } +} + +46 + g$t +-> +dŸg +('->asString()'); + +47 + g$t +-> +is +( +$v +-> +asSŒšg +(), 'CSRFToken({oken: symfony })', '->asString()„eturns‡ string„epresentation ofhe validator'); + + @lib/vendor/symfony/test/unit/validator/sfValidatorCallbackTest.php + +1 +dŸg +('__construct()'); + +27 + gŒy + + +29 +Ãw + +sfV®id©ÜC®lback +(); + +30 + g$t +-> +çž +('__construct()hrows‡n RuntimeException if you don\'t…ass‡ callback option'); + +32 + $ÿtch + ( +RuÁimeExû±iÚ + +$e +) + +34 +$t +-> + `·ss +('__construct()hrows‡n RuntimeException if you don\'t…ass‡ callback option'); + +35 + } +} + +37 + g$v + = +Ãw + +sfV®id©ÜC®lback +( +¬¿y +('callback' => 'clean_test')); + +40 + g$t +-> +dŸg +('->configure()'); + +41 + g$t +-> +is +( +$v +-> +þ—n +(''), +nuÎ +, '->configure() switch„equiredo false by default'); + +44 + g$t +-> +dŸg +('->clean()'); + +45 + g$t +-> +is +( +$v +-> +þ—n +('foo'), '*foo*', '->clean() calls our validator callback'); + +46 + gŒy + + +48 + g$v +-> +þ—n +('bar'); + +49 + g$t +-> +çž +('->clean()hrows‡ sfValidatorError'); + +50 + g$t +-> +sk +('', 1); + +52 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +54 +$t +-> + `·ss +('->clean()hrows‡ sfValidatorError'); + +55 +$t +-> + `is +( +$e +-> + `g‘Code +(), 'must_be_foo', '->clean()hrows‡ sfValidatorError'); + +56 + } +} + +58 + g$t +-> +dŸg +('callback with‡rguments'); + +59 + g$v + = +Ãw + +sfV®id©ÜC®lback +( +¬¿y +('callback' => 'clean_test', 'arguments' =>‡rray('fabien', 'symfony'))); + +60 + g$t +-> +is +( +$v +-> +þ—n +('foo'), '*foo*fabien-symfony', '->configure() canake‡n‡rguments option'); + +63 + g$t +-> +dŸg +('->asString()'); + +64 + g$v + = +Ãw + +sfV®id©ÜC®lback +( +¬¿y +('callback' => 'clean_test')); + +65 + g$t +-> +is +( +$v +-> +asSŒšg +(), 'Callback({ callback: clean_test })', '->asString()„eturns‡ string„epresentation ofhe validator'); + + @lib/vendor/symfony/test/unit/validator/sfValidatorChoiceTest.php + +1 +dŸg +('__construct()'); + +22 + gŒy + + +24 +Ãw + +sfV®id©ÜChoiû +(); + +25 + g$t +-> +çž +('__construct()hrows‡n RuntimeException if you don\'t…ass‡nƒxpected option'); + +27 + $ÿtch + ( +RuÁimeExû±iÚ + +$e +) + +29 +$t +-> + `·ss +('__construct()hrows‡n RuntimeException if you don\'t…ass‡nƒxpected option'); + +30 + } +} + +32 + g$v + = +Ãw + +sfV®id©ÜChoiû +( +¬¿y +('choices' =>‡rray('foo', 'bar'))); + +35 + g$t +-> +dŸg +('->clean()'); + +36 + g$t +-> +is +( +$v +-> +þ—n +('foo'), 'foo', '->clean() checkshathe value is‡nƒxpected value'); + +37 + g$t +-> +is +( +$v +-> +þ—n +('bar'), 'bar', '->clean() checkshathe value is‡nƒxpected value'); + +39 + gŒy + + +41 + g$v +-> +þ—n +('foobar'); + +42 + g$t +-> +çž +('->clean()hrows‡n sfValidatorError ifhe value is‚ot‡nƒxpected value'); + +43 + g$t +-> +sk +('', 1); + +45 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +47 +$t +-> + `·ss +('->clean()hrows‡n sfValidatorError ifhe value is‚ot‡nƒxpected value'); + +48 +$t +-> + `is +( +$e +-> + `g‘Code +(), 'invalid', '->clean()hrows‡ sfValidatorError'); + +49 + } +} + +52 + g$t +-> +dŸg +('->asString()'); + +53 + g$t +-> +is +( +$v +-> +asSŒšg +(), 'Choice({ choices: [foo, bar] })', '->asString()„eturns‡ string„epresentation ofhe validator'); + +56 + g$t +-> +dŸg +('choices‡s‡ callable'); + +57 + g$v + = +Ãw + +sfV®id©ÜChoiû +( +¬¿y +('choiûs' =>‚ew +sfC®ÏbË +('choice_callable'))); + +58 + g$t +-> +is +( +$v +-> +þ—n +('2'), '2', '__construct() canake‡ sfCallable object‡s‡ choices option'); + +61 + g$v + = +Ãw + +sfV®id©ÜChoiû +( +¬¿y +('choices' =>‡rray(0, 1, 2))); + +62 + gŒy + + +64 + g$v +-> +þ—n +('xxx'); + +65 + g$t +-> +çž +('->clean()hrows‡n sfValidatorError ifhe value is‚ot strictly‡nƒxpected value'); + +66 + g$t +-> +sk +('', 1); + +68 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +70 +$t +-> + `·ss +('->clean()hrows‡n sfValidatorError ifhe value is‚ot strictly‡nƒxpected value'); + +71 +$t +-> + `is +( +$e +-> + `g‘Code +(), 'invalid', '->clean()hrows‡ sfValidatorError'); + +72 + } +} + +75 + g$v + = +Ãw + +sfV®id©ÜChoiû +( +¬¿y +('muɝË' => +Œue +, 'choices' =>‡rray(0, 1, 2, 3, 4, 5), 'min' => 2, 'max' => 3)); + +76 + gŒy + + +78 + g$v +-> +þ—n +( +¬¿y +(0)); + +79 + g$t +-> +çž +('->clean()hrows‡n sfValidatorError ifhe minimum‚umber of values‡re‚ot selected'); + +80 + g$t +-> +sk +('', 1); + +82 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +84 +$t +-> + `·ss +('->clean()hrows‡n sfValidatorError ifhe minimum‚umber of values‡re‚ot selected'); + +85 +$t +-> + `is +( +$e +-> + `g‘Code +(), 'min', '->clean()hrows‡ sfValidatorError'); + +86 + } +} + +88 + gŒy + + +90 + g$v +-> +þ—n +( +¬¿y +(0, 1, 2, 3)); + +91 + g$t +-> +çž +('->clean()hrows‡n sfValidatorError if morehanhe maximum‚umber of values‡re selected'); + +92 + g$t +-> +sk +('', 1); + +94 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +96 +$t +-> + `·ss +('->clean()hrows‡n sfValidatorError if morehanhe maximum‚umber of values‡re selected'); + +97 +$t +-> + `is +( +$e +-> + `g‘Code +(), 'max', '->clean()hrows‡ sfValidatorError'); + +98 + } +} + + @lib/vendor/symfony/test/unit/validator/sfValidatorDateRangeTest.php + +1 +çž +('__construct()hrows‡ sfValidatorError if you don\'t…ass‡ from_date‡nd‡o_date option'); + +19 + g$t +-> +sk +('', 1); + +21 + $ÿtch + ( +RuÁimeExû±iÚ + +$e +) + +23 +$t +-> + `·ss +('__construct()hrows‡ sfValidatorError if you don\'t…ass‡ from_date‡nd‡o_date option'); + +24 +$t +-> + `is +( +$e +-> + `g‘Code +(), 'invalid', '->clean()hrows‡ sfValidatorError'); + +25 + } +} + +27 + g$v + = +Ãw + +sfV®id©ÜD©eRªge +( +¬¿y +( + +28 'äom_d©e' => +Ãw + +sfV®id©ÜD©e +( +¬¿y +('»quœed' => +çl£ +)), + +29 'to_d©e' => +Ãw + +sfV®id©ÜD©e +( +¬¿y +('»quœed' => +çl£ +)) + +33 + g$t +-> +dŸg +('->clean()'); + +35 + g$v®ues + = +$v +-> +þ—n +( +¬¿y +('from' => '2008-01-01', 'to' => '2009-01-01')); + +36 + g$t +-> +is +( +$v®ues +, +¬¿y +('from' => '2008-01-01', 'to' => '2009-01-01'), '->clean()„eturnshe from‡ndo values'); + +38 + gŒy + + +40 + g$v +-> +þ—n +( +¬¿y +('from' => '2008-01-01', 'to' => '1998-01-01')); + +41 + g$t +-> +çž +('->clean()hrows‡ sfValidatorError ifhe from date is‡fterheo date'); + +42 + g$t +-> +sk +('', 1); + +44 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +46 +$t +-> + `·ss +('->clean()hrows‡ sfValidatorError ifhe from date is‡fterheo date'); + +47 +$t +-> + `is +( +$e +-> + `g‘Code +(), 'invalid', '->clean()hrows‡ sfValidatorError'); + +48 + } +} + +51 + g$t +-> +dŸg +('Custom field‚ames options'); + +53 + g$v + = +Ãw + +sfV®id©ÜD©eRªge +( +¬¿y +( + +54 'äom_d©e' => +Ãw + +sfV®id©ÜD©e +( +¬¿y +('»quœed' => +Œue +)), + +55 'to_d©e' => +Ãw + +sfV®id©ÜD©e +( +¬¿y +('»quœed' => +Œue +)), + +60 + gŒy + + +62 + g$v +-> +þ—n +( +¬¿y +('from' => '2008-01-01', 'to' => '1998-01-01')); + +63 + g$t +-> +çž +('->clean()ake into‡ccount custom fields'); + +65 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +67 +$t +-> + `·ss +('->clean()ake into‡ccount custom fields'); + +68 + } +} + +70 + g$v®ues + = +$v +-> +þ—n +( +¬¿y +('custom_from' => '2008-01-01', 'custom_to' => '2009-01-01')); + +71 + g$t +-> +is +( +$v®ues +, +¬¿y +('custom_from' => '2008-01-01', 'custom_to' => '2009-01-01'), '->clean()„eturnshe from‡ndo values for custom field‚ames'); + + @lib/vendor/symfony/test/unit/validator/sfValidatorDateTest.php + +1 +dŸg +('->clean()'); + +20 + g$v +-> +£tO±iÚ +('»quœed', +çl£ +); + +21 + g$t +-> +ok +( +$v +-> +þ—n +( +nuÎ +) ===‚ull, '->clean()„eturns‚ull if‚ot„equired'); + +24 + g$t +-> +dŸg +('validate strtotime formats'); + +25 + g$t +-> +is +( +$v +-> +þ—n +('18 october 2005'), '2005-10-18', '->clean()‡ccepts dates…arsable by strtotime'); + +26 + g$t +-> +is +( +$v +-> +þ—n +('+1 day'), +d©e +('Y-m-d', +time +() + 86400), '->clean()‡ccepts dates…arsable by strtotime'); + +28 + gŒy + + +30 + g$v +-> +þ—n +('This is‚ot‡ date'); + +31 + g$t +-> +çž +('->clean()hrows‡ sfValidatorError ifhe date is‡ string‡nd is‚ot…arsable by strtotime'); + +32 + g$t +-> +sk +('', 1); + +34 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +36 +$t +-> + `·ss +('->clean()hrows‡ sfValidatorError ifhe date is‡ string‡nd is‚ot…arsable by strtotime'); + +37 +$t +-> + `is +( +$e +-> + `g‘Code +(), 'invalid', '->clean()hrows‡ sfValidatorError'); + +38 + } +} + +41 + g$t +-> +dŸg +('validateimestamp'); + +42 + g$t +-> +is +( +$v +-> +þ—n +( +time +()), +d©e +('Y-m-d',ime()), '->clean()‡cceptsimestamps‡s input'); + +45 + g$t +-> +dŸg +('validate date‡rray'); + +46 + g$t +-> +is +( +$v +-> +þ—n +( +¬¿y +('year' => 2005, 'month' => 10, 'day' => 15)), '2005-10-15', '->clean()‡ccepts‡n‡rray‡s‡n input'); + +47 + g$t +-> +is +( +$v +-> +þ—n +( +¬¿y +('year' => '2005', 'month' => '10', 'day' => '15')), '2005-10-15', '->clean()‡ccepts‡n‡rray‡s‡n input'); + +48 + g$t +-> +is +( +$v +-> +þ—n +( +¬¿y +('y—r' => '', 'mÚth' => '', 'day' => '')), +nuÎ +, '->clean()‡ccepts‡n‡rray‡s‡n input'); + +49 + g$t +-> +is +( +$v +-> +þ—n +( +¬¿y +('year' => 2008, 'month' => 02, 'day' => 29)), '2008-02-29', '->clean()„ecognises‡†eapyear'); + +51 + gŒy + + +53 + g$v +-> +þ—n +( +¬¿y +('year' => '', 'month' => 1, 'day' => 15)); + +54 + g$t +-> +çž +('->clean()hrows‡ sfValidatorError ifhe date is‚ot valid'); + +55 + g$t +-> +sk +('', 1); + +57 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +59 +$t +-> + `·ss +('->clean()hrows‡ sfValidatorError ifhe date is‚ot valid'); + +60 +$t +-> + `is +( +$e +-> + `g‘Code +(), 'invalid', '->clean()hrows‡ sfValidatorError'); + +61 + } +} + +63 + gŒy + + +65 + g$v +-> +þ—n +( +¬¿y +('year' => -2, 'month' => 1, 'day' => 15)); + +66 + g$t +-> +çž +('->clean()hrows‡ sfValidatorError ifhe date is‚ot valid'); + +67 + g$t +-> +sk +('', 1); + +69 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +71 +$t +-> + `·ss +('->clean()hrows‡ sfValidatorError ifhe date is‚ot valid'); + +72 +$t +-> + `is +( +$e +-> + `g‘Code +(), 'invalid', '->clean()hrows‡ sfValidatorError'); + +73 + } +} + +75 + gŒy + + +77 + g$v +-> +þ—n +( +¬¿y +('year' => 2008, 'month' => 2, 'day' => 30)); + +78 + g$t +-> +çž +('->clean()hrows‡ sfValidatorError ifhe date is‚ot valid'); + +79 + g$t +-> +sk +('', 1); + +81 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +83 +$t +-> + `·ss +('->clean()hrows‡ sfValidatorError ifhe date is‚ot valid'); + +84 +$t +-> + `is +( +$e +-> + `g‘Code +(), 'invalid', '->clean()hrows‡ sfValidatorError'); + +85 + } +} + +88 + g$t +-> +dŸg +('validate„egex'); + +89 + g$v +-> +£tO±iÚ +('date_format', '~(?P\d{2})/(?P\d{2})/(?P\d{4})~'); + +90 + g$t +-> +is +( +$v +-> +þ—n +('18/10/2005'), '2005-10-18', '->clean()‡ccepts‡„egularƒxpressiono match dates'); + +91 + g$t +-> +is +( +$v +-> +þ—n +( +¬¿y +('year' => '2005', 'month' => '10', 'day' => '18')), '2005-10-18', '->clean()‡ccepts‡„egularƒxpression when cleaning‡n‡rray'); + +93 + gŒy + + +95 + g$v +-> +þ—n +('2005-10-18'); + +96 + g$t +-> +çž +('->clean()hrows‡ sfValidatorError ifhe date does‚ot matchhe„egex'); + +97 + g$t +-> +sk +('', 2); + +99 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +101 +$t +-> + `·ss +('->clean()hrows‡ sfValidatorError ifhe date does‚ot matchhe„egex'); + +102 +$t +-> + `like +( +$e +-> + `g‘Mes§ge +(), '/'. + `´eg_quÙe +( + `html¥ecŸlch¬s +( +$v +-> + `g‘O±iÚ +('d©e_fÜm©'), +ENT_QUOTES +, 'UTF-8'), '/').'/', '->clean()„eturnsheƒxpected date format inheƒrror message'); + +103 +$t +-> + `is +( +$e +-> + `g‘Code +(), 'bad_format', '->clean()hrows‡ sfValidatorError'); + +104 + } +} + +106 + g$v +-> +£tO±iÚ +('date_format_error', 'dd/mm/YYYY'); + +107 + gŒy + + +109 + g$v +-> +þ—n +('2005-10-18'); + +110 + g$t +-> +sk +('', 1); + +112 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +114 +$t +-> + `like +( +$e +-> + `g‘Mes§ge +(), '/'. + `´eg_quÙe +('dd/mm/YYYY', '/').'/', '->clean()„eturnsheƒxpected date formatƒrror if…rovided'); + +115 + } +} + +117 + g$v +-> +£tO±iÚ +('d©e_fÜm©', +nuÎ +); + +120 + g$t +-> +dŸg +('option with_time'); + +121 + g$v +-> +£tO±iÚ +('w™h_time', +Œue +); + +122 + g$t +-> +is +( +$v +-> +þ—n +( +¬¿y +('year' => 2005, 'month' => 10, 'day' => 15, 'hour' => 12, 'minute' => 10, 'second' => 15)), '2005-10-15 12:10:15', '->clean()‡ccepts‡n‡rray‡s‡n input'); + +123 + g$t +-> +is +( +$v +-> +þ—n +( +¬¿y +('year' => '2005', 'month' => '10', 'day' => '15', 'hour' => '12', 'minute' => '10', 'second' => '15')), '2005-10-15 12:10:15', '->clean()‡ccepts‡n‡rray‡s‡n input'); + +124 + g$t +-> +is +( +$v +-> +þ—n +( +¬¿y +('y—r' => '', 'mÚth' => '', 'day' => '', 'hour' => '', 'mšu‹' => '', '£cÚd' => '')), +nuÎ +, '->clean()‡ccepts‡n‡rray‡s‡n input'); + +125 + g$t +-> +is +( +$v +-> +þ—n +( +¬¿y +('year' => 2005, 'month' => 10, 'day' => 15, 'hour' => 12, 'minute' => 10, 'second' => '')), '2005-10-15 12:10:00', '->clean()‡ccepts‡n‡rray‡s‡n input'); + +126 + g$t +-> +is +( +$v +-> +þ—n +( +¬¿y +('year' => 2005, 'month' => 10, 'day' => 15, 'hour' => 12, 'minute' => 10)), '2005-10-15 12:10:00', '->clean()‡ccepts‡n‡rray‡s‡n input'); + +127 + g$t +-> +is +( +$v +-> +þ—n +( +¬¿y +('year' => 2005, 'month' => 10, 'day' => 15, 'hour' => 0, 'minute' => 10)), '2005-10-15 00:10:00', '->clean()‡ccepts‡n‡rray‡s‡n input'); + +128 + g$t +-> +is +( +$v +-> +þ—n +( +¬¿y +('year' => 2005, 'month' => 10, 'day' => 15, 'hour' => '0', 'minute' => 10)), '2005-10-15 00:10:00', '->clean()‡ccepts‡n‡rray‡s‡n input'); + +129 + g$t +-> +is +( +$v +-> +þ—n +( +¬¿y +('year' => 2005, 'month' => 10, 'day' => 15, 'hour' => 10)), '2005-10-15 10:00:00', '->clean()‡ccepts‡n‡rray‡s‡n input'); + +130 + g$t +-> +is +( +$v +-> +þ—n +( +¬¿y +('year' => 2005, 'month' => 10, 'day' => 15, 'hour' => 0)), '2005-10-15 00:00:00', '->clean()‡ccepts‡n‡rray‡s‡n input'); + +131 + gŒy + + +133 + g$v +-> +þ—n +( +¬¿y +('year' => 2005, 'month' => 1, 'day' => 15, 'hour' => 12, 'minute' => '', 'second' => 12)); + +134 + g$t +-> +çž +('->clean()hrows‡ sfValidatorError ifheime is‚ot valid'); + +136 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +138 +$t +-> + `·ss +('->clean()hrows‡ sfValidatorError ifheime is‚ot valid'); + +139 + } +} + +141 + g$t +-> +is +( +$v +-> +þ—n +('18 october 2005 12:30'), '2005-10-18 12:30:00', '->clean() can‡ccept dateime withhe with_time option'); + +142 + g$t +-> +is +( +$v +-> +þ—n +( +time +()), +d©e +('Y-m-d H:i:s',ime()), '->clean() can‡ccept dateime withhe with_time option'); + +143 + g$v +-> +£tO±iÚ +('date_format', '~(?P\d{2})/(?P\d{2})/(?P\d{4})~'); + +144 + g$t +-> +is +( +$v +-> +þ—n +('18/10/2005'), '2005-10-18 00:00:00', '->clean() can‡ccept dateime withhe with_time option'); + +145 + g$v +-> +£tO±iÚ +('date_format', '~(?P\d{2})/(?P\d{2})/(?P\d{4}) (?P\d{2})\:(?P\d{2})~'); + +146 + g$t +-> +is +( +$v +-> +þ—n +('18/10/2005 12:30'), '2005-10-18 12:30:00', '->clean() can‡ccept dateime withhe with_time option'); + +147 + g$v +-> +£tO±iÚ +('d©e_fÜm©', +nuÎ +); + +150 + g$t +-> +dŸg +('change date output'); + +151 + g$v +-> +£tO±iÚ +('w™h_time', +çl£ +); + +152 + g$v +-> +£tO±iÚ +('date_output', 'U'); + +153 + g$t +-> +is +( +$v +-> +þ—n +( +time +()),ime(), '->clean() output format can be change withhe date_output option'); + +154 + g$v +-> +£tO±iÚ +('datetime_output', 'U'); + +155 + g$v +-> +£tO±iÚ +('w™h_time', +Œue +); + +156 + g$t +-> +is +( +$v +-> +þ—n +( +time +()),ime(), '->clean() output format can be change withhe date_output option'); + +159 + g$v + = +Ãw + +sfV®id©ÜD©e +(); + +160 +fܗch + ( +¬¿y +( + +161 +¬¿y +('year' => '', 'month' => '', 'day' => ''), + +162 +¬¿y +('y—r' => +nuÎ +, 'month' =>‚ull, 'day' =>‚ull), + +164 +nuÎ +, + +165 è +as + +$šput +) + +167 + gŒy + + +169 + g$v +-> +þ—n +( +$šput +); + +170 + g$t +-> +çž +('->clean()hrows‡nƒxception ifhe date isƒmpty‡nd„equired isrue'); + +172 +ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +174 + g$t +-> +·ss +('->clean()hrows‡nƒxception ifhe date isƒmpty‡nd„equired isrue'); + +179 + g$t +-> +dŸg +('max‡nd min options'); + +180 + g$v +-> +£tO±iÚ +('mš', +¡¹Ùime +('1 Jan 2005')); + +181 + g$v +-> +£tO±iÚ +('max', +¡¹Ùime +('31 Dec 2007')); + +182 + g$t +-> +is +( +$v +-> +þ—n +('18 october 2005'), '2005-10-18', '->clean() can‡ccept‡ max/min option'); + +183 + gŒy + + +185 + g$v +-> +þ—n +('18 october 2004'); + +186 + g$t +-> +çž +('->clean()hrows‡nƒxception ifhe date is‚ot withinhe„ange…rovided byhe min/max options'); + +188 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +190 +$t +-> + `·ss +('->clean()hrows‡nƒxception ifhe date is‚ot withinhe„ange…rovided byhe min/max options'); + +191 + } +} + +192 + gŒy + + +194 + g$v +-> +þ—n +('18 october 2008'); + +195 + g$t +-> +çž +('->clean()hrows‡nƒxception ifhe date is‚ot withinhe„ange…rovided byhe min/max options'); + +197 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +199 +$t +-> + `·ss +('->clean()hrows‡nƒxception ifhe date is‚ot withinhe„ange…rovided byhe min/max options'); + +200 + } +} + +203 + g$t +-> +dŸg +('max‡nd min options out offimestamp„ange'); + +204 + g$v +-> +£tO±iÚ +('min', '1805-12-31 10:00:00'); + +205 + g$v +-> +£tO±iÚ +('max', '2107-12-31 10:50:00'); + +206 + g$t +-> +is +( +$v +-> +þ—n +('18 october 2105'), '2105-10-18', '->clean() can‡ccept‡ max/min option string'); + +207 + g$t +-> +is +( +$v +-> +þ—n +( +¬¿y +('year' => 1906, 'month' => 2, 'day' => 13)), '1906-02-13', '->clean() can‡ccept‡ max/min option‡rray'); + +208 + gŒy + + +210 + g$v +-> +þ—n +('18 october 1804'); + +211 + g$t +-> +çž +('->clean()hrows‡nƒxception ifhe date is‚ot withinhe„ange…rovided byhe min/max options'); + +213 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +215 +$t +-> + `·ss +('->clean()hrows‡nƒxception ifhe date is‚ot withinhe„ange…rovided byhe min/max options'); + +216 +$t +-> + `is +( +$e +-> + `g‘Mes§ge +(), 'The date must be‡fter 31/12/1805 10:00:00.', '->clean() checkƒxception message'); + +217 + } +} + +218 + gŒy + + +220 + g$v +-> +þ—n +('18 october 2108'); + +221 + g$t +-> +çž +('->clean()hrows‡nƒxception ifhe date is‚ot withinhe„ange…rovided byhe min/max options'); + +223 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +225 +$t +-> + `·ss +('->clean()hrows‡nƒxception ifhe date is‚ot withinhe„ange…rovided byhe min/max options'); + +226 +$t +-> + `is +( +$e +-> + `g‘Mes§ge +(), 'The date must be before 31/12/2107 10:50:00.', '->clean() checkƒxception message'); + +227 + } +} + +230 + g$deçuÉTimezÚe + = +Ãw + +D©eTimeZÚe +( +d©e_deçuÉ_timezÚe_g‘ +()); + +231 + g$Ùh”TimezÚe + = +Ãw + +D©eTimeZÚe +('US/Pacific'); + +232 ià( + g$deçuÉTimezÚe +-> +g‘Off£t +( +Ãw + +D©eTime +()è=ð +$Ùh”TimezÚe +->g‘Off£tÒew + $D©eTime +())) + +234 +$Ùh”TimezÚe + = +Ãw + + `D©eTimeZÚe +('US/Eastern'); + +235 + } +} + +237 + g$d©e + = +Ãw + +D©eTime +('2000-01-01T00:00:00-00:00'); + +238 + g$d©e +-> +£tTimezÚe +( +$Ùh”TimezÚe +); + +239 + g$v +-> +£tO±iÚ +('mš', +nuÎ +); + +240 + g$v +-> +£tO±iÚ +('max', +nuÎ +); + +241 + g$v +-> +£tO±iÚ +('w™h_time', +Œue +); + +242 + g$þ—n + = +$v +-> +þ—n +( +$d©e +-> +fÜm© +( +DATE_ATOM +)); + +245 + g$d©e +-> +£tTimezÚe +( +$deçuÉTimezÚe +); + +246 + g$t +-> +is +( +$þ—n +, +$d©e +-> +fÜm© +('Y-m-d H:i:s'), '->clean()„espects incoming‡nd defaultimezones'); + + @lib/vendor/symfony/test/unit/validator/sfValidatorDateTimeTest.php + +1 +is +( +$v + +š¡ªûof + +sfV®id©ÜD©e +, 'sfValidatorDateTimeƒxtends sfValidatorDate'); + +20 + g$t +-> +dŸg +('with_time option'); + +21 + g$t +-> +is +( +$v +-> +þ—n +( +time +()), +d©e +('Y-m-d H:i:s',ime()), '->clean() validates date withime'); + +22 + g$t +-> +is +( +$v +-> +þ—n +( +¬¿y +('year' => 2005, 'month' => 1, 'day' => 4, 'hour' => 2, 'minute' => 23, 'second' => 33)), '2005-01-04 02:23:33', '->clean() validates date withime'); + +23 + g$t +-> +is +( +$v +-> +þ—n +('1855-08-25 13:22:56'), '1855-08-25 13:22:56', '->clean() validates date withime'); + + @lib/vendor/symfony/test/unit/validator/sfValidatorDecoratorTest.php + +1 2, 'Œim' => +Œue +),‡rray('required' => 'This string is„equired.')); + +21 + } +} + +24 + g$t +-> +dŸg +('__construct()'); + +25 + g$v + = +Ãw + +MyV®id©Ü +( +¬¿y +('»quœed' => +çl£ +)); + +26 + g$t +-> +is +( +$v +-> +þ—n +( +nuÎ +),‚ull, '__construct() options overrideheƒmbedded validator options'); + +27 + g$v + = +Ãw + +MyV®id©Ü +( +¬¿y +(),‡rray('required' => 'This is„equired.')); + +28 + gŒy + + +30 + g$v +-> +þ—n +( +nuÎ +); + +31 + g$t +-> +çž +('->clean()hrows‡ sfValidatorError ifhe value is„equired'); + +32 + g$t +-> +sk +('', 1); + +34 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +36 +$t +-> + `·ss +('->clean()hrows‡ sfValidatorError ifhe value is„equired'); + +37 +$t +-> + `is +( +$e +-> + `g‘Mes§ge +(), 'This is„equired.', '__construct() messages overrideheƒmbedded validator messages'); + +38 + } +} + +40 + g$v + = +Ãw + +MyV®id©Ü +(); + +43 + g$t +-> +dŸg +('->getErrorCodes()'); + +44 + g$t +-> +is +( +$v +-> +g‘E¼ÜCodes +(), $v-> +g‘V®id©Ü +()->getErrorCodes(), '->getErrorCodes() is‡…roxyoheƒmbedded validator method'); + +47 + g$t +-> +dŸg +('->asString()'); + +48 + g$t +-> +is +( +$v +-> +asSŒšg +(), $v-> +g‘V®id©Ü +()->asString(), '->asString() is‡…roxyoheƒmbedded validator method'); + +51 + g$t +-> +dŸg +('->getDefaultMessages()'); + +52 + g$t +-> +is +( +$v +-> +g‘DeçuÉMes§ges +(), $v-> +g‘V®id©Ü +()->getDefaultMessages(), '->getDefaultMessages() is‡…roxyoheƒmbedded validator method'); + +55 + g$t +-> +dŸg +('->getDefaultOptions()'); + +56 + g$t +-> +is +( +$v +-> +g‘DeçuÉO±iÚs +(), $v-> +g‘V®id©Ü +()->getDefaultOptions(), '->getDefaultOptions() is‡…roxyoheƒmbedded validator method'); + +59 + g$t +-> +dŸg +('->getMessage() ->getMessages() ->setMessage() ->setMessages()'); + +60 + g$v + = +Ãw + +MyV®id©Ü +(); + +61 + g$t +-> +is +( +$v +-> +g‘Mes§ge +('required'), 'This string is„equired.', '->getMessage()„eturns‡ message fromheƒmbedded validator'); + +62 + g$v +-> +£tMes§ge +('invalid', 'This string is invalid.'); + +63 + g$t +-> +is +( +$v +-> +g‘Mes§ges +(), +¬¿y +('required' => 'This string is„equired.', 'invalid' => 'This string is invalid.', 'max_length' => '"%value%" isoo†ong (%max_length% characters max).', 'min_length' => '"%value%" isoo short (%min_length% characters min).'), '->getMessages()„eturns messages fromheƒmbedded validator'); + +64 + g$v +-> +£tMes§ges +( +¬¿y +('required' => 'Required...')); + +65 + g$t +-> +is +( +$v +-> +g‘Mes§ges +(), +¬¿y +('required' => 'Required...', 'invalid' => 'Invalid.'), '->setMessages() sets‡ll messages forheƒmbedded validator'); + +68 + g$v + = +Ãw + +MyV®id©Ü +(); + +69 + g$t +-> +is +( +$v +-> +g‘O±iÚ +('Œim'), +Œue +, '->getOption()„eturns‡n option fromheƒmbedded validator'); + +70 + g$v +-> +£tO±iÚ +('Œim', +çl£ +); + +71 + g$t +-> +is +( +$v +-> +g‘O±iÚs +(), +¬¿y +('»quœed' => +Œue +, 'Œim' => +çl£ +, 'em±y_v®ue' => '', 'mš_Ëngth' => 2, 'max_Ëngth' => +nuÎ +), '->getOptions()„eturns‡n‡rray of options fromheƒmbedded validator'); + +72 + g$t +-> +is +( +$v +-> +hasO±iÚ +('mš_Ëngth'), +Œue +, '->hasOption()„eturnsrue ifheƒmbedded validator has‡ given option'); + +73 + g$v +-> +£tO±iÚs +( +¬¿y +('min_length' => 10)); + +74 + g$t +-> +is +( +$v +-> +g‘O±iÚs +(), +¬¿y +('»quœed' => +Œue +, 'Œim' => +çl£ +, 'em±y_v®ue' => +nuÎ +, 'min_length' => 10), '->setOptions() sets‡ll options forheƒmbedded validator'); + +76 + g$v + = +Ãw + +MyV®id©Ü +(); + +79 + g$t +-> +dŸg +('->clean()'); + +80 + gŒy + + +82 + g$v +-> +þ—n +( +nuÎ +); + +83 + g$t +-> +çž +('->clean()hrows‡ sfValidatorError ifhe value is„equired'); + +84 + g$t +-> +sk +('', 1); + +86 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +88 +$t +-> + `·ss +('->clean()hrows‡ sfValidatorError ifhe value is„equired'); + +89 +$t +-> + `is +( +$e +-> + `g‘Code +(), 'required', '->clean()hrows‡ sfValidatorError'); + +90 + } +} + +92 + gŒy + + +94 + g$v +-> +þ—n +('f'); + +95 + g$t +-> +çž +('->clean()hrows‡ sfValidatorError ifhe wrapped validator failed'); + +96 + g$t +-> +sk +('', 1); + +98 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +100 +$t +-> + `·ss +('->clean()hrows‡ sfValidatorError ifhe wrapped validator failed'); + +101 +$t +-> + `is +( +$e +-> + `g‘Code +(), 'min_length', '->clean()hrows‡ sfValidatorError'); + +102 + } +} + +104 + g$t +-> +is +( +$v +-> +þ—n +(' foo '), 'foo', '->clean() cleanshe value byƒxecutinghe clean() method fromhe wrapped validator'); + +106 þas  + cFakeV®id©Ü + +ex‹nds + + msfV®id©ÜDecÜ©Ü + + +108 +´Ùeùed + +funùiÚ + + $g‘V®id©Ü +() + +112 + } +} + +114 + gŒy + + +116 + g$v + = +Ãw + +FakeV®id©Ü +(); + +117 + g$t +-> +çž +('->clean()hrows‡ RuntimeException if getValidator() does‚ot„eturn‡ sfValidator instance'); + +119 + $ÿtch + ( +RuÁimeExû±iÚ + +$e +) + +121 +$t +-> + `·ss +('->clean()hrows‡ RuntimeException if getValidator() does‚ot„eturn‡ sfValidator instance'); + +122 + } +} + + @lib/vendor/symfony/test/unit/validator/sfValidatorEmailTest.php + +1 +dŸg +('->clean()'); + +19 +fܗch + ( +¬¿y +( + +23 è +as + +$u¾ +) + +25 + g$t +-> +is +( +$v +-> +þ—n +( +$u¾ +), $url, '->clean() checkshathe value is‡ validƒmail'); + +28 +fܗch + ( +¬¿y +( + +33 è +as + +$nÚU¾ +) + +35 + gŒy + + +37 + g$v +-> +þ—n +( +$nÚU¾ +); + +38 + g$t +-> +çž +('->clean()hrows‡n sfValidatorError ifhe value is‚ot‡ validƒmail'); + +39 + g$t +-> +sk +('', 1); + +41 +ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +43 + g$t +-> +·ss +('->clean()hrows‡n sfValidatorError ifhe value is‚ot‡ validƒmail'); + +44 + g$t +-> +is +( +$e +-> +g‘Code +(), 'invalid', '->clean()hrows‡ sfValidatorError'); + + @lib/vendor/symfony/test/unit/validator/sfValidatorErrorSchemaTest.php + +1 'foo', 'max_length' => 1)); + +19 + g$e2 + = +Ãw + +sfV®id©ÜE¼Ü +( +$v2 +, 'mš_Ëngth', +¬¿y +('value' => 'bar', 'min_length' => 5)); + +21 + g$e + = +Ãw + +sfV®id©ÜE¼ÜSchema +( +$v1 +); + +24 + g$t +-> +dŸg +('__construct()'); + +25 + g$t +-> +is +( +$e +-> +g‘V®id©Ü +(), +$v1 +, '__construct()akes‡ sfValidator‡s its first‡rgument'); + +26 + g$e + = +Ãw + +sfV®id©ÜE¼ÜSchema +( +$v1 +, +¬¿y +('e1' => +$e1 +, 'e2' => +$e2 +)); + +27 + g$t +-> +is +( +$e +-> +g‘E¼Üs +(), +¬¿y +('e1' => +$e1 +, 'e2' => +$e2 +), '__construct() canake‡n‡rray of sfValidatorError‡s its second‡rgument'); + +30 + g$t +-> +dŸg +('->addError() ->getErrors()'); + +31 + g$e + = +Ãw + +sfV®id©ÜE¼ÜSchema +( +$v1 +); + +32 + g$e +-> +addE¼Ü +( +$e1 +); + +33 + g$e +-> +addE¼Ü +( +$e2 +, 'e2'); + +34 + g$e +-> +addE¼Ü +( +$e1 +, '2'); + +35 + g$t +-> +is +( +$e +-> +g‘E¼Üs +(), +¬¿y +( +$e1 +, 'e2' => +$e2 +, '2' => $e1), '->addError()‡dds‡nƒrroroheƒrror schema'); + +37 + g$t +-> +dŸg +('embeddedƒrrors'); + +38 + g$es1 + = +Ãw + +sfV®id©ÜE¼ÜSchema +( +$v1 +, +¬¿y +( +$e1 +, 'e1' => $e1, 'e2' => +$e2 +)); + +39 + g$es + = +Ãw + +sfV®id©ÜE¼ÜSchema +( +$v1 +, +¬¿y +( +$e1 +, 'e1' => $e1, 'e2' => +$es1 +)); + +40 + g$es +-> +addE¼Ü +( +$e2 +, 'e1'); + +41 + g$t +-> +is +( +$es +-> +g‘Code +(), 'max_lengthƒ1 [max_length min_length]ƒ2 [max_lengthƒ1 [max_length]ƒ2 [min_length]]', '->addError()‡dds‡nƒrroroheƒrror schema'); + +42 + g$es +-> +addE¼Ü +( +$e2 +); + +43 + g$t +-> +is +( +$es +-> +g‘Code +(), 'max_length min_lengthƒ1 [max_length min_length]ƒ2 [max_lengthƒ1 [max_length]ƒ2 [min_length]]', '->addError()‡dds‡nƒrroroheƒrror schema'); + +44 + g$es +-> +addE¼Ü +( +$es1 +, 'e3'); + +45 + g$t +-> +is +( +$es +-> +g‘Code +(), 'max_length min_lengthƒ1 [max_length min_length]ƒ2 [max_lengthƒ1 [max_length]ƒ2 [min_length]]ƒ3 [max_lengthƒ1 [max_length]ƒ2 [min_length]]', '->addError()‡dds‡nƒrroroheƒrror schema'); + +46 + g$es +-> +addE¼Ü +( +$es1 +); + +47 + g$t +-> +is +( +$es +-> +g‘Code +(), 'max_length min_length max_lengthƒ1 [max_length min_length max_length]ƒ2 [max_length min_lengthƒ1 [max_length]ƒ2 [min_length]]ƒ3 [max_lengthƒ1 [max_length]ƒ2 [min_length]]', '->addError()‡dds‡nƒrroroheƒrror schema'); + +49 + g$es + = +Ãw + +sfV®id©ÜE¼ÜSchema +( +$v1 +, +¬¿y +( +$e1 +, 'e1' => $e1, 'e2' => +$es1 +)); + +50 + g$es2 + = +Ãw + +sfV®id©ÜE¼ÜSchema +( +$v1 +, +¬¿y +( +$e1 +, 'e1' => $e1, 'e2' => +$es1 +)); + +51 + g$es +-> +addE¼Ü +( +$es2 +, 'e2'); + +52 + g$t +-> +is +( +$es +-> +g‘Code +(), 'max_lengthƒ1 [max_length]ƒ2 [max_length max_lengthƒ1 [max_length max_length]ƒ2 [min_length max_lengthƒ1 [max_length]ƒ2 [min_length]]]', '->addError()‡dds‡nƒrroroheƒrror schema'); + +55 + g$t +-> +dŸg +('->addErrors()'); + +56 + g$es1 + = +Ãw + +sfV®id©ÜE¼ÜSchema +( +$v1 +); + +57 + g$es1 +-> +addE¼Ü +( +$e1 +); + +58 + g$es1 +-> +addE¼Ü +( +$e2 +, '1'); + +59 + g$es + = +Ãw + +sfV®id©ÜE¼ÜSchema +( +$v1 +); + +60 + g$es +-> +addE¼Üs +( +$es1 +); + +61 + g$t +-> +is +( +$es +-> +g‘Glob®E¼Üs +(), +¬¿y +( +$e1 +), '->addErrors()‡dds‡n‡rray ofƒrrorsohe currentƒrror'); + +62 + g$t +-> +is +( +$es +-> +g‘NamedE¼Üs +(), +¬¿y +('1' => +$e2 +), '->addErrors() merges‡ sfValidatorErrorSchemaohe currentƒrror'); + +65 + g$t +-> +dŸg +('->getGlobalErrors()'); + +66 + g$e + = +Ãw + +sfV®id©ÜE¼ÜSchema +( +$v1 +); + +67 + g$e +-> +addE¼Ü +( +$e1 +); + +68 + g$e +-> +addE¼Ü +( +$e2 +, 'e2'); + +69 + g$e +-> +addE¼Ü +( +$e1 +, '2'); + +70 + g$t +-> +is +( +$e +-> +g‘Glob®E¼Üs +(), +¬¿y +( +$e1 +), '->getGlobalErrors()„eturns‡ll globals/non‚amedƒrrors'); + +73 + g$t +-> +dŸg +('->getNamedErrors()'); + +74 + g$t +-> +is +( +$e +-> +g‘NamedE¼Üs +(), +¬¿y +('e2' => +$e2 +, '2' => +$e1 +), '->getNamedErrors()„eturns‡ll‚amedƒrrors'); + +77 + g$t +-> +dŸg +('->getValue()'); + +78 + g$t +-> +is +( +$e +-> +g‘V®ue +(), +nuÎ +, '->getValue()‡lways„eturns‚ull'); + +81 + g$t +-> +dŸg +('->getArguments()'); + +82 + g$t +-> +is +( +$e +-> +g‘Argum’ts +(), +¬¿y +(), '->getArguments()‡lways„eturns‡nƒmpty‡rray'); + +83 + g$t +-> +is +( +$e +-> +g‘Argum’ts +( +Œue +), +¬¿y +(), '->getArguments()‡lways„eturns‡nƒmpty‡rray'); + +86 + g$t +-> +dŸg +('->getMessageFormat()'); + +87 + g$t +-> +is +( +$e +-> +g‘Mes§geFÜm© +(), '', '->getMessageFormat()‡lways„eturns‡nƒmpty string'); + +90 + g$t +-> +dŸg +('->getMessage()'); + +91 + g$t +-> +is +( +$e +-> +g‘Mes§ge +(), '"foo" isoo†ong (1 characters max).ƒ2 ["bar" isoo short (5 characters min).] 2 ["foo" isoo†ong (1 characters max).]', '->getMessage()„eturnsheƒrror message string'); + +94 + g$t +-> +dŸg +('->getCode()'); + +95 + g$t +-> +is +( +$e +-> +g‘Code +(), 'max_lengthƒ2 [min_length] 2 [max_length]', '->getCode()„eturnsheƒrror code'); + +98 + g$t +-> +dŸg +('implements Countable'); + +99 + g$e + = +Ãw + +sfV®id©ÜE¼ÜSchema +( +$v1 +, +¬¿y +('e1' => +$e1 +, 'e2' => +$e2 +)); + +100 + g$t +-> +is +( +couÁ +( +$e +), 2, '"sfValidatorError" implements Countable'); + +103 + g$t +-> +dŸg +('implements Iterator'); + +104 + g$e + = +Ãw + +sfV®id©ÜE¼ÜSchema +( +$v1 +, +¬¿y +('e1' => +$e1 +, +$e2 +)); + +105 + g$e +-> +addE¼Ü +( +$e2 +, '2'); + +106 + g$”rÜs + = +¬¿y +(); + +107 +fܗch + ( +$e + +as + +$Çme + => +$”rÜ +) + +109 +$”rÜs +[ +$Çme +] = +$”rÜ +; + +111 + g$t +-> +is +( +$”rÜs +, +¬¿y +('e1' => +$e1 +, 0 => +$e2 +, '2' => $e2), 'sfValidatorErrorSchema implementshe Iterator interface'); + +114 + g$t +-> +dŸg +('implements ArrayAccess'); + +115 + g$e + = +Ãw + +sfV®id©ÜE¼ÜSchema +( +$v1 +, +¬¿y +('e1' => +$e1 +, +$e2 +)); + +116 + g$e +-> +addE¼Ü +( +$e2 +, '2'); + +117 + g$t +-> +is +( +$e +['e1'], +$e1 +, 'sfValidatorErrorSchema implementshe ArrayAccess interface'); + +118 + g$t +-> +is +( +$e +[0], +$e2 +, 'sfValidatorErrorSchema implementshe ArrayAccess interface'); + +119 + g$t +-> +is +( +$e +['2'], +$e2 +, 'sfValidatorErrorSchema implementshe ArrayAccess interface'); + +120 + g$t +-> +is +( +is£t +( +$e +['e1']), +Œue +, 'sfValidatorErrorSchema implementshe ArrayAccess interface'); + +121 + g$t +-> +is +( +is£t +( +$e +['e2']), +çl£ +, 'sfValidatorErrorSchema implementshe ArrayAccess interface'); + +122 + gŒy + + +124 + g$e +['e1'] = +$e2 +; + +125 + g$t +-> +çž +('sfValidatorErrorSchema implementshe ArrayAccess interface'); + +127 + $ÿtch + ( +LogicExû±iÚ + +$e +) + +129 +$t +-> + `·ss +('sfValidatorErrorSchema implementshe ArrayAccess interface'); + +130 + } +} + +133 + g$t +-> +dŸg +('implements Serializable'); + +135 þas  + cNÙS”ŸlizabË + +im¶em’ts + + mS”ŸlizabË + + +137 +public + +funùiÚ + + $£rŸlize +() + +139 +throw + +Ãw + + `Exû±iÚ +('Not serializable'); + +142 +public + +funùiÚ + + $un£rŸlize +( +$£rŸlized +) + +144 +throw + +Ãw + + `Exû±iÚ +('Not serializable'); + +145 + } +} + +148 +funùiÚ + + $wžl_üash +( +$a +) + +150  + `£rŸlize +( +Ãw + + `sfV®id©ÜE¼ÜSchema +Òew + `sfV®id©ÜSŒšg +())); + +151 + } +} + +153 + g$a + = +Ãw + +NÙS”ŸlizabË +(); + +155 + gŒy + + +157 + g$£rŸlized + = +wžl_üash +( +$a +); + +158 + g$t +-> +·ss +('sfValidatorErrorSchema implements Serializable'); + +160 + $ÿtch + ( +Exû±iÚ + +$e +) + +162 +$t +-> + `çž +('sfValidatorErrorSchema implements Serializable'); + +163 + } +} + +165 + g$e + = +Ãw + +sfV®id©ÜE¼ÜSchema +( +$v1 +); + +166 + g$e1 + = +un£rŸlize +( +$£rŸlized +); + +167 + g$t +-> +is +( +$e1 +-> +g‘Mes§ge +(), +$e +->getMessage(), 'sfValidatorErrorSchema implements Serializable'); + +168 + g$t +-> +is +( +$e1 +-> +g‘Code +(), +$e +->getCode(), 'sfValidatorErrorSchema implements Serializable'); + +169 + g$t +-> +is +( +g‘_þass +( +$e1 +-> +g‘V®id©Ü +()), g‘_þass( +$e +->getValidator()), 'sfValidatorErrorSchema implements Serializable'); + +170 + g$t +-> +is +( +$e1 +-> +g‘Argum’ts +(), +$e +->getArguments(), 'sfValidatorErrorSchema implements Serializable'); + +171 + g$t +-> +is +( +$e1 +-> +g‘NamedE¼Üs +(), +$e +->getNamedErrors(), 'sfValidatorErrorSchema implements Serializable'); + +172 + g$t +-> +is +( +$e1 +-> +g‘Glob®E¼Üs +(), +$e +->getGlobalErrors(), 'sfValidatorErrorSchema implements Serializable'); + + @lib/vendor/symfony/test/unit/validator/sfValidatorErrorTest.php + +1 'foo
    ', 'max_length' => 1)); + +20 + g$t +-> +dŸg +('->getValue()'); + +21 + g$t +-> +is +( +$e +-> +g‘V®ue +(), 'foo
    ', '->getValue()„eturnshe valuehat has been validated withhe validator'); + +23 + g$e1 + = +Ãw + +sfV®id©ÜE¼Ü +( +$v +, 'max_Ëngth', +¬¿y +('max_length' => 1)); + +24 + g$t +-> +is +( +$e1 +-> +g‘V®ue +(), +nuÎ +, '->getValue()„eturns‚ull ifhere is‚o value key in‡rguments'); + +27 + g$t +-> +dŸg +('->getValidator()'); + +28 + g$t +-> +is +( +$e +-> +g‘V®id©Ü +(), +$v +, '->getValidator()„eturnshe validatorhatriggeredhisƒxception'); + +31 + g$t +-> +dŸg +('->getArguments()'); + +32 + g$t +-> +is +( +$e +-> +g‘Argum’ts +(), +¬¿y +('%value%' => 'foo<br />', '%max_length%' => 1), '->getArguments()„eturnshe‡rguments‚eededo formatheƒrror message,ƒscaped‡ccordingohe current charset'); + +33 + g$t +-> +is +( +$e +-> +g‘Argum’ts +( +Œue +), +¬¿y +('value' => 'foo
    ', 'max_length' => 1), '->getArguments()akes‡ Boolean‡s its first‡rgumento„eturnhe„aw‡rguments'); + +36 + g$t +-> +dŸg +('->getMessageFormat()'); + +37 + g$t +-> +is +( +$e +-> +g‘Mes§geFÜm© +(), +$v +-> +g‘Mes§ge +($e-> +g‘Code +()), '->getMessageFormat()'); + +40 + g$t +-> +dŸg +('->getMessage()'); + +41 + g$t +-> +is +( +$e +-> +g‘Mes§ge +(), '"foo<br />" isoo†ong (1 characters max).', '->getMessage()„eturnsheƒrror message string'); + +44 + g$t +-> +dŸg +('->getCode()'); + +45 + g$t +-> +is +( +$e +-> +g‘Code +(), 'max_length', '->getCode()„eturnsheƒrror code'); + +48 + g$t +-> +dŸg +('__toString()'); + +49 + g$t +-> +is +( +$e +-> +__toSŒšg +(), $e-> +g‘Mes§ge +(), '->__toString()„eturnsheƒrror message string'); + +52 + g$t +-> +dŸg +('implements Serializable'); + +57 þas  + cNÙS”ŸlizabË + +im¶em’ts + + mS”ŸlizabË + + +59 +public + +funùiÚ + + $£rŸlize +() + +61 +throw + +Ãw + + `Exû±iÚ +('Not serializable'); + +64 +public + +funùiÚ + + $un£rŸlize +( +$£rŸlized +) + +66 +throw + +Ãw + + `Exû±iÚ +('Not serializable'); + +67 + } +} + +70 +funùiÚ + + $wžl_üash +( +$a +) + +72  + `£rŸlize +( +Ãw + + `sfV®id©ÜE¼Ü +Òew + `sfV®id©ÜSŒšg +(), 'max_Ëngth', + `¬¿y +('value' => 'foo
    ', 'max_length' => 1))); + +73 + } +} + +75 + g$a + = +Ãw + +NÙS”ŸlizabË +(); + +77 + gŒy + + +79 + g$£rŸlized + = +wžl_üash +( +$a +); + +80 + g$t +-> +·ss +('sfValidatorError implements Serializable'); + +82 + $ÿtch + ( +Exû±iÚ + +$e +) + +84 +$t +-> + `çž +('sfValidatorError implements Serializable'); + +85 + } +} + +87 + g$e1 + = +un£rŸlize +( +$£rŸlized +); + +88 + g$t +-> +is +( +$e1 +-> +g‘Mes§ge +(), +$e +->getMessage(), 'sfValidatorError implements Serializable'); + +89 + g$t +-> +is +( +$e1 +-> +g‘Code +(), +$e +->getCode(), 'sfValidatorError implements Serializable'); + +90 + g$t +-> +is +( +g‘_þass +( +$e1 +-> +g‘V®id©Ü +()), g‘_þass( +$e +->getValidator()), 'sfValidatorError implements Serializable'); + +91 + g$t +-> +is +( +$e1 +-> +g‘Argum’ts +(), +$e +->getArguments(), 'sfValidatorError implements Serializable'); + + @lib/vendor/symfony/test/unit/validator/sfValidatorFileTest.php + +1 +dŸg +('->getMimeTypesFromCategory()'); + +54 + g$v + = +Ãw + +‹¡V®id©ÜFže +(); + +55 + gŒy + + +57 + g$t +-> +is +( +$v +-> +g‘MimeTy³sFromC©egÜy +('non_existant_category'), ''); + +58 + g$t +-> +çž +('->getMimeTypesFromCategory()hrows‡n InvalidArgumentException ifhe category does‚otƒxist'); + +60 + $ÿtch + ( +Inv®idArgum’tExû±iÚ + +$e +) + +62 +$t +-> + `·ss +('->getMimeTypesFromCategory()hrows‡n InvalidArgumentException ifhe category does‚otƒxist'); + +63 + } +} + +64 + g$ÿ‹gܛs + = +$v +-> +g‘O±iÚ +('mime_categories'); + +65 + g$t +-> +is +( +$v +-> +g‘MimeTy³sFromC©egÜy +('web_images'), +$ÿ‹gܛs +['web_images'], '->getMimeTypesFromCategory()„eturns‡n‡rray of mimeypes for‡ given category'); + +66 + g$v +-> +£tO±iÚ +('mime_ÿ‹gܛs', +¬¿y_m”ge +( +$v +-> +g‘O±iÚ +('mime_ÿ‹gܛs'), +¬¿y +('text' =>‡rray('text/plain')))); + +67 + g$t +-> +is +( +$v +-> +g‘MimeTy³sFromC©egÜy +('‹xt'), +¬¿y +('text/plain'), '->getMimeTypesFromCategory()„eturns‡n‡rray of mimeypes for‡ given category'); + +70 + g$t +-> +dŸg +('->guessFromFileinfo()'); + +71 ià(! +funùiÚ_exi¡s +('finfo_open')) + +73 + g$t +-> +sk +('finfo_open is‚ot‡vailable', 2); + +77 + g$v + = +Ãw + +‹¡V®id©ÜFže +(); + +78 + g$t +-> +is +( +$v +-> +guessFromFžešfo +( +$tmpDœ +.'/test.txt'), 'text/plain', '->guessFromFileinfo() guessesheype of‡ given file'); + +79 + g$t +-> +is +( +$v +-> +guessFromFžešfo +( +$tmpDœ +.'/foo.txt'), +nuÎ +, '->guessFromFileinfo()„eturns‚ull ifhe fileype is‚ot guessable'); + +83 + g$t +-> +dŸg +('->guessFromMimeContentType()'); + +84 ià(! +funùiÚ_exi¡s +('mime_content_type')) + +86 + g$t +-> +sk +('mime_content_type is‚ot‡vailable', 2); + +90 + g$v + = +Ãw + +‹¡V®id©ÜFže +(); + +91 + g$t +-> +is +( +$v +-> +guessFromMimeCڋÁTy³ +( +$tmpDœ +.'/test.txt'), 'text/plain', '->guessFromMimeContentType() guessesheype of‡ given file'); + +92 + g$t +-> +is +( +$v +-> +guessFromMimeCڋÁTy³ +( +$tmpDœ +.'/foo.txt'), +nuÎ +, '->guessFromMimeContentType()„eturns‚ull ifhe fileype is‚ot guessable'); + +96 + g$t +-> +dŸg +('->guessFromFileBinary()'); + +97 + g$v + = +Ãw + +‹¡V®id©ÜFže +(); + +98 + g$t +-> +is +( +$v +-> +guessFromFžeBš¬y +( +$tmpDœ +.'/test.txt'), 'text/plain', '->guessFromFileBinary() guessesheype of‡ given file'); + +99 + g$t +-> +is +( +$v +-> +guessFromFžeBš¬y +( +$tmpDœ +.'/foo.txt'), +nuÎ +, '->guessFromFileBinary()„eturns‚ull ifhe fileype is‚ot guessable'); + +100 + g$t +-> +is +( +$v +-> +guessFromFžeBš¬y +('/bš/ls'), ( +PHP_OS + != 'Darwin') ? 'application/x-executable' : 'application/octet-stream', '->guessFromFileBinary()„eturns correctype if file is guessable'); + +103 + g$t +-> +dŸg +('->getMimeType()'); + +104 + g$v + = +Ãw + +‹¡V®id©ÜFže +(); + +105 + g$t +-> +is +( +$v +-> +g‘MimeTy³ +( +$tmpDœ +.'/test.txt', 'image/png'), 'text/plain', '->getMimeType() guessesheype of‡ given file'); + +106 + g$t +-> +is +( +$v +-> +g‘MimeTy³ +( +$tmpDœ +.'/foo.txt', 'text/plain'), 'text/plain', '->getMimeType()„eturnshe defaultype ifhe fileype is‚ot guessable'); + +108 + g$v +-> +£tO±iÚ +('mime_ty³_gues£rs', +¬¿y_m”ge +( +¬¿y +×¼ay( +$v +, 'guessFromNÙhšg')), $v-> +g‘O±iÚ +('mime_type_guessers'))); + +109 + g$t +-> +is +( +$v +-> +g‘MimeTy³ +( +$tmpDœ +.'/test.txt', 'image/png'), 'nothing/plain', '->getMimeType()akes‡ll guessers fromhe mime_type_guessers option'); + +112 + g$t +-> +dŸg +('->clean()'); + +113 + g$v + = +Ãw + +‹¡V®id©ÜFže +(); + +114 + gŒy + + +116 + g$v +-> +þ—n +( +¬¿y +('‹¡' => +Œue +)); + +117 + g$t +-> +çž +('->clean()hrows‡n sfValidatorError ifhe given value is‚ot well formatted'); + +118 + g$t +-> +sk +('', 1); + +120 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +122 +$t +-> + `·ss +('->clean()hrows‡n sfValidatorError ifhe given value is‚ot well formatted'); + +123 +$t +-> + `is +( +$e +-> + `g‘Code +(), 'invalid', '->clean()hrows‡ sfValidatorError'); + +124 + } +} + +125 + g$f + = +$v +-> +þ—n +( +¬¿y +('tmp_Çme' => +$tmpDœ +.'/test.txt')); + +126 + g$t +-> +ok +( +$f + +š¡ªûof + +sfV®id©edFže +, '->clean()„eturns‡ sfValidatedFile instance'); + +127 + g$t +-> +is +( +$f +-> +g‘Origš®Name +(), '', '->clean()„eturns‡ sfValidatedFile with‡nƒmpty original‚ame ifhe‚ame is‚ot…assed inhe initial value'); + +128 + g$t +-> +is +( +$f +-> +g‘Size +(), +¡¾’ +( +$cڋÁ +), '->clean()„eturns‡ sfValidatedFile with‡ computed file size ifhe size is‚ot…assed inhe initial value'); + +129 + g$t +-> +is +( +$f +-> +g‘Ty³ +(), 'text/plain', '->clean()„eturns‡ sfValidatedFile with‡ guessed contentype'); + +131 þas  + cmyV®id©edFže + +ex‹nds + + msfV®id©edFže + + +135 + g$v +-> +£tO±iÚ +('validated_file_class', 'myValidatedFile'); + +136 + g$f + = +$v +-> +þ—n +( +¬¿y +('tmp_Çme' => +$tmpDœ +.'/test.txt')); + +137 + g$t +-> +ok +( +$f + +š¡ªûof + +myV®id©edFže +, '->clean() canake‡ "validated_file_class" option'); + +139 +fܗch + ( + $¬¿y +( +UPLOAD_ERR_INI_SIZE +, +UPLOAD_ERR_FORM_SIZE +, +UPLOAD_ERR_PARTIAL +, +UPLOAD_ERR_NO_TMP_DIR +, +UPLOAD_ERR_CANT_WRITE +, +UPLOAD_ERR_EXTENSION +è +as + +$”rÜ +) + +141 +Œy + + +143 +$v +-> + `þ—n +( + `¬¿y +('tmp_Çme' => +$tmpDœ +.'/‹¡.txt', '”rÜ' => +$”rÜ +)); + +144 +$t +-> + `çž +('->clean()hrows‡n sfValidatorError ifheƒrror code is‚ot UPLOAD_ERR_OK (0)'); + +145 +$t +-> + `sk +('', 1); + +147 + `ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +149 +$t +-> + `·ss +('->clean()hrows‡n sfValidatorError ifheƒrror code is‚ot UPLOAD_ERR_OK (0)'); + +150 +$t +-> + `is +( +$e +-> + `g‘Code +(), +$code + = + `¡¹Þow” +( + `¡r_»¶aû +('UPLOAD_ERR_', '', $e->getCode())), '->clean()hrows‡nƒrror code of '.$code); + +152 + } +} + +155 + g$t +-> +dŸg +('max file size'); + +156 + g$v +-> +£tO±iÚ +('max_size', 4); + +157 + gŒy + + +159 + g$v +-> +þ—n +( +¬¿y +('tmp_Çme' => +$tmpDœ +.'/test.txt')); + +160 + g$t +-> +sk +(); + +162 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +164 +$t +-> + `·ss +('->clean()hrows‡n sfValidatorError ifhe file size isoo†arge'); + +165 +$t +-> + `is +( +$e +-> + `g‘Code +(), 'max_size', '->clean()hrows‡nƒrror code of max_size'); + +166 + } +} + +167 + g$v +-> +£tO±iÚ +('max_size', +nuÎ +); + +170 + g$t +-> +dŸg +('mimeypes'); + +171 + g$v +-> +£tO±iÚ +('mime_types', 'web_images'); + +172 + gŒy + + +174 + g$v +-> +þ—n +( +¬¿y +('tmp_Çme' => +$tmpDœ +.'/test.txt')); + +175 + g$t +-> +sk +(); + +177 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +179 +$t +-> + `·ss +('->clean()hrows‡n sfValidatorError ifhe file mimeype is‚ot in mime_types option'); + +180 +$t +-> + `is +( +$e +-> + `g‘Code +(), 'mime_types', '->clean()hrows‡nƒrror code of mime_types'); + +181 + } +} + +182 + g$v +-> +£tO±iÚ +('mime_ty³s', +nuÎ +); + +185 + g$v + = +Ãw + +‹¡V®id©ÜFže +(); + +186 + gŒy + + +188 + g$v +-> +þ—n +( +¬¿y +('tmp_Çme' => '', '”rÜ' => +UPLOAD_ERR_NO_FILE +, 'name' => '', 'size' => 0, 'type' => '')); + +189 + g$t +-> +çž +('->clean()hrows‡n sfValidatorError ifhe file is„equired‡nd‚o file is uploaded'); + +190 + g$t +-> +sk +(); + +192 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +194 +$t +-> + `·ss +('->clean()hrows‡n sfValidatorError ifhe file is„equired‡nd‚o file is uploaded'); + +195 +$t +-> + `is +( +$e +-> + `g‘Code +(), 'required', '->clean()hrows‡nƒrror code of„equired'); + +196 + } +} + +197 + gŒy + + +199 + g$v +-> +þ—n +( +nuÎ +); + +200 + g$t +-> +çž +('->clean()hrows‡n sfValidatorError ifhe file is„equired‡nd‚o file is uploaded'); + +201 + g$t +-> +sk +(); + +203 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +205 +$t +-> + `·ss +('->clean()hrows‡n sfValidatorError ifhe file is„equired‡nd‚o file is uploaded'); + +206 +$t +-> + `is +( +$e +-> + `g‘Code +(), 'required', '->clean()hrows‡nƒrror code of„equired'); + +207 + } +} + +208 + g$v + = +Ãw + +‹¡V®id©ÜFže +( +¬¿y +('»quœed' => +çl£ +)); + +209 + g$t +-> +is +( +$v +-> +þ—n +( +¬¿y +('tmp_Çme' => '', '”rÜ' => +UPLOAD_ERR_NO_FILE +, 'Çme' => '', 'size' => 0, 'ty³' => '')), +nuÎ +, '->clean() handleshe„equired option correctly'); + +214 + g$t +-> +dŸg +('->getOriginalName() ->getTempName() ->getSize() ->getType()'); + +215 + gsfToÞk™ +:: +þ—rDœeùÜy +( +$tmpDœ +.'/foo'); + +216 ià( +is_dœ +( +$tmpDœ +.'/foo')) + +218 +rmdœ +( +$tmpDœ +.'/foo'); + +220 + g$f + = +Ãw + +sfV®id©edFže +('‹¡.txt', '‹xt/¶aš', +$tmpDœ +.'/‹¡.txt', +¡¾’ +( +$cڋÁ +)); + +221 + g$t +-> +is +( +$f +-> +g‘Origš®Name +(), 'test.txt', '->getOriginalName()„eturnshe original‚ame'); + +222 + g$t +-> +is +( +$f +-> +g‘TempName +(), +$tmpDœ +.'/test.txt', '->getTempName()„eturnsheemp‚ame'); + +223 + g$t +-> +is +( +$f +-> +g‘Ty³ +(), 'text/plain', '->getType()„eturnshe contentype'); + +224 + g$t +-> +is +( +$f +-> +g‘Size +(), +¡¾’ +( +$cڋÁ +), '->getSize()„eturnshe size ofhe uploaded file'); + +227 + g$t +-> +dŸg +('->save() ->isSaved() ->getSavedName()'); + +228 + g$f + = +Ãw + +sfV®id©edFže +('‹¡.txt', '‹xt/¶aš', +$tmpDœ +.'/‹¡.txt', +¡¾’ +( +$cڋÁ +)); + +229 + g$t +-> +is +( +$f +-> +isSaved +(), +çl£ +, '->isSaved()„eturns false ifhe file has‚ot been saved'); + +230 + g$t +-> +is +( +$f +-> +g‘SavedName +(), +nuÎ +, '->getSavedName()„eturns‚ull ifhe file has‚ot been saved'); + +231 + g$fž’ame + = +$f +-> +§ve +( +$tmpDœ +.'/foo/test1.txt'); + +232 + g$t +-> +is +( +$fž’ame +, +$tmpDœ +.'/foo/test1.txt', '->save()„eturnshe saved filename'); + +233 + g$t +-> +is +( +fže_g‘_cڋÁs +( +$tmpDœ +.'/foo/test1.txt'), file_get_contents($tmpDir.'/test.txt'), '->save() saveshe fileohe given…ath'); + +234 + g$t +-> +is +( +$f +-> +isSaved +(), +Œue +, '->isSaved()„eturnsrue ifhe file has been saved'); + +235 + g$t +-> +is +( +$f +-> +g‘SavedName +(), +$tmpDœ +.'/foo/test1.txt', '->getSavedName()„eturnshe saved file‚ame'); + +237 + g$f + = +Ãw + +sfV®id©edFže +('‹¡.txt', '‹xt/¶aš', +$tmpDœ +.'/‹¡.txt', +¡¾’ +( +$cڋÁ +), $tmpDir); + +238 + g$fž’ame + = +$f +-> +§ve +( +$tmpDœ +.'/foo/test1.txt'); + +239 + g$t +-> +is +( +$fž’ame +, 'foo/test1.txt', '->save()„eturnshe saved filename„elativeohe…ath given'); + +240 + g$t +-> +is +( +fže_g‘_cڋÁs +( +$tmpDœ +.'/foo/test1.txt'), file_get_contents($tmpDir.'/test.txt'), '->save() saveshe fileohe given…ath'); + +241 + g$t +-> +is +( +$f +-> +g‘SavedName +(), +$tmpDœ +.'/foo/test1.txt', '->getSavedName()„eturnshe saved file‚ame'); + +243 + g$fž’ame + = +$f +-> +§ve +('foo/test1.txt'); + +244 + g$t +-> +is +( +$fž’ame +, 'foo/test1.txt', '->save()„eturnshe saved filename„elativeohe…ath given'); + +245 + g$t +-> +is +( +fže_g‘_cڋÁs +( +$tmpDœ +.'/foo/test1.txt'), file_get_contents($tmpDir.'/test.txt'), '->save() saveshe fileohe given…ath‡nd useshe…ath ifhe file is‚ot‡bsolute'); + +246 + g$t +-> +is +( +$f +-> +g‘SavedName +(), +$tmpDœ +.'/foo/test1.txt', '->getSavedName()„eturnshe saved file‚ame'); + +248 + g$fž’ame + = +$f +-> +§ve +(); + +249 + g$t +-> +is +( +fže_g‘_cڋÁs +( +$tmpDœ +.'/'. +$fž’ame +), file_get_contents($tmpDir.'/test.txt'), '->save()„eturnshe generated file‚ame is‚one was given'); + +250 + g$t +-> +is +( +$f +-> +g‘SavedName +(), +$tmpDœ +.'/'. +$fž’ame +, '->getSavedName()„eturnshe saved file‚ame'); + +252 + gŒy + + +254 + g$f + = +Ãw + +sfV®id©edFže +('‹¡.txt', '‹xt/¶aš', +$tmpDœ +.'/‹¡.txt', +¡¾’ +( +$cڋÁ +)); + +255 + g$f +-> +§ve +(); + +256 + g$t +-> +çž +('->save()hrows‡n Exception if you don\'t give‡ filename‡ndhe…ath isƒmpty'); + +258 + $ÿtch + ( +Exû±iÚ + +$e +) + +260 +$t +-> + `·ss +('->save()hrows‡n Exception if you don\'t give‡ filename‡ndhe…ath isƒmpty'); + +261 + } +} + +263 + gŒy + + +265 + g$f +-> +§ve +( +$tmpDœ +.'/test.txt/test1.txt'); + +266 + g$t +-> +çž +('->save()hrows‡n Exception ifhe directory‡lreadyƒxists‡nd is‚ot‡ directory'); + +268 + $ÿtch + ( +Exû±iÚ + +$e +) + +270 +$t +-> + `·ss +('->save()hrows‡n Exception ifhe directory‡lreadyƒxists‡nd is‚ot‡ directory'); + +271 + } +} + +274 + g$t +-> +dŸg +('->getExtension()'); + +275 + g$f + = +Ãw + +sfV®id©edFže +('‹¡.txt', '‹xt/¶aš', +$tmpDœ +.'/‹¡.txt', +¡¾’ +( +$cڋÁ +)); + +276 + g$t +-> +is +( +$f +-> +g‘Ex‹nsiÚ +(), '.txt', '->getExtension()„eturns fileƒxtension based onhe contentype'); + +277 + g$f + = +Ãw + +sfV®id©edFže +('‹¡.txt', 'image/x-²g', +$tmpDœ +.'/‹¡.txt', +¡¾’ +( +$cڋÁ +)); + +278 + g$t +-> +is +( +$f +-> +g‘Ex‹nsiÚ +(), '.png', '->getExtension()„eturns fileƒxtension based onhe contentype'); + +279 + g$f + = +Ãw + +sfV®id©edFže +('‹¡.txt', 'v”y/¥ecific', +$tmpDœ +.'/‹¡.txt', +¡¾’ +( +$cڋÁ +)); + +280 + g$t +-> +is +( +$f +-> +g‘Ex‹nsiÚ +(), '', '->getExtension()„eturns‡nƒmpty string if it does‚ot knowhe contentype'); + +281 + g$f + = +Ãw + +sfV®id©edFže +('‹¡.txt', '', +$tmpDœ +.'/‹¡.txt', +¡¾’ +( +$cڋÁ +)); + +282 + g$t +-> +is +( +$f +-> +g‘Ex‹nsiÚ +(), '', '->getExtension()„eturns‡nƒmpty string ifhe contentype isƒmpty'); + +283 + g$t +-> +is +( +$f +-> +g‘Ex‹nsiÚ +('bin'), 'bin', '->getExtension()akes‡ defaultƒxtension‡s its first‡rgument'); + +286 + g$t +-> +dŸg +('->getOriginalExtension()'); + +287 + g$f + = +Ãw + +sfV®id©edFže +('‹¡.txt', '‹xt/¶aš', +$tmpDœ +.'/‹¡.txt', +¡¾’ +( +$cڋÁ +)); + +288 + g$t +-> +is +( +$f +-> +g‘Origš®Ex‹nsiÚ +(), '.txt', '->getOriginalExtension()„eturnsheƒxtension based onhe uploaded file‚ame'); + +289 + g$f + = +Ãw + +sfV®id©edFže +('‹¡', '‹xt/¶aš', +$tmpDœ +.'/‹¡.txt', +¡¾’ +( +$cڋÁ +)); + +290 + g$t +-> +is +( +$f +-> +g‘Origš®Ex‹nsiÚ +(), '', '->getOriginalExtension()„eturns‡nƒmptyƒxtension ifhe uploaded file‚ame has‚oƒxtension'); + +291 + g$t +-> +is +( +$f +-> +g‘Origš®Ex‹nsiÚ +('bin'), 'bin', '->getOriginalExtension()akes‡ defaultƒxtension‡s its first‡rgument'); + +293 +uƚk +( +$tmpDœ +.'/test.txt'); + +294 + gsfToÞk™ +:: +þ—rDœeùÜy +( +$tmpDœ +.'/foo'); + +295 +rmdœ +( +$tmpDœ +.'/foo'); + + @lib/vendor/symfony/test/unit/validator/sfValidatorFromDescriptionTest.php + +1 +g‘V®id©Ü +(); + +115 +ev® +('$ev®edV®id©Ü = '. +$v +-> +asPhp +().';'); + +117 + g$t +-> +is +( +$ev®edV®id©Ü +-> +asSŒšg +(), +$v +->asSŒšg(), +¥rštf +('sfV®id©ÜFromDesütiÚ i abˁطr£ "%s"', +¡r_»¶aû +("\n", '\n', +$‹¡ +))); + +119 + g$v1 + = +Ãw + +sfV®id©ÜFromDesütiÚ +( +$embedV®id©Ü +-> +asSŒšg +()); + +120 + g$embedV®id©Ü1 + = +$v1 +-> +g‘V®id©Ü +(); + +122 + g$v2 + = +Ãw + +sfV®id©ÜFromDesütiÚ +( +$embedV®id©Ü1 +-> +asSŒšg +()); + +124 + g$t +-> +is +( +$v1 +-> +asSŒšg +(), +$v2 +->asSŒšg(), +¥rštf +('sfV®id©ÜFromDesütiÚ i abˁطr£ "%s"', +¡r_»¶aû +("\n", '\n', +$‹¡ +))); + + @lib/vendor/symfony/test/unit/validator/sfValidatorIntegerTest.php + +1 +dŸg +('->clean()'); + +19 + g$t +-> +is +( +$v +-> +þ—n +(12), 12, '->clean()„eturnshe‚umbers unmodified'); + +20 + g$t +-> +is +( +$v +-> +þ—n +('12'), 12, '->clean() converts stringso integers'); + +22 + gŒy + + +24 + g$v +-> +þ—n +('not‡n integer'); + +25 + g$t +-> +çž +('->clean()hrows‡ sfValidatorError ifhe value is‚ot‡n integer'); + +26 + g$t +-> +sk +('', 1); + +28 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +30 +$t +-> + `·ss +('->clean()hrows‡ sfValidatorError ifhe value is‚ot‡n integer'); + +31 +$t +-> + `is +( +$e +-> + `g‘Code +(), 'invalid', '->clean()hrows‡ sfValidatorError'); + +32 + } +} + +34 + gŒy + + +36 + g$v +-> +þ—n +(12.3); + +37 + g$t +-> +çž +('->clean()hrows‡ sfValidatorError ifhe value is‚ot‡n integer'); + +38 + g$t +-> +sk +('', 1); + +40 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +42 +$t +-> + `·ss +('->clean()hrows‡ sfValidatorError ifhe value is‚ot‡n integer'); + +43 +$t +-> + `is +( +$e +-> + `g‘Code +(), 'invalid', '->clean()hrows‡ sfValidatorError'); + +44 + } +} + +46 + g$v +-> +£tO±iÚ +('»quœed', +çl£ +); + +47 + g$t +-> +ok +( +$v +-> +þ—n +( +nuÎ +) ===‚ull, '->clean()„eturns‚ull for‚ull values'); + +49 + g$v +-> +£tO±iÚ +('max', 2); + +50 + g$t +-> +is +( +$v +-> +þ—n +(1), 1, '->clean() checkshe maximum‚umber‡llowed'); + +51 + gŒy + + +53 + g$v +-> +þ—n +(3); + +54 + g$t +-> +çž +('"max" option sethe maximum‚umber‡llowed'); + +55 + g$t +-> +sk +('', 1); + +57 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +59 +$t +-> + `·ss +('"max" option sethe maximum‚umber‡llowed'); + +60 +$t +-> + `is +( +$e +-> + `g‘Code +(), 'max', '->clean()hrows‡ sfValidatorError'); + +61 + } +} + +63 + g$v +-> +£tMes§ge +('max', 'Too†arge'); + +64 + gŒy + + +66 + g$v +-> +þ—n +(5); + +67 + g$t +-> +çž +('"max"ƒrror message customization'); + +69 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +71 +$t +-> + `is +( +$e +-> + `g‘Mes§ge +(), 'Too†arge', '"max"ƒrror message customization'); + +72 + } +} + +74 + g$v +-> +£tO±iÚ +('max', +nuÎ +); + +76 + g$v +-> +£tO±iÚ +('min', 3); + +77 + g$t +-> +is +( +$v +-> +þ—n +(5), 5, '->clean() checkshe minimum‚umber‡llowed'); + +78 + gŒy + + +80 + g$v +-> +þ—n +('1'); + +81 + g$t +-> +çž +('"min" option sethe minimum‚umber‡llowed'); + +82 + g$t +-> +sk +('', 1); + +84 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +86 +$t +-> + `·ss +('"min" option sethe minimum‚umber‡llowed'); + +87 +$t +-> + `is +( +$e +-> + `g‘Code +(), 'min', '->clean()hrows‡ sfValidatorError'); + +88 + } +} + +90 + g$v +-> +£tMes§ge +('min', 'Too small'); + +91 + gŒy + + +93 + g$v +-> +þ—n +(1); + +94 + g$t +-> +çž +('"min"ƒrror message customization'); + +96 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +98 +$t +-> + `is +( +$e +-> + `g‘Mes§ge +(), 'Too small', '"min"ƒrror message customization'); + +99 + } +} + +101 + g$v +-> +£tO±iÚ +('mš', +nuÎ +); + + @lib/vendor/symfony/test/unit/validator/sfValidatorNumberTest.php + +1 +dŸg +('->clean()'); + +19 + g$t +-> +is +( +$v +-> +þ—n +(12.3), 12.3, '->clean()„eturnshe‚umbers unmodified'); + +20 + g$t +-> +is +( +$v +-> +þ—n +('12.3'), 12.3, '->clean() converts stringso‚umbers'); + +22 + g$t +-> +is +( +$v +-> +þ—n +(12.12345678901234), 12.12345678901234, '->clean()„eturnshe‚umbers unmodified'); + +23 + g$t +-> +is +( +$v +-> +þ—n +('12.12345678901234'), 12.12345678901234, '->clean() converts stringso‚umbers'); + +25 + gŒy + + +27 + g$v +-> +þ—n +('not‡ float'); + +28 + g$t +-> +çž +('->clean()hrows‡ sfValidatorError ifhe value is‚ot‡‚umber'); + +30 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +32 +$t +-> + `·ss +('->clean()hrows‡ sfValidatorError ifhe value is‚ot‡‚umber'); + +33 + } +} + +35 + g$v +-> +£tO±iÚ +('»quœed', +çl£ +); + +36 + g$t +-> +ok +( +$v +-> +þ—n +( +nuÎ +) ===‚ull, '->clean()„eturns‚ull for‚ull values'); + +38 + g$v +-> +£tO±iÚ +('max', 2); + +39 + g$t +-> +is +( +$v +-> +þ—n +(1), 1, '->clean() checkshe maximum‚umber‡llowed'); + +40 + gŒy + + +42 + g$v +-> +þ—n +(3.4); + +43 + g$t +-> +çž +('"max" option sethe maximum‚umber‡llowed'); + +45 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +47 +$t +-> + `·ss +('"max" option sethe maximum‚umber‡llowed'); + +48 + } +} + +50 + g$v +-> +£tMes§ge +('max', 'Too†arge'); + +51 + gŒy + + +53 + g$v +-> +þ—n +(5); + +54 + g$t +-> +çž +('"max"ƒrror message customization'); + +56 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +58 +$t +-> + `is +( +$e +-> + `g‘Mes§ge +(), 'Too†arge', '"max"ƒrror message customization'); + +59 + } +} + +61 + g$v +-> +£tO±iÚ +('max', +nuÎ +); + +63 + g$v +-> +£tO±iÚ +('min', 3); + +64 + g$t +-> +is +( +$v +-> +þ—n +(5), 5, '->clean() checkshe minimum‚umber‡llowed'); + +65 + gŒy + + +67 + g$v +-> +þ—n +('1'); + +68 + g$t +-> +çž +('"min" option sethe minimum‚umber‡llowed'); + +69 + g$t +-> +sk +('', 1); + +71 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +73 +$t +-> + `·ss +('"min" option sethe minimum‚umber‡llowed'); + +74 +$t +-> + `is +( +$e +-> + `g‘Code +(), 'min', '->clean()hrows‡ sfValidatorError'); + +75 + } +} + +77 + g$v +-> +£tMes§ge +('min', 'Too small'); + +78 + gŒy + + +80 + g$v +-> +þ—n +(1); + +81 + g$t +-> +çž +('"min"ƒrror message customization'); + +83 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +85 +$t +-> + `is +( +$e +-> + `g‘Mes§ge +(), 'Too small', '"min"ƒrror message customization'); + +86 + } +} + +88 + g$v +-> +£tO±iÚ +('mš', +nuÎ +); + + @lib/vendor/symfony/test/unit/validator/sfValidatorOrTest.php + +1 3)); + +16 + g$v2 + = +Ãw + +sfV®id©ÜSŒšg +( +¬¿y +('min_length' => 3)); + +18 + g$v + = +Ãw + +sfV®id©ÜOr +( +¬¿y +( +$v1 +, +$v2 +)); + +21 + g$t +-> +dŸg +('__construct()'); + +22 + g$v + = +Ãw + +sfV®id©ÜOr +(); + +23 + g$t +-> +is +( +$v +-> +g‘V®id©Üs +(), +¬¿y +(), '->__construct() canake‚o‡rgument'); + +24 + g$v + = +Ãw + +sfV®id©ÜOr +( +$v1 +); + +25 + g$t +-> +is +( +$v +-> +g‘V®id©Üs +(), +¬¿y +( +$v1 +), '->__construct() canake‡ validator‡s its first‡rgument'); + +26 + g$v + = +Ãw + +sfV®id©ÜOr +( +¬¿y +( +$v1 +, +$v2 +)); + +27 + g$t +-> +is +( +$v +-> +g‘V®id©Üs +(), +¬¿y +( +$v1 +, +$v2 +), '->__construct() canake‡n‡rray of validators‡s its first‡rgument'); + +28 + gŒy + + +30 + g$v + = +Ãw + +sfV®id©ÜOr +('string'); + +31 + g$t +-> +çž +('_construct()hrows‡nƒxception when…assing‡‚on supported first‡rgument'); + +33 + $ÿtch + ( +Inv®idArgum’tExû±iÚ + +$e +) + +35 +$t +-> + `·ss +('_construct()hrows‡nƒxception when…assing‡‚on supported first‡rgument'); + +36 + } +} + +39 + g$t +-> +dŸg +('->addValidator()'); + +40 + g$v + = +Ãw + +sfV®id©ÜOr +(); + +41 + g$v +-> +addV®id©Ü +( +$v1 +); + +42 + g$v +-> +addV®id©Ü +( +$v2 +); + +43 + g$t +-> +is +( +$v +-> +g‘V®id©Üs +(), +¬¿y +( +$v1 +, +$v2 +), '->addValidator()‡dds‡ validator'); + +46 + g$t +-> +dŸg +('->clean()'); + +47 + g$t +-> +is +( +$v +-> +þ—n +('foo'), 'foo', '->clean()„eturnshe string unmodified'); + +49 + gŒy + + +51 + g$v +-> +£tO±iÚ +('»quœed', +Œue +); + +52 + g$v +-> +þ—n +( +nuÎ +); + +53 + g$t +-> +çž +('->clean()hrows‡n sfValidatorErrorƒxception ifhe input value is„equired'); + +54 + g$t +-> +sk +('', 1); + +56 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +58 +$t +-> + `·ss +('->clean()hrows‡n sfValidatorErrorƒxception ifhe input value is„equired'); + +59 +$t +-> + `is +( +$e +-> + `g‘Code +(), 'required', '->clean()hrows‡ sfValidatorError'); + +60 + } +} + +62 + g$v1 +-> +£tO±iÚ +('max_length', 1); + +63 + g$v2 +-> +£tO±iÚ +('min_length', 5); + +64 + gŒy + + +66 + g$v +-> +þ—n +('foo'); + +67 + g$t +-> +çž +('->clean()hrows‡n sfValidatorErrorƒxception if‡llhe validators fails'); + +68 + g$t +-> +sk +('', 3); + +70 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +72 +$t +-> + `·ss +('->clean()hrows‡n sfValidatorErrorƒxception if‡llhe validators fails'); + +73 +$t +-> + `is +( + `couÁ +( +$e +), 2, '->clean()hrows‡nƒxception with‡llƒrror messages'); + +74 +$t +-> + `is +( +$e +[0]-> + `g‘Code +(), 'max_length', '->clean()hrows‡ sfValidatorSchemaError'); + +75 +$t +-> + `is +( +$e + +š¡ªûof + +sfV®id©ÜE¼ÜSchema +, 'max_length', '->clean()hrows‡ sfValidatorSchemaError'); + +76 + } +} + +78 + gŒy + + +80 + g$v +-> +£tMes§ge +('invalid', 'Invalid.'); + +81 + g$v +-> +þ—n +('foo'); + +82 + g$t +-> +çž +('->clean()hrows‡n sfValidatorErrorƒxception if one ofhe validators fails'); + +83 + g$t +-> +sk +('', 2); + +85 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +87 +$t +-> + `·ss +('->clean()hrows‡n sfValidatorErrorƒxception if one ofhe validators fails'); + +88 +$t +-> + `is +( +$e +-> + `g‘Code +(), 'invalid', '->clean()hrows‡ sfValidatorError if invalid message is‚otƒmpty'); + +89 +$t +-> + `is +(! +$e + +š¡ªûof + +sfV®id©ÜE¼ÜSchema +, 'max_length', '->clean()hrows‡ sfValidatorError if invalid message is‚otƒmpty'); + +90 + } +} + +92 + g$v1 +-> +£tO±iÚ +('max_length', 3); + +93 + g$v2 +-> +£tO±iÚ +('min_length', 1); + +94 + g$t +-> +is +( +$v +-> +þ—n +('foo'), 'foo', '->clean()„eturnshe string unmodified'); + +97 + g$t +-> +dŸg +('->asString()'); + +98 + g$v1 + = +Ãw + +sfV®id©ÜSŒšg +( +¬¿y +('max_length' => 3)); + +99 + g$v2 + = +Ãw + +sfV®id©ÜSŒšg +( +¬¿y +('min_length' => 3)); + +100 + g$v + = +Ãw + +sfV®id©ÜOr +( +¬¿y +( +$v1 +, +$v2 +)); + +101 + g$t +-> +is +( +$v +-> +asSŒšg +(), "(\n String({ max_length: 3 })\n or\n String({ min_length: 3 })\n)" + +104 + g$v + = +Ãw + +sfV®id©ÜOr +( +¬¿y +( +$v1 +, +$v2 +),‡rray(),‡rray('required' => 'This is„equired.')); + +105 + g$t +-> +is +( +$v +-> +asSŒšg +(), "(\n String({ max_length: 3 })\n or({}, {„equired: 'This is„equired.' })\n String({ min_length: 3 })\n)" + + @lib/vendor/symfony/test/unit/validator/sfValidatorPassTest.php + +1 +dŸg +('->clean()'); + +19 + g$t +-> +is +( +$v +-> +þ—n +(''), '', '->clean()‡lways„eturnshe value unmodified'); + +20 + g$t +-> +is +( +$v +-> +þ—n +( +nuÎ +),‚ull, '->clean()‡lways„eturnshe value unmodified'); + + @lib/vendor/symfony/test/unit/validator/sfValidatorRegexTest.php + +1 +dŸg +('__construct()'); + +22 + gŒy + + +24 +Ãw + +sfV®id©ÜRegex +(); + +25 + g$t +-> +çž +('__construct()hrows‡n RuntimeException if you don\'t…ass‡…attern option'); + +27 + $ÿtch + ( +RuÁimeExû±iÚ + +$e +) + +29 +$t +-> + `·ss +('__construct()hrows‡n RuntimeException if you don\'t…ass‡…attern option'); + +30 + } +} + +33 + g$t +-> +dŸg +('->clean()'); + +35 + g$v + = +Ãw + +sfV®id©ÜRegex +( +¬¿y +('pattern' => '/^[0-9]+$/')); + +36 + g$t +-> +is +( +$v +-> +þ—n +(12), '12', '->clean() checkshathe value matchhe„egex'); + +38 + gŒy + + +40 + g$v +-> +þ—n +('symfony'); + +41 + g$t +-> +çž +('->clean()hrows‡n sfValidatorError ifhe value does‚ot matchhe…attern'); + +42 + g$t +-> +sk +('', 1); + +44 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +46 +$t +-> + `·ss +('->clean()hrows‡n sfValidatorError ifhe value does‚ot matchhe…attern'); + +47 +$t +-> + `is +( +$e +-> + `g‘Code +(), 'invalid', '->clean()hrows‡ sfValidatorError'); + +48 + } +} + +50 + g$v + = +Ãw + +sfV®id©ÜRegex +( +¬¿y +('·‰”n' => '/^[0-9]+$/', 'mu¡_m©ch' => +çl£ +)); + +51 + g$t +-> +is +( +$v +-> +þ—n +('symfony'), 'symfony', '->clean() checkshathe value does‚ot matchhe„egex if must_match is false'); + +53 + gŒy + + +55 + g$v +-> +þ—n +(12); + +56 + g$t +-> +çž +('->clean()hrows‡n sfValidatorError ifhe value matcheshe…attern if must_match is false'); + +57 + g$t +-> +sk +('', 1); + +59 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +61 +$t +-> + `·ss +('->clean()hrows‡n sfValidatorError ifhe value matcheshe…attern if must_match is false'); + +62 +$t +-> + `is +( +$e +-> + `g‘Code +(), 'invalid', '->clean()hrows‡ sfValidatorError'); + +63 + } +} + +65 + g$v + = +Ãw + +sfV®id©ÜRegex +( +¬¿y +('·‰”n' =>‚ew +sfC®ÏbË +('generate_regex'))); + +67 + gŒy + + +69 + g$v +-> +þ—n +('123'); + +70 + g$t +-> +·ss +('->clean() useshe…attern„eturned by‡ sfCallable…attern option'); + +72 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +74 +$t +-> + `çž +('->clean() useshe…attern„eturned by‡ sfCallable…attern option'); + +75 + } +} + +78 + g$t +-> +dŸg +('->asString()'); + +80 + g$v + = +Ãw + +sfV®id©ÜRegex +( +¬¿y +('·‰”n' => '/^[0-9]+$/', 'mu¡_m©ch' => +çl£ +)); + +81 + g$t +-> +is +( +$v +-> +asSŒšg +(), 'Regex({ must_match: false,…attern: \'/^[0-9]+$/\' })', '->asString()„eturns‡ string„epresentation ofhe validator'); + +84 + g$t +-> +dŸg +('->getPattern()'); + +86 + g$v + = +Ãw + +sfV®id©ÜRegex +( +¬¿y +('pattern' => '/\w+/')); + +87 + g$t +-> +is +( +$v +-> +g‘P©‹º +(), '/\w+/', '->getPattern()„eturnshe„egularƒxpression'); + +88 + g$v + = +Ãw + +sfV®id©ÜRegex +( +¬¿y +('·‰”n' =>‚ew +sfC®ÏbË +('generate_regex'))); + +89 + g$t +-> +is +( +$v +-> +g‘P©‹º +(), '/^123$/', '->getPattern()„eturns‡„egularƒxpression from‡ sfCallable'); + + @lib/vendor/symfony/test/unit/validator/sfValidatorSchemaCompareTest.php + +1 +dŸg +('->clean()'); + +19 +fܗch + ( +¬¿y +( + +20 +¬¿y +×¼ay('Ëá' => 'foo', 'right' => 'foo'), +sfV®id©ÜSchemaCom·» +:: +EQUAL +), + +21 +¬¿y +×¼ay(), +sfV®id©ÜSchemaCom·» +:: +EQUAL +), + +22 +¬¿y +( +nuÎ +, +sfV®id©ÜSchemaCom·» +:: +EQUAL +), + +23 +¬¿y +×¼ay('Ëá' => 1, 'right' => 2), +sfV®id©ÜSchemaCom·» +:: +LESS_THAN +), + +24 +¬¿y +×¼ay('Ëá' => 2, 'right' => 2), +sfV®id©ÜSchemaCom·» +:: +LESS_THAN_EQUAL +), + +25 +¬¿y +×¼ay('Ëá' => 2, 'right' => 1), +sfV®id©ÜSchemaCom·» +:: +GREATER_THAN +), + +26 +¬¿y +×¼ay('Ëá' => 2, 'right' => 2), +sfV®id©ÜSchemaCom·» +:: +GREATER_THAN_EQUAL +), + +27 +¬¿y +×¼ay('Ëá' => 'foo', 'right' => 'b¬'), +sfV®id©ÜSchemaCom·» +:: +NOT_EQUAL +), + +28 +¬¿y +×¼ay('Ëá' => '0000', 'right' => '0'), +sfV®id©ÜSchemaCom·» +:: +NOT_IDENTICAL +), + +29 +¬¿y +×¼ay('Ëá' => '0000', 'right' => '0'), +sfV®id©ÜSchemaCom·» +:: +EQUAL +), + +30 +¬¿y +×¼ay('Ëá' => '0000', 'right' => '0000'), +sfV®id©ÜSchemaCom·» +:: +IDENTICAL +), + +32 +¬¿y +(array('left' => 'foo', 'right' => 'foo'), '=='), + +33 +¬¿y +(array(), '=='), + +34 +¬¿y +( +nuÎ +, '=='), + +35 +¬¿y +(array('left' => 1, 'right' => 2), '<'), + +36 +¬¿y +(array('left' => 2, 'right' => 2), '<='), + +37 +¬¿y +(array('left' => 2, 'right' => 1), '>'), + +38 +¬¿y +(array('left' => 2, 'right' => 2), '>='), + +39 +¬¿y +(array('left' => 'foo', 'right' => 'bar'), '!='), + +40 +¬¿y +(array('left' => '0000', 'right' => '0'), '!=='), + +41 +¬¿y +(array('left' => '0000', 'right' => '0'), '=='), + +42 +¬¿y +(array('left' => '0000', 'right' => '0000'), '==='), + +43 è +as + +$v®ues +) + +45 + g$v +-> +£tO±iÚ +('ݔ©Ü', +$v®ues +[1]); + +46 + g$t +-> +is +( +$v +-> +þ—n +( +$v®ues +[0]), $values[0], '->clean() checkshathe values matchhe comparison'); + +49 +fܗch + ( +¬¿y +( + +50 +¬¿y +×¼ay('Ëá' => 'foo', 'right' => 'foo'), +sfV®id©ÜSchemaCom·» +:: +NOT_EQUAL +), + +51 +¬¿y +×¼ay(), +sfV®id©ÜSchemaCom·» +:: +NOT_EQUAL +), + +52 +¬¿y +( +nuÎ +, +sfV®id©ÜSchemaCom·» +:: +NOT_EQUAL +), + +53 +¬¿y +×¼ay('Ëá' => 1, 'right' => 2), +sfV®id©ÜSchemaCom·» +:: +GREATER_THAN +), + +54 +¬¿y +×¼ay('Ëá' => 2, 'right' => 3), +sfV®id©ÜSchemaCom·» +:: +GREATER_THAN_EQUAL +), + +55 +¬¿y +×¼ay('Ëá' => 2, 'right' => 1), +sfV®id©ÜSchemaCom·» +:: +LESS_THAN +), + +56 +¬¿y +×¼ay('Ëá' => 3, 'right' => 2), +sfV®id©ÜSchemaCom·» +:: +LESS_THAN_EQUAL +), + +57 +¬¿y +×¼ay('Ëá' => 'foo', 'right' => 'b¬'), +sfV®id©ÜSchemaCom·» +:: +EQUAL +), + +58 +¬¿y +×¼ay('Ëá' => '0000', 'right' => '0'), +sfV®id©ÜSchemaCom·» +:: +IDENTICAL +), + +59 +¬¿y +×¼ay('Ëá' => '0000', 'right' => '0'), +sfV®id©ÜSchemaCom·» +:: +NOT_EQUAL +), + +60 +¬¿y +×¼ay('Ëá' => '0000', 'right' => '0000'), +sfV®id©ÜSchemaCom·» +:: +NOT_IDENTICAL +), + +62 +¬¿y +(array('left' => 'foo', 'right' => 'foo'), '!='), + +63 +¬¿y +(array(), '!='), + +64 +¬¿y +( +nuÎ +, '!='), + +65 +¬¿y +(array('left' => 1, 'right' => 2), '>'), + +66 +¬¿y +(array('left' => 2, 'right' => 3), '>='), + +67 +¬¿y +(array('left' => 2, 'right' => 1), '<'), + +68 +¬¿y +(array('left' => 3, 'right' => 2), '<='), + +69 +¬¿y +(array('left' => 'foo', 'right' => 'bar'), '=='), + +70 +¬¿y +(array('left' => '0000', 'right' => '0'), '==='), + +71 +¬¿y +(array('left' => '0000', 'right' => '0'), '!='), + +72 +¬¿y +(array('left' => '0000', 'right' => '0000'), '!=='), + +73 è +as + +$v®ues +) + +75 + g$v +-> +£tO±iÚ +('ݔ©Ü', +$v®ues +[1]); + +77 +fܗch + ( +¬¿y +( +Œue +, +çl£ +è +as + +$glob®E¼Ü +) + +79 + g$v +-> +£tO±iÚ +('throw_glob®_”rÜ', +$glob®E¼Ü +); + +80 + gŒy + + +82 + g$v +-> +þ—n +( +$v®ues +[0]); + +83 + g$t +-> +çž +('->clean()hrows‡n sfValidatorError ifhe value ishe comparison failed'); + +84 + g$t +-> +sk +('', 1); + +86 +ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +88 + g$t +-> +·ss +('->clean()hrows‡n sfValidatorError ifhe value ishe comparison failed'); + +89 + g$t +-> +is +( +$e +-> +g‘Code +(), +$glob®E¼Ü + ? 'invalid' : 'left [invalid]', '->clean()hrows‡ sfValidatorError'); + +94 + gŒy + + +96 + g$v +-> +þ—n +('foo'); + +97 + g$t +-> +çž +('->clean()hrows‡n InvalidArgumentExceptionƒxception ifhe first‡rgument is‚ot‡n‡rray of value'); + +99 + $ÿtch + ( +Inv®idArgum’tExû±iÚ + +$e +) + +101 +$t +-> + `·ss +('->clean()hrows‡n InvalidArgumentExceptionƒxception ifhe first‡rgument is‚ot‡n‡rray of value'); + +102 + } +} + +104 + g$v + = +Ãw + +sfV®id©ÜSchemaCom·» +('left', 'foo', 'right'); + +105 + gŒy + + +107 + g$v +-> +þ—n +( +¬¿y +()); + +108 + g$t +-> +çž +('->clean()hrows‡n InvalidArgumentExceptionƒxception ifhe operator does‚otƒxist'); + +110 + $ÿtch + ( +Inv®idArgum’tExû±iÚ + +$e +) + +112 +$t +-> + `·ss +('->clean()hrows‡n InvalidArgumentExceptionƒxception ifhe operator does‚otƒxist'); + +113 + } +} + +116 + g$t +-> +dŸg +('->asString()'); + +117 + g$v + = +Ãw + +sfV®id©ÜSchemaCom·» +('Ëá', sfV®id©ÜSchemaCom·»:: +EQUAL +, 'right'); + +118 + g$t +-> +is +( +$v +-> +asSŒšg +(), 'left ==„ight', '->asString()„eturns‡ string„epresentation ofhe validator'); + +120 + g$v + = +Ãw + +sfV®id©ÜSchemaCom·» +('Ëá', sfV®id©ÜSchemaCom·»:: +EQUAL +, 'right', +¬¿y +(),‡rray('required' => 'This is„equired.')); + +121 + g$t +-> +is +( +$v +-> +asSŒšg +(), 'left ==({}, {„equired: \'This is„equired.\' })„ight', '->asString()„eturns‡ string„epresentation ofhe validator'); + + @lib/vendor/symfony/test/unit/validator/sfValidatorSchemaFilterTest.php + +1 2, 'Œim' => +Œue +)); + +17 + g$v + = +Ãw + +sfV®id©ÜSchemaFž‹r +('fœ¡_Çme', +$v1 +); + +20 + g$t +-> +dŸg +('->clean()'); + +21 + g$t +-> +is +( +$v +-> +þ—n +( +¬¿y +('first_name' => ' foo ')),‡rray('first_name' => 'foo'), '->clean()ƒxecutesheƒmbedded validator'); + +23 + gŒy + + +25 + g$v +-> +þ—n +('string'); + +26 + g$t +-> +çž +('->clean()hrows‡ InvalidArgumentException ifhe input value is‚ot‡n‡rray'); + +28 + $ÿtch + ( +Inv®idArgum’tExû±iÚ + +$e +) + +30 +$t +-> + `·ss +('->clean()hrows‡ InvalidArgumentException ifhe input value is‚ot‡n‡rray'); + +31 + } +} + +33 + gŒy + + +35 + g$v +-> +þ—n +( +nuÎ +); + +36 + g$t +-> +çž +('->clean()hrows‡ sfValidatorError ifheƒmbedded validator failed'); + +37 + g$t +-> +sk +('', 1); + +39 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +41 +$t +-> + `·ss +('->clean()hrows‡ sfValidatorError ifheƒmbedded validator failed'); + +42 +$t +-> + `is +( +$e +-> + `g‘Code +(), 'first_name [required]', '->clean()hrows‡ sfValidatorError'); + +43 + } +} + +45 + gŒy + + +47 + g$v +-> +þ—n +( +¬¿y +('first_name' => 'f')); + +48 + g$t +-> +çž +('->clean()hrows‡ sfValidatorError ifheƒmbedded validator failed'); + +49 + g$t +-> +sk +('', 1); + +51 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +53 +$t +-> + `·ss +('->clean()hrows‡ sfValidatorError ifheƒmbedded validator failed'); + +54 +$t +-> + `is +( +$e +-> + `g‘Code +(), 'first_name [min_length]', '->clean()hrows‡ sfValidatorError'); + +55 + } +} + + @lib/vendor/symfony/test/unit/validator/sfValidatorSchemaForEachTest.php + +1 3)); + +18 + g$t +-> +dŸg +('__construct()'); + +19 + g$v + = +Ãw + +sfV®id©ÜSchemaFÜEach +( +$v1 +, 3); + +20 + g$t +-> +is +( +$v +-> +g‘F›lds +(), +¬¿y +( +$v1 +, $v1, $v1), '->__construct()akes‡ sfValidator object‡s its first‡rgument'); + +22 + g$v + = +Ãw + +sfV®id©ÜSchemaFÜEach +( +$v1 +, 6); + +23 + g$t +-> +is +( +$v +-> +g‘F›lds +(), +¬¿y +( +$v1 +, $v1, $v1, $v1, $v1, $v1), '->__construct()akes‡‚umber ofimeso duplicatehe validator'); + +26 + g$t +-> +dŸg +('->clean()'); + +27 + gŒy + + +29 + g$v +-> +þ—n +( +¬¿y +('f', 'a', 'b', 'i', 'e', 'n')); + +30 + g$t +-> +çž +('->clean()hrows‡n sfValidatorError'); + +31 + g$t +-> +sk +('', 2); + +33 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +35 +$t +-> + `·ss +('->clean()hrows‡n sfValidatorError'); + +36 +$t +-> + `is +( + `couÁ +( +$e +-> + `g‘Glob®E¼Üs +()), 0, '->clean() does‚othrow globalƒrrors'); + +37 +$t +-> + `is +( + `couÁ +( +$e +-> + `g‘NamedE¼Üs +()), 6, '->clean()hrows‚amedƒrrors'); + +38 + } +} + + @lib/vendor/symfony/test/unit/validator/sfValidatorSchemaTest.php + +1 +$v®ues +)); + +24 + } +} + +26 þas  + cPo¡V®id©Ü + +ex‹nds + + msfV®id©ÜBa£ + + +28 +´Ùeùed + +funùiÚ + + $doC˪ +( +$v®ues +) + +30 + `fܗch + ( +$v®ues + +as + +$key + => +$v®ue +) + +32 +$v®ues +[ +$key +] = "*$value*"; + +35  +$v®ues +; + +37 + } +} + +39 þas  + cPo¡1V®id©Ü + +ex‹nds + + msfV®id©ÜBa£ + + +41 +´Ùeùed + +funùiÚ + + $doC˪ +( +$v®ues +) + +43 ià( +$v®ues +['s1'] == $values['s2']) + +45 +throw + +Ãw + + `sfV®id©ÜE¼Ü +( +$this +, 's1_nÙ_equ®_s2', + `¬¿y +('v®ue' => +$v®ues +)); + +47 + } +} + +49 + g$v1 + = +Ãw + +sfV®id©ÜSŒšg +( +¬¿y +('max_length' => 3)); + +50 + g$v2 + = +Ãw + +sfV®id©ÜSŒšg +( +¬¿y +('min_length' => 3)); + +53 + g$t +-> +dŸg +('__construct()'); + +54 + g$v + = +Ãw + +sfV®id©ÜSchema +(); + +55 + g$t +-> +is +( +$v +-> +g‘F›lds +(), +¬¿y +(), '->__construct() canake‚o‡rgument'); + +56 + g$v + = +Ãw + +sfV®id©ÜSchema +( +¬¿y +('s1' => +$v1 +, 's2' => +$v2 +)); + +57 + g$t +-> +is +( +$v +-> +g‘F›lds +(), +¬¿y +('s1' => +$v1 +, 's2' => +$v2 +), '->__construct() canake‡n‡rray of‚amed sfValidator objects'); + +58 + gŒy + + +60 + g$v + = +Ãw + +sfV®id©ÜSchema +('string'); + +61 + g$t +-> +çž +('__construct()hrows‡n InvalidArgumentException when…assing‡‚on supported first‡rgument'); + +63 + $ÿtch + ( +Inv®idArgum’tExû±iÚ + +$e +) + +65 +$t +-> + `·ss +('__construct()hrows‡n InvalidArgumentException when…assing‡‚on supported first‡rgument'); + +66 + } +} + +69 + g$t +-> +dŸg +('implements ArrayAccess'); + +70 + g$v + = +Ãw + +sfV®id©ÜSchema +(); + +71 + g$v +['s1'] = +$v1 +; + +72 + g$v +['s2'] = +$v2 +; + +73 + g$t +-> +is +( +$v +-> +g‘F›lds +(), +¬¿y +('s1' => +$v1 +, 's2' => +$v2 +), 'sfValidatorSchema implementshe ArrayAccess interface forhe fields'); + +75 + gŒy + + +77 + g$v +['v1'] = 'string'; + +78 + g$t +-> +çž +('sfValidatorSchema implementshe ArrayAccess interface forhe fields'); + +80 + $ÿtch + ( +Inv®idArgum’tExû±iÚ + +$e +) + +82 +$t +-> + `·ss +('sfValidatorSchema implementshe ArrayAccess interface forhe fields'); + +83 + } +} + +85 + g$v + = +Ãw + +sfV®id©ÜSchema +( +¬¿y +('s1' => +$v1 +)); + +86 + g$t +-> +is +( +is£t +( +$v +['s1']), +Œue +, 'sfValidatorSchema implementshe ArrayAccess interface forhe fields'); + +87 + g$t +-> +is +( +is£t +( +$v +['s2']), +çl£ +, 'sfValidatorSchema implementshe ArrayAccess interface forhe fields'); + +89 + g$v + = +Ãw + +sfV®id©ÜSchema +( +¬¿y +('s1' => +$v1 +)); + +90 + g$t +-> +ok +( +$v +['s1'] =ð +$v1 +, 'sfValidatorSchema implementshe ArrayAccess interface forhe fields'); + +91 + g$t +-> +is +( +$v +['s2'], +nuÎ +, 'sfValidatorSchema implementshe ArrayAccess interface forhe fields'); + +93 + g$v + = +Ãw + +sfV®id©ÜSchema +( +¬¿y +('v1' => +$v1 +)); + +94 +un£t +( +$v +['s1']); + +95 + g$t +-> +is +( +$v +['s1'], +nuÎ +, 'sfValidatorSchema implementshe ArrayAccess interface forhe fields'); + +98 + g$t +-> +dŸg +('->configure()'); + +99 + g$v + = +Ãw + +sfV®id©ÜSchema +( +¬¿y +('s1' => +$v1 +, 's2' => +$v2 +)); + +100 + g$t +-> +is +( +$v +-> +g‘O±iÚ +('®low_exŒa_f›lds'), +çl£ +, '->configure() sets "allow_extra_fields" optiono false by default'); + +101 + g$t +-> +is +( +$v +-> +g‘O±iÚ +('fž‹r_exŒa_f›lds'), +Œue +, '->configure() sets "filter_extra_fields" optionorue by default'); + +102 + g$t +-> +is +( +$v +-> +g‘Mes§ge +('extra_fields'), 'Unexpectedƒxtra form field‚amed "%field%".', '->configure() has‡ defaultƒrror message forhe "extra_fields"ƒrror'); + +104 + g$v + = +Ãw + +sfV®id©ÜSchema +( +¬¿y +('s1' => +$v1 +, 's2' => +$v2 +),‡¼ay('®low_exŒa_f›lds' => +Œue +, 'fž‹r_exŒa_f›lds' => +çl£ +),‡rray('extra_fields' => 'Extra fields')); + +105 + g$t +-> +is +( +$v +-> +g‘O±iÚ +('®low_exŒa_f›lds'), +Œue +, '->__construct() can overridehe default value forhe "allow_extra_fields" option'); + +106 + g$t +-> +is +( +$v +-> +g‘O±iÚ +('fž‹r_exŒa_f›lds'), +çl£ +, '->__construct() can overridehe default value forhe "filter_extra_fields" option'); + +108 + g$t +-> +is +( +$v +-> +g‘Mes§ge +('extra_fields'), 'Extra fields', '->__construct() can overridehe default message forhe "extra_fields"ƒrror message'); + +111 + g$t +-> +dŸg +('->clean()'); + +113 + g$v + = +Ãw + +sfV®id©ÜSchema +(); + +114 + g$t +-> +is +( +$v +-> +þ—n +( +nuÎ +), +¬¿y +(), '->clean() converts‚ulloƒmpty‡rray before validation'); + +116 + g$v + = +Ãw + +sfV®id©ÜSchema +( +¬¿y +('s1' => +$v1 +, 's2' => +$v2 +)); + +118 + gŒy + + +120 + g$v +-> +þ—n +('foo'); + +121 + g$t +-> +çž +('->clean()hrows‡n InvalidArgumentExceptionƒxception ifhe first‡rgument is‚ot‡n‡rray of value'); + +123 + $ÿtch + ( +Inv®idArgum’tExû±iÚ + +$e +) + +125 +$t +-> + `·ss +('->clean()hrows‡n InvalidArgumentExceptionƒxception ifhe first‡rgument is‚ot‡n‡rray of value'); + +126 + } +} + +128 + g$t +-> +is +( +$v +-> +þ—n +( +¬¿y +('s1' => 'foo', 's2' => 'bar')),‡rray('s1' => 'foo', 's2' => 'bar'), '->clean()„eturnshe string unmodified'); + +130 + gŒy + + +132 + g$v +-> +þ—n +( +¬¿y +('s1' => 'foo', 's2' => 'bar', 'foo' => 'bar')); + +133 + g$t +-> +çž +('->clean()hrows‡n sfValidatorErrorSchemaƒxception if‡ you give‡‚onƒxistant field'); + +134 + g$t +-> +sk +('', 2); + +136 + $ÿtch + ( +sfV®id©ÜE¼ÜSchema + +$e +) + +138 +$t +-> + `·ss +('->clean()hrows‡n sfValidatorErrorSchemaƒxception if‡ you give‡‚onƒxistant field'); + +139 +$t +-> + `is +( + `couÁ +( +$e +), 1, '->clean()hrows‡nƒxception with‡llƒrror messages'); + +140 +$t +-> + `is +( +$e +[0]-> + `g‘Code +(), 'extra_fields', '->clean()hrows‡nƒxception with‡llƒrror messages'); + +141 + } +} + +143 + g$t +-> +dŸg +('required fields'); + +144 + gŒy + + +146 + g$v +-> +þ—n +( +¬¿y +('s1' => 'foo')); + +147 + g$t +-> +çž +('->clean()hrows‡n sfValidatorErrorSchemaƒxception if‡„equired field is‚ot…rovided'); + +148 + g$t +-> +sk +('', 2); + +150 + $ÿtch + ( +sfV®id©ÜE¼ÜSchema + +$e +) + +152 +$t +-> + `·ss +('->clean()hrows‡n sfValidatorErrorSchemaƒxception if‡„equired field is‚ot…rovided'); + +153 +$t +-> + `is +( + `couÁ +( +$e +), 1, '->clean()hrows‡nƒxception with‡llƒrror messages'); + +154 +$t +-> + `is +( +$e +['s2']-> + `g‘Code +(), 'required', '->clean()hrows‡nƒxception with‡llƒrror messages'); + +155 + } +} + +158 + g$t +-> +dŸg +('->getPreValidator() ->setPreValidator()'); + +159 + g$v1 + = +Ãw + +sfV®id©ÜSŒšg +( +¬¿y +('max_Ëngth' => 3, '»quœed' => +çl£ +)); + +160 + g$v2 + = +Ãw + +sfV®id©ÜSŒšg +( +¬¿y +('mš_Ëngth' => 3, '»quœed' => +çl£ +)); + +161 + g$v + = +Ãw + +sfV®id©ÜSchema +( +¬¿y +('s1' => +$v1 +, 's2' => +$v2 +)); + +162 + g$v +-> +£tP»V®id©Ü +( +$´eV®id©Ü + = +Ãw + +P»V®id©Ü +()); + +163 + g$t +-> +ok +( +$v +-> +g‘P»V®id©Ü +(è=ð +$´eV®id©Ü +, '->getPreValidator()„eturnshe current…re validator'); + +164 + gŒy + + +166 + g$v +-> +þ—n +( +¬¿y +('s1' => 'foo', 's2' => 'bar')); + +167 + g$t +-> +çž +('->clean()hrows‡n sfValidatorErrorSchemaƒxception if‡…re-validator fails'); + +168 + g$t +-> +sk +('', 2); + +170 + $ÿtch + ( +sfV®id©ÜE¼ÜSchema + +$e +) + +172 +$t +-> + `·ss +('->clean()hrows‡n sfValidatorErrorSchemaƒxception if‡…re-validator fails'); + +173 +$t +-> + `is +( + `couÁ +( +$e +), 1, '->clean()hrows‡nƒxception with‡llƒrror messages'); + +174 +$t +-> + `is +( +$e +[0]-> + `g‘Code +(), 's1_or_s2', '->clean()hrows‡nƒxception with‡llƒrror messages'); + +175 + } +} + +178 + g$t +-> +dŸg +('->getPostValidator() ->setPostValidator()'); + +179 + g$v1 + = +Ãw + +sfV®id©ÜSŒšg +( +¬¿y +('max_Ëngth' => 3, '»quœed' => +çl£ +)); + +180 + g$v2 + = +Ãw + +sfV®id©ÜSŒšg +( +¬¿y +('mš_Ëngth' => 3, '»quœed' => +çl£ +)); + +181 + g$v + = +Ãw + +sfV®id©ÜSchema +( +¬¿y +('s1' => +$v1 +, 's2' => +$v2 +)); + +182 + g$v +-> +£tPo¡V®id©Ü +( +$po¡V®id©Ü + = +Ãw + +Po¡V®id©Ü +()); + +183 + g$t +-> +ok +( +$v +-> +g‘Po¡V®id©Ü +(è=ð +$po¡V®id©Ü +, '->getPostValidator()„eturnshe current…ost validator'); + +184 + g$t +-> +is +( +$v +-> +þ—n +( +¬¿y +('s1' => 'foo', 's2' => 'bar')),‡rray('s1' => '*foo*', 's2' => '*bar*'), '->clean()ƒxecutes…ost validators'); + +186 + g$v + = +Ãw + +sfV®id©ÜSchema +( +¬¿y +('s1' => +$v1 +, 's2' => +$v2 +)); + +187 + g$v +-> +£tPo¡V®id©Ü +( +Ãw + +Po¡1V®id©Ü +()); + +188 + gŒy + + +190 + g$v +-> +þ—n +( +¬¿y +('s1' => 'foo', 's2' => 'foo')); + +191 + g$t +-> +çž +('->clean()hrows‡n sfValidatorErrorSchemaƒxception if‡…ost-validator fails'); + +192 + g$t +-> +sk +('', 2); + +194 + $ÿtch + ( +sfV®id©ÜE¼ÜSchema + +$e +) + +196 +$t +-> + `·ss +('->clean()hrows‡n sfValidatorErrorSchemaƒxception if‡…ost-validator fails'); + +197 +$t +-> + `is +( + `couÁ +( +$e +), 1, '->clean()hrows‡nƒxception with‡llƒrror messages'); + +198 +$t +-> + `is +( +$e +[0]-> + `g‘Code +(), 's1_not_equal_s2', '->clean()hrows‡nƒxception with‡llƒrror messages'); + +199 + } +} + +201 + g$v + = +Ãw + +sfV®id©ÜSchema +( +¬¿y +('s1' => +$v1 +, 's2' => +$v2 +)); + +202 + g$t +-> +is +( +$v +-> +þ—n +( +¬¿y +('s1' => 'foo')),‡¼ay('s1' => 'foo', 's2' => +nuÎ +), '->clean()„eturns‚ull values for fields‚ot…resent inhe input‡rray'); + +204 + g$t +-> +dŸg +('extra fields'); + +205 + g$v + = +Ãw + +sfV®id©ÜSchema +( +¬¿y +('s1' => +$v1 +, 's2' => +$v2 +)); + +206 + g$v +-> +£tO±iÚ +('®low_exŒa_f›lds', +Œue +); + +207 + g$»t + = +$v +-> +þ—n +( +¬¿y +('s1' => 'foo', 's2' => 'bar', 'foo' => 'bar')); + +208 + g$t +-> +is +( +$»t +, +¬¿y +('s1' => 'foo', 's2' => 'bar'), '->clean() filters‚onƒxistant fields if "allow_extra_fields" isrue'); + +210 + g$v + = +Ãw + +sfV®id©ÜSchema +( +¬¿y +('s1' => +$v1 +, 's2' => +$v2 +),‡¼ay('®low_exŒa_f›lds' => +Œue +)); + +211 + g$»t + = +$v +-> +þ—n +( +¬¿y +('s1' => 'foo', 's2' => 'bar', 'foo' => 'bar')); + +212 + g$t +-> +is +( +$»t +, +¬¿y +('s1' => 'foo', 's2' => 'bar'), '->clean() filters‚onƒxistant fields if "allow_extra_fields" isrue'); + +214 + g$v + = +Ãw + +sfV®id©ÜSchema +( +¬¿y +('s1' => +$v1 +, 's2' => +$v2 +),‡¼ay('®low_exŒa_f›lds' => +Œue +, 'fž‹r_exŒa_f›lds' => +çl£ +)); + +215 + g$»t + = +$v +-> +þ—n +( +¬¿y +('s1' => 'foo', 's2' => 'bar', 'foo' => 'bar')); + +216 + g$t +-> +is +( +$»t +, +¬¿y +('s1' => 'foo', 's2' => 'bar', 'foo' => 'bar'), '->clean() do‚ot filter‚onƒxistant fields if "filter_extra_fields" is false'); + +218 + g$v +-> +£tO±iÚ +('fž‹r_exŒa_f›lds', +çl£ +); + +219 + g$»t + = +$v +-> +þ—n +( +¬¿y +('s1' => 'foo', 's2' => 'bar', 'foo' => 'bar')); + +220 + g$t +-> +is +( +$»t +, +¬¿y +('s1' => 'foo', 's2' => 'bar', 'foo' => 'bar'), '->clean() do‚ot filter‚onƒxistant fields if "filter_extra_fields" is false'); + +222 + g$t +-> +dŸg +('one validator fails'); + +223 + g$v +['s2']-> +£tO±iÚ +('max_length', 2); + +224 + gŒy + + +226 + g$v +-> +þ—n +( +¬¿y +('s1' => 'foo', 's2' => 'bar')); + +227 + g$t +-> +çž +('->clean()hrows‡n sfValidatorErrorSchemaƒxception if one ofhe validators fails'); + +228 + g$t +-> +sk +('', 2); + +230 + $ÿtch + ( +sfV®id©ÜE¼ÜSchema + +$e +) + +232 +$t +-> + `·ss +('->clean()hrows‡n sfValidatorErrorSchemaƒxception if one ofhe validators fails'); + +233 +$t +-> + `is +( + `couÁ +( +$e +), 1, '->clean()hrows‡nƒxception with‡llƒrror messages'); + +234 +$t +-> + `is +( +$e +['s2']-> + `g‘Code +(), 'max_length', '->clean()hrows‡nƒxception with‡llƒrror messages'); + +235 + } +} + +237 + g$t +-> +dŸg +('several validators fail'); + +238 + g$v +['s1']-> +£tO±iÚ +('max_length', 2); + +239 + g$v +['s2']-> +£tO±iÚ +('max_length', 2); + +240 + gŒy + + +242 + g$v +-> +þ—n +( +¬¿y +('s1' => 'foo', 's2' => 'bar')); + +243 + g$t +-> +çž +('->clean()hrows‡n sfValidatorErrorSchemaƒxception if one ofhe validators fails'); + +244 + g$t +-> +sk +('', 3); + +246 + $ÿtch + ( +sfV®id©ÜE¼ÜSchema + +$e +) + +248 +$t +-> + `·ss +('->clean()hrows‡n sfValidatorErrorSchemaƒxception if one ofhe validators fails'); + +249 +$t +-> + `is +( + `couÁ +( +$e +), 2, '->clean()hrows‡nƒxception with‡llƒrror messages'); + +250 +$t +-> + `is +( +$e +['s2']-> + `g‘Code +(), 'max_length', '->clean()hrows‡nƒxception with‡llƒrror messages'); + +251 +$t +-> + `is +( +$e +['s1']-> + `g‘Code +(), 'max_length', '->clean()hrows‡nƒxception with‡llƒrror messages'); + +252 + } +} + +254 + g$t +-> +dŸg +('postValidator canhrow‚amedƒrrors or globalƒrrors'); + +255 + g$com·¿tÜ + = +Ãw + +sfV®id©ÜSchemaCom·» +('Ëá', sfV®id©ÜSchemaCom·»:: +EQUAL +, 'right'); + +256 + g$u£rV®id©Ü + = +Ãw + +sfV®id©ÜSchema +( +¬¿y +( + +257 '‹¡' => +Ãw + +sfV®id©ÜSŒšg +( +¬¿y +('min_length' => 10)), + +258 'Ëá' => +Ãw + +sfV®id©ÜSŒšg +( +¬¿y +('min_length' => 2)), + +259 'right' => +Ãw + +sfV®id©ÜSŒšg +( +¬¿y +('min_length' => 2)), + +261 + g$u£rV®id©Ü +-> +£tPo¡V®id©Ü +( +$com·¿tÜ +); + +262 + g$v + = +Ãw + +sfV®id©ÜSchema +( +¬¿y +( + +263 '‹¡' => +Ãw + +sfV®id©ÜSŒšg +( +¬¿y +('min_length' => 10)), + +264 'Ëá' => +Ãw + +sfV®id©ÜSŒšg +( +¬¿y +('min_length' => 2)), + +265 'right' => +Ãw + +sfV®id©ÜSŒšg +( +¬¿y +('min_length' => 2)), + +266 'embedded' => +$u£rV®id©Ü +, + +268 + g$v +-> +£tPo¡V®id©Ü +( +$com·¿tÜ +); + +270 + g$t +-> +dŸg +('postValidatorhrows globalƒrrors'); + +271 +fܗch + ( +¬¿y +( +$u£rV®id©Ü +-> +g‘Po¡V®id©Ü +(), +$v +->g‘Po¡V®id©Ü(), $v['embedded']-> + $g‘Po¡V®id©Ü +()è +as + +$v®id©Ü +) + +273 +$v®id©Ü +-> + `£tO±iÚ +('throw_glob®_”rÜ', +Œue +); + +274 + } +} + +275 + gŒy + + +277 + g$v +-> +þ—n +( +¬¿y +('test' => 'fabien', 'right' => 'bar', 'embedded' =>‡rray('test' => 'fabien', 'left' => 'oof', 'right' => 'rab'))); + +278 + g$t +-> +sk +('', 7); + +280 + $ÿtch + ( +sfV®id©ÜE¼ÜSchema + +$e +) + +282 +$t +-> + `is +( + `couÁ +( +$e +-> + `g‘NamedE¼Üs +()), 3, '->clean()hrows‡nƒxception with‡llƒrror messages'); + +283 +$t +-> + `is +( + `couÁ +( +$e +-> + `g‘Glob®E¼Üs +()), 1, '->clean()hrows‡nƒxception with‡llƒrror messages'); + +284 +$t +-> + `is +( + `couÁ +( +$e +['embedded']-> + `g‘NamedE¼Üs +()), 1, '->clean()hrows‡nƒxception with‡llƒrror messages'); + +285 +$t +-> + `is +( + `couÁ +( +$e +['embedded']-> + `g‘Glob®E¼Üs +()), 1, '->clean()hrows‡nƒxception with‡llƒrror messages'); + +286 +$t +-> + `is +( + `is£t +( +$e +['Ëá']è? $e['Ëá']-> + `g‘Code +() : '', 'required', '->clean()hrows‡nƒxception with‡llƒrror messages'); + +287 +$t +-> + `is +( + `is£t +( +$e +['embedded']['Ëá']è? $e['embedded']['Ëá']-> + `g‘Code +() : '', '', '->clean()hrows‡nƒxception with‡llƒrror messages'); + +288 +$t +-> + `is +( +$e +-> + `g‘Code +(), 'invalidest [min_length]ƒmbedded [invalidest [min_length]]†eft [required]', '->clean()hrows‡nƒxception with‡llƒrror messages'); + +289 + } +} + +291 + g$t +-> +dŸg +('postValidatorhrows‚amedƒrrors'); + +292 +fܗch + ( +¬¿y +( +$u£rV®id©Ü +-> +g‘Po¡V®id©Ü +(), +$v +->g‘Po¡V®id©Ü(), $v['embedded']-> + $g‘Po¡V®id©Ü +()è +as + +$v®id©Ü +) + +294 +$v®id©Ü +-> + `£tO±iÚ +('throw_glob®_”rÜ', +çl£ +); + +295 + } +} + +296 + gŒy + + +298 + g$v +-> +þ—n +( +¬¿y +('test' => 'fabien', 'right' => 'bar', 'embedded' =>‡rray('test' => 'fabien', 'left' => 'oof', 'right' => 'rab'))); + +299 + g$t +-> +sk +('', 7); + +301 + $ÿtch + ( +sfV®id©ÜE¼ÜSchema + +$e +) + +303 +$t +-> + `is +( + `couÁ +( +$e +-> + `g‘NamedE¼Üs +()), 3, '->clean()hrows‡nƒxception with‡llƒrror messages'); + +304 +$t +-> + `is +( + `couÁ +( +$e +-> + `g‘Glob®E¼Üs +()), 0, '->clean()hrows‡nƒxception with‡llƒrror messages'); + +305 +$t +-> + `is +( + `couÁ +( +$e +['embedded']-> + `g‘NamedE¼Üs +()), 2, '->clean()hrows‡nƒxception with‡llƒrror messages'); + +306 +$t +-> + `is +( + `couÁ +( +$e +['embedded']-> + `g‘Glob®E¼Üs +()), 0, '->clean()hrows‡nƒxception with‡llƒrror messages'); + +307 +$t +-> + `is +( + `is£t +( +$e +['Ëá']è? $e['Ëá']-> + `g‘Code +() : '', 'required invalid', '->clean()hrows‡nƒxception with‡llƒrror messages'); + +308 +$t +-> + `is +( + `is£t +( +$e +['embedded']['Ëá']è? $e['embedded']['Ëá']-> + `g‘Code +() : '', 'invalid', '->clean()hrows‡nƒxception with‡llƒrror messages'); + +309 +$t +-> + `is +( +$e +-> + `g‘Code +(), 'test [min_length]ƒmbedded [test [min_length]†eft [invalid]]†eft [required invalid]', '->clean()hrows‡nƒxception with‡llƒrror messages'); + +310 + } +} + +312 + g$t +-> +dŸg +('complex…ostValidator'); + +313 + g$com·¿tÜ1 + = +Ãw + +sfV®id©ÜSchemaCom·» +('·sswÜd', sfV®id©ÜSchemaCom·»:: +EQUAL +, 'password_bis'); + +314 + g$v + = +Ãw + +sfV®id©ÜSchema +( +¬¿y +( + +315 'Ëá' => +Ãw + +sfV®id©ÜSŒšg +( +¬¿y +('min_length' => 2)), + +316 'right' => +Ãw + +sfV®id©ÜSŒšg +( +¬¿y +('min_length' => 2)), + +317 '·sswÜd' => +Ãw + +sfV®id©ÜSŒšg +( +¬¿y +('min_length' => 2)), + +318 '·sswÜd_bis' => +Ãw + +sfV®id©ÜSŒšg +( +¬¿y +('min_length' => 2)), + +320 + g$v +-> +£tPo¡V®id©Ü +( +Ãw + +sfV®id©ÜAnd +( +¬¿y +( +$com·¿tÜ +, +$com·¿tÜ1 +))); + +321 + gŒy + + +323 + g$v +-> +þ—n +( +¬¿y +('left' => 'foo', 'right' => 'bar', 'password' => 'oof', 'password_bis' => 'rab')); + +324 + g$t +-> +sk +('', 3); + +326 + $ÿtch + ( +sfV®id©ÜE¼ÜSchema + +$e +) + +328 +$t +-> + `is +( + `couÁ +( +$e +-> + `g‘NamedE¼Üs +()), 2, '->clean()hrows‡nƒxception with‡llƒrror messages'); + +329 +$t +-> + `is +( + `couÁ +( +$e +-> + `g‘Glob®E¼Üs +()), 0, '->clean()hrows‡nƒxception with‡llƒrror messages'); + +330 +$t +-> + `is +( +$e +-> + `g‘Code +(), 'left [invalid]…assword [invalid]', '->clean()hrows‡nƒxception with‡llƒrror messages'); + +331 + } +} + +333 + g$com·¿tÜ +-> +£tO±iÚ +('throw_glob®_”rÜ', +Œue +); + +334 + gŒy + + +336 + g$v +-> +þ—n +( +¬¿y +('left' => 'foo', 'right' => 'bar', 'password' => 'oof', 'password_bis' => 'rab')); + +337 + g$t +-> +sk +('', 3); + +339 + $ÿtch + ( +sfV®id©ÜE¼ÜSchema + +$e +) + +341 +$t +-> + `is +( + `couÁ +( +$e +-> + `g‘NamedE¼Üs +()), 1, '->clean()hrows‡nƒxception with‡llƒrror messages'); + +342 +$t +-> + `is +( + `couÁ +( +$e +-> + `g‘Glob®E¼Üs +()), 1, '->clean()hrows‡nƒxception with‡llƒrror messages'); + +343 +$t +-> + `is +( +$e +-> + `g‘Code +(), 'invalid…assword [invalid]', '->clean()hrows‡nƒxception with‡llƒrror messages'); + +344 + } +} + +346 + g$u£rV®id©Ü + = +Ãw + +sfV®id©ÜSchema +( +¬¿y +( + +347 'Ëá' => +Ãw + +sfV®id©ÜSŒšg +( +¬¿y +('min_length' => 2)), + +348 'right' => +Ãw + +sfV®id©ÜSŒšg +( +¬¿y +('min_length' => 2)), + +349 '·sswÜd' => +Ãw + +sfV®id©ÜSŒšg +( +¬¿y +('min_length' => 2)), + +350 '·sswÜd_bis' => +Ãw + +sfV®id©ÜSŒšg +( +¬¿y +('min_length' => 2)), + +352 + g$u£rV®id©Ü +-> +£tPo¡V®id©Ü +( +Ãw + +sfV®id©ÜAnd +( +¬¿y +( +$com·¿tÜ +, +$com·¿tÜ1 +))); + +353 + g$v + = +Ãw + +sfV®id©ÜSchema +( +¬¿y +( + +354 'Ëá' => +Ãw + +sfV®id©ÜSŒšg +( +¬¿y +('min_length' => 2)), + +355 'right' => +Ãw + +sfV®id©ÜSŒšg +( +¬¿y +('min_length' => 2)), + +356 '·sswÜd' => +Ãw + +sfV®id©ÜSŒšg +( +¬¿y +('min_length' => 2)), + +357 '·sswÜd_bis' => +Ãw + +sfV®id©ÜSŒšg +( +¬¿y +('min_length' => 2)), + +358 'u£r' => +$u£rV®id©Ü +, + +360 + g$v +-> +£tPo¡V®id©Ü +( +Ãw + +sfV®id©ÜAnd +( +¬¿y +( +$com·¿tÜ +, +$com·¿tÜ1 +))); + +361 + gŒy + + +363 + g$v +-> +þ—n +( +¬¿y +('left' => 'foo', 'right' => 'bar', 'password' => 'oof', 'password_bis' => 'rab', 'user' =>‡rray('left' => 'foo', 'right' => 'bar', 'password' => 'oof', 'password_bis' => 'rab'))); + +364 + g$t +-> +sk +('', 7); + +366 + $ÿtch + ( +sfV®id©ÜE¼ÜSchema + +$e +) + +368 +$t +-> + `is +( + `couÁ +( +$e +-> + `g‘NamedE¼Üs +()), 2, '->clean()hrows‡nƒxception with‡llƒrror messages'); + +369 +$t +-> + `is +( + `couÁ +( +$e +-> + `g‘Glob®E¼Üs +()), 1, '->clean()hrows‡nƒxception with‡llƒrror messages'); + +370 +$t +-> + `is +( + `couÁ +( +$e +['u£r']-> + `g‘NamedE¼Üs +()), 1, '->clean()hrows‡nƒxception with‡llƒrror messages'); + +371 +$t +-> + `is +( + `couÁ +( +$e +['u£r']-> + `g‘Glob®E¼Üs +()), 1, '->clean()hrows‡nƒxception with‡llƒrror messages'); + +372 +$t +-> + `is +( + `is£t +( +$e +['u£r']è? $e['u£r']-> + `g‘Code +() : '', 'invalid…assword [invalid]', '->clean()hrows‡nƒxception with‡llƒrror messages'); + +373 +$t +-> + `is +( + `is£t +( +$e +['u£r']['·sswÜd']è? $e['u£r']['·sswÜd']-> + `g‘Code +() : '', 'invalid', '->clean()hrows‡nƒxception with‡llƒrror messages'); + +374 +$t +-> + `is +( +$e +-> + `g‘Code +(), 'invalid user [invalid…assword [invalid]]…assword [invalid]', '->clean()hrows‡nƒxception with‡llƒrror messages'); + +375 + } +} + +378 + g$t +-> +dŸg +('__clone()'); + +379 + g$v + = +Ãw + +sfV®id©ÜSchema +( +¬¿y +('v1' => +$v1 +, 'v2' => +$v2 +)); + +380 + g$v1 + = +þÚe + +$v +; + +381 + g$f1 + = +$v1 +-> +g‘F›lds +(); + +382 + g$f + = +$v +-> +g‘F›lds +(); + +383 + g$t +-> +is +( +¬¿y_keys +( +$f1 +),‡¼ay_keys( +$f +), '__clone() clonesƒmbedded validators'); + +384 +fܗch + ( +$f1 + +as + +$Çme + => +$v®id©Ü +) + +386 +$t +-> +ok +( +$v®id©Ü + !=ð +$f +[ +$Çme +], '__clone() clonesƒmbedded validators'); + +387 + g$t +-> +ok +( +$v®id©Ü + =ð +$f +[ +$Çme +], '__clone() clonesƒmbedded validators'); + +389 + g$t +-> +is +( +$v1 +-> +g‘P»V®id©Ü +(), +nuÎ +, '__clone() cloneshe…re validator'); + +390 + g$t +-> +is +( +$v1 +-> +g‘Po¡V®id©Ü +(), +nuÎ +, '__clone() cloneshe…ost validator'); + +392 + g$v +-> +£tP»V®id©Ü +( +Ãw + +sfV®id©ÜSŒšg +( +¬¿y +('min_length' => 4))); + +393 + g$v +-> +£tPo¡V®id©Ü +( +Ãw + +sfV®id©ÜSŒšg +( +¬¿y +('min_length' => 4))); + +394 + g$v1 + = +þÚe + +$v +; + +395 + g$t +-> +ok +( +$v1 +-> +g‘P»V®id©Ü +(è!=ð +$v +->getPreValidator(), '__clone() cloneshe…re validator'); + +396 + g$t +-> +ok +( +$v1 +-> +g‘P»V®id©Ü +(è=ð +$v +->getPreValidator(), '__clone() cloneshe…re validator'); + +397 + g$t +-> +ok +( +$v1 +-> +g‘Po¡V®id©Ü +(è!=ð +$v +->getPostValidator(), '__clone() cloneshe…ost validator'); + +398 + g$t +-> +ok +( +$v1 +-> +g‘Po¡V®id©Ü +(è=ð +$v +->getPostValidator(), '__clone() cloneshe…ost validator'); + + @lib/vendor/symfony/test/unit/validator/sfValidatorStringTest.php + +1 +dŸg +('->clean()'); + +19 + g$t +-> +is +( +$v +-> +þ—n +('foo'), 'foo', '->clean()„eturnshe string unmodified'); + +21 + g$v +-> +£tO±iÚ +('»quœed', +çl£ +); + +22 + g$t +-> +ok +( +$v +-> +þ—n +( +nuÎ +) === '', '->clean() convertshe valueo‡ string'); + +23 + g$t +-> +ok +( +$v +-> +þ—n +(1) === '1', '->clean() convertshe valueo‡ string'); + +25 + g$v +-> +£tO±iÚ +('max_length', 2); + +26 + g$t +-> +is +( +$v +-> +þ—n +('fo'), 'fo', '->clean() checkshe maximum†ength‡llowed'); + +27 + gŒy + + +29 + g$v +-> +þ—n +('foo'); + +30 + g$t +-> +çž +('"max_length" option sethe maximum†ength ofhe string'); + +31 + g$t +-> +sk +('', 1); + +33 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +35 +$t +-> + `·ss +('"max_length" option sethe maximum†ength ofhe string'); + +36 +$t +-> + `is +( +$e +-> + `g‘Code +(), 'max_length', '->clean()hrows‡ sfValidatorError'); + +37 + } +} + +39 + g$v +-> +£tMes§ge +('max_length', 'Too†ong'); + +40 + gŒy + + +42 + g$v +-> +þ—n +('foo'); + +43 + g$t +-> +çž +('"max_length"ƒrror message customization'); + +45 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +47 +$t +-> + `is +( +$e +-> + `g‘Mes§ge +(), 'Too†ong', '"max_length"ƒrror message customization'); + +48 + } +} + +50 + g$v +-> +£tO±iÚ +('max_Ëngth', +nuÎ +); + +52 + g$v +-> +£tO±iÚ +('min_length', 3); + +53 + g$t +-> +is +( +$v +-> +þ—n +('foo'), 'foo', '->clean() checkshe minimum†ength‡llowed'); + +54 + gŒy + + +56 + g$v +-> +þ—n +('fo'); + +57 + g$t +-> +çž +('"min_length" option sethe minimum†ength ofhe string'); + +58 + g$t +-> +sk +('', 1); + +60 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +62 +$t +-> + `·ss +('"min_length" option sethe minimum†ength ofhe string'); + +63 +$t +-> + `is +( +$e +-> + `g‘Code +(), 'min_length', '->clean()hrows‡ sfValidatorError'); + +64 + } +} + +66 + g$v +-> +£tMes§ge +('min_length', 'Too short'); + +67 + gŒy + + +69 + g$v +-> +þ—n +('fo'); + +70 + g$t +-> +çž +('"min_length"ƒrror message customization'); + +72 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +74 +$t +-> + `is +( +$e +-> + `g‘Mes§ge +(), 'Too short', '"min_length"ƒrror message customization'); + +75 + } +} + +77 + g$v +-> +£tO±iÚ +('mš_Ëngth', +nuÎ +); + +79 + g$t +-> +dŸg +('UTF-8 support'); + +80 ià(! +funùiÚ_exi¡s +('mb_strlen')) + +82 + g$t +-> +sk +('UTF-8 support‚eeds mb_strlen'); + +86 + g$v +-> +£tO±iÚ +('max_length', 4); + +87 + g$t +-> +is +( +$v +-> +þ—n +('été'), 'été', '"sfValidatorString" supports UTF-8'); + + @lib/vendor/symfony/test/unit/validator/sfValidatorTimeTest.php + +1 +dŸg +('->clean()'); + +20 + g$v +-> +£tO±iÚ +('»quœed', +çl£ +); + +21 + g$t +-> +ok +( +$v +-> +þ—n +( +nuÎ +) ===‚ull, '->clean()„eturns‚ull if‚ot„equired'); + +24 + g$t +-> +dŸg +('validate strtotime formats'); + +25 + g$t +-> +is +( +$v +-> +þ—n +('16:35:12'), '16:35:12', '->clean()‡cceptsimes…arsable by strtotime'); + +26 + g$t +-> +is +( +$v +-> +þ—n +('+1 hour'), +d©e +('H:i:s', +time +() + 3600), '->clean()‡cceptsimes…arsable by strtotime'); + +28 + gŒy + + +30 + g$v +-> +þ—n +('This is‚ot‡ime'); + +31 + g$t +-> +çž +('->clean()hrows‡ sfValidatorError ifheime is‡ string‡nd is‚ot…arsable by strtotime'); + +32 + g$t +-> +sk +('', 1); + +34 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +36 +$t +-> + `·ss +('->clean()hrows‡ sfValidatorError ifheime is‡ string‡nd is‚ot…arsable by strtotime'); + +37 +$t +-> + `is +( +$e +-> + `g‘Code +(), 'invalid', '->clean()hrows‡ sfValidatorError'); + +38 + } +} + +41 + g$t +-> +dŸg +('validateimestamp'); + +42 + g$t +-> +is +( +$v +-> +þ—n +( +time +()), +d©e +('H:i:s',ime()), '->clean()‡cceptsimestamps‡s input'); + +45 + g$t +-> +dŸg +('validate date‡rray'); + +46 + g$t +-> +is +( +$v +-> +þ—n +( +¬¿y +('hour' => 20, 'minute' => 10, 'second' => 15)), '20:10:15', '->clean()‡ccepts‡n‡rray‡s‡n input'); + +47 + g$t +-> +is +( +$v +-> +þ—n +( +¬¿y +('hour' => '20', 'minute' => '10', 'second' => '15')), '20:10:15', '->clean()‡ccepts‡n‡rray‡s‡n input'); + +48 + g$t +-> +is +( +$v +-> +þ—n +( +¬¿y +('hour' => '', 'mšu‹' => '', '£cÚd' => '')), +nuÎ +, '->clean()‡ccepts‡n‡rray‡s‡n input'); + +49 + g$t +-> +is +( +$v +-> +þ—n +( +¬¿y +('hour' => 0, 'minute' => 0, 'second' => 0)), '00:00:00', '->clean()‡ccepts‡n‡rray‡s‡n input'); + +50 + g$t +-> +is +( +$v +-> +þ—n +( +¬¿y +('hour' => '0', 'minute' => '0', 'second' => '0')), '00:00:00', '->clean()‡ccepts‡n‡rray‡s‡n input'); + +52 + gŒy + + +54 + g$v +-> +þ—n +( +¬¿y +('hour' => '', 'minute' => 0, 'second' => 0)); + +55 + g$t +-> +çž +('->clean()hrows‡ sfValidatorError ifime date is‚ot valid'); + +56 + g$t +-> +sk +('', 1); + +58 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +60 +$t +-> + `·ss +('->clean()hrows‡ sfValidatorError ifheime is‚ot valid'); + +61 +$t +-> + `is +( +$e +-> + `g‘Code +(), 'invalid', '->clean()hrows‡ sfValidatorError'); + +62 + } +} + +64 + gŒy + + +66 + g$v +-> +þ—n +( +¬¿y +('hour' => '', 'minute' => 1, 'second' => 15)); + +67 + g$t +-> +çž +('->clean()hrows‡ sfValidatorError ifime date is‚ot valid'); + +68 + g$t +-> +sk +('', 1); + +70 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +72 +$t +-> + `·ss +('->clean()hrows‡ sfValidatorError ifheime is‚ot valid'); + +73 +$t +-> + `is +( +$e +-> + `g‘Code +(), 'invalid', '->clean()hrows‡ sfValidatorError'); + +74 + } +} + +76 + gŒy + + +78 + g$v +-> +þ—n +( +¬¿y +('hour' => -2, 'minute' => 1, 'second' => 15)); + +79 + g$t +-> +çž +('->clean()hrows‡ sfValidatorError ifheime is‚ot valid'); + +80 + g$t +-> +sk +('', 1); + +82 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +84 +$t +-> + `·ss +('->clean()hrows‡ sfValidatorError ifheime is‚ot valid'); + +85 +$t +-> + `is +( +$e +-> + `g‘Code +(), 'invalid', '->clean()hrows‡ sfValidatorError'); + +86 + } +} + +89 + g$t +-> +dŸg +('validate„egex'); + +90 + g$v +-> +£tO±iÚ +('time_format', '~(?P\d{2})-(?P\d{2}).(?P\d{2})~'); + +91 + g$t +-> +is +( +$v +-> +þ—n +('20-10.18'), '20:10:18', '->clean()‡ccepts‡„egularƒxpressiono matchimes'); + +93 + gŒy + + +95 + g$v +-> +þ—n +('20.10-18'); + +96 + g$t +-> +çž +('->clean()hrows‡ sfValidatorError ifheime does‚ot matchhe„egex'); + +97 + g$t +-> +sk +('', 2); + +99 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +101 +$t +-> + `·ss +('->clean()hrows‡ sfValidatorError ifheime does‚ot matchhe„egex'); + +102 +$t +-> + `like +( +$e +-> + `g‘Mes§ge +(), '/'. + `´eg_quÙe +( + `html¥ecŸlch¬s +( +$v +-> + `g‘O±iÚ +('time_fÜm©'), +ENT_QUOTES +, 'UTF-8'), '/').'/', '->clean()„eturnsheƒxpectedime format inheƒrror message'); + +103 +$t +-> + `is +( +$e +-> + `g‘Code +(), 'bad_format', '->clean()hrows‡ sfValidatorError'); + +104 + } +} + +106 + g$v +-> +£tO±iÚ +('time_format_error', 'hh/mm/ss'); + +107 + gŒy + + +109 + g$v +-> +þ—n +('20.10-18'); + +110 + g$t +-> +sk +('', 1); + +112 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +114 +$t +-> + `like +( +$e +-> + `g‘Mes§ge +(), '/'. + `´eg_quÙe +('hh/mm/ss', '/').'/', '->clean()„eturnsheƒxpectedime formatƒrror if…rovided'); + +115 + } +} + +117 + g$v +-> +£tO±iÚ +('time_fÜm©', +nuÎ +); + +120 + g$t +-> +dŸg +('change date output'); + +121 + g$v +-> +£tO±iÚ +('time_output', 'U'); + +122 + g$t +-> +is +( +$v +-> +þ—n +( +time +()),ime(), '->clean() output format can be change withheime_output option'); + +125 + g$v + = +Ãw + +sfV®id©ÜTime +(); + +126 +fܗch + ( +¬¿y +( + +127 +¬¿y +('hour' => '', 'minute' => '', 'second' => ''), + +128 +¬¿y +('hour' => +nuÎ +, 'minute' =>‚ull, 'second' =>‚ull), + +130 +nuÎ +, + +131 è +as + +$šput +) + +133 + gŒy + + +135 + g$v +-> +þ—n +( +$šput +); + +136 + g$t +-> +çž +('->clean()hrows‡nƒxception ifheime isƒmpty‡nd„equired isrue'); + +138 +ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +140 + g$t +-> +·ss +('->clean()hrows‡nƒxception ifheime isƒmpty‡nd„equired isrue'); + + @lib/vendor/symfony/test/unit/validator/sfValidatorUrlTest.php + +1 +dŸg +('->clean()'); + +19 +fܗch + ( +¬¿y +( + +28 è +as + +$u¾ +) + +30 + g$t +-> +is +( +$v +-> +þ—n +( +$u¾ +), $url, '->clean() checkshathe value is‡ valid URL'); + +33 +fܗch + ( +¬¿y +( + +37 è +as + +$nÚU¾ +) + +39 + gŒy + + +41 + g$v +-> +þ—n +( +$nÚU¾ +); + +42 + g$t +-> +çž +('->clean()hrows‡n sfValidatorError ifhe value is‚ot‡ valid URL'); + +43 + g$t +-> +sk +('', 1); + +45 +ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +47 + g$t +-> +·ss +('->clean()hrows‡n sfValidatorError ifhe value is‚ot‡ valid URL'); + +48 + g$t +-> +is +( +$e +-> +g‘Code +(), 'invalid', '->clean()hrows‡ sfValidatorError'); + +52 + g$v + = +Ãw + +sfV®id©ÜU¾ +( +¬¿y +('protocols' =>‡rray('http', 'https'))); + +53 + gŒy + + +55 + g$v +-> +þ—n +('ftp://google.com/foo.tgz'); + +56 + g$t +-> +çž +('->clean() only‡llows…rotocols specified inhe…rotocols option'); + +58 + $ÿtch + ( +sfV®id©ÜE¼Ü + +$e +) + +60 +$t +-> + `·ss +('->clean() only‡llows…rotocols specified inhe…rotocols option'); + +61 + } +} + + @lib/vendor/symfony/test/unit/view/sfViewCacheManagerTest.php + +1 +çl£ +, + +30 'cڋxtu®' => +$cڋxtu® +, + +31 'v¬y' => + `¬¿y +(), + +33 + } +} + +35 þas  + cmyV›wCacheMªag” + +ex‹nds + + msfV›wCacheMªag” + + +37 +public + +funùiÚ + + $»gi¡”CÚfigu¿tiÚ +( +$moduËName +) + +40 + } +} + +42 þas  + cmyCڌÞËr + +ex‹nds + + msfWebCڌÞËr + + +46 þas  + cmyReque¡ + + +48 +public + + m$g‘P¬am‘”s + = +¬¿y +('page' => 5, 'sort' => 'asc'); + +50 +public + +funùiÚ + + $g‘Ho¡ +() + +55 +public + +funùiÚ + + $g‘SütName +() + +58 + } +} + +60 +public + +funùiÚ + + $g‘H‰pH—d” +( +$h—d”Name +) + +63 + } +} + +65 +public + +funùiÚ + + $g‘G‘P¬am‘”s +() + +67  +$this +-> +g‘P¬am‘”s +; + +68 + } +} + +71 þas  + cmyCache + +ex‹nds + + msfCache + + +73  +public + + m$ÿche + = +¬¿y +(); + +75 +public + +funùiÚ + +š™Ÿlize +( +$·¿m‘”s + = + $¬¿y +()) + +79 +public + +funùiÚ + + $g‘ +( +$key +, +$deçuÉ + = +nuÎ +) + +81  + `is£t +( +£lf +:: +$ÿche +[ +$key +]è? s–f::$ÿche[$key] : +$deçuÉ +; + +82 + } +} + +84 +public + +funùiÚ + + $has +( +$key +) + +86  + `is£t +( +£lf +:: +$ÿche +[ +$key +]); + +87 + } +} + +89 +public + +funùiÚ + + $£t +( +$key +, +$d©a +, +$liãtime + = +nuÎ +) + +91 +£lf +:: +$ÿche +[ +$key +] = +$d©a +; + +92 + } +} + +94 +public + +funùiÚ + + $»move +( +$key +) + +96 + `un£t +( +£lf +:: +$ÿche +[ +$key +]); + +97 + } +} + +99 +public + +funùiÚ + +»moveP©‹º +( +$·‰”n +, +$d–im™” + = ':') + +101 +$·‰”n + = '#^' . +¡r_»¶aû +('*', '.*', $pattern) . '$#'; + +102 +fܗch +( +£lf +:: +$ÿche + +as + +$key + => +$v®ue +) + +104 if( +´eg_m©ch +( +$·‰”n +, +$key +)) + +106 +un£t +( +£lf +:: +$ÿche +[ +$key +]); + +111 +public + +funùiÚ + +þ—n +( +$mode + = +sfCache +:: +ALL +) + +113 +£lf +:: +$ÿche + = +¬¿y +(); + +116 +public + +funùiÚ + + $g‘Timeout +( +$key +) + +118  + `time +() - 60; + +119 + } +} + +121 +public + +funùiÚ + + $g‘La¡Modif›d +( +$key +) + +123  + `time +() - 600; + +124 + } +} + +126  +public + +funùiÚ + + $þ—r +() + +128 +£lf +:: +$ÿche + = + `¬¿y +(); + +129 + } +} + +132 þas  + cmyRoutšg + +ex‹nds + + msfP©‹ºRoutšg + + +134 +public + + m$cu¼’tIÁ”ÇlUri + = 'currentModule/currentAction?currentKey=currentValue'; + +136 +public + +funùiÚ + + $g‘Cu¼’tIÁ”ÇlUri +( +$w™h_rou‹_Çme + = +çl£ +) + +138  +$this +-> +cu¼’tIÁ”ÇlUri +; + +140 + } +} + +142 + g$cڋxt + = +sfCڋxt +:: +g‘In¡ªû +( +¬¿y +('controller' => 'myController', 'routing' => 'myRouting', 'request' => 'myRequest')); + +144 + g$r + = +$cڋxt +-> +routšg +; + +145 + g$r +-> +cÚÃù +('deçuÉ', +Ãw + +sfRou‹ +('/:module/:action/*')); + +148 + g$t +-> +dŸg +('->initialize()'); + +149 + g$m + = +Ãw + +myV›wCacheMªag” +( +$cڋxt +, +$ÿche + =‚ew +myCache +()); + +150 + g$t +-> +is +( +$m +-> +g‘Cache +(), +$ÿche +, '->initialize()akes‡ sfCache object‡s its second‡rgument'); + +153 + g$t +-> +dŸg +('->generateCacheKey'); + +154 + g$t +-> +is +( +$m +-> +g’”©eCacheKey +('mymodule/myaction'), '/localhost/all/mymodule/myaction', '->generateCacheKey() creates‡ simple cache key from‡n internal URI'); + +155 + g$t +-> +is +( +$m +-> +g’”©eCacheKey +('mymodule/myaction', 'foo'), '/foo/all/mymodule/myaction', '->generateCacheKey() canake‡ hostName‡s second…arameter'); + +156 + g$t +-> +is +( +$m +-> +g’”©eCacheKey +('mymoduË/myaùiÚ', +nuÎ +, 'bar'), '/localhost/bar/mymodule/myaction', '->generateCacheKey() canake‡ serialized set of vary headers‡shird…arameter'); + +158 + g$t +-> +is +( +$m +-> +g’”©eCacheKey +('mymodule/myaction?key1=value1&key2=value2'), '/localhost/all/mymodule/myaction/key1/value1/key2/value2', '->generateCacheKey() includes„equest…arameters‡s key/value…airs'); + +159 + g$t +-> +is +( +$m +-> +g’”©eCacheKey +('mymodule/myaction?akey=value1&ckey=value2&bkey=value3'), '/localhost/all/mymodule/myaction/akey/value1/bkey/value3/ckey/value2', '->generateCacheKey()„eorders„equest…arameters‡lphabetically'); + +161 + gŒy + + +163 + g$m +-> +g’”©eCacheKey +('@rule?key=value'); + +164 + g$t +-> +çž +('->generateCacheKey()hrows‡n sfException when…assed‡n internal URI with‡„ule'); + +166 + $ÿtch +( +sfExû±iÚ + +$e +) + +168 +$t +-> + `·ss +('->generateCacheKey()hrows‡n sfException when…assed‡n internal URI with‡„ule'); + +169 + } +} + +170 + gŒy + + +172 + g$m +-> +g’”©eCacheKey +('@sf_cache_partial?module=mymodule&action=myaction'); + +173 + g$t +-> +·ss +('->generateCacheKey() does‚othrow‡n sfException when…assed‡n internal URI with‡ @sf_cache_partial„ule'); + +175 + $ÿtch +( +sfExû±iÚ + +$e +) + +177 +$t +-> + `çž +('->generateCacheKey() does‚othrow‡n sfException when…assed‡n internal URI with‡ @sf_cache_partial„ule'); + +178 + } +} + +179 + gŒy + + +181 + g$m +-> +g’”©eCacheKey +('@sf_cache_partial?key=value'); + +182 + g$t +-> +çž +('->generateCacheKey()hrows‡n sfException when…assed‡n internal URI with‡ @sf_cache_partial„ule with‚o module or‡ction…aram'); + +184 + $ÿtch +( +sfExû±iÚ + +$e +) + +186 +$t +-> + `·ss +('->generateCacheKey()hrows‡n sfException when…assed‡n internal URI with‡ @sf_cache_partial„ule with‚o module or‡ction…aram'); + +187 + } +} + +189 + g$t +-> +is +( +$m +-> +g’”©eCacheKey +('@sf_cache_partial?module=foo&action=bar&sf_cache_key=value'), '/localhost/all/sf_cache_partial/foo/bar/sf_cache_key/value', '->generateCacheKey() can deal with internal URIso…artials'); + +191 + g$m + = +g‘_ÿche_mªag” +( +$cڋxt +); + +192 + g$m +-> +addCache +('foo', 'b¬', +g‘_ÿche_cÚfig +( +Œue +)); + +193 + g$t +-> +is +( +$m +-> +g’”©eCacheKey +('@sf_cache_partial?module=foo&action=bar&sf_cache_key=value'), '/localhost/all/currentModule/currentAction/currentKey/currentValue/foo/bar/value', '->generateCacheKey() can deal with internal URIso contextual…artials'); + +195 + g$t +-> +is +( +$m +-> +g’”©eCacheKey +('@sf_ÿche_·¹Ÿl?moduË=foo&aùiÚ=b¬&sf_ÿche_key=v®ue', +nuÎ +,‚ull, 'baz'), '/localhost/all/baz/foo/bar/value', '->generateCacheKey() canake‡…refix for contextual…artials‡s fourth…arameter'); + +197 + g$m + = +g‘_ÿche_mªag” +( +$cڋxt +); + +198 + g$m +-> +addCache +('moduË', 'aùiÚ', +¬¿y +('vary' =>‡rray('myheader', 'secondheader'))); + +199 + g$t +-> +is +( +$m +-> +g’”©eCacheKey +('module/action'), '/localhost/myheader-_foo_bar_-secondheader-_foo_bar_/module/action', '->generateCacheKey() creates‡ directory friendly vary cache key'); + +202 + g$t +-> +dŸg +('->generateNamespace()'); + +203 + g$m + = +g‘_ÿche_mªag” +( +$cڋxt +); + +206 + g$t +-> +dŸg +('->addCache()'); + +207 + g$m + = +g‘_ÿche_mªag” +( +$cڋxt +); + +208 + g$m +-> +£t +('test', 'module/action'); + +209 + g$t +-> +is +( +$m +-> +has +('moduË/aùiÚ'), +çl£ +, '->addCache()„egister‡ cache configuration for‡n‡ction'); + +211 + g$m +-> +addCache +('moduË', 'aùiÚ', +g‘_ÿche_cÚfig +()); + +212 + g$m +-> +£t +('test', 'module/action'); + +213 + g$t +-> +is +( +$m +-> +g‘ +('module/action'), 'test', '->addCache()„egister‡ cache configuration for‡n‡ction'); + +216 + g$t +-> +dŸg +('->set()'); + +217 + g$m + = +g‘_ÿche_mªag” +( +$cڋxt +); + +218 + g$t +-> +is +( +$m +-> +£t +('‹¡', 'moduË/aùiÚ'), +çl£ +, '->set()„eturns false ifhe‡ction is‚ot cacheable'); + +219 + g$m +-> +addCache +('moduË', 'aùiÚ', +g‘_ÿche_cÚfig +()); + +220 + g$t +-> +is +( +$m +-> +£t +('‹¡', 'moduË/aùiÚ'), +Œue +, '->set()„eturnsrue ifhe‡ction is cacheable'); + +222 + g$m + = +g‘_ÿche_mªag” +( +$cڋxt +); + +223 + g$m +-> +addCache +('moduË', 'aùiÚ', +g‘_ÿche_cÚfig +()); + +224 + g$m +-> +£t +('test', 'module/action'); + +225 + g$t +-> +is +( +$m +-> +g‘ +('module/action'), 'test', '->set() storeshe first…arameter in‡ key computed fromhe second…arameter'); + +227 + g$m + = +g‘_ÿche_mªag” +( +$cڋxt +); + +228 + g$m +-> +addCache +('moduË', 'aùiÚ', +g‘_ÿche_cÚfig +()); + +229 + g$m +-> +£t +('test', 'module/action?key1=value1'); + +230 + g$t +-> +is +( +$m +-> +g‘ +('module/action?key1=value1'), 'test', '->set() works with URIs with…arameters'); + +231 + g$t +-> +is +( +$m +-> +g‘ +('moduË/aùiÚ?key2=v®ue2'), +nuÎ +, '->set() stores‡ different version forƒach set of…arameters'); + +232 + g$t +-> +is +( +$m +-> +g‘ +('moduË/aùiÚ'), +nuÎ +, '->set() stores‡ different version forƒach set of…arameters'); + +234 + g$m + = +g‘_ÿche_mªag” +( +$cڋxt +); + +235 + g$m +-> +addCache +('moduË', 'aùiÚ', +g‘_ÿche_cÚfig +()); + +236 + g$m +-> +£t +('test', '@sf_cache_partial?module=module&action=action'); + +237 + g$t +-> +is +( +$m +-> +g‘ +('@sf_cache_partial?module=module&action=action'), 'test', '->set()‡ccepts keyso…artials'); + +239 + g$m + = +g‘_ÿche_mªag” +( +$cڋxt +); + +240 + g$m +-> +addCache +('moduË', 'aùiÚ', +g‘_ÿche_cÚfig +( +Œue +)); + +241 + g$m +-> +£t +('test', '@sf_cache_partial?module=module&action=action'); + +242 + g$t +-> +is +( +$m +-> +g‘ +('@sf_cache_partial?module=module&action=action'), 'test', '->set()‡ccepts keyso contextual…artials'); + +245 + g$t +-> +dŸg +('->get()'); + +246 + g$m + = +g‘_ÿche_mªag” +( +$cڋxt +); + +247 + g$t +-> +is +( +$m +-> +g‘ +('moduË/aùiÚ'), +nuÎ +, '->get()„eturns‚ull ifhe‡ction is‚ot cacheable'); + +248 + g$m +-> +addCache +('moduË', 'aùiÚ', +g‘_ÿche_cÚfig +()); + +249 + g$m +-> +£t +('test', 'module/action'); + +250 + g$t +-> +is +( +$m +-> +g‘ +('module/action'), 'test', '->get()„eturnshe saved content ifhe‡ction is cacheable'); + +253 + g$t +-> +dŸg +('->has()'); + +254 + g$m + = +g‘_ÿche_mªag” +( +$cڋxt +); + +255 + g$t +-> +is +( +$m +-> +has +('moduË/aùiÚ'), +çl£ +, '->has()„eturns false ifhe‡ction is‚ot cacheable'); + +256 + g$m +-> +addCache +('moduË', 'aùiÚ', +g‘_ÿche_cÚfig +()); + +257 + g$t +-> +is +( +$m +-> +has +('moduË/aùiÚ'), +çl£ +, '->has()„eturnshe cache does‚otƒxist forhe‡ction'); + +258 + g$m +-> +£t +('test', 'module/action'); + +259 + g$t +-> +is +( +$m +-> +has +('moduË/aùiÚ'), +Œue +, '->get()„eturnsrue ifhe‡ction is in cache'); + +262 + g$t +-> +dŸg +('->remove()'); + +263 + g$m + = +g‘_ÿche_mªag” +( +$cڋxt +); + +264 + g$m +-> +addCache +('moduË', 'aùiÚ', +g‘_ÿche_cÚfig +()); + +265 + g$m +-> +£t +('test', 'module/action'); + +266 + g$m +-> +»move +('module/action'); + +267 + g$t +-> +is +( +$m +-> +has +('moduË/aùiÚ'), +çl£ +, '->remove()„emoves cache content for‡n‡ction'); + +269 + g$m +-> +£t +('test', 'module/action?key1=value1'); + +270 + g$m +-> +£t +('test', 'module/action?key2=value2'); + +271 + g$m +-> +»move +('module/action?key1=value1'); + +272 + g$t +-> +is +( +$m +-> +has +('moduË/aùiÚ?key1=v®ue1'), +çl£ +, '->remove()„emoves‡ccepts‡n internal URI‡s first…arameter'); + +273 + g$t +-> +is +( +$m +-> +has +('moduË/aùiÚ?key2=v®ue2'), +Œue +, '->remove() does‚ot„emove cache content for keys‚ot matchinghe internal URI'); + +275 + g$m + = +g‘_ÿche_mªag” +( +$cڋxt +); + +276 + g$m +-> +addCache +('moduË', 'aùiÚ', +g‘_ÿche_cÚfig +()); + +277 + g$m +-> +£t +('test', 'module/action?key1=value1'); + +278 + g$m +-> +£t +('test', 'module/action?key1=value2'); + +279 + g$m +-> +£t +('test', 'module/action?key2=value1'); + +280 + g$m +-> +»move +('module/action?key1=*'); + +281 + g$t +-> +is +( +$m +-> +has +('moduË/aùiÚ?key1=v®ue1'), +çl£ +, '->remove()‡ccepts wildcards in URIs‡ndhen„emoves‡ll keys matchinghe…attern'); + +282 + g$t +-> +is +( +$m +-> +has +('moduË/aùiÚ?key1=v®ue2'), +çl£ +, '->remove()‡ccepts wildcards in URIs‡ndhen„emoves‡ll keys matchinghe…attern'); + +283 + g$t +-> +is +( +$m +-> +has +('moduË/aùiÚ?key2=v®ue1'), +Œue +, '->remove()‡ccepts wildcards in URIs‡nd†ets keys‚ot matchinghe…attern unchanged'); + +285 + g$t +-> +dŸg +('Cache key generation options'); + +286 + g$m + = +Ãw + +myV›wCacheMªag” +( +$cڋxt +, +$ÿche + =‚ew +myCache +(), +¬¿y +('ÿche_key_u£_v¬y_h—d”s' => +çl£ +)); + +287 + g$t +-> +is +( +$m +-> +g’”©eCacheKey +('mymodule/myaction'), '/localhost/mymodule/myaction', '->generateCacheKey() uses "cache_key_use_vary_headers" optiono know if vary headers changes cache key.'); + +289 + g$m + = +Ãw + +myV›wCacheMªag” +( +$cڋxt +, +$ÿche + =‚ew +myCache +(), +¬¿y +('ÿche_key_u£_ho¡_Çme' => +çl£ +)); + +290 + g$t +-> +is +( +$m +-> +g’”©eCacheKey +('mymodule/myaction'), '/all/mymodule/myaction', '->generateCacheKey() uses "cache_key_use_host_name" optiono know if vary headers changes cache key.'); + +292 + g$m + = +Ãw + +myV›wCacheMªag” +( +$cڋxt +, +$ÿche + =‚ew +myCache +(), +¬¿y +('ÿche_key_u£_ho¡_Çme' => +çl£ +, 'cache_key_use_vary_headers' => false)); + +293 + g$t +-> +is +( +$m +-> +g’”©eCacheKey +('mymodule/myaction'), '/mymodule/myaction', '->generateCacheKey()‡llowshe use of both "cache_key_use_host_name"‡nd "cache_key_use_vary_headers" options.'); + +295 + g$m + = +Ãw + +myV›wCacheMªag” +( +$cڋxt +,‚ew +myCache +()); + +296 + g$t +-> +is +( +$m +-> +g’”©eCacheKey +('mymodule/myaction?foo=../_bar'), '/localhost/all/mymodule/myaction/foo/_../__bar', '->generateCacheKey()…revents directoryraversal'); + +297 + g$t +-> +is +( +$m +-> +g’”©eCacheKey +('mymodule/myaction?foo=..\\_bar'), '/localhost/all/mymodule/myaction/foo/_..\\__bar', '->generateCacheKey()…revents directoryraversal'); + +300 + g$t +-> +dŸg +('->getCurrentCacheKey()'); + +301 + g$m + = +g‘_ÿche_mªag” +( +$cڋxt +); + +302 + g$t +-> +is +( +$m +-> +g‘Cu¼’tCacheKey +(), 'currentModule/currentAction?currentKey=currentValue&page=5&sort=asc', '->getCurrentCacheKey()‡ppends GET…arameterso‡nƒxisting query string'); + +303 + g$cڋxt +-> +g‘Routšg +()-> + gcu¼’tIÁ”ÇlUri + = 'currentModule/currentAction'; + +304 + g$t +-> +is +( +$m +-> +g‘Cu¼’tCacheKey +(), 'currentModule/currentAction?page=5&sort=asc', '->getCurrentCacheKey()‡dds‡ query string of GET…arameters if‚one ishere'); + + @lib/vendor/symfony/test/unit/view/sfViewParameterHolderTest.php + +1 +di¥©ch” +; + +40 + g$t +-> +dŸg +('->initialize()'); + +41 + g$p + = +Ãw + +sfV›wP¬am‘”HÞd” +( +$di¥©ch” +); + +42 + g$t +-> +is +( +$p +-> +g‘AÎ +(), +¬¿y +(), '->initialize() initializeshe…arameters‡s‡nƒmpty‡rray'); + +44 + g$p +-> +š™Ÿlize +( +$di¥©ch” +, +¬¿y +('foo' => 'bar')); + +45 + g$t +-> +is +( +$p +-> +g‘ +('foo'), 'bar', '->initialize()akes‡n‡rray of default…arameters‡s its second‡rgument'); + +47 + g$p +-> +š™Ÿlize +( +$di¥©ch” +, +¬¿y +(),‡rray('escaping_strategy' => 'on', 'escaping_method' => 'ESC_RAW')); + +48 + g$t +-> +is +( +$p +-> +g‘Esÿpšg +(), 'on', '->initialize()akes‡n‡rray of options‡s itshird‡rgument'); + +49 + g$t +-> +is +( +$p +-> +g‘EsÿpšgM‘hod +(), +ESC_RAW +, '->initialize()akes‡n‡rray of options‡s itshird‡rgument'); + +52 + g$t +-> +dŸg +('->isEscaped()'); + +53 + g$p +-> +£tEsÿpšg +('on'); + +54 + g$t +-> +is +( +$p +-> +isEsÿ³d +(), +Œue +, '->isEscaped()„eturnsrue if data will beƒscaped'); + +55 + g$p +-> +£tEsÿpšg +('off'); + +56 + g$t +-> +is +( +$p +-> +isEsÿ³d +(), +çl£ +, '->isEscaped()„eturns false if data won\'t beƒscaped'); + +59 + g$t +-> +dŸg +('->getEscaping() ->setEscaping()'); + +60 + g$p +-> +š™Ÿlize +( +$di¥©ch” +); + +61 + g$p +-> +£tEsÿpšg +('on'); + +62 + g$t +-> +is +( +$p +-> +g‘Esÿpšg +(), 'on', '->setEscaping() changesheƒscaping strategy'); + +65 + g$t +-> +dŸg +('->getEscapingMethod() ->setEscapingMethod()'); + +66 + g$p +-> +£tEsÿpšgM‘hod +('ESC_RAW'); + +67 + g$t +-> +is +( +$p +-> +g‘EsÿpšgM‘hod +(), +ESC_RAW +, '->setEscapingMethod() changesheƒscaping method'); + +69 + g$p +-> +£tEsÿpšgM‘hod +(''); + +70 + g$t +-> +is +( +$p +-> +g‘EsÿpšgM‘hod +(), '', '->getEscapingMethod()„eturns‡nƒmpty value ifhe method isƒmpty'); + +72 + gŒy + + +74 + g$p +-> +£tEsÿpšgM‘hod +('nonexistant'); + +75 + g$p +-> +g‘EsÿpšgM‘hod +(); + +76 + g$t +-> +çž +('->getEscapingMethod()hrows‡n InvalidArgumentException ifheƒscaping method does‚otƒxist'); + +78 + $ÿtch + ( +Inv®idArgum’tExû±iÚ + +$e +) + +80 +$t +-> + `·ss +('->getEscapingMethod()hrows‡n InvalidArgumentException ifheƒscaping method does‚otƒxist'); + +81 + } +} + +84 + g$t +-> +dŸg +('->toArray()'); + +85 + g$p +-> +š™Ÿlize +( +$di¥©ch” +, +¬¿y +('foo' => 'bar')); + +86 + g$a + = +$p +-> +toA¼ay +(); + +87 + g$t +-> +is +( +$a +['foo'], 'bar', '->toArray()„eturns‡n‡rray„epresentation ofhe…arameter holder'); + +90 + g$p + = +Ãw + +sfV›wP¬am‘”HÞd” +Òew +sfEv’tDi¥©ch” +(), +¬¿y +('foo' => 'bar')); + +92 + gŒy + + +94 + g$p +-> +£tEsÿpšg +('null'); + +95 + g$p +-> +toA¼ay +(); + +96 + g$t +-> +çž +('->toArray()hrows‡n InvalidArgumentException ifheƒscaping strategy does‚otƒxist'); + +98 + $ÿtch + ( +Inv®idArgum’tExû±iÚ + +$e +) + +100 +$t +-> + `·ss +('->toArray()hrows‡n InvalidArgumentException ifheƒscaping strategy does‚otƒxist'); + +101 + } +} + +103 + g$t +-> +dŸg +('Escaping strategyo on'); + +104 + g$p +-> +£tEsÿpšg +('on'); + +105 + g$v®ues + = +$p +-> +toA¼ay +(); + +106 + g$t +-> +is +( +couÁ +( +$v®ues +), 2, '->toArray() knows‡bouthe "on" strategy'); + +107 + g$t +-> +is +( +couÁ +( +$v®ues +['sf_data']), 1, '->toArray() knows‡bouthe "on" strategy'); + +108 + g$t +-> +is +( +$v®ues +['foo'], '-ESCAPED-bar-ESCAPED-', '->toArray() knows‡bouthe "on" strategy'); + +109 + g$t +-> +is +( +$v®ues +['sf_data']['foo'], '-ESCAPED-bar-ESCAPED-', '->toArray() knows‡bouthe "on" strategy'); + +111 + g$t +-> +dŸg +('Escaping strategyo off'); + +112 + g$p +-> +£tEsÿpšg +('off'); + +113 + g$v®ues + = +$p +-> +toA¼ay +(); + +114 + g$t +-> +is +( +couÁ +( +$v®ues +), 2, '->toArray() knows‡bouthe "off" strategy'); + +115 + g$t +-> +is +( +couÁ +( +$v®ues +['sf_data']), 1, '->toArray() knows‡bouthe "on" strategy'); + +116 + g$t +-> +is +( +$v®ues +['foo'], 'bar', '->toArray() knows‡bouthe "off" strategy'); + +117 + g$t +-> +is +( +$v®ues +['sf_data']['foo'], 'bar', '->toArray() knows‡bouthe "off" strategy'); + +120 + g$t +-> +dŸg +('->serialize() / ->unserialize()'); + +121 + g$p +-> +š™Ÿlize +( +$di¥©ch” +, +¬¿y +('foo' => 'bar')); + +122 + g$un£rŸlized + = +un£rŸlize +( +£rŸlize +( +$p +)); + +123 + g$t +-> +is +( +$p +-> +toA¼ay +(), +$un£rŸlized +->toArray(), 'sfViewParameterHolder implementshe Serializable interface'); + + @lib/vendor/symfony/test/unit/view/sfViewTest.php + +1 + `£tDecÜ©Ü +( +£lf +:: +$isDecÜ©ed +); + +32 +·»Á +:: + `š™Ÿlize +( +$cڋxt +, +$moduËName +, +$aùiÚName +, +$v›wName +); + +34 + } +} + +36 + g$cڋxt + = +sfCڋxt +:: +g‘In¡ªû +( +¬¿y +('request' => 'sfWebRequest', 'response' => 'sfWebResponse')); + +38 + g$v›w + = +Ãw + +myV›w +( +$cڋxt +, '', '', ''); + +41 + g$t +-> +dŸg +('->isDecorator() ->setDecorator()'); + +42 + g$t +-> +is +( +$v›w +-> +isDecÜ©Ü +(), +çl£ +, '->isDecorator()„eturnsrue ifhe current view haveo be decorated'); + +43 + g$v›w +-> +£tDecÜ©Ü +( +Œue +); + +44 + g$t +-> +is +( +$v›w +-> +isDecÜ©Ü +(), +Œue +, '->setDecorator() setshe decorator status forhe view'); + +47 + g$t +-> +dŸg +('format'); + +48 + g$cڋxt + = +sfCڋxt +:: +g‘In¡ªû +( +¬¿y +('»que¡' => 'sfWebReque¡', '»¥Ú£' => 'sfWebRe¥Ú£'), +Œue +); + +49 + g$cڋxt +-> +g‘Reque¡ +()-> +£tFÜm© +('js', 'application/x-javascript'); + +50 + g$cڋxt +-> +g‘Reque¡ +()-> +£tReque¡FÜm© +('js'); + +51 + gcÚfigu»dV›w +:: +$isDecÜ©ed + = +Œue +; + +52 + g$v›w + = +Ãw + +cÚfigu»dV›w +( +$cڋxt +, '', '', ''); + +53 + g$t +-> +is +( +$v›w +-> +isDecÜ©Ü +(), +çl£ +, '->initialize() useshe formato configurehe view'); + +54 + g$t +-> +is +( +$cڋxt +-> +g‘Re¥Ú£ +()-> +g‘CڋÁTy³ +(), 'application/x-javascript', '->initialize() useshe formato configurehe view'); + +55 + g$t +-> +is +( +$v›w +-> +g‘Ex‹nsiÚ +(), '.js.php', '->initialize() useshe formato configurehe view'); + +56 + g$cڋxt + = +sfCڋxt +:: +g‘In¡ªû +( +¬¿y +('»que¡' => 'sfWebReque¡', '»¥Ú£' => 'sfWebRe¥Ú£'), +Œue +); + +57 + g$cڋxt +-> +g‘Ev’tDi¥©ch” +()-> +cÚÃù +('view.configure_format', 'configure_format'); + +59 + g$cڋxt +-> +g‘Reque¡ +()-> +£tReque¡FÜm© +('js'); + +60 + gcÚfigu»dV›w +:: +$isDecÜ©ed + = +Œue +; + +61 + g$v›w + = +Ãw + +cÚfigu»dV›w +( +$cڋxt +, '', '', ''); + +62 + g$t +-> +is +( +$v›w +-> +isDecÜ©Ü +(), +Œue +, '->initialize() useshe formato configurehe view'); + +63 + g$t +-> +is +( +$cڋxt +-> +g‘Re¥Ú£ +()-> +g‘CڋÁTy³ +(), 'application/javascript', '->initialize() useshe formato configurehe view'); + +66 +»quœe_Úû +( +$_‹¡_dœ +.'/unit/sfParameterHolderTest.class.php'); + +67 + g$pht + = +Ãw + +sfP¬am‘”HÞd”ProxyTe¡ +( +$t +); + +68 + g$pht +-> +ÏunchTe¡s +( +$v›w +, 'parameter'); + +71 +»quœe_Úû +( +$_‹¡_dœ +.'/unit/sfEventDispatcherTest.class.php'); + +72 + g$di¥©ch”Te¡ + = +Ãw + +sfEv’tDi¥©ch”Te¡ +( +$t +); + +73 + g$di¥©ch”Te¡ +-> +ÏunchTe¡s +( +$cڋxt +-> +g‘Ev’tDi¥©ch” +(), +$v›w +, 'view'); + +75 +funùiÚ + + $cÚfigu»_fÜm© +( +sfEv’t + +$ev’t +) + +77 +$ev’t +-> + `g‘Subjeù +()-> + `£tDecÜ©Ü +( +Œue +); + +78 +$ev’t +['»¥Ú£']-> + `£tCڋÁTy³ +('application/javascript'); + +80  +Œue +; + +81 + } +} + + @lib/vendor/symfony/test/unit/widget/i18n/sfWidgetFormI18nChoiceCountryTest.php + +1 + gv®id©eOnP¬£ + = +Œue +; + +19 + g$t +-> +dŸg +('->configure()'); + +20 + gŒy + + +22 +Ãw + +sfWidg‘FÜmI18nChoiûCouÁry +( +¬¿y +('culture' => 'en', 'countries' =>‡rray('EN'))); + +23 + g$t +-> +çž +('->configure()hrows‡n InvalidArgumentException if‡ country does‚otƒxist'); + +25 + $ÿtch + ( +Inv®idArgum’tExû±iÚ + +$e +) + +27 +$t +-> + `·ss +('->configure()hrows‡n InvalidArgumentException if‡ country does‚otƒxist'); + +28 + } +} + +30 + g$v + = +Ãw + +sfWidg‘FÜmI18nChoiûCouÁry +( +¬¿y +('culture' => 'en', 'countries' =>‡rray('FR', 'GB'))); + +31 + g$t +-> +is +( +¬¿y_keys +( +$v +-> +g‘O±iÚ +('choiûs')), +¬¿y +('FR', 'GB'), '->configure() can„estricthe‚umber of countries withhe countries option'); + +34 + g$t +-> +dŸg +('->render()'); + +35 + g$w + = +Ãw + +sfWidg‘FÜmI18nChoiûCouÁry +( +¬¿y +('culture' => 'fr')); + +36 + g$dom +-> +lßdHTML +( +$w +-> +»nd” +('country', 'FR')); + +37 + g$css + = +Ãw + +sfDomCssS–eùÜ +( +$dom +); + +38 + g$t +-> +is +( +$css +-> +m©chSšgË +('#couÁry o±iÚ[v®ue="FR"]')-> +g‘V®ue +(), 'France', '->render()„enders‡ll countries‡s optionags'); + +39 + g$t +-> +is +( +couÁ +( +$css +-> +m©chAÎ +('#couÁry o±iÚ[v®ue="FR"][£Ëùed="£Ëùed"]')-> +g‘Nodes +()), 1, '->render()„enders‡ll countries‡s optionags'); + +43 + g$t +-> +is +( +couÁ +( +$css +-> +m©chAÎ +('#country option[value="ZZ"]')), 1, '->render() does‚ot contain dummy data'); + +44 + g$t +-> +is +( +couÁ +( +$css +-> +m©chAÎ +('#country option[value="419"]')), 0, '->render() does‚ot contain„egion data'); + +47 + g$t +-> +dŸg +('add_empty'); + +48 + g$w + = +Ãw + +sfWidg‘FÜmI18nChoiûCouÁry +( +¬¿y +('cuÉu»' => 'ä', 'add_em±y' => +Œue +)); + +49 + g$dom +-> +lßdHTML +( +$w +-> +»nd” +('country', 'FR')); + +50 + g$css + = +Ãw + +sfDomCssS–eùÜ +( +$dom +); + +51 + g$t +-> +is +( +$css +-> +m©chSšgË +('#couÁry o±iÚ[v®ue=""]')-> +g‘V®ue +(), '', '->render()„enders‡nƒmpty option if‡dd_empty isrue'); + +53 + g$w + = +Ãw + +sfWidg‘FÜmI18nChoiûCouÁry +( +¬¿y +('culture' => 'fr', 'add_empty' => 'foo')); + +54 + g$dom +-> +lßdHTML +( +$w +-> +»nd” +('country', 'FR')); + +55 + g$css + = +Ãw + +sfDomCssS–eùÜ +( +$dom +); + +56 + g$t +-> +is +( +$css +-> +m©chSšgË +('#couÁry o±iÚ[v®ue=""]')-> +g‘V®ue +(), 'foo', '->render()„enders‡nƒmpty option if‡dd_empty isrue'); + + @lib/vendor/symfony/test/unit/widget/i18n/sfWidgetFormI18nChoiceCurrencyTest.php + +1 + gv®id©eOnP¬£ + = +Œue +; + +19 + g$t +-> +dŸg +('->configure()'); + +20 + gŒy + + +22 +Ãw + +sfWidg‘FÜmI18nChoiûCu¼’cy +( +¬¿y +('culture' => 'en', 'currencies' =>‡rray('xx'))); + +23 + g$t +-> +çž +('->configure()hrows‡n InvalidArgumentException if‡ currency does‚otƒxist'); + +25 + $ÿtch + ( +Inv®idArgum’tExû±iÚ + +$e +) + +27 +$t +-> + `·ss +('->configure()hrows‡n InvalidArgumentException if‡ currency does‚otƒxist'); + +28 + } +} + +30 + g$v + = +Ãw + +sfWidg‘FÜmI18nChoiûCu¼’cy +( +¬¿y +('culture' => 'en', 'currencies' =>‡rray('EUR', 'USD'))); + +31 + g$t +-> +is +( +¬¿y_keys +( +$v +-> +g‘O±iÚ +('choiûs')), +¬¿y +('EUR', 'USD'), '->configure() can„estricthe‚umber of currencies withhe currencies option'); + +34 + g$t +-> +dŸg +('->render()'); + +35 + g$w + = +Ãw + +sfWidg‘FÜmI18nChoiûCu¼’cy +( +¬¿y +('culture' => 'fr')); + +36 + g$dom +-> +lßdHTML +( +$w +-> +»nd” +('currency', 'EUR')); + +37 + g$css + = +Ãw + +sfDomCssS–eùÜ +( +$dom +); + +38 + g$t +-> +is +( +$css +-> +m©chSšgË +('#cu¼’cy o±iÚ[v®ue="EUR"]')-> +g‘V®ue +(), 'euro', '->render()„enders‡ll currencies‡s optionags'); + +39 + g$t +-> +is +( +couÁ +( +$css +-> +m©chAÎ +('#cu¼’cy o±iÚ[v®ue="EUR"][£Ëùed="£Ëùed"]')-> +g‘Nodes +()), 1, '->render()„enders‡ll currencies‡s optionags'); + +43 + g$t +-> +is +( +couÁ +( +$css +-> +m©chAÎ +('#currency option[value="XXX"]')), 1, '->render() does‚ot output ICU dummy data'); + +46 + g$t +-> +dŸg +('add_empty'); + +47 + g$w + = +Ãw + +sfWidg‘FÜmI18nChoiûCu¼’cy +( +¬¿y +('cuÉu»' => 'ä', 'add_em±y' => +Œue +)); + +48 + g$dom +-> +lßdHTML +( +$w +-> +»nd” +('currency', 'EUR')); + +49 + g$css + = +Ãw + +sfDomCssS–eùÜ +( +$dom +); + +50 + g$t +-> +is +( +$css +-> +m©chSšgË +('#cu¼’cy o±iÚ[v®ue=""]')-> +g‘V®ue +(), '', '->render()„enders‡nƒmpty option if‡dd_empty isrue'); + +52 + g$w + = +Ãw + +sfWidg‘FÜmI18nChoiûCu¼’cy +( +¬¿y +('culture' => 'fr', 'add_empty' => 'foo')); + +53 + g$dom +-> +lßdHTML +( +$w +-> +»nd” +('currency', 'EUR')); + +54 + g$css + = +Ãw + +sfDomCssS–eùÜ +( +$dom +); + +55 + g$t +-> +is +( +$css +-> +m©chSšgË +('#cu¼’cy o±iÚ[v®ue=""]')-> +g‘V®ue +(), 'foo', '->render()„enders‡nƒmpty option if‡dd_empty isrue'); + + @lib/vendor/symfony/test/unit/widget/i18n/sfWidgetFormI18nChoiceLanguageTest.php + +1 + gv®id©eOnP¬£ + = +Œue +; + +19 + g$t +-> +dŸg +('->configure()'); + +20 + gŒy + + +22 +Ãw + +sfWidg‘FÜmI18nChoiûLªguage +( +¬¿y +('culture' => 'en', 'languages' =>‡rray('xx'))); + +23 + g$t +-> +çž +('->configure()hrows‡n InvalidArgumentException if‡†anguage does‚otƒxist'); + +25 + $ÿtch + ( +Inv®idArgum’tExû±iÚ + +$e +) + +27 +$t +-> + `·ss +('->configure()hrows‡n InvalidArgumentException if‡†anguage does‚otƒxist'); + +28 + } +} + +30 + g$v + = +Ãw + +sfWidg‘FÜmI18nChoiûLªguage +( +¬¿y +('culture' => 'en', 'languages' =>‡rray('fr', 'en'))); + +31 + g$t +-> +is +( +¬¿y_keys +( +$v +-> +g‘O±iÚ +('choiûs')), +¬¿y +('en', 'fr'), '->configure() can„estricthe‚umber of†anguages withhe†anguages option'); + +34 + g$t +-> +dŸg +('->render()'); + +35 + g$w + = +Ãw + +sfWidg‘FÜmI18nChoiûLªguage +( +¬¿y +('culture' => 'fr')); + +36 + g$dom +-> +lßdHTML +( +$w +-> +»nd” +('language', 'en')); + +37 + g$css + = +Ãw + +sfDomCssS–eùÜ +( +$dom +); + +38 + g$t +-> +is +( +$css +-> +m©chSšgË +('#ÏnguagÝtiÚ[v®ue="’"]')-> +g‘V®ue +(), 'anglais', '->render()„enders‡ll†anguages‡s optionags'); + +39 + g$t +-> +is +( +couÁ +( +$css +-> +m©chAÎ +('#ÏnguagÝtiÚ[v®ue="’"][£Ëùed="£Ëùed"]')-> +g‘Nodes +()), 1, '->render()„enders‡ll†anguages‡s optionags'); + +42 + g$t +-> +dŸg +('add_empty'); + +43 + g$w + = +Ãw + +sfWidg‘FÜmI18nChoiûLªguage +( +¬¿y +('cuÉu»' => 'ä', 'add_em±y' => +Œue +)); + +44 + g$dom +-> +lßdHTML +( +$w +-> +»nd” +('language', 'FR')); + +45 + g$css + = +Ãw + +sfDomCssS–eùÜ +( +$dom +); + +46 + g$t +-> +is +( +$css +-> +m©chSšgË +('#ÏnguagÝtiÚ[v®ue=""]')-> +g‘V®ue +(), '', '->render()„enders‡nƒmpty option if‡dd_empty isrue'); + +48 + g$w + = +Ãw + +sfWidg‘FÜmI18nChoiûLªguage +( +¬¿y +('culture' => 'fr', 'add_empty' => 'foo')); + +49 + g$dom +-> +lßdHTML +( +$w +-> +»nd” +('language', 'FR')); + +50 + g$css + = +Ãw + +sfDomCssS–eùÜ +( +$dom +); + +51 + g$t +-> +is +( +$css +-> +m©chSšgË +('#ÏnguagÝtiÚ[v®ue=""]')-> +g‘V®ue +(), 'foo', '->render()„enders‡nƒmpty option if‡dd_empty isrue'); + + @lib/vendor/symfony/test/unit/widget/i18n/sfWidgetFormI18nChoiceTimezoneTest.php + +1 + gv®id©eOnP¬£ + = +Œue +; + +19 + g$t +-> +dŸg +('->render()'); + +20 + g$w + = +Ãw + +sfWidg‘FÜmI18nChoiûTimezÚe +(); + +21 + g$dom +-> +lßdHTML +( +$w +-> +»nd” +('timezone', 'Europe/Paris')); + +22 + g$css + = +Ãw + +sfDomCssS–eùÜ +( +$dom +); + +23 + g$t +-> +is +( +$css +-> +m©chSšgË +('#timezڐÝtiÚ[v®ue="EurÝe/P¬is"]')-> +g‘V®ue +(), 'Europe/Paris', '->render()„enders‡llimezones‡s optionags'); + +24 + g$t +-> +is +( +couÁ +( +$css +-> +m©chAÎ +('#timezڐÝtiÚ[v®ue="EurÝe/P¬is"][£Ëùed="£Ëùed"]')-> +g‘Nodes +()), 1, '->render()„enders‡llimezones‡s optionags'); + +27 + g$t +-> +dŸg +('add_empty'); + +28 + g$w + = +Ãw + +sfWidg‘FÜmI18nChoiûTimezÚe +( +¬¿y +('cuÉu»' => 'ä', 'add_em±y' => +Œue +)); + +29 + g$dom +-> +lßdHTML +( +$w +-> +»nd” +('language', 'FR')); + +30 + g$css + = +Ãw + +sfDomCssS–eùÜ +( +$dom +); + +31 + g$t +-> +is +( +$css +-> +m©chSšgË +('#ÏnguagÝtiÚ[v®ue=""]')-> +g‘V®ue +(), '', '->render()„enders‡nƒmpty option if‡dd_empty isrue'); + +33 + g$w + = +Ãw + +sfWidg‘FÜmI18nChoiûTimezÚe +( +¬¿y +('culture' => 'fr', 'add_empty' => 'foo')); + +34 + g$dom +-> +lßdHTML +( +$w +-> +»nd” +('language', 'FR')); + +35 + g$css + = +Ãw + +sfDomCssS–eùÜ +( +$dom +); + +36 + g$t +-> +is +( +$css +-> +m©chSšgË +('#ÏnguagÝtiÚ[v®ue=""]')-> +g‘V®ue +(), 'foo', '->render()„enders‡nƒmpty option if‡dd_empty isrue'); + + @lib/vendor/symfony/test/unit/widget/i18n/sfWidgetFormI18nDateTest.php + +1 + gv®id©eOnP¬£ + = +Œue +; + +19 + g$t +-> +dŸg +('->configure()'); + +21 + g$w + = +Ãw + +sfWidg‘FÜmI18nD©e +( +¬¿y +('culture' => 'fr')); + +22 + g$t +-> +is +( +$w +-> +g‘O±iÚ +('format'), '%day%/%month%/%year%', '->configure()‡utomatically changeshe date format forhe given culture'); + +23 + g$w + = +Ãw + +sfWidg‘FÜmI18nD©e +( +¬¿y +('culture' => 'en_US')); + +24 + g$t +-> +is +( +$w +-> +g‘O±iÚ +('format'), '%month%/%day%/%year%', '->configure()‡utomatically changeshe date format forhe given culture'); + +25 + g$w + = +Ãw + +sfWidg‘FÜmI18nD©e +( +¬¿y +('culture' => 'sr')); + +26 + g$t +-> +is +( +$w +-> +g‘O±iÚ +('format'), '%day%.%month%.%year%.', '->configure()‡utomatically changeshe date format forhe given culture'); + +28 + g$w + = +Ãw + +sfWidg‘FÜmI18nD©e +( +¬¿y +('culture' => 'fr', 'month_format' => 'name')); + +29 + g$mÚths + = +$w +-> +g‘O±iÚ +('months'); + +30 + g$t +-> +is +( +$mÚths +[2], 'février', '->configure()‡utomatically changeshe date format forhe given culture'); + +32 + g$w + = +Ãw + +sfWidg‘FÜmI18nD©e +( +¬¿y +('culture' => 'fr', 'month_format' => 'short_name')); + +33 + g$mÚths + = +$w +-> +g‘O±iÚ +('months'); + +34 + g$t +-> +is +( +$mÚths +[2], 'févr.', '->configure()‡utomatically changeshe date format forhe given culture'); + +36 + g$w + = +Ãw + +sfWidg‘FÜmI18nD©e +( +¬¿y +('culture' => 'fr', 'month_format' => 'number')); + +37 + g$mÚths + = +$w +-> +g‘O±iÚ +('months'); + +38 + g$t +-> +is +( +$mÚths +[2], 2, '->configure()‡utomatically changeshe date format forhe given culture'); + +40 + gŒy + + +42 +Ãw + +sfWidg‘FÜmI18nD©e +( +¬¿y +('culture' => 'fr', 'month_format' => 'nonexistant')); + +43 + g$t +-> +çž +('->configure()hrows‡n InvalidArgumentException ifhe month_formatype does‚otƒxist'); + +45 + $ÿtch + ( +Inv®idArgum’tExû±iÚ + +$e +) + +47 +$t +-> + `·ss +('->configure()hrows‡n InvalidArgumentException ifhe month_formatype does‚otƒxist'); + +48 + } +} + + @lib/vendor/symfony/test/unit/widget/i18n/sfWidgetFormI18nDateTimeTest.php + +1 + gv®id©eOnP¬£ + = +Œue +; + +19 + g$t +-> +dŸg +('->configure()'); + +21 + g$w + = +Ãw + +sfWidg‘FÜmI18nD©eTime +( +¬¿y +('culture' => 'fr')); + +22 + g$t +-> +is +( +$w +-> +g‘O±iÚ +('format'), '%date% %time%', '->configure()‡utomatically changeshe date format forhe given culture'); + + @lib/vendor/symfony/test/unit/widget/i18n/sfWidgetFormI18nTimeTest.php + +1 + gv®id©eOnP¬£ + = +Œue +; + +19 + g$t +-> +dŸg +('->configure()'); + +21 + g$w + = +Ãw + +sfWidg‘FÜmI18nTime +( +¬¿y +('culture' => 'fr')); + +22 + g$t +-> +is +( +$w +-> +g‘O±iÚ +('format'), '%hour%:%minute%:%second%', '->configure()‡utomatically changeshe date format forhe given culture'); + +23 + g$t +-> +is +( +$w +-> +g‘O±iÚ +('format_without_seconds'), '%hour%:%minute%', '->configure()‡utomatically changeshe date format forhe given culture'); + +25 + g$w + = +Ãw + +sfWidg‘FÜmI18nTime +( +¬¿y +('culture' => 'sr')); + +26 + g$t +-> +is +( +$w +-> +g‘O±iÚ +('format'), '%hour%.%minute%.%second%', '->configure()‡utomatically changeshe date format forhe given culture'); + +27 + g$t +-> +is +( +$w +-> +g‘O±iÚ +('format_without_seconds'), '%hour%.%minute%', '->configure()‡utomatically changeshe date format forhe given culture'); + + @lib/vendor/symfony/test/unit/widget/sfWidgetFormChoiceTest.php + +1 + gv®id©eOnP¬£ + = +Œue +; + +29 + g$t +-> +dŸg +('->getRenderer()'); + +30 + g$w + = +Ãw + +sfWidg‘FÜmChoiû +( +¬¿y +('choices' =>‡rray())); + +31 + g$t +-> +is +( +g‘_þass +( +$w +-> +g‘R’d”” +()), 'sfWidgetFormSelect', '->getRenderer() guesseshe„enderer classo use'); + +32 + g$w +-> +£tO±iÚ +('muɝË', +Œue +); + +33 + g$t +-> +is +( +g‘_þass +( +$w +-> +g‘R’d”” +()), 'sfWidgetFormSelect', '->getRenderer() guesseshe„enderer classo use'); + +34 + g$w +-> +£tO±iÚ +('ex·nded', +Œue +); + +35 + g$t +-> +is +( +g‘_þass +( +$w +-> +g‘R’d”” +()), 'sfWidgetFormSelectCheckbox', '->getRenderer() guesseshe„enderer classo use'); + +36 + g$w +-> +£tO±iÚ +('muɝË', +çl£ +); + +37 + g$t +-> +is +( +g‘_þass +( +$w +-> +g‘R’d”” +()), 'sfWidgetFormSelectRadio', '->getRenderer() guesseshe„enderer classo use'); + +39 þas  + cMyWidg‘ + +ex‹nds + + msfWidg‘FÜmChoiû + + +41 +public + +funùiÚ + +»nd” +( +$Çme +, +$v®ue + = +nuÎ +, +$©Œibu‹s + = +¬¿y +(), +$”rÜs + = + $¬¿y +()) + +43  +nuÎ +; + +46 +public + +funùiÚ + + $g‘JavaSüts +() + +48  + `¬¿y +('/path/to/a/file.js'); + +49 + } +} + +51 +public + +funùiÚ + + $g‘StyËsh“ts +() + +53  + `¬¿y +('/path/to/a/file.css' => 'all'); + +54 + } +} + +57 + g$w +-> +£tO±iÚ +('renderer_class', 'MyWidget'); + +58 + g$t +-> +is +( +g‘_þass +( +$w +-> +g‘R’d”” +()), 'MyWidget', '->getRenderer() useshe„enderer_class‡she widget class if…rovided'); + +60 + g$w +-> +£tO±iÚ +('»nd””_þass', +nuÎ +); + +61 + g$w +-> +£tO±iÚ +('»nd””', +Ãw + +MyWidg‘ +( +¬¿y +('choices' =>‡rray()))); + +62 + g$t +-> +is +( +g‘_þass +( +$w +-> +g‘R’d”” +()), 'MyWidget', '->getRenderer() useshe„enderer‡she widget if…rovided'); + +65 + g$t +-> +dŸg +('->render()'); + +66 + g$w + = +Ãw + +sfWidg‘FÜmChoiû +( +¬¿y +('choices' =>‡rray('foo' => 'bar'))); + +67 + g$t +-> +like +( +$w +-> +»nd” +('foo'), '//', '->render()„enders‡ selectag by default'); + +68 + g$w +-> +£tIdFÜm© +('barID_%s'); + +69 + g$t +-> +like +( +$w +-> +»nd” +('foo'), '//', '->render() useshe id format specified'); + +70 + g$w +-> +£tIdFÜm© +('%s'); + +71 + g$w +-> +£tO±iÚ +('muɝË', +Œue +); + +72 + g$t +-> +like +( +$w +-> +»nd” +('foo'), '//', '->render()‡dds‡ multiple‡ttribute for multiple selects'); + +73 + g$w +-> +£tO±iÚ +('ex·nded', +Œue +); + +74 + g$t +-> +like +( +$w +-> +»nd” +('foo'), '/
    "); + + $line = substr($line, 0, $tagclosepos); + + return $line; + } + + protected function highlightSourceFile($filename) + { + if ($this->geshipath) + { + require_once $this->geshipath . '/geshi.php'; + + $source = file_get_contents($filename); + + $geshi = new GeSHi($source, 'php', $this->geshilanguagespath); + + $geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS); + + $geshi->enable_strict_mode(true); + + $geshi->enable_classes(true); + + $geshi->set_url_for_keyword_group(3, ''); + + $html = $geshi->parse_code(); + + $lines = split("
  • |
  • ", $html); + + // skip first and last line + array_pop($lines); + array_shift($lines); + + $lines = array_filter($lines); + + $lines = array_map(array($this, 'stripDiv'), $lines); + + return $lines; + } + else + { + $lines = file($filename); + + for ($i = 0; $i < count($lines); $i++) + { + $line = $lines[$i]; + + $line = rtrim($line); + + if (function_exists('mb_convert_encoding')) + { + $lines[$i] = mb_convert_encoding($line, 'UTF-8'); + } + else + { + $lines[$i] = utf8_encode($line); + } + } + + return $lines; + } + } + + protected function transformSourceFile($filename, $coverageInformation, $classStartLine = 1) + { + $sourceElement = $this->doc->createElement('sourcefile'); + $sourceElement->setAttribute('name', basename($filename)); + + /** + * Add original/full filename to document + */ + $sourceElement->setAttribute('sourcefile', $filename); + + $filelines = $this->highlightSourceFile($filename); + + $linenr = 1; + + foreach ($filelines as $line) + { + $lineElement = $this->doc->createElement('sourceline'); + $lineElement->setAttribute('coveredcount', (isset($coverageInformation[$linenr]) ? $coverageInformation[$linenr] : '0')); + + if ($linenr == $classStartLine) + { + $lineElement->setAttribute('startclass', 1); + } + + $textnode = $this->doc->createTextNode($line); + $lineElement->appendChild($textnode); + + $sourceElement->appendChild($lineElement); + + $linenr++; + } + + return $sourceElement; + } + + protected function filterCovered($var) + { + return ($var >= 0); + } + + protected function transformCoverageInformation($filename, $coverageInformation) + { + $classes = PHPUnitUtil::getDefinedClasses($filename, $this->classpath); + + if (is_array($classes)) + { + foreach ($classes as $classname) + { + $reflection = new ReflectionClass($classname); + + $methods = $reflection->getMethods(); + + $classElement = $this->doc->createElement('class'); + $classElement->setAttribute('name', $reflection->getName()); + + $this->addClassToPackage($reflection->getName(), $classElement); + + $classStartLine = $reflection->getStartLine(); + + $methodscovered = 0; + $methodcount = 0; + + // Strange PHP5 reflection bug, classes without parent class or implemented interfaces seem to start one line off + if ($reflection->getParentClass() == NULL && count($reflection->getInterfaces()) == 0) + { + unset($coverageInformation[$classStartLine + 1]); + } + else + { + unset($coverageInformation[$classStartLine]); + } + + reset($coverageInformation); + + foreach ($methods as $method) + { + // PHP5 reflection considers methods of a parent class to be part of a subclass, we don't + if ($method->getDeclaringClass()->getName() != $reflection->getName()) + { + continue; + } + + // small fix for XDEBUG_CC_UNUSED + if (isset($coverageInformation[$method->getStartLine()])) + { + unset($coverageInformation[$method->getStartLine()]); + } + + if (isset($coverageInformation[$method->getEndLine()])) + { + unset($coverageInformation[$method->getEndLine()]); + } + + if ($method->isAbstract()) + { + continue; + } + + $linenr = key($coverageInformation); + + while ($linenr !== null && $linenr < $method->getStartLine()) + { + next($coverageInformation); + $linenr = key($coverageInformation); + } + + if (current($coverageInformation) > 0 && $method->getStartLine() <= $linenr && $linenr <= $method->getEndLine()) + { + $methodscovered++; + } + + $methodcount++; + } + + $statementcount = count($coverageInformation); + $statementscovered = count(array_filter($coverageInformation, array($this, 'filterCovered'))); + + $classElement->appendChild($this->transformSourceFile($filename, $coverageInformation, $classStartLine)); + + $classElement->setAttribute('methodcount', $methodcount); + $classElement->setAttribute('methodscovered', $methodscovered); + $classElement->setAttribute('statementcount', $statementcount); + $classElement->setAttribute('statementscovered', $statementscovered); + $classElement->setAttribute('totalcount', $methodcount + $statementcount); + $classElement->setAttribute('totalcovered', $methodscovered + $statementscovered); + } + } + } + + protected function calculateStatistics() + { + $packages = $this->doc->documentElement->getElementsByTagName('package'); + + $totalmethodcount = 0; + $totalmethodscovered = 0; + + $totalstatementcount = 0; + $totalstatementscovered = 0; + + foreach ($packages as $package) + { + $methodcount = 0; + $methodscovered = 0; + + $statementcount = 0; + $statementscovered = 0; + + $classes = $package->getElementsByTagName('class'); + + foreach ($classes as $class) + { + $methodcount += $class->getAttribute('methodcount'); + $methodscovered += $class->getAttribute('methodscovered'); + + $statementcount += $class->getAttribute('statementcount'); + $statementscovered += $class->getAttribute('statementscovered'); + } + + $package->setAttribute('methodcount', $methodcount); + $package->setAttribute('methodscovered', $methodscovered); + + $package->setAttribute('statementcount', $statementcount); + $package->setAttribute('statementscovered', $statementscovered); + + $package->setAttribute('totalcount', $methodcount + $statementcount); + $package->setAttribute('totalcovered', $methodscovered + $statementscovered); + + $totalmethodcount += $methodcount; + $totalmethodscovered += $methodscovered; + + $totalstatementcount += $statementcount; + $totalstatementscovered += $statementscovered; + } + + $this->doc->documentElement->setAttribute('methodcount', $totalmethodcount); + $this->doc->documentElement->setAttribute('methodscovered', $totalmethodscovered); + + $this->doc->documentElement->setAttribute('statementcount', $totalstatementcount); + $this->doc->documentElement->setAttribute('statementscovered', $totalstatementscovered); + + $this->doc->documentElement->setAttribute('totalcount', $totalmethodcount + $totalstatementcount); + $this->doc->documentElement->setAttribute('totalcovered', $totalmethodscovered + $totalstatementscovered); + } + + function main() + { + $this->log("Transforming coverage report"); + + $database = new PhingFile($this->project->getProperty('coverage.database')); + + $props = new Properties(); + $props->load($database); + + foreach ($props->keys() as $filename) + { + $file = unserialize($props->getProperty($filename)); + + $this->transformCoverageInformation($file['fullname'], $file['coverage']); + } + + $this->calculateStatistics(); + + $this->doc->save($this->outfile); + + foreach ($this->transformers as $transformer) + { + $transformer->setXmlDocument($this->doc); + $transformer->transform(); + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/coverage/.svn/text-base/CoverageReportTransformer.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/coverage/.svn/text-base/CoverageReportTransformer.php.svn-base new file mode 100644 index 0000000..e456ab0 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/coverage/.svn/text-base/CoverageReportTransformer.php.svn-base @@ -0,0 +1,120 @@ +. + */ + +require_once 'phing/Task.php'; +require_once 'phing/system/io/PhingFile.php'; +require_once 'phing/system/io/FileWriter.php'; +require_once 'phing/util/ExtendedFileStream.php'; + +/** + * Transform a Phing/Xdebug code coverage xml report. + * The default transformation generates an html report in framed style. + * + * @author Michiel Rook + * @version $Id$ + * @package phing.tasks.ext.coverage + * @since 2.1.0 + */ +class CoverageReportTransformer +{ + private $task = NULL; + private $styleDir = ""; + private $toDir = ""; + private $document = NULL; + + function __construct(Task $task) + { + $this->task = $task; + } + + function setStyleDir($styleDir) + { + $this->styleDir = $styleDir; + } + + function setToDir($toDir) + { + $this->toDir = $toDir; + } + + function setXmlDocument($document) + { + $this->document = $document; + } + + function transform() + { + $dir = new PhingFile($this->toDir); + + if (!$dir->exists()) + { + throw new BuildException("Directory '" . $this->toDir . "' does not exist"); + } + + $xslfile = $this->getStyleSheet(); + + $xsl = new DOMDocument(); + $xsl->load($xslfile->getAbsolutePath()); + + $proc = new XSLTProcessor(); + $proc->importStyleSheet($xsl); + + ExtendedFileStream::registerStream(); + + // no output for the framed report + // it's all done by extension... + $proc->setParameter('', 'output.dir', $dir->getAbsolutePath()); + $proc->transformToXML($this->document); + } + + private function getStyleSheet() + { + $xslname = "coverage-frames.xsl"; + + if ($this->styleDir) + { + $file = new PhingFile($this->styleDir, $xslname); + } + else + { + $path = Phing::getResourcePath("phing/etc/$xslname"); + + if ($path === NULL) + { + $path = Phing::getResourcePath("etc/$xslname"); + + if ($path === NULL) + { + throw new BuildException("Could not find $xslname in resource path"); + } + } + + $file = new PhingFile($path); + } + + if (!$file->exists()) + { + throw new BuildException("Could not find file " . $file->getPath()); + } + + return $file; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/coverage/.svn/text-base/CoverageSetupTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/coverage/.svn/text-base/CoverageSetupTask.php.svn-base new file mode 100644 index 0000000..aefae84 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/coverage/.svn/text-base/CoverageSetupTask.php.svn-base @@ -0,0 +1,158 @@ +. + */ + +require_once 'phing/Task.php'; +require_once 'phing/system/io/PhingFile.php'; +require_once 'phing/system/io/Writer.php'; +require_once 'phing/system/util/Properties.php'; +require_once 'phing/tasks/ext/coverage/CoverageMerger.php'; + +/** + * Initializes a code coverage database + * + * @author Michiel Rook + * @version $Id$ + * @package phing.tasks.ext.coverage + * @since 2.1.0 + */ +class CoverageSetupTask extends Task +{ + /** the list of filesets containing the .php filename rules */ + private $filesets = array(); + + /** the filename of the coverage database */ + private $database = "coverage.db"; + + /** the classpath to use (optional) */ + private $classpath = NULL; + + /** + * Add a new fileset containing the .php files to process + * + * @param FileSet the new fileset containing .php files + */ + function addFileSet(FileSet $fileset) + { + $this->filesets[] = $fileset; + } + + /** + * Sets the filename of the coverage database to use + * + * @param string the filename of the database + */ + function setDatabase($database) + { + $this->database = $database; + } + + function setClasspath(Path $classpath) + { + if ($this->classpath === null) + { + $this->classpath = $classpath; + } + else + { + $this->classpath->append($classpath); + } + } + + function createClasspath() + { + $this->classpath = new Path(); + return $this->classpath; + } + + /** + * Iterate over all filesets and return the filename of all files. + * + * @return array an array of (basedir, filenames) pairs + */ + private function getFilenames() + { + $files = array(); + + foreach ($this->filesets as $fileset) + { + $ds = $fileset->getDirectoryScanner($this->project); + $ds->scan(); + + $includedFiles = $ds->getIncludedFiles(); + + foreach ($includedFiles as $file) + { + $fs = new PhingFile(realpath($ds->getBaseDir()), $file); + + $files[] = array('key' => strtolower($fs->getAbsolutePath()), 'fullname' => $fs->getAbsolutePath()); + } + } + + return $files; + } + + function init() + { + if (!extension_loaded('xdebug')) + { + throw new Exception("CoverageSetupTask depends on Xdebug being installed."); + } + } + + function main() + { + $files = $this->getFilenames(); + + $this->log("Setting up coverage database for " . count($files) . " files"); + + $props = new Properties(); + + foreach ($files as $file) + { + $fullname = $file['fullname']; + $filename = $file['key']; + + $props->setProperty($filename, serialize(array('fullname' => $fullname, 'coverage' => array()))); + } + + $dbfile = new PhingFile($this->database); + + $props->store($dbfile); + + $this->project->setProperty('coverage.database', $dbfile->getAbsolutePath()); + + foreach ($files as $file) + { + $fullname = $file['fullname']; + + xdebug_start_code_coverage(XDEBUG_CC_DEAD_CODE | XDEBUG_CC_UNUSED); + + Phing::__import($fullname, $this->classpath); + + $coverage = xdebug_get_code_coverage(); + + xdebug_stop_code_coverage(); + + CoverageMerger::merge($this->project, array($coverage)); + } + } +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/coverage/CoverageMerger.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/coverage/CoverageMerger.php new file mode 100755 index 0000000..d29f28c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/coverage/CoverageMerger.php @@ -0,0 +1,137 @@ +. + */ + +require_once 'phing/system/util/Properties.php'; + +/** + * Saves coverage output of the test to a specified database + * + * @author Michiel Rook + * @version $Id: CoverageMerger.php 426 2008-10-28 19:29:49Z mrook $ + * @package phing.tasks.ext.coverage + * @since 2.1.0 + */ +class CoverageMerger +{ + private static function mergeCodeCoverage($left, $right) + { + $coverageMerged = array(); + + reset($left); + reset($right); + + while (current($left) && current($right)) + { + $linenr_left = key($left); + $linenr_right = key($right); + + if ($linenr_left < $linenr_right) + { + $coverageMerged[$linenr_left] = current($left); + + next($left); + } + else + if ($linenr_right < $linenr_left) + { + $coverageMerged[$linenr_right] = current($right); + next($right); + } + else + { + if (current($left) < 0) + { + $coverageMerged[$linenr_right] = current($right); + } + else + if (current($right) < 0) + { + $coverageMerged[$linenr_right] = current($left); + } + else + { + $coverageMerged[$linenr_right] = current($left) + current($right); + } + + next($left); + next($right); + } + } + + while (current($left)) + { + $coverageMerged[key($left)] = current($left); + next($left); + } + + while (current($right)) + { + $coverageMerged[key($right)] = current($right); + next($right); + } + + return $coverageMerged; + } + + static function merge($project, $codeCoverageInformation) + { + $database = new PhingFile($project->getProperty('coverage.database')); + + $props = new Properties(); + $props->load($database); + + $coverageTotal = $codeCoverageInformation; + + foreach ($coverageTotal as $coverage) + { + foreach ($coverage as $filename => $coverageFile) + { + $filename = strtolower($filename); + + if ($props->getProperty($filename) != null) + { + $file = unserialize($props->getProperty($filename)); + $left = $file['coverage']; + $right = $coverageFile; + if (!is_array($right)) { + $right = array_shift(PHPUnit_Util_CodeCoverage::bitStringToCodeCoverage(array($right), 1)); + } + + $coverageMerged = CoverageMerger::mergeCodeCoverage($left, $right); + + foreach ($coverageMerged as $key => $value) + { + if ($value == -2) + { + unset($coverageMerged[$key]); + } + } + + $file['coverage'] = $coverageMerged; + + $props->setProperty($filename, serialize($file)); + } + } + } + + $props->store($database); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/coverage/CoverageMergerTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/coverage/CoverageMergerTask.php new file mode 100644 index 0000000..2d6212d --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/coverage/CoverageMergerTask.php @@ -0,0 +1,92 @@ +. + */ + +require_once 'phing/Task.php'; +require_once 'phing/system/io/PhingFile.php'; +require_once 'phing/system/io/Writer.php'; +require_once 'phing/system/util/Properties.php'; +require_once 'phing/tasks/ext/coverage/CoverageMerger.php'; + +/** + * Merges code coverage snippets into a code coverage database + * + * @author Michiel Rook + * @version $Id: CoverageMergerTask.php 325 2007-12-20 15:44:58Z hans $ + * @package phing.tasks.ext.coverage + * @since 2.1.0 + */ +class CoverageMergerTask extends Task +{ + /** the list of filesets containing the .php filename rules */ + private $filesets = array(); + + /** + * Add a new fileset containing the .php files to process + * + * @param FileSet the new fileset containing .php files + */ + function addFileSet(FileSet $fileset) + { + $this->filesets[] = $fileset; + } + + /** + * Iterate over all filesets and return all the filenames. + * + * @return array an array of filenames + */ + private function getFilenames() + { + $files = array(); + + foreach ($this->filesets as $fileset) + { + $ds = $fileset->getDirectoryScanner($this->project); + $ds->scan(); + + $includedFiles = $ds->getIncludedFiles(); + + foreach ($includedFiles as $file) + { + $fs = new PhingFile(basename($ds->getBaseDir()), $file); + + $files[] = $fs->getAbsolutePath(); + } + } + + return $files; + } + + function main() + { + $files = $this->getFilenames(); + + $this->log("Merging " . count($files) . " coverage files"); + + foreach ($files as $file) + { + $coverageInformation = unserialize(file_get_contents($file)); + + CoverageMerger::merge($this->project, array($coverageInformation)); + } + } +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/coverage/CoverageReportTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/coverage/CoverageReportTask.php new file mode 100755 index 0000000..dd66b6b --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/coverage/CoverageReportTask.php @@ -0,0 +1,414 @@ +. + */ + +require_once 'phing/Task.php'; +require_once 'phing/system/io/PhingFile.php'; +require_once 'phing/system/io/Writer.php'; +require_once 'phing/system/util/Properties.php'; +require_once 'phing/tasks/ext/phpunit/PHPUnitUtil.php'; +require_once 'phing/tasks/ext/coverage/CoverageReportTransformer.php'; + +/** + * Transforms information in a code coverage database to XML + * + * @author Michiel Rook + * @version $Id: CoverageReportTask.php 426 2008-10-28 19:29:49Z mrook $ + * @package phing.tasks.ext.coverage + * @since 2.1.0 + */ +class CoverageReportTask extends Task +{ + private $outfile = "coverage.xml"; + + private $transformers = array(); + + /** the classpath to use (optional) */ + private $classpath = NULL; + + /** the path to the GeSHi library (optional) */ + private $geshipath = ""; + + /** the path to the GeSHi language files (optional) */ + private $geshilanguagespath = ""; + + function setClasspath(Path $classpath) + { + if ($this->classpath === null) + { + $this->classpath = $classpath; + } + else + { + $this->classpath->append($classpath); + } + } + + function createClasspath() + { + $this->classpath = new Path(); + return $this->classpath; + } + + function setGeshiPath($path) + { + $this->geshipath = $path; + } + + function setGeshiLanguagesPath($path) + { + $this->geshilanguagespath = $path; + } + + function __construct() + { + $this->doc = new DOMDocument(); + $this->doc->encoding = 'UTF-8'; + $this->doc->formatOutput = true; + $this->doc->appendChild($this->doc->createElement('snapshot')); + } + + function setOutfile($outfile) + { + $this->outfile = $outfile; + } + + /** + * Generate a report based on the XML created by this task + */ + function createReport() + { + $transformer = new CoverageReportTransformer($this); + $this->transformers[] = $transformer; + return $transformer; + } + + protected function getPackageElement($packageName) + { + $packages = $this->doc->documentElement->getElementsByTagName('package'); + + foreach ($packages as $package) + { + if ($package->getAttribute('name') == $packageName) + { + return $package; + } + } + + return NULL; + } + + protected function addClassToPackage($classname, $element) + { + $packageName = PHPUnitUtil::getPackageName($classname); + + $package = $this->getPackageElement($packageName); + + if ($package === NULL) + { + $package = $this->doc->createElement('package'); + $package->setAttribute('name', $packageName); + $this->doc->documentElement->appendChild($package); + } + + $package->appendChild($element); + } + + protected function stripDiv($source) + { + $openpos = strpos($source, "", $openpos); + + $line = substr($source, $closepos + 1); + + $tagclosepos = strpos($line, "
    "); + + $line = substr($line, 0, $tagclosepos); + + return $line; + } + + protected function highlightSourceFile($filename) + { + if ($this->geshipath) + { + require_once $this->geshipath . '/geshi.php'; + + $source = file_get_contents($filename); + + $geshi = new GeSHi($source, 'php', $this->geshilanguagespath); + + $geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS); + + $geshi->enable_strict_mode(true); + + $geshi->enable_classes(true); + + $geshi->set_url_for_keyword_group(3, ''); + + $html = $geshi->parse_code(); + + $lines = split("
  • |
  • ", $html); + + // skip first and last line + array_pop($lines); + array_shift($lines); + + $lines = array_filter($lines); + + $lines = array_map(array($this, 'stripDiv'), $lines); + + return $lines; + } + else + { + $lines = file($filename); + + for ($i = 0; $i < count($lines); $i++) + { + $line = $lines[$i]; + + $line = rtrim($line); + + if (function_exists('mb_convert_encoding')) + { + $lines[$i] = mb_convert_encoding($line, 'UTF-8'); + } + else + { + $lines[$i] = utf8_encode($line); + } + } + + return $lines; + } + } + + protected function transformSourceFile($filename, $coverageInformation, $classStartLine = 1) + { + $sourceElement = $this->doc->createElement('sourcefile'); + $sourceElement->setAttribute('name', basename($filename)); + + /** + * Add original/full filename to document + */ + $sourceElement->setAttribute('sourcefile', $filename); + + $filelines = $this->highlightSourceFile($filename); + + $linenr = 1; + + foreach ($filelines as $line) + { + $lineElement = $this->doc->createElement('sourceline'); + $lineElement->setAttribute('coveredcount', (isset($coverageInformation[$linenr]) ? $coverageInformation[$linenr] : '0')); + + if ($linenr == $classStartLine) + { + $lineElement->setAttribute('startclass', 1); + } + + $textnode = $this->doc->createTextNode($line); + $lineElement->appendChild($textnode); + + $sourceElement->appendChild($lineElement); + + $linenr++; + } + + return $sourceElement; + } + + protected function filterCovered($var) + { + return ($var >= 0); + } + + protected function transformCoverageInformation($filename, $coverageInformation) + { + $classes = PHPUnitUtil::getDefinedClasses($filename, $this->classpath); + + if (is_array($classes)) + { + foreach ($classes as $classname) + { + $reflection = new ReflectionClass($classname); + + $methods = $reflection->getMethods(); + + $classElement = $this->doc->createElement('class'); + $classElement->setAttribute('name', $reflection->getName()); + + $this->addClassToPackage($reflection->getName(), $classElement); + + $classStartLine = $reflection->getStartLine(); + + $methodscovered = 0; + $methodcount = 0; + + // Strange PHP5 reflection bug, classes without parent class or implemented interfaces seem to start one line off + if ($reflection->getParentClass() == NULL && count($reflection->getInterfaces()) == 0) + { + unset($coverageInformation[$classStartLine + 1]); + } + else + { + unset($coverageInformation[$classStartLine]); + } + + reset($coverageInformation); + + foreach ($methods as $method) + { + // PHP5 reflection considers methods of a parent class to be part of a subclass, we don't + if ($method->getDeclaringClass()->getName() != $reflection->getName()) + { + continue; + } + + // small fix for XDEBUG_CC_UNUSED + if (isset($coverageInformation[$method->getStartLine()])) + { + unset($coverageInformation[$method->getStartLine()]); + } + + if (isset($coverageInformation[$method->getEndLine()])) + { + unset($coverageInformation[$method->getEndLine()]); + } + + if ($method->isAbstract()) + { + continue; + } + + $linenr = key($coverageInformation); + + while ($linenr !== null && $linenr < $method->getStartLine()) + { + next($coverageInformation); + $linenr = key($coverageInformation); + } + + if (current($coverageInformation) > 0 && $method->getStartLine() <= $linenr && $linenr <= $method->getEndLine()) + { + $methodscovered++; + } + + $methodcount++; + } + + $statementcount = count($coverageInformation); + $statementscovered = count(array_filter($coverageInformation, array($this, 'filterCovered'))); + + $classElement->appendChild($this->transformSourceFile($filename, $coverageInformation, $classStartLine)); + + $classElement->setAttribute('methodcount', $methodcount); + $classElement->setAttribute('methodscovered', $methodscovered); + $classElement->setAttribute('statementcount', $statementcount); + $classElement->setAttribute('statementscovered', $statementscovered); + $classElement->setAttribute('totalcount', $methodcount + $statementcount); + $classElement->setAttribute('totalcovered', $methodscovered + $statementscovered); + } + } + } + + protected function calculateStatistics() + { + $packages = $this->doc->documentElement->getElementsByTagName('package'); + + $totalmethodcount = 0; + $totalmethodscovered = 0; + + $totalstatementcount = 0; + $totalstatementscovered = 0; + + foreach ($packages as $package) + { + $methodcount = 0; + $methodscovered = 0; + + $statementcount = 0; + $statementscovered = 0; + + $classes = $package->getElementsByTagName('class'); + + foreach ($classes as $class) + { + $methodcount += $class->getAttribute('methodcount'); + $methodscovered += $class->getAttribute('methodscovered'); + + $statementcount += $class->getAttribute('statementcount'); + $statementscovered += $class->getAttribute('statementscovered'); + } + + $package->setAttribute('methodcount', $methodcount); + $package->setAttribute('methodscovered', $methodscovered); + + $package->setAttribute('statementcount', $statementcount); + $package->setAttribute('statementscovered', $statementscovered); + + $package->setAttribute('totalcount', $methodcount + $statementcount); + $package->setAttribute('totalcovered', $methodscovered + $statementscovered); + + $totalmethodcount += $methodcount; + $totalmethodscovered += $methodscovered; + + $totalstatementcount += $statementcount; + $totalstatementscovered += $statementscovered; + } + + $this->doc->documentElement->setAttribute('methodcount', $totalmethodcount); + $this->doc->documentElement->setAttribute('methodscovered', $totalmethodscovered); + + $this->doc->documentElement->setAttribute('statementcount', $totalstatementcount); + $this->doc->documentElement->setAttribute('statementscovered', $totalstatementscovered); + + $this->doc->documentElement->setAttribute('totalcount', $totalmethodcount + $totalstatementcount); + $this->doc->documentElement->setAttribute('totalcovered', $totalmethodscovered + $totalstatementscovered); + } + + function main() + { + $this->log("Transforming coverage report"); + + $database = new PhingFile($this->project->getProperty('coverage.database')); + + $props = new Properties(); + $props->load($database); + + foreach ($props->keys() as $filename) + { + $file = unserialize($props->getProperty($filename)); + + $this->transformCoverageInformation($file['fullname'], $file['coverage']); + } + + $this->calculateStatistics(); + + $this->doc->save($this->outfile); + + foreach ($this->transformers as $transformer) + { + $transformer->setXmlDocument($this->doc); + $transformer->transform(); + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/coverage/CoverageReportTransformer.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/coverage/CoverageReportTransformer.php new file mode 100755 index 0000000..81f4dc7 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/coverage/CoverageReportTransformer.php @@ -0,0 +1,120 @@ +. + */ + +require_once 'phing/Task.php'; +require_once 'phing/system/io/PhingFile.php'; +require_once 'phing/system/io/FileWriter.php'; +require_once 'phing/util/ExtendedFileStream.php'; + +/** + * Transform a Phing/Xdebug code coverage xml report. + * The default transformation generates an html report in framed style. + * + * @author Michiel Rook + * @version $Id: CoverageReportTransformer.php 325 2007-12-20 15:44:58Z hans $ + * @package phing.tasks.ext.coverage + * @since 2.1.0 + */ +class CoverageReportTransformer +{ + private $task = NULL; + private $styleDir = ""; + private $toDir = ""; + private $document = NULL; + + function __construct(Task $task) + { + $this->task = $task; + } + + function setStyleDir($styleDir) + { + $this->styleDir = $styleDir; + } + + function setToDir($toDir) + { + $this->toDir = $toDir; + } + + function setXmlDocument($document) + { + $this->document = $document; + } + + function transform() + { + $dir = new PhingFile($this->toDir); + + if (!$dir->exists()) + { + throw new BuildException("Directory '" . $this->toDir . "' does not exist"); + } + + $xslfile = $this->getStyleSheet(); + + $xsl = new DOMDocument(); + $xsl->load($xslfile->getAbsolutePath()); + + $proc = new XSLTProcessor(); + $proc->importStyleSheet($xsl); + + ExtendedFileStream::registerStream(); + + // no output for the framed report + // it's all done by extension... + $proc->setParameter('', 'output.dir', $dir->getAbsolutePath()); + $proc->transformToXML($this->document); + } + + private function getStyleSheet() + { + $xslname = "coverage-frames.xsl"; + + if ($this->styleDir) + { + $file = new PhingFile($this->styleDir, $xslname); + } + else + { + $path = Phing::getResourcePath("phing/etc/$xslname"); + + if ($path === NULL) + { + $path = Phing::getResourcePath("etc/$xslname"); + + if ($path === NULL) + { + throw new BuildException("Could not find $xslname in resource path"); + } + } + + $file = new PhingFile($path); + } + + if (!$file->exists()) + { + throw new BuildException("Could not find file " . $file->getPath()); + } + + return $file; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/coverage/CoverageSetupTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/coverage/CoverageSetupTask.php new file mode 100755 index 0000000..9a194b5 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/coverage/CoverageSetupTask.php @@ -0,0 +1,158 @@ +. + */ + +require_once 'phing/Task.php'; +require_once 'phing/system/io/PhingFile.php'; +require_once 'phing/system/io/Writer.php'; +require_once 'phing/system/util/Properties.php'; +require_once 'phing/tasks/ext/coverage/CoverageMerger.php'; + +/** + * Initializes a code coverage database + * + * @author Michiel Rook + * @version $Id: CoverageSetupTask.php 426 2008-10-28 19:29:49Z mrook $ + * @package phing.tasks.ext.coverage + * @since 2.1.0 + */ +class CoverageSetupTask extends Task +{ + /** the list of filesets containing the .php filename rules */ + private $filesets = array(); + + /** the filename of the coverage database */ + private $database = "coverage.db"; + + /** the classpath to use (optional) */ + private $classpath = NULL; + + /** + * Add a new fileset containing the .php files to process + * + * @param FileSet the new fileset containing .php files + */ + function addFileSet(FileSet $fileset) + { + $this->filesets[] = $fileset; + } + + /** + * Sets the filename of the coverage database to use + * + * @param string the filename of the database + */ + function setDatabase($database) + { + $this->database = $database; + } + + function setClasspath(Path $classpath) + { + if ($this->classpath === null) + { + $this->classpath = $classpath; + } + else + { + $this->classpath->append($classpath); + } + } + + function createClasspath() + { + $this->classpath = new Path(); + return $this->classpath; + } + + /** + * Iterate over all filesets and return the filename of all files. + * + * @return array an array of (basedir, filenames) pairs + */ + private function getFilenames() + { + $files = array(); + + foreach ($this->filesets as $fileset) + { + $ds = $fileset->getDirectoryScanner($this->project); + $ds->scan(); + + $includedFiles = $ds->getIncludedFiles(); + + foreach ($includedFiles as $file) + { + $fs = new PhingFile(realpath($ds->getBaseDir()), $file); + + $files[] = array('key' => strtolower($fs->getAbsolutePath()), 'fullname' => $fs->getAbsolutePath()); + } + } + + return $files; + } + + function init() + { + if (!extension_loaded('xdebug')) + { + throw new Exception("CoverageSetupTask depends on Xdebug being installed."); + } + } + + function main() + { + $files = $this->getFilenames(); + + $this->log("Setting up coverage database for " . count($files) . " files"); + + $props = new Properties(); + + foreach ($files as $file) + { + $fullname = $file['fullname']; + $filename = $file['key']; + + $props->setProperty($filename, serialize(array('fullname' => $fullname, 'coverage' => array()))); + } + + $dbfile = new PhingFile($this->database); + + $props->store($dbfile); + + $this->project->setProperty('coverage.database', $dbfile->getAbsolutePath()); + + foreach ($files as $file) + { + $fullname = $file['fullname']; + + xdebug_start_code_coverage(XDEBUG_CC_DEAD_CODE | XDEBUG_CC_UNUSED); + + Phing::__import($fullname, $this->classpath); + + $coverage = xdebug_get_code_coverage(); + + xdebug_stop_code_coverage(); + + CoverageMerger::merge($this->project, array($coverage)); + } + } +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/creole/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/creole/.svn/all-wcprops new file mode 100644 index 0000000..40b9c6a --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/creole/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 55 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/creole +END +CreoleTask.php +K 25 +svn:wc:ra_dav:version-url +V 70 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/creole/CreoleTask.php +END +CreoleSQLExecTask.php +K 25 +svn:wc:ra_dav:version-url +V 77 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/creole/CreoleSQLExecTask.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/creole/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/creole/.svn/entries new file mode 100644 index 0000000..2b71e52 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/creole/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +1404 +http://phing.mirror.svn.symfony-project.com/tags/2.3.3/classes/phing/tasks/ext/creole +http://phing.mirror.svn.symfony-project.com + + + +2007-10-25T01:32:38.534061Z +266 +hans + + + + + + + + + + + + + + +c8b19502-6211-4773-8637-5aef67d587fc + +CreoleTask.php +file + + + + +2012-05-10T18:42:02.749551Z +bdf89a3c09c7a279c306ff0c0fbf8970 +2007-10-21T01:05:43.966021Z +259 +hans +has-props + + + + + + + + + + + + + + + + + + + + +6741 + +CreoleSQLExecTask.php +file + + + + +2012-05-10T18:42:02.753551Z +f25508d5a3ec0ad6f317172d146f0798 +2007-10-25T01:32:38.534061Z +266 +hans +has-props + + + + + + + + + + + + + + + + + + + + +18624 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/creole/.svn/prop-base/CreoleSQLExecTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/creole/.svn/prop-base/CreoleSQLExecTask.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/creole/.svn/prop-base/CreoleSQLExecTask.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/creole/.svn/prop-base/CreoleTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/creole/.svn/prop-base/CreoleTask.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/creole/.svn/prop-base/CreoleTask.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/creole/.svn/text-base/CreoleSQLExecTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/creole/.svn/text-base/CreoleSQLExecTask.php.svn-base new file mode 100644 index 0000000..9c60be9 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/creole/.svn/text-base/CreoleSQLExecTask.php.svn-base @@ -0,0 +1,590 @@ +. + */ + +require_once 'phing/tasks/ext/creole/CreoleTask.php'; +include_once 'phing/system/io/StringReader.php'; + +/** + * Executes a series of SQL statements on a database using Creole. + * + *

    Statements can + * either be read in from a text file using the src attribute or from + * between the enclosing SQL tags.

    + * + *

    Multiple statements can be provided, separated by semicolons (or the + * defined delimiter). Individual lines within the statements can be + * commented using either --, // or REM at the start of the line.

    + * + *

    The autocommit attribute specifies whether auto-commit should be + * turned on or off whilst executing the statements. If auto-commit is turned + * on each statement will be executed and committed. If it is turned off the + * statements will all be executed as one transaction.

    + * + *

    The onerror attribute specifies how to proceed when an error occurs + * during the execution of one of the statements. + * The possible values are: continue execution, only show the error; + * stop execution and commit transaction; + * and abort execution and transaction and fail task.

    + * + * @author Hans Lellelid (Phing) + * @author Jeff Martin (Ant) + * @author Michael McCallum (Ant) + * @author Tim Stephenson (Ant) + * @package phing.tasks.ext + * @version $Revision: 1.21 $ + */ +class CreoleSQLExecTask extends CreoleTask { + + private $goodSql = 0; + private $totalSql = 0; + + const DELIM_ROW = "row"; + const DELIM_NORMAL = "normal"; + + /** + * Database connection + */ + private $conn = null; + + /** + * files to load + */ + private $filesets = array(); + + /** + * all filterchains objects assigned to this task + */ + private $filterChains = array(); + + /** + * SQL statement + */ + private $statement = null; + + /** + * SQL input file + */ + private $srcFile = null; + + /** + * SQL input command + */ + private $sqlCommand = ""; + + /** + * SQL transactions to perform + */ + private $transactions = array(); + + /** + * SQL Statement delimiter + */ + private $delimiter = ";"; + + /** + * The delimiter type indicating whether the delimiter will + * only be recognized on a line by itself + */ + private $delimiterType = "normal"; // can't use constant just defined + + /** + * Print SQL results. + */ + private $print = false; + + /** + * Print header columns. + */ + private $showheaders = true; + + /** + * Results Output file. + */ + private $output = null; + + + /** + * Action to perform if an error is found + **/ + private $onError = "abort"; + + /** + * Encoding to use when reading SQL statements from a file + */ + private $encoding = null; + + /** + * Append to an existing file or overwrite it? + */ + private $append = false; + + /** + * Set the name of the SQL file to be run. + * Required unless statements are enclosed in the build file + */ + public function setSrc(PhingFile $srcFile) { + $this->srcFile = $srcFile; + } + + /** + * Set an inline SQL command to execute. + * NB: Properties are not expanded in this text. + */ + public function addText($sql) { + $this->sqlCommand .= $sql; + } + + /** + * Adds a set of files (nested fileset attribute). + */ + public function addFileset(FileSet $set) { + $this->filesets[] = $set; + } + + /** + * Creates a filterchain + * + * @access public + * @return object The created filterchain object + */ + function createFilterChain() { + $num = array_push($this->filterChains, new FilterChain($this->project)); + return $this->filterChains[$num-1]; + } + + /** + * Add a SQL transaction to execute + */ + public function createTransaction() { + $t = new SQLExecTransaction($this); + $this->transactions[] = $t; + return $t; + } + + /** + * Set the file encoding to use on the SQL files read in + * + * @param encoding the encoding to use on the files + */ + public function setEncoding($encoding) { + $this->encoding = $encoding; + } + + /** + * Set the statement delimiter. + * + *

    For example, set this to "go" and delimitertype to "ROW" for + * Sybase ASE or MS SQL Server.

    + * + * @param delimiter + */ + public function setDelimiter($delimiter) + { + $this->delimiter = $delimiter; + } + + /** + * Set the Delimiter type for this sql task. The delimiter type takes two + * values - normal and row. Normal means that any occurence of the delimiter + * terminate the SQL command whereas with row, only a line containing just + * the delimiter is recognized as the end of the command. + * + * @param string $delimiterType + */ + public function setDelimiterType($delimiterType) + { + $this->delimiterType = $delimiterType; + } + + /** + * Set the print flag. + * + * @param boolean $print + */ + public function setPrint($print) + { + $this->print = (boolean) $print; + } + + /** + * Print headers for result sets from the + * statements; optional, default true. + * @param boolean $showheaders + */ + public function setShowheaders($showheaders) { + $this->showheaders = (boolean) $showheaders; + } + + /** + * Set the output file; + * optional, defaults to the console. + * @param PhingFile $output + */ + public function setOutput(PhingFile $output) { + $this->output = $output; + } + + /** + * whether output should be appended to or overwrite + * an existing file. Defaults to false. + * @param $append + */ + public function setAppend($append) { + $this->append = (boolean) $append; + } + + + /** + * Action to perform when statement fails: continue, stop, or abort + * optional; default "abort" + */ + public function setOnerror($action) { + $this->onError = $action; + } + + /** + * Load the sql file and then execute it + * @throws BuildException + */ + public function main() { + + $savedTransaction = array(); + for($i=0,$size=count($this->transactions); $i < $size; $i++) { + $savedTransaction[] = clone $this->transactions[$i]; + } + + $savedSqlCommand = $this->sqlCommand; + + $this->sqlCommand = trim($this->sqlCommand); + + try { + if ($this->srcFile === null && $this->sqlCommand === "" + && empty($this->filesets)) { + if (count($this->transactions) === 0) { + throw new BuildException("Source file or fileset, " + . "transactions or sql statement " + . "must be set!", $this->location); + } + } + + if ($this->srcFile !== null && !$this->srcFile->exists()) { + throw new BuildException("Source file does not exist!", $this->location); + } + + // deal with the filesets + for ($i = 0,$size=count($this->filesets); $i < $size; $i++) { + $fs = $this->filesets[$i]; + $ds = $fs->getDirectoryScanner($this->project); + $srcDir = $fs->getDir($this->project); + + $srcFiles = $ds->getIncludedFiles(); + + // Make a transaction for each file + for ($j=0, $size=count($srcFiles); $j < $size; $j++) { + $t = $this->createTransaction(); + $t->setSrc(new PhingFile($srcDir, $srcFiles[$j])); + } + } + + // Make a transaction group for the outer command + $t = $this->createTransaction(); + if ($this->srcFile) $t->setSrc($this->srcFile); + $t->addText($this->sqlCommand); + $this->conn = $this->getConnection(); + + try { + + $this->statement = $this->conn->createStatement(); + + $out = null; + + try { + + if ($this->output !== null) { + $this->log("Opening output file " . $this->output, Project::MSG_VERBOSE); + $out = new BufferedWriter(new FileWriter($this->output->getAbsolutePath(), $this->append)); + } + + // Process all transactions + for ($i=0,$size=count($this->transactions); $i < $size; $i++) { + $this->transactions[$i]->runTransaction($out); + if (!$this->isAutocommit()) { + $this->log("Commiting transaction", Project::MSG_VERBOSE); + $this->conn->commit(); + } + } + if ($out) $out->close(); + } catch (Exception $e) { + if ($out) $out->close(); + throw $e; + } + } catch (IOException $e) { + if (!$this->isAutocommit() && $this->conn !== null && $this->onError == "abort") { + try { + $this->conn->rollback(); + } catch (SQLException $ex) {} + } + throw new BuildException($e->getMessage(), $this->location); + } catch (SQLException $e){ + if (!$this->isAutocommit() && $this->conn !== null && $this->onError == "abort") { + try { + $this->conn->rollback(); + } catch (SQLException $ex) {} + } + throw new BuildException($e->getMessage(), $this->location); + } + + $this->log($this->goodSql . " of " . $this->totalSql . + " SQL statements executed successfully"); + } catch (Exception $e) { + $this->transactions = $savedTransaction; + $this->sqlCommand = $savedSqlCommand; + throw $e; + } + // finally { + $this->transactions = $savedTransaction; + $this->sqlCommand = $savedSqlCommand; + + } + + + /** + * read in lines and execute them + * @throws SQLException, IOException + */ + public function runStatements(Reader $reader, $out = null) { + $sql = ""; + $line = ""; + + $buffer = ''; + + if ((is_array($this->filterChains)) && (!empty($this->filterChains))) { + $in = FileUtils::getChainedReader(new BufferedReader($reader), $this->filterChains, $this->getProject()); + while(-1 !== ($read = $in->read())) { // -1 indicates EOF + $buffer .= $read; + } + $lines = explode("\n", $buffer); + } else { + $in = new BufferedReader($reader); + + while (($line = $in->readLine()) !== null) { + $lines[] = $line; + } + } + + try { + foreach ($lines as $line) { + $line = trim($line); + $line = ProjectConfigurator::replaceProperties($this->project, $line, + $this->project->getProperties()); + + if (StringHelper::startsWith("//", $line) || + StringHelper::startsWith("--", $line) || + StringHelper::startsWith("#", $line)) { + continue; + } + + if (strlen($line) > 4 + && strtoupper(substr($line,0, 4)) == "REM ") { + continue; + } + + $sql .= " " . $line; + $sql = trim($sql); + + // SQL defines "--" as a comment to EOL + // and in Oracle it may contain a hint + // so we cannot just remove it, instead we must end it + if (strpos($line, "--") !== false) { + $sql .= "\n"; + } + + if ($this->delimiterType == self::DELIM_NORMAL + && StringHelper::endsWith($this->delimiter, $sql) + || $this->delimiterType == self::DELIM_ROW + && $line == $this->delimiter) { + $this->log("SQL: " . $sql, Project::MSG_VERBOSE); + $this->execSQL(StringHelper::substring($sql, 0, strlen($sql) - strlen($this->delimiter)), $out); + $sql = ""; + } + } + + // Catch any statements not followed by ; + if ($sql !== "") { + $this->execSQL($sql, $out); + } + } catch (SQLException $e) { + throw new BuildException("Error running statements", $e); + } + } + + + /** + * Exec the sql statement. + * @throws SQLException + */ + protected function execSQL($sql, $out = null) { + // Check and ignore empty statements + if (trim($sql) == "") { + return; + } + + try { + $this->totalSql++; + if (!$this->statement->execute($sql)) { + $this->log($this->statement->getUpdateCount() . " rows affected", Project::MSG_VERBOSE); + } else { + if ($this->print) { + $this->printResults($out); + } + } + + $this->goodSql++; + + } catch (SQLException $e) { + $this->log("Failed to execute: " . $sql, Project::MSG_ERR); + if ($this->onError != "continue") { + throw new BuildException("Failed to execute SQL", $e); + } + $this->log($e->getMessage(), Project::MSG_ERR); + } + } + + /** + * print any results in the statement. + * @throw SQLException + */ + protected function printResults($out = null) { + + $rs = null; + do { + $rs = $this->statement->getResultSet(); + + if ($rs !== null) { + + $this->log("Processing new result set.", Project::MSG_VERBOSE); + + $line = ""; + + $colsprinted = false; + + while ($rs->next()) { + $fields = $rs->getRow(); + + if (!$colsprinted && $this->showheaders) { + $first = true; + foreach($fields as $fieldName => $ignore) { + if ($first) $first = false; else $line .= ","; + $line .= $fieldName; + } + if ($out !== null) { + $out->write($line); + $out->newLine(); + } else { + print($line.PHP_EOL); + } + $line = ""; + $colsprinted = true; + } // if show headers + + $first = true; + foreach($fields as $columnValue) { + + if ($columnValue != null) { + $columnValue = trim($columnValue); + } + + if ($first) { + $first = false; + } else { + $line .= ","; + } + $line .= $columnValue; + } + + if ($out !== null) { + $out->write($line); + $out->newLine(); + } else { + print($line . PHP_EOL); + } + $line = ""; + + } // while rs->next() + } + } while ($this->statement->getMoreResults()); + print(PHP_EOL); + if ($out !== null) $out->newLine(); + } +} + + +/** + * "Inner" class that contains the definition of a new transaction element. + * Transactions allow several files or blocks of statements + * to be executed using the same JDBC connection and commit + * operation in between. + */ +class SQLExecTransaction { + + private $tSrcFile = null; + private $tSqlCommand = ""; + private $parent; + + function __construct($parent) + { + // Parent is required so that we can log things ... + $this->parent = $parent; + } + + public function setSrc(PhingFile $src) + { + $this->tSrcFile = $src; + } + + public function addText($sql) + { + $this->tSqlCommand .= $sql; + } + + /** + * @throws IOException, SQLException + */ + public function runTransaction($out = null) + { + if (!empty($this->tSqlCommand)) { + $this->parent->log("Executing commands", Project::MSG_INFO); + $this->parent->runStatements(new StringReader($this->tSqlCommand), $out); + } + + if ($this->tSrcFile !== null) { + $this->parent->log("Executing file: " . $this->tSrcFile->getAbsolutePath(), + Project::MSG_INFO); + + $reader = new FileReader($this->tSrcFile); + + $this->parent->runStatements($reader, $out); + $reader->close(); + } + } +} + + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/creole/.svn/text-base/CreoleTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/creole/.svn/text-base/CreoleTask.php.svn-base new file mode 100644 index 0000000..9f15adc --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/creole/.svn/text-base/CreoleTask.php.svn-base @@ -0,0 +1,242 @@ +. + */ + +require_once 'phing/Task.php'; +include_once 'phing/types/Reference.php'; + +/** + * Handles Creole configuration needed by SQL type tasks. + * + * @author Hans Lellelid (Phing) + * @author Nick Chalko (Ant) + * @author Jeff Martin (Ant) + * @author Michael McCallum (Ant) + * @author Tim Stephenson (Ant) + * @version $Revision: 1.13 $ + * @package phing.tasks.system + */ +abstract class CreoleTask extends Task { + + /** + * Used for caching loaders / driver. This is to avoid + * getting an OutOfMemoryError when calling this task + * multiple times in a row. + * + * NOT IMPLEMENTED YET + */ + private static $loaderMap = array(); + + private $caching = true; + + /** + * Autocommit flag. Default value is false + */ + private $autocommit = false; + + /** + * [optional] Classpath to Creole driver to use. + * @param string + */ + private $driver; + + /** + * DB url. + */ + private $url; + + /** + * User name. + */ + private $userId; + + /** + * Password + */ + private $password; + + /** + * RDBMS Product needed for this SQL. + **/ + private $rdbms; + + /** + * Initialize CreoleTask. + * This method includes any necessary Creole libraries and triggers + * appropriate error if they cannot be found. This is not done in header + * because we may want this class to be loaded w/o triggering an error. + */ + function init() { + include_once 'creole/Creole.php'; + if (!class_exists('Creole')) { + throw new Exception("Creole task depends on Creole classes being on include_path. (i.e. include of 'creole/Creole.php' failed.)"); + } + } + + /** + * Caching loaders / driver. This is to avoid + * getting an OutOfMemoryError when calling this task + * multiple times in a row; default: true + * @param $enable + */ + public function setCaching($enable) { + $this->caching = $enable; + } + + /** + * Sets the database connection URL; required. + * @param url The url to set + */ + public function setUrl($url) { + $this->url = $url; + } + + /** + * Set the Creole driver to be used. + * + * @param string $driver driver class name + */ + public function setDriver($driver) + { + $this->driver = $driver; + } + + /** + * Sets the password; required. + * @param password The password to set + */ + public function setPassword($password) { + $this->password = $password; + } + + /** + * Auto commit flag for database connection; + * optional, default false. + * @param autocommit The autocommit to set + */ + public function setAutocommit($autocommit) { + $this->autocommit = $autocommit; + } + + /** + * Sets the version string, execute task only if + * rdbms version match; optional. + * @param version The version to set + */ + public function setVersion($version) { + $this->version = $version; + } + + protected function getLoaderMap() { + return self::$loaderMap; + } + + + /** + * Creates a new Connection as using the driver, url, userid and password specified. + * The calling method is responsible for closing the connection. + * @return Connection the newly created connection. + * @throws BuildException if the UserId/Password/Url is not set or there is no suitable driver or the driver fails to load. + */ + protected function getConnection() { + + if ($this->url === null) { + throw new BuildException("Url attribute must be set!", $this->location); + } + + try { + + $this->log("Connecting to " . $this->getUrl(), Project::MSG_VERBOSE); + $info = new Properties(); + + $dsn = Creole::parseDSN($this->url); + + if (!isset($dsn["username"]) && $this->userId === null) { + throw new BuildException("Username must be in URL or userid attribute must be set.", $this->location); + } + + if ($this->userId) { + $dsn["username"] = $this->getUserId(); + } + + if ($this->password) { + $dsn["password"] = $this->getPassword(); + } + + if ($this->driver) { + Creole::registerDriver($dsn['phptype'], $this->driver); + } + + $conn = Creole::getConnection($dsn); + $conn->setAutoCommit($this->autocommit); + return $conn; + + } catch (SQLException $e) { + throw new BuildException($e->getMessage(), $this->location); + } + + } + + public function isCaching($value) { + $this->caching = $value; + } + + /** + * Gets the autocommit. + * @return Returns a boolean + */ + public function isAutocommit() { + return $this->autocommit; + } + + /** + * Gets the url. + * @return Returns a String + */ + public function getUrl() { + return $this->url; + } + + /** + * Gets the userId. + * @return Returns a String + */ + public function getUserId() { + return $this->userId; + } + + /** + * Set the user name for the connection; required. + * @param userId The userId to set + */ + public function setUserid($userId) { + $this->userId = $userId; + } + + /** + * Gets the password. + * @return Returns a String + */ + public function getPassword() { + return $this->password; + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/creole/CreoleSQLExecTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/creole/CreoleSQLExecTask.php new file mode 100644 index 0000000..92a157b --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/creole/CreoleSQLExecTask.php @@ -0,0 +1,590 @@ +. + */ + +require_once 'phing/tasks/ext/creole/CreoleTask.php'; +include_once 'phing/system/io/StringReader.php'; + +/** + * Executes a series of SQL statements on a database using Creole. + * + *

    Statements can + * either be read in from a text file using the src attribute or from + * between the enclosing SQL tags.

    + * + *

    Multiple statements can be provided, separated by semicolons (or the + * defined delimiter). Individual lines within the statements can be + * commented using either --, // or REM at the start of the line.

    + * + *

    The autocommit attribute specifies whether auto-commit should be + * turned on or off whilst executing the statements. If auto-commit is turned + * on each statement will be executed and committed. If it is turned off the + * statements will all be executed as one transaction.

    + * + *

    The onerror attribute specifies how to proceed when an error occurs + * during the execution of one of the statements. + * The possible values are: continue execution, only show the error; + * stop execution and commit transaction; + * and abort execution and transaction and fail task.

    + * + * @author Hans Lellelid (Phing) + * @author Jeff Martin (Ant) + * @author Michael McCallum (Ant) + * @author Tim Stephenson (Ant) + * @package phing.tasks.ext + * @version $Revision: 1.21 $ + */ +class CreoleSQLExecTask extends CreoleTask { + + private $goodSql = 0; + private $totalSql = 0; + + const DELIM_ROW = "row"; + const DELIM_NORMAL = "normal"; + + /** + * Database connection + */ + private $conn = null; + + /** + * files to load + */ + private $filesets = array(); + + /** + * all filterchains objects assigned to this task + */ + private $filterChains = array(); + + /** + * SQL statement + */ + private $statement = null; + + /** + * SQL input file + */ + private $srcFile = null; + + /** + * SQL input command + */ + private $sqlCommand = ""; + + /** + * SQL transactions to perform + */ + private $transactions = array(); + + /** + * SQL Statement delimiter + */ + private $delimiter = ";"; + + /** + * The delimiter type indicating whether the delimiter will + * only be recognized on a line by itself + */ + private $delimiterType = "normal"; // can't use constant just defined + + /** + * Print SQL results. + */ + private $print = false; + + /** + * Print header columns. + */ + private $showheaders = true; + + /** + * Results Output file. + */ + private $output = null; + + + /** + * Action to perform if an error is found + **/ + private $onError = "abort"; + + /** + * Encoding to use when reading SQL statements from a file + */ + private $encoding = null; + + /** + * Append to an existing file or overwrite it? + */ + private $append = false; + + /** + * Set the name of the SQL file to be run. + * Required unless statements are enclosed in the build file + */ + public function setSrc(PhingFile $srcFile) { + $this->srcFile = $srcFile; + } + + /** + * Set an inline SQL command to execute. + * NB: Properties are not expanded in this text. + */ + public function addText($sql) { + $this->sqlCommand .= $sql; + } + + /** + * Adds a set of files (nested fileset attribute). + */ + public function addFileset(FileSet $set) { + $this->filesets[] = $set; + } + + /** + * Creates a filterchain + * + * @access public + * @return object The created filterchain object + */ + function createFilterChain() { + $num = array_push($this->filterChains, new FilterChain($this->project)); + return $this->filterChains[$num-1]; + } + + /** + * Add a SQL transaction to execute + */ + public function createTransaction() { + $t = new SQLExecTransaction($this); + $this->transactions[] = $t; + return $t; + } + + /** + * Set the file encoding to use on the SQL files read in + * + * @param encoding the encoding to use on the files + */ + public function setEncoding($encoding) { + $this->encoding = $encoding; + } + + /** + * Set the statement delimiter. + * + *

    For example, set this to "go" and delimitertype to "ROW" for + * Sybase ASE or MS SQL Server.

    + * + * @param delimiter + */ + public function setDelimiter($delimiter) + { + $this->delimiter = $delimiter; + } + + /** + * Set the Delimiter type for this sql task. The delimiter type takes two + * values - normal and row. Normal means that any occurence of the delimiter + * terminate the SQL command whereas with row, only a line containing just + * the delimiter is recognized as the end of the command. + * + * @param string $delimiterType + */ + public function setDelimiterType($delimiterType) + { + $this->delimiterType = $delimiterType; + } + + /** + * Set the print flag. + * + * @param boolean $print + */ + public function setPrint($print) + { + $this->print = (boolean) $print; + } + + /** + * Print headers for result sets from the + * statements; optional, default true. + * @param boolean $showheaders + */ + public function setShowheaders($showheaders) { + $this->showheaders = (boolean) $showheaders; + } + + /** + * Set the output file; + * optional, defaults to the console. + * @param PhingFile $output + */ + public function setOutput(PhingFile $output) { + $this->output = $output; + } + + /** + * whether output should be appended to or overwrite + * an existing file. Defaults to false. + * @param $append + */ + public function setAppend($append) { + $this->append = (boolean) $append; + } + + + /** + * Action to perform when statement fails: continue, stop, or abort + * optional; default "abort" + */ + public function setOnerror($action) { + $this->onError = $action; + } + + /** + * Load the sql file and then execute it + * @throws BuildException + */ + public function main() { + + $savedTransaction = array(); + for($i=0,$size=count($this->transactions); $i < $size; $i++) { + $savedTransaction[] = clone $this->transactions[$i]; + } + + $savedSqlCommand = $this->sqlCommand; + + $this->sqlCommand = trim($this->sqlCommand); + + try { + if ($this->srcFile === null && $this->sqlCommand === "" + && empty($this->filesets)) { + if (count($this->transactions) === 0) { + throw new BuildException("Source file or fileset, " + . "transactions or sql statement " + . "must be set!", $this->location); + } + } + + if ($this->srcFile !== null && !$this->srcFile->exists()) { + throw new BuildException("Source file does not exist!", $this->location); + } + + // deal with the filesets + for ($i = 0,$size=count($this->filesets); $i < $size; $i++) { + $fs = $this->filesets[$i]; + $ds = $fs->getDirectoryScanner($this->project); + $srcDir = $fs->getDir($this->project); + + $srcFiles = $ds->getIncludedFiles(); + + // Make a transaction for each file + for ($j=0, $size=count($srcFiles); $j < $size; $j++) { + $t = $this->createTransaction(); + $t->setSrc(new PhingFile($srcDir, $srcFiles[$j])); + } + } + + // Make a transaction group for the outer command + $t = $this->createTransaction(); + if ($this->srcFile) $t->setSrc($this->srcFile); + $t->addText($this->sqlCommand); + $this->conn = $this->getConnection(); + + try { + + $this->statement = $this->conn->createStatement(); + + $out = null; + + try { + + if ($this->output !== null) { + $this->log("Opening output file " . $this->output, Project::MSG_VERBOSE); + $out = new BufferedWriter(new FileWriter($this->output->getAbsolutePath(), $this->append)); + } + + // Process all transactions + for ($i=0,$size=count($this->transactions); $i < $size; $i++) { + $this->transactions[$i]->runTransaction($out); + if (!$this->isAutocommit()) { + $this->log("Commiting transaction", Project::MSG_VERBOSE); + $this->conn->commit(); + } + } + if ($out) $out->close(); + } catch (Exception $e) { + if ($out) $out->close(); + throw $e; + } + } catch (IOException $e) { + if (!$this->isAutocommit() && $this->conn !== null && $this->onError == "abort") { + try { + $this->conn->rollback(); + } catch (SQLException $ex) {} + } + throw new BuildException($e->getMessage(), $this->location); + } catch (SQLException $e){ + if (!$this->isAutocommit() && $this->conn !== null && $this->onError == "abort") { + try { + $this->conn->rollback(); + } catch (SQLException $ex) {} + } + throw new BuildException($e->getMessage(), $this->location); + } + + $this->log($this->goodSql . " of " . $this->totalSql . + " SQL statements executed successfully"); + } catch (Exception $e) { + $this->transactions = $savedTransaction; + $this->sqlCommand = $savedSqlCommand; + throw $e; + } + // finally { + $this->transactions = $savedTransaction; + $this->sqlCommand = $savedSqlCommand; + + } + + + /** + * read in lines and execute them + * @throws SQLException, IOException + */ + public function runStatements(Reader $reader, $out = null) { + $sql = ""; + $line = ""; + + $buffer = ''; + + if ((is_array($this->filterChains)) && (!empty($this->filterChains))) { + $in = FileUtils::getChainedReader(new BufferedReader($reader), $this->filterChains, $this->getProject()); + while(-1 !== ($read = $in->read())) { // -1 indicates EOF + $buffer .= $read; + } + $lines = explode("\n", $buffer); + } else { + $in = new BufferedReader($reader); + + while (($line = $in->readLine()) !== null) { + $lines[] = $line; + } + } + + try { + foreach ($lines as $line) { + $line = trim($line); + $line = ProjectConfigurator::replaceProperties($this->project, $line, + $this->project->getProperties()); + + if (StringHelper::startsWith("//", $line) || + StringHelper::startsWith("--", $line) || + StringHelper::startsWith("#", $line)) { + continue; + } + + if (strlen($line) > 4 + && strtoupper(substr($line,0, 4)) == "REM ") { + continue; + } + + $sql .= " " . $line; + $sql = trim($sql); + + // SQL defines "--" as a comment to EOL + // and in Oracle it may contain a hint + // so we cannot just remove it, instead we must end it + if (strpos($line, "--") !== false) { + $sql .= "\n"; + } + + if ($this->delimiterType == self::DELIM_NORMAL + && StringHelper::endsWith($this->delimiter, $sql) + || $this->delimiterType == self::DELIM_ROW + && $line == $this->delimiter) { + $this->log("SQL: " . $sql, Project::MSG_VERBOSE); + $this->execSQL(StringHelper::substring($sql, 0, strlen($sql) - strlen($this->delimiter)), $out); + $sql = ""; + } + } + + // Catch any statements not followed by ; + if ($sql !== "") { + $this->execSQL($sql, $out); + } + } catch (SQLException $e) { + throw new BuildException("Error running statements", $e); + } + } + + + /** + * Exec the sql statement. + * @throws SQLException + */ + protected function execSQL($sql, $out = null) { + // Check and ignore empty statements + if (trim($sql) == "") { + return; + } + + try { + $this->totalSql++; + if (!$this->statement->execute($sql)) { + $this->log($this->statement->getUpdateCount() . " rows affected", Project::MSG_VERBOSE); + } else { + if ($this->print) { + $this->printResults($out); + } + } + + $this->goodSql++; + + } catch (SQLException $e) { + $this->log("Failed to execute: " . $sql, Project::MSG_ERR); + if ($this->onError != "continue") { + throw new BuildException("Failed to execute SQL", $e); + } + $this->log($e->getMessage(), Project::MSG_ERR); + } + } + + /** + * print any results in the statement. + * @throw SQLException + */ + protected function printResults($out = null) { + + $rs = null; + do { + $rs = $this->statement->getResultSet(); + + if ($rs !== null) { + + $this->log("Processing new result set.", Project::MSG_VERBOSE); + + $line = ""; + + $colsprinted = false; + + while ($rs->next()) { + $fields = $rs->getRow(); + + if (!$colsprinted && $this->showheaders) { + $first = true; + foreach($fields as $fieldName => $ignore) { + if ($first) $first = false; else $line .= ","; + $line .= $fieldName; + } + if ($out !== null) { + $out->write($line); + $out->newLine(); + } else { + print($line.PHP_EOL); + } + $line = ""; + $colsprinted = true; + } // if show headers + + $first = true; + foreach($fields as $columnValue) { + + if ($columnValue != null) { + $columnValue = trim($columnValue); + } + + if ($first) { + $first = false; + } else { + $line .= ","; + } + $line .= $columnValue; + } + + if ($out !== null) { + $out->write($line); + $out->newLine(); + } else { + print($line . PHP_EOL); + } + $line = ""; + + } // while rs->next() + } + } while ($this->statement->getMoreResults()); + print(PHP_EOL); + if ($out !== null) $out->newLine(); + } +} + + +/** + * "Inner" class that contains the definition of a new transaction element. + * Transactions allow several files or blocks of statements + * to be executed using the same JDBC connection and commit + * operation in between. + */ +class SQLExecTransaction { + + private $tSrcFile = null; + private $tSqlCommand = ""; + private $parent; + + function __construct($parent) + { + // Parent is required so that we can log things ... + $this->parent = $parent; + } + + public function setSrc(PhingFile $src) + { + $this->tSrcFile = $src; + } + + public function addText($sql) + { + $this->tSqlCommand .= $sql; + } + + /** + * @throws IOException, SQLException + */ + public function runTransaction($out = null) + { + if (!empty($this->tSqlCommand)) { + $this->parent->log("Executing commands", Project::MSG_INFO); + $this->parent->runStatements(new StringReader($this->tSqlCommand), $out); + } + + if ($this->tSrcFile !== null) { + $this->parent->log("Executing file: " . $this->tSrcFile->getAbsolutePath(), + Project::MSG_INFO); + + $reader = new FileReader($this->tSrcFile); + + $this->parent->runStatements($reader, $out); + $reader->close(); + } + } +} + + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/creole/CreoleTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/creole/CreoleTask.php new file mode 100644 index 0000000..1aa4d6d --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/creole/CreoleTask.php @@ -0,0 +1,242 @@ +. + */ + +require_once 'phing/Task.php'; +include_once 'phing/types/Reference.php'; + +/** + * Handles Creole configuration needed by SQL type tasks. + * + * @author Hans Lellelid (Phing) + * @author Nick Chalko (Ant) + * @author Jeff Martin (Ant) + * @author Michael McCallum (Ant) + * @author Tim Stephenson (Ant) + * @version $Revision: 1.13 $ + * @package phing.tasks.system + */ +abstract class CreoleTask extends Task { + + /** + * Used for caching loaders / driver. This is to avoid + * getting an OutOfMemoryError when calling this task + * multiple times in a row. + * + * NOT IMPLEMENTED YET + */ + private static $loaderMap = array(); + + private $caching = true; + + /** + * Autocommit flag. Default value is false + */ + private $autocommit = false; + + /** + * [optional] Classpath to Creole driver to use. + * @param string + */ + private $driver; + + /** + * DB url. + */ + private $url; + + /** + * User name. + */ + private $userId; + + /** + * Password + */ + private $password; + + /** + * RDBMS Product needed for this SQL. + **/ + private $rdbms; + + /** + * Initialize CreoleTask. + * This method includes any necessary Creole libraries and triggers + * appropriate error if they cannot be found. This is not done in header + * because we may want this class to be loaded w/o triggering an error. + */ + function init() { + include_once 'creole/Creole.php'; + if (!class_exists('Creole')) { + throw new Exception("Creole task depends on Creole classes being on include_path. (i.e. include of 'creole/Creole.php' failed.)"); + } + } + + /** + * Caching loaders / driver. This is to avoid + * getting an OutOfMemoryError when calling this task + * multiple times in a row; default: true + * @param $enable + */ + public function setCaching($enable) { + $this->caching = $enable; + } + + /** + * Sets the database connection URL; required. + * @param url The url to set + */ + public function setUrl($url) { + $this->url = $url; + } + + /** + * Set the Creole driver to be used. + * + * @param string $driver driver class name + */ + public function setDriver($driver) + { + $this->driver = $driver; + } + + /** + * Sets the password; required. + * @param password The password to set + */ + public function setPassword($password) { + $this->password = $password; + } + + /** + * Auto commit flag for database connection; + * optional, default false. + * @param autocommit The autocommit to set + */ + public function setAutocommit($autocommit) { + $this->autocommit = $autocommit; + } + + /** + * Sets the version string, execute task only if + * rdbms version match; optional. + * @param version The version to set + */ + public function setVersion($version) { + $this->version = $version; + } + + protected function getLoaderMap() { + return self::$loaderMap; + } + + + /** + * Creates a new Connection as using the driver, url, userid and password specified. + * The calling method is responsible for closing the connection. + * @return Connection the newly created connection. + * @throws BuildException if the UserId/Password/Url is not set or there is no suitable driver or the driver fails to load. + */ + protected function getConnection() { + + if ($this->url === null) { + throw new BuildException("Url attribute must be set!", $this->location); + } + + try { + + $this->log("Connecting to " . $this->getUrl(), Project::MSG_VERBOSE); + $info = new Properties(); + + $dsn = Creole::parseDSN($this->url); + + if (!isset($dsn["username"]) && $this->userId === null) { + throw new BuildException("Username must be in URL or userid attribute must be set.", $this->location); + } + + if ($this->userId) { + $dsn["username"] = $this->getUserId(); + } + + if ($this->password) { + $dsn["password"] = $this->getPassword(); + } + + if ($this->driver) { + Creole::registerDriver($dsn['phptype'], $this->driver); + } + + $conn = Creole::getConnection($dsn); + $conn->setAutoCommit($this->autocommit); + return $conn; + + } catch (SQLException $e) { + throw new BuildException($e->getMessage(), $this->location); + } + + } + + public function isCaching($value) { + $this->caching = $value; + } + + /** + * Gets the autocommit. + * @return Returns a boolean + */ + public function isAutocommit() { + return $this->autocommit; + } + + /** + * Gets the url. + * @return Returns a String + */ + public function getUrl() { + return $this->url; + } + + /** + * Gets the userId. + * @return Returns a String + */ + public function getUserId() { + return $this->userId; + } + + /** + * Set the user name for the connection; required. + * @param userId The userId to set + */ + public function setUserid($userId) { + $this->userId = $userId; + } + + /** + * Gets the password. + * @return Returns a String + */ + public function getPassword() { + return $this->password; + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/.svn/all-wcprops new file mode 100644 index 0000000..a1e8ba9 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/.svn/all-wcprops @@ -0,0 +1,41 @@ +K 25 +svn:wc:ra_dav:version-url +V 57 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/dbdeploy +END +DbmsSyntax.php +K 25 +svn:wc:ra_dav:version-url +V 72 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/dbdeploy/DbmsSyntax.php +END +DbmsSyntaxMsSql.php +K 25 +svn:wc:ra_dav:version-url +V 77 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/dbdeploy/DbmsSyntaxMsSql.php +END +DbmsSyntaxSQLite.php +K 25 +svn:wc:ra_dav:version-url +V 78 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/dbdeploy/DbmsSyntaxSQLite.php +END +DbmsSyntaxMysql.php +K 25 +svn:wc:ra_dav:version-url +V 77 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/dbdeploy/DbmsSyntaxMysql.php +END +DbmsSyntaxFactory.php +K 25 +svn:wc:ra_dav:version-url +V 79 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/dbdeploy/DbmsSyntaxFactory.php +END +DbDeployTask.php +K 25 +svn:wc:ra_dav:version-url +V 74 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/dbdeploy/DbDeployTask.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/.svn/entries new file mode 100644 index 0000000..781ea68 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/.svn/entries @@ -0,0 +1,232 @@ +10 + +dir +1404 +http://phing.mirror.svn.symfony-project.com/tags/2.3.3/classes/phing/tasks/ext/dbdeploy +http://phing.mirror.svn.symfony-project.com + + + +2008-10-16T12:36:24.813795Z +404 +mrook + + + + + + + + + + + + + + +c8b19502-6211-4773-8637-5aef67d587fc + +DbmsSyntax.php +file + + + + +2012-05-10T18:42:02.485551Z +b533eb4a6a7ab924b1b1e549f8ca52c7 +2007-12-20T15:44:58.929962Z +325 +hans + + + + + + + + + + + + + + + + + + + + + +1336 + +DbmsSyntaxMsSql.php +file + + + + +2012-05-10T18:42:02.485551Z +8a2f6d971cdc27b9d7960d3407255031 +2007-12-20T15:44:58.929962Z +325 +hans + + + + + + + + + + + + + + + + + + + + + +1395 + +DbmsSyntaxSQLite.php +file + + + + +2012-05-10T18:42:02.485551Z +d80d3b24bde3bb121de1fa0fa771a717 +2007-12-20T15:44:58.929962Z +325 +hans + + + + + + + + + + + + + + + + + + + + + +1382 + +DbmsSyntaxMysql.php +file + + + + +2012-05-10T18:42:02.485551Z +471216224566f3023d05c50226420ff6 +2008-10-16T00:15:56.260498Z +398 +hans + + + + + + + + + + + + + + + + + + + + + +1366 + +DbmsSyntaxFactory.php +file + + + + +2012-05-10T18:42:02.485551Z +f0ce6b2abc1c416a895b742b9ec12105 +2007-12-20T15:44:58.929962Z +325 +hans + + + + + + + + + + + + + + + + + + + + + +1967 + +DbDeployTask.php +file + + + + +2012-05-10T18:42:02.550727Z +8f75a8702469253c0c936f0686574951 +2008-10-16T12:36:24.813795Z +404 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +7153 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/.svn/prop-base/DbDeployTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/.svn/prop-base/DbDeployTask.php.svn-base new file mode 100644 index 0000000..869ac71 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/.svn/prop-base/DbDeployTask.php.svn-base @@ -0,0 +1,5 @@ +K 14 +svn:executable +V 1 +* +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/.svn/text-base/DbDeployTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/.svn/text-base/DbDeployTask.php.svn-base new file mode 100644 index 0000000..a1ec9e5 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/.svn/text-base/DbDeployTask.php.svn-base @@ -0,0 +1,192 @@ +. + */ + +require_once 'phing/Task.php'; +require_once 'phing/tasks/ext/dbdeploy/DbmsSyntaxFactory.php'; + + +/** + * Generate SQL script for db using dbdeploy schema version table and delta scripts + * + * + * + * @author Luke Crouch at SourceForge (http://sourceforge.net) + * @version $Revision: 1.1 $ + * @package phing.tasks.ext.dbdeploy + */ + +class DbDeployTask extends Task { + + public static $TABLE_NAME = 'changelog'; + + protected $url; + protected $userid; + protected $password; + protected $dir; + protected $outputFile = 'dbdeploy_deploy.sql'; + protected $undoOutputFile = 'dbdeploy_undo.sql'; + protected $deltaSet = 'Main'; + protected $lastChangeToApply = 999; + protected $dbmsSyntax = null; + + function main() { + try{ + // get correct DbmsSyntax object + $dbms = substr($this->url, 0, strpos($this->url, ':')); + $dbmsSyntaxFactory = new DbmsSyntaxFactory($dbms); + $this->dbmsSyntax = $dbmsSyntaxFactory->getDbmsSyntax(); + + // open file handles for output + $outputFileHandle = fopen($this->outputFile, "w+"); + $undoOutputFileHandle = fopen($this->undoOutputFile, "w+"); + + // figure out which revisions are in the db already + $this->appliedChangeNumbers = $this->getAppliedChangeNumbers(); + $this->log('Current db revision: ' . $this->getLastChangeAppliedInDb()); + + // generate sql file needed to take db to "lastChangeToApply" version + $doSql = $this->doDeploy(); + $undoSql = $this->undoDeploy(); + + // write the do and undo SQL to their respective files + fwrite($outputFileHandle, $doSql); + fwrite($undoOutputFileHandle, $undoSql); + + } catch (Exception $e){ + throw new BuildException($e); + } + } + + function getAppliedChangeNumbers(){ + if(count($this->appliedChangeNumbers) == 0){ + $this->log('Getting applied changed numbers from DB: ' . $this->url ); + $appliedChangeNumbers = array(); + $dbh = new PDO($this->url, $this->userid, $this->password); + $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + $sql = "SELECT * FROM " . DbDeployTask::$TABLE_NAME . " WHERE delta_set = '$this->deltaSet' ORDER BY change_number"; + foreach($dbh->query($sql) as $change){ + $appliedChangeNumbers[] = $change['change_number']; + } + $this->appliedChangeNumbers = $appliedChangeNumbers; + } + return $this->appliedChangeNumbers; + } + + function getLastChangeAppliedInDb(){ + return (count($this->appliedChangeNumbers) > 0) ? max($this->appliedChangeNumbers) : 0; + } + + function doDeploy(){ + $sqlToPerformDeploy = ''; + $lastChangeAppliedInDb = $this->getLastChangeAppliedInDb(); + $files = $this->getDeltasFilesArray(); + ksort($files); + foreach($files as $fileChangeNumber=>$fileName){ + if($fileChangeNumber > $lastChangeAppliedInDb && $fileChangeNumber <= $this->lastChangeToApply){ + $sqlToPerformDeploy .= '-- Fragment begins: ' . $fileChangeNumber . ' --' . "\n"; + $sqlToPerformDeploy .= 'INSERT INTO ' . DbDeployTask::$TABLE_NAME . ' (change_number, delta_set, start_dt, applied_by, description)'. + ' VALUES ('. $fileChangeNumber .', \''. $this->deltaSet .'\', '. $this->dbmsSyntax->generateTimestamp() .', \'dbdeploy\', \''. $fileName .'\');' . "\n"; + $fullFileName = $this->dir . '/' . $fileName; + $fh = fopen($fullFileName, 'r'); + $contents = fread($fh, filesize($fullFileName)); + $deploySQLFromFile = substr($contents,0,strpos($contents, '-- //@UNDO')); + $sqlToPerformDeploy .= $deploySQLFromFile; + $sqlToPerformDeploy .= 'UPDATE ' . DbDeployTask::$TABLE_NAME . ' SET complete_dt = ' . $this->dbmsSyntax->generateTimestamp() . ' WHERE change_number = ' . $fileChangeNumber . ' AND delta_set = \'' . $this->deltaSet . '\';' . "\n"; + $sqlToPerformDeploy .= '-- Fragment ends: ' . $fileChangeNumber . ' --' . "\n"; + } + } + return $sqlToPerformDeploy; + } + + function undoDeploy(){ + $sqlToPerformUndo = ''; + $lastChangeAppliedInDb = $this->getLastChangeAppliedInDb(); + $files = $this->getDeltasFilesArray(); + krsort($files); + foreach($files as $fileChangeNumber=>$fileName){ + if($fileChangeNumber > $lastChangeAppliedInDb && $fileChangeNumber <= $this->lastChangeToApply){ + $fullFileName = $this->dir . '/' . $fileName; + $fh = fopen($fullFileName, 'r'); + $contents = fread($fh, filesize($fullFileName)); + $undoSQLFromFile = substr($contents,strpos($contents, '-- //@UNDO')+10); + $sqlToPerformUndo .= $undoSQLFromFile; + $sqlToPerformUndo .= 'DELETE FROM ' . DbDeployTask::$TABLE_NAME . ' WHERE change_number = ' . $fileChangeNumber . ' AND delta_set = \'' . $this->deltaSet . '\';' . "\n"; + $sqlToPerformUndo .= '-- Fragment ends: ' . $fileChangeNumber . ' --' . "\n"; + } + } + return $sqlToPerformUndo; + } + + function getDeltasFilesArray(){ + $baseDir = realpath($this->dir); + $dh = opendir($baseDir); + $fileChangeNumberPrefix = ''; + while(($file = readdir($dh)) !== false){ + if(preg_match('[\d+]', $file, $fileChangeNumberPrefix)){ + $files[$fileChangeNumberPrefix[0]] = $file; + } + } + return $files; + } + + function setUrl($url){ + $this->url = $url; + } + + function setUserId($userid){ + $this->userid = $userid; + } + + function setPassword($password){ + $this->password = $password; + } + + function setDir($dir){ + $this->dir = $dir; + } + + function setOutputFile($outputFile){ + $this->outputFile = $outputFile; + } + + function setUndoOutputFile($undoOutputFile){ + $this->undoOutputFile = $undoOutputFile; + } + + function setLastChangeToApply($lastChangeToApply){ + $this->lastChangeToApply = $lastChangeToApply; + } + + function setDeltaSet($deltaSet){ + $this->deltaSet = $deltaSet; + } + + /** + * Add a new fileset. + * @return FileSet + */ + public function createFileSet() { + $this->fileset = new FileSet(); + $this->filesets[] = $this->fileset; + return $this->fileset; + } +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/.svn/text-base/DbmsSyntax.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/.svn/text-base/DbmsSyntax.php.svn-base new file mode 100644 index 0000000..05b02ec --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/.svn/text-base/DbmsSyntax.php.svn-base @@ -0,0 +1,34 @@ +. + */ + +/** + * Utility class for generating necessary server-specific SQL commands + * + * @author Luke Crouch at SourceForge (http://sourceforge.net) + * @version $Revision: 1.1 $ + * @package phing.tasks.ext.dbdeploy + */ + +abstract class DbmsSyntax +{ + public abstract function generateTimestamp(); +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/.svn/text-base/DbmsSyntaxFactory.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/.svn/text-base/DbmsSyntaxFactory.php.svn-base new file mode 100644 index 0000000..72381f5 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/.svn/text-base/DbmsSyntaxFactory.php.svn-base @@ -0,0 +1,59 @@ +. + */ + +require_once 'phing/Task.php'; +require_once 'phing/tasks/ext/dbdeploy/DbmsSyntax.php'; + +/** + * Factory for generating dbms-specific syntax-generating objects + * + * @author Luke Crouch at SourceForge (http://sourceforge.net) + * @version $Revision: 1.1 $ + * @package phing.tasks.ext.dbdeploy + */ + +class DbmsSyntaxFactory +{ + private $dbms; + + public function __construct($dbms) + { + $this->dbms = $dbms; + } + + public function getDbmsSyntax() + { + switch ($this->dbms){ + case('sqlite') : + require_once 'phing/tasks/ext/dbdeploy/DbmsSyntaxSQLite.php'; + return new DbmsSyntaxSQLite(); + case('mysql'): + require_once 'phing/tasks/ext/dbdeploy/DbmsSyntaxMysql.php'; + return new DbmsSyntaxMysql(); + case('mssql'): + require_once 'phing/tasks/ext/dbdeploy/DbmsSyntaxMsSql.php'; + return new DbmsSyntaxMsSql(); + default: + throw new Exception($this->dbms . ' is not supported by dbdeploy task.'); + } + } +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/.svn/text-base/DbmsSyntaxMsSql.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/.svn/text-base/DbmsSyntaxMsSql.php.svn-base new file mode 100644 index 0000000..b1aff32 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/.svn/text-base/DbmsSyntaxMsSql.php.svn-base @@ -0,0 +1,37 @@ +. + */ + +/** + * Utility class for generating necessary server-specific SQL commands + * + * @author Luke Crouch at SourceForge (http://sourceforge.net) + * @version $Revision: 1.1 $ + * @package phing.tasks.ext.dbdeploy + */ + +class DbmsSyntaxMsSql extends DbmsSyntax +{ + public function generateTimestamp() + { + return "DATEDIFF(s, '19700101', GETDATE())"; + } +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/.svn/text-base/DbmsSyntaxMysql.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/.svn/text-base/DbmsSyntaxMysql.php.svn-base new file mode 100644 index 0000000..d2edfc5 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/.svn/text-base/DbmsSyntaxMysql.php.svn-base @@ -0,0 +1,37 @@ +. + */ + +/** + * Utility class for generating necessary server-specific SQL commands + * + * @author Luke Crouch at SourceForge (http://sourceforge.net) + * @version $Revision: 1.1 $ + * @package phing.tasks.ext.dbdeploy + */ + +class DbmsSyntaxMysql extends DbmsSyntax +{ + public function generateTimestamp() + { + return "NOW()"; + } +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/.svn/text-base/DbmsSyntaxSQLite.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/.svn/text-base/DbmsSyntaxSQLite.php.svn-base new file mode 100644 index 0000000..6352c02 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/.svn/text-base/DbmsSyntaxSQLite.php.svn-base @@ -0,0 +1,37 @@ +. + */ + +/** + * Utility class for generating necessary server-specific SQL commands + * + * @author Luke Crouch at SourceForge (http://sourceforge.net) + * @version $Revision: 1.1 $ + * @package phing.tasks.ext.dbdeploy + */ + +class DbmsSyntaxSQLite extends DbmsSyntax +{ + public function generateTimestamp() + { + return "strftime('%s','now')"; + } +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/DbDeployTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/DbDeployTask.php new file mode 100755 index 0000000..a1ec9e5 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/DbDeployTask.php @@ -0,0 +1,192 @@ +. + */ + +require_once 'phing/Task.php'; +require_once 'phing/tasks/ext/dbdeploy/DbmsSyntaxFactory.php'; + + +/** + * Generate SQL script for db using dbdeploy schema version table and delta scripts + * + * + * + * @author Luke Crouch at SourceForge (http://sourceforge.net) + * @version $Revision: 1.1 $ + * @package phing.tasks.ext.dbdeploy + */ + +class DbDeployTask extends Task { + + public static $TABLE_NAME = 'changelog'; + + protected $url; + protected $userid; + protected $password; + protected $dir; + protected $outputFile = 'dbdeploy_deploy.sql'; + protected $undoOutputFile = 'dbdeploy_undo.sql'; + protected $deltaSet = 'Main'; + protected $lastChangeToApply = 999; + protected $dbmsSyntax = null; + + function main() { + try{ + // get correct DbmsSyntax object + $dbms = substr($this->url, 0, strpos($this->url, ':')); + $dbmsSyntaxFactory = new DbmsSyntaxFactory($dbms); + $this->dbmsSyntax = $dbmsSyntaxFactory->getDbmsSyntax(); + + // open file handles for output + $outputFileHandle = fopen($this->outputFile, "w+"); + $undoOutputFileHandle = fopen($this->undoOutputFile, "w+"); + + // figure out which revisions are in the db already + $this->appliedChangeNumbers = $this->getAppliedChangeNumbers(); + $this->log('Current db revision: ' . $this->getLastChangeAppliedInDb()); + + // generate sql file needed to take db to "lastChangeToApply" version + $doSql = $this->doDeploy(); + $undoSql = $this->undoDeploy(); + + // write the do and undo SQL to their respective files + fwrite($outputFileHandle, $doSql); + fwrite($undoOutputFileHandle, $undoSql); + + } catch (Exception $e){ + throw new BuildException($e); + } + } + + function getAppliedChangeNumbers(){ + if(count($this->appliedChangeNumbers) == 0){ + $this->log('Getting applied changed numbers from DB: ' . $this->url ); + $appliedChangeNumbers = array(); + $dbh = new PDO($this->url, $this->userid, $this->password); + $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + $sql = "SELECT * FROM " . DbDeployTask::$TABLE_NAME . " WHERE delta_set = '$this->deltaSet' ORDER BY change_number"; + foreach($dbh->query($sql) as $change){ + $appliedChangeNumbers[] = $change['change_number']; + } + $this->appliedChangeNumbers = $appliedChangeNumbers; + } + return $this->appliedChangeNumbers; + } + + function getLastChangeAppliedInDb(){ + return (count($this->appliedChangeNumbers) > 0) ? max($this->appliedChangeNumbers) : 0; + } + + function doDeploy(){ + $sqlToPerformDeploy = ''; + $lastChangeAppliedInDb = $this->getLastChangeAppliedInDb(); + $files = $this->getDeltasFilesArray(); + ksort($files); + foreach($files as $fileChangeNumber=>$fileName){ + if($fileChangeNumber > $lastChangeAppliedInDb && $fileChangeNumber <= $this->lastChangeToApply){ + $sqlToPerformDeploy .= '-- Fragment begins: ' . $fileChangeNumber . ' --' . "\n"; + $sqlToPerformDeploy .= 'INSERT INTO ' . DbDeployTask::$TABLE_NAME . ' (change_number, delta_set, start_dt, applied_by, description)'. + ' VALUES ('. $fileChangeNumber .', \''. $this->deltaSet .'\', '. $this->dbmsSyntax->generateTimestamp() .', \'dbdeploy\', \''. $fileName .'\');' . "\n"; + $fullFileName = $this->dir . '/' . $fileName; + $fh = fopen($fullFileName, 'r'); + $contents = fread($fh, filesize($fullFileName)); + $deploySQLFromFile = substr($contents,0,strpos($contents, '-- //@UNDO')); + $sqlToPerformDeploy .= $deploySQLFromFile; + $sqlToPerformDeploy .= 'UPDATE ' . DbDeployTask::$TABLE_NAME . ' SET complete_dt = ' . $this->dbmsSyntax->generateTimestamp() . ' WHERE change_number = ' . $fileChangeNumber . ' AND delta_set = \'' . $this->deltaSet . '\';' . "\n"; + $sqlToPerformDeploy .= '-- Fragment ends: ' . $fileChangeNumber . ' --' . "\n"; + } + } + return $sqlToPerformDeploy; + } + + function undoDeploy(){ + $sqlToPerformUndo = ''; + $lastChangeAppliedInDb = $this->getLastChangeAppliedInDb(); + $files = $this->getDeltasFilesArray(); + krsort($files); + foreach($files as $fileChangeNumber=>$fileName){ + if($fileChangeNumber > $lastChangeAppliedInDb && $fileChangeNumber <= $this->lastChangeToApply){ + $fullFileName = $this->dir . '/' . $fileName; + $fh = fopen($fullFileName, 'r'); + $contents = fread($fh, filesize($fullFileName)); + $undoSQLFromFile = substr($contents,strpos($contents, '-- //@UNDO')+10); + $sqlToPerformUndo .= $undoSQLFromFile; + $sqlToPerformUndo .= 'DELETE FROM ' . DbDeployTask::$TABLE_NAME . ' WHERE change_number = ' . $fileChangeNumber . ' AND delta_set = \'' . $this->deltaSet . '\';' . "\n"; + $sqlToPerformUndo .= '-- Fragment ends: ' . $fileChangeNumber . ' --' . "\n"; + } + } + return $sqlToPerformUndo; + } + + function getDeltasFilesArray(){ + $baseDir = realpath($this->dir); + $dh = opendir($baseDir); + $fileChangeNumberPrefix = ''; + while(($file = readdir($dh)) !== false){ + if(preg_match('[\d+]', $file, $fileChangeNumberPrefix)){ + $files[$fileChangeNumberPrefix[0]] = $file; + } + } + return $files; + } + + function setUrl($url){ + $this->url = $url; + } + + function setUserId($userid){ + $this->userid = $userid; + } + + function setPassword($password){ + $this->password = $password; + } + + function setDir($dir){ + $this->dir = $dir; + } + + function setOutputFile($outputFile){ + $this->outputFile = $outputFile; + } + + function setUndoOutputFile($undoOutputFile){ + $this->undoOutputFile = $undoOutputFile; + } + + function setLastChangeToApply($lastChangeToApply){ + $this->lastChangeToApply = $lastChangeToApply; + } + + function setDeltaSet($deltaSet){ + $this->deltaSet = $deltaSet; + } + + /** + * Add a new fileset. + * @return FileSet + */ + public function createFileSet() { + $this->fileset = new FileSet(); + $this->filesets[] = $this->fileset; + return $this->fileset; + } +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/DbmsSyntax.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/DbmsSyntax.php new file mode 100644 index 0000000..05b02ec --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/DbmsSyntax.php @@ -0,0 +1,34 @@ +. + */ + +/** + * Utility class for generating necessary server-specific SQL commands + * + * @author Luke Crouch at SourceForge (http://sourceforge.net) + * @version $Revision: 1.1 $ + * @package phing.tasks.ext.dbdeploy + */ + +abstract class DbmsSyntax +{ + public abstract function generateTimestamp(); +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/DbmsSyntaxFactory.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/DbmsSyntaxFactory.php new file mode 100644 index 0000000..72381f5 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/DbmsSyntaxFactory.php @@ -0,0 +1,59 @@ +. + */ + +require_once 'phing/Task.php'; +require_once 'phing/tasks/ext/dbdeploy/DbmsSyntax.php'; + +/** + * Factory for generating dbms-specific syntax-generating objects + * + * @author Luke Crouch at SourceForge (http://sourceforge.net) + * @version $Revision: 1.1 $ + * @package phing.tasks.ext.dbdeploy + */ + +class DbmsSyntaxFactory +{ + private $dbms; + + public function __construct($dbms) + { + $this->dbms = $dbms; + } + + public function getDbmsSyntax() + { + switch ($this->dbms){ + case('sqlite') : + require_once 'phing/tasks/ext/dbdeploy/DbmsSyntaxSQLite.php'; + return new DbmsSyntaxSQLite(); + case('mysql'): + require_once 'phing/tasks/ext/dbdeploy/DbmsSyntaxMysql.php'; + return new DbmsSyntaxMysql(); + case('mssql'): + require_once 'phing/tasks/ext/dbdeploy/DbmsSyntaxMsSql.php'; + return new DbmsSyntaxMsSql(); + default: + throw new Exception($this->dbms . ' is not supported by dbdeploy task.'); + } + } +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/DbmsSyntaxMsSql.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/DbmsSyntaxMsSql.php new file mode 100644 index 0000000..b1aff32 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/DbmsSyntaxMsSql.php @@ -0,0 +1,37 @@ +. + */ + +/** + * Utility class for generating necessary server-specific SQL commands + * + * @author Luke Crouch at SourceForge (http://sourceforge.net) + * @version $Revision: 1.1 $ + * @package phing.tasks.ext.dbdeploy + */ + +class DbmsSyntaxMsSql extends DbmsSyntax +{ + public function generateTimestamp() + { + return "DATEDIFF(s, '19700101', GETDATE())"; + } +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/DbmsSyntaxMysql.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/DbmsSyntaxMysql.php new file mode 100644 index 0000000..d2edfc5 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/DbmsSyntaxMysql.php @@ -0,0 +1,37 @@ +. + */ + +/** + * Utility class for generating necessary server-specific SQL commands + * + * @author Luke Crouch at SourceForge (http://sourceforge.net) + * @version $Revision: 1.1 $ + * @package phing.tasks.ext.dbdeploy + */ + +class DbmsSyntaxMysql extends DbmsSyntax +{ + public function generateTimestamp() + { + return "NOW()"; + } +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/DbmsSyntaxSQLite.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/DbmsSyntaxSQLite.php new file mode 100644 index 0000000..6352c02 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/dbdeploy/DbmsSyntaxSQLite.php @@ -0,0 +1,37 @@ +. + */ + +/** + * Utility class for generating necessary server-specific SQL commands + * + * @author Luke Crouch at SourceForge (http://sourceforge.net) + * @version $Revision: 1.1 $ + * @package phing.tasks.ext.dbdeploy + */ + +class DbmsSyntaxSQLite extends DbmsSyntax +{ + public function generateTimestamp() + { + return "strftime('%s','now')"; + } +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ioncube/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ioncube/.svn/all-wcprops new file mode 100644 index 0000000..ed93056 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ioncube/.svn/all-wcprops @@ -0,0 +1,23 @@ +K 25 +svn:wc:ra_dav:version-url +V 56 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/ioncube +END +IoncubeLicenseTask.php +K 25 +svn:wc:ra_dav:version-url +V 79 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/ioncube/IoncubeLicenseTask.php +END +IoncubeComment.php +K 25 +svn:wc:ra_dav:version-url +V 75 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/ioncube/IoncubeComment.php +END +IoncubeEncoderTask.php +K 25 +svn:wc:ra_dav:version-url +V 79 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/ioncube/IoncubeEncoderTask.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ioncube/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ioncube/.svn/entries new file mode 100644 index 0000000..9bb794c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ioncube/.svn/entries @@ -0,0 +1,130 @@ +10 + +dir +1404 +http://phing.mirror.svn.symfony-project.com/tags/2.3.3/classes/phing/tasks/ext/ioncube +http://phing.mirror.svn.symfony-project.com + + + +2007-12-20T15:44:58.929962Z +325 +hans + + + + + + + + + + + + + + +c8b19502-6211-4773-8637-5aef67d587fc + +IoncubeLicenseTask.php +file + + + + +2012-05-10T18:42:00.553550Z +b4e138feb7905e2217b9b709a4b75313 +2007-12-20T15:44:58.929962Z +325 +hans +has-props + + + + + + + + + + + + + + + + + + + + +3431 + +IoncubeComment.php +file + + + + +2012-05-10T18:42:00.557549Z +b1eb8f15f88b0007cfb27ed33d8ea83a +2007-12-20T15:44:58.929962Z +325 +hans +has-props + + + + + + + + + + + + + + + + + + + + +1433 + +IoncubeEncoderTask.php +file + + + + +2012-05-10T18:42:00.561549Z +0ec5d9c64d8ba4a3ec4693e10bfc84af +2007-12-20T15:44:58.929962Z +325 +hans +has-props + + + + + + + + + + + + + + + + + + + + +9258 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ioncube/.svn/prop-base/IoncubeComment.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ioncube/.svn/prop-base/IoncubeComment.php.svn-base new file mode 100644 index 0000000..77191a2 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ioncube/.svn/prop-base/IoncubeComment.php.svn-base @@ -0,0 +1,9 @@ +K 14 +svn:executable +V 1 +* +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ioncube/.svn/prop-base/IoncubeEncoderTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ioncube/.svn/prop-base/IoncubeEncoderTask.php.svn-base new file mode 100644 index 0000000..77191a2 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ioncube/.svn/prop-base/IoncubeEncoderTask.php.svn-base @@ -0,0 +1,9 @@ +K 14 +svn:executable +V 1 +* +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ioncube/.svn/prop-base/IoncubeLicenseTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ioncube/.svn/prop-base/IoncubeLicenseTask.php.svn-base new file mode 100644 index 0000000..77191a2 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ioncube/.svn/prop-base/IoncubeLicenseTask.php.svn-base @@ -0,0 +1,9 @@ +K 14 +svn:executable +V 1 +* +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ioncube/.svn/text-base/IoncubeComment.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ioncube/.svn/text-base/IoncubeComment.php.svn-base new file mode 100644 index 0000000..5592fc3 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ioncube/.svn/text-base/IoncubeComment.php.svn-base @@ -0,0 +1,43 @@ +. + */ + +/** + * Wrapper for comments for ionCube tasks + * + * @author Michiel Rook + * @version $Id$ + * @package phing.tasks.ext.ioncube + * @since 2.2.0 + */ +class IoncubeComment +{ + private $value = ""; + + public function getValue() + { + return $this->value; + } + + public function addText($txt) + { + $this->value = trim($txt); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ioncube/.svn/text-base/IoncubeEncoderTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ioncube/.svn/text-base/IoncubeEncoderTask.php.svn-base new file mode 100644 index 0000000..c14965f --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ioncube/.svn/text-base/IoncubeEncoderTask.php.svn-base @@ -0,0 +1,487 @@ +. + */ + +require_once 'phing/Task.php'; +require_once 'phing/tasks/ext/ioncube/IoncubeComment.php'; + +/** + * Invokes the ionCube Encoder (PHP4 or PHP5) + * + * @author Michiel Rook + * @author Andrew Eddie + * @version $Id$ + * @package phing.tasks.ext.ioncube + * @since 2.2.0 + */ +class IoncubeEncoderTask extends Task +{ + private $ionSwitches = array(); + + private $ionOptions = array(); + + private $ionOptionsXS = array(); + + private $comments = array(); + + private $encoderName = 'ioncube_encoder'; + + private $fromDir = ''; + + private $ioncubePath = '/usr/local/ioncube'; + + private $phpVersion = '5'; + + private $targetOption = ''; + + private $toDir = ''; + + /** + * Adds a comment to be used in encoded files + */ + function addComment(IoncubeComment $comment) + { + $this->comments[] = $comment; + } + + /** + * Sets the allowed server + */ + function setAllowedServer($value) + { + $this->ionOptionsXS['allowed-server'] = $value; + } + + /** + * Returns the allowed server setting + */ + function getAllowedServer() + { + return $this->ionOptionsXS['allowed-server']; + } + + /** + * Sets the binary option + */ + function setBinary($value) + { + $this->ionSwitches['binary'] = $value; + } + + /** + * Returns the binary option + */ + function getBinary() + { + return $this->ionSwitches['binary']; + } + + /** + * Sets files or folders to copy (separated by space) + */ + function setCopy($value) + { + $this->ionOptionsXS['copy'] = $value; + } + + /** + * Returns the copy setting + */ + function getCopy() + { + return $this->ionOptionsXS['copy']; + } + + /** + * Sets additional file patterns, files or directories to encode, + * or to reverse the effect of copy (separated by space) + */ + function setEncode($value) + { + $this->ionOptionsXS['encode'] = $value; + } + + /** + * Returns the encode setting + */ + function getEncode() + { + return $this->enionOptionsXS['encode']; + } + + /** + * Sets regexps of additional files to encrypt (separated by space) + */ + function setEncrypt($value) + { + $this->ionOptionsXS['encrypt'] = $value; + } + + /** + * Returns regexps of additional files to encrypt (separated by space) + */ + function getEncrypt() + { + return $this->ionOptionsXS['encrypt']; + } + + /** + * Sets a period after which the files expire + */ + function setExpirein($value) + { + $this->ionOptions['expire-in'] = $value; + } + + /** + * Returns the expireIn setting + */ + function getExpirein() + { + return $this->ionOptions['expire-in']; + } + + /** + * Sets a YYYY-MM-DD date to expire the files + */ + function setExpireon($value) + { + $this->ionOptions['expire-on'] = $value; + } + + /** + * Returns the expireOn setting + */ + function getExpireon() + { + return $this->ionOptions['expire-on']; + } + + /** + * Sets the source directory + */ + function setFromDir($value) + { + $this->fromDir = $value; + } + + /** + * Returns the source directory + */ + function getFromDir() + { + return $this->fromDir; + } + + /** + * Set files and directories to ignore entirely and exclude from the target directory + * (separated by space). + */ + function setIgnore($value) + { + $this->ionOptionsXS['ignore'] = $value; + } + + /** + * Returns the ignore setting + */ + function getIgnore() + { + return $this->ionOptionsXS['ignore']; + } + + /** + * Sets the path to the ionCube encoder + */ + function setIoncubePath($value) + { + $this->ioncubePath = $value; + } + + /** + * Returns the path to the ionCube encoder + */ + function getIoncubePath() + { + return $this->ioncubePath; + } + + /** + * Set files and directories not to be ignored (separated by space). + */ + function setKeep($value) + { + $this->ionOptionsXS['keep'] = $value; + } + + /** + * Returns the ignore setting + */ + function getKeep() + { + return $this->ionOptionsXS['keep']; + } + + /** + * Sets the path to the license file to use + */ + function setLicensePath($value) + { + $this->ionOptions['with-license'] = $value; + } + + /** + * Returns the path to the license file to use + */ + function getLicensePath() + { + return $this->ionOptions['with-license']; + } + + /** + * Sets the no-doc-comments option + */ + function setNoDocComments($value) + { + $this->ionSwitches['no-doc-comment'] = $value; + } + + /** + * Returns the no-doc-comments option + */ + function getNoDocComments() + { + return $this->ionSwitches['no-doc-comment']; + } + + /** + * Sets the obfuscate option + */ + function setObfuscate($value) + { + $this->ionOptionsXS['obfuscate'] = $value; + } + + /** + * Returns the optimize option + */ + function getObfuscate() + { + return $this->ionOptionsXS['obfuscate']; + } + + /** + * Sets the obfuscation key (required if using the obfuscate option) + */ + function setObfuscationKey($value) + { + $this->ionOptions['obfuscation-key'] = $value; + } + + /** + * Returns the optimize option + */ + function getObfuscationKey() + { + return $this->ionOptions['obfuscation-key']; + } + + /** + * Sets the optimize option + */ + function setOptimize($value) + { + $this->ionOptions['optimize'] = $value; + } + + /** + * Returns the optimize option + */ + function getOptimize() + { + return $this->ionOptions['optimize']; + } + + /** + * Sets the passphrase to use when encoding files + */ + function setPassPhrase($value) + { + $this->ionOptions['passphrase'] = $value; + } + + /** + * Returns the passphrase to use when encoding files + */ + function getPassPhrase() + { + return $this->ionOptions['passphrase']; + } + + /** + * Sets the version of PHP to use (defaults to 5) + */ + function setPhpVersion($value) + { + $this->phpVersion = $value; + } + + /** + * Returns the version of PHP to use (defaults to 5) + */ + function getPhpVersion() + { + return $this->phpVersion; + } + + /** + * Sets the target directory + */ + function setToDir($value) + { + $this->toDir = $value; + } + + /** + * Returns the target directory + */ + function getToDir() + { + return $this->toDir; + } + + /** + * Sets the without-runtime-loader-support option + */ + function setWithoutRuntimeLoaderSupport($value) + { + $this->ionSwitches['without-runtime-loader-support'] = $value; + } + + /** + * Returns the without-runtime-loader-support option + */ + function getWithoutRuntimeLoaderSupport() + { + return $this->ionSwitches['without-runtime-loader-support']; + } + + /** + * Sets the option to use when encoding target directory already exists (defaults to none) + */ + function setTargetOption($targetOption) + { + $this->targetOption = $targetOption; + } + + /** + * Returns he option to use when encoding target directory already exists (defaults to none) + */ + function getTargetOption() + { + return $this->targetOption; + } + + /** + * The main entry point + * + * @throws BuildException + */ + function main() + { + $arguments = $this->constructArguments(); + + $encoder = new PhingFile($this->ioncubePath, $this->encoderName . ($this->phpVersion == 5 ? '5' : '')); + + $this->log("Running ionCube Encoder..."); + + exec($encoder->__toString() . ' ' . $arguments . " 2>&1", $output, $return); + + if ($return != 0) + { + throw new BuildException("Could not execute ionCube Encoder: " . implode(' ', $output)); + } + } + + /** + * Constructs an argument string for the ionCube encoder + */ + private function constructArguments() + { + $arguments = ''; + + foreach ($this->ionSwitches as $name => $value) + { + if ($value) + { + $arguments.= "--$name "; + } + } + + foreach ($this->ionOptions as $name => $value) + { + $arguments.= "--$name '$value' "; + } + + foreach ($this->ionOptionsXS as $name => $value) + { + foreach (explode(' ', $value) as $arg) + { + $arguments.= "--$name '$arg' "; + } + } + + foreach ($this->comments as $comment) + { + $arguments.= "--add-comment '" . $comment->getValue() . "' "; + } + + if (!empty($this->targetOption)) + { + switch ($this->targetOption) + { + case "replace": + case "merge": + case "update": + case "rename": + { + $arguments.= "--" . $this->targetOption . "-target "; + } break; + + default: + { + throw new BuildException("Unknown target option '" . $this->targetOption . "'"); + } break; + } + } + + if ($this->fromDir != '') + { + $arguments .= $this->fromDir . ' '; + } + + if ($this->toDir != '') + { + $arguments .= "-o " . $this->toDir . ' '; + } + + return $arguments; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ioncube/.svn/text-base/IoncubeLicenseTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ioncube/.svn/text-base/IoncubeLicenseTask.php.svn-base new file mode 100644 index 0000000..0035bfa --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ioncube/.svn/text-base/IoncubeLicenseTask.php.svn-base @@ -0,0 +1,143 @@ +. + */ + +require_once 'phing/Task.php'; +require_once 'phing/tasks/ext/ioncube/IoncubeComment.php'; + +/** + * Invokes the ionCube "make_license" program + * + * @author Michiel Rook + * @version $Id$ + * @package phing.tasks.ext.ioncube + * @since 2.2.0 + */ +class IoncubeLicenseTask extends Task +{ + private $ioncubePath = "/usr/local/ioncube"; + + private $licensePath = ""; + private $passPhrase = ""; + + private $comments = array(); + + /** + * Sets the path to the ionCube encoder + */ + function setIoncubePath($ioncubePath) + { + $this->ioncubePath = $ioncubePath; + } + + /** + * Returns the path to the ionCube encoder + */ + function getIoncubePath() + { + return $this->ioncubePath; + } + + /** + * Sets the path to the license file to use + */ + function setLicensePath($licensePath) + { + $this->licensePath = $licensePath; + } + + /** + * Returns the path to the license file to use + */ + function getLicensePath() + { + return $this->licensePath; + } + + /** + * Sets the passphrase to use when encoding files + */ + function setPassPhrase($passPhrase) + { + $this->passPhrase = $passPhrase; + } + + /** + * Returns the passphrase to use when encoding files + */ + function getPassPhrase() + { + return $this->passPhrase; + } + + /** + * Adds a comment to be used in encoded files + */ + function addComment(IoncubeComment $comment) + { + $this->comments[] = $comment; + } + + /** + * The main entry point + * + * @throws BuildException + */ + function main() + { + $arguments = $this->constructArguments(); + + $makelicense = new PhingFile($this->ioncubePath, 'make_license'); + + $this->log("Running ionCube make_license..."); + + exec($makelicense->__toString() . " " . $arguments . " 2>&1", $output, $return); + + if ($return != 0) + { + throw new BuildException("Could not execute ionCube make_license: " . implode(' ', $output)); + } + } + + /** + * Constructs an argument string for the ionCube make_license + */ + private function constructArguments() + { + $arguments = ""; + + if (!empty($this->passPhrase)) + { + $arguments.= "--passphrase '" . $this->passPhrase . "' "; + } + + foreach ($this->comments as $comment) + { + $arguments.= "--header-line '" . $comment->getValue() . "' "; + } + + if (!empty($this->licensePath)) + { + $arguments.= "--o '" . $this->licensePath . "' "; + } + + return $arguments; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ioncube/IoncubeComment.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ioncube/IoncubeComment.php new file mode 100755 index 0000000..cec034b --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ioncube/IoncubeComment.php @@ -0,0 +1,43 @@ +. + */ + +/** + * Wrapper for comments for ionCube tasks + * + * @author Michiel Rook + * @version $Id: IoncubeComment.php 325 2007-12-20 15:44:58Z hans $ + * @package phing.tasks.ext.ioncube + * @since 2.2.0 + */ +class IoncubeComment +{ + private $value = ""; + + public function getValue() + { + return $this->value; + } + + public function addText($txt) + { + $this->value = trim($txt); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ioncube/IoncubeEncoderTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ioncube/IoncubeEncoderTask.php new file mode 100755 index 0000000..2d99964 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ioncube/IoncubeEncoderTask.php @@ -0,0 +1,487 @@ +. + */ + +require_once 'phing/Task.php'; +require_once 'phing/tasks/ext/ioncube/IoncubeComment.php'; + +/** + * Invokes the ionCube Encoder (PHP4 or PHP5) + * + * @author Michiel Rook + * @author Andrew Eddie + * @version $Id: IoncubeEncoderTask.php 325 2007-12-20 15:44:58Z hans $ + * @package phing.tasks.ext.ioncube + * @since 2.2.0 + */ +class IoncubeEncoderTask extends Task +{ + private $ionSwitches = array(); + + private $ionOptions = array(); + + private $ionOptionsXS = array(); + + private $comments = array(); + + private $encoderName = 'ioncube_encoder'; + + private $fromDir = ''; + + private $ioncubePath = '/usr/local/ioncube'; + + private $phpVersion = '5'; + + private $targetOption = ''; + + private $toDir = ''; + + /** + * Adds a comment to be used in encoded files + */ + function addComment(IoncubeComment $comment) + { + $this->comments[] = $comment; + } + + /** + * Sets the allowed server + */ + function setAllowedServer($value) + { + $this->ionOptionsXS['allowed-server'] = $value; + } + + /** + * Returns the allowed server setting + */ + function getAllowedServer() + { + return $this->ionOptionsXS['allowed-server']; + } + + /** + * Sets the binary option + */ + function setBinary($value) + { + $this->ionSwitches['binary'] = $value; + } + + /** + * Returns the binary option + */ + function getBinary() + { + return $this->ionSwitches['binary']; + } + + /** + * Sets files or folders to copy (separated by space) + */ + function setCopy($value) + { + $this->ionOptionsXS['copy'] = $value; + } + + /** + * Returns the copy setting + */ + function getCopy() + { + return $this->ionOptionsXS['copy']; + } + + /** + * Sets additional file patterns, files or directories to encode, + * or to reverse the effect of copy (separated by space) + */ + function setEncode($value) + { + $this->ionOptionsXS['encode'] = $value; + } + + /** + * Returns the encode setting + */ + function getEncode() + { + return $this->enionOptionsXS['encode']; + } + + /** + * Sets regexps of additional files to encrypt (separated by space) + */ + function setEncrypt($value) + { + $this->ionOptionsXS['encrypt'] = $value; + } + + /** + * Returns regexps of additional files to encrypt (separated by space) + */ + function getEncrypt() + { + return $this->ionOptionsXS['encrypt']; + } + + /** + * Sets a period after which the files expire + */ + function setExpirein($value) + { + $this->ionOptions['expire-in'] = $value; + } + + /** + * Returns the expireIn setting + */ + function getExpirein() + { + return $this->ionOptions['expire-in']; + } + + /** + * Sets a YYYY-MM-DD date to expire the files + */ + function setExpireon($value) + { + $this->ionOptions['expire-on'] = $value; + } + + /** + * Returns the expireOn setting + */ + function getExpireon() + { + return $this->ionOptions['expire-on']; + } + + /** + * Sets the source directory + */ + function setFromDir($value) + { + $this->fromDir = $value; + } + + /** + * Returns the source directory + */ + function getFromDir() + { + return $this->fromDir; + } + + /** + * Set files and directories to ignore entirely and exclude from the target directory + * (separated by space). + */ + function setIgnore($value) + { + $this->ionOptionsXS['ignore'] = $value; + } + + /** + * Returns the ignore setting + */ + function getIgnore() + { + return $this->ionOptionsXS['ignore']; + } + + /** + * Sets the path to the ionCube encoder + */ + function setIoncubePath($value) + { + $this->ioncubePath = $value; + } + + /** + * Returns the path to the ionCube encoder + */ + function getIoncubePath() + { + return $this->ioncubePath; + } + + /** + * Set files and directories not to be ignored (separated by space). + */ + function setKeep($value) + { + $this->ionOptionsXS['keep'] = $value; + } + + /** + * Returns the ignore setting + */ + function getKeep() + { + return $this->ionOptionsXS['keep']; + } + + /** + * Sets the path to the license file to use + */ + function setLicensePath($value) + { + $this->ionOptions['with-license'] = $value; + } + + /** + * Returns the path to the license file to use + */ + function getLicensePath() + { + return $this->ionOptions['with-license']; + } + + /** + * Sets the no-doc-comments option + */ + function setNoDocComments($value) + { + $this->ionSwitches['no-doc-comment'] = $value; + } + + /** + * Returns the no-doc-comments option + */ + function getNoDocComments() + { + return $this->ionSwitches['no-doc-comment']; + } + + /** + * Sets the obfuscate option + */ + function setObfuscate($value) + { + $this->ionOptionsXS['obfuscate'] = $value; + } + + /** + * Returns the optimize option + */ + function getObfuscate() + { + return $this->ionOptionsXS['obfuscate']; + } + + /** + * Sets the obfuscation key (required if using the obfuscate option) + */ + function setObfuscationKey($value) + { + $this->ionOptions['obfuscation-key'] = $value; + } + + /** + * Returns the optimize option + */ + function getObfuscationKey() + { + return $this->ionOptions['obfuscation-key']; + } + + /** + * Sets the optimize option + */ + function setOptimize($value) + { + $this->ionOptions['optimize'] = $value; + } + + /** + * Returns the optimize option + */ + function getOptimize() + { + return $this->ionOptions['optimize']; + } + + /** + * Sets the passphrase to use when encoding files + */ + function setPassPhrase($value) + { + $this->ionOptions['passphrase'] = $value; + } + + /** + * Returns the passphrase to use when encoding files + */ + function getPassPhrase() + { + return $this->ionOptions['passphrase']; + } + + /** + * Sets the version of PHP to use (defaults to 5) + */ + function setPhpVersion($value) + { + $this->phpVersion = $value; + } + + /** + * Returns the version of PHP to use (defaults to 5) + */ + function getPhpVersion() + { + return $this->phpVersion; + } + + /** + * Sets the target directory + */ + function setToDir($value) + { + $this->toDir = $value; + } + + /** + * Returns the target directory + */ + function getToDir() + { + return $this->toDir; + } + + /** + * Sets the without-runtime-loader-support option + */ + function setWithoutRuntimeLoaderSupport($value) + { + $this->ionSwitches['without-runtime-loader-support'] = $value; + } + + /** + * Returns the without-runtime-loader-support option + */ + function getWithoutRuntimeLoaderSupport() + { + return $this->ionSwitches['without-runtime-loader-support']; + } + + /** + * Sets the option to use when encoding target directory already exists (defaults to none) + */ + function setTargetOption($targetOption) + { + $this->targetOption = $targetOption; + } + + /** + * Returns he option to use when encoding target directory already exists (defaults to none) + */ + function getTargetOption() + { + return $this->targetOption; + } + + /** + * The main entry point + * + * @throws BuildException + */ + function main() + { + $arguments = $this->constructArguments(); + + $encoder = new PhingFile($this->ioncubePath, $this->encoderName . ($this->phpVersion == 5 ? '5' : '')); + + $this->log("Running ionCube Encoder..."); + + exec($encoder->__toString() . ' ' . $arguments . " 2>&1", $output, $return); + + if ($return != 0) + { + throw new BuildException("Could not execute ionCube Encoder: " . implode(' ', $output)); + } + } + + /** + * Constructs an argument string for the ionCube encoder + */ + private function constructArguments() + { + $arguments = ''; + + foreach ($this->ionSwitches as $name => $value) + { + if ($value) + { + $arguments.= "--$name "; + } + } + + foreach ($this->ionOptions as $name => $value) + { + $arguments.= "--$name '$value' "; + } + + foreach ($this->ionOptionsXS as $name => $value) + { + foreach (explode(' ', $value) as $arg) + { + $arguments.= "--$name '$arg' "; + } + } + + foreach ($this->comments as $comment) + { + $arguments.= "--add-comment '" . $comment->getValue() . "' "; + } + + if (!empty($this->targetOption)) + { + switch ($this->targetOption) + { + case "replace": + case "merge": + case "update": + case "rename": + { + $arguments.= "--" . $this->targetOption . "-target "; + } break; + + default: + { + throw new BuildException("Unknown target option '" . $this->targetOption . "'"); + } break; + } + } + + if ($this->fromDir != '') + { + $arguments .= $this->fromDir . ' '; + } + + if ($this->toDir != '') + { + $arguments .= "-o " . $this->toDir . ' '; + } + + return $arguments; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ioncube/IoncubeLicenseTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ioncube/IoncubeLicenseTask.php new file mode 100755 index 0000000..d6ff277 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/ioncube/IoncubeLicenseTask.php @@ -0,0 +1,143 @@ +. + */ + +require_once 'phing/Task.php'; +require_once 'phing/tasks/ext/ioncube/IoncubeComment.php'; + +/** + * Invokes the ionCube "make_license" program + * + * @author Michiel Rook + * @version $Id: IoncubeLicenseTask.php 325 2007-12-20 15:44:58Z hans $ + * @package phing.tasks.ext.ioncube + * @since 2.2.0 + */ +class IoncubeLicenseTask extends Task +{ + private $ioncubePath = "/usr/local/ioncube"; + + private $licensePath = ""; + private $passPhrase = ""; + + private $comments = array(); + + /** + * Sets the path to the ionCube encoder + */ + function setIoncubePath($ioncubePath) + { + $this->ioncubePath = $ioncubePath; + } + + /** + * Returns the path to the ionCube encoder + */ + function getIoncubePath() + { + return $this->ioncubePath; + } + + /** + * Sets the path to the license file to use + */ + function setLicensePath($licensePath) + { + $this->licensePath = $licensePath; + } + + /** + * Returns the path to the license file to use + */ + function getLicensePath() + { + return $this->licensePath; + } + + /** + * Sets the passphrase to use when encoding files + */ + function setPassPhrase($passPhrase) + { + $this->passPhrase = $passPhrase; + } + + /** + * Returns the passphrase to use when encoding files + */ + function getPassPhrase() + { + return $this->passPhrase; + } + + /** + * Adds a comment to be used in encoded files + */ + function addComment(IoncubeComment $comment) + { + $this->comments[] = $comment; + } + + /** + * The main entry point + * + * @throws BuildException + */ + function main() + { + $arguments = $this->constructArguments(); + + $makelicense = new PhingFile($this->ioncubePath, 'make_license'); + + $this->log("Running ionCube make_license..."); + + exec($makelicense->__toString() . " " . $arguments . " 2>&1", $output, $return); + + if ($return != 0) + { + throw new BuildException("Could not execute ionCube make_license: " . implode(' ', $output)); + } + } + + /** + * Constructs an argument string for the ionCube make_license + */ + private function constructArguments() + { + $arguments = ""; + + if (!empty($this->passPhrase)) + { + $arguments.= "--passphrase '" . $this->passPhrase . "' "; + } + + foreach ($this->comments as $comment) + { + $arguments.= "--header-line '" . $comment->getValue() . "' "; + } + + if (!empty($this->licensePath)) + { + $arguments.= "--o '" . $this->licensePath . "' "; + } + + return $arguments; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/.svn/all-wcprops new file mode 100644 index 0000000..5660b69 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/.svn/all-wcprops @@ -0,0 +1,41 @@ +K 25 +svn:wc:ra_dav:version-url +V 52 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/pdo +END +PlainPDOResultFormatter.php +K 25 +svn:wc:ra_dav:version-url +V 80 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/pdo/PlainPDOResultFormatter.php +END +PDOSQLExecTask.php +K 25 +svn:wc:ra_dav:version-url +V 71 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/pdo/PDOSQLExecTask.php +END +PDOResultFormatter.php +K 25 +svn:wc:ra_dav:version-url +V 75 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/pdo/PDOResultFormatter.php +END +PDOSQLExecFormatterElement.php +K 25 +svn:wc:ra_dav:version-url +V 83 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/pdo/PDOSQLExecFormatterElement.php +END +PDOTask.php +K 25 +svn:wc:ra_dav:version-url +V 64 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/pdo/PDOTask.php +END +XMLPDOResultFormatter.php +K 25 +svn:wc:ra_dav:version-url +V 78 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/pdo/XMLPDOResultFormatter.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/.svn/entries new file mode 100644 index 0000000..afb4db4 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/.svn/entries @@ -0,0 +1,232 @@ +10 + +dir +1404 +http://phing.mirror.svn.symfony-project.com/tags/2.3.3/classes/phing/tasks/ext/pdo +http://phing.mirror.svn.symfony-project.com + + + +2008-07-29T17:47:33.104298Z +382 +mrook + + + + + + + + + + + + + + +c8b19502-6211-4773-8637-5aef67d587fc + +PlainPDOResultFormatter.php +file + + + + +2012-05-10T18:42:00.457551Z +129018373690951218d8d8534c5f9c84 +2007-12-20T15:44:58.929962Z +325 +hans + + + + + + + + + + + + + + + + + + + + + +3032 + +PDOSQLExecTask.php +file + + + + +2012-05-10T18:42:00.457551Z +0b20b34904491ba3db8f548784c745d7 +2008-07-29T17:47:33.104298Z +382 +mrook + + + + + + + + + + + + + + + + + + + + + +17204 + +PDOResultFormatter.php +file + + + + +2012-05-10T18:42:00.461555Z +9c6fdd851d741d223b0180ceeb545f2d +2007-12-20T15:44:58.929962Z +325 +hans + + + + + + + + + + + + + + + + + + + + + +2038 + +PDOSQLExecFormatterElement.php +file + + + + +2012-05-10T18:42:00.461555Z +dff3de6f8ed3176e38e5010152ea8b72 +2007-12-20T15:44:58.929962Z +325 +hans + + + + + + + + + + + + + + + + + + + + + +7786 + +PDOTask.php +file + + + + +2012-05-10T18:42:00.544011Z +bc851ebca2ce1d44296c29b3cfc261dd +2007-10-23T02:11:30.935611Z +260 +hans + + + + + + + + + + + + + + + + + + + + + +5974 + +XMLPDOResultFormatter.php +file + + + + +2012-05-10T18:42:00.544011Z +5fd2e1e0ac897cc8c4249c546520a4f9 +2007-12-20T15:44:58.929962Z +325 +hans + + + + + + + + + + + + + + + + + + + + + +3509 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/.svn/text-base/PDOResultFormatter.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/.svn/text-base/PDOResultFormatter.php.svn-base new file mode 100644 index 0000000..313bcb2 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/.svn/text-base/PDOResultFormatter.php.svn-base @@ -0,0 +1,84 @@ +. + */ + +require_once 'phing/system/io/PhingFile.php'; + +/** + * Abstract + * + * @author Hans Lellelid + * @package phing.tasks.ext.pdo + * @since 2.3.0 + */ +abstract class PDOResultFormatter +{ + /** + * Output writer. + * + * @var Writer + */ + protected $out; + + /** + * Sets the output writer. + * + * @param Writer $out + */ + public function setOutput(Writer $out) { + $this->out = $out; + } + + /** + * Gets the output writer. + * + * @return Writer + */ + public function getOutput() { + return $this->out; + } + + /** + * Gets the preferred output filename for this formatter. + * @return string + */ + abstract public function getPreferredOutfile(); + + /** + * Perform any initialization. + */ + public function initialize() { + + } + + /** + * Processes a specific row from PDO result set. + * + * @param array $row Row of PDO result set. + */ + abstract public function processRow($row); + + /** + * Perform any final tasks and Close the writer. + */ + public function close() { + $this->out->close(); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/.svn/text-base/PDOSQLExecFormatterElement.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/.svn/text-base/PDOSQLExecFormatterElement.php.svn-base new file mode 100644 index 0000000..2ef8337 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/.svn/text-base/PDOSQLExecFormatterElement.php.svn-base @@ -0,0 +1,312 @@ +. + */ + +require_once 'phing/system/io/PhingFile.php'; +require_once 'phing/tasks/ext/pdo/PlainPDOResultFormatter.php'; +require_once 'phing/tasks/ext/pdo/XMLPDOResultFormatter.php'; + +/** + * A class to represent the nested element for PDO SQL results. + * + * This class is inspired by the similarly-named class in the PHPUnit tasks. + * + * @author Hans Lellelid + * @package phing.tasks.ext.pdo + * @since 2.3.0 + */ +class PDOSQLExecFormatterElement +{ + /** + * @var PDOResultFormatter + */ + private $formatter; + + /** + * The type of the formatter (used for built-in formatter classes). + * @var string + */ + private $type = ""; + + /** + * Whether to use file (or write output to phing log). + * @var boolean + */ + private $useFile = true; + + /** + * Output file for formatter. + * @var PhingFile + */ + private $outfile; + + /** + * Print header columns. + * @var boolean + */ + private $showheaders = true; + + /** + * Whether to format XML output. + * @var boolean + */ + private $formatoutput = true; + + /** + * Encoding for XML output. + * @var string + */ + private $encoding; + + /** + * Column delimiter. + * Defaults to ',' + * @var string + */ + private $coldelimiter = ","; + + /** + * Row delimiter. + * Defaults to PHP_EOL. + * @var string + */ + private $rowdelimiter = PHP_EOL; + + /** + * Append to an existing file or overwrite it? + * @var boolean + */ + private $append = false; + + /** + * Parameters for a custom formatter. + * @var array Parameter[] + */ + private $formatterParams = array(); + + /** + * @var PDOSQLExecTask + */ + private $parentTask; + + /** + * Construct a new PDOSQLExecFormatterElement with parent task. + * @param PDOSQLExecTask $parentTask + */ + public function __construct(PDOSQLExecTask $parentTask) + { + $this->parentTask = $parentTask; + } + + /** + * Supports nested element (for custom formatter classes). + * @return Parameter + */ + public function createParam() { + $num = array_push($this->parameters, new Parameter()); + return $this->parameters[$num-1]; + } + + /** + * Gets a configured output writer. + * @return Writer + */ + private function getOutputWriter() + { + if ($this->useFile) { + $of = $this->getOutfile(); + if (!$of) { + $of = new PhingFile($this->formatter->getPreferredOutfile()); + } + return new FileWriter($of, $this->append); + } else { + return $this->getDefaultOutput(); + } + } + + /** + * Configures wrapped formatter class with any attributes on this element. + */ + public function prepare() { + + if (!$this->formatter) { + throw new BuildException("No formatter specified (use type or classname attribute)", $this->getLocation()); + } + + $out = $this->getOutputWriter(); + + print "Setting output writer to: " . get_class($out) . "\n"; + $this->formatter->setOutput($out); + + if ($this->formatter instanceof PlainPDOResultFormatter) { + // set any options that apply to the plain formatter + $this->formatter->setShowheaders($this->showheaders); + $this->formatter->setRowdelim($this->rowdelimiter); + $this->formatter->setColdelim($this->coldelimiter); + } elseif ($this->formatter instanceof XMLPDOResultFormatter) { + // set any options that apply to the xml formatter + $this->formatter->setEncoding($this->encoding); + $this->formatter->setFormatOutput($this->formatoutput); + } + + foreach($this->formatterParams as $param) { + $param = new Parameter(); + $method = 'set' . $param->getName(); + if (!method_exists($this->formatter, $param->getName())) { + throw new BuildException("Formatter " . get_class($this->formatter) . " does not have a $method method.", $this->getLocation()); + } + call_user_func(array($this->formatter, $method), $param->getValue()); + } + } + + /** + * Sets the formatter type. + * @param string $type + */ + function setType($type) { + $this->type = $type; + if ($this->type == "xml") { + $this->formatter = new XMLPDOResultFormatter(); + } elseif ($this->type == "plain") { + $this->formatter = new PlainPDOResultFormatter(); + } else { + throw new BuildException("Formatter '" . $this->type . "' not implemented"); + } + } + + /** + * Set classname for a custom formatter (must extend PDOResultFormatter). + * @param string $className + */ + function setClassName($className) { + $classNameNoDot = Phing::import($className); + $this->formatter = new $classNameNoDot(); + } + + /** + * Set whether to write formatter results to file. + * @param boolean $useFile + */ + function setUseFile($useFile) { + $this->useFile = (boolean) $useFile; + } + + /** + * Return whether to write formatter results to file. + * @return boolean + */ + function getUseFile() { + return $this->useFile; + } + + /** + * Sets the output file for the formatter results. + * @param PhingFile $outFile + */ + function setOutfile(PhingFile $outfile) { + $this->outfile = $outfile; + } + + /** + * Get the output file. + * @return PhingFile + */ + function getOutfile() { + return $this->outfile; + /* + } else { + return new PhingFile($this->formatter->getPreferredOutfile()); + }*/ + } + + /** + * whether output should be appended to or overwrite + * an existing file. Defaults to false. + * @param boolean $append + */ + public function setAppend($append) { + $this->append = (boolean) $append; + } + + /** + * Whether output should be appended to file. + * @return boolean + */ + public function getAppend() { + return $this->append; + } + + /** + * Print headers for result sets from the + * statements; optional, default true. + * @param boolean $showheaders + */ + public function setShowheaders($showheaders) { + $this->showheaders = (boolean) $showheaders; + } + + /** + * Sets the column delimiter. + * @param string $v + */ + public function setColdelim($v) { + $this->coldelimiter = $v; + } + + /** + * Sets the row delimiter. + * @param string $v + */ + public function setRowdelim($v) { + $this->rowdelimiter = $v; + } + + /** + * Set the DOM document encoding. + * @param string $v + */ + public function setEncoding($v) { + $this->encoding = $v; + } + + /** + * @param boolean $v + */ + public function setFormatOutput($v) { + $this->formatOutput = (boolean) $v; + } + + /** + * Gets a default output writer for this task. + * @return Writer + */ + private function getDefaultOutput() + { + return new LogWriter($this->parentTask); + } + + /** + * Gets the formatter that has been configured based on this element. + * @return PDOResultFormatter + */ + function getFormatter() { + return $this->formatter; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/.svn/text-base/PDOSQLExecTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/.svn/text-base/PDOSQLExecTask.php.svn-base new file mode 100644 index 0000000..79e9895 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/.svn/text-base/PDOSQLExecTask.php.svn-base @@ -0,0 +1,614 @@ +. + */ + +require_once 'phing/tasks/ext/pdo/PDOTask.php'; +include_once 'phing/system/io/StringReader.php'; +include_once 'phing/tasks/ext/pdo/PDOSQLExecFormatterElement.php'; + +/** + * Executes a series of SQL statements on a database using PDO. + * + *

    Statements can + * either be read in from a text file using the src attribute or from + * between the enclosing SQL tags.

    + * + *

    Multiple statements can be provided, separated by semicolons (or the + * defined delimiter). Individual lines within the statements can be + * commented using either --, // or REM at the start of the line.

    + * + *

    The autocommit attribute specifies whether auto-commit should be + * turned on or off whilst executing the statements. If auto-commit is turned + * on each statement will be executed and committed. If it is turned off the + * statements will all be executed as one transaction.

    + * + *

    The onerror attribute specifies how to proceed when an error occurs + * during the execution of one of the statements. + * The possible values are: continue execution, only show the error; + * stop execution and commit transaction; + * and abort execution and transaction and fail task.

    + * + * @author Hans Lellelid (Phing) + * @author Jeff Martin (Ant) + * @author Michael McCallum (Ant) + * @author Tim Stephenson (Ant) + * @package phing.tasks.ext + * @version $Revision: 1.21 $ + */ +class PDOSQLExecTask extends PDOTask { + + /** + * Count of how many statements were executed successfully. + * @var int + */ + private $goodSql = 0; + + /** + * Count of total number of SQL statements. + * @var int + */ + private $totalSql = 0; + + const DELIM_ROW = "row"; + const DELIM_NORMAL = "normal"; + + /** + * Database connection + * @var PDO + */ + private $conn = null; + + /** + * Files to load + * @var array FileSet[] + */ + private $filesets = array(); + + /** + * Formatter elements. + * @var array PDOSQLExecFormatterElement[] + */ + private $formatters = array(); + + /** + * SQL statement + * @var PDOStatement + */ + private $statement; + + /** + * SQL input file + * @var PhingFile + */ + private $srcFile; + + /** + * SQL input command + * @var string + */ + private $sqlCommand = ""; + + /** + * SQL transactions to perform + */ + private $transactions = array(); + + /** + * SQL Statement delimiter (for parsing files) + * @var string + */ + private $delimiter = ";"; + + /** + * The delimiter type indicating whether the delimiter will + * only be recognized on a line by itself + */ + private $delimiterType = "normal"; // can't use constant just defined + + /** + * Action to perform if an error is found + **/ + private $onError = "abort"; + + /** + * Encoding to use when reading SQL statements from a file + */ + private $encoding = null; + + /** + * Fetch mode for PDO select queries. + * @var int + */ + private $fetchMode; + + /** + * Set the name of the SQL file to be run. + * Required unless statements are enclosed in the build file + */ + public function setSrc(PhingFile $srcFile) { + $this->srcFile = $srcFile; + } + + /** + * Set an inline SQL command to execute. + * NB: Properties are not expanded in this text. + */ + public function addText($sql) { + $this->sqlCommand .= $sql; + } + + /** + * Adds a set of files (nested fileset attribute). + */ + public function addFileset(FileSet $set) { + $this->filesets[] = $set; + } + + /** + * Creates a new PDOSQLExecFormatterElement for element. + * @return PDOSQLExecFormatterElement + */ + public function createFormatter() + { + $fe = new PDOSQLExecFormatterElement($this); + $this->formatters[] = $fe; + return $fe; + } + + /** + * Add a SQL transaction to execute + */ + public function createTransaction() { + $t = new PDOSQLExecTransaction($this); + $this->transactions[] = $t; + return $t; + } + + /** + * Set the file encoding to use on the SQL files read in + * + * @param encoding the encoding to use on the files + */ + public function setEncoding($encoding) { + $this->encoding = $encoding; + } + + /** + * Set the statement delimiter. + * + *

    For example, set this to "go" and delimitertype to "ROW" for + * Sybase ASE or MS SQL Server.

    + * + * @param delimiter + */ + public function setDelimiter($delimiter) + { + $this->delimiter = $delimiter; + } + + /** + * Set the Delimiter type for this sql task. The delimiter type takes two + * values - normal and row. Normal means that any occurence of the delimiter + * terminate the SQL command whereas with row, only a line containing just + * the delimiter is recognized as the end of the command. + * + * @param string $delimiterType + */ + public function setDelimiterType($delimiterType) + { + $this->delimiterType = $delimiterType; + } + + /** + * Action to perform when statement fails: continue, stop, or abort + * optional; default "abort" + */ + public function setOnerror($action) { + $this->onError = $action; + } + + /** + * Sets the fetch mode to use for the PDO resultset. + * @param mixed $mode The PDO fetchmode integer or constant name. + */ + public function setFetchmode($mode) { + if (is_numeric($mode)) { + $this->fetchMode = (int) $mode; + } else { + if (defined($mode)) { + $this->fetchMode = constant($mode); + } else { + throw new BuildException("Invalid PDO fetch mode specified: " . $mode, $this->getLocation()); + } + } + } + + /** + * Gets a default output writer for this task. + * @return Writer + */ + private function getDefaultOutput() + { + return new LogWriter($this); + } + + /** + * Load the sql file and then execute it + * @throws BuildException + */ + public function main() { + + // Set a default fetchmode if none was specified + // (We're doing that here to prevent errors loading the class is PDO is not available.) + if ($this->fetchMode === null) { + $this->fetchMode = PDO::FETCH_BOTH; + } + + // Initialize the formatters here. This ensures that any parameters passed to the formatter + // element get passed along to the actual formatter object + foreach($this->formatters as $fe) { + $fe->prepare(); + } + + $savedTransaction = array(); + for($i=0,$size=count($this->transactions); $i < $size; $i++) { + $savedTransaction[] = clone $this->transactions[$i]; + } + + $savedSqlCommand = $this->sqlCommand; + + $this->sqlCommand = trim($this->sqlCommand); + + try { + if ($this->srcFile === null && $this->sqlCommand === "" + && empty($this->filesets)) { + if (count($this->transactions) === 0) { + throw new BuildException("Source file or fileset, " + . "transactions or sql statement " + . "must be set!", $this->location); + } + } + + if ($this->srcFile !== null && !$this->srcFile->exists()) { + throw new BuildException("Source file does not exist!", $this->location); + } + + // deal with the filesets + foreach($this->filesets as $fs) { + $ds = $fs->getDirectoryScanner($this->project); + $srcDir = $fs->getDir($this->project); + $srcFiles = $ds->getIncludedFiles(); + // Make a transaction for each file + foreach($srcFiles as $srcFile) { + $t = $this->createTransaction(); + $t->setSrc(new PhingFile($srcDir, $srcFile)); + } + } + + // Make a transaction group for the outer command + $t = $this->createTransaction(); + if ($this->srcFile) $t->setSrc($this->srcFile); + $t->addText($this->sqlCommand); + $this->conn = $this->getConnection(); + + try { + + $this->statement = null; + + // Initialize the formatters. + $this->initFormatters(); + + try { + + // Process all transactions + for ($i=0,$size=count($this->transactions); $i < $size; $i++) { + if (!$this->isAutocommit()) { + $this->log("Beginning transaction", Project::MSG_VERBOSE); + $this->conn->beginTransaction(); + } + $this->transactions[$i]->runTransaction(); + if (!$this->isAutocommit()) { + $this->log("Commiting transaction", Project::MSG_VERBOSE); + $this->conn->commit(); + } + } + } catch (Exception $e) { + throw $e; + } + } catch (IOException $e) { + if (!$this->isAutocommit() && $this->conn !== null && $this->onError == "abort") { + try { + $this->conn->rollback(); + } catch (PDOException $ex) {} + } + throw new BuildException($e->getMessage(), $this->location); + } catch (PDOException $e){ + if (!$this->isAutocommit() && $this->conn !== null && $this->onError == "abort") { + try { + $this->conn->rollback(); + } catch (PDOException $ex) {} + } + throw new BuildException($e->getMessage(), $this->location); + } + + // Close the formatters. + $this->closeFormatters(); + + $this->log($this->goodSql . " of " . $this->totalSql . + " SQL statements executed successfully"); + + } catch (Exception $e) { + $this->transactions = $savedTransaction; + $this->sqlCommand = $savedSqlCommand; + throw $e; + } + // finally { + $this->transactions = $savedTransaction; + $this->sqlCommand = $savedSqlCommand; + + } + + + /** + * read in lines and execute them + * @throws PDOException, IOException + */ + public function runStatements(Reader $reader) { + $sql = ""; + $line = ""; + $sqlBacklog = ""; + $hasQuery = false; + + $in = new BufferedReader($reader); + + try { + while (($line = $in->readLine()) !== null) { + $line = trim($line); + $line = ProjectConfigurator::replaceProperties($this->project, $line, + $this->project->getProperties()); + + if (StringHelper::startsWith("//", $line) || + StringHelper::startsWith("--", $line) || + StringHelper::startsWith("#", $line)) { + continue; + } + + if (strlen($line) > 4 + && strtoupper(substr($line,0, 4)) == "REM ") { + continue; + } + + if ($sqlBacklog !== "") { + $sql = $sqlBacklog; + $sqlBacklog = ""; + } + + $sql .= " " . $line . "\n"; + + // SQL defines "--" as a comment to EOL + // and in Oracle it may contain a hint + // so we cannot just remove it, instead we must end it + if (strpos($line, "--") !== false) { + $sql .= "\n"; + } + + // DELIM_ROW doesn't need this (as far as i can tell) + if ($this->delimiterType == self::DELIM_NORMAL) { + + $reg = "#((?:\"(?:\\\\.|[^\"])*\"?)+|'(?:\\\\.|[^'])*'?|" . preg_quote($this->delimiter) . ")#"; + + $sqlParts = preg_split($reg, $sql, 0, PREG_SPLIT_DELIM_CAPTURE); + $sqlBacklog = ""; + foreach ($sqlParts as $sqlPart) { + // we always want to append, even if it's a delim (which will be stripped off later) + $sqlBacklog .= $sqlPart; + + // we found a single (not enclosed by ' or ") delimiter, so we can use all stuff before the delim as the actual query + if ($sqlPart === $this->delimiter) { + $sql = $sqlBacklog; + $sqlBacklog = ""; + $hasQuery = true; + } + } + } + + if ($hasQuery || ($this->delimiterType == self::DELIM_ROW && $line == $this->delimiter)) { + // this assumes there is always a delimter on the end of the SQL statement. + $sql = StringHelper::substring($sql, 0, strlen($sql) - 1 - strlen($this->delimiter)); + $this->log("SQL: " . $sql, Project::MSG_VERBOSE); + $this->execSQL($sql); + $sql = ""; + $hasQuery = false; + } + } + + // Catch any statements not followed by ; + if ($sql !== "") { + $this->execSQL($sql); + } + } catch (PDOException $e) { + throw $e; + } + } + + /** + * Whether the passed-in SQL statement is a SELECT statement. + * This does a pretty simple match, checking to see if statement starts with + * 'select' (but not 'select into'). + * + * @param string $sql + * @return boolean Whether specified SQL looks like a SELECT query. + */ + protected function isSelectSql($sql) + { + $sql = trim($sql); + return (stripos($sql, 'select') === 0 && stripos($sql, 'select into ') !== 0); + } + + /** + * Exec the sql statement. + * @throws PDOException + */ + protected function execSQL($sql) { + + // Check and ignore empty statements + if (trim($sql) == "") { + return; + } + + try { + $this->totalSql++; + + $this->statement = $this->conn->prepare($sql); + $this->statement->execute(); + $this->log($this->statement->rowCount() . " rows affected", Project::MSG_VERBOSE); + + // only call processResults() for statements that return actual data (such as 'select') + if ($this->statement->columnCount() > 0) + { + $this->processResults(); + } + + $this->statement->closeCursor(); + $this->statement = null; + + $this->goodSql++; + + } catch (PDOException $e) { + $this->log("Failed to execute: " . $sql, Project::MSG_ERR); + if ($this->onError != "continue") { + throw new BuildException("Failed to execute SQL", $e); + } + $this->log($e->getMessage(), Project::MSG_ERR); + } + } + + /** + * Returns configured PDOResultFormatter objects (which were created from PDOSQLExecFormatterElement objects). + * @return array PDOResultFormatter[] + */ + protected function getConfiguredFormatters() + { + $formatters = array(); + foreach ($this->formatters as $fe) { + $formatters[] = $fe->getFormatter(); + } + return $formatters; + } + + /** + * Initialize the formatters. + */ + protected function initFormatters() { + $formatters = $this->getConfiguredFormatters(); + foreach ($formatters as $formatter) { + $formatter->initialize(); + } + + } + + /** + * Run cleanup and close formatters. + */ + protected function closeFormatters() { + $formatters = $this->getConfiguredFormatters(); + foreach ($formatters as $formatter) { + $formatter->close(); + } + } + + /** + * Passes results from query to any formatters. + * @throw PDOException + */ + protected function processResults() { + + try { + + $this->log("Processing new result set.", Project::MSG_VERBOSE); + + $formatters = $this->getConfiguredFormatters(); + + while ($row = $this->statement->fetch($this->fetchMode)) { + foreach ($formatters as $formatter) { + $formatter->processRow($row); + } + } + + } catch (Exception $x) { + $this->log("Error processing reults: " . $x->getMessage(), Project::MSG_ERR); + foreach ($formatters as $formatter) { + $formatter->close(); + } + throw $x; + } + + } +} + +/** + * "Inner" class that contains the definition of a new transaction element. + * Transactions allow several files or blocks of statements + * to be executed using the same JDBC connection and commit + * operation in between. + */ +class PDOSQLExecTransaction { + + private $tSrcFile = null; + private $tSqlCommand = ""; + private $parent; + + function __construct($parent) + { + // Parent is required so that we can log things ... + $this->parent = $parent; + } + + public function setSrc(PhingFile $src) + { + $this->tSrcFile = $src; + } + + public function addText($sql) + { + $this->tSqlCommand .= $sql; + } + + /** + * @throws IOException, PDOException + */ + public function runTransaction() + { + if (!empty($this->tSqlCommand)) { + $this->parent->log("Executing commands", Project::MSG_INFO); + $this->parent->runStatements(new StringReader($this->tSqlCommand)); + } + + if ($this->tSrcFile !== null) { + $this->parent->log("Executing file: " . $this->tSrcFile->getAbsolutePath(), + Project::MSG_INFO); + $reader = new FileReader($this->tSrcFile); + $this->parent->runStatements($reader); + $reader->close(); + } + } +} + + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/.svn/text-base/PDOTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/.svn/text-base/PDOTask.php.svn-base new file mode 100644 index 0000000..fd2b562 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/.svn/text-base/PDOTask.php.svn-base @@ -0,0 +1,217 @@ +. + */ + +require_once 'phing/Task.php'; +include_once 'phing/types/Reference.php'; + +/** + * Handles PDO configuration needed by SQL type tasks. + * + * @author Hans Lellelid (Phing) + * @author Nick Chalko (Ant) + * @author Jeff Martin (Ant) + * @author Michael McCallum (Ant) + * @author Tim Stephenson (Ant) + * @version $Revision: 1.13 $ + * @package phing.tasks.system + */ +abstract class PDOTask extends Task { + + private $caching = true; + + /** + * Autocommit flag. Default value is false + */ + private $autocommit = false; + + /** + * DB url. + */ + private $url; + + /** + * User name. + */ + private $userId; + + /** + * Password + */ + private $password; + + /** + * RDBMS Product needed for this SQL. + **/ + private $rdbms; + + /** + * Initialize CreoleTask. + * This method includes any necessary Creole libraries and triggers + * appropriate error if they cannot be found. This is not done in header + * because we may want this class to be loaded w/o triggering an error. + */ + function init() { + if (!class_exists('PDO')) { + throw new Exception("PDOTask depends on PDO feature being included in PHP."); + } + } + + /** + * Caching loaders / driver. This is to avoid + * getting an OutOfMemoryError when calling this task + * multiple times in a row; default: true + * @param $enable + */ + public function setCaching($enable) { + $this->caching = $enable; + } + + /** + * Sets the database connection URL; required. + * @param url The url to set + */ + public function setUrl($url) { + $this->url = $url; + } + + /** + * Sets the password; required. + * @param password The password to set + */ + public function setPassword($password) { + $this->password = $password; + } + + /** + * Auto commit flag for database connection; + * optional, default false. + * @param autocommit The autocommit to set + */ + public function setAutocommit($autocommit) { + $this->autocommit = $autocommit; + } + + /** + * Sets the version string, execute task only if + * rdbms version match; optional. + * @param version The version to set + */ + public function setVersion($version) { + $this->version = $version; + } + + protected function getLoaderMap() { + return self::$loaderMap; + } + + + /** + * Creates a new Connection as using the driver, url, userid and password specified. + * The calling method is responsible for closing the connection. + * @return Connection the newly created connection. + * @throws BuildException if the UserId/Password/Url is not set or there is no suitable driver or the driver fails to load. + */ + protected function getConnection() { + + if ($this->url === null) { + throw new BuildException("Url attribute must be set!", $this->location); + } + + try { + + $this->log("Connecting to " . $this->getUrl(), Project::MSG_VERBOSE); + + $user = null; + $pass = null; + + if ($this->userId) { + $user = $this->getUserId(); + } + + if ($this->password) { + $pass = $this->getPassword(); + } + + $conn = new PDO($this->getUrl(), $user, $pass); + $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + + if ($this->autocommit) { + try { + $conn->setAttribute(PDO::ATTR_AUTOCOMMIT, $this->autocommit); + } catch (PDOException $pe) { + $this->log("Unable to enable auto-commit for this database: " . $pe->getMessage(), Project::MSG_WARN); + } + } + + return $conn; + + } catch (SQLException $e) { + throw new BuildException($e->getMessage(), $this->location); + } + + } + + public function isCaching($value) { + $this->caching = $value; + } + + /** + * Gets the autocommit. + * @return Returns a boolean + */ + public function isAutocommit() { + return $this->autocommit; + } + + /** + * Gets the url. + * @return Returns a String + */ + public function getUrl() { + return $this->url; + } + + /** + * Gets the userId. + * @return Returns a String + */ + public function getUserId() { + return $this->userId; + } + + /** + * Set the user name for the connection; required. + * @param userId The userId to set + */ + public function setUserid($userId) { + $this->userId = $userId; + } + + /** + * Gets the password. + * @return Returns a String + */ + public function getPassword() { + return $this->password; + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/.svn/text-base/PlainPDOResultFormatter.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/.svn/text-base/PlainPDOResultFormatter.php.svn-base new file mode 100644 index 0000000..2937185 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/.svn/text-base/PlainPDOResultFormatter.php.svn-base @@ -0,0 +1,130 @@ +. + */ + +require_once 'phing/system/io/PhingFile.php'; +require_once 'phing/tasks/ext/pdo/PDOResultFormatter.php'; + +/** + * Plain text formatter for PDO results. + * + * @author Hans Lellelid + * @package phing.tasks.ext.pdo + * @since 2.3.0 + */ +class PlainPDOResultFormatter extends PDOResultFormatter +{ + /** + * Have column headers been printed? + * @var boolean + */ + private $colsprinted = false; + + /** + * Whether to show headers. + * @var boolean + */ + private $showheaders = true; + + /** + * Column delimiter. + * Defaults to ',' + * @var string + */ + private $coldelimiter = ","; + + /** + * Row delimiter. + * Defaults to PHP_EOL. + * @var string + */ + private $rowdelimiter = PHP_EOL; + + /** + * Set the showheaders attribute. + * @param boolean $v + */ + public function setShowheaders($v) { + $this->showheaders = StringHelper::booleanValue($v); + } + + /** + * Sets the column delimiter. + * @param string $v + */ + public function setColdelim($v) { + $this->coldelimiter = $v; + } + + /** + * Sets the row delimiter. + * @param string $v + */ + public function setRowdelim($v) { + $this->rowdelimiter = $v; + } + + /** + * Processes a specific row from PDO result set. + * + * @param array $row Row of PDO result set. + */ + public function processRow($row) { + + if (!$this->colsprinted && $this->showheaders) { + $first = true; + foreach($row as $fieldName => $ignore) { + if ($first) $first = false; else $line .= ","; + $line .= $fieldName; + } + + $this->out->write($line); + $this->out->write(PHP_EOL); + + $line = ""; + $colsprinted = true; + } // if show headers + + $first = true; + foreach($row as $columnValue) { + + if ($columnValue != null) { + $columnValue = trim($columnValue); + } + + if ($first) { + $first = false; + } else { + $line .= $this->coldelimiter; + } + $line .= $columnValue; + } + + $this->out->write($line); + $this->out->write($this->rowdelimiter); + + } + + public function getPreferredOutfile() + { + return new PhingFile('results.txt'); + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/.svn/text-base/XMLPDOResultFormatter.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/.svn/text-base/XMLPDOResultFormatter.php.svn-base new file mode 100644 index 0000000..35c516c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/.svn/text-base/XMLPDOResultFormatter.php.svn-base @@ -0,0 +1,141 @@ +. + */ + +require_once 'phing/system/io/PhingFile.php'; +require_once 'phing/tasks/ext/pdo/PDOResultFormatter.php'; + +/** + * XML formatter for PDO results. + * + * This class reprsents the output of a query using a simple XML schema. + * + * + * + * value + * value2 + * + * + * value + * value2 + * + * + * + * The actual names of the colums will depend on the fetchmode that was used + * with PDO. + * + * @author Hans Lellelid + * @package phing.tasks.ext.pdo + * @since 2.3.0 + */ +class XMLPDOResultFormatter extends PDOResultFormatter { + + /** + * The XML document being created. + * @var DOMDocument + */ + private $doc; + + /** + * @var DOMElement + */ + private $rootNode; + + /** + * XML document encoding + * + * @var string + */ + private $encoding; + + /** + * @var boolean + */ + private $formatOutput = true; + + /** + * Set the DOM document encoding. + * @param string $v + */ + public function setEncoding($v) { + $this->encoding = $v; + } + + /** + * @param boolean $v + */ + public function setFormatOutput($v) { + $this->formatOutput = (boolean) $v; + } + + public function initialize() { + $this->doc = new DOMDocument("1.0", $this->encoding); + $this->rootNode = $this->doc->createElement('results'); + $this->doc->appendChild($this->rootNode); + $this->doc->formatOutput = $this->formatOutput; + } + + /** + * Processes a specific row from PDO result set. + * + * @param array $row Row of PDO result set. + */ + public function processRow($row) { + + $rowNode = $this->doc->createElement('row'); + $this->rootNode->appendChild($rowNode); + + foreach($row as $columnName => $columnValue) { + + $colNode = $this->doc->createElement('column'); + $colNode->setAttribute('name', $columnName); + + if ($columnValue != null) { + $columnValue = trim($columnValue); + $colNode->nodeValue = $columnValue; + } + $rowNode->appendChild($colNode); + } + + } + + /** + * Gets a preferred filename for an output file. + * + * If no filename is specified, this is where the results will be placed + * (unless usefile=false). + * + * @return string + */ + public function getPreferredOutfile() + { + return new PhingFile('results.xml'); + } + + /** + * Write XML to file and free the DOM objects. + */ + public function close() { + $this->out->write($this->doc->saveXML()); + $this->rootNode = null; + $this->doc = null; + parent::close(); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/PDOResultFormatter.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/PDOResultFormatter.php new file mode 100644 index 0000000..313bcb2 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/PDOResultFormatter.php @@ -0,0 +1,84 @@ +. + */ + +require_once 'phing/system/io/PhingFile.php'; + +/** + * Abstract + * + * @author Hans Lellelid + * @package phing.tasks.ext.pdo + * @since 2.3.0 + */ +abstract class PDOResultFormatter +{ + /** + * Output writer. + * + * @var Writer + */ + protected $out; + + /** + * Sets the output writer. + * + * @param Writer $out + */ + public function setOutput(Writer $out) { + $this->out = $out; + } + + /** + * Gets the output writer. + * + * @return Writer + */ + public function getOutput() { + return $this->out; + } + + /** + * Gets the preferred output filename for this formatter. + * @return string + */ + abstract public function getPreferredOutfile(); + + /** + * Perform any initialization. + */ + public function initialize() { + + } + + /** + * Processes a specific row from PDO result set. + * + * @param array $row Row of PDO result set. + */ + abstract public function processRow($row); + + /** + * Perform any final tasks and Close the writer. + */ + public function close() { + $this->out->close(); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/PDOSQLExecFormatterElement.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/PDOSQLExecFormatterElement.php new file mode 100644 index 0000000..2ef8337 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/PDOSQLExecFormatterElement.php @@ -0,0 +1,312 @@ +. + */ + +require_once 'phing/system/io/PhingFile.php'; +require_once 'phing/tasks/ext/pdo/PlainPDOResultFormatter.php'; +require_once 'phing/tasks/ext/pdo/XMLPDOResultFormatter.php'; + +/** + * A class to represent the nested element for PDO SQL results. + * + * This class is inspired by the similarly-named class in the PHPUnit tasks. + * + * @author Hans Lellelid + * @package phing.tasks.ext.pdo + * @since 2.3.0 + */ +class PDOSQLExecFormatterElement +{ + /** + * @var PDOResultFormatter + */ + private $formatter; + + /** + * The type of the formatter (used for built-in formatter classes). + * @var string + */ + private $type = ""; + + /** + * Whether to use file (or write output to phing log). + * @var boolean + */ + private $useFile = true; + + /** + * Output file for formatter. + * @var PhingFile + */ + private $outfile; + + /** + * Print header columns. + * @var boolean + */ + private $showheaders = true; + + /** + * Whether to format XML output. + * @var boolean + */ + private $formatoutput = true; + + /** + * Encoding for XML output. + * @var string + */ + private $encoding; + + /** + * Column delimiter. + * Defaults to ',' + * @var string + */ + private $coldelimiter = ","; + + /** + * Row delimiter. + * Defaults to PHP_EOL. + * @var string + */ + private $rowdelimiter = PHP_EOL; + + /** + * Append to an existing file or overwrite it? + * @var boolean + */ + private $append = false; + + /** + * Parameters for a custom formatter. + * @var array Parameter[] + */ + private $formatterParams = array(); + + /** + * @var PDOSQLExecTask + */ + private $parentTask; + + /** + * Construct a new PDOSQLExecFormatterElement with parent task. + * @param PDOSQLExecTask $parentTask + */ + public function __construct(PDOSQLExecTask $parentTask) + { + $this->parentTask = $parentTask; + } + + /** + * Supports nested element (for custom formatter classes). + * @return Parameter + */ + public function createParam() { + $num = array_push($this->parameters, new Parameter()); + return $this->parameters[$num-1]; + } + + /** + * Gets a configured output writer. + * @return Writer + */ + private function getOutputWriter() + { + if ($this->useFile) { + $of = $this->getOutfile(); + if (!$of) { + $of = new PhingFile($this->formatter->getPreferredOutfile()); + } + return new FileWriter($of, $this->append); + } else { + return $this->getDefaultOutput(); + } + } + + /** + * Configures wrapped formatter class with any attributes on this element. + */ + public function prepare() { + + if (!$this->formatter) { + throw new BuildException("No formatter specified (use type or classname attribute)", $this->getLocation()); + } + + $out = $this->getOutputWriter(); + + print "Setting output writer to: " . get_class($out) . "\n"; + $this->formatter->setOutput($out); + + if ($this->formatter instanceof PlainPDOResultFormatter) { + // set any options that apply to the plain formatter + $this->formatter->setShowheaders($this->showheaders); + $this->formatter->setRowdelim($this->rowdelimiter); + $this->formatter->setColdelim($this->coldelimiter); + } elseif ($this->formatter instanceof XMLPDOResultFormatter) { + // set any options that apply to the xml formatter + $this->formatter->setEncoding($this->encoding); + $this->formatter->setFormatOutput($this->formatoutput); + } + + foreach($this->formatterParams as $param) { + $param = new Parameter(); + $method = 'set' . $param->getName(); + if (!method_exists($this->formatter, $param->getName())) { + throw new BuildException("Formatter " . get_class($this->formatter) . " does not have a $method method.", $this->getLocation()); + } + call_user_func(array($this->formatter, $method), $param->getValue()); + } + } + + /** + * Sets the formatter type. + * @param string $type + */ + function setType($type) { + $this->type = $type; + if ($this->type == "xml") { + $this->formatter = new XMLPDOResultFormatter(); + } elseif ($this->type == "plain") { + $this->formatter = new PlainPDOResultFormatter(); + } else { + throw new BuildException("Formatter '" . $this->type . "' not implemented"); + } + } + + /** + * Set classname for a custom formatter (must extend PDOResultFormatter). + * @param string $className + */ + function setClassName($className) { + $classNameNoDot = Phing::import($className); + $this->formatter = new $classNameNoDot(); + } + + /** + * Set whether to write formatter results to file. + * @param boolean $useFile + */ + function setUseFile($useFile) { + $this->useFile = (boolean) $useFile; + } + + /** + * Return whether to write formatter results to file. + * @return boolean + */ + function getUseFile() { + return $this->useFile; + } + + /** + * Sets the output file for the formatter results. + * @param PhingFile $outFile + */ + function setOutfile(PhingFile $outfile) { + $this->outfile = $outfile; + } + + /** + * Get the output file. + * @return PhingFile + */ + function getOutfile() { + return $this->outfile; + /* + } else { + return new PhingFile($this->formatter->getPreferredOutfile()); + }*/ + } + + /** + * whether output should be appended to or overwrite + * an existing file. Defaults to false. + * @param boolean $append + */ + public function setAppend($append) { + $this->append = (boolean) $append; + } + + /** + * Whether output should be appended to file. + * @return boolean + */ + public function getAppend() { + return $this->append; + } + + /** + * Print headers for result sets from the + * statements; optional, default true. + * @param boolean $showheaders + */ + public function setShowheaders($showheaders) { + $this->showheaders = (boolean) $showheaders; + } + + /** + * Sets the column delimiter. + * @param string $v + */ + public function setColdelim($v) { + $this->coldelimiter = $v; + } + + /** + * Sets the row delimiter. + * @param string $v + */ + public function setRowdelim($v) { + $this->rowdelimiter = $v; + } + + /** + * Set the DOM document encoding. + * @param string $v + */ + public function setEncoding($v) { + $this->encoding = $v; + } + + /** + * @param boolean $v + */ + public function setFormatOutput($v) { + $this->formatOutput = (boolean) $v; + } + + /** + * Gets a default output writer for this task. + * @return Writer + */ + private function getDefaultOutput() + { + return new LogWriter($this->parentTask); + } + + /** + * Gets the formatter that has been configured based on this element. + * @return PDOResultFormatter + */ + function getFormatter() { + return $this->formatter; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/PDOSQLExecTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/PDOSQLExecTask.php new file mode 100644 index 0000000..79e9895 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/PDOSQLExecTask.php @@ -0,0 +1,614 @@ +. + */ + +require_once 'phing/tasks/ext/pdo/PDOTask.php'; +include_once 'phing/system/io/StringReader.php'; +include_once 'phing/tasks/ext/pdo/PDOSQLExecFormatterElement.php'; + +/** + * Executes a series of SQL statements on a database using PDO. + * + *

    Statements can + * either be read in from a text file using the src attribute or from + * between the enclosing SQL tags.

    + * + *

    Multiple statements can be provided, separated by semicolons (or the + * defined delimiter). Individual lines within the statements can be + * commented using either --, // or REM at the start of the line.

    + * + *

    The autocommit attribute specifies whether auto-commit should be + * turned on or off whilst executing the statements. If auto-commit is turned + * on each statement will be executed and committed. If it is turned off the + * statements will all be executed as one transaction.

    + * + *

    The onerror attribute specifies how to proceed when an error occurs + * during the execution of one of the statements. + * The possible values are: continue execution, only show the error; + * stop execution and commit transaction; + * and abort execution and transaction and fail task.

    + * + * @author Hans Lellelid (Phing) + * @author Jeff Martin (Ant) + * @author Michael McCallum (Ant) + * @author Tim Stephenson (Ant) + * @package phing.tasks.ext + * @version $Revision: 1.21 $ + */ +class PDOSQLExecTask extends PDOTask { + + /** + * Count of how many statements were executed successfully. + * @var int + */ + private $goodSql = 0; + + /** + * Count of total number of SQL statements. + * @var int + */ + private $totalSql = 0; + + const DELIM_ROW = "row"; + const DELIM_NORMAL = "normal"; + + /** + * Database connection + * @var PDO + */ + private $conn = null; + + /** + * Files to load + * @var array FileSet[] + */ + private $filesets = array(); + + /** + * Formatter elements. + * @var array PDOSQLExecFormatterElement[] + */ + private $formatters = array(); + + /** + * SQL statement + * @var PDOStatement + */ + private $statement; + + /** + * SQL input file + * @var PhingFile + */ + private $srcFile; + + /** + * SQL input command + * @var string + */ + private $sqlCommand = ""; + + /** + * SQL transactions to perform + */ + private $transactions = array(); + + /** + * SQL Statement delimiter (for parsing files) + * @var string + */ + private $delimiter = ";"; + + /** + * The delimiter type indicating whether the delimiter will + * only be recognized on a line by itself + */ + private $delimiterType = "normal"; // can't use constant just defined + + /** + * Action to perform if an error is found + **/ + private $onError = "abort"; + + /** + * Encoding to use when reading SQL statements from a file + */ + private $encoding = null; + + /** + * Fetch mode for PDO select queries. + * @var int + */ + private $fetchMode; + + /** + * Set the name of the SQL file to be run. + * Required unless statements are enclosed in the build file + */ + public function setSrc(PhingFile $srcFile) { + $this->srcFile = $srcFile; + } + + /** + * Set an inline SQL command to execute. + * NB: Properties are not expanded in this text. + */ + public function addText($sql) { + $this->sqlCommand .= $sql; + } + + /** + * Adds a set of files (nested fileset attribute). + */ + public function addFileset(FileSet $set) { + $this->filesets[] = $set; + } + + /** + * Creates a new PDOSQLExecFormatterElement for element. + * @return PDOSQLExecFormatterElement + */ + public function createFormatter() + { + $fe = new PDOSQLExecFormatterElement($this); + $this->formatters[] = $fe; + return $fe; + } + + /** + * Add a SQL transaction to execute + */ + public function createTransaction() { + $t = new PDOSQLExecTransaction($this); + $this->transactions[] = $t; + return $t; + } + + /** + * Set the file encoding to use on the SQL files read in + * + * @param encoding the encoding to use on the files + */ + public function setEncoding($encoding) { + $this->encoding = $encoding; + } + + /** + * Set the statement delimiter. + * + *

    For example, set this to "go" and delimitertype to "ROW" for + * Sybase ASE or MS SQL Server.

    + * + * @param delimiter + */ + public function setDelimiter($delimiter) + { + $this->delimiter = $delimiter; + } + + /** + * Set the Delimiter type for this sql task. The delimiter type takes two + * values - normal and row. Normal means that any occurence of the delimiter + * terminate the SQL command whereas with row, only a line containing just + * the delimiter is recognized as the end of the command. + * + * @param string $delimiterType + */ + public function setDelimiterType($delimiterType) + { + $this->delimiterType = $delimiterType; + } + + /** + * Action to perform when statement fails: continue, stop, or abort + * optional; default "abort" + */ + public function setOnerror($action) { + $this->onError = $action; + } + + /** + * Sets the fetch mode to use for the PDO resultset. + * @param mixed $mode The PDO fetchmode integer or constant name. + */ + public function setFetchmode($mode) { + if (is_numeric($mode)) { + $this->fetchMode = (int) $mode; + } else { + if (defined($mode)) { + $this->fetchMode = constant($mode); + } else { + throw new BuildException("Invalid PDO fetch mode specified: " . $mode, $this->getLocation()); + } + } + } + + /** + * Gets a default output writer for this task. + * @return Writer + */ + private function getDefaultOutput() + { + return new LogWriter($this); + } + + /** + * Load the sql file and then execute it + * @throws BuildException + */ + public function main() { + + // Set a default fetchmode if none was specified + // (We're doing that here to prevent errors loading the class is PDO is not available.) + if ($this->fetchMode === null) { + $this->fetchMode = PDO::FETCH_BOTH; + } + + // Initialize the formatters here. This ensures that any parameters passed to the formatter + // element get passed along to the actual formatter object + foreach($this->formatters as $fe) { + $fe->prepare(); + } + + $savedTransaction = array(); + for($i=0,$size=count($this->transactions); $i < $size; $i++) { + $savedTransaction[] = clone $this->transactions[$i]; + } + + $savedSqlCommand = $this->sqlCommand; + + $this->sqlCommand = trim($this->sqlCommand); + + try { + if ($this->srcFile === null && $this->sqlCommand === "" + && empty($this->filesets)) { + if (count($this->transactions) === 0) { + throw new BuildException("Source file or fileset, " + . "transactions or sql statement " + . "must be set!", $this->location); + } + } + + if ($this->srcFile !== null && !$this->srcFile->exists()) { + throw new BuildException("Source file does not exist!", $this->location); + } + + // deal with the filesets + foreach($this->filesets as $fs) { + $ds = $fs->getDirectoryScanner($this->project); + $srcDir = $fs->getDir($this->project); + $srcFiles = $ds->getIncludedFiles(); + // Make a transaction for each file + foreach($srcFiles as $srcFile) { + $t = $this->createTransaction(); + $t->setSrc(new PhingFile($srcDir, $srcFile)); + } + } + + // Make a transaction group for the outer command + $t = $this->createTransaction(); + if ($this->srcFile) $t->setSrc($this->srcFile); + $t->addText($this->sqlCommand); + $this->conn = $this->getConnection(); + + try { + + $this->statement = null; + + // Initialize the formatters. + $this->initFormatters(); + + try { + + // Process all transactions + for ($i=0,$size=count($this->transactions); $i < $size; $i++) { + if (!$this->isAutocommit()) { + $this->log("Beginning transaction", Project::MSG_VERBOSE); + $this->conn->beginTransaction(); + } + $this->transactions[$i]->runTransaction(); + if (!$this->isAutocommit()) { + $this->log("Commiting transaction", Project::MSG_VERBOSE); + $this->conn->commit(); + } + } + } catch (Exception $e) { + throw $e; + } + } catch (IOException $e) { + if (!$this->isAutocommit() && $this->conn !== null && $this->onError == "abort") { + try { + $this->conn->rollback(); + } catch (PDOException $ex) {} + } + throw new BuildException($e->getMessage(), $this->location); + } catch (PDOException $e){ + if (!$this->isAutocommit() && $this->conn !== null && $this->onError == "abort") { + try { + $this->conn->rollback(); + } catch (PDOException $ex) {} + } + throw new BuildException($e->getMessage(), $this->location); + } + + // Close the formatters. + $this->closeFormatters(); + + $this->log($this->goodSql . " of " . $this->totalSql . + " SQL statements executed successfully"); + + } catch (Exception $e) { + $this->transactions = $savedTransaction; + $this->sqlCommand = $savedSqlCommand; + throw $e; + } + // finally { + $this->transactions = $savedTransaction; + $this->sqlCommand = $savedSqlCommand; + + } + + + /** + * read in lines and execute them + * @throws PDOException, IOException + */ + public function runStatements(Reader $reader) { + $sql = ""; + $line = ""; + $sqlBacklog = ""; + $hasQuery = false; + + $in = new BufferedReader($reader); + + try { + while (($line = $in->readLine()) !== null) { + $line = trim($line); + $line = ProjectConfigurator::replaceProperties($this->project, $line, + $this->project->getProperties()); + + if (StringHelper::startsWith("//", $line) || + StringHelper::startsWith("--", $line) || + StringHelper::startsWith("#", $line)) { + continue; + } + + if (strlen($line) > 4 + && strtoupper(substr($line,0, 4)) == "REM ") { + continue; + } + + if ($sqlBacklog !== "") { + $sql = $sqlBacklog; + $sqlBacklog = ""; + } + + $sql .= " " . $line . "\n"; + + // SQL defines "--" as a comment to EOL + // and in Oracle it may contain a hint + // so we cannot just remove it, instead we must end it + if (strpos($line, "--") !== false) { + $sql .= "\n"; + } + + // DELIM_ROW doesn't need this (as far as i can tell) + if ($this->delimiterType == self::DELIM_NORMAL) { + + $reg = "#((?:\"(?:\\\\.|[^\"])*\"?)+|'(?:\\\\.|[^'])*'?|" . preg_quote($this->delimiter) . ")#"; + + $sqlParts = preg_split($reg, $sql, 0, PREG_SPLIT_DELIM_CAPTURE); + $sqlBacklog = ""; + foreach ($sqlParts as $sqlPart) { + // we always want to append, even if it's a delim (which will be stripped off later) + $sqlBacklog .= $sqlPart; + + // we found a single (not enclosed by ' or ") delimiter, so we can use all stuff before the delim as the actual query + if ($sqlPart === $this->delimiter) { + $sql = $sqlBacklog; + $sqlBacklog = ""; + $hasQuery = true; + } + } + } + + if ($hasQuery || ($this->delimiterType == self::DELIM_ROW && $line == $this->delimiter)) { + // this assumes there is always a delimter on the end of the SQL statement. + $sql = StringHelper::substring($sql, 0, strlen($sql) - 1 - strlen($this->delimiter)); + $this->log("SQL: " . $sql, Project::MSG_VERBOSE); + $this->execSQL($sql); + $sql = ""; + $hasQuery = false; + } + } + + // Catch any statements not followed by ; + if ($sql !== "") { + $this->execSQL($sql); + } + } catch (PDOException $e) { + throw $e; + } + } + + /** + * Whether the passed-in SQL statement is a SELECT statement. + * This does a pretty simple match, checking to see if statement starts with + * 'select' (but not 'select into'). + * + * @param string $sql + * @return boolean Whether specified SQL looks like a SELECT query. + */ + protected function isSelectSql($sql) + { + $sql = trim($sql); + return (stripos($sql, 'select') === 0 && stripos($sql, 'select into ') !== 0); + } + + /** + * Exec the sql statement. + * @throws PDOException + */ + protected function execSQL($sql) { + + // Check and ignore empty statements + if (trim($sql) == "") { + return; + } + + try { + $this->totalSql++; + + $this->statement = $this->conn->prepare($sql); + $this->statement->execute(); + $this->log($this->statement->rowCount() . " rows affected", Project::MSG_VERBOSE); + + // only call processResults() for statements that return actual data (such as 'select') + if ($this->statement->columnCount() > 0) + { + $this->processResults(); + } + + $this->statement->closeCursor(); + $this->statement = null; + + $this->goodSql++; + + } catch (PDOException $e) { + $this->log("Failed to execute: " . $sql, Project::MSG_ERR); + if ($this->onError != "continue") { + throw new BuildException("Failed to execute SQL", $e); + } + $this->log($e->getMessage(), Project::MSG_ERR); + } + } + + /** + * Returns configured PDOResultFormatter objects (which were created from PDOSQLExecFormatterElement objects). + * @return array PDOResultFormatter[] + */ + protected function getConfiguredFormatters() + { + $formatters = array(); + foreach ($this->formatters as $fe) { + $formatters[] = $fe->getFormatter(); + } + return $formatters; + } + + /** + * Initialize the formatters. + */ + protected function initFormatters() { + $formatters = $this->getConfiguredFormatters(); + foreach ($formatters as $formatter) { + $formatter->initialize(); + } + + } + + /** + * Run cleanup and close formatters. + */ + protected function closeFormatters() { + $formatters = $this->getConfiguredFormatters(); + foreach ($formatters as $formatter) { + $formatter->close(); + } + } + + /** + * Passes results from query to any formatters. + * @throw PDOException + */ + protected function processResults() { + + try { + + $this->log("Processing new result set.", Project::MSG_VERBOSE); + + $formatters = $this->getConfiguredFormatters(); + + while ($row = $this->statement->fetch($this->fetchMode)) { + foreach ($formatters as $formatter) { + $formatter->processRow($row); + } + } + + } catch (Exception $x) { + $this->log("Error processing reults: " . $x->getMessage(), Project::MSG_ERR); + foreach ($formatters as $formatter) { + $formatter->close(); + } + throw $x; + } + + } +} + +/** + * "Inner" class that contains the definition of a new transaction element. + * Transactions allow several files or blocks of statements + * to be executed using the same JDBC connection and commit + * operation in between. + */ +class PDOSQLExecTransaction { + + private $tSrcFile = null; + private $tSqlCommand = ""; + private $parent; + + function __construct($parent) + { + // Parent is required so that we can log things ... + $this->parent = $parent; + } + + public function setSrc(PhingFile $src) + { + $this->tSrcFile = $src; + } + + public function addText($sql) + { + $this->tSqlCommand .= $sql; + } + + /** + * @throws IOException, PDOException + */ + public function runTransaction() + { + if (!empty($this->tSqlCommand)) { + $this->parent->log("Executing commands", Project::MSG_INFO); + $this->parent->runStatements(new StringReader($this->tSqlCommand)); + } + + if ($this->tSrcFile !== null) { + $this->parent->log("Executing file: " . $this->tSrcFile->getAbsolutePath(), + Project::MSG_INFO); + $reader = new FileReader($this->tSrcFile); + $this->parent->runStatements($reader); + $reader->close(); + } + } +} + + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/PDOTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/PDOTask.php new file mode 100644 index 0000000..fd2b562 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/PDOTask.php @@ -0,0 +1,217 @@ +. + */ + +require_once 'phing/Task.php'; +include_once 'phing/types/Reference.php'; + +/** + * Handles PDO configuration needed by SQL type tasks. + * + * @author Hans Lellelid (Phing) + * @author Nick Chalko (Ant) + * @author Jeff Martin (Ant) + * @author Michael McCallum (Ant) + * @author Tim Stephenson (Ant) + * @version $Revision: 1.13 $ + * @package phing.tasks.system + */ +abstract class PDOTask extends Task { + + private $caching = true; + + /** + * Autocommit flag. Default value is false + */ + private $autocommit = false; + + /** + * DB url. + */ + private $url; + + /** + * User name. + */ + private $userId; + + /** + * Password + */ + private $password; + + /** + * RDBMS Product needed for this SQL. + **/ + private $rdbms; + + /** + * Initialize CreoleTask. + * This method includes any necessary Creole libraries and triggers + * appropriate error if they cannot be found. This is not done in header + * because we may want this class to be loaded w/o triggering an error. + */ + function init() { + if (!class_exists('PDO')) { + throw new Exception("PDOTask depends on PDO feature being included in PHP."); + } + } + + /** + * Caching loaders / driver. This is to avoid + * getting an OutOfMemoryError when calling this task + * multiple times in a row; default: true + * @param $enable + */ + public function setCaching($enable) { + $this->caching = $enable; + } + + /** + * Sets the database connection URL; required. + * @param url The url to set + */ + public function setUrl($url) { + $this->url = $url; + } + + /** + * Sets the password; required. + * @param password The password to set + */ + public function setPassword($password) { + $this->password = $password; + } + + /** + * Auto commit flag for database connection; + * optional, default false. + * @param autocommit The autocommit to set + */ + public function setAutocommit($autocommit) { + $this->autocommit = $autocommit; + } + + /** + * Sets the version string, execute task only if + * rdbms version match; optional. + * @param version The version to set + */ + public function setVersion($version) { + $this->version = $version; + } + + protected function getLoaderMap() { + return self::$loaderMap; + } + + + /** + * Creates a new Connection as using the driver, url, userid and password specified. + * The calling method is responsible for closing the connection. + * @return Connection the newly created connection. + * @throws BuildException if the UserId/Password/Url is not set or there is no suitable driver or the driver fails to load. + */ + protected function getConnection() { + + if ($this->url === null) { + throw new BuildException("Url attribute must be set!", $this->location); + } + + try { + + $this->log("Connecting to " . $this->getUrl(), Project::MSG_VERBOSE); + + $user = null; + $pass = null; + + if ($this->userId) { + $user = $this->getUserId(); + } + + if ($this->password) { + $pass = $this->getPassword(); + } + + $conn = new PDO($this->getUrl(), $user, $pass); + $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + + if ($this->autocommit) { + try { + $conn->setAttribute(PDO::ATTR_AUTOCOMMIT, $this->autocommit); + } catch (PDOException $pe) { + $this->log("Unable to enable auto-commit for this database: " . $pe->getMessage(), Project::MSG_WARN); + } + } + + return $conn; + + } catch (SQLException $e) { + throw new BuildException($e->getMessage(), $this->location); + } + + } + + public function isCaching($value) { + $this->caching = $value; + } + + /** + * Gets the autocommit. + * @return Returns a boolean + */ + public function isAutocommit() { + return $this->autocommit; + } + + /** + * Gets the url. + * @return Returns a String + */ + public function getUrl() { + return $this->url; + } + + /** + * Gets the userId. + * @return Returns a String + */ + public function getUserId() { + return $this->userId; + } + + /** + * Set the user name for the connection; required. + * @param userId The userId to set + */ + public function setUserid($userId) { + $this->userId = $userId; + } + + /** + * Gets the password. + * @return Returns a String + */ + public function getPassword() { + return $this->password; + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/PlainPDOResultFormatter.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/PlainPDOResultFormatter.php new file mode 100644 index 0000000..2937185 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/PlainPDOResultFormatter.php @@ -0,0 +1,130 @@ +. + */ + +require_once 'phing/system/io/PhingFile.php'; +require_once 'phing/tasks/ext/pdo/PDOResultFormatter.php'; + +/** + * Plain text formatter for PDO results. + * + * @author Hans Lellelid + * @package phing.tasks.ext.pdo + * @since 2.3.0 + */ +class PlainPDOResultFormatter extends PDOResultFormatter +{ + /** + * Have column headers been printed? + * @var boolean + */ + private $colsprinted = false; + + /** + * Whether to show headers. + * @var boolean + */ + private $showheaders = true; + + /** + * Column delimiter. + * Defaults to ',' + * @var string + */ + private $coldelimiter = ","; + + /** + * Row delimiter. + * Defaults to PHP_EOL. + * @var string + */ + private $rowdelimiter = PHP_EOL; + + /** + * Set the showheaders attribute. + * @param boolean $v + */ + public function setShowheaders($v) { + $this->showheaders = StringHelper::booleanValue($v); + } + + /** + * Sets the column delimiter. + * @param string $v + */ + public function setColdelim($v) { + $this->coldelimiter = $v; + } + + /** + * Sets the row delimiter. + * @param string $v + */ + public function setRowdelim($v) { + $this->rowdelimiter = $v; + } + + /** + * Processes a specific row from PDO result set. + * + * @param array $row Row of PDO result set. + */ + public function processRow($row) { + + if (!$this->colsprinted && $this->showheaders) { + $first = true; + foreach($row as $fieldName => $ignore) { + if ($first) $first = false; else $line .= ","; + $line .= $fieldName; + } + + $this->out->write($line); + $this->out->write(PHP_EOL); + + $line = ""; + $colsprinted = true; + } // if show headers + + $first = true; + foreach($row as $columnValue) { + + if ($columnValue != null) { + $columnValue = trim($columnValue); + } + + if ($first) { + $first = false; + } else { + $line .= $this->coldelimiter; + } + $line .= $columnValue; + } + + $this->out->write($line); + $this->out->write($this->rowdelimiter); + + } + + public function getPreferredOutfile() + { + return new PhingFile('results.txt'); + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/XMLPDOResultFormatter.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/XMLPDOResultFormatter.php new file mode 100644 index 0000000..35c516c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pdo/XMLPDOResultFormatter.php @@ -0,0 +1,141 @@ +. + */ + +require_once 'phing/system/io/PhingFile.php'; +require_once 'phing/tasks/ext/pdo/PDOResultFormatter.php'; + +/** + * XML formatter for PDO results. + * + * This class reprsents the output of a query using a simple XML schema. + * + * + * + * value + * value2 + * + * + * value + * value2 + * + * + * + * The actual names of the colums will depend on the fetchmode that was used + * with PDO. + * + * @author Hans Lellelid + * @package phing.tasks.ext.pdo + * @since 2.3.0 + */ +class XMLPDOResultFormatter extends PDOResultFormatter { + + /** + * The XML document being created. + * @var DOMDocument + */ + private $doc; + + /** + * @var DOMElement + */ + private $rootNode; + + /** + * XML document encoding + * + * @var string + */ + private $encoding; + + /** + * @var boolean + */ + private $formatOutput = true; + + /** + * Set the DOM document encoding. + * @param string $v + */ + public function setEncoding($v) { + $this->encoding = $v; + } + + /** + * @param boolean $v + */ + public function setFormatOutput($v) { + $this->formatOutput = (boolean) $v; + } + + public function initialize() { + $this->doc = new DOMDocument("1.0", $this->encoding); + $this->rootNode = $this->doc->createElement('results'); + $this->doc->appendChild($this->rootNode); + $this->doc->formatOutput = $this->formatOutput; + } + + /** + * Processes a specific row from PDO result set. + * + * @param array $row Row of PDO result set. + */ + public function processRow($row) { + + $rowNode = $this->doc->createElement('row'); + $this->rootNode->appendChild($rowNode); + + foreach($row as $columnName => $columnValue) { + + $colNode = $this->doc->createElement('column'); + $colNode->setAttribute('name', $columnName); + + if ($columnValue != null) { + $columnValue = trim($columnValue); + $colNode->nodeValue = $columnValue; + } + $rowNode->appendChild($colNode); + } + + } + + /** + * Gets a preferred filename for an output file. + * + * If no filename is specified, this is where the results will be placed + * (unless usefile=false). + * + * @return string + */ + public function getPreferredOutfile() + { + return new PhingFile('results.xml'); + } + + /** + * Write XML to file and free the DOM objects. + */ + public function close() { + $this->out->write($this->doc->saveXML()); + $this->rootNode = null; + $this->doc = null; + parent::close(); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pearpackage/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pearpackage/.svn/all-wcprops new file mode 100644 index 0000000..7c894c4 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pearpackage/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 60 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/pearpackage +END +Fileset.php +K 25 +svn:wc:ra_dav:version-url +V 72 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/pearpackage/Fileset.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pearpackage/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pearpackage/.svn/entries new file mode 100644 index 0000000..2656c26 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pearpackage/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +1404 +http://phing.mirror.svn.symfony-project.com/tags/2.3.3/classes/phing/tasks/ext/pearpackage +http://phing.mirror.svn.symfony-project.com + + + +2007-12-20T15:44:58.929962Z +325 +hans + + + + + + + + + + + + + + +c8b19502-6211-4773-8637-5aef67d587fc + +Fileset.php +file + + + + +2012-05-10T18:42:02.557551Z +b87a7afbd956e8b7f01550e7ed17fa63 +2007-12-20T15:44:58.929962Z +325 +hans +has-props + + + + + + + + + + + + + + + + + + + + +7660 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pearpackage/.svn/prop-base/Fileset.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pearpackage/.svn/prop-base/Fileset.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pearpackage/.svn/prop-base/Fileset.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pearpackage/.svn/text-base/Fileset.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pearpackage/.svn/text-base/Fileset.php.svn-base new file mode 100644 index 0000000..16df13c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pearpackage/.svn/text-base/Fileset.php.svn-base @@ -0,0 +1,231 @@ +. + */ + +include_once 'phing/system/io/PhingFile.php'; + +/** + * Builds list of files for PEAR_PackageFileManager using a Phing FileSet. + * + * Some code here is taken from PEAR_PackageFileManager_File -- getting results from flat + * array into the assoc array expected from getFileList(). + * + * @author Greg Beaver + * @author Hans Lellelid + * @package phing.tasks.ext.pearpackage + * @version $Revision: 1.7 $ + */ +class PEAR_PackageFileManager_Fileset { + + /** + * @access private + * @var PEAR_PackageFileManager + */ + private $parent; + + /** + * Curent Phing Project. + * @var Project + */ + private $project; + + /** + * FileSets to use. + * @var array FileSet[] + */ + private $filesets = array(); + + /** + * Set up the FileSet filelist generator + * + * 'project' and 'filesets' are the only options that this class uses. + * + * @param PEAR_PackageFileManager + * @param array + */ + function __construct($parent, $options) + { + $this->parent = $parent; + $this->project = $options['phing_project']; + $this->filesets = $options['phing_filesets']; + } + + /** + * Generate the section + * of the package file. + * + * This function performs the backend generation of the array + * containing all files in this package + * @return array structure of all files to include + */ + function getFileList() { + + $allfiles = array(); + + foreach($this->filesets as $fs) { + $ds = $fs->getDirectoryScanner($this->project); + + $files = $ds->getIncludedFiles(); + + // We need to store these files keyed by the basedir from DirectoryScanner + // so that we can resolve the fullpath of the file later. + if (isset($allfiles[$ds->getBasedir()])) + { + $allfiles[$ds->getBasedir()] = array_merge($allfiles[$ds->getBasedir()], $files); + } + else + { + $allfiles[$ds->getBasedir()] = $files; + } + } + + $struc = array(); + + foreach($allfiles as $basedir => $files) { + + foreach($files as $file) { + + // paths are relative to $basedir above + $path = strtr(dirname($file), DIRECTORY_SEPARATOR, '/'); + + if (!$path || $path == '.') { + $path = '/'; // for array index + } + + $parts = explode('.', basename($file)); + $ext = array_pop($parts); + if (strlen($ext) == strlen($file)) { + $ext = ''; + } + + $f = new PhingFile($basedir, $file); + + $struc[$path][] = array('file' => basename($file), + 'ext' => $ext, + 'path' => (($path == '/') ? basename($file) : $path . '/' . basename($file)), + 'fullpath' => $f->getAbsolutePath()); + } + } + + uksort($struc,'strnatcasecmp'); + foreach($struc as $key => $ind) { + usort($ind, array($this, 'sortfiles')); + $struc[$key] = $ind; + } + + $tempstruc = $struc; + $struc = array('/' => $tempstruc['/']); + $bv = 0; + foreach($tempstruc as $key => $ind) { + $save = $key; + if ($key != '/') { + $struc['/'] = $this->setupDirs($struc['/'], explode('/', $key), $tempstruc[$key]); + } + } + uksort($struc['/'], array($this, 'mystrucsort')); + + return $struc; + } + + /** + * Recursively move contents of $struc into associative array + * + * The contents of $struc have many indexes like 'dir/subdir/subdir2'. + * This function converts them to + * array('dir' => array('subdir' => array('subdir2'))) + * @param array struc is array('dir' => array of files in dir, + * 'dir/subdir' => array of files in dir/subdir,...) + * @param array array form of 'dir/subdir/subdir2' array('dir','subdir','subdir2') + * @return array same as struc but with array('dir' => + * array(file1,file2,'subdir' => array(file1,...))) + */ + private function setupDirs($struc, $dir, $contents) { + + if (!count($dir)) { + foreach($contents as $dir => $files) { + if (is_string($dir)) { + if (strpos($dir, '/')) { + $test = true; + $a = $contents[$dir]; + unset($contents[$dir]); + $b = explode('/', $dir); + $c = array_shift($b); + if (isset($contents[$c])) { + $contents[$c] = $this->setDir($contents[$c], $this->setupDirs(array(), $b, $a)); + } else { + $contents[$c] = $this->setupDirs(array(), $b, $a); + } + } + } + } + return $contents; + } + $me = array_shift($dir); + if (!isset($struc[$me])) { + $struc[$me] = array(); + } + $struc[$me] = $this->setupDirs($struc[$me], $dir, $contents); + return $struc; + } + + /** + * Recursively add all the subdirectories of $contents to $dir without erasing anything in + * $dir + * @param array + * @param array + * @return array processed $dir + */ + function setDir($dir, $contents) + { + while(list($one,$two) = each($contents)) { + if (isset($dir[$one])) { + $dir[$one] = $this->setDir($dir[$one], $contents[$one]); + } else { + $dir[$one] = $two; + } + } + return $dir; + } + + /** + * Sorting functions for the file list + * @param string + * @param string + * @access private + */ + function sortfiles($a, $b) + { + return strnatcasecmp($a['file'],$b['file']); + } + + function mystrucsort($a, $b) + { + if (is_numeric($a) && is_string($b)) return 1; + if (is_numeric($b) && is_string($a)) return -1; + if (is_numeric($a) && is_numeric($b)) + { + if ($a > $b) return 1; + if ($a < $b) return -1; + if ($a == $b) return 0; + } + return strnatcasecmp($a,$b); + } +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pearpackage/Fileset.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pearpackage/Fileset.php new file mode 100644 index 0000000..165983d --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/pearpackage/Fileset.php @@ -0,0 +1,231 @@ +. + */ + +include_once 'phing/system/io/PhingFile.php'; + +/** + * Builds list of files for PEAR_PackageFileManager using a Phing FileSet. + * + * Some code here is taken from PEAR_PackageFileManager_File -- getting results from flat + * array into the assoc array expected from getFileList(). + * + * @author Greg Beaver + * @author Hans Lellelid + * @package phing.tasks.ext.pearpackage + * @version $Revision: 1.7 $ + */ +class PEAR_PackageFileManager_Fileset { + + /** + * @access private + * @var PEAR_PackageFileManager + */ + private $parent; + + /** + * Curent Phing Project. + * @var Project + */ + private $project; + + /** + * FileSets to use. + * @var array FileSet[] + */ + private $filesets = array(); + + /** + * Set up the FileSet filelist generator + * + * 'project' and 'filesets' are the only options that this class uses. + * + * @param PEAR_PackageFileManager + * @param array + */ + function __construct($parent, $options) + { + $this->parent = $parent; + $this->project = $options['phing_project']; + $this->filesets = $options['phing_filesets']; + } + + /** + * Generate the section + * of the package file. + * + * This function performs the backend generation of the array + * containing all files in this package + * @return array structure of all files to include + */ + function getFileList() { + + $allfiles = array(); + + foreach($this->filesets as $fs) { + $ds = $fs->getDirectoryScanner($this->project); + + $files = $ds->getIncludedFiles(); + + // We need to store these files keyed by the basedir from DirectoryScanner + // so that we can resolve the fullpath of the file later. + if (isset($allfiles[$ds->getBasedir()])) + { + $allfiles[$ds->getBasedir()] = array_merge($allfiles[$ds->getBasedir()], $files); + } + else + { + $allfiles[$ds->getBasedir()] = $files; + } + } + + $struc = array(); + + foreach($allfiles as $basedir => $files) { + + foreach($files as $file) { + + // paths are relative to $basedir above + $path = strtr(dirname($file), DIRECTORY_SEPARATOR, '/'); + + if (!$path || $path == '.') { + $path = '/'; // for array index + } + + $parts = explode('.', basename($file)); + $ext = array_pop($parts); + if (strlen($ext) == strlen($file)) { + $ext = ''; + } + + $f = new PhingFile($basedir, $file); + + $struc[$path][] = array('file' => basename($file), + 'ext' => $ext, + 'path' => (($path == '/') ? basename($file) : $path . '/' . basename($file)), + 'fullpath' => $f->getAbsolutePath()); + } + } + + uksort($struc,'strnatcasecmp'); + foreach($struc as $key => $ind) { + usort($ind, array($this, 'sortfiles')); + $struc[$key] = $ind; + } + + $tempstruc = $struc; + $struc = array('/' => $tempstruc['/']); + $bv = 0; + foreach($tempstruc as $key => $ind) { + $save = $key; + if ($key != '/') { + $struc['/'] = $this->setupDirs($struc['/'], explode('/', $key), $tempstruc[$key]); + } + } + uksort($struc['/'], array($this, 'mystrucsort')); + + return $struc; + } + + /** + * Recursively move contents of $struc into associative array + * + * The contents of $struc have many indexes like 'dir/subdir/subdir2'. + * This function converts them to + * array('dir' => array('subdir' => array('subdir2'))) + * @param array struc is array('dir' => array of files in dir, + * 'dir/subdir' => array of files in dir/subdir,...) + * @param array array form of 'dir/subdir/subdir2' array('dir','subdir','subdir2') + * @return array same as struc but with array('dir' => + * array(file1,file2,'subdir' => array(file1,...))) + */ + private function setupDirs($struc, $dir, $contents) { + + if (!count($dir)) { + foreach($contents as $dir => $files) { + if (is_string($dir)) { + if (strpos($dir, '/')) { + $test = true; + $a = $contents[$dir]; + unset($contents[$dir]); + $b = explode('/', $dir); + $c = array_shift($b); + if (isset($contents[$c])) { + $contents[$c] = $this->setDir($contents[$c], $this->setupDirs(array(), $b, $a)); + } else { + $contents[$c] = $this->setupDirs(array(), $b, $a); + } + } + } + } + return $contents; + } + $me = array_shift($dir); + if (!isset($struc[$me])) { + $struc[$me] = array(); + } + $struc[$me] = $this->setupDirs($struc[$me], $dir, $contents); + return $struc; + } + + /** + * Recursively add all the subdirectories of $contents to $dir without erasing anything in + * $dir + * @param array + * @param array + * @return array processed $dir + */ + function setDir($dir, $contents) + { + while(list($one,$two) = each($contents)) { + if (isset($dir[$one])) { + $dir[$one] = $this->setDir($dir[$one], $contents[$one]); + } else { + $dir[$one] = $two; + } + } + return $dir; + } + + /** + * Sorting functions for the file list + * @param string + * @param string + * @access private + */ + function sortfiles($a, $b) + { + return strnatcasecmp($a['file'],$b['file']); + } + + function mystrucsort($a, $b) + { + if (is_numeric($a) && is_string($b)) return 1; + if (is_numeric($b) && is_string($a)) return -1; + if (is_numeric($a) && is_numeric($b)) + { + if ($a > $b) return 1; + if ($a < $b) return -1; + if ($a == $b) return 0; + } + return strnatcasecmp($a,$b); + } +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpdoc/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpdoc/.svn/all-wcprops new file mode 100644 index 0000000..fcfc060 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpdoc/.svn/all-wcprops @@ -0,0 +1,23 @@ +K 25 +svn:wc:ra_dav:version-url +V 55 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/phpdoc +END +PhpDocumentorTask.php +K 25 +svn:wc:ra_dav:version-url +V 77 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/phpdoc/PhpDocumentorTask.php +END +PhpDocumentorExternalTask.php +K 25 +svn:wc:ra_dav:version-url +V 85 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/phpdoc/PhpDocumentorExternalTask.php +END +PhingPhpDocumentorSetup.php +K 25 +svn:wc:ra_dav:version-url +V 83 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/phpdoc/PhingPhpDocumentorSetup.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpdoc/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpdoc/.svn/entries new file mode 100644 index 0000000..0299e83 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpdoc/.svn/entries @@ -0,0 +1,130 @@ +10 + +dir +1404 +http://phing.mirror.svn.symfony-project.com/tags/2.3.3/classes/phing/tasks/ext/phpdoc +http://phing.mirror.svn.symfony-project.com + + + +2008-02-06T20:32:45.917095Z +354 +hans + + + + + + + + + + + + + + +c8b19502-6211-4773-8637-5aef67d587fc + +PhpDocumentorTask.php +file + + + + +2012-05-10T18:42:02.793552Z +bc92b0ecd002b9cf55f4d7e7b200ab0e +2008-02-06T15:26:43.601600Z +352 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +11652 + +PhpDocumentorExternalTask.php +file + + + + +2012-05-10T18:42:02.793552Z +4d9800afe49af99997854cc7e1cf0285 +2008-02-06T15:26:43.601600Z +352 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +7072 + +PhingPhpDocumentorSetup.php +file + + + + +2012-05-10T18:42:02.793552Z +64e9057798922f7c5900afaa8e61179f +2008-02-06T20:32:45.917095Z +354 +hans +has-props + + + + + + + + + + + + + + + + + + + + +7699 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpdoc/.svn/prop-base/PhingPhpDocumentorSetup.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpdoc/.svn/prop-base/PhingPhpDocumentorSetup.php.svn-base new file mode 100644 index 0000000..869ac71 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpdoc/.svn/prop-base/PhingPhpDocumentorSetup.php.svn-base @@ -0,0 +1,5 @@ +K 14 +svn:executable +V 1 +* +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpdoc/.svn/prop-base/PhpDocumentorExternalTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpdoc/.svn/prop-base/PhpDocumentorExternalTask.php.svn-base new file mode 100644 index 0000000..77191a2 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpdoc/.svn/prop-base/PhpDocumentorExternalTask.php.svn-base @@ -0,0 +1,9 @@ +K 14 +svn:executable +V 1 +* +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpdoc/.svn/prop-base/PhpDocumentorTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpdoc/.svn/prop-base/PhpDocumentorTask.php.svn-base new file mode 100644 index 0000000..869ac71 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpdoc/.svn/prop-base/PhpDocumentorTask.php.svn-base @@ -0,0 +1,5 @@ +K 14 +svn:executable +V 1 +* +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpdoc/.svn/text-base/PhingPhpDocumentorSetup.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpdoc/.svn/text-base/PhingPhpDocumentorSetup.php.svn-base new file mode 100644 index 0000000..2051f4e --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpdoc/.svn/text-base/PhingPhpDocumentorSetup.php.svn-base @@ -0,0 +1,210 @@ +. + */ + +/** + * Phing subclass of the phpDocumentor_setup class provided with PhpDocumentor to work around limitations in PhpDocumentor API. + * + * This class is necessary because phpDocumentor_setup does not expose a complete API for setting configuration options. Because + * this class must directly modify some "private" GLOBAL(!) configuration variables, it is liable to break if the PhpDocumentor + * internal implementation changes. Obviously this is far from ideal, but there's also no solution given the inflexibility of the + * PhpDocumentor design. + * + * @author Hans Lellelid @author hans + * @version $Id$ + * @package phing.tasks.ext.phpdoc + */ +class PhingPhpDocumentorSetup extends phpDocumentor_setup { + + /** + * Constructs a new PhingPhpDocumentorSetup. + * + * @param string $configDir Directory in which to look for configuration files. + */ + public function __construct($configdir = null) { + global $_phpDocumentor_cvsphpfile_exts, $_phpDocumentor_setting, $_phpDocumentor_phpfile_exts; + + $this->setup = new Io(); + $this->render = new phpDocumentor_IntermediateParser("Default Title"); + + $GLOBALS['_phpDocumentor_install_dir'] = $configdir; + $this->parseIni(); + + // These redundant-looking lines seem to actually make a difference. + // See: http://phing.info/trac/ticket/150 + $_phpDocumentor_phpfile_exts = $GLOBALS['_phpDocumentor_phpfile_exts']; + $_phpDocumentor_cvsphpfile_exts = $GLOBALS['_phpDocumentor_cvsphpfile_exts']; + + if (tokenizer_ext) { + $this->parse = new phpDocumentorTParser(); + } else { + $this->parse = new Parser(); + } + + $this->setMemoryLimit(); + } + + /** + * Set whether to generate sourcecode for each file parsed. + * + * This method exists as a hack because there is no API exposed for this in PhpDocumentor. + * Note that because we are setting a "private" GLOBAL(!!) config var with this value, this + * is subject to break if PhpDocumentor internals changes. + * + * @param bool $b + */ + public function setGenerateSourcecode($b) { + global $_phpDocumentor_setting; + $_phpDocumentor_setting['sourcecode'] = (boolean) $b; + } + + /** + * Set an array of README/INSTALL/CHANGELOG file paths. + * + * This method exists as a hack because there is no API exposed for this in PhpDocumentor. + * Note that because we are setting a "private" GLOBAL(!!) config var with this value, this + * is subject to break if PhpDocumentor internals changes. + * + * @param array $files Absolute paths to files. + */ + public function setRicFiles($files) { + global $_phpDocumentor_RIC_files; + $_phpDocumentor_RIC_files = $files; + } + + /** + * Set comma-separated list of tags to ignore. + * + * This method exists as a hack because there is no API exposed for this in PhpDocumentor. + * Note that because we are setting a "private" GLOBAL(!!) config var with this value, this + * is subject to break if PhpDocumentor internals changes. + * + * @param string $tags + */ + public function setIgnoreTags($tags) { + global $_phpDocumentor_setting; + $ignoretags = explode(',', $tags); + $ignoretags = array_map('trim', $ignoretags); + $tags = array(); + foreach($ignoretags as $tag) { + if (!in_array($tag,array('@global', '@access', '@package', '@ignore', '@name', '@param', '@return', '@staticvar', '@var'))) + $tags[] = $tag; + } + $_phpDocumentor_setting['ignoretags'] = $tags; + } + + /** + * Set whether to parse dirs as PEAR repos. + * + * This method exists as a hack because there is no API exposed for this in PhpDocumentor. + * Note that because we are setting a "private" GLOBAL(!!) config var with this value, this + * is subject to break if PhpDocumentor internals changes. + * + * @param bool $b + */ + public function setPear($b) { + global $_phpDocumentor_setting; + $_phpDocumentor_setting['pear'] = (boolean) $b; + } + + /** + * Set fullpath to directory to look in for examples. + * + * This method exists as a hack because there is no API exposed for this in PhpDocumentor. + * Note that because we are setting a "private" GLOBAL(!!) config var with this value, this + * is subject to break if PhpDocumentor internals changes. + * + * @param string $dir + */ + public function setExamplesDir($dir) { + global $_phpDocumentor_setting; + $_phpDocumentor_setting['examplesdir'] = $dir; + } + + /** + * Sets the default package name. + * + * This method exists as a hack because there is no API exposed for this in PhpDocumentor. + * Note that because we are setting a "private" GLOBAL(!!) config var with this value, this + * is subject to break if PhpDocumentor internals changes. + * + * @param string $name + */ + public function setDefaultPackageName($name) { + $GLOBALS['phpDocumentor_DefaultPackageName'] = trim($name); + } + + /** + * Sets the default category name. + * + * This method exists as a hack because there is no API exposed for this in PhpDocumentor. + * Note that because we are setting a "private" GLOBAL(!!) config var with this value, this + * is subject to break if PhpDocumentor internals changes. + * + * @param string $name + */ + public function setDefaultCategoryName($name) { + $GLOBALS['phpDocumentor_DefaultCategoryName'] = trim($name); + } + + /** + * Enables quiet mode. + * + * This method exists as a hack because the API exposed for this method in PhpDocumentor + * doesn't work correctly. + * + * Note that because we are setting a "private" GLOBAL(!!) config var with this value, this + * is subject to break if PhpDocumentor internals changes. + * + */ + public function setQuietMode() { + global $_phpDocumentor_setting; + $_phpDocumentor_setting['quiet'] = true; + parent::setQuietMode(); + } + + /** + * Control whether or not warnings will be shown for undocumented elements. + * Useful for identifying classes and methods that haven't yet been + * documented. + * + * @param bool $bEnable + */ + public function setUndocumentedelements($bEnable) { + $this->render->setUndocumentedElementWarningsMode($bEnable); + } + + /** + * custom tags, will be recognized and put in tags[] instead of + * unknowntags[] + * + * This method exists as a hack because the API exposed for this method in + * PhpDocumentor doesn't work correctly. + * + * Note that because we are setting a "private" GLOBAL(!!) config var with + * this value, this is subject to break if PhpDocumentor internals changes. + * + * @param string $sCustomtags + */ + public function setCustomtags($sCustomtags) { + global $_phpDocumentor_setting; + $_phpDocumentor_setting['customtags'] = $sCustomtags; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpdoc/.svn/text-base/PhpDocumentorExternalTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpdoc/.svn/text-base/PhpDocumentorExternalTask.php.svn-base new file mode 100644 index 0000000..7753440 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpdoc/.svn/text-base/PhpDocumentorExternalTask.php.svn-base @@ -0,0 +1,261 @@ +. + */ + +require_once 'phing/tasks/ext/phpdoc/PhpDocumentorTask.php'; + +/** + * Task to run phpDocumentor with an external process + * + * This classes uses the commandline phpdoc script to build documentation. + * Use this task instead of the PhpDocumentorTask when you've a clash with the + * Smarty libraries. + * + * @author Michiel Rook + * @author Markus Fischer + * @version $Id$ + * @package phing.tasks.ext.phpdoc + */ +class PhpDocumentorExternalTask extends PhpDocumentorTask +{ + /** + * The path to the executable for phpDocumentor + */ + protected $programPath = 'phpdoc'; + + protected $sourcepath = NULL; + + /** + * @var bool ignore symlinks to other files or directories + */ + protected $ignoresymlinks = false; + + /** + * Sets the path to the phpDocumentor executable + */ + public function setProgramPath($programPath) + { + $this->programPath = $programPath; + } + + /** + * Returns the path to the phpDocumentor executable + */ + public function getProgramPath() + { + return $this->programPath; + } + + /** + * Set the source path. A directory or a comma separate list of directories. + */ + public function setSourcepath($sourcepath) + { + $this->sourcepath = $sourcepath; + } + + /** + * Ignore symlinks to other files or directories. + * + * @param bool $bSet + */ + public function setIgnoresymlinks($bSet) { + $this->ignoresymlinks = $bSet; + } + + /** + * Main entrypoint of the task + */ + public function main() + { + $this->validate(); + $arguments = join(' ', $this->constructArguments()); + + $this->log("Running phpDocumentor..."); + + exec($this->programPath . " " . $arguments, $output, $return); + + if ($return != 0) + { + throw new BuildException("Could not execute phpDocumentor: " . implode(' ', $output)); + } + + foreach($output as $line) + { + if(strpos($line, 'ERROR') !== false) + { + $this->log($line, Project::MSG_ERR); + continue; + } + + $this->log($line, Project::MSG_VERBOSE); + } + } + + /** + * Constructs an argument string for phpDocumentor + * @return array + */ + protected function constructArguments() + { + $aArgs = array(); + if ($this->title) + { + $aArgs[] = '--title "' . $this->title . '"'; + } + + if ($this->destdir) + { + $aArgs[] = '--target "' . $this->destdir->getAbsolutePath() . '"'; + } + + if ($this->sourcepath) + { + $aArgs[] = '--directory "' . $this->sourcepath . '"'; + } + + if ($this->output) + { + $aArgs[] = '--output ' . $this->output; + } + + if ($this->linksource) + { + $aArgs[] = '--sourcecode on'; + } + + if ($this->parseprivate) + { + $aArgs[] = '--parseprivate on'; + } + + // append any files in filesets + $filesToParse = array(); + foreach($this->filesets as $fs) { + $files = $fs->getDirectoryScanner($this->project)->getIncludedFiles(); + foreach($files as $filename) { + $f = new PhingFile($fs->getDir($this->project), $filename); + $filesToParse[] = $f->getAbsolutePath(); + } + } + if (count($filesToParse) > 0) { + $aArgs[] = '--filename "' . join(',', $filesToParse) . '"'; + } + + // append any files in filesets + $ricFiles = array(); + foreach($this->projDocFilesets as $fs) { + $files = $fs->getDirectoryScanner($this->project)->getIncludedFiles(); + foreach($files as $filename) { + $f = new PhingFile($fs->getDir($this->project), $filename); + $ricFiles[] = $f->getAbsolutePath(); + } + } + if (count($ricFiles) > 0) { + $aArgs[] = '--readmeinstallchangelog "' . + join(',', $ricFiles) . '"'; + } + + if ($this->javadocDesc) { + $aArgs[] = '--javadocdesc on'; + } + + if ($this->quiet) { + $aArgs[] = '--quiet on'; + } + + if ($this->packages) { + $aArgs[] = '--packageoutput "' . $this->packages . '"'; + } + + if ($this->ignoreTags) { + $aArgs[] = '--ignore-tags "' . $this->ignoreTags . '"'; + } + + if ($this->defaultCategoryName) { + $aArgs[] = '--defaultcategoryname "' . $this->defaultCategoryName . + '"'; + } + + if ($this->examplesDir) { + $aArgs[] = '--examplesdir "' . $this->examplesDir->getAbsolutePath() + . '"'; + } + + if ($this->templateBase) { + $aArgs[] = '--templatebase "' . $this->templateBase->getAbsolutePath() + . '"'; + } + + if ($this->pear) { + $aArgs[] = '--pear on'; + } + + if ($this->undocumentedelements) { + $aArgs[] = '--undocumentedelements on'; + } + + if ($this->customtags) { + $aArgs[] = '--customtags "' . $this->customtags . '"'; + } + + if ($this->ignoresymlinks) { + $aArgs[] = '--ignoresymlinks on'; + } + + var_dump($aArgs);exit; + return $aArgs; + } + + /** + * Override PhpDocumentorTask::init() because they're specific to the phpdoc + * API which we don't use. + */ + public function init() { + } + + /** + * Validates that necessary minimum options have been set. Based on + * PhpDocumentorTask::validate(). + */ + protected function validate() { + if (!$this->destdir) { + throw new BuildException("You must specify a destdir for phpdoc.", + $this->getLocation()); + } + if (!$this->output) { + throw new BuildException("You must specify an output format for " . + "phpdoc (e.g. HTML:frames:default).", $this->getLocation()); + } + if (empty($this->filesets) && !$this->sourcepath) { + throw new BuildException("You have not specified any files to " . + "include ( or sourcepath attribute) for phpdoc.", + $this->getLocation()); + } + if ($this->configdir) { + $this->log('Ignoring unsupported configdir-Attribute', + Project::MSG_VERBOSE); + } + } +}; + + + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpdoc/.svn/text-base/PhpDocumentorTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpdoc/.svn/text-base/PhpDocumentorTask.php.svn-base new file mode 100644 index 0000000..d5f7786 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpdoc/.svn/text-base/PhpDocumentorTask.php.svn-base @@ -0,0 +1,460 @@ +. + */ + +require_once 'phing/Task.php'; + +/** + * Task to run PhpDocumentor. + * + * @author Hans Lellelid + * @author Michiel Rook + * @version $Id$ + * @package phing.tasks.ext.phpdoc + */ +class PhpDocumentorTask extends Task +{ + + /** + * @var string Title for browser window / package index. + */ + protected $title; + + /** + * @var PhingFile The target directory for output files. + */ + protected $destdir; + + /** + * @var array FileSet[] Filesets for files to parse. + */ + protected $filesets = array(); + + /** + * @var array FileSet[] Project documentation (README/INSTALL/CHANGELOG) files. + */ + protected $projDocFilesets = array(); + + /** + * @var string Package output format. + */ + protected $output; + + /** + * @var boolean Whether to generate sourcecode for each file parsed. + */ + protected $linksource = false; + + /** + * @var boolean Whether to parse private members. + */ + protected $parsePrivate = false; + + /** + * @var boolean Whether to use javadoc descriptions (more primitive). + */ + protected $javadocDesc = false; + + /** + * @var PhingFile Base directory for locating template files. + */ + protected $templateBase; + + /** + * @var boolean Wheter to suppress output. + */ + protected $quiet = false; + + /** + * @var string Comma-separated list of packages to output. + */ + protected $packages; + + /** + * @var string Comma-separated list of tags to ignore. + */ + protected $ignoreTags; + + /** + * @var string Default package name. + */ + protected $defaultPackageName; + + /** + * @var string Default category name. + */ + protected $defaultCategoryName; + + /** + * @var PhingFile Directory in which to look for examples. + */ + protected $examplesDir; + + /** + * @var PhingFile Directory in which to look for configuration files. + */ + protected $configDir; + + /** + * @var boolean Whether to parse as a PEAR repository. + */ + protected $pear = false; + + /** + * @var boolean Control whether or not warnings will be shown for + * undocumented elements. Useful for identifying classes and + * methods that haven't yet been documented. + */ + protected $undocumentedelements = false; + + /** + * @var string custom tags, will be recognized and put in tags[] instead of + * unknowntags[]. + */ + protected $customtags = ''; + + /** + * Set the title for the generated documentation + */ + public function setTitle($title) { + $this->title = $title; + } + + /** + * Set the destination directory for the generated documentation + */ + public function setDestdir(PhingFile $destdir) { + $this->destdir = $destdir; + } + + /** + * Alias for {@link setDestdir()). + * @see setDestdir() + */ + public function setTarget(PhingFile $destdir) { + $this->setDestdir($destdir); + } + + /** + * Set the output format (e.g. HTML:Smarty:PHP). + * @param string $output + */ + public function setOutput($output) { + $this->output = $output; + } + + /** + * Set whether to generate sourcecode for each file parsed + * @param boolean + */ + public function setSourcecode($b) { + $this->linksource = $b; + } + + /** + * Set whether to suppress output. + * @param boolean $b + */ + public function setQuiet($b) { + $this->quiet = $b; + } + + /** + * Should private members/classes be documented + * @param boolean + */ + public function setParseprivate($parseprivate) { + $this->parsePrivate = $parseprivate; + } + + /** + * Whether to use javadoc descriptions (more primitive). + * @param boolean + */ + public function setJavadocdesc($javadoc) { + $this->javadocDesc = $javadoc; + } + + /** + * Set (comma-separated) list of packages to output. + * + * @param string $packages + */ + public function setPackageoutput($packages) { + $this->packages = $packages; + } + + /** + * Set (comma-separated) list of tags to ignore. + * + * @param string $tags + */ + public function setIgnoretags($tags) { + $this->ignoreTags = $tags; + } + + /** + * Set a directory to search for examples in. + * @param PhingFile $d + */ + public function setExamplesdir(PhingFile $d) { + $this->examplesDir = $d; + } + + /** + * Set a directory to search for configuration files in. + * @param PhingFile $d + */ + public function setConfigdir(PhingFile $d) { + $this->configDir = $d; + } + + /** + * Sets the default package name. + * @param string $name + */ + public function setDefaultpackagename($name) { + $this->defaultPackageName = $name; + } + + /** + * Sets the default category name. + * @param string $name + */ + public function setDefaultcategoryname($name) { + $this->defaultCategoryName = $name; + } + + /** + * Set whether to parse as PEAR repository. + * @param boolean $b + */ + public function setPear($b) { + $this->pear = $b; + } + + /** + * Creates a FileSet. + * @return FileSet + */ + public function createFileset() { + $num = array_push($this->filesets, new FileSet()); + return $this->filesets[$num-1]; + } + + /** + * Creates a readme/install/changelog fileset. + * @return FileSet + */ + public function createProjdocfileset() { + $num = array_push($this->projDocFilesets, new FileSet()); + return $this->projDocFilesets[$num-1]; + } + + /** + * Control whether or not warnings will be shown for undocumented elements. + * Useful for identifying classes and methods that haven't yet been + * documented. + * @param boolean $b + */ + public function setUndocumentedelements($b) { + $this->undocumentedelements = $b; + } + + /** + * custom tags, will be recognized and put in tags[] instead of + * unknowntags[]. + * + * @param string $sCustomtags + */ + public function setCustomtags($sCustomtags) { + $this->customtags = $sCustomtags; + } + + /** + * Set base location of all templates for this parse. + * + * @param PhingFile $destdir + */ + public function setTemplateBase(PhingFile $oTemplateBase) { + $this->templateBase = $oTemplateBase; + } + + /** + * Searches include_path for PhpDocumentor install and adjusts include_path appropriately. + * @throws BuildException - if unable to find PhpDocumentor on include_path + */ + protected function findPhpDocumentorInstall() + { + $found = null; + foreach(explode(PATH_SEPARATOR, get_include_path()) as $path) { + $testpath = $path . DIRECTORY_SEPARATOR . 'PhpDocumentor'; + if (file_exists($testpath)) { + $found = $testpath; + break; + } + } + if (!$found) { + throw new BuildException("PhpDocumentor task depends on PhpDocumentor being installed and on include_path.", $this->getLocation()); + } + // otherwise, adjust the include_path to path to include the PhpDocumentor directory ... + set_include_path(get_include_path() . PATH_SEPARATOR . $found); + include_once ("phpDocumentor/Setup.inc.php"); + if (!class_exists('phpDocumentor_setup')) { + throw new BuildException("Error including PhpDocumentor setup class file."); + } + } + + /** + * Load the necessary environment for running PhpDoc. + * + * @throws BuildException - if the phpdoc classes can't be loaded. + */ + public function init() + { + $this->findPhpDocumentorInstall(); + include_once 'phing/tasks/ext/phpdoc/PhingPhpDocumentorSetup.php'; + } + + /** + * Main entrypoint of the task + */ + function main() + { + $this->validate(); + $configdir = $this->configDir ? $this->configDir->getAbsolutePath() : null; + $phpdoc = new PhingPhpDocumentorSetup($configdir); + $this->setPhpDocumentorOptions($phpdoc); + //$phpdoc->readCommandLineSettings(); + $phpdoc->setupConverters($this->output); + $phpdoc->createDocs(); + } + + /** + * Validates that necessary minimum options have been set. + * @throws BuildException if validation doesn't pass + */ + protected function validate() + { + if (!$this->destdir) { + throw new BuildException("You must specify a destdir for phpdoc.", $this->getLocation()); + } + if (!$this->output) { + throw new BuildException("You must specify an output format for phpdoc (e.g. HTML:frames:default).", $this->getLocation()); + } + if (empty($this->filesets)) { + throw new BuildException("You have not specified any files to include () for phpdoc.", $this->getLocation()); + } + } + + /** + * Sets the options on the passed-in phpdoc setup object. + * @param PhingPhpDocumentorSetup $phpdoc + */ + protected function setPhpDocumentorOptions(PhingPhpDocumentorSetup $phpdoc) + { + + // Title MUST be set first ... (because it re-initializes the internal state of the PhpDocu renderer) + if ($this->title) { + $phpdoc->setTitle($this->title); + } + + if ($this->parsePrivate) { + $phpdoc->setParsePrivate(); + } + + if ($this->javadocDesc) { + $phpdoc->setJavadocDesc(); + } + + if ($this->quiet) { + $phpdoc->setQuietMode(); + } + + if ($this->destdir) { + $phpdoc->setTargetDir($this->destdir->getAbsolutePath()); + } + + if ($this->packages) { + $phpdoc->setPackageOutput($this->packages); + } + + if ($this->templateBase) { + $phpdoc->setTemplateBase($this->templateBase->getAbsolutePath()); + } + + if ($this->linksource) { + $phpdoc->setGenerateSourcecode($this->linksource); + } + + if ($this->examplesDir) { + $phpdoc->setExamplesDir($this->examplesDir->getAbsolutePath()); + } + + if ($this->ignoreTags) { + $phpdoc->setIgnoreTags($this->ignoreTags); + } + + if ($this->defaultPackageName) { + $phpdoc->setDefaultPackageName($this->defaultPackageName); + } + + if ($this->defaultCategoryName) { + $phpdoc->setDefaultCategoryName($this->defaultCategoryName); + } + + if ($this->pear) { + $phpdoc->setPear($this->pear); + } + + // append any files in filesets + $filesToParse = array(); + foreach($this->filesets as $fs) { + $files = $fs->getDirectoryScanner($this->project)->getIncludedFiles(); + foreach($files as $filename) { + $f = new PhingFile($fs->getDir($this->project), $filename); + $filesToParse[] = $f->getAbsolutePath(); + } + } + //print_r(implode(",", $filesToParse)); + $phpdoc->setFilesToParse(implode(",", $filesToParse)); + + + // append any files in filesets + $ricFiles = array(); + foreach($this->projDocFilesets as $fs) { + $files = $fs->getDirectoryScanner($this->project)->getIncludedFiles(); + foreach($files as $filename) { + $f = new PhingFile($fs->getDir($this->project), $filename); + $ricFiles[] = $f->getAbsolutePath(); + } + } + $phpdoc->setRicFiles($ricFiles); + + if ($this->undocumentedelements) { + $phpdoc->setUndocumentedelements($this->undocumentedelements); + } + + if ($this->customtags) { + $phpdoc->setCustomtags($this->customtags); + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpdoc/PhingPhpDocumentorSetup.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpdoc/PhingPhpDocumentorSetup.php new file mode 100755 index 0000000..2051f4e --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpdoc/PhingPhpDocumentorSetup.php @@ -0,0 +1,210 @@ +. + */ + +/** + * Phing subclass of the phpDocumentor_setup class provided with PhpDocumentor to work around limitations in PhpDocumentor API. + * + * This class is necessary because phpDocumentor_setup does not expose a complete API for setting configuration options. Because + * this class must directly modify some "private" GLOBAL(!) configuration variables, it is liable to break if the PhpDocumentor + * internal implementation changes. Obviously this is far from ideal, but there's also no solution given the inflexibility of the + * PhpDocumentor design. + * + * @author Hans Lellelid @author hans + * @version $Id$ + * @package phing.tasks.ext.phpdoc + */ +class PhingPhpDocumentorSetup extends phpDocumentor_setup { + + /** + * Constructs a new PhingPhpDocumentorSetup. + * + * @param string $configDir Directory in which to look for configuration files. + */ + public function __construct($configdir = null) { + global $_phpDocumentor_cvsphpfile_exts, $_phpDocumentor_setting, $_phpDocumentor_phpfile_exts; + + $this->setup = new Io(); + $this->render = new phpDocumentor_IntermediateParser("Default Title"); + + $GLOBALS['_phpDocumentor_install_dir'] = $configdir; + $this->parseIni(); + + // These redundant-looking lines seem to actually make a difference. + // See: http://phing.info/trac/ticket/150 + $_phpDocumentor_phpfile_exts = $GLOBALS['_phpDocumentor_phpfile_exts']; + $_phpDocumentor_cvsphpfile_exts = $GLOBALS['_phpDocumentor_cvsphpfile_exts']; + + if (tokenizer_ext) { + $this->parse = new phpDocumentorTParser(); + } else { + $this->parse = new Parser(); + } + + $this->setMemoryLimit(); + } + + /** + * Set whether to generate sourcecode for each file parsed. + * + * This method exists as a hack because there is no API exposed for this in PhpDocumentor. + * Note that because we are setting a "private" GLOBAL(!!) config var with this value, this + * is subject to break if PhpDocumentor internals changes. + * + * @param bool $b + */ + public function setGenerateSourcecode($b) { + global $_phpDocumentor_setting; + $_phpDocumentor_setting['sourcecode'] = (boolean) $b; + } + + /** + * Set an array of README/INSTALL/CHANGELOG file paths. + * + * This method exists as a hack because there is no API exposed for this in PhpDocumentor. + * Note that because we are setting a "private" GLOBAL(!!) config var with this value, this + * is subject to break if PhpDocumentor internals changes. + * + * @param array $files Absolute paths to files. + */ + public function setRicFiles($files) { + global $_phpDocumentor_RIC_files; + $_phpDocumentor_RIC_files = $files; + } + + /** + * Set comma-separated list of tags to ignore. + * + * This method exists as a hack because there is no API exposed for this in PhpDocumentor. + * Note that because we are setting a "private" GLOBAL(!!) config var with this value, this + * is subject to break if PhpDocumentor internals changes. + * + * @param string $tags + */ + public function setIgnoreTags($tags) { + global $_phpDocumentor_setting; + $ignoretags = explode(',', $tags); + $ignoretags = array_map('trim', $ignoretags); + $tags = array(); + foreach($ignoretags as $tag) { + if (!in_array($tag,array('@global', '@access', '@package', '@ignore', '@name', '@param', '@return', '@staticvar', '@var'))) + $tags[] = $tag; + } + $_phpDocumentor_setting['ignoretags'] = $tags; + } + + /** + * Set whether to parse dirs as PEAR repos. + * + * This method exists as a hack because there is no API exposed for this in PhpDocumentor. + * Note that because we are setting a "private" GLOBAL(!!) config var with this value, this + * is subject to break if PhpDocumentor internals changes. + * + * @param bool $b + */ + public function setPear($b) { + global $_phpDocumentor_setting; + $_phpDocumentor_setting['pear'] = (boolean) $b; + } + + /** + * Set fullpath to directory to look in for examples. + * + * This method exists as a hack because there is no API exposed for this in PhpDocumentor. + * Note that because we are setting a "private" GLOBAL(!!) config var with this value, this + * is subject to break if PhpDocumentor internals changes. + * + * @param string $dir + */ + public function setExamplesDir($dir) { + global $_phpDocumentor_setting; + $_phpDocumentor_setting['examplesdir'] = $dir; + } + + /** + * Sets the default package name. + * + * This method exists as a hack because there is no API exposed for this in PhpDocumentor. + * Note that because we are setting a "private" GLOBAL(!!) config var with this value, this + * is subject to break if PhpDocumentor internals changes. + * + * @param string $name + */ + public function setDefaultPackageName($name) { + $GLOBALS['phpDocumentor_DefaultPackageName'] = trim($name); + } + + /** + * Sets the default category name. + * + * This method exists as a hack because there is no API exposed for this in PhpDocumentor. + * Note that because we are setting a "private" GLOBAL(!!) config var with this value, this + * is subject to break if PhpDocumentor internals changes. + * + * @param string $name + */ + public function setDefaultCategoryName($name) { + $GLOBALS['phpDocumentor_DefaultCategoryName'] = trim($name); + } + + /** + * Enables quiet mode. + * + * This method exists as a hack because the API exposed for this method in PhpDocumentor + * doesn't work correctly. + * + * Note that because we are setting a "private" GLOBAL(!!) config var with this value, this + * is subject to break if PhpDocumentor internals changes. + * + */ + public function setQuietMode() { + global $_phpDocumentor_setting; + $_phpDocumentor_setting['quiet'] = true; + parent::setQuietMode(); + } + + /** + * Control whether or not warnings will be shown for undocumented elements. + * Useful for identifying classes and methods that haven't yet been + * documented. + * + * @param bool $bEnable + */ + public function setUndocumentedelements($bEnable) { + $this->render->setUndocumentedElementWarningsMode($bEnable); + } + + /** + * custom tags, will be recognized and put in tags[] instead of + * unknowntags[] + * + * This method exists as a hack because the API exposed for this method in + * PhpDocumentor doesn't work correctly. + * + * Note that because we are setting a "private" GLOBAL(!!) config var with + * this value, this is subject to break if PhpDocumentor internals changes. + * + * @param string $sCustomtags + */ + public function setCustomtags($sCustomtags) { + global $_phpDocumentor_setting; + $_phpDocumentor_setting['customtags'] = $sCustomtags; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpdoc/PhpDocumentorExternalTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpdoc/PhpDocumentorExternalTask.php new file mode 100755 index 0000000..e01e80b --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpdoc/PhpDocumentorExternalTask.php @@ -0,0 +1,261 @@ +. + */ + +require_once 'phing/tasks/ext/phpdoc/PhpDocumentorTask.php'; + +/** + * Task to run phpDocumentor with an external process + * + * This classes uses the commandline phpdoc script to build documentation. + * Use this task instead of the PhpDocumentorTask when you've a clash with the + * Smarty libraries. + * + * @author Michiel Rook + * @author Markus Fischer + * @version $Id: PhpDocumentorExternalTask.php 352 2008-02-06 15:26:43Z mrook $ + * @package phing.tasks.ext.phpdoc + */ +class PhpDocumentorExternalTask extends PhpDocumentorTask +{ + /** + * The path to the executable for phpDocumentor + */ + protected $programPath = 'phpdoc'; + + protected $sourcepath = NULL; + + /** + * @var bool ignore symlinks to other files or directories + */ + protected $ignoresymlinks = false; + + /** + * Sets the path to the phpDocumentor executable + */ + public function setProgramPath($programPath) + { + $this->programPath = $programPath; + } + + /** + * Returns the path to the phpDocumentor executable + */ + public function getProgramPath() + { + return $this->programPath; + } + + /** + * Set the source path. A directory or a comma separate list of directories. + */ + public function setSourcepath($sourcepath) + { + $this->sourcepath = $sourcepath; + } + + /** + * Ignore symlinks to other files or directories. + * + * @param bool $bSet + */ + public function setIgnoresymlinks($bSet) { + $this->ignoresymlinks = $bSet; + } + + /** + * Main entrypoint of the task + */ + public function main() + { + $this->validate(); + $arguments = join(' ', $this->constructArguments()); + + $this->log("Running phpDocumentor..."); + + exec($this->programPath . " " . $arguments, $output, $return); + + if ($return != 0) + { + throw new BuildException("Could not execute phpDocumentor: " . implode(' ', $output)); + } + + foreach($output as $line) + { + if(strpos($line, 'ERROR') !== false) + { + $this->log($line, Project::MSG_ERR); + continue; + } + + $this->log($line, Project::MSG_VERBOSE); + } + } + + /** + * Constructs an argument string for phpDocumentor + * @return array + */ + protected function constructArguments() + { + $aArgs = array(); + if ($this->title) + { + $aArgs[] = '--title "' . $this->title . '"'; + } + + if ($this->destdir) + { + $aArgs[] = '--target "' . $this->destdir->getAbsolutePath() . '"'; + } + + if ($this->sourcepath) + { + $aArgs[] = '--directory "' . $this->sourcepath . '"'; + } + + if ($this->output) + { + $aArgs[] = '--output ' . $this->output; + } + + if ($this->linksource) + { + $aArgs[] = '--sourcecode on'; + } + + if ($this->parseprivate) + { + $aArgs[] = '--parseprivate on'; + } + + // append any files in filesets + $filesToParse = array(); + foreach($this->filesets as $fs) { + $files = $fs->getDirectoryScanner($this->project)->getIncludedFiles(); + foreach($files as $filename) { + $f = new PhingFile($fs->getDir($this->project), $filename); + $filesToParse[] = $f->getAbsolutePath(); + } + } + if (count($filesToParse) > 0) { + $aArgs[] = '--filename "' . join(',', $filesToParse) . '"'; + } + + // append any files in filesets + $ricFiles = array(); + foreach($this->projDocFilesets as $fs) { + $files = $fs->getDirectoryScanner($this->project)->getIncludedFiles(); + foreach($files as $filename) { + $f = new PhingFile($fs->getDir($this->project), $filename); + $ricFiles[] = $f->getAbsolutePath(); + } + } + if (count($ricFiles) > 0) { + $aArgs[] = '--readmeinstallchangelog "' . + join(',', $ricFiles) . '"'; + } + + if ($this->javadocDesc) { + $aArgs[] = '--javadocdesc on'; + } + + if ($this->quiet) { + $aArgs[] = '--quiet on'; + } + + if ($this->packages) { + $aArgs[] = '--packageoutput "' . $this->packages . '"'; + } + + if ($this->ignoreTags) { + $aArgs[] = '--ignore-tags "' . $this->ignoreTags . '"'; + } + + if ($this->defaultCategoryName) { + $aArgs[] = '--defaultcategoryname "' . $this->defaultCategoryName . + '"'; + } + + if ($this->examplesDir) { + $aArgs[] = '--examplesdir "' . $this->examplesDir->getAbsolutePath() + . '"'; + } + + if ($this->templateBase) { + $aArgs[] = '--templatebase "' . $this->templateBase->getAbsolutePath() + . '"'; + } + + if ($this->pear) { + $aArgs[] = '--pear on'; + } + + if ($this->undocumentedelements) { + $aArgs[] = '--undocumentedelements on'; + } + + if ($this->customtags) { + $aArgs[] = '--customtags "' . $this->customtags . '"'; + } + + if ($this->ignoresymlinks) { + $aArgs[] = '--ignoresymlinks on'; + } + + var_dump($aArgs);exit; + return $aArgs; + } + + /** + * Override PhpDocumentorTask::init() because they're specific to the phpdoc + * API which we don't use. + */ + public function init() { + } + + /** + * Validates that necessary minimum options have been set. Based on + * PhpDocumentorTask::validate(). + */ + protected function validate() { + if (!$this->destdir) { + throw new BuildException("You must specify a destdir for phpdoc.", + $this->getLocation()); + } + if (!$this->output) { + throw new BuildException("You must specify an output format for " . + "phpdoc (e.g. HTML:frames:default).", $this->getLocation()); + } + if (empty($this->filesets) && !$this->sourcepath) { + throw new BuildException("You have not specified any files to " . + "include ( or sourcepath attribute) for phpdoc.", + $this->getLocation()); + } + if ($this->configdir) { + $this->log('Ignoring unsupported configdir-Attribute', + Project::MSG_VERBOSE); + } + } +}; + + + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpdoc/PhpDocumentorTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpdoc/PhpDocumentorTask.php new file mode 100755 index 0000000..d5f7786 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpdoc/PhpDocumentorTask.php @@ -0,0 +1,460 @@ +. + */ + +require_once 'phing/Task.php'; + +/** + * Task to run PhpDocumentor. + * + * @author Hans Lellelid + * @author Michiel Rook + * @version $Id$ + * @package phing.tasks.ext.phpdoc + */ +class PhpDocumentorTask extends Task +{ + + /** + * @var string Title for browser window / package index. + */ + protected $title; + + /** + * @var PhingFile The target directory for output files. + */ + protected $destdir; + + /** + * @var array FileSet[] Filesets for files to parse. + */ + protected $filesets = array(); + + /** + * @var array FileSet[] Project documentation (README/INSTALL/CHANGELOG) files. + */ + protected $projDocFilesets = array(); + + /** + * @var string Package output format. + */ + protected $output; + + /** + * @var boolean Whether to generate sourcecode for each file parsed. + */ + protected $linksource = false; + + /** + * @var boolean Whether to parse private members. + */ + protected $parsePrivate = false; + + /** + * @var boolean Whether to use javadoc descriptions (more primitive). + */ + protected $javadocDesc = false; + + /** + * @var PhingFile Base directory for locating template files. + */ + protected $templateBase; + + /** + * @var boolean Wheter to suppress output. + */ + protected $quiet = false; + + /** + * @var string Comma-separated list of packages to output. + */ + protected $packages; + + /** + * @var string Comma-separated list of tags to ignore. + */ + protected $ignoreTags; + + /** + * @var string Default package name. + */ + protected $defaultPackageName; + + /** + * @var string Default category name. + */ + protected $defaultCategoryName; + + /** + * @var PhingFile Directory in which to look for examples. + */ + protected $examplesDir; + + /** + * @var PhingFile Directory in which to look for configuration files. + */ + protected $configDir; + + /** + * @var boolean Whether to parse as a PEAR repository. + */ + protected $pear = false; + + /** + * @var boolean Control whether or not warnings will be shown for + * undocumented elements. Useful for identifying classes and + * methods that haven't yet been documented. + */ + protected $undocumentedelements = false; + + /** + * @var string custom tags, will be recognized and put in tags[] instead of + * unknowntags[]. + */ + protected $customtags = ''; + + /** + * Set the title for the generated documentation + */ + public function setTitle($title) { + $this->title = $title; + } + + /** + * Set the destination directory for the generated documentation + */ + public function setDestdir(PhingFile $destdir) { + $this->destdir = $destdir; + } + + /** + * Alias for {@link setDestdir()). + * @see setDestdir() + */ + public function setTarget(PhingFile $destdir) { + $this->setDestdir($destdir); + } + + /** + * Set the output format (e.g. HTML:Smarty:PHP). + * @param string $output + */ + public function setOutput($output) { + $this->output = $output; + } + + /** + * Set whether to generate sourcecode for each file parsed + * @param boolean + */ + public function setSourcecode($b) { + $this->linksource = $b; + } + + /** + * Set whether to suppress output. + * @param boolean $b + */ + public function setQuiet($b) { + $this->quiet = $b; + } + + /** + * Should private members/classes be documented + * @param boolean + */ + public function setParseprivate($parseprivate) { + $this->parsePrivate = $parseprivate; + } + + /** + * Whether to use javadoc descriptions (more primitive). + * @param boolean + */ + public function setJavadocdesc($javadoc) { + $this->javadocDesc = $javadoc; + } + + /** + * Set (comma-separated) list of packages to output. + * + * @param string $packages + */ + public function setPackageoutput($packages) { + $this->packages = $packages; + } + + /** + * Set (comma-separated) list of tags to ignore. + * + * @param string $tags + */ + public function setIgnoretags($tags) { + $this->ignoreTags = $tags; + } + + /** + * Set a directory to search for examples in. + * @param PhingFile $d + */ + public function setExamplesdir(PhingFile $d) { + $this->examplesDir = $d; + } + + /** + * Set a directory to search for configuration files in. + * @param PhingFile $d + */ + public function setConfigdir(PhingFile $d) { + $this->configDir = $d; + } + + /** + * Sets the default package name. + * @param string $name + */ + public function setDefaultpackagename($name) { + $this->defaultPackageName = $name; + } + + /** + * Sets the default category name. + * @param string $name + */ + public function setDefaultcategoryname($name) { + $this->defaultCategoryName = $name; + } + + /** + * Set whether to parse as PEAR repository. + * @param boolean $b + */ + public function setPear($b) { + $this->pear = $b; + } + + /** + * Creates a FileSet. + * @return FileSet + */ + public function createFileset() { + $num = array_push($this->filesets, new FileSet()); + return $this->filesets[$num-1]; + } + + /** + * Creates a readme/install/changelog fileset. + * @return FileSet + */ + public function createProjdocfileset() { + $num = array_push($this->projDocFilesets, new FileSet()); + return $this->projDocFilesets[$num-1]; + } + + /** + * Control whether or not warnings will be shown for undocumented elements. + * Useful for identifying classes and methods that haven't yet been + * documented. + * @param boolean $b + */ + public function setUndocumentedelements($b) { + $this->undocumentedelements = $b; + } + + /** + * custom tags, will be recognized and put in tags[] instead of + * unknowntags[]. + * + * @param string $sCustomtags + */ + public function setCustomtags($sCustomtags) { + $this->customtags = $sCustomtags; + } + + /** + * Set base location of all templates for this parse. + * + * @param PhingFile $destdir + */ + public function setTemplateBase(PhingFile $oTemplateBase) { + $this->templateBase = $oTemplateBase; + } + + /** + * Searches include_path for PhpDocumentor install and adjusts include_path appropriately. + * @throws BuildException - if unable to find PhpDocumentor on include_path + */ + protected function findPhpDocumentorInstall() + { + $found = null; + foreach(explode(PATH_SEPARATOR, get_include_path()) as $path) { + $testpath = $path . DIRECTORY_SEPARATOR . 'PhpDocumentor'; + if (file_exists($testpath)) { + $found = $testpath; + break; + } + } + if (!$found) { + throw new BuildException("PhpDocumentor task depends on PhpDocumentor being installed and on include_path.", $this->getLocation()); + } + // otherwise, adjust the include_path to path to include the PhpDocumentor directory ... + set_include_path(get_include_path() . PATH_SEPARATOR . $found); + include_once ("phpDocumentor/Setup.inc.php"); + if (!class_exists('phpDocumentor_setup')) { + throw new BuildException("Error including PhpDocumentor setup class file."); + } + } + + /** + * Load the necessary environment for running PhpDoc. + * + * @throws BuildException - if the phpdoc classes can't be loaded. + */ + public function init() + { + $this->findPhpDocumentorInstall(); + include_once 'phing/tasks/ext/phpdoc/PhingPhpDocumentorSetup.php'; + } + + /** + * Main entrypoint of the task + */ + function main() + { + $this->validate(); + $configdir = $this->configDir ? $this->configDir->getAbsolutePath() : null; + $phpdoc = new PhingPhpDocumentorSetup($configdir); + $this->setPhpDocumentorOptions($phpdoc); + //$phpdoc->readCommandLineSettings(); + $phpdoc->setupConverters($this->output); + $phpdoc->createDocs(); + } + + /** + * Validates that necessary minimum options have been set. + * @throws BuildException if validation doesn't pass + */ + protected function validate() + { + if (!$this->destdir) { + throw new BuildException("You must specify a destdir for phpdoc.", $this->getLocation()); + } + if (!$this->output) { + throw new BuildException("You must specify an output format for phpdoc (e.g. HTML:frames:default).", $this->getLocation()); + } + if (empty($this->filesets)) { + throw new BuildException("You have not specified any files to include () for phpdoc.", $this->getLocation()); + } + } + + /** + * Sets the options on the passed-in phpdoc setup object. + * @param PhingPhpDocumentorSetup $phpdoc + */ + protected function setPhpDocumentorOptions(PhingPhpDocumentorSetup $phpdoc) + { + + // Title MUST be set first ... (because it re-initializes the internal state of the PhpDocu renderer) + if ($this->title) { + $phpdoc->setTitle($this->title); + } + + if ($this->parsePrivate) { + $phpdoc->setParsePrivate(); + } + + if ($this->javadocDesc) { + $phpdoc->setJavadocDesc(); + } + + if ($this->quiet) { + $phpdoc->setQuietMode(); + } + + if ($this->destdir) { + $phpdoc->setTargetDir($this->destdir->getAbsolutePath()); + } + + if ($this->packages) { + $phpdoc->setPackageOutput($this->packages); + } + + if ($this->templateBase) { + $phpdoc->setTemplateBase($this->templateBase->getAbsolutePath()); + } + + if ($this->linksource) { + $phpdoc->setGenerateSourcecode($this->linksource); + } + + if ($this->examplesDir) { + $phpdoc->setExamplesDir($this->examplesDir->getAbsolutePath()); + } + + if ($this->ignoreTags) { + $phpdoc->setIgnoreTags($this->ignoreTags); + } + + if ($this->defaultPackageName) { + $phpdoc->setDefaultPackageName($this->defaultPackageName); + } + + if ($this->defaultCategoryName) { + $phpdoc->setDefaultCategoryName($this->defaultCategoryName); + } + + if ($this->pear) { + $phpdoc->setPear($this->pear); + } + + // append any files in filesets + $filesToParse = array(); + foreach($this->filesets as $fs) { + $files = $fs->getDirectoryScanner($this->project)->getIncludedFiles(); + foreach($files as $filename) { + $f = new PhingFile($fs->getDir($this->project), $filename); + $filesToParse[] = $f->getAbsolutePath(); + } + } + //print_r(implode(",", $filesToParse)); + $phpdoc->setFilesToParse(implode(",", $filesToParse)); + + + // append any files in filesets + $ricFiles = array(); + foreach($this->projDocFilesets as $fs) { + $files = $fs->getDirectoryScanner($this->project)->getIncludedFiles(); + foreach($files as $filename) { + $f = new PhingFile($fs->getDir($this->project), $filename); + $ricFiles[] = $f->getAbsolutePath(); + } + } + $phpdoc->setRicFiles($ricFiles); + + if ($this->undocumentedelements) { + $phpdoc->setUndocumentedelements($this->undocumentedelements); + } + + if ($this->customtags) { + $phpdoc->setCustomtags($this->customtags); + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/all-wcprops new file mode 100644 index 0000000..b31a4c0 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/all-wcprops @@ -0,0 +1,41 @@ +K 25 +svn:wc:ra_dav:version-url +V 56 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/phpunit +END +PHPUnitTask.php +K 25 +svn:wc:ra_dav:version-url +V 72 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/phpunit/PHPUnitTask.php +END +FormatterElement.php +K 25 +svn:wc:ra_dav:version-url +V 77 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/phpunit/FormatterElement.php +END +BatchTest.php +K 25 +svn:wc:ra_dav:version-url +V 70 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/phpunit/BatchTest.php +END +PHPUnitTestRunner.php +K 25 +svn:wc:ra_dav:version-url +V 78 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/phpunit/PHPUnitTestRunner.php +END +PHPUnitUtil.php +K 25 +svn:wc:ra_dav:version-url +V 72 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/phpunit/PHPUnitUtil.php +END +PHPUnitReportTask.php +K 25 +svn:wc:ra_dav:version-url +V 78 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/phpunit/PHPUnitReportTask.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/entries new file mode 100644 index 0000000..6e4e86b --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/entries @@ -0,0 +1,238 @@ +10 + +dir +1404 +http://phing.mirror.svn.symfony-project.com/tags/2.3.3/classes/phing/tasks/ext/phpunit +http://phing.mirror.svn.symfony-project.com + + + +2008-10-28T19:34:15.403238Z +427 +mrook + + + + + + + + + + + + + + +c8b19502-6211-4773-8637-5aef67d587fc + +PHPUnitTask.php +file + + + + +2012-05-10T18:42:02.081552Z +df35af0268c723e283f6a4630bf5ba06 +2008-10-28T19:34:15.403238Z +427 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +10148 + +FormatterElement.php +file + + + + +2012-05-10T18:42:02.109548Z +6b4451fbcce6be75b448d241f89c2fdf +2007-12-20T15:44:58.929962Z +325 +hans +has-props + + + + + + + + + + + + + + + + + + + + +3681 + +BatchTest.php +file + + + + +2012-05-10T18:42:02.113553Z +9f7f60ff125302a73c66f00039ffff02 +2008-02-06T15:06:57.313579Z +350 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +4713 + +PHPUnitTestRunner.php +file + + + + +2012-05-10T18:42:02.113553Z +9ea7800ea36a14abd9aac75032646795 +2008-03-08T09:36:07.492998Z +361 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +3542 + +phpunit2 +dir + +phpunit3 +dir + +PHPUnitUtil.php +file + + + + +2012-05-10T18:42:02.154263Z +98b838bcac910aed08bef5a0964bc473 +2007-12-20T15:44:58.929962Z +325 +hans +has-props + + + + + + + + + + + + + + + + + + + + +3463 + +PHPUnitReportTask.php +file + + + + +2012-05-10T18:42:02.157549Z +b6e5f8537dc7751cf9af635ff55ce67c +2007-12-20T15:44:58.929962Z +325 +hans +has-props + + + + + + + + + + + + + + + + + + + + +4755 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/prop-base/BatchTest.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/prop-base/BatchTest.php.svn-base new file mode 100644 index 0000000..77191a2 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/prop-base/BatchTest.php.svn-base @@ -0,0 +1,9 @@ +K 14 +svn:executable +V 1 +* +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/prop-base/FormatterElement.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/prop-base/FormatterElement.php.svn-base new file mode 100644 index 0000000..77191a2 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/prop-base/FormatterElement.php.svn-base @@ -0,0 +1,9 @@ +K 14 +svn:executable +V 1 +* +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/prop-base/PHPUnitReportTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/prop-base/PHPUnitReportTask.php.svn-base new file mode 100644 index 0000000..77191a2 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/prop-base/PHPUnitReportTask.php.svn-base @@ -0,0 +1,9 @@ +K 14 +svn:executable +V 1 +* +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/prop-base/PHPUnitTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/prop-base/PHPUnitTask.php.svn-base new file mode 100644 index 0000000..77191a2 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/prop-base/PHPUnitTask.php.svn-base @@ -0,0 +1,9 @@ +K 14 +svn:executable +V 1 +* +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/prop-base/PHPUnitTestRunner.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/prop-base/PHPUnitTestRunner.php.svn-base new file mode 100644 index 0000000..77191a2 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/prop-base/PHPUnitTestRunner.php.svn-base @@ -0,0 +1,9 @@ +K 14 +svn:executable +V 1 +* +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/prop-base/PHPUnitUtil.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/prop-base/PHPUnitUtil.php.svn-base new file mode 100644 index 0000000..77191a2 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/prop-base/PHPUnitUtil.php.svn-base @@ -0,0 +1,9 @@ +K 14 +svn:executable +V 1 +* +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/text-base/BatchTest.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/text-base/BatchTest.php.svn-base new file mode 100644 index 0000000..0c8ea80 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/text-base/BatchTest.php.svn-base @@ -0,0 +1,182 @@ +. + */ + +require_once 'phing/types/FileSet.php'; + +/** + * Scans a list of files given by the fileset attribute, extracts + * all subclasses of PHPUnit(2)_Framework_TestCase / PHPUnit(2)_Framework_TestSuite. + * + * @author Michiel Rook + * @version $Id$ + * @package phing.tasks.ext.phpunit + * @since 2.1.0 + */ +class BatchTest +{ + /** the list of filesets containing the testcase filename rules */ + private $filesets = array(); + + /** the reference to the project */ + private $project = NULL; + + /** the classpath to use with Phing::__import() calls */ + private $classpath = NULL; + + /** names of classes to exclude */ + private $excludeClasses = array(); + + /** + * Create a new batchtest instance + * + * @param Project the project it depends on. + */ + function __construct(Project $project) + { + $this->project = $project; + } + + /** + * Sets the classes to exclude + */ + function setExclude($exclude) + { + $this->excludeClasses = explode(" ", $exclude); + } + + /** + * Sets the classpath + */ + function setClasspath(Path $classpath) + { + if ($this->classpath === null) + { + $this->classpath = $classpath; + } + else + { + $this->classpath->append($classpath); + } + } + + /** + * Creates a new Path object + */ + function createClasspath() + { + $this->classpath = new Path(); + return $this->classpath; + } + + /** + * Returns the classpath + */ + function getClasspath() + { + return $this->classpath; + } + + /** + * Add a new fileset containing the XML results to aggregate + * + * @param FileSet the new fileset containing XML results. + */ + function addFileSet(FileSet $fileset) + { + $this->filesets[] = $fileset; + } + + /** + * Iterate over all filesets and return the filename of all files. + * + * @return array an array of filenames + */ + private function getFilenames() + { + $filenames = array(); + + foreach ($this->filesets as $fileset) + { + $ds = $fileset->getDirectoryScanner($this->project); + $ds->scan(); + + $files = $ds->getIncludedFiles(); + + foreach ($files as $file) + { + $filenames[] = $ds->getBaseDir() . "/" . $file; + } + } + + return $filenames; + } + + /** + * Checks wheter $input is a subclass of PHPUnit(2)_Framework_TestCasse + * or PHPUnit(2)_Framework_TestSuite + */ + private function isTestCase($input) + { + if (PHPUnitUtil::$installedVersion == 3) + return is_subclass_of($input, 'PHPUnit_Framework_TestCase') || is_subclass_of($input, 'PHPUnit_Framework_TestSuite'); + else + return is_subclass_of($input, 'PHPUnit2_Framework_TestCase') || is_subclass_of($input, 'PHPUnit2_Framework_TestSuite'); + } + + /** + * Filters an array of classes, removes all classes that are not test cases or test suites, + * or classes that are declared abstract + */ + private function filterTests($input) + { + $reflect = new ReflectionClass($input); + + return $this->isTestCase($input) && (!$reflect->isAbstract()); + } + + /** + * Returns an array of test cases and test suites that are declared + * by the files included by the filesets + * + * @return array an array of PHPUnit(2)_Framework_TestCase or PHPUnit(2)_Framework_TestSuite classes. + */ + function elements() + { + $filenames = $this->getFilenames(); + + $declaredClasses = array(); + + foreach ($filenames as $filename) + { + $definedClasses = PHPUnitUtil::getDefinedClasses($filename, $this->classpath); + + foreach($definedClasses as $definedClass) { + $this->project->log("(PHPUnit) Adding $definedClass (from $filename) to tests.", Project::MSG_DEBUG); + } + + $declaredClasses = array_merge($declaredClasses, $definedClasses); + } + + $elements = array_filter($declaredClasses, array($this, "filterTests")); + + return $elements; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/text-base/FormatterElement.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/text-base/FormatterElement.php.svn-base new file mode 100644 index 0000000..27138418 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/text-base/FormatterElement.php.svn-base @@ -0,0 +1,150 @@ +. + */ + +require_once 'phing/system/io/PhingFile.php'; + +/** + * A wrapper for the implementations of PHPUnit2ResultFormatter. + * + * @author Michiel Rook + * @version $Id$ + * @package phing.tasks.ext.phpunit + * @since 2.1.0 + */ +class FormatterElement +{ + protected $formatter = NULL; + + protected $type = ""; + + protected $useFile = true; + + protected $toDir = "."; + + protected $outfile = ""; + + function setType($type) + { + $this->type = $type; + + if ($this->type == "summary") + { + if (PHPUnitUtil::$installedVersion == 3) + { + require_once 'phing/tasks/ext/phpunit/phpunit3/SummaryPHPUnit3ResultFormatter.php'; + $this->formatter = new SummaryPHPUnit3ResultFormatter(); + } + else + { + require_once 'phing/tasks/ext/phpunit/phpunit2/SummaryPHPUnit2ResultFormatter.php'; + $this->formatter = new SummaryPHPUnit2ResultFormatter(); + } + } + else + if ($this->type == "xml") + { + $destFile = new PhingFile($this->toDir, 'testsuites.xml'); + + if (PHPUnitUtil::$installedVersion == 3) + { + require_once 'phing/tasks/ext/phpunit/phpunit3/XMLPHPUnit3ResultFormatter.php'; + $this->formatter = new XMLPHPUnit3ResultFormatter(); + } + else + { + require_once 'phing/tasks/ext/phpunit/phpunit2/XMLPHPUnit2ResultFormatter.php'; + $this->formatter = new XMLPHPUnit2ResultFormatter(); + } + } + else + if ($this->type == "plain") + { + if (PHPUnitUtil::$installedVersion == 3) + { + require_once 'phing/tasks/ext/phpunit/phpunit3/PlainPHPUnit3ResultFormatter.php'; + $this->formatter = new PlainPHPUnit3ResultFormatter(); + } + else + { + require_once 'phing/tasks/ext/phpunit/phpunit2/PlainPHPUnit2ResultFormatter.php'; + $this->formatter = new PlainPHPUnit2ResultFormatter(); + } + } + else + { + throw new BuildException("Formatter '" . $this->type . "' not implemented"); + } + } + + function setClassName($className) + { + $classNameNoDot = Phing::import($className); + + $this->formatter = new $classNameNoDot(); + } + + function setUseFile($useFile) + { + $this->useFile = $useFile; + } + + function getUseFile() + { + return $this->useFile; + } + + function setToDir($toDir) + { + $this->toDir = $toDir; + } + + function getToDir() + { + return $this->toDir; + } + + function setOutfile($outfile) + { + $this->outfile = $outfile; + } + + function getOutfile() + { + if ($this->outfile) + { + return $this->outfile; + } + else + { + return $this->formatter->getPreferredOutfile() . $this->getExtension(); + } + } + + function getExtension() + { + return $this->formatter->getExtension(); + } + + function getFormatter() + { + return $this->formatter; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/text-base/PHPUnitReportTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/text-base/PHPUnitReportTask.php.svn-base new file mode 100644 index 0000000..7af8a4b --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/text-base/PHPUnitReportTask.php.svn-base @@ -0,0 +1,186 @@ +. + */ + +require_once 'phing/Task.php'; +require_once 'phing/system/io/PhingFile.php'; +require_once 'phing/system/io/FileWriter.php'; +require_once 'phing/util/ExtendedFileStream.php'; + +/** + * Transform a PHPUnit2 xml report using XSLT. + * This transformation generates an html report in either framed or non-framed + * style. The non-framed style is convenient to have a concise report via mail, + * the framed report is much more convenient if you want to browse into + * different packages or testcases since it is a Javadoc like report. + * + * @author Michiel Rook + * @version $Id$ + * @package phing.tasks.ext.phpunit + * @since 2.1.0 + */ +class PHPUnitReportTask extends Task +{ + private $format = "noframes"; + private $styleDir = ""; + private $toDir = ""; + + /** the directory where the results XML can be found */ + private $inFile = "testsuites.xml"; + + /** + * Set the filename of the XML results file to use. + */ + function setInFile($inFile) + { + $this->inFile = $inFile; + } + + /** + * Set the format of the generated report. Must be noframes or frames. + */ + function setFormat($format) + { + $this->format = $format; + } + + /** + * Set the directory where the stylesheets are located. + */ + function setStyleDir($styleDir) + { + $this->styleDir = $styleDir; + } + + /** + * Set the directory where the files resulting from the + * transformation should be written to. + */ + function setToDir($toDir) + { + $this->toDir = $toDir; + } + + /** + * Returns the path to the XSL stylesheet + */ + private function getStyleSheet() + { + $xslname = "phpunit2-" . $this->format . ".xsl"; + + if ($this->styleDir) + { + $file = new PhingFile($this->styleDir, $xslname); + } + else + { + $path = Phing::getResourcePath("phing/etc/$xslname"); + + if ($path === NULL) + { + $path = Phing::getResourcePath("etc/$xslname"); + + if ($path === NULL) + { + throw new BuildException("Could not find $xslname in resource path"); + } + } + + $file = new PhingFile($path); + } + + if (!$file->exists()) + { + throw new BuildException("Could not find file " . $file->getPath()); + } + + return $file; + } + + /** + * Transforms the DOM document + */ + private function transform(DOMDocument $document) + { + $dir = new PhingFile($this->toDir); + + if (!$dir->exists()) + { + throw new BuildException("Directory '" . $this->toDir . "' does not exist"); + } + + $xslfile = $this->getStyleSheet(); + + $xsl = new DOMDocument(); + $xsl->load($xslfile->getAbsolutePath()); + + $proc = new XSLTProcessor(); + $proc->importStyleSheet($xsl); + + if ($this->format == "noframes") + { + $writer = new FileWriter(new PhingFile($this->toDir, "phpunit2-noframes.html")); + $writer->write($proc->transformToXML($document)); + $writer->close(); + } + else + { + ExtendedFileStream::registerStream(); + + // no output for the framed report + // it's all done by extension... + $dir = new PhingFile($this->toDir); + $proc->setParameter('', 'output.dir', $dir->getAbsolutePath()); + $proc->transformToXML($document); + } + } + + /** + * Fixes 'testsuite' elements with no package attribute, adds + * package="default" to those elements. + */ + private function fixPackages(DOMDocument $document) + { + $testsuites = $document->getElementsByTagName('testsuite'); + + foreach ($testsuites as $testsuite) + { + if (!$testsuite->hasAttribute('package')) + { + $testsuite->setAttribute('package', 'default'); + } + } + } + + /** + * The main entry point + * + * @throws BuildException + */ + public function main() + { + $testSuitesDoc = new DOMDocument(); + $testSuitesDoc->load($this->inFile); + + $this->fixPackages($testSuitesDoc); + + $this->transform($testSuitesDoc); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/text-base/PHPUnitTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/text-base/PHPUnitTask.php.svn-base new file mode 100644 index 0000000..3ab72ce --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/text-base/PHPUnitTask.php.svn-base @@ -0,0 +1,390 @@ +. + */ + +require_once 'phing/Task.php'; +require_once 'phing/system/io/PhingFile.php'; +require_once 'phing/system/io/Writer.php'; +require_once 'phing/util/LogWriter.php'; + +/** + * Runs PHPUnit2/3 tests. + * + * @author Michiel Rook + * @version $Id$ + * @package phing.tasks.ext.phpunit + * @see BatchTest + * @since 2.1.0 + */ +class PHPUnitTask extends Task +{ + private $batchtests = array(); + private $formatters = array(); + private $haltonerror = false; + private $haltonfailure = false; + private $haltonincomplete = false; + private $haltonskipped = false; + private $errorproperty; + private $failureproperty; + private $incompleteproperty; + private $skippedproperty; + private $printsummary = false; + private $testfailed = false; + private $codecoverage = false; + private $groups = array(); + private $excludeGroups = array(); + + /** + * Initialize Task. + * This method includes any necessary PHPUnit2 libraries and triggers + * appropriate error if they cannot be found. This is not done in header + * because we may want this class to be loaded w/o triggering an error. + */ + function init() { + if (version_compare(PHP_VERSION, '5.0.3') < 0) { + throw new BuildException("PHPUnit2Task requires PHP version >= 5.0.3.", $this->getLocation()); + } + + /** + * Determine PHPUnit version number + */ + @include_once 'PHPUnit/Runner/Version.php'; + @include_once 'PHPUnit2/Runner/Version.php'; + + if (class_exists('PHPUnit_Runner_Version')) + { + $version = PHPUnit_Runner_Version::id(); + } + elseif (class_exists('PHPUnit2_Runner_Version')) + { + $version = PHPUnit2_Runner_Version::id(); + } + else + { + throw new BuildException("PHPUnit task depends on PHPUnit 2 or 3 package being installed.", $this->getLocation()); + } + + if (version_compare($version, "3.0.0") >= 0) + { + PHPUnitUtil::$installedVersion = 3; + if (version_compare($version, "3.2.0") >= 0) + { + PHPUnitUtil::$installedMinorVersion = 2; + } + } + else + { + PHPUnitUtil::$installedVersion = 2; + } + + /** + * Other dependencies that should only be loaded when class is actually used. + */ + require_once 'phing/tasks/ext/phpunit/PHPUnitTestRunner.php'; + require_once 'phing/tasks/ext/phpunit/BatchTest.php'; + require_once 'phing/tasks/ext/phpunit/FormatterElement.php'; + + /** + * Add some defaults to the PHPUnit filter + */ + $pwd = dirname(__FILE__); + + if (PHPUnitUtil::$installedVersion == 3) + { + require_once 'PHPUnit/Framework.php'; + require_once 'PHPUnit/Util/Filter.php'; + + // point PHPUnit_MAIN_METHOD define to non-existing method + if (!defined('PHPUnit_MAIN_METHOD')) { + define('PHPUnit_MAIN_METHOD', 'PHPUnitTask::undefined'); + } + + PHPUnit_Util_Filter::addFileToFilter($pwd . '/PHPUnitTask.php', 'PHING'); + PHPUnit_Util_Filter::addFileToFilter($pwd . '/PHPUnitTestRunner.php', 'PHING'); + PHPUnit_Util_Filter::addFileToFilter($pwd . '/../../../Task.php', 'PHING'); + PHPUnit_Util_Filter::addFileToFilter($pwd . '/../../../Target.php', 'PHING'); + PHPUnit_Util_Filter::addFileToFilter($pwd . '/../../../Project.php', 'PHING'); + PHPUnit_Util_Filter::addFileToFilter($pwd . '/../../../Phing.php', 'PHING'); + } + else + { + require_once 'PHPUnit2/Framework.php'; + require_once 'PHPUnit2/Util/Filter.php'; + + PHPUnit2_Util_Filter::addFileToFilter($pwd . '/PHPUnitTask.php'); + PHPUnit2_Util_Filter::addFileToFilter($pwd . '/PHPUnitTestRunner.php'); + PHPUnit2_Util_Filter::addFileToFilter($pwd . '/../../../Task.php'); + PHPUnit2_Util_Filter::addFileToFilter($pwd . '/../../../Target.php'); + PHPUnit2_Util_Filter::addFileToFilter($pwd . '/../../../Project.php'); + PHPUnit2_Util_Filter::addFileToFilter($pwd . '/../../../Phing.php'); + } + } + + function setErrorproperty($value) + { + $this->errorproperty = $value; + } + + function setFailureproperty($value) + { + $this->failureproperty = $value; + } + + function setIncompleteproperty($value) + { + $this->incompleteproperty = $value; + } + + function setSkippedproperty($value) + { + $this->skippedproperty = $value; + } + + function setHaltonerror($value) + { + $this->haltonerror = $value; + } + + function setHaltonfailure($value) + { + $this->haltonfailure = $value; + } + + function setHaltonincomplete($value) + { + $this->haltonincomplete = $value; + } + + function setHaltonskipped($value) + { + $this->haltonskipped = $value; + } + + function setPrintsummary($printsummary) + { + $this->printsummary = $printsummary; + } + + function setCodecoverage($codecoverage) + { + $this->codecoverage = $codecoverage; + } + + function setGroups($groups) + { + if (PHPUnitUtil::$installedVersion < 3 || (PHPUnitUtil::$installedVersion == 3 && PHPUnitUtil::$installedMinorVersion < 2)) + { + $this->log("The 'groups' attribute is only available with PHPUnit 3.2.0 or newer", Project::MSG_WARN); + } + $token = ' ,;'; + $this->groups = array(); + $tok = strtok($groups, $token); + while ($tok !== false) { + $this->groups[] = $tok; + $tok = strtok($token); + } + } + + function setExcludeGroups($excludeGroups) + { + if (PHPUnitUtil::$installedVersion < 3 || (PHPUnitUtil::$installedVersion == 3 && PHPUnitUtil::$installedMinorVersion < 2)) + { + $this->log("The 'excludeGroups' attribute is only available with PHPUnit 3.2.0 or newer", Project::MSG_WARN); + } + $token = ' ,;'; + $this->excludeGroups = array(); + $tok = strtok($groups, $token); + while ($tok !== false) { + $this->excludeGroups[] = $tok; + $tok = strtok($token); + } + } + + /** + * Add a new formatter to all tests of this task. + * + * @param FormatterElement formatter element + */ + function addFormatter(FormatterElement $fe) + { + $this->formatters[] = $fe; + } + + /** + * The main entry point + * + * @throws BuildException + */ + function main() + { + $tests = array(); + + if ($this->printsummary) + { + $fe = new FormatterElement(); + $fe->setType("summary"); + $fe->setUseFile(false); + $this->formatters[] = $fe; + } + + foreach ($this->batchtests as $batchtest) + { + $tests = array_merge($tests, $batchtest->elements()); + } + + foreach ($this->formatters as $fe) + { + $formatter = $fe->getFormatter(); + $formatter->setProject($this->getProject()); + + if ($fe->getUseFile()) + { + $destFile = new PhingFile($fe->getToDir(), $fe->getOutfile()); + + $writer = new FileWriter($destFile->getAbsolutePath()); + + $formatter->setOutput($writer); + } + else + { + $formatter->setOutput($this->getDefaultOutput()); + } + + $formatter->startTestRun(); + } + + foreach ($tests as $test) + { + $suite = NULL; + + if ((PHPUnitUtil::$installedVersion == 3 && is_subclass_of($test, 'PHPUnit_Framework_TestSuite')) || (PHPUnitUtil::$installedVersion == 2 && is_subclass_of($test, 'PHPUnit2_Framework_TestSuite'))) + { + if (is_object($test)) + { + $suite = $test; + } + else + { + $suite = new $test(); + } + } + else + { + if (PHPUnitUtil::$installedVersion == 3) + { + require_once 'PHPUnit/Framework/TestSuite.php'; + $suite = new PHPUnit_Framework_TestSuite(new ReflectionClass($test)); + } + else + { + require_once 'PHPUnit2/Framework/TestSuite.php'; + $suite = new PHPUnit2_Framework_TestSuite(new ReflectionClass($test)); + } + } + + $this->execute($suite); + } + + foreach ($this->formatters as $fe) + { + $formatter = $fe->getFormatter(); + $formatter->endTestRun(); + } + + if ($this->testfailed) + { + throw new BuildException("One or more tests failed"); + } + } + + /** + * @throws BuildException + */ + private function execute($suite) + { + $runner = new PHPUnitTestRunner($suite, $this->project, $this->groups, $this->excludeGroups); + + $runner->setCodecoverage($this->codecoverage); + + foreach ($this->formatters as $fe) + { + $formatter = $fe->getFormatter(); + + $runner->addFormatter($formatter); + } + + $runner->run(); + + $retcode = $runner->getRetCode(); + + if ($retcode == PHPUnitTestRunner::ERRORS) { + if ($this->errorproperty) { + $this->project->setNewProperty($this->errorproperty, true); + } + if ($this->haltonerror) { + $this->testfailed = true; + } + } elseif ($retcode == PHPUnitTestRunner::FAILURES) { + if ($this->failureproperty) { + $this->project->setNewProperty($this->failureproperty, true); + } + + if ($this->haltonfailure) { + $this->testfailed = true; + } + } elseif ($retcode == PHPUnitTestRunner::INCOMPLETES) { + if ($this->incompleteproperty) { + $this->project->setNewProperty($this->incompleteproperty, true); + } + + if ($this->haltonincomplete) { + $this->testfailed = true; + } + } elseif ($retcode == PHPUnitTestRunner::SKIPPED) { + if ($this->skippedproperty) { + $this->project->setNewProperty($this->skippedproperty, true); + } + + if ($this->haltonskipped) { + $this->testfailed = true; + } + } + } + + private function getDefaultOutput() + { + return new LogWriter($this); + } + + /** + * Adds a set of tests based on pattern matching. + * + * @return BatchTest a new instance of a batch test. + */ + function createBatchTest() + { + $batchtest = new BatchTest($this->getProject()); + + $this->batchtests[] = $batchtest; + + return $batchtest; + } +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/text-base/PHPUnitTestRunner.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/text-base/PHPUnitTestRunner.php.svn-base new file mode 100644 index 0000000..e4aa9df --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/text-base/PHPUnitTestRunner.php.svn-base @@ -0,0 +1,140 @@ +. + */ + +require_once 'phing/tasks/ext/coverage/CoverageMerger.php'; + +require_once 'phing/system/util/Timer.php'; + +/** + * Simple Testrunner for PHPUnit2/3 that runs all tests of a testsuite. + * + * @author Michiel Rook + * @version $Id$ + * @package phing.tasks.ext.phpunit + * @since 2.1.0 + */ +class PHPUnitTestRunner +{ + const SUCCESS = 0; + const FAILURES = 1; + const ERRORS = 2; + const INCOMPLETES = 3; + const SKIPPED = 4; + + private $test = NULL; + private $suite = NULL; + private $retCode = 0; + private $formatters = array(); + + private $codecoverage = false; + + private $project = NULL; + + private $groups = array(); + private $excludeGroups = array(); + + function __construct($suite, Project $project, $groups = array(), $excludeGroups = array()) + { + $this->suite = $suite; + $this->project = $project; + $this->groups = $groups; + $this->excludeGroups = $excludeGroups; + $this->retCode = self::SUCCESS; + } + + function setCodecoverage($codecoverage) + { + $this->codecoverage = $codecoverage; + } + + function addFormatter($formatter) + { + $this->formatters[] = $formatter; + } + + function run() + { + $res = NULL; + + if (PHPUnitUtil::$installedVersion == 3) + { + require_once 'PHPUnit/Framework/TestSuite.php'; + $res = new PHPUnit_Framework_TestResult(); + } + else + { + require_once 'PHPUnit2/Framework/TestSuite.php'; + $res = new PHPUnit2_Framework_TestResult(); + } + + if ($this->codecoverage) + { + $res->collectCodeCoverageInformation(TRUE); + } + + foreach ($this->formatters as $formatter) + { + $res->addListener($formatter); + } + + $this->suite->run($res, false, $this->groups, $this->excludeGroups); + + if ($this->codecoverage) + { + $coverageInformation = $res->getCodeCoverageInformation(); + + if (PHPUnitUtil::$installedVersion == 3) + { + foreach ($coverageInformation as $coverage_info) + { + CoverageMerger::merge($this->project, array($coverage_info['files'])); + } + } + else + { + CoverageMerger::merge($this->project, $coverageInformation); + } + } + + if ($res->errorCount() != 0) + { + $this->retCode = self::ERRORS; + } + else if ($res->failureCount() != 0) + { + $this->retCode = self::FAILURES; + } + else if ($res->notImplementedCount() != 0) + { + $this->retCode = self::INCOMPLETES; + } + else if (PHPUnitUtil::$installedVersion == 3 && $res->skippedCount() != 0) + { + $this->retCode = self::SKIPPED; + } + } + + function getRetCode() + { + return $this->retCode; + } +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/text-base/PHPUnitUtil.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/text-base/PHPUnitUtil.php.svn-base new file mode 100644 index 0000000..61bedc5 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/.svn/text-base/PHPUnitUtil.php.svn-base @@ -0,0 +1,131 @@ +. + */ + +/** + * Various utility functions + * + * @author Michiel Rook + * @version $Id$ + * @package phing.tasks.ext.phpunit + * @since 2.1.0 + */ +class PHPUnitUtil +{ + /** + * Installed PHPUnit major version + */ + public static $installedVersion = 2; + + /** + * Installed PHPUnit minor version + */ + public static $installedMinorVersion = 0; + + protected static $definedClasses = array(); + + /** + * Returns the package of a class as defined in the docblock of the class using @package + * + * @param string the name of the class + * @return string the name of the package + */ + static function getPackageName($classname) + { + $reflect = new ReflectionClass($classname); + + if (preg_match('/@package[\s]+([\.\w]+)/', $reflect->getDocComment(), $matches)) + { + return $matches[1]; + } + else + { + return "default"; + } + } + + /** + * Derives the classname from a filename. + * Assumes that there is only one class defined in that particular file, and that + * the naming follows the dot-path (Java) notation scheme. + * + * @param string the filename + * @return string the name fo the class + */ + static function getClassFromFileName($filename) + { + $filename = basename($filename); + + $rpos = strrpos($filename, '.'); + + if ($rpos != -1) + { + $filename = substr($filename, 0, $rpos); + } + + return $filename; + } + + /** + * @param string the filename + * @param Path optional classpath + * @return array list of classes defined in the file + */ + static function getDefinedClasses($filename, $classpath = NULL) + { + $filename = realpath($filename); + + if (!file_exists($filename)) + { + throw new Exception("File '" . $filename . "' does not exist"); + } + + if (isset(self::$definedClasses[$filename])) + { + return self::$definedClasses[$filename]; + } + + Phing::__import($filename, $classpath); + + $declaredClasses = get_declared_classes(); + + foreach ($declaredClasses as $classname) + { + $reflect = new ReflectionClass($classname); + + self::$definedClasses[$reflect->getFilename()][] = $classname; + + if (is_array(self::$definedClasses[$reflect->getFilename()])) + { + self::$definedClasses[$reflect->getFilename()] = array_unique(self::$definedClasses[$reflect->getFilename()]); + } + } + + if (isset(self::$definedClasses[$filename])) + { + return self::$definedClasses[$filename]; + } + else + { + return array(); + } + } +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/BatchTest.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/BatchTest.php new file mode 100755 index 0000000..d56746d --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/BatchTest.php @@ -0,0 +1,182 @@ +. + */ + +require_once 'phing/types/FileSet.php'; + +/** + * Scans a list of files given by the fileset attribute, extracts + * all subclasses of PHPUnit(2)_Framework_TestCase / PHPUnit(2)_Framework_TestSuite. + * + * @author Michiel Rook + * @version $Id: BatchTest.php 350 2008-02-06 15:06:57Z mrook $ + * @package phing.tasks.ext.phpunit + * @since 2.1.0 + */ +class BatchTest +{ + /** the list of filesets containing the testcase filename rules */ + private $filesets = array(); + + /** the reference to the project */ + private $project = NULL; + + /** the classpath to use with Phing::__import() calls */ + private $classpath = NULL; + + /** names of classes to exclude */ + private $excludeClasses = array(); + + /** + * Create a new batchtest instance + * + * @param Project the project it depends on. + */ + function __construct(Project $project) + { + $this->project = $project; + } + + /** + * Sets the classes to exclude + */ + function setExclude($exclude) + { + $this->excludeClasses = explode(" ", $exclude); + } + + /** + * Sets the classpath + */ + function setClasspath(Path $classpath) + { + if ($this->classpath === null) + { + $this->classpath = $classpath; + } + else + { + $this->classpath->append($classpath); + } + } + + /** + * Creates a new Path object + */ + function createClasspath() + { + $this->classpath = new Path(); + return $this->classpath; + } + + /** + * Returns the classpath + */ + function getClasspath() + { + return $this->classpath; + } + + /** + * Add a new fileset containing the XML results to aggregate + * + * @param FileSet the new fileset containing XML results. + */ + function addFileSet(FileSet $fileset) + { + $this->filesets[] = $fileset; + } + + /** + * Iterate over all filesets and return the filename of all files. + * + * @return array an array of filenames + */ + private function getFilenames() + { + $filenames = array(); + + foreach ($this->filesets as $fileset) + { + $ds = $fileset->getDirectoryScanner($this->project); + $ds->scan(); + + $files = $ds->getIncludedFiles(); + + foreach ($files as $file) + { + $filenames[] = $ds->getBaseDir() . "/" . $file; + } + } + + return $filenames; + } + + /** + * Checks wheter $input is a subclass of PHPUnit(2)_Framework_TestCasse + * or PHPUnit(2)_Framework_TestSuite + */ + private function isTestCase($input) + { + if (PHPUnitUtil::$installedVersion == 3) + return is_subclass_of($input, 'PHPUnit_Framework_TestCase') || is_subclass_of($input, 'PHPUnit_Framework_TestSuite'); + else + return is_subclass_of($input, 'PHPUnit2_Framework_TestCase') || is_subclass_of($input, 'PHPUnit2_Framework_TestSuite'); + } + + /** + * Filters an array of classes, removes all classes that are not test cases or test suites, + * or classes that are declared abstract + */ + private function filterTests($input) + { + $reflect = new ReflectionClass($input); + + return $this->isTestCase($input) && (!$reflect->isAbstract()); + } + + /** + * Returns an array of test cases and test suites that are declared + * by the files included by the filesets + * + * @return array an array of PHPUnit(2)_Framework_TestCase or PHPUnit(2)_Framework_TestSuite classes. + */ + function elements() + { + $filenames = $this->getFilenames(); + + $declaredClasses = array(); + + foreach ($filenames as $filename) + { + $definedClasses = PHPUnitUtil::getDefinedClasses($filename, $this->classpath); + + foreach($definedClasses as $definedClass) { + $this->project->log("(PHPUnit) Adding $definedClass (from $filename) to tests.", Project::MSG_DEBUG); + } + + $declaredClasses = array_merge($declaredClasses, $definedClasses); + } + + $elements = array_filter($declaredClasses, array($this, "filterTests")); + + return $elements; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/FormatterElement.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/FormatterElement.php new file mode 100755 index 0000000..def943b --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/FormatterElement.php @@ -0,0 +1,150 @@ +. + */ + +require_once 'phing/system/io/PhingFile.php'; + +/** + * A wrapper for the implementations of PHPUnit2ResultFormatter. + * + * @author Michiel Rook + * @version $Id: FormatterElement.php 325 2007-12-20 15:44:58Z hans $ + * @package phing.tasks.ext.phpunit + * @since 2.1.0 + */ +class FormatterElement +{ + protected $formatter = NULL; + + protected $type = ""; + + protected $useFile = true; + + protected $toDir = "."; + + protected $outfile = ""; + + function setType($type) + { + $this->type = $type; + + if ($this->type == "summary") + { + if (PHPUnitUtil::$installedVersion == 3) + { + require_once 'phing/tasks/ext/phpunit/phpunit3/SummaryPHPUnit3ResultFormatter.php'; + $this->formatter = new SummaryPHPUnit3ResultFormatter(); + } + else + { + require_once 'phing/tasks/ext/phpunit/phpunit2/SummaryPHPUnit2ResultFormatter.php'; + $this->formatter = new SummaryPHPUnit2ResultFormatter(); + } + } + else + if ($this->type == "xml") + { + $destFile = new PhingFile($this->toDir, 'testsuites.xml'); + + if (PHPUnitUtil::$installedVersion == 3) + { + require_once 'phing/tasks/ext/phpunit/phpunit3/XMLPHPUnit3ResultFormatter.php'; + $this->formatter = new XMLPHPUnit3ResultFormatter(); + } + else + { + require_once 'phing/tasks/ext/phpunit/phpunit2/XMLPHPUnit2ResultFormatter.php'; + $this->formatter = new XMLPHPUnit2ResultFormatter(); + } + } + else + if ($this->type == "plain") + { + if (PHPUnitUtil::$installedVersion == 3) + { + require_once 'phing/tasks/ext/phpunit/phpunit3/PlainPHPUnit3ResultFormatter.php'; + $this->formatter = new PlainPHPUnit3ResultFormatter(); + } + else + { + require_once 'phing/tasks/ext/phpunit/phpunit2/PlainPHPUnit2ResultFormatter.php'; + $this->formatter = new PlainPHPUnit2ResultFormatter(); + } + } + else + { + throw new BuildException("Formatter '" . $this->type . "' not implemented"); + } + } + + function setClassName($className) + { + $classNameNoDot = Phing::import($className); + + $this->formatter = new $classNameNoDot(); + } + + function setUseFile($useFile) + { + $this->useFile = $useFile; + } + + function getUseFile() + { + return $this->useFile; + } + + function setToDir($toDir) + { + $this->toDir = $toDir; + } + + function getToDir() + { + return $this->toDir; + } + + function setOutfile($outfile) + { + $this->outfile = $outfile; + } + + function getOutfile() + { + if ($this->outfile) + { + return $this->outfile; + } + else + { + return $this->formatter->getPreferredOutfile() . $this->getExtension(); + } + } + + function getExtension() + { + return $this->formatter->getExtension(); + } + + function getFormatter() + { + return $this->formatter; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/PHPUnitReportTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/PHPUnitReportTask.php new file mode 100755 index 0000000..09de218 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/PHPUnitReportTask.php @@ -0,0 +1,186 @@ +. + */ + +require_once 'phing/Task.php'; +require_once 'phing/system/io/PhingFile.php'; +require_once 'phing/system/io/FileWriter.php'; +require_once 'phing/util/ExtendedFileStream.php'; + +/** + * Transform a PHPUnit2 xml report using XSLT. + * This transformation generates an html report in either framed or non-framed + * style. The non-framed style is convenient to have a concise report via mail, + * the framed report is much more convenient if you want to browse into + * different packages or testcases since it is a Javadoc like report. + * + * @author Michiel Rook + * @version $Id: PHPUnitReportTask.php 325 2007-12-20 15:44:58Z hans $ + * @package phing.tasks.ext.phpunit + * @since 2.1.0 + */ +class PHPUnitReportTask extends Task +{ + private $format = "noframes"; + private $styleDir = ""; + private $toDir = ""; + + /** the directory where the results XML can be found */ + private $inFile = "testsuites.xml"; + + /** + * Set the filename of the XML results file to use. + */ + function setInFile($inFile) + { + $this->inFile = $inFile; + } + + /** + * Set the format of the generated report. Must be noframes or frames. + */ + function setFormat($format) + { + $this->format = $format; + } + + /** + * Set the directory where the stylesheets are located. + */ + function setStyleDir($styleDir) + { + $this->styleDir = $styleDir; + } + + /** + * Set the directory where the files resulting from the + * transformation should be written to. + */ + function setToDir($toDir) + { + $this->toDir = $toDir; + } + + /** + * Returns the path to the XSL stylesheet + */ + private function getStyleSheet() + { + $xslname = "phpunit2-" . $this->format . ".xsl"; + + if ($this->styleDir) + { + $file = new PhingFile($this->styleDir, $xslname); + } + else + { + $path = Phing::getResourcePath("phing/etc/$xslname"); + + if ($path === NULL) + { + $path = Phing::getResourcePath("etc/$xslname"); + + if ($path === NULL) + { + throw new BuildException("Could not find $xslname in resource path"); + } + } + + $file = new PhingFile($path); + } + + if (!$file->exists()) + { + throw new BuildException("Could not find file " . $file->getPath()); + } + + return $file; + } + + /** + * Transforms the DOM document + */ + private function transform(DOMDocument $document) + { + $dir = new PhingFile($this->toDir); + + if (!$dir->exists()) + { + throw new BuildException("Directory '" . $this->toDir . "' does not exist"); + } + + $xslfile = $this->getStyleSheet(); + + $xsl = new DOMDocument(); + $xsl->load($xslfile->getAbsolutePath()); + + $proc = new XSLTProcessor(); + $proc->importStyleSheet($xsl); + + if ($this->format == "noframes") + { + $writer = new FileWriter(new PhingFile($this->toDir, "phpunit2-noframes.html")); + $writer->write($proc->transformToXML($document)); + $writer->close(); + } + else + { + ExtendedFileStream::registerStream(); + + // no output for the framed report + // it's all done by extension... + $dir = new PhingFile($this->toDir); + $proc->setParameter('', 'output.dir', $dir->getAbsolutePath()); + $proc->transformToXML($document); + } + } + + /** + * Fixes 'testsuite' elements with no package attribute, adds + * package="default" to those elements. + */ + private function fixPackages(DOMDocument $document) + { + $testsuites = $document->getElementsByTagName('testsuite'); + + foreach ($testsuites as $testsuite) + { + if (!$testsuite->hasAttribute('package')) + { + $testsuite->setAttribute('package', 'default'); + } + } + } + + /** + * The main entry point + * + * @throws BuildException + */ + public function main() + { + $testSuitesDoc = new DOMDocument(); + $testSuitesDoc->load($this->inFile); + + $this->fixPackages($testSuitesDoc); + + $this->transform($testSuitesDoc); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/PHPUnitTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/PHPUnitTask.php new file mode 100755 index 0000000..1a5c5f4 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/PHPUnitTask.php @@ -0,0 +1,390 @@ +. + */ + +require_once 'phing/Task.php'; +require_once 'phing/system/io/PhingFile.php'; +require_once 'phing/system/io/Writer.php'; +require_once 'phing/util/LogWriter.php'; + +/** + * Runs PHPUnit2/3 tests. + * + * @author Michiel Rook + * @version $Id: PHPUnitTask.php 427 2008-10-28 19:34:15Z mrook $ + * @package phing.tasks.ext.phpunit + * @see BatchTest + * @since 2.1.0 + */ +class PHPUnitTask extends Task +{ + private $batchtests = array(); + private $formatters = array(); + private $haltonerror = false; + private $haltonfailure = false; + private $haltonincomplete = false; + private $haltonskipped = false; + private $errorproperty; + private $failureproperty; + private $incompleteproperty; + private $skippedproperty; + private $printsummary = false; + private $testfailed = false; + private $codecoverage = false; + private $groups = array(); + private $excludeGroups = array(); + + /** + * Initialize Task. + * This method includes any necessary PHPUnit2 libraries and triggers + * appropriate error if they cannot be found. This is not done in header + * because we may want this class to be loaded w/o triggering an error. + */ + function init() { + if (version_compare(PHP_VERSION, '5.0.3') < 0) { + throw new BuildException("PHPUnit2Task requires PHP version >= 5.0.3.", $this->getLocation()); + } + + /** + * Determine PHPUnit version number + */ + @include_once 'PHPUnit/Runner/Version.php'; + @include_once 'PHPUnit2/Runner/Version.php'; + + if (class_exists('PHPUnit_Runner_Version')) + { + $version = PHPUnit_Runner_Version::id(); + } + elseif (class_exists('PHPUnit2_Runner_Version')) + { + $version = PHPUnit2_Runner_Version::id(); + } + else + { + throw new BuildException("PHPUnit task depends on PHPUnit 2 or 3 package being installed.", $this->getLocation()); + } + + if (version_compare($version, "3.0.0") >= 0) + { + PHPUnitUtil::$installedVersion = 3; + if (version_compare($version, "3.2.0") >= 0) + { + PHPUnitUtil::$installedMinorVersion = 2; + } + } + else + { + PHPUnitUtil::$installedVersion = 2; + } + + /** + * Other dependencies that should only be loaded when class is actually used. + */ + require_once 'phing/tasks/ext/phpunit/PHPUnitTestRunner.php'; + require_once 'phing/tasks/ext/phpunit/BatchTest.php'; + require_once 'phing/tasks/ext/phpunit/FormatterElement.php'; + + /** + * Add some defaults to the PHPUnit filter + */ + $pwd = dirname(__FILE__); + + if (PHPUnitUtil::$installedVersion == 3) + { + require_once 'PHPUnit/Framework.php'; + require_once 'PHPUnit/Util/Filter.php'; + + // point PHPUnit_MAIN_METHOD define to non-existing method + if (!defined('PHPUnit_MAIN_METHOD')) { + define('PHPUnit_MAIN_METHOD', 'PHPUnitTask::undefined'); + } + + PHPUnit_Util_Filter::addFileToFilter($pwd . '/PHPUnitTask.php', 'PHING'); + PHPUnit_Util_Filter::addFileToFilter($pwd . '/PHPUnitTestRunner.php', 'PHING'); + PHPUnit_Util_Filter::addFileToFilter($pwd . '/../../../Task.php', 'PHING'); + PHPUnit_Util_Filter::addFileToFilter($pwd . '/../../../Target.php', 'PHING'); + PHPUnit_Util_Filter::addFileToFilter($pwd . '/../../../Project.php', 'PHING'); + PHPUnit_Util_Filter::addFileToFilter($pwd . '/../../../Phing.php', 'PHING'); + } + else + { + require_once 'PHPUnit2/Framework.php'; + require_once 'PHPUnit2/Util/Filter.php'; + + PHPUnit2_Util_Filter::addFileToFilter($pwd . '/PHPUnitTask.php'); + PHPUnit2_Util_Filter::addFileToFilter($pwd . '/PHPUnitTestRunner.php'); + PHPUnit2_Util_Filter::addFileToFilter($pwd . '/../../../Task.php'); + PHPUnit2_Util_Filter::addFileToFilter($pwd . '/../../../Target.php'); + PHPUnit2_Util_Filter::addFileToFilter($pwd . '/../../../Project.php'); + PHPUnit2_Util_Filter::addFileToFilter($pwd . '/../../../Phing.php'); + } + } + + function setErrorproperty($value) + { + $this->errorproperty = $value; + } + + function setFailureproperty($value) + { + $this->failureproperty = $value; + } + + function setIncompleteproperty($value) + { + $this->incompleteproperty = $value; + } + + function setSkippedproperty($value) + { + $this->skippedproperty = $value; + } + + function setHaltonerror($value) + { + $this->haltonerror = $value; + } + + function setHaltonfailure($value) + { + $this->haltonfailure = $value; + } + + function setHaltonincomplete($value) + { + $this->haltonincomplete = $value; + } + + function setHaltonskipped($value) + { + $this->haltonskipped = $value; + } + + function setPrintsummary($printsummary) + { + $this->printsummary = $printsummary; + } + + function setCodecoverage($codecoverage) + { + $this->codecoverage = $codecoverage; + } + + function setGroups($groups) + { + if (PHPUnitUtil::$installedVersion < 3 || (PHPUnitUtil::$installedVersion == 3 && PHPUnitUtil::$installedMinorVersion < 2)) + { + $this->log("The 'groups' attribute is only available with PHPUnit 3.2.0 or newer", Project::MSG_WARN); + } + $token = ' ,;'; + $this->groups = array(); + $tok = strtok($groups, $token); + while ($tok !== false) { + $this->groups[] = $tok; + $tok = strtok($token); + } + } + + function setExcludeGroups($excludeGroups) + { + if (PHPUnitUtil::$installedVersion < 3 || (PHPUnitUtil::$installedVersion == 3 && PHPUnitUtil::$installedMinorVersion < 2)) + { + $this->log("The 'excludeGroups' attribute is only available with PHPUnit 3.2.0 or newer", Project::MSG_WARN); + } + $token = ' ,;'; + $this->excludeGroups = array(); + $tok = strtok($groups, $token); + while ($tok !== false) { + $this->excludeGroups[] = $tok; + $tok = strtok($token); + } + } + + /** + * Add a new formatter to all tests of this task. + * + * @param FormatterElement formatter element + */ + function addFormatter(FormatterElement $fe) + { + $this->formatters[] = $fe; + } + + /** + * The main entry point + * + * @throws BuildException + */ + function main() + { + $tests = array(); + + if ($this->printsummary) + { + $fe = new FormatterElement(); + $fe->setType("summary"); + $fe->setUseFile(false); + $this->formatters[] = $fe; + } + + foreach ($this->batchtests as $batchtest) + { + $tests = array_merge($tests, $batchtest->elements()); + } + + foreach ($this->formatters as $fe) + { + $formatter = $fe->getFormatter(); + $formatter->setProject($this->getProject()); + + if ($fe->getUseFile()) + { + $destFile = new PhingFile($fe->getToDir(), $fe->getOutfile()); + + $writer = new FileWriter($destFile->getAbsolutePath()); + + $formatter->setOutput($writer); + } + else + { + $formatter->setOutput($this->getDefaultOutput()); + } + + $formatter->startTestRun(); + } + + foreach ($tests as $test) + { + $suite = NULL; + + if ((PHPUnitUtil::$installedVersion == 3 && is_subclass_of($test, 'PHPUnit_Framework_TestSuite')) || (PHPUnitUtil::$installedVersion == 2 && is_subclass_of($test, 'PHPUnit2_Framework_TestSuite'))) + { + if (is_object($test)) + { + $suite = $test; + } + else + { + $suite = new $test(); + } + } + else + { + if (PHPUnitUtil::$installedVersion == 3) + { + require_once 'PHPUnit/Framework/TestSuite.php'; + $suite = new PHPUnit_Framework_TestSuite(new ReflectionClass($test)); + } + else + { + require_once 'PHPUnit2/Framework/TestSuite.php'; + $suite = new PHPUnit2_Framework_TestSuite(new ReflectionClass($test)); + } + } + + $this->execute($suite); + } + + foreach ($this->formatters as $fe) + { + $formatter = $fe->getFormatter(); + $formatter->endTestRun(); + } + + if ($this->testfailed) + { + throw new BuildException("One or more tests failed"); + } + } + + /** + * @throws BuildException + */ + private function execute($suite) + { + $runner = new PHPUnitTestRunner($suite, $this->project, $this->groups, $this->excludeGroups); + + $runner->setCodecoverage($this->codecoverage); + + foreach ($this->formatters as $fe) + { + $formatter = $fe->getFormatter(); + + $runner->addFormatter($formatter); + } + + $runner->run(); + + $retcode = $runner->getRetCode(); + + if ($retcode == PHPUnitTestRunner::ERRORS) { + if ($this->errorproperty) { + $this->project->setNewProperty($this->errorproperty, true); + } + if ($this->haltonerror) { + $this->testfailed = true; + } + } elseif ($retcode == PHPUnitTestRunner::FAILURES) { + if ($this->failureproperty) { + $this->project->setNewProperty($this->failureproperty, true); + } + + if ($this->haltonfailure) { + $this->testfailed = true; + } + } elseif ($retcode == PHPUnitTestRunner::INCOMPLETES) { + if ($this->incompleteproperty) { + $this->project->setNewProperty($this->incompleteproperty, true); + } + + if ($this->haltonincomplete) { + $this->testfailed = true; + } + } elseif ($retcode == PHPUnitTestRunner::SKIPPED) { + if ($this->skippedproperty) { + $this->project->setNewProperty($this->skippedproperty, true); + } + + if ($this->haltonskipped) { + $this->testfailed = true; + } + } + } + + private function getDefaultOutput() + { + return new LogWriter($this); + } + + /** + * Adds a set of tests based on pattern matching. + * + * @return BatchTest a new instance of a batch test. + */ + function createBatchTest() + { + $batchtest = new BatchTest($this->getProject()); + + $this->batchtests[] = $batchtest; + + return $batchtest; + } +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/PHPUnitTestRunner.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/PHPUnitTestRunner.php new file mode 100755 index 0000000..5f8cdee --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/PHPUnitTestRunner.php @@ -0,0 +1,140 @@ +. + */ + +require_once 'phing/tasks/ext/coverage/CoverageMerger.php'; + +require_once 'phing/system/util/Timer.php'; + +/** + * Simple Testrunner for PHPUnit2/3 that runs all tests of a testsuite. + * + * @author Michiel Rook + * @version $Id: PHPUnitTestRunner.php 361 2008-03-08 09:36:07Z mrook $ + * @package phing.tasks.ext.phpunit + * @since 2.1.0 + */ +class PHPUnitTestRunner +{ + const SUCCESS = 0; + const FAILURES = 1; + const ERRORS = 2; + const INCOMPLETES = 3; + const SKIPPED = 4; + + private $test = NULL; + private $suite = NULL; + private $retCode = 0; + private $formatters = array(); + + private $codecoverage = false; + + private $project = NULL; + + private $groups = array(); + private $excludeGroups = array(); + + function __construct($suite, Project $project, $groups = array(), $excludeGroups = array()) + { + $this->suite = $suite; + $this->project = $project; + $this->groups = $groups; + $this->excludeGroups = $excludeGroups; + $this->retCode = self::SUCCESS; + } + + function setCodecoverage($codecoverage) + { + $this->codecoverage = $codecoverage; + } + + function addFormatter($formatter) + { + $this->formatters[] = $formatter; + } + + function run() + { + $res = NULL; + + if (PHPUnitUtil::$installedVersion == 3) + { + require_once 'PHPUnit/Framework/TestSuite.php'; + $res = new PHPUnit_Framework_TestResult(); + } + else + { + require_once 'PHPUnit2/Framework/TestSuite.php'; + $res = new PHPUnit2_Framework_TestResult(); + } + + if ($this->codecoverage) + { + $res->collectCodeCoverageInformation(TRUE); + } + + foreach ($this->formatters as $formatter) + { + $res->addListener($formatter); + } + + $this->suite->run($res, false, $this->groups, $this->excludeGroups); + + if ($this->codecoverage) + { + $coverageInformation = $res->getCodeCoverageInformation(); + + if (PHPUnitUtil::$installedVersion == 3) + { + foreach ($coverageInformation as $coverage_info) + { + CoverageMerger::merge($this->project, array($coverage_info['files'])); + } + } + else + { + CoverageMerger::merge($this->project, $coverageInformation); + } + } + + if ($res->errorCount() != 0) + { + $this->retCode = self::ERRORS; + } + else if ($res->failureCount() != 0) + { + $this->retCode = self::FAILURES; + } + else if ($res->notImplementedCount() != 0) + { + $this->retCode = self::INCOMPLETES; + } + else if (PHPUnitUtil::$installedVersion == 3 && $res->skippedCount() != 0) + { + $this->retCode = self::SKIPPED; + } + } + + function getRetCode() + { + return $this->retCode; + } +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/PHPUnitUtil.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/PHPUnitUtil.php new file mode 100755 index 0000000..e408f20 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/PHPUnitUtil.php @@ -0,0 +1,131 @@ +. + */ + +/** + * Various utility functions + * + * @author Michiel Rook + * @version $Id: PHPUnitUtil.php 325 2007-12-20 15:44:58Z hans $ + * @package phing.tasks.ext.phpunit + * @since 2.1.0 + */ +class PHPUnitUtil +{ + /** + * Installed PHPUnit major version + */ + public static $installedVersion = 2; + + /** + * Installed PHPUnit minor version + */ + public static $installedMinorVersion = 0; + + protected static $definedClasses = array(); + + /** + * Returns the package of a class as defined in the docblock of the class using @package + * + * @param string the name of the class + * @return string the name of the package + */ + static function getPackageName($classname) + { + $reflect = new ReflectionClass($classname); + + if (preg_match('/@package[\s]+([\.\w]+)/', $reflect->getDocComment(), $matches)) + { + return $matches[1]; + } + else + { + return "default"; + } + } + + /** + * Derives the classname from a filename. + * Assumes that there is only one class defined in that particular file, and that + * the naming follows the dot-path (Java) notation scheme. + * + * @param string the filename + * @return string the name fo the class + */ + static function getClassFromFileName($filename) + { + $filename = basename($filename); + + $rpos = strrpos($filename, '.'); + + if ($rpos != -1) + { + $filename = substr($filename, 0, $rpos); + } + + return $filename; + } + + /** + * @param string the filename + * @param Path optional classpath + * @return array list of classes defined in the file + */ + static function getDefinedClasses($filename, $classpath = NULL) + { + $filename = realpath($filename); + + if (!file_exists($filename)) + { + throw new Exception("File '" . $filename . "' does not exist"); + } + + if (isset(self::$definedClasses[$filename])) + { + return self::$definedClasses[$filename]; + } + + Phing::__import($filename, $classpath); + + $declaredClasses = get_declared_classes(); + + foreach ($declaredClasses as $classname) + { + $reflect = new ReflectionClass($classname); + + self::$definedClasses[$reflect->getFilename()][] = $classname; + + if (is_array(self::$definedClasses[$reflect->getFilename()])) + { + self::$definedClasses[$reflect->getFilename()] = array_unique(self::$definedClasses[$reflect->getFilename()]); + } + } + + if (isset(self::$definedClasses[$filename])) + { + return self::$definedClasses[$filename]; + } + else + { + return array(); + } + } +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/.svn/all-wcprops new file mode 100644 index 0000000..4bc5720 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/.svn/all-wcprops @@ -0,0 +1,29 @@ +K 25 +svn:wc:ra_dav:version-url +V 65 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/phpunit/phpunit2 +END +SummaryPHPUnit2ResultFormatter.php +K 25 +svn:wc:ra_dav:version-url +V 100 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/phpunit/phpunit2/SummaryPHPUnit2ResultFormatter.php +END +PHPUnit2ResultFormatter.php +K 25 +svn:wc:ra_dav:version-url +V 93 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/phpunit/phpunit2/PHPUnit2ResultFormatter.php +END +XMLPHPUnit2ResultFormatter.php +K 25 +svn:wc:ra_dav:version-url +V 96 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/phpunit/phpunit2/XMLPHPUnit2ResultFormatter.php +END +PlainPHPUnit2ResultFormatter.php +K 25 +svn:wc:ra_dav:version-url +V 98 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/phpunit/phpunit2/PlainPHPUnit2ResultFormatter.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/.svn/entries new file mode 100644 index 0000000..30e7eb5 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/.svn/entries @@ -0,0 +1,164 @@ +10 + +dir +1404 +http://phing.mirror.svn.symfony-project.com/tags/2.3.3/classes/phing/tasks/ext/phpunit/phpunit2 +http://phing.mirror.svn.symfony-project.com + + + +2007-12-20T15:44:58.929962Z +325 +hans + + + + + + + + + + + + + + +c8b19502-6211-4773-8637-5aef67d587fc + +SummaryPHPUnit2ResultFormatter.php +file + + + + +2012-05-10T18:42:00.609553Z +db2c01bade0de76b9d7fa10fc67048e7 +2007-12-20T15:44:58.929962Z +325 +hans +has-props + + + + + + + + + + + + + + + + + + + + +1979 + +PHPUnit2ResultFormatter.php +file + + + + +2012-05-10T18:42:00.609553Z +e9c1d86886c1bd12bd9ca9e34d9204d1 +2007-12-20T15:44:58.929962Z +325 +hans +has-props + + + + + + + + + + + + + + + + + + + + +3354 + +XMLPHPUnit2ResultFormatter.php +file + + + + +2012-05-10T18:42:00.701593Z +833c89d60ed881a4a4ede9ef29d0736b +2007-12-20T15:44:58.929962Z +325 +hans +has-props + + + + + + + + + + + + + + + + + + + + +3024 + +PlainPHPUnit2ResultFormatter.php +file + + + + +2012-05-10T18:42:00.709551Z +9b99a8e66d0f51f6c2924cfb340ac0e1 +2007-12-20T15:44:58.929962Z +325 +hans +has-props + + + + + + + + + + + + + + + + + + + + +3213 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/.svn/prop-base/PHPUnit2ResultFormatter.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/.svn/prop-base/PHPUnit2ResultFormatter.php.svn-base new file mode 100644 index 0000000..77191a2 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/.svn/prop-base/PHPUnit2ResultFormatter.php.svn-base @@ -0,0 +1,9 @@ +K 14 +svn:executable +V 1 +* +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/.svn/prop-base/PlainPHPUnit2ResultFormatter.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/.svn/prop-base/PlainPHPUnit2ResultFormatter.php.svn-base new file mode 100644 index 0000000..77191a2 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/.svn/prop-base/PlainPHPUnit2ResultFormatter.php.svn-base @@ -0,0 +1,9 @@ +K 14 +svn:executable +V 1 +* +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/.svn/prop-base/SummaryPHPUnit2ResultFormatter.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/.svn/prop-base/SummaryPHPUnit2ResultFormatter.php.svn-base new file mode 100644 index 0000000..77191a2 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/.svn/prop-base/SummaryPHPUnit2ResultFormatter.php.svn-base @@ -0,0 +1,9 @@ +K 14 +svn:executable +V 1 +* +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/.svn/prop-base/XMLPHPUnit2ResultFormatter.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/.svn/prop-base/XMLPHPUnit2ResultFormatter.php.svn-base new file mode 100644 index 0000000..77191a2 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/.svn/prop-base/XMLPHPUnit2ResultFormatter.php.svn-base @@ -0,0 +1,9 @@ +K 14 +svn:executable +V 1 +* +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/.svn/text-base/PHPUnit2ResultFormatter.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/.svn/text-base/PHPUnit2ResultFormatter.php.svn-base new file mode 100644 index 0000000..ed03f11 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/.svn/text-base/PHPUnit2ResultFormatter.php.svn-base @@ -0,0 +1,157 @@ +. + */ + +require_once 'PHPUnit2/Framework/TestListener.php'; + +require_once 'phing/system/io/Writer.php'; + +/** + * This abstract class describes classes that format the results of a PHPUnit2 testrun. + * + * @author Michiel Rook + * @version $Id$ + * @package phing.tasks.ext.phpunit.phpunit2 + * @since 2.1.0 + */ +abstract class PHPUnit2ResultFormatter implements PHPUnit2_Framework_TestListener +{ + protected $out = NULL; + + protected $project = NULL; + + private $timer = NULL; + + private $runCount = 0; + + private $failureCount = 0; + + private $errorCount = 0; + + /** + * Sets the writer the formatter is supposed to write its results to. + */ + function setOutput(Writer $out) + { + $this->out = $out; + } + + /** + * Returns the extension used for this formatter + * + * @return string the extension + */ + function getExtension() + { + return ""; + } + + /** + * Sets the project + * + * @param Project the project + */ + function setProject(Project $project) + { + $this->project = $project; + } + + function getPreferredOutfile() + { + return ""; + } + + function startTestRun() + { + } + + function endTestRun() + { + } + + function startTestSuite(PHPUnit2_Framework_TestSuite $suite) + { + $this->runCount = 0; + $this->failureCount = 0; + $this->errorCount = 0; + + $this->timer = new Timer(); + $this->timer->start(); + } + + function endTestSuite(PHPUnit2_Framework_TestSuite $suite) + { + $this->timer->stop(); + } + + function startTest(PHPUnit2_Framework_Test $test) + { + $this->runCount++; + } + + function endTest(PHPUnit2_Framework_Test $test) + { + } + + function addError(PHPUnit2_Framework_Test $test, Exception $e) + { + $this->errorCount++; + } + + function addFailure(PHPUnit2_Framework_Test $test, PHPUnit2_Framework_AssertionFailedError $t) + { + $this->failureCount++; + } + + function addIncompleteTest(PHPUnit2_Framework_Test $test, Exception $e) + { + } + + function addSkippedTest(PHPUnit2_Framework_Test $test, Exception $e) + { + } + + function getRunCount() + { + return $this->runCount; + } + + function getFailureCount() + { + return $this->failureCount; + } + + function getErrorCount() + { + return $this->errorCount; + } + + function getElapsedTime() + { + if ($this->timer) + { + return $this->timer->getElapsedTime(); + } + else + { + return 0; + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/.svn/text-base/PlainPHPUnit2ResultFormatter.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/.svn/text-base/PlainPHPUnit2ResultFormatter.php.svn-base new file mode 100644 index 0000000..f9d9b12 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/.svn/text-base/PlainPHPUnit2ResultFormatter.php.svn-base @@ -0,0 +1,116 @@ +. + */ + +require_once 'PHPUnit2/Framework/Test.php'; +require_once 'PHPUnit2/Util/Filter.php'; + +require_once 'phing/tasks/ext/phpunit/phpunit2/PHPUnit2ResultFormatter.php'; + +/** + * Prints plain text output of the test to a specified Writer. + * + * @author Michiel Rook + * @version $Id$ + * @package phing.tasks.ext.phpunit.phpunit2 + * @since 2.1.0 + */ +class PlainPHPUnit2ResultFormatter extends PHPUnit2ResultFormatter +{ + private $inner = ""; + + function getExtension() + { + return ".txt"; + } + + function getPreferredOutfile() + { + return "testresults"; + } + + function startTestSuite(PHPUnit2_Framework_TestSuite $suite) + { + parent::startTestSuite($suite); + + $this->inner = ""; + } + + function endTestSuite(PHPUnit2_Framework_TestSuite $suite) + { + parent::endTestSuite($suite); + + $sb = "Testsuite: " . $suite->getName() . "\n"; + $sb.= "Tests run: " . $this->getRunCount(); + $sb.= ", Failures: " . $this->getFailureCount(); + $sb.= ", Errors: " . $this->getErrorCount(); + $sb.= ", Time elapsed: " . $this->getElapsedTime(); + $sb.= " sec\n"; + + if ($this->out != NULL) + { + $this->out->write($sb); + $this->out->write($this->inner); + } + } + + function addError(PHPUnit2_Framework_Test $test, Exception $e) + { + parent::addError($test, $e); + + $this->formatError("ERROR", $test, $e); + } + + function addFailure(PHPUnit2_Framework_Test $test, PHPUnit2_Framework_AssertionFailedError $t) + { + parent::addFailure($test, $t); + + $this->formatError("FAILED", $test, $t); + } + + function addIncompleteTest(PHPUnit2_Framework_Test $test, Exception $e) + { + parent::addIncompleteTest($test, $e); + + $this->formatError("INCOMPLETE", $test, $e); + } + + private function formatError($type, PHPUnit2_Framework_Test $test, Exception $e) + { + if ($test != null) + { + $this->endTest($test); + } + + $this->inner.= $test->getName() . " " . $type . "\n"; + $this->inner.= $e->getMessage() . "\n"; + $this->inner.= PHPUnit2_Util_Filter::getFilteredStackTrace($e) . "\n"; + } + + function endTestRun() + { + parent::endTestRun(); + + if ($this->out != NULL) + { + $this->out->close(); + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/.svn/text-base/SummaryPHPUnit2ResultFormatter.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/.svn/text-base/SummaryPHPUnit2ResultFormatter.php.svn-base new file mode 100644 index 0000000..8119312 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/.svn/text-base/SummaryPHPUnit2ResultFormatter.php.svn-base @@ -0,0 +1,57 @@ +. + */ + +require_once 'PHPUnit2/Framework/Test.php'; + +require_once 'phing/tasks/ext/phpunit/phpunit2/PHPUnit2ResultFormatter.php'; + +/** + * Prints short summary output of the test to Phing's logging system. + * + * @author Michiel Rook + * @version $Id$ + * @package phing.tasks.ext.phpunit.phpunit2 + * @since 2.1.0 + */ +class SummaryPHPUnit2ResultFormatter extends PHPUnit2ResultFormatter +{ + function endTestSuite(PHPUnit2_Framework_TestSuite $suite) + { + parent::endTestSuite($suite); + + $sb = "Tests run: " . $this->getRunCount(); + $sb.= ", Failures: " . $this->getFailureCount(); + $sb.= ", Errors: " . $this->getErrorCount(); + $sb.= ", Time elapsed: " . $this->getElapsedTime(); + $sb.= " sec\n"; + + if ($this->out != NULL) + { + $this->out->write($sb); + $this->out->close(); + } + } + + function getExtension() + { + return NULL; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/.svn/text-base/XMLPHPUnit2ResultFormatter.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/.svn/text-base/XMLPHPUnit2ResultFormatter.php.svn-base new file mode 100644 index 0000000..f77fa2b --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/.svn/text-base/XMLPHPUnit2ResultFormatter.php.svn-base @@ -0,0 +1,116 @@ +. + */ + +require_once 'PHPUnit2/Framework/Test.php'; +require_once 'PHPUnit2/Runner/Version.php'; + +require_once 'PHPUnit2/Util/Log/XML.php'; + +require_once 'phing/tasks/ext/phpunit/phpunit2/PHPUnit2ResultFormatter.php'; + +/** + * Prints XML output of the test to a specified Writer + * + * @author Michiel Rook + * @version $Id$ + * @package phing.tasks.ext.phpunit.phpunit2 + * @since 2.1.0 + */ +class XMLPHPUnit2ResultFormatter extends PHPUnit2ResultFormatter +{ + private $logger = NULL; + + function __construct() + { + $this->logger = new PHPUnit2_Util_Log_XML(); + $this->logger->setWriteDocument(false); + } + + function getExtension() + { + return ".xml"; + } + + function getPreferredOutfile() + { + return "testsuites"; + } + + function startTestSuite(PHPUnit2_Framework_TestSuite $suite) + { + parent::startTestSuite($suite); + + $this->logger->startTestSuite($suite); + } + + function endTestSuite(PHPUnit2_Framework_TestSuite $suite) + { + parent::endTestSuite($suite); + + $this->logger->endTestSuite($suite); + } + + function startTest(PHPUnit2_Framework_Test $test) + { + parent::startTest($test); + + $this->logger->startTest($test); + } + + function endTest(PHPUnit2_Framework_Test $test) + { + parent::endTest($test); + + $this->logger->endTest($test); + } + + function addError(PHPUnit2_Framework_Test $test, Exception $e) + { + parent::addError($test, $e); + + $this->logger->addError($test, $e); + } + + function addFailure(PHPUnit2_Framework_Test $test, PHPUnit2_Framework_AssertionFailedError $t) + { + parent::addFailure($test, $t); + + $this->logger->addFailure($test, $t); + } + + function addIncompleteTest(PHPUnit2_Framework_Test $test, Exception $e) + { + parent::addIncompleteTest($test, $e); + + $this->logger->addIncompleteTest($test, $e); + } + + function endTestRun() + { + parent::endTestRun(); + + if ($this->out) + { + $this->out->write($this->logger->getXML()); + $this->out->close(); + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/PHPUnit2ResultFormatter.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/PHPUnit2ResultFormatter.php new file mode 100755 index 0000000..427a4dc --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/PHPUnit2ResultFormatter.php @@ -0,0 +1,157 @@ +. + */ + +require_once 'PHPUnit2/Framework/TestListener.php'; + +require_once 'phing/system/io/Writer.php'; + +/** + * This abstract class describes classes that format the results of a PHPUnit2 testrun. + * + * @author Michiel Rook + * @version $Id: PHPUnit2ResultFormatter.php 325 2007-12-20 15:44:58Z hans $ + * @package phing.tasks.ext.phpunit.phpunit2 + * @since 2.1.0 + */ +abstract class PHPUnit2ResultFormatter implements PHPUnit2_Framework_TestListener +{ + protected $out = NULL; + + protected $project = NULL; + + private $timer = NULL; + + private $runCount = 0; + + private $failureCount = 0; + + private $errorCount = 0; + + /** + * Sets the writer the formatter is supposed to write its results to. + */ + function setOutput(Writer $out) + { + $this->out = $out; + } + + /** + * Returns the extension used for this formatter + * + * @return string the extension + */ + function getExtension() + { + return ""; + } + + /** + * Sets the project + * + * @param Project the project + */ + function setProject(Project $project) + { + $this->project = $project; + } + + function getPreferredOutfile() + { + return ""; + } + + function startTestRun() + { + } + + function endTestRun() + { + } + + function startTestSuite(PHPUnit2_Framework_TestSuite $suite) + { + $this->runCount = 0; + $this->failureCount = 0; + $this->errorCount = 0; + + $this->timer = new Timer(); + $this->timer->start(); + } + + function endTestSuite(PHPUnit2_Framework_TestSuite $suite) + { + $this->timer->stop(); + } + + function startTest(PHPUnit2_Framework_Test $test) + { + $this->runCount++; + } + + function endTest(PHPUnit2_Framework_Test $test) + { + } + + function addError(PHPUnit2_Framework_Test $test, Exception $e) + { + $this->errorCount++; + } + + function addFailure(PHPUnit2_Framework_Test $test, PHPUnit2_Framework_AssertionFailedError $t) + { + $this->failureCount++; + } + + function addIncompleteTest(PHPUnit2_Framework_Test $test, Exception $e) + { + } + + function addSkippedTest(PHPUnit2_Framework_Test $test, Exception $e) + { + } + + function getRunCount() + { + return $this->runCount; + } + + function getFailureCount() + { + return $this->failureCount; + } + + function getErrorCount() + { + return $this->errorCount; + } + + function getElapsedTime() + { + if ($this->timer) + { + return $this->timer->getElapsedTime(); + } + else + { + return 0; + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/PlainPHPUnit2ResultFormatter.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/PlainPHPUnit2ResultFormatter.php new file mode 100755 index 0000000..fcf37f3 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/PlainPHPUnit2ResultFormatter.php @@ -0,0 +1,116 @@ +. + */ + +require_once 'PHPUnit2/Framework/Test.php'; +require_once 'PHPUnit2/Util/Filter.php'; + +require_once 'phing/tasks/ext/phpunit/phpunit2/PHPUnit2ResultFormatter.php'; + +/** + * Prints plain text output of the test to a specified Writer. + * + * @author Michiel Rook + * @version $Id: PlainPHPUnit2ResultFormatter.php 325 2007-12-20 15:44:58Z hans $ + * @package phing.tasks.ext.phpunit.phpunit2 + * @since 2.1.0 + */ +class PlainPHPUnit2ResultFormatter extends PHPUnit2ResultFormatter +{ + private $inner = ""; + + function getExtension() + { + return ".txt"; + } + + function getPreferredOutfile() + { + return "testresults"; + } + + function startTestSuite(PHPUnit2_Framework_TestSuite $suite) + { + parent::startTestSuite($suite); + + $this->inner = ""; + } + + function endTestSuite(PHPUnit2_Framework_TestSuite $suite) + { + parent::endTestSuite($suite); + + $sb = "Testsuite: " . $suite->getName() . "\n"; + $sb.= "Tests run: " . $this->getRunCount(); + $sb.= ", Failures: " . $this->getFailureCount(); + $sb.= ", Errors: " . $this->getErrorCount(); + $sb.= ", Time elapsed: " . $this->getElapsedTime(); + $sb.= " sec\n"; + + if ($this->out != NULL) + { + $this->out->write($sb); + $this->out->write($this->inner); + } + } + + function addError(PHPUnit2_Framework_Test $test, Exception $e) + { + parent::addError($test, $e); + + $this->formatError("ERROR", $test, $e); + } + + function addFailure(PHPUnit2_Framework_Test $test, PHPUnit2_Framework_AssertionFailedError $t) + { + parent::addFailure($test, $t); + + $this->formatError("FAILED", $test, $t); + } + + function addIncompleteTest(PHPUnit2_Framework_Test $test, Exception $e) + { + parent::addIncompleteTest($test, $e); + + $this->formatError("INCOMPLETE", $test, $e); + } + + private function formatError($type, PHPUnit2_Framework_Test $test, Exception $e) + { + if ($test != null) + { + $this->endTest($test); + } + + $this->inner.= $test->getName() . " " . $type . "\n"; + $this->inner.= $e->getMessage() . "\n"; + $this->inner.= PHPUnit2_Util_Filter::getFilteredStackTrace($e) . "\n"; + } + + function endTestRun() + { + parent::endTestRun(); + + if ($this->out != NULL) + { + $this->out->close(); + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/SummaryPHPUnit2ResultFormatter.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/SummaryPHPUnit2ResultFormatter.php new file mode 100755 index 0000000..6f4a044 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/SummaryPHPUnit2ResultFormatter.php @@ -0,0 +1,57 @@ +. + */ + +require_once 'PHPUnit2/Framework/Test.php'; + +require_once 'phing/tasks/ext/phpunit/phpunit2/PHPUnit2ResultFormatter.php'; + +/** + * Prints short summary output of the test to Phing's logging system. + * + * @author Michiel Rook + * @version $Id: SummaryPHPUnit2ResultFormatter.php 325 2007-12-20 15:44:58Z hans $ + * @package phing.tasks.ext.phpunit.phpunit2 + * @since 2.1.0 + */ +class SummaryPHPUnit2ResultFormatter extends PHPUnit2ResultFormatter +{ + function endTestSuite(PHPUnit2_Framework_TestSuite $suite) + { + parent::endTestSuite($suite); + + $sb = "Tests run: " . $this->getRunCount(); + $sb.= ", Failures: " . $this->getFailureCount(); + $sb.= ", Errors: " . $this->getErrorCount(); + $sb.= ", Time elapsed: " . $this->getElapsedTime(); + $sb.= " sec\n"; + + if ($this->out != NULL) + { + $this->out->write($sb); + $this->out->close(); + } + } + + function getExtension() + { + return NULL; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/XMLPHPUnit2ResultFormatter.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/XMLPHPUnit2ResultFormatter.php new file mode 100755 index 0000000..add7fa9 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit2/XMLPHPUnit2ResultFormatter.php @@ -0,0 +1,116 @@ +. + */ + +require_once 'PHPUnit2/Framework/Test.php'; +require_once 'PHPUnit2/Runner/Version.php'; + +require_once 'PHPUnit2/Util/Log/XML.php'; + +require_once 'phing/tasks/ext/phpunit/phpunit2/PHPUnit2ResultFormatter.php'; + +/** + * Prints XML output of the test to a specified Writer + * + * @author Michiel Rook + * @version $Id: XMLPHPUnit2ResultFormatter.php 325 2007-12-20 15:44:58Z hans $ + * @package phing.tasks.ext.phpunit.phpunit2 + * @since 2.1.0 + */ +class XMLPHPUnit2ResultFormatter extends PHPUnit2ResultFormatter +{ + private $logger = NULL; + + function __construct() + { + $this->logger = new PHPUnit2_Util_Log_XML(); + $this->logger->setWriteDocument(false); + } + + function getExtension() + { + return ".xml"; + } + + function getPreferredOutfile() + { + return "testsuites"; + } + + function startTestSuite(PHPUnit2_Framework_TestSuite $suite) + { + parent::startTestSuite($suite); + + $this->logger->startTestSuite($suite); + } + + function endTestSuite(PHPUnit2_Framework_TestSuite $suite) + { + parent::endTestSuite($suite); + + $this->logger->endTestSuite($suite); + } + + function startTest(PHPUnit2_Framework_Test $test) + { + parent::startTest($test); + + $this->logger->startTest($test); + } + + function endTest(PHPUnit2_Framework_Test $test) + { + parent::endTest($test); + + $this->logger->endTest($test); + } + + function addError(PHPUnit2_Framework_Test $test, Exception $e) + { + parent::addError($test, $e); + + $this->logger->addError($test, $e); + } + + function addFailure(PHPUnit2_Framework_Test $test, PHPUnit2_Framework_AssertionFailedError $t) + { + parent::addFailure($test, $t); + + $this->logger->addFailure($test, $t); + } + + function addIncompleteTest(PHPUnit2_Framework_Test $test, Exception $e) + { + parent::addIncompleteTest($test, $e); + + $this->logger->addIncompleteTest($test, $e); + } + + function endTestRun() + { + parent::endTestRun(); + + if ($this->out) + { + $this->out->write($this->logger->getXML()); + $this->out->close(); + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit3/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit3/.svn/all-wcprops new file mode 100644 index 0000000..4804c4e --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit3/.svn/all-wcprops @@ -0,0 +1,29 @@ +K 25 +svn:wc:ra_dav:version-url +V 65 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/phpunit/phpunit3 +END +SummaryPHPUnit3ResultFormatter.php +K 25 +svn:wc:ra_dav:version-url +V 100 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/phpunit/phpunit3/SummaryPHPUnit3ResultFormatter.php +END +PHPUnit3ResultFormatter.php +K 25 +svn:wc:ra_dav:version-url +V 93 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/phpunit/phpunit3/PHPUnit3ResultFormatter.php +END +XMLPHPUnit3ResultFormatter.php +K 25 +svn:wc:ra_dav:version-url +V 96 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/phpunit/phpunit3/XMLPHPUnit3ResultFormatter.php +END +PlainPHPUnit3ResultFormatter.php +K 25 +svn:wc:ra_dav:version-url +V 98 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/phpunit/phpunit3/PlainPHPUnit3ResultFormatter.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit3/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit3/.svn/entries new file mode 100644 index 0000000..d3afd16 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit3/.svn/entries @@ -0,0 +1,164 @@ +10 + +dir +1404 +http://phing.mirror.svn.symfony-project.com/tags/2.3.3/classes/phing/tasks/ext/phpunit/phpunit3 +http://phing.mirror.svn.symfony-project.com + + + +2008-06-27T15:51:26.460248Z +376 +mrook + + + + + + + + + + + + + + +c8b19502-6211-4773-8637-5aef67d587fc + +SummaryPHPUnit3ResultFormatter.php +file + + + + +2012-05-10T18:42:01.482228Z +1cdc8237d4b0df4f8b4ba2530ec2c922 +2007-12-20T15:44:58.929962Z +325 +hans + + + + + + + + + + + + + + + + + + + + + +2076 + +PHPUnit3ResultFormatter.php +file + + + + +2012-05-10T18:42:01.482228Z +e9dcd34b5c20b4359f8c1e3221dd40d9 +2007-12-20T15:44:58.929962Z +325 +hans + + + + + + + + + + + + + + + + + + + + + +4907 + +XMLPHPUnit3ResultFormatter.php +file + + + + +2012-05-10T18:42:01.482228Z +9f35f399eaa8597e452211d8e04b6ce7 +2008-06-27T15:51:26.460248Z +376 +mrook + + + + + + + + + + + + + + + + + + + + + +3028 + +PlainPHPUnit3ResultFormatter.php +file + + + + +2012-05-10T18:42:01.482228Z +3d3cce7fe504c1c5fd445d0cea41a89d +2007-12-20T15:44:58.929962Z +325 +hans + + + + + + + + + + + + + + + + + + + + + +3493 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit3/.svn/text-base/PHPUnit3ResultFormatter.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit3/.svn/text-base/PHPUnit3ResultFormatter.php.svn-base new file mode 100644 index 0000000..6c77f27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit3/.svn/text-base/PHPUnit3ResultFormatter.php.svn-base @@ -0,0 +1,200 @@ +. + */ + +require_once 'PHPUnit/Framework/TestListener.php'; + +require_once 'phing/system/io/Writer.php'; + +/** + * This abstract class describes classes that format the results of a PHPUnit2 testrun. + * + * @author Michiel Rook + * @version $Id: PHPUnit2ResultFormatter.php 142 2007-02-04 14:06:00Z mrook $ + * @package phing.tasks.ext.phpunit + * @since 2.1.0 + */ +abstract class PHPUnit3ResultFormatter implements PHPUnit_Framework_TestListener +{ + protected $out = NULL; + + protected $project = NULL; + + private $timers = false; + + private $runCounts = false; + + private $failureCounts = false; + + private $errorCounts = false; + + private $incompleteCounts = false; + + private $skipCounts = false; + + /** + * Sets the writer the formatter is supposed to write its results to. + */ + function setOutput(Writer $out) + { + $this->out = $out; + } + + /** + * Returns the extension used for this formatter + * + * @return string the extension + */ + function getExtension() + { + return ""; + } + + /** + * Sets the project + * + * @param Project the project + */ + function setProject(Project $project) + { + $this->project = $project; + } + + function getPreferredOutfile() + { + return ""; + } + + function startTestRun() + { + $this->timers = array($this->getMicrotime()); + $this->runCounts = array(0); + $this->failureCounts = array(0); + $this->errorCounts = array(0); + $this->incompleteCounts = array(0); + $this->skipCounts = array(0); + } + + function endTestRun() + { + } + + function startTestSuite(PHPUnit_Framework_TestSuite $suite) + { + $this->timers[] = $this->getMicrotime(); + $this->runCounts[] = 0; + $this->failureCounts[] = 0; + $this->errorCounts[] = 0; + $this->incompleteCounts[] = 0; + $this->skipCounts[] = 0; + } + + function endTestSuite(PHPUnit_Framework_TestSuite $suite) + { + $lastRunCount = array_pop($this->runCounts); + $this->runCounts[count($this->runCounts) - 1] += $lastRunCount; + + $lastFailureCount = array_pop($this->failureCounts); + $this->failureCounts[count($this->failureCounts) - 1] += $lastFailureCount; + + $lastErrorCount = array_pop($this->errorCounts); + $this->errorCounts[count($this->errorCounts) - 1] += $lastErrorCount; + + $lastIncompleteCount = array_pop($this->incompleteCounts); + $this->incompleteCounts[count($this->incompleteCounts) - 1] += $lastIncompleteCount; + + $lastSkipCount = array_pop($this->skipCounts); + $this->skipCounts[count($this->skipCounts) - 1] += $lastSkipCount; + + array_pop($this->timers); + } + + function startTest(PHPUnit_Framework_Test $test) + { + $this->runCounts[count($this->runCounts) - 1]++; + } + + function endTest(PHPUnit_Framework_Test $test, $time) + { + } + + function addError(PHPUnit_Framework_Test $test, Exception $e, $time) + { + $this->errorCounts[count($this->errorCounts) - 1]++; + } + + function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time) + { + $this->failureCounts[count($this->failureCounts) - 1]++; + } + + function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $time) + { + $this->incompleteCounts[count($this->incompleteCounts) - 1]++; + } + + function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time) + { + $this->skipCounts[count($this->skipCounts) - 1]++; + } + + function getRunCount() + { + return end($this->runCounts); + } + + function getFailureCount() + { + return end($this->failureCounts); + } + + function getErrorCount() + { + return end($this->errorCounts); + } + + function getIncompleteCount() + { + return end($this->incompleteCounts); + } + + function getSkippedCount() + { + return end($this->skipCounts); + } + + function getElapsedTime() + { + if (end($this->timers)) + { + return $this->getMicrotime() - end($this->timers); + } + else + { + return 0; + } + } + + private function getMicrotime() { + list($usec, $sec) = explode(' ', microtime()); + return (float)$usec + (float)$sec; + } +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit3/.svn/text-base/PlainPHPUnit3ResultFormatter.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit3/.svn/text-base/PlainPHPUnit3ResultFormatter.php.svn-base new file mode 100644 index 0000000..f2997aa --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit3/.svn/text-base/PlainPHPUnit3ResultFormatter.php.svn-base @@ -0,0 +1,123 @@ +. + */ + +require_once 'phing/tasks/ext/phpunit/phpunit3/PHPUnit3ResultFormatter.php'; + +/** + * Prints plain text output of the test to a specified Writer. + * + * @author Michiel Rook + * @version $Id: PlainPHPUnit2ResultFormatter.php 142 2007-02-04 14:06:00Z mrook $ + * @package phing.tasks.ext.phpunit.phpunit3 + * @since 2.1.0 + */ +class PlainPHPUnit3ResultFormatter extends PHPUnit3ResultFormatter +{ + private $inner = ""; + + function getExtension() + { + return ".txt"; + } + + function getPreferredOutfile() + { + return "testresults"; + } + + function startTestSuite(PHPUnit_Framework_TestSuite $suite) + { + parent::startTestSuite($suite); + + $this->inner = ""; + } + + function endTestSuite(PHPUnit_Framework_TestSuite $suite) + { + $sb = "Testsuite: " . $suite->getName() . "\n"; + $sb.= "Tests run: " . $this->getRunCount(); + $sb.= ", Failures: " . $this->getFailureCount(); + $sb.= ", Errors: " . $this->getErrorCount(); + $sb.= ", Incomplete: " . $this->getIncompleteCount(); + $sb.= ", Skipped: " . $this->getSkippedCount(); + $sb.= ", Time elapsed: " . sprintf('%0.5f', $this->getElapsedTime()) . " s\n"; + + parent::endTestSuite($suite); + + if ($this->out != NULL) + { + $this->out->write($sb); + $this->out->write($this->inner); + } + } + + function addError(PHPUnit_Framework_Test $test, Exception $e, $time) + { + parent::addError($test, $e, $time); + + $this->formatError("ERROR", $test, $e); + } + + function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time) + { + parent::addFailure($test, $e, $time); + $this->formatError("FAILED", $test, $e); + } + + function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $time) + { + parent::addIncompleteTest($test, $e, $time); + + $this->formatError("INCOMPLETE", $test); + } + + function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time) + { + parent::addSkippedTest($test, $e, $time); + $this->formatError("SKIPPED", $test); + } + + private function formatError($type, PHPUnit_Framework_Test $test, Exception $e = null) + { + if ($test != null) + { + $this->endTest($test, time()); + } + + $this->inner.= $test->getName() . " " . $type . "\n"; + + if ($e !== null) { + $this->inner.= $e->getMessage() . "\n"; + $this->inner.= PHPUnit_Util_Filter::getFilteredStackTrace($e, false) . "\n"; + } + } + + function endTestRun() + { + parent::endTestRun(); + + if ($this->out != NULL) + { + $this->out->close(); + } + } +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit3/.svn/text-base/SummaryPHPUnit3ResultFormatter.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit3/.svn/text-base/SummaryPHPUnit3ResultFormatter.php.svn-base new file mode 100644 index 0000000..0aca54d --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit3/.svn/text-base/SummaryPHPUnit3ResultFormatter.php.svn-base @@ -0,0 +1,58 @@ +. + */ + +require_once 'phing/tasks/ext/phpunit/phpunit3/PHPUnit3ResultFormatter.php'; + +/** + * Prints short summary output of the test to Phing's logging system. + * + * @author Michiel Rook + * @version $Id: SummaryPHPUnit2ResultFormatter.php 142 2007-02-04 14:06:00Z mrook $ + * @package phing.tasks.ext.phpunit + * @since 2.1.0 + */ +class SummaryPHPUnit3ResultFormatter extends PHPUnit3ResultFormatter +{ + function endTestSuite(PHPUnit_Framework_TestSuite $suite) + { + $sb = "Test: " . $suite->getName(); + $sb.= ", Run: " . $this->getRunCount(); + $sb.= ", Failures: " . $this->getFailureCount(); + $sb.= ", Errors: " . $this->getErrorCount(); + $sb.= ", Incomplete: " . $this->getIncompleteCount(); + $sb.= ", Skipped: " . $this->getSkippedCount(); + $sb.= ", Time elapsed: " . sprintf('%0.5f', $this->getElapsedTime()) . " s\n"; + + parent::endTestSuite($suite); + + if ($this->out != NULL) + { + $this->out->write($sb); + $this->out->close(); + } + } + + function getExtension() + { + return NULL; + } +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit3/.svn/text-base/XMLPHPUnit3ResultFormatter.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit3/.svn/text-base/XMLPHPUnit3ResultFormatter.php.svn-base new file mode 100644 index 0000000..3e04dab --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit3/.svn/text-base/XMLPHPUnit3ResultFormatter.php.svn-base @@ -0,0 +1,116 @@ +. + */ + +require_once 'PHPUnit/Util/Log/XML.php'; + +require_once 'phing/tasks/ext/phpunit/phpunit3/PHPUnit3ResultFormatter.php'; + +/** + * Prints XML output of the test to a specified Writer + * + * @author Michiel Rook + * @version $Id: XMLPHPUnit2ResultFormatter.php 142 2007-02-04 14:06:00Z mrook $ + * @package phing.tasks.ext.phpunit + * @since 2.1.0 + */ +class XMLPHPUnit3ResultFormatter extends PHPUnit3ResultFormatter +{ + /** + * @var PHPUnit_Util_Log_XML + */ + private $logger = NULL; + + function __construct() + { + $this->logger = new PHPUnit_Util_Log_XML(null, true); + $this->logger->setWriteDocument(false); + } + + function getExtension() + { + return ".xml"; + } + + function getPreferredOutfile() + { + return "testsuites"; + } + + function startTestSuite(PHPUnit_Framework_TestSuite $suite) + { + parent::startTestSuite($suite); + + $this->logger->startTestSuite($suite); + } + + function endTestSuite(PHPUnit_Framework_TestSuite $suite) + { + parent::endTestSuite($suite); + + $this->logger->endTestSuite($suite); + } + + function startTest(PHPUnit_Framework_Test $test) + { + parent::startTest($test); + + $this->logger->startTest($test); + } + + function endTest(PHPUnit_Framework_Test $test, $time) + { + parent::endTest($test, $time); + + $this->logger->endTest($test, $time); + } + + function addError(PHPUnit_Framework_Test $test, Exception $e, $time) + { + parent::addError($test, $e, $time); + + $this->logger->addError($test, $e, $time); + } + + function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time) + { + parent::addFailure($test, $e, $time); + + $this->logger->addFailure($test, $e, $time); + } + + function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $time) + { + parent::addIncompleteTest($test, $e, $time); + + $this->logger->addIncompleteTest($test, $e, $time); + } + + function endTestRun() + { + parent::endTestRun(); + + if ($this->out) + { + $this->out->write($this->logger->getXML()); + $this->out->close(); + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit3/PHPUnit3ResultFormatter.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit3/PHPUnit3ResultFormatter.php new file mode 100644 index 0000000..6c77f27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit3/PHPUnit3ResultFormatter.php @@ -0,0 +1,200 @@ +. + */ + +require_once 'PHPUnit/Framework/TestListener.php'; + +require_once 'phing/system/io/Writer.php'; + +/** + * This abstract class describes classes that format the results of a PHPUnit2 testrun. + * + * @author Michiel Rook + * @version $Id: PHPUnit2ResultFormatter.php 142 2007-02-04 14:06:00Z mrook $ + * @package phing.tasks.ext.phpunit + * @since 2.1.0 + */ +abstract class PHPUnit3ResultFormatter implements PHPUnit_Framework_TestListener +{ + protected $out = NULL; + + protected $project = NULL; + + private $timers = false; + + private $runCounts = false; + + private $failureCounts = false; + + private $errorCounts = false; + + private $incompleteCounts = false; + + private $skipCounts = false; + + /** + * Sets the writer the formatter is supposed to write its results to. + */ + function setOutput(Writer $out) + { + $this->out = $out; + } + + /** + * Returns the extension used for this formatter + * + * @return string the extension + */ + function getExtension() + { + return ""; + } + + /** + * Sets the project + * + * @param Project the project + */ + function setProject(Project $project) + { + $this->project = $project; + } + + function getPreferredOutfile() + { + return ""; + } + + function startTestRun() + { + $this->timers = array($this->getMicrotime()); + $this->runCounts = array(0); + $this->failureCounts = array(0); + $this->errorCounts = array(0); + $this->incompleteCounts = array(0); + $this->skipCounts = array(0); + } + + function endTestRun() + { + } + + function startTestSuite(PHPUnit_Framework_TestSuite $suite) + { + $this->timers[] = $this->getMicrotime(); + $this->runCounts[] = 0; + $this->failureCounts[] = 0; + $this->errorCounts[] = 0; + $this->incompleteCounts[] = 0; + $this->skipCounts[] = 0; + } + + function endTestSuite(PHPUnit_Framework_TestSuite $suite) + { + $lastRunCount = array_pop($this->runCounts); + $this->runCounts[count($this->runCounts) - 1] += $lastRunCount; + + $lastFailureCount = array_pop($this->failureCounts); + $this->failureCounts[count($this->failureCounts) - 1] += $lastFailureCount; + + $lastErrorCount = array_pop($this->errorCounts); + $this->errorCounts[count($this->errorCounts) - 1] += $lastErrorCount; + + $lastIncompleteCount = array_pop($this->incompleteCounts); + $this->incompleteCounts[count($this->incompleteCounts) - 1] += $lastIncompleteCount; + + $lastSkipCount = array_pop($this->skipCounts); + $this->skipCounts[count($this->skipCounts) - 1] += $lastSkipCount; + + array_pop($this->timers); + } + + function startTest(PHPUnit_Framework_Test $test) + { + $this->runCounts[count($this->runCounts) - 1]++; + } + + function endTest(PHPUnit_Framework_Test $test, $time) + { + } + + function addError(PHPUnit_Framework_Test $test, Exception $e, $time) + { + $this->errorCounts[count($this->errorCounts) - 1]++; + } + + function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time) + { + $this->failureCounts[count($this->failureCounts) - 1]++; + } + + function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $time) + { + $this->incompleteCounts[count($this->incompleteCounts) - 1]++; + } + + function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time) + { + $this->skipCounts[count($this->skipCounts) - 1]++; + } + + function getRunCount() + { + return end($this->runCounts); + } + + function getFailureCount() + { + return end($this->failureCounts); + } + + function getErrorCount() + { + return end($this->errorCounts); + } + + function getIncompleteCount() + { + return end($this->incompleteCounts); + } + + function getSkippedCount() + { + return end($this->skipCounts); + } + + function getElapsedTime() + { + if (end($this->timers)) + { + return $this->getMicrotime() - end($this->timers); + } + else + { + return 0; + } + } + + private function getMicrotime() { + list($usec, $sec) = explode(' ', microtime()); + return (float)$usec + (float)$sec; + } +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit3/PlainPHPUnit3ResultFormatter.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit3/PlainPHPUnit3ResultFormatter.php new file mode 100644 index 0000000..f2997aa --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit3/PlainPHPUnit3ResultFormatter.php @@ -0,0 +1,123 @@ +. + */ + +require_once 'phing/tasks/ext/phpunit/phpunit3/PHPUnit3ResultFormatter.php'; + +/** + * Prints plain text output of the test to a specified Writer. + * + * @author Michiel Rook + * @version $Id: PlainPHPUnit2ResultFormatter.php 142 2007-02-04 14:06:00Z mrook $ + * @package phing.tasks.ext.phpunit.phpunit3 + * @since 2.1.0 + */ +class PlainPHPUnit3ResultFormatter extends PHPUnit3ResultFormatter +{ + private $inner = ""; + + function getExtension() + { + return ".txt"; + } + + function getPreferredOutfile() + { + return "testresults"; + } + + function startTestSuite(PHPUnit_Framework_TestSuite $suite) + { + parent::startTestSuite($suite); + + $this->inner = ""; + } + + function endTestSuite(PHPUnit_Framework_TestSuite $suite) + { + $sb = "Testsuite: " . $suite->getName() . "\n"; + $sb.= "Tests run: " . $this->getRunCount(); + $sb.= ", Failures: " . $this->getFailureCount(); + $sb.= ", Errors: " . $this->getErrorCount(); + $sb.= ", Incomplete: " . $this->getIncompleteCount(); + $sb.= ", Skipped: " . $this->getSkippedCount(); + $sb.= ", Time elapsed: " . sprintf('%0.5f', $this->getElapsedTime()) . " s\n"; + + parent::endTestSuite($suite); + + if ($this->out != NULL) + { + $this->out->write($sb); + $this->out->write($this->inner); + } + } + + function addError(PHPUnit_Framework_Test $test, Exception $e, $time) + { + parent::addError($test, $e, $time); + + $this->formatError("ERROR", $test, $e); + } + + function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time) + { + parent::addFailure($test, $e, $time); + $this->formatError("FAILED", $test, $e); + } + + function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $time) + { + parent::addIncompleteTest($test, $e, $time); + + $this->formatError("INCOMPLETE", $test); + } + + function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time) + { + parent::addSkippedTest($test, $e, $time); + $this->formatError("SKIPPED", $test); + } + + private function formatError($type, PHPUnit_Framework_Test $test, Exception $e = null) + { + if ($test != null) + { + $this->endTest($test, time()); + } + + $this->inner.= $test->getName() . " " . $type . "\n"; + + if ($e !== null) { + $this->inner.= $e->getMessage() . "\n"; + $this->inner.= PHPUnit_Util_Filter::getFilteredStackTrace($e, false) . "\n"; + } + } + + function endTestRun() + { + parent::endTestRun(); + + if ($this->out != NULL) + { + $this->out->close(); + } + } +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit3/SummaryPHPUnit3ResultFormatter.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit3/SummaryPHPUnit3ResultFormatter.php new file mode 100644 index 0000000..0aca54d --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit3/SummaryPHPUnit3ResultFormatter.php @@ -0,0 +1,58 @@ +. + */ + +require_once 'phing/tasks/ext/phpunit/phpunit3/PHPUnit3ResultFormatter.php'; + +/** + * Prints short summary output of the test to Phing's logging system. + * + * @author Michiel Rook + * @version $Id: SummaryPHPUnit2ResultFormatter.php 142 2007-02-04 14:06:00Z mrook $ + * @package phing.tasks.ext.phpunit + * @since 2.1.0 + */ +class SummaryPHPUnit3ResultFormatter extends PHPUnit3ResultFormatter +{ + function endTestSuite(PHPUnit_Framework_TestSuite $suite) + { + $sb = "Test: " . $suite->getName(); + $sb.= ", Run: " . $this->getRunCount(); + $sb.= ", Failures: " . $this->getFailureCount(); + $sb.= ", Errors: " . $this->getErrorCount(); + $sb.= ", Incomplete: " . $this->getIncompleteCount(); + $sb.= ", Skipped: " . $this->getSkippedCount(); + $sb.= ", Time elapsed: " . sprintf('%0.5f', $this->getElapsedTime()) . " s\n"; + + parent::endTestSuite($suite); + + if ($this->out != NULL) + { + $this->out->write($sb); + $this->out->close(); + } + } + + function getExtension() + { + return NULL; + } +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit3/XMLPHPUnit3ResultFormatter.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit3/XMLPHPUnit3ResultFormatter.php new file mode 100644 index 0000000..3e04dab --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/phpunit/phpunit3/XMLPHPUnit3ResultFormatter.php @@ -0,0 +1,116 @@ +. + */ + +require_once 'PHPUnit/Util/Log/XML.php'; + +require_once 'phing/tasks/ext/phpunit/phpunit3/PHPUnit3ResultFormatter.php'; + +/** + * Prints XML output of the test to a specified Writer + * + * @author Michiel Rook + * @version $Id: XMLPHPUnit2ResultFormatter.php 142 2007-02-04 14:06:00Z mrook $ + * @package phing.tasks.ext.phpunit + * @since 2.1.0 + */ +class XMLPHPUnit3ResultFormatter extends PHPUnit3ResultFormatter +{ + /** + * @var PHPUnit_Util_Log_XML + */ + private $logger = NULL; + + function __construct() + { + $this->logger = new PHPUnit_Util_Log_XML(null, true); + $this->logger->setWriteDocument(false); + } + + function getExtension() + { + return ".xml"; + } + + function getPreferredOutfile() + { + return "testsuites"; + } + + function startTestSuite(PHPUnit_Framework_TestSuite $suite) + { + parent::startTestSuite($suite); + + $this->logger->startTestSuite($suite); + } + + function endTestSuite(PHPUnit_Framework_TestSuite $suite) + { + parent::endTestSuite($suite); + + $this->logger->endTestSuite($suite); + } + + function startTest(PHPUnit_Framework_Test $test) + { + parent::startTest($test); + + $this->logger->startTest($test); + } + + function endTest(PHPUnit_Framework_Test $test, $time) + { + parent::endTest($test, $time); + + $this->logger->endTest($test, $time); + } + + function addError(PHPUnit_Framework_Test $test, Exception $e, $time) + { + parent::addError($test, $e, $time); + + $this->logger->addError($test, $e, $time); + } + + function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time) + { + parent::addFailure($test, $e, $time); + + $this->logger->addFailure($test, $e, $time); + } + + function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $time) + { + parent::addIncompleteTest($test, $e, $time); + + $this->logger->addIncompleteTest($test, $e, $time); + } + + function endTestRun() + { + parent::endTestRun(); + + if ($this->out) + { + $this->out->write($this->logger->getXML()); + $this->out->close(); + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/all-wcprops new file mode 100644 index 0000000..83f4a91 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/all-wcprops @@ -0,0 +1,41 @@ +K 25 +svn:wc:ra_dav:version-url +V 59 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/simpletest +END +SimpleTestSummaryResultFormatter.php +K 25 +svn:wc:ra_dav:version-url +V 96 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/simpletest/SimpleTestSummaryResultFormatter.php +END +SimpleTestResultFormatter.php +K 25 +svn:wc:ra_dav:version-url +V 89 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/simpletest/SimpleTestResultFormatter.php +END +SimpleTestTask.php +K 25 +svn:wc:ra_dav:version-url +V 78 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/simpletest/SimpleTestTask.php +END +SimpleTestPlainResultFormatter.php +K 25 +svn:wc:ra_dav:version-url +V 94 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/simpletest/SimpleTestPlainResultFormatter.php +END +SimpleTestCountResultFormatter.php +K 25 +svn:wc:ra_dav:version-url +V 94 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/simpletest/SimpleTestCountResultFormatter.php +END +SimpleTestFormatterElement.php +K 25 +svn:wc:ra_dav:version-url +V 90 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/simpletest/SimpleTestFormatterElement.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/entries new file mode 100644 index 0000000..66eaa51 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/entries @@ -0,0 +1,232 @@ +10 + +dir +1404 +http://phing.mirror.svn.symfony-project.com/tags/2.3.3/classes/phing/tasks/ext/simpletest +http://phing.mirror.svn.symfony-project.com + + + +2008-02-26T08:51:59.361867Z +357 +mrook + + + + + + + + + + + + + + +c8b19502-6211-4773-8637-5aef67d587fc + +SimpleTestSummaryResultFormatter.php +file + + + + +2012-05-10T18:42:02.185552Z +8428466aad6a181a60b82572cb829e36 +2007-12-20T15:44:58.929962Z +325 +hans +has-props + + + + + + + + + + + + + + + + + + + + +1939 + +SimpleTestResultFormatter.php +file + + + + +2012-05-10T18:42:02.189551Z +36fa999f35ff408745778f34d2b1e617 +2007-12-20T15:44:58.929962Z +325 +hans +has-props + + + + + + + + + + + + + + + + + + + + +3286 + +SimpleTestTask.php +file + + + + +2012-05-10T18:42:02.193549Z +e6fcf54cb00d2bfba84762a749ae37c2 +2007-12-20T15:44:58.929962Z +325 +hans +has-props + + + + + + + + + + + + + + + + + + + + +5648 + +SimpleTestPlainResultFormatter.php +file + + + + +2012-05-10T18:42:02.193549Z +189ed5eb3fd25dce3c2a0a3812be1866 +2007-12-20T15:44:58.929962Z +325 +hans +has-props + + + + + + + + + + + + + + + + + + + + +2619 + +SimpleTestCountResultFormatter.php +file + + + + +2012-05-10T18:42:02.371291Z +231f2681a96e0e5048470789dc4b9433 +2007-12-20T15:44:58.929962Z +325 +hans +has-props + + + + + + + + + + + + + + + + + + + + +1723 + +SimpleTestFormatterElement.php +file + + + + +2012-05-10T18:42:02.371291Z +0b61138f2b8f238badff006e1f3e6c26 +2008-02-26T08:51:59.361867Z +357 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +2159 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/prop-base/SimpleTestCountResultFormatter.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/prop-base/SimpleTestCountResultFormatter.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/prop-base/SimpleTestCountResultFormatter.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/prop-base/SimpleTestFormatterElement.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/prop-base/SimpleTestFormatterElement.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/prop-base/SimpleTestFormatterElement.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/prop-base/SimpleTestPlainResultFormatter.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/prop-base/SimpleTestPlainResultFormatter.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/prop-base/SimpleTestPlainResultFormatter.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/prop-base/SimpleTestResultFormatter.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/prop-base/SimpleTestResultFormatter.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/prop-base/SimpleTestResultFormatter.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/prop-base/SimpleTestSummaryResultFormatter.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/prop-base/SimpleTestSummaryResultFormatter.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/prop-base/SimpleTestSummaryResultFormatter.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/prop-base/SimpleTestTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/prop-base/SimpleTestTask.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/prop-base/SimpleTestTask.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/text-base/SimpleTestCountResultFormatter.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/text-base/SimpleTestCountResultFormatter.php.svn-base new file mode 100644 index 0000000..0fda6cc --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/text-base/SimpleTestCountResultFormatter.php.svn-base @@ -0,0 +1,51 @@ +. + */ + +require_once 'phing/tasks/ext/simpletest/SimpleTestResultFormatter.php'; + +/** + * Dummy result formatter used to count SimpleTest results + * + * @author Michiel Rook + * @version $Id$ + * @package phing.tasks.ext.simpletest + * @since 2.2.0 + */ +class SimpleTestCountResultFormatter extends SimpleTestResultFormatter +{ + const SUCCESS = 0; + const FAILURES = 1; + const ERRORS = 2; + + function getRetCode() + { + if ($this->getExceptionCount() != 0) + { + return self::ERRORS; + } + else if ($this->getFailCount() != 0) + { + return self::FAILURES; + } + + return self::SUCCESS; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/text-base/SimpleTestFormatterElement.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/text-base/SimpleTestFormatterElement.php.svn-base new file mode 100644 index 0000000..ef3e341 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/text-base/SimpleTestFormatterElement.php.svn-base @@ -0,0 +1,61 @@ +. + */ + +require_once 'phing/tasks/ext/simpletest/SimpleTestPlainResultFormatter.php'; +require_once 'phing/tasks/ext/simpletest/SimpleTestSummaryResultFormatter.php'; +require_once 'phing/tasks/ext/phpunit/FormatterElement.php'; + +/** + * Child class of "FormatterElement", overrides setType to provide other + * formatter classes for SimpleTest + * + * @author Michiel Rook + * @version $Id$ + * @package phing.tasks.ext.simpletest + * @since 2.2.0 + */ +class SimpleTestFormatterElement extends FormatterElement +{ + function setType($type) + { + $this->type = $type; + + if ($this->type == "xml") + { + $destFile = new PhingFile($this->toDir, 'testsuites.xml'); + //$this->formatter = new SimpleTestXmlResultFormatter(); + } + else + if ($this->type == "plain") + { + $this->formatter = new SimpleTestPlainResultFormatter(); + } + else + if ($this->type == "summary") + { + $this->formatter = new SimpleTestSummaryResultFormatter(); + } + else + { + throw new BuildException("Formatter '" . $this->type . "' not implemented"); + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/text-base/SimpleTestPlainResultFormatter.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/text-base/SimpleTestPlainResultFormatter.php.svn-base new file mode 100644 index 0000000..a483f1e --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/text-base/SimpleTestPlainResultFormatter.php.svn-base @@ -0,0 +1,94 @@ +. + */ + +require_once 'phing/tasks/ext/simpletest/SimpleTestResultFormatter.php'; + +/** + * Prints plain text output of the test to a specified Writer. + * + * @author Michiel Rook + * @version $Id$ + * @package phing.tasks.ext.simpletest + * @since 2.2.0 + */ +class SimpleTestPlainResultFormatter extends SimpleTestResultFormatter +{ + private $inner = ""; + + function getExtension() + { + return ".txt"; + } + + function getPreferredOutfile() + { + return "testresults"; + } + + function paintCaseStart($test_name) + { + parent::paintCaseStart($test_name); + + $this->inner = ""; + } + + function paintCaseEnd($test_name) + { + parent::paintCaseEnd($test_name); + + /* Only count suites where more than one test was run */ + if ($this->getRunCount()) + { + $sb.= "Testsuite: $test_name\n"; + $sb.= "Tests run: " . $this->getRunCount(); + $sb.= ", Failures: " . $this->getFailureCount(); + $sb.= ", Errors: " . $this->getErrorCount(); + $sb.= ", Time elapsed: " . $this->getElapsedTime(); + $sb.= " sec\n"; + + if ($this->out != NULL) + { + $this->out->write($sb); + $this->out->write($this->inner); + } + } + } + + function paintError($message) + { + parent::paintError($message); + + $this->formatError("ERROR", $message); + } + + function paintFail($message) + { + parent::paintFail($message); + + $this->formatError("FAILED", $message); + } + + private function formatError($type, $message) + { + $this->inner.= $this->getTestName() . " " . $type . "\n"; + $this->inner.= $message . "\n"; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/text-base/SimpleTestResultFormatter.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/text-base/SimpleTestResultFormatter.php.svn-base new file mode 100644 index 0000000..2622f5b --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/text-base/SimpleTestResultFormatter.php.svn-base @@ -0,0 +1,161 @@ +. + */ + +require_once 'simpletest/scorer.php'; + +require_once 'phing/system/io/Writer.php'; + +/** + * This abstract class describes classes that format the results of a SimpleTest testrun. + * + * @author Michiel Rook + * @version $Id$ + * @package phing.tasks.ext.phpunit2 + * @since 2.2.0 + */ +abstract class SimpleTestResultFormatter extends SimpleReporter +{ + protected $out = NULL; + + protected $project = NULL; + + private $timer = NULL; + + private $runCount = 0; + + private $failureCount = 0; + + private $errorCount = 0; + + private $currentTest = ""; + + /** + * Sets the writer the formatter is supposed to write its results to. + */ + function setOutput(Writer $out) + { + $this->out = $out; + } + + /** + * Returns the extension used for this formatter + * + * @return string the extension + */ + function getExtension() + { + return ""; + } + + /** + * Sets the project + * + * @param Project the project + */ + function setProject(Project $project) + { + $this->project = $project; + } + + function getPreferredOutfile() + { + return ""; + } + + function paintMethodStart($test_name) + { + parent::paintMethodStart($test_name); + + $this->currentTest = $test_name; + } + + function paintMethodEnd($test_name) + { + parent::paintMethodEnd($test_name); + + $this->runCount++; + } + + function paintCaseStart($test_name) + { + parent::paintCaseStart($test_name); + + $this->runCount = 0; + $this->failureCount = 0; + $this->errorCount = 0; + + $this->timer = new Timer(); + $this->timer->start(); + } + + function paintCaseEnd($test_name) + { + parent::paintCaseEnd($test_name); + + $this->timer->stop(); + } + + function paintError($message) + { + parent::paintError($message); + + $this->errorCount++; + } + + function paintFail($message) + { + parent::paintFail($message); + + $this->failureCount++; + } + + function getRunCount() + { + return $this->runCount; + } + + function getFailureCount() + { + return $this->failureCount; + } + + function getErrorCount() + { + return $this->errorCount; + } + + function getTestName() + { + return $this->currentTest; + } + + function getElapsedTime() + { + if ($this->timer) + { + return $this->timer->getElapsedTime(); + } + else + { + return 0; + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/text-base/SimpleTestSummaryResultFormatter.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/text-base/SimpleTestSummaryResultFormatter.php.svn-base new file mode 100644 index 0000000..0a67d3a --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/text-base/SimpleTestSummaryResultFormatter.php.svn-base @@ -0,0 +1,53 @@ +. + */ + +require_once 'phing/tasks/ext/simpletest/SimpleTestResultFormatter.php'; + +/** + * Prints short summary output of the test to Phing's logging system. + * + * @author Michiel Rook + * @version $Id$ + * @package phing.tasks.ext.simpletest + * @since 2.2.0 + */ +class SimpleTestSummaryResultFormatter extends SimpleTestResultFormatter +{ + function paintCaseEnd($test_name) + { + parent::paintCaseEnd($test_name); + + /* Only count suites where more than one test was run */ + if ($this->getRunCount()) + { + $sb.= "Tests run: " . $this->getRunCount(); + $sb.= ", Failures: " . $this->getFailureCount(); + $sb.= ", Errors: " . $this->getErrorCount(); + $sb.= ", Time elapsed: " . $this->getElapsedTime(); + $sb.= " sec\n"; + + if ($this->out != NULL) + { + $this->out->write($sb); + } + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/text-base/SimpleTestTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/text-base/SimpleTestTask.php.svn-base new file mode 100644 index 0000000..8254fa8 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/.svn/text-base/SimpleTestTask.php.svn-base @@ -0,0 +1,237 @@ +. + */ + +require_once 'phing/Task.php'; +require_once 'phing/system/io/PhingFile.php'; +require_once 'phing/system/io/Writer.php'; +require_once 'phing/util/LogWriter.php'; + +/** + * Runs SimpleTest tests. + * + * @author Michiel Rook + * @version $Id$ + * @package phing.tasks.ext.simpletest + * @since 2.2.0 + */ +class SimpleTestTask extends Task +{ + private $formatters = array(); + private $haltonerror = false; + private $haltonfailure = false; + private $failureproperty; + private $errorproperty; + private $printsummary = false; + private $testfailed = false; + + /** + * Initialize Task. + * This method includes any necessary SimpleTest libraries and triggers + * appropriate error if they cannot be found. This is not done in header + * because we may want this class to be loaded w/o triggering an error. + */ + function init() { + @include_once 'simpletest/scorer.php'; + + if (!class_exists('SimpleReporter')) { + throw new BuildException("SimpleTestTask depends on SimpleTest package being installed.", $this->getLocation()); + } + + require_once 'simpletest/reporter.php'; + require_once 'simpletest/xml.php'; + require_once 'simpletest/test_case.php'; + require_once 'phing/tasks/ext/simpletest/SimpleTestCountResultFormatter.php'; + require_once 'phing/tasks/ext/simpletest/SimpleTestFormatterElement.php'; + } + + function setFailureproperty($value) + { + $this->failureproperty = $value; + } + + function setErrorproperty($value) + { + $this->errorproperty = $value; + } + + function setHaltonerror($value) + { + $this->haltonerror = $value; + } + + function setHaltonfailure($value) + { + $this->haltonfailure = $value; + } + + function setPrintsummary($printsummary) + { + $this->printsummary = $printsummary; + } + + /** + * Add a new formatter to all tests of this task. + * + * @param SimpleTestFormatterElement formatter element + */ + function addFormatter(SimpleTestFormatterElement $fe) + { + $this->formatters[] = $fe; + } + + /** + * Add a new fileset containing the XML results to aggregate + * + * @param FileSet the new fileset containing XML results. + */ + function addFileSet(FileSet $fileset) + { + $this->filesets[] = $fileset; + } + + /** + * Iterate over all filesets and return the filename of all files + * that end with .php. + * + * @return array an array of filenames + */ + private function getFilenames() + { + $filenames = array(); + + foreach ($this->filesets as $fileset) + { + $ds = $fileset->getDirectoryScanner($this->project); + $ds->scan(); + + $files = $ds->getIncludedFiles(); + + foreach ($files as $file) + { + if (strstr($file, ".php")) + { + $filenames[] = $ds->getBaseDir() . "/" . $file; + } + } + } + + return $filenames; + } + + /** + * The main entry point + * + * @throws BuildException + */ + function main() + { + $group = new GroupTest(); + + $filenames = $this->getFilenames(); + + foreach ($filenames as $testfile) + { + $group->addTestFile($testfile); + } + + if ($this->printsummary) + { + $fe = new SimpleTestFormatterElement(); + $fe->setType('summary'); + $fe->setUseFile(false); + $this->formatters[] = $fe; + } + + foreach ($this->formatters as $fe) + { + $formatter = $fe->getFormatter(); + $formatter->setProject($this->getProject()); + + if ($fe->getUseFile()) + { + $destFile = new PhingFile($fe->getToDir(), $fe->getOutfile()); + + $writer = new FileWriter($destFile->getAbsolutePath()); + + $formatter->setOutput($writer); + } + else + { + $formatter->setOutput($this->getDefaultOutput()); + } + } + + $this->execute($group); + + if ($this->testfailed) + { + throw new BuildException("One or more tests failed"); + } + } + + private function execute($suite) + { + $counter = new SimpleTestCountResultFormatter(); + $reporter = new MultipleReporter(); + $reporter->attachReporter($counter); + + foreach ($this->formatters as $fe) + { + $formatter = $fe->getFormatter(); + + $reporter->attachReporter($formatter); + } + + $suite->run($reporter); + + $retcode = $counter->getRetCode(); + + if ($retcode == SimpleTestCountResultFormatter::ERRORS) + { + if ($this->errorproperty) + { + $this->project->setNewProperty($this->errorproperty, true); + } + + if ($this->haltonerror) + { + $this->testfailed = true; + } + } + elseif ($retcode == SimpleTestCountResultFormatter::FAILURES) + { + if ($this->failureproperty) + { + $this->project->setNewProperty($this->failureproperty, true); + } + + if ($this->haltonfailure) + { + $this->testfailed = true; + } + } + } + + private function getDefaultOutput() + { + return new LogWriter($this); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/SimpleTestCountResultFormatter.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/SimpleTestCountResultFormatter.php new file mode 100644 index 0000000..9c066f8 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/SimpleTestCountResultFormatter.php @@ -0,0 +1,51 @@ +. + */ + +require_once 'phing/tasks/ext/simpletest/SimpleTestResultFormatter.php'; + +/** + * Dummy result formatter used to count SimpleTest results + * + * @author Michiel Rook + * @version $Id: SimpleTestCountResultFormatter.php 325 2007-12-20 15:44:58Z hans $ + * @package phing.tasks.ext.simpletest + * @since 2.2.0 + */ +class SimpleTestCountResultFormatter extends SimpleTestResultFormatter +{ + const SUCCESS = 0; + const FAILURES = 1; + const ERRORS = 2; + + function getRetCode() + { + if ($this->getExceptionCount() != 0) + { + return self::ERRORS; + } + else if ($this->getFailCount() != 0) + { + return self::FAILURES; + } + + return self::SUCCESS; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/SimpleTestFormatterElement.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/SimpleTestFormatterElement.php new file mode 100644 index 0000000..181f671 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/SimpleTestFormatterElement.php @@ -0,0 +1,61 @@ +. + */ + +require_once 'phing/tasks/ext/simpletest/SimpleTestPlainResultFormatter.php'; +require_once 'phing/tasks/ext/simpletest/SimpleTestSummaryResultFormatter.php'; +require_once 'phing/tasks/ext/phpunit/FormatterElement.php'; + +/** + * Child class of "FormatterElement", overrides setType to provide other + * formatter classes for SimpleTest + * + * @author Michiel Rook + * @version $Id: SimpleTestFormatterElement.php 357 2008-02-26 08:51:59Z mrook $ + * @package phing.tasks.ext.simpletest + * @since 2.2.0 + */ +class SimpleTestFormatterElement extends FormatterElement +{ + function setType($type) + { + $this->type = $type; + + if ($this->type == "xml") + { + $destFile = new PhingFile($this->toDir, 'testsuites.xml'); + //$this->formatter = new SimpleTestXmlResultFormatter(); + } + else + if ($this->type == "plain") + { + $this->formatter = new SimpleTestPlainResultFormatter(); + } + else + if ($this->type == "summary") + { + $this->formatter = new SimpleTestSummaryResultFormatter(); + } + else + { + throw new BuildException("Formatter '" . $this->type . "' not implemented"); + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/SimpleTestPlainResultFormatter.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/SimpleTestPlainResultFormatter.php new file mode 100644 index 0000000..89a6fce --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/SimpleTestPlainResultFormatter.php @@ -0,0 +1,94 @@ +. + */ + +require_once 'phing/tasks/ext/simpletest/SimpleTestResultFormatter.php'; + +/** + * Prints plain text output of the test to a specified Writer. + * + * @author Michiel Rook + * @version $Id: SimpleTestPlainResultFormatter.php 325 2007-12-20 15:44:58Z hans $ + * @package phing.tasks.ext.simpletest + * @since 2.2.0 + */ +class SimpleTestPlainResultFormatter extends SimpleTestResultFormatter +{ + private $inner = ""; + + function getExtension() + { + return ".txt"; + } + + function getPreferredOutfile() + { + return "testresults"; + } + + function paintCaseStart($test_name) + { + parent::paintCaseStart($test_name); + + $this->inner = ""; + } + + function paintCaseEnd($test_name) + { + parent::paintCaseEnd($test_name); + + /* Only count suites where more than one test was run */ + if ($this->getRunCount()) + { + $sb.= "Testsuite: $test_name\n"; + $sb.= "Tests run: " . $this->getRunCount(); + $sb.= ", Failures: " . $this->getFailureCount(); + $sb.= ", Errors: " . $this->getErrorCount(); + $sb.= ", Time elapsed: " . $this->getElapsedTime(); + $sb.= " sec\n"; + + if ($this->out != NULL) + { + $this->out->write($sb); + $this->out->write($this->inner); + } + } + } + + function paintError($message) + { + parent::paintError($message); + + $this->formatError("ERROR", $message); + } + + function paintFail($message) + { + parent::paintFail($message); + + $this->formatError("FAILED", $message); + } + + private function formatError($type, $message) + { + $this->inner.= $this->getTestName() . " " . $type . "\n"; + $this->inner.= $message . "\n"; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/SimpleTestResultFormatter.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/SimpleTestResultFormatter.php new file mode 100644 index 0000000..b8f61dd --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/SimpleTestResultFormatter.php @@ -0,0 +1,161 @@ +. + */ + +require_once 'simpletest/scorer.php'; + +require_once 'phing/system/io/Writer.php'; + +/** + * This abstract class describes classes that format the results of a SimpleTest testrun. + * + * @author Michiel Rook + * @version $Id: SimpleTestResultFormatter.php 325 2007-12-20 15:44:58Z hans $ + * @package phing.tasks.ext.phpunit2 + * @since 2.2.0 + */ +abstract class SimpleTestResultFormatter extends SimpleReporter +{ + protected $out = NULL; + + protected $project = NULL; + + private $timer = NULL; + + private $runCount = 0; + + private $failureCount = 0; + + private $errorCount = 0; + + private $currentTest = ""; + + /** + * Sets the writer the formatter is supposed to write its results to. + */ + function setOutput(Writer $out) + { + $this->out = $out; + } + + /** + * Returns the extension used for this formatter + * + * @return string the extension + */ + function getExtension() + { + return ""; + } + + /** + * Sets the project + * + * @param Project the project + */ + function setProject(Project $project) + { + $this->project = $project; + } + + function getPreferredOutfile() + { + return ""; + } + + function paintMethodStart($test_name) + { + parent::paintMethodStart($test_name); + + $this->currentTest = $test_name; + } + + function paintMethodEnd($test_name) + { + parent::paintMethodEnd($test_name); + + $this->runCount++; + } + + function paintCaseStart($test_name) + { + parent::paintCaseStart($test_name); + + $this->runCount = 0; + $this->failureCount = 0; + $this->errorCount = 0; + + $this->timer = new Timer(); + $this->timer->start(); + } + + function paintCaseEnd($test_name) + { + parent::paintCaseEnd($test_name); + + $this->timer->stop(); + } + + function paintError($message) + { + parent::paintError($message); + + $this->errorCount++; + } + + function paintFail($message) + { + parent::paintFail($message); + + $this->failureCount++; + } + + function getRunCount() + { + return $this->runCount; + } + + function getFailureCount() + { + return $this->failureCount; + } + + function getErrorCount() + { + return $this->errorCount; + } + + function getTestName() + { + return $this->currentTest; + } + + function getElapsedTime() + { + if ($this->timer) + { + return $this->timer->getElapsedTime(); + } + else + { + return 0; + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/SimpleTestSummaryResultFormatter.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/SimpleTestSummaryResultFormatter.php new file mode 100644 index 0000000..14f89c4 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/SimpleTestSummaryResultFormatter.php @@ -0,0 +1,53 @@ +. + */ + +require_once 'phing/tasks/ext/simpletest/SimpleTestResultFormatter.php'; + +/** + * Prints short summary output of the test to Phing's logging system. + * + * @author Michiel Rook + * @version $Id: SimpleTestSummaryResultFormatter.php 325 2007-12-20 15:44:58Z hans $ + * @package phing.tasks.ext.simpletest + * @since 2.2.0 + */ +class SimpleTestSummaryResultFormatter extends SimpleTestResultFormatter +{ + function paintCaseEnd($test_name) + { + parent::paintCaseEnd($test_name); + + /* Only count suites where more than one test was run */ + if ($this->getRunCount()) + { + $sb.= "Tests run: " . $this->getRunCount(); + $sb.= ", Failures: " . $this->getFailureCount(); + $sb.= ", Errors: " . $this->getErrorCount(); + $sb.= ", Time elapsed: " . $this->getElapsedTime(); + $sb.= " sec\n"; + + if ($this->out != NULL) + { + $this->out->write($sb); + } + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/SimpleTestTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/SimpleTestTask.php new file mode 100644 index 0000000..59c0d43 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/simpletest/SimpleTestTask.php @@ -0,0 +1,237 @@ +. + */ + +require_once 'phing/Task.php'; +require_once 'phing/system/io/PhingFile.php'; +require_once 'phing/system/io/Writer.php'; +require_once 'phing/util/LogWriter.php'; + +/** + * Runs SimpleTest tests. + * + * @author Michiel Rook + * @version $Id: SimpleTestTask.php 325 2007-12-20 15:44:58Z hans $ + * @package phing.tasks.ext.simpletest + * @since 2.2.0 + */ +class SimpleTestTask extends Task +{ + private $formatters = array(); + private $haltonerror = false; + private $haltonfailure = false; + private $failureproperty; + private $errorproperty; + private $printsummary = false; + private $testfailed = false; + + /** + * Initialize Task. + * This method includes any necessary SimpleTest libraries and triggers + * appropriate error if they cannot be found. This is not done in header + * because we may want this class to be loaded w/o triggering an error. + */ + function init() { + @include_once 'simpletest/scorer.php'; + + if (!class_exists('SimpleReporter')) { + throw new BuildException("SimpleTestTask depends on SimpleTest package being installed.", $this->getLocation()); + } + + require_once 'simpletest/reporter.php'; + require_once 'simpletest/xml.php'; + require_once 'simpletest/test_case.php'; + require_once 'phing/tasks/ext/simpletest/SimpleTestCountResultFormatter.php'; + require_once 'phing/tasks/ext/simpletest/SimpleTestFormatterElement.php'; + } + + function setFailureproperty($value) + { + $this->failureproperty = $value; + } + + function setErrorproperty($value) + { + $this->errorproperty = $value; + } + + function setHaltonerror($value) + { + $this->haltonerror = $value; + } + + function setHaltonfailure($value) + { + $this->haltonfailure = $value; + } + + function setPrintsummary($printsummary) + { + $this->printsummary = $printsummary; + } + + /** + * Add a new formatter to all tests of this task. + * + * @param SimpleTestFormatterElement formatter element + */ + function addFormatter(SimpleTestFormatterElement $fe) + { + $this->formatters[] = $fe; + } + + /** + * Add a new fileset containing the XML results to aggregate + * + * @param FileSet the new fileset containing XML results. + */ + function addFileSet(FileSet $fileset) + { + $this->filesets[] = $fileset; + } + + /** + * Iterate over all filesets and return the filename of all files + * that end with .php. + * + * @return array an array of filenames + */ + private function getFilenames() + { + $filenames = array(); + + foreach ($this->filesets as $fileset) + { + $ds = $fileset->getDirectoryScanner($this->project); + $ds->scan(); + + $files = $ds->getIncludedFiles(); + + foreach ($files as $file) + { + if (strstr($file, ".php")) + { + $filenames[] = $ds->getBaseDir() . "/" . $file; + } + } + } + + return $filenames; + } + + /** + * The main entry point + * + * @throws BuildException + */ + function main() + { + $group = new GroupTest(); + + $filenames = $this->getFilenames(); + + foreach ($filenames as $testfile) + { + $group->addTestFile($testfile); + } + + if ($this->printsummary) + { + $fe = new SimpleTestFormatterElement(); + $fe->setType('summary'); + $fe->setUseFile(false); + $this->formatters[] = $fe; + } + + foreach ($this->formatters as $fe) + { + $formatter = $fe->getFormatter(); + $formatter->setProject($this->getProject()); + + if ($fe->getUseFile()) + { + $destFile = new PhingFile($fe->getToDir(), $fe->getOutfile()); + + $writer = new FileWriter($destFile->getAbsolutePath()); + + $formatter->setOutput($writer); + } + else + { + $formatter->setOutput($this->getDefaultOutput()); + } + } + + $this->execute($group); + + if ($this->testfailed) + { + throw new BuildException("One or more tests failed"); + } + } + + private function execute($suite) + { + $counter = new SimpleTestCountResultFormatter(); + $reporter = new MultipleReporter(); + $reporter->attachReporter($counter); + + foreach ($this->formatters as $fe) + { + $formatter = $fe->getFormatter(); + + $reporter->attachReporter($formatter); + } + + $suite->run($reporter); + + $retcode = $counter->getRetCode(); + + if ($retcode == SimpleTestCountResultFormatter::ERRORS) + { + if ($this->errorproperty) + { + $this->project->setNewProperty($this->errorproperty, true); + } + + if ($this->haltonerror) + { + $this->testfailed = true; + } + } + elseif ($retcode == SimpleTestCountResultFormatter::FAILURES) + { + if ($this->failureproperty) + { + $this->project->setNewProperty($this->failureproperty, true); + } + + if ($this->haltonfailure) + { + $this->testfailed = true; + } + } + } + + private function getDefaultOutput() + { + return new LogWriter($this); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/.svn/all-wcprops new file mode 100644 index 0000000..116b9e4 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/.svn/all-wcprops @@ -0,0 +1,35 @@ +K 25 +svn:wc:ra_dav:version-url +V 52 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/svn +END +SvnExportTask.php +K 25 +svn:wc:ra_dav:version-url +V 70 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/svn/SvnExportTask.php +END +SvnLastRevisionTask.php +K 25 +svn:wc:ra_dav:version-url +V 76 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/svn/SvnLastRevisionTask.php +END +SvnUpdateTask.php +K 25 +svn:wc:ra_dav:version-url +V 70 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/svn/SvnUpdateTask.php +END +SvnCheckoutTask.php +K 25 +svn:wc:ra_dav:version-url +V 72 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/svn/SvnCheckoutTask.php +END +SvnBaseTask.php +K 25 +svn:wc:ra_dav:version-url +V 68 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/ext/svn/SvnBaseTask.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/.svn/entries new file mode 100644 index 0000000..d47d903 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/.svn/entries @@ -0,0 +1,198 @@ +10 + +dir +1404 +http://phing.mirror.svn.symfony-project.com/tags/2.3.3/classes/phing/tasks/ext/svn +http://phing.mirror.svn.symfony-project.com + + + +2008-04-10T16:06:37.004412Z +363 +tiddy + + + + + + + + + + + + + + +c8b19502-6211-4773-8637-5aef67d587fc + +SvnExportTask.php +file + + + + +2012-05-10T18:42:02.597548Z +dd0c545ba67bfdf66213deb927f744c0 +2008-04-10T16:06:37.004412Z +363 +tiddy +has-props + + + + + + + + + + + + + + + + + + + + +2134 + +SvnLastRevisionTask.php +file + + + + +2012-05-10T18:42:02.597548Z +a8191cfcc59270c8ea18cf3a7e0fe6ea +2007-12-20T15:44:58.929962Z +325 +hans +has-props + + + + + + + + + + + + + + + + + + + + +2132 + +SvnUpdateTask.php +file + + + + +2012-05-10T18:42:02.717805Z +e48528d12b54d86693993e8ab23820cb +2007-12-20T15:44:58.929962Z +325 +hans +has-props + + + + + + + + + + + + + + + + + + + + +1617 + +SvnCheckoutTask.php +file + + + + +2012-05-10T18:42:02.729551Z +52010a6f1dbf9c7bb2998d854f6af6bb +2007-12-20T15:44:58.929962Z +325 +hans +has-props + + + + + + + + + + + + + + + + + + + + +1634 + +SvnBaseTask.php +file + + + + +2012-05-10T18:42:02.729551Z +f6422254546ee47fd6edb88ec37f6e4d +2007-12-22T17:12:59.195376Z +329 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +6990 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/.svn/prop-base/SvnBaseTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/.svn/prop-base/SvnBaseTask.php.svn-base new file mode 100644 index 0000000..77191a2 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/.svn/prop-base/SvnBaseTask.php.svn-base @@ -0,0 +1,9 @@ +K 14 +svn:executable +V 1 +* +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/.svn/prop-base/SvnCheckoutTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/.svn/prop-base/SvnCheckoutTask.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/.svn/prop-base/SvnCheckoutTask.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/.svn/prop-base/SvnExportTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/.svn/prop-base/SvnExportTask.php.svn-base new file mode 100644 index 0000000..77191a2 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/.svn/prop-base/SvnExportTask.php.svn-base @@ -0,0 +1,9 @@ +K 14 +svn:executable +V 1 +* +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/.svn/prop-base/SvnLastRevisionTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/.svn/prop-base/SvnLastRevisionTask.php.svn-base new file mode 100644 index 0000000..77191a2 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/.svn/prop-base/SvnLastRevisionTask.php.svn-base @@ -0,0 +1,9 @@ +K 14 +svn:executable +V 1 +* +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/.svn/prop-base/SvnUpdateTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/.svn/prop-base/SvnUpdateTask.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/.svn/prop-base/SvnUpdateTask.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/.svn/text-base/SvnBaseTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/.svn/text-base/SvnBaseTask.php.svn-base new file mode 100644 index 0000000..4af0176 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/.svn/text-base/SvnBaseTask.php.svn-base @@ -0,0 +1,321 @@ +. + */ + +include_once 'phing/Task.php'; + +/** + * Base class for Subversion tasks + * + * @author Michiel Rook + * @author Andrew Eddie + * @version $Id$ + * @package phing.tasks.ext.svn + * @see VersionControl_SVN + * @since 2.2.0 + */ +abstract class SvnBaseTask extends Task +{ + private $workingCopy = ""; + + private $repositoryUrl = ""; + + private $svnPath = "/usr/bin/svn"; + + private $svn = NULL; + + private $mode = ""; + + private $svnArgs = array(); + + private $svnSwitches = array(); + + private $toDir = ""; + + /** + * Initialize Task. + * This method includes any necessary SVN libraries and triggers + * appropriate error if they cannot be found. This is not done in header + * because we may want this class to be loaded w/o triggering an error. + */ + function init() { + include_once 'VersionControl/SVN.php'; + if (!class_exists('VersionControl_SVN')) { + throw new Exception("SvnLastRevisionTask depends on PEAR VersionControl_SVN package being installed."); + } + } + + /** + * Sets the path to the workingcopy + */ + function setWorkingCopy($workingCopy) + { + $this->workingCopy = $workingCopy; + } + + /** + * Returns the path to the workingcopy + */ + function getWorkingCopy() + { + return $this->workingCopy; + } + + /** + * Sets the path/URI to the repository + */ + function setRepositoryUrl($repositoryUrl) + { + $this->repositoryUrl = $repositoryUrl; + } + + /** + * Returns the path/URI to the repository + */ + function getRepositoryUrl() + { + return $this->repositoryUrl; + } + + /** + * Sets the path to the SVN executable + */ + function setSvnPath($svnPath) + { + $this->svnPath = $svnPath; + } + + /** + * Returns the path to the SVN executable + */ + function getSvnPath() + { + return $this->svnPath; + } + + // + // Args + // + + /** + * Sets the path to export/checkout to + */ + function setToDir($toDir) + { + $this->toDir = $toDir; + } + + /** + * Returns the path to export/checkout to + */ + function getToDir() + { + return $this->toDir; + } + + // + // Switches + // + + /** + * Sets the force switch + */ + function setForce($value) + { + $this->svnSwitches['force'] = $value; + } + + /** + * Returns the force switch + */ + function getForce() + { + return isset( $this->svnSwitches['force'] ) ? $this->svnSwitches['force'] : ''; + } + + /** + * Sets the username of the user to export + */ + function setUsername($value) + { + $this->svnSwitches['username'] = $value; + } + + /** + * Returns the username + */ + function getUsername() + { + return isset( $this->svnSwitches['username'] ) ? $this->svnSwitches['username'] : ''; + } + + /** + * Sets the password of the user to export + */ + function setPassword($value) + { + $this->svnSwitches['password'] = $value; + } + + /** + * Returns the password + */ + function getPassword() + { + return isset( $this->svnSwitches['password'] ) ? $this->svnSwitches['password'] : ''; + } + + /** + * Sets the no-auth-cache switch + */ + function setNoCache($value) + { + $this->svnSwitches['no-auth-cache'] = $value; + } + + /** + * Returns the no-auth-cache switch + */ + function getNoCache() + { + return isset( $this->svnSwitches['no-auth-cache'] ) ? $this->svnSwitches['no-auth-cache'] : ''; + } + + /** + * Sets the non-recursive switch + */ + function setRecursive($value) + { + $this->svnSwitches['non-recursive'] = is_bool($value) ? !$value : TRUE; + } + + /** + * Returns the non-recursive switch + */ + function getRecursive() + { + return isset( $this->svnSwitches['non-recursive'] ) ? $this->svnSwitches['non-recursive'] : ''; + } + + /** + * Sets the ignore-externals switch + */ + function setIgnoreExternals($value) + { + $this->svnSwitches['ignore-externals'] = $value; + } + + /** + * Returns the ignore-externals switch + */ + function getIgnoreExternals() + { + return isset( $this->svnSwitches['ignore-externals'] ) ? $this->svnSwitches['ignore-externals'] : ''; + } + + /** + * Creates a VersionControl_SVN class based on $mode + * + * @param string The SVN mode to use (info, export, checkout, ...) + * @throws BuildException + */ + protected function setup($mode) + { + $this->mode = $mode; + + // Set up runtime options. Will be passed to all + // subclasses. + $options = array('fetchmode' => VERSIONCONTROL_SVN_FETCHMODE_ASSOC, 'svn_path' => $this->getSvnPath()); + + // Pass array of subcommands we need to factory + $this->svn = VersionControl_SVN::factory($mode, $options); + + if (!empty($this->repositoryUrl)) + { + $this->svnArgs = array($this->repositoryUrl); + } + else + if (!empty($this->workingCopy)) + { + if (is_dir($this->workingCopy)) + { + if (in_array(".svn", scandir($this->workingCopy))) + { + $this->svnArgs = array($this->workingCopy); + } + else + { + throw new BuildException("'".$this->workingCopy."' doesn't seem to be a working copy"); + } + } + else + if ($mode=='info' ) + { + if (is_file($this->workingCopy)) + { + $this->svnArgs = array($this->workingCopy); + } + else + { + throw new BuildException("'".$this->workingCopy."' is not a directory nor a file"); + } + } + else + { + throw new BuildException("'".$this->workingCopy."' is not a directory"); + } + } + } + + /** + * Executes the constructed VersionControl_SVN instance + * + * @param array Additional arguments to pass to SVN. + * @param array Switches to pass to SVN. + * @return string Output generated by SVN. + */ + protected function run($args = array(), $switches = array()) + { + $svnstack = PEAR_ErrorStack::singleton('VersionControl_SVN'); + + $tempArgs = $this->svnArgs; + + $tempArgs = array_merge($tempArgs, $args); + + $tempSwitches = $this->svnSwitches; + + $tempSwitches = array_merge($tempSwitches, $switches); + + if ($output = $this->svn->run($tempArgs, $tempSwitches)) + { + return $output; + } + else + { + if (count($errs = $svnstack->getErrors())) + { + $err = current($errs); + + throw new BuildException("Failed to run the 'svn " . $this->mode . "' command: " . $err['message']); + } + } + } +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/.svn/text-base/SvnCheckoutTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/.svn/text-base/SvnCheckoutTask.php.svn-base new file mode 100644 index 0000000..8a5b3cb --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/.svn/text-base/SvnCheckoutTask.php.svn-base @@ -0,0 +1,49 @@ +. + */ + +require_once 'phing/Task.php'; +require_once 'phing/tasks/ext/svn/SvnBaseTask.php'; + +/** + * Checks out a repository to a local directory + * + * @author Andrew Eddie + * @version $Id$ + * @package phing.tasks.ext.svn + * @since 2.3.0 + */ +class SvnCheckoutTask extends SvnBaseTask +{ + /** + * The main entry point + * + * @throws BuildException + */ + function main() + { + $this->setup('checkout'); + + $this->log("Checking out SVN repository to '" . $this->getToDir() . "'"); + + $this->run(array($this->getToDir())); + } +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/.svn/text-base/SvnExportTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/.svn/text-base/SvnExportTask.php.svn-base new file mode 100644 index 0000000..a26f004 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/.svn/text-base/SvnExportTask.php.svn-base @@ -0,0 +1,70 @@ +. + */ + +require_once 'phing/Task.php'; +require_once 'phing/tasks/ext/svn/SvnBaseTask.php'; + +/** + * Exports/checks out a repository to a local directory + * with authentication + * + * @author Michiel Rook + * @author Andrew Eddie + * @version $Id$ + * @package phing.tasks.ext.svn + * @since 2.2.0 + */ +class SvnExportTask extends SvnBaseTask +{ +# + /** + * Which Revision to Export + * + * @todo check if version_control_svn supports constants + * + * @var string + */ + private $revision = 'HEAD'; + + /** + * The main entry point + * + * @throws BuildException + */ + function main() + { + $this->setup('export'); + + $this->log("Exporting SVN repository to '" . $this->getToDir() . "'"); + + // revision + $switches = array( + 'r' => $this->revision, + ); + + $this->run(array($this->getToDir()), $switches); + } + + public function setRevision($revision) + { + $this->revision = $revision; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/.svn/text-base/SvnLastRevisionTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/.svn/text-base/SvnLastRevisionTask.php.svn-base new file mode 100644 index 0000000..3e5216c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/.svn/text-base/SvnLastRevisionTask.php.svn-base @@ -0,0 +1,74 @@ +. + */ + +require_once 'phing/Task.php'; +require_once 'phing/tasks/ext/svn/SvnBaseTask.php'; + +/** + * Stores the number of the last revision of a workingcopy in a property + * + * @author Michiel Rook + * @version $Id$ + * @package phing.tasks.ext.svn + * @see VersionControl_SVN + * @since 2.1.0 + */ +class SvnLastRevisionTask extends SvnBaseTask +{ + private $propertyName = "svn.lastrevision"; + + /** + * Sets the name of the property to use + */ + function setPropertyName($propertyName) + { + $this->propertyName = $propertyName; + } + + /** + * Returns the name of the property to use + */ + function getPropertyName() + { + return $this->propertyName; + } + + /** + * The main entry point + * + * @throws BuildException + */ + function main() + { + $this->setup('info'); + + $output = $this->run(); + + if (preg_match('/Rev:[\s]+([\d]+)/', $output, $matches)) + { + $this->project->setProperty($this->getPropertyName(), $matches[1]); + } + else + { + throw new BuildException("Failed to parse the output of 'svn info'."); + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/.svn/text-base/SvnUpdateTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/.svn/text-base/SvnUpdateTask.php.svn-base new file mode 100644 index 0000000..10aa4ed --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/.svn/text-base/SvnUpdateTask.php.svn-base @@ -0,0 +1,49 @@ +. + */ + +require_once 'phing/Task.php'; +require_once 'phing/tasks/ext/svn/SvnBaseTask.php'; + +/** + * Updates a repository in local directory + * + * @author Andrew Eddie + * @version $Id$ + * @package phing.tasks.ext.svn + * @since 2.3.0 + */ +class SvnUpdateTask extends SvnBaseTask +{ + /** + * The main entry point + * + * @throws BuildException + */ + function main() + { + $this->setup('update'); + + $this->log("Updating SVN repository at '" . $this->getToDir() . "'"); + + $this->run(array($this->getToDir())); + } +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/SvnBaseTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/SvnBaseTask.php new file mode 100755 index 0000000..eacaecf --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/SvnBaseTask.php @@ -0,0 +1,321 @@ +. + */ + +include_once 'phing/Task.php'; + +/** + * Base class for Subversion tasks + * + * @author Michiel Rook + * @author Andrew Eddie + * @version $Id: SvnBaseTask.php 329 2007-12-22 17:12:59Z mrook $ + * @package phing.tasks.ext.svn + * @see VersionControl_SVN + * @since 2.2.0 + */ +abstract class SvnBaseTask extends Task +{ + private $workingCopy = ""; + + private $repositoryUrl = ""; + + private $svnPath = "/usr/bin/svn"; + + private $svn = NULL; + + private $mode = ""; + + private $svnArgs = array(); + + private $svnSwitches = array(); + + private $toDir = ""; + + /** + * Initialize Task. + * This method includes any necessary SVN libraries and triggers + * appropriate error if they cannot be found. This is not done in header + * because we may want this class to be loaded w/o triggering an error. + */ + function init() { + include_once 'VersionControl/SVN.php'; + if (!class_exists('VersionControl_SVN')) { + throw new Exception("SvnLastRevisionTask depends on PEAR VersionControl_SVN package being installed."); + } + } + + /** + * Sets the path to the workingcopy + */ + function setWorkingCopy($workingCopy) + { + $this->workingCopy = $workingCopy; + } + + /** + * Returns the path to the workingcopy + */ + function getWorkingCopy() + { + return $this->workingCopy; + } + + /** + * Sets the path/URI to the repository + */ + function setRepositoryUrl($repositoryUrl) + { + $this->repositoryUrl = $repositoryUrl; + } + + /** + * Returns the path/URI to the repository + */ + function getRepositoryUrl() + { + return $this->repositoryUrl; + } + + /** + * Sets the path to the SVN executable + */ + function setSvnPath($svnPath) + { + $this->svnPath = $svnPath; + } + + /** + * Returns the path to the SVN executable + */ + function getSvnPath() + { + return $this->svnPath; + } + + // + // Args + // + + /** + * Sets the path to export/checkout to + */ + function setToDir($toDir) + { + $this->toDir = $toDir; + } + + /** + * Returns the path to export/checkout to + */ + function getToDir() + { + return $this->toDir; + } + + // + // Switches + // + + /** + * Sets the force switch + */ + function setForce($value) + { + $this->svnSwitches['force'] = $value; + } + + /** + * Returns the force switch + */ + function getForce() + { + return isset( $this->svnSwitches['force'] ) ? $this->svnSwitches['force'] : ''; + } + + /** + * Sets the username of the user to export + */ + function setUsername($value) + { + $this->svnSwitches['username'] = $value; + } + + /** + * Returns the username + */ + function getUsername() + { + return isset( $this->svnSwitches['username'] ) ? $this->svnSwitches['username'] : ''; + } + + /** + * Sets the password of the user to export + */ + function setPassword($value) + { + $this->svnSwitches['password'] = $value; + } + + /** + * Returns the password + */ + function getPassword() + { + return isset( $this->svnSwitches['password'] ) ? $this->svnSwitches['password'] : ''; + } + + /** + * Sets the no-auth-cache switch + */ + function setNoCache($value) + { + $this->svnSwitches['no-auth-cache'] = $value; + } + + /** + * Returns the no-auth-cache switch + */ + function getNoCache() + { + return isset( $this->svnSwitches['no-auth-cache'] ) ? $this->svnSwitches['no-auth-cache'] : ''; + } + + /** + * Sets the non-recursive switch + */ + function setRecursive($value) + { + $this->svnSwitches['non-recursive'] = is_bool($value) ? !$value : TRUE; + } + + /** + * Returns the non-recursive switch + */ + function getRecursive() + { + return isset( $this->svnSwitches['non-recursive'] ) ? $this->svnSwitches['non-recursive'] : ''; + } + + /** + * Sets the ignore-externals switch + */ + function setIgnoreExternals($value) + { + $this->svnSwitches['ignore-externals'] = $value; + } + + /** + * Returns the ignore-externals switch + */ + function getIgnoreExternals() + { + return isset( $this->svnSwitches['ignore-externals'] ) ? $this->svnSwitches['ignore-externals'] : ''; + } + + /** + * Creates a VersionControl_SVN class based on $mode + * + * @param string The SVN mode to use (info, export, checkout, ...) + * @throws BuildException + */ + protected function setup($mode) + { + $this->mode = $mode; + + // Set up runtime options. Will be passed to all + // subclasses. + $options = array('fetchmode' => VERSIONCONTROL_SVN_FETCHMODE_ASSOC, 'svn_path' => $this->getSvnPath()); + + // Pass array of subcommands we need to factory + $this->svn = VersionControl_SVN::factory($mode, $options); + + if (!empty($this->repositoryUrl)) + { + $this->svnArgs = array($this->repositoryUrl); + } + else + if (!empty($this->workingCopy)) + { + if (is_dir($this->workingCopy)) + { + if (in_array(".svn", scandir($this->workingCopy))) + { + $this->svnArgs = array($this->workingCopy); + } + else + { + throw new BuildException("'".$this->workingCopy."' doesn't seem to be a working copy"); + } + } + else + if ($mode=='info' ) + { + if (is_file($this->workingCopy)) + { + $this->svnArgs = array($this->workingCopy); + } + else + { + throw new BuildException("'".$this->workingCopy."' is not a directory nor a file"); + } + } + else + { + throw new BuildException("'".$this->workingCopy."' is not a directory"); + } + } + } + + /** + * Executes the constructed VersionControl_SVN instance + * + * @param array Additional arguments to pass to SVN. + * @param array Switches to pass to SVN. + * @return string Output generated by SVN. + */ + protected function run($args = array(), $switches = array()) + { + $svnstack = PEAR_ErrorStack::singleton('VersionControl_SVN'); + + $tempArgs = $this->svnArgs; + + $tempArgs = array_merge($tempArgs, $args); + + $tempSwitches = $this->svnSwitches; + + $tempSwitches = array_merge($tempSwitches, $switches); + + if ($output = $this->svn->run($tempArgs, $tempSwitches)) + { + return $output; + } + else + { + if (count($errs = $svnstack->getErrors())) + { + $err = current($errs); + + throw new BuildException("Failed to run the 'svn " . $this->mode . "' command: " . $err['message']); + } + } + } +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/SvnCheckoutTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/SvnCheckoutTask.php new file mode 100644 index 0000000..9410a43 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/SvnCheckoutTask.php @@ -0,0 +1,49 @@ +. + */ + +require_once 'phing/Task.php'; +require_once 'phing/tasks/ext/svn/SvnBaseTask.php'; + +/** + * Checks out a repository to a local directory + * + * @author Andrew Eddie + * @version $Id: SvnCheckoutTask.php 325 2007-12-20 15:44:58Z hans $ + * @package phing.tasks.ext.svn + * @since 2.3.0 + */ +class SvnCheckoutTask extends SvnBaseTask +{ + /** + * The main entry point + * + * @throws BuildException + */ + function main() + { + $this->setup('checkout'); + + $this->log("Checking out SVN repository to '" . $this->getToDir() . "'"); + + $this->run(array($this->getToDir())); + } +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/SvnExportTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/SvnExportTask.php new file mode 100755 index 0000000..d2fc790 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/SvnExportTask.php @@ -0,0 +1,70 @@ +. + */ + +require_once 'phing/Task.php'; +require_once 'phing/tasks/ext/svn/SvnBaseTask.php'; + +/** + * Exports/checks out a repository to a local directory + * with authentication + * + * @author Michiel Rook + * @author Andrew Eddie + * @version $Id: SvnExportTask.php 363 2008-04-10 16:06:37Z tiddy $ + * @package phing.tasks.ext.svn + * @since 2.2.0 + */ +class SvnExportTask extends SvnBaseTask +{ +# + /** + * Which Revision to Export + * + * @todo check if version_control_svn supports constants + * + * @var string + */ + private $revision = 'HEAD'; + + /** + * The main entry point + * + * @throws BuildException + */ + function main() + { + $this->setup('export'); + + $this->log("Exporting SVN repository to '" . $this->getToDir() . "'"); + + // revision + $switches = array( + 'r' => $this->revision, + ); + + $this->run(array($this->getToDir()), $switches); + } + + public function setRevision($revision) + { + $this->revision = $revision; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/SvnLastRevisionTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/SvnLastRevisionTask.php new file mode 100755 index 0000000..8dc4955 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/SvnLastRevisionTask.php @@ -0,0 +1,74 @@ +. + */ + +require_once 'phing/Task.php'; +require_once 'phing/tasks/ext/svn/SvnBaseTask.php'; + +/** + * Stores the number of the last revision of a workingcopy in a property + * + * @author Michiel Rook + * @version $Id: SvnLastRevisionTask.php 325 2007-12-20 15:44:58Z hans $ + * @package phing.tasks.ext.svn + * @see VersionControl_SVN + * @since 2.1.0 + */ +class SvnLastRevisionTask extends SvnBaseTask +{ + private $propertyName = "svn.lastrevision"; + + /** + * Sets the name of the property to use + */ + function setPropertyName($propertyName) + { + $this->propertyName = $propertyName; + } + + /** + * Returns the name of the property to use + */ + function getPropertyName() + { + return $this->propertyName; + } + + /** + * The main entry point + * + * @throws BuildException + */ + function main() + { + $this->setup('info'); + + $output = $this->run(); + + if (preg_match('/Rev:[\s]+([\d]+)/', $output, $matches)) + { + $this->project->setProperty($this->getPropertyName(), $matches[1]); + } + else + { + throw new BuildException("Failed to parse the output of 'svn info'."); + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/SvnUpdateTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/SvnUpdateTask.php new file mode 100644 index 0000000..234ff10 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/ext/svn/SvnUpdateTask.php @@ -0,0 +1,49 @@ +. + */ + +require_once 'phing/Task.php'; +require_once 'phing/tasks/ext/svn/SvnBaseTask.php'; + +/** + * Updates a repository in local directory + * + * @author Andrew Eddie + * @version $Id: SvnUpdateTask.php 325 2007-12-20 15:44:58Z hans $ + * @package phing.tasks.ext.svn + * @since 2.3.0 + */ +class SvnUpdateTask extends SvnBaseTask +{ + /** + * The main entry point + * + * @throws BuildException + */ + function main() + { + $this->setup('update'); + + $this->log("Updating SVN repository at '" . $this->getToDir() . "'"); + + $this->run(array($this->getToDir())); + } +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/all-wcprops new file mode 100644 index 0000000..c849d97 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/all-wcprops @@ -0,0 +1,227 @@ +K 25 +svn:wc:ra_dav:version-url +V 51 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system +END +ForeachTask.php +K 25 +svn:wc:ra_dav:version-url +V 67 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/ForeachTask.php +END +TstampTask.php +K 25 +svn:wc:ra_dav:version-url +V 66 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/TstampTask.php +END +ExitTask.php +K 25 +svn:wc:ra_dav:version-url +V 64 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/ExitTask.php +END +SequentialTask.php +K 25 +svn:wc:ra_dav:version-url +V 70 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/SequentialTask.php +END +ChownTask.php +K 25 +svn:wc:ra_dav:version-url +V 65 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/ChownTask.php +END +EchoTask.php +K 25 +svn:wc:ra_dav:version-url +V 64 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/EchoTask.php +END +TaskdefTask.php +K 25 +svn:wc:ra_dav:version-url +V 67 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/TaskdefTask.php +END +CvsPassTask.php +K 25 +svn:wc:ra_dav:version-url +V 67 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/CvsPassTask.php +END +PropertyTask.php +K 25 +svn:wc:ra_dav:version-url +V 68 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/PropertyTask.php +END +UpToDateTask.php +K 25 +svn:wc:ra_dav:version-url +V 68 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/UpToDateTask.php +END +ConditionTask.php +K 25 +svn:wc:ra_dav:version-url +V 69 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/ConditionTask.php +END +XsltTask.php +K 25 +svn:wc:ra_dav:version-url +V 64 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/XsltTask.php +END +CvsTask.php +K 25 +svn:wc:ra_dav:version-url +V 63 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/CvsTask.php +END +ResolvePathTask.php +K 25 +svn:wc:ra_dav:version-url +V 71 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/ResolvePathTask.php +END +InputTask.php +K 25 +svn:wc:ra_dav:version-url +V 65 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/InputTask.php +END +PhpEvalTask.php +K 25 +svn:wc:ra_dav:version-url +V 67 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/PhpEvalTask.php +END +TypedefTask.php +K 25 +svn:wc:ra_dav:version-url +V 67 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/TypedefTask.php +END +PhingTask.php +K 25 +svn:wc:ra_dav:version-url +V 65 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/PhingTask.php +END +MoveTask.php +K 25 +svn:wc:ra_dav:version-url +V 64 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/MoveTask.php +END +MkdirTask.php +K 25 +svn:wc:ra_dav:version-url +V 65 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/MkdirTask.php +END +AppendTask.php +K 25 +svn:wc:ra_dav:version-url +V 66 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/AppendTask.php +END +WarnTask.php +K 25 +svn:wc:ra_dav:version-url +V 64 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/WarnTask.php +END +CopyTask.php +K 25 +svn:wc:ra_dav:version-url +V 64 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/CopyTask.php +END +AdhocTask.php +K 25 +svn:wc:ra_dav:version-url +V 65 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/AdhocTask.php +END +AdhocTaskdefTask.php +K 25 +svn:wc:ra_dav:version-url +V 72 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/AdhocTaskdefTask.php +END +AvailableTask.php +K 25 +svn:wc:ra_dav:version-url +V 69 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/AvailableTask.php +END +TouchTask.php +K 25 +svn:wc:ra_dav:version-url +V 65 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/TouchTask.php +END +ExecTask.php +K 25 +svn:wc:ra_dav:version-url +V 64 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/ExecTask.php +END +PropertyPromptTask.php +K 25 +svn:wc:ra_dav:version-url +V 74 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/PropertyPromptTask.php +END +ReflexiveTask.php +K 25 +svn:wc:ra_dav:version-url +V 69 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/ReflexiveTask.php +END +ChmodTask.php +K 25 +svn:wc:ra_dav:version-url +V 65 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/ChmodTask.php +END +MatchingTask.php +K 25 +svn:wc:ra_dav:version-url +V 68 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/MatchingTask.php +END +IfTask.php +K 25 +svn:wc:ra_dav:version-url +V 62 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/IfTask.php +END +AdhocTypedefTask.php +K 25 +svn:wc:ra_dav:version-url +V 72 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/AdhocTypedefTask.php +END +IncludePathTask.php +K 25 +svn:wc:ra_dav:version-url +V 71 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/IncludePathTask.php +END +PhingCallTask.php +K 25 +svn:wc:ra_dav:version-url +V 69 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/PhingCallTask.php +END +DeleteTask.php +K 25 +svn:wc:ra_dav:version-url +V 66 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/DeleteTask.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/entries new file mode 100644 index 0000000..65190a6 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/entries @@ -0,0 +1,1289 @@ +10 + +dir +1404 +http://phing.mirror.svn.symfony-project.com/tags/2.3.3/classes/phing/tasks/system +http://phing.mirror.svn.symfony-project.com + + + +2008-10-21T13:10:52.115018Z +410 +hans + + + + + + + + + + + + + + +c8b19502-6211-4773-8637-5aef67d587fc + +ForeachTask.php +file + + + + +2012-05-10T18:42:03.241548Z +13bca8832cbcb3be4a4ffe58bd6ba35e +2007-02-05T15:19:00.849358Z +144 +hans +has-props + + + + + + + + + + + + + + + + + + + + +4481 + +TstampTask.php +file + + + + +2012-05-10T18:42:03.241548Z +4b46859aed4c7115f2637846547c0693 +2007-12-20T15:44:58.929962Z +325 +hans +has-props + + + + + + + + + + + + + + + + + + + + +4031 + +ExitTask.php +file + + + + +2012-05-10T18:42:03.245550Z +dabbdebcfbbb84950265b196d9b6e0c5 +2006-03-10T14:31:51.593319Z +43 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +3437 + +SequentialTask.php +file + + + + +2012-05-10T18:42:03.245550Z +76e5319c2968352141ccddb4988789bc +2006-03-10T14:31:51.593319Z +43 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +1974 + +condition +dir + +ChownTask.php +file + + + + +2012-05-10T18:42:03.245550Z +48c177f77183677032c5463b8ff626f3 +2008-02-06T19:43:18.040112Z +353 +hans +has-props + + + + + + + + + + + + + + + + + + + + +5482 + +EchoTask.php +file + + + + +2012-05-10T18:42:03.474342Z +f1966a235fc1d677afdcd86460c85c8c +2007-02-05T15:19:00.849358Z +144 +hans +has-props + + + + + + + + + + + + + + + + + + + + +2782 + +TaskdefTask.php +file + + + + +2012-05-10T18:42:03.474342Z +9223c66c3b370557309c26148b2bf610 +2007-02-05T15:19:00.849358Z +144 +hans +has-props + + + + + + + + + + + + + + + + + + + + +4224 + +CvsPassTask.php +file + + + + +2012-05-10T18:42:03.477547Z +54a9ce9d0a5af82026c4fc0c27ceb3a5 +2007-08-28T02:17:00.079088Z +227 +hans +has-props + + + + + + + + + + + + + + + + + + + + +6281 + +PropertyTask.php +file + + + + +2012-05-10T18:42:03.477547Z +a04aa0e26c1778bbe7cf737fe9968a6e +2007-02-05T15:19:00.849358Z +144 +hans +has-props + + + + + + + + + + + + + + + + + + + + +14808 + +UpToDateTask.php +file + + + + +2012-05-10T18:42:03.477547Z +caecc5fcb815d212f0880ea913e4ff6a +2007-02-05T15:19:00.849358Z +144 +hans +has-props + + + + + + + + + + + + + + + + + + + + +7872 + +ConditionTask.php +file + + + + +2012-05-10T18:42:03.477547Z +22a3e4961ca5bcd7ebce68c34adbd19f +2006-03-10T14:31:51.593319Z +43 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +2587 + +XsltTask.php +file + + + + +2012-05-10T18:42:03.481550Z +cbb654db694b2eab1180b9dca382c1bf +2007-02-05T15:19:00.849358Z +144 +hans +has-props + + + + + + + + + + + + + + + + + + + + +2816 + +CvsTask.php +file + + + + +2012-05-10T18:42:03.481550Z +801b65b3e6ae23289d04e450028f42dc +2007-08-28T02:17:00.079088Z +227 +hans +has-props + + + + + + + + + + + + + + + + + + + + +14786 + +ResolvePathTask.php +file + + + + +2012-05-10T18:42:03.481550Z +63679f6940c4f06d046f183bcd210f09 +2007-02-05T15:19:00.849358Z +144 +hans +has-props + + + + + + + + + + + + + + + + + + + + +4269 + +PhpEvalTask.php +file + + + + +2012-05-10T18:42:03.485552Z +c96fd2b62d13df29a674f796f52b1d1f +2007-02-05T15:19:00.849358Z +144 +hans +has-props + + + + + + + + + + + + + + + + + + + + +5614 + +InputTask.php +file + + + + +2012-05-10T18:42:03.481550Z +76f80b45853ff75ce75784091447b7eb +2006-03-10T14:31:51.593319Z +43 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +4843 + +TypedefTask.php +file + + + + +2012-05-10T18:42:03.485552Z +eb5341f360f15d615f5cbb61caa99542 +2006-03-10T14:31:51.593319Z +43 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +4139 + +PhingTask.php +file + + + + +2012-05-10T18:42:03.485552Z +dcd41df48d30e00fecb787f0a6ab8c8c +2007-11-08T20:39:33.426069Z +303 +hans +has-props + + + + + + + + + + + + + + + + + + + + +20826 + +MoveTask.php +file + + + + +2012-05-10T18:42:03.489552Z +6ccc3ddae5f9fe224e8df88d49645673 +2007-12-20T15:44:58.929962Z +325 +hans +has-props + + + + + + + + + + + + + + + + + + + + +8800 + +MkdirTask.php +file + + + + +2012-05-10T18:42:03.489552Z +8327c6a119e3991205c93903fe9defb3 +2006-03-10T14:31:51.593319Z +43 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +2352 + +AppendTask.php +file + + + + +2012-05-10T18:42:03.489552Z +949edecf14d08f038b384a9c6b973ffb +2007-02-05T15:19:00.849358Z +144 +hans +has-props + + + + + + + + + + + + + + + + + + + + +8812 + +WarnTask.php +file + + + + +2012-05-10T18:42:03.489552Z +12a59d5c49c4b8690d74eeaa0ae58196 +2007-02-05T15:19:00.849358Z +144 +hans +has-props + + + + + + + + + + + + + + + + + + + + +1455 + +CopyTask.php +file + + + + +2012-05-10T18:42:03.493551Z +c52fbbd5dd5feac27e5c5ad0f3b46a56 +2007-09-05T18:42:02.349119Z +235 +hans +has-props + + + + + + + + + + + + + + + + + + + + +14421 + +AdhocTask.php +file + + + + +2012-05-10T18:42:03.493551Z +4f26a3e311fa1d6101fdbc8a280137a7 +2007-02-05T15:19:00.849358Z +144 +hans +has-props + + + + + + + + + + + + + + + + + + + + +2918 + +AdhocTaskdefTask.php +file + + + + +2012-05-10T18:42:03.645550Z +25ea2b19da2b79391b97b59e860b04fa +2007-02-05T15:19:00.849358Z +144 +hans +has-props + + + + + + + + + + + + + + + + + + + + +3066 + +AvailableTask.php +file + + + + +2012-05-10T18:42:03.641560Z +cd0c9c48c21229f52231ed181dd8d710 +2007-12-28T21:30:09.899633Z +333 +hans +has-props + + + + + + + + + + + + + + + + + + + + +3997 + +TouchTask.php +file + + + + +2012-05-10T18:42:03.657569Z +e266a3e7cbaa78039e90ced9bd1ff1c4 +2007-02-05T15:19:00.849358Z +144 +hans +has-props + + + + + + + + + + + + + + + + + + + + +5492 + +ExecTask.php +file + + + + +2012-05-10T18:42:03.657569Z +12cbc7ae6548e89f04609a439f311e35 +2008-01-04T14:25:20.780133Z +334 +hans +has-props + + + + + + + + + + + + + + + + + + + + +6167 + +PropertyPromptTask.php +file + + + + +2012-05-10T18:42:03.691542Z +b0d6657f4d9f436faa533447a5ef6fce +2007-10-30T23:06:04.865164Z +272 +hans +has-props + + + + + + + + + + + + + + + + + + + + +7021 + +ReflexiveTask.php +file + + + + +2012-05-10T18:42:03.691542Z +a8cd92c9ebe4baa0529bc43e7d9201e8 +2007-02-05T15:19:00.849358Z +144 +hans +has-props + + + + + + + + + + + + + + + + + + + + +5765 + +MatchingTask.php +file + + + + +2012-05-10T18:42:03.701566Z +433d0aa848013ffa21e717ded9a91d7a +2006-03-10T14:31:51.593319Z +43 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +10407 + +ChmodTask.php +file + + + + +2012-05-10T18:42:03.701566Z +881d48e9cedf0bcd3412e2170cd3833a +2007-09-26T15:39:45.699284Z +242 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +5741 + +IfTask.php +file + + + + +2012-05-10T18:42:03.713565Z +391ef9f7a7b223cf3b6af2c6de79f3e9 +2006-03-10T14:31:51.593319Z +43 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +7228 + +AdhocTypedefTask.php +file + + + + +2012-05-10T18:42:03.713565Z +c788f3e0b8f26569047179e632fc6f7c +2007-02-05T15:19:00.849358Z +144 +hans +has-props + + + + + + + + + + + + + + + + + + + + +2601 + +IncludePathTask.php +file + + + + +2012-05-10T18:42:03.725565Z +32aa156b95477085a044fa423391b755 +2007-02-05T15:19:00.849358Z +144 +hans +has-props + + + + + + + + + + + + + + + + + + + + +3793 + +PhingCallTask.php +file + + + + +2012-05-10T18:42:03.725565Z +613fbf3517d2c0ea8a661a93565c835b +2007-11-08T20:31:19.375717Z +299 +hans +has-props + + + + + + + + + + + + + + + + + + + + +4271 + +DeleteTask.php +file + + + + +2012-05-10T18:42:03.729548Z +47dfa86e3a06002e01294f59eb47b22b +2007-12-14T18:00:25.527316Z +321 +hans +has-props + + + + + + + + + + + + + + + + + + + + +10553 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/AdhocTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/AdhocTask.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/AdhocTask.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/AdhocTaskdefTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/AdhocTaskdefTask.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/AdhocTaskdefTask.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/AdhocTypedefTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/AdhocTypedefTask.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/AdhocTypedefTask.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/AppendTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/AppendTask.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/AppendTask.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/AvailableTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/AvailableTask.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/AvailableTask.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/ChmodTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/ChmodTask.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/ChmodTask.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/ChownTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/ChownTask.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/ChownTask.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/ConditionTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/ConditionTask.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/ConditionTask.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/CopyTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/CopyTask.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/CopyTask.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/CvsPassTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/CvsPassTask.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/CvsPassTask.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/CvsTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/CvsTask.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/CvsTask.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/DeleteTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/DeleteTask.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/DeleteTask.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/EchoTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/EchoTask.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/EchoTask.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/ExecTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/ExecTask.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/ExecTask.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/ExitTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/ExitTask.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/ExitTask.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/ForeachTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/ForeachTask.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/ForeachTask.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/IfTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/IfTask.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/IfTask.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/IncludePathTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/IncludePathTask.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/IncludePathTask.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/InputTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/InputTask.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/InputTask.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/MatchingTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/MatchingTask.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/MatchingTask.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/MkdirTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/MkdirTask.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/MkdirTask.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/MoveTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/MoveTask.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/MoveTask.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/PhingCallTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/PhingCallTask.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/PhingCallTask.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/PhingTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/PhingTask.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/PhingTask.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/PhpEvalTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/PhpEvalTask.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/PhpEvalTask.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/PropertyPromptTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/PropertyPromptTask.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/PropertyPromptTask.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/PropertyTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/PropertyTask.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/PropertyTask.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/ReflexiveTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/ReflexiveTask.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/ReflexiveTask.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/ResolvePathTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/ResolvePathTask.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/ResolvePathTask.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/SequentialTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/SequentialTask.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/SequentialTask.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/TaskdefTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/TaskdefTask.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/TaskdefTask.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/TouchTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/TouchTask.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/TouchTask.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/TstampTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/TstampTask.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/TstampTask.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/TypedefTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/TypedefTask.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/TypedefTask.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/UpToDateTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/UpToDateTask.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/UpToDateTask.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/WarnTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/WarnTask.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/WarnTask.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/XsltTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/XsltTask.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/prop-base/XsltTask.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/AdhocTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/AdhocTask.php.svn-base new file mode 100644 index 0000000..4c8cc74 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/AdhocTask.php.svn-base @@ -0,0 +1,88 @@ +. + */ + +require_once 'phing/Task.php'; + +/** + * Abstract class for creating adhoc Phing components in buildfile. + * + * By itself this class can be used to declare a single class within your buildfile. + * You can then reference this class in any task that takes custom classes (selectors, + * mappers, filters, etc.) + * + * Subclasses exist for conveniently declaring and registering tasks and types. + * + * @author Hans Lellelid + * @version $Revision: 1.6 $ + * @package phing.tasks.system + */ +class AdhocTask extends Task { + + /** + * The PHP script + * @var string + */ + protected $script; + + protected $newClasses = array(); + + /** + * Main entry point + */ + public function main() { + $this->execute(); + if ($this->newClasses) { + foreach($this->newClasses as $classname) { + $this->log("Added adhoc class " . $classname, Project::MSG_VERBOSE); + } + } else { + $this->log("Adhoc task executed but did not result in any new classes.", Project::MSG_VERBOSE); + } + } + + /** + * Get array of names of newly defined classes. + * @return array + */ + protected function getNewClasses() { + return $this->newClasses; + } + + /** + * Load the adhoc class, and perform any core validation. + * @return string The classname of the ProjectComponent class. + * @throws BuildException - if more than one class is defined. + */ + protected function execute() { + $classes = get_declared_classes(); + eval($this->script); + $this->newClasses = array_diff(get_declared_classes(), $classes); + } + + /** + * Set the script. + * @param string $script + */ + public function addText($script) { + $this->script = $script; + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/AdhocTaskdefTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/AdhocTaskdefTask.php.svn-base new file mode 100644 index 0000000..27f3289 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/AdhocTaskdefTask.php.svn-base @@ -0,0 +1,90 @@ +. + */ + +require_once 'phing/tasks/system/AdhocTask.php'; + +/** + * A class for creating adhoc tasks in build file. + * + * + * bar = $bar; + * } + * + * function main() { + * $this->log("In FooTest: " . $this->bar); + * } + * } + * + * ]]> + * + * + * + * + * @author Hans Lellelid + * @version $Revision: 1.5 $ + * @package phing.tasks.system + */ +class AdhocTaskdefTask extends AdhocTask { + + /** + * The tag that refers to this task. + */ + private $name; + + /** + * Set the tag that will represent this adhoc task/type. + * @param string $name + */ + public function setName($name) { + $this->name = $name; + } + + /** Main entry point */ + public function main() { + if ($this->name === null) { + throw new BuildException("The name attribute is required for adhoc task definition.",$this->location); + } + + $this->execute(); + + $classes = $this->getNewClasses(); + if (count($classes) !== 1) { + throw new BuildException("You must define one (and only one) class for AdhocTaskdefTask."); + } + $classname = array_shift($classes); + + // instantiate it to make sure it is an instance of Task + $t = new $classname(); + if (!($t instanceof Task)) { + throw new BuildException("The adhoc class you defined must be an instance of phing.Task", $this->location); + } + + $this->log("Task " . $this->name . " will be handled by class " . $classname, Project::MSG_VERBOSE); + $this->project->addTaskDefinition($this->name, $classname); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/AdhocTypedefTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/AdhocTypedefTask.php.svn-base new file mode 100644 index 0000000..783111e --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/AdhocTypedefTask.php.svn-base @@ -0,0 +1,71 @@ +. + */ + +require_once 'phing/tasks/system/AdhocTask.php'; + +/** + * A class for creating adhoc datatypes in build file. + * + * @author Hans Lellelid + * @version $Revision: 1.4 $ + * @package phing.tasks.system + */ +class AdhocTypedefTask extends AdhocTask { + + /** + * The tag that refers to this task. + */ + private $name; + + /** + * Set the tag that will represent this adhoc task/type. + * @param string $name + */ + public function setName($name) { + $this->name = $name; + } + + /** Main entry point */ + public function main() { + + if ($this->name === null) { + throw new BuildException("The name attribute is required for adhoc task definition.",$this->location); + } + + $this->execute(); + + $classes = $this->getNewClasses(); + if (count($classes) !== 1) { + throw new BuildException("You must define one (and only one) class for AdhocTypedefTask."); + } + $classname = array_shift($classes); + + // instantiate it to make sure it is an instance of ProjectComponent + $t = new $classname(); + if (!($t instanceof ProjectComponent)) { + throw new BuildException("The adhoc class you defined must be an instance of phing.ProjectComponent", $this->location); + } + + $this->log("Datatype " . $this->name . " will be handled by class " . $classname, Project::MSG_VERBOSE); + $this->project->addDataTypeDefinition($this->name, $classname); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/AppendTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/AppendTask.php.svn-base new file mode 100644 index 0000000..84af032 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/AppendTask.php.svn-base @@ -0,0 +1,240 @@ +. + */ + +require_once 'phing/Task.php'; +include_once 'phing/types/FileList.php'; +include_once 'phing/types/FileSet.php'; + +/** + * Appends text, contents of a file or set of files defined by a filelist to a destination file. + * + * + * + * + * OR + * + * + * + * + * + * OR + * + * + * + * + * + * + * + * + * + * + * + * @package phing.tasks.system + * @version $Revision: 1.14 $ + */ +class AppendTask extends Task { + + /** Append stuff to this file. */ + private $to; + + /** Explicit file to append. */ + private $file; + + /** Any filesets of files that should be appended. */ + private $filesets = array(); + + /** Any filelists of files that should be appended. */ + private $filelists = array(); + + /** Any filters to be applied before append happens. */ + private $filterChains = array(); + + /** Text to append. (cannot be used in conjunction w/ files or filesets) */ + private $text; + + /** Sets specific file to append. */ + function setFile(PhingFile $f) { + $this->file = $f; + } + + /** + * Set target file to append to. + * @deprecated Will be removed with final release. + */ + function setTo(PhingFile $f) { + $this->log("The 'to' attribute is deprecated in favor of 'destFile'; please update your code.", Project::MSG_WARN); + $this->to = $f; + } + + /** + * The more conventional naming for method to set destination file. + * @param PhingFile $f + */ + function setDestFile(PhingFile $f) { + $this->to = $f; + } + + /** + * Supports embedded element. + * @return FileList + */ + function createFileList() { + $num = array_push($this->filelists, new FileList()); + return $this->filelists[$num-1]; + } + + /** + * Nested creator, adds a set of files (nested attribute). + * This is for when you don't care what order files get appended. + * @return FileSet + */ + function createFileSet() { + $num = array_push($this->filesets, new FileSet()); + return $this->filesets[$num-1]; + } + + /** + * Creates a filterchain + * + * @return FilterChain The created filterchain object + */ + function createFilterChain() { + $num = array_push($this->filterChains, new FilterChain($this->project)); + return $this->filterChains[$num-1]; + } + + /** + * Sets text to append. (cannot be used in conjunction w/ files or filesets). + * @param string $txt + */ + function setText($txt) { + $this->text = (string) $txt; + } + + /** + * Sets text to append. Supports CDATA. + * @param string $txt + */ + function addText($txt) { + $this->text = (string) $txt; + } + + + /** Append the file(s). */ + function main() { + + if ($this->to === null) { + throw new BuildException("You must specify the 'destFile' attribute"); + } + + if ($this->file === null && empty($this->filelists) && empty($this->filesets) && $this->text === null) { + throw new BuildException("You must specify a file, use a filelist, or specify a text value."); + } + + if ($this->text !== null && ($this->file !== null || !empty($this->filelists))) { + throw new BuildException("Cannot use text attribute in conjunction with file or filelists."); + } + + // create a filwriter to append to "to" file. + $writer = new FileWriter($this->to, $append=true); + + if ($this->text !== null) { + + // simply append the text + $this->log("Appending string to " . $this->to->getPath()); + + // for debugging primarily, maybe comment + // out for better performance(?) + $lines = explode("\n", $this->text); + foreach($lines as $line) { + $this->log($line, Project::MSG_VERBOSE); + } + + $writer->write($this->text); + + } else { + + // append explicitly-specified file + if ($this->file !== null) { + try { + $this->appendFile($writer, $this->file); + } catch (Exception $ioe) { + $this->log("Unable to append contents of file " . $this->file->getAbsolutePath() . ": " . $ioe->getMessage(), Project::MSG_WARN); + } + } + + // append the files in the filelists + foreach($this->filelists as $fl) { + try { + $files = $fl->getFiles($this->project); + $this->appendFiles($writer, $files, $fl->getDir($this->project)); + } catch (BuildException $be) { + $this->log($be->getMessage(), Project::MSG_WARN); + } + } + + // append any files in filesets + foreach($this->filesets as $fs) { + try { + $files = $fs->getDirectoryScanner($this->project)->getIncludedFiles(); + $this->appendFiles($writer, $files, $fs->getDir($this->project)); + } catch (BuildException $be) { + $this->log($be->getMessage(), Project::MSG_WARN); + } + } + + } // if ($text ) {} else {} + + $writer->close(); + } + + /** + * Append an array of files in a directory. + * @param FileWriter $writer The FileWriter that is appending to target file. + * @param array $files array of files to delete; can be of zero length + * @param PhingFile $dir directory to work from + */ + private function appendFiles(FileWriter $writer, $files, PhingFile $dir) { + if (!empty($files)) { + $this->log("Attempting to append " . count($files) . " files" .($dir !== null ? ", using basedir " . $dir->getPath(): "")); + $basenameSlot = Register::getSlot("task.append.current_file"); + $pathSlot = Register::getSlot("task.append.current_file.path"); + foreach($files as $filename) { + try { + $f = new PhingFile($dir, $filename); + $basenameSlot->setValue($filename); + $pathSlot->setValue($f->getPath()); + $this->appendFile($writer, $f); + } catch (Exception $ioe) { + $this->log("Unable to append contents of file " . $f->getAbsolutePath() . ": " . $ioe->getMessage(), Project::MSG_WARN); + } + } + } // if !empty + } + + private function appendFile(FileWriter $writer, PhingFile $f) { + $in = FileUtils::getChainedReader(new FileReader($f), $this->filterChains, $this->project); + while(-1 !== ($buffer = $in->read())) { // -1 indicates EOF + $writer->write($buffer); + } + $this->log("Appending contents of " . $f->getPath() . " to " . $this->to->getPath()); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/AvailableTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/AvailableTask.php.svn-base new file mode 100644 index 0000000..9620c68 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/AvailableTask.php.svn-base @@ -0,0 +1,135 @@ +. + */ + +require_once 'phing/Task.php'; +include_once 'phing/tasks/system/condition/ConditionBase.php'; + +/** + * task. + * + * Note: implements condition interface (see condition/Condition.php) + * + * @author Andreas Aderhold + * @copyright � 2001,2002 THYRELL. All rights reserved + * @version $Revision: 1.11 $ + * @package phing.tasks.system + */ +class AvailableTask extends Task { + + /** Property to check for. */ + private $property; + + /** Value property should be set to. */ + private $value = "true"; + + /** Resource to check for */ + private $resource; + + private $type = null; + private $filepath = null; + + function setProperty($property) { + $this->property = (string) $property; + } + + function setValue($value) { + $this->value = (string) $value; + } + + function setFile(PhingFile $file) { + $this->file = $file; + } + + function setResource($resource) { + $this->resource = (string) $resource; + } + + function setType($type) { + $this->type = (string) strtolower($type); + } + + function main() { + if ($this->property === null) { + throw new BuildException("property attribute is required", $this->location); + } + if ($this->evaluate()) { + $this->project->setProperty($this->property, $this->value); + } + } + + function evaluate() { + if ($this->file === null && $this->resource === null) { + throw new BuildException("At least one of (file|resource) is required", $this->location); + } + + if ($this->type !== null && ($this->type !== "file" && $this->type !== "dir")) { + throw new BuildException("Type must be one of either dir or file", $this->location); + } + + if (($this->file !== null) && !$this->_checkFile()) { + $this->log("Unable to find " . $this->file->__toString() . " to set property " . $this->property, Project::MSG_VERBOSE); + return false; + } + + if (($this->resource !== null) && !$this->_checkResource($this->resource)) { + $this->log("Unable to load resource " . $this->resource . " to set property " . $this->property, Project::MSG_VERBOSE); + return false; + } + + return true; + } + + // this is prepared for the path type + private function _checkFile() { + if ($this->filepath === null) { + return $this->_checkFile1($this->file); + } else { + $paths = $this->filepath->listDir(); + for($i=0,$pcnt=count($paths); $i < $pcnt; $i++) { + $this->log("Searching " . $paths[$i], Project::MSG_VERBOSE); + $tmp = new PhingFile($paths[$i], $this->file->getName()); + if($tmp->isFile()) { + return true; + } + } + } + return false; + } + + private function _checkFile1(PhingFile $file) { + if ($this->type !== null) { + if ($this->type === "dir") { + return $file->isDirectory(); + } else if ($this->type === "file") { + return $file->isFile(); + } + } + return $file->exists(); + } + + private function _checkResource($resource) { + if (null != ($resourcePath = Phing::getResourcePath($resource))) { + return $this->_checkFile1(new PhingFile($resourcePath)); + } else { + return false; + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/ChmodTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/ChmodTask.php.svn-base new file mode 100644 index 0000000..02a9bca --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/ChmodTask.php.svn-base @@ -0,0 +1,203 @@ +. + */ + +require_once 'phing/Task.php'; +include_once 'phing/types/FileSet.php'; + +/** + * Task that changes the permissions on a file/directory. + * + * @author Manuel Holtgrewe + * @author Hans Lellelid + * @version $Revision: 1.12 $ + * @package phing.tasks.system + */ +class ChmodTask extends Task { + + private $file; + + private $mode; + + private $filesets = array(); + + private $filesystem; + + private $quiet = false; + private $failonerror = true; + private $verbose = true; + + /** + * This flag means 'note errors to the output, but keep going' + * @see setQuiet() + */ + function setFailonerror($bool) { + $this->failonerror = $bool; + } + + /** + * Set quiet mode, which suppresses warnings if chmod() fails. + * @see setFailonerror() + */ + function setQuiet($bool) { + $this->quiet = $bool; + if ($this->quiet) { + $this->failonerror = false; + } + } + + /** + * Set verbosity, which if set to false surpresses all but an overview + * of what happened. + */ + function setVerbose($bool) { + $this->verbose = (bool)$bool; + } + + /** + * Sets a single source file to touch. If the file does not exist + * an empty file will be created. + */ + function setFile(PhingFile $file) { + $this->file = $file; + } + + function setMode($str) { + $this->mode = $str; + } + + /** + * Nested creator, adds a set of files (nested fileset attribute). + */ + function createFileSet() { + $num = array_push($this->filesets, new FileSet()); + return $this->filesets[$num-1]; + } + + /** + * Execute the touch operation. + * @return void + */ + function main() { + // Check Parameters + $this->checkParams(); + $this->chmod(); + } + + /** + * Ensure that correct parameters were passed in. + * @return void + */ + private function checkParams() { + + if ($this->file === null && empty($this->filesets)) { + throw new BuildException("Specify at least one source - a file or a fileset."); + } + + if ($this->mode === null) { + throw new BuildException("You have to specify an octal mode for chmod."); + } + + // check for mode to be in the correct format + if (!preg_match('/^([0-7]){3,4}$/', $this->mode)) { + throw new BuildException("You have specified an invalid mode."); + } + + } + + /** + * Does the actual work. + * @return void + */ + private function chmod() { + + if (strlen($this->mode) === 4) { + $mode = octdec($this->mode); + } else { + // we need to prepend the 0 before converting + $mode = octdec("0". $this->mode); + } + + // counters for non-verbose output + $total_files = 0; + $total_dirs = 0; + + // one file + if ($this->file !== null) { + $total_files = 1; + $this->chmodFile($this->file, $mode); + } + + // filesets + foreach($this->filesets as $fs) { + + $ds = $fs->getDirectoryScanner($this->project); + $fromDir = $fs->getDir($this->project); + + $srcFiles = $ds->getIncludedFiles(); + $srcDirs = $ds->getIncludedDirectories(); + + $filecount = count($srcFiles); + $total_files = $total_files + $filecount; + for ($j = 0; $j < $filecount; $j++) { + $this->chmodFile(new PhingFile($fromDir, $srcFiles[$j]), $mode); + } + + $dircount = count($srcDirs); + $total_dirs = $total_dirs + $dircount; + for ($j = 0; $j < $dircount; $j++) { + $this->chmodFile(new PhingFile($fromDir, $srcDirs[$j]), $mode); + } + } + + if (!$this->verbose) { + $this->log('Total files changed to ' . vsprintf('%o', $mode) . ': ' . $total_files); + $this->log('Total directories changed to ' . vsprintf('%o', $mode) . ': ' . $total_dirs); + } + + } + + /** + * Actually change the mode for the file. + * @param PhingFile $file + * @param int $mode + */ + private function chmodFile(PhingFile $file, $mode) { + if ( !$file->exists() ) { + throw new BuildException("The file " . $file->__toString() . " does not exist"); + } + + try { + $file->setMode($mode); + if ($this->verbose) { + $this->log("Changed file mode on '" . $file->__toString() ."' to " . vsprintf("%o", $mode)); + } + } catch (Exception $e) { + if($this->failonerror) { + throw $e; + } else { + $this->log($e->getMessage(), $this->quiet ? Project::MSG_VERBOSE : Project::MSG_WARN); + } + } + } + +} + + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/ChownTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/ChownTask.php.svn-base new file mode 100644 index 0000000..df8ab25 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/ChownTask.php.svn-base @@ -0,0 +1,195 @@ +. + */ + +require_once 'phing/Task.php'; +include_once 'phing/types/FileSet.php'; + +/** + * Task that changes the permissions on a file/directory. + * + * @author Mehmet Emre Yilmaz + * @version $Revision$ + * @package phing.tasks.system + */ +class ChownTask extends Task { + + private $file; + + private $user; + + private $filesets = array(); + + private $filesystem; + + private $quiet = false; + private $failonerror = true; + private $verbose = true; + + /** + * This flag means 'note errors to the output, but keep going' + * @see setQuiet() + */ + function setFailonerror($bool) { + $this->failonerror = $bool; + } + + /** + * Set quiet mode, which suppresses warnings if chown() fails. + * @see setFailonerror() + */ + function setQuiet($bool) { + $this->quiet = $bool; + if ($this->quiet) { + $this->failonerror = false; + } + } + + /** + * Set verbosity, which if set to false surpresses all but an overview + * of what happened. + */ + function setVerbose($bool) { + $this->verbose = (bool)$bool; + } + + /** + * Sets a single source file to touch. If the file does not exist + * an empty file will be created. + */ + function setFile(PhingFile $file) { + $this->file = $file; + } + + function setUser($str) { + $this->user = $str; + } + + /** + * Nested creator, adds a set of files (nested fileset attribute). + */ + function createFileSet() { + $num = array_push($this->filesets, new FileSet()); + return $this->filesets[$num-1]; + } + + /** + * Execute the touch operation. + * @return void + */ + function main() { + // Check Parameters + $this->checkParams(); + $this->chown(); + } + + /** + * Ensure that correct parameters were passed in. + * @return void + */ + private function checkParams() { + + if ($this->file === null && empty($this->filesets)) { + throw new BuildException("Specify at least one source - a file or a fileset."); + } + + if ($this->user === null) { + throw new BuildException("You have to specify a user for chown."); + } + + // check for mode to be in the correct format + + + } + + /** + * Does the actual work. + * @return void + */ + private function chown() { + + $user= $this->user; + + // counters for non-verbose output + $total_files = 0; + $total_dirs = 0; + + // one file + if ($this->file !== null) { + $total_files = 1; + $this->chownFile($this->file, $user); + } + + // filesets + foreach($this->filesets as $fs) { + + $ds = $fs->getDirectoryScanner($this->project); + $fromDir = $fs->getDir($this->project); + + $srcFiles = $ds->getIncludedFiles(); + $srcDirs = $ds->getIncludedDirectories(); + + $filecount = count($srcFiles); + $total_files = $total_files + $filecount; + for ($j = 0; $j < $filecount; $j++) { + $this->chownFile(new PhingFile($fromDir, $srcFiles[$j]), $user); + } + + $dircount = count($srcDirs); + $total_dirs = $total_dirs + $dircount; + for ($j = 0; $j < $dircount; $j++) { + $this->chownFile(new PhingFile($fromDir, $srcDirs[$j]), $user); + } + } + + if (!$this->verbose) { + $this->log('Total files changed to ' . vsprintf('%o', $mode) . ': ' . $total_files); + $this->log('Total directories changed to ' . vsprintf('%o', $mode) . ': ' . $total_dirs); + } + + } + + /** + * Actually change the mode for the file. + * @param PhingFile $file + * @param int $mode + */ + private function chownFile(PhingFile $file, $user) { + if ( !$file->exists() ) { + throw new BuildException("The file " . $file->__toString() . " does not exist"); + } + + try { + $file->setUser($user); + if ($this->verbose) { + $this->log("Changed file owner on '" . $file->__toString() ."' to " . $user); + } + } catch (Exception $e) { + if($this->failonerror) { + throw $e; + } else { + $this->log($e->getMessage(), $this->quiet ? Project::MSG_VERBOSE : Project::MSG_WARN); + } + } + } + +} + + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/ConditionTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/ConditionTask.php.svn-base new file mode 100644 index 0000000..1f3ee39 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/ConditionTask.php.svn-base @@ -0,0 +1,74 @@ +. +*/ + +require_once 'phing/tasks/system/condition/ConditionBase.php'; + +/** + * task as a generalization of + * + *

    This task supports boolean logic as well as pluggable conditions + * to decide, whether a property should be set.

    + * + *

    This task does not extend Task to take advantage of + * ConditionBase.

    + * + * @author Andreas Aderhold + * @copyright © 2001,2002 THYRELL. All rights reserved + * @version $Revision: 1.7 $ $Date$ + * @access public + * @package phing.tasks.system + */ +class ConditionTask extends ConditionBase { + + private $property; + private $value = "true"; + + /** + * The name of the property to set. Required. + */ + function setProperty($p) { + $this->property = $p; + } + + /** + * The value for the property to set. Defaults to "true". + */ + function setValue($v) { + $this->value = $v; + } + + /** + * See whether our nested condition holds and set the property. + */ + function main() { + + if ($this->countConditions() > 1) { + throw new BuildException("You must not nest more than one condition into "); + } + if ($this->countConditions() < 1) { + throw new BuildException("You must nest a condition into "); + } + $cs = $this->getIterator(); + if ($cs->current()->evaluate()) { + $this->project->setProperty($this->property, $this->value); + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/CopyTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/CopyTask.php.svn-base new file mode 100644 index 0000000..725db70 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/CopyTask.php.svn-base @@ -0,0 +1,408 @@ +. + */ + +require_once 'phing/Task.php'; +include_once 'phing/system/io/PhingFile.php'; +include_once 'phing/util/FileUtils.php'; +include_once 'phing/util/SourceFileScanner.php'; +include_once 'phing/mappers/IdentityMapper.php'; +include_once 'phing/mappers/FlattenMapper.php'; + +/** + * A phing copy task. Copies a file or directory to a new file + * or directory. Files are only copied if the source file is newer + * than the destination file, or when the destination file does not + * exist. It is possible to explictly overwrite existing files. + * + * @author Andreas Aderhold, andi@binarycloud.com + * @version $Revision: 1.16 $ $Date$ + * @package phing.tasks.system + */ +class CopyTask extends Task { + + protected $file = null; // the source file (from xml attribute) + protected $destFile = null; // the destiantion file (from xml attribute) + protected $destDir = null; // the destination dir (from xml attribute) + protected $overwrite = false; // overwrite destination (from xml attribute) + protected $preserveLMT = true; // sync timestamps (from xml attribute) + protected $includeEmpty = true; // include empty dirs? (from XML) + protected $flatten = false; // apply the FlattenMapper right way (from XML) + protected $mapperElement = null; + + protected $fileCopyMap = array(); // asoc array containing mapped file names + protected $dirCopyMap = array(); // asoc array containing mapped file names + protected $completeDirMap= array(); // asoc array containing complete dir names + protected $fileUtils = null; // a instance of fileutils + protected $filesets = array(); // all fileset objects assigned to this task + protected $filterChains = array(); // all filterchains objects assigned to this task + + protected $verbosity = Project::MSG_VERBOSE; + + /** + * Sets up this object internal stuff. i.e. the Fileutils instance + * + * @return object The CopyTask instnace + * @access public + */ + function __construct() { + $this->fileUtils = new FileUtils(); + } + + /** + * Set the overwrite flag. IntrospectionHelper takes care of + * booleans in set* methods so we can assume that the right + * value (boolean primitive) is coming in here. + * + * @param boolean Overwrite the destination file(s) if it/they already exist + * @return void + * @access public + */ + function setOverwrite($bool) { + $this->overwrite = (boolean) $bool; + } + + /** + * Used to force listing of all names of copied files. + * @param boolean $verbosity + */ + function setVerbose($verbosity) { + if ($verbosity) { + $this->verbosity = Project::MSG_INFO; + } else { + $this->verbosity = Project::MSG_VERBOSE; + } + } + + /** + * Set the preserve timestmap flag. IntrospectionHelper takes care of + * booleans in set* methods so we can assume that the right + * value (boolean primitive) is coming in here. + * + * @param boolean Preserve the timestamp on the destination file + * @return void + * @access public + */ + function setTstamp($bool) { + $this->preserveLMT = (boolean) $bool; + } + + + /** + * Set the include empty dirs flag. IntrospectionHelper takes care of + * booleans in set* methods so we can assume that the right + * value (boolean primitive) is coming in here. + * + * @param boolean Flag if empty dirs should be cpoied too + * @return void + * @access public + */ + function setIncludeEmptyDirs($bool) { + $this->includeEmpty = (boolean) $bool; + } + + + /** + * Set the file. We have to manually take care of the + * type that is coming due to limited type support in php + * in and convert it manually if neccessary. + * + * @param string/object The source file. Either a string or an PhingFile object + * @return void + * @access public + */ + function setFile(PhingFile $file) { + $this->file = $file; + } + + + /** + * Set the toFile. We have to manually take care of the + * type that is coming due to limited type support in php + * in and convert it manually if neccessary. + * + * @param string/object The dest file. Either a string or an PhingFile object + * @return void + * @access public + */ + function setTofile(PhingFile $file) { + $this->destFile = $file; + } + + + /** + * Set the toDir. We have to manually take care of the + * type that is coming due to limited type support in php + * in and convert it manually if neccessary. + * + * @param string/object The directory, either a string or an PhingFile object + * @return void + * @access public + */ + function setTodir(PhingFile $dir) { + $this->destDir = $dir; + } + + /** + * Nested creator, creates a FileSet for this task + * + * @access public + * @return object The created fileset object + */ + function createFileSet() { + $num = array_push($this->filesets, new FileSet()); + return $this->filesets[$num-1]; + } + + /** + * Creates a filterchain + * + * @access public + * @return object The created filterchain object + */ + function createFilterChain() { + $num = array_push($this->filterChains, new FilterChain($this->project)); + return $this->filterChains[$num-1]; + } + + /** + * Nested creator, creates one Mapper for this task + * + * @access public + * @return object The created Mapper type object + * @throws BuildException + */ + function createMapper() { + if ($this->mapperElement !== null) { + throw new BuildException("Cannot define more than one mapper", $this->location); + } + $this->mapperElement = new Mapper($this->project); + return $this->mapperElement; + } + + /** + * The main entry point where everything gets in motion. + * + * @access public + * @return true on success + * @throws BuildException + */ + function main() { + + $this->validateAttributes(); + + if ($this->file !== null) { + if ($this->file->exists()) { + if ($this->destFile === null) { + $this->destFile = new PhingFile($this->destDir, (string) $this->file->getName()); + } + if ($this->overwrite === true || ($this->file->lastModified() > $this->destFile->lastModified())) { + $this->fileCopyMap[$this->file->getAbsolutePath()] = $this->destFile->getAbsolutePath(); + } else { + $this->log($this->file->getName()." omitted, is up to date"); + } + } else { + // terminate build + throw new BuildException("Could not find file " . $this->file->__toString() . " to copy."); + } + } + + $project = $this->getProject(); + + // process filesets + foreach($this->filesets as $fs) { + $ds = $fs->getDirectoryScanner($project); + $fromDir = $fs->getDir($project); + $srcFiles = $ds->getIncludedFiles(); + $srcDirs = $ds->getIncludedDirectories(); + + if (!$this->flatten && $this->mapperElement === null) + { + $this->completeDirMap[$fromDir->getAbsolutePath()] = $this->destDir->getAbsolutePath(); + } + + $this->_scan($fromDir, $this->destDir, $srcFiles, $srcDirs); + } + + // go and copy the stuff + $this->doWork(); + + if ($this->destFile !== null) { + $this->destDir = null; + } + } + + /** + * Validates attributes coming in from XML + * + * @access private + * @return void + * @throws BuildException + */ + protected function validateAttributes() { + + if ($this->file === null && count($this->filesets) === 0) { + throw new BuildException("CopyTask. Specify at least one source - a file or a fileset."); + } + + if ($this->destFile !== null && $this->destDir !== null) { + throw new BuildException("Only one of destfile and destdir may be set."); + } + + if ($this->destFile === null && $this->destDir === null) { + throw new BuildException("One of destfile or destdir must be set."); + } + + if ($this->file !== null && $this->file->exists() && $this->file->isDirectory()) { + throw new BuildException("Use a fileset to copy directories."); + } + + if ($this->destFile !== null && count($this->filesets) > 0) { + throw new BuildException("Cannot concatenate multple files into a single file."); + } + + if ($this->destFile !== null) { + $this->destDir = new PhingFile($this->destFile->getParent()); + } + } + + /** + * Compares source files to destination files to see if they + * should be copied. + * + * @access private + * @return void + */ + private function _scan(&$fromDir, &$toDir, &$files, &$dirs) { + /* mappers should be generic, so we get the mappers here and + pass them on to builMap. This method is not redundan like it seems */ + $mapper = null; + if ($this->mapperElement !== null) { + $mapper = $this->mapperElement->getImplementation(); + } else if ($this->flatten) { + $mapper = new FlattenMapper(); + } else { + $mapper = new IdentityMapper(); + } + $this->buildMap($fromDir, $toDir, $files, $mapper, $this->fileCopyMap); + $this->buildMap($fromDir, $toDir, $dirs, $mapper, $this->dirCopyMap); + } + + /** + * Builds a map of filenames (from->to) that should be copied + * + * @access private + * @return void + */ + private function buildMap(&$fromDir, &$toDir, &$names, &$mapper, &$map) { + $toCopy = null; + if ($this->overwrite) { + $v = array(); + foreach($names as $name) { + $result = $mapper->main($name); + if ($result !== null) { + $v[] = $name; + } + } + $toCopy = $v; + } else { + $ds = new SourceFileScanner($this); + $toCopy = $ds->restrict($names, $fromDir, $toDir, $mapper); + } + + for ($i=0,$_i=count($toCopy); $i < $_i; $i++) { + $src = new PhingFile($fromDir, $toCopy[$i]); + $mapped = $mapper->main($toCopy[$i]); + $dest = new PhingFile($toDir, $mapped[0]); + $map[$src->getAbsolutePath()] = $dest->getAbsolutePath(); + } + } + + + /** + * Actually copies the files + * + * @access private + * @return void + * @throws BuildException + */ + protected function doWork() { + + // These "slots" allow filters to retrieve information about the currently-being-process files + $fromSlot = $this->getRegisterSlot("currentFromFile"); + $fromBasenameSlot = $this->getRegisterSlot("currentFromFile.basename"); + + $toSlot = $this->getRegisterSlot("currentToFile"); + $toBasenameSlot = $this->getRegisterSlot("currentToFile.basename"); + + $mapSize = count($this->fileCopyMap); + $total = $mapSize; + if ($mapSize > 0) { + $this->log("Copying ".$mapSize." file".(($mapSize) === 1 ? '' : 's')." to ". $this->destDir->getAbsolutePath()); + // walks the map and actually copies the files + $count=0; + foreach($this->fileCopyMap as $from => $to) { + if ($from === $to) { + $this->log("Skipping self-copy of " . $from, $this->verbosity); + $total--; + continue; + } + $this->log("From ".$from." to ".$to, $this->verbosity); + try { // try to copy file + + $fromFile = new PhingFile($from); + $toFile = new PhingFile($to); + + $fromSlot->setValue($fromFile->getPath()); + $fromBasenameSlot->setValue($fromFile->getName()); + + $toSlot->setValue($toFile->getPath()); + $toBasenameSlot->setValue($toFile->getName()); + + $this->fileUtils->copyFile($fromFile, $toFile, $this->overwrite, $this->preserveLMT, $this->filterChains, $this->getProject()); + + $count++; + } catch (IOException $ioe) { + $this->log("Failed to copy " . $from . " to " . $to . ": " . $ioe->getMessage(), Project::MSG_ERR); + } + } + } + + // handle empty dirs if appropriate + if ($this->includeEmpty) { + $destdirs = array_values($this->dirCopyMap); + $count = 0; + foreach ($destdirs as $destdir) { + $d = new PhingFile((string) $destdir); + if (!$d->exists()) { + if (!$d->mkdirs()) { + $this->log("Unable to create directory " . $d->__toString(), Project::MSG_ERR); + } else { + $count++; + } + } + } + if ($count > 0) { + $this->log("Copied ".$count." empty director" . ($count == 1 ? "y" : "ies") . " to " . $this->destDir->getAbsolutePath()); + } + } + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/CvsPassTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/CvsPassTask.php.svn-base new file mode 100644 index 0000000..23e5f0e --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/CvsPassTask.php.svn-base @@ -0,0 +1,173 @@ +. + */ + +require_once 'phing/Task.php'; +include_once 'phing/system/io/BufferedReader.php'; +include_once 'phing/system/io/BufferedWriter.php'; +include_once 'phing/util/StringHelper.php'; + +/** + * Adds an new entry to a CVS password file. + * + * @author Hans Lellelid (Phing) + * @author Jeff Martin (Ant) + * @version $Revision: 1.7 $ + * @package phing.tasks.system + */ +class CVSPassTask extends Task { + + /** CVS Root */ + private $cvsRoot; + /** Password file to add password to */ + private $passFile; + /** Password to add to file */ + private $password; + + /** Array contain char conversion data */ + private static $shifts = array( + 0, 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, 28, 29, 30, 31, + 114, 120, 53, 79, 96, 109, 72, 108, 70, 64, 76, 67, 116, 74, 68, 87, + 111, 52, 75, 119, 49, 34, 82, 81, 95, 65, 112, 86, 118, 110, 122, 105, + 41, 57, 83, 43, 46, 102, 40, 89, 38, 103, 45, 50, 42, 123, 91, 35, + 125, 55, 54, 66, 124, 126, 59, 47, 92, 71, 115, 78, 88, 107, 106, 56, + 36, 121, 117, 104, 101, 100, 69, 73, 99, 63, 94, 93, 39, 37, 61, 48, + 58, 113, 32, 90, 44, 98, 60, 51, 33, 97, 62, 77, 84, 80, 85, 223, + 225, 216, 187, 166, 229, 189, 222, 188, 141, 249, 148, 200, 184, 136, 248, 190, + 199, 170, 181, 204, 138, 232, 218, 183, 255, 234, 220, 247, 213, 203, 226, 193, + 174, 172, 228, 252, 217, 201, 131, 230, 197, 211, 145, 238, 161, 179, 160, 212, + 207, 221, 254, 173, 202, 146, 224, 151, 140, 196, 205, 130, 135, 133, 143, 246, + 192, 159, 244, 239, 185, 168, 215, 144, 139, 165, 180, 157, 147, 186, 214, 176, + 227, 231, 219, 169, 175, 156, 206, 198, 129, 164, 150, 210, 154, 177, 134, 127, + 182, 128, 158, 208, 162, 132, 167, 209, 149, 241, 153, 251, 237, 236, 171, 195, + 243, 233, 253, 240, 194, 250, 191, 155, 142, 137, 245, 235, 163, 242, 178, 152 + ); + + /** + * Create a CVS task using the default cvspass file location. + */ + public function __construct() { + $this->passFile = new PhingFile( + Phing::getProperty("cygwin.user.home", + Phing::getProperty("user.home")) + . DIRECTORY_SEPARATOR . ".cvspass"); + } + + /** + * Does the work. + * + * @throws BuildException if someting goes wrong with the build + */ + public final function main() { + if ($this->cvsRoot === null) { + throw new BuildException("cvsroot is required"); + } + if ($this->password === null) { + throw new BuildException("password is required"); + } + + $this->log("cvsRoot: " . $this->cvsRoot, Project::MSG_DEBUG); + $this->log("password: " . $this->password, Project::MSG_DEBUG); + $this->log("passFile: " . $this->passFile->__toString(), Project::MSG_DEBUG); + + $reader = null; + $writer = null; + + try { + $buf = ""; + + if ($this->passFile->exists()) { + $reader = new BufferedReader(new FileReader($this->passFile)); + + $line = null; + while (($line = $reader->readLine()) !== null) { + if (!StringHelper::startsWith($this->cvsRoot, $line)) { + $buf .= $line . PHP_EOL; + } + } + } + + $pwdfile = $buf . $this->cvsRoot . " A" . $this->mangle($this->password); + + $this->log("Writing -> " . $pwdfile , Project::MSG_DEBUG); + + $writer = new BufferedWriter(new FileWriter($this->passFile)); + $writer->write($pwdfile); + $writer->newLine(); + + $writer->close(); + if ($reader) { + $reader->close(); + } + + } catch (IOException $e) { + if ($reader) { + try { + $reader->close(); + } catch (Exception $e) {} + } + + if ($writer) { + try { + $writer->close(); + } catch (Exception $e) {} + } + + throw new BuildException($e); + } + } + + /** + * "Encode" the password. + */ + private final function mangle($password){ + $buf = ""; + for ($i = 0, $plen = strlen($password); $i < $plen; $i++) { + $buf .= chr(self::$shifts[ord($password{$i})]); + } + return $buf; + } + + /** + * The CVS repository to add an entry for. + * @param string $cvsRoot + */ + public function setCvsroot($cvsRoot) { + $this->cvsRoot = $cvsRoot; + } + + /** + * Password file to add the entry to. + * @param PhingFile $passFile + */ + public function setPassfile(PhingFile $passFile) { + $this->passFile = $passFile; + } + + /** + * Password to be added to the password file. + * @param string $password + */ + public function setPassword($password) { + $this->password = $password; + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/CvsTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/CvsTask.php.svn-base new file mode 100644 index 0000000..ef2fcd6 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/CvsTask.php.svn-base @@ -0,0 +1,540 @@ +. + */ + +require_once 'phing/Task.php'; +include_once 'phing/tasks/system/ExecTask.php'; +include_once 'phing/types/Commandline.php'; + +/** + * Task for performing CVS operations. + * + * NOTE: This implementation has been moved here from Cvs.java with + * the addition of some accessors for extensibility. Another task + * can extend this with some customized output processing. + * + * @author Hans Lellelid (Phing) + * @author costin@dnt.ro (Ant) + * @author stefano@apache.org (Ant) + * @author Wolfgang Werner (Ant) + * @author Kevin Ross (Ant) + * @version $Revision: 1.14 $ + * @package phing.tasks.system + */ +class CvsTask extends Task { + + /** + * Default compression level to use, if compression is enabled via + * setCompression( true ). + */ + const DEFAULT_COMPRESSION_LEVEL = 3; + + private $cmd; + + /** + * List of Commandline children + * @var array Commandline[] + */ + private $commandlines = array(); + + /** + * the CVSROOT variable. + */ + private $cvsRoot; + + /** + * the CVS_RSH variable. + */ + private $cvsRsh; + + /** + * the package/module to check out. + */ + private $cvsModule; + + /** + * the default command. + */ + private static $default_command = "checkout"; + + /** + * the CVS command to execute. + */ + private $command = null; + + /** + * suppress information messages. + */ + private $quiet = false; + + /** + * compression level to use. + */ + private $compression = 0; + + /** + * report only, don't change any files. + */ + private $noexec = false; + + /** + * CVS port + */ + private $port = 0; + + /** + * CVS password file + * @var File + */ + private $passFile = null; + + /** + * the directory where the checked out files should be placed. + * @var File + */ + private $dest; + + private $error; + + private $output; + + /** + * If true it will stop the build if cvs exits with error. + * Default is false. (Iulian) + * @var boolean + */ + private $failOnError = false; + + public function init() { + $this->cmd = new Commandline(); + } + + /** + * Sets up the environment for toExecute and then runs it. + * @param Commandline $toExecute + * @throws BuildException + */ + protected function runCommand(Commandline $toExecute) { + + // We are putting variables into the script's environment + // and not removing them (!) This should be fine, but is + // worth remembering and testing. + + if ($this->port > 0) { + putenv("CVS_CLIENT_PORT=".$this->port); + } + + // Need a better cross platform integration with , so + // use the same filename. + + if ($this->passFile === null) { + $defaultPassFile = new PhingFile(Phing::getProperty("cygwin.user.home", Phing::getProperty("user.home")) + . DIRECTORY_SEPARATOR . ".cvspass"); + if($defaultPassFile->exists()) { + $this->setPassfile($defaultPassFile); + } + } + + if ($this->passFile !== null) { + if ($this->passFile->isFile() && $this->passFile->canRead()) { + putenv("CVS_PASSFILE=" . $this->passFile->__toString()); + $this->log("Using cvs passfile: " . $this->passFile->__toString(), Project::MSG_INFO); + } elseif (!$this->passFile->canRead()) { + $this->log("cvs passfile: " . $this->passFile->__toString() + . " ignored as it is not readable", Project::MSG_WARN); + } else { + $this->log("cvs passfile: " . $this->passFile->__toString() + . " ignored as it is not a file", + Project::MSG_WARN); + } + } + + if ($this->cvsRsh !== null) { + putenv("CVS_RSH=".$this->cvsRsh); + } + + // Use the ExecTask to handle execution of the command + $exe = new ExecTask($this->project); + $exe->setProject($this->project); + + //exe.setAntRun(project); + if ($this->dest === null) { + $this->dest = $this->project->getBaseDir(); + } + + if (!$this->dest->exists()) { + $this->dest->mkdirs(); + } + + if ($this->output !== null) { + $exe->setOutput($this->output); + } + + if ($this->error !== null) { + $exe->setError($this->error); + } + + $exe->setDir($this->dest); + + if (is_object($toExecute)) { + $toExecuteStr = $toExecute->__toString(); // unfortunately no more automagic for initial 5.0.0 release :( + } + + $exe->setCommand($toExecuteStr); + + try { + $actualCommandLine = $toExecuteStr; // we converted to string above + $this->log($actualCommandLine, Project::MSG_INFO); + $retCode = $exe->execute(); + $this->log("retCode=" . $retCode, Project::MSG_DEBUG); + /*Throw an exception if cvs exited with error. (Iulian)*/ + if ($this->failOnError && $retCode !== 0) { + throw new BuildException("cvs exited with error code " + . $retCode + . PHP_EOL + . "Command line was [" + . $toExecute->describeCommand() . "]", $this->getLocation()); + } + } catch (IOException $e) { + if ($this->failOnError) { + throw new BuildException($e, $this->getLocation()); + } else { + $this->log("Caught exception: " . $e, Project::MSG_WARN); + } + } catch (BuildException $e) { + if ($this->failOnError) { + throw $e; + } else { + $t = $e->getCause(); + if ($t === null) { + $t = $e; + } + $this->log("Caught exception: " . $t, Project::MSG_WARN); + } + } catch (Exception $e) { + if ($this->failOnError) { + throw new BuildException($e, $this->getLocation()); + } else { + $this->log("Caught exception: " . $e, Project::MSG_WARN); + } + } + } + + /** + * + * @return void + * @throws BuildException + */ + public function main() { + + $savedCommand = $this->getCommand(); + + if ($this->getCommand() === null && empty($this->commandlines)) { + // re-implement legacy behaviour: + $this->setCommand(self::$default_command); + } + + $c = $this->getCommand(); + $cloned = null; + if ($c !== null) { + $cloned = $this->cmd->__copy(); + $cloned->createArgument(true)->setLine($c); + $this->addConfiguredCommandline($cloned, true); + } + + try { + for ($i = 0, $vecsize=count($this->commandlines); $i < $vecsize; $i++) { + $this->runCommand($this->commandlines[$i]); + } + + // finally { + if ($cloned !== null) { + $this->removeCommandline($cloned); + } + $this->setCommand($savedCommand); + + } catch (Exception $e) { + // finally { + if ($cloned !== null) { + $this->removeCommandline($cloned); + } + $this->setCommand($savedCommand); + throw $e; + } + } + + /** + * The CVSROOT variable. + * + * @param string $root + */ + public function setCvsRoot($root) { + + // Check if not real cvsroot => set it to null + if ($root !== null) { + if (trim($root) == "") { + $root = null; + } + } + + $this->cvsRoot = $root; + } + + public function getCvsRoot() { + return $this->cvsRoot; + } + + /** + * The CVS_RSH variable. + * + * @param rsh + */ + public function setCvsRsh($rsh) { + // Check if not real cvsrsh => set it to null + if ($rsh !== null) { + if (trim($rsh) == "") { + $rsh = null; + } + } + + $this->cvsRsh = $rsh; + } + + public function getCvsRsh() { + return $this->cvsRsh; + } + + /** + * Port used by CVS to communicate with the server. + * + * @param int $port + */ + public function setPort($port){ + $this->port = $port; + } + + /** + * @return int + */ + public function getPort() { + return $this->port; + } + + /** + * Password file to read passwords from. + * + * @param passFile + */ + public function setPassfile(PhingFile $passFile) { + $this->passFile = $passFile; + } + + /** + * @return File + */ + public function getPassFile() { + return $this->passFile; + } + + /** + * The directory where the checked out files should be placed. + * + * @param PhingFile $dest + */ + public function setDest(PhingFile $dest) { + $this->dest = $dest; + } + + public function getDest() { + return $this->dest; + } + + /** + * The package/module to operate upon. + * + * @param string $p + */ + public function setModule($m) { + $this->cvsModule = $m; + } + + public function getModule(){ + return $this->cvsModule; + } + + /** + * The tag of the package/module to operate upon. + * @param string $p + */ + public function setTag($p) { + // Check if not real tag => set it to null + if ($p !== null && trim($p) !== "") { + $this->appendCommandArgument("-r"); + $this->appendCommandArgument($p); + } + } + + /** + * This needs to be public to allow configuration + * of commands externally. + */ + public function appendCommandArgument($arg) { + $this->cmd->createArgument()->setValue($arg); + } + + /** + * Use the most recent revision no later than the given date. + * @param p + */ + public function setDate($p) { + if ($p !== null && trim($p) !== "") { + $this->appendCommandArgument("-D"); + $this->appendCommandArgument($p); + } + } + + /** + * The CVS command to execute. + * @param string $c + */ + public function setCommand($c) { + $this->command = $c; + } + + public function getCommand() { + return $this->command; + } + + /** + * If true, suppress informational messages. + * @param boolean $q + */ + public function setQuiet($q) { + $this->quiet = $q; + } + + /** + * If true, report only and don't change any files. + * + * @param boolean $ne + */ + public function setNoexec($ne) { + $this->noexec = (boolean) $ne; + } + + /** + * Stop the build process if the command exits with + * a return code other than 0. + * Defaults to false. + * @param boolean $failOnError + */ + public function setFailOnError($failOnError) { + $this->failOnError = (boolean) $failOnError; + } + + /** + * Configure a commandline element for things like cvsRoot, quiet, etc. + * @return string + */ + protected function configureCommandline($c) { + if ($c === null) { + return; + } + $c->setExecutable("cvs"); + + if ($this->cvsModule !== null) { + $c->createArgument()->setLine($this->cvsModule); + } + if ($this->compression > 0 && $this->compression < 10) { + $c->createArgument(true)->setValue("-z" . $this->compression); + } + if ($this->quiet) { + $c->createArgument(true)->setValue("-q"); + } + if ($this->noexec) { + $c->createArgument(true)->setValue("-n"); + } + if ($this->cvsRoot !== null) { + $c->createArgument(true)->setLine("-d" . $this->cvsRoot); + } + } + + protected function removeCommandline(Commandline $c) { + $idx = array_search($c, $this->commandlines, true); + if ($idx === false) { + return false; + } + $this->commandlines = array_splice($this->commandlines, $idx, 1); + return true; + } + + /** + * Configures and adds the given Commandline. + * @param insertAtStart If true, c is + */ + public function addConfiguredCommandline(Commandline $c, $insertAtStart = false) { + if ($c === null) { + return; + } + $this->configureCommandline($c); + if ($insertAtStart) { + array_unshift($this->commandlines, $c); + } else { + array_push($this->commandlines, $c); + } + } + + /** + * If set to a value 1-9 it adds -zN to the cvs command line, else + * it disables compression. + * @param int $level + */ + public function setCompressionLevel($level) { + $this->compression = $level; + } + + /** + * If true, this is the same as compressionlevel="3". + * + * @param boolean $usecomp If true, turns on compression using default + * level, AbstractCvsTask.DEFAULT_COMPRESSION_LEVEL. + */ + public function setCompression($usecomp) { + $this->setCompressionLevel($usecomp ? + self::DEFAULT_COMPRESSION_LEVEL : 0); + } + + /** + * File to which output should be written. + * @param PhingFile $output + */ + function setOutput(PhingFile $f) { + $this->output = $f; + } + + /** + * File to which error output should be written. + * @param PhingFile $output + */ + function setError(PhingFile $f) { + $this->error = $f; + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/DeleteTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/DeleteTask.php.svn-base new file mode 100644 index 0000000..3c20f48 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/DeleteTask.php.svn-base @@ -0,0 +1,277 @@ +. + */ + +require_once 'phing/Task.php'; + +/** + * Deletes a file or directory, or set of files defined by a fileset. + * + * @version $Revision: 1.13 $ + * @package phing.tasks.system + */ +class DeleteTask extends Task { + + protected $file; + protected $dir; + protected $filesets = array(); + protected $includeEmpty = false; + + protected $quiet = false; + protected $failonerror = true; + protected $verbosity = Project::MSG_VERBOSE; + + /** Any filelists of files that should be deleted. */ + private $filelists = array(); + + /** + * Set the name of a single file to be removed. + * @param PhingFile $file + */ + function setFile(PhingFile $file) { + $this->file = $file; + } + + /** + * Set the directory from which files are to be deleted. + * @param PhingFile $dir + */ + function setDir(PhingFile $dir) { + $this->dir = $dir; + } + + /** + * Used to force listing of all names of deleted files. + * @param boolean $verbosity + */ + function setVerbose($verbosity) { + if ($verbosity) { + $this->verbosity = Project::MSG_INFO; + } else { + $this->verbosity = Project::MSG_VERBOSE; + } + } + + /** + * If the file does not exist, do not display a diagnostic + * message or modify the exit status to reflect an error. + * This means that if a file or directory cannot be deleted, + * then no error is reported. This setting emulates the + * -f option to the Unix rm command. Default is false + * meaning things are verbose + */ + function setQuiet($bool) { + $this->quiet = $bool; + if ($this->quiet) { + $this->failonerror = false; + } + } + + /** this flag means 'note errors to the output, but keep going' */ + function setFailOnError($bool) { + $this->failonerror = $bool; + } + + + /** Used to delete empty directories.*/ + function setIncludeEmptyDirs($includeEmpty) { + $this->includeEmpty = (boolean) $includeEmpty; + } + + /** Nested creator, adds a set of files (nested fileset attribute). */ + function createFileSet() { + $num = array_push($this->filesets, new FileSet()); + return $this->filesets[$num-1]; + } + + /** Nested creator, adds a set of files (nested fileset attribute). */ + function createFileList() { + $num = array_push($this->filelists, new FileList()); + return $this->filelists[$num-1]; + } + + /** Delete the file(s). */ + function main() { + if ($this->file === null && $this->dir === null && count($this->filesets) === 0 && count($this->filelists) === 0) { + throw new BuildException("At least one of the file or dir attributes, or a fileset element, or a filelist element must be set."); + } + + if ($this->quiet && $this->failonerror) { + throw new BuildException("quiet and failonerror cannot both be set to true", $this->location); + } + + // delete a single file + if ($this->file !== null) { + if ($this->file->exists()) { + if ($this->file->isDirectory()) { + $this->log("Directory " . $this->file->__toString() . " cannot be removed using the file attribute. Use dir instead."); + } else { + $this->log("Deleting: " . $this->file->__toString()); + try { + $this->file->delete(); + } catch(Exception $e) { + $message = "Unable to delete file " . $this->file->__toString() .": " .$e->getMessage(); + if($this->failonerror) { + throw new BuildException($message); + } else { + $this->log($message, $this->quiet ? Project::MSG_VERBOSE : Project::MSG_WARN); + } + } + } + } else { + $this->log("Could not find file " . $this->file->getAbsolutePath() . " to delete.",Project::MSG_VERBOSE); + } + } + + // delete the directory + if ($this->dir !== null && $this->dir->exists() && $this->dir->isDirectory()) { + if ($this->verbosity === Project::MSG_VERBOSE) { + $this->log("Deleting directory " . $this->dir->__toString()); + } + $this->removeDir($this->dir); + } + + // delete the files in the filelists + foreach($this->filelists as $fl) { + try { + $files = $fl->getFiles($this->project); + $this->removeFiles($fl->getDir($this->project), $files, $empty=array()); + } catch (BuildException $be) { + // directory doesn't exist or is not readable + if ($this->failonerror) { + throw $be; + } else { + $this->log($be->getMessage(), $this->quiet ? Project::MSG_VERBOSE : Project::MSG_WARN); + } + } + } + + // delete the files in the filesets + foreach($this->filesets as $fs) { + try { + $ds = $fs->getDirectoryScanner($this->project); + $files = $ds->getIncludedFiles(); + $dirs = $ds->getIncludedDirectories(); + $this->removeFiles($fs->getDir($this->project), $files, $dirs); + } catch (BuildException $be) { + // directory doesn't exist or is not readable + if ($this->failonerror) { + throw $be; + } else { + $this->log($be->getMessage(), $this->quiet ? Project::MSG_VERBOSE : Project::MSG_WARN); + } + } + } + } + + /** + * Recursively removes a directory. + * @param PhingFile $d The directory to remove. + */ + private function removeDir($d) { + $list = $d->listDir(); + if ($list === null) { + $list = array(); + } + + foreach($list as $s) { + $f = new PhingFile($d, $s); + if ($f->isDirectory()) { + $this->removeDir($f); + } else { + $this->log("Deleting " . $f->__toString(), $this->verbosity); + try { + $f->delete(); + } catch (Exception $e) { + $message = "Unable to delete file " . $f->__toString() . ": " . $e->getMessage(); + if($this->failonerror) { + throw new BuildException($message); + } else { + $this->log($message, $this->quiet ? Project::MSG_VERBOSE : Project::MSG_WARN); + } + } + } + } + $this->log("Deleting directory " . $d->getAbsolutePath(), $this->verbosity); + try { + $d->delete(); + } catch (Exception $e) { + $message = "Unable to delete directory " . $d->__toString() . ": " . $e->getMessage(); + if($this->failonerror) { + throw new BuildException($message); + } else { + $this->log($message, $this->quiet ? Project::MSG_VERBOSE : Project::MSG_WARN); + } + } + } + + /** + * remove an array of files in a directory, and a list of subdirectories + * which will only be deleted if 'includeEmpty' is true + * @param PhingFile $d directory to work from + * @param array &$files array of files to delete; can be of zero length + * @param array &$dirs array of directories to delete; can of zero length + */ + private function removeFiles(PhingFile $d, &$files, &$dirs) { + if (count($files) > 0) { + $this->log("Deleting " . count($files) . " files from " . $d->__toString()); + for ($j=0,$_j=count($files); $j < $_j; $j++) { + $f = new PhingFile($d, $files[$j]); + $this->log("Deleting " . $f->getAbsolutePath(), $this->verbosity); + try { + $f->delete(); + } catch (Exception $e) { + $message = "Unable to delete file " . $f->__toString() . ": " . $e->getMessage(); + if($this->failonerror) { + throw new BuildException($message); + } else { + $this->log($message, $this->quiet ? Project::MSG_VERBOSE : Project::MSG_WARN); + } + } + + } + } + + if (count($dirs) > 0 && $this->includeEmpty) { + $dirCount = 0; + for ($j=count($dirs)-1; $j>=0; --$j) { + $dir = new PhingFile($d, $dirs[$j]); + $dirFiles = $dir->listDir(); + if ($dirFiles === null || count($dirFiles) === 0) { + $this->log("Deleting " . $dir->__toString(), $this->verbosity); + try { + $dir->delete(); + $dirCount++; + } catch (Exception $e) { + $message="Unable to delete directory " . $dir->__toString(); + if($this->failonerror) { + throw new BuildException($message); + } else { + $this->log($message, $this->quiet ? Project::MSG_VERBOSE : Project::MSG_WARN); + } + } + } + } + if ($dirCount > 0) { + $this->log("Deleted $dirCount director" . ($dirCount==1 ? "y" : "ies") . " from " . $d->__toString()); + } + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/EchoTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/EchoTask.php.svn-base new file mode 100644 index 0000000..de78492 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/EchoTask.php.svn-base @@ -0,0 +1,107 @@ +. + */ + +include_once 'phing/Task.php'; + +/** + * Echos a message to the logging system or to a file + * + * @author Michiel Rook + * @author Andreas Aderhold, andi@binarycloud.com + * @version $Revision: 1.5 $ $Date$ + * @package phing.tasks.system + */ + +class EchoTask extends Task { + + protected $msg = ""; + + protected $file = ""; + + protected $append = false; + + protected $level = "info"; + + function main() { + switch ($this->level) + { + case "error": $loglevel = Project::MSG_ERR; break; + case "warning": $loglevel = Project::MSG_WARN; break; + case "info": $loglevel = Project::MSG_INFO; break; + case "verbose": $loglevel = Project::MSG_VERBOSE; break; + case "debug": $loglevel = Project::MSG_DEBUG; break; + } + + if (empty($this->file)) + { + $this->log($this->msg, $loglevel); + } + else + { + if ($this->append) + { + $handle = fopen($this->file, "a"); + } + else + { + $handle = fopen($this->file, "w"); + } + + fwrite($handle, $this->msg); + + fclose($handle); + } + } + + /** setter for file */ + function setFile($file) + { + $this->file = (string) $file; + } + + /** setter for level */ + function setLevel($level) + { + $this->level = (string) $level; + } + + /** setter for append */ + function setAppend($append) + { + $this->append = $append; + } + + /** setter for message */ + function setMsg($msg) { + $this->setMessage($msg); + } + + /** alias setter */ + function setMessage($msg) { + $this->msg = (string) $msg; + } + + /** Supporting the Message syntax. */ + function addText($msg) + { + $this->msg = (string) $msg; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/ExecTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/ExecTask.php.svn-base new file mode 100644 index 0000000..bb1eb0f --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/ExecTask.php.svn-base @@ -0,0 +1,266 @@ +. + */ + +require_once 'phing/Task.php'; + +/** + * Executes a command on the shell. + * + * @author Andreas Aderhold + * @author Hans Lellelid + * @version $Revision: 1.17 $ + * @package phing.tasks.system + */ +class ExecTask extends Task { + + /** + * Command to execute. + * @var string + */ + protected $command; + + /** + * Working directory. + * @var File + */ + protected $dir; + + /** + * Operating system. + * @var string + */ + protected $os; + + /** + * Whether to escape shell command using escapeshellcmd(). + * @var boolean + */ + protected $escape = false; + + /** + * Where to direct output. + * @var File + */ + protected $output; + + /** + * Whether to passthru the output + * @var boolean + */ + protected $passthru = false; + + /** + * Where to direct error output. + * @var File + */ + protected $error; + + /** + * If spawn is set then [unix] programs will redirect stdout and add '&'. + * @var boolean + */ + protected $spawn = false; + + /** + * Property name to set with return value from exec call. + * + * @var string + */ + protected $returnProperty; + + /** + * Whether to check the return code. + * @var boolean + */ + protected $checkreturn = false; + + /** + * Main method: wraps execute() command. + * @return void + */ + public function main() { + $this->execute(); + } + + /** + * Executes a program and returns the return code. + * Output from command is logged at INFO level. + * @return int Return code from execution. + */ + public function execute() { + + // test if os match + $myos = Phing::getProperty("os.name"); + $this->log("Myos = " . $myos, Project::MSG_VERBOSE); + if (($this->os !== null) && (strpos($this->os, $myos) === false)) { + // this command will be executed only on the specified OS + $this->log("Not found in " . $this->os, Project::MSG_VERBOSE); + return 0; + } + + if ($this->dir !== null) { + if ($this->dir->isDirectory()) { + $currdir = getcwd(); + @chdir($this->dir->getPath()); + } else { + throw new BuildException("Can't chdir to:" . $this->dir->__toString()); + } + } + + + if ($this->escape == true) { + // FIXME - figure out whether this is correct behavior + $this->command = escapeshellcmd($this->command); + } + + if ($this->error !== null) { + $this->command .= ' 2> ' . $this->error->getPath(); + $this->log("Writing error output to: " . $this->error->getPath()); + } + + if ($this->output !== null) { + $this->command .= ' 1> ' . $this->output->getPath(); + $this->log("Writing standard output to: " . $this->output->getPath()); + } elseif ($this->spawn) { + $this->command .= ' 1>/dev/null'; + $this->log("Sending ouptut to /dev/null"); + } + + // If neither output nor error are being written to file + // then we'll redirect error to stdout so that we can dump + // it to screen below. + + if ($this->output === null && $this->error === null) { + $this->command .= ' 2>&1'; + } + + // we ignore the spawn boolean for windows + if ($this->spawn) { + $this->command .= ' &'; + } + + $this->log("Executing command: " . $this->command); + + $output = array(); + $return = null; + exec($this->command, $output, $return); + + if ($this->dir !== null) { + @chdir($currdir); + } + + foreach($output as $line) { + $this->log($line, ($this->passthru ? Project::MSG_INFO : Project::MSG_VERBOSE)); + } + + if ($this->returnProperty) { + $this->project->setProperty($this->returnProperty, $return); + } + + if($return != 0 && $this->checkreturn) { + throw new BuildException("Task exited with code $return"); + } + + return $return; + } + + /** + * The command to use. + * @param mixed $command String or string-compatible (e.g. w/ __toString()). + */ + function setCommand($command) { + $this->command = "" . $command; + } + + /** + * Whether to use escapeshellcmd() to escape command. + * @param boolean $escape + */ + function setEscape($escape) { + $this->escape = (bool) $escape; + } + + /** + * Specify the working directory for executing this command. + * @param PhingFile $dir + */ + function setDir(PhingFile $dir) { + $this->dir = $dir; + } + + /** + * Specify OS (or muliple OS) that must match in order to execute this command. + * @param string $os + */ + function setOs($os) { + $this->os = (string) $os; + } + + /** + * File to which output should be written. + * @param PhingFile $output + */ + function setOutput(PhingFile $f) { + $this->output = $f; + } + + /** + * File to which error output should be written. + * @param PhingFile $output + */ + function setError(PhingFile $f) { + $this->error = $f; + } + + /** + * Whether to use passthru the output. + * @param boolean $passthru + */ + function setPassthru($passthru) { + $this->passthru = (bool) $passthru; + } + + /** + * Whether to suppress all output and run in the background. + * @param boolean $spawn + */ + function setSpawn($spawn) { + $this->spawn = (bool) $spawn; + } + + /** + * Whether to check the return code. + * @param boolean $checkreturn + */ + function setCheckreturn($checkreturn) { + $this->checkreturn = (bool) $checkreturn; + } + + /** + * The name of property to set to return value from exec() call. + * @param string $prop + */ + function setReturnProperty($prop) { + $this->returnProperty = $prop; + } +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/ExitTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/ExitTask.php.svn-base new file mode 100644 index 0000000..beed741 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/ExitTask.php.svn-base @@ -0,0 +1,118 @@ +. + */ + +require_once 'phing/Task.php'; + +/** + * Exits the active build, giving an additional message + * if available. + * + * @author Hans Lellelid (Phing) + * @author Nico Seessle (Ant) + * @version $Revision: 1.7 $ + * @package phing.tasks.system + */ +class ExitTask extends Task { + + private $message; + private $ifCondition; + private $unlessCondition; + + /** + * A message giving further information on why the build exited. + * + * @param string $value message to output + */ + public function setMsg($value) { + $this->setMessage($value); + } + + /** + * A message giving further information on why the build exited. + * + * @param value message to output + */ + public function setMessage($value) { + $this->message = $value; + } + + /** + * Only fail if a property of the given name exists in the current project. + * @param c property name + */ + public function setIf($c) { + $this->ifCondition = $c; + } + + /** + * Only fail if a property of the given name does not + * exist in the current project. + * @param c property name + */ + public function setUnless($c) { + $this->unlessCondition = $c; + } + + /** + * @throws BuildException + */ + public function main() { + if ($this->testIfCondition() && $this->testUnlessCondition()) { + if ($this->message !== null) { + throw new BuildException($this->message); + } else { + throw new BuildException("No message"); + } + } + } + + /** + * Set a multiline message. + */ + public function addText($msg) { + if ($this->message === null) { + $this->message = ""; + } + $this->message .= $this->project->replaceProperties($msg); + } + + /** + * @return boolean + */ + private function testIfCondition() { + if ($this->ifCondition === null || $this->ifCondition === "") { + return true; + } + + return $this->project->getProperty($this->ifCondition) !== null; + } + + /** + * @return boolean + */ + private function testUnlessCondition() { + if ($this->unlessCondition === null || $this->unlessCondition === "") { + return true; + } + return $this->project->getProperty($this->unlessCondition) === null; + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/ForeachTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/ForeachTask.php.svn-base new file mode 100644 index 0000000..7386962 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/ForeachTask.php.svn-base @@ -0,0 +1,138 @@ +. + */ + +require_once 'phing/Task.php'; +include_once 'phing/tasks/system/PhingTask.php'; + +/** + * task + * + * Task definition for the foreach task. This task takes a list with + * delimited values, and executes a target with set param. + * + * Usage: + * + * + * Attributes: + * list --> The list of values to process, with the delimiter character, + * indicated by the "delimiter" attribute, separating each value. + * target --> The target to call for each token, passing the token as the + * parameter with the name indicated by the "param" attribute. + * param --> The name of the parameter to pass the tokens in as to the + * target. + * delimiter --> The delimiter string that separates the values in the "list" + * parameter. The default is ",". + * + * @author Jason Hines + * @author Hans Lellelid + * @version $Revision: 1.9 $ + * @package phing.tasks.system + */ +class ForeachTask extends Task { + + /** Delimter-separated list of values to process. */ + private $list; + + /** Name of parameter to pass to callee */ + private $param; + + /** Delimter that separates items in $list */ + private $delimiter = ','; + + /** + * PhingCallTask that will be invoked w/ calleeTarget. + * @var PhingCallTask + */ + private $callee; + + /** + * Target to execute. + * @var string + */ + private $calleeTarget; + + function init() { + $this->callee = $this->project->createTask("phingcall"); + $this->callee->setOwningTarget($this->getOwningTarget()); + $this->callee->setTaskName($this->getTaskName()); + $this->callee->setLocation($this->getLocation()); + $this->callee->init(); + } + + /** + * This method does the work. + * @return void + */ + function main() { + if ($this->list === null) { + throw new BuildException("Missing list to iterate through"); + } + if (trim($this->list) === '') { + return; + } + if ($this->param === null) { + throw new BuildException("You must supply a property name to set on each iteration in param"); + } + if ($this->calleeTarget === null) { + throw new BuildException("You must supply a target to perform"); + } + + $callee = $this->callee; + $callee->setTarget($this->calleeTarget); + $callee->setInheritAll(true); + $callee->setInheritRefs(true); + + $arr = explode($this->delimiter, $this->list); + + foreach ($arr as $value) { + $this->log("Setting param '$this->param' to value '$value'", Project::MSG_VERBOSE); + $prop = $callee->createProperty(); + $prop->setOverride(true); + $prop->setName($this->param); + $prop->setValue($value); + $callee->main(); + } + } + + function setList($list) { + $this->list = (string) $list; + } + + function setTarget($target) { + $this->calleeTarget = (string) $target; + } + + function setParam($param) { + $this->param = (string) $param; + } + + function setDelimiter($delimiter) { + $this->delimiter = (string) $delimiter; + } + + /** + * @return Property + */ + function createProperty() { + return $this->callee->createProperty(); + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/IfTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/IfTask.php.svn-base new file mode 100644 index 0000000..e0d83fc --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/IfTask.php.svn-base @@ -0,0 +1,224 @@ +. + */ + +require_once 'phing/tasks/system/condition/ConditionBase.php'; +require_once 'phing/tasks/system/SequentialTask.php'; + +/** + * Perform some tasks based on whether a given condition holds true or + * not. + * + *

    This task is heavily based on the Condition framework that can + * be found in Ant 1.4 and later, therefore it cannot be used in + * conjunction with versions of Ant prior to 1.4.

    + * + *

    This task doesn't have any attributes, the condition to test is + * specified by a nested element - see the documentation of your + * task (see + * the + * online documentation for example) for a complete list of nested + * elements.

    + * + *

    Just like the task, only a single + * condition can be specified - you combine them using + * or conditions.

    + * + *

    In addition to the condition, you can specify three different + * child elements, , and + * . All three subelements are optional. + * + * Both and must not be + * used more than once inside the if task. Both are + * containers for Ant tasks, just like Ant's + * and + * tasks - in fact they are implemented using the same class as Ant's + * task.

    + * + * The behaves exactly like an + * except that it cannot contain the element + * inside of it. You may specify as may of these as you like, and the + * order they are specified is the order they are evaluated in. If the + * condition on the is false, then the first + * who's conditional evaluates to true + * will be executed. The will be executed + * only if the and all + * conditions are false. + * + *

    Use the following task to define the + * task before you use it the first time:

    + * + *
    
    + *   
    + * + *

    Crude Example

    + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
    + * + * + * + * + * + * + * + * + * + * + * + *
    + * + * + * @author Stefan Bodewig + */ +class IfTask extends ConditionBase { + + + private $thenTasks = null; + private $elseIfTasks = array(); + private $elseTasks = null; + + /*** + * A nested Else if task + */ + public function addElseIf(ElseIfTask $ei) + { + $this->elseIfTasks[] = $ei; + } + + /** + * A nested element - a container of tasks that will + * be run if the condition holds true. + * + *

    Not required.

    + */ + public function addThen(SequentialTask $t) { + if ($this->thenTasks != null) { + throw new BuildException("You must not nest more than one into "); + } + $this->thenTasks = $t; + } + + /** + * A nested element - a container of tasks that will + * be run if the condition doesn't hold true. + * + *

    Not required.

    + */ + public function addElse(SequentialTask $e) { + if ($this->elseTasks != null) { + throw new BuildException("You must not nest more than one into "); + } + $this->elseTasks = $e; + } + + public function main() { + + if ($this->countConditions() > 1) { + throw new BuildException("You must not nest more than one condition into "); + } + if ($this->countConditions() < 1) { + throw new BuildException("You must nest a condition into "); + } + $conditions = $this->getConditions(); + $c = $conditions[0]; + + if ($c->evaluate()) { + if ($this->thenTasks != null) { + $this->thenTasks->main(); + } + } else { + $done = false; + $sz = count($this->elseIfTasks); + for($i=0; $i < $sz && !$done; $i++) { + $ei = $this->elseIfTasks[$i]; + if ($ei->evaluate()) { + $done = true; + $ei->main(); + } + } + + if (!$done && $this->elseTasks != null) { + $this->elseTasks->main(); + } + } + } +} + +/** + * "Inner" class for IfTask. + * This class has same basic structure as the IfTask, although of course it doesn't support tags. + */ +class ElseIfTask extends ConditionBase { + + private $thenTasks = null; + + public function addThen(SequentialTask $t) { + if ($this->thenTasks != null) { + throw new BuildException("You must not nest more than one into "); + } + $this->thenTasks = $t; + } + + /** + * @return boolean + */ + public function evaluate() { + + if ($this->countConditions() > 1) { + throw new BuildException("You must not nest more than one condition into "); + } + if ($this->countConditions() < 1) { + throw new BuildException("You must nest a condition into "); + } + + $conditions = $this->getConditions(); + $c = $conditions[0]; + + return $c->evaluate(); + } + + /** + * + */ + public function main() { + if ($this->thenTasks != null) { + $this->thenTasks->main(); + } + } + } \ No newline at end of file diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/IncludePathTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/IncludePathTask.php.svn-base new file mode 100644 index 0000000..4d281d1 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/IncludePathTask.php.svn-base @@ -0,0 +1,115 @@ +. + */ + +require_once 'phing/Task.php'; +include_once 'phing/types/Path.php'; + +/** + * Adds a normalized path to the PHP include_path. + * + * This provides a way to alter the include_path without editing any global php.ini settings + * or PHP_CLASSPATH environment variable. + * + * + * + * + * + * @author Hans Lellelid + * @version $Revision: 1.1 $ + * @package phing.tasks.system + */ +class IncludePathTask extends Task { + + /** + * Classname of task to register. + * This can be a dot-path -- relative to a location on PHP include_path. + * E.g. path.to.MyClass -> path/to/MyClass.php + * @var string + */ + private $classname; + + /** + * Path to add to PHP include_path to aid in finding specified class. + * @var Path + */ + private $classpath; + + /** + * Refid to already defined classpath + */ + private $classpathId; + + /** + * Set the classpath to be used when searching for component being defined + * + * @param Path $classpath An Path object containing the classpath. + */ + public function setClasspath(Path $classpath) { + if ($this->classpath === null) { + $this->classpath = $classpath; + } else { + $this->classpath->append($classpath); + } + } + + /** + * Create the classpath to be used when searching for component being defined + */ + public function createClasspath() { + if ($this->classpath === null) { + $this->classpath = new Path($this->project); + } + return $this->classpath->createPath(); + } + + /** + * Reference to a classpath to use when loading the files. + */ + public function setClasspathRef(Reference $r) { + $this->classpathId = $r->getRefId(); + $this->createClasspath()->setRefid($r); + } + + + /** Main entry point */ + public function main() { + + // Apparently casting to (string) no longer invokes __toString() automatically. + if (is_object($this->classpath)) { + $this->classpath = $this->classpath->__toString(); + } + + if (empty($this->classpath)) { + throw new BuildException("Provided classpath was empty."); + } + + $curr_parts = explode(PATH_SEPARATOR, get_include_path()); + $add_parts = explode(PATH_SEPARATOR, $this->classpath); + $new_parts = array_diff($add_parts, $curr_parts); + + if ($new_parts) { + $this->log("Prepending new include_path components: " . implode(PATH_SEPARATOR, $new_parts), Project::MSG_VERBOSE); + set_include_path(implode(PATH_SEPARATOR, array_merge($new_parts, $curr_parts))); + } + + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/InputTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/InputTask.php.svn-base new file mode 100644 index 0000000..53e8a9c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/InputTask.php.svn-base @@ -0,0 +1,146 @@ +. + */ + +require_once 'phing/Task.php'; +include_once 'phing/input/InputRequest.php'; +include_once 'phing/input/YesNoInputRequest.php'; +include_once 'phing/input/MultipleChoiceInputRequest.php'; + +/** + * Reads input from the InputHandler. + * + * @see Project::getInputHandler() + * @author Hans Lellelid (Phing) + * @author Ulrich Schmidt (Ant) + * @author Stefan Bodewig (Ant) + * @version $Revision: 1.6 $ + * @package phing.tasks.system + */ +class InputTask extends Task { + + private $validargs; + private $message = ""; // required + private $propertyName; // required + private $defaultValue; + private $promptChar; + + /** + * Defines valid input parameters as comma separated strings. If set, input + * task will reject any input not defined as accepted and requires the user + * to reenter it. Validargs are case sensitive. If you want 'a' and 'A' to + * be accepted you need to define both values as accepted arguments. + * + * @param validargs A comma separated String defining valid input args. + */ + public function setValidargs ($validargs) { + $this->validargs = $validargs; + } + + /** + * Defines the name of a property to be set from input. + * + * @param string $name Name for the property to be set from input + */ + public function setPropertyName($name) { + $this->propertyName = $name; + } + + /** + * Sets the Message which gets displayed to the user during the build run. + * @param message The message to be displayed. + */ + public function setMessage ($message) { + $this->message = $message; + } + + /** + * Set a multiline message. + */ + public function addText($msg) { + $this->message .= $this->project->replaceProperties($msg); + } + + /** + * Add a default value. + * @param string $v + */ + public function setDefaultValue($v) { + $this->defaultValue = $v; + } + + /** + * Set the character/string to use for the prompt. + * @param string $c + */ + public function setPromptChar($c) { + $this->promptChar = $c; + } + + /** + * Actual method executed by phing. + * @throws BuildException + */ + public function main() { + + if ($this->propertyName === null) { + throw new BuildException("You must specify a value for propertyName attribute."); + } + + if ($this->validargs !== null) { + $accept = preg_split('/[\s,]+/', $this->validargs); + + // is it a boolean (yes/no) inputrequest? + $yesno = false; + if (count($accept) == 2) { + $yesno = true; + foreach($accept as $ans) { + if(!StringHelper::isBoolean($ans)) { + $yesno = false; + break; + } + } + } + if ($yesno) $request = new YesNoInputRequest($this->message, $accept); + else $request = new MultipleChoiceInputRequest($this->message, $accept); + } else { + $request = new InputRequest($this->message); + } + + // default default is curr prop value + $request->setDefaultValue($this->project->getProperty($this->propertyName)); + + $request->setPromptChar($this->promptChar); + + // unless overridden... + if ($this->defaultValue !== null) { + $request->setDefaultValue($this->defaultValue); + } + + $this->project->getInputHandler()->handleInput($request); + + $value = $request->getInput(); + + if ($value !== null) { + $this->project->setUserProperty($this->propertyName, $value); + } + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/MatchingTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/MatchingTask.php.svn-base new file mode 100644 index 0000000..0991b93 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/MatchingTask.php.svn-base @@ -0,0 +1,361 @@ +. + */ + +require_once 'phing/Task.php'; +require_once 'phing/types/selectors/SelectorContainer.php'; +include_once 'phing/types/FileSet.php'; +include_once 'phing/types/PatternSet.php'; +include_once 'phing/util/DirectoryScanner.php'; + +/** + * This is an abstract task that should be used by all those tasks that + * require to include or exclude files based on pattern matching. + * + * This is very closely based on the ANT class of the same name. + * + * @author Hans Lellelid (Phing) + * @author Arnout J. Kuiper (Ant) + * @author Stefano Mazzocchi (Ant) + * @author Sam Ruby (Ant) + * @author Jon S. Stevens (Ant + * @author Stefan Bodewig (Ant) + * @author Bruce Atherton (Ant) + * @version $Revision: 1.4 $ + * @package phing.tasks.system + */ +abstract class MatchingTask extends Task implements SelectorContainer { + + /** @var boolean */ + protected $useDefaultExcludes = true; + + /** @var FileSet */ + protected $fileset; + + /** + * Create instance; set fileset to new FileSet. + */ + public function __construct() { + $this->fileset = new FileSet(); + } + + /** + * @see ProjectComponent::setProject() + */ + public function setProject(Project $project) { + parent::setProject($project); + $this->fileset->setProject($project); + } + + /** + * add a name entry on the include list + * @return PatternSetNameEntry + */ + public function createInclude() { + return $this->fileset->createInclude(); + } + + /** + * add a name entry on the include files list + * @return PatternSetNameEntry + */ + public function createIncludesFile() { + return $this->fileset->createIncludesFile(); + } + + /** + * add a name entry on the exclude list + * @return PatternSetNameEntry + */ + public function createExclude() { + return $this->fileset->createExclude(); + } + + /** + * add a name entry on the include files list + * @return PatternSetNameEntry + */ + public function createExcludesFile() { + return $this->fileset->createExcludesFile(); + } + + /** + * add a set of patterns + * @return PatternSet + */ + public function createPatternSet() { + return $this->fileset->createPatternSet(); + } + + /** + * Sets the set of include patterns. Patterns may be separated by a comma + * or a space. + * + * @param string $includes the string containing the include patterns + * @return void + */ + public function setIncludes($includes) { + $this->fileset->setIncludes($includes); + } + + /** + * Sets the set of exclude patterns. Patterns may be separated by a comma + * or a space. + * + * @param string $excludes the string containing the exclude patterns + */ + public function setExcludes($excludes) { + $this->fileset->setExcludes($excludes); + } + + + /** + * Sets whether default exclusions should be used or not. + * + * @param boolean $useDefaultExcludes "true"|"on"|"yes" when default exclusions + * should be used, "false"|"off"|"no" when they + * shouldn't be used. + */ + public function setDefaultexcludes($useDefaultExcludes) { + $this->useDefaultExcludes = (boolean) $useDefaultExcludes; + } + + /** + * Returns the directory scanner needed to access the files to process. + * @return DirectoryScanner + */ + protected function getDirectoryScanner(PhingFile $baseDir) { + $this->fileset->setDir($baseDir); + $this->fileset->setDefaultexcludes($this->useDefaultExcludes); + return $this->fileset->getDirectoryScanner($this->project); + } + + /** + * Sets the name of the file containing the includes patterns. + * + * @param PhingFile $includesfile A string containing the filename to fetch + * the include patterns from. + * @return void + */ + public function setIncludesfile(PhingFile $includesfile) { + $this->fileset->setIncludesfile(includesfile); + } + + /** + * Sets the name of the file containing the includes patterns. + * + * @param PhingFile $excludesfile A string containing the filename to fetch + * the include patterns from. + * @return void + */ + public function setExcludesfile(PhingFile $excludesfile) { + $this->fileset->setExcludesfile($excludesfile); + } + + /** + * Sets case sensitivity of the file system + * + * @param boolean $isCaseSensitive "true"|"on"|"yes" if file system is case + * sensitive, "false"|"off"|"no" when not. + * @return void + */ + public function setCaseSensitive($isCaseSensitive) { + $this->fileset->setCaseSensitive($isCaseSensitive); + } + + /** + * Sets whether or not symbolic links should be followed. + * + * @param boolean $followSymlinks whether or not symbolic links should be followed + * @return void + */ + public function setFollowSymlinks($followSymlinks) { + $this->fileset->setFollowSymlinks($followSymlinks); + } + + /** + * Indicates whether there are any selectors here. + * + * @return boolean Whether any selectors are in this container + */ + public function hasSelectors() { + return $this->fileset->hasSelectors(); + } + + /** + * Gives the count of the number of selectors in this container + * + * @return int The number of selectors in this container + */ + public function selectorCount() { + return $this->fileset->selectorCount(); + } + + /** + * Returns the set of selectors as an array. + * + * @return array FileSelector[] An array of selectors in this container + */ + public function getSelectors(Project $p) { + return $this->fileset->getSelectors($p); + } + + /** + * Returns an enumerator for accessing the set of selectors. + * + * @return an enumerator that goes through each of the selectors + */ + public function selectorElements() { + return $this->fileset->selectorElements(); + } + + /** + * Add a new selector into this container. + * + * @param FileSelector $selector the new selector to add + * @return void + */ + public function appendSelector(FileSelector $selector) { + $this->fileset->appendSelector($selector); + } + + /* Methods below all add specific selectors */ + + /** + * add a "Select" selector entry on the selector list + * @return SelectSelector + */ + public function createSelector() { + return $this->fileset->createSelector(); + } + + /** + * add an "And" selector entry on the selector list + * @return AndSelector + */ + public function createAnd() { + return $this->fileset->createAnd(); + } + + /** + * add an "Or" selector entry on the selector list + * @return void + */ + public function createOr() { + return $this->fileset->createOr(); + } + + /** + * add a "Not" selector entry on the selector list + * @return NotSelector + */ + public function createNot() { + return $this->fileset->createNot(); + } + + /** + * add a "None" selector entry on the selector list + * @return NoneSelector + */ + public function createNone() { + return $this->fileset->createNone(); + } + + /** + * add a majority selector entry on the selector list + * @return MajoritySelector + */ + public function createMajority() { + return $this->fileset->createMajority(); + } + + /** + * add a selector date entry on the selector list + * @return DateSelector + */ + public function createDate() { + return $this->fileset->addDate(); + } + + /** + * add a selector size entry on the selector list + * @return SizeSelector + */ + public function createSize() { + return $this->fileset->createSize(); + } + + /** + * add a selector filename entry on the selector list + * @return FilenameSelector + */ + public function createFilename() { + return $this->fileset->createFilename(); + } + + /** + * add an extended selector entry on the selector list + * @return ExtendSelector + */ + public function createCustom() { + return $this->fileset->createCustom(); + } + + /** + * add a contains selector entry on the selector list + * @return ContainsSelector + */ + public function createContains() { + return $this->fileset->createContains(); + } + + /** + * add a present selector entry on the selector list + * @return PresentSelector + */ + public function createPresent() { + return $this->fileset->createPresent(); + } + + /** + * add a depth selector entry on the selector list + * @return DepthSelector + */ + public function createDepth() { + return $this->fileset->createDepth(); + } + + /** + * add a depends selector entry on the selector list + * @return DependSelector + */ + public function createDepend() { + return $this->fileset->createDepend(); + } + + /** + * Accessor for the implict fileset. + * + * @return FileSet + */ + protected final function getImplicitFileSet() { + return $this->fileset; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/MkdirTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/MkdirTask.php.svn-base new file mode 100644 index 0000000..dc6fb11 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/MkdirTask.php.svn-base @@ -0,0 +1,64 @@ +. + */ + +require_once 'phing/Task.php'; +include_once 'phing/system/io/PhingFile.php'; + +/** + * Task to create a directory. + * + * @author Andreas Aderhold, andi@binarycloud.com + * @version $Revision: 1.8 $ + * @package phing.tasks.system + */ +class MkdirTask extends Task { + + /** directory to create*/ + private $dir; + + /** + * create the directory and all parents + * + * @throws BuildException if dir is somehow invalid, or creation failed. + */ + function main() { + if ($this->dir === null) { + throw new BuildException("dir attribute is required", $this->location); + } + if ($this->dir->isFile()) { + throw new BuildException("Unable to create directory as a file already exists with that name: " . $this->dir->getAbsolutePath()); + } + if (!$this->dir->exists()) { + $result = $this->dir->mkdirs(); + if (!$result) { + $msg = "Directory " . $this->dir->getAbsolutePath() . " creation was not successful for an unknown reason"; + throw new BuildException($msg, $this->location); + } + $this->log("Created dir: " . $this->dir->getAbsolutePath()); + } + } + + /** the directory to create; required. */ + function setDir(PhingFile $dir) { + $this->dir = $dir; + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/MoveTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/MoveTask.php.svn-base new file mode 100644 index 0000000..a9321da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/MoveTask.php.svn-base @@ -0,0 +1,247 @@ +. + */ + +require_once 'phing/tasks/system/CopyTask.php'; +include_once 'phing/system/io/PhingFile.php'; +include_once 'phing/system/io/IOException.php'; + +/** + * Moves a file or directory to a new file or directory. + * + * By default, the destination file is overwritten if it + * already exists. When overwrite is turned off, then files + * are only moved if the source file is newer than the + * destination file, or when the destination file does not + * exist. + * + * Source files and directories are only deleted when the file or + * directory has been copied to the destination successfully. + * + * @version $Revision: 1.8 $ + * @package phing.tasks.system + */ +class MoveTask extends CopyTask { + + function __construct() { + parent::__construct(); + $this->forceOverwrite = true; + } + + /** + * Validates attributes coming in from XML + * + * @access private + * @return void + * @throws BuildException + */ + protected function validateAttributes() { + if ($this->file !== null && $this->file->isDirectory()) { + if (($this->destFile !== null && $this->destDir !== null) + || ($this->destFile === null && $this->destDir === null)) { + throw new BuildException("One and only one of tofile and todir must be set."); + } + + if ($this->destFile === null) + { + $this->destFile = new PhingFile($this->destDir, $this->file->getName()); + } + + if ($this->destDir === null) + { + $this->destDir = $this->destFile->getParentFile(); + } + + $this->completeDirMap[$this->file->getAbsolutePath()] = $this->destFile->getAbsolutePath(); + + $this->file = null; + } else { + parent::validateAttributes(); + } + } + + protected function doWork() { + if (count($this->completeDirMap) > 0) + { + foreach ($this->completeDirMap as $from => $to) + { + $f = new PhingFile($from); + $d = new PhingFile($to); + + $moved = false; + try { // try to rename + $this->log("Attempting to rename $from to $to", $this->verbosity); + $this->renameFile($f, $d, $this->forceOverwrite); + $moved = true; + } catch (IOException $ioe) { + $moved = false; + $this->log("Failed to rename $from to $to: " . $ioe->getMessage(), $this->verbosity); + } + } + } + + $copyMapSize = count($this->fileCopyMap); + if ($copyMapSize > 0) { + // files to move + $this->log("Moving $copyMapSize files to " . $this->destDir->getAbsolutePath()); + + foreach($this->fileCopyMap as $from => $to) { + if ($from == $to) { + $this->log("Skipping self-move of $from", $this->verbosity); + continue; + } + + $moved = false; + $f = new PhingFile($from); + $d = new PhingFile($to); + + $moved = false; + try { // try to rename + $this->log("Attempting to rename $from to $to", $this->verbosity); + $this->renameFile($f, $d, $this->forceOverwrite); + $moved = true; + } catch (IOException $ioe) { + $moved = false; + $this->log("Failed to rename $from to $to: " . $ioe->getMessage(), $this->verbosity); + } + + if (!$moved) { + try { // try to move + $this->log("Moving $from to $to", $this->verbosity); + + $this->fileUtils->copyFile($f, $d, $this->forceOverwrite, $this->preserveLMT, $this->filterChains, $this->getProject()); + + $f = new PhingFile($fromFile); + $f->delete(); + } catch (IOException $ioe) { + $msg = "Failed to move $from to $to: " . $ioe->getMessage(); + throw new BuildException($msg, $this->location); + } + } // if !moved + } // foreach fileCopyMap + } // if copyMapSize + + // handle empty dirs if appropriate + if ($this->includeEmpty) { + $e = array_keys($this->dirCopyMap); + $count = 0; + foreach ($e as $dir) { + $d = new PhingFile((string) $dir); + if (!$d->exists()) { + if (!$d->mkdirs()) { + $this->log("Unable to create directory " . $d->getAbsolutePath(), Project::MSG_ERR); + } else { + $count++; + } + } + } + if ($count > 0) { + $this->log("moved $count empty director" . ($count == 1 ? "y" : "ies") . " to " . $this->destDir->getAbsolutePath()); + } + } + + if (count($this->filesets) > 0) { + // process filesets + foreach($this->filesets as $fs) { + $dir = $fs->getDir($this->project); + if ($this->okToDelete($dir)) { + $this->deleteDir($dir); + } + } + } + } + + /** Its only ok to delete a dir tree if there are no files in it. */ + private function okToDelete($d) { + $list = $d->listDir(); + if ($list === null) { + return false; // maybe io error? + } + + foreach($list as $s) { + $f = new PhingFile($d, $s); + if ($f->isDirectory()) { + if (!$this->okToDelete($f)) { + return false; + } + } else { + // found a file + return false; + } + } + return true; + } + + /** Go and delete the directory tree. */ + private function deleteDir($d) { + + $list = $d->listDir(); + if ($list === null) { + return; // on an io error list() can return null + } + + foreach($list as $fname) { + $f = new PhingFile($d, $fname); + if ($f->isDirectory()) { + $this->deleteDir($f); + } else { + throw new BuildException("UNEXPECTED ERROR - The file " . $f->getAbsolutePath() . " should not exist!"); + } + } + + $this->log("Deleting directory " . $d->getPath(), $this->verbosity); + try { + $d->delete(); + } catch (Exception $e) { + throw new BuildException("Unable to delete directory " . $d->__toString() . ": " . $e->getMessage()); + } + } + + /** + * Attempts to rename a file from a source to a destination. + * If overwrite is set to true, this method overwrites existing file + * even if the destination file is newer. + * Otherwise, the source f + * ile is renamed only if the destination file # + * is older than it. + */ + private function renameFile(PhingFile $sourceFile, PhingFile $destFile, $overwrite) { + $renamed = true; + + // ensure that parent dir of dest file exists! + $parent = $destFile->getParentFile(); + if ($parent !== null) { + if (!$parent->exists()) { + $parent->mkdirs(); + } + } + if ($destFile->exists()) { + try { + $destFile->delete(); + } catch (Exception $e) { + throw new BuildException("Unable to remove existing file " . $destFile->__toString() . ": " . $e->getMessage()); + } + } + $renamed = $sourceFile->renameTo($destFile); + + return $renamed; + } +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/PhingCallTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/PhingCallTask.php.svn-base new file mode 100644 index 0000000..d5cb662 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/PhingCallTask.php.svn-base @@ -0,0 +1,161 @@ +. + */ + +require_once 'phing/Task.php'; + +/** + * Call another target in the same project. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * This only works as expected if neither property1 nor foo are defined in the project itself. + * + * @author Andreas Aderhold + * @copyright 2001,2002 THYRELL. All rights reserved + * @version $Revision: 1.9 $ + * @access public + * @package phing.tasks.system + */ +class PhingCallTask extends Task { + + /** + * The called Phing task. + * + * @var PhingTask + */ + private $callee; + + /** + * The target to call. + * + * @var string + */ + private $subTarget; + + /** + * Whether to inherit all properties from current project. + * + * @var boolean + */ + private $inheritAll = true; + + /** + * Whether to inherit refs from current project. + * + * @var boolean + */ + private $inheritRefs = false; + + /** + * If true, pass all properties to the new Phing project. + * Defaults to true. Future use. + * @param boolean new value + */ + function setInheritAll($inherit) { + $this->inheritAll = (boolean) $inherit; + } + + /** + * If true, pass all references to the new Phing project. + * Defaults to false. Future use. + * + * @param boolean new value + */ + function setInheritRefs($inheritRefs) { + $this->inheritRefs = (boolean) $inheritRefs; + } + + /** + * Alias for createProperty + * @see createProperty() + */ + function createParam() { + if ($this->callee === null) { + $this->init(); + } + return $this->callee->createProperty(); + } + + /** + * Property to pass to the invoked target. + */ + function createProperty() { + if ($this->callee === null) { + $this->init(); + } + return $this->callee->createProperty(); + } + + /** + * Target to execute, required. + */ + function setTarget($target) { + $this->subTarget = (string) $target; + } + + /** + * init this task by creating new instance of the phing task and + * configuring it's by calling its own init method. + */ + function init() { + $this->callee = $this->project->createTask("phing"); + $this->callee->setOwningTarget($this->getOwningTarget()); + $this->callee->setTaskName($this->getTaskName()); + $this->callee->setHaltOnFailure(true); + $this->callee->setLocation($this->getLocation()); + $this->callee->init(); + } + + /** + * hand off the work to the phing task of ours, after setting it up + * @throws BuildException on validation failure or if the target didn't + * execute + */ + function main() { + + $this->log("Running PhingCallTask for target '" . $this->subTarget . "'", Project::MSG_DEBUG); + if ($this->callee === null) { + $this->init(); + } + + if ($this->subTarget === null) { + throw new BuildException("Attribute target is required.", $this->getLocation()); + } + + $this->callee->setPhingfile($this->project->getProperty("phing.file")); + $this->callee->setTarget($this->subTarget); + $this->callee->setInheritAll($this->inheritAll); + $this->callee->setInheritRefs($this->inheritRefs); + $this->callee->main(); + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/PhingTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/PhingTask.php.svn-base new file mode 100644 index 0000000..e212cae --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/PhingTask.php.svn-base @@ -0,0 +1,623 @@ +. +*/ + +include_once 'phing/Task.php'; +include_once 'phing/util/FileUtils.php'; +include_once 'phing/types/Reference.php'; +include_once 'phing/tasks/system/PropertyTask.php'; + +/** + * Task that invokes phing on another build file. + * + * Use this task, for example, if you have nested buildfiles in your project. Unlike + * AntTask, PhingTask can even support filesets: + * + *
    + *   
    + *    
    + *       
    + *      
    + *    
    + *   
    + * 
    + * + * @author Hans Lellelid + * @version $Revision: 1.20 $ + * @package phing.tasks.system + */ +class PhingTask extends Task { + + /** the basedir where is executed the build file */ + private $dir; + + /** build.xml (can be absolute) in this case dir will be ignored */ + private $phingFile; + + /** the target to call if any */ + protected $newTarget; + + /** should we inherit properties from the parent ? */ + private $inheritAll = true; + + /** should we inherit references from the parent ? */ + private $inheritRefs = false; + + /** the properties to pass to the new project */ + private $properties = array(); + + /** the references to pass to the new project */ + private $references = array(); + + /** The filesets that contain the files PhingTask is to be run on. */ + private $filesets = array(); + + /** the temporary project created to run the build file */ + private $newProject; + + /** Fail the build process when the called build fails? */ + private $haltOnFailure = false; + + /** + * If true, abort the build process if there is a problem with or in the target build file. + * Defaults to false. + * + * @param boolean new value + */ + public function setHaltOnFailure($hof) { + $this->haltOnFailure = (boolean) $hof; + } + + /** + * Creates a Project instance for the project to call. + * @return void + */ + public function init() { + $this->newProject = new Project(); + $tdf = $this->project->getTaskDefinitions(); + $this->newProject->addTaskDefinition("property", $tdf["property"]); + } + + /** + * Called in execute or createProperty if newProject is null. + * + *

    This can happen if the same instance of this task is run + * twice as newProject is set to null at the end of execute (to + * save memory and help the GC).

    + * + *

    Sets all properties that have been defined as nested + * property elements.

    + */ + private function reinit() { + $this->init(); + $count = count($this->properties); + for ($i = 0; $i < $count; $i++) { + $p = $this->properties[$i]; + $newP = $this->newProject->createTask("property"); + $newP->setName($p->getName()); + if ($p->getValue() !== null) { + $newP->setValue($p->getValue()); + } + if ($p->getFile() !== null) { + $newP->setFile($p->getFile()); + } + if ($p->getPrefix() !== null) { + $newP->setPrefix($p->getPrefix()); + } + if ($p->getRefid() !== null) { + $newP->setRefid($p->getRefid()); + } + if ($p->getEnvironment() !== null) { + $newP->setEnvironment($p->getEnvironment()); + } + if ($p->getUserProperty() !== null) { + $newP->setUserProperty($p->getUserProperty()); + } + if ($p->getOverride() !== null) { + $newP->setOverride($p->getOverride()); + } + $this->properties[$i] = $newP; + } + } + + /** + * Main entry point for the task. + * + * @return void + */ + public function main() { + + // Call Phing on the file set with the attribute "phingfile" + if ($this->phingFile !== null or $this->dir !== null) { + $this->processFile(); + } + + // if no filesets are given stop here; else process filesets + if (empty($this->filesets)) { + return; + } + + // preserve old settings + $savedDir = $this->dir; + $savedPhingFile = $this->phingFile; + $savedTarget = $this->newTarget; + + // set no specific target for files in filesets + // [HL] I'm commenting this out; I don't know why this should not be supported! + // $this->newTarget = null; + + foreach($this->filesets as $fs) { + + $ds = $fs->getDirectoryScanner($this->project); + + $fromDir = $fs->getDir($this->project); + $srcFiles = $ds->getIncludedFiles(); + + foreach($srcFiles as $fname) { + $f = new PhingFile($ds->getbasedir(), $fname); + $f = $f->getAbsoluteFile(); + $this->phingFile = $f->getAbsolutePath(); + $this->dir = $f->getParentFile(); + $this->processFile(); // run Phing! + } + } + + // side effect free programming ;-) + $this->dir = $savedDir; + $this->phingFile = $savedPhingFile; + $this->newTarget = $savedTarget; + + // [HL] change back to correct dir + if ($this->dir !== null) { + chdir($this->dir->getAbsolutePath()); + } + + } + + /** + * Execute phing file. + * + * @return void + */ + private function processFile() { + + $buildFailed = false; + $savedDir = $this->dir; + $savedPhingFile = $this->phingFile; + $savedTarget = $this->newTarget; + + $savedBasedirAbsPath = null; // this is used to save the basedir *if* we change it + + try { + + if ($this->newProject === null) { + $this->reinit(); + } + + $this->initializeProject(); + + if ($this->dir !== null) { + + $dirAbsPath = $this->dir->getAbsolutePath(); + + // BE CAREFUL! -- when the basedir is changed for a project, + // all calls to getAbsolutePath() on a relative-path dir will + // be made relative to the project's basedir! This means + // that subsequent calls to $this->dir->getAbsolutePath() will be WRONG! + + // We need to save the current project's basedir first. + $savedBasedirAbsPath = $this->getProject()->getBasedir()->getAbsolutePath(); + + $this->newProject->setBasedir($this->dir); + + // Now we must reset $this->dir so that it continues to resolve to the same + // path. + $this->dir = new PhingFile($dirAbsPath); + + if ($savedDir !== null) { // has been set explicitly + $this->newProject->setInheritedProperty("project.basedir", $this->dir->getAbsolutePath()); + } + + } else { + + // Since we're not changing the basedir here (for file resolution), + // we don't need to worry about any side-effects in this scanrio. + $this->dir = $this->getProject()->getBasedir(); + } + + $this->overrideProperties(); + if ($this->phingFile === null) { + $this->phingFile = "build.xml"; + } + + $fu = new FileUtils(); + $file = $fu->resolveFile($this->dir, $this->phingFile); + $this->phingFile = $file->getAbsolutePath(); + + $this->log("Calling Buildfile '" . $this->phingFile . "' with target '" . $this->newTarget . "'"); + + $this->newProject->setUserProperty("phing.file", $this->phingFile); + + ProjectConfigurator::configureProject($this->newProject, new PhingFile($this->phingFile)); + + if ($this->newTarget === null) { + $this->newTarget = $this->newProject->getDefaultTarget(); + } + + // Are we trying to call the target in which we are defined? + if ($this->newProject->getBaseDir() == $this->project->getBaseDir() && + $this->newProject->getProperty("phing.file") == $this->project->getProperty("phing.file") && + $this->getOwningTarget() !== null && + $this->newTarget == $this->getOwningTarget()->getName()) { + + throw new BuildException("phing task calling its own parent target"); + } + + $this->addReferences(); + $this->newProject->executeTarget($this->newTarget); + + } catch (Exception $e) { + $buildFailed = true; + $this->log($e->getMessage(), Project::MSG_ERR); + if (Phing::getMsgOutputLevel() <= Project::MSG_DEBUG) { + $lines = explode("\n", $e->getTraceAsString()); + foreach($lines as $line) { + $this->log($line, Project::MSG_DEBUG); + } + } + // important!!! continue on to perform cleanup tasks. + } + + + // reset environment values to prevent side-effects. + + $this->newProject = null; + $pkeys = array_keys($this->properties); + foreach($pkeys as $k) { + $this->properties[$k]->setProject(null); + } + + $this->dir = $savedDir; + $this->phingFile = $savedPhingFile; + $this->newTarget = $savedTarget; + + // If the basedir for any project was changed, we need to set that back here. + if ($savedBasedirAbsPath !== null) { + chdir($savedBasedirAbsPath); + } + + if ($this->haltOnFailure && $buildFailed) { + throw new BuildException("Execution of the target buildfile failed. Aborting."); + } + } + + /** + * Configure the Project, i.e. make intance, attach build listeners + * (copy from father project), add Task and Datatype definitions, + * copy properties and references from old project if these options + * are set via the attributes of the XML tag. + * + * Developer note: + * This function replaces the old methods "init", "_reinit" and + * "_initializeProject". + * + * @access protected + */ + private function initializeProject() { + + $this->newProject->setInputHandler($this->project->getInputHandler()); + + foreach($this->project->getBuildListeners() as $listener) { + $this->newProject->addBuildListener($listener); + } + + /* Copy things from old project. Datatypes and Tasks are always + * copied, properties and references only if specified so/not + * specified otherwise in the XML definition. + */ + // Add Datatype definitions + foreach ($this->project->getDataTypeDefinitions() as $typeName => $typeClass) { + $this->newProject->addDataTypeDefinition($typeName, $typeClass); + } + + // Add Task definitions + foreach ($this->project->getTaskDefinitions() as $taskName => $taskClass) { + if ($taskClass == "propertytask") { + // we have already added this taskdef in init() + continue; + } + $this->newProject->addTaskDefinition($taskName, $taskClass); + } + + // set user-defined properties + $this->project->copyUserProperties($this->newProject); + + if (!$this->inheritAll) { + // set System built-in properties separately, + // b/c we won't inherit them. + $this->newProject->setSystemProperties(); + + } else { + // set all properties from calling project + $properties = $this->project->getProperties(); + foreach ($properties as $name => $value) { + if ($name == "basedir" || $name == "phing.file" || $name == "phing.version") { + // basedir and phing.file get special treatment in main() + continue; + } + // don't re-set user properties, avoid the warning message + if ($this->newProject->getProperty($name) === null){ + // no user property + $this->newProject->setNewProperty($name, $value); + } + } + + } + + } + + /** + * Override the properties in the new project with the one + * explicitly defined as nested elements here. + * @return void + * @throws BuildException + */ + private function overrideProperties() { + foreach(array_keys($this->properties) as $i) { + $p = $this->properties[$i]; + $p->setProject($this->newProject); + $p->main(); + } + $this->project->copyInheritedProperties($this->newProject); + } + + /** + * Add the references explicitly defined as nested elements to the + * new project. Also copy over all references that don't override + * existing references in the new project if inheritrefs has been + * requested. + * + * @return void + * @throws BuildException + */ + private function addReferences() { + + // parent project references + $projReferences = $this->project->getReferences(); + + $newReferences = $this->newProject->getReferences(); + + $subprojRefKeys = array(); + + if (count($this->references) > 0) { + for ($i=0, $count=count($this->references); $i < $count; $i++) { + $ref = $this->references[$i]; + $refid = $ref->getRefId(); + + if ($refid === null) { + throw new BuildException("the refid attribute is required" + . " for reference elements"); + } + if (!isset($projReferences[$refid])) { + $this->log("Parent project doesn't contain any reference '" + . $refid . "'", + Project::MSG_WARN); + continue; + } + + $subprojRefKeys[] = $refid; + //thisReferences.remove(refid); + $toRefid = $ref->getToRefid(); + if ($toRefid === null) { + $toRefid = $refid; + } + $this->copyReference($refid, $toRefid); + } + } + + // Now add all references that are not defined in the + // subproject, if inheritRefs is true + if ($this->inheritRefs) { + + // get the keys that are were not used by the subproject + $unusedRefKeys = array_diff(array_keys($projReferences), $subprojRefKeys); + + foreach($unusedRefKeys as $key) { + if (isset($newReferences[$key])) { + continue; + } + $this->copyReference($key, $key); + } + } + } + + /** + * Try to clone and reconfigure the object referenced by oldkey in + * the parent project and add it to the new project with the key + * newkey. + * + *

    If we cannot clone it, copy the referenced object itself and + * keep our fingers crossed.

    + * + * @param string $oldKey + * @param string $newKey + * @return void + */ + private function copyReference($oldKey, $newKey) { + $orig = $this->project->getReference($oldKey); + if ($orig === null) { + $this->log("No object referenced by " . $oldKey . ". Can't copy to " + .$newKey, + PROJECT_SG_WARN); + return; + } + + $copy = clone $orig; + + if ($copy instanceof ProjectComponent) { + $copy->setProject($this->newProject); + } elseif (in_array('setProject', get_class_methods(get_class($copy)))) { + $copy->setProject($this->newProject); + } elseif ($copy instanceof Project) { + // don't copy the old "Project" itself + } else { + $msg = "Error setting new project instance for " + . "reference with id " . $oldKey; + throw new BuildException($msg); + } + + $this->newProject->addReference($newKey, $copy); + } + + /** + * If true, pass all properties to the new phing project. + * Defaults to true. + * + * @access public + */ + function setInheritAll($value) { + $this->inheritAll = (boolean) $value; + } + + /** + * If true, pass all references to the new phing project. + * Defaults to false. + * + * @access public + */ + function setInheritRefs($value) { + $this->inheritRefs = (boolean)$value; + } + + /** + * The directory to use as a base directory for the new phing project. + * Defaults to the current project's basedir, unless inheritall + * has been set to false, in which case it doesn't have a default + * value. This will override the basedir setting of the called project. + * + * @access public + */ + function setDir($d) { + if ( is_string($d) ) + $this->dir = new PhingFile($d); + else + $this->dir = $d; + } + + /** + * The build file to use. + * Defaults to "build.xml". This file is expected to be a filename relative + * to the dir attribute given. + * + * @access public + */ + function setPhingfile($s) { + // it is a string and not a file to handle relative/absolute + // otherwise a relative file will be resolved based on the current + // basedir. + $this->phingFile = $s; + } + + /** + * Alias function for setPhingfile + * + * @access public + */ + function setBuildfile($s) { + $this->setPhingFile($s); + } + + /** + * The target of the new Phing project to execute. + * Defaults to the new project's default target. + * + * @access public + */ + function setTarget($s) { + $this->newTarget = $s; + } + + /** + * Support for filesets; This method returns a reference to an instance + * of a FileSet object. + * + * @return FileSet + */ + function createFileSet() { + $num = array_push($this->filesets, new FileSet()); + return $this->filesets[$num-1]; + } + + /** + * Property to pass to the new project. + * The property is passed as a 'user property' + * + * @access public + */ + function createProperty() { + $p = new PropertyTask(); + $p->setFallback($this->newProject); + $p->setUserProperty(true); + $this->properties[] = $p; + return $p; + } + + /** + * Reference element identifying a data type to carry + * over to the new project. + * + * @access public + */ + function createReference() { + $num = array_push($this->references, new PhingReference()); + return $this->references[$num-1]; + } + +} + +/** + * Helper class that implements the nested + * element of and . + */ +class PhingReference extends Reference { + + private $targetid = null; + + /** + * Set the id that this reference to be stored under in the + * new project. + * + * @param targetid the id under which this reference will be passed to + * the new project */ + public function setToRefid($targetid) { + $this->targetid = $targetid; + } + + /** + * Get the id under which this reference will be stored in the new + * project + * + * @return the id of the reference in the new project. + */ + public function getToRefid() { + return $this->targetid; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/PhpEvalTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/PhpEvalTask.php.svn-base new file mode 100644 index 0000000..3140cbe --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/PhpEvalTask.php.svn-base @@ -0,0 +1,169 @@ +. + */ + +require_once 'phing/Task.php'; + +/** + * Executes PHP function or evaluates expression and sets return value to a property. + * + * WARNING: + * This task can, of course, be abused with devastating effects. E.g. do not + * modify internal Phing classes unless you know what you are doing. + * + * @author Hans Lellelid + * @version $Revision: 1.7 $ + * @package phing.tasks.system + * + * @todo Add support for evaluating expressions + */ +class PhpEvalTask extends Task { + + protected $expression; // Expression to evaluate + protected $function; // Function to execute + protected $class; // Class containing function to execute + protected $returnProperty; // name of property to set to return value + protected $params = array(); // parameters for function calls + + /** Main entry point. */ + function main() { + + if ($this->function === null && $this->expression === null) { + throw new BuildException("You must specify a function to execute or PHP expression to evalute.", $this->location); + } + + if ($this->function !== null && $this->expression !== null) { + throw new BuildException("You can specify function or expression, but not both.", $this->location); + } + + if ($this->expression !== null && !empty($this->params)) { + throw new BuildException("You cannot use nested tags when evaluationg a PHP expression.", $this->location); + } + + $retval = null; + if ($this->function !== null) { + $retval = $this->callFunction(); + } elseif ($this->expression !== null) { + $retval = $this->evalExpression(); + } + + if ($this->returnProperty !== null) { + $this->project->setProperty($this->returnProperty, $retval); + } + } + + /** + * Calls function and returns results. + * @return mixed + */ + protected function callFunction() { + + if ($this->class !== null) { + // import the classname & unqualify it, if necessary + $this->class = Phing::import($this->class); + + $user_func = array($this->class, $this->function); + $h_func = $this->class . '::' . $this->function; // human-readable (for log) + } else { + $user_func = $this->function; + $h_func = $user_func; // human-readable (for log) + } + + // put parameters into simple array + $params = array(); + foreach($this->params as $p) { + $params[] = $p->getValue(); + } + + $this->log("Calling PHP function: " . $h_func . "()"); + foreach($params as $p) { + $this->log(" param: " . $p, Project::MSG_VERBOSE); + } + + $return = call_user_func_array($user_func, $params); + return $return; + } + + /** + * Evaluates expression and returns resulting value. + * @return mixed + */ + protected function evalExpression() { + $this->log("Evaluating PHP expression: " . $this->expression); + if (!StringHelper::endsWith(';', trim($this->expression))) { + $this->expression .= ';'; + } + $retval = null; + eval('$retval = ' . $this->expression); + return $retval; + } + + /** Set function to execute */ + public function setFunction($f) { + $this->function = $f; + } + + /** Set [static] class which contains function to execute */ + public function setClass($c) { + $this->class = $c; + } + + /** Sets property name to set with return value of function or expression.*/ + public function setReturnProperty($r) { + $this->returnProperty = $r; + } + + /** Set PHP expression to evaluate. */ + public function addText($expression) { + $this->expression = $expression; + } + + /** Set PHP expression to evaluate. */ + public function setExpression($expression) { + $this->expression = $expression; + } + + /** Add a nested tag. */ + public function createParam() { + $p = new FunctionParam(); + $this->params[] = $p; + return $p; + } +} + +/** + * Supports the nested tag for PhpTask. + */ +class FunctionParam { + + private $val; + + public function setValue($v) { + $this->val = $v; + } + + public function addText($v) { + $this->val = $v; + } + + public function getValue() { + return $this->val; + } +} \ No newline at end of file diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/PropertyPromptTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/PropertyPromptTask.php.svn-base new file mode 100644 index 0000000..1d17344 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/PropertyPromptTask.php.svn-base @@ -0,0 +1,234 @@ +. + */ + +require_once 'phing/Task.php'; +include_once 'phing/system/io/ConsoleReader.php'; + +/** + * Deprecated task that uses console to prompt user for property values. + * + * This class is very slightly simpler than the InputTask, but lacks the ability + * to use a non-console input handler. You should, therefore, use InputTask. This + * class can serve as a reference, but will be removed in the future. + * + * @author Hans Lellelid (Phing) + * @author Anthony J. Young-Garner (Ant) + * @version $Revision: 1.4 $ + * @package phing.tasks.system + * @deprecated - in favor of the more capable InputTask + */ +class PropertyPromptTask extends Task { + + /** + * The property name to set with the output. + * @var string + */ + private $propertyName; // required + + /** + * The default value to use if no input is entered. + * @var string + */ + private $defaultValue; + + /** + * The entered value. + * @var string + */ + private $proposedValue; + + /** + * The text to use for the prompt. + * @var string + */ + private $promptText; + + /** + * The character to put after the text. + * @var string + */ + private $promptCharacter; + + /** + * + */ + private $useExistingValue; + + /** + * Run the PropertyPrompt task. + * @throws BuildException + */ + public function main() { + + $this->proposedValue = $this->project->getProperty($this->propertyName); + $currentValue = $this->defaultValue; + + if ($currentValue == "" && $this->proposedValue !== null) { + $currentValue = $this->proposedValue; + } + + if ($this->useExistingValue !== true || $this->proposedValue === null) { + + $this->log("Prompting user for " . $this->propertyName . ". " . $this->getDefaultMessage(), Project::MSG_VERBOSE); + + print "\n" . $this->promptText . " [" . $currentValue . "] " . $this->promptCharacter . " "; + + /** future version should probably have hooks for validation of user input.*/ + $reader = new ConsoleReader(); + + try { + $this->proposedValue = $reader->readLine(); + } catch (IOException $e) { + $this->log("Prompt failed. Using default. (Failure reason: " . $e->getMessage().")"); + $this->proposedValue = $this->defaultValue; + } + + if ($this->proposedValue === "") { + $this->log("No value specified, using default.", Project::MSG_VERBOSE); + $this->proposedValue = $this->defaultValue; + } + + if (isset($this->proposedValue) && $this->proposedValue !== "") { + $this->project->setProperty($this->propertyName, $this->proposedValue); + } + + } + } + + /** + * Returns a string to be inserted in the log message + * indicating whether a default response was specified + * in the build file. + */ + private function getDefaultMessage() { + if ($this->defaultValue == "") { + return "No default response specified."; + } else return "Default response is " . $this->defaultValue . "."; + } + + /** + * Returns defaultValue specified + * in this task for the Property + * being set. + * @return string + */ + public function getDefaultValue() { + return $this->defaultValue; + } + + /** + * Returns the terminating character used to + * punctuate the prompt text. + * @return string + */ + public function getPromptCharacter() { + return $this->promptCharacter; + } + + /** + * Returns text of the prompt. + * @return java.lang.String + */ + public function getPromptText() { + return $this->promptText; + } + + /** + * Returns name of the Ant Project Property + * being set by this task. + * @return string + */ + public function getPropertyName() { + return $this->propertyName; + } + /** + * Initializes this task. + */ + public function init() { + parent::init(); + $this->defaultValue = ""; + $this->promptCharacter = "?"; + $this->useExistingValue = false; + } + + /** + * Insert the method's description here. + * Creation date: (12/10/2001 8:16:16 AM) + * @return boolean + */ + public function isUseExistingValue() { + return $this->useExistingValue; + } + + /** + * Sets defaultValue for the Property + * being set by this task. + * @param string $newDefaultvalue + */ + public function setDefaultvalue($newDefaultvalue) { + $this->defaultValue = $newDefaultvalue; + } + + /** + * Sets the terminating character used to + * punctuate the prompt text (default is "?"). + * @param string $newPromptcharacter + */ + public function setPromptCharacter($newPromptcharacter) { + $this->promptCharacter = $newPromptcharacter; + } + + /** + * Sets text of the prompt. + * @param string $newPrompttext + */ + public function setPromptText($newPrompttext) { + $this->promptText = $newPrompttext; + } + + /** + * Specifies the Phing Project Property + * being set by this task. + * @param newPropertyname java.lang.String + */ + public function setPropertyName($newPropertyname) { + $this->propertyName = $newPropertyname; + } + + /** + * + * @param boolean $newUseExistingValue + */ + public function setUseExistingValue($newUseExistingValue) { + $this->useExistingValue = $newUseExistingValue; + } + + /** + * Sets the prompt text that will be presented to the user. + * @param string $prompt + * @return void + */ + public function addText($prompt) { + $this->setPromptText($prompt); + } + + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/PropertyTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/PropertyTask.php.svn-base new file mode 100644 index 0000000..a5ec640 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/PropertyTask.php.svn-base @@ -0,0 +1,438 @@ +. + */ + +include_once 'phing/Task.php'; +include_once 'phing/system/util/Properties.php'; + +/** + * Task for setting properties in buildfiles. + * + * @author Andreas Aderhold + * @author Hans Lellelid + * @version $Revision$ + * @package phing.tasks.system + */ +class PropertyTask extends Task { + + /** name of the property */ + protected $name; + + /** value of the property */ + protected $value; + + protected $reference; + protected $env; // Environment + protected $file; + protected $ref; + protected $prefix; + protected $fallback; + + /** Whether to force overwrite of existing property. */ + protected $override = false; + + /** Whether property should be treated as "user" property. */ + protected $userProperty = false; + + /** + * Sets a the name of current property component + */ + function setName($name) { + $this->name = (string) $name; + } + + /** Get property component name. */ + function getName() { + return $this->name; + } + + /** + * Sets a the value of current property component. + * @param mixed Value of name, all scalars allowed + */ + function setValue($value) { + $this->value = (string) $value; + } + + /** + * Sets value of property to CDATA tag contents. + * @param string $values + * @since 2.2.0 + */ + public function addText($value) { + $this->setValue($value); + } + + /** Get the value of current property component. */ + function getValue() { + return $this->value; + } + + /** Set a file to use as the source for properties. */ + function setFile($file) { + if (is_string($file)) { + $file = new PhingFile($file); + } + $this->file = $file; + } + + /** Get the PhingFile that is being used as property source. */ + function getFile() { + return $this->file; + } + + function setRefid(Reference $ref) { + $this->reference = $ref; + } + + function getRefid() { + return $this->reference; + } + + /** + * Prefix to apply to properties loaded using file. + * A "." is appended to the prefix if not specified. + * @param string $prefix prefix string + * @return void + * @since 2.0 + */ + public function setPrefix($prefix) { + $this->prefix = $prefix; + if (!StringHelper::endsWith(".", $prefix)) { + $this->prefix .= "."; + } + } + + /** + * @return string + * @since 2.0 + */ + public function getPrefix() { + return $this->prefix; + } + + /** + * the prefix to use when retrieving environment variables. + * Thus if you specify environment="myenv" + * you will be able to access OS-specific + * environment variables via property names "myenv.PATH" or + * "myenv.TERM". + *

    + * Note that if you supply a property name with a final + * "." it will not be doubled. ie environment="myenv." will still + * allow access of environment variables through "myenv.PATH" and + * "myenv.TERM". This functionality is currently only implemented + * on select platforms. Feel free to send patches to increase the number of platforms + * this functionality is supported on ;).
    + * Note also that properties are case sensitive, even if the + * environment variables on your operating system are not, e.g. it + * will be ${env.Path} not ${env.PATH} on Windows 2000. + * @param env prefix + */ + function setEnvironment($env) { + $this->env = (string) $env; + } + + function getEnvironment() { + return $this->env; + } + + /** + * Set whether this is a user property (ro). + * This is deprecated in Ant 1.5, but the userProperty attribute + * of the class is still being set via constructor, so Phing will + * allow this method to function. + * @param boolean $v + */ + function setUserProperty($v) { + $this->userProperty = (boolean) $v; + } + + function getUserProperty() { + return $this->userProperty; + } + + function setOverride($v) { + $this->override = (boolean) $v; + } + + function getOverride() { + return $this->override; + } + + function toString() { + return (string) $this->value; + } + + /** + * @param Project $p + */ + function setFallback($p) { + $this->fallback = $p; + } + + function getFallback() { + return $this->fallback; + } + /** + * set the property in the project to the value. + * if the task was give a file or env attribute + * here is where it is loaded + */ + function main() { + if ($this->name !== null) { + if ($this->value === null && $this->ref === null) { + throw new BuildException("You must specify value or refid with the name attribute", $this->getLocation()); + } + } else { + if ($this->file === null && $this->env === null ) { + throw new BuildException("You must specify file or environment when not using the name attribute", $this->getLocation()); + } + } + + if ($this->file === null && $this->prefix !== null) { + throw new BuildException("Prefix is only valid when loading from a file.", $this->getLocation()); + } + + if (($this->name !== null) && ($this->value !== null)) { + $this->addProperty($this->name, $this->value); + } + + if ($this->file !== null) { + $this->loadFile($this->file); + } + + if ( $this->env !== null ) { + $this->loadEnvironment($this->env); + } + + if (($this->name !== null) && ($this->ref !== null)) { + // get the refereced property + try { + $this->addProperty($this->name, $this->reference->getReferencedObject($this->project)->toString()); + } catch (BuildException $be) { + if ($this->fallback !== null) { + $this->addProperty($this->name, $this->reference->getReferencedObject($this->fallback)->toString()); + } else { + throw $be; + } + } + } + } + + /** + * load the environment values + * @param string $prefix prefix to place before them + */ + protected function loadEnvironment($prefix) { + + $props = new Properties(); + if ( substr($prefix, strlen($prefix)-1) == '.' ) { + $prefix .= "."; + } + $this->log("Loading Environment $prefix", Project::MSG_VERBOSE); + foreach($_ENV as $key => $value) { + $props->setProperty($prefix . '.' . $key, $value); + } + $this->addProperties($props); + } + + /** + * iterate through a set of properties, + * resolve them then assign them + */ + protected function addProperties($props) { + $this->resolveAllProperties($props); + foreach($props->keys() as $name) { + $value = $props->getProperty($name); + $v = $this->project->replaceProperties($value); + if ($this->prefix !== null) { + $name = $this->prefix . $name; + } + $this->addProperty($name, $v); + } + } + + /** + * add a name value pair to the project property set + * @param string $name name of property + * @param string $value value to set + */ + protected function addProperty($name, $value) { + if ($this->userProperty) { + if ($this->project->getUserProperty($name) === null || $this->override) { + $this->project->setInheritedProperty($name, $value); + } else { + $this->log("Override ignored for " . $name, Project::MSG_VERBOSE); + } + } else { + if ($this->override) { + $this->project->setProperty($name, $value); + } else { + $this->project->setNewProperty($name, $value); + } + } + } + + /** + * load properties from a file. + * @param PhingFile $file + */ + protected function loadFile(PhingFile $file) { + $props = new Properties(); + $this->log("Loading ". $file->getAbsolutePath(), Project::MSG_INFO); + try { // try to load file + if ($file->exists()) { + $props->load($file); + $this->addProperties($props); + } else { + $this->log("Unable to find property file: ". $file->getAbsolutePath() ."... skipped", Project::MSG_WARN); + } + } catch (IOException $ioe) { + throw new BuildException("Could not load properties from file.", $ioe); + } + } + + /** + * Given a Properties object, this method goes through and resolves + * any references to properties within the object. + * + * @param Properties $props The collection of Properties that need to be resolved. + * @return void + */ + protected function resolveAllProperties(Properties $props) { + + $keys = $props->keys(); + + while(count($keys)) { + + // There may be a nice regex/callback way to handle this + // replacement, but at the moment it is pretty complex, and + // would probably be a lot uglier to work into a preg_replace_callback() + // system. The biggest problem is the fact that a resolution may require + // multiple passes. + + $name = array_shift($keys); + $value = $props->getProperty($name); + $resolved = false; + + while(!$resolved) { + + $fragments = array(); + $propertyRefs = array(); + + // [HL] this was ::parsePropertyString($this->value ...) ... this seems wrong + self::parsePropertyString($value, $fragments, $propertyRefs); + + $resolved = true; + if (count($propertyRefs) !== 0) { + + $sb = ""; + + $i = $fragments; + $j = $propertyRefs; + while(count($i)) { + $fragment = array_shift($i); + if ($fragment === null) { + $propertyName = array_shift($j); + + if ($propertyName === $name) { + // Should we maybe just log this as an error & move on? + // $this->log("Property ".$name." was circularly defined.", Project::MSG_ERR); + throw new BuildException("Property ".$name." was circularly defined."); + } + + $fragment = $this->getProject()->getProperty($propertyName); + if ($fragment === null) { + if ($props->containsKey($propertyName)) { + $fragment = $props->getProperty($propertyName); + $resolved = false; // parse again (could have been replaced w/ another var) + } else { + $fragment = "\${".$propertyName."}"; + } + } + } + $sb .= $fragment; + } + + $this->log("Resolved Property \"$value\" to \"$sb\"", Project::MSG_DEBUG); + $value = $sb; + $props->setProperty($name, $value); + + } // if (count($propertyRefs)) + + } // while (!$resolved) + + } // while (count($keys) + } + + + /** + * This method will parse a string containing ${value} style + * property values into two lists. The first list is a collection + * of text fragments, while the other is a set of string property names + * null entries in the first list indicate a property reference from the + * second list. + * + * This is slower than regex, but useful for this class, which has to handle + * multiple parsing passes for properties. + * + * @param string $value The string to be scanned for property references + * @param array &$fragments The found fragments + * @param array &$propertyRefs The found refs + */ + protected function parsePropertyString($value, &$fragments, &$propertyRefs) { + + $prev = 0; + $pos = 0; + + while (($pos = strpos($value, '$', $prev)) !== false) { + + if ($pos > $prev) { + array_push($fragments, StringHelper::substring($value, $prev, $pos-1)); + } + if ($pos === (strlen($value) - 1)) { + array_push($fragments, '$'); + $prev = $pos + 1; + } elseif ($value{$pos+1} !== '{' ) { + + // the string positions were changed to value-1 to correct + // a fatal error coming from function substring() + array_push($fragments, StringHelper::substring($value, $pos, $pos + 1)); + $prev = $pos + 2; + } else { + $endName = strpos($value, '}', $pos); + if ($endName === false) { + throw new BuildException("Syntax error in property: $value"); + } + $propertyName = StringHelper::substring($value, $pos + 2, $endName-1); + array_push($fragments, null); + array_push($propertyRefs, $propertyName); + $prev = $endName + 1; + } + } + + if ($prev < strlen($value)) { + array_push($fragments, StringHelper::substring($value, $prev)); + } + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/ReflexiveTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/ReflexiveTask.php.svn-base new file mode 100644 index 0000000..53737ca --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/ReflexiveTask.php.svn-base @@ -0,0 +1,155 @@ +. + */ + +require_once 'phing/Task.php'; + +/** + * This task is for using filter chains to make changes to files and overwrite the original files. + * + * This task was created to serve the need for "cleanup" tasks -- e.g. a ReplaceRegexp task or strip task + * being used to modify files and then overwrite the modified files. In many (most?) cases you probably + * should just use a copy task to preserve the original source files, but this task supports situations + * where there is no src vs. build directory, and modifying source files is actually desired. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * @author Hans Lellelid + * @version $Revision: 1.11 $ + * @package phing.tasks.system + */ +class ReflexiveTask extends Task { + + /** Single file to process. */ + private $file; + + /** Any filesets that should be processed. */ + private $filesets = array(); + + /** Any filters to be applied before append happens. */ + private $filterChains = array(); + + /** Alias for setFrom() */ + function setFile(PhingFile $f) { + $this->file = $f; + } + + /** Nested creator, adds a set of files (nested fileset attribute). */ + function createFileSet() { + $num = array_push($this->filesets, new FileSet()); + return $this->filesets[$num-1]; + } + + /** + * Creates a filterchain + * + * @return object The created filterchain object + */ + function createFilterChain() { + $num = array_push($this->filterChains, new FilterChain($this->project)); + return $this->filterChains[$num-1]; + } + + /** Append the file(s). */ + function main() { + + if ($this->file === null && empty($this->filesets)) { + throw new BuildException("You must specify a file or fileset(s) for the task."); + } + + // compile a list of all files to modify, both file attrib and fileset elements + // can be used. + + $files = array(); + + if ($this->file !== null) { + $files[] = $this->file; + } + + if (!empty($this->filesets)) { + $filenames = array(); + foreach($this->filesets as $fs) { + try { + $ds = $fs->getDirectoryScanner($this->project); + $filenames = $ds->getIncludedFiles(); // get included filenames + $dir = $fs->getDir($this->project); + foreach ($filenames as $fname) { + $files[] = new PhingFile($dir, $fname); + } + } catch (BuildException $be) { + $this->log($be->getMessage(), Project::MSG_WARN); + } + } + } + + $this->log("Applying reflexive processing to " . count($files) . " files."); + + // These "slots" allow filters to retrieve information about the currently-being-process files + $slot = $this->getRegisterSlot("currentFile"); + $basenameSlot = $this->getRegisterSlot("currentFile.basename"); + + + foreach($files as $file) { + // set the register slots + + $slot->setValue($file->getPath()); + $basenameSlot->setValue($file->getName()); + + // 1) read contents of file, pulling through any filters + $in = null; + try { + $contents = ""; + $in = FileUtils::getChainedReader(new FileReader($file), $this->filterChains, $this->project); + while(-1 !== ($buffer = $in->read())) { + $contents .= $buffer; + } + $in->close(); + } catch (Exception $e) { + if ($in) $in->close(); + $this->log("Erorr reading file: " . $e->getMessage(), Project::MSG_WARN); + } + + try { + // now create a FileWriter w/ the same file, and write to the file + $out = new FileWriter($file); + $out->write($contents); + $out->close(); + $this->log("Applying reflexive processing to " . $file->getPath(), Project::MSG_VERBOSE); + } catch (Exception $e) { + if ($out) $out->close(); + $this->log("Error writing file back: " . $e->getMessage(), Project::MSG_WARN); + } + + } + + } + +} \ No newline at end of file diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/ResolvePathTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/ResolvePathTask.php.svn-base new file mode 100644 index 0000000..5e333e9 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/ResolvePathTask.php.svn-base @@ -0,0 +1,122 @@ +. + */ + +require_once 'phing/Task.php'; + +/** + * Task for resolving relative paths and setting absolute path in property value. + * + * This task was created to address a need for resolving absolute paths of files / directories. + * In many cases a relative directory (e.g. "./build") is specified, but it needs to be treated + * as an absolute path since other build files (e.g. in subdirs) should all be using the same + * path -- and not treating it as a relative path to their own directory. + * + * + * + * + * Resolved [absolute] path: ${absolute_path} + * + * + * TODO: + * - Possibly integrate this with PackageAsPath, for handling/resolving dot-path paths. + * + * @author Hans Lellelid + * @version $Revision: 1.6 $ + * @package phing.tasks.system + */ +class ResolvePathTask extends Task { + + /** Name of property to set. */ + private $propertyName; + + /** The [possibly] relative file/path that needs to be resolved. */ + private $file; + + /** Base directory used for resolution. */ + private $dir; + + /** + * Set the name of the property to set. + * @param string $v Property name + * @return void + */ + public function setPropertyName($v) { + $this->propertyName = $v; + } + + /** + * Sets a base dir to use for resolution. + * @param PhingFile $d + */ + function setDir(PhingFile $d) { + $this->dir = $d; + } + + /** + * Sets a path (file or directory) that we want to resolve. + * This is the same as setFile() -- just more generic name so that it's + * clear that you can also use it to set directory. + * @param string $f + * @see setFile() + */ + function setPath($f) { + $this->file = $f; + } + + /** + * Sets a file that we want to resolve. + * @param string $f + */ + function setFile($f) { + $this->file = $f; + } + + /** + * Perform the resolution & set property. + */ + public function main() { + + if (!$this->propertyName) { + throw new BuildException("You must specify the propertyName attribute", $this->getLocation()); + } + + // Currently only files are supported + if ($this->file === null) { + throw new BuildException("You must specify a path to resolve", $this->getLocation()); + } + + $fs = FileSystem::getFileSystem(); + + // if dir attribute was specified then we should + // use that as basedir to which file was relative. + // -- unless the file specified is an absolute path + if ($this->dir !== null && !$fs->isAbsolute(new PhingFile($this->file))) { + $resolved = new PhingFile($this->dir->getPath(), $this->file); + } else { + // otherwise just resolve it relative to project basedir + $resolved = $this->project->resolveFile($this->file); + } + + $this->log("Resolved " . $this->file . " to " . $resolved->getAbsolutePath(), Project::MSG_INFO); + $this->project->setProperty($this->propertyName, $resolved->getAbsolutePath()); + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/SequentialTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/SequentialTask.php.svn-base new file mode 100644 index 0000000..df4aafb --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/SequentialTask.php.svn-base @@ -0,0 +1,57 @@ +. + */ + +require_once 'phing/Task.php'; +require_once 'phing/TaskContainer.php'; + +/** + * Sequential is a container task that contains other Phing Task objects. + * + * The sequential task has no attributes and does not support any nested + * elements apart from Ant tasks. Any valid Ant task may be embedded within the + * sequential task. + * + * @since 2.1.2 + */ +class SequentialTask extends Task implements TaskContainer { + + /** Optional Vector holding the nested tasks */ + private $nestedTasks = array(); + + /** + * Add a nested task to Sequential. + * @param Task $nestedTask Nested task to execute Sequential + */ + public function addTask(Task $nestedTask) { + $this->nestedTasks[] = $nestedTask; + } + + /** + * Execute all nestedTasks. + * @throws BuildException if one of the nested tasks fails. + */ + public function main() { + foreach($this->nestedTasks as $task) { + $task->perform(); + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/TaskdefTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/TaskdefTask.php.svn-base new file mode 100644 index 0000000..25fc670 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/TaskdefTask.php.svn-base @@ -0,0 +1,127 @@ +. + */ + +require_once 'phing/Task.php'; + +/** + * Register a task for use within a buildfile. + * + * This is for registering your own tasks -- or any non-core Task -- for use within a buildfile. + * If you find that you are using a particular class frequently, you may want to edit the + * phing/tasks/defaults.properties file so that it is included by default. You may also + * want to submit it (if LGPL or compatible license) to be included in Phing distribution. + * + *

    + *   
    + *   .
    + *   .
    + *   
    + * 
    + * + * TODO: + * -- possibly refactor since this is almost the same as TypeDefTask + * (right now these are just too simple to really justify creating an abstract class) + * + * @author Hans Lellelid + * @version $Revision: 1.11 $ + * @package phing.tasks.system + */ +class TaskdefTask extends Task { + + /** Tag name for task that will be used in XML */ + private $name; + + /** + * Classname of task to register. + * This can be a dot-path -- relative to a location on PHP include_path. + * E.g. path.to.MyClass -> path/to/MyClass.php + * @var string + */ + private $classname; + + /** + * Path to add to PHP include_path to aid in finding specified class. + * @var Path + */ + private $classpath; + + /** + * Refid to already defined classpath + */ + private $classpathId; + + /** + * Set the classpath to be used when searching for component being defined + * + * @param Path $classpath An Path object containing the classpath. + */ + public function setClasspath(Path $classpath) { + if ($this->classpath === null) { + $this->classpath = $classpath; + } else { + $this->classpath->append($classpath); + } + } + + /** + * Create the classpath to be used when searching for component being defined + */ + public function createClasspath() { + if ($this->classpath === null) { + $this->classpath = new Path($this->project); + } + return $this->classpath->createPath(); + } + + /** + * Reference to a classpath to use when loading the files. + */ + public function setClasspathRef(Reference $r) { + $this->classpathId = $r->getRefId(); + $this->createClasspath()->setRefid($r); + } + + /** + * Sets the name that will be used in XML buildfile. + * @param string $name + */ + public function setName($name) { + $this->name = $name; + } + + /** + * Sets the class name / dotpath to use. + * @param string $class + */ + public function setClassname($class) { + $this->classname = $class; + } + + /** Main entry point */ + public function main() { + if ($this->name === null || $this->classname === null) { + throw new BuildException("You must specify name and class attributes for ."); + } + $this->log("Task " . $this->name . " will be handled by class " . $this->classname, Project::MSG_VERBOSE); + $this->project->addTaskDefinition($this->name, $this->classname, $this->classpath); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/TouchTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/TouchTask.php.svn-base new file mode 100644 index 0000000..66cc2f3 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/TouchTask.php.svn-base @@ -0,0 +1,170 @@ +. + */ + +require_once 'phing/Task.php'; +include_once 'phing/util/DirectoryScanner.php'; +include_once 'phing/types/FileSet.php'; +include_once 'phing/util/FileUtils.php'; +include_once 'phing/system/io/PhingFile.php'; +include_once 'phing/system/io/IOException.php'; + +/** + * Touch a file and/or fileset(s); corresponds to the Unix touch command. + * + * If the file to touch doesn't exist, an empty one is created. + * + * @version $Revision: 1.12 $ + * @package phing.tasks.system + */ +class TouchTask extends Task { + + private $file; + private $millis = -1; + private $dateTime; + private $filesets = array(); + private $fileUtils; + + function __construct() { + $this->fileUtils = new FileUtils(); + } + + /** + * Sets a single source file to touch. If the file does not exist + * an empty file will be created. + */ + function setFile(PhingFile $file) { + $this->file = $file; + } + + /** + * the new modification time of the file + * in milliseconds since midnight Jan 1 1970. + * Optional, default=now + */ + function setMillis($millis) { + $this->millis = (int) $millis; + } + + /** + * the new modification time of the file + * in the format MM/DD/YYYY HH:MM AM or PM; + * Optional, default=now + */ + function setDatetime($dateTime) { + $this->dateTime = (string) $dateTime; + } + + /** + * Nested creator, adds a set of files (nested fileset attribute). + * @return FileSet + */ + function createFileSet() { + $num = array_push($this->filesets, new FileSet()); + return $this->filesets[$num-1]; + } + + /** + * Execute the touch operation. + */ + function main() { + $savedMillis = $this->millis; + + if ($this->file === null && count($this->filesets) === 0) { + throw new BuildException("Specify at least one source - a file or a fileset."); + } + + if ($this->file !== null && $this->file->exists() && $this->file->isDirectory()) { + throw new BuildException("Use a fileset to touch directories."); + } + + try { // try to touch file + if ($this->dateTime !== null) { + $this->setMillis(strtotime($this->dateTime)); + if ($this->millis < 0) { + throw new BuildException("Date of {$this->dateTime} results in negative milliseconds value relative to epoch (January 1, 1970, 00:00:00 GMT)."); + } + } + $this->_touch(); + } catch (Exception $ex) { + throw new BuildException("Error touch()ing file", $ex, $this->location); + } + + $this->millis = $savedMillis; + + } + + /** + * Does the actual work. + */ + function _touch() { + if ($this->file !== null) { + if (!$this->file->exists()) { + $this->log("Creating " . $this->file->__toString(), Project::MSG_INFO); + try { // try to create file + $this->file->createNewFile(); + } catch(IOException $ioe) { + throw new BuildException("Error creating new file " . $this->file->__toString(), $ioe, $this->location); + } + } + } + + $resetMillis = false; + if ($this->millis < 0) { + $resetMillis = true; + $this->millis = Phing::currentTimeMillis(); + } + + if ($this->file !== null) { + $this->touchFile($this->file); + } + + // deal with the filesets + foreach($this->filesets as $fs) { + + $ds = $fs->getDirectoryScanner($this->getProject()); + $fromDir = $fs->getDir($this->getProject()); + + $srcFiles = $ds->getIncludedFiles(); + $srcDirs = $ds->getIncludedDirectories(); + + for ($j=0,$_j=count($srcFiles); $j < $_j; $j++) { + $this->touchFile(new PhingFile($fromDir, (string) $srcFiles[$j])); + } + + for ($j=0,$_j=count($srcDirs); $j < $_j ; $j++) { + $this->touchFile(new PhingFile($fromDir, (string) $srcDirs[$j])); + } + } + + if ($resetMillis) { + $this->millis = -1; + } + } + + private function touchFile($file) { + if ( !$file->canWrite() ) { + throw new BuildException("Can not change modification date of read-only file " . $file->__toString()); + } + $file->setLastModified($this->millis); + } + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/TstampTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/TstampTask.php.svn-base new file mode 100644 index 0000000..463fe89 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/TstampTask.php.svn-base @@ -0,0 +1,168 @@ +. + */ + +require_once 'phing/Task.php'; + +/** + * Sets properties to the current time, or offsets from the current time. + * The default properties are TSTAMP, DSTAMP and TODAY; + * + * Based on Ant's Tstamp task. + * + * @author Michiel Rook + * @version $Revision: 1.6 $ + * @package phing.tasks.system + * @since 2.2.0 + */ +class TstampTask extends Task +{ + private $customFormats = array(); + + private $prefix = ""; + + /** + * Set a prefix for the properties. If the prefix does not end with a "." + * one is automatically added. + * @param prefix the prefix to use. + */ + public function setPrefix($prefix) + { + $this->prefix = $prefix; + + if (!empty($this->prefix)) + { + $this->prefix.= "."; + } + } + + /** + * Adds a custom format + * + * @param TstampCustomFormat custom format + */ + public function addFormat(TstampCustomFormat $cf) + { + $this->customFormats[] = $cf; + } + + /** + * Create the timestamps. Custom ones are done before + * the standard ones. + * + * @throws BuildException + */ + public function main() + { + foreach ($this->customFormats as $cf) + { + $cf->execute($this); + } + + $dstamp = strftime('%Y%m%d'); + $this->prefixProperty('DSTAMP', $dstamp); + + $tstamp = strftime('%H%M'); + $this->prefixProperty('TSTAMP', $tstamp); + + $today = strftime('%B %d %Y'); + $this->prefixProperty('TODAY', $today); + } + + /** + * helper that encapsulates prefix logic and property setting + * policy (i.e. we use setNewProperty instead of setProperty). + */ + public function prefixProperty($name, $value) + { + $this->getProject()->setNewProperty($this->prefix . $name, $value); + } +} + +class TstampCustomFormat +{ + private $propertyName = ""; + private $pattern = ""; + private $locale = ""; + + /** + * The property to receive the date/time string in the given pattern + * + * @param propertyName the name of the property. + */ + public function setProperty($propertyName) + { + $this->propertyName = $propertyName; + } + + /** + * The date/time pattern to be used. The values are as + * defined by the PHP strftime() function. + * + * @param pattern + */ + public function setPattern($pattern) + { + $this->pattern = $pattern; + } + + /** + * The locale used to create date/time string. + * + * @param locale + */ + public function setLocale($locale) + { + $this->locale = $locale; + } + + /** + * validate parameter and execute the format. + * + * @param TstampTask reference to task + */ + public function execute(TstampTask $tstamp) + { + if (empty($this->propertyName)) + { + throw new BuildException("property attribute must be provided"); + } + + if (empty($this->pattern)) + { + throw new BuildException("pattern attribute must be provided"); + } + + if (!empty($this->locale)) + { + setlocale(LC_ALL, $this->locale); + } + + $value = strftime($this->pattern); + $tstamp->prefixProperty($this->propertyName, $value); + + if (!empty($this->locale)) + { + // reset locale + setlocale(LC_ALL, NULL); + } + } +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/TypedefTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/TypedefTask.php.svn-base new file mode 100644 index 0000000..7ad4d35 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/TypedefTask.php.svn-base @@ -0,0 +1,125 @@ +. + */ + +require_once 'phing/Task.php'; + +/** + * Register a datatype for use within a buildfile. + * + * This is for registering your own datatypes for use within a buildfile. + * + * If you find that you are using a particular class frequently, you may want to edit the + * phing/types/defaults.properties file so that it is included by default. You may also + * want to submit it (if LGPL or compatible license) to be included in Phing distribution. + * + *
    + *   
    + *   .
    + *   
    + *     
    + *   
    + * 
    + * + * TODO: + * -- possibly refactor since this is almost the same as TaskDefTask + * (right now these are just too simple to really justify creating an abstract class) + * + * @author Hans Lellelid + * @version $Revision: 1.7 $ + * @package phing.tasks.system + */ +class TypedefTask extends Task { + + /** Tag name for datatype that will be used in XML */ + private $name; + + /** + * Classname of task to register. + * This can be a dot-path -- relative to a location on PHP include_path. + * E.g. path.to.MyClass -> path/to/MyClass.php + * @var string + */ + private $classname; + + /** + * Path to add to PHP include_path to aid in finding specified class. + * @var Path + */ + private $classpath; + + /** Refid to already defined classpath */ + private $classpathId; + + /** + * Set the classpath to be used when searching for component being defined + * + * @param Path $classpath An Path object containing the classpath. + */ + public function setClasspath(Path $classpath) { + if ($this->classpath === null) { + $this->classpath = $classpath; + } else { + $this->classpath->append($classpath); + } + } + + /** + * Create the classpath to be used when searching for component being defined + */ + public function createClasspath() { + if ($this->classpath === null) { + $this->classpath = new Path($this->project); + } + return $this->classpath->createPath(); + } + + /** + * Reference to a classpath to use when loading the files. + */ + public function setClasspathRef(Reference $r) { + $this->classpathId = $r->getRefId(); + $this->createClasspath()->setRefid($r); + } + + /** Main entry point */ + public function main() { + if ($this->name === null || $this->classname === null) { + throw new BuildException("You must specify name and class attributes for ."); + } + $this->project->addDataTypeDefinition($this->name, $this->classname, $this->classpath); + } + + /** + * Sets the name that will be used in XML buildfile. + * @param string $name + */ + public function setName($name) { + $this->name = $name; + } + + /** + * Sets the class name / dotpath to use. + * @param string $class + */ + public function setClassname($class) { + $this->classname = $class; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/UpToDateTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/UpToDateTask.php.svn-base new file mode 100644 index 0000000..4aef5b4 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/UpToDateTask.php.svn-base @@ -0,0 +1,217 @@ +. + */ + +require_once 'phing/Task.php'; +include_once 'phing/tasks/system/condition/Condition.php'; +include_once 'phing/util/DirectoryScanner.php'; +include_once 'phing/util/SourceFileScanner.php'; +include_once 'phing/mappers/MergeMapper.php'; + +/** + * Sets the given property if the specified target has a timestamp + * greater than all of the source files. + * + * @author Hans Lellelid (Phing) + * @author William Ferguson (Ant) + * @author Hiroaki Nakamura (Ant) + * @author Stefan Bodewig (Ant) + * @version $Revision: 1.6 $ + * @package phing.tasks.system + */ +class UpToDateTask extends Task implements Condition { + + private $_property; + private $_value; + private $_sourceFile; + private $_targetFile; + private $sourceFileSets = array(); + + protected $mapperElement = null; + + /** + * The property to set if the target file is more up-to-date than + * (each of) the source file(s). + * + * @param property the name of the property to set if Target is up-to-date. + */ + public function setProperty($property) { + $this->_property = $property; + } + + /** + * The value to set the named property to if the target file is more + * up-to-date than (each of) the source file(s). Defaults to 'true'. + * + * @param value the value to set the property to if Target is up-to-date + */ + public function setValue($value) { + $this->_value = $value; + } + + /** + * Returns the value, or "true" if a specific value wasn't provided. + */ + private function getValue() { + return ($this->_value !== null) ? $this->_value : "true"; + } + + /** + * The file which must be more up-to-date than (each of) the source file(s) + * if the property is to be set. + * + * @param file the file we are checking against. + */ + public function setTargetFile($file) { + if (is_string($file)) { + $file = new PhingFile($file); + } + $this->_targetFile = $file; + } + + /** + * The file that must be older than the target file + * if the property is to be set. + * + * @param file the file we are checking against the target file. + */ + public function setSrcfile($file) { + if (is_string($file)) { + $file = new PhingFile($file); + } + $this->_sourceFile = $file; + } + + /** + * Nested element. + */ + public function createSrcfiles() { + $fs = new FileSet(); + $this->sourceFileSets[] = $fs; + return $fs; + } + + /** + * Defines the FileNameMapper to use (nested mapper element). + */ + public function createMapper() { + if ($this->mapperElement !== null) { + throw new BuildException("Cannot define more than one mapper", + $this->location); + } + $this->mapperElement = new Mapper($this->getProject()); + return $this->mapperElement; + } + + /** + * Evaluate (all) target and source file(s) to + * see if the target(s) is/are up-to-date. + * @return boolean + */ + public function evaluate() { + if (count($this->sourceFileSets) === 0 && $this->_sourceFile === null) { + throw new BuildException("At least one srcfile or a nested " + . " element must be set."); + } + + if (count($this->sourceFileSets) > 0 && $this->_sourceFile !== null) { + throw new BuildException("Cannot specify both the srcfile " + . "attribute and a nested " + . "element."); + } + + if ($this->_targetFile === null && $this->mapperElement === null) { + throw new BuildException("The targetfile attribute or a nested " + . "mapper element must be set."); + } + + // if the target file is not there, then it can't be up-to-date + if ($this->_targetFile !== null && !$this->_targetFile->exists()) { + return false; + } + + // if the source file isn't there, throw an exception + if ($this->_sourceFile !== null && !$this->_sourceFile->exists()) { + throw new BuildException($this->_sourceFile->getAbsolutePath() + . " not found."); + } + + $upToDate = true; + for($i=0,$size=count($this->sourceFileSets); $i < $size && $upToDate; $i++) { + $fs = $this->sourceFileSets[$i]; + $ds = $fs->getDirectoryScanner($this->project); + $upToDate = $upToDate && $this->scanDir($fs->getDir($this->project), + $ds->getIncludedFiles()); + } + + if ($this->_sourceFile !== null) { + if ($this->mapperElement === null) { + $upToDate = $upToDate && + ($this->_targetFile->lastModified() >= $this->_sourceFile->lastModified()); + } else { + $sfs = new SourceFileScanner($this); + $upToDate = $upToDate && + count($sfs->restrict($this->_sourceFile->getAbsolutePath(), + null, null, + $this->mapperElement->getImplementation())) === 0; + } + } + return $upToDate; + } + + + /** + * Sets property to true if target file(s) have a more recent timestamp + * than (each of) the corresponding source file(s). + * @throws BuildException + */ + public function main() { + if ($this->_property === null) { + throw new BuildException("property attribute is required.", + $this->location); + } + $upToDate = $this->evaluate(); + if ($upToDate) { + $this->project->setNewProperty($this->_property, $this->getValue()); + if ($this->mapperElement === null) { + $this->log("File \"" . $this->_targetFile->getAbsolutePath() + . "\" is up-to-date.", Project::MSG_VERBOSE); + } else { + $this->log("All target files are up-to-date.", + Project::MSG_VERBOSE); + } + } + } + + protected function scanDir(PhingFile $srcDir, $files) { + $sfs = new SourceFileScanner($this); + $mapper = null; + $dir = $srcDir; + if ($this->mapperElement === null) { + $mm = new MergeMapper(); + $mm->setTo($this->_targetFile->getAbsolutePath()); + $mapper = $mm; + $dir = null; + } else { + $mapper = $this->mapperElement->getImplementation(); + } + return (count($sfs->restrict($files, $srcDir, $dir, $mapper)) === 0); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/WarnTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/WarnTask.php.svn-base new file mode 100644 index 0000000..ebf341c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/WarnTask.php.svn-base @@ -0,0 +1,35 @@ +. + */ + +require_once 'phing/tasks/system/EchoTask.php'; + +/** + * Simple task to echo a warning message (Project::MSG_WARN) to all output devices. + * + * @author Hans Lellelid + * @version $Revision: 1.1 $ $Date$ + * @package phing.tasks.system + */ +class WarnTask extends EchoTask { + function main() { + $this->log($this->msg, Project::MSG_WARN); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/XsltTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/XsltTask.php.svn-base new file mode 100644 index 0000000..9a17791 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/.svn/text-base/XsltTask.php.svn-base @@ -0,0 +1,81 @@ +. + */ + +require_once 'phing/tasks/system/CopyTask.php'; +include_once 'phing/system/io/FileReader.php'; +include_once 'phing/system/io/FileWriter.php'; +include_once 'phing/filters/XsltFilter.php'; + +/** + * Implements an XSLT processing filter while copying files. + * + * This is a shortcut for calling the task with the XSLTFilter used + * in the section. + * + * @author Andreas Aderhold, andi@binarycloud.com + * @version $Revision: 1.8 $ + * @package phing.tasks.system + */ +class XsltTask extends CopyTask { + + /** XSLTFilter object that we use to handle transformation. */ + private $xsltFilter; + + /** Parameters to pass to XSLT procesor. */ + private $parameters = array(); + + /** + * Setup the filterchains w/ XSLTFilter that we will use while copying the files. + */ + function init() { + $xf = new XsltFilter(); + $chain = $this->createFilterChain($this->getProject()); + $chain->addXsltFilter($xf); + $this->xsltFilter = $xf; + } + + /** + * Set any XSLT Param and invoke CopyTask::main() + * @see CopyTask::main() + */ + function main() { + $this->log("Doing XSLT transformation using stylesheet " . $this->xsltFilter->getStyle(), Project::MSG_VERBOSE); + $this->xsltFilter->setParams($this->parameters); + parent::main(); + } + + /** + * Set the stylesheet to use. + * @param PhingFile $style + */ + function setStyle(PhingFile $style) { + $this->xsltFilter->setStyle($style); + } + + /** + * Support nested tags useing XSLTParam class. + * @return XSLTParam + */ + function createParam() { + $num = array_push($this->parameters, new XSLTParam()); + return $this->parameters[$num-1]; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/AdhocTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/AdhocTask.php new file mode 100644 index 0000000..e0c8b18 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/AdhocTask.php @@ -0,0 +1,88 @@ +. + */ + +require_once 'phing/Task.php'; + +/** + * Abstract class for creating adhoc Phing components in buildfile. + * + * By itself this class can be used to declare a single class within your buildfile. + * You can then reference this class in any task that takes custom classes (selectors, + * mappers, filters, etc.) + * + * Subclasses exist for conveniently declaring and registering tasks and types. + * + * @author Hans Lellelid + * @version $Revision: 1.6 $ + * @package phing.tasks.system + */ +class AdhocTask extends Task { + + /** + * The PHP script + * @var string + */ + protected $script; + + protected $newClasses = array(); + + /** + * Main entry point + */ + public function main() { + $this->execute(); + if ($this->newClasses) { + foreach($this->newClasses as $classname) { + $this->log("Added adhoc class " . $classname, Project::MSG_VERBOSE); + } + } else { + $this->log("Adhoc task executed but did not result in any new classes.", Project::MSG_VERBOSE); + } + } + + /** + * Get array of names of newly defined classes. + * @return array + */ + protected function getNewClasses() { + return $this->newClasses; + } + + /** + * Load the adhoc class, and perform any core validation. + * @return string The classname of the ProjectComponent class. + * @throws BuildException - if more than one class is defined. + */ + protected function execute() { + $classes = get_declared_classes(); + eval($this->script); + $this->newClasses = array_diff(get_declared_classes(), $classes); + } + + /** + * Set the script. + * @param string $script + */ + public function addText($script) { + $this->script = $script; + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/AdhocTaskdefTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/AdhocTaskdefTask.php new file mode 100644 index 0000000..2f436e2 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/AdhocTaskdefTask.php @@ -0,0 +1,90 @@ +. + */ + +require_once 'phing/tasks/system/AdhocTask.php'; + +/** + * A class for creating adhoc tasks in build file. + * + * + * bar = $bar; + * } + * + * function main() { + * $this->log("In FooTest: " . $this->bar); + * } + * } + * + * ]]> + * + * + * + * + * @author Hans Lellelid + * @version $Revision: 1.5 $ + * @package phing.tasks.system + */ +class AdhocTaskdefTask extends AdhocTask { + + /** + * The tag that refers to this task. + */ + private $name; + + /** + * Set the tag that will represent this adhoc task/type. + * @param string $name + */ + public function setName($name) { + $this->name = $name; + } + + /** Main entry point */ + public function main() { + if ($this->name === null) { + throw new BuildException("The name attribute is required for adhoc task definition.",$this->location); + } + + $this->execute(); + + $classes = $this->getNewClasses(); + if (count($classes) !== 1) { + throw new BuildException("You must define one (and only one) class for AdhocTaskdefTask."); + } + $classname = array_shift($classes); + + // instantiate it to make sure it is an instance of Task + $t = new $classname(); + if (!($t instanceof Task)) { + throw new BuildException("The adhoc class you defined must be an instance of phing.Task", $this->location); + } + + $this->log("Task " . $this->name . " will be handled by class " . $classname, Project::MSG_VERBOSE); + $this->project->addTaskDefinition($this->name, $classname); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/AdhocTypedefTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/AdhocTypedefTask.php new file mode 100644 index 0000000..7fea3ee --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/AdhocTypedefTask.php @@ -0,0 +1,71 @@ +. + */ + +require_once 'phing/tasks/system/AdhocTask.php'; + +/** + * A class for creating adhoc datatypes in build file. + * + * @author Hans Lellelid + * @version $Revision: 1.4 $ + * @package phing.tasks.system + */ +class AdhocTypedefTask extends AdhocTask { + + /** + * The tag that refers to this task. + */ + private $name; + + /** + * Set the tag that will represent this adhoc task/type. + * @param string $name + */ + public function setName($name) { + $this->name = $name; + } + + /** Main entry point */ + public function main() { + + if ($this->name === null) { + throw new BuildException("The name attribute is required for adhoc task definition.",$this->location); + } + + $this->execute(); + + $classes = $this->getNewClasses(); + if (count($classes) !== 1) { + throw new BuildException("You must define one (and only one) class for AdhocTypedefTask."); + } + $classname = array_shift($classes); + + // instantiate it to make sure it is an instance of ProjectComponent + $t = new $classname(); + if (!($t instanceof ProjectComponent)) { + throw new BuildException("The adhoc class you defined must be an instance of phing.ProjectComponent", $this->location); + } + + $this->log("Datatype " . $this->name . " will be handled by class " . $classname, Project::MSG_VERBOSE); + $this->project->addDataTypeDefinition($this->name, $classname); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/AppendTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/AppendTask.php new file mode 100644 index 0000000..39fa958 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/AppendTask.php @@ -0,0 +1,240 @@ +. + */ + +require_once 'phing/Task.php'; +include_once 'phing/types/FileList.php'; +include_once 'phing/types/FileSet.php'; + +/** + * Appends text, contents of a file or set of files defined by a filelist to a destination file. + * + * + * + * + * OR + * + * + * + * + * + * OR + * + * + * + * + * + * + * + * + * + * + * + * @package phing.tasks.system + * @version $Revision: 1.14 $ + */ +class AppendTask extends Task { + + /** Append stuff to this file. */ + private $to; + + /** Explicit file to append. */ + private $file; + + /** Any filesets of files that should be appended. */ + private $filesets = array(); + + /** Any filelists of files that should be appended. */ + private $filelists = array(); + + /** Any filters to be applied before append happens. */ + private $filterChains = array(); + + /** Text to append. (cannot be used in conjunction w/ files or filesets) */ + private $text; + + /** Sets specific file to append. */ + function setFile(PhingFile $f) { + $this->file = $f; + } + + /** + * Set target file to append to. + * @deprecated Will be removed with final release. + */ + function setTo(PhingFile $f) { + $this->log("The 'to' attribute is deprecated in favor of 'destFile'; please update your code.", Project::MSG_WARN); + $this->to = $f; + } + + /** + * The more conventional naming for method to set destination file. + * @param PhingFile $f + */ + function setDestFile(PhingFile $f) { + $this->to = $f; + } + + /** + * Supports embedded element. + * @return FileList + */ + function createFileList() { + $num = array_push($this->filelists, new FileList()); + return $this->filelists[$num-1]; + } + + /** + * Nested creator, adds a set of files (nested attribute). + * This is for when you don't care what order files get appended. + * @return FileSet + */ + function createFileSet() { + $num = array_push($this->filesets, new FileSet()); + return $this->filesets[$num-1]; + } + + /** + * Creates a filterchain + * + * @return FilterChain The created filterchain object + */ + function createFilterChain() { + $num = array_push($this->filterChains, new FilterChain($this->project)); + return $this->filterChains[$num-1]; + } + + /** + * Sets text to append. (cannot be used in conjunction w/ files or filesets). + * @param string $txt + */ + function setText($txt) { + $this->text = (string) $txt; + } + + /** + * Sets text to append. Supports CDATA. + * @param string $txt + */ + function addText($txt) { + $this->text = (string) $txt; + } + + + /** Append the file(s). */ + function main() { + + if ($this->to === null) { + throw new BuildException("You must specify the 'destFile' attribute"); + } + + if ($this->file === null && empty($this->filelists) && empty($this->filesets) && $this->text === null) { + throw new BuildException("You must specify a file, use a filelist, or specify a text value."); + } + + if ($this->text !== null && ($this->file !== null || !empty($this->filelists))) { + throw new BuildException("Cannot use text attribute in conjunction with file or filelists."); + } + + // create a filwriter to append to "to" file. + $writer = new FileWriter($this->to, $append=true); + + if ($this->text !== null) { + + // simply append the text + $this->log("Appending string to " . $this->to->getPath()); + + // for debugging primarily, maybe comment + // out for better performance(?) + $lines = explode("\n", $this->text); + foreach($lines as $line) { + $this->log($line, Project::MSG_VERBOSE); + } + + $writer->write($this->text); + + } else { + + // append explicitly-specified file + if ($this->file !== null) { + try { + $this->appendFile($writer, $this->file); + } catch (Exception $ioe) { + $this->log("Unable to append contents of file " . $this->file->getAbsolutePath() . ": " . $ioe->getMessage(), Project::MSG_WARN); + } + } + + // append the files in the filelists + foreach($this->filelists as $fl) { + try { + $files = $fl->getFiles($this->project); + $this->appendFiles($writer, $files, $fl->getDir($this->project)); + } catch (BuildException $be) { + $this->log($be->getMessage(), Project::MSG_WARN); + } + } + + // append any files in filesets + foreach($this->filesets as $fs) { + try { + $files = $fs->getDirectoryScanner($this->project)->getIncludedFiles(); + $this->appendFiles($writer, $files, $fs->getDir($this->project)); + } catch (BuildException $be) { + $this->log($be->getMessage(), Project::MSG_WARN); + } + } + + } // if ($text ) {} else {} + + $writer->close(); + } + + /** + * Append an array of files in a directory. + * @param FileWriter $writer The FileWriter that is appending to target file. + * @param array $files array of files to delete; can be of zero length + * @param PhingFile $dir directory to work from + */ + private function appendFiles(FileWriter $writer, $files, PhingFile $dir) { + if (!empty($files)) { + $this->log("Attempting to append " . count($files) . " files" .($dir !== null ? ", using basedir " . $dir->getPath(): "")); + $basenameSlot = Register::getSlot("task.append.current_file"); + $pathSlot = Register::getSlot("task.append.current_file.path"); + foreach($files as $filename) { + try { + $f = new PhingFile($dir, $filename); + $basenameSlot->setValue($filename); + $pathSlot->setValue($f->getPath()); + $this->appendFile($writer, $f); + } catch (Exception $ioe) { + $this->log("Unable to append contents of file " . $f->getAbsolutePath() . ": " . $ioe->getMessage(), Project::MSG_WARN); + } + } + } // if !empty + } + + private function appendFile(FileWriter $writer, PhingFile $f) { + $in = FileUtils::getChainedReader(new FileReader($f), $this->filterChains, $this->project); + while(-1 !== ($buffer = $in->read())) { // -1 indicates EOF + $writer->write($buffer); + } + $this->log("Appending contents of " . $f->getPath() . " to " . $this->to->getPath()); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/AvailableTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/AvailableTask.php new file mode 100644 index 0000000..0f03aa5 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/AvailableTask.php @@ -0,0 +1,135 @@ +. + */ + +require_once 'phing/Task.php'; +include_once 'phing/tasks/system/condition/ConditionBase.php'; + +/** + * task. + * + * Note: implements condition interface (see condition/Condition.php) + * + * @author Andreas Aderhold + * @copyright � 2001,2002 THYRELL. All rights reserved + * @version $Revision: 1.11 $ + * @package phing.tasks.system + */ +class AvailableTask extends Task { + + /** Property to check for. */ + private $property; + + /** Value property should be set to. */ + private $value = "true"; + + /** Resource to check for */ + private $resource; + + private $type = null; + private $filepath = null; + + function setProperty($property) { + $this->property = (string) $property; + } + + function setValue($value) { + $this->value = (string) $value; + } + + function setFile(PhingFile $file) { + $this->file = $file; + } + + function setResource($resource) { + $this->resource = (string) $resource; + } + + function setType($type) { + $this->type = (string) strtolower($type); + } + + function main() { + if ($this->property === null) { + throw new BuildException("property attribute is required", $this->location); + } + if ($this->evaluate()) { + $this->project->setProperty($this->property, $this->value); + } + } + + function evaluate() { + if ($this->file === null && $this->resource === null) { + throw new BuildException("At least one of (file|resource) is required", $this->location); + } + + if ($this->type !== null && ($this->type !== "file" && $this->type !== "dir")) { + throw new BuildException("Type must be one of either dir or file", $this->location); + } + + if (($this->file !== null) && !$this->_checkFile()) { + $this->log("Unable to find " . $this->file->__toString() . " to set property " . $this->property, Project::MSG_VERBOSE); + return false; + } + + if (($this->resource !== null) && !$this->_checkResource($this->resource)) { + $this->log("Unable to load resource " . $this->resource . " to set property " . $this->property, Project::MSG_VERBOSE); + return false; + } + + return true; + } + + // this is prepared for the path type + private function _checkFile() { + if ($this->filepath === null) { + return $this->_checkFile1($this->file); + } else { + $paths = $this->filepath->listDir(); + for($i=0,$pcnt=count($paths); $i < $pcnt; $i++) { + $this->log("Searching " . $paths[$i], Project::MSG_VERBOSE); + $tmp = new PhingFile($paths[$i], $this->file->getName()); + if($tmp->isFile()) { + return true; + } + } + } + return false; + } + + private function _checkFile1(PhingFile $file) { + if ($this->type !== null) { + if ($this->type === "dir") { + return $file->isDirectory(); + } else if ($this->type === "file") { + return $file->isFile(); + } + } + return $file->exists(); + } + + private function _checkResource($resource) { + if (null != ($resourcePath = Phing::getResourcePath($resource))) { + return $this->_checkFile1(new PhingFile($resourcePath)); + } else { + return false; + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/ChmodTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/ChmodTask.php new file mode 100644 index 0000000..b17dc53 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/ChmodTask.php @@ -0,0 +1,203 @@ +. + */ + +require_once 'phing/Task.php'; +include_once 'phing/types/FileSet.php'; + +/** + * Task that changes the permissions on a file/directory. + * + * @author Manuel Holtgrewe + * @author Hans Lellelid + * @version $Revision: 1.12 $ + * @package phing.tasks.system + */ +class ChmodTask extends Task { + + private $file; + + private $mode; + + private $filesets = array(); + + private $filesystem; + + private $quiet = false; + private $failonerror = true; + private $verbose = true; + + /** + * This flag means 'note errors to the output, but keep going' + * @see setQuiet() + */ + function setFailonerror($bool) { + $this->failonerror = $bool; + } + + /** + * Set quiet mode, which suppresses warnings if chmod() fails. + * @see setFailonerror() + */ + function setQuiet($bool) { + $this->quiet = $bool; + if ($this->quiet) { + $this->failonerror = false; + } + } + + /** + * Set verbosity, which if set to false surpresses all but an overview + * of what happened. + */ + function setVerbose($bool) { + $this->verbose = (bool)$bool; + } + + /** + * Sets a single source file to touch. If the file does not exist + * an empty file will be created. + */ + function setFile(PhingFile $file) { + $this->file = $file; + } + + function setMode($str) { + $this->mode = $str; + } + + /** + * Nested creator, adds a set of files (nested fileset attribute). + */ + function createFileSet() { + $num = array_push($this->filesets, new FileSet()); + return $this->filesets[$num-1]; + } + + /** + * Execute the touch operation. + * @return void + */ + function main() { + // Check Parameters + $this->checkParams(); + $this->chmod(); + } + + /** + * Ensure that correct parameters were passed in. + * @return void + */ + private function checkParams() { + + if ($this->file === null && empty($this->filesets)) { + throw new BuildException("Specify at least one source - a file or a fileset."); + } + + if ($this->mode === null) { + throw new BuildException("You have to specify an octal mode for chmod."); + } + + // check for mode to be in the correct format + if (!preg_match('/^([0-7]){3,4}$/', $this->mode)) { + throw new BuildException("You have specified an invalid mode."); + } + + } + + /** + * Does the actual work. + * @return void + */ + private function chmod() { + + if (strlen($this->mode) === 4) { + $mode = octdec($this->mode); + } else { + // we need to prepend the 0 before converting + $mode = octdec("0". $this->mode); + } + + // counters for non-verbose output + $total_files = 0; + $total_dirs = 0; + + // one file + if ($this->file !== null) { + $total_files = 1; + $this->chmodFile($this->file, $mode); + } + + // filesets + foreach($this->filesets as $fs) { + + $ds = $fs->getDirectoryScanner($this->project); + $fromDir = $fs->getDir($this->project); + + $srcFiles = $ds->getIncludedFiles(); + $srcDirs = $ds->getIncludedDirectories(); + + $filecount = count($srcFiles); + $total_files = $total_files + $filecount; + for ($j = 0; $j < $filecount; $j++) { + $this->chmodFile(new PhingFile($fromDir, $srcFiles[$j]), $mode); + } + + $dircount = count($srcDirs); + $total_dirs = $total_dirs + $dircount; + for ($j = 0; $j < $dircount; $j++) { + $this->chmodFile(new PhingFile($fromDir, $srcDirs[$j]), $mode); + } + } + + if (!$this->verbose) { + $this->log('Total files changed to ' . vsprintf('%o', $mode) . ': ' . $total_files); + $this->log('Total directories changed to ' . vsprintf('%o', $mode) . ': ' . $total_dirs); + } + + } + + /** + * Actually change the mode for the file. + * @param PhingFile $file + * @param int $mode + */ + private function chmodFile(PhingFile $file, $mode) { + if ( !$file->exists() ) { + throw new BuildException("The file " . $file->__toString() . " does not exist"); + } + + try { + $file->setMode($mode); + if ($this->verbose) { + $this->log("Changed file mode on '" . $file->__toString() ."' to " . vsprintf("%o", $mode)); + } + } catch (Exception $e) { + if($this->failonerror) { + throw $e; + } else { + $this->log($e->getMessage(), $this->quiet ? Project::MSG_VERBOSE : Project::MSG_WARN); + } + } + } + +} + + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/ChownTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/ChownTask.php new file mode 100644 index 0000000..916cf53 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/ChownTask.php @@ -0,0 +1,195 @@ +. + */ + +require_once 'phing/Task.php'; +include_once 'phing/types/FileSet.php'; + +/** + * Task that changes the permissions on a file/directory. + * + * @author Mehmet Emre Yilmaz + * @version $Revision$ + * @package phing.tasks.system + */ +class ChownTask extends Task { + + private $file; + + private $user; + + private $filesets = array(); + + private $filesystem; + + private $quiet = false; + private $failonerror = true; + private $verbose = true; + + /** + * This flag means 'note errors to the output, but keep going' + * @see setQuiet() + */ + function setFailonerror($bool) { + $this->failonerror = $bool; + } + + /** + * Set quiet mode, which suppresses warnings if chown() fails. + * @see setFailonerror() + */ + function setQuiet($bool) { + $this->quiet = $bool; + if ($this->quiet) { + $this->failonerror = false; + } + } + + /** + * Set verbosity, which if set to false surpresses all but an overview + * of what happened. + */ + function setVerbose($bool) { + $this->verbose = (bool)$bool; + } + + /** + * Sets a single source file to touch. If the file does not exist + * an empty file will be created. + */ + function setFile(PhingFile $file) { + $this->file = $file; + } + + function setUser($str) { + $this->user = $str; + } + + /** + * Nested creator, adds a set of files (nested fileset attribute). + */ + function createFileSet() { + $num = array_push($this->filesets, new FileSet()); + return $this->filesets[$num-1]; + } + + /** + * Execute the touch operation. + * @return void + */ + function main() { + // Check Parameters + $this->checkParams(); + $this->chown(); + } + + /** + * Ensure that correct parameters were passed in. + * @return void + */ + private function checkParams() { + + if ($this->file === null && empty($this->filesets)) { + throw new BuildException("Specify at least one source - a file or a fileset."); + } + + if ($this->user === null) { + throw new BuildException("You have to specify a user for chown."); + } + + // check for mode to be in the correct format + + + } + + /** + * Does the actual work. + * @return void + */ + private function chown() { + + $user= $this->user; + + // counters for non-verbose output + $total_files = 0; + $total_dirs = 0; + + // one file + if ($this->file !== null) { + $total_files = 1; + $this->chownFile($this->file, $user); + } + + // filesets + foreach($this->filesets as $fs) { + + $ds = $fs->getDirectoryScanner($this->project); + $fromDir = $fs->getDir($this->project); + + $srcFiles = $ds->getIncludedFiles(); + $srcDirs = $ds->getIncludedDirectories(); + + $filecount = count($srcFiles); + $total_files = $total_files + $filecount; + for ($j = 0; $j < $filecount; $j++) { + $this->chownFile(new PhingFile($fromDir, $srcFiles[$j]), $user); + } + + $dircount = count($srcDirs); + $total_dirs = $total_dirs + $dircount; + for ($j = 0; $j < $dircount; $j++) { + $this->chownFile(new PhingFile($fromDir, $srcDirs[$j]), $user); + } + } + + if (!$this->verbose) { + $this->log('Total files changed to ' . vsprintf('%o', $mode) . ': ' . $total_files); + $this->log('Total directories changed to ' . vsprintf('%o', $mode) . ': ' . $total_dirs); + } + + } + + /** + * Actually change the mode for the file. + * @param PhingFile $file + * @param int $mode + */ + private function chownFile(PhingFile $file, $user) { + if ( !$file->exists() ) { + throw new BuildException("The file " . $file->__toString() . " does not exist"); + } + + try { + $file->setUser($user); + if ($this->verbose) { + $this->log("Changed file owner on '" . $file->__toString() ."' to " . $user); + } + } catch (Exception $e) { + if($this->failonerror) { + throw $e; + } else { + $this->log($e->getMessage(), $this->quiet ? Project::MSG_VERBOSE : Project::MSG_WARN); + } + } + } + +} + + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/ConditionTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/ConditionTask.php new file mode 100644 index 0000000..db35ca0 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/ConditionTask.php @@ -0,0 +1,74 @@ +. +*/ + +require_once 'phing/tasks/system/condition/ConditionBase.php'; + +/** + * task as a generalization of + * + *

    This task supports boolean logic as well as pluggable conditions + * to decide, whether a property should be set.

    + * + *

    This task does not extend Task to take advantage of + * ConditionBase.

    + * + * @author Andreas Aderhold + * @copyright © 2001,2002 THYRELL. All rights reserved + * @version $Revision: 1.7 $ $Date: 2006-03-10 15:31:51 +0100 (vie 10 de mar de 2006) $ + * @access public + * @package phing.tasks.system + */ +class ConditionTask extends ConditionBase { + + private $property; + private $value = "true"; + + /** + * The name of the property to set. Required. + */ + function setProperty($p) { + $this->property = $p; + } + + /** + * The value for the property to set. Defaults to "true". + */ + function setValue($v) { + $this->value = $v; + } + + /** + * See whether our nested condition holds and set the property. + */ + function main() { + + if ($this->countConditions() > 1) { + throw new BuildException("You must not nest more than one condition into "); + } + if ($this->countConditions() < 1) { + throw new BuildException("You must nest a condition into "); + } + $cs = $this->getIterator(); + if ($cs->current()->evaluate()) { + $this->project->setProperty($this->property, $this->value); + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/CopyTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/CopyTask.php new file mode 100644 index 0000000..095dffe --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/CopyTask.php @@ -0,0 +1,408 @@ +. + */ + +require_once 'phing/Task.php'; +include_once 'phing/system/io/PhingFile.php'; +include_once 'phing/util/FileUtils.php'; +include_once 'phing/util/SourceFileScanner.php'; +include_once 'phing/mappers/IdentityMapper.php'; +include_once 'phing/mappers/FlattenMapper.php'; + +/** + * A phing copy task. Copies a file or directory to a new file + * or directory. Files are only copied if the source file is newer + * than the destination file, or when the destination file does not + * exist. It is possible to explictly overwrite existing files. + * + * @author Andreas Aderhold, andi@binarycloud.com + * @version $Revision: 1.16 $ $Date: 2007-09-05 20:42:02 +0200 (mié 05 de sep de 2007) $ + * @package phing.tasks.system + */ +class CopyTask extends Task { + + protected $file = null; // the source file (from xml attribute) + protected $destFile = null; // the destiantion file (from xml attribute) + protected $destDir = null; // the destination dir (from xml attribute) + protected $overwrite = false; // overwrite destination (from xml attribute) + protected $preserveLMT = true; // sync timestamps (from xml attribute) + protected $includeEmpty = true; // include empty dirs? (from XML) + protected $flatten = false; // apply the FlattenMapper right way (from XML) + protected $mapperElement = null; + + protected $fileCopyMap = array(); // asoc array containing mapped file names + protected $dirCopyMap = array(); // asoc array containing mapped file names + protected $completeDirMap= array(); // asoc array containing complete dir names + protected $fileUtils = null; // a instance of fileutils + protected $filesets = array(); // all fileset objects assigned to this task + protected $filterChains = array(); // all filterchains objects assigned to this task + + protected $verbosity = Project::MSG_VERBOSE; + + /** + * Sets up this object internal stuff. i.e. the Fileutils instance + * + * @return object The CopyTask instnace + * @access public + */ + function __construct() { + $this->fileUtils = new FileUtils(); + } + + /** + * Set the overwrite flag. IntrospectionHelper takes care of + * booleans in set* methods so we can assume that the right + * value (boolean primitive) is coming in here. + * + * @param boolean Overwrite the destination file(s) if it/they already exist + * @return void + * @access public + */ + function setOverwrite($bool) { + $this->overwrite = (boolean) $bool; + } + + /** + * Used to force listing of all names of copied files. + * @param boolean $verbosity + */ + function setVerbose($verbosity) { + if ($verbosity) { + $this->verbosity = Project::MSG_INFO; + } else { + $this->verbosity = Project::MSG_VERBOSE; + } + } + + /** + * Set the preserve timestmap flag. IntrospectionHelper takes care of + * booleans in set* methods so we can assume that the right + * value (boolean primitive) is coming in here. + * + * @param boolean Preserve the timestamp on the destination file + * @return void + * @access public + */ + function setTstamp($bool) { + $this->preserveLMT = (boolean) $bool; + } + + + /** + * Set the include empty dirs flag. IntrospectionHelper takes care of + * booleans in set* methods so we can assume that the right + * value (boolean primitive) is coming in here. + * + * @param boolean Flag if empty dirs should be cpoied too + * @return void + * @access public + */ + function setIncludeEmptyDirs($bool) { + $this->includeEmpty = (boolean) $bool; + } + + + /** + * Set the file. We have to manually take care of the + * type that is coming due to limited type support in php + * in and convert it manually if neccessary. + * + * @param string/object The source file. Either a string or an PhingFile object + * @return void + * @access public + */ + function setFile(PhingFile $file) { + $this->file = $file; + } + + + /** + * Set the toFile. We have to manually take care of the + * type that is coming due to limited type support in php + * in and convert it manually if neccessary. + * + * @param string/object The dest file. Either a string or an PhingFile object + * @return void + * @access public + */ + function setTofile(PhingFile $file) { + $this->destFile = $file; + } + + + /** + * Set the toDir. We have to manually take care of the + * type that is coming due to limited type support in php + * in and convert it manually if neccessary. + * + * @param string/object The directory, either a string or an PhingFile object + * @return void + * @access public + */ + function setTodir(PhingFile $dir) { + $this->destDir = $dir; + } + + /** + * Nested creator, creates a FileSet for this task + * + * @access public + * @return object The created fileset object + */ + function createFileSet() { + $num = array_push($this->filesets, new FileSet()); + return $this->filesets[$num-1]; + } + + /** + * Creates a filterchain + * + * @access public + * @return object The created filterchain object + */ + function createFilterChain() { + $num = array_push($this->filterChains, new FilterChain($this->project)); + return $this->filterChains[$num-1]; + } + + /** + * Nested creator, creates one Mapper for this task + * + * @access public + * @return object The created Mapper type object + * @throws BuildException + */ + function createMapper() { + if ($this->mapperElement !== null) { + throw new BuildException("Cannot define more than one mapper", $this->location); + } + $this->mapperElement = new Mapper($this->project); + return $this->mapperElement; + } + + /** + * The main entry point where everything gets in motion. + * + * @access public + * @return true on success + * @throws BuildException + */ + function main() { + + $this->validateAttributes(); + + if ($this->file !== null) { + if ($this->file->exists()) { + if ($this->destFile === null) { + $this->destFile = new PhingFile($this->destDir, (string) $this->file->getName()); + } + if ($this->overwrite === true || ($this->file->lastModified() > $this->destFile->lastModified())) { + $this->fileCopyMap[$this->file->getAbsolutePath()] = $this->destFile->getAbsolutePath(); + } else { + $this->log($this->file->getName()." omitted, is up to date"); + } + } else { + // terminate build + throw new BuildException("Could not find file " . $this->file->__toString() . " to copy."); + } + } + + $project = $this->getProject(); + + // process filesets + foreach($this->filesets as $fs) { + $ds = $fs->getDirectoryScanner($project); + $fromDir = $fs->getDir($project); + $srcFiles = $ds->getIncludedFiles(); + $srcDirs = $ds->getIncludedDirectories(); + + if (!$this->flatten && $this->mapperElement === null) + { + $this->completeDirMap[$fromDir->getAbsolutePath()] = $this->destDir->getAbsolutePath(); + } + + $this->_scan($fromDir, $this->destDir, $srcFiles, $srcDirs); + } + + // go and copy the stuff + $this->doWork(); + + if ($this->destFile !== null) { + $this->destDir = null; + } + } + + /** + * Validates attributes coming in from XML + * + * @access private + * @return void + * @throws BuildException + */ + protected function validateAttributes() { + + if ($this->file === null && count($this->filesets) === 0) { + throw new BuildException("CopyTask. Specify at least one source - a file or a fileset."); + } + + if ($this->destFile !== null && $this->destDir !== null) { + throw new BuildException("Only one of destfile and destdir may be set."); + } + + if ($this->destFile === null && $this->destDir === null) { + throw new BuildException("One of destfile or destdir must be set."); + } + + if ($this->file !== null && $this->file->exists() && $this->file->isDirectory()) { + throw new BuildException("Use a fileset to copy directories."); + } + + if ($this->destFile !== null && count($this->filesets) > 0) { + throw new BuildException("Cannot concatenate multple files into a single file."); + } + + if ($this->destFile !== null) { + $this->destDir = new PhingFile($this->destFile->getParent()); + } + } + + /** + * Compares source files to destination files to see if they + * should be copied. + * + * @access private + * @return void + */ + private function _scan(&$fromDir, &$toDir, &$files, &$dirs) { + /* mappers should be generic, so we get the mappers here and + pass them on to builMap. This method is not redundan like it seems */ + $mapper = null; + if ($this->mapperElement !== null) { + $mapper = $this->mapperElement->getImplementation(); + } else if ($this->flatten) { + $mapper = new FlattenMapper(); + } else { + $mapper = new IdentityMapper(); + } + $this->buildMap($fromDir, $toDir, $files, $mapper, $this->fileCopyMap); + $this->buildMap($fromDir, $toDir, $dirs, $mapper, $this->dirCopyMap); + } + + /** + * Builds a map of filenames (from->to) that should be copied + * + * @access private + * @return void + */ + private function buildMap(&$fromDir, &$toDir, &$names, &$mapper, &$map) { + $toCopy = null; + if ($this->overwrite) { + $v = array(); + foreach($names as $name) { + $result = $mapper->main($name); + if ($result !== null) { + $v[] = $name; + } + } + $toCopy = $v; + } else { + $ds = new SourceFileScanner($this); + $toCopy = $ds->restrict($names, $fromDir, $toDir, $mapper); + } + + for ($i=0,$_i=count($toCopy); $i < $_i; $i++) { + $src = new PhingFile($fromDir, $toCopy[$i]); + $mapped = $mapper->main($toCopy[$i]); + $dest = new PhingFile($toDir, $mapped[0]); + $map[$src->getAbsolutePath()] = $dest->getAbsolutePath(); + } + } + + + /** + * Actually copies the files + * + * @access private + * @return void + * @throws BuildException + */ + protected function doWork() { + + // These "slots" allow filters to retrieve information about the currently-being-process files + $fromSlot = $this->getRegisterSlot("currentFromFile"); + $fromBasenameSlot = $this->getRegisterSlot("currentFromFile.basename"); + + $toSlot = $this->getRegisterSlot("currentToFile"); + $toBasenameSlot = $this->getRegisterSlot("currentToFile.basename"); + + $mapSize = count($this->fileCopyMap); + $total = $mapSize; + if ($mapSize > 0) { + $this->log("Copying ".$mapSize." file".(($mapSize) === 1 ? '' : 's')." to ". $this->destDir->getAbsolutePath()); + // walks the map and actually copies the files + $count=0; + foreach($this->fileCopyMap as $from => $to) { + if ($from === $to) { + $this->log("Skipping self-copy of " . $from, $this->verbosity); + $total--; + continue; + } + $this->log("From ".$from." to ".$to, $this->verbosity); + try { // try to copy file + + $fromFile = new PhingFile($from); + $toFile = new PhingFile($to); + + $fromSlot->setValue($fromFile->getPath()); + $fromBasenameSlot->setValue($fromFile->getName()); + + $toSlot->setValue($toFile->getPath()); + $toBasenameSlot->setValue($toFile->getName()); + + $this->fileUtils->copyFile($fromFile, $toFile, $this->overwrite, $this->preserveLMT, $this->filterChains, $this->getProject()); + + $count++; + } catch (IOException $ioe) { + $this->log("Failed to copy " . $from . " to " . $to . ": " . $ioe->getMessage(), Project::MSG_ERR); + } + } + } + + // handle empty dirs if appropriate + if ($this->includeEmpty) { + $destdirs = array_values($this->dirCopyMap); + $count = 0; + foreach ($destdirs as $destdir) { + $d = new PhingFile((string) $destdir); + if (!$d->exists()) { + if (!$d->mkdirs()) { + $this->log("Unable to create directory " . $d->__toString(), Project::MSG_ERR); + } else { + $count++; + } + } + } + if ($count > 0) { + $this->log("Copied ".$count." empty director" . ($count == 1 ? "y" : "ies") . " to " . $this->destDir->getAbsolutePath()); + } + } + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/CvsPassTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/CvsPassTask.php new file mode 100644 index 0000000..1363539 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/CvsPassTask.php @@ -0,0 +1,173 @@ +. + */ + +require_once 'phing/Task.php'; +include_once 'phing/system/io/BufferedReader.php'; +include_once 'phing/system/io/BufferedWriter.php'; +include_once 'phing/util/StringHelper.php'; + +/** + * Adds an new entry to a CVS password file. + * + * @author Hans Lellelid (Phing) + * @author Jeff Martin (Ant) + * @version $Revision: 1.7 $ + * @package phing.tasks.system + */ +class CVSPassTask extends Task { + + /** CVS Root */ + private $cvsRoot; + /** Password file to add password to */ + private $passFile; + /** Password to add to file */ + private $password; + + /** Array contain char conversion data */ + private static $shifts = array( + 0, 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, 28, 29, 30, 31, + 114, 120, 53, 79, 96, 109, 72, 108, 70, 64, 76, 67, 116, 74, 68, 87, + 111, 52, 75, 119, 49, 34, 82, 81, 95, 65, 112, 86, 118, 110, 122, 105, + 41, 57, 83, 43, 46, 102, 40, 89, 38, 103, 45, 50, 42, 123, 91, 35, + 125, 55, 54, 66, 124, 126, 59, 47, 92, 71, 115, 78, 88, 107, 106, 56, + 36, 121, 117, 104, 101, 100, 69, 73, 99, 63, 94, 93, 39, 37, 61, 48, + 58, 113, 32, 90, 44, 98, 60, 51, 33, 97, 62, 77, 84, 80, 85, 223, + 225, 216, 187, 166, 229, 189, 222, 188, 141, 249, 148, 200, 184, 136, 248, 190, + 199, 170, 181, 204, 138, 232, 218, 183, 255, 234, 220, 247, 213, 203, 226, 193, + 174, 172, 228, 252, 217, 201, 131, 230, 197, 211, 145, 238, 161, 179, 160, 212, + 207, 221, 254, 173, 202, 146, 224, 151, 140, 196, 205, 130, 135, 133, 143, 246, + 192, 159, 244, 239, 185, 168, 215, 144, 139, 165, 180, 157, 147, 186, 214, 176, + 227, 231, 219, 169, 175, 156, 206, 198, 129, 164, 150, 210, 154, 177, 134, 127, + 182, 128, 158, 208, 162, 132, 167, 209, 149, 241, 153, 251, 237, 236, 171, 195, + 243, 233, 253, 240, 194, 250, 191, 155, 142, 137, 245, 235, 163, 242, 178, 152 + ); + + /** + * Create a CVS task using the default cvspass file location. + */ + public function __construct() { + $this->passFile = new PhingFile( + Phing::getProperty("cygwin.user.home", + Phing::getProperty("user.home")) + . DIRECTORY_SEPARATOR . ".cvspass"); + } + + /** + * Does the work. + * + * @throws BuildException if someting goes wrong with the build + */ + public final function main() { + if ($this->cvsRoot === null) { + throw new BuildException("cvsroot is required"); + } + if ($this->password === null) { + throw new BuildException("password is required"); + } + + $this->log("cvsRoot: " . $this->cvsRoot, Project::MSG_DEBUG); + $this->log("password: " . $this->password, Project::MSG_DEBUG); + $this->log("passFile: " . $this->passFile->__toString(), Project::MSG_DEBUG); + + $reader = null; + $writer = null; + + try { + $buf = ""; + + if ($this->passFile->exists()) { + $reader = new BufferedReader(new FileReader($this->passFile)); + + $line = null; + while (($line = $reader->readLine()) !== null) { + if (!StringHelper::startsWith($this->cvsRoot, $line)) { + $buf .= $line . PHP_EOL; + } + } + } + + $pwdfile = $buf . $this->cvsRoot . " A" . $this->mangle($this->password); + + $this->log("Writing -> " . $pwdfile , Project::MSG_DEBUG); + + $writer = new BufferedWriter(new FileWriter($this->passFile)); + $writer->write($pwdfile); + $writer->newLine(); + + $writer->close(); + if ($reader) { + $reader->close(); + } + + } catch (IOException $e) { + if ($reader) { + try { + $reader->close(); + } catch (Exception $e) {} + } + + if ($writer) { + try { + $writer->close(); + } catch (Exception $e) {} + } + + throw new BuildException($e); + } + } + + /** + * "Encode" the password. + */ + private final function mangle($password){ + $buf = ""; + for ($i = 0, $plen = strlen($password); $i < $plen; $i++) { + $buf .= chr(self::$shifts[ord($password{$i})]); + } + return $buf; + } + + /** + * The CVS repository to add an entry for. + * @param string $cvsRoot + */ + public function setCvsroot($cvsRoot) { + $this->cvsRoot = $cvsRoot; + } + + /** + * Password file to add the entry to. + * @param PhingFile $passFile + */ + public function setPassfile(PhingFile $passFile) { + $this->passFile = $passFile; + } + + /** + * Password to be added to the password file. + * @param string $password + */ + public function setPassword($password) { + $this->password = $password; + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/CvsTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/CvsTask.php new file mode 100644 index 0000000..6f58460 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/CvsTask.php @@ -0,0 +1,540 @@ +. + */ + +require_once 'phing/Task.php'; +include_once 'phing/tasks/system/ExecTask.php'; +include_once 'phing/types/Commandline.php'; + +/** + * Task for performing CVS operations. + * + * NOTE: This implementation has been moved here from Cvs.java with + * the addition of some accessors for extensibility. Another task + * can extend this with some customized output processing. + * + * @author Hans Lellelid (Phing) + * @author costin@dnt.ro (Ant) + * @author stefano@apache.org (Ant) + * @author Wolfgang Werner (Ant) + * @author Kevin Ross (Ant) + * @version $Revision: 1.14 $ + * @package phing.tasks.system + */ +class CvsTask extends Task { + + /** + * Default compression level to use, if compression is enabled via + * setCompression( true ). + */ + const DEFAULT_COMPRESSION_LEVEL = 3; + + private $cmd; + + /** + * List of Commandline children + * @var array Commandline[] + */ + private $commandlines = array(); + + /** + * the CVSROOT variable. + */ + private $cvsRoot; + + /** + * the CVS_RSH variable. + */ + private $cvsRsh; + + /** + * the package/module to check out. + */ + private $cvsModule; + + /** + * the default command. + */ + private static $default_command = "checkout"; + + /** + * the CVS command to execute. + */ + private $command = null; + + /** + * suppress information messages. + */ + private $quiet = false; + + /** + * compression level to use. + */ + private $compression = 0; + + /** + * report only, don't change any files. + */ + private $noexec = false; + + /** + * CVS port + */ + private $port = 0; + + /** + * CVS password file + * @var File + */ + private $passFile = null; + + /** + * the directory where the checked out files should be placed. + * @var File + */ + private $dest; + + private $error; + + private $output; + + /** + * If true it will stop the build if cvs exits with error. + * Default is false. (Iulian) + * @var boolean + */ + private $failOnError = false; + + public function init() { + $this->cmd = new Commandline(); + } + + /** + * Sets up the environment for toExecute and then runs it. + * @param Commandline $toExecute + * @throws BuildException + */ + protected function runCommand(Commandline $toExecute) { + + // We are putting variables into the script's environment + // and not removing them (!) This should be fine, but is + // worth remembering and testing. + + if ($this->port > 0) { + putenv("CVS_CLIENT_PORT=".$this->port); + } + + // Need a better cross platform integration with , so + // use the same filename. + + if ($this->passFile === null) { + $defaultPassFile = new PhingFile(Phing::getProperty("cygwin.user.home", Phing::getProperty("user.home")) + . DIRECTORY_SEPARATOR . ".cvspass"); + if($defaultPassFile->exists()) { + $this->setPassfile($defaultPassFile); + } + } + + if ($this->passFile !== null) { + if ($this->passFile->isFile() && $this->passFile->canRead()) { + putenv("CVS_PASSFILE=" . $this->passFile->__toString()); + $this->log("Using cvs passfile: " . $this->passFile->__toString(), Project::MSG_INFO); + } elseif (!$this->passFile->canRead()) { + $this->log("cvs passfile: " . $this->passFile->__toString() + . " ignored as it is not readable", Project::MSG_WARN); + } else { + $this->log("cvs passfile: " . $this->passFile->__toString() + . " ignored as it is not a file", + Project::MSG_WARN); + } + } + + if ($this->cvsRsh !== null) { + putenv("CVS_RSH=".$this->cvsRsh); + } + + // Use the ExecTask to handle execution of the command + $exe = new ExecTask($this->project); + $exe->setProject($this->project); + + //exe.setAntRun(project); + if ($this->dest === null) { + $this->dest = $this->project->getBaseDir(); + } + + if (!$this->dest->exists()) { + $this->dest->mkdirs(); + } + + if ($this->output !== null) { + $exe->setOutput($this->output); + } + + if ($this->error !== null) { + $exe->setError($this->error); + } + + $exe->setDir($this->dest); + + if (is_object($toExecute)) { + $toExecuteStr = $toExecute->__toString(); // unfortunately no more automagic for initial 5.0.0 release :( + } + + $exe->setCommand($toExecuteStr); + + try { + $actualCommandLine = $toExecuteStr; // we converted to string above + $this->log($actualCommandLine, Project::MSG_INFO); + $retCode = $exe->execute(); + $this->log("retCode=" . $retCode, Project::MSG_DEBUG); + /*Throw an exception if cvs exited with error. (Iulian)*/ + if ($this->failOnError && $retCode !== 0) { + throw new BuildException("cvs exited with error code " + . $retCode + . PHP_EOL + . "Command line was [" + . $toExecute->describeCommand() . "]", $this->getLocation()); + } + } catch (IOException $e) { + if ($this->failOnError) { + throw new BuildException($e, $this->getLocation()); + } else { + $this->log("Caught exception: " . $e, Project::MSG_WARN); + } + } catch (BuildException $e) { + if ($this->failOnError) { + throw $e; + } else { + $t = $e->getCause(); + if ($t === null) { + $t = $e; + } + $this->log("Caught exception: " . $t, Project::MSG_WARN); + } + } catch (Exception $e) { + if ($this->failOnError) { + throw new BuildException($e, $this->getLocation()); + } else { + $this->log("Caught exception: " . $e, Project::MSG_WARN); + } + } + } + + /** + * + * @return void + * @throws BuildException + */ + public function main() { + + $savedCommand = $this->getCommand(); + + if ($this->getCommand() === null && empty($this->commandlines)) { + // re-implement legacy behaviour: + $this->setCommand(self::$default_command); + } + + $c = $this->getCommand(); + $cloned = null; + if ($c !== null) { + $cloned = $this->cmd->__copy(); + $cloned->createArgument(true)->setLine($c); + $this->addConfiguredCommandline($cloned, true); + } + + try { + for ($i = 0, $vecsize=count($this->commandlines); $i < $vecsize; $i++) { + $this->runCommand($this->commandlines[$i]); + } + + // finally { + if ($cloned !== null) { + $this->removeCommandline($cloned); + } + $this->setCommand($savedCommand); + + } catch (Exception $e) { + // finally { + if ($cloned !== null) { + $this->removeCommandline($cloned); + } + $this->setCommand($savedCommand); + throw $e; + } + } + + /** + * The CVSROOT variable. + * + * @param string $root + */ + public function setCvsRoot($root) { + + // Check if not real cvsroot => set it to null + if ($root !== null) { + if (trim($root) == "") { + $root = null; + } + } + + $this->cvsRoot = $root; + } + + public function getCvsRoot() { + return $this->cvsRoot; + } + + /** + * The CVS_RSH variable. + * + * @param rsh + */ + public function setCvsRsh($rsh) { + // Check if not real cvsrsh => set it to null + if ($rsh !== null) { + if (trim($rsh) == "") { + $rsh = null; + } + } + + $this->cvsRsh = $rsh; + } + + public function getCvsRsh() { + return $this->cvsRsh; + } + + /** + * Port used by CVS to communicate with the server. + * + * @param int $port + */ + public function setPort($port){ + $this->port = $port; + } + + /** + * @return int + */ + public function getPort() { + return $this->port; + } + + /** + * Password file to read passwords from. + * + * @param passFile + */ + public function setPassfile(PhingFile $passFile) { + $this->passFile = $passFile; + } + + /** + * @return File + */ + public function getPassFile() { + return $this->passFile; + } + + /** + * The directory where the checked out files should be placed. + * + * @param PhingFile $dest + */ + public function setDest(PhingFile $dest) { + $this->dest = $dest; + } + + public function getDest() { + return $this->dest; + } + + /** + * The package/module to operate upon. + * + * @param string $p + */ + public function setModule($m) { + $this->cvsModule = $m; + } + + public function getModule(){ + return $this->cvsModule; + } + + /** + * The tag of the package/module to operate upon. + * @param string $p + */ + public function setTag($p) { + // Check if not real tag => set it to null + if ($p !== null && trim($p) !== "") { + $this->appendCommandArgument("-r"); + $this->appendCommandArgument($p); + } + } + + /** + * This needs to be public to allow configuration + * of commands externally. + */ + public function appendCommandArgument($arg) { + $this->cmd->createArgument()->setValue($arg); + } + + /** + * Use the most recent revision no later than the given date. + * @param p + */ + public function setDate($p) { + if ($p !== null && trim($p) !== "") { + $this->appendCommandArgument("-D"); + $this->appendCommandArgument($p); + } + } + + /** + * The CVS command to execute. + * @param string $c + */ + public function setCommand($c) { + $this->command = $c; + } + + public function getCommand() { + return $this->command; + } + + /** + * If true, suppress informational messages. + * @param boolean $q + */ + public function setQuiet($q) { + $this->quiet = $q; + } + + /** + * If true, report only and don't change any files. + * + * @param boolean $ne + */ + public function setNoexec($ne) { + $this->noexec = (boolean) $ne; + } + + /** + * Stop the build process if the command exits with + * a return code other than 0. + * Defaults to false. + * @param boolean $failOnError + */ + public function setFailOnError($failOnError) { + $this->failOnError = (boolean) $failOnError; + } + + /** + * Configure a commandline element for things like cvsRoot, quiet, etc. + * @return string + */ + protected function configureCommandline($c) { + if ($c === null) { + return; + } + $c->setExecutable("cvs"); + + if ($this->cvsModule !== null) { + $c->createArgument()->setLine($this->cvsModule); + } + if ($this->compression > 0 && $this->compression < 10) { + $c->createArgument(true)->setValue("-z" . $this->compression); + } + if ($this->quiet) { + $c->createArgument(true)->setValue("-q"); + } + if ($this->noexec) { + $c->createArgument(true)->setValue("-n"); + } + if ($this->cvsRoot !== null) { + $c->createArgument(true)->setLine("-d" . $this->cvsRoot); + } + } + + protected function removeCommandline(Commandline $c) { + $idx = array_search($c, $this->commandlines, true); + if ($idx === false) { + return false; + } + $this->commandlines = array_splice($this->commandlines, $idx, 1); + return true; + } + + /** + * Configures and adds the given Commandline. + * @param insertAtStart If true, c is + */ + public function addConfiguredCommandline(Commandline $c, $insertAtStart = false) { + if ($c === null) { + return; + } + $this->configureCommandline($c); + if ($insertAtStart) { + array_unshift($this->commandlines, $c); + } else { + array_push($this->commandlines, $c); + } + } + + /** + * If set to a value 1-9 it adds -zN to the cvs command line, else + * it disables compression. + * @param int $level + */ + public function setCompressionLevel($level) { + $this->compression = $level; + } + + /** + * If true, this is the same as compressionlevel="3". + * + * @param boolean $usecomp If true, turns on compression using default + * level, AbstractCvsTask.DEFAULT_COMPRESSION_LEVEL. + */ + public function setCompression($usecomp) { + $this->setCompressionLevel($usecomp ? + self::DEFAULT_COMPRESSION_LEVEL : 0); + } + + /** + * File to which output should be written. + * @param PhingFile $output + */ + function setOutput(PhingFile $f) { + $this->output = $f; + } + + /** + * File to which error output should be written. + * @param PhingFile $output + */ + function setError(PhingFile $f) { + $this->error = $f; + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/DeleteTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/DeleteTask.php new file mode 100644 index 0000000..5facc74 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/DeleteTask.php @@ -0,0 +1,277 @@ +. + */ + +require_once 'phing/Task.php'; + +/** + * Deletes a file or directory, or set of files defined by a fileset. + * + * @version $Revision: 1.13 $ + * @package phing.tasks.system + */ +class DeleteTask extends Task { + + protected $file; + protected $dir; + protected $filesets = array(); + protected $includeEmpty = false; + + protected $quiet = false; + protected $failonerror = true; + protected $verbosity = Project::MSG_VERBOSE; + + /** Any filelists of files that should be deleted. */ + private $filelists = array(); + + /** + * Set the name of a single file to be removed. + * @param PhingFile $file + */ + function setFile(PhingFile $file) { + $this->file = $file; + } + + /** + * Set the directory from which files are to be deleted. + * @param PhingFile $dir + */ + function setDir(PhingFile $dir) { + $this->dir = $dir; + } + + /** + * Used to force listing of all names of deleted files. + * @param boolean $verbosity + */ + function setVerbose($verbosity) { + if ($verbosity) { + $this->verbosity = Project::MSG_INFO; + } else { + $this->verbosity = Project::MSG_VERBOSE; + } + } + + /** + * If the file does not exist, do not display a diagnostic + * message or modify the exit status to reflect an error. + * This means that if a file or directory cannot be deleted, + * then no error is reported. This setting emulates the + * -f option to the Unix rm command. Default is false + * meaning things are verbose + */ + function setQuiet($bool) { + $this->quiet = $bool; + if ($this->quiet) { + $this->failonerror = false; + } + } + + /** this flag means 'note errors to the output, but keep going' */ + function setFailOnError($bool) { + $this->failonerror = $bool; + } + + + /** Used to delete empty directories.*/ + function setIncludeEmptyDirs($includeEmpty) { + $this->includeEmpty = (boolean) $includeEmpty; + } + + /** Nested creator, adds a set of files (nested fileset attribute). */ + function createFileSet() { + $num = array_push($this->filesets, new FileSet()); + return $this->filesets[$num-1]; + } + + /** Nested creator, adds a set of files (nested fileset attribute). */ + function createFileList() { + $num = array_push($this->filelists, new FileList()); + return $this->filelists[$num-1]; + } + + /** Delete the file(s). */ + function main() { + if ($this->file === null && $this->dir === null && count($this->filesets) === 0 && count($this->filelists) === 0) { + throw new BuildException("At least one of the file or dir attributes, or a fileset element, or a filelist element must be set."); + } + + if ($this->quiet && $this->failonerror) { + throw new BuildException("quiet and failonerror cannot both be set to true", $this->location); + } + + // delete a single file + if ($this->file !== null) { + if ($this->file->exists()) { + if ($this->file->isDirectory()) { + $this->log("Directory " . $this->file->__toString() . " cannot be removed using the file attribute. Use dir instead."); + } else { + $this->log("Deleting: " . $this->file->__toString()); + try { + $this->file->delete(); + } catch(Exception $e) { + $message = "Unable to delete file " . $this->file->__toString() .": " .$e->getMessage(); + if($this->failonerror) { + throw new BuildException($message); + } else { + $this->log($message, $this->quiet ? Project::MSG_VERBOSE : Project::MSG_WARN); + } + } + } + } else { + $this->log("Could not find file " . $this->file->getAbsolutePath() . " to delete.",Project::MSG_VERBOSE); + } + } + + // delete the directory + if ($this->dir !== null && $this->dir->exists() && $this->dir->isDirectory()) { + if ($this->verbosity === Project::MSG_VERBOSE) { + $this->log("Deleting directory " . $this->dir->__toString()); + } + $this->removeDir($this->dir); + } + + // delete the files in the filelists + foreach($this->filelists as $fl) { + try { + $files = $fl->getFiles($this->project); + $this->removeFiles($fl->getDir($this->project), $files, $empty=array()); + } catch (BuildException $be) { + // directory doesn't exist or is not readable + if ($this->failonerror) { + throw $be; + } else { + $this->log($be->getMessage(), $this->quiet ? Project::MSG_VERBOSE : Project::MSG_WARN); + } + } + } + + // delete the files in the filesets + foreach($this->filesets as $fs) { + try { + $ds = $fs->getDirectoryScanner($this->project); + $files = $ds->getIncludedFiles(); + $dirs = $ds->getIncludedDirectories(); + $this->removeFiles($fs->getDir($this->project), $files, $dirs); + } catch (BuildException $be) { + // directory doesn't exist or is not readable + if ($this->failonerror) { + throw $be; + } else { + $this->log($be->getMessage(), $this->quiet ? Project::MSG_VERBOSE : Project::MSG_WARN); + } + } + } + } + + /** + * Recursively removes a directory. + * @param PhingFile $d The directory to remove. + */ + private function removeDir($d) { + $list = $d->listDir(); + if ($list === null) { + $list = array(); + } + + foreach($list as $s) { + $f = new PhingFile($d, $s); + if ($f->isDirectory()) { + $this->removeDir($f); + } else { + $this->log("Deleting " . $f->__toString(), $this->verbosity); + try { + $f->delete(); + } catch (Exception $e) { + $message = "Unable to delete file " . $f->__toString() . ": " . $e->getMessage(); + if($this->failonerror) { + throw new BuildException($message); + } else { + $this->log($message, $this->quiet ? Project::MSG_VERBOSE : Project::MSG_WARN); + } + } + } + } + $this->log("Deleting directory " . $d->getAbsolutePath(), $this->verbosity); + try { + $d->delete(); + } catch (Exception $e) { + $message = "Unable to delete directory " . $d->__toString() . ": " . $e->getMessage(); + if($this->failonerror) { + throw new BuildException($message); + } else { + $this->log($message, $this->quiet ? Project::MSG_VERBOSE : Project::MSG_WARN); + } + } + } + + /** + * remove an array of files in a directory, and a list of subdirectories + * which will only be deleted if 'includeEmpty' is true + * @param PhingFile $d directory to work from + * @param array &$files array of files to delete; can be of zero length + * @param array &$dirs array of directories to delete; can of zero length + */ + private function removeFiles(PhingFile $d, &$files, &$dirs) { + if (count($files) > 0) { + $this->log("Deleting " . count($files) . " files from " . $d->__toString()); + for ($j=0,$_j=count($files); $j < $_j; $j++) { + $f = new PhingFile($d, $files[$j]); + $this->log("Deleting " . $f->getAbsolutePath(), $this->verbosity); + try { + $f->delete(); + } catch (Exception $e) { + $message = "Unable to delete file " . $f->__toString() . ": " . $e->getMessage(); + if($this->failonerror) { + throw new BuildException($message); + } else { + $this->log($message, $this->quiet ? Project::MSG_VERBOSE : Project::MSG_WARN); + } + } + + } + } + + if (count($dirs) > 0 && $this->includeEmpty) { + $dirCount = 0; + for ($j=count($dirs)-1; $j>=0; --$j) { + $dir = new PhingFile($d, $dirs[$j]); + $dirFiles = $dir->listDir(); + if ($dirFiles === null || count($dirFiles) === 0) { + $this->log("Deleting " . $dir->__toString(), $this->verbosity); + try { + $dir->delete(); + $dirCount++; + } catch (Exception $e) { + $message="Unable to delete directory " . $dir->__toString(); + if($this->failonerror) { + throw new BuildException($message); + } else { + $this->log($message, $this->quiet ? Project::MSG_VERBOSE : Project::MSG_WARN); + } + } + } + } + if ($dirCount > 0) { + $this->log("Deleted $dirCount director" . ($dirCount==1 ? "y" : "ies") . " from " . $d->__toString()); + } + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/EchoTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/EchoTask.php new file mode 100644 index 0000000..6a54d88 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/EchoTask.php @@ -0,0 +1,107 @@ +. + */ + +include_once 'phing/Task.php'; + +/** + * Echos a message to the logging system or to a file + * + * @author Michiel Rook + * @author Andreas Aderhold, andi@binarycloud.com + * @version $Revision: 1.5 $ $Date: 2007-02-05 16:19:00 +0100 (lun 05 de feb de 2007) $ + * @package phing.tasks.system + */ + +class EchoTask extends Task { + + protected $msg = ""; + + protected $file = ""; + + protected $append = false; + + protected $level = "info"; + + function main() { + switch ($this->level) + { + case "error": $loglevel = Project::MSG_ERR; break; + case "warning": $loglevel = Project::MSG_WARN; break; + case "info": $loglevel = Project::MSG_INFO; break; + case "verbose": $loglevel = Project::MSG_VERBOSE; break; + case "debug": $loglevel = Project::MSG_DEBUG; break; + } + + if (empty($this->file)) + { + $this->log($this->msg, $loglevel); + } + else + { + if ($this->append) + { + $handle = fopen($this->file, "a"); + } + else + { + $handle = fopen($this->file, "w"); + } + + fwrite($handle, $this->msg); + + fclose($handle); + } + } + + /** setter for file */ + function setFile($file) + { + $this->file = (string) $file; + } + + /** setter for level */ + function setLevel($level) + { + $this->level = (string) $level; + } + + /** setter for append */ + function setAppend($append) + { + $this->append = $append; + } + + /** setter for message */ + function setMsg($msg) { + $this->setMessage($msg); + } + + /** alias setter */ + function setMessage($msg) { + $this->msg = (string) $msg; + } + + /** Supporting the Message syntax. */ + function addText($msg) + { + $this->msg = (string) $msg; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/ExecTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/ExecTask.php new file mode 100644 index 0000000..1cb7364 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/ExecTask.php @@ -0,0 +1,266 @@ +. + */ + +require_once 'phing/Task.php'; + +/** + * Executes a command on the shell. + * + * @author Andreas Aderhold + * @author Hans Lellelid + * @version $Revision: 1.17 $ + * @package phing.tasks.system + */ +class ExecTask extends Task { + + /** + * Command to execute. + * @var string + */ + protected $command; + + /** + * Working directory. + * @var File + */ + protected $dir; + + /** + * Operating system. + * @var string + */ + protected $os; + + /** + * Whether to escape shell command using escapeshellcmd(). + * @var boolean + */ + protected $escape = false; + + /** + * Where to direct output. + * @var File + */ + protected $output; + + /** + * Whether to passthru the output + * @var boolean + */ + protected $passthru = false; + + /** + * Where to direct error output. + * @var File + */ + protected $error; + + /** + * If spawn is set then [unix] programs will redirect stdout and add '&'. + * @var boolean + */ + protected $spawn = false; + + /** + * Property name to set with return value from exec call. + * + * @var string + */ + protected $returnProperty; + + /** + * Whether to check the return code. + * @var boolean + */ + protected $checkreturn = false; + + /** + * Main method: wraps execute() command. + * @return void + */ + public function main() { + $this->execute(); + } + + /** + * Executes a program and returns the return code. + * Output from command is logged at INFO level. + * @return int Return code from execution. + */ + public function execute() { + + // test if os match + $myos = Phing::getProperty("os.name"); + $this->log("Myos = " . $myos, Project::MSG_VERBOSE); + if (($this->os !== null) && (strpos($this->os, $myos) === false)) { + // this command will be executed only on the specified OS + $this->log("Not found in " . $this->os, Project::MSG_VERBOSE); + return 0; + } + + if ($this->dir !== null) { + if ($this->dir->isDirectory()) { + $currdir = getcwd(); + @chdir($this->dir->getPath()); + } else { + throw new BuildException("Can't chdir to:" . $this->dir->__toString()); + } + } + + + if ($this->escape == true) { + // FIXME - figure out whether this is correct behavior + $this->command = escapeshellcmd($this->command); + } + + if ($this->error !== null) { + $this->command .= ' 2> ' . $this->error->getPath(); + $this->log("Writing error output to: " . $this->error->getPath()); + } + + if ($this->output !== null) { + $this->command .= ' 1> ' . $this->output->getPath(); + $this->log("Writing standard output to: " . $this->output->getPath()); + } elseif ($this->spawn) { + $this->command .= ' 1>/dev/null'; + $this->log("Sending ouptut to /dev/null"); + } + + // If neither output nor error are being written to file + // then we'll redirect error to stdout so that we can dump + // it to screen below. + + if ($this->output === null && $this->error === null) { + $this->command .= ' 2>&1'; + } + + // we ignore the spawn boolean for windows + if ($this->spawn) { + $this->command .= ' &'; + } + + $this->log("Executing command: " . $this->command); + + $output = array(); + $return = null; + exec($this->command, $output, $return); + + if ($this->dir !== null) { + @chdir($currdir); + } + + foreach($output as $line) { + $this->log($line, ($this->passthru ? Project::MSG_INFO : Project::MSG_VERBOSE)); + } + + if ($this->returnProperty) { + $this->project->setProperty($this->returnProperty, $return); + } + + if($return != 0 && $this->checkreturn) { + throw new BuildException("Task exited with code $return"); + } + + return $return; + } + + /** + * The command to use. + * @param mixed $command String or string-compatible (e.g. w/ __toString()). + */ + function setCommand($command) { + $this->command = "" . $command; + } + + /** + * Whether to use escapeshellcmd() to escape command. + * @param boolean $escape + */ + function setEscape($escape) { + $this->escape = (bool) $escape; + } + + /** + * Specify the working directory for executing this command. + * @param PhingFile $dir + */ + function setDir(PhingFile $dir) { + $this->dir = $dir; + } + + /** + * Specify OS (or muliple OS) that must match in order to execute this command. + * @param string $os + */ + function setOs($os) { + $this->os = (string) $os; + } + + /** + * File to which output should be written. + * @param PhingFile $output + */ + function setOutput(PhingFile $f) { + $this->output = $f; + } + + /** + * File to which error output should be written. + * @param PhingFile $output + */ + function setError(PhingFile $f) { + $this->error = $f; + } + + /** + * Whether to use passthru the output. + * @param boolean $passthru + */ + function setPassthru($passthru) { + $this->passthru = (bool) $passthru; + } + + /** + * Whether to suppress all output and run in the background. + * @param boolean $spawn + */ + function setSpawn($spawn) { + $this->spawn = (bool) $spawn; + } + + /** + * Whether to check the return code. + * @param boolean $checkreturn + */ + function setCheckreturn($checkreturn) { + $this->checkreturn = (bool) $checkreturn; + } + + /** + * The name of property to set to return value from exec() call. + * @param string $prop + */ + function setReturnProperty($prop) { + $this->returnProperty = $prop; + } +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/ExitTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/ExitTask.php new file mode 100644 index 0000000..5f594a3 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/ExitTask.php @@ -0,0 +1,118 @@ +. + */ + +require_once 'phing/Task.php'; + +/** + * Exits the active build, giving an additional message + * if available. + * + * @author Hans Lellelid (Phing) + * @author Nico Seessle (Ant) + * @version $Revision: 1.7 $ + * @package phing.tasks.system + */ +class ExitTask extends Task { + + private $message; + private $ifCondition; + private $unlessCondition; + + /** + * A message giving further information on why the build exited. + * + * @param string $value message to output + */ + public function setMsg($value) { + $this->setMessage($value); + } + + /** + * A message giving further information on why the build exited. + * + * @param value message to output + */ + public function setMessage($value) { + $this->message = $value; + } + + /** + * Only fail if a property of the given name exists in the current project. + * @param c property name + */ + public function setIf($c) { + $this->ifCondition = $c; + } + + /** + * Only fail if a property of the given name does not + * exist in the current project. + * @param c property name + */ + public function setUnless($c) { + $this->unlessCondition = $c; + } + + /** + * @throws BuildException + */ + public function main() { + if ($this->testIfCondition() && $this->testUnlessCondition()) { + if ($this->message !== null) { + throw new BuildException($this->message); + } else { + throw new BuildException("No message"); + } + } + } + + /** + * Set a multiline message. + */ + public function addText($msg) { + if ($this->message === null) { + $this->message = ""; + } + $this->message .= $this->project->replaceProperties($msg); + } + + /** + * @return boolean + */ + private function testIfCondition() { + if ($this->ifCondition === null || $this->ifCondition === "") { + return true; + } + + return $this->project->getProperty($this->ifCondition) !== null; + } + + /** + * @return boolean + */ + private function testUnlessCondition() { + if ($this->unlessCondition === null || $this->unlessCondition === "") { + return true; + } + return $this->project->getProperty($this->unlessCondition) === null; + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/ForeachTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/ForeachTask.php new file mode 100644 index 0000000..6bfb777 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/ForeachTask.php @@ -0,0 +1,138 @@ +. + */ + +require_once 'phing/Task.php'; +include_once 'phing/tasks/system/PhingTask.php'; + +/** + * task + * + * Task definition for the foreach task. This task takes a list with + * delimited values, and executes a target with set param. + * + * Usage: + * + * + * Attributes: + * list --> The list of values to process, with the delimiter character, + * indicated by the "delimiter" attribute, separating each value. + * target --> The target to call for each token, passing the token as the + * parameter with the name indicated by the "param" attribute. + * param --> The name of the parameter to pass the tokens in as to the + * target. + * delimiter --> The delimiter string that separates the values in the "list" + * parameter. The default is ",". + * + * @author Jason Hines + * @author Hans Lellelid + * @version $Revision: 1.9 $ + * @package phing.tasks.system + */ +class ForeachTask extends Task { + + /** Delimter-separated list of values to process. */ + private $list; + + /** Name of parameter to pass to callee */ + private $param; + + /** Delimter that separates items in $list */ + private $delimiter = ','; + + /** + * PhingCallTask that will be invoked w/ calleeTarget. + * @var PhingCallTask + */ + private $callee; + + /** + * Target to execute. + * @var string + */ + private $calleeTarget; + + function init() { + $this->callee = $this->project->createTask("phingcall"); + $this->callee->setOwningTarget($this->getOwningTarget()); + $this->callee->setTaskName($this->getTaskName()); + $this->callee->setLocation($this->getLocation()); + $this->callee->init(); + } + + /** + * This method does the work. + * @return void + */ + function main() { + if ($this->list === null) { + throw new BuildException("Missing list to iterate through"); + } + if (trim($this->list) === '') { + return; + } + if ($this->param === null) { + throw new BuildException("You must supply a property name to set on each iteration in param"); + } + if ($this->calleeTarget === null) { + throw new BuildException("You must supply a target to perform"); + } + + $callee = $this->callee; + $callee->setTarget($this->calleeTarget); + $callee->setInheritAll(true); + $callee->setInheritRefs(true); + + $arr = explode($this->delimiter, $this->list); + + foreach ($arr as $value) { + $this->log("Setting param '$this->param' to value '$value'", Project::MSG_VERBOSE); + $prop = $callee->createProperty(); + $prop->setOverride(true); + $prop->setName($this->param); + $prop->setValue($value); + $callee->main(); + } + } + + function setList($list) { + $this->list = (string) $list; + } + + function setTarget($target) { + $this->calleeTarget = (string) $target; + } + + function setParam($param) { + $this->param = (string) $param; + } + + function setDelimiter($delimiter) { + $this->delimiter = (string) $delimiter; + } + + /** + * @return Property + */ + function createProperty() { + return $this->callee->createProperty(); + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/IfTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/IfTask.php new file mode 100644 index 0000000..0ebfb0b --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/IfTask.php @@ -0,0 +1,224 @@ +. + */ + +require_once 'phing/tasks/system/condition/ConditionBase.php'; +require_once 'phing/tasks/system/SequentialTask.php'; + +/** + * Perform some tasks based on whether a given condition holds true or + * not. + * + *

    This task is heavily based on the Condition framework that can + * be found in Ant 1.4 and later, therefore it cannot be used in + * conjunction with versions of Ant prior to 1.4.

    + * + *

    This task doesn't have any attributes, the condition to test is + * specified by a nested element - see the documentation of your + * task (see + * the + * online documentation for example) for a complete list of nested + * elements.

    + * + *

    Just like the task, only a single + * condition can be specified - you combine them using + * or conditions.

    + * + *

    In addition to the condition, you can specify three different + * child elements, , and + * . All three subelements are optional. + * + * Both and must not be + * used more than once inside the if task. Both are + * containers for Ant tasks, just like Ant's + * and + * tasks - in fact they are implemented using the same class as Ant's + * task.

    + * + * The behaves exactly like an + * except that it cannot contain the element + * inside of it. You may specify as may of these as you like, and the + * order they are specified is the order they are evaluated in. If the + * condition on the is false, then the first + * who's conditional evaluates to true + * will be executed. The will be executed + * only if the and all + * conditions are false. + * + *

    Use the following task to define the + * task before you use it the first time:

    + * + *
    
    + *   
    + * + *

    Crude Example

    + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
    + * + * + * + * + * + * + * + * + * + * + * + *
    + * + * + * @author Stefan Bodewig + */ +class IfTask extends ConditionBase { + + + private $thenTasks = null; + private $elseIfTasks = array(); + private $elseTasks = null; + + /*** + * A nested Else if task + */ + public function addElseIf(ElseIfTask $ei) + { + $this->elseIfTasks[] = $ei; + } + + /** + * A nested element - a container of tasks that will + * be run if the condition holds true. + * + *

    Not required.

    + */ + public function addThen(SequentialTask $t) { + if ($this->thenTasks != null) { + throw new BuildException("You must not nest more than one into "); + } + $this->thenTasks = $t; + } + + /** + * A nested element - a container of tasks that will + * be run if the condition doesn't hold true. + * + *

    Not required.

    + */ + public function addElse(SequentialTask $e) { + if ($this->elseTasks != null) { + throw new BuildException("You must not nest more than one into "); + } + $this->elseTasks = $e; + } + + public function main() { + + if ($this->countConditions() > 1) { + throw new BuildException("You must not nest more than one condition into "); + } + if ($this->countConditions() < 1) { + throw new BuildException("You must nest a condition into "); + } + $conditions = $this->getConditions(); + $c = $conditions[0]; + + if ($c->evaluate()) { + if ($this->thenTasks != null) { + $this->thenTasks->main(); + } + } else { + $done = false; + $sz = count($this->elseIfTasks); + for($i=0; $i < $sz && !$done; $i++) { + $ei = $this->elseIfTasks[$i]; + if ($ei->evaluate()) { + $done = true; + $ei->main(); + } + } + + if (!$done && $this->elseTasks != null) { + $this->elseTasks->main(); + } + } + } +} + +/** + * "Inner" class for IfTask. + * This class has same basic structure as the IfTask, although of course it doesn't support tags. + */ +class ElseIfTask extends ConditionBase { + + private $thenTasks = null; + + public function addThen(SequentialTask $t) { + if ($this->thenTasks != null) { + throw new BuildException("You must not nest more than one into "); + } + $this->thenTasks = $t; + } + + /** + * @return boolean + */ + public function evaluate() { + + if ($this->countConditions() > 1) { + throw new BuildException("You must not nest more than one condition into "); + } + if ($this->countConditions() < 1) { + throw new BuildException("You must nest a condition into "); + } + + $conditions = $this->getConditions(); + $c = $conditions[0]; + + return $c->evaluate(); + } + + /** + * + */ + public function main() { + if ($this->thenTasks != null) { + $this->thenTasks->main(); + } + } + } \ No newline at end of file diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/IncludePathTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/IncludePathTask.php new file mode 100644 index 0000000..a62db99 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/IncludePathTask.php @@ -0,0 +1,115 @@ +. + */ + +require_once 'phing/Task.php'; +include_once 'phing/types/Path.php'; + +/** + * Adds a normalized path to the PHP include_path. + * + * This provides a way to alter the include_path without editing any global php.ini settings + * or PHP_CLASSPATH environment variable. + * + * + * + * + * + * @author Hans Lellelid + * @version $Revision: 1.1 $ + * @package phing.tasks.system + */ +class IncludePathTask extends Task { + + /** + * Classname of task to register. + * This can be a dot-path -- relative to a location on PHP include_path. + * E.g. path.to.MyClass -> path/to/MyClass.php + * @var string + */ + private $classname; + + /** + * Path to add to PHP include_path to aid in finding specified class. + * @var Path + */ + private $classpath; + + /** + * Refid to already defined classpath + */ + private $classpathId; + + /** + * Set the classpath to be used when searching for component being defined + * + * @param Path $classpath An Path object containing the classpath. + */ + public function setClasspath(Path $classpath) { + if ($this->classpath === null) { + $this->classpath = $classpath; + } else { + $this->classpath->append($classpath); + } + } + + /** + * Create the classpath to be used when searching for component being defined + */ + public function createClasspath() { + if ($this->classpath === null) { + $this->classpath = new Path($this->project); + } + return $this->classpath->createPath(); + } + + /** + * Reference to a classpath to use when loading the files. + */ + public function setClasspathRef(Reference $r) { + $this->classpathId = $r->getRefId(); + $this->createClasspath()->setRefid($r); + } + + + /** Main entry point */ + public function main() { + + // Apparently casting to (string) no longer invokes __toString() automatically. + if (is_object($this->classpath)) { + $this->classpath = $this->classpath->__toString(); + } + + if (empty($this->classpath)) { + throw new BuildException("Provided classpath was empty."); + } + + $curr_parts = explode(PATH_SEPARATOR, get_include_path()); + $add_parts = explode(PATH_SEPARATOR, $this->classpath); + $new_parts = array_diff($add_parts, $curr_parts); + + if ($new_parts) { + $this->log("Prepending new include_path components: " . implode(PATH_SEPARATOR, $new_parts), Project::MSG_VERBOSE); + set_include_path(implode(PATH_SEPARATOR, array_merge($new_parts, $curr_parts))); + } + + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/InputTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/InputTask.php new file mode 100644 index 0000000..6d437dd --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/InputTask.php @@ -0,0 +1,146 @@ +. + */ + +require_once 'phing/Task.php'; +include_once 'phing/input/InputRequest.php'; +include_once 'phing/input/YesNoInputRequest.php'; +include_once 'phing/input/MultipleChoiceInputRequest.php'; + +/** + * Reads input from the InputHandler. + * + * @see Project::getInputHandler() + * @author Hans Lellelid (Phing) + * @author Ulrich Schmidt (Ant) + * @author Stefan Bodewig (Ant) + * @version $Revision: 1.6 $ + * @package phing.tasks.system + */ +class InputTask extends Task { + + private $validargs; + private $message = ""; // required + private $propertyName; // required + private $defaultValue; + private $promptChar; + + /** + * Defines valid input parameters as comma separated strings. If set, input + * task will reject any input not defined as accepted and requires the user + * to reenter it. Validargs are case sensitive. If you want 'a' and 'A' to + * be accepted you need to define both values as accepted arguments. + * + * @param validargs A comma separated String defining valid input args. + */ + public function setValidargs ($validargs) { + $this->validargs = $validargs; + } + + /** + * Defines the name of a property to be set from input. + * + * @param string $name Name for the property to be set from input + */ + public function setPropertyName($name) { + $this->propertyName = $name; + } + + /** + * Sets the Message which gets displayed to the user during the build run. + * @param message The message to be displayed. + */ + public function setMessage ($message) { + $this->message = $message; + } + + /** + * Set a multiline message. + */ + public function addText($msg) { + $this->message .= $this->project->replaceProperties($msg); + } + + /** + * Add a default value. + * @param string $v + */ + public function setDefaultValue($v) { + $this->defaultValue = $v; + } + + /** + * Set the character/string to use for the prompt. + * @param string $c + */ + public function setPromptChar($c) { + $this->promptChar = $c; + } + + /** + * Actual method executed by phing. + * @throws BuildException + */ + public function main() { + + if ($this->propertyName === null) { + throw new BuildException("You must specify a value for propertyName attribute."); + } + + if ($this->validargs !== null) { + $accept = preg_split('/[\s,]+/', $this->validargs); + + // is it a boolean (yes/no) inputrequest? + $yesno = false; + if (count($accept) == 2) { + $yesno = true; + foreach($accept as $ans) { + if(!StringHelper::isBoolean($ans)) { + $yesno = false; + break; + } + } + } + if ($yesno) $request = new YesNoInputRequest($this->message, $accept); + else $request = new MultipleChoiceInputRequest($this->message, $accept); + } else { + $request = new InputRequest($this->message); + } + + // default default is curr prop value + $request->setDefaultValue($this->project->getProperty($this->propertyName)); + + $request->setPromptChar($this->promptChar); + + // unless overridden... + if ($this->defaultValue !== null) { + $request->setDefaultValue($this->defaultValue); + } + + $this->project->getInputHandler()->handleInput($request); + + $value = $request->getInput(); + + if ($value !== null) { + $this->project->setUserProperty($this->propertyName, $value); + } + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/MatchingTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/MatchingTask.php new file mode 100644 index 0000000..64b9f72 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/MatchingTask.php @@ -0,0 +1,361 @@ +. + */ + +require_once 'phing/Task.php'; +require_once 'phing/types/selectors/SelectorContainer.php'; +include_once 'phing/types/FileSet.php'; +include_once 'phing/types/PatternSet.php'; +include_once 'phing/util/DirectoryScanner.php'; + +/** + * This is an abstract task that should be used by all those tasks that + * require to include or exclude files based on pattern matching. + * + * This is very closely based on the ANT class of the same name. + * + * @author Hans Lellelid (Phing) + * @author Arnout J. Kuiper (Ant) + * @author Stefano Mazzocchi (Ant) + * @author Sam Ruby (Ant) + * @author Jon S. Stevens (Ant + * @author Stefan Bodewig (Ant) + * @author Bruce Atherton (Ant) + * @version $Revision: 1.4 $ + * @package phing.tasks.system + */ +abstract class MatchingTask extends Task implements SelectorContainer { + + /** @var boolean */ + protected $useDefaultExcludes = true; + + /** @var FileSet */ + protected $fileset; + + /** + * Create instance; set fileset to new FileSet. + */ + public function __construct() { + $this->fileset = new FileSet(); + } + + /** + * @see ProjectComponent::setProject() + */ + public function setProject(Project $project) { + parent::setProject($project); + $this->fileset->setProject($project); + } + + /** + * add a name entry on the include list + * @return PatternSetNameEntry + */ + public function createInclude() { + return $this->fileset->createInclude(); + } + + /** + * add a name entry on the include files list + * @return PatternSetNameEntry + */ + public function createIncludesFile() { + return $this->fileset->createIncludesFile(); + } + + /** + * add a name entry on the exclude list + * @return PatternSetNameEntry + */ + public function createExclude() { + return $this->fileset->createExclude(); + } + + /** + * add a name entry on the include files list + * @return PatternSetNameEntry + */ + public function createExcludesFile() { + return $this->fileset->createExcludesFile(); + } + + /** + * add a set of patterns + * @return PatternSet + */ + public function createPatternSet() { + return $this->fileset->createPatternSet(); + } + + /** + * Sets the set of include patterns. Patterns may be separated by a comma + * or a space. + * + * @param string $includes the string containing the include patterns + * @return void + */ + public function setIncludes($includes) { + $this->fileset->setIncludes($includes); + } + + /** + * Sets the set of exclude patterns. Patterns may be separated by a comma + * or a space. + * + * @param string $excludes the string containing the exclude patterns + */ + public function setExcludes($excludes) { + $this->fileset->setExcludes($excludes); + } + + + /** + * Sets whether default exclusions should be used or not. + * + * @param boolean $useDefaultExcludes "true"|"on"|"yes" when default exclusions + * should be used, "false"|"off"|"no" when they + * shouldn't be used. + */ + public function setDefaultexcludes($useDefaultExcludes) { + $this->useDefaultExcludes = (boolean) $useDefaultExcludes; + } + + /** + * Returns the directory scanner needed to access the files to process. + * @return DirectoryScanner + */ + protected function getDirectoryScanner(PhingFile $baseDir) { + $this->fileset->setDir($baseDir); + $this->fileset->setDefaultexcludes($this->useDefaultExcludes); + return $this->fileset->getDirectoryScanner($this->project); + } + + /** + * Sets the name of the file containing the includes patterns. + * + * @param PhingFile $includesfile A string containing the filename to fetch + * the include patterns from. + * @return void + */ + public function setIncludesfile(PhingFile $includesfile) { + $this->fileset->setIncludesfile(includesfile); + } + + /** + * Sets the name of the file containing the includes patterns. + * + * @param PhingFile $excludesfile A string containing the filename to fetch + * the include patterns from. + * @return void + */ + public function setExcludesfile(PhingFile $excludesfile) { + $this->fileset->setExcludesfile($excludesfile); + } + + /** + * Sets case sensitivity of the file system + * + * @param boolean $isCaseSensitive "true"|"on"|"yes" if file system is case + * sensitive, "false"|"off"|"no" when not. + * @return void + */ + public function setCaseSensitive($isCaseSensitive) { + $this->fileset->setCaseSensitive($isCaseSensitive); + } + + /** + * Sets whether or not symbolic links should be followed. + * + * @param boolean $followSymlinks whether or not symbolic links should be followed + * @return void + */ + public function setFollowSymlinks($followSymlinks) { + $this->fileset->setFollowSymlinks($followSymlinks); + } + + /** + * Indicates whether there are any selectors here. + * + * @return boolean Whether any selectors are in this container + */ + public function hasSelectors() { + return $this->fileset->hasSelectors(); + } + + /** + * Gives the count of the number of selectors in this container + * + * @return int The number of selectors in this container + */ + public function selectorCount() { + return $this->fileset->selectorCount(); + } + + /** + * Returns the set of selectors as an array. + * + * @return array FileSelector[] An array of selectors in this container + */ + public function getSelectors(Project $p) { + return $this->fileset->getSelectors($p); + } + + /** + * Returns an enumerator for accessing the set of selectors. + * + * @return an enumerator that goes through each of the selectors + */ + public function selectorElements() { + return $this->fileset->selectorElements(); + } + + /** + * Add a new selector into this container. + * + * @param FileSelector $selector the new selector to add + * @return void + */ + public function appendSelector(FileSelector $selector) { + $this->fileset->appendSelector($selector); + } + + /* Methods below all add specific selectors */ + + /** + * add a "Select" selector entry on the selector list + * @return SelectSelector + */ + public function createSelector() { + return $this->fileset->createSelector(); + } + + /** + * add an "And" selector entry on the selector list + * @return AndSelector + */ + public function createAnd() { + return $this->fileset->createAnd(); + } + + /** + * add an "Or" selector entry on the selector list + * @return void + */ + public function createOr() { + return $this->fileset->createOr(); + } + + /** + * add a "Not" selector entry on the selector list + * @return NotSelector + */ + public function createNot() { + return $this->fileset->createNot(); + } + + /** + * add a "None" selector entry on the selector list + * @return NoneSelector + */ + public function createNone() { + return $this->fileset->createNone(); + } + + /** + * add a majority selector entry on the selector list + * @return MajoritySelector + */ + public function createMajority() { + return $this->fileset->createMajority(); + } + + /** + * add a selector date entry on the selector list + * @return DateSelector + */ + public function createDate() { + return $this->fileset->addDate(); + } + + /** + * add a selector size entry on the selector list + * @return SizeSelector + */ + public function createSize() { + return $this->fileset->createSize(); + } + + /** + * add a selector filename entry on the selector list + * @return FilenameSelector + */ + public function createFilename() { + return $this->fileset->createFilename(); + } + + /** + * add an extended selector entry on the selector list + * @return ExtendSelector + */ + public function createCustom() { + return $this->fileset->createCustom(); + } + + /** + * add a contains selector entry on the selector list + * @return ContainsSelector + */ + public function createContains() { + return $this->fileset->createContains(); + } + + /** + * add a present selector entry on the selector list + * @return PresentSelector + */ + public function createPresent() { + return $this->fileset->createPresent(); + } + + /** + * add a depth selector entry on the selector list + * @return DepthSelector + */ + public function createDepth() { + return $this->fileset->createDepth(); + } + + /** + * add a depends selector entry on the selector list + * @return DependSelector + */ + public function createDepend() { + return $this->fileset->createDepend(); + } + + /** + * Accessor for the implict fileset. + * + * @return FileSet + */ + protected final function getImplicitFileSet() { + return $this->fileset; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/MkdirTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/MkdirTask.php new file mode 100644 index 0000000..36a11de --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/MkdirTask.php @@ -0,0 +1,64 @@ +. + */ + +require_once 'phing/Task.php'; +include_once 'phing/system/io/PhingFile.php'; + +/** + * Task to create a directory. + * + * @author Andreas Aderhold, andi@binarycloud.com + * @version $Revision: 1.8 $ + * @package phing.tasks.system + */ +class MkdirTask extends Task { + + /** directory to create*/ + private $dir; + + /** + * create the directory and all parents + * + * @throws BuildException if dir is somehow invalid, or creation failed. + */ + function main() { + if ($this->dir === null) { + throw new BuildException("dir attribute is required", $this->location); + } + if ($this->dir->isFile()) { + throw new BuildException("Unable to create directory as a file already exists with that name: " . $this->dir->getAbsolutePath()); + } + if (!$this->dir->exists()) { + $result = $this->dir->mkdirs(); + if (!$result) { + $msg = "Directory " . $this->dir->getAbsolutePath() . " creation was not successful for an unknown reason"; + throw new BuildException($msg, $this->location); + } + $this->log("Created dir: " . $this->dir->getAbsolutePath()); + } + } + + /** the directory to create; required. */ + function setDir(PhingFile $dir) { + $this->dir = $dir; + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/MoveTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/MoveTask.php new file mode 100644 index 0000000..5b74159 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/MoveTask.php @@ -0,0 +1,247 @@ +. + */ + +require_once 'phing/tasks/system/CopyTask.php'; +include_once 'phing/system/io/PhingFile.php'; +include_once 'phing/system/io/IOException.php'; + +/** + * Moves a file or directory to a new file or directory. + * + * By default, the destination file is overwritten if it + * already exists. When overwrite is turned off, then files + * are only moved if the source file is newer than the + * destination file, or when the destination file does not + * exist. + * + * Source files and directories are only deleted when the file or + * directory has been copied to the destination successfully. + * + * @version $Revision: 1.8 $ + * @package phing.tasks.system + */ +class MoveTask extends CopyTask { + + function __construct() { + parent::__construct(); + $this->forceOverwrite = true; + } + + /** + * Validates attributes coming in from XML + * + * @access private + * @return void + * @throws BuildException + */ + protected function validateAttributes() { + if ($this->file !== null && $this->file->isDirectory()) { + if (($this->destFile !== null && $this->destDir !== null) + || ($this->destFile === null && $this->destDir === null)) { + throw new BuildException("One and only one of tofile and todir must be set."); + } + + if ($this->destFile === null) + { + $this->destFile = new PhingFile($this->destDir, $this->file->getName()); + } + + if ($this->destDir === null) + { + $this->destDir = $this->destFile->getParentFile(); + } + + $this->completeDirMap[$this->file->getAbsolutePath()] = $this->destFile->getAbsolutePath(); + + $this->file = null; + } else { + parent::validateAttributes(); + } + } + + protected function doWork() { + if (count($this->completeDirMap) > 0) + { + foreach ($this->completeDirMap as $from => $to) + { + $f = new PhingFile($from); + $d = new PhingFile($to); + + $moved = false; + try { // try to rename + $this->log("Attempting to rename $from to $to", $this->verbosity); + $this->renameFile($f, $d, $this->forceOverwrite); + $moved = true; + } catch (IOException $ioe) { + $moved = false; + $this->log("Failed to rename $from to $to: " . $ioe->getMessage(), $this->verbosity); + } + } + } + + $copyMapSize = count($this->fileCopyMap); + if ($copyMapSize > 0) { + // files to move + $this->log("Moving $copyMapSize files to " . $this->destDir->getAbsolutePath()); + + foreach($this->fileCopyMap as $from => $to) { + if ($from == $to) { + $this->log("Skipping self-move of $from", $this->verbosity); + continue; + } + + $moved = false; + $f = new PhingFile($from); + $d = new PhingFile($to); + + $moved = false; + try { // try to rename + $this->log("Attempting to rename $from to $to", $this->verbosity); + $this->renameFile($f, $d, $this->forceOverwrite); + $moved = true; + } catch (IOException $ioe) { + $moved = false; + $this->log("Failed to rename $from to $to: " . $ioe->getMessage(), $this->verbosity); + } + + if (!$moved) { + try { // try to move + $this->log("Moving $from to $to", $this->verbosity); + + $this->fileUtils->copyFile($f, $d, $this->forceOverwrite, $this->preserveLMT, $this->filterChains, $this->getProject()); + + $f = new PhingFile($fromFile); + $f->delete(); + } catch (IOException $ioe) { + $msg = "Failed to move $from to $to: " . $ioe->getMessage(); + throw new BuildException($msg, $this->location); + } + } // if !moved + } // foreach fileCopyMap + } // if copyMapSize + + // handle empty dirs if appropriate + if ($this->includeEmpty) { + $e = array_keys($this->dirCopyMap); + $count = 0; + foreach ($e as $dir) { + $d = new PhingFile((string) $dir); + if (!$d->exists()) { + if (!$d->mkdirs()) { + $this->log("Unable to create directory " . $d->getAbsolutePath(), Project::MSG_ERR); + } else { + $count++; + } + } + } + if ($count > 0) { + $this->log("moved $count empty director" . ($count == 1 ? "y" : "ies") . " to " . $this->destDir->getAbsolutePath()); + } + } + + if (count($this->filesets) > 0) { + // process filesets + foreach($this->filesets as $fs) { + $dir = $fs->getDir($this->project); + if ($this->okToDelete($dir)) { + $this->deleteDir($dir); + } + } + } + } + + /** Its only ok to delete a dir tree if there are no files in it. */ + private function okToDelete($d) { + $list = $d->listDir(); + if ($list === null) { + return false; // maybe io error? + } + + foreach($list as $s) { + $f = new PhingFile($d, $s); + if ($f->isDirectory()) { + if (!$this->okToDelete($f)) { + return false; + } + } else { + // found a file + return false; + } + } + return true; + } + + /** Go and delete the directory tree. */ + private function deleteDir($d) { + + $list = $d->listDir(); + if ($list === null) { + return; // on an io error list() can return null + } + + foreach($list as $fname) { + $f = new PhingFile($d, $fname); + if ($f->isDirectory()) { + $this->deleteDir($f); + } else { + throw new BuildException("UNEXPECTED ERROR - The file " . $f->getAbsolutePath() . " should not exist!"); + } + } + + $this->log("Deleting directory " . $d->getPath(), $this->verbosity); + try { + $d->delete(); + } catch (Exception $e) { + throw new BuildException("Unable to delete directory " . $d->__toString() . ": " . $e->getMessage()); + } + } + + /** + * Attempts to rename a file from a source to a destination. + * If overwrite is set to true, this method overwrites existing file + * even if the destination file is newer. + * Otherwise, the source f + * ile is renamed only if the destination file # + * is older than it. + */ + private function renameFile(PhingFile $sourceFile, PhingFile $destFile, $overwrite) { + $renamed = true; + + // ensure that parent dir of dest file exists! + $parent = $destFile->getParentFile(); + if ($parent !== null) { + if (!$parent->exists()) { + $parent->mkdirs(); + } + } + if ($destFile->exists()) { + try { + $destFile->delete(); + } catch (Exception $e) { + throw new BuildException("Unable to remove existing file " . $destFile->__toString() . ": " . $e->getMessage()); + } + } + $renamed = $sourceFile->renameTo($destFile); + + return $renamed; + } +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/PhingCallTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/PhingCallTask.php new file mode 100644 index 0000000..39f74dc --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/PhingCallTask.php @@ -0,0 +1,161 @@ +. + */ + +require_once 'phing/Task.php'; + +/** + * Call another target in the same project. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * This only works as expected if neither property1 nor foo are defined in the project itself. + * + * @author Andreas Aderhold + * @copyright 2001,2002 THYRELL. All rights reserved + * @version $Revision: 1.9 $ + * @access public + * @package phing.tasks.system + */ +class PhingCallTask extends Task { + + /** + * The called Phing task. + * + * @var PhingTask + */ + private $callee; + + /** + * The target to call. + * + * @var string + */ + private $subTarget; + + /** + * Whether to inherit all properties from current project. + * + * @var boolean + */ + private $inheritAll = true; + + /** + * Whether to inherit refs from current project. + * + * @var boolean + */ + private $inheritRefs = false; + + /** + * If true, pass all properties to the new Phing project. + * Defaults to true. Future use. + * @param boolean new value + */ + function setInheritAll($inherit) { + $this->inheritAll = (boolean) $inherit; + } + + /** + * If true, pass all references to the new Phing project. + * Defaults to false. Future use. + * + * @param boolean new value + */ + function setInheritRefs($inheritRefs) { + $this->inheritRefs = (boolean) $inheritRefs; + } + + /** + * Alias for createProperty + * @see createProperty() + */ + function createParam() { + if ($this->callee === null) { + $this->init(); + } + return $this->callee->createProperty(); + } + + /** + * Property to pass to the invoked target. + */ + function createProperty() { + if ($this->callee === null) { + $this->init(); + } + return $this->callee->createProperty(); + } + + /** + * Target to execute, required. + */ + function setTarget($target) { + $this->subTarget = (string) $target; + } + + /** + * init this task by creating new instance of the phing task and + * configuring it's by calling its own init method. + */ + function init() { + $this->callee = $this->project->createTask("phing"); + $this->callee->setOwningTarget($this->getOwningTarget()); + $this->callee->setTaskName($this->getTaskName()); + $this->callee->setHaltOnFailure(true); + $this->callee->setLocation($this->getLocation()); + $this->callee->init(); + } + + /** + * hand off the work to the phing task of ours, after setting it up + * @throws BuildException on validation failure or if the target didn't + * execute + */ + function main() { + + $this->log("Running PhingCallTask for target '" . $this->subTarget . "'", Project::MSG_DEBUG); + if ($this->callee === null) { + $this->init(); + } + + if ($this->subTarget === null) { + throw new BuildException("Attribute target is required.", $this->getLocation()); + } + + $this->callee->setPhingfile($this->project->getProperty("phing.file")); + $this->callee->setTarget($this->subTarget); + $this->callee->setInheritAll($this->inheritAll); + $this->callee->setInheritRefs($this->inheritRefs); + $this->callee->main(); + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/PhingTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/PhingTask.php new file mode 100644 index 0000000..b8d4311 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/PhingTask.php @@ -0,0 +1,623 @@ +. +*/ + +include_once 'phing/Task.php'; +include_once 'phing/util/FileUtils.php'; +include_once 'phing/types/Reference.php'; +include_once 'phing/tasks/system/PropertyTask.php'; + +/** + * Task that invokes phing on another build file. + * + * Use this task, for example, if you have nested buildfiles in your project. Unlike + * AntTask, PhingTask can even support filesets: + * + *
    + *   
    + *    
    + *       
    + *      
    + *    
    + *   
    + * 
    + * + * @author Hans Lellelid + * @version $Revision: 1.20 $ + * @package phing.tasks.system + */ +class PhingTask extends Task { + + /** the basedir where is executed the build file */ + private $dir; + + /** build.xml (can be absolute) in this case dir will be ignored */ + private $phingFile; + + /** the target to call if any */ + protected $newTarget; + + /** should we inherit properties from the parent ? */ + private $inheritAll = true; + + /** should we inherit references from the parent ? */ + private $inheritRefs = false; + + /** the properties to pass to the new project */ + private $properties = array(); + + /** the references to pass to the new project */ + private $references = array(); + + /** The filesets that contain the files PhingTask is to be run on. */ + private $filesets = array(); + + /** the temporary project created to run the build file */ + private $newProject; + + /** Fail the build process when the called build fails? */ + private $haltOnFailure = false; + + /** + * If true, abort the build process if there is a problem with or in the target build file. + * Defaults to false. + * + * @param boolean new value + */ + public function setHaltOnFailure($hof) { + $this->haltOnFailure = (boolean) $hof; + } + + /** + * Creates a Project instance for the project to call. + * @return void + */ + public function init() { + $this->newProject = new Project(); + $tdf = $this->project->getTaskDefinitions(); + $this->newProject->addTaskDefinition("property", $tdf["property"]); + } + + /** + * Called in execute or createProperty if newProject is null. + * + *

    This can happen if the same instance of this task is run + * twice as newProject is set to null at the end of execute (to + * save memory and help the GC).

    + * + *

    Sets all properties that have been defined as nested + * property elements.

    + */ + private function reinit() { + $this->init(); + $count = count($this->properties); + for ($i = 0; $i < $count; $i++) { + $p = $this->properties[$i]; + $newP = $this->newProject->createTask("property"); + $newP->setName($p->getName()); + if ($p->getValue() !== null) { + $newP->setValue($p->getValue()); + } + if ($p->getFile() !== null) { + $newP->setFile($p->getFile()); + } + if ($p->getPrefix() !== null) { + $newP->setPrefix($p->getPrefix()); + } + if ($p->getRefid() !== null) { + $newP->setRefid($p->getRefid()); + } + if ($p->getEnvironment() !== null) { + $newP->setEnvironment($p->getEnvironment()); + } + if ($p->getUserProperty() !== null) { + $newP->setUserProperty($p->getUserProperty()); + } + if ($p->getOverride() !== null) { + $newP->setOverride($p->getOverride()); + } + $this->properties[$i] = $newP; + } + } + + /** + * Main entry point for the task. + * + * @return void + */ + public function main() { + + // Call Phing on the file set with the attribute "phingfile" + if ($this->phingFile !== null or $this->dir !== null) { + $this->processFile(); + } + + // if no filesets are given stop here; else process filesets + if (empty($this->filesets)) { + return; + } + + // preserve old settings + $savedDir = $this->dir; + $savedPhingFile = $this->phingFile; + $savedTarget = $this->newTarget; + + // set no specific target for files in filesets + // [HL] I'm commenting this out; I don't know why this should not be supported! + // $this->newTarget = null; + + foreach($this->filesets as $fs) { + + $ds = $fs->getDirectoryScanner($this->project); + + $fromDir = $fs->getDir($this->project); + $srcFiles = $ds->getIncludedFiles(); + + foreach($srcFiles as $fname) { + $f = new PhingFile($ds->getbasedir(), $fname); + $f = $f->getAbsoluteFile(); + $this->phingFile = $f->getAbsolutePath(); + $this->dir = $f->getParentFile(); + $this->processFile(); // run Phing! + } + } + + // side effect free programming ;-) + $this->dir = $savedDir; + $this->phingFile = $savedPhingFile; + $this->newTarget = $savedTarget; + + // [HL] change back to correct dir + if ($this->dir !== null) { + chdir($this->dir->getAbsolutePath()); + } + + } + + /** + * Execute phing file. + * + * @return void + */ + private function processFile() { + + $buildFailed = false; + $savedDir = $this->dir; + $savedPhingFile = $this->phingFile; + $savedTarget = $this->newTarget; + + $savedBasedirAbsPath = null; // this is used to save the basedir *if* we change it + + try { + + if ($this->newProject === null) { + $this->reinit(); + } + + $this->initializeProject(); + + if ($this->dir !== null) { + + $dirAbsPath = $this->dir->getAbsolutePath(); + + // BE CAREFUL! -- when the basedir is changed for a project, + // all calls to getAbsolutePath() on a relative-path dir will + // be made relative to the project's basedir! This means + // that subsequent calls to $this->dir->getAbsolutePath() will be WRONG! + + // We need to save the current project's basedir first. + $savedBasedirAbsPath = $this->getProject()->getBasedir()->getAbsolutePath(); + + $this->newProject->setBasedir($this->dir); + + // Now we must reset $this->dir so that it continues to resolve to the same + // path. + $this->dir = new PhingFile($dirAbsPath); + + if ($savedDir !== null) { // has been set explicitly + $this->newProject->setInheritedProperty("project.basedir", $this->dir->getAbsolutePath()); + } + + } else { + + // Since we're not changing the basedir here (for file resolution), + // we don't need to worry about any side-effects in this scanrio. + $this->dir = $this->getProject()->getBasedir(); + } + + $this->overrideProperties(); + if ($this->phingFile === null) { + $this->phingFile = "build.xml"; + } + + $fu = new FileUtils(); + $file = $fu->resolveFile($this->dir, $this->phingFile); + $this->phingFile = $file->getAbsolutePath(); + + $this->log("Calling Buildfile '" . $this->phingFile . "' with target '" . $this->newTarget . "'"); + + $this->newProject->setUserProperty("phing.file", $this->phingFile); + + ProjectConfigurator::configureProject($this->newProject, new PhingFile($this->phingFile)); + + if ($this->newTarget === null) { + $this->newTarget = $this->newProject->getDefaultTarget(); + } + + // Are we trying to call the target in which we are defined? + if ($this->newProject->getBaseDir() == $this->project->getBaseDir() && + $this->newProject->getProperty("phing.file") == $this->project->getProperty("phing.file") && + $this->getOwningTarget() !== null && + $this->newTarget == $this->getOwningTarget()->getName()) { + + throw new BuildException("phing task calling its own parent target"); + } + + $this->addReferences(); + $this->newProject->executeTarget($this->newTarget); + + } catch (Exception $e) { + $buildFailed = true; + $this->log($e->getMessage(), Project::MSG_ERR); + if (Phing::getMsgOutputLevel() <= Project::MSG_DEBUG) { + $lines = explode("\n", $e->getTraceAsString()); + foreach($lines as $line) { + $this->log($line, Project::MSG_DEBUG); + } + } + // important!!! continue on to perform cleanup tasks. + } + + + // reset environment values to prevent side-effects. + + $this->newProject = null; + $pkeys = array_keys($this->properties); + foreach($pkeys as $k) { + $this->properties[$k]->setProject(null); + } + + $this->dir = $savedDir; + $this->phingFile = $savedPhingFile; + $this->newTarget = $savedTarget; + + // If the basedir for any project was changed, we need to set that back here. + if ($savedBasedirAbsPath !== null) { + chdir($savedBasedirAbsPath); + } + + if ($this->haltOnFailure && $buildFailed) { + throw new BuildException("Execution of the target buildfile failed. Aborting."); + } + } + + /** + * Configure the Project, i.e. make intance, attach build listeners + * (copy from father project), add Task and Datatype definitions, + * copy properties and references from old project if these options + * are set via the attributes of the XML tag. + * + * Developer note: + * This function replaces the old methods "init", "_reinit" and + * "_initializeProject". + * + * @access protected + */ + private function initializeProject() { + + $this->newProject->setInputHandler($this->project->getInputHandler()); + + foreach($this->project->getBuildListeners() as $listener) { + $this->newProject->addBuildListener($listener); + } + + /* Copy things from old project. Datatypes and Tasks are always + * copied, properties and references only if specified so/not + * specified otherwise in the XML definition. + */ + // Add Datatype definitions + foreach ($this->project->getDataTypeDefinitions() as $typeName => $typeClass) { + $this->newProject->addDataTypeDefinition($typeName, $typeClass); + } + + // Add Task definitions + foreach ($this->project->getTaskDefinitions() as $taskName => $taskClass) { + if ($taskClass == "propertytask") { + // we have already added this taskdef in init() + continue; + } + $this->newProject->addTaskDefinition($taskName, $taskClass); + } + + // set user-defined properties + $this->project->copyUserProperties($this->newProject); + + if (!$this->inheritAll) { + // set System built-in properties separately, + // b/c we won't inherit them. + $this->newProject->setSystemProperties(); + + } else { + // set all properties from calling project + $properties = $this->project->getProperties(); + foreach ($properties as $name => $value) { + if ($name == "basedir" || $name == "phing.file" || $name == "phing.version") { + // basedir and phing.file get special treatment in main() + continue; + } + // don't re-set user properties, avoid the warning message + if ($this->newProject->getProperty($name) === null){ + // no user property + $this->newProject->setNewProperty($name, $value); + } + } + + } + + } + + /** + * Override the properties in the new project with the one + * explicitly defined as nested elements here. + * @return void + * @throws BuildException + */ + private function overrideProperties() { + foreach(array_keys($this->properties) as $i) { + $p = $this->properties[$i]; + $p->setProject($this->newProject); + $p->main(); + } + $this->project->copyInheritedProperties($this->newProject); + } + + /** + * Add the references explicitly defined as nested elements to the + * new project. Also copy over all references that don't override + * existing references in the new project if inheritrefs has been + * requested. + * + * @return void + * @throws BuildException + */ + private function addReferences() { + + // parent project references + $projReferences = $this->project->getReferences(); + + $newReferences = $this->newProject->getReferences(); + + $subprojRefKeys = array(); + + if (count($this->references) > 0) { + for ($i=0, $count=count($this->references); $i < $count; $i++) { + $ref = $this->references[$i]; + $refid = $ref->getRefId(); + + if ($refid === null) { + throw new BuildException("the refid attribute is required" + . " for reference elements"); + } + if (!isset($projReferences[$refid])) { + $this->log("Parent project doesn't contain any reference '" + . $refid . "'", + Project::MSG_WARN); + continue; + } + + $subprojRefKeys[] = $refid; + //thisReferences.remove(refid); + $toRefid = $ref->getToRefid(); + if ($toRefid === null) { + $toRefid = $refid; + } + $this->copyReference($refid, $toRefid); + } + } + + // Now add all references that are not defined in the + // subproject, if inheritRefs is true + if ($this->inheritRefs) { + + // get the keys that are were not used by the subproject + $unusedRefKeys = array_diff(array_keys($projReferences), $subprojRefKeys); + + foreach($unusedRefKeys as $key) { + if (isset($newReferences[$key])) { + continue; + } + $this->copyReference($key, $key); + } + } + } + + /** + * Try to clone and reconfigure the object referenced by oldkey in + * the parent project and add it to the new project with the key + * newkey. + * + *

    If we cannot clone it, copy the referenced object itself and + * keep our fingers crossed.

    + * + * @param string $oldKey + * @param string $newKey + * @return void + */ + private function copyReference($oldKey, $newKey) { + $orig = $this->project->getReference($oldKey); + if ($orig === null) { + $this->log("No object referenced by " . $oldKey . ". Can't copy to " + .$newKey, + PROJECT_SG_WARN); + return; + } + + $copy = clone $orig; + + if ($copy instanceof ProjectComponent) { + $copy->setProject($this->newProject); + } elseif (in_array('setProject', get_class_methods(get_class($copy)))) { + $copy->setProject($this->newProject); + } elseif ($copy instanceof Project) { + // don't copy the old "Project" itself + } else { + $msg = "Error setting new project instance for " + . "reference with id " . $oldKey; + throw new BuildException($msg); + } + + $this->newProject->addReference($newKey, $copy); + } + + /** + * If true, pass all properties to the new phing project. + * Defaults to true. + * + * @access public + */ + function setInheritAll($value) { + $this->inheritAll = (boolean) $value; + } + + /** + * If true, pass all references to the new phing project. + * Defaults to false. + * + * @access public + */ + function setInheritRefs($value) { + $this->inheritRefs = (boolean)$value; + } + + /** + * The directory to use as a base directory for the new phing project. + * Defaults to the current project's basedir, unless inheritall + * has been set to false, in which case it doesn't have a default + * value. This will override the basedir setting of the called project. + * + * @access public + */ + function setDir($d) { + if ( is_string($d) ) + $this->dir = new PhingFile($d); + else + $this->dir = $d; + } + + /** + * The build file to use. + * Defaults to "build.xml". This file is expected to be a filename relative + * to the dir attribute given. + * + * @access public + */ + function setPhingfile($s) { + // it is a string and not a file to handle relative/absolute + // otherwise a relative file will be resolved based on the current + // basedir. + $this->phingFile = $s; + } + + /** + * Alias function for setPhingfile + * + * @access public + */ + function setBuildfile($s) { + $this->setPhingFile($s); + } + + /** + * The target of the new Phing project to execute. + * Defaults to the new project's default target. + * + * @access public + */ + function setTarget($s) { + $this->newTarget = $s; + } + + /** + * Support for filesets; This method returns a reference to an instance + * of a FileSet object. + * + * @return FileSet + */ + function createFileSet() { + $num = array_push($this->filesets, new FileSet()); + return $this->filesets[$num-1]; + } + + /** + * Property to pass to the new project. + * The property is passed as a 'user property' + * + * @access public + */ + function createProperty() { + $p = new PropertyTask(); + $p->setFallback($this->newProject); + $p->setUserProperty(true); + $this->properties[] = $p; + return $p; + } + + /** + * Reference element identifying a data type to carry + * over to the new project. + * + * @access public + */ + function createReference() { + $num = array_push($this->references, new PhingReference()); + return $this->references[$num-1]; + } + +} + +/** + * Helper class that implements the nested + * element of and . + */ +class PhingReference extends Reference { + + private $targetid = null; + + /** + * Set the id that this reference to be stored under in the + * new project. + * + * @param targetid the id under which this reference will be passed to + * the new project */ + public function setToRefid($targetid) { + $this->targetid = $targetid; + } + + /** + * Get the id under which this reference will be stored in the new + * project + * + * @return the id of the reference in the new project. + */ + public function getToRefid() { + return $this->targetid; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/PhpEvalTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/PhpEvalTask.php new file mode 100644 index 0000000..3a45f4e --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/PhpEvalTask.php @@ -0,0 +1,169 @@ +. + */ + +require_once 'phing/Task.php'; + +/** + * Executes PHP function or evaluates expression and sets return value to a property. + * + * WARNING: + * This task can, of course, be abused with devastating effects. E.g. do not + * modify internal Phing classes unless you know what you are doing. + * + * @author Hans Lellelid + * @version $Revision: 1.7 $ + * @package phing.tasks.system + * + * @todo Add support for evaluating expressions + */ +class PhpEvalTask extends Task { + + protected $expression; // Expression to evaluate + protected $function; // Function to execute + protected $class; // Class containing function to execute + protected $returnProperty; // name of property to set to return value + protected $params = array(); // parameters for function calls + + /** Main entry point. */ + function main() { + + if ($this->function === null && $this->expression === null) { + throw new BuildException("You must specify a function to execute or PHP expression to evalute.", $this->location); + } + + if ($this->function !== null && $this->expression !== null) { + throw new BuildException("You can specify function or expression, but not both.", $this->location); + } + + if ($this->expression !== null && !empty($this->params)) { + throw new BuildException("You cannot use nested tags when evaluationg a PHP expression.", $this->location); + } + + $retval = null; + if ($this->function !== null) { + $retval = $this->callFunction(); + } elseif ($this->expression !== null) { + $retval = $this->evalExpression(); + } + + if ($this->returnProperty !== null) { + $this->project->setProperty($this->returnProperty, $retval); + } + } + + /** + * Calls function and returns results. + * @return mixed + */ + protected function callFunction() { + + if ($this->class !== null) { + // import the classname & unqualify it, if necessary + $this->class = Phing::import($this->class); + + $user_func = array($this->class, $this->function); + $h_func = $this->class . '::' . $this->function; // human-readable (for log) + } else { + $user_func = $this->function; + $h_func = $user_func; // human-readable (for log) + } + + // put parameters into simple array + $params = array(); + foreach($this->params as $p) { + $params[] = $p->getValue(); + } + + $this->log("Calling PHP function: " . $h_func . "()"); + foreach($params as $p) { + $this->log(" param: " . $p, Project::MSG_VERBOSE); + } + + $return = call_user_func_array($user_func, $params); + return $return; + } + + /** + * Evaluates expression and returns resulting value. + * @return mixed + */ + protected function evalExpression() { + $this->log("Evaluating PHP expression: " . $this->expression); + if (!StringHelper::endsWith(';', trim($this->expression))) { + $this->expression .= ';'; + } + $retval = null; + eval('$retval = ' . $this->expression); + return $retval; + } + + /** Set function to execute */ + public function setFunction($f) { + $this->function = $f; + } + + /** Set [static] class which contains function to execute */ + public function setClass($c) { + $this->class = $c; + } + + /** Sets property name to set with return value of function or expression.*/ + public function setReturnProperty($r) { + $this->returnProperty = $r; + } + + /** Set PHP expression to evaluate. */ + public function addText($expression) { + $this->expression = $expression; + } + + /** Set PHP expression to evaluate. */ + public function setExpression($expression) { + $this->expression = $expression; + } + + /** Add a nested tag. */ + public function createParam() { + $p = new FunctionParam(); + $this->params[] = $p; + return $p; + } +} + +/** + * Supports the nested tag for PhpTask. + */ +class FunctionParam { + + private $val; + + public function setValue($v) { + $this->val = $v; + } + + public function addText($v) { + $this->val = $v; + } + + public function getValue() { + return $this->val; + } +} \ No newline at end of file diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/PropertyPromptTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/PropertyPromptTask.php new file mode 100644 index 0000000..77279a7 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/PropertyPromptTask.php @@ -0,0 +1,234 @@ +. + */ + +require_once 'phing/Task.php'; +include_once 'phing/system/io/ConsoleReader.php'; + +/** + * Deprecated task that uses console to prompt user for property values. + * + * This class is very slightly simpler than the InputTask, but lacks the ability + * to use a non-console input handler. You should, therefore, use InputTask. This + * class can serve as a reference, but will be removed in the future. + * + * @author Hans Lellelid (Phing) + * @author Anthony J. Young-Garner (Ant) + * @version $Revision: 1.4 $ + * @package phing.tasks.system + * @deprecated - in favor of the more capable InputTask + */ +class PropertyPromptTask extends Task { + + /** + * The property name to set with the output. + * @var string + */ + private $propertyName; // required + + /** + * The default value to use if no input is entered. + * @var string + */ + private $defaultValue; + + /** + * The entered value. + * @var string + */ + private $proposedValue; + + /** + * The text to use for the prompt. + * @var string + */ + private $promptText; + + /** + * The character to put after the text. + * @var string + */ + private $promptCharacter; + + /** + * + */ + private $useExistingValue; + + /** + * Run the PropertyPrompt task. + * @throws BuildException + */ + public function main() { + + $this->proposedValue = $this->project->getProperty($this->propertyName); + $currentValue = $this->defaultValue; + + if ($currentValue == "" && $this->proposedValue !== null) { + $currentValue = $this->proposedValue; + } + + if ($this->useExistingValue !== true || $this->proposedValue === null) { + + $this->log("Prompting user for " . $this->propertyName . ". " . $this->getDefaultMessage(), Project::MSG_VERBOSE); + + print "\n" . $this->promptText . " [" . $currentValue . "] " . $this->promptCharacter . " "; + + /** future version should probably have hooks for validation of user input.*/ + $reader = new ConsoleReader(); + + try { + $this->proposedValue = $reader->readLine(); + } catch (IOException $e) { + $this->log("Prompt failed. Using default. (Failure reason: " . $e->getMessage().")"); + $this->proposedValue = $this->defaultValue; + } + + if ($this->proposedValue === "") { + $this->log("No value specified, using default.", Project::MSG_VERBOSE); + $this->proposedValue = $this->defaultValue; + } + + if (isset($this->proposedValue) && $this->proposedValue !== "") { + $this->project->setProperty($this->propertyName, $this->proposedValue); + } + + } + } + + /** + * Returns a string to be inserted in the log message + * indicating whether a default response was specified + * in the build file. + */ + private function getDefaultMessage() { + if ($this->defaultValue == "") { + return "No default response specified."; + } else return "Default response is " . $this->defaultValue . "."; + } + + /** + * Returns defaultValue specified + * in this task for the Property + * being set. + * @return string + */ + public function getDefaultValue() { + return $this->defaultValue; + } + + /** + * Returns the terminating character used to + * punctuate the prompt text. + * @return string + */ + public function getPromptCharacter() { + return $this->promptCharacter; + } + + /** + * Returns text of the prompt. + * @return java.lang.String + */ + public function getPromptText() { + return $this->promptText; + } + + /** + * Returns name of the Ant Project Property + * being set by this task. + * @return string + */ + public function getPropertyName() { + return $this->propertyName; + } + /** + * Initializes this task. + */ + public function init() { + parent::init(); + $this->defaultValue = ""; + $this->promptCharacter = "?"; + $this->useExistingValue = false; + } + + /** + * Insert the method's description here. + * Creation date: (12/10/2001 8:16:16 AM) + * @return boolean + */ + public function isUseExistingValue() { + return $this->useExistingValue; + } + + /** + * Sets defaultValue for the Property + * being set by this task. + * @param string $newDefaultvalue + */ + public function setDefaultvalue($newDefaultvalue) { + $this->defaultValue = $newDefaultvalue; + } + + /** + * Sets the terminating character used to + * punctuate the prompt text (default is "?"). + * @param string $newPromptcharacter + */ + public function setPromptCharacter($newPromptcharacter) { + $this->promptCharacter = $newPromptcharacter; + } + + /** + * Sets text of the prompt. + * @param string $newPrompttext + */ + public function setPromptText($newPrompttext) { + $this->promptText = $newPrompttext; + } + + /** + * Specifies the Phing Project Property + * being set by this task. + * @param newPropertyname java.lang.String + */ + public function setPropertyName($newPropertyname) { + $this->propertyName = $newPropertyname; + } + + /** + * + * @param boolean $newUseExistingValue + */ + public function setUseExistingValue($newUseExistingValue) { + $this->useExistingValue = $newUseExistingValue; + } + + /** + * Sets the prompt text that will be presented to the user. + * @param string $prompt + * @return void + */ + public function addText($prompt) { + $this->setPromptText($prompt); + } + + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/PropertyTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/PropertyTask.php new file mode 100644 index 0000000..6a650d7 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/PropertyTask.php @@ -0,0 +1,438 @@ +. + */ + +include_once 'phing/Task.php'; +include_once 'phing/system/util/Properties.php'; + +/** + * Task for setting properties in buildfiles. + * + * @author Andreas Aderhold + * @author Hans Lellelid + * @version $Revision$ + * @package phing.tasks.system + */ +class PropertyTask extends Task { + + /** name of the property */ + protected $name; + + /** value of the property */ + protected $value; + + protected $reference; + protected $env; // Environment + protected $file; + protected $ref; + protected $prefix; + protected $fallback; + + /** Whether to force overwrite of existing property. */ + protected $override = false; + + /** Whether property should be treated as "user" property. */ + protected $userProperty = false; + + /** + * Sets a the name of current property component + */ + function setName($name) { + $this->name = (string) $name; + } + + /** Get property component name. */ + function getName() { + return $this->name; + } + + /** + * Sets a the value of current property component. + * @param mixed Value of name, all scalars allowed + */ + function setValue($value) { + $this->value = (string) $value; + } + + /** + * Sets value of property to CDATA tag contents. + * @param string $values + * @since 2.2.0 + */ + public function addText($value) { + $this->setValue($value); + } + + /** Get the value of current property component. */ + function getValue() { + return $this->value; + } + + /** Set a file to use as the source for properties. */ + function setFile($file) { + if (is_string($file)) { + $file = new PhingFile($file); + } + $this->file = $file; + } + + /** Get the PhingFile that is being used as property source. */ + function getFile() { + return $this->file; + } + + function setRefid(Reference $ref) { + $this->reference = $ref; + } + + function getRefid() { + return $this->reference; + } + + /** + * Prefix to apply to properties loaded using file. + * A "." is appended to the prefix if not specified. + * @param string $prefix prefix string + * @return void + * @since 2.0 + */ + public function setPrefix($prefix) { + $this->prefix = $prefix; + if (!StringHelper::endsWith(".", $prefix)) { + $this->prefix .= "."; + } + } + + /** + * @return string + * @since 2.0 + */ + public function getPrefix() { + return $this->prefix; + } + + /** + * the prefix to use when retrieving environment variables. + * Thus if you specify environment="myenv" + * you will be able to access OS-specific + * environment variables via property names "myenv.PATH" or + * "myenv.TERM". + *

    + * Note that if you supply a property name with a final + * "." it will not be doubled. ie environment="myenv." will still + * allow access of environment variables through "myenv.PATH" and + * "myenv.TERM". This functionality is currently only implemented + * on select platforms. Feel free to send patches to increase the number of platforms + * this functionality is supported on ;).
    + * Note also that properties are case sensitive, even if the + * environment variables on your operating system are not, e.g. it + * will be ${env.Path} not ${env.PATH} on Windows 2000. + * @param env prefix + */ + function setEnvironment($env) { + $this->env = (string) $env; + } + + function getEnvironment() { + return $this->env; + } + + /** + * Set whether this is a user property (ro). + * This is deprecated in Ant 1.5, but the userProperty attribute + * of the class is still being set via constructor, so Phing will + * allow this method to function. + * @param boolean $v + */ + function setUserProperty($v) { + $this->userProperty = (boolean) $v; + } + + function getUserProperty() { + return $this->userProperty; + } + + function setOverride($v) { + $this->override = (boolean) $v; + } + + function getOverride() { + return $this->override; + } + + function toString() { + return (string) $this->value; + } + + /** + * @param Project $p + */ + function setFallback($p) { + $this->fallback = $p; + } + + function getFallback() { + return $this->fallback; + } + /** + * set the property in the project to the value. + * if the task was give a file or env attribute + * here is where it is loaded + */ + function main() { + if ($this->name !== null) { + if ($this->value === null && $this->ref === null) { + throw new BuildException("You must specify value or refid with the name attribute", $this->getLocation()); + } + } else { + if ($this->file === null && $this->env === null ) { + throw new BuildException("You must specify file or environment when not using the name attribute", $this->getLocation()); + } + } + + if ($this->file === null && $this->prefix !== null) { + throw new BuildException("Prefix is only valid when loading from a file.", $this->getLocation()); + } + + if (($this->name !== null) && ($this->value !== null)) { + $this->addProperty($this->name, $this->value); + } + + if ($this->file !== null) { + $this->loadFile($this->file); + } + + if ( $this->env !== null ) { + $this->loadEnvironment($this->env); + } + + if (($this->name !== null) && ($this->ref !== null)) { + // get the refereced property + try { + $this->addProperty($this->name, $this->reference->getReferencedObject($this->project)->toString()); + } catch (BuildException $be) { + if ($this->fallback !== null) { + $this->addProperty($this->name, $this->reference->getReferencedObject($this->fallback)->toString()); + } else { + throw $be; + } + } + } + } + + /** + * load the environment values + * @param string $prefix prefix to place before them + */ + protected function loadEnvironment($prefix) { + + $props = new Properties(); + if ( substr($prefix, strlen($prefix)-1) == '.' ) { + $prefix .= "."; + } + $this->log("Loading Environment $prefix", Project::MSG_VERBOSE); + foreach($_ENV as $key => $value) { + $props->setProperty($prefix . '.' . $key, $value); + } + $this->addProperties($props); + } + + /** + * iterate through a set of properties, + * resolve them then assign them + */ + protected function addProperties($props) { + $this->resolveAllProperties($props); + foreach($props->keys() as $name) { + $value = $props->getProperty($name); + $v = $this->project->replaceProperties($value); + if ($this->prefix !== null) { + $name = $this->prefix . $name; + } + $this->addProperty($name, $v); + } + } + + /** + * add a name value pair to the project property set + * @param string $name name of property + * @param string $value value to set + */ + protected function addProperty($name, $value) { + if ($this->userProperty) { + if ($this->project->getUserProperty($name) === null || $this->override) { + $this->project->setInheritedProperty($name, $value); + } else { + $this->log("Override ignored for " . $name, Project::MSG_VERBOSE); + } + } else { + if ($this->override) { + $this->project->setProperty($name, $value); + } else { + $this->project->setNewProperty($name, $value); + } + } + } + + /** + * load properties from a file. + * @param PhingFile $file + */ + protected function loadFile(PhingFile $file) { + $props = new Properties(); + $this->log("Loading ". $file->getAbsolutePath(), Project::MSG_INFO); + try { // try to load file + if ($file->exists()) { + $props->load($file); + $this->addProperties($props); + } else { + $this->log("Unable to find property file: ". $file->getAbsolutePath() ."... skipped", Project::MSG_WARN); + } + } catch (IOException $ioe) { + throw new BuildException("Could not load properties from file.", $ioe); + } + } + + /** + * Given a Properties object, this method goes through and resolves + * any references to properties within the object. + * + * @param Properties $props The collection of Properties that need to be resolved. + * @return void + */ + protected function resolveAllProperties(Properties $props) { + + $keys = $props->keys(); + + while(count($keys)) { + + // There may be a nice regex/callback way to handle this + // replacement, but at the moment it is pretty complex, and + // would probably be a lot uglier to work into a preg_replace_callback() + // system. The biggest problem is the fact that a resolution may require + // multiple passes. + + $name = array_shift($keys); + $value = $props->getProperty($name); + $resolved = false; + + while(!$resolved) { + + $fragments = array(); + $propertyRefs = array(); + + // [HL] this was ::parsePropertyString($this->value ...) ... this seems wrong + self::parsePropertyString($value, $fragments, $propertyRefs); + + $resolved = true; + if (count($propertyRefs) !== 0) { + + $sb = ""; + + $i = $fragments; + $j = $propertyRefs; + while(count($i)) { + $fragment = array_shift($i); + if ($fragment === null) { + $propertyName = array_shift($j); + + if ($propertyName === $name) { + // Should we maybe just log this as an error & move on? + // $this->log("Property ".$name." was circularly defined.", Project::MSG_ERR); + throw new BuildException("Property ".$name." was circularly defined."); + } + + $fragment = $this->getProject()->getProperty($propertyName); + if ($fragment === null) { + if ($props->containsKey($propertyName)) { + $fragment = $props->getProperty($propertyName); + $resolved = false; // parse again (could have been replaced w/ another var) + } else { + $fragment = "\${".$propertyName."}"; + } + } + } + $sb .= $fragment; + } + + $this->log("Resolved Property \"$value\" to \"$sb\"", Project::MSG_DEBUG); + $value = $sb; + $props->setProperty($name, $value); + + } // if (count($propertyRefs)) + + } // while (!$resolved) + + } // while (count($keys) + } + + + /** + * This method will parse a string containing ${value} style + * property values into two lists. The first list is a collection + * of text fragments, while the other is a set of string property names + * null entries in the first list indicate a property reference from the + * second list. + * + * This is slower than regex, but useful for this class, which has to handle + * multiple parsing passes for properties. + * + * @param string $value The string to be scanned for property references + * @param array &$fragments The found fragments + * @param array &$propertyRefs The found refs + */ + protected function parsePropertyString($value, &$fragments, &$propertyRefs) { + + $prev = 0; + $pos = 0; + + while (($pos = strpos($value, '$', $prev)) !== false) { + + if ($pos > $prev) { + array_push($fragments, StringHelper::substring($value, $prev, $pos-1)); + } + if ($pos === (strlen($value) - 1)) { + array_push($fragments, '$'); + $prev = $pos + 1; + } elseif ($value{$pos+1} !== '{' ) { + + // the string positions were changed to value-1 to correct + // a fatal error coming from function substring() + array_push($fragments, StringHelper::substring($value, $pos, $pos + 1)); + $prev = $pos + 2; + } else { + $endName = strpos($value, '}', $pos); + if ($endName === false) { + throw new BuildException("Syntax error in property: $value"); + } + $propertyName = StringHelper::substring($value, $pos + 2, $endName-1); + array_push($fragments, null); + array_push($propertyRefs, $propertyName); + $prev = $endName + 1; + } + } + + if ($prev < strlen($value)) { + array_push($fragments, StringHelper::substring($value, $prev)); + } + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/ReflexiveTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/ReflexiveTask.php new file mode 100644 index 0000000..df089f4 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/ReflexiveTask.php @@ -0,0 +1,155 @@ +. + */ + +require_once 'phing/Task.php'; + +/** + * This task is for using filter chains to make changes to files and overwrite the original files. + * + * This task was created to serve the need for "cleanup" tasks -- e.g. a ReplaceRegexp task or strip task + * being used to modify files and then overwrite the modified files. In many (most?) cases you probably + * should just use a copy task to preserve the original source files, but this task supports situations + * where there is no src vs. build directory, and modifying source files is actually desired. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * @author Hans Lellelid + * @version $Revision: 1.11 $ + * @package phing.tasks.system + */ +class ReflexiveTask extends Task { + + /** Single file to process. */ + private $file; + + /** Any filesets that should be processed. */ + private $filesets = array(); + + /** Any filters to be applied before append happens. */ + private $filterChains = array(); + + /** Alias for setFrom() */ + function setFile(PhingFile $f) { + $this->file = $f; + } + + /** Nested creator, adds a set of files (nested fileset attribute). */ + function createFileSet() { + $num = array_push($this->filesets, new FileSet()); + return $this->filesets[$num-1]; + } + + /** + * Creates a filterchain + * + * @return object The created filterchain object + */ + function createFilterChain() { + $num = array_push($this->filterChains, new FilterChain($this->project)); + return $this->filterChains[$num-1]; + } + + /** Append the file(s). */ + function main() { + + if ($this->file === null && empty($this->filesets)) { + throw new BuildException("You must specify a file or fileset(s) for the task."); + } + + // compile a list of all files to modify, both file attrib and fileset elements + // can be used. + + $files = array(); + + if ($this->file !== null) { + $files[] = $this->file; + } + + if (!empty($this->filesets)) { + $filenames = array(); + foreach($this->filesets as $fs) { + try { + $ds = $fs->getDirectoryScanner($this->project); + $filenames = $ds->getIncludedFiles(); // get included filenames + $dir = $fs->getDir($this->project); + foreach ($filenames as $fname) { + $files[] = new PhingFile($dir, $fname); + } + } catch (BuildException $be) { + $this->log($be->getMessage(), Project::MSG_WARN); + } + } + } + + $this->log("Applying reflexive processing to " . count($files) . " files."); + + // These "slots" allow filters to retrieve information about the currently-being-process files + $slot = $this->getRegisterSlot("currentFile"); + $basenameSlot = $this->getRegisterSlot("currentFile.basename"); + + + foreach($files as $file) { + // set the register slots + + $slot->setValue($file->getPath()); + $basenameSlot->setValue($file->getName()); + + // 1) read contents of file, pulling through any filters + $in = null; + try { + $contents = ""; + $in = FileUtils::getChainedReader(new FileReader($file), $this->filterChains, $this->project); + while(-1 !== ($buffer = $in->read())) { + $contents .= $buffer; + } + $in->close(); + } catch (Exception $e) { + if ($in) $in->close(); + $this->log("Erorr reading file: " . $e->getMessage(), Project::MSG_WARN); + } + + try { + // now create a FileWriter w/ the same file, and write to the file + $out = new FileWriter($file); + $out->write($contents); + $out->close(); + $this->log("Applying reflexive processing to " . $file->getPath(), Project::MSG_VERBOSE); + } catch (Exception $e) { + if ($out) $out->close(); + $this->log("Error writing file back: " . $e->getMessage(), Project::MSG_WARN); + } + + } + + } + +} \ No newline at end of file diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/ResolvePathTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/ResolvePathTask.php new file mode 100644 index 0000000..35187f8 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/ResolvePathTask.php @@ -0,0 +1,122 @@ +. + */ + +require_once 'phing/Task.php'; + +/** + * Task for resolving relative paths and setting absolute path in property value. + * + * This task was created to address a need for resolving absolute paths of files / directories. + * In many cases a relative directory (e.g. "./build") is specified, but it needs to be treated + * as an absolute path since other build files (e.g. in subdirs) should all be using the same + * path -- and not treating it as a relative path to their own directory. + * + * + * + * + * Resolved [absolute] path: ${absolute_path} + * + * + * TODO: + * - Possibly integrate this with PackageAsPath, for handling/resolving dot-path paths. + * + * @author Hans Lellelid + * @version $Revision: 1.6 $ + * @package phing.tasks.system + */ +class ResolvePathTask extends Task { + + /** Name of property to set. */ + private $propertyName; + + /** The [possibly] relative file/path that needs to be resolved. */ + private $file; + + /** Base directory used for resolution. */ + private $dir; + + /** + * Set the name of the property to set. + * @param string $v Property name + * @return void + */ + public function setPropertyName($v) { + $this->propertyName = $v; + } + + /** + * Sets a base dir to use for resolution. + * @param PhingFile $d + */ + function setDir(PhingFile $d) { + $this->dir = $d; + } + + /** + * Sets a path (file or directory) that we want to resolve. + * This is the same as setFile() -- just more generic name so that it's + * clear that you can also use it to set directory. + * @param string $f + * @see setFile() + */ + function setPath($f) { + $this->file = $f; + } + + /** + * Sets a file that we want to resolve. + * @param string $f + */ + function setFile($f) { + $this->file = $f; + } + + /** + * Perform the resolution & set property. + */ + public function main() { + + if (!$this->propertyName) { + throw new BuildException("You must specify the propertyName attribute", $this->getLocation()); + } + + // Currently only files are supported + if ($this->file === null) { + throw new BuildException("You must specify a path to resolve", $this->getLocation()); + } + + $fs = FileSystem::getFileSystem(); + + // if dir attribute was specified then we should + // use that as basedir to which file was relative. + // -- unless the file specified is an absolute path + if ($this->dir !== null && !$fs->isAbsolute(new PhingFile($this->file))) { + $resolved = new PhingFile($this->dir->getPath(), $this->file); + } else { + // otherwise just resolve it relative to project basedir + $resolved = $this->project->resolveFile($this->file); + } + + $this->log("Resolved " . $this->file . " to " . $resolved->getAbsolutePath(), Project::MSG_INFO); + $this->project->setProperty($this->propertyName, $resolved->getAbsolutePath()); + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/SequentialTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/SequentialTask.php new file mode 100644 index 0000000..8eafd05 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/SequentialTask.php @@ -0,0 +1,57 @@ +. + */ + +require_once 'phing/Task.php'; +require_once 'phing/TaskContainer.php'; + +/** + * Sequential is a container task that contains other Phing Task objects. + * + * The sequential task has no attributes and does not support any nested + * elements apart from Ant tasks. Any valid Ant task may be embedded within the + * sequential task. + * + * @since 2.1.2 + */ +class SequentialTask extends Task implements TaskContainer { + + /** Optional Vector holding the nested tasks */ + private $nestedTasks = array(); + + /** + * Add a nested task to Sequential. + * @param Task $nestedTask Nested task to execute Sequential + */ + public function addTask(Task $nestedTask) { + $this->nestedTasks[] = $nestedTask; + } + + /** + * Execute all nestedTasks. + * @throws BuildException if one of the nested tasks fails. + */ + public function main() { + foreach($this->nestedTasks as $task) { + $task->perform(); + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/TaskdefTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/TaskdefTask.php new file mode 100644 index 0000000..6338203 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/TaskdefTask.php @@ -0,0 +1,127 @@ +. + */ + +require_once 'phing/Task.php'; + +/** + * Register a task for use within a buildfile. + * + * This is for registering your own tasks -- or any non-core Task -- for use within a buildfile. + * If you find that you are using a particular class frequently, you may want to edit the + * phing/tasks/defaults.properties file so that it is included by default. You may also + * want to submit it (if LGPL or compatible license) to be included in Phing distribution. + * + *

    + *   
    + *   .
    + *   .
    + *   
    + * 
    + * + * TODO: + * -- possibly refactor since this is almost the same as TypeDefTask + * (right now these are just too simple to really justify creating an abstract class) + * + * @author Hans Lellelid + * @version $Revision: 1.11 $ + * @package phing.tasks.system + */ +class TaskdefTask extends Task { + + /** Tag name for task that will be used in XML */ + private $name; + + /** + * Classname of task to register. + * This can be a dot-path -- relative to a location on PHP include_path. + * E.g. path.to.MyClass -> path/to/MyClass.php + * @var string + */ + private $classname; + + /** + * Path to add to PHP include_path to aid in finding specified class. + * @var Path + */ + private $classpath; + + /** + * Refid to already defined classpath + */ + private $classpathId; + + /** + * Set the classpath to be used when searching for component being defined + * + * @param Path $classpath An Path object containing the classpath. + */ + public function setClasspath(Path $classpath) { + if ($this->classpath === null) { + $this->classpath = $classpath; + } else { + $this->classpath->append($classpath); + } + } + + /** + * Create the classpath to be used when searching for component being defined + */ + public function createClasspath() { + if ($this->classpath === null) { + $this->classpath = new Path($this->project); + } + return $this->classpath->createPath(); + } + + /** + * Reference to a classpath to use when loading the files. + */ + public function setClasspathRef(Reference $r) { + $this->classpathId = $r->getRefId(); + $this->createClasspath()->setRefid($r); + } + + /** + * Sets the name that will be used in XML buildfile. + * @param string $name + */ + public function setName($name) { + $this->name = $name; + } + + /** + * Sets the class name / dotpath to use. + * @param string $class + */ + public function setClassname($class) { + $this->classname = $class; + } + + /** Main entry point */ + public function main() { + if ($this->name === null || $this->classname === null) { + throw new BuildException("You must specify name and class attributes for ."); + } + $this->log("Task " . $this->name . " will be handled by class " . $this->classname, Project::MSG_VERBOSE); + $this->project->addTaskDefinition($this->name, $this->classname, $this->classpath); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/TouchTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/TouchTask.php new file mode 100644 index 0000000..bc57cbb --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/TouchTask.php @@ -0,0 +1,170 @@ +. + */ + +require_once 'phing/Task.php'; +include_once 'phing/util/DirectoryScanner.php'; +include_once 'phing/types/FileSet.php'; +include_once 'phing/util/FileUtils.php'; +include_once 'phing/system/io/PhingFile.php'; +include_once 'phing/system/io/IOException.php'; + +/** + * Touch a file and/or fileset(s); corresponds to the Unix touch command. + * + * If the file to touch doesn't exist, an empty one is created. + * + * @version $Revision: 1.12 $ + * @package phing.tasks.system + */ +class TouchTask extends Task { + + private $file; + private $millis = -1; + private $dateTime; + private $filesets = array(); + private $fileUtils; + + function __construct() { + $this->fileUtils = new FileUtils(); + } + + /** + * Sets a single source file to touch. If the file does not exist + * an empty file will be created. + */ + function setFile(PhingFile $file) { + $this->file = $file; + } + + /** + * the new modification time of the file + * in milliseconds since midnight Jan 1 1970. + * Optional, default=now + */ + function setMillis($millis) { + $this->millis = (int) $millis; + } + + /** + * the new modification time of the file + * in the format MM/DD/YYYY HH:MM AM or PM; + * Optional, default=now + */ + function setDatetime($dateTime) { + $this->dateTime = (string) $dateTime; + } + + /** + * Nested creator, adds a set of files (nested fileset attribute). + * @return FileSet + */ + function createFileSet() { + $num = array_push($this->filesets, new FileSet()); + return $this->filesets[$num-1]; + } + + /** + * Execute the touch operation. + */ + function main() { + $savedMillis = $this->millis; + + if ($this->file === null && count($this->filesets) === 0) { + throw new BuildException("Specify at least one source - a file or a fileset."); + } + + if ($this->file !== null && $this->file->exists() && $this->file->isDirectory()) { + throw new BuildException("Use a fileset to touch directories."); + } + + try { // try to touch file + if ($this->dateTime !== null) { + $this->setMillis(strtotime($this->dateTime)); + if ($this->millis < 0) { + throw new BuildException("Date of {$this->dateTime} results in negative milliseconds value relative to epoch (January 1, 1970, 00:00:00 GMT)."); + } + } + $this->_touch(); + } catch (Exception $ex) { + throw new BuildException("Error touch()ing file", $ex, $this->location); + } + + $this->millis = $savedMillis; + + } + + /** + * Does the actual work. + */ + function _touch() { + if ($this->file !== null) { + if (!$this->file->exists()) { + $this->log("Creating " . $this->file->__toString(), Project::MSG_INFO); + try { // try to create file + $this->file->createNewFile(); + } catch(IOException $ioe) { + throw new BuildException("Error creating new file " . $this->file->__toString(), $ioe, $this->location); + } + } + } + + $resetMillis = false; + if ($this->millis < 0) { + $resetMillis = true; + $this->millis = Phing::currentTimeMillis(); + } + + if ($this->file !== null) { + $this->touchFile($this->file); + } + + // deal with the filesets + foreach($this->filesets as $fs) { + + $ds = $fs->getDirectoryScanner($this->getProject()); + $fromDir = $fs->getDir($this->getProject()); + + $srcFiles = $ds->getIncludedFiles(); + $srcDirs = $ds->getIncludedDirectories(); + + for ($j=0,$_j=count($srcFiles); $j < $_j; $j++) { + $this->touchFile(new PhingFile($fromDir, (string) $srcFiles[$j])); + } + + for ($j=0,$_j=count($srcDirs); $j < $_j ; $j++) { + $this->touchFile(new PhingFile($fromDir, (string) $srcDirs[$j])); + } + } + + if ($resetMillis) { + $this->millis = -1; + } + } + + private function touchFile($file) { + if ( !$file->canWrite() ) { + throw new BuildException("Can not change modification date of read-only file " . $file->__toString()); + } + $file->setLastModified($this->millis); + } + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/TstampTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/TstampTask.php new file mode 100644 index 0000000..bff2dab --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/TstampTask.php @@ -0,0 +1,168 @@ +. + */ + +require_once 'phing/Task.php'; + +/** + * Sets properties to the current time, or offsets from the current time. + * The default properties are TSTAMP, DSTAMP and TODAY; + * + * Based on Ant's Tstamp task. + * + * @author Michiel Rook + * @version $Revision: 1.6 $ + * @package phing.tasks.system + * @since 2.2.0 + */ +class TstampTask extends Task +{ + private $customFormats = array(); + + private $prefix = ""; + + /** + * Set a prefix for the properties. If the prefix does not end with a "." + * one is automatically added. + * @param prefix the prefix to use. + */ + public function setPrefix($prefix) + { + $this->prefix = $prefix; + + if (!empty($this->prefix)) + { + $this->prefix.= "."; + } + } + + /** + * Adds a custom format + * + * @param TstampCustomFormat custom format + */ + public function addFormat(TstampCustomFormat $cf) + { + $this->customFormats[] = $cf; + } + + /** + * Create the timestamps. Custom ones are done before + * the standard ones. + * + * @throws BuildException + */ + public function main() + { + foreach ($this->customFormats as $cf) + { + $cf->execute($this); + } + + $dstamp = strftime('%Y%m%d'); + $this->prefixProperty('DSTAMP', $dstamp); + + $tstamp = strftime('%H%M'); + $this->prefixProperty('TSTAMP', $tstamp); + + $today = strftime('%B %d %Y'); + $this->prefixProperty('TODAY', $today); + } + + /** + * helper that encapsulates prefix logic and property setting + * policy (i.e. we use setNewProperty instead of setProperty). + */ + public function prefixProperty($name, $value) + { + $this->getProject()->setNewProperty($this->prefix . $name, $value); + } +} + +class TstampCustomFormat +{ + private $propertyName = ""; + private $pattern = ""; + private $locale = ""; + + /** + * The property to receive the date/time string in the given pattern + * + * @param propertyName the name of the property. + */ + public function setProperty($propertyName) + { + $this->propertyName = $propertyName; + } + + /** + * The date/time pattern to be used. The values are as + * defined by the PHP strftime() function. + * + * @param pattern + */ + public function setPattern($pattern) + { + $this->pattern = $pattern; + } + + /** + * The locale used to create date/time string. + * + * @param locale + */ + public function setLocale($locale) + { + $this->locale = $locale; + } + + /** + * validate parameter and execute the format. + * + * @param TstampTask reference to task + */ + public function execute(TstampTask $tstamp) + { + if (empty($this->propertyName)) + { + throw new BuildException("property attribute must be provided"); + } + + if (empty($this->pattern)) + { + throw new BuildException("pattern attribute must be provided"); + } + + if (!empty($this->locale)) + { + setlocale(LC_ALL, $this->locale); + } + + $value = strftime($this->pattern); + $tstamp->prefixProperty($this->propertyName, $value); + + if (!empty($this->locale)) + { + // reset locale + setlocale(LC_ALL, NULL); + } + } +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/TypedefTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/TypedefTask.php new file mode 100644 index 0000000..05e4412 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/TypedefTask.php @@ -0,0 +1,125 @@ +. + */ + +require_once 'phing/Task.php'; + +/** + * Register a datatype for use within a buildfile. + * + * This is for registering your own datatypes for use within a buildfile. + * + * If you find that you are using a particular class frequently, you may want to edit the + * phing/types/defaults.properties file so that it is included by default. You may also + * want to submit it (if LGPL or compatible license) to be included in Phing distribution. + * + *
    + *   
    + *   .
    + *   
    + *     
    + *   
    + * 
    + * + * TODO: + * -- possibly refactor since this is almost the same as TaskDefTask + * (right now these are just too simple to really justify creating an abstract class) + * + * @author Hans Lellelid + * @version $Revision: 1.7 $ + * @package phing.tasks.system + */ +class TypedefTask extends Task { + + /** Tag name for datatype that will be used in XML */ + private $name; + + /** + * Classname of task to register. + * This can be a dot-path -- relative to a location on PHP include_path. + * E.g. path.to.MyClass -> path/to/MyClass.php + * @var string + */ + private $classname; + + /** + * Path to add to PHP include_path to aid in finding specified class. + * @var Path + */ + private $classpath; + + /** Refid to already defined classpath */ + private $classpathId; + + /** + * Set the classpath to be used when searching for component being defined + * + * @param Path $classpath An Path object containing the classpath. + */ + public function setClasspath(Path $classpath) { + if ($this->classpath === null) { + $this->classpath = $classpath; + } else { + $this->classpath->append($classpath); + } + } + + /** + * Create the classpath to be used when searching for component being defined + */ + public function createClasspath() { + if ($this->classpath === null) { + $this->classpath = new Path($this->project); + } + return $this->classpath->createPath(); + } + + /** + * Reference to a classpath to use when loading the files. + */ + public function setClasspathRef(Reference $r) { + $this->classpathId = $r->getRefId(); + $this->createClasspath()->setRefid($r); + } + + /** Main entry point */ + public function main() { + if ($this->name === null || $this->classname === null) { + throw new BuildException("You must specify name and class attributes for ."); + } + $this->project->addDataTypeDefinition($this->name, $this->classname, $this->classpath); + } + + /** + * Sets the name that will be used in XML buildfile. + * @param string $name + */ + public function setName($name) { + $this->name = $name; + } + + /** + * Sets the class name / dotpath to use. + * @param string $class + */ + public function setClassname($class) { + $this->classname = $class; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/UpToDateTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/UpToDateTask.php new file mode 100644 index 0000000..b6229f5 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/UpToDateTask.php @@ -0,0 +1,217 @@ +. + */ + +require_once 'phing/Task.php'; +include_once 'phing/tasks/system/condition/Condition.php'; +include_once 'phing/util/DirectoryScanner.php'; +include_once 'phing/util/SourceFileScanner.php'; +include_once 'phing/mappers/MergeMapper.php'; + +/** + * Sets the given property if the specified target has a timestamp + * greater than all of the source files. + * + * @author Hans Lellelid (Phing) + * @author William Ferguson (Ant) + * @author Hiroaki Nakamura (Ant) + * @author Stefan Bodewig (Ant) + * @version $Revision: 1.6 $ + * @package phing.tasks.system + */ +class UpToDateTask extends Task implements Condition { + + private $_property; + private $_value; + private $_sourceFile; + private $_targetFile; + private $sourceFileSets = array(); + + protected $mapperElement = null; + + /** + * The property to set if the target file is more up-to-date than + * (each of) the source file(s). + * + * @param property the name of the property to set if Target is up-to-date. + */ + public function setProperty($property) { + $this->_property = $property; + } + + /** + * The value to set the named property to if the target file is more + * up-to-date than (each of) the source file(s). Defaults to 'true'. + * + * @param value the value to set the property to if Target is up-to-date + */ + public function setValue($value) { + $this->_value = $value; + } + + /** + * Returns the value, or "true" if a specific value wasn't provided. + */ + private function getValue() { + return ($this->_value !== null) ? $this->_value : "true"; + } + + /** + * The file which must be more up-to-date than (each of) the source file(s) + * if the property is to be set. + * + * @param file the file we are checking against. + */ + public function setTargetFile($file) { + if (is_string($file)) { + $file = new PhingFile($file); + } + $this->_targetFile = $file; + } + + /** + * The file that must be older than the target file + * if the property is to be set. + * + * @param file the file we are checking against the target file. + */ + public function setSrcfile($file) { + if (is_string($file)) { + $file = new PhingFile($file); + } + $this->_sourceFile = $file; + } + + /** + * Nested element. + */ + public function createSrcfiles() { + $fs = new FileSet(); + $this->sourceFileSets[] = $fs; + return $fs; + } + + /** + * Defines the FileNameMapper to use (nested mapper element). + */ + public function createMapper() { + if ($this->mapperElement !== null) { + throw new BuildException("Cannot define more than one mapper", + $this->location); + } + $this->mapperElement = new Mapper($this->getProject()); + return $this->mapperElement; + } + + /** + * Evaluate (all) target and source file(s) to + * see if the target(s) is/are up-to-date. + * @return boolean + */ + public function evaluate() { + if (count($this->sourceFileSets) === 0 && $this->_sourceFile === null) { + throw new BuildException("At least one srcfile or a nested " + . " element must be set."); + } + + if (count($this->sourceFileSets) > 0 && $this->_sourceFile !== null) { + throw new BuildException("Cannot specify both the srcfile " + . "attribute and a nested " + . "element."); + } + + if ($this->_targetFile === null && $this->mapperElement === null) { + throw new BuildException("The targetfile attribute or a nested " + . "mapper element must be set."); + } + + // if the target file is not there, then it can't be up-to-date + if ($this->_targetFile !== null && !$this->_targetFile->exists()) { + return false; + } + + // if the source file isn't there, throw an exception + if ($this->_sourceFile !== null && !$this->_sourceFile->exists()) { + throw new BuildException($this->_sourceFile->getAbsolutePath() + . " not found."); + } + + $upToDate = true; + for($i=0,$size=count($this->sourceFileSets); $i < $size && $upToDate; $i++) { + $fs = $this->sourceFileSets[$i]; + $ds = $fs->getDirectoryScanner($this->project); + $upToDate = $upToDate && $this->scanDir($fs->getDir($this->project), + $ds->getIncludedFiles()); + } + + if ($this->_sourceFile !== null) { + if ($this->mapperElement === null) { + $upToDate = $upToDate && + ($this->_targetFile->lastModified() >= $this->_sourceFile->lastModified()); + } else { + $sfs = new SourceFileScanner($this); + $upToDate = $upToDate && + count($sfs->restrict($this->_sourceFile->getAbsolutePath(), + null, null, + $this->mapperElement->getImplementation())) === 0; + } + } + return $upToDate; + } + + + /** + * Sets property to true if target file(s) have a more recent timestamp + * than (each of) the corresponding source file(s). + * @throws BuildException + */ + public function main() { + if ($this->_property === null) { + throw new BuildException("property attribute is required.", + $this->location); + } + $upToDate = $this->evaluate(); + if ($upToDate) { + $this->project->setNewProperty($this->_property, $this->getValue()); + if ($this->mapperElement === null) { + $this->log("File \"" . $this->_targetFile->getAbsolutePath() + . "\" is up-to-date.", Project::MSG_VERBOSE); + } else { + $this->log("All target files are up-to-date.", + Project::MSG_VERBOSE); + } + } + } + + protected function scanDir(PhingFile $srcDir, $files) { + $sfs = new SourceFileScanner($this); + $mapper = null; + $dir = $srcDir; + if ($this->mapperElement === null) { + $mm = new MergeMapper(); + $mm->setTo($this->_targetFile->getAbsolutePath()); + $mapper = $mm; + $dir = null; + } else { + $mapper = $this->mapperElement->getImplementation(); + } + return (count($sfs->restrict($files, $srcDir, $dir, $mapper)) === 0); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/WarnTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/WarnTask.php new file mode 100644 index 0000000..8d984ae --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/WarnTask.php @@ -0,0 +1,35 @@ +. + */ + +require_once 'phing/tasks/system/EchoTask.php'; + +/** + * Simple task to echo a warning message (Project::MSG_WARN) to all output devices. + * + * @author Hans Lellelid + * @version $Revision: 1.1 $ $Date: 2007-02-05 16:19:00 +0100 (lun 05 de feb de 2007) $ + * @package phing.tasks.system + */ +class WarnTask extends EchoTask { + function main() { + $this->log($this->msg, Project::MSG_WARN); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/XsltTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/XsltTask.php new file mode 100644 index 0000000..5bae8ce --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/XsltTask.php @@ -0,0 +1,81 @@ +. + */ + +require_once 'phing/tasks/system/CopyTask.php'; +include_once 'phing/system/io/FileReader.php'; +include_once 'phing/system/io/FileWriter.php'; +include_once 'phing/filters/XsltFilter.php'; + +/** + * Implements an XSLT processing filter while copying files. + * + * This is a shortcut for calling the task with the XSLTFilter used + * in the section. + * + * @author Andreas Aderhold, andi@binarycloud.com + * @version $Revision: 1.8 $ + * @package phing.tasks.system + */ +class XsltTask extends CopyTask { + + /** XSLTFilter object that we use to handle transformation. */ + private $xsltFilter; + + /** Parameters to pass to XSLT procesor. */ + private $parameters = array(); + + /** + * Setup the filterchains w/ XSLTFilter that we will use while copying the files. + */ + function init() { + $xf = new XsltFilter(); + $chain = $this->createFilterChain($this->getProject()); + $chain->addXsltFilter($xf); + $this->xsltFilter = $xf; + } + + /** + * Set any XSLT Param and invoke CopyTask::main() + * @see CopyTask::main() + */ + function main() { + $this->log("Doing XSLT transformation using stylesheet " . $this->xsltFilter->getStyle(), Project::MSG_VERBOSE); + $this->xsltFilter->setParams($this->parameters); + parent::main(); + } + + /** + * Set the stylesheet to use. + * @param PhingFile $style + */ + function setStyle(PhingFile $style) { + $this->xsltFilter->setStyle($style); + } + + /** + * Support nested tags useing XSLTParam class. + * @return XSLTParam + */ + function createParam() { + $num = array_push($this->parameters, new XSLTParam()); + return $this->parameters[$num-1]; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/all-wcprops new file mode 100644 index 0000000..292c679 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/all-wcprops @@ -0,0 +1,77 @@ +K 25 +svn:wc:ra_dav:version-url +V 61 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/condition +END +AndCondition.php +K 25 +svn:wc:ra_dav:version-url +V 78 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/condition/AndCondition.php +END +IsFalseCondition.php +K 25 +svn:wc:ra_dav:version-url +V 82 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/condition/IsFalseCondition.php +END +IsSetCondition.php +K 25 +svn:wc:ra_dav:version-url +V 80 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/condition/IsSetCondition.php +END +ConditionBase.php +K 25 +svn:wc:ra_dav:version-url +V 79 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/condition/ConditionBase.php +END +EqualsCondition.php +K 25 +svn:wc:ra_dav:version-url +V 81 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/condition/EqualsCondition.php +END +IsTrueCondition.php +K 25 +svn:wc:ra_dav:version-url +V 81 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/condition/IsTrueCondition.php +END +ContainsCondition.php +K 25 +svn:wc:ra_dav:version-url +V 83 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/condition/ContainsCondition.php +END +ReferenceExistsCondition.php +K 25 +svn:wc:ra_dav:version-url +V 90 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/condition/ReferenceExistsCondition.php +END +Condition.php +K 25 +svn:wc:ra_dav:version-url +V 75 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/condition/Condition.php +END +NotCondition.php +K 25 +svn:wc:ra_dav:version-url +V 78 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/condition/NotCondition.php +END +OrCondition.php +K 25 +svn:wc:ra_dav:version-url +V 77 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/condition/OrCondition.php +END +OsCondition.php +K 25 +svn:wc:ra_dav:version-url +V 77 +/!svn/ver/432/tags/2.3.3/classes/phing/tasks/system/condition/OsCondition.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/entries new file mode 100644 index 0000000..3672a9a --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/entries @@ -0,0 +1,436 @@ +10 + +dir +1404 +http://phing.mirror.svn.symfony-project.com/tags/2.3.3/classes/phing/tasks/system/condition +http://phing.mirror.svn.symfony-project.com + + + +2008-10-21T13:10:52.115018Z +410 +hans + + + + + + + + + + + + + + +c8b19502-6211-4773-8637-5aef67d587fc + +AndCondition.php +file + + + + +2012-05-10T18:42:02.989550Z +f0a4f225644543a9a6ee9e53aea941ed +2006-03-10T14:31:51.593319Z +43 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +1769 + +IsFalseCondition.php +file + + + + +2012-05-10T18:42:02.989550Z +ca46bbe11e4497ec1fbe6f5faff2eed0 +2006-03-10T14:31:51.593319Z +43 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +1952 + +IsSetCondition.php +file + + + + +2012-05-10T18:42:03.001550Z +678f9e351baec0a6f42b15669846d819 +2006-03-10T14:31:51.593319Z +43 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +1944 + +ConditionBase.php +file + + + + +2012-05-10T18:42:03.001550Z +6dd4579bea2e7adc40b43a2d74f2b9ce +2006-03-10T14:31:51.593319Z +43 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +5806 + +EqualsCondition.php +file + + + + +2012-05-10T18:42:03.005561Z +5e275fa064e776480f1a798725b2297d +2006-03-10T14:31:51.593319Z +43 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +2732 + +IsTrueCondition.php +file + + + + +2012-05-10T18:42:03.087355Z +2caf86681bb8e53d859eb9fd4e750aec +2006-03-10T14:31:51.593319Z +43 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +1930 + +ContainsCondition.php +file + + + + +2012-05-10T18:42:03.087355Z +90ac8dc95fe2281cf06fc07528473040 +2008-10-21T13:10:52.115018Z +410 +hans +has-props + + + + + + + + + + + + + + + + + + + + +2456 + +ReferenceExistsCondition.php +file + + + + +2012-05-10T18:42:03.087355Z +53b9e638aa49e32965b00d14c11d248f +2007-08-28T02:17:00.079088Z +227 +hans +has-props + + + + + + + + + + + + + + + + + + + + +1946 + +Condition.php +file + + + + +2012-05-10T18:42:03.089549Z +13a70e67de5829a55783466402c16b88 +2007-12-20T15:44:58.929962Z +325 +hans +has-props + + + + + + + + + + + + + + + + + + + + +1390 + +NotCondition.php +file + + + + +2012-05-10T18:42:03.089549Z +e601f4c45cc0e9df9d3a9e7e1be54e38 +2006-03-10T14:31:51.593319Z +43 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +1957 + +OrCondition.php +file + + + + +2012-05-10T18:42:03.089549Z +fccb3019fa6acc0aa46d72fac33b0d35 +2006-03-10T14:31:51.593319Z +43 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +1784 + +OsCondition.php +file + + + + +2012-05-10T18:42:03.089549Z +022df80a3a490515d902b76360492e8c +2006-03-10T14:31:51.593319Z +43 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +2408 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/prop-base/AndCondition.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/prop-base/AndCondition.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/prop-base/AndCondition.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/prop-base/Condition.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/prop-base/Condition.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/prop-base/Condition.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/prop-base/ConditionBase.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/prop-base/ConditionBase.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/prop-base/ConditionBase.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/prop-base/ContainsCondition.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/prop-base/ContainsCondition.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/prop-base/ContainsCondition.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/prop-base/EqualsCondition.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/prop-base/EqualsCondition.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/prop-base/EqualsCondition.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/prop-base/IsFalseCondition.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/prop-base/IsFalseCondition.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/prop-base/IsFalseCondition.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/prop-base/IsSetCondition.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/prop-base/IsSetCondition.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/prop-base/IsSetCondition.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/prop-base/IsTrueCondition.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/prop-base/IsTrueCondition.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/prop-base/IsTrueCondition.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/prop-base/NotCondition.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/prop-base/NotCondition.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/prop-base/NotCondition.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/prop-base/OrCondition.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/prop-base/OrCondition.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/prop-base/OrCondition.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/prop-base/OsCondition.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/prop-base/OsCondition.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/prop-base/OsCondition.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/prop-base/ReferenceExistsCondition.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/prop-base/ReferenceExistsCondition.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/prop-base/ReferenceExistsCondition.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/text-base/AndCondition.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/text-base/AndCondition.php.svn-base new file mode 100644 index 0000000..4c60a67 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/text-base/AndCondition.php.svn-base @@ -0,0 +1,46 @@ +. + */ + +require_once 'phing/tasks/system/condition/ConditionBase.php'; + +/** + * condition container. + * + * Iterates over all conditions and returns false as soon as one + * evaluates to false. + * + * @author Hans Lellelid + * @author Andreas Aderhold + * @copyright © 2001,2002 THYRELL. All rights reserved + * @version $Revision: 1.7 $ + * @package phing.tasks.system.condition + */ +class AndCondition extends ConditionBase implements Condition { + + public function evaluate() { + foreach($this as $c) { // ConditionBase implements IteratorAggregator + if (!$c->evaluate()) { + return false; + } + } + return true; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/text-base/Condition.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/text-base/Condition.php.svn-base new file mode 100644 index 0000000..db18b11 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/text-base/Condition.php.svn-base @@ -0,0 +1,38 @@ +. + */ + +/** + * Condition interface specification: + * + * Each condition must implement a method applying to this prototye: + * + * @author Hans Lellelid + * @version $Revision: 1.4 $ + * @package phing.tasks.system.condition + */ +interface Condition { + /** + * @return boolean + * @throws BuildException + */ + public function evaluate(); +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/text-base/ConditionBase.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/text-base/ConditionBase.php.svn-base new file mode 100644 index 0000000..6f514e3 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/text-base/ConditionBase.php.svn-base @@ -0,0 +1,195 @@ +. + */ + +require_once 'phing/ProjectComponent.php'; +include_once 'phing/Project.php'; +include_once 'phing/tasks/system/AvailableTask.php'; +include_once 'phing/tasks/system/condition/Condition.php'; + +/** + * Abstract baseclass for the task as well as several + * conditions - ensures that the types of conditions inside the task + * and the "container" conditions are in sync. + * + * @author Hans Lellelid + * @author Andreas Aderhold + * @copyright © 2001,2002 THYRELL. All rights reserved + * @version $Revision: 1.16 $ + * @package phing.tasks.system.condition + */ +abstract class ConditionBase extends ProjectComponent implements IteratorAggregate { + + public $conditions = array(); // needs to be public for "inner" class access + + function countConditions() { + return count($this->conditions); + } + + /** + * Required for IteratorAggregate + */ + function getIterator() { + return new ConditionEnumeration($this); + } + + function getConditions() { + return $this->conditions; + } + + /** + * @return void + */ + function addAvailable(AvailableTask $a) { + $this->conditions[] = $a; + } + + /** + * @return NotCondition + */ + function createNot() { + include_once 'phing/tasks/system/condition/NotCondition.php'; + $num = array_push($this->conditions, new NotCondition()); + return $this->conditions[$num-1]; + } + + /** + * @return AndCondition + */ + function createAnd() { + include_once 'phing/tasks/system/condition/AndCondition.php'; + $num = array_push($this->conditions, new AndCondition()); + return $this->conditions[$num-1]; + } + + /** + * @return OrCondition + */ + function createOr() { + include_once 'phing/tasks/system/condition/OrCondition.php'; + $num = array_push($this->conditions, new OrCondition()); + return $this->conditions[$num-1]; + } + + /** + * @return EqualsCondition + */ + function createEquals() { + include_once 'phing/tasks/system/condition/EqualsCondition.php'; + $num = array_push($this->conditions, new EqualsCondition()); + return $this->conditions[$num-1]; + } + + /** + * @return OsCondition + */ + function createOs() { + include_once 'phing/tasks/system/condition/OsCondition.php'; + $num = array_push($this->conditions, new OsCondition()); + return $this->conditions[$num-1]; + } + + /** + * @return IsFalseCondition + */ + function createIsFalse() { + include_once 'phing/tasks/system/condition/IsFalseCondition.php'; + $num = array_push($this->conditions, new IsFalseCondition()); + return $this->conditions[$num-1]; + } + + /** + * @return IsTrueCondition + */ + function createIsTrue() { + include_once 'phing/tasks/system/condition/IsTrueCondition.php'; + $num = array_push($this->conditions, new IsTrueCondition()); + return $this->conditions[$num-1]; + } + + /** + * @return ContainsCondition + */ + function createContains() { + include_once 'phing/tasks/system/condition/ContainsCondition.php'; + $num = array_push($this->conditions, new ContainsCondition()); + return $this->conditions[$num-1]; + } + + /** + * @return IsSetCondition + */ + function createIsSet() { + include_once 'phing/tasks/system/condition/IsSetCondition.php'; + $num = array_push($this->conditions, new IsSetCondition()); + return $this->conditions[$num-1]; + } + + /** + * @return ReferenceExistsCondition + */ + function createReferenceExists() { + include_once 'phing/tasks/system/condition/ReferenceExistsCondition.php'; + $num = array_push($this->conditions, new ReferenceExistsCondition()); + return $this->conditions[$num-1]; + } + +} + +/** + * "Inner" class for handling enumerations. + * Uses build-in PHP5 iterator support. + */ +class ConditionEnumeration implements Iterator { + + /** Current element number */ + private $num = 0; + + /** "Outer" ConditionBase class. */ + private $outer; + + function __construct(ConditionBase $outer) { + $this->outer = $outer; + } + + public function valid() { + return $this->outer->countConditions() > $this->num; + } + + function current() { + $o = $this->outer->conditions[$this->num]; + if ($o instanceof ProjectComponent) { + $o->setProject($this->outer->getProject()); + } + return $o; + } + + function next() { + $this->num++; + } + + function key() { + return $this->num; + } + + function rewind() { + $this->num = 0; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/text-base/ContainsCondition.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/text-base/ContainsCondition.php.svn-base new file mode 100644 index 0000000..6187a2c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/text-base/ContainsCondition.php.svn-base @@ -0,0 +1,76 @@ +. + */ + +require_once 'phing/tasks/system/condition/Condition.php'; + +/** + * Is one string part of another string? + * + * @author Hans Lellelid (Phing) + * @author Stefan Bodewig (Ant) + * @version $Revision: 1.3 $ + * @package phing.tasks.system.condition + */ +class ContainsCondition implements Condition { + + private $string; + private $subString; + private $caseSensitive = true; + + /** + * The string to search in. + * @param string $a1 + */ + public function setString($a1) { + $this->string = $a1; + } + + /** + * The string to search for. + * @param string $a2 + */ + public function setSubstring($a2) { + $this->subString = $a2; + } + + /** + * Whether to search ignoring case or not. + */ + public function setCaseSensitive($b) { + $this->caseSensitive = (boolean) $b; + } + + /** + * Check whether string contains substring. + * @throws BuildException + */ + public function evaluate() { + if ($this->string === null || $this->subString === null) { + throw new BuildException("both string and substring are required " + . "in contains"); + } + + return $this->caseSensitive + ? strpos($this->string, $this->subString) !== false + : strpos(strtolower($this->string), strtolower($this->subString)) !== false; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/text-base/EqualsCondition.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/text-base/EqualsCondition.php.svn-base new file mode 100644 index 0000000..42bbde7 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/text-base/EqualsCondition.php.svn-base @@ -0,0 +1,78 @@ +. + */ + +require_once 'phing/tasks/system/condition/Condition.php'; + +/** + * A simple string comparator. Compares two strings for eqiality in a + * binary safe manner. Implements the condition interface specification. + * + * @author Andreas Aderhold + * @copyright © 2001,2002 THYRELL. All rights reserved + * @version $Revision: 1.7 $ $Date$ + * @access public + * @package phing.tasks.system.condition + */ +class EqualsCondition implements Condition { + + private $arg1; + private $arg2; + private $trim = false; + private $caseSensitive = true; + + public function setArg1($a1) { + $this->arg1 = $a1; + } + + public function setArg2($a2) { + $this->arg2 = $a2; + } + + /** + * Should we want to trim the arguments before comparing them? + * @param boolean $b + */ + public function setTrim($b) { + $this->trim = (boolean) $b; + } + + /** + * Should the comparison be case sensitive? + * @param boolean $b + */ + public function setCaseSensitive($b) { + $this->caseSensitive = (boolean) $b; + } + + public function evaluate() { + if ($this->arg1 === null || $this->arg2 === null) { + throw new BuildException("Both arg1 and arg2 are required in equals."); + } + + if ($this->trim) { + $this->arg1 = trim($this->arg1); + $this->arg2 = trim($this->arg2); + } + + //print("[comparison] Comparing '".$this->arg1."' and '".$this->arg2."'\n"); + return $this->caseSensitive ? $this->arg1 === $this->arg2 : strtolower($this->arg1) === strtolower($this->arg2); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/text-base/IsFalseCondition.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/text-base/IsFalseCondition.php.svn-base new file mode 100644 index 0000000..8b0dd22 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/text-base/IsFalseCondition.php.svn-base @@ -0,0 +1,60 @@ +. + */ + +require_once 'phing/ProjectComponent.php'; +require_once 'phing/tasks/system/condition/Condition.php'; + +/** + * Condition that tests whether a given string evals to false. + * + * @author Hans Lellelid (Phing) + * @author Steve Loughran (Ant) + * @version $Revision: 1.4 $ + * @package phing.tasks.system.condition + */ +class IsFalseCondition extends ProjectComponent implements Condition { + + /** + * what we eval + */ + private $value; + + /** + * Set the value to be tested. + * @param boolean $value + */ + public function setValue($value) { + $this->value = $value; + } + + /** + * return the inverted value; + * @throws BuildException if someone forgot to spec a value + */ + public function evaluate() { + if ($this->value === null) { + throw new BuildException("Nothing to test for falsehood"); + } + return !$this->value; + } + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/text-base/IsSetCondition.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/text-base/IsSetCondition.php.svn-base new file mode 100644 index 0000000..c36c1e9 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/text-base/IsSetCondition.php.svn-base @@ -0,0 +1,53 @@ +. + */ + +require_once 'phing/ProjectComponent.php'; +require_once 'phing/tasks/system/condition/Condition.php'; + +/** + * Condition that tests whether a given property has been set. + * + * @author Hans Lellelid (Phing) + * @author Stefan Bodewig (Ant) + * @version $Revision: 1.4 $ + * @package phing.tasks.system.condition + */ +class IsSetCondition extends ProjectComponent implements Condition { + + private $property; + + public function setProperty($p) { + $this->property = $p; + } + + /** + * Check whether property is set. + * @throws BuildException + */ + public function evaluate() { + if ($this->property === null) { + throw new BuildException("No property specified for isset " + . "condition"); + } + return $this->project->getProperty($this->property) !== null; + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/text-base/IsTrueCondition.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/text-base/IsTrueCondition.php.svn-base new file mode 100644 index 0000000..d567f7c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/text-base/IsTrueCondition.php.svn-base @@ -0,0 +1,59 @@ +. + */ + +require_once 'phing/ProjectComponent.php'; +require_once 'phing/tasks/system/condition/Condition.php'; + +/** + * Condition that tests whether a given string evals to true. + * + * @author Hans Lellelid (Phing) + * @author Steve Loughran (Ant) + * @package phing.tasks.system.condition + */ +class IsTrueCondition extends ProjectComponent implements Condition { + + /** + * what we eval + */ + private $value; + + /** + * Set the value to be tested. + * @param boolean $value + */ + public function setValue($value) { + $this->value = $value; + } + + /** + * return the inverted value; + * @throws BuildException if someone forgot to spec a value + */ + public function evaluate() { + if ($this->value === null) { + throw new BuildException("Nothing to test for falsehood"); + } + return $this->value; + } + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/text-base/NotCondition.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/text-base/NotCondition.php.svn-base new file mode 100644 index 0000000..06a47ea --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/text-base/NotCondition.php.svn-base @@ -0,0 +1,48 @@ +. + */ + +require_once 'phing/tasks/system/condition/ConditionBase.php'; + +/** + * condition. + * + * Evaluates to true if the single condition nested into it is false + * and vice versa. + * + * @author Andreas Aderhold + * @copyright © 2001,2002 THYRELL. All rights reserved + * @version $Revision: 1.6 $ $Date$ + * @access public + * @package phing.tasks.system.condition + */ +class NotCondition extends ConditionBase implements Condition { + + function evaluate() { + if ($this->countConditions() > 1) { + throw new BuildException("You must not nest more than one condition into "); + } + if ($this->countConditions() < 1) { + throw new BuildException("You must nest a condition into "); + } + $conds = $this->getIterator(); + return !$conds->current()->evaluate(); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/text-base/OrCondition.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/text-base/OrCondition.php.svn-base new file mode 100644 index 0000000..45e6b63 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/text-base/OrCondition.php.svn-base @@ -0,0 +1,46 @@ +. + */ + +require_once 'phing/tasks/system/condition/ConditionBase.php'; + +/** + * condition container. + * + * Iterates over all conditions and returns true as soon as one + * evaluates to true. + * + * @author Andreas Aderhold + * @copyright 2001,2002 THYRELL. All rights reserved + * @version $Revision: 1.8 $ $Date$ + * @access public + * @package phing.tasks.system.condition + */ +class OrCondition extends ConditionBase implements Condition { + + function evaluate() { + foreach($this as $c) { // ConditionBase implements IteratorAggregator + if ($c->evaluate()) { + return true; + } + } + return false; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/text-base/OsCondition.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/text-base/OsCondition.php.svn-base new file mode 100644 index 0000000..3a69c99 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/text-base/OsCondition.php.svn-base @@ -0,0 +1,63 @@ +. + */ + +require_once 'phing/tasks/system/condition/ConditionBase.php'; + +/** + * Condition that tests the OS type. + * + * @author Andreas Aderhold + * @copyright © 2001,2002 THYRELL. All rights reserved + * @version $Revision: 1.8 $ $Date$ + * @access public + * @package phing.tasks.system.condition + */ +class OsCondition implements Condition { + + private $family; + + function setFamily($f) { + $this->family = strtolower($f); + } + + function evaluate() { + $osName = strtolower(Phing::getProperty("os.name")); + + if ($this->family !== null) { + if ($this->family === "windows") { + return StringHelper::startsWith("win", $osName); + } elseif ($this->family === "mac") { + return (strpos($osName, "mac") !== false || strpos($osName, "darwin") !== false); + } elseif ($this->family === ("unix")) { + return ( + StringHelper::endsWith("ix", $osName) || + StringHelper::endsWith("ux", $osName) || + StringHelper::endsWith("bsd", $osName) || + StringHelper::startsWith("sunos", $osName) || + StringHelper::startsWith("darwin", $osName) + ); + } + throw new BuildException("Don't know how to detect os family '" . $this->family . "'"); + } + return false; + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/text-base/ReferenceExistsCondition.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/text-base/ReferenceExistsCondition.php.svn-base new file mode 100644 index 0000000..0249c0d --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/.svn/text-base/ReferenceExistsCondition.php.svn-base @@ -0,0 +1,52 @@ +. + */ + +require_once 'phing/ProjectComponent.php'; require_once 'phing/tasks/system/condition/Condition.php'; + +/** + * Condition that tests whether a given reference exists. + * + * @author Matthias Pigulla (Phing) + * @version $Revision: 1.1 $ + * @package phing.tasks.system.condition */ +class ReferenceExistsCondition extends ProjectComponent implements Condition { + + private $refid; + + public function setRef($id) { + $this->refid = (string) $id; + } + + /** + * Check whether the reference exists. + * @throws BuildException + */ + public function evaluate() { + if ($this->refid === null) { + throw new BuildException("No ref attribute specified for reference-exists " + . "condition"); + } + $refs = $this->project->getReferences(); + return isset($refs[$this->refid]); + } + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/AndCondition.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/AndCondition.php new file mode 100644 index 0000000..9d9e61b --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/AndCondition.php @@ -0,0 +1,46 @@ +. + */ + +require_once 'phing/tasks/system/condition/ConditionBase.php'; + +/** + * condition container. + * + * Iterates over all conditions and returns false as soon as one + * evaluates to false. + * + * @author Hans Lellelid + * @author Andreas Aderhold + * @copyright © 2001,2002 THYRELL. All rights reserved + * @version $Revision: 1.7 $ + * @package phing.tasks.system.condition + */ +class AndCondition extends ConditionBase implements Condition { + + public function evaluate() { + foreach($this as $c) { // ConditionBase implements IteratorAggregator + if (!$c->evaluate()) { + return false; + } + } + return true; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/Condition.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/Condition.php new file mode 100644 index 0000000..7b18c51 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/Condition.php @@ -0,0 +1,38 @@ +. + */ + +/** + * Condition interface specification: + * + * Each condition must implement a method applying to this prototye: + * + * @author Hans Lellelid + * @version $Revision: 1.4 $ + * @package phing.tasks.system.condition + */ +interface Condition { + /** + * @return boolean + * @throws BuildException + */ + public function evaluate(); +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/ConditionBase.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/ConditionBase.php new file mode 100644 index 0000000..3f74980 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/ConditionBase.php @@ -0,0 +1,195 @@ +. + */ + +require_once 'phing/ProjectComponent.php'; +include_once 'phing/Project.php'; +include_once 'phing/tasks/system/AvailableTask.php'; +include_once 'phing/tasks/system/condition/Condition.php'; + +/** + * Abstract baseclass for the task as well as several + * conditions - ensures that the types of conditions inside the task + * and the "container" conditions are in sync. + * + * @author Hans Lellelid + * @author Andreas Aderhold + * @copyright © 2001,2002 THYRELL. All rights reserved + * @version $Revision: 1.16 $ + * @package phing.tasks.system.condition + */ +abstract class ConditionBase extends ProjectComponent implements IteratorAggregate { + + public $conditions = array(); // needs to be public for "inner" class access + + function countConditions() { + return count($this->conditions); + } + + /** + * Required for IteratorAggregate + */ + function getIterator() { + return new ConditionEnumeration($this); + } + + function getConditions() { + return $this->conditions; + } + + /** + * @return void + */ + function addAvailable(AvailableTask $a) { + $this->conditions[] = $a; + } + + /** + * @return NotCondition + */ + function createNot() { + include_once 'phing/tasks/system/condition/NotCondition.php'; + $num = array_push($this->conditions, new NotCondition()); + return $this->conditions[$num-1]; + } + + /** + * @return AndCondition + */ + function createAnd() { + include_once 'phing/tasks/system/condition/AndCondition.php'; + $num = array_push($this->conditions, new AndCondition()); + return $this->conditions[$num-1]; + } + + /** + * @return OrCondition + */ + function createOr() { + include_once 'phing/tasks/system/condition/OrCondition.php'; + $num = array_push($this->conditions, new OrCondition()); + return $this->conditions[$num-1]; + } + + /** + * @return EqualsCondition + */ + function createEquals() { + include_once 'phing/tasks/system/condition/EqualsCondition.php'; + $num = array_push($this->conditions, new EqualsCondition()); + return $this->conditions[$num-1]; + } + + /** + * @return OsCondition + */ + function createOs() { + include_once 'phing/tasks/system/condition/OsCondition.php'; + $num = array_push($this->conditions, new OsCondition()); + return $this->conditions[$num-1]; + } + + /** + * @return IsFalseCondition + */ + function createIsFalse() { + include_once 'phing/tasks/system/condition/IsFalseCondition.php'; + $num = array_push($this->conditions, new IsFalseCondition()); + return $this->conditions[$num-1]; + } + + /** + * @return IsTrueCondition + */ + function createIsTrue() { + include_once 'phing/tasks/system/condition/IsTrueCondition.php'; + $num = array_push($this->conditions, new IsTrueCondition()); + return $this->conditions[$num-1]; + } + + /** + * @return ContainsCondition + */ + function createContains() { + include_once 'phing/tasks/system/condition/ContainsCondition.php'; + $num = array_push($this->conditions, new ContainsCondition()); + return $this->conditions[$num-1]; + } + + /** + * @return IsSetCondition + */ + function createIsSet() { + include_once 'phing/tasks/system/condition/IsSetCondition.php'; + $num = array_push($this->conditions, new IsSetCondition()); + return $this->conditions[$num-1]; + } + + /** + * @return ReferenceExistsCondition + */ + function createReferenceExists() { + include_once 'phing/tasks/system/condition/ReferenceExistsCondition.php'; + $num = array_push($this->conditions, new ReferenceExistsCondition()); + return $this->conditions[$num-1]; + } + +} + +/** + * "Inner" class for handling enumerations. + * Uses build-in PHP5 iterator support. + */ +class ConditionEnumeration implements Iterator { + + /** Current element number */ + private $num = 0; + + /** "Outer" ConditionBase class. */ + private $outer; + + function __construct(ConditionBase $outer) { + $this->outer = $outer; + } + + public function valid() { + return $this->outer->countConditions() > $this->num; + } + + function current() { + $o = $this->outer->conditions[$this->num]; + if ($o instanceof ProjectComponent) { + $o->setProject($this->outer->getProject()); + } + return $o; + } + + function next() { + $this->num++; + } + + function key() { + return $this->num; + } + + function rewind() { + $this->num = 0; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/ContainsCondition.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/ContainsCondition.php new file mode 100644 index 0000000..47979e1 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/ContainsCondition.php @@ -0,0 +1,76 @@ +. + */ + +require_once 'phing/tasks/system/condition/Condition.php'; + +/** + * Is one string part of another string? + * + * @author Hans Lellelid (Phing) + * @author Stefan Bodewig (Ant) + * @version $Revision: 1.3 $ + * @package phing.tasks.system.condition + */ +class ContainsCondition implements Condition { + + private $string; + private $subString; + private $caseSensitive = true; + + /** + * The string to search in. + * @param string $a1 + */ + public function setString($a1) { + $this->string = $a1; + } + + /** + * The string to search for. + * @param string $a2 + */ + public function setSubstring($a2) { + $this->subString = $a2; + } + + /** + * Whether to search ignoring case or not. + */ + public function setCaseSensitive($b) { + $this->caseSensitive = (boolean) $b; + } + + /** + * Check whether string contains substring. + * @throws BuildException + */ + public function evaluate() { + if ($this->string === null || $this->subString === null) { + throw new BuildException("both string and substring are required " + . "in contains"); + } + + return $this->caseSensitive + ? strpos($this->string, $this->subString) !== false + : strpos(strtolower($this->string), strtolower($this->subString)) !== false; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/EqualsCondition.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/EqualsCondition.php new file mode 100644 index 0000000..74ee14c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/EqualsCondition.php @@ -0,0 +1,78 @@ +. + */ + +require_once 'phing/tasks/system/condition/Condition.php'; + +/** + * A simple string comparator. Compares two strings for eqiality in a + * binary safe manner. Implements the condition interface specification. + * + * @author Andreas Aderhold + * @copyright © 2001,2002 THYRELL. All rights reserved + * @version $Revision: 1.7 $ $Date: 2006-03-10 15:31:51 +0100 (vie 10 de mar de 2006) $ + * @access public + * @package phing.tasks.system.condition + */ +class EqualsCondition implements Condition { + + private $arg1; + private $arg2; + private $trim = false; + private $caseSensitive = true; + + public function setArg1($a1) { + $this->arg1 = $a1; + } + + public function setArg2($a2) { + $this->arg2 = $a2; + } + + /** + * Should we want to trim the arguments before comparing them? + * @param boolean $b + */ + public function setTrim($b) { + $this->trim = (boolean) $b; + } + + /** + * Should the comparison be case sensitive? + * @param boolean $b + */ + public function setCaseSensitive($b) { + $this->caseSensitive = (boolean) $b; + } + + public function evaluate() { + if ($this->arg1 === null || $this->arg2 === null) { + throw new BuildException("Both arg1 and arg2 are required in equals."); + } + + if ($this->trim) { + $this->arg1 = trim($this->arg1); + $this->arg2 = trim($this->arg2); + } + + //print("[comparison] Comparing '".$this->arg1."' and '".$this->arg2."'\n"); + return $this->caseSensitive ? $this->arg1 === $this->arg2 : strtolower($this->arg1) === strtolower($this->arg2); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/IsFalseCondition.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/IsFalseCondition.php new file mode 100644 index 0000000..ee0a3a7 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/IsFalseCondition.php @@ -0,0 +1,60 @@ +. + */ + +require_once 'phing/ProjectComponent.php'; +require_once 'phing/tasks/system/condition/Condition.php'; + +/** + * Condition that tests whether a given string evals to false. + * + * @author Hans Lellelid (Phing) + * @author Steve Loughran (Ant) + * @version $Revision: 1.4 $ + * @package phing.tasks.system.condition + */ +class IsFalseCondition extends ProjectComponent implements Condition { + + /** + * what we eval + */ + private $value; + + /** + * Set the value to be tested. + * @param boolean $value + */ + public function setValue($value) { + $this->value = $value; + } + + /** + * return the inverted value; + * @throws BuildException if someone forgot to spec a value + */ + public function evaluate() { + if ($this->value === null) { + throw new BuildException("Nothing to test for falsehood"); + } + return !$this->value; + } + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/IsSetCondition.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/IsSetCondition.php new file mode 100644 index 0000000..d31bd13 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/IsSetCondition.php @@ -0,0 +1,53 @@ +. + */ + +require_once 'phing/ProjectComponent.php'; +require_once 'phing/tasks/system/condition/Condition.php'; + +/** + * Condition that tests whether a given property has been set. + * + * @author Hans Lellelid (Phing) + * @author Stefan Bodewig (Ant) + * @version $Revision: 1.4 $ + * @package phing.tasks.system.condition + */ +class IsSetCondition extends ProjectComponent implements Condition { + + private $property; + + public function setProperty($p) { + $this->property = $p; + } + + /** + * Check whether property is set. + * @throws BuildException + */ + public function evaluate() { + if ($this->property === null) { + throw new BuildException("No property specified for isset " + . "condition"); + } + return $this->project->getProperty($this->property) !== null; + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/IsTrueCondition.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/IsTrueCondition.php new file mode 100644 index 0000000..36e506b --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/IsTrueCondition.php @@ -0,0 +1,59 @@ +. + */ + +require_once 'phing/ProjectComponent.php'; +require_once 'phing/tasks/system/condition/Condition.php'; + +/** + * Condition that tests whether a given string evals to true. + * + * @author Hans Lellelid (Phing) + * @author Steve Loughran (Ant) + * @package phing.tasks.system.condition + */ +class IsTrueCondition extends ProjectComponent implements Condition { + + /** + * what we eval + */ + private $value; + + /** + * Set the value to be tested. + * @param boolean $value + */ + public function setValue($value) { + $this->value = $value; + } + + /** + * return the inverted value; + * @throws BuildException if someone forgot to spec a value + */ + public function evaluate() { + if ($this->value === null) { + throw new BuildException("Nothing to test for falsehood"); + } + return $this->value; + } + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/NotCondition.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/NotCondition.php new file mode 100644 index 0000000..5f3fe75 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/NotCondition.php @@ -0,0 +1,48 @@ +. + */ + +require_once 'phing/tasks/system/condition/ConditionBase.php'; + +/** + * condition. + * + * Evaluates to true if the single condition nested into it is false + * and vice versa. + * + * @author Andreas Aderhold + * @copyright © 2001,2002 THYRELL. All rights reserved + * @version $Revision: 1.6 $ $Date: 2006-03-10 15:31:51 +0100 (vie 10 de mar de 2006) $ + * @access public + * @package phing.tasks.system.condition + */ +class NotCondition extends ConditionBase implements Condition { + + function evaluate() { + if ($this->countConditions() > 1) { + throw new BuildException("You must not nest more than one condition into "); + } + if ($this->countConditions() < 1) { + throw new BuildException("You must nest a condition into "); + } + $conds = $this->getIterator(); + return !$conds->current()->evaluate(); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/OrCondition.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/OrCondition.php new file mode 100644 index 0000000..dbf03e6 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/OrCondition.php @@ -0,0 +1,46 @@ +. + */ + +require_once 'phing/tasks/system/condition/ConditionBase.php'; + +/** + * condition container. + * + * Iterates over all conditions and returns true as soon as one + * evaluates to true. + * + * @author Andreas Aderhold + * @copyright 2001,2002 THYRELL. All rights reserved + * @version $Revision: 1.8 $ $Date: 2006-03-10 15:31:51 +0100 (vie 10 de mar de 2006) $ + * @access public + * @package phing.tasks.system.condition + */ +class OrCondition extends ConditionBase implements Condition { + + function evaluate() { + foreach($this as $c) { // ConditionBase implements IteratorAggregator + if ($c->evaluate()) { + return true; + } + } + return false; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/OsCondition.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/OsCondition.php new file mode 100644 index 0000000..6a63742 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/OsCondition.php @@ -0,0 +1,63 @@ +. + */ + +require_once 'phing/tasks/system/condition/ConditionBase.php'; + +/** + * Condition that tests the OS type. + * + * @author Andreas Aderhold + * @copyright © 2001,2002 THYRELL. All rights reserved + * @version $Revision: 1.8 $ $Date: 2006-03-10 15:31:51 +0100 (vie 10 de mar de 2006) $ + * @access public + * @package phing.tasks.system.condition + */ +class OsCondition implements Condition { + + private $family; + + function setFamily($f) { + $this->family = strtolower($f); + } + + function evaluate() { + $osName = strtolower(Phing::getProperty("os.name")); + + if ($this->family !== null) { + if ($this->family === "windows") { + return StringHelper::startsWith("win", $osName); + } elseif ($this->family === "mac") { + return (strpos($osName, "mac") !== false || strpos($osName, "darwin") !== false); + } elseif ($this->family === ("unix")) { + return ( + StringHelper::endsWith("ix", $osName) || + StringHelper::endsWith("ux", $osName) || + StringHelper::endsWith("bsd", $osName) || + StringHelper::startsWith("sunos", $osName) || + StringHelper::startsWith("darwin", $osName) + ); + } + throw new BuildException("Don't know how to detect os family '" . $this->family . "'"); + } + return false; + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/ReferenceExistsCondition.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/ReferenceExistsCondition.php new file mode 100644 index 0000000..9f55e81 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/tasks/system/condition/ReferenceExistsCondition.php @@ -0,0 +1,52 @@ +. + */ + +require_once 'phing/ProjectComponent.php'; require_once 'phing/tasks/system/condition/Condition.php'; + +/** + * Condition that tests whether a given reference exists. + * + * @author Matthias Pigulla (Phing) + * @version $Revision: 1.1 $ + * @package phing.tasks.system.condition */ +class ReferenceExistsCondition extends ProjectComponent implements Condition { + + private $refid; + + public function setRef($id) { + $this->refid = (string) $id; + } + + /** + * Check whether the reference exists. + * @throws BuildException + */ + public function evaluate() { + if ($this->refid === null) { + throw new BuildException("No ref attribute specified for reference-exists " + . "condition"); + } + $refs = $this->project->getReferences(); + return isset($refs[$this->refid]); + } + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/all-wcprops new file mode 100644 index 0000000..e93cbc1 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/all-wcprops @@ -0,0 +1,119 @@ +K 25 +svn:wc:ra_dav:version-url +V 44 +/!svn/ver/432/tags/2.3.3/classes/phing/types +END +PatternSet.php +K 25 +svn:wc:ra_dav:version-url +V 59 +/!svn/ver/432/tags/2.3.3/classes/phing/types/PatternSet.php +END +DirSet.php +K 25 +svn:wc:ra_dav:version-url +V 55 +/!svn/ver/432/tags/2.3.3/classes/phing/types/DirSet.php +END +FileSet.php +K 25 +svn:wc:ra_dav:version-url +V 56 +/!svn/ver/432/tags/2.3.3/classes/phing/types/FileSet.php +END +Path.php +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/432/tags/2.3.3/classes/phing/types/Path.php +END +Reference.php +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/432/tags/2.3.3/classes/phing/types/Reference.php +END +PhingFilterReader.php +K 25 +svn:wc:ra_dav:version-url +V 66 +/!svn/ver/432/tags/2.3.3/classes/phing/types/PhingFilterReader.php +END +TokenSource.php +K 25 +svn:wc:ra_dav:version-url +V 60 +/!svn/ver/432/tags/2.3.3/classes/phing/types/TokenSource.php +END +TokenReader.php +K 25 +svn:wc:ra_dav:version-url +V 60 +/!svn/ver/432/tags/2.3.3/classes/phing/types/TokenReader.php +END +Parameterizable.php +K 25 +svn:wc:ra_dav:version-url +V 64 +/!svn/ver/432/tags/2.3.3/classes/phing/types/Parameterizable.php +END +FileList.php +K 25 +svn:wc:ra_dav:version-url +V 57 +/!svn/ver/432/tags/2.3.3/classes/phing/types/FileList.php +END +DataType.php +K 25 +svn:wc:ra_dav:version-url +V 57 +/!svn/ver/432/tags/2.3.3/classes/phing/types/DataType.php +END +defaults.properties +K 25 +svn:wc:ra_dav:version-url +V 64 +/!svn/ver/432/tags/2.3.3/classes/phing/types/defaults.properties +END +AbstractFileSet.php +K 25 +svn:wc:ra_dav:version-url +V 64 +/!svn/ver/432/tags/2.3.3/classes/phing/types/AbstractFileSet.php +END +Parameter.php +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/432/tags/2.3.3/classes/phing/types/Parameter.php +END +RegularExpression.php +K 25 +svn:wc:ra_dav:version-url +V 66 +/!svn/ver/432/tags/2.3.3/classes/phing/types/RegularExpression.php +END +Description.php +K 25 +svn:wc:ra_dav:version-url +V 60 +/!svn/ver/432/tags/2.3.3/classes/phing/types/Description.php +END +Mapper.php +K 25 +svn:wc:ra_dav:version-url +V 55 +/!svn/ver/432/tags/2.3.3/classes/phing/types/Mapper.php +END +Commandline.php +K 25 +svn:wc:ra_dav:version-url +V 60 +/!svn/ver/432/tags/2.3.3/classes/phing/types/Commandline.php +END +FilterChain.php +K 25 +svn:wc:ra_dav:version-url +V 60 +/!svn/ver/432/tags/2.3.3/classes/phing/types/FilterChain.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/entries new file mode 100644 index 0000000..9737d24 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/entries @@ -0,0 +1,677 @@ +10 + +dir +1404 +http://phing.mirror.svn.symfony-project.com/tags/2.3.3/classes/phing/types +http://phing.mirror.svn.symfony-project.com + + + +2008-10-15T14:26:00.850037Z +396 +hans + + + + + + + + + + + + + + +c8b19502-6211-4773-8637-5aef67d587fc + +PatternSet.php +file + + + + +2012-05-10T18:42:04.465552Z +0f59bfc3aeb0e0d7c1efcf022f9517f2 +2007-10-21T00:27:07.024535Z +257 +hans +has-props + + + + + + + + + + + + + + + + + + + + +13473 + +DirSet.php +file + + + + +2012-05-10T18:42:04.469553Z +4d07246685fd5f9e55fa8fb9d6e95d93 +2006-09-14T20:19:08.286051Z +123 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +1680 + +FileSet.php +file + + + + +2012-05-10T18:42:04.473550Z +3b8999583b3d0d4e4f4287af8b4d8116 +2006-09-14T20:19:08.286051Z +123 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +2027 + +Path.php +file + + + + +2012-05-10T18:42:04.473550Z +bf5d4be21656648509e31e21ed1b63bc +2008-06-27T16:02:16.324450Z +377 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +14570 + +Reference.php +file + + + + +2012-05-10T18:42:04.477550Z +5f4d5675cde53f023706e9f5cdf8a9f0 +2007-12-20T15:44:58.929962Z +325 +hans +has-props + + + + + + + + + + + + + + + + + + + + +1883 + +PhingFilterReader.php +file + + + + +2012-05-10T18:42:04.477550Z +5e28252f9cb83291c64951bd93d81e2d +2007-12-20T15:44:58.929962Z +325 +hans +has-props + + + + + + + + + + + + + + + + + + + + +4301 + +TokenSource.php +file + + + + +2012-05-10T18:42:04.565570Z +ad16cbcaafe34ea7bee925acebc9096d +2007-12-20T15:44:58.929962Z +325 +hans +has-props + + + + + + + + + + + + + + + + + + + + +4637 + +TokenReader.php +file + + + + +2012-05-10T18:42:04.565570Z +2f8310c22fd373e12b7677707033d071 +2007-12-20T15:44:58.929962Z +325 +hans +has-props + + + + + + + + + + + + + + + + + + + + +2039 + +Parameterizable.php +file + + + + +2012-05-10T18:42:04.565570Z +f7aeaaa43514d9c3553efdff60e19587 +2006-09-14T20:19:08.286051Z +123 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +1283 + +FileList.php +file + + + + +2012-05-10T18:42:04.569550Z +6f0c13cd2af5f62c2493a00a95b169a2 +2007-08-01T22:42:00.134205Z +209 +hans +has-props + + + + + + + + + + + + + + + + + + + + +6573 + +DataType.php +file + + + + +2012-05-10T18:42:04.565570Z +22d6d0d2b855c626d39f578367d15dce +2006-09-14T20:19:08.286051Z +123 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +6161 + +defaults.properties +file + + + + +2012-05-10T18:42:04.569550Z +799248aa46bf4c4d78c25b7e5c68bc0e +2006-09-14T20:19:08.286051Z +123 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +413 + +selectors +dir + +AbstractFileSet.php +file + + + + +2012-05-10T18:42:04.573552Z +ae307b237f5f08df801b8cbcfd8d2eeb +2007-02-05T15:19:00.849358Z +144 +hans +has-props + + + + + + + + + + + + + + + + + + + + +17216 + +Parameter.php +file + + + + +2012-05-10T18:42:04.573552Z +feabc617165b0e72e09cdc756de00804 +2007-12-20T15:44:58.929962Z +325 +hans +has-props + + + + + + + + + + + + + + + + + + + + +2652 + +RegularExpression.php +file + + + + +2012-05-10T18:42:04.573552Z +48995f9c0567ca5892f92cdf82949222 +2007-12-20T15:44:58.929962Z +325 +hans +has-props + + + + + + + + + + + + + + + + + + + + +3339 + +Description.php +file + + + + +2012-05-10T18:42:04.573552Z +391b103048af2ed20ad619612668290e +2006-09-14T20:19:08.286051Z +123 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +2014 + +Mapper.php +file + + + + +2012-05-10T18:42:04.577610Z +b924dfd10cf0d7af11a541415316cee8 +2007-12-20T15:44:58.929962Z +325 +hans +has-props + + + + + + + + + + + + + + + + + + + + +6499 + +Commandline.php +file + + + + +2012-05-10T18:42:04.577610Z +75c307db2ecd6832aca3c07565270448 +2007-08-28T02:17:00.079088Z +227 +hans +has-props + + + + + + + + + + + + + + + + + + + + +14117 + +FilterChain.php +file + + + + +2012-05-10T18:42:04.577610Z +e29e4be9bd9228dba7d3473a379b9db6 +2007-10-16T21:09:37.064000Z +247 +hans +has-props + + + + + + + + + + + + + + + + + + + + +5711 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/AbstractFileSet.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/AbstractFileSet.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/AbstractFileSet.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/Commandline.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/Commandline.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/Commandline.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/DataType.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/DataType.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/DataType.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/Description.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/Description.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/Description.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/DirSet.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/DirSet.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/DirSet.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/FileList.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/FileList.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/FileList.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/FileSet.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/FileSet.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/FileSet.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/FilterChain.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/FilterChain.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/FilterChain.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/Mapper.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/Mapper.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/Mapper.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/Parameter.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/Parameter.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/Parameter.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/Parameterizable.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/Parameterizable.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/Parameterizable.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/Path.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/Path.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/Path.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/PatternSet.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/PatternSet.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/PatternSet.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/PhingFilterReader.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/PhingFilterReader.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/PhingFilterReader.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/Reference.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/Reference.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/Reference.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/RegularExpression.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/RegularExpression.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/RegularExpression.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/TokenReader.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/TokenReader.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/TokenReader.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/TokenSource.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/TokenSource.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/TokenSource.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/defaults.properties.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/defaults.properties.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/prop-base/defaults.properties.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/AbstractFileSet.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/AbstractFileSet.php.svn-base new file mode 100644 index 0000000..99dbc10 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/AbstractFileSet.php.svn-base @@ -0,0 +1,570 @@ +. + */ + +include_once 'phing/system/io/PhingFile.php'; +include_once 'phing/types/DataType.php'; +include_once 'phing/types/PatternSet.php'; +include_once 'phing/types/selectors/BaseSelector.php'; +include_once 'phing/types/selectors/SelectorContainer.php'; +include_once 'phing/types/selectors/BaseSelectorContainer.php'; + +// Load all of the selectors (not really necessary but +// helps reveal parse errors right away) + +include_once 'phing/types/selectors/AndSelector.php'; +include_once 'phing/types/selectors/ContainsSelector.php'; +include_once 'phing/types/selectors/ContainsRegexpSelector.php'; +include_once 'phing/types/selectors/DateSelector.php'; +include_once 'phing/types/selectors/DependSelector.php'; +include_once 'phing/types/selectors/DepthSelector.php'; +include_once 'phing/types/selectors/ExtendSelector.php'; +include_once 'phing/types/selectors/FilenameSelector.php'; +include_once 'phing/types/selectors/MajoritySelector.php'; +include_once 'phing/types/selectors/NoneSelector.php'; +include_once 'phing/types/selectors/NotSelector.php'; +include_once 'phing/types/selectors/OrSelector.php'; +include_once 'phing/types/selectors/PresentSelector.php'; +include_once 'phing/types/selectors/SizeSelector.php'; +include_once 'phing/types/selectors/TypeSelector.php'; + +include_once 'phing/util/DirectoryScanner.php'; + +/** + * The FileSet class provides methods and properties for accessing + * and managing filesets. It extends ProjectComponent and thus inherits + * all methods and properties (not explicitly declared). See ProjectComponent + * for further detail. + * + * TODO: + * - merge this with patternsets: FileSet extends PatternSet !!! + * requires additional mods to the parsing algo + * [HL] .... not sure if that really makes so much sense. I think + * that perhaps they should use common utility class if there really + * is that much shared functionality + * + * @author Andreas Aderhold + * @author Hans Lellelid + * @version $Revision: 1.15 $ $Date$ + * @see ProjectComponent + * @package phing.types + */ +class AbstractFileSet extends DataType implements SelectorContainer { + + // These vars are public for cloning purposes + + /** + * @var boolean + */ + public $useDefaultExcludes = true; + + /** + * @var PatternSet + */ + public $defaultPatterns; + + public $additionalPatterns = array(); + public $dir; + public $isCaseSensitive = true; + public $selectors = array(); + + function __construct($fileset = null) { + if ($fileset !== null && ($fileset instanceof FileSet)) { + $this->dir = $fileset->dir; + $this->defaultPatterns = $fileset->defaultPatterns; + $this->additionalPatterns = $fileset->additionalPatterns; + $this->useDefaultExcludes = $fileset->useDefaultExcludes; + $this->isCaseSensitive = $fileset->isCaseSensitive; + $this->selectors = $fileset->selectors; + } + $this->defaultPatterns = new PatternSet(); + } + + + /** + * Makes this instance in effect a reference to another PatternSet + * instance. + * You must not set another attribute or nest elements inside + * this element if you make it a reference. + */ + function setRefid(Reference $r) { + if ((isset($this->dir) && !is_null($this->dir)) || $this->defaultPatterns->hasPatterns()) { + throw $this->tooManyAttributes(); + } + if (!empty($this->additionalPatterns)) { + throw $this->noChildrenAllowed(); + } + if (!empty($this->selectors)) { + throw $this->noChildrenAllowed(); + } + parent::setRefid($r); + } + + + function setDir($dir) { + if ($this->isReference()) { + throw $this->tooManyAttributes(); + } + if ($dir instanceof PhingFile) { + $dir = $dir->getPath(); + } + $this->dir = new PhingFile((string) $dir); + } + + + function getDir(Project $p) { + if ($this->isReference()) { + return $this->getRef($p)->getDir($p); + } + return $this->dir; + } + + + function createPatternSet() { + if ($this->isReference()) { + throw $this->noChildrenAllowed(); + } + $num = array_push($this->additionalPatterns, new PatternSet()); + return $this->additionalPatterns[$num-1]; + } + + /** + * add a name entry on the include list + */ + function createInclude() { + if ($this->isReference()) { + throw $this->noChildrenAllowed(); + } + return $this->defaultPatterns->createInclude(); + } + + /** + * add a name entry on the include files list + */ + function createIncludesFile() { + if ($this->isReference()) { + throw $this->noChildrenAllowed(); + } + return $this->defaultPatterns->createIncludesFile(); + } + + /** + * add a name entry on the exclude list + */ + function createExclude() { + if ($this->isReference()) { + throw $this->noChildrenAllowed(); + } + return $this->defaultPatterns->createExclude(); + } + + /** + * add a name entry on the include files list + */ + function createExcludesFile() { + if ($this->isReference()) { + throw $this->noChildrenAllowed(); + return; + } + return $this->defaultPatterns->createExcludesFile(); + } + + /** + * Sets the set of include patterns. Patterns may be separated by a comma + * or a space. + */ + function setIncludes($includes) { + if ($this->isReference()) { + throw $this->tooManyAttributes(); + } + $this->defaultPatterns->setIncludes($includes); + } + + /** + * Sets the set of exclude patterns. Patterns may be separated by a comma + * or a space. + */ + function setExcludes($excludes) { + if ($this->isReference()) { + throw $this->tooManyAttributes(); + } + $this->defaultPatterns->setExcludes($excludes); + } + + /** + * Sets the name of the file containing the includes patterns. + * + * @param $incl The file to fetch the include patterns from. + * @throws BE + */ + function setIncludesfile($incl) { + if ($this->isReference()) { + throw $this->tooManyAttributes(); + } + $this->defaultPatterns->setIncludesfile($incl); + } + + /** + * Sets the name of the file containing the includes patterns. + * + * @param $excl The file to fetch the exclude patterns from. + * @throws BE + */ + function setExcludesfile($excl) { + if ($this->isReference()) { + throw $this->tooManyAttributes(); + } + $this->defaultPatterns->setExcludesfile($excl); + } + + /** + * Sets whether default exclusions should be used or not. + * + * @param $useDefaultExcludes "true"|"on"|"yes" when default exclusions + * should be used, "false"|"off"|"no" when they + * shouldn't be used. + */ + function setDefaultexcludes($useDefaultExcludes) { + if ($this->isReference()) { + throw $this->tooManyAttributes(); + } + $this->useDefaultExcludes = $useDefaultExcludes; + } + + /** + * Sets case sensitivity of the file system + */ + function setCaseSensitive($isCaseSensitive) { + $this->isCaseSensitive = $isCaseSensitive; + } + + /** returns a reference to the dirscanner object belonging to this fileset */ + function getDirectoryScanner(Project $p) { + if ($this->isReference()) { + $o = $this->getRef($p); + return $o->getDirectoryScanner($p); + } + + if ($this->dir === null) { + throw new BuildException("No directory specified for fileset."); + } + if (!$this->dir->exists()) { + throw new BuildException("Directory ".$this->dir->getAbsolutePath()." not found."); + } + if (!$this->dir->isDirectory()) { + throw new BuildException($this->dir->getAbsolutePath()." is not a directory."); + } + $ds = new DirectoryScanner(); + $this->setupDirectoryScanner($ds, $p); + $ds->scan(); + return $ds; + } + + /** feed dirscanner with infos defined by this fileset */ + protected function setupDirectoryScanner(DirectoryScanner $ds, Project $p) { + if ($ds === null) { + throw new Exception("DirectoryScanner cannot be null"); + } + // FIXME - pass dir directly wehn dirscanner supports File + $ds->setBasedir($this->dir->getPath()); + + foreach($this->additionalPatterns as $addPattern) { + $this->defaultPatterns->append($addPattern, $p); + } + + $ds->setIncludes($this->defaultPatterns->getIncludePatterns($p)); + $ds->setExcludes($this->defaultPatterns->getExcludePatterns($p)); + + $p->log("FileSet: Setup file scanner in dir " . $this->dir->__toString() . " with " . $this->defaultPatterns->toString(), Project::MSG_DEBUG); + + if ($ds instanceof SelectorScanner) { + $ds->setSelectors($this->getSelectors($p)); + } + + if ($this->useDefaultExcludes) { + $ds->addDefaultExcludes(); + } + $ds->setCaseSensitive($this->isCaseSensitive); + } + + + /** + * Performs the check for circular references and returns the + * referenced FileSet. + */ + function getRef(Project $p) { + if (!$this->checked) { + $stk = array(); + array_push($stk, $this); + $this->dieOnCircularReference($stk, $p); + } + + $o = $this->ref->getReferencedObject($p); + if (!($o instanceof FileSet)) { + $msg = $this->ref->getRefId()." doesn't denote a fileset"; + throw new BuildException($msg); + } else { + return $o; + } + } + + // SelectorContainer methods + + /** + * Indicates whether there are any selectors here. + * + * @return boolean Whether any selectors are in this container + */ + public function hasSelectors() { + if ($this->isReference() && $this->getProject() !== null) { + return $this->getRef($this->getProject())->hasSelectors(); + } + return !empty($this->selectors); + } + + /** + * Indicates whether there are any patterns here. + * + * @return boolean Whether any patterns are in this container. + */ + public function hasPatterns() { + + if ($this->isReference() && $this->getProject() !== null) { + return $this->getRef($this->getProject())->hasPatterns(); + } + + if ($this->defaultPatterns->hasPatterns($this->getProject())) { + return true; + } + + for($i=0,$size=count($this->additionalPatterns); $i < $size; $i++) { + $ps = $this->additionalPatterns[$i]; + if ($ps->hasPatterns($this->getProject())) { + return true; + } + } + + return false; + } + + /** + * Gives the count of the number of selectors in this container + * + * @return int The number of selectors in this container + */ + public function selectorCount() { + if ($this->isReference() && $this->getProject() !== null) { + try { + return $this->getRef($this->getProject())->selectorCount(); + } catch (Exception $e) { + throw $e; + } + } + return count($this->selectors); + } + + /** + * Returns the set of selectors as an array. + * + * @return an array of selectors in this container + */ + public function getSelectors(Project $p) { + if ($this->isReference()) { + return $this->getRef($p)->getSelectors($p); + } else { + // *copy* selectors + $result = array(); + for($i=0,$size=count($this->selectors); $i < $size; $i++) { + $result[] = clone $this->selectors[$i]; + } + return $result; + } + } + + /** + * Returns an array for accessing the set of selectors. + * + * @return array The array of selectors + */ + public function selectorElements() { + if ($this->isReference() && $this->getProject() !== null) { + return $this->getRef($this->getProject())->selectorElements(); + } + return $this->selectors; + } + + /** + * Add a new selector into this container. + * + * @param selector the new selector to add + */ + public function appendSelector(FileSelector $selector) { + if ($this->isReference()) { + throw $this->noChildrenAllowed(); + } + $this->selectors[] = $selector; + } + + /* Methods below all add specific selectors */ + + /** + * add a "Select" selector entry on the selector list + */ + public function createSelector() { + $o = new SelectSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add an "And" selector entry on the selector list + */ + public function createAnd() { + $o = new AndSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add an "Or" selector entry on the selector list + */ + public function createOr() { + $o = new OrSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add a "Not" selector entry on the selector list + */ + public function createNot() { + $o = new NotSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add a "None" selector entry on the selector list + */ + public function createNone() { + $o = new NoneSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add a majority selector entry on the selector list + */ + public function createMajority() { + $o = new MajoritySelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add a selector date entry on the selector list + */ + public function createDate() { + $o = new DateSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add a selector size entry on the selector list + */ + public function createSize() { + $o = new SizeSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add a selector filename entry on the selector list + */ + public function createFilename() { + $o = new FilenameSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add an extended selector entry on the selector list + */ + public function createCustom() { + $o = new ExtendSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add a contains selector entry on the selector list + */ + public function createContains() { + $o = new ContainsSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add a contains selector entry on the selector list + */ + public function createContainsRegexp() { + $o = new ContainsRegexpSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add a present selector entry on the selector list + */ + public function createPresent() { + $o = new PresentSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add a depth selector entry on the selector list + */ + public function createDepth() { + $o = new DepthSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add a depends selector entry on the selector list + */ + public function createDepend() { + $o = new DependSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add a type selector entry on the selector list + */ + public function createType() { + $o = new TypeSelector(); + $this->appendSelector($o); + return $o; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/Commandline.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/Commandline.php.svn-base new file mode 100644 index 0000000..bda40c5 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/Commandline.php.svn-base @@ -0,0 +1,467 @@ +. + */ + + +/** + * Commandline objects help handling command lines specifying processes to + * execute. + * + * The class can be used to define a command line as nested elements or as a + * helper to define a command line by an application. + *

    + * + * <someelement>
    + *   <acommandline executable="/executable/to/run">
    + *     <argument value="argument 1" />
    + *     <argument line="argument_1 argument_2 argument_3" />
    + *     <argument value="argument 4" />
    + *   </acommandline>
    + * </someelement>
    + *
    + * The element someelement must provide a method + * createAcommandline which returns an instance of this class. + * + * @author thomas.haas@softwired-inc.com + * @author Stefan Bodewig + */ +class Commandline { + + /** + * @var array CommandlineArguments[] + */ + public $arguments = array(); // public so "inner" class can access + + /** + * Full path (if not on %PATH% env var) to executable program. + * @var string + */ + public $executable; // public so "inner" class can access + + const DISCLAIMER = "The ' characters around the executable and arguments are not part of the command."; + + public function __construct($to_process = null) { + if ($to_process !== null) { + $tmp = $this->translateCommandline($to_process); + if ($tmp) { + $this->setExecutable(array_shift($tmp)); // removes first el + foreach($tmp as $arg) { // iterate through remaining elements + $this->createArgument()->setValue($arg); + } + } + } + } + + + /** + * Creates an argument object and adds it to our list of args. + * + *

    Each commandline object has at most one instance of the + * argument class.

    + * + * @param boolean $insertAtStart if true, the argument is inserted at the + * beginning of the list of args, otherwise it is appended. + * @return CommandlineArgument + */ + public function createArgument($insertAtStart = false) { + $argument = new CommandlineArgument($this); + if ($insertAtStart) { + array_unshift($this->arguments, $argument); + } else { + array_push($this->arguments, $argument); + } + return $argument; + } + + /** + * Sets the executable to run. + */ + public function setExecutable($executable) { + if (!$executable) { + return; + } + $this->executable = $executable; + $this->executable = strtr($this->executable, '/', DIRECTORY_SEPARATOR); + $this->executable = strtr($this->executable, '\\', DIRECTORY_SEPARATOR); + } + + public function getExecutable() { + return $this->executable; + } + + public function addArguments($line) { + foreach($line as $arg) { + $this->createArgument()->setValue($arg); + } + } + + /** + * Returns the executable and all defined arguments. + * @return array + */ + public function getCommandline() { + $args = $this->getArguments(); + if ($this->executable === null) { + return $args; + } + return array_merge(array($this->executable), $args); + } + + + /** + * Returns all arguments defined by addLine, + * addValue or the argument object. + */ + public function getArguments() { + $result = array(); + foreach($this->arguments as $arg) { + $parts = $arg->getParts(); + if ($parts !== null) { + foreach($parts as $part) { + $result[] = $part; + } + } + } + return $result; + } + + public function __toString() { + return self::toString($this->getCommandline()); + } + + /** + * Put quotes around the given String if necessary. + * + *

    If the argument doesn't include spaces or quotes, return it + * as is. If it contains double quotes, use single quotes - else + * surround the argument by double quotes.

    + * + * @exception BuildException if the argument contains both, single + * and double quotes. + */ + public static function quoteArgument($argument) { + if (strpos($argument, "\"") !== false) { + if (strpos($argument, "'") !== false) { + throw new BuildException("Can't handle single and double quotes in same argument"); + } else { + return escapeshellarg($argument); + } + } elseif (strpos($argument, "'") !== false || strpos($argument, " ") !== false) { + return escapeshellarg($argument); + //return '\"' . $argument . '\"'; + } else { + return $argument; + } + } + + /** + * Quotes the parts of the given array in way that makes them + * usable as command line arguments. + */ + public static function toString($lines) { + // empty path return empty string + if (!$lines) { + return ""; + } + + // path containing one or more elements + $result = ""; + for ($i = 0, $len=count($lines); $i < $len; $i++) { + if ($i > 0) { + $result .= ' '; + } + $result .= self::quoteArgument($lines[$i]); + } + return $result; + } + + /** + * + * @param string $to_process + * @return array + */ + public static function translateCommandline($to_process) { + + if (!$to_process) { + return array(); + } + + // parse with a simple finite state machine + + $normal = 0; + $inQuote = 1; + $inDoubleQuote = 2; + + $state = $normal; + $args = array(); + $current = ""; + $lastTokenHasBeenQuoted = false; + + $tok = strtok($to_process, ""); + $tokens = preg_split('/(["\' ])/', $to_process, -1, PREG_SPLIT_DELIM_CAPTURE); + while(($nextTok = array_shift($tokens)) !== null) { + switch ($state) { + case $inQuote: + if ("'" == $nextTok) { + $lastTokenHasBeenQuoted = true; + $state = $normal; + } else { + $current .= $nextTok; + } + break; + case $inDoubleQuote: + if ("\"" == $nextTok) { + $lastTokenHasBeenQuoted = true; + $state = $normal; + } else { + $current .= $nextTok; + } + break; + default: + if ("'" == $nextTok) { + $state = $inQuote; + } elseif ("\"" == $nextTok) { + $state = $inDoubleQuote; + } elseif (" " == $nextTok) { + if ($lastTokenHasBeenQuoted || strlen($current) != 0) { + $args[] = $current; + $current = ""; + } + } else { + $current .= $nextTok; + } + $lastTokenHasBeenQuoted = false; + break; + } + } + + if ($lastTokenHasBeenQuoted || strlen($current) != 0) { + $args[] = $current; + } + + if ($state == $inQuote || $state == $inDoubleQuote) { + throw new BuildException("unbalanced quotes in " . $to_process); + } + + return $args; + } + + /** + * @return int Number of components in current commandline. + */ + public function size() { + return count($this->getCommandline()); + } + + public function __copy() { + $c = new Commandline(); + $c->setExecutable($this->executable); + $c->addArguments($this->getArguments()); + return $c; + } + + /** + * Clear out the whole command line. */ + public function clear() { + $this->executable = null; + $this->arguments->removeAllElements(); + } + + /** + * Clear out the arguments but leave the executable in place for + * another operation. + */ + public function clearArgs() { + $this->arguments = array(); + } + + /** + * Return a marker. + * + *

    This marker can be used to locate a position on the + * commandline - to insert something for example - when all + * parameters have been set.

    + * @return CommandlineMarker + */ + public function createMarker() { + return new CommandlineMarker($this, count($this->arguments)); + } + + /** + * Returns a String that describes the command and arguments + * suitable for verbose output before a call to + * Runtime.exec(String[]). + * + *

    This method assumes that the first entry in the array is the + * executable to run.

    + * @param array $args CommandlineArgument[] to use + * @return string + */ + public function describeCommand($args = null) { + + if ($args === null) { + $args = $this->getCommandline(); + } + + if (!$args) { + return ""; + } + + $buf = "Executing '"; + $buf .= $args[0]; + $buf .= "'"; + if (count($args) > 0) { + $buf .= " with "; + $buf .= $this->describeArguments($args, 1); + } else { + $buf .= self::DISCLAIMER; + } + return $buf; + } + + /** + * Returns a String that describes the arguments suitable for + * verbose output before a call to + * Runtime.exec(String[]) + * @param $args arguments to use (default is to use current class args) + * @param $offset ignore entries before this index + * @return string + */ + protected function describeArguments($args = null, $offset = 0) { + if ($args === null) { + $args = $this->getArguments(); + } + + if ($args === null || count($args) <= $offset) { + return ""; + } + + $buf = "argument"; + if (count($args) > $offset) { + $buf .= "s"; + } + $buf .= ":" . PHP_EOL; + for ($i = $offset, $alen=count($args); $i < $alen; $i++) { + $buf .= "'" . $args[$i] . "'" . PHP_EOL; + } + $buf .= self::DISCLAIMER; + return $buf; + } +} + + +/** + * "Inner" class used for nested xml command line definitions. + */ +class CommandlineArgument { + + private $parts = array(); + private $outer; + + public function __construct(Commandline $outer) { + $this->outer = $outer; + } + + /** + * Sets a single commandline argument. + * + * @param string $value a single commandline argument. + */ + public function setValue($value) { + $this->parts = array($value); + } + + /** + * Line to split into several commandline arguments. + * + * @param line line to split into several commandline arguments + */ + public function setLine($line) { + if ($line === null) { + return; + } + $this->parts = $this->outer->translateCommandline($line); + } + + /** + * Sets a single commandline argument and treats it like a + * PATH - ensures the right separator for the local platform + * is used. + * + * @param value a single commandline argument. + */ + public function setPath($value) { + $this->parts = array( (string) $value ); + } + + /** + * Sets a single commandline argument to the absolute filename + * of the given file. + * + * @param value a single commandline argument. + */ + public function setFile(PhingFile $value) { + $this->parts = array($value->getAbsolutePath()); + } + + /** + * Returns the parts this Argument consists of. + * @return array string[] + */ + public function getParts() { + return $this->parts; + } +} + +/** + * Class to keep track of the position of an Argument. + */ +//

    This class is there to support the srcfile and targetfile +// elements of <execon> and <transform> - don't know +// whether there might be additional use cases.

    --SB +class CommandlineMarker { + + private $position; + private $realPos = -1; + private $outer; + + public function __construct(Comandline $outer, $position) { + $this->outer = $outer; + $this->position = $position; + } + + /** + * Return the number of arguments that preceeded this marker. + * + *

    The name of the executable - if set - is counted as the + * very first argument.

    + */ + public function getPosition() { + if ($this->realPos == -1) { + $realPos = ($this->outer->executable === null ? 0 : 1); + for ($i = 0; $i < $position; $i++) { + $arg = $this->arguments[$i]; + $realPos += count($arg->getParts()); + } + } + return $this->realPos; + } +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/DataType.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/DataType.php.svn-base new file mode 100644 index 0000000..3391f23 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/DataType.php.svn-base @@ -0,0 +1,182 @@ +. + */ + +require_once 'phing/ProjectComponent.php'; +include_once 'phing/BuildException.php'; + +/** + * Base class for those classes that can appear inside the build file + * as stand alone data types. + * + * This class handles the common description attribute and provides + * a default implementation for reference handling and checking for + * circular references that is appropriate for types that can not be + * nested inside elements of the same type (i.e. patternset but not path) + * + * @package phing.types + */ +class DataType extends ProjectComponent { + + /** The descriptin the user has set. */ + public $description = null; + + /** Value to the refid attribute. Type of Reference*/ + public $ref = null; + + /** + * Are we sure we don't hold circular references? + * + * Subclasses are responsible for setting this value to false + * if we'd need to investigate this condition (usually because a + * child element has been added that is a subclass of DataType). + * @var boolean + */ + protected $checked = true; + + /** + * Sets a description of the current data type. It will be useful + * in commenting what we are doing. + */ + function setDescription($desc) { + $this->description = (string) $desc; + } + + /** Return the description for the current data type. */ + function getDescription() { + return $this->description; + } + + /** Has the refid attribute of this element been set? */ + function isReference() { + return ($this->ref !== null); + } + + /** + * Set the value of the refid attribute. + * + * Subclasses may need to check whether any other attributes + * have been set as well or child elements have been created and + * thus override this method. if they do they must call parent::setRefid() + * + * @param Reference $r + * @return void + */ + function setRefid(Reference $r) { + $this->ref = $r; + $this->checked = false; + } + + /** + * Check to see whether any DataType we hold references to is + * included in the Stack (which holds all DataType instances that + * directly or indirectly reference this instance, including this + * instance itself). + * + * If one is included, throw a BuildException created by circularReference + * + * This implementation is appropriate only for a DataType that + * cannot hold other DataTypes as children. + * + * The general contract of this method is that it shouldn't do + * anything if checked is true and set it to true on exit. + */ + function dieOnCircularReference(&$stk, Project $p) { + if ($this->checked || !$this->isReference()) { + return; + } + + $o = $this->ref->getReferencedObject($p); + + if ($o instanceof DataType) { + + // TESTME - make sure that in_array() works just as well here + // + // check if reference is in stack + //$contains = false; + //for ($i=0, $size=count($stk); $i < $size; $i++) { + // if ($stk[$i] === $o) { + // $contains = true; + // break; + // } + //} + + if (in_array($o, $stk, true)) { + // throw build exception + throw $this->circularReference(); + } else { + array_push($stk, $o); + $o->dieOnCircularReference($stk, $p); + array_pop($stk); + } + } + $this->checked = true; + } + + /** Performs the check for circular references and returns the referenced object. */ + function getCheckedRef($requiredClass, $dataTypeName) { + + if (!$this->checked) { + // should be in stack + $stk = array(); + $stk[] = $this; + $this->dieOnCircularReference($stk, $this->getProject()); + } + + $o = $this->ref->getReferencedObject($this->getProject()); + if (!($o instanceof $requiredClass) ) { + throw new BuildException($this->ref->getRefId()." doesn't denote a " . $dataTypeName); + } else { + return $o; + } + } + + /** + * Creates an exception that indicates that refid has to be the + * only attribute if it is set. + */ + function tooManyAttributes() { + return new BuildException( "You must not specify more than one attribute when using refid" ); + } + + /** + * Creates an exception that indicates that this XML element must + * not have child elements if the refid attribute is set. + */ + function noChildrenAllowed() { + return new BuildException("You must not specify nested elements when using refid"); + } + + /** + * Creates an exception that indicates the user has generated a + * loop of data types referencing each other. + */ + function circularReference() { + return new BuildException("This data type contains a circular reference."); + } + + /** + * Template method being called when the data type has been + * parsed completely. + * @return void + */ + function parsingComplete() {} +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/Description.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/Description.php.svn-base new file mode 100644 index 0000000..bb303eb --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/Description.php.svn-base @@ -0,0 +1,53 @@ +. + */ + +/** + * Description is used to provide a project-wide description element + * (that is, a description that applies to a buildfile as a whole). + * If present, the <description> element is printed out before the + * target descriptions. + * + * Description has no attributes, only text. There can only be one + * project description per project. A second description element will + * overwrite the first. + * + * @author Hans Lellelid (Phing) + * @author Craeg Strong (Ant) + * @package phing.types + */ +class Description extends DataType { + + /** + * Adds descriptive text to the project. + * + * @return void + */ + public function addText($text) { + $currentDescription = $this->project->getDescription(); + if ($currentDescription === null) { + $this->project->setDescription($text); + } else { + $this->project->setDescription($currentDescription . $text); + } + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/DirSet.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/DirSet.php.svn-base new file mode 100644 index 0000000..1ab2ec4 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/DirSet.php.svn-base @@ -0,0 +1,49 @@ +. + */ + +include_once 'phing/types/AbstractFileSet.php'; + +/** + * Subclass as hint for supporting tasks that the included directories + * instead of files should be used. + * + * @package phing.types + */ +class DirSet extends AbstractFileSet { + + public function __construct($dirset = null) { + parent::__construct($dirset); + } + + /** + * Return a DirSet that has the same basedir and same patternsets + * as this one. + */ + public function __clone() { + if ($this->isReference()) { + return new DirSet($this->getRef($this->getProject())); + } else { + return new DirSet($this); + } + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/FileList.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/FileList.php.svn-base new file mode 100644 index 0000000..f6870a1 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/FileList.php.svn-base @@ -0,0 +1,224 @@ +. + */ + +require_once 'phing/types/DataType.php'; +include_once 'phing/system/io/PhingFile.php'; + +/** + * FileList represents an explicitly named list of files. FileLists + * are useful when you want to capture a list of files regardless of + * whether they currently exist. + * + * + * + * OR + * + * + * + * (or a mixture of files="" and listfile="" can be used) + * + * @author Hans Lellelid + * @version $Revision: 1.10 $ + * @package phing.types + */ +class FileList extends DataType { + + // public for "cloning" purposes + + /** Array containing all filenames. */ + public $filenames = array(); + + /** Base directory for this file list. */ + public $dir; + + /** PhingFile that contains a list of files (one per line). */ + public $listfile; + + /** + * Construct a new FileList. + * @param array $filelist; + */ + function __construct($filelist = null) { + if ($filelist !== null) { + $this->dir = $filelist->dir; + $this->filenames = $filelist->filenames; + $this->listfile = $filelist->listfile; + } + } + + /** + * Makes this instance in effect a reference to another FileList + * instance. + */ + function setRefid(Reference $r) { + if ($this->dir !== null || count($this->filenames) !== 0) { + throw $this->tooManyAttributes(); + } + parent::setRefid($r); + } + + /** + * Base directory for files in list. + * @param PhingFile $dir + */ + function setDir(PhingFile $dir) { + if ($this->isReference()) { + throw $this->tooManyAttributes(); + } + if (!($dir instanceof PhingFile)) { + $dir = new PhingFile($dir); + } + $this->dir = $dir; + } + + /** + * Get the basedir for files in list. + * @return PhingFile + */ + function getDir(Project $p) { + if ($this->isReference()) { + $ref = $this->getRef($p); + return $ref->getDir($p); + } + return $this->dir; + } + + /** + * Set the array of files in list. + * @param array $filenames + */ + function setFiles($filenames) { + if ($this->isReference()) { + throw $this->tooManyAttributes(); + } + if (!empty($filenames)) { + $tok = strtok($filenames, ", \t\n\r"); + while ($tok !== false) { + $fname = trim($tok); + if ($fname !== "") { + $this->filenames[] = $tok; + } + $tok = strtok(", \t\n\r"); + } + } + } + + /** + * Sets a source "list" file that contains filenames to add -- one per line. + * @param string $file + */ + function setListFile($file) { + if ($this->isReference()) { + throw $this->tooManyAttributes(); + } + if (!($file instanceof PhingFile)) { + $file = new PhingFile($file); + } + $this->listfile = $file; + } + + /** + * Get the source "list" file that contains file names. + * @param Project $p + * @return PhingFile + */ + function getListFile(Project $p) { + if ($this->isReference()) { + $ref = $this->getRef($p); + return $ref->getListFile($p); + } + return $this->listfile; + } + + /** + * Returns the list of files represented by this FileList. + * @param Project $p + * @return array + */ + function getFiles(Project $p) { + + if ($this->isReference()) { + $ret = $this->getRef($p); + $ret = $ret->getFiles($p); + return $ret; + } + + if ($this->listfile !== null) { + $this->readListFile($p); + } + + return $this->filenames; + } + + + /** + * Performs the check for circular references and returns the + * referenced FileSet. + * @param Project $p + */ + function getRef(Project $p) { + if (!$this->checked) { + $stk = array(); + array_push($stk, $this); + $this->dieOnCircularReference($stk, $p); + } + + $o = $this->ref->getReferencedObject($p); + if (!($o instanceof FileList)) { + throw new BuildException($this->ref->getRefId()." doesn't denote a filelist"); + } else { + return $o; + } + } + + /** + * Reads file names from a file and adds them to the files array. + * @param Project $p + */ + private function readListFile(Project $p) { + $listReader = null; + try { + // Get a FileReader + $listReader = new BufferedReader(new FileReader($this->listfile)); + + $line = $listReader->readLine(); + while ($line !== null) { + if (!empty($line)) { + $line = $p->replaceProperties($line); + $this->filenames[] = trim($line); + } + $line = $listReader->readLine(); + } + } catch (Exception $e) { + if ($listReader) $listReader->close(); + throw new BuildException("An error occured while reading from list file " . $this->listfile->__toString() . ": " . $e->getMessage()); + } + + $listReader->close(); + } + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/FileSet.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/FileSet.php.svn-base new file mode 100644 index 0000000..1fbeb21 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/FileSet.php.svn-base @@ -0,0 +1,56 @@ +. + */ + +require_once 'phing/types/AbstractFileSet.php'; + +/** + * Moved out of MatchingTask to make it a standalone object that could + * be referenced (by scripts for example). + * + * @author Hans Lellelid (Phing) + * @author Arnout J. Kuiper (Ant) + * @author Stefano Mazzocchi (Ant) + * @author Sam Ruby (Ant) + * @author Jon S. Stevens (Ant) + * @author Stefan Bodewig (Ant) + * @author Magesh Umasankar (Ant) + * @package phing.types + */ +class FileSet extends AbstractFileSet { + + function __construct($fileset = null) { + parent::__construct($fileset); + } + + /** + * Return a FileSet that has the same basedir and same patternsets + * as this one. + */ + public function __clone() { + if ($this->isReference()) { + return new FileSet($this->getRef($this->getProject())); + } else { + return new FileSet($this); + } + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/FilterChain.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/FilterChain.php.svn-base new file mode 100644 index 0000000..3ba78e0 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/FilterChain.php.svn-base @@ -0,0 +1,176 @@ +. + */ + +include_once 'phing/types/DataType.php'; +include_once 'phing/filters/HeadFilter.php'; +include_once 'phing/filters/TailFilter.php'; +include_once 'phing/filters/LineContains.php'; +include_once 'phing/filters/LineContainsRegexp.php'; +include_once 'phing/filters/ExpandProperties.php'; +include_once 'phing/filters/PrefixLines.php'; +include_once 'phing/filters/ReplaceRegexp.php'; +include_once 'phing/filters/ReplaceTokens.php'; +include_once 'phing/filters/StripPhpComments.php'; +include_once 'phing/filters/StripLineBreaks.php'; +include_once 'phing/filters/StripLineComments.php'; +include_once 'phing/filters/StripWhitespace.php'; +include_once 'phing/filters/TabToSpaces.php'; +include_once 'phing/filters/TidyFilter.php'; +include_once 'phing/filters/TranslateGettext.php'; +include_once 'phing/filters/XincludeFilter.php'; +include_once 'phing/filters/XsltFilter.php'; + +/* + * FilterChain may contain a chained set of filter readers. + * + * @author Yannick Lecaillez + * @version $Revision: 1.11 $ + * @package phing.types + */ +class FilterChain extends DataType { + + private $filterReaders = array(); + + function __construct(Project $project) { + $this->project = $project; + } + + function getFilterReaders() { + return $this->filterReaders; + } + + function addExpandProperties(ExpandProperties $o) { + $o->setProject($this->project); + $this->filterReaders[] = $o; + } + + function addGettext(TranslateGettext $o) { + $o->setProject($this->project); + $this->filterReaders[] = $o; + } + + function addHeadFilter(HeadFilter $o) { + $o->setProject($this->project); + $this->filterReaders[] = $o; + } + + function addTailFilter(TailFilter $o) { + $o->setProject($this->project); + $this->filterReaders[] = $o; + } + + function addLineContains(LineContains $o) { + $o->setProject($this->project); + $this->filterReaders[] = $o; + } + + function addLineContainsRegExp(LineContainsRegExp $o) { + $o->setProject($this->project); + $this->filterReaders[] = $o; + } + + function addPrefixLines(PrefixLines $o) { + $o->setProject($this->project); + $this->filterReaders[] = $o; + } + + function addReplaceTokens(ReplaceTokens $o) { + $o->setProject($this->project); + $this->filterReaders[] = $o; + } + + function addReplaceRegexp(ReplaceRegexp $o) { + $o->setProject($this->project); + $this->filterReaders[] = $o; + } + + function addStripPhpComments(StripPhpComments $o) { + $o->setProject($this->project); + $this->filterReaders[] = $o; + } + + function addStripLineBreaks(StripLineBreaks $o) { + $o->setProject($this->project); + $this->filterReaders[] = $o; + } + + function addStripLineComments(StripLineComments $o) { + $o->setProject($this->project); + $this->filterReaders[] = $o; + } + + function addStripWhitespace(StripWhitespace $o) { + $o->setProject($this->project); + $this->filterReaders[] = $o; + } + + function addTidyFilter(TidyFilter $o) { + $o->setProject($this->project); + $this->filterReaders[] = $o; + } + + function addTabToSpaces(TabToSpaces $o) { + $o->setProject($this->project); + $this->filterReaders[] = $o; + } + + function addXincludeFilter(XincludeFilter $o) { + $o->setProject($this->project); + $this->filterReaders[] = $o; + } + + function addXsltFilter(XsltFilter $o) { + $o->setProject($this->project); + $this->filterReaders[] = $o; + } + + function addFilterReader(PhingFilterReader $o) { + $o->setProject($this->project); + $this->filterReaders[] = $o; + } + + /* + * Makes this instance in effect a reference to another FilterChain + * instance. + * + *

    You must not set another attribute or nest elements inside + * this element if you make it a reference.

    + * + * @param r the reference to which this instance is associated + * @throw BuildException if this instance already has been configured. + */ + function setRefid(Reference $r) { + + if ( count($this->filterReaders) === 0 ) { + throw $this->tooManyAttributes(); + } + + // change this to get the objects from the other reference + $o = $r->getReferencedObject($this->getProject()); + if ( $o instanceof FilterChain ) { + $this->filterReaders = $o->getFilterReaders(); + } else { + throw new BuildException($r->getRefId()." doesn't refer to a FilterChain"); + } + parent::setRefid($r); + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/Mapper.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/Mapper.php.svn-base new file mode 100644 index 0000000..b62364c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/Mapper.php.svn-base @@ -0,0 +1,207 @@ +. + */ + +include_once 'phing/types/DataType.php'; +include_once 'phing/types/Path.php'; + +/** + * Filename Mapper maps source file name(s) to target file name(s). + * + * Built-in mappers can be accessed by specifying they "type" attribute: + * + * + * + * Custom mappers can be specified by providing a dot-path to a include_path-relative + * class: + * + * + * + * + * + * @author Hans Lellelid + * @package phing.types + */ +class Mapper extends DataType { + + protected $type; + protected $classname; + protected $from; + protected $to; + protected $classpath; + protected $classpathId; + + + function __construct(Project $project) { + $this->project = $project; + } + + /** + * Set the classpath to be used when searching for component being defined + * + * @param Path $classpath An Path object containing the classpath. + */ + public function setClasspath(Path $classpath) { + if ($this->isReference()) { + throw $this->tooManyAttributes(); + } + if ($this->classpath === null) { + $this->classpath = $classpath; + } else { + $this->classpath->append($classpath); + } + } + + /** + * Create the classpath to be used when searching for component being defined + */ + public function createClasspath() { + if ($this->isReference()) { + throw $this->tooManyAttributes(); + } + if ($this->classpath === null) { + $this->classpath = new Path($this->project); + } + return $this->classpath->createPath(); + } + + /** + * Reference to a classpath to use when loading the files. + */ + public function setClasspathRef(Reference $r) { + if ($this->isReference()) { + throw $this->tooManyAttributes(); + } + $this->classpathId = $r->getRefId(); + $this->createClasspath()->setRefid($r); + } + + /** Set the type of FileNameMapper to use. */ + function setType($type) { + if ($this->isReference()) { + throw $this->tooManyAttributes(); + } + $this->type = $type; + } + + /** Set the class name of the FileNameMapper to use. */ + function setClassname($classname) { + if ($this->isReference()) { + throw $this->tooManyAttributes(); + } + $this->classname = $classname; + } + + /** + * Set the argument to FileNameMapper.setFrom + */ + function setFrom($from) { + if ($this->isReference()) { + throw $this->tooManyAttributes(); + } + $this->from = $from; + } + + /** + * Set the argument to FileNameMapper.setTo + */ + function setTo($to) { + if ($this->isReference()) { + throw $this->tooManyAttributes(); + } + $this->to = $to; + } + + /** + * Make this Mapper instance a reference to another Mapper. + * + * You must not set any other attribute if you make it a reference. + */ + function setRefid($r) { + if ($this->type !== null || $this->from !== null || $this->to !== null) { + throw DataType::tooManyAttributes(); + } + parent::setRefid($r); + } + + /** Factory, returns inmplementation of file name mapper as new instance */ + function getImplementation() { + if ($this->isReference()) { + $tmp = $this->getRef(); + return $tmp->getImplementation(); + } + + if ($this->type === null && $this->classname === null) { + throw new BuildException("either type or classname attribute must be set for "); + } + + if ($this->type !== null) { + switch($this->type) { + case 'identity': + $this->classname = 'phing.mappers.IdentityMapper'; + break; + case 'flatten': + $this->classname = 'phing.mappers.FlattenMapper'; + break; + case 'glob': + $this->classname = 'phing.mappers.GlobMapper'; + break; + case 'regexp': + case 'regex': + $this->classname = 'phing.mappers.RegexpMapper'; + break; + case 'merge': + $this->classname = 'phing.mappers.MergeMapper'; + break; + default: + throw new BuildException("Mapper type {$this->type} not known"); + break; + } + } + + // get the implementing class + $cls = Phing::import($this->classname, $this->classpath); + + $m = new $cls; + $m->setFrom($this->from); + $m->setTo($this->to); + + return $m; + } + + /** Performs the check for circular references and returns the referenced Mapper. */ + private function getRef() { + if (!$this->checked) { + $stk = array(); + $stk[] = $this; + $this->dieOnCircularReference($stk, $this->project); + } + + $o = $this->ref->getReferencedObject($this->project); + if (!($o instanceof Mapper)) { + $msg = $this->ref->getRefId()." doesn't denote a mapper"; + throw new BuildException($msg); + } else { + return $o; + } + } +} + + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/Parameter.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/Parameter.php.svn-base new file mode 100644 index 0000000..124c166 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/Parameter.php.svn-base @@ -0,0 +1,99 @@ +. +*/ + +include_once 'phing/types/DataType.php'; + +/* + * A parameter is composed of a name, type and value. Nested + * Parameters are also possible, but the using task/type has + * to support them + * + * @author Manuel Holtgrewe + * @author Yannick Lecaillez + * @package phing.types +*/ +class Parameter extends DataType { + + /** Parameter name */ + protected $name; + + /** Paramter type */ + protected $type; + + /** Parameter value */ + protected $value; + + /** Nested parameters */ + protected $parameters = array(); + + function setName($name) { + $this->name = (string) $name; + } + + function setType($type) { + $this->type = (string) $type; + } + + /** + * Sets value to dynamic register slot. + * @param RegisterSlot $value + */ + public function setListeningValue(RegisterSlot $value) { + $this->value = $value; + } + + function setValue($value) { + $this->value = (string) $value; + } + + function getName() { + return $this->name; + } + + function getType() { + return $this->type; + } + + function getValue() { + if ($this->value instanceof RegisterSlot) { + return $this->value->getValue(); + } else { + return $this->value; + } + } + + /** + * @return Parameter + */ + function createParam() { + $num = array_push($this->parameters, new Parameter()); + return $this->parameters[$num-1]; + } + + /** + * @return array Nested parameters. + */ + function getParams() { + return $this->parameters; + } +} + + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/Parameterizable.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/Parameterizable.php.svn-base new file mode 100644 index 0000000..e0d4138 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/Parameterizable.php.svn-base @@ -0,0 +1,32 @@ +. + */ + +/** + * Parameterizable objects take genric key value pairs. + * + * @author Hans Lellelid, hans@xmpl.org (Phing) + * @author Magesh Umasankar (Ant) + * @package phing.types + */ +interface Parameterizable { + function setParameters($parameters); +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/Path.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/Path.php.svn-base new file mode 100644 index 0000000..7942564 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/Path.php.svn-base @@ -0,0 +1,450 @@ +. + */ + +require_once 'phing/types/DataType.php'; +include_once 'phing/util/PathTokenizer.php'; +include_once 'phing/types/FileSet.php'; + +/** + * This object represents a path as used by include_path or PATH + * environment variable. + * + * This class has been adopted from the Java Ant equivalent. The ability have + * path structures in Phing is important; however, because of how PHP classes interact + * the ability to specify CLASSPATHs makes less sense than Java.Rather than providing + * CLASSPATH for any tasks that take classes as parameters, perhaps a better + * solution in PHP is to have an IncludePath task, which prepends paths to PHP's include_path + * INI variable. This gets around the problem that simply using a path to load the initial + * PHP class is not enough (in most cases the loaded class may assume that it is on the global + * PHP include_path, and will try to load dependent classes accordingly). The other option is + * to provide a way for this class to add paths to the include path, if desired -- or to create + * an IncludePath subclass. Once added, though, when would a path be removed from the include path? + * + *

    + * + * <sometask>
    + *   <somepath>
    + *     <pathelement location="/path/to/file" />
    + *     <pathelement path="/path/to/class2;/path/to/class3" />
    + *     <pathelement location="/path/to/file3" />
    + *   </somepath>
    + * </sometask>
    + *
    + *

    + * The object implemention sometask must provide a method called + * createSomepath which returns an instance of Path. + * Nested path definitions are handled by the Path object and must be labeled + * pathelement.

    + * + * The path element takes a parameter path which will be parsed + * and split into single elements. It will usually be used + * to define a path from an environment variable. + * + * @author Hans Lellelid (Phing) + * @author Thomas.Haas@softwired-inc.com (Ant) + * @author Stefan Bodewig (Ant) + * @package phing.types + */ +class Path extends DataType { + + private $elements = array(); + + /** + * Constructor for internally instantiated objects sets project. + * @param Project $project + * @param string $path (for use by IntrospectionHelper) + */ + public function __construct($project = null, $path = null) { + if ($project !== null) { + $this->setProject($project); + } + if ($path !== null) { + $this->createPathElement()->setPath($path); + } + } + + /** + * Adds a element definition to the path. + * @param $location the location of the element to add (must not be + * null nor empty. + * @throws BuildException + */ + public function setDir(PhingFile $location) { + if ($this->isReference()) { + throw $this->tooManyAttributes(); + } + $this->createPathElement()->setDir($location); + } + + /** + * Parses a path definition and creates single PathElements. + * @param path the path definition. + * @throws BuildException + */ + public function setPath($path) { + if ($this->isReference()) { + throw $this->tooManyAttributes(); + } + $this->createPathElement()->setPath($path); + } + + /** + * Makes this instance in effect a reference to another Path instance. + * + *

    You must not set another attribute or nest elements inside + * this element if you make it a reference.

    + * @throws BuildException + */ + public function setRefid(Reference $r) { + if (!empty($this->elements)) { + throw $this->tooManyAttributes(); + } + $this->elements[] = $r; + parent::setRefid($r); + } + + /** + * Creates the nested <pathelement> element. + * @throws BuildException + */ + public function createPathElement() { + if ($this->isReference()) { + throw $this->noChildrenAllowed(); + } + $pe = new PathElement($this); + $this->elements[] = $pe; + return $pe; + } + + /** + * Adds a nested <fileset> element. + * @throws BuildException + */ + public function addFileset(FileSet $fs) { + if ($this->isReference()) { + throw $this->noChildrenAllowed(); + } + $this->elements[] = $fs; + $this->checked = false; + } + + /** + * Adds a nested <dirset> element. + * @throws BuildException + */ + public function addDirset(DirSet $dset) { + if ($this->isReference()) { + throw $this->noChildrenAllowed(); + } + $this->elements[] = $dset; + $this->checked = false; + } + + /** + * Creates a nested <path> element. + * @throws BuildException + */ + public function createPath() { + if ($this->isReference()) { + throw $this->noChildrenAllowed(); + } + $p = new Path($this->project); + $this->elements[] = $p; + $this->checked = false; + return $p; + } + + /** + * Append the contents of the other Path instance to this. + */ + public function append(Path $other) { + if ($other === null) { + return; + } + $l = $other->listPaths(); + foreach($l as $path) { + if (!in_array($path, $this->elements, true)) { + $this->elements[] = $path; + } + } + } + + /** + * Adds the components on the given path which exist to this + * Path. Components that don't exist, aren't added. + * + * @param Path $source - Source path whose components are examined for existence. + */ + public function addExisting(Path $source) { + $list = $source->listPaths(); + foreach($list as $el) { + $f = null; + if ($this->project !== null) { + $f = $this->project->resolveFile($el); + } else { + $f = new PhingFile($el); + } + + if ($f->exists()) { + $this->setDir($f); + } else { + $this->log("dropping " . $f->__toString() . " from path as it doesn't exist", + Project::MSG_VERBOSE); + } + } + } + + /** + * Returns all path elements defined by this and nested path objects. + * @return array List of path elements. + */ + public function listPaths() { + if (!$this->checked) { + // make sure we don't have a circular reference here + $stk = array(); + array_push($stk, $this); + $this->dieOnCircularReference($stk, $this->project); + } + + $result = array(); + for ($i = 0, $elSize=count($this->elements); $i < $elSize; $i++) { + $o = $this->elements[$i]; + if ($o instanceof Reference) { + $o = $o->getReferencedObject($this->project); + // we only support references to paths right now + if (!($o instanceof Path)) { + $msg = $r->getRefId() . " doesn't denote a path"; + throw new BuildException($msg); + } + } + + if (is_string($o)) { + $result[] = $o; + } elseif ($o instanceof PathElement) { + $parts = $o->getParts(); + if ($parts === null) { + throw new BuildException("You must either set location or" + . " path on "); + } + foreach($parts as $part) { + $result[] = $part; + } + } elseif ($o instanceof Path) { + $p = $o; + if ($p->getProject() === null) { + $p->setProject($this->getProject()); + } + $parts = $p->listPaths(); + foreach($parts as $part) { + $result[] = $part; + } + } elseif ($o instanceof DirSet) { + $dset = $o; + $ds = $dset->getDirectoryScanner($this->project); + $dirstrs = $ds->getIncludedDirectories(); + $dir = $dset->getDir($this->project); + foreach($dirstrs as $dstr) { + $d = new PhingFile($dir, $dstr); + $result[] = $d->getAbsolutePath(); + } + } elseif ($o instanceof FileList) { + $fl = $o; + $dirstrs = $fl->getFiles($this->project); + $dir = $fl->getDir($this->project); + foreach($dirstrs as $dstr) { + $d = new PhingFile($dir, $dstr); + $result[] = $d->getAbsolutePath(); + } + } + } + + return array_unique($result); + } + + + /** + * Returns a textual representation of the path, which can be used as + * CLASSPATH or PATH environment variable definition. + * @return string A textual representation of the path. + */ + public function __toString() { + + $list = $this->listPaths(); + + // empty path return empty string + if (empty($list)) { + return ""; + } + + return implode(PATH_SEPARATOR, $list); + } + + /** + * Splits a PATH (with : or ; as separators) into its parts. + * @param Project $project + * @param string $source + */ + public static function translatePath(Project $project, $source) { + $result = array(); + if ($source == null) { + return ""; + } + + $tok = new PathTokenizer($source); + while ($tok->hasMoreTokens()) { + $pathElement = $tok->nextToken(); + try { + $element = self::resolveFile($project, $pathElement); + for ($i = 0, $_i=strlen($element); $i < $_i; $i++) { + self::translateFileSep($element, $i); + } + $result[] = $element; + } catch (BuildException $e) { + $this->project->log("Dropping path element " . $pathElement + . " as it is not valid relative to the project", + Project::MSG_VERBOSE); + } + } + + return $result; + } + + /** + * Returns its argument with all file separator characters + * replaced so that they match the local OS conventions. + */ + public static function translateFile($source) { + if ($source == null) { + return ""; + } + + $result = $source; + for ($i = 0, $_i=strlen($source); $i < $_i; $i++) { + self::translateFileSep($result, $i); + } + + return $result; + } + + /** + * Translates all occurrences of / or \ to correct separator of the + * current platform and returns whether it had to do any + * replacements. + */ + protected static function translateFileSep(&$buffer, $pos) { + if ($buffer{$pos} == '/' || $buffer{$pos} == '\\') { + $buffer{$pos} = DIRECTORY_SEPARATOR; + return true; + } + return false; + } + + /** + * How many parts does this Path instance consist of. + * DEV NOTE: expensive call! list is generated, counted, and then + * discareded. + * @return int + */ + public function size() { + return count($this->listPaths()); + } + + /** + * Return a Path that holds the same elements as this instance. + */ + public function __clone() { + $p = new Path($this->project); + $p->append($this); + return $p; + } + + /** + * Overrides the version of DataType to recurse on all DataType + * child elements that may have been added. + * @throws BuildException + */ + public function dieOnCircularReference(&$stk, Project $p) { + + if ($this->checked) { + return; + } + + // elements can contain strings, FileSets, Reference, etc. + foreach($this->elements as $o) { + + if ($o instanceof Reference) { + $o = $o->getReferencedObject($p); + } + + if ($o instanceof DataType) { + if (in_array($o, $stk, true)) { + throw $this->circularReference(); + } else { + array_push($stk, $o); + $o->dieOnCircularReference($stk, $p); + array_pop($stk); + } + } + } + + $this->checked = true; + } + + /** + * Resolve a filename with Project's help - if we know one that is. + * + *

    Assume the filename is absolute if project is null.

    + */ + private static function resolveFile(Project $project, $relativeName) { + if ($project !== null) { + $f = $project->resolveFile($relativeName); + return $f->getAbsolutePath(); + } + return $relativeName; + } + +} + + +/** + * Helper class, holds the nested <pathelement> values. + */ +class PathElement { + + private $parts = array(); + private $outer; + + public function __construct(Path $outer) { + $this->outer = $outer; + } + + public function setDir(PhingFile $loc) { + $this->parts = array(Path::translateFile($loc->getAbsolutePath())); + } + + public function setPath($path) { + $this->parts = Path::translatePath($this->outer->getProject(), $path); + } + + public function getParts() { + return $this->parts; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/PatternSet.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/PatternSet.php.svn-base new file mode 100644 index 0000000..029664d --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/PatternSet.php.svn-base @@ -0,0 +1,491 @@ +. + */ + +include_once 'phing/system/io/FileReader.php'; +include_once 'phing/types/DataType.php'; + +/** + * The patternset storage component. Carries all necessary data and methods + * for the patternset stuff. + * + * @author Andreas Aderhold, andi@binarycloud.com + * @version $Revision: 1.8 $ + * @package phing.types + */ +class PatternSet extends DataType { + + private $includeList = array(); + private $excludeList = array(); + private $includesFileList = array(); + private $excludesFileList = array(); + + /** + * Makes this instance in effect a reference to another PatternSet + * instance. + * You must not set another attribute or nest elements inside + * this element if you make it a reference. + */ + function setRefid(Reference $r) { + if (!empty($this->includeList) || !empty($this->excludeList)) { + throw $this->tooManyAttributes(); + } + parent::setRefid($r); + } + + + /** + * Add a name entry on the include list + * + * @returns PatternSetNameEntry Reference to object + * @throws BuildException + */ + function createInclude() { + if ($this->isReference()) { + throw $this->noChildrenAllowed(); + } + return $this->addPatternToList($this->includeList); + } + + + /** + * Add a name entry on the include files list + * + * @returns PatternSetNameEntry Reference to object + * @throws BuildException + */ + function createIncludesFile() { + if ($this->isReference()) { + throw $this->noChildrenAllowed(); + } + return $this->addPatternToList($this->includesFileList); + } + + /** + * Add a name entry on the exclude list + * + * @returns PatternSetNameEntry Reference to object + * @throws BuildException + */ + function createExclude() { + if ($this->isReference()) { + throw $this->noChildrenAllowed(); + } + return $this->addPatternToList($this->excludeList); + } + + /** + * add a name entry on the exclude files list + * + * @returns PatternSetNameEntry Reference to object + * @throws BuildException + */ + function createExcludesFile() { + if ($this->isReference()) { + throw $this->noChildrenAllowed(); + return; + } + return $this->addPatternToList($this->excludesFileList); + } + + + /** + * Sets the set of include patterns. Patterns may be separated by a comma + * or a space. + * + * @param string the string containing the include patterns + * @returns void + * @throws BuildException + */ + function setIncludes($includes) { + if ($this->isReference()) { + throw $this->tooManyAttributes(); + } + if ($includes !== null && strlen($includes) > 0) { + $tok = strtok($includes, ", "); + while ($tok !== false) { + $o = $this->createInclude(); + $o->setName($tok); + $tok = strtok(", "); + } + } + } + + + /** + * Sets the set of exclude patterns. Patterns may be separated by a comma + * or a space. + * + * @param string the string containing the exclude patterns + * @returns void + * @throws BuildException + */ + function setExcludes($excludes) { + if ($this->isReference()) { + throw $this->tooManyAttributes(); + } + if ($excludes !== null && strlen($excludes) > 0) { + $tok = strtok($excludes, ", "); + while ($tok !== false) { + $o = $this->createExclude(); + $o->setName($tok); + $tok = strtok(", "); + } + } + } + + /** + * add a name entry to the given list + * + * @param array List onto which the nameentry should be added + * @returns PatternSetNameEntry Reference to the created PsetNameEntry instance + */ + private function addPatternToList(&$list) { + $num = array_push($list, new PatternSetNameEntry()); + return $list[$num-1]; + } + + /** + * Sets the name of the file containing the includes patterns. + * + * @param includesFile The file to fetch the include patterns from. + */ + function setIncludesFile($includesFile) { + if ($this->isReference()) { + throw $this->tooManyAttributes(); + } + if ($includesFile instanceof File) { + $includesFile = $includesFile->getPath(); + } + $o = $this->createIncludesFile(); + $o->setName($includesFile); + } + + /** + * Sets the name of the file containing the excludes patterns. + * + * @param excludesFile The file to fetch the exclude patterns from. + */ + function setExcludesFile($excludesFile) { + if ($this->isReference()) { + throw $this->tooManyAttributes(); + } + if ($excludesFile instanceof File) { + $excludesFile = $excludesFile->getPath(); + } + $o = $this->createExcludesFile(); + $o->setName($excludesFile); + } + + + /** + * Reads path matching patterns from a file and adds them to the + * includes or excludes list + */ + private function readPatterns(PhingFile $patternfile, &$patternlist, Project $p) { + $patternReader = null; + try { + // Get a FileReader + $patternReader = new BufferedReader(new FileReader($patternfile)); + + // Create one NameEntry in the appropriate pattern list for each + // line in the file. + $line = $patternReader->readLine(); + while ($line !== null) { + if (!empty($line)) { + $line = $p->replaceProperties($line); + $this->addPatternToList($patternlist)->setName($line); + } + $line = $patternReader->readLine(); + } + + } catch (IOException $ioe) { + $msg = "An error occured while reading from pattern file: " . $patternfile->__toString(); + if($patternReader) $patternReader->close(); + throw new BuildException($msg, $ioe); + } + + $patternReader->close(); + } + + + /** Adds the patterns of the other instance to this set. */ + function append($other, $p) { + if ($this->isReference()) { + throw new BuildException("Cannot append to a reference"); + } + + $incl = $other->getIncludePatterns($p); + if ($incl !== null) { + foreach($incl as $incl_name) { + $o = $this->createInclude(); + $o->setName($incl_name); + } + } + + $excl = $other->getExcludePatterns($p); + if ($excl !== null) { + foreach($excl as $excl_name) { + $o = $this->createExclude(); + $o->setName($excl_name); + } + } + } + + /** Returns the filtered include patterns. */ + function getIncludePatterns(Project $p) { + if ($this->isReference()) { + $o = $this->getRef($p); + return $o->getIncludePatterns($p); + } else { + $this->readFiles($p); + return $this->makeArray($this->includeList, $p); + } + } + + /** Returns the filtered exclude patterns. */ + function getExcludePatterns(Project $p) { + if ($this->isReference()) { + $o = $this->getRef($p); + return $o->getExcludePatterns($p); + } else { + $this->readFiles($p); + return $this->makeArray($this->excludeList, $p); + } + } + + /** helper for FileSet. */ + function hasPatterns() { + return (boolean) count($this->includesFileList) > 0 || count($this->excludesFileList) > 0 + || count($this->includeList) > 0 || count($this->excludeList) > 0; + } + + /** + * Performs the check for circular references and returns the + * referenced PatternSet. + */ + function getRef(Project $p) { + if (!$this->checked) { + $stk = array(); + array_push($stk, $this); + $this->dieOnCircularReference($stk, $p); + } + $o = $this->ref->getReferencedObject($p); + if (!($o instanceof PatternSet)) { + $msg = $this->ref->getRefId()." doesn't denote a patternset"; + throw new BuildException($msg); + } else { + return $o; + } + } + + /** Convert a array of PatternSetNameEntry elements into an array of Strings. */ + private function makeArray(&$list, Project $p) { + + if (count($list) === 0) { + return null; + } + + $tmpNames = array(); + foreach($list as $ne) { + $pattern = (string) $ne->evalName($p); + if ($pattern !== null && strlen($pattern) > 0) { + array_push($tmpNames, $pattern); + } + } + return $tmpNames; + } + + /** Read includesfile or excludesfile if not already done so. */ + private function readFiles(Project $p) { + if (!empty($this->includesFileList)) { + foreach($this->includesFileList as $ne) { + $fileName = (string) $ne->evalName($p); + if ($fileName !== null) { + $inclFile = $p->resolveFile($fileName); + if (!$inclFile->exists()) { + throw new BuildException("Includesfile ".$inclFile->getAbsolutePath()." not found."); + } + $this->readPatterns($inclFile, $this->includeList, $p); + } + } + $this->includesFileList = array(); + } + + if (!empty($this->excludesFileList)) { + foreach($this->excludesFileList as $ne) { + $fileName = (string) $ne->evalName($p); + if ($fileName !== null) { + $exclFile = $p->resolveFile($fileName); + if (!$exclFile->exists()) { + throw new BuildException("Excludesfile ".$exclFile->getAbsolutePath()." not found."); + return; + } + $this->readPatterns($exclFile, $this->excludeList, $p); + } + } + $this->excludesFileList = array(); + } + } + + + function toString() { + + // We can't compile includeList into array because, toString() does + // not know about project: + // + // $includes = $this->makeArray($this->includeList, $this->project); + // $excludes = $this->makeArray($this->excludeList, $this->project); + + if (empty($this->includeList)) { + $includes = "empty"; + } else { + $includes = ""; + foreach($this->includeList as $ne) { + $includes .= $ne->toString() . ","; + } + $includes = rtrim($includes, ","); + } + + if (empty($this->excludeList)) { + $excludes = "empty"; + } else { + $excludes = ""; + foreach($this->excludeList as $ne) { + $excludes .= $ne->toString() . ","; + } + $excludes = rtrim($excludes, ","); + } + + return "patternSet{ includes: $includes excludes: $excludes }"; + } +} + + +/** + * "Internal" class for holding an include/exclude pattern. + */ +class PatternSetNameEntry { + + /** + * The pattern. + * @var string + */ + private $name; + + /** + * The if-condition property for this pattern to be applied. + * @var string + */ + private $ifCond; + + /** + * The unless-condition property for this pattern to be applied. + * @var string + */ + private $unlessCond; + + /** + * An alias for the setName() method. + * @see setName() + * @param string $pattern + */ + public function setPattern($pattern) { + $this->setName($pattern); + } + + /** + * Set the pattern text. + * @param string $name The pattern + */ + public function setName($name) { + $this->name = (string) $name; + } + + /** + * Sets an if-condition property for this pattern to match. + * @param string $cond + */ + public function setIf($cond) { + $this->ifCond = (string) $cond; + } + + + /** + * Sets an unless-condition property for this pattern to match. + * @param string $cond + */ + public function setUnless($cond) { + $this->unlessCond = (string) $cond; + } + + /** + * Get the pattern text. + * @return string The pattern. + */ + public function getName() { + return $this->name; + } + + /** + * Evaluates the pattern. + * @return string The pattern or null if it is ruled out by a condition. + */ + public function evalName(Project $project) { + return $this->valid($project) ? $this->name : null; + } + + + /** + * Checks whether pattern should be applied based on whether the if and unless + * properties are set in project. + * @param Project $project + * @return boolean + */ + public function valid(Project $project) { + if ($this->ifCond !== null && $project->getProperty($this->ifCond) === null) { + return false; + } else if ($this->unlessCond !== null && $project->getProperty($this->unlessCond) !== null) { + return false; + } + return true; + } + + /** + * Gets a string representation of this pattern. + * @return string + */ + public function toString() { + $buf = $this->name; + if (($this->ifCond !== null) || ($this->unlessCond !== null)) { + $buf .= ":"; + $connector = ""; + + if ($this->ifCond !== null) { + $buf .= "if->{$this->ifCond}"; + $connector = ";"; + } + if ($this->unlessCond !== null) { + $buf .= "$connector unless->{$this->unlessCond}"; + } + } + return $buf; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/PhingFilterReader.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/PhingFilterReader.php.svn-base new file mode 100644 index 0000000..bb676bb --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/PhingFilterReader.php.svn-base @@ -0,0 +1,136 @@ +. +*/ + +include_once 'phing/types/DataType.php'; +include_once 'phing/types/Parameter.php'; + +/* + * A PhingFilterReader is a wrapper class that encloses the className + * and configuration of a Configurable FilterReader. + * + * @author Yannick Lecaillez + * @version $Revision: 1.9 $ + * @see FilterReader + * @package phing.types +*/ +class PhingFilterReader extends DataType { + + private $className; + private $parameters = array(); + private $classPath; + + function setClassName($className) { + $this->className = $className; + } + + function getClassName() { + return $this->className; + } + + /** + * Set the classpath to load the FilterReader through (attribute). + * @param Path $classpath + */ + function setClasspath(Path $classpath) { + if ( $this->isReference() ) { + throw $this->tooManyAttributes(); + } + if ( $this->classPath === null ) { + $this->classPath = $classpath; + } else { + $this->classPath->append($classpath); + } + } + + /* + * Set the classpath to load the FilterReader through (nested element). + */ + function createClasspath() { + if ( $this->isReference() ) { + throw $this->noChildrenAllowed(); + } + if ( $this->classPath === null ) { + $this->classPath = new Path($this->project); + } + return $this->classPath->createPath(); + } + + function getClasspath() { + return $this->classPath; + } + + function setClasspathRef(Reference $r) { + if ( $this->isReference() ) { + throw $this->tooManyAttributes(); + } + $o = $this->createClasspath(); + $o->setRefid($r); + } + + function addParam(Parameter $param) { + $this->parameters[] = $param; + } + + function createParam() { + $num = array_push($this->parameters, new Parameter()); + return $this->parameters[$num-1]; + } + + function getParams() { + // We return a COPY + $ret = array(); + for($i=0,$size=count($this->parameters); $i < $size; $i++) { + $ret[] = clone $this->parameters[$i]; + } + return $ret; + } + + /* + * Makes this instance in effect a reference to another PhingFilterReader + * instance. + * + *

    You must not set another attribute or nest elements inside + * this element if you make it a reference.

    + * + * @param Reference $r the reference to which this instance is associated + * @exception BuildException if this instance already has been configured. + */ + function setRefid(Reference $r) { + if ( (count($this->parameters) !== 0) || ($this->className !== null) ) { + throw $this->tooManyAttributes(); + } + $o = $r->getReferencedObject($this->getProject()); + if ( $o instanceof PhingFilterReader ) { + $this->setClassName($o->getClassName()); + $this->setClasspath($o->getClassPath()); + foreach($o->getParams() as $p) { + $this->addParam($p); + } + } else { + $msg = $r->getRefId()." doesn\'t refer to a PhingFilterReader"; + throw new BuildException($msg); + } + + parent::setRefid($r); + } +} + + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/Reference.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/Reference.php.svn-base new file mode 100644 index 0000000..48c142f --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/Reference.php.svn-base @@ -0,0 +1,56 @@ +. + */ + +/** Class to hold a reference to another object in the project. + * @package phing.types + */ +class Reference { + + protected $refid; + + function __construct($id = null) { + if ($id !== null) { + $this->setRefId($id); + } + } + + function setRefId($id) { + $this->refid = (string) $id; + } + + function getRefId() { + return $this->refid; + } + + /** returns reference to object in references container of project */ + function getReferencedObject($project) { + if ($this->refid === null) { + throw new BuildException("No reference specified"); + } + $refs = $project->getReferences(); + $o = @$refs[$this->refid]; + if (!is_object($o)) { + throw new BuildException("Reference {$this->refid} not found."); + } + return $o; + } +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/RegularExpression.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/RegularExpression.php.svn-base new file mode 100644 index 0000000..52db66e --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/RegularExpression.php.svn-base @@ -0,0 +1,105 @@ +. +*/ + +include_once 'phing/types/DataType.php'; +include_once 'phing/Project.php'; +include_once 'phing/util/regexp/Regexp.php'; + +/* + * A regular expression datatype. Keeps an instance of the + * compiled expression for speed purposes. This compiled + * expression is lazily evaluated (it is compiled the first + * time it is needed). The syntax is the dependent on which + * regular expression type you are using. + * + * @author Yannick Lecaillez + * @version $Revision: 1.6 $ $Date$ + * @access public + * @see phing.util.regex.RegexMatcher + * @package phing.types +*/ +class RegularExpression extends DataType { + + private $regexp = null; + private $ignoreCase = false; + + function __construct() { + $this->regexp = new Regexp(); + } + + function setPattern($pattern) { + $this->regexp->setPattern($pattern); + } + + function setReplace($replace) { + $this->regexp->setReplace($replace); + } + + function getPattern($p) { + if ( $this->isReference() ) { + $ref = $this->getRef($p); + return $ref->getPattern($p); + } + return $this->regexp->getPattern(); + } + + function getReplace($p) { + if ( $this->isReference() ) { + $ref = $this->getRef($p); + return $ref->getReplace($p); + } + + return $this->regexp->getReplace(); + } + + function setIgnoreCase($bit) { + $this->regexp->setIgnoreCase($bit); + } + + function getIgnoreCase() { + return $this->regexp->getIgnoreCase(); + } + + function getRegexp(Project $p) { + if ( $this->isReference() ) { + $ref = $this->getRef($p); + return $ref->getRegexp($p); + } + return $this->regexp; + } + + function getRef(Project $p) { + if ( !$this->checked ) { + $stk = array(); + array_push($stk, $this); + $this->dieOnCircularReference($stk, $p); + } + + $o = $this->ref->getReferencedObject($p); + if ( !($o instanceof RegularExpression) ) { + throw new BuildException($this->ref->getRefId()." doesn't denote a RegularExpression"); + } else { + return $o; + } + } +} + + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/TokenReader.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/TokenReader.php.svn-base new file mode 100644 index 0000000..d804b38 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/TokenReader.php.svn-base @@ -0,0 +1,66 @@ +. +*/ + +// include_once 'phing/system/io/Reader.php'; // really this is unrelated to Reader +include_once 'phing/system/io/IOException.php'; +include_once 'phing/filters/ReplaceTokens.php'; // For class Token + +/** + * Abstract class for TokenReaders. + * + * @author Manuel Holtgewe + * @version $Revision: 1.5 $ + * @package phing.filters.util + */ +abstract class TokenReader { + + /** + * Reference to the Project the TokenReader is used in. + * @var Project + */ + protected $project; + + /** + * Constructor + * @param object Reference to the project the TokenReader is used in. + */ + function __construct(Project $project) { + $this->project = $project; + } + + /** + * Utility function for logging + */ + function log($level, $msg) { + $this->project->log($level, $msg); + } + + /** + * Reads the next token from the Reader + * + * @throws IOException - On error + * @return string + */ + abstract public function readToken(); + +} + + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/TokenSource.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/TokenSource.php.svn-base new file mode 100644 index 0000000..1bc91e9 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/TokenSource.php.svn-base @@ -0,0 +1,157 @@ +. +*/ + +require_once 'phing/types/DataType.php'; +include_once 'phing/util/StringHelper.php'; + +/** + * A parameter is composed of a name, type and value. + * + * Example of usage: + * + * + * + * + * + * + * + * + * or: + * + * + * + * + * + * + * + * @author Yannick Lecaillez + * @package phing.types + */ +class TokenSource extends DataType { + + /** + * String to hold the path to the TokenReader + * @var string + */ + protected $classname = null; + + /** + * Array holding parameters for the wrapped TokenReader. + * @var array + */ + protected $parameters = array(); + + /** + * Reference to the TokenReader used by this TokenSource + * @var TokenReader + */ + protected $reader; + + /** + * Array with key/value pairs of tokens + */ + protected $tokens = array(); + + /** + * This method is called to load the sources from the reader + * into the buffer of the source. + */ + function load() { + // Create new Reader + if ($this->classname === null) { + throw new BuildException("No Classname given to TokenSource."); + } + + $classname = Phing::import($this->classname); + $this->reader = new $classname($this->project); + + // Configure Reader + $this->configureTokenReader($this->reader); + + // Load Tokens + try { + while ($token = $this->reader->readToken()) { + $this->tokens[] = $token; + } + } catch (BuildException $e) { + $this->log("Error reading TokenSource: " . $e->getMessage(), Project::MSG_WARN); + } catch (IOException $e) { + $this->log("Error reading TokenSource: " . $e->getMessage(), Project::MSG_WARN); + } + } + + /** + * This function uses the wrapper to read the tokens and then + * returns them. + * + * @access public + */ + function getTokens() { + if ($this->tokens === null) + $this->Load(); + + return $this->tokens; + } + + /** + * Configures a TokenReader with the parameters passed to the + * TokenSource. + * @param TokenReader $reader + */ + private function configureTokenReader(TokenReader $reader) { + $count = count($this->parameters); + for ($i = 0; $i < $count; $i++) { + $method_name = "Set" . $this->parameters[$i]->getName(); + $value = $this->parameters[$i]->getValue(); + $reader->$method_name($value); + } + } + + /** + * Set the classname (dot-path) to use for handling token replacement. + * @param string $c + */ + function setClassname($c) { + $this->classname = $c; + } + + /** + * Returns the qualified classname (dot-path) to use for handling token replacement. + * @return string + */ + function getClassname() { + return $this->classname; + } + + /** + * Create nested tag. + * Uses standard name/value Parameter class. + * @return Parameter + */ + function createParam() { + $num = array_push($this->parameters, new Parameter()); + return $this->parameters[$num-1]; + } +} + + + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/defaults.properties.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/defaults.properties.svn-base new file mode 100644 index 0000000..a2d8635 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/.svn/text-base/defaults.properties.svn-base @@ -0,0 +1,13 @@ +# phing default types +commandline=phing.types.Commandline +fileset=phing.types.FileSet +dirset=phing.types.DirSet +filelist=phing.types.FileList +patternset=phing.types.PatternSet +mapper=phing.types.Mapper +filterchain=phing.types.FilterChain +filterreader=phing.types.PhingFilterReader +regexp=phing.types.RegularExpression +param=phing.types.Parameter +path=phing.types.Path +selector=phing.types.selectors.SelectSelector \ No newline at end of file diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/AbstractFileSet.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/AbstractFileSet.php new file mode 100644 index 0000000..321b689 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/AbstractFileSet.php @@ -0,0 +1,570 @@ +. + */ + +include_once 'phing/system/io/PhingFile.php'; +include_once 'phing/types/DataType.php'; +include_once 'phing/types/PatternSet.php'; +include_once 'phing/types/selectors/BaseSelector.php'; +include_once 'phing/types/selectors/SelectorContainer.php'; +include_once 'phing/types/selectors/BaseSelectorContainer.php'; + +// Load all of the selectors (not really necessary but +// helps reveal parse errors right away) + +include_once 'phing/types/selectors/AndSelector.php'; +include_once 'phing/types/selectors/ContainsSelector.php'; +include_once 'phing/types/selectors/ContainsRegexpSelector.php'; +include_once 'phing/types/selectors/DateSelector.php'; +include_once 'phing/types/selectors/DependSelector.php'; +include_once 'phing/types/selectors/DepthSelector.php'; +include_once 'phing/types/selectors/ExtendSelector.php'; +include_once 'phing/types/selectors/FilenameSelector.php'; +include_once 'phing/types/selectors/MajoritySelector.php'; +include_once 'phing/types/selectors/NoneSelector.php'; +include_once 'phing/types/selectors/NotSelector.php'; +include_once 'phing/types/selectors/OrSelector.php'; +include_once 'phing/types/selectors/PresentSelector.php'; +include_once 'phing/types/selectors/SizeSelector.php'; +include_once 'phing/types/selectors/TypeSelector.php'; + +include_once 'phing/util/DirectoryScanner.php'; + +/** + * The FileSet class provides methods and properties for accessing + * and managing filesets. It extends ProjectComponent and thus inherits + * all methods and properties (not explicitly declared). See ProjectComponent + * for further detail. + * + * TODO: + * - merge this with patternsets: FileSet extends PatternSet !!! + * requires additional mods to the parsing algo + * [HL] .... not sure if that really makes so much sense. I think + * that perhaps they should use common utility class if there really + * is that much shared functionality + * + * @author Andreas Aderhold + * @author Hans Lellelid + * @version $Revision: 1.15 $ $Date: 2007-02-05 16:19:00 +0100 (lun 05 de feb de 2007) $ + * @see ProjectComponent + * @package phing.types + */ +class AbstractFileSet extends DataType implements SelectorContainer { + + // These vars are public for cloning purposes + + /** + * @var boolean + */ + public $useDefaultExcludes = true; + + /** + * @var PatternSet + */ + public $defaultPatterns; + + public $additionalPatterns = array(); + public $dir; + public $isCaseSensitive = true; + public $selectors = array(); + + function __construct($fileset = null) { + if ($fileset !== null && ($fileset instanceof FileSet)) { + $this->dir = $fileset->dir; + $this->defaultPatterns = $fileset->defaultPatterns; + $this->additionalPatterns = $fileset->additionalPatterns; + $this->useDefaultExcludes = $fileset->useDefaultExcludes; + $this->isCaseSensitive = $fileset->isCaseSensitive; + $this->selectors = $fileset->selectors; + } + $this->defaultPatterns = new PatternSet(); + } + + + /** + * Makes this instance in effect a reference to another PatternSet + * instance. + * You must not set another attribute or nest elements inside + * this element if you make it a reference. + */ + function setRefid(Reference $r) { + if ((isset($this->dir) && !is_null($this->dir)) || $this->defaultPatterns->hasPatterns()) { + throw $this->tooManyAttributes(); + } + if (!empty($this->additionalPatterns)) { + throw $this->noChildrenAllowed(); + } + if (!empty($this->selectors)) { + throw $this->noChildrenAllowed(); + } + parent::setRefid($r); + } + + + function setDir($dir) { + if ($this->isReference()) { + throw $this->tooManyAttributes(); + } + if ($dir instanceof PhingFile) { + $dir = $dir->getPath(); + } + $this->dir = new PhingFile((string) $dir); + } + + + function getDir(Project $p) { + if ($this->isReference()) { + return $this->getRef($p)->getDir($p); + } + return $this->dir; + } + + + function createPatternSet() { + if ($this->isReference()) { + throw $this->noChildrenAllowed(); + } + $num = array_push($this->additionalPatterns, new PatternSet()); + return $this->additionalPatterns[$num-1]; + } + + /** + * add a name entry on the include list + */ + function createInclude() { + if ($this->isReference()) { + throw $this->noChildrenAllowed(); + } + return $this->defaultPatterns->createInclude(); + } + + /** + * add a name entry on the include files list + */ + function createIncludesFile() { + if ($this->isReference()) { + throw $this->noChildrenAllowed(); + } + return $this->defaultPatterns->createIncludesFile(); + } + + /** + * add a name entry on the exclude list + */ + function createExclude() { + if ($this->isReference()) { + throw $this->noChildrenAllowed(); + } + return $this->defaultPatterns->createExclude(); + } + + /** + * add a name entry on the include files list + */ + function createExcludesFile() { + if ($this->isReference()) { + throw $this->noChildrenAllowed(); + return; + } + return $this->defaultPatterns->createExcludesFile(); + } + + /** + * Sets the set of include patterns. Patterns may be separated by a comma + * or a space. + */ + function setIncludes($includes) { + if ($this->isReference()) { + throw $this->tooManyAttributes(); + } + $this->defaultPatterns->setIncludes($includes); + } + + /** + * Sets the set of exclude patterns. Patterns may be separated by a comma + * or a space. + */ + function setExcludes($excludes) { + if ($this->isReference()) { + throw $this->tooManyAttributes(); + } + $this->defaultPatterns->setExcludes($excludes); + } + + /** + * Sets the name of the file containing the includes patterns. + * + * @param $incl The file to fetch the include patterns from. + * @throws BE + */ + function setIncludesfile($incl) { + if ($this->isReference()) { + throw $this->tooManyAttributes(); + } + $this->defaultPatterns->setIncludesfile($incl); + } + + /** + * Sets the name of the file containing the includes patterns. + * + * @param $excl The file to fetch the exclude patterns from. + * @throws BE + */ + function setExcludesfile($excl) { + if ($this->isReference()) { + throw $this->tooManyAttributes(); + } + $this->defaultPatterns->setExcludesfile($excl); + } + + /** + * Sets whether default exclusions should be used or not. + * + * @param $useDefaultExcludes "true"|"on"|"yes" when default exclusions + * should be used, "false"|"off"|"no" when they + * shouldn't be used. + */ + function setDefaultexcludes($useDefaultExcludes) { + if ($this->isReference()) { + throw $this->tooManyAttributes(); + } + $this->useDefaultExcludes = $useDefaultExcludes; + } + + /** + * Sets case sensitivity of the file system + */ + function setCaseSensitive($isCaseSensitive) { + $this->isCaseSensitive = $isCaseSensitive; + } + + /** returns a reference to the dirscanner object belonging to this fileset */ + function getDirectoryScanner(Project $p) { + if ($this->isReference()) { + $o = $this->getRef($p); + return $o->getDirectoryScanner($p); + } + + if ($this->dir === null) { + throw new BuildException("No directory specified for fileset."); + } + if (!$this->dir->exists()) { + throw new BuildException("Directory ".$this->dir->getAbsolutePath()." not found."); + } + if (!$this->dir->isDirectory()) { + throw new BuildException($this->dir->getAbsolutePath()." is not a directory."); + } + $ds = new DirectoryScanner(); + $this->setupDirectoryScanner($ds, $p); + $ds->scan(); + return $ds; + } + + /** feed dirscanner with infos defined by this fileset */ + protected function setupDirectoryScanner(DirectoryScanner $ds, Project $p) { + if ($ds === null) { + throw new Exception("DirectoryScanner cannot be null"); + } + // FIXME - pass dir directly wehn dirscanner supports File + $ds->setBasedir($this->dir->getPath()); + + foreach($this->additionalPatterns as $addPattern) { + $this->defaultPatterns->append($addPattern, $p); + } + + $ds->setIncludes($this->defaultPatterns->getIncludePatterns($p)); + $ds->setExcludes($this->defaultPatterns->getExcludePatterns($p)); + + $p->log("FileSet: Setup file scanner in dir " . $this->dir->__toString() . " with " . $this->defaultPatterns->toString(), Project::MSG_DEBUG); + + if ($ds instanceof SelectorScanner) { + $ds->setSelectors($this->getSelectors($p)); + } + + if ($this->useDefaultExcludes) { + $ds->addDefaultExcludes(); + } + $ds->setCaseSensitive($this->isCaseSensitive); + } + + + /** + * Performs the check for circular references and returns the + * referenced FileSet. + */ + function getRef(Project $p) { + if (!$this->checked) { + $stk = array(); + array_push($stk, $this); + $this->dieOnCircularReference($stk, $p); + } + + $o = $this->ref->getReferencedObject($p); + if (!($o instanceof FileSet)) { + $msg = $this->ref->getRefId()." doesn't denote a fileset"; + throw new BuildException($msg); + } else { + return $o; + } + } + + // SelectorContainer methods + + /** + * Indicates whether there are any selectors here. + * + * @return boolean Whether any selectors are in this container + */ + public function hasSelectors() { + if ($this->isReference() && $this->getProject() !== null) { + return $this->getRef($this->getProject())->hasSelectors(); + } + return !empty($this->selectors); + } + + /** + * Indicates whether there are any patterns here. + * + * @return boolean Whether any patterns are in this container. + */ + public function hasPatterns() { + + if ($this->isReference() && $this->getProject() !== null) { + return $this->getRef($this->getProject())->hasPatterns(); + } + + if ($this->defaultPatterns->hasPatterns($this->getProject())) { + return true; + } + + for($i=0,$size=count($this->additionalPatterns); $i < $size; $i++) { + $ps = $this->additionalPatterns[$i]; + if ($ps->hasPatterns($this->getProject())) { + return true; + } + } + + return false; + } + + /** + * Gives the count of the number of selectors in this container + * + * @return int The number of selectors in this container + */ + public function selectorCount() { + if ($this->isReference() && $this->getProject() !== null) { + try { + return $this->getRef($this->getProject())->selectorCount(); + } catch (Exception $e) { + throw $e; + } + } + return count($this->selectors); + } + + /** + * Returns the set of selectors as an array. + * + * @return an array of selectors in this container + */ + public function getSelectors(Project $p) { + if ($this->isReference()) { + return $this->getRef($p)->getSelectors($p); + } else { + // *copy* selectors + $result = array(); + for($i=0,$size=count($this->selectors); $i < $size; $i++) { + $result[] = clone $this->selectors[$i]; + } + return $result; + } + } + + /** + * Returns an array for accessing the set of selectors. + * + * @return array The array of selectors + */ + public function selectorElements() { + if ($this->isReference() && $this->getProject() !== null) { + return $this->getRef($this->getProject())->selectorElements(); + } + return $this->selectors; + } + + /** + * Add a new selector into this container. + * + * @param selector the new selector to add + */ + public function appendSelector(FileSelector $selector) { + if ($this->isReference()) { + throw $this->noChildrenAllowed(); + } + $this->selectors[] = $selector; + } + + /* Methods below all add specific selectors */ + + /** + * add a "Select" selector entry on the selector list + */ + public function createSelector() { + $o = new SelectSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add an "And" selector entry on the selector list + */ + public function createAnd() { + $o = new AndSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add an "Or" selector entry on the selector list + */ + public function createOr() { + $o = new OrSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add a "Not" selector entry on the selector list + */ + public function createNot() { + $o = new NotSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add a "None" selector entry on the selector list + */ + public function createNone() { + $o = new NoneSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add a majority selector entry on the selector list + */ + public function createMajority() { + $o = new MajoritySelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add a selector date entry on the selector list + */ + public function createDate() { + $o = new DateSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add a selector size entry on the selector list + */ + public function createSize() { + $o = new SizeSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add a selector filename entry on the selector list + */ + public function createFilename() { + $o = new FilenameSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add an extended selector entry on the selector list + */ + public function createCustom() { + $o = new ExtendSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add a contains selector entry on the selector list + */ + public function createContains() { + $o = new ContainsSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add a contains selector entry on the selector list + */ + public function createContainsRegexp() { + $o = new ContainsRegexpSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add a present selector entry on the selector list + */ + public function createPresent() { + $o = new PresentSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add a depth selector entry on the selector list + */ + public function createDepth() { + $o = new DepthSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add a depends selector entry on the selector list + */ + public function createDepend() { + $o = new DependSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add a type selector entry on the selector list + */ + public function createType() { + $o = new TypeSelector(); + $this->appendSelector($o); + return $o; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/Commandline.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/Commandline.php new file mode 100644 index 0000000..ff2898c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/Commandline.php @@ -0,0 +1,467 @@ +. + */ + + +/** + * Commandline objects help handling command lines specifying processes to + * execute. + * + * The class can be used to define a command line as nested elements or as a + * helper to define a command line by an application. + *

    + * + * <someelement>
    + *   <acommandline executable="/executable/to/run">
    + *     <argument value="argument 1" />
    + *     <argument line="argument_1 argument_2 argument_3" />
    + *     <argument value="argument 4" />
    + *   </acommandline>
    + * </someelement>
    + *
    + * The element someelement must provide a method + * createAcommandline which returns an instance of this class. + * + * @author thomas.haas@softwired-inc.com + * @author Stefan Bodewig + */ +class Commandline { + + /** + * @var array CommandlineArguments[] + */ + public $arguments = array(); // public so "inner" class can access + + /** + * Full path (if not on %PATH% env var) to executable program. + * @var string + */ + public $executable; // public so "inner" class can access + + const DISCLAIMER = "The ' characters around the executable and arguments are not part of the command."; + + public function __construct($to_process = null) { + if ($to_process !== null) { + $tmp = $this->translateCommandline($to_process); + if ($tmp) { + $this->setExecutable(array_shift($tmp)); // removes first el + foreach($tmp as $arg) { // iterate through remaining elements + $this->createArgument()->setValue($arg); + } + } + } + } + + + /** + * Creates an argument object and adds it to our list of args. + * + *

    Each commandline object has at most one instance of the + * argument class.

    + * + * @param boolean $insertAtStart if true, the argument is inserted at the + * beginning of the list of args, otherwise it is appended. + * @return CommandlineArgument + */ + public function createArgument($insertAtStart = false) { + $argument = new CommandlineArgument($this); + if ($insertAtStart) { + array_unshift($this->arguments, $argument); + } else { + array_push($this->arguments, $argument); + } + return $argument; + } + + /** + * Sets the executable to run. + */ + public function setExecutable($executable) { + if (!$executable) { + return; + } + $this->executable = $executable; + $this->executable = strtr($this->executable, '/', DIRECTORY_SEPARATOR); + $this->executable = strtr($this->executable, '\\', DIRECTORY_SEPARATOR); + } + + public function getExecutable() { + return $this->executable; + } + + public function addArguments($line) { + foreach($line as $arg) { + $this->createArgument()->setValue($arg); + } + } + + /** + * Returns the executable and all defined arguments. + * @return array + */ + public function getCommandline() { + $args = $this->getArguments(); + if ($this->executable === null) { + return $args; + } + return array_merge(array($this->executable), $args); + } + + + /** + * Returns all arguments defined by addLine, + * addValue or the argument object. + */ + public function getArguments() { + $result = array(); + foreach($this->arguments as $arg) { + $parts = $arg->getParts(); + if ($parts !== null) { + foreach($parts as $part) { + $result[] = $part; + } + } + } + return $result; + } + + public function __toString() { + return self::toString($this->getCommandline()); + } + + /** + * Put quotes around the given String if necessary. + * + *

    If the argument doesn't include spaces or quotes, return it + * as is. If it contains double quotes, use single quotes - else + * surround the argument by double quotes.

    + * + * @exception BuildException if the argument contains both, single + * and double quotes. + */ + public static function quoteArgument($argument) { + if (strpos($argument, "\"") !== false) { + if (strpos($argument, "'") !== false) { + throw new BuildException("Can't handle single and double quotes in same argument"); + } else { + return escapeshellarg($argument); + } + } elseif (strpos($argument, "'") !== false || strpos($argument, " ") !== false) { + return escapeshellarg($argument); + //return '\"' . $argument . '\"'; + } else { + return $argument; + } + } + + /** + * Quotes the parts of the given array in way that makes them + * usable as command line arguments. + */ + public static function toString($lines) { + // empty path return empty string + if (!$lines) { + return ""; + } + + // path containing one or more elements + $result = ""; + for ($i = 0, $len=count($lines); $i < $len; $i++) { + if ($i > 0) { + $result .= ' '; + } + $result .= self::quoteArgument($lines[$i]); + } + return $result; + } + + /** + * + * @param string $to_process + * @return array + */ + public static function translateCommandline($to_process) { + + if (!$to_process) { + return array(); + } + + // parse with a simple finite state machine + + $normal = 0; + $inQuote = 1; + $inDoubleQuote = 2; + + $state = $normal; + $args = array(); + $current = ""; + $lastTokenHasBeenQuoted = false; + + $tok = strtok($to_process, ""); + $tokens = preg_split('/(["\' ])/', $to_process, -1, PREG_SPLIT_DELIM_CAPTURE); + while(($nextTok = array_shift($tokens)) !== null) { + switch ($state) { + case $inQuote: + if ("'" == $nextTok) { + $lastTokenHasBeenQuoted = true; + $state = $normal; + } else { + $current .= $nextTok; + } + break; + case $inDoubleQuote: + if ("\"" == $nextTok) { + $lastTokenHasBeenQuoted = true; + $state = $normal; + } else { + $current .= $nextTok; + } + break; + default: + if ("'" == $nextTok) { + $state = $inQuote; + } elseif ("\"" == $nextTok) { + $state = $inDoubleQuote; + } elseif (" " == $nextTok) { + if ($lastTokenHasBeenQuoted || strlen($current) != 0) { + $args[] = $current; + $current = ""; + } + } else { + $current .= $nextTok; + } + $lastTokenHasBeenQuoted = false; + break; + } + } + + if ($lastTokenHasBeenQuoted || strlen($current) != 0) { + $args[] = $current; + } + + if ($state == $inQuote || $state == $inDoubleQuote) { + throw new BuildException("unbalanced quotes in " . $to_process); + } + + return $args; + } + + /** + * @return int Number of components in current commandline. + */ + public function size() { + return count($this->getCommandline()); + } + + public function __copy() { + $c = new Commandline(); + $c->setExecutable($this->executable); + $c->addArguments($this->getArguments()); + return $c; + } + + /** + * Clear out the whole command line. */ + public function clear() { + $this->executable = null; + $this->arguments->removeAllElements(); + } + + /** + * Clear out the arguments but leave the executable in place for + * another operation. + */ + public function clearArgs() { + $this->arguments = array(); + } + + /** + * Return a marker. + * + *

    This marker can be used to locate a position on the + * commandline - to insert something for example - when all + * parameters have been set.

    + * @return CommandlineMarker + */ + public function createMarker() { + return new CommandlineMarker($this, count($this->arguments)); + } + + /** + * Returns a String that describes the command and arguments + * suitable for verbose output before a call to + * Runtime.exec(String[]). + * + *

    This method assumes that the first entry in the array is the + * executable to run.

    + * @param array $args CommandlineArgument[] to use + * @return string + */ + public function describeCommand($args = null) { + + if ($args === null) { + $args = $this->getCommandline(); + } + + if (!$args) { + return ""; + } + + $buf = "Executing '"; + $buf .= $args[0]; + $buf .= "'"; + if (count($args) > 0) { + $buf .= " with "; + $buf .= $this->describeArguments($args, 1); + } else { + $buf .= self::DISCLAIMER; + } + return $buf; + } + + /** + * Returns a String that describes the arguments suitable for + * verbose output before a call to + * Runtime.exec(String[]) + * @param $args arguments to use (default is to use current class args) + * @param $offset ignore entries before this index + * @return string + */ + protected function describeArguments($args = null, $offset = 0) { + if ($args === null) { + $args = $this->getArguments(); + } + + if ($args === null || count($args) <= $offset) { + return ""; + } + + $buf = "argument"; + if (count($args) > $offset) { + $buf .= "s"; + } + $buf .= ":" . PHP_EOL; + for ($i = $offset, $alen=count($args); $i < $alen; $i++) { + $buf .= "'" . $args[$i] . "'" . PHP_EOL; + } + $buf .= self::DISCLAIMER; + return $buf; + } +} + + +/** + * "Inner" class used for nested xml command line definitions. + */ +class CommandlineArgument { + + private $parts = array(); + private $outer; + + public function __construct(Commandline $outer) { + $this->outer = $outer; + } + + /** + * Sets a single commandline argument. + * + * @param string $value a single commandline argument. + */ + public function setValue($value) { + $this->parts = array($value); + } + + /** + * Line to split into several commandline arguments. + * + * @param line line to split into several commandline arguments + */ + public function setLine($line) { + if ($line === null) { + return; + } + $this->parts = $this->outer->translateCommandline($line); + } + + /** + * Sets a single commandline argument and treats it like a + * PATH - ensures the right separator for the local platform + * is used. + * + * @param value a single commandline argument. + */ + public function setPath($value) { + $this->parts = array( (string) $value ); + } + + /** + * Sets a single commandline argument to the absolute filename + * of the given file. + * + * @param value a single commandline argument. + */ + public function setFile(PhingFile $value) { + $this->parts = array($value->getAbsolutePath()); + } + + /** + * Returns the parts this Argument consists of. + * @return array string[] + */ + public function getParts() { + return $this->parts; + } +} + +/** + * Class to keep track of the position of an Argument. + */ +//

    This class is there to support the srcfile and targetfile +// elements of <execon> and <transform> - don't know +// whether there might be additional use cases.

    --SB +class CommandlineMarker { + + private $position; + private $realPos = -1; + private $outer; + + public function __construct(Comandline $outer, $position) { + $this->outer = $outer; + $this->position = $position; + } + + /** + * Return the number of arguments that preceeded this marker. + * + *

    The name of the executable - if set - is counted as the + * very first argument.

    + */ + public function getPosition() { + if ($this->realPos == -1) { + $realPos = ($this->outer->executable === null ? 0 : 1); + for ($i = 0; $i < $position; $i++) { + $arg = $this->arguments[$i]; + $realPos += count($arg->getParts()); + } + } + return $this->realPos; + } +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/DataType.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/DataType.php new file mode 100644 index 0000000..f4e2643 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/DataType.php @@ -0,0 +1,182 @@ +. + */ + +require_once 'phing/ProjectComponent.php'; +include_once 'phing/BuildException.php'; + +/** + * Base class for those classes that can appear inside the build file + * as stand alone data types. + * + * This class handles the common description attribute and provides + * a default implementation for reference handling and checking for + * circular references that is appropriate for types that can not be + * nested inside elements of the same type (i.e. patternset but not path) + * + * @package phing.types + */ +class DataType extends ProjectComponent { + + /** The descriptin the user has set. */ + public $description = null; + + /** Value to the refid attribute. Type of Reference*/ + public $ref = null; + + /** + * Are we sure we don't hold circular references? + * + * Subclasses are responsible for setting this value to false + * if we'd need to investigate this condition (usually because a + * child element has been added that is a subclass of DataType). + * @var boolean + */ + protected $checked = true; + + /** + * Sets a description of the current data type. It will be useful + * in commenting what we are doing. + */ + function setDescription($desc) { + $this->description = (string) $desc; + } + + /** Return the description for the current data type. */ + function getDescription() { + return $this->description; + } + + /** Has the refid attribute of this element been set? */ + function isReference() { + return ($this->ref !== null); + } + + /** + * Set the value of the refid attribute. + * + * Subclasses may need to check whether any other attributes + * have been set as well or child elements have been created and + * thus override this method. if they do they must call parent::setRefid() + * + * @param Reference $r + * @return void + */ + function setRefid(Reference $r) { + $this->ref = $r; + $this->checked = false; + } + + /** + * Check to see whether any DataType we hold references to is + * included in the Stack (which holds all DataType instances that + * directly or indirectly reference this instance, including this + * instance itself). + * + * If one is included, throw a BuildException created by circularReference + * + * This implementation is appropriate only for a DataType that + * cannot hold other DataTypes as children. + * + * The general contract of this method is that it shouldn't do + * anything if checked is true and set it to true on exit. + */ + function dieOnCircularReference(&$stk, Project $p) { + if ($this->checked || !$this->isReference()) { + return; + } + + $o = $this->ref->getReferencedObject($p); + + if ($o instanceof DataType) { + + // TESTME - make sure that in_array() works just as well here + // + // check if reference is in stack + //$contains = false; + //for ($i=0, $size=count($stk); $i < $size; $i++) { + // if ($stk[$i] === $o) { + // $contains = true; + // break; + // } + //} + + if (in_array($o, $stk, true)) { + // throw build exception + throw $this->circularReference(); + } else { + array_push($stk, $o); + $o->dieOnCircularReference($stk, $p); + array_pop($stk); + } + } + $this->checked = true; + } + + /** Performs the check for circular references and returns the referenced object. */ + function getCheckedRef($requiredClass, $dataTypeName) { + + if (!$this->checked) { + // should be in stack + $stk = array(); + $stk[] = $this; + $this->dieOnCircularReference($stk, $this->getProject()); + } + + $o = $this->ref->getReferencedObject($this->getProject()); + if (!($o instanceof $requiredClass) ) { + throw new BuildException($this->ref->getRefId()." doesn't denote a " . $dataTypeName); + } else { + return $o; + } + } + + /** + * Creates an exception that indicates that refid has to be the + * only attribute if it is set. + */ + function tooManyAttributes() { + return new BuildException( "You must not specify more than one attribute when using refid" ); + } + + /** + * Creates an exception that indicates that this XML element must + * not have child elements if the refid attribute is set. + */ + function noChildrenAllowed() { + return new BuildException("You must not specify nested elements when using refid"); + } + + /** + * Creates an exception that indicates the user has generated a + * loop of data types referencing each other. + */ + function circularReference() { + return new BuildException("This data type contains a circular reference."); + } + + /** + * Template method being called when the data type has been + * parsed completely. + * @return void + */ + function parsingComplete() {} +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/Description.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/Description.php new file mode 100644 index 0000000..de60885 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/Description.php @@ -0,0 +1,53 @@ +. + */ + +/** + * Description is used to provide a project-wide description element + * (that is, a description that applies to a buildfile as a whole). + * If present, the <description> element is printed out before the + * target descriptions. + * + * Description has no attributes, only text. There can only be one + * project description per project. A second description element will + * overwrite the first. + * + * @author Hans Lellelid (Phing) + * @author Craeg Strong (Ant) + * @package phing.types + */ +class Description extends DataType { + + /** + * Adds descriptive text to the project. + * + * @return void + */ + public function addText($text) { + $currentDescription = $this->project->getDescription(); + if ($currentDescription === null) { + $this->project->setDescription($text); + } else { + $this->project->setDescription($currentDescription . $text); + } + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/DirSet.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/DirSet.php new file mode 100644 index 0000000..097349c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/DirSet.php @@ -0,0 +1,49 @@ +. + */ + +include_once 'phing/types/AbstractFileSet.php'; + +/** + * Subclass as hint for supporting tasks that the included directories + * instead of files should be used. + * + * @package phing.types + */ +class DirSet extends AbstractFileSet { + + public function __construct($dirset = null) { + parent::__construct($dirset); + } + + /** + * Return a DirSet that has the same basedir and same patternsets + * as this one. + */ + public function __clone() { + if ($this->isReference()) { + return new DirSet($this->getRef($this->getProject())); + } else { + return new DirSet($this); + } + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/FileList.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/FileList.php new file mode 100644 index 0000000..0fa3bda --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/FileList.php @@ -0,0 +1,224 @@ +. + */ + +require_once 'phing/types/DataType.php'; +include_once 'phing/system/io/PhingFile.php'; + +/** + * FileList represents an explicitly named list of files. FileLists + * are useful when you want to capture a list of files regardless of + * whether they currently exist. + * + * + * + * OR + * + * + * + * (or a mixture of files="" and listfile="" can be used) + * + * @author Hans Lellelid + * @version $Revision: 1.10 $ + * @package phing.types + */ +class FileList extends DataType { + + // public for "cloning" purposes + + /** Array containing all filenames. */ + public $filenames = array(); + + /** Base directory for this file list. */ + public $dir; + + /** PhingFile that contains a list of files (one per line). */ + public $listfile; + + /** + * Construct a new FileList. + * @param array $filelist; + */ + function __construct($filelist = null) { + if ($filelist !== null) { + $this->dir = $filelist->dir; + $this->filenames = $filelist->filenames; + $this->listfile = $filelist->listfile; + } + } + + /** + * Makes this instance in effect a reference to another FileList + * instance. + */ + function setRefid(Reference $r) { + if ($this->dir !== null || count($this->filenames) !== 0) { + throw $this->tooManyAttributes(); + } + parent::setRefid($r); + } + + /** + * Base directory for files in list. + * @param PhingFile $dir + */ + function setDir(PhingFile $dir) { + if ($this->isReference()) { + throw $this->tooManyAttributes(); + } + if (!($dir instanceof PhingFile)) { + $dir = new PhingFile($dir); + } + $this->dir = $dir; + } + + /** + * Get the basedir for files in list. + * @return PhingFile + */ + function getDir(Project $p) { + if ($this->isReference()) { + $ref = $this->getRef($p); + return $ref->getDir($p); + } + return $this->dir; + } + + /** + * Set the array of files in list. + * @param array $filenames + */ + function setFiles($filenames) { + if ($this->isReference()) { + throw $this->tooManyAttributes(); + } + if (!empty($filenames)) { + $tok = strtok($filenames, ", \t\n\r"); + while ($tok !== false) { + $fname = trim($tok); + if ($fname !== "") { + $this->filenames[] = $tok; + } + $tok = strtok(", \t\n\r"); + } + } + } + + /** + * Sets a source "list" file that contains filenames to add -- one per line. + * @param string $file + */ + function setListFile($file) { + if ($this->isReference()) { + throw $this->tooManyAttributes(); + } + if (!($file instanceof PhingFile)) { + $file = new PhingFile($file); + } + $this->listfile = $file; + } + + /** + * Get the source "list" file that contains file names. + * @param Project $p + * @return PhingFile + */ + function getListFile(Project $p) { + if ($this->isReference()) { + $ref = $this->getRef($p); + return $ref->getListFile($p); + } + return $this->listfile; + } + + /** + * Returns the list of files represented by this FileList. + * @param Project $p + * @return array + */ + function getFiles(Project $p) { + + if ($this->isReference()) { + $ret = $this->getRef($p); + $ret = $ret->getFiles($p); + return $ret; + } + + if ($this->listfile !== null) { + $this->readListFile($p); + } + + return $this->filenames; + } + + + /** + * Performs the check for circular references and returns the + * referenced FileSet. + * @param Project $p + */ + function getRef(Project $p) { + if (!$this->checked) { + $stk = array(); + array_push($stk, $this); + $this->dieOnCircularReference($stk, $p); + } + + $o = $this->ref->getReferencedObject($p); + if (!($o instanceof FileList)) { + throw new BuildException($this->ref->getRefId()." doesn't denote a filelist"); + } else { + return $o; + } + } + + /** + * Reads file names from a file and adds them to the files array. + * @param Project $p + */ + private function readListFile(Project $p) { + $listReader = null; + try { + // Get a FileReader + $listReader = new BufferedReader(new FileReader($this->listfile)); + + $line = $listReader->readLine(); + while ($line !== null) { + if (!empty($line)) { + $line = $p->replaceProperties($line); + $this->filenames[] = trim($line); + } + $line = $listReader->readLine(); + } + } catch (Exception $e) { + if ($listReader) $listReader->close(); + throw new BuildException("An error occured while reading from list file " . $this->listfile->__toString() . ": " . $e->getMessage()); + } + + $listReader->close(); + } + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/FileSet.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/FileSet.php new file mode 100644 index 0000000..012e030 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/FileSet.php @@ -0,0 +1,56 @@ +. + */ + +require_once 'phing/types/AbstractFileSet.php'; + +/** + * Moved out of MatchingTask to make it a standalone object that could + * be referenced (by scripts for example). + * + * @author Hans Lellelid (Phing) + * @author Arnout J. Kuiper (Ant) + * @author Stefano Mazzocchi (Ant) + * @author Sam Ruby (Ant) + * @author Jon S. Stevens (Ant) + * @author Stefan Bodewig (Ant) + * @author Magesh Umasankar (Ant) + * @package phing.types + */ +class FileSet extends AbstractFileSet { + + function __construct($fileset = null) { + parent::__construct($fileset); + } + + /** + * Return a FileSet that has the same basedir and same patternsets + * as this one. + */ + public function __clone() { + if ($this->isReference()) { + return new FileSet($this->getRef($this->getProject())); + } else { + return new FileSet($this); + } + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/FilterChain.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/FilterChain.php new file mode 100644 index 0000000..1126f98 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/FilterChain.php @@ -0,0 +1,176 @@ +. + */ + +include_once 'phing/types/DataType.php'; +include_once 'phing/filters/HeadFilter.php'; +include_once 'phing/filters/TailFilter.php'; +include_once 'phing/filters/LineContains.php'; +include_once 'phing/filters/LineContainsRegexp.php'; +include_once 'phing/filters/ExpandProperties.php'; +include_once 'phing/filters/PrefixLines.php'; +include_once 'phing/filters/ReplaceRegexp.php'; +include_once 'phing/filters/ReplaceTokens.php'; +include_once 'phing/filters/StripPhpComments.php'; +include_once 'phing/filters/StripLineBreaks.php'; +include_once 'phing/filters/StripLineComments.php'; +include_once 'phing/filters/StripWhitespace.php'; +include_once 'phing/filters/TabToSpaces.php'; +include_once 'phing/filters/TidyFilter.php'; +include_once 'phing/filters/TranslateGettext.php'; +include_once 'phing/filters/XincludeFilter.php'; +include_once 'phing/filters/XsltFilter.php'; + +/* + * FilterChain may contain a chained set of filter readers. + * + * @author Yannick Lecaillez + * @version $Revision: 1.11 $ + * @package phing.types + */ +class FilterChain extends DataType { + + private $filterReaders = array(); + + function __construct(Project $project) { + $this->project = $project; + } + + function getFilterReaders() { + return $this->filterReaders; + } + + function addExpandProperties(ExpandProperties $o) { + $o->setProject($this->project); + $this->filterReaders[] = $o; + } + + function addGettext(TranslateGettext $o) { + $o->setProject($this->project); + $this->filterReaders[] = $o; + } + + function addHeadFilter(HeadFilter $o) { + $o->setProject($this->project); + $this->filterReaders[] = $o; + } + + function addTailFilter(TailFilter $o) { + $o->setProject($this->project); + $this->filterReaders[] = $o; + } + + function addLineContains(LineContains $o) { + $o->setProject($this->project); + $this->filterReaders[] = $o; + } + + function addLineContainsRegExp(LineContainsRegExp $o) { + $o->setProject($this->project); + $this->filterReaders[] = $o; + } + + function addPrefixLines(PrefixLines $o) { + $o->setProject($this->project); + $this->filterReaders[] = $o; + } + + function addReplaceTokens(ReplaceTokens $o) { + $o->setProject($this->project); + $this->filterReaders[] = $o; + } + + function addReplaceRegexp(ReplaceRegexp $o) { + $o->setProject($this->project); + $this->filterReaders[] = $o; + } + + function addStripPhpComments(StripPhpComments $o) { + $o->setProject($this->project); + $this->filterReaders[] = $o; + } + + function addStripLineBreaks(StripLineBreaks $o) { + $o->setProject($this->project); + $this->filterReaders[] = $o; + } + + function addStripLineComments(StripLineComments $o) { + $o->setProject($this->project); + $this->filterReaders[] = $o; + } + + function addStripWhitespace(StripWhitespace $o) { + $o->setProject($this->project); + $this->filterReaders[] = $o; + } + + function addTidyFilter(TidyFilter $o) { + $o->setProject($this->project); + $this->filterReaders[] = $o; + } + + function addTabToSpaces(TabToSpaces $o) { + $o->setProject($this->project); + $this->filterReaders[] = $o; + } + + function addXincludeFilter(XincludeFilter $o) { + $o->setProject($this->project); + $this->filterReaders[] = $o; + } + + function addXsltFilter(XsltFilter $o) { + $o->setProject($this->project); + $this->filterReaders[] = $o; + } + + function addFilterReader(PhingFilterReader $o) { + $o->setProject($this->project); + $this->filterReaders[] = $o; + } + + /* + * Makes this instance in effect a reference to another FilterChain + * instance. + * + *

    You must not set another attribute or nest elements inside + * this element if you make it a reference.

    + * + * @param r the reference to which this instance is associated + * @throw BuildException if this instance already has been configured. + */ + function setRefid(Reference $r) { + + if ( count($this->filterReaders) === 0 ) { + throw $this->tooManyAttributes(); + } + + // change this to get the objects from the other reference + $o = $r->getReferencedObject($this->getProject()); + if ( $o instanceof FilterChain ) { + $this->filterReaders = $o->getFilterReaders(); + } else { + throw new BuildException($r->getRefId()." doesn't refer to a FilterChain"); + } + parent::setRefid($r); + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/Mapper.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/Mapper.php new file mode 100644 index 0000000..3de8e6e --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/Mapper.php @@ -0,0 +1,207 @@ +. + */ + +include_once 'phing/types/DataType.php'; +include_once 'phing/types/Path.php'; + +/** + * Filename Mapper maps source file name(s) to target file name(s). + * + * Built-in mappers can be accessed by specifying they "type" attribute: + * + * + * + * Custom mappers can be specified by providing a dot-path to a include_path-relative + * class: + * + * + * + * + * + * @author Hans Lellelid + * @package phing.types + */ +class Mapper extends DataType { + + protected $type; + protected $classname; + protected $from; + protected $to; + protected $classpath; + protected $classpathId; + + + function __construct(Project $project) { + $this->project = $project; + } + + /** + * Set the classpath to be used when searching for component being defined + * + * @param Path $classpath An Path object containing the classpath. + */ + public function setClasspath(Path $classpath) { + if ($this->isReference()) { + throw $this->tooManyAttributes(); + } + if ($this->classpath === null) { + $this->classpath = $classpath; + } else { + $this->classpath->append($classpath); + } + } + + /** + * Create the classpath to be used when searching for component being defined + */ + public function createClasspath() { + if ($this->isReference()) { + throw $this->tooManyAttributes(); + } + if ($this->classpath === null) { + $this->classpath = new Path($this->project); + } + return $this->classpath->createPath(); + } + + /** + * Reference to a classpath to use when loading the files. + */ + public function setClasspathRef(Reference $r) { + if ($this->isReference()) { + throw $this->tooManyAttributes(); + } + $this->classpathId = $r->getRefId(); + $this->createClasspath()->setRefid($r); + } + + /** Set the type of FileNameMapper to use. */ + function setType($type) { + if ($this->isReference()) { + throw $this->tooManyAttributes(); + } + $this->type = $type; + } + + /** Set the class name of the FileNameMapper to use. */ + function setClassname($classname) { + if ($this->isReference()) { + throw $this->tooManyAttributes(); + } + $this->classname = $classname; + } + + /** + * Set the argument to FileNameMapper.setFrom + */ + function setFrom($from) { + if ($this->isReference()) { + throw $this->tooManyAttributes(); + } + $this->from = $from; + } + + /** + * Set the argument to FileNameMapper.setTo + */ + function setTo($to) { + if ($this->isReference()) { + throw $this->tooManyAttributes(); + } + $this->to = $to; + } + + /** + * Make this Mapper instance a reference to another Mapper. + * + * You must not set any other attribute if you make it a reference. + */ + function setRefid($r) { + if ($this->type !== null || $this->from !== null || $this->to !== null) { + throw DataType::tooManyAttributes(); + } + parent::setRefid($r); + } + + /** Factory, returns inmplementation of file name mapper as new instance */ + function getImplementation() { + if ($this->isReference()) { + $tmp = $this->getRef(); + return $tmp->getImplementation(); + } + + if ($this->type === null && $this->classname === null) { + throw new BuildException("either type or classname attribute must be set for "); + } + + if ($this->type !== null) { + switch($this->type) { + case 'identity': + $this->classname = 'phing.mappers.IdentityMapper'; + break; + case 'flatten': + $this->classname = 'phing.mappers.FlattenMapper'; + break; + case 'glob': + $this->classname = 'phing.mappers.GlobMapper'; + break; + case 'regexp': + case 'regex': + $this->classname = 'phing.mappers.RegexpMapper'; + break; + case 'merge': + $this->classname = 'phing.mappers.MergeMapper'; + break; + default: + throw new BuildException("Mapper type {$this->type} not known"); + break; + } + } + + // get the implementing class + $cls = Phing::import($this->classname, $this->classpath); + + $m = new $cls; + $m->setFrom($this->from); + $m->setTo($this->to); + + return $m; + } + + /** Performs the check for circular references and returns the referenced Mapper. */ + private function getRef() { + if (!$this->checked) { + $stk = array(); + $stk[] = $this; + $this->dieOnCircularReference($stk, $this->project); + } + + $o = $this->ref->getReferencedObject($this->project); + if (!($o instanceof Mapper)) { + $msg = $this->ref->getRefId()." doesn't denote a mapper"; + throw new BuildException($msg); + } else { + return $o; + } + } +} + + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/Parameter.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/Parameter.php new file mode 100644 index 0000000..527c715 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/Parameter.php @@ -0,0 +1,99 @@ +. +*/ + +include_once 'phing/types/DataType.php'; + +/* + * A parameter is composed of a name, type and value. Nested + * Parameters are also possible, but the using task/type has + * to support them + * + * @author Manuel Holtgrewe + * @author Yannick Lecaillez + * @package phing.types +*/ +class Parameter extends DataType { + + /** Parameter name */ + protected $name; + + /** Paramter type */ + protected $type; + + /** Parameter value */ + protected $value; + + /** Nested parameters */ + protected $parameters = array(); + + function setName($name) { + $this->name = (string) $name; + } + + function setType($type) { + $this->type = (string) $type; + } + + /** + * Sets value to dynamic register slot. + * @param RegisterSlot $value + */ + public function setListeningValue(RegisterSlot $value) { + $this->value = $value; + } + + function setValue($value) { + $this->value = (string) $value; + } + + function getName() { + return $this->name; + } + + function getType() { + return $this->type; + } + + function getValue() { + if ($this->value instanceof RegisterSlot) { + return $this->value->getValue(); + } else { + return $this->value; + } + } + + /** + * @return Parameter + */ + function createParam() { + $num = array_push($this->parameters, new Parameter()); + return $this->parameters[$num-1]; + } + + /** + * @return array Nested parameters. + */ + function getParams() { + return $this->parameters; + } +} + + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/Parameterizable.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/Parameterizable.php new file mode 100644 index 0000000..a31213e --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/Parameterizable.php @@ -0,0 +1,32 @@ +. + */ + +/** + * Parameterizable objects take genric key value pairs. + * + * @author Hans Lellelid, hans@xmpl.org (Phing) + * @author Magesh Umasankar (Ant) + * @package phing.types + */ +interface Parameterizable { + function setParameters($parameters); +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/Path.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/Path.php new file mode 100644 index 0000000..cafd12f --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/Path.php @@ -0,0 +1,450 @@ +. + */ + +require_once 'phing/types/DataType.php'; +include_once 'phing/util/PathTokenizer.php'; +include_once 'phing/types/FileSet.php'; + +/** + * This object represents a path as used by include_path or PATH + * environment variable. + * + * This class has been adopted from the Java Ant equivalent. The ability have + * path structures in Phing is important; however, because of how PHP classes interact + * the ability to specify CLASSPATHs makes less sense than Java.Rather than providing + * CLASSPATH for any tasks that take classes as parameters, perhaps a better + * solution in PHP is to have an IncludePath task, which prepends paths to PHP's include_path + * INI variable. This gets around the problem that simply using a path to load the initial + * PHP class is not enough (in most cases the loaded class may assume that it is on the global + * PHP include_path, and will try to load dependent classes accordingly). The other option is + * to provide a way for this class to add paths to the include path, if desired -- or to create + * an IncludePath subclass. Once added, though, when would a path be removed from the include path? + * + *

    + * + * <sometask>
    + *   <somepath>
    + *     <pathelement location="/path/to/file" />
    + *     <pathelement path="/path/to/class2;/path/to/class3" />
    + *     <pathelement location="/path/to/file3" />
    + *   </somepath>
    + * </sometask>
    + *
    + *

    + * The object implemention sometask must provide a method called + * createSomepath which returns an instance of Path. + * Nested path definitions are handled by the Path object and must be labeled + * pathelement.

    + * + * The path element takes a parameter path which will be parsed + * and split into single elements. It will usually be used + * to define a path from an environment variable. + * + * @author Hans Lellelid (Phing) + * @author Thomas.Haas@softwired-inc.com (Ant) + * @author Stefan Bodewig (Ant) + * @package phing.types + */ +class Path extends DataType { + + private $elements = array(); + + /** + * Constructor for internally instantiated objects sets project. + * @param Project $project + * @param string $path (for use by IntrospectionHelper) + */ + public function __construct($project = null, $path = null) { + if ($project !== null) { + $this->setProject($project); + } + if ($path !== null) { + $this->createPathElement()->setPath($path); + } + } + + /** + * Adds a element definition to the path. + * @param $location the location of the element to add (must not be + * null nor empty. + * @throws BuildException + */ + public function setDir(PhingFile $location) { + if ($this->isReference()) { + throw $this->tooManyAttributes(); + } + $this->createPathElement()->setDir($location); + } + + /** + * Parses a path definition and creates single PathElements. + * @param path the path definition. + * @throws BuildException + */ + public function setPath($path) { + if ($this->isReference()) { + throw $this->tooManyAttributes(); + } + $this->createPathElement()->setPath($path); + } + + /** + * Makes this instance in effect a reference to another Path instance. + * + *

    You must not set another attribute or nest elements inside + * this element if you make it a reference.

    + * @throws BuildException + */ + public function setRefid(Reference $r) { + if (!empty($this->elements)) { + throw $this->tooManyAttributes(); + } + $this->elements[] = $r; + parent::setRefid($r); + } + + /** + * Creates the nested <pathelement> element. + * @throws BuildException + */ + public function createPathElement() { + if ($this->isReference()) { + throw $this->noChildrenAllowed(); + } + $pe = new PathElement($this); + $this->elements[] = $pe; + return $pe; + } + + /** + * Adds a nested <fileset> element. + * @throws BuildException + */ + public function addFileset(FileSet $fs) { + if ($this->isReference()) { + throw $this->noChildrenAllowed(); + } + $this->elements[] = $fs; + $this->checked = false; + } + + /** + * Adds a nested <dirset> element. + * @throws BuildException + */ + public function addDirset(DirSet $dset) { + if ($this->isReference()) { + throw $this->noChildrenAllowed(); + } + $this->elements[] = $dset; + $this->checked = false; + } + + /** + * Creates a nested <path> element. + * @throws BuildException + */ + public function createPath() { + if ($this->isReference()) { + throw $this->noChildrenAllowed(); + } + $p = new Path($this->project); + $this->elements[] = $p; + $this->checked = false; + return $p; + } + + /** + * Append the contents of the other Path instance to this. + */ + public function append(Path $other) { + if ($other === null) { + return; + } + $l = $other->listPaths(); + foreach($l as $path) { + if (!in_array($path, $this->elements, true)) { + $this->elements[] = $path; + } + } + } + + /** + * Adds the components on the given path which exist to this + * Path. Components that don't exist, aren't added. + * + * @param Path $source - Source path whose components are examined for existence. + */ + public function addExisting(Path $source) { + $list = $source->listPaths(); + foreach($list as $el) { + $f = null; + if ($this->project !== null) { + $f = $this->project->resolveFile($el); + } else { + $f = new PhingFile($el); + } + + if ($f->exists()) { + $this->setDir($f); + } else { + $this->log("dropping " . $f->__toString() . " from path as it doesn't exist", + Project::MSG_VERBOSE); + } + } + } + + /** + * Returns all path elements defined by this and nested path objects. + * @return array List of path elements. + */ + public function listPaths() { + if (!$this->checked) { + // make sure we don't have a circular reference here + $stk = array(); + array_push($stk, $this); + $this->dieOnCircularReference($stk, $this->project); + } + + $result = array(); + for ($i = 0, $elSize=count($this->elements); $i < $elSize; $i++) { + $o = $this->elements[$i]; + if ($o instanceof Reference) { + $o = $o->getReferencedObject($this->project); + // we only support references to paths right now + if (!($o instanceof Path)) { + $msg = $r->getRefId() . " doesn't denote a path"; + throw new BuildException($msg); + } + } + + if (is_string($o)) { + $result[] = $o; + } elseif ($o instanceof PathElement) { + $parts = $o->getParts(); + if ($parts === null) { + throw new BuildException("You must either set location or" + . " path on "); + } + foreach($parts as $part) { + $result[] = $part; + } + } elseif ($o instanceof Path) { + $p = $o; + if ($p->getProject() === null) { + $p->setProject($this->getProject()); + } + $parts = $p->listPaths(); + foreach($parts as $part) { + $result[] = $part; + } + } elseif ($o instanceof DirSet) { + $dset = $o; + $ds = $dset->getDirectoryScanner($this->project); + $dirstrs = $ds->getIncludedDirectories(); + $dir = $dset->getDir($this->project); + foreach($dirstrs as $dstr) { + $d = new PhingFile($dir, $dstr); + $result[] = $d->getAbsolutePath(); + } + } elseif ($o instanceof FileList) { + $fl = $o; + $dirstrs = $fl->getFiles($this->project); + $dir = $fl->getDir($this->project); + foreach($dirstrs as $dstr) { + $d = new PhingFile($dir, $dstr); + $result[] = $d->getAbsolutePath(); + } + } + } + + return array_unique($result); + } + + + /** + * Returns a textual representation of the path, which can be used as + * CLASSPATH or PATH environment variable definition. + * @return string A textual representation of the path. + */ + public function __toString() { + + $list = $this->listPaths(); + + // empty path return empty string + if (empty($list)) { + return ""; + } + + return implode(PATH_SEPARATOR, $list); + } + + /** + * Splits a PATH (with : or ; as separators) into its parts. + * @param Project $project + * @param string $source + */ + public static function translatePath(Project $project, $source) { + $result = array(); + if ($source == null) { + return ""; + } + + $tok = new PathTokenizer($source); + while ($tok->hasMoreTokens()) { + $pathElement = $tok->nextToken(); + try { + $element = self::resolveFile($project, $pathElement); + for ($i = 0, $_i=strlen($element); $i < $_i; $i++) { + self::translateFileSep($element, $i); + } + $result[] = $element; + } catch (BuildException $e) { + $this->project->log("Dropping path element " . $pathElement + . " as it is not valid relative to the project", + Project::MSG_VERBOSE); + } + } + + return $result; + } + + /** + * Returns its argument with all file separator characters + * replaced so that they match the local OS conventions. + */ + public static function translateFile($source) { + if ($source == null) { + return ""; + } + + $result = $source; + for ($i = 0, $_i=strlen($source); $i < $_i; $i++) { + self::translateFileSep($result, $i); + } + + return $result; + } + + /** + * Translates all occurrences of / or \ to correct separator of the + * current platform and returns whether it had to do any + * replacements. + */ + protected static function translateFileSep(&$buffer, $pos) { + if ($buffer{$pos} == '/' || $buffer{$pos} == '\\') { + $buffer{$pos} = DIRECTORY_SEPARATOR; + return true; + } + return false; + } + + /** + * How many parts does this Path instance consist of. + * DEV NOTE: expensive call! list is generated, counted, and then + * discareded. + * @return int + */ + public function size() { + return count($this->listPaths()); + } + + /** + * Return a Path that holds the same elements as this instance. + */ + public function __clone() { + $p = new Path($this->project); + $p->append($this); + return $p; + } + + /** + * Overrides the version of DataType to recurse on all DataType + * child elements that may have been added. + * @throws BuildException + */ + public function dieOnCircularReference(&$stk, Project $p) { + + if ($this->checked) { + return; + } + + // elements can contain strings, FileSets, Reference, etc. + foreach($this->elements as $o) { + + if ($o instanceof Reference) { + $o = $o->getReferencedObject($p); + } + + if ($o instanceof DataType) { + if (in_array($o, $stk, true)) { + throw $this->circularReference(); + } else { + array_push($stk, $o); + $o->dieOnCircularReference($stk, $p); + array_pop($stk); + } + } + } + + $this->checked = true; + } + + /** + * Resolve a filename with Project's help - if we know one that is. + * + *

    Assume the filename is absolute if project is null.

    + */ + private static function resolveFile(Project $project, $relativeName) { + if ($project !== null) { + $f = $project->resolveFile($relativeName); + return $f->getAbsolutePath(); + } + return $relativeName; + } + +} + + +/** + * Helper class, holds the nested <pathelement> values. + */ +class PathElement { + + private $parts = array(); + private $outer; + + public function __construct(Path $outer) { + $this->outer = $outer; + } + + public function setDir(PhingFile $loc) { + $this->parts = array(Path::translateFile($loc->getAbsolutePath())); + } + + public function setPath($path) { + $this->parts = Path::translatePath($this->outer->getProject(), $path); + } + + public function getParts() { + return $this->parts; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/PatternSet.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/PatternSet.php new file mode 100644 index 0000000..ba63e36 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/PatternSet.php @@ -0,0 +1,491 @@ +. + */ + +include_once 'phing/system/io/FileReader.php'; +include_once 'phing/types/DataType.php'; + +/** + * The patternset storage component. Carries all necessary data and methods + * for the patternset stuff. + * + * @author Andreas Aderhold, andi@binarycloud.com + * @version $Revision: 1.8 $ + * @package phing.types + */ +class PatternSet extends DataType { + + private $includeList = array(); + private $excludeList = array(); + private $includesFileList = array(); + private $excludesFileList = array(); + + /** + * Makes this instance in effect a reference to another PatternSet + * instance. + * You must not set another attribute or nest elements inside + * this element if you make it a reference. + */ + function setRefid(Reference $r) { + if (!empty($this->includeList) || !empty($this->excludeList)) { + throw $this->tooManyAttributes(); + } + parent::setRefid($r); + } + + + /** + * Add a name entry on the include list + * + * @returns PatternSetNameEntry Reference to object + * @throws BuildException + */ + function createInclude() { + if ($this->isReference()) { + throw $this->noChildrenAllowed(); + } + return $this->addPatternToList($this->includeList); + } + + + /** + * Add a name entry on the include files list + * + * @returns PatternSetNameEntry Reference to object + * @throws BuildException + */ + function createIncludesFile() { + if ($this->isReference()) { + throw $this->noChildrenAllowed(); + } + return $this->addPatternToList($this->includesFileList); + } + + /** + * Add a name entry on the exclude list + * + * @returns PatternSetNameEntry Reference to object + * @throws BuildException + */ + function createExclude() { + if ($this->isReference()) { + throw $this->noChildrenAllowed(); + } + return $this->addPatternToList($this->excludeList); + } + + /** + * add a name entry on the exclude files list + * + * @returns PatternSetNameEntry Reference to object + * @throws BuildException + */ + function createExcludesFile() { + if ($this->isReference()) { + throw $this->noChildrenAllowed(); + return; + } + return $this->addPatternToList($this->excludesFileList); + } + + + /** + * Sets the set of include patterns. Patterns may be separated by a comma + * or a space. + * + * @param string the string containing the include patterns + * @returns void + * @throws BuildException + */ + function setIncludes($includes) { + if ($this->isReference()) { + throw $this->tooManyAttributes(); + } + if ($includes !== null && strlen($includes) > 0) { + $tok = strtok($includes, ", "); + while ($tok !== false) { + $o = $this->createInclude(); + $o->setName($tok); + $tok = strtok(", "); + } + } + } + + + /** + * Sets the set of exclude patterns. Patterns may be separated by a comma + * or a space. + * + * @param string the string containing the exclude patterns + * @returns void + * @throws BuildException + */ + function setExcludes($excludes) { + if ($this->isReference()) { + throw $this->tooManyAttributes(); + } + if ($excludes !== null && strlen($excludes) > 0) { + $tok = strtok($excludes, ", "); + while ($tok !== false) { + $o = $this->createExclude(); + $o->setName($tok); + $tok = strtok(", "); + } + } + } + + /** + * add a name entry to the given list + * + * @param array List onto which the nameentry should be added + * @returns PatternSetNameEntry Reference to the created PsetNameEntry instance + */ + private function addPatternToList(&$list) { + $num = array_push($list, new PatternSetNameEntry()); + return $list[$num-1]; + } + + /** + * Sets the name of the file containing the includes patterns. + * + * @param includesFile The file to fetch the include patterns from. + */ + function setIncludesFile($includesFile) { + if ($this->isReference()) { + throw $this->tooManyAttributes(); + } + if ($includesFile instanceof File) { + $includesFile = $includesFile->getPath(); + } + $o = $this->createIncludesFile(); + $o->setName($includesFile); + } + + /** + * Sets the name of the file containing the excludes patterns. + * + * @param excludesFile The file to fetch the exclude patterns from. + */ + function setExcludesFile($excludesFile) { + if ($this->isReference()) { + throw $this->tooManyAttributes(); + } + if ($excludesFile instanceof File) { + $excludesFile = $excludesFile->getPath(); + } + $o = $this->createExcludesFile(); + $o->setName($excludesFile); + } + + + /** + * Reads path matching patterns from a file and adds them to the + * includes or excludes list + */ + private function readPatterns(PhingFile $patternfile, &$patternlist, Project $p) { + $patternReader = null; + try { + // Get a FileReader + $patternReader = new BufferedReader(new FileReader($patternfile)); + + // Create one NameEntry in the appropriate pattern list for each + // line in the file. + $line = $patternReader->readLine(); + while ($line !== null) { + if (!empty($line)) { + $line = $p->replaceProperties($line); + $this->addPatternToList($patternlist)->setName($line); + } + $line = $patternReader->readLine(); + } + + } catch (IOException $ioe) { + $msg = "An error occured while reading from pattern file: " . $patternfile->__toString(); + if($patternReader) $patternReader->close(); + throw new BuildException($msg, $ioe); + } + + $patternReader->close(); + } + + + /** Adds the patterns of the other instance to this set. */ + function append($other, $p) { + if ($this->isReference()) { + throw new BuildException("Cannot append to a reference"); + } + + $incl = $other->getIncludePatterns($p); + if ($incl !== null) { + foreach($incl as $incl_name) { + $o = $this->createInclude(); + $o->setName($incl_name); + } + } + + $excl = $other->getExcludePatterns($p); + if ($excl !== null) { + foreach($excl as $excl_name) { + $o = $this->createExclude(); + $o->setName($excl_name); + } + } + } + + /** Returns the filtered include patterns. */ + function getIncludePatterns(Project $p) { + if ($this->isReference()) { + $o = $this->getRef($p); + return $o->getIncludePatterns($p); + } else { + $this->readFiles($p); + return $this->makeArray($this->includeList, $p); + } + } + + /** Returns the filtered exclude patterns. */ + function getExcludePatterns(Project $p) { + if ($this->isReference()) { + $o = $this->getRef($p); + return $o->getExcludePatterns($p); + } else { + $this->readFiles($p); + return $this->makeArray($this->excludeList, $p); + } + } + + /** helper for FileSet. */ + function hasPatterns() { + return (boolean) count($this->includesFileList) > 0 || count($this->excludesFileList) > 0 + || count($this->includeList) > 0 || count($this->excludeList) > 0; + } + + /** + * Performs the check for circular references and returns the + * referenced PatternSet. + */ + function getRef(Project $p) { + if (!$this->checked) { + $stk = array(); + array_push($stk, $this); + $this->dieOnCircularReference($stk, $p); + } + $o = $this->ref->getReferencedObject($p); + if (!($o instanceof PatternSet)) { + $msg = $this->ref->getRefId()." doesn't denote a patternset"; + throw new BuildException($msg); + } else { + return $o; + } + } + + /** Convert a array of PatternSetNameEntry elements into an array of Strings. */ + private function makeArray(&$list, Project $p) { + + if (count($list) === 0) { + return null; + } + + $tmpNames = array(); + foreach($list as $ne) { + $pattern = (string) $ne->evalName($p); + if ($pattern !== null && strlen($pattern) > 0) { + array_push($tmpNames, $pattern); + } + } + return $tmpNames; + } + + /** Read includesfile or excludesfile if not already done so. */ + private function readFiles(Project $p) { + if (!empty($this->includesFileList)) { + foreach($this->includesFileList as $ne) { + $fileName = (string) $ne->evalName($p); + if ($fileName !== null) { + $inclFile = $p->resolveFile($fileName); + if (!$inclFile->exists()) { + throw new BuildException("Includesfile ".$inclFile->getAbsolutePath()." not found."); + } + $this->readPatterns($inclFile, $this->includeList, $p); + } + } + $this->includesFileList = array(); + } + + if (!empty($this->excludesFileList)) { + foreach($this->excludesFileList as $ne) { + $fileName = (string) $ne->evalName($p); + if ($fileName !== null) { + $exclFile = $p->resolveFile($fileName); + if (!$exclFile->exists()) { + throw new BuildException("Excludesfile ".$exclFile->getAbsolutePath()." not found."); + return; + } + $this->readPatterns($exclFile, $this->excludeList, $p); + } + } + $this->excludesFileList = array(); + } + } + + + function toString() { + + // We can't compile includeList into array because, toString() does + // not know about project: + // + // $includes = $this->makeArray($this->includeList, $this->project); + // $excludes = $this->makeArray($this->excludeList, $this->project); + + if (empty($this->includeList)) { + $includes = "empty"; + } else { + $includes = ""; + foreach($this->includeList as $ne) { + $includes .= $ne->toString() . ","; + } + $includes = rtrim($includes, ","); + } + + if (empty($this->excludeList)) { + $excludes = "empty"; + } else { + $excludes = ""; + foreach($this->excludeList as $ne) { + $excludes .= $ne->toString() . ","; + } + $excludes = rtrim($excludes, ","); + } + + return "patternSet{ includes: $includes excludes: $excludes }"; + } +} + + +/** + * "Internal" class for holding an include/exclude pattern. + */ +class PatternSetNameEntry { + + /** + * The pattern. + * @var string + */ + private $name; + + /** + * The if-condition property for this pattern to be applied. + * @var string + */ + private $ifCond; + + /** + * The unless-condition property for this pattern to be applied. + * @var string + */ + private $unlessCond; + + /** + * An alias for the setName() method. + * @see setName() + * @param string $pattern + */ + public function setPattern($pattern) { + $this->setName($pattern); + } + + /** + * Set the pattern text. + * @param string $name The pattern + */ + public function setName($name) { + $this->name = (string) $name; + } + + /** + * Sets an if-condition property for this pattern to match. + * @param string $cond + */ + public function setIf($cond) { + $this->ifCond = (string) $cond; + } + + + /** + * Sets an unless-condition property for this pattern to match. + * @param string $cond + */ + public function setUnless($cond) { + $this->unlessCond = (string) $cond; + } + + /** + * Get the pattern text. + * @return string The pattern. + */ + public function getName() { + return $this->name; + } + + /** + * Evaluates the pattern. + * @return string The pattern or null if it is ruled out by a condition. + */ + public function evalName(Project $project) { + return $this->valid($project) ? $this->name : null; + } + + + /** + * Checks whether pattern should be applied based on whether the if and unless + * properties are set in project. + * @param Project $project + * @return boolean + */ + public function valid(Project $project) { + if ($this->ifCond !== null && $project->getProperty($this->ifCond) === null) { + return false; + } else if ($this->unlessCond !== null && $project->getProperty($this->unlessCond) !== null) { + return false; + } + return true; + } + + /** + * Gets a string representation of this pattern. + * @return string + */ + public function toString() { + $buf = $this->name; + if (($this->ifCond !== null) || ($this->unlessCond !== null)) { + $buf .= ":"; + $connector = ""; + + if ($this->ifCond !== null) { + $buf .= "if->{$this->ifCond}"; + $connector = ";"; + } + if ($this->unlessCond !== null) { + $buf .= "$connector unless->{$this->unlessCond}"; + } + } + return $buf; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/PhingFilterReader.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/PhingFilterReader.php new file mode 100644 index 0000000..50ad074 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/PhingFilterReader.php @@ -0,0 +1,136 @@ +. +*/ + +include_once 'phing/types/DataType.php'; +include_once 'phing/types/Parameter.php'; + +/* + * A PhingFilterReader is a wrapper class that encloses the className + * and configuration of a Configurable FilterReader. + * + * @author Yannick Lecaillez + * @version $Revision: 1.9 $ + * @see FilterReader + * @package phing.types +*/ +class PhingFilterReader extends DataType { + + private $className; + private $parameters = array(); + private $classPath; + + function setClassName($className) { + $this->className = $className; + } + + function getClassName() { + return $this->className; + } + + /** + * Set the classpath to load the FilterReader through (attribute). + * @param Path $classpath + */ + function setClasspath(Path $classpath) { + if ( $this->isReference() ) { + throw $this->tooManyAttributes(); + } + if ( $this->classPath === null ) { + $this->classPath = $classpath; + } else { + $this->classPath->append($classpath); + } + } + + /* + * Set the classpath to load the FilterReader through (nested element). + */ + function createClasspath() { + if ( $this->isReference() ) { + throw $this->noChildrenAllowed(); + } + if ( $this->classPath === null ) { + $this->classPath = new Path($this->project); + } + return $this->classPath->createPath(); + } + + function getClasspath() { + return $this->classPath; + } + + function setClasspathRef(Reference $r) { + if ( $this->isReference() ) { + throw $this->tooManyAttributes(); + } + $o = $this->createClasspath(); + $o->setRefid($r); + } + + function addParam(Parameter $param) { + $this->parameters[] = $param; + } + + function createParam() { + $num = array_push($this->parameters, new Parameter()); + return $this->parameters[$num-1]; + } + + function getParams() { + // We return a COPY + $ret = array(); + for($i=0,$size=count($this->parameters); $i < $size; $i++) { + $ret[] = clone $this->parameters[$i]; + } + return $ret; + } + + /* + * Makes this instance in effect a reference to another PhingFilterReader + * instance. + * + *

    You must not set another attribute or nest elements inside + * this element if you make it a reference.

    + * + * @param Reference $r the reference to which this instance is associated + * @exception BuildException if this instance already has been configured. + */ + function setRefid(Reference $r) { + if ( (count($this->parameters) !== 0) || ($this->className !== null) ) { + throw $this->tooManyAttributes(); + } + $o = $r->getReferencedObject($this->getProject()); + if ( $o instanceof PhingFilterReader ) { + $this->setClassName($o->getClassName()); + $this->setClasspath($o->getClassPath()); + foreach($o->getParams() as $p) { + $this->addParam($p); + } + } else { + $msg = $r->getRefId()." doesn\'t refer to a PhingFilterReader"; + throw new BuildException($msg); + } + + parent::setRefid($r); + } +} + + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/Reference.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/Reference.php new file mode 100644 index 0000000..3e53636 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/Reference.php @@ -0,0 +1,56 @@ +. + */ + +/** Class to hold a reference to another object in the project. + * @package phing.types + */ +class Reference { + + protected $refid; + + function __construct($id = null) { + if ($id !== null) { + $this->setRefId($id); + } + } + + function setRefId($id) { + $this->refid = (string) $id; + } + + function getRefId() { + return $this->refid; + } + + /** returns reference to object in references container of project */ + function getReferencedObject($project) { + if ($this->refid === null) { + throw new BuildException("No reference specified"); + } + $refs = $project->getReferences(); + $o = @$refs[$this->refid]; + if (!is_object($o)) { + throw new BuildException("Reference {$this->refid} not found."); + } + return $o; + } +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/RegularExpression.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/RegularExpression.php new file mode 100644 index 0000000..d1e3c55 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/RegularExpression.php @@ -0,0 +1,105 @@ +. +*/ + +include_once 'phing/types/DataType.php'; +include_once 'phing/Project.php'; +include_once 'phing/util/regexp/Regexp.php'; + +/* + * A regular expression datatype. Keeps an instance of the + * compiled expression for speed purposes. This compiled + * expression is lazily evaluated (it is compiled the first + * time it is needed). The syntax is the dependent on which + * regular expression type you are using. + * + * @author Yannick Lecaillez + * @version $Revision: 1.6 $ $Date: 2007-12-20 16:44:58 +0100 (jue 20 de dic de 2007) $ + * @access public + * @see phing.util.regex.RegexMatcher + * @package phing.types +*/ +class RegularExpression extends DataType { + + private $regexp = null; + private $ignoreCase = false; + + function __construct() { + $this->regexp = new Regexp(); + } + + function setPattern($pattern) { + $this->regexp->setPattern($pattern); + } + + function setReplace($replace) { + $this->regexp->setReplace($replace); + } + + function getPattern($p) { + if ( $this->isReference() ) { + $ref = $this->getRef($p); + return $ref->getPattern($p); + } + return $this->regexp->getPattern(); + } + + function getReplace($p) { + if ( $this->isReference() ) { + $ref = $this->getRef($p); + return $ref->getReplace($p); + } + + return $this->regexp->getReplace(); + } + + function setIgnoreCase($bit) { + $this->regexp->setIgnoreCase($bit); + } + + function getIgnoreCase() { + return $this->regexp->getIgnoreCase(); + } + + function getRegexp(Project $p) { + if ( $this->isReference() ) { + $ref = $this->getRef($p); + return $ref->getRegexp($p); + } + return $this->regexp; + } + + function getRef(Project $p) { + if ( !$this->checked ) { + $stk = array(); + array_push($stk, $this); + $this->dieOnCircularReference($stk, $p); + } + + $o = $this->ref->getReferencedObject($p); + if ( !($o instanceof RegularExpression) ) { + throw new BuildException($this->ref->getRefId()." doesn't denote a RegularExpression"); + } else { + return $o; + } + } +} + + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/TokenReader.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/TokenReader.php new file mode 100644 index 0000000..7233991 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/TokenReader.php @@ -0,0 +1,66 @@ +. +*/ + +// include_once 'phing/system/io/Reader.php'; // really this is unrelated to Reader +include_once 'phing/system/io/IOException.php'; +include_once 'phing/filters/ReplaceTokens.php'; // For class Token + +/** + * Abstract class for TokenReaders. + * + * @author Manuel Holtgewe + * @version $Revision: 1.5 $ + * @package phing.filters.util + */ +abstract class TokenReader { + + /** + * Reference to the Project the TokenReader is used in. + * @var Project + */ + protected $project; + + /** + * Constructor + * @param object Reference to the project the TokenReader is used in. + */ + function __construct(Project $project) { + $this->project = $project; + } + + /** + * Utility function for logging + */ + function log($level, $msg) { + $this->project->log($level, $msg); + } + + /** + * Reads the next token from the Reader + * + * @throws IOException - On error + * @return string + */ + abstract public function readToken(); + +} + + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/TokenSource.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/TokenSource.php new file mode 100644 index 0000000..ccaee63 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/TokenSource.php @@ -0,0 +1,157 @@ +. +*/ + +require_once 'phing/types/DataType.php'; +include_once 'phing/util/StringHelper.php'; + +/** + * A parameter is composed of a name, type and value. + * + * Example of usage: + * + * + * + * + * + * + * + * + * or: + * + * + * + * + * + * + * + * @author Yannick Lecaillez + * @package phing.types + */ +class TokenSource extends DataType { + + /** + * String to hold the path to the TokenReader + * @var string + */ + protected $classname = null; + + /** + * Array holding parameters for the wrapped TokenReader. + * @var array + */ + protected $parameters = array(); + + /** + * Reference to the TokenReader used by this TokenSource + * @var TokenReader + */ + protected $reader; + + /** + * Array with key/value pairs of tokens + */ + protected $tokens = array(); + + /** + * This method is called to load the sources from the reader + * into the buffer of the source. + */ + function load() { + // Create new Reader + if ($this->classname === null) { + throw new BuildException("No Classname given to TokenSource."); + } + + $classname = Phing::import($this->classname); + $this->reader = new $classname($this->project); + + // Configure Reader + $this->configureTokenReader($this->reader); + + // Load Tokens + try { + while ($token = $this->reader->readToken()) { + $this->tokens[] = $token; + } + } catch (BuildException $e) { + $this->log("Error reading TokenSource: " . $e->getMessage(), Project::MSG_WARN); + } catch (IOException $e) { + $this->log("Error reading TokenSource: " . $e->getMessage(), Project::MSG_WARN); + } + } + + /** + * This function uses the wrapper to read the tokens and then + * returns them. + * + * @access public + */ + function getTokens() { + if ($this->tokens === null) + $this->Load(); + + return $this->tokens; + } + + /** + * Configures a TokenReader with the parameters passed to the + * TokenSource. + * @param TokenReader $reader + */ + private function configureTokenReader(TokenReader $reader) { + $count = count($this->parameters); + for ($i = 0; $i < $count; $i++) { + $method_name = "Set" . $this->parameters[$i]->getName(); + $value = $this->parameters[$i]->getValue(); + $reader->$method_name($value); + } + } + + /** + * Set the classname (dot-path) to use for handling token replacement. + * @param string $c + */ + function setClassname($c) { + $this->classname = $c; + } + + /** + * Returns the qualified classname (dot-path) to use for handling token replacement. + * @return string + */ + function getClassname() { + return $this->classname; + } + + /** + * Create nested tag. + * Uses standard name/value Parameter class. + * @return Parameter + */ + function createParam() { + $num = array_push($this->parameters, new Parameter()); + return $this->parameters[$num-1]; + } +} + + + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/defaults.properties b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/defaults.properties new file mode 100644 index 0000000..a2d8635 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/defaults.properties @@ -0,0 +1,13 @@ +# phing default types +commandline=phing.types.Commandline +fileset=phing.types.FileSet +dirset=phing.types.DirSet +filelist=phing.types.FileList +patternset=phing.types.PatternSet +mapper=phing.types.Mapper +filterchain=phing.types.FilterChain +filterreader=phing.types.PhingFilterReader +regexp=phing.types.RegularExpression +param=phing.types.Parameter +path=phing.types.Path +selector=phing.types.selectors.SelectSelector \ No newline at end of file diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/all-wcprops new file mode 100644 index 0000000..9b316ca --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/all-wcprops @@ -0,0 +1,149 @@ +K 25 +svn:wc:ra_dav:version-url +V 54 +/!svn/ver/432/tags/2.3.3/classes/phing/types/selectors +END +ContainsRegexpSelector.php +K 25 +svn:wc:ra_dav:version-url +V 81 +/!svn/ver/432/tags/2.3.3/classes/phing/types/selectors/ContainsRegexpSelector.php +END +SelectorScanner.php +K 25 +svn:wc:ra_dav:version-url +V 74 +/!svn/ver/432/tags/2.3.3/classes/phing/types/selectors/SelectorScanner.php +END +MajoritySelector.php +K 25 +svn:wc:ra_dav:version-url +V 75 +/!svn/ver/432/tags/2.3.3/classes/phing/types/selectors/MajoritySelector.php +END +NoneSelector.php +K 25 +svn:wc:ra_dav:version-url +V 71 +/!svn/ver/432/tags/2.3.3/classes/phing/types/selectors/NoneSelector.php +END +DependSelector.php +K 25 +svn:wc:ra_dav:version-url +V 73 +/!svn/ver/432/tags/2.3.3/classes/phing/types/selectors/DependSelector.php +END +NotSelector.php +K 25 +svn:wc:ra_dav:version-url +V 70 +/!svn/ver/432/tags/2.3.3/classes/phing/types/selectors/NotSelector.php +END +SelectorUtils.php +K 25 +svn:wc:ra_dav:version-url +V 72 +/!svn/ver/432/tags/2.3.3/classes/phing/types/selectors/SelectorUtils.php +END +AndSelector.php +K 25 +svn:wc:ra_dav:version-url +V 70 +/!svn/ver/432/tags/2.3.3/classes/phing/types/selectors/AndSelector.php +END +DepthSelector.php +K 25 +svn:wc:ra_dav:version-url +V 72 +/!svn/ver/432/tags/2.3.3/classes/phing/types/selectors/DepthSelector.php +END +BaseSelector.php +K 25 +svn:wc:ra_dav:version-url +V 71 +/!svn/ver/432/tags/2.3.3/classes/phing/types/selectors/BaseSelector.php +END +SizeSelector.php +K 25 +svn:wc:ra_dav:version-url +V 71 +/!svn/ver/432/tags/2.3.3/classes/phing/types/selectors/SizeSelector.php +END +DateSelector.php +K 25 +svn:wc:ra_dav:version-url +V 71 +/!svn/ver/432/tags/2.3.3/classes/phing/types/selectors/DateSelector.php +END +BaseSelectorContainer.php +K 25 +svn:wc:ra_dav:version-url +V 80 +/!svn/ver/432/tags/2.3.3/classes/phing/types/selectors/BaseSelectorContainer.php +END +ContainsSelector.php +K 25 +svn:wc:ra_dav:version-url +V 75 +/!svn/ver/432/tags/2.3.3/classes/phing/types/selectors/ContainsSelector.php +END +FileSelector.php +K 25 +svn:wc:ra_dav:version-url +V 71 +/!svn/ver/432/tags/2.3.3/classes/phing/types/selectors/FileSelector.php +END +SelectSelector.php +K 25 +svn:wc:ra_dav:version-url +V 73 +/!svn/ver/432/tags/2.3.3/classes/phing/types/selectors/SelectSelector.php +END +FilenameSelector.php +K 25 +svn:wc:ra_dav:version-url +V 75 +/!svn/ver/432/tags/2.3.3/classes/phing/types/selectors/FilenameSelector.php +END +OrSelector.php +K 25 +svn:wc:ra_dav:version-url +V 69 +/!svn/ver/432/tags/2.3.3/classes/phing/types/selectors/OrSelector.php +END +PresentSelector.php +K 25 +svn:wc:ra_dav:version-url +V 74 +/!svn/ver/432/tags/2.3.3/classes/phing/types/selectors/PresentSelector.php +END +TypeSelector.php +K 25 +svn:wc:ra_dav:version-url +V 71 +/!svn/ver/432/tags/2.3.3/classes/phing/types/selectors/TypeSelector.php +END +BaseExtendSelector.php +K 25 +svn:wc:ra_dav:version-url +V 77 +/!svn/ver/432/tags/2.3.3/classes/phing/types/selectors/BaseExtendSelector.php +END +SelectorContainer.php +K 25 +svn:wc:ra_dav:version-url +V 76 +/!svn/ver/432/tags/2.3.3/classes/phing/types/selectors/SelectorContainer.php +END +ExtendSelector.php +K 25 +svn:wc:ra_dav:version-url +V 73 +/!svn/ver/432/tags/2.3.3/classes/phing/types/selectors/ExtendSelector.php +END +ExtendFileSelector.php +K 25 +svn:wc:ra_dav:version-url +V 77 +/!svn/ver/432/tags/2.3.3/classes/phing/types/selectors/ExtendFileSelector.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/entries new file mode 100644 index 0000000..c175377 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/entries @@ -0,0 +1,844 @@ +10 + +dir +1404 +http://phing.mirror.svn.symfony-project.com/tags/2.3.3/classes/phing/types/selectors +http://phing.mirror.svn.symfony-project.com + + + +2008-10-15T14:26:00.850037Z +396 +hans + + + + + + + + + + + + + + +c8b19502-6211-4773-8637-5aef67d587fc + +ContainsRegexpSelector.php +file + + + + +2012-05-10T18:42:04.369550Z +9a973b24c6c892abcb080823fd70a324 +2006-09-14T20:19:08.286051Z +123 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +5652 + +SelectorScanner.php +file + + + + +2012-05-10T18:42:04.369550Z +7a5fa75cf499d4a6d25f1a6ca7d3cf7d +2006-09-14T20:19:08.286051Z +123 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +1832 + +MajoritySelector.php +file + + + + +2012-05-10T18:42:04.369550Z +b2383465a2cd1c117e7c7ecd72632fef +2006-09-14T20:19:08.286051Z +123 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +3309 + +NoneSelector.php +file + + + + +2012-05-10T18:42:04.381552Z +dd65802fcf2f64ff6d1cc46f2b5c3e5b +2006-09-14T20:19:08.286051Z +123 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +2548 + +DependSelector.php +file + + + + +2012-05-10T18:42:04.381552Z +0c34acdefa1d67cce98ac70a3919517a +2006-09-14T20:19:08.286051Z +123 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +5248 + +NotSelector.php +file + + + + +2012-05-10T18:42:04.437551Z +2af59f645a8716d071f9cd30307a72a8 +2006-09-14T20:19:08.286051Z +123 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +2070 + +SelectorUtils.php +file + + + + +2012-05-10T18:42:04.434304Z +4c036274b0751674c7f65f23f52527a1 +2006-09-14T20:19:08.286051Z +123 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +16371 + +AndSelector.php +file + + + + +2012-05-10T18:42:04.437551Z +d5f1b5729152c0b6a40fa6836592f0da +2006-09-14T20:19:08.286051Z +123 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +2505 + +DepthSelector.php +file + + + + +2012-05-10T18:42:04.437551Z +588648bf4c48ab911ccb13234ad28d25 +2006-09-14T20:19:08.286051Z +123 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +5735 + +BaseSelector.php +file + + + + +2012-05-10T18:42:04.441549Z +b1f94367c760eb997c664279047f7315 +2006-09-14T20:19:08.286051Z +123 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +2829 + +SizeSelector.php +file + + + + +2012-05-10T18:42:04.437551Z +13cd95e8c3410757dc7898637cdbfc62 +2006-09-14T20:19:08.286051Z +123 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +8816 + +DateSelector.php +file + + + + +2012-05-10T18:42:04.441549Z +6881bef27c58aa435eb55302318ab644 +2008-10-15T14:26:00.850037Z +396 +hans +has-props + + + + + + + + + + + + + + + + + + + + +7621 + +BaseSelectorContainer.php +file + + + + +2012-05-10T18:42:04.441549Z +0c39f85c340926a11dc10dcb88eecd45 +2006-09-14T20:19:08.286051Z +123 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +7523 + +ContainsSelector.php +file + + + + +2012-05-10T18:42:04.441549Z +8fdcfd79270575988d67588182678fd9 +2006-09-14T20:19:08.286051Z +123 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +5127 + +SelectSelector.php +file + + + + +2012-05-10T18:42:04.445551Z +b974c8da2fff71b4b7e937cd036da1c8 +2006-09-14T20:19:08.286051Z +123 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +3864 + +FileSelector.php +file + + + + +2012-05-10T18:42:04.445551Z +32ef001acc51f2925f7fcb353bd98f0d +2006-09-14T20:19:08.286051Z +123 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +1888 + +FilenameSelector.php +file + + + + +2012-05-10T18:42:04.445551Z +be7fe3cedc9b500998119f3bf87992da +2006-09-14T20:19:08.286051Z +123 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +5569 + +OrSelector.php +file + + + + +2012-05-10T18:42:04.445551Z +ac87a8a97050ad5a937da6b5ef4fda91 +2006-09-14T20:19:08.286051Z +123 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +2579 + +PresentSelector.php +file + + + + +2012-05-10T18:42:04.449551Z +8d0b2afd29e3b0c67defe52d8c62aae3 +2006-09-14T20:19:08.286051Z +123 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +5584 + +TypeSelector.php +file + + + + +2012-05-10T18:42:04.449551Z +43662a5f0f3fb7851200b51730fd3c6d +2006-09-14T20:19:08.286051Z +123 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +3978 + +BaseExtendSelector.php +file + + + + +2012-05-10T18:42:04.449551Z +5269463f3d1bd79d408e0aec46137a19 +2006-09-14T20:19:08.286051Z +123 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +2315 + +SelectorContainer.php +file + + + + +2012-05-10T18:42:04.449551Z +3f27d2f7263ba8f587fd6fc3b5c962eb +2006-09-14T20:19:08.286051Z +123 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +3797 + +ExtendSelector.php +file + + + + +2012-05-10T18:42:04.449551Z +d3871a753d77a14d08136d330a8f5a91 +2007-11-01T01:25:23.078338Z +277 +hans +has-props + + + + + + + + + + + + + + + + + + + + +4686 + +ExtendFileSelector.php +file + + + + +2012-05-10T18:42:04.453550Z +6e1501c165090130c179062fbad84e42 +2006-09-14T20:19:08.286051Z +123 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +1928 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/AndSelector.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/AndSelector.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/AndSelector.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/BaseExtendSelector.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/BaseExtendSelector.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/BaseExtendSelector.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/BaseSelector.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/BaseSelector.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/BaseSelector.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/BaseSelectorContainer.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/BaseSelectorContainer.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/BaseSelectorContainer.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/ContainsRegexpSelector.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/ContainsRegexpSelector.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/ContainsRegexpSelector.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/ContainsSelector.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/ContainsSelector.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/ContainsSelector.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/DateSelector.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/DateSelector.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/DateSelector.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/DependSelector.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/DependSelector.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/DependSelector.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/DepthSelector.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/DepthSelector.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/DepthSelector.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/ExtendFileSelector.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/ExtendFileSelector.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/ExtendFileSelector.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/ExtendSelector.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/ExtendSelector.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/ExtendSelector.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/FileSelector.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/FileSelector.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/FileSelector.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/FilenameSelector.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/FilenameSelector.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/FilenameSelector.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/MajoritySelector.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/MajoritySelector.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/MajoritySelector.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/NoneSelector.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/NoneSelector.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/NoneSelector.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/NotSelector.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/NotSelector.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/NotSelector.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/OrSelector.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/OrSelector.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/OrSelector.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/PresentSelector.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/PresentSelector.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/PresentSelector.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/SelectSelector.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/SelectSelector.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/SelectSelector.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/SelectorContainer.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/SelectorContainer.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/SelectorContainer.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/SelectorScanner.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/SelectorScanner.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/SelectorScanner.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/SelectorUtils.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/SelectorUtils.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/SelectorUtils.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/SizeSelector.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/SizeSelector.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/SizeSelector.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/TypeSelector.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/TypeSelector.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/prop-base/TypeSelector.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/AndSelector.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/AndSelector.php.svn-base new file mode 100644 index 0000000..f36556a --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/AndSelector.php.svn-base @@ -0,0 +1,67 @@ +. + */ + +require_once 'phing/types/selectors/BaseSelectorContainer.php'; + +/** + * This selector has a collection of other selectors, all of which have to + * select a file in order for this selector to select it. + * + * @author Hans Lellelid, hans@xmpl.org (Phing) + * @author Bruce Atherton (Ant) + * @package phing.types.selectors + */ +class AndSelector extends BaseSelectorContainer { + + public function toString() { + $buf = ""; + if ($this->hasSelectors()) { + $buf .= "{andselect: "; + $buf .= parent::toString(); + $buf .= "}"; + } + return $buf; + } + + /** + * Returns true (the file is selected) only if all other selectors + * agree that the file should be selected. + * + * @param basedir the base directory the scan is being done from + * @param filename the name of the file to check + * @param file a PhingFile object for the filename that the selector + * can use + * @return whether the file should be selected or not + */ + public function isSelected(PhingFile $basedir, $filename, PhingFile $file) { + $this->validate(); + $selectors = $this->selectorElements(); + for($i=0,$size=count($selectors); $i < $size; $i++) { + $result = $selectors[$i]->isSelected($basedir, $filename, $file); + if (!$result) { + return false; + } + } + return true; + } + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/BaseExtendSelector.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/BaseExtendSelector.php.svn-base new file mode 100644 index 0000000..0c36c2b --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/BaseExtendSelector.php.svn-base @@ -0,0 +1,62 @@ +. + */ + +require_once 'phing/types/selectors/ExtendFileSelector.php'; +require_once 'phing/types/selectors/BaseSelector.php'; +include_once 'phing/types/Parameter.php'; + +/** + * Convenience base class for all selectors accessed through ExtendSelector. + * It provides support for gathering the parameters together as well as for + * assigning an error message and throwing a build exception if an error is + * detected. + * + * @author Hans Lellelid, hans@xmpl.org (Phing) + * @author Bruce Atherton, bruce@callenish.com (Ant) + * @package phing.types.selectors + */ +abstract class BaseExtendSelector extends BaseSelector implements ExtendFileSelector { + + /** The passed in parameter array. */ + protected $parameters = null; + + /** + * Set all the Parameters for this custom selector, collected by + * the ExtendSelector class. + * + * @param parameters the complete set of parameters for this selector + */ + public function setParameters($parameters) { + $this->parameters = $parameters; + } + + /** + * Allows access to the parameters gathered and set within the + * <custom> tag. + * + * @return the set of parameters defined for this selector + */ + protected function getParameters() { + return $this->parameters; + } +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/BaseSelector.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/BaseSelector.php.svn-base new file mode 100644 index 0000000..e1f8e20 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/BaseSelector.php.svn-base @@ -0,0 +1,84 @@ +. + */ + +require_once 'phing/types/selectors/FileSelector.php'; + +/** + * A convenience base class that you can subclass Selectors from. It + * provides some helpful common behaviour. Note that there is no need + * for Selectors to inherit from this class, it is only necessary that + * they implement FileSelector. + * + * @author Bruce Atherton + * @package phing.types.selectors + */ +abstract class BaseSelector extends DataType implements FileSelector { + + private $errmsg = null; + + /** + * Allows all selectors to indicate a setup error. Note that only + * the first error message is recorded. + * + * @param msg The error message any BuildException should throw. + */ + public function setError($msg) { + if ($this->errmsg === null) { + $this->errmsg = $msg; + } + } + + /** + * Returns any error messages that have been set. + * + * @return the error condition + */ + public function getError() { + return $this->errmsg; + } + + + /** + *

    Subclasses can override this method to provide checking of their + * state. So long as they call validate() from isSelected(), this will + * be called automatically (unless they override validate()).

    + *

    Implementations should check for incorrect settings and call + * setError() as necessary.

    + */ + public function verifySettings() { + } + + /** + * Subclasses can use this to throw the requisite exception + * in isSelected() in the case of an error condition. + */ + public function validate() { + if ($this->getError() === null) { + $this->verifySettings(); + } + if ($this->getError() !== null) { + throw new BuildException($this->errmsg); + } + } + +} + + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/BaseSelectorContainer.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/BaseSelectorContainer.php.svn-base new file mode 100644 index 0000000..9dd90d3 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/BaseSelectorContainer.php.svn-base @@ -0,0 +1,270 @@ +. + */ + +require_once 'phing/types/selectors/SelectorContainer.php'; +require_once 'phing/types/selectors/BaseSelector.php'; + +/** + * This is the base class for selectors that can contain other selectors. + * + * @author Bruce Atherton (Ant) + * @package phing.types.selectors + */ +abstract class BaseSelectorContainer extends BaseSelector implements SelectorContainer { + + private $selectorsList = array(); + + /** + * Indicates whether there are any selectors here. + */ + public function hasSelectors() { + return !(empty($this->selectorsList)); + } + + /** + * Gives the count of the number of selectors in this container + */ + public function selectorCount() { + return count($this->selectorsList); + } + + /** + * Returns a copy of the selectors as an array. + */ + public function getSelectors(Project $p) { + $result = array(); + for($i=0,$size=count($this->selectorsList); $i < $size; $i++) { + $result[] = clone $this->selectorsList[$i]; + } + return $result; + } + + /** + * Returns an array for accessing the set of selectors (not a copy). + */ + public function selectorElements() { + return $this->selectorsList; + } + + /** + * Convert the Selectors within this container to a string. This will + * just be a helper class for the subclasses that put their own name + * around the contents listed here. + * + * @return comma separated list of Selectors contained in this one + */ + public function toString() { + $buf = ""; + $arr = $this->selectorElements(); + for($i=0,$size=count($arr); $i < $size; $i++) { + $buf .= $arr[$i]->toString() . (isset($arr[$i+1]) ? ', ' : ''); + } + return $buf; + } + + /** + * Add a new selector into this container. + * + * @param selector the new selector to add + * @return the selector that was added + */ + public function appendSelector(FileSelector $selector) { + $this->selectorsList[] = $selector; + } + + /** + *

    This implementation validates the container by calling + * verifySettings() and then validates each contained selector + * provided that the selector implements the validate interface. + *

    + *

    Ordinarily, this will validate all the elements of a selector + * container even if the isSelected() method of some elements is + * never called. This has two effects:

    + *
      + *
    • Validation will often occur twice. + *
    • Since it is not required that selectors derive from + * BaseSelector, there could be selectors in the container whose + * error conditions are not detected if their isSelected() call + * is never made. + *
    + */ + public function validate() { + $this->verifySettings(); + $errmsg = $this->getError(); + if ($errmsg !== null) { + throw new BuildException($errmsg); + } + foreach($this->selectorsList as $o) { + if ($o instanceof BaseSelector) { + $o->validate(); + } + } + } + + /* Methods below all add specific selectors */ + + /** + * add a "Select" selector entry on the selector list + */ + public function createSelector() { + $o = new SelectSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add an "And" selector entry on the selector list + */ + public function createAnd() { + $o = new AndSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add an "Or" selector entry on the selector list + */ + public function createOr() { + $o = new OrSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add a "Not" selector entry on the selector list + */ + public function createNot() { + $o = new NotSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add a "None" selector entry on the selector list + */ + public function createNone() { + $o = new NoneSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add a majority selector entry on the selector list + */ + public function createMajority() { + $o = new MajoritySelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add a selector date entry on the selector list + */ + public function createDate() { + $o = new DateSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add a selector size entry on the selector list + */ + public function createSize() { + $o = new SizeSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add a selector filename entry on the selector list + */ + public function createFilename() { + $o = new FilenameSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add an extended selector entry on the selector list + */ + public function createCustom() { + $o = new ExtendSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add a contains selector entry on the selector list + */ + public function createContains() { + $o = new ContainsSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add a contains selector entry on the selector list + */ + public function createContainsRegexp() { + $o = new ContainsRegexpSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add a present selector entry on the selector list + */ + public function createPresent() { + $o = new PresentSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add a depth selector entry on the selector list + */ + public function createDepth() { + $o = new DepthSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add a depends selector entry on the selector list + */ + public function createDepend() { + $o = new DependSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add a type selector entry on the selector list + */ + public function createType() { + $o = new TypeSelector(); + $this->appendSelector($o); + return $o; + } + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/ContainsRegexpSelector.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/ContainsRegexpSelector.php.svn-base new file mode 100644 index 0000000..d57f6a4 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/ContainsRegexpSelector.php.svn-base @@ -0,0 +1,164 @@ +. + */ + +require_once 'phing/types/selectors/BaseExtendSelector.php'; +include_once 'phing/types/RegularExpression.php'; + +/** + * Selector that filters files based on whether they contain a + * particular string using regexp. + * + * @author Hans Lellelid (Phing) + * @author Bruce Atherton (Ant) + * @version $Revision: 1.3 $ + * @package phing.types.selectors + */ +class ContainsRegexpSelector extends BaseExtendSelector { + + /** @var string The expression set from XML. */ + private $userProvidedExpression; + + /** @var Regexp */ + private $myExpression; + + private $casesensitive = true; + + /** @var RegularExpression */ + private $myRegExp; + + const EXPRESSION_KEY = "expression"; + + const CASE_KEY = "casesensitive"; + + public function toString() { + $buf = "{containsregexpselector expression: "; + $buf .= $this->userProvidedExpression; + $buf .= " casesensitive: "; + if ($this->casesensitive) { + $buf .= "true"; + } else { + $buf .= "false"; + } + $buf .= "}"; + return $buf; + } + + /** + * The expression to match on within a file. + * + * @param string $exp the string that a file must contain to be selected. + */ + public function setExpression($exp) { + $this->userProvidedExpression = $exp; + } + + /** + * Whether to ignore case in the regex match. + * + * @param boolean $casesensitive whether to pay attention to case sensitivity + */ + public function setCasesensitive($casesensitive) { + $this->casesensitive = $casesensitive; + } + + /** + * When using this as a custom selector, this method will be called. + * It translates each parameter into the appropriate setXXX() call. + * + * @param array $parameters the complete set of parameters for this selector + */ + public function setParameters($parameters) { + parent::setParameters($parameters); + if ($parameters !== null) { + for ($i=0,$size=count($parameters); $i < $size; $i++) { + $paramname = $parameters[$i]->getName(); + switch(strtolower($paramname)) { + case self::EXPRESSION_KEY: + $this->setExpression($parameters[$i]->getValue()); + break; + case self::CASE_KEY: + $this->setCasesensitive($parameters[$i]->getValue()); + break; + default: + $this->setError("Invalid parameter " . $paramname); + } + } // for each param + } // if params + } + + /** + * Checks to make sure all settings are kosher. In this case, it + * means that the pattern attribute has been set. + * + */ + public function verifySettings() { + if ($this->userProvidedExpression === null) { + $this->setError("The expression attribute is required"); + } + } + + /** + * The heart of the matter. This is where the selector gets to decide + * on the inclusion of a file in a particular fileset. + * + * @param basedir the base directory the scan is being done from + * @param filename is the name of the file to check + * @param file a PhingFile object the selector can use + * @return whether the file should be selected or not + */ + public function isSelected(PhingFile $basedir, $filename, PhingFile $file) { + + $this->validate(); + + if ($file->isDirectory()) { + return true; + } + + if ($this->myRegExp === null) { + $this->myRegExp = new RegularExpression(); + $this->myRegExp->setPattern($this->userProvidedExpression); + if (!$this->casesensitive) { + $this->myRegExp->setIgnoreCase(true); + } + $this->myExpression = $this->myRegExp->getRegexp($this->getProject()); + } + + $in = null; + try { + $in = new BufferedReader(new FileReader($file)); + $teststr = $in->readLine(); + while ($teststr !== null) { + if ($this->myExpression->matches($teststr)) { + return true; + } + $teststr = $in->readLine(); + } + return false; + } catch (IOException $ioe) { + if ($in) $in->close(); + throw new BuildException("Could not read file " . $filename); + } + $in->close(); + } + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/ContainsSelector.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/ContainsSelector.php.svn-base new file mode 100644 index 0000000..ab2c641 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/ContainsSelector.php.svn-base @@ -0,0 +1,151 @@ +. + */ + +include_once 'phing/types/selectors/BaseExtendSelector.php'; + +/** + * Selector that filters files based on whether they contain a + * particular string. + * + * @author Hans Lellelid (Phing) + * @author Bruce Atherton (Ant) + * @package phing.types.selectors + */ +class ContainsSelector extends BaseExtendSelector { + + private $contains = null; + private $casesensitive = true; + const CONTAINS_KEY = "text"; + const CASE_KEY = "casesensitive"; + + public function toString() { + $buf = "{containsselector text: "; + $buf .= $this->contains; + $buf .= " casesensitive: "; + if ($this->casesensitive) { + $buf .= "true"; + } else { + $buf .= "false"; + } + $buf .= "}"; + return $buf; + } + + /** + * The string to search for within a file. + * + * @param string $contains the string that a file must contain to be selected. + */ + public function setText($contains) { + $this->contains = $contains; + } + + /** + * Whether to ignore case in the string being searched. + * + * @param boolean $casesensitive whether to pay attention to case sensitivity + */ + public function setCasesensitive($casesensitive) { + $this->casesensitive = $casesensitive; + } + + /** + * When using this as a custom selector, this method will be called. + * It translates each parameter into the appropriate setXXX() call. + * + * @param array $parameters the complete set of parameters for this selector + */ + public function setParameters($parameters) { + parent::setParameters($parameters); + if ($parameters !== null) { + for ($i=0,$size=count($parameters); $i < $size; $i++) { + $paramname = $parameters[$i]->getName(); + switch(strtolower($paramname)) { + case self::CONTAINS_KEY: + $this->setText($parameters[$i]->getValue()); + break; + case self::CASE_KEY: + $this->setCasesensitive($parameters[$i]->getValue()); + break; + default: + $this->setError("Invalid parameter " . $paramname); + } + } // for each param + } // if params + } + + /** + * Checks to make sure all settings are kosher. In this case, it + * means that the pattern attribute has been set. + * + */ + public function verifySettings() { + if ($this->contains === null) { + $this->setError("The text attribute is required"); + } + } + + /** + * The heart of the matter. This is where the selector gets to decide + * on the inclusion of a file in a particular fileset. + * + * @param basedir the base directory the scan is being done from + * @param filename is the name of the file to check + * @param file a PhingFile object the selector can use + * @return whether the file should be selected or not + */ + public function isSelected(PhingFile $basedir, $filename, PhingFile $file) { + + $this->validate(); + + if ($file->isDirectory()) { + return true; + } + + $userstr = $this->contains; + if (!$this->casesensitive) { + $userstr = strtolower($this->contains); + } + + $in = null; + try { + $in = new BufferedReader(new FileReader($file)); + $teststr = $in->readLine(); + while ($teststr !== null) { + if (!$this->casesensitive) { + $teststr = strtolower($teststr); + } + if (strpos($teststr, $userstr) !== false) { + return true; + } + $teststr = $in->readLine(); + } + return false; + } catch (IOException $ioe) { + if ($in) $in->close(); + throw new BuildException("Could not read file " . $filename); + } + $in->close(); + } + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/DateSelector.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/DateSelector.php.svn-base new file mode 100644 index 0000000..8c5584b --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/DateSelector.php.svn-base @@ -0,0 +1,214 @@ +. + */ + +require_once 'phing/types/selectors/BaseExtendSelector.php'; + +/** + * Selector that chooses files based on their last modified date. Ant uses + * millisecond precision (thanks to Java); PHP is forced to use only seconds + * precision. + * + * @author Hans Lellelid (Phing) + * @author Bruce Atherton (Ant) + * @version $Revision: 1.10 $ + * @package phing.types.selecctors + */ +class DateSelector extends BaseExtendSelector { + + private $seconds = -1; // millis in Ant, but PHP doesn't support that level of precision + private $dateTime = null; + private $includeDirs = false; + private $granularity = 0; + private $cmp = 2; + const MILLIS_KEY = "millis"; + const DATETIME_KEY = "datetime"; + const CHECKDIRS_KEY = "checkdirs"; + const GRANULARITY_KEY = "granularity"; + const WHEN_KEY = "when"; + private static $timeComparisons = array("before", "after", "equal"); + + public function __construct() { + //if (Os.isFamily("dos")) { + // granularity = 2000; + //} + } + + public function toString() { + $buf = "{dateselector date: "; + $buf .= $this->dateTime; + $buf .= " compare: "; + if ($this->cmp === 0) { + $buf .= "before"; + } elseif ($this->cmp === 1) { + $buf .= "after"; + } else { + $buf .= "equal"; + } + $buf .= " granularity: "; + $buf .= $this->granularity; + $buf .= "}"; + return $buf; + } + + /** + * For users that prefer to express time in seconds since 1970 + * + * @param int $seconds the time to compare file's last modified date to, + * expressed in milliseconds + */ + public function setSeconds($seconds) { + $this->seconds = (int) $seconds; + } + + /** + * Returns the seconds value the selector is set for. + */ + public function getSeconds() { + return $this->seconds; + } + + /** + * Sets the date. The user must supply it in MM/DD/YYYY HH:MM AM_PM + * format + * + * @param string $dateTime a string in MM/DD/YYYY HH:MM AM_PM format + */ + public function setDatetime($dateTime) { + $dt = strtotime($dateTime); + if ($dt == -1) { + $this->setError("Date of " . $dateTime + . " Cannot be parsed correctly. It should be in" + . " a format parsable by PHP's strtotime() function."); + } else { + $this->dateTime = $dateTime; + $this->setSeconds($dt); + } + } + + /** + * Should we be checking dates on directories? + * + * @param boolean $includeDirs whether to check the timestamp on directories + */ + public function setCheckdirs($includeDirs) { + $this->includeDirs = (boolean) $includeDirs; + } + + /** + * Sets the number of milliseconds leeway we will give before we consider + * a file not to have matched a date. + * @param int $granularity + */ + public function setGranularity($granularity) { + $this->granularity = (int) $granularity; + } + + /** + * Sets the type of comparison to be done on the file's last modified + * date. + * + * @param string $cmp The comparison to perform + */ + public function setWhen($cmp) { + $idx = array_search($cmp, self::$timeComparisons, true); + if ($idx === null) { + $this->setError("Invalid value for ".WHEN_KEY.": ".$cmp); + } else { + $this->cmp = $idx; + } + } + + /** + * When using this as a custom selector, this method will be called. + * It translates each parameter into the appropriate setXXX() call. + * + * @param array $parameters the complete set of parameters for this selector + */ + public function setParameters($parameters) { + parent::setParameters($parameters); + if ($parameters !== null) { + for ($i=0,$size=count($parameters); $i < $size; $i++) { + $paramname = $parameters[$i]->getName(); + switch(strtolower($paramname)) { + case self::MILLIS_KEY: + $this->setMillis($parameters[$i]->getValue()); + break; + case self::DATETIME_KEY: + $this->setDatetime($parameters[$i]->getValue()); + break; + case self::CHECKDIRS_KEY: + $this->setCheckdirs($parameters[$i]->getValue()); + break; + case self::GRANULARITY_KEY: + $this->setGranularity($parameters[$i]->getValue()); + break; + case self::WHEN_KEY: + $this->setWhen($parameters[$i]->getValue()); + break; + default: + $this->setError("Invalid parameter " . $paramname); + } // switch + } + } + } + + /** + * This is a consistency check to ensure the selector's required + * values have been set. + */ + public function verifySettings() { + if ($this->dateTime === null && $this->seconds < 0) { + $this->setError("You must provide a datetime or the number of " + . "seconds."); + } elseif ($this->seconds < 0) { + $this->setError("Date of " . $this->dateTime + . " results in negative seconds" + . " value relative to epoch (January 1, 1970, 00:00:00 GMT)."); + } + } + + /** + * The heart of the matter. This is where the selector gets to decide + * on the inclusion of a file in a particular fileset. + * + * @param PhingFile $basedir the base directory the scan is being done from + * @param string $filename is the name of the file to check + * @param PhingFile $file is a PhingFile object the selector can use + * @return boolean Whether the file should be selected or not + */ + public function isSelected(PhingFile $basedir, $filename, PhingFile $file) { + $this->validate(); + if ($file->isDirectory() && ($this->includeDirs === false)) { + return true; + } + if ($this->cmp === 0) { + return (($file->lastModified() - $this->granularity) < $this->seconds); + } elseif ($this->cmp === 1) { + return (($file->lastModified() - $this->granularity) > $this->seconds); + } else { + return (abs($file->lastModified() - $this->seconds) <= $this->granularity); + } + } + +} + + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/DependSelector.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/DependSelector.php.svn-base new file mode 100644 index 0000000..1f4ae06 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/DependSelector.php.svn-base @@ -0,0 +1,151 @@ +. + */ + +require_once 'phing/types/selectors/BaseSelector.php'; + +/** + * Selector that filters files based on whether they are newer than + * a matching file in another directory tree. It can contain a mapper + * element, so isn't available as an ExtendSelector (since those + * parameters can't hold other elements). + * + * @author Hans Lellelid (Phing) + * @author Bruce Atherton (Ant) + * @version $Revision: 1.8 $ + * @package phing.types.selectors + */ +class DependSelector extends BaseSelector { + + private $targetdir = null; + private $mapperElement = null; + private $map = null; + private $granularity = 0; + + public function __construct() { + // not yet supported: + //if (Os.isFamily("dos")) { + // $this->granularity = 2000; + //} + } + + public function toString() { + $buf = "{dependselector targetdir: "; + if ($this->targetdir === null) { + $buf .= "NOT YET SET"; + } else { + $buf .= $this->targetdir->getName(); + } + $buf .= " granularity: "; + $buf .= $this->granularity; + if ($this->map !== null) { + $buf .= " mapper: "; + $buf .= $this->map->toString(); + } elseif ($this->mapperElement !== null) { + $buf .= " mapper: "; + $buf .= $this->mapperElement->toString(); + } + $buf .= "}"; + return $buf; + } + + /** + * The name of the file or directory which is checked for out-of-date + * files. + * + * @param targetdir the directory to scan looking for files. + */ + public function setTargetdir(PhingFile $targetdir) { + $this->targetdir = $targetdir; + } + + /** + * Sets the number of milliseconds leeway we will give before we consider + * a file out of date. + */ + public function setGranularity($granularity) { + $this->granularity = (int) granularity; + } + + /** + * Defines the FileNameMapper to use (nested mapper element). + * @throws BuildException + */ + public function createMapper() { + if ($this->mapperElement !== null) { + throw new BuildException("Cannot define more than one mapper"); + } + $this->mapperElement = new Mapper($this->project); + return $this->mapperElement; + } + + + /** + * Checks to make sure all settings are kosher. In this case, it + * means that the dest attribute has been set and we have a mapper. + */ + public function verifySettings() { + if ($this->targetdir === null) { + $this->setError("The targetdir attribute is required."); + } + if ($this->mapperElement === null) { + $this->map = new IdentityMapper(); + } else { + $this->map = $this->mapperElement->getImplementation(); + } + if ($this->map === null) { + $this->setError("Could not set element."); + } + } + + /** + * The heart of the matter. This is where the selector gets to decide + * on the inclusion of a file in a particular fileset. + * + * @param basedir the base directory the scan is being done from + * @param filename is the name of the file to check + * @param file is a PhingFile object the selector can use + * @return whether the file should be selected or not + */ + public function isSelected(PhingFile $basedir, $filename, PhingFile $file) { + + $this->validate(); + + // Determine file whose out-of-dateness is to be checked + $destfiles = $this->map->main($filename); + + // If filename does not match the To attribute of the mapper + // then filter it out of the files we are considering + if ($destfiles === null) { + return false; + } + // Sanity check + if (count($destfiles) !== 1 || $destfiles[0] === null) { + throw new BuildException("Invalid destination file results for " . $this->targetdir . " with filename " . $filename); + } + $destname = $destfiles[0]; + $destfile = new PhingFile($this->targetdir, $destname); + + return SelectorUtils::isOutOfDate($file, $destfile, $this->granularity); + } + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/DepthSelector.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/DepthSelector.php.svn-base new file mode 100644 index 0000000..aeaeda0 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/DepthSelector.php.svn-base @@ -0,0 +1,158 @@ +. + */ + +require_once 'phing/types/selectors/BaseExtendSelector.php'; + +/** + * Selector that filters files based on the how deep in the directory + * tree they are. + * + * @author Hans Lellelid (Phing) + * @author Bruce Atherton (Ant) + * @version $Revision: 1.7 $ + * @package phing.types.selectors + */ +class DepthSelector extends BaseExtendSelector { + + public $min = -1; + public $max = -1; + const MIN_KEY = "min"; + const MAX_KEY = "max"; + + public function toString() { + $buf = "{depthselector min: "; + $buf .= $this->min; + $buf .= " max: "; + $buf .= $this->max; + $buf .= "}"; + return $buf; + } + + /** + * The minimum depth below the basedir before a file is selected. + * + * @param min minimum directory levels below basedir to go + */ + public function setMin($min) { + $this->min = (int) $min; + } + + /** + * The minimum depth below the basedir before a file is selected. + * + * @param min maximum directory levels below basedir to go + */ + public function setMax($max) { + $this->max = (int) $max; + } + + /** + * When using this as a custom selector, this method will be called. + * It translates each parameter into the appropriate setXXX() call. + * + * @param parameters the complete set of parameters for this selector + */ + public function setParameters($parameters) { + parent::setParameters($parameters); + if ($parameters !== null) { + for ($i = 0, $size=count($parameters); $i < $size; $i++) { + $paramname = $parameters[$i]->getName(); + switch(strtolower($paramname)) { + case self::MIN_KEY: + $this->setMin($parameters[$i]->getValue()); + break; + case self::MAX_KEY: + $this->setMax($parameters[$i]->getValue()); + break; + + default: + $this->setError("Invalud parameter " . $paramname); + } // switch + } + } + } + + /** + * Checks to make sure all settings are kosher. In this case, it + * means that the max depth is not lower than the min depth. + */ + public function verifySettings() { + if ($this->min < 0 && $this->max < 0) { + $this->setError("You must set at least one of the min or the " . + "max levels."); + } + if ($this->max < $this->min && $this->max > -1) { + $this->setError("The maximum depth is lower than the minimum."); + } + } + + /** + * The heart of the matter. This is where the selector gets to decide + * on the inclusion of a file in a particular fileset. Most of the work + * for this selector is offloaded into SelectorUtils, a static class + * that provides the same services for both FilenameSelector and + * DirectoryScanner. + * + * @param basedir the base directory the scan is being done from + * @param filename is the name of the file to check + * @param file is a PhingFile object the selector can use + * @return whether the file should be selected or not + */ + public function isSelected(PhingFile $basedir, $filename, PhingFile $file) { + + $this->validate(); + + $depth = -1; + // If you felt daring, you could cache the basedir absolute path + $abs_base = $basedir->getAbsolutePath(); + $abs_file = $file->getAbsolutePath(); + + $tok_base = explode(DIRECTORY_SEPARATOR, $abs_base); + $tok_file = explode(DIRECTORY_SEPARATOR, $abs_file); + + for($i=0,$size=count($tok_file); $i < $size; $i++) { + $filetoken = $tok_file[$i]; + if (isset($tok_base[$i])) { + $basetoken = $tok_base[$i]; + // Sanity check. Ditch it if you want faster performance + if ($basetoken !== $filetoken) { + throw new BuildException("File " . $filename . + " does not appear within " . $abs_base . "directory"); + } + } else { // no more basepath tokens + $depth++; + if ($this->max > -1 && $depth > $this->max) { + return false; + } + } + } + if (isset($tok_base[$i + 1])) { + throw new BuildException("File " . $filename . + " is outside of " . $abs_base . "directory tree"); + } + if ($this->min > -1 && $depth < $this->min) { + return false; + } + return true; + } + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/ExtendFileSelector.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/ExtendFileSelector.php.svn-base new file mode 100644 index 0000000..dc3c5cb --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/ExtendFileSelector.php.svn-base @@ -0,0 +1,43 @@ +. + */ + +require_once 'phing/types/Parameterizable.php'; +require_once 'phing/types/selectors/FileSelector.php'; + +/** + * This is the interface to be used by all custom selectors, those that are + * called through the <custom> tag. It is the amalgamation of two + * interfaces, the FileSelector and the Paramterizable interface. Note that + * you will almost certainly want the default behaviour for handling + * Parameters, so you probably want to use the BaseExtendSelector class + * as the base class for your custom selector rather than implementing + * this interface from scratch. + * + * @author Hans Lellelid (Phing) + * @author Bruce Atherton (Ant) + * @package phing.types.selectors + */ +interface ExtendFileSelector extends Parameterizable, FileSelector { + // No further methods necessary. This is just an amalgamation of two other + // interfaces. +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/ExtendSelector.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/ExtendSelector.php.svn-base new file mode 100644 index 0000000..1683a0a --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/ExtendSelector.php.svn-base @@ -0,0 +1,124 @@ +. + */ + +include_once 'phing/util/StringHelper.php'; + +/** + * Selector that selects files by forwarding the request on to other classes. + * + * TODO - Consider adding Path (phing.types.Path) support to this class + * and to the Mappers class. See Ant versions for implimentation details. + * + * @author Hans Lellelid (Phing) + * @author Bruce Atherton (Ant) + * @package phing.types.selectors + */ +class ExtendSelector extends BaseSelector { + + private $classname; + private $dynselector; + private $parameters = array(); + + /** + * Sets the classname of the custom selector. + * + * @param classname is the class which implements this selector + */ + public function setClassname($classname) { + $this->classname = $classname; + } + + /** + * Instantiates the identified custom selector class. + */ + public function selectorCreate() { + if ($this->classname !== null && $this->classname !== "") { + try { + // assume it's fully qualified, import it + $cls = Phing::import($this->classname); + + // make sure class exists + if (class_exists($cls)) { + $this->dynselector = new $cls(); + } else { + $this->setError("Selector " . $this->classname . " not initialized, no such class"); + } + } catch (Exception $e) { + $this->setError("Selector " . $this->classname . " not initialized, could not create class: " . $e->getMessage()); + } + } else { + $this->setError("There is no classname specified"); + } + } + + /** + * Create new parameters to pass to custom selector. + * + * @param p The new Parameter object + */ + public function addParam(Parameter $p) { + $this->parameters[] = $p; + } + + /** + * These are errors specific to ExtendSelector only. If there are + * errors in the custom selector, it should throw a BuildException + * when isSelected() is called. + */ + public function verifySettings() { + // Creation is done here rather than in isSelected() because some + // containers may do a validation pass before running isSelected(), + // but we need to check for the existence of the created class. + if ($this->dynselector === null) { + $this->selectorCreate(); + } + + if (empty($this->classname)) { + $this->setError("The classname attribute is required"); + } elseif ($this->dynselector === null) { + $this->setError("Internal Error: The custom selector was not created"); + } elseif ( !($this->dynselector instanceof ExtendFileSelector) && (count($this->parameters) > 0)) { + $this->setError("Cannot set parameters on custom selector that does not " + . "implement ExtendFileSelector."); + } + } + + + /** + * Allows the custom selector to choose whether to select a file. This + * is also where the Parameters are passed to the custom selector. + * + * @throws BuildException + */ + public function isSelected(PhingFile $basedir, $filename, PhingFile $file) { + + $this->validate(); + + if (count($this->parameters) > 0 && $this->dynselector instanceof ExtendFileSelector) { + // We know that dynselector must be non-null if no error message + $this->dynselector->setParameters($this->parameters); + } + return $this->dynselector->isSelected($basedir, $filename, $file); + } + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/FileSelector.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/FileSelector.php.svn-base new file mode 100644 index 0000000..26b8712 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/FileSelector.php.svn-base @@ -0,0 +1,47 @@ +. + */ + +/** + * This is the interface to be used by all selectors. + * + * @author Hans Lellelid, hans@xmpl.org (Phing) + * @author Bruce Atherton, bruce@callenish.com (Ant) + * @package phing.types.selectors + */ +interface FileSelector { + + /** + * Method that each selector will implement to create their + * selection behaviour. If there is a problem with the setup + * of a selector, it can throw a BuildException to indicate + * the problem. + * + * @param basedir A PhingFile object for the base directory + * @param filename The name of the file to check + * @param file A PhingFile object for this filename + * @return whether the file should be selected or not + * @throws BuildException if the selector was not configured correctly + */ + public function isSelected(PhingFile $basedir, $filename, PhingFile $file); + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/FilenameSelector.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/FilenameSelector.php.svn-base new file mode 100644 index 0000000..d0a6af1 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/FilenameSelector.php.svn-base @@ -0,0 +1,157 @@ +. + */ + + +include_once 'phing/types/selectors/BaseExtendSelector.php'; + +/** + * Selector that filters files based on the filename. + * + * @author Hans Lellelid, hans@xmpl.org (Phing) + * @author Bruce Atherton, bruce@callenish.com (Ant) + * @package phing.types.selectors + */ +class FilenameSelector extends BaseExtendSelector { + + private $pattern = null; + private $casesensitive = true; + private $negated = false; + const NAME_KEY = "name"; + const CASE_KEY = "casesensitive"; + const NEGATE_KEY = "negate"; + + public function toString() { + $buf = "{filenameselector name: "; + $buf .= $this->pattern; + $buf .= " negate: "; + if ($this->negated) { + $buf .= "true"; + } else { + $buf .= "false"; + } + $buf .= " casesensitive: "; + if ($this->casesensitive) { + $buf .= "true"; + } else { + $buf .= "false"; + } + $buf .= "}"; + return $buf; + } + + /** + * The name of the file, or the pattern for the name, that + * should be used for selection. + * + * @param pattern the file pattern that any filename must match + * against in order to be selected. + */ + public function setName($pattern) { + $pattern = str_replace('\\', DIRECTORY_SEPARATOR, $pattern); + $pattern = str_replace('/', DIRECTORY_SEPARATOR, $pattern); + + if (StringHelper::endsWith(DIRECTORY_SEPARATOR, $pattern)) { + $pattern .= "**"; + } + $this->pattern = $pattern; + } + + /** + * Whether to ignore case when checking filenames. + * + * @param casesensitive whether to pay attention to case sensitivity + */ + public function setCasesensitive($casesensitive) { + $this->casesensitive = $casesensitive; + } + + /** + * You can optionally reverse the selection of this selector, + * thereby emulating an <exclude> tag, by setting the attribute + * negate to true. This is identical to surrounding the selector + * with <not></not>. + * + * @param negated whether to negate this selection + */ + public function setNegate($negated) { + $this->negated = $negated; + } + + /** + * When using this as a custom selector, this method will be called. + * It translates each parameter into the appropriate setXXX() call. + * + * @param array $parameters the complete set of parameters for this selector + */ + public function setParameters($parameters) { + parent::setParameters($parameters); + if ($parameters !== null) { + for ($i=0, $len=count($parameters); $i < $len; $i++) { + $paramname = $parameters[$i]->getName(); + switch(strtolower($paramname)) { + case self::NAME_KEY: + $this->setName($parameters[$i]->getValue()); + break; + case self::CASE_KEY: + $this->setCasesensitive($parameters[$i]->getValue()); + break; + case self::NEGATE_KEY: + $this->setNegate($parameters[$i]->getValue()); + break; + default: + $this->setError("Invalid parameter " . $paramname); + } + } // for each param + } // if params + } + + /** + * Checks to make sure all settings are kosher. In this case, it + * means that the name attribute has been set. + * + */ + public function verifySettings() { + if ($this->pattern === null) { + $this->setError("The name attribute is required"); + } + } + + /** + * The heart of the matter. This is where the selector gets to decide + * on the inclusion of a file in a particular fileset. Most of the work + * for this selector is offloaded into SelectorUtils, a static class + * that provides the same services for both FilenameSelector and + * DirectoryScanner. + * + * @param basedir the base directory the scan is being done from + * @param filename is the name of the file to check + * @param file is a PhingFile object the selector can use + * @return whether the file should be selected or not + */ + public function isSelected(PhingFile $basedir, $filename, PhingFile $file) { + $this->validate(); + return (SelectorUtils::matchPath($this->pattern, $filename, $this->casesensitive) + === !($this->negated)); + } + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/MajoritySelector.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/MajoritySelector.php.svn-base new file mode 100644 index 0000000..9071d88 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/MajoritySelector.php.svn-base @@ -0,0 +1,92 @@ +. + */ + + +/** + * This selector is here just to shake up your thinking a bit. Don't get + * too caught up in boolean, there are other ways you can evaluate a + * collection of selectors. This one takes a vote of the selectors it + * contains, and majority wins. You could also have an "all-but-one" + * selector, a "weighted-average" selector, and so on. These are left + * as exercises for the reader (as are the usecases where this would + * be necessary). + * + * @author Hans Lellelid (Phing) + * @author Bruce Atherton (Ant) + * @package phing.types.selectors + */ +class MajoritySelector extends BaseSelectorContainer { + + private $allowtie = true; + + public function toString() { + $buf = ""; + if ($this->hasSelectors()) { + $buf .= "{majorityselect: "; + $buf .= parent::toString(); + $buf .= "}"; + } + return $buf; + } + + public function setAllowtie($tiebreaker) { + $this->allowtie = $tiebreaker; + } + + /** + * Returns true (the file is selected) if most of the other selectors + * agree. In case of a tie, go by the allowtie setting. That defaults + * to true, meaning in case of a tie, the file is selected. + * + * @param basedir the base directory the scan is being done from + * @param filename is the name of the file to check + * @param file is a PhingFile object for the filename that the selector + * can use + * @return whether the file should be selected or not + */ + public function isSelected(PhingFile $basedir, $filename, PhingFile $file) { + + $this->validate(); + + $yesvotes = 0; + $novotes = 0; + + $selectors = $this->selectorElements(); + for($i=0,$size=count($selectors); $i < $size; $i++) { + $result = $selectors[$i]->isSelected($basedir,$filename,$file); + if ($result) { + $yesvotes = $yesvotes + 1; + } else { + $novotes = $novotes + 1; + } + } + if ($yesvotes > $novotes) { + return true; + } + else if ($novotes > $yesvotes) { + return false; + } + // At this point, we know we have a tie. + return $this->allowtie; + } +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/NoneSelector.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/NoneSelector.php.svn-base new file mode 100644 index 0000000..a085187 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/NoneSelector.php.svn-base @@ -0,0 +1,71 @@ +. + */ + +require_once 'phing/types/selectors/BaseSelectorContainer.php'; + +/** + * This selector has a collection of other selectors. All of those selectors + * must refuse to select a file before the file is considered selected by + * this selector. + * + * @author Hans Lellelid + * @author Bruce Atherton (Ant) + * @package phing.types.selectors + */ +class NoneSelector extends BaseSelectorContainer { + + public function toString() { + $buf = ""; + if ($this->hasSelectors()) { + $buf .= "{noneselect: "; + $buf .= parent::toString(); + $buf .= "}"; + } + return $buf; + } + + /** + * Returns true (the file is selected) only if all other selectors + * agree that the file should not be selected. + * + * @param basedir the base directory the scan is being done from + * @param filename is the name of the file to check + * @param file is a java.io.File object for the filename that the selector + * can use + * @return whether the file should be selected or not + */ + public function isSelected(PhingFile $basedir, $filename, PhingFile $file) { + + $this->validate(); + + $selectors = $this->selectorElements(); + + for($i=0,$size=count($selectors); $i < $size; $i++) { + $result = $selectors[$i]->isSelected($basedir, $filename, $file); + if ($result) { + return false; + } + } + return true; + } + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/NotSelector.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/NotSelector.php.svn-base new file mode 100644 index 0000000..8dcce9d --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/NotSelector.php.svn-base @@ -0,0 +1,59 @@ +. + */ + +require_once 'phing/types/selectors/NoneSelector.php'; + +/** + * This selector has one other selectors whose meaning it inverts. It + * actually relies on NoneSelector for its implementation of the + * isSelected() method, but it adds a check to ensure there is only one + * other selector contained within. + * + * @author Hans Lellelid (Phing) + * @author Bruce Atherton (Ant) + * @package phing.types.selectors + */ +class NotSelector extends NoneSelector { + + public function toString() { + $buf = ""; + if ($this->hasSelectors()) { + $buf .= "{notselect: "; + $buf .= parent::toString(); + $buf .= "}"; + } + return $buf; + } + + /** + * Makes sure that there is only one entry, sets an error message if + * not. + */ + public function verifySettings() { + if ($this->selectorCount() != 1) { + $this->setError("One and only one selector is allowed within the " . + " tag"); + } + } + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/OrSelector.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/OrSelector.php.svn-base new file mode 100644 index 0000000..bfed3cc --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/OrSelector.php.svn-base @@ -0,0 +1,72 @@ +. + */ + +require_once 'phing/types/selectors/BaseSelectorContainer.php'; + +/** + * This selector has a collection of other selectors, any of which have to + * select a file in order for this selector to select it. + * + * @author Hans Lellelid (Phing) + * @author Bruce Atherton (Ant) + * @package phing.types.selectors + */ +class OrSelector extends BaseSelectorContainer { + + public function toString() { + $buf = ""; + if ($this->hasSelectors()) { + $buf .= "{orselect: "; + $buf .= parent::toString(); + $buf .= "}"; + } + return $buf; + } + + /** + * Returns true (the file is selected) if any of the other selectors + * agree that the file should be selected. + * + * @param basedir the base directory the scan is being done from + * @param filename the name of the file to check + * @param file a PhingFile object for the filename that the selector + * can use + * @return boolean Whether the file should be selected or not + */ + public function isSelected(PhingFile $basedir, $filename, PhingFile $file) { + + $this->validate(); + + $selectors = $this->selectorElements(); + + // First, check that all elements are correctly configured + + for($i=0,$size=count($selectors); $i < $size; $i++) { + $result = $selectors[$i]->isSelected($basedir, $filename, $file); + if ($result) { + return true; + } + } + return false; + } + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/PresentSelector.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/PresentSelector.php.svn-base new file mode 100644 index 0000000..dd818a9 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/PresentSelector.php.svn-base @@ -0,0 +1,154 @@ +. + */ + +/** + * Selector that filters files based on whether they appear in another + * directory tree. It can contain a mapper element, so isn't available + * as an ExtendSelector (since those parameters can't hold other + * elements). + * + * @author Hans Lellelid (Phing) + * @author Bruce Atherton (Ant) + * @package phing.types.selectors + */ +class PresentSelector extends BaseSelector { + + private $targetdir = null; + private $mapperElement = null; + private $map = null; + private $destmustexist = true; + private static $filePresence = array("srconly", "both"); + + public function toString() { + $buf = "{presentselector targetdir: "; + if ($this->targetdir === null) { + $buf .= "NOT YET SET"; + } else { + $buf .= $this->targetdir->getName(); + } + $buf .= " present: "; + if ($this->destmustexist) { + $buf .= "both"; + } else { + $buf .= "srconly"; + } + if ($this->map !== null) { + $buf .= $this->map->toString(); + } elseif ($this->mapperElement !== null) { + $buf .= $this->mapperElement->toString(); + } + $buf .= "}"; + return $buf; + } + + /** + * The name of the file or directory which is checked for matching + * files. + * + * @param targetdir the directory to scan looking for matching files. + */ + public function setTargetdir(PhingFile $targetdir) { + $this->targetdir = $targetdir; + } + + /** + * Defines the FileNameMapper to use (nested mapper element). + * @throws BuildException + */ + public function createMapper() { + if ($this->mapperElement !== null) { + throw new BuildException("Cannot define more than one mapper"); + } + $this->mapperElement = new Mapper($this->getProject()); + return $this->mapperElement; + } + + + /** + * This sets whether to select a file if its dest file is present. + * It could be a negate boolean, but by doing things + * this way, we get some documentation on how the system works. + * A user looking at the documentation should clearly understand + * that the ONLY files whose presence is being tested are those + * that already exist in the source directory, hence the lack of + * a destonly option. + * + * @param string $fp An attribute set to either srconlyboth. + */ + public function setPresent($fp) { + $idx = array_search($fp, self::$filePresence, true); + if ( $idx === 0 ) { + $this->destmustexist = false; + } + } + + /** + * Checks to make sure all settings are kosher. In this case, it + * means that the targetdir attribute has been set and we have a mapper. + */ + public function verifySettings() { + if ($this->targetdir === null) { + $this->setError("The targetdir attribute is required."); + } + if ($this->mapperElement === null) { + $this->map = new IdentityMapper(); + } else { + $this->map = $this->mapperElement->getImplementation(); + } + if ($this->map === null) { + $this->setError("Could not set element."); + } + } + + /** + * The heart of the matter. This is where the selector gets to decide + * on the inclusion of a file in a particular fileset. + * + * @param basedir the base directory the scan is being done from + * @param filename is the name of the file to check + * @param file is a PhingFile object the selector can use + * @return whether the file should be selected or not + */ + public function isSelected(PhingFile $basedir, $filename, PhingFile $file) { + + $this->validate(); + + // Determine file whose existence is to be checked + $destfiles = $this->map->main($filename); + // If filename does not match the To attribute of the mapper + // then filter it out of the files we are considering + if ($destfiles === null) { + return false; + } + // Sanity check + if (count($destfiles) !== 1 || $destfiles[0] === null) { + throw new BuildException("Invalid destination file results for " + . $this->targetdir . " with filename " . $filename); + } + $destname = $destfiles[0]; + $destfile = new PhingFile($this->targetdir, $destname); + return $destfile->exists() === $this->destmustexist; + } + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/SelectSelector.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/SelectSelector.php.svn-base new file mode 100644 index 0000000..f52d530 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/SelectSelector.php.svn-base @@ -0,0 +1,124 @@ +. + */ + +require_once 'phing/types/selectors/AndSelector.php'; + +/** + * This selector just holds one other selector and forwards all + * requests to it. It exists so that there is a single selector + * type that can exist outside of any targets, as an element of + * project. It overrides all of the reference stuff so that it + * works as expected. Note that this is the only selector you + * can reference. + * + * @author Hans Lellelid (Phing) + * @author Bruce Atherton (Ant) + * @version $Revision: 1.6 $ + * @package phing.types.selectors + */ +class SelectSelector extends AndSelector { + + public function toString() { + $buf = ""; + if ($this->hasSelectors()) { + $buf .= "{select: "; + $buf .= parent::toString(); + $buf .= "}"; + } + return $buf; + } + + /** + * Performs the check for circular references and returns the + * referenced Selector. + */ + private function getRef() { + $o = $this->getCheckedRef(get_class($this), "SelectSelector"); + return $o; + } + + /** + * Indicates whether there are any selectors here. + */ + public function hasSelectors() { + if ($this->isReference()) { + return $this->getRef()->hasSelectors(); + } + return parent::hasSelectors(); + } + + /** + * Gives the count of the number of selectors in this container + */ + public function selectorCount() { + if ($this->isReference()) { + return $this->getRef()->selectorCount(); + } + return parent::selectorCount(); + } + + /** + * Returns the set of selectors as an array. + */ + public function getSelectors(Project $p) { + if ($this->isReference()) { + return $this->getRef()->getSelectors($p); + } + return parent::getSelectors($p); + } + + /** + * Returns an enumerator for accessing the set of selectors. + */ + public function selectorElements() { + if ($this->isReference()) { + return $this->getRef()->selectorElements(); + } + return parent::selectorElements(); + } + + /** + * Add a new selector into this container. + * + * @param selector the new selector to add + * @return the selector that was added + */ + public function appendSelector(FileSelector $selector) { + if ($this->isReference()) { + throw $this->noChildrenAllowed(); + } + parent::appendSelector($selector); + } + + /** + * Makes sure that there is only one entry, sets an error message if + * not. + */ + public function verifySettings() { + if ($this->selectorCount() != 1) { + $this->setError("One and only one selector is allowed within the " + . " tag"); + } + } + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/SelectorContainer.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/SelectorContainer.php.svn-base new file mode 100644 index 0000000..6fedde4 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/SelectorContainer.php.svn-base @@ -0,0 +1,141 @@ +. + */ + + +/** + * This is the interface for selectors that can contain other selectors. + * + * @author Bruce Atherton + * @package phing.types.selectors + */ +interface SelectorContainer { + + /** + * Indicates whether there are any selectors here. + * + * @return whether any selectors are in this container + */ + public function hasSelectors(); + + /** + * Gives the count of the number of selectors in this container + * + * @return the number of selectors in this container + */ + public function selectorCount(); + + /** + * Returns a *copy* of the set of selectors as an array. + * + * @return an array of selectors in this container + */ + public function getSelectors(Project $p); + + /** + * Returns an array for accessing the set of selectors. + * + * @return an enumerator that goes through each of the selectors + */ + public function selectorElements(); + + /** + * Add a new selector into this container. + * + * @param selector the new selector to add + * @return the selector that was added + */ + public function appendSelector(FileSelector $selector); + + /* Methods below all add specific selectors */ + + /** + * add a "Select" selector entry on the selector list + */ + public function createSelector(); + + /** + * add an "And" selector entry on the selector list + */ + public function createAnd(); + + /** + * add an "Or" selector entry on the selector list + */ + public function createOr(); + + /** + * add a "Not" selector entry on the selector list + */ + public function createNot(); + + /** + * add a "None" selector entry on the selector list + */ + public function createNone(); + + /** + * add a majority selector entry on the selector list + */ + public function createMajority(); + + /** + * add a selector date entry on the selector list + */ + public function createDate(); + + /** + * add a selector size entry on the selector list + */ + public function createSize(); + + /** + * add a selector filename entry on the selector list + */ + public function createFilename(); + + /** + * add an extended selector entry on the selector list + */ + public function createCustom(); + + /** + * add a contains selector entry on the selector list + */ + public function createContains(); + + /** + * add a present selector entry on the selector list + */ + public function createPresent(); + + /** + * add a depth selector entry on the selector list + */ + public function createDepth(); + + /** + * add a depends selector entry on the selector list + */ + public function createDepend(); + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/SelectorScanner.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/SelectorScanner.php.svn-base new file mode 100644 index 0000000..3c28c4c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/SelectorScanner.php.svn-base @@ -0,0 +1,55 @@ +. + */ + + +/** + * An interface used to describe the actions required by any type of + * directory scanner that supports Selecters. + * + * @author Hans Lellelid (Phing) + * @author Bruce Atherton (Ant) + * @package phing.types.selectors + */ +interface SelectorScanner { + + /** + * Sets the selectors the scanner should use. + * + * @param selectors the list of selectors + */ + public function setSelectors($selectors); + + /** + * Directories which were selected out of a scan. + * + * @param selectors list selector objects + */ + public function getDeselectedDirectories(); + + /** + * Files which were selected out of a scan. + * + * @param selectors list selector objects + */ + public function getDeselectedFiles(); + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/SelectorUtils.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/SelectorUtils.php.svn-base new file mode 100644 index 0000000..8bcc7c0 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/SelectorUtils.php.svn-base @@ -0,0 +1,440 @@ +. + */ + +include_once 'phing/util/StringHelper.php'; + +/** + *

    This is a utility class used by selectors and DirectoryScanner. The + * functionality more properly belongs just to selectors, but unfortunately + * DirectoryScanner exposed these as protected methods. Thus we have to + * support any subclasses of DirectoryScanner that may access these methods. + *

    + *

    This is a Singleton.

    + * + * @author Hans Lellelid, hans@xmpl.org (Phing) + * @author Arnout J. Kuiper, ajkuiper@wxs.nl (Ant) + * @author Magesh Umasankar + * @author Bruce Atherton, bruce@callenish.com (Ant) + * @package phing.types.selectors + */ +class SelectorUtils { + + private static $instance; + + /** + * Retrieves the instance of the Singleton. + */ + public static function getInstance() { + if (!isset(self::$instance)) { + self::$instance = new SelectorUtils(); + } + return self::$instance; + } + + /** + * Tests whether or not a given path matches the start of a given + * pattern up to the first "**". + *

    + * This is not a general purpose test and should only be used if you + * can live with false positives. For example, pattern=**\a + * and str=b will yield true. + * + * @param pattern The pattern to match against. Must not be + * null. + * @param str The path to match, as a String. Must not be + * null. + * @param isCaseSensitive Whether or not matching should be performed + * case sensitively. + * + * @return whether or not a given path matches the start of a given + * pattern up to the first "**". + */ + public static function matchPatternStart($pattern, $str, $isCaseSensitive = true) { + + // When str starts with a DIRECTORY_SEPARATOR, pattern has to start with a + // DIRECTORY_SEPARATOR. + // When pattern starts with a DIRECTORY_SEPARATOR, str has to start with a + // DIRECTORY_SEPARATOR. + if (StringHelper::startsWith(DIRECTORY_SEPARATOR, $str) !== + StringHelper::startsWith(DIRECTORY_SEPARATOR, $pattern)) { + return false; + } + + $patDirs = explode(DIRECTORY_SEPARATOR, $pattern); + $strDirs = explode(DIRECTORY_SEPARATOR, $str); + + $patIdxStart = 0; + $patIdxEnd = count($patDirs)-1; + $strIdxStart = 0; + $strIdxEnd = count($strDirs)-1; + + // up to first '**' + while ($patIdxStart <= $patIdxEnd && $strIdxStart <= $strIdxEnd) { + $patDir = $patDirs[$patIdxStart]; + if ($patDir == "**") { + break; + } + if (!self::match($patDir, $strDirs[$strIdxStart], $isCaseSensitive)) { + return false; + } + $patIdxStart++; + $strIdxStart++; + } + + if ($strIdxStart > $strIdxEnd) { + // String is exhausted + return true; + } elseif ($patIdxStart > $patIdxEnd) { + // String not exhausted, but pattern is. Failure. + return false; + } else { + // pattern now holds ** while string is not exhausted + // this will generate false positives but we can live with that. + return true; + } + } + + /** + * Tests whether or not a given path matches a given pattern. + * + * @param pattern The pattern to match against. Must not be + * null. + * @param str The path to match, as a String. Must not be + * null. + * @param isCaseSensitive Whether or not matching should be performed + * case sensitively. + * + * @return true if the pattern matches against the string, + * or false otherwise. + */ + public static function matchPath($pattern, $str, $isCaseSensitive = true) { + + // When str starts with a DIRECTORY_SEPARATOR, pattern has to start with a + // DIRECTORY_SEPARATOR. + // When pattern starts with a DIRECTORY_SEPARATOR, str has to start with a + // DIRECTORY_SEPARATOR. + if (StringHelper::startsWith(DIRECTORY_SEPARATOR, $str) !== + StringHelper::startsWith(DIRECTORY_SEPARATOR, $pattern)) { + return false; + } + + $patDirs = explode(DIRECTORY_SEPARATOR, $pattern); + $strDirs = explode(DIRECTORY_SEPARATOR, $str); + + $patIdxStart = 0; + $patIdxEnd = count($patDirs)-1; + $strIdxStart = 0; + $strIdxEnd = count($strDirs)-1; + + // up to first '**' + while ($patIdxStart <= $patIdxEnd && $strIdxStart <= $strIdxEnd) { + $patDir = $patDirs[$patIdxStart]; + if ($patDir == "**") { + break; + } + if (!self::match($patDir, $strDirs[$strIdxStart], $isCaseSensitive)) { + return false; + } + $patIdxStart++; + $strIdxStart++; + } + if ($strIdxStart > $strIdxEnd) { + // String is exhausted + for ($i=$patIdxStart; $i <= $patIdxEnd; $i++) { + if ($patDirs[$i] != "**") { + return false; + } + } + return true; + } elseif ($patIdxStart > $patIdxEnd) { + // String not exhausted, but pattern is. Failure. + return false; + } + + // up to last '**' + while ($patIdxStart <= $patIdxEnd && $strIdxStart <= $strIdxEnd) { + $patDir = $patDirs[$patIdxEnd]; + if ($patDir == "**") { + break; + } + if (!self::match($patDir, $strDirs[$strIdxEnd], $isCaseSensitive)) { + return false; + } + $patIdxEnd--; + $strIdxEnd--; + } + + if ($strIdxStart > $strIdxEnd) { + // String is exhausted + for ($i = $patIdxStart; $i <= $patIdxEnd; $i++) { + if ($patDirs[$i] != "**") { + return false; + } + } + return true; + } + + while ($patIdxStart != $patIdxEnd && $strIdxStart <= $strIdxEnd) { + $patIdxTmp = -1; + for ($i = $patIdxStart+1; $i <= $patIdxEnd; $i++) { + if ($patDirs[$i] == "**") { + $patIdxTmp = $i; + break; + } + } + if ($patIdxTmp == $patIdxStart+1) { + // '**/**' situation, so skip one + $patIdxStart++; + continue; + } + // Find the pattern between padIdxStart & padIdxTmp in str between + // strIdxStart & strIdxEnd + $patLength = ($patIdxTmp-$patIdxStart-1); + $strLength = ($strIdxEnd-$strIdxStart+1); + $foundIdx = -1; + + //strLoop: (start of outer loop) + for ($i=0; $i <= $strLength - $patLength; $i++) { + for ($j = 0; $j < $patLength; $j++) { + $subPat = $patDirs[$patIdxStart+$j+1]; + $subStr = $strDirs[$strIdxStart+$i+$j]; + if (!self::match($subPat, $subStr, $isCaseSensitive)) { + continue 2; // continue up two levels (to strLoop:) + } + } + $foundIdx = $strIdxStart+$i; // only reached if all sub patterns matched + break; + } + + if ($foundIdx == -1) { + return false; + } + + $patIdxStart = $patIdxTmp; + $strIdxStart = $foundIdx + $patLength; + } + + for ($i = $patIdxStart; $i <= $patIdxEnd; $i++) { + if ($patDirs[$i] != "**") { + return false; + } + } + + return true; + } + + /** + * Tests whether or not a string matches against a pattern. + * The pattern may contain two special characters:
    + * '*' means zero or more characters
    + * '?' means one and only one character + * + * @param pattern The pattern to match against. + * Must not be null. + * @param str The string which must be matched against the pattern. + * Must not be null. + * @param isCaseSensitive Whether or not matching should be performed + * case sensitively. + * + * + * @return true if the string matches against the pattern, + * or false otherwise. + */ + public static function match($pattern, $str, $isCaseSensitive = true) { + + $patArr = StringHelper::toCharArray($pattern); + $strArr = StringHelper::toCharArray($str); + $patIdxStart = 0; + $patIdxEnd = count($patArr)-1; + $strIdxStart = 0; + $strIdxEnd = count($strArr)-1; + + $containsStar = false; + for ($i = 0, $size=count($patArr); $i < $size; $i++) { + if ($patArr[$i] == '*') { + $containsStar = true; + break; + } + } + + if (!$containsStar) { + // No '*'s, so we make a shortcut + if ($patIdxEnd != $strIdxEnd) { + return false; // Pattern and string do not have the same size + } + for ($i = 0; $i <= $patIdxEnd; $i++) { + $ch = $patArr[$i]; + if ($ch != '?') { + if ($isCaseSensitive && $ch !== $strArr[$i]) { + return false;// Character mismatch + } + if (!$isCaseSensitive && strtoupper($ch) !== + strtoupper($strArr[$i])) { + return false; // Character mismatch + } + } + } + return true; // String matches against pattern + } + + if ($patIdxEnd == 0) { + return true; // Pattern contains only '*', which matches anything + } + + // Process characters before first star + while(($ch = $patArr[$patIdxStart]) != '*' && $strIdxStart <= $strIdxEnd) { + if ($ch != '?') { + if ($isCaseSensitive && $ch !== $strArr[$strIdxStart]) { + return false;// Character mismatch + } + if (!$isCaseSensitive && strtoupper($ch) !== + strtoupper($strArr[$strIdxStart])) { + return false;// Character mismatch + } + } + $patIdxStart++; + $strIdxStart++; + } + + if ($strIdxStart > $strIdxEnd) { + // All characters in the string are used. Check if only '*'s are + // left in the pattern. If so, we succeeded. Otherwise failure. + for ($i = $patIdxStart; $i <= $patIdxEnd; $i++) { + if ($patArr[$i] != '*') { + return false; + } + } + return true; + } + + // Process characters after last star + while(($ch = $patArr[$patIdxEnd]) != '*' && $strIdxStart <= $strIdxEnd) { + if ($ch != '?') { + if ($isCaseSensitive && $ch !== $strArr[$strIdxEnd]) { + return false;// Character mismatch + } + if (!$isCaseSensitive && strtoupper($ch) !== + strtoupper($strArr[$strIdxEnd])) { + return false;// Character mismatch + } + } + $patIdxEnd--; + $strIdxEnd--; + } + if ($strIdxStart > $strIdxEnd) { + // All characters in the string are used. Check if only '*'s are + // left in the pattern. If so, we succeeded. Otherwise failure. + for ($i = $patIdxStart; $i <= $patIdxEnd; $i++) { + if ($patArr[$i] != '*') { + return false; + } + } + return true; + } + + // process pattern between stars. padIdxStart and patIdxEnd point + // always to a '*'. + while ($patIdxStart !== $patIdxEnd && $strIdxStart <= $strIdxEnd) { + $patIdxTmp = -1; + for ($i = $patIdxStart+1; $i <= $patIdxEnd; $i++) { + if ($patArr[$i] == '*') { + $patIdxTmp = $i; + break; + } + } + if ($patIdxTmp === $patIdxStart + 1) { + // Two stars next to each other, skip the first one. + $patIdxStart++; + continue; + } + // Find the pattern between padIdxStart & padIdxTmp in str between + // strIdxStart & strIdxEnd + $patLength = ($patIdxTmp - $patIdxStart - 1); + $strLength = ($strIdxEnd - $strIdxStart + 1); + $foundIdx = -1; + + //strLoop: + for ($i = 0; $i <= $strLength - $patLength; $i++) { + for ($j = 0; $j < $patLength; $j++) { + $ch = $patArr[$patIdxStart+$j+1]; + if ($ch != '?') { + if ($isCaseSensitive && $ch !== $strArr[$strIdxStart+$i+$j]) { + continue 2; //continue to strLoop: + } + if (!$isCaseSensitive && strtoupper($ch) !== + strtoupper($strArr[$strIdxStart+$i+$j])) { + continue 2; //continue to strLoop: + } + } + } + // only reached if sub loop completed w/o invoking continue 2 + $foundIdx = $strIdxStart + $i; + break; + } + + if ($foundIdx == -1) { + return false; + } + + $patIdxStart = $patIdxTmp; + $strIdxStart = $foundIdx + $patLength; + } + + // All characters in the string are used. Check if only '*'s are left + // in the pattern. If so, we succeeded. Otherwise failure. + for ($i = $patIdxStart; $i <= $patIdxEnd; $i++) { + if ($patArr[$i] != '*') { + return false; + } + } + return true; + } + + /** + * Returns dependency information on these two files. If src has been + * modified later than target, it returns true. If target doesn't exist, + * it likewise returns true. Otherwise, target is newer than src and + * is not out of date, thus the method returns false. It also returns + * false if the src file doesn't even exist, since how could the + * target then be out of date. + * + * @param PhingFile $src the original file + * @param PhingFile $target the file being compared against + * @param int $granularity the amount in seconds of slack we will give in + * determining out of dateness + * @return whether the target is out of date + */ + public static function isOutOfDate(PhingFile $src, PhingFile $target, $granularity) { + if (!$src->exists()) { + return false; + } + if (!$target->exists()) { + return true; + } + if (($src->lastModified() - $granularity) > $target->lastModified()) { + return true; + } + return false; + } + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/SizeSelector.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/SizeSelector.php.svn-base new file mode 100644 index 0000000..4969c98 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/SizeSelector.php.svn-base @@ -0,0 +1,228 @@ +. + */ + + +/** + * Selector that filters files based on their size. + * + * @author Hans Lellelid (Phing) + * @author Bruce Atherton (Ant) + * @package phing.types.selectors + */ +class SizeSelector extends BaseExtendSelector { + + private $size = -1; + private $multiplier = 1; + private $sizelimit = -1; + private $cmp = 2; + const SIZE_KEY = "value"; + const UNITS_KEY = "units"; + const WHEN_KEY = "when"; + + private static $sizeComparisons = array("less", "more", "equal"); + private static $byteUnits = array("K", "k", "kilo", "KILO", + "Ki", "KI", "ki", "kibi", "KIBI", + "M", "m", "mega", "MEGA", + "Mi", "MI", "mi", "mebi", "MEBI", + "G", "g", "giga", "GIGA", + "Gi", "GI", "gi", "gibi", "GIBI", + "T", "t", "tera", "TERA", + /* You wish! */ "Ti", "TI", "ti", "tebi", "TEBI" + ); + + public function toString() { + $buf = "{sizeselector value: "; + $buf .= $this->sizelimit; + $buf .= "compare: "; + if ($this->cmp === 0) { + $buf .= "less"; + } elseif ($this->cmp === 1) { + $buf .= "more"; + } else { + $buf .= "equal"; + } + $buf .= "}"; + return $buf; + } + + /** + * A size selector needs to know what size to base its selecting on. + * This will be further modified by the multiplier to get an + * actual size limit. + * + * @param size the size to select against expressed in units + */ + public function setValue($size) { + $this->size = $size; + if (($this->multiplier !== 0) && ($this->size > -1)) { + $this->sizelimit = $size * $this->multiplier; + } + } + + /** + * Sets the units to use for the comparison. This is a little + * complicated because common usage has created standards that + * play havoc with capitalization rules. Thus, some people will + * use "K" for indicating 1000's, when the SI standard calls for + * "k". Others have tried to introduce "K" as a multiple of 1024, + * but that falls down when you reach "M", since "m" is already + * defined as 0.001. + *

    + * To get around this complexity, a number of standards bodies + * have proposed the 2^10 standard, and at least one has adopted + * it. But we are still left with a populace that isn't clear on + * how capitalization should work. + *

    + * We therefore ignore capitalization as much as possible. + * Completely mixed case is not possible, but all upper and lower + * forms are accepted for all long and short forms. Since we have + * no need to work with the 0.001 case, this practice works here. + *

    + * This function translates all the long and short forms that a + * unit prefix can occur in and translates them into a single + * multiplier. + * + * @param $units The units to compare the size to. + * @return void + */ + public function setUnits($units) { + $i = array_search($units, self::$byteUnits, true); + if ($i === false) $i = -1; // make it java-like + + $this->multiplier = 0; + if (($i > -1) && ($i < 4)) { + $this->multiplier = 1000; + } elseif (($i > 3) && ($i < 9)) { + $this->multiplier = 1024; + } elseif (($i > 8) && ($i < 13)) { + $this->multiplier = 1000000; + } elseif (($i > 12) && ($i < 18)) { + $this->multiplier = 1048576; + } elseif (($i > 17) && ($i < 22)) { + $this->multiplier = 1000000000; + } elseif (($i > 21) && ($i < 27)) { + $this->multiplier = 1073741824; + } elseif (($i > 26) && ($i < 31)) { + $this->multiplier = 1000000000000; + } elseif (($i > 30) && ($i < 36)) { + $this->multiplier = 1099511627776; + } + if (($this->multiplier > 0) && ($this->size > -1)) { + $this->sizelimit = $this->size * $this->multiplier; + } + } + + /** + * This specifies when the file should be selected, whether it be + * when the file matches a particular size, when it is smaller, + * or whether it is larger. + * + * @param cmp The comparison to perform, an EnumeratedAttribute + */ + public function setWhen($cmp) { + $c = array_search($cmp, self::$sizeComparisons, true); + if ($c !== false) { + $this->cmp = $c; + } + } + + /** + * When using this as a custom selector, this method will be called. + * It translates each parameter into the appropriate setXXX() call. + * + * @param parameters the complete set of parameters for this selector + */ + public function setParameters($parameters) { + parent::setParameters($parameters); + if ($parameters !== null) { + for ($i = 0, $size=count($parameters); $i < $size; $i++) { + $paramname = $parameters[$i]->getName(); + switch(strtolower($paramname)) { + case self::SIZE_KEY: + try { + $this->setValue($parameters[$i]->getValue()); + } catch (Exception $nfe) { + $this->setError("Invalid size setting " + . $parameters[$i]->getValue()); + } + break; + case self::UNITS_KEY: + $this->setUnits($parameters[$i]->getValue()); + break; + case self::WHEN_KEY: + $this->setWhen($parameters[$i]->getValue()); + break; + default: + $this->setError("Invalid parameter " . $paramname); + } + } + } + } + + /** + *

    Checks to make sure all settings are kosher. In this case, it + * means that the size attribute has been set (to a positive value), + * that the multiplier has a valid setting, and that the size limit + * is valid. Since the latter is a calculated value, this can only + * fail due to a programming error. + *

    + *

    If a problem is detected, the setError() method is called. + *

    + */ + public function verifySettings() { + if ($this->size < 0) { + $this->setError("The value attribute is required, and must be positive"); + } elseif ($this->multiplier < 1) { + $this->setError("Invalid Units supplied, must be K,Ki,M,Mi,G,Gi,T,or Ti"); + } elseif ($this->sizelimit < 0) { + $this->setError("Internal error: Code is not setting sizelimit correctly"); + } + } + + /** + * The heart of the matter. This is where the selector gets to decide + * on the inclusion of a file in a particular fileset. + * + * @param basedir A PhingFile object for the base directory + * @param filename The name of the file to check + * @param file A PhingFile object for this filename + * @return whether the file should be selected or not + */ + public function isSelected(PhingFile $basedir, $filename, PhingFile $file) { + + $this->validate(); + + // Directory size never selected for + if ($file->isDirectory()) { + return true; + } + if ($this->cmp === 0) { + return ($file->length() < $this->sizelimit); + } elseif ($this->cmp === 1) { + return ($file->length() > $this->sizelimit); + } else { + return ($file->length() === $this->sizelimit); + } + } + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/TypeSelector.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/TypeSelector.php.svn-base new file mode 100644 index 0000000..67c5031 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/.svn/text-base/TypeSelector.php.svn-base @@ -0,0 +1,113 @@ +. + */ + +require_once 'phing/types/selectors/BaseExtendSelector.php'; + +/** + * Selector that selects a certain kind of file: directory or regular file. + * + * @author Hans Lellelid (Phing) + * @author Jeff Turner (Ant) + * @version $Revision: 1.3 $ + * @package phing.types.selectors + */ +class TypeSelector extends BaseExtendSelector { + + private $type; + + /** Key to used for parameterized custom selector */ + const TYPE_KEY = "type"; + + /** Valid types */ + private static $types = array('file', 'dir'); + + /** + * @return string A string describing this object + */ + public function toString() { + $buf = "{typeselector type: " . $this->type . "}"; + return $buf; + } + + /** + * Set the type of file to require. + * @param string $type The type of file - 'file' or 'dir' + */ + public function setType($type) { + $this->type = $type; + } + + /** + * When using this as a custom selector, this method will be called. + * It translates each parameter into the appropriate setXXX() call. + * + * @param array $parameters the complete set of parameters for this selector + */ + public function setParameters($parameters) { + parent::setParameters($parameters); + if ($parameters !== null) { + for ($i = 0, $size=count($parameters); $i < $size; $i++) { + $paramname = $parameters[$i]->getName(); + if (self::TYPE_KEY == strtolower($paramname)) { + $this->setType($parameters[$i]->getValue()); + } else { + $this->setError("Invalid parameter " . $paramname); + } + } + } + } + + /** + * Checks to make sure all settings are kosher. In this case, it + * means that the pattern attribute has been set. + * + */ + public function verifySettings() { + if ($this->type === null) { + $this->setError("The type attribute is required"); + } elseif (!in_array($this->type, self::$types, true)) { + $this->setError("Invalid type specified; must be one of (" . implode(self::$types) . ")"); + } + } + + /** + * The heart of the matter. This is where the selector gets to decide + * on the inclusion of a file in a particular fileset. + * + * @param PhingFile $basedir the base directory the scan is being done from + * @param string $filename is the name of the file to check + * @param PhingFile $file is a PhingFile object the selector can use + * @return boolean Whether the file should be selected or not + */ + public function isSelected(PhingFile $basedir, $filename, PhingFile $file) { + + // throw BuildException on error + $this->validate(); + + if ($file->isDirectory()) { + return $this->type === 'dir'; + } else { + return $this->type === 'file'; + } + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/AndSelector.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/AndSelector.php new file mode 100644 index 0000000..37c27aa --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/AndSelector.php @@ -0,0 +1,67 @@ +. + */ + +require_once 'phing/types/selectors/BaseSelectorContainer.php'; + +/** + * This selector has a collection of other selectors, all of which have to + * select a file in order for this selector to select it. + * + * @author Hans Lellelid, hans@xmpl.org (Phing) + * @author Bruce Atherton (Ant) + * @package phing.types.selectors + */ +class AndSelector extends BaseSelectorContainer { + + public function toString() { + $buf = ""; + if ($this->hasSelectors()) { + $buf .= "{andselect: "; + $buf .= parent::toString(); + $buf .= "}"; + } + return $buf; + } + + /** + * Returns true (the file is selected) only if all other selectors + * agree that the file should be selected. + * + * @param basedir the base directory the scan is being done from + * @param filename the name of the file to check + * @param file a PhingFile object for the filename that the selector + * can use + * @return whether the file should be selected or not + */ + public function isSelected(PhingFile $basedir, $filename, PhingFile $file) { + $this->validate(); + $selectors = $this->selectorElements(); + for($i=0,$size=count($selectors); $i < $size; $i++) { + $result = $selectors[$i]->isSelected($basedir, $filename, $file); + if (!$result) { + return false; + } + } + return true; + } + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/BaseExtendSelector.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/BaseExtendSelector.php new file mode 100644 index 0000000..aa5f054 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/BaseExtendSelector.php @@ -0,0 +1,62 @@ +. + */ + +require_once 'phing/types/selectors/ExtendFileSelector.php'; +require_once 'phing/types/selectors/BaseSelector.php'; +include_once 'phing/types/Parameter.php'; + +/** + * Convenience base class for all selectors accessed through ExtendSelector. + * It provides support for gathering the parameters together as well as for + * assigning an error message and throwing a build exception if an error is + * detected. + * + * @author Hans Lellelid, hans@xmpl.org (Phing) + * @author Bruce Atherton, bruce@callenish.com (Ant) + * @package phing.types.selectors + */ +abstract class BaseExtendSelector extends BaseSelector implements ExtendFileSelector { + + /** The passed in parameter array. */ + protected $parameters = null; + + /** + * Set all the Parameters for this custom selector, collected by + * the ExtendSelector class. + * + * @param parameters the complete set of parameters for this selector + */ + public function setParameters($parameters) { + $this->parameters = $parameters; + } + + /** + * Allows access to the parameters gathered and set within the + * <custom> tag. + * + * @return the set of parameters defined for this selector + */ + protected function getParameters() { + return $this->parameters; + } +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/BaseSelector.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/BaseSelector.php new file mode 100644 index 0000000..a19f3d3 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/BaseSelector.php @@ -0,0 +1,84 @@ +. + */ + +require_once 'phing/types/selectors/FileSelector.php'; + +/** + * A convenience base class that you can subclass Selectors from. It + * provides some helpful common behaviour. Note that there is no need + * for Selectors to inherit from this class, it is only necessary that + * they implement FileSelector. + * + * @author Bruce Atherton + * @package phing.types.selectors + */ +abstract class BaseSelector extends DataType implements FileSelector { + + private $errmsg = null; + + /** + * Allows all selectors to indicate a setup error. Note that only + * the first error message is recorded. + * + * @param msg The error message any BuildException should throw. + */ + public function setError($msg) { + if ($this->errmsg === null) { + $this->errmsg = $msg; + } + } + + /** + * Returns any error messages that have been set. + * + * @return the error condition + */ + public function getError() { + return $this->errmsg; + } + + + /** + *

    Subclasses can override this method to provide checking of their + * state. So long as they call validate() from isSelected(), this will + * be called automatically (unless they override validate()).

    + *

    Implementations should check for incorrect settings and call + * setError() as necessary.

    + */ + public function verifySettings() { + } + + /** + * Subclasses can use this to throw the requisite exception + * in isSelected() in the case of an error condition. + */ + public function validate() { + if ($this->getError() === null) { + $this->verifySettings(); + } + if ($this->getError() !== null) { + throw new BuildException($this->errmsg); + } + } + +} + + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/BaseSelectorContainer.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/BaseSelectorContainer.php new file mode 100644 index 0000000..d7591d9 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/BaseSelectorContainer.php @@ -0,0 +1,270 @@ +. + */ + +require_once 'phing/types/selectors/SelectorContainer.php'; +require_once 'phing/types/selectors/BaseSelector.php'; + +/** + * This is the base class for selectors that can contain other selectors. + * + * @author Bruce Atherton (Ant) + * @package phing.types.selectors + */ +abstract class BaseSelectorContainer extends BaseSelector implements SelectorContainer { + + private $selectorsList = array(); + + /** + * Indicates whether there are any selectors here. + */ + public function hasSelectors() { + return !(empty($this->selectorsList)); + } + + /** + * Gives the count of the number of selectors in this container + */ + public function selectorCount() { + return count($this->selectorsList); + } + + /** + * Returns a copy of the selectors as an array. + */ + public function getSelectors(Project $p) { + $result = array(); + for($i=0,$size=count($this->selectorsList); $i < $size; $i++) { + $result[] = clone $this->selectorsList[$i]; + } + return $result; + } + + /** + * Returns an array for accessing the set of selectors (not a copy). + */ + public function selectorElements() { + return $this->selectorsList; + } + + /** + * Convert the Selectors within this container to a string. This will + * just be a helper class for the subclasses that put their own name + * around the contents listed here. + * + * @return comma separated list of Selectors contained in this one + */ + public function toString() { + $buf = ""; + $arr = $this->selectorElements(); + for($i=0,$size=count($arr); $i < $size; $i++) { + $buf .= $arr[$i]->toString() . (isset($arr[$i+1]) ? ', ' : ''); + } + return $buf; + } + + /** + * Add a new selector into this container. + * + * @param selector the new selector to add + * @return the selector that was added + */ + public function appendSelector(FileSelector $selector) { + $this->selectorsList[] = $selector; + } + + /** + *

    This implementation validates the container by calling + * verifySettings() and then validates each contained selector + * provided that the selector implements the validate interface. + *

    + *

    Ordinarily, this will validate all the elements of a selector + * container even if the isSelected() method of some elements is + * never called. This has two effects:

    + *
      + *
    • Validation will often occur twice. + *
    • Since it is not required that selectors derive from + * BaseSelector, there could be selectors in the container whose + * error conditions are not detected if their isSelected() call + * is never made. + *
    + */ + public function validate() { + $this->verifySettings(); + $errmsg = $this->getError(); + if ($errmsg !== null) { + throw new BuildException($errmsg); + } + foreach($this->selectorsList as $o) { + if ($o instanceof BaseSelector) { + $o->validate(); + } + } + } + + /* Methods below all add specific selectors */ + + /** + * add a "Select" selector entry on the selector list + */ + public function createSelector() { + $o = new SelectSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add an "And" selector entry on the selector list + */ + public function createAnd() { + $o = new AndSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add an "Or" selector entry on the selector list + */ + public function createOr() { + $o = new OrSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add a "Not" selector entry on the selector list + */ + public function createNot() { + $o = new NotSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add a "None" selector entry on the selector list + */ + public function createNone() { + $o = new NoneSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add a majority selector entry on the selector list + */ + public function createMajority() { + $o = new MajoritySelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add a selector date entry on the selector list + */ + public function createDate() { + $o = new DateSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add a selector size entry on the selector list + */ + public function createSize() { + $o = new SizeSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add a selector filename entry on the selector list + */ + public function createFilename() { + $o = new FilenameSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add an extended selector entry on the selector list + */ + public function createCustom() { + $o = new ExtendSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add a contains selector entry on the selector list + */ + public function createContains() { + $o = new ContainsSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add a contains selector entry on the selector list + */ + public function createContainsRegexp() { + $o = new ContainsRegexpSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add a present selector entry on the selector list + */ + public function createPresent() { + $o = new PresentSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add a depth selector entry on the selector list + */ + public function createDepth() { + $o = new DepthSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add a depends selector entry on the selector list + */ + public function createDepend() { + $o = new DependSelector(); + $this->appendSelector($o); + return $o; + } + + /** + * add a type selector entry on the selector list + */ + public function createType() { + $o = new TypeSelector(); + $this->appendSelector($o); + return $o; + } + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/ContainsRegexpSelector.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/ContainsRegexpSelector.php new file mode 100644 index 0000000..0782d16 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/ContainsRegexpSelector.php @@ -0,0 +1,164 @@ +. + */ + +require_once 'phing/types/selectors/BaseExtendSelector.php'; +include_once 'phing/types/RegularExpression.php'; + +/** + * Selector that filters files based on whether they contain a + * particular string using regexp. + * + * @author Hans Lellelid (Phing) + * @author Bruce Atherton (Ant) + * @version $Revision: 1.3 $ + * @package phing.types.selectors + */ +class ContainsRegexpSelector extends BaseExtendSelector { + + /** @var string The expression set from XML. */ + private $userProvidedExpression; + + /** @var Regexp */ + private $myExpression; + + private $casesensitive = true; + + /** @var RegularExpression */ + private $myRegExp; + + const EXPRESSION_KEY = "expression"; + + const CASE_KEY = "casesensitive"; + + public function toString() { + $buf = "{containsregexpselector expression: "; + $buf .= $this->userProvidedExpression; + $buf .= " casesensitive: "; + if ($this->casesensitive) { + $buf .= "true"; + } else { + $buf .= "false"; + } + $buf .= "}"; + return $buf; + } + + /** + * The expression to match on within a file. + * + * @param string $exp the string that a file must contain to be selected. + */ + public function setExpression($exp) { + $this->userProvidedExpression = $exp; + } + + /** + * Whether to ignore case in the regex match. + * + * @param boolean $casesensitive whether to pay attention to case sensitivity + */ + public function setCasesensitive($casesensitive) { + $this->casesensitive = $casesensitive; + } + + /** + * When using this as a custom selector, this method will be called. + * It translates each parameter into the appropriate setXXX() call. + * + * @param array $parameters the complete set of parameters for this selector + */ + public function setParameters($parameters) { + parent::setParameters($parameters); + if ($parameters !== null) { + for ($i=0,$size=count($parameters); $i < $size; $i++) { + $paramname = $parameters[$i]->getName(); + switch(strtolower($paramname)) { + case self::EXPRESSION_KEY: + $this->setExpression($parameters[$i]->getValue()); + break; + case self::CASE_KEY: + $this->setCasesensitive($parameters[$i]->getValue()); + break; + default: + $this->setError("Invalid parameter " . $paramname); + } + } // for each param + } // if params + } + + /** + * Checks to make sure all settings are kosher. In this case, it + * means that the pattern attribute has been set. + * + */ + public function verifySettings() { + if ($this->userProvidedExpression === null) { + $this->setError("The expression attribute is required"); + } + } + + /** + * The heart of the matter. This is where the selector gets to decide + * on the inclusion of a file in a particular fileset. + * + * @param basedir the base directory the scan is being done from + * @param filename is the name of the file to check + * @param file a PhingFile object the selector can use + * @return whether the file should be selected or not + */ + public function isSelected(PhingFile $basedir, $filename, PhingFile $file) { + + $this->validate(); + + if ($file->isDirectory()) { + return true; + } + + if ($this->myRegExp === null) { + $this->myRegExp = new RegularExpression(); + $this->myRegExp->setPattern($this->userProvidedExpression); + if (!$this->casesensitive) { + $this->myRegExp->setIgnoreCase(true); + } + $this->myExpression = $this->myRegExp->getRegexp($this->getProject()); + } + + $in = null; + try { + $in = new BufferedReader(new FileReader($file)); + $teststr = $in->readLine(); + while ($teststr !== null) { + if ($this->myExpression->matches($teststr)) { + return true; + } + $teststr = $in->readLine(); + } + return false; + } catch (IOException $ioe) { + if ($in) $in->close(); + throw new BuildException("Could not read file " . $filename); + } + $in->close(); + } + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/ContainsSelector.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/ContainsSelector.php new file mode 100644 index 0000000..ebcbce4 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/ContainsSelector.php @@ -0,0 +1,151 @@ +. + */ + +include_once 'phing/types/selectors/BaseExtendSelector.php'; + +/** + * Selector that filters files based on whether they contain a + * particular string. + * + * @author Hans Lellelid (Phing) + * @author Bruce Atherton (Ant) + * @package phing.types.selectors + */ +class ContainsSelector extends BaseExtendSelector { + + private $contains = null; + private $casesensitive = true; + const CONTAINS_KEY = "text"; + const CASE_KEY = "casesensitive"; + + public function toString() { + $buf = "{containsselector text: "; + $buf .= $this->contains; + $buf .= " casesensitive: "; + if ($this->casesensitive) { + $buf .= "true"; + } else { + $buf .= "false"; + } + $buf .= "}"; + return $buf; + } + + /** + * The string to search for within a file. + * + * @param string $contains the string that a file must contain to be selected. + */ + public function setText($contains) { + $this->contains = $contains; + } + + /** + * Whether to ignore case in the string being searched. + * + * @param boolean $casesensitive whether to pay attention to case sensitivity + */ + public function setCasesensitive($casesensitive) { + $this->casesensitive = $casesensitive; + } + + /** + * When using this as a custom selector, this method will be called. + * It translates each parameter into the appropriate setXXX() call. + * + * @param array $parameters the complete set of parameters for this selector + */ + public function setParameters($parameters) { + parent::setParameters($parameters); + if ($parameters !== null) { + for ($i=0,$size=count($parameters); $i < $size; $i++) { + $paramname = $parameters[$i]->getName(); + switch(strtolower($paramname)) { + case self::CONTAINS_KEY: + $this->setText($parameters[$i]->getValue()); + break; + case self::CASE_KEY: + $this->setCasesensitive($parameters[$i]->getValue()); + break; + default: + $this->setError("Invalid parameter " . $paramname); + } + } // for each param + } // if params + } + + /** + * Checks to make sure all settings are kosher. In this case, it + * means that the pattern attribute has been set. + * + */ + public function verifySettings() { + if ($this->contains === null) { + $this->setError("The text attribute is required"); + } + } + + /** + * The heart of the matter. This is where the selector gets to decide + * on the inclusion of a file in a particular fileset. + * + * @param basedir the base directory the scan is being done from + * @param filename is the name of the file to check + * @param file a PhingFile object the selector can use + * @return whether the file should be selected or not + */ + public function isSelected(PhingFile $basedir, $filename, PhingFile $file) { + + $this->validate(); + + if ($file->isDirectory()) { + return true; + } + + $userstr = $this->contains; + if (!$this->casesensitive) { + $userstr = strtolower($this->contains); + } + + $in = null; + try { + $in = new BufferedReader(new FileReader($file)); + $teststr = $in->readLine(); + while ($teststr !== null) { + if (!$this->casesensitive) { + $teststr = strtolower($teststr); + } + if (strpos($teststr, $userstr) !== false) { + return true; + } + $teststr = $in->readLine(); + } + return false; + } catch (IOException $ioe) { + if ($in) $in->close(); + throw new BuildException("Could not read file " . $filename); + } + $in->close(); + } + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/DateSelector.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/DateSelector.php new file mode 100644 index 0000000..f373ab8 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/DateSelector.php @@ -0,0 +1,214 @@ +. + */ + +require_once 'phing/types/selectors/BaseExtendSelector.php'; + +/** + * Selector that chooses files based on their last modified date. Ant uses + * millisecond precision (thanks to Java); PHP is forced to use only seconds + * precision. + * + * @author Hans Lellelid (Phing) + * @author Bruce Atherton (Ant) + * @version $Revision: 1.10 $ + * @package phing.types.selecctors + */ +class DateSelector extends BaseExtendSelector { + + private $seconds = -1; // millis in Ant, but PHP doesn't support that level of precision + private $dateTime = null; + private $includeDirs = false; + private $granularity = 0; + private $cmp = 2; + const MILLIS_KEY = "millis"; + const DATETIME_KEY = "datetime"; + const CHECKDIRS_KEY = "checkdirs"; + const GRANULARITY_KEY = "granularity"; + const WHEN_KEY = "when"; + private static $timeComparisons = array("before", "after", "equal"); + + public function __construct() { + //if (Os.isFamily("dos")) { + // granularity = 2000; + //} + } + + public function toString() { + $buf = "{dateselector date: "; + $buf .= $this->dateTime; + $buf .= " compare: "; + if ($this->cmp === 0) { + $buf .= "before"; + } elseif ($this->cmp === 1) { + $buf .= "after"; + } else { + $buf .= "equal"; + } + $buf .= " granularity: "; + $buf .= $this->granularity; + $buf .= "}"; + return $buf; + } + + /** + * For users that prefer to express time in seconds since 1970 + * + * @param int $seconds the time to compare file's last modified date to, + * expressed in milliseconds + */ + public function setSeconds($seconds) { + $this->seconds = (int) $seconds; + } + + /** + * Returns the seconds value the selector is set for. + */ + public function getSeconds() { + return $this->seconds; + } + + /** + * Sets the date. The user must supply it in MM/DD/YYYY HH:MM AM_PM + * format + * + * @param string $dateTime a string in MM/DD/YYYY HH:MM AM_PM format + */ + public function setDatetime($dateTime) { + $dt = strtotime($dateTime); + if ($dt == -1) { + $this->setError("Date of " . $dateTime + . " Cannot be parsed correctly. It should be in" + . " a format parsable by PHP's strtotime() function."); + } else { + $this->dateTime = $dateTime; + $this->setSeconds($dt); + } + } + + /** + * Should we be checking dates on directories? + * + * @param boolean $includeDirs whether to check the timestamp on directories + */ + public function setCheckdirs($includeDirs) { + $this->includeDirs = (boolean) $includeDirs; + } + + /** + * Sets the number of milliseconds leeway we will give before we consider + * a file not to have matched a date. + * @param int $granularity + */ + public function setGranularity($granularity) { + $this->granularity = (int) $granularity; + } + + /** + * Sets the type of comparison to be done on the file's last modified + * date. + * + * @param string $cmp The comparison to perform + */ + public function setWhen($cmp) { + $idx = array_search($cmp, self::$timeComparisons, true); + if ($idx === null) { + $this->setError("Invalid value for ".WHEN_KEY.": ".$cmp); + } else { + $this->cmp = $idx; + } + } + + /** + * When using this as a custom selector, this method will be called. + * It translates each parameter into the appropriate setXXX() call. + * + * @param array $parameters the complete set of parameters for this selector + */ + public function setParameters($parameters) { + parent::setParameters($parameters); + if ($parameters !== null) { + for ($i=0,$size=count($parameters); $i < $size; $i++) { + $paramname = $parameters[$i]->getName(); + switch(strtolower($paramname)) { + case self::MILLIS_KEY: + $this->setMillis($parameters[$i]->getValue()); + break; + case self::DATETIME_KEY: + $this->setDatetime($parameters[$i]->getValue()); + break; + case self::CHECKDIRS_KEY: + $this->setCheckdirs($parameters[$i]->getValue()); + break; + case self::GRANULARITY_KEY: + $this->setGranularity($parameters[$i]->getValue()); + break; + case self::WHEN_KEY: + $this->setWhen($parameters[$i]->getValue()); + break; + default: + $this->setError("Invalid parameter " . $paramname); + } // switch + } + } + } + + /** + * This is a consistency check to ensure the selector's required + * values have been set. + */ + public function verifySettings() { + if ($this->dateTime === null && $this->seconds < 0) { + $this->setError("You must provide a datetime or the number of " + . "seconds."); + } elseif ($this->seconds < 0) { + $this->setError("Date of " . $this->dateTime + . " results in negative seconds" + . " value relative to epoch (January 1, 1970, 00:00:00 GMT)."); + } + } + + /** + * The heart of the matter. This is where the selector gets to decide + * on the inclusion of a file in a particular fileset. + * + * @param PhingFile $basedir the base directory the scan is being done from + * @param string $filename is the name of the file to check + * @param PhingFile $file is a PhingFile object the selector can use + * @return boolean Whether the file should be selected or not + */ + public function isSelected(PhingFile $basedir, $filename, PhingFile $file) { + $this->validate(); + if ($file->isDirectory() && ($this->includeDirs === false)) { + return true; + } + if ($this->cmp === 0) { + return (($file->lastModified() - $this->granularity) < $this->seconds); + } elseif ($this->cmp === 1) { + return (($file->lastModified() - $this->granularity) > $this->seconds); + } else { + return (abs($file->lastModified() - $this->seconds) <= $this->granularity); + } + } + +} + + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/DependSelector.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/DependSelector.php new file mode 100644 index 0000000..86e7cf6 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/DependSelector.php @@ -0,0 +1,151 @@ +. + */ + +require_once 'phing/types/selectors/BaseSelector.php'; + +/** + * Selector that filters files based on whether they are newer than + * a matching file in another directory tree. It can contain a mapper + * element, so isn't available as an ExtendSelector (since those + * parameters can't hold other elements). + * + * @author Hans Lellelid (Phing) + * @author Bruce Atherton (Ant) + * @version $Revision: 1.8 $ + * @package phing.types.selectors + */ +class DependSelector extends BaseSelector { + + private $targetdir = null; + private $mapperElement = null; + private $map = null; + private $granularity = 0; + + public function __construct() { + // not yet supported: + //if (Os.isFamily("dos")) { + // $this->granularity = 2000; + //} + } + + public function toString() { + $buf = "{dependselector targetdir: "; + if ($this->targetdir === null) { + $buf .= "NOT YET SET"; + } else { + $buf .= $this->targetdir->getName(); + } + $buf .= " granularity: "; + $buf .= $this->granularity; + if ($this->map !== null) { + $buf .= " mapper: "; + $buf .= $this->map->toString(); + } elseif ($this->mapperElement !== null) { + $buf .= " mapper: "; + $buf .= $this->mapperElement->toString(); + } + $buf .= "}"; + return $buf; + } + + /** + * The name of the file or directory which is checked for out-of-date + * files. + * + * @param targetdir the directory to scan looking for files. + */ + public function setTargetdir(PhingFile $targetdir) { + $this->targetdir = $targetdir; + } + + /** + * Sets the number of milliseconds leeway we will give before we consider + * a file out of date. + */ + public function setGranularity($granularity) { + $this->granularity = (int) granularity; + } + + /** + * Defines the FileNameMapper to use (nested mapper element). + * @throws BuildException + */ + public function createMapper() { + if ($this->mapperElement !== null) { + throw new BuildException("Cannot define more than one mapper"); + } + $this->mapperElement = new Mapper($this->project); + return $this->mapperElement; + } + + + /** + * Checks to make sure all settings are kosher. In this case, it + * means that the dest attribute has been set and we have a mapper. + */ + public function verifySettings() { + if ($this->targetdir === null) { + $this->setError("The targetdir attribute is required."); + } + if ($this->mapperElement === null) { + $this->map = new IdentityMapper(); + } else { + $this->map = $this->mapperElement->getImplementation(); + } + if ($this->map === null) { + $this->setError("Could not set element."); + } + } + + /** + * The heart of the matter. This is where the selector gets to decide + * on the inclusion of a file in a particular fileset. + * + * @param basedir the base directory the scan is being done from + * @param filename is the name of the file to check + * @param file is a PhingFile object the selector can use + * @return whether the file should be selected or not + */ + public function isSelected(PhingFile $basedir, $filename, PhingFile $file) { + + $this->validate(); + + // Determine file whose out-of-dateness is to be checked + $destfiles = $this->map->main($filename); + + // If filename does not match the To attribute of the mapper + // then filter it out of the files we are considering + if ($destfiles === null) { + return false; + } + // Sanity check + if (count($destfiles) !== 1 || $destfiles[0] === null) { + throw new BuildException("Invalid destination file results for " . $this->targetdir . " with filename " . $filename); + } + $destname = $destfiles[0]; + $destfile = new PhingFile($this->targetdir, $destname); + + return SelectorUtils::isOutOfDate($file, $destfile, $this->granularity); + } + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/DepthSelector.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/DepthSelector.php new file mode 100644 index 0000000..b23b863 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/DepthSelector.php @@ -0,0 +1,158 @@ +. + */ + +require_once 'phing/types/selectors/BaseExtendSelector.php'; + +/** + * Selector that filters files based on the how deep in the directory + * tree they are. + * + * @author Hans Lellelid (Phing) + * @author Bruce Atherton (Ant) + * @version $Revision: 1.7 $ + * @package phing.types.selectors + */ +class DepthSelector extends BaseExtendSelector { + + public $min = -1; + public $max = -1; + const MIN_KEY = "min"; + const MAX_KEY = "max"; + + public function toString() { + $buf = "{depthselector min: "; + $buf .= $this->min; + $buf .= " max: "; + $buf .= $this->max; + $buf .= "}"; + return $buf; + } + + /** + * The minimum depth below the basedir before a file is selected. + * + * @param min minimum directory levels below basedir to go + */ + public function setMin($min) { + $this->min = (int) $min; + } + + /** + * The minimum depth below the basedir before a file is selected. + * + * @param min maximum directory levels below basedir to go + */ + public function setMax($max) { + $this->max = (int) $max; + } + + /** + * When using this as a custom selector, this method will be called. + * It translates each parameter into the appropriate setXXX() call. + * + * @param parameters the complete set of parameters for this selector + */ + public function setParameters($parameters) { + parent::setParameters($parameters); + if ($parameters !== null) { + for ($i = 0, $size=count($parameters); $i < $size; $i++) { + $paramname = $parameters[$i]->getName(); + switch(strtolower($paramname)) { + case self::MIN_KEY: + $this->setMin($parameters[$i]->getValue()); + break; + case self::MAX_KEY: + $this->setMax($parameters[$i]->getValue()); + break; + + default: + $this->setError("Invalud parameter " . $paramname); + } // switch + } + } + } + + /** + * Checks to make sure all settings are kosher. In this case, it + * means that the max depth is not lower than the min depth. + */ + public function verifySettings() { + if ($this->min < 0 && $this->max < 0) { + $this->setError("You must set at least one of the min or the " . + "max levels."); + } + if ($this->max < $this->min && $this->max > -1) { + $this->setError("The maximum depth is lower than the minimum."); + } + } + + /** + * The heart of the matter. This is where the selector gets to decide + * on the inclusion of a file in a particular fileset. Most of the work + * for this selector is offloaded into SelectorUtils, a static class + * that provides the same services for both FilenameSelector and + * DirectoryScanner. + * + * @param basedir the base directory the scan is being done from + * @param filename is the name of the file to check + * @param file is a PhingFile object the selector can use + * @return whether the file should be selected or not + */ + public function isSelected(PhingFile $basedir, $filename, PhingFile $file) { + + $this->validate(); + + $depth = -1; + // If you felt daring, you could cache the basedir absolute path + $abs_base = $basedir->getAbsolutePath(); + $abs_file = $file->getAbsolutePath(); + + $tok_base = explode(DIRECTORY_SEPARATOR, $abs_base); + $tok_file = explode(DIRECTORY_SEPARATOR, $abs_file); + + for($i=0,$size=count($tok_file); $i < $size; $i++) { + $filetoken = $tok_file[$i]; + if (isset($tok_base[$i])) { + $basetoken = $tok_base[$i]; + // Sanity check. Ditch it if you want faster performance + if ($basetoken !== $filetoken) { + throw new BuildException("File " . $filename . + " does not appear within " . $abs_base . "directory"); + } + } else { // no more basepath tokens + $depth++; + if ($this->max > -1 && $depth > $this->max) { + return false; + } + } + } + if (isset($tok_base[$i + 1])) { + throw new BuildException("File " . $filename . + " is outside of " . $abs_base . "directory tree"); + } + if ($this->min > -1 && $depth < $this->min) { + return false; + } + return true; + } + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/ExtendFileSelector.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/ExtendFileSelector.php new file mode 100644 index 0000000..6f3990b --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/ExtendFileSelector.php @@ -0,0 +1,43 @@ +. + */ + +require_once 'phing/types/Parameterizable.php'; +require_once 'phing/types/selectors/FileSelector.php'; + +/** + * This is the interface to be used by all custom selectors, those that are + * called through the <custom> tag. It is the amalgamation of two + * interfaces, the FileSelector and the Paramterizable interface. Note that + * you will almost certainly want the default behaviour for handling + * Parameters, so you probably want to use the BaseExtendSelector class + * as the base class for your custom selector rather than implementing + * this interface from scratch. + * + * @author Hans Lellelid (Phing) + * @author Bruce Atherton (Ant) + * @package phing.types.selectors + */ +interface ExtendFileSelector extends Parameterizable, FileSelector { + // No further methods necessary. This is just an amalgamation of two other + // interfaces. +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/ExtendSelector.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/ExtendSelector.php new file mode 100644 index 0000000..168199e --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/ExtendSelector.php @@ -0,0 +1,124 @@ +. + */ + +include_once 'phing/util/StringHelper.php'; + +/** + * Selector that selects files by forwarding the request on to other classes. + * + * TODO - Consider adding Path (phing.types.Path) support to this class + * and to the Mappers class. See Ant versions for implimentation details. + * + * @author Hans Lellelid (Phing) + * @author Bruce Atherton (Ant) + * @package phing.types.selectors + */ +class ExtendSelector extends BaseSelector { + + private $classname; + private $dynselector; + private $parameters = array(); + + /** + * Sets the classname of the custom selector. + * + * @param classname is the class which implements this selector + */ + public function setClassname($classname) { + $this->classname = $classname; + } + + /** + * Instantiates the identified custom selector class. + */ + public function selectorCreate() { + if ($this->classname !== null && $this->classname !== "") { + try { + // assume it's fully qualified, import it + $cls = Phing::import($this->classname); + + // make sure class exists + if (class_exists($cls)) { + $this->dynselector = new $cls(); + } else { + $this->setError("Selector " . $this->classname . " not initialized, no such class"); + } + } catch (Exception $e) { + $this->setError("Selector " . $this->classname . " not initialized, could not create class: " . $e->getMessage()); + } + } else { + $this->setError("There is no classname specified"); + } + } + + /** + * Create new parameters to pass to custom selector. + * + * @param p The new Parameter object + */ + public function addParam(Parameter $p) { + $this->parameters[] = $p; + } + + /** + * These are errors specific to ExtendSelector only. If there are + * errors in the custom selector, it should throw a BuildException + * when isSelected() is called. + */ + public function verifySettings() { + // Creation is done here rather than in isSelected() because some + // containers may do a validation pass before running isSelected(), + // but we need to check for the existence of the created class. + if ($this->dynselector === null) { + $this->selectorCreate(); + } + + if (empty($this->classname)) { + $this->setError("The classname attribute is required"); + } elseif ($this->dynselector === null) { + $this->setError("Internal Error: The custom selector was not created"); + } elseif ( !($this->dynselector instanceof ExtendFileSelector) && (count($this->parameters) > 0)) { + $this->setError("Cannot set parameters on custom selector that does not " + . "implement ExtendFileSelector."); + } + } + + + /** + * Allows the custom selector to choose whether to select a file. This + * is also where the Parameters are passed to the custom selector. + * + * @throws BuildException + */ + public function isSelected(PhingFile $basedir, $filename, PhingFile $file) { + + $this->validate(); + + if (count($this->parameters) > 0 && $this->dynselector instanceof ExtendFileSelector) { + // We know that dynselector must be non-null if no error message + $this->dynselector->setParameters($this->parameters); + } + return $this->dynselector->isSelected($basedir, $filename, $file); + } + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/FileSelector.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/FileSelector.php new file mode 100644 index 0000000..45623f5 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/FileSelector.php @@ -0,0 +1,47 @@ +. + */ + +/** + * This is the interface to be used by all selectors. + * + * @author Hans Lellelid, hans@xmpl.org (Phing) + * @author Bruce Atherton, bruce@callenish.com (Ant) + * @package phing.types.selectors + */ +interface FileSelector { + + /** + * Method that each selector will implement to create their + * selection behaviour. If there is a problem with the setup + * of a selector, it can throw a BuildException to indicate + * the problem. + * + * @param basedir A PhingFile object for the base directory + * @param filename The name of the file to check + * @param file A PhingFile object for this filename + * @return whether the file should be selected or not + * @throws BuildException if the selector was not configured correctly + */ + public function isSelected(PhingFile $basedir, $filename, PhingFile $file); + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/FilenameSelector.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/FilenameSelector.php new file mode 100644 index 0000000..c15893e --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/FilenameSelector.php @@ -0,0 +1,157 @@ +. + */ + + +include_once 'phing/types/selectors/BaseExtendSelector.php'; + +/** + * Selector that filters files based on the filename. + * + * @author Hans Lellelid, hans@xmpl.org (Phing) + * @author Bruce Atherton, bruce@callenish.com (Ant) + * @package phing.types.selectors + */ +class FilenameSelector extends BaseExtendSelector { + + private $pattern = null; + private $casesensitive = true; + private $negated = false; + const NAME_KEY = "name"; + const CASE_KEY = "casesensitive"; + const NEGATE_KEY = "negate"; + + public function toString() { + $buf = "{filenameselector name: "; + $buf .= $this->pattern; + $buf .= " negate: "; + if ($this->negated) { + $buf .= "true"; + } else { + $buf .= "false"; + } + $buf .= " casesensitive: "; + if ($this->casesensitive) { + $buf .= "true"; + } else { + $buf .= "false"; + } + $buf .= "}"; + return $buf; + } + + /** + * The name of the file, or the pattern for the name, that + * should be used for selection. + * + * @param pattern the file pattern that any filename must match + * against in order to be selected. + */ + public function setName($pattern) { + $pattern = str_replace('\\', DIRECTORY_SEPARATOR, $pattern); + $pattern = str_replace('/', DIRECTORY_SEPARATOR, $pattern); + + if (StringHelper::endsWith(DIRECTORY_SEPARATOR, $pattern)) { + $pattern .= "**"; + } + $this->pattern = $pattern; + } + + /** + * Whether to ignore case when checking filenames. + * + * @param casesensitive whether to pay attention to case sensitivity + */ + public function setCasesensitive($casesensitive) { + $this->casesensitive = $casesensitive; + } + + /** + * You can optionally reverse the selection of this selector, + * thereby emulating an <exclude> tag, by setting the attribute + * negate to true. This is identical to surrounding the selector + * with <not></not>. + * + * @param negated whether to negate this selection + */ + public function setNegate($negated) { + $this->negated = $negated; + } + + /** + * When using this as a custom selector, this method will be called. + * It translates each parameter into the appropriate setXXX() call. + * + * @param array $parameters the complete set of parameters for this selector + */ + public function setParameters($parameters) { + parent::setParameters($parameters); + if ($parameters !== null) { + for ($i=0, $len=count($parameters); $i < $len; $i++) { + $paramname = $parameters[$i]->getName(); + switch(strtolower($paramname)) { + case self::NAME_KEY: + $this->setName($parameters[$i]->getValue()); + break; + case self::CASE_KEY: + $this->setCasesensitive($parameters[$i]->getValue()); + break; + case self::NEGATE_KEY: + $this->setNegate($parameters[$i]->getValue()); + break; + default: + $this->setError("Invalid parameter " . $paramname); + } + } // for each param + } // if params + } + + /** + * Checks to make sure all settings are kosher. In this case, it + * means that the name attribute has been set. + * + */ + public function verifySettings() { + if ($this->pattern === null) { + $this->setError("The name attribute is required"); + } + } + + /** + * The heart of the matter. This is where the selector gets to decide + * on the inclusion of a file in a particular fileset. Most of the work + * for this selector is offloaded into SelectorUtils, a static class + * that provides the same services for both FilenameSelector and + * DirectoryScanner. + * + * @param basedir the base directory the scan is being done from + * @param filename is the name of the file to check + * @param file is a PhingFile object the selector can use + * @return whether the file should be selected or not + */ + public function isSelected(PhingFile $basedir, $filename, PhingFile $file) { + $this->validate(); + return (SelectorUtils::matchPath($this->pattern, $filename, $this->casesensitive) + === !($this->negated)); + } + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/MajoritySelector.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/MajoritySelector.php new file mode 100644 index 0000000..f53f6f7 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/MajoritySelector.php @@ -0,0 +1,92 @@ +. + */ + + +/** + * This selector is here just to shake up your thinking a bit. Don't get + * too caught up in boolean, there are other ways you can evaluate a + * collection of selectors. This one takes a vote of the selectors it + * contains, and majority wins. You could also have an "all-but-one" + * selector, a "weighted-average" selector, and so on. These are left + * as exercises for the reader (as are the usecases where this would + * be necessary). + * + * @author Hans Lellelid (Phing) + * @author Bruce Atherton (Ant) + * @package phing.types.selectors + */ +class MajoritySelector extends BaseSelectorContainer { + + private $allowtie = true; + + public function toString() { + $buf = ""; + if ($this->hasSelectors()) { + $buf .= "{majorityselect: "; + $buf .= parent::toString(); + $buf .= "}"; + } + return $buf; + } + + public function setAllowtie($tiebreaker) { + $this->allowtie = $tiebreaker; + } + + /** + * Returns true (the file is selected) if most of the other selectors + * agree. In case of a tie, go by the allowtie setting. That defaults + * to true, meaning in case of a tie, the file is selected. + * + * @param basedir the base directory the scan is being done from + * @param filename is the name of the file to check + * @param file is a PhingFile object for the filename that the selector + * can use + * @return whether the file should be selected or not + */ + public function isSelected(PhingFile $basedir, $filename, PhingFile $file) { + + $this->validate(); + + $yesvotes = 0; + $novotes = 0; + + $selectors = $this->selectorElements(); + for($i=0,$size=count($selectors); $i < $size; $i++) { + $result = $selectors[$i]->isSelected($basedir,$filename,$file); + if ($result) { + $yesvotes = $yesvotes + 1; + } else { + $novotes = $novotes + 1; + } + } + if ($yesvotes > $novotes) { + return true; + } + else if ($novotes > $yesvotes) { + return false; + } + // At this point, we know we have a tie. + return $this->allowtie; + } +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/NoneSelector.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/NoneSelector.php new file mode 100644 index 0000000..3556233 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/NoneSelector.php @@ -0,0 +1,71 @@ +. + */ + +require_once 'phing/types/selectors/BaseSelectorContainer.php'; + +/** + * This selector has a collection of other selectors. All of those selectors + * must refuse to select a file before the file is considered selected by + * this selector. + * + * @author Hans Lellelid + * @author Bruce Atherton (Ant) + * @package phing.types.selectors + */ +class NoneSelector extends BaseSelectorContainer { + + public function toString() { + $buf = ""; + if ($this->hasSelectors()) { + $buf .= "{noneselect: "; + $buf .= parent::toString(); + $buf .= "}"; + } + return $buf; + } + + /** + * Returns true (the file is selected) only if all other selectors + * agree that the file should not be selected. + * + * @param basedir the base directory the scan is being done from + * @param filename is the name of the file to check + * @param file is a java.io.File object for the filename that the selector + * can use + * @return whether the file should be selected or not + */ + public function isSelected(PhingFile $basedir, $filename, PhingFile $file) { + + $this->validate(); + + $selectors = $this->selectorElements(); + + for($i=0,$size=count($selectors); $i < $size; $i++) { + $result = $selectors[$i]->isSelected($basedir, $filename, $file); + if ($result) { + return false; + } + } + return true; + } + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/NotSelector.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/NotSelector.php new file mode 100644 index 0000000..b9680b8 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/NotSelector.php @@ -0,0 +1,59 @@ +. + */ + +require_once 'phing/types/selectors/NoneSelector.php'; + +/** + * This selector has one other selectors whose meaning it inverts. It + * actually relies on NoneSelector for its implementation of the + * isSelected() method, but it adds a check to ensure there is only one + * other selector contained within. + * + * @author Hans Lellelid (Phing) + * @author Bruce Atherton (Ant) + * @package phing.types.selectors + */ +class NotSelector extends NoneSelector { + + public function toString() { + $buf = ""; + if ($this->hasSelectors()) { + $buf .= "{notselect: "; + $buf .= parent::toString(); + $buf .= "}"; + } + return $buf; + } + + /** + * Makes sure that there is only one entry, sets an error message if + * not. + */ + public function verifySettings() { + if ($this->selectorCount() != 1) { + $this->setError("One and only one selector is allowed within the " . + " tag"); + } + } + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/OrSelector.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/OrSelector.php new file mode 100644 index 0000000..ca8cb8b --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/OrSelector.php @@ -0,0 +1,72 @@ +. + */ + +require_once 'phing/types/selectors/BaseSelectorContainer.php'; + +/** + * This selector has a collection of other selectors, any of which have to + * select a file in order for this selector to select it. + * + * @author Hans Lellelid (Phing) + * @author Bruce Atherton (Ant) + * @package phing.types.selectors + */ +class OrSelector extends BaseSelectorContainer { + + public function toString() { + $buf = ""; + if ($this->hasSelectors()) { + $buf .= "{orselect: "; + $buf .= parent::toString(); + $buf .= "}"; + } + return $buf; + } + + /** + * Returns true (the file is selected) if any of the other selectors + * agree that the file should be selected. + * + * @param basedir the base directory the scan is being done from + * @param filename the name of the file to check + * @param file a PhingFile object for the filename that the selector + * can use + * @return boolean Whether the file should be selected or not + */ + public function isSelected(PhingFile $basedir, $filename, PhingFile $file) { + + $this->validate(); + + $selectors = $this->selectorElements(); + + // First, check that all elements are correctly configured + + for($i=0,$size=count($selectors); $i < $size; $i++) { + $result = $selectors[$i]->isSelected($basedir, $filename, $file); + if ($result) { + return true; + } + } + return false; + } + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/PresentSelector.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/PresentSelector.php new file mode 100644 index 0000000..563ce9a --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/PresentSelector.php @@ -0,0 +1,154 @@ +. + */ + +/** + * Selector that filters files based on whether they appear in another + * directory tree. It can contain a mapper element, so isn't available + * as an ExtendSelector (since those parameters can't hold other + * elements). + * + * @author Hans Lellelid (Phing) + * @author Bruce Atherton (Ant) + * @package phing.types.selectors + */ +class PresentSelector extends BaseSelector { + + private $targetdir = null; + private $mapperElement = null; + private $map = null; + private $destmustexist = true; + private static $filePresence = array("srconly", "both"); + + public function toString() { + $buf = "{presentselector targetdir: "; + if ($this->targetdir === null) { + $buf .= "NOT YET SET"; + } else { + $buf .= $this->targetdir->getName(); + } + $buf .= " present: "; + if ($this->destmustexist) { + $buf .= "both"; + } else { + $buf .= "srconly"; + } + if ($this->map !== null) { + $buf .= $this->map->toString(); + } elseif ($this->mapperElement !== null) { + $buf .= $this->mapperElement->toString(); + } + $buf .= "}"; + return $buf; + } + + /** + * The name of the file or directory which is checked for matching + * files. + * + * @param targetdir the directory to scan looking for matching files. + */ + public function setTargetdir(PhingFile $targetdir) { + $this->targetdir = $targetdir; + } + + /** + * Defines the FileNameMapper to use (nested mapper element). + * @throws BuildException + */ + public function createMapper() { + if ($this->mapperElement !== null) { + throw new BuildException("Cannot define more than one mapper"); + } + $this->mapperElement = new Mapper($this->getProject()); + return $this->mapperElement; + } + + + /** + * This sets whether to select a file if its dest file is present. + * It could be a negate boolean, but by doing things + * this way, we get some documentation on how the system works. + * A user looking at the documentation should clearly understand + * that the ONLY files whose presence is being tested are those + * that already exist in the source directory, hence the lack of + * a destonly option. + * + * @param string $fp An attribute set to either srconlyboth. + */ + public function setPresent($fp) { + $idx = array_search($fp, self::$filePresence, true); + if ( $idx === 0 ) { + $this->destmustexist = false; + } + } + + /** + * Checks to make sure all settings are kosher. In this case, it + * means that the targetdir attribute has been set and we have a mapper. + */ + public function verifySettings() { + if ($this->targetdir === null) { + $this->setError("The targetdir attribute is required."); + } + if ($this->mapperElement === null) { + $this->map = new IdentityMapper(); + } else { + $this->map = $this->mapperElement->getImplementation(); + } + if ($this->map === null) { + $this->setError("Could not set element."); + } + } + + /** + * The heart of the matter. This is where the selector gets to decide + * on the inclusion of a file in a particular fileset. + * + * @param basedir the base directory the scan is being done from + * @param filename is the name of the file to check + * @param file is a PhingFile object the selector can use + * @return whether the file should be selected or not + */ + public function isSelected(PhingFile $basedir, $filename, PhingFile $file) { + + $this->validate(); + + // Determine file whose existence is to be checked + $destfiles = $this->map->main($filename); + // If filename does not match the To attribute of the mapper + // then filter it out of the files we are considering + if ($destfiles === null) { + return false; + } + // Sanity check + if (count($destfiles) !== 1 || $destfiles[0] === null) { + throw new BuildException("Invalid destination file results for " + . $this->targetdir . " with filename " . $filename); + } + $destname = $destfiles[0]; + $destfile = new PhingFile($this->targetdir, $destname); + return $destfile->exists() === $this->destmustexist; + } + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/SelectSelector.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/SelectSelector.php new file mode 100644 index 0000000..c04cd66 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/SelectSelector.php @@ -0,0 +1,124 @@ +. + */ + +require_once 'phing/types/selectors/AndSelector.php'; + +/** + * This selector just holds one other selector and forwards all + * requests to it. It exists so that there is a single selector + * type that can exist outside of any targets, as an element of + * project. It overrides all of the reference stuff so that it + * works as expected. Note that this is the only selector you + * can reference. + * + * @author Hans Lellelid (Phing) + * @author Bruce Atherton (Ant) + * @version $Revision: 1.6 $ + * @package phing.types.selectors + */ +class SelectSelector extends AndSelector { + + public function toString() { + $buf = ""; + if ($this->hasSelectors()) { + $buf .= "{select: "; + $buf .= parent::toString(); + $buf .= "}"; + } + return $buf; + } + + /** + * Performs the check for circular references and returns the + * referenced Selector. + */ + private function getRef() { + $o = $this->getCheckedRef(get_class($this), "SelectSelector"); + return $o; + } + + /** + * Indicates whether there are any selectors here. + */ + public function hasSelectors() { + if ($this->isReference()) { + return $this->getRef()->hasSelectors(); + } + return parent::hasSelectors(); + } + + /** + * Gives the count of the number of selectors in this container + */ + public function selectorCount() { + if ($this->isReference()) { + return $this->getRef()->selectorCount(); + } + return parent::selectorCount(); + } + + /** + * Returns the set of selectors as an array. + */ + public function getSelectors(Project $p) { + if ($this->isReference()) { + return $this->getRef()->getSelectors($p); + } + return parent::getSelectors($p); + } + + /** + * Returns an enumerator for accessing the set of selectors. + */ + public function selectorElements() { + if ($this->isReference()) { + return $this->getRef()->selectorElements(); + } + return parent::selectorElements(); + } + + /** + * Add a new selector into this container. + * + * @param selector the new selector to add + * @return the selector that was added + */ + public function appendSelector(FileSelector $selector) { + if ($this->isReference()) { + throw $this->noChildrenAllowed(); + } + parent::appendSelector($selector); + } + + /** + * Makes sure that there is only one entry, sets an error message if + * not. + */ + public function verifySettings() { + if ($this->selectorCount() != 1) { + $this->setError("One and only one selector is allowed within the " + . " tag"); + } + } + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/SelectorContainer.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/SelectorContainer.php new file mode 100644 index 0000000..9fd21dc --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/SelectorContainer.php @@ -0,0 +1,141 @@ +. + */ + + +/** + * This is the interface for selectors that can contain other selectors. + * + * @author Bruce Atherton + * @package phing.types.selectors + */ +interface SelectorContainer { + + /** + * Indicates whether there are any selectors here. + * + * @return whether any selectors are in this container + */ + public function hasSelectors(); + + /** + * Gives the count of the number of selectors in this container + * + * @return the number of selectors in this container + */ + public function selectorCount(); + + /** + * Returns a *copy* of the set of selectors as an array. + * + * @return an array of selectors in this container + */ + public function getSelectors(Project $p); + + /** + * Returns an array for accessing the set of selectors. + * + * @return an enumerator that goes through each of the selectors + */ + public function selectorElements(); + + /** + * Add a new selector into this container. + * + * @param selector the new selector to add + * @return the selector that was added + */ + public function appendSelector(FileSelector $selector); + + /* Methods below all add specific selectors */ + + /** + * add a "Select" selector entry on the selector list + */ + public function createSelector(); + + /** + * add an "And" selector entry on the selector list + */ + public function createAnd(); + + /** + * add an "Or" selector entry on the selector list + */ + public function createOr(); + + /** + * add a "Not" selector entry on the selector list + */ + public function createNot(); + + /** + * add a "None" selector entry on the selector list + */ + public function createNone(); + + /** + * add a majority selector entry on the selector list + */ + public function createMajority(); + + /** + * add a selector date entry on the selector list + */ + public function createDate(); + + /** + * add a selector size entry on the selector list + */ + public function createSize(); + + /** + * add a selector filename entry on the selector list + */ + public function createFilename(); + + /** + * add an extended selector entry on the selector list + */ + public function createCustom(); + + /** + * add a contains selector entry on the selector list + */ + public function createContains(); + + /** + * add a present selector entry on the selector list + */ + public function createPresent(); + + /** + * add a depth selector entry on the selector list + */ + public function createDepth(); + + /** + * add a depends selector entry on the selector list + */ + public function createDepend(); + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/SelectorScanner.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/SelectorScanner.php new file mode 100644 index 0000000..aa2234f --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/SelectorScanner.php @@ -0,0 +1,55 @@ +. + */ + + +/** + * An interface used to describe the actions required by any type of + * directory scanner that supports Selecters. + * + * @author Hans Lellelid (Phing) + * @author Bruce Atherton (Ant) + * @package phing.types.selectors + */ +interface SelectorScanner { + + /** + * Sets the selectors the scanner should use. + * + * @param selectors the list of selectors + */ + public function setSelectors($selectors); + + /** + * Directories which were selected out of a scan. + * + * @param selectors list selector objects + */ + public function getDeselectedDirectories(); + + /** + * Files which were selected out of a scan. + * + * @param selectors list selector objects + */ + public function getDeselectedFiles(); + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/SelectorUtils.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/SelectorUtils.php new file mode 100644 index 0000000..b77dcbf --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/SelectorUtils.php @@ -0,0 +1,440 @@ +. + */ + +include_once 'phing/util/StringHelper.php'; + +/** + *

    This is a utility class used by selectors and DirectoryScanner. The + * functionality more properly belongs just to selectors, but unfortunately + * DirectoryScanner exposed these as protected methods. Thus we have to + * support any subclasses of DirectoryScanner that may access these methods. + *

    + *

    This is a Singleton.

    + * + * @author Hans Lellelid, hans@xmpl.org (Phing) + * @author Arnout J. Kuiper, ajkuiper@wxs.nl (Ant) + * @author Magesh Umasankar + * @author Bruce Atherton, bruce@callenish.com (Ant) + * @package phing.types.selectors + */ +class SelectorUtils { + + private static $instance; + + /** + * Retrieves the instance of the Singleton. + */ + public static function getInstance() { + if (!isset(self::$instance)) { + self::$instance = new SelectorUtils(); + } + return self::$instance; + } + + /** + * Tests whether or not a given path matches the start of a given + * pattern up to the first "**". + *

    + * This is not a general purpose test and should only be used if you + * can live with false positives. For example, pattern=**\a + * and str=b will yield true. + * + * @param pattern The pattern to match against. Must not be + * null. + * @param str The path to match, as a String. Must not be + * null. + * @param isCaseSensitive Whether or not matching should be performed + * case sensitively. + * + * @return whether or not a given path matches the start of a given + * pattern up to the first "**". + */ + public static function matchPatternStart($pattern, $str, $isCaseSensitive = true) { + + // When str starts with a DIRECTORY_SEPARATOR, pattern has to start with a + // DIRECTORY_SEPARATOR. + // When pattern starts with a DIRECTORY_SEPARATOR, str has to start with a + // DIRECTORY_SEPARATOR. + if (StringHelper::startsWith(DIRECTORY_SEPARATOR, $str) !== + StringHelper::startsWith(DIRECTORY_SEPARATOR, $pattern)) { + return false; + } + + $patDirs = explode(DIRECTORY_SEPARATOR, $pattern); + $strDirs = explode(DIRECTORY_SEPARATOR, $str); + + $patIdxStart = 0; + $patIdxEnd = count($patDirs)-1; + $strIdxStart = 0; + $strIdxEnd = count($strDirs)-1; + + // up to first '**' + while ($patIdxStart <= $patIdxEnd && $strIdxStart <= $strIdxEnd) { + $patDir = $patDirs[$patIdxStart]; + if ($patDir == "**") { + break; + } + if (!self::match($patDir, $strDirs[$strIdxStart], $isCaseSensitive)) { + return false; + } + $patIdxStart++; + $strIdxStart++; + } + + if ($strIdxStart > $strIdxEnd) { + // String is exhausted + return true; + } elseif ($patIdxStart > $patIdxEnd) { + // String not exhausted, but pattern is. Failure. + return false; + } else { + // pattern now holds ** while string is not exhausted + // this will generate false positives but we can live with that. + return true; + } + } + + /** + * Tests whether or not a given path matches a given pattern. + * + * @param pattern The pattern to match against. Must not be + * null. + * @param str The path to match, as a String. Must not be + * null. + * @param isCaseSensitive Whether or not matching should be performed + * case sensitively. + * + * @return true if the pattern matches against the string, + * or false otherwise. + */ + public static function matchPath($pattern, $str, $isCaseSensitive = true) { + + // When str starts with a DIRECTORY_SEPARATOR, pattern has to start with a + // DIRECTORY_SEPARATOR. + // When pattern starts with a DIRECTORY_SEPARATOR, str has to start with a + // DIRECTORY_SEPARATOR. + if (StringHelper::startsWith(DIRECTORY_SEPARATOR, $str) !== + StringHelper::startsWith(DIRECTORY_SEPARATOR, $pattern)) { + return false; + } + + $patDirs = explode(DIRECTORY_SEPARATOR, $pattern); + $strDirs = explode(DIRECTORY_SEPARATOR, $str); + + $patIdxStart = 0; + $patIdxEnd = count($patDirs)-1; + $strIdxStart = 0; + $strIdxEnd = count($strDirs)-1; + + // up to first '**' + while ($patIdxStart <= $patIdxEnd && $strIdxStart <= $strIdxEnd) { + $patDir = $patDirs[$patIdxStart]; + if ($patDir == "**") { + break; + } + if (!self::match($patDir, $strDirs[$strIdxStart], $isCaseSensitive)) { + return false; + } + $patIdxStart++; + $strIdxStart++; + } + if ($strIdxStart > $strIdxEnd) { + // String is exhausted + for ($i=$patIdxStart; $i <= $patIdxEnd; $i++) { + if ($patDirs[$i] != "**") { + return false; + } + } + return true; + } elseif ($patIdxStart > $patIdxEnd) { + // String not exhausted, but pattern is. Failure. + return false; + } + + // up to last '**' + while ($patIdxStart <= $patIdxEnd && $strIdxStart <= $strIdxEnd) { + $patDir = $patDirs[$patIdxEnd]; + if ($patDir == "**") { + break; + } + if (!self::match($patDir, $strDirs[$strIdxEnd], $isCaseSensitive)) { + return false; + } + $patIdxEnd--; + $strIdxEnd--; + } + + if ($strIdxStart > $strIdxEnd) { + // String is exhausted + for ($i = $patIdxStart; $i <= $patIdxEnd; $i++) { + if ($patDirs[$i] != "**") { + return false; + } + } + return true; + } + + while ($patIdxStart != $patIdxEnd && $strIdxStart <= $strIdxEnd) { + $patIdxTmp = -1; + for ($i = $patIdxStart+1; $i <= $patIdxEnd; $i++) { + if ($patDirs[$i] == "**") { + $patIdxTmp = $i; + break; + } + } + if ($patIdxTmp == $patIdxStart+1) { + // '**/**' situation, so skip one + $patIdxStart++; + continue; + } + // Find the pattern between padIdxStart & padIdxTmp in str between + // strIdxStart & strIdxEnd + $patLength = ($patIdxTmp-$patIdxStart-1); + $strLength = ($strIdxEnd-$strIdxStart+1); + $foundIdx = -1; + + //strLoop: (start of outer loop) + for ($i=0; $i <= $strLength - $patLength; $i++) { + for ($j = 0; $j < $patLength; $j++) { + $subPat = $patDirs[$patIdxStart+$j+1]; + $subStr = $strDirs[$strIdxStart+$i+$j]; + if (!self::match($subPat, $subStr, $isCaseSensitive)) { + continue 2; // continue up two levels (to strLoop:) + } + } + $foundIdx = $strIdxStart+$i; // only reached if all sub patterns matched + break; + } + + if ($foundIdx == -1) { + return false; + } + + $patIdxStart = $patIdxTmp; + $strIdxStart = $foundIdx + $patLength; + } + + for ($i = $patIdxStart; $i <= $patIdxEnd; $i++) { + if ($patDirs[$i] != "**") { + return false; + } + } + + return true; + } + + /** + * Tests whether or not a string matches against a pattern. + * The pattern may contain two special characters:
    + * '*' means zero or more characters
    + * '?' means one and only one character + * + * @param pattern The pattern to match against. + * Must not be null. + * @param str The string which must be matched against the pattern. + * Must not be null. + * @param isCaseSensitive Whether or not matching should be performed + * case sensitively. + * + * + * @return true if the string matches against the pattern, + * or false otherwise. + */ + public static function match($pattern, $str, $isCaseSensitive = true) { + + $patArr = StringHelper::toCharArray($pattern); + $strArr = StringHelper::toCharArray($str); + $patIdxStart = 0; + $patIdxEnd = count($patArr)-1; + $strIdxStart = 0; + $strIdxEnd = count($strArr)-1; + + $containsStar = false; + for ($i = 0, $size=count($patArr); $i < $size; $i++) { + if ($patArr[$i] == '*') { + $containsStar = true; + break; + } + } + + if (!$containsStar) { + // No '*'s, so we make a shortcut + if ($patIdxEnd != $strIdxEnd) { + return false; // Pattern and string do not have the same size + } + for ($i = 0; $i <= $patIdxEnd; $i++) { + $ch = $patArr[$i]; + if ($ch != '?') { + if ($isCaseSensitive && $ch !== $strArr[$i]) { + return false;// Character mismatch + } + if (!$isCaseSensitive && strtoupper($ch) !== + strtoupper($strArr[$i])) { + return false; // Character mismatch + } + } + } + return true; // String matches against pattern + } + + if ($patIdxEnd == 0) { + return true; // Pattern contains only '*', which matches anything + } + + // Process characters before first star + while(($ch = $patArr[$patIdxStart]) != '*' && $strIdxStart <= $strIdxEnd) { + if ($ch != '?') { + if ($isCaseSensitive && $ch !== $strArr[$strIdxStart]) { + return false;// Character mismatch + } + if (!$isCaseSensitive && strtoupper($ch) !== + strtoupper($strArr[$strIdxStart])) { + return false;// Character mismatch + } + } + $patIdxStart++; + $strIdxStart++; + } + + if ($strIdxStart > $strIdxEnd) { + // All characters in the string are used. Check if only '*'s are + // left in the pattern. If so, we succeeded. Otherwise failure. + for ($i = $patIdxStart; $i <= $patIdxEnd; $i++) { + if ($patArr[$i] != '*') { + return false; + } + } + return true; + } + + // Process characters after last star + while(($ch = $patArr[$patIdxEnd]) != '*' && $strIdxStart <= $strIdxEnd) { + if ($ch != '?') { + if ($isCaseSensitive && $ch !== $strArr[$strIdxEnd]) { + return false;// Character mismatch + } + if (!$isCaseSensitive && strtoupper($ch) !== + strtoupper($strArr[$strIdxEnd])) { + return false;// Character mismatch + } + } + $patIdxEnd--; + $strIdxEnd--; + } + if ($strIdxStart > $strIdxEnd) { + // All characters in the string are used. Check if only '*'s are + // left in the pattern. If so, we succeeded. Otherwise failure. + for ($i = $patIdxStart; $i <= $patIdxEnd; $i++) { + if ($patArr[$i] != '*') { + return false; + } + } + return true; + } + + // process pattern between stars. padIdxStart and patIdxEnd point + // always to a '*'. + while ($patIdxStart !== $patIdxEnd && $strIdxStart <= $strIdxEnd) { + $patIdxTmp = -1; + for ($i = $patIdxStart+1; $i <= $patIdxEnd; $i++) { + if ($patArr[$i] == '*') { + $patIdxTmp = $i; + break; + } + } + if ($patIdxTmp === $patIdxStart + 1) { + // Two stars next to each other, skip the first one. + $patIdxStart++; + continue; + } + // Find the pattern between padIdxStart & padIdxTmp in str between + // strIdxStart & strIdxEnd + $patLength = ($patIdxTmp - $patIdxStart - 1); + $strLength = ($strIdxEnd - $strIdxStart + 1); + $foundIdx = -1; + + //strLoop: + for ($i = 0; $i <= $strLength - $patLength; $i++) { + for ($j = 0; $j < $patLength; $j++) { + $ch = $patArr[$patIdxStart+$j+1]; + if ($ch != '?') { + if ($isCaseSensitive && $ch !== $strArr[$strIdxStart+$i+$j]) { + continue 2; //continue to strLoop: + } + if (!$isCaseSensitive && strtoupper($ch) !== + strtoupper($strArr[$strIdxStart+$i+$j])) { + continue 2; //continue to strLoop: + } + } + } + // only reached if sub loop completed w/o invoking continue 2 + $foundIdx = $strIdxStart + $i; + break; + } + + if ($foundIdx == -1) { + return false; + } + + $patIdxStart = $patIdxTmp; + $strIdxStart = $foundIdx + $patLength; + } + + // All characters in the string are used. Check if only '*'s are left + // in the pattern. If so, we succeeded. Otherwise failure. + for ($i = $patIdxStart; $i <= $patIdxEnd; $i++) { + if ($patArr[$i] != '*') { + return false; + } + } + return true; + } + + /** + * Returns dependency information on these two files. If src has been + * modified later than target, it returns true. If target doesn't exist, + * it likewise returns true. Otherwise, target is newer than src and + * is not out of date, thus the method returns false. It also returns + * false if the src file doesn't even exist, since how could the + * target then be out of date. + * + * @param PhingFile $src the original file + * @param PhingFile $target the file being compared against + * @param int $granularity the amount in seconds of slack we will give in + * determining out of dateness + * @return whether the target is out of date + */ + public static function isOutOfDate(PhingFile $src, PhingFile $target, $granularity) { + if (!$src->exists()) { + return false; + } + if (!$target->exists()) { + return true; + } + if (($src->lastModified() - $granularity) > $target->lastModified()) { + return true; + } + return false; + } + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/SizeSelector.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/SizeSelector.php new file mode 100644 index 0000000..b542033 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/SizeSelector.php @@ -0,0 +1,228 @@ +. + */ + + +/** + * Selector that filters files based on their size. + * + * @author Hans Lellelid (Phing) + * @author Bruce Atherton (Ant) + * @package phing.types.selectors + */ +class SizeSelector extends BaseExtendSelector { + + private $size = -1; + private $multiplier = 1; + private $sizelimit = -1; + private $cmp = 2; + const SIZE_KEY = "value"; + const UNITS_KEY = "units"; + const WHEN_KEY = "when"; + + private static $sizeComparisons = array("less", "more", "equal"); + private static $byteUnits = array("K", "k", "kilo", "KILO", + "Ki", "KI", "ki", "kibi", "KIBI", + "M", "m", "mega", "MEGA", + "Mi", "MI", "mi", "mebi", "MEBI", + "G", "g", "giga", "GIGA", + "Gi", "GI", "gi", "gibi", "GIBI", + "T", "t", "tera", "TERA", + /* You wish! */ "Ti", "TI", "ti", "tebi", "TEBI" + ); + + public function toString() { + $buf = "{sizeselector value: "; + $buf .= $this->sizelimit; + $buf .= "compare: "; + if ($this->cmp === 0) { + $buf .= "less"; + } elseif ($this->cmp === 1) { + $buf .= "more"; + } else { + $buf .= "equal"; + } + $buf .= "}"; + return $buf; + } + + /** + * A size selector needs to know what size to base its selecting on. + * This will be further modified by the multiplier to get an + * actual size limit. + * + * @param size the size to select against expressed in units + */ + public function setValue($size) { + $this->size = $size; + if (($this->multiplier !== 0) && ($this->size > -1)) { + $this->sizelimit = $size * $this->multiplier; + } + } + + /** + * Sets the units to use for the comparison. This is a little + * complicated because common usage has created standards that + * play havoc with capitalization rules. Thus, some people will + * use "K" for indicating 1000's, when the SI standard calls for + * "k". Others have tried to introduce "K" as a multiple of 1024, + * but that falls down when you reach "M", since "m" is already + * defined as 0.001. + *

    + * To get around this complexity, a number of standards bodies + * have proposed the 2^10 standard, and at least one has adopted + * it. But we are still left with a populace that isn't clear on + * how capitalization should work. + *

    + * We therefore ignore capitalization as much as possible. + * Completely mixed case is not possible, but all upper and lower + * forms are accepted for all long and short forms. Since we have + * no need to work with the 0.001 case, this practice works here. + *

    + * This function translates all the long and short forms that a + * unit prefix can occur in and translates them into a single + * multiplier. + * + * @param $units The units to compare the size to. + * @return void + */ + public function setUnits($units) { + $i = array_search($units, self::$byteUnits, true); + if ($i === false) $i = -1; // make it java-like + + $this->multiplier = 0; + if (($i > -1) && ($i < 4)) { + $this->multiplier = 1000; + } elseif (($i > 3) && ($i < 9)) { + $this->multiplier = 1024; + } elseif (($i > 8) && ($i < 13)) { + $this->multiplier = 1000000; + } elseif (($i > 12) && ($i < 18)) { + $this->multiplier = 1048576; + } elseif (($i > 17) && ($i < 22)) { + $this->multiplier = 1000000000; + } elseif (($i > 21) && ($i < 27)) { + $this->multiplier = 1073741824; + } elseif (($i > 26) && ($i < 31)) { + $this->multiplier = 1000000000000; + } elseif (($i > 30) && ($i < 36)) { + $this->multiplier = 1099511627776; + } + if (($this->multiplier > 0) && ($this->size > -1)) { + $this->sizelimit = $this->size * $this->multiplier; + } + } + + /** + * This specifies when the file should be selected, whether it be + * when the file matches a particular size, when it is smaller, + * or whether it is larger. + * + * @param cmp The comparison to perform, an EnumeratedAttribute + */ + public function setWhen($cmp) { + $c = array_search($cmp, self::$sizeComparisons, true); + if ($c !== false) { + $this->cmp = $c; + } + } + + /** + * When using this as a custom selector, this method will be called. + * It translates each parameter into the appropriate setXXX() call. + * + * @param parameters the complete set of parameters for this selector + */ + public function setParameters($parameters) { + parent::setParameters($parameters); + if ($parameters !== null) { + for ($i = 0, $size=count($parameters); $i < $size; $i++) { + $paramname = $parameters[$i]->getName(); + switch(strtolower($paramname)) { + case self::SIZE_KEY: + try { + $this->setValue($parameters[$i]->getValue()); + } catch (Exception $nfe) { + $this->setError("Invalid size setting " + . $parameters[$i]->getValue()); + } + break; + case self::UNITS_KEY: + $this->setUnits($parameters[$i]->getValue()); + break; + case self::WHEN_KEY: + $this->setWhen($parameters[$i]->getValue()); + break; + default: + $this->setError("Invalid parameter " . $paramname); + } + } + } + } + + /** + *

    Checks to make sure all settings are kosher. In this case, it + * means that the size attribute has been set (to a positive value), + * that the multiplier has a valid setting, and that the size limit + * is valid. Since the latter is a calculated value, this can only + * fail due to a programming error. + *

    + *

    If a problem is detected, the setError() method is called. + *

    + */ + public function verifySettings() { + if ($this->size < 0) { + $this->setError("The value attribute is required, and must be positive"); + } elseif ($this->multiplier < 1) { + $this->setError("Invalid Units supplied, must be K,Ki,M,Mi,G,Gi,T,or Ti"); + } elseif ($this->sizelimit < 0) { + $this->setError("Internal error: Code is not setting sizelimit correctly"); + } + } + + /** + * The heart of the matter. This is where the selector gets to decide + * on the inclusion of a file in a particular fileset. + * + * @param basedir A PhingFile object for the base directory + * @param filename The name of the file to check + * @param file A PhingFile object for this filename + * @return whether the file should be selected or not + */ + public function isSelected(PhingFile $basedir, $filename, PhingFile $file) { + + $this->validate(); + + // Directory size never selected for + if ($file->isDirectory()) { + return true; + } + if ($this->cmp === 0) { + return ($file->length() < $this->sizelimit); + } elseif ($this->cmp === 1) { + return ($file->length() > $this->sizelimit); + } else { + return ($file->length() === $this->sizelimit); + } + } + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/TypeSelector.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/TypeSelector.php new file mode 100644 index 0000000..a5e5449 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/types/selectors/TypeSelector.php @@ -0,0 +1,113 @@ +. + */ + +require_once 'phing/types/selectors/BaseExtendSelector.php'; + +/** + * Selector that selects a certain kind of file: directory or regular file. + * + * @author Hans Lellelid (Phing) + * @author Jeff Turner (Ant) + * @version $Revision: 1.3 $ + * @package phing.types.selectors + */ +class TypeSelector extends BaseExtendSelector { + + private $type; + + /** Key to used for parameterized custom selector */ + const TYPE_KEY = "type"; + + /** Valid types */ + private static $types = array('file', 'dir'); + + /** + * @return string A string describing this object + */ + public function toString() { + $buf = "{typeselector type: " . $this->type . "}"; + return $buf; + } + + /** + * Set the type of file to require. + * @param string $type The type of file - 'file' or 'dir' + */ + public function setType($type) { + $this->type = $type; + } + + /** + * When using this as a custom selector, this method will be called. + * It translates each parameter into the appropriate setXXX() call. + * + * @param array $parameters the complete set of parameters for this selector + */ + public function setParameters($parameters) { + parent::setParameters($parameters); + if ($parameters !== null) { + for ($i = 0, $size=count($parameters); $i < $size; $i++) { + $paramname = $parameters[$i]->getName(); + if (self::TYPE_KEY == strtolower($paramname)) { + $this->setType($parameters[$i]->getValue()); + } else { + $this->setError("Invalid parameter " . $paramname); + } + } + } + } + + /** + * Checks to make sure all settings are kosher. In this case, it + * means that the pattern attribute has been set. + * + */ + public function verifySettings() { + if ($this->type === null) { + $this->setError("The type attribute is required"); + } elseif (!in_array($this->type, self::$types, true)) { + $this->setError("Invalid type specified; must be one of (" . implode(self::$types) . ")"); + } + } + + /** + * The heart of the matter. This is where the selector gets to decide + * on the inclusion of a file in a particular fileset. + * + * @param PhingFile $basedir the base directory the scan is being done from + * @param string $filename is the name of the file to check + * @param PhingFile $file is a PhingFile object the selector can use + * @return boolean Whether the file should be selected or not + */ + public function isSelected(PhingFile $basedir, $filename, PhingFile $file) { + + // throw BuildException on error + $this->validate(); + + if ($file->isDirectory()) { + return $this->type === 'dir'; + } else { + return $this->type === 'file'; + } + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/all-wcprops new file mode 100644 index 0000000..d55e088 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/all-wcprops @@ -0,0 +1,47 @@ +K 25 +svn:wc:ra_dav:version-url +V 43 +/!svn/ver/432/tags/2.3.3/classes/phing/util +END +SourceFileScanner.php +K 25 +svn:wc:ra_dav:version-url +V 65 +/!svn/ver/432/tags/2.3.3/classes/phing/util/SourceFileScanner.php +END +ExtendedFileStream.php +K 25 +svn:wc:ra_dav:version-url +V 66 +/!svn/ver/432/tags/2.3.3/classes/phing/util/ExtendedFileStream.php +END +DirectoryScanner.php +K 25 +svn:wc:ra_dav:version-url +V 64 +/!svn/ver/432/tags/2.3.3/classes/phing/util/DirectoryScanner.php +END +LogWriter.php +K 25 +svn:wc:ra_dav:version-url +V 57 +/!svn/ver/432/tags/2.3.3/classes/phing/util/LogWriter.php +END +FileUtils.php +K 25 +svn:wc:ra_dav:version-url +V 57 +/!svn/ver/432/tags/2.3.3/classes/phing/util/FileUtils.php +END +StringHelper.php +K 25 +svn:wc:ra_dav:version-url +V 60 +/!svn/ver/432/tags/2.3.3/classes/phing/util/StringHelper.php +END +PathTokenizer.php +K 25 +svn:wc:ra_dav:version-url +V 61 +/!svn/ver/432/tags/2.3.3/classes/phing/util/PathTokenizer.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/entries new file mode 100644 index 0000000..7aae397 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/entries @@ -0,0 +1,269 @@ +10 + +dir +1404 +http://phing.mirror.svn.symfony-project.com/tags/2.3.3/classes/phing/util +http://phing.mirror.svn.symfony-project.com + + + +2007-12-20T15:44:58.929962Z +325 +hans + + + + + + + + + + + + + + +c8b19502-6211-4773-8637-5aef67d587fc + +SourceFileScanner.php +file + + + + +2012-05-10T18:42:05.365555Z +a696366e38401e0e944ccff01455f209 +2007-12-20T15:44:58.929962Z +325 +hans +has-props + + + + + + + + + + + + + + + + + + + + +6137 + +ExtendedFileStream.php +file + + + + +2012-05-10T18:42:05.369553Z +e4585263dd7bd318c3d3474e7478e98f +2007-12-20T15:44:58.929962Z +325 +hans +has-props + + + + + + + + + + + + + + + + + + + + +2896 + +DirectoryScanner.php +file + + + + +2012-05-10T18:42:05.369553Z +55bb84f60be7ce01025da55a56cb8695 +2007-11-01T01:25:23.078338Z +277 +hans +has-props + + + + + + + + + + + + + + + + + + + + +24814 + +LogWriter.php +file + + + + +2012-05-10T18:42:05.369553Z +0e144bfbaa6638506b8f4d411257445d +2007-12-20T15:44:58.929962Z +325 +hans +has-props + + + + + + + + + + + + + + + + + + + + +2184 + +FileUtils.php +file + + + + +2012-05-10T18:42:05.373553Z +c16235d4bfba0ff15470a5cba27a7fa9 +2007-12-20T15:44:58.929962Z +325 +hans +has-props + + + + + + + + + + + + + + + + + + + + +10565 + +regexp +dir + +StringHelper.php +file + + + + +2012-05-10T18:42:05.453560Z +29a47ab527e3e86465a89144dd6c9771 +2007-12-20T15:44:58.929962Z +325 +hans +has-props + + + + + + + + + + + + + + + + + + + + +6483 + +PathTokenizer.php +file + + + + +2012-05-10T18:42:05.457549Z +54827c5d276546d577fbcff1193e888e +2006-09-14T20:19:08.286051Z +123 +mrook +has-props + + + + + + + + + + + + + + + + + + + + +4841 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/prop-base/DirectoryScanner.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/prop-base/DirectoryScanner.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/prop-base/DirectoryScanner.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/prop-base/ExtendedFileStream.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/prop-base/ExtendedFileStream.php.svn-base new file mode 100644 index 0000000..77191a2 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/prop-base/ExtendedFileStream.php.svn-base @@ -0,0 +1,9 @@ +K 14 +svn:executable +V 1 +* +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/prop-base/FileUtils.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/prop-base/FileUtils.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/prop-base/FileUtils.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/prop-base/LogWriter.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/prop-base/LogWriter.php.svn-base new file mode 100644 index 0000000..77191a2 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/prop-base/LogWriter.php.svn-base @@ -0,0 +1,9 @@ +K 14 +svn:executable +V 1 +* +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/prop-base/PathTokenizer.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/prop-base/PathTokenizer.php.svn-base new file mode 100644 index 0000000..77191a2 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/prop-base/PathTokenizer.php.svn-base @@ -0,0 +1,9 @@ +K 14 +svn:executable +V 1 +* +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/prop-base/SourceFileScanner.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/prop-base/SourceFileScanner.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/prop-base/SourceFileScanner.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/prop-base/StringHelper.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/prop-base/StringHelper.php.svn-base new file mode 100644 index 0000000..bb2b0da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/prop-base/StringHelper.php.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +author date id revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/text-base/DirectoryScanner.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/text-base/DirectoryScanner.php.svn-base new file mode 100644 index 0000000..fa25032 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/text-base/DirectoryScanner.php.svn-base @@ -0,0 +1,712 @@ +. + */ + +require_once 'phing/types/selectors/SelectorScanner.php'; +include_once 'phing/util/StringHelper.php'; +include_once 'phing/types/selectors/SelectorUtils.php'; + +/** + * Class for scanning a directory for files/directories that match a certain + * criteria. + * + * These criteria consist of a set of include and exclude patterns. With these + * patterns, you can select which files you want to have included, and which + * files you want to have excluded. + * + * The idea is simple. A given directory is recursively scanned for all files + * and directories. Each file/directory is matched against a set of include + * and exclude patterns. Only files/directories that match at least one + * pattern of the include pattern list, and don't match a pattern of the + * exclude pattern list will be placed in the list of files/directories found. + * + * When no list of include patterns is supplied, "**" will be used, which + * means that everything will be matched. When no list of exclude patterns is + * supplied, an empty list is used, such that nothing will be excluded. + * + * The pattern matching is done as follows: + * The name to be matched is split up in path segments. A path segment is the + * name of a directory or file, which is bounded by DIRECTORY_SEPARATOR + * ('/' under UNIX, '\' under Windows). + * E.g. "abc/def/ghi/xyz.php" is split up in the segments "abc", "def", "ghi" + * and "xyz.php". + * The same is done for the pattern against which should be matched. + * + * Then the segments of the name and the pattern will be matched against each + * other. When '**' is used for a path segment in the pattern, then it matches + * zero or more path segments of the name. + * + * There are special case regarding the use of DIRECTORY_SEPARATOR at + * the beginning of the pattern and the string to match: + * When a pattern starts with a DIRECTORY_SEPARATOR, the string + * to match must also start with a DIRECTORY_SEPARATOR. + * When a pattern does not start with a DIRECTORY_SEPARATOR, the + * string to match may not start with a DIRECTORY_SEPARATOR. + * When one of these rules is not obeyed, the string will not + * match. + * + * When a name path segment is matched against a pattern path segment, the + * following special characters can be used: + * '*' matches zero or more characters, + * '?' matches one character. + * + * Examples: + * + * "**\*.php" matches all .php files/dirs in a directory tree. + * + * "test\a??.php" matches all files/dirs which start with an 'a', then two + * more characters and then ".php", in a directory called test. + * + * "**" matches everything in a directory tree. + * + * "**\test\**\XYZ*" matches all files/dirs that start with "XYZ" and where + * there is a parent directory called test (e.g. "abc\test\def\ghi\XYZ123"). + * + * Case sensitivity may be turned off if necessary. By default, it is + * turned on. + * + * Example of usage: + * $ds = new DirectroyScanner(); + * $includes = array("**\*.php"); + * $excludes = array("modules\*\**"); + * $ds->SetIncludes($includes); + * $ds->SetExcludes($excludes); + * $ds->SetBasedir("test"); + * $ds->SetCaseSensitive(true); + * $ds->Scan(); + * + * print("FILES:"); + * $files = ds->GetIncludedFiles(); + * for ($i = 0; $i < count($files);$i++) { + * println("$files[$i]\n"); + * } + * + * This will scan a directory called test for .php files, but excludes all + * .php files in all directories under a directory called "modules" + * + * This class is complete preg/ereg free port of the Java class + * org.apache.tools.ant.DirectoryScanner. Even functions that use preg/ereg + * internally (like split()) are not used. Only the _fast_ string functions + * and comparison operators (=== !=== etc) are used for matching and tokenizing. + * + * @author Arnout J. Kuiper, ajkuiper@wxs.nl + * @author Magesh Umasankar, umagesh@rediffmail.com + * @author Andreas Aderhold, andi@binarycloud.com + * + * @version $Revision: 1.15 $ + * @package phing.util + */ +class DirectoryScanner implements SelectorScanner { + + /** default set of excludes */ + protected $DEFAULTEXCLUDES = array( + "**/*~", + "**/#*#", + "**/.#*", + "**/%*%", + "**/CVS", + "**/CVS/**", + "**/.cvsignore", + "**/SCCS", + "**/SCCS/**", + "**/vssver.scc", + "**/.svn", + "**/.svn/**", + "**/._*", + "**/.DS_Store", + ); + + /** The base directory which should be scanned. */ + protected $basedir; + + /** The patterns for the files that should be included. */ + protected $includes = null; + + /** The patterns for the files that should be excluded. */ + protected $excludes = null; + + /** + * The files that where found and matched at least one includes, and matched + * no excludes. + */ + protected $filesIncluded; + + /** The files that where found and did not match any includes. Trie */ + protected $filesNotIncluded; + + /** + * The files that where found and matched at least one includes, and also + * matched at least one excludes. Trie object. + */ + protected $filesExcluded; + + /** + * The directories that where found and matched at least one includes, and + * matched no excludes. + */ + protected $dirsIncluded; + + /** The directories that where found and did not match any includes. */ + protected $dirsNotIncluded; + + /** + * The files that where found and matched at least one includes, and also + * matched at least one excludes. + */ + protected $dirsExcluded; + + /** Have the vars holding our results been built by a slow scan? */ + protected $haveSlowResults = false; + + /** Should the file system be treated as a case sensitive one? */ + protected $isCaseSensitive = true; + + /** Selectors */ + protected $selectors = null; + + protected $filesDeselected; + protected $dirsDeselected; + + /** if there are no deselected files */ + protected $everythingIncluded = true; + + /** + * Does the path match the start of this pattern up to the first "**". + * This is a static mehtod and should always be called static + * + * This is not a general purpose test and should only be used if you + * can live with false positives. + * + * pattern=**\a and str=b will yield true. + * + * @param pattern the (non-null) pattern to match against + * @param str the (non-null) string (path) to match + * @param isCaseSensitive must matches be case sensitive? + * @return boolean true if matches, otherwise false + */ + function matchPatternStart($pattern, $str, $isCaseSensitive = true) { + return SelectorUtils::matchPatternStart($pattern, $str, $isCaseSensitive); + } + + /** + * Matches a path against a pattern. Static + * + * @param pattern the (non-null) pattern to match against + * @param str the (non-null) string (path) to match + * @param isCaseSensitive must a case sensitive match be done? + * + * @return true when the pattern matches against the string. + * false otherwise. + */ + function matchPath($pattern, $str, $isCaseSensitive = true) { + return SelectorUtils::matchPath($pattern, $str, $isCaseSensitive); + } + + /** + * Matches a string against a pattern. The pattern contains two special + * characters: + * '*' which means zero or more characters, + * '?' which means one and only one character. + * + * @param pattern the (non-null) pattern to match against + * @param str the (non-null) string that must be matched against the + * pattern + * + * @return boolean true when the string matches against the pattern, + * false otherwise. + * @access public + */ + function match($pattern, $str, $isCaseSensitive = true) { + return SelectorUtils::match($pattern, $str, $isCaseSensitive); + } + + /** + * Sets the basedir for scanning. This is the directory that is scanned + * recursively. All '/' and '\' characters are replaced by + * DIRECTORY_SEPARATOR + * + * @param basedir the (non-null) basedir for scanning + */ + function setBasedir($_basedir) { + $_basedir = str_replace('\\', DIRECTORY_SEPARATOR, $_basedir); + $_basedir = str_replace('/', DIRECTORY_SEPARATOR, $_basedir); + $this->basedir = $_basedir; + } + + /** + * Gets the basedir that is used for scanning. This is the directory that + * is scanned recursively. + * + * @return the basedir that is used for scanning + */ + function getBasedir() { + return $this->basedir; + } + + /** + * Sets the case sensitivity of the file system + * + * @param specifies if the filesystem is case sensitive + */ + function setCaseSensitive($_isCaseSensitive) { + $this->isCaseSensitive = ($_isCaseSensitive) ? true : false; + } + + /** + * Sets the set of include patterns to use. All '/' and '\' characters are + * replaced by DIRECTORY_SEPARATOR. So the separator used need + * not match DIRECTORY_SEPARATOR. + * + * When a pattern ends with a '/' or '\', "**" is appended. + * + * @param includes list of include patterns + */ + function setIncludes($_includes = array()) { + if (empty($_includes) || is_null($_includes)) { + $this->includes = null; + } else { + for ($i = 0; $i < count($_includes); $i++) { + $pattern = null; + $pattern = str_replace('\\', DIRECTORY_SEPARATOR, $_includes[$i]); + $pattern = str_replace('/', DIRECTORY_SEPARATOR, $pattern); + if (StringHelper::endsWith(DIRECTORY_SEPARATOR, $pattern)) { + $pattern .= "**"; + } + $this->includes[] = $pattern; + } + } + } + + /** + * Sets the set of exclude patterns to use. All '/' and '\' characters are + * replaced by File.separatorChar. So the separator used need + * not match File.separatorChar. + * + * When a pattern ends with a '/' or '\', "**" is appended. + * + * @param excludes list of exclude patterns + */ + + function setExcludes($_excludes = array()) { + if (empty($_excludes) || is_null($_excludes)) { + $this->excludes = null; + } else { + for ($i = 0; $i < count($_excludes); $i++) { + $pattern = null; + $pattern = str_replace('\\', DIRECTORY_SEPARATOR, $_excludes[$i]); + $pattern = str_replace('/', DIRECTORY_SEPARATOR, $pattern); + if (StringHelper::endsWith(DIRECTORY_SEPARATOR, $pattern)) { + $pattern .= "**"; + } + $this->excludes[] = $pattern; + } + } + } + + /** + * Scans the base directory for files that match at least one include + * pattern, and don't match any exclude patterns. + * + */ + function scan() { + + if ((empty($this->basedir)) || (!@is_dir($this->basedir))) { + return false; + } + + if ($this->includes === null) { + // No includes supplied, so set it to 'matches all' + $this->includes = array("**"); + } + if (is_null($this->excludes)) { + $this->excludes = array(); + } + + $this->filesIncluded = array(); + $this->filesNotIncluded = array(); + $this->filesExcluded = array(); + $this->dirsIncluded = array(); + $this->dirsNotIncluded = array(); + $this->dirsExcluded = array(); + $this->dirsDeselected = array(); + $this->filesDeselected = array(); + + if ($this->isIncluded("")) { + if (!$this->isExcluded("")) { + if ($this->isSelected("", $this->basedir)) { + $this->dirsIncluded[] = ""; + } else { + $this->dirsDeselected[] = ""; + } + } else { + $this->dirsExcluded[] = ""; + } + } else { + $this->dirsNotIncluded[] = ""; + } + + $this->scandir($this->basedir, "", true); + return true; + } + + /** + * Toplevel invocation for the scan. + * + * Returns immediately if a slow scan has already been requested. + */ + protected function slowScan() { + + if ($this->haveSlowResults) { + return; + } + + // copy trie object add CopyInto() method + $excl = $this->dirsExcluded; + $notIncl = $this->dirsNotIncluded; + + for ($i=0, $_i=count($excl); $i < $_i; $i++) { + if (!$this->couldHoldIncluded($excl[$i])) { + $this->scandir($this->basedir.$excl[$i], $excl[$i].DIRECTORY_SEPARATOR, false); + } + } + + for ($i=0, $_i=count($notIncl); $i < $_i; $i++) { + if (!$this->couldHoldIncluded($notIncl[$i])) { + $this->scandir($this->basedir.$notIncl[$i], $notIncl[$i].DIRECTORY_SEPARATOR, false); + } + } + + $this->haveSlowResults = true; + } + + /** + * Lists contens of a given directory and returns array with entries + * + * @param src String. Source path and name file to copy. + * + * @access public + * @return array directory entries + * @author Albert Lash, alash@plateauinnovation.com + */ + + function listDir($_dir) { + $d = dir($_dir); + $list = array(); + while($entry = $d->read()) { + if ($entry != "." && $entry != "..") { + $list[] = $entry; + } + } + $d->close(); + return $list; + } + + /** + * Scans the passed dir for files and directories. Found files and + * directories are placed in their respective collections, based on the + * matching of includes and excludes. When a directory is found, it is + * scanned recursively. + * + * @param dir the directory to scan + * @param vpath the path relative to the basedir (needed to prevent + * problems with an absolute path when using dir) + * + * @access private + * @see #filesIncluded + * @see #filesNotIncluded + * @see #filesExcluded + * @see #dirsIncluded + * @see #dirsNotIncluded + * @see #dirsExcluded + */ + private function scandir($_rootdir, $_vpath, $_fast) { + + if (!is_readable($_rootdir)) { + return; + } + + $newfiles = self::listDir($_rootdir); + + for ($i=0,$_i=count($newfiles); $i < $_i; $i++) { + + $file = $_rootdir . DIRECTORY_SEPARATOR . $newfiles[$i]; + $name = $_vpath . $newfiles[$i]; + + if (@is_dir($file)) { + if ($this->isIncluded($name)) { + if (!$this->isExcluded($name)) { + if ($this->isSelected($name, $file)) { + $this->dirsIncluded[] = $name; + if ($_fast) { + $this->scandir($file, $name.DIRECTORY_SEPARATOR, $_fast); + } + } else { + $this->everythingIncluded = false; + $this->dirsDeselected[] = $name; + if ($_fast && $this->couldHoldIncluded($name)) { + $this->scandir($file, $name.DIRECTORY_SEPARATOR, $_fast); + } + } + } else { + $this->everythingIncluded = false; + $this->dirsExcluded[] = $name; + if ($_fast && $this->couldHoldIncluded($name)) { + $this->scandir($file, $name.DIRECTORY_SEPARATOR, $_fast); + } + } + } else { + $this->everythingIncluded = false; + $this->dirsNotIncluded[] = $name; + if ($_fast && $this->couldHoldIncluded($name)) { + $this->scandir($file, $name.DIRECTORY_SEPARATOR, $_fast); + } + } + + if (!$_fast) { + $this->scandir($file, $name.DIRECTORY_SEPARATOR, $_fast); + } + + } elseif (@is_file($file)) { + if ($this->isIncluded($name)) { + if (!$this->isExcluded($name)) { + if ($this->isSelected($name, $file)) { + $this->filesIncluded[] = $name; + } else { + $this->everythingIncluded = false; + $this->filesDeselected[] = $name; + } + } else { + $this->everythingIncluded = false; + $this->filesExcluded[] = $name; + } + } else { + $this->everythingIncluded = false; + $this->filesNotIncluded[] = $name; + } + } + } + } + + /** + * Tests whether a name matches against at least one include pattern. + * + * @param name the name to match + * @return true when the name matches against at least one + * include pattern, false otherwise. + */ + protected function isIncluded($_name) { + for ($i=0, $_i=count($this->includes); $i < $_i; $i++) { + if (DirectoryScanner::matchPath($this->includes[$i], $_name, $this->isCaseSensitive)) { + return true; + } + } + return false; + } + + /** + * Tests whether a name matches the start of at least one include pattern. + * + * @param name the name to match + * @return true when the name matches against at least one + * include pattern, false otherwise. + */ + protected function couldHoldIncluded($_name) { + for ($i = 0; $i < count($this->includes); $i++) { + if (DirectoryScanner::matchPatternStart($this->includes[$i], $_name, $this->isCaseSensitive)) { + return true; + } + } + return false; + } + + /** + * Tests whether a name matches against at least one exclude pattern. + * + * @param name the name to match + * @return true when the name matches against at least one + * exclude pattern, false otherwise. + */ + protected function isExcluded($_name) { + for ($i = 0; $i < count($this->excludes); $i++) { + if (DirectoryScanner::matchPath($this->excludes[$i], $_name, $this->isCaseSensitive)) { + return true; + } + } + return false; + } + + /** + * Get the names of the files that matched at least one of the include + * patterns, and matched none of the exclude patterns. + * The names are relative to the basedir. + * + * @return the names of the files + */ + function getIncludedFiles() { + return $this->filesIncluded; + } + + /** + * Get the names of the files that matched at none of the include patterns. + * The names are relative to the basedir. + * + * @return the names of the files + */ + function getNotIncludedFiles() { + $this->slowScan(); + return $this->filesNotIncluded; + } + + /** + * Get the names of the files that matched at least one of the include + * patterns, an matched also at least one of the exclude patterns. + * The names are relative to the basedir. + * + * @return the names of the files + */ + + function getExcludedFiles() { + $this->slowScan(); + return $this->filesExcluded; + } + + /** + *

    Returns the names of the files which were selected out and + * therefore not ultimately included.

    + * + *

    The names are relative to the base directory. This involves + * performing a slow scan if one has not already been completed.

    + * + * @return the names of the files which were deselected. + * + * @see #slowScan + */ + public function getDeselectedFiles() { + $this->slowScan(); + return $this->filesDeselected; + } + + /** + * Get the names of the directories that matched at least one of the include + * patterns, an matched none of the exclude patterns. + * The names are relative to the basedir. + * + * @return the names of the directories + */ + + function getIncludedDirectories() { + return $this->dirsIncluded; + } + + /** + * Get the names of the directories that matched at none of the include + * patterns. + * The names are relative to the basedir. + * + * @return the names of the directories + */ + function getNotIncludedDirectories() { + $this->slowScan(); + return $this->dirsNotIncluded; + } + + /** + *

    Returns the names of the directories which were selected out and + * therefore not ultimately included.

    + * + *

    The names are relative to the base directory. This involves + * performing a slow scan if one has not already been completed.

    + * + * @return the names of the directories which were deselected. + * + * @see #slowScan + */ + public function getDeselectedDirectories() { + $this->slowScan(); + return $this->dirsDeselected; + } + + /** + * Get the names of the directories that matched at least one of the include + * patterns, an matched also at least one of the exclude patterns. + * The names are relative to the basedir. + * + * @return the names of the directories + */ + function getExcludedDirectories() { + $this->slowScan(); + return $this->dirsExcluded; + } + + /** + * Adds the array with default exclusions to the current exclusions set. + * + */ + function addDefaultExcludes() { + //$excludesLength = ($this->excludes == null) ? 0 : count($this->excludes); + foreach($this->DEFAULTEXCLUDES as $pattern) { + $pattern = str_replace('\\', DIRECTORY_SEPARATOR, $pattern); + $pattern = str_replace('/', DIRECTORY_SEPARATOR, $pattern); + $this->excludes[] = $pattern; + } + } + + /** + * Sets the selectors that will select the filelist. + * + * @param selectors specifies the selectors to be invoked on a scan + */ + public function setSelectors($selectors) { + $this->selectors = $selectors; + } + + /** + * Returns whether or not the scanner has included all the files or + * directories it has come across so far. + * + * @return true if all files and directories which have + * been found so far have been included. + */ + public function isEverythingIncluded() { + return $this->everythingIncluded; + } + + /** + * Tests whether a name should be selected. + * + * @param string $name The filename to check for selecting. + * @param string $file The full file path. + * @return boolean False when the selectors says that the file + * should not be selected, True otherwise. + */ + protected function isSelected($name, $file) { + if ($this->selectors !== null) { + $basedir = new PhingFile($this->basedir); + $file = new PhingFile($file); + foreach($this->selectors as $selector) { + if (!$selector->isSelected($basedir, $name, $file)) { + return false; + } + } + } + return true; + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/text-base/ExtendedFileStream.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/text-base/ExtendedFileStream.php.svn-base new file mode 100644 index 0000000..22af00a --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/text-base/ExtendedFileStream.php.svn-base @@ -0,0 +1,132 @@ +. + */ + + /** + * Extended file stream wrapper class which auto-creates directories + * + * @author Michiel Rook + * @version $Id$ + * @package phing.util + */ + class ExtendedFileStream + { + private $fp = NULL; + + static function registerStream() + { + if (!in_array("efile", stream_get_wrappers())) + { + stream_wrapper_register("efile", "ExtendedFileStream"); + } + } + + private function createDirectories($path) + { + $f = new PhingFile($path); + if (!$f->exists()) { + $f->mkdirs(); + } + } + + function stream_open($path, $mode, $options, &$opened_path) + { + /** Small fix for Windows */ + if ($path[8] == DIRECTORY_SEPARATOR) + { + $filepath = substr($path, 7); + } + else + { + $filepath = substr($path, 8); + } + + $this->createDirectories(dirname($filepath)); + + $this->fp = fopen($filepath, $mode); + + return true; + } + + function stream_close() + { + fclose($this->fp); + $this->fp = NULL; + } + + function stream_read($count) + { + return fread($this->fp, $count); + } + + function stream_write($data) + { + return fwrite($this->fp, $data); + } + + function stream_eof() + { + return feof($this->fp); + } + + function stream_tell() + { + return ftell($this->fp); + } + + function stream_seek($offset, $whence) + { + return fseek($this->fp, $offset, $whence); + } + + function stream_flush() + { + return fflush($this->fp); + } + + function stream_stat() + { + return fstat($this->fp); + } + + function unlink($path) + { + return FALSE; + } + + function rename($path_from, $path_to) + { + return FALSE; + } + + function mkdir($path, $mode, $options) + { + return FALSE; + } + + function rmdir($path, $options) + { + return FALSE; + } + }; + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/text-base/FileUtils.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/text-base/FileUtils.php.svn-base new file mode 100644 index 0000000..75cd2ef --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/text-base/FileUtils.php.svn-base @@ -0,0 +1,294 @@ +. + */ + +include_once 'phing/system/lang/Character.php'; +include_once 'phing/util/StringHelper.php'; +include_once 'phing/system/io/BufferedReader.php'; +include_once 'phing/system/io/BufferedWriter.php'; +include_once 'phing/filters/util/ChainReaderHelper.php'; +include_once 'phing/system/io/PhingFile.php'; + +/** + * File utility class. + * - handles os independent stuff etc + * - mapper stuff + * - filter stuff + * + * @package phing.util + * @version $Revision: 1.10 $ + */ +class FileUtils { + + /** + * Returns a new Reader with filterchains applied. If filterchains are empty, + * simply returns passed reader. + * + * @param Reader $in Reader to modify (if appropriate). + * @param array &$filterChains filter chains to apply. + * @param Project $project + * @return Reader Assembled Reader (w/ filter chains). + */ + public static function getChainedReader(Reader $in, &$filterChains, Project $project) { + if (!empty($filterChains)) { + $crh = new ChainReaderHelper(); + $crh->setBufferSize(65536); // 64k buffer, but isn't being used (yet?) + $crh->setPrimaryReader($in); + $crh->setFilterChains($filterChains); + $crh->setProject($project); + $rdr = $crh->getAssembledReader(); + return $rdr; + } else { + return $in; + } + } + + /** + * Copies a file using filter chains. + * + * @param PhingFile $sourceFile + * @param PhingFile $destFile + * @param boolean $overwrite + * @param boolean $preserveLastModified + * @param array $filterChains + * @param Project $project + * @return void + */ + function copyFile(PhingFile $sourceFile, PhingFile $destFile, $overwrite = false, $preserveLastModified = true, &$filterChains = null, Project $project) { + + if ($overwrite || !$destFile->exists() || $destFile->lastModified() < $sourceFile->lastModified()) { + if ($destFile->exists() && $destFile->isFile()) { + $destFile->delete(); + } + + // ensure that parent dir of dest file exists! + $parent = $destFile->getParentFile(); + if ($parent !== null && !$parent->exists()) { + $parent->mkdirs(); + } + + if ((is_array($filterChains)) && (!empty($filterChains))) { + + $in = self::getChainedReader(new BufferedReader(new FileReader($sourceFile)), $filterChains, $project); + $out = new BufferedWriter(new FileWriter($destFile)); + + // New read() methods returns a big buffer. + while(-1 !== ($buffer = $in->read())) { // -1 indicates EOF + $out->write($buffer); + } + + if ( $in !== null ) + $in->close(); + if ( $out !== null ) + $out->close(); + } else { + // simple copy (no filtering) + $sourceFile->copyTo($destFile); + } + + if ($preserveLastModified) { + $destFile->setLastModified($sourceFile->lastModified()); + } + + } + } + + /** + * Interpret the filename as a file relative to the given file - + * unless the filename already represents an absolute filename. + * + * @param $file the "reference" file for relative paths. This + * instance must be an absolute file and must not contain + * ./ or ../ sequences (same for \ instead of /). + * @param $filename a file name + * + * @return PhingFile A PhingFile object pointing to an absolute file that doesn't contain ./ or ../ sequences + * and uses the correct separator for the current platform. + */ + function resolveFile($file, $filename) { + // remove this and use the static class constant File::seperator + // as soon as ZE2 is ready + $fs = FileSystem::getFileSystem(); + + $filename = str_replace('/', $fs->getSeparator(), str_replace('\\', $fs->getSeparator(), $filename)); + + // deal with absolute files + if (StringHelper::startsWith($fs->getSeparator(), $filename) || + (strlen($filename) >= 2 && Character::isLetter($filename{0}) && $filename{1} === ':')) { + return new PhingFile($this->normalize($filename)); + } + + if (strlen($filename) >= 2 && Character::isLetter($filename{0}) && $filename{1} === ':') { + return new PhingFile($this->normalize($filename)); + } + + $helpFile = new PhingFile($file->getAbsolutePath()); + + $tok = strtok($filename, $fs->getSeparator()); + while ($tok !== false) { + $part = $tok; + if ($part === '..') { + $parentFile = $helpFile->getParent(); + if ($parentFile === null) { + $msg = "The file or path you specified ($filename) is invalid relative to ".$file->getPath(); + throw new IOException($msg); + } + $helpFile = new PhingFile($parentFile); + } else if ($part === '.') { + // Do nothing here + } else { + $helpFile = new PhingFile($helpFile, $part); + } + $tok = strtok($fs->getSeparator()); + } + return new PhingFile($helpFile->getAbsolutePath()); + } + + /** + * Normalize the given absolute path. + * + * This includes: + * - Uppercase the drive letter if there is one. + * - Remove redundant slashes after the drive spec. + * - resolve all ./, .\, ../ and ..\ sequences. + * - DOS style paths that start with a drive letter will have + * \ as the separator. + * @param string $path Path to normalize. + * @return string + */ + function normalize($path) { + + $path = (string) $path; + $orig = $path; + + $path = str_replace('/', DIRECTORY_SEPARATOR, str_replace('\\', DIRECTORY_SEPARATOR, $path)); + + // make sure we are dealing with an absolute path + if (!StringHelper::startsWith(DIRECTORY_SEPARATOR, $path) + && !(strlen($path) >= 2 && Character::isLetter($path{0}) && $path{1} === ':')) { + throw new IOException("$path is not an absolute path"); + } + + $dosWithDrive = false; + $root = null; + + // Eliminate consecutive slashes after the drive spec + + if (strlen($path) >= 2 && Character::isLetter($path{0}) && $path{1} === ':') { + $dosWithDrive = true; + + $ca = str_replace('/', '\\', $path); + $ca = StringHelper::toCharArray($ca); + + $path = strtoupper($ca[0]).':'; + + for ($i=2, $_i=count($ca); $i < $_i; $i++) { + if (($ca[$i] !== '\\') || + ($ca[$i] === '\\' && $ca[$i - 1] !== '\\') + ) { + $path .= $ca[$i]; + } + } + + $path = str_replace('\\', DIRECTORY_SEPARATOR, $path); + + if (strlen($path) == 2) { + $root = $path; + $path = ""; + } else { + $root = substr($path, 0, 3); + $path = substr($path, 3); + } + + } else { + if (strlen($path) == 1) { + $root = DIRECTORY_SEPARATOR; + $path = ""; + } else if ($path{1} == DIRECTORY_SEPARATOR) { + // UNC drive + $root = DIRECTORY_SEPARATOR.DIRECTORY_SEPARATOR; + $path = substr($path, 2); + } + else { + $root = DIRECTORY_SEPARATOR; + $path = substr($path, 1); + } + } + + $s = array(); + array_push($s, $root); + $tok = strtok($path, DIRECTORY_SEPARATOR); + while ($tok !== false) { + $thisToken = $tok; + if ("." === $thisToken) { + $tok = strtok(DIRECTORY_SEPARATOR); + continue; + } elseif (".." === $thisToken) { + if (count($s) < 2) { + // using '..' in path that is too short + throw new IOException("Cannot resolve path: $orig"); + } else { + array_pop($s); + } + } else { // plain component + array_push($s, $thisToken); + } + $tok = strtok(DIRECTORY_SEPARATOR); + } + + $sb = ""; + for ($i=0,$_i=count($s); $i < $_i; $i++) { + if ($i > 1) { + // not before the filesystem root and not after it, since root + // already contains one + $sb .= DIRECTORY_SEPARATOR; + } + $sb .= (string) $s[$i]; + } + + + $path = (string) $sb; + if ($dosWithDrive === true) { + $path = str_replace('/', '\\', $path); + } + return $path; + } + + /** + * @return boolean Whether contents of two files is the same. + */ + public function contentEquals(PhingFile $file1, PhingFile $file2) { + + if (!($file1->exists() || $file2->exists())) { + return false; + } + + if (!($file1->canRead() || $file2->canRead())) { + return false; + } + + $c1 = file_get_contents($file1->getAbsolutePath()); + $c2 = file_get_contents($file2->getAbsolutePath()); + + return trim($c1) == trim($c2); + } + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/text-base/LogWriter.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/text-base/LogWriter.php.svn-base new file mode 100644 index 0000000..393b16e --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/text-base/LogWriter.php.svn-base @@ -0,0 +1,95 @@ +. + */ + + require_once 'phing/system/io/Writer.php'; + require_once 'phing/Task.php'; + + /** + * Extends the Writer class to output messages to Phing's log + * + * @author Michiel Rook + * @version $Id$ + * @package phing.util + */ + class LogWriter extends Writer + { + private $task = NULL; + + private $level = NULL; + + /** + * Constructs a new LogWriter object + */ + function __construct(Task $task, $level = Project::MSG_INFO) + { + $this->task = $task; + $this->level = $level; + } + + /** + * @see Writer::write() + */ + function write($buf, $off = null, $len = null) + { + $lines = explode("\n", $buf); + + foreach ($lines as $line) + { + if ($line == "") + { + continue; + } + + $this->task->log($line, $this->level); + } + } + + /** + * @see Writer::reset() + */ + function reset() + { + } + + /** + * @see Writer::close() + */ + function close() + { + } + + /** + * @see Writer::open() + */ + function open() + { + } + + /** + * @see Writer::getResource() + */ + function getResource() + { + return $this->task; + } + } + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/text-base/PathTokenizer.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/text-base/PathTokenizer.php.svn-base new file mode 100644 index 0000000..7466c2a --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/text-base/PathTokenizer.php.svn-base @@ -0,0 +1,245 @@ +. + */ + + + +include_once 'phing/util/StringHelper.php'; + + + +/** + + * A Path tokenizer takes a path and returns the components that make up + + * that path. + + * + + * The path can use path separators of either ':' or ';' and file separators + + * of either '/' or '\'. + + * + + * @author Hans Lellelid (Phing) + + * @author Conor MacNeill (Ant) + + * @author Jeff Tulley (Ant) + + * @pacakge phing.util + + */ + +class PathTokenizer { + + + + /** + + * A array of tokens, created by preg_split(). + + */ + + private $tokens = array(); + + + + /** + + * A string which stores any path components which have been read ahead + + * due to DOS filesystem compensation. + + * @var string + + */ + + private $lookahead; + + + + /** + + * Flag to indicate whether or not we are running on a platform with a + + * DOS style filesystem + + * @var boolean + + */ + + private $dosStyleFilesystem; + + + + /** + + * Constructs a path tokenizer for the specified path. + + * + + * @param path The path to tokenize. Must not be null. + + */ + + public function __construct($path) { + + // on Windows and Unix, we can ignore delimiters and still have + + // enough information to tokenize correctly. + + $this->tokens = preg_split("/[;:]/", $path, -1, PREG_SPLIT_NO_EMPTY); + + $this->dosStyleFilesystem = ( PATH_SEPARATOR == ';'); + + } + + + + /** + + * Tests if there are more path elements available from this tokenizer's + + * path. If this method returns true, then a subsequent call + + * to nextToken will successfully return a token. + + * + + * @return true if and only if there is at least one token + + * in the string after the current position; false otherwise. + + */ + + public function hasMoreTokens() { + + if ($this->lookahead !== null) { + + return true; + + } + + return !empty($this->tokens); + + } + + + + /** + + * Returns the next path element from this tokenizer. + + * + + * @return the next path element from this tokenizer. + + * + + * @throws Exception if there are no more elements in this tokenizer's path. + + */ + + public function nextToken() { + + + + if ($this->lookahead !== null) { + + $token = $this->lookahead; + + $this->lookahead = null; + + } else { + + $token = trim(array_shift($this->tokens)); + + } + + + + + + if (strlen($token) === 1 && Character::isLetter($token{0}) + + && $this->dosStyleFilesystem + + && !empty($this->tokens)) { + + // we are on a dos style system so this path could be a drive + + // spec. We look at the next token + + $nextToken = trim(array_shift($this->tokens)); + + if (StringHelper::startsWith('\\', $nextToken) || StringHelper::startsWith('/', $nextToken)) { + + // we know we are on a DOS style platform and the next path + + // starts with a slash or backslash, so we know this is a + + // drive spec + + $token .= ':' . $nextToken; + + } else { + + // store the token just read for next time + + $this->lookahead = $nextToken; + + } + + } + + + + return $token; + + } + + + + /** + + * Non StringTokenizer function, that indicates whether the specified path is contained in loaded tokens. + + * We can do this easily because in PHP implimentation we're using arrays. + + * @param string $path path to search for. + + * @return boolean + + */ + + public function contains($path) { + + return in_array($path, $this->tokens, true); + + } + + + +} + + + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/text-base/SourceFileScanner.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/text-base/SourceFileScanner.php.svn-base new file mode 100644 index 0000000..0555ae8 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/.svn/text-base/SourceFileScanner.php.svn-base @@ -0,0 +1,159 @@ +. + */ + +/** + * Utility class that collects the functionality of the various + * scanDir methods that have been scattered in several tasks before. + * + * The only method returns an array of source files. The array is a + * subset of the files given as a parameter and holds only those that + * are newer than their corresponding target files. + * @package phing.util + */ +class SourceFileScanner { + + /** Instance of FileUtils */ + private $fileUtils; + + /** Task this class is working for -- for logging purposes. */ + private $task; + + /** + * @param task The task we should log messages through + */ + function __construct($task) { + $this->task = $task; + $this->fileUtils = new FileUtils(); + } + + /** + * Restrict the given set of files to those that are newer than + * their corresponding target files. + * + * @param files the original set of files + * @param srcDir all files are relative to this directory + * @param destDir target files live here. if null file names + * returned by the mapper are assumed to be absolute. + * @param FilenameMapper knows how to construct a target file names from + * source file names. + * @param force Boolean that determines if the files should be + * forced to be copied. + */ + function restrict(&$files, $srcDir, $destDir, $mapper, $force = false) { + $now = time(); + $targetList = ""; + + /* + If we're on Windows, we have to munge the time up to 2 secs to + be able to check file modification times. + (Windows has a max resolution of two secs for modification times) + */ + $osname = strtolower(Phing::getProperty('os.name')); + + // indexOf() + $index = ((($res = strpos($osname, 'win')) === false) ? -1 : $res); + if ($index >= 0 ) { + $now += 2000; + } + + $v = array(); + + for ($i=0, $size=count($files); $i < $size; $i++) { + + $targets = $mapper->main($files[$i]); + if (empty($targets)) { + $this->task->log($files[$i]." skipped - don't know how to handle it", Project::MSG_VERBOSE); + continue; + } + + $src = null; + try { + if ($srcDir === null) { + $src = new PhingFile($files[$i]); + } else { + $src = $this->fileUtils->resolveFile($srcDir, $files[$i]); + } + + if ($src->lastModified() > $now) { + $this->task->log("Warning: ".$files[$i]." modified in the future (".$src->lastModified()." > ".$now.")", Project::MSG_WARN); + } + } catch (IOException $ioe) { + $this->task->log("Unable to read file ".$files[$i]." (skipping): " . $ioe->getMessage()); + continue; + } + + $added = false; + $targetList = ""; + + for ($j=0,$_j=count($targets); (!$added && $j < $_j); $j++) { + + $dest = null; + if ($destDir === null) { + $dest = new PhingFile($targets[$j]); + } else { + $dest = $this->fileUtils->resolveFile($destDir, $targets[$j]); + } + + if (!$dest->exists()) { + $this->task->log($files[$i]." added as " . $dest->__toString() . " doesn't exist.", Project::MSG_VERBOSE); + $v[] =$files[$i]; + $added = true; + } elseif ($src->lastModified() > $dest->lastModified()) { + $this->task->log($files[$i]." added as " . $dest->__toString() . " is outdated.", Project::MSG_VERBOSE ); + $v[]=$files[$i]; + $added = true; + } elseif ($force === true) { + $this->task->log($files[$i]." added as " . $dest->__toString() . " is forced to be overwritten.", Project::MSG_VERBOSE ); + $v[]=$files[$i]; + $added = true; + } else { + if (strlen($targetList) > 0) { + $targetList .= ", "; + } + $targetList .= $dest->getAbsolutePath(); + } + } + + if (!$added) { + $this->task->log($files[$i]." omitted as ".$targetList." ".(count($targets) === 1 ? " is " : " are ")."up to date.", Project::MSG_VERBOSE); + } + + } + $result = array(); + $result = $v; + return $result; + } + + /** + * Convenience layer on top of restrict that returns the source + * files as PhingFile objects (containing absolute paths if srcDir is + * absolute). + */ + function restrictAsFiles(&$files, &$srcDir, &$destDir, &$mapper) { + $res = $this->restrict($files, $srcDir, $destDir, $mapper); + $result = array(); + for ($i=0; $i + * @package phing.system.util + */ +class StringHelper { + + private static $TRUE_VALUES = array("on", "true", "t", "yes"); + private static $FALSE_VALUES = array("off", "false", "f", "no"); + + /** + * Replaces identifier tokens with corresponding text values in passed string. + * + * @params array $strings Array of strings to multiply. (If string is passed, will convert to array) + * @params array $tokens The tokens to search for. + * @params array $replacements The values with which to replace found tokens. + * @return string + */ + public static function multiply($strings, $tokens, $replacements) { + $strings = (array) $strings; + $results = array(); + foreach ($strings as $string) { + $results[] = str_replace($tokens, $replacements, $string); + } + return $results; + } + + /** + * Remove qualification to name. + * E.g. eg.Cat -> Cat + * @param string $qualifiedName + * @param string $separator Character used to separate. + */ + public static function unqualify($qualifiedName, $separator = '.') { + // if false, then will be 0 + $pos = strrpos($qualifiedName, $separator); + if ($pos === false) { + return $qualifiedName; // there is no '.' in the qualifed name + } else { + return substr($qualifiedName, $pos + 1); // start just after '.' + } + } + + /** + * Converts a string to an indexed array of chars + * There's really no reason for this to be used in PHP, since strings + * are all accessible using the $string{0} notation. + * @param string $string + * @return array + * @deprecated + */ + public static function toCharArray($str) { + $ret=array(); + $len=strlen($str); + for ($i=0; $i < $len; $i++) { + $ret[] = $str{$i}; + } + return $ret; + } + + /** + * Get the qualifier part of a qualified name. + * E.g. eg.Cat -> eg + * @return string + */ + public static function qualifier($qualifiedName, $seperator = '.') { + $pos = strrchr($qualifiedName, $seperator); + if ($pos === false) { + return ''; + } else { + return substr($qualifiedName, 0, $pos); + } + } + + /** + * @param array $columns String[] + * @param string $prefix + * @return array String[] + */ + public static function prefix( $columns, $prefix) { + if ($prefix == null) return $columns; + $qualified = array(); + foreach($columns as $key => $column) { + $qualified[$key] = $prefix . $column; + } + return $qualified; + } + + /** + * + * @return string + */ + public static function root($qualifiedName, $separator = '.') { + $loc = strpos($qualifiedName, $separator); + return ($loc === false) ? $qualifiedName : substr($qualifiedName, 0, $loc); + } + + /** + * @return int + */ + public static function hashCode($string) { + return crc32($string); + } + + /** + * @return boolean + */ + public static function booleanValue($s) { + if (is_bool($s)) { + return $s; // it's already boolean (not a string) + } + // otherwise assume it's something like "true" or "t" + $trimmed = strtolower(trim($s)); + return (boolean) in_array($trimmed, self::$TRUE_VALUES); + } + + /** tests if a string is a representative of a boolean */ + public static function isBoolean($s) { + + if (is_bool($s)) { + return true; // it already is boolean + } + + if ($s === "" || $s === null || !is_string($s)) { + return false; // not a valid string for testing + } + + $test = trim(strtolower($s)); + return (boolean) in_array($test, array_merge(self::$FALSE_VALUES, self::$TRUE_VALUES)); + } + + /** + * Creates a key based on any number of passed params. + * @return string + */ + public static function key() { + $args = func_get_args(); + return serialize($args); + } + + /** tests if a string starts with a given string */ + public static function startsWith($check, $string) { + if ($check === "" || $check === $string) { + return true; + } else { + return (strpos($string, $check) === 0) ? true : false; + } + } + + /** tests if a string ends with a given string */ + public static function endsWith($check, $string) { + if ($check === "" || $check === $string) { + return true; + } else { + return (strpos(strrev($string), strrev($check)) === 0) ? true : false; + } + } + + /** + * a natural way of getting a subtring, php's circular string buffer and strange + * return values suck if you want to program strict as of C or friends + */ + public static function substring($string, $startpos, $endpos = -1) { + $len = strlen($string); + $endpos = (int) (($endpos === -1) ? $len-1 : $endpos); + if ($startpos > $len-1 || $startpos < 0) { + trigger_error("substring(), Startindex out of bounds must be 0 $len-1 || $endpos < $startpos) { + trigger_error("substring(), Endindex out of bounds must be $startpos. + */ + +require_once 'phing/types/selectors/SelectorScanner.php'; +include_once 'phing/util/StringHelper.php'; +include_once 'phing/types/selectors/SelectorUtils.php'; + +/** + * Class for scanning a directory for files/directories that match a certain + * criteria. + * + * These criteria consist of a set of include and exclude patterns. With these + * patterns, you can select which files you want to have included, and which + * files you want to have excluded. + * + * The idea is simple. A given directory is recursively scanned for all files + * and directories. Each file/directory is matched against a set of include + * and exclude patterns. Only files/directories that match at least one + * pattern of the include pattern list, and don't match a pattern of the + * exclude pattern list will be placed in the list of files/directories found. + * + * When no list of include patterns is supplied, "**" will be used, which + * means that everything will be matched. When no list of exclude patterns is + * supplied, an empty list is used, such that nothing will be excluded. + * + * The pattern matching is done as follows: + * The name to be matched is split up in path segments. A path segment is the + * name of a directory or file, which is bounded by DIRECTORY_SEPARATOR + * ('/' under UNIX, '\' under Windows). + * E.g. "abc/def/ghi/xyz.php" is split up in the segments "abc", "def", "ghi" + * and "xyz.php". + * The same is done for the pattern against which should be matched. + * + * Then the segments of the name and the pattern will be matched against each + * other. When '**' is used for a path segment in the pattern, then it matches + * zero or more path segments of the name. + * + * There are special case regarding the use of DIRECTORY_SEPARATOR at + * the beginning of the pattern and the string to match: + * When a pattern starts with a DIRECTORY_SEPARATOR, the string + * to match must also start with a DIRECTORY_SEPARATOR. + * When a pattern does not start with a DIRECTORY_SEPARATOR, the + * string to match may not start with a DIRECTORY_SEPARATOR. + * When one of these rules is not obeyed, the string will not + * match. + * + * When a name path segment is matched against a pattern path segment, the + * following special characters can be used: + * '*' matches zero or more characters, + * '?' matches one character. + * + * Examples: + * + * "**\*.php" matches all .php files/dirs in a directory tree. + * + * "test\a??.php" matches all files/dirs which start with an 'a', then two + * more characters and then ".php", in a directory called test. + * + * "**" matches everything in a directory tree. + * + * "**\test\**\XYZ*" matches all files/dirs that start with "XYZ" and where + * there is a parent directory called test (e.g. "abc\test\def\ghi\XYZ123"). + * + * Case sensitivity may be turned off if necessary. By default, it is + * turned on. + * + * Example of usage: + * $ds = new DirectroyScanner(); + * $includes = array("**\*.php"); + * $excludes = array("modules\*\**"); + * $ds->SetIncludes($includes); + * $ds->SetExcludes($excludes); + * $ds->SetBasedir("test"); + * $ds->SetCaseSensitive(true); + * $ds->Scan(); + * + * print("FILES:"); + * $files = ds->GetIncludedFiles(); + * for ($i = 0; $i < count($files);$i++) { + * println("$files[$i]\n"); + * } + * + * This will scan a directory called test for .php files, but excludes all + * .php files in all directories under a directory called "modules" + * + * This class is complete preg/ereg free port of the Java class + * org.apache.tools.ant.DirectoryScanner. Even functions that use preg/ereg + * internally (like split()) are not used. Only the _fast_ string functions + * and comparison operators (=== !=== etc) are used for matching and tokenizing. + * + * @author Arnout J. Kuiper, ajkuiper@wxs.nl + * @author Magesh Umasankar, umagesh@rediffmail.com + * @author Andreas Aderhold, andi@binarycloud.com + * + * @version $Revision: 1.15 $ + * @package phing.util + */ +class DirectoryScanner implements SelectorScanner { + + /** default set of excludes */ + protected $DEFAULTEXCLUDES = array( + "**/*~", + "**/#*#", + "**/.#*", + "**/%*%", + "**/CVS", + "**/CVS/**", + "**/.cvsignore", + "**/SCCS", + "**/SCCS/**", + "**/vssver.scc", + "**/.svn", + "**/.svn/**", + "**/._*", + "**/.DS_Store", + ); + + /** The base directory which should be scanned. */ + protected $basedir; + + /** The patterns for the files that should be included. */ + protected $includes = null; + + /** The patterns for the files that should be excluded. */ + protected $excludes = null; + + /** + * The files that where found and matched at least one includes, and matched + * no excludes. + */ + protected $filesIncluded; + + /** The files that where found and did not match any includes. Trie */ + protected $filesNotIncluded; + + /** + * The files that where found and matched at least one includes, and also + * matched at least one excludes. Trie object. + */ + protected $filesExcluded; + + /** + * The directories that where found and matched at least one includes, and + * matched no excludes. + */ + protected $dirsIncluded; + + /** The directories that where found and did not match any includes. */ + protected $dirsNotIncluded; + + /** + * The files that where found and matched at least one includes, and also + * matched at least one excludes. + */ + protected $dirsExcluded; + + /** Have the vars holding our results been built by a slow scan? */ + protected $haveSlowResults = false; + + /** Should the file system be treated as a case sensitive one? */ + protected $isCaseSensitive = true; + + /** Selectors */ + protected $selectors = null; + + protected $filesDeselected; + protected $dirsDeselected; + + /** if there are no deselected files */ + protected $everythingIncluded = true; + + /** + * Does the path match the start of this pattern up to the first "**". + * This is a static mehtod and should always be called static + * + * This is not a general purpose test and should only be used if you + * can live with false positives. + * + * pattern=**\a and str=b will yield true. + * + * @param pattern the (non-null) pattern to match against + * @param str the (non-null) string (path) to match + * @param isCaseSensitive must matches be case sensitive? + * @return boolean true if matches, otherwise false + */ + function matchPatternStart($pattern, $str, $isCaseSensitive = true) { + return SelectorUtils::matchPatternStart($pattern, $str, $isCaseSensitive); + } + + /** + * Matches a path against a pattern. Static + * + * @param pattern the (non-null) pattern to match against + * @param str the (non-null) string (path) to match + * @param isCaseSensitive must a case sensitive match be done? + * + * @return true when the pattern matches against the string. + * false otherwise. + */ + function matchPath($pattern, $str, $isCaseSensitive = true) { + return SelectorUtils::matchPath($pattern, $str, $isCaseSensitive); + } + + /** + * Matches a string against a pattern. The pattern contains two special + * characters: + * '*' which means zero or more characters, + * '?' which means one and only one character. + * + * @param pattern the (non-null) pattern to match against + * @param str the (non-null) string that must be matched against the + * pattern + * + * @return boolean true when the string matches against the pattern, + * false otherwise. + * @access public + */ + function match($pattern, $str, $isCaseSensitive = true) { + return SelectorUtils::match($pattern, $str, $isCaseSensitive); + } + + /** + * Sets the basedir for scanning. This is the directory that is scanned + * recursively. All '/' and '\' characters are replaced by + * DIRECTORY_SEPARATOR + * + * @param basedir the (non-null) basedir for scanning + */ + function setBasedir($_basedir) { + $_basedir = str_replace('\\', DIRECTORY_SEPARATOR, $_basedir); + $_basedir = str_replace('/', DIRECTORY_SEPARATOR, $_basedir); + $this->basedir = $_basedir; + } + + /** + * Gets the basedir that is used for scanning. This is the directory that + * is scanned recursively. + * + * @return the basedir that is used for scanning + */ + function getBasedir() { + return $this->basedir; + } + + /** + * Sets the case sensitivity of the file system + * + * @param specifies if the filesystem is case sensitive + */ + function setCaseSensitive($_isCaseSensitive) { + $this->isCaseSensitive = ($_isCaseSensitive) ? true : false; + } + + /** + * Sets the set of include patterns to use. All '/' and '\' characters are + * replaced by DIRECTORY_SEPARATOR. So the separator used need + * not match DIRECTORY_SEPARATOR. + * + * When a pattern ends with a '/' or '\', "**" is appended. + * + * @param includes list of include patterns + */ + function setIncludes($_includes = array()) { + if (empty($_includes) || is_null($_includes)) { + $this->includes = null; + } else { + for ($i = 0; $i < count($_includes); $i++) { + $pattern = null; + $pattern = str_replace('\\', DIRECTORY_SEPARATOR, $_includes[$i]); + $pattern = str_replace('/', DIRECTORY_SEPARATOR, $pattern); + if (StringHelper::endsWith(DIRECTORY_SEPARATOR, $pattern)) { + $pattern .= "**"; + } + $this->includes[] = $pattern; + } + } + } + + /** + * Sets the set of exclude patterns to use. All '/' and '\' characters are + * replaced by File.separatorChar. So the separator used need + * not match File.separatorChar. + * + * When a pattern ends with a '/' or '\', "**" is appended. + * + * @param excludes list of exclude patterns + */ + + function setExcludes($_excludes = array()) { + if (empty($_excludes) || is_null($_excludes)) { + $this->excludes = null; + } else { + for ($i = 0; $i < count($_excludes); $i++) { + $pattern = null; + $pattern = str_replace('\\', DIRECTORY_SEPARATOR, $_excludes[$i]); + $pattern = str_replace('/', DIRECTORY_SEPARATOR, $pattern); + if (StringHelper::endsWith(DIRECTORY_SEPARATOR, $pattern)) { + $pattern .= "**"; + } + $this->excludes[] = $pattern; + } + } + } + + /** + * Scans the base directory for files that match at least one include + * pattern, and don't match any exclude patterns. + * + */ + function scan() { + + if ((empty($this->basedir)) || (!@is_dir($this->basedir))) { + return false; + } + + if ($this->includes === null) { + // No includes supplied, so set it to 'matches all' + $this->includes = array("**"); + } + if (is_null($this->excludes)) { + $this->excludes = array(); + } + + $this->filesIncluded = array(); + $this->filesNotIncluded = array(); + $this->filesExcluded = array(); + $this->dirsIncluded = array(); + $this->dirsNotIncluded = array(); + $this->dirsExcluded = array(); + $this->dirsDeselected = array(); + $this->filesDeselected = array(); + + if ($this->isIncluded("")) { + if (!$this->isExcluded("")) { + if ($this->isSelected("", $this->basedir)) { + $this->dirsIncluded[] = ""; + } else { + $this->dirsDeselected[] = ""; + } + } else { + $this->dirsExcluded[] = ""; + } + } else { + $this->dirsNotIncluded[] = ""; + } + + $this->scandir($this->basedir, "", true); + return true; + } + + /** + * Toplevel invocation for the scan. + * + * Returns immediately if a slow scan has already been requested. + */ + protected function slowScan() { + + if ($this->haveSlowResults) { + return; + } + + // copy trie object add CopyInto() method + $excl = $this->dirsExcluded; + $notIncl = $this->dirsNotIncluded; + + for ($i=0, $_i=count($excl); $i < $_i; $i++) { + if (!$this->couldHoldIncluded($excl[$i])) { + $this->scandir($this->basedir.$excl[$i], $excl[$i].DIRECTORY_SEPARATOR, false); + } + } + + for ($i=0, $_i=count($notIncl); $i < $_i; $i++) { + if (!$this->couldHoldIncluded($notIncl[$i])) { + $this->scandir($this->basedir.$notIncl[$i], $notIncl[$i].DIRECTORY_SEPARATOR, false); + } + } + + $this->haveSlowResults = true; + } + + /** + * Lists contens of a given directory and returns array with entries + * + * @param src String. Source path and name file to copy. + * + * @access public + * @return array directory entries + * @author Albert Lash, alash@plateauinnovation.com + */ + + function listDir($_dir) { + $d = dir($_dir); + $list = array(); + while($entry = $d->read()) { + if ($entry != "." && $entry != "..") { + $list[] = $entry; + } + } + $d->close(); + return $list; + } + + /** + * Scans the passed dir for files and directories. Found files and + * directories are placed in their respective collections, based on the + * matching of includes and excludes. When a directory is found, it is + * scanned recursively. + * + * @param dir the directory to scan + * @param vpath the path relative to the basedir (needed to prevent + * problems with an absolute path when using dir) + * + * @access private + * @see #filesIncluded + * @see #filesNotIncluded + * @see #filesExcluded + * @see #dirsIncluded + * @see #dirsNotIncluded + * @see #dirsExcluded + */ + private function scandir($_rootdir, $_vpath, $_fast) { + + if (!is_readable($_rootdir)) { + return; + } + + $newfiles = self::listDir($_rootdir); + + for ($i=0,$_i=count($newfiles); $i < $_i; $i++) { + + $file = $_rootdir . DIRECTORY_SEPARATOR . $newfiles[$i]; + $name = $_vpath . $newfiles[$i]; + + if (@is_dir($file)) { + if ($this->isIncluded($name)) { + if (!$this->isExcluded($name)) { + if ($this->isSelected($name, $file)) { + $this->dirsIncluded[] = $name; + if ($_fast) { + $this->scandir($file, $name.DIRECTORY_SEPARATOR, $_fast); + } + } else { + $this->everythingIncluded = false; + $this->dirsDeselected[] = $name; + if ($_fast && $this->couldHoldIncluded($name)) { + $this->scandir($file, $name.DIRECTORY_SEPARATOR, $_fast); + } + } + } else { + $this->everythingIncluded = false; + $this->dirsExcluded[] = $name; + if ($_fast && $this->couldHoldIncluded($name)) { + $this->scandir($file, $name.DIRECTORY_SEPARATOR, $_fast); + } + } + } else { + $this->everythingIncluded = false; + $this->dirsNotIncluded[] = $name; + if ($_fast && $this->couldHoldIncluded($name)) { + $this->scandir($file, $name.DIRECTORY_SEPARATOR, $_fast); + } + } + + if (!$_fast) { + $this->scandir($file, $name.DIRECTORY_SEPARATOR, $_fast); + } + + } elseif (@is_file($file)) { + if ($this->isIncluded($name)) { + if (!$this->isExcluded($name)) { + if ($this->isSelected($name, $file)) { + $this->filesIncluded[] = $name; + } else { + $this->everythingIncluded = false; + $this->filesDeselected[] = $name; + } + } else { + $this->everythingIncluded = false; + $this->filesExcluded[] = $name; + } + } else { + $this->everythingIncluded = false; + $this->filesNotIncluded[] = $name; + } + } + } + } + + /** + * Tests whether a name matches against at least one include pattern. + * + * @param name the name to match + * @return true when the name matches against at least one + * include pattern, false otherwise. + */ + protected function isIncluded($_name) { + for ($i=0, $_i=count($this->includes); $i < $_i; $i++) { + if (DirectoryScanner::matchPath($this->includes[$i], $_name, $this->isCaseSensitive)) { + return true; + } + } + return false; + } + + /** + * Tests whether a name matches the start of at least one include pattern. + * + * @param name the name to match + * @return true when the name matches against at least one + * include pattern, false otherwise. + */ + protected function couldHoldIncluded($_name) { + for ($i = 0; $i < count($this->includes); $i++) { + if (DirectoryScanner::matchPatternStart($this->includes[$i], $_name, $this->isCaseSensitive)) { + return true; + } + } + return false; + } + + /** + * Tests whether a name matches against at least one exclude pattern. + * + * @param name the name to match + * @return true when the name matches against at least one + * exclude pattern, false otherwise. + */ + protected function isExcluded($_name) { + for ($i = 0; $i < count($this->excludes); $i++) { + if (DirectoryScanner::matchPath($this->excludes[$i], $_name, $this->isCaseSensitive)) { + return true; + } + } + return false; + } + + /** + * Get the names of the files that matched at least one of the include + * patterns, and matched none of the exclude patterns. + * The names are relative to the basedir. + * + * @return the names of the files + */ + function getIncludedFiles() { + return $this->filesIncluded; + } + + /** + * Get the names of the files that matched at none of the include patterns. + * The names are relative to the basedir. + * + * @return the names of the files + */ + function getNotIncludedFiles() { + $this->slowScan(); + return $this->filesNotIncluded; + } + + /** + * Get the names of the files that matched at least one of the include + * patterns, an matched also at least one of the exclude patterns. + * The names are relative to the basedir. + * + * @return the names of the files + */ + + function getExcludedFiles() { + $this->slowScan(); + return $this->filesExcluded; + } + + /** + *

    Returns the names of the files which were selected out and + * therefore not ultimately included.

    + * + *

    The names are relative to the base directory. This involves + * performing a slow scan if one has not already been completed.

    + * + * @return the names of the files which were deselected. + * + * @see #slowScan + */ + public function getDeselectedFiles() { + $this->slowScan(); + return $this->filesDeselected; + } + + /** + * Get the names of the directories that matched at least one of the include + * patterns, an matched none of the exclude patterns. + * The names are relative to the basedir. + * + * @return the names of the directories + */ + + function getIncludedDirectories() { + return $this->dirsIncluded; + } + + /** + * Get the names of the directories that matched at none of the include + * patterns. + * The names are relative to the basedir. + * + * @return the names of the directories + */ + function getNotIncludedDirectories() { + $this->slowScan(); + return $this->dirsNotIncluded; + } + + /** + *

    Returns the names of the directories which were selected out and + * therefore not ultimately included.

    + * + *

    The names are relative to the base directory. This involves + * performing a slow scan if one has not already been completed.

    + * + * @return the names of the directories which were deselected. + * + * @see #slowScan + */ + public function getDeselectedDirectories() { + $this->slowScan(); + return $this->dirsDeselected; + } + + /** + * Get the names of the directories that matched at least one of the include + * patterns, an matched also at least one of the exclude patterns. + * The names are relative to the basedir. + * + * @return the names of the directories + */ + function getExcludedDirectories() { + $this->slowScan(); + return $this->dirsExcluded; + } + + /** + * Adds the array with default exclusions to the current exclusions set. + * + */ + function addDefaultExcludes() { + //$excludesLength = ($this->excludes == null) ? 0 : count($this->excludes); + foreach($this->DEFAULTEXCLUDES as $pattern) { + $pattern = str_replace('\\', DIRECTORY_SEPARATOR, $pattern); + $pattern = str_replace('/', DIRECTORY_SEPARATOR, $pattern); + $this->excludes[] = $pattern; + } + } + + /** + * Sets the selectors that will select the filelist. + * + * @param selectors specifies the selectors to be invoked on a scan + */ + public function setSelectors($selectors) { + $this->selectors = $selectors; + } + + /** + * Returns whether or not the scanner has included all the files or + * directories it has come across so far. + * + * @return true if all files and directories which have + * been found so far have been included. + */ + public function isEverythingIncluded() { + return $this->everythingIncluded; + } + + /** + * Tests whether a name should be selected. + * + * @param string $name The filename to check for selecting. + * @param string $file The full file path. + * @return boolean False when the selectors says that the file + * should not be selected, True otherwise. + */ + protected function isSelected($name, $file) { + if ($this->selectors !== null) { + $basedir = new PhingFile($this->basedir); + $file = new PhingFile($file); + foreach($this->selectors as $selector) { + if (!$selector->isSelected($basedir, $name, $file)) { + return false; + } + } + } + return true; + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/ExtendedFileStream.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/ExtendedFileStream.php new file mode 100755 index 0000000..b8a3667 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/ExtendedFileStream.php @@ -0,0 +1,132 @@ +. + */ + + /** + * Extended file stream wrapper class which auto-creates directories + * + * @author Michiel Rook + * @version $Id: ExtendedFileStream.php 325 2007-12-20 15:44:58Z hans $ + * @package phing.util + */ + class ExtendedFileStream + { + private $fp = NULL; + + static function registerStream() + { + if (!in_array("efile", stream_get_wrappers())) + { + stream_wrapper_register("efile", "ExtendedFileStream"); + } + } + + private function createDirectories($path) + { + $f = new PhingFile($path); + if (!$f->exists()) { + $f->mkdirs(); + } + } + + function stream_open($path, $mode, $options, &$opened_path) + { + /** Small fix for Windows */ + if ($path[8] == DIRECTORY_SEPARATOR) + { + $filepath = substr($path, 7); + } + else + { + $filepath = substr($path, 8); + } + + $this->createDirectories(dirname($filepath)); + + $this->fp = fopen($filepath, $mode); + + return true; + } + + function stream_close() + { + fclose($this->fp); + $this->fp = NULL; + } + + function stream_read($count) + { + return fread($this->fp, $count); + } + + function stream_write($data) + { + return fwrite($this->fp, $data); + } + + function stream_eof() + { + return feof($this->fp); + } + + function stream_tell() + { + return ftell($this->fp); + } + + function stream_seek($offset, $whence) + { + return fseek($this->fp, $offset, $whence); + } + + function stream_flush() + { + return fflush($this->fp); + } + + function stream_stat() + { + return fstat($this->fp); + } + + function unlink($path) + { + return FALSE; + } + + function rename($path_from, $path_to) + { + return FALSE; + } + + function mkdir($path, $mode, $options) + { + return FALSE; + } + + function rmdir($path, $options) + { + return FALSE; + } + }; + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/FileUtils.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/FileUtils.php new file mode 100644 index 0000000..3039773 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/FileUtils.php @@ -0,0 +1,294 @@ +. + */ + +include_once 'phing/system/lang/Character.php'; +include_once 'phing/util/StringHelper.php'; +include_once 'phing/system/io/BufferedReader.php'; +include_once 'phing/system/io/BufferedWriter.php'; +include_once 'phing/filters/util/ChainReaderHelper.php'; +include_once 'phing/system/io/PhingFile.php'; + +/** + * File utility class. + * - handles os independent stuff etc + * - mapper stuff + * - filter stuff + * + * @package phing.util + * @version $Revision: 1.10 $ + */ +class FileUtils { + + /** + * Returns a new Reader with filterchains applied. If filterchains are empty, + * simply returns passed reader. + * + * @param Reader $in Reader to modify (if appropriate). + * @param array &$filterChains filter chains to apply. + * @param Project $project + * @return Reader Assembled Reader (w/ filter chains). + */ + public static function getChainedReader(Reader $in, &$filterChains, Project $project) { + if (!empty($filterChains)) { + $crh = new ChainReaderHelper(); + $crh->setBufferSize(65536); // 64k buffer, but isn't being used (yet?) + $crh->setPrimaryReader($in); + $crh->setFilterChains($filterChains); + $crh->setProject($project); + $rdr = $crh->getAssembledReader(); + return $rdr; + } else { + return $in; + } + } + + /** + * Copies a file using filter chains. + * + * @param PhingFile $sourceFile + * @param PhingFile $destFile + * @param boolean $overwrite + * @param boolean $preserveLastModified + * @param array $filterChains + * @param Project $project + * @return void + */ + function copyFile(PhingFile $sourceFile, PhingFile $destFile, $overwrite = false, $preserveLastModified = true, &$filterChains = null, Project $project) { + + if ($overwrite || !$destFile->exists() || $destFile->lastModified() < $sourceFile->lastModified()) { + if ($destFile->exists() && $destFile->isFile()) { + $destFile->delete(); + } + + // ensure that parent dir of dest file exists! + $parent = $destFile->getParentFile(); + if ($parent !== null && !$parent->exists()) { + $parent->mkdirs(); + } + + if ((is_array($filterChains)) && (!empty($filterChains))) { + + $in = self::getChainedReader(new BufferedReader(new FileReader($sourceFile)), $filterChains, $project); + $out = new BufferedWriter(new FileWriter($destFile)); + + // New read() methods returns a big buffer. + while(-1 !== ($buffer = $in->read())) { // -1 indicates EOF + $out->write($buffer); + } + + if ( $in !== null ) + $in->close(); + if ( $out !== null ) + $out->close(); + } else { + // simple copy (no filtering) + $sourceFile->copyTo($destFile); + } + + if ($preserveLastModified) { + $destFile->setLastModified($sourceFile->lastModified()); + } + + } + } + + /** + * Interpret the filename as a file relative to the given file - + * unless the filename already represents an absolute filename. + * + * @param $file the "reference" file for relative paths. This + * instance must be an absolute file and must not contain + * ./ or ../ sequences (same for \ instead of /). + * @param $filename a file name + * + * @return PhingFile A PhingFile object pointing to an absolute file that doesn't contain ./ or ../ sequences + * and uses the correct separator for the current platform. + */ + function resolveFile($file, $filename) { + // remove this and use the static class constant File::seperator + // as soon as ZE2 is ready + $fs = FileSystem::getFileSystem(); + + $filename = str_replace('/', $fs->getSeparator(), str_replace('\\', $fs->getSeparator(), $filename)); + + // deal with absolute files + if (StringHelper::startsWith($fs->getSeparator(), $filename) || + (strlen($filename) >= 2 && Character::isLetter($filename{0}) && $filename{1} === ':')) { + return new PhingFile($this->normalize($filename)); + } + + if (strlen($filename) >= 2 && Character::isLetter($filename{0}) && $filename{1} === ':') { + return new PhingFile($this->normalize($filename)); + } + + $helpFile = new PhingFile($file->getAbsolutePath()); + + $tok = strtok($filename, $fs->getSeparator()); + while ($tok !== false) { + $part = $tok; + if ($part === '..') { + $parentFile = $helpFile->getParent(); + if ($parentFile === null) { + $msg = "The file or path you specified ($filename) is invalid relative to ".$file->getPath(); + throw new IOException($msg); + } + $helpFile = new PhingFile($parentFile); + } else if ($part === '.') { + // Do nothing here + } else { + $helpFile = new PhingFile($helpFile, $part); + } + $tok = strtok($fs->getSeparator()); + } + return new PhingFile($helpFile->getAbsolutePath()); + } + + /** + * Normalize the given absolute path. + * + * This includes: + * - Uppercase the drive letter if there is one. + * - Remove redundant slashes after the drive spec. + * - resolve all ./, .\, ../ and ..\ sequences. + * - DOS style paths that start with a drive letter will have + * \ as the separator. + * @param string $path Path to normalize. + * @return string + */ + function normalize($path) { + + $path = (string) $path; + $orig = $path; + + $path = str_replace('/', DIRECTORY_SEPARATOR, str_replace('\\', DIRECTORY_SEPARATOR, $path)); + + // make sure we are dealing with an absolute path + if (!StringHelper::startsWith(DIRECTORY_SEPARATOR, $path) + && !(strlen($path) >= 2 && Character::isLetter($path{0}) && $path{1} === ':')) { + throw new IOException("$path is not an absolute path"); + } + + $dosWithDrive = false; + $root = null; + + // Eliminate consecutive slashes after the drive spec + + if (strlen($path) >= 2 && Character::isLetter($path{0}) && $path{1} === ':') { + $dosWithDrive = true; + + $ca = str_replace('/', '\\', $path); + $ca = StringHelper::toCharArray($ca); + + $path = strtoupper($ca[0]).':'; + + for ($i=2, $_i=count($ca); $i < $_i; $i++) { + if (($ca[$i] !== '\\') || + ($ca[$i] === '\\' && $ca[$i - 1] !== '\\') + ) { + $path .= $ca[$i]; + } + } + + $path = str_replace('\\', DIRECTORY_SEPARATOR, $path); + + if (strlen($path) == 2) { + $root = $path; + $path = ""; + } else { + $root = substr($path, 0, 3); + $path = substr($path, 3); + } + + } else { + if (strlen($path) == 1) { + $root = DIRECTORY_SEPARATOR; + $path = ""; + } else if ($path{1} == DIRECTORY_SEPARATOR) { + // UNC drive + $root = DIRECTORY_SEPARATOR.DIRECTORY_SEPARATOR; + $path = substr($path, 2); + } + else { + $root = DIRECTORY_SEPARATOR; + $path = substr($path, 1); + } + } + + $s = array(); + array_push($s, $root); + $tok = strtok($path, DIRECTORY_SEPARATOR); + while ($tok !== false) { + $thisToken = $tok; + if ("." === $thisToken) { + $tok = strtok(DIRECTORY_SEPARATOR); + continue; + } elseif (".." === $thisToken) { + if (count($s) < 2) { + // using '..' in path that is too short + throw new IOException("Cannot resolve path: $orig"); + } else { + array_pop($s); + } + } else { // plain component + array_push($s, $thisToken); + } + $tok = strtok(DIRECTORY_SEPARATOR); + } + + $sb = ""; + for ($i=0,$_i=count($s); $i < $_i; $i++) { + if ($i > 1) { + // not before the filesystem root and not after it, since root + // already contains one + $sb .= DIRECTORY_SEPARATOR; + } + $sb .= (string) $s[$i]; + } + + + $path = (string) $sb; + if ($dosWithDrive === true) { + $path = str_replace('/', '\\', $path); + } + return $path; + } + + /** + * @return boolean Whether contents of two files is the same. + */ + public function contentEquals(PhingFile $file1, PhingFile $file2) { + + if (!($file1->exists() || $file2->exists())) { + return false; + } + + if (!($file1->canRead() || $file2->canRead())) { + return false; + } + + $c1 = file_get_contents($file1->getAbsolutePath()); + $c2 = file_get_contents($file2->getAbsolutePath()); + + return trim($c1) == trim($c2); + } + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/LogWriter.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/LogWriter.php new file mode 100755 index 0000000..f680617 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/LogWriter.php @@ -0,0 +1,95 @@ +. + */ + + require_once 'phing/system/io/Writer.php'; + require_once 'phing/Task.php'; + + /** + * Extends the Writer class to output messages to Phing's log + * + * @author Michiel Rook + * @version $Id: LogWriter.php 325 2007-12-20 15:44:58Z hans $ + * @package phing.util + */ + class LogWriter extends Writer + { + private $task = NULL; + + private $level = NULL; + + /** + * Constructs a new LogWriter object + */ + function __construct(Task $task, $level = Project::MSG_INFO) + { + $this->task = $task; + $this->level = $level; + } + + /** + * @see Writer::write() + */ + function write($buf, $off = null, $len = null) + { + $lines = explode("\n", $buf); + + foreach ($lines as $line) + { + if ($line == "") + { + continue; + } + + $this->task->log($line, $this->level); + } + } + + /** + * @see Writer::reset() + */ + function reset() + { + } + + /** + * @see Writer::close() + */ + function close() + { + } + + /** + * @see Writer::open() + */ + function open() + { + } + + /** + * @see Writer::getResource() + */ + function getResource() + { + return $this->task; + } + } + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/PathTokenizer.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/PathTokenizer.php new file mode 100755 index 0000000..3d8a68b --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/PathTokenizer.php @@ -0,0 +1,245 @@ +. + */ + + + +include_once 'phing/util/StringHelper.php'; + + + +/** + + * A Path tokenizer takes a path and returns the components that make up + + * that path. + + * + + * The path can use path separators of either ':' or ';' and file separators + + * of either '/' or '\'. + + * + + * @author Hans Lellelid (Phing) + + * @author Conor MacNeill (Ant) + + * @author Jeff Tulley (Ant) + + * @pacakge phing.util + + */ + +class PathTokenizer { + + + + /** + + * A array of tokens, created by preg_split(). + + */ + + private $tokens = array(); + + + + /** + + * A string which stores any path components which have been read ahead + + * due to DOS filesystem compensation. + + * @var string + + */ + + private $lookahead; + + + + /** + + * Flag to indicate whether or not we are running on a platform with a + + * DOS style filesystem + + * @var boolean + + */ + + private $dosStyleFilesystem; + + + + /** + + * Constructs a path tokenizer for the specified path. + + * + + * @param path The path to tokenize. Must not be null. + + */ + + public function __construct($path) { + + // on Windows and Unix, we can ignore delimiters and still have + + // enough information to tokenize correctly. + + $this->tokens = preg_split("/[;:]/", $path, -1, PREG_SPLIT_NO_EMPTY); + + $this->dosStyleFilesystem = ( PATH_SEPARATOR == ';'); + + } + + + + /** + + * Tests if there are more path elements available from this tokenizer's + + * path. If this method returns true, then a subsequent call + + * to nextToken will successfully return a token. + + * + + * @return true if and only if there is at least one token + + * in the string after the current position; false otherwise. + + */ + + public function hasMoreTokens() { + + if ($this->lookahead !== null) { + + return true; + + } + + return !empty($this->tokens); + + } + + + + /** + + * Returns the next path element from this tokenizer. + + * + + * @return the next path element from this tokenizer. + + * + + * @throws Exception if there are no more elements in this tokenizer's path. + + */ + + public function nextToken() { + + + + if ($this->lookahead !== null) { + + $token = $this->lookahead; + + $this->lookahead = null; + + } else { + + $token = trim(array_shift($this->tokens)); + + } + + + + + + if (strlen($token) === 1 && Character::isLetter($token{0}) + + && $this->dosStyleFilesystem + + && !empty($this->tokens)) { + + // we are on a dos style system so this path could be a drive + + // spec. We look at the next token + + $nextToken = trim(array_shift($this->tokens)); + + if (StringHelper::startsWith('\\', $nextToken) || StringHelper::startsWith('/', $nextToken)) { + + // we know we are on a DOS style platform and the next path + + // starts with a slash or backslash, so we know this is a + + // drive spec + + $token .= ':' . $nextToken; + + } else { + + // store the token just read for next time + + $this->lookahead = $nextToken; + + } + + } + + + + return $token; + + } + + + + /** + + * Non StringTokenizer function, that indicates whether the specified path is contained in loaded tokens. + + * We can do this easily because in PHP implimentation we're using arrays. + + * @param string $path path to search for. + + * @return boolean + + */ + + public function contains($path) { + + return in_array($path, $this->tokens, true); + + } + + + +} + + + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/SourceFileScanner.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/SourceFileScanner.php new file mode 100644 index 0000000..df11efd --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/SourceFileScanner.php @@ -0,0 +1,159 @@ +. + */ + +/** + * Utility class that collects the functionality of the various + * scanDir methods that have been scattered in several tasks before. + * + * The only method returns an array of source files. The array is a + * subset of the files given as a parameter and holds only those that + * are newer than their corresponding target files. + * @package phing.util + */ +class SourceFileScanner { + + /** Instance of FileUtils */ + private $fileUtils; + + /** Task this class is working for -- for logging purposes. */ + private $task; + + /** + * @param task The task we should log messages through + */ + function __construct($task) { + $this->task = $task; + $this->fileUtils = new FileUtils(); + } + + /** + * Restrict the given set of files to those that are newer than + * their corresponding target files. + * + * @param files the original set of files + * @param srcDir all files are relative to this directory + * @param destDir target files live here. if null file names + * returned by the mapper are assumed to be absolute. + * @param FilenameMapper knows how to construct a target file names from + * source file names. + * @param force Boolean that determines if the files should be + * forced to be copied. + */ + function restrict(&$files, $srcDir, $destDir, $mapper, $force = false) { + $now = time(); + $targetList = ""; + + /* + If we're on Windows, we have to munge the time up to 2 secs to + be able to check file modification times. + (Windows has a max resolution of two secs for modification times) + */ + $osname = strtolower(Phing::getProperty('os.name')); + + // indexOf() + $index = ((($res = strpos($osname, 'win')) === false) ? -1 : $res); + if ($index >= 0 ) { + $now += 2000; + } + + $v = array(); + + for ($i=0, $size=count($files); $i < $size; $i++) { + + $targets = $mapper->main($files[$i]); + if (empty($targets)) { + $this->task->log($files[$i]." skipped - don't know how to handle it", Project::MSG_VERBOSE); + continue; + } + + $src = null; + try { + if ($srcDir === null) { + $src = new PhingFile($files[$i]); + } else { + $src = $this->fileUtils->resolveFile($srcDir, $files[$i]); + } + + if ($src->lastModified() > $now) { + $this->task->log("Warning: ".$files[$i]." modified in the future (".$src->lastModified()." > ".$now.")", Project::MSG_WARN); + } + } catch (IOException $ioe) { + $this->task->log("Unable to read file ".$files[$i]." (skipping): " . $ioe->getMessage()); + continue; + } + + $added = false; + $targetList = ""; + + for ($j=0,$_j=count($targets); (!$added && $j < $_j); $j++) { + + $dest = null; + if ($destDir === null) { + $dest = new PhingFile($targets[$j]); + } else { + $dest = $this->fileUtils->resolveFile($destDir, $targets[$j]); + } + + if (!$dest->exists()) { + $this->task->log($files[$i]." added as " . $dest->__toString() . " doesn't exist.", Project::MSG_VERBOSE); + $v[] =$files[$i]; + $added = true; + } elseif ($src->lastModified() > $dest->lastModified()) { + $this->task->log($files[$i]." added as " . $dest->__toString() . " is outdated.", Project::MSG_VERBOSE ); + $v[]=$files[$i]; + $added = true; + } elseif ($force === true) { + $this->task->log($files[$i]." added as " . $dest->__toString() . " is forced to be overwritten.", Project::MSG_VERBOSE ); + $v[]=$files[$i]; + $added = true; + } else { + if (strlen($targetList) > 0) { + $targetList .= ", "; + } + $targetList .= $dest->getAbsolutePath(); + } + } + + if (!$added) { + $this->task->log($files[$i]." omitted as ".$targetList." ".(count($targets) === 1 ? " is " : " are ")."up to date.", Project::MSG_VERBOSE); + } + + } + $result = array(); + $result = $v; + return $result; + } + + /** + * Convenience layer on top of restrict that returns the source + * files as PhingFile objects (containing absolute paths if srcDir is + * absolute). + */ + function restrictAsFiles(&$files, &$srcDir, &$destDir, &$mapper) { + $res = $this->restrict($files, $srcDir, $destDir, $mapper); + $result = array(); + for ($i=0; $i + * @package phing.system.util + */ +class StringHelper { + + private static $TRUE_VALUES = array("on", "true", "t", "yes"); + private static $FALSE_VALUES = array("off", "false", "f", "no"); + + /** + * Replaces identifier tokens with corresponding text values in passed string. + * + * @params array $strings Array of strings to multiply. (If string is passed, will convert to array) + * @params array $tokens The tokens to search for. + * @params array $replacements The values with which to replace found tokens. + * @return string + */ + public static function multiply($strings, $tokens, $replacements) { + $strings = (array) $strings; + $results = array(); + foreach ($strings as $string) { + $results[] = str_replace($tokens, $replacements, $string); + } + return $results; + } + + /** + * Remove qualification to name. + * E.g. eg.Cat -> Cat + * @param string $qualifiedName + * @param string $separator Character used to separate. + */ + public static function unqualify($qualifiedName, $separator = '.') { + // if false, then will be 0 + $pos = strrpos($qualifiedName, $separator); + if ($pos === false) { + return $qualifiedName; // there is no '.' in the qualifed name + } else { + return substr($qualifiedName, $pos + 1); // start just after '.' + } + } + + /** + * Converts a string to an indexed array of chars + * There's really no reason for this to be used in PHP, since strings + * are all accessible using the $string{0} notation. + * @param string $string + * @return array + * @deprecated + */ + public static function toCharArray($str) { + $ret=array(); + $len=strlen($str); + for ($i=0; $i < $len; $i++) { + $ret[] = $str{$i}; + } + return $ret; + } + + /** + * Get the qualifier part of a qualified name. + * E.g. eg.Cat -> eg + * @return string + */ + public static function qualifier($qualifiedName, $seperator = '.') { + $pos = strrchr($qualifiedName, $seperator); + if ($pos === false) { + return ''; + } else { + return substr($qualifiedName, 0, $pos); + } + } + + /** + * @param array $columns String[] + * @param string $prefix + * @return array String[] + */ + public static function prefix( $columns, $prefix) { + if ($prefix == null) return $columns; + $qualified = array(); + foreach($columns as $key => $column) { + $qualified[$key] = $prefix . $column; + } + return $qualified; + } + + /** + * + * @return string + */ + public static function root($qualifiedName, $separator = '.') { + $loc = strpos($qualifiedName, $separator); + return ($loc === false) ? $qualifiedName : substr($qualifiedName, 0, $loc); + } + + /** + * @return int + */ + public static function hashCode($string) { + return crc32($string); + } + + /** + * @return boolean + */ + public static function booleanValue($s) { + if (is_bool($s)) { + return $s; // it's already boolean (not a string) + } + // otherwise assume it's something like "true" or "t" + $trimmed = strtolower(trim($s)); + return (boolean) in_array($trimmed, self::$TRUE_VALUES); + } + + /** tests if a string is a representative of a boolean */ + public static function isBoolean($s) { + + if (is_bool($s)) { + return true; // it already is boolean + } + + if ($s === "" || $s === null || !is_string($s)) { + return false; // not a valid string for testing + } + + $test = trim(strtolower($s)); + return (boolean) in_array($test, array_merge(self::$FALSE_VALUES, self::$TRUE_VALUES)); + } + + /** + * Creates a key based on any number of passed params. + * @return string + */ + public static function key() { + $args = func_get_args(); + return serialize($args); + } + + /** tests if a string starts with a given string */ + public static function startsWith($check, $string) { + if ($check === "" || $check === $string) { + return true; + } else { + return (strpos($string, $check) === 0) ? true : false; + } + } + + /** tests if a string ends with a given string */ + public static function endsWith($check, $string) { + if ($check === "" || $check === $string) { + return true; + } else { + return (strpos(strrev($string), strrev($check)) === 0) ? true : false; + } + } + + /** + * a natural way of getting a subtring, php's circular string buffer and strange + * return values suck if you want to program strict as of C or friends + */ + public static function substring($string, $startpos, $endpos = -1) { + $len = strlen($string); + $endpos = (int) (($endpos === -1) ? $len-1 : $endpos); + if ($startpos > $len-1 || $startpos < 0) { + trigger_error("substring(), Startindex out of bounds must be 0 $len-1 || $endpos < $startpos) { + trigger_error("substring(), Endindex out of bounds must be $startpos. + */ + +require_once 'phing/util/regexp/RegexpEngine.php'; + +/** + * PREG Regexp Engine. + * Implements a regexp engine using PHP's preg_match(), preg_match_all(), and preg_replace() functions. + * + * @author hans lellelid, hans@velum.net + * @package phing.util.regex + */ +class PregEngine implements RegexpEngine { + + /** + * @var boolean + */ + private $ignoreCase = false; + + /** + * Sets whether or not regex operation is case sensitive. + * @param boolean $bit + * @return void + */ + function setIgnoreCase($bit) { + $this->ignoreCase = (boolean) $bit; + } + + /** + * Gets whether or not regex operation is case sensitive. + * @return boolean + */ + function getIgnoreCase() { + return $this->ignoreCase; + } + + /** + * The pattern needs to be converted into PREG style -- which includes adding expression delims & any flags, etc. + * @param string $pattern + * @return string prepared pattern. + */ + private function preparePattern($pattern) + { + return '/'.$pattern.'/'.($this->ignoreCase ? 'i' : ''); + } + + /** + * Matches pattern against source string and sets the matches array. + * @param string $pattern The regex pattern to match. + * @param string $source The source string. + * @param array $matches The array in which to store matches. + * @return boolean Success of matching operation. + */ + function match($pattern, $source, &$matches) { + return preg_match($this->preparePattern($pattern), $source, $matches); + } + + /** + * Matches all patterns in source string and sets the matches array. + * @param string $pattern The regex pattern to match. + * @param string $source The source string. + * @param array $matches The array in which to store matches. + * @return boolean Success of matching operation. + */ + function matchAll($pattern, $source, &$matches) { + return preg_match_all($this->preparePattern($pattern), $source, $matches); + } + + /** + * Replaces $pattern with $replace in $source string. + * References to \1 group matches will be replaced with more preg-friendly + * $1. + * @param string $pattern The regex pattern to match. + * @param string $replace The string with which to replace matches. + * @param string $source The source string. + * @return string The replaced source string. + */ + function replace($pattern, $replace, $source) { + // convert \1 -> $1, because we want to use the more generic \1 in the XML + // but PREG prefers $1 syntax. + $replace = preg_replace('/\\\(\d+)/', '\$$1', $replace); + return preg_replace($this->preparePattern($pattern), $replace, $source); + } + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/regexp/.svn/text-base/Regexp.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/regexp/.svn/text-base/Regexp.php.svn-base new file mode 100644 index 0000000..c4650d3 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/regexp/.svn/text-base/Regexp.php.svn-base @@ -0,0 +1,167 @@ +. + */ + +/** + * A factory class for regex functions. + * @author Hans Lellelid + * @package phing.util.regexp + * @version $Revision: 1.5 $ + */ +class Regexp { + + /** + * Matching groups found. + * @var array + */ + private $groups = array(); + + /** + * Pattern to match. + * @var string + */ + private $pattern; + + /** + * Replacement pattern. + * @var string + */ + private $replace; + + /** + * The regex engine -- e.g. 'preg' or 'ereg'; + * @var RegexpEngine + */ + private $engine; + + /** + * Constructor sets the regex engine to use (preg by default). + * @param string $_engineType The regex engine to use. + */ + function __construct($engineType='preg') { + if ($engineType == 'preg') { + include_once 'phing/util/regexp/PregEngine.php'; + $this->engine = new PregEngine(); + } elseif ($engineType == 'ereg') { + include_once 'phing/util/regexp/EregEngine.php'; + $this->engine = new EregEngine(); + } else { + throw new BuildException("Invalid engine type for Regexp: " . $engineType); + } + } + + /** + * Sets pattern to use for matching. + * @param string $pat The pattern to match on. + * @return void + */ + public function setPattern($pat) { + $this->pattern = (string) $pat; + } + + + /** + * Gets pattern to use for matching. + * @return string The pattern to match on. + */ + public function getPattern() { + return $this->pattern; + } + + /** + * Sets replacement string. + * @param string $rep The pattern to replace matches with. + * @return void + */ + public function setReplace($rep) { + $this->replace = (string) $rep; + } + + /** + * Gets replacement string. + * @return string The pattern to replace matches with. + * @return void + */ + public function getReplace() { + return $this->replace; + } + + /** + * Performs match of specified pattern against $subject. + * @param string $subject The subject, on which to perform matches. + * @return boolean Whether or not pattern matches subject string passed. + */ + public function matches($subject) { + if($this->pattern === null) { + throw new Exception("No pattern specified for regexp match()."); + } + return $this->engine->match($this->pattern, $subject, $this->groups); + } + + /** + * Performs replacement of specified pattern and replacement strings. + * @param string $subject Text on which to perform replacement. + * @return string subject after replacement has been performed. + */ + public function replace($subject) { + if ($this->pattern === null || $this->replace === null) { + throw new Exception("Missing pattern or replacement string regexp replace()."); + } + return $this->engine->replace($this->pattern, $this->replace, $subject); + } + + /** + * Get array of matched groups. + * @return array Matched groups + */ + function getGroups() { + return $this->groups; + } + + /** + * Get specific matched group. + * @param integer $idx + * @return string specified group or NULL if group is not set. + */ + function getGroup($idx) { + if (!isset($this->groups[$idx])) { + return null; + } + return $this->groups[$idx]; + } + + /** + * Sets whether the regexp matching is case insensitive. + * (default is false -- i.e. case sensisitive) + * @param boolean $bit + */ + function setIgnoreCase($bit) { + $this->engine->setIgnoreCase($bit); + } + + /** + * Gets whether the regexp matching is case insensitive. + * @return boolean + */ + function getIgnoreCase() { + return $this->engine->getIgnoreCase(); + } +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/regexp/.svn/text-base/RegexpEngine.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/regexp/.svn/text-base/RegexpEngine.php.svn-base new file mode 100644 index 0000000..854a73a --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/regexp/.svn/text-base/RegexpEngine.php.svn-base @@ -0,0 +1,73 @@ +. + */ + +/** + * Contains some shared attributes and methods -- and some abstract methods with + * engine-specific implementations that sub-classes must override. + * + * @author Hans Lellelid + * @package phing.util.regex + * @version $Revision: 1.4 $ + */ +interface RegexpEngine { + + /** + * Sets whether or not regex operation should ingore case. + * @param boolean $bit + * @return void + */ + public function setIgnoreCase($bit); + + /** + * Returns status of ignore case flag. + * @return boolean + */ + public function getIgnoreCase(); + + /** + * Matches pattern against source string and sets the matches array. + * @param string $pattern The regex pattern to match. + * @param string $source The source string. + * @param array $matches The array in which to store matches. + * @return boolean Success of matching operation. + */ + function match($pattern, $source, &$matches); + + /** + * Matches all patterns in source string and sets the matches array. + * @param string $pattern The regex pattern to match. + * @param string $source The source string. + * @param array $matches The array in which to store matches. + * @return boolean Success of matching operation. + */ + function matchAll($pattern, $source, &$matches); + + /** + * Replaces $pattern with $replace in $source string. + * @param string $pattern The regex pattern to match. + * @param string $replace The string with which to replace matches. + * @param string $source The source string. + * @return string The replaced source string. + */ + function replace($pattern, $replace, $source); + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/regexp/PregEngine.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/regexp/PregEngine.php new file mode 100644 index 0000000..52c56f6 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/regexp/PregEngine.php @@ -0,0 +1,104 @@ +. + */ + +require_once 'phing/util/regexp/RegexpEngine.php'; + +/** + * PREG Regexp Engine. + * Implements a regexp engine using PHP's preg_match(), preg_match_all(), and preg_replace() functions. + * + * @author hans lellelid, hans@velum.net + * @package phing.util.regex + */ +class PregEngine implements RegexpEngine { + + /** + * @var boolean + */ + private $ignoreCase = false; + + /** + * Sets whether or not regex operation is case sensitive. + * @param boolean $bit + * @return void + */ + function setIgnoreCase($bit) { + $this->ignoreCase = (boolean) $bit; + } + + /** + * Gets whether or not regex operation is case sensitive. + * @return boolean + */ + function getIgnoreCase() { + return $this->ignoreCase; + } + + /** + * The pattern needs to be converted into PREG style -- which includes adding expression delims & any flags, etc. + * @param string $pattern + * @return string prepared pattern. + */ + private function preparePattern($pattern) + { + return '/'.$pattern.'/'.($this->ignoreCase ? 'i' : ''); + } + + /** + * Matches pattern against source string and sets the matches array. + * @param string $pattern The regex pattern to match. + * @param string $source The source string. + * @param array $matches The array in which to store matches. + * @return boolean Success of matching operation. + */ + function match($pattern, $source, &$matches) { + return preg_match($this->preparePattern($pattern), $source, $matches); + } + + /** + * Matches all patterns in source string and sets the matches array. + * @param string $pattern The regex pattern to match. + * @param string $source The source string. + * @param array $matches The array in which to store matches. + * @return boolean Success of matching operation. + */ + function matchAll($pattern, $source, &$matches) { + return preg_match_all($this->preparePattern($pattern), $source, $matches); + } + + /** + * Replaces $pattern with $replace in $source string. + * References to \1 group matches will be replaced with more preg-friendly + * $1. + * @param string $pattern The regex pattern to match. + * @param string $replace The string with which to replace matches. + * @param string $source The source string. + * @return string The replaced source string. + */ + function replace($pattern, $replace, $source) { + // convert \1 -> $1, because we want to use the more generic \1 in the XML + // but PREG prefers $1 syntax. + $replace = preg_replace('/\\\(\d+)/', '\$$1', $replace); + return preg_replace($this->preparePattern($pattern), $replace, $source); + } + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/regexp/Regexp.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/regexp/Regexp.php new file mode 100644 index 0000000..625de1c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/regexp/Regexp.php @@ -0,0 +1,167 @@ +. + */ + +/** + * A factory class for regex functions. + * @author Hans Lellelid + * @package phing.util.regexp + * @version $Revision: 1.5 $ + */ +class Regexp { + + /** + * Matching groups found. + * @var array + */ + private $groups = array(); + + /** + * Pattern to match. + * @var string + */ + private $pattern; + + /** + * Replacement pattern. + * @var string + */ + private $replace; + + /** + * The regex engine -- e.g. 'preg' or 'ereg'; + * @var RegexpEngine + */ + private $engine; + + /** + * Constructor sets the regex engine to use (preg by default). + * @param string $_engineType The regex engine to use. + */ + function __construct($engineType='preg') { + if ($engineType == 'preg') { + include_once 'phing/util/regexp/PregEngine.php'; + $this->engine = new PregEngine(); + } elseif ($engineType == 'ereg') { + include_once 'phing/util/regexp/EregEngine.php'; + $this->engine = new EregEngine(); + } else { + throw new BuildException("Invalid engine type for Regexp: " . $engineType); + } + } + + /** + * Sets pattern to use for matching. + * @param string $pat The pattern to match on. + * @return void + */ + public function setPattern($pat) { + $this->pattern = (string) $pat; + } + + + /** + * Gets pattern to use for matching. + * @return string The pattern to match on. + */ + public function getPattern() { + return $this->pattern; + } + + /** + * Sets replacement string. + * @param string $rep The pattern to replace matches with. + * @return void + */ + public function setReplace($rep) { + $this->replace = (string) $rep; + } + + /** + * Gets replacement string. + * @return string The pattern to replace matches with. + * @return void + */ + public function getReplace() { + return $this->replace; + } + + /** + * Performs match of specified pattern against $subject. + * @param string $subject The subject, on which to perform matches. + * @return boolean Whether or not pattern matches subject string passed. + */ + public function matches($subject) { + if($this->pattern === null) { + throw new Exception("No pattern specified for regexp match()."); + } + return $this->engine->match($this->pattern, $subject, $this->groups); + } + + /** + * Performs replacement of specified pattern and replacement strings. + * @param string $subject Text on which to perform replacement. + * @return string subject after replacement has been performed. + */ + public function replace($subject) { + if ($this->pattern === null || $this->replace === null) { + throw new Exception("Missing pattern or replacement string regexp replace()."); + } + return $this->engine->replace($this->pattern, $this->replace, $subject); + } + + /** + * Get array of matched groups. + * @return array Matched groups + */ + function getGroups() { + return $this->groups; + } + + /** + * Get specific matched group. + * @param integer $idx + * @return string specified group or NULL if group is not set. + */ + function getGroup($idx) { + if (!isset($this->groups[$idx])) { + return null; + } + return $this->groups[$idx]; + } + + /** + * Sets whether the regexp matching is case insensitive. + * (default is false -- i.e. case sensisitive) + * @param boolean $bit + */ + function setIgnoreCase($bit) { + $this->engine->setIgnoreCase($bit); + } + + /** + * Gets whether the regexp matching is case insensitive. + * @return boolean + */ + function getIgnoreCase() { + return $this->engine->getIgnoreCase(); + } +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/regexp/RegexpEngine.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/regexp/RegexpEngine.php new file mode 100644 index 0000000..54bd422 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/phing/util/regexp/RegexpEngine.php @@ -0,0 +1,73 @@ +. + */ + +/** + * Contains some shared attributes and methods -- and some abstract methods with + * engine-specific implementations that sub-classes must override. + * + * @author Hans Lellelid + * @package phing.util.regex + * @version $Revision: 1.4 $ + */ +interface RegexpEngine { + + /** + * Sets whether or not regex operation should ingore case. + * @param boolean $bit + * @return void + */ + public function setIgnoreCase($bit); + + /** + * Returns status of ignore case flag. + * @return boolean + */ + public function getIgnoreCase(); + + /** + * Matches pattern against source string and sets the matches array. + * @param string $pattern The regex pattern to match. + * @param string $source The source string. + * @param array $matches The array in which to store matches. + * @return boolean Success of matching operation. + */ + function match($pattern, $source, &$matches); + + /** + * Matches all patterns in source string and sets the matches array. + * @param string $pattern The regex pattern to match. + * @param string $source The source string. + * @param array $matches The array in which to store matches. + * @return boolean Success of matching operation. + */ + function matchAll($pattern, $source, &$matches); + + /** + * Replaces $pattern with $replace in $source string. + * @param string $pattern The regex pattern to match. + * @param string $replace The string with which to replace matches. + * @param string $source The source string. + * @return string The replaced source string. + */ + function replace($pattern, $replace, $source); + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/.svn/all-wcprops new file mode 100644 index 0000000..e1154a2 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/.svn/all-wcprops @@ -0,0 +1,35 @@ +K 25 +svn:wc:ra_dav:version-url +V 35 +/!svn/ver/1750/tags/1.4.2/generator +END +default.properties +K 25 +svn:wc:ra_dav:version-url +V 54 +/!svn/ver/1695/tags/1.4.2/generator/default.properties +END +build.xml-local +K 25 +svn:wc:ra_dav:version-url +V 51 +/!svn/ver/1695/tags/1.4.2/generator/build.xml-local +END +build.properties-sample +K 25 +svn:wc:ra_dav:version-url +V 59 +/!svn/ver/1695/tags/1.4.2/generator/build.properties-sample +END +build-propel.xml +K 25 +svn:wc:ra_dav:version-url +V 52 +/!svn/ver/1695/tags/1.4.2/generator/build-propel.xml +END +build.xml +K 25 +svn:wc:ra_dav:version-url +V 45 +/!svn/ver/1695/tags/1.4.2/generator/build.xml +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/.svn/dir-prop-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/.svn/dir-prop-base new file mode 100644 index 0000000..fd2b01c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/.svn/dir-prop-base @@ -0,0 +1,6 @@ +K 10 +svn:ignore +V 17 +build.properties + +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/.svn/entries new file mode 100644 index 0000000..1054c2c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/.svn/entries @@ -0,0 +1,210 @@ +10 + +dir +2332 +http://propel.mirror.svn.symfony-project.com/tags/1.4.2/generator +http://propel.mirror.svn.symfony-project.com + + + +2010-05-09T12:33:47.303712Z +1750 +francois +has-props + + + + + + + + + + + + + +a84bc4f6-26e8-416f-aa96-3cde13879fbb + +default.properties +file + + + + +2012-05-10T18:42:16.473552Z +9b384aead115144e7247182506d0dfbe +2010-04-19T22:01:20.976333Z +1691 +francois +has-props + + + + + + + + + + + + + + + + + + + + +9358 + +build.xml-local +file + + + + +2012-05-10T18:42:16.473552Z +d4b1141aa15137f3bfc6ed64281a041d +2008-08-06T07:37:21.953926Z +1067 +ron + + + + + + + + + + + + + + + + + + + + + +4357 + +pear +dir + +bin +dir + +build.properties-sample +file + + + + +2012-05-10T18:42:16.477555Z +73a110a56283ba9fdaafa2b09b0baf4d +2007-01-22T18:51:50.548871Z +547 +hans + + + + + + + + + + + + + + + + + + + + + +7037 + +resources +dir + +classes +dir + +build-propel.xml +file + + + + +2012-05-10T18:42:16.509548Z +a7edf6f1ec30d6fbf13a7c667526182a +2010-01-29T14:48:28.317517Z +1508 +francois +has-props + + + + + + + + + + + + + + + + + + + + +21777 + +build.xml +file + + + + +2012-05-10T18:42:16.509548Z +03f7b2153051daeaf41231f19ca27512 +2010-01-29T14:48:28.317517Z +1508 +francois +has-props + + + + + + + + + + + + + + + + + + + + +7287 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/.svn/prop-base/build-propel.xml.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/.svn/prop-base/build-propel.xml.svn-base new file mode 100644 index 0000000..33acb99 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/.svn/prop-base/build-propel.xml.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/.svn/prop-base/build.xml.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/.svn/prop-base/build.xml.svn-base new file mode 100644 index 0000000..33acb99 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/.svn/prop-base/build.xml.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/.svn/prop-base/default.properties.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/.svn/prop-base/default.properties.svn-base new file mode 100644 index 0000000..33acb99 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/.svn/prop-base/default.properties.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/.svn/text-base/build-propel.xml.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/.svn/text-base/build-propel.xml.svn-base new file mode 100644 index 0000000..6837c2c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/.svn/text-base/build-propel.xml.svn-base @@ -0,0 +1,542 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ATTENTION: It appears you are using PostgreSQL and you have identifier-quoting turned on. + It is suggested that you disable identifier quoting when using PostgreSQL -- especially if you + have case-sensitive columns in your database. + + To disable identifier quoting, add the following property to your build.properties (or specify + it using -D on commandline): + + propel.disableIdentifierQuoting=true + + You can ignore this warning if you understand the issues related to case-sensitivity and Propel's + DDL-only implementation of identifier quoting. + + + + + + + + + + + + ATTENTION: It appears you are using the mysqli driver. + + This driver is no longer supported by Propel because Propel now uses PDO for database connections. + Please use mysqli driver instead. + Use 'mysql' instead of 'mysqli' for your propel.database property. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Output file: ${propel.runtime.phpconf.file} + XMLFile: ${propel.conf.dir}/${propel.runtime.conf.file} + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/.svn/text-base/build.properties-sample.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/.svn/text-base/build.properties-sample.svn-base new file mode 100644 index 0000000..bcb8a2f --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/.svn/text-base/build.properties-sample.svn-base @@ -0,0 +1,194 @@ +# ------------------------------------------------------------------- +# +# P R O P E L C O N F I G U R A T I O N F I L E +# +# ------------------------------------------------------------------- +# This file contains some example properties. Ideally properties +# should be specified in the project-specific build.properties file; +# however, this file can be used to specify non-default properties +# that you would like to use accross all of your Propel projects. +# ------------------------------------------------------------------- +# + +propel.home = . + +# ------------------------------------------------------------------- +# +# P R O J E C T +# +# ------------------------------------------------------------------- +# This is the name of your Propel project. The name of your Propel +# project is used (by default) to determine where the generator will +# find needed configuration files and will place resuilting build +# files. E.g. if your project is named 'killerapp', Propel will +# look here for schema.xml and runtime-conf.xml files: +# +# projects/killerapp/ +# +# ------------------------------------------------------------------- + +# You can set this here, but it's preferrable to set this in a +# project-specific build.properties file. +# +# propel.project = bookstore + +# ------------------------------------------------------------------- +# +# T A R G E T D A T A B A S E +# +# ------------------------------------------------------------------- +# This is the target database, only considered when generating +# the SQL for your Propel project. Your possible choices are: +# +# mssql, mysql, oracle, pgsql, sqlite +# ------------------------------------------------------------------- + +# You can set this here, but it's preferrable to set this in a +# project-specific build.properties file. +# +# propel.database = mysql + +# ------------------------------------------------------------------- +# +# O B J E C T M O D E L I N F O R M A T I O N +# +# ------------------------------------------------------------------- +# These settings will allow you to customize the way your +# Peer-based object model is created. +# ------------------------------------------------------------------- +# addGenericAccessors +# If true, Propel adds methods to get database fields by name/position. +# +# addGenericMutators +# If true, Propel adds methods to set database fields by name/position. +# +# addSaveMethod +# If true, Propel adds tracking code to determine how to save objects. +# +# addTimeStamp +# If true, Propel true puts time stamps in phpdoc of generated om files. +# +# basePrefix +# A string to pre-pend to the file names of base data and peer objects. +# +# complexObjectModel +# If true, Propel generates data objects with collection support and +# methods to easily retreive foreign key relationships. +# +# targetPackage +# Sets the PHP "package" the om files will generated to, e.g. +# "com.company.project.om". +# +# targetPlatform +# Sets whether Propel is building classes for php5 (default) +# or php4 (experimental). +# +# packageObjectModel +# Sets whether Propel is packaging ObjectModel fro several +# [package].schema.xml files. The +# attribute has to be set then. (warning: this is experimental!) +# +# ------------------------------------------------------------------- + +# classes will be put in (and included from) this directory +# e.g. if package is "bookstore" then om will expect include('bookstore/Book.php'); to work. +# use dot-path notation -- e.g. my.bookstore -> my/bookstore. +# +propel.targetPackage = ${propel.project} + +propel.addGenericAccessors = false +propel.addGenericMutators = false +propel.addSaveMethod = true +propel.addTimeStamp = true +propel.basePrefix = Base +propel.complexObjectModel = true +propel.targetPlatform = php5 +propel.packageObjectModel = false + +# ------------------------------------------------------------------- +# +# D B C O N N E C T I O N S E T T I N G S +# +# ------------------------------------------------------------------- +# Creole connection settings. These connection settings are used by +# build tagets that perform database operations (e.g. 'insert-sql', +# 'creole'). +# +# You can set them here, but it's preferrable to set these properties +# in a project-specific build.properties file. +# + +# If you want to use a custom driver, specify it below, otherwise +# leave it blank or comment it out to use Creole stock driver. +# +# propel.database.driver = creole.drivers.sqlite.SQLiteConnection + +# Note that if you do not wish to specify the database (e.g. if you +# are using multiple databses) you can use the @DB@ token which +# will be replaced with a database at runtime. +# +# propel.database.url = mysql://root@localhost/bookstore + +# For MySQL or Oracle, you also need to specify username & password +# propel.database.user = [db username] +# propel.database.password = [db password] + +# Use the URL below to specify a DSN to used to create the database. +# Note that this URL should not contain the database name, as you will +# get an error if the database does not exist. +# (This does not apply to SQLite since the databse is automatically created +# when the connection is made -- if it does not already exist.) +# +# propel.database.createUrl = mysql://root@localhost/ + + +# ------------------------------------------------------------------- +# +# C R E O L E TO X M L +# +# ------------------------------------------------------------------- +# These settings only applies to the 'creole' target. +# ------------------------------------------------------------------- +# +# samePhpName +# If true, the Creole task will set the phpName attribute for the +# tables and columns to be the same as SQL name. +# +# addVendorInfo +# If true, the Creole task will add vendor specific information +# to the database schema +# +# addValidators +# Bitfield like option to turn on/off addition of Validator and +# Rule tags to the schema. Uses a boolean syntax like in php.ini. +# Allowed tokens are: +# none add no validators) +# all add all validators) +# maxlength add maxlengths for string type columns) +# maxvalue add maxvalue for numeric columns) +# type add notmatch validators for numeric columns) +# required add required validators for required columns) +# unique add unique validators for unique indexes) +# Allowed operators are: +# & bitwise AND +# | bitwise OR +# ~ bitwise NOT +# +# ------------------------------------------------------------------- + +# propel.samePhpName = false +# propel.addVendorInfo=true +# propel.addValidators=none + + +# ------------------------------------------------------------------- +# +# D A T A B A S E B U I L D C O N F I G +# +# ------------------------------------------------------------------- +# Some databases provide some configuration options that can be set +# in this script. +# +# === MySQL +# propel.mysql.tableType +# Use this property to set the table type of generated tables (e.g. InnoDB, MyISAM). diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/.svn/text-base/build.xml-local.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/.svn/text-base/build.xml-local.svn-base new file mode 100644 index 0000000..d4d4e4c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/.svn/text-base/build.xml-local.svn-base @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/.svn/text-base/build.xml.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/.svn/text-base/build.xml.svn-base new file mode 100644 index 0000000..b2dfcd1 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/.svn/text-base/build.xml.svn-base @@ -0,0 +1,188 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Project name + + + + + No project.dir was specified, using default path: ./projects/${project} + + + + + + + + Processing additional properties file: ${additional.properties} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/.svn/text-base/default.properties.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/.svn/text-base/default.properties.svn-base new file mode 100644 index 0000000..ed96ec5 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/.svn/text-base/default.properties.svn-base @@ -0,0 +1,264 @@ +# ------------------------------------------------------------------- +# +# D E F A U L T P R O P E R T I E S +# +# ------------------------------------------------------------------- +# This file sets default properties. You can override any of these +# by specifying your new value in the build.properties file for your +# project or a top-level build.properties file. Either way, you +# should not need to edit this file. +# ------------------------------------------------------------------- + + +# ------------------------------------------------------------------- +# +# B A S I C P R O P E R T I E S +# +# ------------------------------------------------------------------- + +propel.version = 1.4.2 + +propel.home = . + +propel.project = +propel.database = +propel.targetPackage = ${propel.project} +propel.runOnlyOnSchemaChange = false + +# Default behavior settings +# +propel.targetPlatform = php5 +propel.packageObjectModel = false +propel.schema.validate = true +propel.useDateTimeClass = true +propel.dateTimeClass = DateTime + +# controls what type of joins will be used in the doSelectJoin*() peer methods, +# if set to true, LEFT JOINS will be used, INNER JOINS otherwise +# see ticket #491, #588 +propel.useLeftJoinsInDoJoinMethods = true + +# ------------------------------------------------------------------- +# +# D A T A B A S E S E T T I N G S +# +# ------------------------------------------------------------------- + +propel.database.url = +propel.database.buildUrl = ${propel.database.url} +propel.database.createUrl = ${propel.database.buildUrl} + +propel.database.driver = + +propel.database.schema = +propel.database.encoding = +propel.database.manualCreation = false + +# if these arent blank then when we try to connect with insert-sql to a database +# that doesnt require them and it isnt in the build.properties it sends +# the ${blah} for the username and password +propel.database.user = +propel.database.password = + +# Creole database settings for reverse engineering applications +# ------------------------------------------------------------- + +# by default leave the databaseDriver blank, so that bundled driver is used by Creole +propel.database.creole.driver = +propel.database.creole.url = + +# ------------------------------------------------------------------- +# +# C R E O L E TO X M L S E T T I N G S +# +# ------------------------------------------------------------------- + +propel.samePhpName = false +propel.addVendorInfo = false +propel.addValidators = none + +# ------------------------------------------------------------------- +# +# T E M P L A T E V A R I A B L E S +# +# ------------------------------------------------------------------- + +propel.addGenericAccessors = false +propel.addGenericMutators = false +propel.addSaveMethod = true +propel.addTimeStamp = false +propel.addValidateMethod = true +propel.addIncludes = true +propel.addHooks = true +propel.basePrefix = Base +propel.saveException = PropelException +propel.emulateForeignKeyConstraints = false + +# Identifier quoting is only implemented at the DDL layer at this point. +# Since this may result in undesired behavior (especially in Postgres), +# it can be disabled by setting this property to true in your build.properties file. +propel.disableIdentifierQuoting = false + +# These are the default formats that will be used when fetching values +# from temporal columns in Propel. You can always specify these when +# calling the methods directly, but for methods like getByName() +# it is nice to change the defaults. + +propel.defaultTimeStampFormat = Y-m-d H:i:s +propel.defaultTimeFormat = %X +propel.defaultDateFormat = %x + +propel.omtar.src.base = false +propel.omtar.src.extension = false +propel.omtar.bin.base = false +propel.omtar.bin.extension = false +propel.omtar.deleteFiles = false + + +# ------------------------------------------------------------------- +# +# C O N T R O L T E M P L A T E S +# +# ------------------------------------------------------------------- +# +# This is a deprecated idea, that will almost certainly be completely +# removed in Propel 1.2 and/or 2.0. +# + +propel.template.conf = ${propel.home}/templates/conf/Control.tpl +propel.template.sql = ${propel.home}/templates/sql/base/Control.tpl +propel.template.sqlDbInit = ${propel.home}/templates/sql/db-init/Control.tpl + + +# ------------------------------------------------------------------- +# +# D I R E C T O R I E S +# +# ------------------------------------------------------------------- + +propel.project.dir = ${propel.home}/projects/${propel.project} + +propel.output.dir = ${propel.project.dir}/build +propel.schema.dir = ${propel.project.dir} +propel.templatePath = ${propel.home}/templates +propel.conf.dir = ${propel.project.dir} + +propel.doc.dir = ${propel.output.dir}/doc +propel.php.dir = ${propel.output.dir}/classes +propel.phpconf.dir = ${propel.output.dir}/conf +propel.phpdoc.dir = ${propel.output.dir}/phpdoc +propel.sql.dir = ${propel.output.dir}/sql +propel.graph.dir = ${propel.output.dir}/graph +propel.omtar.dir = ${propel.output.dir} + + +# ------------------------------------------------------------------- +# +# D E F A U L T F I L E N A M ES +# +# ------------------------------------------------------------------- + +# propel.sqlfile + +propel.runtime.conf.file = runtime-conf.xml +propel.runtime.phpconf.file = ${propel.project}-conf.php +propel.runtime.phpconf-classmap.file = ${propel.project}-classmap.php +propel.default.schema.basename = schema + +# Can't use because of inconsistencies in where the files +# are named (some from build-propel.xml, but some from within templates) +# propel.default.data.basename = ${propel.project}-data + +propel.schema.xsd.file = ${propel.home}/resources/xsd/database.xsd +propel.schema.xsl.file = ${propel.home}/resources/xsl/database.xsl + +# ------------------------------------------------------------------- +# +# I N C L U D E A N D E X C L U D E S E T T I N G S +# +# ------------------------------------------------------------------- + +propel.schema.sql.includes = *schema.xml +propel.schema.sql.excludes = +propel.schema.doc.includes = *schema.xml +propel.schema.doc.excludes = +propel.schema.create-db.includes = *schema.xml +propel.schema.create-db.excludes = +propel.schema.init-sql.includes = *schema.xml +propel.schema.init-sql.excludes = id-table-schema.xml +propel.schema.om.includes = *schema.xml +propel.schema.om.excludes = id-table-schema.xml +propel.schema.datadtd.includes = *schema.xml +propel.schema.datadtd.excludes = id-table-schema.xml + +# ------------------------------------------------------------------- +# +# M A P P E R S E T T I N G S +# +# ------------------------------------------------------------------- + +# (note: data xml files are selected based on datadbmap file) +propel.datasql.mapper.from = *.xml +propel.datasql.mapper.to = *.sql + +propel.datadump.mapper.from = *schema.xml +propel.datadump.mapper.to = *data.xml + +propel.datadtd.mapper.from = *.xml +propel.datadtd.mapper.to = *.dtd + +propel.sql.mapper.from = *.xml +propel.sql.mapper.to = *.sql + + +# ------------------------------------------------------------------- +# +# B U I L D E R S E T T I N G S +# +# ------------------------------------------------------------------- + +# Object Model builders +propel.builder.peer.class = propel.engine.builder.om.php5.PHP5PeerBuilder +propel.builder.object.class = propel.engine.builder.om.php5.PHP5ObjectBuilder +propel.builder.objectstub.class = propel.engine.builder.om.php5.PHP5ExtensionObjectBuilder +propel.builder.peerstub.class = propel.engine.builder.om.php5.PHP5ExtensionPeerBuilder + +propel.builder.objectmultiextend.class = propel.engine.builder.om.php5.PHP5MultiExtendObjectBuilder + +propel.builder.tablemap.class = propel.engine.builder.om.php5.PHP5TableMapBuilder + +propel.builder.interface.class = propel.engine.builder.om.php5.PHP5InterfaceBuilder + +propel.builder.node.class = propel.engine.builder.om.php5.PHP5NodeBuilder +propel.builder.nodepeer.class = propel.engine.builder.om.php5.PHP5NodePeerBuilder +propel.builder.nodestub.class = propel.engine.builder.om.php5.PHP5ExtensionNodeBuilder +propel.builder.nodepeerstub.class = propel.engine.builder.om.php5.PHP5ExtensionNodePeerBuilder + +propel.builder.nestedset.class = propel.engine.builder.om.php5.PHP5NestedSetBuilder +propel.builder.nestedsetpeer.class = propel.engine.builder.om.php5.PHP5NestedSetPeerBuilder + +propel.builder.pluralizer.class = propel.engine.builder.util.DefaultEnglishPluralizer + +# SQL builders + +propel.builder.ddl.class = propel.engine.builder.sql.${propel.database}.${propel.database}DDLBuilder +propel.builder.datasql.class = propel.engine.builder.sql.${propel.database}.${propel.database}DataSQLBuilder + +# Platform classes + +propel.platform.class = propel.engine.platform.${propel.database}Platform + +# Schema Parser (reverse-engineering) classes + +propel.reverse.parser.class = propel.engine.database.reverse.${propel.database}.${propel.database}SchemaParser + +# ------------------------------------------------------------------- +# +# B E H A V I O R S E T T I N G S +# +# ------------------------------------------------------------------- + +propel.behavior.timestampable.class = propel.engine.behavior.TimestampableBehavior +propel.behavior.alternative_coding_standards.class = propel.engine.behavior.AlternativeCodingStandardsBehavior +propel.behavior.soft_delete.class = propel.engine.behavior.SoftDeleteBehavior +propel.behavior.auto_add_pk.class = propel.engine.behavior.AutoAddPkBehavior diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/bin/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/bin/.svn/all-wcprops new file mode 100644 index 0000000..4b1838c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/bin/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 39 +/!svn/ver/1695/tags/1.4.2/generator/bin +END +propel-gen +K 25 +svn:wc:ra_dav:version-url +V 50 +/!svn/ver/1695/tags/1.4.2/generator/bin/propel-gen +END +propel-gen.bat +K 25 +svn:wc:ra_dav:version-url +V 54 +/!svn/ver/1695/tags/1.4.2/generator/bin/propel-gen.bat +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/bin/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/bin/.svn/entries new file mode 100644 index 0000000..23d88f8 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/bin/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +2332 +http://propel.mirror.svn.symfony-project.com/tags/1.4.2/generator/bin +http://propel.mirror.svn.symfony-project.com + + + +2007-11-03T16:47:31.604456Z +750 +hans + + + + + + + + + + + + + + +a84bc4f6-26e8-416f-aa96-3cde13879fbb + +propel-gen +file + + + + +2012-05-10T18:42:14.585550Z +a8cd6240f234c2e8e9d5524499969401 +2005-12-22T15:05:56.094009Z +307 +hans +has-props + + + + + + + + + + + + + + + + + + + + +1684 + +propel-gen.bat +file + + + + +2012-05-10T18:42:14.589554Z +9d3658b01c2cee7b9bac90404972acf6 +2007-11-03T16:47:31.604456Z +750 +hans +has-props + + + + + + + + + + + + + + + + + + + + +1429 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/bin/.svn/prop-base/propel-gen.bat.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/bin/.svn/prop-base/propel-gen.bat.svn-base new file mode 100644 index 0000000..869ac71 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/bin/.svn/prop-base/propel-gen.bat.svn-base @@ -0,0 +1,5 @@ +K 14 +svn:executable +V 1 +* +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/bin/.svn/prop-base/propel-gen.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/bin/.svn/prop-base/propel-gen.svn-base new file mode 100644 index 0000000..869ac71 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/bin/.svn/prop-base/propel-gen.svn-base @@ -0,0 +1,5 @@ +K 14 +svn:executable +V 1 +* +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/bin/.svn/text-base/propel-gen.bat.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/bin/.svn/text-base/propel-gen.bat.svn-base new file mode 100644 index 0000000..2a25b7a --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/bin/.svn/text-base/propel-gen.bat.svn-base @@ -0,0 +1,47 @@ +@echo off + +rem ********************************************************************* +rem ** The Propel generator convenience script for Windows based systems +rem ** $Id$ +rem ********************************************************************* + +rem This script will do the following: +rem - check for PHING_COMMAND env, if found, use it. +rem - if not found detect php, if found use it, otherwise err and terminate +rem - check for PROPEL_GEN_HOME evn, if found use it +rem - if not found error and leave + +if "%OS%"=="Windows_NT" @setlocal + +rem %~dp0 is expanded pathname of the current script under NT +set DEFAULT_PROPEL_GEN_HOME=%~dp0.. + +goto init +goto cleanup + +:init + +if "%PROPEL_GEN_HOME%" == "" set PROPEL_GEN_HOME=%DEFAULT_PROPEL_GEN_HOME% +set DEFAULT_PROPEL_GEN_HOME= + +if "%PHING_COMMAND%" == "" goto no_phingcommand + +goto run +goto cleanup + +:run +%PHING_COMMAND% -f "%PROPEL_GEN_HOME%\build.xml" -Dusing.propel-gen=true -Dproject.dir=%* +goto cleanup + +:no_phingcommand +REM echo ------------------------------------------------------------------------ +REM echo WARNING: Set environment var PHING_COMMAND to the location of your phing +REM echo executable (e.g. C:\PHP\phing.bat). +REM echo Proceeding with assumption that phing.bat is on Path +REM echo ------------------------------------------------------------------------ +set PHING_COMMAND=phing.bat +goto init + +:cleanup +if "%OS%"=="Windows_NT" @endlocal +REM pause diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/bin/.svn/text-base/propel-gen.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/bin/.svn/text-base/propel-gen.svn-base new file mode 100644 index 0000000..11c929f --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/bin/.svn/text-base/propel-gen.svn-base @@ -0,0 +1,67 @@ +#!/bin/sh +# Shell wrapper for Propel generator +# $Id$ +# +# This script will do the following: +# - check for PHING_COMMAND env, if found, use it. +# - if not found assume php is on the path +# - check for PROPEL_GEN_HOME evn, if found use it +# - if not look for it + +if [ -z "$PROPEL_GEN_HOME" ] ; then + + # echo "WARNING: PROPEL_GEN_HOME environment not set. Attempting to guess." + + # try to find Propel + if [ -d /opt/propel/generator ] ; then + PROPEL_GEN_HOME=/opt/propel/generator + fi + + if [ -d "${HOME}/opt/propel/generator" ] ; then + PROPEL_GEN_HOME="${HOME}/opt/propel/generator" + fi + + if [ -d "/usr/local/propel/generator" ] ; then + PROPEL_GEN_HOME="/usr/local/propel/generator" + fi + + if [ -d "${HOME}/usr/propel/generator" ] ; then + PROPEL_GEN_HOME="${HOME}/usr/propel/generator" + fi + + ## resolve links - $0 may be a link to phing's home + PRG="$0" + progname=`basename "$0"` + saveddir=`pwd` + + # need this for relative symlinks + dirname_prg=`dirname "$PRG"` + cd "$dirname_prg" + + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi + done + + PROPEL_GEN_HOME=`dirname "$PRG"`/.. + + cd "$saveddir" + + # make it fully qualified + PROPEL_GEN_HOME=`cd "$PROPEL_GEN_HOME" && pwd` + + # make it available in PHP via getenv("PROPEL_GEN_HOME") + export PROPEL_GEN_HOME +fi + +if (test -z "$PHING_COMMAND") ; then + # echo "WARNING: PHING_COMMAND environment not set. (Assuming phing on PATH)" + export PHING_COMMAND="phing" +fi + +$PHING_COMMAND -f $PROPEL_GEN_HOME/build.xml -Dusing.propel-gen=true -Dproject.dir=$* diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/bin/propel-gen b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/bin/propel-gen new file mode 100755 index 0000000..11c929f --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/bin/propel-gen @@ -0,0 +1,67 @@ +#!/bin/sh +# Shell wrapper for Propel generator +# $Id$ +# +# This script will do the following: +# - check for PHING_COMMAND env, if found, use it. +# - if not found assume php is on the path +# - check for PROPEL_GEN_HOME evn, if found use it +# - if not look for it + +if [ -z "$PROPEL_GEN_HOME" ] ; then + + # echo "WARNING: PROPEL_GEN_HOME environment not set. Attempting to guess." + + # try to find Propel + if [ -d /opt/propel/generator ] ; then + PROPEL_GEN_HOME=/opt/propel/generator + fi + + if [ -d "${HOME}/opt/propel/generator" ] ; then + PROPEL_GEN_HOME="${HOME}/opt/propel/generator" + fi + + if [ -d "/usr/local/propel/generator" ] ; then + PROPEL_GEN_HOME="/usr/local/propel/generator" + fi + + if [ -d "${HOME}/usr/propel/generator" ] ; then + PROPEL_GEN_HOME="${HOME}/usr/propel/generator" + fi + + ## resolve links - $0 may be a link to phing's home + PRG="$0" + progname=`basename "$0"` + saveddir=`pwd` + + # need this for relative symlinks + dirname_prg=`dirname "$PRG"` + cd "$dirname_prg" + + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi + done + + PROPEL_GEN_HOME=`dirname "$PRG"`/.. + + cd "$saveddir" + + # make it fully qualified + PROPEL_GEN_HOME=`cd "$PROPEL_GEN_HOME" && pwd` + + # make it available in PHP via getenv("PROPEL_GEN_HOME") + export PROPEL_GEN_HOME +fi + +if (test -z "$PHING_COMMAND") ; then + # echo "WARNING: PHING_COMMAND environment not set. (Assuming phing on PATH)" + export PHING_COMMAND="phing" +fi + +$PHING_COMMAND -f $PROPEL_GEN_HOME/build.xml -Dusing.propel-gen=true -Dproject.dir=$* diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/bin/propel-gen.bat b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/bin/propel-gen.bat new file mode 100755 index 0000000..2a25b7a --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/bin/propel-gen.bat @@ -0,0 +1,47 @@ +@echo off + +rem ********************************************************************* +rem ** The Propel generator convenience script for Windows based systems +rem ** $Id$ +rem ********************************************************************* + +rem This script will do the following: +rem - check for PHING_COMMAND env, if found, use it. +rem - if not found detect php, if found use it, otherwise err and terminate +rem - check for PROPEL_GEN_HOME evn, if found use it +rem - if not found error and leave + +if "%OS%"=="Windows_NT" @setlocal + +rem %~dp0 is expanded pathname of the current script under NT +set DEFAULT_PROPEL_GEN_HOME=%~dp0.. + +goto init +goto cleanup + +:init + +if "%PROPEL_GEN_HOME%" == "" set PROPEL_GEN_HOME=%DEFAULT_PROPEL_GEN_HOME% +set DEFAULT_PROPEL_GEN_HOME= + +if "%PHING_COMMAND%" == "" goto no_phingcommand + +goto run +goto cleanup + +:run +%PHING_COMMAND% -f "%PROPEL_GEN_HOME%\build.xml" -Dusing.propel-gen=true -Dproject.dir=%* +goto cleanup + +:no_phingcommand +REM echo ------------------------------------------------------------------------ +REM echo WARNING: Set environment var PHING_COMMAND to the location of your phing +REM echo executable (e.g. C:\PHP\phing.bat). +REM echo Proceeding with assumption that phing.bat is on Path +REM echo ------------------------------------------------------------------------ +set PHING_COMMAND=phing.bat +goto init + +:cleanup +if "%OS%"=="Windows_NT" @endlocal +REM pause diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/build-propel.xml b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/build-propel.xml new file mode 100644 index 0000000..6837c2c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/build-propel.xml @@ -0,0 +1,542 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ATTENTION: It appears you are using PostgreSQL and you have identifier-quoting turned on. + It is suggested that you disable identifier quoting when using PostgreSQL -- especially if you + have case-sensitive columns in your database. + + To disable identifier quoting, add the following property to your build.properties (or specify + it using -D on commandline): + + propel.disableIdentifierQuoting=true + + You can ignore this warning if you understand the issues related to case-sensitivity and Propel's + DDL-only implementation of identifier quoting. + + + + + + + + + + + + ATTENTION: It appears you are using the mysqli driver. + + This driver is no longer supported by Propel because Propel now uses PDO for database connections. + Please use mysqli driver instead. + Use 'mysql' instead of 'mysqli' for your propel.database property. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Output file: ${propel.runtime.phpconf.file} + XMLFile: ${propel.conf.dir}/${propel.runtime.conf.file} + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/build.properties-sample b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/build.properties-sample new file mode 100644 index 0000000..bcb8a2f --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/build.properties-sample @@ -0,0 +1,194 @@ +# ------------------------------------------------------------------- +# +# P R O P E L C O N F I G U R A T I O N F I L E +# +# ------------------------------------------------------------------- +# This file contains some example properties. Ideally properties +# should be specified in the project-specific build.properties file; +# however, this file can be used to specify non-default properties +# that you would like to use accross all of your Propel projects. +# ------------------------------------------------------------------- +# + +propel.home = . + +# ------------------------------------------------------------------- +# +# P R O J E C T +# +# ------------------------------------------------------------------- +# This is the name of your Propel project. The name of your Propel +# project is used (by default) to determine where the generator will +# find needed configuration files and will place resuilting build +# files. E.g. if your project is named 'killerapp', Propel will +# look here for schema.xml and runtime-conf.xml files: +# +# projects/killerapp/ +# +# ------------------------------------------------------------------- + +# You can set this here, but it's preferrable to set this in a +# project-specific build.properties file. +# +# propel.project = bookstore + +# ------------------------------------------------------------------- +# +# T A R G E T D A T A B A S E +# +# ------------------------------------------------------------------- +# This is the target database, only considered when generating +# the SQL for your Propel project. Your possible choices are: +# +# mssql, mysql, oracle, pgsql, sqlite +# ------------------------------------------------------------------- + +# You can set this here, but it's preferrable to set this in a +# project-specific build.properties file. +# +# propel.database = mysql + +# ------------------------------------------------------------------- +# +# O B J E C T M O D E L I N F O R M A T I O N +# +# ------------------------------------------------------------------- +# These settings will allow you to customize the way your +# Peer-based object model is created. +# ------------------------------------------------------------------- +# addGenericAccessors +# If true, Propel adds methods to get database fields by name/position. +# +# addGenericMutators +# If true, Propel adds methods to set database fields by name/position. +# +# addSaveMethod +# If true, Propel adds tracking code to determine how to save objects. +# +# addTimeStamp +# If true, Propel true puts time stamps in phpdoc of generated om files. +# +# basePrefix +# A string to pre-pend to the file names of base data and peer objects. +# +# complexObjectModel +# If true, Propel generates data objects with collection support and +# methods to easily retreive foreign key relationships. +# +# targetPackage +# Sets the PHP "package" the om files will generated to, e.g. +# "com.company.project.om". +# +# targetPlatform +# Sets whether Propel is building classes for php5 (default) +# or php4 (experimental). +# +# packageObjectModel +# Sets whether Propel is packaging ObjectModel fro several +# [package].schema.xml files. The +# attribute has to be set then. (warning: this is experimental!) +# +# ------------------------------------------------------------------- + +# classes will be put in (and included from) this directory +# e.g. if package is "bookstore" then om will expect include('bookstore/Book.php'); to work. +# use dot-path notation -- e.g. my.bookstore -> my/bookstore. +# +propel.targetPackage = ${propel.project} + +propel.addGenericAccessors = false +propel.addGenericMutators = false +propel.addSaveMethod = true +propel.addTimeStamp = true +propel.basePrefix = Base +propel.complexObjectModel = true +propel.targetPlatform = php5 +propel.packageObjectModel = false + +# ------------------------------------------------------------------- +# +# D B C O N N E C T I O N S E T T I N G S +# +# ------------------------------------------------------------------- +# Creole connection settings. These connection settings are used by +# build tagets that perform database operations (e.g. 'insert-sql', +# 'creole'). +# +# You can set them here, but it's preferrable to set these properties +# in a project-specific build.properties file. +# + +# If you want to use a custom driver, specify it below, otherwise +# leave it blank or comment it out to use Creole stock driver. +# +# propel.database.driver = creole.drivers.sqlite.SQLiteConnection + +# Note that if you do not wish to specify the database (e.g. if you +# are using multiple databses) you can use the @DB@ token which +# will be replaced with a database at runtime. +# +# propel.database.url = mysql://root@localhost/bookstore + +# For MySQL or Oracle, you also need to specify username & password +# propel.database.user = [db username] +# propel.database.password = [db password] + +# Use the URL below to specify a DSN to used to create the database. +# Note that this URL should not contain the database name, as you will +# get an error if the database does not exist. +# (This does not apply to SQLite since the databse is automatically created +# when the connection is made -- if it does not already exist.) +# +# propel.database.createUrl = mysql://root@localhost/ + + +# ------------------------------------------------------------------- +# +# C R E O L E TO X M L +# +# ------------------------------------------------------------------- +# These settings only applies to the 'creole' target. +# ------------------------------------------------------------------- +# +# samePhpName +# If true, the Creole task will set the phpName attribute for the +# tables and columns to be the same as SQL name. +# +# addVendorInfo +# If true, the Creole task will add vendor specific information +# to the database schema +# +# addValidators +# Bitfield like option to turn on/off addition of Validator and +# Rule tags to the schema. Uses a boolean syntax like in php.ini. +# Allowed tokens are: +# none add no validators) +# all add all validators) +# maxlength add maxlengths for string type columns) +# maxvalue add maxvalue for numeric columns) +# type add notmatch validators for numeric columns) +# required add required validators for required columns) +# unique add unique validators for unique indexes) +# Allowed operators are: +# & bitwise AND +# | bitwise OR +# ~ bitwise NOT +# +# ------------------------------------------------------------------- + +# propel.samePhpName = false +# propel.addVendorInfo=true +# propel.addValidators=none + + +# ------------------------------------------------------------------- +# +# D A T A B A S E B U I L D C O N F I G +# +# ------------------------------------------------------------------- +# Some databases provide some configuration options that can be set +# in this script. +# +# === MySQL +# propel.mysql.tableType +# Use this property to set the table type of generated tables (e.g. InnoDB, MyISAM). diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/build.xml b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/build.xml new file mode 100644 index 0000000..b2dfcd1 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/build.xml @@ -0,0 +1,188 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Project name + + + + + No project.dir was specified, using default path: ./projects/${project} + + + + + + + + Processing additional properties file: ${additional.properties} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/build.xml-local b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/build.xml-local new file mode 100644 index 0000000..d4d4e4c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/build.xml-local @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/.svn/all-wcprops new file mode 100644 index 0000000..2200967 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 43 +/!svn/ver/1695/tags/1.4.2/generator/classes +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/.svn/entries new file mode 100644 index 0000000..3f273ed --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/.svn/entries @@ -0,0 +1,31 @@ +10 + +dir +2332 +http://propel.mirror.svn.symfony-project.com/tags/1.4.2/generator/classes +http://propel.mirror.svn.symfony-project.com + + + +2010-04-19T21:59:18.421712Z +1690 +francois + + + + + + + + + + + + + + +a84bc4f6-26e8-416f-aa96-3cde13879fbb + +propel +dir + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/.svn/all-wcprops new file mode 100644 index 0000000..4cce80a --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 50 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/.svn/entries new file mode 100644 index 0000000..efea331 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/.svn/entries @@ -0,0 +1,34 @@ +10 + +dir +2332 +http://propel.mirror.svn.symfony-project.com/tags/1.4.2/generator/classes/propel +http://propel.mirror.svn.symfony-project.com + + + +2010-04-19T21:59:18.421712Z +1690 +francois + + + + + + + + + + + + + + +a84bc4f6-26e8-416f-aa96-3cde13879fbb + +engine +dir + +phing +dir + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/.svn/all-wcprops new file mode 100644 index 0000000..17f759f --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 57 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine +END +GeneratorConfig.php +K 25 +svn:wc:ra_dav:version-url +V 77 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/GeneratorConfig.php +END +EngineException.php +K 25 +svn:wc:ra_dav:version-url +V 77 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/EngineException.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/.svn/entries new file mode 100644 index 0000000..ca44ace --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/.svn/entries @@ -0,0 +1,108 @@ +10 + +dir +2332 +http://propel.mirror.svn.symfony-project.com/tags/1.4.2/generator/classes/propel/engine +http://propel.mirror.svn.symfony-project.com + + + +2010-04-19T21:59:18.421712Z +1690 +francois + + + + + + + + + + + + + + +a84bc4f6-26e8-416f-aa96-3cde13879fbb + +behavior +dir + +GeneratorConfig.php +file + + + + +2012-05-10T18:42:16.293552Z +5230c71bca1bdb96963e0c086ffe1ac8 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +6786 + +database +dir + +platform +dir + +builder +dir + +EngineException.php +file + + + + +2012-05-10T18:42:16.305551Z +bd719cafafc7865931205348c2b870c8 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +1432 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/.svn/prop-base/EngineException.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/.svn/prop-base/EngineException.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/.svn/prop-base/EngineException.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/.svn/prop-base/GeneratorConfig.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/.svn/prop-base/GeneratorConfig.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/.svn/prop-base/GeneratorConfig.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/.svn/text-base/EngineException.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/.svn/text-base/EngineException.php.svn-base new file mode 100644 index 0000000..2779f7b --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/.svn/text-base/EngineException.php.svn-base @@ -0,0 +1,33 @@ +. + */ + +require_once 'phing/BuildException.php'; + +/** + * The base class of all exceptions thrown by the engine. + * + * @author Hans Lellelid (Propel) + * @author Daniel Rall (Torque) + * @author Jason van Zyl (Torque) + * @version $Revision$ + * @package propel.engine + */ +class EngineException extends BuildException {} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/.svn/text-base/GeneratorConfig.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/.svn/text-base/GeneratorConfig.php.svn-base new file mode 100644 index 0000000..4a5c526 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/.svn/text-base/GeneratorConfig.php.svn-base @@ -0,0 +1,229 @@ +. + */ + +/** + * A class that holds build properties and provide a class loading mechanism for the generator. + * + * @author Hans Lellelid + * @package propel.engine + */ +class GeneratorConfig { + + /** + * The build properties. + * + * @var array + */ + private $buildProperties = array(); + + /** + * Construct a new GeneratorConfig. + * @param mixed $props Array or Iterator + */ + public function __construct($props = null) + { + if ($props) $this->setBuildProperties($props); + } + + /** + * Gets the build properties. + * @return array + */ + public function getBuildProperties() + { + return $this->buildProperties; + } + + /** + * Parses the passed-in properties, renaming and saving eligible properties in this object. + * + * Renames the propel.xxx properties to just xxx and renames any xxx.yyy properties + * to xxxYyy as PHP doesn't like the xxx.yyy syntax. + * + * @param mixed $props Array or Iterator + */ + public function setBuildProperties($props) + { + $this->buildProperties = array(); + + $renamedPropelProps = array(); + foreach ($props as $key => $propValue) { + if (strpos($key, "propel.") === 0) { + $newKey = substr($key, strlen("propel.")); + $j = strpos($newKey, '.'); + while ($j !== false) { + $newKey = substr($newKey, 0, $j) . ucfirst(substr($newKey, $j + 1)); + $j = strpos($newKey, '.'); + } + $this->setBuildProperty($newKey, $propValue); + } + } + } + + /** + * Gets a specific propel (renamed) property from the build. + * + * @param string $name + * @return mixed + */ + public function getBuildProperty($name) + { + return isset($this->buildProperties[$name]) ? $this->buildProperties[$name] : null; + } + + /** + * Sets a specific propel (renamed) property from the build. + * + * @param string $name + * @param mixed $value + */ + public function setBuildProperty($name, $value) + { + $this->buildProperties[$name] = $value; + } + + /** + * Resolves and returns the class name based on the specified property value. + * + * @param string $propname The name of the property that holds the class path (dot-path notation). + * @return string The class name. + * @throws BuildException If the classname cannot be determined or class cannot be loaded. + */ + public function getClassname($propname) + { + $classpath = $this->getBuildProperty($propname); + if (empty($classpath)) { + throw new BuildException("Unable to find class path for '$propname' property."); + } + + // This is a slight hack to workaround camel case inconsistencies for the DDL classes. + // Basically, we want to turn ?.?.?.sqliteDDLBuilder into ?.?.?.SqliteDDLBuilder + $lastdotpos = strrpos($classpath, '.'); + if ($lastdotpos !== null) { + $classpath{$lastdotpos+1} = strtoupper($classpath{$lastdotpos+1}); + } else { + $classpath = ucfirst($classpath); + } + + if (empty($classpath)) { + throw new BuildException("Unable to find class path for '$propname' property."); + } + + $clazz = Phing::import($classpath); + + return $clazz; + } + + /** + * Resolves and returns the builder class name. + * + * @param string $type + * @return string The class name. + */ + public function getBuilderClassname($type) + { + $propname = 'builder' . ucfirst(strtolower($type)) . 'Class'; + return $this->getClassname($propname); + } + + /** + * Creates and configures a new Platform class. + * + * @param PDO $con + * @return Platform + */ + public function getConfiguredPlatform(PDO $con = null) + { + $clazz = $this->getClassname("platformClass"); + $platform = new $clazz(); + + if (!$platform instanceof Platform) { + throw new BuildException("Specified platform class ($clazz) does not implement Platform interface.", $this->getLocation()); + } + + $platform->setConnection($con); + $platform->setGeneratorConfig($this); + return $platform; + } + + /** + * Creates and configures a new SchemaParser class for specified platform. + * @param PDO $con + * @return SchemaParser + */ + public function getConfiguredSchemaParser(PDO $con = null) + { + $clazz = $this->getClassname("reverseParserClass"); + $parser = new $clazz(); + if (!$parser instanceof SchemaParser) { + throw new BuildException("Specified platform class ($clazz) does implement SchemaParser interface.", $this->getLocation()); + } + $parser->setConnection($con); + $parser->setGeneratorConfig($this); + return $parser; + } + + /** + * Gets a configured data model builder class for specified table and based on type. + * + * @param Table $table + * @param string $type The type of builder ('ddl', 'sql', etc.) + * @return DataModelBuilder + */ + public function getConfiguredBuilder(Table $table, $type, $cache = true) + { + $classname = $this->getBuilderClassname($type); + $builder = new $classname($table); + $builder->setGeneratorConfig($this); + return $builder; + } + + /** + * Gets a configured Pluralizer class. + * + * @return Pluralizer + */ + public function getConfiguredPluralizer() + { + $classname = $this->getBuilderClassname('pluralizer'); + $pluralizer = new $classname(); + return $pluralizer; + } + + /** + * Gets a configured behavior class + * + * @param string $name a behavior name + * @return string a behavior class name + */ + public function getConfiguredBehavior($name) + { + $propname = 'behavior' . ucfirst(strtolower($name)) . 'Class'; + try { + $ret = $this->getClassname($propname); + } catch (BuildException $e) { + // class path not configured + $ret = false; + } + return $ret; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/EngineException.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/EngineException.php new file mode 100644 index 0000000..224c34b --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/EngineException.php @@ -0,0 +1,33 @@ +. + */ + +require_once 'phing/BuildException.php'; + +/** + * The base class of all exceptions thrown by the engine. + * + * @author Hans Lellelid (Propel) + * @author Daniel Rall (Torque) + * @author Jason van Zyl (Torque) + * @version $Revision: 1262 $ + * @package propel.engine + */ +class EngineException extends BuildException {} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/GeneratorConfig.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/GeneratorConfig.php new file mode 100644 index 0000000..d50c1c8 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/GeneratorConfig.php @@ -0,0 +1,229 @@ +. + */ + +/** + * A class that holds build properties and provide a class loading mechanism for the generator. + * + * @author Hans Lellelid + * @package propel.engine + */ +class GeneratorConfig { + + /** + * The build properties. + * + * @var array + */ + private $buildProperties = array(); + + /** + * Construct a new GeneratorConfig. + * @param mixed $props Array or Iterator + */ + public function __construct($props = null) + { + if ($props) $this->setBuildProperties($props); + } + + /** + * Gets the build properties. + * @return array + */ + public function getBuildProperties() + { + return $this->buildProperties; + } + + /** + * Parses the passed-in properties, renaming and saving eligible properties in this object. + * + * Renames the propel.xxx properties to just xxx and renames any xxx.yyy properties + * to xxxYyy as PHP doesn't like the xxx.yyy syntax. + * + * @param mixed $props Array or Iterator + */ + public function setBuildProperties($props) + { + $this->buildProperties = array(); + + $renamedPropelProps = array(); + foreach ($props as $key => $propValue) { + if (strpos($key, "propel.") === 0) { + $newKey = substr($key, strlen("propel.")); + $j = strpos($newKey, '.'); + while ($j !== false) { + $newKey = substr($newKey, 0, $j) . ucfirst(substr($newKey, $j + 1)); + $j = strpos($newKey, '.'); + } + $this->setBuildProperty($newKey, $propValue); + } + } + } + + /** + * Gets a specific propel (renamed) property from the build. + * + * @param string $name + * @return mixed + */ + public function getBuildProperty($name) + { + return isset($this->buildProperties[$name]) ? $this->buildProperties[$name] : null; + } + + /** + * Sets a specific propel (renamed) property from the build. + * + * @param string $name + * @param mixed $value + */ + public function setBuildProperty($name, $value) + { + $this->buildProperties[$name] = $value; + } + + /** + * Resolves and returns the class name based on the specified property value. + * + * @param string $propname The name of the property that holds the class path (dot-path notation). + * @return string The class name. + * @throws BuildException If the classname cannot be determined or class cannot be loaded. + */ + public function getClassname($propname) + { + $classpath = $this->getBuildProperty($propname); + if (empty($classpath)) { + throw new BuildException("Unable to find class path for '$propname' property."); + } + + // This is a slight hack to workaround camel case inconsistencies for the DDL classes. + // Basically, we want to turn ?.?.?.sqliteDDLBuilder into ?.?.?.SqliteDDLBuilder + $lastdotpos = strrpos($classpath, '.'); + if ($lastdotpos !== null) { + $classpath{$lastdotpos+1} = strtoupper($classpath{$lastdotpos+1}); + } else { + $classpath = ucfirst($classpath); + } + + if (empty($classpath)) { + throw new BuildException("Unable to find class path for '$propname' property."); + } + + $clazz = Phing::import($classpath); + + return $clazz; + } + + /** + * Resolves and returns the builder class name. + * + * @param string $type + * @return string The class name. + */ + public function getBuilderClassname($type) + { + $propname = 'builder' . ucfirst(strtolower($type)) . 'Class'; + return $this->getClassname($propname); + } + + /** + * Creates and configures a new Platform class. + * + * @param PDO $con + * @return Platform + */ + public function getConfiguredPlatform(PDO $con = null) + { + $clazz = $this->getClassname("platformClass"); + $platform = new $clazz(); + + if (!$platform instanceof Platform) { + throw new BuildException("Specified platform class ($clazz) does not implement Platform interface.", $this->getLocation()); + } + + $platform->setConnection($con); + $platform->setGeneratorConfig($this); + return $platform; + } + + /** + * Creates and configures a new SchemaParser class for specified platform. + * @param PDO $con + * @return SchemaParser + */ + public function getConfiguredSchemaParser(PDO $con = null) + { + $clazz = $this->getClassname("reverseParserClass"); + $parser = new $clazz(); + if (!$parser instanceof SchemaParser) { + throw new BuildException("Specified platform class ($clazz) does implement SchemaParser interface.", $this->getLocation()); + } + $parser->setConnection($con); + $parser->setGeneratorConfig($this); + return $parser; + } + + /** + * Gets a configured data model builder class for specified table and based on type. + * + * @param Table $table + * @param string $type The type of builder ('ddl', 'sql', etc.) + * @return DataModelBuilder + */ + public function getConfiguredBuilder(Table $table, $type, $cache = true) + { + $classname = $this->getBuilderClassname($type); + $builder = new $classname($table); + $builder->setGeneratorConfig($this); + return $builder; + } + + /** + * Gets a configured Pluralizer class. + * + * @return Pluralizer + */ + public function getConfiguredPluralizer() + { + $classname = $this->getBuilderClassname('pluralizer'); + $pluralizer = new $classname(); + return $pluralizer; + } + + /** + * Gets a configured behavior class + * + * @param string $name a behavior name + * @return string a behavior class name + */ + public function getConfiguredBehavior($name) + { + $propname = 'behavior' . ucfirst(strtolower($name)) . 'Class'; + try { + $ret = $this->getClassname($propname); + } catch (BuildException $e) { + // class path not configured + $ret = false; + } + return $ret; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/.svn/all-wcprops new file mode 100644 index 0000000..2aacb6b --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/.svn/all-wcprops @@ -0,0 +1,29 @@ +K 25 +svn:wc:ra_dav:version-url +V 66 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/behavior +END +AutoAddPkBehavior.php +K 25 +svn:wc:ra_dav:version-url +V 88 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/behavior/AutoAddPkBehavior.php +END +SoftDeleteBehavior.php +K 25 +svn:wc:ra_dav:version-url +V 89 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/behavior/SoftDeleteBehavior.php +END +AlternativeCodingStandardsBehavior.php +K 25 +svn:wc:ra_dav:version-url +V 105 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/behavior/AlternativeCodingStandardsBehavior.php +END +TimestampableBehavior.php +K 25 +svn:wc:ra_dav:version-url +V 92 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/behavior/TimestampableBehavior.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/.svn/entries new file mode 100644 index 0000000..b31e17c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/.svn/entries @@ -0,0 +1,164 @@ +10 + +dir +2332 +http://propel.mirror.svn.symfony-project.com/tags/1.4.2/generator/classes/propel/engine/behavior +http://propel.mirror.svn.symfony-project.com + + + +2010-03-25T22:10:53.561739Z +1638 +francois + + + + + + + + + + + + + + +a84bc4f6-26e8-416f-aa96-3cde13879fbb + +AutoAddPkBehavior.php +file + + + + +2012-05-10T18:42:14.713548Z +aedf64fd8b036e4b8f8157511a52b87d +2009-10-30T22:51:21.258043Z +1268 +francois +has-props + + + + + + + + + + + + + + + + + + + + +2053 + +SoftDeleteBehavior.php +file + + + + +2012-05-10T18:42:14.713548Z +73c39106228f49129726887f230de126 +2010-03-25T22:10:53.561739Z +1638 +francois +has-props + + + + + + + + + + + + + + + + + + + + +8396 + +AlternativeCodingStandardsBehavior.php +file + + + + +2012-05-10T18:42:14.713548Z +1efa418b1a945987fd4d927c4d7881f1 +2009-11-25T21:15:41.643653Z +1328 +francois +has-props + + + + + + + + + + + + + + + + + + + + +3689 + +TimestampableBehavior.php +file + + + + +2012-05-10T18:42:14.805551Z +a00c86e3e974b77166d218118711dec8 +2009-10-31T12:50:34.133480Z +1278 +francois +has-props + + + + + + + + + + + + + + + + + + + + +2830 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/.svn/prop-base/AlternativeCodingStandardsBehavior.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/.svn/prop-base/AlternativeCodingStandardsBehavior.php.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/.svn/prop-base/AlternativeCodingStandardsBehavior.php.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/.svn/prop-base/AutoAddPkBehavior.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/.svn/prop-base/AutoAddPkBehavior.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/.svn/prop-base/AutoAddPkBehavior.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/.svn/prop-base/SoftDeleteBehavior.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/.svn/prop-base/SoftDeleteBehavior.php.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/.svn/prop-base/SoftDeleteBehavior.php.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/.svn/prop-base/TimestampableBehavior.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/.svn/prop-base/TimestampableBehavior.php.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/.svn/prop-base/TimestampableBehavior.php.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/.svn/text-base/AlternativeCodingStandardsBehavior.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/.svn/text-base/AlternativeCodingStandardsBehavior.php.svn-base new file mode 100644 index 0000000..aaa9863 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/.svn/text-base/AlternativeCodingStandardsBehavior.php.svn-base @@ -0,0 +1,135 @@ +. + */ + +/** + * Changes the coding standard of Propel generated Model classes + * - Opening brackets always use newline, e.g. + * if ($foo) { + * ... + * } else { + * ... + * } + * Becomes: + * if ($foo) + * { + * ... + * } + * else + * { + * ... + * } + * - closing comments are removed, e.g. + * } // save() + * Becomes: + * } + * - tabs are replaced by 2 whitespaces + * - comments are stripped (optional) + * + * @author François Zaninotto + * @version $Revision: 1066 $ + * @package propel.engine.behavior + */ +class AlternativeCodingStandardsBehavior extends Behavior +{ + // default parameters value + protected $parameters = array( + 'brackets_newline' => 'true', + 'remove_closing_comments' => 'true', + 'use_whitespace' => 'true', + 'tab_size' => 2, + 'strip_comments' => 'false' + ); + + public function objectFilter(&$script) + { + return $this->filter($script); + } + + public function extensionObjectFilter(&$script) + { + return $this->filter($script); + } + + public function peerFilter(&$script) + { + return $this->filter($script); + } + + public function extensionPeerFilter(&$script) + { + return $this->filter($script); + } + + public function tableMapFilter(&$script) + { + return $this->filter($script); + } + + /** + * Transform the coding standards of a PHP sourcecode string + * + * @param string $script A script string to be filtered, passed as reference + */ + protected function filter(&$script) + { + $filter = array(); + if($this->getParameter('brackets_newline') == 'true') { + $filter['#^(\t*)\}\h(else|elseif|catch)(.*)\h\{$#m'] = "$1} +$1$2$3 +$1{"; + $filter['#^(\t*)(\w.*)\h\{$#m'] = "$1$2 +$1{"; + } + if ($this->getParameter('remove_closing_comments') == 'true') { + $filter['#^(\t*)} //.*$#m'] = "$1}"; + } + if ($this->getParameter('use_whitespace') == 'true') { + $filter['#\t#'] = str_repeat(' ', $this->getParameter('tab_size')); + } + + $script = preg_replace(array_keys($filter), array_values($filter), $script); + + if ($this->getParameter('strip_comments') == 'true') { + $script = self::stripComments($script); + } + } + + /** + * Remove inline and codeblock comments from a PHP code string + * @param string $code The input code + * @return string The input code, without comments + */ + public static function stripComments($code) + { + $output = ''; + $commentTokens = array(T_COMMENT, T_DOC_COMMENT); + foreach (token_get_all($code) as $token) { + if (is_array($token)) { + if (in_array($token[0], $commentTokens)) continue; + $token = $token[1]; + } + $output .= $token; + } + + return $output; + } +} \ No newline at end of file diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/.svn/text-base/AutoAddPkBehavior.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/.svn/text-base/AutoAddPkBehavior.php.svn-base new file mode 100644 index 0000000..772da21 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/.svn/text-base/AutoAddPkBehavior.php.svn-base @@ -0,0 +1,66 @@ +. + */ + +/** + * Adds a primary key to models defined without one + * + * @author François Zaninotto + * @version $Revision: 1066 $ + * @package propel.engine.behavior + */ +class AutoAddPkBehavior extends Behavior +{ + // default parameters value + protected $parameters = array( + 'name' => 'id', + 'autoIncrement' => 'true', + 'type' => 'INTEGER' + ); + + /** + * Copy the behavior to the database tables + * Only for tables that have no Pk + */ + public function modifyDatabase() + { + foreach ($this->getDatabase()->getTables() as $table) + { + if(!$table->hasPrimaryKey()) + { + $b = clone $this; + $table->addBehavior($b); + } + } + } + + /** + * Add the primary key to the current table + */ + public function modifyTable() + { + if (!$this->getTable()->hasPrimaryKey()) + { + $columnAttributes = array_merge(array('primaryKey' => 'true'), $this->getParameters()); + $this->getTable()->addColumn($columnAttributes); + } + } +} \ No newline at end of file diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/.svn/text-base/SoftDeleteBehavior.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/.svn/text-base/SoftDeleteBehavior.php.svn-base new file mode 100644 index 0000000..c85f2fc --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/.svn/text-base/SoftDeleteBehavior.php.svn-base @@ -0,0 +1,259 @@ +. + */ + +/** + * Gives a model class the ability to remain in database even when the user deletes object + * Uses an additional column storing the deletion date + * And an additional condition for every read query to only consider rows with no deletion date + * + * @author François Zaninotto + * @version $Revision: 1066 $ + * @package propel.engine.behavior + */ +class SoftDeleteBehavior extends Behavior +{ + // default parameters value + protected $parameters = array( + 'add_columns' => 'true', + 'deleted_column' => 'deleted_at', + ); + + /** + * Add the deleted_column to the current table + */ + public function modifyTable() + { + if ($this->getParameter('add_columns') == 'true') + { + $this->getTable()->addColumn(array( + 'name' => $this->getParameter('deleted_column'), + 'type' => 'TIMESTAMP' + )); + } + } + + protected function getColumnSetter() + { + return 'set' . $this->getColumnForParameter('deleted_column')->getPhpName(); + } + + public function preDelete() + { + return <<getTable()->getPhpName()}Peer::isSoftDeleteEnabled()) { + \$this->{$this->getColumnSetter()}(time()); + \$this->save(); + \$con->commit(); + return; +} +EOT; + } + + public function preSelect() + { + return <<getTable()->getPhpName()}Peer::isSoftDeleteEnabled()) { + \$criteria->add({$this->getColumnForParameter('deleted_column')->getConstantName()}, null, Criteria::ISNULL); +} else { + {$this->getTable()->getPhpName()}Peer::enableSoftDelete(); +} +EOT; + } + + public function objectMethods() + { + return <<getTable()->getPhpName()}Peer::disableSoftDelete(); + \$this->delete(\$con); +} + +/** + * Undelete a row that was soft_deleted + * + * @return int The number of rows affected by this update and any referring fk objects' save() operations. + */ +public function unDelete(PropelPDO \$con = null) +{ + \$this->{$this->getColumnSetter()}(null); + return \$this->save(\$con); +} +EOT; + } + + public function staticAttributes() + { + return "protected static \$softDelete = true; +"; + } + + public function staticMethods() + { + $script = " + +/** + * Enable the soft_delete behavior for this model + */ +public static function enableSoftDelete() +{ + self::\$softDelete = true; +} + +/** + * Disable the soft_delete behavior for this model + */ +public static function disableSoftDelete() +{ + self::\$softDelete = false; +} + +/** + * Check the soft_delete behavior for this model + * @return boolean true if the soft_delete behavior is enabled + */ +public static function isSoftDeleteEnabled() +{ + return self::\$softDelete; +} +"; + + $script .= " +/** + * Soft delete records, given a {$this->getTable()->getPhpName()} or Criteria object OR a primary key value. + * + * @param mixed \$values Criteria or {$this->getTable()->getPhpName()} object or primary key or array of primary keys + * which is used to create the DELETE statement + * @param PropelPDO \$con the connection to use + * @return int The number of affected rows (if supported by underlying database driver). + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ +public static function doSoftDelete(\$values, PropelPDO \$con = null) +{ + if (\$values instanceof Criteria) { + // rename for clarity + \$criteria = clone \$values; + } elseif (\$values instanceof {$this->getTable()->getPhpName()}) { + // create criteria based on pk values + \$criteria = \$values->buildPkeyCriteria(); + } else { + // it must be the primary key + \$criteria = new Criteria(self::DATABASE_NAME);"; + $pks = $this->getTable()->getPrimaryKey(); + if (count($pks)>1) { + $i = 0; + foreach ($pks as $col) { + $script .= " + \$criteria->add({$col->getConstantName()}, \$values[$i], Criteria::EQUAL);"; + $i++; + } + } else { + $col = $pks[0]; + $script .= " + \$criteria->add({$col->getConstantName()}, (array) \$values, Criteria::IN);"; + } + $script .= " + } + \$criteria->add({$this->getColumnForParameter('deleted_column')->getConstantName()}, time()); + return {$this->getTable()->getPhpName()}Peer::doUpdate(\$criteria, \$con); +} + +/** + * Delete or soft delete records, depending on {$this->getTable()->getPhpName()}Peer::\$softDelete + * + * @param mixed \$values Criteria or {$this->getTable()->getPhpName()} object or primary key or array of primary keys + * which is used to create the DELETE statement + * @param PropelPDO \$con the connection to use + * @return int The number of affected rows (if supported by underlying database driver). + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ +public static function doDelete2(\$values, PropelPDO \$con = null) +{ + if ({$this->getTable()->getPhpName()}Peer::isSoftDeleteEnabled()) { + return {$this->getTable()->getPhpName()}Peer::doSoftDelete(\$values, \$con); + } else { + return {$this->getTable()->getPhpName()}Peer::doForceDelete(\$values, \$con); + } +} + +/** + * Method to soft delete all rows from the {$this->getTable()->getName()} table. + * + * @param PropelPDO \$con the connection to use + * @return int The number of affected rows (if supported by underlying database driver). + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ +public static function doSoftDeleteAll(PropelPDO \$con = null) +{ + if (\$con === null) { + \$con = Propel::getConnection({$this->getTable()->getPhpName()}Peer::DATABASE_NAME, Propel::CONNECTION_WRITE); + } + \$selectCriteria = new Criteria(); + \$selectCriteria->add({$this->getColumnForParameter('deleted_column')->getConstantName()}, null, Criteria::ISNULL); + \$selectCriteria->setDbName({$this->getTable()->getPhpName()}Peer::DATABASE_NAME); + \$modifyCriteria = new Criteria(); + \$modifyCriteria->add({$this->getColumnForParameter('deleted_column')->getConstantName()}, time()); + return BasePeer::doUpdate(\$selectCriteria, \$modifyCriteria, \$con); +} + +/** + * Delete or soft delete all records, depending on {$this->getTable()->getPhpName()}Peer::\$softDelete + * + * @param PropelPDO \$con the connection to use + * @return int The number of affected rows (if supported by underlying database driver). + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ +public static function doDeleteAll2(PropelPDO \$con = null) +{ + if ({$this->getTable()->getPhpName()}Peer::isSoftDeleteEnabled()) { + return {$this->getTable()->getPhpName()}Peer::doSoftDeleteAll(\$con); + } else { + return {$this->getTable()->getPhpName()}Peer::doForceDeleteAll(\$con); + } +} +"; + return $script; + } + + public function peerFilter(&$script) + { + $script = str_replace(array( + 'public static function doDelete(', + 'public static function doDelete2(', + 'public static function doDeleteAll(', + 'public static function doDeleteAll2(' + ), array( + 'public static function doForceDelete(', + 'public static function doDelete(', + 'public static function doForceDeleteAll(', + 'public static function doDeleteAll(' + ), $script); + } +} \ No newline at end of file diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/.svn/text-base/TimestampableBehavior.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/.svn/text-base/TimestampableBehavior.php.svn-base new file mode 100644 index 0000000..d8dd924 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/.svn/text-base/TimestampableBehavior.php.svn-base @@ -0,0 +1,88 @@ +. + */ + +/** + * Gives a model class the ability to track creation and last modification dates + * Uses two additional columns storing the creation and update date + * + * @author François Zaninotto + * @version $Revision: 1066 $ + * @package propel.engine.behavior + */ +class TimestampableBehavior extends Behavior +{ + // default parameters value + protected $parameters = array( + 'add_columns' => 'true', + 'create_column' => 'created_at', + 'update_column' => 'updated_at' + ); + + /** + * Add the create_column and update_columns to the current table + */ + public function modifyTable() + { + if ($this->getParameter('add_columns') == 'true') + { + $this->getTable()->addColumn(array( + 'name' => $this->getParameter('create_column'), + 'type' => 'TIMESTAMP' + )); + $this->getTable()->addColumn(array( + 'name' => $this->getParameter('update_column'), + 'type' => 'TIMESTAMP' + )); + } + } + + /** + * Get the setter of one of the columns of the behavior + * + * @param string $column One of the behavior colums, 'create_column' or 'update_column' + * @return string The related setter, 'setCreatedOn' or 'setUpdatedOn' + */ + protected function getColumnSetter($column) + { + return 'set' . $this->getColumnForParameter($column)->getPhpName(); + } + + /** + * Add code in ObjectBuilder::preSave + * + * @return string The code to put at the hook + */ + public function preSave() + { + return "\$this->" . $this->getColumnSetter('update_column') . "(time());"; + } + + /** + * Add code in ObjectBuilder::preInsert + * + * @return string The code to put at the hook + */ + public function preInsert() + { + return "\$this->" . $this->getColumnSetter('create_column') . "(time());"; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/AlternativeCodingStandardsBehavior.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/AlternativeCodingStandardsBehavior.php new file mode 100644 index 0000000..aaa9863 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/AlternativeCodingStandardsBehavior.php @@ -0,0 +1,135 @@ +. + */ + +/** + * Changes the coding standard of Propel generated Model classes + * - Opening brackets always use newline, e.g. + * if ($foo) { + * ... + * } else { + * ... + * } + * Becomes: + * if ($foo) + * { + * ... + * } + * else + * { + * ... + * } + * - closing comments are removed, e.g. + * } // save() + * Becomes: + * } + * - tabs are replaced by 2 whitespaces + * - comments are stripped (optional) + * + * @author François Zaninotto + * @version $Revision: 1066 $ + * @package propel.engine.behavior + */ +class AlternativeCodingStandardsBehavior extends Behavior +{ + // default parameters value + protected $parameters = array( + 'brackets_newline' => 'true', + 'remove_closing_comments' => 'true', + 'use_whitespace' => 'true', + 'tab_size' => 2, + 'strip_comments' => 'false' + ); + + public function objectFilter(&$script) + { + return $this->filter($script); + } + + public function extensionObjectFilter(&$script) + { + return $this->filter($script); + } + + public function peerFilter(&$script) + { + return $this->filter($script); + } + + public function extensionPeerFilter(&$script) + { + return $this->filter($script); + } + + public function tableMapFilter(&$script) + { + return $this->filter($script); + } + + /** + * Transform the coding standards of a PHP sourcecode string + * + * @param string $script A script string to be filtered, passed as reference + */ + protected function filter(&$script) + { + $filter = array(); + if($this->getParameter('brackets_newline') == 'true') { + $filter['#^(\t*)\}\h(else|elseif|catch)(.*)\h\{$#m'] = "$1} +$1$2$3 +$1{"; + $filter['#^(\t*)(\w.*)\h\{$#m'] = "$1$2 +$1{"; + } + if ($this->getParameter('remove_closing_comments') == 'true') { + $filter['#^(\t*)} //.*$#m'] = "$1}"; + } + if ($this->getParameter('use_whitespace') == 'true') { + $filter['#\t#'] = str_repeat(' ', $this->getParameter('tab_size')); + } + + $script = preg_replace(array_keys($filter), array_values($filter), $script); + + if ($this->getParameter('strip_comments') == 'true') { + $script = self::stripComments($script); + } + } + + /** + * Remove inline and codeblock comments from a PHP code string + * @param string $code The input code + * @return string The input code, without comments + */ + public static function stripComments($code) + { + $output = ''; + $commentTokens = array(T_COMMENT, T_DOC_COMMENT); + foreach (token_get_all($code) as $token) { + if (is_array($token)) { + if (in_array($token[0], $commentTokens)) continue; + $token = $token[1]; + } + $output .= $token; + } + + return $output; + } +} \ No newline at end of file diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/AutoAddPkBehavior.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/AutoAddPkBehavior.php new file mode 100644 index 0000000..580d27e --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/AutoAddPkBehavior.php @@ -0,0 +1,66 @@ +. + */ + +/** + * Adds a primary key to models defined without one + * + * @author François Zaninotto + * @version $Revision: 1066 $ + * @package propel.engine.behavior + */ +class AutoAddPkBehavior extends Behavior +{ + // default parameters value + protected $parameters = array( + 'name' => 'id', + 'autoIncrement' => 'true', + 'type' => 'INTEGER' + ); + + /** + * Copy the behavior to the database tables + * Only for tables that have no Pk + */ + public function modifyDatabase() + { + foreach ($this->getDatabase()->getTables() as $table) + { + if(!$table->hasPrimaryKey()) + { + $b = clone $this; + $table->addBehavior($b); + } + } + } + + /** + * Add the primary key to the current table + */ + public function modifyTable() + { + if (!$this->getTable()->hasPrimaryKey()) + { + $columnAttributes = array_merge(array('primaryKey' => 'true'), $this->getParameters()); + $this->getTable()->addColumn($columnAttributes); + } + } +} \ No newline at end of file diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/SoftDeleteBehavior.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/SoftDeleteBehavior.php new file mode 100644 index 0000000..c85f2fc --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/SoftDeleteBehavior.php @@ -0,0 +1,259 @@ +. + */ + +/** + * Gives a model class the ability to remain in database even when the user deletes object + * Uses an additional column storing the deletion date + * And an additional condition for every read query to only consider rows with no deletion date + * + * @author François Zaninotto + * @version $Revision: 1066 $ + * @package propel.engine.behavior + */ +class SoftDeleteBehavior extends Behavior +{ + // default parameters value + protected $parameters = array( + 'add_columns' => 'true', + 'deleted_column' => 'deleted_at', + ); + + /** + * Add the deleted_column to the current table + */ + public function modifyTable() + { + if ($this->getParameter('add_columns') == 'true') + { + $this->getTable()->addColumn(array( + 'name' => $this->getParameter('deleted_column'), + 'type' => 'TIMESTAMP' + )); + } + } + + protected function getColumnSetter() + { + return 'set' . $this->getColumnForParameter('deleted_column')->getPhpName(); + } + + public function preDelete() + { + return <<getTable()->getPhpName()}Peer::isSoftDeleteEnabled()) { + \$this->{$this->getColumnSetter()}(time()); + \$this->save(); + \$con->commit(); + return; +} +EOT; + } + + public function preSelect() + { + return <<getTable()->getPhpName()}Peer::isSoftDeleteEnabled()) { + \$criteria->add({$this->getColumnForParameter('deleted_column')->getConstantName()}, null, Criteria::ISNULL); +} else { + {$this->getTable()->getPhpName()}Peer::enableSoftDelete(); +} +EOT; + } + + public function objectMethods() + { + return <<getTable()->getPhpName()}Peer::disableSoftDelete(); + \$this->delete(\$con); +} + +/** + * Undelete a row that was soft_deleted + * + * @return int The number of rows affected by this update and any referring fk objects' save() operations. + */ +public function unDelete(PropelPDO \$con = null) +{ + \$this->{$this->getColumnSetter()}(null); + return \$this->save(\$con); +} +EOT; + } + + public function staticAttributes() + { + return "protected static \$softDelete = true; +"; + } + + public function staticMethods() + { + $script = " + +/** + * Enable the soft_delete behavior for this model + */ +public static function enableSoftDelete() +{ + self::\$softDelete = true; +} + +/** + * Disable the soft_delete behavior for this model + */ +public static function disableSoftDelete() +{ + self::\$softDelete = false; +} + +/** + * Check the soft_delete behavior for this model + * @return boolean true if the soft_delete behavior is enabled + */ +public static function isSoftDeleteEnabled() +{ + return self::\$softDelete; +} +"; + + $script .= " +/** + * Soft delete records, given a {$this->getTable()->getPhpName()} or Criteria object OR a primary key value. + * + * @param mixed \$values Criteria or {$this->getTable()->getPhpName()} object or primary key or array of primary keys + * which is used to create the DELETE statement + * @param PropelPDO \$con the connection to use + * @return int The number of affected rows (if supported by underlying database driver). + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ +public static function doSoftDelete(\$values, PropelPDO \$con = null) +{ + if (\$values instanceof Criteria) { + // rename for clarity + \$criteria = clone \$values; + } elseif (\$values instanceof {$this->getTable()->getPhpName()}) { + // create criteria based on pk values + \$criteria = \$values->buildPkeyCriteria(); + } else { + // it must be the primary key + \$criteria = new Criteria(self::DATABASE_NAME);"; + $pks = $this->getTable()->getPrimaryKey(); + if (count($pks)>1) { + $i = 0; + foreach ($pks as $col) { + $script .= " + \$criteria->add({$col->getConstantName()}, \$values[$i], Criteria::EQUAL);"; + $i++; + } + } else { + $col = $pks[0]; + $script .= " + \$criteria->add({$col->getConstantName()}, (array) \$values, Criteria::IN);"; + } + $script .= " + } + \$criteria->add({$this->getColumnForParameter('deleted_column')->getConstantName()}, time()); + return {$this->getTable()->getPhpName()}Peer::doUpdate(\$criteria, \$con); +} + +/** + * Delete or soft delete records, depending on {$this->getTable()->getPhpName()}Peer::\$softDelete + * + * @param mixed \$values Criteria or {$this->getTable()->getPhpName()} object or primary key or array of primary keys + * which is used to create the DELETE statement + * @param PropelPDO \$con the connection to use + * @return int The number of affected rows (if supported by underlying database driver). + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ +public static function doDelete2(\$values, PropelPDO \$con = null) +{ + if ({$this->getTable()->getPhpName()}Peer::isSoftDeleteEnabled()) { + return {$this->getTable()->getPhpName()}Peer::doSoftDelete(\$values, \$con); + } else { + return {$this->getTable()->getPhpName()}Peer::doForceDelete(\$values, \$con); + } +} + +/** + * Method to soft delete all rows from the {$this->getTable()->getName()} table. + * + * @param PropelPDO \$con the connection to use + * @return int The number of affected rows (if supported by underlying database driver). + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ +public static function doSoftDeleteAll(PropelPDO \$con = null) +{ + if (\$con === null) { + \$con = Propel::getConnection({$this->getTable()->getPhpName()}Peer::DATABASE_NAME, Propel::CONNECTION_WRITE); + } + \$selectCriteria = new Criteria(); + \$selectCriteria->add({$this->getColumnForParameter('deleted_column')->getConstantName()}, null, Criteria::ISNULL); + \$selectCriteria->setDbName({$this->getTable()->getPhpName()}Peer::DATABASE_NAME); + \$modifyCriteria = new Criteria(); + \$modifyCriteria->add({$this->getColumnForParameter('deleted_column')->getConstantName()}, time()); + return BasePeer::doUpdate(\$selectCriteria, \$modifyCriteria, \$con); +} + +/** + * Delete or soft delete all records, depending on {$this->getTable()->getPhpName()}Peer::\$softDelete + * + * @param PropelPDO \$con the connection to use + * @return int The number of affected rows (if supported by underlying database driver). + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ +public static function doDeleteAll2(PropelPDO \$con = null) +{ + if ({$this->getTable()->getPhpName()}Peer::isSoftDeleteEnabled()) { + return {$this->getTable()->getPhpName()}Peer::doSoftDeleteAll(\$con); + } else { + return {$this->getTable()->getPhpName()}Peer::doForceDeleteAll(\$con); + } +} +"; + return $script; + } + + public function peerFilter(&$script) + { + $script = str_replace(array( + 'public static function doDelete(', + 'public static function doDelete2(', + 'public static function doDeleteAll(', + 'public static function doDeleteAll2(' + ), array( + 'public static function doForceDelete(', + 'public static function doDelete(', + 'public static function doForceDeleteAll(', + 'public static function doDeleteAll(' + ), $script); + } +} \ No newline at end of file diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/TimestampableBehavior.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/TimestampableBehavior.php new file mode 100644 index 0000000..d8dd924 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/TimestampableBehavior.php @@ -0,0 +1,88 @@ +. + */ + +/** + * Gives a model class the ability to track creation and last modification dates + * Uses two additional columns storing the creation and update date + * + * @author François Zaninotto + * @version $Revision: 1066 $ + * @package propel.engine.behavior + */ +class TimestampableBehavior extends Behavior +{ + // default parameters value + protected $parameters = array( + 'add_columns' => 'true', + 'create_column' => 'created_at', + 'update_column' => 'updated_at' + ); + + /** + * Add the create_column and update_columns to the current table + */ + public function modifyTable() + { + if ($this->getParameter('add_columns') == 'true') + { + $this->getTable()->addColumn(array( + 'name' => $this->getParameter('create_column'), + 'type' => 'TIMESTAMP' + )); + $this->getTable()->addColumn(array( + 'name' => $this->getParameter('update_column'), + 'type' => 'TIMESTAMP' + )); + } + } + + /** + * Get the setter of one of the columns of the behavior + * + * @param string $column One of the behavior colums, 'create_column' or 'update_column' + * @return string The related setter, 'setCreatedOn' or 'setUpdatedOn' + */ + protected function getColumnSetter($column) + { + return 'set' . $this->getColumnForParameter($column)->getPhpName(); + } + + /** + * Add code in ObjectBuilder::preSave + * + * @return string The code to put at the hook + */ + public function preSave() + { + return "\$this->" . $this->getColumnSetter('update_column') . "(time());"; + } + + /** + * Add code in ObjectBuilder::preInsert + * + * @return string The code to put at the hook + */ + public function preInsert() + { + return "\$this->" . $this->getColumnSetter('create_column') . "(time());"; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/.svn/all-wcprops new file mode 100644 index 0000000..5f7ddee --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 65 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/builder +END +DataModelBuilder.php +K 25 +svn:wc:ra_dav:version-url +V 86 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/builder/DataModelBuilder.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/.svn/entries new file mode 100644 index 0000000..eb63c10 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/.svn/entries @@ -0,0 +1,71 @@ +10 + +dir +2332 +http://propel.mirror.svn.symfony-project.com/tags/1.4.2/generator/classes/propel/engine/builder +http://propel.mirror.svn.symfony-project.com + + + +2010-04-19T21:59:18.421712Z +1690 +francois + + + + + + + + + + + + + + +a84bc4f6-26e8-416f-aa96-3cde13879fbb + +sql +dir + +DataModelBuilder.php +file + + + + +2012-05-10T18:42:16.285551Z +83f75497fe68246c9bbebd1ef3a99176 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +12695 + +om +dir + +util +dir + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/.svn/prop-base/DataModelBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/.svn/prop-base/DataModelBuilder.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/.svn/prop-base/DataModelBuilder.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/.svn/text-base/DataModelBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/.svn/text-base/DataModelBuilder.php.svn-base new file mode 100644 index 0000000..fde5c35 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/.svn/text-base/DataModelBuilder.php.svn-base @@ -0,0 +1,496 @@ +. + */ + + +/** + * This is the base class for any builder class that is using the data model. + * + * This could be extended by classes that build SQL DDL, PHP classes, configuration + * files, input forms, etc. + * + * The GeneratorConfig needs to be set on this class in order for the builders + * to be able to access the propel generator build properties. You should be + * safe if you always use the GeneratorConfig to get a configured builder class + * anyway. + * + * @author Hans Lellelid + * @package propel.engine.builder + */ +abstract class DataModelBuilder { + + /** + * The current table. + * @var Table + */ + private $table; + + /** + * The generator config object holding build properties, etc. + * + * @var GeneratorConfig + */ + private $generatorConfig; + + /** + * An array of warning messages that can be retrieved for display (e.g. as part of phing build process). + * @var array string[] + */ + private $warnings = array(); + + /** + * Peer builder class for current table. + * @var DataModelBuilder + */ + private $peerBuilder; + + /** + * Stub Peer builder class for current table. + * @var DataModelBuilder + */ + private $stubPeerBuilder; + + /** + * Object builder class for current table. + * @var DataModelBuilder + */ + private $objectBuilder; + + /** + * Stub Object builder class for current table. + * @var DataModelBuilder + */ + private $stubObjectBuilder; + + /** + * Stub Interface builder class for current table. + * @var DataModelBuilder + */ + private $interfaceBuilder; + + /** + * Stub child object for current table. + * @var DataModelBuilder + */ + private $multiExtendObjectBuilder; + + /** + * Node object builder for current table. + * @var DataModelBuilder + */ + private $nodeBuilder; + + /** + * Node peer builder for current table. + * @var DataModelBuilder + */ + private $nodePeerBuilder; + + /** + * Stub node object builder for current table. + * @var DataModelBuilder + */ + private $stubNodeBuilder; + + /** + * Stub node peer builder for current table. + * @var DataModelBuilder + */ + private $stubNodePeerBuilder; + + /** + * NestedSet object builder for current table. + * @var DataModelBuilder + */ + private $nestedSetBuilder; + + /** + * NestedSet peer builder for current table. + * @var DataModelBuilder + */ + private $nestedSetPeerBuilder; + + /** + * The DDL builder for current table. + * @var DDLBuilder + */ + private $ddlBuilder; + + /** + * The Data-SQL builder for current table. + * @var DataSQLBuilder + */ + private $dataSqlBuilder; + + /** + * The Pluralizer class to use. + * @var Pluralizer + */ + private $pluralizer; + + + /** + * Creates new instance of DataModelBuilder subclass. + * @param Table $table The Table which we are using to build [OM, DDL, etc.]. + */ + public function __construct(Table $table) + { + $this->table = $table; + } + + /** + * Returns new or existing Peer builder class for this table. + * @return PeerBuilder + */ + public function getPeerBuilder() + { + if (!isset($this->peerBuilder)) { + $this->peerBuilder = $this->getGeneratorConfig()->getConfiguredBuilder($this->getTable(), 'peer'); + } + return $this->peerBuilder; + } + + /** + * Returns new or existing Pluralizer class. + * @return Pluralizer + */ + public function getPluralizer() + { + if (!isset($this->pluralizer)) { + $this->pluralizer = $this->getGeneratorConfig()->getConfiguredPluralizer(); + } + return $this->pluralizer; + } + + /** + * Returns new or existing stub Peer builder class for this table. + * @return PeerBuilder + */ + public function getStubPeerBuilder() + { + if (!isset($this->stubPeerBuilder)) { + $this->stubPeerBuilder = $this->getGeneratorConfig()->getConfiguredBuilder($this->getTable(), 'peerstub'); + } + return $this->stubPeerBuilder; + } + + /** + * Returns new or existing Object builder class for this table. + * @return ObjectBuilder + */ + public function getObjectBuilder() + { + if (!isset($this->objectBuilder)) { + $this->objectBuilder = $this->getGeneratorConfig()->getConfiguredBuilder($this->getTable(), 'object'); + } + return $this->objectBuilder; + } + + /** + * Returns new or existing stub Object builder class for this table. + * @return ObjectBuilder + */ + public function getStubObjectBuilder() + { + if (!isset($this->stubObjectBuilder)) { + $this->stubObjectBuilder = $this->getGeneratorConfig()->getConfiguredBuilder($this->getTable(), 'objectstub'); + } + return $this->stubObjectBuilder; + } + + /** + * Returns new or existing stub Interface builder class for this table. + * @return ObjectBuilder + */ + public function getInterfaceBuilder() + { + if (!isset($this->interfaceBuilder)) { + $this->interfaceBuilder = $this->getGeneratorConfig()->getConfiguredBuilder($this->getTable(), 'interface'); + } + return $this->interfaceBuilder; + } + + /** + * Returns new or existing stub child object builder class for this table. + * @return ObjectBuilder + */ + public function getMultiExtendObjectBuilder() + { + if (!isset($this->multiExtendObjectBuilder)) { + $this->multiExtendObjectBuilder = $this->getGeneratorConfig()->getConfiguredBuilder($this->getTable(), 'objectmultiextend'); + } + return $this->multiExtendObjectBuilder; + } + + /** + * Returns new or existing node Object builder class for this table. + * @return ObjectBuilder + */ + public function getNodeBuilder() + { + if (!isset($this->nodeBuilder)) { + $this->nodeBuilder = $this->getGeneratorConfig()->getConfiguredBuilder($this->getTable(), 'node'); + } + return $this->nodeBuilder; + } + + /** + * Returns new or existing node Peer builder class for this table. + * @return PeerBuilder + */ + public function getNodePeerBuilder() + { + if (!isset($this->nodePeerBuilder)) { + $this->nodePeerBuilder = $this->getGeneratorConfig()->getConfiguredBuilder($this->getTable(), 'nodepeer'); + } + return $this->nodePeerBuilder; + } + + /** + * Returns new or existing stub node Object builder class for this table. + * @return ObjectBuilder + */ + public function getStubNodeBuilder() + { + if (!isset($this->stubNodeBuilder)) { + $this->stubNodeBuilder = $this->getGeneratorConfig()->getConfiguredBuilder($this->getTable(), 'nodestub'); + } + return $this->stubNodeBuilder; + } + + /** + * Returns new or existing stub node Peer builder class for this table. + * @return PeerBuilder + */ + public function getStubNodePeerBuilder() + { + if (!isset($this->stubNodePeerBuilder)) { + $this->stubNodePeerBuilder = $this->getGeneratorConfig()->getConfiguredBuilder($this->getTable(), 'nodepeerstub'); + } + return $this->stubNodePeerBuilder; + } + + /** + * Returns new or existing nested set object builder class for this table. + * @return ObjectBuilder + */ + public function getNestedSetBuilder() + { + if (!isset($this->nestedSetBuilder)) { + $this->nestedSetBuilder = $this->getGeneratorConfig()->getConfiguredBuilder($this->getTable(), 'nestedset'); + } + return $this->nestedSetBuilder; + } + + /** + * Returns new or existing nested set Peer builder class for this table. + * @return PeerBuilder + */ + public function getNestedSetPeerBuilder() + { + if (!isset($this->nestedSetPeerBuilder)) { + $this->nestedSetPeerBuilder = $this->getGeneratorConfig()->getConfiguredBuilder($this->getTable(), 'nestedsetpeer'); + } + return $this->nestedSetPeerBuilder; + } + + /** + * Returns new or existing ddl builder class for this table. + * @return DDLBuilder + */ + public function getDDLBuilder() + { + if (!isset($this->ddlBuilder)) { + $this->ddlBuilder = $this->getGeneratorConfig()->getConfiguredBuilder($this->getTable(), 'ddl'); + } + return $this->ddlBuilder; + } + + /** + * Returns new or existing data sql builder class for this table. + * @return DataSQLBuilder + */ + public function getDataSQLBuilder() + { + if (!isset($this->dataSqlBuilder)) { + $this->dataSqlBuilder = $this->getGeneratorConfig()->getConfiguredBuilder($this->getTable(), 'datasql'); + } + return $this->dataSqlBuilder; + } + + /** + * Convenience method to return a NEW Peer class builder instance + * . + * This is used very frequently from the peer and object builders to get + * a peer builder for a RELATED table. + * + * @param Table $table + * @return PeerBuilder + */ + public function getNewPeerBuilder(Table $table) + { + return $this->getGeneratorConfig()->getConfiguredBuilder($table, 'peer'); + } + + /** + * Convenience method to return a NEW Object class builder instance. + * + * This is used very frequently from the peer and object builders to get + * an object builder for a RELATED table. + * + * @param Table $table + * @return ObjectBuilder + */ + public function getNewObjectBuilder(Table $table) + { + return $this->getGeneratorConfig()->getConfiguredBuilder($table, 'object'); + } + + /** + * Gets the GeneratorConfig object. + * + * @return GeneratorConfig + */ + public function getGeneratorConfig() + { + return $this->generatorConfig; + } + + /** + * Get a specific [name transformed] build property. + * + * @param string $name + * @return string + */ + public function getBuildProperty($name) + { + if ($this->getGeneratorConfig()) { + return $this->getGeneratorConfig()->getBuildProperty($name); + } + return null; // just to be explicit + } + + /** + * Sets the GeneratorConfig object. + * + * @param GeneratorConfig $v + */ + public function setGeneratorConfig(GeneratorConfig $v) + { + $this->generatorConfig = $v; + } + + /** + * Sets the table for this builder. + * @param Table $table + */ + public function setTable(Table $table) + { + $this->table = $table; + } + + /** + * Returns the current Table object. + * @return Table + */ + public function getTable() + { + return $this->table; + } + + /** + * Convenience method to returns the Platform class for this table (database). + * @return Platform + */ + public function getPlatform() + { + if ($this->getTable() && $this->getTable()->getDatabase()) { + return $this->getTable()->getDatabase()->getPlatform(); + } + } + + /** + * Convenience method to returns the database for current table. + * @return Database + */ + public function getDatabase() + { + if ($this->getTable()) { + return $this->getTable()->getDatabase(); + } + } + + /** + * Pushes a message onto the stack of warnings. + * @param string $msg The warning message. + */ + protected function warn($msg) + { + $this->warnings[] = $msg; + } + + /** + * Gets array of warning messages. + * @return array string[] + */ + public function getWarnings() + { + return $this->warnings; + } + + /** + * Wraps call to Platform->quoteIdentifier() with a check to see whether quoting is enabled. + * + * All subclasses should call this quoteIdentifier() method rather than calling the Platform + * method directly. This method is used by both DataSQLBuilder and DDLBuilder, and potentially + * in the OM builders also, which is why it is defined in this class. + * + * @param string $text The text to quote. + * @return string Quoted text. + */ + public function quoteIdentifier($text) + { + if (!$this->getBuildProperty('disableIdentifierQuoting')) { + return $this->getPlatform()->quoteIdentifier($text); + } + return $text; + } + + /** + * Returns the name of the current class being built, with a possible prefix. + * @return string + * @see OMBuilder#getClassname() + */ + public function prefixClassname($identifier) + { + return $this->getBuildProperty('classPrefix') . $identifier; + } + + /** + * Returns the name of the current table being built, with a possible prefix. + * @return string + */ + public function prefixTablename($identifier) + { + return $this->getBuildProperty('tablePrefix') . $identifier; + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/DataModelBuilder.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/DataModelBuilder.php new file mode 100644 index 0000000..b6b0572 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/DataModelBuilder.php @@ -0,0 +1,496 @@ +. + */ + + +/** + * This is the base class for any builder class that is using the data model. + * + * This could be extended by classes that build SQL DDL, PHP classes, configuration + * files, input forms, etc. + * + * The GeneratorConfig needs to be set on this class in order for the builders + * to be able to access the propel generator build properties. You should be + * safe if you always use the GeneratorConfig to get a configured builder class + * anyway. + * + * @author Hans Lellelid + * @package propel.engine.builder + */ +abstract class DataModelBuilder { + + /** + * The current table. + * @var Table + */ + private $table; + + /** + * The generator config object holding build properties, etc. + * + * @var GeneratorConfig + */ + private $generatorConfig; + + /** + * An array of warning messages that can be retrieved for display (e.g. as part of phing build process). + * @var array string[] + */ + private $warnings = array(); + + /** + * Peer builder class for current table. + * @var DataModelBuilder + */ + private $peerBuilder; + + /** + * Stub Peer builder class for current table. + * @var DataModelBuilder + */ + private $stubPeerBuilder; + + /** + * Object builder class for current table. + * @var DataModelBuilder + */ + private $objectBuilder; + + /** + * Stub Object builder class for current table. + * @var DataModelBuilder + */ + private $stubObjectBuilder; + + /** + * Stub Interface builder class for current table. + * @var DataModelBuilder + */ + private $interfaceBuilder; + + /** + * Stub child object for current table. + * @var DataModelBuilder + */ + private $multiExtendObjectBuilder; + + /** + * Node object builder for current table. + * @var DataModelBuilder + */ + private $nodeBuilder; + + /** + * Node peer builder for current table. + * @var DataModelBuilder + */ + private $nodePeerBuilder; + + /** + * Stub node object builder for current table. + * @var DataModelBuilder + */ + private $stubNodeBuilder; + + /** + * Stub node peer builder for current table. + * @var DataModelBuilder + */ + private $stubNodePeerBuilder; + + /** + * NestedSet object builder for current table. + * @var DataModelBuilder + */ + private $nestedSetBuilder; + + /** + * NestedSet peer builder for current table. + * @var DataModelBuilder + */ + private $nestedSetPeerBuilder; + + /** + * The DDL builder for current table. + * @var DDLBuilder + */ + private $ddlBuilder; + + /** + * The Data-SQL builder for current table. + * @var DataSQLBuilder + */ + private $dataSqlBuilder; + + /** + * The Pluralizer class to use. + * @var Pluralizer + */ + private $pluralizer; + + + /** + * Creates new instance of DataModelBuilder subclass. + * @param Table $table The Table which we are using to build [OM, DDL, etc.]. + */ + public function __construct(Table $table) + { + $this->table = $table; + } + + /** + * Returns new or existing Peer builder class for this table. + * @return PeerBuilder + */ + public function getPeerBuilder() + { + if (!isset($this->peerBuilder)) { + $this->peerBuilder = $this->getGeneratorConfig()->getConfiguredBuilder($this->getTable(), 'peer'); + } + return $this->peerBuilder; + } + + /** + * Returns new or existing Pluralizer class. + * @return Pluralizer + */ + public function getPluralizer() + { + if (!isset($this->pluralizer)) { + $this->pluralizer = $this->getGeneratorConfig()->getConfiguredPluralizer(); + } + return $this->pluralizer; + } + + /** + * Returns new or existing stub Peer builder class for this table. + * @return PeerBuilder + */ + public function getStubPeerBuilder() + { + if (!isset($this->stubPeerBuilder)) { + $this->stubPeerBuilder = $this->getGeneratorConfig()->getConfiguredBuilder($this->getTable(), 'peerstub'); + } + return $this->stubPeerBuilder; + } + + /** + * Returns new or existing Object builder class for this table. + * @return ObjectBuilder + */ + public function getObjectBuilder() + { + if (!isset($this->objectBuilder)) { + $this->objectBuilder = $this->getGeneratorConfig()->getConfiguredBuilder($this->getTable(), 'object'); + } + return $this->objectBuilder; + } + + /** + * Returns new or existing stub Object builder class for this table. + * @return ObjectBuilder + */ + public function getStubObjectBuilder() + { + if (!isset($this->stubObjectBuilder)) { + $this->stubObjectBuilder = $this->getGeneratorConfig()->getConfiguredBuilder($this->getTable(), 'objectstub'); + } + return $this->stubObjectBuilder; + } + + /** + * Returns new or existing stub Interface builder class for this table. + * @return ObjectBuilder + */ + public function getInterfaceBuilder() + { + if (!isset($this->interfaceBuilder)) { + $this->interfaceBuilder = $this->getGeneratorConfig()->getConfiguredBuilder($this->getTable(), 'interface'); + } + return $this->interfaceBuilder; + } + + /** + * Returns new or existing stub child object builder class for this table. + * @return ObjectBuilder + */ + public function getMultiExtendObjectBuilder() + { + if (!isset($this->multiExtendObjectBuilder)) { + $this->multiExtendObjectBuilder = $this->getGeneratorConfig()->getConfiguredBuilder($this->getTable(), 'objectmultiextend'); + } + return $this->multiExtendObjectBuilder; + } + + /** + * Returns new or existing node Object builder class for this table. + * @return ObjectBuilder + */ + public function getNodeBuilder() + { + if (!isset($this->nodeBuilder)) { + $this->nodeBuilder = $this->getGeneratorConfig()->getConfiguredBuilder($this->getTable(), 'node'); + } + return $this->nodeBuilder; + } + + /** + * Returns new or existing node Peer builder class for this table. + * @return PeerBuilder + */ + public function getNodePeerBuilder() + { + if (!isset($this->nodePeerBuilder)) { + $this->nodePeerBuilder = $this->getGeneratorConfig()->getConfiguredBuilder($this->getTable(), 'nodepeer'); + } + return $this->nodePeerBuilder; + } + + /** + * Returns new or existing stub node Object builder class for this table. + * @return ObjectBuilder + */ + public function getStubNodeBuilder() + { + if (!isset($this->stubNodeBuilder)) { + $this->stubNodeBuilder = $this->getGeneratorConfig()->getConfiguredBuilder($this->getTable(), 'nodestub'); + } + return $this->stubNodeBuilder; + } + + /** + * Returns new or existing stub node Peer builder class for this table. + * @return PeerBuilder + */ + public function getStubNodePeerBuilder() + { + if (!isset($this->stubNodePeerBuilder)) { + $this->stubNodePeerBuilder = $this->getGeneratorConfig()->getConfiguredBuilder($this->getTable(), 'nodepeerstub'); + } + return $this->stubNodePeerBuilder; + } + + /** + * Returns new or existing nested set object builder class for this table. + * @return ObjectBuilder + */ + public function getNestedSetBuilder() + { + if (!isset($this->nestedSetBuilder)) { + $this->nestedSetBuilder = $this->getGeneratorConfig()->getConfiguredBuilder($this->getTable(), 'nestedset'); + } + return $this->nestedSetBuilder; + } + + /** + * Returns new or existing nested set Peer builder class for this table. + * @return PeerBuilder + */ + public function getNestedSetPeerBuilder() + { + if (!isset($this->nestedSetPeerBuilder)) { + $this->nestedSetPeerBuilder = $this->getGeneratorConfig()->getConfiguredBuilder($this->getTable(), 'nestedsetpeer'); + } + return $this->nestedSetPeerBuilder; + } + + /** + * Returns new or existing ddl builder class for this table. + * @return DDLBuilder + */ + public function getDDLBuilder() + { + if (!isset($this->ddlBuilder)) { + $this->ddlBuilder = $this->getGeneratorConfig()->getConfiguredBuilder($this->getTable(), 'ddl'); + } + return $this->ddlBuilder; + } + + /** + * Returns new or existing data sql builder class for this table. + * @return DataSQLBuilder + */ + public function getDataSQLBuilder() + { + if (!isset($this->dataSqlBuilder)) { + $this->dataSqlBuilder = $this->getGeneratorConfig()->getConfiguredBuilder($this->getTable(), 'datasql'); + } + return $this->dataSqlBuilder; + } + + /** + * Convenience method to return a NEW Peer class builder instance + * . + * This is used very frequently from the peer and object builders to get + * a peer builder for a RELATED table. + * + * @param Table $table + * @return PeerBuilder + */ + public function getNewPeerBuilder(Table $table) + { + return $this->getGeneratorConfig()->getConfiguredBuilder($table, 'peer'); + } + + /** + * Convenience method to return a NEW Object class builder instance. + * + * This is used very frequently from the peer and object builders to get + * an object builder for a RELATED table. + * + * @param Table $table + * @return ObjectBuilder + */ + public function getNewObjectBuilder(Table $table) + { + return $this->getGeneratorConfig()->getConfiguredBuilder($table, 'object'); + } + + /** + * Gets the GeneratorConfig object. + * + * @return GeneratorConfig + */ + public function getGeneratorConfig() + { + return $this->generatorConfig; + } + + /** + * Get a specific [name transformed] build property. + * + * @param string $name + * @return string + */ + public function getBuildProperty($name) + { + if ($this->getGeneratorConfig()) { + return $this->getGeneratorConfig()->getBuildProperty($name); + } + return null; // just to be explicit + } + + /** + * Sets the GeneratorConfig object. + * + * @param GeneratorConfig $v + */ + public function setGeneratorConfig(GeneratorConfig $v) + { + $this->generatorConfig = $v; + } + + /** + * Sets the table for this builder. + * @param Table $table + */ + public function setTable(Table $table) + { + $this->table = $table; + } + + /** + * Returns the current Table object. + * @return Table + */ + public function getTable() + { + return $this->table; + } + + /** + * Convenience method to returns the Platform class for this table (database). + * @return Platform + */ + public function getPlatform() + { + if ($this->getTable() && $this->getTable()->getDatabase()) { + return $this->getTable()->getDatabase()->getPlatform(); + } + } + + /** + * Convenience method to returns the database for current table. + * @return Database + */ + public function getDatabase() + { + if ($this->getTable()) { + return $this->getTable()->getDatabase(); + } + } + + /** + * Pushes a message onto the stack of warnings. + * @param string $msg The warning message. + */ + protected function warn($msg) + { + $this->warnings[] = $msg; + } + + /** + * Gets array of warning messages. + * @return array string[] + */ + public function getWarnings() + { + return $this->warnings; + } + + /** + * Wraps call to Platform->quoteIdentifier() with a check to see whether quoting is enabled. + * + * All subclasses should call this quoteIdentifier() method rather than calling the Platform + * method directly. This method is used by both DataSQLBuilder and DDLBuilder, and potentially + * in the OM builders also, which is why it is defined in this class. + * + * @param string $text The text to quote. + * @return string Quoted text. + */ + public function quoteIdentifier($text) + { + if (!$this->getBuildProperty('disableIdentifierQuoting')) { + return $this->getPlatform()->quoteIdentifier($text); + } + return $text; + } + + /** + * Returns the name of the current class being built, with a possible prefix. + * @return string + * @see OMBuilder#getClassname() + */ + public function prefixClassname($identifier) + { + return $this->getBuildProperty('classPrefix') . $identifier; + } + + /** + * Returns the name of the current table being built, with a possible prefix. + * @return string + */ + public function prefixTablename($identifier) + { + return $this->getBuildProperty('tablePrefix') . $identifier; + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/.svn/all-wcprops new file mode 100644 index 0000000..c2564f6 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/.svn/all-wcprops @@ -0,0 +1,29 @@ +K 25 +svn:wc:ra_dav:version-url +V 68 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/builder/om +END +ObjectBuilder.php +K 25 +svn:wc:ra_dav:version-url +V 86 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/builder/om/ObjectBuilder.php +END +OMBuilder.php +K 25 +svn:wc:ra_dav:version-url +V 82 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/builder/om/OMBuilder.php +END +PeerBuilder.php +K 25 +svn:wc:ra_dav:version-url +V 84 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/builder/om/PeerBuilder.php +END +ClassTools.php +K 25 +svn:wc:ra_dav:version-url +V 83 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/builder/om/ClassTools.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/.svn/entries new file mode 100644 index 0000000..2d02575 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/.svn/entries @@ -0,0 +1,167 @@ +10 + +dir +2332 +http://propel.mirror.svn.symfony-project.com/tags/1.4.2/generator/classes/propel/engine/builder/om +http://propel.mirror.svn.symfony-project.com + + + +2010-03-25T22:11:59.318183Z +1639 +francois + + + + + + + + + + + + + + +a84bc4f6-26e8-416f-aa96-3cde13879fbb + +ObjectBuilder.php +file + + + + +2012-05-10T18:42:16.233549Z +d1c3f7dac59ffe49de9dde8fc2311ea8 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +6360 + +OMBuilder.php +file + + + + +2012-05-10T18:42:16.233549Z +f5b491136544f68e37d01a79b3224cf6 +2010-02-04T17:22:16.530896Z +1524 +francois +has-props + + + + + + + + + + + + + + + + + + + + +12257 + +PeerBuilder.php +file + + + + +2012-05-10T18:42:16.237550Z +38f6ddf7adeb41a337819e06f7a54670 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +9745 + +php5 +dir + +ClassTools.php +file + + + + +2012-05-10T18:42:16.237550Z +b43d5ae194d1a150f4fc847232d5fdf6 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +4299 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/.svn/prop-base/ClassTools.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/.svn/prop-base/ClassTools.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/.svn/prop-base/ClassTools.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/.svn/prop-base/OMBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/.svn/prop-base/OMBuilder.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/.svn/prop-base/OMBuilder.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/.svn/prop-base/ObjectBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/.svn/prop-base/ObjectBuilder.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/.svn/prop-base/ObjectBuilder.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/.svn/prop-base/PeerBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/.svn/prop-base/PeerBuilder.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/.svn/prop-base/PeerBuilder.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/.svn/text-base/ClassTools.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/.svn/text-base/ClassTools.php.svn-base new file mode 100644 index 0000000..79e0945 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/.svn/text-base/ClassTools.php.svn-base @@ -0,0 +1,131 @@ +. + */ + + + /** + * Tools to support class & package inclusion and referencing. + * + * @author Hans Lellelid + * @version $Revision$ + * @package propel.engine.builder.om + */ +class ClassTools { + + /** + * Gets just classname, given a dot-path to class. + * @param string $qualifiedName + * @return string + */ + public static function classname($qualifiedName) + { + $pos = strrpos($qualifiedName, '.'); + if ($pos === false) { + return $qualifiedName; // there is no '.' in the qualifed name + } else { + return substr($qualifiedName, $pos + 1); // start just after '.' + } + } + + /** + * Gets the path to be used in include()/require() statement. + * + * Supports multiple function signatures: + * + * (1) getFilePath($dotPathClass); + * (2) getFilePath($dotPathPrefix, $className); + * (3) getFilePath($dotPathPrefix, $className, $extension); + * + * @param string $path dot-path to class or to package prefix. + * @param string $classname class name + * @param string $extension The extension to use on the file. + * @return string The constructed file path. + */ + public static function getFilePath($path, $classname = null, $extension = '.php') + { + $path = strtr(ltrim($path, '.'), '.', '/'); + if ($classname !== null) { + if ($path !== "") { $path .= '/'; } + return $path . $classname . $extension; + } else { + return $path . $extension; + } + } + + /** + * Gets the basePeer path if specified for table/db. + * If not, will return 'propel.util.BasePeer' + * @return string + */ + public static function getBasePeer(Table $table) { + $class = $table->getBasePeer(); + if ($class === null) { + $class = "propel.util.BasePeer"; + } + return $class; + } + + /** + * Gets the baseClass path if specified for table/db. + * If not, will return 'propel.om.BaseObject' + * @return string + */ + public static function getBaseClass(Table $table) { + $class = $table->getBaseClass(); + if ($class === null) { + $class = "propel.om.BaseObject"; + } + return $class; + } + + /** + * Gets the interface path if specified for table. + * If not, will return 'propel.om.Persistent'. + * @return string + */ + public static function getInterface(Table $table) { + $interface = $table->getInterface(); + if ($interface === null && !$table->isReadOnly()) { + $interface = "propel.om.Persistent"; + } + return $interface; + } + + /** + * Gets a list of PHP reserved words. + * + * @return array string[] + */ + public static function getPhpReservedWords() + { + return array( + 'and', 'or', 'xor', 'exception', '__FILE__', '__LINE__', + 'array', 'as', 'break', 'case', 'class', 'const', 'continue', + 'declare', 'default', 'die', 'do', 'echo', 'else', 'elseif', 'empty', + 'enddeclare', 'endfor', 'endforeach', 'endif', 'endswitch', 'endwhile', + 'eval', 'exit', 'extends', 'for', 'foreach', 'function', 'global', + 'if', 'include', 'include_once', 'isset', 'list', 'new', 'print', 'require', + 'require_once', 'return', 'static', 'switch', 'unset', 'use', 'var', 'while', + '__FUNCTION__', '__CLASS__', '__METHOD__', 'final', 'php_user_filter', 'interface', + 'implements', 'extends', 'public', 'protected', 'private', 'abstract', 'clone', 'try', 'catch', + 'throw', 'this', 'namespace' + ); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/.svn/text-base/OMBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/.svn/text-base/OMBuilder.php.svn-base new file mode 100644 index 0000000..daf65c9 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/.svn/text-base/OMBuilder.php.svn-base @@ -0,0 +1,368 @@ +. + */ + +require_once 'propel/engine/builder/DataModelBuilder.php'; + +/** + * Baseclass for OM-building classes. + * + * OM-building classes are those that build a PHP (or other) class to service + * a single table. This includes Peer classes, Entity classes, Map classes, + * Node classes, Nested Set classes, etc. + * + * @author Hans Lellelid + * @package propel.engine.builder.om + */ +abstract class OMBuilder extends DataModelBuilder { + + /** + * Builds the PHP source for current class and returns it as a string. + * + * This is the main entry point and defines a basic structure that classes should follow. + * In most cases this method will not need to be overridden by subclasses. This method + * does assume that the output language is PHP code, so it will need to be overridden if + * this is not the case. + * + * @return string The resulting PHP sourcecode. + */ + public function build() + { + $this->validateModel(); + + $script = "<" . "?php\n"; // intentional concatenation + if ($this->isAddIncludes()) { + $this->addIncludes($script); + } + $this->addClassOpen($script); + $this->addClassBody($script); + $this->addClassClose($script); + return $script; + } + + /** + * Validates the current table to make sure that it won't + * result in generated code that will not parse. + * + * This method may emit warnings for code which may cause problems + * and will throw exceptions for errors that will definitely cause + * problems. + */ + protected function validateModel() + { + // Validation is currently only implemented in the subclasses. + } + + /** + * Creates a $obj = new Book(); code snippet. Can be used by frameworks, for instance, to + * extend this behavior, e.g. initialize the object after creating the instance or so. + * + * @return string Some code + */ + public function buildObjectInstanceCreationCode($objName, $clsName) + { + return "$objName = new $clsName();"; + } + + /** + * Returns the qualified (prefixed) classname that is being built by the current class. + * This method must be implemented by child classes. + * @return string + */ + abstract public function getUnprefixedClassname(); + + /** + * Returns the prefixed clasname that is being built by the current class. + * @return string + * @see DataModelBuilder#prefixClassname() + */ + public function getClassname() + { + return $this->prefixClassname($this->getUnprefixedClassname()); + } + /** + * Gets the dot-path representation of current class being built. + * @return string + */ + public function getClasspath() + { + if ($this->getPackage()) { + $path = $this->getPackage() . '.' . $this->getClassname(); + } else { + $path = $this->getClassname(); + } + return $path; + } + + /** + * Gets the full path to the file for the current class. + * @return string + */ + public function getClassFilePath() + { + return ClassTools::getFilePath($this->getPackage(), $this->getClassname()); + } + + /** + * Gets package name for this table. + * This is overridden by child classes that have different packages. + * @return string + */ + public function getPackage() + { + $pkg = ($this->getTable()->getPackage() ? $this->getTable()->getPackage() : $this->getDatabase()->getPackage()); + if (!$pkg) { + $pkg = $this->getBuildProperty('targetPackage'); + } + return $pkg; + } + + /** + * Returns filesystem path for current package. + * @return string + */ + public function getPackagePath() + { + return strtr($this->getPackage(), '.', '/'); + } + + /** + * Shortcut method to return the [stub] peer classname for current table. + * This is the classname that is used whenever object or peer classes want + * to invoke methods of the peer classes. + * @return string (e.g. 'MyPeer') + * @see StubPeerBuilder::getClassname() + */ + public function getPeerClassname() { + return $this->getStubPeerBuilder()->getClassname(); + } + + /** + * Returns the object classname for current table. + * This is the classname that is used whenever object or peer classes want + * to invoke methods of the object classes. + * @return string (e.g. 'My') + * @see StubPeerBuilder::getClassname() + */ + public function getObjectClassname() { + return $this->getStubObjectBuilder()->getClassname(); + } + + /** + * Get the column constant name (e.g. PeerName::COLUMN_NAME). + * + * @param Column $col The column we need a name for. + * @param string $classname The Peer classname to use. + * + * @return string If $classname is provided, then will return $classname::COLUMN_NAME; if not, then the peername is looked up for current table to yield $currTablePeer::COLUMN_NAME. + */ + public function getColumnConstant($col, $classname = null) + { + if ($col === null) { + $e = new Exception("No col specified."); + print $e; + throw $e; + } + if ($classname === null) { + return $this->getBuildProperty('classPrefix') . $col->getConstantName(); + } + // was it overridden in schema.xml ? + if ($col->getPeerName()) { + $const = strtoupper($col->getPeerName()); + } else { + $const = strtoupper($col->getName()); + } + return $classname.'::'.$const; + } + + /** + * Gets the basePeer path if specified for table/db. + * If not, will return 'propel.util.BasePeer' + * @return string + */ + public function getBasePeer(Table $table) { + $class = $table->getBasePeer(); + if ($class === null) { + $class = "propel.util.BasePeer"; + } + return $class; + } + + /** + * Convenience method to get the foreign Table object for an fkey. + * @return Table + */ + protected function getForeignTable(ForeignKey $fk) + { + return $this->getTable()->getDatabase()->getTable($fk->getForeignTableName()); + } + + /** + * Gets the PHP method name affix to be used for fkeys for the current table (not referrers to this table). + * + * The difference between this method and the getRefFKPhpNameAffix() method is that in this method the + * classname in the affix is the foreign table classname. + * + * @param ForeignKey $fk The local FK that we need a name for. + * @param boolean $plural Whether the php name should be plural (e.g. initRelatedObjs() vs. addRelatedObj() + * @return string + */ + public function getFKPhpNameAffix(ForeignKey $fk, $plural = false) + { + if ($fk->getPhpName()) { + if ($plural) { + return $this->getPluralizer()->getPluralForm($fk->getPhpName()); + } else { + return $fk->getPhpName(); + } + } else { + $className = $this->getForeignTable($fk)->getPhpName(); + if ($plural) { + $className = $this->getPluralizer()->getPluralForm($className); + } + return $className . $this->getRelatedBySuffix($fk, true); + } + } + + /** + * Gets the PHP method name affix to be used for referencing foreign key methods and variable names (e.g. set????(), $coll???). + * + * The difference between this method and the getFKPhpNameAffix() method is that in this method the + * classname in the affix is the classname of the local fkey table. + * + * @param ForeignKey $fk The referrer FK that we need a name for. + * @param boolean $plural Whether the php name should be plural (e.g. initRelatedObjs() vs. addRelatedObj() + * @return string + */ + public function getRefFKPhpNameAffix(ForeignKey $fk, $plural = false) + { + if ($fk->getRefPhpName()) { + if ($plural) { + return $this->getPluralizer()->getPluralForm($fk->getRefPhpName()); + } else { + return $fk->getRefPhpName(); + } + } else { + $className = $fk->getTable()->getPhpName(); + if ($plural) { + $className = $this->getPluralizer()->getPluralForm($className); + } + return $className . $this->getRelatedBySuffix($fk); + } + } + + /** + * Gets the "RelatedBy*" suffix (if needed) that is attached to method and variable names. + * + * The related by suffix is based on the local columns of the foreign key. If there is more than + * one column in a table that points to the same foreign table, then a 'RelatedByLocalColName' suffix + * will be appended. + * + * @return string + */ + protected function getRelatedBySuffix(ForeignKey $fk, $columnCheck = false) + { + $relCol = ""; + foreach ($fk->getLocalColumns() as $columnName) { + $column = $fk->getTable()->getColumn($columnName); + if (!$column) { + throw new Exception("Could not fetch column: $columnName in table " . $fk->getTable()->getName()); + } + + if ( count($column->getTable()->getForeignKeysReferencingTable($fk->getForeignTableName())) > 1 + || $fk->getForeignTableName() == $fk->getTable()->getName()) { + // if there are seeral foreign keys that point to the same table + // then we need to generate methods like getAuthorRelatedByColName() + // instead of just getAuthor(). Currently we are doing the same + // for self-referential foreign keys, to avoid confusion. + $relCol .= $column->getPhpName(); + } + } + + #var_dump($fk->getForeignTableName() . ' - ' .$fk->getTableName() . ' - ' . $this->getTable()->getName()); + + #$fk->getForeignTableName() != $this->getTable()->getName() && + // @todo comment on it + if ($columnCheck && !$relCol && $fk->getTable()->getColumn($fk->getForeignTableName())) { + foreach ($fk->getLocalColumns() as $columnName) { + $column = $fk->getTable()->getColumn($columnName); + $relCol .= $column->getPhpName(); + } + } + + + if ($relCol != "") { + $relCol = "RelatedBy" . $relCol; + } + + return $relCol; + } + + /** + * Whether to add the include statements. + * This is based on the build property propel.addIncludes + */ + protected function isAddIncludes() + { + return $this->getBuildProperty('addIncludes'); + } + + /** + * Checks whether any registered behavior on that table has a modifier for a hook + * @param string $hookName The name of the hook as called from one of this class methods, e.g. "preSave" + * @param string $modifier The name of the modifier object providing the method in the behavior + * @return boolean + */ + public function hasBehaviorModifier($hookName, $modifier) + { + $modifierGetter = 'get' . $modifier; + foreach ($this->getTable()->getBehaviors() as $behavior) { + if(method_exists($behavior->$modifierGetter(), $hookName)) { + return true; + } + } + return false; + } + + /** + * Checks whether any registered behavior on that table has a modifier for a hook + * @param string $hookName The name of the hook as called from one of this class methods, e.g. "preSave" + * @param string $modifier The name of the modifier object providing the method in the behavior + * @param string &$script The script will be modified in this method. + */ + public function applyBehaviorModifier($hookName, $modifier, &$script, $tab = " ") + { + $modifierGetter = 'get' . $modifier; + foreach ($this->getTable()->getBehaviors() as $behavior) { + $modifier = $behavior->$modifierGetter(); + if(method_exists($modifier, $hookName)) { + if (strpos($hookName, 'Filter') !== false) { + // filter hook: the script string will be modified by the behavior + $modifier->$hookName($script); + } else { + // regular hook: the behavior returns a string to append to the script string + $script .= "\n" . $tab . '// ' . $behavior->getName() . " behavior\n"; + $script .= preg_replace('/^/m', $tab, $modifier->$hookName()); + } + } + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/.svn/text-base/ObjectBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/.svn/text-base/ObjectBuilder.php.svn-base new file mode 100644 index 0000000..9f9736d --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/.svn/text-base/ObjectBuilder.php.svn-base @@ -0,0 +1,187 @@ +. + */ + +require_once 'propel/engine/builder/om/OMBuilder.php'; + +/** + * Base class for Peer-building classes. + * + * This class is designed so that it can be extended by a PHP4PeerBuilder in addition + * to the "standard" PHP5PeerBuilder and PHP5ComplexOMPeerBuilder. Hence, this class + * should not have any actual template code in it -- simply basic logic & utility + * methods. + * + * @author Hans Lellelid + * @package propel.engine.builder.om + */ +abstract class ObjectBuilder extends OMBuilder { + + /** + * Constructs a new PeerBuilder subclass. + */ + public function __construct(Table $table) { + parent::__construct($table); + } + + /** + * This method adds the contents of the generated class to the script. + * + * This method is abstract and should be overridden by the subclasses. + * + * Hint: Override this method in your subclass if you want to reorganize or + * drastically change the contents of the generated peer class. + * + * @param string &$script The script will be modified in this method. + */ + abstract protected function addClassBody(&$script); + + /** + * Adds the getter methods for the column values. + * This is here because it is probably generic enough to apply to templates being generated + * in different langauges (e.g. PHP4 and PHP5). + * @param string &$script The script will be modified in this method. + */ + protected function addColumnAccessorMethods(&$script) + { + $table = $this->getTable(); + + foreach ($table->getColumns() as $col) { + + // if they're not using the DateTime class than we will generate "compatibility" accessor method + if ($col->getType() === PropelTypes::DATE || $col->getType() === PropelTypes::TIME || $col->getType() === PropelTypes::TIMESTAMP) { + $this->addTemporalAccessor($script, $col); + } else { + $this->addDefaultAccessor($script, $col); + } + + if ($col->isLazyLoad()) { + $this->addLazyLoader($script, $col); + } + } + } + + /** + * Adds the mutator (setter) methods for setting column values. + * This is here because it is probably generic enough to apply to templates being generated + * in different langauges (e.g. PHP4 and PHP5). + * @param string &$script The script will be modified in this method. + */ + protected function addColumnMutatorMethods(&$script) + { + foreach ($this->getTable()->getColumns() as $col) { + + if ($col->isLobType()) { + $this->addLobMutator($script, $col); + } elseif ($col->getType() === PropelTypes::DATE || $col->getType() === PropelTypes::TIME || $col->getType() === PropelTypes::TIMESTAMP) { + $this->addTemporalMutator($script, $col); + } else { + $this->addDefaultMutator($script, $col); + } + } + } + + + /** + * Gets the baseClass path if specified for table/db. + * If not, will return 'propel.om.BaseObject' + * @return string + */ + protected function getBaseClass() { + $class = $this->getTable()->getBaseClass(); + if ($class === null) { + $class = "propel.om.BaseObject"; + } + return $class; + } + + /** + * Gets the interface path if specified for current table. + * If not, will return 'propel.om.Persistent'. + * @return string + */ + protected function getInterface() { + $interface = $this->getTable()->getInterface(); + if ($interface === null && !$this->getTable()->isReadOnly()) { + $interface = "propel.om.Persistent"; + } + return $interface; + } + + /** + * Whether to add the generic mutator methods (setByName(), setByPosition(), fromArray()). + * This is based on the build property propel.addGenericMutators, and also whether the + * table is read-only or an alias. + */ + protected function isAddGenericMutators() + { + $table = $this->getTable(); + return (!$table->isAlias() && $this->getBuildProperty('addGenericMutators') && !$table->isReadOnly()); + } + + /** + * Whether to add the generic accessor methods (getByName(), getByPosition(), toArray()). + * This is based on the build property propel.addGenericAccessors, and also whether the + * table is an alias. + */ + protected function isAddGenericAccessors() + { + $table = $this->getTable(); + return (!$table->isAlias() && $this->getBuildProperty('addGenericAccessors')); + } + + /** + * Whether to add the validate() method. + * This is based on the build property propel.addValidateMethod + */ + protected function isAddValidateMethod() + { + return $this->getBuildProperty('addValidateMethod'); + } + + protected function hasDefaultValues() + { + foreach ($this->getTable()->getColumns() as $col) { + if($col->getDefaultValue() !== null) return true; + } + return false; + } + + /** + * Checks whether any registered behavior on that table has a modifier for a hook + * @param string $hookName The name of the hook as called from one of this class methods, e.g. "preSave" + * @return boolean + */ + public function hasBehaviorModifier($hookName) + { + return parent::hasBehaviorModifier($hookName, 'ObjectBuilderModifier'); + } + + /** + * Checks whether any registered behavior on that table has a modifier for a hook + * @param string $hookName The name of the hook as called from one of this class methods, e.g. "preSave" + * @param string &$script The script will be modified in this method. + */ + public function applyBehaviorModifier($hookName, &$script, $tab = " ") + { + return parent::applyBehaviorModifier($hookName, 'ObjectBuilderModifier', $script, $tab); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/.svn/text-base/PeerBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/.svn/text-base/PeerBuilder.php.svn-base new file mode 100644 index 0000000..e09348f --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/.svn/text-base/PeerBuilder.php.svn-base @@ -0,0 +1,299 @@ +. + */ + +require_once 'propel/engine/builder/om/OMBuilder.php'; + +/** + * Base class for Peer-building classes. + * + * This class is designed so that it can be extended by a PHP4PeerBuilder in addition + * to the "standard" PHP5PeerBuilder and PHP5ComplexOMPeerBuilder. Hence, this class + * should not have any actual template code in it -- simply basic logic & utility + * methods. + * + * @author Hans Lellelid + * @package propel.engine.builder.om + */ +abstract class PeerBuilder extends OMBuilder { + + protected $basePeerClass; + protected $basePeerClassname; + + /** + * Constructs a new PeerBuilder subclass. + */ + public function __construct(Table $table) { + parent::__construct($table); + $this->basePeerClassname = $this->basePeerClass = $this->getBasePeer($table); + $pos = strrpos($this->basePeerClassname, '.'); + if ($pos !== false) { + $this->basePeerClassname = substr($this->basePeerClassname, $pos + 1); + } + } + + /** + * Adds the addSelectColumns(), doCount(), etc. methods. + * @param string &$script The script will be modified in this method. + */ + protected function addSelectMethods(&$script) + { + $this->addAddSelectColumns($script); + + $this->addDoCount($script); + + // consider refactoring the doSelect stuff + // into a top-level method + $this->addDoSelectOne($script); + $this->addDoSelect($script); + $this->addDoSelectStmt($script); // <-- there's PDO code in here + + $this->addAddInstanceToPool($script); + $this->addRemoveInstanceFromPool($script); + $this->addGetInstanceFromPool($script); + $this->addClearInstancePool($script); + $this->addClearRelatedInstancePool($script); + + $this->addGetPrimaryKeyHash($script); + $this->addPopulateObjects($script); // <-- there's PDO code in here + + } + + /** + * Adds the correct getOMClass() method, depending on whether this table uses inheritance. + * @param string &$script The script will be modified in this method. + */ + protected function addGetOMClassMethod(&$script) + { + $table = $this->getTable(); + if ($table->getChildrenColumn()) { + if ($table->isAbstract()) { + $this->addGetOMClass_Inheritance_Abstract($script); + } else { + $this->addGetOMClass_Inheritance($script); + } + } else { + if ($table->isAbstract()) { + $this->addGetOMClass_NoInheritance_Abstract($script); + } else { + $this->addGetOMClass_NoInheritance($script); + } + } + } + + /** + * Adds the doInsert(), doUpdate(), doDeleteAll(), doValidate(), etc. methods. + * @param string &$script The script will be modified in this method. + */ + protected function addUpdateMethods(&$script) + { + $this->addDoInsert($script); + $this->addDoUpdate($script); + $this->addDoDeleteAll($script); + $this->addDoDelete($script); + if ($this->isDeleteCascadeEmulationNeeded()) { + $this->addDoOnDeleteCascade($script); + } + if ($this->isDeleteSetNullEmulationNeeded()) { + $this->addDoOnDeleteSetNull($script); + } + $this->addDoValidate($script); + } + + /** + * Adds the retrieveByPK() (and possibly retrieveByPKs()) method(s) appropriate for this class. + * @param string &$script The script will be modified in this method. + */ + protected function addRetrieveByPKMethods(&$script) + { + if (count($this->getTable()->getPrimaryKey()) === 1) { + $this->addRetrieveByPK_SinglePK($script); + $this->addRetrieveByPKs_SinglePK($script); + } else { + $this->addRetrieveByPK_MultiPK($script); + } + } + + /** + * This method adds the contents of the generated class to the script. + * + * This method contains the high-level logic that determines which methods + * get generated. + * + * Hint: Override this method in your subclass if you want to reorganize or + * drastically change the contents of the generated peer class. + * + * @param string &$script The script will be modified in this method. + */ + protected function addClassBody(&$script) + { + + $table = $this->getTable(); + + if (!$table->isAlias()) { + $this->addConstantsAndAttributes($script); + } + + $this->addTranslateFieldName($script); + $this->addGetFieldNames($script); + + if (!$table->isAlias()) { + $this->addAlias($script); // alias() utility method (deprecated?) + $this->addSelectMethods($script); + $this->addGetTableMap($script); + } + + $this->addBuildTableMap($script); + + $this->addGetOMClassMethod($script); + + // add the insert, update, delete, validate etc. methods + if (!$table->isAlias() && !$table->isReadOnly()) { + $this->addUpdateMethods($script); + } + + if (count($table->getPrimaryKey()) > 0) { + $this->addRetrieveByPKMethods($script); + } + } + + /** + * Whether the platform in use requires ON DELETE CASCADE emulation and whether there are references to this table. + * @return boolean + */ + protected function isDeleteCascadeEmulationNeeded() + { + $table = $this->getTable(); + if ((!$this->getPlatform()->supportsNativeDeleteTrigger() || $this->getBuildProperty('emulateForeignKeyConstraints')) && count($table->getReferrers()) > 0) { + foreach ($table->getReferrers() as $fk) { + if ($fk->getOnDelete() == ForeignKey::CASCADE) { + return true; + } + } + } + return false; + } + + /** + * Whether the platform in use requires ON DELETE SETNULL emulation and whether there are references to this table. + * @return boolean + */ + protected function isDeleteSetNullEmulationNeeded() + { + $table = $this->getTable(); + if ((!$this->getPlatform()->supportsNativeDeleteTrigger() || $this->getBuildProperty('emulateForeignKeyConstraints')) && count($table->getReferrers()) > 0) { + foreach ($table->getReferrers() as $fk) { + if ($fk->getOnDelete() == ForeignKey::SETNULL) { + return true; + } + } + } + return false; + } + + /** + * Whether to add the generic mutator methods (setByName(), setByPosition(), fromArray()). + * This is based on the build property propel.addGenericMutators, and also whether the + * table is read-only or an alias. + * @return boolean + */ + protected function isAddGenericMutators() + { + $table = $this->getTable(); + return (!$table->isAlias() && $this->getBuildProperty('addGenericMutators') && !$table->isReadOnly()); + } + + /** + * Whether to add the generic accessor methods (getByName(), getByPosition(), toArray()). + * This is based on the build property propel.addGenericAccessors, and also whether the + * table is an alias. + * @return boolean + */ + protected function isAddGenericAccessors() + { + $table = $this->getTable(); + return (!$table->isAlias() && $this->getBuildProperty('addGenericAccessors')); + } + + /** + * Returns the retrieveByPK method name to use for this table. + * If the table is an alias then the method name looks like "retrieveTablenameByPK" + * otherwise simply "retrieveByPK". + * @return string + */ + public function getRetrieveMethodName() + { + if ($this->getTable()->isAlias()) { + $retrieveMethod = "retrieve" . $this->getTable()->getPhpName() . "ByPK"; + } else { + $retrieveMethod = "retrieveByPK"; + } + return $retrieveMethod; + } + + + /** + * COMPATIBILITY: Get the column constant name (e.g. PeerName::COLUMN_NAME). + * + * This method exists simply because it belonged to the 'PeerBuilder' that this + * class is replacing (because of name conflict more than actual functionality overlap). + * When the new builder model is finished this method will be removed. + * + * @param Column $col The column we need a name for. + * @param string $phpName The PHP Name of the peer class. The 'Peer' is appended automatically. + * + * @return string If $phpName is provided, then will return {$phpName}Peer::COLUMN_NAME; if not, just COLUMN_NAME. + * @deprecated + */ + public static function getColumnName(Column $col, $phpName = null) { + // was it overridden in schema.xml ? + if ($col->getPeerName()) { + $const = strtoupper($col->getPeerName()); + } else { + $const = strtoupper($col->getName()); + } + if ($phpName !== null) { + return $phpName . 'Peer::' . $const; + } else { + return $const; + } + } + + /** + * Checks whether any registered behavior on that table has a modifier for a hook + * @param string $hookName The name of the hook as called from one of this class methods, e.g. "preSave" + * @return boolean + */ + public function hasBehaviorModifier($hookName) + { + return parent::hasBehaviorModifier($hookName, 'PeerBuilderModifier'); + } + + /** + * Checks whether any registered behavior on that table has a modifier for a hook + * @param string $hookName The name of the hook as called from one of this class methods, e.g. "preSave" + * @param string &$script The script will be modified in this method. + */ + public function applyBehaviorModifier($hookName, &$script, $tab = " ") + { + return parent::applyBehaviorModifier($hookName, 'PeerBuilderModifier', $script, $tab); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/ClassTools.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/ClassTools.php new file mode 100644 index 0000000..6061f47 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/ClassTools.php @@ -0,0 +1,131 @@ +. + */ + + + /** + * Tools to support class & package inclusion and referencing. + * + * @author Hans Lellelid + * @version $Revision: 1262 $ + * @package propel.engine.builder.om + */ +class ClassTools { + + /** + * Gets just classname, given a dot-path to class. + * @param string $qualifiedName + * @return string + */ + public static function classname($qualifiedName) + { + $pos = strrpos($qualifiedName, '.'); + if ($pos === false) { + return $qualifiedName; // there is no '.' in the qualifed name + } else { + return substr($qualifiedName, $pos + 1); // start just after '.' + } + } + + /** + * Gets the path to be used in include()/require() statement. + * + * Supports multiple function signatures: + * + * (1) getFilePath($dotPathClass); + * (2) getFilePath($dotPathPrefix, $className); + * (3) getFilePath($dotPathPrefix, $className, $extension); + * + * @param string $path dot-path to class or to package prefix. + * @param string $classname class name + * @param string $extension The extension to use on the file. + * @return string The constructed file path. + */ + public static function getFilePath($path, $classname = null, $extension = '.php') + { + $path = strtr(ltrim($path, '.'), '.', '/'); + if ($classname !== null) { + if ($path !== "") { $path .= '/'; } + return $path . $classname . $extension; + } else { + return $path . $extension; + } + } + + /** + * Gets the basePeer path if specified for table/db. + * If not, will return 'propel.util.BasePeer' + * @return string + */ + public static function getBasePeer(Table $table) { + $class = $table->getBasePeer(); + if ($class === null) { + $class = "propel.util.BasePeer"; + } + return $class; + } + + /** + * Gets the baseClass path if specified for table/db. + * If not, will return 'propel.om.BaseObject' + * @return string + */ + public static function getBaseClass(Table $table) { + $class = $table->getBaseClass(); + if ($class === null) { + $class = "propel.om.BaseObject"; + } + return $class; + } + + /** + * Gets the interface path if specified for table. + * If not, will return 'propel.om.Persistent'. + * @return string + */ + public static function getInterface(Table $table) { + $interface = $table->getInterface(); + if ($interface === null && !$table->isReadOnly()) { + $interface = "propel.om.Persistent"; + } + return $interface; + } + + /** + * Gets a list of PHP reserved words. + * + * @return array string[] + */ + public static function getPhpReservedWords() + { + return array( + 'and', 'or', 'xor', 'exception', '__FILE__', '__LINE__', + 'array', 'as', 'break', 'case', 'class', 'const', 'continue', + 'declare', 'default', 'die', 'do', 'echo', 'else', 'elseif', 'empty', + 'enddeclare', 'endfor', 'endforeach', 'endif', 'endswitch', 'endwhile', + 'eval', 'exit', 'extends', 'for', 'foreach', 'function', 'global', + 'if', 'include', 'include_once', 'isset', 'list', 'new', 'print', 'require', + 'require_once', 'return', 'static', 'switch', 'unset', 'use', 'var', 'while', + '__FUNCTION__', '__CLASS__', '__METHOD__', 'final', 'php_user_filter', 'interface', + 'implements', 'extends', 'public', 'protected', 'private', 'abstract', 'clone', 'try', 'catch', + 'throw', 'this', 'namespace' + ); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/OMBuilder.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/OMBuilder.php new file mode 100644 index 0000000..af916ea --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/OMBuilder.php @@ -0,0 +1,368 @@ +. + */ + +require_once 'propel/engine/builder/DataModelBuilder.php'; + +/** + * Baseclass for OM-building classes. + * + * OM-building classes are those that build a PHP (or other) class to service + * a single table. This includes Peer classes, Entity classes, Map classes, + * Node classes, Nested Set classes, etc. + * + * @author Hans Lellelid + * @package propel.engine.builder.om + */ +abstract class OMBuilder extends DataModelBuilder { + + /** + * Builds the PHP source for current class and returns it as a string. + * + * This is the main entry point and defines a basic structure that classes should follow. + * In most cases this method will not need to be overridden by subclasses. This method + * does assume that the output language is PHP code, so it will need to be overridden if + * this is not the case. + * + * @return string The resulting PHP sourcecode. + */ + public function build() + { + $this->validateModel(); + + $script = "<" . "?php\n"; // intentional concatenation + if ($this->isAddIncludes()) { + $this->addIncludes($script); + } + $this->addClassOpen($script); + $this->addClassBody($script); + $this->addClassClose($script); + return $script; + } + + /** + * Validates the current table to make sure that it won't + * result in generated code that will not parse. + * + * This method may emit warnings for code which may cause problems + * and will throw exceptions for errors that will definitely cause + * problems. + */ + protected function validateModel() + { + // Validation is currently only implemented in the subclasses. + } + + /** + * Creates a $obj = new Book(); code snippet. Can be used by frameworks, for instance, to + * extend this behavior, e.g. initialize the object after creating the instance or so. + * + * @return string Some code + */ + public function buildObjectInstanceCreationCode($objName, $clsName) + { + return "$objName = new $clsName();"; + } + + /** + * Returns the qualified (prefixed) classname that is being built by the current class. + * This method must be implemented by child classes. + * @return string + */ + abstract public function getUnprefixedClassname(); + + /** + * Returns the prefixed clasname that is being built by the current class. + * @return string + * @see DataModelBuilder#prefixClassname() + */ + public function getClassname() + { + return $this->prefixClassname($this->getUnprefixedClassname()); + } + /** + * Gets the dot-path representation of current class being built. + * @return string + */ + public function getClasspath() + { + if ($this->getPackage()) { + $path = $this->getPackage() . '.' . $this->getClassname(); + } else { + $path = $this->getClassname(); + } + return $path; + } + + /** + * Gets the full path to the file for the current class. + * @return string + */ + public function getClassFilePath() + { + return ClassTools::getFilePath($this->getPackage(), $this->getClassname()); + } + + /** + * Gets package name for this table. + * This is overridden by child classes that have different packages. + * @return string + */ + public function getPackage() + { + $pkg = ($this->getTable()->getPackage() ? $this->getTable()->getPackage() : $this->getDatabase()->getPackage()); + if (!$pkg) { + $pkg = $this->getBuildProperty('targetPackage'); + } + return $pkg; + } + + /** + * Returns filesystem path for current package. + * @return string + */ + public function getPackagePath() + { + return strtr($this->getPackage(), '.', '/'); + } + + /** + * Shortcut method to return the [stub] peer classname for current table. + * This is the classname that is used whenever object or peer classes want + * to invoke methods of the peer classes. + * @return string (e.g. 'MyPeer') + * @see StubPeerBuilder::getClassname() + */ + public function getPeerClassname() { + return $this->getStubPeerBuilder()->getClassname(); + } + + /** + * Returns the object classname for current table. + * This is the classname that is used whenever object or peer classes want + * to invoke methods of the object classes. + * @return string (e.g. 'My') + * @see StubPeerBuilder::getClassname() + */ + public function getObjectClassname() { + return $this->getStubObjectBuilder()->getClassname(); + } + + /** + * Get the column constant name (e.g. PeerName::COLUMN_NAME). + * + * @param Column $col The column we need a name for. + * @param string $classname The Peer classname to use. + * + * @return string If $classname is provided, then will return $classname::COLUMN_NAME; if not, then the peername is looked up for current table to yield $currTablePeer::COLUMN_NAME. + */ + public function getColumnConstant($col, $classname = null) + { + if ($col === null) { + $e = new Exception("No col specified."); + print $e; + throw $e; + } + if ($classname === null) { + return $this->getBuildProperty('classPrefix') . $col->getConstantName(); + } + // was it overridden in schema.xml ? + if ($col->getPeerName()) { + $const = strtoupper($col->getPeerName()); + } else { + $const = strtoupper($col->getName()); + } + return $classname.'::'.$const; + } + + /** + * Gets the basePeer path if specified for table/db. + * If not, will return 'propel.util.BasePeer' + * @return string + */ + public function getBasePeer(Table $table) { + $class = $table->getBasePeer(); + if ($class === null) { + $class = "propel.util.BasePeer"; + } + return $class; + } + + /** + * Convenience method to get the foreign Table object for an fkey. + * @return Table + */ + protected function getForeignTable(ForeignKey $fk) + { + return $this->getTable()->getDatabase()->getTable($fk->getForeignTableName()); + } + + /** + * Gets the PHP method name affix to be used for fkeys for the current table (not referrers to this table). + * + * The difference between this method and the getRefFKPhpNameAffix() method is that in this method the + * classname in the affix is the foreign table classname. + * + * @param ForeignKey $fk The local FK that we need a name for. + * @param boolean $plural Whether the php name should be plural (e.g. initRelatedObjs() vs. addRelatedObj() + * @return string + */ + public function getFKPhpNameAffix(ForeignKey $fk, $plural = false) + { + if ($fk->getPhpName()) { + if ($plural) { + return $this->getPluralizer()->getPluralForm($fk->getPhpName()); + } else { + return $fk->getPhpName(); + } + } else { + $className = $this->getForeignTable($fk)->getPhpName(); + if ($plural) { + $className = $this->getPluralizer()->getPluralForm($className); + } + return $className . $this->getRelatedBySuffix($fk, true); + } + } + + /** + * Gets the PHP method name affix to be used for referencing foreign key methods and variable names (e.g. set????(), $coll???). + * + * The difference between this method and the getFKPhpNameAffix() method is that in this method the + * classname in the affix is the classname of the local fkey table. + * + * @param ForeignKey $fk The referrer FK that we need a name for. + * @param boolean $plural Whether the php name should be plural (e.g. initRelatedObjs() vs. addRelatedObj() + * @return string + */ + public function getRefFKPhpNameAffix(ForeignKey $fk, $plural = false) + { + if ($fk->getRefPhpName()) { + if ($plural) { + return $this->getPluralizer()->getPluralForm($fk->getRefPhpName()); + } else { + return $fk->getRefPhpName(); + } + } else { + $className = $fk->getTable()->getPhpName(); + if ($plural) { + $className = $this->getPluralizer()->getPluralForm($className); + } + return $className . $this->getRelatedBySuffix($fk); + } + } + + /** + * Gets the "RelatedBy*" suffix (if needed) that is attached to method and variable names. + * + * The related by suffix is based on the local columns of the foreign key. If there is more than + * one column in a table that points to the same foreign table, then a 'RelatedByLocalColName' suffix + * will be appended. + * + * @return string + */ + protected function getRelatedBySuffix(ForeignKey $fk, $columnCheck = false) + { + $relCol = ""; + foreach ($fk->getLocalColumns() as $columnName) { + $column = $fk->getTable()->getColumn($columnName); + if (!$column) { + throw new Exception("Could not fetch column: $columnName in table " . $fk->getTable()->getName()); + } + + if ( count($column->getTable()->getForeignKeysReferencingTable($fk->getForeignTableName())) > 1 + || $fk->getForeignTableName() == $fk->getTable()->getName()) { + // if there are seeral foreign keys that point to the same table + // then we need to generate methods like getAuthorRelatedByColName() + // instead of just getAuthor(). Currently we are doing the same + // for self-referential foreign keys, to avoid confusion. + $relCol .= $column->getPhpName(); + } + } + + #var_dump($fk->getForeignTableName() . ' - ' .$fk->getTableName() . ' - ' . $this->getTable()->getName()); + + #$fk->getForeignTableName() != $this->getTable()->getName() && + // @todo comment on it + if ($columnCheck && !$relCol && $fk->getTable()->getColumn($fk->getForeignTableName())) { + foreach ($fk->getLocalColumns() as $columnName) { + $column = $fk->getTable()->getColumn($columnName); + $relCol .= $column->getPhpName(); + } + } + + + if ($relCol != "") { + $relCol = "RelatedBy" . $relCol; + } + + return $relCol; + } + + /** + * Whether to add the include statements. + * This is based on the build property propel.addIncludes + */ + protected function isAddIncludes() + { + return $this->getBuildProperty('addIncludes'); + } + + /** + * Checks whether any registered behavior on that table has a modifier for a hook + * @param string $hookName The name of the hook as called from one of this class methods, e.g. "preSave" + * @param string $modifier The name of the modifier object providing the method in the behavior + * @return boolean + */ + public function hasBehaviorModifier($hookName, $modifier) + { + $modifierGetter = 'get' . $modifier; + foreach ($this->getTable()->getBehaviors() as $behavior) { + if(method_exists($behavior->$modifierGetter(), $hookName)) { + return true; + } + } + return false; + } + + /** + * Checks whether any registered behavior on that table has a modifier for a hook + * @param string $hookName The name of the hook as called from one of this class methods, e.g. "preSave" + * @param string $modifier The name of the modifier object providing the method in the behavior + * @param string &$script The script will be modified in this method. + */ + public function applyBehaviorModifier($hookName, $modifier, &$script, $tab = " ") + { + $modifierGetter = 'get' . $modifier; + foreach ($this->getTable()->getBehaviors() as $behavior) { + $modifier = $behavior->$modifierGetter(); + if(method_exists($modifier, $hookName)) { + if (strpos($hookName, 'Filter') !== false) { + // filter hook: the script string will be modified by the behavior + $modifier->$hookName($script); + } else { + // regular hook: the behavior returns a string to append to the script string + $script .= "\n" . $tab . '// ' . $behavior->getName() . " behavior\n"; + $script .= preg_replace('/^/m', $tab, $modifier->$hookName()); + } + } + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/ObjectBuilder.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/ObjectBuilder.php new file mode 100644 index 0000000..4432c74 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/ObjectBuilder.php @@ -0,0 +1,187 @@ +. + */ + +require_once 'propel/engine/builder/om/OMBuilder.php'; + +/** + * Base class for Peer-building classes. + * + * This class is designed so that it can be extended by a PHP4PeerBuilder in addition + * to the "standard" PHP5PeerBuilder and PHP5ComplexOMPeerBuilder. Hence, this class + * should not have any actual template code in it -- simply basic logic & utility + * methods. + * + * @author Hans Lellelid + * @package propel.engine.builder.om + */ +abstract class ObjectBuilder extends OMBuilder { + + /** + * Constructs a new PeerBuilder subclass. + */ + public function __construct(Table $table) { + parent::__construct($table); + } + + /** + * This method adds the contents of the generated class to the script. + * + * This method is abstract and should be overridden by the subclasses. + * + * Hint: Override this method in your subclass if you want to reorganize or + * drastically change the contents of the generated peer class. + * + * @param string &$script The script will be modified in this method. + */ + abstract protected function addClassBody(&$script); + + /** + * Adds the getter methods for the column values. + * This is here because it is probably generic enough to apply to templates being generated + * in different langauges (e.g. PHP4 and PHP5). + * @param string &$script The script will be modified in this method. + */ + protected function addColumnAccessorMethods(&$script) + { + $table = $this->getTable(); + + foreach ($table->getColumns() as $col) { + + // if they're not using the DateTime class than we will generate "compatibility" accessor method + if ($col->getType() === PropelTypes::DATE || $col->getType() === PropelTypes::TIME || $col->getType() === PropelTypes::TIMESTAMP) { + $this->addTemporalAccessor($script, $col); + } else { + $this->addDefaultAccessor($script, $col); + } + + if ($col->isLazyLoad()) { + $this->addLazyLoader($script, $col); + } + } + } + + /** + * Adds the mutator (setter) methods for setting column values. + * This is here because it is probably generic enough to apply to templates being generated + * in different langauges (e.g. PHP4 and PHP5). + * @param string &$script The script will be modified in this method. + */ + protected function addColumnMutatorMethods(&$script) + { + foreach ($this->getTable()->getColumns() as $col) { + + if ($col->isLobType()) { + $this->addLobMutator($script, $col); + } elseif ($col->getType() === PropelTypes::DATE || $col->getType() === PropelTypes::TIME || $col->getType() === PropelTypes::TIMESTAMP) { + $this->addTemporalMutator($script, $col); + } else { + $this->addDefaultMutator($script, $col); + } + } + } + + + /** + * Gets the baseClass path if specified for table/db. + * If not, will return 'propel.om.BaseObject' + * @return string + */ + protected function getBaseClass() { + $class = $this->getTable()->getBaseClass(); + if ($class === null) { + $class = "propel.om.BaseObject"; + } + return $class; + } + + /** + * Gets the interface path if specified for current table. + * If not, will return 'propel.om.Persistent'. + * @return string + */ + protected function getInterface() { + $interface = $this->getTable()->getInterface(); + if ($interface === null && !$this->getTable()->isReadOnly()) { + $interface = "propel.om.Persistent"; + } + return $interface; + } + + /** + * Whether to add the generic mutator methods (setByName(), setByPosition(), fromArray()). + * This is based on the build property propel.addGenericMutators, and also whether the + * table is read-only or an alias. + */ + protected function isAddGenericMutators() + { + $table = $this->getTable(); + return (!$table->isAlias() && $this->getBuildProperty('addGenericMutators') && !$table->isReadOnly()); + } + + /** + * Whether to add the generic accessor methods (getByName(), getByPosition(), toArray()). + * This is based on the build property propel.addGenericAccessors, and also whether the + * table is an alias. + */ + protected function isAddGenericAccessors() + { + $table = $this->getTable(); + return (!$table->isAlias() && $this->getBuildProperty('addGenericAccessors')); + } + + /** + * Whether to add the validate() method. + * This is based on the build property propel.addValidateMethod + */ + protected function isAddValidateMethod() + { + return $this->getBuildProperty('addValidateMethod'); + } + + protected function hasDefaultValues() + { + foreach ($this->getTable()->getColumns() as $col) { + if($col->getDefaultValue() !== null) return true; + } + return false; + } + + /** + * Checks whether any registered behavior on that table has a modifier for a hook + * @param string $hookName The name of the hook as called from one of this class methods, e.g. "preSave" + * @return boolean + */ + public function hasBehaviorModifier($hookName) + { + return parent::hasBehaviorModifier($hookName, 'ObjectBuilderModifier'); + } + + /** + * Checks whether any registered behavior on that table has a modifier for a hook + * @param string $hookName The name of the hook as called from one of this class methods, e.g. "preSave" + * @param string &$script The script will be modified in this method. + */ + public function applyBehaviorModifier($hookName, &$script, $tab = " ") + { + return parent::applyBehaviorModifier($hookName, 'ObjectBuilderModifier', $script, $tab); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/PeerBuilder.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/PeerBuilder.php new file mode 100644 index 0000000..dc87a0c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/PeerBuilder.php @@ -0,0 +1,299 @@ +. + */ + +require_once 'propel/engine/builder/om/OMBuilder.php'; + +/** + * Base class for Peer-building classes. + * + * This class is designed so that it can be extended by a PHP4PeerBuilder in addition + * to the "standard" PHP5PeerBuilder and PHP5ComplexOMPeerBuilder. Hence, this class + * should not have any actual template code in it -- simply basic logic & utility + * methods. + * + * @author Hans Lellelid + * @package propel.engine.builder.om + */ +abstract class PeerBuilder extends OMBuilder { + + protected $basePeerClass; + protected $basePeerClassname; + + /** + * Constructs a new PeerBuilder subclass. + */ + public function __construct(Table $table) { + parent::__construct($table); + $this->basePeerClassname = $this->basePeerClass = $this->getBasePeer($table); + $pos = strrpos($this->basePeerClassname, '.'); + if ($pos !== false) { + $this->basePeerClassname = substr($this->basePeerClassname, $pos + 1); + } + } + + /** + * Adds the addSelectColumns(), doCount(), etc. methods. + * @param string &$script The script will be modified in this method. + */ + protected function addSelectMethods(&$script) + { + $this->addAddSelectColumns($script); + + $this->addDoCount($script); + + // consider refactoring the doSelect stuff + // into a top-level method + $this->addDoSelectOne($script); + $this->addDoSelect($script); + $this->addDoSelectStmt($script); // <-- there's PDO code in here + + $this->addAddInstanceToPool($script); + $this->addRemoveInstanceFromPool($script); + $this->addGetInstanceFromPool($script); + $this->addClearInstancePool($script); + $this->addClearRelatedInstancePool($script); + + $this->addGetPrimaryKeyHash($script); + $this->addPopulateObjects($script); // <-- there's PDO code in here + + } + + /** + * Adds the correct getOMClass() method, depending on whether this table uses inheritance. + * @param string &$script The script will be modified in this method. + */ + protected function addGetOMClassMethod(&$script) + { + $table = $this->getTable(); + if ($table->getChildrenColumn()) { + if ($table->isAbstract()) { + $this->addGetOMClass_Inheritance_Abstract($script); + } else { + $this->addGetOMClass_Inheritance($script); + } + } else { + if ($table->isAbstract()) { + $this->addGetOMClass_NoInheritance_Abstract($script); + } else { + $this->addGetOMClass_NoInheritance($script); + } + } + } + + /** + * Adds the doInsert(), doUpdate(), doDeleteAll(), doValidate(), etc. methods. + * @param string &$script The script will be modified in this method. + */ + protected function addUpdateMethods(&$script) + { + $this->addDoInsert($script); + $this->addDoUpdate($script); + $this->addDoDeleteAll($script); + $this->addDoDelete($script); + if ($this->isDeleteCascadeEmulationNeeded()) { + $this->addDoOnDeleteCascade($script); + } + if ($this->isDeleteSetNullEmulationNeeded()) { + $this->addDoOnDeleteSetNull($script); + } + $this->addDoValidate($script); + } + + /** + * Adds the retrieveByPK() (and possibly retrieveByPKs()) method(s) appropriate for this class. + * @param string &$script The script will be modified in this method. + */ + protected function addRetrieveByPKMethods(&$script) + { + if (count($this->getTable()->getPrimaryKey()) === 1) { + $this->addRetrieveByPK_SinglePK($script); + $this->addRetrieveByPKs_SinglePK($script); + } else { + $this->addRetrieveByPK_MultiPK($script); + } + } + + /** + * This method adds the contents of the generated class to the script. + * + * This method contains the high-level logic that determines which methods + * get generated. + * + * Hint: Override this method in your subclass if you want to reorganize or + * drastically change the contents of the generated peer class. + * + * @param string &$script The script will be modified in this method. + */ + protected function addClassBody(&$script) + { + + $table = $this->getTable(); + + if (!$table->isAlias()) { + $this->addConstantsAndAttributes($script); + } + + $this->addTranslateFieldName($script); + $this->addGetFieldNames($script); + + if (!$table->isAlias()) { + $this->addAlias($script); // alias() utility method (deprecated?) + $this->addSelectMethods($script); + $this->addGetTableMap($script); + } + + $this->addBuildTableMap($script); + + $this->addGetOMClassMethod($script); + + // add the insert, update, delete, validate etc. methods + if (!$table->isAlias() && !$table->isReadOnly()) { + $this->addUpdateMethods($script); + } + + if (count($table->getPrimaryKey()) > 0) { + $this->addRetrieveByPKMethods($script); + } + } + + /** + * Whether the platform in use requires ON DELETE CASCADE emulation and whether there are references to this table. + * @return boolean + */ + protected function isDeleteCascadeEmulationNeeded() + { + $table = $this->getTable(); + if ((!$this->getPlatform()->supportsNativeDeleteTrigger() || $this->getBuildProperty('emulateForeignKeyConstraints')) && count($table->getReferrers()) > 0) { + foreach ($table->getReferrers() as $fk) { + if ($fk->getOnDelete() == ForeignKey::CASCADE) { + return true; + } + } + } + return false; + } + + /** + * Whether the platform in use requires ON DELETE SETNULL emulation and whether there are references to this table. + * @return boolean + */ + protected function isDeleteSetNullEmulationNeeded() + { + $table = $this->getTable(); + if ((!$this->getPlatform()->supportsNativeDeleteTrigger() || $this->getBuildProperty('emulateForeignKeyConstraints')) && count($table->getReferrers()) > 0) { + foreach ($table->getReferrers() as $fk) { + if ($fk->getOnDelete() == ForeignKey::SETNULL) { + return true; + } + } + } + return false; + } + + /** + * Whether to add the generic mutator methods (setByName(), setByPosition(), fromArray()). + * This is based on the build property propel.addGenericMutators, and also whether the + * table is read-only or an alias. + * @return boolean + */ + protected function isAddGenericMutators() + { + $table = $this->getTable(); + return (!$table->isAlias() && $this->getBuildProperty('addGenericMutators') && !$table->isReadOnly()); + } + + /** + * Whether to add the generic accessor methods (getByName(), getByPosition(), toArray()). + * This is based on the build property propel.addGenericAccessors, and also whether the + * table is an alias. + * @return boolean + */ + protected function isAddGenericAccessors() + { + $table = $this->getTable(); + return (!$table->isAlias() && $this->getBuildProperty('addGenericAccessors')); + } + + /** + * Returns the retrieveByPK method name to use for this table. + * If the table is an alias then the method name looks like "retrieveTablenameByPK" + * otherwise simply "retrieveByPK". + * @return string + */ + public function getRetrieveMethodName() + { + if ($this->getTable()->isAlias()) { + $retrieveMethod = "retrieve" . $this->getTable()->getPhpName() . "ByPK"; + } else { + $retrieveMethod = "retrieveByPK"; + } + return $retrieveMethod; + } + + + /** + * COMPATIBILITY: Get the column constant name (e.g. PeerName::COLUMN_NAME). + * + * This method exists simply because it belonged to the 'PeerBuilder' that this + * class is replacing (because of name conflict more than actual functionality overlap). + * When the new builder model is finished this method will be removed. + * + * @param Column $col The column we need a name for. + * @param string $phpName The PHP Name of the peer class. The 'Peer' is appended automatically. + * + * @return string If $phpName is provided, then will return {$phpName}Peer::COLUMN_NAME; if not, just COLUMN_NAME. + * @deprecated + */ + public static function getColumnName(Column $col, $phpName = null) { + // was it overridden in schema.xml ? + if ($col->getPeerName()) { + $const = strtoupper($col->getPeerName()); + } else { + $const = strtoupper($col->getName()); + } + if ($phpName !== null) { + return $phpName . 'Peer::' . $const; + } else { + return $const; + } + } + + /** + * Checks whether any registered behavior on that table has a modifier for a hook + * @param string $hookName The name of the hook as called from one of this class methods, e.g. "preSave" + * @return boolean + */ + public function hasBehaviorModifier($hookName) + { + return parent::hasBehaviorModifier($hookName, 'PeerBuilderModifier'); + } + + /** + * Checks whether any registered behavior on that table has a modifier for a hook + * @param string $hookName The name of the hook as called from one of this class methods, e.g. "preSave" + * @param string &$script The script will be modified in this method. + */ + public function applyBehaviorModifier($hookName, &$script, $tab = " ") + { + return parent::applyBehaviorModifier($hookName, 'PeerBuilderModifier', $script, $tab); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/all-wcprops new file mode 100644 index 0000000..47e22b4 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/all-wcprops @@ -0,0 +1,83 @@ +K 25 +svn:wc:ra_dav:version-url +V 73 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/builder/om/php5 +END +PHP5NodeBuilder.php +K 25 +svn:wc:ra_dav:version-url +V 93 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/builder/om/php5/PHP5NodeBuilder.php +END +PHP5TableMapBuilder.php +K 25 +svn:wc:ra_dav:version-url +V 97 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/builder/om/php5/PHP5TableMapBuilder.php +END +PHP5ObjectBuilder.php +K 25 +svn:wc:ra_dav:version-url +V 95 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/builder/om/php5/PHP5ObjectBuilder.php +END +PHP5ExtensionPeerBuilder.php +K 25 +svn:wc:ra_dav:version-url +V 102 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/builder/om/php5/PHP5ExtensionPeerBuilder.php +END +PHP5MultiExtendObjectBuilder.php +K 25 +svn:wc:ra_dav:version-url +V 106 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/builder/om/php5/PHP5MultiExtendObjectBuilder.php +END +PHP5NestedSetPeerBuilder.php +K 25 +svn:wc:ra_dav:version-url +V 102 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/builder/om/php5/PHP5NestedSetPeerBuilder.php +END +PHP5PeerBuilder.php +K 25 +svn:wc:ra_dav:version-url +V 93 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/builder/om/php5/PHP5PeerBuilder.php +END +PHP5ExtensionNodePeerBuilder.php +K 25 +svn:wc:ra_dav:version-url +V 106 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/builder/om/php5/PHP5ExtensionNodePeerBuilder.php +END +PHP5NestedSetBuilder.php +K 25 +svn:wc:ra_dav:version-url +V 98 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/builder/om/php5/PHP5NestedSetBuilder.php +END +PHP5InterfaceBuilder.php +K 25 +svn:wc:ra_dav:version-url +V 98 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/builder/om/php5/PHP5InterfaceBuilder.php +END +PHP5NodePeerBuilder.php +K 25 +svn:wc:ra_dav:version-url +V 97 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/builder/om/php5/PHP5NodePeerBuilder.php +END +PHP5ExtensionNodeBuilder.php +K 25 +svn:wc:ra_dav:version-url +V 102 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/builder/om/php5/PHP5ExtensionNodeBuilder.php +END +PHP5ExtensionObjectBuilder.php +K 25 +svn:wc:ra_dav:version-url +V 104 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/builder/om/php5/PHP5ExtensionObjectBuilder.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/entries new file mode 100644 index 0000000..82ea869 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/entries @@ -0,0 +1,470 @@ +10 + +dir +2332 +http://propel.mirror.svn.symfony-project.com/tags/1.4.2/generator/classes/propel/engine/builder/om/php5 +http://propel.mirror.svn.symfony-project.com + + + +2010-03-25T22:11:59.318183Z +1639 +francois + + + + + + + + + + + + + + +a84bc4f6-26e8-416f-aa96-3cde13879fbb + +PHP5NodeBuilder.php +file + + + + +2012-05-10T18:42:16.181552Z +b8f340109a948ac55acc74b44f212728 +2009-10-26T21:58:09.674984Z +1264 +francois +has-props + + + + + + + + + + + + + + + + + + + + +31460 + +PHP5TableMapBuilder.php +file + + + + +2012-05-10T18:42:16.181552Z +32eb6b6d4916e74691e1ffd5c1f610ed +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +10992 + +PHP5ObjectBuilder.php +file + + + + +2012-05-10T18:42:16.189549Z +46593473957e34c27d354e9b5ba03d2a +2010-03-25T22:11:59.318183Z +1639 +francois +has-props + + + + + + + + + + + + + + + + + + + + +123707 + +PHP5ExtensionPeerBuilder.php +file + + + + +2012-05-10T18:42:16.193552Z +9d46d7ab0f73d91be7203a6ef48bffd0 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +4294 + +PHP5MultiExtendObjectBuilder.php +file + + + + +2012-05-10T18:42:16.193552Z +d1e491c36b030298f36e2414722cdbd9 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +5688 + +PHP5NestedSetPeerBuilder.php +file + + + + +2012-05-10T18:42:16.205551Z +08fd343b7fb37b4de4e006ed6e30a6b8 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +53259 + +PHP5PeerBuilder.php +file + + + + +2012-05-10T18:42:16.213551Z +0ff8556640365b8bfce70f1ea04de9ea +2010-01-12T21:19:00.553581Z +1450 +francois +has-props + + + + + + + + + + + + + + + + + + + + +89873 + +PHP5ExtensionNodePeerBuilder.php +file + + + + +2012-05-10T18:42:16.221552Z +040fbc7ebd365151a601691d88e00082 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +3743 + +PHP5NestedSetBuilder.php +file + + + + +2012-05-10T18:42:16.221552Z +ded0035f0bd8e5c4ebc4172374d2f52b +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +28729 + +PHP5InterfaceBuilder.php +file + + + + +2012-05-10T18:42:16.225550Z +07cec5b0d81836ed476183e593ac12f3 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +3612 + +PHP5NodePeerBuilder.php +file + + + + +2012-05-10T18:42:16.229548Z +10db6450cc747c010f56578cf6880712 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +24527 + +PHP5ExtensionNodeBuilder.php +file + + + + +2012-05-10T18:42:16.229548Z +f6efdac79a0afa3b24b6dbf058082506 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +3694 + +PHP5ExtensionObjectBuilder.php +file + + + + +2012-05-10T18:42:16.229548Z +88ee9742adce862dcfae1e95a200b6f8 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +4950 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5ExtensionNodeBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5ExtensionNodeBuilder.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5ExtensionNodeBuilder.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5ExtensionNodePeerBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5ExtensionNodePeerBuilder.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5ExtensionNodePeerBuilder.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5ExtensionObjectBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5ExtensionObjectBuilder.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5ExtensionObjectBuilder.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5ExtensionPeerBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5ExtensionPeerBuilder.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5ExtensionPeerBuilder.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5InterfaceBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5InterfaceBuilder.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5InterfaceBuilder.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5MultiExtendObjectBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5MultiExtendObjectBuilder.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5MultiExtendObjectBuilder.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5NestedSetBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5NestedSetBuilder.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5NestedSetBuilder.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5NestedSetPeerBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5NestedSetPeerBuilder.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5NestedSetPeerBuilder.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5NodeBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5NodeBuilder.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5NodeBuilder.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5NodePeerBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5NodePeerBuilder.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5NodePeerBuilder.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5ObjectBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5ObjectBuilder.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5ObjectBuilder.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5PeerBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5PeerBuilder.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5PeerBuilder.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5TableMapBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5TableMapBuilder.php.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/prop-base/PHP5TableMapBuilder.php.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5ExtensionNodeBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5ExtensionNodeBuilder.php.svn-base new file mode 100644 index 0000000..d8f3df6 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5ExtensionNodeBuilder.php.svn-base @@ -0,0 +1,122 @@ +. + */ + +require_once 'propel/engine/builder/om/ObjectBuilder.php'; + +/** + * Generates the empty PHP5 stub node object class for user object model (OM). + * + * This class produces the empty stub class that can be customized with application + * business logic, custom behavior, etc. + * + * This class replaces the ExtensionNode.tpl, with the intent of being easier for users + * to customize (through extending & overriding). + * + * @author Hans Lellelid + * @package propel.engine.builder.om.php5 + */ +class PHP5ExtensionNodeBuilder extends ObjectBuilder { + + /** + * Returns the name of the current class being built. + * @return string + */ + public function getUnprefixedClassname() + { + return $this->getTable()->getPhpName() . 'Node'; + } + + /** + * Adds the include() statements for files that this class depends on or utilizes. + * @param string &$script The script will be modified in this method. + */ + protected function addIncludes(&$script) + { + $script .= " +require '".$this->getNodeBuilder()->getClassFilePath()."'; +"; + } // addIncludes() + + /** + * Adds class phpdoc comment and openning of class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassOpen(&$script) + { + + $table = $this->getTable(); + $tableName = $table->getName(); + $tableDesc = $table->getDescription(); + + $baseClassname = $this->getNodeBuilder()->getClassname(); + + $script .= " + +/** + * Skeleton subclass for representing a node from the '$tableName' table. + * + * $tableDesc + *"; + if ($this->getBuildProperty('addTimeStamp')) { + $now = strftime('%c'); + $script .= " + * This class was autogenerated by Propel " . $this->getBuildProperty('version') . " on: + * + * $now + *"; + } + $script .= " + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + * + * @package ".$this->getPackage()." + */ +class ".$this->getClassname()." extends $baseClassname { +"; + } + + /** + * Specifies the methods that are added as part of the stub object class. + * + * By default there are no methods for the empty stub classes; override this method + * if you want to change that behavior. + * + * @see ObjectBuilder::addClassBody() + */ + protected function addClassBody(&$script) + { + // there is no class body + } + + /** + * Closes class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassClose(&$script) + { + $script .= " +} // " . $this->getClassname() . " +"; + } + +} // PHP5ExtensionObjectBuilder diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5ExtensionNodePeerBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5ExtensionNodePeerBuilder.php.svn-base new file mode 100644 index 0000000..b240917 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5ExtensionNodePeerBuilder.php.svn-base @@ -0,0 +1,123 @@ +. + */ + +require_once 'propel/engine/builder/om/PeerBuilder.php'; + +/** + * Generates the empty PHP5 stub node peer class for user object model (OM). + * + * This class produces the empty stub class that can be customized with application + * business logic, custom behavior, etc. + * + * This class replaces the ExtensionNodePeer.tpl, with the intent of being easier for users + * to customize (through extending & overriding). + * + * @author Hans Lellelid + * @package propel.engine.builder.om.php5 + */ +class PHP5ExtensionNodePeerBuilder extends PeerBuilder { + + /** + * Returns the name of the current class being built. + * @return string + */ + public function getUnprefixedClassname() + { + return $this->getStubNodeBuilder()->getClassname() . 'Peer'; + } + + /** + * Adds the include() statements for files that this class depends on or utilizes. + * @param string &$script The script will be modified in this method. + */ + protected function addIncludes(&$script) + { + $script .=" +require '".$this->getNodePeerBuilder()->getClassFilePath()."'; +"; + } // addIncludes() + + /** + * Adds class phpdoc comment and openning of class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassOpen(&$script) + { + + $table = $this->getTable(); + $tableName = $table->getName(); + $tableDesc = $table->getDescription(); + + $baseClassname = $this->getNodePeerBuilder()->getClassname(); + + $script .= " + +/** + * Skeleton subclass for performing query and update operations on nodes of the '$tableName' table. + * + * $tableDesc + *"; + if ($this->getBuildProperty('addTimeStamp')) { + $now = strftime('%c'); + $script .= " + * This class was autogenerated by Propel " . $this->getBuildProperty('version') . " on: + * + * $now + *"; + } + $script .= " + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + * + * @package ".$this->getPackage()." + */ +class ".$this->getClassname()." extends $baseClassname { +"; + } + + /** + * Specifies the methods that are added as part of the stub peer class. + * + * By default there are no methods for the empty stub classes; override this method + * if you want to change that behavior. + * + * @see ObjectBuilder::addClassBody() + */ + + protected function addClassBody(&$script) + { + // there is no class body + } + + /** + * Closes class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassClose(&$script) + { + $script .= " +} // " . $this->getClassname() . " +"; + } + +} // PHP5ExtensionPeerBuilder diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5ExtensionObjectBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5ExtensionObjectBuilder.php.svn-base new file mode 100644 index 0000000..547ff3a --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5ExtensionObjectBuilder.php.svn-base @@ -0,0 +1,169 @@ +. + */ + +require_once 'propel/engine/builder/om/ObjectBuilder.php'; + +/** + * Generates the empty PHP5 stub object class for user object model (OM). + * + * This class produces the empty stub class that can be customized with application + * business logic, custom behavior, etc. + * + * This class replaces the ExtensionObject.tpl, with the intent of being easier for users + * to customize (through extending & overriding). + * + * @author Hans Lellelid + * @package propel.engine.builder.om.php5 + */ +class PHP5ExtensionObjectBuilder extends ObjectBuilder { + + /** + * Returns the name of the current class being built. + * @return string + */ + public function getUnprefixedClassname() + { + return $this->getTable()->getPhpName(); + } + + /** + * Adds the include() statements for files that this class depends on or utilizes. + * @param string &$script The script will be modified in this method. + */ + protected function addIncludes(&$script) + { + switch($this->getTable()->treeMode()) { + case 'NestedSet': + $requiredClassFilePath = $this->getNestedSetBuilder()->getClassFilePath(); + break; + + case 'MaterializedPath': + case 'AdjacencyList': + default: + $requiredClassFilePath = $this->getObjectBuilder()->getClassFilePath(); + break; + } + + $script .=" +require '".$requiredClassFilePath."'; +"; + } // addIncludes() + + /** + * Adds class phpdoc comment and openning of class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassOpen(&$script) + { + + $table = $this->getTable(); + $tableName = $table->getName(); + $tableDesc = $table->getDescription(); + + switch($table->treeMode()) { + case 'NestedSet': + $baseClassname = $this->getNestedSetBuilder()->getClassname(); + break; + + case 'MaterializedPath': + case "AdjacencyList": + default: + $baseClassname = $this->getObjectBuilder()->getClassname(); + break; + } + + $script .= " + +/** + * Skeleton subclass for representing a row from the '$tableName' table. + * + * $tableDesc + *"; + if ($this->getBuildProperty('addTimeStamp')) { + $now = strftime('%c'); + $script .= " + * This class was autogenerated by Propel " . $this->getBuildProperty('version') . " on: + * + * $now + *"; + } + $script .= " + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + * + * @package ".$this->getPackage()." + */ +".($table->isAbstract() ? "abstract " : "")."class ".$this->getClassname()." extends $baseClassname { +"; + } + + /** + * Specifies the methods that are added as part of the stub object class. + * + * By default there are no methods for the empty stub classes; override this method + * if you want to change that behavior. + * + * @see ObjectBuilder::addClassBody() + */ + protected function addClassBody(&$script) + { + if ($this->hasDefaultValues()) { + $this->addConstructor($script); + } + } + + /** + * Adds the applyDefaults() method, which is called from the constructor. + * @param string &$script The script will be modified in this method. + * @see addConstructor() + */ + protected function addConstructor(&$script) + { + $table = $this->getTable(); + $script .= " + /** + * Initializes internal state of ".$this->getClassname()." object. + * @see parent::__construct() + */ + public function __construct() + { + // Make sure that parent constructor is always invoked, since that + // is where any default values for this object are set. + parent::__construct(); + } +"; + } + + /** + * Closes class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassClose(&$script) + { + $script .= " +} // " . $this->getClassname() . " +"; + $this->applyBehaviorModifier('extensionObjectFilter', $script, ""); + } + +} // PHP5ExtensionObjectBuilder diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5ExtensionPeerBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5ExtensionPeerBuilder.php.svn-base new file mode 100644 index 0000000..4dbeb6e --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5ExtensionPeerBuilder.php.svn-base @@ -0,0 +1,146 @@ +. + */ + +require_once 'propel/engine/builder/om/PeerBuilder.php'; + +/** + * Generates the empty PHP5 stub peer class for user object model (OM). + * + * This class produces the empty stub class that can be customized with application + * business logic, custom behavior, etc. + * + * This class replaces the ExtensionPeer.tpl, with the intent of being easier for users + * to customize (through extending & overriding). + * + * @author Hans Lellelid + * @package propel.engine.builder.om.php5 + */ +class PHP5ExtensionPeerBuilder extends PeerBuilder { + + /** + * Returns the name of the current class being built. + * @return string + */ + public function getUnprefixedClassname() + { + return $this->getStubObjectBuilder()->getUnprefixedClassname() . 'Peer'; + } + + /** + * Adds the include() statements for files that this class depends on or utilizes. + * @param string &$script The script will be modified in this method. + */ + protected function addIncludes(&$script) + { + switch($this->getTable()->treeMode()) { + case 'NestedSet': + $requiredClassFilePath = $this->getNestedSetPeerBuilder()->getClassFilePath(); + break; + + case 'MaterializedPath': + case 'AdjacencyList': + default: + $requiredClassFilePath = $this->getPeerBuilder()->getClassFilePath(); + break; + } + + $script .=" +require '".$requiredClassFilePath."'; +"; + } // addIncludes() + + /** + * Adds class phpdoc comment and openning of class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassOpen(&$script) + { + $table = $this->getTable(); + $tableName = $table->getName(); + $tableDesc = $table->getDescription(); + + switch($table->treeMode()) { + case 'NestedSet': + $baseClassname = $this->getNestedSetPeerBuilder()->getClassname(); + break; + + case 'MaterializedPath': + case 'AdjacencyList': + default: + $baseClassname = $this->getPeerBuilder()->getClassname(); + break; + } + + $script .= " + +/** + * Skeleton subclass for performing query and update operations on the '$tableName' table. + * + * $tableDesc + *"; + if ($this->getBuildProperty('addTimeStamp')) { + $now = strftime('%c'); + $script .= " + * This class was autogenerated by Propel " . $this->getBuildProperty('version') . " on: + * + * $now + *"; + } + $script .= " + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + * + * @package ".$this->getPackage()." + */ +class ".$this->getClassname()." extends $baseClassname { +"; + } + + /** + * Specifies the methods that are added as part of the stub peer class. + * + * By default there are no methods for the empty stub classes; override this method + * if you want to change that behavior. + * + * @see ObjectBuilder::addClassBody() + */ + + protected function addClassBody(&$script) + { + // there is no class body + } + + /** + * Closes class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassClose(&$script) + { + $script .= " +} // " . $this->getClassname() . " +"; + $this->applyBehaviorModifier('extensionPeerFilter', $script, ""); + } + + +} // PHP5ExtensionPeerBuilder diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5InterfaceBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5InterfaceBuilder.php.svn-base new file mode 100644 index 0000000..66af68a --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5InterfaceBuilder.php.svn-base @@ -0,0 +1,119 @@ +. + */ + +require_once 'propel/engine/builder/om/ObjectBuilder.php'; + +/** + * Generates the empty PHP5 stub interface for user object model (OM). + * + * This class produces the empty stub interface when the interface="" attribute is used + * in the the schema xml. + * + * This class replaces the Interface.tpl, with the intent of being easier for users + * to customize (through extending & overriding). + * + * @author Hans Lellelid + * @package propel.engine.builder.om.php5 + */ +class PHP5InterfaceBuilder extends ObjectBuilder { + + /** + * Returns the name of the current class being built. + * @return string + */ + public function getUnprefixedClassname() + { + return ClassTools::classname($this->getInterface()); + } + + /** + * Adds the include() statements for files that this class depends on or utilizes. + * @param string &$script The script will be modified in this method. + */ + protected function addIncludes(&$script) + { + + } // addIncludes() + + /** + * Adds class phpdoc comment and openning of class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassOpen(&$script) + { + + $table = $this->getTable(); + $tableName = $table->getName(); + $tableDesc = $table->getDescription(); + + $baseClassname = $this->getObjectBuilder()->getClassname(); + + $script .= " +/** + * This is an interface that should be filled with the public api of the $tableName objects. + * + * $tableDesc + *"; + if ($this->getBuildProperty('addTimeStamp')) { + $now = strftime('%c'); + $script .= " + * This class was autogenerated by Propel " . $this->getBuildProperty('version') . " on: + * + * $now + *"; + } + $script .= " + * You should add additional method declarations to this interface to meet the + * application requirements. This interface will only be generated as + * long as it does not already exist in the output directory. + * + * @package ".$this->getPackage()." + */ +interface ".$this->getClassname()." { +"; + } + + /** + * Specifies the methods that are added as part of the stub object class. + * + * By default there are no methods for the empty stub classes; override this method + * if you want to change that behavior. + * + * @see ObjectBuilder::addClassBody() + */ + protected function addClassBody(&$script) + { + // there is no class body + } + + /** + * Closes class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassClose(&$script) + { + $script .= " +} // " . $this->getClassname() . " +"; + } + +} // PHP5ExtensionObjectBuilder diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5MultiExtendObjectBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5MultiExtendObjectBuilder.php.svn-base new file mode 100644 index 0000000..04d475d --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5MultiExtendObjectBuilder.php.svn-base @@ -0,0 +1,202 @@ +. + */ + +require_once 'propel/engine/builder/om/ObjectBuilder.php'; + +/** + * Generates the empty PHP5 stub object class for use with inheritance in the user object model (OM). + * + * This class produces the empty stub class that can be customized with application + * business logic, custom behavior, etc. + * + * This class replaces the MultiExtendObject.tpl, with the intent of being easier for users + * to customize (through extending & overriding). + * + * @author Hans Lellelid + * @package propel.engine.builder.om.php5 + */ +class PHP5MultiExtendObjectBuilder extends ObjectBuilder { + + /** + * The current child "object" we are operating on. + */ + private $child; + + /** + * Returns the name of the current class being built. + * @return string + */ + public function getUnprefixedClassname() + { + return $this->getChild()->getClassname(); + } + + /** + * Override method to return child package, if specified. + * @return string + */ + public function getPackage() + { + return ($this->child->getPackage() ? $this->child->getPackage() : parent::getPackage()); + } + + /** + * Set the child object that we're operating on currrently. + * @param $child Inheritance + */ + public function setChild(Inheritance $child) + { + $this->child = $child; + } + + /** + * Returns the child object we're operating on currently. + * @return Inheritance + * @throws BuildException - if child was not set. + */ + public function getChild() + { + if (!$this->child) { + throw new BuildException("The PHP5MultiExtendObjectBuilder needs to be told which child class to build (via setChild() method) before it can build the stub class."); + } + return $this->child; + } + + /** + * Returns classpath to parent class. + * @return string + */ + protected function getParentClasspath() + { + if ($this->getChild()->getAncestor()) { + return $this->getChild()->getAncestor(); + } else { + return $this->getObjectBuilder()->getClasspath(); + } + } + + /** + * Returns classname of parent class. + * @return string + */ + protected function getParentClassname() + { + return ClassTools::classname($this->getParentClasspath()); + } + + /** + * Gets the file path to the parent class. + * @return string + */ + protected function getParentClassFilePath() + { + return ClassTools::getFilePath($this->getParentClasspath()); + } + + /** + * Adds the include() statements for files that this class depends on or utilizes. + * @param string &$script The script will be modified in this method. + */ + protected function addIncludes(&$script) + { + } // addIncludes() + + /** + * Adds class phpdoc comment and openning of class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassOpen(&$script) + { + + $table = $this->getTable(); + $tableName = $table->getName(); + $tableDesc = $table->getDescription(); + + $baseClassname = $this->getObjectBuilder()->getClassname(); + + $script .= " + +/** + * Skeleton subclass for representing a row from one of the subclasses of the '$tableName' table. + * + * $tableDesc + *"; + if ($this->getBuildProperty('addTimeStamp')) { + $now = strftime('%c'); + $script .= " + * This class was autogenerated by Propel " . $this->getBuildProperty('version') . " on: + * + * $now + *"; + } + $script .= " + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + * + * @package ".$this->getPackage()." + */ +class ".$this->getClassname()." extends ".$this->getParentClassname()." { +"; + } + + /** + * Specifies the methods that are added as part of the stub object class. + * + * By default there are no methods for the empty stub classes; override this method + * if you want to change that behavior. + * + * @see ObjectBuilder::addClassBody() + */ + protected function addClassBody(&$script) + { + $child = $this->getChild(); + $col = $child->getColumn(); + $cfc = $col->getPhpName(); + + $const = "CLASSKEY_".strtoupper($child->getKey()); + + $script .= " + /** + * Constructs a new ".$this->getChild()->getClassname()." class, setting the ".$col->getName()." column to ".$this->getPeerClassname()."::$const. + */ + public function __construct() + {"; + $script .= " + parent::__construct(); + \$this->set$cfc(".$this->getPeerClassname()."::CLASSKEY_".strtoupper($child->getKey())."); + } +"; + } + + /** + * Closes class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassClose(&$script) + { + $script .= " +} // " . $this->getClassname() . " +"; + } + +} // PHP5ExtensionObjectBuilder diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5NestedSetBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5NestedSetBuilder.php.svn-base new file mode 100644 index 0000000..3bc3ed9 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5NestedSetBuilder.php.svn-base @@ -0,0 +1,1145 @@ +. + */ + +require_once 'propel/engine/builder/om/ObjectBuilder.php'; + +/** + * Generates a PHP5 tree node Object class for user object model (OM) using Nested Set way. + * + * This class produces the base tree node object class (e.g. BaseMyTableNestedSet) which contains all + * the custom-built accessor and setter methods. + * + * @author Heltem + * @package propel.engine.builder.om.php5 + */ +class PHP5NestedSetBuilder extends ObjectBuilder { + + /** + * Gets the package for the [base] object classes. + * @return string + */ + public function getPackage() + { + return parent::getPackage() . ".om"; + } + + /** + * Returns the name of the current class being built. + * @return string + */ + public function getUnprefixedClassname() + { + return $this->getBuildProperty('basePrefix') . $this->getStubObjectBuilder()->getUnprefixedClassname() . 'NestedSet'; + } + + /** + * Adds the include() statements for files that this class depends on or utilizes. + * @param string &$script The script will be modified in this method. + */ + protected function addIncludes(&$script) + { + $script .=" +require '".$this->getObjectBuilder()->getClassFilePath()."'; +"; + } // addIncludes() + + /** + * Adds class phpdoc comment and openning of class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassOpen(&$script) + { + + $table = $this->getTable(); + $tableName = $table->getName(); + $tableDesc = $table->getDescription(); + + $script .= " +/** + * Base class that represents a row from the '$tableName' table. + * + * $tableDesc + *"; + if ($this->getBuildProperty('addTimeStamp')) { + $now = strftime('%c'); + $script .= " + * This class was autogenerated by Propel " . $this->getBuildProperty('version') . " on: + * + * $now + *"; + } + $script .= " + * @package ".$this->getPackage()." + */ +abstract class ".$this->getClassname()." extends ".$this->getObjectBuilder()->getClassname()." implements NodeObject { +"; + } + + /** + * Specifies the methods that are added as part of the basic OM class. + * This can be overridden by subclasses that wish to add more methods. + * @see ObjectBuilder::addClassBody() + */ + protected function addClassBody(&$script) + { + $table = $this->getTable(); + + $this->addAttributes($script); + + $this->addGetIterator($script); + + $this->addSave($script); + $this->addDelete($script); + + $this->addMakeRoot($script); + + $this->addGetLevel($script); + $this->addGetPath($script); + + $this->addGetNumberOfChildren($script); + $this->addGetNumberOfDescendants($script); + + $this->addGetChildren($script); + $this->addGetDescendants($script); + + $this->addSetLevel($script); + + $this->addSetChildren($script); + $this->addSetParentNode($script); + $this->addSetPrevSibling($script); + $this->addSetNextSibling($script); + + $this->addIsRoot($script); + $this->addIsLeaf($script); + $this->addIsEqualTo($script); + + $this->addHasParent($script); + $this->addHasChildren($script); + $this->addHasPrevSibling($script); + $this->addHasNextSibling($script); + + $this->addRetrieveParent($script); + $this->addRetrieveFirstChild($script); + $this->addRetrieveLastChild($script); + $this->addRetrievePrevSibling($script); + $this->addRetrieveNextSibling($script); + + $this->addInsertAsFirstChildOf($script); + $this->addInsertAsLastChildOf($script); + + $this->addInsertAsPrevSiblingOf($script); + $this->addInsertAsNextSiblingOf($script); + + $this->addMoveToFirstChildOf($script); + $this->addMoveToLastChildOf($script); + + $this->addMoveToPrevSiblingOf($script); + $this->addMoveToNextSiblingOf($script); + + $this->addInsertAsParentOf($script); + + $this->addGetLeft($script); + $this->addGetRight($script); + $this->addGetScopeId($script); + + $this->addSetLeft($script); + $this->addSetRight($script); + $this->addSetScopeId($script); + } + + /** + * Closes class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassClose(&$script) + { + $script .= " +} // " . $this->getClassname() . " +"; + } + + + /** + * Adds class attributes. + * @param string &$script The script will be modified in this method. + */ + protected function addAttributes(&$script) + { + $objectClassName = $this->getStubObjectBuilder()->getClassname(); + $script .= " + /** + * Store level of node + * @var int + */ + protected \$level = null; + + /** + * Store if node has prev sibling + * @var bool + */ + protected \$hasPrevSibling = null; + + /** + * Store node if has prev sibling + * @var $objectClassName + */ + protected \$prevSibling = null; + + /** + * Store if node has next sibling + * @var bool + */ + protected \$hasNextSibling = null; + + /** + * Store node if has next sibling + * @var $objectClassName + */ + protected \$nextSibling = null; + + /** + * Store if node has parent node + * @var bool + */ + protected \$hasParentNode = null; + + /** + * The parent node for this node. + * @var $objectClassName + */ + protected \$parentNode = null; + + /** + * Store children of the node + * @var array + */ + protected \$_children = null; +"; + } + + protected function addGetIterator(&$script) + { + $script .= " + /** + * Returns a pre-order iterator for this node and its children. + * + * @return NodeIterator + */ + public function getIterator() + { + return new NestedSetRecursiveIterator(\$this); + } +"; + } + + protected function addSave(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Saves modified object data to the datastore. + * If object is saved without left/right values, set them as undefined (0) + * + * @param PropelPDO Connection to use. + * @return int The number of rows affected by this insert/update and any referring fk objects' save() operations. + * May be unreliable with parent/children/brother changes + * @throws PropelException + */ + public function save(PropelPDO \$con = null) + { + \$left = \$this->getLeftValue(); + \$right = \$this->getRightValue(); + if (empty(\$left) || empty(\$right)) { + \$root = $peerClassname::retrieveRoot(\$this->getScopeIdValue(), \$con); + $peerClassname::insertAsLastChildOf(\$this, \$root, \$con); + } + + return parent::save(\$con); + } +"; + } + + protected function addDelete(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Removes this object and all descendants from datastore. + * + * @param PropelPDO Connection to use. + * @return void + * @throws PropelException + */ + public function delete(PropelPDO \$con = null) + { + // delete node first + parent::delete(\$con); + + // delete descendants and then shift tree + $peerClassname::deleteDescendants(\$this, \$con); + } +"; + } + + protected function addMakeRoot(&$script) + { + $objectClassName = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Sets node properties to make it a root node. + * + * @return $objectClassName The current object (for fluent API support) + * @throws PropelException + */ + public function makeRoot() + { + $peerClassname::createRoot(\$this); + return \$this; + } +"; + } + + protected function addGetLevel(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Gets the level if set, otherwise calculates this and returns it + * + * @param PropelPDO Connection to use. + * @return int + */ + public function getLevel(PropelPDO \$con = null) + { + if (null === \$this->level) { + \$this->level = $peerClassname::getLevel(\$this, \$con); + } + return \$this->level; + } +"; + } + + protected function addSetLevel(&$script) + { + $objectClassName = $this->getStubObjectBuilder()->getClassname(); + $script .= " + /** + * Sets the level of the node in the tree + * + * @param int \$v new value + * @return $objectClassName The current object (for fluent API support) + */ + public function setLevel(\$level) + { + \$this->level = \$level; + return \$this; + } +"; + } + + protected function addSetChildren(&$script) + { + $objectClassName = $this->getStubObjectBuilder()->getClassname(); + $script .= " + /** + * Sets the children array of the node in the tree + * + * @param array of $objectClassName \$children array of Propel node object + * @return $objectClassName The current object (for fluent API support) + */ + public function setChildren(array \$children) + { + \$this->_children = \$children; + return \$this; + } +"; + } + + protected function addSetParentNode(&$script) + { + $objectClassName = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Sets the parentNode of the node in the tree + * + * @param $objectClassName \$parent Propel node object + * @return $objectClassName The current object (for fluent API support) + */ + public function setParentNode(NodeObject \$parent = null) + { + \$this->parentNode = (true === (\$this->hasParentNode = $peerClassname::isValid(\$parent))) ? \$parent : null; + return \$this; + } +"; + } + + protected function addSetPrevSibling(&$script) + { + $objectClassName = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Sets the previous sibling of the node in the tree + * + * @param $objectClassName \$node Propel node object + * @return $objectClassName The current object (for fluent API support) + */ + public function setPrevSibling(NodeObject \$node = null) + { + \$this->prevSibling = \$node; + \$this->hasPrevSibling = $peerClassname::isValid(\$node); + return \$this; + } +"; + } + + protected function addSetNextSibling(&$script) + { + $objectClassName = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Sets the next sibling of the node in the tree + * + * @param $objectClassName \$node Propel node object + * @return $objectClassName The current object (for fluent API support) + */ + public function setNextSibling(NodeObject \$node = null) + { + \$this->nextSibling = \$node; + \$this->hasNextSibling = $peerClassname::isValid(\$node); + return \$this; + } +"; + } + + protected function addGetPath(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Get the path to the node in the tree + * + * @param PropelPDO Connection to use. + * @return array + */ + public function getPath(PropelPDO \$con = null) + { + return $peerClassname::getPath(\$this, \$con); + } +"; + } + + protected function addGetNumberOfChildren(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Gets the number of children for the node (direct descendants) + * + * @param PropelPDO Connection to use. + * @return int + */ + public function getNumberOfChildren(PropelPDO \$con = null) + { + return $peerClassname::getNumberOfChildren(\$this, \$con); + } +"; + } + + protected function addGetNumberOfDescendants(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Gets the total number of descendants for the node + * + * @param PropelPDO Connection to use. + * @return int + */ + public function getNumberOfDescendants(PropelPDO \$con = null) + { + return $peerClassname::getNumberOfDescendants(\$this, \$con); + } +"; + } + + protected function addGetChildren(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Gets the children for the node + * + * @param PropelPDO Connection to use. + * @return array + */ + public function getChildren(PropelPDO \$con = null) + { + \$this->getLevel(); + + if (is_array(\$this->_children)) { + return \$this->_children; + } + + return $peerClassname::retrieveChildren(\$this, \$con); + } +"; + } + + protected function addGetDescendants(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Gets the descendants for the node + * + * @param PropelPDO Connection to use. + * @return array + */ + public function getDescendants(PropelPDO \$con = null) + { + \$this->getLevel(); + + return $peerClassname::retrieveDescendants(\$this, \$con); + } +"; + } + + protected function addIsRoot(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Returns true if node is the root node of the tree. + * + * @return bool + */ + public function isRoot() + { + return $peerClassname::isRoot(\$this); + } +"; + } + + protected function addIsLeaf(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Return true if the node is a leaf node + * + * @return bool + */ + public function isLeaf() + { + return $peerClassname::isLeaf(\$this); + } +"; + } + + protected function addIsEqualTo(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Tests if object is equal to \$node + * + * @param object \$node Propel object for node to compare to + * @return bool + */ + public function isEqualTo(NodeObject \$node) + { + return $peerClassname::isEqualTo(\$this, \$node); + } +"; + } + + protected function addHasParent(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Tests if object has an ancestor + * + * @param PropelPDO \$con Connection to use. + * @return bool + */ + public function hasParent(PropelPDO \$con = null) + { + if (null === \$this->hasParentNode) { + $peerClassname::hasParent(\$this, \$con); + } + return \$this->hasParentNode; + } +"; + } + + protected function addHasChildren(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Determines if the node has children / descendants + * + * @return bool + */ + public function hasChildren() + { + return $peerClassname::hasChildren(\$this); + } +"; + } + + protected function addHasPrevSibling(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Determines if the node has previous sibling + * + * @param PropelPDO \$con Connection to use. + * @return bool + */ + public function hasPrevSibling(PropelPDO \$con = null) + { + if (null === \$this->hasPrevSibling) { + $peerClassname::hasPrevSibling(\$this, \$con); + } + return \$this->hasPrevSibling; + } +"; + } + + protected function addHasNextSibling(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Determines if the node has next sibling + * + * @param PropelPDO \$con Connection to use. + * @return bool + */ + public function hasNextSibling(PropelPDO \$con = null) + { + if (null === \$this->hasNextSibling) { + $peerClassname::hasNextSibling(\$this, \$con); + } + return \$this->hasNextSibling; + } +"; + } + + protected function addRetrieveParent(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Gets ancestor for the given node if it exists + * + * @param PropelPDO \$con Connection to use. + * @return mixed Propel object if exists else false + */ + public function retrieveParent(PropelPDO \$con = null) + { + if (null === \$this->hasParentNode) { + \$this->parentNode = $peerClassname::retrieveParent(\$this, \$con); + \$this->hasParentNode = $peerClassname::isValid(\$this->parentNode); + } + return \$this->parentNode; + } +"; + } + + protected function addRetrieveFirstChild(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Gets first child if it exists + * + * @param PropelPDO \$con Connection to use. + * @return mixed Propel object if exists else false + */ + public function retrieveFirstChild(PropelPDO \$con = null) + { + if (\$this->hasChildren(\$con)) { + if (is_array(\$this->_children)) { + return \$this->_children[0]; + } + + return $peerClassname::retrieveFirstChild(\$this, \$con); + } + return false; + } +"; + } + + protected function addRetrieveLastChild(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Gets last child if it exists + * + * @param PropelPDO \$con Connection to use. + * @return mixed Propel object if exists else false + */ + public function retrieveLastChild(PropelPDO \$con = null) + { + if (\$this->hasChildren(\$con)) { + if (is_array(\$this->_children)) { + \$last = count(\$this->_children) - 1; + return \$this->_children[\$last]; + } + + return $peerClassname::retrieveLastChild(\$this, \$con); + } + return false; + } +"; + } + + protected function addRetrievePrevSibling(&$script) + { + $script .= " + /** + * Gets prev sibling for the given node if it exists + * + * @param PropelPDO \$con Connection to use. + * @return mixed Propel object if exists else false + */ + public function retrievePrevSibling(PropelPDO \$con = null) + { + if (\$this->hasPrevSibling(\$con)) { + return \$this->prevSibling; + } + return \$this->hasPrevSibling; + } +"; + } + + protected function addRetrieveNextSibling(&$script) + { + $script .= " + /** + * Gets next sibling for the given node if it exists + * + * @param PropelPDO \$con Connection to use. + * @return mixed Propel object if exists else false + */ + public function retrieveNextSibling(PropelPDO \$con = null) + { + if (\$this->hasNextSibling(\$con)) { + return \$this->nextSibling; + } + return \$this->hasNextSibling; + } +"; + } + + protected function addInsertAsFirstChildOf(&$script) + { + $objectClassName = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Inserts as first child of given destination node \$parent + * + * @param $objectClassName \$parent Propel object for destination node + * @param PropelPDO \$con Connection to use. + * @return $objectClassName The current object (for fluent API support) + * @throws PropelException - if this object already exists + */ + public function insertAsFirstChildOf(NodeObject \$parent, PropelPDO \$con = null) + { + if (!\$this->isNew()) + { + throw new PropelException(\"$objectClassName must be new.\"); + } + $peerClassname::insertAsFirstChildOf(\$this, \$parent, \$con); + return \$this; + } +"; + } + + protected function addInsertAsLastChildOf(&$script) + { + $objectClassName = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Inserts as last child of given destination node \$parent + * + * @param $objectClassName \$parent Propel object for destination node + * @param PropelPDO \$con Connection to use. + * @return $objectClassName The current object (for fluent API support) + * @throws PropelException - if this object already exists + */ + public function insertAsLastChildOf(NodeObject \$parent, PropelPDO \$con = null) + { + if (!\$this->isNew()) + { + throw new PropelException(\"$objectClassName must be new.\"); + } + $peerClassname::insertAsLastChildOf(\$this, \$parent, \$con); + return \$this; + } +"; + } + + protected function addInsertAsPrevSiblingOf(&$script) + { + $objectClassName = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Inserts \$node as previous sibling to given destination node \$dest + * + * @param $objectClassName \$dest Propel object for destination node + * @param PropelPDO \$con Connection to use. + * @return $objectClassName The current object (for fluent API support) + * @throws PropelException - if this object already exists + */ + public function insertAsPrevSiblingOf(NodeObject \$dest, PropelPDO \$con = null) + { + if (!\$this->isNew()) + { + throw new PropelException(\"$objectClassName must be new.\"); + } + $peerClassname::insertAsPrevSiblingOf(\$this, \$dest, \$con); + return \$this; + } +"; + } + + protected function addInsertAsNextSiblingOf(&$script) + { + $objectClassName = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Inserts \$node as next sibling to given destination node \$dest + * + * @param $objectClassName \$dest Propel object for destination node + * @param PropelPDO \$con Connection to use. + * @return $objectClassName The current object (for fluent API support) + * @throws PropelException - if this object already exists + */ + public function insertAsNextSiblingOf(NodeObject \$dest, PropelPDO \$con = null) + { + if (!\$this->isNew()) + { + throw new PropelException(\"$objectClassName must be new.\"); + } + $peerClassname::insertAsNextSiblingOf(\$this, \$dest, \$con); + return \$this; + } +"; + } + + protected function addMoveToFirstChildOf(&$script) + { + $objectClassName = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Moves node to be first child of \$parent + * + * @param $objectClassName \$parent Propel object for destination node + * @param PropelPDO \$con Connection to use. + * @return $objectClassName The current object (for fluent API support) + */ + public function moveToFirstChildOf(NodeObject \$parent, PropelPDO \$con = null) + { + if (\$this->isNew()) + { + throw new PropelException(\"$objectClassName must exist in tree.\"); + } + $peerClassname::moveToFirstChildOf(\$parent, \$this, \$con); + return \$this; + } +"; + } + + protected function addMoveToLastChildOf(&$script) + { + $objectClassName = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Moves node to be last child of \$parent + * + * @param $objectClassName \$parent Propel object for destination node + * @param PropelPDO \$con Connection to use. + * @return $objectClassName The current object (for fluent API support) + */ + public function moveToLastChildOf(NodeObject \$parent, PropelPDO \$con = null) + { + if (\$this->isNew()) + { + throw new PropelException(\"$objectClassName must exist in tree.\"); + } + $peerClassname::moveToLastChildOf(\$parent, \$this, \$con); + return \$this; + } +"; + } + + protected function addMoveToPrevSiblingOf(&$script) + { + $objectClassName = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Moves node to be prev sibling to \$dest + * + * @param $objectClassName \$dest Propel object for destination node + * @param PropelPDO \$con Connection to use. + * @return $objectClassName The current object (for fluent API support) + */ + public function moveToPrevSiblingOf(NodeObject \$dest, PropelPDO \$con = null) + { + if (\$this->isNew()) + { + throw new PropelException(\"$objectClassName must exist in tree.\"); + } + $peerClassname::moveToPrevSiblingOf(\$dest, \$this, \$con); + return \$this; + } +"; + } + + protected function addMoveToNextSiblingOf(&$script) + { + $objectClassName = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Moves node to be next sibling to \$dest + * + * @param $objectClassName \$dest Propel object for destination node + * @param PropelPDO \$con Connection to use. + * @return $objectClassName The current object (for fluent API support) + */ + public function moveToNextSiblingOf(NodeObject \$dest, PropelPDO \$con = null) + { + if (\$this->isNew()) + { + throw new PropelException(\"$objectClassName must exist in tree.\"); + } + $peerClassname::moveToNextSiblingOf(\$dest, \$this, \$con); + return \$this; + } +"; + } + + protected function addInsertAsParentOf(&$script) + { + $objectClassName = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Inserts node as parent of given node. + * + * @param $objectClassName \$node Propel object for destination node + * @param PropelPDO \$con Connection to use. + * @return $objectClassName The current object (for fluent API support) + */ + public function insertAsParentOf(NodeObject \$node, PropelPDO \$con = null) + { + $peerClassname::insertAsParentOf(\$this, \$node, \$con); + return \$this; + } +"; + } + + protected function addGetLeft(&$script) + { + $table = $this->getTable(); + + foreach ($table->getColumns() as $col) { + if ($col->isNestedSetLeftKey()) { + $left_col_getter_name = 'get'.$col->getPhpName(); + break; + } + } + + $script .= " + /** + * Wraps the getter for the left value + * + * @return int + */ + public function getLeftValue() + { + return \$this->$left_col_getter_name(); + } +"; + } + + protected function addGetRight(&$script) + { + $table = $this->getTable(); + + foreach ($table->getColumns() as $col) { + if ($col->isNestedSetRightKey()) { + $right_col_getter_name = 'get'.$col->getPhpName(); + break; + } + } + + $script .= " + /** + * Wraps the getter for the right value + * + * @return int + */ + public function getRightValue() + { + return \$this->$right_col_getter_name(); + } +"; + } + + protected function addGetScopeId(&$script) + { + $table = $this->getTable(); + + $scope_col_getter_name = null; + foreach ($table->getColumns() as $col) { + if ($col->isTreeScopeKey()) { + $scope_col_getter_name = 'get'.$col->getPhpName(); + break; + } + } + + $script .= " + /** + * Wraps the getter for the scope value + * + * @return int or null if scope is disabled + */ + public function getScopeIdValue() + {"; + if ($scope_col_getter_name) { + $script .= " + return \$this->$scope_col_getter_name();"; + } else { + $script .= " + return null;"; + } + $script .= " + } +"; + } + + protected function addSetLeft(&$script) + { + $objectClassName = $this->getStubObjectBuilder()->getClassname(); + $table = $this->getTable(); + + foreach ($table->getColumns() as $col) { + if ($col->isNestedSetLeftKey()) { + $left_col_setter_name = 'set'.$col->getPhpName(); + break; + } + } + + $script .= " + /** + * Set the value left column + * + * @param int \$v new value + * @return $objectClassName The current object (for fluent API support) + */ + public function setLeftValue(\$v) + { + \$this->$left_col_setter_name(\$v); + return \$this; + } +"; + } + + protected function addSetRight(&$script) + { + $objectClassName = $this->getStubObjectBuilder()->getClassname(); + $table = $this->getTable(); + + foreach ($table->getColumns() as $col) { + if ($col->isNestedSetRightKey()) { + $right_col_setter_name = 'set'.$col->getPhpName(); + break; + } + } + + $script .= " + /** + * Set the value of right column + * + * @param int \$v new value + * @return $objectClassName The current object (for fluent API support) + */ + public function setRightValue(\$v) + { + \$this->$right_col_setter_name(\$v); + return \$this; + } +"; + } + + protected function addSetScopeId(&$script) + { + $objectClassName = $this->getStubObjectBuilder()->getClassname(); + $table = $this->getTable(); + + $scope_col_setter_name = null; + foreach ($table->getColumns() as $col) { + if ($col->isTreeScopeKey()) { + $scope_col_setter_name = 'set'.$col->getPhpName(); + break; + } + } + + $script .= " + /** + * Set the value of scope column + * + * @param int \$v new value + * @return $objectClassName The current object (for fluent API support) + */ + public function setScopeIdValue(\$v) + {"; + if ($scope_col_setter_name) { + $script .= " + \$this->$scope_col_setter_name(\$v);"; + } + $script .= " + return \$this; + } +"; + + } + +} // PHP5NestedSetBuilder diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5NestedSetPeerBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5NestedSetPeerBuilder.php.svn-base new file mode 100644 index 0000000..62f4de0 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5NestedSetPeerBuilder.php.svn-base @@ -0,0 +1,1737 @@ +. + */ + +require_once 'propel/engine/builder/om/PeerBuilder.php'; + +/** + * Generates a PHP5 tree nested set Peer class for user object model (OM). + * + * This class produces the base tree nested set object class (e.g. BaseMyTable) which contains all + * the custom-built accessor and setter methods. + * + * This class replaces the Node.tpl, with the intent of being easier for users + * to customize (through extending & overriding). + * + * @author heltem + * @package propel.engine.builder.om.php5 + */ +class PHP5NestedSetPeerBuilder extends PeerBuilder { + + /** + * Gets the package for the [base] object classes. + * @return string + */ + public function getPackage() + { + return parent::getPackage() . ".om"; + } + + /** + * Returns the name of the current class being built. + * @return string + */ + public function getUnprefixedClassname() + { + return $this->getBuildProperty('basePrefix') . $this->getStubObjectBuilder()->getUnprefixedClassname() . 'NestedSetPeer'; + } + + /** + * Adds the include() statements for files that this class depends on or utilizes. + * @param string &$script The script will be modified in this method. + */ + protected function addIncludes(&$script) + { + $script .=" +require '".$this->getPeerBuilder()->getClassFilePath()."'; +"; + } // addIncludes() + + /** + * Adds class phpdoc comment and openning of class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassOpen(&$script) + { + + $table = $this->getTable(); + $tableName = $table->getName(); + $tableDesc = $table->getDescription(); + + $script .= " +/** + * Base static class for performing query operations on the tree contained by the '$tableName' table. + * + * $tableDesc + *"; + if ($this->getBuildProperty('addTimeStamp')) { + $now = strftime('%c'); + $script .= " + * This class was autogenerated by Propel " . $this->getBuildProperty('version') . " on: + * + * $now + *"; + } + $script .= " + * @package ".$this->getPackage()." + */ +abstract class ".$this->getClassname()." extends ".$this->getPeerBuilder()->getClassName()." implements NodePeer { +"; + } + + /** + * Specifies the methods that are added as part of the basic OM class. + * This can be overridden by subclasses that wish to add more methods. + * @see ObjectBuilder::addClassBody() + */ + protected function addClassBody(&$script) + { + $table = $this->getTable(); + + // FIXME + // - Probably the build needs to be customized for supporting + // tables that are "aliases". -- definitely a fringe usecase, though. + + $this->addConstants($script); + + $this->addCreateRoot($script); + + $this->addRetrieveRoot($script); + + $this->addInsertAsFirstChildOf($script); + $this->addInsertAsLastChildOf($script); + $this->addInsertAsPrevSiblingOf($script); + $this->addInsertAsNextSiblingOf($script); + $this->addInsertAsParentOf($script); + + $this->addInsertRoot($script); + $this->addInsertParent($script); + + $this->addDeleteRoot($script); + $this->addDeleteNode($script); + + $this->addMoveToFirstChildOf($script); + $this->addMoveToLastChildOf($script); + $this->addMoveToPrevSiblingOf($script); + $this->addMoveToNextSiblingOf($script); + + $this->addRetrieveFirstChild($script); + $this->addRetrieveLastChild($script); + $this->addRetrievePrevSibling($script); + $this->addRetrieveNextSibling($script); + + $this->addRetrieveTree($script); + $this->addRetrieveBranch($script); + $this->addRetrieveChildren($script); + $this->addRetrieveDescendants($script); + $this->addRetrieveSiblings($script); + $this->addRetrieveParent($script); + + $this->addGetLevel($script); + $this->addGetNumberOfChildren($script); + $this->addGetNumberOfDescendants($script); + $this->addGetPath($script); + + $this->addIsValid($script); + $this->addIsRoot($script); + $this->addIsLeaf($script); + $this->addIsChildOf($script); + $this->addIsChildOfOrSiblingTo($script); + $this->addIsEqualTo($script); + + $this->addHasParent($script); + $this->addHasPrevSibling($script); + $this->addHasNextSibling($script); + $this->addHasChildren($script); + + $this->addDeleteDescendants($script); + + $this->addGetNode($script); + + $this->addHydrateDescendants($script); + $this->addHydrateChildren($script); + + $this->addShiftRParent($script); + $this->addUpdateLoadedNode($script); + $this->addUpdateDBNode($script); + + $this->addShiftRLValues($script); + $this->addShiftRLRange($script); + } + + /** + * Closes class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassClose(&$script) + { + $script .= " +} // " . $this->getClassname() . " +"; + } + + protected function addConstants(&$script) + { + $table = $this->getTable(); + $tableName = $table->getName(); + + $colname = array(); + + foreach ($table->getColumns() as $col) { + if ($col->isNestedSetLeftKey()) { + $colname['left'] = $this->prefixTablename($tableName) . '.' . strtoupper($col->getName()); + } + + if ($col->isNestedSetRightKey()) { + $colname['right'] = $this->prefixTablename($tableName) . '.' . strtoupper($col->getName()); + } + + if ($col->isTreeScopeKey()) { + $colname['scope'] = $this->prefixTablename($tableName) . '.' . strtoupper($col->getName()); + } + + if (3 == count($colname)) { + break; + } + } + + if(!isset($colname['left'])) { + throw new EngineException("One column must have nestedSetLeftKey attribute set to true for [" . $table->getName() . "] table"); + } + + if(!isset($colname['right'])) { + throw new EngineException("One column must have nestedSetRightKey attribute set to true for [" . $table->getName() . "] table"); + } + + $colname['scope'] = isset($colname['scope']) ? $colname['scope'] : null; + + $script .= " + /** + * Left column for the set + */ + const LEFT_COL = " . var_export($colname['left'], true) . "; + + /** + * Right column for the set + */ + const RIGHT_COL = " . var_export($colname['right'], true) . "; + + /** + * Scope column for the set + */ + const SCOPE_COL = " . var_export($colname['scope'], true) . "; +"; + } + + protected function addCreateRoot(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Creates the supplied node as the root node. + * + * @param $objectClassname \$node Propel object for model + * @throws PropelException + */ + public static function createRoot(NodeObject \$node) + { + if (\$node->getLeftValue()) { + throw new PropelException('Cannot turn an existing node into a root node.'); + } + + \$node->setLeftValue(1); + \$node->setRightValue(2); + } +"; + } + + protected function addRetrieveRoot(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Returns the root node for a given scope id + * + * @param int \$scopeId Scope id to determine which root node to return + * @param PropelPDO \$con Connection to use. + * @return $objectClassname Propel object for root node + */ + public static function retrieveRoot(\$scopeId = null, PropelPDO \$con = null) + { + \$c = new Criteria($peerClassname::DATABASE_NAME); + + \$c->add(self::LEFT_COL, 1, Criteria::EQUAL); + + if (self::SCOPE_COL) { + \$c->add(self::SCOPE_COL, \$scopeId, Criteria::EQUAL); + } + + return $peerClassname::doSelectOne(\$c, \$con); + } +"; + } + + protected function addInsertAsFirstChildOf(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Inserts \$child as first child of given \$parent node + * + * @param $objectClassname \$child Propel object for child node + * @param $objectClassname \$parent Propel object for parent node + * @param PropelPDO \$con Connection to use. + * @return void + */ + public static function insertAsFirstChildOf(NodeObject \$child, NodeObject \$parent, PropelPDO \$con = null) + { + // Update \$child node properties + \$child->setLeftValue(\$parent->getLeftValue() + 1); + \$child->setRightValue(\$parent->getLeftValue() + 2); + \$child->setParentNode(\$parent); + + \$sidv = null; + if (self::SCOPE_COL) { + \$child->setScopeIdValue(\$sidv = \$parent->getScopeIdValue()); + } + + // Update database nodes + self::shiftRLValues(\$child->getLeftValue(), 2, \$con, \$sidv); + + // Update all loaded nodes + self::updateLoadedNode(\$parent, 2, \$con); + } +"; + } + + protected function addInsertAsLastChildOf(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Inserts \$child as last child of destination node \$parent + * + * @param $objectClassname \$child Propel object for child node + * @param $objectClassname \$parent Propel object for parent node + * @param PropelPDO \$con Connection to use. + * @return void + */ + public static function insertAsLastChildOf(NodeObject \$child, NodeObject \$parent, PropelPDO \$con = null) + { + // Update \$child node properties + \$child->setLeftValue(\$parent->getRightValue()); + \$child->setRightValue(\$parent->getRightValue() + 1); + \$child->setParentNode(\$parent); + + \$sidv = null; + if (self::SCOPE_COL) { + \$child->setScopeIdValue(\$sidv = \$parent->getScopeIdValue()); + } + + // Update database nodes + self::shiftRLValues(\$child->getLeftValue(), 2, \$con, \$sidv); + + // Update all loaded nodes + self::updateLoadedNode(\$parent, 2, \$con); + } +"; + } + + protected function addInsertAsPrevSiblingOf(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Inserts \$sibling as previous sibling to destination node \$node + * + * @param $objectClassname \$node Propel object for destination node + * @param $objectClassname \$sibling Propel object for source node + * @param PropelPDO \$con Connection to use. + * @return void + */ + public static function insertAsPrevSiblingOf(NodeObject \$node, NodeObject \$sibling, PropelPDO \$con = null) + { + if (\$sibling->isRoot()) { + throw new PropelException('Root nodes cannot have siblings'); + } + + \$node->setLeftValue(\$sibling->getLeftValue()); + \$node->setRightValue(\$sibling->getLeftValue() + 1); + \$node->setParentNode(\$sibling->retrieveParent()); + + \$sidv = null; + if (self::SCOPE_COL) { + \$node->setScopeIdValue(\$sidv = \$sibling->getScopeIdValue()); + } + + // Update database nodes + self::shiftRLValues(\$node->getLeftValue(), 2, \$con, \$sidv); + + // Update all loaded nodes + self::updateLoadedNode(\$sibling->retrieveParent(), 2, \$con); + } +"; + } + + protected function addInsertAsNextSiblingOf(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Inserts \$sibling as next sibling to destination node \$node + * + * @param $objectClassname \$node Propel object for destination node + * @param $objectClassname \$sibling Propel object for source node + * @param PropelPDO \$con Connection to use. + * @return void + */ + public static function insertAsNextSiblingOf(NodeObject \$node, NodeObject \$sibling, PropelPDO \$con = null) + { + if (\$sibling->isRoot()) { + throw new PropelException('Root nodes cannot have siblings'); + } + + \$node->setLeftValue(\$sibling->getRightValue() + 1); + \$node->setRightValue(\$sibling->getRightValue() + 2); + \$node->setParentNode(\$sibling->retrieveParent()); + + \$sidv = null; + if (self::SCOPE_COL) { + \$node->setScopeIdValue(\$sidv = \$sibling->getScopeIdValue()); + } + + // Update database nodes + self::shiftRLValues(\$node->getLeftValue(), 2, \$con, \$sidv); + + // Update all loaded nodes + self::updateLoadedNode(\$sibling->retrieveParent(), 2, \$con); + } +"; + } + + protected function addInsertAsParentOf(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Inserts \$parent as parent of given node. + * + * @param $objectClassname \$parent Propel object for given parent node + * @param $objectClassname \$node Propel object for given destination node + * @param PropelPDO \$con Connection to use. + * @return void + */ + public static function insertAsParentOf(NodeObject \$parent, NodeObject \$node, PropelPDO \$con = null) + { + \$sidv = null; + if (self::SCOPE_COL) { + \$sidv = \$node->getScopeIdValue(); + } + + self::shiftRLValues(\$node->getLeftValue(), 1, \$con, \$sidv); + self::shiftRLValues(\$node->getRightValue() + 2, 1, \$con, \$sidv); + + if (self::SCOPE_COL) { + \$parent->setScopeIdValue(\$sidv); + } + + \$parent->setLeftValue(\$node->getLeftValue()); + \$parent->setRightValue(\$node->getRightValue() + 2); + + \$previous_parent = \$node->retrieveParent(); + \$parent->setParentNode(\$previous_parent); + \$node->setParentNode(\$parent); + + \$node->save(\$con); + + // Update all loaded nodes + self::updateLoadedNode(\$previous_parent, 2, \$con); + } +"; + } + + protected function addInsertRoot(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Inserts \$node as root node + * + * @param $objectClassname \$node Propel object as root node + * @param PropelPDO \$con Connection to use. + * @return void + */ + public static function insertRoot(NodeObject \$node, PropelPDO \$con = null) + { + \$sidv = null; + if (self::SCOPE_COL) { + \$sidv = \$node->getScopeIdValue(); + } + + $peerClassname::insertAsParentOf($peerClassname::retrieveRoot(\$sidv, \$con), \$node, \$con); + } +"; + } + + protected function addInsertParent(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Inserts \$parent as parent to destination node \$child + * + * @deprecated 1.3 - 2007/11/06 + * @see insertAsParentOf() + * @param $objectClassname \$child Propel object to become child node + * @param $objectClassname \$parent Propel object as parent node + * @param PropelPDO \$con Connection to use. + * @return void + */ + public static function insertParent(NodeObject \$child, NodeObject \$parent, PropelPDO \$con = null) + { + self::insertAsParentOf(\$parent, \$child, \$con); + } +"; + } + + protected function addDeleteRoot(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Delete root node + * + * @param PropelPDO \$con Connection to use. + * @return boolean Deletion status + */ + public static function deleteRoot(\$scopeId = null, PropelPDO \$con = null) + { + if (!self::SCOPE_COL) { + \$scopeId = null; + } + \$root = $peerClassname::retrieveRoot(\$scopeId, \$con); + if ($peerClassname::getNumberOfChildren(\$root) == 1) { + return $peerClassname::deleteNode(\$root, \$con); + } else { + return false; + } + } +"; + } + + protected function addDeleteNode(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Delete \$dest node + * + * @param $objectClassname \$dest Propel object node to delete + * @param PropelPDO \$con Connection to use. + * @return boolean Deletion status + */ + public static function deleteNode(NodeObject \$dest, PropelPDO \$con = null) + { + if (\$dest->getLeftValue() == 1) { + // deleting root implies conditions (see deleteRoot() method) + return $peerClassname::deleteRoot(\$con); + } + + \$sidv = null; + if (self::SCOPE_COL) { + \$sidv = \$dest->getScopeIdValue(); + } + + self::shiftRLRange(\$dest->getLeftValue(), \$dest->getRightValue(), -1, \$con, \$sidv); + self::shiftRLValues(\$dest->getRightValue() + 1, -2, \$con, \$sidv); + return \$dest->delete(\$con); + } +"; + } + + protected function addMoveToFirstChildOf(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Moves \$child to be first child of \$parent + * + * @param $objectClassname \$parent Propel object for parent node + * @param $objectClassname \$child Propel object for child node + * @param PropelPDO \$con Connection to use. + * @return void + */ + public static function moveToFirstChildOf(NodeObject \$parent, NodeObject \$child, PropelPDO \$con = null) + { + if (\$parent->getScopeIdValue() != \$child->getScopeIdValue()) { + throw new PropelException('Moving nodes across trees is not supported'); + } + \$destLeft = \$parent->getLeftValue() + 1; + self::updateDBNode(\$child, \$destLeft, \$con); + + // Update all loaded nodes + self::updateLoadedNode(\$parent, 2, \$con); + } +"; + } + + protected function addMoveToLastChildOf(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Moves \$child to be last child of \$parent + * + * @param $objectClassname \$parent Propel object for parent node + * @param $objectClassname \$child Propel object for child node + * @param PropelPDO \$con Connection to use. + * @return void + */ + public static function moveToLastChildOf(NodeObject \$parent, NodeObject \$child, PropelPDO \$con = null) + { + if (\$parent->getScopeIdValue() != \$child->getScopeIdValue()) { + throw new PropelException('Moving nodes across trees is not supported'); + } + \$destLeft = \$parent->getRightValue(); + self::updateDBNode(\$child, \$destLeft, \$con); + + // Update all loaded nodes + self::updateLoadedNode(\$parent, 2, \$con); + } +"; + } + + protected function addMoveToPrevSiblingOf(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Moves \$node to be prev sibling to \$dest + * + * @param $objectClassname \$dest Propel object for destination node + * @param $objectClassname \$node Propel object for source node + * @param PropelPDO \$con Connection to use. + * @return void + */ + public static function moveToPrevSiblingOf(NodeObject \$dest, NodeObject \$node, PropelPDO \$con = null) + { + if (\$dest->getScopeIdValue() != \$node->getScopeIdValue()) { + throw new PropelException('Moving nodes across trees is not supported'); + } + \$destLeft = \$dest->getLeftValue(); + self::updateDBNode(\$node, \$destLeft, \$con); + + // Update all loaded nodes + self::updateLoadedNode(\$dest->retrieveParent(), 2, \$con); + } +"; + } + + protected function addMoveToNextSiblingOf(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Moves \$node to be next sibling to \$dest + * + * @param $objectClassname \$dest Propel object for destination node + * @param $objectClassname \$node Propel object for source node + * @param PropelPDO \$con Connection to use. + * @return void + */ + public static function moveToNextSiblingOf(NodeObject \$dest, NodeObject \$node, PropelPDO \$con = null) + { + if (\$dest->getScopeIdValue() != \$node->getScopeIdValue()) { + throw new PropelException('Moving nodes across trees is not supported'); + } + \$destLeft = \$dest->getRightValue(); + \$destLeft = \$destLeft + 1; + self::updateDBNode(\$node, \$destLeft, \$con); + + // Update all loaded nodes + self::updateLoadedNode(\$dest->retrieveParent(), 2, \$con); + } +"; + } + + protected function addRetrieveFirstChild(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Gets first child for the given node if it exists + * + * @param $objectClassname \$node Propel object for src node + * @param PropelPDO \$con Connection to use. + * @return mixed Propel object if exists else false + */ + public static function retrieveFirstChild(NodeObject \$node, PropelPDO \$con = null) + { + \$c = new Criteria($peerClassname::DATABASE_NAME); + \$c->add(self::LEFT_COL, \$node->getLeftValue() + 1, Criteria::EQUAL); + if (self::SCOPE_COL) { + \$c->add(self::SCOPE_COL, \$node->getScopeIdValue(), Criteria::EQUAL); + } + + return $peerClassname::doSelectOne(\$c, \$con); + } +"; + } + + protected function addRetrieveLastChild(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Gets last child for the given node if it exists + * + * @param $objectClassname \$node Propel object for src node + * @param PropelPDO \$con Connection to use. + * @return mixed Propel object if exists else false + */ + public static function retrieveLastChild(NodeObject \$node, PropelPDO \$con = null) + { + \$c = new Criteria($peerClassname::DATABASE_NAME); + \$c->add(self::RIGHT_COL, \$node->getRightValue() - 1, Criteria::EQUAL); + if (self::SCOPE_COL) { + \$c->add(self::SCOPE_COL, \$node->getScopeIdValue(), Criteria::EQUAL); + } + + return $peerClassname::doSelectOne(\$c, \$con); + } +"; + } + + protected function addRetrievePrevSibling(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Gets prev sibling for the given node if it exists + * + * @param $objectClassname \$node Propel object for src node + * @param PropelPDO \$con Connection to use. + * @return mixed Propel object if exists else null + */ + public static function retrievePrevSibling(NodeObject \$node, PropelPDO \$con = null) + { + \$c = new Criteria($peerClassname::DATABASE_NAME); + \$c->add(self::RIGHT_COL, \$node->getLeftValue() - 1, Criteria::EQUAL); + if (self::SCOPE_COL) { + \$c->add(self::SCOPE_COL, \$node->getScopeIdValue(), Criteria::EQUAL); + } + \$prevSibling = $peerClassname::doSelectOne(\$c, \$con); + \$node->setPrevSibling(\$prevSibling); + return \$prevSibling; + } +"; + } + + protected function addRetrieveNextSibling(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Gets next sibling for the given node if it exists + * + * @param $objectClassname \$node Propel object for src node + * @param PropelPDO \$con Connection to use. + * @return mixed Propel object if exists else false + */ + public static function retrieveNextSibling(NodeObject \$node, PropelPDO \$con = null) + { + \$c = new Criteria($peerClassname::DATABASE_NAME); + \$c->add(self::LEFT_COL, \$node->getRightValue() + 1, Criteria::EQUAL); + if (self::SCOPE_COL) { + \$c->add(self::SCOPE_COL, \$node->getScopeIdValue(), Criteria::EQUAL); + } + \$nextSibling = $peerClassname::doSelectOne(\$c, \$con); + \$node->setNextSibling(\$nextSibling); + return \$nextSibling; + } +"; + } + + protected function addRetrieveTree(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Retrieves the entire tree from root + * + * @param PropelPDO \$con Connection to use. + */ + public static function retrieveTree(\$scopeId = null, PropelPDO \$con = null) + { + \$c = new Criteria($peerClassname::DATABASE_NAME); + \$c->addAscendingOrderByColumn(self::LEFT_COL); + if (self::SCOPE_COL) { + \$c->add(self::SCOPE_COL, \$scopeId, Criteria::EQUAL); + } + \$stmt = $peerClassname::doSelectStmt(\$c, \$con); + if (false !== (\$row = \$stmt->fetch(PDO::FETCH_NUM))) { + \$omClass = $peerClassname::getOMClass(\$row, 0); + \$cls = substr('.'.\$omClass, strrpos('.'.\$omClass, '.') + 1); + + \$key = ".$peerClassname."::getPrimaryKeyHashFromRow(\$row, 0); + if (null === (\$root = ".$peerClassname."::getInstanceFromPool(\$key))) { + " . $this->buildObjectInstanceCreationCode('$root', '$cls') . " + \$root->hydrate(\$row); + } + + \$root->setLevel(0); + $peerClassname::hydrateDescendants(\$root, \$stmt); + $peerClassname::addInstanceToPool(\$root); + + \$stmt->closeCursor(); + return \$root; + } + return false; + } +"; + } + + protected function addRetrieveBranch(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Retrieves the entire tree from parent \$node + * + * @param $objectClassname \$node Propel object for parent node + * @param PropelPDO \$con Connection to use. + */ + public static function retrieveBranch(NodeObject \$node, PropelPDO \$con = null) + { + return $peerClassname::retrieveDescendants(\$node, \$con); + } +"; + } + + protected function addRetrieveChildren(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Gets direct children for the node + * + * @param $objectClassname \$node Propel object for parent node + * @param PropelPDO \$con Connection to use. + */ + public static function retrieveChildren(NodeObject \$node, PropelPDO \$con = null) + { + \$c = new Criteria($peerClassname::DATABASE_NAME); + \$c->addAscendingOrderByColumn(self::LEFT_COL); + if (self::SCOPE_COL) { + \$c->add(self::SCOPE_COL, \$node->getScopeIdValue(), Criteria::EQUAL); + } + \$c->add(self::LEFT_COL, \$node->getLeftValue(), Criteria::GREATER_THAN); + \$c->addAnd(self::RIGHT_COL, \$node->getRightValue(), Criteria::LESS_THAN); + \$stmt = $peerClassname::doSelectStmt(\$c, \$con); + + return $peerClassname::hydrateChildren(\$node, \$stmt); + } +"; + } + + protected function addRetrieveDescendants(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Gets all descendants for the node + * + * @param $objectClassname \$node Propel object for parent node + * @param PropelPDO \$con Connection to use. + */ + public static function retrieveDescendants(NodeObject \$node, PropelPDO \$con = null) + { + \$c = new Criteria($peerClassname::DATABASE_NAME); + \$c->addAscendingOrderByColumn(self::LEFT_COL); + if (self::SCOPE_COL) { + \$c->add(self::SCOPE_COL, \$node->getScopeIdValue(), Criteria::EQUAL); + } + \$c->add(self::LEFT_COL, \$node->getLeftValue(), Criteria::GREATER_THAN); + \$c->addAnd(self::RIGHT_COL, \$node->getRightValue(), Criteria::LESS_THAN); + \$stmt = $peerClassname::doSelectStmt(\$c, \$con); + + return $peerClassname::hydrateDescendants(\$node, \$stmt); + } +"; + } + + protected function addRetrieveSiblings(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Gets all siblings for the node + * + * @param $objectClassname \$node Propel object for src node + * @param PropelPDO \$con Connection to use. + */ + public static function retrieveSiblings(NodeObject \$node, PropelPDO \$con = null) + { + \$parent = $peerClassname::retrieveParent(\$node, \$con); + \$siblings = $peerClassname::retrieveChildren(\$parent, \$con); + + return \$siblings; + } +"; + } + + protected function addRetrieveParent(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Gets immediate ancestor for the given node if it exists + * + * @param $objectClassname \$node Propel object for src node + * @param PropelPDO \$con Connection to use. + * @return mixed Propel object if exists else null + */ + public static function retrieveParent(NodeObject \$node, PropelPDO \$con = null) + { + \$c = new Criteria($peerClassname::DATABASE_NAME); + \$c1 = \$c->getNewCriterion(self::LEFT_COL, \$node->getLeftValue(), Criteria::LESS_THAN); + \$c2 = \$c->getNewCriterion(self::RIGHT_COL, \$node->getRightValue(), Criteria::GREATER_THAN); + + \$c1->addAnd(\$c2); + + \$c->add(\$c1); + if (self::SCOPE_COL) { + \$c->add(self::SCOPE_COL, \$node->getScopeIdValue(), Criteria::EQUAL); + } + \$c->addAscendingOrderByColumn(self::RIGHT_COL); + + \$parent = $peerClassname::doSelectOne(\$c, \$con); + + \$node->setParentNode(\$parent); + + return \$parent; + } +"; + } + + protected function addGetLevel(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Gets level for the given node + * + * @param $objectClassname \$node Propel object for src node + * @param PropelPDO \$con Connection to use. + * @return int Level for the given node + */ + public static function getLevel(NodeObject \$node, PropelPDO \$con = null) + { + if (\$con === null) { + \$con = Propel::getConnection($peerClassname::DATABASE_NAME, Propel::CONNECTION_READ); + } + + \$sql = \"SELECT COUNT(*) AS level FROM \" . self::TABLE_NAME . \" WHERE \" . self::LEFT_COL . \" < :left AND \" . self::RIGHT_COL . \" > :right\"; + + if (self::SCOPE_COL) { + \$sql .= ' AND ' . self::SCOPE_COL . ' = :scope'; + } + + \$stmt = \$con->prepare(\$sql); + \$stmt->bindValue(':left', \$node->getLeftValue(), PDO::PARAM_INT); + \$stmt->bindValue(':right', \$node->getRightValue(), PDO::PARAM_INT); + if (self::SCOPE_COL) { + \$stmt->bindValue(':scope', \$node->getScopeIdValue()); + } + \$stmt->execute(); + \$row = \$stmt->fetch(); + return \$row['level']; + } +"; + } + + protected function addGetNumberOfChildren(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Gets number of direct children for given node + * + * @param $objectClassname \$node Propel object for src node + * @param PropelPDO \$con Connection to use. + * @return int Level for the given node + */ + public static function getNumberOfChildren(NodeObject \$node, PropelPDO \$con = null) + { + \$children = $peerClassname::retrieveChildren(\$node); + return count(\$children); + } +"; + } + + protected function addGetNumberOfDescendants(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Gets number of descendants for given node + * + * @param $objectClassname \$node Propel object for src node + * @param PropelPDO \$con Connection to use. + * @return int Level for the given node + */ + public static function getNumberOfDescendants(NodeObject \$node, PropelPDO \$con = null) + { + \$right = \$node->getRightValue(); + \$left = \$node->getLeftValue(); + \$num = (\$right - \$left - 1) / 2; + return \$num; + } +"; + } + + protected function addGetPath(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Returns path to a specific node as an array, useful to create breadcrumbs + * + * @param $objectClassname \$node Propel object of node to create path to + * @param PropelPDO \$con Connection to use. + * @return array Array in order of heirarchy + */ + public static function getPath(NodeObject \$node, PropelPDO \$con = null) + { + \$criteria = new Criteria(); + if (self::SCOPE_COL) { + \$criteria->add(self::SCOPE_COL, \$node->getScopeIdValue(), Criteria::EQUAL); + } + \$criteria->add(self::LEFT_COL, \$node->getLeftValue(), Criteria::LESS_EQUAL); + \$criteria->add(self::RIGHT_COL, \$node->getRightValue(), Criteria::GREATER_EQUAL); + \$criteria->addAscendingOrderByColumn(self::LEFT_COL); + + return self::doSelect(\$criteria, \$con); + } +"; + } + + protected function addIsValid(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Tests if node is valid + * + * @param $objectClassname \$node Propel object for src node + * @return bool + */ + public static function isValid(NodeObject \$node = null) + { + if (is_object(\$node) && \$node->getRightValue() > \$node->getLeftValue()) { + return true; + } else { + return false; + } + } +"; + } + + protected function addIsRoot(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Tests if node is a root + * + * @param $objectClassname \$node Propel object for src node + * @return bool + */ + public static function isRoot(NodeObject \$node) + { + return (\$node->getLeftValue()==1); + } +"; + } + + protected function addIsLeaf(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Tests if node is a leaf + * + * @param $objectClassname \$node Propel object for src node + * @return bool + */ + public static function isLeaf(NodeObject \$node) + { + return ((\$node->getRightValue()-\$node->getLeftValue())==1); + } +"; + } + + protected function addIsChildOf(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Tests if \$child is a child of \$parent + * + * @param $objectClassname \$child Propel object for node + * @param $objectClassname \$parent Propel object for node + * @return bool + */ + public static function isChildOf(NodeObject \$child, NodeObject \$parent) + { + return ((\$child->getLeftValue()>\$parent->getLeftValue()) && (\$child->getRightValue()<\$parent->getRightValue())); + } +"; + } + + protected function addIsChildOfOrSiblingTo(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Tests if \$node1 is a child of or equal to \$node2 + * + * @deprecated 1.3 - 2007/11/09 + * @param $objectClassname \$node1 Propel object for node + * @param $objectClassname \$node2 Propel object for node + * @return bool + */ + public static function isChildOfOrSiblingTo(NodeObject \$node1, NodeObject \$node2) + { + return ((\$node1->getLeftValue()>=\$node2->getLeftValue()) and (\$node1->getRightValue()<=\$node2->getRightValue())); + } +"; + } + + protected function addIsEqualTo(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Tests if \$node1 is equal to \$node2 + * + * @param $objectClassname \$node1 Propel object for node + * @param $objectClassname \$node2 Propel object for node + * @return bool + */ + public static function isEqualTo(NodeObject \$node1, NodeObject \$node2) + { + \$also = true; + if (self::SCOPE_COL) { + \$also = (\$node1->getScopeIdValue() === \$node2->getScopeIdValue()); + } + return \$node1->getLeftValue() == \$node2->getLeftValue() && \$node1->getRightValue() == \$node2->getRightValue() && \$also; + } +"; + } + + protected function addHasParent(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Tests if \$node has an ancestor + * + * @param $objectClassname \$node Propel object for node + * @param PropelPDO \$con Connection to use. + * @return bool + */ + public static function hasParent(NodeObject \$node, PropelPDO \$con = null) + { + return $peerClassname::isValid($peerClassname::retrieveParent(\$node, \$con)); + } +"; + } + + protected function addHasPrevSibling(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Tests if \$node has prev sibling + * + * @param $objectClassname \$node Propel object for node + * @param PropelPDO \$con Connection to use. + * @return bool + */ + public static function hasPrevSibling(NodeObject \$node, PropelPDO \$con = null) + { + return $peerClassname::isValid($peerClassname::retrievePrevSibling(\$node, \$con)); + } +"; + } + + protected function addHasNextSibling(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Tests if \$node has next sibling + * + * @param $objectClassname \$node Propel object for node + * @param PropelPDO \$con Connection to use. + * @return bool + */ + public static function hasNextSibling(NodeObject \$node, PropelPDO \$con = null) + { + return $peerClassname::isValid($peerClassname::retrieveNextSibling(\$node, \$con)); + } +"; + } + + protected function addHasChildren(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Tests if \$node has children + * + * @param $objectClassname \$node Propel object for node + * @return bool + */ + public static function hasChildren(NodeObject \$node) + { + return ((\$node->getRightValue()-\$node->getLeftValue())>1); + } +"; + } + + protected function addDeleteDescendants(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Deletes \$node and all of its descendants + * + * @param $objectClassname \$node Propel object for source node + * @param PropelPDO \$con Connection to use. + */ + public static function deleteDescendants(NodeObject \$node, PropelPDO \$con = null) + { + \$left = \$node->getLeftValue(); + \$right = \$node->getRightValue(); + + \$c = new Criteria($peerClassname::DATABASE_NAME); + \$c1 = \$c->getNewCriterion(self::LEFT_COL, \$left, Criteria::GREATER_THAN); + \$c2 = \$c->getNewCriterion(self::RIGHT_COL, \$right, Criteria::LESS_THAN); + + \$c1->addAnd(\$c2); + + \$c->add(\$c1); + if (self::SCOPE_COL) { + \$c->add(self::SCOPE_COL, \$node->getScopeIdValue(), Criteria::EQUAL); + } + \$c->addAscendingOrderByColumn(self::RIGHT_COL); + + \$result = $peerClassname::doDelete(\$c, \$con); + + self::shiftRLValues(\$right + 1, \$left - \$right -1, \$con, \$node->getScopeIdValue()); + + return \$result; + } +"; + } + + protected function addGetNode(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Returns a node given its primary key or the node itself + * + * @param int/$objectClassname \$node Primary key/instance of required node + * @param PropelPDO \$con Connection to use. + * @return object Propel object for model + */ + public static function getNode(\$node, PropelPDO \$con = null) + { + if (is_object(\$node)) { + return \$node; + } else { + \$object = $peerClassname::retrieveByPK(\$node, \$con); + \$rtn = is_object(\$object) ? \$object : false; + return \$rtn; + } + } +"; + } + + protected function addHydrateDescendants(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $table = $this->getTable(); + $script .= " + /** + * Hydrate recursively the descendants of the given node + * @param $objectClassname \$node Propel object for src node + * @param PDOStatement \$stmt Executed PDOStatement + */ + protected static function hydrateDescendants(NodeObject \$node, PDOStatement \$stmt) + { + \$descendants = array(); + \$children = array(); + \$prevSibling = null; +"; + + if (!$table->getChildrenColumn()) { + $script .= " + // set the class once to avoid overhead in the loop + \$cls = $peerClassname::getOMClass(); + \$cls = substr('.'.\$cls, strrpos('.'.\$cls, '.') + 1); +"; + } + + $script .= " + while (\$row = \$stmt->fetch(PDO::FETCH_NUM)) { + \$key = ".$peerClassname."::getPrimaryKeyHashFromRow(\$row, 0); + if (null === (\$child = ".$peerClassname."::getInstanceFromPool(\$key))) {"; + + if ($table->getChildrenColumn()) { + $script .= " + // class must be set each time from the record row + \$cls = ".$peerClassname."::getOMClass(\$row, 0); + \$cls = substr('.'.\$cls, strrpos('.'.\$cls, '.') + 1); +"; + } + + $script .= " + " . $this->buildObjectInstanceCreationCode('$child', '$cls') . " + \$child->hydrate(\$row); + } + + \$child->setLevel(\$node->getLevel() + 1); + \$child->setParentNode(\$node); + if (!empty(\$prevSibling)) { + \$child->setPrevSibling(\$prevSibling); + \$prevSibling->setNextSibling(\$child); + } + + \$descendants[] = \$child; + + if (\$child->hasChildren()) { + \$descendants = array_merge(\$descendants, $peerClassname::hydrateDescendants(\$child, \$stmt)); + } else { + \$child->setChildren(array()); + } + + \$children[] = \$child; + \$prevSibling = \$child; + + $peerClassname::addInstanceToPool(\$child); + if (\$child->getRightValue() + 1 == \$node->getRightValue()) { + \$child->setNextSibling(null); + break; + } + } + \$node->setChildren(\$children); + return \$descendants; + } +"; + } + + protected function addHydrateChildren(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $table = $this->getTable(); + $script .= " + /** + * Hydrate the children of the given node + * @param $objectClassname \$node Propel object for src node + * @param PDOStatement \$stmt Executed PDOStatement + */ + protected static function hydrateChildren(NodeObject \$node, PDOStatement \$stmt) + { + \$children = array(); + \$prevRight = 0; +"; + + if (!$table->getChildrenColumn()) { + $script .= " + // set the class once to avoid overhead in the loop + \$cls = $peerClassname::getOMClass(); + \$cls = substr('.'.\$cls, strrpos('.'.\$cls, '.') + 1); +"; + } + + $script .= " + while (\$row = \$stmt->fetch(PDO::FETCH_NUM)) { + \$key = ".$peerClassname."::getPrimaryKeyHashFromRow(\$row, 0); + if (null === (\$child = ".$peerClassname."::getInstanceFromPool(\$key))) {"; + + if ($table->getChildrenColumn()) { + $script .= " + // class must be set each time from the record row + \$cls = ".$peerClassname."::getOMClass(\$row, 0); + \$cls = substr('.'.\$cls, strrpos('.'.\$cls, '.') + 1); +"; + } + + $script .= " + " . $this->buildObjectInstanceCreationCode('$child', '$cls') . " + \$child->hydrate(\$row); + } + + \$child->setLevel(\$node->getLevel() + 1); + + if (\$child->getRightValue() > \$prevRight) { + \$children[] = \$child; + \$prevRight = \$child->getRightValue(); + } + + if (\$child->getRightValue() + 1 == \$node->getRightValue()) { + break; + } + } + \$node->setChildren(\$children); + return \$children; + } +"; + } + + /** + * @deprecated 1.3 - 2008/03/11 + * Won't be fixed, defect by design + * Never trust it + */ + protected function addShiftRParent(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Adds '\$delta' to all parent R values. + * '\$delta' can also be negative. + * + * @deprecated 1.3 - 2008/03/11 + * @param $objectClassname \$node Propel object for parent node + * @param int \$delta Value to be shifted by, can be negative + * @param PropelPDO \$con Connection to use. + */ + protected static function shiftRParent(NodeObject \$node, \$delta, PropelPDO \$con = null) + { + if (\$node->hasParent(\$con)) { + \$parent = \$node->retrieveParent(); + self::shiftRParent(\$parent, \$delta, \$con); + } + \$node->setRightValue(\$node->getRightValue() + \$delta); + } +"; + } + + protected function addUpdateLoadedNode(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $table = $this->getTable(); + + $script .= " + /** + * Reload all already loaded nodes to sync them with updated db + * + * @param $objectClassname \$node Propel object for parent node + * @param int \$delta Value to be shifted by, can be negative + * @param PropelPDO \$con Connection to use. + */ + protected static function updateLoadedNode(NodeObject \$node, \$delta, PropelPDO \$con = null) + { + if (Propel::isInstancePoolingEnabled()) { + \$keys = array(); + foreach (self::\$instances as \$obj) { + \$keys[] = \$obj->getPrimaryKey(); + } + + if (!empty(\$keys)) { + // We don't need to alter the object instance pool; we're just modifying these ones + // already in the pool. + \$criteria = new Criteria(self::DATABASE_NAME);"; + if (count($table->getPrimaryKey()) === 1) { + $pkey = $table->getPrimaryKey(); + $col = array_shift($pkey); + $script .= " + \$criteria->add(".$this->getColumnConstant($col).", \$keys, Criteria::IN); +"; + } else { + $fields = array(); + foreach ($table->getPrimaryKey() as $k => $col) { + $fields[] = $this->getColumnConstant($col); + }; + $script .= " + + // Loop on each instances in pool + foreach (\$keys as \$values) { + // Create initial Criterion + \$cton = \$criteria->getNewCriterion(" . $fields[0] . ", \$values[0]);"; + unset($fields[0]); + foreach ($fields as $k => $col) { + $script .= " + + // Create next criterion + \$nextcton = \$criteria->getNewCriterion(" . $col . ", \$values[$k]); + // And merge it with the first + \$cton->addAnd(\$nextcton);"; + } + $script .= " + + // Add final Criterion to Criteria + \$criteria->addOr(\$cton); + }"; + } + + $script .= " + \$stmt = $peerClassname::doSelectStmt(\$criteria, \$con); + while (\$row = \$stmt->fetch(PDO::FETCH_NUM)) { + \$key = $peerClassname::getPrimaryKeyHashFromRow(\$row, 0); + if (null !== (\$object = $peerClassname::getInstanceFromPool(\$key))) {"; + $n = 0; + foreach ($table->getColumns() as $col) { + if ($col->isNestedSetLeftKey()) { + $script .= " + \$object->setLeftValue(\$row[$n]);"; + } else if ($col->isNestedSetRightKey()) { + $script .= " + \$object->setRightValue(\$row[$n]);"; + } + $n++; + } + $script .= " + } + } + \$stmt->closeCursor(); + } + } + } +"; + } + + protected function addUpdateDBNode(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $script .= " + /** + * Move \$node and its children to location \$destLeft and updates rest of tree + * + * @param $objectClassname \$node Propel object for node to update + * @param int \$destLeft Destination left value + * @param PropelPDO \$con Connection to use. + */ + protected static function updateDBNode(NodeObject \$node, \$destLeft, PropelPDO \$con = null) + { + \$left = \$node->getLeftValue(); + \$right = \$node->getRightValue(); + + \$treeSize = \$right - \$left +1; + + self::shiftRLValues(\$destLeft, \$treeSize, \$con, \$node->getScopeIdValue()); + + if (\$left >= \$destLeft) { // src was shifted too? + \$left += \$treeSize; + \$right += \$treeSize; + } + + // now there's enough room next to target to move the subtree + self::shiftRLRange(\$left, \$right, \$destLeft - \$left, \$con, \$node->getScopeIdValue()); + + // correct values after source + self::shiftRLValues(\$right + 1, -\$treeSize, \$con, \$node->getScopeIdValue()); + } +"; + } + + protected function addShiftRLValues(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Adds '\$delta' to all L and R values that are >= '\$first'. '\$delta' can also be negative. + * + * @param int \$first First node to be shifted + * @param int \$delta Value to be shifted by, can be negative + * @param PropelPDO \$con Connection to use. + */ + protected static function shiftRLValues(\$first, \$delta, PropelPDO \$con = null, \$scopeId = null) + { + if (\$con === null) { + \$con = Propel::getConnection($peerClassname::DATABASE_NAME, Propel::CONNECTION_WRITE); + } + + \$leftUpdateCol = self::LEFT_COL; + \$rightUpdateCol = self::RIGHT_COL; + + // Shift left column values + \$whereCriteria = new Criteria($peerClassname::DATABASE_NAME); + \$criterion = \$whereCriteria->getNewCriterion( + self::LEFT_COL, + \$first, + Criteria::GREATER_EQUAL); + + if (self::SCOPE_COL) { + \$criterion->addAnd( + \$whereCriteria->getNewCriterion( + self::SCOPE_COL, + \$scopeId, + Criteria::EQUAL)); + } + \$whereCriteria->add(\$criterion); + + \$valuesCriteria = new Criteria($peerClassname::DATABASE_NAME); + \$valuesCriteria->add( + self::LEFT_COL, + array('raw' => \$leftUpdateCol . ' + ?', 'value' => \$delta), + Criteria::CUSTOM_EQUAL); + + {$this->basePeerClassname}::doUpdate(\$whereCriteria, \$valuesCriteria, \$con); + + // Shift right column values + \$whereCriteria = new Criteria($peerClassname::DATABASE_NAME); + \$criterion = \$whereCriteria->getNewCriterion( + self::RIGHT_COL, + \$first, + Criteria::GREATER_EQUAL); + + if (self::SCOPE_COL) { + \$criterion->addAnd( + \$whereCriteria->getNewCriterion( + self::SCOPE_COL, + \$scopeId, + Criteria::EQUAL)); + } + \$whereCriteria->add(\$criterion); + + \$valuesCriteria = new Criteria($peerClassname::DATABASE_NAME); + \$valuesCriteria->add( + self::RIGHT_COL, + array('raw' => \$rightUpdateCol . ' + ?', 'value' => \$delta), + Criteria::CUSTOM_EQUAL); + + {$this->basePeerClassname}::doUpdate(\$whereCriteria, \$valuesCriteria, \$con); + } +"; + } + + protected function addShiftRLRange(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Adds '\$delta' to all L and R values that are >= '\$first' and <= '\$last'. + * '\$delta' can also be negative. + * + * @param int \$first First node to be shifted (L value) + * @param int \$last Last node to be shifted (L value) + * @param int \$delta Value to be shifted by, can be negative + * @param PropelPDO \$con Connection to use. + * @return array Shifted L and R values + */ + protected static function shiftRLRange(\$first, \$last, \$delta, PropelPDO \$con = null, \$scopeId = null) + { + if (\$con === null) { + \$con = Propel::getConnection($peerClassname::DATABASE_NAME, Propel::CONNECTION_WRITE); + } + + \$leftUpdateCol = substr(self::LEFT_COL, strrpos(self::LEFT_COL, '.') + 1); + \$rightUpdateCol = substr(self::RIGHT_COL, strrpos(self::RIGHT_COL, '.') + 1); + + // Shift left column values + \$whereCriteria = new Criteria($peerClassname::DATABASE_NAME); + \$criterion = \$whereCriteria->getNewCriterion(self::LEFT_COL, \$first, Criteria::GREATER_EQUAL); + \$criterion->addAnd(\$whereCriteria->getNewCriterion(self::LEFT_COL, \$last, Criteria::LESS_EQUAL)); + if (self::SCOPE_COL) { + \$criterion->addAnd(\$whereCriteria->getNewCriterion(self::SCOPE_COL, \$scopeId, Criteria::EQUAL)); + } + \$whereCriteria->add(\$criterion); + + \$valuesCriteria = new Criteria($peerClassname::DATABASE_NAME); + \$valuesCriteria->add( + self::LEFT_COL, + array('raw' => \$leftUpdateCol . ' + ?', 'value' => \$delta), + Criteria::CUSTOM_EQUAL); + + {$this->basePeerClassname}::doUpdate(\$whereCriteria, \$valuesCriteria, \$con); + + // Shift right column values + \$whereCriteria = new Criteria($peerClassname::DATABASE_NAME); + \$criterion = \$whereCriteria->getNewCriterion(self::RIGHT_COL, \$first, Criteria::GREATER_EQUAL); + \$criterion->addAnd(\$whereCriteria->getNewCriterion(self::RIGHT_COL, \$last, Criteria::LESS_EQUAL)); + if (self::SCOPE_COL) { + \$criterion->addAnd(\$whereCriteria->getNewCriterion(self::SCOPE_COL, \$scopeId, Criteria::EQUAL)); + } + \$whereCriteria->add(\$criterion); + + \$valuesCriteria = new Criteria($peerClassname::DATABASE_NAME); + \$valuesCriteria->add( + self::RIGHT_COL, + array('raw' => \$rightUpdateCol . ' + ?', 'value' => \$delta), + Criteria::CUSTOM_EQUAL); + + {$this->basePeerClassname}::doUpdate(\$whereCriteria, \$valuesCriteria, \$con); + + return array('left' => \$first + \$delta, 'right' => \$last + \$delta); + } +"; + } + +} // PHP5NestedSetPeerBuilder diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5NodeBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5NodeBuilder.php.svn-base new file mode 100644 index 0000000..660059a --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5NodeBuilder.php.svn-base @@ -0,0 +1,1115 @@ +. + */ + +require_once 'propel/engine/builder/om/ObjectBuilder.php'; + +/** + * Generates a PHP5 tree node Object class for user object model (OM). + * + * This class produces the base tree node object class (e.g. BaseMyTable) which contains all + * the custom-built accessor and setter methods. + * + * This class replaces the Node.tpl, with the intent of being easier for users + * to customize (through extending & overriding). + * + * @author Hans Lellelid + * @package propel.engine.builder.om.php5 + */ +class PHP5NodeBuilder extends ObjectBuilder { + + /** + * Gets the package for the [base] object classes. + * @return string + */ + public function getPackage() + { + return parent::getPackage() . ".om"; + } + + /** + * Returns the name of the current class being built. + * @return string + */ + public function getUnprefixedClassname() + { + return $this->getBuildProperty('basePrefix') . $this->getStubNodeBuilder()->getUnprefixedClassname(); + } + + /** + * Adds the include() statements for files that this class depends on or utilizes. + * @param string &$script The script will be modified in this method. + */ + protected function addIncludes(&$script) + { + } // addIncludes() + + /** + * Adds class phpdoc comment and openning of class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassOpen(&$script) + { + + $table = $this->getTable(); + $tableName = $table->getName(); + $tableDesc = $table->getDescription(); + + $script .= " +/** + * Base class that represents a row from the '$tableName' table. + * + * $tableDesc + *"; + if ($this->getBuildProperty('addTimeStamp')) { + $now = strftime('%c'); + $script .= " + * This class was autogenerated by Propel " . $this->getBuildProperty('version') . " on: + * + * $now + *"; + } + $script .= " + * @package ".$this->getPackage()." + */ +abstract class ".$this->getClassname()." implements IteratorAggregate { +"; + } + + /** + * Specifies the methods that are added as part of the basic OM class. + * This can be overridden by subclasses that wish to add more methods. + * @see ObjectBuilder::addClassBody() + */ + protected function addClassBody(&$script) + { + $table = $this->getTable(); + + $this->addAttributes($script); + + $this->addConstructor($script); + + $this->addCallOverload($script); + $this->addSetIteratorOptions($script); + $this->addGetIterator($script); + + $this->addGetNodeObj($script); + $this->addGetNodePath($script); + $this->addGetNodeIndex($script); + $this->addGetNodeLevel($script); + + $this->addHasChildNode($script); + $this->addGetChildNodeAt($script); + $this->addGetFirstChildNode($script); + $this->addGetLastChildNode($script); + $this->addGetSiblingNode($script); + + $this->addGetParentNode($script); + $this->addGetAncestors($script); + $this->addIsRootNode($script); + + $this->addSetNew($script); + $this->addSetDeleted($script); + $this->addAddChildNode($script); + $this->addMoveChildNode($script); + $this->addSave($script); + + $this->addDelete($script); + $this->addEquals($script); + + $this->addAttachParentNode($script); + $this->addAttachChildNode($script); + $this->addDetachParentNode($script); + $this->addDetachChildNode($script); + $this->addShiftChildNodes($script); + $this->addInsertNewChildNode($script); + + $this->addAdjustStatus($script); + $this->addAdjustNodePath($script); + + } + + /** + * Closes class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassClose(&$script) + { + $script .= " +} // " . $this->getClassname() . " +"; + } + + + /** + * Adds class attributes. + * @param string &$script The script will be modified in this method. + */ + protected function addAttributes(&$script) + { + $script .= " + /** + * @var ".$this->getStubObjectBuilder()->getClassname()." object wrapped by this node. + */ + protected \$obj = null; + + /** + * The parent node for this node. + * @var ".$this->getStubNodeBuilder()->getClassname()." + */ + protected \$parentNode = null; + + /** + * Array of child nodes for this node. Nodes indexes are one-based. + * @var array + */ + protected \$childNodes = array(); +"; + } + + /** + * Adds the constructor. + * @param string &$script The script will be modified in this method. + */ + protected function addConstructor(&$script) + { + $script .= " + /** + * Constructor. + * + * @param ".$this->getStubObjectBuilder()->getClassname()." \$obj Object wrapped by this node. + */ + public function __construct(\$obj = null) + { + if (\$obj !== null) { + \$this->obj = \$obj; + } else { + \$setNodePath = 'set' . ".$this->getStubNodePeerBuilder()->getClassname()."::NPATH_PHPNAME; + \$this->obj = new ".$this->getStubObjectBuilder()->getClassname()."(); + \$this->obj->\$setNodePath('0'); + } + } +"; + } + + + + protected function addCallOverload(&$script) + { + $script .= " + /** + * Convenience overload for wrapped object methods. + * + * @param string Method name to call on wrapped object. + * @param mixed Parameter accepted by wrapped object set method. + * @return mixed Return value of wrapped object method. + * @throws PropelException Fails if method is not defined for wrapped object. + */ + public function __call(\$name, \$parms) + { + if (method_exists(\$this->obj, \$name)) + return call_user_func_array(array(\$this->obj, \$name), \$parms); + else + throw new PropelException('get method not defined: \$name'); + } +"; + } + + protected function addSetIteratorOptions(&$script) + { + $script .= " + + /** + * Sets the default options for iterators created from this object. + * The options are specified in map format. The following options + * are supported by all iterators. Some iterators may support other + * options: + * + * \"querydb\" - True if nodes should be retrieved from database. + * \"con\" - Connection to use if retrieving from database. + * + * @param string Type of iterator to use (\"pre\", \"post\", \"level\"). + * @param array Map of option name => value. + * @return void + * @todo Implement other iterator types (i.e. post-order, level, etc.) + */ + public function setIteratorOptions(\$type, \$opts) + { + \$this->itType = \$type; + \$this->itOpts = \$opts; + } +"; + } + + protected function addGetIterator(&$script) + { + $script .= " + /** + * Returns a pre-order iterator for this node and its children. + * + * @param string Type of iterator to use (\"pre\", \"post\", \"level\") + * @param array Map of option name => value. + * @return NodeIterator + */ + public function getIterator(\$type = null, \$opts = null) + { + if (\$type === null) + \$type = (isset(\$this->itType) ? \$this->itType : 'Pre'); + + if (\$opts === null) + \$opts = (isset(\$this->itOpts) ? \$this->itOpts : array()); + + \$itclass = ucfirst(strtolower(\$type)) . 'OrderNodeIterator'; + + require_once('propel/om/' . \$itclass . '.php'); + return new \$itclass(\$this, \$opts); + } +"; + } + + protected function addGetNodeObj(&$script) + { + $script .= " + /** + * Returns the object wrapped by this class. + * @return ".$this->getStubObjectBuilder()->getClassname()." + */ + public function getNodeObj() + { + return \$this->obj; + } +"; + } + + protected function addGetNodePath(&$script) + { + $script .= " + /** + * Convenience method for retrieving nodepath. + * @return string + */ + public function getNodePath() + { + \$getNodePath = 'get' . ".$this->getStubNodePeerBuilder()->getClassname()."::NPATH_PHPNAME; + return \$this->obj->\$getNodePath(); + } +"; + } + + protected function addGetNodeIndex(&$script) + { + $script .= " + /** + * Returns one-based node index among siblings. + * @return int + */ + public function getNodeIndex() + { + \$npath =& \$this->getNodePath(); + \$sep = strrpos(\$npath, ".$this->getStubNodePeerBuilder()->getClassname()."::NPATH_SEP); + return (int) (\$sep !== false ? substr(\$npath, \$sep+1) : \$npath); + } +"; + } + + protected function addGetNodeLevel(&$script) + { + $script .= " + /** + * Returns one-based node level within tree (root node is level 1). + * @return int + */ + public function getNodeLevel() + { + return (substr_count(\$this->getNodePath(), ".$this->getStubNodePeerBuilder()->getClassname()."::NPATH_SEP) + 1); + } +"; + } + + protected function addHasChildNode(&$script) + { + $script .= " + /** + * Returns true if specified node is a child of this node. If recurse is + * true, checks if specified node is a descendant of this node. + * + * @param ".$this->getStubNodeBuilder()->getClassname()." Node to look for. + * @param boolean True if strict comparison should be used. + * @param boolean True if all descendants should be checked. + * @return boolean + */ + public function hasChildNode(\$node, \$strict = false, \$recurse = false) + { + foreach (\$this->childNodes as \$childNode) + { + if (\$childNode->equals(\$node, \$strict)) + return true; + + if (\$recurse && \$childNode->hasChildNode(\$node, \$recurse)) + return true; + } + + return false; + } +"; + } + + protected function addGetChildNodeAt(&$script) + { + $script .= " + /** + * Returns child node at one-based index. Retrieves from database if not + * loaded yet. + * + * @param int One-based child node index. + * @param boolean True if child should be retrieved from database. + * @param PropelPDO Connection to use if retrieving from database. + * @return ".$this->getStubNodeBuilder()->getClassname()." + */ + public function getChildNodeAt(\$i, \$querydb = false, PropelPDO \$con = null) + { + if (\$querydb && + !\$this->obj->isNew() && + !\$this->obj->isDeleted() && + !isset(\$this->childNodes[\$i])) + { + \$criteria = new Criteria(".$this->getStubPeerBuilder()->getClassname()."::DATABASE_NAME); + \$criteria->add(".$this->getStubNodePeerBuilder()->getClassname()."::NPATH_COLNAME, \$this->getNodePath() . ".$this->getStubNodePeerBuilder()->getClassname()."::NPATH_SEP . \$i, Criteria::EQUAL); + + if (\$childObj = ".$this->getStubPeerBuilder()->getClassname()."::doSelectOne(\$criteria, \$con)) + \$this->attachChildNode(new ".$this->getStubNodeBuilder()->getClassname()."(\$childObj)); + } + + return (isset(\$this->childNodes[\$i]) ? \$this->childNodes[\$i] : null); + } +"; + } + + protected function addGetFirstChildNode(&$script) + { + $script .= " + /** + * Returns first child node (if any). Retrieves from database if not loaded yet. + * + * @param boolean True if child should be retrieved from database. + * @param PropelPDO Connection to use if retrieving from database. + * @return ".$this->getStubNodeBuilder()->getClassname()." + */ + public function getFirstChildNode(\$querydb = false, PropelPDO \$con = null) + { + return \$this->getChildNodeAt(1, \$querydb, \$con); + } +"; + } + + protected function addGetLastChildNode(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $nodePeerClassname = $this->getStubNodePeerBuilder()->getClassname(); + + $script .= " + /** + * Returns last child node (if any). + * + * @param boolean True if child should be retrieved from database. + * @param PropelPDO Connection to use if retrieving from database. + */ + public function getLastChildNode(\$querydb = false, PropelPDO \$con = null) + { + \$lastNode = null; + + if (\$this->obj->isNew() || \$this->obj->isDeleted()) + { + end(\$this->childNodes); + \$lastNode = (count(\$this->childNodes) ? current(\$this->childNodes) : null); + } + else if (\$querydb) + { + \$db = Propel::getDb($peerClassname::DATABASE_NAME); + \$criteria = new Criteria($peerClassname::DATABASE_NAME); + \$criteria->add($nodePeerClassname::NPATH_COLNAME, \$this->getNodePath() . $nodePeerClassname::NPATH_SEP . '%', Criteria::LIKE); + \$criteria->addAnd($nodePeerClassname::NPATH_COLNAME, \$this->getNodePath() . $nodePeerClassname::NPATH_SEP . '%' . $nodePeerClassname::NPATH_SEP . '%', Criteria::NOT_LIKE); + $peerClassname::addSelectColumns(\$criteria); + \$criteria->addAsColumn('npathlen', \$db->strLength($nodePeerClassname::NPATH_COLNAME)); + \$criteria->addDescendingOrderByColumn('npathlen'); + \$criteria->addDescendingOrderByColumn($nodePeerClassname::NPATH_COLNAME); + + \$lastObj = $peerClassname::doSelectOne(\$criteria, \$con); + + if (\$lastObj !== null) + { + \$lastNode = new ".$this->getStubNodeBuilder()->getClassname()."(\$lastObj); + + end(\$this->childNodes); + \$endNode = (count(\$this->childNodes) ? current(\$this->childNodes) : null); + + if (\$endNode) + { + if (\$endNode->getNodePath() > \$lastNode->getNodePath()) + throw new PropelException('Cached child node inconsistent with database.'); + else if (\$endNode->getNodePath() == \$lastNode->getNodePath()) + \$lastNode = \$endNode; + else + \$this->attachChildNode(\$lastNode); + } + else + { + \$this->attachChildNode(\$lastNode); + } + } + } + + return \$lastNode; + } +"; + } + + protected function addGetSiblingNode(&$script) + { + $script .= " + /** + * Returns next (or previous) sibling node or null. Retrieves from database if + * not loaded yet. + * + * @param boolean True if previous sibling should be returned. + * @param boolean True if sibling should be retrieved from database. + * @param PropelPDO Connection to use if retrieving from database. + * @return ".$this->getStubNodeBuilder()->getClassname()." + */ + public function getSiblingNode(\$prev = false, \$querydb = false, PropelPDO \$con = null) + { + \$nidx = \$this->getNodeIndex(); + + if (\$this->isRootNode()) + { + return null; + } + else if (\$prev) + { + if (\$nidx > 1 && (\$parentNode = \$this->getParentNode(\$querydb, \$con))) + return \$parentNode->getChildNodeAt(\$nidx-1, \$querydb, \$con); + else + return null; + } + else + { + if (\$parentNode = \$this->getParentNode(\$querydb, \$con)) + return \$parentNode->getChildNodeAt(\$nidx+1, \$querydb, \$con); + else + return null; + } + } +"; + } + + protected function addGetParentNode(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $nodePeerClassname = $this->getStubNodePeerBuilder()->getClassname(); + + $script .= " + /** + * Returns parent node. Loads from database if not cached yet. + * + * @param boolean True if parent should be retrieved from database. + * @param PropelPDO Connection to use if retrieving from database. + * @return ".$this->getStubNodeBuilder()->getClassname()." + */ + public function getParentNode(\$querydb = true, PropelPDO \$con = null) + { + if (\$querydb && + \$this->parentNode === null && + !\$this->isRootNode() && + !\$this->obj->isNew() && + !\$this->obj->isDeleted()) + { + \$npath =& \$this->getNodePath(); + \$sep = strrpos(\$npath, $nodePeerClassname::NPATH_SEP); + \$ppath = substr(\$npath, 0, \$sep); + + \$criteria = new Criteria($peerClassname::DATABASE_NAME); + \$criteria->add($nodePeerClassname::NPATH_COLNAME, \$ppath, Criteria::EQUAL); + + if (\$parentObj = $peerClassname::doSelectOne(\$criteria, \$con)) + { + \$parentNode = new ".$this->getStubNodeBuilder()->getClassname()."(\$parentObj); + \$parentNode->attachChildNode(\$this); + } + } + + return \$this->parentNode; + } +"; + } + + protected function addGetAncestors(&$script) + { + $script .= " + /** + * Returns an array of all ancestor nodes, starting with the root node + * first. + * + * @param boolean True if ancestors should be retrieved from database. + * @param PropelPDO Connection to use if retrieving from database. + * @return array + */ + public function getAncestors(\$querydb = false, PropelPDO \$con = null) + { + \$ancestors = array(); + \$parentNode = \$this; + + while (\$parentNode = \$parentNode->getParentNode(\$querydb, \$con)) + array_unshift(\$ancestors, \$parentNode); + + return \$ancestors; + } +"; + } + + protected function addIsRootNode(&$script) + { + $script .= " + /** + * Returns true if node is the root node of the tree. + * @return boolean + */ + public function isRootNode() + { + return (\$this->getNodePath() === '1'); + } +"; + } + + protected function addSetNew(&$script) + { + $script .= " + /** + * Changes the state of the object and its descendants to 'new'. + * Also changes the node path to '0' to indicate that it is not a + * stored node. + * + * @param boolean + * @return void + */ + public function setNew(\$b) + { + \$this->adjustStatus('new', \$b); + \$this->adjustNodePath(\$this->getNodePath(), '0'); + } +"; + } + + protected function addSetDeleted(&$script) + { + $script .= " + /** + * Changes the state of the object and its descendants to 'deleted'. + * + * @param boolean + * @return void + */ + public function setDeleted(\$b) + { + \$this->adjustStatus('deleted', \$b); + } +"; + } + + protected function addAddChildNode(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $nodePeerClassname = $this->getStubNodePeerBuilder()->getClassname(); + + $script .= " + /** + * Adds the specified node (and its children) as a child to this node. If a + * valid \$beforeNode is specified, the node will be inserted in front of + * \$beforeNode. If \$beforeNode is not specified the node will be appended to + * the end of the child nodes. + * + * @param ".$this->getStubNodeBuilder()->getClassname()." Node to add. + * @param ".$this->getStubNodeBuilder()->getClassname()." Node to insert before. + * @param PropelPDO Connection to use. + */ + public function addChildNode(\$node, \$beforeNode = null, PropelPDO \$con = null) + { + if (\$this->obj->isNew() && !\$node->obj->isNew()) + throw new PropelException('Cannot add stored nodes to a new node.'); + + if (\$this->obj->isDeleted() || \$node->obj->isDeleted()) + throw new PropelException('Cannot add children in a deleted state.'); + + if (\$this->hasChildNode(\$node)) + throw new PropelException('Node is already a child of this node.'); + + if (\$beforeNode && !\$this->hasChildNode(\$beforeNode)) + throw new PropelException('Invalid beforeNode.'); + + if (\$con === null) + \$con = Propel::getConnection($peerClassname::DATABASE_NAME, Propel::CONNECTION_WRITE); + + if (!\$this->obj->isNew()) \$con->beginTransaction(); + + try { + if (\$beforeNode) + { + // Inserting before a node. + \$childIdx = \$beforeNode->getNodeIndex(); + \$this->shiftChildNodes(1, \$beforeNode->getNodeIndex(), \$con); + } + else + { + // Appending child node. + if (\$lastNode = \$this->getLastChildNode(true, \$con)) + \$childIdx = \$lastNode->getNodeIndex()+1; + else + \$childIdx = 1; + } + + // Add the child (and its children) at the specified index. + + if (!\$this->obj->isNew() && \$node->obj->isNew()) + { + \$this->insertNewChildNode(\$node, \$childIdx, \$con); + } + else + { + // \$this->isNew() && \$node->isNew() || + // !\$this->isNew() && !node->isNew() + + \$srcPath = \$node->getNodePath(); + \$dstPath = \$this->getNodePath() . $nodePeerClassname::NPATH_SEP . \$childIdx; + + if (!\$node->obj->isNew()) + { + $nodePeerClassname::moveNodeSubTree(\$srcPath, \$dstPath, \$con); + \$parentNode = \$node->getParentNode(true, \$con); + } + else + { + \$parentNode = \$node->getParentNode(); + } + + if (\$parentNode) + { + \$parentNode->detachChildNode(\$node); + \$parentNode->shiftChildNodes(-1, \$node->getNodeIndex()+1, \$con); + } + + \$node->adjustNodePath(\$srcPath, \$dstPath); + } + + if (!\$this->obj->isNew()) \$con->commit(); + + \$this->attachChildNode(\$node); + + } catch (SQLException \$e) { + if (!\$this->obj->isNew()) \$con->rollBack(); + throw new PropelException(\$e); + } + } +"; + } + + protected function addMoveChildNode(&$script) + { + $script .= " + /** + * Moves the specified child node in the specified direction. + * + * @param ".$this->getStubNodeBuilder()->getClassname()." Node to move. + * @param int Number of spaces to move among siblings (may be negative). + * @param PropelPDO Connection to use. + * @throws PropelException + */ + public function moveChildNode(\$node, \$direction, PropelPDO \$con = null) + { + throw new PropelException('moveChildNode() not implemented yet.'); + } +"; + } + + + protected function addSave(&$script) + { + + $nodePeerClassname = $this->getStubNodePeerBuilder()->getClassname(); + $script .= " + /** + * Saves modified object data to the datastore. + * + * @param boolean If true, descendants will be saved as well. + * @param PropelPDO Connection to use. + */ + public function save(\$recurse = false, PropelPDO \$con = null) + { + if (\$this->obj->isDeleted()) + throw new PropelException('Cannot save deleted node.'); + + if (substr(\$this->getNodePath(), 0, 1) == '0') + throw new PropelException('Cannot save unattached node.'); + + if (\$this->obj->isColumnModified($nodePeerClassname::NPATH_COLNAME)) + throw new PropelException('Cannot save manually modified node path.'); + + \$this->obj->save(\$con); + + if (\$recurse) + { + foreach (\$this->childNodes as \$childNode) + \$childNode->save(\$recurse, \$con); + } + } +"; + } + + + protected function addDelete(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $nodePeerClassname = $this->getStubNodePeerBuilder()->getClassname(); + $script .= " + /** + * Removes this object and all descendants from datastore. + * + * @param PropelPDO Connection to use. + * @return void + * @throws PropelException + */ + public function delete(PropelPDO \$con = null) + { + if (\$this->obj->isDeleted()) { + throw new PropelException('This node has already been deleted.'); + } + + if (\$con === null) { + \$con = Propel::getConnection($peerClassname::DATABASE_NAME, Propel::CONNECTION_WRITE); + } + + if (!\$this->obj->isNew()) { + $nodePeerClassname::deleteNodeSubTree(\$this->getNodePath(), \$con); + } + + if (\$parentNode = \$this->getParentNode(true, \$con)) { + \$parentNode->detachChildNode(\$this); + \$parentNode->shiftChildNodes(-1, \$this->getNodeIndex()+1, \$con); + } + + \$this->setDeleted(true); + } +"; + } + + protected function addEquals(&$script) + { + $nodeClassname = $this->getStubNodeBuilder()->getClassname(); + $script .= " + /** + * Compares the object wrapped by this node with that of another node. Use + * this instead of equality operators to prevent recursive dependency + * errors. + * + * @param $nodeClassname Node to compare. + * @param boolean True if strict comparison should be used. + * @return boolean + */ + public function equals(\$node, \$strict = false) + { + if (\$strict) { + return (\$this->obj === \$node->obj); + } else { + return (\$this->obj == \$node->obj); + } + } +"; + } + + protected function addAttachParentNode(&$script) + { + $nodeClassname = $this->getStubNodeBuilder()->getClassname(); + $script .= " + /** + * This method is used internally when constructing the tree structure + * from the database. To set the parent of a node, you should call + * addChildNode() on the parent. + * + * @param $nodeClassname Parent node to attach. + * @return void + * @throws PropelException + */ + public function attachParentNode(\$node) + { + if (!\$node->hasChildNode(\$this, true)) + throw new PropelException('Failed to attach parent node for non-child.'); + + \$this->parentNode = \$node; + } +"; + } + + + protected function addAttachChildNode(&$script) + { + $nodeClassname = $this->getStubNodeBuilder()->getClassname(); + $nodePeerClassname = $this->getStubNodePeerBuilder()->getClassname(); + $script .= " + /** + * This method is used internally when constructing the tree structure + * from the database. To add a child to a node you should call the + * addChildNode() method instead. + * + * @param $nodeClassname Child node to attach. + * @return void + * @throws PropelException + */ + public function attachChildNode(\$node) + { + if (\$this->hasChildNode(\$node)) + throw new PropelException('Failed to attach child node. Node already exists.'); + + if (\$this->obj->isDeleted() || \$node->obj->isDeleted()) + throw new PropelException('Failed to attach node in deleted state.'); + + if (\$this->obj->isNew() && !\$node->obj->isNew()) + throw new PropelException('Failed to attach non-new child to new node.'); + + if (!\$this->obj->isNew() && \$node->obj->isNew()) + throw new PropelException('Failed to attach new child to non-new node.'); + + if (\$this->getNodePath() . $nodePeerClassname::NPATH_SEP . \$node->getNodeIndex() != \$node->getNodePath()) + throw new PropelException('Failed to attach child node. Node path mismatch.'); + + \$this->childNodes[\$node->getNodeIndex()] = \$node; + ksort(\$this->childNodes); + + \$node->attachParentNode(\$this); + } +"; + } + + protected function addDetachParentNode(&$script) + { + $nodeClassname = $this->getStubNodeBuilder()->getClassname(); + $script .= " + /** + * This method is used internally when deleting nodes. It is used to break + * the link to this node's parent. + * @param $nodeClassname Parent node to detach from. + * @return void + * @throws PropelException + */ + public function detachParentNode(\$node) + { + if (!\$node->hasChildNode(\$this, true)) + throw new PropelException('Failed to detach parent node from non-child.'); + + unset(\$node->childNodes[\$this->getNodeIndex()]); + \$this->parentNode = null; + } +"; + } + + protected function addDetachChildNode(&$script) + { + $script .= " + /** + * This method is used internally when deleting nodes. It is used to break + * the link to this between this node and the specified child. + * @param ".$this->getStubNodeBuilder()->getClassname()." Child node to detach. + * @return void + * @throws PropelException + */ + public function detachChildNode(\$node) + { + if (!\$this->hasChildNode(\$node, true)) + throw new PropelException('Failed to detach non-existent child node.'); + + unset(\$this->childNodes[\$node->getNodeIndex()]); + \$node->parentNode = null; + } +"; + } + + protected function addShiftChildNodes(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $nodePeerClassname = $this->getStubNodePeerBuilder()->getClassname(); + + $script .= " + /** + * Shifts child nodes in the specified direction and offset index. This + * method assumes that there is already space available in the + * direction/offset indicated. + * + * @param int Direction/# spaces to shift. 1=leftshift, 1=rightshift + * @param int Node index to start shift at. + * @param PropelPDO The connection to be used. + * @return void + * @throws PropelException + */ + protected function shiftChildNodes(\$direction, \$offsetIdx, PropelPDO \$con) + { + if (\$this->obj->isDeleted()) + throw new PropelException('Cannot shift nodes for deleted object'); + + \$lastNode = \$this->getLastChildNode(true, \$con); + \$lastIdx = (\$lastNode !== null ? \$lastNode->getNodeIndex() : 0); + + if (\$lastNode === null || \$offsetIdx > \$lastIdx) + return; + + if (\$con === null) + \$con = Propel::getConnection($peerClassname::DATABASE_NAME); + + if (!\$this->obj->isNew()) + { + // Shift nodes in database. + + \$con->beginTransaction(); + + try { + \$n = \$lastIdx - \$offsetIdx + 1; + \$i = \$direction < 1 ? \$offsetIdx : \$lastIdx; + + while (\$n--) + { + \$srcPath = \$this->getNodePath() . $nodePeerClassname::NPATH_SEP . \$i; // 1.2.2 + \$dstPath = \$this->getNodePath() . $nodePeerClassname::NPATH_SEP . (\$i+\$direction); // 1.2.3 + + $nodePeerClassname::moveNodeSubTree(\$srcPath, \$dstPath, \$con); + + \$i -= \$direction; + } + + \$con->commit(); + + } catch (SQLException \$e) { + \$con->rollBack(); + throw new PropelException(\$e); + } + } + + // Shift the in-memory objects. + + \$n = \$lastIdx - \$offsetIdx + 1; + \$i = \$direction < 1 ? \$offsetIdx : \$lastIdx; + + while (\$n--) + { + if (isset(\$this->childNodes[\$i])) + { + \$srcPath = \$this->getNodePath() . $nodePeerClassname::NPATH_SEP . \$i; // 1.2.2 + \$dstPath = \$this->getNodePath() . $nodePeerClassname::NPATH_SEP . (\$i+\$direction); // 1.2.3 + + \$this->childNodes[\$i+\$direction] = \$this->childNodes[\$i]; + \$this->childNodes[\$i+\$direction]->adjustNodePath(\$srcPath, \$dstPath); + + unset(\$this->childNodes[\$i]); + } + + \$i -= \$direction; + } + + ksort(\$this->childNodes); + } +"; + } + + protected function addInsertNewChildNode(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $nodePeerClassname = $this->getStubNodePeerBuilder()->getClassname(); + $nodeClassname = $this->getStubNodePeerBuilder()->getClassname(); + + $script .= " + /** + * Inserts the node and its children at the specified childIdx. + * + * @param $nodeClassname Node to insert. + * @param int One-based child index to insert at. + * @param PropelPDO Connection to use. + * @param void + */ + protected function insertNewChildNode(\$node, \$childIdx, PropelPDO \$con) + { + if (!\$node->obj->isNew()) + throw new PropelException('Failed to insert non-new node.'); + + \$setNodePath = 'set' . $nodePeerClassname::NPATH_PHPNAME; + + \$node->obj->\$setNodePath(\$this->getNodePath() . $nodePeerClassname::NPATH_SEP . \$childIdx); + \$node->obj->save(\$con); + + \$i = 1; + foreach (\$node->childNodes as \$childNode) + \$node->insertNewChildNode(\$childNode, \$i++, \$con); + } +"; + } + + protected function addAdjustStatus(&$script) + { + $script .= " + /** + * Adjust new/deleted status of node and all children. + * + * @param string Status to change ('New' or 'Deleted') + * @param boolean Value for status. + * @return void + */ + protected function adjustStatus(\$status, \$b) + { + \$setStatus = 'set' . \$status; + + \$this->obj->\$setStatus(\$b); + + foreach (\$this->childNodes as \$childNode) + \$childNode->obj->\$setStatus(\$b); + } +"; + } + + protected function addAdjustNodePath(&$script) + { + $nodePeerClassname = $this->getStubNodePeerBuilder()->getClassname(); + $script .= " + /** + * Adjust path of node and all children. This is used internally when + * inserting/moving nodes. + * + * @param string Section of old path to change. + * @param string New section to replace old path with. + * @return void + */ + protected function adjustNodePath(\$oldBasePath, \$newBasePath) + { + \$setNodePath = 'set' . $nodePeerClassname::NPATH_PHPNAME; + + \$this->obj->\$setNodePath(\$newBasePath . substr(\$this->getNodePath(), strlen(\$oldBasePath))); + \$this->obj->resetModified($nodePeerClassname::NPATH_COLNAME); + + foreach (\$this->childNodes as \$childNode) + \$childNode->adjustNodePath(\$oldBasePath, \$newBasePath); + } +"; + } + +} // PHP5NodeObjectBuilder diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5NodePeerBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5NodePeerBuilder.php.svn-base new file mode 100644 index 0000000..f8f648f --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5NodePeerBuilder.php.svn-base @@ -0,0 +1,765 @@ +. + */ + +require_once 'propel/engine/builder/om/PeerBuilder.php'; + +/** + * Generates a PHP5 tree node Peer class for user object model (OM). + * + * This class produces the base tree node object class (e.g. BaseMyTable) which contains all + * the custom-built accessor and setter methods. + * + * This class replaces the Node.tpl, with the intent of being easier for users + * to customize (through extending & overriding). + * + * @author Hans Lellelid + * @package propel.engine.builder.om.php5 + */ +class PHP5NodePeerBuilder extends PeerBuilder { + + /** + * Gets the package for the [base] object classes. + * @return string + */ + public function getPackage() + { + return parent::getPackage() . ".om"; + } + + /** + * Returns the name of the current class being built. + * @return string + */ + public function getUnprefixedClassname() + { + return $this->getBuildProperty('basePrefix') . $this->getStubNodePeerBuilder()->getUnprefixedClassname(); + } + + /** + * Adds the include() statements for files that this class depends on or utilizes. + * @param string &$script The script will be modified in this method. + */ + protected function addIncludes(&$script) + { + } // addIncludes() + + /** + * Adds class phpdoc comment and openning of class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassOpen(&$script) + { + + $table = $this->getTable(); + $tableName = $table->getName(); + $tableDesc = $table->getDescription(); + + $script .= " +/** + * Base static class for performing query operations on the tree contained by the '$tableName' table. + * + * $tableDesc + *"; + if ($this->getBuildProperty('addTimeStamp')) { + $now = strftime('%c'); + $script .= " + * This class was autogenerated by Propel " . $this->getBuildProperty('version') . " on: + * + * $now + *"; + } + $script .= " + * @package ".$this->getPackage()." + */ +abstract class ".$this->getClassname()." { +"; + } + + /** + * Specifies the methods that are added as part of the basic OM class. + * This can be overridden by subclasses that wish to add more methods. + * @see ObjectBuilder::addClassBody() + */ + protected function addClassBody(&$script) + { + $table = $this->getTable(); + + // FIXME + // - Probably the build needs to be customized for supporting + // tables that are "aliases". -- definitely a fringe usecase, though. + + $this->addConstants($script); + + $this->addIsCodeBase($script); + + $this->addRetrieveMethods($script); + + $this->addCreateNewRootNode($script); + $this->addInsertNewRootNode($script); + $this->addMoveNodeSubTree($script); + $this->addDeleteNodeSubTree($script); + + $this->addBuildFamilyCriteria($script); + $this->addBuildTree($script); + + $this->addPopulateNodes($script); + + } + + /** + * Closes class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassClose(&$script) + { + $script .= " +} // " . $this->getClassname() . " +"; + } + + protected function addConstants(&$script) + { + $table = $this->getTable(); + + $npath_colname = ''; + $npath_phpname = ''; + $npath_len = 0; + $npath_sep = ''; + foreach ($table->getColumns() as $col) { + if ($col->isNodeKey()) { + $npath_colname = $table->getName() . '.' . strtoupper($col->getName()); + $npath_phpname = $col->getPhpName(); + $npath_len = $col->getSize(); + $npath_sep = $col->getNodeKeySep(); + break; + } + } + $script .= " + const NPATH_COLNAME = '$npath_colname'; + const NPATH_PHPNAME = '$npath_phpname'; + const NPATH_SEP = '$npath_sep'; + const NPATH_LEN = $npath_len; +"; + } + + + protected function addIsCodeBase(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $nodePeerClassname = $this->getStubNodePeerBuilder()->getClassname(); + + $script .= " + /** + * Temp function for CodeBase hacks that will go away. + */ + public static function isCodeBase(\$con = null) + { + if (\$con === null) + \$con = Propel::getConnection($peerClassname::DATABASE_NAME); + + return (get_class(\$con) == 'ODBCConnection' && + get_class(\$con->getAdapter()) == 'CodeBaseAdapter'); + } +"; + } + + + protected function addCreateNewRootNode(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + + $nodePeerClassname = $this->getStubNodePeerBuilder()->getClassname(); + $nodeObjectClassname = $this->getStubNodeBuilder()->getClassname(); + + $script .= " + /** + * Create a new Node at the top of tree. This method will destroy any + * existing root node (along with its children). + * + * Use at your own risk! + * + * @param $objectClassname Object wrapped by new node. + * @param PropelPDO Connection to use. + * @return $nodeObjectClassname + * @throws PropelException + */ + public static function createNewRootNode(\$obj, PropelPDO \$con = null) + { + if (\$con === null) + \$con = Propel::getConnection($peerClassname::DATABASE_NAME, Propel::CONNECTION_WRITE); + + \$con->beginTransaction(); + + try { + self::deleteNodeSubTree('1', \$con); + + \$setNodePath = 'set' . self::NPATH_PHPNAME; + + \$obj->\$setNodePath('1'); + \$obj->save(\$con); + + \$con->commit(); + } catch (PropelException \$e) { + \$con->rollBack(); + throw \$e; + } + + return new $nodeObjectClassname(\$obj); + } +"; + } + + protected function addInsertNewRootNode(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + + $nodePeerClassname = $this->getStubNodePeerBuilder()->getClassname(); + $nodeObjectClassname = $this->getStubNodeBuilder()->getClassname(); + + $script .= " + /** + * Inserts a new Node at the top of tree. Any existing root node (along with + * its children) will be made a child of the new root node. This is a + * safer alternative to createNewRootNode(). + * + * @param $objectClassname Object wrapped by new node. + * @param PropelPDO Connection to use. + * @return $nodeObjectClassname + * @throws PropelException + */ + public static function insertNewRootNode(\$obj, PropelPDO \$con = null) + { + if (\$con === null) + \$con = Propel::getConnection($peerClassname::DATABASE_NAME, Propel::CONNECTION_WRITE); + + \$con->beginTransaction(); + try { + // Move root tree to an invalid node path. + $nodePeerClassname::moveNodeSubTree('1', '0', \$con); + + \$setNodePath = 'set' . self::NPATH_PHPNAME; + + // Insert the new root node. + \$obj->\$setNodePath('1'); + \$obj->save(\$con); + + // Move the old root tree as a child of the new root. + $nodePeerClassname::moveNodeSubTree('0', '1' . self::NPATH_SEP . '1', \$con); + + \$con->commit(); + } catch (PropelException \$e) { + \$con->rollBack(); + throw \$e; + } + + return new $nodeObjectClassname(\$obj); + } +"; + } + + /** + * Adds the methods for retrieving nodes. + */ + protected function addRetrieveMethods(&$script) + { + $this->addRetrieveNodes($script); + $this->addRetrieveNodeByPK($script); + $this->addRetrieveNodeByNP($script); + $this->addRetrieveRootNode($script); + + } + + protected function addRetrieveNodes(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $nodePeerClassname = $this->getStubNodePeerBuilder()->getClassname(); + + $script .= " + /** + * Retrieves an array of tree nodes based on specified criteria. Optionally + * includes all parent and/or child nodes of the matching nodes. + * + * @param Criteria Criteria to use. + * @param boolean True if ancestors should also be retrieved. + * @param boolean True if descendants should also be retrieved. + * @param PropelPDO Connection to use. + * @return array Array of root nodes. + */ + public static function retrieveNodes(\$criteria, \$ancestors = false, \$descendants = false, PropelPDO \$con = null) + { + \$criteria = $nodePeerClassname::buildFamilyCriteria(\$criteria, \$ancestors, \$descendants); + \$stmt = ".$this->getStubPeerBuilder()->getClassname()."::doSelectStmt(\$criteria, \$con); + return self::populateNodes(\$stmt, \$criteria); + } +"; + } + + protected function addRetrieveNodeByPK(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + + $nodePeerClassname = $this->getStubNodePeerBuilder()->getClassname(); + $nodeObjectClassname = $this->getStubNodeBuilder()->getClassname(); + + $script .= " + /** + * Retrieves a tree node based on a primary key. Optionally includes all + * parent and/or child nodes of the matching node. + * + * @param mixed $objectClassname primary key (array for composite keys) + * @param boolean True if ancestors should also be retrieved. + * @param boolean True if descendants should also be retrieved. + * @param PropelPDO Connection to use. + * @return $nodeObjectClassname + */ + public static function retrieveNodeByPK(\$pk, \$ancestors = false, \$descendants = false, PropelPDO \$con = null) + { + throw new PropelException('retrieveNodeByPK() not implemented yet.'); + } +"; + } + + protected function addRetrieveNodeByNP(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + + $nodePeerClassname = $this->getStubNodePeerBuilder()->getClassname(); + $nodeObjectClassname = $this->getStubNodeBuilder()->getClassname(); + + $script .= " + /** + * Retrieves a tree node based on a node path. Optionally includes all + * parent and/or child nodes of the matching node. + * + * @param string Node path to retrieve. + * @param boolean True if ancestors should also be retrieved. + * @param boolean True if descendants should also be retrieved. + * @param PropelPDO Connection to use. + * @return $objectClassname + */ + public static function retrieveNodeByNP(\$np, \$ancestors = false, \$descendants = false, PropelPDO \$con = null) + { + \$criteria = new Criteria($peerClassname::DATABASE_NAME); + \$criteria->add(self::NPATH_COLNAME, \$np, Criteria::EQUAL); + \$criteria = self::buildFamilyCriteria(\$criteria, \$ancestors, \$descendants); + \$stmt = $peerClassname::doSelectStmt(\$criteria, \$con); + \$nodes = self::populateNodes(\$stmt, \$criteria); + return (count(\$nodes) == 1 ? \$nodes[0] : null); + } +"; + } + + protected function addRetrieveRootNode(&$script) + { + $script .= " + /** + * Retrieves the root node. + * + * @param string Node path to retrieve. + * @param boolean True if descendants should also be retrieved. + * @param PropelPDO Connection to use. + * @return ".$this->getStubNodeBuilder()->getClassname()." + */ + public static function retrieveRootNode(\$descendants = false, PropelPDO \$con = null) + { + return self::retrieveNodeByNP('1', false, \$descendants, \$con); + } +"; + } + + protected function addMoveNodeSubTree(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + + $nodePeerClassname = $this->getStubNodePeerBuilder()->getClassname(); + $nodeObjectClassname = $this->getStubNodeBuilder()->getClassname(); + + $script .= " + /** + * Moves the node subtree at srcpath to the dstpath. This method is intended + * for internal use by the BaseNode object. Note that it does not check for + * preexisting nodes at the dstpath. It also does not update the node path + * of any Node objects that might currently be in memory. + * + * Use at your own risk! + * + * @param string Source node path to move (root of the src subtree). + * @param string Destination node path to move to (root of the dst subtree). + * @param PropelPDO Connection to use. + * @return void + * @throws PropelException + * @todo This is currently broken for simulated 'onCascadeDelete's. + * @todo Need to abstract the SQL better. The CONCAT sql function doesn't + * seem to be standardized (i.e. mssql), so maybe it needs to be moved + * to DBAdapter. + */ + public static function moveNodeSubTree(\$srcPath, \$dstPath, PropelPDO \$con = null) + { + if (substr(\$dstPath, 0, strlen(\$srcPath)) == \$srcPath) + throw new PropelException('Cannot move a node subtree within itself.'); + + if (\$con === null) + \$con = Propel::getConnection($peerClassname::DATABASE_NAME, Propel::CONNECTION_WRITE); + + /** + * Example: + * UPDATE table + * SET npath = CONCAT('1.3', SUBSTRING(npath, 6, 74)) + * WHERE npath = '1.2.2' OR npath LIKE '1.2.2.%' + */ + + \$npath = $nodePeerClassname::NPATH_COLNAME; + //the following dot isn`t mean`t a nodeKeySeperator + \$setcol = substr(\$npath, strrpos(\$npath, '.')+1); + \$setcollen = $nodePeerClassname::NPATH_LEN; + \$db = Propel::getDb($peerClassname::DATABASE_NAME); + + // + if ($nodePeerClassname::isCodeBase(\$con)) + { + // This is a hack to get CodeBase working. It will eventually be removed. + // It is a workaround for the following CodeBase bug: + // -Prepared statement parameters cannot be embedded in SQL functions (i.e. CONCAT) + \$sql = \"UPDATE \" . $peerClassname::TABLE_NAME . \" \" . + \"SET \$setcol=\" . \$db->concatString(\"'\$dstPath'\", \$db->subString(\$npath, strlen(\$srcPath)+1, \$setcollen)) . \" \" . + \"WHERE \$npath = '\$srcPath' OR \$npath LIKE '\" . \$srcPath . $nodePeerClassname::NPATH_SEP . \"%'\"; + + \$con->executeUpdate(\$sql); + } + else + { + // + \$sql = \"UPDATE \" . $peerClassname::TABLE_NAME . \" \" . + \"SET \$setcol=\" . \$db->concatString('?', \$db->subString(\$npath, '?', '?')) . \" \" . + \"WHERE \$npath = ? OR \$npath LIKE ?\"; + + \$stmt = \$con->prepare(\$sql); + \$stmt->bindValue(1, \$dstPath); // string + \$srcPathPlus1 = strlen(\$srcPath)+1; + \$stmt->bindValue(2, \$srcPathPlus1); // int + \$stmt->bindValue(3, \$setcollen);// int + \$stmt->bindValue(4, \$srcPath);// string + \$srcPathWC = \$srcPath . $nodePeerClassname::NPATH_SEP . '%'; + \$stmt->bindValue(5, \$srcPathWC); // string + \$stmt->execute(); + // + } + } +"; + } + + protected function addDeleteNodeSubTree(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + + $nodePeerClassname = $this->getStubNodePeerBuilder()->getClassname(); + $nodeObjectClassname = $this->getStubNodeBuilder()->getClassname(); + + $script .= " + /** + * Deletes the node subtree at the specified node path from the database. + * + * @param string Node path to delete + * @param PropelPDO Connection to use. + * @return void + * @throws PropelException + * @todo This is currently broken for simulated 'onCascadeDelete's. + */ + public static function deleteNodeSubTree(\$nodePath, PropelPDO \$con = null) + { + if (\$con === null) + \$con = Propel::getConnection($peerClassname::DATABASE_NAME, Propel::CONNECTION_WRITE); + + /** + * DELETE FROM table + * WHERE npath = '1.2.2' OR npath LIKE '1.2.2.%' + */ + + \$criteria = new Criteria($peerClassname::DATABASE_NAME); + \$criteria->add($nodePeerClassname::NPATH_COLNAME, \$nodePath, Criteria::EQUAL); + \$criteria->addOr($nodePeerClassname::NPATH_COLNAME, \$nodePath . self::NPATH_SEP . '%', Criteria::LIKE); + {$this->basePeerClassname}::doDelete(\$criteria, \$con); + } +"; + } + + protected function addBuildFamilyCriteria(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + + $nodePeerClassname = $this->getStubNodePeerBuilder()->getClassname(); + $nodeObjectClassname = $this->getStubNodeBuilder()->getClassname(); + + $script .= " + /** + * Builds the criteria needed to retrieve node ancestors and/or descendants. + * + * @param Criteria Criteria to start with + * @param boolean True if ancestors should be retrieved. + * @param boolean True if descendants should be retrieved. + * @return Criteria + */ + public static function buildFamilyCriteria(\$criteria, \$ancestors = false, \$descendants = false) + { + /* + Example SQL to retrieve nodepath '1.2.3' with both ancestors and descendants: + + SELECT L.NPATH, L.LABEL, test.NPATH, UCASE(L.NPATH) + FROM test L, test + WHERE test.NPATH='1.2.3' AND + (L.NPATH=SUBSTRING(test.NPATH, 1, LENGTH(L.NPATH)) OR + test.NPATH=SUBSTRING(L.NPATH, 1, LENGTH(test.NPATH))) + ORDER BY UCASE(L.NPATH) ASC + */ + + if (\$criteria === null) + \$criteria = new Criteria($peerClassname::DATABASE_NAME); + + if (!\$criteria->getSelectColumns()) + $peerClassname::addSelectColumns(\$criteria); + + \$db = Propel::getDb(\$criteria->getDbName()); + + if ((\$ancestors || \$descendants) && \$criteria->size()) + { + // If we are retrieving ancestors/descendants, we need to do a + // self-join to locate them. The exception to this is if no search + // criteria is specified. In this case we're retrieving all nodes + // anyway, so there is no need to do a self-join. + + // The left-side of the self-join will contain the columns we'll + // use to build node objects (target node records along with their + // ancestors and/or descendants). The right-side of the join will + // contain the target node records specified by the initial criteria. + // These are used to match the appropriate ancestor/descendant on + // the left. + + // Specify an alias for the left-side table to use. + \$criteria->addAlias('L', $peerClassname::TABLE_NAME); + + // Make sure we have select columns to begin with. + if (!\$criteria->getSelectColumns()) + $peerClassname::addSelectColumns(\$criteria); + + // Replace any existing columns for the right-side table with the + // left-side alias. + \$selectColumns = \$criteria->getSelectColumns(); + \$criteria->clearSelectColumns(); + foreach (\$selectColumns as \$colName) + \$criteria->addSelectColumn(str_replace($peerClassname::TABLE_NAME, 'L', \$colName)); + + \$a = null; + \$d = null; + + \$npathL = $peerClassname::alias('L', $nodePeerClassname::NPATH_COLNAME); + \$npathR = $nodePeerClassname::NPATH_COLNAME; + \$npath_len = $nodePeerClassname::NPATH_LEN; + + if (\$ancestors) + { + // For ancestors, match left-side node paths which are contained + // by right-side node paths. + \$a = \$criteria->getNewCriterion(\$npathL, + \"\$npathL=\" . \$db->subString(\$npathR, 1, \$db->strLength(\$npathL), \$npath_len), + Criteria::CUSTOM); + } + + if (\$descendants) + { + // For descendants, match left-side node paths which contain + // right-side node paths. + \$d = \$criteria->getNewCriterion(\$npathR, + \"\$npathR=\" . \$db->subString(\$npathL, 1, \$db->strLength(\$npathR), \$npath_len), + Criteria::CUSTOM); + } + + if (\$a) + { + if (\$d) \$a->addOr(\$d); + \$criteria->addAnd(\$a); + } + else if (\$d) + { + \$criteria->addAnd(\$d); + } + + // Add the target node path column. This is used by populateNodes(). + \$criteria->addSelectColumn(\$npathR); + + // Sort by node path to speed up tree construction in populateNodes() + \$criteria->addAsColumn('npathlen', \$db->strLength(\$npathL)); + \$criteria->addAscendingOrderByColumn('npathlen'); + \$criteria->addAscendingOrderByColumn(\$npathL); + } + else + { + // Add the target node path column. This is used by populateNodes(). + \$criteria->addSelectColumn($nodePeerClassname::NPATH_COLNAME); + + // Sort by node path to speed up tree construction in populateNodes() + \$criteria->addAsColumn('npathlen', \$db->strLength($nodePeerClassname::NPATH_COLNAME)); + \$criteria->addAscendingOrderByColumn('npathlen'); + \$criteria->addAscendingOrderByColumn($nodePeerClassname::NPATH_COLNAME); + } + + return \$criteria; + } +"; + } + + protected function addBuildTree(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + + $nodePeerClassname = $this->getStubNodePeerBuilder()->getClassname(); + $nodeObjectClassname = $this->getStubNodeBuilder()->getClassname(); + + $script .= " + /** + * This method reconstructs as much of the tree structure as possible from + * the given array of objects. Depending on how you execute your query, it + * is possible for the ResultSet to contain multiple tree fragments (i.e. + * subtrees). The array returned by this method will contain one entry + * for each subtree root node it finds. The remaining subtree nodes are + * accessible from the $nodeObjectClassname methods of the + * subtree root nodes. + * + * @param array Array of $nodeObjectClassname objects + * @return array Array of $nodeObjectClassname objects + */ + public static function buildTree(\$nodes) + { + // Subtree root nodes to return + \$rootNodes = array(); + + // Build the tree relations + foreach (\$nodes as \$node) + { + \$sep = strrpos(\$node->getNodePath(), $nodePeerClassname::NPATH_SEP); + \$parentPath = (\$sep !== false ? substr(\$node->getNodePath(), 0, \$sep) : ''); + \$parentNode = null; + + // Scan other nodes for parent. + foreach (\$nodes as \$pnode) + { + if (\$pnode->getNodePath() === \$parentPath) + { + \$parentNode = \$pnode; + break; + } + } + + // If parent was found, attach as child, otherwise its a subtree root + if (\$parentNode) + \$parentNode->attachChildNode(\$node); + else + \$rootNodes[] = \$node; + } + + return \$rootNodes; + } +"; + } + + protected function addPopulateNodes(&$script) + { + $table = $this->getTable(); + + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + + $nodePeerClassname = $this->getStubNodePeerBuilder()->getClassname(); + $nodeObjectClassname = $this->getStubNodeBuilder()->getClassname(); + + $script .= " + /** + * Populates the $objectClassname objects from the + * specified ResultSet, wraps them in $nodeObjectClassname + * objects and build the appropriate node relationships. + * The array returned by this method will only include the initial targets + * of the query, even if ancestors/descendants were also requested. + * The ancestors/descendants will be cached in memory and are accessible via + * the getNode() methods. + * + * @param PDOStatement \$stmt Executed PDOStatement + * @param Criteria + * @return array Array of $nodeObjectClassname objects. + */ + public static function populateNodes(PDOStatement \$stmt, \$criteria) + { + \$nodes = array(); + \$targets = array(); + \$targetfld = count(\$criteria->getSelectColumns()); +"; + + if (!$table->getChildrenColumn()) { + $script .= " + // set the class once to avoid overhead in the loop + \$cls = $peerClassname::getOMClass(); + \$cls = substr('.'.\$cls, strrpos('.'.\$cls, '.') + 1); +"; + } + + $script .= " + // populate the object(s) + foreach(\$stmt->fetchAll() AS \$row) + { + if (!isset(\$nodes[\$row[0]])) + { +"; + if ($table->getChildrenColumn()) { + $script .= " + // class must be set each time from the record row + \$cls = $peerClassname::getOMClass(\$row, 1); + \$cls = substr('.'.\$cls, strrpos('.'.\$cls, '.') + 1); +"; + } + + $script .= " + " . $this->buildObjectInstanceCreationCode('$obj', '$cls') . " + \$obj->hydrate(\$row); + + \$nodes[\$row[0]] = new $nodeObjectClassname(\$obj); + } + + \$node = \$nodes[\$row[0]]; + + if (\$node->getNodePath() === \$row[\$targetfld]) + \$targets[\$node->getNodePath()] = \$node; + } + + $nodePeerClassname::buildTree(\$nodes); + + return array_values(\$targets); + } +"; + } + +} // PHP5NodePeerBuilder diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5ObjectBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5ObjectBuilder.php.svn-base new file mode 100644 index 0000000..ce7272c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5ObjectBuilder.php.svn-base @@ -0,0 +1,4071 @@ +. + */ + +require_once 'propel/engine/builder/om/ObjectBuilder.php'; + +/** + * Generates a PHP5 base Object class for user object model (OM). + * + * This class produces the base object class (e.g. BaseMyTable) which contains all + * the custom-built accessor and setter methods. + * + * @author Hans Lellelid + * @package propel.engine.builder.om.php5 + */ +class PHP5ObjectBuilder extends ObjectBuilder { + + /** + * Gets the package for the [base] object classes. + * @return string + */ + public function getPackage() + { + return parent::getPackage() . ".om"; + } + + /** + * Returns the name of the current class being built. + * @return string + */ + public function getUnprefixedClassname() + { + return $this->getBuildProperty('basePrefix') . $this->getStubObjectBuilder()->getUnprefixedClassname(); + } + + /** + * Validates the current table to make sure that it won't + * result in generated code that will not parse. + * + * This method may emit warnings for code which may cause problems + * and will throw exceptions for errors that will definitely cause + * problems. + */ + protected function validateModel() + { + parent::validateModel(); + + $table = $this->getTable(); + + // Check to see whether any generated foreign key names + // will conflict with column names. + + $colPhpNames = array(); + $fkPhpNames = array(); + + foreach ($table->getColumns() as $col) { + $colPhpNames[] = $col->getPhpName(); + } + + foreach ($table->getForeignKeys() as $fk) { + $fkPhpNames[] = $this->getFKPhpNameAffix($fk, $plural = false); + } + + $intersect = array_intersect($colPhpNames, $fkPhpNames); + if (!empty($intersect)) { + throw new EngineException("One or more of your column names for [" . $table->getName() . "] table conflict with foreign key names (" . implode(", ", $intersect) . ")"); + } + + // Check foreign keys to see if there are any foreign keys that + // are also matched with an inversed referencing foreign key + // (this is currently unsupported behavior) + // see: http://propel.phpdb.org/trac/ticket/549 + + foreach ($table->getForeignKeys() as $fk) { + if ($fk->isMatchedByInverseFK()) { + throw new EngineException("The 1:1 relationship expressed by foreign key " . $fk->getName() . " is defined in both directions; Propel does not currently support this (if you must have both foreign key constraints, consider adding this constraint with a custom SQL file.)" ); + } + } + } + + /** + * Returns the appropriate formatter (from platform) for a date/time column. + * @param Column $col + * @return string + */ + protected function getTemporalFormatter(Column $col) + { + $fmt = null; + if ($col->getType() === PropelTypes::DATE) { + $fmt = $this->getPlatform()->getDateFormatter(); + } elseif ($col->getType() === PropelTypes::TIME) { + $fmt = $this->getPlatform()->getTimeFormatter(); + } elseif ($col->getType() === PropelTypes::TIMESTAMP) { + $fmt = $this->getPlatform()->getTimestampFormatter(); + } + return $fmt; + } + + /** + * Returns the type-casted and stringified default value for the specified Column. + * This only works for scalar default values currently. + * @return string The default value or 'NULL' if there is none. + */ + protected function getDefaultValueString(Column $col) + { + $defaultValue = var_export(null, true); + if (($val = $col->getPhpDefaultValue()) !== null) { + if ($col->isTemporalType()) { + $fmt = $this->getTemporalFormatter($col); + try { + if (!($this->getPlatform() instanceof MysqlPlatform && + ($val === '0000-00-00 00:00:00' || $val === '0000-00-00'))) { + // while technically this is not a default value of NULL, + // this seems to be closest in meaning. + $defDt = new DateTime($val); + $defaultValue = var_export($defDt->format($fmt), true); + } + } catch (Exception $x) { + // prevent endless loop when timezone is undefined + date_default_timezone_set('America/Los_Angeles'); + throw new EngineException("Unable to parse default temporal value for " . $col->getFullyQualifiedName() . ": " .$this->getDefaultValueString($col), $x); + } + } else { + if ($col->isPhpPrimitiveType()) { + settype($val, $col->getPhpType()); + $defaultValue = var_export($val, true); + } elseif ($col->isPhpObjectType()) { + $defaultValue = 'new '.$col->getPhpType().'(' . var_export($val, true) . ')'; + } else { + throw new EngineException("Cannot get default value string for " . $col->getFullyQualifiedName()); + } + } + } + return $defaultValue; + } + + /** + * Adds the include() statements for files that this class depends on or utilizes. + * @param string &$script The script will be modified in this method. + */ + protected function addIncludes(&$script) + { + } // addIncludes() + + /** + * Adds class phpdoc comment and openning of class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassOpen(&$script) + { + + $table = $this->getTable(); + $tableName = $table->getName(); + $tableDesc = $table->getDescription(); + $interface = $this->getInterface(); + + $script .= " +/** + * Base class that represents a row from the '$tableName' table. + * + * $tableDesc + *"; + if ($this->getBuildProperty('addTimeStamp')) { + $now = strftime('%c'); + $script .= " + * This class was autogenerated by Propel " . $this->getBuildProperty('version') . " on: + * + * $now + *"; + } + $script .= " + * @package ".$this->getPackage()." + */ +abstract class ".$this->getClassname()." extends ".ClassTools::classname($this->getBaseClass())." "; + + $interface = ClassTools::getInterface($table); + if ($interface) { + $script .= " implements " . ClassTools::classname($interface); + } + + $script .= " { + +"; + } + + /** + * Specifies the methods that are added as part of the basic OM class. + * This can be overridden by subclasses that wish to add more methods. + * @see ObjectBuilder::addClassBody() + */ + protected function addClassBody(&$script) + { + $table = $this->getTable(); + if (!$table->isAlias()) { + $this->addConstants($script); + $this->addAttributes($script); + } + + if ($this->hasDefaultValues()) { + $this->addApplyDefaultValues($script); + $this->addConstructor($script); + } + + $this->addColumnAccessorMethods($script); + $this->addColumnMutatorMethods($script); + + $this->addHasOnlyDefaultValues($script); + + $this->addHydrate($script); + $this->addEnsureConsistency($script); + + if (!$table->isReadOnly()) { + $this->addManipulationMethods($script); + } + + if ($this->isAddValidateMethod()) + { + $this->addValidationMethods($script); + } + + if ($this->isAddGenericAccessors()) { + $this->addGetByName($script); + $this->addGetByPosition($script); + $this->addToArray($script); + } + + if ($this->isAddGenericMutators()) { + $this->addSetByName($script); + $this->addSetByPosition($script); + $this->addFromArray($script); + } + + $this->addBuildCriteria($script); + $this->addBuildPkeyCriteria($script); + $this->addGetPrimaryKey($script); + $this->addSetPrimaryKey($script); + + $this->addCopy($script); + + if (!$table->isAlias()) { + $this->addGetPeer($script); + } + + $this->addFKMethods($script); + $this->addRefFKMethods($script); + $this->addClearAllReferences($script); + + // apply behaviors + $this->applyBehaviorModifier('objectMethods', $script, " "); + + $this->addPrimaryString($script); + } + + /** + * Closes class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassClose(&$script) + { + $script .= " +} // " . $this->getClassname() . " +"; + $this->applyBehaviorModifier('objectFilter', $script, ""); + } + + /** + * Adds any constants to the class. + * @param string &$script The script will be modified in this method. + */ + protected function addConstants(&$script) + { + // nothing to do here any more + // fieldnameTypeConstants have been moved to class BasePeer [sv] + } + + /** + * Adds class attributes. + * @param string &$script The script will be modified in this method. + */ + protected function addAttributes(&$script) + { + $table = $this->getTable(); + + $script .= " + /** + * The Peer class. + * Instance provides a convenient way of calling static methods on a class + * that calling code may not be able to identify. + * @var ".$this->getPeerClassname()." + */ + protected static \$peer; +"; + if (!$table->isAlias()) { + $this->addColumnAttributes($script); + } + + foreach ($table->getForeignKeys() as $fk) { + $this->addFKAttributes($script, $fk); + } + + foreach ($table->getReferrers() as $refFK) { + // if ($refFK->getTable()->getName() != $table->getName()) { + $this->addRefFKAttributes($script, $refFK); + // } + } + + $this->addAlreadyInSaveAttribute($script); + $this->addAlreadyInValidationAttribute($script); + + // apply behaviors + $this->applyBehaviorModifier('objectAttributes', $script, " "); + } + + /** + * Adds variables that store column values. + * @param string &$script The script will be modified in this method. + * @see addColumnNameConstants() + */ + protected function addColumnAttributes(&$script) { + + $table = $this->getTable(); + + foreach ($table->getColumns() as $col) { + $this->addColumnAttributeComment($script, $col); + $this->addColumnAttributeDeclaration($script, $col); + if ($col->isLazyLoad() ) { + $this->addColumnAttributeLoaderComment($script, $col); + $this->addColumnAttributeLoaderDeclaration($script, $col); + } + } + } + + /** + * Add comment about the attribute (variable) that stores column values + * @param string &$script The script will be modified in this method. + * @param Column $col + **/ + protected function addColumnAttributeComment(&$script, Column $col) { + $cptype = $col->getPhpType(); + $clo = strtolower($col->getName()); + + $script .= " + /** + * The value for the $clo field."; + if ($col->getDefaultValue()) { + if ($col->getDefaultValue()->isExpression()) { + $script .= " + * Note: this column has a database default value of: (expression) ".$col->getDefaultValue()->getValue(); + } else { + $script .= " + * Note: this column has a database default value of: ". $this->getDefaultValueString($col); + } + } + $script .= " + * @var $cptype + */"; + } + + /** + * Adds the declaration of a column value storage attribute + * @param string &$script The script will be modified in this method. + * @param Column $col + **/ + protected function addColumnAttributeDeclaration(&$script, Column $col) { + $clo = strtolower($col->getName()); + $script .= " + protected \$" . $clo . "; +"; + } + + /** + * Adds the comment about the attribute keeping track if an attribute value has been loaded + * @param string &$script The script will be modified in this method. + * @param Column $col + **/ + protected function addColumnAttributeLoaderComment(&$script, Column $col) { + $script .= " + /** + * Whether the lazy-loaded $clo value has been loaded from database. + * This is necessary to avoid repeated lookups if $clo column is NULL in the db. + * @var boolean + */"; + } + + /** + * Adds the declaration of the attribute keeping track of an attribute's loaded state + * @param string &$script The script will be modified in this method. + * @param Column $col + **/ + protected function addColumnAttributeLoaderDeclaration(&$script, Column $col) { + $clo = strtolower($col->getName()); + $script .= " + protected \$".$clo."_isLoaded = false; +"; + } + + /** + * Adds the getPeer() method. + * This is a convenient, non introspective way of getting the Peer class for a particular object. + * @param string &$script The script will be modified in this method. + */ + protected function addGetPeer(&$script) + { + $this->addGetPeerComment($script); + $this->addGetPeerFunctionOpen($script); + $this->addGetPeerFunctionBody($script); + $this->addGetPeerFunctionClose($script); + } + + /** + * Add the comment for the getPeer method + * @param string &$script The script will be modified in this method. + **/ + protected function addGetPeerComment(&$script) { + $script .= " + /** + * Returns a peer instance associated with this om. + * + * Since Peer classes are not to have any instance attributes, this method returns the + * same instance for all member of this class. The method could therefore + * be static, but this would prevent one from overriding the behavior. + * + * @return ".$this->getPeerClassname()." + */"; + } + + /** + * Adds the function declaration (function opening) for the getPeer method + * @param string &$script The script will be modified in this method. + **/ + protected function addGetPeerFunctionOpen(&$script) { + $script .= " + public function getPeer() + {"; + } + + /** + * Adds the body of the getPeer method + * @param string &$script The script will be modified in this method. + **/ + protected function addGetPeerFunctionBody(&$script) { + $script .= " + if (self::\$peer === null) { + " . $this->buildObjectInstanceCreationCode('self::$peer', $this->getPeerClassname()) . " + } + return self::\$peer;"; + } + + /** + * Add the function close for the getPeer method + * Note: this is just a } and the body ends with a return statement, so it's quite useless. But it's here anyway for consisency, cause there's a close function for all functions and in some other instances, they are useful + * @param string &$script The script will be modified in this method. + **/ + protected function addGetPeerFunctionClose(&$script) { + $script .= " + } +"; + } + + /** + * Adds the constructor for this object. + * @param string &$script The script will be modified in this method. + * @see addConstructor() + */ + protected function addConstructor(&$script) + { + $this->addConstructorComment($script); + $this->addConstructorOpen($script); + $this->addConstructorBody($script); + $this->addConstructorClose($script); + } + + /** + * Adds the comment for the constructor + * @param string &$script The script will be modified in this method. + **/ + protected function addConstructorComment(&$script) { + $script .= " + /** + * Initializes internal state of ".$this->getClassname()." object. + * @see applyDefaults() + */"; + } + + /** + * Adds the function declaration for the constructor + * @param string &$script The script will be modified in this method. + **/ + protected function addConstructorOpen(&$script) { + $script .= " + public function __construct() + {"; + } + + /** + * Adds the function body for the constructor + * @param string &$script The script will be modified in this method. + **/ + protected function addConstructorBody(&$script) { + $script .= " + parent::__construct(); + \$this->applyDefaultValues();"; + } + + /** + * Adds the function close for the constructor + * @param string &$script The script will be modified in this method. + **/ + protected function addConstructorClose(&$script) { + $script .= " + } +"; + } + + /** + * Adds the applyDefaults() method, which is called from the constructor. + * @param string &$script The script will be modified in this method. + * @see addConstructor() + */ + protected function addApplyDefaultValues(&$script) + { + $this->addApplyDefaultValuesComment($script); + $this->addApplyDefaultValuesOpen($script); + $this->addApplyDefaultValuesBody($script); + $this->addApplyDefaultValuesClose($script); + } + + /** + * Adds the comment for the applyDefaults method + * @param string &$script The script will be modified in this method. + * @see addApplyDefaultValues() + **/ + protected function addApplyDefaultValuesComment(&$script) { + $script .= " + /** + * Applies default values to this object. + * This method should be called from the object's constructor (or + * equivalent initialization method). + * @see __construct() + */"; + } + + /** + * Adds the function declaration for the applyDefaults method + * @param string &$script The script will be modified in this method. + * @see addApplyDefaultValues() + **/ + protected function addApplyDefaultValuesOpen(&$script) { + $script .= " + public function applyDefaultValues() + {"; + } + + /** + * Adds the function body of the applyDefault method + * @param string &$script The script will be modified in this method. + * @see addApplyDefaultValues() + **/ + protected function addApplyDefaultValuesBody(&$script) { + $table = $this->getTable(); + // FIXME - Apply support for PHP default expressions here + // see: http://propel.phpdb.org/trac/ticket/378 + + $colsWithDefaults = array(); + foreach ($table->getColumns() as $col) { + $def = $col->getDefaultValue(); + if ($def !== null && !$def->isExpression()) { + $colsWithDefaults[] = $col; + } + } + + $colconsts = array(); + foreach ($colsWithDefaults as $col) { + $clo = strtolower($col->getName()); + $script .= " + \$this->".$clo." = ".$this->getDefaultValueString($col).";"; + + } + } + + + /** + * Adds the function close for the applyDefaults method + * @param string &$script The script will be modified in this method. + * @see addApplyDefaultValues() + **/ + protected function addApplyDefaultValuesClose(&$script) { + $script .= " + } +"; + } + + // -------------------------------------------------------------- + // + // A C C E S S O R M E T H O D S + // + // -------------------------------------------------------------- + + /** + * Adds a date/time/timestamp getter method. + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + * @see parent::addColumnAccessors() + */ + protected function addTemporalAccessor(&$script, Column $col) + { + $this->addTemporalAccessorComment($script, $col); + $this->addTemporalAccessorOpen($script, $col); + $this->addTemporalAccessorBody($script, $col); + $this->addTemporalAccessorClose($script, $col); + } // addTemporalAccessor + + + /** + * Adds the comment for a temporal accessor + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + * @see addTemporalAccessor + **/ + protected function addTemporalAccessorComment(&$script, Column $col) { + $clo = strtolower($col->getName()); + $useDateTime = $this->getBuildProperty('useDateTimeClass'); + + $dateTimeClass = $this->getBuildProperty('dateTimeClass'); + if (!$dateTimeClass) { + $dateTimeClass = 'DateTime'; + } + + $handleMysqlDate = false; + if ($this->getPlatform() instanceof MysqlPlatform) { + if ($col->getType() === PropelTypes::TIMESTAMP) { + $handleMysqlDate = true; + $mysqlInvalidDateString = '0000-00-00 00:00:00'; + } elseif ($col->getType() === PropelTypes::DATE) { + $handleMysqlDate = true; + $mysqlInvalidDateString = '0000-00-00'; + } + // 00:00:00 is a valid time, so no need to check for that. + } + + $script .= " + /** + * Get the [optionally formatted] temporal [$clo] column value. + * ".$col->getDescription(); + if (!$useDateTime) { + $script .= " + * This accessor only only work with unix epoch dates. Consider enabling the propel.useDateTimeClass + * option in order to avoid converstions to integers (which are limited in the dates they can express)."; + } + $script .= " + * + * @param string \$format The date/time format string (either date()-style or strftime()-style). + * If format is NULL, then the raw ".($useDateTime ? 'DateTime object' : 'unix timestamp integer')." will be returned."; + if ($useDateTime) { + $script .= " + * @return mixed Formatted date/time value as string or $dateTimeClass object (if format is NULL), NULL if column is NULL" .($handleMysqlDate ? ', and 0 if column value is ' . $mysqlInvalidDateString : ''); + } else { + $script .= " + * @return mixed Formatted date/time value as string or (integer) unix timestamp (if format is NULL), NULL if column is NULL".($handleMysqlDate ? ', and 0 if column value is ' . $mysqlInvalidDateString : ''); + } + $script .= " + * @throws PropelException - if unable to parse/validate the date/time value. + */"; + } + + + /** + * Adds the function declaration for a temporal accessor + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + * @see addTemporalAccessor + **/ + protected function addTemporalAccessorOpen(&$script, Column $col) { + $cfc = $col->getPhpName(); + + $defaultfmt = null; + $visibility = $col->getAccessorVisibility(); + + // Default date/time formatter strings are specified in build.properties + if ($col->getType() === PropelTypes::DATE) { + $defaultfmt = $this->getBuildProperty('defaultDateFormat'); + } elseif ($col->getType() === PropelTypes::TIME) { + $defaultfmt = $this->getBuildProperty('defaultTimeFormat'); + } elseif ($col->getType() === PropelTypes::TIMESTAMP) { + $defaultfmt = $this->getBuildProperty('defaultTimeStampFormat'); + } + if (empty($defaultfmt)) { $defaultfmt = null; } + + $script .= " + ".$visibility." function get$cfc(\$format = ".var_export($defaultfmt, true).""; + if ($col->isLazyLoad()) $script .= ", \$con = null"; + $script .= ") + {"; + } + + /** + * Adds the body of the temporal accessor + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + * @see addTemporalAccessor + **/ + protected function addTemporalAccessorBody(&$script, Column $col) { + $cfc = $col->getPhpName(); + $clo = strtolower($col->getName()); + + $useDateTime = $this->getBuildProperty('useDateTimeClass'); + + $dateTimeClass = $this->getBuildProperty('dateTimeClass'); + if (!$dateTimeClass) { + $dateTimeClass = 'DateTime'; + } + + $defaultfmt = null; + + // Default date/time formatter strings are specified in build.properties + if ($col->getType() === PropelTypes::DATE) { + $defaultfmt = $this->getBuildProperty('defaultDateFormat'); + } elseif ($col->getType() === PropelTypes::TIME) { + $defaultfmt = $this->getBuildProperty('defaultTimeFormat'); + } elseif ($col->getType() === PropelTypes::TIMESTAMP) { + $defaultfmt = $this->getBuildProperty('defaultTimeStampFormat'); + } + if (empty($defaultfmt)) { $defaultfmt = null; } + + $handleMysqlDate = false; + if ($this->getPlatform() instanceof MysqlPlatform) { + if ($col->getType() === PropelTypes::TIMESTAMP) { + $handleMysqlDate = true; + $mysqlInvalidDateString = '0000-00-00 00:00:00'; + } elseif ($col->getType() === PropelTypes::DATE) { + $handleMysqlDate = true; + $mysqlInvalidDateString = '0000-00-00'; + } + // 00:00:00 is a valid time, so no need to check for that. + } + + if ($col->isLazyLoad()) { + $script .= " + if (!\$this->".$clo."_isLoaded && \$this->$clo === null && !\$this->isNew()) { + \$this->load$cfc(\$con); + } +"; + } + $script .= " + if (\$this->$clo === null) { + return null; + } + +"; + if ($handleMysqlDate) { + $script .= " + if (\$this->$clo === '$mysqlInvalidDateString') { + // while technically this is not a default value of NULL, + // this seems to be closest in meaning. + return null; + } else { + try { + \$dt = new $dateTimeClass(\$this->$clo); + } catch (Exception \$x) { + throw new PropelException(\"Internally stored date/time/timestamp value could not be converted to $dateTimeClass: \" . var_export(\$this->$clo, true), \$x); + } + } +"; + } else { + $script .= " + + try { + \$dt = new $dateTimeClass(\$this->$clo); + } catch (Exception \$x) { + throw new PropelException(\"Internally stored date/time/timestamp value could not be converted to $dateTimeClass: \" . var_export(\$this->$clo, true), \$x); + } +"; + } // if handleMyqlDate + + $script .= " + if (\$format === null) {"; + if ($useDateTime) { + $script .= " + // Because propel.useDateTimeClass is TRUE, we return a $dateTimeClass object. + return \$dt;"; + } else { + $script .= " + // We cast here to maintain BC in API; obviously we will lose data if we're dealing with pre-/post-epoch dates. + return (int) \$dt->format('U');"; + } + $script .= " + } elseif (strpos(\$format, '%') !== false) { + return strftime(\$format, \$dt->format('U')); + } else { + return \$dt->format(\$format); + }"; + } + + + /** + * Adds the body of the temporal accessor + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + * @see addTemporalAccessorClose + **/ + protected function addTemporalAccessorClose(&$script, Column $col) { + $script .= " + } +"; + } + + /** + * Adds a normal (non-temporal) getter method. + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + * @see parent::addColumnAccessors() + */ + protected function addDefaultAccessor(&$script, Column $col) + { + $this->addDefaultAccessorComment($script, $col); + $this->addDefaultAccessorOpen($script, $col); + $this->addDefaultAccessorBody($script, $col); + $this->addDefaultAccessorClose($script, $col); + } + + /** + * Add the comment for a default accessor method (a getter) + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + * @see addDefaultAccessor() + **/ + protected function addDefaultAccessorComment(&$script, Column $col) { + $clo=strtolower($col->getName()); + + $script .= " + /** + * Get the [$clo] column value. + * ".$col->getDescription(); + if ($col->isLazyLoad()) { + $script .= " + * @param PropelPDO An optional PropelPDO connection to use for fetching this lazy-loaded column."; + } + $script .= " + * @return ".$col->getPhpType()." + */"; + } + + /** + * Adds the function declaration for a default accessor + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + * @see addDefaultAccessor() + **/ + protected function addDefaultAccessorOpen(&$script, Column $col) { + $cfc = $col->getPhpName(); + $visibility = $col->getAccessorVisibility(); + + $script .= " + ".$visibility." function get$cfc("; + if ($col->isLazyLoad()) $script .= "PropelPDO \$con = null"; + $script .= ") + {"; + } + + /** + * Adds the function body for a default accessor method + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + * @see addDefaultAccessor() + **/ + protected function addDefaultAccessorBody(&$script, Column $col) { + $cfc = $col->getPhpName(); + $clo = strtolower($col->getName()); + if ($col->isLazyLoad()) { + $script .= " + if (!\$this->".$clo."_isLoaded && \$this->$clo === null && !\$this->isNew()) { + \$this->load$cfc(\$con); + } +"; + } + + $script .= " + return \$this->$clo;"; + } + + /** + * Adds the function close for a default accessor method + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + * @see addDefaultAccessor() + **/ + protected function addDefaultAccessorClose(&$script, Column $col) { + $script .= " + } +"; + } + + /** + * Adds the lazy loader method. + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + * @see parent::addColumnAccessors() + */ + protected function addLazyLoader(&$script, Column $col) + { + $this->addLazyLoaderComment($script, $col); + $this->addLazyLoaderOpen($script, $col); + $this->addLazyLoaderBody($script, $col); + $this->addLazyLoaderClose($script, $col); + } + + /** + * Adds the comment for the lazy loader method + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + * @see addLazyLoader() + **/ + protected function addLazyLoaderComment(&$script, Column $col) { + $clo = strtolower($col->getName()); + + $script .= " + /** + * Load the value for the lazy-loaded [$clo] column. + * + * This method performs an additional query to return the value for + * the [$clo] column, since it is not populated by + * the hydrate() method. + * + * @param \$con PropelPDO (optional) The PropelPDO connection to use. + * @return void + * @throws PropelException - any underlying error will be wrapped and re-thrown. + */"; + } + + /** + * Adds the function declaration for the lazy loader method + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + * @see addLazyLoader() + **/ + protected function addLazyLoaderOpen(&$script, Column $col) { + $cfc = $col->getPhpName(); + $script .= " + protected function load$cfc(PropelPDO \$con = null) + {"; + } + + /** + * Adds the function body for the lazy loader method + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + * @see addLazyLoader() + **/ + protected function addLazyLoaderBody(&$script, Column $col) { + $platform = $this->getPlatform(); + $clo = strtolower($col->getName()); + + $script .= " + \$c = \$this->buildPkeyCriteria(); + \$c->addSelectColumn(".$this->getColumnConstant($col)."); + try { + \$stmt = ".$this->getPeerClassname()."::doSelectStmt(\$c, \$con); + \$row = \$stmt->fetch(PDO::FETCH_NUM); + \$stmt->closeCursor();"; + + if ($col->isLobType() && !$platform->hasStreamBlobImpl()) { + $script .= " + if (\$row[0] !== null) { + \$this->$clo = fopen('php://memory', 'r+'); + fwrite(\$this->$clo, \$row[0]); + rewind(\$this->$clo); + } else { + \$this->$clo = null; + }"; + } elseif ($col->isPhpPrimitiveType()) { + $script .= " + \$this->$clo = (\$row[0] !== null) ? (".$col->getPhpType().") \$row[0] : null;"; + } elseif ($col->isPhpObjectType()) { + $script .= " + \$this->$clo = (\$row[0] !== null) ? new ".$col->getPhpType()."(\$row[0]) : null;"; + } else { + $script .= " + \$this->$clo = \$row[0];"; + } + + $script .= " + \$this->".$clo."_isLoaded = true; + } catch (Exception \$e) { + throw new PropelException(\"Error loading value for [$clo] column on demand.\", \$e); + }"; + } + + /** + * Adds the function close for the lazy loader + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + * @see addLazyLoader() + **/ + protected function addLazyLoaderClose(&$script, Column $col) { + $script .= " + }"; + } // addLazyLoader() + + // -------------------------------------------------------------- + // + // M U T A T O R M E T H O D S + // + // -------------------------------------------------------------- + + /** + * Adds the open of the mutator (setter) method for a column. + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + */ + protected function addMutatorOpen(&$script, Column $col) + { + $this->addMutatorComment($script, $col); + $this->addMutatorOpenOpen($script, $col); + $this->addMutatorOpenBody($script, $col); + } + + /** + * Adds the comment for a mutator + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + * @see addMutatorOpen() + **/ + protected function addMutatorComment(&$script, Column $col) { + $clo = strtolower($col->getName()); + $script .= " + /** + * Set the value of [$clo] column. + * ".$col->getDescription()." + * @param ".$col->getPhpType()." \$v new value + * @return ".$this->getObjectClassname()." The current object (for fluent API support) + */"; + } + + /** + * Adds the mutator function declaration + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + * @see addMutatorOpen() + **/ + protected function addMutatorOpenOpen(&$script, Column $col) { + $cfc = $col->getPhpName(); + $visibility = $col->getMutatorVisibility(); + + $script .= " + ".$visibility." function set$cfc(\$v) + {"; + } + + /** + * Adds the mutator open body part + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + * @see addMutatorOpen() + **/ + protected function addMutatorOpenBody(&$script, Column $col) { + $clo = strtolower($col->getName()); + $cfc = $col->getPhpName(); + if ($col->isLazyLoad()) { + $script .= " + // explicitly set the is-loaded flag to true for this lazy load col; + // it doesn't matter if the value is actually set or not (logic below) as + // any attempt to set the value means that no db lookup should be performed + // when the get$cfc() method is called. + \$this->".$clo."_isLoaded = true; +"; + } + } + + /** + * Adds the close of the mutator (setter) method for a column. + * + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + */ + protected function addMutatorClose(&$script, Column $col) + { + $this->addMutatorCloseBody($script, $col); + $this->addMutatorCloseClose($script, $col); + } + + /** + * Adds the body of the close part of a mutator + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + * @see addMutatorClose() + **/ + protected function addMutatorCloseBody(&$script, Column $col) { + $table = $this->getTable(); + $cfc = $col->getPhpName(); + $clo = strtolower($col->getName()); + + if ($col->isForeignKey()) { + + foreach ($col->getForeignKeys() as $fk) { + + $tblFK = $table->getDatabase()->getTable($fk->getForeignTableName()); + $colFK = $tblFK->getColumn($fk->getMappedForeignColumn($col->getName())); + + $varName = $this->getFKVarName($fk); + + $script .= " + if (\$this->$varName !== null && \$this->".$varName."->get".$colFK->getPhpName()."() !== \$v) { + \$this->$varName = null; + } +"; + } // foreach fk + } /* if col is foreign key */ + + foreach ($col->getReferrers() as $refFK) { + + $tblFK = $this->getDatabase()->getTable($refFK->getForeignTableName()); + + if ( $tblFK->getName() != $table->getName() ) { + + foreach ($col->getForeignKeys() as $fk) { + + $tblFK = $table->getDatabase()->getTable($fk->getForeignTableName()); + $colFK = $tblFK->getColumn($fk->getMappedForeignColumn($col->getName())); + + if ($refFK->isLocalPrimaryKey()) { + $varName = $this->getPKRefFKVarName($refFK); + $script .= " + // update associated ".$tblFK->getPhpName()." + if (\$this->$varName !== null) { + \$this->{$varName}->set".$colFK->getPhpName()."(\$v); + } +"; + } else { + $collName = $this->getRefFKCollVarName($refFK); + $script .= " + + // update associated ".$tblFK->getPhpName()." + if (\$this->$collName !== null) { + foreach (\$this->$collName as \$referrerObject) { + \$referrerObject->set".$colFK->getPhpName()."(\$v); + } + } +"; + } // if (isLocalPrimaryKey + } // foreach col->getPrimaryKeys() + } // if tablFk != table + + } // foreach + } + + /** + * Adds the close for the mutator close + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + * @see addMutatorClose() + **/ + protected function addMutatorCloseClose(&$script, Column $col) { + $cfc = $col->getPhpName(); + $script .= " + return \$this; + } // set$cfc() +"; + } + + /** + * Adds a setter for BLOB columns. + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + * @see parent::addColumnMutators() + */ + protected function addLobMutator(&$script, Column $col) + { + $this->addMutatorOpen($script, $col); + $clo = strtolower($col->getName()); + $script .= " + // Because BLOB columns are streams in PDO we have to assume that they are + // always modified when a new value is passed in. For example, the contents + // of the stream itself may have changed externally. + if (!is_resource(\$v) && \$v !== null) { + \$this->$clo = fopen('php://memory', 'r+'); + fwrite(\$this->$clo, \$v); + rewind(\$this->$clo); + } else { // it's already a stream + \$this->$clo = \$v; + } + \$this->modifiedColumns[] = ".$this->getColumnConstant($col)."; +"; + $this->addMutatorClose($script, $col); + } // addLobMutatorSnippet + + /** + * Adds a setter method for date/time/timestamp columns. + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + * @see parent::addColumnMutators() + */ + protected function addTemporalMutator(&$script, Column $col) + { + $cfc = $col->getPhpName(); + $clo = strtolower($col->getName()); + $visibility = $col->getMutatorVisibility(); + + $dateTimeClass = $this->getBuildProperty('dateTimeClass'); + if (!$dateTimeClass) { + $dateTimeClass = 'DateTime'; + } + + $script .= " + /** + * Sets the value of [$clo] column to a normalized version of the date/time value specified. + * ".$col->getDescription()." + * @param mixed \$v string, integer (timestamp), or DateTime value. Empty string will + * be treated as NULL for temporal objects. + * @return ".$this->getObjectClassname()." The current object (for fluent API support) + */ + ".$visibility." function set$cfc(\$v) + {"; + if ($col->isLazyLoad()) { + $script .= " + // explicitly set the is-loaded flag to true for this lazy load col; + // it doesn't matter if the value is actually set or not (logic below) as + // any attempt to set the value means that no db lookup should be performed + // when the get$cfc() method is called. + \$this->".$clo."_isLoaded = true; +"; + } + + $fmt = var_export($this->getTemporalFormatter($col), true); + + $script .= " + // we treat '' as NULL for temporal objects because DateTime('') == DateTime('now') + // -- which is unexpected, to say the least. + if (\$v === null || \$v === '') { + \$dt = null; + } elseif (\$v instanceof DateTime) { + \$dt = \$v; + } else { + // some string/numeric value passed; we normalize that so that we can + // validate it. + try { + if (is_numeric(\$v)) { // if it's a unix timestamp + \$dt = new $dateTimeClass('@'.\$v, new DateTimeZone('UTC')); + // We have to explicitly specify and then change the time zone because of a + // DateTime bug: http://bugs.php.net/bug.php?id=43003 + \$dt->setTimeZone(new DateTimeZone(date_default_timezone_get())); + } else { + \$dt = new $dateTimeClass(\$v); + } + } catch (Exception \$x) { + throw new PropelException('Error parsing date/time value: ' . var_export(\$v, true), \$x); + } + } + + if ( \$this->$clo !== null || \$dt !== null ) { + // (nested ifs are a little easier to read in this case) + + \$currNorm = (\$this->$clo !== null && \$tmpDt = new $dateTimeClass(\$this->$clo)) ? \$tmpDt->format($fmt) : null; + \$newNorm = (\$dt !== null) ? \$dt->format($fmt) : null; + + if ( (\$currNorm !== \$newNorm) // normalized values don't match "; + + if (($def = $col->getDefaultValue()) !== null && !$def->isExpression()) { + $defaultValue = $this->getDefaultValueString($col); + $script .= " + || (\$dt->format($fmt) === $defaultValue) // or the entered value matches the default"; + } + + $script .= " + ) + { + \$this->$clo = (\$dt ? \$dt->format($fmt) : null); + \$this->modifiedColumns[] = ".$this->getColumnConstant($col)."; + } + } // if either are not null +"; + $this->addMutatorClose($script, $col); + } + + /** + * Adds setter method for "normal" columns. + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + * @see parent::addColumnMutators() + */ + protected function addDefaultMutator(&$script, Column $col) + { + $clo = strtolower($col->getName()); + + $this->addMutatorOpen($script, $col); + + // Perform type-casting to ensure that we can use type-sensitive + // checking in mutators. + if ($col->isPhpPrimitiveType()) { + $script .= " + if (\$v !== null) { + \$v = (".$col->getPhpType().") \$v; + } +"; + } + + $script .= " + if (\$this->$clo !== \$v"; + if (($def = $col->getDefaultValue()) !== null && !$def->isExpression()) { + $script .= " || \$this->isNew()"; + } + $script .= ") { + \$this->$clo = \$v; + \$this->modifiedColumns[] = ".$this->getColumnConstant($col)."; + } +"; + $this->addMutatorClose($script, $col); + } + + /** + * Adds the hasOnlyDefaultValues() method. + * @param string &$script The script will be modified in this method. + */ + protected function addHasOnlyDefaultValues(&$script) + { + $this->addHasOnlyDefaultValuesComment($script); + $this->addHasOnlyDefaultValuesOpen($script); + $this->addHasOnlyDefaultValuesBody($script); + $this->addHasOnlyDefaultValuesClose($script); + } + + /** + * Adds the comment for the hasOnlyDefaultValues method + * @param string &$script The script will be modified in this method. + * @see addHasOnlyDefaultValues + **/ + protected function addHasOnlyDefaultValuesComment(&$script) { + $script .= " + /** + * Indicates whether the columns in this object are only set to default values. + * + * This method can be used in conjunction with isModified() to indicate whether an object is both + * modified _and_ has some values set which are non-default. + * + * @return boolean Whether the columns in this object are only been set with default values. + */"; + } + + /** + * Adds the function declaration for the hasOnlyDefaultValues method + * @param string &$script The script will be modified in this method. + * @see addHasOnlyDefaultValues + **/ + protected function addHasOnlyDefaultValuesOpen(&$script) { + $script .= " + public function hasOnlyDefaultValues() + {"; + } + + /** + * Adds the function body for the hasOnlyDefaultValues method + * @param string &$script The script will be modified in this method. + * @see addHasOnlyDefaultValues + **/ + protected function addHasOnlyDefaultValuesBody(&$script) { + $table = $this->getTable(); + $colsWithDefaults = array(); + foreach ($table->getColumns() as $col) { + $def = $col->getDefaultValue(); + if ($def !== null && !$def->isExpression()) { + $colsWithDefaults[] = $col; + } + } + + foreach ($colsWithDefaults as $col) { + + $clo = strtolower($col->getName()); + $def = $col->getDefaultValue(); + + $script .= " + if (\$this->$clo !== " . $this->getDefaultValueString($col).") { + return false; + } +"; + } + } + + /** + * Adds the function close for the hasOnlyDefaultValues method + * @param string &$script The script will be modified in this method. + * @see addHasOnlyDefaultValues + **/ + protected function addHasOnlyDefaultValuesClose(&$script) { + $script .= " + // otherwise, everything was equal, so return TRUE + return true;"; + $script .= " + } // hasOnlyDefaultValues() +"; + } + + /** + * Adds the hydrate() method, which sets attributes of the object based on a ResultSet. + * @param string &$script The script will be modified in this method. + */ + protected function addHydrate(&$script) + { + $this->addHydrateComment($script); + $this->addHydrateOpen($script); + $this->addHydrateBody($script); + $this->addHydrateClose($script); + } + + /** + * Adds the comment for the hydrate method + * @param string &$script The script will be modified in this method. + * @see addHydrate() + */ + protected function addHydrateComment(&$script) { + $script .= " + /** + * Hydrates (populates) the object variables with values from the database resultset. + * + * An offset (0-based \"start column\") is specified so that objects can be hydrated + * with a subset of the columns in the resultset rows. This is needed, for example, + * for results of JOIN queries where the resultset row includes columns from two or + * more tables. + * + * @param array \$row The row returned by PDOStatement->fetch(PDO::FETCH_NUM) + * @param int \$startcol 0-based offset column which indicates which restultset column to start with. + * @param boolean \$rehydrate Whether this object is being re-hydrated from the database. + * @return int next starting column + * @throws PropelException - Any caught Exception will be rewrapped as a PropelException. + */"; + } + + /** + * Adds the function declaration for the hydrate method + * @param string &$script The script will be modified in this method. + * @see addHydrate() + */ + protected function addHydrateOpen(&$script) { + $script .= " + public function hydrate(\$row, \$startcol = 0, \$rehydrate = false) + {"; + } + + /** + * Adds the function body for the hydrate method + * @param string &$script The script will be modified in this method. + * @see addHydrate() + */ + protected function addHydrateBody(&$script) { + $table = $this->getTable(); + $platform = $this->getPlatform(); + $script .= " + try { +"; + $n = 0; + foreach ($table->getColumns() as $col) { + if (!$col->isLazyLoad()) { + $clo = strtolower($col->getName()); + if ($col->isLobType() && !$platform->hasStreamBlobImpl()) { + $script .= " + if (\$row[\$startcol + $n] !== null) { + \$this->$clo = fopen('php://memory', 'r+'); + fwrite(\$this->$clo, \$row[\$startcol + $n]); + rewind(\$this->$clo); + } else { + \$this->$clo = null; + }"; + } elseif ($col->isPhpPrimitiveType()) { + $script .= " + \$this->$clo = (\$row[\$startcol + $n] !== null) ? (".$col->getPhpType().") \$row[\$startcol + $n] : null;"; + } elseif ($col->isPhpObjectType()) { + $script .= " + \$this->$clo = (\$row[\$startcol + $n] !== null) ? new ".$col->getPhpType()."(\$row[\$startcol + $n]) : null;"; + } else { + $script .= " + \$this->$clo = \$row[\$startcol + $n];"; + } + $n++; + } // if col->isLazyLoad() + } /* foreach */ + + if ($this->getBuildProperty("addSaveMethod")) { + $script .= " + \$this->resetModified(); +"; + } + + $script .= " + \$this->setNew(false); + + if (\$rehydrate) { + \$this->ensureConsistency(); + } + + // FIXME - using NUM_COLUMNS may be clearer. + return \$startcol + $n; // $n = ".$this->getPeerClassname()."::NUM_COLUMNS - ".$this->getPeerClassname()."::NUM_LAZY_LOAD_COLUMNS). + + } catch (Exception \$e) { + throw new PropelException(\"Error populating ".$this->getStubObjectBuilder()->getClassname()." object\", \$e); + }"; + } + + /** + * Adds the function close for the hydrate method + * @param string &$script The script will be modified in this method. + * @see addHydrate() + */ + protected function addHydrateClose(&$script) { + $script .= " + } +"; + } + + /** + * Adds the buildPkeyCriteria method + * @param string &$script The script will be modified in this method. + **/ + protected function addBuildPkeyCriteria(&$script) { + $this->addBuildPkeyCriteriaComment($script); + $this->addBuildPkeyCriteriaOpen($script); + $this->addBuildPkeyCriteriaBody($script); + $this->addBuildPkeyCriteriaClose($script); + } + + /** + * Adds the comment for the buildPkeyCriteria method + * @param string &$script The script will be modified in this method. + * @see addBuildPkeyCriteria() + **/ + protected function addBuildPkeyCriteriaComment(&$script) { + $script .= " + /** + * Builds a Criteria object containing the primary key for this object. + * + * Unlike buildCriteria() this method includes the primary key values regardless + * of whether or not they have been modified. + * + * @return Criteria The Criteria object containing value(s) for primary key(s). + */"; + } + + /** + * Adds the function declaration for the buildPkeyCriteria method + * @param string &$script The script will be modified in this method. + * @see addBuildPkeyCriteria() + **/ + protected function addBuildPkeyCriteriaOpen(&$script) { + $script .= " + public function buildPkeyCriteria() + {"; + } + + /** + * Adds the function body for the buildPkeyCriteria method + * @param string &$script The script will be modified in this method. + * @see addBuildPkeyCriteria() + **/ + protected function addBuildPkeyCriteriaBody(&$script) { + $script .= " + \$criteria = new Criteria(".$this->getPeerClassname()."::DATABASE_NAME); +"; + foreach ($this->getTable()->getColumns() as $col) { + $clo = strtolower($col->getName()); + if ($col->isPrimaryKey()) { + $script .= " + \$criteria->add(".$this->getColumnConstant($col).", \$this->$clo);"; + } + } + } + + /** + * Adds the function close for the buildPkeyCriteria method + * @param string &$script The script will be modified in this method. + * @see addBuildPkeyCriteria() + **/ + protected function addBuildPkeyCriteriaClose(&$script) { + $script .= " + + return \$criteria; + } +"; + } + + /** + * Adds the buildCriteria method + * @param string &$script The script will be modified in this method. + **/ + protected function addBuildCriteria(&$script) + { + $this->addBuildCriteriaComment($script); + $this->addBuildCriteriaOpen($script); + $this->addBuildCriteriaBody($script); + $this->addBuildCriteriaClose($script); + } + + /** + * Adds comment for the buildCriteria method + * @param string &$script The script will be modified in this method. + * @see addBuildCriteria() + **/ + protected function addBuildCriteriaComment(&$script) { + $script .= " + /** + * Build a Criteria object containing the values of all modified columns in this object. + * + * @return Criteria The Criteria object containing all modified values. + */"; + } + + /** + * Adds the function declaration of the buildCriteria method + * @param string &$script The script will be modified in this method. + * @see addBuildCriteria() + **/ + protected function addBuildCriteriaOpen(&$script) { + $script .= " + public function buildCriteria() + {"; + } + + /** + * Adds the function body of the buildCriteria method + * @param string &$script The script will be modified in this method. + * @see addBuildCriteria() + **/ + protected function addBuildCriteriaBody(&$script) { + $script .= " + \$criteria = new Criteria(".$this->getPeerClassname()."::DATABASE_NAME); +"; + foreach ($this->getTable()->getColumns() as $col) { + $clo = strtolower($col->getName()); + $script .= " + if (\$this->isColumnModified(".$this->getColumnConstant($col).")) \$criteria->add(".$this->getColumnConstant($col).", \$this->$clo);"; + } + } + + /** + * Adds the function close of the buildCriteria method + * @param string &$script The script will be modified in this method. + * @see addBuildCriteria() + **/ + protected function addBuildCriteriaClose(&$script) { + $script .= " + + return \$criteria; + } +"; + } + + /** + * Adds the toArray method + * @param string &$script The script will be modified in this method. + **/ + protected function addToArray(&$script) + { + $this->addToArrayComment($script); + $this->addToArrayOpen($script); + $this->addToArrayBody($script); + $this->addToArrayClose($script); + } + + /** + * Adds the comment of the toArray method + * @param string &$script The script will be modified in this method. + * @see addToArray() + **/ + protected function addToArrayComment(&$script) { + $script .= " + /** + * Exports the object as an array. + * + * You can specify the key type of the array by passing one of the class + * type constants. + * + * @param string \$keyType (optional) One of the class type constants BasePeer::TYPE_PHPNAME, BasePeer::TYPE_STUDLYPHPNAME + * BasePeer::TYPE_COLNAME, BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_NUM. Defaults to BasePeer::TYPE_PHPNAME. + * @param boolean \$includeLazyLoadColumns (optional) Whether to include lazy loaded columns. Defaults to TRUE. + * @return an associative array containing the field names (as keys) and field values + */"; + } + + /** + * Adds the function declaration of the toArray method + * @param string &$script The script will be modified in this method. + * @see addToArray() + **/ + protected function addToArrayOpen(&$script) { + $script .= " + public function toArray(\$keyType = BasePeer::TYPE_PHPNAME, \$includeLazyLoadColumns = true) + {"; + } + + /** + * Adds the function body of the toArray method + * @param string &$script The script will be modified in this method. + * @see addToArray() + **/ + protected function addToArrayBody(&$script) { + $script .= " + \$keys = ".$this->getPeerClassname()."::getFieldNames(\$keyType); + \$result = array("; + foreach ($this->getTable()->getColumns() as $num => $col) { + if ($col->isLazyLoad()) { + $script .= " + \$keys[$num] => (\$includeLazyLoadColumns) ? \$this->get".$col->getPhpName()."() : null,"; + } else { + $script .= " + \$keys[$num] => \$this->get".$col->getPhpName()."(),"; + } + } + $script .= " + );"; + } + + /** + * Adds the function close of the toArray method + * @param string &$script The script will be modified in this method. + * @see addToArray() + **/ + protected function addToArrayClose(&$script) { + $script .= " + return \$result; + } +"; + } // addToArray() + + /** + * Adds the getByName method + * @param string &$script The script will be modified in this method. + **/ + protected function addGetByName(&$script) + { + $this->addGetByNameComment($script); + $this->addGetByNameOpen($script); + $this->addGetByNameBody($script); + $this->addGetByNameClose($script); + } + + /** + * Adds the comment for the getByName method + * @param string &$script The script will be modified in this method. + * @see addGetByName + **/ + protected function addGetByNameComment(&$script) { + $script .= " + /** + * Retrieves a field from the object by name passed in as a string. + * + * @param string \$name name + * @param string \$type The type of fieldname the \$name is of: + * one of the class type constants BasePeer::TYPE_PHPNAME, BasePeer::TYPE_STUDLYPHPNAME + * BasePeer::TYPE_COLNAME, BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_NUM + * @return mixed Value of field. + */"; + } + + /** + * Adds the function declaration for the getByName method + * @param string &$script The script will be modified in this method. + * @see addGetByName + **/ + protected function addGetByNameOpen(&$script) { + $script .= " + public function getByName(\$name, \$type = BasePeer::TYPE_PHPNAME) + {"; + } + + /** + * Adds the function body for the getByName method + * @param string &$script The script will be modified in this method. + * @see addGetByName + **/ + protected function addGetByNameBody(&$script) { + $script .= " + \$pos = ".$this->getPeerClassname()."::translateFieldName(\$name, \$type, BasePeer::TYPE_NUM); + \$field = \$this->getByPosition(\$pos);"; + } + + /** + * Adds the function close for the getByName method + * @param string &$script The script will be modified in this method. + * @see addGetByName + **/ + protected function addGetByNameClose(&$script) { + $script .= " + return \$field; + } +"; + } + + /** + * Adds the getByPosition method + * @param string &$script The script will be modified in this method. + **/ + protected function addGetByPosition(&$script) + { + $this->addGetByPositionComment($script); + $this->addGetByPositionOpen($script); + $this->addGetByPositionBody($script); + $this->addGetByPositionClose($script); + } + + /** + * Adds comment for the getByPosition method + * @param string &$script The script will be modified in this method. + * @see addGetByPosition + **/ + protected function addGetByPositionComment(&$script) { + $script .= " + /** + * Retrieves a field from the object by Position as specified in the xml schema. + * Zero-based. + * + * @param int \$pos position in xml schema + * @return mixed Value of field at \$pos + */"; + } + + /** + * Adds the function declaration for the getByPosition method + * @param string &$script The script will be modified in this method. + * @see addGetByPosition + **/ + protected function addGetByPositionOpen(&$script) { + $script .= " + public function getByPosition(\$pos) + {"; + } + + /** + * Adds the function body for the getByPosition method + * @param string &$script The script will be modified in this method. + * @see addGetByPosition + **/ + protected function addGetByPositionBody(&$script) { + $table = $this->getTable(); + $script .= " + switch(\$pos) {"; + $i = 0; + foreach ($table->getColumns() as $col) { + $cfc = $col->getPhpName(); + $cptype = $col->getPhpType();// not safe to use it because some methods may return objects (Blob) + $script .= " + case $i: + return \$this->get$cfc(); + break;"; + $i++; + } /* foreach */ + $script .= " + default: + return null; + break; + } // switch()"; + } + + /** + * Adds the function close for the getByPosition method + * @param string &$script The script will be modified in this method. + * @see addGetByPosition + **/ + protected function addGetByPositionClose(&$script) { + $script .= " + } +"; + } + + protected function addSetByName(&$script) + { + $table = $this->getTable(); + $script .= " + /** + * Sets a field from the object by name passed in as a string. + * + * @param string \$name peer name + * @param mixed \$value field value + * @param string \$type The type of fieldname the \$name is of: + * one of the class type constants BasePeer::TYPE_PHPNAME, BasePeer::TYPE_STUDLYPHPNAME + * BasePeer::TYPE_COLNAME, BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_NUM + * @return void + */ + public function setByName(\$name, \$value, \$type = BasePeer::TYPE_PHPNAME) + { + \$pos = ".$this->getPeerClassname()."::translateFieldName(\$name, \$type, BasePeer::TYPE_NUM); + return \$this->setByPosition(\$pos, \$value); + } +"; + } + + protected function addSetByPosition(&$script) + { + $table = $this->getTable(); + $script .= " + /** + * Sets a field from the object by Position as specified in the xml schema. + * Zero-based. + * + * @param int \$pos position in xml schema + * @param mixed \$value field value + * @return void + */ + public function setByPosition(\$pos, \$value) + { + switch(\$pos) {"; + $i = 0; + foreach ($table->getColumns() as $col) { + $cfc = $col->getPhpName(); + $cptype = $col->getPhpType(); + $script .= " + case $i: + \$this->set$cfc(\$value); + break;"; + $i++; + } /* foreach */ + $script .= " + } // switch() + } +"; + } // addSetByPosition() + + protected function addFromArray(&$script) + { + $table = $this->getTable(); + $script .= " + /** + * Populates the object using an array. + * + * This is particularly useful when populating an object from one of the + * request arrays (e.g. \$_POST). This method goes through the column + * names, checking to see whether a matching key exists in populated + * array. If so the setByName() method is called for that column. + * + * You can specify the key type of the array by additionally passing one + * of the class type constants BasePeer::TYPE_PHPNAME, BasePeer::TYPE_STUDLYPHPNAME, + * BasePeer::TYPE_COLNAME, BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_NUM. + * The default key type is the column's phpname (e.g. 'AuthorId') + * + * @param array \$arr An array to populate the object from. + * @param string \$keyType The type of keys the array uses. + * @return void + */ + public function fromArray(\$arr, \$keyType = BasePeer::TYPE_PHPNAME) + { + \$keys = ".$this->getPeerClassname()."::getFieldNames(\$keyType); +"; + foreach ($table->getColumns() as $num => $col) { + $cfc = $col->getPhpName(); + $cptype = $col->getPhpType(); + $script .= " + if (array_key_exists(\$keys[$num], \$arr)) \$this->set$cfc(\$arr[\$keys[$num]]);"; + } /* foreach */ + $script .= " + } +"; + } // addFromArray + + /** + * Adds a delete() method to remove the object form the datastore. + * @param string &$script The script will be modified in this method. + */ + protected function addDelete(&$script) + { + $this->addDeleteComment($script); + $this->addDeleteOpen($script); + $this->addDeleteBody($script); + $this->addDeleteClose($script); + } + + /** + * Adds the comment for the delete function + * @param string &$script The script will be modified in this method. + * @see addDelete() + **/ + protected function addDeleteComment(&$script) { + $script .= " + /** + * Removes this object from datastore and sets delete attribute. + * + * @param PropelPDO \$con + * @return void + * @throws PropelException + * @see BaseObject::setDeleted() + * @see BaseObject::isDeleted() + */"; + } + + /** + * Adds the function declaration for the delete function + * @param string &$script The script will be modified in this method. + * @see addDelete() + **/ + protected function addDeleteOpen(&$script) { + $script .= " + public function delete(PropelPDO \$con = null) + {"; + } + + /** + * Adds the function body for the delete function + * @param string &$script The script will be modified in this method. + * @see addDelete() + **/ + protected function addDeleteBody(&$script) { + $script .= " + if (\$this->isDeleted()) { + throw new PropelException(\"This object has already been deleted.\"); + } + + if (\$con === null) { + \$con = Propel::getConnection(".$this->getPeerClassname()."::DATABASE_NAME, Propel::CONNECTION_WRITE); + } + + \$con->beginTransaction(); + try {"; + if($this->getGeneratorConfig()->getBuildProperty('addHooks')) { + $script .= " + \$ret = \$this->preDelete(\$con);"; + // apply behaviors + $this->applyBehaviorModifier('preDelete', $script, " "); + $script .= " + if (\$ret) { + ".$this->getPeerClassname()."::doDelete(\$this, \$con); + \$this->postDelete(\$con);"; + // apply behaviors + $this->applyBehaviorModifier('postDelete', $script, " "); + $script .= " + \$this->setDeleted(true); + \$con->commit(); + } else { + \$con->commit(); + }"; + } else { + // apply behaviors + $this->applyBehaviorModifier('preDelete', $script, " "); + $script .= " + ".$this->getPeerClassname()."::doDelete(\$this, \$con);"; + // apply behaviors + $this->applyBehaviorModifier('postDelete', $script, " "); + $script .= " + \$this->setDeleted(true); + \$con->commit();"; + } + + $script .= " + } catch (PropelException \$e) { + \$con->rollBack(); + throw \$e; + }"; + } + + /** + * Adds the function close for the delete function + * @param string &$script The script will be modified in this method. + * @see addDelete() + **/ + protected function addDeleteClose(&$script) { + $script .= " + } +"; + } // addDelete() + + /** + * Adds a reload() method to re-fetch the data for this object from the database. + * @param string &$script The script will be modified in this method. + */ + protected function addReload(&$script) + { + $table = $this->getTable(); + $script .= " + /** + * Reloads this object from datastore based on primary key and (optionally) resets all associated objects. + * + * This will only work if the object has been saved and has a valid primary key set. + * + * @param boolean \$deep (optional) Whether to also de-associated any related objects. + * @param PropelPDO \$con (optional) The PropelPDO connection to use. + * @return void + * @throws PropelException - if this object is deleted, unsaved or doesn't have pk match in db + */ + public function reload(\$deep = false, PropelPDO \$con = null) + { + if (\$this->isDeleted()) { + throw new PropelException(\"Cannot reload a deleted object.\"); + } + + if (\$this->isNew()) { + throw new PropelException(\"Cannot reload an unsaved object.\"); + } + + if (\$con === null) { + \$con = Propel::getConnection(".$this->getPeerClassname()."::DATABASE_NAME, Propel::CONNECTION_READ); + } + + // We don't need to alter the object instance pool; we're just modifying this instance + // already in the pool. + + \$stmt = ".$this->getPeerClassname()."::doSelectStmt(\$this->buildPkeyCriteria(), \$con); + \$row = \$stmt->fetch(PDO::FETCH_NUM); + \$stmt->closeCursor(); + if (!\$row) { + throw new PropelException('Cannot find matching row in the database to reload object values.'); + } + \$this->hydrate(\$row, 0, true); // rehydrate +"; + + // support for lazy load columns + foreach ($table->getColumns() as $col) { + if ($col->isLazyLoad()) { + $clo = strtolower($col->getName()); + $script .= " + // Reset the $clo lazy-load column + \$this->" . $clo . " = null; + \$this->".$clo."_isLoaded = false; +"; + } + } + + $script .= " + if (\$deep) { // also de-associate any related objects? +"; + + foreach ($table->getForeignKeys() as $fk) { + $varName = $this->getFKVarName($fk); + $script .= " + \$this->".$varName." = null;"; + } + + foreach ($table->getReferrers() as $refFK) { + if ($refFK->isLocalPrimaryKey()) { + $script .= " + \$this->".$this->getPKRefFKVarName($refFK)." = null; +"; + } else { + $script .= " + \$this->".$this->getRefFKCollVarName($refFK)." = null; + \$this->".$this->getRefFKLastCriteriaVarName($refFK)." = null; +"; + } + } + + $script .= " + } // if (deep) + } +"; + } // addReload() + + /** + * Adds the methods related to refreshing, saving and deleting the object. + * @param string &$script The script will be modified in this method. + */ + protected function addManipulationMethods(&$script) + { + $this->addReload($script); + $this->addDelete($script); + $this->addSave($script); + $this->addDoSave($script); + } + + /** + * Adds the methods related to validationg the object. + * @param string &$script The script will be modified in this method. + */ + protected function addValidationMethods(&$script) + { + $this->addValidationFailuresAttribute($script); + $this->addGetValidationFailures($script); + $this->addValidate($script); + $this->addDoValidate($script); + } + + /** + * Adds the $validationFailures attribute to store ValidationFailed objects. + * @param string &$script The script will be modified in this method. + */ + protected function addValidationFailuresAttribute(&$script) + { + $script .= " + /** + * Array of ValidationFailed objects. + * @var array ValidationFailed[] + */ + protected \$validationFailures = array(); +"; + } + + /** + * Adds the getValidationFailures() method. + * @param string &$script The script will be modified in this method. + */ + protected function addGetValidationFailures(&$script) + { + $script .= " + /** + * Gets any ValidationFailed objects that resulted from last call to validate(). + * + * + * @return array ValidationFailed[] + * @see validate() + */ + public function getValidationFailures() + { + return \$this->validationFailures; + } +"; + } // addGetValidationFailures() + + /** + * Adds the correct getPrimaryKey() method for this object. + * @param string &$script The script will be modified in this method. + */ + protected function addGetPrimaryKey(&$script) + { + $pkeys = $this->getTable()->getPrimaryKey(); + if (count($pkeys) == 1) { + $this->addGetPrimaryKey_SinglePK($script); + } elseif (count($pkeys) > 1) { + $this->addGetPrimaryKey_MultiPK($script); + } else { + // no primary key -- this is deprecated, since we don't *need* this method anymore + $this->addGetPrimaryKey_NoPK($script); + } + } + + /** + * Adds the getPrimaryKey() method for tables that contain a single-column primary key. + * @param string &$script The script will be modified in this method. + */ + protected function addGetPrimaryKey_SinglePK(&$script) + { + $table = $this->getTable(); + $pkeys = $table->getPrimaryKey(); + $cptype = $pkeys[0]->getPhpType(); + + $script .= " + /** + * Returns the primary key for this object (row). + * @return $cptype + */ + public function getPrimaryKey() + { + return \$this->get".$pkeys[0]->getPhpName()."(); + } +"; + } // addetPrimaryKey_SingleFK + + /** + * Adds the setPrimaryKey() method for tables that contain a multi-column primary key. + * @param string &$script The script will be modified in this method. + */ + protected function addGetPrimaryKey_MultiPK(&$script) + { + + $script .= " + /** + * Returns the composite primary key for this object. + * The array elements will be in same order as specified in XML. + * @return array + */ + public function getPrimaryKey() + { + \$pks = array(); +"; + $i = 0; + foreach ($this->getTable()->getPrimaryKey() as $pk) { + $script .= " + \$pks[$i] = \$this->get".$pk->getPhpName()."(); +"; + $i++; + } /* foreach */ + $script .= " + return \$pks; + } +"; + } // addGetPrimaryKey_MultiFK() + + /** + * Adds the getPrimaryKey() method for objects that have no primary key. + * This "feature" is dreprecated, since the getPrimaryKey() method is not required + * by the Persistent interface (or used by the templates). Hence, this method is also + * deprecated. + * @param string &$script The script will be modified in this method. + * @deprecated + */ + protected function addGetPrimaryKey_NoPK(&$script) + { + $script .= " + /** + * Returns NULL since this table doesn't have a primary key. + * This method exists only for BC and is deprecated! + * @return null + */ + public function getPrimaryKey() + { + return null; + } +"; + } + /** + * Adds the correct setPrimaryKey() method for this object. + * @param string &$script The script will be modified in this method. + */ + protected function addSetPrimaryKey(&$script) + { + $pkeys = $this->getTable()->getPrimaryKey(); + if (count($pkeys) == 1) { + $this->addSetPrimaryKey_SinglePK($script); + } elseif (count($pkeys) > 1) { + $this->addSetPrimaryKey_MultiPK($script); + } else { + // no primary key -- this is deprecated, since we don't *need* this method anymore + $this->addSetPrimaryKey_NoPK($script); + } + } + + /** + * Adds the setPrimaryKey() method for tables that contain a single-column primary key. + * @param string &$script The script will be modified in this method. + */ + protected function addSetPrimaryKey_SinglePK(&$script) + { + + $pkeys = $this->getTable()->getPrimaryKey(); + $col = $pkeys[0]; + $clo=strtolower($col->getName()); + $ctype = $col->getPhpType(); + + $script .= " + /** + * Generic method to set the primary key ($clo column). + * + * @param $ctype \$key Primary key. + * @return void + */ + public function setPrimaryKey(\$key) + { + \$this->set".$col->getPhpName()."(\$key); + } +"; + } // addSetPrimaryKey_SinglePK + + /** + * Adds the setPrimaryKey() method for tables that contain a multi-columnprimary key. + * @param string &$script The script will be modified in this method. + */ + protected function addSetPrimaryKey_MultiPK(&$script) + { + + $script .=" + /** + * Set the [composite] primary key. + * + * @param array \$keys The elements of the composite key (order must match the order in XML file). + * @return void + */ + public function setPrimaryKey(\$keys) + { +"; + $i = 0; + foreach ($this->getTable()->getPrimaryKey() as $pk) { + $pktype = $pk->getPhpType(); + $script .= " + \$this->set".$pk->getPhpName()."(\$keys[$i]); +"; + $i++; + } /* foreach ($table->getPrimaryKey() */ + $script .= " + } +"; + } // addSetPrimaryKey_MultiPK + + /** + * Adds the setPrimaryKey() method for objects that have no primary key. + * This "feature" is dreprecated, since the setPrimaryKey() method is not required + * by the Persistent interface (or used by the templates). Hence, this method is also + * deprecated. + * @param string &$script The script will be modified in this method. + * @deprecated + */ + protected function addSetPrimaryKey_NoPK(&$script) + { + $script .=" + /** + * Dummy primary key setter. + * + * This function only exists to preserve backwards compatibility. It is no longer + * needed or required by the Persistent interface. It will be removed in next BC-breaking + * release of Propel. + * + * @deprecated + */ + public function setPrimaryKey(\$pk) + { + // do nothing, because this object doesn't have any primary keys + } +"; + } + + // -------------------------------------------------------------------- + // Complex OM Methods + // -------------------------------------------------------------------- + + /** + * Constructs variable name for fkey-related objects. + * @param ForeignKey $fk + * @return string + */ + protected function getFKVarName(ForeignKey $fk) + { + return 'a' . $this->getFKPhpNameAffix($fk, $plural = false); + } + + /** + * Constructs variable name for objects which referencing current table by specified foreign key. + * @param ForeignKey $fk + * @return string + */ + protected function getRefFKCollVarName(ForeignKey $fk) + { + return 'coll' . $this->getRefFKPhpNameAffix($fk, $plural = true); + } + + /** + * Constructs variable name for single object which references current table by specified foreign key + * which is ALSO a primary key (hence one-to-one relationship). + * @param ForeignKey $fk + * @return string + */ + protected function getPKRefFKVarName(ForeignKey $fk) + { + return 'single' . $this->getRefFKPhpNameAffix($fk, $plural = false); + } + + /** + * Gets variable name for the Criteria which was used to fetch the objects which + * referencing current table by specified foreign key. + * @param ForeignKey $fk + * @return string + */ + protected function getRefFKLastCriteriaVarName(ForeignKey $fk) + { + return 'last' . $this->getRefFKPhpNameAffix($fk, $plural = false) . 'Criteria'; + } + + // ---------------------------------------------------------------- + // + // F K M E T H O D S + // + // ---------------------------------------------------------------- + + /** + * Adds the methods that get & set objects related by foreign key to the current object. + * @param string &$script The script will be modified in this method. + */ + protected function addFKMethods(&$script) + { + foreach ($this->getTable()->getForeignKeys() as $fk) { + $this->addFKMutator($script, $fk); + $this->addFKAccessor($script, $fk); + } // foreach fk + } + + /** + * Adds the class attributes that are needed to store fkey related objects. + * @param string &$script The script will be modified in this method. + */ + protected function addFKAttributes(&$script, ForeignKey $fk) + { + $className = $this->getForeignTable($fk)->getPhpName(); + $varName = $this->getFKVarName($fk); + + $script .= " + /** + * @var $className + */ + protected $".$varName."; +"; + } + + /** + * Adds the mutator (setter) method for setting an fkey related object. + * @param string &$script The script will be modified in this method. + */ + protected function addFKMutator(&$script, ForeignKey $fk) + { + $table = $this->getTable(); + $tblFK = $this->getForeignTable($fk); + + $joinTableObjectBuilder = $this->getNewObjectBuilder($tblFK); + + $className = $joinTableObjectBuilder->getObjectClassname(); + $varName = $this->getFKVarName($fk); + + $script .= " + /** + * Declares an association between this object and a $className object. + * + * @param $className \$v + * @return ".$this->getObjectClassname()." The current object (for fluent API support) + * @throws PropelException + */ + public function set".$this->getFKPhpNameAffix($fk, $plural = false)."($className \$v = null) + {"; + foreach ($fk->getLocalColumns() as $columnName) { + $column = $table->getColumn($columnName); + $lfmap = $fk->getLocalForeignMapping(); + $colFKName = $lfmap[$columnName]; + $colFK = $tblFK->getColumn($colFKName); + $script .= " + if (\$v === null) { + \$this->set".$column->getPhpName()."(".$this->getDefaultValueString($column)."); + } else { + \$this->set".$column->getPhpName()."(\$v->get".$colFK->getPhpName()."()); + } +"; + + } /* foreach local col */ + + $script .= " + \$this->$varName = \$v; +"; + + // Now add bi-directional relationship binding, taking into account whether this is + // a one-to-one relationship. + + if ($fk->isLocalPrimaryKey()) { + $script .= " + // Add binding for other direction of this 1:1 relationship. + if (\$v !== null) { + \$v->set".$this->getRefFKPhpNameAffix($fk, $plural = false)."(\$this); + } +"; + } else { + $script .= " + // Add binding for other direction of this n:n relationship. + // If this object has already been added to the $className object, it will not be re-added. + if (\$v !== null) { + \$v->add".$this->getRefFKPhpNameAffix($fk, $plural = false)."(\$this); + } +"; + + } + + $script .= " + return \$this; + } +"; + } + + /** + * Adds the accessor (getter) method for getting an fkey related object. + * @param string &$script The script will be modified in this method. + */ + protected function addFKAccessor(&$script, ForeignKey $fk) + { + $table = $this->getTable(); + + $varName = $this->getFKVarName($fk); + $pCollName = $this->getFKPhpNameAffix($fk, $plural = true); + + $fkPeerBuilder = $this->getNewPeerBuilder($this->getForeignTable($fk)); + $fkObjectBuilder = $this->getNewObjectBuilder($this->getForeignTable($fk))->getStubObjectBuilder(); + $className = $fkObjectBuilder->getClassname(); // get the Classname that has maybe a prefix + + $and = ""; + $comma = ""; + $conditional = ""; + $argmap = array(); // foreign -> local mapping + $argsize = 0; + foreach ($fk->getLocalColumns() as $columnName) { + + $lfmap = $fk->getLocalForeignMapping(); + + $localColumn = $table->getColumn($columnName); + $foreignColumn = $fk->getForeignTable()->getColumn($lfmap[$columnName]); + + $column = $table->getColumn($columnName); + $cptype = $column->getPhpType(); + $clo = strtolower($column->getName()); + + if ($cptype == "integer" || $cptype == "float" || $cptype == "double") { + $conditional .= $and . "\$this->". $clo ." != 0"; + } elseif ($cptype == "string") { + $conditional .= $and . "(\$this->" . $clo ." !== \"\" && \$this->".$clo." !== null)"; + } else { + $conditional .= $and . "\$this->" . $clo ." !== null"; + } + + $argmap[] = array('foreign' => $foreignColumn, 'local' => $localColumn); + $and = " && "; + $comma = ", "; + $argsize = $argsize + 1; + } + + // If the related column is a primary kay and if it's a simple association, + // The use retrieveByPk() instead of doSelect() to take advantage of instance pooling + $useRetrieveByPk = count($argmap) == 1 && $argmap[0]['foreign']->isPrimaryKey(); + + $script .= " + + /** + * Get the associated $className object + * + * @param PropelPDO Optional Connection object. + * @return $className The associated $className object. + * @throws PropelException + */ + public function get".$this->getFKPhpNameAffix($fk, $plural = false)."(PropelPDO \$con = null) + {"; + $script .= " + if (\$this->$varName === null && ($conditional)) {"; + if ($useRetrieveByPk) { + $script .= " + \$this->$varName = ".$fkPeerBuilder->getPeerClassname()."::retrieveByPk(\$this->$clo);"; + } else { + $script .= " + \$c = new Criteria(".$fkPeerBuilder->getPeerClassname()."::DATABASE_NAME);"; + foreach ($argmap as $el) { + $fcol = $el['foreign']; + $lcol = $el['local']; + $clo = strtolower($lcol->getName()); + $script .= " + \$c->add(".$fkPeerBuilder->getColumnConstant($fcol).", \$this->".$clo.");"; + } + $script .= " + \$this->$varName = ".$fkPeerBuilder->getPeerClassname()."::doSelectOne(\$c, \$con);"; + } + if ($fk->isLocalPrimaryKey()) { + $script .= " + // Because this foreign key represents a one-to-one relationship, we will create a bi-directional association. + \$this->{$varName}->set".$this->getRefFKPhpNameAffix($fk, $plural = false)."(\$this);"; + } else { + $script .= " + /* The following can be used additionally to + guarantee the related object contains a reference + to this object. This level of coupling may, however, be + undesirable since it could result in an only partially populated collection + in the referenced object. + \$this->{$varName}->add".$this->getRefFKPhpNameAffix($fk, $plural = true)."(\$this); + */"; + } + + $script .= " + } + return \$this->$varName; + } +"; + + } // addFKAccessor + + /** + * Adds a convenience method for setting a related object by specifying the primary key. + * This can be used in conjunction with the getPrimaryKey() for systems where nothing is known + * about the actual objects being related. + * @param string &$script The script will be modified in this method. + */ + protected function addFKByKeyMutator(&$script, ForeignKey $fk) + { + $table = $this->getTable(); + + #$className = $this->getForeignTable($fk)->getPhpName(); + $methodAffix = $this->getFKPhpNameAffix($fk); + #$varName = $this->getFKVarName($fk); + + $script .= " + /** + * Provides convenient way to set a relationship based on a + * key. e.g. + * \$bar->setFooKey(\$foo->getPrimaryKey()) + *"; + if (count($fk->getLocalColumns()) > 1) { + $script .= " + * Note: It is important that the xml schema used to create this class + * maintains consistency in the order of related columns between + * ".$table->getName()." and ". $tblFK->getName().". + * If for some reason this is impossible, this method should be + * overridden in ".$table->getPhpName()."."; + } + $script .= " + * @return ".$this->getObjectClassname()." The current object (for fluent API support) + * @throws PropelException + */ + public function set".$methodAffix."Key(\$key) + { +"; + if (count($fk->getLocalColumns()) > 1) { + $i = 0; + foreach ($fk->getLocalColumns() as $colName) { + $col = $table->getColumn($colName); + $fktype = $col->getPhpType(); + $script .= " + \$this->set".$col->getPhpName()."( ($fktype) \$key[$i] ); +"; + $i++; + } /* foreach */ + } else { + $lcols = $fk->getLocalColumns(); + $colName = $lcols[0]; + $col = $table->getColumn($colName); + $fktype = $col->getPhpType(); + $script .= " + \$this->set".$col->getPhpName()."( ($fktype) \$key); +"; + } + $script .= " + return \$this; + } +"; + } // addFKByKeyMutator() + + /** + * Adds the method that fetches fkey-related (referencing) objects but also joins in data from another table. + * @param string &$script The script will be modified in this method. + */ + protected function addRefFKGetJoinMethods(&$script, ForeignKey $refFK) + { + $table = $this->getTable(); + $tblFK = $refFK->getTable(); + $join_behavior = $this->getGeneratorConfig()->getBuildProperty('useLeftJoinsInDoJoinMethods') ? 'Criteria::LEFT_JOIN' : 'Criteria::INNER_JOIN'; + + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $relCol = $this->getRefFKPhpNameAffix($refFK, $plural=true); + $collName = $this->getRefFKCollVarName($refFK); + $lastCriteriaName = $this->getRefFKLastCriteriaVarName($refFK); + + $fkPeerBuilder = $this->getNewPeerBuilder($tblFK); + + $lastTable = ""; + foreach ($tblFK->getForeignKeys() as $fk2) { + + $tblFK2 = $this->getForeignTable($fk2); + $doJoinGet = !$tblFK2->isForReferenceOnly(); + + // it doesn't make sense to join in rows from the curent table, since we are fetching + // objects related to *this* table (i.e. the joined rows will all be the same row as current object) + if ($this->getTable()->getPhpName() == $tblFK2->getPhpName()) { + $doJoinGet = false; + } + + $relCol2 = $this->getFKPhpNameAffix($fk2, $plural = false); + + if ( $this->getRelatedBySuffix($refFK) != "" && + ($this->getRelatedBySuffix($refFK) == $this->getRelatedBySuffix($fk2))) { + $doJoinGet = false; + } + + if ($doJoinGet) { + $script .= " + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this ".$table->getPhpName()." is new, it will return + * an empty collection; or if this ".$table->getPhpName()." has previously + * been saved, it will retrieve related $relCol from storage. + * + * This method is protected by default in order to keep the public + * api reasonable. You can provide public methods for those you + * actually need in ".$table->getPhpName().". + */ + public function get".$relCol."Join".$relCol2."(\$criteria = null, \$con = null, \$join_behavior = $join_behavior) + {"; + $script .= " + if (\$criteria === null) { + \$criteria = new Criteria($peerClassname::DATABASE_NAME); + } + elseif (\$criteria instanceof Criteria) + { + \$criteria = clone \$criteria; + } + + if (\$this->$collName === null) { + if (\$this->isNew()) { + \$this->$collName = array(); + } else { +"; + foreach ($refFK->getForeignColumns() as $columnName) { + $column = $table->getColumn($columnName); + $flMap = $refFK->getForeignLocalMapping(); + $colFKName = $flMap[$columnName]; + $colFK = $tblFK->getColumn($colFKName); + if ($colFK === null) { + throw new EngineException("Column $colFKName not found in " . $tblFK->getName()); + } + $clo = strtolower($column->getName()); + $script .= " + \$criteria->add(".$fkPeerBuilder->getColumnConstant($colFK).", \$this->$clo); +"; + } // end foreach ($fk->getForeignColumns() + + $script .= " + \$this->$collName = ".$fkPeerBuilder->getPeerClassname()."::doSelectJoin$relCol2(\$criteria, \$con, \$join_behavior); + } + } else { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. +"; + foreach ($refFK->getForeignColumns() as $columnName) { + $column = $table->getColumn($columnName); + $flMap = $refFK->getForeignLocalMapping(); + $colFKName = $flMap[$columnName]; + $colFK = $tblFK->getColumn($colFKName); + $clo = strtolower($column->getName()); + $script .= " + \$criteria->add(".$fkPeerBuilder->getColumnConstant($colFK).", \$this->$clo); +"; + } /* end foreach ($fk->getForeignColumns() */ + + $script .= " + if (!isset(\$this->$lastCriteriaName) || !\$this->".$lastCriteriaName."->equals(\$criteria)) { + \$this->$collName = ".$fkPeerBuilder->getPeerClassname()."::doSelectJoin$relCol2(\$criteria, \$con, \$join_behavior); + } + } + \$this->$lastCriteriaName = \$criteria; + + return \$this->$collName; + } +"; + } /* end if ($doJoinGet) */ + + } /* end foreach ($tblFK->getForeignKeys() as $fk2) { */ + + } // function + + + // ---------------------------------------------------------------- + // + // R E F E R R E R F K M E T H O D S + // + // ---------------------------------------------------------------- + + /** + * Adds the attributes used to store objects that have referrer fkey relationships to this object. + * protected collVarName; + * private lastVarNameCriteria = null; + * @param string &$script The script will be modified in this method. + */ + protected function addRefFKAttributes(&$script, ForeignKey $refFK) + { + $joinedTableObjectBuilder = $this->getNewObjectBuilder($refFK->getTable()); + $className = $joinedTableObjectBuilder->getObjectClassname(); + + if ($refFK->isLocalPrimaryKey()) { + $script .= " + /** + * @var $className one-to-one related $className object + */ + protected $".$this->getPKRefFKVarName($refFK)."; +"; + } else { + $script .= " + /** + * @var array {$className}[] Collection to store aggregation of $className objects. + */ + protected $".$this->getRefFKCollVarName($refFK)."; + + /** + * @var Criteria The criteria used to select the current contents of ".$this->getRefFKCollVarName($refFK).". + */ + private $".$this->getRefFKLastCriteriaVarName($refFK)." = null; +"; + } + } + + /** + * Adds the methods for retrieving, initializing, adding objects that are related to this one by foreign keys. + * @param string &$script The script will be modified in this method. + */ + protected function addRefFKMethods(&$script) + { + foreach ($this->getTable()->getReferrers() as $refFK) { + if ($refFK->isLocalPrimaryKey()) { + $this->addPKRefFKGet($script, $refFK); + $this->addPKRefFKSet($script, $refFK); + } else { + $this->addRefFKClear($script, $refFK); + $this->addRefFKInit($script, $refFK); + $this->addRefFKGet($script, $refFK); + $this->addRefFKCount($script, $refFK); + $this->addRefFKAdd($script, $refFK); + $this->addRefFKGetJoinMethods($script, $refFK); + } + } + } + + /** + * Adds the method that clears the referrer fkey collection. + * @param string &$script The script will be modified in this method. + */ + protected function addRefFKClear(&$script, ForeignKey $refFK) { + + $relCol = $this->getRefFKPhpNameAffix($refFK, $plural = true); + $collName = $this->getRefFKCollVarName($refFK); + + $script .= " + /** + * Clears out the $collName collection (array). + * + * This does not modify the database; however, it will remove any associated objects, causing + * them to be refetched by subsequent calls to accessor method. + * + * @return void + * @see add$relCol() + */ + public function clear$relCol() + { + \$this->$collName = null; // important to set this to NULL since that means it is uninitialized + } +"; + } // addRefererClear() + + /** + * Adds the method that initializes the referrer fkey collection. + * @param string &$script The script will be modified in this method. + */ + protected function addRefFKInit(&$script, ForeignKey $refFK) { + + $relCol = $this->getRefFKPhpNameAffix($refFK, $plural = true); + $collName = $this->getRefFKCollVarName($refFK); + + $script .= " + /** + * Initializes the $collName collection (array). + * + * By default this just sets the $collName collection to an empty array (like clear$collName()); + * however, you may wish to override this method in your stub class to provide setting appropriate + * to your application -- for example, setting the initial array to the values stored in database. + * + * @return void + */ + public function init$relCol() + { + \$this->$collName = array(); + } +"; + } // addRefererInit() + + /** + * Adds the method that adds an object into the referrer fkey collection. + * @param string &$script The script will be modified in this method. + */ + protected function addRefFKAdd(&$script, ForeignKey $refFK) + { + $tblFK = $refFK->getTable(); + + $joinedTableObjectBuilder = $this->getNewObjectBuilder($refFK->getTable()); + $className = $joinedTableObjectBuilder->getObjectClassname(); + + $collName = $this->getRefFKCollVarName($refFK); + + $script .= " + /** + * Method called to associate a $className object to this object + * through the $className foreign key attribute. + * + * @param $className \$l $className + * @return void + * @throws PropelException + */ + public function add".$this->getRefFKPhpNameAffix($refFK, $plural = false)."($className \$l) + { + if (\$this->$collName === null) { + \$this->init".$this->getRefFKPhpNameAffix($refFK, $plural = true)."(); + } + if (!in_array(\$l, \$this->$collName, true)) { // only add it if the **same** object is not already associated + array_push(\$this->$collName, \$l); + \$l->set".$this->getFKPhpNameAffix($refFK, $plural = false)."(\$this); + } + } +"; + } // addRefererAdd + + /** + * Adds the method that returns the size of the referrer fkey collection. + * @param string &$script The script will be modified in this method. + */ + protected function addRefFKCount(&$script, ForeignKey $refFK) + { + $table = $this->getTable(); + $tblFK = $refFK->getTable(); + + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + + $fkPeerBuilder = $this->getNewPeerBuilder($refFK->getTable()); + $relCol = $this->getRefFKPhpNameAffix($refFK, $plural = true); + + $collName = $this->getRefFKCollVarName($refFK); + $lastCriteriaName = $this->getRefFKLastCriteriaVarName($refFK); + + $className = $fkPeerBuilder->getObjectClassname(); + + $script .= " + /** + * Returns the number of related $className objects. + * + * @param Criteria \$criteria + * @param boolean \$distinct + * @param PropelPDO \$con + * @return int Count of related $className objects. + * @throws PropelException + */ + public function count$relCol(Criteria \$criteria = null, \$distinct = false, PropelPDO \$con = null) + {"; + + $script .= " + if (\$criteria === null) { + \$criteria = new Criteria($peerClassname::DATABASE_NAME); + } else { + \$criteria = clone \$criteria; + } + + if (\$distinct) { + \$criteria->setDistinct(); + } + + \$count = null; + + if (\$this->$collName === null) { + if (\$this->isNew()) { + \$count = 0; + } else { +"; + foreach ($refFK->getLocalColumns() as $colFKName) { + // $colFKName is local to the referring table (i.e. foreign to this table) + $lfmap = $refFK->getLocalForeignMapping(); + $localColumn = $this->getTable()->getColumn($lfmap[$colFKName]); + $colFK = $refFK->getTable()->getColumn($colFKName); + $clo = strtolower($localColumn->getName()); + $script .= " + \$criteria->add(".$fkPeerBuilder->getColumnConstant($colFK).", \$this->$clo); +"; + } // end foreach ($fk->getForeignColumns() + + $script .= " + \$count = ".$fkPeerBuilder->getPeerClassname()."::doCount(\$criteria, false, \$con); + } + } else { + // criteria has no effect for a new object + if (!\$this->isNew()) { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return count of the collection. +"; + foreach ($refFK->getLocalColumns() as $colFKName) { + // $colFKName is local to the referring table (i.e. foreign to this table) + $lfmap = $refFK->getLocalForeignMapping(); + $localColumn = $this->getTable()->getColumn($lfmap[$colFKName]); + $colFK = $refFK->getTable()->getColumn($colFKName); + $clo = strtolower($localColumn->getName()); + $script .= " + + \$criteria->add(".$fkPeerBuilder->getColumnConstant($colFK).", \$this->$clo); +"; + } // foreach ($fk->getForeignColumns() + $script .= " + if (!isset(\$this->$lastCriteriaName) || !\$this->".$lastCriteriaName."->equals(\$criteria)) { + \$count = ".$fkPeerBuilder->getPeerClassname()."::doCount(\$criteria, false, \$con); + } else { + \$count = count(\$this->$collName); + } + } else { + \$count = count(\$this->$collName); + } + } + return \$count; + } +"; + } // addRefererCount + + /** + * Adds the method that returns the referrer fkey collection. + * @param string &$script The script will be modified in this method. + */ + protected function addRefFKGet(&$script, ForeignKey $refFK) + { + $table = $this->getTable(); + $tblFK = $refFK->getTable(); + + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $fkPeerBuilder = $this->getNewPeerBuilder($refFK->getTable()); + $relCol = $this->getRefFKPhpNameAffix($refFK, $plural = true); + + $collName = $this->getRefFKCollVarName($refFK); + $lastCriteriaName = $this->getRefFKLastCriteriaVarName($refFK); + + $className = $fkPeerBuilder->getObjectClassname(); + + $script .= " + /** + * Gets an array of $className objects which contain a foreign key that references this object. + * + * If this collection has already been initialized with an identical Criteria, it returns the collection. + * Otherwise if this ".$this->getObjectClassname()." has previously been saved, it will retrieve + * related $relCol from storage. If this ".$this->getObjectClassname()." is new, it will return + * an empty collection or the current collection, the criteria is ignored on a new object. + * + * @param PropelPDO \$con + * @param Criteria \$criteria + * @return array {$className}[] + * @throws PropelException + */ + public function get$relCol(\$criteria = null, PropelPDO \$con = null) + {"; + + $script .= " + if (\$criteria === null) { + \$criteria = new Criteria($peerClassname::DATABASE_NAME); + } + elseif (\$criteria instanceof Criteria) + { + \$criteria = clone \$criteria; + } + + if (\$this->$collName === null) { + if (\$this->isNew()) { + \$this->$collName = array(); + } else { +"; + foreach ($refFK->getLocalColumns() as $colFKName) { + // $colFKName is local to the referring table (i.e. foreign to this table) + $lfmap = $refFK->getLocalForeignMapping(); + $localColumn = $this->getTable()->getColumn($lfmap[$colFKName]); + $colFK = $refFK->getTable()->getColumn($colFKName); + + $clo = strtolower($localColumn->getName()); + + $script .= " + \$criteria->add(".$fkPeerBuilder->getColumnConstant($colFK).", \$this->$clo); +"; + } // end foreach ($fk->getForeignColumns() + + $script .= " + ".$fkPeerBuilder->getPeerClassname()."::addSelectColumns(\$criteria); + \$this->$collName = ".$fkPeerBuilder->getPeerClassname()."::doSelect(\$criteria, \$con); + } + } else { + // criteria has no effect for a new object + if (!\$this->isNew()) { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. +"; + foreach ($refFK->getLocalColumns() as $colFKName) { + // $colFKName is local to the referring table (i.e. foreign to this table) + $lfmap = $refFK->getLocalForeignMapping(); + $localColumn = $this->getTable()->getColumn($lfmap[$colFKName]); + $colFK = $refFK->getTable()->getColumn($colFKName); + $clo = strtolower($localColumn->getName()); + $script .= " + + \$criteria->add(".$fkPeerBuilder->getColumnConstant($colFK).", \$this->$clo); +"; + } // foreach ($fk->getForeignColumns() + $script .= " + ".$fkPeerBuilder->getPeerClassname()."::addSelectColumns(\$criteria); + if (!isset(\$this->$lastCriteriaName) || !\$this->".$lastCriteriaName."->equals(\$criteria)) { + \$this->$collName = ".$fkPeerBuilder->getPeerClassname()."::doSelect(\$criteria, \$con); + } + } + } + \$this->$lastCriteriaName = \$criteria; + return \$this->$collName; + } +"; + } // addRefererGet() + + /** + * Adds the method that gets a one-to-one related referrer fkey. + * This is for one-to-one relationship special case. + * @param string &$script The script will be modified in this method. + */ + protected function addPKRefFKGet(&$script, ForeignKey $refFK) + { + $table = $this->getTable(); + $tblFK = $refFK->getTable(); + + $joinedTableObjectBuilder = $this->getNewObjectBuilder($refFK->getTable()); + $joinedTablePeerBuilder = $this->getNewObjectBuilder($refFK->getTable()); + $className = $joinedTableObjectBuilder->getObjectClassname(); + + $varName = $this->getPKRefFKVarName($refFK); + + $script .= " + /** + * Gets a single $className object, which is related to this object by a one-to-one relationship. + * + * @param PropelPDO \$con + * @return $className + * @throws PropelException + */ + public function get".$this->getRefFKPhpNameAffix($refFK, $plural = false)."(PropelPDO \$con = null) + { +"; + $script .= " + if (\$this->$varName === null && !\$this->isNew()) {"; + + $lfmap = $refFK->getLocalForeignMapping(); + + // remember: this object represents the foreign table, + // so we need foreign columns of the reffk to know the local columns + // that we need to set :) + + $localcols = $refFK->getForeignColumns(); + + // we know that at least every column in the primary key of the foreign table + // is represented in this foreign key + + $params = array(); + foreach ($tblFK->getPrimaryKey() as $col) { + $localColumn = $table->getColumn($lfmap[$col->getName()]); + $clo = strtolower($localColumn->getName()); + $params[] = "\$this->$clo"; + } + + $script .= " + \$this->$varName = ".$joinedTableObjectBuilder->getPeerClassname()."::retrieveByPK(".implode(", ", $params).", \$con); + } + + return \$this->$varName; + } +"; + } // addPKRefFKGet() + + /** + * Adds the method that sets a one-to-one related referrer fkey. + * This is for one-to-one relationships special case. + * @param string &$script The script will be modified in this method. + * @param ForeignKey $refFK The referencing foreign key. + */ + protected function addPKRefFKSet(&$script, ForeignKey $refFK) + { + $tblFK = $refFK->getTable(); + + $joinedTableObjectBuilder = $this->getNewObjectBuilder($refFK->getTable()); + $className = $joinedTableObjectBuilder->getObjectClassname(); + + $varName = $this->getPKRefFKVarName($refFK); + + $script .= " + /** + * Sets a single $className object as related to this object by a one-to-one relationship. + * + * @param $className \$l $className + * @return ".$this->getObjectClassname()." The current object (for fluent API support) + * @throws PropelException + */ + public function set".$this->getRefFKPhpNameAffix($refFK, $plural = false)."($className \$v) + { + \$this->$varName = \$v; + + // Make sure that that the passed-in $className isn't already associated with this object + if (\$v->get".$this->getFKPhpNameAffix($refFK, $plural = false)."() === null) { + \$v->set".$this->getFKPhpNameAffix($refFK, $plural = false)."(\$this); + } + + return \$this; + } +"; + } // addPKRefFKSet + + // ---------------------------------------------------------------- + // + // M A N I P U L A T I O N M E T H O D S + // + // ---------------------------------------------------------------- + + /** + * Adds the workhourse doSave() method. + * @param string &$script The script will be modified in this method. + */ + protected function addDoSave(&$script) + { + $table = $this->getTable(); + + $reloadOnUpdate = $table->isReloadOnUpdate(); + $reloadOnInsert = $table->isReloadOnInsert(); + + $script .= " + /** + * Performs the work of inserting or updating the row in the database. + * + * If the object is new, it inserts it; otherwise an update is performed. + * All related objects are also updated in this method. + * + * @param PropelPDO \$con"; + if ($reloadOnUpdate || $reloadOnInsert) { + $script .= " + * @param boolean \$skipReload Whether to skip the reload for this object from database."; + } + $script .= " + * @return int The number of rows affected by this insert/update and any referring fk objects' save() operations. + * @throws PropelException + * @see save() + */ + protected function doSave(PropelPDO \$con".($reloadOnUpdate || $reloadOnInsert ? ", \$skipReload = false" : "").") + { + \$affectedRows = 0; // initialize var to track total num of affected rows + if (!\$this->alreadyInSave) { + \$this->alreadyInSave = true; +"; + if ($reloadOnInsert || $reloadOnUpdate) { + $script .= " + \$reloadObject = false; +"; + } + + if (count($table->getForeignKeys())) { + + $script .= " + // We call the save method on the following object(s) if they + // were passed to this object by their coresponding set + // method. This object relates to these object(s) by a + // foreign key reference. +"; + + foreach ($table->getForeignKeys() as $fk) + { + $aVarName = $this->getFKVarName($fk); + $script .= " + if (\$this->$aVarName !== null) { + if (\$this->".$aVarName."->isModified() || \$this->".$aVarName."->isNew()) { + \$affectedRows += \$this->".$aVarName."->save(\$con); + } + \$this->set".$this->getFKPhpNameAffix($fk, $plural = false)."(\$this->$aVarName); + } +"; + } // foreach foreign k + } // if (count(foreign keys)) + + if ($table->hasAutoIncrementPrimaryKey() ) { + $script .= " + if (\$this->isNew() ) { + \$this->modifiedColumns[] = " . $this->getColumnConstant($table->getAutoIncrementPrimaryKey() ) . "; + }"; + } + + $script .= " + + // If this object has been modified, then save it to the database. + if (\$this->isModified()"; + + $script .= ") { + if (\$this->isNew()) { + \$pk = ".$this->getPeerClassname()."::doInsert(\$this, \$con);"; + if ($reloadOnInsert) { + $script .= " + if (!\$skipReload) { + \$reloadObject = true; + }"; + } + $script .= " + \$affectedRows += 1; // we are assuming that there is only 1 row per doInsert() which + // should always be true here (even though technically + // BasePeer::doInsert() can insert multiple rows). +"; + if ($table->getIdMethod() != IDMethod::NO_ID_METHOD) { + + if (count($pks = $table->getPrimaryKey())) { + foreach ($pks as $pk) { + if ($pk->isAutoIncrement()) { + $script .= " + \$this->set".$pk->getPhpName()."(\$pk); //[IMV] update autoincrement primary key +"; + } + } + } + } // if (id method != "none") + + $script .= " + \$this->setNew(false); + } else {"; + if ($reloadOnUpdate) { + $script .= " + if (!\$skipReload) { + \$reloadObject = true; + }"; + } + $script .= " + \$affectedRows += ".$this->getPeerClassname()."::doUpdate(\$this, \$con); + } +"; + + // We need to rewind any LOB columns + foreach ($table->getColumns() as $col) { + $clo = strtolower($col->getName()); + if ($col->isLobType()) { + $script .= " + // Rewind the $clo LOB column, since PDO does not rewind after inserting value. + if (\$this->$clo !== null && is_resource(\$this->$clo)) { + rewind(\$this->$clo); + } +"; + } + } + + $script .= " + \$this->resetModified(); // [HL] After being saved an object is no longer 'modified' + } +"; + + foreach ($table->getReferrers() as $refFK) { + + if ($refFK->isLocalPrimaryKey()) { + $varName = $this->getPKRefFKVarName($refFK); + $script .= " + if (\$this->$varName !== null) { + if (!\$this->{$varName}->isDeleted()) { + \$affectedRows += \$this->{$varName}->save(\$con); + } + } +"; + } else { + $collName = $this->getRefFKCollVarName($refFK); + $script .= " + if (\$this->$collName !== null) { + foreach (\$this->$collName as \$referrerFK) { + if (!\$referrerFK->isDeleted()) { + \$affectedRows += \$referrerFK->save(\$con); + } + } + } +"; + } // if refFK->isLocalPrimaryKey() + + } /* foreach getReferrers() */ + $script .= " + \$this->alreadyInSave = false; +"; + if ($reloadOnInsert || $reloadOnUpdate) { + $script .= " + if (\$reloadObject) { + \$this->reload(\$con); + } +"; + } + $script .= " + } + return \$affectedRows; + } // doSave() +"; + + } + + /** + * Adds the $alreadyInSave attribute, which prevents attempting to re-save the same object. + * @param string &$script The script will be modified in this method. + */ + protected function addAlreadyInSaveAttribute(&$script) + { + $script .= " + /** + * Flag to prevent endless save loop, if this object is referenced + * by another object which falls in this transaction. + * @var boolean + */ + protected \$alreadyInSave = false; +"; + } + + /** + * Adds the save() method. + * @param string &$script The script will be modified in this method. + */ + protected function addSave(&$script) + { + $this->addSaveComment($script); + $this->addSaveOpen($script); + $this->addSaveBody($script); + $this->addSaveClose($script); + } + + /** + * Adds the comment for the save method + * @param string &$script The script will be modified in this method. + * @see addSave() + **/ + protected function addSaveComment(&$script) { + $table = $this->getTable(); + $reloadOnUpdate = $table->isReloadOnUpdate(); + $reloadOnInsert = $table->isReloadOnInsert(); + + $script .= " + /** + * Persists this object to the database. + * + * If the object is new, it inserts it; otherwise an update is performed. + * All modified related objects will also be persisted in the doSave() + * method. This method wraps all precipitate database operations in a + * single transaction."; + if ($reloadOnUpdate) { + $script .= " + * + * Since this table was configured to reload rows on update, the object will + * be reloaded from the database if an UPDATE operation is performed (unless + * the \$skipReload parameter is TRUE)."; + } + if ($reloadOnInsert) { + $script .= " + * + * Since this table was configured to reload rows on insert, the object will + * be reloaded from the database if an INSERT operation is performed (unless + * the \$skipReload parameter is TRUE)."; + } + $script .= " + * + * @param PropelPDO \$con"; + if ($reloadOnUpdate || $reloadOnInsert) { + $script .= " + * @param boolean \$skipReload Whether to skip the reload for this object from database."; + } + $script .= " + * @return int The number of rows affected by this insert/update and any referring fk objects' save() operations. + * @throws PropelException + * @see doSave() + */"; + } + + /** + * Adds the function declaration for the save method + * @param string &$script The script will be modified in this method. + * @see addSave() + **/ + protected function addSaveOpen(&$script) { + $table = $this->getTable(); + $reloadOnUpdate = $table->isReloadOnUpdate(); + $reloadOnInsert = $table->isReloadOnInsert(); + $script .= " + public function save(PropelPDO \$con = null".($reloadOnUpdate || $reloadOnInsert ? ", \$skipReload = false" : "").") + {"; + } + + /** + * Adds the function body for the save method + * @param string &$script The script will be modified in this method. + * @see addSave() + **/ + protected function addSaveBody(&$script) { + $table = $this->getTable(); + $reloadOnUpdate = $table->isReloadOnUpdate(); + $reloadOnInsert = $table->isReloadOnInsert(); + + $script .= " + if (\$this->isDeleted()) { + throw new PropelException(\"You cannot save an object that has been deleted.\"); + } + + if (\$con === null) { + \$con = Propel::getConnection(".$this->getPeerClassname()."::DATABASE_NAME, Propel::CONNECTION_WRITE); + } + + \$con->beginTransaction(); + \$isInsert = \$this->isNew(); + try {"; + + if($this->getGeneratorConfig()->getBuildProperty('addHooks')) { + // save with runtime hools + $script .= " + \$ret = \$this->preSave(\$con);"; + $this->applyBehaviorModifier('preSave', $script, " "); + $script .= " + if (\$isInsert) { + \$ret = \$ret && \$this->preInsert(\$con);"; + $this->applyBehaviorModifier('preInsert', $script, " "); + $script .= " + } else { + \$ret = \$ret && \$this->preUpdate(\$con);"; + $this->applyBehaviorModifier('preUpdate', $script, " "); + $script .= " + } + if (\$ret) { + \$affectedRows = \$this->doSave(\$con".($reloadOnUpdate || $reloadOnInsert ? ", \$skipReload" : "")."); + if (\$isInsert) { + \$this->postInsert(\$con);"; + $this->applyBehaviorModifier('postInsert', $script, " "); + $script .= " + } else { + \$this->postUpdate(\$con);"; + $this->applyBehaviorModifier('postUpdate', $script, " "); + $script .= " + } + \$this->postSave(\$con);"; + $this->applyBehaviorModifier('postSave', $script, " "); + $script .= " + ".$this->getPeerClassname()."::addInstanceToPool(\$this); + } else { + \$affectedRows = 0; + } + \$con->commit(); + return \$affectedRows;"; + } else { + // save without runtime hooks + $this->applyBehaviorModifier('preSave', $script, " "); + if ($this->hasBehaviorModifier('preUpdate')) + { + $script .= " + if(!\$isInsert) {"; + $this->applyBehaviorModifier('preUpdate', $script, " "); + $script .= " + }"; + } + if ($this->hasBehaviorModifier('preInsert')) + { + $script .= " + if(\$isInsert) {"; + $this->applyBehaviorModifier('preInsert', $script, " "); + $script .= " + }"; + } + $script .= " + \$affectedRows = \$this->doSave(\$con".($reloadOnUpdate || $reloadOnInsert ? ", \$skipReload" : "").");"; + $this->applyBehaviorModifier('postSave', $script, " "); + if ($this->hasBehaviorModifier('postUpdate')) + { + $script .= " + if(!\$isInsert) {"; + $this->applyBehaviorModifier('postUpdate', $script, " "); + $script .= " + }"; + } + if ($this->hasBehaviorModifier('postInsert')) + { + $script .= " + if(\$isInsert) {"; + $this->applyBehaviorModifier('postInsert', $script, " "); + $script .= " + }"; + } + $script .= " + \$con->commit(); + ".$this->getPeerClassname()."::addInstanceToPool(\$this); + return \$affectedRows;"; + } + + $script .= " + } catch (PropelException \$e) { + \$con->rollBack(); + throw \$e; + }"; + } + + /** + * Adds the function close for the save method + * @param string &$script The script will be modified in this method. + * @see addSave() + **/ + protected function addSaveClose(&$script) { + $script .= " + } +"; + } + + /** + * Adds the $alreadyInValidation attribute, which prevents attempting to re-validate the same object. + * @param string &$script The script will be modified in this method. + */ + protected function addAlreadyInValidationAttribute(&$script) + { + $script .= " + /** + * Flag to prevent endless validation loop, if this object is referenced + * by another object which falls in this transaction. + * @var boolean + */ + protected \$alreadyInValidation = false; +"; + } + + /** + * Adds the validate() method. + * @param string &$script The script will be modified in this method. + */ + protected function addValidate(&$script) + { + $script .= " + /** + * Validates the objects modified field values and all objects related to this table. + * + * If \$columns is either a column name or an array of column names + * only those columns are validated. + * + * @param mixed \$columns Column name or an array of column names. + * @return boolean Whether all columns pass validation. + * @see doValidate() + * @see getValidationFailures() + */ + public function validate(\$columns = null) + { + \$res = \$this->doValidate(\$columns); + if (\$res === true) { + \$this->validationFailures = array(); + return true; + } else { + \$this->validationFailures = \$res; + return false; + } + } +"; + } // addValidate() + + /** + * Adds the workhourse doValidate() method. + * @param string &$script The script will be modified in this method. + */ + protected function addDoValidate(&$script) + { + $table = $this->getTable(); + + $script .= " + /** + * This function performs the validation work for complex object models. + * + * In addition to checking the current object, all related objects will + * also be validated. If all pass then true is returned; otherwise + * an aggreagated array of ValidationFailed objects will be returned. + * + * @param array \$columns Array of column names to validate. + * @return mixed true if all validations pass; array of ValidationFailed objets otherwise. + */ + protected function doValidate(\$columns = null) + { + if (!\$this->alreadyInValidation) { + \$this->alreadyInValidation = true; + \$retval = null; + + \$failureMap = array(); +"; + if (count($table->getForeignKeys()) != 0) { + $script .= " + + // We call the validate method on the following object(s) if they + // were passed to this object by their coresponding set + // method. This object relates to these object(s) by a + // foreign key reference. +"; + foreach ($table->getForeignKeys() as $fk) { + $aVarName = $this->getFKVarName($fk); + $script .= " + if (\$this->".$aVarName." !== null) { + if (!\$this->".$aVarName."->validate(\$columns)) { + \$failureMap = array_merge(\$failureMap, \$this->".$aVarName."->getValidationFailures()); + } + } +"; + } /* for () */ + } /* if count(fkeys) */ + + $script .= " + + if ((\$retval = ".$this->getPeerClassname()."::doValidate(\$this, \$columns)) !== true) { + \$failureMap = array_merge(\$failureMap, \$retval); + } + +"; + + foreach ($table->getReferrers() as $refFK) { + if ($refFK->isLocalPrimaryKey()) { + $varName = $this->getPKRefFKVarName($refFK); + $script .= " + if (\$this->$varName !== null) { + if (!\$this->".$varName."->validate(\$columns)) { + \$failureMap = array_merge(\$failureMap, \$this->".$varName."->getValidationFailures()); + } + } +"; + } else { + $collName = $this->getRefFKCollVarName($refFK); + $script .= " + if (\$this->$collName !== null) { + foreach (\$this->$collName as \$referrerFK) { + if (!\$referrerFK->validate(\$columns)) { + \$failureMap = array_merge(\$failureMap, \$referrerFK->getValidationFailures()); + } + } + } +"; + } + } /* foreach getReferrers() */ + + $script .= " + + \$this->alreadyInValidation = false; + } + + return (!empty(\$failureMap) ? \$failureMap : true); + } +"; + } // addDoValidate() + + /** + * Adds the ensureConsistency() method to ensure that internal state is correct. + * @param string &$script The script will be modified in this method. + */ + protected function addEnsureConsistency(&$script) + { + $table = $this->getTable(); + + $script .= " + /** + * Checks and repairs the internal consistency of the object. + * + * This method is executed after an already-instantiated object is re-hydrated + * from the database. It exists to check any foreign keys to make sure that + * the objects related to the current object are correct based on foreign key. + * + * You can override this method in the stub class, but you should always invoke + * the base method from the overridden method (i.e. parent::ensureConsistency()), + * in case your model changes. + * + * @throws PropelException + */ + public function ensureConsistency() + { +"; + foreach ($table->getColumns() as $col) { + + $clo=strtolower($col->getName()); + + if ($col->isForeignKey()) { + foreach ($col->getForeignKeys() as $fk) { + + $tblFK = $table->getDatabase()->getTable($fk->getForeignTableName()); + $colFK = $tblFK->getColumn($fk->getMappedForeignColumn($col->getName())); + $varName = $this->getFKVarName($fk); + + $script .= " + if (\$this->".$varName." !== null && \$this->$clo !== \$this->".$varName."->get".$colFK->getPhpName()."()) { + \$this->$varName = null; + }"; + } // foraech + } /* if col is foreign key */ + + } // foreach + + $script .= " + } // ensureConsistency +"; + } // addCheckRelConsistency + + /** + * Adds the copy() method, which (in complex OM) includes the $deepCopy param for making copies of related objects. + * @param string &$script The script will be modified in this method. + */ + protected function addCopy(&$script) + { + $this->addCopyInto($script); + + $table = $this->getTable(); + + $script .= " + /** + * Makes a copy of this object that will be inserted as a new row in table when saved. + * It creates a new object filling in the simple attributes, but skipping any primary + * keys that are defined for the table. + * + * If desired, this method can also make copies of all associated (fkey referrers) + * objects. + * + * @param boolean \$deepCopy Whether to also copy all rows that refer (by fkey) to the current row. + * @return ".$this->getObjectClassname()." Clone of current object. + * @throws PropelException + */ + public function copy(\$deepCopy = false) + { + // we use get_class(), because this might be a subclass + \$clazz = get_class(\$this); + " . $this->buildObjectInstanceCreationCode('$copyObj', '$clazz') . " + \$this->copyInto(\$copyObj, \$deepCopy); + return \$copyObj; + } +"; + } // addCopy() + + /** + * Adds the copyInto() method, which takes an object and sets contents to match current object. + * In complex OM this method includes the $deepCopy param for making copies of related objects. + * @param string &$script The script will be modified in this method. + */ + protected function addCopyInto(&$script) + { + $table = $this->getTable(); + + $script .= " + /** + * Sets contents of passed object to values from current object. + * + * If desired, this method can also make copies of all associated (fkey referrers) + * objects. + * + * @param object \$copyObj An object of ".$this->getObjectClassname()." (or compatible) type. + * @param boolean \$deepCopy Whether to also copy all rows that refer (by fkey) to the current row. + * @throws PropelException + */ + public function copyInto(\$copyObj, \$deepCopy = false) + { +"; + + $autoIncCols = array(); + foreach ($table->getColumns() as $col) { + /* @var $col Column */ + if ($col->isAutoIncrement()) { + $autoIncCols[] = $col; + } + } + + foreach ($table->getColumns() as $col) { + if (!in_array($col, $autoIncCols, true)) { + $script .= " + \$copyObj->set".$col->getPhpName()."(\$this->".strtolower($col->getName())."); +"; + } + } // foreach + + // Avoid useless code by checking to see if there are any referrers + // to this table: + if (count($table->getReferrers()) > 0) { + $script .= " + + if (\$deepCopy) { + // important: temporarily setNew(false) because this affects the behavior of + // the getter/setter methods for fkey referrer objects. + \$copyObj->setNew(false); +"; + foreach ($table->getReferrers() as $fk) { + //HL: commenting out self-referrential check below + // it seems to work as expected and is probably desireable to have those referrers from same table deep-copied. + //if ( $fk->getTable()->getName() != $table->getName() ) { + + if ($fk->isLocalPrimaryKey()) { + + $afx = $this->getRefFKPhpNameAffix($fk, $plural = false); + $script .= " + \$relObj = \$this->get$afx(); + if (\$relObj) { + \$copyObj->set$afx(\$relObj->copy(\$deepCopy)); + } +"; + } else { + + $script .= " + foreach (\$this->get".$this->getRefFKPhpNameAffix($fk, true)."() as \$relObj) { + if (\$relObj !== \$this) { // ensure that we don't try to copy a reference to ourselves + \$copyObj->add".$this->getRefFKPhpNameAffix($fk)."(\$relObj->copy(\$deepCopy)); + } + } +"; + } + // HL: commenting out close of self-referential check + // } /* if tblFK != table */ + } /* foreach */ + $script .= " + } // if (\$deepCopy) +"; + } /* if (count referrers > 0 ) */ + + $script .= " + + \$copyObj->setNew(true); +"; + + // Note: we're no longer resetting non-autoincrement primary keys to default values + // due to: http://propel.phpdb.org/trac/ticket/618 + foreach ($autoIncCols as $col) { + $coldefval = $col->getPhpDefaultValue(); + $coldefval = var_export($coldefval, true); + $script .= " + \$copyObj->set".$col->getPhpName() ."($coldefval); // this is a auto-increment column, so set to default value +"; + } // foreach + $script .= " + } +"; + } // addCopyInto() + + + /** + * Adds clearAllReferencers() method which resets all the collections of referencing + * fk objects. + * @param string &$script The script will be modified in this method. + */ + protected function addClearAllReferences(&$script) + { + $table = $this->getTable(); + $script .= " + /** + * Resets all collections of referencing foreign keys. + * + * This method is a user-space workaround for PHP's inability to garbage collect objects + * with circular references. This is currently necessary when using Propel in certain + * daemon or large-volumne/high-memory operations. + * + * @param boolean \$deep Whether to also clear the references on all associated objects. + */ + public function clearAllReferences(\$deep = false) + { + if (\$deep) {"; + $vars = array(); + foreach ($this->getTable()->getReferrers() as $refFK) { + if ($refFK->isLocalPrimaryKey()) { + $varName = $this->getPKRefFKVarName($refFK); + $vars[] = $varName; + $script .= " + if (\$this->$varName) { + \$this->{$varName}->clearAllReferences(\$deep); + }"; + } else { + $varName = $this->getRefFKCollVarName($refFK); + $vars[] = $varName; + $script .= " + if (\$this->$varName) { + foreach ((array) \$this->$varName as \$o) { + \$o->clearAllReferences(\$deep); + } + }"; + } + } + + $script .= " + } // if (\$deep) +"; + + foreach ($vars as $varName) { + $script .= " + \$this->$varName = null;"; + } + + foreach ($table->getForeignKeys() as $fk) { + $className = $this->getForeignTable($fk)->getPhpName(); + $varName = $this->getFKVarName($fk); + $script .= " + \$this->$varName = null;"; + } + + $script .= " + } +"; + } + + /** + * Adds a magic __toString() method if a string column was defined as primary string + * @param string &$script The script will be modified in this method. + */ + protected function addPrimaryString(&$script) + { + foreach ($this->getTable()->getColumns() as $column) { + if ($column->isPrimaryString()) { + $script .= " + /** + * Return the string representation of this object + * + * @return string The value of the '{$column->getName()}' column + */ + public function __toString() + { + return (string) \$this->get{$column->getPhpName()}(); + } +"; + break; + } + } + } +} // PHP5ObjectBuilder diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5PeerBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5PeerBuilder.php.svn-base new file mode 100644 index 0000000..c637376 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5PeerBuilder.php.svn-base @@ -0,0 +1,2645 @@ +. + */ + +require_once 'propel/engine/builder/om/PeerBuilder.php'; + +/** + * Generates a PHP5 base Peer class for user object model (OM). + * + * This class produces the base peer class (e.g. BaseMyPeer) which contains all + * the custom-built query and manipulator methods. + * + * @author Hans Lellelid + * @package propel.engine.builder.om.php5 + */ +class PHP5PeerBuilder extends PeerBuilder { + + /** + * Validates the current table to make sure that it won't + * result in generated code that will not parse. + * + * This method may emit warnings for code which may cause problems + * and will throw exceptions for errors that will definitely cause + * problems. + */ + protected function validateModel() + { + parent::validateModel(); + + $table = $this->getTable(); + + // Check to see if any of the column constants are PHP reserved words. + $colConstants = array(); + + foreach ($table->getColumns() as $col) { + $colConstants[] = $this->getColumnName($col); + } + + $reservedConstants = array_map('strtoupper', ClassTools::getPhpReservedWords()); + + $intersect = array_intersect($reservedConstants, $colConstants); + if (!empty($intersect)) { + throw new EngineException("One or more of your column names for [" . $table->getName() . "] table conflict with a PHP reserved word (" . implode(", ", $intersect) . ")"); + } + } + + /** + * Returns the name of the current class being built. + * @return string + */ + public function getUnprefixedClassname() + { + return $this->getBuildProperty('basePrefix') . $this->getStubPeerBuilder()->getUnprefixedClassname(); + } + + /** + * Gets the package for the [base] peer classes. + * @return string + */ + public function getPackage() + { + return parent::getPackage() . ".om"; + } + + /** + * Adds the include() statements for files that this class depends on or utilizes. + * @param string &$script The script will be modified in this method. + */ + protected function addIncludes(&$script) + { + } // addIncludes() + + /** + * Adds class phpdoc comment and openning of class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassOpen(&$script) { + + $tableName = $this->getTable()->getName(); + $tableDesc = $this->getTable()->getDescription(); + + $script .= " +/** + * Base static class for performing query and update operations on the '$tableName' table. + * + * $tableDesc + *"; + if ($this->getBuildProperty('addTimeStamp')) { + $now = strftime('%c'); + $script .= " + * This class was autogenerated by Propel " . $this->getBuildProperty('version') . " on: + * + * $now + *"; + } + + $extendingPeerClass = ''; + if ($this->basePeerClassname !== 'BasePeer') { + $extendingPeerClass = ' extends ' . $this->basePeerClassname; + } + + $script .= " + * @package ".$this->getPackage()." + */ +abstract class ".$this->getClassname(). $extendingPeerClass . " { +"; + } + + /** + * Closes class. + * Adds closing brace at end of class and the static map builder registration code. + * @param string &$script The script will be modified in this method. + * @see addStaticTableMapRegistration() + */ + protected function addClassClose(&$script) + { + // apply behaviors + $this->applyBehaviorModifier('staticMethods', $script, " "); + + $script .= " +} // " . $this->getClassname() . " +"; + $this->addStaticTableMapRegistration($script); + } + + /** + * Adds the static map builder registration code. + * @param string &$script The script will be modified in this method. + */ + protected function addStaticTableMapRegistration(&$script) + { + $table = $this->getTable(); + + $script .= " +// This is the static code needed to register the TableMap for this table with the main Propel class. +// +".$this->getClassName()."::buildTableMap(); + +"; + $this->applyBehaviorModifier('peerFilter', $script, ""); + } + + public function getTableMapClass() + { + return $this->getTablePhpName() . 'TableMap'; + } + + public function getTablePhpName() + { + return ($this->getTable()->isAbstract() ? '' : $this->getStubObjectBuilder()->getClassname()); + } + + /** + * Adds constant and variable declarations that go at the top of the class. + * @param string &$script The script will be modified in this method. + * @see addColumnNameConstants() + */ + protected function addConstantsAndAttributes(&$script) + { + $dbName = $this->getDatabase()->getName(); + $tableName = $this->prefixTableName($this->getTable()->getName()); + $tablePhpName = $this->getTablePhpName(); + $script .= " + /** the default database name for this class */ + const DATABASE_NAME = '$dbName'; + + /** the table name for this class */ + const TABLE_NAME = '$tableName'; + + /** the related Propel class for this table */ + const OM_CLASS = '$tablePhpName'; + + /** A class that can be returned by this peer. */ + const CLASS_DEFAULT = '".$this->getStubObjectBuilder()->getClasspath()."'; + + /** the related TableMap class for this table */ + const TM_CLASS = '".$this->getTableMapClass()."'; + + /** The total number of columns. */ + const NUM_COLUMNS = ".$this->getTable()->getNumColumns()."; + + /** The number of lazy-loaded columns. */ + const NUM_LAZY_LOAD_COLUMNS = ".$this->getTable()->getNumLazyLoadColumns()."; +"; + $this->addColumnNameConstants($script); + $this->addInheritanceColumnConstants($script); + + $script .= " + /** + * An identiy map to hold any loaded instances of ".$this->getObjectClassname()." objects. + * This must be public so that other peer classes can access this when hydrating from JOIN + * queries. + * @var array ".$this->getObjectClassname()."[] + */ + public static \$instances = array(); + +"; + + // apply behaviors + $this->applyBehaviorModifier('staticAttributes', $script, " "); + + $this->addFieldNamesAttribute($script); + $this->addFieldKeysAttribute($script); + } + + /** + * Adds the COLUMN_NAME contants to the class definition. + * @param string &$script The script will be modified in this method. + */ + protected function addColumnNameConstants(&$script) + { + foreach ($this->getTable()->getColumns() as $col) { + $script .= " + /** the column name for the ".strtoupper($col->getName()) ." field */ + const ".$this->getColumnName($col) ." = '".$this->prefixTablename($this->getTable()->getName()).".".strtoupper($col->getName())."'; +"; + } // foreach + } + + protected function addFieldNamesAttribute(&$script) + { + $table = $this->getTable(); + + $tableColumns = $table->getColumns(); + + $script .= " + /** + * holds an array of fieldnames + * + * first dimension keys are the type constants + * e.g. self::\$fieldNames[self::TYPE_PHPNAME][0] = 'Id' + */ + private static \$fieldNames = array ( + BasePeer::TYPE_PHPNAME => array ("; + foreach ($tableColumns as $col) { + $script .= "'".$col->getPhpName()."', "; + } + $script .= "), + BasePeer::TYPE_STUDLYPHPNAME => array ("; + foreach ($tableColumns as $col) { + $script .= "'".$col->getStudlyPhpName()."', "; + } + $script .= "), + BasePeer::TYPE_COLNAME => array ("; + foreach ($tableColumns as $col) { + $script .= $this->getColumnConstant($col, 'self').", "; + } + $script .= "), + BasePeer::TYPE_FIELDNAME => array ("; + foreach ($tableColumns as $col) { + $script .= "'".$col->getName()."', "; + } + $script .= "), + BasePeer::TYPE_NUM => array ("; + foreach ($tableColumns as $num => $col) { + $script .= "$num, "; + } + $script .= ") + ); +"; + } + + protected function addFieldKeysAttribute(&$script) + { + $table = $this->getTable(); + + $tableColumns = $table->getColumns(); + + $script .= " + /** + * holds an array of keys for quick access to the fieldnames array + * + * first dimension keys are the type constants + * e.g. self::\$fieldNames[BasePeer::TYPE_PHPNAME]['Id'] = 0 + */ + private static \$fieldKeys = array ( + BasePeer::TYPE_PHPNAME => array ("; + foreach ($tableColumns as $num => $col) { + $script .= "'".$col->getPhpName()."' => $num, "; + } + $script .= "), + BasePeer::TYPE_STUDLYPHPNAME => array ("; + foreach ($tableColumns as $num => $col) { + $script .= "'".$col->getStudlyPhpName()."' => $num, "; + } + $script .= "), + BasePeer::TYPE_COLNAME => array ("; + foreach ($tableColumns as $num => $col) { + $script .= $this->getColumnConstant($col, 'self')." => $num, "; + } + $script .= "), + BasePeer::TYPE_FIELDNAME => array ("; + foreach ($tableColumns as $num => $col) { + $script .= "'".$col->getName()."' => $num, "; + } + $script .= "), + BasePeer::TYPE_NUM => array ("; + foreach ($tableColumns as $num => $col) { + $script .= "$num, "; + } + $script .= ") + ); +"; + } // addFielKeysAttribute + + + protected function addGetFieldNames(&$script) + { + $script .= " + /** + * Returns an array of field names. + * + * @param string \$type The type of fieldnames to return: + * One of the class type constants BasePeer::TYPE_PHPNAME, BasePeer::TYPE_STUDLYPHPNAME + * BasePeer::TYPE_COLNAME, BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_NUM + * @return array A list of field names + */ + + static public function getFieldNames(\$type = BasePeer::TYPE_PHPNAME) + { + if (!array_key_exists(\$type, self::\$fieldNames)) { + throw new PropelException('Method getFieldNames() expects the parameter \$type to be one of the class constants BasePeer::TYPE_PHPNAME, BasePeer::TYPE_STUDLYPHPNAME, BasePeer::TYPE_COLNAME, BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_NUM. ' . \$type . ' was given.'); + } + return self::\$fieldNames[\$type]; + } +"; + + } // addGetFieldNames() + + protected function addTranslateFieldName(&$script) + { + $script .= " + /** + * Translates a fieldname to another type + * + * @param string \$name field name + * @param string \$fromType One of the class type constants BasePeer::TYPE_PHPNAME, BasePeer::TYPE_STUDLYPHPNAME + * BasePeer::TYPE_COLNAME, BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_NUM + * @param string \$toType One of the class type constants + * @return string translated name of the field. + * @throws PropelException - if the specified name could not be found in the fieldname mappings. + */ + static public function translateFieldName(\$name, \$fromType, \$toType) + { + \$toNames = self::getFieldNames(\$toType); + \$key = isset(self::\$fieldKeys[\$fromType][\$name]) ? self::\$fieldKeys[\$fromType][\$name] : null; + if (\$key === null) { + throw new PropelException(\"'\$name' could not be found in the field names of type '\$fromType'. These are: \" . print_r(self::\$fieldKeys[\$fromType], true)); + } + return \$toNames[\$key]; + } +"; + } // addTranslateFieldName() + + /** + * Adds the buildTableMap() method. + * @param string &$script The script will be modified in this method. + */ + protected function addBuildTableMap(&$script) + { + $script .= " + /** + * Add a TableMap instance to the database for this peer class. + */ + public static function buildTableMap() + { + \$dbMap = Propel::getDatabaseMap(".$this->getClassname()."::DATABASE_NAME); + if (!\$dbMap->hasTable(".$this->getClassname()."::TABLE_NAME)) + { + \$dbMap->addTableObject(new ".$this->getTableMapClass()."()); + } + } +"; + } + + /** + * Adds the CLASSKEY_* and CLASSNAME_* constants used for inheritance. + * @param string &$script The script will be modified in this method. + */ + public function addInheritanceColumnConstants(&$script) + { + if ($this->getTable()->getChildrenColumn()) { + + $col = $this->getTable()->getChildrenColumn(); + $cfc = $col->getPhpName(); + + if ($col->isEnumeratedClasses()) { + + if ($col->isPhpPrimitiveNumericType()) $quote = ""; + else $quote = '"'; + + foreach ($col->getChildren() as $child) { + $childBuilder = $this->getMultiExtendObjectBuilder(); + $childBuilder->setChild($child); + + $script .= " + /** A key representing a particular subclass */ + const CLASSKEY_".strtoupper($child->getKey())." = '" . $child->getKey() . "'; +"; + + if (strtoupper($child->getClassname()) != strtoupper($child->getKey())) { + $script .= " + /** A key representing a particular subclass */ + const CLASSKEY_".strtoupper($child->getClassname())." = '" . $child->getKey() . "'; +"; + } + + $script .= " + /** A class that can be returned by this peer. */ + const CLASSNAME_".strtoupper($child->getKey())." = '". $childBuilder->getClasspath() . "'; +"; + } /* foreach children */ + } /* if col->isenumerated...() */ + } /* if table->getchildrencolumn() */ + + } // + + /** + * Adds the alias() utility method. + * @param string &$script The script will be modified in this method. + */ + protected function addAlias(&$script) + { + $script .= " + /** + * Convenience method which changes table.column to alias.column. + * + * Using this method you can maintain SQL abstraction while using column aliases. + * + * \$c->addAlias(\"alias1\", TablePeer::TABLE_NAME); + * \$c->addJoin(TablePeer::alias(\"alias1\", TablePeer::PRIMARY_KEY_COLUMN), TablePeer::PRIMARY_KEY_COLUMN); + * + * @param string \$alias The alias for the current table. + * @param string \$column The column name for current table. (i.e. ".$this->getPeerClassname()."::COLUMN_NAME). + * @return string + */ + public static function alias(\$alias, \$column) + { + return str_replace(".$this->getPeerClassname()."::TABLE_NAME.'.', \$alias.'.', \$column); + } +"; + } // addAliasMethod + + /** + * Adds the addSelectColumns() method. + * @param string &$script The script will be modified in this method. + */ + protected function addAddSelectColumns(&$script) + { + $script .= " + /** + * Add all the columns needed to create a new object. + * + * Note: any columns that were marked with lazyLoad=\"true\" in the + * XML schema will not be added to the select list and only loaded + * on demand. + * + * @param criteria object containing the columns to add. + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function addSelectColumns(Criteria \$criteria) + {"; + foreach ($this->getTable()->getColumns() as $col) { + if (!$col->isLazyLoad()) { + $script .= " + \$criteria->addSelectColumn(".$this->getPeerClassname()."::".$this->getColumnName($col).");"; + } // if !col->isLazyLoad + } // foreach + $script .=" + } +"; + } // addAddSelectColumns() + + /** + * Adds the doCount() method. + * @param string &$script The script will be modified in this method. + */ + protected function addDoCount(&$script) + { + $script .= " + /** + * Returns the number of rows matching criteria. + * + * @param Criteria \$criteria + * @param boolean \$distinct Whether to select only distinct columns; deprecated: use Criteria->setDistinct() instead. + * @param PropelPDO \$con + * @return int Number of matching rows. + */ + public static function doCount(Criteria \$criteria, \$distinct = false, PropelPDO \$con = null) + { + // we may modify criteria, so copy it first + \$criteria = clone \$criteria; + + // We need to set the primary table name, since in the case that there are no WHERE columns + // it will be impossible for the BasePeer::createSelectSql() method to determine which + // tables go into the FROM clause. + \$criteria->setPrimaryTableName(".$this->getPeerClassname()."::TABLE_NAME); + + if (\$distinct && !in_array(Criteria::DISTINCT, \$criteria->getSelectModifiers())) { + \$criteria->setDistinct(); + } + + if (!\$criteria->hasSelectClause()) { + ".$this->getPeerClassname()."::addSelectColumns(\$criteria); + } + + \$criteria->clearOrderByColumns(); // ORDER BY won't ever affect the count + \$criteria->setDbName(self::DATABASE_NAME); // Set the correct dbName + + if (\$con === null) { + \$con = Propel::getConnection(".$this->getPeerClassname()."::DATABASE_NAME, Propel::CONNECTION_READ); + }"; + + // apply behaviors + $this->applyBehaviorModifier('preSelect', $script); + + $script .= " + // BasePeer returns a PDOStatement + \$stmt = ".$this->basePeerClassname."::doCount(\$criteria, \$con); + + if (\$row = \$stmt->fetch(PDO::FETCH_NUM)) { + \$count = (int) \$row[0]; + } else { + \$count = 0; // no rows returned; we infer that means 0 matches. + } + \$stmt->closeCursor(); + return \$count; + }"; + } + + /** + * Adds the doSelectOne() method. + * @param string &$script The script will be modified in this method. + */ + protected function addDoSelectOne(&$script) + { + $script .= " + /** + * Method to select one object from the DB. + * + * @param Criteria \$criteria object used to create the SELECT statement. + * @param PropelPDO \$con + * @return ".$this->getObjectClassname()." + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function doSelectOne(Criteria \$criteria, PropelPDO \$con = null) + { + \$critcopy = clone \$criteria; + \$critcopy->setLimit(1); + \$objects = ".$this->getPeerClassname()."::doSelect(\$critcopy, \$con); + if (\$objects) { + return \$objects[0]; + } + return null; + }"; + } + + /** + * Adds the doSelect() method. + * @param string &$script The script will be modified in this method. + */ + protected function addDoSelect(&$script) + { + $script .= " + /** + * Method to do selects. + * + * @param Criteria \$criteria The Criteria object used to build the SELECT statement. + * @param PropelPDO \$con + * @return array Array of selected Objects + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function doSelect(Criteria \$criteria, PropelPDO \$con = null) + { + return ".$this->getPeerClassname()."::populateObjects(".$this->getPeerClassname()."::doSelectStmt(\$criteria, \$con)); + }"; + } + + /** + * Adds the doSelectStmt() method. + * @param string &$script The script will be modified in this method. + */ + protected function addDoSelectStmt(&$script) + { + + $script .= " + /** + * Prepares the Criteria object and uses the parent doSelect() method to execute a PDOStatement. + * + * Use this method directly if you want to work with an executed statement durirectly (for example + * to perform your own object hydration). + * + * @param Criteria \$criteria The Criteria object used to build the SELECT statement. + * @param PropelPDO \$con The connection to use + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + * @return PDOStatement The executed PDOStatement object. + * @see ".$this->basePeerClassname."::doSelect() + */ + public static function doSelectStmt(Criteria \$criteria, PropelPDO \$con = null) + { + if (\$con === null) { + \$con = Propel::getConnection(".$this->getPeerClassname()."::DATABASE_NAME, Propel::CONNECTION_READ); + } + + if (!\$criteria->hasSelectClause()) { + \$criteria = clone \$criteria; + ".$this->getPeerClassname()."::addSelectColumns(\$criteria); + } + + // Set the correct dbName + \$criteria->setDbName(self::DATABASE_NAME);"; + // apply behaviors + if ($this->hasBehaviorModifier('preSelect')) + { + $this->applyBehaviorModifier('preSelect', $script); + } + $script .= " + + // BasePeer returns a PDOStatement + return ".$this->basePeerClassname."::doSelect(\$criteria, \$con); + }"; + } + + /** + * Adds the PHP code to return a instance pool key for the passed-in primary key variable names. + * + * @param array $pkphp An array of PHP var names / method calls representing complete pk. + */ + protected function getInstancePoolKeySnippet($pkphp) + { + $pkphp = (array) $pkphp; // make it an array if it is not. + $script = ""; + if (count($pkphp) > 1) { + $script .= "serialize(array("; + $i = 0; + foreach ($pkphp as $pkvar) { + $script .= ($i++ ? ', ' : '') . "(string) $pkvar"; + } + $script .= "))"; + } else { + $script .= "(string) " . $pkphp[0]; + } + return $script; + } + + /** + * Creates a convenience method to add objects to an instance pool. + * @param string &$script The script will be modified in this method. + */ + protected function addAddInstanceToPool(&$script) + { + $table = $this->getTable(); + $script .= " + /** + * Adds an object to the instance pool. + * + * Propel keeps cached copies of objects in an instance pool when they are retrieved + * from the database. In some cases -- especially when you override doSelect*() + * methods in your stub classes -- you may need to explicitly add objects + * to the cache in order to ensure that the same objects are always returned by doSelect*() + * and retrieveByPK*() calls. + * + * @param ".$this->getObjectClassname()." \$value A ".$this->getObjectClassname()." object. + * @param string \$key (optional) key to use for instance map (for performance boost if key was already calculated externally). + */ + public static function addInstanceToPool(".$this->getObjectClassname()." \$obj, \$key = null) + { + if (Propel::isInstancePoolingEnabled()) { + if (\$key === null) {"; + + $pks = $this->getTable()->getPrimaryKey(); + + $php = array(); + foreach ($pks as $pk) { + $php[] = '$obj->get' . $pk->getPhpName() . '()'; + } + $script .= " + \$key = ".$this->getInstancePoolKeySnippet($php).";"; + $script .= " + } // if key === null + self::\$instances[\$key] = \$obj; + } + } +"; + } // addAddInstanceToPool() + + /** + * Creates a convenience method to remove objects form an instance pool. + * @param string &$script The script will be modified in this method. + */ + protected function addRemoveInstanceFromPool(&$script) + { + $table = $this->getTable(); + $script .= " + /** + * Removes an object from the instance pool. + * + * Propel keeps cached copies of objects in an instance pool when they are retrieved + * from the database. In some cases -- especially when you override doDelete + * methods in your stub classes -- you may need to explicitly remove objects + * from the cache in order to prevent returning objects that no longer exist. + * + * @param mixed \$value A ".$this->getObjectClassname()." object or a primary key value. + */ + public static function removeInstanceFromPool(\$value) + {"; + $script .= " + if (Propel::isInstancePoolingEnabled() && \$value !== null) {"; + $pks = $table->getPrimaryKey(); + + $script .= " + if (is_object(\$value) && \$value instanceof ".$this->getObjectClassname().") {"; + + $php = array(); + foreach ($pks as $pk) { + $php[] = '$value->get' . $pk->getPhpName() . '()'; + } + $script .= " + \$key = ".$this->getInstancePoolKeySnippet($php).";"; + + $script .= " + } elseif (".(count($pks) > 1 ? "is_array(\$value) && count(\$value) === " . count($pks) : "is_scalar(\$value)").") { + // assume we've been passed a primary key"; + + if (count($pks) > 1) { + $php = array(); + for ($i=0; $i < count($pks); $i++) { + $php[] = "\$value[$i]"; + } + } else { + $php = '$value'; + } + $script .= " + \$key = ".$this->getInstancePoolKeySnippet($php).";"; + $script .= " + } else { + \$e = new PropelException(\"Invalid value passed to removeInstanceFromPool(). Expected primary key or ".$this->getObjectClassname()." object; got \" . (is_object(\$value) ? get_class(\$value) . ' object.' : var_export(\$value,true))); + throw \$e; + } + + unset(self::\$instances[\$key]); + } + } // removeInstanceFromPool() +"; + } // addRemoveFromInstancePool() + + /** + * Adds method to clear the instance pool. + * @param string &$script The script will be modified in this method. + */ + protected function addClearInstancePool(&$script) + { + $script .= " + /** + * Clear the instance pool. + * + * @return void + */ + public static function clearInstancePool() + { + self::\$instances = array(); + } + "; + } + + /** + * Adds method to clear the instance pool of related tables. + * @param string &$script The script will be modified in this method. + */ + protected function addClearRelatedInstancePool(&$script) + { + $table = $this->getTable(); + $script .= " + /** + * Method to invalidate the instance pool of all tables related to " . $table->getName() . " + * by a foreign key with ON DELETE CASCADE + */ + public static function clearRelatedInstancePool() + {"; + // Handle ON DELETE CASCADE for updating instance pool + + foreach ($table->getReferrers() as $fk) { + + // $fk is the foreign key in the other table, so localTableName will + // actually be the table name of other table + $tblFK = $fk->getTable(); + + $joinedTablePeerBuilder = $this->getNewPeerBuilder($tblFK); + $tblFKPackage = $joinedTablePeerBuilder->getStubPeerBuilder()->getPackage(); + + if (!$tblFK->isForReferenceOnly()) { + // we can't perform operations on tables that are + // not within the schema (i.e. that we have no map for, etc.) + + $fkClassName = $joinedTablePeerBuilder->getObjectClassname(); + + // i'm not sure whether we can allow delete cascade for foreign keys + // within the same table? perhaps we can? + if ( ($fk->getOnDelete() == ForeignKey::CASCADE || $fk->getOnDelete() == ForeignKey::SETNULL ) + && $tblFK->getName() != $table->getName()) { + $script .= " + // invalidate objects in ".$joinedTablePeerBuilder->getPeerClassname()." instance pool, since one or more of them may be deleted by ON DELETE CASCADE rule. + ".$joinedTablePeerBuilder->getPeerClassname()."::clearInstancePool(); +"; + } // if fk is on delete cascade + } // if (! for ref only) + } // foreach + $script .= " + } +"; + } + + /** + * Adds method to get an the instance from the pool, given a key. + * @param string &$script The script will be modified in this method. + */ + protected function addGetInstanceFromPool(&$script) + { + $script .= " + /** + * Retrieves a string version of the primary key from the DB resultset row that can be used to uniquely identify a row in this table. + * + * For tables with a single-column primary key, that simple pkey value will be returned. For tables with + * a multi-column primary key, a serialize()d version of the primary key will be returned. + * + * @param string \$key The key (@see getPrimaryKeyHash()) for this instance. + * @return ".$this->getObjectClassname()." Found object or NULL if 1) no instance exists for specified key or 2) instance pooling has been disabled. + * @see getPrimaryKeyHash() + */ + public static function getInstanceFromPool(\$key) + { + if (Propel::isInstancePoolingEnabled()) { + if (isset(self::\$instances[\$key])) { + return self::\$instances[\$key]; + } + } + return null; // just to be explicit + } + "; + } + + /** + * Adds method to get a version of the primary key that can be used as a unique key for identifier map. + * @param string &$script The script will be modified in this method. + */ + protected function addGetPrimaryKeyHash(&$script) + { + $script .= " + /** + * Retrieves a string version of the primary key from the DB resultset row that can be used to uniquely identify a row in this table. + * + * For tables with a single-column primary key, that simple pkey value will be returned. For tables with + * a multi-column primary key, a serialize()d version of the primary key will be returned. + * + * @param array \$row PropelPDO resultset row. + * @param int \$startcol The 0-based offset for reading from the resultset row. + * @return string A string version of PK or NULL if the components of primary key in result array are all null. + */ + public static function getPrimaryKeyHashFromRow(\$row, \$startcol = 0) + {"; + + // We have to iterate through all the columns so that we know the offset of the primary + // key columns. + $n = 0; + $pk = array(); + $cond = array(); + foreach ($this->getTable()->getColumns() as $col) { + if (!$col->isLazyLoad()) { + if ($col->isPrimaryKey()) { + $part = $n ? "\$row[\$startcol + $n]" : "\$row[\$startcol]"; + $cond[] = $part . " === null"; + $pk[] = $part; + } + $n++; + } + } + + $script .= " + // If the PK cannot be derived from the row, return NULL. + if (".implode(' && ', $cond).") { + return null; + } + return ".$this->getInstancePoolKeySnippet($pk)."; + } +"; + } // addGetPrimaryKeyHash + + /** + * Adds the populateObjects() method. + * @param string &$script The script will be modified in this method. + */ + protected function addPopulateObjects(&$script) + { + $table = $this->getTable(); + $script .= " + /** + * The returned array will contain objects of the default type or + * objects that inherit from the default. + * + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function populateObjects(PDOStatement \$stmt) + { + \$results = array(); + "; + if (!$table->getChildrenColumn()) { + $script .= " + // set the class once to avoid overhead in the loop + \$cls = ".$this->getPeerClassname()."::getOMClass(false);"; + } + + $script .= " + // populate the object(s) + while (\$row = \$stmt->fetch(PDO::FETCH_NUM)) { + \$key = ".$this->getPeerClassname()."::getPrimaryKeyHashFromRow(\$row, 0); + if (null !== (\$obj = ".$this->getPeerClassname()."::getInstanceFromPool(\$key))) { + // We no longer rehydrate the object, since this can cause data loss. + // See http://propel.phpdb.org/trac/ticket/509 + // \$obj->hydrate(\$row, 0, true); // rehydrate + \$results[] = \$obj; + } else {"; + if ($table->getChildrenColumn()) { + $script .= " + // class must be set each time from the record row + \$cls = ".$this->getPeerClassname()."::getOMClass(\$row, 0); + \$cls = substr('.'.\$cls, strrpos('.'.\$cls, '.') + 1); + " . $this->buildObjectInstanceCreationCode('$obj', '$cls') . " + \$obj->hydrate(\$row); + \$results[] = \$obj; + ".$this->getPeerClassname()."::addInstanceToPool(\$obj, \$key);"; + } else { + $script .= " + " . $this->buildObjectInstanceCreationCode('$obj', '$cls') . " + \$obj->hydrate(\$row); + \$results[] = \$obj; + ".$this->getPeerClassname()."::addInstanceToPool(\$obj, \$key);"; + } + $script .= " + } // if key exists + } + \$stmt->closeCursor(); + return \$results; + }"; + } + + /** + * Adds a getOMClass() for non-abstract tables that have inheritance. + * @param string &$script The script will be modified in this method. + */ + protected function addGetOMClass_Inheritance(&$script) + { + $col = $this->getTable()->getChildrenColumn(); + $script .= " + /** + * The returned Class will contain objects of the default type or + * objects that inherit from the default. + * + * @param array \$row PropelPDO result row. + * @param int \$colnum Column to examine for OM class information (first is 0). + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function getOMClass(\$row, \$colnum) + { + try { +"; + if ($col->isEnumeratedClasses()) { + $script .= " + \$omClass = null; + \$classKey = \$row[\$colnum + " . ($col->getPosition() - 1) . "]; + + switch(\$classKey) { +"; + foreach ($col->getChildren() as $child) { + $script .= " + case self::CLASSKEY_".strtoupper($child->getKey()).": + \$omClass = self::CLASSNAME_".strtoupper($child->getKey())."; + break; +"; + } /* foreach */ + $script .= " + default: + \$omClass = self::CLASS_DEFAULT; +"; + $script .= " + } // switch +"; + } else { /* if not enumerated */ + $script .= " + \$omClass = \$row[\$colnum + ".($col->getPosition()-1)."]; + \$omClass = substr('.'.\$omClass, strrpos('.'.\$omClass, '.') + 1); +"; + } + $script .= " + } catch (Exception \$e) { + throw new PropelException('Unable to get OM class.', \$e); + } + return \$omClass; + } +"; + } + + /** + * Adds a getOMClass() signature for abstract tables that have inheritance. + * @param string &$script The script will be modified in this method. + */ + protected function addGetOMClass_Inheritance_Abstract(&$script) + { + $script .= " + /** + * The returned Class will contain objects of the default type or + * objects that inherit from the default. + * + * This method must be overridden by the stub subclass, because + * ".$this->getObjectClassname()." is declared abstract in the schema. + * + * @param ResultSet \$rs ResultSet with pointer to record containing om class. + * @param int \$colnum Column to examine for OM class information (first is 1). + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + abstract public static function getOMClass(); +"; + } + + /** + * Adds a getOMClass() for non-abstract tables that do note use inheritance. + * @param string &$script The script will be modified in this method. + */ + protected function addGetOMClass_NoInheritance(&$script) + { + $script .= " + /** + * The class that the Peer will make instances of. + * + * If \$withPrefix is true, the returned path + * uses a dot-path notation which is tranalted into a path + * relative to a location on the PHP include_path. + * (e.g. path.to.MyClass -> 'path/to/MyClass.php') + * + * @param boolean $withPrefix Whether or not to return the path wit hthe class name + * @return string path.to.ClassName + */ + public static function getOMClass(\$withPrefix = true) + { + return \$withPrefix ? ".$this->getPeerClassname()."::CLASS_DEFAULT : ".$this->getPeerClassname()."::OM_CLASS; + } +"; + } + + /** + * Adds a getOMClass() signature for abstract tables that do not have inheritance. + * @param string &$script The script will be modified in this method. + */ + protected function addGetOMClass_NoInheritance_Abstract(&$script) + { + $script .= " + /** + * The class that the Peer will make instances of. + * + * This method must be overridden by the stub subclass, because + * ".$this->getObjectClassname()." is declared abstract in the schema. + */ + abstract public static function getOMClass(\$withPrefix = true); +"; + } + + /** + * Adds the doInsert() method. + * @param string &$script The script will be modified in this method. + */ + protected function addDoInsert(&$script) + { + $table = $this->getTable(); + $script .= " + /** + * Method perform an INSERT on the database, given a ".$this->getObjectClassname()." or Criteria object. + * + * @param mixed \$values Criteria or ".$this->getObjectClassname()." object containing data that is used to create the INSERT statement. + * @param PropelPDO \$con the PropelPDO connection to use + * @return mixed The new primary key. + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function doInsert(\$values, PropelPDO \$con = null) + { + if (\$con === null) { + \$con = Propel::getConnection(".$this->getPeerClassname()."::DATABASE_NAME, Propel::CONNECTION_WRITE); + } + + if (\$values instanceof Criteria) { + \$criteria = clone \$values; // rename for clarity + } else { + \$criteria = \$values->buildCriteria(); // build Criteria from ".$this->getObjectClassname()." object + } +"; + + foreach ($table->getColumns() as $col) { + $cfc = $col->getPhpName(); + if ($col->isPrimaryKey() && $col->isAutoIncrement() && $table->getIdMethod() != "none" && !$table->isAllowPkInsert()) { + $script .= " + if (\$criteria->containsKey(".$this->getColumnConstant($col).") && \$criteria->keyContainsValue(" . $this->getColumnConstant($col) . ") ) { + throw new PropelException('Cannot insert a value for auto-increment primary key ('.".$this->getColumnConstant($col).".')'); + } +"; + if (!$this->getPlatform()->supportsInsertNullPk()) + { + $script .= " + // remove pkey col since this table uses auto-increment and passing a null value for it is not valid + \$criteria->remove(".$this->getColumnConstant($col)."); +"; + } + } elseif ($col->isPrimaryKey() && $col->isAutoIncrement() && $table->getIdMethod() != "none" && $table->isAllowPkInsert() && !$this->getPlatform()->supportsInsertNullPk()) { + $script .= " + // remove pkey col if it is null since this table does not accept that + if (\$criteria->containsKey(".$this->getColumnConstant($col).") && !\$criteria->keyContainsValue(" . $this->getColumnConstant($col) . ") ) { + \$criteria->remove(".$this->getColumnConstant($col)."); + } +"; + } + } + $script .= " + + // Set the correct dbName + \$criteria->setDbName(self::DATABASE_NAME); + + try { + // use transaction because \$criteria could contain info + // for more than one table (I guess, conceivably) + \$con->beginTransaction(); + \$pk = ".$this->basePeerClassname."::doInsert(\$criteria, \$con); + \$con->commit(); + } catch(PropelException \$e) { + \$con->rollBack(); + throw \$e; + } + + return \$pk; + } +"; + } + + /** + * Adds the doUpdate() method. + * @param string &$script The script will be modified in this method. + */ + protected function addDoUpdate(&$script) + { + $table = $this->getTable(); + $script .= " + /** + * Method perform an UPDATE on the database, given a ".$this->getObjectClassname()." or Criteria object. + * + * @param mixed \$values Criteria or ".$this->getObjectClassname()." object containing data that is used to create the UPDATE statement. + * @param PropelPDO \$con The connection to use (specify PropelPDO connection object to exert more control over transactions). + * @return int The number of affected rows (if supported by underlying database driver). + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function doUpdate(\$values, PropelPDO \$con = null) + { + if (\$con === null) { + \$con = Propel::getConnection(".$this->getPeerClassname()."::DATABASE_NAME, Propel::CONNECTION_WRITE); + } + + \$selectCriteria = new Criteria(self::DATABASE_NAME); + + if (\$values instanceof Criteria) { + \$criteria = clone \$values; // rename for clarity +"; + foreach ($table->getColumns() as $col) { + if ($col->isPrimaryKey()) { + $script .= " + \$comparison = \$criteria->getComparison(".$this->getColumnConstant($col)."); + \$selectCriteria->add(".$this->getColumnConstant($col).", \$criteria->remove(".$this->getColumnConstant($col)."), \$comparison); +"; + } /* if col is prim key */ + } /* foreach */ + + $script .= " + } else { // \$values is ".$this->getObjectClassname()." object + \$criteria = \$values->buildCriteria(); // gets full criteria + \$selectCriteria = \$values->buildPkeyCriteria(); // gets criteria w/ primary key(s) + } + + // set the correct dbName + \$criteria->setDbName(self::DATABASE_NAME); + + return {$this->basePeerClassname}::doUpdate(\$selectCriteria, \$criteria, \$con); + } +"; + } + + /** + * Adds the doDeleteAll() method. + * @param string &$script The script will be modified in this method. + */ + protected function addDoDeleteAll(&$script) + { + $table = $this->getTable(); + $script .= " + /** + * Method to DELETE all rows from the ".$table->getName()." table. + * + * @return int The number of affected rows (if supported by underlying database driver). + */ + public static function doDeleteAll(\$con = null) + { + if (\$con === null) { + \$con = Propel::getConnection(".$this->getPeerClassname()."::DATABASE_NAME, Propel::CONNECTION_WRITE); + } + \$affectedRows = 0; // initialize var to track total num of affected rows + try { + // use transaction because \$criteria could contain info + // for more than one table or we could emulating ON DELETE CASCADE, etc. + \$con->beginTransaction(); + "; + if ($this->isDeleteCascadeEmulationNeeded()) { + $script .="\$affectedRows += ".$this->getPeerClassname()."::doOnDeleteCascade(new Criteria(".$this->getPeerClassname()."::DATABASE_NAME), \$con); + "; + } + if ($this->isDeleteSetNullEmulationNeeded()) { + $script .= $this->getPeerClassname() . "::doOnDeleteSetNull(new Criteria(".$this->getPeerClassname() . "::DATABASE_NAME), \$con); + "; + } + $script .= "\$affectedRows += {$this->basePeerClassname}::doDeleteAll(".$this->getPeerClassname()."::TABLE_NAME, \$con); + // Because this db requires some delete cascade/set null emulation, we have to + // clear the cached instance *after* the emulation has happened (since + // instances get re-added by the select statement contained therein). + ".$this->getPeerClassname()."::clearInstancePool(); + ".$this->getPeerClassname()."::clearRelatedInstancePool(); + \$con->commit(); + return \$affectedRows; + } catch (PropelException \$e) { + \$con->rollBack(); + throw \$e; + } + } +"; + } + + /** + * Adds the doDelete() method. + * @param string &$script The script will be modified in this method. + */ + protected function addDoDelete(&$script) + { + $table = $this->getTable(); + $emulateCascade = $this->isDeleteCascadeEmulationNeeded() || $this->isDeleteSetNullEmulationNeeded(); + $script .= " + /** + * Method perform a DELETE on the database, given a ".$this->getObjectClassname()." or Criteria object OR a primary key value. + * + * @param mixed \$values Criteria or ".$this->getObjectClassname()." object or primary key or array of primary keys + * which is used to create the DELETE statement + * @param PropelPDO \$con the connection to use + * @return int The number of affected rows (if supported by underlying database driver). This includes CASCADE-related rows + * if supported by native driver or if emulated using Propel. + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function doDelete(\$values, PropelPDO \$con = null) + { + if (\$con === null) { + \$con = Propel::getConnection(".$this->getPeerClassname()."::DATABASE_NAME, Propel::CONNECTION_WRITE); + } + + if (\$values instanceof Criteria) {"; + if (!$emulateCascade) { + $script .= " + // invalidate the cache for all objects of this type, since we have no + // way of knowing (without running a query) what objects should be invalidated + // from the cache based on this Criteria. + ".$this->getPeerClassname()."::clearInstancePool();"; + } + $script .= " + // rename for clarity + \$criteria = clone \$values; + } elseif (\$values instanceof ".$this->getObjectClassname().") { // it's a model object"; + if (!$emulateCascade) { + $script .= " + // invalidate the cache for this single object + ".$this->getPeerClassname()."::removeInstanceFromPool(\$values);"; + } + if (count($table->getPrimaryKey()) > 0) { + $script .= " + // create criteria based on pk values + \$criteria = \$values->buildPkeyCriteria();"; + } else { + $script .= " + // create criteria based on pk value + \$criteria = \$values->buildCriteria();"; + } + + $script .= " + } else { // it's a primary key, or an array of pks"; + $script .= " + \$criteria = new Criteria(self::DATABASE_NAME);"; + + if (count($table->getPrimaryKey()) === 1) { + $pkey = $table->getPrimaryKey(); + $col = array_shift($pkey); + $script .= " + \$criteria->add(".$this->getColumnConstant($col).", (array) \$values, Criteria::IN);"; + if (!$emulateCascade) { + $script .= " + // invalidate the cache for this object(s) + foreach ((array) \$values as \$singleval) { + ".$this->getPeerClassname()."::removeInstanceFromPool(\$singleval); + }"; + } + } else { + $script .= " + // primary key is composite; we therefore, expect + // the primary key passed to be an array of pkey values + if (count(\$values) == count(\$values, COUNT_RECURSIVE)) { + // array is not multi-dimensional + \$values = array(\$values); + } + foreach (\$values as \$value) {"; + $i=0; + foreach ($table->getPrimaryKey() as $col) { + if ($i == 0) { + $script .= " + \$criterion = \$criteria->getNewCriterion(".$this->getColumnConstant($col).", \$value[$i]);"; + } else { + $script .= " + \$criterion->addAnd(\$criteria->getNewCriterion(".$this->getColumnConstant($col).", \$value[$i]));"; + } + $i++; + } + $script .= " + \$criteria->addOr(\$criterion);"; + if (!$emulateCascade) { + $script .= " + // we can invalidate the cache for this single PK + ".$this->getPeerClassname()."::removeInstanceFromPool(\$value);"; + } + $script .= " + }"; + } /* if count(table->getPrimaryKeys()) */ + + $script .= " + } + + // Set the correct dbName + \$criteria->setDbName(self::DATABASE_NAME); + + \$affectedRows = 0; // initialize var to track total num of affected rows + + try { + // use transaction because \$criteria could contain info + // for more than one table or we could emulating ON DELETE CASCADE, etc. + \$con->beginTransaction(); + "; + + if ($this->isDeleteCascadeEmulationNeeded()) { + $script .= "\$affectedRows += ".$this->getPeerClassname()."::doOnDeleteCascade(\$criteria, \$con); + "; + } + if ($this->isDeleteSetNullEmulationNeeded()) { + $script .= $this->getPeerClassname() . "::doOnDeleteSetNull(\$criteria, \$con); + "; + } + + if ($emulateCascade) { + $script .= " + // Because this db requires some delete cascade/set null emulation, we have to + // clear the cached instance *after* the emulation has happened (since + // instances get re-added by the select statement contained therein). + if (\$values instanceof Criteria) { + ".$this->getPeerClassname()."::clearInstancePool(); + } elseif (\$values instanceof ".$this->getObjectClassname().") { // it's a model object + ".$this->getPeerClassname()."::removeInstanceFromPool(\$values); + } else { // it's a primary key, or an array of pks + foreach ((array) \$values as \$singleval) { + ".$this->getPeerClassname()."::removeInstanceFromPool(\$singleval); + } + } + "; + } + + $script .= " + \$affectedRows += {$this->basePeerClassname}::doDelete(\$criteria, \$con); + ".$this->getPeerClassname()."::clearRelatedInstancePool(); + \$con->commit(); + return \$affectedRows; + } catch (PropelException \$e) { + \$con->rollBack(); + throw \$e; + } + } +"; + } + + /** + * Adds the doOnDeleteCascade() method, which provides ON DELETE CASCADE emulation. + * @param string &$script The script will be modified in this method. + */ + protected function addDoOnDeleteCascade(&$script) + { + $table = $this->getTable(); + $script .= " + /** + * This is a method for emulating ON DELETE CASCADE for DBs that don't support this + * feature (like MySQL or SQLite). + * + * This method is not very speedy because it must perform a query first to get + * the implicated records and then perform the deletes by calling those Peer classes. + * + * This method should be used within a transaction if possible. + * + * @param Criteria \$criteria + * @param PropelPDO \$con + * @return int The number of affected rows (if supported by underlying database driver). + */ + protected static function doOnDeleteCascade(Criteria \$criteria, PropelPDO \$con) + { + // initialize var to track total num of affected rows + \$affectedRows = 0; + + // first find the objects that are implicated by the \$criteria + \$objects = ".$this->getPeerClassname()."::doSelect(\$criteria, \$con); + foreach (\$objects as \$obj) { +"; + + foreach ($table->getReferrers() as $fk) { + + // $fk is the foreign key in the other table, so localTableName will + // actually be the table name of other table + $tblFK = $fk->getTable(); + + $joinedTablePeerBuilder = $this->getNewPeerBuilder($tblFK); + $tblFKPackage = $joinedTablePeerBuilder->getStubPeerBuilder()->getPackage(); + + if (!$tblFK->isForReferenceOnly()) { + // we can't perform operations on tables that are + // not within the schema (i.e. that we have no map for, etc.) + + $fkClassName = $joinedTablePeerBuilder->getObjectClassname(); + + // i'm not sure whether we can allow delete cascade for foreign keys + // within the same table? perhaps we can? + if ( $fk->getOnDelete() == ForeignKey::CASCADE && $tblFK->getName() != $table->getName()) { + + // backwards on purpose + $columnNamesF = $fk->getLocalColumns(); + $columnNamesL = $fk->getForeignColumns(); + + $script .= " + + // delete related $fkClassName objects + \$criteria = new Criteria(".$joinedTablePeerBuilder->getPeerClassname()."::DATABASE_NAME); + "; + for ($x=0,$xlen=count($columnNamesF); $x < $xlen; $x++) { + $columnFK = $tblFK->getColumn($columnNamesF[$x]); + $columnL = $table->getColumn($columnNamesL[$x]); + + $script .= " + \$criteria->add(".$joinedTablePeerBuilder->getColumnConstant($columnFK) .", \$obj->get".$columnL->getPhpName()."());"; + } + + $script .= " + \$affectedRows += ".$joinedTablePeerBuilder->getPeerClassname()."::doDelete(\$criteria, \$con);"; + + } // if cascade && fkey table name != curr table name + + } // if not for ref only + } // foreach foreign keys + $script .= " + } + return \$affectedRows; + } +"; + } // end addDoOnDeleteCascade + + /** + * Adds the doOnDeleteSetNull() method, which provides ON DELETE SET NULL emulation. + * @param string &$script The script will be modified in this method. + */ + protected function addDoOnDeleteSetNull(&$script) + { + $table = $this->getTable(); + $script .= " + /** + * This is a method for emulating ON DELETE SET NULL DBs that don't support this + * feature (like MySQL or SQLite). + * + * This method is not very speedy because it must perform a query first to get + * the implicated records and then perform the deletes by calling those Peer classes. + * + * This method should be used within a transaction if possible. + * + * @param Criteria \$criteria + * @param PropelPDO \$con + * @return void + */ + protected static function doOnDeleteSetNull(Criteria \$criteria, PropelPDO \$con) + { + + // first find the objects that are implicated by the \$criteria + \$objects = ".$this->getPeerClassname()."::doSelect(\$criteria, \$con); + foreach (\$objects as \$obj) { +"; + + // This logic is almost exactly the same as that in doOnDeleteCascade() + // it may make sense to refactor this, provided that thigns don't + // get too complicated. + + foreach ($table->getReferrers() as $fk) { + + // $fk is the foreign key in the other table, so localTableName will + // actually be the table name of other table + $tblFK = $fk->getTable(); + $refTablePeerBuilder = $this->getNewPeerBuilder($tblFK); + + if (!$tblFK->isForReferenceOnly()) { + // we can't perform operations on tables that are + // not within the schema (i.e. that we have no map for, etc.) + + $fkClassName = $refTablePeerBuilder->getObjectClassname(); + + // i'm not sure whether we can allow delete setnull for foreign keys + // within the same table? perhaps we can? + if ( $fk->getOnDelete() == ForeignKey::SETNULL && + $fk->getTable()->getName() != $table->getName()) { + + // backwards on purpose + $columnNamesF = $fk->getLocalColumns(); + $columnNamesL = $fk->getForeignColumns(); // should be same num as foreign + $script .= " + // set fkey col in related $fkClassName rows to NULL + \$selectCriteria = new Criteria(".$this->getPeerClassname()."::DATABASE_NAME); + \$updateValues = new Criteria(".$this->getPeerClassname()."::DATABASE_NAME);"; + + for ($x=0,$xlen=count($columnNamesF); $x < $xlen; $x++) { + $columnFK = $tblFK->getColumn($columnNamesF[$x]); + $columnL = $table->getColumn($columnNamesL[$x]); + $script .= " + \$selectCriteria->add(".$refTablePeerBuilder->getColumnConstant($columnFK).", \$obj->get".$columnL->getPhpName()."()); + \$updateValues->add(".$refTablePeerBuilder->getColumnConstant($columnFK).", null); +"; + } + + $script .= " + {$this->basePeerClassname}::doUpdate(\$selectCriteria, \$updateValues, \$con); // use BasePeer because generated Peer doUpdate() methods only update using pkey +"; + } // if setnull && fkey table name != curr table name + } // if not for ref only + } // foreach foreign keys + + $script .= " + } + } +"; + } + + /** + * Adds the doValidate() method. + * @param string &$script The script will be modified in this method. + */ + protected function addDoValidate(&$script) + { + $table = $this->getTable(); + $script .= " + /** + * Validates all modified columns of given ".$this->getObjectClassname()." object. + * If parameter \$columns is either a single column name or an array of column names + * than only those columns are validated. + * + * NOTICE: This does not apply to primary or foreign keys for now. + * + * @param ".$this->getObjectClassname()." \$obj The object to validate. + * @param mixed \$cols Column name or array of column names. + * + * @return mixed TRUE if all columns are valid or the error message of the first invalid column. + */ + public static function doValidate(".$this->getObjectClassname()." \$obj, \$cols = null) + { + \$columns = array(); + + if (\$cols) { + \$dbMap = Propel::getDatabaseMap(".$this->getPeerClassname()."::DATABASE_NAME); + \$tableMap = \$dbMap->getTable(".$this->getPeerClassname()."::TABLE_NAME); + + if (! is_array(\$cols)) { + \$cols = array(\$cols); + } + + foreach (\$cols as \$colName) { + if (\$tableMap->containsColumn(\$colName)) { + \$get = 'get' . \$tableMap->getColumn(\$colName)->getPhpName(); + \$columns[\$colName] = \$obj->\$get(); + } + } + } else { +"; + foreach ($table->getValidators() as $val) { + $col = $val->getColumn(); + if (!$col->isAutoIncrement()) { + $script .= " + if (\$obj->isNew() || \$obj->isColumnModified(".$this->getColumnConstant($col).")) + \$columns[".$this->getColumnConstant($col)."] = \$obj->get".$col->getPhpName()."(); +"; + } // if + } // foreach + + $script .= " + } + + return {$this->basePeerClassname}::doValidate(".$this->getPeerClassname()."::DATABASE_NAME, ".$this->getPeerClassname()."::TABLE_NAME, \$columns); + } +"; + } // end addDoValidate() + + /** + * Adds the retrieveByPK method for tables with single-column primary key. + * @param string &$script The script will be modified in this method. + */ + protected function addRetrieveByPK_SinglePK(&$script) + { + $table = $this->getTable(); + $pks = $table->getPrimaryKey(); + $col = $pks[0]; + + $script .= " + /** + * Retrieve a single object by pkey. + * + * @param ".$col->getPhpType()." \$pk the primary key. + * @param PropelPDO \$con the connection to use + * @return " .$this->getObjectClassname(). " + */ + public static function ".$this->getRetrieveMethodName()."(\$pk, PropelPDO \$con = null) + { + + if (null !== (\$obj = ".$this->getPeerClassname()."::getInstanceFromPool(".$this->getInstancePoolKeySnippet('$pk')."))) { + return \$obj; + } + + if (\$con === null) { + \$con = Propel::getConnection(".$this->getPeerClassname()."::DATABASE_NAME, Propel::CONNECTION_READ); + } + + \$criteria = new Criteria(".$this->getPeerClassname()."::DATABASE_NAME); + \$criteria->add(".$this->getColumnConstant($col).", \$pk); + + \$v = ".$this->getPeerClassname()."::doSelect(\$criteria, \$con); + + return !empty(\$v) > 0 ? \$v[0] : null; + } +"; + } + + /** + * Adds the retrieveByPKs method for tables with single-column primary key. + * @param string &$script The script will be modified in this method. + */ + protected function addRetrieveByPKs_SinglePK(&$script) + { + $table = $this->getTable(); + $script .= " + /** + * Retrieve multiple objects by pkey. + * + * @param array \$pks List of primary keys + * @param PropelPDO \$con the connection to use + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function ".$this->getRetrieveMethodName()."s(\$pks, PropelPDO \$con = null) + { + if (\$con === null) { + \$con = Propel::getConnection(".$this->getPeerClassname()."::DATABASE_NAME, Propel::CONNECTION_READ); + } + + \$objs = null; + if (empty(\$pks)) { + \$objs = array(); + } else { + \$criteria = new Criteria(".$this->getPeerClassname()."::DATABASE_NAME);"; + $k1 = $table->getPrimaryKey(); + $script .= " + \$criteria->add(".$this->getColumnConstant($k1[0]).", \$pks, Criteria::IN);"; + $script .= " + \$objs = ".$this->getPeerClassname()."::doSelect(\$criteria, \$con); + } + return \$objs; + } +"; + } + + /** + * Adds the retrieveByPK method for tables with multi-column primary key. + * @param string &$script The script will be modified in this method. + */ + protected function addRetrieveByPK_MultiPK(&$script) + { + $table = $this->getTable(); + $script .= " + /** + * Retrieve object using using composite pkey values."; + foreach ($table->getPrimaryKey() as $col) { + $clo = strtolower($col->getName()); + $cptype = $col->getPhpType(); + $script .= " + * @param $cptype $".$clo; + } + $script .= " + * @param PropelPDO \$con + * @return ".$this->getObjectClassname()." + */ + public static function ".$this->getRetrieveMethodName()."("; + + $php = array(); + foreach ($table->getPrimaryKey() as $col) { + $clo = strtolower($col->getName()); + $php[] = '$' . $clo; + } /* foreach */ + + $script .= implode(', ', $php); + + $script .= ", PropelPDO \$con = null) { + \$key = ".$this->getInstancePoolKeySnippet($php).";"; + $script .= " + if (null !== (\$obj = ".$this->getPeerClassname()."::getInstanceFromPool(\$key))) { + return \$obj; + } + + if (\$con === null) { + \$con = Propel::getConnection(".$this->getPeerClassname()."::DATABASE_NAME, Propel::CONNECTION_READ); + } + \$criteria = new Criteria(".$this->getPeerClassname()."::DATABASE_NAME);"; + foreach ($table->getPrimaryKey() as $col) { + $clo = strtolower($col->getName()); + $script .= " + \$criteria->add(".$this->getColumnConstant($col).", $".$clo.");"; + } + $script .= " + \$v = ".$this->getPeerClassname()."::doSelect(\$criteria, \$con); + + return !empty(\$v) ? \$v[0] : null; + }"; + } + + /** + * Adds the getTableMap() method which is a convenience method for apps to get DB metadata. + * @param string &$script The script will be modified in this method. + */ + protected function addGetTableMap(&$script) + { + $script .= " + /** + * Returns the TableMap related to this peer. + * This method is not needed for general use but a specific application could have a need. + * @return TableMap + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function getTableMap() + { + return Propel::getDatabaseMap(self::DATABASE_NAME)->getTable(self::TABLE_NAME); + } +"; + } + + /** + * Adds the complex OM methods to the base addSelectMethods() function. + * @param string &$script The script will be modified in this method. + * @see PeerBuilder::addSelectMethods() + */ + protected function addSelectMethods(&$script) + { + $table = $this->getTable(); + + parent::addSelectMethods($script); + + $this->addDoCountJoin($script); + $this->addDoSelectJoin($script); + + $countFK = count($table->getForeignKeys()); + + $includeJoinAll = true; + + foreach ($this->getTable()->getForeignKeys() as $fk) { + $tblFK = $table->getDatabase()->getTable($fk->getForeignTableName()); + if ($tblFK->isForReferenceOnly()) { + $includeJoinAll = false; + } + } + + if ($includeJoinAll) { + if ($countFK > 0) { + $this->addDoCountJoinAll($script); + $this->addDoSelectJoinAll($script); + } + if ($countFK > 1) { + $this->addDoCountJoinAllExcept($script); + $this->addDoSelectJoinAllExcept($script); + } + } + + } + + /** + * Get the column offsets of the primary key(s) for specified table. + * + * @param Table $tbl + * @return array int[] The column offsets of the primary key(s). + */ + protected function getPrimaryKeyColOffsets(Table $tbl) + { + $offsets = array(); + $idx = 0; + foreach ($tbl->getColumns() as $col) { + if ($col->isPrimaryKey()) { + $offsets[] = $idx; + } + $idx++; + } + return $offsets; + } + + public function addCriteriaJoin($fk, $table, $joinTable, $joinedTablePeerBuilder) + { + $script = ''; + $lfMap = $fk->getLocalForeignMapping(); + $lftCols = $fk->getLocalColumns(); + if (count($lftCols) == 1) + { + // simple foreign key + $lftCol = $lftCols[0]; + $script .= sprintf(" + \$criteria->addJoin(%s, %s, \$join_behavior);\n", + $this->getColumnConstant($table->getColumn($lftCol) ), + $joinedTablePeerBuilder->getColumnConstant($joinTable->getColumn( $lfMap[$lftCol] ) )); + } + else + { + // composite foreign key + $script .= " + \$criteria->addMultipleJoin(array(\n"; + foreach ($lftCols as $columnName ) { + $script .= sprintf(" array(%s, %s),\n", + $this->getColumnConstant($table->getColumn($columnName) ), + $joinedTablePeerBuilder->getColumnConstant($joinTable->getColumn( $lfMap[$columnName] ) ) + ); + } + $script .= " ), \$join_behavior);\n"; + } + return $script; + } + + /** + * Adds the doSelectJoin*() methods. + * @param string &$script The script will be modified in this method. + */ + protected function addDoSelectJoin(&$script) + { + $table = $this->getTable(); + $className = $this->getObjectClassname(); + $countFK = count($table->getForeignKeys()); + $join_behavior = $this->getJoinBehavior(); + + if ($countFK >= 1) { + + foreach ($table->getForeignKeys() as $fk) { + + $joinTable = $table->getDatabase()->getTable($fk->getForeignTableName()); + + if (!$joinTable->isForReferenceOnly()) { + + // This condition is necessary because Propel lacks a system for + // aliasing the table if it is the same table. + if ( $fk->getForeignTableName() != $table->getName() ) { + + $thisTableObjectBuilder = $this->getNewObjectBuilder($table); + $joinedTableObjectBuilder = $this->getNewObjectBuilder($joinTable); + $joinedTablePeerBuilder = $this->getNewPeerBuilder($joinTable); + + $joinClassName = $joinedTableObjectBuilder->getObjectClassname(); + + $script .= " + + /** + * Selects a collection of $className objects pre-filled with their $joinClassName objects. + * @param Criteria \$criteria + * @param PropelPDO \$con + * @param String \$join_behavior the type of joins to use, defaults to $join_behavior + * @return array Array of $className objects. + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function doSelectJoin".$thisTableObjectBuilder->getFKPhpNameAffix($fk, $plural = false)."(Criteria \$criteria, \$con = null, \$join_behavior = $join_behavior) + { + \$criteria = clone \$criteria; + + // Set the correct dbName if it has not been overridden + if (\$criteria->getDbName() == Propel::getDefaultDB()) { + \$criteria->setDbName(self::DATABASE_NAME); + } + + ".$this->getPeerClassname()."::addSelectColumns(\$criteria); + \$startcol = (".$this->getPeerClassname()."::NUM_COLUMNS - ".$this->getPeerClassname()."::NUM_LAZY_LOAD_COLUMNS); + ".$joinedTablePeerBuilder->getPeerClassname()."::addSelectColumns(\$criteria); +"; + + $script .= $this->addCriteriaJoin($fk, $table, $joinTable, $joinedTablePeerBuilder); + + // apply behaviors + $this->applyBehaviorModifier('preSelect', $script); + + $script .= " + \$stmt = ".$this->basePeerClassname."::doSelect(\$criteria, \$con); + \$results = array(); + + while (\$row = \$stmt->fetch(PDO::FETCH_NUM)) { + \$key1 = ".$this->getPeerClassname()."::getPrimaryKeyHashFromRow(\$row, 0); + if (null !== (\$obj1 = ".$this->getPeerClassname()."::getInstanceFromPool(\$key1))) { + // We no longer rehydrate the object, since this can cause data loss. + // See http://propel.phpdb.org/trac/ticket/509 + // \$obj1->hydrate(\$row, 0, true); // rehydrate + } else { +"; + if ($table->getChildrenColumn()) { + $script .= " + \$omClass = ".$this->getPeerClassname()."::getOMClass(\$row, 0); + \$cls = substr('.'.\$omClass, strrpos('.'.\$omClass, '.') + 1); +"; + } else { + $script .= " + \$cls = ".$this->getPeerClassname()."::getOMClass(false); +"; + } + $script .= " + " . $this->buildObjectInstanceCreationCode('$obj1', '$cls') . " + \$obj1->hydrate(\$row); + ".$this->getPeerClassname()."::addInstanceToPool(\$obj1, \$key1); + } // if \$obj1 already loaded + + \$key2 = ".$joinedTablePeerBuilder->getPeerClassname()."::getPrimaryKeyHashFromRow(\$row, \$startcol); + if (\$key2 !== null) { + \$obj2 = ".$joinedTablePeerBuilder->getPeerClassname()."::getInstanceFromPool(\$key2); + if (!\$obj2) { +"; + if ($joinTable->getChildrenColumn()) { + $script .= " + \$omClass = ".$joinedTablePeerBuilder->getPeerClassname()."::getOMClass(\$row, \$startcol); + \$cls = substr('.'.\$omClass, strrpos('.'.\$omClass, '.') + 1); +"; + } else { + $script .= " + \$cls = ".$joinedTablePeerBuilder->getPeerClassname()."::getOMClass(false); +"; + } + + $script .= " + " . $this->buildObjectInstanceCreationCode('$obj2', '$cls') . " + \$obj2->hydrate(\$row, \$startcol); + ".$joinedTablePeerBuilder->getPeerClassname()."::addInstanceToPool(\$obj2, \$key2); + } // if obj2 already loaded + + // Add the \$obj1 (".$this->getObjectClassname().") to \$obj2 (".$joinedTablePeerBuilder->getObjectClassname().")"; + if ($fk->isLocalPrimaryKey()) { + $script .= " + // one to one relationship + \$obj1->set" . $joinedTablePeerBuilder->getObjectClassname() . "(\$obj2);"; + } else { + $script .= " + \$obj2->add" . $joinedTableObjectBuilder->getRefFKPhpNameAffix($fk, $plural = false)."(\$obj1);"; + } + $script .= " + + } // if joined row was not null + + \$results[] = \$obj1; + } + \$stmt->closeCursor(); + return \$results; + } +"; + } // if fk table name != this table name + } // if ! is reference only + } // foreach column + } // if count(fk) > 1 + + } // addDoSelectJoin() + + /** + * Adds the doCountJoin*() methods. + * @param string &$script The script will be modified in this method. + */ + protected function addDoCountJoin(&$script) + { + $table = $this->getTable(); + $className = $this->getObjectClassname(); + $countFK = count($table->getForeignKeys()); + $join_behavior = $this->getJoinBehavior(); + + if ($countFK >= 1) { + + foreach ($table->getForeignKeys() as $fk) { + + $joinTable = $table->getDatabase()->getTable($fk->getForeignTableName()); + + if (!$joinTable->isForReferenceOnly()) { + + if ( $fk->getForeignTableName() != $table->getName() ) { + + $thisTableObjectBuilder = $this->getNewObjectBuilder($table); + $joinedTableObjectBuilder = $this->getNewObjectBuilder($joinTable); + $joinedTablePeerBuilder = $this->getNewPeerBuilder($joinTable); + + $joinClassName = $joinedTableObjectBuilder->getObjectClassname(); + + $script .= " + + /** + * Returns the number of rows matching criteria, joining the related ".$thisTableObjectBuilder->getFKPhpNameAffix($fk, $plural = false)." table + * + * @param Criteria \$criteria + * @param boolean \$distinct Whether to select only distinct columns; deprecated: use Criteria->setDistinct() instead. + * @param PropelPDO \$con + * @param String \$join_behavior the type of joins to use, defaults to $join_behavior + * @return int Number of matching rows. + */ + public static function doCountJoin".$thisTableObjectBuilder->getFKPhpNameAffix($fk, $plural = false)."(Criteria \$criteria, \$distinct = false, PropelPDO \$con = null, \$join_behavior = $join_behavior) + { + // we're going to modify criteria, so copy it first + \$criteria = clone \$criteria; + + // We need to set the primary table name, since in the case that there are no WHERE columns + // it will be impossible for the BasePeer::createSelectSql() method to determine which + // tables go into the FROM clause. + \$criteria->setPrimaryTableName(".$this->getPeerClassname()."::TABLE_NAME); + + if (\$distinct && !in_array(Criteria::DISTINCT, \$criteria->getSelectModifiers())) { + \$criteria->setDistinct(); + } + + if (!\$criteria->hasSelectClause()) { + ".$this->getPeerClassname()."::addSelectColumns(\$criteria); + } + + \$criteria->clearOrderByColumns(); // ORDER BY won't ever affect the count + + // Set the correct dbName + \$criteria->setDbName(self::DATABASE_NAME); + + if (\$con === null) { + \$con = Propel::getConnection(".$this->getPeerClassname()."::DATABASE_NAME, Propel::CONNECTION_READ); + } +"; + $script .= $this->addCriteriaJoin($fk, $table, $joinTable, $joinedTablePeerBuilder); + + // apply behaviors + $this->applyBehaviorModifier('preSelect', $script); + + $script .= " + \$stmt = ".$this->basePeerClassname."::doCount(\$criteria, \$con); + + if (\$row = \$stmt->fetch(PDO::FETCH_NUM)) { + \$count = (int) \$row[0]; + } else { + \$count = 0; // no rows returned; we infer that means 0 matches. + } + \$stmt->closeCursor(); + return \$count; + } +"; + } // if fk table name != this table name + } // if ! is reference only + } // foreach column + } // if count(fk) > 1 + + } // addDoCountJoin() + + /** + * Adds the doSelectJoinAll() method. + * @param string &$script The script will be modified in this method. + */ + protected function addDoSelectJoinAll(&$script) + { + $table = $this->getTable(); + $className = $this->getObjectClassname(); + $join_behavior = $this->getJoinBehavior(); + + $script .= " + + /** + * Selects a collection of $className objects pre-filled with all related objects. + * + * @param Criteria \$criteria + * @param PropelPDO \$con + * @param String \$join_behavior the type of joins to use, defaults to $join_behavior + * @return array Array of $className objects. + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function doSelectJoinAll(Criteria \$criteria, \$con = null, \$join_behavior = $join_behavior) + { + \$criteria = clone \$criteria; + + // Set the correct dbName if it has not been overridden + if (\$criteria->getDbName() == Propel::getDefaultDB()) { + \$criteria->setDbName(self::DATABASE_NAME); + } + + ".$this->getPeerClassname()."::addSelectColumns(\$criteria); + \$startcol2 = (".$this->getPeerClassname()."::NUM_COLUMNS - ".$this->getPeerClassname()."::NUM_LAZY_LOAD_COLUMNS); +"; + $index = 2; + foreach ($table->getForeignKeys() as $fk) { + + // Want to cover this case, but the code is not there yet. + // Propel lacks a system for aliasing tables of the same name. + if ( $fk->getForeignTableName() != $table->getName() ) { + $joinTable = $table->getDatabase()->getTable($fk->getForeignTableName()); + $new_index = $index + 1; + + $joinedTablePeerBuilder = $this->getNewPeerBuilder($joinTable); + $joinClassName = $joinedTablePeerBuilder->getObjectClassname(); + + $script .= " + ".$joinedTablePeerBuilder->getPeerClassname()."::addSelectColumns(\$criteria); + \$startcol$new_index = \$startcol$index + (".$joinedTablePeerBuilder->getPeerClassname()."::NUM_COLUMNS - ".$joinedTablePeerBuilder->getPeerClassname()."::NUM_LAZY_LOAD_COLUMNS); +"; + $index = $new_index; + + } // if fk->getForeignTableName != table->getName + } // foreach [sub] foreign keys + + foreach ($table->getForeignKeys() as $fk) { + // want to cover this case, but the code is not there yet. + if ( $fk->getForeignTableName() != $table->getName() ) { + $joinTable = $table->getDatabase()->getTable($fk->getForeignTableName()); + $joinedTablePeerBuilder = $this->getNewPeerBuilder($joinTable); + $script .= $this->addCriteriaJoin($fk, $table, $joinTable, $joinedTablePeerBuilder); + } + } + + // apply behaviors + $this->applyBehaviorModifier('preSelect', $script); + + $script .= " + \$stmt = ".$this->basePeerClassname."::doSelect(\$criteria, \$con); + \$results = array(); + + while (\$row = \$stmt->fetch(PDO::FETCH_NUM)) { + \$key1 = ".$this->getPeerClassname()."::getPrimaryKeyHashFromRow(\$row, 0); + if (null !== (\$obj1 = ".$this->getPeerClassname()."::getInstanceFromPool(\$key1))) { + // We no longer rehydrate the object, since this can cause data loss. + // See http://propel.phpdb.org/trac/ticket/509 + // \$obj1->hydrate(\$row, 0, true); // rehydrate + } else {"; + + if ($table->getChildrenColumn()) { + $script .= " + \$omClass = ".$this->getPeerClassname()."::getOMClass(\$row, 0); + \$cls = substr('.'.\$omClass, strrpos('.'.\$omClass, '.') + 1); +"; + } else { + $script .= " + \$cls = ".$this->getPeerClassname()."::getOMClass(false); +"; + } + + $script .= " + " . $this->buildObjectInstanceCreationCode('$obj1', '$cls') . " + \$obj1->hydrate(\$row); + ".$this->getPeerClassname()."::addInstanceToPool(\$obj1, \$key1); + } // if obj1 already loaded +"; + + $index = 1; + foreach ($table->getForeignKeys() as $fk ) { + // want to cover this case, but the code is not there yet. + // Why not? -because we'd have to alias the tables in the JOIN + if ( $fk->getForeignTableName() != $table->getName() ) { + $joinTable = $table->getDatabase()->getTable($fk->getForeignTableName()); + + $thisTableObjectBuilder = $this->getNewObjectBuilder($table); + $joinedTableObjectBuilder = $this->getNewObjectBuilder($joinTable); + $joinedTablePeerBuilder = $this->getNewPeerBuilder($joinTable); + + + $joinClassName = $joinedTableObjectBuilder->getObjectClassname(); + $interfaceName = $joinClassName; + + if ($joinTable->getInterface()) { + $interfaceName = $this->prefixClassname($joinTable->getInterface()); + } + + $index++; + + $script .= " + // Add objects for joined $joinClassName rows + + \$key$index = ".$joinedTablePeerBuilder->getPeerClassname()."::getPrimaryKeyHashFromRow(\$row, \$startcol$index); + if (\$key$index !== null) { + \$obj$index = ".$joinedTablePeerBuilder->getPeerClassname()."::getInstanceFromPool(\$key$index); + if (!\$obj$index) { +"; + if ($joinTable->getChildrenColumn()) { + $script .= " + \$omClass = ".$joinedTablePeerBuilder->getPeerClassname()."::getOMClass(\$row, \$startcol$index); + \$cls = substr('.'.\$omClass, strrpos('.'.\$omClass, '.') + 1); +"; + } else { + $script .= " + \$cls = ".$joinedTablePeerBuilder->getPeerClassname()."::getOMClass(false); +"; + } /* $joinTable->getChildrenColumn() */ + + $script .= " + " . $this->buildObjectInstanceCreationCode('$obj' . $index, '$cls') . " + \$obj".$index."->hydrate(\$row, \$startcol$index); + ".$joinedTablePeerBuilder->getPeerClassname()."::addInstanceToPool(\$obj$index, \$key$index); + } // if obj$index loaded + + // Add the \$obj1 (".$this->getObjectClassname().") to the collection in \$obj".$index." (".$joinedTablePeerBuilder->getObjectClassname().")"; + if ($fk->isLocalPrimaryKey()) { + $script .= " + \$obj1->set".$joinedTablePeerBuilder->getObjectClassname()."(\$obj".$index.");"; + } else { + $script .= " + \$obj".$index."->add".$joinedTableObjectBuilder->getRefFKPhpNameAffix($fk, $plural = false)."(\$obj1);"; + } + $script .= " + } // if joined row not null +"; + + } // $fk->getForeignTableName() != $table->getName() + } //foreach foreign key + + $script .= " + \$results[] = \$obj1; + } + \$stmt->closeCursor(); + return \$results; + } +"; + + } // end addDoSelectJoinAll() + + + /** + * Adds the doCountJoinAll() method. + * @param string &$script The script will be modified in this method. + */ + protected function addDoCountJoinAll(&$script) + { + $table = $this->getTable(); + $className = $this->getObjectClassname(); + $join_behavior = $this->getJoinBehavior(); + + $script .= " + + /** + * Returns the number of rows matching criteria, joining all related tables + * + * @param Criteria \$criteria + * @param boolean \$distinct Whether to select only distinct columns; deprecated: use Criteria->setDistinct() instead. + * @param PropelPDO \$con + * @param String \$join_behavior the type of joins to use, defaults to $join_behavior + * @return int Number of matching rows. + */ + public static function doCountJoinAll(Criteria \$criteria, \$distinct = false, PropelPDO \$con = null, \$join_behavior = $join_behavior) + { + // we're going to modify criteria, so copy it first + \$criteria = clone \$criteria; + + // We need to set the primary table name, since in the case that there are no WHERE columns + // it will be impossible for the BasePeer::createSelectSql() method to determine which + // tables go into the FROM clause. + \$criteria->setPrimaryTableName(".$this->getPeerClassname()."::TABLE_NAME); + + if (\$distinct && !in_array(Criteria::DISTINCT, \$criteria->getSelectModifiers())) { + \$criteria->setDistinct(); + } + + if (!\$criteria->hasSelectClause()) { + ".$this->getPeerClassname()."::addSelectColumns(\$criteria); + } + + \$criteria->clearOrderByColumns(); // ORDER BY won't ever affect the count + + // Set the correct dbName + \$criteria->setDbName(self::DATABASE_NAME); + + if (\$con === null) { + \$con = Propel::getConnection(".$this->getPeerClassname()."::DATABASE_NAME, Propel::CONNECTION_READ); + } +"; + + foreach ($table->getForeignKeys() as $fk) { + // want to cover this case, but the code is not there yet. + if ( $fk->getForeignTableName() != $table->getName() ) { + $joinTable = $table->getDatabase()->getTable($fk->getForeignTableName()); + $joinedTablePeerBuilder = $this->getNewPeerBuilder($joinTable); + $script .= $this->addCriteriaJoin($fk, $table, $joinTable, $joinedTablePeerBuilder); + } // if fk->getForeignTableName != table->getName + } // foreach [sub] foreign keys + + // apply behaviors + $this->applyBehaviorModifier('preSelect', $script); + + $script .= " + \$stmt = ".$this->basePeerClassname."::doCount(\$criteria, \$con); + + if (\$row = \$stmt->fetch(PDO::FETCH_NUM)) { + \$count = (int) \$row[0]; + } else { + \$count = 0; // no rows returned; we infer that means 0 matches. + } + \$stmt->closeCursor(); + return \$count; + }"; + } // end addDoCountJoinAll() + + /** + * Adds the doSelectJoinAllExcept*() methods. + * @param string &$script The script will be modified in this method. + */ + protected function addDoSelectJoinAllExcept(&$script) + { + $table = $this->getTable(); + $join_behavior = $this->getJoinBehavior(); + + // ------------------------------------------------------------------------ + // doSelectJoinAllExcept*() + // ------------------------------------------------------------------------ + + // 2) create a bunch of doSelectJoinAllExcept*() methods + // -- these were existing in original Torque, so we should keep them for compatibility + + $fkeys = $table->getForeignKeys(); // this sep assignment is necessary otherwise sub-loops over + // getForeignKeys() will cause this to only execute one time. + foreach ($fkeys as $fk ) { + + $tblFK = $table->getDatabase()->getTable($fk->getForeignTableName()); + + $excludedTable = $table->getDatabase()->getTable($fk->getForeignTableName()); + + $thisTableObjectBuilder = $this->getNewObjectBuilder($table); + $excludedTableObjectBuilder = $this->getNewObjectBuilder($excludedTable); + $excludedTablePeerBuilder = $this->getNewPeerBuilder($excludedTable); + + $excludedClassName = $excludedTableObjectBuilder->getObjectClassname(); + + + $script .= " + + /** + * Selects a collection of ".$this->getObjectClassname()." objects pre-filled with all related objects except ".$thisTableObjectBuilder->getFKPhpNameAffix($fk).". + * + * @param Criteria \$criteria + * @param PropelPDO \$con + * @param String \$join_behavior the type of joins to use, defaults to $join_behavior + * @return array Array of ".$this->getObjectClassname()." objects. + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function doSelectJoinAllExcept".$thisTableObjectBuilder->getFKPhpNameAffix($fk, $plural = false)."(Criteria \$criteria, \$con = null, \$join_behavior = $join_behavior) + { + \$criteria = clone \$criteria; + + // Set the correct dbName if it has not been overridden + // \$criteria->getDbName() will return the same object if not set to another value + // so == check is okay and faster + if (\$criteria->getDbName() == Propel::getDefaultDB()) { + \$criteria->setDbName(self::DATABASE_NAME); + } + + ".$this->getPeerClassname()."::addSelectColumns(\$criteria); + \$startcol2 = (".$this->getPeerClassname()."::NUM_COLUMNS - ".$this->getPeerClassname()."::NUM_LAZY_LOAD_COLUMNS); +"; + $index = 2; + foreach ($table->getForeignKeys() as $subfk) { + // want to cover this case, but the code is not there yet. + // Why not? - because we would have to alias the tables in the join + if ( !($subfk->getForeignTableName() == $table->getName())) { + $joinTable = $table->getDatabase()->getTable($subfk->getForeignTableName()); + $joinTablePeerBuilder = $this->getNewPeerBuilder($joinTable); + $joinClassName = $joinTablePeerBuilder->getObjectClassname(); + + if ($joinClassName != $excludedClassName) { + $new_index = $index + 1; + $script .= " + ".$joinTablePeerBuilder->getPeerClassname()."::addSelectColumns(\$criteria); + \$startcol$new_index = \$startcol$index + (".$joinTablePeerBuilder->getPeerClassname()."::NUM_COLUMNS - ".$joinTablePeerBuilder->getPeerClassname()."::NUM_LAZY_LOAD_COLUMNS); +"; + $index = $new_index; + } // if joinClassName not excludeClassName + } // if subfk is not curr table + } // foreach [sub] foreign keys + + foreach ($table->getForeignKeys() as $subfk) { + // want to cover this case, but the code is not there yet. + if ( $subfk->getForeignTableName() != $table->getName() ) { + $joinTable = $table->getDatabase()->getTable($subfk->getForeignTableName()); + $joinedTablePeerBuilder = $this->getNewPeerBuilder($joinTable); + $joinClassName = $joinedTablePeerBuilder->getObjectClassname(); + + if ($joinClassName != $excludedClassName) + { + $script .= $this->addCriteriaJoin($subfk, $table, $joinTable, $joinedTablePeerBuilder); + } + } + } // foreach fkeys + + // apply behaviors + $this->applyBehaviorModifier('preSelect', $script); + + $script .= " + + \$stmt = ".$this->basePeerClassname ."::doSelect(\$criteria, \$con); + \$results = array(); + + while (\$row = \$stmt->fetch(PDO::FETCH_NUM)) { + \$key1 = ".$this->getPeerClassname()."::getPrimaryKeyHashFromRow(\$row, 0); + if (null !== (\$obj1 = ".$this->getPeerClassname()."::getInstanceFromPool(\$key1))) { + // We no longer rehydrate the object, since this can cause data loss. + // See http://propel.phpdb.org/trac/ticket/509 + // \$obj1->hydrate(\$row, 0, true); // rehydrate + } else {"; + if ($table->getChildrenColumn()) { + $script .= " + \$omClass = ".$this->getPeerClassname()."::getOMClass(\$row, 0); + \$cls = substr('.'.\$omClass, strrpos('.'.\$omClass, '.') + 1); +"; + } else { + $script .= " + \$cls = ".$this->getPeerClassname()."::getOMClass(false); +"; + } + + $script .= " + " . $this->buildObjectInstanceCreationCode('$obj1', '$cls') . " + \$obj1->hydrate(\$row); + ".$this->getPeerClassname()."::addInstanceToPool(\$obj1, \$key1); + } // if obj1 already loaded +"; + + $index = 1; + foreach ($table->getForeignKeys() as $subfk ) { + // want to cover this case, but the code is not there yet. + if ( $subfk->getForeignTableName() != $table->getName() ) { + + $joinTable = $table->getDatabase()->getTable($subfk->getForeignTableName()); + + $joinedTableObjectBuilder = $this->getNewObjectBuilder($joinTable); + $joinedTablePeerBuilder = $this->getNewPeerBuilder($joinTable); + + $joinClassName = $joinedTableObjectBuilder->getObjectClassname(); + + $interfaceName = $joinClassName; + if ($joinTable->getInterface()) { + $interfaceName = $this->prefixClassname($joinTable->getInterface()); + } + + if ($joinClassName != $excludedClassName) { + + $index++; + + $script .= " + // Add objects for joined $joinClassName rows + + \$key$index = ".$joinedTablePeerBuilder->getPeerClassname()."::getPrimaryKeyHashFromRow(\$row, \$startcol$index); + if (\$key$index !== null) { + \$obj$index = ".$joinedTablePeerBuilder->getPeerClassname()."::getInstanceFromPool(\$key$index); + if (!\$obj$index) { + "; + + if ($joinTable->getChildrenColumn()) { + $script .= " + \$omClass = ".$joinedTablePeerBuilder->getPeerClassname()."::getOMClass(\$row, \$startcol$index); + \$cls = substr('.'.\$omClass, strrpos('.'.\$omClass, '.') + 1); +"; + } else { + $script .= " + \$cls = ".$joinedTablePeerBuilder->getPeerClassname()."::getOMClass(false); +"; + } /* $joinTable->getChildrenColumn() */ + $script .= " + " . $this->buildObjectInstanceCreationCode('$obj' . $index, '$cls') . " + \$obj".$index."->hydrate(\$row, \$startcol$index); + ".$joinedTablePeerBuilder->getPeerClassname()."::addInstanceToPool(\$obj$index, \$key$index); + } // if \$obj$index already loaded + + // Add the \$obj1 (".$this->getObjectClassname().") to the collection in \$obj".$index." (".$joinedTablePeerBuilder->getObjectClassname().")"; + if ($subfk->isLocalPrimaryKey()) { + $script .= " + \$obj1->set".$joinedTablePeerBuilder->getObjectClassname()."(\$obj".$index.");"; + } else { + $script .= " + \$obj".$index."->add".$joinedTableObjectBuilder->getRefFKPhpNameAffix($subfk, $plural = false)."(\$obj1);"; + } + $script .= " + + } // if joined row is not null +"; + } // if ($joinClassName != $excludedClassName) { + } // $subfk->getForeignTableName() != $table->getName() + } // foreach + $script .= " + \$results[] = \$obj1; + } + \$stmt->closeCursor(); + return \$results; + } +"; + } // foreach fk + + } // addDoSelectJoinAllExcept + + /** + * Adds the doCountJoinAllExcept*() methods. + * @param string &$script The script will be modified in this method. + */ + protected function addDoCountJoinAllExcept(&$script) + { + $table = $this->getTable(); + $join_behavior = $this->getJoinBehavior(); + + $fkeys = $table->getForeignKeys(); // this sep assignment is necessary otherwise sub-loops over + // getForeignKeys() will cause this to only execute one time. + foreach ($fkeys as $fk ) { + + $tblFK = $table->getDatabase()->getTable($fk->getForeignTableName()); + + $excludedTable = $table->getDatabase()->getTable($fk->getForeignTableName()); + + $thisTableObjectBuilder = $this->getNewObjectBuilder($table); + $excludedTableObjectBuilder = $this->getNewObjectBuilder($excludedTable); + $excludedTablePeerBuilder = $this->getNewPeerBuilder($excludedTable); + + $excludedClassName = $excludedTableObjectBuilder->getObjectClassname(); + + $script .= " + + /** + * Returns the number of rows matching criteria, joining the related ".$thisTableObjectBuilder->getFKPhpNameAffix($fk, $plural = false)." table + * + * @param Criteria \$criteria + * @param boolean \$distinct Whether to select only distinct columns; deprecated: use Criteria->setDistinct() instead. + * @param PropelPDO \$con + * @param String \$join_behavior the type of joins to use, defaults to $join_behavior + * @return int Number of matching rows. + */ + public static function doCountJoinAllExcept".$thisTableObjectBuilder->getFKPhpNameAffix($fk, $plural = false)."(Criteria \$criteria, \$distinct = false, PropelPDO \$con = null, \$join_behavior = $join_behavior) + { + // we're going to modify criteria, so copy it first + \$criteria = clone \$criteria; + + // We need to set the primary table name, since in the case that there are no WHERE columns + // it will be impossible for the BasePeer::createSelectSql() method to determine which + // tables go into the FROM clause. + \$criteria->setPrimaryTableName(".$this->getPeerClassname()."::TABLE_NAME); + + if (\$distinct && !in_array(Criteria::DISTINCT, \$criteria->getSelectModifiers())) { + \$criteria->setDistinct(); + } + + if (!\$criteria->hasSelectClause()) { + ".$this->getPeerClassname()."::addSelectColumns(\$criteria); + } + + \$criteria->clearOrderByColumns(); // ORDER BY should not affect count + + // Set the correct dbName + \$criteria->setDbName(self::DATABASE_NAME); + + if (\$con === null) { + \$con = Propel::getConnection(".$this->getPeerClassname()."::DATABASE_NAME, Propel::CONNECTION_READ); + } + "; + + foreach ($table->getForeignKeys() as $subfk) { + // want to cover this case, but the code is not there yet. + if ( $subfk->getForeignTableName() != $table->getName() ) { + $joinTable = $table->getDatabase()->getTable($subfk->getForeignTableName()); + $joinedTablePeerBuilder = $this->getNewPeerBuilder($joinTable); + $joinClassName = $joinedTablePeerBuilder->getObjectClassname(); + + if ($joinClassName != $excludedClassName) + { + $script .= $this->addCriteriaJoin($subfk, $table, $joinTable, $joinedTablePeerBuilder); + } + } + } // foreach fkeys + + // apply behaviors + $this->applyBehaviorModifier('preSelect', $script); + + $script .= " + \$stmt = ".$this->basePeerClassname."::doCount(\$criteria, \$con); + + if (\$row = \$stmt->fetch(PDO::FETCH_NUM)) { + \$count = (int) \$row[0]; + } else { + \$count = 0; // no rows returned; we infer that means 0 matches. + } + \$stmt->closeCursor(); + return \$count; + } +"; + } // foreach fk + + } // addDoCountJoinAllExcept + + /** + * returns the desired join behavior as set in the build properties + * see trac ticket #588, #491 + * + */ + protected function getJoinBehavior() + { + return $this->getGeneratorConfig()->getBuildProperty('useLeftJoinsInDoJoinMethods') ? 'Criteria::LEFT_JOIN' : 'Criteria::INNER_JOIN'; + } + +} // PHP5PeerBuilder diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5TableMapBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5TableMapBuilder.php.svn-base new file mode 100644 index 0000000..a31d099 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/.svn/text-base/PHP5TableMapBuilder.php.svn-base @@ -0,0 +1,340 @@ +. + */ + +require_once 'propel/engine/builder/om/OMBuilder.php'; + +/** + * Generates the PHP5 table map class for user object model (OM). + * + * @author Hans Lellelid + * @package propel.engine.builder.om.php5 + */ +class PHP5TableMapBuilder extends OMBuilder { + + /** + * Gets the package for the map builder classes. + * @return string + */ + public function getPackage() + { + return parent::getPackage() . '.map'; + } + + /** + * Returns the name of the current class being built. + * @return string + */ + public function getUnprefixedClassname() + { + return $this->getTable()->getPhpName() . 'TableMap'; + } + + /** + * Adds the include() statements for files that this class depends on or utilizes. + * @param string &$script The script will be modified in this method. + */ + protected function addIncludes(&$script) + { + } // addIncludes() + + /** + * Adds class phpdoc comment and openning of class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassOpen(&$script) + { + $table = $this->getTable(); + $script .= " + +/** + * This class defines the structure of the '".$table->getName()."' table. + * + *"; + if ($this->getBuildProperty('addTimeStamp')) { + $now = strftime('%c'); + $script .= " + * This class was autogenerated by Propel " . $this->getBuildProperty('version') . " on: + * + * $now + *"; + } + $script .= " + * + * This map class is used by Propel to do runtime db structure discovery. + * For example, the createSelectSql() method checks the type of a given column used in an + * ORDER BY clause to know whether it needs to apply SQL to make the ORDER BY case-insensitive + * (i.e. if it's a text column type). + * + * @package ".$this->getPackage()." + */ +class ".$this->getClassname()." extends TableMap { +"; + } + + /** + * Specifies the methods that are added as part of the map builder class. + * This can be overridden by subclasses that wish to add more methods. + * @see ObjectBuilder::addClassBody() + */ + protected function addClassBody(&$script) + { + $this->addConstants($script); + $this->addAttributes($script); + $this->addInitialize($script); + $this->addBuildRelations($script); + $this->addGetBehaviors($script); + } + + /** + * Adds any constants needed for this TableMap class. + * @param string &$script The script will be modified in this method. + */ + protected function addConstants(&$script) + { + $script .= " + /** + * The (dot-path) name of this class + */ + const CLASS_NAME = '".$this->getClasspath()."'; +"; + } + + /** + * Adds any attributes needed for this TableMap class. + * @param string &$script The script will be modified in this method. + */ + protected function addAttributes(&$script) + { + } + + /** + * Closes class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassClose(&$script) + { + $script .= " +} // " . $this->getClassname() . " +"; + $this->applyBehaviorModifier('tableMapFilter', $script, ""); + } + + /** + * Adds the addInitialize() method to the table map class. + * @param string &$script The script will be modified in this method. + */ + protected function addInitialize(&$script) + { + + $table = $this->getTable(); + $platform = $this->getPlatform(); + $ddlBuilder = $this->getDDLBuilder(); + + $script .= " + /** + * Initialize the table attributes, columns and validators + * Relations are not initialized by this method since they are lazy loaded + * + * @return void + * @throws PropelException + */ + public function initialize() + { + // attributes + \$this->setName('".$table->getName()."'); + \$this->setPhpName('".$table->getPhpName()."'); + \$this->setClassname('" . $this->getObjectClassname() . "'); + \$this->setPackage('" . parent::getPackage() . "');"; + if ($table->getIdMethod() == "native") { + $script .= " + \$this->setUseIdGenerator(true);"; + } else { + $script .= " + \$this->setUseIdGenerator(false);"; + } + + if ($table->getIdMethodParameters()) { + $params = $table->getIdMethodParameters(); + $imp = $params[0]; + $script .= " + \$this->setPrimaryKeyMethodInfo('".$imp->getValue()."');"; + } elseif ($table->getIdMethod() == IDMethod::NATIVE && ($platform->getNativeIdMethod() == Platform::SEQUENCE || $platform->getNativeIdMethod() == Platform::SERIAL)) { + $script .= " + \$this->setPrimaryKeyMethodInfo('".$this->prefixTablename($ddlBuilder->getSequenceName())."');"; + } + + // Add columns to map + $script .= " + // columns"; + foreach ($table->getColumns() as $col) { + $cup=strtoupper($col->getName()); + $cfc=$col->getPhpName(); + if (!$col->getSize()) { + $size = "null"; + } else { + $size = $col->getSize(); + } + $default = $col->getDefaultValueString(); + if ($col->isPrimaryKey()) { + if ($col->isForeignKey()) { + foreach ($col->getForeignKeys() as $fk) { + $script .= " + \$this->addForeignPrimaryKey('$cup', '$cfc', '".$col->getType()."' , '".$fk->getForeignTableName()."', '".strtoupper($fk->getMappedForeignColumn($col->getName()))."', ".($col->isNotNull() ? 'true' : 'false').", ".$size.", $default);"; + } + } else { + $script .= " + \$this->addPrimaryKey('$cup', '$cfc', '".$col->getType()."', ".var_export($col->isNotNull(), true).", ".$size.", $default);"; + } + } else { + if ($col->isForeignKey()) { + foreach ($col->getForeignKeys() as $fk) { + $script .= " + \$this->addForeignKey('$cup', '$cfc', '".$col->getType()."', '".$fk->getForeignTableName()."', '".strtoupper($fk->getMappedForeignColumn($col->getName()))."', ".($col->isNotNull() ? 'true' : 'false').", ".$size.", $default);"; + } + } else { + $script .= " + \$this->addColumn('$cup', '$cfc', '".$col->getType()."', ".var_export($col->isNotNull(), true).", ".$size.", $default);"; + } + } // if col-is prim key + } // foreach + + // validators + $script .= " + // validators"; + foreach ($table->getValidators() as $val) { + $col = $val->getColumn(); + $cup = strtoupper($col->getName()); + foreach ($val->getRules() as $rule) { + if ($val->getTranslate() !== Validator::TRANSLATE_NONE) { + $script .= " + \$this->addValidator('$cup', '".$rule->getName()."', '".$rule->getClass()."', '".str_replace("'", "\'", $rule->getValue())."', ".$val->getTranslate()."('".str_replace("'", "\'", $rule->getMessage())."'));"; + } else { + $script .= " + \$this->addValidator('$cup', '".$rule->getName()."', '".$rule->getClass()."', '".str_replace("'", "\'", $rule->getValue())."', '".str_replace("'", "\'", $rule->getMessage())."');"; + } // if ($rule->getTranslation() ... + } // foreach rule + } // foreach validator + + $script .= " + } // initialize() +"; + + } + + /** + * Adds the method that build the RelationMap objects + * @param string &$script The script will be modified in this method. + */ + protected function addBuildRelations(&$script) + { + $script .= " + /** + * Build the RelationMap objects for this table relationships + */ + public function buildRelations() + {"; + foreach ($this->getTable()->getForeignKeys() as $fkey) + { + $columnMapping = 'array('; + foreach ($fkey->getLocalForeignMapping() as $key => $value) + { + $columnMapping .= "'$key' => '$value', "; + } + $columnMapping .= ')'; + $onDelete = $fkey->hasOnDelete() ? "'" . $fkey->getOnDelete() . "'" : 'null'; + $onUpdate = $fkey->hasOnUpdate() ? "'" . $fkey->getOnUpdate() . "'" : 'null'; + $script .= " + \$this->addRelation('" . $this->getFKPhpNameAffix($fkey) . "', '" . $fkey->getForeignTable()->getPhpName() . "', RelationMap::MANY_TO_ONE, $columnMapping, $onDelete, $onUpdate);"; + } + foreach ($this->getTable()->getReferrers() as $fkey) + { + $columnMapping = 'array('; + foreach ($fkey->getForeignLocalMapping() as $key => $value) + { + $columnMapping .= "'$key' => '$value', "; + } + $columnMapping .= ')'; + $onDelete = $fkey->hasOnDelete() ? "'" . $fkey->getOnDelete() . "'" : 'null'; + $onUpdate = $fkey->hasOnUpdate() ? "'" . $fkey->getOnUpdate() . "'" : 'null'; + $script .= " + \$this->addRelation('" . $this->getRefFKPhpNameAffix($fkey) . "', '" . $fkey->getTable()->getPhpName() . "', RelationMap::ONE_TO_" . ($fkey->isLocalPrimaryKey() ? "ONE" : "MANY") .", $columnMapping, $onDelete, $onUpdate);"; + } + $script .= " + } // buildRelations() +"; + } + + /** + * Adds the behaviors getter + * @param string &$script The script will be modified in this method. + */ + protected function addGetBehaviors(&$script) + { + if ($behaviors = $this->getTable()->getBehaviors()) + { + $script .= " + /** + * + * Gets the list of behaviors registered for this table + * + * @return array Associative array (name => parameters) of behaviors + */ + public function getBehaviors() + { + return array("; + foreach ($behaviors as $behavior) + { + $script .= " + '{$behavior->getName()}' => array("; + foreach ($behavior->getParameters() as $key => $value) + { + $script .= "'$key' => '$value', "; + } + $script .= "),"; + } + $script .= " + ); + } // getBehaviors() +"; + } + } + + /** + * Checks whether any registered behavior on that table has a modifier for a hook + * @param string $hookName The name of the hook as called from one of this class methods, e.g. "preSave" + * @return boolean + */ + public function hasBehaviorModifier($hookName) + { + return parent::hasBehaviorModifier($hookName, 'TableMapBuilderModifier'); + } + + /** + * Checks whether any registered behavior on that table has a modifier for a hook + * @param string $hookName The name of the hook as called from one of this class methods, e.g. "preSave" + * @param string &$script The script will be modified in this method. + */ + public function applyBehaviorModifier($hookName, &$script, $tab = " ") + { + return parent::applyBehaviorModifier($hookName, 'TableMapBuilderModifier', $script, $tab); + } +} // PHP5TableMapBuilder diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5ExtensionNodeBuilder.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5ExtensionNodeBuilder.php new file mode 100644 index 0000000..d849582 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5ExtensionNodeBuilder.php @@ -0,0 +1,122 @@ +. + */ + +require_once 'propel/engine/builder/om/ObjectBuilder.php'; + +/** + * Generates the empty PHP5 stub node object class for user object model (OM). + * + * This class produces the empty stub class that can be customized with application + * business logic, custom behavior, etc. + * + * This class replaces the ExtensionNode.tpl, with the intent of being easier for users + * to customize (through extending & overriding). + * + * @author Hans Lellelid + * @package propel.engine.builder.om.php5 + */ +class PHP5ExtensionNodeBuilder extends ObjectBuilder { + + /** + * Returns the name of the current class being built. + * @return string + */ + public function getUnprefixedClassname() + { + return $this->getTable()->getPhpName() . 'Node'; + } + + /** + * Adds the include() statements for files that this class depends on or utilizes. + * @param string &$script The script will be modified in this method. + */ + protected function addIncludes(&$script) + { + $script .= " +require '".$this->getNodeBuilder()->getClassFilePath()."'; +"; + } // addIncludes() + + /** + * Adds class phpdoc comment and openning of class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassOpen(&$script) + { + + $table = $this->getTable(); + $tableName = $table->getName(); + $tableDesc = $table->getDescription(); + + $baseClassname = $this->getNodeBuilder()->getClassname(); + + $script .= " + +/** + * Skeleton subclass for representing a node from the '$tableName' table. + * + * $tableDesc + *"; + if ($this->getBuildProperty('addTimeStamp')) { + $now = strftime('%c'); + $script .= " + * This class was autogenerated by Propel " . $this->getBuildProperty('version') . " on: + * + * $now + *"; + } + $script .= " + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + * + * @package ".$this->getPackage()." + */ +class ".$this->getClassname()." extends $baseClassname { +"; + } + + /** + * Specifies the methods that are added as part of the stub object class. + * + * By default there are no methods for the empty stub classes; override this method + * if you want to change that behavior. + * + * @see ObjectBuilder::addClassBody() + */ + protected function addClassBody(&$script) + { + // there is no class body + } + + /** + * Closes class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassClose(&$script) + { + $script .= " +} // " . $this->getClassname() . " +"; + } + +} // PHP5ExtensionObjectBuilder diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5ExtensionNodePeerBuilder.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5ExtensionNodePeerBuilder.php new file mode 100644 index 0000000..fd97c3d --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5ExtensionNodePeerBuilder.php @@ -0,0 +1,123 @@ +. + */ + +require_once 'propel/engine/builder/om/PeerBuilder.php'; + +/** + * Generates the empty PHP5 stub node peer class for user object model (OM). + * + * This class produces the empty stub class that can be customized with application + * business logic, custom behavior, etc. + * + * This class replaces the ExtensionNodePeer.tpl, with the intent of being easier for users + * to customize (through extending & overriding). + * + * @author Hans Lellelid + * @package propel.engine.builder.om.php5 + */ +class PHP5ExtensionNodePeerBuilder extends PeerBuilder { + + /** + * Returns the name of the current class being built. + * @return string + */ + public function getUnprefixedClassname() + { + return $this->getStubNodeBuilder()->getClassname() . 'Peer'; + } + + /** + * Adds the include() statements for files that this class depends on or utilizes. + * @param string &$script The script will be modified in this method. + */ + protected function addIncludes(&$script) + { + $script .=" +require '".$this->getNodePeerBuilder()->getClassFilePath()."'; +"; + } // addIncludes() + + /** + * Adds class phpdoc comment and openning of class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassOpen(&$script) + { + + $table = $this->getTable(); + $tableName = $table->getName(); + $tableDesc = $table->getDescription(); + + $baseClassname = $this->getNodePeerBuilder()->getClassname(); + + $script .= " + +/** + * Skeleton subclass for performing query and update operations on nodes of the '$tableName' table. + * + * $tableDesc + *"; + if ($this->getBuildProperty('addTimeStamp')) { + $now = strftime('%c'); + $script .= " + * This class was autogenerated by Propel " . $this->getBuildProperty('version') . " on: + * + * $now + *"; + } + $script .= " + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + * + * @package ".$this->getPackage()." + */ +class ".$this->getClassname()." extends $baseClassname { +"; + } + + /** + * Specifies the methods that are added as part of the stub peer class. + * + * By default there are no methods for the empty stub classes; override this method + * if you want to change that behavior. + * + * @see ObjectBuilder::addClassBody() + */ + + protected function addClassBody(&$script) + { + // there is no class body + } + + /** + * Closes class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassClose(&$script) + { + $script .= " +} // " . $this->getClassname() . " +"; + } + +} // PHP5ExtensionPeerBuilder diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5ExtensionObjectBuilder.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5ExtensionObjectBuilder.php new file mode 100644 index 0000000..83a9aa0 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5ExtensionObjectBuilder.php @@ -0,0 +1,169 @@ +. + */ + +require_once 'propel/engine/builder/om/ObjectBuilder.php'; + +/** + * Generates the empty PHP5 stub object class for user object model (OM). + * + * This class produces the empty stub class that can be customized with application + * business logic, custom behavior, etc. + * + * This class replaces the ExtensionObject.tpl, with the intent of being easier for users + * to customize (through extending & overriding). + * + * @author Hans Lellelid + * @package propel.engine.builder.om.php5 + */ +class PHP5ExtensionObjectBuilder extends ObjectBuilder { + + /** + * Returns the name of the current class being built. + * @return string + */ + public function getUnprefixedClassname() + { + return $this->getTable()->getPhpName(); + } + + /** + * Adds the include() statements for files that this class depends on or utilizes. + * @param string &$script The script will be modified in this method. + */ + protected function addIncludes(&$script) + { + switch($this->getTable()->treeMode()) { + case 'NestedSet': + $requiredClassFilePath = $this->getNestedSetBuilder()->getClassFilePath(); + break; + + case 'MaterializedPath': + case 'AdjacencyList': + default: + $requiredClassFilePath = $this->getObjectBuilder()->getClassFilePath(); + break; + } + + $script .=" +require '".$requiredClassFilePath."'; +"; + } // addIncludes() + + /** + * Adds class phpdoc comment and openning of class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassOpen(&$script) + { + + $table = $this->getTable(); + $tableName = $table->getName(); + $tableDesc = $table->getDescription(); + + switch($table->treeMode()) { + case 'NestedSet': + $baseClassname = $this->getNestedSetBuilder()->getClassname(); + break; + + case 'MaterializedPath': + case "AdjacencyList": + default: + $baseClassname = $this->getObjectBuilder()->getClassname(); + break; + } + + $script .= " + +/** + * Skeleton subclass for representing a row from the '$tableName' table. + * + * $tableDesc + *"; + if ($this->getBuildProperty('addTimeStamp')) { + $now = strftime('%c'); + $script .= " + * This class was autogenerated by Propel " . $this->getBuildProperty('version') . " on: + * + * $now + *"; + } + $script .= " + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + * + * @package ".$this->getPackage()." + */ +".($table->isAbstract() ? "abstract " : "")."class ".$this->getClassname()." extends $baseClassname { +"; + } + + /** + * Specifies the methods that are added as part of the stub object class. + * + * By default there are no methods for the empty stub classes; override this method + * if you want to change that behavior. + * + * @see ObjectBuilder::addClassBody() + */ + protected function addClassBody(&$script) + { + if ($this->hasDefaultValues()) { + $this->addConstructor($script); + } + } + + /** + * Adds the applyDefaults() method, which is called from the constructor. + * @param string &$script The script will be modified in this method. + * @see addConstructor() + */ + protected function addConstructor(&$script) + { + $table = $this->getTable(); + $script .= " + /** + * Initializes internal state of ".$this->getClassname()." object. + * @see parent::__construct() + */ + public function __construct() + { + // Make sure that parent constructor is always invoked, since that + // is where any default values for this object are set. + parent::__construct(); + } +"; + } + + /** + * Closes class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassClose(&$script) + { + $script .= " +} // " . $this->getClassname() . " +"; + $this->applyBehaviorModifier('extensionObjectFilter', $script, ""); + } + +} // PHP5ExtensionObjectBuilder diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5ExtensionPeerBuilder.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5ExtensionPeerBuilder.php new file mode 100644 index 0000000..66b920d --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5ExtensionPeerBuilder.php @@ -0,0 +1,146 @@ +. + */ + +require_once 'propel/engine/builder/om/PeerBuilder.php'; + +/** + * Generates the empty PHP5 stub peer class for user object model (OM). + * + * This class produces the empty stub class that can be customized with application + * business logic, custom behavior, etc. + * + * This class replaces the ExtensionPeer.tpl, with the intent of being easier for users + * to customize (through extending & overriding). + * + * @author Hans Lellelid + * @package propel.engine.builder.om.php5 + */ +class PHP5ExtensionPeerBuilder extends PeerBuilder { + + /** + * Returns the name of the current class being built. + * @return string + */ + public function getUnprefixedClassname() + { + return $this->getStubObjectBuilder()->getUnprefixedClassname() . 'Peer'; + } + + /** + * Adds the include() statements for files that this class depends on or utilizes. + * @param string &$script The script will be modified in this method. + */ + protected function addIncludes(&$script) + { + switch($this->getTable()->treeMode()) { + case 'NestedSet': + $requiredClassFilePath = $this->getNestedSetPeerBuilder()->getClassFilePath(); + break; + + case 'MaterializedPath': + case 'AdjacencyList': + default: + $requiredClassFilePath = $this->getPeerBuilder()->getClassFilePath(); + break; + } + + $script .=" +require '".$requiredClassFilePath."'; +"; + } // addIncludes() + + /** + * Adds class phpdoc comment and openning of class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassOpen(&$script) + { + $table = $this->getTable(); + $tableName = $table->getName(); + $tableDesc = $table->getDescription(); + + switch($table->treeMode()) { + case 'NestedSet': + $baseClassname = $this->getNestedSetPeerBuilder()->getClassname(); + break; + + case 'MaterializedPath': + case 'AdjacencyList': + default: + $baseClassname = $this->getPeerBuilder()->getClassname(); + break; + } + + $script .= " + +/** + * Skeleton subclass for performing query and update operations on the '$tableName' table. + * + * $tableDesc + *"; + if ($this->getBuildProperty('addTimeStamp')) { + $now = strftime('%c'); + $script .= " + * This class was autogenerated by Propel " . $this->getBuildProperty('version') . " on: + * + * $now + *"; + } + $script .= " + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + * + * @package ".$this->getPackage()." + */ +class ".$this->getClassname()." extends $baseClassname { +"; + } + + /** + * Specifies the methods that are added as part of the stub peer class. + * + * By default there are no methods for the empty stub classes; override this method + * if you want to change that behavior. + * + * @see ObjectBuilder::addClassBody() + */ + + protected function addClassBody(&$script) + { + // there is no class body + } + + /** + * Closes class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassClose(&$script) + { + $script .= " +} // " . $this->getClassname() . " +"; + $this->applyBehaviorModifier('extensionPeerFilter', $script, ""); + } + + +} // PHP5ExtensionPeerBuilder diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5InterfaceBuilder.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5InterfaceBuilder.php new file mode 100644 index 0000000..7bc6085 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5InterfaceBuilder.php @@ -0,0 +1,119 @@ +. + */ + +require_once 'propel/engine/builder/om/ObjectBuilder.php'; + +/** + * Generates the empty PHP5 stub interface for user object model (OM). + * + * This class produces the empty stub interface when the interface="" attribute is used + * in the the schema xml. + * + * This class replaces the Interface.tpl, with the intent of being easier for users + * to customize (through extending & overriding). + * + * @author Hans Lellelid + * @package propel.engine.builder.om.php5 + */ +class PHP5InterfaceBuilder extends ObjectBuilder { + + /** + * Returns the name of the current class being built. + * @return string + */ + public function getUnprefixedClassname() + { + return ClassTools::classname($this->getInterface()); + } + + /** + * Adds the include() statements for files that this class depends on or utilizes. + * @param string &$script The script will be modified in this method. + */ + protected function addIncludes(&$script) + { + + } // addIncludes() + + /** + * Adds class phpdoc comment and openning of class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassOpen(&$script) + { + + $table = $this->getTable(); + $tableName = $table->getName(); + $tableDesc = $table->getDescription(); + + $baseClassname = $this->getObjectBuilder()->getClassname(); + + $script .= " +/** + * This is an interface that should be filled with the public api of the $tableName objects. + * + * $tableDesc + *"; + if ($this->getBuildProperty('addTimeStamp')) { + $now = strftime('%c'); + $script .= " + * This class was autogenerated by Propel " . $this->getBuildProperty('version') . " on: + * + * $now + *"; + } + $script .= " + * You should add additional method declarations to this interface to meet the + * application requirements. This interface will only be generated as + * long as it does not already exist in the output directory. + * + * @package ".$this->getPackage()." + */ +interface ".$this->getClassname()." { +"; + } + + /** + * Specifies the methods that are added as part of the stub object class. + * + * By default there are no methods for the empty stub classes; override this method + * if you want to change that behavior. + * + * @see ObjectBuilder::addClassBody() + */ + protected function addClassBody(&$script) + { + // there is no class body + } + + /** + * Closes class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassClose(&$script) + { + $script .= " +} // " . $this->getClassname() . " +"; + } + +} // PHP5ExtensionObjectBuilder diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5MultiExtendObjectBuilder.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5MultiExtendObjectBuilder.php new file mode 100644 index 0000000..35967a4 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5MultiExtendObjectBuilder.php @@ -0,0 +1,202 @@ +. + */ + +require_once 'propel/engine/builder/om/ObjectBuilder.php'; + +/** + * Generates the empty PHP5 stub object class for use with inheritance in the user object model (OM). + * + * This class produces the empty stub class that can be customized with application + * business logic, custom behavior, etc. + * + * This class replaces the MultiExtendObject.tpl, with the intent of being easier for users + * to customize (through extending & overriding). + * + * @author Hans Lellelid + * @package propel.engine.builder.om.php5 + */ +class PHP5MultiExtendObjectBuilder extends ObjectBuilder { + + /** + * The current child "object" we are operating on. + */ + private $child; + + /** + * Returns the name of the current class being built. + * @return string + */ + public function getUnprefixedClassname() + { + return $this->getChild()->getClassname(); + } + + /** + * Override method to return child package, if specified. + * @return string + */ + public function getPackage() + { + return ($this->child->getPackage() ? $this->child->getPackage() : parent::getPackage()); + } + + /** + * Set the child object that we're operating on currrently. + * @param $child Inheritance + */ + public function setChild(Inheritance $child) + { + $this->child = $child; + } + + /** + * Returns the child object we're operating on currently. + * @return Inheritance + * @throws BuildException - if child was not set. + */ + public function getChild() + { + if (!$this->child) { + throw new BuildException("The PHP5MultiExtendObjectBuilder needs to be told which child class to build (via setChild() method) before it can build the stub class."); + } + return $this->child; + } + + /** + * Returns classpath to parent class. + * @return string + */ + protected function getParentClasspath() + { + if ($this->getChild()->getAncestor()) { + return $this->getChild()->getAncestor(); + } else { + return $this->getObjectBuilder()->getClasspath(); + } + } + + /** + * Returns classname of parent class. + * @return string + */ + protected function getParentClassname() + { + return ClassTools::classname($this->getParentClasspath()); + } + + /** + * Gets the file path to the parent class. + * @return string + */ + protected function getParentClassFilePath() + { + return ClassTools::getFilePath($this->getParentClasspath()); + } + + /** + * Adds the include() statements for files that this class depends on or utilizes. + * @param string &$script The script will be modified in this method. + */ + protected function addIncludes(&$script) + { + } // addIncludes() + + /** + * Adds class phpdoc comment and openning of class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassOpen(&$script) + { + + $table = $this->getTable(); + $tableName = $table->getName(); + $tableDesc = $table->getDescription(); + + $baseClassname = $this->getObjectBuilder()->getClassname(); + + $script .= " + +/** + * Skeleton subclass for representing a row from one of the subclasses of the '$tableName' table. + * + * $tableDesc + *"; + if ($this->getBuildProperty('addTimeStamp')) { + $now = strftime('%c'); + $script .= " + * This class was autogenerated by Propel " . $this->getBuildProperty('version') . " on: + * + * $now + *"; + } + $script .= " + * You should add additional methods to this class to meet the + * application requirements. This class will only be generated as + * long as it does not already exist in the output directory. + * + * @package ".$this->getPackage()." + */ +class ".$this->getClassname()." extends ".$this->getParentClassname()." { +"; + } + + /** + * Specifies the methods that are added as part of the stub object class. + * + * By default there are no methods for the empty stub classes; override this method + * if you want to change that behavior. + * + * @see ObjectBuilder::addClassBody() + */ + protected function addClassBody(&$script) + { + $child = $this->getChild(); + $col = $child->getColumn(); + $cfc = $col->getPhpName(); + + $const = "CLASSKEY_".strtoupper($child->getKey()); + + $script .= " + /** + * Constructs a new ".$this->getChild()->getClassname()." class, setting the ".$col->getName()." column to ".$this->getPeerClassname()."::$const. + */ + public function __construct() + {"; + $script .= " + parent::__construct(); + \$this->set$cfc(".$this->getPeerClassname()."::CLASSKEY_".strtoupper($child->getKey())."); + } +"; + } + + /** + * Closes class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassClose(&$script) + { + $script .= " +} // " . $this->getClassname() . " +"; + } + +} // PHP5ExtensionObjectBuilder diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5NestedSetBuilder.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5NestedSetBuilder.php new file mode 100644 index 0000000..a31ffc7 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5NestedSetBuilder.php @@ -0,0 +1,1145 @@ +. + */ + +require_once 'propel/engine/builder/om/ObjectBuilder.php'; + +/** + * Generates a PHP5 tree node Object class for user object model (OM) using Nested Set way. + * + * This class produces the base tree node object class (e.g. BaseMyTableNestedSet) which contains all + * the custom-built accessor and setter methods. + * + * @author Heltem + * @package propel.engine.builder.om.php5 + */ +class PHP5NestedSetBuilder extends ObjectBuilder { + + /** + * Gets the package for the [base] object classes. + * @return string + */ + public function getPackage() + { + return parent::getPackage() . ".om"; + } + + /** + * Returns the name of the current class being built. + * @return string + */ + public function getUnprefixedClassname() + { + return $this->getBuildProperty('basePrefix') . $this->getStubObjectBuilder()->getUnprefixedClassname() . 'NestedSet'; + } + + /** + * Adds the include() statements for files that this class depends on or utilizes. + * @param string &$script The script will be modified in this method. + */ + protected function addIncludes(&$script) + { + $script .=" +require '".$this->getObjectBuilder()->getClassFilePath()."'; +"; + } // addIncludes() + + /** + * Adds class phpdoc comment and openning of class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassOpen(&$script) + { + + $table = $this->getTable(); + $tableName = $table->getName(); + $tableDesc = $table->getDescription(); + + $script .= " +/** + * Base class that represents a row from the '$tableName' table. + * + * $tableDesc + *"; + if ($this->getBuildProperty('addTimeStamp')) { + $now = strftime('%c'); + $script .= " + * This class was autogenerated by Propel " . $this->getBuildProperty('version') . " on: + * + * $now + *"; + } + $script .= " + * @package ".$this->getPackage()." + */ +abstract class ".$this->getClassname()." extends ".$this->getObjectBuilder()->getClassname()." implements NodeObject { +"; + } + + /** + * Specifies the methods that are added as part of the basic OM class. + * This can be overridden by subclasses that wish to add more methods. + * @see ObjectBuilder::addClassBody() + */ + protected function addClassBody(&$script) + { + $table = $this->getTable(); + + $this->addAttributes($script); + + $this->addGetIterator($script); + + $this->addSave($script); + $this->addDelete($script); + + $this->addMakeRoot($script); + + $this->addGetLevel($script); + $this->addGetPath($script); + + $this->addGetNumberOfChildren($script); + $this->addGetNumberOfDescendants($script); + + $this->addGetChildren($script); + $this->addGetDescendants($script); + + $this->addSetLevel($script); + + $this->addSetChildren($script); + $this->addSetParentNode($script); + $this->addSetPrevSibling($script); + $this->addSetNextSibling($script); + + $this->addIsRoot($script); + $this->addIsLeaf($script); + $this->addIsEqualTo($script); + + $this->addHasParent($script); + $this->addHasChildren($script); + $this->addHasPrevSibling($script); + $this->addHasNextSibling($script); + + $this->addRetrieveParent($script); + $this->addRetrieveFirstChild($script); + $this->addRetrieveLastChild($script); + $this->addRetrievePrevSibling($script); + $this->addRetrieveNextSibling($script); + + $this->addInsertAsFirstChildOf($script); + $this->addInsertAsLastChildOf($script); + + $this->addInsertAsPrevSiblingOf($script); + $this->addInsertAsNextSiblingOf($script); + + $this->addMoveToFirstChildOf($script); + $this->addMoveToLastChildOf($script); + + $this->addMoveToPrevSiblingOf($script); + $this->addMoveToNextSiblingOf($script); + + $this->addInsertAsParentOf($script); + + $this->addGetLeft($script); + $this->addGetRight($script); + $this->addGetScopeId($script); + + $this->addSetLeft($script); + $this->addSetRight($script); + $this->addSetScopeId($script); + } + + /** + * Closes class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassClose(&$script) + { + $script .= " +} // " . $this->getClassname() . " +"; + } + + + /** + * Adds class attributes. + * @param string &$script The script will be modified in this method. + */ + protected function addAttributes(&$script) + { + $objectClassName = $this->getStubObjectBuilder()->getClassname(); + $script .= " + /** + * Store level of node + * @var int + */ + protected \$level = null; + + /** + * Store if node has prev sibling + * @var bool + */ + protected \$hasPrevSibling = null; + + /** + * Store node if has prev sibling + * @var $objectClassName + */ + protected \$prevSibling = null; + + /** + * Store if node has next sibling + * @var bool + */ + protected \$hasNextSibling = null; + + /** + * Store node if has next sibling + * @var $objectClassName + */ + protected \$nextSibling = null; + + /** + * Store if node has parent node + * @var bool + */ + protected \$hasParentNode = null; + + /** + * The parent node for this node. + * @var $objectClassName + */ + protected \$parentNode = null; + + /** + * Store children of the node + * @var array + */ + protected \$_children = null; +"; + } + + protected function addGetIterator(&$script) + { + $script .= " + /** + * Returns a pre-order iterator for this node and its children. + * + * @return NodeIterator + */ + public function getIterator() + { + return new NestedSetRecursiveIterator(\$this); + } +"; + } + + protected function addSave(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Saves modified object data to the datastore. + * If object is saved without left/right values, set them as undefined (0) + * + * @param PropelPDO Connection to use. + * @return int The number of rows affected by this insert/update and any referring fk objects' save() operations. + * May be unreliable with parent/children/brother changes + * @throws PropelException + */ + public function save(PropelPDO \$con = null) + { + \$left = \$this->getLeftValue(); + \$right = \$this->getRightValue(); + if (empty(\$left) || empty(\$right)) { + \$root = $peerClassname::retrieveRoot(\$this->getScopeIdValue(), \$con); + $peerClassname::insertAsLastChildOf(\$this, \$root, \$con); + } + + return parent::save(\$con); + } +"; + } + + protected function addDelete(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Removes this object and all descendants from datastore. + * + * @param PropelPDO Connection to use. + * @return void + * @throws PropelException + */ + public function delete(PropelPDO \$con = null) + { + // delete node first + parent::delete(\$con); + + // delete descendants and then shift tree + $peerClassname::deleteDescendants(\$this, \$con); + } +"; + } + + protected function addMakeRoot(&$script) + { + $objectClassName = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Sets node properties to make it a root node. + * + * @return $objectClassName The current object (for fluent API support) + * @throws PropelException + */ + public function makeRoot() + { + $peerClassname::createRoot(\$this); + return \$this; + } +"; + } + + protected function addGetLevel(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Gets the level if set, otherwise calculates this and returns it + * + * @param PropelPDO Connection to use. + * @return int + */ + public function getLevel(PropelPDO \$con = null) + { + if (null === \$this->level) { + \$this->level = $peerClassname::getLevel(\$this, \$con); + } + return \$this->level; + } +"; + } + + protected function addSetLevel(&$script) + { + $objectClassName = $this->getStubObjectBuilder()->getClassname(); + $script .= " + /** + * Sets the level of the node in the tree + * + * @param int \$v new value + * @return $objectClassName The current object (for fluent API support) + */ + public function setLevel(\$level) + { + \$this->level = \$level; + return \$this; + } +"; + } + + protected function addSetChildren(&$script) + { + $objectClassName = $this->getStubObjectBuilder()->getClassname(); + $script .= " + /** + * Sets the children array of the node in the tree + * + * @param array of $objectClassName \$children array of Propel node object + * @return $objectClassName The current object (for fluent API support) + */ + public function setChildren(array \$children) + { + \$this->_children = \$children; + return \$this; + } +"; + } + + protected function addSetParentNode(&$script) + { + $objectClassName = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Sets the parentNode of the node in the tree + * + * @param $objectClassName \$parent Propel node object + * @return $objectClassName The current object (for fluent API support) + */ + public function setParentNode(NodeObject \$parent = null) + { + \$this->parentNode = (true === (\$this->hasParentNode = $peerClassname::isValid(\$parent))) ? \$parent : null; + return \$this; + } +"; + } + + protected function addSetPrevSibling(&$script) + { + $objectClassName = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Sets the previous sibling of the node in the tree + * + * @param $objectClassName \$node Propel node object + * @return $objectClassName The current object (for fluent API support) + */ + public function setPrevSibling(NodeObject \$node = null) + { + \$this->prevSibling = \$node; + \$this->hasPrevSibling = $peerClassname::isValid(\$node); + return \$this; + } +"; + } + + protected function addSetNextSibling(&$script) + { + $objectClassName = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Sets the next sibling of the node in the tree + * + * @param $objectClassName \$node Propel node object + * @return $objectClassName The current object (for fluent API support) + */ + public function setNextSibling(NodeObject \$node = null) + { + \$this->nextSibling = \$node; + \$this->hasNextSibling = $peerClassname::isValid(\$node); + return \$this; + } +"; + } + + protected function addGetPath(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Get the path to the node in the tree + * + * @param PropelPDO Connection to use. + * @return array + */ + public function getPath(PropelPDO \$con = null) + { + return $peerClassname::getPath(\$this, \$con); + } +"; + } + + protected function addGetNumberOfChildren(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Gets the number of children for the node (direct descendants) + * + * @param PropelPDO Connection to use. + * @return int + */ + public function getNumberOfChildren(PropelPDO \$con = null) + { + return $peerClassname::getNumberOfChildren(\$this, \$con); + } +"; + } + + protected function addGetNumberOfDescendants(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Gets the total number of descendants for the node + * + * @param PropelPDO Connection to use. + * @return int + */ + public function getNumberOfDescendants(PropelPDO \$con = null) + { + return $peerClassname::getNumberOfDescendants(\$this, \$con); + } +"; + } + + protected function addGetChildren(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Gets the children for the node + * + * @param PropelPDO Connection to use. + * @return array + */ + public function getChildren(PropelPDO \$con = null) + { + \$this->getLevel(); + + if (is_array(\$this->_children)) { + return \$this->_children; + } + + return $peerClassname::retrieveChildren(\$this, \$con); + } +"; + } + + protected function addGetDescendants(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Gets the descendants for the node + * + * @param PropelPDO Connection to use. + * @return array + */ + public function getDescendants(PropelPDO \$con = null) + { + \$this->getLevel(); + + return $peerClassname::retrieveDescendants(\$this, \$con); + } +"; + } + + protected function addIsRoot(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Returns true if node is the root node of the tree. + * + * @return bool + */ + public function isRoot() + { + return $peerClassname::isRoot(\$this); + } +"; + } + + protected function addIsLeaf(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Return true if the node is a leaf node + * + * @return bool + */ + public function isLeaf() + { + return $peerClassname::isLeaf(\$this); + } +"; + } + + protected function addIsEqualTo(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Tests if object is equal to \$node + * + * @param object \$node Propel object for node to compare to + * @return bool + */ + public function isEqualTo(NodeObject \$node) + { + return $peerClassname::isEqualTo(\$this, \$node); + } +"; + } + + protected function addHasParent(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Tests if object has an ancestor + * + * @param PropelPDO \$con Connection to use. + * @return bool + */ + public function hasParent(PropelPDO \$con = null) + { + if (null === \$this->hasParentNode) { + $peerClassname::hasParent(\$this, \$con); + } + return \$this->hasParentNode; + } +"; + } + + protected function addHasChildren(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Determines if the node has children / descendants + * + * @return bool + */ + public function hasChildren() + { + return $peerClassname::hasChildren(\$this); + } +"; + } + + protected function addHasPrevSibling(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Determines if the node has previous sibling + * + * @param PropelPDO \$con Connection to use. + * @return bool + */ + public function hasPrevSibling(PropelPDO \$con = null) + { + if (null === \$this->hasPrevSibling) { + $peerClassname::hasPrevSibling(\$this, \$con); + } + return \$this->hasPrevSibling; + } +"; + } + + protected function addHasNextSibling(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Determines if the node has next sibling + * + * @param PropelPDO \$con Connection to use. + * @return bool + */ + public function hasNextSibling(PropelPDO \$con = null) + { + if (null === \$this->hasNextSibling) { + $peerClassname::hasNextSibling(\$this, \$con); + } + return \$this->hasNextSibling; + } +"; + } + + protected function addRetrieveParent(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Gets ancestor for the given node if it exists + * + * @param PropelPDO \$con Connection to use. + * @return mixed Propel object if exists else false + */ + public function retrieveParent(PropelPDO \$con = null) + { + if (null === \$this->hasParentNode) { + \$this->parentNode = $peerClassname::retrieveParent(\$this, \$con); + \$this->hasParentNode = $peerClassname::isValid(\$this->parentNode); + } + return \$this->parentNode; + } +"; + } + + protected function addRetrieveFirstChild(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Gets first child if it exists + * + * @param PropelPDO \$con Connection to use. + * @return mixed Propel object if exists else false + */ + public function retrieveFirstChild(PropelPDO \$con = null) + { + if (\$this->hasChildren(\$con)) { + if (is_array(\$this->_children)) { + return \$this->_children[0]; + } + + return $peerClassname::retrieveFirstChild(\$this, \$con); + } + return false; + } +"; + } + + protected function addRetrieveLastChild(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Gets last child if it exists + * + * @param PropelPDO \$con Connection to use. + * @return mixed Propel object if exists else false + */ + public function retrieveLastChild(PropelPDO \$con = null) + { + if (\$this->hasChildren(\$con)) { + if (is_array(\$this->_children)) { + \$last = count(\$this->_children) - 1; + return \$this->_children[\$last]; + } + + return $peerClassname::retrieveLastChild(\$this, \$con); + } + return false; + } +"; + } + + protected function addRetrievePrevSibling(&$script) + { + $script .= " + /** + * Gets prev sibling for the given node if it exists + * + * @param PropelPDO \$con Connection to use. + * @return mixed Propel object if exists else false + */ + public function retrievePrevSibling(PropelPDO \$con = null) + { + if (\$this->hasPrevSibling(\$con)) { + return \$this->prevSibling; + } + return \$this->hasPrevSibling; + } +"; + } + + protected function addRetrieveNextSibling(&$script) + { + $script .= " + /** + * Gets next sibling for the given node if it exists + * + * @param PropelPDO \$con Connection to use. + * @return mixed Propel object if exists else false + */ + public function retrieveNextSibling(PropelPDO \$con = null) + { + if (\$this->hasNextSibling(\$con)) { + return \$this->nextSibling; + } + return \$this->hasNextSibling; + } +"; + } + + protected function addInsertAsFirstChildOf(&$script) + { + $objectClassName = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Inserts as first child of given destination node \$parent + * + * @param $objectClassName \$parent Propel object for destination node + * @param PropelPDO \$con Connection to use. + * @return $objectClassName The current object (for fluent API support) + * @throws PropelException - if this object already exists + */ + public function insertAsFirstChildOf(NodeObject \$parent, PropelPDO \$con = null) + { + if (!\$this->isNew()) + { + throw new PropelException(\"$objectClassName must be new.\"); + } + $peerClassname::insertAsFirstChildOf(\$this, \$parent, \$con); + return \$this; + } +"; + } + + protected function addInsertAsLastChildOf(&$script) + { + $objectClassName = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Inserts as last child of given destination node \$parent + * + * @param $objectClassName \$parent Propel object for destination node + * @param PropelPDO \$con Connection to use. + * @return $objectClassName The current object (for fluent API support) + * @throws PropelException - if this object already exists + */ + public function insertAsLastChildOf(NodeObject \$parent, PropelPDO \$con = null) + { + if (!\$this->isNew()) + { + throw new PropelException(\"$objectClassName must be new.\"); + } + $peerClassname::insertAsLastChildOf(\$this, \$parent, \$con); + return \$this; + } +"; + } + + protected function addInsertAsPrevSiblingOf(&$script) + { + $objectClassName = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Inserts \$node as previous sibling to given destination node \$dest + * + * @param $objectClassName \$dest Propel object for destination node + * @param PropelPDO \$con Connection to use. + * @return $objectClassName The current object (for fluent API support) + * @throws PropelException - if this object already exists + */ + public function insertAsPrevSiblingOf(NodeObject \$dest, PropelPDO \$con = null) + { + if (!\$this->isNew()) + { + throw new PropelException(\"$objectClassName must be new.\"); + } + $peerClassname::insertAsPrevSiblingOf(\$this, \$dest, \$con); + return \$this; + } +"; + } + + protected function addInsertAsNextSiblingOf(&$script) + { + $objectClassName = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Inserts \$node as next sibling to given destination node \$dest + * + * @param $objectClassName \$dest Propel object for destination node + * @param PropelPDO \$con Connection to use. + * @return $objectClassName The current object (for fluent API support) + * @throws PropelException - if this object already exists + */ + public function insertAsNextSiblingOf(NodeObject \$dest, PropelPDO \$con = null) + { + if (!\$this->isNew()) + { + throw new PropelException(\"$objectClassName must be new.\"); + } + $peerClassname::insertAsNextSiblingOf(\$this, \$dest, \$con); + return \$this; + } +"; + } + + protected function addMoveToFirstChildOf(&$script) + { + $objectClassName = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Moves node to be first child of \$parent + * + * @param $objectClassName \$parent Propel object for destination node + * @param PropelPDO \$con Connection to use. + * @return $objectClassName The current object (for fluent API support) + */ + public function moveToFirstChildOf(NodeObject \$parent, PropelPDO \$con = null) + { + if (\$this->isNew()) + { + throw new PropelException(\"$objectClassName must exist in tree.\"); + } + $peerClassname::moveToFirstChildOf(\$parent, \$this, \$con); + return \$this; + } +"; + } + + protected function addMoveToLastChildOf(&$script) + { + $objectClassName = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Moves node to be last child of \$parent + * + * @param $objectClassName \$parent Propel object for destination node + * @param PropelPDO \$con Connection to use. + * @return $objectClassName The current object (for fluent API support) + */ + public function moveToLastChildOf(NodeObject \$parent, PropelPDO \$con = null) + { + if (\$this->isNew()) + { + throw new PropelException(\"$objectClassName must exist in tree.\"); + } + $peerClassname::moveToLastChildOf(\$parent, \$this, \$con); + return \$this; + } +"; + } + + protected function addMoveToPrevSiblingOf(&$script) + { + $objectClassName = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Moves node to be prev sibling to \$dest + * + * @param $objectClassName \$dest Propel object for destination node + * @param PropelPDO \$con Connection to use. + * @return $objectClassName The current object (for fluent API support) + */ + public function moveToPrevSiblingOf(NodeObject \$dest, PropelPDO \$con = null) + { + if (\$this->isNew()) + { + throw new PropelException(\"$objectClassName must exist in tree.\"); + } + $peerClassname::moveToPrevSiblingOf(\$dest, \$this, \$con); + return \$this; + } +"; + } + + protected function addMoveToNextSiblingOf(&$script) + { + $objectClassName = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Moves node to be next sibling to \$dest + * + * @param $objectClassName \$dest Propel object for destination node + * @param PropelPDO \$con Connection to use. + * @return $objectClassName The current object (for fluent API support) + */ + public function moveToNextSiblingOf(NodeObject \$dest, PropelPDO \$con = null) + { + if (\$this->isNew()) + { + throw new PropelException(\"$objectClassName must exist in tree.\"); + } + $peerClassname::moveToNextSiblingOf(\$dest, \$this, \$con); + return \$this; + } +"; + } + + protected function addInsertAsParentOf(&$script) + { + $objectClassName = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Inserts node as parent of given node. + * + * @param $objectClassName \$node Propel object for destination node + * @param PropelPDO \$con Connection to use. + * @return $objectClassName The current object (for fluent API support) + */ + public function insertAsParentOf(NodeObject \$node, PropelPDO \$con = null) + { + $peerClassname::insertAsParentOf(\$this, \$node, \$con); + return \$this; + } +"; + } + + protected function addGetLeft(&$script) + { + $table = $this->getTable(); + + foreach ($table->getColumns() as $col) { + if ($col->isNestedSetLeftKey()) { + $left_col_getter_name = 'get'.$col->getPhpName(); + break; + } + } + + $script .= " + /** + * Wraps the getter for the left value + * + * @return int + */ + public function getLeftValue() + { + return \$this->$left_col_getter_name(); + } +"; + } + + protected function addGetRight(&$script) + { + $table = $this->getTable(); + + foreach ($table->getColumns() as $col) { + if ($col->isNestedSetRightKey()) { + $right_col_getter_name = 'get'.$col->getPhpName(); + break; + } + } + + $script .= " + /** + * Wraps the getter for the right value + * + * @return int + */ + public function getRightValue() + { + return \$this->$right_col_getter_name(); + } +"; + } + + protected function addGetScopeId(&$script) + { + $table = $this->getTable(); + + $scope_col_getter_name = null; + foreach ($table->getColumns() as $col) { + if ($col->isTreeScopeKey()) { + $scope_col_getter_name = 'get'.$col->getPhpName(); + break; + } + } + + $script .= " + /** + * Wraps the getter for the scope value + * + * @return int or null if scope is disabled + */ + public function getScopeIdValue() + {"; + if ($scope_col_getter_name) { + $script .= " + return \$this->$scope_col_getter_name();"; + } else { + $script .= " + return null;"; + } + $script .= " + } +"; + } + + protected function addSetLeft(&$script) + { + $objectClassName = $this->getStubObjectBuilder()->getClassname(); + $table = $this->getTable(); + + foreach ($table->getColumns() as $col) { + if ($col->isNestedSetLeftKey()) { + $left_col_setter_name = 'set'.$col->getPhpName(); + break; + } + } + + $script .= " + /** + * Set the value left column + * + * @param int \$v new value + * @return $objectClassName The current object (for fluent API support) + */ + public function setLeftValue(\$v) + { + \$this->$left_col_setter_name(\$v); + return \$this; + } +"; + } + + protected function addSetRight(&$script) + { + $objectClassName = $this->getStubObjectBuilder()->getClassname(); + $table = $this->getTable(); + + foreach ($table->getColumns() as $col) { + if ($col->isNestedSetRightKey()) { + $right_col_setter_name = 'set'.$col->getPhpName(); + break; + } + } + + $script .= " + /** + * Set the value of right column + * + * @param int \$v new value + * @return $objectClassName The current object (for fluent API support) + */ + public function setRightValue(\$v) + { + \$this->$right_col_setter_name(\$v); + return \$this; + } +"; + } + + protected function addSetScopeId(&$script) + { + $objectClassName = $this->getStubObjectBuilder()->getClassname(); + $table = $this->getTable(); + + $scope_col_setter_name = null; + foreach ($table->getColumns() as $col) { + if ($col->isTreeScopeKey()) { + $scope_col_setter_name = 'set'.$col->getPhpName(); + break; + } + } + + $script .= " + /** + * Set the value of scope column + * + * @param int \$v new value + * @return $objectClassName The current object (for fluent API support) + */ + public function setScopeIdValue(\$v) + {"; + if ($scope_col_setter_name) { + $script .= " + \$this->$scope_col_setter_name(\$v);"; + } + $script .= " + return \$this; + } +"; + + } + +} // PHP5NestedSetBuilder diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5NestedSetPeerBuilder.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5NestedSetPeerBuilder.php new file mode 100644 index 0000000..28d0ff2 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5NestedSetPeerBuilder.php @@ -0,0 +1,1737 @@ +. + */ + +require_once 'propel/engine/builder/om/PeerBuilder.php'; + +/** + * Generates a PHP5 tree nested set Peer class for user object model (OM). + * + * This class produces the base tree nested set object class (e.g. BaseMyTable) which contains all + * the custom-built accessor and setter methods. + * + * This class replaces the Node.tpl, with the intent of being easier for users + * to customize (through extending & overriding). + * + * @author heltem + * @package propel.engine.builder.om.php5 + */ +class PHP5NestedSetPeerBuilder extends PeerBuilder { + + /** + * Gets the package for the [base] object classes. + * @return string + */ + public function getPackage() + { + return parent::getPackage() . ".om"; + } + + /** + * Returns the name of the current class being built. + * @return string + */ + public function getUnprefixedClassname() + { + return $this->getBuildProperty('basePrefix') . $this->getStubObjectBuilder()->getUnprefixedClassname() . 'NestedSetPeer'; + } + + /** + * Adds the include() statements for files that this class depends on or utilizes. + * @param string &$script The script will be modified in this method. + */ + protected function addIncludes(&$script) + { + $script .=" +require '".$this->getPeerBuilder()->getClassFilePath()."'; +"; + } // addIncludes() + + /** + * Adds class phpdoc comment and openning of class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassOpen(&$script) + { + + $table = $this->getTable(); + $tableName = $table->getName(); + $tableDesc = $table->getDescription(); + + $script .= " +/** + * Base static class for performing query operations on the tree contained by the '$tableName' table. + * + * $tableDesc + *"; + if ($this->getBuildProperty('addTimeStamp')) { + $now = strftime('%c'); + $script .= " + * This class was autogenerated by Propel " . $this->getBuildProperty('version') . " on: + * + * $now + *"; + } + $script .= " + * @package ".$this->getPackage()." + */ +abstract class ".$this->getClassname()." extends ".$this->getPeerBuilder()->getClassName()." implements NodePeer { +"; + } + + /** + * Specifies the methods that are added as part of the basic OM class. + * This can be overridden by subclasses that wish to add more methods. + * @see ObjectBuilder::addClassBody() + */ + protected function addClassBody(&$script) + { + $table = $this->getTable(); + + // FIXME + // - Probably the build needs to be customized for supporting + // tables that are "aliases". -- definitely a fringe usecase, though. + + $this->addConstants($script); + + $this->addCreateRoot($script); + + $this->addRetrieveRoot($script); + + $this->addInsertAsFirstChildOf($script); + $this->addInsertAsLastChildOf($script); + $this->addInsertAsPrevSiblingOf($script); + $this->addInsertAsNextSiblingOf($script); + $this->addInsertAsParentOf($script); + + $this->addInsertRoot($script); + $this->addInsertParent($script); + + $this->addDeleteRoot($script); + $this->addDeleteNode($script); + + $this->addMoveToFirstChildOf($script); + $this->addMoveToLastChildOf($script); + $this->addMoveToPrevSiblingOf($script); + $this->addMoveToNextSiblingOf($script); + + $this->addRetrieveFirstChild($script); + $this->addRetrieveLastChild($script); + $this->addRetrievePrevSibling($script); + $this->addRetrieveNextSibling($script); + + $this->addRetrieveTree($script); + $this->addRetrieveBranch($script); + $this->addRetrieveChildren($script); + $this->addRetrieveDescendants($script); + $this->addRetrieveSiblings($script); + $this->addRetrieveParent($script); + + $this->addGetLevel($script); + $this->addGetNumberOfChildren($script); + $this->addGetNumberOfDescendants($script); + $this->addGetPath($script); + + $this->addIsValid($script); + $this->addIsRoot($script); + $this->addIsLeaf($script); + $this->addIsChildOf($script); + $this->addIsChildOfOrSiblingTo($script); + $this->addIsEqualTo($script); + + $this->addHasParent($script); + $this->addHasPrevSibling($script); + $this->addHasNextSibling($script); + $this->addHasChildren($script); + + $this->addDeleteDescendants($script); + + $this->addGetNode($script); + + $this->addHydrateDescendants($script); + $this->addHydrateChildren($script); + + $this->addShiftRParent($script); + $this->addUpdateLoadedNode($script); + $this->addUpdateDBNode($script); + + $this->addShiftRLValues($script); + $this->addShiftRLRange($script); + } + + /** + * Closes class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassClose(&$script) + { + $script .= " +} // " . $this->getClassname() . " +"; + } + + protected function addConstants(&$script) + { + $table = $this->getTable(); + $tableName = $table->getName(); + + $colname = array(); + + foreach ($table->getColumns() as $col) { + if ($col->isNestedSetLeftKey()) { + $colname['left'] = $this->prefixTablename($tableName) . '.' . strtoupper($col->getName()); + } + + if ($col->isNestedSetRightKey()) { + $colname['right'] = $this->prefixTablename($tableName) . '.' . strtoupper($col->getName()); + } + + if ($col->isTreeScopeKey()) { + $colname['scope'] = $this->prefixTablename($tableName) . '.' . strtoupper($col->getName()); + } + + if (3 == count($colname)) { + break; + } + } + + if(!isset($colname['left'])) { + throw new EngineException("One column must have nestedSetLeftKey attribute set to true for [" . $table->getName() . "] table"); + } + + if(!isset($colname['right'])) { + throw new EngineException("One column must have nestedSetRightKey attribute set to true for [" . $table->getName() . "] table"); + } + + $colname['scope'] = isset($colname['scope']) ? $colname['scope'] : null; + + $script .= " + /** + * Left column for the set + */ + const LEFT_COL = " . var_export($colname['left'], true) . "; + + /** + * Right column for the set + */ + const RIGHT_COL = " . var_export($colname['right'], true) . "; + + /** + * Scope column for the set + */ + const SCOPE_COL = " . var_export($colname['scope'], true) . "; +"; + } + + protected function addCreateRoot(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Creates the supplied node as the root node. + * + * @param $objectClassname \$node Propel object for model + * @throws PropelException + */ + public static function createRoot(NodeObject \$node) + { + if (\$node->getLeftValue()) { + throw new PropelException('Cannot turn an existing node into a root node.'); + } + + \$node->setLeftValue(1); + \$node->setRightValue(2); + } +"; + } + + protected function addRetrieveRoot(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Returns the root node for a given scope id + * + * @param int \$scopeId Scope id to determine which root node to return + * @param PropelPDO \$con Connection to use. + * @return $objectClassname Propel object for root node + */ + public static function retrieveRoot(\$scopeId = null, PropelPDO \$con = null) + { + \$c = new Criteria($peerClassname::DATABASE_NAME); + + \$c->add(self::LEFT_COL, 1, Criteria::EQUAL); + + if (self::SCOPE_COL) { + \$c->add(self::SCOPE_COL, \$scopeId, Criteria::EQUAL); + } + + return $peerClassname::doSelectOne(\$c, \$con); + } +"; + } + + protected function addInsertAsFirstChildOf(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Inserts \$child as first child of given \$parent node + * + * @param $objectClassname \$child Propel object for child node + * @param $objectClassname \$parent Propel object for parent node + * @param PropelPDO \$con Connection to use. + * @return void + */ + public static function insertAsFirstChildOf(NodeObject \$child, NodeObject \$parent, PropelPDO \$con = null) + { + // Update \$child node properties + \$child->setLeftValue(\$parent->getLeftValue() + 1); + \$child->setRightValue(\$parent->getLeftValue() + 2); + \$child->setParentNode(\$parent); + + \$sidv = null; + if (self::SCOPE_COL) { + \$child->setScopeIdValue(\$sidv = \$parent->getScopeIdValue()); + } + + // Update database nodes + self::shiftRLValues(\$child->getLeftValue(), 2, \$con, \$sidv); + + // Update all loaded nodes + self::updateLoadedNode(\$parent, 2, \$con); + } +"; + } + + protected function addInsertAsLastChildOf(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Inserts \$child as last child of destination node \$parent + * + * @param $objectClassname \$child Propel object for child node + * @param $objectClassname \$parent Propel object for parent node + * @param PropelPDO \$con Connection to use. + * @return void + */ + public static function insertAsLastChildOf(NodeObject \$child, NodeObject \$parent, PropelPDO \$con = null) + { + // Update \$child node properties + \$child->setLeftValue(\$parent->getRightValue()); + \$child->setRightValue(\$parent->getRightValue() + 1); + \$child->setParentNode(\$parent); + + \$sidv = null; + if (self::SCOPE_COL) { + \$child->setScopeIdValue(\$sidv = \$parent->getScopeIdValue()); + } + + // Update database nodes + self::shiftRLValues(\$child->getLeftValue(), 2, \$con, \$sidv); + + // Update all loaded nodes + self::updateLoadedNode(\$parent, 2, \$con); + } +"; + } + + protected function addInsertAsPrevSiblingOf(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Inserts \$sibling as previous sibling to destination node \$node + * + * @param $objectClassname \$node Propel object for destination node + * @param $objectClassname \$sibling Propel object for source node + * @param PropelPDO \$con Connection to use. + * @return void + */ + public static function insertAsPrevSiblingOf(NodeObject \$node, NodeObject \$sibling, PropelPDO \$con = null) + { + if (\$sibling->isRoot()) { + throw new PropelException('Root nodes cannot have siblings'); + } + + \$node->setLeftValue(\$sibling->getLeftValue()); + \$node->setRightValue(\$sibling->getLeftValue() + 1); + \$node->setParentNode(\$sibling->retrieveParent()); + + \$sidv = null; + if (self::SCOPE_COL) { + \$node->setScopeIdValue(\$sidv = \$sibling->getScopeIdValue()); + } + + // Update database nodes + self::shiftRLValues(\$node->getLeftValue(), 2, \$con, \$sidv); + + // Update all loaded nodes + self::updateLoadedNode(\$sibling->retrieveParent(), 2, \$con); + } +"; + } + + protected function addInsertAsNextSiblingOf(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Inserts \$sibling as next sibling to destination node \$node + * + * @param $objectClassname \$node Propel object for destination node + * @param $objectClassname \$sibling Propel object for source node + * @param PropelPDO \$con Connection to use. + * @return void + */ + public static function insertAsNextSiblingOf(NodeObject \$node, NodeObject \$sibling, PropelPDO \$con = null) + { + if (\$sibling->isRoot()) { + throw new PropelException('Root nodes cannot have siblings'); + } + + \$node->setLeftValue(\$sibling->getRightValue() + 1); + \$node->setRightValue(\$sibling->getRightValue() + 2); + \$node->setParentNode(\$sibling->retrieveParent()); + + \$sidv = null; + if (self::SCOPE_COL) { + \$node->setScopeIdValue(\$sidv = \$sibling->getScopeIdValue()); + } + + // Update database nodes + self::shiftRLValues(\$node->getLeftValue(), 2, \$con, \$sidv); + + // Update all loaded nodes + self::updateLoadedNode(\$sibling->retrieveParent(), 2, \$con); + } +"; + } + + protected function addInsertAsParentOf(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Inserts \$parent as parent of given node. + * + * @param $objectClassname \$parent Propel object for given parent node + * @param $objectClassname \$node Propel object for given destination node + * @param PropelPDO \$con Connection to use. + * @return void + */ + public static function insertAsParentOf(NodeObject \$parent, NodeObject \$node, PropelPDO \$con = null) + { + \$sidv = null; + if (self::SCOPE_COL) { + \$sidv = \$node->getScopeIdValue(); + } + + self::shiftRLValues(\$node->getLeftValue(), 1, \$con, \$sidv); + self::shiftRLValues(\$node->getRightValue() + 2, 1, \$con, \$sidv); + + if (self::SCOPE_COL) { + \$parent->setScopeIdValue(\$sidv); + } + + \$parent->setLeftValue(\$node->getLeftValue()); + \$parent->setRightValue(\$node->getRightValue() + 2); + + \$previous_parent = \$node->retrieveParent(); + \$parent->setParentNode(\$previous_parent); + \$node->setParentNode(\$parent); + + \$node->save(\$con); + + // Update all loaded nodes + self::updateLoadedNode(\$previous_parent, 2, \$con); + } +"; + } + + protected function addInsertRoot(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Inserts \$node as root node + * + * @param $objectClassname \$node Propel object as root node + * @param PropelPDO \$con Connection to use. + * @return void + */ + public static function insertRoot(NodeObject \$node, PropelPDO \$con = null) + { + \$sidv = null; + if (self::SCOPE_COL) { + \$sidv = \$node->getScopeIdValue(); + } + + $peerClassname::insertAsParentOf($peerClassname::retrieveRoot(\$sidv, \$con), \$node, \$con); + } +"; + } + + protected function addInsertParent(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Inserts \$parent as parent to destination node \$child + * + * @deprecated 1.3 - 2007/11/06 + * @see insertAsParentOf() + * @param $objectClassname \$child Propel object to become child node + * @param $objectClassname \$parent Propel object as parent node + * @param PropelPDO \$con Connection to use. + * @return void + */ + public static function insertParent(NodeObject \$child, NodeObject \$parent, PropelPDO \$con = null) + { + self::insertAsParentOf(\$parent, \$child, \$con); + } +"; + } + + protected function addDeleteRoot(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Delete root node + * + * @param PropelPDO \$con Connection to use. + * @return boolean Deletion status + */ + public static function deleteRoot(\$scopeId = null, PropelPDO \$con = null) + { + if (!self::SCOPE_COL) { + \$scopeId = null; + } + \$root = $peerClassname::retrieveRoot(\$scopeId, \$con); + if ($peerClassname::getNumberOfChildren(\$root) == 1) { + return $peerClassname::deleteNode(\$root, \$con); + } else { + return false; + } + } +"; + } + + protected function addDeleteNode(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Delete \$dest node + * + * @param $objectClassname \$dest Propel object node to delete + * @param PropelPDO \$con Connection to use. + * @return boolean Deletion status + */ + public static function deleteNode(NodeObject \$dest, PropelPDO \$con = null) + { + if (\$dest->getLeftValue() == 1) { + // deleting root implies conditions (see deleteRoot() method) + return $peerClassname::deleteRoot(\$con); + } + + \$sidv = null; + if (self::SCOPE_COL) { + \$sidv = \$dest->getScopeIdValue(); + } + + self::shiftRLRange(\$dest->getLeftValue(), \$dest->getRightValue(), -1, \$con, \$sidv); + self::shiftRLValues(\$dest->getRightValue() + 1, -2, \$con, \$sidv); + return \$dest->delete(\$con); + } +"; + } + + protected function addMoveToFirstChildOf(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Moves \$child to be first child of \$parent + * + * @param $objectClassname \$parent Propel object for parent node + * @param $objectClassname \$child Propel object for child node + * @param PropelPDO \$con Connection to use. + * @return void + */ + public static function moveToFirstChildOf(NodeObject \$parent, NodeObject \$child, PropelPDO \$con = null) + { + if (\$parent->getScopeIdValue() != \$child->getScopeIdValue()) { + throw new PropelException('Moving nodes across trees is not supported'); + } + \$destLeft = \$parent->getLeftValue() + 1; + self::updateDBNode(\$child, \$destLeft, \$con); + + // Update all loaded nodes + self::updateLoadedNode(\$parent, 2, \$con); + } +"; + } + + protected function addMoveToLastChildOf(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Moves \$child to be last child of \$parent + * + * @param $objectClassname \$parent Propel object for parent node + * @param $objectClassname \$child Propel object for child node + * @param PropelPDO \$con Connection to use. + * @return void + */ + public static function moveToLastChildOf(NodeObject \$parent, NodeObject \$child, PropelPDO \$con = null) + { + if (\$parent->getScopeIdValue() != \$child->getScopeIdValue()) { + throw new PropelException('Moving nodes across trees is not supported'); + } + \$destLeft = \$parent->getRightValue(); + self::updateDBNode(\$child, \$destLeft, \$con); + + // Update all loaded nodes + self::updateLoadedNode(\$parent, 2, \$con); + } +"; + } + + protected function addMoveToPrevSiblingOf(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Moves \$node to be prev sibling to \$dest + * + * @param $objectClassname \$dest Propel object for destination node + * @param $objectClassname \$node Propel object for source node + * @param PropelPDO \$con Connection to use. + * @return void + */ + public static function moveToPrevSiblingOf(NodeObject \$dest, NodeObject \$node, PropelPDO \$con = null) + { + if (\$dest->getScopeIdValue() != \$node->getScopeIdValue()) { + throw new PropelException('Moving nodes across trees is not supported'); + } + \$destLeft = \$dest->getLeftValue(); + self::updateDBNode(\$node, \$destLeft, \$con); + + // Update all loaded nodes + self::updateLoadedNode(\$dest->retrieveParent(), 2, \$con); + } +"; + } + + protected function addMoveToNextSiblingOf(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Moves \$node to be next sibling to \$dest + * + * @param $objectClassname \$dest Propel object for destination node + * @param $objectClassname \$node Propel object for source node + * @param PropelPDO \$con Connection to use. + * @return void + */ + public static function moveToNextSiblingOf(NodeObject \$dest, NodeObject \$node, PropelPDO \$con = null) + { + if (\$dest->getScopeIdValue() != \$node->getScopeIdValue()) { + throw new PropelException('Moving nodes across trees is not supported'); + } + \$destLeft = \$dest->getRightValue(); + \$destLeft = \$destLeft + 1; + self::updateDBNode(\$node, \$destLeft, \$con); + + // Update all loaded nodes + self::updateLoadedNode(\$dest->retrieveParent(), 2, \$con); + } +"; + } + + protected function addRetrieveFirstChild(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Gets first child for the given node if it exists + * + * @param $objectClassname \$node Propel object for src node + * @param PropelPDO \$con Connection to use. + * @return mixed Propel object if exists else false + */ + public static function retrieveFirstChild(NodeObject \$node, PropelPDO \$con = null) + { + \$c = new Criteria($peerClassname::DATABASE_NAME); + \$c->add(self::LEFT_COL, \$node->getLeftValue() + 1, Criteria::EQUAL); + if (self::SCOPE_COL) { + \$c->add(self::SCOPE_COL, \$node->getScopeIdValue(), Criteria::EQUAL); + } + + return $peerClassname::doSelectOne(\$c, \$con); + } +"; + } + + protected function addRetrieveLastChild(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Gets last child for the given node if it exists + * + * @param $objectClassname \$node Propel object for src node + * @param PropelPDO \$con Connection to use. + * @return mixed Propel object if exists else false + */ + public static function retrieveLastChild(NodeObject \$node, PropelPDO \$con = null) + { + \$c = new Criteria($peerClassname::DATABASE_NAME); + \$c->add(self::RIGHT_COL, \$node->getRightValue() - 1, Criteria::EQUAL); + if (self::SCOPE_COL) { + \$c->add(self::SCOPE_COL, \$node->getScopeIdValue(), Criteria::EQUAL); + } + + return $peerClassname::doSelectOne(\$c, \$con); + } +"; + } + + protected function addRetrievePrevSibling(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Gets prev sibling for the given node if it exists + * + * @param $objectClassname \$node Propel object for src node + * @param PropelPDO \$con Connection to use. + * @return mixed Propel object if exists else null + */ + public static function retrievePrevSibling(NodeObject \$node, PropelPDO \$con = null) + { + \$c = new Criteria($peerClassname::DATABASE_NAME); + \$c->add(self::RIGHT_COL, \$node->getLeftValue() - 1, Criteria::EQUAL); + if (self::SCOPE_COL) { + \$c->add(self::SCOPE_COL, \$node->getScopeIdValue(), Criteria::EQUAL); + } + \$prevSibling = $peerClassname::doSelectOne(\$c, \$con); + \$node->setPrevSibling(\$prevSibling); + return \$prevSibling; + } +"; + } + + protected function addRetrieveNextSibling(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Gets next sibling for the given node if it exists + * + * @param $objectClassname \$node Propel object for src node + * @param PropelPDO \$con Connection to use. + * @return mixed Propel object if exists else false + */ + public static function retrieveNextSibling(NodeObject \$node, PropelPDO \$con = null) + { + \$c = new Criteria($peerClassname::DATABASE_NAME); + \$c->add(self::LEFT_COL, \$node->getRightValue() + 1, Criteria::EQUAL); + if (self::SCOPE_COL) { + \$c->add(self::SCOPE_COL, \$node->getScopeIdValue(), Criteria::EQUAL); + } + \$nextSibling = $peerClassname::doSelectOne(\$c, \$con); + \$node->setNextSibling(\$nextSibling); + return \$nextSibling; + } +"; + } + + protected function addRetrieveTree(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Retrieves the entire tree from root + * + * @param PropelPDO \$con Connection to use. + */ + public static function retrieveTree(\$scopeId = null, PropelPDO \$con = null) + { + \$c = new Criteria($peerClassname::DATABASE_NAME); + \$c->addAscendingOrderByColumn(self::LEFT_COL); + if (self::SCOPE_COL) { + \$c->add(self::SCOPE_COL, \$scopeId, Criteria::EQUAL); + } + \$stmt = $peerClassname::doSelectStmt(\$c, \$con); + if (false !== (\$row = \$stmt->fetch(PDO::FETCH_NUM))) { + \$omClass = $peerClassname::getOMClass(\$row, 0); + \$cls = substr('.'.\$omClass, strrpos('.'.\$omClass, '.') + 1); + + \$key = ".$peerClassname."::getPrimaryKeyHashFromRow(\$row, 0); + if (null === (\$root = ".$peerClassname."::getInstanceFromPool(\$key))) { + " . $this->buildObjectInstanceCreationCode('$root', '$cls') . " + \$root->hydrate(\$row); + } + + \$root->setLevel(0); + $peerClassname::hydrateDescendants(\$root, \$stmt); + $peerClassname::addInstanceToPool(\$root); + + \$stmt->closeCursor(); + return \$root; + } + return false; + } +"; + } + + protected function addRetrieveBranch(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Retrieves the entire tree from parent \$node + * + * @param $objectClassname \$node Propel object for parent node + * @param PropelPDO \$con Connection to use. + */ + public static function retrieveBranch(NodeObject \$node, PropelPDO \$con = null) + { + return $peerClassname::retrieveDescendants(\$node, \$con); + } +"; + } + + protected function addRetrieveChildren(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Gets direct children for the node + * + * @param $objectClassname \$node Propel object for parent node + * @param PropelPDO \$con Connection to use. + */ + public static function retrieveChildren(NodeObject \$node, PropelPDO \$con = null) + { + \$c = new Criteria($peerClassname::DATABASE_NAME); + \$c->addAscendingOrderByColumn(self::LEFT_COL); + if (self::SCOPE_COL) { + \$c->add(self::SCOPE_COL, \$node->getScopeIdValue(), Criteria::EQUAL); + } + \$c->add(self::LEFT_COL, \$node->getLeftValue(), Criteria::GREATER_THAN); + \$c->addAnd(self::RIGHT_COL, \$node->getRightValue(), Criteria::LESS_THAN); + \$stmt = $peerClassname::doSelectStmt(\$c, \$con); + + return $peerClassname::hydrateChildren(\$node, \$stmt); + } +"; + } + + protected function addRetrieveDescendants(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Gets all descendants for the node + * + * @param $objectClassname \$node Propel object for parent node + * @param PropelPDO \$con Connection to use. + */ + public static function retrieveDescendants(NodeObject \$node, PropelPDO \$con = null) + { + \$c = new Criteria($peerClassname::DATABASE_NAME); + \$c->addAscendingOrderByColumn(self::LEFT_COL); + if (self::SCOPE_COL) { + \$c->add(self::SCOPE_COL, \$node->getScopeIdValue(), Criteria::EQUAL); + } + \$c->add(self::LEFT_COL, \$node->getLeftValue(), Criteria::GREATER_THAN); + \$c->addAnd(self::RIGHT_COL, \$node->getRightValue(), Criteria::LESS_THAN); + \$stmt = $peerClassname::doSelectStmt(\$c, \$con); + + return $peerClassname::hydrateDescendants(\$node, \$stmt); + } +"; + } + + protected function addRetrieveSiblings(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Gets all siblings for the node + * + * @param $objectClassname \$node Propel object for src node + * @param PropelPDO \$con Connection to use. + */ + public static function retrieveSiblings(NodeObject \$node, PropelPDO \$con = null) + { + \$parent = $peerClassname::retrieveParent(\$node, \$con); + \$siblings = $peerClassname::retrieveChildren(\$parent, \$con); + + return \$siblings; + } +"; + } + + protected function addRetrieveParent(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Gets immediate ancestor for the given node if it exists + * + * @param $objectClassname \$node Propel object for src node + * @param PropelPDO \$con Connection to use. + * @return mixed Propel object if exists else null + */ + public static function retrieveParent(NodeObject \$node, PropelPDO \$con = null) + { + \$c = new Criteria($peerClassname::DATABASE_NAME); + \$c1 = \$c->getNewCriterion(self::LEFT_COL, \$node->getLeftValue(), Criteria::LESS_THAN); + \$c2 = \$c->getNewCriterion(self::RIGHT_COL, \$node->getRightValue(), Criteria::GREATER_THAN); + + \$c1->addAnd(\$c2); + + \$c->add(\$c1); + if (self::SCOPE_COL) { + \$c->add(self::SCOPE_COL, \$node->getScopeIdValue(), Criteria::EQUAL); + } + \$c->addAscendingOrderByColumn(self::RIGHT_COL); + + \$parent = $peerClassname::doSelectOne(\$c, \$con); + + \$node->setParentNode(\$parent); + + return \$parent; + } +"; + } + + protected function addGetLevel(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Gets level for the given node + * + * @param $objectClassname \$node Propel object for src node + * @param PropelPDO \$con Connection to use. + * @return int Level for the given node + */ + public static function getLevel(NodeObject \$node, PropelPDO \$con = null) + { + if (\$con === null) { + \$con = Propel::getConnection($peerClassname::DATABASE_NAME, Propel::CONNECTION_READ); + } + + \$sql = \"SELECT COUNT(*) AS level FROM \" . self::TABLE_NAME . \" WHERE \" . self::LEFT_COL . \" < :left AND \" . self::RIGHT_COL . \" > :right\"; + + if (self::SCOPE_COL) { + \$sql .= ' AND ' . self::SCOPE_COL . ' = :scope'; + } + + \$stmt = \$con->prepare(\$sql); + \$stmt->bindValue(':left', \$node->getLeftValue(), PDO::PARAM_INT); + \$stmt->bindValue(':right', \$node->getRightValue(), PDO::PARAM_INT); + if (self::SCOPE_COL) { + \$stmt->bindValue(':scope', \$node->getScopeIdValue()); + } + \$stmt->execute(); + \$row = \$stmt->fetch(); + return \$row['level']; + } +"; + } + + protected function addGetNumberOfChildren(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Gets number of direct children for given node + * + * @param $objectClassname \$node Propel object for src node + * @param PropelPDO \$con Connection to use. + * @return int Level for the given node + */ + public static function getNumberOfChildren(NodeObject \$node, PropelPDO \$con = null) + { + \$children = $peerClassname::retrieveChildren(\$node); + return count(\$children); + } +"; + } + + protected function addGetNumberOfDescendants(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Gets number of descendants for given node + * + * @param $objectClassname \$node Propel object for src node + * @param PropelPDO \$con Connection to use. + * @return int Level for the given node + */ + public static function getNumberOfDescendants(NodeObject \$node, PropelPDO \$con = null) + { + \$right = \$node->getRightValue(); + \$left = \$node->getLeftValue(); + \$num = (\$right - \$left - 1) / 2; + return \$num; + } +"; + } + + protected function addGetPath(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Returns path to a specific node as an array, useful to create breadcrumbs + * + * @param $objectClassname \$node Propel object of node to create path to + * @param PropelPDO \$con Connection to use. + * @return array Array in order of heirarchy + */ + public static function getPath(NodeObject \$node, PropelPDO \$con = null) + { + \$criteria = new Criteria(); + if (self::SCOPE_COL) { + \$criteria->add(self::SCOPE_COL, \$node->getScopeIdValue(), Criteria::EQUAL); + } + \$criteria->add(self::LEFT_COL, \$node->getLeftValue(), Criteria::LESS_EQUAL); + \$criteria->add(self::RIGHT_COL, \$node->getRightValue(), Criteria::GREATER_EQUAL); + \$criteria->addAscendingOrderByColumn(self::LEFT_COL); + + return self::doSelect(\$criteria, \$con); + } +"; + } + + protected function addIsValid(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Tests if node is valid + * + * @param $objectClassname \$node Propel object for src node + * @return bool + */ + public static function isValid(NodeObject \$node = null) + { + if (is_object(\$node) && \$node->getRightValue() > \$node->getLeftValue()) { + return true; + } else { + return false; + } + } +"; + } + + protected function addIsRoot(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Tests if node is a root + * + * @param $objectClassname \$node Propel object for src node + * @return bool + */ + public static function isRoot(NodeObject \$node) + { + return (\$node->getLeftValue()==1); + } +"; + } + + protected function addIsLeaf(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Tests if node is a leaf + * + * @param $objectClassname \$node Propel object for src node + * @return bool + */ + public static function isLeaf(NodeObject \$node) + { + return ((\$node->getRightValue()-\$node->getLeftValue())==1); + } +"; + } + + protected function addIsChildOf(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Tests if \$child is a child of \$parent + * + * @param $objectClassname \$child Propel object for node + * @param $objectClassname \$parent Propel object for node + * @return bool + */ + public static function isChildOf(NodeObject \$child, NodeObject \$parent) + { + return ((\$child->getLeftValue()>\$parent->getLeftValue()) && (\$child->getRightValue()<\$parent->getRightValue())); + } +"; + } + + protected function addIsChildOfOrSiblingTo(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Tests if \$node1 is a child of or equal to \$node2 + * + * @deprecated 1.3 - 2007/11/09 + * @param $objectClassname \$node1 Propel object for node + * @param $objectClassname \$node2 Propel object for node + * @return bool + */ + public static function isChildOfOrSiblingTo(NodeObject \$node1, NodeObject \$node2) + { + return ((\$node1->getLeftValue()>=\$node2->getLeftValue()) and (\$node1->getRightValue()<=\$node2->getRightValue())); + } +"; + } + + protected function addIsEqualTo(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Tests if \$node1 is equal to \$node2 + * + * @param $objectClassname \$node1 Propel object for node + * @param $objectClassname \$node2 Propel object for node + * @return bool + */ + public static function isEqualTo(NodeObject \$node1, NodeObject \$node2) + { + \$also = true; + if (self::SCOPE_COL) { + \$also = (\$node1->getScopeIdValue() === \$node2->getScopeIdValue()); + } + return \$node1->getLeftValue() == \$node2->getLeftValue() && \$node1->getRightValue() == \$node2->getRightValue() && \$also; + } +"; + } + + protected function addHasParent(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Tests if \$node has an ancestor + * + * @param $objectClassname \$node Propel object for node + * @param PropelPDO \$con Connection to use. + * @return bool + */ + public static function hasParent(NodeObject \$node, PropelPDO \$con = null) + { + return $peerClassname::isValid($peerClassname::retrieveParent(\$node, \$con)); + } +"; + } + + protected function addHasPrevSibling(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Tests if \$node has prev sibling + * + * @param $objectClassname \$node Propel object for node + * @param PropelPDO \$con Connection to use. + * @return bool + */ + public static function hasPrevSibling(NodeObject \$node, PropelPDO \$con = null) + { + return $peerClassname::isValid($peerClassname::retrievePrevSibling(\$node, \$con)); + } +"; + } + + protected function addHasNextSibling(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Tests if \$node has next sibling + * + * @param $objectClassname \$node Propel object for node + * @param PropelPDO \$con Connection to use. + * @return bool + */ + public static function hasNextSibling(NodeObject \$node, PropelPDO \$con = null) + { + return $peerClassname::isValid($peerClassname::retrieveNextSibling(\$node, \$con)); + } +"; + } + + protected function addHasChildren(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Tests if \$node has children + * + * @param $objectClassname \$node Propel object for node + * @return bool + */ + public static function hasChildren(NodeObject \$node) + { + return ((\$node->getRightValue()-\$node->getLeftValue())>1); + } +"; + } + + protected function addDeleteDescendants(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Deletes \$node and all of its descendants + * + * @param $objectClassname \$node Propel object for source node + * @param PropelPDO \$con Connection to use. + */ + public static function deleteDescendants(NodeObject \$node, PropelPDO \$con = null) + { + \$left = \$node->getLeftValue(); + \$right = \$node->getRightValue(); + + \$c = new Criteria($peerClassname::DATABASE_NAME); + \$c1 = \$c->getNewCriterion(self::LEFT_COL, \$left, Criteria::GREATER_THAN); + \$c2 = \$c->getNewCriterion(self::RIGHT_COL, \$right, Criteria::LESS_THAN); + + \$c1->addAnd(\$c2); + + \$c->add(\$c1); + if (self::SCOPE_COL) { + \$c->add(self::SCOPE_COL, \$node->getScopeIdValue(), Criteria::EQUAL); + } + \$c->addAscendingOrderByColumn(self::RIGHT_COL); + + \$result = $peerClassname::doDelete(\$c, \$con); + + self::shiftRLValues(\$right + 1, \$left - \$right -1, \$con, \$node->getScopeIdValue()); + + return \$result; + } +"; + } + + protected function addGetNode(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Returns a node given its primary key or the node itself + * + * @param int/$objectClassname \$node Primary key/instance of required node + * @param PropelPDO \$con Connection to use. + * @return object Propel object for model + */ + public static function getNode(\$node, PropelPDO \$con = null) + { + if (is_object(\$node)) { + return \$node; + } else { + \$object = $peerClassname::retrieveByPK(\$node, \$con); + \$rtn = is_object(\$object) ? \$object : false; + return \$rtn; + } + } +"; + } + + protected function addHydrateDescendants(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $table = $this->getTable(); + $script .= " + /** + * Hydrate recursively the descendants of the given node + * @param $objectClassname \$node Propel object for src node + * @param PDOStatement \$stmt Executed PDOStatement + */ + protected static function hydrateDescendants(NodeObject \$node, PDOStatement \$stmt) + { + \$descendants = array(); + \$children = array(); + \$prevSibling = null; +"; + + if (!$table->getChildrenColumn()) { + $script .= " + // set the class once to avoid overhead in the loop + \$cls = $peerClassname::getOMClass(); + \$cls = substr('.'.\$cls, strrpos('.'.\$cls, '.') + 1); +"; + } + + $script .= " + while (\$row = \$stmt->fetch(PDO::FETCH_NUM)) { + \$key = ".$peerClassname."::getPrimaryKeyHashFromRow(\$row, 0); + if (null === (\$child = ".$peerClassname."::getInstanceFromPool(\$key))) {"; + + if ($table->getChildrenColumn()) { + $script .= " + // class must be set each time from the record row + \$cls = ".$peerClassname."::getOMClass(\$row, 0); + \$cls = substr('.'.\$cls, strrpos('.'.\$cls, '.') + 1); +"; + } + + $script .= " + " . $this->buildObjectInstanceCreationCode('$child', '$cls') . " + \$child->hydrate(\$row); + } + + \$child->setLevel(\$node->getLevel() + 1); + \$child->setParentNode(\$node); + if (!empty(\$prevSibling)) { + \$child->setPrevSibling(\$prevSibling); + \$prevSibling->setNextSibling(\$child); + } + + \$descendants[] = \$child; + + if (\$child->hasChildren()) { + \$descendants = array_merge(\$descendants, $peerClassname::hydrateDescendants(\$child, \$stmt)); + } else { + \$child->setChildren(array()); + } + + \$children[] = \$child; + \$prevSibling = \$child; + + $peerClassname::addInstanceToPool(\$child); + if (\$child->getRightValue() + 1 == \$node->getRightValue()) { + \$child->setNextSibling(null); + break; + } + } + \$node->setChildren(\$children); + return \$descendants; + } +"; + } + + protected function addHydrateChildren(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $table = $this->getTable(); + $script .= " + /** + * Hydrate the children of the given node + * @param $objectClassname \$node Propel object for src node + * @param PDOStatement \$stmt Executed PDOStatement + */ + protected static function hydrateChildren(NodeObject \$node, PDOStatement \$stmt) + { + \$children = array(); + \$prevRight = 0; +"; + + if (!$table->getChildrenColumn()) { + $script .= " + // set the class once to avoid overhead in the loop + \$cls = $peerClassname::getOMClass(); + \$cls = substr('.'.\$cls, strrpos('.'.\$cls, '.') + 1); +"; + } + + $script .= " + while (\$row = \$stmt->fetch(PDO::FETCH_NUM)) { + \$key = ".$peerClassname."::getPrimaryKeyHashFromRow(\$row, 0); + if (null === (\$child = ".$peerClassname."::getInstanceFromPool(\$key))) {"; + + if ($table->getChildrenColumn()) { + $script .= " + // class must be set each time from the record row + \$cls = ".$peerClassname."::getOMClass(\$row, 0); + \$cls = substr('.'.\$cls, strrpos('.'.\$cls, '.') + 1); +"; + } + + $script .= " + " . $this->buildObjectInstanceCreationCode('$child', '$cls') . " + \$child->hydrate(\$row); + } + + \$child->setLevel(\$node->getLevel() + 1); + + if (\$child->getRightValue() > \$prevRight) { + \$children[] = \$child; + \$prevRight = \$child->getRightValue(); + } + + if (\$child->getRightValue() + 1 == \$node->getRightValue()) { + break; + } + } + \$node->setChildren(\$children); + return \$children; + } +"; + } + + /** + * @deprecated 1.3 - 2008/03/11 + * Won't be fixed, defect by design + * Never trust it + */ + protected function addShiftRParent(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Adds '\$delta' to all parent R values. + * '\$delta' can also be negative. + * + * @deprecated 1.3 - 2008/03/11 + * @param $objectClassname \$node Propel object for parent node + * @param int \$delta Value to be shifted by, can be negative + * @param PropelPDO \$con Connection to use. + */ + protected static function shiftRParent(NodeObject \$node, \$delta, PropelPDO \$con = null) + { + if (\$node->hasParent(\$con)) { + \$parent = \$node->retrieveParent(); + self::shiftRParent(\$parent, \$delta, \$con); + } + \$node->setRightValue(\$node->getRightValue() + \$delta); + } +"; + } + + protected function addUpdateLoadedNode(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $table = $this->getTable(); + + $script .= " + /** + * Reload all already loaded nodes to sync them with updated db + * + * @param $objectClassname \$node Propel object for parent node + * @param int \$delta Value to be shifted by, can be negative + * @param PropelPDO \$con Connection to use. + */ + protected static function updateLoadedNode(NodeObject \$node, \$delta, PropelPDO \$con = null) + { + if (Propel::isInstancePoolingEnabled()) { + \$keys = array(); + foreach (self::\$instances as \$obj) { + \$keys[] = \$obj->getPrimaryKey(); + } + + if (!empty(\$keys)) { + // We don't need to alter the object instance pool; we're just modifying these ones + // already in the pool. + \$criteria = new Criteria(self::DATABASE_NAME);"; + if (count($table->getPrimaryKey()) === 1) { + $pkey = $table->getPrimaryKey(); + $col = array_shift($pkey); + $script .= " + \$criteria->add(".$this->getColumnConstant($col).", \$keys, Criteria::IN); +"; + } else { + $fields = array(); + foreach ($table->getPrimaryKey() as $k => $col) { + $fields[] = $this->getColumnConstant($col); + }; + $script .= " + + // Loop on each instances in pool + foreach (\$keys as \$values) { + // Create initial Criterion + \$cton = \$criteria->getNewCriterion(" . $fields[0] . ", \$values[0]);"; + unset($fields[0]); + foreach ($fields as $k => $col) { + $script .= " + + // Create next criterion + \$nextcton = \$criteria->getNewCriterion(" . $col . ", \$values[$k]); + // And merge it with the first + \$cton->addAnd(\$nextcton);"; + } + $script .= " + + // Add final Criterion to Criteria + \$criteria->addOr(\$cton); + }"; + } + + $script .= " + \$stmt = $peerClassname::doSelectStmt(\$criteria, \$con); + while (\$row = \$stmt->fetch(PDO::FETCH_NUM)) { + \$key = $peerClassname::getPrimaryKeyHashFromRow(\$row, 0); + if (null !== (\$object = $peerClassname::getInstanceFromPool(\$key))) {"; + $n = 0; + foreach ($table->getColumns() as $col) { + if ($col->isNestedSetLeftKey()) { + $script .= " + \$object->setLeftValue(\$row[$n]);"; + } else if ($col->isNestedSetRightKey()) { + $script .= " + \$object->setRightValue(\$row[$n]);"; + } + $n++; + } + $script .= " + } + } + \$stmt->closeCursor(); + } + } + } +"; + } + + protected function addUpdateDBNode(&$script) + { + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + $script .= " + /** + * Move \$node and its children to location \$destLeft and updates rest of tree + * + * @param $objectClassname \$node Propel object for node to update + * @param int \$destLeft Destination left value + * @param PropelPDO \$con Connection to use. + */ + protected static function updateDBNode(NodeObject \$node, \$destLeft, PropelPDO \$con = null) + { + \$left = \$node->getLeftValue(); + \$right = \$node->getRightValue(); + + \$treeSize = \$right - \$left +1; + + self::shiftRLValues(\$destLeft, \$treeSize, \$con, \$node->getScopeIdValue()); + + if (\$left >= \$destLeft) { // src was shifted too? + \$left += \$treeSize; + \$right += \$treeSize; + } + + // now there's enough room next to target to move the subtree + self::shiftRLRange(\$left, \$right, \$destLeft - \$left, \$con, \$node->getScopeIdValue()); + + // correct values after source + self::shiftRLValues(\$right + 1, -\$treeSize, \$con, \$node->getScopeIdValue()); + } +"; + } + + protected function addShiftRLValues(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Adds '\$delta' to all L and R values that are >= '\$first'. '\$delta' can also be negative. + * + * @param int \$first First node to be shifted + * @param int \$delta Value to be shifted by, can be negative + * @param PropelPDO \$con Connection to use. + */ + protected static function shiftRLValues(\$first, \$delta, PropelPDO \$con = null, \$scopeId = null) + { + if (\$con === null) { + \$con = Propel::getConnection($peerClassname::DATABASE_NAME, Propel::CONNECTION_WRITE); + } + + \$leftUpdateCol = self::LEFT_COL; + \$rightUpdateCol = self::RIGHT_COL; + + // Shift left column values + \$whereCriteria = new Criteria($peerClassname::DATABASE_NAME); + \$criterion = \$whereCriteria->getNewCriterion( + self::LEFT_COL, + \$first, + Criteria::GREATER_EQUAL); + + if (self::SCOPE_COL) { + \$criterion->addAnd( + \$whereCriteria->getNewCriterion( + self::SCOPE_COL, + \$scopeId, + Criteria::EQUAL)); + } + \$whereCriteria->add(\$criterion); + + \$valuesCriteria = new Criteria($peerClassname::DATABASE_NAME); + \$valuesCriteria->add( + self::LEFT_COL, + array('raw' => \$leftUpdateCol . ' + ?', 'value' => \$delta), + Criteria::CUSTOM_EQUAL); + + {$this->basePeerClassname}::doUpdate(\$whereCriteria, \$valuesCriteria, \$con); + + // Shift right column values + \$whereCriteria = new Criteria($peerClassname::DATABASE_NAME); + \$criterion = \$whereCriteria->getNewCriterion( + self::RIGHT_COL, + \$first, + Criteria::GREATER_EQUAL); + + if (self::SCOPE_COL) { + \$criterion->addAnd( + \$whereCriteria->getNewCriterion( + self::SCOPE_COL, + \$scopeId, + Criteria::EQUAL)); + } + \$whereCriteria->add(\$criterion); + + \$valuesCriteria = new Criteria($peerClassname::DATABASE_NAME); + \$valuesCriteria->add( + self::RIGHT_COL, + array('raw' => \$rightUpdateCol . ' + ?', 'value' => \$delta), + Criteria::CUSTOM_EQUAL); + + {$this->basePeerClassname}::doUpdate(\$whereCriteria, \$valuesCriteria, \$con); + } +"; + } + + protected function addShiftRLRange(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $script .= " + /** + * Adds '\$delta' to all L and R values that are >= '\$first' and <= '\$last'. + * '\$delta' can also be negative. + * + * @param int \$first First node to be shifted (L value) + * @param int \$last Last node to be shifted (L value) + * @param int \$delta Value to be shifted by, can be negative + * @param PropelPDO \$con Connection to use. + * @return array Shifted L and R values + */ + protected static function shiftRLRange(\$first, \$last, \$delta, PropelPDO \$con = null, \$scopeId = null) + { + if (\$con === null) { + \$con = Propel::getConnection($peerClassname::DATABASE_NAME, Propel::CONNECTION_WRITE); + } + + \$leftUpdateCol = substr(self::LEFT_COL, strrpos(self::LEFT_COL, '.') + 1); + \$rightUpdateCol = substr(self::RIGHT_COL, strrpos(self::RIGHT_COL, '.') + 1); + + // Shift left column values + \$whereCriteria = new Criteria($peerClassname::DATABASE_NAME); + \$criterion = \$whereCriteria->getNewCriterion(self::LEFT_COL, \$first, Criteria::GREATER_EQUAL); + \$criterion->addAnd(\$whereCriteria->getNewCriterion(self::LEFT_COL, \$last, Criteria::LESS_EQUAL)); + if (self::SCOPE_COL) { + \$criterion->addAnd(\$whereCriteria->getNewCriterion(self::SCOPE_COL, \$scopeId, Criteria::EQUAL)); + } + \$whereCriteria->add(\$criterion); + + \$valuesCriteria = new Criteria($peerClassname::DATABASE_NAME); + \$valuesCriteria->add( + self::LEFT_COL, + array('raw' => \$leftUpdateCol . ' + ?', 'value' => \$delta), + Criteria::CUSTOM_EQUAL); + + {$this->basePeerClassname}::doUpdate(\$whereCriteria, \$valuesCriteria, \$con); + + // Shift right column values + \$whereCriteria = new Criteria($peerClassname::DATABASE_NAME); + \$criterion = \$whereCriteria->getNewCriterion(self::RIGHT_COL, \$first, Criteria::GREATER_EQUAL); + \$criterion->addAnd(\$whereCriteria->getNewCriterion(self::RIGHT_COL, \$last, Criteria::LESS_EQUAL)); + if (self::SCOPE_COL) { + \$criterion->addAnd(\$whereCriteria->getNewCriterion(self::SCOPE_COL, \$scopeId, Criteria::EQUAL)); + } + \$whereCriteria->add(\$criterion); + + \$valuesCriteria = new Criteria($peerClassname::DATABASE_NAME); + \$valuesCriteria->add( + self::RIGHT_COL, + array('raw' => \$rightUpdateCol . ' + ?', 'value' => \$delta), + Criteria::CUSTOM_EQUAL); + + {$this->basePeerClassname}::doUpdate(\$whereCriteria, \$valuesCriteria, \$con); + + return array('left' => \$first + \$delta, 'right' => \$last + \$delta); + } +"; + } + +} // PHP5NestedSetPeerBuilder diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5NodeBuilder.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5NodeBuilder.php new file mode 100644 index 0000000..dc83250 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5NodeBuilder.php @@ -0,0 +1,1115 @@ +. + */ + +require_once 'propel/engine/builder/om/ObjectBuilder.php'; + +/** + * Generates a PHP5 tree node Object class for user object model (OM). + * + * This class produces the base tree node object class (e.g. BaseMyTable) which contains all + * the custom-built accessor and setter methods. + * + * This class replaces the Node.tpl, with the intent of being easier for users + * to customize (through extending & overriding). + * + * @author Hans Lellelid + * @package propel.engine.builder.om.php5 + */ +class PHP5NodeBuilder extends ObjectBuilder { + + /** + * Gets the package for the [base] object classes. + * @return string + */ + public function getPackage() + { + return parent::getPackage() . ".om"; + } + + /** + * Returns the name of the current class being built. + * @return string + */ + public function getUnprefixedClassname() + { + return $this->getBuildProperty('basePrefix') . $this->getStubNodeBuilder()->getUnprefixedClassname(); + } + + /** + * Adds the include() statements for files that this class depends on or utilizes. + * @param string &$script The script will be modified in this method. + */ + protected function addIncludes(&$script) + { + } // addIncludes() + + /** + * Adds class phpdoc comment and openning of class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassOpen(&$script) + { + + $table = $this->getTable(); + $tableName = $table->getName(); + $tableDesc = $table->getDescription(); + + $script .= " +/** + * Base class that represents a row from the '$tableName' table. + * + * $tableDesc + *"; + if ($this->getBuildProperty('addTimeStamp')) { + $now = strftime('%c'); + $script .= " + * This class was autogenerated by Propel " . $this->getBuildProperty('version') . " on: + * + * $now + *"; + } + $script .= " + * @package ".$this->getPackage()." + */ +abstract class ".$this->getClassname()." implements IteratorAggregate { +"; + } + + /** + * Specifies the methods that are added as part of the basic OM class. + * This can be overridden by subclasses that wish to add more methods. + * @see ObjectBuilder::addClassBody() + */ + protected function addClassBody(&$script) + { + $table = $this->getTable(); + + $this->addAttributes($script); + + $this->addConstructor($script); + + $this->addCallOverload($script); + $this->addSetIteratorOptions($script); + $this->addGetIterator($script); + + $this->addGetNodeObj($script); + $this->addGetNodePath($script); + $this->addGetNodeIndex($script); + $this->addGetNodeLevel($script); + + $this->addHasChildNode($script); + $this->addGetChildNodeAt($script); + $this->addGetFirstChildNode($script); + $this->addGetLastChildNode($script); + $this->addGetSiblingNode($script); + + $this->addGetParentNode($script); + $this->addGetAncestors($script); + $this->addIsRootNode($script); + + $this->addSetNew($script); + $this->addSetDeleted($script); + $this->addAddChildNode($script); + $this->addMoveChildNode($script); + $this->addSave($script); + + $this->addDelete($script); + $this->addEquals($script); + + $this->addAttachParentNode($script); + $this->addAttachChildNode($script); + $this->addDetachParentNode($script); + $this->addDetachChildNode($script); + $this->addShiftChildNodes($script); + $this->addInsertNewChildNode($script); + + $this->addAdjustStatus($script); + $this->addAdjustNodePath($script); + + } + + /** + * Closes class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassClose(&$script) + { + $script .= " +} // " . $this->getClassname() . " +"; + } + + + /** + * Adds class attributes. + * @param string &$script The script will be modified in this method. + */ + protected function addAttributes(&$script) + { + $script .= " + /** + * @var ".$this->getStubObjectBuilder()->getClassname()." object wrapped by this node. + */ + protected \$obj = null; + + /** + * The parent node for this node. + * @var ".$this->getStubNodeBuilder()->getClassname()." + */ + protected \$parentNode = null; + + /** + * Array of child nodes for this node. Nodes indexes are one-based. + * @var array + */ + protected \$childNodes = array(); +"; + } + + /** + * Adds the constructor. + * @param string &$script The script will be modified in this method. + */ + protected function addConstructor(&$script) + { + $script .= " + /** + * Constructor. + * + * @param ".$this->getStubObjectBuilder()->getClassname()." \$obj Object wrapped by this node. + */ + public function __construct(\$obj = null) + { + if (\$obj !== null) { + \$this->obj = \$obj; + } else { + \$setNodePath = 'set' . ".$this->getStubNodePeerBuilder()->getClassname()."::NPATH_PHPNAME; + \$this->obj = new ".$this->getStubObjectBuilder()->getClassname()."(); + \$this->obj->\$setNodePath('0'); + } + } +"; + } + + + + protected function addCallOverload(&$script) + { + $script .= " + /** + * Convenience overload for wrapped object methods. + * + * @param string Method name to call on wrapped object. + * @param mixed Parameter accepted by wrapped object set method. + * @return mixed Return value of wrapped object method. + * @throws PropelException Fails if method is not defined for wrapped object. + */ + public function __call(\$name, \$parms) + { + if (method_exists(\$this->obj, \$name)) + return call_user_func_array(array(\$this->obj, \$name), \$parms); + else + throw new PropelException('get method not defined: \$name'); + } +"; + } + + protected function addSetIteratorOptions(&$script) + { + $script .= " + + /** + * Sets the default options for iterators created from this object. + * The options are specified in map format. The following options + * are supported by all iterators. Some iterators may support other + * options: + * + * \"querydb\" - True if nodes should be retrieved from database. + * \"con\" - Connection to use if retrieving from database. + * + * @param string Type of iterator to use (\"pre\", \"post\", \"level\"). + * @param array Map of option name => value. + * @return void + * @todo Implement other iterator types (i.e. post-order, level, etc.) + */ + public function setIteratorOptions(\$type, \$opts) + { + \$this->itType = \$type; + \$this->itOpts = \$opts; + } +"; + } + + protected function addGetIterator(&$script) + { + $script .= " + /** + * Returns a pre-order iterator for this node and its children. + * + * @param string Type of iterator to use (\"pre\", \"post\", \"level\") + * @param array Map of option name => value. + * @return NodeIterator + */ + public function getIterator(\$type = null, \$opts = null) + { + if (\$type === null) + \$type = (isset(\$this->itType) ? \$this->itType : 'Pre'); + + if (\$opts === null) + \$opts = (isset(\$this->itOpts) ? \$this->itOpts : array()); + + \$itclass = ucfirst(strtolower(\$type)) . 'OrderNodeIterator'; + + require_once('propel/om/' . \$itclass . '.php'); + return new \$itclass(\$this, \$opts); + } +"; + } + + protected function addGetNodeObj(&$script) + { + $script .= " + /** + * Returns the object wrapped by this class. + * @return ".$this->getStubObjectBuilder()->getClassname()." + */ + public function getNodeObj() + { + return \$this->obj; + } +"; + } + + protected function addGetNodePath(&$script) + { + $script .= " + /** + * Convenience method for retrieving nodepath. + * @return string + */ + public function getNodePath() + { + \$getNodePath = 'get' . ".$this->getStubNodePeerBuilder()->getClassname()."::NPATH_PHPNAME; + return \$this->obj->\$getNodePath(); + } +"; + } + + protected function addGetNodeIndex(&$script) + { + $script .= " + /** + * Returns one-based node index among siblings. + * @return int + */ + public function getNodeIndex() + { + \$npath =& \$this->getNodePath(); + \$sep = strrpos(\$npath, ".$this->getStubNodePeerBuilder()->getClassname()."::NPATH_SEP); + return (int) (\$sep !== false ? substr(\$npath, \$sep+1) : \$npath); + } +"; + } + + protected function addGetNodeLevel(&$script) + { + $script .= " + /** + * Returns one-based node level within tree (root node is level 1). + * @return int + */ + public function getNodeLevel() + { + return (substr_count(\$this->getNodePath(), ".$this->getStubNodePeerBuilder()->getClassname()."::NPATH_SEP) + 1); + } +"; + } + + protected function addHasChildNode(&$script) + { + $script .= " + /** + * Returns true if specified node is a child of this node. If recurse is + * true, checks if specified node is a descendant of this node. + * + * @param ".$this->getStubNodeBuilder()->getClassname()." Node to look for. + * @param boolean True if strict comparison should be used. + * @param boolean True if all descendants should be checked. + * @return boolean + */ + public function hasChildNode(\$node, \$strict = false, \$recurse = false) + { + foreach (\$this->childNodes as \$childNode) + { + if (\$childNode->equals(\$node, \$strict)) + return true; + + if (\$recurse && \$childNode->hasChildNode(\$node, \$recurse)) + return true; + } + + return false; + } +"; + } + + protected function addGetChildNodeAt(&$script) + { + $script .= " + /** + * Returns child node at one-based index. Retrieves from database if not + * loaded yet. + * + * @param int One-based child node index. + * @param boolean True if child should be retrieved from database. + * @param PropelPDO Connection to use if retrieving from database. + * @return ".$this->getStubNodeBuilder()->getClassname()." + */ + public function getChildNodeAt(\$i, \$querydb = false, PropelPDO \$con = null) + { + if (\$querydb && + !\$this->obj->isNew() && + !\$this->obj->isDeleted() && + !isset(\$this->childNodes[\$i])) + { + \$criteria = new Criteria(".$this->getStubPeerBuilder()->getClassname()."::DATABASE_NAME); + \$criteria->add(".$this->getStubNodePeerBuilder()->getClassname()."::NPATH_COLNAME, \$this->getNodePath() . ".$this->getStubNodePeerBuilder()->getClassname()."::NPATH_SEP . \$i, Criteria::EQUAL); + + if (\$childObj = ".$this->getStubPeerBuilder()->getClassname()."::doSelectOne(\$criteria, \$con)) + \$this->attachChildNode(new ".$this->getStubNodeBuilder()->getClassname()."(\$childObj)); + } + + return (isset(\$this->childNodes[\$i]) ? \$this->childNodes[\$i] : null); + } +"; + } + + protected function addGetFirstChildNode(&$script) + { + $script .= " + /** + * Returns first child node (if any). Retrieves from database if not loaded yet. + * + * @param boolean True if child should be retrieved from database. + * @param PropelPDO Connection to use if retrieving from database. + * @return ".$this->getStubNodeBuilder()->getClassname()." + */ + public function getFirstChildNode(\$querydb = false, PropelPDO \$con = null) + { + return \$this->getChildNodeAt(1, \$querydb, \$con); + } +"; + } + + protected function addGetLastChildNode(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $nodePeerClassname = $this->getStubNodePeerBuilder()->getClassname(); + + $script .= " + /** + * Returns last child node (if any). + * + * @param boolean True if child should be retrieved from database. + * @param PropelPDO Connection to use if retrieving from database. + */ + public function getLastChildNode(\$querydb = false, PropelPDO \$con = null) + { + \$lastNode = null; + + if (\$this->obj->isNew() || \$this->obj->isDeleted()) + { + end(\$this->childNodes); + \$lastNode = (count(\$this->childNodes) ? current(\$this->childNodes) : null); + } + else if (\$querydb) + { + \$db = Propel::getDb($peerClassname::DATABASE_NAME); + \$criteria = new Criteria($peerClassname::DATABASE_NAME); + \$criteria->add($nodePeerClassname::NPATH_COLNAME, \$this->getNodePath() . $nodePeerClassname::NPATH_SEP . '%', Criteria::LIKE); + \$criteria->addAnd($nodePeerClassname::NPATH_COLNAME, \$this->getNodePath() . $nodePeerClassname::NPATH_SEP . '%' . $nodePeerClassname::NPATH_SEP . '%', Criteria::NOT_LIKE); + $peerClassname::addSelectColumns(\$criteria); + \$criteria->addAsColumn('npathlen', \$db->strLength($nodePeerClassname::NPATH_COLNAME)); + \$criteria->addDescendingOrderByColumn('npathlen'); + \$criteria->addDescendingOrderByColumn($nodePeerClassname::NPATH_COLNAME); + + \$lastObj = $peerClassname::doSelectOne(\$criteria, \$con); + + if (\$lastObj !== null) + { + \$lastNode = new ".$this->getStubNodeBuilder()->getClassname()."(\$lastObj); + + end(\$this->childNodes); + \$endNode = (count(\$this->childNodes) ? current(\$this->childNodes) : null); + + if (\$endNode) + { + if (\$endNode->getNodePath() > \$lastNode->getNodePath()) + throw new PropelException('Cached child node inconsistent with database.'); + else if (\$endNode->getNodePath() == \$lastNode->getNodePath()) + \$lastNode = \$endNode; + else + \$this->attachChildNode(\$lastNode); + } + else + { + \$this->attachChildNode(\$lastNode); + } + } + } + + return \$lastNode; + } +"; + } + + protected function addGetSiblingNode(&$script) + { + $script .= " + /** + * Returns next (or previous) sibling node or null. Retrieves from database if + * not loaded yet. + * + * @param boolean True if previous sibling should be returned. + * @param boolean True if sibling should be retrieved from database. + * @param PropelPDO Connection to use if retrieving from database. + * @return ".$this->getStubNodeBuilder()->getClassname()." + */ + public function getSiblingNode(\$prev = false, \$querydb = false, PropelPDO \$con = null) + { + \$nidx = \$this->getNodeIndex(); + + if (\$this->isRootNode()) + { + return null; + } + else if (\$prev) + { + if (\$nidx > 1 && (\$parentNode = \$this->getParentNode(\$querydb, \$con))) + return \$parentNode->getChildNodeAt(\$nidx-1, \$querydb, \$con); + else + return null; + } + else + { + if (\$parentNode = \$this->getParentNode(\$querydb, \$con)) + return \$parentNode->getChildNodeAt(\$nidx+1, \$querydb, \$con); + else + return null; + } + } +"; + } + + protected function addGetParentNode(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $nodePeerClassname = $this->getStubNodePeerBuilder()->getClassname(); + + $script .= " + /** + * Returns parent node. Loads from database if not cached yet. + * + * @param boolean True if parent should be retrieved from database. + * @param PropelPDO Connection to use if retrieving from database. + * @return ".$this->getStubNodeBuilder()->getClassname()." + */ + public function getParentNode(\$querydb = true, PropelPDO \$con = null) + { + if (\$querydb && + \$this->parentNode === null && + !\$this->isRootNode() && + !\$this->obj->isNew() && + !\$this->obj->isDeleted()) + { + \$npath =& \$this->getNodePath(); + \$sep = strrpos(\$npath, $nodePeerClassname::NPATH_SEP); + \$ppath = substr(\$npath, 0, \$sep); + + \$criteria = new Criteria($peerClassname::DATABASE_NAME); + \$criteria->add($nodePeerClassname::NPATH_COLNAME, \$ppath, Criteria::EQUAL); + + if (\$parentObj = $peerClassname::doSelectOne(\$criteria, \$con)) + { + \$parentNode = new ".$this->getStubNodeBuilder()->getClassname()."(\$parentObj); + \$parentNode->attachChildNode(\$this); + } + } + + return \$this->parentNode; + } +"; + } + + protected function addGetAncestors(&$script) + { + $script .= " + /** + * Returns an array of all ancestor nodes, starting with the root node + * first. + * + * @param boolean True if ancestors should be retrieved from database. + * @param PropelPDO Connection to use if retrieving from database. + * @return array + */ + public function getAncestors(\$querydb = false, PropelPDO \$con = null) + { + \$ancestors = array(); + \$parentNode = \$this; + + while (\$parentNode = \$parentNode->getParentNode(\$querydb, \$con)) + array_unshift(\$ancestors, \$parentNode); + + return \$ancestors; + } +"; + } + + protected function addIsRootNode(&$script) + { + $script .= " + /** + * Returns true if node is the root node of the tree. + * @return boolean + */ + public function isRootNode() + { + return (\$this->getNodePath() === '1'); + } +"; + } + + protected function addSetNew(&$script) + { + $script .= " + /** + * Changes the state of the object and its descendants to 'new'. + * Also changes the node path to '0' to indicate that it is not a + * stored node. + * + * @param boolean + * @return void + */ + public function setNew(\$b) + { + \$this->adjustStatus('new', \$b); + \$this->adjustNodePath(\$this->getNodePath(), '0'); + } +"; + } + + protected function addSetDeleted(&$script) + { + $script .= " + /** + * Changes the state of the object and its descendants to 'deleted'. + * + * @param boolean + * @return void + */ + public function setDeleted(\$b) + { + \$this->adjustStatus('deleted', \$b); + } +"; + } + + protected function addAddChildNode(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $nodePeerClassname = $this->getStubNodePeerBuilder()->getClassname(); + + $script .= " + /** + * Adds the specified node (and its children) as a child to this node. If a + * valid \$beforeNode is specified, the node will be inserted in front of + * \$beforeNode. If \$beforeNode is not specified the node will be appended to + * the end of the child nodes. + * + * @param ".$this->getStubNodeBuilder()->getClassname()." Node to add. + * @param ".$this->getStubNodeBuilder()->getClassname()." Node to insert before. + * @param PropelPDO Connection to use. + */ + public function addChildNode(\$node, \$beforeNode = null, PropelPDO \$con = null) + { + if (\$this->obj->isNew() && !\$node->obj->isNew()) + throw new PropelException('Cannot add stored nodes to a new node.'); + + if (\$this->obj->isDeleted() || \$node->obj->isDeleted()) + throw new PropelException('Cannot add children in a deleted state.'); + + if (\$this->hasChildNode(\$node)) + throw new PropelException('Node is already a child of this node.'); + + if (\$beforeNode && !\$this->hasChildNode(\$beforeNode)) + throw new PropelException('Invalid beforeNode.'); + + if (\$con === null) + \$con = Propel::getConnection($peerClassname::DATABASE_NAME, Propel::CONNECTION_WRITE); + + if (!\$this->obj->isNew()) \$con->beginTransaction(); + + try { + if (\$beforeNode) + { + // Inserting before a node. + \$childIdx = \$beforeNode->getNodeIndex(); + \$this->shiftChildNodes(1, \$beforeNode->getNodeIndex(), \$con); + } + else + { + // Appending child node. + if (\$lastNode = \$this->getLastChildNode(true, \$con)) + \$childIdx = \$lastNode->getNodeIndex()+1; + else + \$childIdx = 1; + } + + // Add the child (and its children) at the specified index. + + if (!\$this->obj->isNew() && \$node->obj->isNew()) + { + \$this->insertNewChildNode(\$node, \$childIdx, \$con); + } + else + { + // \$this->isNew() && \$node->isNew() || + // !\$this->isNew() && !node->isNew() + + \$srcPath = \$node->getNodePath(); + \$dstPath = \$this->getNodePath() . $nodePeerClassname::NPATH_SEP . \$childIdx; + + if (!\$node->obj->isNew()) + { + $nodePeerClassname::moveNodeSubTree(\$srcPath, \$dstPath, \$con); + \$parentNode = \$node->getParentNode(true, \$con); + } + else + { + \$parentNode = \$node->getParentNode(); + } + + if (\$parentNode) + { + \$parentNode->detachChildNode(\$node); + \$parentNode->shiftChildNodes(-1, \$node->getNodeIndex()+1, \$con); + } + + \$node->adjustNodePath(\$srcPath, \$dstPath); + } + + if (!\$this->obj->isNew()) \$con->commit(); + + \$this->attachChildNode(\$node); + + } catch (SQLException \$e) { + if (!\$this->obj->isNew()) \$con->rollBack(); + throw new PropelException(\$e); + } + } +"; + } + + protected function addMoveChildNode(&$script) + { + $script .= " + /** + * Moves the specified child node in the specified direction. + * + * @param ".$this->getStubNodeBuilder()->getClassname()." Node to move. + * @param int Number of spaces to move among siblings (may be negative). + * @param PropelPDO Connection to use. + * @throws PropelException + */ + public function moveChildNode(\$node, \$direction, PropelPDO \$con = null) + { + throw new PropelException('moveChildNode() not implemented yet.'); + } +"; + } + + + protected function addSave(&$script) + { + + $nodePeerClassname = $this->getStubNodePeerBuilder()->getClassname(); + $script .= " + /** + * Saves modified object data to the datastore. + * + * @param boolean If true, descendants will be saved as well. + * @param PropelPDO Connection to use. + */ + public function save(\$recurse = false, PropelPDO \$con = null) + { + if (\$this->obj->isDeleted()) + throw new PropelException('Cannot save deleted node.'); + + if (substr(\$this->getNodePath(), 0, 1) == '0') + throw new PropelException('Cannot save unattached node.'); + + if (\$this->obj->isColumnModified($nodePeerClassname::NPATH_COLNAME)) + throw new PropelException('Cannot save manually modified node path.'); + + \$this->obj->save(\$con); + + if (\$recurse) + { + foreach (\$this->childNodes as \$childNode) + \$childNode->save(\$recurse, \$con); + } + } +"; + } + + + protected function addDelete(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $nodePeerClassname = $this->getStubNodePeerBuilder()->getClassname(); + $script .= " + /** + * Removes this object and all descendants from datastore. + * + * @param PropelPDO Connection to use. + * @return void + * @throws PropelException + */ + public function delete(PropelPDO \$con = null) + { + if (\$this->obj->isDeleted()) { + throw new PropelException('This node has already been deleted.'); + } + + if (\$con === null) { + \$con = Propel::getConnection($peerClassname::DATABASE_NAME, Propel::CONNECTION_WRITE); + } + + if (!\$this->obj->isNew()) { + $nodePeerClassname::deleteNodeSubTree(\$this->getNodePath(), \$con); + } + + if (\$parentNode = \$this->getParentNode(true, \$con)) { + \$parentNode->detachChildNode(\$this); + \$parentNode->shiftChildNodes(-1, \$this->getNodeIndex()+1, \$con); + } + + \$this->setDeleted(true); + } +"; + } + + protected function addEquals(&$script) + { + $nodeClassname = $this->getStubNodeBuilder()->getClassname(); + $script .= " + /** + * Compares the object wrapped by this node with that of another node. Use + * this instead of equality operators to prevent recursive dependency + * errors. + * + * @param $nodeClassname Node to compare. + * @param boolean True if strict comparison should be used. + * @return boolean + */ + public function equals(\$node, \$strict = false) + { + if (\$strict) { + return (\$this->obj === \$node->obj); + } else { + return (\$this->obj == \$node->obj); + } + } +"; + } + + protected function addAttachParentNode(&$script) + { + $nodeClassname = $this->getStubNodeBuilder()->getClassname(); + $script .= " + /** + * This method is used internally when constructing the tree structure + * from the database. To set the parent of a node, you should call + * addChildNode() on the parent. + * + * @param $nodeClassname Parent node to attach. + * @return void + * @throws PropelException + */ + public function attachParentNode(\$node) + { + if (!\$node->hasChildNode(\$this, true)) + throw new PropelException('Failed to attach parent node for non-child.'); + + \$this->parentNode = \$node; + } +"; + } + + + protected function addAttachChildNode(&$script) + { + $nodeClassname = $this->getStubNodeBuilder()->getClassname(); + $nodePeerClassname = $this->getStubNodePeerBuilder()->getClassname(); + $script .= " + /** + * This method is used internally when constructing the tree structure + * from the database. To add a child to a node you should call the + * addChildNode() method instead. + * + * @param $nodeClassname Child node to attach. + * @return void + * @throws PropelException + */ + public function attachChildNode(\$node) + { + if (\$this->hasChildNode(\$node)) + throw new PropelException('Failed to attach child node. Node already exists.'); + + if (\$this->obj->isDeleted() || \$node->obj->isDeleted()) + throw new PropelException('Failed to attach node in deleted state.'); + + if (\$this->obj->isNew() && !\$node->obj->isNew()) + throw new PropelException('Failed to attach non-new child to new node.'); + + if (!\$this->obj->isNew() && \$node->obj->isNew()) + throw new PropelException('Failed to attach new child to non-new node.'); + + if (\$this->getNodePath() . $nodePeerClassname::NPATH_SEP . \$node->getNodeIndex() != \$node->getNodePath()) + throw new PropelException('Failed to attach child node. Node path mismatch.'); + + \$this->childNodes[\$node->getNodeIndex()] = \$node; + ksort(\$this->childNodes); + + \$node->attachParentNode(\$this); + } +"; + } + + protected function addDetachParentNode(&$script) + { + $nodeClassname = $this->getStubNodeBuilder()->getClassname(); + $script .= " + /** + * This method is used internally when deleting nodes. It is used to break + * the link to this node's parent. + * @param $nodeClassname Parent node to detach from. + * @return void + * @throws PropelException + */ + public function detachParentNode(\$node) + { + if (!\$node->hasChildNode(\$this, true)) + throw new PropelException('Failed to detach parent node from non-child.'); + + unset(\$node->childNodes[\$this->getNodeIndex()]); + \$this->parentNode = null; + } +"; + } + + protected function addDetachChildNode(&$script) + { + $script .= " + /** + * This method is used internally when deleting nodes. It is used to break + * the link to this between this node and the specified child. + * @param ".$this->getStubNodeBuilder()->getClassname()." Child node to detach. + * @return void + * @throws PropelException + */ + public function detachChildNode(\$node) + { + if (!\$this->hasChildNode(\$node, true)) + throw new PropelException('Failed to detach non-existent child node.'); + + unset(\$this->childNodes[\$node->getNodeIndex()]); + \$node->parentNode = null; + } +"; + } + + protected function addShiftChildNodes(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $nodePeerClassname = $this->getStubNodePeerBuilder()->getClassname(); + + $script .= " + /** + * Shifts child nodes in the specified direction and offset index. This + * method assumes that there is already space available in the + * direction/offset indicated. + * + * @param int Direction/# spaces to shift. 1=leftshift, 1=rightshift + * @param int Node index to start shift at. + * @param PropelPDO The connection to be used. + * @return void + * @throws PropelException + */ + protected function shiftChildNodes(\$direction, \$offsetIdx, PropelPDO \$con) + { + if (\$this->obj->isDeleted()) + throw new PropelException('Cannot shift nodes for deleted object'); + + \$lastNode = \$this->getLastChildNode(true, \$con); + \$lastIdx = (\$lastNode !== null ? \$lastNode->getNodeIndex() : 0); + + if (\$lastNode === null || \$offsetIdx > \$lastIdx) + return; + + if (\$con === null) + \$con = Propel::getConnection($peerClassname::DATABASE_NAME); + + if (!\$this->obj->isNew()) + { + // Shift nodes in database. + + \$con->beginTransaction(); + + try { + \$n = \$lastIdx - \$offsetIdx + 1; + \$i = \$direction < 1 ? \$offsetIdx : \$lastIdx; + + while (\$n--) + { + \$srcPath = \$this->getNodePath() . $nodePeerClassname::NPATH_SEP . \$i; // 1.2.2 + \$dstPath = \$this->getNodePath() . $nodePeerClassname::NPATH_SEP . (\$i+\$direction); // 1.2.3 + + $nodePeerClassname::moveNodeSubTree(\$srcPath, \$dstPath, \$con); + + \$i -= \$direction; + } + + \$con->commit(); + + } catch (SQLException \$e) { + \$con->rollBack(); + throw new PropelException(\$e); + } + } + + // Shift the in-memory objects. + + \$n = \$lastIdx - \$offsetIdx + 1; + \$i = \$direction < 1 ? \$offsetIdx : \$lastIdx; + + while (\$n--) + { + if (isset(\$this->childNodes[\$i])) + { + \$srcPath = \$this->getNodePath() . $nodePeerClassname::NPATH_SEP . \$i; // 1.2.2 + \$dstPath = \$this->getNodePath() . $nodePeerClassname::NPATH_SEP . (\$i+\$direction); // 1.2.3 + + \$this->childNodes[\$i+\$direction] = \$this->childNodes[\$i]; + \$this->childNodes[\$i+\$direction]->adjustNodePath(\$srcPath, \$dstPath); + + unset(\$this->childNodes[\$i]); + } + + \$i -= \$direction; + } + + ksort(\$this->childNodes); + } +"; + } + + protected function addInsertNewChildNode(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $nodePeerClassname = $this->getStubNodePeerBuilder()->getClassname(); + $nodeClassname = $this->getStubNodePeerBuilder()->getClassname(); + + $script .= " + /** + * Inserts the node and its children at the specified childIdx. + * + * @param $nodeClassname Node to insert. + * @param int One-based child index to insert at. + * @param PropelPDO Connection to use. + * @param void + */ + protected function insertNewChildNode(\$node, \$childIdx, PropelPDO \$con) + { + if (!\$node->obj->isNew()) + throw new PropelException('Failed to insert non-new node.'); + + \$setNodePath = 'set' . $nodePeerClassname::NPATH_PHPNAME; + + \$node->obj->\$setNodePath(\$this->getNodePath() . $nodePeerClassname::NPATH_SEP . \$childIdx); + \$node->obj->save(\$con); + + \$i = 1; + foreach (\$node->childNodes as \$childNode) + \$node->insertNewChildNode(\$childNode, \$i++, \$con); + } +"; + } + + protected function addAdjustStatus(&$script) + { + $script .= " + /** + * Adjust new/deleted status of node and all children. + * + * @param string Status to change ('New' or 'Deleted') + * @param boolean Value for status. + * @return void + */ + protected function adjustStatus(\$status, \$b) + { + \$setStatus = 'set' . \$status; + + \$this->obj->\$setStatus(\$b); + + foreach (\$this->childNodes as \$childNode) + \$childNode->obj->\$setStatus(\$b); + } +"; + } + + protected function addAdjustNodePath(&$script) + { + $nodePeerClassname = $this->getStubNodePeerBuilder()->getClassname(); + $script .= " + /** + * Adjust path of node and all children. This is used internally when + * inserting/moving nodes. + * + * @param string Section of old path to change. + * @param string New section to replace old path with. + * @return void + */ + protected function adjustNodePath(\$oldBasePath, \$newBasePath) + { + \$setNodePath = 'set' . $nodePeerClassname::NPATH_PHPNAME; + + \$this->obj->\$setNodePath(\$newBasePath . substr(\$this->getNodePath(), strlen(\$oldBasePath))); + \$this->obj->resetModified($nodePeerClassname::NPATH_COLNAME); + + foreach (\$this->childNodes as \$childNode) + \$childNode->adjustNodePath(\$oldBasePath, \$newBasePath); + } +"; + } + +} // PHP5NodeObjectBuilder diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5NodePeerBuilder.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5NodePeerBuilder.php new file mode 100644 index 0000000..58a3f6d --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5NodePeerBuilder.php @@ -0,0 +1,765 @@ +. + */ + +require_once 'propel/engine/builder/om/PeerBuilder.php'; + +/** + * Generates a PHP5 tree node Peer class for user object model (OM). + * + * This class produces the base tree node object class (e.g. BaseMyTable) which contains all + * the custom-built accessor and setter methods. + * + * This class replaces the Node.tpl, with the intent of being easier for users + * to customize (through extending & overriding). + * + * @author Hans Lellelid + * @package propel.engine.builder.om.php5 + */ +class PHP5NodePeerBuilder extends PeerBuilder { + + /** + * Gets the package for the [base] object classes. + * @return string + */ + public function getPackage() + { + return parent::getPackage() . ".om"; + } + + /** + * Returns the name of the current class being built. + * @return string + */ + public function getUnprefixedClassname() + { + return $this->getBuildProperty('basePrefix') . $this->getStubNodePeerBuilder()->getUnprefixedClassname(); + } + + /** + * Adds the include() statements for files that this class depends on or utilizes. + * @param string &$script The script will be modified in this method. + */ + protected function addIncludes(&$script) + { + } // addIncludes() + + /** + * Adds class phpdoc comment and openning of class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassOpen(&$script) + { + + $table = $this->getTable(); + $tableName = $table->getName(); + $tableDesc = $table->getDescription(); + + $script .= " +/** + * Base static class for performing query operations on the tree contained by the '$tableName' table. + * + * $tableDesc + *"; + if ($this->getBuildProperty('addTimeStamp')) { + $now = strftime('%c'); + $script .= " + * This class was autogenerated by Propel " . $this->getBuildProperty('version') . " on: + * + * $now + *"; + } + $script .= " + * @package ".$this->getPackage()." + */ +abstract class ".$this->getClassname()." { +"; + } + + /** + * Specifies the methods that are added as part of the basic OM class. + * This can be overridden by subclasses that wish to add more methods. + * @see ObjectBuilder::addClassBody() + */ + protected function addClassBody(&$script) + { + $table = $this->getTable(); + + // FIXME + // - Probably the build needs to be customized for supporting + // tables that are "aliases". -- definitely a fringe usecase, though. + + $this->addConstants($script); + + $this->addIsCodeBase($script); + + $this->addRetrieveMethods($script); + + $this->addCreateNewRootNode($script); + $this->addInsertNewRootNode($script); + $this->addMoveNodeSubTree($script); + $this->addDeleteNodeSubTree($script); + + $this->addBuildFamilyCriteria($script); + $this->addBuildTree($script); + + $this->addPopulateNodes($script); + + } + + /** + * Closes class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassClose(&$script) + { + $script .= " +} // " . $this->getClassname() . " +"; + } + + protected function addConstants(&$script) + { + $table = $this->getTable(); + + $npath_colname = ''; + $npath_phpname = ''; + $npath_len = 0; + $npath_sep = ''; + foreach ($table->getColumns() as $col) { + if ($col->isNodeKey()) { + $npath_colname = $table->getName() . '.' . strtoupper($col->getName()); + $npath_phpname = $col->getPhpName(); + $npath_len = $col->getSize(); + $npath_sep = $col->getNodeKeySep(); + break; + } + } + $script .= " + const NPATH_COLNAME = '$npath_colname'; + const NPATH_PHPNAME = '$npath_phpname'; + const NPATH_SEP = '$npath_sep'; + const NPATH_LEN = $npath_len; +"; + } + + + protected function addIsCodeBase(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $nodePeerClassname = $this->getStubNodePeerBuilder()->getClassname(); + + $script .= " + /** + * Temp function for CodeBase hacks that will go away. + */ + public static function isCodeBase(\$con = null) + { + if (\$con === null) + \$con = Propel::getConnection($peerClassname::DATABASE_NAME); + + return (get_class(\$con) == 'ODBCConnection' && + get_class(\$con->getAdapter()) == 'CodeBaseAdapter'); + } +"; + } + + + protected function addCreateNewRootNode(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + + $nodePeerClassname = $this->getStubNodePeerBuilder()->getClassname(); + $nodeObjectClassname = $this->getStubNodeBuilder()->getClassname(); + + $script .= " + /** + * Create a new Node at the top of tree. This method will destroy any + * existing root node (along with its children). + * + * Use at your own risk! + * + * @param $objectClassname Object wrapped by new node. + * @param PropelPDO Connection to use. + * @return $nodeObjectClassname + * @throws PropelException + */ + public static function createNewRootNode(\$obj, PropelPDO \$con = null) + { + if (\$con === null) + \$con = Propel::getConnection($peerClassname::DATABASE_NAME, Propel::CONNECTION_WRITE); + + \$con->beginTransaction(); + + try { + self::deleteNodeSubTree('1', \$con); + + \$setNodePath = 'set' . self::NPATH_PHPNAME; + + \$obj->\$setNodePath('1'); + \$obj->save(\$con); + + \$con->commit(); + } catch (PropelException \$e) { + \$con->rollBack(); + throw \$e; + } + + return new $nodeObjectClassname(\$obj); + } +"; + } + + protected function addInsertNewRootNode(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + + $nodePeerClassname = $this->getStubNodePeerBuilder()->getClassname(); + $nodeObjectClassname = $this->getStubNodeBuilder()->getClassname(); + + $script .= " + /** + * Inserts a new Node at the top of tree. Any existing root node (along with + * its children) will be made a child of the new root node. This is a + * safer alternative to createNewRootNode(). + * + * @param $objectClassname Object wrapped by new node. + * @param PropelPDO Connection to use. + * @return $nodeObjectClassname + * @throws PropelException + */ + public static function insertNewRootNode(\$obj, PropelPDO \$con = null) + { + if (\$con === null) + \$con = Propel::getConnection($peerClassname::DATABASE_NAME, Propel::CONNECTION_WRITE); + + \$con->beginTransaction(); + try { + // Move root tree to an invalid node path. + $nodePeerClassname::moveNodeSubTree('1', '0', \$con); + + \$setNodePath = 'set' . self::NPATH_PHPNAME; + + // Insert the new root node. + \$obj->\$setNodePath('1'); + \$obj->save(\$con); + + // Move the old root tree as a child of the new root. + $nodePeerClassname::moveNodeSubTree('0', '1' . self::NPATH_SEP . '1', \$con); + + \$con->commit(); + } catch (PropelException \$e) { + \$con->rollBack(); + throw \$e; + } + + return new $nodeObjectClassname(\$obj); + } +"; + } + + /** + * Adds the methods for retrieving nodes. + */ + protected function addRetrieveMethods(&$script) + { + $this->addRetrieveNodes($script); + $this->addRetrieveNodeByPK($script); + $this->addRetrieveNodeByNP($script); + $this->addRetrieveRootNode($script); + + } + + protected function addRetrieveNodes(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $nodePeerClassname = $this->getStubNodePeerBuilder()->getClassname(); + + $script .= " + /** + * Retrieves an array of tree nodes based on specified criteria. Optionally + * includes all parent and/or child nodes of the matching nodes. + * + * @param Criteria Criteria to use. + * @param boolean True if ancestors should also be retrieved. + * @param boolean True if descendants should also be retrieved. + * @param PropelPDO Connection to use. + * @return array Array of root nodes. + */ + public static function retrieveNodes(\$criteria, \$ancestors = false, \$descendants = false, PropelPDO \$con = null) + { + \$criteria = $nodePeerClassname::buildFamilyCriteria(\$criteria, \$ancestors, \$descendants); + \$stmt = ".$this->getStubPeerBuilder()->getClassname()."::doSelectStmt(\$criteria, \$con); + return self::populateNodes(\$stmt, \$criteria); + } +"; + } + + protected function addRetrieveNodeByPK(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + + $nodePeerClassname = $this->getStubNodePeerBuilder()->getClassname(); + $nodeObjectClassname = $this->getStubNodeBuilder()->getClassname(); + + $script .= " + /** + * Retrieves a tree node based on a primary key. Optionally includes all + * parent and/or child nodes of the matching node. + * + * @param mixed $objectClassname primary key (array for composite keys) + * @param boolean True if ancestors should also be retrieved. + * @param boolean True if descendants should also be retrieved. + * @param PropelPDO Connection to use. + * @return $nodeObjectClassname + */ + public static function retrieveNodeByPK(\$pk, \$ancestors = false, \$descendants = false, PropelPDO \$con = null) + { + throw new PropelException('retrieveNodeByPK() not implemented yet.'); + } +"; + } + + protected function addRetrieveNodeByNP(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + + $nodePeerClassname = $this->getStubNodePeerBuilder()->getClassname(); + $nodeObjectClassname = $this->getStubNodeBuilder()->getClassname(); + + $script .= " + /** + * Retrieves a tree node based on a node path. Optionally includes all + * parent and/or child nodes of the matching node. + * + * @param string Node path to retrieve. + * @param boolean True if ancestors should also be retrieved. + * @param boolean True if descendants should also be retrieved. + * @param PropelPDO Connection to use. + * @return $objectClassname + */ + public static function retrieveNodeByNP(\$np, \$ancestors = false, \$descendants = false, PropelPDO \$con = null) + { + \$criteria = new Criteria($peerClassname::DATABASE_NAME); + \$criteria->add(self::NPATH_COLNAME, \$np, Criteria::EQUAL); + \$criteria = self::buildFamilyCriteria(\$criteria, \$ancestors, \$descendants); + \$stmt = $peerClassname::doSelectStmt(\$criteria, \$con); + \$nodes = self::populateNodes(\$stmt, \$criteria); + return (count(\$nodes) == 1 ? \$nodes[0] : null); + } +"; + } + + protected function addRetrieveRootNode(&$script) + { + $script .= " + /** + * Retrieves the root node. + * + * @param string Node path to retrieve. + * @param boolean True if descendants should also be retrieved. + * @param PropelPDO Connection to use. + * @return ".$this->getStubNodeBuilder()->getClassname()." + */ + public static function retrieveRootNode(\$descendants = false, PropelPDO \$con = null) + { + return self::retrieveNodeByNP('1', false, \$descendants, \$con); + } +"; + } + + protected function addMoveNodeSubTree(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + + $nodePeerClassname = $this->getStubNodePeerBuilder()->getClassname(); + $nodeObjectClassname = $this->getStubNodeBuilder()->getClassname(); + + $script .= " + /** + * Moves the node subtree at srcpath to the dstpath. This method is intended + * for internal use by the BaseNode object. Note that it does not check for + * preexisting nodes at the dstpath. It also does not update the node path + * of any Node objects that might currently be in memory. + * + * Use at your own risk! + * + * @param string Source node path to move (root of the src subtree). + * @param string Destination node path to move to (root of the dst subtree). + * @param PropelPDO Connection to use. + * @return void + * @throws PropelException + * @todo This is currently broken for simulated 'onCascadeDelete's. + * @todo Need to abstract the SQL better. The CONCAT sql function doesn't + * seem to be standardized (i.e. mssql), so maybe it needs to be moved + * to DBAdapter. + */ + public static function moveNodeSubTree(\$srcPath, \$dstPath, PropelPDO \$con = null) + { + if (substr(\$dstPath, 0, strlen(\$srcPath)) == \$srcPath) + throw new PropelException('Cannot move a node subtree within itself.'); + + if (\$con === null) + \$con = Propel::getConnection($peerClassname::DATABASE_NAME, Propel::CONNECTION_WRITE); + + /** + * Example: + * UPDATE table + * SET npath = CONCAT('1.3', SUBSTRING(npath, 6, 74)) + * WHERE npath = '1.2.2' OR npath LIKE '1.2.2.%' + */ + + \$npath = $nodePeerClassname::NPATH_COLNAME; + //the following dot isn`t mean`t a nodeKeySeperator + \$setcol = substr(\$npath, strrpos(\$npath, '.')+1); + \$setcollen = $nodePeerClassname::NPATH_LEN; + \$db = Propel::getDb($peerClassname::DATABASE_NAME); + + // + if ($nodePeerClassname::isCodeBase(\$con)) + { + // This is a hack to get CodeBase working. It will eventually be removed. + // It is a workaround for the following CodeBase bug: + // -Prepared statement parameters cannot be embedded in SQL functions (i.e. CONCAT) + \$sql = \"UPDATE \" . $peerClassname::TABLE_NAME . \" \" . + \"SET \$setcol=\" . \$db->concatString(\"'\$dstPath'\", \$db->subString(\$npath, strlen(\$srcPath)+1, \$setcollen)) . \" \" . + \"WHERE \$npath = '\$srcPath' OR \$npath LIKE '\" . \$srcPath . $nodePeerClassname::NPATH_SEP . \"%'\"; + + \$con->executeUpdate(\$sql); + } + else + { + // + \$sql = \"UPDATE \" . $peerClassname::TABLE_NAME . \" \" . + \"SET \$setcol=\" . \$db->concatString('?', \$db->subString(\$npath, '?', '?')) . \" \" . + \"WHERE \$npath = ? OR \$npath LIKE ?\"; + + \$stmt = \$con->prepare(\$sql); + \$stmt->bindValue(1, \$dstPath); // string + \$srcPathPlus1 = strlen(\$srcPath)+1; + \$stmt->bindValue(2, \$srcPathPlus1); // int + \$stmt->bindValue(3, \$setcollen);// int + \$stmt->bindValue(4, \$srcPath);// string + \$srcPathWC = \$srcPath . $nodePeerClassname::NPATH_SEP . '%'; + \$stmt->bindValue(5, \$srcPathWC); // string + \$stmt->execute(); + // + } + } +"; + } + + protected function addDeleteNodeSubTree(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + + $nodePeerClassname = $this->getStubNodePeerBuilder()->getClassname(); + $nodeObjectClassname = $this->getStubNodeBuilder()->getClassname(); + + $script .= " + /** + * Deletes the node subtree at the specified node path from the database. + * + * @param string Node path to delete + * @param PropelPDO Connection to use. + * @return void + * @throws PropelException + * @todo This is currently broken for simulated 'onCascadeDelete's. + */ + public static function deleteNodeSubTree(\$nodePath, PropelPDO \$con = null) + { + if (\$con === null) + \$con = Propel::getConnection($peerClassname::DATABASE_NAME, Propel::CONNECTION_WRITE); + + /** + * DELETE FROM table + * WHERE npath = '1.2.2' OR npath LIKE '1.2.2.%' + */ + + \$criteria = new Criteria($peerClassname::DATABASE_NAME); + \$criteria->add($nodePeerClassname::NPATH_COLNAME, \$nodePath, Criteria::EQUAL); + \$criteria->addOr($nodePeerClassname::NPATH_COLNAME, \$nodePath . self::NPATH_SEP . '%', Criteria::LIKE); + {$this->basePeerClassname}::doDelete(\$criteria, \$con); + } +"; + } + + protected function addBuildFamilyCriteria(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + + $nodePeerClassname = $this->getStubNodePeerBuilder()->getClassname(); + $nodeObjectClassname = $this->getStubNodeBuilder()->getClassname(); + + $script .= " + /** + * Builds the criteria needed to retrieve node ancestors and/or descendants. + * + * @param Criteria Criteria to start with + * @param boolean True if ancestors should be retrieved. + * @param boolean True if descendants should be retrieved. + * @return Criteria + */ + public static function buildFamilyCriteria(\$criteria, \$ancestors = false, \$descendants = false) + { + /* + Example SQL to retrieve nodepath '1.2.3' with both ancestors and descendants: + + SELECT L.NPATH, L.LABEL, test.NPATH, UCASE(L.NPATH) + FROM test L, test + WHERE test.NPATH='1.2.3' AND + (L.NPATH=SUBSTRING(test.NPATH, 1, LENGTH(L.NPATH)) OR + test.NPATH=SUBSTRING(L.NPATH, 1, LENGTH(test.NPATH))) + ORDER BY UCASE(L.NPATH) ASC + */ + + if (\$criteria === null) + \$criteria = new Criteria($peerClassname::DATABASE_NAME); + + if (!\$criteria->getSelectColumns()) + $peerClassname::addSelectColumns(\$criteria); + + \$db = Propel::getDb(\$criteria->getDbName()); + + if ((\$ancestors || \$descendants) && \$criteria->size()) + { + // If we are retrieving ancestors/descendants, we need to do a + // self-join to locate them. The exception to this is if no search + // criteria is specified. In this case we're retrieving all nodes + // anyway, so there is no need to do a self-join. + + // The left-side of the self-join will contain the columns we'll + // use to build node objects (target node records along with their + // ancestors and/or descendants). The right-side of the join will + // contain the target node records specified by the initial criteria. + // These are used to match the appropriate ancestor/descendant on + // the left. + + // Specify an alias for the left-side table to use. + \$criteria->addAlias('L', $peerClassname::TABLE_NAME); + + // Make sure we have select columns to begin with. + if (!\$criteria->getSelectColumns()) + $peerClassname::addSelectColumns(\$criteria); + + // Replace any existing columns for the right-side table with the + // left-side alias. + \$selectColumns = \$criteria->getSelectColumns(); + \$criteria->clearSelectColumns(); + foreach (\$selectColumns as \$colName) + \$criteria->addSelectColumn(str_replace($peerClassname::TABLE_NAME, 'L', \$colName)); + + \$a = null; + \$d = null; + + \$npathL = $peerClassname::alias('L', $nodePeerClassname::NPATH_COLNAME); + \$npathR = $nodePeerClassname::NPATH_COLNAME; + \$npath_len = $nodePeerClassname::NPATH_LEN; + + if (\$ancestors) + { + // For ancestors, match left-side node paths which are contained + // by right-side node paths. + \$a = \$criteria->getNewCriterion(\$npathL, + \"\$npathL=\" . \$db->subString(\$npathR, 1, \$db->strLength(\$npathL), \$npath_len), + Criteria::CUSTOM); + } + + if (\$descendants) + { + // For descendants, match left-side node paths which contain + // right-side node paths. + \$d = \$criteria->getNewCriterion(\$npathR, + \"\$npathR=\" . \$db->subString(\$npathL, 1, \$db->strLength(\$npathR), \$npath_len), + Criteria::CUSTOM); + } + + if (\$a) + { + if (\$d) \$a->addOr(\$d); + \$criteria->addAnd(\$a); + } + else if (\$d) + { + \$criteria->addAnd(\$d); + } + + // Add the target node path column. This is used by populateNodes(). + \$criteria->addSelectColumn(\$npathR); + + // Sort by node path to speed up tree construction in populateNodes() + \$criteria->addAsColumn('npathlen', \$db->strLength(\$npathL)); + \$criteria->addAscendingOrderByColumn('npathlen'); + \$criteria->addAscendingOrderByColumn(\$npathL); + } + else + { + // Add the target node path column. This is used by populateNodes(). + \$criteria->addSelectColumn($nodePeerClassname::NPATH_COLNAME); + + // Sort by node path to speed up tree construction in populateNodes() + \$criteria->addAsColumn('npathlen', \$db->strLength($nodePeerClassname::NPATH_COLNAME)); + \$criteria->addAscendingOrderByColumn('npathlen'); + \$criteria->addAscendingOrderByColumn($nodePeerClassname::NPATH_COLNAME); + } + + return \$criteria; + } +"; + } + + protected function addBuildTree(&$script) + { + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + + $nodePeerClassname = $this->getStubNodePeerBuilder()->getClassname(); + $nodeObjectClassname = $this->getStubNodeBuilder()->getClassname(); + + $script .= " + /** + * This method reconstructs as much of the tree structure as possible from + * the given array of objects. Depending on how you execute your query, it + * is possible for the ResultSet to contain multiple tree fragments (i.e. + * subtrees). The array returned by this method will contain one entry + * for each subtree root node it finds. The remaining subtree nodes are + * accessible from the $nodeObjectClassname methods of the + * subtree root nodes. + * + * @param array Array of $nodeObjectClassname objects + * @return array Array of $nodeObjectClassname objects + */ + public static function buildTree(\$nodes) + { + // Subtree root nodes to return + \$rootNodes = array(); + + // Build the tree relations + foreach (\$nodes as \$node) + { + \$sep = strrpos(\$node->getNodePath(), $nodePeerClassname::NPATH_SEP); + \$parentPath = (\$sep !== false ? substr(\$node->getNodePath(), 0, \$sep) : ''); + \$parentNode = null; + + // Scan other nodes for parent. + foreach (\$nodes as \$pnode) + { + if (\$pnode->getNodePath() === \$parentPath) + { + \$parentNode = \$pnode; + break; + } + } + + // If parent was found, attach as child, otherwise its a subtree root + if (\$parentNode) + \$parentNode->attachChildNode(\$node); + else + \$rootNodes[] = \$node; + } + + return \$rootNodes; + } +"; + } + + protected function addPopulateNodes(&$script) + { + $table = $this->getTable(); + + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $objectClassname = $this->getStubObjectBuilder()->getClassname(); + + $nodePeerClassname = $this->getStubNodePeerBuilder()->getClassname(); + $nodeObjectClassname = $this->getStubNodeBuilder()->getClassname(); + + $script .= " + /** + * Populates the $objectClassname objects from the + * specified ResultSet, wraps them in $nodeObjectClassname + * objects and build the appropriate node relationships. + * The array returned by this method will only include the initial targets + * of the query, even if ancestors/descendants were also requested. + * The ancestors/descendants will be cached in memory and are accessible via + * the getNode() methods. + * + * @param PDOStatement \$stmt Executed PDOStatement + * @param Criteria + * @return array Array of $nodeObjectClassname objects. + */ + public static function populateNodes(PDOStatement \$stmt, \$criteria) + { + \$nodes = array(); + \$targets = array(); + \$targetfld = count(\$criteria->getSelectColumns()); +"; + + if (!$table->getChildrenColumn()) { + $script .= " + // set the class once to avoid overhead in the loop + \$cls = $peerClassname::getOMClass(); + \$cls = substr('.'.\$cls, strrpos('.'.\$cls, '.') + 1); +"; + } + + $script .= " + // populate the object(s) + foreach(\$stmt->fetchAll() AS \$row) + { + if (!isset(\$nodes[\$row[0]])) + { +"; + if ($table->getChildrenColumn()) { + $script .= " + // class must be set each time from the record row + \$cls = $peerClassname::getOMClass(\$row, 1); + \$cls = substr('.'.\$cls, strrpos('.'.\$cls, '.') + 1); +"; + } + + $script .= " + " . $this->buildObjectInstanceCreationCode('$obj', '$cls') . " + \$obj->hydrate(\$row); + + \$nodes[\$row[0]] = new $nodeObjectClassname(\$obj); + } + + \$node = \$nodes[\$row[0]]; + + if (\$node->getNodePath() === \$row[\$targetfld]) + \$targets[\$node->getNodePath()] = \$node; + } + + $nodePeerClassname::buildTree(\$nodes); + + return array_values(\$targets); + } +"; + } + +} // PHP5NodePeerBuilder diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5ObjectBuilder.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5ObjectBuilder.php new file mode 100644 index 0000000..beb6fdc --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5ObjectBuilder.php @@ -0,0 +1,4071 @@ +. + */ + +require_once 'propel/engine/builder/om/ObjectBuilder.php'; + +/** + * Generates a PHP5 base Object class for user object model (OM). + * + * This class produces the base object class (e.g. BaseMyTable) which contains all + * the custom-built accessor and setter methods. + * + * @author Hans Lellelid + * @package propel.engine.builder.om.php5 + */ +class PHP5ObjectBuilder extends ObjectBuilder { + + /** + * Gets the package for the [base] object classes. + * @return string + */ + public function getPackage() + { + return parent::getPackage() . ".om"; + } + + /** + * Returns the name of the current class being built. + * @return string + */ + public function getUnprefixedClassname() + { + return $this->getBuildProperty('basePrefix') . $this->getStubObjectBuilder()->getUnprefixedClassname(); + } + + /** + * Validates the current table to make sure that it won't + * result in generated code that will not parse. + * + * This method may emit warnings for code which may cause problems + * and will throw exceptions for errors that will definitely cause + * problems. + */ + protected function validateModel() + { + parent::validateModel(); + + $table = $this->getTable(); + + // Check to see whether any generated foreign key names + // will conflict with column names. + + $colPhpNames = array(); + $fkPhpNames = array(); + + foreach ($table->getColumns() as $col) { + $colPhpNames[] = $col->getPhpName(); + } + + foreach ($table->getForeignKeys() as $fk) { + $fkPhpNames[] = $this->getFKPhpNameAffix($fk, $plural = false); + } + + $intersect = array_intersect($colPhpNames, $fkPhpNames); + if (!empty($intersect)) { + throw new EngineException("One or more of your column names for [" . $table->getName() . "] table conflict with foreign key names (" . implode(", ", $intersect) . ")"); + } + + // Check foreign keys to see if there are any foreign keys that + // are also matched with an inversed referencing foreign key + // (this is currently unsupported behavior) + // see: http://propel.phpdb.org/trac/ticket/549 + + foreach ($table->getForeignKeys() as $fk) { + if ($fk->isMatchedByInverseFK()) { + throw new EngineException("The 1:1 relationship expressed by foreign key " . $fk->getName() . " is defined in both directions; Propel does not currently support this (if you must have both foreign key constraints, consider adding this constraint with a custom SQL file.)" ); + } + } + } + + /** + * Returns the appropriate formatter (from platform) for a date/time column. + * @param Column $col + * @return string + */ + protected function getTemporalFormatter(Column $col) + { + $fmt = null; + if ($col->getType() === PropelTypes::DATE) { + $fmt = $this->getPlatform()->getDateFormatter(); + } elseif ($col->getType() === PropelTypes::TIME) { + $fmt = $this->getPlatform()->getTimeFormatter(); + } elseif ($col->getType() === PropelTypes::TIMESTAMP) { + $fmt = $this->getPlatform()->getTimestampFormatter(); + } + return $fmt; + } + + /** + * Returns the type-casted and stringified default value for the specified Column. + * This only works for scalar default values currently. + * @return string The default value or 'NULL' if there is none. + */ + protected function getDefaultValueString(Column $col) + { + $defaultValue = var_export(null, true); + if (($val = $col->getPhpDefaultValue()) !== null) { + if ($col->isTemporalType()) { + $fmt = $this->getTemporalFormatter($col); + try { + if (!($this->getPlatform() instanceof MysqlPlatform && + ($val === '0000-00-00 00:00:00' || $val === '0000-00-00'))) { + // while technically this is not a default value of NULL, + // this seems to be closest in meaning. + $defDt = new DateTime($val); + $defaultValue = var_export($defDt->format($fmt), true); + } + } catch (Exception $x) { + // prevent endless loop when timezone is undefined + date_default_timezone_set('America/Los_Angeles'); + throw new EngineException("Unable to parse default temporal value for " . $col->getFullyQualifiedName() . ": " .$this->getDefaultValueString($col), $x); + } + } else { + if ($col->isPhpPrimitiveType()) { + settype($val, $col->getPhpType()); + $defaultValue = var_export($val, true); + } elseif ($col->isPhpObjectType()) { + $defaultValue = 'new '.$col->getPhpType().'(' . var_export($val, true) . ')'; + } else { + throw new EngineException("Cannot get default value string for " . $col->getFullyQualifiedName()); + } + } + } + return $defaultValue; + } + + /** + * Adds the include() statements for files that this class depends on or utilizes. + * @param string &$script The script will be modified in this method. + */ + protected function addIncludes(&$script) + { + } // addIncludes() + + /** + * Adds class phpdoc comment and openning of class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassOpen(&$script) + { + + $table = $this->getTable(); + $tableName = $table->getName(); + $tableDesc = $table->getDescription(); + $interface = $this->getInterface(); + + $script .= " +/** + * Base class that represents a row from the '$tableName' table. + * + * $tableDesc + *"; + if ($this->getBuildProperty('addTimeStamp')) { + $now = strftime('%c'); + $script .= " + * This class was autogenerated by Propel " . $this->getBuildProperty('version') . " on: + * + * $now + *"; + } + $script .= " + * @package ".$this->getPackage()." + */ +abstract class ".$this->getClassname()." extends ".ClassTools::classname($this->getBaseClass())." "; + + $interface = ClassTools::getInterface($table); + if ($interface) { + $script .= " implements " . ClassTools::classname($interface); + } + + $script .= " { + +"; + } + + /** + * Specifies the methods that are added as part of the basic OM class. + * This can be overridden by subclasses that wish to add more methods. + * @see ObjectBuilder::addClassBody() + */ + protected function addClassBody(&$script) + { + $table = $this->getTable(); + if (!$table->isAlias()) { + $this->addConstants($script); + $this->addAttributes($script); + } + + if ($this->hasDefaultValues()) { + $this->addApplyDefaultValues($script); + $this->addConstructor($script); + } + + $this->addColumnAccessorMethods($script); + $this->addColumnMutatorMethods($script); + + $this->addHasOnlyDefaultValues($script); + + $this->addHydrate($script); + $this->addEnsureConsistency($script); + + if (!$table->isReadOnly()) { + $this->addManipulationMethods($script); + } + + if ($this->isAddValidateMethod()) + { + $this->addValidationMethods($script); + } + + if ($this->isAddGenericAccessors()) { + $this->addGetByName($script); + $this->addGetByPosition($script); + $this->addToArray($script); + } + + if ($this->isAddGenericMutators()) { + $this->addSetByName($script); + $this->addSetByPosition($script); + $this->addFromArray($script); + } + + $this->addBuildCriteria($script); + $this->addBuildPkeyCriteria($script); + $this->addGetPrimaryKey($script); + $this->addSetPrimaryKey($script); + + $this->addCopy($script); + + if (!$table->isAlias()) { + $this->addGetPeer($script); + } + + $this->addFKMethods($script); + $this->addRefFKMethods($script); + $this->addClearAllReferences($script); + + // apply behaviors + $this->applyBehaviorModifier('objectMethods', $script, " "); + + $this->addPrimaryString($script); + } + + /** + * Closes class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassClose(&$script) + { + $script .= " +} // " . $this->getClassname() . " +"; + $this->applyBehaviorModifier('objectFilter', $script, ""); + } + + /** + * Adds any constants to the class. + * @param string &$script The script will be modified in this method. + */ + protected function addConstants(&$script) + { + // nothing to do here any more + // fieldnameTypeConstants have been moved to class BasePeer [sv] + } + + /** + * Adds class attributes. + * @param string &$script The script will be modified in this method. + */ + protected function addAttributes(&$script) + { + $table = $this->getTable(); + + $script .= " + /** + * The Peer class. + * Instance provides a convenient way of calling static methods on a class + * that calling code may not be able to identify. + * @var ".$this->getPeerClassname()." + */ + protected static \$peer; +"; + if (!$table->isAlias()) { + $this->addColumnAttributes($script); + } + + foreach ($table->getForeignKeys() as $fk) { + $this->addFKAttributes($script, $fk); + } + + foreach ($table->getReferrers() as $refFK) { + // if ($refFK->getTable()->getName() != $table->getName()) { + $this->addRefFKAttributes($script, $refFK); + // } + } + + $this->addAlreadyInSaveAttribute($script); + $this->addAlreadyInValidationAttribute($script); + + // apply behaviors + $this->applyBehaviorModifier('objectAttributes', $script, " "); + } + + /** + * Adds variables that store column values. + * @param string &$script The script will be modified in this method. + * @see addColumnNameConstants() + */ + protected function addColumnAttributes(&$script) { + + $table = $this->getTable(); + + foreach ($table->getColumns() as $col) { + $this->addColumnAttributeComment($script, $col); + $this->addColumnAttributeDeclaration($script, $col); + if ($col->isLazyLoad() ) { + $this->addColumnAttributeLoaderComment($script, $col); + $this->addColumnAttributeLoaderDeclaration($script, $col); + } + } + } + + /** + * Add comment about the attribute (variable) that stores column values + * @param string &$script The script will be modified in this method. + * @param Column $col + **/ + protected function addColumnAttributeComment(&$script, Column $col) { + $cptype = $col->getPhpType(); + $clo = strtolower($col->getName()); + + $script .= " + /** + * The value for the $clo field."; + if ($col->getDefaultValue()) { + if ($col->getDefaultValue()->isExpression()) { + $script .= " + * Note: this column has a database default value of: (expression) ".$col->getDefaultValue()->getValue(); + } else { + $script .= " + * Note: this column has a database default value of: ". $this->getDefaultValueString($col); + } + } + $script .= " + * @var $cptype + */"; + } + + /** + * Adds the declaration of a column value storage attribute + * @param string &$script The script will be modified in this method. + * @param Column $col + **/ + protected function addColumnAttributeDeclaration(&$script, Column $col) { + $clo = strtolower($col->getName()); + $script .= " + protected \$" . $clo . "; +"; + } + + /** + * Adds the comment about the attribute keeping track if an attribute value has been loaded + * @param string &$script The script will be modified in this method. + * @param Column $col + **/ + protected function addColumnAttributeLoaderComment(&$script, Column $col) { + $script .= " + /** + * Whether the lazy-loaded $clo value has been loaded from database. + * This is necessary to avoid repeated lookups if $clo column is NULL in the db. + * @var boolean + */"; + } + + /** + * Adds the declaration of the attribute keeping track of an attribute's loaded state + * @param string &$script The script will be modified in this method. + * @param Column $col + **/ + protected function addColumnAttributeLoaderDeclaration(&$script, Column $col) { + $clo = strtolower($col->getName()); + $script .= " + protected \$".$clo."_isLoaded = false; +"; + } + + /** + * Adds the getPeer() method. + * This is a convenient, non introspective way of getting the Peer class for a particular object. + * @param string &$script The script will be modified in this method. + */ + protected function addGetPeer(&$script) + { + $this->addGetPeerComment($script); + $this->addGetPeerFunctionOpen($script); + $this->addGetPeerFunctionBody($script); + $this->addGetPeerFunctionClose($script); + } + + /** + * Add the comment for the getPeer method + * @param string &$script The script will be modified in this method. + **/ + protected function addGetPeerComment(&$script) { + $script .= " + /** + * Returns a peer instance associated with this om. + * + * Since Peer classes are not to have any instance attributes, this method returns the + * same instance for all member of this class. The method could therefore + * be static, but this would prevent one from overriding the behavior. + * + * @return ".$this->getPeerClassname()." + */"; + } + + /** + * Adds the function declaration (function opening) for the getPeer method + * @param string &$script The script will be modified in this method. + **/ + protected function addGetPeerFunctionOpen(&$script) { + $script .= " + public function getPeer() + {"; + } + + /** + * Adds the body of the getPeer method + * @param string &$script The script will be modified in this method. + **/ + protected function addGetPeerFunctionBody(&$script) { + $script .= " + if (self::\$peer === null) { + " . $this->buildObjectInstanceCreationCode('self::$peer', $this->getPeerClassname()) . " + } + return self::\$peer;"; + } + + /** + * Add the function close for the getPeer method + * Note: this is just a } and the body ends with a return statement, so it's quite useless. But it's here anyway for consisency, cause there's a close function for all functions and in some other instances, they are useful + * @param string &$script The script will be modified in this method. + **/ + protected function addGetPeerFunctionClose(&$script) { + $script .= " + } +"; + } + + /** + * Adds the constructor for this object. + * @param string &$script The script will be modified in this method. + * @see addConstructor() + */ + protected function addConstructor(&$script) + { + $this->addConstructorComment($script); + $this->addConstructorOpen($script); + $this->addConstructorBody($script); + $this->addConstructorClose($script); + } + + /** + * Adds the comment for the constructor + * @param string &$script The script will be modified in this method. + **/ + protected function addConstructorComment(&$script) { + $script .= " + /** + * Initializes internal state of ".$this->getClassname()." object. + * @see applyDefaults() + */"; + } + + /** + * Adds the function declaration for the constructor + * @param string &$script The script will be modified in this method. + **/ + protected function addConstructorOpen(&$script) { + $script .= " + public function __construct() + {"; + } + + /** + * Adds the function body for the constructor + * @param string &$script The script will be modified in this method. + **/ + protected function addConstructorBody(&$script) { + $script .= " + parent::__construct(); + \$this->applyDefaultValues();"; + } + + /** + * Adds the function close for the constructor + * @param string &$script The script will be modified in this method. + **/ + protected function addConstructorClose(&$script) { + $script .= " + } +"; + } + + /** + * Adds the applyDefaults() method, which is called from the constructor. + * @param string &$script The script will be modified in this method. + * @see addConstructor() + */ + protected function addApplyDefaultValues(&$script) + { + $this->addApplyDefaultValuesComment($script); + $this->addApplyDefaultValuesOpen($script); + $this->addApplyDefaultValuesBody($script); + $this->addApplyDefaultValuesClose($script); + } + + /** + * Adds the comment for the applyDefaults method + * @param string &$script The script will be modified in this method. + * @see addApplyDefaultValues() + **/ + protected function addApplyDefaultValuesComment(&$script) { + $script .= " + /** + * Applies default values to this object. + * This method should be called from the object's constructor (or + * equivalent initialization method). + * @see __construct() + */"; + } + + /** + * Adds the function declaration for the applyDefaults method + * @param string &$script The script will be modified in this method. + * @see addApplyDefaultValues() + **/ + protected function addApplyDefaultValuesOpen(&$script) { + $script .= " + public function applyDefaultValues() + {"; + } + + /** + * Adds the function body of the applyDefault method + * @param string &$script The script will be modified in this method. + * @see addApplyDefaultValues() + **/ + protected function addApplyDefaultValuesBody(&$script) { + $table = $this->getTable(); + // FIXME - Apply support for PHP default expressions here + // see: http://propel.phpdb.org/trac/ticket/378 + + $colsWithDefaults = array(); + foreach ($table->getColumns() as $col) { + $def = $col->getDefaultValue(); + if ($def !== null && !$def->isExpression()) { + $colsWithDefaults[] = $col; + } + } + + $colconsts = array(); + foreach ($colsWithDefaults as $col) { + $clo = strtolower($col->getName()); + $script .= " + \$this->".$clo." = ".$this->getDefaultValueString($col).";"; + + } + } + + + /** + * Adds the function close for the applyDefaults method + * @param string &$script The script will be modified in this method. + * @see addApplyDefaultValues() + **/ + protected function addApplyDefaultValuesClose(&$script) { + $script .= " + } +"; + } + + // -------------------------------------------------------------- + // + // A C C E S S O R M E T H O D S + // + // -------------------------------------------------------------- + + /** + * Adds a date/time/timestamp getter method. + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + * @see parent::addColumnAccessors() + */ + protected function addTemporalAccessor(&$script, Column $col) + { + $this->addTemporalAccessorComment($script, $col); + $this->addTemporalAccessorOpen($script, $col); + $this->addTemporalAccessorBody($script, $col); + $this->addTemporalAccessorClose($script, $col); + } // addTemporalAccessor + + + /** + * Adds the comment for a temporal accessor + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + * @see addTemporalAccessor + **/ + protected function addTemporalAccessorComment(&$script, Column $col) { + $clo = strtolower($col->getName()); + $useDateTime = $this->getBuildProperty('useDateTimeClass'); + + $dateTimeClass = $this->getBuildProperty('dateTimeClass'); + if (!$dateTimeClass) { + $dateTimeClass = 'DateTime'; + } + + $handleMysqlDate = false; + if ($this->getPlatform() instanceof MysqlPlatform) { + if ($col->getType() === PropelTypes::TIMESTAMP) { + $handleMysqlDate = true; + $mysqlInvalidDateString = '0000-00-00 00:00:00'; + } elseif ($col->getType() === PropelTypes::DATE) { + $handleMysqlDate = true; + $mysqlInvalidDateString = '0000-00-00'; + } + // 00:00:00 is a valid time, so no need to check for that. + } + + $script .= " + /** + * Get the [optionally formatted] temporal [$clo] column value. + * ".$col->getDescription(); + if (!$useDateTime) { + $script .= " + * This accessor only only work with unix epoch dates. Consider enabling the propel.useDateTimeClass + * option in order to avoid converstions to integers (which are limited in the dates they can express)."; + } + $script .= " + * + * @param string \$format The date/time format string (either date()-style or strftime()-style). + * If format is NULL, then the raw ".($useDateTime ? 'DateTime object' : 'unix timestamp integer')." will be returned."; + if ($useDateTime) { + $script .= " + * @return mixed Formatted date/time value as string or $dateTimeClass object (if format is NULL), NULL if column is NULL" .($handleMysqlDate ? ', and 0 if column value is ' . $mysqlInvalidDateString : ''); + } else { + $script .= " + * @return mixed Formatted date/time value as string or (integer) unix timestamp (if format is NULL), NULL if column is NULL".($handleMysqlDate ? ', and 0 if column value is ' . $mysqlInvalidDateString : ''); + } + $script .= " + * @throws PropelException - if unable to parse/validate the date/time value. + */"; + } + + + /** + * Adds the function declaration for a temporal accessor + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + * @see addTemporalAccessor + **/ + protected function addTemporalAccessorOpen(&$script, Column $col) { + $cfc = $col->getPhpName(); + + $defaultfmt = null; + $visibility = $col->getAccessorVisibility(); + + // Default date/time formatter strings are specified in build.properties + if ($col->getType() === PropelTypes::DATE) { + $defaultfmt = $this->getBuildProperty('defaultDateFormat'); + } elseif ($col->getType() === PropelTypes::TIME) { + $defaultfmt = $this->getBuildProperty('defaultTimeFormat'); + } elseif ($col->getType() === PropelTypes::TIMESTAMP) { + $defaultfmt = $this->getBuildProperty('defaultTimeStampFormat'); + } + if (empty($defaultfmt)) { $defaultfmt = null; } + + $script .= " + ".$visibility." function get$cfc(\$format = ".var_export($defaultfmt, true).""; + if ($col->isLazyLoad()) $script .= ", \$con = null"; + $script .= ") + {"; + } + + /** + * Adds the body of the temporal accessor + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + * @see addTemporalAccessor + **/ + protected function addTemporalAccessorBody(&$script, Column $col) { + $cfc = $col->getPhpName(); + $clo = strtolower($col->getName()); + + $useDateTime = $this->getBuildProperty('useDateTimeClass'); + + $dateTimeClass = $this->getBuildProperty('dateTimeClass'); + if (!$dateTimeClass) { + $dateTimeClass = 'DateTime'; + } + + $defaultfmt = null; + + // Default date/time formatter strings are specified in build.properties + if ($col->getType() === PropelTypes::DATE) { + $defaultfmt = $this->getBuildProperty('defaultDateFormat'); + } elseif ($col->getType() === PropelTypes::TIME) { + $defaultfmt = $this->getBuildProperty('defaultTimeFormat'); + } elseif ($col->getType() === PropelTypes::TIMESTAMP) { + $defaultfmt = $this->getBuildProperty('defaultTimeStampFormat'); + } + if (empty($defaultfmt)) { $defaultfmt = null; } + + $handleMysqlDate = false; + if ($this->getPlatform() instanceof MysqlPlatform) { + if ($col->getType() === PropelTypes::TIMESTAMP) { + $handleMysqlDate = true; + $mysqlInvalidDateString = '0000-00-00 00:00:00'; + } elseif ($col->getType() === PropelTypes::DATE) { + $handleMysqlDate = true; + $mysqlInvalidDateString = '0000-00-00'; + } + // 00:00:00 is a valid time, so no need to check for that. + } + + if ($col->isLazyLoad()) { + $script .= " + if (!\$this->".$clo."_isLoaded && \$this->$clo === null && !\$this->isNew()) { + \$this->load$cfc(\$con); + } +"; + } + $script .= " + if (\$this->$clo === null) { + return null; + } + +"; + if ($handleMysqlDate) { + $script .= " + if (\$this->$clo === '$mysqlInvalidDateString') { + // while technically this is not a default value of NULL, + // this seems to be closest in meaning. + return null; + } else { + try { + \$dt = new $dateTimeClass(\$this->$clo); + } catch (Exception \$x) { + throw new PropelException(\"Internally stored date/time/timestamp value could not be converted to $dateTimeClass: \" . var_export(\$this->$clo, true), \$x); + } + } +"; + } else { + $script .= " + + try { + \$dt = new $dateTimeClass(\$this->$clo); + } catch (Exception \$x) { + throw new PropelException(\"Internally stored date/time/timestamp value could not be converted to $dateTimeClass: \" . var_export(\$this->$clo, true), \$x); + } +"; + } // if handleMyqlDate + + $script .= " + if (\$format === null) {"; + if ($useDateTime) { + $script .= " + // Because propel.useDateTimeClass is TRUE, we return a $dateTimeClass object. + return \$dt;"; + } else { + $script .= " + // We cast here to maintain BC in API; obviously we will lose data if we're dealing with pre-/post-epoch dates. + return (int) \$dt->format('U');"; + } + $script .= " + } elseif (strpos(\$format, '%') !== false) { + return strftime(\$format, \$dt->format('U')); + } else { + return \$dt->format(\$format); + }"; + } + + + /** + * Adds the body of the temporal accessor + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + * @see addTemporalAccessorClose + **/ + protected function addTemporalAccessorClose(&$script, Column $col) { + $script .= " + } +"; + } + + /** + * Adds a normal (non-temporal) getter method. + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + * @see parent::addColumnAccessors() + */ + protected function addDefaultAccessor(&$script, Column $col) + { + $this->addDefaultAccessorComment($script, $col); + $this->addDefaultAccessorOpen($script, $col); + $this->addDefaultAccessorBody($script, $col); + $this->addDefaultAccessorClose($script, $col); + } + + /** + * Add the comment for a default accessor method (a getter) + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + * @see addDefaultAccessor() + **/ + protected function addDefaultAccessorComment(&$script, Column $col) { + $clo=strtolower($col->getName()); + + $script .= " + /** + * Get the [$clo] column value. + * ".$col->getDescription(); + if ($col->isLazyLoad()) { + $script .= " + * @param PropelPDO An optional PropelPDO connection to use for fetching this lazy-loaded column."; + } + $script .= " + * @return ".$col->getPhpType()." + */"; + } + + /** + * Adds the function declaration for a default accessor + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + * @see addDefaultAccessor() + **/ + protected function addDefaultAccessorOpen(&$script, Column $col) { + $cfc = $col->getPhpName(); + $visibility = $col->getAccessorVisibility(); + + $script .= " + ".$visibility." function get$cfc("; + if ($col->isLazyLoad()) $script .= "PropelPDO \$con = null"; + $script .= ") + {"; + } + + /** + * Adds the function body for a default accessor method + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + * @see addDefaultAccessor() + **/ + protected function addDefaultAccessorBody(&$script, Column $col) { + $cfc = $col->getPhpName(); + $clo = strtolower($col->getName()); + if ($col->isLazyLoad()) { + $script .= " + if (!\$this->".$clo."_isLoaded && \$this->$clo === null && !\$this->isNew()) { + \$this->load$cfc(\$con); + } +"; + } + + $script .= " + return \$this->$clo;"; + } + + /** + * Adds the function close for a default accessor method + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + * @see addDefaultAccessor() + **/ + protected function addDefaultAccessorClose(&$script, Column $col) { + $script .= " + } +"; + } + + /** + * Adds the lazy loader method. + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + * @see parent::addColumnAccessors() + */ + protected function addLazyLoader(&$script, Column $col) + { + $this->addLazyLoaderComment($script, $col); + $this->addLazyLoaderOpen($script, $col); + $this->addLazyLoaderBody($script, $col); + $this->addLazyLoaderClose($script, $col); + } + + /** + * Adds the comment for the lazy loader method + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + * @see addLazyLoader() + **/ + protected function addLazyLoaderComment(&$script, Column $col) { + $clo = strtolower($col->getName()); + + $script .= " + /** + * Load the value for the lazy-loaded [$clo] column. + * + * This method performs an additional query to return the value for + * the [$clo] column, since it is not populated by + * the hydrate() method. + * + * @param \$con PropelPDO (optional) The PropelPDO connection to use. + * @return void + * @throws PropelException - any underlying error will be wrapped and re-thrown. + */"; + } + + /** + * Adds the function declaration for the lazy loader method + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + * @see addLazyLoader() + **/ + protected function addLazyLoaderOpen(&$script, Column $col) { + $cfc = $col->getPhpName(); + $script .= " + protected function load$cfc(PropelPDO \$con = null) + {"; + } + + /** + * Adds the function body for the lazy loader method + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + * @see addLazyLoader() + **/ + protected function addLazyLoaderBody(&$script, Column $col) { + $platform = $this->getPlatform(); + $clo = strtolower($col->getName()); + + $script .= " + \$c = \$this->buildPkeyCriteria(); + \$c->addSelectColumn(".$this->getColumnConstant($col)."); + try { + \$stmt = ".$this->getPeerClassname()."::doSelectStmt(\$c, \$con); + \$row = \$stmt->fetch(PDO::FETCH_NUM); + \$stmt->closeCursor();"; + + if ($col->isLobType() && !$platform->hasStreamBlobImpl()) { + $script .= " + if (\$row[0] !== null) { + \$this->$clo = fopen('php://memory', 'r+'); + fwrite(\$this->$clo, \$row[0]); + rewind(\$this->$clo); + } else { + \$this->$clo = null; + }"; + } elseif ($col->isPhpPrimitiveType()) { + $script .= " + \$this->$clo = (\$row[0] !== null) ? (".$col->getPhpType().") \$row[0] : null;"; + } elseif ($col->isPhpObjectType()) { + $script .= " + \$this->$clo = (\$row[0] !== null) ? new ".$col->getPhpType()."(\$row[0]) : null;"; + } else { + $script .= " + \$this->$clo = \$row[0];"; + } + + $script .= " + \$this->".$clo."_isLoaded = true; + } catch (Exception \$e) { + throw new PropelException(\"Error loading value for [$clo] column on demand.\", \$e); + }"; + } + + /** + * Adds the function close for the lazy loader + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + * @see addLazyLoader() + **/ + protected function addLazyLoaderClose(&$script, Column $col) { + $script .= " + }"; + } // addLazyLoader() + + // -------------------------------------------------------------- + // + // M U T A T O R M E T H O D S + // + // -------------------------------------------------------------- + + /** + * Adds the open of the mutator (setter) method for a column. + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + */ + protected function addMutatorOpen(&$script, Column $col) + { + $this->addMutatorComment($script, $col); + $this->addMutatorOpenOpen($script, $col); + $this->addMutatorOpenBody($script, $col); + } + + /** + * Adds the comment for a mutator + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + * @see addMutatorOpen() + **/ + protected function addMutatorComment(&$script, Column $col) { + $clo = strtolower($col->getName()); + $script .= " + /** + * Set the value of [$clo] column. + * ".$col->getDescription()." + * @param ".$col->getPhpType()." \$v new value + * @return ".$this->getObjectClassname()." The current object (for fluent API support) + */"; + } + + /** + * Adds the mutator function declaration + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + * @see addMutatorOpen() + **/ + protected function addMutatorOpenOpen(&$script, Column $col) { + $cfc = $col->getPhpName(); + $visibility = $col->getMutatorVisibility(); + + $script .= " + ".$visibility." function set$cfc(\$v) + {"; + } + + /** + * Adds the mutator open body part + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + * @see addMutatorOpen() + **/ + protected function addMutatorOpenBody(&$script, Column $col) { + $clo = strtolower($col->getName()); + $cfc = $col->getPhpName(); + if ($col->isLazyLoad()) { + $script .= " + // explicitly set the is-loaded flag to true for this lazy load col; + // it doesn't matter if the value is actually set or not (logic below) as + // any attempt to set the value means that no db lookup should be performed + // when the get$cfc() method is called. + \$this->".$clo."_isLoaded = true; +"; + } + } + + /** + * Adds the close of the mutator (setter) method for a column. + * + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + */ + protected function addMutatorClose(&$script, Column $col) + { + $this->addMutatorCloseBody($script, $col); + $this->addMutatorCloseClose($script, $col); + } + + /** + * Adds the body of the close part of a mutator + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + * @see addMutatorClose() + **/ + protected function addMutatorCloseBody(&$script, Column $col) { + $table = $this->getTable(); + $cfc = $col->getPhpName(); + $clo = strtolower($col->getName()); + + if ($col->isForeignKey()) { + + foreach ($col->getForeignKeys() as $fk) { + + $tblFK = $table->getDatabase()->getTable($fk->getForeignTableName()); + $colFK = $tblFK->getColumn($fk->getMappedForeignColumn($col->getName())); + + $varName = $this->getFKVarName($fk); + + $script .= " + if (\$this->$varName !== null && \$this->".$varName."->get".$colFK->getPhpName()."() !== \$v) { + \$this->$varName = null; + } +"; + } // foreach fk + } /* if col is foreign key */ + + foreach ($col->getReferrers() as $refFK) { + + $tblFK = $this->getDatabase()->getTable($refFK->getForeignTableName()); + + if ( $tblFK->getName() != $table->getName() ) { + + foreach ($col->getForeignKeys() as $fk) { + + $tblFK = $table->getDatabase()->getTable($fk->getForeignTableName()); + $colFK = $tblFK->getColumn($fk->getMappedForeignColumn($col->getName())); + + if ($refFK->isLocalPrimaryKey()) { + $varName = $this->getPKRefFKVarName($refFK); + $script .= " + // update associated ".$tblFK->getPhpName()." + if (\$this->$varName !== null) { + \$this->{$varName}->set".$colFK->getPhpName()."(\$v); + } +"; + } else { + $collName = $this->getRefFKCollVarName($refFK); + $script .= " + + // update associated ".$tblFK->getPhpName()." + if (\$this->$collName !== null) { + foreach (\$this->$collName as \$referrerObject) { + \$referrerObject->set".$colFK->getPhpName()."(\$v); + } + } +"; + } // if (isLocalPrimaryKey + } // foreach col->getPrimaryKeys() + } // if tablFk != table + + } // foreach + } + + /** + * Adds the close for the mutator close + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + * @see addMutatorClose() + **/ + protected function addMutatorCloseClose(&$script, Column $col) { + $cfc = $col->getPhpName(); + $script .= " + return \$this; + } // set$cfc() +"; + } + + /** + * Adds a setter for BLOB columns. + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + * @see parent::addColumnMutators() + */ + protected function addLobMutator(&$script, Column $col) + { + $this->addMutatorOpen($script, $col); + $clo = strtolower($col->getName()); + $script .= " + // Because BLOB columns are streams in PDO we have to assume that they are + // always modified when a new value is passed in. For example, the contents + // of the stream itself may have changed externally. + if (!is_resource(\$v) && \$v !== null) { + \$this->$clo = fopen('php://memory', 'r+'); + fwrite(\$this->$clo, \$v); + rewind(\$this->$clo); + } else { // it's already a stream + \$this->$clo = \$v; + } + \$this->modifiedColumns[] = ".$this->getColumnConstant($col)."; +"; + $this->addMutatorClose($script, $col); + } // addLobMutatorSnippet + + /** + * Adds a setter method for date/time/timestamp columns. + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + * @see parent::addColumnMutators() + */ + protected function addTemporalMutator(&$script, Column $col) + { + $cfc = $col->getPhpName(); + $clo = strtolower($col->getName()); + $visibility = $col->getMutatorVisibility(); + + $dateTimeClass = $this->getBuildProperty('dateTimeClass'); + if (!$dateTimeClass) { + $dateTimeClass = 'DateTime'; + } + + $script .= " + /** + * Sets the value of [$clo] column to a normalized version of the date/time value specified. + * ".$col->getDescription()." + * @param mixed \$v string, integer (timestamp), or DateTime value. Empty string will + * be treated as NULL for temporal objects. + * @return ".$this->getObjectClassname()." The current object (for fluent API support) + */ + ".$visibility." function set$cfc(\$v) + {"; + if ($col->isLazyLoad()) { + $script .= " + // explicitly set the is-loaded flag to true for this lazy load col; + // it doesn't matter if the value is actually set or not (logic below) as + // any attempt to set the value means that no db lookup should be performed + // when the get$cfc() method is called. + \$this->".$clo."_isLoaded = true; +"; + } + + $fmt = var_export($this->getTemporalFormatter($col), true); + + $script .= " + // we treat '' as NULL for temporal objects because DateTime('') == DateTime('now') + // -- which is unexpected, to say the least. + if (\$v === null || \$v === '') { + \$dt = null; + } elseif (\$v instanceof DateTime) { + \$dt = \$v; + } else { + // some string/numeric value passed; we normalize that so that we can + // validate it. + try { + if (is_numeric(\$v)) { // if it's a unix timestamp + \$dt = new $dateTimeClass('@'.\$v, new DateTimeZone('UTC')); + // We have to explicitly specify and then change the time zone because of a + // DateTime bug: http://bugs.php.net/bug.php?id=43003 + \$dt->setTimeZone(new DateTimeZone(date_default_timezone_get())); + } else { + \$dt = new $dateTimeClass(\$v); + } + } catch (Exception \$x) { + throw new PropelException('Error parsing date/time value: ' . var_export(\$v, true), \$x); + } + } + + if ( \$this->$clo !== null || \$dt !== null ) { + // (nested ifs are a little easier to read in this case) + + \$currNorm = (\$this->$clo !== null && \$tmpDt = new $dateTimeClass(\$this->$clo)) ? \$tmpDt->format($fmt) : null; + \$newNorm = (\$dt !== null) ? \$dt->format($fmt) : null; + + if ( (\$currNorm !== \$newNorm) // normalized values don't match "; + + if (($def = $col->getDefaultValue()) !== null && !$def->isExpression()) { + $defaultValue = $this->getDefaultValueString($col); + $script .= " + || (\$dt->format($fmt) === $defaultValue) // or the entered value matches the default"; + } + + $script .= " + ) + { + \$this->$clo = (\$dt ? \$dt->format($fmt) : null); + \$this->modifiedColumns[] = ".$this->getColumnConstant($col)."; + } + } // if either are not null +"; + $this->addMutatorClose($script, $col); + } + + /** + * Adds setter method for "normal" columns. + * @param string &$script The script will be modified in this method. + * @param Column $col The current column. + * @see parent::addColumnMutators() + */ + protected function addDefaultMutator(&$script, Column $col) + { + $clo = strtolower($col->getName()); + + $this->addMutatorOpen($script, $col); + + // Perform type-casting to ensure that we can use type-sensitive + // checking in mutators. + if ($col->isPhpPrimitiveType()) { + $script .= " + if (\$v !== null) { + \$v = (".$col->getPhpType().") \$v; + } +"; + } + + $script .= " + if (\$this->$clo !== \$v"; + if (($def = $col->getDefaultValue()) !== null && !$def->isExpression()) { + $script .= " || \$this->isNew()"; + } + $script .= ") { + \$this->$clo = \$v; + \$this->modifiedColumns[] = ".$this->getColumnConstant($col)."; + } +"; + $this->addMutatorClose($script, $col); + } + + /** + * Adds the hasOnlyDefaultValues() method. + * @param string &$script The script will be modified in this method. + */ + protected function addHasOnlyDefaultValues(&$script) + { + $this->addHasOnlyDefaultValuesComment($script); + $this->addHasOnlyDefaultValuesOpen($script); + $this->addHasOnlyDefaultValuesBody($script); + $this->addHasOnlyDefaultValuesClose($script); + } + + /** + * Adds the comment for the hasOnlyDefaultValues method + * @param string &$script The script will be modified in this method. + * @see addHasOnlyDefaultValues + **/ + protected function addHasOnlyDefaultValuesComment(&$script) { + $script .= " + /** + * Indicates whether the columns in this object are only set to default values. + * + * This method can be used in conjunction with isModified() to indicate whether an object is both + * modified _and_ has some values set which are non-default. + * + * @return boolean Whether the columns in this object are only been set with default values. + */"; + } + + /** + * Adds the function declaration for the hasOnlyDefaultValues method + * @param string &$script The script will be modified in this method. + * @see addHasOnlyDefaultValues + **/ + protected function addHasOnlyDefaultValuesOpen(&$script) { + $script .= " + public function hasOnlyDefaultValues() + {"; + } + + /** + * Adds the function body for the hasOnlyDefaultValues method + * @param string &$script The script will be modified in this method. + * @see addHasOnlyDefaultValues + **/ + protected function addHasOnlyDefaultValuesBody(&$script) { + $table = $this->getTable(); + $colsWithDefaults = array(); + foreach ($table->getColumns() as $col) { + $def = $col->getDefaultValue(); + if ($def !== null && !$def->isExpression()) { + $colsWithDefaults[] = $col; + } + } + + foreach ($colsWithDefaults as $col) { + + $clo = strtolower($col->getName()); + $def = $col->getDefaultValue(); + + $script .= " + if (\$this->$clo !== " . $this->getDefaultValueString($col).") { + return false; + } +"; + } + } + + /** + * Adds the function close for the hasOnlyDefaultValues method + * @param string &$script The script will be modified in this method. + * @see addHasOnlyDefaultValues + **/ + protected function addHasOnlyDefaultValuesClose(&$script) { + $script .= " + // otherwise, everything was equal, so return TRUE + return true;"; + $script .= " + } // hasOnlyDefaultValues() +"; + } + + /** + * Adds the hydrate() method, which sets attributes of the object based on a ResultSet. + * @param string &$script The script will be modified in this method. + */ + protected function addHydrate(&$script) + { + $this->addHydrateComment($script); + $this->addHydrateOpen($script); + $this->addHydrateBody($script); + $this->addHydrateClose($script); + } + + /** + * Adds the comment for the hydrate method + * @param string &$script The script will be modified in this method. + * @see addHydrate() + */ + protected function addHydrateComment(&$script) { + $script .= " + /** + * Hydrates (populates) the object variables with values from the database resultset. + * + * An offset (0-based \"start column\") is specified so that objects can be hydrated + * with a subset of the columns in the resultset rows. This is needed, for example, + * for results of JOIN queries where the resultset row includes columns from two or + * more tables. + * + * @param array \$row The row returned by PDOStatement->fetch(PDO::FETCH_NUM) + * @param int \$startcol 0-based offset column which indicates which restultset column to start with. + * @param boolean \$rehydrate Whether this object is being re-hydrated from the database. + * @return int next starting column + * @throws PropelException - Any caught Exception will be rewrapped as a PropelException. + */"; + } + + /** + * Adds the function declaration for the hydrate method + * @param string &$script The script will be modified in this method. + * @see addHydrate() + */ + protected function addHydrateOpen(&$script) { + $script .= " + public function hydrate(\$row, \$startcol = 0, \$rehydrate = false) + {"; + } + + /** + * Adds the function body for the hydrate method + * @param string &$script The script will be modified in this method. + * @see addHydrate() + */ + protected function addHydrateBody(&$script) { + $table = $this->getTable(); + $platform = $this->getPlatform(); + $script .= " + try { +"; + $n = 0; + foreach ($table->getColumns() as $col) { + if (!$col->isLazyLoad()) { + $clo = strtolower($col->getName()); + if ($col->isLobType() && !$platform->hasStreamBlobImpl()) { + $script .= " + if (\$row[\$startcol + $n] !== null) { + \$this->$clo = fopen('php://memory', 'r+'); + fwrite(\$this->$clo, \$row[\$startcol + $n]); + rewind(\$this->$clo); + } else { + \$this->$clo = null; + }"; + } elseif ($col->isPhpPrimitiveType()) { + $script .= " + \$this->$clo = (\$row[\$startcol + $n] !== null) ? (".$col->getPhpType().") \$row[\$startcol + $n] : null;"; + } elseif ($col->isPhpObjectType()) { + $script .= " + \$this->$clo = (\$row[\$startcol + $n] !== null) ? new ".$col->getPhpType()."(\$row[\$startcol + $n]) : null;"; + } else { + $script .= " + \$this->$clo = \$row[\$startcol + $n];"; + } + $n++; + } // if col->isLazyLoad() + } /* foreach */ + + if ($this->getBuildProperty("addSaveMethod")) { + $script .= " + \$this->resetModified(); +"; + } + + $script .= " + \$this->setNew(false); + + if (\$rehydrate) { + \$this->ensureConsistency(); + } + + // FIXME - using NUM_COLUMNS may be clearer. + return \$startcol + $n; // $n = ".$this->getPeerClassname()."::NUM_COLUMNS - ".$this->getPeerClassname()."::NUM_LAZY_LOAD_COLUMNS). + + } catch (Exception \$e) { + throw new PropelException(\"Error populating ".$this->getStubObjectBuilder()->getClassname()." object\", \$e); + }"; + } + + /** + * Adds the function close for the hydrate method + * @param string &$script The script will be modified in this method. + * @see addHydrate() + */ + protected function addHydrateClose(&$script) { + $script .= " + } +"; + } + + /** + * Adds the buildPkeyCriteria method + * @param string &$script The script will be modified in this method. + **/ + protected function addBuildPkeyCriteria(&$script) { + $this->addBuildPkeyCriteriaComment($script); + $this->addBuildPkeyCriteriaOpen($script); + $this->addBuildPkeyCriteriaBody($script); + $this->addBuildPkeyCriteriaClose($script); + } + + /** + * Adds the comment for the buildPkeyCriteria method + * @param string &$script The script will be modified in this method. + * @see addBuildPkeyCriteria() + **/ + protected function addBuildPkeyCriteriaComment(&$script) { + $script .= " + /** + * Builds a Criteria object containing the primary key for this object. + * + * Unlike buildCriteria() this method includes the primary key values regardless + * of whether or not they have been modified. + * + * @return Criteria The Criteria object containing value(s) for primary key(s). + */"; + } + + /** + * Adds the function declaration for the buildPkeyCriteria method + * @param string &$script The script will be modified in this method. + * @see addBuildPkeyCriteria() + **/ + protected function addBuildPkeyCriteriaOpen(&$script) { + $script .= " + public function buildPkeyCriteria() + {"; + } + + /** + * Adds the function body for the buildPkeyCriteria method + * @param string &$script The script will be modified in this method. + * @see addBuildPkeyCriteria() + **/ + protected function addBuildPkeyCriteriaBody(&$script) { + $script .= " + \$criteria = new Criteria(".$this->getPeerClassname()."::DATABASE_NAME); +"; + foreach ($this->getTable()->getColumns() as $col) { + $clo = strtolower($col->getName()); + if ($col->isPrimaryKey()) { + $script .= " + \$criteria->add(".$this->getColumnConstant($col).", \$this->$clo);"; + } + } + } + + /** + * Adds the function close for the buildPkeyCriteria method + * @param string &$script The script will be modified in this method. + * @see addBuildPkeyCriteria() + **/ + protected function addBuildPkeyCriteriaClose(&$script) { + $script .= " + + return \$criteria; + } +"; + } + + /** + * Adds the buildCriteria method + * @param string &$script The script will be modified in this method. + **/ + protected function addBuildCriteria(&$script) + { + $this->addBuildCriteriaComment($script); + $this->addBuildCriteriaOpen($script); + $this->addBuildCriteriaBody($script); + $this->addBuildCriteriaClose($script); + } + + /** + * Adds comment for the buildCriteria method + * @param string &$script The script will be modified in this method. + * @see addBuildCriteria() + **/ + protected function addBuildCriteriaComment(&$script) { + $script .= " + /** + * Build a Criteria object containing the values of all modified columns in this object. + * + * @return Criteria The Criteria object containing all modified values. + */"; + } + + /** + * Adds the function declaration of the buildCriteria method + * @param string &$script The script will be modified in this method. + * @see addBuildCriteria() + **/ + protected function addBuildCriteriaOpen(&$script) { + $script .= " + public function buildCriteria() + {"; + } + + /** + * Adds the function body of the buildCriteria method + * @param string &$script The script will be modified in this method. + * @see addBuildCriteria() + **/ + protected function addBuildCriteriaBody(&$script) { + $script .= " + \$criteria = new Criteria(".$this->getPeerClassname()."::DATABASE_NAME); +"; + foreach ($this->getTable()->getColumns() as $col) { + $clo = strtolower($col->getName()); + $script .= " + if (\$this->isColumnModified(".$this->getColumnConstant($col).")) \$criteria->add(".$this->getColumnConstant($col).", \$this->$clo);"; + } + } + + /** + * Adds the function close of the buildCriteria method + * @param string &$script The script will be modified in this method. + * @see addBuildCriteria() + **/ + protected function addBuildCriteriaClose(&$script) { + $script .= " + + return \$criteria; + } +"; + } + + /** + * Adds the toArray method + * @param string &$script The script will be modified in this method. + **/ + protected function addToArray(&$script) + { + $this->addToArrayComment($script); + $this->addToArrayOpen($script); + $this->addToArrayBody($script); + $this->addToArrayClose($script); + } + + /** + * Adds the comment of the toArray method + * @param string &$script The script will be modified in this method. + * @see addToArray() + **/ + protected function addToArrayComment(&$script) { + $script .= " + /** + * Exports the object as an array. + * + * You can specify the key type of the array by passing one of the class + * type constants. + * + * @param string \$keyType (optional) One of the class type constants BasePeer::TYPE_PHPNAME, BasePeer::TYPE_STUDLYPHPNAME + * BasePeer::TYPE_COLNAME, BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_NUM. Defaults to BasePeer::TYPE_PHPNAME. + * @param boolean \$includeLazyLoadColumns (optional) Whether to include lazy loaded columns. Defaults to TRUE. + * @return an associative array containing the field names (as keys) and field values + */"; + } + + /** + * Adds the function declaration of the toArray method + * @param string &$script The script will be modified in this method. + * @see addToArray() + **/ + protected function addToArrayOpen(&$script) { + $script .= " + public function toArray(\$keyType = BasePeer::TYPE_PHPNAME, \$includeLazyLoadColumns = true) + {"; + } + + /** + * Adds the function body of the toArray method + * @param string &$script The script will be modified in this method. + * @see addToArray() + **/ + protected function addToArrayBody(&$script) { + $script .= " + \$keys = ".$this->getPeerClassname()."::getFieldNames(\$keyType); + \$result = array("; + foreach ($this->getTable()->getColumns() as $num => $col) { + if ($col->isLazyLoad()) { + $script .= " + \$keys[$num] => (\$includeLazyLoadColumns) ? \$this->get".$col->getPhpName()."() : null,"; + } else { + $script .= " + \$keys[$num] => \$this->get".$col->getPhpName()."(),"; + } + } + $script .= " + );"; + } + + /** + * Adds the function close of the toArray method + * @param string &$script The script will be modified in this method. + * @see addToArray() + **/ + protected function addToArrayClose(&$script) { + $script .= " + return \$result; + } +"; + } // addToArray() + + /** + * Adds the getByName method + * @param string &$script The script will be modified in this method. + **/ + protected function addGetByName(&$script) + { + $this->addGetByNameComment($script); + $this->addGetByNameOpen($script); + $this->addGetByNameBody($script); + $this->addGetByNameClose($script); + } + + /** + * Adds the comment for the getByName method + * @param string &$script The script will be modified in this method. + * @see addGetByName + **/ + protected function addGetByNameComment(&$script) { + $script .= " + /** + * Retrieves a field from the object by name passed in as a string. + * + * @param string \$name name + * @param string \$type The type of fieldname the \$name is of: + * one of the class type constants BasePeer::TYPE_PHPNAME, BasePeer::TYPE_STUDLYPHPNAME + * BasePeer::TYPE_COLNAME, BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_NUM + * @return mixed Value of field. + */"; + } + + /** + * Adds the function declaration for the getByName method + * @param string &$script The script will be modified in this method. + * @see addGetByName + **/ + protected function addGetByNameOpen(&$script) { + $script .= " + public function getByName(\$name, \$type = BasePeer::TYPE_PHPNAME) + {"; + } + + /** + * Adds the function body for the getByName method + * @param string &$script The script will be modified in this method. + * @see addGetByName + **/ + protected function addGetByNameBody(&$script) { + $script .= " + \$pos = ".$this->getPeerClassname()."::translateFieldName(\$name, \$type, BasePeer::TYPE_NUM); + \$field = \$this->getByPosition(\$pos);"; + } + + /** + * Adds the function close for the getByName method + * @param string &$script The script will be modified in this method. + * @see addGetByName + **/ + protected function addGetByNameClose(&$script) { + $script .= " + return \$field; + } +"; + } + + /** + * Adds the getByPosition method + * @param string &$script The script will be modified in this method. + **/ + protected function addGetByPosition(&$script) + { + $this->addGetByPositionComment($script); + $this->addGetByPositionOpen($script); + $this->addGetByPositionBody($script); + $this->addGetByPositionClose($script); + } + + /** + * Adds comment for the getByPosition method + * @param string &$script The script will be modified in this method. + * @see addGetByPosition + **/ + protected function addGetByPositionComment(&$script) { + $script .= " + /** + * Retrieves a field from the object by Position as specified in the xml schema. + * Zero-based. + * + * @param int \$pos position in xml schema + * @return mixed Value of field at \$pos + */"; + } + + /** + * Adds the function declaration for the getByPosition method + * @param string &$script The script will be modified in this method. + * @see addGetByPosition + **/ + protected function addGetByPositionOpen(&$script) { + $script .= " + public function getByPosition(\$pos) + {"; + } + + /** + * Adds the function body for the getByPosition method + * @param string &$script The script will be modified in this method. + * @see addGetByPosition + **/ + protected function addGetByPositionBody(&$script) { + $table = $this->getTable(); + $script .= " + switch(\$pos) {"; + $i = 0; + foreach ($table->getColumns() as $col) { + $cfc = $col->getPhpName(); + $cptype = $col->getPhpType();// not safe to use it because some methods may return objects (Blob) + $script .= " + case $i: + return \$this->get$cfc(); + break;"; + $i++; + } /* foreach */ + $script .= " + default: + return null; + break; + } // switch()"; + } + + /** + * Adds the function close for the getByPosition method + * @param string &$script The script will be modified in this method. + * @see addGetByPosition + **/ + protected function addGetByPositionClose(&$script) { + $script .= " + } +"; + } + + protected function addSetByName(&$script) + { + $table = $this->getTable(); + $script .= " + /** + * Sets a field from the object by name passed in as a string. + * + * @param string \$name peer name + * @param mixed \$value field value + * @param string \$type The type of fieldname the \$name is of: + * one of the class type constants BasePeer::TYPE_PHPNAME, BasePeer::TYPE_STUDLYPHPNAME + * BasePeer::TYPE_COLNAME, BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_NUM + * @return void + */ + public function setByName(\$name, \$value, \$type = BasePeer::TYPE_PHPNAME) + { + \$pos = ".$this->getPeerClassname()."::translateFieldName(\$name, \$type, BasePeer::TYPE_NUM); + return \$this->setByPosition(\$pos, \$value); + } +"; + } + + protected function addSetByPosition(&$script) + { + $table = $this->getTable(); + $script .= " + /** + * Sets a field from the object by Position as specified in the xml schema. + * Zero-based. + * + * @param int \$pos position in xml schema + * @param mixed \$value field value + * @return void + */ + public function setByPosition(\$pos, \$value) + { + switch(\$pos) {"; + $i = 0; + foreach ($table->getColumns() as $col) { + $cfc = $col->getPhpName(); + $cptype = $col->getPhpType(); + $script .= " + case $i: + \$this->set$cfc(\$value); + break;"; + $i++; + } /* foreach */ + $script .= " + } // switch() + } +"; + } // addSetByPosition() + + protected function addFromArray(&$script) + { + $table = $this->getTable(); + $script .= " + /** + * Populates the object using an array. + * + * This is particularly useful when populating an object from one of the + * request arrays (e.g. \$_POST). This method goes through the column + * names, checking to see whether a matching key exists in populated + * array. If so the setByName() method is called for that column. + * + * You can specify the key type of the array by additionally passing one + * of the class type constants BasePeer::TYPE_PHPNAME, BasePeer::TYPE_STUDLYPHPNAME, + * BasePeer::TYPE_COLNAME, BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_NUM. + * The default key type is the column's phpname (e.g. 'AuthorId') + * + * @param array \$arr An array to populate the object from. + * @param string \$keyType The type of keys the array uses. + * @return void + */ + public function fromArray(\$arr, \$keyType = BasePeer::TYPE_PHPNAME) + { + \$keys = ".$this->getPeerClassname()."::getFieldNames(\$keyType); +"; + foreach ($table->getColumns() as $num => $col) { + $cfc = $col->getPhpName(); + $cptype = $col->getPhpType(); + $script .= " + if (array_key_exists(\$keys[$num], \$arr)) \$this->set$cfc(\$arr[\$keys[$num]]);"; + } /* foreach */ + $script .= " + } +"; + } // addFromArray + + /** + * Adds a delete() method to remove the object form the datastore. + * @param string &$script The script will be modified in this method. + */ + protected function addDelete(&$script) + { + $this->addDeleteComment($script); + $this->addDeleteOpen($script); + $this->addDeleteBody($script); + $this->addDeleteClose($script); + } + + /** + * Adds the comment for the delete function + * @param string &$script The script will be modified in this method. + * @see addDelete() + **/ + protected function addDeleteComment(&$script) { + $script .= " + /** + * Removes this object from datastore and sets delete attribute. + * + * @param PropelPDO \$con + * @return void + * @throws PropelException + * @see BaseObject::setDeleted() + * @see BaseObject::isDeleted() + */"; + } + + /** + * Adds the function declaration for the delete function + * @param string &$script The script will be modified in this method. + * @see addDelete() + **/ + protected function addDeleteOpen(&$script) { + $script .= " + public function delete(PropelPDO \$con = null) + {"; + } + + /** + * Adds the function body for the delete function + * @param string &$script The script will be modified in this method. + * @see addDelete() + **/ + protected function addDeleteBody(&$script) { + $script .= " + if (\$this->isDeleted()) { + throw new PropelException(\"This object has already been deleted.\"); + } + + if (\$con === null) { + \$con = Propel::getConnection(".$this->getPeerClassname()."::DATABASE_NAME, Propel::CONNECTION_WRITE); + } + + \$con->beginTransaction(); + try {"; + if($this->getGeneratorConfig()->getBuildProperty('addHooks')) { + $script .= " + \$ret = \$this->preDelete(\$con);"; + // apply behaviors + $this->applyBehaviorModifier('preDelete', $script, " "); + $script .= " + if (\$ret) { + ".$this->getPeerClassname()."::doDelete(\$this, \$con); + \$this->postDelete(\$con);"; + // apply behaviors + $this->applyBehaviorModifier('postDelete', $script, " "); + $script .= " + \$this->setDeleted(true); + \$con->commit(); + } else { + \$con->commit(); + }"; + } else { + // apply behaviors + $this->applyBehaviorModifier('preDelete', $script, " "); + $script .= " + ".$this->getPeerClassname()."::doDelete(\$this, \$con);"; + // apply behaviors + $this->applyBehaviorModifier('postDelete', $script, " "); + $script .= " + \$this->setDeleted(true); + \$con->commit();"; + } + + $script .= " + } catch (PropelException \$e) { + \$con->rollBack(); + throw \$e; + }"; + } + + /** + * Adds the function close for the delete function + * @param string &$script The script will be modified in this method. + * @see addDelete() + **/ + protected function addDeleteClose(&$script) { + $script .= " + } +"; + } // addDelete() + + /** + * Adds a reload() method to re-fetch the data for this object from the database. + * @param string &$script The script will be modified in this method. + */ + protected function addReload(&$script) + { + $table = $this->getTable(); + $script .= " + /** + * Reloads this object from datastore based on primary key and (optionally) resets all associated objects. + * + * This will only work if the object has been saved and has a valid primary key set. + * + * @param boolean \$deep (optional) Whether to also de-associated any related objects. + * @param PropelPDO \$con (optional) The PropelPDO connection to use. + * @return void + * @throws PropelException - if this object is deleted, unsaved or doesn't have pk match in db + */ + public function reload(\$deep = false, PropelPDO \$con = null) + { + if (\$this->isDeleted()) { + throw new PropelException(\"Cannot reload a deleted object.\"); + } + + if (\$this->isNew()) { + throw new PropelException(\"Cannot reload an unsaved object.\"); + } + + if (\$con === null) { + \$con = Propel::getConnection(".$this->getPeerClassname()."::DATABASE_NAME, Propel::CONNECTION_READ); + } + + // We don't need to alter the object instance pool; we're just modifying this instance + // already in the pool. + + \$stmt = ".$this->getPeerClassname()."::doSelectStmt(\$this->buildPkeyCriteria(), \$con); + \$row = \$stmt->fetch(PDO::FETCH_NUM); + \$stmt->closeCursor(); + if (!\$row) { + throw new PropelException('Cannot find matching row in the database to reload object values.'); + } + \$this->hydrate(\$row, 0, true); // rehydrate +"; + + // support for lazy load columns + foreach ($table->getColumns() as $col) { + if ($col->isLazyLoad()) { + $clo = strtolower($col->getName()); + $script .= " + // Reset the $clo lazy-load column + \$this->" . $clo . " = null; + \$this->".$clo."_isLoaded = false; +"; + } + } + + $script .= " + if (\$deep) { // also de-associate any related objects? +"; + + foreach ($table->getForeignKeys() as $fk) { + $varName = $this->getFKVarName($fk); + $script .= " + \$this->".$varName." = null;"; + } + + foreach ($table->getReferrers() as $refFK) { + if ($refFK->isLocalPrimaryKey()) { + $script .= " + \$this->".$this->getPKRefFKVarName($refFK)." = null; +"; + } else { + $script .= " + \$this->".$this->getRefFKCollVarName($refFK)." = null; + \$this->".$this->getRefFKLastCriteriaVarName($refFK)." = null; +"; + } + } + + $script .= " + } // if (deep) + } +"; + } // addReload() + + /** + * Adds the methods related to refreshing, saving and deleting the object. + * @param string &$script The script will be modified in this method. + */ + protected function addManipulationMethods(&$script) + { + $this->addReload($script); + $this->addDelete($script); + $this->addSave($script); + $this->addDoSave($script); + } + + /** + * Adds the methods related to validationg the object. + * @param string &$script The script will be modified in this method. + */ + protected function addValidationMethods(&$script) + { + $this->addValidationFailuresAttribute($script); + $this->addGetValidationFailures($script); + $this->addValidate($script); + $this->addDoValidate($script); + } + + /** + * Adds the $validationFailures attribute to store ValidationFailed objects. + * @param string &$script The script will be modified in this method. + */ + protected function addValidationFailuresAttribute(&$script) + { + $script .= " + /** + * Array of ValidationFailed objects. + * @var array ValidationFailed[] + */ + protected \$validationFailures = array(); +"; + } + + /** + * Adds the getValidationFailures() method. + * @param string &$script The script will be modified in this method. + */ + protected function addGetValidationFailures(&$script) + { + $script .= " + /** + * Gets any ValidationFailed objects that resulted from last call to validate(). + * + * + * @return array ValidationFailed[] + * @see validate() + */ + public function getValidationFailures() + { + return \$this->validationFailures; + } +"; + } // addGetValidationFailures() + + /** + * Adds the correct getPrimaryKey() method for this object. + * @param string &$script The script will be modified in this method. + */ + protected function addGetPrimaryKey(&$script) + { + $pkeys = $this->getTable()->getPrimaryKey(); + if (count($pkeys) == 1) { + $this->addGetPrimaryKey_SinglePK($script); + } elseif (count($pkeys) > 1) { + $this->addGetPrimaryKey_MultiPK($script); + } else { + // no primary key -- this is deprecated, since we don't *need* this method anymore + $this->addGetPrimaryKey_NoPK($script); + } + } + + /** + * Adds the getPrimaryKey() method for tables that contain a single-column primary key. + * @param string &$script The script will be modified in this method. + */ + protected function addGetPrimaryKey_SinglePK(&$script) + { + $table = $this->getTable(); + $pkeys = $table->getPrimaryKey(); + $cptype = $pkeys[0]->getPhpType(); + + $script .= " + /** + * Returns the primary key for this object (row). + * @return $cptype + */ + public function getPrimaryKey() + { + return \$this->get".$pkeys[0]->getPhpName()."(); + } +"; + } // addetPrimaryKey_SingleFK + + /** + * Adds the setPrimaryKey() method for tables that contain a multi-column primary key. + * @param string &$script The script will be modified in this method. + */ + protected function addGetPrimaryKey_MultiPK(&$script) + { + + $script .= " + /** + * Returns the composite primary key for this object. + * The array elements will be in same order as specified in XML. + * @return array + */ + public function getPrimaryKey() + { + \$pks = array(); +"; + $i = 0; + foreach ($this->getTable()->getPrimaryKey() as $pk) { + $script .= " + \$pks[$i] = \$this->get".$pk->getPhpName()."(); +"; + $i++; + } /* foreach */ + $script .= " + return \$pks; + } +"; + } // addGetPrimaryKey_MultiFK() + + /** + * Adds the getPrimaryKey() method for objects that have no primary key. + * This "feature" is dreprecated, since the getPrimaryKey() method is not required + * by the Persistent interface (or used by the templates). Hence, this method is also + * deprecated. + * @param string &$script The script will be modified in this method. + * @deprecated + */ + protected function addGetPrimaryKey_NoPK(&$script) + { + $script .= " + /** + * Returns NULL since this table doesn't have a primary key. + * This method exists only for BC and is deprecated! + * @return null + */ + public function getPrimaryKey() + { + return null; + } +"; + } + /** + * Adds the correct setPrimaryKey() method for this object. + * @param string &$script The script will be modified in this method. + */ + protected function addSetPrimaryKey(&$script) + { + $pkeys = $this->getTable()->getPrimaryKey(); + if (count($pkeys) == 1) { + $this->addSetPrimaryKey_SinglePK($script); + } elseif (count($pkeys) > 1) { + $this->addSetPrimaryKey_MultiPK($script); + } else { + // no primary key -- this is deprecated, since we don't *need* this method anymore + $this->addSetPrimaryKey_NoPK($script); + } + } + + /** + * Adds the setPrimaryKey() method for tables that contain a single-column primary key. + * @param string &$script The script will be modified in this method. + */ + protected function addSetPrimaryKey_SinglePK(&$script) + { + + $pkeys = $this->getTable()->getPrimaryKey(); + $col = $pkeys[0]; + $clo=strtolower($col->getName()); + $ctype = $col->getPhpType(); + + $script .= " + /** + * Generic method to set the primary key ($clo column). + * + * @param $ctype \$key Primary key. + * @return void + */ + public function setPrimaryKey(\$key) + { + \$this->set".$col->getPhpName()."(\$key); + } +"; + } // addSetPrimaryKey_SinglePK + + /** + * Adds the setPrimaryKey() method for tables that contain a multi-columnprimary key. + * @param string &$script The script will be modified in this method. + */ + protected function addSetPrimaryKey_MultiPK(&$script) + { + + $script .=" + /** + * Set the [composite] primary key. + * + * @param array \$keys The elements of the composite key (order must match the order in XML file). + * @return void + */ + public function setPrimaryKey(\$keys) + { +"; + $i = 0; + foreach ($this->getTable()->getPrimaryKey() as $pk) { + $pktype = $pk->getPhpType(); + $script .= " + \$this->set".$pk->getPhpName()."(\$keys[$i]); +"; + $i++; + } /* foreach ($table->getPrimaryKey() */ + $script .= " + } +"; + } // addSetPrimaryKey_MultiPK + + /** + * Adds the setPrimaryKey() method for objects that have no primary key. + * This "feature" is dreprecated, since the setPrimaryKey() method is not required + * by the Persistent interface (or used by the templates). Hence, this method is also + * deprecated. + * @param string &$script The script will be modified in this method. + * @deprecated + */ + protected function addSetPrimaryKey_NoPK(&$script) + { + $script .=" + /** + * Dummy primary key setter. + * + * This function only exists to preserve backwards compatibility. It is no longer + * needed or required by the Persistent interface. It will be removed in next BC-breaking + * release of Propel. + * + * @deprecated + */ + public function setPrimaryKey(\$pk) + { + // do nothing, because this object doesn't have any primary keys + } +"; + } + + // -------------------------------------------------------------------- + // Complex OM Methods + // -------------------------------------------------------------------- + + /** + * Constructs variable name for fkey-related objects. + * @param ForeignKey $fk + * @return string + */ + protected function getFKVarName(ForeignKey $fk) + { + return 'a' . $this->getFKPhpNameAffix($fk, $plural = false); + } + + /** + * Constructs variable name for objects which referencing current table by specified foreign key. + * @param ForeignKey $fk + * @return string + */ + protected function getRefFKCollVarName(ForeignKey $fk) + { + return 'coll' . $this->getRefFKPhpNameAffix($fk, $plural = true); + } + + /** + * Constructs variable name for single object which references current table by specified foreign key + * which is ALSO a primary key (hence one-to-one relationship). + * @param ForeignKey $fk + * @return string + */ + protected function getPKRefFKVarName(ForeignKey $fk) + { + return 'single' . $this->getRefFKPhpNameAffix($fk, $plural = false); + } + + /** + * Gets variable name for the Criteria which was used to fetch the objects which + * referencing current table by specified foreign key. + * @param ForeignKey $fk + * @return string + */ + protected function getRefFKLastCriteriaVarName(ForeignKey $fk) + { + return 'last' . $this->getRefFKPhpNameAffix($fk, $plural = false) . 'Criteria'; + } + + // ---------------------------------------------------------------- + // + // F K M E T H O D S + // + // ---------------------------------------------------------------- + + /** + * Adds the methods that get & set objects related by foreign key to the current object. + * @param string &$script The script will be modified in this method. + */ + protected function addFKMethods(&$script) + { + foreach ($this->getTable()->getForeignKeys() as $fk) { + $this->addFKMutator($script, $fk); + $this->addFKAccessor($script, $fk); + } // foreach fk + } + + /** + * Adds the class attributes that are needed to store fkey related objects. + * @param string &$script The script will be modified in this method. + */ + protected function addFKAttributes(&$script, ForeignKey $fk) + { + $className = $this->getForeignTable($fk)->getPhpName(); + $varName = $this->getFKVarName($fk); + + $script .= " + /** + * @var $className + */ + protected $".$varName."; +"; + } + + /** + * Adds the mutator (setter) method for setting an fkey related object. + * @param string &$script The script will be modified in this method. + */ + protected function addFKMutator(&$script, ForeignKey $fk) + { + $table = $this->getTable(); + $tblFK = $this->getForeignTable($fk); + + $joinTableObjectBuilder = $this->getNewObjectBuilder($tblFK); + + $className = $joinTableObjectBuilder->getObjectClassname(); + $varName = $this->getFKVarName($fk); + + $script .= " + /** + * Declares an association between this object and a $className object. + * + * @param $className \$v + * @return ".$this->getObjectClassname()." The current object (for fluent API support) + * @throws PropelException + */ + public function set".$this->getFKPhpNameAffix($fk, $plural = false)."($className \$v = null) + {"; + foreach ($fk->getLocalColumns() as $columnName) { + $column = $table->getColumn($columnName); + $lfmap = $fk->getLocalForeignMapping(); + $colFKName = $lfmap[$columnName]; + $colFK = $tblFK->getColumn($colFKName); + $script .= " + if (\$v === null) { + \$this->set".$column->getPhpName()."(".$this->getDefaultValueString($column)."); + } else { + \$this->set".$column->getPhpName()."(\$v->get".$colFK->getPhpName()."()); + } +"; + + } /* foreach local col */ + + $script .= " + \$this->$varName = \$v; +"; + + // Now add bi-directional relationship binding, taking into account whether this is + // a one-to-one relationship. + + if ($fk->isLocalPrimaryKey()) { + $script .= " + // Add binding for other direction of this 1:1 relationship. + if (\$v !== null) { + \$v->set".$this->getRefFKPhpNameAffix($fk, $plural = false)."(\$this); + } +"; + } else { + $script .= " + // Add binding for other direction of this n:n relationship. + // If this object has already been added to the $className object, it will not be re-added. + if (\$v !== null) { + \$v->add".$this->getRefFKPhpNameAffix($fk, $plural = false)."(\$this); + } +"; + + } + + $script .= " + return \$this; + } +"; + } + + /** + * Adds the accessor (getter) method for getting an fkey related object. + * @param string &$script The script will be modified in this method. + */ + protected function addFKAccessor(&$script, ForeignKey $fk) + { + $table = $this->getTable(); + + $varName = $this->getFKVarName($fk); + $pCollName = $this->getFKPhpNameAffix($fk, $plural = true); + + $fkPeerBuilder = $this->getNewPeerBuilder($this->getForeignTable($fk)); + $fkObjectBuilder = $this->getNewObjectBuilder($this->getForeignTable($fk))->getStubObjectBuilder(); + $className = $fkObjectBuilder->getClassname(); // get the Classname that has maybe a prefix + + $and = ""; + $comma = ""; + $conditional = ""; + $argmap = array(); // foreign -> local mapping + $argsize = 0; + foreach ($fk->getLocalColumns() as $columnName) { + + $lfmap = $fk->getLocalForeignMapping(); + + $localColumn = $table->getColumn($columnName); + $foreignColumn = $fk->getForeignTable()->getColumn($lfmap[$columnName]); + + $column = $table->getColumn($columnName); + $cptype = $column->getPhpType(); + $clo = strtolower($column->getName()); + + if ($cptype == "integer" || $cptype == "float" || $cptype == "double") { + $conditional .= $and . "\$this->". $clo ." != 0"; + } elseif ($cptype == "string") { + $conditional .= $and . "(\$this->" . $clo ." !== \"\" && \$this->".$clo." !== null)"; + } else { + $conditional .= $and . "\$this->" . $clo ." !== null"; + } + + $argmap[] = array('foreign' => $foreignColumn, 'local' => $localColumn); + $and = " && "; + $comma = ", "; + $argsize = $argsize + 1; + } + + // If the related column is a primary kay and if it's a simple association, + // The use retrieveByPk() instead of doSelect() to take advantage of instance pooling + $useRetrieveByPk = count($argmap) == 1 && $argmap[0]['foreign']->isPrimaryKey(); + + $script .= " + + /** + * Get the associated $className object + * + * @param PropelPDO Optional Connection object. + * @return $className The associated $className object. + * @throws PropelException + */ + public function get".$this->getFKPhpNameAffix($fk, $plural = false)."(PropelPDO \$con = null) + {"; + $script .= " + if (\$this->$varName === null && ($conditional)) {"; + if ($useRetrieveByPk) { + $script .= " + \$this->$varName = ".$fkPeerBuilder->getPeerClassname()."::retrieveByPk(\$this->$clo);"; + } else { + $script .= " + \$c = new Criteria(".$fkPeerBuilder->getPeerClassname()."::DATABASE_NAME);"; + foreach ($argmap as $el) { + $fcol = $el['foreign']; + $lcol = $el['local']; + $clo = strtolower($lcol->getName()); + $script .= " + \$c->add(".$fkPeerBuilder->getColumnConstant($fcol).", \$this->".$clo.");"; + } + $script .= " + \$this->$varName = ".$fkPeerBuilder->getPeerClassname()."::doSelectOne(\$c, \$con);"; + } + if ($fk->isLocalPrimaryKey()) { + $script .= " + // Because this foreign key represents a one-to-one relationship, we will create a bi-directional association. + \$this->{$varName}->set".$this->getRefFKPhpNameAffix($fk, $plural = false)."(\$this);"; + } else { + $script .= " + /* The following can be used additionally to + guarantee the related object contains a reference + to this object. This level of coupling may, however, be + undesirable since it could result in an only partially populated collection + in the referenced object. + \$this->{$varName}->add".$this->getRefFKPhpNameAffix($fk, $plural = true)."(\$this); + */"; + } + + $script .= " + } + return \$this->$varName; + } +"; + + } // addFKAccessor + + /** + * Adds a convenience method for setting a related object by specifying the primary key. + * This can be used in conjunction with the getPrimaryKey() for systems where nothing is known + * about the actual objects being related. + * @param string &$script The script will be modified in this method. + */ + protected function addFKByKeyMutator(&$script, ForeignKey $fk) + { + $table = $this->getTable(); + + #$className = $this->getForeignTable($fk)->getPhpName(); + $methodAffix = $this->getFKPhpNameAffix($fk); + #$varName = $this->getFKVarName($fk); + + $script .= " + /** + * Provides convenient way to set a relationship based on a + * key. e.g. + * \$bar->setFooKey(\$foo->getPrimaryKey()) + *"; + if (count($fk->getLocalColumns()) > 1) { + $script .= " + * Note: It is important that the xml schema used to create this class + * maintains consistency in the order of related columns between + * ".$table->getName()." and ". $tblFK->getName().". + * If for some reason this is impossible, this method should be + * overridden in ".$table->getPhpName()."."; + } + $script .= " + * @return ".$this->getObjectClassname()." The current object (for fluent API support) + * @throws PropelException + */ + public function set".$methodAffix."Key(\$key) + { +"; + if (count($fk->getLocalColumns()) > 1) { + $i = 0; + foreach ($fk->getLocalColumns() as $colName) { + $col = $table->getColumn($colName); + $fktype = $col->getPhpType(); + $script .= " + \$this->set".$col->getPhpName()."( ($fktype) \$key[$i] ); +"; + $i++; + } /* foreach */ + } else { + $lcols = $fk->getLocalColumns(); + $colName = $lcols[0]; + $col = $table->getColumn($colName); + $fktype = $col->getPhpType(); + $script .= " + \$this->set".$col->getPhpName()."( ($fktype) \$key); +"; + } + $script .= " + return \$this; + } +"; + } // addFKByKeyMutator() + + /** + * Adds the method that fetches fkey-related (referencing) objects but also joins in data from another table. + * @param string &$script The script will be modified in this method. + */ + protected function addRefFKGetJoinMethods(&$script, ForeignKey $refFK) + { + $table = $this->getTable(); + $tblFK = $refFK->getTable(); + $join_behavior = $this->getGeneratorConfig()->getBuildProperty('useLeftJoinsInDoJoinMethods') ? 'Criteria::LEFT_JOIN' : 'Criteria::INNER_JOIN'; + + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $relCol = $this->getRefFKPhpNameAffix($refFK, $plural=true); + $collName = $this->getRefFKCollVarName($refFK); + $lastCriteriaName = $this->getRefFKLastCriteriaVarName($refFK); + + $fkPeerBuilder = $this->getNewPeerBuilder($tblFK); + + $lastTable = ""; + foreach ($tblFK->getForeignKeys() as $fk2) { + + $tblFK2 = $this->getForeignTable($fk2); + $doJoinGet = !$tblFK2->isForReferenceOnly(); + + // it doesn't make sense to join in rows from the curent table, since we are fetching + // objects related to *this* table (i.e. the joined rows will all be the same row as current object) + if ($this->getTable()->getPhpName() == $tblFK2->getPhpName()) { + $doJoinGet = false; + } + + $relCol2 = $this->getFKPhpNameAffix($fk2, $plural = false); + + if ( $this->getRelatedBySuffix($refFK) != "" && + ($this->getRelatedBySuffix($refFK) == $this->getRelatedBySuffix($fk2))) { + $doJoinGet = false; + } + + if ($doJoinGet) { + $script .= " + + /** + * If this collection has already been initialized with + * an identical criteria, it returns the collection. + * Otherwise if this ".$table->getPhpName()." is new, it will return + * an empty collection; or if this ".$table->getPhpName()." has previously + * been saved, it will retrieve related $relCol from storage. + * + * This method is protected by default in order to keep the public + * api reasonable. You can provide public methods for those you + * actually need in ".$table->getPhpName().". + */ + public function get".$relCol."Join".$relCol2."(\$criteria = null, \$con = null, \$join_behavior = $join_behavior) + {"; + $script .= " + if (\$criteria === null) { + \$criteria = new Criteria($peerClassname::DATABASE_NAME); + } + elseif (\$criteria instanceof Criteria) + { + \$criteria = clone \$criteria; + } + + if (\$this->$collName === null) { + if (\$this->isNew()) { + \$this->$collName = array(); + } else { +"; + foreach ($refFK->getForeignColumns() as $columnName) { + $column = $table->getColumn($columnName); + $flMap = $refFK->getForeignLocalMapping(); + $colFKName = $flMap[$columnName]; + $colFK = $tblFK->getColumn($colFKName); + if ($colFK === null) { + throw new EngineException("Column $colFKName not found in " . $tblFK->getName()); + } + $clo = strtolower($column->getName()); + $script .= " + \$criteria->add(".$fkPeerBuilder->getColumnConstant($colFK).", \$this->$clo); +"; + } // end foreach ($fk->getForeignColumns() + + $script .= " + \$this->$collName = ".$fkPeerBuilder->getPeerClassname()."::doSelectJoin$relCol2(\$criteria, \$con, \$join_behavior); + } + } else { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. +"; + foreach ($refFK->getForeignColumns() as $columnName) { + $column = $table->getColumn($columnName); + $flMap = $refFK->getForeignLocalMapping(); + $colFKName = $flMap[$columnName]; + $colFK = $tblFK->getColumn($colFKName); + $clo = strtolower($column->getName()); + $script .= " + \$criteria->add(".$fkPeerBuilder->getColumnConstant($colFK).", \$this->$clo); +"; + } /* end foreach ($fk->getForeignColumns() */ + + $script .= " + if (!isset(\$this->$lastCriteriaName) || !\$this->".$lastCriteriaName."->equals(\$criteria)) { + \$this->$collName = ".$fkPeerBuilder->getPeerClassname()."::doSelectJoin$relCol2(\$criteria, \$con, \$join_behavior); + } + } + \$this->$lastCriteriaName = \$criteria; + + return \$this->$collName; + } +"; + } /* end if ($doJoinGet) */ + + } /* end foreach ($tblFK->getForeignKeys() as $fk2) { */ + + } // function + + + // ---------------------------------------------------------------- + // + // R E F E R R E R F K M E T H O D S + // + // ---------------------------------------------------------------- + + /** + * Adds the attributes used to store objects that have referrer fkey relationships to this object. + * protected collVarName; + * private lastVarNameCriteria = null; + * @param string &$script The script will be modified in this method. + */ + protected function addRefFKAttributes(&$script, ForeignKey $refFK) + { + $joinedTableObjectBuilder = $this->getNewObjectBuilder($refFK->getTable()); + $className = $joinedTableObjectBuilder->getObjectClassname(); + + if ($refFK->isLocalPrimaryKey()) { + $script .= " + /** + * @var $className one-to-one related $className object + */ + protected $".$this->getPKRefFKVarName($refFK)."; +"; + } else { + $script .= " + /** + * @var array {$className}[] Collection to store aggregation of $className objects. + */ + protected $".$this->getRefFKCollVarName($refFK)."; + + /** + * @var Criteria The criteria used to select the current contents of ".$this->getRefFKCollVarName($refFK).". + */ + private $".$this->getRefFKLastCriteriaVarName($refFK)." = null; +"; + } + } + + /** + * Adds the methods for retrieving, initializing, adding objects that are related to this one by foreign keys. + * @param string &$script The script will be modified in this method. + */ + protected function addRefFKMethods(&$script) + { + foreach ($this->getTable()->getReferrers() as $refFK) { + if ($refFK->isLocalPrimaryKey()) { + $this->addPKRefFKGet($script, $refFK); + $this->addPKRefFKSet($script, $refFK); + } else { + $this->addRefFKClear($script, $refFK); + $this->addRefFKInit($script, $refFK); + $this->addRefFKGet($script, $refFK); + $this->addRefFKCount($script, $refFK); + $this->addRefFKAdd($script, $refFK); + $this->addRefFKGetJoinMethods($script, $refFK); + } + } + } + + /** + * Adds the method that clears the referrer fkey collection. + * @param string &$script The script will be modified in this method. + */ + protected function addRefFKClear(&$script, ForeignKey $refFK) { + + $relCol = $this->getRefFKPhpNameAffix($refFK, $plural = true); + $collName = $this->getRefFKCollVarName($refFK); + + $script .= " + /** + * Clears out the $collName collection (array). + * + * This does not modify the database; however, it will remove any associated objects, causing + * them to be refetched by subsequent calls to accessor method. + * + * @return void + * @see add$relCol() + */ + public function clear$relCol() + { + \$this->$collName = null; // important to set this to NULL since that means it is uninitialized + } +"; + } // addRefererClear() + + /** + * Adds the method that initializes the referrer fkey collection. + * @param string &$script The script will be modified in this method. + */ + protected function addRefFKInit(&$script, ForeignKey $refFK) { + + $relCol = $this->getRefFKPhpNameAffix($refFK, $plural = true); + $collName = $this->getRefFKCollVarName($refFK); + + $script .= " + /** + * Initializes the $collName collection (array). + * + * By default this just sets the $collName collection to an empty array (like clear$collName()); + * however, you may wish to override this method in your stub class to provide setting appropriate + * to your application -- for example, setting the initial array to the values stored in database. + * + * @return void + */ + public function init$relCol() + { + \$this->$collName = array(); + } +"; + } // addRefererInit() + + /** + * Adds the method that adds an object into the referrer fkey collection. + * @param string &$script The script will be modified in this method. + */ + protected function addRefFKAdd(&$script, ForeignKey $refFK) + { + $tblFK = $refFK->getTable(); + + $joinedTableObjectBuilder = $this->getNewObjectBuilder($refFK->getTable()); + $className = $joinedTableObjectBuilder->getObjectClassname(); + + $collName = $this->getRefFKCollVarName($refFK); + + $script .= " + /** + * Method called to associate a $className object to this object + * through the $className foreign key attribute. + * + * @param $className \$l $className + * @return void + * @throws PropelException + */ + public function add".$this->getRefFKPhpNameAffix($refFK, $plural = false)."($className \$l) + { + if (\$this->$collName === null) { + \$this->init".$this->getRefFKPhpNameAffix($refFK, $plural = true)."(); + } + if (!in_array(\$l, \$this->$collName, true)) { // only add it if the **same** object is not already associated + array_push(\$this->$collName, \$l); + \$l->set".$this->getFKPhpNameAffix($refFK, $plural = false)."(\$this); + } + } +"; + } // addRefererAdd + + /** + * Adds the method that returns the size of the referrer fkey collection. + * @param string &$script The script will be modified in this method. + */ + protected function addRefFKCount(&$script, ForeignKey $refFK) + { + $table = $this->getTable(); + $tblFK = $refFK->getTable(); + + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + + $fkPeerBuilder = $this->getNewPeerBuilder($refFK->getTable()); + $relCol = $this->getRefFKPhpNameAffix($refFK, $plural = true); + + $collName = $this->getRefFKCollVarName($refFK); + $lastCriteriaName = $this->getRefFKLastCriteriaVarName($refFK); + + $className = $fkPeerBuilder->getObjectClassname(); + + $script .= " + /** + * Returns the number of related $className objects. + * + * @param Criteria \$criteria + * @param boolean \$distinct + * @param PropelPDO \$con + * @return int Count of related $className objects. + * @throws PropelException + */ + public function count$relCol(Criteria \$criteria = null, \$distinct = false, PropelPDO \$con = null) + {"; + + $script .= " + if (\$criteria === null) { + \$criteria = new Criteria($peerClassname::DATABASE_NAME); + } else { + \$criteria = clone \$criteria; + } + + if (\$distinct) { + \$criteria->setDistinct(); + } + + \$count = null; + + if (\$this->$collName === null) { + if (\$this->isNew()) { + \$count = 0; + } else { +"; + foreach ($refFK->getLocalColumns() as $colFKName) { + // $colFKName is local to the referring table (i.e. foreign to this table) + $lfmap = $refFK->getLocalForeignMapping(); + $localColumn = $this->getTable()->getColumn($lfmap[$colFKName]); + $colFK = $refFK->getTable()->getColumn($colFKName); + $clo = strtolower($localColumn->getName()); + $script .= " + \$criteria->add(".$fkPeerBuilder->getColumnConstant($colFK).", \$this->$clo); +"; + } // end foreach ($fk->getForeignColumns() + + $script .= " + \$count = ".$fkPeerBuilder->getPeerClassname()."::doCount(\$criteria, false, \$con); + } + } else { + // criteria has no effect for a new object + if (!\$this->isNew()) { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return count of the collection. +"; + foreach ($refFK->getLocalColumns() as $colFKName) { + // $colFKName is local to the referring table (i.e. foreign to this table) + $lfmap = $refFK->getLocalForeignMapping(); + $localColumn = $this->getTable()->getColumn($lfmap[$colFKName]); + $colFK = $refFK->getTable()->getColumn($colFKName); + $clo = strtolower($localColumn->getName()); + $script .= " + + \$criteria->add(".$fkPeerBuilder->getColumnConstant($colFK).", \$this->$clo); +"; + } // foreach ($fk->getForeignColumns() + $script .= " + if (!isset(\$this->$lastCriteriaName) || !\$this->".$lastCriteriaName."->equals(\$criteria)) { + \$count = ".$fkPeerBuilder->getPeerClassname()."::doCount(\$criteria, false, \$con); + } else { + \$count = count(\$this->$collName); + } + } else { + \$count = count(\$this->$collName); + } + } + return \$count; + } +"; + } // addRefererCount + + /** + * Adds the method that returns the referrer fkey collection. + * @param string &$script The script will be modified in this method. + */ + protected function addRefFKGet(&$script, ForeignKey $refFK) + { + $table = $this->getTable(); + $tblFK = $refFK->getTable(); + + $peerClassname = $this->getStubPeerBuilder()->getClassname(); + $fkPeerBuilder = $this->getNewPeerBuilder($refFK->getTable()); + $relCol = $this->getRefFKPhpNameAffix($refFK, $plural = true); + + $collName = $this->getRefFKCollVarName($refFK); + $lastCriteriaName = $this->getRefFKLastCriteriaVarName($refFK); + + $className = $fkPeerBuilder->getObjectClassname(); + + $script .= " + /** + * Gets an array of $className objects which contain a foreign key that references this object. + * + * If this collection has already been initialized with an identical Criteria, it returns the collection. + * Otherwise if this ".$this->getObjectClassname()." has previously been saved, it will retrieve + * related $relCol from storage. If this ".$this->getObjectClassname()." is new, it will return + * an empty collection or the current collection, the criteria is ignored on a new object. + * + * @param PropelPDO \$con + * @param Criteria \$criteria + * @return array {$className}[] + * @throws PropelException + */ + public function get$relCol(\$criteria = null, PropelPDO \$con = null) + {"; + + $script .= " + if (\$criteria === null) { + \$criteria = new Criteria($peerClassname::DATABASE_NAME); + } + elseif (\$criteria instanceof Criteria) + { + \$criteria = clone \$criteria; + } + + if (\$this->$collName === null) { + if (\$this->isNew()) { + \$this->$collName = array(); + } else { +"; + foreach ($refFK->getLocalColumns() as $colFKName) { + // $colFKName is local to the referring table (i.e. foreign to this table) + $lfmap = $refFK->getLocalForeignMapping(); + $localColumn = $this->getTable()->getColumn($lfmap[$colFKName]); + $colFK = $refFK->getTable()->getColumn($colFKName); + + $clo = strtolower($localColumn->getName()); + + $script .= " + \$criteria->add(".$fkPeerBuilder->getColumnConstant($colFK).", \$this->$clo); +"; + } // end foreach ($fk->getForeignColumns() + + $script .= " + ".$fkPeerBuilder->getPeerClassname()."::addSelectColumns(\$criteria); + \$this->$collName = ".$fkPeerBuilder->getPeerClassname()."::doSelect(\$criteria, \$con); + } + } else { + // criteria has no effect for a new object + if (!\$this->isNew()) { + // the following code is to determine if a new query is + // called for. If the criteria is the same as the last + // one, just return the collection. +"; + foreach ($refFK->getLocalColumns() as $colFKName) { + // $colFKName is local to the referring table (i.e. foreign to this table) + $lfmap = $refFK->getLocalForeignMapping(); + $localColumn = $this->getTable()->getColumn($lfmap[$colFKName]); + $colFK = $refFK->getTable()->getColumn($colFKName); + $clo = strtolower($localColumn->getName()); + $script .= " + + \$criteria->add(".$fkPeerBuilder->getColumnConstant($colFK).", \$this->$clo); +"; + } // foreach ($fk->getForeignColumns() + $script .= " + ".$fkPeerBuilder->getPeerClassname()."::addSelectColumns(\$criteria); + if (!isset(\$this->$lastCriteriaName) || !\$this->".$lastCriteriaName."->equals(\$criteria)) { + \$this->$collName = ".$fkPeerBuilder->getPeerClassname()."::doSelect(\$criteria, \$con); + } + } + } + \$this->$lastCriteriaName = \$criteria; + return \$this->$collName; + } +"; + } // addRefererGet() + + /** + * Adds the method that gets a one-to-one related referrer fkey. + * This is for one-to-one relationship special case. + * @param string &$script The script will be modified in this method. + */ + protected function addPKRefFKGet(&$script, ForeignKey $refFK) + { + $table = $this->getTable(); + $tblFK = $refFK->getTable(); + + $joinedTableObjectBuilder = $this->getNewObjectBuilder($refFK->getTable()); + $joinedTablePeerBuilder = $this->getNewObjectBuilder($refFK->getTable()); + $className = $joinedTableObjectBuilder->getObjectClassname(); + + $varName = $this->getPKRefFKVarName($refFK); + + $script .= " + /** + * Gets a single $className object, which is related to this object by a one-to-one relationship. + * + * @param PropelPDO \$con + * @return $className + * @throws PropelException + */ + public function get".$this->getRefFKPhpNameAffix($refFK, $plural = false)."(PropelPDO \$con = null) + { +"; + $script .= " + if (\$this->$varName === null && !\$this->isNew()) {"; + + $lfmap = $refFK->getLocalForeignMapping(); + + // remember: this object represents the foreign table, + // so we need foreign columns of the reffk to know the local columns + // that we need to set :) + + $localcols = $refFK->getForeignColumns(); + + // we know that at least every column in the primary key of the foreign table + // is represented in this foreign key + + $params = array(); + foreach ($tblFK->getPrimaryKey() as $col) { + $localColumn = $table->getColumn($lfmap[$col->getName()]); + $clo = strtolower($localColumn->getName()); + $params[] = "\$this->$clo"; + } + + $script .= " + \$this->$varName = ".$joinedTableObjectBuilder->getPeerClassname()."::retrieveByPK(".implode(", ", $params).", \$con); + } + + return \$this->$varName; + } +"; + } // addPKRefFKGet() + + /** + * Adds the method that sets a one-to-one related referrer fkey. + * This is for one-to-one relationships special case. + * @param string &$script The script will be modified in this method. + * @param ForeignKey $refFK The referencing foreign key. + */ + protected function addPKRefFKSet(&$script, ForeignKey $refFK) + { + $tblFK = $refFK->getTable(); + + $joinedTableObjectBuilder = $this->getNewObjectBuilder($refFK->getTable()); + $className = $joinedTableObjectBuilder->getObjectClassname(); + + $varName = $this->getPKRefFKVarName($refFK); + + $script .= " + /** + * Sets a single $className object as related to this object by a one-to-one relationship. + * + * @param $className \$l $className + * @return ".$this->getObjectClassname()." The current object (for fluent API support) + * @throws PropelException + */ + public function set".$this->getRefFKPhpNameAffix($refFK, $plural = false)."($className \$v) + { + \$this->$varName = \$v; + + // Make sure that that the passed-in $className isn't already associated with this object + if (\$v->get".$this->getFKPhpNameAffix($refFK, $plural = false)."() === null) { + \$v->set".$this->getFKPhpNameAffix($refFK, $plural = false)."(\$this); + } + + return \$this; + } +"; + } // addPKRefFKSet + + // ---------------------------------------------------------------- + // + // M A N I P U L A T I O N M E T H O D S + // + // ---------------------------------------------------------------- + + /** + * Adds the workhourse doSave() method. + * @param string &$script The script will be modified in this method. + */ + protected function addDoSave(&$script) + { + $table = $this->getTable(); + + $reloadOnUpdate = $table->isReloadOnUpdate(); + $reloadOnInsert = $table->isReloadOnInsert(); + + $script .= " + /** + * Performs the work of inserting or updating the row in the database. + * + * If the object is new, it inserts it; otherwise an update is performed. + * All related objects are also updated in this method. + * + * @param PropelPDO \$con"; + if ($reloadOnUpdate || $reloadOnInsert) { + $script .= " + * @param boolean \$skipReload Whether to skip the reload for this object from database."; + } + $script .= " + * @return int The number of rows affected by this insert/update and any referring fk objects' save() operations. + * @throws PropelException + * @see save() + */ + protected function doSave(PropelPDO \$con".($reloadOnUpdate || $reloadOnInsert ? ", \$skipReload = false" : "").") + { + \$affectedRows = 0; // initialize var to track total num of affected rows + if (!\$this->alreadyInSave) { + \$this->alreadyInSave = true; +"; + if ($reloadOnInsert || $reloadOnUpdate) { + $script .= " + \$reloadObject = false; +"; + } + + if (count($table->getForeignKeys())) { + + $script .= " + // We call the save method on the following object(s) if they + // were passed to this object by their coresponding set + // method. This object relates to these object(s) by a + // foreign key reference. +"; + + foreach ($table->getForeignKeys() as $fk) + { + $aVarName = $this->getFKVarName($fk); + $script .= " + if (\$this->$aVarName !== null) { + if (\$this->".$aVarName."->isModified() || \$this->".$aVarName."->isNew()) { + \$affectedRows += \$this->".$aVarName."->save(\$con); + } + \$this->set".$this->getFKPhpNameAffix($fk, $plural = false)."(\$this->$aVarName); + } +"; + } // foreach foreign k + } // if (count(foreign keys)) + + if ($table->hasAutoIncrementPrimaryKey() ) { + $script .= " + if (\$this->isNew() ) { + \$this->modifiedColumns[] = " . $this->getColumnConstant($table->getAutoIncrementPrimaryKey() ) . "; + }"; + } + + $script .= " + + // If this object has been modified, then save it to the database. + if (\$this->isModified()"; + + $script .= ") { + if (\$this->isNew()) { + \$pk = ".$this->getPeerClassname()."::doInsert(\$this, \$con);"; + if ($reloadOnInsert) { + $script .= " + if (!\$skipReload) { + \$reloadObject = true; + }"; + } + $script .= " + \$affectedRows += 1; // we are assuming that there is only 1 row per doInsert() which + // should always be true here (even though technically + // BasePeer::doInsert() can insert multiple rows). +"; + if ($table->getIdMethod() != IDMethod::NO_ID_METHOD) { + + if (count($pks = $table->getPrimaryKey())) { + foreach ($pks as $pk) { + if ($pk->isAutoIncrement()) { + $script .= " + \$this->set".$pk->getPhpName()."(\$pk); //[IMV] update autoincrement primary key +"; + } + } + } + } // if (id method != "none") + + $script .= " + \$this->setNew(false); + } else {"; + if ($reloadOnUpdate) { + $script .= " + if (!\$skipReload) { + \$reloadObject = true; + }"; + } + $script .= " + \$affectedRows += ".$this->getPeerClassname()."::doUpdate(\$this, \$con); + } +"; + + // We need to rewind any LOB columns + foreach ($table->getColumns() as $col) { + $clo = strtolower($col->getName()); + if ($col->isLobType()) { + $script .= " + // Rewind the $clo LOB column, since PDO does not rewind after inserting value. + if (\$this->$clo !== null && is_resource(\$this->$clo)) { + rewind(\$this->$clo); + } +"; + } + } + + $script .= " + \$this->resetModified(); // [HL] After being saved an object is no longer 'modified' + } +"; + + foreach ($table->getReferrers() as $refFK) { + + if ($refFK->isLocalPrimaryKey()) { + $varName = $this->getPKRefFKVarName($refFK); + $script .= " + if (\$this->$varName !== null) { + if (!\$this->{$varName}->isDeleted()) { + \$affectedRows += \$this->{$varName}->save(\$con); + } + } +"; + } else { + $collName = $this->getRefFKCollVarName($refFK); + $script .= " + if (\$this->$collName !== null) { + foreach (\$this->$collName as \$referrerFK) { + if (!\$referrerFK->isDeleted()) { + \$affectedRows += \$referrerFK->save(\$con); + } + } + } +"; + } // if refFK->isLocalPrimaryKey() + + } /* foreach getReferrers() */ + $script .= " + \$this->alreadyInSave = false; +"; + if ($reloadOnInsert || $reloadOnUpdate) { + $script .= " + if (\$reloadObject) { + \$this->reload(\$con); + } +"; + } + $script .= " + } + return \$affectedRows; + } // doSave() +"; + + } + + /** + * Adds the $alreadyInSave attribute, which prevents attempting to re-save the same object. + * @param string &$script The script will be modified in this method. + */ + protected function addAlreadyInSaveAttribute(&$script) + { + $script .= " + /** + * Flag to prevent endless save loop, if this object is referenced + * by another object which falls in this transaction. + * @var boolean + */ + protected \$alreadyInSave = false; +"; + } + + /** + * Adds the save() method. + * @param string &$script The script will be modified in this method. + */ + protected function addSave(&$script) + { + $this->addSaveComment($script); + $this->addSaveOpen($script); + $this->addSaveBody($script); + $this->addSaveClose($script); + } + + /** + * Adds the comment for the save method + * @param string &$script The script will be modified in this method. + * @see addSave() + **/ + protected function addSaveComment(&$script) { + $table = $this->getTable(); + $reloadOnUpdate = $table->isReloadOnUpdate(); + $reloadOnInsert = $table->isReloadOnInsert(); + + $script .= " + /** + * Persists this object to the database. + * + * If the object is new, it inserts it; otherwise an update is performed. + * All modified related objects will also be persisted in the doSave() + * method. This method wraps all precipitate database operations in a + * single transaction."; + if ($reloadOnUpdate) { + $script .= " + * + * Since this table was configured to reload rows on update, the object will + * be reloaded from the database if an UPDATE operation is performed (unless + * the \$skipReload parameter is TRUE)."; + } + if ($reloadOnInsert) { + $script .= " + * + * Since this table was configured to reload rows on insert, the object will + * be reloaded from the database if an INSERT operation is performed (unless + * the \$skipReload parameter is TRUE)."; + } + $script .= " + * + * @param PropelPDO \$con"; + if ($reloadOnUpdate || $reloadOnInsert) { + $script .= " + * @param boolean \$skipReload Whether to skip the reload for this object from database."; + } + $script .= " + * @return int The number of rows affected by this insert/update and any referring fk objects' save() operations. + * @throws PropelException + * @see doSave() + */"; + } + + /** + * Adds the function declaration for the save method + * @param string &$script The script will be modified in this method. + * @see addSave() + **/ + protected function addSaveOpen(&$script) { + $table = $this->getTable(); + $reloadOnUpdate = $table->isReloadOnUpdate(); + $reloadOnInsert = $table->isReloadOnInsert(); + $script .= " + public function save(PropelPDO \$con = null".($reloadOnUpdate || $reloadOnInsert ? ", \$skipReload = false" : "").") + {"; + } + + /** + * Adds the function body for the save method + * @param string &$script The script will be modified in this method. + * @see addSave() + **/ + protected function addSaveBody(&$script) { + $table = $this->getTable(); + $reloadOnUpdate = $table->isReloadOnUpdate(); + $reloadOnInsert = $table->isReloadOnInsert(); + + $script .= " + if (\$this->isDeleted()) { + throw new PropelException(\"You cannot save an object that has been deleted.\"); + } + + if (\$con === null) { + \$con = Propel::getConnection(".$this->getPeerClassname()."::DATABASE_NAME, Propel::CONNECTION_WRITE); + } + + \$con->beginTransaction(); + \$isInsert = \$this->isNew(); + try {"; + + if($this->getGeneratorConfig()->getBuildProperty('addHooks')) { + // save with runtime hools + $script .= " + \$ret = \$this->preSave(\$con);"; + $this->applyBehaviorModifier('preSave', $script, " "); + $script .= " + if (\$isInsert) { + \$ret = \$ret && \$this->preInsert(\$con);"; + $this->applyBehaviorModifier('preInsert', $script, " "); + $script .= " + } else { + \$ret = \$ret && \$this->preUpdate(\$con);"; + $this->applyBehaviorModifier('preUpdate', $script, " "); + $script .= " + } + if (\$ret) { + \$affectedRows = \$this->doSave(\$con".($reloadOnUpdate || $reloadOnInsert ? ", \$skipReload" : "")."); + if (\$isInsert) { + \$this->postInsert(\$con);"; + $this->applyBehaviorModifier('postInsert', $script, " "); + $script .= " + } else { + \$this->postUpdate(\$con);"; + $this->applyBehaviorModifier('postUpdate', $script, " "); + $script .= " + } + \$this->postSave(\$con);"; + $this->applyBehaviorModifier('postSave', $script, " "); + $script .= " + ".$this->getPeerClassname()."::addInstanceToPool(\$this); + } else { + \$affectedRows = 0; + } + \$con->commit(); + return \$affectedRows;"; + } else { + // save without runtime hooks + $this->applyBehaviorModifier('preSave', $script, " "); + if ($this->hasBehaviorModifier('preUpdate')) + { + $script .= " + if(!\$isInsert) {"; + $this->applyBehaviorModifier('preUpdate', $script, " "); + $script .= " + }"; + } + if ($this->hasBehaviorModifier('preInsert')) + { + $script .= " + if(\$isInsert) {"; + $this->applyBehaviorModifier('preInsert', $script, " "); + $script .= " + }"; + } + $script .= " + \$affectedRows = \$this->doSave(\$con".($reloadOnUpdate || $reloadOnInsert ? ", \$skipReload" : "").");"; + $this->applyBehaviorModifier('postSave', $script, " "); + if ($this->hasBehaviorModifier('postUpdate')) + { + $script .= " + if(!\$isInsert) {"; + $this->applyBehaviorModifier('postUpdate', $script, " "); + $script .= " + }"; + } + if ($this->hasBehaviorModifier('postInsert')) + { + $script .= " + if(\$isInsert) {"; + $this->applyBehaviorModifier('postInsert', $script, " "); + $script .= " + }"; + } + $script .= " + \$con->commit(); + ".$this->getPeerClassname()."::addInstanceToPool(\$this); + return \$affectedRows;"; + } + + $script .= " + } catch (PropelException \$e) { + \$con->rollBack(); + throw \$e; + }"; + } + + /** + * Adds the function close for the save method + * @param string &$script The script will be modified in this method. + * @see addSave() + **/ + protected function addSaveClose(&$script) { + $script .= " + } +"; + } + + /** + * Adds the $alreadyInValidation attribute, which prevents attempting to re-validate the same object. + * @param string &$script The script will be modified in this method. + */ + protected function addAlreadyInValidationAttribute(&$script) + { + $script .= " + /** + * Flag to prevent endless validation loop, if this object is referenced + * by another object which falls in this transaction. + * @var boolean + */ + protected \$alreadyInValidation = false; +"; + } + + /** + * Adds the validate() method. + * @param string &$script The script will be modified in this method. + */ + protected function addValidate(&$script) + { + $script .= " + /** + * Validates the objects modified field values and all objects related to this table. + * + * If \$columns is either a column name or an array of column names + * only those columns are validated. + * + * @param mixed \$columns Column name or an array of column names. + * @return boolean Whether all columns pass validation. + * @see doValidate() + * @see getValidationFailures() + */ + public function validate(\$columns = null) + { + \$res = \$this->doValidate(\$columns); + if (\$res === true) { + \$this->validationFailures = array(); + return true; + } else { + \$this->validationFailures = \$res; + return false; + } + } +"; + } // addValidate() + + /** + * Adds the workhourse doValidate() method. + * @param string &$script The script will be modified in this method. + */ + protected function addDoValidate(&$script) + { + $table = $this->getTable(); + + $script .= " + /** + * This function performs the validation work for complex object models. + * + * In addition to checking the current object, all related objects will + * also be validated. If all pass then true is returned; otherwise + * an aggreagated array of ValidationFailed objects will be returned. + * + * @param array \$columns Array of column names to validate. + * @return mixed true if all validations pass; array of ValidationFailed objets otherwise. + */ + protected function doValidate(\$columns = null) + { + if (!\$this->alreadyInValidation) { + \$this->alreadyInValidation = true; + \$retval = null; + + \$failureMap = array(); +"; + if (count($table->getForeignKeys()) != 0) { + $script .= " + + // We call the validate method on the following object(s) if they + // were passed to this object by their coresponding set + // method. This object relates to these object(s) by a + // foreign key reference. +"; + foreach ($table->getForeignKeys() as $fk) { + $aVarName = $this->getFKVarName($fk); + $script .= " + if (\$this->".$aVarName." !== null) { + if (!\$this->".$aVarName."->validate(\$columns)) { + \$failureMap = array_merge(\$failureMap, \$this->".$aVarName."->getValidationFailures()); + } + } +"; + } /* for () */ + } /* if count(fkeys) */ + + $script .= " + + if ((\$retval = ".$this->getPeerClassname()."::doValidate(\$this, \$columns)) !== true) { + \$failureMap = array_merge(\$failureMap, \$retval); + } + +"; + + foreach ($table->getReferrers() as $refFK) { + if ($refFK->isLocalPrimaryKey()) { + $varName = $this->getPKRefFKVarName($refFK); + $script .= " + if (\$this->$varName !== null) { + if (!\$this->".$varName."->validate(\$columns)) { + \$failureMap = array_merge(\$failureMap, \$this->".$varName."->getValidationFailures()); + } + } +"; + } else { + $collName = $this->getRefFKCollVarName($refFK); + $script .= " + if (\$this->$collName !== null) { + foreach (\$this->$collName as \$referrerFK) { + if (!\$referrerFK->validate(\$columns)) { + \$failureMap = array_merge(\$failureMap, \$referrerFK->getValidationFailures()); + } + } + } +"; + } + } /* foreach getReferrers() */ + + $script .= " + + \$this->alreadyInValidation = false; + } + + return (!empty(\$failureMap) ? \$failureMap : true); + } +"; + } // addDoValidate() + + /** + * Adds the ensureConsistency() method to ensure that internal state is correct. + * @param string &$script The script will be modified in this method. + */ + protected function addEnsureConsistency(&$script) + { + $table = $this->getTable(); + + $script .= " + /** + * Checks and repairs the internal consistency of the object. + * + * This method is executed after an already-instantiated object is re-hydrated + * from the database. It exists to check any foreign keys to make sure that + * the objects related to the current object are correct based on foreign key. + * + * You can override this method in the stub class, but you should always invoke + * the base method from the overridden method (i.e. parent::ensureConsistency()), + * in case your model changes. + * + * @throws PropelException + */ + public function ensureConsistency() + { +"; + foreach ($table->getColumns() as $col) { + + $clo=strtolower($col->getName()); + + if ($col->isForeignKey()) { + foreach ($col->getForeignKeys() as $fk) { + + $tblFK = $table->getDatabase()->getTable($fk->getForeignTableName()); + $colFK = $tblFK->getColumn($fk->getMappedForeignColumn($col->getName())); + $varName = $this->getFKVarName($fk); + + $script .= " + if (\$this->".$varName." !== null && \$this->$clo !== \$this->".$varName."->get".$colFK->getPhpName()."()) { + \$this->$varName = null; + }"; + } // foraech + } /* if col is foreign key */ + + } // foreach + + $script .= " + } // ensureConsistency +"; + } // addCheckRelConsistency + + /** + * Adds the copy() method, which (in complex OM) includes the $deepCopy param for making copies of related objects. + * @param string &$script The script will be modified in this method. + */ + protected function addCopy(&$script) + { + $this->addCopyInto($script); + + $table = $this->getTable(); + + $script .= " + /** + * Makes a copy of this object that will be inserted as a new row in table when saved. + * It creates a new object filling in the simple attributes, but skipping any primary + * keys that are defined for the table. + * + * If desired, this method can also make copies of all associated (fkey referrers) + * objects. + * + * @param boolean \$deepCopy Whether to also copy all rows that refer (by fkey) to the current row. + * @return ".$this->getObjectClassname()." Clone of current object. + * @throws PropelException + */ + public function copy(\$deepCopy = false) + { + // we use get_class(), because this might be a subclass + \$clazz = get_class(\$this); + " . $this->buildObjectInstanceCreationCode('$copyObj', '$clazz') . " + \$this->copyInto(\$copyObj, \$deepCopy); + return \$copyObj; + } +"; + } // addCopy() + + /** + * Adds the copyInto() method, which takes an object and sets contents to match current object. + * In complex OM this method includes the $deepCopy param for making copies of related objects. + * @param string &$script The script will be modified in this method. + */ + protected function addCopyInto(&$script) + { + $table = $this->getTable(); + + $script .= " + /** + * Sets contents of passed object to values from current object. + * + * If desired, this method can also make copies of all associated (fkey referrers) + * objects. + * + * @param object \$copyObj An object of ".$this->getObjectClassname()." (or compatible) type. + * @param boolean \$deepCopy Whether to also copy all rows that refer (by fkey) to the current row. + * @throws PropelException + */ + public function copyInto(\$copyObj, \$deepCopy = false) + { +"; + + $autoIncCols = array(); + foreach ($table->getColumns() as $col) { + /* @var $col Column */ + if ($col->isAutoIncrement()) { + $autoIncCols[] = $col; + } + } + + foreach ($table->getColumns() as $col) { + if (!in_array($col, $autoIncCols, true)) { + $script .= " + \$copyObj->set".$col->getPhpName()."(\$this->".strtolower($col->getName())."); +"; + } + } // foreach + + // Avoid useless code by checking to see if there are any referrers + // to this table: + if (count($table->getReferrers()) > 0) { + $script .= " + + if (\$deepCopy) { + // important: temporarily setNew(false) because this affects the behavior of + // the getter/setter methods for fkey referrer objects. + \$copyObj->setNew(false); +"; + foreach ($table->getReferrers() as $fk) { + //HL: commenting out self-referrential check below + // it seems to work as expected and is probably desireable to have those referrers from same table deep-copied. + //if ( $fk->getTable()->getName() != $table->getName() ) { + + if ($fk->isLocalPrimaryKey()) { + + $afx = $this->getRefFKPhpNameAffix($fk, $plural = false); + $script .= " + \$relObj = \$this->get$afx(); + if (\$relObj) { + \$copyObj->set$afx(\$relObj->copy(\$deepCopy)); + } +"; + } else { + + $script .= " + foreach (\$this->get".$this->getRefFKPhpNameAffix($fk, true)."() as \$relObj) { + if (\$relObj !== \$this) { // ensure that we don't try to copy a reference to ourselves + \$copyObj->add".$this->getRefFKPhpNameAffix($fk)."(\$relObj->copy(\$deepCopy)); + } + } +"; + } + // HL: commenting out close of self-referential check + // } /* if tblFK != table */ + } /* foreach */ + $script .= " + } // if (\$deepCopy) +"; + } /* if (count referrers > 0 ) */ + + $script .= " + + \$copyObj->setNew(true); +"; + + // Note: we're no longer resetting non-autoincrement primary keys to default values + // due to: http://propel.phpdb.org/trac/ticket/618 + foreach ($autoIncCols as $col) { + $coldefval = $col->getPhpDefaultValue(); + $coldefval = var_export($coldefval, true); + $script .= " + \$copyObj->set".$col->getPhpName() ."($coldefval); // this is a auto-increment column, so set to default value +"; + } // foreach + $script .= " + } +"; + } // addCopyInto() + + + /** + * Adds clearAllReferencers() method which resets all the collections of referencing + * fk objects. + * @param string &$script The script will be modified in this method. + */ + protected function addClearAllReferences(&$script) + { + $table = $this->getTable(); + $script .= " + /** + * Resets all collections of referencing foreign keys. + * + * This method is a user-space workaround for PHP's inability to garbage collect objects + * with circular references. This is currently necessary when using Propel in certain + * daemon or large-volumne/high-memory operations. + * + * @param boolean \$deep Whether to also clear the references on all associated objects. + */ + public function clearAllReferences(\$deep = false) + { + if (\$deep) {"; + $vars = array(); + foreach ($this->getTable()->getReferrers() as $refFK) { + if ($refFK->isLocalPrimaryKey()) { + $varName = $this->getPKRefFKVarName($refFK); + $vars[] = $varName; + $script .= " + if (\$this->$varName) { + \$this->{$varName}->clearAllReferences(\$deep); + }"; + } else { + $varName = $this->getRefFKCollVarName($refFK); + $vars[] = $varName; + $script .= " + if (\$this->$varName) { + foreach ((array) \$this->$varName as \$o) { + \$o->clearAllReferences(\$deep); + } + }"; + } + } + + $script .= " + } // if (\$deep) +"; + + foreach ($vars as $varName) { + $script .= " + \$this->$varName = null;"; + } + + foreach ($table->getForeignKeys() as $fk) { + $className = $this->getForeignTable($fk)->getPhpName(); + $varName = $this->getFKVarName($fk); + $script .= " + \$this->$varName = null;"; + } + + $script .= " + } +"; + } + + /** + * Adds a magic __toString() method if a string column was defined as primary string + * @param string &$script The script will be modified in this method. + */ + protected function addPrimaryString(&$script) + { + foreach ($this->getTable()->getColumns() as $column) { + if ($column->isPrimaryString()) { + $script .= " + /** + * Return the string representation of this object + * + * @return string The value of the '{$column->getName()}' column + */ + public function __toString() + { + return (string) \$this->get{$column->getPhpName()}(); + } +"; + break; + } + } + } +} // PHP5ObjectBuilder diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5PeerBuilder.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5PeerBuilder.php new file mode 100644 index 0000000..fa29313 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5PeerBuilder.php @@ -0,0 +1,2645 @@ +. + */ + +require_once 'propel/engine/builder/om/PeerBuilder.php'; + +/** + * Generates a PHP5 base Peer class for user object model (OM). + * + * This class produces the base peer class (e.g. BaseMyPeer) which contains all + * the custom-built query and manipulator methods. + * + * @author Hans Lellelid + * @package propel.engine.builder.om.php5 + */ +class PHP5PeerBuilder extends PeerBuilder { + + /** + * Validates the current table to make sure that it won't + * result in generated code that will not parse. + * + * This method may emit warnings for code which may cause problems + * and will throw exceptions for errors that will definitely cause + * problems. + */ + protected function validateModel() + { + parent::validateModel(); + + $table = $this->getTable(); + + // Check to see if any of the column constants are PHP reserved words. + $colConstants = array(); + + foreach ($table->getColumns() as $col) { + $colConstants[] = $this->getColumnName($col); + } + + $reservedConstants = array_map('strtoupper', ClassTools::getPhpReservedWords()); + + $intersect = array_intersect($reservedConstants, $colConstants); + if (!empty($intersect)) { + throw new EngineException("One or more of your column names for [" . $table->getName() . "] table conflict with a PHP reserved word (" . implode(", ", $intersect) . ")"); + } + } + + /** + * Returns the name of the current class being built. + * @return string + */ + public function getUnprefixedClassname() + { + return $this->getBuildProperty('basePrefix') . $this->getStubPeerBuilder()->getUnprefixedClassname(); + } + + /** + * Gets the package for the [base] peer classes. + * @return string + */ + public function getPackage() + { + return parent::getPackage() . ".om"; + } + + /** + * Adds the include() statements for files that this class depends on or utilizes. + * @param string &$script The script will be modified in this method. + */ + protected function addIncludes(&$script) + { + } // addIncludes() + + /** + * Adds class phpdoc comment and openning of class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassOpen(&$script) { + + $tableName = $this->getTable()->getName(); + $tableDesc = $this->getTable()->getDescription(); + + $script .= " +/** + * Base static class for performing query and update operations on the '$tableName' table. + * + * $tableDesc + *"; + if ($this->getBuildProperty('addTimeStamp')) { + $now = strftime('%c'); + $script .= " + * This class was autogenerated by Propel " . $this->getBuildProperty('version') . " on: + * + * $now + *"; + } + + $extendingPeerClass = ''; + if ($this->basePeerClassname !== 'BasePeer') { + $extendingPeerClass = ' extends ' . $this->basePeerClassname; + } + + $script .= " + * @package ".$this->getPackage()." + */ +abstract class ".$this->getClassname(). $extendingPeerClass . " { +"; + } + + /** + * Closes class. + * Adds closing brace at end of class and the static map builder registration code. + * @param string &$script The script will be modified in this method. + * @see addStaticTableMapRegistration() + */ + protected function addClassClose(&$script) + { + // apply behaviors + $this->applyBehaviorModifier('staticMethods', $script, " "); + + $script .= " +} // " . $this->getClassname() . " +"; + $this->addStaticTableMapRegistration($script); + } + + /** + * Adds the static map builder registration code. + * @param string &$script The script will be modified in this method. + */ + protected function addStaticTableMapRegistration(&$script) + { + $table = $this->getTable(); + + $script .= " +// This is the static code needed to register the TableMap for this table with the main Propel class. +// +".$this->getClassName()."::buildTableMap(); + +"; + $this->applyBehaviorModifier('peerFilter', $script, ""); + } + + public function getTableMapClass() + { + return $this->getTablePhpName() . 'TableMap'; + } + + public function getTablePhpName() + { + return ($this->getTable()->isAbstract() ? '' : $this->getStubObjectBuilder()->getClassname()); + } + + /** + * Adds constant and variable declarations that go at the top of the class. + * @param string &$script The script will be modified in this method. + * @see addColumnNameConstants() + */ + protected function addConstantsAndAttributes(&$script) + { + $dbName = $this->getDatabase()->getName(); + $tableName = $this->prefixTableName($this->getTable()->getName()); + $tablePhpName = $this->getTablePhpName(); + $script .= " + /** the default database name for this class */ + const DATABASE_NAME = '$dbName'; + + /** the table name for this class */ + const TABLE_NAME = '$tableName'; + + /** the related Propel class for this table */ + const OM_CLASS = '$tablePhpName'; + + /** A class that can be returned by this peer. */ + const CLASS_DEFAULT = '".$this->getStubObjectBuilder()->getClasspath()."'; + + /** the related TableMap class for this table */ + const TM_CLASS = '".$this->getTableMapClass()."'; + + /** The total number of columns. */ + const NUM_COLUMNS = ".$this->getTable()->getNumColumns()."; + + /** The number of lazy-loaded columns. */ + const NUM_LAZY_LOAD_COLUMNS = ".$this->getTable()->getNumLazyLoadColumns()."; +"; + $this->addColumnNameConstants($script); + $this->addInheritanceColumnConstants($script); + + $script .= " + /** + * An identiy map to hold any loaded instances of ".$this->getObjectClassname()." objects. + * This must be public so that other peer classes can access this when hydrating from JOIN + * queries. + * @var array ".$this->getObjectClassname()."[] + */ + public static \$instances = array(); + +"; + + // apply behaviors + $this->applyBehaviorModifier('staticAttributes', $script, " "); + + $this->addFieldNamesAttribute($script); + $this->addFieldKeysAttribute($script); + } + + /** + * Adds the COLUMN_NAME contants to the class definition. + * @param string &$script The script will be modified in this method. + */ + protected function addColumnNameConstants(&$script) + { + foreach ($this->getTable()->getColumns() as $col) { + $script .= " + /** the column name for the ".strtoupper($col->getName()) ." field */ + const ".$this->getColumnName($col) ." = '".$this->prefixTablename($this->getTable()->getName()).".".strtoupper($col->getName())."'; +"; + } // foreach + } + + protected function addFieldNamesAttribute(&$script) + { + $table = $this->getTable(); + + $tableColumns = $table->getColumns(); + + $script .= " + /** + * holds an array of fieldnames + * + * first dimension keys are the type constants + * e.g. self::\$fieldNames[self::TYPE_PHPNAME][0] = 'Id' + */ + private static \$fieldNames = array ( + BasePeer::TYPE_PHPNAME => array ("; + foreach ($tableColumns as $col) { + $script .= "'".$col->getPhpName()."', "; + } + $script .= "), + BasePeer::TYPE_STUDLYPHPNAME => array ("; + foreach ($tableColumns as $col) { + $script .= "'".$col->getStudlyPhpName()."', "; + } + $script .= "), + BasePeer::TYPE_COLNAME => array ("; + foreach ($tableColumns as $col) { + $script .= $this->getColumnConstant($col, 'self').", "; + } + $script .= "), + BasePeer::TYPE_FIELDNAME => array ("; + foreach ($tableColumns as $col) { + $script .= "'".$col->getName()."', "; + } + $script .= "), + BasePeer::TYPE_NUM => array ("; + foreach ($tableColumns as $num => $col) { + $script .= "$num, "; + } + $script .= ") + ); +"; + } + + protected function addFieldKeysAttribute(&$script) + { + $table = $this->getTable(); + + $tableColumns = $table->getColumns(); + + $script .= " + /** + * holds an array of keys for quick access to the fieldnames array + * + * first dimension keys are the type constants + * e.g. self::\$fieldNames[BasePeer::TYPE_PHPNAME]['Id'] = 0 + */ + private static \$fieldKeys = array ( + BasePeer::TYPE_PHPNAME => array ("; + foreach ($tableColumns as $num => $col) { + $script .= "'".$col->getPhpName()."' => $num, "; + } + $script .= "), + BasePeer::TYPE_STUDLYPHPNAME => array ("; + foreach ($tableColumns as $num => $col) { + $script .= "'".$col->getStudlyPhpName()."' => $num, "; + } + $script .= "), + BasePeer::TYPE_COLNAME => array ("; + foreach ($tableColumns as $num => $col) { + $script .= $this->getColumnConstant($col, 'self')." => $num, "; + } + $script .= "), + BasePeer::TYPE_FIELDNAME => array ("; + foreach ($tableColumns as $num => $col) { + $script .= "'".$col->getName()."' => $num, "; + } + $script .= "), + BasePeer::TYPE_NUM => array ("; + foreach ($tableColumns as $num => $col) { + $script .= "$num, "; + } + $script .= ") + ); +"; + } // addFielKeysAttribute + + + protected function addGetFieldNames(&$script) + { + $script .= " + /** + * Returns an array of field names. + * + * @param string \$type The type of fieldnames to return: + * One of the class type constants BasePeer::TYPE_PHPNAME, BasePeer::TYPE_STUDLYPHPNAME + * BasePeer::TYPE_COLNAME, BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_NUM + * @return array A list of field names + */ + + static public function getFieldNames(\$type = BasePeer::TYPE_PHPNAME) + { + if (!array_key_exists(\$type, self::\$fieldNames)) { + throw new PropelException('Method getFieldNames() expects the parameter \$type to be one of the class constants BasePeer::TYPE_PHPNAME, BasePeer::TYPE_STUDLYPHPNAME, BasePeer::TYPE_COLNAME, BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_NUM. ' . \$type . ' was given.'); + } + return self::\$fieldNames[\$type]; + } +"; + + } // addGetFieldNames() + + protected function addTranslateFieldName(&$script) + { + $script .= " + /** + * Translates a fieldname to another type + * + * @param string \$name field name + * @param string \$fromType One of the class type constants BasePeer::TYPE_PHPNAME, BasePeer::TYPE_STUDLYPHPNAME + * BasePeer::TYPE_COLNAME, BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_NUM + * @param string \$toType One of the class type constants + * @return string translated name of the field. + * @throws PropelException - if the specified name could not be found in the fieldname mappings. + */ + static public function translateFieldName(\$name, \$fromType, \$toType) + { + \$toNames = self::getFieldNames(\$toType); + \$key = isset(self::\$fieldKeys[\$fromType][\$name]) ? self::\$fieldKeys[\$fromType][\$name] : null; + if (\$key === null) { + throw new PropelException(\"'\$name' could not be found in the field names of type '\$fromType'. These are: \" . print_r(self::\$fieldKeys[\$fromType], true)); + } + return \$toNames[\$key]; + } +"; + } // addTranslateFieldName() + + /** + * Adds the buildTableMap() method. + * @param string &$script The script will be modified in this method. + */ + protected function addBuildTableMap(&$script) + { + $script .= " + /** + * Add a TableMap instance to the database for this peer class. + */ + public static function buildTableMap() + { + \$dbMap = Propel::getDatabaseMap(".$this->getClassname()."::DATABASE_NAME); + if (!\$dbMap->hasTable(".$this->getClassname()."::TABLE_NAME)) + { + \$dbMap->addTableObject(new ".$this->getTableMapClass()."()); + } + } +"; + } + + /** + * Adds the CLASSKEY_* and CLASSNAME_* constants used for inheritance. + * @param string &$script The script will be modified in this method. + */ + public function addInheritanceColumnConstants(&$script) + { + if ($this->getTable()->getChildrenColumn()) { + + $col = $this->getTable()->getChildrenColumn(); + $cfc = $col->getPhpName(); + + if ($col->isEnumeratedClasses()) { + + if ($col->isPhpPrimitiveNumericType()) $quote = ""; + else $quote = '"'; + + foreach ($col->getChildren() as $child) { + $childBuilder = $this->getMultiExtendObjectBuilder(); + $childBuilder->setChild($child); + + $script .= " + /** A key representing a particular subclass */ + const CLASSKEY_".strtoupper($child->getKey())." = '" . $child->getKey() . "'; +"; + + if (strtoupper($child->getClassname()) != strtoupper($child->getKey())) { + $script .= " + /** A key representing a particular subclass */ + const CLASSKEY_".strtoupper($child->getClassname())." = '" . $child->getKey() . "'; +"; + } + + $script .= " + /** A class that can be returned by this peer. */ + const CLASSNAME_".strtoupper($child->getKey())." = '". $childBuilder->getClasspath() . "'; +"; + } /* foreach children */ + } /* if col->isenumerated...() */ + } /* if table->getchildrencolumn() */ + + } // + + /** + * Adds the alias() utility method. + * @param string &$script The script will be modified in this method. + */ + protected function addAlias(&$script) + { + $script .= " + /** + * Convenience method which changes table.column to alias.column. + * + * Using this method you can maintain SQL abstraction while using column aliases. + * + * \$c->addAlias(\"alias1\", TablePeer::TABLE_NAME); + * \$c->addJoin(TablePeer::alias(\"alias1\", TablePeer::PRIMARY_KEY_COLUMN), TablePeer::PRIMARY_KEY_COLUMN); + * + * @param string \$alias The alias for the current table. + * @param string \$column The column name for current table. (i.e. ".$this->getPeerClassname()."::COLUMN_NAME). + * @return string + */ + public static function alias(\$alias, \$column) + { + return str_replace(".$this->getPeerClassname()."::TABLE_NAME.'.', \$alias.'.', \$column); + } +"; + } // addAliasMethod + + /** + * Adds the addSelectColumns() method. + * @param string &$script The script will be modified in this method. + */ + protected function addAddSelectColumns(&$script) + { + $script .= " + /** + * Add all the columns needed to create a new object. + * + * Note: any columns that were marked with lazyLoad=\"true\" in the + * XML schema will not be added to the select list and only loaded + * on demand. + * + * @param criteria object containing the columns to add. + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function addSelectColumns(Criteria \$criteria) + {"; + foreach ($this->getTable()->getColumns() as $col) { + if (!$col->isLazyLoad()) { + $script .= " + \$criteria->addSelectColumn(".$this->getPeerClassname()."::".$this->getColumnName($col).");"; + } // if !col->isLazyLoad + } // foreach + $script .=" + } +"; + } // addAddSelectColumns() + + /** + * Adds the doCount() method. + * @param string &$script The script will be modified in this method. + */ + protected function addDoCount(&$script) + { + $script .= " + /** + * Returns the number of rows matching criteria. + * + * @param Criteria \$criteria + * @param boolean \$distinct Whether to select only distinct columns; deprecated: use Criteria->setDistinct() instead. + * @param PropelPDO \$con + * @return int Number of matching rows. + */ + public static function doCount(Criteria \$criteria, \$distinct = false, PropelPDO \$con = null) + { + // we may modify criteria, so copy it first + \$criteria = clone \$criteria; + + // We need to set the primary table name, since in the case that there are no WHERE columns + // it will be impossible for the BasePeer::createSelectSql() method to determine which + // tables go into the FROM clause. + \$criteria->setPrimaryTableName(".$this->getPeerClassname()."::TABLE_NAME); + + if (\$distinct && !in_array(Criteria::DISTINCT, \$criteria->getSelectModifiers())) { + \$criteria->setDistinct(); + } + + if (!\$criteria->hasSelectClause()) { + ".$this->getPeerClassname()."::addSelectColumns(\$criteria); + } + + \$criteria->clearOrderByColumns(); // ORDER BY won't ever affect the count + \$criteria->setDbName(self::DATABASE_NAME); // Set the correct dbName + + if (\$con === null) { + \$con = Propel::getConnection(".$this->getPeerClassname()."::DATABASE_NAME, Propel::CONNECTION_READ); + }"; + + // apply behaviors + $this->applyBehaviorModifier('preSelect', $script); + + $script .= " + // BasePeer returns a PDOStatement + \$stmt = ".$this->basePeerClassname."::doCount(\$criteria, \$con); + + if (\$row = \$stmt->fetch(PDO::FETCH_NUM)) { + \$count = (int) \$row[0]; + } else { + \$count = 0; // no rows returned; we infer that means 0 matches. + } + \$stmt->closeCursor(); + return \$count; + }"; + } + + /** + * Adds the doSelectOne() method. + * @param string &$script The script will be modified in this method. + */ + protected function addDoSelectOne(&$script) + { + $script .= " + /** + * Method to select one object from the DB. + * + * @param Criteria \$criteria object used to create the SELECT statement. + * @param PropelPDO \$con + * @return ".$this->getObjectClassname()." + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function doSelectOne(Criteria \$criteria, PropelPDO \$con = null) + { + \$critcopy = clone \$criteria; + \$critcopy->setLimit(1); + \$objects = ".$this->getPeerClassname()."::doSelect(\$critcopy, \$con); + if (\$objects) { + return \$objects[0]; + } + return null; + }"; + } + + /** + * Adds the doSelect() method. + * @param string &$script The script will be modified in this method. + */ + protected function addDoSelect(&$script) + { + $script .= " + /** + * Method to do selects. + * + * @param Criteria \$criteria The Criteria object used to build the SELECT statement. + * @param PropelPDO \$con + * @return array Array of selected Objects + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function doSelect(Criteria \$criteria, PropelPDO \$con = null) + { + return ".$this->getPeerClassname()."::populateObjects(".$this->getPeerClassname()."::doSelectStmt(\$criteria, \$con)); + }"; + } + + /** + * Adds the doSelectStmt() method. + * @param string &$script The script will be modified in this method. + */ + protected function addDoSelectStmt(&$script) + { + + $script .= " + /** + * Prepares the Criteria object and uses the parent doSelect() method to execute a PDOStatement. + * + * Use this method directly if you want to work with an executed statement durirectly (for example + * to perform your own object hydration). + * + * @param Criteria \$criteria The Criteria object used to build the SELECT statement. + * @param PropelPDO \$con The connection to use + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + * @return PDOStatement The executed PDOStatement object. + * @see ".$this->basePeerClassname."::doSelect() + */ + public static function doSelectStmt(Criteria \$criteria, PropelPDO \$con = null) + { + if (\$con === null) { + \$con = Propel::getConnection(".$this->getPeerClassname()."::DATABASE_NAME, Propel::CONNECTION_READ); + } + + if (!\$criteria->hasSelectClause()) { + \$criteria = clone \$criteria; + ".$this->getPeerClassname()."::addSelectColumns(\$criteria); + } + + // Set the correct dbName + \$criteria->setDbName(self::DATABASE_NAME);"; + // apply behaviors + if ($this->hasBehaviorModifier('preSelect')) + { + $this->applyBehaviorModifier('preSelect', $script); + } + $script .= " + + // BasePeer returns a PDOStatement + return ".$this->basePeerClassname."::doSelect(\$criteria, \$con); + }"; + } + + /** + * Adds the PHP code to return a instance pool key for the passed-in primary key variable names. + * + * @param array $pkphp An array of PHP var names / method calls representing complete pk. + */ + protected function getInstancePoolKeySnippet($pkphp) + { + $pkphp = (array) $pkphp; // make it an array if it is not. + $script = ""; + if (count($pkphp) > 1) { + $script .= "serialize(array("; + $i = 0; + foreach ($pkphp as $pkvar) { + $script .= ($i++ ? ', ' : '') . "(string) $pkvar"; + } + $script .= "))"; + } else { + $script .= "(string) " . $pkphp[0]; + } + return $script; + } + + /** + * Creates a convenience method to add objects to an instance pool. + * @param string &$script The script will be modified in this method. + */ + protected function addAddInstanceToPool(&$script) + { + $table = $this->getTable(); + $script .= " + /** + * Adds an object to the instance pool. + * + * Propel keeps cached copies of objects in an instance pool when they are retrieved + * from the database. In some cases -- especially when you override doSelect*() + * methods in your stub classes -- you may need to explicitly add objects + * to the cache in order to ensure that the same objects are always returned by doSelect*() + * and retrieveByPK*() calls. + * + * @param ".$this->getObjectClassname()." \$value A ".$this->getObjectClassname()." object. + * @param string \$key (optional) key to use for instance map (for performance boost if key was already calculated externally). + */ + public static function addInstanceToPool(".$this->getObjectClassname()." \$obj, \$key = null) + { + if (Propel::isInstancePoolingEnabled()) { + if (\$key === null) {"; + + $pks = $this->getTable()->getPrimaryKey(); + + $php = array(); + foreach ($pks as $pk) { + $php[] = '$obj->get' . $pk->getPhpName() . '()'; + } + $script .= " + \$key = ".$this->getInstancePoolKeySnippet($php).";"; + $script .= " + } // if key === null + self::\$instances[\$key] = \$obj; + } + } +"; + } // addAddInstanceToPool() + + /** + * Creates a convenience method to remove objects form an instance pool. + * @param string &$script The script will be modified in this method. + */ + protected function addRemoveInstanceFromPool(&$script) + { + $table = $this->getTable(); + $script .= " + /** + * Removes an object from the instance pool. + * + * Propel keeps cached copies of objects in an instance pool when they are retrieved + * from the database. In some cases -- especially when you override doDelete + * methods in your stub classes -- you may need to explicitly remove objects + * from the cache in order to prevent returning objects that no longer exist. + * + * @param mixed \$value A ".$this->getObjectClassname()." object or a primary key value. + */ + public static function removeInstanceFromPool(\$value) + {"; + $script .= " + if (Propel::isInstancePoolingEnabled() && \$value !== null) {"; + $pks = $table->getPrimaryKey(); + + $script .= " + if (is_object(\$value) && \$value instanceof ".$this->getObjectClassname().") {"; + + $php = array(); + foreach ($pks as $pk) { + $php[] = '$value->get' . $pk->getPhpName() . '()'; + } + $script .= " + \$key = ".$this->getInstancePoolKeySnippet($php).";"; + + $script .= " + } elseif (".(count($pks) > 1 ? "is_array(\$value) && count(\$value) === " . count($pks) : "is_scalar(\$value)").") { + // assume we've been passed a primary key"; + + if (count($pks) > 1) { + $php = array(); + for ($i=0; $i < count($pks); $i++) { + $php[] = "\$value[$i]"; + } + } else { + $php = '$value'; + } + $script .= " + \$key = ".$this->getInstancePoolKeySnippet($php).";"; + $script .= " + } else { + \$e = new PropelException(\"Invalid value passed to removeInstanceFromPool(). Expected primary key or ".$this->getObjectClassname()." object; got \" . (is_object(\$value) ? get_class(\$value) . ' object.' : var_export(\$value,true))); + throw \$e; + } + + unset(self::\$instances[\$key]); + } + } // removeInstanceFromPool() +"; + } // addRemoveFromInstancePool() + + /** + * Adds method to clear the instance pool. + * @param string &$script The script will be modified in this method. + */ + protected function addClearInstancePool(&$script) + { + $script .= " + /** + * Clear the instance pool. + * + * @return void + */ + public static function clearInstancePool() + { + self::\$instances = array(); + } + "; + } + + /** + * Adds method to clear the instance pool of related tables. + * @param string &$script The script will be modified in this method. + */ + protected function addClearRelatedInstancePool(&$script) + { + $table = $this->getTable(); + $script .= " + /** + * Method to invalidate the instance pool of all tables related to " . $table->getName() . " + * by a foreign key with ON DELETE CASCADE + */ + public static function clearRelatedInstancePool() + {"; + // Handle ON DELETE CASCADE for updating instance pool + + foreach ($table->getReferrers() as $fk) { + + // $fk is the foreign key in the other table, so localTableName will + // actually be the table name of other table + $tblFK = $fk->getTable(); + + $joinedTablePeerBuilder = $this->getNewPeerBuilder($tblFK); + $tblFKPackage = $joinedTablePeerBuilder->getStubPeerBuilder()->getPackage(); + + if (!$tblFK->isForReferenceOnly()) { + // we can't perform operations on tables that are + // not within the schema (i.e. that we have no map for, etc.) + + $fkClassName = $joinedTablePeerBuilder->getObjectClassname(); + + // i'm not sure whether we can allow delete cascade for foreign keys + // within the same table? perhaps we can? + if ( ($fk->getOnDelete() == ForeignKey::CASCADE || $fk->getOnDelete() == ForeignKey::SETNULL ) + && $tblFK->getName() != $table->getName()) { + $script .= " + // invalidate objects in ".$joinedTablePeerBuilder->getPeerClassname()." instance pool, since one or more of them may be deleted by ON DELETE CASCADE rule. + ".$joinedTablePeerBuilder->getPeerClassname()."::clearInstancePool(); +"; + } // if fk is on delete cascade + } // if (! for ref only) + } // foreach + $script .= " + } +"; + } + + /** + * Adds method to get an the instance from the pool, given a key. + * @param string &$script The script will be modified in this method. + */ + protected function addGetInstanceFromPool(&$script) + { + $script .= " + /** + * Retrieves a string version of the primary key from the DB resultset row that can be used to uniquely identify a row in this table. + * + * For tables with a single-column primary key, that simple pkey value will be returned. For tables with + * a multi-column primary key, a serialize()d version of the primary key will be returned. + * + * @param string \$key The key (@see getPrimaryKeyHash()) for this instance. + * @return ".$this->getObjectClassname()." Found object or NULL if 1) no instance exists for specified key or 2) instance pooling has been disabled. + * @see getPrimaryKeyHash() + */ + public static function getInstanceFromPool(\$key) + { + if (Propel::isInstancePoolingEnabled()) { + if (isset(self::\$instances[\$key])) { + return self::\$instances[\$key]; + } + } + return null; // just to be explicit + } + "; + } + + /** + * Adds method to get a version of the primary key that can be used as a unique key for identifier map. + * @param string &$script The script will be modified in this method. + */ + protected function addGetPrimaryKeyHash(&$script) + { + $script .= " + /** + * Retrieves a string version of the primary key from the DB resultset row that can be used to uniquely identify a row in this table. + * + * For tables with a single-column primary key, that simple pkey value will be returned. For tables with + * a multi-column primary key, a serialize()d version of the primary key will be returned. + * + * @param array \$row PropelPDO resultset row. + * @param int \$startcol The 0-based offset for reading from the resultset row. + * @return string A string version of PK or NULL if the components of primary key in result array are all null. + */ + public static function getPrimaryKeyHashFromRow(\$row, \$startcol = 0) + {"; + + // We have to iterate through all the columns so that we know the offset of the primary + // key columns. + $n = 0; + $pk = array(); + $cond = array(); + foreach ($this->getTable()->getColumns() as $col) { + if (!$col->isLazyLoad()) { + if ($col->isPrimaryKey()) { + $part = $n ? "\$row[\$startcol + $n]" : "\$row[\$startcol]"; + $cond[] = $part . " === null"; + $pk[] = $part; + } + $n++; + } + } + + $script .= " + // If the PK cannot be derived from the row, return NULL. + if (".implode(' && ', $cond).") { + return null; + } + return ".$this->getInstancePoolKeySnippet($pk)."; + } +"; + } // addGetPrimaryKeyHash + + /** + * Adds the populateObjects() method. + * @param string &$script The script will be modified in this method. + */ + protected function addPopulateObjects(&$script) + { + $table = $this->getTable(); + $script .= " + /** + * The returned array will contain objects of the default type or + * objects that inherit from the default. + * + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function populateObjects(PDOStatement \$stmt) + { + \$results = array(); + "; + if (!$table->getChildrenColumn()) { + $script .= " + // set the class once to avoid overhead in the loop + \$cls = ".$this->getPeerClassname()."::getOMClass(false);"; + } + + $script .= " + // populate the object(s) + while (\$row = \$stmt->fetch(PDO::FETCH_NUM)) { + \$key = ".$this->getPeerClassname()."::getPrimaryKeyHashFromRow(\$row, 0); + if (null !== (\$obj = ".$this->getPeerClassname()."::getInstanceFromPool(\$key))) { + // We no longer rehydrate the object, since this can cause data loss. + // See http://propel.phpdb.org/trac/ticket/509 + // \$obj->hydrate(\$row, 0, true); // rehydrate + \$results[] = \$obj; + } else {"; + if ($table->getChildrenColumn()) { + $script .= " + // class must be set each time from the record row + \$cls = ".$this->getPeerClassname()."::getOMClass(\$row, 0); + \$cls = substr('.'.\$cls, strrpos('.'.\$cls, '.') + 1); + " . $this->buildObjectInstanceCreationCode('$obj', '$cls') . " + \$obj->hydrate(\$row); + \$results[] = \$obj; + ".$this->getPeerClassname()."::addInstanceToPool(\$obj, \$key);"; + } else { + $script .= " + " . $this->buildObjectInstanceCreationCode('$obj', '$cls') . " + \$obj->hydrate(\$row); + \$results[] = \$obj; + ".$this->getPeerClassname()."::addInstanceToPool(\$obj, \$key);"; + } + $script .= " + } // if key exists + } + \$stmt->closeCursor(); + return \$results; + }"; + } + + /** + * Adds a getOMClass() for non-abstract tables that have inheritance. + * @param string &$script The script will be modified in this method. + */ + protected function addGetOMClass_Inheritance(&$script) + { + $col = $this->getTable()->getChildrenColumn(); + $script .= " + /** + * The returned Class will contain objects of the default type or + * objects that inherit from the default. + * + * @param array \$row PropelPDO result row. + * @param int \$colnum Column to examine for OM class information (first is 0). + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function getOMClass(\$row, \$colnum) + { + try { +"; + if ($col->isEnumeratedClasses()) { + $script .= " + \$omClass = null; + \$classKey = \$row[\$colnum + " . ($col->getPosition() - 1) . "]; + + switch(\$classKey) { +"; + foreach ($col->getChildren() as $child) { + $script .= " + case self::CLASSKEY_".strtoupper($child->getKey()).": + \$omClass = self::CLASSNAME_".strtoupper($child->getKey())."; + break; +"; + } /* foreach */ + $script .= " + default: + \$omClass = self::CLASS_DEFAULT; +"; + $script .= " + } // switch +"; + } else { /* if not enumerated */ + $script .= " + \$omClass = \$row[\$colnum + ".($col->getPosition()-1)."]; + \$omClass = substr('.'.\$omClass, strrpos('.'.\$omClass, '.') + 1); +"; + } + $script .= " + } catch (Exception \$e) { + throw new PropelException('Unable to get OM class.', \$e); + } + return \$omClass; + } +"; + } + + /** + * Adds a getOMClass() signature for abstract tables that have inheritance. + * @param string &$script The script will be modified in this method. + */ + protected function addGetOMClass_Inheritance_Abstract(&$script) + { + $script .= " + /** + * The returned Class will contain objects of the default type or + * objects that inherit from the default. + * + * This method must be overridden by the stub subclass, because + * ".$this->getObjectClassname()." is declared abstract in the schema. + * + * @param ResultSet \$rs ResultSet with pointer to record containing om class. + * @param int \$colnum Column to examine for OM class information (first is 1). + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + abstract public static function getOMClass(); +"; + } + + /** + * Adds a getOMClass() for non-abstract tables that do note use inheritance. + * @param string &$script The script will be modified in this method. + */ + protected function addGetOMClass_NoInheritance(&$script) + { + $script .= " + /** + * The class that the Peer will make instances of. + * + * If \$withPrefix is true, the returned path + * uses a dot-path notation which is tranalted into a path + * relative to a location on the PHP include_path. + * (e.g. path.to.MyClass -> 'path/to/MyClass.php') + * + * @param boolean $withPrefix Whether or not to return the path wit hthe class name + * @return string path.to.ClassName + */ + public static function getOMClass(\$withPrefix = true) + { + return \$withPrefix ? ".$this->getPeerClassname()."::CLASS_DEFAULT : ".$this->getPeerClassname()."::OM_CLASS; + } +"; + } + + /** + * Adds a getOMClass() signature for abstract tables that do not have inheritance. + * @param string &$script The script will be modified in this method. + */ + protected function addGetOMClass_NoInheritance_Abstract(&$script) + { + $script .= " + /** + * The class that the Peer will make instances of. + * + * This method must be overridden by the stub subclass, because + * ".$this->getObjectClassname()." is declared abstract in the schema. + */ + abstract public static function getOMClass(\$withPrefix = true); +"; + } + + /** + * Adds the doInsert() method. + * @param string &$script The script will be modified in this method. + */ + protected function addDoInsert(&$script) + { + $table = $this->getTable(); + $script .= " + /** + * Method perform an INSERT on the database, given a ".$this->getObjectClassname()." or Criteria object. + * + * @param mixed \$values Criteria or ".$this->getObjectClassname()." object containing data that is used to create the INSERT statement. + * @param PropelPDO \$con the PropelPDO connection to use + * @return mixed The new primary key. + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function doInsert(\$values, PropelPDO \$con = null) + { + if (\$con === null) { + \$con = Propel::getConnection(".$this->getPeerClassname()."::DATABASE_NAME, Propel::CONNECTION_WRITE); + } + + if (\$values instanceof Criteria) { + \$criteria = clone \$values; // rename for clarity + } else { + \$criteria = \$values->buildCriteria(); // build Criteria from ".$this->getObjectClassname()." object + } +"; + + foreach ($table->getColumns() as $col) { + $cfc = $col->getPhpName(); + if ($col->isPrimaryKey() && $col->isAutoIncrement() && $table->getIdMethod() != "none" && !$table->isAllowPkInsert()) { + $script .= " + if (\$criteria->containsKey(".$this->getColumnConstant($col).") && \$criteria->keyContainsValue(" . $this->getColumnConstant($col) . ") ) { + throw new PropelException('Cannot insert a value for auto-increment primary key ('.".$this->getColumnConstant($col).".')'); + } +"; + if (!$this->getPlatform()->supportsInsertNullPk()) + { + $script .= " + // remove pkey col since this table uses auto-increment and passing a null value for it is not valid + \$criteria->remove(".$this->getColumnConstant($col)."); +"; + } + } elseif ($col->isPrimaryKey() && $col->isAutoIncrement() && $table->getIdMethod() != "none" && $table->isAllowPkInsert() && !$this->getPlatform()->supportsInsertNullPk()) { + $script .= " + // remove pkey col if it is null since this table does not accept that + if (\$criteria->containsKey(".$this->getColumnConstant($col).") && !\$criteria->keyContainsValue(" . $this->getColumnConstant($col) . ") ) { + \$criteria->remove(".$this->getColumnConstant($col)."); + } +"; + } + } + $script .= " + + // Set the correct dbName + \$criteria->setDbName(self::DATABASE_NAME); + + try { + // use transaction because \$criteria could contain info + // for more than one table (I guess, conceivably) + \$con->beginTransaction(); + \$pk = ".$this->basePeerClassname."::doInsert(\$criteria, \$con); + \$con->commit(); + } catch(PropelException \$e) { + \$con->rollBack(); + throw \$e; + } + + return \$pk; + } +"; + } + + /** + * Adds the doUpdate() method. + * @param string &$script The script will be modified in this method. + */ + protected function addDoUpdate(&$script) + { + $table = $this->getTable(); + $script .= " + /** + * Method perform an UPDATE on the database, given a ".$this->getObjectClassname()." or Criteria object. + * + * @param mixed \$values Criteria or ".$this->getObjectClassname()." object containing data that is used to create the UPDATE statement. + * @param PropelPDO \$con The connection to use (specify PropelPDO connection object to exert more control over transactions). + * @return int The number of affected rows (if supported by underlying database driver). + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function doUpdate(\$values, PropelPDO \$con = null) + { + if (\$con === null) { + \$con = Propel::getConnection(".$this->getPeerClassname()."::DATABASE_NAME, Propel::CONNECTION_WRITE); + } + + \$selectCriteria = new Criteria(self::DATABASE_NAME); + + if (\$values instanceof Criteria) { + \$criteria = clone \$values; // rename for clarity +"; + foreach ($table->getColumns() as $col) { + if ($col->isPrimaryKey()) { + $script .= " + \$comparison = \$criteria->getComparison(".$this->getColumnConstant($col)."); + \$selectCriteria->add(".$this->getColumnConstant($col).", \$criteria->remove(".$this->getColumnConstant($col)."), \$comparison); +"; + } /* if col is prim key */ + } /* foreach */ + + $script .= " + } else { // \$values is ".$this->getObjectClassname()." object + \$criteria = \$values->buildCriteria(); // gets full criteria + \$selectCriteria = \$values->buildPkeyCriteria(); // gets criteria w/ primary key(s) + } + + // set the correct dbName + \$criteria->setDbName(self::DATABASE_NAME); + + return {$this->basePeerClassname}::doUpdate(\$selectCriteria, \$criteria, \$con); + } +"; + } + + /** + * Adds the doDeleteAll() method. + * @param string &$script The script will be modified in this method. + */ + protected function addDoDeleteAll(&$script) + { + $table = $this->getTable(); + $script .= " + /** + * Method to DELETE all rows from the ".$table->getName()." table. + * + * @return int The number of affected rows (if supported by underlying database driver). + */ + public static function doDeleteAll(\$con = null) + { + if (\$con === null) { + \$con = Propel::getConnection(".$this->getPeerClassname()."::DATABASE_NAME, Propel::CONNECTION_WRITE); + } + \$affectedRows = 0; // initialize var to track total num of affected rows + try { + // use transaction because \$criteria could contain info + // for more than one table or we could emulating ON DELETE CASCADE, etc. + \$con->beginTransaction(); + "; + if ($this->isDeleteCascadeEmulationNeeded()) { + $script .="\$affectedRows += ".$this->getPeerClassname()."::doOnDeleteCascade(new Criteria(".$this->getPeerClassname()."::DATABASE_NAME), \$con); + "; + } + if ($this->isDeleteSetNullEmulationNeeded()) { + $script .= $this->getPeerClassname() . "::doOnDeleteSetNull(new Criteria(".$this->getPeerClassname() . "::DATABASE_NAME), \$con); + "; + } + $script .= "\$affectedRows += {$this->basePeerClassname}::doDeleteAll(".$this->getPeerClassname()."::TABLE_NAME, \$con); + // Because this db requires some delete cascade/set null emulation, we have to + // clear the cached instance *after* the emulation has happened (since + // instances get re-added by the select statement contained therein). + ".$this->getPeerClassname()."::clearInstancePool(); + ".$this->getPeerClassname()."::clearRelatedInstancePool(); + \$con->commit(); + return \$affectedRows; + } catch (PropelException \$e) { + \$con->rollBack(); + throw \$e; + } + } +"; + } + + /** + * Adds the doDelete() method. + * @param string &$script The script will be modified in this method. + */ + protected function addDoDelete(&$script) + { + $table = $this->getTable(); + $emulateCascade = $this->isDeleteCascadeEmulationNeeded() || $this->isDeleteSetNullEmulationNeeded(); + $script .= " + /** + * Method perform a DELETE on the database, given a ".$this->getObjectClassname()." or Criteria object OR a primary key value. + * + * @param mixed \$values Criteria or ".$this->getObjectClassname()." object or primary key or array of primary keys + * which is used to create the DELETE statement + * @param PropelPDO \$con the connection to use + * @return int The number of affected rows (if supported by underlying database driver). This includes CASCADE-related rows + * if supported by native driver or if emulated using Propel. + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function doDelete(\$values, PropelPDO \$con = null) + { + if (\$con === null) { + \$con = Propel::getConnection(".$this->getPeerClassname()."::DATABASE_NAME, Propel::CONNECTION_WRITE); + } + + if (\$values instanceof Criteria) {"; + if (!$emulateCascade) { + $script .= " + // invalidate the cache for all objects of this type, since we have no + // way of knowing (without running a query) what objects should be invalidated + // from the cache based on this Criteria. + ".$this->getPeerClassname()."::clearInstancePool();"; + } + $script .= " + // rename for clarity + \$criteria = clone \$values; + } elseif (\$values instanceof ".$this->getObjectClassname().") { // it's a model object"; + if (!$emulateCascade) { + $script .= " + // invalidate the cache for this single object + ".$this->getPeerClassname()."::removeInstanceFromPool(\$values);"; + } + if (count($table->getPrimaryKey()) > 0) { + $script .= " + // create criteria based on pk values + \$criteria = \$values->buildPkeyCriteria();"; + } else { + $script .= " + // create criteria based on pk value + \$criteria = \$values->buildCriteria();"; + } + + $script .= " + } else { // it's a primary key, or an array of pks"; + $script .= " + \$criteria = new Criteria(self::DATABASE_NAME);"; + + if (count($table->getPrimaryKey()) === 1) { + $pkey = $table->getPrimaryKey(); + $col = array_shift($pkey); + $script .= " + \$criteria->add(".$this->getColumnConstant($col).", (array) \$values, Criteria::IN);"; + if (!$emulateCascade) { + $script .= " + // invalidate the cache for this object(s) + foreach ((array) \$values as \$singleval) { + ".$this->getPeerClassname()."::removeInstanceFromPool(\$singleval); + }"; + } + } else { + $script .= " + // primary key is composite; we therefore, expect + // the primary key passed to be an array of pkey values + if (count(\$values) == count(\$values, COUNT_RECURSIVE)) { + // array is not multi-dimensional + \$values = array(\$values); + } + foreach (\$values as \$value) {"; + $i=0; + foreach ($table->getPrimaryKey() as $col) { + if ($i == 0) { + $script .= " + \$criterion = \$criteria->getNewCriterion(".$this->getColumnConstant($col).", \$value[$i]);"; + } else { + $script .= " + \$criterion->addAnd(\$criteria->getNewCriterion(".$this->getColumnConstant($col).", \$value[$i]));"; + } + $i++; + } + $script .= " + \$criteria->addOr(\$criterion);"; + if (!$emulateCascade) { + $script .= " + // we can invalidate the cache for this single PK + ".$this->getPeerClassname()."::removeInstanceFromPool(\$value);"; + } + $script .= " + }"; + } /* if count(table->getPrimaryKeys()) */ + + $script .= " + } + + // Set the correct dbName + \$criteria->setDbName(self::DATABASE_NAME); + + \$affectedRows = 0; // initialize var to track total num of affected rows + + try { + // use transaction because \$criteria could contain info + // for more than one table or we could emulating ON DELETE CASCADE, etc. + \$con->beginTransaction(); + "; + + if ($this->isDeleteCascadeEmulationNeeded()) { + $script .= "\$affectedRows += ".$this->getPeerClassname()."::doOnDeleteCascade(\$criteria, \$con); + "; + } + if ($this->isDeleteSetNullEmulationNeeded()) { + $script .= $this->getPeerClassname() . "::doOnDeleteSetNull(\$criteria, \$con); + "; + } + + if ($emulateCascade) { + $script .= " + // Because this db requires some delete cascade/set null emulation, we have to + // clear the cached instance *after* the emulation has happened (since + // instances get re-added by the select statement contained therein). + if (\$values instanceof Criteria) { + ".$this->getPeerClassname()."::clearInstancePool(); + } elseif (\$values instanceof ".$this->getObjectClassname().") { // it's a model object + ".$this->getPeerClassname()."::removeInstanceFromPool(\$values); + } else { // it's a primary key, or an array of pks + foreach ((array) \$values as \$singleval) { + ".$this->getPeerClassname()."::removeInstanceFromPool(\$singleval); + } + } + "; + } + + $script .= " + \$affectedRows += {$this->basePeerClassname}::doDelete(\$criteria, \$con); + ".$this->getPeerClassname()."::clearRelatedInstancePool(); + \$con->commit(); + return \$affectedRows; + } catch (PropelException \$e) { + \$con->rollBack(); + throw \$e; + } + } +"; + } + + /** + * Adds the doOnDeleteCascade() method, which provides ON DELETE CASCADE emulation. + * @param string &$script The script will be modified in this method. + */ + protected function addDoOnDeleteCascade(&$script) + { + $table = $this->getTable(); + $script .= " + /** + * This is a method for emulating ON DELETE CASCADE for DBs that don't support this + * feature (like MySQL or SQLite). + * + * This method is not very speedy because it must perform a query first to get + * the implicated records and then perform the deletes by calling those Peer classes. + * + * This method should be used within a transaction if possible. + * + * @param Criteria \$criteria + * @param PropelPDO \$con + * @return int The number of affected rows (if supported by underlying database driver). + */ + protected static function doOnDeleteCascade(Criteria \$criteria, PropelPDO \$con) + { + // initialize var to track total num of affected rows + \$affectedRows = 0; + + // first find the objects that are implicated by the \$criteria + \$objects = ".$this->getPeerClassname()."::doSelect(\$criteria, \$con); + foreach (\$objects as \$obj) { +"; + + foreach ($table->getReferrers() as $fk) { + + // $fk is the foreign key in the other table, so localTableName will + // actually be the table name of other table + $tblFK = $fk->getTable(); + + $joinedTablePeerBuilder = $this->getNewPeerBuilder($tblFK); + $tblFKPackage = $joinedTablePeerBuilder->getStubPeerBuilder()->getPackage(); + + if (!$tblFK->isForReferenceOnly()) { + // we can't perform operations on tables that are + // not within the schema (i.e. that we have no map for, etc.) + + $fkClassName = $joinedTablePeerBuilder->getObjectClassname(); + + // i'm not sure whether we can allow delete cascade for foreign keys + // within the same table? perhaps we can? + if ( $fk->getOnDelete() == ForeignKey::CASCADE && $tblFK->getName() != $table->getName()) { + + // backwards on purpose + $columnNamesF = $fk->getLocalColumns(); + $columnNamesL = $fk->getForeignColumns(); + + $script .= " + + // delete related $fkClassName objects + \$criteria = new Criteria(".$joinedTablePeerBuilder->getPeerClassname()."::DATABASE_NAME); + "; + for ($x=0,$xlen=count($columnNamesF); $x < $xlen; $x++) { + $columnFK = $tblFK->getColumn($columnNamesF[$x]); + $columnL = $table->getColumn($columnNamesL[$x]); + + $script .= " + \$criteria->add(".$joinedTablePeerBuilder->getColumnConstant($columnFK) .", \$obj->get".$columnL->getPhpName()."());"; + } + + $script .= " + \$affectedRows += ".$joinedTablePeerBuilder->getPeerClassname()."::doDelete(\$criteria, \$con);"; + + } // if cascade && fkey table name != curr table name + + } // if not for ref only + } // foreach foreign keys + $script .= " + } + return \$affectedRows; + } +"; + } // end addDoOnDeleteCascade + + /** + * Adds the doOnDeleteSetNull() method, which provides ON DELETE SET NULL emulation. + * @param string &$script The script will be modified in this method. + */ + protected function addDoOnDeleteSetNull(&$script) + { + $table = $this->getTable(); + $script .= " + /** + * This is a method for emulating ON DELETE SET NULL DBs that don't support this + * feature (like MySQL or SQLite). + * + * This method is not very speedy because it must perform a query first to get + * the implicated records and then perform the deletes by calling those Peer classes. + * + * This method should be used within a transaction if possible. + * + * @param Criteria \$criteria + * @param PropelPDO \$con + * @return void + */ + protected static function doOnDeleteSetNull(Criteria \$criteria, PropelPDO \$con) + { + + // first find the objects that are implicated by the \$criteria + \$objects = ".$this->getPeerClassname()."::doSelect(\$criteria, \$con); + foreach (\$objects as \$obj) { +"; + + // This logic is almost exactly the same as that in doOnDeleteCascade() + // it may make sense to refactor this, provided that thigns don't + // get too complicated. + + foreach ($table->getReferrers() as $fk) { + + // $fk is the foreign key in the other table, so localTableName will + // actually be the table name of other table + $tblFK = $fk->getTable(); + $refTablePeerBuilder = $this->getNewPeerBuilder($tblFK); + + if (!$tblFK->isForReferenceOnly()) { + // we can't perform operations on tables that are + // not within the schema (i.e. that we have no map for, etc.) + + $fkClassName = $refTablePeerBuilder->getObjectClassname(); + + // i'm not sure whether we can allow delete setnull for foreign keys + // within the same table? perhaps we can? + if ( $fk->getOnDelete() == ForeignKey::SETNULL && + $fk->getTable()->getName() != $table->getName()) { + + // backwards on purpose + $columnNamesF = $fk->getLocalColumns(); + $columnNamesL = $fk->getForeignColumns(); // should be same num as foreign + $script .= " + // set fkey col in related $fkClassName rows to NULL + \$selectCriteria = new Criteria(".$this->getPeerClassname()."::DATABASE_NAME); + \$updateValues = new Criteria(".$this->getPeerClassname()."::DATABASE_NAME);"; + + for ($x=0,$xlen=count($columnNamesF); $x < $xlen; $x++) { + $columnFK = $tblFK->getColumn($columnNamesF[$x]); + $columnL = $table->getColumn($columnNamesL[$x]); + $script .= " + \$selectCriteria->add(".$refTablePeerBuilder->getColumnConstant($columnFK).", \$obj->get".$columnL->getPhpName()."()); + \$updateValues->add(".$refTablePeerBuilder->getColumnConstant($columnFK).", null); +"; + } + + $script .= " + {$this->basePeerClassname}::doUpdate(\$selectCriteria, \$updateValues, \$con); // use BasePeer because generated Peer doUpdate() methods only update using pkey +"; + } // if setnull && fkey table name != curr table name + } // if not for ref only + } // foreach foreign keys + + $script .= " + } + } +"; + } + + /** + * Adds the doValidate() method. + * @param string &$script The script will be modified in this method. + */ + protected function addDoValidate(&$script) + { + $table = $this->getTable(); + $script .= " + /** + * Validates all modified columns of given ".$this->getObjectClassname()." object. + * If parameter \$columns is either a single column name or an array of column names + * than only those columns are validated. + * + * NOTICE: This does not apply to primary or foreign keys for now. + * + * @param ".$this->getObjectClassname()." \$obj The object to validate. + * @param mixed \$cols Column name or array of column names. + * + * @return mixed TRUE if all columns are valid or the error message of the first invalid column. + */ + public static function doValidate(".$this->getObjectClassname()." \$obj, \$cols = null) + { + \$columns = array(); + + if (\$cols) { + \$dbMap = Propel::getDatabaseMap(".$this->getPeerClassname()."::DATABASE_NAME); + \$tableMap = \$dbMap->getTable(".$this->getPeerClassname()."::TABLE_NAME); + + if (! is_array(\$cols)) { + \$cols = array(\$cols); + } + + foreach (\$cols as \$colName) { + if (\$tableMap->containsColumn(\$colName)) { + \$get = 'get' . \$tableMap->getColumn(\$colName)->getPhpName(); + \$columns[\$colName] = \$obj->\$get(); + } + } + } else { +"; + foreach ($table->getValidators() as $val) { + $col = $val->getColumn(); + if (!$col->isAutoIncrement()) { + $script .= " + if (\$obj->isNew() || \$obj->isColumnModified(".$this->getColumnConstant($col).")) + \$columns[".$this->getColumnConstant($col)."] = \$obj->get".$col->getPhpName()."(); +"; + } // if + } // foreach + + $script .= " + } + + return {$this->basePeerClassname}::doValidate(".$this->getPeerClassname()."::DATABASE_NAME, ".$this->getPeerClassname()."::TABLE_NAME, \$columns); + } +"; + } // end addDoValidate() + + /** + * Adds the retrieveByPK method for tables with single-column primary key. + * @param string &$script The script will be modified in this method. + */ + protected function addRetrieveByPK_SinglePK(&$script) + { + $table = $this->getTable(); + $pks = $table->getPrimaryKey(); + $col = $pks[0]; + + $script .= " + /** + * Retrieve a single object by pkey. + * + * @param ".$col->getPhpType()." \$pk the primary key. + * @param PropelPDO \$con the connection to use + * @return " .$this->getObjectClassname(). " + */ + public static function ".$this->getRetrieveMethodName()."(\$pk, PropelPDO \$con = null) + { + + if (null !== (\$obj = ".$this->getPeerClassname()."::getInstanceFromPool(".$this->getInstancePoolKeySnippet('$pk')."))) { + return \$obj; + } + + if (\$con === null) { + \$con = Propel::getConnection(".$this->getPeerClassname()."::DATABASE_NAME, Propel::CONNECTION_READ); + } + + \$criteria = new Criteria(".$this->getPeerClassname()."::DATABASE_NAME); + \$criteria->add(".$this->getColumnConstant($col).", \$pk); + + \$v = ".$this->getPeerClassname()."::doSelect(\$criteria, \$con); + + return !empty(\$v) > 0 ? \$v[0] : null; + } +"; + } + + /** + * Adds the retrieveByPKs method for tables with single-column primary key. + * @param string &$script The script will be modified in this method. + */ + protected function addRetrieveByPKs_SinglePK(&$script) + { + $table = $this->getTable(); + $script .= " + /** + * Retrieve multiple objects by pkey. + * + * @param array \$pks List of primary keys + * @param PropelPDO \$con the connection to use + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function ".$this->getRetrieveMethodName()."s(\$pks, PropelPDO \$con = null) + { + if (\$con === null) { + \$con = Propel::getConnection(".$this->getPeerClassname()."::DATABASE_NAME, Propel::CONNECTION_READ); + } + + \$objs = null; + if (empty(\$pks)) { + \$objs = array(); + } else { + \$criteria = new Criteria(".$this->getPeerClassname()."::DATABASE_NAME);"; + $k1 = $table->getPrimaryKey(); + $script .= " + \$criteria->add(".$this->getColumnConstant($k1[0]).", \$pks, Criteria::IN);"; + $script .= " + \$objs = ".$this->getPeerClassname()."::doSelect(\$criteria, \$con); + } + return \$objs; + } +"; + } + + /** + * Adds the retrieveByPK method for tables with multi-column primary key. + * @param string &$script The script will be modified in this method. + */ + protected function addRetrieveByPK_MultiPK(&$script) + { + $table = $this->getTable(); + $script .= " + /** + * Retrieve object using using composite pkey values."; + foreach ($table->getPrimaryKey() as $col) { + $clo = strtolower($col->getName()); + $cptype = $col->getPhpType(); + $script .= " + * @param $cptype $".$clo; + } + $script .= " + * @param PropelPDO \$con + * @return ".$this->getObjectClassname()." + */ + public static function ".$this->getRetrieveMethodName()."("; + + $php = array(); + foreach ($table->getPrimaryKey() as $col) { + $clo = strtolower($col->getName()); + $php[] = '$' . $clo; + } /* foreach */ + + $script .= implode(', ', $php); + + $script .= ", PropelPDO \$con = null) { + \$key = ".$this->getInstancePoolKeySnippet($php).";"; + $script .= " + if (null !== (\$obj = ".$this->getPeerClassname()."::getInstanceFromPool(\$key))) { + return \$obj; + } + + if (\$con === null) { + \$con = Propel::getConnection(".$this->getPeerClassname()."::DATABASE_NAME, Propel::CONNECTION_READ); + } + \$criteria = new Criteria(".$this->getPeerClassname()."::DATABASE_NAME);"; + foreach ($table->getPrimaryKey() as $col) { + $clo = strtolower($col->getName()); + $script .= " + \$criteria->add(".$this->getColumnConstant($col).", $".$clo.");"; + } + $script .= " + \$v = ".$this->getPeerClassname()."::doSelect(\$criteria, \$con); + + return !empty(\$v) ? \$v[0] : null; + }"; + } + + /** + * Adds the getTableMap() method which is a convenience method for apps to get DB metadata. + * @param string &$script The script will be modified in this method. + */ + protected function addGetTableMap(&$script) + { + $script .= " + /** + * Returns the TableMap related to this peer. + * This method is not needed for general use but a specific application could have a need. + * @return TableMap + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function getTableMap() + { + return Propel::getDatabaseMap(self::DATABASE_NAME)->getTable(self::TABLE_NAME); + } +"; + } + + /** + * Adds the complex OM methods to the base addSelectMethods() function. + * @param string &$script The script will be modified in this method. + * @see PeerBuilder::addSelectMethods() + */ + protected function addSelectMethods(&$script) + { + $table = $this->getTable(); + + parent::addSelectMethods($script); + + $this->addDoCountJoin($script); + $this->addDoSelectJoin($script); + + $countFK = count($table->getForeignKeys()); + + $includeJoinAll = true; + + foreach ($this->getTable()->getForeignKeys() as $fk) { + $tblFK = $table->getDatabase()->getTable($fk->getForeignTableName()); + if ($tblFK->isForReferenceOnly()) { + $includeJoinAll = false; + } + } + + if ($includeJoinAll) { + if ($countFK > 0) { + $this->addDoCountJoinAll($script); + $this->addDoSelectJoinAll($script); + } + if ($countFK > 1) { + $this->addDoCountJoinAllExcept($script); + $this->addDoSelectJoinAllExcept($script); + } + } + + } + + /** + * Get the column offsets of the primary key(s) for specified table. + * + * @param Table $tbl + * @return array int[] The column offsets of the primary key(s). + */ + protected function getPrimaryKeyColOffsets(Table $tbl) + { + $offsets = array(); + $idx = 0; + foreach ($tbl->getColumns() as $col) { + if ($col->isPrimaryKey()) { + $offsets[] = $idx; + } + $idx++; + } + return $offsets; + } + + public function addCriteriaJoin($fk, $table, $joinTable, $joinedTablePeerBuilder) + { + $script = ''; + $lfMap = $fk->getLocalForeignMapping(); + $lftCols = $fk->getLocalColumns(); + if (count($lftCols) == 1) + { + // simple foreign key + $lftCol = $lftCols[0]; + $script .= sprintf(" + \$criteria->addJoin(%s, %s, \$join_behavior);\n", + $this->getColumnConstant($table->getColumn($lftCol) ), + $joinedTablePeerBuilder->getColumnConstant($joinTable->getColumn( $lfMap[$lftCol] ) )); + } + else + { + // composite foreign key + $script .= " + \$criteria->addMultipleJoin(array(\n"; + foreach ($lftCols as $columnName ) { + $script .= sprintf(" array(%s, %s),\n", + $this->getColumnConstant($table->getColumn($columnName) ), + $joinedTablePeerBuilder->getColumnConstant($joinTable->getColumn( $lfMap[$columnName] ) ) + ); + } + $script .= " ), \$join_behavior);\n"; + } + return $script; + } + + /** + * Adds the doSelectJoin*() methods. + * @param string &$script The script will be modified in this method. + */ + protected function addDoSelectJoin(&$script) + { + $table = $this->getTable(); + $className = $this->getObjectClassname(); + $countFK = count($table->getForeignKeys()); + $join_behavior = $this->getJoinBehavior(); + + if ($countFK >= 1) { + + foreach ($table->getForeignKeys() as $fk) { + + $joinTable = $table->getDatabase()->getTable($fk->getForeignTableName()); + + if (!$joinTable->isForReferenceOnly()) { + + // This condition is necessary because Propel lacks a system for + // aliasing the table if it is the same table. + if ( $fk->getForeignTableName() != $table->getName() ) { + + $thisTableObjectBuilder = $this->getNewObjectBuilder($table); + $joinedTableObjectBuilder = $this->getNewObjectBuilder($joinTable); + $joinedTablePeerBuilder = $this->getNewPeerBuilder($joinTable); + + $joinClassName = $joinedTableObjectBuilder->getObjectClassname(); + + $script .= " + + /** + * Selects a collection of $className objects pre-filled with their $joinClassName objects. + * @param Criteria \$criteria + * @param PropelPDO \$con + * @param String \$join_behavior the type of joins to use, defaults to $join_behavior + * @return array Array of $className objects. + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function doSelectJoin".$thisTableObjectBuilder->getFKPhpNameAffix($fk, $plural = false)."(Criteria \$criteria, \$con = null, \$join_behavior = $join_behavior) + { + \$criteria = clone \$criteria; + + // Set the correct dbName if it has not been overridden + if (\$criteria->getDbName() == Propel::getDefaultDB()) { + \$criteria->setDbName(self::DATABASE_NAME); + } + + ".$this->getPeerClassname()."::addSelectColumns(\$criteria); + \$startcol = (".$this->getPeerClassname()."::NUM_COLUMNS - ".$this->getPeerClassname()."::NUM_LAZY_LOAD_COLUMNS); + ".$joinedTablePeerBuilder->getPeerClassname()."::addSelectColumns(\$criteria); +"; + + $script .= $this->addCriteriaJoin($fk, $table, $joinTable, $joinedTablePeerBuilder); + + // apply behaviors + $this->applyBehaviorModifier('preSelect', $script); + + $script .= " + \$stmt = ".$this->basePeerClassname."::doSelect(\$criteria, \$con); + \$results = array(); + + while (\$row = \$stmt->fetch(PDO::FETCH_NUM)) { + \$key1 = ".$this->getPeerClassname()."::getPrimaryKeyHashFromRow(\$row, 0); + if (null !== (\$obj1 = ".$this->getPeerClassname()."::getInstanceFromPool(\$key1))) { + // We no longer rehydrate the object, since this can cause data loss. + // See http://propel.phpdb.org/trac/ticket/509 + // \$obj1->hydrate(\$row, 0, true); // rehydrate + } else { +"; + if ($table->getChildrenColumn()) { + $script .= " + \$omClass = ".$this->getPeerClassname()."::getOMClass(\$row, 0); + \$cls = substr('.'.\$omClass, strrpos('.'.\$omClass, '.') + 1); +"; + } else { + $script .= " + \$cls = ".$this->getPeerClassname()."::getOMClass(false); +"; + } + $script .= " + " . $this->buildObjectInstanceCreationCode('$obj1', '$cls') . " + \$obj1->hydrate(\$row); + ".$this->getPeerClassname()."::addInstanceToPool(\$obj1, \$key1); + } // if \$obj1 already loaded + + \$key2 = ".$joinedTablePeerBuilder->getPeerClassname()."::getPrimaryKeyHashFromRow(\$row, \$startcol); + if (\$key2 !== null) { + \$obj2 = ".$joinedTablePeerBuilder->getPeerClassname()."::getInstanceFromPool(\$key2); + if (!\$obj2) { +"; + if ($joinTable->getChildrenColumn()) { + $script .= " + \$omClass = ".$joinedTablePeerBuilder->getPeerClassname()."::getOMClass(\$row, \$startcol); + \$cls = substr('.'.\$omClass, strrpos('.'.\$omClass, '.') + 1); +"; + } else { + $script .= " + \$cls = ".$joinedTablePeerBuilder->getPeerClassname()."::getOMClass(false); +"; + } + + $script .= " + " . $this->buildObjectInstanceCreationCode('$obj2', '$cls') . " + \$obj2->hydrate(\$row, \$startcol); + ".$joinedTablePeerBuilder->getPeerClassname()."::addInstanceToPool(\$obj2, \$key2); + } // if obj2 already loaded + + // Add the \$obj1 (".$this->getObjectClassname().") to \$obj2 (".$joinedTablePeerBuilder->getObjectClassname().")"; + if ($fk->isLocalPrimaryKey()) { + $script .= " + // one to one relationship + \$obj1->set" . $joinedTablePeerBuilder->getObjectClassname() . "(\$obj2);"; + } else { + $script .= " + \$obj2->add" . $joinedTableObjectBuilder->getRefFKPhpNameAffix($fk, $plural = false)."(\$obj1);"; + } + $script .= " + + } // if joined row was not null + + \$results[] = \$obj1; + } + \$stmt->closeCursor(); + return \$results; + } +"; + } // if fk table name != this table name + } // if ! is reference only + } // foreach column + } // if count(fk) > 1 + + } // addDoSelectJoin() + + /** + * Adds the doCountJoin*() methods. + * @param string &$script The script will be modified in this method. + */ + protected function addDoCountJoin(&$script) + { + $table = $this->getTable(); + $className = $this->getObjectClassname(); + $countFK = count($table->getForeignKeys()); + $join_behavior = $this->getJoinBehavior(); + + if ($countFK >= 1) { + + foreach ($table->getForeignKeys() as $fk) { + + $joinTable = $table->getDatabase()->getTable($fk->getForeignTableName()); + + if (!$joinTable->isForReferenceOnly()) { + + if ( $fk->getForeignTableName() != $table->getName() ) { + + $thisTableObjectBuilder = $this->getNewObjectBuilder($table); + $joinedTableObjectBuilder = $this->getNewObjectBuilder($joinTable); + $joinedTablePeerBuilder = $this->getNewPeerBuilder($joinTable); + + $joinClassName = $joinedTableObjectBuilder->getObjectClassname(); + + $script .= " + + /** + * Returns the number of rows matching criteria, joining the related ".$thisTableObjectBuilder->getFKPhpNameAffix($fk, $plural = false)." table + * + * @param Criteria \$criteria + * @param boolean \$distinct Whether to select only distinct columns; deprecated: use Criteria->setDistinct() instead. + * @param PropelPDO \$con + * @param String \$join_behavior the type of joins to use, defaults to $join_behavior + * @return int Number of matching rows. + */ + public static function doCountJoin".$thisTableObjectBuilder->getFKPhpNameAffix($fk, $plural = false)."(Criteria \$criteria, \$distinct = false, PropelPDO \$con = null, \$join_behavior = $join_behavior) + { + // we're going to modify criteria, so copy it first + \$criteria = clone \$criteria; + + // We need to set the primary table name, since in the case that there are no WHERE columns + // it will be impossible for the BasePeer::createSelectSql() method to determine which + // tables go into the FROM clause. + \$criteria->setPrimaryTableName(".$this->getPeerClassname()."::TABLE_NAME); + + if (\$distinct && !in_array(Criteria::DISTINCT, \$criteria->getSelectModifiers())) { + \$criteria->setDistinct(); + } + + if (!\$criteria->hasSelectClause()) { + ".$this->getPeerClassname()."::addSelectColumns(\$criteria); + } + + \$criteria->clearOrderByColumns(); // ORDER BY won't ever affect the count + + // Set the correct dbName + \$criteria->setDbName(self::DATABASE_NAME); + + if (\$con === null) { + \$con = Propel::getConnection(".$this->getPeerClassname()."::DATABASE_NAME, Propel::CONNECTION_READ); + } +"; + $script .= $this->addCriteriaJoin($fk, $table, $joinTable, $joinedTablePeerBuilder); + + // apply behaviors + $this->applyBehaviorModifier('preSelect', $script); + + $script .= " + \$stmt = ".$this->basePeerClassname."::doCount(\$criteria, \$con); + + if (\$row = \$stmt->fetch(PDO::FETCH_NUM)) { + \$count = (int) \$row[0]; + } else { + \$count = 0; // no rows returned; we infer that means 0 matches. + } + \$stmt->closeCursor(); + return \$count; + } +"; + } // if fk table name != this table name + } // if ! is reference only + } // foreach column + } // if count(fk) > 1 + + } // addDoCountJoin() + + /** + * Adds the doSelectJoinAll() method. + * @param string &$script The script will be modified in this method. + */ + protected function addDoSelectJoinAll(&$script) + { + $table = $this->getTable(); + $className = $this->getObjectClassname(); + $join_behavior = $this->getJoinBehavior(); + + $script .= " + + /** + * Selects a collection of $className objects pre-filled with all related objects. + * + * @param Criteria \$criteria + * @param PropelPDO \$con + * @param String \$join_behavior the type of joins to use, defaults to $join_behavior + * @return array Array of $className objects. + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function doSelectJoinAll(Criteria \$criteria, \$con = null, \$join_behavior = $join_behavior) + { + \$criteria = clone \$criteria; + + // Set the correct dbName if it has not been overridden + if (\$criteria->getDbName() == Propel::getDefaultDB()) { + \$criteria->setDbName(self::DATABASE_NAME); + } + + ".$this->getPeerClassname()."::addSelectColumns(\$criteria); + \$startcol2 = (".$this->getPeerClassname()."::NUM_COLUMNS - ".$this->getPeerClassname()."::NUM_LAZY_LOAD_COLUMNS); +"; + $index = 2; + foreach ($table->getForeignKeys() as $fk) { + + // Want to cover this case, but the code is not there yet. + // Propel lacks a system for aliasing tables of the same name. + if ( $fk->getForeignTableName() != $table->getName() ) { + $joinTable = $table->getDatabase()->getTable($fk->getForeignTableName()); + $new_index = $index + 1; + + $joinedTablePeerBuilder = $this->getNewPeerBuilder($joinTable); + $joinClassName = $joinedTablePeerBuilder->getObjectClassname(); + + $script .= " + ".$joinedTablePeerBuilder->getPeerClassname()."::addSelectColumns(\$criteria); + \$startcol$new_index = \$startcol$index + (".$joinedTablePeerBuilder->getPeerClassname()."::NUM_COLUMNS - ".$joinedTablePeerBuilder->getPeerClassname()."::NUM_LAZY_LOAD_COLUMNS); +"; + $index = $new_index; + + } // if fk->getForeignTableName != table->getName + } // foreach [sub] foreign keys + + foreach ($table->getForeignKeys() as $fk) { + // want to cover this case, but the code is not there yet. + if ( $fk->getForeignTableName() != $table->getName() ) { + $joinTable = $table->getDatabase()->getTable($fk->getForeignTableName()); + $joinedTablePeerBuilder = $this->getNewPeerBuilder($joinTable); + $script .= $this->addCriteriaJoin($fk, $table, $joinTable, $joinedTablePeerBuilder); + } + } + + // apply behaviors + $this->applyBehaviorModifier('preSelect', $script); + + $script .= " + \$stmt = ".$this->basePeerClassname."::doSelect(\$criteria, \$con); + \$results = array(); + + while (\$row = \$stmt->fetch(PDO::FETCH_NUM)) { + \$key1 = ".$this->getPeerClassname()."::getPrimaryKeyHashFromRow(\$row, 0); + if (null !== (\$obj1 = ".$this->getPeerClassname()."::getInstanceFromPool(\$key1))) { + // We no longer rehydrate the object, since this can cause data loss. + // See http://propel.phpdb.org/trac/ticket/509 + // \$obj1->hydrate(\$row, 0, true); // rehydrate + } else {"; + + if ($table->getChildrenColumn()) { + $script .= " + \$omClass = ".$this->getPeerClassname()."::getOMClass(\$row, 0); + \$cls = substr('.'.\$omClass, strrpos('.'.\$omClass, '.') + 1); +"; + } else { + $script .= " + \$cls = ".$this->getPeerClassname()."::getOMClass(false); +"; + } + + $script .= " + " . $this->buildObjectInstanceCreationCode('$obj1', '$cls') . " + \$obj1->hydrate(\$row); + ".$this->getPeerClassname()."::addInstanceToPool(\$obj1, \$key1); + } // if obj1 already loaded +"; + + $index = 1; + foreach ($table->getForeignKeys() as $fk ) { + // want to cover this case, but the code is not there yet. + // Why not? -because we'd have to alias the tables in the JOIN + if ( $fk->getForeignTableName() != $table->getName() ) { + $joinTable = $table->getDatabase()->getTable($fk->getForeignTableName()); + + $thisTableObjectBuilder = $this->getNewObjectBuilder($table); + $joinedTableObjectBuilder = $this->getNewObjectBuilder($joinTable); + $joinedTablePeerBuilder = $this->getNewPeerBuilder($joinTable); + + + $joinClassName = $joinedTableObjectBuilder->getObjectClassname(); + $interfaceName = $joinClassName; + + if ($joinTable->getInterface()) { + $interfaceName = $this->prefixClassname($joinTable->getInterface()); + } + + $index++; + + $script .= " + // Add objects for joined $joinClassName rows + + \$key$index = ".$joinedTablePeerBuilder->getPeerClassname()."::getPrimaryKeyHashFromRow(\$row, \$startcol$index); + if (\$key$index !== null) { + \$obj$index = ".$joinedTablePeerBuilder->getPeerClassname()."::getInstanceFromPool(\$key$index); + if (!\$obj$index) { +"; + if ($joinTable->getChildrenColumn()) { + $script .= " + \$omClass = ".$joinedTablePeerBuilder->getPeerClassname()."::getOMClass(\$row, \$startcol$index); + \$cls = substr('.'.\$omClass, strrpos('.'.\$omClass, '.') + 1); +"; + } else { + $script .= " + \$cls = ".$joinedTablePeerBuilder->getPeerClassname()."::getOMClass(false); +"; + } /* $joinTable->getChildrenColumn() */ + + $script .= " + " . $this->buildObjectInstanceCreationCode('$obj' . $index, '$cls') . " + \$obj".$index."->hydrate(\$row, \$startcol$index); + ".$joinedTablePeerBuilder->getPeerClassname()."::addInstanceToPool(\$obj$index, \$key$index); + } // if obj$index loaded + + // Add the \$obj1 (".$this->getObjectClassname().") to the collection in \$obj".$index." (".$joinedTablePeerBuilder->getObjectClassname().")"; + if ($fk->isLocalPrimaryKey()) { + $script .= " + \$obj1->set".$joinedTablePeerBuilder->getObjectClassname()."(\$obj".$index.");"; + } else { + $script .= " + \$obj".$index."->add".$joinedTableObjectBuilder->getRefFKPhpNameAffix($fk, $plural = false)."(\$obj1);"; + } + $script .= " + } // if joined row not null +"; + + } // $fk->getForeignTableName() != $table->getName() + } //foreach foreign key + + $script .= " + \$results[] = \$obj1; + } + \$stmt->closeCursor(); + return \$results; + } +"; + + } // end addDoSelectJoinAll() + + + /** + * Adds the doCountJoinAll() method. + * @param string &$script The script will be modified in this method. + */ + protected function addDoCountJoinAll(&$script) + { + $table = $this->getTable(); + $className = $this->getObjectClassname(); + $join_behavior = $this->getJoinBehavior(); + + $script .= " + + /** + * Returns the number of rows matching criteria, joining all related tables + * + * @param Criteria \$criteria + * @param boolean \$distinct Whether to select only distinct columns; deprecated: use Criteria->setDistinct() instead. + * @param PropelPDO \$con + * @param String \$join_behavior the type of joins to use, defaults to $join_behavior + * @return int Number of matching rows. + */ + public static function doCountJoinAll(Criteria \$criteria, \$distinct = false, PropelPDO \$con = null, \$join_behavior = $join_behavior) + { + // we're going to modify criteria, so copy it first + \$criteria = clone \$criteria; + + // We need to set the primary table name, since in the case that there are no WHERE columns + // it will be impossible for the BasePeer::createSelectSql() method to determine which + // tables go into the FROM clause. + \$criteria->setPrimaryTableName(".$this->getPeerClassname()."::TABLE_NAME); + + if (\$distinct && !in_array(Criteria::DISTINCT, \$criteria->getSelectModifiers())) { + \$criteria->setDistinct(); + } + + if (!\$criteria->hasSelectClause()) { + ".$this->getPeerClassname()."::addSelectColumns(\$criteria); + } + + \$criteria->clearOrderByColumns(); // ORDER BY won't ever affect the count + + // Set the correct dbName + \$criteria->setDbName(self::DATABASE_NAME); + + if (\$con === null) { + \$con = Propel::getConnection(".$this->getPeerClassname()."::DATABASE_NAME, Propel::CONNECTION_READ); + } +"; + + foreach ($table->getForeignKeys() as $fk) { + // want to cover this case, but the code is not there yet. + if ( $fk->getForeignTableName() != $table->getName() ) { + $joinTable = $table->getDatabase()->getTable($fk->getForeignTableName()); + $joinedTablePeerBuilder = $this->getNewPeerBuilder($joinTable); + $script .= $this->addCriteriaJoin($fk, $table, $joinTable, $joinedTablePeerBuilder); + } // if fk->getForeignTableName != table->getName + } // foreach [sub] foreign keys + + // apply behaviors + $this->applyBehaviorModifier('preSelect', $script); + + $script .= " + \$stmt = ".$this->basePeerClassname."::doCount(\$criteria, \$con); + + if (\$row = \$stmt->fetch(PDO::FETCH_NUM)) { + \$count = (int) \$row[0]; + } else { + \$count = 0; // no rows returned; we infer that means 0 matches. + } + \$stmt->closeCursor(); + return \$count; + }"; + } // end addDoCountJoinAll() + + /** + * Adds the doSelectJoinAllExcept*() methods. + * @param string &$script The script will be modified in this method. + */ + protected function addDoSelectJoinAllExcept(&$script) + { + $table = $this->getTable(); + $join_behavior = $this->getJoinBehavior(); + + // ------------------------------------------------------------------------ + // doSelectJoinAllExcept*() + // ------------------------------------------------------------------------ + + // 2) create a bunch of doSelectJoinAllExcept*() methods + // -- these were existing in original Torque, so we should keep them for compatibility + + $fkeys = $table->getForeignKeys(); // this sep assignment is necessary otherwise sub-loops over + // getForeignKeys() will cause this to only execute one time. + foreach ($fkeys as $fk ) { + + $tblFK = $table->getDatabase()->getTable($fk->getForeignTableName()); + + $excludedTable = $table->getDatabase()->getTable($fk->getForeignTableName()); + + $thisTableObjectBuilder = $this->getNewObjectBuilder($table); + $excludedTableObjectBuilder = $this->getNewObjectBuilder($excludedTable); + $excludedTablePeerBuilder = $this->getNewPeerBuilder($excludedTable); + + $excludedClassName = $excludedTableObjectBuilder->getObjectClassname(); + + + $script .= " + + /** + * Selects a collection of ".$this->getObjectClassname()." objects pre-filled with all related objects except ".$thisTableObjectBuilder->getFKPhpNameAffix($fk).". + * + * @param Criteria \$criteria + * @param PropelPDO \$con + * @param String \$join_behavior the type of joins to use, defaults to $join_behavior + * @return array Array of ".$this->getObjectClassname()." objects. + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function doSelectJoinAllExcept".$thisTableObjectBuilder->getFKPhpNameAffix($fk, $plural = false)."(Criteria \$criteria, \$con = null, \$join_behavior = $join_behavior) + { + \$criteria = clone \$criteria; + + // Set the correct dbName if it has not been overridden + // \$criteria->getDbName() will return the same object if not set to another value + // so == check is okay and faster + if (\$criteria->getDbName() == Propel::getDefaultDB()) { + \$criteria->setDbName(self::DATABASE_NAME); + } + + ".$this->getPeerClassname()."::addSelectColumns(\$criteria); + \$startcol2 = (".$this->getPeerClassname()."::NUM_COLUMNS - ".$this->getPeerClassname()."::NUM_LAZY_LOAD_COLUMNS); +"; + $index = 2; + foreach ($table->getForeignKeys() as $subfk) { + // want to cover this case, but the code is not there yet. + // Why not? - because we would have to alias the tables in the join + if ( !($subfk->getForeignTableName() == $table->getName())) { + $joinTable = $table->getDatabase()->getTable($subfk->getForeignTableName()); + $joinTablePeerBuilder = $this->getNewPeerBuilder($joinTable); + $joinClassName = $joinTablePeerBuilder->getObjectClassname(); + + if ($joinClassName != $excludedClassName) { + $new_index = $index + 1; + $script .= " + ".$joinTablePeerBuilder->getPeerClassname()."::addSelectColumns(\$criteria); + \$startcol$new_index = \$startcol$index + (".$joinTablePeerBuilder->getPeerClassname()."::NUM_COLUMNS - ".$joinTablePeerBuilder->getPeerClassname()."::NUM_LAZY_LOAD_COLUMNS); +"; + $index = $new_index; + } // if joinClassName not excludeClassName + } // if subfk is not curr table + } // foreach [sub] foreign keys + + foreach ($table->getForeignKeys() as $subfk) { + // want to cover this case, but the code is not there yet. + if ( $subfk->getForeignTableName() != $table->getName() ) { + $joinTable = $table->getDatabase()->getTable($subfk->getForeignTableName()); + $joinedTablePeerBuilder = $this->getNewPeerBuilder($joinTable); + $joinClassName = $joinedTablePeerBuilder->getObjectClassname(); + + if ($joinClassName != $excludedClassName) + { + $script .= $this->addCriteriaJoin($subfk, $table, $joinTable, $joinedTablePeerBuilder); + } + } + } // foreach fkeys + + // apply behaviors + $this->applyBehaviorModifier('preSelect', $script); + + $script .= " + + \$stmt = ".$this->basePeerClassname ."::doSelect(\$criteria, \$con); + \$results = array(); + + while (\$row = \$stmt->fetch(PDO::FETCH_NUM)) { + \$key1 = ".$this->getPeerClassname()."::getPrimaryKeyHashFromRow(\$row, 0); + if (null !== (\$obj1 = ".$this->getPeerClassname()."::getInstanceFromPool(\$key1))) { + // We no longer rehydrate the object, since this can cause data loss. + // See http://propel.phpdb.org/trac/ticket/509 + // \$obj1->hydrate(\$row, 0, true); // rehydrate + } else {"; + if ($table->getChildrenColumn()) { + $script .= " + \$omClass = ".$this->getPeerClassname()."::getOMClass(\$row, 0); + \$cls = substr('.'.\$omClass, strrpos('.'.\$omClass, '.') + 1); +"; + } else { + $script .= " + \$cls = ".$this->getPeerClassname()."::getOMClass(false); +"; + } + + $script .= " + " . $this->buildObjectInstanceCreationCode('$obj1', '$cls') . " + \$obj1->hydrate(\$row); + ".$this->getPeerClassname()."::addInstanceToPool(\$obj1, \$key1); + } // if obj1 already loaded +"; + + $index = 1; + foreach ($table->getForeignKeys() as $subfk ) { + // want to cover this case, but the code is not there yet. + if ( $subfk->getForeignTableName() != $table->getName() ) { + + $joinTable = $table->getDatabase()->getTable($subfk->getForeignTableName()); + + $joinedTableObjectBuilder = $this->getNewObjectBuilder($joinTable); + $joinedTablePeerBuilder = $this->getNewPeerBuilder($joinTable); + + $joinClassName = $joinedTableObjectBuilder->getObjectClassname(); + + $interfaceName = $joinClassName; + if ($joinTable->getInterface()) { + $interfaceName = $this->prefixClassname($joinTable->getInterface()); + } + + if ($joinClassName != $excludedClassName) { + + $index++; + + $script .= " + // Add objects for joined $joinClassName rows + + \$key$index = ".$joinedTablePeerBuilder->getPeerClassname()."::getPrimaryKeyHashFromRow(\$row, \$startcol$index); + if (\$key$index !== null) { + \$obj$index = ".$joinedTablePeerBuilder->getPeerClassname()."::getInstanceFromPool(\$key$index); + if (!\$obj$index) { + "; + + if ($joinTable->getChildrenColumn()) { + $script .= " + \$omClass = ".$joinedTablePeerBuilder->getPeerClassname()."::getOMClass(\$row, \$startcol$index); + \$cls = substr('.'.\$omClass, strrpos('.'.\$omClass, '.') + 1); +"; + } else { + $script .= " + \$cls = ".$joinedTablePeerBuilder->getPeerClassname()."::getOMClass(false); +"; + } /* $joinTable->getChildrenColumn() */ + $script .= " + " . $this->buildObjectInstanceCreationCode('$obj' . $index, '$cls') . " + \$obj".$index."->hydrate(\$row, \$startcol$index); + ".$joinedTablePeerBuilder->getPeerClassname()."::addInstanceToPool(\$obj$index, \$key$index); + } // if \$obj$index already loaded + + // Add the \$obj1 (".$this->getObjectClassname().") to the collection in \$obj".$index." (".$joinedTablePeerBuilder->getObjectClassname().")"; + if ($subfk->isLocalPrimaryKey()) { + $script .= " + \$obj1->set".$joinedTablePeerBuilder->getObjectClassname()."(\$obj".$index.");"; + } else { + $script .= " + \$obj".$index."->add".$joinedTableObjectBuilder->getRefFKPhpNameAffix($subfk, $plural = false)."(\$obj1);"; + } + $script .= " + + } // if joined row is not null +"; + } // if ($joinClassName != $excludedClassName) { + } // $subfk->getForeignTableName() != $table->getName() + } // foreach + $script .= " + \$results[] = \$obj1; + } + \$stmt->closeCursor(); + return \$results; + } +"; + } // foreach fk + + } // addDoSelectJoinAllExcept + + /** + * Adds the doCountJoinAllExcept*() methods. + * @param string &$script The script will be modified in this method. + */ + protected function addDoCountJoinAllExcept(&$script) + { + $table = $this->getTable(); + $join_behavior = $this->getJoinBehavior(); + + $fkeys = $table->getForeignKeys(); // this sep assignment is necessary otherwise sub-loops over + // getForeignKeys() will cause this to only execute one time. + foreach ($fkeys as $fk ) { + + $tblFK = $table->getDatabase()->getTable($fk->getForeignTableName()); + + $excludedTable = $table->getDatabase()->getTable($fk->getForeignTableName()); + + $thisTableObjectBuilder = $this->getNewObjectBuilder($table); + $excludedTableObjectBuilder = $this->getNewObjectBuilder($excludedTable); + $excludedTablePeerBuilder = $this->getNewPeerBuilder($excludedTable); + + $excludedClassName = $excludedTableObjectBuilder->getObjectClassname(); + + $script .= " + + /** + * Returns the number of rows matching criteria, joining the related ".$thisTableObjectBuilder->getFKPhpNameAffix($fk, $plural = false)." table + * + * @param Criteria \$criteria + * @param boolean \$distinct Whether to select only distinct columns; deprecated: use Criteria->setDistinct() instead. + * @param PropelPDO \$con + * @param String \$join_behavior the type of joins to use, defaults to $join_behavior + * @return int Number of matching rows. + */ + public static function doCountJoinAllExcept".$thisTableObjectBuilder->getFKPhpNameAffix($fk, $plural = false)."(Criteria \$criteria, \$distinct = false, PropelPDO \$con = null, \$join_behavior = $join_behavior) + { + // we're going to modify criteria, so copy it first + \$criteria = clone \$criteria; + + // We need to set the primary table name, since in the case that there are no WHERE columns + // it will be impossible for the BasePeer::createSelectSql() method to determine which + // tables go into the FROM clause. + \$criteria->setPrimaryTableName(".$this->getPeerClassname()."::TABLE_NAME); + + if (\$distinct && !in_array(Criteria::DISTINCT, \$criteria->getSelectModifiers())) { + \$criteria->setDistinct(); + } + + if (!\$criteria->hasSelectClause()) { + ".$this->getPeerClassname()."::addSelectColumns(\$criteria); + } + + \$criteria->clearOrderByColumns(); // ORDER BY should not affect count + + // Set the correct dbName + \$criteria->setDbName(self::DATABASE_NAME); + + if (\$con === null) { + \$con = Propel::getConnection(".$this->getPeerClassname()."::DATABASE_NAME, Propel::CONNECTION_READ); + } + "; + + foreach ($table->getForeignKeys() as $subfk) { + // want to cover this case, but the code is not there yet. + if ( $subfk->getForeignTableName() != $table->getName() ) { + $joinTable = $table->getDatabase()->getTable($subfk->getForeignTableName()); + $joinedTablePeerBuilder = $this->getNewPeerBuilder($joinTable); + $joinClassName = $joinedTablePeerBuilder->getObjectClassname(); + + if ($joinClassName != $excludedClassName) + { + $script .= $this->addCriteriaJoin($subfk, $table, $joinTable, $joinedTablePeerBuilder); + } + } + } // foreach fkeys + + // apply behaviors + $this->applyBehaviorModifier('preSelect', $script); + + $script .= " + \$stmt = ".$this->basePeerClassname."::doCount(\$criteria, \$con); + + if (\$row = \$stmt->fetch(PDO::FETCH_NUM)) { + \$count = (int) \$row[0]; + } else { + \$count = 0; // no rows returned; we infer that means 0 matches. + } + \$stmt->closeCursor(); + return \$count; + } +"; + } // foreach fk + + } // addDoCountJoinAllExcept + + /** + * returns the desired join behavior as set in the build properties + * see trac ticket #588, #491 + * + */ + protected function getJoinBehavior() + { + return $this->getGeneratorConfig()->getBuildProperty('useLeftJoinsInDoJoinMethods') ? 'Criteria::LEFT_JOIN' : 'Criteria::INNER_JOIN'; + } + +} // PHP5PeerBuilder diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5TableMapBuilder.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5TableMapBuilder.php new file mode 100644 index 0000000..a31d099 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/om/php5/PHP5TableMapBuilder.php @@ -0,0 +1,340 @@ +. + */ + +require_once 'propel/engine/builder/om/OMBuilder.php'; + +/** + * Generates the PHP5 table map class for user object model (OM). + * + * @author Hans Lellelid + * @package propel.engine.builder.om.php5 + */ +class PHP5TableMapBuilder extends OMBuilder { + + /** + * Gets the package for the map builder classes. + * @return string + */ + public function getPackage() + { + return parent::getPackage() . '.map'; + } + + /** + * Returns the name of the current class being built. + * @return string + */ + public function getUnprefixedClassname() + { + return $this->getTable()->getPhpName() . 'TableMap'; + } + + /** + * Adds the include() statements for files that this class depends on or utilizes. + * @param string &$script The script will be modified in this method. + */ + protected function addIncludes(&$script) + { + } // addIncludes() + + /** + * Adds class phpdoc comment and openning of class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassOpen(&$script) + { + $table = $this->getTable(); + $script .= " + +/** + * This class defines the structure of the '".$table->getName()."' table. + * + *"; + if ($this->getBuildProperty('addTimeStamp')) { + $now = strftime('%c'); + $script .= " + * This class was autogenerated by Propel " . $this->getBuildProperty('version') . " on: + * + * $now + *"; + } + $script .= " + * + * This map class is used by Propel to do runtime db structure discovery. + * For example, the createSelectSql() method checks the type of a given column used in an + * ORDER BY clause to know whether it needs to apply SQL to make the ORDER BY case-insensitive + * (i.e. if it's a text column type). + * + * @package ".$this->getPackage()." + */ +class ".$this->getClassname()." extends TableMap { +"; + } + + /** + * Specifies the methods that are added as part of the map builder class. + * This can be overridden by subclasses that wish to add more methods. + * @see ObjectBuilder::addClassBody() + */ + protected function addClassBody(&$script) + { + $this->addConstants($script); + $this->addAttributes($script); + $this->addInitialize($script); + $this->addBuildRelations($script); + $this->addGetBehaviors($script); + } + + /** + * Adds any constants needed for this TableMap class. + * @param string &$script The script will be modified in this method. + */ + protected function addConstants(&$script) + { + $script .= " + /** + * The (dot-path) name of this class + */ + const CLASS_NAME = '".$this->getClasspath()."'; +"; + } + + /** + * Adds any attributes needed for this TableMap class. + * @param string &$script The script will be modified in this method. + */ + protected function addAttributes(&$script) + { + } + + /** + * Closes class. + * @param string &$script The script will be modified in this method. + */ + protected function addClassClose(&$script) + { + $script .= " +} // " . $this->getClassname() . " +"; + $this->applyBehaviorModifier('tableMapFilter', $script, ""); + } + + /** + * Adds the addInitialize() method to the table map class. + * @param string &$script The script will be modified in this method. + */ + protected function addInitialize(&$script) + { + + $table = $this->getTable(); + $platform = $this->getPlatform(); + $ddlBuilder = $this->getDDLBuilder(); + + $script .= " + /** + * Initialize the table attributes, columns and validators + * Relations are not initialized by this method since they are lazy loaded + * + * @return void + * @throws PropelException + */ + public function initialize() + { + // attributes + \$this->setName('".$table->getName()."'); + \$this->setPhpName('".$table->getPhpName()."'); + \$this->setClassname('" . $this->getObjectClassname() . "'); + \$this->setPackage('" . parent::getPackage() . "');"; + if ($table->getIdMethod() == "native") { + $script .= " + \$this->setUseIdGenerator(true);"; + } else { + $script .= " + \$this->setUseIdGenerator(false);"; + } + + if ($table->getIdMethodParameters()) { + $params = $table->getIdMethodParameters(); + $imp = $params[0]; + $script .= " + \$this->setPrimaryKeyMethodInfo('".$imp->getValue()."');"; + } elseif ($table->getIdMethod() == IDMethod::NATIVE && ($platform->getNativeIdMethod() == Platform::SEQUENCE || $platform->getNativeIdMethod() == Platform::SERIAL)) { + $script .= " + \$this->setPrimaryKeyMethodInfo('".$this->prefixTablename($ddlBuilder->getSequenceName())."');"; + } + + // Add columns to map + $script .= " + // columns"; + foreach ($table->getColumns() as $col) { + $cup=strtoupper($col->getName()); + $cfc=$col->getPhpName(); + if (!$col->getSize()) { + $size = "null"; + } else { + $size = $col->getSize(); + } + $default = $col->getDefaultValueString(); + if ($col->isPrimaryKey()) { + if ($col->isForeignKey()) { + foreach ($col->getForeignKeys() as $fk) { + $script .= " + \$this->addForeignPrimaryKey('$cup', '$cfc', '".$col->getType()."' , '".$fk->getForeignTableName()."', '".strtoupper($fk->getMappedForeignColumn($col->getName()))."', ".($col->isNotNull() ? 'true' : 'false').", ".$size.", $default);"; + } + } else { + $script .= " + \$this->addPrimaryKey('$cup', '$cfc', '".$col->getType()."', ".var_export($col->isNotNull(), true).", ".$size.", $default);"; + } + } else { + if ($col->isForeignKey()) { + foreach ($col->getForeignKeys() as $fk) { + $script .= " + \$this->addForeignKey('$cup', '$cfc', '".$col->getType()."', '".$fk->getForeignTableName()."', '".strtoupper($fk->getMappedForeignColumn($col->getName()))."', ".($col->isNotNull() ? 'true' : 'false').", ".$size.", $default);"; + } + } else { + $script .= " + \$this->addColumn('$cup', '$cfc', '".$col->getType()."', ".var_export($col->isNotNull(), true).", ".$size.", $default);"; + } + } // if col-is prim key + } // foreach + + // validators + $script .= " + // validators"; + foreach ($table->getValidators() as $val) { + $col = $val->getColumn(); + $cup = strtoupper($col->getName()); + foreach ($val->getRules() as $rule) { + if ($val->getTranslate() !== Validator::TRANSLATE_NONE) { + $script .= " + \$this->addValidator('$cup', '".$rule->getName()."', '".$rule->getClass()."', '".str_replace("'", "\'", $rule->getValue())."', ".$val->getTranslate()."('".str_replace("'", "\'", $rule->getMessage())."'));"; + } else { + $script .= " + \$this->addValidator('$cup', '".$rule->getName()."', '".$rule->getClass()."', '".str_replace("'", "\'", $rule->getValue())."', '".str_replace("'", "\'", $rule->getMessage())."');"; + } // if ($rule->getTranslation() ... + } // foreach rule + } // foreach validator + + $script .= " + } // initialize() +"; + + } + + /** + * Adds the method that build the RelationMap objects + * @param string &$script The script will be modified in this method. + */ + protected function addBuildRelations(&$script) + { + $script .= " + /** + * Build the RelationMap objects for this table relationships + */ + public function buildRelations() + {"; + foreach ($this->getTable()->getForeignKeys() as $fkey) + { + $columnMapping = 'array('; + foreach ($fkey->getLocalForeignMapping() as $key => $value) + { + $columnMapping .= "'$key' => '$value', "; + } + $columnMapping .= ')'; + $onDelete = $fkey->hasOnDelete() ? "'" . $fkey->getOnDelete() . "'" : 'null'; + $onUpdate = $fkey->hasOnUpdate() ? "'" . $fkey->getOnUpdate() . "'" : 'null'; + $script .= " + \$this->addRelation('" . $this->getFKPhpNameAffix($fkey) . "', '" . $fkey->getForeignTable()->getPhpName() . "', RelationMap::MANY_TO_ONE, $columnMapping, $onDelete, $onUpdate);"; + } + foreach ($this->getTable()->getReferrers() as $fkey) + { + $columnMapping = 'array('; + foreach ($fkey->getForeignLocalMapping() as $key => $value) + { + $columnMapping .= "'$key' => '$value', "; + } + $columnMapping .= ')'; + $onDelete = $fkey->hasOnDelete() ? "'" . $fkey->getOnDelete() . "'" : 'null'; + $onUpdate = $fkey->hasOnUpdate() ? "'" . $fkey->getOnUpdate() . "'" : 'null'; + $script .= " + \$this->addRelation('" . $this->getRefFKPhpNameAffix($fkey) . "', '" . $fkey->getTable()->getPhpName() . "', RelationMap::ONE_TO_" . ($fkey->isLocalPrimaryKey() ? "ONE" : "MANY") .", $columnMapping, $onDelete, $onUpdate);"; + } + $script .= " + } // buildRelations() +"; + } + + /** + * Adds the behaviors getter + * @param string &$script The script will be modified in this method. + */ + protected function addGetBehaviors(&$script) + { + if ($behaviors = $this->getTable()->getBehaviors()) + { + $script .= " + /** + * + * Gets the list of behaviors registered for this table + * + * @return array Associative array (name => parameters) of behaviors + */ + public function getBehaviors() + { + return array("; + foreach ($behaviors as $behavior) + { + $script .= " + '{$behavior->getName()}' => array("; + foreach ($behavior->getParameters() as $key => $value) + { + $script .= "'$key' => '$value', "; + } + $script .= "),"; + } + $script .= " + ); + } // getBehaviors() +"; + } + } + + /** + * Checks whether any registered behavior on that table has a modifier for a hook + * @param string $hookName The name of the hook as called from one of this class methods, e.g. "preSave" + * @return boolean + */ + public function hasBehaviorModifier($hookName) + { + return parent::hasBehaviorModifier($hookName, 'TableMapBuilderModifier'); + } + + /** + * Checks whether any registered behavior on that table has a modifier for a hook + * @param string $hookName The name of the hook as called from one of this class methods, e.g. "preSave" + * @param string &$script The script will be modified in this method. + */ + public function applyBehaviorModifier($hookName, &$script, $tab = " ") + { + return parent::applyBehaviorModifier($hookName, 'TableMapBuilderModifier', $script, $tab); + } +} // PHP5TableMapBuilder diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/.svn/all-wcprops new file mode 100644 index 0000000..acc872f --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 69 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/builder/sql +END +DDLBuilder.php +K 25 +svn:wc:ra_dav:version-url +V 84 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/builder/sql/DDLBuilder.php +END +DataSQLBuilder.php +K 25 +svn:wc:ra_dav:version-url +V 88 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/builder/sql/DataSQLBuilder.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/.svn/entries new file mode 100644 index 0000000..9414dd0 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/.svn/entries @@ -0,0 +1,111 @@ +10 + +dir +2332 +http://propel.mirror.svn.symfony-project.com/tags/1.4.2/generator/classes/propel/engine/builder/sql +http://propel.mirror.svn.symfony-project.com + + + +2010-04-19T21:59:18.421712Z +1690 +francois + + + + + + + + + + + + + + +a84bc4f6-26e8-416f-aa96-3cde13879fbb + +mssql +dir + +DDLBuilder.php +file + + + + +2012-05-10T18:42:15.929551Z +656097ef37a2eaee77f11b711fccdb0c +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +5587 + +sqlite +dir + +mysql +dir + +oracle +dir + +pgsql +dir + +DataSQLBuilder.php +file + + + + +2012-05-10T18:42:15.929551Z +8966b9e4ab5ec47dc37e84d1c9c8413f +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +6594 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/.svn/prop-base/DDLBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/.svn/prop-base/DDLBuilder.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/.svn/prop-base/DDLBuilder.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/.svn/prop-base/DataSQLBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/.svn/prop-base/DataSQLBuilder.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/.svn/prop-base/DataSQLBuilder.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/.svn/text-base/DDLBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/.svn/text-base/DDLBuilder.php.svn-base new file mode 100644 index 0000000..cb79f2a --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/.svn/text-base/DDLBuilder.php.svn-base @@ -0,0 +1,177 @@ +. + */ + +require_once 'propel/engine/builder/DataModelBuilder.php'; + +/** + * Baseclass for SQL DDL-building classes. + * + * DDL-building classes are those that build all the SQL DDL for a single table. + * + * @author Hans Lellelid + * @package propel.engine.builder.sql + */ +abstract class DDLBuilder extends DataModelBuilder { + + /** + * Builds the SQL for current table and returns it as a string. + * + * This is the main entry point and defines a basic structure that classes should follow. + * In most cases this method will not need to be overridden by subclasses. + * + * @return string The resulting SQL DDL. + */ + public function build() + { + $script = ""; + $this->addTable($script); + $this->addIndices($script); + $this->addForeignKeys($script); + return $script; + } + + /** + * Gets the name to use for creating a sequence for the current table. + * + * This will create a new name or use one specified in an id-method-parameter + * tag, if specified. + * + * @return string Sequence name for this table. + */ + public function getSequenceName() + { + $table = $this->getTable(); + static $longNamesMap = array(); + $result = null; + if ($table->getIdMethod() == IDMethod::NATIVE) { + $idMethodParams = $table->getIdMethodParameters(); + $maxIdentifierLength = $table->getDatabase()->getPlatform()->getMaxColumnNameLength(); + if (empty($idMethodParams)) { + if (strlen($table->getName() . "_SEQ") > $maxIdentifierLength) { + if (!isset($longNamesMap[$table->getName()])) { + $longNamesMap[$table->getName()] = strval(count($longNamesMap) + 1); + } + $result = substr($table->getName(), 0, $maxIdentifierLength - strlen("_SEQ_" . $longNamesMap[$table->getName()])) . "_SEQ_" . $longNamesMap[$table->getName()]; + } + else { + $result = substr($table->getName(), 0, $maxIdentifierLength -4) . "_SEQ"; + } + } else { + $result = substr($idMethodParams[0]->getValue(), 0, $maxIdentifierLength); + } + } + return $result; + } + + /** + * Builds the DDL SQL for a Column object. + * @return string + */ + public function getColumnDDL(Column $col) + { + $platform = $this->getPlatform(); + $domain = $col->getDomain(); + + $sb = ""; + $sb .= $this->quoteIdentifier($col->getName()) . " "; + $sb .= $domain->getSqlType(); + if ($platform->hasSize($domain->getSqlType())) { + $sb .= $domain->printSize(); + } + $sb .= " "; + $sb .= $col->getDefaultSetting() . " "; + $sb .= $col->getNotNullString() . " "; + $sb .= $col->getAutoIncrementString(); + + return trim($sb); + } + + /** + * Creates a delimiter-delimited string list of column names, quoted using quoteIdentifier(). + * @param array Column[] or string[] + * @param string $delim The delimiter to use in separating the column names. + * @return string + */ + public function getColumnList($columns, $delim=',') + { + $list = array(); + foreach ($columns as $col) { + if ($col instanceof Column) { + $col = $col->getName(); + } + $list[] = $this->quoteIdentifier($col); + } + return implode($delim, $list); + } + + /** + * This function adds any _database_ start/initialization SQL. + * This is designed to be called for a database, not a specific table, hence it is static. + * @return string The DDL is returned as astring. + */ + public static function getDatabaseStartDDL() + { + return ''; + } + + /** + * This function adds any _database_ end/cleanup SQL. + * This is designed to be called for a database, not a specific table, hence it is static. + * @return string The DDL is returned as astring. + */ + public static function getDatabaseEndDDL() + { + return ''; + } + + /** + * Resets any static variables between building a SQL file for a database. + * + * Theoretically, Propel could build multiple .sql files for multiple databases; in + * many cases we don't want static values to persist between these. This method provides + * a way to clear out static values between iterations, if the subclasses choose to implement + * it. + */ + public static function reset() + { + // nothing by default + } + + /** + * Adds table definition. + * @param string &$script The script will be modified in this method. + */ + abstract protected function addTable(&$script); + + /** + * Adds index definitions. + * @param string &$script The script will be modified in this method. + */ + abstract protected function addIndices(&$script); + + /** + * Adds foreign key constraint definitions. + * @param string &$script The script will be modified in this method. + */ + abstract protected function addForeignKeys(&$script); + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/.svn/text-base/DataSQLBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/.svn/text-base/DataSQLBuilder.php.svn-base new file mode 100644 index 0000000..2f927fc --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/.svn/text-base/DataSQLBuilder.php.svn-base @@ -0,0 +1,264 @@ +. + */ + +require_once 'propel/engine/builder/DataModelBuilder.php'; +require_once 'propel/engine/database/model/PropelTypes.php'; + +/** + * Baseclass for SQL data dump SQL building classes. + * + * @author Hans Lellelid + * @package propel.engine.builder.sql + */ +abstract class DataSQLBuilder extends DataModelBuilder { + + /** + * Perform any reset between runs of this builder. + * + * This can be used, for example, to clear any stored start/end SQL. + */ + public static function reset() + { + // does nothing by default + } + + /** + * Gets any SQL to place at the start of all the row inserts. + * + * @return string + */ + public static function getDatabaseStartSql() + { + return ''; + } + + /** + * Gets any SQL to place at the end of all the row inserts. + * + * @return string + */ + public static function getDatabaseEndSql() + { + return ''; + } + + /** + * Gets any SQL to place before row inserts for a new table. + * + * @return string + */ + public function getTableStartSql() + { + return ''; + } + + /** + * Gets any SQL to place at the end of row inserts for a table. + * + * @return string + */ + public function getTableEndSql() + { + return ''; + } + + /** + * The main method in this class, returns the SQL for INSERTing data into a row. + * @param DataRow $row The row to process. + * @return string + */ + public function buildRowSql(DataRow $row) + { + $sql = ""; + $platform = $this->getPlatform(); + $table = $this->getTable(); + + $sql .= "INSERT INTO ".$this->quoteIdentifier($this->prefixTablename($this->getTable()->getName()))." ("; + + // add column names to SQL + $colNames = array(); + foreach ($row->getColumnValues() as $colValue) { + $colNames[] = $this->quoteIdentifier($colValue->getColumn()->getName()); + } + + $sql .= implode(',', $colNames); + + $sql .= ") VALUES ("; + + $colVals = array(); + foreach ($row->getColumnValues() as $colValue) { + $colVals[] = $this->getColumnValueSql($colValue); + } + + $sql .= implode(',', $colVals); + $sql .= "); +"; + + return $sql; + } + + /** + * Gets the propertly escaped (and quoted) value for a column. + * @param ColumnValue $colValue + * @return mixed The proper value to be added to the string. + */ + protected function getColumnValueSql(ColumnValue $colValue) + { + $column = $colValue->getColumn(); + $method = 'get' . $column->getPhpNative() . 'Sql'; + return $this->$method($colValue->getValue()); + } + + + + /** + * Gets a representation of a binary value suitable for use in a SQL statement. + * Default behavior is true = 1, false = 0. + * @param boolean $value + * @return int + */ + protected function getBooleanSql($value) + { + return (int) $value; + } + + + /** + * Gets a representation of a BLOB/LONGVARBINARY value suitable for use in a SQL statement. + * @param mixed $blob Blob object or string data. + * @return string + */ + protected function getBlobSql($blob) + { + // they took magic __toString() out of PHP5.0.0; this sucks + if (is_object($blob)) { + return $this->getPlatform()->quote($blob->__toString()); + } else { + return $this->getPlatform()->quote($blob); + } + } + + /** + * Gets a representation of a CLOB/LONGVARCHAR value suitable for use in a SQL statement. + * @param mixed $clob Clob object or string data. + * @return string + */ + protected function getClobSql($clob) + { + // they took magic __toString() out of PHP5.0.0; this sucks + if (is_object($clob)) { + return $this->getPlatform()->quote($clob->__toString()); + } else { + return $this->getPlatform()->quote($clob); + } + } + + /** + * Gets a representation of a date value suitable for use in a SQL statement. + * @param string $value + * @return string + */ + protected function getDateSql($value) + { + return "'" . date('Y-m-d', strtotime($value)) . "'"; + } + + /** + * Gets a representation of a decimal value suitable for use in a SQL statement. + * @param double $value + * @return float + */ + protected function getDecimalSql($value) + { + return (float) $value; + } + + /** + * Gets a representation of a double value suitable for use in a SQL statement. + * @param double $value + * @return double + */ + protected function getDoubleSql($value) + { + return (double) $value; + } + + /** + * Gets a representation of a float value suitable for use in a SQL statement. + * @param float $value + * @return float + */ + protected function getFloatSql($value) + { + return (float) $value; + } + + /** + * Gets a representation of an integer value suitable for use in a SQL statement. + * @param int $value + * @return int + */ + protected function getIntSql($value) + { + return (int) $value; + } + + /** + * Gets a representation of a NULL value suitable for use in a SQL statement. + * @return null + */ + protected function getNullSql() + { + return 'NULL'; + } + + /** + * Gets a representation of a string value suitable for use in a SQL statement. + * @param string $value + * @return string + */ + protected function getStringSql($value) + { + return $this->getPlatform()->quote($value); + } + + /** + * Gets a representation of a time value suitable for use in a SQL statement. + * @param string $value + * @return string + */ + protected function getTimeSql($paramIndex, $value) + { + return "'" . date('H:i:s', strtotime($value)) . "'"; + } + + /** + * Gets a representation of a timestamp value suitable for use in a SQL statement. + * @param string $value + * @return string + */ + function getTimestampSql($value) + { + return "'" . date('Y-m-d H:i:s', strtotime($value)) . "'"; + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/DDLBuilder.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/DDLBuilder.php new file mode 100644 index 0000000..74cc163 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/DDLBuilder.php @@ -0,0 +1,177 @@ +. + */ + +require_once 'propel/engine/builder/DataModelBuilder.php'; + +/** + * Baseclass for SQL DDL-building classes. + * + * DDL-building classes are those that build all the SQL DDL for a single table. + * + * @author Hans Lellelid + * @package propel.engine.builder.sql + */ +abstract class DDLBuilder extends DataModelBuilder { + + /** + * Builds the SQL for current table and returns it as a string. + * + * This is the main entry point and defines a basic structure that classes should follow. + * In most cases this method will not need to be overridden by subclasses. + * + * @return string The resulting SQL DDL. + */ + public function build() + { + $script = ""; + $this->addTable($script); + $this->addIndices($script); + $this->addForeignKeys($script); + return $script; + } + + /** + * Gets the name to use for creating a sequence for the current table. + * + * This will create a new name or use one specified in an id-method-parameter + * tag, if specified. + * + * @return string Sequence name for this table. + */ + public function getSequenceName() + { + $table = $this->getTable(); + static $longNamesMap = array(); + $result = null; + if ($table->getIdMethod() == IDMethod::NATIVE) { + $idMethodParams = $table->getIdMethodParameters(); + $maxIdentifierLength = $table->getDatabase()->getPlatform()->getMaxColumnNameLength(); + if (empty($idMethodParams)) { + if (strlen($table->getName() . "_SEQ") > $maxIdentifierLength) { + if (!isset($longNamesMap[$table->getName()])) { + $longNamesMap[$table->getName()] = strval(count($longNamesMap) + 1); + } + $result = substr($table->getName(), 0, $maxIdentifierLength - strlen("_SEQ_" . $longNamesMap[$table->getName()])) . "_SEQ_" . $longNamesMap[$table->getName()]; + } + else { + $result = substr($table->getName(), 0, $maxIdentifierLength -4) . "_SEQ"; + } + } else { + $result = substr($idMethodParams[0]->getValue(), 0, $maxIdentifierLength); + } + } + return $result; + } + + /** + * Builds the DDL SQL for a Column object. + * @return string + */ + public function getColumnDDL(Column $col) + { + $platform = $this->getPlatform(); + $domain = $col->getDomain(); + + $sb = ""; + $sb .= $this->quoteIdentifier($col->getName()) . " "; + $sb .= $domain->getSqlType(); + if ($platform->hasSize($domain->getSqlType())) { + $sb .= $domain->printSize(); + } + $sb .= " "; + $sb .= $col->getDefaultSetting() . " "; + $sb .= $col->getNotNullString() . " "; + $sb .= $col->getAutoIncrementString(); + + return trim($sb); + } + + /** + * Creates a delimiter-delimited string list of column names, quoted using quoteIdentifier(). + * @param array Column[] or string[] + * @param string $delim The delimiter to use in separating the column names. + * @return string + */ + public function getColumnList($columns, $delim=',') + { + $list = array(); + foreach ($columns as $col) { + if ($col instanceof Column) { + $col = $col->getName(); + } + $list[] = $this->quoteIdentifier($col); + } + return implode($delim, $list); + } + + /** + * This function adds any _database_ start/initialization SQL. + * This is designed to be called for a database, not a specific table, hence it is static. + * @return string The DDL is returned as astring. + */ + public static function getDatabaseStartDDL() + { + return ''; + } + + /** + * This function adds any _database_ end/cleanup SQL. + * This is designed to be called for a database, not a specific table, hence it is static. + * @return string The DDL is returned as astring. + */ + public static function getDatabaseEndDDL() + { + return ''; + } + + /** + * Resets any static variables between building a SQL file for a database. + * + * Theoretically, Propel could build multiple .sql files for multiple databases; in + * many cases we don't want static values to persist between these. This method provides + * a way to clear out static values between iterations, if the subclasses choose to implement + * it. + */ + public static function reset() + { + // nothing by default + } + + /** + * Adds table definition. + * @param string &$script The script will be modified in this method. + */ + abstract protected function addTable(&$script); + + /** + * Adds index definitions. + * @param string &$script The script will be modified in this method. + */ + abstract protected function addIndices(&$script); + + /** + * Adds foreign key constraint definitions. + * @param string &$script The script will be modified in this method. + */ + abstract protected function addForeignKeys(&$script); + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/DataSQLBuilder.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/DataSQLBuilder.php new file mode 100644 index 0000000..35d9349 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/DataSQLBuilder.php @@ -0,0 +1,264 @@ +. + */ + +require_once 'propel/engine/builder/DataModelBuilder.php'; +require_once 'propel/engine/database/model/PropelTypes.php'; + +/** + * Baseclass for SQL data dump SQL building classes. + * + * @author Hans Lellelid + * @package propel.engine.builder.sql + */ +abstract class DataSQLBuilder extends DataModelBuilder { + + /** + * Perform any reset between runs of this builder. + * + * This can be used, for example, to clear any stored start/end SQL. + */ + public static function reset() + { + // does nothing by default + } + + /** + * Gets any SQL to place at the start of all the row inserts. + * + * @return string + */ + public static function getDatabaseStartSql() + { + return ''; + } + + /** + * Gets any SQL to place at the end of all the row inserts. + * + * @return string + */ + public static function getDatabaseEndSql() + { + return ''; + } + + /** + * Gets any SQL to place before row inserts for a new table. + * + * @return string + */ + public function getTableStartSql() + { + return ''; + } + + /** + * Gets any SQL to place at the end of row inserts for a table. + * + * @return string + */ + public function getTableEndSql() + { + return ''; + } + + /** + * The main method in this class, returns the SQL for INSERTing data into a row. + * @param DataRow $row The row to process. + * @return string + */ + public function buildRowSql(DataRow $row) + { + $sql = ""; + $platform = $this->getPlatform(); + $table = $this->getTable(); + + $sql .= "INSERT INTO ".$this->quoteIdentifier($this->prefixTablename($this->getTable()->getName()))." ("; + + // add column names to SQL + $colNames = array(); + foreach ($row->getColumnValues() as $colValue) { + $colNames[] = $this->quoteIdentifier($colValue->getColumn()->getName()); + } + + $sql .= implode(',', $colNames); + + $sql .= ") VALUES ("; + + $colVals = array(); + foreach ($row->getColumnValues() as $colValue) { + $colVals[] = $this->getColumnValueSql($colValue); + } + + $sql .= implode(',', $colVals); + $sql .= "); +"; + + return $sql; + } + + /** + * Gets the propertly escaped (and quoted) value for a column. + * @param ColumnValue $colValue + * @return mixed The proper value to be added to the string. + */ + protected function getColumnValueSql(ColumnValue $colValue) + { + $column = $colValue->getColumn(); + $method = 'get' . $column->getPhpNative() . 'Sql'; + return $this->$method($colValue->getValue()); + } + + + + /** + * Gets a representation of a binary value suitable for use in a SQL statement. + * Default behavior is true = 1, false = 0. + * @param boolean $value + * @return int + */ + protected function getBooleanSql($value) + { + return (int) $value; + } + + + /** + * Gets a representation of a BLOB/LONGVARBINARY value suitable for use in a SQL statement. + * @param mixed $blob Blob object or string data. + * @return string + */ + protected function getBlobSql($blob) + { + // they took magic __toString() out of PHP5.0.0; this sucks + if (is_object($blob)) { + return $this->getPlatform()->quote($blob->__toString()); + } else { + return $this->getPlatform()->quote($blob); + } + } + + /** + * Gets a representation of a CLOB/LONGVARCHAR value suitable for use in a SQL statement. + * @param mixed $clob Clob object or string data. + * @return string + */ + protected function getClobSql($clob) + { + // they took magic __toString() out of PHP5.0.0; this sucks + if (is_object($clob)) { + return $this->getPlatform()->quote($clob->__toString()); + } else { + return $this->getPlatform()->quote($clob); + } + } + + /** + * Gets a representation of a date value suitable for use in a SQL statement. + * @param string $value + * @return string + */ + protected function getDateSql($value) + { + return "'" . date('Y-m-d', strtotime($value)) . "'"; + } + + /** + * Gets a representation of a decimal value suitable for use in a SQL statement. + * @param double $value + * @return float + */ + protected function getDecimalSql($value) + { + return (float) $value; + } + + /** + * Gets a representation of a double value suitable for use in a SQL statement. + * @param double $value + * @return double + */ + protected function getDoubleSql($value) + { + return (double) $value; + } + + /** + * Gets a representation of a float value suitable for use in a SQL statement. + * @param float $value + * @return float + */ + protected function getFloatSql($value) + { + return (float) $value; + } + + /** + * Gets a representation of an integer value suitable for use in a SQL statement. + * @param int $value + * @return int + */ + protected function getIntSql($value) + { + return (int) $value; + } + + /** + * Gets a representation of a NULL value suitable for use in a SQL statement. + * @return null + */ + protected function getNullSql() + { + return 'NULL'; + } + + /** + * Gets a representation of a string value suitable for use in a SQL statement. + * @param string $value + * @return string + */ + protected function getStringSql($value) + { + return $this->getPlatform()->quote($value); + } + + /** + * Gets a representation of a time value suitable for use in a SQL statement. + * @param string $value + * @return string + */ + protected function getTimeSql($paramIndex, $value) + { + return "'" . date('H:i:s', strtotime($value)) . "'"; + } + + /** + * Gets a representation of a timestamp value suitable for use in a SQL statement. + * @param string $value + * @return string + */ + function getTimestampSql($value) + { + return "'" . date('Y-m-d H:i:s', strtotime($value)) . "'"; + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mssql/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mssql/.svn/all-wcprops new file mode 100644 index 0000000..676a5a2 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mssql/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 75 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/builder/sql/mssql +END +MssqlDDLBuilder.php +K 25 +svn:wc:ra_dav:version-url +V 95 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/builder/sql/mssql/MssqlDDLBuilder.php +END +MssqlDataSQLBuilder.php +K 25 +svn:wc:ra_dav:version-url +V 99 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/builder/sql/mssql/MssqlDataSQLBuilder.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mssql/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mssql/.svn/entries new file mode 100644 index 0000000..6e17567 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mssql/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +2332 +http://propel.mirror.svn.symfony-project.com/tags/1.4.2/generator/classes/propel/engine/builder/sql/mssql +http://propel.mirror.svn.symfony-project.com + + + +2009-10-26T20:54:39.333354Z +1262 +francois + + + + + + + + + + + + + + +a84bc4f6-26e8-416f-aa96-3cde13879fbb + +MssqlDDLBuilder.php +file + + + + +2012-05-10T18:42:15.561551Z +18f0350743a9ab84ef2eb3389c34e977 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +5918 + +MssqlDataSQLBuilder.php +file + + + + +2012-05-10T18:42:15.561551Z +ef0a7e8682538b6c896b8b3166e1832b +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +1685 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mssql/.svn/prop-base/MssqlDDLBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mssql/.svn/prop-base/MssqlDDLBuilder.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mssql/.svn/prop-base/MssqlDDLBuilder.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mssql/.svn/prop-base/MssqlDataSQLBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mssql/.svn/prop-base/MssqlDataSQLBuilder.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mssql/.svn/prop-base/MssqlDataSQLBuilder.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mssql/.svn/text-base/MssqlDDLBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mssql/.svn/text-base/MssqlDDLBuilder.php.svn-base new file mode 100644 index 0000000..a89a91e --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mssql/.svn/text-base/MssqlDDLBuilder.php.svn-base @@ -0,0 +1,185 @@ +. + */ + +require_once 'propel/engine/builder/sql/DDLBuilder.php'; + +/** + * The SQL DDL-building class for MS SQL Server. + * + * + * @author Hans Lellelid + * @package propel.engine.builder.sql.pgsql + */ +class MssqlDDLBuilder extends DDLBuilder { + + private static $dropCount = 0; + + /** + * + * @see parent::addDropStatement() + */ + protected function addDropStatements(&$script) + { + $table = $this->getTable(); + $platform = $this->getPlatform(); + + foreach ($table->getForeignKeys() as $fk) { + $script .= " +IF EXISTS (SELECT 1 FROM sysobjects WHERE type ='RI' AND name='".$fk->getName()."') + ALTER TABLE ".$this->quoteIdentifier($this->prefixTablename($table->getName()))." DROP CONSTRAINT ".$this->quoteIdentifier($fk->getName())."; +"; + } + + + self::$dropCount++; + + $script .= " +IF EXISTS (SELECT 1 FROM sysobjects WHERE type = 'U' AND name = '".$this->prefixTablename($table->getName())."') +BEGIN + DECLARE @reftable_".self::$dropCount." nvarchar(60), @constraintname_".self::$dropCount." nvarchar(60) + DECLARE refcursor CURSOR FOR + select reftables.name tablename, cons.name constraintname + from sysobjects tables, + sysobjects reftables, + sysobjects cons, + sysreferences ref + where tables.id = ref.rkeyid + and cons.id = ref.constid + and reftables.id = ref.fkeyid + and tables.name = '".$this->prefixTablename($table->getName())."' + OPEN refcursor + FETCH NEXT from refcursor into @reftable_".self::$dropCount.", @constraintname_".self::$dropCount." + while @@FETCH_STATUS = 0 + BEGIN + exec ('alter table '+@reftable_".self::$dropCount."+' drop constraint '+@constraintname_".self::$dropCount.") + FETCH NEXT from refcursor into @reftable_".self::$dropCount.", @constraintname_".self::$dropCount." + END + CLOSE refcursor + DEALLOCATE refcursor + DROP TABLE ".$this->quoteIdentifier($this->prefixTablename($table->getName()))." +END +"; + } + + /** + * @see parent::addColumns() + */ + protected function addTable(&$script) + { + $table = $this->getTable(); + $platform = $this->getPlatform(); + + $script .= " +/* ---------------------------------------------------------------------- */ +/* ".$table->getName()." */ +/* ---------------------------------------------------------------------- */ + +"; + + $this->addDropStatements($script); + + $script .= " + +CREATE TABLE ".$this->quoteIdentifier($this->prefixTablename($table->getName()))." +( + "; + + $lines = array(); + + foreach ($table->getColumns() as $col) { + $lines[] = $this->getColumnDDL($col); + } + + if ($table->hasPrimaryKey()) { + $lines[] = "CONSTRAINT ".$this->quoteIdentifier($table->getName()."_PK") . " PRIMARY KEY (".$this->getColumnList($table->getPrimaryKey()).")"; + } + + foreach ($table->getUnices() as $unique ) { + $lines[] = "UNIQUE (".$this->getColumnList($unique->getColumns()).")"; + } + + $sep = ", + "; + $script .= implode($sep, $lines); + $script .= " +); +"; + } + + /** + * Adds CREATE INDEX statements for this table. + * @see parent::addIndices() + */ + protected function addIndices(&$script) + { + $table = $this->getTable(); + $platform = $this->getPlatform(); + + foreach ($table->getIndices() as $index) { + $script .= " +CREATE "; + if ($index->getIsUnique()) { + $script .= "UNIQUE"; + } + $script .= "INDEX ".$this->quoteIdentifier($index->getName())." ON ".$this->quoteIdentifier($this->prefixTablename($table->getName()))." (".$this->getColumnList($index->getColumns())."); +"; + } + } + + /** + * + * @see parent::addForeignKeys() + */ + protected function addForeignKeys(&$script) + { + $table = $this->getTable(); + $platform = $this->getPlatform(); + + foreach ($table->getForeignKeys() as $fk) { + $script .= " +BEGIN +ALTER TABLE ".$this->quoteIdentifier($this->prefixTablename($table->getName()))." ADD CONSTRAINT ".$this->quoteIdentifier($fk->getName())." FOREIGN KEY (".$this->getColumnList($fk->getLocalColumns()) .") REFERENCES ".$this->quoteIdentifier($this->prefixTablename($fk->getForeignTableName()))." (".$this->getColumnList($fk->getForeignColumns()).")"; + if ($fk->hasOnUpdate()) { + if ($fk->getOnUpdate() == ForeignKey::SETNULL) { // there may be others that also won't work + // we have to skip this because it's unsupported. + $this->warn("MSSQL doesn't support the 'SET NULL' option for ON UPDATE (ignoring for ".$this->getColumnList($fk->getLocalColumns())." fk)."); + } else { + $script .= " ON UPDATE ".$fk->getOnUpdate(); + } + + } + if ($fk->hasOnDelete()) { + if ($fk->getOnDelete() == ForeignKey::SETNULL) { // there may be others that also won't work + // we have to skip this because it's unsupported. + $this->warn("MSSQL doesn't support the 'SET NULL' option for ON DELETE (ignoring for ".$this->getColumnList($fk->getLocalColumns())." fk)."); + } else { + $script .= " ON DELETE ".$fk->getOnDelete(); + } + } + $script .= " +END +; +"; + } + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mssql/.svn/text-base/MssqlDataSQLBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mssql/.svn/text-base/MssqlDataSQLBuilder.php.svn-base new file mode 100644 index 0000000..5eb911d --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mssql/.svn/text-base/MssqlDataSQLBuilder.php.svn-base @@ -0,0 +1,48 @@ +. + */ + +require_once 'propel/engine/builder/sql/DataSQLBuilder.php'; + +/** + * MS SQL Server class for building data dump SQL. + * + * @author Hans Lellelid + * @package propel.engine.builder.sql.mssql + */ +class MssqlDataSQLBuilder extends DataSQLBuilder { + + /** + * + * @param mixed $blob Blob object or string containing data. + * @return string + */ + protected function getBlobSql($blob) + { + // they took magic __toString() out of PHP5.0.0; this sucks + if (is_object($blob)) { + $blob = $blob->__toString(); + } + $data = unpack("H*hex", $blob); + return '0x'.$data['hex']; // no surrounding quotes! + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mssql/MssqlDDLBuilder.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mssql/MssqlDDLBuilder.php new file mode 100644 index 0000000..f3eb8da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mssql/MssqlDDLBuilder.php @@ -0,0 +1,185 @@ +. + */ + +require_once 'propel/engine/builder/sql/DDLBuilder.php'; + +/** + * The SQL DDL-building class for MS SQL Server. + * + * + * @author Hans Lellelid + * @package propel.engine.builder.sql.pgsql + */ +class MssqlDDLBuilder extends DDLBuilder { + + private static $dropCount = 0; + + /** + * + * @see parent::addDropStatement() + */ + protected function addDropStatements(&$script) + { + $table = $this->getTable(); + $platform = $this->getPlatform(); + + foreach ($table->getForeignKeys() as $fk) { + $script .= " +IF EXISTS (SELECT 1 FROM sysobjects WHERE type ='RI' AND name='".$fk->getName()."') + ALTER TABLE ".$this->quoteIdentifier($this->prefixTablename($table->getName()))." DROP CONSTRAINT ".$this->quoteIdentifier($fk->getName())."; +"; + } + + + self::$dropCount++; + + $script .= " +IF EXISTS (SELECT 1 FROM sysobjects WHERE type = 'U' AND name = '".$this->prefixTablename($table->getName())."') +BEGIN + DECLARE @reftable_".self::$dropCount." nvarchar(60), @constraintname_".self::$dropCount." nvarchar(60) + DECLARE refcursor CURSOR FOR + select reftables.name tablename, cons.name constraintname + from sysobjects tables, + sysobjects reftables, + sysobjects cons, + sysreferences ref + where tables.id = ref.rkeyid + and cons.id = ref.constid + and reftables.id = ref.fkeyid + and tables.name = '".$this->prefixTablename($table->getName())."' + OPEN refcursor + FETCH NEXT from refcursor into @reftable_".self::$dropCount.", @constraintname_".self::$dropCount." + while @@FETCH_STATUS = 0 + BEGIN + exec ('alter table '+@reftable_".self::$dropCount."+' drop constraint '+@constraintname_".self::$dropCount.") + FETCH NEXT from refcursor into @reftable_".self::$dropCount.", @constraintname_".self::$dropCount." + END + CLOSE refcursor + DEALLOCATE refcursor + DROP TABLE ".$this->quoteIdentifier($this->prefixTablename($table->getName()))." +END +"; + } + + /** + * @see parent::addColumns() + */ + protected function addTable(&$script) + { + $table = $this->getTable(); + $platform = $this->getPlatform(); + + $script .= " +/* ---------------------------------------------------------------------- */ +/* ".$table->getName()." */ +/* ---------------------------------------------------------------------- */ + +"; + + $this->addDropStatements($script); + + $script .= " + +CREATE TABLE ".$this->quoteIdentifier($this->prefixTablename($table->getName()))." +( + "; + + $lines = array(); + + foreach ($table->getColumns() as $col) { + $lines[] = $this->getColumnDDL($col); + } + + if ($table->hasPrimaryKey()) { + $lines[] = "CONSTRAINT ".$this->quoteIdentifier($table->getName()."_PK") . " PRIMARY KEY (".$this->getColumnList($table->getPrimaryKey()).")"; + } + + foreach ($table->getUnices() as $unique ) { + $lines[] = "UNIQUE (".$this->getColumnList($unique->getColumns()).")"; + } + + $sep = ", + "; + $script .= implode($sep, $lines); + $script .= " +); +"; + } + + /** + * Adds CREATE INDEX statements for this table. + * @see parent::addIndices() + */ + protected function addIndices(&$script) + { + $table = $this->getTable(); + $platform = $this->getPlatform(); + + foreach ($table->getIndices() as $index) { + $script .= " +CREATE "; + if ($index->getIsUnique()) { + $script .= "UNIQUE"; + } + $script .= "INDEX ".$this->quoteIdentifier($index->getName())." ON ".$this->quoteIdentifier($this->prefixTablename($table->getName()))." (".$this->getColumnList($index->getColumns())."); +"; + } + } + + /** + * + * @see parent::addForeignKeys() + */ + protected function addForeignKeys(&$script) + { + $table = $this->getTable(); + $platform = $this->getPlatform(); + + foreach ($table->getForeignKeys() as $fk) { + $script .= " +BEGIN +ALTER TABLE ".$this->quoteIdentifier($this->prefixTablename($table->getName()))." ADD CONSTRAINT ".$this->quoteIdentifier($fk->getName())." FOREIGN KEY (".$this->getColumnList($fk->getLocalColumns()) .") REFERENCES ".$this->quoteIdentifier($this->prefixTablename($fk->getForeignTableName()))." (".$this->getColumnList($fk->getForeignColumns()).")"; + if ($fk->hasOnUpdate()) { + if ($fk->getOnUpdate() == ForeignKey::SETNULL) { // there may be others that also won't work + // we have to skip this because it's unsupported. + $this->warn("MSSQL doesn't support the 'SET NULL' option for ON UPDATE (ignoring for ".$this->getColumnList($fk->getLocalColumns())." fk)."); + } else { + $script .= " ON UPDATE ".$fk->getOnUpdate(); + } + + } + if ($fk->hasOnDelete()) { + if ($fk->getOnDelete() == ForeignKey::SETNULL) { // there may be others that also won't work + // we have to skip this because it's unsupported. + $this->warn("MSSQL doesn't support the 'SET NULL' option for ON DELETE (ignoring for ".$this->getColumnList($fk->getLocalColumns())." fk)."); + } else { + $script .= " ON DELETE ".$fk->getOnDelete(); + } + } + $script .= " +END +; +"; + } + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mssql/MssqlDataSQLBuilder.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mssql/MssqlDataSQLBuilder.php new file mode 100644 index 0000000..f4ca3b0 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mssql/MssqlDataSQLBuilder.php @@ -0,0 +1,48 @@ +. + */ + +require_once 'propel/engine/builder/sql/DataSQLBuilder.php'; + +/** + * MS SQL Server class for building data dump SQL. + * + * @author Hans Lellelid + * @package propel.engine.builder.sql.mssql + */ +class MssqlDataSQLBuilder extends DataSQLBuilder { + + /** + * + * @param mixed $blob Blob object or string containing data. + * @return string + */ + protected function getBlobSql($blob) + { + // they took magic __toString() out of PHP5.0.0; this sucks + if (is_object($blob)) { + $blob = $blob->__toString(); + } + $data = unpack("H*hex", $blob); + return '0x'.$data['hex']; // no surrounding quotes! + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mysql/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mysql/.svn/all-wcprops new file mode 100644 index 0000000..d720772 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mysql/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 75 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/builder/sql/mysql +END +MysqlDDLBuilder.php +K 25 +svn:wc:ra_dav:version-url +V 95 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/builder/sql/mysql/MysqlDDLBuilder.php +END +MysqlDataSQLBuilder.php +K 25 +svn:wc:ra_dav:version-url +V 99 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/builder/sql/mysql/MysqlDataSQLBuilder.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mysql/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mysql/.svn/entries new file mode 100644 index 0000000..c023a27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mysql/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +2332 +http://propel.mirror.svn.symfony-project.com/tags/1.4.2/generator/classes/propel/engine/builder/sql/mysql +http://propel.mirror.svn.symfony-project.com + + + +2010-04-19T21:59:18.421712Z +1690 +francois + + + + + + + + + + + + + + +a84bc4f6-26e8-416f-aa96-3cde13879fbb + +MysqlDDLBuilder.php +file + + + + +2012-05-10T18:42:15.753553Z +28eeba2e387813929668c9cd3bd390de +2010-04-19T21:59:18.421712Z +1690 +francois +has-props + + + + + + + + + + + + + + + + + + + + +14003 + +MysqlDataSQLBuilder.php +file + + + + +2012-05-10T18:42:15.757551Z +ed2abc1e04c759c65cdafc92f9530521 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +1316 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mysql/.svn/prop-base/MysqlDDLBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mysql/.svn/prop-base/MysqlDDLBuilder.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mysql/.svn/prop-base/MysqlDDLBuilder.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mysql/.svn/prop-base/MysqlDataSQLBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mysql/.svn/prop-base/MysqlDataSQLBuilder.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mysql/.svn/prop-base/MysqlDataSQLBuilder.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mysql/.svn/text-base/MysqlDDLBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mysql/.svn/text-base/MysqlDDLBuilder.php.svn-base new file mode 100644 index 0000000..1c023ae --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mysql/.svn/text-base/MysqlDDLBuilder.php.svn-base @@ -0,0 +1,425 @@ +. + */ + +require_once 'propel/engine/builder/sql/DDLBuilder.php'; + +/** + * DDL Builder class for MySQL. + * + * @author David Z�lke + * @author Hans Lellelid + * @package propel.engine.builder.sql.mysql + */ +class MysqlDDLBuilder extends DDLBuilder { + + /** + * Returns some header SQL that disables foreign key checking. + * @return string DDL + */ + public static function getDatabaseStartDDL() + { + $ddl = " +# This is a fix for InnoDB in MySQL >= 4.1.x +# It \"suspends judgement\" for fkey relationships until are tables are set. +SET FOREIGN_KEY_CHECKS = 0; +"; + return $ddl; + } + + /** + * Returns some footer SQL that re-enables foreign key checking. + * @return string DDL + */ + public static function getDatabaseEndDDL() + { + $ddl = " +# This restores the fkey checks, after having unset them earlier +SET FOREIGN_KEY_CHECKS = 1; +"; + return $ddl; + } + + + /** + * + * @see parent::addDropStatement() + */ + protected function addDropStatements(&$script) + { + $script .= " +DROP TABLE IF EXISTS ".$this->quoteIdentifier($this->prefixTablename($this->getTable()->getName()))."; +"; + } + + /** + * Builds the SQL for current table and returns it as a string. + * + * This is the main entry point and defines a basic structure that classes should follow. + * In most cases this method will not need to be overridden by subclasses. + * + * @return string The resulting SQL DDL. + */ + public function build() + { + $script = ""; + $this->addTable($script); + return $script; + } + + /** + * + * @see parent::addColumns() + */ + protected function addTable(&$script) + { + $table = $this->getTable(); + $platform = $this->getPlatform(); + + $script .= " +#----------------------------------------------------------------------------- +#-- ".$table->getName()." +#----------------------------------------------------------------------------- +"; + + $this->addDropStatements($script); + + $script .= " + +CREATE TABLE ".$this->quoteIdentifier($this->prefixTablename($table->getName()))." +( + "; + + $lines = array(); + + $databaseType = $this->getPlatform()->getDatabaseType(); + + foreach ($table->getColumns() as $col) { + $entry = $this->getColumnDDL($col); + $colinfo = $col->getVendorInfoForType($databaseType); + if ( $colinfo->hasParameter('Charset') ) { + $entry .= ' CHARACTER SET '.$platform->quote($colinfo->getParamter('Charset')); + } + if ( $colinfo->hasParameter('Collate') ) { + $entry .= ' COLLATE '.$platform->quote($colinfo->getParamter('Collate')); + } + if ($col->getDescription()) { + $entry .= " COMMENT ".$platform->quote($col->getDescription()); + } + $lines[] = $entry; + } + + if ($table->hasPrimaryKey()) { + $lines[] = "PRIMARY KEY (".$this->getColumnList($table->getPrimaryKey()).")"; + } + + $this->addIndicesLines($lines); + $this->addForeignKeysLines($lines); + + $sep = ", + "; + $script .= implode($sep, $lines); + + $script .= " +)"; + + $mysqlTableType = $this->getBuildProperty("mysqlTableType"); + if (!$mysqlTableType) { + $vendorSpecific = $table->getVendorInfoForType($this->getPlatform()->getDatabaseType()); + if ($vendorSpecific->hasParameter('Type')) { + $mysqlTableType = $vendorSpecific->getParameter('Type'); + } elseif ($vendorSpecific->hasParameter('Engine')) { + $mysqlTableType = $vendorSpecific->getParameter('Engine'); + } else { + $mysqlTableType = 'MyISAM'; + } + } + + $script .= "Type=$mysqlTableType"; + + $dbVendorSpecific = $table->getDatabase()->getVendorInfoForType($databaseType); + $tableVendorSpecific = $table->getVendorInfoForType($databaseType); + $vendorSpecific = $dbVendorSpecific->getMergedVendorInfo($tableVendorSpecific); + + if ( $vendorSpecific->hasParameter('Charset') ) { + $script .= ' CHARACTER SET '.$platform->quote($vendorSpecific->getParameter('Charset')); + } + if ( $vendorSpecific->hasParameter('Collate') ) { + $script .= ' COLLATE '.$platform->quote($vendorSpecific->getParameter('Collate')); + } + if ( $vendorSpecific->hasParameter('Checksum') ) { + $script .= ' CHECKSUM='.$platform->quote($vendorSpecific->getParameter('Checksum')); + } + if ( $vendorSpecific->hasParameter('Pack_Keys') ) { + $script .= ' PACK_KEYS='.$platform->quote($vendorSpecific->getParameter('Pack_Keys')); + } + if ( $vendorSpecific->hasParameter('Delay_key_write') ) { + $script .= ' DELAY_KEY_WRITE='.$platform->quote($vendorSpecific->getParameter('Delay_key_write')); + } + + if ($table->getDescription()) { + $script .= " COMMENT=".$platform->quote($table->getDescription()); + } + $script .= "; +"; + } + + /** + * Creates a comma-separated list of column names for the index. + * For MySQL unique indexes there is the option of specifying size, so we cannot simply use + * the getColumnsList() method. + * @param Index $index + * @return string + */ + private function getIndexColumnList(Index $index) + { + $platform = $this->getPlatform(); + + $cols = $index->getColumns(); + $list = array(); + foreach ($cols as $col) { + $list[] = $this->quoteIdentifier($col) . ($index->hasColumnSize($col) ? '(' . $index->getColumnSize($col) . ')' : ''); + } + return implode(', ', $list); + } + + /** + * Adds indexes + */ + protected function addIndicesLines(&$lines) + { + $table = $this->getTable(); + $platform = $this->getPlatform(); + + foreach ($table->getUnices() as $unique) { + $lines[] = "UNIQUE KEY ".$this->quoteIdentifier($unique->getName())." (".$this->getIndexColumnList($unique).")"; + } + + foreach ($table->getIndices() as $index ) { + $vendorInfo = $index->getVendorInfoForType($platform->getDatabaseType()); + $lines[] .= (($vendorInfo && $vendorInfo->getParameter('Index_type') == 'FULLTEXT') ? 'FULLTEXT ' : '') . "KEY " . $this->quoteIdentifier($index->getName()) . "(" . $this->getIndexColumnList($index) . ")"; + } + + } + + /** + * Adds foreign key declarations & necessary indexes for mysql (if they don't exist already). + * @see parent::addForeignKeys() + */ + protected function addForeignKeysLines(&$lines) + { + $table = $this->getTable(); + $platform = $this->getPlatform(); + + + /** + * A collection of indexed columns. The keys is the column name + * (concatenated with a comma in the case of multi-col index), the value is + * an array with the names of the indexes that index these columns. We use + * it to determine which additional indexes must be created for foreign + * keys. It could also be used to detect duplicate indexes, but this is not + * implemented yet. + * @var array + */ + $_indices = array(); + + $this->collectIndexedColumns('PRIMARY', $table->getPrimaryKey(), $_indices, 'getName'); + + $_tableIndices = array_merge($table->getIndices(), $table->getUnices()); + foreach ($_tableIndices as $_index) { + $this->collectIndexedColumns($_index->getName(), $_index->getColumns(), $_indices); + } + + // we're determining which tables have foreign keys that point to this table, since MySQL needs an index on + // any column that is referenced by another table (yep, MySQL _is_ a PITA) + $counter = 0; + $allTables = $table->getDatabase()->getTables(); + foreach ($allTables as $_table) { + foreach ($_table->getForeignKeys() as $_foreignKey) { + if ($_foreignKey->getForeignTableName() == $table->getName()) { + $referencedColumns = $_foreignKey->getForeignColumns(); + $referencedColumnsHash = $this->getColumnList($referencedColumns); + if (!array_key_exists($referencedColumnsHash, $_indices)) { + // no matching index defined in the schema, so we have to create one + $indexName = "I_referenced_".$_foreignKey->getName()."_".(++$counter); + $lines[] = "INDEX ".$this->quoteIdentifier($indexName)." (" .$referencedColumnsHash.")"; + // Add this new index to our collection, otherwise we might add it again (bug #725) + $this->collectIndexedColumns($indexName, $referencedColumns, $_indices); + } + } + } + } + + foreach ($table->getForeignKeys() as $fk) { + + $indexName = $this->quoteIdentifier(substr_replace($fk->getName(), 'FI_', strrpos($fk->getName(), 'FK_'), 3)); + + $localColumns = $fk->getLocalColumns(); + $localColumnsHash = $this->getColumnList($localColumns); + + if (!array_key_exists($localColumnsHash, $_indices)) { + // no matching index defined in the schema, so we have to create one. MySQL needs indices on any columns that serve as foreign keys. these are not auto-created prior to 4.1.2 + $lines[] = "INDEX $indexName (".$localColumnsHash.")"; + $this->collectIndexedColumns($indexName, $localColumns, $_indices); + } + $str = "CONSTRAINT ".$this->quoteIdentifier($fk->getName())." + FOREIGN KEY (".$this->getColumnList($fk->getLocalColumns()).") + REFERENCES ".$this->quoteIdentifier($this->prefixTablename($fk->getForeignTableName())) . " (".$this->getColumnList($fk->getForeignColumns()).")"; + if ($fk->hasOnUpdate()) { + $str .= " + ON UPDATE ".$fk->getOnUpdate(); + } + if ($fk->hasOnDelete()) { + $str .= " + ON DELETE ".$fk->getOnDelete(); + } + $lines[] = $str; + } + } + + /** + * Helper function to collect indexed columns. + * @param array $columns The column names, or objects with a $callback method + * @param array $indexedColumns The collected indexes + * @param string $callback The name of a method to call on each of $columns to get the column name, if needed. + * @return unknown_type + */ + private function collectIndexedColumns($indexName, $columns, &$collectedIndexes, $callback = null) + { + // Get the actual column names, using the callback if needed. + // DDLBuilder::getColumnList tests $col instanceof Column, and no callback - maybe we should too? + $colnames = $columns; + if ($callback) { + $colnames = array(); + foreach ($columns as $col) { + $colnames[] = $col->$callback(); + } + } + + /** + * "If the table has a multiple-column index, any leftmost prefix of the + * index can be used by the optimizer to find rows. For example, if you + * have a three-column index on (col1, col2, col3), you have indexed search + * capabilities on (col1), (col1, col2), and (col1, col2, col3)." + * @link http://dev.mysql.com/doc/refman/5.5/en/mysql-indexes.html + */ + $indexedColumns = array(); + foreach ($colnames as $colname) { + $indexedColumns[] = $this->quoteIdentifier($colname); + $indexedColumnsHash = implode(',', $indexedColumns); + if (!array_key_exists($indexedColumnsHash, $collectedIndexes)) { + $collectedIndexes[$indexedColumnsHash] = array(); + } + $collectedIndexes[$indexedColumnsHash][] = $indexName; + } + } + + /** + * Checks whether passed-in array of Column objects contains a column with specified name. + * @param array Column[] or string[] + * @param string $searchcol Column name to search for + */ + private function containsColname($columns, $searchcol) + { + foreach ($columns as $col) { + if ($col instanceof Column) { + $col = $col->getName(); + } + if ($col == $searchcol) { + return true; + } + } + return false; + } + + /** + * Not used for MySQL since foreign keys are declared inside table declaration. + * @see addForeignKeysLines() + */ + protected function addForeignKeys(&$script) + { + } + + /** + * Not used for MySQL since indexes are declared inside table declaration. + * @see addIndicesLines() + */ + protected function addIndices(&$script) + { + } + + /** + * Builds the DDL SQL for a Column object. + * @return string + */ + public function getColumnDDL(Column $col) + { + $platform = $this->getPlatform(); + $domain = $col->getDomain(); + $sqlType = $domain->getSqlType(); + $notNullString = $col->getNotNullString(); + $defaultSetting = $col->getDefaultSetting(); + + // Special handling of TIMESTAMP/DATETIME types ... + // See: http://propel.phpdb.org/trac/ticket/538 + if ($sqlType == 'DATETIME') { + $def = $domain->getDefaultValue(); + if ($def && $def->isExpression()) { // DATETIME values can only have constant expressions + $sqlType = 'TIMESTAMP'; + } + } elseif ($sqlType == 'DATE') { + $def = $domain->getDefaultValue(); + if ($def && $def->isExpression()) { + throw new EngineException("DATE columns cannot have default *expressions* in MySQL."); + } + } elseif ($sqlType == 'TEXT' || $sqlType == 'BLOB') { + if ($domain->getDefaultValue()) { + throw new EngineException("BLOB and TEXT columns cannot have DEFAULT values. in MySQL."); + } + } + + $sb = ""; + $sb .= $this->quoteIdentifier($col->getName()) . " "; + $sb .= $sqlType; + if ($platform->hasSize($sqlType)) { + $sb .= $domain->printSize(); + } + $sb .= " "; + + if ($sqlType == 'TIMESTAMP') { + $notNullString = $col->getNotNullString(); + $defaultSetting = $col->getDefaultSetting(); + if ($notNullString == '') { + $notNullString = 'NULL'; + } + if ($defaultSetting == '' && $notNullString == 'NOT NULL') { + $defaultSetting = 'DEFAULT CURRENT_TIMESTAMP'; + } + $sb .= $notNullString . " " . $defaultSetting . " "; + } else { + $sb .= $defaultSetting . " "; + $sb .= $notNullString . " "; + } + $sb .= $col->getAutoIncrementString(); + + return trim($sb); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mysql/.svn/text-base/MysqlDataSQLBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mysql/.svn/text-base/MysqlDataSQLBuilder.php.svn-base new file mode 100644 index 0000000..f6668da --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mysql/.svn/text-base/MysqlDataSQLBuilder.php.svn-base @@ -0,0 +1,33 @@ +. + */ + +require_once 'propel/engine/builder/sql/DataSQLBuilder.php'; + +/** + * MySQL class for building data dump SQL. + * + * @author Hans Lellelid + * @package propel.engine.builder.sql.mysql + */ +class MysqlDataSQLBuilder extends DataSQLBuilder { + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mysql/MysqlDDLBuilder.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mysql/MysqlDDLBuilder.php new file mode 100644 index 0000000..472819b --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mysql/MysqlDDLBuilder.php @@ -0,0 +1,425 @@ +. + */ + +require_once 'propel/engine/builder/sql/DDLBuilder.php'; + +/** + * DDL Builder class for MySQL. + * + * @author David Z�lke + * @author Hans Lellelid + * @package propel.engine.builder.sql.mysql + */ +class MysqlDDLBuilder extends DDLBuilder { + + /** + * Returns some header SQL that disables foreign key checking. + * @return string DDL + */ + public static function getDatabaseStartDDL() + { + $ddl = " +# This is a fix for InnoDB in MySQL >= 4.1.x +# It \"suspends judgement\" for fkey relationships until are tables are set. +SET FOREIGN_KEY_CHECKS = 0; +"; + return $ddl; + } + + /** + * Returns some footer SQL that re-enables foreign key checking. + * @return string DDL + */ + public static function getDatabaseEndDDL() + { + $ddl = " +# This restores the fkey checks, after having unset them earlier +SET FOREIGN_KEY_CHECKS = 1; +"; + return $ddl; + } + + + /** + * + * @see parent::addDropStatement() + */ + protected function addDropStatements(&$script) + { + $script .= " +DROP TABLE IF EXISTS ".$this->quoteIdentifier($this->prefixTablename($this->getTable()->getName()))."; +"; + } + + /** + * Builds the SQL for current table and returns it as a string. + * + * This is the main entry point and defines a basic structure that classes should follow. + * In most cases this method will not need to be overridden by subclasses. + * + * @return string The resulting SQL DDL. + */ + public function build() + { + $script = ""; + $this->addTable($script); + return $script; + } + + /** + * + * @see parent::addColumns() + */ + protected function addTable(&$script) + { + $table = $this->getTable(); + $platform = $this->getPlatform(); + + $script .= " +#----------------------------------------------------------------------------- +#-- ".$table->getName()." +#----------------------------------------------------------------------------- +"; + + $this->addDropStatements($script); + + $script .= " + +CREATE TABLE ".$this->quoteIdentifier($this->prefixTablename($table->getName()))." +( + "; + + $lines = array(); + + $databaseType = $this->getPlatform()->getDatabaseType(); + + foreach ($table->getColumns() as $col) { + $entry = $this->getColumnDDL($col); + $colinfo = $col->getVendorInfoForType($databaseType); + if ( $colinfo->hasParameter('Charset') ) { + $entry .= ' CHARACTER SET '.$platform->quote($colinfo->getParamter('Charset')); + } + if ( $colinfo->hasParameter('Collate') ) { + $entry .= ' COLLATE '.$platform->quote($colinfo->getParamter('Collate')); + } + if ($col->getDescription()) { + $entry .= " COMMENT ".$platform->quote($col->getDescription()); + } + $lines[] = $entry; + } + + if ($table->hasPrimaryKey()) { + $lines[] = "PRIMARY KEY (".$this->getColumnList($table->getPrimaryKey()).")"; + } + + $this->addIndicesLines($lines); + $this->addForeignKeysLines($lines); + + $sep = ", + "; + $script .= implode($sep, $lines); + + $script .= " +)"; + + $mysqlTableType = $this->getBuildProperty("mysqlTableType"); + if (!$mysqlTableType) { + $vendorSpecific = $table->getVendorInfoForType($this->getPlatform()->getDatabaseType()); + if ($vendorSpecific->hasParameter('Type')) { + $mysqlTableType = $vendorSpecific->getParameter('Type'); + } elseif ($vendorSpecific->hasParameter('Engine')) { + $mysqlTableType = $vendorSpecific->getParameter('Engine'); + } else { + $mysqlTableType = 'MyISAM'; + } + } + + $script .= "Type=$mysqlTableType"; + + $dbVendorSpecific = $table->getDatabase()->getVendorInfoForType($databaseType); + $tableVendorSpecific = $table->getVendorInfoForType($databaseType); + $vendorSpecific = $dbVendorSpecific->getMergedVendorInfo($tableVendorSpecific); + + if ( $vendorSpecific->hasParameter('Charset') ) { + $script .= ' CHARACTER SET '.$platform->quote($vendorSpecific->getParameter('Charset')); + } + if ( $vendorSpecific->hasParameter('Collate') ) { + $script .= ' COLLATE '.$platform->quote($vendorSpecific->getParameter('Collate')); + } + if ( $vendorSpecific->hasParameter('Checksum') ) { + $script .= ' CHECKSUM='.$platform->quote($vendorSpecific->getParameter('Checksum')); + } + if ( $vendorSpecific->hasParameter('Pack_Keys') ) { + $script .= ' PACK_KEYS='.$platform->quote($vendorSpecific->getParameter('Pack_Keys')); + } + if ( $vendorSpecific->hasParameter('Delay_key_write') ) { + $script .= ' DELAY_KEY_WRITE='.$platform->quote($vendorSpecific->getParameter('Delay_key_write')); + } + + if ($table->getDescription()) { + $script .= " COMMENT=".$platform->quote($table->getDescription()); + } + $script .= "; +"; + } + + /** + * Creates a comma-separated list of column names for the index. + * For MySQL unique indexes there is the option of specifying size, so we cannot simply use + * the getColumnsList() method. + * @param Index $index + * @return string + */ + private function getIndexColumnList(Index $index) + { + $platform = $this->getPlatform(); + + $cols = $index->getColumns(); + $list = array(); + foreach ($cols as $col) { + $list[] = $this->quoteIdentifier($col) . ($index->hasColumnSize($col) ? '(' . $index->getColumnSize($col) . ')' : ''); + } + return implode(', ', $list); + } + + /** + * Adds indexes + */ + protected function addIndicesLines(&$lines) + { + $table = $this->getTable(); + $platform = $this->getPlatform(); + + foreach ($table->getUnices() as $unique) { + $lines[] = "UNIQUE KEY ".$this->quoteIdentifier($unique->getName())." (".$this->getIndexColumnList($unique).")"; + } + + foreach ($table->getIndices() as $index ) { + $vendorInfo = $index->getVendorInfoForType($platform->getDatabaseType()); + $lines[] .= (($vendorInfo && $vendorInfo->getParameter('Index_type') == 'FULLTEXT') ? 'FULLTEXT ' : '') . "KEY " . $this->quoteIdentifier($index->getName()) . "(" . $this->getIndexColumnList($index) . ")"; + } + + } + + /** + * Adds foreign key declarations & necessary indexes for mysql (if they don't exist already). + * @see parent::addForeignKeys() + */ + protected function addForeignKeysLines(&$lines) + { + $table = $this->getTable(); + $platform = $this->getPlatform(); + + + /** + * A collection of indexed columns. The keys is the column name + * (concatenated with a comma in the case of multi-col index), the value is + * an array with the names of the indexes that index these columns. We use + * it to determine which additional indexes must be created for foreign + * keys. It could also be used to detect duplicate indexes, but this is not + * implemented yet. + * @var array + */ + $_indices = array(); + + $this->collectIndexedColumns('PRIMARY', $table->getPrimaryKey(), $_indices, 'getName'); + + $_tableIndices = array_merge($table->getIndices(), $table->getUnices()); + foreach ($_tableIndices as $_index) { + $this->collectIndexedColumns($_index->getName(), $_index->getColumns(), $_indices); + } + + // we're determining which tables have foreign keys that point to this table, since MySQL needs an index on + // any column that is referenced by another table (yep, MySQL _is_ a PITA) + $counter = 0; + $allTables = $table->getDatabase()->getTables(); + foreach ($allTables as $_table) { + foreach ($_table->getForeignKeys() as $_foreignKey) { + if ($_foreignKey->getForeignTableName() == $table->getName()) { + $referencedColumns = $_foreignKey->getForeignColumns(); + $referencedColumnsHash = $this->getColumnList($referencedColumns); + if (!array_key_exists($referencedColumnsHash, $_indices)) { + // no matching index defined in the schema, so we have to create one + $indexName = "I_referenced_".$_foreignKey->getName()."_".(++$counter); + $lines[] = "INDEX ".$this->quoteIdentifier($indexName)." (" .$referencedColumnsHash.")"; + // Add this new index to our collection, otherwise we might add it again (bug #725) + $this->collectIndexedColumns($indexName, $referencedColumns, $_indices); + } + } + } + } + + foreach ($table->getForeignKeys() as $fk) { + + $indexName = $this->quoteIdentifier(substr_replace($fk->getName(), 'FI_', strrpos($fk->getName(), 'FK_'), 3)); + + $localColumns = $fk->getLocalColumns(); + $localColumnsHash = $this->getColumnList($localColumns); + + if (!array_key_exists($localColumnsHash, $_indices)) { + // no matching index defined in the schema, so we have to create one. MySQL needs indices on any columns that serve as foreign keys. these are not auto-created prior to 4.1.2 + $lines[] = "INDEX $indexName (".$localColumnsHash.")"; + $this->collectIndexedColumns($indexName, $localColumns, $_indices); + } + $str = "CONSTRAINT ".$this->quoteIdentifier($fk->getName())." + FOREIGN KEY (".$this->getColumnList($fk->getLocalColumns()).") + REFERENCES ".$this->quoteIdentifier($this->prefixTablename($fk->getForeignTableName())) . " (".$this->getColumnList($fk->getForeignColumns()).")"; + if ($fk->hasOnUpdate()) { + $str .= " + ON UPDATE ".$fk->getOnUpdate(); + } + if ($fk->hasOnDelete()) { + $str .= " + ON DELETE ".$fk->getOnDelete(); + } + $lines[] = $str; + } + } + + /** + * Helper function to collect indexed columns. + * @param array $columns The column names, or objects with a $callback method + * @param array $indexedColumns The collected indexes + * @param string $callback The name of a method to call on each of $columns to get the column name, if needed. + * @return unknown_type + */ + private function collectIndexedColumns($indexName, $columns, &$collectedIndexes, $callback = null) + { + // Get the actual column names, using the callback if needed. + // DDLBuilder::getColumnList tests $col instanceof Column, and no callback - maybe we should too? + $colnames = $columns; + if ($callback) { + $colnames = array(); + foreach ($columns as $col) { + $colnames[] = $col->$callback(); + } + } + + /** + * "If the table has a multiple-column index, any leftmost prefix of the + * index can be used by the optimizer to find rows. For example, if you + * have a three-column index on (col1, col2, col3), you have indexed search + * capabilities on (col1), (col1, col2), and (col1, col2, col3)." + * @link http://dev.mysql.com/doc/refman/5.5/en/mysql-indexes.html + */ + $indexedColumns = array(); + foreach ($colnames as $colname) { + $indexedColumns[] = $this->quoteIdentifier($colname); + $indexedColumnsHash = implode(',', $indexedColumns); + if (!array_key_exists($indexedColumnsHash, $collectedIndexes)) { + $collectedIndexes[$indexedColumnsHash] = array(); + } + $collectedIndexes[$indexedColumnsHash][] = $indexName; + } + } + + /** + * Checks whether passed-in array of Column objects contains a column with specified name. + * @param array Column[] or string[] + * @param string $searchcol Column name to search for + */ + private function containsColname($columns, $searchcol) + { + foreach ($columns as $col) { + if ($col instanceof Column) { + $col = $col->getName(); + } + if ($col == $searchcol) { + return true; + } + } + return false; + } + + /** + * Not used for MySQL since foreign keys are declared inside table declaration. + * @see addForeignKeysLines() + */ + protected function addForeignKeys(&$script) + { + } + + /** + * Not used for MySQL since indexes are declared inside table declaration. + * @see addIndicesLines() + */ + protected function addIndices(&$script) + { + } + + /** + * Builds the DDL SQL for a Column object. + * @return string + */ + public function getColumnDDL(Column $col) + { + $platform = $this->getPlatform(); + $domain = $col->getDomain(); + $sqlType = $domain->getSqlType(); + $notNullString = $col->getNotNullString(); + $defaultSetting = $col->getDefaultSetting(); + + // Special handling of TIMESTAMP/DATETIME types ... + // See: http://propel.phpdb.org/trac/ticket/538 + if ($sqlType == 'DATETIME') { + $def = $domain->getDefaultValue(); + if ($def && $def->isExpression()) { // DATETIME values can only have constant expressions + $sqlType = 'TIMESTAMP'; + } + } elseif ($sqlType == 'DATE') { + $def = $domain->getDefaultValue(); + if ($def && $def->isExpression()) { + throw new EngineException("DATE columns cannot have default *expressions* in MySQL."); + } + } elseif ($sqlType == 'TEXT' || $sqlType == 'BLOB') { + if ($domain->getDefaultValue()) { + throw new EngineException("BLOB and TEXT columns cannot have DEFAULT values. in MySQL."); + } + } + + $sb = ""; + $sb .= $this->quoteIdentifier($col->getName()) . " "; + $sb .= $sqlType; + if ($platform->hasSize($sqlType)) { + $sb .= $domain->printSize(); + } + $sb .= " "; + + if ($sqlType == 'TIMESTAMP') { + $notNullString = $col->getNotNullString(); + $defaultSetting = $col->getDefaultSetting(); + if ($notNullString == '') { + $notNullString = 'NULL'; + } + if ($defaultSetting == '' && $notNullString == 'NOT NULL') { + $defaultSetting = 'DEFAULT CURRENT_TIMESTAMP'; + } + $sb .= $notNullString . " " . $defaultSetting . " "; + } else { + $sb .= $defaultSetting . " "; + $sb .= $notNullString . " "; + } + $sb .= $col->getAutoIncrementString(); + + return trim($sb); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mysql/MysqlDataSQLBuilder.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mysql/MysqlDataSQLBuilder.php new file mode 100644 index 0000000..735c5a8 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mysql/MysqlDataSQLBuilder.php @@ -0,0 +1,33 @@ +. + */ + +require_once 'propel/engine/builder/sql/DataSQLBuilder.php'; + +/** + * MySQL class for building data dump SQL. + * + * @author Hans Lellelid + * @package propel.engine.builder.sql.mysql + */ +class MysqlDataSQLBuilder extends DataSQLBuilder { + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/oracle/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/oracle/.svn/all-wcprops new file mode 100644 index 0000000..aef4666 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/oracle/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 76 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/builder/sql/oracle +END +OracleDDLBuilder.php +K 25 +svn:wc:ra_dav:version-url +V 97 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/builder/sql/oracle/OracleDDLBuilder.php +END +OracleDataSQLBuilder.php +K 25 +svn:wc:ra_dav:version-url +V 101 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/builder/sql/oracle/OracleDataSQLBuilder.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/oracle/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/oracle/.svn/entries new file mode 100644 index 0000000..4687d02 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/oracle/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +2332 +http://propel.mirror.svn.symfony-project.com/tags/1.4.2/generator/classes/propel/engine/builder/sql/oracle +http://propel.mirror.svn.symfony-project.com + + + +2009-10-26T20:54:39.333354Z +1262 +francois + + + + + + + + + + + + + + +a84bc4f6-26e8-416f-aa96-3cde13879fbb + +OracleDDLBuilder.php +file + + + + +2012-05-10T18:42:15.801552Z +4c35b08c8b72133d10a8d1d1570eadff +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +5028 + +OracleDataSQLBuilder.php +file + + + + +2012-05-10T18:42:15.805548Z +fa510cb1707a386740ef5131e551d8a6 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +1321 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/oracle/.svn/prop-base/OracleDDLBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/oracle/.svn/prop-base/OracleDDLBuilder.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/oracle/.svn/prop-base/OracleDDLBuilder.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/oracle/.svn/prop-base/OracleDataSQLBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/oracle/.svn/prop-base/OracleDataSQLBuilder.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/oracle/.svn/prop-base/OracleDataSQLBuilder.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/oracle/.svn/text-base/OracleDDLBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/oracle/.svn/text-base/OracleDDLBuilder.php.svn-base new file mode 100644 index 0000000..bb0d806 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/oracle/.svn/text-base/OracleDDLBuilder.php.svn-base @@ -0,0 +1,176 @@ +. + */ + +require_once 'propel/engine/builder/sql/DDLBuilder.php'; + +/** + * The SQL DDL-building class for Oracle. + * + * + * @author Hans Lellelid + * @package propel.engine.builder.sql.pgsql + */ +class OracleDDLBuilder extends DDLBuilder { + + /** + * + * @see parent::addDropStatement() + */ + protected function addDropStatements(&$script) + { + $table = $this->getTable(); + $platform = $this->getPlatform(); + $script .= " +DROP TABLE ".$this->quoteIdentifier($this->prefixTablename($table->getName()))." CASCADE CONSTRAINTS; +"; + if ($table->getIdMethod() == "native") { + $script .= " +DROP SEQUENCE ".$this->quoteIdentifier($this->prefixTablename($this->getSequenceName()))."; +"; + } + } + + /** + * + * @see parent::addColumns() + */ + protected function addTable(&$script) + { + $table = $this->getTable(); + $script .= " + +/* ----------------------------------------------------------------------- + ".$table->getName()." + ----------------------------------------------------------------------- */ +"; + + $this->addDropStatements($script); + + $script .= " + +CREATE TABLE ".$this->quoteIdentifier($this->prefixTablename($table->getName()))." +( + "; + + $lines = array(); + + foreach ($table->getColumns() as $col) { + $lines[] = $this->getColumnDDL($col); + } + + $sep = ", + "; + $script .= implode($sep, $lines); + $script .= " +); +"; + $this->addPrimaryKey($script); + $this->addSequences($script); + + } + + /** + * + * + */ + protected function addPrimaryKey(&$script) + { + $table = $this->getTable(); + $platform = $this->getPlatform(); + $tableName = $table->getName(); + $length = strlen($tableName); + if ($length > 27) { + $length = 27; + } + if ( is_array($table->getPrimaryKey()) && count($table->getPrimaryKey()) ) { + $script .= " + ALTER TABLE ".$this->quoteIdentifier($this->prefixTablename($table->getName()))." + ADD CONSTRAINT ".$this->quoteIdentifier(substr($tableName,0,$length)."_PK")." + PRIMARY KEY ("; + $delim = ""; + foreach ($table->getPrimaryKey() as $col) { + $script .= $delim . $this->quoteIdentifier($col->getName()); + $delim = ","; + } + $script .= "); +"; + } + } + + /** + * Adds CREATE SEQUENCE statements for this table. + * + */ + protected function addSequences(&$script) + { + $table = $this->getTable(); + $platform = $this->getPlatform(); + if ($table->getIdMethod() == "native") { + $script .= "CREATE SEQUENCE ".$this->quoteIdentifier($this->prefixTablename($this->getSequenceName()))." INCREMENT BY 1 START WITH 1 NOMAXVALUE NOCYCLE NOCACHE ORDER; +"; + } + } + + + /** + * Adds CREATE INDEX statements for this table. + * @see parent::addIndices() + */ + protected function addIndices(&$script) + { + $table = $this->getTable(); + $platform = $this->getPlatform(); + foreach ($table->getIndices() as $index) { + $script .= "CREATE "; + if ($index->getIsUnique()) { + $script .= "UNIQUE"; + } + $script .= "INDEX ".$this->quoteIdentifier($index->getName()) ." ON ".$this->quoteIdentifier($this->prefixTablename($table->getName()))." (".$this->getColumnList($index->getColumns())."); +"; + } + } + + /** + * + * @see parent::addForeignKeys() + */ + protected function addForeignKeys(&$script) + { + $table = $this->getTable(); + $platform = $this->getPlatform(); + foreach ($table->getForeignKeys() as $fk) { + $script .= " +ALTER TABLE ".$this->quoteIdentifier($this->prefixTablename($table->getName()))." ADD CONSTRAINT ".$this->quoteIdentifier($fk->getName())." FOREIGN KEY (".$this->getColumnList($fk->getLocalColumns()) .") REFERENCES ".$this->quoteIdentifier($this->prefixTablename($fk->getForeignTableName()))." (".$this->getColumnList($fk->getForeignColumns()).")"; + if ($fk->hasOnUpdate()) { + $this->warn("ON UPDATE not yet implemented for Oracle builder.(ignoring for ".$this->getColumnList($fk->getLocalColumns())." fk)."); + //$script .= " ON UPDATE ".$fk->getOnUpdate(); + } + if ($fk->hasOnDelete()) { + $script .= " ON DELETE ".$fk->getOnDelete(); + } + $script .= "; +"; + } + } + + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/oracle/.svn/text-base/OracleDataSQLBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/oracle/.svn/text-base/OracleDataSQLBuilder.php.svn-base new file mode 100644 index 0000000..34f9ba8 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/oracle/.svn/text-base/OracleDataSQLBuilder.php.svn-base @@ -0,0 +1,34 @@ +. + */ + +require_once 'propel/engine/builder/sql/DataSQLBuilder.php'; + +/** + * Oracle class for building data dump SQL. + * + * @author Hans Lellelid + * @package propel.engine.builder.sql.oracle + */ +class OracleDataSQLBuilder extends DataSQLBuilder { + + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/oracle/OracleDDLBuilder.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/oracle/OracleDDLBuilder.php new file mode 100644 index 0000000..a2d1abe --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/oracle/OracleDDLBuilder.php @@ -0,0 +1,176 @@ +. + */ + +require_once 'propel/engine/builder/sql/DDLBuilder.php'; + +/** + * The SQL DDL-building class for Oracle. + * + * + * @author Hans Lellelid + * @package propel.engine.builder.sql.pgsql + */ +class OracleDDLBuilder extends DDLBuilder { + + /** + * + * @see parent::addDropStatement() + */ + protected function addDropStatements(&$script) + { + $table = $this->getTable(); + $platform = $this->getPlatform(); + $script .= " +DROP TABLE ".$this->quoteIdentifier($this->prefixTablename($table->getName()))." CASCADE CONSTRAINTS; +"; + if ($table->getIdMethod() == "native") { + $script .= " +DROP SEQUENCE ".$this->quoteIdentifier($this->prefixTablename($this->getSequenceName()))."; +"; + } + } + + /** + * + * @see parent::addColumns() + */ + protected function addTable(&$script) + { + $table = $this->getTable(); + $script .= " + +/* ----------------------------------------------------------------------- + ".$table->getName()." + ----------------------------------------------------------------------- */ +"; + + $this->addDropStatements($script); + + $script .= " + +CREATE TABLE ".$this->quoteIdentifier($this->prefixTablename($table->getName()))." +( + "; + + $lines = array(); + + foreach ($table->getColumns() as $col) { + $lines[] = $this->getColumnDDL($col); + } + + $sep = ", + "; + $script .= implode($sep, $lines); + $script .= " +); +"; + $this->addPrimaryKey($script); + $this->addSequences($script); + + } + + /** + * + * + */ + protected function addPrimaryKey(&$script) + { + $table = $this->getTable(); + $platform = $this->getPlatform(); + $tableName = $table->getName(); + $length = strlen($tableName); + if ($length > 27) { + $length = 27; + } + if ( is_array($table->getPrimaryKey()) && count($table->getPrimaryKey()) ) { + $script .= " + ALTER TABLE ".$this->quoteIdentifier($this->prefixTablename($table->getName()))." + ADD CONSTRAINT ".$this->quoteIdentifier(substr($tableName,0,$length)."_PK")." + PRIMARY KEY ("; + $delim = ""; + foreach ($table->getPrimaryKey() as $col) { + $script .= $delim . $this->quoteIdentifier($col->getName()); + $delim = ","; + } + $script .= "); +"; + } + } + + /** + * Adds CREATE SEQUENCE statements for this table. + * + */ + protected function addSequences(&$script) + { + $table = $this->getTable(); + $platform = $this->getPlatform(); + if ($table->getIdMethod() == "native") { + $script .= "CREATE SEQUENCE ".$this->quoteIdentifier($this->prefixTablename($this->getSequenceName()))." INCREMENT BY 1 START WITH 1 NOMAXVALUE NOCYCLE NOCACHE ORDER; +"; + } + } + + + /** + * Adds CREATE INDEX statements for this table. + * @see parent::addIndices() + */ + protected function addIndices(&$script) + { + $table = $this->getTable(); + $platform = $this->getPlatform(); + foreach ($table->getIndices() as $index) { + $script .= "CREATE "; + if ($index->getIsUnique()) { + $script .= "UNIQUE"; + } + $script .= "INDEX ".$this->quoteIdentifier($index->getName()) ." ON ".$this->quoteIdentifier($this->prefixTablename($table->getName()))." (".$this->getColumnList($index->getColumns())."); +"; + } + } + + /** + * + * @see parent::addForeignKeys() + */ + protected function addForeignKeys(&$script) + { + $table = $this->getTable(); + $platform = $this->getPlatform(); + foreach ($table->getForeignKeys() as $fk) { + $script .= " +ALTER TABLE ".$this->quoteIdentifier($this->prefixTablename($table->getName()))." ADD CONSTRAINT ".$this->quoteIdentifier($fk->getName())." FOREIGN KEY (".$this->getColumnList($fk->getLocalColumns()) .") REFERENCES ".$this->quoteIdentifier($this->prefixTablename($fk->getForeignTableName()))." (".$this->getColumnList($fk->getForeignColumns()).")"; + if ($fk->hasOnUpdate()) { + $this->warn("ON UPDATE not yet implemented for Oracle builder.(ignoring for ".$this->getColumnList($fk->getLocalColumns())." fk)."); + //$script .= " ON UPDATE ".$fk->getOnUpdate(); + } + if ($fk->hasOnDelete()) { + $script .= " ON DELETE ".$fk->getOnDelete(); + } + $script .= "; +"; + } + } + + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/oracle/OracleDataSQLBuilder.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/oracle/OracleDataSQLBuilder.php new file mode 100644 index 0000000..e9fb60b --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/oracle/OracleDataSQLBuilder.php @@ -0,0 +1,34 @@ +. + */ + +require_once 'propel/engine/builder/sql/DataSQLBuilder.php'; + +/** + * Oracle class for building data dump SQL. + * + * @author Hans Lellelid + * @package propel.engine.builder.sql.oracle + */ +class OracleDataSQLBuilder extends DataSQLBuilder { + + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/pgsql/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/pgsql/.svn/all-wcprops new file mode 100644 index 0000000..d95a14a --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/pgsql/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 75 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/builder/sql/pgsql +END +PgsqlDDLBuilder.php +K 25 +svn:wc:ra_dav:version-url +V 95 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/builder/sql/pgsql/PgsqlDDLBuilder.php +END +PgsqlDataSQLBuilder.php +K 25 +svn:wc:ra_dav:version-url +V 99 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/builder/sql/pgsql/PgsqlDataSQLBuilder.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/pgsql/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/pgsql/.svn/entries new file mode 100644 index 0000000..6e3bdd6 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/pgsql/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +2332 +http://propel.mirror.svn.symfony-project.com/tags/1.4.2/generator/classes/propel/engine/builder/sql/pgsql +http://propel.mirror.svn.symfony-project.com + + + +2009-10-26T20:54:39.333354Z +1262 +francois + + + + + + + + + + + + + + +a84bc4f6-26e8-416f-aa96-3cde13879fbb + +PgsqlDDLBuilder.php +file + + + + +2012-05-10T18:42:15.921551Z +6d857ab9e7cd6ea17a7f1c1072085598 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +8706 + +PgsqlDataSQLBuilder.php +file + + + + +2012-05-10T18:42:15.925550Z +93a13070b614ee444fa9342b236e5c09 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +3241 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/pgsql/.svn/prop-base/PgsqlDDLBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/pgsql/.svn/prop-base/PgsqlDDLBuilder.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/pgsql/.svn/prop-base/PgsqlDDLBuilder.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/pgsql/.svn/prop-base/PgsqlDataSQLBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/pgsql/.svn/prop-base/PgsqlDataSQLBuilder.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/pgsql/.svn/prop-base/PgsqlDataSQLBuilder.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/pgsql/.svn/text-base/PgsqlDDLBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/pgsql/.svn/text-base/PgsqlDDLBuilder.php.svn-base new file mode 100644 index 0000000..9c89c98 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/pgsql/.svn/text-base/PgsqlDDLBuilder.php.svn-base @@ -0,0 +1,316 @@ +. + */ + +require_once 'propel/engine/builder/sql/DDLBuilder.php'; + +/** + * The SQL DDL-building class for PostgreSQL. + * + * + * @author Hans Lellelid + * @package propel.engine.builder.sql.pgsql + */ +class PgsqlDDLBuilder extends DDLBuilder { + + + /** + * Array that keeps track of already + * added schema names + * + * @var Array of schema names + */ + protected static $addedSchemas = array(); + + /** + * Queue of constraint SQL that will be added to script at the end. + * + * PostgreSQL seems (now?) to not like constraints for tables that don't exist, + * so the solution is to queue up the statements and execute it at the end. + * + * @var array + */ + protected static $queuedConstraints = array(); + + /** + * Reset static vars between db iterations. + */ + public static function reset() + { + self::$addedSchemas = array(); + self::$queuedConstraints = array(); + } + + /** + * Returns all the ALTER TABLE ADD CONSTRAINT lines for inclusion at end of file. + * @return string DDL + */ + public static function getDatabaseEndDDL() + { + $ddl = implode("", self::$queuedConstraints); + return $ddl; + } + + /** + * Get the schema for the current table + * + * @author Markus Lervik + * @access protected + * @return schema name if table has one, else + * null + **/ + protected function getSchema() + { + $table = $this->getTable(); + $vi = $table->getVendorInfoForType($this->getPlatform()->getDatabaseType()); + if ($vi->hasParameter('schema')) { + return $vi->getParameter('schema'); + } + return null; + } + + /** + * Add a schema to the generated SQL script + * + * @author Markus Lervik + * @access protected + * @return string with CREATE SCHEMA statement if + * applicable, else empty string + **/ + protected function addSchema() + { + + $schemaName = $this->getSchema(); + + if ($schemaName !== null) { + + if (!in_array($schemaName, self::$addedSchemas)) { + $platform = $this->getPlatform(); + self::$addedSchemas[] = $schemaName; + return "\nCREATE SCHEMA " . $this->quoteIdentifier($schemaName) . ";\n"; + } + } + + return ''; + + } + + /** + * + * @see parent::addDropStatement() + */ + protected function addDropStatements(&$script) + { + $table = $this->getTable(); + $platform = $this->getPlatform(); + + $script .= " +DROP TABLE ".$this->quoteIdentifier($this->prefixTablename($table->getName()))." CASCADE; +"; + + if ($table->getIdMethod() == IDMethod::NATIVE && $table->getIdMethodParameters()) { + $script .= " +DROP SEQUENCE ".$this->quoteIdentifier($this->prefixTablename(strtolower($this->getSequenceName())))."; +"; + } + } + + /** + * + * @see parent::addColumns() + */ + protected function addTable(&$script) + { + $table = $this->getTable(); + $platform = $this->getPlatform(); + + $script .= " +----------------------------------------------------------------------------- +-- ".$table->getName()." +----------------------------------------------------------------------------- +"; + + $script .= $this->addSchema(); + + $schemaName = $this->getSchema(); + if ($schemaName !== null) { + $script .= "\nSET search_path TO " . $this->quoteIdentifier($schemaName) . ";\n"; + } + + $this->addDropStatements($script); + $this->addSequences($script); + + $script .= " + +CREATE TABLE ".$this->quoteIdentifier($this->prefixTablename($table->getName()))." +( + "; + + $lines = array(); + + foreach ($table->getColumns() as $col) { + /* @var $col Column */ + $colDDL = $this->getColumnDDL($col); + if ($col->isAutoIncrement() && $table->getIdMethodParameters() == null) { + if ($col->getType() === PropelTypes::BIGINT) { + $colDDL = str_replace($col->getDomain()->getSqlType(), 'bigserial', $colDDL); + } else { + $colDDL = str_replace($col->getDomain()->getSqlType(), 'serial', $colDDL); + } + } + $lines[] = $colDDL; + } + + if ($table->hasPrimaryKey()) { + $lines[] = "PRIMARY KEY (".$this->getColumnList($table->getPrimaryKey()).")"; + } + + foreach ($table->getUnices() as $unique ) { + $lines[] = "CONSTRAINT ".$this->quoteIdentifier($unique->getName())." UNIQUE (".$this->getColumnList($unique->getColumns()).")"; + } + + $sep = ", + "; + $script .= implode($sep, $lines); + $script .= " +); + +COMMENT ON TABLE ".$this->quoteIdentifier($this->prefixTablename($table->getName()))." IS " . $platform->quote($table->getDescription())."; + +"; + + $this->addColumnComments($script); + + $script .= "\nSET search_path TO public;"; + + } + + /** + * Adds comments for the columns. + * + */ + protected function addColumnComments(&$script) + { + $table = $this->getTable(); + $platform = $this->getPlatform(); + + foreach ($this->getTable()->getColumns() as $col) { + if ( $col->getDescription() != '' ) { + $script .= " +COMMENT ON COLUMN ".$this->quoteIdentifier($this->prefixTablename($table->getName())).".".$this->quoteIdentifier($col->getName())." IS ".$platform->quote($col->getDescription()) ."; +"; + } + } + } + + /** + * Override to provide sequence names that conform to postgres' standard when + * no id-method-parameter specified. + * + * @see DataModelBuilder::getSequenceName() + * @return string + */ + public function getSequenceName() + { + $table = $this->getTable(); + static $longNamesMap = array(); + $result = null; + if ($table->getIdMethod() == IDMethod::NATIVE) { + $idMethodParams = $table->getIdMethodParameters(); + if (empty($idMethodParams)) { + $result = null; + // We're going to ignore a check for max length (mainly + // because I'm not sure how Postgres would handle this w/ SERIAL anyway) + foreach ($table->getColumns() as $col) { + if ($col->isAutoIncrement()) { + $result = $table->getName() . '_' . $col->getName() . '_seq'; + break; // there's only one auto-increment column allowed + } + } + } else { + $result = $idMethodParams[0]->getValue(); + } + } + return $result; + } + + /** + * Adds CREATE SEQUENCE statements for this table. + * + */ + protected function addSequences(&$script) + { + $table = $this->getTable(); + $platform = $this->getPlatform(); + + if ($table->getIdMethod() == IDMethod::NATIVE && $table->getIdMethodParameters() != null) { + $script .= " +CREATE SEQUENCE ".$this->quoteIdentifier($this->prefixTablename(strtolower($this->getSequenceName())))."; +"; + } + } + + + /** + * Adds CREATE INDEX statements for this table. + * @see parent::addIndices() + */ + protected function addIndices(&$script) + { + $table = $this->getTable(); + $platform = $this->getPlatform(); + + foreach ($table->getIndices() as $index) { + $script .= " +CREATE "; + if ($index->getIsUnique()) { + $script .= "UNIQUE"; + } + $script .= "INDEX ".$this->quoteIdentifier($index->getName())." ON ".$this->quoteIdentifier($this->prefixTablename($table->getName()))." (".$this->getColumnList($index->getColumns())."); +"; + } + } + + /** + * + * @see parent::addForeignKeys() + */ + protected function addForeignKeys(&$script) + { + $table = $this->getTable(); + $platform = $this->getPlatform(); + + foreach ($table->getForeignKeys() as $fk) { + $privscript = " +ALTER TABLE ".$this->quoteIdentifier($this->prefixTablename($table->getName()))." ADD CONSTRAINT ".$this->quoteIdentifier($fk->getName())." FOREIGN KEY (".$this->getColumnList($fk->getLocalColumns()) .") REFERENCES ".$this->quoteIdentifier($this->prefixTablename($fk->getForeignTableName()))." (".$this->getColumnList($fk->getForeignColumns()).")"; + if ($fk->hasOnUpdate()) { + $privscript .= " ON UPDATE ".$fk->getOnUpdate(); + } + if ($fk->hasOnDelete()) { + $privscript .= " ON DELETE ".$fk->getOnDelete(); + } + $privscript .= "; +"; + self::$queuedConstraints[] = $privscript; + } + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/pgsql/.svn/text-base/PgsqlDataSQLBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/pgsql/.svn/text-base/PgsqlDataSQLBuilder.php.svn-base new file mode 100644 index 0000000..d34e722 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/pgsql/.svn/text-base/PgsqlDataSQLBuilder.php.svn-base @@ -0,0 +1,113 @@ +. + */ + +require_once 'propel/engine/builder/sql/DataSQLBuilder.php'; + +/** + * PostgreSQL class for building data dump SQL. + * + * @author Hans Lellelid + * @package propel.engine.builder.sql.pgsql + */ +class PgsqlDataSQLBuilder extends DataSQLBuilder { + + /** + * The largets serial value encountered this far. + * + * @var int + */ + private $maxSeqVal; + + /** + * Construct a new PgsqlDataSQLBuilder object. + * + * @param Table $table + */ + public function __construct(Table $table) + { + parent::__construct($table); + } + + /** + * The main method in this class, returns the SQL for INSERTing data into a row. + * @param DataRow $row The row to process. + * @return string + */ + public function buildRowSql(DataRow $row) + { + $sql = parent::buildRowSql($row); + + $table = $this->getTable(); + + if ($table->hasAutoIncrementPrimaryKey() && $table->getIdMethod() == IDMethod::NATIVE) { + foreach ($row->getColumnValues() as $colValue) { + if ($colValue->getColumn()->isAutoIncrement()) { + if ($colValue->getValue() > $this->maxSeqVal) { + $this->maxSeqVal = $colValue->getValue(); + } + } + } + } + + return $sql; + } + + public function getTableEndSql() + { + $table = $this->getTable(); + $sql = ""; + if ($table->hasAutoIncrementPrimaryKey() && $table->getIdMethod() == IDMethod::NATIVE) { + $seqname = $this->prefixTablename($this->getDDLBuilder()->getSequenceName()); + $sql .= "SELECT pg_catalog.setval('$seqname', ".((int)$this->maxSeqVal)."); +"; + } + return $sql; + } + + /** + * Get SQL value to insert for Postgres BOOLEAN column. + * @param boolean $value + * @return string The representation of boolean for Postgres ('t' or 'f'). + */ + protected function getBooleanSql($value) + { + if ($value === 'f' || $value === 'false' || $value === "0") { + $value = false; + } + return ($value ? "'t'" : "'f'"); + } + + /** + * + * @param mixed $blob Blob object or string containing data. + * @return string + */ + protected function getBlobSql($blob) + { + // they took magic __toString() out of PHP5.0.0; this sucks + if (is_object($blob)) { + $blob = $blob->__toString(); + } + return "'" . pg_escape_bytea($blob) . "'"; + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/pgsql/PgsqlDDLBuilder.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/pgsql/PgsqlDDLBuilder.php new file mode 100644 index 0000000..379911f --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/pgsql/PgsqlDDLBuilder.php @@ -0,0 +1,316 @@ +. + */ + +require_once 'propel/engine/builder/sql/DDLBuilder.php'; + +/** + * The SQL DDL-building class for PostgreSQL. + * + * + * @author Hans Lellelid + * @package propel.engine.builder.sql.pgsql + */ +class PgsqlDDLBuilder extends DDLBuilder { + + + /** + * Array that keeps track of already + * added schema names + * + * @var Array of schema names + */ + protected static $addedSchemas = array(); + + /** + * Queue of constraint SQL that will be added to script at the end. + * + * PostgreSQL seems (now?) to not like constraints for tables that don't exist, + * so the solution is to queue up the statements and execute it at the end. + * + * @var array + */ + protected static $queuedConstraints = array(); + + /** + * Reset static vars between db iterations. + */ + public static function reset() + { + self::$addedSchemas = array(); + self::$queuedConstraints = array(); + } + + /** + * Returns all the ALTER TABLE ADD CONSTRAINT lines for inclusion at end of file. + * @return string DDL + */ + public static function getDatabaseEndDDL() + { + $ddl = implode("", self::$queuedConstraints); + return $ddl; + } + + /** + * Get the schema for the current table + * + * @author Markus Lervik + * @access protected + * @return schema name if table has one, else + * null + **/ + protected function getSchema() + { + $table = $this->getTable(); + $vi = $table->getVendorInfoForType($this->getPlatform()->getDatabaseType()); + if ($vi->hasParameter('schema')) { + return $vi->getParameter('schema'); + } + return null; + } + + /** + * Add a schema to the generated SQL script + * + * @author Markus Lervik + * @access protected + * @return string with CREATE SCHEMA statement if + * applicable, else empty string + **/ + protected function addSchema() + { + + $schemaName = $this->getSchema(); + + if ($schemaName !== null) { + + if (!in_array($schemaName, self::$addedSchemas)) { + $platform = $this->getPlatform(); + self::$addedSchemas[] = $schemaName; + return "\nCREATE SCHEMA " . $this->quoteIdentifier($schemaName) . ";\n"; + } + } + + return ''; + + } + + /** + * + * @see parent::addDropStatement() + */ + protected function addDropStatements(&$script) + { + $table = $this->getTable(); + $platform = $this->getPlatform(); + + $script .= " +DROP TABLE ".$this->quoteIdentifier($this->prefixTablename($table->getName()))." CASCADE; +"; + + if ($table->getIdMethod() == IDMethod::NATIVE && $table->getIdMethodParameters()) { + $script .= " +DROP SEQUENCE ".$this->quoteIdentifier($this->prefixTablename(strtolower($this->getSequenceName())))."; +"; + } + } + + /** + * + * @see parent::addColumns() + */ + protected function addTable(&$script) + { + $table = $this->getTable(); + $platform = $this->getPlatform(); + + $script .= " +----------------------------------------------------------------------------- +-- ".$table->getName()." +----------------------------------------------------------------------------- +"; + + $script .= $this->addSchema(); + + $schemaName = $this->getSchema(); + if ($schemaName !== null) { + $script .= "\nSET search_path TO " . $this->quoteIdentifier($schemaName) . ";\n"; + } + + $this->addDropStatements($script); + $this->addSequences($script); + + $script .= " + +CREATE TABLE ".$this->quoteIdentifier($this->prefixTablename($table->getName()))." +( + "; + + $lines = array(); + + foreach ($table->getColumns() as $col) { + /* @var $col Column */ + $colDDL = $this->getColumnDDL($col); + if ($col->isAutoIncrement() && $table->getIdMethodParameters() == null) { + if ($col->getType() === PropelTypes::BIGINT) { + $colDDL = str_replace($col->getDomain()->getSqlType(), 'bigserial', $colDDL); + } else { + $colDDL = str_replace($col->getDomain()->getSqlType(), 'serial', $colDDL); + } + } + $lines[] = $colDDL; + } + + if ($table->hasPrimaryKey()) { + $lines[] = "PRIMARY KEY (".$this->getColumnList($table->getPrimaryKey()).")"; + } + + foreach ($table->getUnices() as $unique ) { + $lines[] = "CONSTRAINT ".$this->quoteIdentifier($unique->getName())." UNIQUE (".$this->getColumnList($unique->getColumns()).")"; + } + + $sep = ", + "; + $script .= implode($sep, $lines); + $script .= " +); + +COMMENT ON TABLE ".$this->quoteIdentifier($this->prefixTablename($table->getName()))." IS " . $platform->quote($table->getDescription())."; + +"; + + $this->addColumnComments($script); + + $script .= "\nSET search_path TO public;"; + + } + + /** + * Adds comments for the columns. + * + */ + protected function addColumnComments(&$script) + { + $table = $this->getTable(); + $platform = $this->getPlatform(); + + foreach ($this->getTable()->getColumns() as $col) { + if ( $col->getDescription() != '' ) { + $script .= " +COMMENT ON COLUMN ".$this->quoteIdentifier($this->prefixTablename($table->getName())).".".$this->quoteIdentifier($col->getName())." IS ".$platform->quote($col->getDescription()) ."; +"; + } + } + } + + /** + * Override to provide sequence names that conform to postgres' standard when + * no id-method-parameter specified. + * + * @see DataModelBuilder::getSequenceName() + * @return string + */ + public function getSequenceName() + { + $table = $this->getTable(); + static $longNamesMap = array(); + $result = null; + if ($table->getIdMethod() == IDMethod::NATIVE) { + $idMethodParams = $table->getIdMethodParameters(); + if (empty($idMethodParams)) { + $result = null; + // We're going to ignore a check for max length (mainly + // because I'm not sure how Postgres would handle this w/ SERIAL anyway) + foreach ($table->getColumns() as $col) { + if ($col->isAutoIncrement()) { + $result = $table->getName() . '_' . $col->getName() . '_seq'; + break; // there's only one auto-increment column allowed + } + } + } else { + $result = $idMethodParams[0]->getValue(); + } + } + return $result; + } + + /** + * Adds CREATE SEQUENCE statements for this table. + * + */ + protected function addSequences(&$script) + { + $table = $this->getTable(); + $platform = $this->getPlatform(); + + if ($table->getIdMethod() == IDMethod::NATIVE && $table->getIdMethodParameters() != null) { + $script .= " +CREATE SEQUENCE ".$this->quoteIdentifier($this->prefixTablename(strtolower($this->getSequenceName())))."; +"; + } + } + + + /** + * Adds CREATE INDEX statements for this table. + * @see parent::addIndices() + */ + protected function addIndices(&$script) + { + $table = $this->getTable(); + $platform = $this->getPlatform(); + + foreach ($table->getIndices() as $index) { + $script .= " +CREATE "; + if ($index->getIsUnique()) { + $script .= "UNIQUE"; + } + $script .= "INDEX ".$this->quoteIdentifier($index->getName())." ON ".$this->quoteIdentifier($this->prefixTablename($table->getName()))." (".$this->getColumnList($index->getColumns())."); +"; + } + } + + /** + * + * @see parent::addForeignKeys() + */ + protected function addForeignKeys(&$script) + { + $table = $this->getTable(); + $platform = $this->getPlatform(); + + foreach ($table->getForeignKeys() as $fk) { + $privscript = " +ALTER TABLE ".$this->quoteIdentifier($this->prefixTablename($table->getName()))." ADD CONSTRAINT ".$this->quoteIdentifier($fk->getName())." FOREIGN KEY (".$this->getColumnList($fk->getLocalColumns()) .") REFERENCES ".$this->quoteIdentifier($this->prefixTablename($fk->getForeignTableName()))." (".$this->getColumnList($fk->getForeignColumns()).")"; + if ($fk->hasOnUpdate()) { + $privscript .= " ON UPDATE ".$fk->getOnUpdate(); + } + if ($fk->hasOnDelete()) { + $privscript .= " ON DELETE ".$fk->getOnDelete(); + } + $privscript .= "; +"; + self::$queuedConstraints[] = $privscript; + } + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/pgsql/PgsqlDataSQLBuilder.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/pgsql/PgsqlDataSQLBuilder.php new file mode 100644 index 0000000..33d3d78 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/pgsql/PgsqlDataSQLBuilder.php @@ -0,0 +1,113 @@ +. + */ + +require_once 'propel/engine/builder/sql/DataSQLBuilder.php'; + +/** + * PostgreSQL class for building data dump SQL. + * + * @author Hans Lellelid + * @package propel.engine.builder.sql.pgsql + */ +class PgsqlDataSQLBuilder extends DataSQLBuilder { + + /** + * The largets serial value encountered this far. + * + * @var int + */ + private $maxSeqVal; + + /** + * Construct a new PgsqlDataSQLBuilder object. + * + * @param Table $table + */ + public function __construct(Table $table) + { + parent::__construct($table); + } + + /** + * The main method in this class, returns the SQL for INSERTing data into a row. + * @param DataRow $row The row to process. + * @return string + */ + public function buildRowSql(DataRow $row) + { + $sql = parent::buildRowSql($row); + + $table = $this->getTable(); + + if ($table->hasAutoIncrementPrimaryKey() && $table->getIdMethod() == IDMethod::NATIVE) { + foreach ($row->getColumnValues() as $colValue) { + if ($colValue->getColumn()->isAutoIncrement()) { + if ($colValue->getValue() > $this->maxSeqVal) { + $this->maxSeqVal = $colValue->getValue(); + } + } + } + } + + return $sql; + } + + public function getTableEndSql() + { + $table = $this->getTable(); + $sql = ""; + if ($table->hasAutoIncrementPrimaryKey() && $table->getIdMethod() == IDMethod::NATIVE) { + $seqname = $this->prefixTablename($this->getDDLBuilder()->getSequenceName()); + $sql .= "SELECT pg_catalog.setval('$seqname', ".((int)$this->maxSeqVal)."); +"; + } + return $sql; + } + + /** + * Get SQL value to insert for Postgres BOOLEAN column. + * @param boolean $value + * @return string The representation of boolean for Postgres ('t' or 'f'). + */ + protected function getBooleanSql($value) + { + if ($value === 'f' || $value === 'false' || $value === "0") { + $value = false; + } + return ($value ? "'t'" : "'f'"); + } + + /** + * + * @param mixed $blob Blob object or string containing data. + * @return string + */ + protected function getBlobSql($blob) + { + // they took magic __toString() out of PHP5.0.0; this sucks + if (is_object($blob)) { + $blob = $blob->__toString(); + } + return "'" . pg_escape_bytea($blob) . "'"; + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/sqlite/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/sqlite/.svn/all-wcprops new file mode 100644 index 0000000..f23ab50 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/sqlite/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 76 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/builder/sql/sqlite +END +SqliteDDLBuilder.php +K 25 +svn:wc:ra_dav:version-url +V 97 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/builder/sql/sqlite/SqliteDDLBuilder.php +END +SqliteDataSQLBuilder.php +K 25 +svn:wc:ra_dav:version-url +V 101 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/builder/sql/sqlite/SqliteDataSQLBuilder.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/sqlite/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/sqlite/.svn/entries new file mode 100644 index 0000000..d49a464 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/sqlite/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +2332 +http://propel.mirror.svn.symfony-project.com/tags/1.4.2/generator/classes/propel/engine/builder/sql/sqlite +http://propel.mirror.svn.symfony-project.com + + + +2010-03-15T09:45:51.619053Z +1595 +francois + + + + + + + + + + + + + + +a84bc4f6-26e8-416f-aa96-3cde13879fbb + +SqliteDDLBuilder.php +file + + + + +2012-05-10T18:42:15.713545Z +47ddd81c29bab935068110d4cd9586d0 +2010-03-15T09:45:51.619053Z +1595 +francois +has-props + + + + + + + + + + + + + + + + + + + + +3593 + +SqliteDataSQLBuilder.php +file + + + + +2012-05-10T18:42:15.713545Z +e1be8df0add70e50e0ef160f33491bc6 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +1759 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/sqlite/.svn/prop-base/SqliteDDLBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/sqlite/.svn/prop-base/SqliteDDLBuilder.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/sqlite/.svn/prop-base/SqliteDDLBuilder.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/sqlite/.svn/prop-base/SqliteDataSQLBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/sqlite/.svn/prop-base/SqliteDataSQLBuilder.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/sqlite/.svn/prop-base/SqliteDataSQLBuilder.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/sqlite/.svn/text-base/SqliteDDLBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/sqlite/.svn/text-base/SqliteDDLBuilder.php.svn-base new file mode 100644 index 0000000..d3d7239 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/sqlite/.svn/text-base/SqliteDDLBuilder.php.svn-base @@ -0,0 +1,130 @@ +. + */ + +require_once 'propel/engine/builder/sql/DDLBuilder.php'; + +/** + * The SQL DDL-building class for SQLite. + * + * + * @author Hans Lellelid + * @package propel.engine.builder.sql.pgsql + */ +class SqliteDDLBuilder extends DDLBuilder { + + /** + * + * @see parent::addDropStatement() + */ + protected function addDropStatements(&$script) + { + $table = $this->getTable(); + $platform = $this->getPlatform(); + + $script .= " +DROP TABLE ".$this->quoteIdentifier($this->prefixTablename($table->getName()))."; +"; + } + + /** + * + * @see parent::addColumns() + */ + protected function addTable(&$script) + { + $table = $this->getTable(); + $platform = $this->getPlatform(); + + $script .= " +----------------------------------------------------------------------------- +-- ".$table->getName()." +----------------------------------------------------------------------------- +"; + + $this->addDropStatements($script); + + $script .= " + +CREATE TABLE ".$this->quoteIdentifier($this->prefixTablename($table->getName()))." +( + "; + + $lines = array(); + + foreach ($table->getColumns() as $col) { + $lines[] = $this->getColumnDDL($col); + } + + if ($table->hasPrimaryKey() && count($table->getPrimaryKey()) > 1) { + $lines[] = "PRIMARY KEY (".$this->getColumnList($table->getPrimaryKey()).")"; + } + + foreach ($table->getUnices() as $unique ) { + $lines[] = "UNIQUE (".$this->getColumnList($unique->getColumns()).")"; + } + + $sep = ", + "; + $script .= implode($sep, $lines); + $script .= " +); +"; + } + + /** + * Adds CREATE INDEX statements for this table. + * @see parent::addIndices() + */ + protected function addIndices(&$script) + { + $table = $this->getTable(); + $platform = $this->getPlatform(); + + foreach ($table->getIndices() as $index) { + $script .= " +CREATE "; + if ($index->getIsUnique()) { + $script .= "UNIQUE"; + } + $script .= "INDEX ".$this->quoteIdentifier($index->getName())." ON ".$this->quoteIdentifier($this->prefixTablename($table->getName()))." (".$this->getColumnList($index->getColumns())."); +"; + } + } + + /** + * + * @see parent::addForeignKeys() + */ + protected function addForeignKeys(&$script) + { + $table = $this->getTable(); + $platform = $this->getPlatform(); + + foreach ($table->getForeignKeys() as $fk) { + $script .= " +-- SQLite does not support foreign keys; this is just for reference +-- FOREIGN KEY (".$this->getColumnList($fk->getLocalColumns()).") REFERENCES ".$this->prefixTablename($fk->getForeignTableName())." (".$this->getColumnList($fk->getForeignColumns()).") +"; + } + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/sqlite/.svn/text-base/SqliteDataSQLBuilder.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/sqlite/.svn/text-base/SqliteDataSQLBuilder.php.svn-base new file mode 100644 index 0000000..6f1abc0 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/sqlite/.svn/text-base/SqliteDataSQLBuilder.php.svn-base @@ -0,0 +1,47 @@ +. + */ + +require_once 'propel/engine/builder/sql/DataSQLBuilder.php'; + +/** + * SQLite class for building data dump SQL. + * + * @author Hans Lellelid + * @package propel.engine.builder.sql.sqlite + */ +class SqliteDataSQLBuilder extends DataSQLBuilder { + + /** + * Returns string processed by sqlite_udf_encode_binary() to ensure that binary contents will be handled correctly by sqlite. + * @param mixed $blob Blob or string + * @return string encoded text + */ + protected function getBlobSql($blob) + { + // they took magic __toString() out of PHP5.0.0; this sucks + if (is_object($blob)) { + $blob = $blob->__toString(); + } + return "'" . sqlite_udf_encode_binary($blob) . "'"; + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/sqlite/SqliteDDLBuilder.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/sqlite/SqliteDDLBuilder.php new file mode 100644 index 0000000..bfd6bea --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/sqlite/SqliteDDLBuilder.php @@ -0,0 +1,130 @@ +. + */ + +require_once 'propel/engine/builder/sql/DDLBuilder.php'; + +/** + * The SQL DDL-building class for SQLite. + * + * + * @author Hans Lellelid + * @package propel.engine.builder.sql.pgsql + */ +class SqliteDDLBuilder extends DDLBuilder { + + /** + * + * @see parent::addDropStatement() + */ + protected function addDropStatements(&$script) + { + $table = $this->getTable(); + $platform = $this->getPlatform(); + + $script .= " +DROP TABLE ".$this->quoteIdentifier($this->prefixTablename($table->getName()))."; +"; + } + + /** + * + * @see parent::addColumns() + */ + protected function addTable(&$script) + { + $table = $this->getTable(); + $platform = $this->getPlatform(); + + $script .= " +----------------------------------------------------------------------------- +-- ".$table->getName()." +----------------------------------------------------------------------------- +"; + + $this->addDropStatements($script); + + $script .= " + +CREATE TABLE ".$this->quoteIdentifier($this->prefixTablename($table->getName()))." +( + "; + + $lines = array(); + + foreach ($table->getColumns() as $col) { + $lines[] = $this->getColumnDDL($col); + } + + if ($table->hasPrimaryKey() && count($table->getPrimaryKey()) > 1) { + $lines[] = "PRIMARY KEY (".$this->getColumnList($table->getPrimaryKey()).")"; + } + + foreach ($table->getUnices() as $unique ) { + $lines[] = "UNIQUE (".$this->getColumnList($unique->getColumns()).")"; + } + + $sep = ", + "; + $script .= implode($sep, $lines); + $script .= " +); +"; + } + + /** + * Adds CREATE INDEX statements for this table. + * @see parent::addIndices() + */ + protected function addIndices(&$script) + { + $table = $this->getTable(); + $platform = $this->getPlatform(); + + foreach ($table->getIndices() as $index) { + $script .= " +CREATE "; + if ($index->getIsUnique()) { + $script .= "UNIQUE"; + } + $script .= "INDEX ".$this->quoteIdentifier($index->getName())." ON ".$this->quoteIdentifier($this->prefixTablename($table->getName()))." (".$this->getColumnList($index->getColumns())."); +"; + } + } + + /** + * + * @see parent::addForeignKeys() + */ + protected function addForeignKeys(&$script) + { + $table = $this->getTable(); + $platform = $this->getPlatform(); + + foreach ($table->getForeignKeys() as $fk) { + $script .= " +-- SQLite does not support foreign keys; this is just for reference +-- FOREIGN KEY (".$this->getColumnList($fk->getLocalColumns()).") REFERENCES ".$this->prefixTablename($fk->getForeignTableName())." (".$this->getColumnList($fk->getForeignColumns()).") +"; + } + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/sqlite/SqliteDataSQLBuilder.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/sqlite/SqliteDataSQLBuilder.php new file mode 100644 index 0000000..3422a61 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/sqlite/SqliteDataSQLBuilder.php @@ -0,0 +1,47 @@ +. + */ + +require_once 'propel/engine/builder/sql/DataSQLBuilder.php'; + +/** + * SQLite class for building data dump SQL. + * + * @author Hans Lellelid + * @package propel.engine.builder.sql.sqlite + */ +class SqliteDataSQLBuilder extends DataSQLBuilder { + + /** + * Returns string processed by sqlite_udf_encode_binary() to ensure that binary contents will be handled correctly by sqlite. + * @param mixed $blob Blob or string + * @return string encoded text + */ + protected function getBlobSql($blob) + { + // they took magic __toString() out of PHP5.0.0; this sucks + if (is_object($blob)) { + $blob = $blob->__toString(); + } + return "'" . sqlite_udf_encode_binary($blob) . "'"; + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/.svn/all-wcprops new file mode 100644 index 0000000..8ffcac1 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 70 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/builder/util +END +Pluralizer.php +K 25 +svn:wc:ra_dav:version-url +V 85 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/builder/util/Pluralizer.php +END +DefaultEnglishPluralizer.php +K 25 +svn:wc:ra_dav:version-url +V 99 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/builder/util/DefaultEnglishPluralizer.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/.svn/entries new file mode 100644 index 0000000..6b7b78e --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/.svn/entries @@ -0,0 +1,99 @@ +10 + +dir +2332 +http://propel.mirror.svn.symfony-project.com/tags/1.4.2/generator/classes/propel/engine/builder/util +http://propel.mirror.svn.symfony-project.com + + + +2009-10-26T20:54:39.333354Z +1262 +francois + + + + + + + + + + + + + + +a84bc4f6-26e8-416f-aa96-3cde13879fbb + +Pluralizer.php +file + + + + +2012-05-10T18:42:16.281553Z +f4b6725ee624767ddb10275187daa5f7 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +1493 + +transform +dir + +DefaultEnglishPluralizer.php +file + + + + +2012-05-10T18:42:16.281553Z +708bcea27e9574ebc97aeba3c0d2c65f +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +1622 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/.svn/prop-base/DefaultEnglishPluralizer.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/.svn/prop-base/DefaultEnglishPluralizer.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/.svn/prop-base/DefaultEnglishPluralizer.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/.svn/prop-base/Pluralizer.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/.svn/prop-base/Pluralizer.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/.svn/prop-base/Pluralizer.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/.svn/text-base/DefaultEnglishPluralizer.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/.svn/text-base/DefaultEnglishPluralizer.php.svn-base new file mode 100644 index 0000000..9dd9ee5 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/.svn/text-base/DefaultEnglishPluralizer.php.svn-base @@ -0,0 +1,43 @@ +. + */ + +require_once 'propel/engine/builder/util/Pluralizer.php'; + +/** + * The default Enlglish pluralizer class. + * + * @author Hans Lellelid + * @version $Revision$ + * @package propel.engine.generator + */ +class DefaultEnglishPluralizer implements Pluralizer { + + /** + * Generate a plural name based on the passed in root. + * @param string $root The root that needs to be pluralized (e.g. Author) + * @return string The plural form of $root (e.g. Authors). + */ + public function getPluralForm($root) + { + return $root . 's'; + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/.svn/text-base/Pluralizer.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/.svn/text-base/Pluralizer.php.svn-base new file mode 100644 index 0000000..5c5b9e5 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/.svn/text-base/Pluralizer.php.svn-base @@ -0,0 +1,38 @@ +. + */ + +/** + * The generic interface to create a plural form of a name. + * + * @author Hans Lellelid + * @version $Revision$ + * @package propel.engine.generator + */ +interface Pluralizer { + + /** + * Generate a plural name based on the passed in root. + * @param string $root The root that needs to be pluralized (e.g. Author) + * @return string The plural form of $root. + */ + public function getPluralForm($root); + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/DefaultEnglishPluralizer.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/DefaultEnglishPluralizer.php new file mode 100644 index 0000000..5ef3ec6 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/DefaultEnglishPluralizer.php @@ -0,0 +1,43 @@ +. + */ + +require_once 'propel/engine/builder/util/Pluralizer.php'; + +/** + * The default Enlglish pluralizer class. + * + * @author Hans Lellelid + * @version $Revision: 1262 $ + * @package propel.engine.generator + */ +class DefaultEnglishPluralizer implements Pluralizer { + + /** + * Generate a plural name based on the passed in root. + * @param string $root The root that needs to be pluralized (e.g. Author) + * @return string The plural form of $root (e.g. Authors). + */ + public function getPluralForm($root) + { + return $root . 's'; + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/Pluralizer.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/Pluralizer.php new file mode 100644 index 0000000..f0ad1b4 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/Pluralizer.php @@ -0,0 +1,38 @@ +. + */ + +/** + * The generic interface to create a plural form of a name. + * + * @author Hans Lellelid + * @version $Revision: 1262 $ + * @package propel.engine.generator + */ +interface Pluralizer { + + /** + * Generate a plural name based on the passed in root. + * @param string $root The root that needs to be pluralized (e.g. Author) + * @return string The plural form of $root. + */ + public function getPluralForm($root); + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/transform/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/transform/.svn/all-wcprops new file mode 100644 index 0000000..bc84a03 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/transform/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 80 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/builder/util/transform +END +XmlToDataSQL.php +K 25 +svn:wc:ra_dav:version-url +V 97 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/builder/util/transform/XmlToDataSQL.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/transform/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/transform/.svn/entries new file mode 100644 index 0000000..3606f41 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/transform/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +2332 +http://propel.mirror.svn.symfony-project.com/tags/1.4.2/generator/classes/propel/engine/builder/util/transform +http://propel.mirror.svn.symfony-project.com + + + +2009-10-26T20:54:39.333354Z +1262 +francois + + + + + + + + + + + + + + +a84bc4f6-26e8-416f-aa96-3cde13879fbb + +XmlToDataSQL.php +file + + + + +2012-05-10T18:42:16.273552Z +5dfb6bbf112717c3665b3d1c2395f9ed +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +6667 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/transform/.svn/prop-base/XmlToDataSQL.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/transform/.svn/prop-base/XmlToDataSQL.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/transform/.svn/prop-base/XmlToDataSQL.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/transform/.svn/text-base/XmlToDataSQL.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/transform/.svn/text-base/XmlToDataSQL.php.svn-base new file mode 100644 index 0000000..80dde5d --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/transform/.svn/text-base/XmlToDataSQL.php.svn-base @@ -0,0 +1,276 @@ +. + */ + +require_once 'phing/parser/AbstractHandler.php'; + +/** + * A Class that is used to parse an data dump XML file and create SQL using a DataSQLBuilder class. + * + * @author Hans Lellelid (Propel) + * @version $Revision$ + * @package propel.engine.database.transform + */ +class XmlToDataSQL extends AbstractHandler { + + /** + * The GeneratorConfig associated with the build. + * + * @var GeneratorConfig + */ + private $generatorConfig; + + /** + * The database. + * + * @var Database + */ + private $database; + + /** + * The output writer for the SQL file. + * + * @var Writer + */ + private $sqlWriter; + + /** + * The database (and output SQL file) encoding. + * + * Values will be converted to this encoding in the output file. + * + * @var string + */ + private $encoding; + + /** + * The classname of the static class that will perform the building. + * + * This is needed because there are some pre/post methods that get called + * on the static class. + * + * @var string + */ + private $builderClazz; + + /** + * The name of the current table being processed. + * + * @var string + */ + private $currTableName; + + /** + * The DataSQLBuilder for the current table. + * + * @var DataSQLBuilder + */ + private $currBuilder; + + /** + * Expat Parser. + * + * @var ExpatParser + */ + public $parser; + + /** + * Flag for enabing debug output to aid in parser tracing. + */ + const DEBUG = false; + + /** + * Construct new XmlToDataSQL class. + * + * This class is passed the Database object so that it knows what to expect from + * the XML file. + * + * @param Database $database + * @param GeneratorConfig $config + * @param string $encoding Database encoding + */ + public function __construct(Database $database, GeneratorConfig $config, $encoding = 'iso-8859-1') + { + $this->database = $database; + $this->generatorConfig = $config; + $this->encoding = $encoding; + } + + /** + * Transform the data dump input file into SQL and writes it to the output stream. + * + * @param PhingFile $xmlFile + * @param Writer $out + */ + public function transform(PhingFile $xmlFile, Writer $out) + { + $this->sqlWriter = $out; + + // Reset some vars just in case this is being run multiple times. + $this->currTableName = $this->currBuilder = null; + + $this->builderClazz = $this->generatorConfig->getBuilderClassname('datasql'); + + try { + $fr = new FileReader($xmlFile); + } catch (Exception $e) { + throw new BuildException("XML File not found: " . $xmlFile->getAbsolutePath()); + } + + $br = new BufferedReader($fr); + + $this->parser = new ExpatParser($br); + $this->parser->parserSetOption(XML_OPTION_CASE_FOLDING, 0); + $this->parser->setHandler($this); + + try { + $this->parser->parse(); + } catch (Exception $e) { + print $e->getMessage() . "\n"; + $br->close(); + } + $br->close(); + } + + /** + * Handles opening elements of the xml file. + */ + public function startElement($name, $attributes) + { + try { + if ($name == "dataset") { + // Clear any start/end DLL + call_user_func(array($this->builderClazz, 'reset')); + $this->sqlWriter->write(call_user_func(array($this->builderClazz, 'getDatabaseStartSql'))); + } else { + + // we're processing a row of data + // where tag name is phpName e.g. + + $table = $this->database->getTableByPhpName($name); + + $columnValues = array(); + foreach ($attributes as $name => $value) { + $col = $table->getColumnByPhpName($name); + $columnValues[] = new ColumnValue($col, iconv('utf-8',$this->encoding, $value)); + } + + $data = new DataRow($table, $columnValues); + + if ($this->currTableName !== $table->getName()) { + // new table encountered + + if ($this->currBuilder !== null) { + $this->sqlWriter->write($this->currBuilder->getTableEndSql()); + } + + $this->currTableName = $table->getName(); + $this->currBuilder = $this->generatorConfig->getConfiguredBuilder($table, 'datasql'); + + $this->sqlWriter->write($this->currBuilder->getTableStartSql()); + } + + // Write the SQL + $this->sqlWriter->write($this->currBuilder->buildRowSql($data)); + + } + + } catch (Exception $e) { + // Exceptions have traditionally not bubbled up nicely from the expat parser, + // so we also print the stack trace here. + print $e; + throw $e; + } + } + + + /** + * Handles closing elements of the xml file. + * + * @param $name The local name (without prefix), or the empty string if + * Namespace processing is not being performed. + */ + public function endElement($name) + { + if (self::DEBUG) { + print("endElement(" . $name . ") called\n"); + } + if ($name == "dataset") { + if ($this->currBuilder !== null) { + $this->sqlWriter->write($this->currBuilder->getTableEndSql()); + } + $this->sqlWriter->write(call_user_func(array($this->builderClazz, 'getDatabaseEndSql'))); + } + } + +} // XmlToData + +/** + * "inner class" + * @package propel.engine.database.transform + */ +class DataRow +{ + private $table; + private $columnValues; + + public function __construct(Table $table, $columnValues) + { + $this->table = $table; + $this->columnValues = $columnValues; + } + + public function getTable() + { + return $this->table; + } + + public function getColumnValues() + { + return $this->columnValues; + } +} + +/** + * "inner" class + * @package propel.engine.database.transform + */ +class ColumnValue { + + private $col; + private $val; + + public function __construct(Column $col, $val) + { + $this->col = $col; + $this->val = $val; + } + + public function getColumn() + { + return $this->col; + } + + public function getValue() + { + return $this->val; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/transform/XmlToDataSQL.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/transform/XmlToDataSQL.php new file mode 100644 index 0000000..14be59e --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/util/transform/XmlToDataSQL.php @@ -0,0 +1,276 @@ +. + */ + +require_once 'phing/parser/AbstractHandler.php'; + +/** + * A Class that is used to parse an data dump XML file and create SQL using a DataSQLBuilder class. + * + * @author Hans Lellelid (Propel) + * @version $Revision: 1262 $ + * @package propel.engine.database.transform + */ +class XmlToDataSQL extends AbstractHandler { + + /** + * The GeneratorConfig associated with the build. + * + * @var GeneratorConfig + */ + private $generatorConfig; + + /** + * The database. + * + * @var Database + */ + private $database; + + /** + * The output writer for the SQL file. + * + * @var Writer + */ + private $sqlWriter; + + /** + * The database (and output SQL file) encoding. + * + * Values will be converted to this encoding in the output file. + * + * @var string + */ + private $encoding; + + /** + * The classname of the static class that will perform the building. + * + * This is needed because there are some pre/post methods that get called + * on the static class. + * + * @var string + */ + private $builderClazz; + + /** + * The name of the current table being processed. + * + * @var string + */ + private $currTableName; + + /** + * The DataSQLBuilder for the current table. + * + * @var DataSQLBuilder + */ + private $currBuilder; + + /** + * Expat Parser. + * + * @var ExpatParser + */ + public $parser; + + /** + * Flag for enabing debug output to aid in parser tracing. + */ + const DEBUG = false; + + /** + * Construct new XmlToDataSQL class. + * + * This class is passed the Database object so that it knows what to expect from + * the XML file. + * + * @param Database $database + * @param GeneratorConfig $config + * @param string $encoding Database encoding + */ + public function __construct(Database $database, GeneratorConfig $config, $encoding = 'iso-8859-1') + { + $this->database = $database; + $this->generatorConfig = $config; + $this->encoding = $encoding; + } + + /** + * Transform the data dump input file into SQL and writes it to the output stream. + * + * @param PhingFile $xmlFile + * @param Writer $out + */ + public function transform(PhingFile $xmlFile, Writer $out) + { + $this->sqlWriter = $out; + + // Reset some vars just in case this is being run multiple times. + $this->currTableName = $this->currBuilder = null; + + $this->builderClazz = $this->generatorConfig->getBuilderClassname('datasql'); + + try { + $fr = new FileReader($xmlFile); + } catch (Exception $e) { + throw new BuildException("XML File not found: " . $xmlFile->getAbsolutePath()); + } + + $br = new BufferedReader($fr); + + $this->parser = new ExpatParser($br); + $this->parser->parserSetOption(XML_OPTION_CASE_FOLDING, 0); + $this->parser->setHandler($this); + + try { + $this->parser->parse(); + } catch (Exception $e) { + print $e->getMessage() . "\n"; + $br->close(); + } + $br->close(); + } + + /** + * Handles opening elements of the xml file. + */ + public function startElement($name, $attributes) + { + try { + if ($name == "dataset") { + // Clear any start/end DLL + call_user_func(array($this->builderClazz, 'reset')); + $this->sqlWriter->write(call_user_func(array($this->builderClazz, 'getDatabaseStartSql'))); + } else { + + // we're processing a row of data + // where tag name is phpName e.g. + + $table = $this->database->getTableByPhpName($name); + + $columnValues = array(); + foreach ($attributes as $name => $value) { + $col = $table->getColumnByPhpName($name); + $columnValues[] = new ColumnValue($col, iconv('utf-8',$this->encoding, $value)); + } + + $data = new DataRow($table, $columnValues); + + if ($this->currTableName !== $table->getName()) { + // new table encountered + + if ($this->currBuilder !== null) { + $this->sqlWriter->write($this->currBuilder->getTableEndSql()); + } + + $this->currTableName = $table->getName(); + $this->currBuilder = $this->generatorConfig->getConfiguredBuilder($table, 'datasql'); + + $this->sqlWriter->write($this->currBuilder->getTableStartSql()); + } + + // Write the SQL + $this->sqlWriter->write($this->currBuilder->buildRowSql($data)); + + } + + } catch (Exception $e) { + // Exceptions have traditionally not bubbled up nicely from the expat parser, + // so we also print the stack trace here. + print $e; + throw $e; + } + } + + + /** + * Handles closing elements of the xml file. + * + * @param $name The local name (without prefix), or the empty string if + * Namespace processing is not being performed. + */ + public function endElement($name) + { + if (self::DEBUG) { + print("endElement(" . $name . ") called\n"); + } + if ($name == "dataset") { + if ($this->currBuilder !== null) { + $this->sqlWriter->write($this->currBuilder->getTableEndSql()); + } + $this->sqlWriter->write(call_user_func(array($this->builderClazz, 'getDatabaseEndSql'))); + } + } + +} // XmlToData + +/** + * "inner class" + * @package propel.engine.database.transform + */ +class DataRow +{ + private $table; + private $columnValues; + + public function __construct(Table $table, $columnValues) + { + $this->table = $table; + $this->columnValues = $columnValues; + } + + public function getTable() + { + return $this->table; + } + + public function getColumnValues() + { + return $this->columnValues; + } +} + +/** + * "inner" class + * @package propel.engine.database.transform + */ +class ColumnValue { + + private $col; + private $val; + + public function __construct(Column $col, $val) + { + $this->col = $col; + $this->val = $val; + } + + public function getColumn() + { + return $this->col; + } + + public function getValue() + { + return $this->val; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/.svn/all-wcprops new file mode 100644 index 0000000..ec702a4 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 66 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/database +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/.svn/entries new file mode 100644 index 0000000..8bcc88f --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/.svn/entries @@ -0,0 +1,37 @@ +10 + +dir +2332 +http://propel.mirror.svn.symfony-project.com/tags/1.4.2/generator/classes/propel/engine/database +http://propel.mirror.svn.symfony-project.com + + + +2010-03-15T09:16:23.460809Z +1594 +francois + + + + + + + + + + + + + + +a84bc4f6-26e8-416f-aa96-3cde13879fbb + +model +dir + +reverse +dir + +transform +dir + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/all-wcprops new file mode 100644 index 0000000..dd86e46 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/all-wcprops @@ -0,0 +1,137 @@ +K 25 +svn:wc:ra_dav:version-url +V 72 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/database/model +END +Inheritance.php +K 25 +svn:wc:ra_dav:version-url +V 88 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/database/model/Inheritance.php +END +ConstraintNameGenerator.php +K 25 +svn:wc:ra_dav:version-url +V 100 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/database/model/ConstraintNameGenerator.php +END +IDMethod.php +K 25 +svn:wc:ra_dav:version-url +V 85 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/database/model/IDMethod.php +END +Column.php +K 25 +svn:wc:ra_dav:version-url +V 83 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/database/model/Column.php +END +IdMethodParameter.php +K 25 +svn:wc:ra_dav:version-url +V 94 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/database/model/IdMethodParameter.php +END +PhpNameGenerator.php +K 25 +svn:wc:ra_dav:version-url +V 93 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/database/model/PhpNameGenerator.php +END +ColumnDefaultValue.php +K 25 +svn:wc:ra_dav:version-url +V 95 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/database/model/ColumnDefaultValue.php +END +Behavior.php +K 25 +svn:wc:ra_dav:version-url +V 85 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/database/model/Behavior.php +END +ForeignKey.php +K 25 +svn:wc:ra_dav:version-url +V 87 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/database/model/ForeignKey.php +END +Database.php +K 25 +svn:wc:ra_dav:version-url +V 85 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/database/model/Database.php +END +Unique.php +K 25 +svn:wc:ra_dav:version-url +V 83 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/database/model/Unique.php +END +Index.php +K 25 +svn:wc:ra_dav:version-url +V 82 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/database/model/Index.php +END +Domain.php +K 25 +svn:wc:ra_dav:version-url +V 83 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/database/model/Domain.php +END +Rule.php +K 25 +svn:wc:ra_dav:version-url +V 81 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/database/model/Rule.php +END +NameFactory.php +K 25 +svn:wc:ra_dav:version-url +V 88 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/database/model/NameFactory.php +END +VendorInfo.php +K 25 +svn:wc:ra_dav:version-url +V 87 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/database/model/VendorInfo.php +END +AppData.php +K 25 +svn:wc:ra_dav:version-url +V 84 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/database/model/AppData.php +END +XMLElement.php +K 25 +svn:wc:ra_dav:version-url +V 87 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/database/model/XMLElement.php +END +Validator.php +K 25 +svn:wc:ra_dav:version-url +V 86 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/database/model/Validator.php +END +PropelTypes.php +K 25 +svn:wc:ra_dav:version-url +V 88 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/database/model/PropelTypes.php +END +NameGenerator.php +K 25 +svn:wc:ra_dav:version-url +V 90 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/database/model/NameGenerator.php +END +Table.php +K 25 +svn:wc:ra_dav:version-url +V 82 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/database/model/Table.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/entries new file mode 100644 index 0000000..de19383 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/entries @@ -0,0 +1,776 @@ +10 + +dir +2332 +http://propel.mirror.svn.symfony-project.com/tags/1.4.2/generator/classes/propel/engine/database/model +http://propel.mirror.svn.symfony-project.com + + + +2010-03-15T09:16:23.460809Z +1594 +francois + + + + + + + + + + + + + + +a84bc4f6-26e8-416f-aa96-3cde13879fbb + +Inheritance.php +file + + + + +2012-05-10T18:42:15.021553Z +9e20c76d839dea118a282108f02ada5f +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +3747 + +ConstraintNameGenerator.php +file + + + + +2012-05-10T18:42:15.021553Z +61fa84b36dca6c19fb85fe63b6e0a17e +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +2828 + +IDMethod.php +file + + + + +2012-05-10T18:42:15.033551Z +5ac1db16ca78004f31e99889cb291f9c +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +1635 + +Column.php +file + + + + +2012-05-10T18:42:15.021553Z +8d3209542a7ef9a8b03fbfa8905c6ac2 +2010-03-15T09:16:23.460809Z +1594 +francois +has-props + + + + + + + + + + + + + + + + + + + + +32609 + +IdMethodParameter.php +file + + + + +2012-05-10T18:42:15.033551Z +e1932f285a70a5ca0b3ac185de2ef79a +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +2976 + +PhpNameGenerator.php +file + + + + +2012-05-10T18:42:15.130245Z +8d1720e9d4e52de7bb5715cc53b4cdf0 +2010-02-02T20:30:58.278220Z +1514 +francois +has-props + + + + + + + + + + + + + + + + + + + + +5737 + +ColumnDefaultValue.php +file + + + + +2012-05-10T18:42:15.130245Z +7d727fe8f8d918f6d05be67e5a240f82 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +2889 + +Behavior.php +file + + + + +2012-05-10T18:42:15.033551Z +35a8d93800cba8c4076c4c93f9c5ebed +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +4788 + +ForeignKey.php +file + + + + +2012-05-10T18:42:15.130245Z +b5d80aa461264c90f2a8bdf1860e91e9 +2010-01-12T18:02:08.715207Z +1448 +francois +has-props + + + + + + + + + + + + + + + + + + + + +10794 + +Database.php +file + + + + +2012-05-10T18:42:15.133551Z +85530e0f748c42c39a7982bde6133d2d +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +15218 + +Unique.php +file + + + + +2012-05-10T18:42:15.133551Z +6313b7da2204d681db8a9aa3f4c78c6c +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +2382 + +Index.php +file + + + + +2012-05-10T18:42:15.137552Z +0a705834f86dc9990887db5aa617144e +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +6773 + +Domain.php +file + + + + +2012-05-10T18:42:15.137552Z +4ab3ac4cb061150f78b3a146525fe464 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +9237 + +Rule.php +file + + + + +2012-05-10T18:42:15.133551Z +cecde0c3f52ca6f7d7d2b7b07547f54e +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +6017 + +NameFactory.php +file + + + + +2012-05-10T18:42:15.137552Z +238e6dc15dc4c2bbf7bb62da9c37427d +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +2970 + +VendorInfo.php +file + + + + +2012-05-10T18:42:15.141551Z +2e4f86d483e433e9cd655f9c264027d0 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +4419 + +AppData.php +file + + + + +2012-05-10T18:42:15.141551Z +59e29ff097255d67379fb8d9dc23360a +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +5342 + +XMLElement.php +file + + + + +2012-05-10T18:42:15.141551Z +e55693c50c811afd3b4f211180a93a1a +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +5584 + +Validator.php +file + + + + +2012-05-10T18:42:15.141551Z +fee2cf919a088e99411091c1ec8b3450 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +4869 + +PropelTypes.php +file + + + + +2012-05-10T18:42:15.145551Z +9d4413c963327481e2cbd38e38f5fc14 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +10643 + +NameGenerator.php +file + + + + +2012-05-10T18:42:15.145551Z +262043332176cf3b7e25798b0a6b7dc0 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +3020 + +Table.php +file + + + + +2012-05-10T18:42:15.149551Z +d95348b66db2ab7d99f07c0a9a12ec72 +2009-10-30T22:51:21.258043Z +1268 +francois +has-props + + + + + + + + + + + + + + + + + + + + +35778 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/AppData.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/AppData.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/AppData.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/Behavior.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/Behavior.php.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/Behavior.php.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/Column.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/Column.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/Column.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/ColumnDefaultValue.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/ColumnDefaultValue.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/ColumnDefaultValue.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/ConstraintNameGenerator.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/ConstraintNameGenerator.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/ConstraintNameGenerator.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/Database.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/Database.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/Database.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/Domain.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/Domain.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/Domain.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/ForeignKey.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/ForeignKey.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/ForeignKey.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/IDMethod.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/IDMethod.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/IDMethod.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/IdMethodParameter.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/IdMethodParameter.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/IdMethodParameter.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/Index.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/Index.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/Index.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/Inheritance.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/Inheritance.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/Inheritance.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/NameFactory.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/NameFactory.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/NameFactory.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/NameGenerator.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/NameGenerator.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/NameGenerator.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/PhpNameGenerator.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/PhpNameGenerator.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/PhpNameGenerator.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/PropelTypes.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/PropelTypes.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/PropelTypes.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/Rule.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/Rule.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/Rule.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/Table.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/Table.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/Table.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/Unique.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/Unique.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/Unique.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/Validator.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/Validator.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/Validator.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/VendorInfo.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/VendorInfo.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/VendorInfo.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/XMLElement.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/XMLElement.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/prop-base/XMLElement.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/AppData.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/AppData.php.svn-base new file mode 100644 index 0000000..4798a7b --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/AppData.php.svn-base @@ -0,0 +1,216 @@ +. + */ + +include_once 'propel/engine/EngineException.php'; +include_once 'propel/engine/database/model/Database.php'; + +/** + * A class for holding application data structures. + * + * @author Hans Lellelid (Propel) + * @author Leon Messerschmidt (Torque) + * @author John McNally (Torque) + * @author Daniel Rall (Torque) + * @version $Revision$ + * @package propel.engine.database.model + */ +class AppData { + + /** + * The list of databases for this application. + * @var array Database[] + */ + private $dbList = array(); + + /** + * The platform class for our database(s). + * @var string + */ + private $platform; + + /** + * Name of the database. Only one database definition + * is allowed in one XML descriptor. + */ + private $name; + + /** + * Flag to ensure that initialization is performed only once. + * @var boolean + */ + private $isInitialized = false; + + /** + * Creates a new instance for the specified database type. + * + * @param Platform $platform The platform object to use for any databases added to this application model. + */ + public function __construct(Platform $platform) + { + $this->platform = $platform; + } + + /** + * Gets the platform object to use for any databases added to this application model. + * + * @return Platform + */ + public function getPlatform() + { + return $this->platform; + } + + /** + * Set the name of the database. + * + * @param name of the database. + */ + public function setName($name) + { + $this->name = $name; + } + + /** + * Get the name of the database. + * + * @return String name + */ + public function getName() + { + return $this->name; + } + + /** + * Get the short name of the database (without the '-schema' postfix). + * + * @return String name + */ + public function getShortName() + { + return str_replace("-schema", "", $this->name); + } + + /** + * Return an array of all databases + * + * @return Array of Database objects + */ + public function getDatabases($doFinalInit = true) + { + // this is temporary until we'll have a clean solution + // for packaging datamodels/requiring schemas + if ($doFinalInit) { + $this->doFinalInitialization(); + } + return $this->dbList; + } + + /** + * Returns whether this application has multiple databases. + * + * @return boolean True if the application has multiple databases + */ + public function hasMultipleDatabases() + { + return (count($this->dbList) > 1); + } + + /** + * Return the database with the specified name. + * + * @param name database name + * @return A Database object. If it does not exist it returns null + */ + public function getDatabase($name = null, $doFinalInit = true) + { + // this is temporary until we'll have a clean solution + // for packaging datamodels/requiring schemas + if ($doFinalInit) { + $this->doFinalInitialization(); + } + + if ($name === null) { + return $this->dbList[0]; + } + + for ($i=0,$size=count($this->dbList); $i < $size; $i++) { + $db = $this->dbList[$i]; + if ($db->getName() === $name) { + return $db; + } + } + return null; + } + + /** + * Add a database to the list and sets the AppData property to this + * AppData + * + * @param db the database to add + */ + public function addDatabase($db) + { + if ($db instanceof Database) { + $db->setAppData($this); + if ($db->getPlatform() === null) { + $db->setPlatform($this->platform); + } + $this->dbList[] = $db; + return $db; + } else { + // XML attributes array / hash + $d = new Database(); + $d->loadFromXML($db); + return $this->addDatabase($d); // calls self w/ different param type + } + + } + + /** + * + * @return void + */ + private function doFinalInitialization() + { + if (!$this->isInitialized) { + for ($i=0, $size=count($this->dbList); $i < $size; $i++) { + $this->dbList[$i]->doFinalInitialization(); + } + $this->isInitialized = true; + } + } + + /** + * Creats a string representation of this AppData. + * The representation is given in xml format. + * + * @return string Representation in xml format + */ + public function toString() + { + $result = "\n"; + for ($i=0,$size=count($this->dbList); $i < $size; $i++) { + $result .= $this->dbList[$i]->toString(); + } + $result .= ""; + return $result; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/Behavior.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/Behavior.php.svn-base new file mode 100644 index 0000000..efbeef2 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/Behavior.php.svn-base @@ -0,0 +1,184 @@ +. + */ + +include_once 'propel/engine/database/model/Index.php'; + +/** + * Information about behaviors of a table. + * + * @author François Zaninotto + * @version $Revision: 989 $ + * @package propel.engine.database.model + */ +class Behavior extends XMLElement { + + protected $table; + protected $database; + protected $name; + protected $parameters = array(); + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setTable(Table $table) + { + $this->table = $table; + } + + public function getTable() + { + return $this->table; + } + + public function setDatabase(Database $database) + { + $this->database = $database; + } + + public function getDatabase() + { + return $this->database; + } + + /** + * Add a parameter + * Expects an associative array looking like array('name' => 'foo', 'value' => bar) + * + * @param array associative array with name and value keys + */ + public function addParameter($attribute) + { + $attribute = array_change_key_case($attribute, CASE_LOWER); + $this->parameters[$attribute['name']] = $attribute['value']; + } + + /** + * Overrides the behavior parameters + * Expects an associative array looking like array('foo' => 'bar') + * + * @param array associative array + */ + public function setParameters($parameters) + { + $this->parameters = $parameters; + } + + /** + * Get the associative array of parameters + * @return array + */ + public function getParameters() + { + return $this->parameters; + } + + public function getParameter($name) + { + return $this->parameters[$name]; + } + + /** + * This method is automatically called on database behaviors when the database model is finished + * Propagate the behavior to the tables of the database + * Override this method to have a database behavior do something special + */ + public function modifyDatabase() + { + foreach ($this->getDatabase()->getTables() as $table) + { + $b = clone $this; + $table->addBehavior($b); + } + } + + /** + * This method is automatically called on table behaviors when the database model is finished + * Override it to add columns to the current table + */ + public function modifyTable() + { + } + + /** + * Retrieve a column object using a name stored in the behavior parameters + * Useful for table behaviors + * + * @param string $param Name of the parameter storing the column name + * @return ColumnMap The column of the table supporting the behavior + */ + public function getColumnForParameter($param) + { + return $this->getTable()->getColumn($this->getParameter($param)); + } + + /** + * Sets up the Behavior object based on the attributes that were passed to loadFromXML(). + * @see parent::loadFromXML() + */ + protected function setupObject() + { + $this->name = $this->getAttribute("name"); + } + + /** + * @see parent::appendXml(DOMNode) + */ + public function appendXml(DOMNode $node) + { + $doc = ($node instanceof DOMDocument) ? $node : $node->ownerDocument; + + $bNode = $node->appendChild($doc->createElement('behavior')); + $bNode->setAttribute('name', $this->getName()); + + foreach ($this->parameters as $name => $value) { + $parameterNode = $bNode->appendChild($doc->createElement('parameter')); + $parameterNode->setAttribute('name', $name); + $parameterNode->setAttribute('value', $value); + } + } + + public function getTableModifier() + { + return $this; + } + + public function getObjectBuilderModifier() + { + return $this; + } + + public function getPeerBuilderModifier() + { + return $this; + } + + public function getTableMapBuilderModifier() + { + return $this; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/Column.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/Column.php.svn-base new file mode 100644 index 0000000..db16d37 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/Column.php.svn-base @@ -0,0 +1,1184 @@ +. + */ + +require_once 'propel/engine/database/model/XMLElement.php'; +include_once 'propel/engine/EngineException.php'; +include_once 'propel/engine/database/model/PropelTypes.php'; +include_once 'propel/engine/database/model/Inheritance.php'; +include_once 'propel/engine/database/model/Domain.php'; +include_once 'propel/engine/database/model/ColumnDefaultValue.php'; + +/** + * A Class for holding data about a column used in an Application. + * + * @author Hans Lellelid (Propel) + * @author Leon Messerschmidt (Torque) + * @author Jason van Zyl (Torque) + * @author Jon S. Stevens (Torque) + * @author Daniel Rall (Torque) + * @author Byron Foster (Torque) + * @author Bernd Goldschmidt + * @version $Revision$ + * @package propel.engine.database.model + */ +class Column extends XMLElement { + + const DEFAULT_TYPE = "VARCHAR"; + const DEFAULT_VISIBILITY = 'public'; + public static $valid_visibilities = array('public', 'protected', 'private'); + + private $name; + private $description; + private $phpName = null; + private $phpNamingMethod; + private $isNotNull = false; + private $size; + private $namePrefix; + private $accessorVisibility; + private $mutatorVisibility; + + /** + * The name to use for the Peer constant that identifies this column. + * (Will be converted to all-uppercase in the templates.) + * @var string + */ + private $peerName; + + /** + * Native PHP type (scalar or class name) + * @var string "string", "boolean", "int", "double" + */ + private $phpType; + + /** + * @var Table + */ + private $parentTable; + + private $position; + private $isPrimaryKey = false; + private $isNodeKey = false; + private $nodeKeySep; + private $isNestedSetLeftKey = false; + private $isNestedSetRightKey = false; + private $isTreeScopeKey = false; + private $isUnique = false; + private $isAutoIncrement = false; + private $isLazyLoad = false; + private $defaultValue; + private $referrers; + private $isPrimaryString = false; + + // only one type is supported currently, which assumes the + // column either contains the classnames or a key to + // classnames specified in the schema. Others may be + // supported later. + private $inheritanceType; + private $isInheritance; + private $isEnumeratedClasses; + private $inheritanceList; + private $needsTransactionInPostgres; //maybe this can be retrieved from vendorSpecificInfo + + /** class name to do input validation on this column */ + private $inputValidator = null; + + /** + * @var Domain The domain object associated with this Column. + */ + private $domain; + + /** + * Creates a new column and set the name + * + * @param name column name + */ + public function __construct($name = null) + { + $this->name = $name; + } + + /** + * Return a comma delimited string listing the specified columns. + * + * @param columns Either a list of Column objects, or + * a list of String objects with column names. + * @deprecated Use the DDLBuilder->getColumnList() method instead; this will be removed in 1.3 + */ + public static function makeList($columns, Platform $platform) + { + $list = array(); + foreach ($columns as $col) { + if ($col instanceof Column) { + $col = $col->getName(); + } + $list[] = $platform->quoteIdentifier($col); + } + return implode(", ", $list); + } + + /** + * Sets up the Column object based on the attributes that were passed to loadFromXML(). + * @see parent::loadFromXML() + */ + protected function setupObject() + { + try { + $dom = $this->getAttribute("domain"); + if ($dom) { + $this->getDomain()->copy($this->getTable()->getDatabase()->getDomain($dom)); + } else { + $type = strtoupper($this->getAttribute("type")); + if ($type) { + $this->getDomain()->copy($this->getPlatform()->getDomainForType($type)); + } else { + $this->getDomain()->copy($this->getPlatform()->getDomainForType(self::DEFAULT_TYPE)); + } + } + + $this->name = $this->getAttribute("name"); + $this->phpName = $this->getAttribute("phpName"); + $this->phpType = $this->getAttribute("phpType"); + + if ($this->getAttribute("prefix", null) !== null) { + $this->namePrefix = $this->getAttribute("prefix"); + } elseif ($this->getTable()->getAttribute('columnPrefix', null) !== null) { + $this->namePrefix = $this->getTable()->getAttribute('columnPrefix'); + } else { + $this->namePrefix = ''; + } + + // Accessor visibility + if ($this->getAttribute('accessorVisibility', null) !== null) { + $this->setAccessorVisibility($this->getAttribute('accessorVisibility')); + } elseif ($this->getTable()->getAttribute('defaultAccessorVisibility', null) !== null) { + $this->setAccessorVisibility($this->getTable()->getAttribute('defaultAccessorVisibility')); + } elseif ($this->getTable()->getDatabase()->getAttribute('defaultAccessorVisibility', null) !== null) { + $this->setAccessorVisibility($this->getTable()->getDatabase()->getAttribute('defaultAccessorVisibility')); + } else { + $this->setAccessorVisibility(self::DEFAULT_VISIBILITY); + } + + // Mutator visibility + if ($this->getAttribute('mutatorVisibility', null) !== null) { + $this->setMutatorVisibility($this->getAttribute('mutatorVisibility')); + } elseif ($this->getTable()->getAttribute('defaultMutatorVisibility', null) !== null) { + $this->setMutatorVisibility($this->getTable()->getAttribute('defaultMutatorVisibility')); + } elseif ($this->getTable()->getDatabase()->getAttribute('defaultMutatorVisibility', null) !== null) { + $this->setMutatorVisibility($this->getTable()->getDatabase()->getAttribute('defaultMutatorVisibility')); + } else { + $this->setMutatorVisibility(self::DEFAULT_VISIBILITY); + } + + $this->peerName = $this->getAttribute("peerName"); + + // retrieves the method for converting from specified name to a PHP name, defaulting to parent tables default method + $this->phpNamingMethod = $this->getAttribute("phpNamingMethod", $this->parentTable->getDatabase()->getDefaultPhpNamingMethod()); + + $this->isPrimaryString = $this->booleanValue($this->getAttribute("primaryString")); + + $this->isPrimaryKey = $this->booleanValue($this->getAttribute("primaryKey")); + + $this->isNodeKey = $this->booleanValue($this->getAttribute("nodeKey")); + $this->nodeKeySep = $this->getAttribute("nodeKeySep", "."); + + $this->isNestedSetLeftKey = $this->booleanValue($this->getAttribute("nestedSetLeftKey")); + $this->isNestedSetRightKey = $this->booleanValue($this->getAttribute("nestedSetRightKey")); + $this->isTreeScopeKey = $this->booleanValue($this->getAttribute("treeScopeKey")); + + $this->isNotNull = ($this->booleanValue($this->getAttribute("required"), false) || $this->isPrimaryKey); // primary keys are required + + //AutoIncrement/Sequences + $this->isAutoIncrement = $this->booleanValue($this->getAttribute("autoIncrement")); + $this->isLazyLoad = $this->booleanValue($this->getAttribute("lazyLoad")); + + // Add type, size information to associated Domain object + $this->getDomain()->replaceSqlType($this->getAttribute("sqlType")); + if (!$this->getAttribute("size") && $this->getDomain()->getType() == 'VARCHAR' && !$this->getAttribute("sqlType")) { + $size = 255; + } else { + $size = $this->getAttribute("size"); + } + $this->getDomain()->replaceSize($size); + $this->getDomain()->replaceScale($this->getAttribute("scale")); + + $defval = $this->getAttribute("defaultValue", $this->getAttribute("default")); + if ($defval !== null && strtolower($defval) !== 'null') { + $this->getDomain()->setDefaultValue(new ColumnDefaultValue($defval, ColumnDefaultValue::TYPE_VALUE)); + } elseif ($this->getAttribute("defaultExpr") !== null) { + $this->getDomain()->setDefaultValue(new ColumnDefaultValue($this->getAttribute("defaultExpr"), ColumnDefaultValue::TYPE_EXPR)); + } + + $this->inheritanceType = $this->getAttribute("inheritance"); + $this->isInheritance = ($this->inheritanceType !== null + && $this->inheritanceType !== "false"); // here we are only checking for 'false', so don't + // use boleanValue() + + $this->inputValidator = $this->getAttribute("inputValidator"); + $this->description = $this->getAttribute("description"); + } catch (Exception $e) { + throw new EngineException("Error setting up column " . var_export($this->getAttribute("name"), true) . ": " . $e->getMessage()); + } + } + + /** + * Gets domain for this column, creating a new empty domain object if none is set. + * @return Domain + */ + public function getDomain() + { + if ($this->domain === null) { + $this->domain = new Domain(); + } + return $this->domain; + } + + /** + * Returns table.column + */ + public function getFullyQualifiedName() + { + return ($this->parentTable->getName() . '.' . $this->getName()); + } + + /** + * Get the name of the column + */ + public function getName() + { + return $this->name; + } + + /** + * Set the name of the column + */ + public function setName($newName) + { + $this->name = $newName; + } + + /** + * Get the description for the Table + */ + public function getDescription() + { + return $this->description; + } + + /** + * Set the description for the Table + * + * @param newDescription description for the Table + */ + public function setDescription($newDescription) + { + $this->description = $newDescription; + } + + /** + * Get name to use in PHP sources. It will set & return + * a self-generated phpName from it's name if it's + * not already set. + * @return string + */ + public function getPhpName() + { + if ($this->phpName === null) { + $this->setPhpName(); + } + return $this->phpName; + } + + /** + * Set name to use in PHP sources. + * + * It will generate a phpName from it's name if no + * $phpName is passed. + * + * @param String $phpName PhpName to be set + */ + public function setPhpName($phpName = null) + { + if ($phpName == null) { + $this->phpName = self::generatePhpName($this->name, $this->phpNamingMethod, $this->namePrefix); + } else { + $this->phpName = $phpName; + } + } + + /** + * Get studly version of PHP name. + * + * The studly name is the PHP name with the first character lowercase. + * + * @return string + */ + public function getStudlyPhpName() + { + $phpname = $this->getPhpName(); + if (strlen($phpname) > 1) { + return strtolower(substr($phpname, 0, 1)) . substr($phpname, 1); + } else { // 0 or 1 chars (I suppose that's rare) + return strtolower($phpname); + } + } + + /** + * Get the visibility of the accessors of this column / attribute + * @return string + */ + public function getAccessorVisibility() { + if ($this->accessorVisibility !== null) { + return $this->accessorVisibility; + } else { + return self::DEFAULT_VISIBILITY; + } + } + + /** + * Set the visibility of the accessor methods for this column / attribute + * @param $newVisibility string + */ + public function setAccessorVisibility($newVisibility) { + if (in_array($newVisibility, self::$valid_visibilities)) { + $this->accessorVisibility = $newVisibility; + } else { + $this->accessorVisibility = self::DEFAULT_VISIBILITY; + } + + } + + /** + * Get the visibility of the mutator of this column / attribute + * @return string + */ + public function getMutatorVisibility() { + if ($this->mutatorVisibility !== null) { + return $this->mutatorVisibility; + } else { + return self::DEFAULT_VISIBILITY; + } + } + + /** + * Set the visibility of the mutator methods for this column / attribute + * @param $newVisibility string + */ + public function setMutatorVisibility($newVisibility) { + if (in_array($newVisibility, self::$valid_visibilities)) { + $this->mutatorVisibility = $newVisibility; + } else { + $this->mutatorVisibility = self::DEFAULT_VISIBILITY; + } + + } + + /** + * Get the column constant name (e.g. PeerName::COLUMN_NAME). + * + * @return string A column constant name for insertion into PHP code + */ + public function getConstantName() + { + $classname = $this->getTable()->getPhpName() . 'Peer'; + // was it overridden in schema.xml ? + if ($this->getPeerName()) { + $const = strtoupper($this->getPeerName()); + } else { + $const = strtoupper($this->getName()); + } + return $classname.'::'.$const; + } + + /** + * Get the Peer constant name that will identify this column. + * @return string + */ + public function getPeerName() { + return $this->peerName; + } + + /** + * Set the Peer constant name that will identify this column. + * @param $name string + */ + public function setPeerName($name) { + $this->peerName = $name; + } + + /** + * Get type to use in PHP sources. + * + * If no type has been specified, then uses results of getPhpNative(). + * + * @return string The type name. + * @see getPhpNative() + */ + public function getPhpType() + { + if ($this->phpType !== null) { + return $this->phpType; + } + return $this->getPhpNative(); + } + + /** + * Get the location of this column within the table (one-based). + * @return int value of position. + */ + public function getPosition() + { + return $this->position; + } + + /** + * Get the location of this column within the table (one-based). + * @param int $v Value to assign to position. + */ + public function setPosition($v) + { + $this->position = $v; + } + + /** + * Set the parent Table of the column + */ + public function setTable(Table $parent) + { + $this->parentTable = $parent; + } + + /** + * Get the parent Table of the column + */ + public function getTable() + { + return $this->parentTable; + } + + /** + * Returns the Name of the table the column is in + */ + public function getTableName() + { + return $this->parentTable->getName(); + } + + /** + * Adds a new inheritance definition to the inheritance list and set the + * parent column of the inheritance to the current column + * @param mixed $inhdata Inheritance or XML data. + */ + public function addInheritance($inhdata) + { + if ($inhdata instanceof Inheritance) { + $inh = $inhdata; + $inh->setColumn($this); + if ($this->inheritanceList === null) { + $this->inheritanceList = array(); + $this->isEnumeratedClasses = true; + } + $this->inheritanceList[] = $inh; + return $inh; + } else { + $inh = new Inheritance(); + $inh->loadFromXML($inhdata); + return $this->addInheritance($inh); + } + } + + /** + * Get the inheritance definitions. + */ + public function getChildren() + { + return $this->inheritanceList; + } + + /** + * Determine if this column is a normal property or specifies a + * the classes that are represented in the table containing this column. + */ + public function isInheritance() + { + return $this->isInheritance; + } + + /** + * Determine if possible classes have been enumerated in the xml file. + */ + public function isEnumeratedClasses() + { + return $this->isEnumeratedClasses; + } + + /** + * Return the isNotNull property of the column + */ + public function isNotNull() + { + return $this->isNotNull; + } + + /** + * Set the isNotNull property of the column + */ + public function setNotNull($status) + { + $this->isNotNull = (boolean) $status; + } + + /** + * Return NOT NULL String for this column + * + * @return "NOT NULL" if null values are not allowed or an empty string. + */ + public function getNotNullString() + { + return $this->getTable()->getDatabase()->getPlatform()->getNullString($this->isNotNull()); + } + + /** + * Set whether the column is the primary string, + * i.e. whether its value is the default string representation of the table + * @param boolean $v + */ + public function setPrimaryString($v) + { + $this->isPrimaryString = (boolean) $v; + } + + /** + * Return true if the column is the primary string, + * i.e. if its value is the default string representation of the table + */ + public function isPrimaryString() + { + return $this->isPrimaryString; + } + + /** + * Set whether the column is a primary key or not. + * @param boolean $v + */ + public function setPrimaryKey($v) + { + $this->isPrimaryKey = (boolean) $v; + } + + /** + * Return true if the column is a primary key + */ + public function isPrimaryKey() + { + return $this->isPrimaryKey; + } + + /** + * Set if the column is the node key of a tree + */ + public function setNodeKey($nk) + { + $this->isNodeKey = (boolean) $nk; + } + + /** + * Return true if the column is a node key of a tree + */ + public function isNodeKey() + { + return $this->isNodeKey; + } + + /** + * Set if the column is the node key of a tree + */ + public function setNodeKeySep($sep) + { + $this->nodeKeySep = (string) $sep; + } + + /** + * Return true if the column is a node key of a tree + */ + public function getNodeKeySep() + { + return $this->nodeKeySep; + } + + /** + * Set if the column is the nested set left key of a tree + */ + public function setNestedSetLeftKey($nslk) + { + $this->isNestedSetLeftKey = (boolean) $nslk; + } + + /** + * Return true if the column is a nested set key of a tree + */ + public function isNestedSetLeftKey() + { + return $this->isNestedSetLeftKey; + } + + /** + * Set if the column is the nested set right key of a tree + */ + public function setNestedSetRightKey($nsrk) + { + $this->isNestedSetRightKey = (boolean) $nsrk; + } + + /** + * Return true if the column is a nested set right key of a tree + */ + public function isNestedSetRightKey() + { + return $this->isNestedSetRightKey; + } + + /** + * Set if the column is the scope key of a tree + */ + public function setTreeScopeKey($tsk) + { + $this->isTreeScopeKey = (boolean) $tsk; + } + + /** + * Return true if the column is a scope key of a tree + * @return boolean + */ + public function isTreeScopeKey() + { + return $this->isTreeScopeKey; + } + + /** + * Set true if the column is UNIQUE + * @param boolean $u + */ + public function setUnique($u) + { + $this->isUnique = $u; + } + + /** + * Get the UNIQUE property. + * @return boolean + */ + public function isUnique() + { + return $this->isUnique; + } + + /** + * Return true if the column requires a transaction in Postgres + * @return boolean + */ + public function requiresTransactionInPostgres() + { + return $this->needsTransactionInPostgres; + } + + /** + * Utility method to determine if this column is a foreign key. + * @return boolean + */ + public function isForeignKey() + { + return (count($this->getForeignKeys()) > 0); + } + + /** + * Whether this column is a part of more than one foreign key. + * @return boolean + */ + public function hasMultipleFK() + { + return (count($this->getForeignKeys()) > 1); + } + + /** + * Get the foreign key objects for this column (if it is a foreign key or part of a foreign key) + * @return array + */ + public function getForeignKeys() + { + return $this->parentTable->getColumnForeignKeys($this->name); + } + + /** + * Adds the foreign key from another table that refers to this column. + */ + public function addReferrer(ForeignKey $fk) + { + if ($this->referrers === null) { + $this->referrers = array(); + } + $this->referrers[] = $fk; + } + + /** + * Get list of references to this column. + */ + public function getReferrers() + { + if ($this->referrers === null) { + $this->referrers = array(); + } + return $this->referrers; + } + + /** + * Sets the domain up for specified Propel type. + * + * Calling this method will implicitly overwrite any previously set type, + * size, scale (or other domain attributes). + * + * @param string $propelType + */ + public function setDomainForType($propelType) + { + $this->getDomain()->copy($this->getPlatform()->getDomainForType($propelType)); + } + + /** + * Sets the propel colunm type. + * @param string $propelType + * @see Domain::setType() + */ + public function setType($propelType) + { + $this->getDomain()->setType($propelType); + if ($propelType == PropelTypes::VARBINARY|| $propelType == PropelTypes::LONGVARBINARY || $propelType == PropelTypes::BLOB) { + $this->needsTransactionInPostgres = true; + } + } + + /** + * Returns the Propel column type as a string. + * @return string The constant representing Creole type: e.g. "VARCHAR". + * @see Domain::getType() + */ + public function getType() + { + return $this->getDomain()->getType(); + } + + /** + * Returns the column PDO type integer for this column's Propel type. + * @return int The integer value representing PDO type param: e.g. PDO::PARAM_INT + */ + public function getPDOType() + { + return PropelTypes::getPDOType($this->getType()); + } + + /** + * Returns the column type as given in the schema as an object + */ + public function getPropelType() + { + return $this->getType(); + } + + /** + * Utility method to know whether column needs Blob/Lob handling. + * @return boolean + */ + public function isLobType() + { + return PropelTypes::isLobType($this->getType()); + } + + /** + * Utility method to see if the column is text type. + */ + public function isTextType() + { + return PropelTypes::isTextType($this->getType()); + } + + /** + * Utility method to see if the column is numeric type. + * @return boolean + */ + public function isNumericType() + { + return PropelTypes::isNumericType($this->getType()); + } + + /** + * Utility method to know whether column is a temporal column. + * @return boolean + */ + public function isTemporalType() + { + return PropelTypes::isTemporalType($this->getType()); + } + + /** + * @see XMLElement::appendXml(DOMNode) + */ + public function appendXml(DOMNode $node) + { + $doc = ($node instanceof DOMDocument) ? $node : $node->ownerDocument; + + $colNode = $node->appendChild($doc->createElement('column')); + $colNode->setAttribute('name', $this->name); + + if ($this->phpName !== null) { + $colNode->setAttribute('phpName', $this->getPhpName()); + } + + $colNode->setAttribute('type', $this->getType()); + + $domain = $this->getDomain(); + + if ($domain->getSize() !== null) { + $colNode->setAttribute('size', $domain->getSize()); + } + + if ($domain->getScale() !== null) { + $colNode->setAttribute('scale', $domain->getScale()); + } + + if ($this->isPrimaryKey) { + $colNode->setAttribute('primaryKey', var_export($this->isPrimaryKey, true)); + } + + if ($this->isAutoIncrement) { + $colNode->setAttribute('autoIncrement', var_export($this->isAutoIncrement, true)); + } + + if ($this->isNotNull) { + $colNode->setAttribute('required', 'true'); + } else { + $colNode->setAttribute('required', 'false'); + } + + if ($domain->getDefaultValue() !== null) { + $def = $domain->getDefaultValue(); + if ($def->isExpression()) { + $colNode->setAttribute('defaultExpr', $def->getValue()); + } else { + $colNode->setAttribute('defaultValue', $def->getValue()); + } + } + + if ($this->isInheritance()) { + $colNode->setAttribute('inheritance', $this->inheritanceType); + foreach ($this->inheritanceList as $inheritance) { + $inheritance->appendXml($colNode); + } + } + + if ($this->isNodeKey()) { + $colNode->setAttribute('nodeKey', 'true'); + if ($this->getNodeKeySep() !== null) { + $colNode->setAttribute('nodeKeySep', $this->nodeKeySep); + } + } + + foreach ($this->vendorInfos as $vi) { + $vi->appendXml($colNode); + } + } + + /** + * Returns the size of the column + * @return string + */ + public function getSize() + { + return $this->domain->getSize(); + } + + /** + * Set the size of the column + * @param string $newSize + */ + public function setSize($newSize) + { + $this->domain->setSize($newSize); + } + + /** + * Returns the scale of the column + * @return string + */ + public function getScale() + { + return $this->domain->getScale(); + } + + /** + * Set the scale of the column + * @param string $newScale + */ + public function setScale($newScale) + { + $this->domain->setScale($newScale); + } + + /** + * Return the size in brackets for use in an sql + * schema if the type is String. Otherwise return an empty string + */ + public function printSize() + { + return $this->domain->printSize(); + } + + /** + * Return a string that will give this column a default value. + * @return string + */ + public function getDefaultSetting() + { + $dflt = ""; + $defaultValue = $this->getDefaultValue(); + if ($defaultValue !== null) { + $dflt .= "default "; + + if ($this->getDefaultValue()->isExpression()) { + $dflt .= $this->getDefaultValue()->getValue(); + } else { + if ($this->isTextType()) { + $dflt .= $this->getPlatform()->quote($defaultValue->getValue()); + } elseif ($this->getType() == PropelTypes::BOOLEAN) { + $dflt .= $this->getPlatform()->getBooleanString($defaultValue->getValue()); + } else { + $dflt .= $defaultValue->getValue(); + } + } + } + return $dflt; + } + + /** + * Return a string that will give this column a default value in PHP + * @return string + */ + public function getDefaultValueString() + { + $defaultValue = $this->getDefaultValue(); + if ($defaultValue !== null) { + if ($this->isNumericType()) { + $dflt = (float) $defaultValue->getValue(); + } elseif ($this->isTextType() || $this->getDefaultValue()->isExpression()) { + $dflt = "'" . str_replace("'", "\'", $defaultValue->getValue()) . "'"; + } elseif ($this->getType() == PropelTypes::BOOLEAN) { + $dflt = $this->booleanValue($defaultValue->getValue()) ? 'true' : 'false'; + } else { + $dflt = "'" . $defaultValue->getValue() . "'"; + } + } else { + $dflt = "null"; + } + return $dflt; + } + + /** + * Set a string that will give this column a default value. + */ + public function setDefaultValue($def) + { + $this->domain->setDefaultValue($def); + } + + /** + * Get the default value object for this column. + * @return ColumnDefaultValue + * @see Domain::getDefaultValue() + */ + public function getDefaultValue() + { + return $this->domain->getDefaultValue(); + } + + /** + * Get the default value suitable for use in PHP. + * @return mixed + * @see Domain::getPhpDefaultValue() + */ + public function getPhpDefaultValue() + { + return $this->domain->getPhpDefaultValue(); + } + + /** + * Returns the class name to do input validation + */ + public function getInputValidator() + { + return $this->inputValidator; + } + + /** + * Return auto increment/sequence string for the target database. We need to + * pass in the props for the target database! + */ + public function isAutoIncrement() + { + return $this->isAutoIncrement; + } + + /** + * Return auto increment/sequence string for the target database. We need to + * pass in the props for the target database! + */ + public function isLazyLoad() + { + return $this->isLazyLoad; + } + + /** + * Gets the auto-increment string. + * @return string + */ + public function getAutoIncrementString() + { + if ($this->isAutoIncrement()&& IDMethod::NATIVE === $this->getTable()->getIdMethod()) { + return $this->getPlatform()->getAutoIncrement(); + } elseif ($this->isAutoIncrement()) { + throw new EngineException("You have specified autoIncrement for column '" . $this->name . "' but you have not specified idMethod=\"native\" for table '" . $this->getTable()->getName() . "'."); + } + return ""; + } + + /** + * Set the auto increment value. + * Use isAutoIncrement() to find out if it is set or not. + */ + public function setAutoIncrement($value) + { + $this->isAutoIncrement = (boolean) $value; + } + + /** + * Set the column type from a string property + * (normally a string from an sql input file) + * + * @deprecated Do not use; this will be removed in next release. + */ + public function setTypeFromString($typeName, $size) + { + $tn = strtoupper($typeName); + $this->setType($tn); + + if ($size !== null) { + $this->size = $size; + } + + if (strpos($tn, "CHAR") !== false) { + $this->domain->setType(PropelTypes::VARCHAR); + } elseif (strpos($tn, "INT") !== false) { + $this->domain->setType(PropelTypes::INTEGER); + } elseif (strpos($tn, "FLOAT") !== false) { + $this->domain->setType(PropelTypes::FLOAT); + } elseif (strpos($tn, "DATE") !== false) { + $this->domain->setType(PropelTypes::DATE); + } elseif (strpos($tn, "TIME") !== false) { + $this->domain->setType(PropelTypes::TIMESTAMP); + } else if (strpos($tn, "BINARY") !== false) { + $this->domain->setType(PropelTypes::LONGVARBINARY); + } else { + $this->domain->setType(PropelTypes::VARCHAR); + } + } + + /** + * Return a string representation of the native PHP type which corresponds + * to the propel type of this column. Use in the generation of Base objects. + * + * @return string PHP datatype used by propel. + */ + public function getPhpNative() + { + return PropelTypes::getPhpNative($this->getType()); + } + + /** + * Returns true if the column's PHP native type is an boolean, int, long, float, double, string. + * @return boolean + * @see PropelTypes::isPhpPrimitiveType() + */ + public function isPhpPrimitiveType() + { + return PropelTypes::isPhpPrimitiveType($this->getPhpType()); + } + + /** + * Return true if column's PHP native type is an boolean, int, long, float, double. + * @return boolean + * @see PropelTypes::isPhpPrimitiveNumericType() + */ + public function isPhpPrimitiveNumericType() + { + return PropelTypes::isPhpPrimitiveNumericType($this->getPhpType()); + } + + /** + * Returns true if the column's PHP native type is a class name. + * @return boolean + * @see PropelTypes::isPhpObjectType() + */ + public function isPhpObjectType() + { + return PropelTypes::isPhpObjectType($this->getPhpType()); + } + + /** + * Get the platform/adapter impl. + * + * @return Platform + */ + public function getPlatform() + { + return $this->getTable()->getDatabase()->getPlatform(); + } + + /** + * + * @return string + * @deprecated Use DDLBuilder->getColumnDDL() instead; this will be removed in 1.3 + */ + public function getSqlString() + { + $sb = ""; + $sb .= $this->getPlatform()->quoteIdentifier($this->getName()) . " "; + $sb .= $this->getDomain()->getSqlType(); + if ($this->getPlatform()->hasSize($this->getDomain()->getSqlType())) { + $sb .= $this->getDomain()->printSize(); + } + $sb .= " "; + $sb .= $this->getDefaultSetting() . " "; + $sb .= $this->getNotNullString() . " "; + $sb .= $this->getAutoIncrementString(); + return trim($sb); + } + + public static function generatePhpName($name, $phpNamingMethod = PhpNameGenerator::CONV_METHOD_CLEAN, $namePrefix = null) { + return NameFactory::generateName(NameFactory::PHP_GENERATOR, array($name, $phpNamingMethod, $namePrefix)); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/ColumnDefaultValue.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/ColumnDefaultValue.php.svn-base new file mode 100644 index 0000000..ffd16a4 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/ColumnDefaultValue.php.svn-base @@ -0,0 +1,101 @@ +. + */ + +/** + * A class for holding a column default value. + * + * @author Hans Lellelid + * @version $Revision$ + * @package propel.engine.database.model + */ +class ColumnDefaultValue { + + const TYPE_VALUE = "value"; + const TYPE_EXPR = "expr"; + + /** + * @var string The default value, as specified in the schema. + */ + private $value; + + /** + * @var string The type of value represented by this object (DefaultValue::TYPE_VALUE or DefaultValue::TYPE_EXPR). + */ + private $type = ColumnDefaultValue::TYPE_VALUE; + + /** + * Creates a new DefaultValue object. + * + * @param string $value The default value, as specified in the schema. + * @param string $type The type of default value (DefaultValue::TYPE_VALUE or DefaultValue::TYPE_EXPR) + */ + public function __construct($value, $type = null) + { + $this->setValue($value); + if ($type !== null) { + $this->setType($type); + } + } + + /** + * @return string The type of default value (DefaultValue::TYPE_VALUE or DefaultValue::TYPE_EXPR) + */ + public function getType() + { + return $this->type; + } + + /** + * @param string $type The type of default value (DefaultValue::TYPE_VALUE or DefaultValue::TYPE_EXPR) + */ + public function setType($type) + { + $this->type = $type; + } + + /** + * Convenience method to indicate whether the value in this object is an expression (as opposed to simple value). + * + * @return boolean Whether value this object holds is an expression. + */ + public function isExpression() + { + return ($this->type == self::TYPE_EXPR); + } + + /** + * @return string The value, as specified in the schema. + */ + public function getValue() + { + return $this->value; + } + + /** + * @param string $value The value, as specified in the schema. + */ + public function setValue($value) + { + $this->value = $value; + } + + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/ConstraintNameGenerator.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/ConstraintNameGenerator.php.svn-base new file mode 100644 index 0000000..65074ae --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/ConstraintNameGenerator.php.svn-base @@ -0,0 +1,84 @@ +. + */ + + +/** + * A NameGenerator implementation for table-specific + * constraints. Conforms to the maximum column name length for the + * type of database in use. + * + * @author Hans Lellelid (Propel) + * @author Daniel Rall (Torque) + * @version $Revision$ + * @package propel.engine.database.model + */ +class ConstraintNameGenerator implements NameGenerator { + /** + * Conditional compilation flag. + */ + const DEBUG = false; + + /** + * First element of inputs should be of type {@link Database}, second + * should be a table name, third is the type identifier (spared if + * trimming is necessary due to database type length constraints), + * and the fourth is a Integer indicating the number + * of this contraint. + * + * @see NameGenerator + * @throws EngineException + */ + public function generateName($inputs) + { + + $db = $inputs[0]; + $name = $inputs[1]; + $namePostfix = $inputs[2]; + $constraintNbr = (string) $inputs[3]; + + // Calculate maximum RDBMS-specific column character limit. + $maxBodyLength = -1; + try { + $maxColumnNameLength = (int) $db->getPlatform()->getMaxColumnNameLength(); + $maxBodyLength = ($maxColumnNameLength - strlen($namePostfix) + - strlen($constraintNbr) - 2); + + if (self::DEBUG) { + print("maxColumnNameLength=" . $maxColumnNameLength + . " maxBodyLength=" . $maxBodyLength . "\n"); + } + } catch (EngineException $e) { + echo $e; + throw $e; + } + + // Do any necessary trimming. + if ($maxBodyLength !== -1 && strlen($name) > $maxBodyLength) { + $name = substr($name, 0, $maxBodyLength); + } + + $name .= self::STD_SEPARATOR_CHAR . $namePostfix + . self::STD_SEPARATOR_CHAR . $constraintNbr; + + return $name; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/Database.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/Database.php.svn-base new file mode 100644 index 0000000..96be356 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/Database.php.svn-base @@ -0,0 +1,588 @@ +. + */ + +require_once 'propel/engine/database/model/XMLElement.php'; +include_once 'propel/engine/database/model/IDMethod.php'; +include_once 'propel/engine/database/model/NameGenerator.php'; +include_once 'propel/engine/database/model/Table.php'; +include_once 'propel/engine/database/model/Behavior.php'; + + +/** + * A class for holding application data structures. + * + * @author Hans Lellelid (Propel) + * @author Leon Messerschmidt (Torque) + * @author John McNally (Torque) + * @author Martin Poeschl (Torque) + * @author Daniel Rall (Torque) + * @author Byron Foster (Torque) + * @version $Revision$ + * @package propel.engine.database.model + */ +class Database extends XMLElement { + + private $platform; + private $tableList = array(); + private $curColumn; + private $name; + private $pkg; + private $baseClass; + private $basePeer; + private $defaultIdMethod; + private $defaultPhpNamingMethod; + private $defaultTranslateMethod; + private $dbParent; + private $tablesByName = array(); + private $tablesByPhpName = array(); + private $heavyIndexing; + + private $domainMap = array(); + + /** + * List of behaviors registered for this table + * + * @var array + */ + protected $behaviors = array(); + + /** + * Constructs a new Database object. + * + * @param string $name + */ + public function __construct($name = null) + { + $this->name = $name; + } + + /** + * Sets up the Database object based on the attributes that were passed to loadFromXML(). + * @see parent::loadFromXML() + */ + protected function setupObject() + { + $this->name = $this->getAttribute("name"); + $this->pkg = $this->getAttribute("package"); + $this->baseClass = $this->getAttribute("baseClass"); + $this->basePeer = $this->getAttribute("basePeer"); + $this->defaultIdMethod = $this->getAttribute("defaultIdMethod", IDMethod::NATIVE); + $this->defaultPhpNamingMethod = $this->getAttribute("defaultPhpNamingMethod", NameGenerator::CONV_METHOD_UNDERSCORE); + $this->defaultTranslateMethod = $this->getAttribute("defaultTranslateMethod", Validator::TRANSLATE_NONE); + $this->heavyIndexing = $this->booleanValue($this->getAttribute("heavyIndexing")); + } + + /** + * Returns the Platform implementation for this database. + * + * @return Platform a Platform implementation + */ + public function getPlatform() + { + return $this->platform; + } + + /** + * Sets the Platform implementation for this database. + * + * @param Platform $platform A Platform implementation + */ + public function setPlatform($platform) + { + $this->platform = $platform; + } + + /** + * Get the name of the Database + */ + public function getName() + { + return $this->name; + } + + /** + * Set the name of the Database + */ + public function setName($name) + { + $this->name = $name; + } + + /** + * Get the value of package. + * @return value of package. + */ + public function getPackage() + { + return $this->pkg; + } + + /** + * Set the value of package. + * @param v Value to assign to package. + */ + public function setPackage($v) + { + $this->pkg = $v; + } + + /** + * Get the value of baseClass. + * @return value of baseClass. + */ + public function getBaseClass() + { + return $this->baseClass; + } + + /** + * Set the value of baseClass. + * @param v Value to assign to baseClass. + */ + public function setBaseClass($v) + { + $this->baseClass = $v; + } + + /** + * Get the value of basePeer. + * @return value of basePeer. + */ + public function getBasePeer() + { + return $this->basePeer; + } + + /** + * Set the value of basePeer. + * @param v Value to assign to basePeer. + */ + public function setBasePeer($v) + { + $this->basePeer = $v; + } + + /** + * Get the value of defaultIdMethod. + * @return value of defaultIdMethod. + */ + public function getDefaultIdMethod() + { + return $this->defaultIdMethod; + } + + /** + * Set the value of defaultIdMethod. + * @param v Value to assign to defaultIdMethod. + */ + public function setDefaultIdMethod($v) + { + $this->defaultIdMethod = $v; + } + + /** + * Get the value of defaultPHPNamingMethod which specifies the + * method for converting schema names for table and column to PHP names. + * @return string The default naming conversion used by this database. + */ + public function getDefaultPhpNamingMethod() + { + return $this->defaultPhpNamingMethod; + } + + /** + * Set the value of defaultPHPNamingMethod. + * @param string $v The default naming conversion for this database to use. + */ + public function setDefaultPhpNamingMethod($v) + { + $this->defaultPhpNamingMethod = $v; + } + + /** + * Get the value of defaultTranslateMethod which specifies the + * method for translate validator error messages. + * @return string The default translate method. + */ + public function getDefaultTranslateMethod() + { + return $this->defaultTranslateMethod; + } + + /** + * Set the value of defaultTranslateMethod. + * @param string $v The default translate method to use. + */ + public function setDefaultTranslateMethod($v) + { + $this->defaultTranslateMethod = $v; + } + + /** + * Get the value of heavyIndexing. + * + * This is a synonym for getHeavyIndexing(). + * + * @return boolean Value of heavyIndexing. + * @see getHeavyIndexing() + */ + public function isHeavyIndexing() + { + return $this->getHeavyIndexing(); + } + + /** + * Get the value of heavyIndexing. + * + * @return boolean Value of heavyIndexing. + */ + public function getHeavyIndexing() + { + return $this->heavyIndexing; + } + + /** + * Set the value of heavyIndexing. + * @param boolean $v Value to assign to heavyIndexing. + */ + public function setHeavyIndexing($v) + { + $this->heavyIndexing = (boolean) $v; + } + + /** + * Return an array of all tables + */ + public function getTables() + { + return $this->tableList; + } + + /** + * Return the table with the specified name. + * @param string $name The name of the table (e.g. 'my_table') + * @return Table a Table object or null if it doesn't exist + */ + public function getTable($name) + { + if (isset($this->tablesByName[$name])) { + return $this->tablesByName[$name]; + } + return null; // just to be explicit + } + + /** + * Return the table with the specified phpName. + * @param string $phpName the PHP Name of the table (e.g. 'MyTable') + * @return Table a Table object or null if it doesn't exist + */ + public function getTableByPhpName($phpName) + { + if (isset($this->tablesByPhpName[$phpName])) { + return $this->tablesByPhpName[$phpName]; + } + return null; // just to be explicit + } + + /** + * An utility method to add a new table from an xml attribute. + */ + public function addTable($data) + { + if ($data instanceof Table) { + $tbl = $data; // alias + $tbl->setDatabase($this); + if (isset($this->tablesByName[$tbl->getName()])) { + throw new EngineException("Duplicate table declared: " . $tbl->getName()); + } + $this->tableList[] = $tbl; + $this->tablesByName[ $tbl->getName() ] = $tbl; + $this->tablesByPhpName[ $tbl->getPhpName() ] = $tbl; + if ($tbl->getPackage() === null) { + $tbl->setPackage($this->getPackage()); + } + return $tbl; + } else { + $tbl = new Table(); + $tbl->setDatabase($this); + $tbl->loadFromXML($data); + return $this->addTable($tbl); // call self w/ different param + } + } + + /** + * Set the parent of the database + */ + public function setAppData(AppData $parent) + { + $this->dbParent = $parent; + } + + /** + * Get the parent of the table + */ + public function getAppData() + { + return $this->dbParent; + } + + /** + * Adds Domain object from tag. + * @param mixed XML attributes (array) or Domain object. + */ + public function addDomain($data) { + + if ($data instanceof Domain) { + $domain = $data; // alias + $domain->setDatabase($this); + $this->domainMap[ $domain->getName() ] = $domain; + return $domain; + } else { + $domain = new Domain(); + $domain->setDatabase($this); + $domain->loadFromXML($data); + return $this->addDomain($domain); // call self w/ different param + } + } + + /** + * Get already configured Domain object by name. + * @return Domain + */ + public function getDomain($domainName) + { + if (isset($this->domainMap[$domainName])) { + return $this->domainMap[$domainName]; + } + return null; // just to be explicit + } + + public function getGeneratorConfig() + { + return $this->getAppData()->getPlatform()->getGeneratorConfig(); + } + + /** + * Adds a new Behavior to the database + * @return Behavior A behavior instance + */ + public function addBehavior($bdata) + { + if ($bdata instanceof Behavior) { + $behavior = $bdata; + $behavior->setDatabase($this); + $this->behaviors[$behavior->getName()] = $behavior; + return $behavior; + } else { + $class = $this->getConfiguredBehavior($bdata['name']); + $behavior = new $class(); + $behavior->loadFromXML($bdata); + return $this->addBehavior($behavior); + } + } + + /** + * Get the database behaviors + * @return Array of Behavior objects + */ + public function getBehaviors() + { + return $this->behaviors; + } + + /** + * Get one database behavior by name + * @param string $name the behavior name + * @return Behavior a behavior object + */ + public function getBehavior($name) + { + return $this->behaviors[$name]; + } + + + public function doFinalInitialization() + { + $config = $this->getGeneratorConfig(); + if($config && ($defaultBehaviors = $config->getBuildProperty('behaviorDefault'))) + { + // add generic behaviors from build.properties + $defaultBehaviors = explode(',', $defaultBehaviors); + foreach ($defaultBehaviors as $behavior) + { + $this->addBehavior(array('name' => trim($behavior))); + } + } + + // execute behavior database modifiers + foreach ($this->getBehaviors() as $behavior) + { + $behavior->modifyDatabase(); + } + + $tables = $this->getTables(); + + for ($i=0,$size=count($tables); $i < $size; $i++) { + $currTable = $tables[$i]; + + // check schema integrity + // if idMethod="autoincrement", make sure a column is + // specified as autoIncrement="true" + // FIXME: Handle idMethod="native" via DB adapter. + /* + + --- REMOVING THIS BECAUSE IT'S ANNOYING + + if ($currTable->getIdMethod() == IDMethod::NATIVE ) { + $columns = $currTable->getColumns(); + $foundOne = false; + for ($j=0, $cLen=count($columns); $j < $cLen && !$foundOne; $j++) { + $foundOne = $columns[$j]->isAutoIncrement(); + } + + if (!$foundOne) { + $errorMessage = "Table '" . $currTable->getName() + . "' is set to use native id generation, but it does not " + . "have a column which declared as the one to " + . "auto increment (i.e. autoIncrement=\"true\")"; + + throw new BuildException($errorMessage); + } + } + */ + + $currTable->doFinalInitialization(); + + // setup reverse fk relations + $fks = $currTable->getForeignKeys(); + for ($j=0, $fksLen=count($fks); $j < $fksLen; $j++) { + $currFK = $fks[$j]; + $foreignTable = $this->getTable($currFK->getForeignTableName()); + if ($foreignTable === null) { + throw new BuildException("ERROR!! Attempt to set foreign" + . " key to nonexistent table, " + . $currFK->getForeignTableName() . "!"); + } + + $referrers = $foreignTable->getReferrers(); + if ($referrers === null || !in_array($currFK, $referrers, true) ) { + $foreignTable->addReferrer($currFK); + } + + // local column references + $localColumnNames = $currFK->getLocalColumns(); + + for ($k=0,$lcnLen=count($localColumnNames); $k < $lcnLen; $k++) { + + $local = $currTable->getColumn($localColumnNames[$k]); + + // give notice of a schema inconsistency. + // note we do not prevent the npe as there is nothing + // that we can do, if it is to occur. + if ($local === null) { + throw new BuildException("ERROR!! Attempt to define foreign" + . " key with nonexistent column, " + . $localColumnNames[$k] . ", in table, " + . $currTable->getName() . "!"); + } + + //check for foreign pk's + if ($local->isPrimaryKey()) { + $currTable->setContainsForeignPK(true); + } + + } // for each local col name + + // foreign column references + $foreignColumnNames = $currFK->getForeignColumns(); + for ($k=0,$fcnLen=count($localColumnNames); $k < $fcnLen; $k++) { + $foreign = $foreignTable->getColumn($foreignColumnNames[$k]); + // if the foreign column does not exist, we may have an + // external reference or a misspelling + if ($foreign === null) { + throw new BuildException("ERROR!! Attempt to set foreign" + . " key to nonexistent column, " + . $foreignColumnNames[$k] . ", in table, " + . $foreignTable->getName() . "!"); + } else { + $foreign->addReferrer($currFK); + } + } // for each foreign col ref + } + } + } + + /** + * @see XMLElement::appendXml(DOMNode) + */ + public function appendXml(DOMNode $node) + { + $doc = ($node instanceof DOMDocument) ? $node : $node->ownerDocument; + + $dbNode = $node->appendChild($doc->createElement('database')); + + $dbNode->setAttribute('name', $this->name); + + if ($this->pkg) { + $dbNode->setAttribute('package', $this->pkg); + } + + if ($this->defaultIdMethod) { + $dbNode->setAttribute('defaultIdMethod', $this->defaultIdMethod); + } + + if ($this->baseClass) { + $dbNode->setAttribute('baseClass', $this->baseClass); + } + + if ($this->basePeer) { + $dbNode->setAttribute('basePeer', $this->basePeer); + } + + if ($this->defaultPhpNamingMethod) { + $dbNode->setAttribute('defaultPhpNamingMethod', $this->defaultPhpNamingMethod); + } + + if ($this->defaultTranslateMethod) { + $dbNode->setAttribute('defaultTranslateMethod', $this->defaultTranslateMethod); + } + + /* + + FIXME - Before we can add support for domains in the schema, we need + to have a method of the Column that indicates whether the column was mapped + to a SPECIFIC domain (since Column->getDomain() will always return a Domain object) + + foreach ($this->domainMap as $domain) { + $domain->appendXml($dbNode); + } + */ + foreach ($this->vendorInfos as $vi) { + $vi->appendXml($dbNode); + } + + foreach ($this->tableList as $table) { + $table->appendXml($dbNode); + } + + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/Domain.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/Domain.php.svn-base new file mode 100644 index 0000000..f042ed0 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/Domain.php.svn-base @@ -0,0 +1,396 @@ +. + */ + +require_once 'propel/engine/database/model/XMLElement.php'; + +/** + * A class for holding data about a domain used in the schema. + * + * @author Hans Lellelid (Propel) + * @author Martin Poeschl (Torque) + * @version $Revision$ + * @package propel.engine.database.model + */ +class Domain extends XMLElement { + + /** + * @var string The name of this domain + */ + private $name; + + /** + * @var string Description for this domain. + */ + private $description; + + /** + * @var int Size + */ + private $size; + + /** + * @var int Scale + */ + private $scale; + + /** + * @var int Propel type from schema + */ + private $propelType; + + /** + * @var string The SQL type to use for this column + */ + private $sqlType; + + /** + * @var ColumnDefaultValue A default value + */ + private $defaultValue; + + /** + * @var Database + */ + private $database; + + /** + * Creates a new Domain object. + * If this domain needs a name, it must be specified manually. + * + * @param string $type Propel type. + * @param string $sqlType SQL type. + * @param string $size + * @param string $scale + */ + public function __construct($type = null, $sqlType = null, $size = null, $scale = null) + { + $this->propelType = $type; + $this->sqlType = ($sqlType !== null) ? $sqlType : $type; + $this->size = $size; + $this->scale = $scale; + } + + /** + * Copy the values from current object into passed-in Domain. + * @param Domain $domain Domain to copy values into. + */ + public function copy(Domain $domain) + { + $this->defaultValue = $domain->getDefaultValue(); + $this->description = $domain->getDescription(); + $this->name = $domain->getName(); + $this->scale = $domain->getScale(); + $this->size = $domain->getSize(); + $this->sqlType = $domain->getSqlType(); + $this->propelType = $domain->getType(); + } + + /** + * Sets up the Domain object based on the attributes that were passed to loadFromXML(). + * @see parent::loadFromXML() + */ + protected function setupObject() + { + $schemaType = strtoupper($this->getAttribute("type")); + $this->copy($this->getDatabase()->getPlatform()->getDomainForType($schemaType)); + + //Name + $this->name = $this->getAttribute("name"); + + // Default value + $defval = $this->getAttribute("defaultValue", $this->getAttribute("default")); + if ($defval !== null) { + $this->setDefaultValue(new ColumnDefaultValue($defval, ColumnDefaultValue::TYPE_VALUE)); + } elseif ($this->getAttribute("defaultExpr") !== null) { + $this->setDefaultValue(new ColumnDefaultValue($this->getAttribute("defaultExpr"), ColumnDefaultValue::TYPE_EXPR)); + } + + $this->size = $this->getAttribute("size"); + $this->scale = $this->getAttribute("scale"); + $this->description = $this->getAttribute("description"); + } + + /** + * Sets the owning database object (if this domain is being setup via XML). + * @param Database $database + */ + public function setDatabase(Database $database) + { + $this->database = $database; + } + + /** + * Gets the owning database object (if this domain was setup via XML). + * @return Database + */ + public function getDatabase() + { + return $this->database; + } + + /** + * @return string Returns the description. + */ + public function getDescription() + { + return $this->description; + } + + /** + * @param string $description The description to set. + */ + public function setDescription($description) + { + $this->description = $description; + } + + /** + * @return string Returns the name. + */ + public function getName() + { + return $this->name; + } + + /** + * @param string $name The name to set. + */ + public function setName($name) + { + $this->name = $name; + } + + /** + * @return string Returns the scale. + */ + public function getScale() + { + return $this->scale; + } + + /** + * @param string $scale The scale to set. + */ + public function setScale($scale) + { + $this->scale = $scale; + } + + /** + * Replaces the size if the new value is not null. + * + * @param string $value The size to set. + */ + public function replaceScale($value) + { + if ($value !== null) { + $this->scale = $value; + } + } + + /** + * @return int Returns the size. + */ + public function getSize() + { + return $this->size; + } + + /** + * @param int $size The size to set. + */ + public function setSize($size) + { + $this->size = $size; + } + + /** + * Replaces the size if the new value is not null. + * + * @param int $value The size to set. + */ + public function replaceSize($value) + { + if ($value !== null) { + $this->size = $value; + } + } + + /** + * @return string Returns the propelType. + */ + public function getType() + { + return $this->propelType; + } + + /** + * @param string $propelType The PropelTypes type to set. + */ + public function setType($propelType) + { + $this->propelType = $propelType; + } + + /** + * Replaces the type if the new value is not null. + * + * @param string $value The tyep to set. + */ + public function replaceType($value) + { + if ($value !== null) { + $this->propelType = $value; + } + } + + /** + * Gets the default value object. + * @return ColumnDefaultValue The default value object for this domain. + */ + public function getDefaultValue() + { + return $this->defaultValue; + } + + /** + * Gets the default value, type-casted for use in PHP OM. + * @return mixed + * @see getDefaultValue() + */ + public function getPhpDefaultValue() + { + if ($this->defaultValue === null) { + return null; + } else { + if ($this->defaultValue->isExpression()) { + throw new EngineException("Cannot get PHP version of default value for default value EXPRESSION."); + } + if ($this->propelType === PropelTypes::BOOLEAN) { + return $this->booleanValue($this->defaultValue->getValue()); + } else { + return $this->defaultValue->getValue(); + } + } + } + + /** + * @param ColumnDefaultValue $value The column default value to set. + */ + public function setDefaultValue(ColumnDefaultValue $value) + { + $this->defaultValue = $value; + } + + /** + * Replaces the default value if the new value is not null. + * + * @param ColumnDefaultValue $value The defualt value object + */ + public function replaceDefaultValue(ColumnDefaultValue $value = null) + { + if ($value !== null) { + $this->defaultValue = $value; + } + } + + /** + * @return string Returns the sqlType. + */ + public function getSqlType() + { + return $this->sqlType; + } + + /** + * @param string $sqlType The sqlType to set. + */ + public function setSqlType($sqlType) + { + $this->sqlType = $sqlType; + } + + /** + * Replaces the SQL type if the new value is not null. + * @param string $sqlType The native SQL type to use for this domain. + */ + public function replaceSqlType($sqlType) + { + if ($sqlType !== null) { + $this->sqlType = $sqlType; + } + } + + /** + * Return the size and scale in brackets for use in an sql schema. + * + * @return string Size and scale or an empty String if there are no values + * available. + */ + public function printSize() + { + if ($this->size !== null && $this->scale !== null) { + return '(' . $this->size . ',' . $this->scale . ')'; + } elseif ($this->size !== null) { + return '(' . $this->size . ')'; + } else { + return ""; + } + } + + /** + * @see XMLElement::appendXml(DOMNode) + */ + public function appendXml(DOMNode $node) + { + $doc = ($node instanceof DOMDocument) ? $node : $node->ownerDocument; + + $domainNode = $node->appendChild($doc->createElement('domain')); + $domainNode->setAttribute('type', $this->getType()); + $domainNode->setAttribute('name', $this->getName()); + + if ($this->sqlType !== $this->getType()) { + $domainNode->setAttribute('sqlType', $this->sqlType); + } + + $def = $this->getDefaultValue(); + if ($def) { + if ($def->isExpression()) { + $domainNode->setAttribute('defaultExpr', $def->getValue()); + } else { + $domainNode->setAttribute('defaultValue', $def->getValue()); + } + } + + if ($this->size) { + $domainNode->setAttribute('size', $this->size); + } + + if ($this->scale) { + $domainNode->setAttribute('scale', $this->scale); + } + + if ($this->description) { + $domainNode->setAttribute('description', $this->description); + } + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/ForeignKey.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/ForeignKey.php.svn-base new file mode 100644 index 0000000..4e1585c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/ForeignKey.php.svn-base @@ -0,0 +1,442 @@ +. + */ + +require_once 'propel/engine/database/model/XMLElement.php'; + +/** + * A Class for information about foreign keys of a table. + * + * @author Hans Lellelid + * @author Fedor + * @author Daniel Rall + * @version $Revision$ + * @package propel.engine.database.model + */ +class ForeignKey extends XMLElement { + + private $foreignTableName; + private $name; + private $phpName; + private $refPhpName; + private $onUpdate; + private $onDelete; + private $parentTable; + private $localColumns = array(); + private $foreignColumns = array(); + + // the uppercase equivalent of the onDelete/onUpdate values in the dtd + const NONE = ""; // No "ON [ DELETE | UPDATE]" behaviour specified. + const NOACTION = "NO ACTION"; + const CASCADE = "CASCADE"; + const RESTRICT = "RESTRICT"; + const SETDEFAULT = "SET DEFAULT"; + const SETNULL = "SET NULL"; + + /** + * Constructs a new ForeignKey object. + * + * @param string $name + */ + public function __construct($name=null) + { + $this->name = $name; + } + + /** + * Sets up the ForeignKey object based on the attributes that were passed to loadFromXML(). + * @see parent::loadFromXML() + */ + protected function setupObject() + { + $this->foreignTableName = $this->getAttribute("foreignTable"); + $this->name = $this->getAttribute("name"); + $this->phpName = $this->getAttribute("phpName"); + $this->refPhpName = $this->getAttribute("refPhpName"); + $this->onUpdate = $this->normalizeFKey($this->getAttribute("onUpdate")); + $this->onDelete = $this->normalizeFKey($this->getAttribute("onDelete")); + } + + /** + * normalizes the input of onDelete, onUpdate attributes + */ + private function normalizeFKey($attrib) + { + if ($attrib === null || strtoupper($attrib) == "NONE") { + $attrib = self::NONE; + } + $attrib = strtoupper($attrib); + if ($attrib == "SETNULL") { + $attrib = self::SETNULL; + } + return $attrib; + } + + /** + * returns whether or not the onUpdate attribute is set + */ + public function hasOnUpdate() + { + return ($this->onUpdate !== self::NONE); + } + + /** + * returns whether or not the onDelete attribute is set + */ + public function hasOnDelete() + { + return ($this->onDelete !== self::NONE); + } + + /** + * returns the onUpdate attribute + * @return string + */ + public function getOnUpdate() + { + return $this->onUpdate; + } + + /** + * Returns the onDelete attribute + * @return string + */ + public function getOnDelete() + { + return $this->onDelete; + } + + /** + * sets the onDelete attribute + */ + public function setOnDelete($value) + { + $this->onDelete = $this->normalizeFKey($value); + } + + /** + * sets the onUpdate attribute + */ + public function setOnUpdate($value) + { + $this->onUpdate = $this->normalizeFKey($value); + } + + /** + * Returns the name attribute. + */ + public function getName() + { + return $this->name; + } + + /** + * Sets the name attribute. + */ + public function setName($name) + { + $this->name = $name; + } + + /** + * Gets the phpName for this foreign key (if any). + * @return string + */ + public function getPhpName() + { + return $this->phpName; + } + + /** + * Sets a phpName to use for this foreign key. + * @param string $name + */ + public function setPhpName($name) + { + $this->phpName = $name; + } + + /** + * Gets the refPhpName for this foreign key (if any). + * @return string + */ + public function getRefPhpName() + { + return $this->refPhpName; + } + + /** + * Sets a refPhpName to use for this foreign key. + * @param string $name + */ + public function setRefPhpName($name) + { + $this->refPhpName = $name; + } + + /** + * Get the foreignTableName of the FK + */ + public function getForeignTableName() + { + return $this->foreignTableName; + } + + /** + * Set the foreignTableName of the FK + */ + public function setForeignTableName($tableName) + { + $this->foreignTableName = $tableName; + } + + /** + * Gets the resolved foreign Table model object. + * @return Table + */ + public function getForeignTable() + { + return $this->getTable()->getDatabase()->getTable($this->getForeignTableName()); + } + + /** + * Set the parent Table of the foreign key + */ + public function setTable(Table $parent) + { + $this->parentTable = $parent; + } + + /** + * Get the parent Table of the foreign key + */ + public function getTable() + { + return $this->parentTable; + } + + /** + * Returns the Name of the table the foreign key is in + */ + public function getTableName() + { + return $this->parentTable->getName(); + } + + /** + * Adds a new reference entry to the foreign key. + */ + public function addReference($p1, $p2 = null) + { + if (is_array($p1)) { + $this->addReference(@$p1["local"], @$p1["foreign"]); + } else { + if ($p1 instanceof Column) { + $p1 = $p1->getName(); + } + if ($p2 instanceof Column) { + $p2 = $p2->getName(); + } + $this->localColumns[] = $p1; + $this->foreignColumns[] = $p2; + } + } + + /** + * Return a comma delimited string of local column names + * @deprecated because Column::makeList() is deprecated; use the array-returning getLocalColumns() and DDLBuilder->getColumnList() instead instead. + */ + public function getLocalColumnNames() + { + return Column::makeList($this->getLocalColumns(), $this->getTable()->getDatabase()->getPlatform()); + } + + /** + * Return a comma delimited string of foreign column names + * @deprecated because Column::makeList() is deprecated; use the array-returning getForeignColumns() and DDLBuilder->getColumnList() instead instead. + */ + public function getForeignColumnNames() + { + return Column::makeList($this->getForeignColumns(), $this->getTable()->getDatabase()->getPlatform()); + } + + /** + * Return an array of local column names. + * @return array string[] + */ + public function getLocalColumns() + { + return $this->localColumns; + } + + /** + * Utility method to get local column to foreign column + * mapping for this foreign key. + */ + public function getLocalForeignMapping() + { + $h = array(); + for ($i=0, $size=count($this->localColumns); $i < $size; $i++) { + $h[$this->localColumns[$i]] = $this->foreignColumns[$i]; + } + return $h; + } + + /** + * Get the foreign column mapped to specified local column. + * @return string Column name. + */ + public function getMappedForeignColumn($local) + { + $m = $this->getLocalForeignMapping(); + if (isset($m[$local])) { + return $m[$local]; + } + return null; + } + + /** + * Get the local column mapped to specified foreign column. + * @return string Column name. + */ + public function getMappedLocalColumn($foreign) + { + $m = $this->getForeignLocalMapping(); + if (isset($m[$foreign])) { + return $m[$foreign]; + } + return null; + } + + /** + * Return an array of foreign column objects. + * @return array Column[] + */ + public function getForeignColumns() + { + return $this->foreignColumns; + } + + /** + * Utility method to get local column to foreign column + * mapping for this foreign key. + */ + public function getForeignLocalMapping() + { + $h = array(); + for ($i=0, $size=count($this->localColumns); $i < $size; $i++) { + $h[ $this->foreignColumns[$i] ] = $this->localColumns[$i]; + } + return $h; + } + + /** + * Whether this foreign key is also the primary key of the local table. + * + * @return boolean + */ + public function isLocalPrimaryKey() + { + $localCols = $this->getLocalColumns(); + + $localPKColumnObjs = $this->getTable()->getPrimaryKey(); + + $localPKCols = array(); + foreach ($localPKColumnObjs as $lPKCol) { + $localPKCols[] = $lPKCol->getName(); + } + // + // print "Local key columns: \n"; + // print_r($localCols); + // + // print "Local table primary key columns: \n"; + // print_r($localPKCols); + + return (!array_diff($localPKCols, $localCols)); + } + + /** + * Whether this foreign key is matched by an invertes foreign key (on foreign table). + * + * This is to prevent duplicate columns being generated for a 1:1 relationship that is represented + * by foreign keys on both tables. I don't know if that's good practice ... but hell, why not + * support it. + * + * @param ForeignKey $fk + * @return boolean + * @link http://propel.phpdb.org/trac/ticket/549 + */ + public function isMatchedByInverseFK() + { + return (bool) $this->getInverseFK(); + } + + public function getInverseFK() + { + $foreignTable = $this->getForeignTable(); + $map = $this->getForeignLocalMapping(); + + foreach ($foreignTable->getForeignKeys() as $refFK) { + $fkMap = $refFK->getLocalForeignMapping(); + if ( ($refFK->getTableName() == $this->getTableName()) && ($map == $fkMap) ) { // compares keys and values, but doesn't care about order, included check to make sure it's the same table (fixes #679) + return $refFK; + } + } + } + + /** + * @see XMLElement::appendXml(DOMNode) + */ + public function appendXml(DOMNode $node) + { + $doc = ($node instanceof DOMDocument) ? $node : $node->ownerDocument; + + $fkNode = $node->appendChild($doc->createElement('foreign-key')); + + $fkNode->setAttribute('foreignTable', $this->getForeignTableName()); + $fkNode->setAttribute('name', $this->getName()); + + if ($this->getPhpName()) { + $fkNode->setAttribute('phpName', $this->getPhpName()); + } + + if ($this->getRefPhpName()) { + $fkNode->setAttribute('refPhpName', $this->getRefPhpName()); + } + + if ($this->getOnDelete()) { + $fkNode->setAttribute('onDelete', $this->getOnDelete()); + } + + if ($this->getOnUpdate()) { + $fkNode->setAttribute('onUpdate', $this->getOnUpdate()); + } + + for ($i=0, $size=count($this->localColumns); $i < $size; $i++) { + $refNode = $fkNode->appendChild($doc->createElement('reference')); + $refNode->setAttribute('local', $this->localColumns[$i]); + $refNode->setAttribute('foreign', $this->foreignColumns[$i]); + } + + foreach ($this->vendorInfos as $vi) { + $vi->appendXml($fkNode); + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/IDMethod.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/IDMethod.php.svn-base new file mode 100644 index 0000000..bd7034d --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/IDMethod.php.svn-base @@ -0,0 +1,46 @@ +. + */ + +/** + * Interface for various ID retrieval method types + * (i.e. auto-increment, sequence, ID broker, etc.). + * + * @author Hans Lellelid (Propel) + * @author Daniel Rall (Torque) + * @version $Revision$ + * @package propel.engine.database.model + */ +interface IDMethod { + + /** + * Key generation via database-specific ID method + * (i.e. auto-increment for MySQL, sequence for Oracle, etc.). + */ + const NATIVE = "native"; + + /** + * No RDBMS key generation (keys may be generated by the + * application). + */ + const NO_ID_METHOD = "none"; + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/IdMethodParameter.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/IdMethodParameter.php.svn-base new file mode 100644 index 0000000..540f500 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/IdMethodParameter.php.svn-base @@ -0,0 +1,119 @@ +. + */ + +require_once 'propel/engine/database/model/XMLElement.php'; + +/** + * Information related to an ID method. + * + * @author Hans Lellelid (Propel) + * @author John McNally (Torque) + * @author Daniel Rall (Torque) + * @version $Revision$ + * @package propel.engine.database.model + */ +class IdMethodParameter extends XMLElement { + + private $name; + private $value; + private $parentTable; + + /** + * Sets up the IdMethodParameter object based on the attributes that were passed to loadFromXML(). + * @see parent::loadFromXML() + */ + protected function setupObject() + { + $this->name = $this->getAttribute("name"); + $this->value = $this->getAttribute("value"); + } + + /** + * Get the parameter name + */ + public function getName() + { + return $this->name; + } + + /** + * Set the parameter name + */ + public function setName($name) + { + $this->name = $name; + } + + /** + * Get the parameter value + */ + public function getValue() + { + return $this->value; + } + + /** + * Set the parameter value + */ + public function setValue($value) + { + $this->value = $value; + } + + /** + * Set the parent Table of the id method + */ + public function setTable(Table $parent) + { + $this->parentTable = $parent; + } + + /** + * Get the parent Table of the id method + */ + public function getTable() + { + return $this->parentTable; + } + + /** + * Returns the Name of the table the id method is in + */ + public function getTableName() + { + return $this->parentTable->getName(); + } + + /** + * @see XMLElement::appendXml(DOMNode) + */ + public function appendXml(DOMNode $node) + { + $doc = ($node instanceof DOMDocument) ? $node : $node->ownerDocument; + + $paramNode = $node->appendChild($doc->createElement('id-method-parameter')); + if ($this->getName()) { + $paramNode->setAttribute('name', $this->getName()); + } + $paramNode->setAttribute('value', $this->getValue()); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/Index.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/Index.php.svn-base new file mode 100644 index 0000000..a8205f3 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/Index.php.svn-base @@ -0,0 +1,286 @@ +. + */ + +require_once 'propel/engine/database/model/XMLElement.php'; +include_once 'propel/engine/EngineException.php'; + +/** + * Information about indices of a table. + * + * @author Jason van Zyl + * @author Daniel Rall + * @version $Revision$ + * @package propel.engine.database.model + */ +class Index extends XMLElement { + + /** enables debug output */ + const DEBUG = false; + + private $indexName; + private $parentTable; + + /** @var array string[] */ + private $indexColumns; + + /** @var array */ + private $indexColumnSizes = array(); + + /** + * Creates a new Index instance. + * + * @param string $name + */ + public function __construct($name=null) + { + $this->indexName = $name; + } + + private function createName() + { + $table = $this->getTable(); + $inputs = array(); + $inputs[] = $table->getDatabase(); + $inputs[] = $table->getName(); + if ($this->isUnique()) { + $inputs[] = "U"; + } else { + $inputs[] = "I"; + } + // ASSUMPTION: This Index not yet added to the list. + if ($this->isUnique()) { + $inputs[] = count($table->getUnices()) + 1; + } else { + $inputs[] = count($table->getIndices()) + 1; + } + + $this->indexName = NameFactory::generateName( + NameFactory::CONSTRAINT_GENERATOR, $inputs); + } + + /** + * Sets up the Index object based on the attributes that were passed to loadFromXML(). + * @see parent::loadFromXML() + */ + protected function setupObject() + { + $this->indexName = $this->getAttribute("name"); + } + + /** + * @see #isUnique() + * @deprecated Use isUnique() instead. + */ + public function getIsUnique() + { + return $this->isUnique(); + } + + /** + * Returns the uniqueness of this index. + */ + public function isUnique() + { + return false; + } + + /** + * @see #getName() + * @deprecated Use getName() instead. + */ + public function getIndexName() + { + return $this->getName(); + } + + /** + * Gets the name of this index. + */ + public function getName() + { + if ($this->indexName === null) { + try { + // generate an index name if we don't have a supplied one + $this->createName(); + } catch (EngineException $e) { + // still no name + } + } + return substr($this->indexName, 0, $this->getTable()->getDatabase()->getPlatform()->getMaxColumnNameLength()); + } + + /** + * @see #setName(String name) + * @deprecated Use setName(String name) instead. + */ + public function setIndexName($name) + { + $this->setName($name); + } + + /** + * Set the name of this index. + */ + public function setName($name) + { + $this->indexName = $name; + } + + /** + * Set the parent Table of the index + */ + public function setTable(Table $parent) + { + $this->parentTable = $parent; + } + + /** + * Get the parent Table of the index + */ + public function getTable() + { + return $this->parentTable; + } + + /** + * Returns the Name of the table the index is in + */ + public function getTableName() + { + return $this->parentTable->getName(); + } + + /** + * Adds a new column to an index. + * @param mixed $data Column or attributes from XML. + */ + public function addColumn($data) + { + if ($data instanceof Column) { + $column = $data; + $this->indexColumns[] = $column->getName(); + if ($column->getSize()) { + $this->indexColumnSizes[$column->getName()] = $column->getSize(); + } + } else { + $attrib = $data; + $name = $attrib["name"]; + $this->indexColumns[] = $name; + if (isset($attrib["size"])) { + $this->indexColumnSizes[$name] = $attrib["size"]; + } + } + } + + /** + * Sets array of columns to use for index. + * + * @param array $indexColumns Column[] + */ + public function setColumns(array $indexColumns) + { + $this->indexColumns = array(); + $this->indexColumnSizes = array(); + foreach ($indexColumns as $col) { + $this->addColumn($col); + } + } + + /** + * Whether there is a size for the specified column. + * @param string $name + * @return boolean + */ + public function hasColumnSize($name) + { + return isset($this->indexColumnSizes[$name]); + } + + /** + * Returns the size for the specified column, if given. + * @param string $name + * @return numeric The size or NULL + */ + public function getColumnSize($name) + { + if (isset($this->indexColumnSizes[$name])) { + return $this->indexColumnSizes[$name]; + } + return null; // just to be explicit + } + + /** + * @see #getColumnList() + * @deprecated Use getColumnList() instead (which is not deprecated too!) + */ + public function getIndexColumnList() + { + return $this->getColumnList(); + } + + /** + * Return a comma delimited string of the columns which compose this index. + * @deprecated because Column::makeList() is deprecated; use the array-returning getColumns() and DDLBuilder->getColumnList() instead instead. + */ + public function getColumnList() + { + return Column::makeList($this->getColumns(), $this->getTable()->getDatabase()->getPlatform()); + } + + /** + * @see #getColumns() + * @deprecated Use getColumns() instead. + */ + public function getIndexColumns() + { + return $this->getColumns(); + } + + /** + * Return the list of local columns. You should not edit this list. + * @return array string[] + */ + public function getColumns() + { + return $this->indexColumns; + } + + /** + * @see XMLElement::appendXml(DOMNode) + */ + public function appendXml(DOMNode $node) + { + $doc = ($node instanceof DOMDocument) ? $node : $node->ownerDocument; + + $idxNode = $node->appendChild($doc->createElement('index')); + $idxNode->setAttribute('name', $this->getName()); + + foreach ($this->indexColumns as $colname) { + $idxColNode = $idxNode->appendChild($doc->createElement('index-column')); + $idxColNode->setAttribute('name', $colname); + } + + foreach ($this->vendorInfos as $vi) { + $vi->appendXml($idxNode); + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/Inheritance.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/Inheritance.php.svn-base new file mode 100644 index 0000000..bffac5a --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/Inheritance.php.svn-base @@ -0,0 +1,158 @@ +. + */ + +require_once 'propel/engine/database/model/XMLElement.php'; + +/** + * A Class for information regarding possible objects representing a table + * + * @author Hans Lellelid (Propel) + * @author John McNally (Torque) + * @version $Revision$ + * @package propel.engine.database.model + */ +class Inheritance extends XMLElement { + + private $key; + private $className; + private $pkg; + private $ancestor; + private $parent; + + /** + * Sets up the Inheritance object based on the attributes that were passed to loadFromXML(). + * @see parent::loadFromXML() + */ + protected function setupObject() + { + $this->key = $this->getAttribute("key"); + $this->className = $this->getAttribute("class"); + $this->pkg = $this->getAttribute("package"); + $this->ancestor = $this->getAttribute("extends"); + } + + /** + * Get the value of key. + * @return value of key. + */ + public function getKey() + { + return $this->key; + } + + /** + * Set the value of key. + * @param v Value to assign to key. + */ + public function setKey($v) + { + $this->key = $v; + } + + /** + * Get the value of parent. + * @return value of parent. + */ + public function getColumn() + { + return $this->parent; + } + + /** + * Set the value of parent. + * @param v Value to assign to parent. + */ + public function setColumn(Column $v) + { + $this->parent = $v; + } + + /** + * Get the value of className. + * @return value of className. + */ + public function getClassName() + { + return $this->className; + } + + /** + * Set the value of className. + * @param v Value to assign to className. + */ + public function setClassName($v) + { + $this->className = $v; + } + + /** + * Get the value of package. + * @return value of package. + */ + public function getPackage() + { + return $this->pkg; + } + + /** + * Set the value of package. + * @param v Value to assign to package. + */ + public function setPackage($v) + { + $this->pkg = $v; + } + + /** + * Get the value of ancestor. + * @return value of ancestor. + */ + public function getAncestor() + { + return $this->ancestor; + } + + /** + * Set the value of ancestor. + * @param v Value to assign to ancestor. + */ + public function setAncestor($v) + { + $this->ancestor = $v; + } + + /** + * @see XMLElement::appendXml(DOMNode) + */ + public function appendXml(DOMNode $node) + { + $doc = ($node instanceof DOMDocument) ? $node : $node->ownerDocument; + + $inherNode = $node->appendChild($doc->createElement('inheritance')); + $inherNode->setAttribute('key', $this->key); + $inherNode->setAttribute('class', $this->className); + + if ($this->ancestor !== null) { + $inherNode->setAttribute('extends', $this->ancestor); + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/NameFactory.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/NameFactory.php.svn-base new file mode 100644 index 0000000..a4c5a15 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/NameFactory.php.svn-base @@ -0,0 +1,88 @@ +. + */ + +include_once 'propel/engine/EngineException.php'; +include_once 'propel/engine/database/model/NameGenerator.php'; +include_once 'propel/engine/database/model/PhpNameGenerator.php'; +include_once 'propel/engine/database/model/ConstraintNameGenerator.php'; + +/** + * A name generation factory. + * + * @author Hans Lellelid (Propel) + * @author Daniel Rall (Torque) + * @version $Revision$ + * @package propel.engine.database.model + */ +class NameFactory { + + /** + * The class name of the PHP name generator. + */ + const PHP_GENERATOR = 'PhpNameGenerator'; + + /** + * The fully qualified class name of the constraint name generator. + */ + const CONSTRAINT_GENERATOR = 'ConstraintNameGenerator'; + + /** + * The single instance of this class. + */ + private static $instance; + + /** + * The cache of NameGenerator algorithms in use for + * name generation, keyed by fully qualified class name. + */ + private static $algorithms = array(); + + /** + * Factory method which retrieves an instance of the named generator. + * + * @param name The fully qualified class name of the name + * generation algorithm to retrieve. + */ + protected static function getAlgorithm($name) + { + if (!isset(self::$algorithms[$name])) { + self::$algorithms[$name] = new $name(); + } + return self::$algorithms[$name]; + } + + /** + * Given a list of String objects, implements an + * algorithm which produces a name. + * + * @param string $algorithmName The fully qualified class name of the {@link NameGenerator} + * implementation to use to generate names. + * @param array $inputs Inputs used to generate a name. + * @return The generated name. + * @throws EngineException + */ + public static function generateName($algorithmName, $inputs) + { + $algorithm = self::getAlgorithm($algorithmName); + return $algorithm->generateName($inputs); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/NameGenerator.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/NameGenerator.php.svn-base new file mode 100644 index 0000000..a687056 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/NameGenerator.php.svn-base @@ -0,0 +1,83 @@ +. + */ + +/** + * The generic interface to a name generation algorithm. + * + * @author Hans Lellelid (Propel) + * @author Daniel Rall (Torque) + * @author Byron Foster (Torque) + * @version $Revision$ + * @package propel.engine.database.model + */ +interface NameGenerator { + /** + * The character used by most implementations as the separator + * between name elements. + */ + const STD_SEPARATOR_CHAR = '_'; + + /** + * Traditional method for converting schema table and column names + * to PHP names. The CONV_METHOD_XXX constants + * define how names for columns and tables in the database schema + * will be converted to PHP source names. + * + * @see PhpNameGenerator::underscoreMethod() + */ + const CONV_METHOD_UNDERSCORE = "underscore"; + + /** + * Heavier method for converting schema table and column names + * to PHP names. Similar to {@link #CONV_METHOD_UNDERSCORE} but + * this one will pass only letters and numbers through and will + * use as separator any character that is not a letter or a number + * inside the string to be converted. The CONV_METHOD_XXX + * constants define how names for columns and tales in the + * database schema will be converted to PHP source names. + */ + const CONV_METHOD_CLEAN = "clean"; + + /** + * Similar to {@link #CONV_METHOD_UNDERSCORE} except nothing is + * converted to lowercase. + * + * @see PhpNameGenerator::phpnameMethod() + */ + const CONV_METHOD_PHPNAME = "phpname"; + + /** + * Specifies no modification when converting from a schema column + * or table name to a PHP name. + */ + const CONV_METHOD_NOCHANGE = "nochange"; + + /** + * Given a list of String objects, implements an + * algorithm which produces a name. + * + * @param inputs Inputs used to generate a name. + * @return The generated name. + * @throws EngineException + */ + public function generateName($inputs); +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/PhpNameGenerator.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/PhpNameGenerator.php.svn-base new file mode 100644 index 0000000..07b8456 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/PhpNameGenerator.php.svn-base @@ -0,0 +1,175 @@ +. + */ + +include_once 'propel/engine/database/model/NameGenerator.php'; + +/** + * A NameGenerator implementation for PHP-esque names. + * + * @author Hans Lellelid (Propel) + * @author Daniel Rall (Torque) + * @author Byron Foster (Torque) + * @author Bernd Goldschmidt + * @version $Revision$ + * @package propel.engine.database.model + */ +class PhpNameGenerator implements NameGenerator { + + /** + * inputs should consist of two (three) elements, the + * original name of the database element and the method for + * generating the name. + * The optional third element may contain a prefix that will be + * stript from name prior to generate the resulting name. + * There are currently three methods: + * CONV_METHOD_NOCHANGE - xml names are converted + * directly to php names without modification. + * CONV_METHOD_UNDERSCORE will capitalize the first + * letter, remove underscores, and capitalize each letter before + * an underscore. All other letters are lowercased. "phpname" + * works the same as the CONV_METHOD_PHPNAME method + * but will not lowercase any characters. + * + * @param inputs list expected to contain two (optional: three) parameters, + * element 0 contains name to convert, element 1 contains method for conversion, + * optional element 2 contains prefix to be striped from name + * @return The generated name. + * @see NameGenerator + */ + public function generateName($inputs) + { + $schemaName = $inputs[0]; + $method = $inputs[1]; + + if (count($inputs)>2) { + $prefix = $inputs[2]; + if ($prefix != '' && substr($schemaName, 0, strlen($prefix)) == $prefix) { + $schemaName = substr($schemaName, strlen($prefix)); + } + } + + $phpName = null; + + switch ($method) { + case self::CONV_METHOD_CLEAN: + $phpName = $this->cleanMethod($schemaName); + break; + case self::CONV_METHOD_PHPNAME: + $phpName = $this->phpnameMethod($schemaName); + break; + case self::CONV_METHOD_NOCHANGE: + $phpName = $this->nochangeMethod($schemaName); + break; + case self::CONV_METHOD_UNDERSCORE: + default: + $phpName = $this->underscoreMethod($schemaName); + } + + return $phpName; + } + + /** + * Converts a database schema name to php object name. Removes + * STD_SEPARATOR_CHAR, capitilizes first letter of + * name and each letter after the STD_SEPERATOR, + * converts the rest of the letters to lowercase. + * + * my_CLASS_name -> MyClassName + * + * @param string $schemaName name to be converted. + * @return string Converted name. + * @see NameGenerator + * @see #underscoreMethod() + */ + protected function underscoreMethod($schemaName) + { + $name = ""; + $tok = strtok($schemaName, self::STD_SEPARATOR_CHAR); + while ($tok) { + $name .= ucfirst(strtolower($tok)); + $tok = strtok(self::STD_SEPARATOR_CHAR); + } + return $name; + } + + /** + * Converts a database schema name to php object name. Removes + * any character that is not a letter or a number and capitilizes + * first letter of the name, the first letter of each alphanumeric + * block and converts the rest of the letters to lowercase. + * + * T$NAMA$RFO_max => TNamaRfoMax + * + * @param string $schemaName name to be converted. + * @return string Converted name. + * @see NameGenerator + * @see #underscoreMethod() + */ + protected function cleanMethod($schemaName) + { + $name = ""; + $regexp = '/([a-z0-9]+)/i'; + $matches = array(); + if (preg_match_all($regexp, $schemaName, $matches)) { + foreach($matches[1] AS $tok) { + $name .= ucfirst(strtolower($tok)); + } + } else { + return $schemaName; + } + return $name; + } + + /** + * Converts a database schema name to php object name. Operates + * same as underscoreMethod but does not convert anything to + * lowercase. + * + * my_CLASS_name -> MyCLASSName + * + * @param string $schemaName name to be converted. + * @return string Converted name. + * @see NameGenerator + * @see #underscoreMethod(String) + */ + protected function phpnameMethod($schemaName) + { + $name = ""; + $tok = strtok($schemaName, self::STD_SEPARATOR_CHAR); + while ($tok !== false) { + $name .= ucfirst($tok); + $tok = strtok(self::STD_SEPARATOR_CHAR); + } + return $name; + } + + /** + * Converts a database schema name to PHP object name. In this + * case no conversion is made. + * + * @param string $name name to be converted. + * @return string The name parameter, unchanged. + */ + protected function nochangeMethod($name) + { + return $name; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/PropelTypes.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/PropelTypes.php.svn-base new file mode 100644 index 0000000..3aa7418 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/PropelTypes.php.svn-base @@ -0,0 +1,331 @@ +. + */ + +/** + * A class that maps PropelTypes to PHP native types, PDO types (and Creole types). + * + * @author Hans Lellelid (Propel) + * @version $Revision$ + * @package propel.engine.database.model + */ +class PropelTypes { + + const CHAR = "CHAR"; + const VARCHAR = "VARCHAR"; + const LONGVARCHAR = "LONGVARCHAR"; + const CLOB = "CLOB"; + const NUMERIC = "NUMERIC"; + const DECIMAL = "DECIMAL"; + const TINYINT = "TINYINT"; + const SMALLINT = "SMALLINT"; + const INTEGER = "INTEGER"; + const BIGINT = "BIGINT"; + const REAL = "REAL"; + const FLOAT = "FLOAT"; + const DOUBLE = "DOUBLE"; + const BINARY = "BINARY"; + const VARBINARY = "VARBINARY"; + const LONGVARBINARY = "LONGVARBINARY"; + const BLOB = "BLOB"; + const DATE = "DATE"; + const TIME = "TIME"; + const TIMESTAMP = "TIMESTAMP"; + + const BU_DATE = "BU_DATE"; + const BU_TIMESTAMP = "BU_TIMESTAMP"; + + const BOOLEAN = "BOOLEAN"; + + private static $TEXT_TYPES = array ( + self::CHAR, self::VARCHAR, self::LONGVARCHAR, self::CLOB, self::DATE, self::TIME, self::TIMESTAMP, self::BU_DATE, self::BU_TIMESTAMP + ); + + private static $LOB_TYPES = array ( + self::VARBINARY, self::LONGVARBINARY, self::BLOB + ); + + private static $TEMPORAL_TYPES = array ( + self::DATE, self::TIME, self::TIMESTAMP, self::BU_DATE, self::BU_TIMESTAMP + ); + + private static $NUMERIC_TYPES = array ( + self::SMALLINT, self::TINYINT, self::INTEGER, self::BIGINT, self::FLOAT, self::DOUBLE, self::NUMERIC, self::DECIMAL, self::REAL + ); + + const CHAR_NATIVE_TYPE = "string"; + const VARCHAR_NATIVE_TYPE = "string"; + const LONGVARCHAR_NATIVE_TYPE = "string"; + const CLOB_NATIVE_TYPE = "string"; // Clob + const NUMERIC_NATIVE_TYPE = "string"; + const DECIMAL_NATIVE_TYPE = "string"; + const BOOLEAN_NATIVE_TYPE = "boolean"; + const TINYINT_NATIVE_TYPE = "int"; + const SMALLINT_NATIVE_TYPE = "int"; + const INTEGER_NATIVE_TYPE = "int"; + const BIGINT_NATIVE_TYPE = "string"; + const REAL_NATIVE_TYPE = "double"; + const FLOAT_NATIVE_TYPE = "double"; + const DOUBLE_NATIVE_TYPE = "double"; + const BINARY_NATIVE_TYPE = "string"; + const VARBINARY_NATIVE_TYPE = "string"; + const LONGVARBINARY_NATIVE_TYPE = "string"; + const BLOB_NATIVE_TYPE = "resource"; + const BU_DATE_NATIVE_TYPE = "string"; + const DATE_NATIVE_TYPE = "string"; + const TIME_NATIVE_TYPE = "string"; + const TIMESTAMP_NATIVE_TYPE = "string"; + const BU_TIMESTAMP_NATIVE_TYPE = "string"; + + /** + * Mapping between Propel types and PHP native types. + * + * @var array + */ + private static $propelToPHPNativeMap = array( + self::CHAR => self::CHAR_NATIVE_TYPE, + self::VARCHAR => self::VARCHAR_NATIVE_TYPE, + self::LONGVARCHAR => self::LONGVARCHAR_NATIVE_TYPE, + self::CLOB => self::CLOB_NATIVE_TYPE, + self::NUMERIC => self::NUMERIC_NATIVE_TYPE, + self::DECIMAL => self::DECIMAL_NATIVE_TYPE, + self::TINYINT => self::TINYINT_NATIVE_TYPE, + self::SMALLINT => self::SMALLINT_NATIVE_TYPE, + self::INTEGER => self::INTEGER_NATIVE_TYPE, + self::BIGINT => self::BIGINT_NATIVE_TYPE, + self::REAL => self::REAL_NATIVE_TYPE, + self::FLOAT => self::FLOAT_NATIVE_TYPE, + self::DOUBLE => self::DOUBLE_NATIVE_TYPE, + self::BINARY => self::BINARY_NATIVE_TYPE, + self::VARBINARY => self::VARBINARY_NATIVE_TYPE, + self::LONGVARBINARY => self::LONGVARBINARY_NATIVE_TYPE, + self::BLOB => self::BLOB_NATIVE_TYPE, + self::DATE => self::DATE_NATIVE_TYPE, + self::BU_DATE => self::BU_DATE_NATIVE_TYPE, + self::TIME => self::TIME_NATIVE_TYPE, + self::TIMESTAMP => self::TIMESTAMP_NATIVE_TYPE, + self::BU_TIMESTAMP => self::BU_TIMESTAMP_NATIVE_TYPE, + self::BOOLEAN => self::BOOLEAN_NATIVE_TYPE, + ); + + /** + * Mapping between Propel types and Creole types (for rev-eng task) + * + * @var array + */ + private static $propelTypeToCreoleTypeMap = array( + + self::CHAR => self::CHAR, + self::VARCHAR => self::VARCHAR, + self::LONGVARCHAR => self::LONGVARCHAR, + self::CLOB => self::CLOB, + self::NUMERIC => self::NUMERIC, + self::DECIMAL => self::DECIMAL, + self::TINYINT => self::TINYINT, + self::SMALLINT => self::SMALLINT, + self::INTEGER => self::INTEGER, + self::BIGINT => self::BIGINT, + self::REAL => self::REAL, + self::FLOAT => self::FLOAT, + self::DOUBLE => self::DOUBLE, + self::BINARY => self::BINARY, + self::VARBINARY => self::VARBINARY, + self::LONGVARBINARY => self::LONGVARBINARY, + self::BLOB => self::BLOB, + self::DATE => self::DATE, + self::TIME => self::TIME, + self::TIMESTAMP => self::TIMESTAMP, + self::BOOLEAN => self::BOOLEAN, + + // These are pre-epoch dates, which we need to map to String type + // since they cannot be properly handled using strtotime() -- or even numeric + // timestamps on Windows. + self::BU_DATE => self::VARCHAR, + self::BU_TIMESTAMP => self::VARCHAR, + + ); + + /** + * Mapping between Propel types and PDO type contants (for prepared statement setting). + * + * @var array + */ + private static $propelTypeToPDOTypeMap = array( + self::CHAR => PDO::PARAM_STR, + self::VARCHAR => PDO::PARAM_STR, + self::LONGVARCHAR => PDO::PARAM_STR, + self::CLOB => PDO::PARAM_STR, + self::NUMERIC => PDO::PARAM_INT, + self::DECIMAL => PDO::PARAM_STR, + self::TINYINT => PDO::PARAM_INT, + self::SMALLINT => PDO::PARAM_INT, + self::INTEGER => PDO::PARAM_INT, + self::BIGINT => PDO::PARAM_INT, + self::REAL => PDO::PARAM_STR, + self::FLOAT => PDO::PARAM_STR, + self::DOUBLE => PDO::PARAM_STR, + self::BINARY => PDO::PARAM_STR, + self::VARBINARY => PDO::PARAM_LOB, + self::LONGVARBINARY => PDO::PARAM_LOB, + self::BLOB => PDO::PARAM_LOB, + self::DATE => PDO::PARAM_STR, + self::TIME => PDO::PARAM_STR, + self::TIMESTAMP => PDO::PARAM_STR, + self::BOOLEAN => PDO::PARAM_BOOL, + + // These are pre-epoch dates, which we need to map to String type + // since they cannot be properly handled using strtotime() -- or even numeric + // timestamps on Windows. + self::BU_DATE => PDO::PARAM_STR, + self::BU_TIMESTAMP => PDO::PARAM_STR, + ); + + /** + * Return native PHP type which corresponds to the + * Creole type provided. Use in the base object class generation. + * + * @param $propelType The Propel type name. + * @return string Name of the native PHP type + */ + public static function getPhpNative($propelType) + { + return self::$propelToPHPNativeMap[$propelType]; + } + + /** + * Returns the correct Creole type _name_ for propel added types + * + * @param $type the propel added type. + * @return string Name of the the correct Creole type (e.g. "VARCHAR"). + */ + public static function getCreoleType($type) + { + return self::$propelTypeToCreoleTypeMap[$type]; + } + + /** + * Resturns the PDO type (PDO::PARAM_* constant) value. + * @return int + */ + public static function getPDOType($type) + { + return self::$propelTypeToPDOTypeMap[$type]; + } + + /** + * Returns Propel type constant corresponding to Creole type code. + * Used but Propel Creole task. + * + * @param int $sqlType The Creole SQL type constant. + * @return string The Propel type to use or NULL if none found. + */ + public static function getPropelType($sqlType) + { + if (isset(self::$creoleToPropelTypeMap[$sqlType])) { + return self::$creoleToPropelTypeMap[$sqlType]; + } + } + + /** + * Get array of Propel types. + * + * @return array string[] + */ + public static function getPropelTypes() + { + return array_keys(self::$propelTypeToCreoleTypeMap); + } + + /** + * Whether passed type is a temporal (date/time/timestamp) type. + * + * @param string $type Propel type + * @return boolean + */ + public static function isTemporalType($type) + { + return in_array($type, self::$TEMPORAL_TYPES); + } + + /** + * Returns true if values for the type need to be quoted. + * + * @param string $type The Propel type to check. + * @return boolean True if values for the type need to be quoted. + */ + public static function isTextType($type) + { + return in_array($type, self::$TEXT_TYPES); + } + + /** + * Returns true if values for the type are numeric. + * + * @param string $type The Propel type to check. + * @return boolean True if values for the type need to be quoted. + */ + public static function isNumericType($type) + { + return in_array($type, self::$NUMERIC_TYPES); + } + + /** + * Returns true if type is a LOB type (i.e. would be handled by Blob/Clob class). + * @param string $type Propel type to check. + * @return boolean + */ + public static function isLobType($type) + { + return in_array($type, self::$LOB_TYPES); + } + + /** + * Convenience method to indicate whether a passed-in PHP type is a primitive. + * + * @param string $phpType The PHP type to check + * @return boolean Whether the PHP type is a primitive (string, int, boolean, float) + */ + public static function isPhpPrimitiveType($phpType) + { + return in_array($phpType, array("boolean", "int", "double", "float", "string")); + } + + /** + * Convenience method to indicate whether a passed-in PHP type is a numeric primitive. + * + * @param string $phpType The PHP type to check + * @return boolean Whether the PHP type is a primitive (string, int, boolean, float) + */ + public static function isPhpPrimitiveNumericType($phpType) + { + return in_array($phpType, array("boolean", "int", "double", "float")); + } + + /** + * Convenience method to indicate whether a passed-in PHP type is an object. + * + * @param string $phpType The PHP type to check + * @return boolean Whether the PHP type is a primitive (string, int, boolean, float) + */ + public static function isPhpObjectType($phpType) + { + return (!self::isPhpPrimitiveType($phpType) && !in_array($phpType, array("resource", "array"))); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/Rule.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/Rule.php.svn-base new file mode 100644 index 0000000..509ef7e --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/Rule.php.svn-base @@ -0,0 +1,204 @@ +. + */ + +require_once 'propel/engine/database/model/XMLElement.php'; + +/** + * Data about a validation rule used in an application. + * + * @author Michael Aichler (Propel) + * @author John McNally (Intake) + * @version $Revision$ + * @package propel.engine.database.model + */ +class Rule extends XMLElement { + + private $name; + private $value; + private $message; + private $validator; + private $classname; + + /** + * Sets up the Rule object based on the attributes that were passed to loadFromXML(). + * @see parent::loadFromXML() + */ + protected function setupObject() + { + $this->name = $this->getAttribute("name"); + $this->value = $this->getAttribute("value"); + $this->classname = $this->getAttribute("class"); + + /* + * Set some default values if they are not specified. + * This is escpecially useful for maxLength; the size + * is already known by the column and this way it is + * not necessary to manage the same size two times. + * + * Currently there is only one such supported default: + * - maxLength value = column max length + * (this default cannot be easily set at runtime w/o changing + * design of class system in undesired ways) + */ + if ($this->value === null) { + switch($this->name) { + case 'maxLength': + $this->value = $this->validator->getColumn()->getSize(); + break; + } + } + + $this->message = $this->getAttribute("message"); + } + + /** + * Sets the owning validator for this rule. + * @param Validator $validator + * @see Validator::addRule() + */ + public function setValidator(Validator $validator) + { + $this->validator = $validator; + } + + /** + * Gets the owning validator for this rule. + * @return Validator + */ + public function getValidator() + { + return $this->validator; + } + + /** + * Sets the dot-path name of class to use for rule. + * If no class is specified in XML, then a classname will + * be built based on the 'name' attrib. + * @param string $classname dot-path classname (e.g. myapp.propel.MyValidator) + */ + public function setClass($classname) + { + $this->classname = $classname; + } + + /** + * Gets the dot-path name of class to use for rule. + * If no class was specified, this method will build a default classname + * based on the 'name' attribute. E.g. 'maxLength' -> 'propel.validator.MaxLengthValidator' + * @return string dot-path classname (e.g. myapp.propel.MyValidator) + */ + public function getClass() + { + if ($this->classname === null && $this->name !== null) { + return "propel.validator." . ucfirst($this->name) . "Validator"; + } + return $this->classname; + } + + /** + * Sets the name of the validator for this rule. + * This name is used to build the classname if none was specified. + * @param string $name Validator name for this rule (e.g. "maxLength", "required"). + * @see getClass() + */ + public function setName($name) + { + $this->name = $name; + } + + /** + * Gets the name of the validator for this rule. + * @return string Validator name for this rule (e.g. "maxLength", "required"). + */ + public function getName() + { + return $this->name; + } + + /** + * Sets the value parameter for this validator rule. + * Note: not all validators need a value parameter (e.g. 'required' validator + * does not). + * @param string $value + */ + public function setValue($value) + { + $this->value = $value; + } + + /** + * Gets the value parameter for this validator rule. + * @return string + */ + public function getValue() + { + return $this->value; + } + + /** + * Sets the message that will be displayed to the user if validation fails. + * This message may be a Gettext msgid (if translation="gettext") or some other + * id for an alternative not-yet-supported translation system. It may also + * be a simple, single-language string. + * @param string $message + * @see setTranslation() + */ + public function setMessage($message) + { + $this->message = $message; + } + + /** + * Gets the message that will be displayed to the user if validation fails. + * This message may be a Gettext msgid (if translation="gettext") or some other + * id for an alternative not-yet-supported translation system. It may also + * be a simple, single-language string. + * @return string + * @see setTranslation() + */ + public function getMessage() + { + $message = str_replace('${value}', $this->getValue(), $this->message); + return $message; + } + + /** + * @see XMLElement::appendXml(DOMNode) + */ + public function appendXml(DOMNode $node) + { + $doc = ($node instanceof DOMDocument) ? $node : $node->ownerDocument; + + $ruleNode = $node->appendChild($doc->createElement('rule')); + $ruleNode->setAttribute('name', $this->getName()); + + if ($this->getValue() !== null) { + $ruleNode->setAttribute('value', $this->getValue()); + } + + if ($this->classname !== null) { + $ruleNode->setAttribute('class', $this->getClass()); + } + + $ruleNode->setAttribute('message', $this->getMessage()); + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/Table.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/Table.php.svn-base new file mode 100644 index 0000000..b448d92 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/Table.php.svn-base @@ -0,0 +1,1429 @@ +. + */ + +require_once 'propel/engine/database/model/XMLElement.php'; +include_once 'propel/engine/EngineException.php'; +include_once 'propel/engine/database/model/IDMethod.php'; +include_once 'propel/engine/database/model/NameFactory.php'; +include_once 'propel/engine/database/model/Column.php'; +include_once 'propel/engine/database/model/Unique.php'; +include_once 'propel/engine/database/model/ForeignKey.php'; +include_once 'propel/engine/database/model/IdMethodParameter.php'; +include_once 'propel/engine/database/model/Validator.php'; +include_once 'propel/engine/database/model/Behavior.php'; + + +/** + * Data about a table used in an application. + * + * @author Hans Lellelid (Propel) + * @author Leon Messerschmidt (Torque) + * @author Jason van Zyl (Torque) + * @author Martin Poeschl (Torque) + * @author John McNally (Torque) + * @author Daniel Rall (Torque) + * @author Byron Foster (Torque) + * @version $Revision$ + * @package propel.engine.database.model + */ +class Table extends XMLElement implements IDMethod { + + /** + * Enables some debug printing. + */ + const DEBUG = false; + + /** + * Columns for this table. + * + * @var array Column[] + */ + private $columnList = array(); + + /** + * Validators for this table. + * + * @var array Validator[] + */ + private $validatorList = array(); + + /** + * Foreign keys for this table. + * + * @var array ForeignKey[] + */ + private $foreignKeys = array(); + + /** + * Indexes for this table. + * + * @var array Index[] + */ + private $indices = array(); + + /** + * Unique indexes for this table. + * + * @var array Unique[] + */ + private $unices = array(); + + /** + * Any parameters for the ID method (currently supports changing sequence name). + * + * @var array + */ + private $idMethodParameters = array(); + + /** + * Table name. + * + * @var string + */ + private $name; + + /** + * Table description. + * + * @var string + */ + private $description; + + /** + * phpName for the table. + * + * @var string + */ + private $phpName; + + /** + * ID method for the table (e.g. IDMethod::NATIVE, IDMethod::NONE). + * + * @var string + */ + private $idMethod; + + /** + * Wether an INSERT with set PK is allowed on tables with IDMethod::NATIVE + * + * @var boolean + */ + private $allowPkInsert; + + /** + * Strategry to use for converting column name to phpName. + * + * @var string + */ + private $phpNamingMethod; + + /** + * The Database that this table belongs to. + * + * @var Database + */ + private $database; + + /** + * Foreign Keys that refer to this table. + * + * @var array ForeignKey[] + */ + private $referrers = array(); + + /** + * Names of foreign tables. + * + * @var array string[] + */ + private $foreignTableNames; + + /** + * Whether this table contains a foreign primary key. + * + * @var boolean + */ + private $containsForeignPK; + + /** + * The inheritance column for this table (if any). + * + * @var Column + */ + private $inheritanceColumn; + + /** + * Whether to skip generation of SQL for this table. + * + * @var boolean + */ + private $skipSql; + + /** + * Whether this table is "read-only". + * + * @var boolean + */ + private $readOnly; + + /** + * Whether this table should result in abstract OM classes. + * + * @var boolean + */ + private $abstractValue; + + /** + * Whether this table is an alias for another table. + * + * @var string + */ + private $alias; + + /** + * The interface that the generated "object" class should implement. + * + * @var string + */ + private $enterface; + + /** + * The package for the generated OM. + * + * @var string + */ + private $pkg; + + /** + * The base class to extend for the generated "object" class. + * + * @var string + */ + private $baseClass; + + /** + * The base peer class to extend for generated "peer" class. + * + * @var string + */ + private $basePeer; + + /** + * Map of columns by name. + * + * @var array + */ + private $columnsByName = array(); + + /** + * Map of columns by phpName. + * + * @var array + */ + private $columnsByPhpName = array(); + + /** + * Whether this table needs to use transactions in Postgres. + * + * @var string + * @deprecated + */ + private $needsTransactionInPostgres; + + /** + * Whether to perform additional indexing on this table. + * + * @var boolean + */ + private $heavyIndexing; + + /** + * Whether this table is for reference only. + * + * @var boolean + */ + private $forReferenceOnly; + + /** + * The tree mode (nested set, etc.) implemented by this table. + * + * @var string + */ + private $treeMode; + + /** + * Whether to reload the rows in this table after insert. + * + * @var boolean + */ + private $reloadOnInsert; + + /** + * Whether to reload the rows in this table after update. + * + * @var boolean + */ + private $reloadOnUpdate; + + /** + * List of behaviors registered for this table + * + * @var array + */ + protected $behaviors = array(); + + /** + * Constructs a table object with a name + * + * @param string $name table name + */ + public function __construct($name = null) + { + $this->name = $name; + } + + /** + * Sets up the Rule object based on the attributes that were passed to loadFromXML(). + * @see parent::loadFromXML() + */ + public function setupObject() + { + $this->name = $this->getAttribute("name"); + $this->phpName = $this->getAttribute("phpName"); + $this->idMethod = $this->getAttribute("idMethod", $this->getDatabase()->getDefaultIdMethod()); + $this->allowPkInsert = $this->booleanValue($this->getAttribute("allowPkInsert")); + + // retrieves the method for converting from specified name to a PHP name. + $this->phpNamingMethod = $this->getAttribute("phpNamingMethod", $this->getDatabase()->getDefaultPhpNamingMethod()); + + $this->skipSql = $this->booleanValue($this->getAttribute("skipSql")); + $this->readOnly = $this->booleanValue($this->getAttribute("readOnly")); + + $this->pkg = $this->getAttribute("package"); + $this->abstractValue = $this->booleanValue($this->getAttribute("abstract")); + $this->baseClass = $this->getAttribute("baseClass"); + $this->basePeer = $this->getAttribute("basePeer"); + $this->alias = $this->getAttribute("alias"); + + $this->heavyIndexing = ( $this->booleanValue($this->getAttribute("heavyIndexing")) + || ("false" !== $this->getAttribute("heavyIndexing") + && $this->getDatabase()->isHeavyIndexing() ) ); + $this->description = $this->getAttribute("description"); + $this->enterface = $this->getAttribute("interface"); // sic ('interface' is reserved word) + $this->treeMode = $this->getAttribute("treeMode"); + + $this->reloadOnInsert = $this->booleanValue($this->getAttribute("reloadOnInsert")); + $this->reloadOnUpdate = $this->booleanValue($this->getAttribute("reloadOnUpdate")); + } + + /** + *

    A hook for the SAX XML parser to call when this table has + * been fully loaded from the XML, and all nested elements have + * been processed.

    + * + *

    Performs heavy indexing and naming of elements which weren't + * provided with a name.

    + */ + public function doFinalInitialization() + { + // Heavy indexing must wait until after all columns composing + // a table's primary key have been parsed. + if ($this->heavyIndexing) { + $this->doHeavyIndexing(); + } + + // Name any indices which are missing a name using the + // appropriate algorithm. + $this->doNaming(); + + // execute behavior table modifiers + foreach ($this->getBehaviors() as $behavior) + { + $behavior->getTableModifier()->modifyTable(); + } + + // if idMethod is "native" and in fact there are no autoIncrement + // columns in the table, then change it to "none" + $anyAutoInc = false; + foreach ($this->getColumns() as $col) { + if ($col->isAutoIncrement()) { + $anyAutoInc = true; + } + } + if ($this->getIdMethod() === IDMethod::NATIVE && !$anyAutoInc) { + $this->setIdMethod(IDMethod::NO_ID_METHOD); + } + + // If there is no PK, then throw an error. Propel 1.3 requires primary keys. + $pk = $this->getPrimaryKey(); + if (empty($pk)) { + throw new EngineException("Table '".$this->getName()."' does not have a primary key defined. Propel requires all tables to have a primary key."); + } + + } + + /** + *

    Adds extra indices for multi-part primary key columns.

    + * + *

    For databases like MySQL, values in a where clause much + * match key part order from the left to right. So, in the key + * definition PRIMARY KEY (FOO_ID, BAR_ID), + * FOO_ID must be the first element used in + * the where clause of the SQL query used against + * this table for the primary key index to be used. This feature + * could cause problems under MySQL with heavily indexed tables, + * as MySQL currently only supports 16 indices per table (i.e. it + * might cause too many indices to be created).

    + * + *

    See the + * manual for a better description of why heavy indexing is + * useful for quickly searchable database tables.

    + */ + private function doHeavyIndexing() + { + if (self::DEBUG) { + print("doHeavyIndex() called on table " . $this->name."\n"); + } + + $pk = $this->getPrimaryKey(); + $size = count($pk); + + // We start at an offset of 1 because the entire column + // list is generally implicitly indexed by the fact that + // it's a primary key. + for ($i=1; $i < $size; $i++) { + $idx = new Index(); + $idx->setColumns(array_slice($pk, $i, $size)); + $this->addIndex($idx); + } + } + + /** + * Names composing objects which haven't yet been named. This + * currently consists of foreign-key and index entities. + */ + private function doNaming() { + + // Assure names are unique across all databases. + try { + for ($i=0, $size = count($this->foreignKeys); $i < $size; $i++) { + $fk = $this->foreignKeys[$i]; + $name = $fk->getName(); + if (empty($name)) { + $name = $this->acquireConstraintName("FK", $i + 1); + $fk->setName($name); + } + } + + for ($i = 0, $size = count($this->indices); $i < $size; $i++) { + $index = $this->indices[$i]; + $name = $index->getName(); + if (empty($name)) { + $name = $this->acquireConstraintName("I", $i + 1); + $index->setName($name); + } + } + + for ($i = 0, $size = count($this->unices); $i < $size; $i++) { + $index = $this->unices[$i]; + $name = $index->getName(); + if (empty($name)) { + $name = $this->acquireConstraintName("U", $i + 1); + $index->setName($name); + } + } + + // NOTE: Most RDBMSes can apparently name unique column + // constraints/indices themselves (using MySQL and Oracle + // as test cases), so we'll assume that we needn't add an + // entry to the system name list for these. + } catch (EngineException $nameAlreadyInUse) { + print $nameAlreadyInUse->getMessage() . "\n"; + print $nameAlreadyInUse->getTraceAsString(); + } + } + + /** + * Macro to a constraint name. + * + * @param nameType constraint type + * @param nbr unique number for this constraint type + * @return unique name for constraint + * @throws EngineException + */ + private function acquireConstraintName($nameType, $nbr) + { + $inputs = array(); + $inputs[] = $this->getDatabase(); + $inputs[] = $this->getName(); + $inputs[] = $nameType; + $inputs[] = $nbr; + return NameFactory::generateName(NameFactory::CONSTRAINT_GENERATOR, $inputs); + } + + /** + * Gets the value of base class for classes produced from this table. + * + * @return The base class for classes produced from this table. + */ + public function getBaseClass() + { + if ($this->isAlias() && $this->baseClass === null) { + return $this->alias; + } elseif ($this->baseClass === null) { + return $this->getDatabase()->getBaseClass(); + } else { + return $this->baseClass; + } + } + + /** + * Set the value of baseClass. + * @param v Value to assign to baseClass. + */ + public function setBaseClass($v) + { + $this->baseClass = $v; + } + + /** + * Get the value of basePeer. + * @return value of basePeer. + */ + public function getBasePeer() + { + if ($this->isAlias() && $this->basePeer === null) { + return $this->alias . "Peer"; + } elseif ($this->basePeer === null) { + return $this->getDatabase()->getBasePeer(); + } else { + return $this->basePeer; + } + } + + /** + * Set the value of basePeer. + * @param v Value to assign to basePeer. + */ + public function setBasePeer($v) + { + $this->basePeer = $v; + } + + /** + * A utility function to create a new column from attrib and add it to this + * table. + * + * @param $coldata xml attributes or Column class for the column to add + * @return the added column + */ + public function addColumn($data) + { + if ($data instanceof Column) { + $col = $data; + $col->setTable($this); + if ($col->isInheritance()) { + $this->inheritanceColumn = $col; + } + $this->columnList[] = $col; + $this->columnsByName[$col->getName()] = $col; + $this->columnsByPhpName[$col->getPhpName()] = $col; + $col->setPosition(count($this->columnList)); + $this->needsTransactionInPostgres |= $col->requiresTransactionInPostgres(); + return $col; + } else { + $col = new Column(); + $col->setTable($this); + $col->loadFromXML($data); + return $this->addColumn($col); // call self w/ different param + } + } + + /** + * Add a validator to this table. + * + * Supports two signatures: + * - addValidator(Validator $validator) + * - addValidator(array $attribs) + * + * @param mixed $data Validator object or XML attribs (array) from element. + * @return Validator The added Validator. + * @throws EngineException + */ + public function addValidator($data) + { + if ($data instanceof Validator) { + $validator = $data; + $col = $this->getColumn($validator->getColumnName()); + if ($col == null) { + throw new EngineException("Failed adding validator to table '" . $this->getName() . + "': column '" . $validator->getColumnName() . "' does not exist !"); + } + $validator->setColumn($col); + $validator->setTable($this); + $this->validatorList[] = $validator; + return $validator; + } else { + $validator = new Validator(); + $validator->setTable($this); + $validator->loadFromXML($data); + return $this->addValidator($validator); + } + } + + /** + * A utility function to create a new foreign key + * from attrib and add it to this table. + */ + public function addForeignKey($fkdata) + { + if ($fkdata instanceof ForeignKey) { + $fk = $fkdata; + $fk->setTable($this); + $this->foreignKeys[] = $fk; + + if ($this->foreignTableNames === null) { + $this->foreignTableNames = array(); + } + if (!in_array($fk->getForeignTableName(), $this->foreignTableNames)) { + $this->foreignTableNames[] = $fk->getForeignTableName(); + } + return $fk; + } else { + $fk = new ForeignKey(); + $fk->loadFromXML($fkdata); + return $this->addForeignKey($fk); + } + } + + /** + * Gets the column that subclasses of the class representing this + * table can be produced from. + * @return Column + */ + public function getChildrenColumn() + { + return $this->inheritanceColumn; + } + + /** + * Get the subclasses that can be created from this table. + * @return array string[] Class names + */ + public function getChildrenNames() + { + if ($this->inheritanceColumn === null + || !$this->inheritanceColumn->isEnumeratedClasses()) { + return null; + } + $children = $this->inheritanceColumn->getChildren(); + $names = array(); + for ($i = 0, $size=count($children); $i < $size; $i++) { + $names[] = get_class($children[$i]); + } + return $names; + } + + /** + * Adds the foreign key from another table that refers to this table. + */ + public function addReferrer(ForeignKey $fk) + { + if ($this->referrers === null) { + $this->referrers = array(); + } + $this->referrers[] = $fk; + } + + /** + * Get list of references to this table. + */ + public function getReferrers() + { + return $this->referrers; + } + + /** + * Set whether this table contains a foreign PK + */ + public function setContainsForeignPK($b) + { + $this->containsForeignPK = (boolean) $b; + } + + /** + * Determine if this table contains a foreign PK + */ + public function getContainsForeignPK() + { + return $this->containsForeignPK; + } + + /** + * A list of tables referenced by foreign keys in this table + */ + public function getForeignTableNames() + { + if ($this->foreignTableNames === null) { + $this->foreignTableNames = array(); + } + return $this->foreignTableNames; + } + + /** + * Return true if the column requires a transaction in Postgres + */ + public function requiresTransactionInPostgres() + { + return $this->needsTransactionInPostgres; + } + + /** + * A utility function to create a new id method parameter + * from attrib or object and add it to this table. + */ + public function addIdMethodParameter($impdata) + { + if ($impdata instanceof IdMethodParameter) { + $imp = $impdata; + $imp->setTable($this); + if ($this->idMethodParameters === null) { + $this->idMethodParameters = array(); + } + $this->idMethodParameters[] = $imp; + return $imp; + } else { + $imp = new IdMethodParameter(); + $imp->loadFromXML($impdata); + return $this->addIdMethodParameter($imp); // call self w/ diff param + } + } + + /** + * Adds a new index to the index list and set the + * parent table of the column to the current table + */ + public function addIndex($idxdata) + { + if ($idxdata instanceof Index) { + $index = $idxdata; + $index->setTable($this); + $index->getName(); // we call this method so that the name is created now if it doesn't already exist. + $this->indices[] = $index; + return $index; + } else { + $index = new Index($this); + $index->loadFromXML($idxdata); + return $this->addIndex($index); + } + } + + /** + * Adds a new Unique to the Unique list and set the + * parent table of the column to the current table + */ + public function addUnique($unqdata) + { + if ($unqdata instanceof Unique) { + $unique = $unqdata; + $unique->setTable($this); + $unique->getName(); // we call this method so that the name is created now if it doesn't already exist. + $this->unices[] = $unique; + return $unique; + } else { + $unique = new Unique($this); + $unique->loadFromXML($unqdata); + return $this->addUnique($unique); + } + } + + /** + * Retrieves the configuration object, filled by build.properties + * + * @return GeneratorConfig + */ + public function getGeneratorConfig() + { + return $this->getDatabase()->getAppData()->getPlatform()->getGeneratorConfig(); + } + + /** + * Adds a new Behavior to the table + * @return Behavior A behavior instance + */ + public function addBehavior($bdata) + { + if ($bdata instanceof Behavior) { + $behavior = $bdata; + $behavior->setTable($this); + $this->behaviors[$behavior->getName()] = $behavior; + return $behavior; + } else { + $class = $this->getConfiguredBehavior($bdata['name']); + $behavior = new $class(); + $behavior->loadFromXML($bdata); + return $this->addBehavior($behavior); + } + } + + /** + * Get the table behaviors + * @return Array of Behavior objects + */ + public function getBehaviors() + { + return $this->behaviors; + } + + /** + * Get one table behavior by name + * @param string $name the behavior name + * @return Behavior a behavior object + */ + public function getBehavior($name) + { + return $this->behaviors[$name]; + } + + /** + * Get the name of the Table + */ + public function getName() + { + return $this->name; + } + + /** + * Set the name of the Table + */ + public function setName($newName) + { + $this->name = $newName; + } + + /** + * Get the description for the Table + */ + public function getDescription() + { + return $this->description; + } + + /** + * Set the description for the Table + * + * @param newDescription description for the Table + */ + public function setDescription($newDescription) + { + $this->description = $newDescription; + } + + /** + * Get name to use in PHP sources + * @return string + */ + public function getPhpName() + { + if ($this->phpName === null) { + $inputs = array(); + $inputs[] = $this->name; + $inputs[] = $this->phpNamingMethod; + try { + $this->phpName = NameFactory::generateName(NameFactory::PHP_GENERATOR, $inputs); + } catch (EngineException $e) { + print $e->getMessage() . "\n"; + print $e->getTraceAsString(); + } + } + return $this->phpName; + } + + /** + * Set name to use in PHP sources + * @param string $phpName + */ + public function setPhpName($phpName) + { + $this->phpName = $phpName; + } + + /** + * Get the method for generating pk's + * [HL] changing behavior so that Database default + * method is returned if no method has been specified + * for the table. + * @return string + */ + public function getIdMethod() + { + if ($this->idMethod === null) { + return IDMethod::NO_ID_METHOD; + } else { + return $this->idMethod; + } + } + + /** + * Whether we allow to insert primary keys on tables with + * idMethod=native + * + * @return boolean + */ + public function isAllowPkInsert() + { + return $this->allowPkInsert; + } + + + /** + * Set the method for generating pk's + */ + public function setIdMethod($idMethod) + { + $this->idMethod = $idMethod; + } + + /** + * Skip generating sql for this table (in the event it should + * not be created from scratch). + * @return boolean Value of skipSql. + */ + public function isSkipSql() + { + return ($this->skipSql || $this->isAlias() || $this->isForReferenceOnly()); + } + + /** + * Is table read-only, in which case only accessors (and relationship setters) + * will be created. + * @return boolan Value of readOnly. + */ + public function isReadOnly() + { + return $this->readOnly; + } + + /** + * Set whether this table should have its creation sql generated. + * @param boolean $v Value to assign to skipSql. + */ + public function setSkipSql($v) + { + $this->skipSql = $v; + } + + /** + * Whether to force object to reload on INSERT. + * @return boolean + */ + public function isReloadOnInsert() + { + return $this->reloadOnInsert; + } + + /** + * Whether to force object to reload on UPDATE. + * @return boolean + */ + public function isReloadOnUpdate() + { + return $this->reloadOnUpdate; + } + + /** + * PhpName of om object this entry references. + * @return value of external. + */ + public function getAlias() + { + return $this->alias; + } + + /** + * Is this table specified in the schema or is there just + * a foreign key reference to it. + * @return value of external. + */ + public function isAlias() + { + return ($this->alias !== null); + } + + /** + * Set whether this table specified in the schema or is there just + * a foreign key reference to it. + * @param v Value to assign to alias. + */ + public function setAlias($v) + { + $this->alias = $v; + } + + + /** + * Interface which objects for this table will implement + * @return value of interface. + */ + public function getInterface() + { + return $this->enterface; + } + + /** + * Interface which objects for this table will implement + * @param v Value to assign to interface. + */ + public function setInterface($v) + { + $this->enterface = $v; + } + + /** + * When a table is abstract, it marks the business object class that is + * generated as being abstract. If you have a table called "FOO", then the + * Foo BO will be public abstract class Foo + * This helps support class hierarchies + * + * @return value of abstractValue. + */ + public function isAbstract() + { + return $this->abstractValue; + } + + /** + * When a table is abstract, it marks the business object + * class that is generated as being abstract. If you have a + * table called "FOO", then the Foo BO will be + * public abstract class Foo + * This helps support class hierarchies + * + * @param v Value to assign to abstractValue. + */ + public function setAbstract($v) + { + $this->abstractValue = (boolean) $v; + } + + /** + * Get the value of package. + * @return value of package. + */ + public function getPackage() + { + return $this->pkg; + } + + /** + * Set the value of package. + * @param v Value to assign to package. + */ + public function setPackage($v) + { + $this->pkg = $v; + } + + /** + * Returns an Array containing all the columns in the table + * @return array Column[] + */ + public function getColumns() + { + return $this->columnList; + } + + /** + * Utility method to get the number of columns in this table + */ + public function getNumColumns() + { + return count($this->columnList); + } + + /** + * Utility method to get the number of columns in this table + */ + public function getNumLazyLoadColumns() + { + $count = 0; + foreach ($this->columnList as $col) { + if ($col->isLazyLoad()) { + $count++; + } + } + return $count; + } + + /** + * Returns an Array containing all the validators in the table + * @return array Validator[] + */ + public function getValidators() + { + return $this->validatorList; + } + + /** + * Returns an Array containing all the FKs in the table. + * @return array ForeignKey[] + */ + public function getForeignKeys() + { + return $this->foreignKeys; + } + + /** + * Returns a Collection of parameters relevant for the chosen + * id generation method. + */ + public function getIdMethodParameters() + { + return $this->idMethodParameters; + } + + /** + * Returns an Array containing all the FKs in the table + * @return array Index[] + */ + public function getIndices() + { + return $this->indices; + } + + /** + * Returns an Array containing all the UKs in the table + * @return array Unique[] + */ + public function getUnices() + { + return $this->unices; + } + + /** + * Returns a specified column. + * @return Column Return a Column object or null if it does not exist. + */ + public function getColumn($name) + { + return @$this->columnsByName[$name]; + } + + /** + * Returns a specified column. + * @return Column Return a Column object or null if it does not exist. + */ + public function getColumnByPhpName($phpName) + { + return @$this->columnsByPhpName[$phpName]; + } + + /** + * Get all the foreign keys from this table to the specufued tabke. + * @return array ForeignKey[] + */ + public function getForeignKeysReferencingTable($tablename) + { + $matches = array(); + $keys = $this->getForeignKeys(); + foreach ($keys as $fk) { + if ($fk->getForeignTableName() === $tablename) { + $matches[] = $fk; + } + } + return $matches; + } + + /** + * Return the foreign keys that includes col in it's list of local columns. + * Eg. Foreign key (a,b,c) refrences tbl(x,y,z) will be returned of col is either a,b or c. + * @param string $col + * @return array ForeignKey[] or null if there is no FK for specified column. + */ + public function getColumnForeignKeys($colname) + { + $matches = array(); + foreach ($this->foreignKeys as $fk) { + if (in_array($colname, $fk->getLocalColumns())) { + $matches[] = $fk; + } + } + return $matches; + } + + /** + * Returns true if the table contains a specified column + * @param mixed $col Column or column name. + */ + public function containsColumn($col) + { + if ($col instanceof Column) { + return in_array($col, $this->columnList); + } else { + return ($this->getColumn($col) !== null); + } + } + + /** + * Set the database that contains this table. + * + * @param Database $db + */ + public function setDatabase(Database $db) + { + $this->database = $db; + } + + /** + * Get the database that contains this table. + * + * @return Database + */ + public function getDatabase() + { + return $this->database; + } + + /** + * Flag to determine if code/sql gets created for this table. + * Table will be skipped, if return true. + * @return boolean + */ + public function isForReferenceOnly() + { + return $this->forReferenceOnly; + } + + /** + * Flag to determine if code/sql gets created for this table. + * Table will be skipped, if set to true. + * @param boolean $v + */ + public function setForReferenceOnly($v) + { + $this->forReferenceOnly = (boolean) $v; + } + + /** + * Flag to determine if tree node class should be generated for this table. + * @return valur of treeMode + */ + public function treeMode() + { + return $this->treeMode; + } + + /** + * Flag to determine if tree node class should be generated for this table. + * @param v Value to assign to treeMode. + */ + public function setTreeMode($v) + { + $this->treeMode = $v; + } + + /** + * Appends XML nodes to passed-in DOMNode. + * + * @param DOMNode $node + */ + public function appendXml(DOMNode $node) + { + $doc = ($node instanceof DOMDocument) ? $node : $node->ownerDocument; + + $tableNode = $node->appendChild($doc->createElement('table')); + $tableNode->setAttribute('name', $this->getName()); + + if ($this->phpName !== null) { + $tableNode->setAttribute('phpName', $this->phpName); + } + + if ($this->idMethod !== null) { + $tableNode->setAttribute('idMethod', $this->idMethod); + } + + if ($this->skipSql !== null) { + $tableNode->setAttribute('idMethod', var_export($this->skipSql, true)); + } + + if ($this->readOnly !== null) { + $tableNode->setAttribute('readOnly', var_export($this->readOnly, true)); + } + + if ($this->treeMode !== null) { + $tableNode->setAttribute('treeMode', $this->treeMode); + } + + if ($this->reloadOnInsert !== null) { + $tableNode->setAttribute('reloadOnInsert', var_export($this->reloadOnInsert, true)); + } + + if ($this->reloadOnUpdate !== null) { + $tableNode->setAttribute('reloadOnUpdate', var_export($this->reloadOnUpdate, true)); + } + + if ($this->forReferenceOnly !== null) { + $tableNode->setAttribute('forReferenceOnly', var_export($this->forReferenceOnly, true)); + } + + if ($this->abstractValue !== null) { + $tableNode->setAttribute('abstract', var_export($this->abstractValue, true)); + } + + if ($this->enterface !== null) { + $tableNode->setAttribute('interface', $this->enterface); + } + + if ($this->description !== null) { + $tableNode->setAttribute('description', $this->description); + } + + if ($this->baseClass !== null) { + $tableNode->setAttribute('baseClass', $this->baseClass); + } + + if ($this->basePeer !== null) { + $tableNode->setAttribute('basePeer', $this->basePeer); + } + + foreach ($this->columnList as $col) { + $col->appendXml($tableNode); + } + + foreach ($this->validatorList as $validator) { + $validator->appendXml($tableNode); + } + + foreach ($this->foreignKeys as $fk) { + $fk->appendXml($tableNode); + } + + foreach ($this->idMethodParameters as $param) { + $param->appendXml($tableNode); + } + + foreach ($this->indices as $index) { + $index->appendXml($tableNode); + } + + foreach ($this->unices as $unique) { + $unique->appendXml($tableNode); + } + + foreach ($this->vendorInfos as $vi) { + $vi->appendXml($tableNode); + } + + } + + /** + * Returns the collection of Columns which make up the single primary + * key for this table. + * + * @return array Column[] A list of the primary key parts. + */ + public function getPrimaryKey() + { + $pk = array(); + foreach ($this->columnList as $col) { + if ($col->isPrimaryKey()) { + $pk[] = $col; + } + } + return $pk; + } + + /** + * Determine whether this table has a primary key. + * + * @return boolean Whether this table has any primary key parts. + */ + public function hasPrimaryKey() + { + return (count($this->getPrimaryKey()) > 0); + } + + /** + * Determine whether this table has any auto-increment primary key(s). + * + * @return boolean Whether this table has a non-"none" id method and has a primary key column that is auto-increment. + */ + public function hasAutoIncrementPrimaryKey() + { + if ($this->getIdMethod() != IDMethod::NO_ID_METHOD) { + $pks =$this->getPrimaryKey(); + foreach ($pks as $pk) { + if ($pk->isAutoIncrement()) { + return true; + } + } + } + return false; + } + + /** + * Gets the auto increment PK + * + * @return Column if any auto increment PK column + */ + public function getAutoIncrementPrimaryKey() + { + if ($this->getIdMethod() != IDMethod::NO_ID_METHOD) { + $pks =$this->getPrimaryKey(); + foreach ($pks as $pk) { + if ($pk->isAutoIncrement()) { + return $pk; + } + } + } + return null; + } + + /** + * Returns all parts of the primary key, separated by commas. + * + * @return A CSV list of primary key parts. + * @deprecated Use the DDLBuilder->getColumnList() with the #getPrimaryKey() method. + */ + public function printPrimaryKey() + { + return $this->printList($this->columnList); + } + + /** + * Returns the elements of the list, separated by commas. + * @param array $list + * @return A CSV list. + * @deprecated Use the DDLBuilder->getColumnList() with the #getPrimaryKey() method. + */ + private function printList($list){ + $result = ""; + $comma = 0; + for ($i=0,$_i=count($list); $i < $_i; $i++) { + $col = $list[$i]; + if ($col->isPrimaryKey()) { + $result .= ($comma++ ? ',' : '') . $this->getDatabase()->getPlatform()->quoteIdentifier($col->getName()); + } + } + return $result; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/Unique.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/Unique.php.svn-base new file mode 100644 index 0000000..3f454b8 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/Unique.php.svn-base @@ -0,0 +1,68 @@ +. + */ + +include_once 'propel/engine/database/model/Index.php'; + +/** + * Information about unique columns of a table. This class assumes + * that in the underlying RDBMS, unique constraints and unique indices + * are roughly equivalent. For example, adding a unique constraint to + * a column also creates an index on that column (this is known to be + * true for MySQL and Oracle). + * + * @author Hans Lellelid (Propel) + * @author Jason van Zyl (Torque) + * @author Daniel Rall (Torque) + * @version $Revision$ + * @package propel.engine.database.model + */ +class Unique extends Index { + + /** + * Returns true. + */ + public function isUnique() + { + return true; + } + + /** + * @see XMLElement::appendXml(DOMNode) + */ + public function appendXml(DOMNode $node) + { + $doc = ($node instanceof DOMDocument) ? $node : $node->ownerDocument; + + $uniqueNode = $node->appendChild($doc->createElement('unique')); + $uniqueNode->setAttribute('name', $this->getName()); + $columns = $this->getColumns(); + foreach ($this->getColumns() as $colname) { + $uniqueColNode = $uniqueNode->appendChild($doc->createElement('unique-column')); + $uniqueColNode->setAttribute('name', $colname); + } + + foreach ($this->vendorInfos as $vi) { + $vi->appendXml($uniqueNode); + } + } + + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/Validator.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/Validator.php.svn-base new file mode 100644 index 0000000..50130e9 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/Validator.php.svn-base @@ -0,0 +1,194 @@ +. + */ + +require_once 'propel/engine/database/model/XMLElement.php'; +include_once 'propel/engine/EngineException.php'; +include_once 'propel/engine/database/model/PropelTypes.php'; +include_once 'propel/engine/database/model/Rule.php'; + +/** + * Validator. + * + * @author Michael Aichler (Propel) + * @version $Revision$ + * @package propel.engine.database.model + */ +class Validator extends XMLElement { + + const TRANSLATE_NONE = "none"; + const TRANSLATE_GETTEXT = "gettext"; + + /** + * The column this validator applies to. + * + * @var Column + */ + private $column; + + /** + * The rules for the validation. + * + * @var array Rule[] + */ + private $ruleList = array(); + + /** + * The translation mode. + * + * @var string + */ + private $translate; + + /** + * Parent table. + * + * @var Table + */ + private $table; + + /** + * Sets up the Validator object based on the attributes that were passed to loadFromXML(). + * @see parent::loadFromXML() + */ + protected function setupObject() + { + $this->column = $this->getTable()->getColumn($this->getAttribute("column")); + $this->translate = $this->getAttribute("translate", $this->getTable()->getDatabase()->getDefaultTranslateMethod());; + } + + /** + * Add a Rule to this validator. + * Supports two signatures: + * - addRule(Rule $rule) + * - addRule(array $attribs) + * @param mixed $data Rule object or XML attribs (array) from element. + * @return Rule The added Rule. + */ + public function addRule($data) + { + if ($data instanceof Rule) { + $rule = $data; // alias + $rule->setValidator($this); + $this->ruleList[] = $rule; + return $rule; + } + else { + $rule = new Rule(); + $rule->setValidator($this); + $rule->loadFromXML($data); + return $this->addRule($rule); // call self w/ different param + } + } + + /** + * Gets an array of all added rules for this validator. + * @return array Rule[] + */ + public function getRules() + { + return $this->ruleList; + } + + /** + * Gets the name of the column that this Validator applies to. + * @return string + */ + public function getColumnName() + { + return $this->column->getName(); + } + + /** + * Sets the Column object that this validator applies to. + * @param Column $column + * @see Table::addValidator() + */ + public function setColumn(Column $column) + { + $this->column = $column; + } + + /** + * Gets the Column object that this validator applies to. + * @return Column + */ + public function getColumn() + { + return $this->column; + } + + /** + * Set the owning Table. + * @param Table $table + */ + public function setTable(Table $table) + { + $this->table = $table; + } + + /** + * Get the owning Table. + * @return Table + */ + public function getTable() + { + return $this->table; + } + + /** + * Set the translation mode to use for the message. + * Currently only "gettext" and "none" are supported. The default is "none". + * @param string $method Translation method ("gettext", "none"). + */ + public function setTranslate($method) + { + $this->translate = $method; + } + + /** + * Get the translation mode to use for the message. + * Currently only "gettext" and "none" are supported. The default is "none". + * @return string Translation method ("gettext", "none"). + */ + public function getTranslate() + { + return $this->translate; + } + + /** + * @see XMLElement::appendXml(DOMNode) + */ + public function appendXml(DOMNode $node) + { + $doc = ($node instanceof DOMDocument) ? $node : $node->ownerDocument; + + $valNode = $node->appendChild($doc->createElement('validator')); + $valNode->setAttribute('column', $this->getColumnName()); + + if ($this->translate !== null) { + $valNode->setAttribute('translate', $this->translate); + } + + foreach ($this->ruleList as $rule) { + $rule->appendXml($valNode); + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/VendorInfo.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/VendorInfo.php.svn-base new file mode 100644 index 0000000..8fca12d --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/VendorInfo.php.svn-base @@ -0,0 +1,182 @@ +. + */ + +require_once 'propel/engine/database/model/XMLElement.php'; +include_once 'propel/engine/EngineException.php'; + +/** + * Object to hold vendor-specific info. + * + * @author Hans Lellelid + * @version $Revision$ + * @package propel.engine.database.model + */ +class VendorInfo extends XMLElement { + + /** + * The vendor RDBMS type. + * + * @var string + */ + private $type; + + /** + * Vendor parameters. + * + * @var array + */ + private $parameters = array(); + + /** + * Creates a new VendorInfo instance. + * + * @param string $type RDBMS type (optional) + */ + public function __construct($type = null) + { + $this->type = $type; + } + + /** + * Sets up this object based on the attributes that were passed to loadFromXML(). + * @see parent::loadFromXML() + */ + protected function setupObject() + { + $this->type = $this->getAttribute("type"); + } + + /** + * Set RDBMS type for this vendor-specific info. + * + * @param string $v + */ + public function setType($v) + { + $this->type = $v; + } + + /** + * Get RDBMS type for this vendor-specific info. + * + * @return string + */ + public function getType() + { + return $this->type; + } + + /** + * Adds a new vendor parameter to this object. + * @param array $attrib Attributes from XML. + */ + public function addParameter($attrib) + { + $name = $attrib["name"]; + $this->parameters[$name] = $attrib["value"]; + } + + /** + * Sets parameter value. + * + * @param string $name + * @param mixed $value The value for the parameter. + */ + public function setParameter($name, $value) + { + $this->parameters[$name] = $value; + } + + /** + * Gets parameter value. + * + * @param string $name + * @return mixed Paramter value. + */ + public function getParameter($name) + { + if (isset($this->parameters[$name])) { + return $this->parameters[$name]; + } + return null; // just to be explicit + } + + /** + * Whether parameter exists. + * + * @param string $name + */ + public function hasParameter($name) + { + return isset($this->parameters[$name]); + } + + /** + * Sets assoc array of parameters for venfor specific info. + * + * @param array $params Paramter data. + */ + public function setParameters(array $params = array()) + { + $this->parameters = $params; + } + + /** + * Gets assoc array of parameters for venfor specific info. + * + * @return array + */ + public function getParameters() + { + return $this->parameters; + } + + /** + * Gets a new merged VendorInfo object. + * @param VendorInfo $info + * @return VendorInfo new object with merged parameters + */ + public function getMergedVendorInfo(VendorInfo $merge) + { + $newParams = array_merge($this->getParameters(), $merge->getParameters()); + $newInfo = new VendorInfo($this->getType()); + $newInfo->setParameters($newParams); + return $newInfo; + } + + /** + * @see XMLElement::appendXml(DOMNode) + */ + public function appendXml(DOMNode $node) + { + $doc = ($node instanceof DOMDocument) ? $node : $node->ownerDocument; + + $vendorNode = $node->appendChild($doc->createElement("vendor")); + $vendorNode->setAttribute("type", $this->getType()); + + foreach ($this->parameters as $key => $value) { + $parameterNode = $doc->createElement("parameter"); + $parameterNode->setAttribute("name", $key); + $parameterNode->setAttribute("value", $value); + $vendorNode->appendChild($parameterNode); + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/XMLElement.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/XMLElement.php.svn-base new file mode 100644 index 0000000..0bf7299 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/.svn/text-base/XMLElement.php.svn-base @@ -0,0 +1,192 @@ +. + */ + +include_once 'propel/engine/database/model/VendorInfo.php'; + +/** + * An abstract class for elements represented by XML tags (e.g. Column, Table). + * + * @author Hans Lellelid + * @version $Revision$ + * @package propel.engine.database.model + */ +abstract class XMLElement { + + /** + * The name => value attributes from XML. + * + * @var array + */ + protected $attributes = array(); + + /** + * Any associated vendor-specific information objects. + * + * @var array VendorInfo[] + */ + protected $vendorInfos = array(); + + /** + * Replaces the old loadFromXML() so that we can use loadFromXML() to load the attribs into the class. + */ + abstract protected function setupObject(); + + /** + * This is the entry point method for loading data from XML. + * It calls a setupObject() method that must be implemented by the child class. + * @param array $attributes The attributes for the XML tag. + */ + public function loadFromXML($attributes) + { + $this->attributes = array_change_key_case($attributes, CASE_LOWER); + $this->setupObject(); + } + + /** + * Returns the assoc array of attributes. + * All attribute names (keys) are lowercase. + * @return array + */ + public function getAttributes() + { + return $this->attributes; + } + + /** + * Gets a particular attribute by [case-insensitive] name. + * If attribute is not set then the $defaultValue is returned. + * @param string $name The [case-insensitive] name of the attribute to lookup. + * @param mixed $defaultValue The default value to use in case the attribute is not set. + * @return mixed The value of the attribute or $defaultValue if not set. + */ + public function getAttribute($name, $defaultValue = null) + { + $name = strtolower($name); + if (isset($this->attributes[$name])) { + return $this->attributes[$name]; + } else { + return $defaultValue; + } + } + + /** + * Converts value specified in XML to a boolean value. + * This is to support the default value when used w/ a boolean column. + * @return value + */ + protected function booleanValue($val) + { + if (is_numeric($val)) { + return (bool) $val; + } else { + return (in_array(strtolower($val), array('true', 't', 'y', 'yes'), true) ? true : false); + } + } + + /** + * Appends DOM elements to represent this object in XML. + * @param DOMNode $node + */ + abstract public function appendXml(DOMNode $node); + + /** + * Sets an associated VendorInfo object. + * + * @param mixed $data VendorInfo object or XML attrib data (array) + * @return VendorInfo + */ + public function addVendorInfo($data) + { + if ($data instanceof VendorInfo) { + $vi = $data; + $this->vendorInfos[$vi->getType()] = $vi; + return $vi; + } else { + $vi = new VendorInfo(); + $vi->loadFromXML($data); + return $this->addVendorInfo($vi); // call self w/ different param + } + } + + /** + * Gets the any associated VendorInfo object. + * @return VendorInfo + */ + public function getVendorInfoForType($type) + { + if (isset($this->vendorInfos[$type])) { + return $this->vendorInfos[$type]; + } else { + // return an empty object + return new VendorInfo(); + } + } + + /** + * Find the best class name for a given behavior + * Looks in build.properties for path like propel.behavior.[bname].class + * If not found, tries to autoload [Bname]Behavior + * If no success, returns 'Behavior' + * + * @param string $bname behavior name, e.g. 'timestampable' + * @return string behavior class name, e.g. 'TimestampableBehavior' + */ + public function getConfiguredBehavior($bname) + { + if ($config = $this->getGeneratorConfig()) { + if ($class = $config->getConfiguredBehavior($bname)) { + return $class; + } + } + // first fallback: maybe the behavior is loaded or autoloaded + $gen = new PhpNameGenerator(); + if(class_exists($class = $gen->generateName($bname, PhpNameGenerator::CONV_METHOD_PHPNAME) . 'Behavior')) { + return $class; + } + // second fallback: use parent behavior class (mostly for unit tests) + return 'Behavior'; + } + + /** + * String representation of the current object. + * + * This is an xml representation with the XML declaration removed. + * + * @see appendXml() + */ + public function toString() + { + $doc = new DOMDocument('1.0'); + $doc->formatOutput = true; + $this->appendXml($doc); + $xmlstr = $doc->saveXML(); + return trim(preg_replace('/<\?xml.*?\?>/', '', $xmlstr)); + } + + /** + * Magic string method + * @see toString() + */ + public function __toString() + { + return $this->toString(); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/AppData.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/AppData.php new file mode 100644 index 0000000..9ebedb4 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/AppData.php @@ -0,0 +1,216 @@ +. + */ + +include_once 'propel/engine/EngineException.php'; +include_once 'propel/engine/database/model/Database.php'; + +/** + * A class for holding application data structures. + * + * @author Hans Lellelid (Propel) + * @author Leon Messerschmidt (Torque) + * @author John McNally (Torque) + * @author Daniel Rall (Torque) + * @version $Revision: 1262 $ + * @package propel.engine.database.model + */ +class AppData { + + /** + * The list of databases for this application. + * @var array Database[] + */ + private $dbList = array(); + + /** + * The platform class for our database(s). + * @var string + */ + private $platform; + + /** + * Name of the database. Only one database definition + * is allowed in one XML descriptor. + */ + private $name; + + /** + * Flag to ensure that initialization is performed only once. + * @var boolean + */ + private $isInitialized = false; + + /** + * Creates a new instance for the specified database type. + * + * @param Platform $platform The platform object to use for any databases added to this application model. + */ + public function __construct(Platform $platform) + { + $this->platform = $platform; + } + + /** + * Gets the platform object to use for any databases added to this application model. + * + * @return Platform + */ + public function getPlatform() + { + return $this->platform; + } + + /** + * Set the name of the database. + * + * @param name of the database. + */ + public function setName($name) + { + $this->name = $name; + } + + /** + * Get the name of the database. + * + * @return String name + */ + public function getName() + { + return $this->name; + } + + /** + * Get the short name of the database (without the '-schema' postfix). + * + * @return String name + */ + public function getShortName() + { + return str_replace("-schema", "", $this->name); + } + + /** + * Return an array of all databases + * + * @return Array of Database objects + */ + public function getDatabases($doFinalInit = true) + { + // this is temporary until we'll have a clean solution + // for packaging datamodels/requiring schemas + if ($doFinalInit) { + $this->doFinalInitialization(); + } + return $this->dbList; + } + + /** + * Returns whether this application has multiple databases. + * + * @return boolean True if the application has multiple databases + */ + public function hasMultipleDatabases() + { + return (count($this->dbList) > 1); + } + + /** + * Return the database with the specified name. + * + * @param name database name + * @return A Database object. If it does not exist it returns null + */ + public function getDatabase($name = null, $doFinalInit = true) + { + // this is temporary until we'll have a clean solution + // for packaging datamodels/requiring schemas + if ($doFinalInit) { + $this->doFinalInitialization(); + } + + if ($name === null) { + return $this->dbList[0]; + } + + for ($i=0,$size=count($this->dbList); $i < $size; $i++) { + $db = $this->dbList[$i]; + if ($db->getName() === $name) { + return $db; + } + } + return null; + } + + /** + * Add a database to the list and sets the AppData property to this + * AppData + * + * @param db the database to add + */ + public function addDatabase($db) + { + if ($db instanceof Database) { + $db->setAppData($this); + if ($db->getPlatform() === null) { + $db->setPlatform($this->platform); + } + $this->dbList[] = $db; + return $db; + } else { + // XML attributes array / hash + $d = new Database(); + $d->loadFromXML($db); + return $this->addDatabase($d); // calls self w/ different param type + } + + } + + /** + * + * @return void + */ + private function doFinalInitialization() + { + if (!$this->isInitialized) { + for ($i=0, $size=count($this->dbList); $i < $size; $i++) { + $this->dbList[$i]->doFinalInitialization(); + } + $this->isInitialized = true; + } + } + + /** + * Creats a string representation of this AppData. + * The representation is given in xml format. + * + * @return string Representation in xml format + */ + public function toString() + { + $result = "\n"; + for ($i=0,$size=count($this->dbList); $i < $size; $i++) { + $result .= $this->dbList[$i]->toString(); + } + $result .= ""; + return $result; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Behavior.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Behavior.php new file mode 100644 index 0000000..efbeef2 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Behavior.php @@ -0,0 +1,184 @@ +. + */ + +include_once 'propel/engine/database/model/Index.php'; + +/** + * Information about behaviors of a table. + * + * @author François Zaninotto + * @version $Revision: 989 $ + * @package propel.engine.database.model + */ +class Behavior extends XMLElement { + + protected $table; + protected $database; + protected $name; + protected $parameters = array(); + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setTable(Table $table) + { + $this->table = $table; + } + + public function getTable() + { + return $this->table; + } + + public function setDatabase(Database $database) + { + $this->database = $database; + } + + public function getDatabase() + { + return $this->database; + } + + /** + * Add a parameter + * Expects an associative array looking like array('name' => 'foo', 'value' => bar) + * + * @param array associative array with name and value keys + */ + public function addParameter($attribute) + { + $attribute = array_change_key_case($attribute, CASE_LOWER); + $this->parameters[$attribute['name']] = $attribute['value']; + } + + /** + * Overrides the behavior parameters + * Expects an associative array looking like array('foo' => 'bar') + * + * @param array associative array + */ + public function setParameters($parameters) + { + $this->parameters = $parameters; + } + + /** + * Get the associative array of parameters + * @return array + */ + public function getParameters() + { + return $this->parameters; + } + + public function getParameter($name) + { + return $this->parameters[$name]; + } + + /** + * This method is automatically called on database behaviors when the database model is finished + * Propagate the behavior to the tables of the database + * Override this method to have a database behavior do something special + */ + public function modifyDatabase() + { + foreach ($this->getDatabase()->getTables() as $table) + { + $b = clone $this; + $table->addBehavior($b); + } + } + + /** + * This method is automatically called on table behaviors when the database model is finished + * Override it to add columns to the current table + */ + public function modifyTable() + { + } + + /** + * Retrieve a column object using a name stored in the behavior parameters + * Useful for table behaviors + * + * @param string $param Name of the parameter storing the column name + * @return ColumnMap The column of the table supporting the behavior + */ + public function getColumnForParameter($param) + { + return $this->getTable()->getColumn($this->getParameter($param)); + } + + /** + * Sets up the Behavior object based on the attributes that were passed to loadFromXML(). + * @see parent::loadFromXML() + */ + protected function setupObject() + { + $this->name = $this->getAttribute("name"); + } + + /** + * @see parent::appendXml(DOMNode) + */ + public function appendXml(DOMNode $node) + { + $doc = ($node instanceof DOMDocument) ? $node : $node->ownerDocument; + + $bNode = $node->appendChild($doc->createElement('behavior')); + $bNode->setAttribute('name', $this->getName()); + + foreach ($this->parameters as $name => $value) { + $parameterNode = $bNode->appendChild($doc->createElement('parameter')); + $parameterNode->setAttribute('name', $name); + $parameterNode->setAttribute('value', $value); + } + } + + public function getTableModifier() + { + return $this; + } + + public function getObjectBuilderModifier() + { + return $this; + } + + public function getPeerBuilderModifier() + { + return $this; + } + + public function getTableMapBuilderModifier() + { + return $this; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Column.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Column.php new file mode 100644 index 0000000..2ca8b1c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Column.php @@ -0,0 +1,1184 @@ +. + */ + +require_once 'propel/engine/database/model/XMLElement.php'; +include_once 'propel/engine/EngineException.php'; +include_once 'propel/engine/database/model/PropelTypes.php'; +include_once 'propel/engine/database/model/Inheritance.php'; +include_once 'propel/engine/database/model/Domain.php'; +include_once 'propel/engine/database/model/ColumnDefaultValue.php'; + +/** + * A Class for holding data about a column used in an Application. + * + * @author Hans Lellelid (Propel) + * @author Leon Messerschmidt (Torque) + * @author Jason van Zyl (Torque) + * @author Jon S. Stevens (Torque) + * @author Daniel Rall (Torque) + * @author Byron Foster (Torque) + * @author Bernd Goldschmidt + * @version $Revision: 1594 $ + * @package propel.engine.database.model + */ +class Column extends XMLElement { + + const DEFAULT_TYPE = "VARCHAR"; + const DEFAULT_VISIBILITY = 'public'; + public static $valid_visibilities = array('public', 'protected', 'private'); + + private $name; + private $description; + private $phpName = null; + private $phpNamingMethod; + private $isNotNull = false; + private $size; + private $namePrefix; + private $accessorVisibility; + private $mutatorVisibility; + + /** + * The name to use for the Peer constant that identifies this column. + * (Will be converted to all-uppercase in the templates.) + * @var string + */ + private $peerName; + + /** + * Native PHP type (scalar or class name) + * @var string "string", "boolean", "int", "double" + */ + private $phpType; + + /** + * @var Table + */ + private $parentTable; + + private $position; + private $isPrimaryKey = false; + private $isNodeKey = false; + private $nodeKeySep; + private $isNestedSetLeftKey = false; + private $isNestedSetRightKey = false; + private $isTreeScopeKey = false; + private $isUnique = false; + private $isAutoIncrement = false; + private $isLazyLoad = false; + private $defaultValue; + private $referrers; + private $isPrimaryString = false; + + // only one type is supported currently, which assumes the + // column either contains the classnames or a key to + // classnames specified in the schema. Others may be + // supported later. + private $inheritanceType; + private $isInheritance; + private $isEnumeratedClasses; + private $inheritanceList; + private $needsTransactionInPostgres; //maybe this can be retrieved from vendorSpecificInfo + + /** class name to do input validation on this column */ + private $inputValidator = null; + + /** + * @var Domain The domain object associated with this Column. + */ + private $domain; + + /** + * Creates a new column and set the name + * + * @param name column name + */ + public function __construct($name = null) + { + $this->name = $name; + } + + /** + * Return a comma delimited string listing the specified columns. + * + * @param columns Either a list of Column objects, or + * a list of String objects with column names. + * @deprecated Use the DDLBuilder->getColumnList() method instead; this will be removed in 1.3 + */ + public static function makeList($columns, Platform $platform) + { + $list = array(); + foreach ($columns as $col) { + if ($col instanceof Column) { + $col = $col->getName(); + } + $list[] = $platform->quoteIdentifier($col); + } + return implode(", ", $list); + } + + /** + * Sets up the Column object based on the attributes that were passed to loadFromXML(). + * @see parent::loadFromXML() + */ + protected function setupObject() + { + try { + $dom = $this->getAttribute("domain"); + if ($dom) { + $this->getDomain()->copy($this->getTable()->getDatabase()->getDomain($dom)); + } else { + $type = strtoupper($this->getAttribute("type")); + if ($type) { + $this->getDomain()->copy($this->getPlatform()->getDomainForType($type)); + } else { + $this->getDomain()->copy($this->getPlatform()->getDomainForType(self::DEFAULT_TYPE)); + } + } + + $this->name = $this->getAttribute("name"); + $this->phpName = $this->getAttribute("phpName"); + $this->phpType = $this->getAttribute("phpType"); + + if ($this->getAttribute("prefix", null) !== null) { + $this->namePrefix = $this->getAttribute("prefix"); + } elseif ($this->getTable()->getAttribute('columnPrefix', null) !== null) { + $this->namePrefix = $this->getTable()->getAttribute('columnPrefix'); + } else { + $this->namePrefix = ''; + } + + // Accessor visibility + if ($this->getAttribute('accessorVisibility', null) !== null) { + $this->setAccessorVisibility($this->getAttribute('accessorVisibility')); + } elseif ($this->getTable()->getAttribute('defaultAccessorVisibility', null) !== null) { + $this->setAccessorVisibility($this->getTable()->getAttribute('defaultAccessorVisibility')); + } elseif ($this->getTable()->getDatabase()->getAttribute('defaultAccessorVisibility', null) !== null) { + $this->setAccessorVisibility($this->getTable()->getDatabase()->getAttribute('defaultAccessorVisibility')); + } else { + $this->setAccessorVisibility(self::DEFAULT_VISIBILITY); + } + + // Mutator visibility + if ($this->getAttribute('mutatorVisibility', null) !== null) { + $this->setMutatorVisibility($this->getAttribute('mutatorVisibility')); + } elseif ($this->getTable()->getAttribute('defaultMutatorVisibility', null) !== null) { + $this->setMutatorVisibility($this->getTable()->getAttribute('defaultMutatorVisibility')); + } elseif ($this->getTable()->getDatabase()->getAttribute('defaultMutatorVisibility', null) !== null) { + $this->setMutatorVisibility($this->getTable()->getDatabase()->getAttribute('defaultMutatorVisibility')); + } else { + $this->setMutatorVisibility(self::DEFAULT_VISIBILITY); + } + + $this->peerName = $this->getAttribute("peerName"); + + // retrieves the method for converting from specified name to a PHP name, defaulting to parent tables default method + $this->phpNamingMethod = $this->getAttribute("phpNamingMethod", $this->parentTable->getDatabase()->getDefaultPhpNamingMethod()); + + $this->isPrimaryString = $this->booleanValue($this->getAttribute("primaryString")); + + $this->isPrimaryKey = $this->booleanValue($this->getAttribute("primaryKey")); + + $this->isNodeKey = $this->booleanValue($this->getAttribute("nodeKey")); + $this->nodeKeySep = $this->getAttribute("nodeKeySep", "."); + + $this->isNestedSetLeftKey = $this->booleanValue($this->getAttribute("nestedSetLeftKey")); + $this->isNestedSetRightKey = $this->booleanValue($this->getAttribute("nestedSetRightKey")); + $this->isTreeScopeKey = $this->booleanValue($this->getAttribute("treeScopeKey")); + + $this->isNotNull = ($this->booleanValue($this->getAttribute("required"), false) || $this->isPrimaryKey); // primary keys are required + + //AutoIncrement/Sequences + $this->isAutoIncrement = $this->booleanValue($this->getAttribute("autoIncrement")); + $this->isLazyLoad = $this->booleanValue($this->getAttribute("lazyLoad")); + + // Add type, size information to associated Domain object + $this->getDomain()->replaceSqlType($this->getAttribute("sqlType")); + if (!$this->getAttribute("size") && $this->getDomain()->getType() == 'VARCHAR' && !$this->getAttribute("sqlType")) { + $size = 255; + } else { + $size = $this->getAttribute("size"); + } + $this->getDomain()->replaceSize($size); + $this->getDomain()->replaceScale($this->getAttribute("scale")); + + $defval = $this->getAttribute("defaultValue", $this->getAttribute("default")); + if ($defval !== null && strtolower($defval) !== 'null') { + $this->getDomain()->setDefaultValue(new ColumnDefaultValue($defval, ColumnDefaultValue::TYPE_VALUE)); + } elseif ($this->getAttribute("defaultExpr") !== null) { + $this->getDomain()->setDefaultValue(new ColumnDefaultValue($this->getAttribute("defaultExpr"), ColumnDefaultValue::TYPE_EXPR)); + } + + $this->inheritanceType = $this->getAttribute("inheritance"); + $this->isInheritance = ($this->inheritanceType !== null + && $this->inheritanceType !== "false"); // here we are only checking for 'false', so don't + // use boleanValue() + + $this->inputValidator = $this->getAttribute("inputValidator"); + $this->description = $this->getAttribute("description"); + } catch (Exception $e) { + throw new EngineException("Error setting up column " . var_export($this->getAttribute("name"), true) . ": " . $e->getMessage()); + } + } + + /** + * Gets domain for this column, creating a new empty domain object if none is set. + * @return Domain + */ + public function getDomain() + { + if ($this->domain === null) { + $this->domain = new Domain(); + } + return $this->domain; + } + + /** + * Returns table.column + */ + public function getFullyQualifiedName() + { + return ($this->parentTable->getName() . '.' . $this->getName()); + } + + /** + * Get the name of the column + */ + public function getName() + { + return $this->name; + } + + /** + * Set the name of the column + */ + public function setName($newName) + { + $this->name = $newName; + } + + /** + * Get the description for the Table + */ + public function getDescription() + { + return $this->description; + } + + /** + * Set the description for the Table + * + * @param newDescription description for the Table + */ + public function setDescription($newDescription) + { + $this->description = $newDescription; + } + + /** + * Get name to use in PHP sources. It will set & return + * a self-generated phpName from it's name if it's + * not already set. + * @return string + */ + public function getPhpName() + { + if ($this->phpName === null) { + $this->setPhpName(); + } + return $this->phpName; + } + + /** + * Set name to use in PHP sources. + * + * It will generate a phpName from it's name if no + * $phpName is passed. + * + * @param String $phpName PhpName to be set + */ + public function setPhpName($phpName = null) + { + if ($phpName == null) { + $this->phpName = self::generatePhpName($this->name, $this->phpNamingMethod, $this->namePrefix); + } else { + $this->phpName = $phpName; + } + } + + /** + * Get studly version of PHP name. + * + * The studly name is the PHP name with the first character lowercase. + * + * @return string + */ + public function getStudlyPhpName() + { + $phpname = $this->getPhpName(); + if (strlen($phpname) > 1) { + return strtolower(substr($phpname, 0, 1)) . substr($phpname, 1); + } else { // 0 or 1 chars (I suppose that's rare) + return strtolower($phpname); + } + } + + /** + * Get the visibility of the accessors of this column / attribute + * @return string + */ + public function getAccessorVisibility() { + if ($this->accessorVisibility !== null) { + return $this->accessorVisibility; + } else { + return self::DEFAULT_VISIBILITY; + } + } + + /** + * Set the visibility of the accessor methods for this column / attribute + * @param $newVisibility string + */ + public function setAccessorVisibility($newVisibility) { + if (in_array($newVisibility, self::$valid_visibilities)) { + $this->accessorVisibility = $newVisibility; + } else { + $this->accessorVisibility = self::DEFAULT_VISIBILITY; + } + + } + + /** + * Get the visibility of the mutator of this column / attribute + * @return string + */ + public function getMutatorVisibility() { + if ($this->mutatorVisibility !== null) { + return $this->mutatorVisibility; + } else { + return self::DEFAULT_VISIBILITY; + } + } + + /** + * Set the visibility of the mutator methods for this column / attribute + * @param $newVisibility string + */ + public function setMutatorVisibility($newVisibility) { + if (in_array($newVisibility, self::$valid_visibilities)) { + $this->mutatorVisibility = $newVisibility; + } else { + $this->mutatorVisibility = self::DEFAULT_VISIBILITY; + } + + } + + /** + * Get the column constant name (e.g. PeerName::COLUMN_NAME). + * + * @return string A column constant name for insertion into PHP code + */ + public function getConstantName() + { + $classname = $this->getTable()->getPhpName() . 'Peer'; + // was it overridden in schema.xml ? + if ($this->getPeerName()) { + $const = strtoupper($this->getPeerName()); + } else { + $const = strtoupper($this->getName()); + } + return $classname.'::'.$const; + } + + /** + * Get the Peer constant name that will identify this column. + * @return string + */ + public function getPeerName() { + return $this->peerName; + } + + /** + * Set the Peer constant name that will identify this column. + * @param $name string + */ + public function setPeerName($name) { + $this->peerName = $name; + } + + /** + * Get type to use in PHP sources. + * + * If no type has been specified, then uses results of getPhpNative(). + * + * @return string The type name. + * @see getPhpNative() + */ + public function getPhpType() + { + if ($this->phpType !== null) { + return $this->phpType; + } + return $this->getPhpNative(); + } + + /** + * Get the location of this column within the table (one-based). + * @return int value of position. + */ + public function getPosition() + { + return $this->position; + } + + /** + * Get the location of this column within the table (one-based). + * @param int $v Value to assign to position. + */ + public function setPosition($v) + { + $this->position = $v; + } + + /** + * Set the parent Table of the column + */ + public function setTable(Table $parent) + { + $this->parentTable = $parent; + } + + /** + * Get the parent Table of the column + */ + public function getTable() + { + return $this->parentTable; + } + + /** + * Returns the Name of the table the column is in + */ + public function getTableName() + { + return $this->parentTable->getName(); + } + + /** + * Adds a new inheritance definition to the inheritance list and set the + * parent column of the inheritance to the current column + * @param mixed $inhdata Inheritance or XML data. + */ + public function addInheritance($inhdata) + { + if ($inhdata instanceof Inheritance) { + $inh = $inhdata; + $inh->setColumn($this); + if ($this->inheritanceList === null) { + $this->inheritanceList = array(); + $this->isEnumeratedClasses = true; + } + $this->inheritanceList[] = $inh; + return $inh; + } else { + $inh = new Inheritance(); + $inh->loadFromXML($inhdata); + return $this->addInheritance($inh); + } + } + + /** + * Get the inheritance definitions. + */ + public function getChildren() + { + return $this->inheritanceList; + } + + /** + * Determine if this column is a normal property or specifies a + * the classes that are represented in the table containing this column. + */ + public function isInheritance() + { + return $this->isInheritance; + } + + /** + * Determine if possible classes have been enumerated in the xml file. + */ + public function isEnumeratedClasses() + { + return $this->isEnumeratedClasses; + } + + /** + * Return the isNotNull property of the column + */ + public function isNotNull() + { + return $this->isNotNull; + } + + /** + * Set the isNotNull property of the column + */ + public function setNotNull($status) + { + $this->isNotNull = (boolean) $status; + } + + /** + * Return NOT NULL String for this column + * + * @return "NOT NULL" if null values are not allowed or an empty string. + */ + public function getNotNullString() + { + return $this->getTable()->getDatabase()->getPlatform()->getNullString($this->isNotNull()); + } + + /** + * Set whether the column is the primary string, + * i.e. whether its value is the default string representation of the table + * @param boolean $v + */ + public function setPrimaryString($v) + { + $this->isPrimaryString = (boolean) $v; + } + + /** + * Return true if the column is the primary string, + * i.e. if its value is the default string representation of the table + */ + public function isPrimaryString() + { + return $this->isPrimaryString; + } + + /** + * Set whether the column is a primary key or not. + * @param boolean $v + */ + public function setPrimaryKey($v) + { + $this->isPrimaryKey = (boolean) $v; + } + + /** + * Return true if the column is a primary key + */ + public function isPrimaryKey() + { + return $this->isPrimaryKey; + } + + /** + * Set if the column is the node key of a tree + */ + public function setNodeKey($nk) + { + $this->isNodeKey = (boolean) $nk; + } + + /** + * Return true if the column is a node key of a tree + */ + public function isNodeKey() + { + return $this->isNodeKey; + } + + /** + * Set if the column is the node key of a tree + */ + public function setNodeKeySep($sep) + { + $this->nodeKeySep = (string) $sep; + } + + /** + * Return true if the column is a node key of a tree + */ + public function getNodeKeySep() + { + return $this->nodeKeySep; + } + + /** + * Set if the column is the nested set left key of a tree + */ + public function setNestedSetLeftKey($nslk) + { + $this->isNestedSetLeftKey = (boolean) $nslk; + } + + /** + * Return true if the column is a nested set key of a tree + */ + public function isNestedSetLeftKey() + { + return $this->isNestedSetLeftKey; + } + + /** + * Set if the column is the nested set right key of a tree + */ + public function setNestedSetRightKey($nsrk) + { + $this->isNestedSetRightKey = (boolean) $nsrk; + } + + /** + * Return true if the column is a nested set right key of a tree + */ + public function isNestedSetRightKey() + { + return $this->isNestedSetRightKey; + } + + /** + * Set if the column is the scope key of a tree + */ + public function setTreeScopeKey($tsk) + { + $this->isTreeScopeKey = (boolean) $tsk; + } + + /** + * Return true if the column is a scope key of a tree + * @return boolean + */ + public function isTreeScopeKey() + { + return $this->isTreeScopeKey; + } + + /** + * Set true if the column is UNIQUE + * @param boolean $u + */ + public function setUnique($u) + { + $this->isUnique = $u; + } + + /** + * Get the UNIQUE property. + * @return boolean + */ + public function isUnique() + { + return $this->isUnique; + } + + /** + * Return true if the column requires a transaction in Postgres + * @return boolean + */ + public function requiresTransactionInPostgres() + { + return $this->needsTransactionInPostgres; + } + + /** + * Utility method to determine if this column is a foreign key. + * @return boolean + */ + public function isForeignKey() + { + return (count($this->getForeignKeys()) > 0); + } + + /** + * Whether this column is a part of more than one foreign key. + * @return boolean + */ + public function hasMultipleFK() + { + return (count($this->getForeignKeys()) > 1); + } + + /** + * Get the foreign key objects for this column (if it is a foreign key or part of a foreign key) + * @return array + */ + public function getForeignKeys() + { + return $this->parentTable->getColumnForeignKeys($this->name); + } + + /** + * Adds the foreign key from another table that refers to this column. + */ + public function addReferrer(ForeignKey $fk) + { + if ($this->referrers === null) { + $this->referrers = array(); + } + $this->referrers[] = $fk; + } + + /** + * Get list of references to this column. + */ + public function getReferrers() + { + if ($this->referrers === null) { + $this->referrers = array(); + } + return $this->referrers; + } + + /** + * Sets the domain up for specified Propel type. + * + * Calling this method will implicitly overwrite any previously set type, + * size, scale (or other domain attributes). + * + * @param string $propelType + */ + public function setDomainForType($propelType) + { + $this->getDomain()->copy($this->getPlatform()->getDomainForType($propelType)); + } + + /** + * Sets the propel colunm type. + * @param string $propelType + * @see Domain::setType() + */ + public function setType($propelType) + { + $this->getDomain()->setType($propelType); + if ($propelType == PropelTypes::VARBINARY|| $propelType == PropelTypes::LONGVARBINARY || $propelType == PropelTypes::BLOB) { + $this->needsTransactionInPostgres = true; + } + } + + /** + * Returns the Propel column type as a string. + * @return string The constant representing Creole type: e.g. "VARCHAR". + * @see Domain::getType() + */ + public function getType() + { + return $this->getDomain()->getType(); + } + + /** + * Returns the column PDO type integer for this column's Propel type. + * @return int The integer value representing PDO type param: e.g. PDO::PARAM_INT + */ + public function getPDOType() + { + return PropelTypes::getPDOType($this->getType()); + } + + /** + * Returns the column type as given in the schema as an object + */ + public function getPropelType() + { + return $this->getType(); + } + + /** + * Utility method to know whether column needs Blob/Lob handling. + * @return boolean + */ + public function isLobType() + { + return PropelTypes::isLobType($this->getType()); + } + + /** + * Utility method to see if the column is text type. + */ + public function isTextType() + { + return PropelTypes::isTextType($this->getType()); + } + + /** + * Utility method to see if the column is numeric type. + * @return boolean + */ + public function isNumericType() + { + return PropelTypes::isNumericType($this->getType()); + } + + /** + * Utility method to know whether column is a temporal column. + * @return boolean + */ + public function isTemporalType() + { + return PropelTypes::isTemporalType($this->getType()); + } + + /** + * @see XMLElement::appendXml(DOMNode) + */ + public function appendXml(DOMNode $node) + { + $doc = ($node instanceof DOMDocument) ? $node : $node->ownerDocument; + + $colNode = $node->appendChild($doc->createElement('column')); + $colNode->setAttribute('name', $this->name); + + if ($this->phpName !== null) { + $colNode->setAttribute('phpName', $this->getPhpName()); + } + + $colNode->setAttribute('type', $this->getType()); + + $domain = $this->getDomain(); + + if ($domain->getSize() !== null) { + $colNode->setAttribute('size', $domain->getSize()); + } + + if ($domain->getScale() !== null) { + $colNode->setAttribute('scale', $domain->getScale()); + } + + if ($this->isPrimaryKey) { + $colNode->setAttribute('primaryKey', var_export($this->isPrimaryKey, true)); + } + + if ($this->isAutoIncrement) { + $colNode->setAttribute('autoIncrement', var_export($this->isAutoIncrement, true)); + } + + if ($this->isNotNull) { + $colNode->setAttribute('required', 'true'); + } else { + $colNode->setAttribute('required', 'false'); + } + + if ($domain->getDefaultValue() !== null) { + $def = $domain->getDefaultValue(); + if ($def->isExpression()) { + $colNode->setAttribute('defaultExpr', $def->getValue()); + } else { + $colNode->setAttribute('defaultValue', $def->getValue()); + } + } + + if ($this->isInheritance()) { + $colNode->setAttribute('inheritance', $this->inheritanceType); + foreach ($this->inheritanceList as $inheritance) { + $inheritance->appendXml($colNode); + } + } + + if ($this->isNodeKey()) { + $colNode->setAttribute('nodeKey', 'true'); + if ($this->getNodeKeySep() !== null) { + $colNode->setAttribute('nodeKeySep', $this->nodeKeySep); + } + } + + foreach ($this->vendorInfos as $vi) { + $vi->appendXml($colNode); + } + } + + /** + * Returns the size of the column + * @return string + */ + public function getSize() + { + return $this->domain->getSize(); + } + + /** + * Set the size of the column + * @param string $newSize + */ + public function setSize($newSize) + { + $this->domain->setSize($newSize); + } + + /** + * Returns the scale of the column + * @return string + */ + public function getScale() + { + return $this->domain->getScale(); + } + + /** + * Set the scale of the column + * @param string $newScale + */ + public function setScale($newScale) + { + $this->domain->setScale($newScale); + } + + /** + * Return the size in brackets for use in an sql + * schema if the type is String. Otherwise return an empty string + */ + public function printSize() + { + return $this->domain->printSize(); + } + + /** + * Return a string that will give this column a default value. + * @return string + */ + public function getDefaultSetting() + { + $dflt = ""; + $defaultValue = $this->getDefaultValue(); + if ($defaultValue !== null) { + $dflt .= "default "; + + if ($this->getDefaultValue()->isExpression()) { + $dflt .= $this->getDefaultValue()->getValue(); + } else { + if ($this->isTextType()) { + $dflt .= $this->getPlatform()->quote($defaultValue->getValue()); + } elseif ($this->getType() == PropelTypes::BOOLEAN) { + $dflt .= $this->getPlatform()->getBooleanString($defaultValue->getValue()); + } else { + $dflt .= $defaultValue->getValue(); + } + } + } + return $dflt; + } + + /** + * Return a string that will give this column a default value in PHP + * @return string + */ + public function getDefaultValueString() + { + $defaultValue = $this->getDefaultValue(); + if ($defaultValue !== null) { + if ($this->isNumericType()) { + $dflt = (float) $defaultValue->getValue(); + } elseif ($this->isTextType() || $this->getDefaultValue()->isExpression()) { + $dflt = "'" . str_replace("'", "\'", $defaultValue->getValue()) . "'"; + } elseif ($this->getType() == PropelTypes::BOOLEAN) { + $dflt = $this->booleanValue($defaultValue->getValue()) ? 'true' : 'false'; + } else { + $dflt = "'" . $defaultValue->getValue() . "'"; + } + } else { + $dflt = "null"; + } + return $dflt; + } + + /** + * Set a string that will give this column a default value. + */ + public function setDefaultValue($def) + { + $this->domain->setDefaultValue($def); + } + + /** + * Get the default value object for this column. + * @return ColumnDefaultValue + * @see Domain::getDefaultValue() + */ + public function getDefaultValue() + { + return $this->domain->getDefaultValue(); + } + + /** + * Get the default value suitable for use in PHP. + * @return mixed + * @see Domain::getPhpDefaultValue() + */ + public function getPhpDefaultValue() + { + return $this->domain->getPhpDefaultValue(); + } + + /** + * Returns the class name to do input validation + */ + public function getInputValidator() + { + return $this->inputValidator; + } + + /** + * Return auto increment/sequence string for the target database. We need to + * pass in the props for the target database! + */ + public function isAutoIncrement() + { + return $this->isAutoIncrement; + } + + /** + * Return auto increment/sequence string for the target database. We need to + * pass in the props for the target database! + */ + public function isLazyLoad() + { + return $this->isLazyLoad; + } + + /** + * Gets the auto-increment string. + * @return string + */ + public function getAutoIncrementString() + { + if ($this->isAutoIncrement()&& IDMethod::NATIVE === $this->getTable()->getIdMethod()) { + return $this->getPlatform()->getAutoIncrement(); + } elseif ($this->isAutoIncrement()) { + throw new EngineException("You have specified autoIncrement for column '" . $this->name . "' but you have not specified idMethod=\"native\" for table '" . $this->getTable()->getName() . "'."); + } + return ""; + } + + /** + * Set the auto increment value. + * Use isAutoIncrement() to find out if it is set or not. + */ + public function setAutoIncrement($value) + { + $this->isAutoIncrement = (boolean) $value; + } + + /** + * Set the column type from a string property + * (normally a string from an sql input file) + * + * @deprecated Do not use; this will be removed in next release. + */ + public function setTypeFromString($typeName, $size) + { + $tn = strtoupper($typeName); + $this->setType($tn); + + if ($size !== null) { + $this->size = $size; + } + + if (strpos($tn, "CHAR") !== false) { + $this->domain->setType(PropelTypes::VARCHAR); + } elseif (strpos($tn, "INT") !== false) { + $this->domain->setType(PropelTypes::INTEGER); + } elseif (strpos($tn, "FLOAT") !== false) { + $this->domain->setType(PropelTypes::FLOAT); + } elseif (strpos($tn, "DATE") !== false) { + $this->domain->setType(PropelTypes::DATE); + } elseif (strpos($tn, "TIME") !== false) { + $this->domain->setType(PropelTypes::TIMESTAMP); + } else if (strpos($tn, "BINARY") !== false) { + $this->domain->setType(PropelTypes::LONGVARBINARY); + } else { + $this->domain->setType(PropelTypes::VARCHAR); + } + } + + /** + * Return a string representation of the native PHP type which corresponds + * to the propel type of this column. Use in the generation of Base objects. + * + * @return string PHP datatype used by propel. + */ + public function getPhpNative() + { + return PropelTypes::getPhpNative($this->getType()); + } + + /** + * Returns true if the column's PHP native type is an boolean, int, long, float, double, string. + * @return boolean + * @see PropelTypes::isPhpPrimitiveType() + */ + public function isPhpPrimitiveType() + { + return PropelTypes::isPhpPrimitiveType($this->getPhpType()); + } + + /** + * Return true if column's PHP native type is an boolean, int, long, float, double. + * @return boolean + * @see PropelTypes::isPhpPrimitiveNumericType() + */ + public function isPhpPrimitiveNumericType() + { + return PropelTypes::isPhpPrimitiveNumericType($this->getPhpType()); + } + + /** + * Returns true if the column's PHP native type is a class name. + * @return boolean + * @see PropelTypes::isPhpObjectType() + */ + public function isPhpObjectType() + { + return PropelTypes::isPhpObjectType($this->getPhpType()); + } + + /** + * Get the platform/adapter impl. + * + * @return Platform + */ + public function getPlatform() + { + return $this->getTable()->getDatabase()->getPlatform(); + } + + /** + * + * @return string + * @deprecated Use DDLBuilder->getColumnDDL() instead; this will be removed in 1.3 + */ + public function getSqlString() + { + $sb = ""; + $sb .= $this->getPlatform()->quoteIdentifier($this->getName()) . " "; + $sb .= $this->getDomain()->getSqlType(); + if ($this->getPlatform()->hasSize($this->getDomain()->getSqlType())) { + $sb .= $this->getDomain()->printSize(); + } + $sb .= " "; + $sb .= $this->getDefaultSetting() . " "; + $sb .= $this->getNotNullString() . " "; + $sb .= $this->getAutoIncrementString(); + return trim($sb); + } + + public static function generatePhpName($name, $phpNamingMethod = PhpNameGenerator::CONV_METHOD_CLEAN, $namePrefix = null) { + return NameFactory::generateName(NameFactory::PHP_GENERATOR, array($name, $phpNamingMethod, $namePrefix)); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/ColumnDefaultValue.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/ColumnDefaultValue.php new file mode 100644 index 0000000..a77eaf4 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/ColumnDefaultValue.php @@ -0,0 +1,101 @@ +. + */ + +/** + * A class for holding a column default value. + * + * @author Hans Lellelid + * @version $Revision: 1262 $ + * @package propel.engine.database.model + */ +class ColumnDefaultValue { + + const TYPE_VALUE = "value"; + const TYPE_EXPR = "expr"; + + /** + * @var string The default value, as specified in the schema. + */ + private $value; + + /** + * @var string The type of value represented by this object (DefaultValue::TYPE_VALUE or DefaultValue::TYPE_EXPR). + */ + private $type = ColumnDefaultValue::TYPE_VALUE; + + /** + * Creates a new DefaultValue object. + * + * @param string $value The default value, as specified in the schema. + * @param string $type The type of default value (DefaultValue::TYPE_VALUE or DefaultValue::TYPE_EXPR) + */ + public function __construct($value, $type = null) + { + $this->setValue($value); + if ($type !== null) { + $this->setType($type); + } + } + + /** + * @return string The type of default value (DefaultValue::TYPE_VALUE or DefaultValue::TYPE_EXPR) + */ + public function getType() + { + return $this->type; + } + + /** + * @param string $type The type of default value (DefaultValue::TYPE_VALUE or DefaultValue::TYPE_EXPR) + */ + public function setType($type) + { + $this->type = $type; + } + + /** + * Convenience method to indicate whether the value in this object is an expression (as opposed to simple value). + * + * @return boolean Whether value this object holds is an expression. + */ + public function isExpression() + { + return ($this->type == self::TYPE_EXPR); + } + + /** + * @return string The value, as specified in the schema. + */ + public function getValue() + { + return $this->value; + } + + /** + * @param string $value The value, as specified in the schema. + */ + public function setValue($value) + { + $this->value = $value; + } + + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/ConstraintNameGenerator.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/ConstraintNameGenerator.php new file mode 100644 index 0000000..204b63e --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/ConstraintNameGenerator.php @@ -0,0 +1,84 @@ +. + */ + + +/** + * A NameGenerator implementation for table-specific + * constraints. Conforms to the maximum column name length for the + * type of database in use. + * + * @author Hans Lellelid (Propel) + * @author Daniel Rall (Torque) + * @version $Revision: 1262 $ + * @package propel.engine.database.model + */ +class ConstraintNameGenerator implements NameGenerator { + /** + * Conditional compilation flag. + */ + const DEBUG = false; + + /** + * First element of inputs should be of type {@link Database}, second + * should be a table name, third is the type identifier (spared if + * trimming is necessary due to database type length constraints), + * and the fourth is a Integer indicating the number + * of this contraint. + * + * @see NameGenerator + * @throws EngineException + */ + public function generateName($inputs) + { + + $db = $inputs[0]; + $name = $inputs[1]; + $namePostfix = $inputs[2]; + $constraintNbr = (string) $inputs[3]; + + // Calculate maximum RDBMS-specific column character limit. + $maxBodyLength = -1; + try { + $maxColumnNameLength = (int) $db->getPlatform()->getMaxColumnNameLength(); + $maxBodyLength = ($maxColumnNameLength - strlen($namePostfix) + - strlen($constraintNbr) - 2); + + if (self::DEBUG) { + print("maxColumnNameLength=" . $maxColumnNameLength + . " maxBodyLength=" . $maxBodyLength . "\n"); + } + } catch (EngineException $e) { + echo $e; + throw $e; + } + + // Do any necessary trimming. + if ($maxBodyLength !== -1 && strlen($name) > $maxBodyLength) { + $name = substr($name, 0, $maxBodyLength); + } + + $name .= self::STD_SEPARATOR_CHAR . $namePostfix + . self::STD_SEPARATOR_CHAR . $constraintNbr; + + return $name; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Database.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Database.php new file mode 100644 index 0000000..e883e27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Database.php @@ -0,0 +1,588 @@ +. + */ + +require_once 'propel/engine/database/model/XMLElement.php'; +include_once 'propel/engine/database/model/IDMethod.php'; +include_once 'propel/engine/database/model/NameGenerator.php'; +include_once 'propel/engine/database/model/Table.php'; +include_once 'propel/engine/database/model/Behavior.php'; + + +/** + * A class for holding application data structures. + * + * @author Hans Lellelid (Propel) + * @author Leon Messerschmidt (Torque) + * @author John McNally (Torque) + * @author Martin Poeschl (Torque) + * @author Daniel Rall (Torque) + * @author Byron Foster (Torque) + * @version $Revision: 1262 $ + * @package propel.engine.database.model + */ +class Database extends XMLElement { + + private $platform; + private $tableList = array(); + private $curColumn; + private $name; + private $pkg; + private $baseClass; + private $basePeer; + private $defaultIdMethod; + private $defaultPhpNamingMethod; + private $defaultTranslateMethod; + private $dbParent; + private $tablesByName = array(); + private $tablesByPhpName = array(); + private $heavyIndexing; + + private $domainMap = array(); + + /** + * List of behaviors registered for this table + * + * @var array + */ + protected $behaviors = array(); + + /** + * Constructs a new Database object. + * + * @param string $name + */ + public function __construct($name = null) + { + $this->name = $name; + } + + /** + * Sets up the Database object based on the attributes that were passed to loadFromXML(). + * @see parent::loadFromXML() + */ + protected function setupObject() + { + $this->name = $this->getAttribute("name"); + $this->pkg = $this->getAttribute("package"); + $this->baseClass = $this->getAttribute("baseClass"); + $this->basePeer = $this->getAttribute("basePeer"); + $this->defaultIdMethod = $this->getAttribute("defaultIdMethod", IDMethod::NATIVE); + $this->defaultPhpNamingMethod = $this->getAttribute("defaultPhpNamingMethod", NameGenerator::CONV_METHOD_UNDERSCORE); + $this->defaultTranslateMethod = $this->getAttribute("defaultTranslateMethod", Validator::TRANSLATE_NONE); + $this->heavyIndexing = $this->booleanValue($this->getAttribute("heavyIndexing")); + } + + /** + * Returns the Platform implementation for this database. + * + * @return Platform a Platform implementation + */ + public function getPlatform() + { + return $this->platform; + } + + /** + * Sets the Platform implementation for this database. + * + * @param Platform $platform A Platform implementation + */ + public function setPlatform($platform) + { + $this->platform = $platform; + } + + /** + * Get the name of the Database + */ + public function getName() + { + return $this->name; + } + + /** + * Set the name of the Database + */ + public function setName($name) + { + $this->name = $name; + } + + /** + * Get the value of package. + * @return value of package. + */ + public function getPackage() + { + return $this->pkg; + } + + /** + * Set the value of package. + * @param v Value to assign to package. + */ + public function setPackage($v) + { + $this->pkg = $v; + } + + /** + * Get the value of baseClass. + * @return value of baseClass. + */ + public function getBaseClass() + { + return $this->baseClass; + } + + /** + * Set the value of baseClass. + * @param v Value to assign to baseClass. + */ + public function setBaseClass($v) + { + $this->baseClass = $v; + } + + /** + * Get the value of basePeer. + * @return value of basePeer. + */ + public function getBasePeer() + { + return $this->basePeer; + } + + /** + * Set the value of basePeer. + * @param v Value to assign to basePeer. + */ + public function setBasePeer($v) + { + $this->basePeer = $v; + } + + /** + * Get the value of defaultIdMethod. + * @return value of defaultIdMethod. + */ + public function getDefaultIdMethod() + { + return $this->defaultIdMethod; + } + + /** + * Set the value of defaultIdMethod. + * @param v Value to assign to defaultIdMethod. + */ + public function setDefaultIdMethod($v) + { + $this->defaultIdMethod = $v; + } + + /** + * Get the value of defaultPHPNamingMethod which specifies the + * method for converting schema names for table and column to PHP names. + * @return string The default naming conversion used by this database. + */ + public function getDefaultPhpNamingMethod() + { + return $this->defaultPhpNamingMethod; + } + + /** + * Set the value of defaultPHPNamingMethod. + * @param string $v The default naming conversion for this database to use. + */ + public function setDefaultPhpNamingMethod($v) + { + $this->defaultPhpNamingMethod = $v; + } + + /** + * Get the value of defaultTranslateMethod which specifies the + * method for translate validator error messages. + * @return string The default translate method. + */ + public function getDefaultTranslateMethod() + { + return $this->defaultTranslateMethod; + } + + /** + * Set the value of defaultTranslateMethod. + * @param string $v The default translate method to use. + */ + public function setDefaultTranslateMethod($v) + { + $this->defaultTranslateMethod = $v; + } + + /** + * Get the value of heavyIndexing. + * + * This is a synonym for getHeavyIndexing(). + * + * @return boolean Value of heavyIndexing. + * @see getHeavyIndexing() + */ + public function isHeavyIndexing() + { + return $this->getHeavyIndexing(); + } + + /** + * Get the value of heavyIndexing. + * + * @return boolean Value of heavyIndexing. + */ + public function getHeavyIndexing() + { + return $this->heavyIndexing; + } + + /** + * Set the value of heavyIndexing. + * @param boolean $v Value to assign to heavyIndexing. + */ + public function setHeavyIndexing($v) + { + $this->heavyIndexing = (boolean) $v; + } + + /** + * Return an array of all tables + */ + public function getTables() + { + return $this->tableList; + } + + /** + * Return the table with the specified name. + * @param string $name The name of the table (e.g. 'my_table') + * @return Table a Table object or null if it doesn't exist + */ + public function getTable($name) + { + if (isset($this->tablesByName[$name])) { + return $this->tablesByName[$name]; + } + return null; // just to be explicit + } + + /** + * Return the table with the specified phpName. + * @param string $phpName the PHP Name of the table (e.g. 'MyTable') + * @return Table a Table object or null if it doesn't exist + */ + public function getTableByPhpName($phpName) + { + if (isset($this->tablesByPhpName[$phpName])) { + return $this->tablesByPhpName[$phpName]; + } + return null; // just to be explicit + } + + /** + * An utility method to add a new table from an xml attribute. + */ + public function addTable($data) + { + if ($data instanceof Table) { + $tbl = $data; // alias + $tbl->setDatabase($this); + if (isset($this->tablesByName[$tbl->getName()])) { + throw new EngineException("Duplicate table declared: " . $tbl->getName()); + } + $this->tableList[] = $tbl; + $this->tablesByName[ $tbl->getName() ] = $tbl; + $this->tablesByPhpName[ $tbl->getPhpName() ] = $tbl; + if ($tbl->getPackage() === null) { + $tbl->setPackage($this->getPackage()); + } + return $tbl; + } else { + $tbl = new Table(); + $tbl->setDatabase($this); + $tbl->loadFromXML($data); + return $this->addTable($tbl); // call self w/ different param + } + } + + /** + * Set the parent of the database + */ + public function setAppData(AppData $parent) + { + $this->dbParent = $parent; + } + + /** + * Get the parent of the table + */ + public function getAppData() + { + return $this->dbParent; + } + + /** + * Adds Domain object from tag. + * @param mixed XML attributes (array) or Domain object. + */ + public function addDomain($data) { + + if ($data instanceof Domain) { + $domain = $data; // alias + $domain->setDatabase($this); + $this->domainMap[ $domain->getName() ] = $domain; + return $domain; + } else { + $domain = new Domain(); + $domain->setDatabase($this); + $domain->loadFromXML($data); + return $this->addDomain($domain); // call self w/ different param + } + } + + /** + * Get already configured Domain object by name. + * @return Domain + */ + public function getDomain($domainName) + { + if (isset($this->domainMap[$domainName])) { + return $this->domainMap[$domainName]; + } + return null; // just to be explicit + } + + public function getGeneratorConfig() + { + return $this->getAppData()->getPlatform()->getGeneratorConfig(); + } + + /** + * Adds a new Behavior to the database + * @return Behavior A behavior instance + */ + public function addBehavior($bdata) + { + if ($bdata instanceof Behavior) { + $behavior = $bdata; + $behavior->setDatabase($this); + $this->behaviors[$behavior->getName()] = $behavior; + return $behavior; + } else { + $class = $this->getConfiguredBehavior($bdata['name']); + $behavior = new $class(); + $behavior->loadFromXML($bdata); + return $this->addBehavior($behavior); + } + } + + /** + * Get the database behaviors + * @return Array of Behavior objects + */ + public function getBehaviors() + { + return $this->behaviors; + } + + /** + * Get one database behavior by name + * @param string $name the behavior name + * @return Behavior a behavior object + */ + public function getBehavior($name) + { + return $this->behaviors[$name]; + } + + + public function doFinalInitialization() + { + $config = $this->getGeneratorConfig(); + if($config && ($defaultBehaviors = $config->getBuildProperty('behaviorDefault'))) + { + // add generic behaviors from build.properties + $defaultBehaviors = explode(',', $defaultBehaviors); + foreach ($defaultBehaviors as $behavior) + { + $this->addBehavior(array('name' => trim($behavior))); + } + } + + // execute behavior database modifiers + foreach ($this->getBehaviors() as $behavior) + { + $behavior->modifyDatabase(); + } + + $tables = $this->getTables(); + + for ($i=0,$size=count($tables); $i < $size; $i++) { + $currTable = $tables[$i]; + + // check schema integrity + // if idMethod="autoincrement", make sure a column is + // specified as autoIncrement="true" + // FIXME: Handle idMethod="native" via DB adapter. + /* + + --- REMOVING THIS BECAUSE IT'S ANNOYING + + if ($currTable->getIdMethod() == IDMethod::NATIVE ) { + $columns = $currTable->getColumns(); + $foundOne = false; + for ($j=0, $cLen=count($columns); $j < $cLen && !$foundOne; $j++) { + $foundOne = $columns[$j]->isAutoIncrement(); + } + + if (!$foundOne) { + $errorMessage = "Table '" . $currTable->getName() + . "' is set to use native id generation, but it does not " + . "have a column which declared as the one to " + . "auto increment (i.e. autoIncrement=\"true\")"; + + throw new BuildException($errorMessage); + } + } + */ + + $currTable->doFinalInitialization(); + + // setup reverse fk relations + $fks = $currTable->getForeignKeys(); + for ($j=0, $fksLen=count($fks); $j < $fksLen; $j++) { + $currFK = $fks[$j]; + $foreignTable = $this->getTable($currFK->getForeignTableName()); + if ($foreignTable === null) { + throw new BuildException("ERROR!! Attempt to set foreign" + . " key to nonexistent table, " + . $currFK->getForeignTableName() . "!"); + } + + $referrers = $foreignTable->getReferrers(); + if ($referrers === null || !in_array($currFK, $referrers, true) ) { + $foreignTable->addReferrer($currFK); + } + + // local column references + $localColumnNames = $currFK->getLocalColumns(); + + for ($k=0,$lcnLen=count($localColumnNames); $k < $lcnLen; $k++) { + + $local = $currTable->getColumn($localColumnNames[$k]); + + // give notice of a schema inconsistency. + // note we do not prevent the npe as there is nothing + // that we can do, if it is to occur. + if ($local === null) { + throw new BuildException("ERROR!! Attempt to define foreign" + . " key with nonexistent column, " + . $localColumnNames[$k] . ", in table, " + . $currTable->getName() . "!"); + } + + //check for foreign pk's + if ($local->isPrimaryKey()) { + $currTable->setContainsForeignPK(true); + } + + } // for each local col name + + // foreign column references + $foreignColumnNames = $currFK->getForeignColumns(); + for ($k=0,$fcnLen=count($localColumnNames); $k < $fcnLen; $k++) { + $foreign = $foreignTable->getColumn($foreignColumnNames[$k]); + // if the foreign column does not exist, we may have an + // external reference or a misspelling + if ($foreign === null) { + throw new BuildException("ERROR!! Attempt to set foreign" + . " key to nonexistent column, " + . $foreignColumnNames[$k] . ", in table, " + . $foreignTable->getName() . "!"); + } else { + $foreign->addReferrer($currFK); + } + } // for each foreign col ref + } + } + } + + /** + * @see XMLElement::appendXml(DOMNode) + */ + public function appendXml(DOMNode $node) + { + $doc = ($node instanceof DOMDocument) ? $node : $node->ownerDocument; + + $dbNode = $node->appendChild($doc->createElement('database')); + + $dbNode->setAttribute('name', $this->name); + + if ($this->pkg) { + $dbNode->setAttribute('package', $this->pkg); + } + + if ($this->defaultIdMethod) { + $dbNode->setAttribute('defaultIdMethod', $this->defaultIdMethod); + } + + if ($this->baseClass) { + $dbNode->setAttribute('baseClass', $this->baseClass); + } + + if ($this->basePeer) { + $dbNode->setAttribute('basePeer', $this->basePeer); + } + + if ($this->defaultPhpNamingMethod) { + $dbNode->setAttribute('defaultPhpNamingMethod', $this->defaultPhpNamingMethod); + } + + if ($this->defaultTranslateMethod) { + $dbNode->setAttribute('defaultTranslateMethod', $this->defaultTranslateMethod); + } + + /* + + FIXME - Before we can add support for domains in the schema, we need + to have a method of the Column that indicates whether the column was mapped + to a SPECIFIC domain (since Column->getDomain() will always return a Domain object) + + foreach ($this->domainMap as $domain) { + $domain->appendXml($dbNode); + } + */ + foreach ($this->vendorInfos as $vi) { + $vi->appendXml($dbNode); + } + + foreach ($this->tableList as $table) { + $table->appendXml($dbNode); + } + + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Domain.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Domain.php new file mode 100644 index 0000000..3376951 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Domain.php @@ -0,0 +1,396 @@ +. + */ + +require_once 'propel/engine/database/model/XMLElement.php'; + +/** + * A class for holding data about a domain used in the schema. + * + * @author Hans Lellelid (Propel) + * @author Martin Poeschl (Torque) + * @version $Revision: 1262 $ + * @package propel.engine.database.model + */ +class Domain extends XMLElement { + + /** + * @var string The name of this domain + */ + private $name; + + /** + * @var string Description for this domain. + */ + private $description; + + /** + * @var int Size + */ + private $size; + + /** + * @var int Scale + */ + private $scale; + + /** + * @var int Propel type from schema + */ + private $propelType; + + /** + * @var string The SQL type to use for this column + */ + private $sqlType; + + /** + * @var ColumnDefaultValue A default value + */ + private $defaultValue; + + /** + * @var Database + */ + private $database; + + /** + * Creates a new Domain object. + * If this domain needs a name, it must be specified manually. + * + * @param string $type Propel type. + * @param string $sqlType SQL type. + * @param string $size + * @param string $scale + */ + public function __construct($type = null, $sqlType = null, $size = null, $scale = null) + { + $this->propelType = $type; + $this->sqlType = ($sqlType !== null) ? $sqlType : $type; + $this->size = $size; + $this->scale = $scale; + } + + /** + * Copy the values from current object into passed-in Domain. + * @param Domain $domain Domain to copy values into. + */ + public function copy(Domain $domain) + { + $this->defaultValue = $domain->getDefaultValue(); + $this->description = $domain->getDescription(); + $this->name = $domain->getName(); + $this->scale = $domain->getScale(); + $this->size = $domain->getSize(); + $this->sqlType = $domain->getSqlType(); + $this->propelType = $domain->getType(); + } + + /** + * Sets up the Domain object based on the attributes that were passed to loadFromXML(). + * @see parent::loadFromXML() + */ + protected function setupObject() + { + $schemaType = strtoupper($this->getAttribute("type")); + $this->copy($this->getDatabase()->getPlatform()->getDomainForType($schemaType)); + + //Name + $this->name = $this->getAttribute("name"); + + // Default value + $defval = $this->getAttribute("defaultValue", $this->getAttribute("default")); + if ($defval !== null) { + $this->setDefaultValue(new ColumnDefaultValue($defval, ColumnDefaultValue::TYPE_VALUE)); + } elseif ($this->getAttribute("defaultExpr") !== null) { + $this->setDefaultValue(new ColumnDefaultValue($this->getAttribute("defaultExpr"), ColumnDefaultValue::TYPE_EXPR)); + } + + $this->size = $this->getAttribute("size"); + $this->scale = $this->getAttribute("scale"); + $this->description = $this->getAttribute("description"); + } + + /** + * Sets the owning database object (if this domain is being setup via XML). + * @param Database $database + */ + public function setDatabase(Database $database) + { + $this->database = $database; + } + + /** + * Gets the owning database object (if this domain was setup via XML). + * @return Database + */ + public function getDatabase() + { + return $this->database; + } + + /** + * @return string Returns the description. + */ + public function getDescription() + { + return $this->description; + } + + /** + * @param string $description The description to set. + */ + public function setDescription($description) + { + $this->description = $description; + } + + /** + * @return string Returns the name. + */ + public function getName() + { + return $this->name; + } + + /** + * @param string $name The name to set. + */ + public function setName($name) + { + $this->name = $name; + } + + /** + * @return string Returns the scale. + */ + public function getScale() + { + return $this->scale; + } + + /** + * @param string $scale The scale to set. + */ + public function setScale($scale) + { + $this->scale = $scale; + } + + /** + * Replaces the size if the new value is not null. + * + * @param string $value The size to set. + */ + public function replaceScale($value) + { + if ($value !== null) { + $this->scale = $value; + } + } + + /** + * @return int Returns the size. + */ + public function getSize() + { + return $this->size; + } + + /** + * @param int $size The size to set. + */ + public function setSize($size) + { + $this->size = $size; + } + + /** + * Replaces the size if the new value is not null. + * + * @param int $value The size to set. + */ + public function replaceSize($value) + { + if ($value !== null) { + $this->size = $value; + } + } + + /** + * @return string Returns the propelType. + */ + public function getType() + { + return $this->propelType; + } + + /** + * @param string $propelType The PropelTypes type to set. + */ + public function setType($propelType) + { + $this->propelType = $propelType; + } + + /** + * Replaces the type if the new value is not null. + * + * @param string $value The tyep to set. + */ + public function replaceType($value) + { + if ($value !== null) { + $this->propelType = $value; + } + } + + /** + * Gets the default value object. + * @return ColumnDefaultValue The default value object for this domain. + */ + public function getDefaultValue() + { + return $this->defaultValue; + } + + /** + * Gets the default value, type-casted for use in PHP OM. + * @return mixed + * @see getDefaultValue() + */ + public function getPhpDefaultValue() + { + if ($this->defaultValue === null) { + return null; + } else { + if ($this->defaultValue->isExpression()) { + throw new EngineException("Cannot get PHP version of default value for default value EXPRESSION."); + } + if ($this->propelType === PropelTypes::BOOLEAN) { + return $this->booleanValue($this->defaultValue->getValue()); + } else { + return $this->defaultValue->getValue(); + } + } + } + + /** + * @param ColumnDefaultValue $value The column default value to set. + */ + public function setDefaultValue(ColumnDefaultValue $value) + { + $this->defaultValue = $value; + } + + /** + * Replaces the default value if the new value is not null. + * + * @param ColumnDefaultValue $value The defualt value object + */ + public function replaceDefaultValue(ColumnDefaultValue $value = null) + { + if ($value !== null) { + $this->defaultValue = $value; + } + } + + /** + * @return string Returns the sqlType. + */ + public function getSqlType() + { + return $this->sqlType; + } + + /** + * @param string $sqlType The sqlType to set. + */ + public function setSqlType($sqlType) + { + $this->sqlType = $sqlType; + } + + /** + * Replaces the SQL type if the new value is not null. + * @param string $sqlType The native SQL type to use for this domain. + */ + public function replaceSqlType($sqlType) + { + if ($sqlType !== null) { + $this->sqlType = $sqlType; + } + } + + /** + * Return the size and scale in brackets for use in an sql schema. + * + * @return string Size and scale or an empty String if there are no values + * available. + */ + public function printSize() + { + if ($this->size !== null && $this->scale !== null) { + return '(' . $this->size . ',' . $this->scale . ')'; + } elseif ($this->size !== null) { + return '(' . $this->size . ')'; + } else { + return ""; + } + } + + /** + * @see XMLElement::appendXml(DOMNode) + */ + public function appendXml(DOMNode $node) + { + $doc = ($node instanceof DOMDocument) ? $node : $node->ownerDocument; + + $domainNode = $node->appendChild($doc->createElement('domain')); + $domainNode->setAttribute('type', $this->getType()); + $domainNode->setAttribute('name', $this->getName()); + + if ($this->sqlType !== $this->getType()) { + $domainNode->setAttribute('sqlType', $this->sqlType); + } + + $def = $this->getDefaultValue(); + if ($def) { + if ($def->isExpression()) { + $domainNode->setAttribute('defaultExpr', $def->getValue()); + } else { + $domainNode->setAttribute('defaultValue', $def->getValue()); + } + } + + if ($this->size) { + $domainNode->setAttribute('size', $this->size); + } + + if ($this->scale) { + $domainNode->setAttribute('scale', $this->scale); + } + + if ($this->description) { + $domainNode->setAttribute('description', $this->description); + } + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/ForeignKey.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/ForeignKey.php new file mode 100644 index 0000000..9275538 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/ForeignKey.php @@ -0,0 +1,442 @@ +. + */ + +require_once 'propel/engine/database/model/XMLElement.php'; + +/** + * A Class for information about foreign keys of a table. + * + * @author Hans Lellelid + * @author Fedor + * @author Daniel Rall + * @version $Revision: 1448 $ + * @package propel.engine.database.model + */ +class ForeignKey extends XMLElement { + + private $foreignTableName; + private $name; + private $phpName; + private $refPhpName; + private $onUpdate; + private $onDelete; + private $parentTable; + private $localColumns = array(); + private $foreignColumns = array(); + + // the uppercase equivalent of the onDelete/onUpdate values in the dtd + const NONE = ""; // No "ON [ DELETE | UPDATE]" behaviour specified. + const NOACTION = "NO ACTION"; + const CASCADE = "CASCADE"; + const RESTRICT = "RESTRICT"; + const SETDEFAULT = "SET DEFAULT"; + const SETNULL = "SET NULL"; + + /** + * Constructs a new ForeignKey object. + * + * @param string $name + */ + public function __construct($name=null) + { + $this->name = $name; + } + + /** + * Sets up the ForeignKey object based on the attributes that were passed to loadFromXML(). + * @see parent::loadFromXML() + */ + protected function setupObject() + { + $this->foreignTableName = $this->getAttribute("foreignTable"); + $this->name = $this->getAttribute("name"); + $this->phpName = $this->getAttribute("phpName"); + $this->refPhpName = $this->getAttribute("refPhpName"); + $this->onUpdate = $this->normalizeFKey($this->getAttribute("onUpdate")); + $this->onDelete = $this->normalizeFKey($this->getAttribute("onDelete")); + } + + /** + * normalizes the input of onDelete, onUpdate attributes + */ + private function normalizeFKey($attrib) + { + if ($attrib === null || strtoupper($attrib) == "NONE") { + $attrib = self::NONE; + } + $attrib = strtoupper($attrib); + if ($attrib == "SETNULL") { + $attrib = self::SETNULL; + } + return $attrib; + } + + /** + * returns whether or not the onUpdate attribute is set + */ + public function hasOnUpdate() + { + return ($this->onUpdate !== self::NONE); + } + + /** + * returns whether or not the onDelete attribute is set + */ + public function hasOnDelete() + { + return ($this->onDelete !== self::NONE); + } + + /** + * returns the onUpdate attribute + * @return string + */ + public function getOnUpdate() + { + return $this->onUpdate; + } + + /** + * Returns the onDelete attribute + * @return string + */ + public function getOnDelete() + { + return $this->onDelete; + } + + /** + * sets the onDelete attribute + */ + public function setOnDelete($value) + { + $this->onDelete = $this->normalizeFKey($value); + } + + /** + * sets the onUpdate attribute + */ + public function setOnUpdate($value) + { + $this->onUpdate = $this->normalizeFKey($value); + } + + /** + * Returns the name attribute. + */ + public function getName() + { + return $this->name; + } + + /** + * Sets the name attribute. + */ + public function setName($name) + { + $this->name = $name; + } + + /** + * Gets the phpName for this foreign key (if any). + * @return string + */ + public function getPhpName() + { + return $this->phpName; + } + + /** + * Sets a phpName to use for this foreign key. + * @param string $name + */ + public function setPhpName($name) + { + $this->phpName = $name; + } + + /** + * Gets the refPhpName for this foreign key (if any). + * @return string + */ + public function getRefPhpName() + { + return $this->refPhpName; + } + + /** + * Sets a refPhpName to use for this foreign key. + * @param string $name + */ + public function setRefPhpName($name) + { + $this->refPhpName = $name; + } + + /** + * Get the foreignTableName of the FK + */ + public function getForeignTableName() + { + return $this->foreignTableName; + } + + /** + * Set the foreignTableName of the FK + */ + public function setForeignTableName($tableName) + { + $this->foreignTableName = $tableName; + } + + /** + * Gets the resolved foreign Table model object. + * @return Table + */ + public function getForeignTable() + { + return $this->getTable()->getDatabase()->getTable($this->getForeignTableName()); + } + + /** + * Set the parent Table of the foreign key + */ + public function setTable(Table $parent) + { + $this->parentTable = $parent; + } + + /** + * Get the parent Table of the foreign key + */ + public function getTable() + { + return $this->parentTable; + } + + /** + * Returns the Name of the table the foreign key is in + */ + public function getTableName() + { + return $this->parentTable->getName(); + } + + /** + * Adds a new reference entry to the foreign key. + */ + public function addReference($p1, $p2 = null) + { + if (is_array($p1)) { + $this->addReference(@$p1["local"], @$p1["foreign"]); + } else { + if ($p1 instanceof Column) { + $p1 = $p1->getName(); + } + if ($p2 instanceof Column) { + $p2 = $p2->getName(); + } + $this->localColumns[] = $p1; + $this->foreignColumns[] = $p2; + } + } + + /** + * Return a comma delimited string of local column names + * @deprecated because Column::makeList() is deprecated; use the array-returning getLocalColumns() and DDLBuilder->getColumnList() instead instead. + */ + public function getLocalColumnNames() + { + return Column::makeList($this->getLocalColumns(), $this->getTable()->getDatabase()->getPlatform()); + } + + /** + * Return a comma delimited string of foreign column names + * @deprecated because Column::makeList() is deprecated; use the array-returning getForeignColumns() and DDLBuilder->getColumnList() instead instead. + */ + public function getForeignColumnNames() + { + return Column::makeList($this->getForeignColumns(), $this->getTable()->getDatabase()->getPlatform()); + } + + /** + * Return an array of local column names. + * @return array string[] + */ + public function getLocalColumns() + { + return $this->localColumns; + } + + /** + * Utility method to get local column to foreign column + * mapping for this foreign key. + */ + public function getLocalForeignMapping() + { + $h = array(); + for ($i=0, $size=count($this->localColumns); $i < $size; $i++) { + $h[$this->localColumns[$i]] = $this->foreignColumns[$i]; + } + return $h; + } + + /** + * Get the foreign column mapped to specified local column. + * @return string Column name. + */ + public function getMappedForeignColumn($local) + { + $m = $this->getLocalForeignMapping(); + if (isset($m[$local])) { + return $m[$local]; + } + return null; + } + + /** + * Get the local column mapped to specified foreign column. + * @return string Column name. + */ + public function getMappedLocalColumn($foreign) + { + $m = $this->getForeignLocalMapping(); + if (isset($m[$foreign])) { + return $m[$foreign]; + } + return null; + } + + /** + * Return an array of foreign column objects. + * @return array Column[] + */ + public function getForeignColumns() + { + return $this->foreignColumns; + } + + /** + * Utility method to get local column to foreign column + * mapping for this foreign key. + */ + public function getForeignLocalMapping() + { + $h = array(); + for ($i=0, $size=count($this->localColumns); $i < $size; $i++) { + $h[ $this->foreignColumns[$i] ] = $this->localColumns[$i]; + } + return $h; + } + + /** + * Whether this foreign key is also the primary key of the local table. + * + * @return boolean + */ + public function isLocalPrimaryKey() + { + $localCols = $this->getLocalColumns(); + + $localPKColumnObjs = $this->getTable()->getPrimaryKey(); + + $localPKCols = array(); + foreach ($localPKColumnObjs as $lPKCol) { + $localPKCols[] = $lPKCol->getName(); + } + // + // print "Local key columns: \n"; + // print_r($localCols); + // + // print "Local table primary key columns: \n"; + // print_r($localPKCols); + + return (!array_diff($localPKCols, $localCols)); + } + + /** + * Whether this foreign key is matched by an invertes foreign key (on foreign table). + * + * This is to prevent duplicate columns being generated for a 1:1 relationship that is represented + * by foreign keys on both tables. I don't know if that's good practice ... but hell, why not + * support it. + * + * @param ForeignKey $fk + * @return boolean + * @link http://propel.phpdb.org/trac/ticket/549 + */ + public function isMatchedByInverseFK() + { + return (bool) $this->getInverseFK(); + } + + public function getInverseFK() + { + $foreignTable = $this->getForeignTable(); + $map = $this->getForeignLocalMapping(); + + foreach ($foreignTable->getForeignKeys() as $refFK) { + $fkMap = $refFK->getLocalForeignMapping(); + if ( ($refFK->getTableName() == $this->getTableName()) && ($map == $fkMap) ) { // compares keys and values, but doesn't care about order, included check to make sure it's the same table (fixes #679) + return $refFK; + } + } + } + + /** + * @see XMLElement::appendXml(DOMNode) + */ + public function appendXml(DOMNode $node) + { + $doc = ($node instanceof DOMDocument) ? $node : $node->ownerDocument; + + $fkNode = $node->appendChild($doc->createElement('foreign-key')); + + $fkNode->setAttribute('foreignTable', $this->getForeignTableName()); + $fkNode->setAttribute('name', $this->getName()); + + if ($this->getPhpName()) { + $fkNode->setAttribute('phpName', $this->getPhpName()); + } + + if ($this->getRefPhpName()) { + $fkNode->setAttribute('refPhpName', $this->getRefPhpName()); + } + + if ($this->getOnDelete()) { + $fkNode->setAttribute('onDelete', $this->getOnDelete()); + } + + if ($this->getOnUpdate()) { + $fkNode->setAttribute('onUpdate', $this->getOnUpdate()); + } + + for ($i=0, $size=count($this->localColumns); $i < $size; $i++) { + $refNode = $fkNode->appendChild($doc->createElement('reference')); + $refNode->setAttribute('local', $this->localColumns[$i]); + $refNode->setAttribute('foreign', $this->foreignColumns[$i]); + } + + foreach ($this->vendorInfos as $vi) { + $vi->appendXml($fkNode); + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/IDMethod.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/IDMethod.php new file mode 100644 index 0000000..a5e9c6f --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/IDMethod.php @@ -0,0 +1,46 @@ +. + */ + +/** + * Interface for various ID retrieval method types + * (i.e. auto-increment, sequence, ID broker, etc.). + * + * @author Hans Lellelid (Propel) + * @author Daniel Rall (Torque) + * @version $Revision: 1262 $ + * @package propel.engine.database.model + */ +interface IDMethod { + + /** + * Key generation via database-specific ID method + * (i.e. auto-increment for MySQL, sequence for Oracle, etc.). + */ + const NATIVE = "native"; + + /** + * No RDBMS key generation (keys may be generated by the + * application). + */ + const NO_ID_METHOD = "none"; + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/IdMethodParameter.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/IdMethodParameter.php new file mode 100644 index 0000000..9ac93ad --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/IdMethodParameter.php @@ -0,0 +1,119 @@ +. + */ + +require_once 'propel/engine/database/model/XMLElement.php'; + +/** + * Information related to an ID method. + * + * @author Hans Lellelid (Propel) + * @author John McNally (Torque) + * @author Daniel Rall (Torque) + * @version $Revision: 1262 $ + * @package propel.engine.database.model + */ +class IdMethodParameter extends XMLElement { + + private $name; + private $value; + private $parentTable; + + /** + * Sets up the IdMethodParameter object based on the attributes that were passed to loadFromXML(). + * @see parent::loadFromXML() + */ + protected function setupObject() + { + $this->name = $this->getAttribute("name"); + $this->value = $this->getAttribute("value"); + } + + /** + * Get the parameter name + */ + public function getName() + { + return $this->name; + } + + /** + * Set the parameter name + */ + public function setName($name) + { + $this->name = $name; + } + + /** + * Get the parameter value + */ + public function getValue() + { + return $this->value; + } + + /** + * Set the parameter value + */ + public function setValue($value) + { + $this->value = $value; + } + + /** + * Set the parent Table of the id method + */ + public function setTable(Table $parent) + { + $this->parentTable = $parent; + } + + /** + * Get the parent Table of the id method + */ + public function getTable() + { + return $this->parentTable; + } + + /** + * Returns the Name of the table the id method is in + */ + public function getTableName() + { + return $this->parentTable->getName(); + } + + /** + * @see XMLElement::appendXml(DOMNode) + */ + public function appendXml(DOMNode $node) + { + $doc = ($node instanceof DOMDocument) ? $node : $node->ownerDocument; + + $paramNode = $node->appendChild($doc->createElement('id-method-parameter')); + if ($this->getName()) { + $paramNode->setAttribute('name', $this->getName()); + } + $paramNode->setAttribute('value', $this->getValue()); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Index.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Index.php new file mode 100644 index 0000000..a80feac --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Index.php @@ -0,0 +1,286 @@ +. + */ + +require_once 'propel/engine/database/model/XMLElement.php'; +include_once 'propel/engine/EngineException.php'; + +/** + * Information about indices of a table. + * + * @author Jason van Zyl + * @author Daniel Rall + * @version $Revision: 1262 $ + * @package propel.engine.database.model + */ +class Index extends XMLElement { + + /** enables debug output */ + const DEBUG = false; + + private $indexName; + private $parentTable; + + /** @var array string[] */ + private $indexColumns; + + /** @var array */ + private $indexColumnSizes = array(); + + /** + * Creates a new Index instance. + * + * @param string $name + */ + public function __construct($name=null) + { + $this->indexName = $name; + } + + private function createName() + { + $table = $this->getTable(); + $inputs = array(); + $inputs[] = $table->getDatabase(); + $inputs[] = $table->getName(); + if ($this->isUnique()) { + $inputs[] = "U"; + } else { + $inputs[] = "I"; + } + // ASSUMPTION: This Index not yet added to the list. + if ($this->isUnique()) { + $inputs[] = count($table->getUnices()) + 1; + } else { + $inputs[] = count($table->getIndices()) + 1; + } + + $this->indexName = NameFactory::generateName( + NameFactory::CONSTRAINT_GENERATOR, $inputs); + } + + /** + * Sets up the Index object based on the attributes that were passed to loadFromXML(). + * @see parent::loadFromXML() + */ + protected function setupObject() + { + $this->indexName = $this->getAttribute("name"); + } + + /** + * @see #isUnique() + * @deprecated Use isUnique() instead. + */ + public function getIsUnique() + { + return $this->isUnique(); + } + + /** + * Returns the uniqueness of this index. + */ + public function isUnique() + { + return false; + } + + /** + * @see #getName() + * @deprecated Use getName() instead. + */ + public function getIndexName() + { + return $this->getName(); + } + + /** + * Gets the name of this index. + */ + public function getName() + { + if ($this->indexName === null) { + try { + // generate an index name if we don't have a supplied one + $this->createName(); + } catch (EngineException $e) { + // still no name + } + } + return substr($this->indexName, 0, $this->getTable()->getDatabase()->getPlatform()->getMaxColumnNameLength()); + } + + /** + * @see #setName(String name) + * @deprecated Use setName(String name) instead. + */ + public function setIndexName($name) + { + $this->setName($name); + } + + /** + * Set the name of this index. + */ + public function setName($name) + { + $this->indexName = $name; + } + + /** + * Set the parent Table of the index + */ + public function setTable(Table $parent) + { + $this->parentTable = $parent; + } + + /** + * Get the parent Table of the index + */ + public function getTable() + { + return $this->parentTable; + } + + /** + * Returns the Name of the table the index is in + */ + public function getTableName() + { + return $this->parentTable->getName(); + } + + /** + * Adds a new column to an index. + * @param mixed $data Column or attributes from XML. + */ + public function addColumn($data) + { + if ($data instanceof Column) { + $column = $data; + $this->indexColumns[] = $column->getName(); + if ($column->getSize()) { + $this->indexColumnSizes[$column->getName()] = $column->getSize(); + } + } else { + $attrib = $data; + $name = $attrib["name"]; + $this->indexColumns[] = $name; + if (isset($attrib["size"])) { + $this->indexColumnSizes[$name] = $attrib["size"]; + } + } + } + + /** + * Sets array of columns to use for index. + * + * @param array $indexColumns Column[] + */ + public function setColumns(array $indexColumns) + { + $this->indexColumns = array(); + $this->indexColumnSizes = array(); + foreach ($indexColumns as $col) { + $this->addColumn($col); + } + } + + /** + * Whether there is a size for the specified column. + * @param string $name + * @return boolean + */ + public function hasColumnSize($name) + { + return isset($this->indexColumnSizes[$name]); + } + + /** + * Returns the size for the specified column, if given. + * @param string $name + * @return numeric The size or NULL + */ + public function getColumnSize($name) + { + if (isset($this->indexColumnSizes[$name])) { + return $this->indexColumnSizes[$name]; + } + return null; // just to be explicit + } + + /** + * @see #getColumnList() + * @deprecated Use getColumnList() instead (which is not deprecated too!) + */ + public function getIndexColumnList() + { + return $this->getColumnList(); + } + + /** + * Return a comma delimited string of the columns which compose this index. + * @deprecated because Column::makeList() is deprecated; use the array-returning getColumns() and DDLBuilder->getColumnList() instead instead. + */ + public function getColumnList() + { + return Column::makeList($this->getColumns(), $this->getTable()->getDatabase()->getPlatform()); + } + + /** + * @see #getColumns() + * @deprecated Use getColumns() instead. + */ + public function getIndexColumns() + { + return $this->getColumns(); + } + + /** + * Return the list of local columns. You should not edit this list. + * @return array string[] + */ + public function getColumns() + { + return $this->indexColumns; + } + + /** + * @see XMLElement::appendXml(DOMNode) + */ + public function appendXml(DOMNode $node) + { + $doc = ($node instanceof DOMDocument) ? $node : $node->ownerDocument; + + $idxNode = $node->appendChild($doc->createElement('index')); + $idxNode->setAttribute('name', $this->getName()); + + foreach ($this->indexColumns as $colname) { + $idxColNode = $idxNode->appendChild($doc->createElement('index-column')); + $idxColNode->setAttribute('name', $colname); + } + + foreach ($this->vendorInfos as $vi) { + $vi->appendXml($idxNode); + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Inheritance.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Inheritance.php new file mode 100644 index 0000000..becdf71 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Inheritance.php @@ -0,0 +1,158 @@ +. + */ + +require_once 'propel/engine/database/model/XMLElement.php'; + +/** + * A Class for information regarding possible objects representing a table + * + * @author Hans Lellelid (Propel) + * @author John McNally (Torque) + * @version $Revision: 1262 $ + * @package propel.engine.database.model + */ +class Inheritance extends XMLElement { + + private $key; + private $className; + private $pkg; + private $ancestor; + private $parent; + + /** + * Sets up the Inheritance object based on the attributes that were passed to loadFromXML(). + * @see parent::loadFromXML() + */ + protected function setupObject() + { + $this->key = $this->getAttribute("key"); + $this->className = $this->getAttribute("class"); + $this->pkg = $this->getAttribute("package"); + $this->ancestor = $this->getAttribute("extends"); + } + + /** + * Get the value of key. + * @return value of key. + */ + public function getKey() + { + return $this->key; + } + + /** + * Set the value of key. + * @param v Value to assign to key. + */ + public function setKey($v) + { + $this->key = $v; + } + + /** + * Get the value of parent. + * @return value of parent. + */ + public function getColumn() + { + return $this->parent; + } + + /** + * Set the value of parent. + * @param v Value to assign to parent. + */ + public function setColumn(Column $v) + { + $this->parent = $v; + } + + /** + * Get the value of className. + * @return value of className. + */ + public function getClassName() + { + return $this->className; + } + + /** + * Set the value of className. + * @param v Value to assign to className. + */ + public function setClassName($v) + { + $this->className = $v; + } + + /** + * Get the value of package. + * @return value of package. + */ + public function getPackage() + { + return $this->pkg; + } + + /** + * Set the value of package. + * @param v Value to assign to package. + */ + public function setPackage($v) + { + $this->pkg = $v; + } + + /** + * Get the value of ancestor. + * @return value of ancestor. + */ + public function getAncestor() + { + return $this->ancestor; + } + + /** + * Set the value of ancestor. + * @param v Value to assign to ancestor. + */ + public function setAncestor($v) + { + $this->ancestor = $v; + } + + /** + * @see XMLElement::appendXml(DOMNode) + */ + public function appendXml(DOMNode $node) + { + $doc = ($node instanceof DOMDocument) ? $node : $node->ownerDocument; + + $inherNode = $node->appendChild($doc->createElement('inheritance')); + $inherNode->setAttribute('key', $this->key); + $inherNode->setAttribute('class', $this->className); + + if ($this->ancestor !== null) { + $inherNode->setAttribute('extends', $this->ancestor); + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/NameFactory.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/NameFactory.php new file mode 100644 index 0000000..c38b8fd --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/NameFactory.php @@ -0,0 +1,88 @@ +. + */ + +include_once 'propel/engine/EngineException.php'; +include_once 'propel/engine/database/model/NameGenerator.php'; +include_once 'propel/engine/database/model/PhpNameGenerator.php'; +include_once 'propel/engine/database/model/ConstraintNameGenerator.php'; + +/** + * A name generation factory. + * + * @author Hans Lellelid (Propel) + * @author Daniel Rall (Torque) + * @version $Revision: 1262 $ + * @package propel.engine.database.model + */ +class NameFactory { + + /** + * The class name of the PHP name generator. + */ + const PHP_GENERATOR = 'PhpNameGenerator'; + + /** + * The fully qualified class name of the constraint name generator. + */ + const CONSTRAINT_GENERATOR = 'ConstraintNameGenerator'; + + /** + * The single instance of this class. + */ + private static $instance; + + /** + * The cache of NameGenerator algorithms in use for + * name generation, keyed by fully qualified class name. + */ + private static $algorithms = array(); + + /** + * Factory method which retrieves an instance of the named generator. + * + * @param name The fully qualified class name of the name + * generation algorithm to retrieve. + */ + protected static function getAlgorithm($name) + { + if (!isset(self::$algorithms[$name])) { + self::$algorithms[$name] = new $name(); + } + return self::$algorithms[$name]; + } + + /** + * Given a list of String objects, implements an + * algorithm which produces a name. + * + * @param string $algorithmName The fully qualified class name of the {@link NameGenerator} + * implementation to use to generate names. + * @param array $inputs Inputs used to generate a name. + * @return The generated name. + * @throws EngineException + */ + public static function generateName($algorithmName, $inputs) + { + $algorithm = self::getAlgorithm($algorithmName); + return $algorithm->generateName($inputs); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/NameGenerator.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/NameGenerator.php new file mode 100644 index 0000000..841e623 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/NameGenerator.php @@ -0,0 +1,83 @@ +. + */ + +/** + * The generic interface to a name generation algorithm. + * + * @author Hans Lellelid (Propel) + * @author Daniel Rall (Torque) + * @author Byron Foster (Torque) + * @version $Revision: 1262 $ + * @package propel.engine.database.model + */ +interface NameGenerator { + /** + * The character used by most implementations as the separator + * between name elements. + */ + const STD_SEPARATOR_CHAR = '_'; + + /** + * Traditional method for converting schema table and column names + * to PHP names. The CONV_METHOD_XXX constants + * define how names for columns and tables in the database schema + * will be converted to PHP source names. + * + * @see PhpNameGenerator::underscoreMethod() + */ + const CONV_METHOD_UNDERSCORE = "underscore"; + + /** + * Heavier method for converting schema table and column names + * to PHP names. Similar to {@link #CONV_METHOD_UNDERSCORE} but + * this one will pass only letters and numbers through and will + * use as separator any character that is not a letter or a number + * inside the string to be converted. The CONV_METHOD_XXX + * constants define how names for columns and tales in the + * database schema will be converted to PHP source names. + */ + const CONV_METHOD_CLEAN = "clean"; + + /** + * Similar to {@link #CONV_METHOD_UNDERSCORE} except nothing is + * converted to lowercase. + * + * @see PhpNameGenerator::phpnameMethod() + */ + const CONV_METHOD_PHPNAME = "phpname"; + + /** + * Specifies no modification when converting from a schema column + * or table name to a PHP name. + */ + const CONV_METHOD_NOCHANGE = "nochange"; + + /** + * Given a list of String objects, implements an + * algorithm which produces a name. + * + * @param inputs Inputs used to generate a name. + * @return The generated name. + * @throws EngineException + */ + public function generateName($inputs); +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/PhpNameGenerator.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/PhpNameGenerator.php new file mode 100644 index 0000000..38d93a3 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/PhpNameGenerator.php @@ -0,0 +1,175 @@ +. + */ + +include_once 'propel/engine/database/model/NameGenerator.php'; + +/** + * A NameGenerator implementation for PHP-esque names. + * + * @author Hans Lellelid (Propel) + * @author Daniel Rall (Torque) + * @author Byron Foster (Torque) + * @author Bernd Goldschmidt + * @version $Revision: 1514 $ + * @package propel.engine.database.model + */ +class PhpNameGenerator implements NameGenerator { + + /** + * inputs should consist of two (three) elements, the + * original name of the database element and the method for + * generating the name. + * The optional third element may contain a prefix that will be + * stript from name prior to generate the resulting name. + * There are currently three methods: + * CONV_METHOD_NOCHANGE - xml names are converted + * directly to php names without modification. + * CONV_METHOD_UNDERSCORE will capitalize the first + * letter, remove underscores, and capitalize each letter before + * an underscore. All other letters are lowercased. "phpname" + * works the same as the CONV_METHOD_PHPNAME method + * but will not lowercase any characters. + * + * @param inputs list expected to contain two (optional: three) parameters, + * element 0 contains name to convert, element 1 contains method for conversion, + * optional element 2 contains prefix to be striped from name + * @return The generated name. + * @see NameGenerator + */ + public function generateName($inputs) + { + $schemaName = $inputs[0]; + $method = $inputs[1]; + + if (count($inputs)>2) { + $prefix = $inputs[2]; + if ($prefix != '' && substr($schemaName, 0, strlen($prefix)) == $prefix) { + $schemaName = substr($schemaName, strlen($prefix)); + } + } + + $phpName = null; + + switch ($method) { + case self::CONV_METHOD_CLEAN: + $phpName = $this->cleanMethod($schemaName); + break; + case self::CONV_METHOD_PHPNAME: + $phpName = $this->phpnameMethod($schemaName); + break; + case self::CONV_METHOD_NOCHANGE: + $phpName = $this->nochangeMethod($schemaName); + break; + case self::CONV_METHOD_UNDERSCORE: + default: + $phpName = $this->underscoreMethod($schemaName); + } + + return $phpName; + } + + /** + * Converts a database schema name to php object name. Removes + * STD_SEPARATOR_CHAR, capitilizes first letter of + * name and each letter after the STD_SEPERATOR, + * converts the rest of the letters to lowercase. + * + * my_CLASS_name -> MyClassName + * + * @param string $schemaName name to be converted. + * @return string Converted name. + * @see NameGenerator + * @see #underscoreMethod() + */ + protected function underscoreMethod($schemaName) + { + $name = ""; + $tok = strtok($schemaName, self::STD_SEPARATOR_CHAR); + while ($tok) { + $name .= ucfirst(strtolower($tok)); + $tok = strtok(self::STD_SEPARATOR_CHAR); + } + return $name; + } + + /** + * Converts a database schema name to php object name. Removes + * any character that is not a letter or a number and capitilizes + * first letter of the name, the first letter of each alphanumeric + * block and converts the rest of the letters to lowercase. + * + * T$NAMA$RFO_max => TNamaRfoMax + * + * @param string $schemaName name to be converted. + * @return string Converted name. + * @see NameGenerator + * @see #underscoreMethod() + */ + protected function cleanMethod($schemaName) + { + $name = ""; + $regexp = '/([a-z0-9]+)/i'; + $matches = array(); + if (preg_match_all($regexp, $schemaName, $matches)) { + foreach($matches[1] AS $tok) { + $name .= ucfirst(strtolower($tok)); + } + } else { + return $schemaName; + } + return $name; + } + + /** + * Converts a database schema name to php object name. Operates + * same as underscoreMethod but does not convert anything to + * lowercase. + * + * my_CLASS_name -> MyCLASSName + * + * @param string $schemaName name to be converted. + * @return string Converted name. + * @see NameGenerator + * @see #underscoreMethod(String) + */ + protected function phpnameMethod($schemaName) + { + $name = ""; + $tok = strtok($schemaName, self::STD_SEPARATOR_CHAR); + while ($tok !== false) { + $name .= ucfirst($tok); + $tok = strtok(self::STD_SEPARATOR_CHAR); + } + return $name; + } + + /** + * Converts a database schema name to PHP object name. In this + * case no conversion is made. + * + * @param string $name name to be converted. + * @return string The name parameter, unchanged. + */ + protected function nochangeMethod($name) + { + return $name; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/PropelTypes.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/PropelTypes.php new file mode 100644 index 0000000..aeebb18 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/PropelTypes.php @@ -0,0 +1,331 @@ +. + */ + +/** + * A class that maps PropelTypes to PHP native types, PDO types (and Creole types). + * + * @author Hans Lellelid (Propel) + * @version $Revision: 1262 $ + * @package propel.engine.database.model + */ +class PropelTypes { + + const CHAR = "CHAR"; + const VARCHAR = "VARCHAR"; + const LONGVARCHAR = "LONGVARCHAR"; + const CLOB = "CLOB"; + const NUMERIC = "NUMERIC"; + const DECIMAL = "DECIMAL"; + const TINYINT = "TINYINT"; + const SMALLINT = "SMALLINT"; + const INTEGER = "INTEGER"; + const BIGINT = "BIGINT"; + const REAL = "REAL"; + const FLOAT = "FLOAT"; + const DOUBLE = "DOUBLE"; + const BINARY = "BINARY"; + const VARBINARY = "VARBINARY"; + const LONGVARBINARY = "LONGVARBINARY"; + const BLOB = "BLOB"; + const DATE = "DATE"; + const TIME = "TIME"; + const TIMESTAMP = "TIMESTAMP"; + + const BU_DATE = "BU_DATE"; + const BU_TIMESTAMP = "BU_TIMESTAMP"; + + const BOOLEAN = "BOOLEAN"; + + private static $TEXT_TYPES = array ( + self::CHAR, self::VARCHAR, self::LONGVARCHAR, self::CLOB, self::DATE, self::TIME, self::TIMESTAMP, self::BU_DATE, self::BU_TIMESTAMP + ); + + private static $LOB_TYPES = array ( + self::VARBINARY, self::LONGVARBINARY, self::BLOB + ); + + private static $TEMPORAL_TYPES = array ( + self::DATE, self::TIME, self::TIMESTAMP, self::BU_DATE, self::BU_TIMESTAMP + ); + + private static $NUMERIC_TYPES = array ( + self::SMALLINT, self::TINYINT, self::INTEGER, self::BIGINT, self::FLOAT, self::DOUBLE, self::NUMERIC, self::DECIMAL, self::REAL + ); + + const CHAR_NATIVE_TYPE = "string"; + const VARCHAR_NATIVE_TYPE = "string"; + const LONGVARCHAR_NATIVE_TYPE = "string"; + const CLOB_NATIVE_TYPE = "string"; // Clob + const NUMERIC_NATIVE_TYPE = "string"; + const DECIMAL_NATIVE_TYPE = "string"; + const BOOLEAN_NATIVE_TYPE = "boolean"; + const TINYINT_NATIVE_TYPE = "int"; + const SMALLINT_NATIVE_TYPE = "int"; + const INTEGER_NATIVE_TYPE = "int"; + const BIGINT_NATIVE_TYPE = "string"; + const REAL_NATIVE_TYPE = "double"; + const FLOAT_NATIVE_TYPE = "double"; + const DOUBLE_NATIVE_TYPE = "double"; + const BINARY_NATIVE_TYPE = "string"; + const VARBINARY_NATIVE_TYPE = "string"; + const LONGVARBINARY_NATIVE_TYPE = "string"; + const BLOB_NATIVE_TYPE = "resource"; + const BU_DATE_NATIVE_TYPE = "string"; + const DATE_NATIVE_TYPE = "string"; + const TIME_NATIVE_TYPE = "string"; + const TIMESTAMP_NATIVE_TYPE = "string"; + const BU_TIMESTAMP_NATIVE_TYPE = "string"; + + /** + * Mapping between Propel types and PHP native types. + * + * @var array + */ + private static $propelToPHPNativeMap = array( + self::CHAR => self::CHAR_NATIVE_TYPE, + self::VARCHAR => self::VARCHAR_NATIVE_TYPE, + self::LONGVARCHAR => self::LONGVARCHAR_NATIVE_TYPE, + self::CLOB => self::CLOB_NATIVE_TYPE, + self::NUMERIC => self::NUMERIC_NATIVE_TYPE, + self::DECIMAL => self::DECIMAL_NATIVE_TYPE, + self::TINYINT => self::TINYINT_NATIVE_TYPE, + self::SMALLINT => self::SMALLINT_NATIVE_TYPE, + self::INTEGER => self::INTEGER_NATIVE_TYPE, + self::BIGINT => self::BIGINT_NATIVE_TYPE, + self::REAL => self::REAL_NATIVE_TYPE, + self::FLOAT => self::FLOAT_NATIVE_TYPE, + self::DOUBLE => self::DOUBLE_NATIVE_TYPE, + self::BINARY => self::BINARY_NATIVE_TYPE, + self::VARBINARY => self::VARBINARY_NATIVE_TYPE, + self::LONGVARBINARY => self::LONGVARBINARY_NATIVE_TYPE, + self::BLOB => self::BLOB_NATIVE_TYPE, + self::DATE => self::DATE_NATIVE_TYPE, + self::BU_DATE => self::BU_DATE_NATIVE_TYPE, + self::TIME => self::TIME_NATIVE_TYPE, + self::TIMESTAMP => self::TIMESTAMP_NATIVE_TYPE, + self::BU_TIMESTAMP => self::BU_TIMESTAMP_NATIVE_TYPE, + self::BOOLEAN => self::BOOLEAN_NATIVE_TYPE, + ); + + /** + * Mapping between Propel types and Creole types (for rev-eng task) + * + * @var array + */ + private static $propelTypeToCreoleTypeMap = array( + + self::CHAR => self::CHAR, + self::VARCHAR => self::VARCHAR, + self::LONGVARCHAR => self::LONGVARCHAR, + self::CLOB => self::CLOB, + self::NUMERIC => self::NUMERIC, + self::DECIMAL => self::DECIMAL, + self::TINYINT => self::TINYINT, + self::SMALLINT => self::SMALLINT, + self::INTEGER => self::INTEGER, + self::BIGINT => self::BIGINT, + self::REAL => self::REAL, + self::FLOAT => self::FLOAT, + self::DOUBLE => self::DOUBLE, + self::BINARY => self::BINARY, + self::VARBINARY => self::VARBINARY, + self::LONGVARBINARY => self::LONGVARBINARY, + self::BLOB => self::BLOB, + self::DATE => self::DATE, + self::TIME => self::TIME, + self::TIMESTAMP => self::TIMESTAMP, + self::BOOLEAN => self::BOOLEAN, + + // These are pre-epoch dates, which we need to map to String type + // since they cannot be properly handled using strtotime() -- or even numeric + // timestamps on Windows. + self::BU_DATE => self::VARCHAR, + self::BU_TIMESTAMP => self::VARCHAR, + + ); + + /** + * Mapping between Propel types and PDO type contants (for prepared statement setting). + * + * @var array + */ + private static $propelTypeToPDOTypeMap = array( + self::CHAR => PDO::PARAM_STR, + self::VARCHAR => PDO::PARAM_STR, + self::LONGVARCHAR => PDO::PARAM_STR, + self::CLOB => PDO::PARAM_STR, + self::NUMERIC => PDO::PARAM_INT, + self::DECIMAL => PDO::PARAM_STR, + self::TINYINT => PDO::PARAM_INT, + self::SMALLINT => PDO::PARAM_INT, + self::INTEGER => PDO::PARAM_INT, + self::BIGINT => PDO::PARAM_INT, + self::REAL => PDO::PARAM_STR, + self::FLOAT => PDO::PARAM_STR, + self::DOUBLE => PDO::PARAM_STR, + self::BINARY => PDO::PARAM_STR, + self::VARBINARY => PDO::PARAM_LOB, + self::LONGVARBINARY => PDO::PARAM_LOB, + self::BLOB => PDO::PARAM_LOB, + self::DATE => PDO::PARAM_STR, + self::TIME => PDO::PARAM_STR, + self::TIMESTAMP => PDO::PARAM_STR, + self::BOOLEAN => PDO::PARAM_BOOL, + + // These are pre-epoch dates, which we need to map to String type + // since they cannot be properly handled using strtotime() -- or even numeric + // timestamps on Windows. + self::BU_DATE => PDO::PARAM_STR, + self::BU_TIMESTAMP => PDO::PARAM_STR, + ); + + /** + * Return native PHP type which corresponds to the + * Creole type provided. Use in the base object class generation. + * + * @param $propelType The Propel type name. + * @return string Name of the native PHP type + */ + public static function getPhpNative($propelType) + { + return self::$propelToPHPNativeMap[$propelType]; + } + + /** + * Returns the correct Creole type _name_ for propel added types + * + * @param $type the propel added type. + * @return string Name of the the correct Creole type (e.g. "VARCHAR"). + */ + public static function getCreoleType($type) + { + return self::$propelTypeToCreoleTypeMap[$type]; + } + + /** + * Resturns the PDO type (PDO::PARAM_* constant) value. + * @return int + */ + public static function getPDOType($type) + { + return self::$propelTypeToPDOTypeMap[$type]; + } + + /** + * Returns Propel type constant corresponding to Creole type code. + * Used but Propel Creole task. + * + * @param int $sqlType The Creole SQL type constant. + * @return string The Propel type to use or NULL if none found. + */ + public static function getPropelType($sqlType) + { + if (isset(self::$creoleToPropelTypeMap[$sqlType])) { + return self::$creoleToPropelTypeMap[$sqlType]; + } + } + + /** + * Get array of Propel types. + * + * @return array string[] + */ + public static function getPropelTypes() + { + return array_keys(self::$propelTypeToCreoleTypeMap); + } + + /** + * Whether passed type is a temporal (date/time/timestamp) type. + * + * @param string $type Propel type + * @return boolean + */ + public static function isTemporalType($type) + { + return in_array($type, self::$TEMPORAL_TYPES); + } + + /** + * Returns true if values for the type need to be quoted. + * + * @param string $type The Propel type to check. + * @return boolean True if values for the type need to be quoted. + */ + public static function isTextType($type) + { + return in_array($type, self::$TEXT_TYPES); + } + + /** + * Returns true if values for the type are numeric. + * + * @param string $type The Propel type to check. + * @return boolean True if values for the type need to be quoted. + */ + public static function isNumericType($type) + { + return in_array($type, self::$NUMERIC_TYPES); + } + + /** + * Returns true if type is a LOB type (i.e. would be handled by Blob/Clob class). + * @param string $type Propel type to check. + * @return boolean + */ + public static function isLobType($type) + { + return in_array($type, self::$LOB_TYPES); + } + + /** + * Convenience method to indicate whether a passed-in PHP type is a primitive. + * + * @param string $phpType The PHP type to check + * @return boolean Whether the PHP type is a primitive (string, int, boolean, float) + */ + public static function isPhpPrimitiveType($phpType) + { + return in_array($phpType, array("boolean", "int", "double", "float", "string")); + } + + /** + * Convenience method to indicate whether a passed-in PHP type is a numeric primitive. + * + * @param string $phpType The PHP type to check + * @return boolean Whether the PHP type is a primitive (string, int, boolean, float) + */ + public static function isPhpPrimitiveNumericType($phpType) + { + return in_array($phpType, array("boolean", "int", "double", "float")); + } + + /** + * Convenience method to indicate whether a passed-in PHP type is an object. + * + * @param string $phpType The PHP type to check + * @return boolean Whether the PHP type is a primitive (string, int, boolean, float) + */ + public static function isPhpObjectType($phpType) + { + return (!self::isPhpPrimitiveType($phpType) && !in_array($phpType, array("resource", "array"))); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Rule.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Rule.php new file mode 100644 index 0000000..e222b00 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Rule.php @@ -0,0 +1,204 @@ +. + */ + +require_once 'propel/engine/database/model/XMLElement.php'; + +/** + * Data about a validation rule used in an application. + * + * @author Michael Aichler (Propel) + * @author John McNally (Intake) + * @version $Revision: 1262 $ + * @package propel.engine.database.model + */ +class Rule extends XMLElement { + + private $name; + private $value; + private $message; + private $validator; + private $classname; + + /** + * Sets up the Rule object based on the attributes that were passed to loadFromXML(). + * @see parent::loadFromXML() + */ + protected function setupObject() + { + $this->name = $this->getAttribute("name"); + $this->value = $this->getAttribute("value"); + $this->classname = $this->getAttribute("class"); + + /* + * Set some default values if they are not specified. + * This is escpecially useful for maxLength; the size + * is already known by the column and this way it is + * not necessary to manage the same size two times. + * + * Currently there is only one such supported default: + * - maxLength value = column max length + * (this default cannot be easily set at runtime w/o changing + * design of class system in undesired ways) + */ + if ($this->value === null) { + switch($this->name) { + case 'maxLength': + $this->value = $this->validator->getColumn()->getSize(); + break; + } + } + + $this->message = $this->getAttribute("message"); + } + + /** + * Sets the owning validator for this rule. + * @param Validator $validator + * @see Validator::addRule() + */ + public function setValidator(Validator $validator) + { + $this->validator = $validator; + } + + /** + * Gets the owning validator for this rule. + * @return Validator + */ + public function getValidator() + { + return $this->validator; + } + + /** + * Sets the dot-path name of class to use for rule. + * If no class is specified in XML, then a classname will + * be built based on the 'name' attrib. + * @param string $classname dot-path classname (e.g. myapp.propel.MyValidator) + */ + public function setClass($classname) + { + $this->classname = $classname; + } + + /** + * Gets the dot-path name of class to use for rule. + * If no class was specified, this method will build a default classname + * based on the 'name' attribute. E.g. 'maxLength' -> 'propel.validator.MaxLengthValidator' + * @return string dot-path classname (e.g. myapp.propel.MyValidator) + */ + public function getClass() + { + if ($this->classname === null && $this->name !== null) { + return "propel.validator." . ucfirst($this->name) . "Validator"; + } + return $this->classname; + } + + /** + * Sets the name of the validator for this rule. + * This name is used to build the classname if none was specified. + * @param string $name Validator name for this rule (e.g. "maxLength", "required"). + * @see getClass() + */ + public function setName($name) + { + $this->name = $name; + } + + /** + * Gets the name of the validator for this rule. + * @return string Validator name for this rule (e.g. "maxLength", "required"). + */ + public function getName() + { + return $this->name; + } + + /** + * Sets the value parameter for this validator rule. + * Note: not all validators need a value parameter (e.g. 'required' validator + * does not). + * @param string $value + */ + public function setValue($value) + { + $this->value = $value; + } + + /** + * Gets the value parameter for this validator rule. + * @return string + */ + public function getValue() + { + return $this->value; + } + + /** + * Sets the message that will be displayed to the user if validation fails. + * This message may be a Gettext msgid (if translation="gettext") or some other + * id for an alternative not-yet-supported translation system. It may also + * be a simple, single-language string. + * @param string $message + * @see setTranslation() + */ + public function setMessage($message) + { + $this->message = $message; + } + + /** + * Gets the message that will be displayed to the user if validation fails. + * This message may be a Gettext msgid (if translation="gettext") or some other + * id for an alternative not-yet-supported translation system. It may also + * be a simple, single-language string. + * @return string + * @see setTranslation() + */ + public function getMessage() + { + $message = str_replace('${value}', $this->getValue(), $this->message); + return $message; + } + + /** + * @see XMLElement::appendXml(DOMNode) + */ + public function appendXml(DOMNode $node) + { + $doc = ($node instanceof DOMDocument) ? $node : $node->ownerDocument; + + $ruleNode = $node->appendChild($doc->createElement('rule')); + $ruleNode->setAttribute('name', $this->getName()); + + if ($this->getValue() !== null) { + $ruleNode->setAttribute('value', $this->getValue()); + } + + if ($this->classname !== null) { + $ruleNode->setAttribute('class', $this->getClass()); + } + + $ruleNode->setAttribute('message', $this->getMessage()); + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Table.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Table.php new file mode 100644 index 0000000..7e4cc33 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Table.php @@ -0,0 +1,1429 @@ +. + */ + +require_once 'propel/engine/database/model/XMLElement.php'; +include_once 'propel/engine/EngineException.php'; +include_once 'propel/engine/database/model/IDMethod.php'; +include_once 'propel/engine/database/model/NameFactory.php'; +include_once 'propel/engine/database/model/Column.php'; +include_once 'propel/engine/database/model/Unique.php'; +include_once 'propel/engine/database/model/ForeignKey.php'; +include_once 'propel/engine/database/model/IdMethodParameter.php'; +include_once 'propel/engine/database/model/Validator.php'; +include_once 'propel/engine/database/model/Behavior.php'; + + +/** + * Data about a table used in an application. + * + * @author Hans Lellelid (Propel) + * @author Leon Messerschmidt (Torque) + * @author Jason van Zyl (Torque) + * @author Martin Poeschl (Torque) + * @author John McNally (Torque) + * @author Daniel Rall (Torque) + * @author Byron Foster (Torque) + * @version $Revision: 1268 $ + * @package propel.engine.database.model + */ +class Table extends XMLElement implements IDMethod { + + /** + * Enables some debug printing. + */ + const DEBUG = false; + + /** + * Columns for this table. + * + * @var array Column[] + */ + private $columnList = array(); + + /** + * Validators for this table. + * + * @var array Validator[] + */ + private $validatorList = array(); + + /** + * Foreign keys for this table. + * + * @var array ForeignKey[] + */ + private $foreignKeys = array(); + + /** + * Indexes for this table. + * + * @var array Index[] + */ + private $indices = array(); + + /** + * Unique indexes for this table. + * + * @var array Unique[] + */ + private $unices = array(); + + /** + * Any parameters for the ID method (currently supports changing sequence name). + * + * @var array + */ + private $idMethodParameters = array(); + + /** + * Table name. + * + * @var string + */ + private $name; + + /** + * Table description. + * + * @var string + */ + private $description; + + /** + * phpName for the table. + * + * @var string + */ + private $phpName; + + /** + * ID method for the table (e.g. IDMethod::NATIVE, IDMethod::NONE). + * + * @var string + */ + private $idMethod; + + /** + * Wether an INSERT with set PK is allowed on tables with IDMethod::NATIVE + * + * @var boolean + */ + private $allowPkInsert; + + /** + * Strategry to use for converting column name to phpName. + * + * @var string + */ + private $phpNamingMethod; + + /** + * The Database that this table belongs to. + * + * @var Database + */ + private $database; + + /** + * Foreign Keys that refer to this table. + * + * @var array ForeignKey[] + */ + private $referrers = array(); + + /** + * Names of foreign tables. + * + * @var array string[] + */ + private $foreignTableNames; + + /** + * Whether this table contains a foreign primary key. + * + * @var boolean + */ + private $containsForeignPK; + + /** + * The inheritance column for this table (if any). + * + * @var Column + */ + private $inheritanceColumn; + + /** + * Whether to skip generation of SQL for this table. + * + * @var boolean + */ + private $skipSql; + + /** + * Whether this table is "read-only". + * + * @var boolean + */ + private $readOnly; + + /** + * Whether this table should result in abstract OM classes. + * + * @var boolean + */ + private $abstractValue; + + /** + * Whether this table is an alias for another table. + * + * @var string + */ + private $alias; + + /** + * The interface that the generated "object" class should implement. + * + * @var string + */ + private $enterface; + + /** + * The package for the generated OM. + * + * @var string + */ + private $pkg; + + /** + * The base class to extend for the generated "object" class. + * + * @var string + */ + private $baseClass; + + /** + * The base peer class to extend for generated "peer" class. + * + * @var string + */ + private $basePeer; + + /** + * Map of columns by name. + * + * @var array + */ + private $columnsByName = array(); + + /** + * Map of columns by phpName. + * + * @var array + */ + private $columnsByPhpName = array(); + + /** + * Whether this table needs to use transactions in Postgres. + * + * @var string + * @deprecated + */ + private $needsTransactionInPostgres; + + /** + * Whether to perform additional indexing on this table. + * + * @var boolean + */ + private $heavyIndexing; + + /** + * Whether this table is for reference only. + * + * @var boolean + */ + private $forReferenceOnly; + + /** + * The tree mode (nested set, etc.) implemented by this table. + * + * @var string + */ + private $treeMode; + + /** + * Whether to reload the rows in this table after insert. + * + * @var boolean + */ + private $reloadOnInsert; + + /** + * Whether to reload the rows in this table after update. + * + * @var boolean + */ + private $reloadOnUpdate; + + /** + * List of behaviors registered for this table + * + * @var array + */ + protected $behaviors = array(); + + /** + * Constructs a table object with a name + * + * @param string $name table name + */ + public function __construct($name = null) + { + $this->name = $name; + } + + /** + * Sets up the Rule object based on the attributes that were passed to loadFromXML(). + * @see parent::loadFromXML() + */ + public function setupObject() + { + $this->name = $this->getAttribute("name"); + $this->phpName = $this->getAttribute("phpName"); + $this->idMethod = $this->getAttribute("idMethod", $this->getDatabase()->getDefaultIdMethod()); + $this->allowPkInsert = $this->booleanValue($this->getAttribute("allowPkInsert")); + + // retrieves the method for converting from specified name to a PHP name. + $this->phpNamingMethod = $this->getAttribute("phpNamingMethod", $this->getDatabase()->getDefaultPhpNamingMethod()); + + $this->skipSql = $this->booleanValue($this->getAttribute("skipSql")); + $this->readOnly = $this->booleanValue($this->getAttribute("readOnly")); + + $this->pkg = $this->getAttribute("package"); + $this->abstractValue = $this->booleanValue($this->getAttribute("abstract")); + $this->baseClass = $this->getAttribute("baseClass"); + $this->basePeer = $this->getAttribute("basePeer"); + $this->alias = $this->getAttribute("alias"); + + $this->heavyIndexing = ( $this->booleanValue($this->getAttribute("heavyIndexing")) + || ("false" !== $this->getAttribute("heavyIndexing") + && $this->getDatabase()->isHeavyIndexing() ) ); + $this->description = $this->getAttribute("description"); + $this->enterface = $this->getAttribute("interface"); // sic ('interface' is reserved word) + $this->treeMode = $this->getAttribute("treeMode"); + + $this->reloadOnInsert = $this->booleanValue($this->getAttribute("reloadOnInsert")); + $this->reloadOnUpdate = $this->booleanValue($this->getAttribute("reloadOnUpdate")); + } + + /** + *

    A hook for the SAX XML parser to call when this table has + * been fully loaded from the XML, and all nested elements have + * been processed.

    + * + *

    Performs heavy indexing and naming of elements which weren't + * provided with a name.

    + */ + public function doFinalInitialization() + { + // Heavy indexing must wait until after all columns composing + // a table's primary key have been parsed. + if ($this->heavyIndexing) { + $this->doHeavyIndexing(); + } + + // Name any indices which are missing a name using the + // appropriate algorithm. + $this->doNaming(); + + // execute behavior table modifiers + foreach ($this->getBehaviors() as $behavior) + { + $behavior->getTableModifier()->modifyTable(); + } + + // if idMethod is "native" and in fact there are no autoIncrement + // columns in the table, then change it to "none" + $anyAutoInc = false; + foreach ($this->getColumns() as $col) { + if ($col->isAutoIncrement()) { + $anyAutoInc = true; + } + } + if ($this->getIdMethod() === IDMethod::NATIVE && !$anyAutoInc) { + $this->setIdMethod(IDMethod::NO_ID_METHOD); + } + + // If there is no PK, then throw an error. Propel 1.3 requires primary keys. + $pk = $this->getPrimaryKey(); + if (empty($pk)) { + throw new EngineException("Table '".$this->getName()."' does not have a primary key defined. Propel requires all tables to have a primary key."); + } + + } + + /** + *

    Adds extra indices for multi-part primary key columns.

    + * + *

    For databases like MySQL, values in a where clause much + * match key part order from the left to right. So, in the key + * definition PRIMARY KEY (FOO_ID, BAR_ID), + * FOO_ID must be the first element used in + * the where clause of the SQL query used against + * this table for the primary key index to be used. This feature + * could cause problems under MySQL with heavily indexed tables, + * as MySQL currently only supports 16 indices per table (i.e. it + * might cause too many indices to be created).

    + * + *

    See the + * manual for a better description of why heavy indexing is + * useful for quickly searchable database tables.

    + */ + private function doHeavyIndexing() + { + if (self::DEBUG) { + print("doHeavyIndex() called on table " . $this->name."\n"); + } + + $pk = $this->getPrimaryKey(); + $size = count($pk); + + // We start at an offset of 1 because the entire column + // list is generally implicitly indexed by the fact that + // it's a primary key. + for ($i=1; $i < $size; $i++) { + $idx = new Index(); + $idx->setColumns(array_slice($pk, $i, $size)); + $this->addIndex($idx); + } + } + + /** + * Names composing objects which haven't yet been named. This + * currently consists of foreign-key and index entities. + */ + private function doNaming() { + + // Assure names are unique across all databases. + try { + for ($i=0, $size = count($this->foreignKeys); $i < $size; $i++) { + $fk = $this->foreignKeys[$i]; + $name = $fk->getName(); + if (empty($name)) { + $name = $this->acquireConstraintName("FK", $i + 1); + $fk->setName($name); + } + } + + for ($i = 0, $size = count($this->indices); $i < $size; $i++) { + $index = $this->indices[$i]; + $name = $index->getName(); + if (empty($name)) { + $name = $this->acquireConstraintName("I", $i + 1); + $index->setName($name); + } + } + + for ($i = 0, $size = count($this->unices); $i < $size; $i++) { + $index = $this->unices[$i]; + $name = $index->getName(); + if (empty($name)) { + $name = $this->acquireConstraintName("U", $i + 1); + $index->setName($name); + } + } + + // NOTE: Most RDBMSes can apparently name unique column + // constraints/indices themselves (using MySQL and Oracle + // as test cases), so we'll assume that we needn't add an + // entry to the system name list for these. + } catch (EngineException $nameAlreadyInUse) { + print $nameAlreadyInUse->getMessage() . "\n"; + print $nameAlreadyInUse->getTraceAsString(); + } + } + + /** + * Macro to a constraint name. + * + * @param nameType constraint type + * @param nbr unique number for this constraint type + * @return unique name for constraint + * @throws EngineException + */ + private function acquireConstraintName($nameType, $nbr) + { + $inputs = array(); + $inputs[] = $this->getDatabase(); + $inputs[] = $this->getName(); + $inputs[] = $nameType; + $inputs[] = $nbr; + return NameFactory::generateName(NameFactory::CONSTRAINT_GENERATOR, $inputs); + } + + /** + * Gets the value of base class for classes produced from this table. + * + * @return The base class for classes produced from this table. + */ + public function getBaseClass() + { + if ($this->isAlias() && $this->baseClass === null) { + return $this->alias; + } elseif ($this->baseClass === null) { + return $this->getDatabase()->getBaseClass(); + } else { + return $this->baseClass; + } + } + + /** + * Set the value of baseClass. + * @param v Value to assign to baseClass. + */ + public function setBaseClass($v) + { + $this->baseClass = $v; + } + + /** + * Get the value of basePeer. + * @return value of basePeer. + */ + public function getBasePeer() + { + if ($this->isAlias() && $this->basePeer === null) { + return $this->alias . "Peer"; + } elseif ($this->basePeer === null) { + return $this->getDatabase()->getBasePeer(); + } else { + return $this->basePeer; + } + } + + /** + * Set the value of basePeer. + * @param v Value to assign to basePeer. + */ + public function setBasePeer($v) + { + $this->basePeer = $v; + } + + /** + * A utility function to create a new column from attrib and add it to this + * table. + * + * @param $coldata xml attributes or Column class for the column to add + * @return the added column + */ + public function addColumn($data) + { + if ($data instanceof Column) { + $col = $data; + $col->setTable($this); + if ($col->isInheritance()) { + $this->inheritanceColumn = $col; + } + $this->columnList[] = $col; + $this->columnsByName[$col->getName()] = $col; + $this->columnsByPhpName[$col->getPhpName()] = $col; + $col->setPosition(count($this->columnList)); + $this->needsTransactionInPostgres |= $col->requiresTransactionInPostgres(); + return $col; + } else { + $col = new Column(); + $col->setTable($this); + $col->loadFromXML($data); + return $this->addColumn($col); // call self w/ different param + } + } + + /** + * Add a validator to this table. + * + * Supports two signatures: + * - addValidator(Validator $validator) + * - addValidator(array $attribs) + * + * @param mixed $data Validator object or XML attribs (array) from element. + * @return Validator The added Validator. + * @throws EngineException + */ + public function addValidator($data) + { + if ($data instanceof Validator) { + $validator = $data; + $col = $this->getColumn($validator->getColumnName()); + if ($col == null) { + throw new EngineException("Failed adding validator to table '" . $this->getName() . + "': column '" . $validator->getColumnName() . "' does not exist !"); + } + $validator->setColumn($col); + $validator->setTable($this); + $this->validatorList[] = $validator; + return $validator; + } else { + $validator = new Validator(); + $validator->setTable($this); + $validator->loadFromXML($data); + return $this->addValidator($validator); + } + } + + /** + * A utility function to create a new foreign key + * from attrib and add it to this table. + */ + public function addForeignKey($fkdata) + { + if ($fkdata instanceof ForeignKey) { + $fk = $fkdata; + $fk->setTable($this); + $this->foreignKeys[] = $fk; + + if ($this->foreignTableNames === null) { + $this->foreignTableNames = array(); + } + if (!in_array($fk->getForeignTableName(), $this->foreignTableNames)) { + $this->foreignTableNames[] = $fk->getForeignTableName(); + } + return $fk; + } else { + $fk = new ForeignKey(); + $fk->loadFromXML($fkdata); + return $this->addForeignKey($fk); + } + } + + /** + * Gets the column that subclasses of the class representing this + * table can be produced from. + * @return Column + */ + public function getChildrenColumn() + { + return $this->inheritanceColumn; + } + + /** + * Get the subclasses that can be created from this table. + * @return array string[] Class names + */ + public function getChildrenNames() + { + if ($this->inheritanceColumn === null + || !$this->inheritanceColumn->isEnumeratedClasses()) { + return null; + } + $children = $this->inheritanceColumn->getChildren(); + $names = array(); + for ($i = 0, $size=count($children); $i < $size; $i++) { + $names[] = get_class($children[$i]); + } + return $names; + } + + /** + * Adds the foreign key from another table that refers to this table. + */ + public function addReferrer(ForeignKey $fk) + { + if ($this->referrers === null) { + $this->referrers = array(); + } + $this->referrers[] = $fk; + } + + /** + * Get list of references to this table. + */ + public function getReferrers() + { + return $this->referrers; + } + + /** + * Set whether this table contains a foreign PK + */ + public function setContainsForeignPK($b) + { + $this->containsForeignPK = (boolean) $b; + } + + /** + * Determine if this table contains a foreign PK + */ + public function getContainsForeignPK() + { + return $this->containsForeignPK; + } + + /** + * A list of tables referenced by foreign keys in this table + */ + public function getForeignTableNames() + { + if ($this->foreignTableNames === null) { + $this->foreignTableNames = array(); + } + return $this->foreignTableNames; + } + + /** + * Return true if the column requires a transaction in Postgres + */ + public function requiresTransactionInPostgres() + { + return $this->needsTransactionInPostgres; + } + + /** + * A utility function to create a new id method parameter + * from attrib or object and add it to this table. + */ + public function addIdMethodParameter($impdata) + { + if ($impdata instanceof IdMethodParameter) { + $imp = $impdata; + $imp->setTable($this); + if ($this->idMethodParameters === null) { + $this->idMethodParameters = array(); + } + $this->idMethodParameters[] = $imp; + return $imp; + } else { + $imp = new IdMethodParameter(); + $imp->loadFromXML($impdata); + return $this->addIdMethodParameter($imp); // call self w/ diff param + } + } + + /** + * Adds a new index to the index list and set the + * parent table of the column to the current table + */ + public function addIndex($idxdata) + { + if ($idxdata instanceof Index) { + $index = $idxdata; + $index->setTable($this); + $index->getName(); // we call this method so that the name is created now if it doesn't already exist. + $this->indices[] = $index; + return $index; + } else { + $index = new Index($this); + $index->loadFromXML($idxdata); + return $this->addIndex($index); + } + } + + /** + * Adds a new Unique to the Unique list and set the + * parent table of the column to the current table + */ + public function addUnique($unqdata) + { + if ($unqdata instanceof Unique) { + $unique = $unqdata; + $unique->setTable($this); + $unique->getName(); // we call this method so that the name is created now if it doesn't already exist. + $this->unices[] = $unique; + return $unique; + } else { + $unique = new Unique($this); + $unique->loadFromXML($unqdata); + return $this->addUnique($unique); + } + } + + /** + * Retrieves the configuration object, filled by build.properties + * + * @return GeneratorConfig + */ + public function getGeneratorConfig() + { + return $this->getDatabase()->getAppData()->getPlatform()->getGeneratorConfig(); + } + + /** + * Adds a new Behavior to the table + * @return Behavior A behavior instance + */ + public function addBehavior($bdata) + { + if ($bdata instanceof Behavior) { + $behavior = $bdata; + $behavior->setTable($this); + $this->behaviors[$behavior->getName()] = $behavior; + return $behavior; + } else { + $class = $this->getConfiguredBehavior($bdata['name']); + $behavior = new $class(); + $behavior->loadFromXML($bdata); + return $this->addBehavior($behavior); + } + } + + /** + * Get the table behaviors + * @return Array of Behavior objects + */ + public function getBehaviors() + { + return $this->behaviors; + } + + /** + * Get one table behavior by name + * @param string $name the behavior name + * @return Behavior a behavior object + */ + public function getBehavior($name) + { + return $this->behaviors[$name]; + } + + /** + * Get the name of the Table + */ + public function getName() + { + return $this->name; + } + + /** + * Set the name of the Table + */ + public function setName($newName) + { + $this->name = $newName; + } + + /** + * Get the description for the Table + */ + public function getDescription() + { + return $this->description; + } + + /** + * Set the description for the Table + * + * @param newDescription description for the Table + */ + public function setDescription($newDescription) + { + $this->description = $newDescription; + } + + /** + * Get name to use in PHP sources + * @return string + */ + public function getPhpName() + { + if ($this->phpName === null) { + $inputs = array(); + $inputs[] = $this->name; + $inputs[] = $this->phpNamingMethod; + try { + $this->phpName = NameFactory::generateName(NameFactory::PHP_GENERATOR, $inputs); + } catch (EngineException $e) { + print $e->getMessage() . "\n"; + print $e->getTraceAsString(); + } + } + return $this->phpName; + } + + /** + * Set name to use in PHP sources + * @param string $phpName + */ + public function setPhpName($phpName) + { + $this->phpName = $phpName; + } + + /** + * Get the method for generating pk's + * [HL] changing behavior so that Database default + * method is returned if no method has been specified + * for the table. + * @return string + */ + public function getIdMethod() + { + if ($this->idMethod === null) { + return IDMethod::NO_ID_METHOD; + } else { + return $this->idMethod; + } + } + + /** + * Whether we allow to insert primary keys on tables with + * idMethod=native + * + * @return boolean + */ + public function isAllowPkInsert() + { + return $this->allowPkInsert; + } + + + /** + * Set the method for generating pk's + */ + public function setIdMethod($idMethod) + { + $this->idMethod = $idMethod; + } + + /** + * Skip generating sql for this table (in the event it should + * not be created from scratch). + * @return boolean Value of skipSql. + */ + public function isSkipSql() + { + return ($this->skipSql || $this->isAlias() || $this->isForReferenceOnly()); + } + + /** + * Is table read-only, in which case only accessors (and relationship setters) + * will be created. + * @return boolan Value of readOnly. + */ + public function isReadOnly() + { + return $this->readOnly; + } + + /** + * Set whether this table should have its creation sql generated. + * @param boolean $v Value to assign to skipSql. + */ + public function setSkipSql($v) + { + $this->skipSql = $v; + } + + /** + * Whether to force object to reload on INSERT. + * @return boolean + */ + public function isReloadOnInsert() + { + return $this->reloadOnInsert; + } + + /** + * Whether to force object to reload on UPDATE. + * @return boolean + */ + public function isReloadOnUpdate() + { + return $this->reloadOnUpdate; + } + + /** + * PhpName of om object this entry references. + * @return value of external. + */ + public function getAlias() + { + return $this->alias; + } + + /** + * Is this table specified in the schema or is there just + * a foreign key reference to it. + * @return value of external. + */ + public function isAlias() + { + return ($this->alias !== null); + } + + /** + * Set whether this table specified in the schema or is there just + * a foreign key reference to it. + * @param v Value to assign to alias. + */ + public function setAlias($v) + { + $this->alias = $v; + } + + + /** + * Interface which objects for this table will implement + * @return value of interface. + */ + public function getInterface() + { + return $this->enterface; + } + + /** + * Interface which objects for this table will implement + * @param v Value to assign to interface. + */ + public function setInterface($v) + { + $this->enterface = $v; + } + + /** + * When a table is abstract, it marks the business object class that is + * generated as being abstract. If you have a table called "FOO", then the + * Foo BO will be public abstract class Foo + * This helps support class hierarchies + * + * @return value of abstractValue. + */ + public function isAbstract() + { + return $this->abstractValue; + } + + /** + * When a table is abstract, it marks the business object + * class that is generated as being abstract. If you have a + * table called "FOO", then the Foo BO will be + * public abstract class Foo + * This helps support class hierarchies + * + * @param v Value to assign to abstractValue. + */ + public function setAbstract($v) + { + $this->abstractValue = (boolean) $v; + } + + /** + * Get the value of package. + * @return value of package. + */ + public function getPackage() + { + return $this->pkg; + } + + /** + * Set the value of package. + * @param v Value to assign to package. + */ + public function setPackage($v) + { + $this->pkg = $v; + } + + /** + * Returns an Array containing all the columns in the table + * @return array Column[] + */ + public function getColumns() + { + return $this->columnList; + } + + /** + * Utility method to get the number of columns in this table + */ + public function getNumColumns() + { + return count($this->columnList); + } + + /** + * Utility method to get the number of columns in this table + */ + public function getNumLazyLoadColumns() + { + $count = 0; + foreach ($this->columnList as $col) { + if ($col->isLazyLoad()) { + $count++; + } + } + return $count; + } + + /** + * Returns an Array containing all the validators in the table + * @return array Validator[] + */ + public function getValidators() + { + return $this->validatorList; + } + + /** + * Returns an Array containing all the FKs in the table. + * @return array ForeignKey[] + */ + public function getForeignKeys() + { + return $this->foreignKeys; + } + + /** + * Returns a Collection of parameters relevant for the chosen + * id generation method. + */ + public function getIdMethodParameters() + { + return $this->idMethodParameters; + } + + /** + * Returns an Array containing all the FKs in the table + * @return array Index[] + */ + public function getIndices() + { + return $this->indices; + } + + /** + * Returns an Array containing all the UKs in the table + * @return array Unique[] + */ + public function getUnices() + { + return $this->unices; + } + + /** + * Returns a specified column. + * @return Column Return a Column object or null if it does not exist. + */ + public function getColumn($name) + { + return @$this->columnsByName[$name]; + } + + /** + * Returns a specified column. + * @return Column Return a Column object or null if it does not exist. + */ + public function getColumnByPhpName($phpName) + { + return @$this->columnsByPhpName[$phpName]; + } + + /** + * Get all the foreign keys from this table to the specufued tabke. + * @return array ForeignKey[] + */ + public function getForeignKeysReferencingTable($tablename) + { + $matches = array(); + $keys = $this->getForeignKeys(); + foreach ($keys as $fk) { + if ($fk->getForeignTableName() === $tablename) { + $matches[] = $fk; + } + } + return $matches; + } + + /** + * Return the foreign keys that includes col in it's list of local columns. + * Eg. Foreign key (a,b,c) refrences tbl(x,y,z) will be returned of col is either a,b or c. + * @param string $col + * @return array ForeignKey[] or null if there is no FK for specified column. + */ + public function getColumnForeignKeys($colname) + { + $matches = array(); + foreach ($this->foreignKeys as $fk) { + if (in_array($colname, $fk->getLocalColumns())) { + $matches[] = $fk; + } + } + return $matches; + } + + /** + * Returns true if the table contains a specified column + * @param mixed $col Column or column name. + */ + public function containsColumn($col) + { + if ($col instanceof Column) { + return in_array($col, $this->columnList); + } else { + return ($this->getColumn($col) !== null); + } + } + + /** + * Set the database that contains this table. + * + * @param Database $db + */ + public function setDatabase(Database $db) + { + $this->database = $db; + } + + /** + * Get the database that contains this table. + * + * @return Database + */ + public function getDatabase() + { + return $this->database; + } + + /** + * Flag to determine if code/sql gets created for this table. + * Table will be skipped, if return true. + * @return boolean + */ + public function isForReferenceOnly() + { + return $this->forReferenceOnly; + } + + /** + * Flag to determine if code/sql gets created for this table. + * Table will be skipped, if set to true. + * @param boolean $v + */ + public function setForReferenceOnly($v) + { + $this->forReferenceOnly = (boolean) $v; + } + + /** + * Flag to determine if tree node class should be generated for this table. + * @return valur of treeMode + */ + public function treeMode() + { + return $this->treeMode; + } + + /** + * Flag to determine if tree node class should be generated for this table. + * @param v Value to assign to treeMode. + */ + public function setTreeMode($v) + { + $this->treeMode = $v; + } + + /** + * Appends XML nodes to passed-in DOMNode. + * + * @param DOMNode $node + */ + public function appendXml(DOMNode $node) + { + $doc = ($node instanceof DOMDocument) ? $node : $node->ownerDocument; + + $tableNode = $node->appendChild($doc->createElement('table')); + $tableNode->setAttribute('name', $this->getName()); + + if ($this->phpName !== null) { + $tableNode->setAttribute('phpName', $this->phpName); + } + + if ($this->idMethod !== null) { + $tableNode->setAttribute('idMethod', $this->idMethod); + } + + if ($this->skipSql !== null) { + $tableNode->setAttribute('idMethod', var_export($this->skipSql, true)); + } + + if ($this->readOnly !== null) { + $tableNode->setAttribute('readOnly', var_export($this->readOnly, true)); + } + + if ($this->treeMode !== null) { + $tableNode->setAttribute('treeMode', $this->treeMode); + } + + if ($this->reloadOnInsert !== null) { + $tableNode->setAttribute('reloadOnInsert', var_export($this->reloadOnInsert, true)); + } + + if ($this->reloadOnUpdate !== null) { + $tableNode->setAttribute('reloadOnUpdate', var_export($this->reloadOnUpdate, true)); + } + + if ($this->forReferenceOnly !== null) { + $tableNode->setAttribute('forReferenceOnly', var_export($this->forReferenceOnly, true)); + } + + if ($this->abstractValue !== null) { + $tableNode->setAttribute('abstract', var_export($this->abstractValue, true)); + } + + if ($this->enterface !== null) { + $tableNode->setAttribute('interface', $this->enterface); + } + + if ($this->description !== null) { + $tableNode->setAttribute('description', $this->description); + } + + if ($this->baseClass !== null) { + $tableNode->setAttribute('baseClass', $this->baseClass); + } + + if ($this->basePeer !== null) { + $tableNode->setAttribute('basePeer', $this->basePeer); + } + + foreach ($this->columnList as $col) { + $col->appendXml($tableNode); + } + + foreach ($this->validatorList as $validator) { + $validator->appendXml($tableNode); + } + + foreach ($this->foreignKeys as $fk) { + $fk->appendXml($tableNode); + } + + foreach ($this->idMethodParameters as $param) { + $param->appendXml($tableNode); + } + + foreach ($this->indices as $index) { + $index->appendXml($tableNode); + } + + foreach ($this->unices as $unique) { + $unique->appendXml($tableNode); + } + + foreach ($this->vendorInfos as $vi) { + $vi->appendXml($tableNode); + } + + } + + /** + * Returns the collection of Columns which make up the single primary + * key for this table. + * + * @return array Column[] A list of the primary key parts. + */ + public function getPrimaryKey() + { + $pk = array(); + foreach ($this->columnList as $col) { + if ($col->isPrimaryKey()) { + $pk[] = $col; + } + } + return $pk; + } + + /** + * Determine whether this table has a primary key. + * + * @return boolean Whether this table has any primary key parts. + */ + public function hasPrimaryKey() + { + return (count($this->getPrimaryKey()) > 0); + } + + /** + * Determine whether this table has any auto-increment primary key(s). + * + * @return boolean Whether this table has a non-"none" id method and has a primary key column that is auto-increment. + */ + public function hasAutoIncrementPrimaryKey() + { + if ($this->getIdMethod() != IDMethod::NO_ID_METHOD) { + $pks =$this->getPrimaryKey(); + foreach ($pks as $pk) { + if ($pk->isAutoIncrement()) { + return true; + } + } + } + return false; + } + + /** + * Gets the auto increment PK + * + * @return Column if any auto increment PK column + */ + public function getAutoIncrementPrimaryKey() + { + if ($this->getIdMethod() != IDMethod::NO_ID_METHOD) { + $pks =$this->getPrimaryKey(); + foreach ($pks as $pk) { + if ($pk->isAutoIncrement()) { + return $pk; + } + } + } + return null; + } + + /** + * Returns all parts of the primary key, separated by commas. + * + * @return A CSV list of primary key parts. + * @deprecated Use the DDLBuilder->getColumnList() with the #getPrimaryKey() method. + */ + public function printPrimaryKey() + { + return $this->printList($this->columnList); + } + + /** + * Returns the elements of the list, separated by commas. + * @param array $list + * @return A CSV list. + * @deprecated Use the DDLBuilder->getColumnList() with the #getPrimaryKey() method. + */ + private function printList($list){ + $result = ""; + $comma = 0; + for ($i=0,$_i=count($list); $i < $_i; $i++) { + $col = $list[$i]; + if ($col->isPrimaryKey()) { + $result .= ($comma++ ? ',' : '') . $this->getDatabase()->getPlatform()->quoteIdentifier($col->getName()); + } + } + return $result; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Unique.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Unique.php new file mode 100644 index 0000000..4ef0fe7 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Unique.php @@ -0,0 +1,68 @@ +. + */ + +include_once 'propel/engine/database/model/Index.php'; + +/** + * Information about unique columns of a table. This class assumes + * that in the underlying RDBMS, unique constraints and unique indices + * are roughly equivalent. For example, adding a unique constraint to + * a column also creates an index on that column (this is known to be + * true for MySQL and Oracle). + * + * @author Hans Lellelid (Propel) + * @author Jason van Zyl (Torque) + * @author Daniel Rall (Torque) + * @version $Revision: 1262 $ + * @package propel.engine.database.model + */ +class Unique extends Index { + + /** + * Returns true. + */ + public function isUnique() + { + return true; + } + + /** + * @see XMLElement::appendXml(DOMNode) + */ + public function appendXml(DOMNode $node) + { + $doc = ($node instanceof DOMDocument) ? $node : $node->ownerDocument; + + $uniqueNode = $node->appendChild($doc->createElement('unique')); + $uniqueNode->setAttribute('name', $this->getName()); + $columns = $this->getColumns(); + foreach ($this->getColumns() as $colname) { + $uniqueColNode = $uniqueNode->appendChild($doc->createElement('unique-column')); + $uniqueColNode->setAttribute('name', $colname); + } + + foreach ($this->vendorInfos as $vi) { + $vi->appendXml($uniqueNode); + } + } + + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Validator.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Validator.php new file mode 100644 index 0000000..5cd34e8 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/Validator.php @@ -0,0 +1,194 @@ +. + */ + +require_once 'propel/engine/database/model/XMLElement.php'; +include_once 'propel/engine/EngineException.php'; +include_once 'propel/engine/database/model/PropelTypes.php'; +include_once 'propel/engine/database/model/Rule.php'; + +/** + * Validator. + * + * @author Michael Aichler (Propel) + * @version $Revision: 1262 $ + * @package propel.engine.database.model + */ +class Validator extends XMLElement { + + const TRANSLATE_NONE = "none"; + const TRANSLATE_GETTEXT = "gettext"; + + /** + * The column this validator applies to. + * + * @var Column + */ + private $column; + + /** + * The rules for the validation. + * + * @var array Rule[] + */ + private $ruleList = array(); + + /** + * The translation mode. + * + * @var string + */ + private $translate; + + /** + * Parent table. + * + * @var Table + */ + private $table; + + /** + * Sets up the Validator object based on the attributes that were passed to loadFromXML(). + * @see parent::loadFromXML() + */ + protected function setupObject() + { + $this->column = $this->getTable()->getColumn($this->getAttribute("column")); + $this->translate = $this->getAttribute("translate", $this->getTable()->getDatabase()->getDefaultTranslateMethod());; + } + + /** + * Add a Rule to this validator. + * Supports two signatures: + * - addRule(Rule $rule) + * - addRule(array $attribs) + * @param mixed $data Rule object or XML attribs (array) from element. + * @return Rule The added Rule. + */ + public function addRule($data) + { + if ($data instanceof Rule) { + $rule = $data; // alias + $rule->setValidator($this); + $this->ruleList[] = $rule; + return $rule; + } + else { + $rule = new Rule(); + $rule->setValidator($this); + $rule->loadFromXML($data); + return $this->addRule($rule); // call self w/ different param + } + } + + /** + * Gets an array of all added rules for this validator. + * @return array Rule[] + */ + public function getRules() + { + return $this->ruleList; + } + + /** + * Gets the name of the column that this Validator applies to. + * @return string + */ + public function getColumnName() + { + return $this->column->getName(); + } + + /** + * Sets the Column object that this validator applies to. + * @param Column $column + * @see Table::addValidator() + */ + public function setColumn(Column $column) + { + $this->column = $column; + } + + /** + * Gets the Column object that this validator applies to. + * @return Column + */ + public function getColumn() + { + return $this->column; + } + + /** + * Set the owning Table. + * @param Table $table + */ + public function setTable(Table $table) + { + $this->table = $table; + } + + /** + * Get the owning Table. + * @return Table + */ + public function getTable() + { + return $this->table; + } + + /** + * Set the translation mode to use for the message. + * Currently only "gettext" and "none" are supported. The default is "none". + * @param string $method Translation method ("gettext", "none"). + */ + public function setTranslate($method) + { + $this->translate = $method; + } + + /** + * Get the translation mode to use for the message. + * Currently only "gettext" and "none" are supported. The default is "none". + * @return string Translation method ("gettext", "none"). + */ + public function getTranslate() + { + return $this->translate; + } + + /** + * @see XMLElement::appendXml(DOMNode) + */ + public function appendXml(DOMNode $node) + { + $doc = ($node instanceof DOMDocument) ? $node : $node->ownerDocument; + + $valNode = $node->appendChild($doc->createElement('validator')); + $valNode->setAttribute('column', $this->getColumnName()); + + if ($this->translate !== null) { + $valNode->setAttribute('translate', $this->translate); + } + + foreach ($this->ruleList as $rule) { + $rule->appendXml($valNode); + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/VendorInfo.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/VendorInfo.php new file mode 100644 index 0000000..f163c64 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/VendorInfo.php @@ -0,0 +1,182 @@ +. + */ + +require_once 'propel/engine/database/model/XMLElement.php'; +include_once 'propel/engine/EngineException.php'; + +/** + * Object to hold vendor-specific info. + * + * @author Hans Lellelid + * @version $Revision: 1262 $ + * @package propel.engine.database.model + */ +class VendorInfo extends XMLElement { + + /** + * The vendor RDBMS type. + * + * @var string + */ + private $type; + + /** + * Vendor parameters. + * + * @var array + */ + private $parameters = array(); + + /** + * Creates a new VendorInfo instance. + * + * @param string $type RDBMS type (optional) + */ + public function __construct($type = null) + { + $this->type = $type; + } + + /** + * Sets up this object based on the attributes that were passed to loadFromXML(). + * @see parent::loadFromXML() + */ + protected function setupObject() + { + $this->type = $this->getAttribute("type"); + } + + /** + * Set RDBMS type for this vendor-specific info. + * + * @param string $v + */ + public function setType($v) + { + $this->type = $v; + } + + /** + * Get RDBMS type for this vendor-specific info. + * + * @return string + */ + public function getType() + { + return $this->type; + } + + /** + * Adds a new vendor parameter to this object. + * @param array $attrib Attributes from XML. + */ + public function addParameter($attrib) + { + $name = $attrib["name"]; + $this->parameters[$name] = $attrib["value"]; + } + + /** + * Sets parameter value. + * + * @param string $name + * @param mixed $value The value for the parameter. + */ + public function setParameter($name, $value) + { + $this->parameters[$name] = $value; + } + + /** + * Gets parameter value. + * + * @param string $name + * @return mixed Paramter value. + */ + public function getParameter($name) + { + if (isset($this->parameters[$name])) { + return $this->parameters[$name]; + } + return null; // just to be explicit + } + + /** + * Whether parameter exists. + * + * @param string $name + */ + public function hasParameter($name) + { + return isset($this->parameters[$name]); + } + + /** + * Sets assoc array of parameters for venfor specific info. + * + * @param array $params Paramter data. + */ + public function setParameters(array $params = array()) + { + $this->parameters = $params; + } + + /** + * Gets assoc array of parameters for venfor specific info. + * + * @return array + */ + public function getParameters() + { + return $this->parameters; + } + + /** + * Gets a new merged VendorInfo object. + * @param VendorInfo $info + * @return VendorInfo new object with merged parameters + */ + public function getMergedVendorInfo(VendorInfo $merge) + { + $newParams = array_merge($this->getParameters(), $merge->getParameters()); + $newInfo = new VendorInfo($this->getType()); + $newInfo->setParameters($newParams); + return $newInfo; + } + + /** + * @see XMLElement::appendXml(DOMNode) + */ + public function appendXml(DOMNode $node) + { + $doc = ($node instanceof DOMDocument) ? $node : $node->ownerDocument; + + $vendorNode = $node->appendChild($doc->createElement("vendor")); + $vendorNode->setAttribute("type", $this->getType()); + + foreach ($this->parameters as $key => $value) { + $parameterNode = $doc->createElement("parameter"); + $parameterNode->setAttribute("name", $key); + $parameterNode->setAttribute("value", $value); + $vendorNode->appendChild($parameterNode); + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/XMLElement.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/XMLElement.php new file mode 100644 index 0000000..7e57128 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/model/XMLElement.php @@ -0,0 +1,192 @@ +. + */ + +include_once 'propel/engine/database/model/VendorInfo.php'; + +/** + * An abstract class for elements represented by XML tags (e.g. Column, Table). + * + * @author Hans Lellelid + * @version $Revision: 1262 $ + * @package propel.engine.database.model + */ +abstract class XMLElement { + + /** + * The name => value attributes from XML. + * + * @var array + */ + protected $attributes = array(); + + /** + * Any associated vendor-specific information objects. + * + * @var array VendorInfo[] + */ + protected $vendorInfos = array(); + + /** + * Replaces the old loadFromXML() so that we can use loadFromXML() to load the attribs into the class. + */ + abstract protected function setupObject(); + + /** + * This is the entry point method for loading data from XML. + * It calls a setupObject() method that must be implemented by the child class. + * @param array $attributes The attributes for the XML tag. + */ + public function loadFromXML($attributes) + { + $this->attributes = array_change_key_case($attributes, CASE_LOWER); + $this->setupObject(); + } + + /** + * Returns the assoc array of attributes. + * All attribute names (keys) are lowercase. + * @return array + */ + public function getAttributes() + { + return $this->attributes; + } + + /** + * Gets a particular attribute by [case-insensitive] name. + * If attribute is not set then the $defaultValue is returned. + * @param string $name The [case-insensitive] name of the attribute to lookup. + * @param mixed $defaultValue The default value to use in case the attribute is not set. + * @return mixed The value of the attribute or $defaultValue if not set. + */ + public function getAttribute($name, $defaultValue = null) + { + $name = strtolower($name); + if (isset($this->attributes[$name])) { + return $this->attributes[$name]; + } else { + return $defaultValue; + } + } + + /** + * Converts value specified in XML to a boolean value. + * This is to support the default value when used w/ a boolean column. + * @return value + */ + protected function booleanValue($val) + { + if (is_numeric($val)) { + return (bool) $val; + } else { + return (in_array(strtolower($val), array('true', 't', 'y', 'yes'), true) ? true : false); + } + } + + /** + * Appends DOM elements to represent this object in XML. + * @param DOMNode $node + */ + abstract public function appendXml(DOMNode $node); + + /** + * Sets an associated VendorInfo object. + * + * @param mixed $data VendorInfo object or XML attrib data (array) + * @return VendorInfo + */ + public function addVendorInfo($data) + { + if ($data instanceof VendorInfo) { + $vi = $data; + $this->vendorInfos[$vi->getType()] = $vi; + return $vi; + } else { + $vi = new VendorInfo(); + $vi->loadFromXML($data); + return $this->addVendorInfo($vi); // call self w/ different param + } + } + + /** + * Gets the any associated VendorInfo object. + * @return VendorInfo + */ + public function getVendorInfoForType($type) + { + if (isset($this->vendorInfos[$type])) { + return $this->vendorInfos[$type]; + } else { + // return an empty object + return new VendorInfo(); + } + } + + /** + * Find the best class name for a given behavior + * Looks in build.properties for path like propel.behavior.[bname].class + * If not found, tries to autoload [Bname]Behavior + * If no success, returns 'Behavior' + * + * @param string $bname behavior name, e.g. 'timestampable' + * @return string behavior class name, e.g. 'TimestampableBehavior' + */ + public function getConfiguredBehavior($bname) + { + if ($config = $this->getGeneratorConfig()) { + if ($class = $config->getConfiguredBehavior($bname)) { + return $class; + } + } + // first fallback: maybe the behavior is loaded or autoloaded + $gen = new PhpNameGenerator(); + if(class_exists($class = $gen->generateName($bname, PhpNameGenerator::CONV_METHOD_PHPNAME) . 'Behavior')) { + return $class; + } + // second fallback: use parent behavior class (mostly for unit tests) + return 'Behavior'; + } + + /** + * String representation of the current object. + * + * This is an xml representation with the XML declaration removed. + * + * @see appendXml() + */ + public function toString() + { + $doc = new DOMDocument('1.0'); + $doc->formatOutput = true; + $this->appendXml($doc); + $xmlstr = $doc->saveXML(); + return trim(preg_replace('/<\?xml.*?\?>/', '', $xmlstr)); + } + + /** + * Magic string method + * @see toString() + */ + public function __toString() + { + return $this->toString(); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/.svn/all-wcprops new file mode 100644 index 0000000..56b5863 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 74 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/database/reverse +END +SchemaParser.php +K 25 +svn:wc:ra_dav:version-url +V 91 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/database/reverse/SchemaParser.php +END +BaseSchemaParser.php +K 25 +svn:wc:ra_dav:version-url +V 95 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/database/reverse/BaseSchemaParser.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/.svn/entries new file mode 100644 index 0000000..3a338e6 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/.svn/entries @@ -0,0 +1,111 @@ +10 + +dir +2332 +http://propel.mirror.svn.symfony-project.com/tags/1.4.2/generator/classes/propel/engine/database/reverse +http://propel.mirror.svn.symfony-project.com + + + +2009-12-31T08:05:10.307912Z +1397 +francois + + + + + + + + + + + + + + +a84bc4f6-26e8-416f-aa96-3cde13879fbb + +mssql +dir + +sqlite +dir + +SchemaParser.php +file + + + + +2012-05-10T18:42:15.297552Z +e80c0975d2fa986460099e6327d22154 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +2086 + +mysql +dir + +oracle +dir + +pgsql +dir + +BaseSchemaParser.php +file + + + + +2012-05-10T18:42:15.309550Z +bd0e5b3a0778f23b4bbabf21df6b2e5b +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +4753 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/.svn/prop-base/BaseSchemaParser.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/.svn/prop-base/BaseSchemaParser.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/.svn/prop-base/BaseSchemaParser.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/.svn/prop-base/SchemaParser.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/.svn/prop-base/SchemaParser.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/.svn/prop-base/SchemaParser.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/.svn/text-base/BaseSchemaParser.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/.svn/text-base/BaseSchemaParser.php.svn-base new file mode 100644 index 0000000..f32a744 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/.svn/text-base/BaseSchemaParser.php.svn-base @@ -0,0 +1,198 @@ +. + */ + +require_once 'propel/engine/database/reverse/SchemaParser.php'; + +/** + * Base class for reverse engineering a database schema. + * + * @author Hans Lellelid + * @version $Revision$ + * @package propel.engine.database.reverse + */ +abstract class BaseSchemaParser implements SchemaParser { + + /** + * The database connection. + * @var PDO + */ + protected $dbh; + + /** + * Stack of warnings. + * + * @var array string[] + */ + protected $warnings = array(); + + /** + * GeneratorConfig object holding build properties. + * + * @var GeneratorConfig + */ + private $generatorConfig; + + /** + * Map native DB types to Propel types. + * (Override in subclasses.) + * @var array + */ + protected $nativeToPropelTypeMap; + + /** + * Map to hold reverse type mapping (initialized on-demand). + * + * @var array + */ + protected $reverseTypeMap; + + /** + * @param PDO $dbh Optional database connection + */ + public function __construct(PDO $dbh = null) + { + if ($dbh) $this->setConnection($dbh); + } + + /** + * Sets the database connection. + * + * @param PDO $dbh + */ + public function setConnection(PDO $dbh) + { + $this->dbh = $dbh; + } + + /** + * Gets the database connection. + * @return PDO + */ + public function getConnection() + { + return $this->dbh; + } + + /** + * Pushes a message onto the stack of warnings. + * + * @param string $msg The warning message. + */ + protected function warn($msg) + { + $this->warnings[] = $msg; + } + + /** + * Gets array of warning messages. + * + * @return array string[] + */ + public function getWarnings() + { + return $this->warnings; + } + + /** + * Sets the GeneratorConfig to use in the parsing. + * + * @param GeneratorConfig $config + */ + public function setGeneratorConfig(GeneratorConfig $config) + { + $this->generatorConfig = $config; + } + + /** + * Gets the GeneratorConfig option. + * + * @return GeneratorConfig + */ + public function getGeneratorConfig() + { + return $this->generatorConfig; + } + + /** + * Gets a specific propel (renamed) property from the build. + * + * @param string $name + * @return mixed + */ + public function getBuildProperty($name) + { + if ($this->generatorConfig !== null) { + return $this->generatorConfig->getBuildProperty($name); + } + return null; + } + + /** + * Gets a type mapping from native type to Propel type. + * + * @return array The mapped Propel type. + */ + abstract protected function getTypeMapping(); + + /** + * Gets a mapped Propel type for specified native type. + * + * @param string $nativeType + * @return string The mapped Propel type. + */ + protected function getMappedPropelType($nativeType) + { + if ($this->nativeToPropelTypeMap === null) { + $this->nativeToPropelTypeMap = $this->getTypeMapping(); + } + if (isset($this->nativeToPropelTypeMap[$nativeType])) { + return $this->nativeToPropelTypeMap[$nativeType]; + } + return null; + } + + /** + * Give a best guess at the native type. + * + * @param string $propelType + * @return string The native SQL type that best matches the specified Propel type. + */ + protected function getMappedNativeType($propelType) + { + if ($this->reverseTypeMap === null) { + $this->reverseTypeMap = array_flip($this->getTypeMapping()); + } + return isset($this->reverseTypeMap[$propelType]) ? $this->reverseTypeMap[$propelType] : null; + } + + /** + * Gets a new VendorInfo object for this platform with specified params. + * + * @param array $params + */ + protected function getNewVendorInfoObject(array $params) + { + $type = $this->getGeneratorConfig()->getConfiguredPlatform()->getDatabaseType(); + $vi = new VendorInfo($type); + $vi->setParameters($params); + return $vi; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/.svn/text-base/SchemaParser.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/.svn/text-base/SchemaParser.php.svn-base new file mode 100644 index 0000000..2de0612 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/.svn/text-base/SchemaParser.php.svn-base @@ -0,0 +1,71 @@ +. + */ + +/** + * Interface for reverse engineering schema parsers. + * + * @author Hans Lellelid + * @version $Revision$ + * @package propel.engine.database.reverse + */ +interface SchemaParser { + + /** + * Gets the database connection. + * @return PDO + */ + public function getConnection(); + + /** + * Sets the database connection. + * + * @param PDO $dbh + */ + public function setConnection(PDO $dbh); + + /** + * Sets the GeneratorConfig to use in the parsing. + * + * @param GeneratorConfig $config + */ + public function setGeneratorConfig(GeneratorConfig $config); + + /** + * Gets a specific propel (renamed) property from the build. + * + * @param string $name + * @return mixed + */ + public function getBuildProperty($name); + + /** + * Gets array of warning messages. + * @return array string[] + */ + public function getWarnings(); + + /** + * Parse the schema and populate passed-in Database model object. + * + * @param Database $database + */ + public function parse(Database $database); +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/BaseSchemaParser.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/BaseSchemaParser.php new file mode 100644 index 0000000..81ca637 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/BaseSchemaParser.php @@ -0,0 +1,198 @@ +. + */ + +require_once 'propel/engine/database/reverse/SchemaParser.php'; + +/** + * Base class for reverse engineering a database schema. + * + * @author Hans Lellelid + * @version $Revision: 1262 $ + * @package propel.engine.database.reverse + */ +abstract class BaseSchemaParser implements SchemaParser { + + /** + * The database connection. + * @var PDO + */ + protected $dbh; + + /** + * Stack of warnings. + * + * @var array string[] + */ + protected $warnings = array(); + + /** + * GeneratorConfig object holding build properties. + * + * @var GeneratorConfig + */ + private $generatorConfig; + + /** + * Map native DB types to Propel types. + * (Override in subclasses.) + * @var array + */ + protected $nativeToPropelTypeMap; + + /** + * Map to hold reverse type mapping (initialized on-demand). + * + * @var array + */ + protected $reverseTypeMap; + + /** + * @param PDO $dbh Optional database connection + */ + public function __construct(PDO $dbh = null) + { + if ($dbh) $this->setConnection($dbh); + } + + /** + * Sets the database connection. + * + * @param PDO $dbh + */ + public function setConnection(PDO $dbh) + { + $this->dbh = $dbh; + } + + /** + * Gets the database connection. + * @return PDO + */ + public function getConnection() + { + return $this->dbh; + } + + /** + * Pushes a message onto the stack of warnings. + * + * @param string $msg The warning message. + */ + protected function warn($msg) + { + $this->warnings[] = $msg; + } + + /** + * Gets array of warning messages. + * + * @return array string[] + */ + public function getWarnings() + { + return $this->warnings; + } + + /** + * Sets the GeneratorConfig to use in the parsing. + * + * @param GeneratorConfig $config + */ + public function setGeneratorConfig(GeneratorConfig $config) + { + $this->generatorConfig = $config; + } + + /** + * Gets the GeneratorConfig option. + * + * @return GeneratorConfig + */ + public function getGeneratorConfig() + { + return $this->generatorConfig; + } + + /** + * Gets a specific propel (renamed) property from the build. + * + * @param string $name + * @return mixed + */ + public function getBuildProperty($name) + { + if ($this->generatorConfig !== null) { + return $this->generatorConfig->getBuildProperty($name); + } + return null; + } + + /** + * Gets a type mapping from native type to Propel type. + * + * @return array The mapped Propel type. + */ + abstract protected function getTypeMapping(); + + /** + * Gets a mapped Propel type for specified native type. + * + * @param string $nativeType + * @return string The mapped Propel type. + */ + protected function getMappedPropelType($nativeType) + { + if ($this->nativeToPropelTypeMap === null) { + $this->nativeToPropelTypeMap = $this->getTypeMapping(); + } + if (isset($this->nativeToPropelTypeMap[$nativeType])) { + return $this->nativeToPropelTypeMap[$nativeType]; + } + return null; + } + + /** + * Give a best guess at the native type. + * + * @param string $propelType + * @return string The native SQL type that best matches the specified Propel type. + */ + protected function getMappedNativeType($propelType) + { + if ($this->reverseTypeMap === null) { + $this->reverseTypeMap = array_flip($this->getTypeMapping()); + } + return isset($this->reverseTypeMap[$propelType]) ? $this->reverseTypeMap[$propelType] : null; + } + + /** + * Gets a new VendorInfo object for this platform with specified params. + * + * @param array $params + */ + protected function getNewVendorInfoObject(array $params) + { + $type = $this->getGeneratorConfig()->getConfiguredPlatform()->getDatabaseType(); + $vi = new VendorInfo($type); + $vi->setParameters($params); + return $vi; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/SchemaParser.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/SchemaParser.php new file mode 100644 index 0000000..6f5fbfe --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/SchemaParser.php @@ -0,0 +1,71 @@ +. + */ + +/** + * Interface for reverse engineering schema parsers. + * + * @author Hans Lellelid + * @version $Revision: 1262 $ + * @package propel.engine.database.reverse + */ +interface SchemaParser { + + /** + * Gets the database connection. + * @return PDO + */ + public function getConnection(); + + /** + * Sets the database connection. + * + * @param PDO $dbh + */ + public function setConnection(PDO $dbh); + + /** + * Sets the GeneratorConfig to use in the parsing. + * + * @param GeneratorConfig $config + */ + public function setGeneratorConfig(GeneratorConfig $config); + + /** + * Gets a specific propel (renamed) property from the build. + * + * @param string $name + * @return mixed + */ + public function getBuildProperty($name); + + /** + * Gets array of warning messages. + * @return array string[] + */ + public function getWarnings(); + + /** + * Parse the schema and populate passed-in Database model object. + * + * @param Database $database + */ + public function parse(Database $database); +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/mssql/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/mssql/.svn/all-wcprops new file mode 100644 index 0000000..c49fd50 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/mssql/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 80 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/database/reverse/mssql +END +MssqlSchemaParser.php +K 25 +svn:wc:ra_dav:version-url +V 102 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/database/reverse/mssql/MssqlSchemaParser.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/mssql/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/mssql/.svn/entries new file mode 100644 index 0000000..37b6b51 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/mssql/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +2332 +http://propel.mirror.svn.symfony-project.com/tags/1.4.2/generator/classes/propel/engine/database/reverse/mssql +http://propel.mirror.svn.symfony-project.com + + + +2009-10-26T20:54:39.333354Z +1262 +francois + + + + + + + + + + + + + + +a84bc4f6-26e8-416f-aa96-3cde13879fbb + +MssqlSchemaParser.php +file + + + + +2012-05-10T18:42:15.161552Z +13862676fa2cfedf13bc26c0de4e5656 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +8120 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/mssql/.svn/prop-base/MssqlSchemaParser.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/mssql/.svn/prop-base/MssqlSchemaParser.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/mssql/.svn/prop-base/MssqlSchemaParser.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/mssql/.svn/text-base/MssqlSchemaParser.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/mssql/.svn/text-base/MssqlSchemaParser.php.svn-base new file mode 100644 index 0000000..1f6391e --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/mssql/.svn/text-base/MssqlSchemaParser.php.svn-base @@ -0,0 +1,248 @@ +. + */ + +require_once 'propel/engine/database/reverse/BaseSchemaParser.php'; + +/** + * Microsoft SQL Server database schema parser. + * + * @author Hans Lellelid + * @version $Revision$ + * @package propel.engine.database.reverse.mssql + */ +class MssqlSchemaParser extends BaseSchemaParser { + + /** + * Map MSSQL native types to Propel types. + * @var array + */ + private static $mssqlTypeMap = array( + "binary" => CreoleTypes::BINARY, + "bit" => PropelTypes::BOOLEAN, + "char" => PropelTypes::CHAR, + "datetime" => PropelTypes::TIMESTAMP, + "decimal() identity" => PropelTypes::DECIMAL, + "decimal" => PropelTypes::DECIMAL, + "image" => PropelTypes::LONGVARBINARY, + "int" => PropelTypes::INTEGER, + "int identity" => PropelTypes::INTEGER, + "integer" => PropelTypes::INTEGER, + "money" => PropelTypes::DECIMAL, + "nchar" => PropelTypes::CHAR, + "ntext" => PropelTypes::LONGVARCHAR, + "numeric() identity" => PropelTypes::NUMERIC, + "numeric" => PropelTypes::NUMERIC, + "nvarchar" => PropelTypes::VARCHAR, + "real" => PropelTypes::REAL, + "float" => PropelTypes::FLOAT, + "smalldatetime" => PropelTypes::TIMESTAMP, + "smallint" => PropelTypes::SMALLINT, + "smallint identity" => PropelTypes::SMALLINT, + "smallmoney" => PropelTypes::DECIMAL, + "sysname" => PropelTypes::VARCHAR, + "text" => PropelTypes::LONGVARCHAR, + "timestamp" => PropelTypes::BINARY, + "tinyint identity" => PropelTypes::TINYINT, + "tinyint" => PropelTypes::TINYINT, + "uniqueidentifier" => PropelTypes::CHAR, + "varbinary" => PropelTypes::VARBINARY, + "varchar" => PropelTypes::VARCHAR, + "uniqueidentifier" => PropelTypes::CHAR, + // SQL Server 2000 only + "bigint identity" => PropelTypes::BIGINT, + "bigint" => PropelTypes::BIGINT, + "sql_variant" => PropelTypes::VARCHAR, + ); + + /** + * Gets a type mapping from native types to Propel types + * + * @return array + */ + protected function getTypeMapping() + { + return self::$mssqlTypeMap; + } + + /** + * + */ + public function parse(Database $database) + { + $stmt = $this->dbh->query("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME <> 'dtproperties'"); + + // First load the tables (important that this happen before filling out details of tables) + $tables = array(); + while ($row = $stmt->fetch(PDO::FETCH_NUM)) { + $name = $row[0]; + $table = new Table($name); + $database->addTable($table); + $tables[] = $table; + } + + // Now populate only columns. + foreach ($tables as $table) { + $this->addColumns($table); + } + + // Now add indexes and constraints. + foreach ($tables as $table) { + $this->addForeignKeys($table); + $this->addIndexes($table); + $this->addPrimaryKey($table); + } + + } + + + /** + * Adds Columns to the specified table. + * + * @param Table $table The Table model class to add columns to. + */ + protected function addColumns(Table $table) + { + $stmt = $this->dbh->query("sp_columns '" . $table->getName() . "'"); + + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + + $name = $row['COLUMN_NAME']; + $type = $row['TYPE_NAME']; + $size = $row['LENGTH']; + $is_nullable = $row['NULLABLE']; + $default = $row['COLUMN_DEF']; + $precision = $row['PRECISION']; + $scale = $row['SCALE']; + $autoincrement = false; + if (strtolower($type) == "int identity") { + $autoincrement = true; + } + + $propelType = $this->getMappedPropelType($type); + if (!$propelType) { + $propelType = Column::DEFAULT_TYPE; + $this->warn("Column [" . $table->getName() . "." . $name. "] has a column type (".$type.") that Propel does not support."); + } + + $column = new Column($name); + $column->setTable($table); + $column->setDomainForType($propelType); + // We may want to provide an option to include this: + // $column->getDomain()->replaceSqlType($type); + $column->getDomain()->replaceSize($size); + $column->getDomain()->replaceScale($scale); + if ($default !== null) { + $column->getDomain()->setDefaultValue(new ColumnDefaultValue($default, ColumnDefaultValue::TYPE_VALUE)); + } + $column->setAutoIncrement($autoincrement); + $column->setNotNull(!$is_nullable); + + $table->addColumn($column); + } + + + } // addColumn() + + /** + * Load foreign keys for this table. + */ + protected function addForeignKeys(Table $table) + { + $database = $table->getDatabase(); + + $stmt = $this->dbh->query("SELECT ccu1.TABLE_NAME, ccu1.COLUMN_NAME, ccu2.TABLE_NAME AS FK_TABLE_NAME, ccu2.COLUMN_NAME AS FK_COLUMN_NAME + FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE ccu1 INNER JOIN + INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc1 ON tc1.CONSTRAINT_NAME = ccu1.CONSTRAINT_NAME AND + CONSTRAINT_TYPE = 'Foreign Key' INNER JOIN + INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS rc1 ON rc1.CONSTRAINT_NAME = tc1.CONSTRAINT_NAME INNER JOIN + INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE ccu2 ON ccu2.CONSTRAINT_NAME = rc1.UNIQUE_CONSTRAINT_NAME + WHERE (ccu1.table_name = '".$table->getName()."')"); + + $row = $stmt->fetch(PDO::FETCH_NUM); + + $foreignKeys = array(); // local store to avoid duplicates + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + + $lcol = $row['COLUMN_NAME']; + $ftbl = $row['FK_TABLE_NAME']; + $fcol = $row['FK_COLUMN_NAME']; + + + $foreignTable = $database->getTable($ftbl); + $foreignColumn = $foreignTable->getColumn($fcol); + $localColumn = $table->getColumn($lcol); + + if (!isset($foreignKeys[$name])) { + $fk = new ForeignKey($name); + $fk->setForeignTableName($foreignTable->getName()); + //$fk->setOnDelete($fkactions['ON DELETE']); + //$fk->setOnUpdate($fkactions['ON UPDATE']); + $table->addForeignKey($fk); + $foreignKeys[$name] = $fk; + } + $foreignKeys[$name]->addReference($localColumn, $foreignColumn); + } + + } + + /** + * Load indexes for this table + */ + protected function addIndexes(Table $table) + { + $stmt = $this->dbh->query("sp_indexes_rowset " . $table->getName()); + + $indexes = array(); + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $colName = $row["COLUMN_NAME"]; + $name = $row['INDEX_NAME']; + + // FIXME -- Add UNIQUE support + if (!isset($indexes[$name])) { + $indexes[$name] = new Index($name); + $table->addIndex($indexes[$name]); + } + + $indexes[$name]->addColumn($table->getColumn($colName)); + } + } + + /** + * Loads the primary key for this table. + */ + protected function addPrimaryKey(Table $table) + { + $stmt = $this->dbh->query("SELECT COLUMN_NAME + FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS + INNER JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE ON + INFORMATION_SCHEMA.TABLE_CONSTRAINTS.CONSTRAINT_NAME = INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE.constraint_name + WHERE (INFORMATION_SCHEMA.TABLE_CONSTRAINTS.CONSTRAINT_TYPE = 'PRIMARY KEY') AND + (INFORMATION_SCHEMA.TABLE_CONSTRAINTS.TABLE_NAME = '".$table->getName()."')"); + + // Loop through the returned results, grouping the same key_name together + // adding each column for that key. + while ($row = $stmt->fetch(PDO::FETCH_NUM)) { + $name = $row[0]; + $table->getColumn($name)->setPrimaryKey(true); + } + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/mssql/MssqlSchemaParser.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/mssql/MssqlSchemaParser.php new file mode 100644 index 0000000..9cab29a --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/mssql/MssqlSchemaParser.php @@ -0,0 +1,248 @@ +. + */ + +require_once 'propel/engine/database/reverse/BaseSchemaParser.php'; + +/** + * Microsoft SQL Server database schema parser. + * + * @author Hans Lellelid + * @version $Revision: 1262 $ + * @package propel.engine.database.reverse.mssql + */ +class MssqlSchemaParser extends BaseSchemaParser { + + /** + * Map MSSQL native types to Propel types. + * @var array + */ + private static $mssqlTypeMap = array( + "binary" => CreoleTypes::BINARY, + "bit" => PropelTypes::BOOLEAN, + "char" => PropelTypes::CHAR, + "datetime" => PropelTypes::TIMESTAMP, + "decimal() identity" => PropelTypes::DECIMAL, + "decimal" => PropelTypes::DECIMAL, + "image" => PropelTypes::LONGVARBINARY, + "int" => PropelTypes::INTEGER, + "int identity" => PropelTypes::INTEGER, + "integer" => PropelTypes::INTEGER, + "money" => PropelTypes::DECIMAL, + "nchar" => PropelTypes::CHAR, + "ntext" => PropelTypes::LONGVARCHAR, + "numeric() identity" => PropelTypes::NUMERIC, + "numeric" => PropelTypes::NUMERIC, + "nvarchar" => PropelTypes::VARCHAR, + "real" => PropelTypes::REAL, + "float" => PropelTypes::FLOAT, + "smalldatetime" => PropelTypes::TIMESTAMP, + "smallint" => PropelTypes::SMALLINT, + "smallint identity" => PropelTypes::SMALLINT, + "smallmoney" => PropelTypes::DECIMAL, + "sysname" => PropelTypes::VARCHAR, + "text" => PropelTypes::LONGVARCHAR, + "timestamp" => PropelTypes::BINARY, + "tinyint identity" => PropelTypes::TINYINT, + "tinyint" => PropelTypes::TINYINT, + "uniqueidentifier" => PropelTypes::CHAR, + "varbinary" => PropelTypes::VARBINARY, + "varchar" => PropelTypes::VARCHAR, + "uniqueidentifier" => PropelTypes::CHAR, + // SQL Server 2000 only + "bigint identity" => PropelTypes::BIGINT, + "bigint" => PropelTypes::BIGINT, + "sql_variant" => PropelTypes::VARCHAR, + ); + + /** + * Gets a type mapping from native types to Propel types + * + * @return array + */ + protected function getTypeMapping() + { + return self::$mssqlTypeMap; + } + + /** + * + */ + public function parse(Database $database) + { + $stmt = $this->dbh->query("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME <> 'dtproperties'"); + + // First load the tables (important that this happen before filling out details of tables) + $tables = array(); + while ($row = $stmt->fetch(PDO::FETCH_NUM)) { + $name = $row[0]; + $table = new Table($name); + $database->addTable($table); + $tables[] = $table; + } + + // Now populate only columns. + foreach ($tables as $table) { + $this->addColumns($table); + } + + // Now add indexes and constraints. + foreach ($tables as $table) { + $this->addForeignKeys($table); + $this->addIndexes($table); + $this->addPrimaryKey($table); + } + + } + + + /** + * Adds Columns to the specified table. + * + * @param Table $table The Table model class to add columns to. + */ + protected function addColumns(Table $table) + { + $stmt = $this->dbh->query("sp_columns '" . $table->getName() . "'"); + + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + + $name = $row['COLUMN_NAME']; + $type = $row['TYPE_NAME']; + $size = $row['LENGTH']; + $is_nullable = $row['NULLABLE']; + $default = $row['COLUMN_DEF']; + $precision = $row['PRECISION']; + $scale = $row['SCALE']; + $autoincrement = false; + if (strtolower($type) == "int identity") { + $autoincrement = true; + } + + $propelType = $this->getMappedPropelType($type); + if (!$propelType) { + $propelType = Column::DEFAULT_TYPE; + $this->warn("Column [" . $table->getName() . "." . $name. "] has a column type (".$type.") that Propel does not support."); + } + + $column = new Column($name); + $column->setTable($table); + $column->setDomainForType($propelType); + // We may want to provide an option to include this: + // $column->getDomain()->replaceSqlType($type); + $column->getDomain()->replaceSize($size); + $column->getDomain()->replaceScale($scale); + if ($default !== null) { + $column->getDomain()->setDefaultValue(new ColumnDefaultValue($default, ColumnDefaultValue::TYPE_VALUE)); + } + $column->setAutoIncrement($autoincrement); + $column->setNotNull(!$is_nullable); + + $table->addColumn($column); + } + + + } // addColumn() + + /** + * Load foreign keys for this table. + */ + protected function addForeignKeys(Table $table) + { + $database = $table->getDatabase(); + + $stmt = $this->dbh->query("SELECT ccu1.TABLE_NAME, ccu1.COLUMN_NAME, ccu2.TABLE_NAME AS FK_TABLE_NAME, ccu2.COLUMN_NAME AS FK_COLUMN_NAME + FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE ccu1 INNER JOIN + INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc1 ON tc1.CONSTRAINT_NAME = ccu1.CONSTRAINT_NAME AND + CONSTRAINT_TYPE = 'Foreign Key' INNER JOIN + INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS rc1 ON rc1.CONSTRAINT_NAME = tc1.CONSTRAINT_NAME INNER JOIN + INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE ccu2 ON ccu2.CONSTRAINT_NAME = rc1.UNIQUE_CONSTRAINT_NAME + WHERE (ccu1.table_name = '".$table->getName()."')"); + + $row = $stmt->fetch(PDO::FETCH_NUM); + + $foreignKeys = array(); // local store to avoid duplicates + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + + $lcol = $row['COLUMN_NAME']; + $ftbl = $row['FK_TABLE_NAME']; + $fcol = $row['FK_COLUMN_NAME']; + + + $foreignTable = $database->getTable($ftbl); + $foreignColumn = $foreignTable->getColumn($fcol); + $localColumn = $table->getColumn($lcol); + + if (!isset($foreignKeys[$name])) { + $fk = new ForeignKey($name); + $fk->setForeignTableName($foreignTable->getName()); + //$fk->setOnDelete($fkactions['ON DELETE']); + //$fk->setOnUpdate($fkactions['ON UPDATE']); + $table->addForeignKey($fk); + $foreignKeys[$name] = $fk; + } + $foreignKeys[$name]->addReference($localColumn, $foreignColumn); + } + + } + + /** + * Load indexes for this table + */ + protected function addIndexes(Table $table) + { + $stmt = $this->dbh->query("sp_indexes_rowset " . $table->getName()); + + $indexes = array(); + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $colName = $row["COLUMN_NAME"]; + $name = $row['INDEX_NAME']; + + // FIXME -- Add UNIQUE support + if (!isset($indexes[$name])) { + $indexes[$name] = new Index($name); + $table->addIndex($indexes[$name]); + } + + $indexes[$name]->addColumn($table->getColumn($colName)); + } + } + + /** + * Loads the primary key for this table. + */ + protected function addPrimaryKey(Table $table) + { + $stmt = $this->dbh->query("SELECT COLUMN_NAME + FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS + INNER JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE ON + INFORMATION_SCHEMA.TABLE_CONSTRAINTS.CONSTRAINT_NAME = INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE.constraint_name + WHERE (INFORMATION_SCHEMA.TABLE_CONSTRAINTS.CONSTRAINT_TYPE = 'PRIMARY KEY') AND + (INFORMATION_SCHEMA.TABLE_CONSTRAINTS.TABLE_NAME = '".$table->getName()."')"); + + // Loop through the returned results, grouping the same key_name together + // adding each column for that key. + while ($row = $stmt->fetch(PDO::FETCH_NUM)) { + $name = $row[0]; + $table->getColumn($name)->setPrimaryKey(true); + } + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/mysql/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/mysql/.svn/all-wcprops new file mode 100644 index 0000000..6877892 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/mysql/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 80 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/database/reverse/mysql +END +MysqlSchemaParser.php +K 25 +svn:wc:ra_dav:version-url +V 102 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/database/reverse/mysql/MysqlSchemaParser.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/mysql/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/mysql/.svn/entries new file mode 100644 index 0000000..e7221a7 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/mysql/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +2332 +http://propel.mirror.svn.symfony-project.com/tags/1.4.2/generator/classes/propel/engine/database/reverse/mysql +http://propel.mirror.svn.symfony-project.com + + + +2009-10-26T20:54:39.333354Z +1262 +francois + + + + + + + + + + + + + + +a84bc4f6-26e8-416f-aa96-3cde13879fbb + +MysqlSchemaParser.php +file + + + + +2012-05-10T18:42:15.217551Z +6154c88ea46b43d6bed384f603b4b5e7 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +9862 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/mysql/.svn/prop-base/MysqlSchemaParser.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/mysql/.svn/prop-base/MysqlSchemaParser.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/mysql/.svn/prop-base/MysqlSchemaParser.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/mysql/.svn/text-base/MysqlSchemaParser.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/mysql/.svn/text-base/MysqlSchemaParser.php.svn-base new file mode 100644 index 0000000..d9d4f29 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/mysql/.svn/text-base/MysqlSchemaParser.php.svn-base @@ -0,0 +1,337 @@ +. + */ + +require_once 'propel/engine/database/reverse/BaseSchemaParser.php'; + +/** + * Mysql database schema parser. + * + * @author Hans Lellelid + * @version $Revision$ + * @package propel.engine.database.reverse.mysql + */ +class MysqlSchemaParser extends BaseSchemaParser { + + /** + * @var boolean + */ + private $addVendorInfo = false; + + /** + * Map MySQL native types to Propel types. + * @var array + */ + private static $mysqlTypeMap = array( + 'tinyint' => PropelTypes::TINYINT, + 'smallint' => PropelTypes::SMALLINT, + 'mediumint' => PropelTypes::SMALLINT, + 'int' => PropelTypes::INTEGER, + 'integer' => PropelTypes::INTEGER, + 'bigint' => PropelTypes::BIGINT, + 'int24' => PropelTypes::BIGINT, + 'real' => PropelTypes::REAL, + 'float' => PropelTypes::FLOAT, + 'decimal' => PropelTypes::DECIMAL, + 'numeric' => PropelTypes::NUMERIC, + 'double' => PropelTypes::DOUBLE, + 'char' => PropelTypes::CHAR, + 'varchar' => PropelTypes::VARCHAR, + 'date' => PropelTypes::DATE, + 'time' => PropelTypes::TIME, + 'year' => PropelTypes::INTEGER, + 'datetime' => PropelTypes::TIMESTAMP, + 'timestamp' => PropelTypes::TIMESTAMP, + 'tinyblob' => PropelTypes::BINARY, + 'blob' => PropelTypes::BLOB, + 'mediumblob' => PropelTypes::BLOB, + 'longblob' => PropelTypes::BLOB, + 'longtext' => PropelTypes::CLOB, + 'tinytext' => PropelTypes::VARCHAR, + 'mediumtext' => PropelTypes::LONGVARCHAR, + 'text' => PropelTypes::LONGVARCHAR, + 'enum' => PropelTypes::CHAR, + 'set' => PropelTypes::CHAR, + ); + + /** + * Gets a type mapping from native types to Propel types + * + * @return array + */ + protected function getTypeMapping() + { + return self::$mysqlTypeMap; + } + + /** + * + */ + public function parse(Database $database) + { + $this->addVendorInfo = $this->getGeneratorConfig()->getBuildProperty('addVendorInfo'); + + $stmt = $this->dbh->query("SHOW TABLES"); + + // First load the tables (important that this happen before filling out details of tables) + $tables = array(); + while ($row = $stmt->fetch(PDO::FETCH_NUM)) { + $name = $row[0]; + $table = new Table($name); + $database->addTable($table); + $tables[] = $table; + } + + // Now populate only columns. + foreach ($tables as $table) { + $this->addColumns($table); + } + + // Now add indexes and constraints. + foreach ($tables as $table) { + $this->addForeignKeys($table); + $this->addIndexes($table); + $this->addPrimaryKey($table); + if ($this->addVendorInfo) { + $this->addTableVendorInfo($table); + } + } + } + + + /** + * Adds Columns to the specified table. + * + * @param Table $table The Table model class to add columns to. + */ + protected function addColumns(Table $table) + { + $stmt = $this->dbh->query("SHOW COLUMNS FROM `" . $table->getName() . "`"); + + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + + $name = $row['Field']; + $is_nullable = ($row['Null'] == 'YES'); + $autoincrement = (strpos($row['Extra'], 'auto_increment') !== false); + $size = null; + $precision = null; + $scale = null; + + if (preg_match('/^(\w+)[\(]?([\d,]*)[\)]?( |$)/', $row['Type'], $matches)) { + // colname[1] size/precision[2] + $nativeType = $matches[1]; + if ($matches[2]) { + if ( ($cpos = strpos($matches[2], ',')) !== false) { + $size = (int) substr($matches[2], 0, $cpos); + $precision = $size; + $scale = (int) substr($matches[2], $cpos + 1); + } else { + $size = (int) $matches[2]; + } + } + } elseif (preg_match('/^(\w+)\(/', $row['Type'], $matches)) { + $nativeType = $matches[1]; + } else { + $nativeType = $row['Type']; + } + + //BLOBs can't have any default values in MySQL + $default = preg_match('~blob|text~', $nativeType) ? null : $row['Default']; + + $propelType = $this->getMappedPropelType($nativeType); + if (!$propelType) { + $propelType = Column::DEFAULT_TYPE; + $this->warn("Column [" . $table->getName() . "." . $name. "] has a column type (".$nativeType.") that Propel does not support."); + } + + $column = new Column($name); + $column->setTable($table); + $column->setDomainForType($propelType); + // We may want to provide an option to include this: + // $column->getDomain()->replaceSqlType($type); + $column->getDomain()->replaceSize($size); + $column->getDomain()->replaceScale($scale); + if ($default !== null) { + $column->getDomain()->setDefaultValue(new ColumnDefaultValue($default, ColumnDefaultValue::TYPE_VALUE)); + } + $column->setAutoIncrement($autoincrement); + $column->setNotNull(!$is_nullable); + + if ($this->addVendorInfo) { + $vi = $this->getNewVendorInfoObject($row); + $column->addVendorInfo($vi); + } + + $table->addColumn($column); + } + + + } // addColumn() + + /** + * Load foreign keys for this table. + */ + protected function addForeignKeys(Table $table) + { + $database = $table->getDatabase(); + + $stmt = $this->dbh->query("SHOW CREATE TABLE `" . $table->getName(). "`"); + $row = $stmt->fetch(PDO::FETCH_NUM); + + $foreignKeys = array(); // local store to avoid duplicates + + // Get the information on all the foreign keys + $regEx = '/CONSTRAINT `([^`]+)` FOREIGN KEY \((.+)\) REFERENCES `([^`]*)` \((.+)\)(.*)/'; + if (preg_match_all($regEx,$row[1],$matches)) { + $tmpArray = array_keys($matches[0]); + foreach ($tmpArray as $curKey) { + $name = $matches[1][$curKey]; + $rawlcol = $matches[2][$curKey]; + $ftbl = $matches[3][$curKey]; + $rawfcol = $matches[4][$curKey]; + $fkey = $matches[5][$curKey]; + + $lcols = array(); + foreach(preg_split('/`, `/', $rawlcol) as $piece) { + $lcols[] = trim($piece, '` '); + } + + $fcols = array(); + foreach(preg_split('/`, `/', $rawfcol) as $piece) { + $fcols[] = trim($piece, '` '); + } + + //typical for mysql is RESTRICT + $fkactions = array( + 'ON DELETE' => ForeignKey::RESTRICT, + 'ON UPDATE' => ForeignKey::RESTRICT, + ); + + if ($fkey) { + //split foreign key information -> search for ON DELETE and afterwords for ON UPDATE action + foreach (array_keys($fkactions) as $fkaction) { + $result = NULL; + preg_match('/' . $fkaction . ' (' . ForeignKey::CASCADE . '|' . ForeignKey::SETNULL . ')/', $fkey, $result); + if ($result && is_array($result) && isset($result[1])) { + $fkactions[$fkaction] = $result[1]; + } + } + } + + $localColumns = array(); + $foreignColumns = array(); + + $foreignTable = $database->getTable($ftbl); + + foreach($fcols as $fcol) { + $foreignColumns[] = $foreignTable->getColumn($fcol); + } + foreach($lcols as $lcol) { + $localColumns[] = $table->getColumn($lcol); + } + + if (!isset($foreignKeys[$name])) { + $fk = new ForeignKey($name); + $fk->setForeignTableName($foreignTable->getName()); + $fk->setOnDelete($fkactions['ON DELETE']); + $fk->setOnUpdate($fkactions['ON UPDATE']); + $table->addForeignKey($fk); + $foreignKeys[$name] = $fk; + } + + for($i=0; $i < count($localColumns); $i++) { + $foreignKeys[$name]->addReference($localColumns[$i], $foreignColumns[$i]); + } + + } + + } + + } + + /** + * Load indexes for this table + */ + protected function addIndexes(Table $table) + { + $stmt = $this->dbh->query("SHOW INDEX FROM `" . $table->getName() . "`"); + + // Loop through the returned results, grouping the same key_name together + // adding each column for that key. + + $indexes = array(); + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $colName = $row["Column_name"]; + $name = $row["Key_name"]; + + if ($name == "PRIMARY") { + continue; + } + + if (!isset($indexes[$name])) { + $isUnique = ($row["Non_unique"] == 0); + if ($isUnique) { + $indexes[$name] = new Unique($name); + } else { + $indexes[$name] = new Index($name); + } + if ($this->addVendorInfo) { + $vi = $this->getNewVendorInfoObject($row); + $indexes[$name]->addVendorInfo($vi); + } + $table->addIndex($indexes[$name]); + } + + $indexes[$name]->addColumn($table->getColumn($colName)); + } + } + + /** + * Loads the primary key for this table. + */ + protected function addPrimaryKey(Table $table) + { + $stmt = $this->dbh->query("SHOW KEYS FROM `" . $table->getName() . "`"); + + // Loop through the returned results, grouping the same key_name together + // adding each column for that key. + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + // Skip any non-primary keys. + if ($row['Key_name'] !== 'PRIMARY') { + continue; + } + $name = $row["Column_name"]; + $table->getColumn($name)->setPrimaryKey(true); + } + } + + /** + * Adds vendor-specific info for table. + * + * @param Table $table + */ + protected function addTableVendorInfo(Table $table) + { + $stmt = $this->dbh->query("SHOW TABLE STATUS LIKE '" . $table->getName() . "'"); + $row = $stmt->fetch(PDO::FETCH_ASSOC); + $vi = $this->getNewVendorInfoObject($row); + $table->addVendorInfo($vi); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/mysql/MysqlSchemaParser.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/mysql/MysqlSchemaParser.php new file mode 100644 index 0000000..e7991b6 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/mysql/MysqlSchemaParser.php @@ -0,0 +1,337 @@ +. + */ + +require_once 'propel/engine/database/reverse/BaseSchemaParser.php'; + +/** + * Mysql database schema parser. + * + * @author Hans Lellelid + * @version $Revision: 1262 $ + * @package propel.engine.database.reverse.mysql + */ +class MysqlSchemaParser extends BaseSchemaParser { + + /** + * @var boolean + */ + private $addVendorInfo = false; + + /** + * Map MySQL native types to Propel types. + * @var array + */ + private static $mysqlTypeMap = array( + 'tinyint' => PropelTypes::TINYINT, + 'smallint' => PropelTypes::SMALLINT, + 'mediumint' => PropelTypes::SMALLINT, + 'int' => PropelTypes::INTEGER, + 'integer' => PropelTypes::INTEGER, + 'bigint' => PropelTypes::BIGINT, + 'int24' => PropelTypes::BIGINT, + 'real' => PropelTypes::REAL, + 'float' => PropelTypes::FLOAT, + 'decimal' => PropelTypes::DECIMAL, + 'numeric' => PropelTypes::NUMERIC, + 'double' => PropelTypes::DOUBLE, + 'char' => PropelTypes::CHAR, + 'varchar' => PropelTypes::VARCHAR, + 'date' => PropelTypes::DATE, + 'time' => PropelTypes::TIME, + 'year' => PropelTypes::INTEGER, + 'datetime' => PropelTypes::TIMESTAMP, + 'timestamp' => PropelTypes::TIMESTAMP, + 'tinyblob' => PropelTypes::BINARY, + 'blob' => PropelTypes::BLOB, + 'mediumblob' => PropelTypes::BLOB, + 'longblob' => PropelTypes::BLOB, + 'longtext' => PropelTypes::CLOB, + 'tinytext' => PropelTypes::VARCHAR, + 'mediumtext' => PropelTypes::LONGVARCHAR, + 'text' => PropelTypes::LONGVARCHAR, + 'enum' => PropelTypes::CHAR, + 'set' => PropelTypes::CHAR, + ); + + /** + * Gets a type mapping from native types to Propel types + * + * @return array + */ + protected function getTypeMapping() + { + return self::$mysqlTypeMap; + } + + /** + * + */ + public function parse(Database $database) + { + $this->addVendorInfo = $this->getGeneratorConfig()->getBuildProperty('addVendorInfo'); + + $stmt = $this->dbh->query("SHOW TABLES"); + + // First load the tables (important that this happen before filling out details of tables) + $tables = array(); + while ($row = $stmt->fetch(PDO::FETCH_NUM)) { + $name = $row[0]; + $table = new Table($name); + $database->addTable($table); + $tables[] = $table; + } + + // Now populate only columns. + foreach ($tables as $table) { + $this->addColumns($table); + } + + // Now add indexes and constraints. + foreach ($tables as $table) { + $this->addForeignKeys($table); + $this->addIndexes($table); + $this->addPrimaryKey($table); + if ($this->addVendorInfo) { + $this->addTableVendorInfo($table); + } + } + } + + + /** + * Adds Columns to the specified table. + * + * @param Table $table The Table model class to add columns to. + */ + protected function addColumns(Table $table) + { + $stmt = $this->dbh->query("SHOW COLUMNS FROM `" . $table->getName() . "`"); + + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + + $name = $row['Field']; + $is_nullable = ($row['Null'] == 'YES'); + $autoincrement = (strpos($row['Extra'], 'auto_increment') !== false); + $size = null; + $precision = null; + $scale = null; + + if (preg_match('/^(\w+)[\(]?([\d,]*)[\)]?( |$)/', $row['Type'], $matches)) { + // colname[1] size/precision[2] + $nativeType = $matches[1]; + if ($matches[2]) { + if ( ($cpos = strpos($matches[2], ',')) !== false) { + $size = (int) substr($matches[2], 0, $cpos); + $precision = $size; + $scale = (int) substr($matches[2], $cpos + 1); + } else { + $size = (int) $matches[2]; + } + } + } elseif (preg_match('/^(\w+)\(/', $row['Type'], $matches)) { + $nativeType = $matches[1]; + } else { + $nativeType = $row['Type']; + } + + //BLOBs can't have any default values in MySQL + $default = preg_match('~blob|text~', $nativeType) ? null : $row['Default']; + + $propelType = $this->getMappedPropelType($nativeType); + if (!$propelType) { + $propelType = Column::DEFAULT_TYPE; + $this->warn("Column [" . $table->getName() . "." . $name. "] has a column type (".$nativeType.") that Propel does not support."); + } + + $column = new Column($name); + $column->setTable($table); + $column->setDomainForType($propelType); + // We may want to provide an option to include this: + // $column->getDomain()->replaceSqlType($type); + $column->getDomain()->replaceSize($size); + $column->getDomain()->replaceScale($scale); + if ($default !== null) { + $column->getDomain()->setDefaultValue(new ColumnDefaultValue($default, ColumnDefaultValue::TYPE_VALUE)); + } + $column->setAutoIncrement($autoincrement); + $column->setNotNull(!$is_nullable); + + if ($this->addVendorInfo) { + $vi = $this->getNewVendorInfoObject($row); + $column->addVendorInfo($vi); + } + + $table->addColumn($column); + } + + + } // addColumn() + + /** + * Load foreign keys for this table. + */ + protected function addForeignKeys(Table $table) + { + $database = $table->getDatabase(); + + $stmt = $this->dbh->query("SHOW CREATE TABLE `" . $table->getName(). "`"); + $row = $stmt->fetch(PDO::FETCH_NUM); + + $foreignKeys = array(); // local store to avoid duplicates + + // Get the information on all the foreign keys + $regEx = '/CONSTRAINT `([^`]+)` FOREIGN KEY \((.+)\) REFERENCES `([^`]*)` \((.+)\)(.*)/'; + if (preg_match_all($regEx,$row[1],$matches)) { + $tmpArray = array_keys($matches[0]); + foreach ($tmpArray as $curKey) { + $name = $matches[1][$curKey]; + $rawlcol = $matches[2][$curKey]; + $ftbl = $matches[3][$curKey]; + $rawfcol = $matches[4][$curKey]; + $fkey = $matches[5][$curKey]; + + $lcols = array(); + foreach(preg_split('/`, `/', $rawlcol) as $piece) { + $lcols[] = trim($piece, '` '); + } + + $fcols = array(); + foreach(preg_split('/`, `/', $rawfcol) as $piece) { + $fcols[] = trim($piece, '` '); + } + + //typical for mysql is RESTRICT + $fkactions = array( + 'ON DELETE' => ForeignKey::RESTRICT, + 'ON UPDATE' => ForeignKey::RESTRICT, + ); + + if ($fkey) { + //split foreign key information -> search for ON DELETE and afterwords for ON UPDATE action + foreach (array_keys($fkactions) as $fkaction) { + $result = NULL; + preg_match('/' . $fkaction . ' (' . ForeignKey::CASCADE . '|' . ForeignKey::SETNULL . ')/', $fkey, $result); + if ($result && is_array($result) && isset($result[1])) { + $fkactions[$fkaction] = $result[1]; + } + } + } + + $localColumns = array(); + $foreignColumns = array(); + + $foreignTable = $database->getTable($ftbl); + + foreach($fcols as $fcol) { + $foreignColumns[] = $foreignTable->getColumn($fcol); + } + foreach($lcols as $lcol) { + $localColumns[] = $table->getColumn($lcol); + } + + if (!isset($foreignKeys[$name])) { + $fk = new ForeignKey($name); + $fk->setForeignTableName($foreignTable->getName()); + $fk->setOnDelete($fkactions['ON DELETE']); + $fk->setOnUpdate($fkactions['ON UPDATE']); + $table->addForeignKey($fk); + $foreignKeys[$name] = $fk; + } + + for($i=0; $i < count($localColumns); $i++) { + $foreignKeys[$name]->addReference($localColumns[$i], $foreignColumns[$i]); + } + + } + + } + + } + + /** + * Load indexes for this table + */ + protected function addIndexes(Table $table) + { + $stmt = $this->dbh->query("SHOW INDEX FROM `" . $table->getName() . "`"); + + // Loop through the returned results, grouping the same key_name together + // adding each column for that key. + + $indexes = array(); + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $colName = $row["Column_name"]; + $name = $row["Key_name"]; + + if ($name == "PRIMARY") { + continue; + } + + if (!isset($indexes[$name])) { + $isUnique = ($row["Non_unique"] == 0); + if ($isUnique) { + $indexes[$name] = new Unique($name); + } else { + $indexes[$name] = new Index($name); + } + if ($this->addVendorInfo) { + $vi = $this->getNewVendorInfoObject($row); + $indexes[$name]->addVendorInfo($vi); + } + $table->addIndex($indexes[$name]); + } + + $indexes[$name]->addColumn($table->getColumn($colName)); + } + } + + /** + * Loads the primary key for this table. + */ + protected function addPrimaryKey(Table $table) + { + $stmt = $this->dbh->query("SHOW KEYS FROM `" . $table->getName() . "`"); + + // Loop through the returned results, grouping the same key_name together + // adding each column for that key. + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + // Skip any non-primary keys. + if ($row['Key_name'] !== 'PRIMARY') { + continue; + } + $name = $row["Column_name"]; + $table->getColumn($name)->setPrimaryKey(true); + } + } + + /** + * Adds vendor-specific info for table. + * + * @param Table $table + */ + protected function addTableVendorInfo(Table $table) + { + $stmt = $this->dbh->query("SHOW TABLE STATUS LIKE '" . $table->getName() . "'"); + $row = $stmt->fetch(PDO::FETCH_ASSOC); + $vi = $this->getNewVendorInfoObject($row); + $table->addVendorInfo($vi); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/oracle/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/oracle/.svn/all-wcprops new file mode 100644 index 0000000..26e7b6d --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/oracle/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 81 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/database/reverse/oracle +END +OracleSchemaParser.php +K 25 +svn:wc:ra_dav:version-url +V 104 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/database/reverse/oracle/OracleSchemaParser.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/oracle/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/oracle/.svn/entries new file mode 100644 index 0000000..7f0c9d7 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/oracle/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +2332 +http://propel.mirror.svn.symfony-project.com/tags/1.4.2/generator/classes/propel/engine/database/reverse/oracle +http://propel.mirror.svn.symfony-project.com + + + +2009-10-26T20:54:39.333354Z +1262 +francois + + + + + + + + + + + + + + +a84bc4f6-26e8-416f-aa96-3cde13879fbb + +OracleSchemaParser.php +file + + + + +2012-05-10T18:42:15.249548Z +a793f5718206ba3ddd2a0e572d3df2b2 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +8076 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/oracle/.svn/prop-base/OracleSchemaParser.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/oracle/.svn/prop-base/OracleSchemaParser.php.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/oracle/.svn/prop-base/OracleSchemaParser.php.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/oracle/.svn/text-base/OracleSchemaParser.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/oracle/.svn/text-base/OracleSchemaParser.php.svn-base new file mode 100644 index 0000000..d2e2f68 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/oracle/.svn/text-base/OracleSchemaParser.php.svn-base @@ -0,0 +1,230 @@ +. + */ + +require_once 'propel/engine/database/reverse/BaseSchemaParser.php'; + +/** + * Oracle database schema parser. + * + * @author Hans Lellelid + * @author Guillermo Gutierrez (Adaptation) + * @version $Revision: 1010 $ + * @package propel.engine.database.reverse.oracle + */ +class OracleSchemaParser extends BaseSchemaParser { + + /** + * Map Oracle native types to Propel types. + * + * There really aren't any Oracle native types, so we're just + * using the MySQL ones here. + * + * Left as unsupported: + * BFILE, + * RAW, + * ROWID + * + * Supported but non existant as a specific type in Oracle: + * DECIMAL (NUMBER with scale), + * DOUBLE (FLOAT with precision = 126) + * + * @var array + */ + private static $oracleTypeMap = array( + 'BLOB' => PropelTypes::BLOB, + 'CHAR' => PropelTypes::CHAR, + 'CLOB' => PropelTypes::CLOB, + 'DATE' => PropelTypes::DATE, + 'DECIMAL' => PropelTypes::DECIMAL, + 'DOUBLE' => PropelTypes::DOUBLE, + 'FLOAT' => PropelTypes::FLOAT, + 'LONG' => PropelTypes::LONGVARCHAR, + 'NCHAR' => PropelTypes::CHAR, + 'NCLOB' => PropelTypes::CLOB, + 'NUMBER' => PropelTypes::BIGINT, + 'NVARCHAR2' => PropelTypes::VARCHAR, + 'TIMESTAMP' => PropelTypes::TIMESTAMP, + 'VARCHAR2' => PropelTypes::VARCHAR, + ); + + /** + * Gets a type mapping from native types to Propel types + * + * @return array + */ + protected function getTypeMapping() + { + return self::$oracleTypeMap; + } + + /** + * Searches for tables in the database. Maybe we want to search also the views. + * @param Database $database The Database model class to add tables to. + */ + public function parse(Database $database) + { + $tables = array(); + $stmt = $this->dbh->query("SELECT OBJECT_NAME FROM USER_OBJECTS WHERE OBJECT_TYPE = 'TABLE'"); + /* @var stmt PDOStatement */ + // First load the tables (important that this happen before filling out details of tables) + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $table = new Table($row['OBJECT_NAME']); + $database->addTable($table); + // Add columns, primary keys and indexes. + $this->addColumns($table); + $this->addPrimaryKey($table); + $this->addIndexes($table); + $tables[] = $table; + } + foreach ($tables as $table) { + $this->addForeignKeys($table); + } + } + + /** + * Adds Columns to the specified table. + * + * @param Table $table The Table model class to add columns to. + */ + protected function addColumns(Table $table) + { + $stmt = $this->dbh->query("SELECT COLUMN_NAME, DATA_TYPE, NULLABLE, DATA_LENGTH, DATA_SCALE, DATA_DEFAULT FROM USER_TAB_COLS WHERE TABLE_NAME = '" . $table->getName() . "'"); + /* @var stmt PDOStatement */ + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $size = $row["DATA_LENGTH"]; + $scale = $row["DATA_SCALE"]; + $default = $row['DATA_DEFAULT']; + $type = $row["DATA_TYPE"]; + $isNullable = ($row['NULLABLE'] == 'Y'); + if ($type == "NUMBER" && $row["DATA_SCALE"] > 0) { + $type = "DECIMAL"; + } + if ($type == "FLOAT"&& $row["DATA_PRECISION"] == 126) { + $type = "DOUBLE"; + } + if (strpos($type, 'TIMESTAMP(') !== false) { + $type = substr($type, 0, strpos($type, '(')); + $default = "0000-00-00 00:00:00"; + $size = null; + $scale = null; + } + if ($type == "DATE") { + $default = "0000-00-00"; + $size = null; + $scale = null; + } + + $propelType = $this->getMappedPropelType($type); + if (!$propelType) { + $propelType = Column::DEFAULT_TYPE; + $this->warn("Column [" . $table->getName() . "." . $row['COLUMN_NAME']. "] has a column type (".$row["DATA_TYPE"].") that Propel does not support."); + } + + $column = new Column($row['COLUMN_NAME']); + $column->setPhpName(); // Prevent problems with strange col names + $column->setTable($table); + $column->setDomainForType($propelType); + $column->getDomain()->replaceSize($size); + $column->getDomain()->replaceScale($scale); + if ($default !== null) { + $column->getDomain()->setDefaultValue(new ColumnDefaultValue($default, ColumnDefaultValue::TYPE_VALUE)); + } + $column->setAutoIncrement(false); // Not yet supported + $column->setNotNull(!$isNullable); + $table->addColumn($column); + } + + } // addColumn() + + /** + * Adds Indexes to the specified table. + * + * @param Table $table The Table model class to add columns to. + */ + protected function addIndexes(Table $table) + { + $stmt = $this->dbh->query("SELECT COLUMN_NAME, INDEX_NAME FROM USER_IND_COLUMNS WHERE TABLE_NAME = '" . $table->getName() . "' ORDER BY COLUMN_NAME"); + /* @var stmt PDOStatement */ + $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); + if (count($rows) > 0) { + $index = new Index($rows[0]['INDEX_NAME']); + foreach($rows AS $row) { + $index->addColumn($row['COLUMN_NAME']); + } + $table->addIndex($index); + } + } + + /** + * Load foreign keys for this table. + * + * @param Table $table The Table model class to add FKs to + */ + protected function addForeignKeys(Table $table) + { + // local store to avoid duplicates + $foreignKeys = array(); + + $stmt = $this->dbh->query("SELECT CONSTRAINT_NAME, DELETE_RULE, R_CONSTRAINT_NAME FROM USER_CONSTRAINTS WHERE CONSTRAINT_TYPE = 'R' AND TABLE_NAME = '" . $table->getName(). "'"); + /* @var stmt PDOStatement */ + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + // Local reference + $stmt2 = $this->dbh->query("SELECT COLUMN_NAME FROM USER_CONS_COLUMNS WHERE CONSTRAINT_NAME = '".$row['CONSTRAINT_NAME']."' AND TABLE_NAME = '" . $table->getName(). "'"); + /* @var stmt2 PDOStatement */ + $localReferenceInfo = $stmt2->fetch(PDO::FETCH_ASSOC); + + // Foreign reference + $stmt2 = $this->dbh->query("SELECT TABLE_NAME, COLUMN_NAME FROM USER_CONS_COLUMNS WHERE CONSTRAINT_NAME = '".$row['R_CONSTRAINT_NAME']."'"); + $foreignReferenceInfo = $stmt2->fetch(PDO::FETCH_ASSOC); + + if (!isset($foreignKeys[$row["CONSTRAINT_NAME"]])) { + $fk = new ForeignKey($row["CONSTRAINT_NAME"]); + $fk->setForeignTableName($foreignReferenceInfo['TABLE_NAME']); + $fk->setOnDelete($row["DELETE_RULE"]); + $fk->setOnUpdate($row["DELETE_RULE"]); + $fk->addReference(array("local" => $localReferenceInfo['COLUMN_NAME'], "foreign" => $foreignReferenceInfo['COLUMN_NAME'])); + $table->addForeignKey($fk); + $foreignKeys[$row["CONSTRAINT_NAME"]] = $fk; + } + } + } + + /** + * Loads the primary key for this table. + * + * @param Table $table The Table model class to add PK to. + */ + protected function addPrimaryKey(Table $table) + { + $stmt = $this->dbh->query("SELECT COLS.COLUMN_NAME FROM USER_CONSTRAINTS CONS, USER_CONS_COLUMNS COLS WHERE CONS.CONSTRAINT_NAME = COLS.CONSTRAINT_NAME AND CONS.TABLE_NAME = '".$table->getName()."' AND CONS.CONSTRAINT_TYPE = 'P'"); + /* @var stmt PDOStatement */ + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + // This fixes a strange behavior by PDO. Sometimes the + // row values are inside an index 0 of an array + if (array_key_exists(0, $row)) { + $row = $row[0]; + } + $table->getColumn($row['COLUMN_NAME'])->setPrimaryKey(true); + } + } + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/oracle/OracleSchemaParser.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/oracle/OracleSchemaParser.php new file mode 100644 index 0000000..d2e2f68 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/oracle/OracleSchemaParser.php @@ -0,0 +1,230 @@ +. + */ + +require_once 'propel/engine/database/reverse/BaseSchemaParser.php'; + +/** + * Oracle database schema parser. + * + * @author Hans Lellelid + * @author Guillermo Gutierrez (Adaptation) + * @version $Revision: 1010 $ + * @package propel.engine.database.reverse.oracle + */ +class OracleSchemaParser extends BaseSchemaParser { + + /** + * Map Oracle native types to Propel types. + * + * There really aren't any Oracle native types, so we're just + * using the MySQL ones here. + * + * Left as unsupported: + * BFILE, + * RAW, + * ROWID + * + * Supported but non existant as a specific type in Oracle: + * DECIMAL (NUMBER with scale), + * DOUBLE (FLOAT with precision = 126) + * + * @var array + */ + private static $oracleTypeMap = array( + 'BLOB' => PropelTypes::BLOB, + 'CHAR' => PropelTypes::CHAR, + 'CLOB' => PropelTypes::CLOB, + 'DATE' => PropelTypes::DATE, + 'DECIMAL' => PropelTypes::DECIMAL, + 'DOUBLE' => PropelTypes::DOUBLE, + 'FLOAT' => PropelTypes::FLOAT, + 'LONG' => PropelTypes::LONGVARCHAR, + 'NCHAR' => PropelTypes::CHAR, + 'NCLOB' => PropelTypes::CLOB, + 'NUMBER' => PropelTypes::BIGINT, + 'NVARCHAR2' => PropelTypes::VARCHAR, + 'TIMESTAMP' => PropelTypes::TIMESTAMP, + 'VARCHAR2' => PropelTypes::VARCHAR, + ); + + /** + * Gets a type mapping from native types to Propel types + * + * @return array + */ + protected function getTypeMapping() + { + return self::$oracleTypeMap; + } + + /** + * Searches for tables in the database. Maybe we want to search also the views. + * @param Database $database The Database model class to add tables to. + */ + public function parse(Database $database) + { + $tables = array(); + $stmt = $this->dbh->query("SELECT OBJECT_NAME FROM USER_OBJECTS WHERE OBJECT_TYPE = 'TABLE'"); + /* @var stmt PDOStatement */ + // First load the tables (important that this happen before filling out details of tables) + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $table = new Table($row['OBJECT_NAME']); + $database->addTable($table); + // Add columns, primary keys and indexes. + $this->addColumns($table); + $this->addPrimaryKey($table); + $this->addIndexes($table); + $tables[] = $table; + } + foreach ($tables as $table) { + $this->addForeignKeys($table); + } + } + + /** + * Adds Columns to the specified table. + * + * @param Table $table The Table model class to add columns to. + */ + protected function addColumns(Table $table) + { + $stmt = $this->dbh->query("SELECT COLUMN_NAME, DATA_TYPE, NULLABLE, DATA_LENGTH, DATA_SCALE, DATA_DEFAULT FROM USER_TAB_COLS WHERE TABLE_NAME = '" . $table->getName() . "'"); + /* @var stmt PDOStatement */ + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $size = $row["DATA_LENGTH"]; + $scale = $row["DATA_SCALE"]; + $default = $row['DATA_DEFAULT']; + $type = $row["DATA_TYPE"]; + $isNullable = ($row['NULLABLE'] == 'Y'); + if ($type == "NUMBER" && $row["DATA_SCALE"] > 0) { + $type = "DECIMAL"; + } + if ($type == "FLOAT"&& $row["DATA_PRECISION"] == 126) { + $type = "DOUBLE"; + } + if (strpos($type, 'TIMESTAMP(') !== false) { + $type = substr($type, 0, strpos($type, '(')); + $default = "0000-00-00 00:00:00"; + $size = null; + $scale = null; + } + if ($type == "DATE") { + $default = "0000-00-00"; + $size = null; + $scale = null; + } + + $propelType = $this->getMappedPropelType($type); + if (!$propelType) { + $propelType = Column::DEFAULT_TYPE; + $this->warn("Column [" . $table->getName() . "." . $row['COLUMN_NAME']. "] has a column type (".$row["DATA_TYPE"].") that Propel does not support."); + } + + $column = new Column($row['COLUMN_NAME']); + $column->setPhpName(); // Prevent problems with strange col names + $column->setTable($table); + $column->setDomainForType($propelType); + $column->getDomain()->replaceSize($size); + $column->getDomain()->replaceScale($scale); + if ($default !== null) { + $column->getDomain()->setDefaultValue(new ColumnDefaultValue($default, ColumnDefaultValue::TYPE_VALUE)); + } + $column->setAutoIncrement(false); // Not yet supported + $column->setNotNull(!$isNullable); + $table->addColumn($column); + } + + } // addColumn() + + /** + * Adds Indexes to the specified table. + * + * @param Table $table The Table model class to add columns to. + */ + protected function addIndexes(Table $table) + { + $stmt = $this->dbh->query("SELECT COLUMN_NAME, INDEX_NAME FROM USER_IND_COLUMNS WHERE TABLE_NAME = '" . $table->getName() . "' ORDER BY COLUMN_NAME"); + /* @var stmt PDOStatement */ + $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); + if (count($rows) > 0) { + $index = new Index($rows[0]['INDEX_NAME']); + foreach($rows AS $row) { + $index->addColumn($row['COLUMN_NAME']); + } + $table->addIndex($index); + } + } + + /** + * Load foreign keys for this table. + * + * @param Table $table The Table model class to add FKs to + */ + protected function addForeignKeys(Table $table) + { + // local store to avoid duplicates + $foreignKeys = array(); + + $stmt = $this->dbh->query("SELECT CONSTRAINT_NAME, DELETE_RULE, R_CONSTRAINT_NAME FROM USER_CONSTRAINTS WHERE CONSTRAINT_TYPE = 'R' AND TABLE_NAME = '" . $table->getName(). "'"); + /* @var stmt PDOStatement */ + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + // Local reference + $stmt2 = $this->dbh->query("SELECT COLUMN_NAME FROM USER_CONS_COLUMNS WHERE CONSTRAINT_NAME = '".$row['CONSTRAINT_NAME']."' AND TABLE_NAME = '" . $table->getName(). "'"); + /* @var stmt2 PDOStatement */ + $localReferenceInfo = $stmt2->fetch(PDO::FETCH_ASSOC); + + // Foreign reference + $stmt2 = $this->dbh->query("SELECT TABLE_NAME, COLUMN_NAME FROM USER_CONS_COLUMNS WHERE CONSTRAINT_NAME = '".$row['R_CONSTRAINT_NAME']."'"); + $foreignReferenceInfo = $stmt2->fetch(PDO::FETCH_ASSOC); + + if (!isset($foreignKeys[$row["CONSTRAINT_NAME"]])) { + $fk = new ForeignKey($row["CONSTRAINT_NAME"]); + $fk->setForeignTableName($foreignReferenceInfo['TABLE_NAME']); + $fk->setOnDelete($row["DELETE_RULE"]); + $fk->setOnUpdate($row["DELETE_RULE"]); + $fk->addReference(array("local" => $localReferenceInfo['COLUMN_NAME'], "foreign" => $foreignReferenceInfo['COLUMN_NAME'])); + $table->addForeignKey($fk); + $foreignKeys[$row["CONSTRAINT_NAME"]] = $fk; + } + } + } + + /** + * Loads the primary key for this table. + * + * @param Table $table The Table model class to add PK to. + */ + protected function addPrimaryKey(Table $table) + { + $stmt = $this->dbh->query("SELECT COLS.COLUMN_NAME FROM USER_CONSTRAINTS CONS, USER_CONS_COLUMNS COLS WHERE CONS.CONSTRAINT_NAME = COLS.CONSTRAINT_NAME AND CONS.TABLE_NAME = '".$table->getName()."' AND CONS.CONSTRAINT_TYPE = 'P'"); + /* @var stmt PDOStatement */ + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + // This fixes a strange behavior by PDO. Sometimes the + // row values are inside an index 0 of an array + if (array_key_exists(0, $row)) { + $row = $row[0]; + } + $table->getColumn($row['COLUMN_NAME'])->setPrimaryKey(true); + } + } + +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/pgsql/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/pgsql/.svn/all-wcprops new file mode 100644 index 0000000..60c6b02 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/pgsql/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 80 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/database/reverse/pgsql +END +PgsqlSchemaParser.php +K 25 +svn:wc:ra_dav:version-url +V 102 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/database/reverse/pgsql/PgsqlSchemaParser.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/pgsql/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/pgsql/.svn/entries new file mode 100644 index 0000000..39156e3 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/pgsql/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +2332 +http://propel.mirror.svn.symfony-project.com/tags/1.4.2/generator/classes/propel/engine/database/reverse/pgsql +http://propel.mirror.svn.symfony-project.com + + + +2009-12-31T08:05:10.307912Z +1397 +francois + + + + + + + + + + + + + + +a84bc4f6-26e8-416f-aa96-3cde13879fbb + +PgsqlSchemaParser.php +file + + + + +2012-05-10T18:42:15.281553Z +b6d4a87bb293ed42395744c42b225a42 +2009-12-31T08:05:10.307912Z +1397 +francois +has-props + + + + + + + + + + + + + + + + + + + + +18088 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/pgsql/.svn/prop-base/PgsqlSchemaParser.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/pgsql/.svn/prop-base/PgsqlSchemaParser.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/pgsql/.svn/prop-base/PgsqlSchemaParser.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/pgsql/.svn/text-base/PgsqlSchemaParser.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/pgsql/.svn/text-base/PgsqlSchemaParser.php.svn-base new file mode 100644 index 0000000..d0c6f9a --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/pgsql/.svn/text-base/PgsqlSchemaParser.php.svn-base @@ -0,0 +1,545 @@ +. + */ + +require_once 'propel/engine/database/reverse/BaseSchemaParser.php'; + +/** + * Postgresql database schema parser. + * + * @author Hans Lellelid + * @version $Revision$ + * @package propel.engine.database.reverse.pgsql + */ +class PgsqlSchemaParser extends BaseSchemaParser { + + /** + * Map PostgreSQL native types to Propel types. + * @var array + */ + /** Map MySQL native types to Creole (JDBC) types. */ + private static $pgsqlTypeMap = array( + 'bool' => PropelTypes::BOOLEAN, + 'boolean' => PropelTypes::BOOLEAN, + 'tinyint' => PropelTypes::TINYINT, + 'smallint' => PropelTypes::SMALLINT, + 'mediumint' => PropelTypes::SMALLINT, + 'int' => PropelTypes::INTEGER, + 'int4' => PropelTypes::INTEGER, + 'integer' => PropelTypes::INTEGER, + 'int8' => PropelTypes::BIGINT, + 'bigint' => PropelTypes::BIGINT, + 'int24' => PropelTypes::BIGINT, + 'real' => PropelTypes::REAL, + 'float' => PropelTypes::FLOAT, + 'decimal' => PropelTypes::DECIMAL, + 'numeric' => PropelTypes::NUMERIC, + 'double' => PropelTypes::DOUBLE, + 'char' => PropelTypes::CHAR, + 'varchar' => PropelTypes::VARCHAR, + 'date' => PropelTypes::DATE, + 'time' => PropelTypes::TIME, + 'timetz' => PropelTypes::TIME, + //'year' => PropelTypes::YEAR, PropelTypes::YEAR does not exist... does this need to be mapped to a different propel type? + 'datetime' => PropelTypes::TIMESTAMP, + 'timestamp' => PropelTypes::TIMESTAMP, + 'timestamptz' => PropelTypes::TIMESTAMP, + 'bytea' => PropelTypes::BLOB, + 'text' => PropelTypes::LONGVARCHAR, + ); + + /** + * Gets a type mapping from native types to Propel types + * + * @return array + */ + protected function getTypeMapping() + { + return self::$pgsqlTypeMap; + } + + /** + * + */ + public function parse(Database $database) + { + $stmt = $this->dbh->query("SELECT version() as ver"); + $nativeVersion = $stmt->fetchColumn(); + + if (!$nativeVersion) { + throw new EngineException("Failed to get database version"); + } + + $arrVersion = sscanf ($nativeVersion, '%*s %d.%d'); + $version = sprintf ("%d.%d", $arrVersion[0], $arrVersion[1]); + + // Clean up + $stmt = null; + + $stmt = $this->dbh->query("SELECT c.oid, + case when n.nspname='public' then c.relname else n.nspname||'.'||c.relname end as relname + FROM pg_class c join pg_namespace n on (c.relnamespace=n.oid) + WHERE c.relkind = 'r' + AND n.nspname NOT IN ('information_schema','pg_catalog') + AND n.nspname NOT LIKE 'pg_temp%' + AND n.nspname NOT LIKE 'pg_toast%' + ORDER BY relname"); + + $tableWraps = array(); + + // First load the tables (important that this happen before filling out details of tables) + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $name = $row['relname']; + $oid = $row['oid']; + $table = new Table($name); + $database->addTable($table); + + // Create a wrapper to hold these tables and their associated OID + $wrap = new stdClass; + $wrap->table = $table; + $wrap->oid = $oid; + $tableWraps[] = $wrap; + } + + // Now populate only columns. + foreach ($tableWraps as $wrap) { + $this->addColumns($wrap->table, $wrap->oid, $version); + } + + // Now add indexes and constraints. + foreach ($tableWraps as $wrap) { + $this->addForeignKeys($wrap->table, $wrap->oid, $version); + $this->addIndexes($wrap->table, $wrap->oid, $version); + $this->addPrimaryKey($wrap->table, $wrap->oid, $version); + } + + // TODO - Handle Sequences ... + + } + + + /** + * Adds Columns to the specified table. + * + * @param Table $table The Table model class to add columns to. + * @param int $oid The table OID + * @param string $version The database version. + */ + protected function addColumns(Table $table, $oid, $version) + { + + // Get the columns, types, etc. + // Based on code from pgAdmin3 (http://www.pgadmin.org/) + $stmt = $this->dbh->prepare("SELECT + att.attname, + att.atttypmod, + att.atthasdef, + att.attnotnull, + def.adsrc, + CASE WHEN att.attndims > 0 THEN 1 ELSE 0 END AS isarray, + CASE + WHEN ty.typname = 'bpchar' + THEN 'char' + WHEN ty.typname = '_bpchar' + THEN '_char' + ELSE + ty.typname + END AS typname, + ty.typtype + FROM pg_attribute att + JOIN pg_type ty ON ty.oid=att.atttypid + LEFT OUTER JOIN pg_attrdef def ON adrelid=att.attrelid AND adnum=att.attnum + WHERE att.attrelid = ? AND att.attnum > 0 + AND att.attisdropped IS FALSE + ORDER BY att.attnum"); + + $stmt->bindValue(1, $oid, PDO::PARAM_INT); + $stmt->execute(); + + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + + $size = null; + $precision = null; + $scale = null; + + // Check to ensure that this column isn't an array data type + if (((int) $row['isarray']) === 1) { + throw new EngineException (sprintf ("Array datatypes are not currently supported [%s.%s]", $this->name, $row['attname'])); + } // if (((int) $row['isarray']) === 1) + + $name = $row['attname']; + + // If they type is a domain, Process it + if (strtolower ($row['typtype']) == 'd') { + $arrDomain = $this->processDomain ($row['typname']); + $type = $arrDomain['type']; + $size = $arrDomain['length']; + $precision = $size; + $scale = $arrDomain['scale']; + $boolHasDefault = (strlen (trim ($row['atthasdef'])) > 0) ? $row['atthasdef'] : $arrDomain['hasdefault']; + $default = (strlen (trim ($row['adsrc'])) > 0) ? $row['adsrc'] : $arrDomain['default']; + $is_nullable = (strlen (trim ($row['attnotnull'])) > 0) ? $row['attnotnull'] : $arrDomain['notnull']; + $is_nullable = (($is_nullable == 't') ? false : true); + } else { + $type = $row['typname']; + $arrLengthPrecision = $this->processLengthScale ($row['atttypmod'], $type); + $size = $arrLengthPrecision['length']; + $precision = $size; + $scale = $arrLengthPrecision['scale']; + $boolHasDefault = $row['atthasdef']; + $default = $row['adsrc']; + $is_nullable = (($row['attnotnull'] == 't') ? false : true); + } // else (strtolower ($row['typtype']) == 'd') + + $autoincrement = null; + + // if column has a default + if (($boolHasDefault == 't') && (strlen (trim ($default)) > 0)) { + if (!preg_match('/^nextval\(/', $default)) { + $strDefault= preg_replace ('/::[\W\D]*/', '', $default); + $default = str_replace ("'", '', $strDefault); + } else { + $autoincrement = true; + $default = null; + } + } else { + $default = null; + } + + $propelType = $this->getMappedPropelType($type); + if (!$propelType) { + $propelType = Column::DEFAULT_TYPE; + $this->warn("Column [" . $table->getName() . "." . $name. "] has a column type (".$type.") that Propel does not support."); + } + + $column = new Column($name); + $column->setTable($table); + $column->setDomainForType($propelType); + // We may want to provide an option to include this: + // $column->getDomain()->replaceSqlType($type); + $column->getDomain()->replaceSize($size); + $column->getDomain()->replaceScale($scale); + if ($default !== null) { + $column->getDomain()->setDefaultValue(new ColumnDefaultValue($default, ColumnDefaultValue::TYPE_VALUE)); + } + $column->setAutoIncrement($autoincrement); + $column->setNotNull(!$is_nullable); + + $table->addColumn($column); + } + + + } // addColumn() + + private function processLengthScale($intTypmod, $strName) + { + // Define the return array + $arrRetVal = array ('length'=>null, 'scale'=>null); + + // Some datatypes don't have a Typmod + if ($intTypmod == -1) + { + return $arrRetVal; + } // if ($intTypmod == -1) + + // Numeric Datatype? + if ($strName == $this->getMappedNativeType(PropelTypes::NUMERIC)) { + $intLen = ($intTypmod - 4) >> 16; + $intPrec = ($intTypmod - 4) & 0xffff; + $intLen = sprintf ("%ld", $intLen); + if ($intPrec) + { + $intPrec = sprintf ("%ld", $intPrec); + } // if ($intPrec) + $arrRetVal['length'] = $intLen; + $arrRetVal['scale'] = $intPrec; + } // if ($strName == $this->getMappedNativeType(PropelTypes::NUMERIC)) + elseif ($strName == $this->getMappedNativeType(PropelTypes::TIME) || $strName == 'timetz' + || $strName == $this->getMappedNativeType(PropelTypes::TIMESTAMP) || $strName == 'timestamptz' + || $strName == 'interval' || $strName == 'bit') + { + $arrRetVal['length'] = sprintf ("%ld", $intTypmod); + } // elseif (TIME, TIMESTAMP, INTERVAL, BIT) + else + { + $arrRetVal['length'] = sprintf ("%ld", ($intTypmod - 4)); + } // else + return $arrRetVal; + } // private function processLengthScale ($intTypmod, $strName) + + private function processDomain($strDomain) + { + if (strlen(trim ($strDomain)) < 1) { + throw new EngineException ("Invalid domain name [" . $strDomain . "]"); + } + + $stmt = $this->dbh->prepare("SELECT + d.typname as domname, + b.typname as basetype, + d.typlen, + d.typtypmod, + d.typnotnull, + d.typdefault + FROM pg_type d + INNER JOIN pg_type b ON b.oid = CASE WHEN d.typndims > 0 then d.typelem ELSE d.typbasetype END + WHERE + d.typtype = 'd' + AND d.typname = ? + ORDER BY d.typname"); + $stmt->bindValue(1, $strDomain); + $stmt->execute(); + + $row = $stmt->fetch(PDO::FETCH_ASSOC); + if (!$row) { + throw new EngineException ("Domain [" . $strDomain . "] not found."); + } + + $arrDomain = array (); + $arrDomain['type'] = $row['basetype']; + $arrLengthPrecision = $this->processLengthScale($row['typtypmod'], $row['basetype']); + $arrDomain['length'] = $arrLengthPrecision['length']; + $arrDomain['scale'] = $arrLengthPrecision['scale']; + $arrDomain['notnull'] = $row['typnotnull']; + $arrDomain['default'] = $row['typdefault']; + $arrDomain['hasdefault'] = (strlen (trim ($row['typdefault'])) > 0) ? 't' : 'f'; + + $stmt = null; // cleanup + return $arrDomain; + } // private function processDomain($strDomain) + + /** + * Load foreign keys for this table. + */ + protected function addForeignKeys(Table $table, $oid, $version) + { + $database = $table->getDatabase(); + $stmt = $this->dbh->prepare("SELECT + conname, + confupdtype, + confdeltype, + CASE nl.nspname WHEN 'public' THEN cl.relname ELSE nl.nspname||'.'||cl.relname END as fktab, + a2.attname as fkcol, + CASE nr.nspname WHEN 'public' THEN cr.relname ELSE nr.nspname||'.'||cr.relname END as reftab, + a1.attname as refcol + FROM pg_constraint ct + JOIN pg_class cl ON cl.oid=conrelid + JOIN pg_class cr ON cr.oid=confrelid + JOIN pg_namespace nl ON nl.oid = cl.relnamespace + JOIN pg_namespace nr ON nr.oid = cr.relnamespace + LEFT JOIN pg_catalog.pg_attribute a1 ON a1.attrelid = ct.confrelid + LEFT JOIN pg_catalog.pg_attribute a2 ON a2.attrelid = ct.conrelid + WHERE + contype='f' + AND conrelid = ? + AND a2.attnum = ct.conkey[1] + AND a1.attnum = ct.confkey[1] + ORDER BY conname"); + $stmt->bindValue(1, $oid); + $stmt->execute(); + + $foreignKeys = array(); // local store to avoid duplicates + + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + + $name = $row['conname']; + $local_table = $row['fktab']; + $local_column = $row['fkcol']; + $foreign_table = $row['reftab']; + $foreign_column = $row['refcol']; + + // On Update + switch ($row['confupdtype']) { + case 'c': + $onupdate = ForeignKey::CASCADE; break; + case 'd': + $onupdate = ForeignKey::SETDEFAULT; break; + case 'n': + $onupdate = ForeignKey::SETNULL; break; + case 'r': + $onupdate = ForeignKey::RESTRICT; break; + default: + case 'a': + //NOACTION is the postgresql default + $onupdate = ForeignKey::NONE; break; + } + // On Delete + switch ($row['confdeltype']) { + case 'c': + $ondelete = ForeignKey::CASCADE; break; + case 'd': + $ondelete = ForeignKey::SETDEFAULT; break; + case 'n': + $ondelete = ForeignKey::SETNULL; break; + case 'r': + $ondelete = ForeignKey::RESTRICT; break; + default: + case 'a': + //NOACTION is the postgresql default + $ondelete = ForeignKey::NONE; break; + } + + $foreignTable = $database->getTable($foreign_table); + $foreignColumn = $foreignTable->getColumn($foreign_column); + + $localTable = $database->getTable($local_table); + $localColumn = $localTable->getColumn($local_column); + + if (!isset($foreignKeys[$name])) { + $fk = new ForeignKey($name); + $fk->setForeignTableName($foreignTable->getName()); + $fk->setOnDelete($ondelete); + $fk->setOnUpdate($onupdate); + $table->addForeignKey($fk); + $foreignKeys[$name] = $fk; + } + + $foreignKeys[$name]->addReference($localColumn, $foreignColumn); + } + } + + /** + * Load indexes for this table + */ + protected function addIndexes(Table $table, $oid, $version) + { + $stmt = $this->dbh->prepare("SELECT + DISTINCT ON(cls.relname) + cls.relname as idxname, + indkey, + indisunique + FROM pg_index idx + JOIN pg_class cls ON cls.oid=indexrelid + WHERE indrelid = ? AND NOT indisprimary + ORDER BY cls.relname"); + + $stmt->bindValue(1, $oid); + $stmt->execute(); + + $stmt2 = $this->dbh->prepare("SELECT a.attname + FROM pg_catalog.pg_class c JOIN pg_catalog.pg_attribute a ON a.attrelid = c.oid + WHERE c.oid = ? AND a.attnum = ? AND NOT a.attisdropped + ORDER BY a.attnum"); + + $indexes = array(); + + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $name = $row["idxname"]; + $unique = ($row["indisunique"] == 't') ? true : false; + if (!isset($indexes[$name])) { + if ($unique) { + $indexes[$name] = new Unique($name); + } else { + $indexes[$name] = new Index($name); + } + $table->addIndex($indexes[$name]); + } + + $arrColumns = explode (' ', $row['indkey']); + foreach ($arrColumns as $intColNum) + { + $stmt2->bindValue(1, $oid); + $stmt2->bindValue(2, $intColNum); + $stmt2->execute(); + + $row2 = $stmt2->fetch(PDO::FETCH_ASSOC); + + $indexes[$name]->addColumn($table->getColumn($row2['attname'])); + + } // foreach ($arrColumns as $intColNum) + + } + + } + + /** + * Loads the primary key for this table. + */ + protected function addPrimaryKey(Table $table, $oid, $version) + { + + $stmt = $this->dbh->prepare("SELECT + DISTINCT ON(cls.relname) + cls.relname as idxname, + indkey, + indisunique + FROM pg_index idx + JOIN pg_class cls ON cls.oid=indexrelid + WHERE indrelid = ? AND indisprimary + ORDER BY cls.relname"); + $stmt->bindValue(1, $oid); + $stmt->execute(); + + // Loop through the returned results, grouping the same key_name together + // adding each column for that key. + + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $arrColumns = explode (' ', $row['indkey']); + foreach ($arrColumns as $intColNum) { + $stmt2 = $this->dbh->prepare("SELECT a.attname + FROM pg_catalog.pg_class c JOIN pg_catalog.pg_attribute a ON a.attrelid = c.oid + WHERE c.oid = ? AND a.attnum = ? AND NOT a.attisdropped + ORDER BY a.attnum"); + $stmt2->bindValue(1, $oid); + $stmt2->bindValue(2, $intColNum); + $stmt2->execute(); + + $row2 = $stmt2->fetch(PDO::FETCH_ASSOC); + $table->getColumn($row2['attname'])->setPrimaryKey(true); + + } // foreach ($arrColumns as $intColNum) + } + + } + + /** + * Adds the sequences for this database. + * + * @return void + * @throws SQLException + */ + protected function addSequences(Database $database) + { + /* + -- WE DON'T HAVE ANY USE FOR THESE YET IN REVERSE ENGINEERING ... + $this->sequences = array(); + $result = pg_query($this->conn->getResource(), "SELECT c.oid, + case when n.nspname='public' then c.relname else n.nspname||'.'||c.relname end as relname + FROM pg_class c join pg_namespace n on (c.relnamespace=n.oid) + WHERE c.relkind = 'S' + AND n.nspname NOT IN ('information_schema','pg_catalog') + AND n.nspname NOT LIKE 'pg_temp%' + AND n.nspname NOT LIKE 'pg_toast%' + ORDER BY relname"); + + if (!$result) { + throw new SQLException("Could not list sequences", pg_last_error($this->dblink)); + } + + while ($row = pg_fetch_assoc($result)) { + // FIXME -- decide what info we need for sequences & then create a SequenceInfo object (if needed) + $obj = new stdClass; + $obj->name = $row['relname']; + $obj->oid = $row['oid']; + $this->sequences[strtoupper($row['relname'])] = $obj; + } + */ + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/pgsql/PgsqlSchemaParser.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/pgsql/PgsqlSchemaParser.php new file mode 100644 index 0000000..6fabe92 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/pgsql/PgsqlSchemaParser.php @@ -0,0 +1,545 @@ +. + */ + +require_once 'propel/engine/database/reverse/BaseSchemaParser.php'; + +/** + * Postgresql database schema parser. + * + * @author Hans Lellelid + * @version $Revision: 1397 $ + * @package propel.engine.database.reverse.pgsql + */ +class PgsqlSchemaParser extends BaseSchemaParser { + + /** + * Map PostgreSQL native types to Propel types. + * @var array + */ + /** Map MySQL native types to Creole (JDBC) types. */ + private static $pgsqlTypeMap = array( + 'bool' => PropelTypes::BOOLEAN, + 'boolean' => PropelTypes::BOOLEAN, + 'tinyint' => PropelTypes::TINYINT, + 'smallint' => PropelTypes::SMALLINT, + 'mediumint' => PropelTypes::SMALLINT, + 'int' => PropelTypes::INTEGER, + 'int4' => PropelTypes::INTEGER, + 'integer' => PropelTypes::INTEGER, + 'int8' => PropelTypes::BIGINT, + 'bigint' => PropelTypes::BIGINT, + 'int24' => PropelTypes::BIGINT, + 'real' => PropelTypes::REAL, + 'float' => PropelTypes::FLOAT, + 'decimal' => PropelTypes::DECIMAL, + 'numeric' => PropelTypes::NUMERIC, + 'double' => PropelTypes::DOUBLE, + 'char' => PropelTypes::CHAR, + 'varchar' => PropelTypes::VARCHAR, + 'date' => PropelTypes::DATE, + 'time' => PropelTypes::TIME, + 'timetz' => PropelTypes::TIME, + //'year' => PropelTypes::YEAR, PropelTypes::YEAR does not exist... does this need to be mapped to a different propel type? + 'datetime' => PropelTypes::TIMESTAMP, + 'timestamp' => PropelTypes::TIMESTAMP, + 'timestamptz' => PropelTypes::TIMESTAMP, + 'bytea' => PropelTypes::BLOB, + 'text' => PropelTypes::LONGVARCHAR, + ); + + /** + * Gets a type mapping from native types to Propel types + * + * @return array + */ + protected function getTypeMapping() + { + return self::$pgsqlTypeMap; + } + + /** + * + */ + public function parse(Database $database) + { + $stmt = $this->dbh->query("SELECT version() as ver"); + $nativeVersion = $stmt->fetchColumn(); + + if (!$nativeVersion) { + throw new EngineException("Failed to get database version"); + } + + $arrVersion = sscanf ($nativeVersion, '%*s %d.%d'); + $version = sprintf ("%d.%d", $arrVersion[0], $arrVersion[1]); + + // Clean up + $stmt = null; + + $stmt = $this->dbh->query("SELECT c.oid, + case when n.nspname='public' then c.relname else n.nspname||'.'||c.relname end as relname + FROM pg_class c join pg_namespace n on (c.relnamespace=n.oid) + WHERE c.relkind = 'r' + AND n.nspname NOT IN ('information_schema','pg_catalog') + AND n.nspname NOT LIKE 'pg_temp%' + AND n.nspname NOT LIKE 'pg_toast%' + ORDER BY relname"); + + $tableWraps = array(); + + // First load the tables (important that this happen before filling out details of tables) + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $name = $row['relname']; + $oid = $row['oid']; + $table = new Table($name); + $database->addTable($table); + + // Create a wrapper to hold these tables and their associated OID + $wrap = new stdClass; + $wrap->table = $table; + $wrap->oid = $oid; + $tableWraps[] = $wrap; + } + + // Now populate only columns. + foreach ($tableWraps as $wrap) { + $this->addColumns($wrap->table, $wrap->oid, $version); + } + + // Now add indexes and constraints. + foreach ($tableWraps as $wrap) { + $this->addForeignKeys($wrap->table, $wrap->oid, $version); + $this->addIndexes($wrap->table, $wrap->oid, $version); + $this->addPrimaryKey($wrap->table, $wrap->oid, $version); + } + + // TODO - Handle Sequences ... + + } + + + /** + * Adds Columns to the specified table. + * + * @param Table $table The Table model class to add columns to. + * @param int $oid The table OID + * @param string $version The database version. + */ + protected function addColumns(Table $table, $oid, $version) + { + + // Get the columns, types, etc. + // Based on code from pgAdmin3 (http://www.pgadmin.org/) + $stmt = $this->dbh->prepare("SELECT + att.attname, + att.atttypmod, + att.atthasdef, + att.attnotnull, + def.adsrc, + CASE WHEN att.attndims > 0 THEN 1 ELSE 0 END AS isarray, + CASE + WHEN ty.typname = 'bpchar' + THEN 'char' + WHEN ty.typname = '_bpchar' + THEN '_char' + ELSE + ty.typname + END AS typname, + ty.typtype + FROM pg_attribute att + JOIN pg_type ty ON ty.oid=att.atttypid + LEFT OUTER JOIN pg_attrdef def ON adrelid=att.attrelid AND adnum=att.attnum + WHERE att.attrelid = ? AND att.attnum > 0 + AND att.attisdropped IS FALSE + ORDER BY att.attnum"); + + $stmt->bindValue(1, $oid, PDO::PARAM_INT); + $stmt->execute(); + + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + + $size = null; + $precision = null; + $scale = null; + + // Check to ensure that this column isn't an array data type + if (((int) $row['isarray']) === 1) { + throw new EngineException (sprintf ("Array datatypes are not currently supported [%s.%s]", $this->name, $row['attname'])); + } // if (((int) $row['isarray']) === 1) + + $name = $row['attname']; + + // If they type is a domain, Process it + if (strtolower ($row['typtype']) == 'd') { + $arrDomain = $this->processDomain ($row['typname']); + $type = $arrDomain['type']; + $size = $arrDomain['length']; + $precision = $size; + $scale = $arrDomain['scale']; + $boolHasDefault = (strlen (trim ($row['atthasdef'])) > 0) ? $row['atthasdef'] : $arrDomain['hasdefault']; + $default = (strlen (trim ($row['adsrc'])) > 0) ? $row['adsrc'] : $arrDomain['default']; + $is_nullable = (strlen (trim ($row['attnotnull'])) > 0) ? $row['attnotnull'] : $arrDomain['notnull']; + $is_nullable = (($is_nullable == 't') ? false : true); + } else { + $type = $row['typname']; + $arrLengthPrecision = $this->processLengthScale ($row['atttypmod'], $type); + $size = $arrLengthPrecision['length']; + $precision = $size; + $scale = $arrLengthPrecision['scale']; + $boolHasDefault = $row['atthasdef']; + $default = $row['adsrc']; + $is_nullable = (($row['attnotnull'] == 't') ? false : true); + } // else (strtolower ($row['typtype']) == 'd') + + $autoincrement = null; + + // if column has a default + if (($boolHasDefault == 't') && (strlen (trim ($default)) > 0)) { + if (!preg_match('/^nextval\(/', $default)) { + $strDefault= preg_replace ('/::[\W\D]*/', '', $default); + $default = str_replace ("'", '', $strDefault); + } else { + $autoincrement = true; + $default = null; + } + } else { + $default = null; + } + + $propelType = $this->getMappedPropelType($type); + if (!$propelType) { + $propelType = Column::DEFAULT_TYPE; + $this->warn("Column [" . $table->getName() . "." . $name. "] has a column type (".$type.") that Propel does not support."); + } + + $column = new Column($name); + $column->setTable($table); + $column->setDomainForType($propelType); + // We may want to provide an option to include this: + // $column->getDomain()->replaceSqlType($type); + $column->getDomain()->replaceSize($size); + $column->getDomain()->replaceScale($scale); + if ($default !== null) { + $column->getDomain()->setDefaultValue(new ColumnDefaultValue($default, ColumnDefaultValue::TYPE_VALUE)); + } + $column->setAutoIncrement($autoincrement); + $column->setNotNull(!$is_nullable); + + $table->addColumn($column); + } + + + } // addColumn() + + private function processLengthScale($intTypmod, $strName) + { + // Define the return array + $arrRetVal = array ('length'=>null, 'scale'=>null); + + // Some datatypes don't have a Typmod + if ($intTypmod == -1) + { + return $arrRetVal; + } // if ($intTypmod == -1) + + // Numeric Datatype? + if ($strName == $this->getMappedNativeType(PropelTypes::NUMERIC)) { + $intLen = ($intTypmod - 4) >> 16; + $intPrec = ($intTypmod - 4) & 0xffff; + $intLen = sprintf ("%ld", $intLen); + if ($intPrec) + { + $intPrec = sprintf ("%ld", $intPrec); + } // if ($intPrec) + $arrRetVal['length'] = $intLen; + $arrRetVal['scale'] = $intPrec; + } // if ($strName == $this->getMappedNativeType(PropelTypes::NUMERIC)) + elseif ($strName == $this->getMappedNativeType(PropelTypes::TIME) || $strName == 'timetz' + || $strName == $this->getMappedNativeType(PropelTypes::TIMESTAMP) || $strName == 'timestamptz' + || $strName == 'interval' || $strName == 'bit') + { + $arrRetVal['length'] = sprintf ("%ld", $intTypmod); + } // elseif (TIME, TIMESTAMP, INTERVAL, BIT) + else + { + $arrRetVal['length'] = sprintf ("%ld", ($intTypmod - 4)); + } // else + return $arrRetVal; + } // private function processLengthScale ($intTypmod, $strName) + + private function processDomain($strDomain) + { + if (strlen(trim ($strDomain)) < 1) { + throw new EngineException ("Invalid domain name [" . $strDomain . "]"); + } + + $stmt = $this->dbh->prepare("SELECT + d.typname as domname, + b.typname as basetype, + d.typlen, + d.typtypmod, + d.typnotnull, + d.typdefault + FROM pg_type d + INNER JOIN pg_type b ON b.oid = CASE WHEN d.typndims > 0 then d.typelem ELSE d.typbasetype END + WHERE + d.typtype = 'd' + AND d.typname = ? + ORDER BY d.typname"); + $stmt->bindValue(1, $strDomain); + $stmt->execute(); + + $row = $stmt->fetch(PDO::FETCH_ASSOC); + if (!$row) { + throw new EngineException ("Domain [" . $strDomain . "] not found."); + } + + $arrDomain = array (); + $arrDomain['type'] = $row['basetype']; + $arrLengthPrecision = $this->processLengthScale($row['typtypmod'], $row['basetype']); + $arrDomain['length'] = $arrLengthPrecision['length']; + $arrDomain['scale'] = $arrLengthPrecision['scale']; + $arrDomain['notnull'] = $row['typnotnull']; + $arrDomain['default'] = $row['typdefault']; + $arrDomain['hasdefault'] = (strlen (trim ($row['typdefault'])) > 0) ? 't' : 'f'; + + $stmt = null; // cleanup + return $arrDomain; + } // private function processDomain($strDomain) + + /** + * Load foreign keys for this table. + */ + protected function addForeignKeys(Table $table, $oid, $version) + { + $database = $table->getDatabase(); + $stmt = $this->dbh->prepare("SELECT + conname, + confupdtype, + confdeltype, + CASE nl.nspname WHEN 'public' THEN cl.relname ELSE nl.nspname||'.'||cl.relname END as fktab, + a2.attname as fkcol, + CASE nr.nspname WHEN 'public' THEN cr.relname ELSE nr.nspname||'.'||cr.relname END as reftab, + a1.attname as refcol + FROM pg_constraint ct + JOIN pg_class cl ON cl.oid=conrelid + JOIN pg_class cr ON cr.oid=confrelid + JOIN pg_namespace nl ON nl.oid = cl.relnamespace + JOIN pg_namespace nr ON nr.oid = cr.relnamespace + LEFT JOIN pg_catalog.pg_attribute a1 ON a1.attrelid = ct.confrelid + LEFT JOIN pg_catalog.pg_attribute a2 ON a2.attrelid = ct.conrelid + WHERE + contype='f' + AND conrelid = ? + AND a2.attnum = ct.conkey[1] + AND a1.attnum = ct.confkey[1] + ORDER BY conname"); + $stmt->bindValue(1, $oid); + $stmt->execute(); + + $foreignKeys = array(); // local store to avoid duplicates + + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + + $name = $row['conname']; + $local_table = $row['fktab']; + $local_column = $row['fkcol']; + $foreign_table = $row['reftab']; + $foreign_column = $row['refcol']; + + // On Update + switch ($row['confupdtype']) { + case 'c': + $onupdate = ForeignKey::CASCADE; break; + case 'd': + $onupdate = ForeignKey::SETDEFAULT; break; + case 'n': + $onupdate = ForeignKey::SETNULL; break; + case 'r': + $onupdate = ForeignKey::RESTRICT; break; + default: + case 'a': + //NOACTION is the postgresql default + $onupdate = ForeignKey::NONE; break; + } + // On Delete + switch ($row['confdeltype']) { + case 'c': + $ondelete = ForeignKey::CASCADE; break; + case 'd': + $ondelete = ForeignKey::SETDEFAULT; break; + case 'n': + $ondelete = ForeignKey::SETNULL; break; + case 'r': + $ondelete = ForeignKey::RESTRICT; break; + default: + case 'a': + //NOACTION is the postgresql default + $ondelete = ForeignKey::NONE; break; + } + + $foreignTable = $database->getTable($foreign_table); + $foreignColumn = $foreignTable->getColumn($foreign_column); + + $localTable = $database->getTable($local_table); + $localColumn = $localTable->getColumn($local_column); + + if (!isset($foreignKeys[$name])) { + $fk = new ForeignKey($name); + $fk->setForeignTableName($foreignTable->getName()); + $fk->setOnDelete($ondelete); + $fk->setOnUpdate($onupdate); + $table->addForeignKey($fk); + $foreignKeys[$name] = $fk; + } + + $foreignKeys[$name]->addReference($localColumn, $foreignColumn); + } + } + + /** + * Load indexes for this table + */ + protected function addIndexes(Table $table, $oid, $version) + { + $stmt = $this->dbh->prepare("SELECT + DISTINCT ON(cls.relname) + cls.relname as idxname, + indkey, + indisunique + FROM pg_index idx + JOIN pg_class cls ON cls.oid=indexrelid + WHERE indrelid = ? AND NOT indisprimary + ORDER BY cls.relname"); + + $stmt->bindValue(1, $oid); + $stmt->execute(); + + $stmt2 = $this->dbh->prepare("SELECT a.attname + FROM pg_catalog.pg_class c JOIN pg_catalog.pg_attribute a ON a.attrelid = c.oid + WHERE c.oid = ? AND a.attnum = ? AND NOT a.attisdropped + ORDER BY a.attnum"); + + $indexes = array(); + + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $name = $row["idxname"]; + $unique = ($row["indisunique"] == 't') ? true : false; + if (!isset($indexes[$name])) { + if ($unique) { + $indexes[$name] = new Unique($name); + } else { + $indexes[$name] = new Index($name); + } + $table->addIndex($indexes[$name]); + } + + $arrColumns = explode (' ', $row['indkey']); + foreach ($arrColumns as $intColNum) + { + $stmt2->bindValue(1, $oid); + $stmt2->bindValue(2, $intColNum); + $stmt2->execute(); + + $row2 = $stmt2->fetch(PDO::FETCH_ASSOC); + + $indexes[$name]->addColumn($table->getColumn($row2['attname'])); + + } // foreach ($arrColumns as $intColNum) + + } + + } + + /** + * Loads the primary key for this table. + */ + protected function addPrimaryKey(Table $table, $oid, $version) + { + + $stmt = $this->dbh->prepare("SELECT + DISTINCT ON(cls.relname) + cls.relname as idxname, + indkey, + indisunique + FROM pg_index idx + JOIN pg_class cls ON cls.oid=indexrelid + WHERE indrelid = ? AND indisprimary + ORDER BY cls.relname"); + $stmt->bindValue(1, $oid); + $stmt->execute(); + + // Loop through the returned results, grouping the same key_name together + // adding each column for that key. + + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $arrColumns = explode (' ', $row['indkey']); + foreach ($arrColumns as $intColNum) { + $stmt2 = $this->dbh->prepare("SELECT a.attname + FROM pg_catalog.pg_class c JOIN pg_catalog.pg_attribute a ON a.attrelid = c.oid + WHERE c.oid = ? AND a.attnum = ? AND NOT a.attisdropped + ORDER BY a.attnum"); + $stmt2->bindValue(1, $oid); + $stmt2->bindValue(2, $intColNum); + $stmt2->execute(); + + $row2 = $stmt2->fetch(PDO::FETCH_ASSOC); + $table->getColumn($row2['attname'])->setPrimaryKey(true); + + } // foreach ($arrColumns as $intColNum) + } + + } + + /** + * Adds the sequences for this database. + * + * @return void + * @throws SQLException + */ + protected function addSequences(Database $database) + { + /* + -- WE DON'T HAVE ANY USE FOR THESE YET IN REVERSE ENGINEERING ... + $this->sequences = array(); + $result = pg_query($this->conn->getResource(), "SELECT c.oid, + case when n.nspname='public' then c.relname else n.nspname||'.'||c.relname end as relname + FROM pg_class c join pg_namespace n on (c.relnamespace=n.oid) + WHERE c.relkind = 'S' + AND n.nspname NOT IN ('information_schema','pg_catalog') + AND n.nspname NOT LIKE 'pg_temp%' + AND n.nspname NOT LIKE 'pg_toast%' + ORDER BY relname"); + + if (!$result) { + throw new SQLException("Could not list sequences", pg_last_error($this->dblink)); + } + + while ($row = pg_fetch_assoc($result)) { + // FIXME -- decide what info we need for sequences & then create a SequenceInfo object (if needed) + $obj = new stdClass; + $obj->name = $row['relname']; + $obj->oid = $row['oid']; + $this->sequences[strtoupper($row['relname'])] = $obj; + } + */ + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/sqlite/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/sqlite/.svn/all-wcprops new file mode 100644 index 0000000..d140f5c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/sqlite/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 81 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/database/reverse/sqlite +END +SqliteSchemaParser.php +K 25 +svn:wc:ra_dav:version-url +V 104 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/database/reverse/sqlite/SqliteSchemaParser.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/sqlite/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/sqlite/.svn/entries new file mode 100644 index 0000000..bf866ac --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/sqlite/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +2332 +http://propel.mirror.svn.symfony-project.com/tags/1.4.2/generator/classes/propel/engine/database/reverse/sqlite +http://propel.mirror.svn.symfony-project.com + + + +2009-10-26T20:54:39.333354Z +1262 +francois + + + + + + + + + + + + + + +a84bc4f6-26e8-416f-aa96-3cde13879fbb + +SqliteSchemaParser.php +file + + + + +2012-05-10T18:42:15.185551Z +1a4767a92b84237b8648c50949675207 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +6054 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/sqlite/.svn/prop-base/SqliteSchemaParser.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/sqlite/.svn/prop-base/SqliteSchemaParser.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/sqlite/.svn/prop-base/SqliteSchemaParser.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/sqlite/.svn/text-base/SqliteSchemaParser.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/sqlite/.svn/text-base/SqliteSchemaParser.php.svn-base new file mode 100644 index 0000000..378703e --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/sqlite/.svn/text-base/SqliteSchemaParser.php.svn-base @@ -0,0 +1,203 @@ +. + */ + +require_once 'propel/engine/database/reverse/BaseSchemaParser.php'; + +/** + * SQLite database schema parser. + * + * @author Hans Lellelid + * @version $Revision$ + * @package propel.engine.database.reverse.mysql + */ +class SqliteSchemaParser extends BaseSchemaParser { + + /** + * Map Sqlite native types to Propel types. + * + * There really aren't any SQLite native types, so we're just + * using the MySQL ones here. + * + * @var array + */ + private static $sqliteTypeMap = array( + 'tinyint' => PropelTypes::TINYINT, + 'smallint' => PropelTypes::SMALLINT, + 'mediumint' => PropelTypes::SMALLINT, + 'int' => PropelTypes::INTEGER, + 'integer' => PropelTypes::INTEGER, + 'bigint' => PropelTypes::BIGINT, + 'int24' => PropelTypes::BIGINT, + 'real' => PropelTypes::REAL, + 'float' => PropelTypes::FLOAT, + 'decimal' => PropelTypes::DECIMAL, + 'numeric' => PropelTypes::NUMERIC, + 'double' => PropelTypes::DOUBLE, + 'char' => PropelTypes::CHAR, + 'varchar' => PropelTypes::VARCHAR, + 'date' => PropelTypes::DATE, + 'time' => PropelTypes::TIME, + 'year' => PropelTypes::INTEGER, + 'datetime' => PropelTypes::TIMESTAMP, + 'timestamp' => PropelTypes::TIMESTAMP, + 'tinyblob' => PropelTypes::BINARY, + 'blob' => PropelTypes::BLOB, + 'mediumblob' => PropelTypes::BLOB, + 'longblob' => PropelTypes::BLOB, + 'longtext' => PropelTypes::CLOB, + 'tinytext' => PropelTypes::VARCHAR, + 'mediumtext' => PropelTypes::LONGVARCHAR, + 'text' => PropelTypes::LONGVARCHAR, + 'enum' => PropelTypes::CHAR, + 'set' => PropelTypes::CHAR, + ); + + /** + * Gets a type mapping from native types to Propel types + * + * @return array + */ + protected function getTypeMapping() + { + return self::$sqliteTypeMap; + } + + /** + * + */ + public function parse(Database $database) + { + $stmt = $this->dbh->query("SELECT name FROM sqlite_master WHERE type='table' UNION ALL SELECT name FROM sqlite_temp_master WHERE type='table' ORDER BY name;"); + + // First load the tables (important that this happen before filling out details of tables) + $tables = array(); + while ($row = $stmt->fetch(PDO::FETCH_NUM)) { + $name = $row[0]; + $table = new Table($name); + $database->addTable($table); + $tables[] = $table; + } + + // Now populate only columns. + foreach ($tables as $table) { + $this->addColumns($table); + } + + // Now add indexes and constraints. + foreach ($tables as $table) { + $this->addIndexes($table); + } + + } + + + /** + * Adds Columns to the specified table. + * + * @param Table $table The Table model class to add columns to. + * @param int $oid The table OID + * @param string $version The database version. + */ + protected function addColumns(Table $table) + { + $stmt = $this->dbh->query("PRAGMA table_info('" . $table->getName() . "')"); + + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + + $name = $row['name']; + + $fulltype = $row['type']; + $size = null; + $precision = null; + $scale = null; + + if (preg_match('/^([^\(]+)\(\s*(\d+)\s*,\s*(\d+)\s*\)$/', $fulltype, $matches)) { + $type = $matches[1]; + $precision = $matches[2]; + $scale = $matches[3]; // aka precision + } elseif (preg_match('/^([^\(]+)\(\s*(\d+)\s*\)$/', $fulltype, $matches)) { + $type = $matches[1]; + $size = $matches[2]; + } else { + $type = $fulltype; + } + // If column is primary key and of type INTEGER, it is auto increment + // See: http://sqlite.org/faq.html#q1 + $autoincrement = ($row['pk'] == 1 && strtolower($type) == 'integer'); + $not_null = $row['notnull']; + $default = $row['dflt_value']; + + + $propelType = $this->getMappedPropelType($type); + if (!$propelType) { + $propelType = Column::DEFAULT_TYPE; + $this->warn("Column [" . $table->getName() . "." . $name. "] has a column type (".$type.") that Propel does not support."); + } + + $column = new Column($name); + $column->setTable($table); + $column->setDomainForType($propelType); + // We may want to provide an option to include this: + // $column->getDomain()->replaceSqlType($type); + $column->getDomain()->replaceSize($size); + $column->getDomain()->replaceScale($scale); + if ($default !== null) { + $column->getDomain()->setDefaultValue(new ColumnDefaultValue($default, ColumnDefaultValue::TYPE_VALUE)); + } + $column->setAutoIncrement($autoincrement); + $column->setNotNull($not_null); + + + if (($row['pk'] == 1) || (strtolower($type) == 'integer')) { + $column->setPrimaryKey(true); + } + + $table->addColumn($column); + + } + + + } // addColumn() + + /** + * Load indexes for this table + */ + protected function addIndexes(Table $table) + { + $stmt = $this->dbh->query("PRAGMA index_list('" . $table->getName() . "')"); + + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + + $name = $row['name']; + $index = new Index($name); + + $stmt2 = $this->dbh->query("PRAGMA index_info('".$name."')"); + while ($row2 = $stmt2->fetch(PDO::FETCH_ASSOC)) { + $colname = $row2['name']; + $index->addColumn($table->getColumn($colname)); + } + + $table->addIndex($index); + + } + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/sqlite/SqliteSchemaParser.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/sqlite/SqliteSchemaParser.php new file mode 100644 index 0000000..ca1c22f --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/reverse/sqlite/SqliteSchemaParser.php @@ -0,0 +1,203 @@ +. + */ + +require_once 'propel/engine/database/reverse/BaseSchemaParser.php'; + +/** + * SQLite database schema parser. + * + * @author Hans Lellelid + * @version $Revision: 1262 $ + * @package propel.engine.database.reverse.mysql + */ +class SqliteSchemaParser extends BaseSchemaParser { + + /** + * Map Sqlite native types to Propel types. + * + * There really aren't any SQLite native types, so we're just + * using the MySQL ones here. + * + * @var array + */ + private static $sqliteTypeMap = array( + 'tinyint' => PropelTypes::TINYINT, + 'smallint' => PropelTypes::SMALLINT, + 'mediumint' => PropelTypes::SMALLINT, + 'int' => PropelTypes::INTEGER, + 'integer' => PropelTypes::INTEGER, + 'bigint' => PropelTypes::BIGINT, + 'int24' => PropelTypes::BIGINT, + 'real' => PropelTypes::REAL, + 'float' => PropelTypes::FLOAT, + 'decimal' => PropelTypes::DECIMAL, + 'numeric' => PropelTypes::NUMERIC, + 'double' => PropelTypes::DOUBLE, + 'char' => PropelTypes::CHAR, + 'varchar' => PropelTypes::VARCHAR, + 'date' => PropelTypes::DATE, + 'time' => PropelTypes::TIME, + 'year' => PropelTypes::INTEGER, + 'datetime' => PropelTypes::TIMESTAMP, + 'timestamp' => PropelTypes::TIMESTAMP, + 'tinyblob' => PropelTypes::BINARY, + 'blob' => PropelTypes::BLOB, + 'mediumblob' => PropelTypes::BLOB, + 'longblob' => PropelTypes::BLOB, + 'longtext' => PropelTypes::CLOB, + 'tinytext' => PropelTypes::VARCHAR, + 'mediumtext' => PropelTypes::LONGVARCHAR, + 'text' => PropelTypes::LONGVARCHAR, + 'enum' => PropelTypes::CHAR, + 'set' => PropelTypes::CHAR, + ); + + /** + * Gets a type mapping from native types to Propel types + * + * @return array + */ + protected function getTypeMapping() + { + return self::$sqliteTypeMap; + } + + /** + * + */ + public function parse(Database $database) + { + $stmt = $this->dbh->query("SELECT name FROM sqlite_master WHERE type='table' UNION ALL SELECT name FROM sqlite_temp_master WHERE type='table' ORDER BY name;"); + + // First load the tables (important that this happen before filling out details of tables) + $tables = array(); + while ($row = $stmt->fetch(PDO::FETCH_NUM)) { + $name = $row[0]; + $table = new Table($name); + $database->addTable($table); + $tables[] = $table; + } + + // Now populate only columns. + foreach ($tables as $table) { + $this->addColumns($table); + } + + // Now add indexes and constraints. + foreach ($tables as $table) { + $this->addIndexes($table); + } + + } + + + /** + * Adds Columns to the specified table. + * + * @param Table $table The Table model class to add columns to. + * @param int $oid The table OID + * @param string $version The database version. + */ + protected function addColumns(Table $table) + { + $stmt = $this->dbh->query("PRAGMA table_info('" . $table->getName() . "')"); + + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + + $name = $row['name']; + + $fulltype = $row['type']; + $size = null; + $precision = null; + $scale = null; + + if (preg_match('/^([^\(]+)\(\s*(\d+)\s*,\s*(\d+)\s*\)$/', $fulltype, $matches)) { + $type = $matches[1]; + $precision = $matches[2]; + $scale = $matches[3]; // aka precision + } elseif (preg_match('/^([^\(]+)\(\s*(\d+)\s*\)$/', $fulltype, $matches)) { + $type = $matches[1]; + $size = $matches[2]; + } else { + $type = $fulltype; + } + // If column is primary key and of type INTEGER, it is auto increment + // See: http://sqlite.org/faq.html#q1 + $autoincrement = ($row['pk'] == 1 && strtolower($type) == 'integer'); + $not_null = $row['notnull']; + $default = $row['dflt_value']; + + + $propelType = $this->getMappedPropelType($type); + if (!$propelType) { + $propelType = Column::DEFAULT_TYPE; + $this->warn("Column [" . $table->getName() . "." . $name. "] has a column type (".$type.") that Propel does not support."); + } + + $column = new Column($name); + $column->setTable($table); + $column->setDomainForType($propelType); + // We may want to provide an option to include this: + // $column->getDomain()->replaceSqlType($type); + $column->getDomain()->replaceSize($size); + $column->getDomain()->replaceScale($scale); + if ($default !== null) { + $column->getDomain()->setDefaultValue(new ColumnDefaultValue($default, ColumnDefaultValue::TYPE_VALUE)); + } + $column->setAutoIncrement($autoincrement); + $column->setNotNull($not_null); + + + if (($row['pk'] == 1) || (strtolower($type) == 'integer')) { + $column->setPrimaryKey(true); + } + + $table->addColumn($column); + + } + + + } // addColumn() + + /** + * Load indexes for this table + */ + protected function addIndexes(Table $table) + { + $stmt = $this->dbh->query("PRAGMA index_list('" . $table->getName() . "')"); + + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + + $name = $row['name']; + $index = new Index($name); + + $stmt2 = $this->dbh->query("PRAGMA index_info('".$name."')"); + while ($row2 = $stmt2->fetch(PDO::FETCH_ASSOC)) { + $colname = $row2['name']; + $index->addColumn($table->getColumn($colname)); + } + + $table->addIndex($index); + + } + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/transform/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/transform/.svn/all-wcprops new file mode 100644 index 0000000..6640c80 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/transform/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 76 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/database/transform +END +XmlToAppData.php +K 25 +svn:wc:ra_dav:version-url +V 93 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/database/transform/XmlToAppData.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/transform/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/transform/.svn/entries new file mode 100644 index 0000000..a6052b3 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/transform/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +2332 +http://propel.mirror.svn.symfony-project.com/tags/1.4.2/generator/classes/propel/engine/database/transform +http://propel.mirror.svn.symfony-project.com + + + +2009-10-26T20:54:39.333354Z +1262 +francois + + + + + + + + + + + + + + +a84bc4f6-26e8-416f-aa96-3cde13879fbb + +XmlToAppData.php +file + + + + +2012-05-10T18:42:15.329549Z +648c265894bf4c5f8b0532ce2e1b256e +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +10856 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/transform/.svn/prop-base/XmlToAppData.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/transform/.svn/prop-base/XmlToAppData.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/transform/.svn/prop-base/XmlToAppData.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/transform/.svn/text-base/XmlToAppData.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/transform/.svn/text-base/XmlToAppData.php.svn-base new file mode 100644 index 0000000..9c50a22 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/transform/.svn/text-base/XmlToAppData.php.svn-base @@ -0,0 +1,409 @@ +. + */ + +include_once 'propel/engine/database/model/AppData.php'; + +// Phing dependencies +require_once 'phing/parser/AbstractHandler.php'; +include_once 'phing/system/io/FileReader.php'; + +/** + * A class that is used to parse an input xml schema file and creates an AppData + * PHP object. + * + * @author Hans Lellelid (Propel) + * @author Leon Messerschmidt (Torque) + * @author Jason van Zyl (Torque) + * @author Martin Poeschl (Torque) + * @author Daniel Rall (Torque) + * @version $Revision$ + * @package propel.engine.database.transform + */ +class XmlToAppData extends AbstractHandler { + + /** enables debug output */ + const DEBUG = false; + + private $app; + private $platform; + private $currDB; + private $currTable; + private $currColumn; + private $currFK; + private $currIndex; + private $currUnique; + private $currValidator; + private $currBehavior; + private $currVendorObject; + + private $isForReferenceOnly; + private $currentPackage; + private $currentXmlFile; + private $defaultPackage; + + private $encoding; + + /** two-dimensional array, + first dimension is for schemas(key is the path to the schema file), + second is for tags within the schema */ + private $schemasTagsStack = array(); + + public $parser; + + /** + * Creates a new instance for the specified database type. + * + * @param Platform $platform The type of database for the application. + * @param string $defaultPackage the default PHP package used for the om + * @param string $encoding The database encoding. + */ + public function __construct(Platform $platform, $defaultPackage, $encoding = 'iso-8859-1') + { + $this->app = new AppData($platform); + $this->platform = $platform; + $this->defaultPackage = $defaultPackage; + $this->firstPass = true; + $this->encoding = $encoding; + } + + /** + * Parses a XML input file and returns a newly created and + * populated AppData structure. + * + * @param string $xmlFile The input file to parse. + * @return AppData populated by xmlFile. + */ + public function parseFile($xmlFile) + { + // we don't want infinite recursion + if ($this->isAlreadyParsed($xmlFile)) { + return; + } + + $domDocument = new DomDocument('1.0', 'UTF-8'); + $domDocument->load($xmlFile); + + // store current schema file path + $this->schemasTagsStack[$xmlFile] = array(); + + $this->currentXmlFile = $xmlFile; + + try { + $fr = new FileReader($xmlFile); + } catch (Exception $e) { + $f = new PhingFile($xmlFile); + throw new Exception("XML File not found: " . $f->getAbsolutePath()); + } + + $br = new BufferedReader($fr); + + $this->parser = new ExpatParser($br); + $this->parser->parserSetOption(XML_OPTION_CASE_FOLDING, 0); + $this->parser->setHandler($this); + + try { + $this->parser->parse(); + } catch (Exception $e) { + $br->close(); + throw $e; + } + $br->close(); + + array_pop($this->schemasTagsStack); + + return $this->app; + } + + /** + * Handles opening elements of the xml file. + * + * @param string $uri + * @param string $localName The local name (without prefix), or the empty string if + * Namespace processing is not being performed. + * @param string $rawName The qualified name (with prefix), or the empty string if + * qualified names are not available. + * @param string $attributes The specified or defaulted attributes + */ + public function startElement($name, $attributes) { + + try { + + $parentTag = $this->peekCurrentSchemaTag(); + + if ($parentTag === false) { + + switch($name) { + case "database": + if ($this->isExternalSchema()) { + $this->currentPackage = @$attributes["package"]; + if ($this->currentPackage === null) { + $this->currentPackage = $this->defaultPackage; + } + } else { + $this->currDB = $this->app->addDatabase($attributes); + } + break; + + default: + $this->_throwInvalidTagException($name); + } + + } elseif ($parentTag == "database") { + + switch($name) { + + case "external-schema": + $xmlFile = @$attributes["filename"]; + + //"referenceOnly" attribute is valid in the main schema XML file only, + //and it's ingnored in the nested external-schemas + if (!$this->isExternalSchema()) { + $isForRefOnly = @$attributes["referenceOnly"]; + $this->isForReferenceOnly = ($isForRefOnly !== null ? (strtolower($isForRefOnly) === "true") : true); // defaults to TRUE + } + + if ($xmlFile{0} != '/') { + $f = new PhingFile($this->currentXmlFile); + $xf = new PhingFile($f->getParent(), $xmlFile); + $xmlFile = $xf->getPath(); + } + + $this->parseFile($xmlFile); + break; + + case "domain": + $this->currDB->addDomain($attributes); + break; + + case "table": + $this->currTable = $this->currDB->addTable($attributes); + if ($this->isExternalSchema()) { + $this->currTable->setForReferenceOnly($this->isForReferenceOnly); + $this->currTable->setPackage($this->currentPackage); + } + break; + + case "vendor": + $this->currVendorObject = $this->currDB->addVendorInfo($attributes); + break; + + case "behavior": + $this->currBehavior = $this->currDB->addBehavior($attributes); + break; + + default: + $this->_throwInvalidTagException($name); + } + + } elseif ($parentTag == "table") { + + switch($name) { + case "column": + $this->currColumn = $this->currTable->addColumn($attributes); + break; + + case "foreign-key": + $this->currFK = $this->currTable->addForeignKey($attributes); + break; + + case "index": + $this->currIndex = $this->currTable->addIndex($attributes); + break; + + case "unique": + $this->currUnique = $this->currTable->addUnique($attributes); + break; + + case "vendor": + $this->currVendorObject = $this->currTable->addVendorInfo($attributes); + break; + + case "validator": + $this->currValidator = $this->currTable->addValidator($attributes); + break; + + case "id-method-parameter": + $this->currTable->addIdMethodParameter($attributes); + break; + + case "behavior": + $this->currBehavior = $this->currTable->addBehavior($attributes); + break; + + default: + $this->_throwInvalidTagException($name); + } + + } elseif ($parentTag == "column") { + + switch($name) { + case "inheritance": + $this->currColumn->addInheritance($attributes); + break; + + case "vendor": + $this->currVendorObject = $this->currColumn->addVendorInfo($attributes); + break; + + default: + $this->_throwInvalidTagException($name); + } + + } elseif ($parentTag == "foreign-key") { + + switch($name) { + case "reference": + $this->currFK->addReference($attributes); + break; + + case "vendor": + $this->currVendorObject = $this->currUnique->addVendorInfo($attributes); + break; + + default: + $this->_throwInvalidTagException($name); + } + + } elseif ($parentTag == "index") { + + switch($name) { + case "index-column": + $this->currIndex->addColumn($attributes); + break; + + case "vendor": + $this->currVendorObject = $this->currIndex->addVendorInfo($attributes); + break; + + default: + $this->_throwInvalidTagException($name); + } + + } elseif ($parentTag == "unique") { + + switch($name) { + case "unique-column": + $this->currUnique->addColumn($attributes); + break; + + case "vendor": + $this->currVendorObject = $this->currUnique->addVendorInfo($attributes); + break; + + default: + $this->_throwInvalidTagException($name); + } + } elseif ($parentTag == "behavior") { + + switch($name) { + case "parameter": + $this->currBehavior->addParameter($attributes); + break; + + default: + $this->_throwInvalidTagException($name); + } + } elseif ($parentTag == "validator") { + switch($name) { + case "rule": + $this->currValidator->addRule($attributes); + break; + default: + $this->_throwInvalidTagException($name); + } + } elseif ($parentTag == "vendor") { + + switch($name) { + case "parameter": + $this->currVendorObject->addParameter($attributes); + break; + default: + $this->_throwInvalidTagException($name); + } + + } else { + // it must be an invalid tag + $this->_throwInvalidTagException($name); + } + + $this->pushCurrentSchemaTag($name); + + } catch (BuildException $e) { + throw $e; + } catch (Exception $e) { + echo $e; + echo "\n"; + throw $e; + } + } + + function _throwInvalidTagException($tag_name) + { + throw new BuildException("Unexpected tag <" . $tag_name . ">", $this->parser->getLocation()); + } + + /** + * Handles closing elements of the xml file. + * + * @param uri + * @param localName The local name (without prefix), or the empty string if + * Namespace processing is not being performed. + * @param rawName The qualified name (with prefix), or the empty string if + * qualified names are not available. + */ + public function endElement($name) + { + if (self::DEBUG) { + print("endElement(" . $name . ") called\n"); + } + + $this->popCurrentSchemaTag(); + } + + protected function peekCurrentSchemaTag() + { + $keys = array_keys($this->schemasTagsStack); + return end($this->schemasTagsStack[end($keys)]); + } + + protected function popCurrentSchemaTag() + { + $keys = array_keys($this->schemasTagsStack); + array_pop($this->schemasTagsStack[end($keys)]); + } + + protected function pushCurrentSchemaTag($tag) + { + $keys = array_keys($this->schemasTagsStack); + $this->schemasTagsStack[end($keys)][] = $tag; + } + + protected function isExternalSchema() + { + return (sizeof($this->schemasTagsStack) > 1); + } + + protected function isAlreadyParsed($filePath) + { + return isset($this->schemasTagsStack[$filePath]); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/transform/XmlToAppData.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/transform/XmlToAppData.php new file mode 100644 index 0000000..8e36ada --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/database/transform/XmlToAppData.php @@ -0,0 +1,409 @@ +. + */ + +include_once 'propel/engine/database/model/AppData.php'; + +// Phing dependencies +require_once 'phing/parser/AbstractHandler.php'; +include_once 'phing/system/io/FileReader.php'; + +/** + * A class that is used to parse an input xml schema file and creates an AppData + * PHP object. + * + * @author Hans Lellelid (Propel) + * @author Leon Messerschmidt (Torque) + * @author Jason van Zyl (Torque) + * @author Martin Poeschl (Torque) + * @author Daniel Rall (Torque) + * @version $Revision: 1262 $ + * @package propel.engine.database.transform + */ +class XmlToAppData extends AbstractHandler { + + /** enables debug output */ + const DEBUG = false; + + private $app; + private $platform; + private $currDB; + private $currTable; + private $currColumn; + private $currFK; + private $currIndex; + private $currUnique; + private $currValidator; + private $currBehavior; + private $currVendorObject; + + private $isForReferenceOnly; + private $currentPackage; + private $currentXmlFile; + private $defaultPackage; + + private $encoding; + + /** two-dimensional array, + first dimension is for schemas(key is the path to the schema file), + second is for tags within the schema */ + private $schemasTagsStack = array(); + + public $parser; + + /** + * Creates a new instance for the specified database type. + * + * @param Platform $platform The type of database for the application. + * @param string $defaultPackage the default PHP package used for the om + * @param string $encoding The database encoding. + */ + public function __construct(Platform $platform, $defaultPackage, $encoding = 'iso-8859-1') + { + $this->app = new AppData($platform); + $this->platform = $platform; + $this->defaultPackage = $defaultPackage; + $this->firstPass = true; + $this->encoding = $encoding; + } + + /** + * Parses a XML input file and returns a newly created and + * populated AppData structure. + * + * @param string $xmlFile The input file to parse. + * @return AppData populated by xmlFile. + */ + public function parseFile($xmlFile) + { + // we don't want infinite recursion + if ($this->isAlreadyParsed($xmlFile)) { + return; + } + + $domDocument = new DomDocument('1.0', 'UTF-8'); + $domDocument->load($xmlFile); + + // store current schema file path + $this->schemasTagsStack[$xmlFile] = array(); + + $this->currentXmlFile = $xmlFile; + + try { + $fr = new FileReader($xmlFile); + } catch (Exception $e) { + $f = new PhingFile($xmlFile); + throw new Exception("XML File not found: " . $f->getAbsolutePath()); + } + + $br = new BufferedReader($fr); + + $this->parser = new ExpatParser($br); + $this->parser->parserSetOption(XML_OPTION_CASE_FOLDING, 0); + $this->parser->setHandler($this); + + try { + $this->parser->parse(); + } catch (Exception $e) { + $br->close(); + throw $e; + } + $br->close(); + + array_pop($this->schemasTagsStack); + + return $this->app; + } + + /** + * Handles opening elements of the xml file. + * + * @param string $uri + * @param string $localName The local name (without prefix), or the empty string if + * Namespace processing is not being performed. + * @param string $rawName The qualified name (with prefix), or the empty string if + * qualified names are not available. + * @param string $attributes The specified or defaulted attributes + */ + public function startElement($name, $attributes) { + + try { + + $parentTag = $this->peekCurrentSchemaTag(); + + if ($parentTag === false) { + + switch($name) { + case "database": + if ($this->isExternalSchema()) { + $this->currentPackage = @$attributes["package"]; + if ($this->currentPackage === null) { + $this->currentPackage = $this->defaultPackage; + } + } else { + $this->currDB = $this->app->addDatabase($attributes); + } + break; + + default: + $this->_throwInvalidTagException($name); + } + + } elseif ($parentTag == "database") { + + switch($name) { + + case "external-schema": + $xmlFile = @$attributes["filename"]; + + //"referenceOnly" attribute is valid in the main schema XML file only, + //and it's ingnored in the nested external-schemas + if (!$this->isExternalSchema()) { + $isForRefOnly = @$attributes["referenceOnly"]; + $this->isForReferenceOnly = ($isForRefOnly !== null ? (strtolower($isForRefOnly) === "true") : true); // defaults to TRUE + } + + if ($xmlFile{0} != '/') { + $f = new PhingFile($this->currentXmlFile); + $xf = new PhingFile($f->getParent(), $xmlFile); + $xmlFile = $xf->getPath(); + } + + $this->parseFile($xmlFile); + break; + + case "domain": + $this->currDB->addDomain($attributes); + break; + + case "table": + $this->currTable = $this->currDB->addTable($attributes); + if ($this->isExternalSchema()) { + $this->currTable->setForReferenceOnly($this->isForReferenceOnly); + $this->currTable->setPackage($this->currentPackage); + } + break; + + case "vendor": + $this->currVendorObject = $this->currDB->addVendorInfo($attributes); + break; + + case "behavior": + $this->currBehavior = $this->currDB->addBehavior($attributes); + break; + + default: + $this->_throwInvalidTagException($name); + } + + } elseif ($parentTag == "table") { + + switch($name) { + case "column": + $this->currColumn = $this->currTable->addColumn($attributes); + break; + + case "foreign-key": + $this->currFK = $this->currTable->addForeignKey($attributes); + break; + + case "index": + $this->currIndex = $this->currTable->addIndex($attributes); + break; + + case "unique": + $this->currUnique = $this->currTable->addUnique($attributes); + break; + + case "vendor": + $this->currVendorObject = $this->currTable->addVendorInfo($attributes); + break; + + case "validator": + $this->currValidator = $this->currTable->addValidator($attributes); + break; + + case "id-method-parameter": + $this->currTable->addIdMethodParameter($attributes); + break; + + case "behavior": + $this->currBehavior = $this->currTable->addBehavior($attributes); + break; + + default: + $this->_throwInvalidTagException($name); + } + + } elseif ($parentTag == "column") { + + switch($name) { + case "inheritance": + $this->currColumn->addInheritance($attributes); + break; + + case "vendor": + $this->currVendorObject = $this->currColumn->addVendorInfo($attributes); + break; + + default: + $this->_throwInvalidTagException($name); + } + + } elseif ($parentTag == "foreign-key") { + + switch($name) { + case "reference": + $this->currFK->addReference($attributes); + break; + + case "vendor": + $this->currVendorObject = $this->currUnique->addVendorInfo($attributes); + break; + + default: + $this->_throwInvalidTagException($name); + } + + } elseif ($parentTag == "index") { + + switch($name) { + case "index-column": + $this->currIndex->addColumn($attributes); + break; + + case "vendor": + $this->currVendorObject = $this->currIndex->addVendorInfo($attributes); + break; + + default: + $this->_throwInvalidTagException($name); + } + + } elseif ($parentTag == "unique") { + + switch($name) { + case "unique-column": + $this->currUnique->addColumn($attributes); + break; + + case "vendor": + $this->currVendorObject = $this->currUnique->addVendorInfo($attributes); + break; + + default: + $this->_throwInvalidTagException($name); + } + } elseif ($parentTag == "behavior") { + + switch($name) { + case "parameter": + $this->currBehavior->addParameter($attributes); + break; + + default: + $this->_throwInvalidTagException($name); + } + } elseif ($parentTag == "validator") { + switch($name) { + case "rule": + $this->currValidator->addRule($attributes); + break; + default: + $this->_throwInvalidTagException($name); + } + } elseif ($parentTag == "vendor") { + + switch($name) { + case "parameter": + $this->currVendorObject->addParameter($attributes); + break; + default: + $this->_throwInvalidTagException($name); + } + + } else { + // it must be an invalid tag + $this->_throwInvalidTagException($name); + } + + $this->pushCurrentSchemaTag($name); + + } catch (BuildException $e) { + throw $e; + } catch (Exception $e) { + echo $e; + echo "\n"; + throw $e; + } + } + + function _throwInvalidTagException($tag_name) + { + throw new BuildException("Unexpected tag <" . $tag_name . ">", $this->parser->getLocation()); + } + + /** + * Handles closing elements of the xml file. + * + * @param uri + * @param localName The local name (without prefix), or the empty string if + * Namespace processing is not being performed. + * @param rawName The qualified name (with prefix), or the empty string if + * qualified names are not available. + */ + public function endElement($name) + { + if (self::DEBUG) { + print("endElement(" . $name . ") called\n"); + } + + $this->popCurrentSchemaTag(); + } + + protected function peekCurrentSchemaTag() + { + $keys = array_keys($this->schemasTagsStack); + return end($this->schemasTagsStack[end($keys)]); + } + + protected function popCurrentSchemaTag() + { + $keys = array_keys($this->schemasTagsStack); + array_pop($this->schemasTagsStack[end($keys)]); + } + + protected function pushCurrentSchemaTag($tag) + { + $keys = array_keys($this->schemasTagsStack); + $this->schemasTagsStack[end($keys)][] = $tag; + } + + protected function isExternalSchema() + { + return (sizeof($this->schemasTagsStack) > 1); + } + + protected function isAlreadyParsed($filePath) + { + return isset($this->schemasTagsStack[$filePath]); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/all-wcprops new file mode 100644 index 0000000..4d89e8a --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/all-wcprops @@ -0,0 +1,47 @@ +K 25 +svn:wc:ra_dav:version-url +V 66 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/platform +END +DefaultPlatform.php +K 25 +svn:wc:ra_dav:version-url +V 86 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/platform/DefaultPlatform.php +END +MysqlPlatform.php +K 25 +svn:wc:ra_dav:version-url +V 84 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/platform/MysqlPlatform.php +END +OraclePlatform.php +K 25 +svn:wc:ra_dav:version-url +V 85 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/platform/OraclePlatform.php +END +PgsqlPlatform.php +K 25 +svn:wc:ra_dav:version-url +V 84 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/platform/PgsqlPlatform.php +END +MssqlPlatform.php +K 25 +svn:wc:ra_dav:version-url +V 84 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/platform/MssqlPlatform.php +END +Platform.php +K 25 +svn:wc:ra_dav:version-url +V 79 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/platform/Platform.php +END +SqlitePlatform.php +K 25 +svn:wc:ra_dav:version-url +V 85 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/engine/platform/SqlitePlatform.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/entries new file mode 100644 index 0000000..d9ad952 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/entries @@ -0,0 +1,266 @@ +10 + +dir +2332 +http://propel.mirror.svn.symfony-project.com/tags/1.4.2/generator/classes/propel/engine/platform +http://propel.mirror.svn.symfony-project.com + + + +2009-10-26T20:54:39.333354Z +1262 +francois + + + + + + + + + + + + + + +a84bc4f6-26e8-416f-aa96-3cde13879fbb + +DefaultPlatform.php +file + + + + +2012-05-10T18:42:15.401551Z +395cf7e6901b0c46a33f3cc5a40f255b +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +7403 + +MysqlPlatform.php +file + + + + +2012-05-10T18:42:15.401551Z +7a0d5d5c6d5223c4f79d746ae40135db +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +3602 + +OraclePlatform.php +file + + + + +2012-05-10T18:42:15.405554Z +d4840bc4c15696f75d03f2815258aa5f +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +3575 + +PgsqlPlatform.php +file + + + + +2012-05-10T18:42:15.405554Z +d2a76969dc4a1cef5c647a6ccb853db0 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +3869 + +MssqlPlatform.php +file + + + + +2012-05-10T18:42:15.417550Z +d28b5277fcbe4afd08d92504175dc468 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +3755 + +Platform.php +file + + + + +2012-05-10T18:42:15.537545Z +c5320a49b368abfe77eab48f2a57c761 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +5428 + +SqlitePlatform.php +file + + + + +2012-05-10T18:42:15.537545Z +7ade77302d906c49d29256c069e44cad +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +3037 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/prop-base/DefaultPlatform.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/prop-base/DefaultPlatform.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/prop-base/DefaultPlatform.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/prop-base/MssqlPlatform.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/prop-base/MssqlPlatform.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/prop-base/MssqlPlatform.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/prop-base/MysqlPlatform.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/prop-base/MysqlPlatform.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/prop-base/MysqlPlatform.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/prop-base/OraclePlatform.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/prop-base/OraclePlatform.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/prop-base/OraclePlatform.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/prop-base/PgsqlPlatform.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/prop-base/PgsqlPlatform.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/prop-base/PgsqlPlatform.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/prop-base/Platform.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/prop-base/Platform.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/prop-base/Platform.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/prop-base/SqlitePlatform.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/prop-base/SqlitePlatform.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/prop-base/SqlitePlatform.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/text-base/DefaultPlatform.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/text-base/DefaultPlatform.php.svn-base new file mode 100644 index 0000000..5afbaa1 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/text-base/DefaultPlatform.php.svn-base @@ -0,0 +1,309 @@ +. + */ + +require_once 'propel/engine/platform/Platform.php'; +include_once 'propel/engine/database/model/Domain.php'; +include_once 'propel/engine/database/model/PropelTypes.php'; + +/** + * Default implementation for the Platform interface. + * + * @author Martin Poeschl (Torque) + * @version $Revision$ + * @package propel.engine.platform + */ +class DefaultPlatform implements Platform { + + /** + * Mapping from Propel types to Domain objects. + * + * @var array + */ + private $schemaDomainMap; + + /** + * GeneratorConfig object holding build properties. + * + * @var GeneratorConfig + */ + private $generatorConfig; + + /** + * @var PDO Database connection. + */ + private $con; + + /** + * Default constructor. + * @param PDO $con Optional database connection to use in this platform. + */ + public function __construct(PDO $con = null) + { + if ($con) $this->setConnection($con); + $this->initialize(); + } + + /** + * Set the database connection to use for this Platform class. + * @param PDO $con Database connection to use in this platform. + */ + public function setConnection(PDO $con = null) + { + $this->con = $con; + } + + /** + * Sets the GeneratorConfig to use in the parsing. + * + * @param GeneratorConfig $config + */ + public function setGeneratorConfig(GeneratorConfig $config) + { + $this->generatorConfig = $config; + } + + /** + * Gets the GeneratorConfig option. + * + * @return GeneratorConfig + */ + public function getGeneratorConfig() + { + return $this->generatorConfig; + } + + /** + * Gets a specific propel (renamed) property from the build. + * + * @param string $name + * @return mixed + */ + protected function getBuildProperty($name) + { + if ($this->generatorConfig !== null) { + return $this->generatorConfig->getBuildProperty($name); + } + return null; + } + + /** + * Returns the database connection to use for this Platform class. + * @return PDO The database connection or NULL if none has been set. + */ + public function getConnection() + { + return $this->con; + } + + /** + * Initialize the type -> Domain mapping. + */ + protected function initialize() + { + $this->schemaDomainMap = array(); + foreach (PropelTypes::getPropelTypes() as $type) { + $this->schemaDomainMap[$type] = new Domain($type); + } + // BU_* no longer needed, so map these to the DATE/TIMESTAMP domains + $this->schemaDomainMap[PropelTypes::BU_DATE] = new Domain(PropelTypes::DATE); + $this->schemaDomainMap[PropelTypes::BU_TIMESTAMP] = new Domain(PropelTypes::TIMESTAMP); + + // Boolean is a bit special, since typically it must be mapped to INT type. + $this->schemaDomainMap[PropelTypes::BOOLEAN] = new Domain(PropelTypes::BOOLEAN, "INTEGER"); + } + + /** + * Adds a mapping entry for specified Domain. + * @param Domain $domain + */ + protected function setSchemaDomainMapping(Domain $domain) + { + $this->schemaDomainMap[$domain->getType()] = $domain; + } + + /** + * Returns the short name of the database type that this platform represents. + * For example MysqlPlatform->getDatabaseType() returns 'mysql'. + * @return string + */ + public function getDatabaseType() + { + $clazz = get_class($this); + $pos = strpos($clazz, 'Platform'); + return strtolower(substr($clazz,0,$pos)); + } + + /** + * @see Platform::getMaxColumnNameLength() + */ + public function getMaxColumnNameLength() + { + return 64; + } + + /** + * @see Platform::getNativeIdMethod() + */ + public function getNativeIdMethod() + { + return Platform::IDENTITY; + } + + /** + * @see Platform::getDomainForType() + */ + public function getDomainForType($propelType) + { + if (!isset($this->schemaDomainMap[$propelType])) { + throw new EngineException("Cannot map unknown Propel type " . var_export($propelType, true) . " to native database type."); + } + return $this->schemaDomainMap[$propelType]; + } + + /** + * @return string Returns the SQL fragment to use if null values are disallowed. + * @see Platform::getNullString(boolean) + */ + public function getNullString($notNull) + { + return ($notNull ? "NOT NULL" : ""); + } + + /** + * @see Platform::getAutoIncrement() + */ + public function getAutoIncrement() + { + return "IDENTITY"; + } + + /** + * @see Platform::hasScale(String) + */ + public function hasScale($sqlType) + { + return true; + } + + /** + * @see Platform::hasSize(String) + */ + public function hasSize($sqlType) + { + return true; + } + + /** + * @see Platform::quote() + */ + public function quote($text) + { + if ($this->getConnection()) { + return $this->getConnection()->quote($text); + } else { + return "'" . $this->disconnectedEscapeText($text) . "'"; + } + } + + /** + * Method to escape text when no connection has been set. + * + * The subclasses can implement this using string replacement functions + * or native DB methods. + * + * @param string $text Text that needs to be escaped. + * @return string + */ + protected function disconnectedEscapeText($text) + { + return str_replace("'", "''", $text); + } + + /** + * @see Platform::quoteIdentifier() + */ + public function quoteIdentifier($text) + { + return '"' . $text . '"'; + } + + /** + * @see Platform::supportsNativeDeleteTrigger() + */ + public function supportsNativeDeleteTrigger() + { + return false; + } + + /** + * @see Platform::supportsInsertNullPk() + */ + public function supportsInsertNullPk() + { + return true; + } + + /** + * Whether the underlying PDO driver for this platform returns BLOB columns as streams (instead of strings). + * @return boolean + */ + public function hasStreamBlobImpl() + { + return false; + } + + /** + * @see Platform::getBooleanString() + */ + public function getBooleanString($b) + { + $b = ($b === true || strtolower($b) === 'true' || $b === 1 || $b === '1' || strtolower($b) === 'y' || strtolower($b) === 'yes'); + return ($b ? '1' : '0'); + } + + /** + * Gets the preferred timestamp formatter for setting date/time values. + * @return string + */ + public function getTimestampFormatter() + { + return DateTime::ISO8601; + } + + /** + * Gets the preferred time formatter for setting date/time values. + * @return string + */ + public function getTimeFormatter() + { + return 'H:i:s'; + } + + /** + * Gets the preferred date formatter for setting date/time values. + * @return string + */ + public function getDateFormatter() + { + return 'Y-m-d'; + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/text-base/MssqlPlatform.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/text-base/MssqlPlatform.php.svn-base new file mode 100644 index 0000000..7435d52 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/text-base/MssqlPlatform.php.svn-base @@ -0,0 +1,117 @@ +. + */ + +require_once 'propel/engine/platform/DefaultPlatform.php'; +include_once 'propel/engine/database/model/Domain.php'; + +/** + * MS SQL Platform implementation. + * + * @author Hans Lellelid (Propel) + * @author Martin Poeschl (Torque) + * @version $Revision$ + * @package propel.engine.platform + */ +class MssqlPlatform extends DefaultPlatform { + + /** + * Initializes db specific domain mapping. + */ + protected function initialize() + { + parent::initialize(); + $this->setSchemaDomainMapping(new Domain(PropelTypes::INTEGER, "INT")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::BOOLEAN, "INT")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::DOUBLE, "FLOAT")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::LONGVARCHAR, "TEXT")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::CLOB, "TEXT")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::DATE, "DATETIME")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::BU_DATE, "DATETIME")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::TIME, "DATETIME")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::TIMESTAMP, "DATETIME")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::BU_TIMESTAMP, "DATETIME")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::BINARY, "BINARY(7132)")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::VARBINARY, "IMAGE")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::LONGVARBINARY, "IMAGE")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::BLOB, "IMAGE")); + } + + /** + * @see Platform#getMaxColumnNameLength() + */ + public function getMaxColumnNameLength() + { + return 128; + } + + /** + * @return Explicitly returns NULL if null values are + * allowed (as recomended by Microsoft). + * @see Platform#getNullString(boolean) + */ + public function getNullString($notNull) + { + return ($notNull ? "NOT NULL" : "NULL"); + } + + /** + * @see Platform::supportsNativeDeleteTrigger() + */ + public function supportsNativeDeleteTrigger() + { + return true; + } + + /** + * @see Platform::supportsInsertNullPk() + */ + public function supportsInsertNullPk() + { + return false; + } + + /** + * @see Platform::hasSize(String) + */ + public function hasSize($sqlType) + { + return !("INT" == $sqlType || "TEXT" == $sqlType); + } + + /** + * @see Platform::quoteIdentifier() + */ + public function quoteIdentifier($text) + { + return '[' . $text . ']'; + } + + /** + * Gets the preferred timestamp formatter for setting date/time values. + * @return string + */ + public function getTimestampFormatter() + { + return 'Y-m-d H:i:s'; + } + + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/text-base/MysqlPlatform.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/text-base/MysqlPlatform.php.svn-base new file mode 100644 index 0000000..25cc074 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/text-base/MysqlPlatform.php.svn-base @@ -0,0 +1,120 @@ +. + */ + +require_once 'propel/engine/platform/DefaultPlatform.php'; + +/** + * MySql Platform implementation. + * + * @author Hans Lellelid (Propel) + * @author Martin Poeschl (Torque) + * @version $Revision$ + * @package propel.engine.platform + */ +class MysqlPlatform extends DefaultPlatform { + + /** + * Initializes db specific domain mapping. + */ + protected function initialize() + { + parent::initialize(); + $this->setSchemaDomainMapping(new Domain(PropelTypes::BOOLEAN, "TINYINT")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::NUMERIC, "DECIMAL")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::LONGVARCHAR, "TEXT")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::BINARY, "BLOB")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::VARBINARY, "MEDIUMBLOB")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::LONGVARBINARY, "LONGBLOB")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::BLOB, "LONGBLOB")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::CLOB, "LONGTEXT")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::TIMESTAMP, "DATETIME")); + } + + /** + * @see Platform#getAutoIncrement() + */ + public function getAutoIncrement() + { + return "AUTO_INCREMENT"; + } + + /** + * @see Platform#getMaxColumnNameLength() + */ + public function getMaxColumnNameLength() + { + return 64; + } + + /** + * @see Platform::supportsNativeDeleteTrigger() + */ + public function supportsNativeDeleteTrigger() + { + $usingInnoDB = false; + if (class_exists('DataModelBuilder', false)) + { + $usingInnoDB = strtolower($this->getBuildProperty('mysqlTableType')) == 'innodb'; + } + return $usingInnoDB || false; + } + + /** + * @see Platform#hasSize(String) + */ + public function hasSize($sqlType) + { + return !("MEDIUMTEXT" == $sqlType || "LONGTEXT" == $sqlType + || "BLOB" == $sqlType || "MEDIUMBLOB" == $sqlType + || "LONGBLOB" == $sqlType); + } + + /** + * Escape the string for RDBMS. + * @param string $text + * @return string + */ + public function disconnectedEscapeText($text) + { + if (function_exists('mysql_escape_string')) { + return mysql_escape_string($text); + } else { + return addslashes($text); + } + } + + /** + * @see Platform::quoteIdentifier() + */ + public function quoteIdentifier($text) + { + return '`' . $text . '`'; + } + + /** + * Gets the preferred timestamp formatter for setting date/time values. + * @return string + */ + public function getTimestampFormatter() + { + return 'Y-m-d H:i:s'; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/text-base/OraclePlatform.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/text-base/OraclePlatform.php.svn-base new file mode 100644 index 0000000..3b7faf6 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/text-base/OraclePlatform.php.svn-base @@ -0,0 +1,99 @@ +. + */ + +require_once 'propel/engine/platform/DefaultPlatform.php'; + +/** + * Oracle Platform implementation. + * + * @author Hans Lellelid (Propel) + * @author Martin Poeschl (Torque) + * @version $Revision$ + * @package propel.engine.platform + */ +class OraclePlatform extends DefaultPlatform { + + /** + * Initializes db specific domain mapping. + */ + protected function initialize() + { + parent::initialize(); + $this->setSchemaDomainMapping(new Domain(PropelTypes::BOOLEAN, "NUMBER", "1", "0")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::TINYINT, "NUMBER", "3", "0")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::SMALLINT, "NUMBER", "5", "0")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::INTEGER, "NUMBER")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::BIGINT, "NUMBER", "20", "0")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::REAL, "NUMBER")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::DOUBLE, "FLOAT")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::DECIMAL, "NUMBER")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::NUMERIC, "NUMBER")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::VARCHAR, "NVARCHAR2")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::LONGVARCHAR, "NVARCHAR2", "2000")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::TIME, "TIME")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::DATE, "DATE")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::TIMESTAMP, "TIMESTAMP")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::BINARY, "LONG RAW")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::VARBINARY, "BLOB")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::LONGVARBINARY, "LONG RAW")); + } + + /** + * @see Platform#getMaxColumnNameLength() + */ + public function getMaxColumnNameLength() + { + return 30; + } + + /** + * @see Platform#getNativeIdMethod() + */ + public function getNativeIdMethod() + { + return Platform::SEQUENCE; + } + + /** + * @see Platform#getAutoIncrement() + */ + public function getAutoIncrement() + { + return ""; + } + + /** + * @see Platform::supportsNativeDeleteTrigger() + */ + public function supportsNativeDeleteTrigger() + { + return true; + } + + /** + * Whether the underlying PDO driver for this platform returns BLOB columns as streams (instead of strings). + * @return boolean + */ + public function hasStreamBlobImpl() + { + return true; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/text-base/PgsqlPlatform.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/text-base/PgsqlPlatform.php.svn-base new file mode 100644 index 0000000..f656126 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/text-base/PgsqlPlatform.php.svn-base @@ -0,0 +1,128 @@ +. + */ + +require_once 'propel/engine/platform/DefaultPlatform.php'; + +/** + * Postgresql Platform implementation. + * + * @author Hans Lellelid (Propel) + * @author Martin Poeschl (Torque) + * @version $Revision$ + * @package propel.engine.platform + */ +class PgsqlPlatform extends DefaultPlatform { + + /** + * Initializes db specific domain mapping. + */ + protected function initialize() + { + parent::initialize(); + $this->setSchemaDomainMapping(new Domain(PropelTypes::BOOLEAN, "BOOLEAN")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::TINYINT, "INT2")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::SMALLINT, "INT2")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::BIGINT, "INT8")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::REAL, "FLOAT")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::DOUBLE, "DOUBLE PRECISION")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::LONGVARCHAR, "TEXT")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::BINARY, "BYTEA")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::VARBINARY, "BYTEA")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::LONGVARBINARY, "BYTEA")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::BLOB, "BYTEA")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::CLOB, "TEXT")); + } + + /** + * @see Platform#getNativeIdMethod() + */ + public function getNativeIdMethod() + { + return Platform::SERIAL; + } + + /** + * @see Platform#getAutoIncrement() + */ + public function getAutoIncrement() + { + return ""; + } + + /** + * @see Platform#getMaxColumnNameLength() + */ + public function getMaxColumnNameLength() + { + return 32; + } + + /** + * Escape the string for RDBMS. + * @param string $text + * @return string + */ + public function disconnectedEscapeText($text) + { + if (function_exists('pg_escape_string')) { + return pg_escape_string($text); + } else { + return parent::disconnectedEscapeText($text); + } + } + + /** + * @see Platform::getBooleanString() + */ + public function getBooleanString($b) + { + // parent method does the checking for allowes tring + // representations & returns integer + $b = parent::getBooleanString($b); + return ($b ? "'t'" : "'f'"); + } + + /** + * @see Platform::supportsNativeDeleteTrigger() + */ + public function supportsNativeDeleteTrigger() + { + return true; + } + + /** + * @see Platform::hasSize(String) + * TODO collect info for all platforms + */ + public function hasSize($sqlType) + { + return !("BYTEA" == $sqlType || "TEXT" == $sqlType); + } + + /** + * Whether the underlying PDO driver for this platform returns BLOB columns as streams (instead of strings). + * @return boolean + */ + public function hasStreamBlobImpl() + { + return true; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/text-base/Platform.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/text-base/Platform.php.svn-base new file mode 100644 index 0000000..4a3d9bc --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/text-base/Platform.php.svn-base @@ -0,0 +1,192 @@ +. + */ + +/** + * Interface for RDBMS platform specific behaviour. + * + * @author Hans Lellelid (Propel) + * @author Martin Poeschl (Torque) + * @version $Revision$ + * @package propel.engine.platform + */ +interface Platform { + + /** + * Constant for auto-increment id method. + */ + const IDENTITY = "identity"; + + /** + * Constant for sequence id method. + */ + const SEQUENCE = "sequence"; + + /** + * Constant for serial id method (postgresql). + */ + const SERIAL = "serial"; + + /** + * Sets a database connection to use (for quoting, etc.). + * @param PDO $con The database connection to use in this Platform class. + */ + public function setConnection(PDO $con = null); + + /** + * Returns the database connection to use for this Platform class. + * @return PDO The database connection or NULL if none has been set. + */ + public function getConnection(); + + /** + * Sets the GeneratorConfig which contains any generator build properties. + * + * @param GeneratorConfig $config + */ + public function setGeneratorConfig(GeneratorConfig $config); + + /** + * Gets the GeneratorConfig object. + * + * @return GeneratorConfig + */ + public function getGeneratorConfig(); + + /** + * Returns the short name of the database type that this platform represents. + * For example MysqlPlatform->getDatabaseType() returns 'mysql'. + * @return string + */ + public function getDatabaseType(); + + /** + * Returns the native IdMethod (sequence|identity) + * + * @return string The native IdMethod (Platform:IDENTITY, Platform::SEQUENCE). + */ + public function getNativeIdMethod(); + + /** + * Returns the max column length supported by the db. + * + * @return int The max column length + */ + public function getMaxColumnNameLength(); + + /** + * Returns the db specific domain for a jdbcType. + * + * @param string $creoleType the creole type name. + * @return Domain The db specific domain. + */ + public function getDomainForType($creoleType); + + /** + * @return string The RDBMS-specific SQL fragment for NULL + * or NOT NULL. + */ + public function getNullString($notNull); + + /** + * @return The RDBMS-specific SQL fragment for autoincrement. + */ + public function getAutoIncrement(); + + /** + * Returns if the RDBMS-specific SQL type has a size attribute. + * + * @param string $sqlType the SQL type + * @return boolean True if the type has a size attribute + */ + public function hasSize($sqlType); + + /** + * Returns if the RDBMS-specific SQL type has a scale attribute. + * + * @param string $sqlType the SQL type + * @return boolean True if the type has a scale attribute + */ + public function hasScale($sqlType); + + /** + * Quote and escape needed characters in the string for unerlying RDBMS. + * @param string $text + * @return string + */ + public function quote($text); + + /** + * Quotes identifiers used in database SQL. + * @param string $text + * @return string Quoted identifier. + */ + public function quoteIdentifier($text); + + /** + * Whether RDBMS supports native ON DELETE triggers (e.g. ON DELETE CASCADE). + * @return boolean + */ + public function supportsNativeDeleteTrigger(); + + /** + * Whether RDBMS supports INSERT null values in autoincremented primary keys + * @return boolean + */ + public function supportsInsertNullPk(); + + /** + * Returns the boolean value for the RDBMS. + * + * This value should match the boolean value that is set + * when using Creole's PreparedStatement::setBoolean(). + * + * This function is used to set default column values when building + * SQL. + * + * @param mixed $tf A boolean or string representation of boolean ('y', 'true'). + * @return mixed + */ + public function getBooleanString($tf); + + /** + * Whether the underlying PDO driver for this platform returns BLOB columns as streams (instead of strings). + * @return boolean + */ + public function hasStreamBlobImpl(); + + /** + * Gets the preferred timestamp formatter for setting date/time values. + * @return string + */ + public function getTimestampFormatter(); + + /** + * Gets the preferred date formatter for setting time values. + * @return string + */ + public function getDateFormatter(); + + /** + * Gets the preferred time formatter for setting time values. + * @return string + */ + public function getTimeFormatter(); +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/text-base/SqlitePlatform.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/text-base/SqlitePlatform.php.svn-base new file mode 100644 index 0000000..e014226 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/.svn/text-base/SqlitePlatform.php.svn-base @@ -0,0 +1,97 @@ +. + */ + +require_once 'propel/engine/platform/DefaultPlatform.php'; + +/** + * SQLite Platform implementation. + * + * @author Hans Lellelid + * @version $Revision$ + * @package propel.engine.platform + */ +class SqlitePlatform extends DefaultPlatform { + + /** + * Initializes db specific domain mapping. + */ + protected function initialize() + { + parent::initialize(); + $this->setSchemaDomainMapping(new Domain(PropelTypes::NUMERIC, "DECIMAL")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::LONGVARCHAR, "MEDIUMTEXT")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::DATE, "DATETIME")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::BINARY, "BLOB")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::VARBINARY, "MEDIUMBLOB")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::LONGVARBINARY, "LONGBLOB")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::BLOB, "LONGBLOB")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::CLOB, "LONGTEXT")); + } + + /** + * @see Platform#getAutoIncrement() + * @link http://www.sqlite.org/autoinc.html + */ + public function getAutoIncrement() + { + + return "PRIMARY KEY"; + } + + /** + * @see Platform#getMaxColumnNameLength() + */ + public function getMaxColumnNameLength() + { + return 1024; + } + + /** + * @see Platform#hasSize(String) + */ + public function hasSize($sqlType) { + return !("MEDIUMTEXT" == $sqlType || "LONGTEXT" == $sqlType + || "BLOB" == $sqlType || "MEDIUMBLOB" == $sqlType + || "LONGBLOB" == $sqlType); + } + + /** + * Escape the string for RDBMS. + * @param string $text + * @return string + */ + public function disconnectedEscapeText($text) + { + if (function_exists('sqlite_escape_string')) { + return sqlite_escape_string($text); + } else { + return parent::disconnectedEscapeText($text); + } + } + + /** + * @see Platform::quoteIdentifier() + */ + public function quoteIdentifier($text) + { + return '[' . $text . ']'; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/DefaultPlatform.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/DefaultPlatform.php new file mode 100644 index 0000000..f8710e8 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/DefaultPlatform.php @@ -0,0 +1,309 @@ +. + */ + +require_once 'propel/engine/platform/Platform.php'; +include_once 'propel/engine/database/model/Domain.php'; +include_once 'propel/engine/database/model/PropelTypes.php'; + +/** + * Default implementation for the Platform interface. + * + * @author Martin Poeschl (Torque) + * @version $Revision: 1262 $ + * @package propel.engine.platform + */ +class DefaultPlatform implements Platform { + + /** + * Mapping from Propel types to Domain objects. + * + * @var array + */ + private $schemaDomainMap; + + /** + * GeneratorConfig object holding build properties. + * + * @var GeneratorConfig + */ + private $generatorConfig; + + /** + * @var PDO Database connection. + */ + private $con; + + /** + * Default constructor. + * @param PDO $con Optional database connection to use in this platform. + */ + public function __construct(PDO $con = null) + { + if ($con) $this->setConnection($con); + $this->initialize(); + } + + /** + * Set the database connection to use for this Platform class. + * @param PDO $con Database connection to use in this platform. + */ + public function setConnection(PDO $con = null) + { + $this->con = $con; + } + + /** + * Sets the GeneratorConfig to use in the parsing. + * + * @param GeneratorConfig $config + */ + public function setGeneratorConfig(GeneratorConfig $config) + { + $this->generatorConfig = $config; + } + + /** + * Gets the GeneratorConfig option. + * + * @return GeneratorConfig + */ + public function getGeneratorConfig() + { + return $this->generatorConfig; + } + + /** + * Gets a specific propel (renamed) property from the build. + * + * @param string $name + * @return mixed + */ + protected function getBuildProperty($name) + { + if ($this->generatorConfig !== null) { + return $this->generatorConfig->getBuildProperty($name); + } + return null; + } + + /** + * Returns the database connection to use for this Platform class. + * @return PDO The database connection or NULL if none has been set. + */ + public function getConnection() + { + return $this->con; + } + + /** + * Initialize the type -> Domain mapping. + */ + protected function initialize() + { + $this->schemaDomainMap = array(); + foreach (PropelTypes::getPropelTypes() as $type) { + $this->schemaDomainMap[$type] = new Domain($type); + } + // BU_* no longer needed, so map these to the DATE/TIMESTAMP domains + $this->schemaDomainMap[PropelTypes::BU_DATE] = new Domain(PropelTypes::DATE); + $this->schemaDomainMap[PropelTypes::BU_TIMESTAMP] = new Domain(PropelTypes::TIMESTAMP); + + // Boolean is a bit special, since typically it must be mapped to INT type. + $this->schemaDomainMap[PropelTypes::BOOLEAN] = new Domain(PropelTypes::BOOLEAN, "INTEGER"); + } + + /** + * Adds a mapping entry for specified Domain. + * @param Domain $domain + */ + protected function setSchemaDomainMapping(Domain $domain) + { + $this->schemaDomainMap[$domain->getType()] = $domain; + } + + /** + * Returns the short name of the database type that this platform represents. + * For example MysqlPlatform->getDatabaseType() returns 'mysql'. + * @return string + */ + public function getDatabaseType() + { + $clazz = get_class($this); + $pos = strpos($clazz, 'Platform'); + return strtolower(substr($clazz,0,$pos)); + } + + /** + * @see Platform::getMaxColumnNameLength() + */ + public function getMaxColumnNameLength() + { + return 64; + } + + /** + * @see Platform::getNativeIdMethod() + */ + public function getNativeIdMethod() + { + return Platform::IDENTITY; + } + + /** + * @see Platform::getDomainForType() + */ + public function getDomainForType($propelType) + { + if (!isset($this->schemaDomainMap[$propelType])) { + throw new EngineException("Cannot map unknown Propel type " . var_export($propelType, true) . " to native database type."); + } + return $this->schemaDomainMap[$propelType]; + } + + /** + * @return string Returns the SQL fragment to use if null values are disallowed. + * @see Platform::getNullString(boolean) + */ + public function getNullString($notNull) + { + return ($notNull ? "NOT NULL" : ""); + } + + /** + * @see Platform::getAutoIncrement() + */ + public function getAutoIncrement() + { + return "IDENTITY"; + } + + /** + * @see Platform::hasScale(String) + */ + public function hasScale($sqlType) + { + return true; + } + + /** + * @see Platform::hasSize(String) + */ + public function hasSize($sqlType) + { + return true; + } + + /** + * @see Platform::quote() + */ + public function quote($text) + { + if ($this->getConnection()) { + return $this->getConnection()->quote($text); + } else { + return "'" . $this->disconnectedEscapeText($text) . "'"; + } + } + + /** + * Method to escape text when no connection has been set. + * + * The subclasses can implement this using string replacement functions + * or native DB methods. + * + * @param string $text Text that needs to be escaped. + * @return string + */ + protected function disconnectedEscapeText($text) + { + return str_replace("'", "''", $text); + } + + /** + * @see Platform::quoteIdentifier() + */ + public function quoteIdentifier($text) + { + return '"' . $text . '"'; + } + + /** + * @see Platform::supportsNativeDeleteTrigger() + */ + public function supportsNativeDeleteTrigger() + { + return false; + } + + /** + * @see Platform::supportsInsertNullPk() + */ + public function supportsInsertNullPk() + { + return true; + } + + /** + * Whether the underlying PDO driver for this platform returns BLOB columns as streams (instead of strings). + * @return boolean + */ + public function hasStreamBlobImpl() + { + return false; + } + + /** + * @see Platform::getBooleanString() + */ + public function getBooleanString($b) + { + $b = ($b === true || strtolower($b) === 'true' || $b === 1 || $b === '1' || strtolower($b) === 'y' || strtolower($b) === 'yes'); + return ($b ? '1' : '0'); + } + + /** + * Gets the preferred timestamp formatter for setting date/time values. + * @return string + */ + public function getTimestampFormatter() + { + return DateTime::ISO8601; + } + + /** + * Gets the preferred time formatter for setting date/time values. + * @return string + */ + public function getTimeFormatter() + { + return 'H:i:s'; + } + + /** + * Gets the preferred date formatter for setting date/time values. + * @return string + */ + public function getDateFormatter() + { + return 'Y-m-d'; + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/MssqlPlatform.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/MssqlPlatform.php new file mode 100644 index 0000000..a486a7c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/MssqlPlatform.php @@ -0,0 +1,117 @@ +. + */ + +require_once 'propel/engine/platform/DefaultPlatform.php'; +include_once 'propel/engine/database/model/Domain.php'; + +/** + * MS SQL Platform implementation. + * + * @author Hans Lellelid (Propel) + * @author Martin Poeschl (Torque) + * @version $Revision: 1262 $ + * @package propel.engine.platform + */ +class MssqlPlatform extends DefaultPlatform { + + /** + * Initializes db specific domain mapping. + */ + protected function initialize() + { + parent::initialize(); + $this->setSchemaDomainMapping(new Domain(PropelTypes::INTEGER, "INT")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::BOOLEAN, "INT")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::DOUBLE, "FLOAT")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::LONGVARCHAR, "TEXT")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::CLOB, "TEXT")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::DATE, "DATETIME")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::BU_DATE, "DATETIME")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::TIME, "DATETIME")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::TIMESTAMP, "DATETIME")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::BU_TIMESTAMP, "DATETIME")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::BINARY, "BINARY(7132)")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::VARBINARY, "IMAGE")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::LONGVARBINARY, "IMAGE")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::BLOB, "IMAGE")); + } + + /** + * @see Platform#getMaxColumnNameLength() + */ + public function getMaxColumnNameLength() + { + return 128; + } + + /** + * @return Explicitly returns NULL if null values are + * allowed (as recomended by Microsoft). + * @see Platform#getNullString(boolean) + */ + public function getNullString($notNull) + { + return ($notNull ? "NOT NULL" : "NULL"); + } + + /** + * @see Platform::supportsNativeDeleteTrigger() + */ + public function supportsNativeDeleteTrigger() + { + return true; + } + + /** + * @see Platform::supportsInsertNullPk() + */ + public function supportsInsertNullPk() + { + return false; + } + + /** + * @see Platform::hasSize(String) + */ + public function hasSize($sqlType) + { + return !("INT" == $sqlType || "TEXT" == $sqlType); + } + + /** + * @see Platform::quoteIdentifier() + */ + public function quoteIdentifier($text) + { + return '[' . $text . ']'; + } + + /** + * Gets the preferred timestamp formatter for setting date/time values. + * @return string + */ + public function getTimestampFormatter() + { + return 'Y-m-d H:i:s'; + } + + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/MysqlPlatform.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/MysqlPlatform.php new file mode 100644 index 0000000..68ff402 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/MysqlPlatform.php @@ -0,0 +1,120 @@ +. + */ + +require_once 'propel/engine/platform/DefaultPlatform.php'; + +/** + * MySql Platform implementation. + * + * @author Hans Lellelid (Propel) + * @author Martin Poeschl (Torque) + * @version $Revision: 1262 $ + * @package propel.engine.platform + */ +class MysqlPlatform extends DefaultPlatform { + + /** + * Initializes db specific domain mapping. + */ + protected function initialize() + { + parent::initialize(); + $this->setSchemaDomainMapping(new Domain(PropelTypes::BOOLEAN, "TINYINT")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::NUMERIC, "DECIMAL")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::LONGVARCHAR, "TEXT")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::BINARY, "BLOB")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::VARBINARY, "MEDIUMBLOB")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::LONGVARBINARY, "LONGBLOB")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::BLOB, "LONGBLOB")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::CLOB, "LONGTEXT")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::TIMESTAMP, "DATETIME")); + } + + /** + * @see Platform#getAutoIncrement() + */ + public function getAutoIncrement() + { + return "AUTO_INCREMENT"; + } + + /** + * @see Platform#getMaxColumnNameLength() + */ + public function getMaxColumnNameLength() + { + return 64; + } + + /** + * @see Platform::supportsNativeDeleteTrigger() + */ + public function supportsNativeDeleteTrigger() + { + $usingInnoDB = false; + if (class_exists('DataModelBuilder', false)) + { + $usingInnoDB = strtolower($this->getBuildProperty('mysqlTableType')) == 'innodb'; + } + return $usingInnoDB || false; + } + + /** + * @see Platform#hasSize(String) + */ + public function hasSize($sqlType) + { + return !("MEDIUMTEXT" == $sqlType || "LONGTEXT" == $sqlType + || "BLOB" == $sqlType || "MEDIUMBLOB" == $sqlType + || "LONGBLOB" == $sqlType); + } + + /** + * Escape the string for RDBMS. + * @param string $text + * @return string + */ + public function disconnectedEscapeText($text) + { + if (function_exists('mysql_escape_string')) { + return mysql_escape_string($text); + } else { + return addslashes($text); + } + } + + /** + * @see Platform::quoteIdentifier() + */ + public function quoteIdentifier($text) + { + return '`' . $text . '`'; + } + + /** + * Gets the preferred timestamp formatter for setting date/time values. + * @return string + */ + public function getTimestampFormatter() + { + return 'Y-m-d H:i:s'; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/OraclePlatform.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/OraclePlatform.php new file mode 100644 index 0000000..06217c9 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/OraclePlatform.php @@ -0,0 +1,99 @@ +. + */ + +require_once 'propel/engine/platform/DefaultPlatform.php'; + +/** + * Oracle Platform implementation. + * + * @author Hans Lellelid (Propel) + * @author Martin Poeschl (Torque) + * @version $Revision: 1262 $ + * @package propel.engine.platform + */ +class OraclePlatform extends DefaultPlatform { + + /** + * Initializes db specific domain mapping. + */ + protected function initialize() + { + parent::initialize(); + $this->setSchemaDomainMapping(new Domain(PropelTypes::BOOLEAN, "NUMBER", "1", "0")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::TINYINT, "NUMBER", "3", "0")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::SMALLINT, "NUMBER", "5", "0")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::INTEGER, "NUMBER")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::BIGINT, "NUMBER", "20", "0")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::REAL, "NUMBER")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::DOUBLE, "FLOAT")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::DECIMAL, "NUMBER")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::NUMERIC, "NUMBER")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::VARCHAR, "NVARCHAR2")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::LONGVARCHAR, "NVARCHAR2", "2000")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::TIME, "TIME")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::DATE, "DATE")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::TIMESTAMP, "TIMESTAMP")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::BINARY, "LONG RAW")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::VARBINARY, "BLOB")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::LONGVARBINARY, "LONG RAW")); + } + + /** + * @see Platform#getMaxColumnNameLength() + */ + public function getMaxColumnNameLength() + { + return 30; + } + + /** + * @see Platform#getNativeIdMethod() + */ + public function getNativeIdMethod() + { + return Platform::SEQUENCE; + } + + /** + * @see Platform#getAutoIncrement() + */ + public function getAutoIncrement() + { + return ""; + } + + /** + * @see Platform::supportsNativeDeleteTrigger() + */ + public function supportsNativeDeleteTrigger() + { + return true; + } + + /** + * Whether the underlying PDO driver for this platform returns BLOB columns as streams (instead of strings). + * @return boolean + */ + public function hasStreamBlobImpl() + { + return true; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/PgsqlPlatform.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/PgsqlPlatform.php new file mode 100644 index 0000000..99e919e --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/PgsqlPlatform.php @@ -0,0 +1,128 @@ +. + */ + +require_once 'propel/engine/platform/DefaultPlatform.php'; + +/** + * Postgresql Platform implementation. + * + * @author Hans Lellelid (Propel) + * @author Martin Poeschl (Torque) + * @version $Revision: 1262 $ + * @package propel.engine.platform + */ +class PgsqlPlatform extends DefaultPlatform { + + /** + * Initializes db specific domain mapping. + */ + protected function initialize() + { + parent::initialize(); + $this->setSchemaDomainMapping(new Domain(PropelTypes::BOOLEAN, "BOOLEAN")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::TINYINT, "INT2")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::SMALLINT, "INT2")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::BIGINT, "INT8")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::REAL, "FLOAT")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::DOUBLE, "DOUBLE PRECISION")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::LONGVARCHAR, "TEXT")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::BINARY, "BYTEA")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::VARBINARY, "BYTEA")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::LONGVARBINARY, "BYTEA")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::BLOB, "BYTEA")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::CLOB, "TEXT")); + } + + /** + * @see Platform#getNativeIdMethod() + */ + public function getNativeIdMethod() + { + return Platform::SERIAL; + } + + /** + * @see Platform#getAutoIncrement() + */ + public function getAutoIncrement() + { + return ""; + } + + /** + * @see Platform#getMaxColumnNameLength() + */ + public function getMaxColumnNameLength() + { + return 32; + } + + /** + * Escape the string for RDBMS. + * @param string $text + * @return string + */ + public function disconnectedEscapeText($text) + { + if (function_exists('pg_escape_string')) { + return pg_escape_string($text); + } else { + return parent::disconnectedEscapeText($text); + } + } + + /** + * @see Platform::getBooleanString() + */ + public function getBooleanString($b) + { + // parent method does the checking for allowes tring + // representations & returns integer + $b = parent::getBooleanString($b); + return ($b ? "'t'" : "'f'"); + } + + /** + * @see Platform::supportsNativeDeleteTrigger() + */ + public function supportsNativeDeleteTrigger() + { + return true; + } + + /** + * @see Platform::hasSize(String) + * TODO collect info for all platforms + */ + public function hasSize($sqlType) + { + return !("BYTEA" == $sqlType || "TEXT" == $sqlType); + } + + /** + * Whether the underlying PDO driver for this platform returns BLOB columns as streams (instead of strings). + * @return boolean + */ + public function hasStreamBlobImpl() + { + return true; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/Platform.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/Platform.php new file mode 100644 index 0000000..bf5b449 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/Platform.php @@ -0,0 +1,192 @@ +. + */ + +/** + * Interface for RDBMS platform specific behaviour. + * + * @author Hans Lellelid (Propel) + * @author Martin Poeschl (Torque) + * @version $Revision: 1262 $ + * @package propel.engine.platform + */ +interface Platform { + + /** + * Constant for auto-increment id method. + */ + const IDENTITY = "identity"; + + /** + * Constant for sequence id method. + */ + const SEQUENCE = "sequence"; + + /** + * Constant for serial id method (postgresql). + */ + const SERIAL = "serial"; + + /** + * Sets a database connection to use (for quoting, etc.). + * @param PDO $con The database connection to use in this Platform class. + */ + public function setConnection(PDO $con = null); + + /** + * Returns the database connection to use for this Platform class. + * @return PDO The database connection or NULL if none has been set. + */ + public function getConnection(); + + /** + * Sets the GeneratorConfig which contains any generator build properties. + * + * @param GeneratorConfig $config + */ + public function setGeneratorConfig(GeneratorConfig $config); + + /** + * Gets the GeneratorConfig object. + * + * @return GeneratorConfig + */ + public function getGeneratorConfig(); + + /** + * Returns the short name of the database type that this platform represents. + * For example MysqlPlatform->getDatabaseType() returns 'mysql'. + * @return string + */ + public function getDatabaseType(); + + /** + * Returns the native IdMethod (sequence|identity) + * + * @return string The native IdMethod (Platform:IDENTITY, Platform::SEQUENCE). + */ + public function getNativeIdMethod(); + + /** + * Returns the max column length supported by the db. + * + * @return int The max column length + */ + public function getMaxColumnNameLength(); + + /** + * Returns the db specific domain for a jdbcType. + * + * @param string $creoleType the creole type name. + * @return Domain The db specific domain. + */ + public function getDomainForType($creoleType); + + /** + * @return string The RDBMS-specific SQL fragment for NULL + * or NOT NULL. + */ + public function getNullString($notNull); + + /** + * @return The RDBMS-specific SQL fragment for autoincrement. + */ + public function getAutoIncrement(); + + /** + * Returns if the RDBMS-specific SQL type has a size attribute. + * + * @param string $sqlType the SQL type + * @return boolean True if the type has a size attribute + */ + public function hasSize($sqlType); + + /** + * Returns if the RDBMS-specific SQL type has a scale attribute. + * + * @param string $sqlType the SQL type + * @return boolean True if the type has a scale attribute + */ + public function hasScale($sqlType); + + /** + * Quote and escape needed characters in the string for unerlying RDBMS. + * @param string $text + * @return string + */ + public function quote($text); + + /** + * Quotes identifiers used in database SQL. + * @param string $text + * @return string Quoted identifier. + */ + public function quoteIdentifier($text); + + /** + * Whether RDBMS supports native ON DELETE triggers (e.g. ON DELETE CASCADE). + * @return boolean + */ + public function supportsNativeDeleteTrigger(); + + /** + * Whether RDBMS supports INSERT null values in autoincremented primary keys + * @return boolean + */ + public function supportsInsertNullPk(); + + /** + * Returns the boolean value for the RDBMS. + * + * This value should match the boolean value that is set + * when using Creole's PreparedStatement::setBoolean(). + * + * This function is used to set default column values when building + * SQL. + * + * @param mixed $tf A boolean or string representation of boolean ('y', 'true'). + * @return mixed + */ + public function getBooleanString($tf); + + /** + * Whether the underlying PDO driver for this platform returns BLOB columns as streams (instead of strings). + * @return boolean + */ + public function hasStreamBlobImpl(); + + /** + * Gets the preferred timestamp formatter for setting date/time values. + * @return string + */ + public function getTimestampFormatter(); + + /** + * Gets the preferred date formatter for setting time values. + * @return string + */ + public function getDateFormatter(); + + /** + * Gets the preferred time formatter for setting time values. + * @return string + */ + public function getTimeFormatter(); +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/SqlitePlatform.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/SqlitePlatform.php new file mode 100644 index 0000000..350c717 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/platform/SqlitePlatform.php @@ -0,0 +1,97 @@ +. + */ + +require_once 'propel/engine/platform/DefaultPlatform.php'; + +/** + * SQLite Platform implementation. + * + * @author Hans Lellelid + * @version $Revision: 1262 $ + * @package propel.engine.platform + */ +class SqlitePlatform extends DefaultPlatform { + + /** + * Initializes db specific domain mapping. + */ + protected function initialize() + { + parent::initialize(); + $this->setSchemaDomainMapping(new Domain(PropelTypes::NUMERIC, "DECIMAL")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::LONGVARCHAR, "MEDIUMTEXT")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::DATE, "DATETIME")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::BINARY, "BLOB")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::VARBINARY, "MEDIUMBLOB")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::LONGVARBINARY, "LONGBLOB")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::BLOB, "LONGBLOB")); + $this->setSchemaDomainMapping(new Domain(PropelTypes::CLOB, "LONGTEXT")); + } + + /** + * @see Platform#getAutoIncrement() + * @link http://www.sqlite.org/autoinc.html + */ + public function getAutoIncrement() + { + + return "PRIMARY KEY"; + } + + /** + * @see Platform#getMaxColumnNameLength() + */ + public function getMaxColumnNameLength() + { + return 1024; + } + + /** + * @see Platform#hasSize(String) + */ + public function hasSize($sqlType) { + return !("MEDIUMTEXT" == $sqlType || "LONGTEXT" == $sqlType + || "BLOB" == $sqlType || "MEDIUMBLOB" == $sqlType + || "LONGBLOB" == $sqlType); + } + + /** + * Escape the string for RDBMS. + * @param string $text + * @return string + */ + public function disconnectedEscapeText($text) + { + if (function_exists('sqlite_escape_string')) { + return sqlite_escape_string($text); + } else { + return parent::disconnectedEscapeText($text); + } + } + + /** + * @see Platform::quoteIdentifier() + */ + public function quoteIdentifier($text) + { + return '[' . $text . ']'; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/all-wcprops new file mode 100644 index 0000000..e70786a --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/all-wcprops @@ -0,0 +1,77 @@ +K 25 +svn:wc:ra_dav:version-url +V 56 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/phing +END +PropelCreoleTransformTask.php +K 25 +svn:wc:ra_dav:version-url +V 86 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/phing/PropelCreoleTransformTask.php +END +PropelDataDTDTask.php +K 25 +svn:wc:ra_dav:version-url +V 78 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/phing/PropelDataDTDTask.php +END +PropelConvertConfTask.php +K 25 +svn:wc:ra_dav:version-url +V 82 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/phing/PropelConvertConfTask.php +END +PropelDataModelTemplateTask.php +K 25 +svn:wc:ra_dav:version-url +V 88 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/phing/PropelDataModelTemplateTask.php +END +PropelDataSQLTask.php +K 25 +svn:wc:ra_dav:version-url +V 78 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/phing/PropelDataSQLTask.php +END +PropelGraphvizTask.php +K 25 +svn:wc:ra_dav:version-url +V 79 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/phing/PropelGraphvizTask.php +END +PropelOMTask.php +K 25 +svn:wc:ra_dav:version-url +V 73 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/phing/PropelOMTask.php +END +PropelSchemaReverseTask.php +K 25 +svn:wc:ra_dav:version-url +V 84 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/phing/PropelSchemaReverseTask.php +END +AbstractPropelDataModelTask.php +K 25 +svn:wc:ra_dav:version-url +V 88 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/phing/AbstractPropelDataModelTask.php +END +PropelDataDumpTask.php +K 25 +svn:wc:ra_dav:version-url +V 79 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/phing/PropelDataDumpTask.php +END +PropelSQLTask.php +K 25 +svn:wc:ra_dav:version-url +V 74 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/phing/PropelSQLTask.php +END +PropelSQLExec.php +K 25 +svn:wc:ra_dav:version-url +V 74 +/!svn/ver/1695/tags/1.4.2/generator/classes/propel/phing/PropelSQLExec.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/entries new file mode 100644 index 0000000..659384a --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/entries @@ -0,0 +1,436 @@ +10 + +dir +2332 +http://propel.mirror.svn.symfony-project.com/tags/1.4.2/generator/classes/propel/phing +http://propel.mirror.svn.symfony-project.com + + + +2010-04-16T20:56:45.617743Z +1684 +francois + + + + + + + + + + + + + + +a84bc4f6-26e8-416f-aa96-3cde13879fbb + +PropelCreoleTransformTask.php +file + + + + +2012-05-10T18:42:16.377553Z +3ac93361b99eff48a58776fe3c06c1ac +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +24204 + +PropelDataDTDTask.php +file + + + + +2012-05-10T18:42:16.377553Z +8b78cc49396de3b6487d8f001ba179e8 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +2771 + +PropelConvertConfTask.php +file + + + + +2012-05-10T18:42:16.381550Z +3585a8cc7731a7ac7c21865edfc1c66c +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +10557 + +PropelDataModelTemplateTask.php +file + + + + +2012-05-10T18:42:16.381550Z +5ec493e17df8522090f996781ceafeff +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +6842 + +PropelDataSQLTask.php +file + + + + +2012-05-10T18:42:16.449566Z +241ad17a00ccd10c5327cf0569d9fd1c +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +5718 + +PropelGraphvizTask.php +file + + + + +2012-05-10T18:42:16.449566Z +f16ee4cd9e2d5d7c4aab9f7e2213a036 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +4447 + +PropelOMTask.php +file + + + + +2012-05-10T18:42:16.449566Z +d24606b5e8653821533bbb0be35d35eb +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +7692 + +PropelSchemaReverseTask.php +file + + + + +2012-05-10T18:42:16.453550Z +356a507f2cf0b2de31f4f38bcc7ab718 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +14157 + +AbstractPropelDataModelTask.php +file + + + + +2012-05-10T18:42:16.457551Z +2e7df40dad57d33c1d29bb7f05a1b54f +2010-04-16T20:56:45.617743Z +1684 +francois +has-props + + + + + + + + + + + + + + + + + + + + +18155 + +PropelDataDumpTask.php +file + + + + +2012-05-10T18:42:16.457551Z +cf7445c60c09ce6ddf1100f3fe39cfdc +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +10264 + +PropelSQLTask.php +file + + + + +2012-05-10T18:42:16.461552Z +a6f73dfc338130e1320a1d6af342b4b5 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +7496 + +PropelSQLExec.php +file + + + + +2012-05-10T18:42:16.461552Z +e01a300b022f00a146b36f9da888304a +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +18162 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/prop-base/AbstractPropelDataModelTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/prop-base/AbstractPropelDataModelTask.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/prop-base/AbstractPropelDataModelTask.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/prop-base/PropelConvertConfTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/prop-base/PropelConvertConfTask.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/prop-base/PropelConvertConfTask.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/prop-base/PropelCreoleTransformTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/prop-base/PropelCreoleTransformTask.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/prop-base/PropelCreoleTransformTask.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/prop-base/PropelDataDTDTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/prop-base/PropelDataDTDTask.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/prop-base/PropelDataDTDTask.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/prop-base/PropelDataDumpTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/prop-base/PropelDataDumpTask.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/prop-base/PropelDataDumpTask.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/prop-base/PropelDataModelTemplateTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/prop-base/PropelDataModelTemplateTask.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/prop-base/PropelDataModelTemplateTask.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/prop-base/PropelDataSQLTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/prop-base/PropelDataSQLTask.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/prop-base/PropelDataSQLTask.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/prop-base/PropelGraphvizTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/prop-base/PropelGraphvizTask.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/prop-base/PropelGraphvizTask.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/prop-base/PropelOMTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/prop-base/PropelOMTask.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/prop-base/PropelOMTask.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/prop-base/PropelSQLExec.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/prop-base/PropelSQLExec.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/prop-base/PropelSQLExec.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/prop-base/PropelSQLTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/prop-base/PropelSQLTask.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/prop-base/PropelSQLTask.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/prop-base/PropelSchemaReverseTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/prop-base/PropelSchemaReverseTask.php.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/prop-base/PropelSchemaReverseTask.php.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/text-base/AbstractPropelDataModelTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/text-base/AbstractPropelDataModelTask.php.svn-base new file mode 100644 index 0000000..2600f79 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/text-base/AbstractPropelDataModelTask.php.svn-base @@ -0,0 +1,611 @@ +. + */ + +//include_once 'phing/tasks/ext/CapsuleTask.php'; +require_once 'phing/Task.php'; +include_once 'propel/engine/GeneratorConfig.php'; +include_once 'propel/engine/database/model/AppData.php'; +include_once 'propel/engine/database/model/Database.php'; +include_once 'propel/engine/database/transform/XmlToAppData.php'; + +/** + * An abstract base Propel task to perform work related to the XML schema file. + * + * The subclasses invoke templates to do the actual writing of the resulting files. + * + * @author Hans Lellelid (Propel) + * @author Jason van Zyl (Torque) + * @author Daniel Rall (Torque) + * @package propel.phing + */ +abstract class AbstractPropelDataModelTask extends Task { + + /** + * Fileset of XML schemas which represent our data models. + * @var array Fileset[] + */ + protected $schemaFilesets = array(); + + /** + * Data models that we collect. One from each XML schema file. + */ + protected $dataModels = array(); + + /** + * Have datamodels been initialized? + * @var boolean + */ + private $dataModelsLoaded = false; + + /** + * Map of data model name to database name. + * Should probably stick to the convention + * of them being the same but I know right now + * in a lot of cases they won't be. + */ + protected $dataModelDbMap; + + /** + * Hashtable containing the names of all the databases + * in our collection of schemas. + */ + protected $databaseNames; // doesn't seem to be used anywhere + + /** + * The target database(s) we are generating SQL + * for. Right now we can only deal with a single + * target, but we will support multiple targets + * soon. + */ + protected $targetDatabase; + + /** + * DB encoding to use for XmlToAppData object + */ + protected $dbEncoding = 'iso-8859-1'; + + /** + * Target PHP package to place the generated files in. + */ + protected $targetPackage; + + /** + * @var Mapper + */ + protected $mapperElement; + + /** + * Destination directory for results of template scripts. + * @var PhingFile + */ + protected $outputDirectory; + + /** + * Whether to package the datamodels or not + * @var PhingFile + */ + protected $packageObjectModel; + + /** + * Whether to perform validation (XSD) on the schema.xml file(s). + * @var boolean + */ + protected $validate; + + /** + * The XSD schema file to use for validation. + * @var PhingFile + */ + protected $xsdFile; + + /** + * XSL file to use to normalize (or otherwise transform) schema before validation. + * @var PhingFile + */ + protected $xslFile; + + /** + * Optional database connection url. + * @var string + */ + private $url = null; + + /** + * Optional database connection user name. + * @var string + */ + private $userId = null; + + /** + * Optional database connection password. + * @var string + */ + private $password = null; + + /** + * PDO Connection. + * @var PDO + */ + private $conn = false; + + /** + * An initialized GeneratorConfig object containing the converted Phing props. + * + * @var GeneratorConfig + */ + private $generatorConfig; + + /** + * Return the data models that have been + * processed. + * + * @return List data models + */ + public function getDataModels() + { + if (!$this->dataModelsLoaded) $this->loadDataModels(); + return $this->dataModels; + } + + /** + * Return the data model to database name map. + * + * @return Hashtable data model name to database name map. + */ + public function getDataModelDbMap() + { + if (!$this->dataModelsLoaded) $this->loadDataModels(); + return $this->dataModelDbMap; + } + + /** + * Adds a set of xml schema files (nested fileset attribute). + * + * @param set a Set of xml schema files + */ + public function addSchemaFileset(Fileset $set) + { + $this->schemaFilesets[] = $set; + } + + /** + * Get the current target database. + * + * @return String target database(s) + */ + public function getTargetDatabase() + { + return $this->targetDatabase; + } + + /** + * Set the current target database. (e.g. mysql, oracle, ..) + * + * @param v target database(s) + */ + public function setTargetDatabase($v) + { + $this->targetDatabase = $v; + } + + /** + * Get the current target package. + * + * @return string target PHP package. + */ + public function getTargetPackage() + { + return $this->targetPackage; + } + + /** + * Set the current target package. This is where generated PHP classes will + * live. + * + * @param string $v target PHP package. + */ + public function setTargetPackage($v) + { + $this->targetPackage = $v; + } + + /** + * Set the packageObjectModel switch on/off + * + * @param string $v The build.property packageObjectModel + */ + public function setPackageObjectModel($v) + { + $this->packageObjectModel = ($v === '1' ? true : false); + } + + /** + * Set whether to perform validation on the datamodel schema.xml file(s). + * @param boolean $v + */ + public function setValidate($v) + { + $this->validate = $v; + } + + /** + * Set the XSD schema to use for validation of any datamodel schema.xml file(s). + * @param $v PhingFile + */ + public function setXsd(PhingFile $v) + { + $this->xsdFile = $v; + } + + /** + * Set the normalization XSLT to use to transform datamodel schema.xml file(s) before validation and parsing. + * @param $v PhingFile + */ + public function setXsl(PhingFile $v) + { + $this->xslFile = $v; + } + + /** + * [REQUIRED] Set the output directory. It will be + * created if it doesn't exist. + * @param PhingFile $outputDirectory + * @return void + * @throws Exception + */ + public function setOutputDirectory(PhingFile $outputDirectory) { + try { + if (!$outputDirectory->exists()) { + $this->log("Output directory does not exist, creating: " . $outputDirectory->getPath(),Project::MSG_VERBOSE); + if (!$outputDirectory->mkdirs()) { + throw new IOException("Unable to create Ouptut directory: " . $outputDirectory->getAbsolutePath()); + } + } + $this->outputDirectory = $outputDirectory->getCanonicalPath(); + } catch (IOException $ioe) { + throw new BuildException($ioe); + } + } + + /** + * Set the current target database encoding. + * + * @param v target database encoding + */ + public function setDbEncoding($v) + { + $this->dbEncoding = $v; + } + + /** + * Set the DB connection url. + * + * @param string $url connection url + */ + public function setUrl($url) + { + $this->url = $url; + } + + /** + * Set the user name for the DB connection. + * + * @param string $userId database user + */ + public function setUserid($userId) + { + $this->userId = $userId; + } + + /** + * Set the password for the DB connection. + * + * @param string $password database password + */ + public function setPassword($password) + { + $this->password = $password; + } + + /** + * Get the output directory. + * @return string + */ + public function getOutputDirectory() { + return $this->outputDirectory; + } + + /** + * Nested creator, creates one Mapper for this task. + * + * @return Mapper The created Mapper type object. + * @throws BuildException + */ + public function createMapper() { + if ($this->mapperElement !== null) { + throw new BuildException("Cannot define more than one mapper.", $this->location); + } + $this->mapperElement = new Mapper($this->project); + return $this->mapperElement; + } + + /** + * Maps the passed in name to a new filename & returns resolved File object. + * @param string $from + * @return PhingFile Resolved File object. + * @throws BuilException - if no Mapper element se + * - if unable to map new filename. + */ + protected function getMappedFile($from) + { + if (!$this->mapperElement) { + throw new BuildException("This task requires you to use a element to describe how filename changes should be handled."); + } + + $mapper = $this->mapperElement->getImplementation(); + $mapped = $mapper->main($from); + if (!$mapped) { + throw new BuildException("Cannot create new filename based on: " . $from); + } + // Mappers always return arrays since it's possible for some mappers to map to multiple names. + $outFilename = array_shift($mapped); + $outFile = new PhingFile($this->getOutputDirectory(), $outFilename); + return $outFile; + } + + /** + * Gets the PDO connection, if URL specified. + * @return PDO Connection to use (for quoting, Platform class, etc.) or NULL if no connection params were specified. + */ + public function getConnection() + { + if ($this->conn === false) { + $this->conn = null; + if ($this->url) { + $buf = "Using database settings:\n" + . " URL: " . $this->url . "\n" + . ($this->userId ? " user: " . $this->userId . "\n" : "") + . ($this->password ? " password: " . $this->password . "\n" : ""); + + $this->log($buf, Project::MSG_VERBOSE); + + // Set user + password to null if they are empty strings + if (!$this->userId) { $this->userId = null; } + if (!$this->password) { $this->password = null; } + try { + $this->conn = new PDO($this->url, $this->userId, $this->password); + $this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + } catch (PDOException $x) { + $this->log("Unable to create a PDO connection: " . $x->getMessage(), Project::MSG_WARN); + } + } + } + return $this->conn; + } + + /** + * Gets all matching XML schema files and loads them into data models for class. + * @return void + */ + protected function loadDataModels() + { + $ads = array(); + + // Get all matched files from schemaFilesets + foreach ($this->schemaFilesets as $fs) { + $ds = $fs->getDirectoryScanner($this->project); + $srcDir = $fs->getDir($this->project); + + $dataModelFiles = $ds->getIncludedFiles(); + + $platform = $this->getGeneratorConfig()->getConfiguredPlatform(); + + // Make a transaction for each file + foreach ($dataModelFiles as $dmFilename) { + + $this->log("Processing: ".$dmFilename); + $xmlFile = new PhingFile($srcDir, $dmFilename); + + $dom = new DomDocument('1.0', 'UTF-8'); + $dom->load($xmlFile->getAbsolutePath()); + + // normalize (or transform) the XML document using XSLT + if ($this->xslFile) { + $this->log("Transforming " . $xmlFile->getPath() . " using stylesheet " . $this->xslFile->getPath(), Project::MSG_VERBOSE); + if (!class_exists('XSLTProcessor')) { + $this->log("Could not perform XLST transformation. Make sure PHP has been compiled/configured to support XSLT.", Project::MSG_ERR); + } else { + // modify schema to include any external schema's (and remove the external-schema nodes) + $this->includeExternalSchemas($dom, $srcDir); + // normalize the document using normalizer stylesheet + + $xsl = new XsltProcessor(); + $xsl->importStyleSheet(DomDocument::load($this->xslFile->getAbsolutePath())); + $transformed = $xsl->transformToDoc($dom); + $newXmlFilename = substr($xmlFile->getName(), 0, strrpos($xmlFile->getName(), '.')) . '-transformed.xml'; + + // now overwrite previous vars to point to newly transformed file + $xmlFile = new PhingFile($srcDir, $newXmlFilename); + $transformed->save($xmlFile->getAbsolutePath()); + $this->log("\t- Using new (post-transformation) XML file: " . $xmlFile->getPath(), Project::MSG_VERBOSE); + + $dom = new DomDocument('1.0', 'UTF-8'); + $dom->load($xmlFile->getAbsolutePath()); + } + } + + // validate the XML document using XSD schema + if ($this->validate && $this->xsdFile) { + $this->log("Validating XML doc (".$xmlFile->getPath().") using schema file " . $this->xsdFile->getPath(), Project::MSG_VERBOSE); + if (!$dom->schemaValidate($this->xsdFile->getAbsolutePath())) { + throw new EngineException("XML schema file (".$xmlFile->getPath().") does not validate. See warnings above for reasons validation failed (make sure error_reporting is set to show E_WARNING if you don't see any).", $this->getLocation()); + } + } + + $xmlParser = new XmlToAppData($platform, $this->getTargetPackage(), $this->dbEncoding); + $ad = $xmlParser->parseFile($xmlFile->getAbsolutePath()); + $ad->setName($dmFilename); // <-- Important: use the original name, not the -transformed name. + $ads[] = $ad; + } + } + + if (empty($ads)) { + throw new BuildException("No schema files were found (matching your schema fileset definition)."); + } + + if (!$this->packageObjectModel) { + + $this->dataModels = $ads; + $this->databaseNames = array(); // doesn't seem to be used anywhere + $this->dataModelDbMap = array(); + + // Different datamodels may state the same database + // names, we just want the unique names of databases. + foreach ($this->dataModels as $dm) { + $database = $dm->getDatabase(); + $this->dataModelDbMap[$dm->getName()] = $database->getName(); + $this->databaseNames[$database->getName()] = $database->getName(); // making list of *unique* dbnames. + } + } else { + + $this->joinDatamodels($ads); + $this->dataModels[0]->getDatabases(); // calls doFinalInitialization() + } + + $this->dataModelsLoaded = true; + } + + /** + * Replaces all external-schema nodes with the content of xml schema that node refers to + * + * Recurses to include any external schema referenced from in an included xml (and deeper) + * Note: this function very much assumes at least a reasonable XML schema, maybe it'll proof + * users don't have those and adding some more informative exceptions would be better + * + * @param DomDocument $dom + * @param string $srcDir + * @return void (objects, DomDocument, are references by default in PHP 5, so returning it is useless) + **/ + protected function includeExternalSchemas(DomDocument $dom, $srcDir) { + $databaseNode = $dom->getElementsByTagName("database")->item(0); + $externalSchemaNodes = $dom->getElementsByTagName("external-schema"); + $fs = FileSystem::getFileSystem(); + while ($externalSchema = $externalSchemaNodes->item(0)) { + $include = $externalSchema->getAttribute("filename"); + $externalSchema->parentNode->removeChild($externalSchema); + if ($fs->prefixLength($include) != 0) { + $externalSchemaFile = new PhingFile($include); + } else { + $externalSchemaFile = new PhingFile($srcDir, $include); + } + $externalSchemaDom = new DomDocument('1.0', 'UTF-8'); + $externalSchemaDom->load($externalSchemaFile->getAbsolutePath()); + $this->includeExternalSchemas($externalSchemaDom, $srcDir); + foreach ($externalSchemaDom->getElementsByTagName("table") as $tableNode) { // see xsd, datatase may only have table or external-schema, the latter was just deleted so this should cover everything + $databaseNode->appendChild($dom->importNode($tableNode, true)); + } + } + } + /** + * Joins the datamodels collected from schema.xml files into one big datamodel + * + * This applies only when the the packageObjectModel option is set. We need to + * join the datamodels in this case to allow for foreign keys that point to + * tables in different packages. + * + * @param array $ads The datamodels to join + */ + protected function joinDatamodels($ads) { + + foreach ($ads as $ad) { + $db = $ad->getDatabase(null, false); + $this->dataModelDbMap[$ad->getName()] = $db->getName(); + } + + foreach ($ads as $addAd) { + + $ad = &$this->dataModels[0]; + if (!isset($ad)) { + $addAd->setName('JoinedDataModel'); + $ad = $addAd; + continue; + } + foreach ($addAd->getDatabases(false) as $addDb) { + $addDbName = $addDb->getName(); + if (!$package = $addDb->getPackage()) { + throw new BuildException('No package found for database "' . $addDbName . '" in ' . $addAd->getName() . '. The propel.packageObjectModel property requires the package attribute to be set for each database.'); + } + $db = $ad->getDatabase($addDbName, false); + if (!$db) { + $ad->addDatabase($addDb); + continue; + } + foreach ($addDb->getTables() as $addTable) { + $table = $db->getTable($addTable->getName()); + if ($table) { + throw new BuildException('Duplicate table found: ' . $addDbName . '.'); + } + $db->addTable($addTable); + } + } + } + } + + /** + * Gets the GeneratorConfig object for this task or creates it on-demand. + * @return GeneratorConfig + */ + protected function getGeneratorConfig() + { + if ($this->generatorConfig === null) { + $this->generatorConfig = new GeneratorConfig(); + $this->generatorConfig->setBuildProperties($this->getProject()->getProperties()); + } + return $this->generatorConfig; + } + + /** + * Checks this class against Basic requrements of any propel datamodel task. + * + * @throws BuildException - if schema fileset was not defined + * - if no output directory was specified + */ + protected function validate() + { + if (empty($this->schemaFilesets)) { + throw new BuildException("You must specify a fileset of XML schemas.", $this->getLocation()); + } + + // Make sure the output directory is set. + if ($this->outputDirectory === null) { + throw new BuildException("The output directory needs to be defined!", $this->getLocation()); + } + + if ($this->validate) { + if (!$this->xsdFile) { + throw new BuildException("'validate' set to TRUE, but no XSD specified (use 'xsd' attribute).", $this->getLocation()); + } + } + + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/text-base/PropelConvertConfTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/text-base/PropelConvertConfTask.php.svn-base new file mode 100644 index 0000000..dcdee04 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/text-base/PropelConvertConfTask.php.svn-base @@ -0,0 +1,312 @@ +. + */ + +require_once 'phing/Task.php'; +require_once 'propel/phing/PropelDataModelTemplateTask.php'; +require_once 'propel/engine/builder/om/OMBuilder.php'; +include_once 'propel/engine/builder/om/ClassTools.php'; + +/** + * This Task converts the XML runtime configuration file into a PHP array for faster performance. + * + * @author Hans Lellelid + * @package propel.phing + */ +class PropelConvertConfTask extends AbstractPropelDataModelTask { + + /** + * @var PhingFile The XML runtime configuration file to be converted. + */ + private $xmlConfFile; + + /** + * @var string This is the file where the converted conf array dump will be placed. + */ + private $outputFile; + + /** + * @var string This is the file where the classmap manifest converted conf array dump will be placed. + */ + private $outputClassmapFile; + + /** + * [REQUIRED] Set the input XML runtime conf file. + * @param PhingFile $v The XML runtime configuration file to be converted. + */ + public function setXmlConfFile(PhingFile $v) + { + $this->xmlConfFile = $v; + } + + /** + * [REQUIRED] Set the output filename for the converted runtime conf. + * The directory is specified using AbstractPropelDataModelTask#setOutputDirectory(). + * @param string $outputFile + * @see AbstractPropelDataModelTask#setOutputDirectory() + */ + public function setOutputFile($outputFile) + { + // this is a string, not a file + $this->outputFile = $outputFile; + } + + /** + * [REQUIRED] Set the output filename for the autoload classmap. + * The directory is specified using AbstractPropelDataModelTask#setOutputDirectory(). + * @param string $outputFile + * @see AbstractPropelDataModelTask#setOutputDirectory() + */ + public function setOutputClassmapFile($outputFile) + { + // this is a string, not a file + $this->outputClassmapFile = $outputFile; + } + + /** + * The main method does the work of the task. + */ + public function main() + { + // Check to make sure the input and output files were specified and that the input file exists. + + if (!$this->xmlConfFile || !$this->xmlConfFile->exists()) { + throw new BuildException("No valid xmlConfFile specified.", $this->getLocation()); + } + + if (!$this->outputFile) { + throw new BuildException("No outputFile specified.", $this->getLocation()); + } + + // Create a PHP array from the XML file + + $xmlDom = new DOMDocument(); + $xmlDom->load($this->xmlConfFile->getAbsolutePath()); + $xml = simplexml_load_string($xmlDom->saveXML()); + $phpconf = self::simpleXmlToArray($xml); + + /* For some reason the array generated from runtime-conf.xml has separate + * 'log' section and 'propel' sections. To maintain backward compatibility + * we need to put 'log' back into the 'propel' section. + */ + $log = array(); + if (isset($phpconf['log'])) { + $phpconf['propel']['log'] = $phpconf['log']; + unset($phpconf['log']); + } + + if(isset($phpconf['propel'])) { + $phpconf = $phpconf['propel']; + } + + // add generator version + $phpconf['generator_version'] = $this->getGeneratorConfig()->getBuildProperty('version'); + + // add classmap + $phpconf['classmap'] = $this->getClassMap(); + + // Write resulting PHP data to output file: + + $outfile = new PhingFile($this->outputDirectory, $this->outputFile); + $output = "getGeneratorConfig()->getBuildProperty('addTimestamp') ? " on " . strftime("%c") : '') . "\n"; + $output .= "// from XML runtime conf file " . $this->xmlConfFile->getPath() . "\n"; + $output .= "return "; + $output .= var_export($phpconf, true); + $output .= ";"; + + $this->log("Creating PHP runtime conf file: " . $outfile->getPath()); + if (!file_put_contents($outfile->getAbsolutePath(), $output)) { + throw new BuildException("Error creating output file: " . $outfile->getAbsolutePath(), $this->getLocation()); + } + + } // main() + + /** + * Recursive function that converts an SimpleXML object into an array. + * @author Christophe VG (based on code form php.net manual comment) + * @param object SimpleXML object. + * @return array Array representation of SimpleXML object. + */ + private static function simpleXmlToArray($xml) + { + $ar = array(); + + foreach ( $xml->children() as $k => $v ) { + + // recurse the child + $child = self::simpleXmlToArray( $v ); + + //print "Recursed down and found: " . var_export($child, true) . "\n"; + + // if it's not an array, then it was empty, thus a value/string + if ( count($child) == 0 ) { + $child = self::getConvertedXmlValue($v); + + } + + // add the childs attributes as if they where children + foreach ( $v->attributes() as $ak => $av ) { + + // if the child is not an array, transform it into one + if ( !is_array( $child ) ) { + $child = array( "value" => $child ); + } + + if ($ak == 'id') { + // special exception: if there is a key named 'id' + // then we will name the current key after that id + $k = self::getConvertedXmlValue($av); + } else { + // otherwise, just add the attribute like a child element + $child[$ak] = self::getConvertedXmlValue($av); + } + } + + // if the $k is already in our children list, we need to transform + // it into an array, else we add it as a value + if ( !in_array( $k, array_keys($ar) ) ) { + $ar[$k] = $child; + } else { + // (This only applies to nested nodes that do not have an @id attribute) + + // if the $ar[$k] element is not already an array, then we need to make it one. + // this is a bit of a hack, but here we check to also make sure that if it is an + // array, that it has numeric keys. this distinguishes it from simply having other + // nested element data. + + if ( !is_array($ar[$k]) || !isset($ar[$k][0]) ) { $ar[$k] = array($ar[$k]); } + $ar[$k][] = $child; + } + + } + + return $ar; + } + + /** + * Process XML value, handling boolean, if appropriate. + * @param object The simplexml value object. + * @return mixed + */ + private static function getConvertedXmlValue($value) + { + $value = (string) $value; // convert from simplexml to string + // handle booleans specially + $lwr = strtolower($value); + if ($lwr === "false") { + $value = false; + } elseif ($lwr === "true") { + $value = true; + } + return $value; + } + + /** + * Lists data model classes and builds an associative array className => classPath + * To be used for autoloading + * @return array + */ + protected function getClassMap() + { + $phpconfClassmap = array(); + + $generatorConfig = $this->getGeneratorConfig(); + + foreach ($this->getDataModels() as $dataModel) { + + foreach ($dataModel->getDatabases() as $database) { + + $classMap = array(); + + foreach ($database->getTables() as $table) { + + if (!$table->isForReferenceOnly()) { + + // Classes that I'm assuming do not need to be mapped (because they will be required by subclasses): + // - base peer and object classes + // - interfaces + // - base node peer and object classes + + // ----------------------------------------------------- + // Add Peer & Object stub classes and MapBuilder classes + // ----------------------------------------------------- + // (this code is based on PropelOMTask) + + foreach (array('tablemap', 'peerstub', 'objectstub') as $target) { + $builder = $generatorConfig->getConfiguredBuilder($table, $target); + $this->log("Adding class mapping: " . $builder->getClassname() . ' => ' . $builder->getClassFilePath()); + $classMap[$builder->getClassname()] = $builder->getClassFilePath(); + } + + if ($col = $table->getChildrenColumn()) { + if ($col->isEnumeratedClasses()) { + foreach ($col->getChildren() as $child) { + $builder = $generatorConfig->getConfiguredBuilder($table, 'objectmultiextend'); + $builder->setChild($child); + $this->log("Adding class mapping: " . $builder->getClassname() . ' => ' . $builder->getClassFilePath()); + $classMap[$builder->getClassname()] = $builder->getClassFilePath(); + } + } + } + + $baseClass = $table->getBaseClass(); + if ( $baseClass !== null ) { + $className = ClassTools::classname($baseClass); + if (!isset($classMap[$className])) { + $classPath = ClassTools::getFilePath($baseClass); + $this->log('Adding class mapping: ' . $className . ' => ' . $classPath); + $classMap[$className] = $classPath; + } + } + + $basePeer = $table->getBasePeer(); + if ( $basePeer !== null ) { + $className = ClassTools::classname($basePeer); + if (!isset($classMap[$className])) { + $classPath = ClassTools::getFilePath($basePeer); + $this->log('Adding class mapping: ' . $className . ' => ' . $classPath); + $classMap[$className] = $classPath; + } + } + + // ------------------------ + // Create tree Node classes + // ------------------------ + + if ('MaterializedPath' == $table->treeMode()) { + foreach (array('nodepeerstub', 'nodestub') as $target) { + $builder = $generatorConfig->getConfiguredBuilder($table, $target); + $this->log("Adding class mapping: " . $builder->getClassname() . ' => ' . $builder->getClassFilePath()); + $classMap[$builder->getClassname()] = $builder->getClassFilePath(); + } + } + + } // if (!$table->isReferenceOnly()) + } + + $phpconfClassmap = array_merge($phpconfClassmap, $classMap); + } + } + + return $phpconfClassmap; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/text-base/PropelCreoleTransformTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/text-base/PropelCreoleTransformTask.php.svn-base new file mode 100644 index 0000000..e635f33 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/text-base/PropelCreoleTransformTask.php.svn-base @@ -0,0 +1,829 @@ +. + */ + +require_once 'phing/Task.php'; +include_once 'propel/engine/database/model/PropelTypes.php'; + +/** + * This class generates an XML schema of an existing database from + * Creole metadata. + * + * @author Hans Lellelid (Propel) + * @author Jason van Zyl (Torque) + * @author Fedor Karpelevitch (Torque) + * @version $Revision$ + * @package propel.phing + */ +class PropelCreoleTransformTask extends Task { + + /** Name of XML database schema produced. */ + protected $xmlSchema; + + /** Creole URL. */ + protected $dbUrl; + + /** Creole driver. */ + protected $dbDriver; + + /** Creole user name. */ + protected $dbUser; + + /** Creole password. */ + protected $dbPassword; + + /** DB encoding to use */ + protected $dbEncoding = 'iso-8859-1'; + + /** DB schema to use. */ + protected $dbSchema; + + /** parsed DB DSN */ + protected $dsn; + + /** DOM document produced. */ + protected $doc; + + /** The document root element. */ + protected $databaseNode; + + /** Hashtable of columns that have primary keys. */ + protected $primaryKeys; + + /** Hashtable to track what table a column belongs to. */ + // doesn't seem to be used + // protected $columnTableMap; + + /** whether to use same name for phpName or not */ + protected $samePhpName; + + /** whether to add vendor info or not */ + protected $addVendorInfo; + + /** + * Bitfield to switch on/off which validators will be created. + * + * @var int + */ + protected $validatorBits; + + /** + * Collect validatorInfos to create validators. + * + * @var int + */ + protected $validatorInfos; + + /** + * Zero bit for no validators + */ + const VALIDATORS_NONE = 0; + + /** + * Bit for maxLength validator + */ + const VALIDATORS_MAXLENGTH = 1; + + /** + * Bit for maxValue validator + */ + const VALIDATORS_MAXVALUE = 2; + + /** + * Bit for type validator + */ + const VALIDATORS_TYPE = 4; + + /** + * Bit for required validator + */ + const VALIDATORS_REQUIRED = 8; + + /** + * Bit for unique validator + */ + const VALIDATORS_UNIQUE = 16; + + /** + * Bit for all validators + */ + const VALIDATORS_ALL = 255; + + /** + * Maps validator type tokens to bits + * + * The tokens are used in the propel.addValidators property to define + * which validators are to be added + * + * @static + * @var array + */ + static protected $validatorBitMap = array ( + 'none' => PropelCreoleTransformTask::VALIDATORS_NONE, + 'maxlength' => PropelCreoleTransformTask::VALIDATORS_MAXLENGTH, + 'maxvalue' => PropelCreoleTransformTask::VALIDATORS_MAXVALUE, + 'type' => PropelCreoleTransformTask::VALIDATORS_TYPE, + 'required' => PropelCreoleTransformTask::VALIDATORS_REQUIRED, + 'unique' => PropelCreoleTransformTask::VALIDATORS_UNIQUE, + 'all' => PropelCreoleTransformTask::VALIDATORS_ALL, + ); + + /** + * Defines messages that are added to validators + * + * @static + * @var array + */ + static protected $validatorMessages = array ( + 'maxlength' => array ( + 'msg' => 'The field %s must be not longer than %s characters.', + 'var' => array('colName', 'value') + ), + 'maxvalue' => array ( + 'msg' => 'The field %s must be not greater than %s.', + 'var' => array('colName', 'value') + ), + 'type' => array ( + 'msg' => 'The field %s is not a valid value.', + 'var' => array('colName') + ), + 'required' => array ( + 'msg' => 'The field %s is required.', + 'var' => array('colName') + ), + 'unique' => array ( + 'msg' => 'This %s already exists in table %s.', + 'var' => array('colName', 'tableName') + ), + ); + + public function getDbSchema() + { + return $this->dbSchema; + } + + public function setDbSchema($dbSchema) + { + $this->dbSchema = $dbSchema; + } + + public function setDbUrl($v) + { + $this->dbUrl = $v; + } + + public function setDbDriver($v) + { + $this->dbDriver = $v; + } + + public function setDbUser($v) + { + $this->dbUser = $v; + } + + public function setDbPassword($v) + { + $this->dbPassword = $v; + } + + public function setDbEncoding($v) + { + $this->dbEncoding = $v; + } + + public function setOutputFile($v) + { + $this->xmlSchema = $v; + } + + public function setSamePhpName($v) + { + $this->samePhpName = $v; + } + + public function setAddVendorInfo($v) + { + $this->addVendorInfo = (boolean) $v; + } + + /** + * Sets set validator bitfield from a comma-separated list of "validator bit" names. + * + * @param string $v The comma-separated list of which validators to add. + * @return void + */ + public function setAddValidators($v) + { + $validKeys = array_keys(self::$validatorBitMap); + + // lowercase input + $v = strtolower($v); + + $bits = self::VALIDATORS_NONE; + + $exprs = explode(',', $v); + foreach ($exprs as $expr) { + $expr = trim($expr); + if (!isset(self::$validatorBitMap[$expr])) { + throw new BuildException("Unable to interpret validator in expression ('$v'): " . $expr); + } + $bits |= self::$validatorBitMap[$expr]; + } + + $this->validatorBits = $bits; + } + + public function isSamePhpName() + { + return $this->samePhpName; + } + + /** + * Default constructor. + * @return void + * @throws BuildException + */ + public function main() + { + include_once 'creole/Creole.php'; + if (!class_exists('Creole')) { + throw new BuildException( get_class($this) . " task depends on Creole classes being on include_path. (i.e. include of 'creole/Creole.php' failed.)", $this->getLocation()); + } + + $this->log("Propel - CreoleToXMLSchema starting"); + $this->log("Your DB settings are:"); + $this->log("driver : " . ($this->dbDriver ? $this->dbDriver : "(default)")); + $this->log("URL : " . $this->dbUrl); + + //(not yet supported) $this->log("schema : " . $this->dbSchema); + //DocumentTypeImpl docType = new DocumentTypeImpl(null, "database", null, + // "http://jakarta.apache.org/turbine/dtd/database.dtd"); + + $this->doc = new DOMDocument('1.0', 'utf-8'); + $this->doc->formatOutput = true; // pretty printing + + $this->doc->appendChild($this->doc->createComment("Autogenerated by CreoleToXMLSchema!")); + + try { + $this->generateXML(); + $this->log("Writing XML to file: " . $this->xmlSchema); + $outFile = new PhingFile($this->xmlSchema); + $out = new FileWriter($outFile); + $xmlstr = $this->doc->saveXML(); + $out->write($xmlstr); + $out->close(); + } catch (Exception $e) { + $this->log("There was an error building XML from metadata: " . $e->getMessage(), Project::MSG_ERR); + } + $this->log("Propel - CreoleToXMLSchema finished"); + } + + /** + * Generates an XML database schema from Creole metadata. + * + * @return void + * @throws Exception a generic exception. + */ + public function generateXML() + { + // Establish db connection + $con = $this->getConnection(); + + // Get the database Metadata. + $dbInfo = $con->getDatabaseInfo(); + + // create and add the database node + $databaseNode = $this->createDatabaseNode($dbInfo); + $this->doc->appendChild($databaseNode); + } + + /** + * Establishes a Creole database connection + * + * @return object The connection + */ + protected function getConnection() { + + // Attemtp to connect to a database. + $this->dsn = Creole::parseDSN($this->dbUrl); + if ($this->dbUser) { + $this->dsn["username"] = $this->dbUser; + } + if ($this->dbPassword) { + $this->dsn["password"] = $this->dbPassword; + } + if ($this->dbDriver) { + Creole::registerDriver($this->dsn['phptype'], $this->dbDriver); + } + $con = Creole::getConnection($this->dsn); + $this->log("DB connection established"); + + return $con; + } + + /** + * Creates a database node + * + * @param object $dbInfo The dbInfo for this db + * @return object The database node instance + */ + protected function createDatabaseNode($dbInfo) { + + $this->log("Processing database"); + + $node = $this->doc->createElement("database"); + $node->setAttribute("name", $dbInfo->getName()); + + if ($vendorNode = $this->createVendorInfoNode($dbInfo->getVendorSpecificInfo())) { + $node->appendChild($vendorNode); + } + + // create and add table nodes + foreach ($dbInfo->getTables() as $table) { + $tableNode = $this->createTableNode($table); + $node->appendChild($tableNode); + } + + return $node; + } + + /** + * Creates a table node + * + * @param object $table The table + * @return object The table node instance + */ + protected function createTableNode($table) { + + $this->log("Processing table: " . $table->toString()); + + $node = $this->doc->createElement("table"); + $node->setAttribute("name", $table->getName()); + if ($this->isSamePhpName()) { + $node->setAttribute("phpName", $table->getName()); + } + if ($vendorNode = $this->createVendorInfoNode($table->getVendorSpecificInfo())) { + $node->appendChild($vendorNode); + } + + // Create and add column nodes, register column validators + $columns = $table->getColumns(); + foreach ($columns as $column) { + $columnNode = $this->createColumnNode($column); + $node->appendChild($columnNode); + $this->registerValidatorsForColumn($column); + if ($column->isAutoIncrement()) { + $idMethod = 'native'; + } + } + if (isset($idMethod)) { + $node->setAttribute("idMethod", $idMethod); + } + + // Create and add foreign key nodes. + $foreignKeys = $table->getForeignKeys(); + foreach ($foreignKeys as $foreignKey) { + $foreignKeyNode = $this->createForeignKeyNode($foreignKey); + $node->appendChild($foreignKeyNode); + } + + // Create and add index nodes. + $indices = $table->getIndices(); + foreach ($indices as $index) { + $indexNode = $this->createIndexNode($index); + $node->appendChild($indexNode); + } + + // add an id-method-parameter if we have a sequence that matches table_colname_seq + // + // + $pkey = $table->getPrimaryKey(); + if ($pkey) { + $cols = $pkey->getColumns(); + if (count($cols) === 1) { + $col = array_shift($cols); + if ($col->isAutoIncrement()) { + $seq_name = $table->getName().'_'.$col->getName().'_seq'; + if ($table->getDatabase()->isSequence($seq_name)) { + $idMethodParameterNode = $this->doc->createElement("id-method-parameter"); + $idMethodParameterNode->setAttribute("value", $seq_name); + $node->appendChild($idMethodParameterNode); + } + } + } + } + + + // Create and add validator and rule nodes. + $nodes = array(); + $tableName = $table->getName(); + if (isset($this->validatorInfos[$tableName])) { + foreach ($this->validatorInfos[$tableName] as $colName => $rules) { + $column = $table->getColumn($colName); + $colName = $column->getName(); + foreach ($rules as $rule) { + if (!isset($nodes[$colName])) { + $nodes[$colName] = $this->createValidator($column, $rule['type']); + $node->appendChild($nodes[$colName]); + } + $ruleNode = $this->createRuleNode($column, $rule); + $nodes[$colName]->appendChild($ruleNode); + } + } + } + + return $node; + } + + /** + * Returns the Propel type for given Creole type. + * + * This used to be part of the PropelTypes class when Creole was an integral + * part of the Propel build process. As of Propel 1.3, though, this method + * is only needed in this reverse-engineering code. + * + * @param int $creoleType Creole type (e.g. CreoleTypes::CHAR) + * @return string Equivalent Propel type (e.g. PropelTypes::CHAR) + */ + protected static function getMappedPropelType($creoleType) + { + static $creoleToPropelTypeMap; + if ($creoleToPropelTypeMap === null) { + $creoleToPropelTypeMap = array(); + $creoleToPropelTypeMap[CreoleTypes::CHAR] = PropelTypes::CHAR; + $creoleToPropelTypeMap[CreoleTypes::VARCHAR] = PropelTypes::VARCHAR; + $creoleToPropelTypeMap[CreoleTypes::LONGVARCHAR] = PropelTypes::LONGVARCHAR; + $creoleToPropelTypeMap[CreoleTypes::CLOB] = PropelTypes::CLOB; + $creoleToPropelTypeMap[CreoleTypes::NUMERIC] = PropelTypes::NUMERIC; + $creoleToPropelTypeMap[CreoleTypes::DECIMAL] = PropelTypes::DECIMAL; + $creoleToPropelTypeMap[CreoleTypes::TINYINT] = PropelTypes::TINYINT; + $creoleToPropelTypeMap[CreoleTypes::SMALLINT] = PropelTypes::SMALLINT; + $creoleToPropelTypeMap[CreoleTypes::INTEGER] = PropelTypes::INTEGER; + $creoleToPropelTypeMap[CreoleTypes::BIGINT] = PropelTypes::BIGINT; + $creoleToPropelTypeMap[CreoleTypes::REAL] = PropelTypes::REAL; + $creoleToPropelTypeMap[CreoleTypes::FLOAT] = PropelTypes::FLOAT; + $creoleToPropelTypeMap[CreoleTypes::DOUBLE] = PropelTypes::DOUBLE; + $creoleToPropelTypeMap[CreoleTypes::BINARY] = PropelTypes::BINARY; + $creoleToPropelTypeMap[CreoleTypes::VARBINARY] = PropelTypes::VARBINARY; + $creoleToPropelTypeMap[CreoleTypes::LONGVARBINARY] = PropelTypes::LONGVARBINARY; + $creoleToPropelTypeMap[CreoleTypes::BLOB] = PropelTypes::BLOB; + $creoleToPropelTypeMap[CreoleTypes::DATE] = PropelTypes::DATE; + $creoleToPropelTypeMap[CreoleTypes::TIME] = PropelTypes::TIME; + $creoleToPropelTypeMap[CreoleTypes::TIMESTAMP] = PropelTypes::TIMESTAMP; + $creoleToPropelTypeMap[CreoleTypes::BOOLEAN] = PropelTypes::BOOLEAN; + $creoleToPropelTypeMap[CreoleTypes::YEAR] = PropelTypes::INTEGER; + } + + if (isset($creoleToPropelTypeMap[$creoleType])) { + return $creoleToPropelTypeMap[$creoleType]; + } + } + + /** + * Creates an column node + * + * @param object $column The Creole column + * @return object The column node instance + */ + protected function createColumnNode($column) { + + $node = $this->doc->createElement("column"); + + $table = $column->getTable(); + $colName = $column->getName(); + $colType = $column->getType(); + $colSize = $column->getSize(); + $colScale = $column->getScale(); + + if ($colType === CreoleTypes::OTHER) { + $this->log("Column [" . $table->getName() . "." . $colName . "] has a column type (".$column->getNativeType().") that Propel does not support.", Project::MSG_WARN); + } + + $node->setAttribute("name", $colName); + + if ($this->isSamePhpName()) { + $node->setAttribute("phpName", $colName); + } + + $node->setAttribute("type", self::getMappedPropelType($colType)); + + if ($colSize > 0 && ( + $colType == CreoleTypes::CHAR + || $colType == CreoleTypes::VARCHAR + || $colType == CreoleTypes::LONGVARCHAR + || $colType == CreoleTypes::DECIMAL + || $colType == CreoleTypes::FLOAT + || $colType == CreoleTypes::NUMERIC)) { + $node->setAttribute("size", (string) $colSize); + } + + if ($colScale > 0 && ( + $colType == CreoleTypes::DECIMAL + || $colType == CreoleTypes::FLOAT + || $colType == CreoleTypes::NUMERIC)) { + $node->setAttribute("scale", (string) $colScale); + } + + if (!$column->isNullable()) { + $node->setAttribute("required", "true"); + } + + if ($column->isAutoIncrement()) { + $node->setAttribute("autoIncrement", "true"); + } + + if (in_array($colName, $this->getTablePkCols($table))) { + $node->setAttribute("primaryKey", "true"); + } + + if (($defValue = $column->getDefaultValue()) !== null) { + $node->setAttribute("default", iconv($this->dbEncoding, 'utf-8', $defValue)); + } + + if ($vendorNode = $this->createVendorInfoNode($column->getVendorSpecificInfo())) { + $node->appendChild($vendorNode); + } + + return $node; + } + + /** + * Returns the primary key columns for a table + * + * @param object $table The table + * @return array The primary keys + */ + protected function getTablePkCols($table) { + + static $columns = array(); + + $tableName = $table->getName(); + if (!isset($columns[$tableName])) { + $columns[$tableName] = array(); + $primaryKey = $table->getPrimaryKey(); + if ($primaryKey) { + foreach ($primaryKey->getColumns() as $colObject) { + $columns[$tableName][] = $colObject->getName(); + } + } + } + return $columns[$tableName]; + } + + /** + * Creates an foreign key node + * + * @param object $foreignKey The foreign key + * @return object The foreign key node instance + */ + protected function createForeignKeyNode($foreignKey) { + + $node = $this->doc->createElement("foreign-key"); + if ($vendorNode = $this->createVendorInfoNode($foreignKey->getVendorSpecificInfo())) { + $node->appendChild($vendorNode); + } + + $refs = $foreignKey->getReferences(); + // all references must be to same table, so we can grab table from the first, foreign column + $node->setAttribute("foreignTable", $refs[0][1]->getTable()->getName()); + $node->setAttribute("onDelete", $refs[0][2]); + $node->setAttribute("onUpdate", $refs[0][3]); + for ($m = 0, $size = count($refs); $m < $size; $m++) { + $refNode = $this->doc->createElement("reference"); + $refData = $refs[$m]; + $refNode->setAttribute("local", $refData[0]->getName()); + $refNode->setAttribute("foreign", $refData[1]->getName()); + $node->appendChild($refNode); + } + + return $node; + } + + /** + * Creates an index node + * + * @param object $index The index + * @return object The index node instance + */ + protected function createIndexNode($index) { + + $indexType = $index->isUnique() ? 'unique' : 'index'; + + $node = $this->doc->createElement($indexType); + $node->setAttribute("name", $index->getName()); + + $columns = $index->getColumns(); + foreach ($columns as $column) { + $tableName = $column->getTable()->getName(); + $colName = $column->getName(); + $columnNode = $this->doc->createElement("{$indexType}-column"); + $columnNode->setAttribute("name", $colName); + $node->appendChild($columnNode); + if ($indexType == 'unique' && $this->isValidatorRequired('unique')) { + $this->validatorInfos[$tableName][$colName][] = array('type' => 'unique'); + } + } + + if ($vendorNode = $this->createVendorInfoNode($index->getVendorSpecificInfo())) { + $node->appendChild($vendorNode); + } + + return $node; + } + + /** + * Checks whether to add validators of specified type or not + * + * @param int $type The validator type constant. + * @return boolean + */ + protected function isValidatorRequired($type) { + return (($this->validatorBits & $type) === $type); + } + + /** + * Registers column type specific validators if necessary + * + * We'll first collect the validators/rule infos and add them later on to + * have them appended to the table tag as a block. + * + * CreoleTypes are: + * + * BOOLEAN + * BIGINT, SMALLINT, TINYINT, INTEGER + * FLOAT, DOUBLE, NUMERIC, DECIMAL, REAL + * BIGINT, SMALLINT, TINYINT, INTEGER + * TEXT + * BLOB, CLOB, BINARY, VARBINARY, LONGVARBINARY + * DATE, YEAR, TIME + * TIMESTAMP + * + * We will add the following type specific validators: + * + * for notNull columns: required validator + * for unique indexes: unique validator + * for varchar types: maxLength validators (CHAR, VARCHAR, LONGVARCHAR) + * for numeric types: maxValue validators (BIGINT, SMALLINT, TINYINT, INTEGER, FLOAT, DOUBLE, NUMERIC, DECIMAL, REAL) + * for integer and timestamp types: notMatch validator with [^\d]+ (BIGINT, SMALLINT, TINYINT, INTEGER, TIMESTAMP) + * for float types: notMatch validator with [^\d\.]+ (FLOAT, DOUBLE, NUMERIC, DECIMAL, REAL) + * + * @param object $column The Creole column + * @return void + * @todo find out how to evaluate the appropriate size and adjust maxValue rule values appropriate + * @todo find out if float type column values must always notMatch('[^\d\.]+'), i.e. digits and point for any db vendor, language etc. + */ + protected function registerValidatorsForColumn($column) { + + $table = $column->getTable(); + $tableName = $table->getName(); + + $colName = $column->getName(); + $colType = $column->getType(); + $colSize = $column->getSize(); + + if ($this->isValidatorRequired(self::VALIDATORS_REQUIRED)) { + $ruleInfo = array('type' => 'required'); + $this->validatorInfos[$tableName][$colName][] = $ruleInfo; + } + $isPrimarykeyCol = in_array($colName, $this->getTablePkCols($table)); + if ($this->isValidatorRequired(self::VALIDATORS_UNIQUE) && $isPrimarykeyCol) { + $ruleInfo = array('type' => 'unique'); + $this->validatorInfos[$tableName][$colName][] = $ruleInfo; + } + if ($this->isValidatorRequired(self::VALIDATORS_MAXLENGTH) && + $colSize > 0 && in_array($colType, array( + CreoleTypes::CHAR, + CreoleTypes::VARCHAR, + CreoleTypes::LONGVARCHAR))) { + $ruleInfo = array('type' => 'maxLength', 'value' => $colSize); + $this->validatorInfos[$tableName][$colName][] = $ruleInfo; + } + if ($this->isValidatorRequired(self::VALIDATORS_MAXVALUE) && + $colSize > 0 && in_array($colType, array( + CreoleTypes::SMALLINT, + CreoleTypes::TINYINT, + CreoleTypes::INTEGER, + CreoleTypes::BIGINT, + CreoleTypes::FLOAT, + CreoleTypes::DOUBLE, + CreoleTypes::NUMERIC, + CreoleTypes::DECIMAL, + CreoleTypes::REAL))) { + + // TODO: how to evaluate the appropriate size?? + $this->log("WARNING: maxValue validator added for column $colName. You will have to adjust the size value manually.", Project::MSG_WARN); + $ruleInfo = array('type' => 'maxValue', 'value' => $colSize); + $this->validatorInfos[$tableName][$colName][] = $ruleInfo; + } + if ($this->isValidatorRequired(self::VALIDATORS_TYPE) && + $colSize > 0 && in_array($colType, array( + CreoleTypes::SMALLINT, + CreoleTypes::TINYINT, + CreoleTypes::INTEGER, + CreoleTypes::TIMESTAMP))) { + $ruleInfo = array('type' => 'type', 'value' => '[^\d]+'); + $this->validatorInfos[$tableName][$colName][] = $ruleInfo; + } + if ($this->isValidatorRequired(self::VALIDATORS_TYPE) && + $colSize > 0 && in_array($colType, array( + CreoleTypes::FLOAT, + CreoleTypes::DOUBLE, + CreoleTypes::NUMERIC, + CreoleTypes::DECIMAL, + CreoleTypes::REAL))) { + // TODO: is this always true?? + $ruleInfo = array('type' => 'type', 'value' => '[^\d\.]+'); + $this->validatorInfos[$tableName][$colName][] = $ruleInfo; + } + } + + /** + * Creates a validator node + * + * @param object $column The Creole column + * @param integer $type The validator type + * @return object The validator node instance + */ + protected function createValidator($column, $type) { + + $node = $this->doc->createElement('validator'); + $node->setAttribute('column', $column->getName()); + + return $node; + } + + /** + * Creates a rule node + * + * @param object $column The Creole column + * @param array $rule The rule info + * @return object The rule node instance + */ + protected function createRuleNode($column, $rule) { + + extract($rule); + + // create message + $colName = $column->getName(); + $tableName = $column->getTable()->getName(); + $msg = self::$validatorMessages[strtolower($type)]; + $tmp = compact($msg['var']); + array_unshift($tmp, $msg['msg']); + $msg = call_user_func_array('sprintf', $tmp); + + // add node + $node = $this->doc->createElement('rule'); + $node->setAttribute('name', $type == 'type' ? 'notMatch' : $type); + $node->setAttribute('message', $msg); + + return $node; + } + + /** + * Creates a vendor info node + * + * returns false if no vendor info can or has to be added + * + * @param array $vendorInfo The validator info + * @return object|boolean The vendor info instance or false + */ + protected function createVendorInfoNode($vendorInfo) + { + if (!$vendorInfo OR !$this->addVendorInfo) { + return false; + } + + $vendorNode = $this->doc->createElement("vendor"); + $vendorNode->setAttribute("type", $this->dsn["phptype"]); + + foreach ($vendorInfo as $key => $value) { + $parameterNode = $this->doc->createElement("parameter"); + $value = iconv($this->dbEncoding, "utf-8", $value); + $parameterNode->setAttribute("name", $key); + $parameterNode->setAttribute("value", $value); + $vendorNode->appendChild($parameterNode); + } + + return $vendorNode; + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/text-base/PropelDataDTDTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/text-base/PropelDataDTDTask.php.svn-base new file mode 100644 index 0000000..4a50b26 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/text-base/PropelDataDTDTask.php.svn-base @@ -0,0 +1,80 @@ +. + */ + +require_once 'propel/phing/PropelDataModelTemplateTask.php'; +include_once 'propel/engine/builder/om/ClassTools.php'; + +/** + * This Task creates the OM classes based on the XML schema file. + * + * @author Hans Lellelid + * @package propel.phing + */ +class PropelDataDTDTask extends PropelDataModelTemplateTask { + + + public function main() { + + // check to make sure task received all correct params + $this->validate(); + + if (!$this->mapperElement) { + throw new BuildException("You must use a element to describe how names should be transformed."); + } + + $basepath = $this->getOutputDirectory(); + + // Get new Capsule context + $generator = $this->createContext(); + $generator->put("basepath", $basepath); // make available to other templates + + // we need some values that were loaded into the template context + $basePrefix = $generator->get('basePrefix'); + $project = $generator->get('project'); + + foreach ($this->getDataModels() as $dataModel) { + + $this->log("Processing Datamodel : " . $dataModel->getName()); + + foreach ($dataModel->getDatabases() as $database) { + + $outFile = $this->getMappedFile($dataModel->getName()); + + $generator->put("tables", $database->getTables()); + $generator->parse("data/dtd/dataset.tpl", $outFile->getAbsolutePath()); + + $this->log("Generating DTD for database: " . $database->getName()); + $this->log("Creating DTD file: " . $outFile->getPath()); + + foreach ($database->getTables() as $tbl) { + $this->log("\t + " . $tbl->getName()); + $generator->put("table", $tbl); + $generator->parse("data/dtd/table.tpl", $outFile->getAbsolutePath(), true); + } + + } // foreach database + + } // foreach dataModel + + + } // main() +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/text-base/PropelDataDumpTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/text-base/PropelDataDumpTask.php.svn-base new file mode 100644 index 0000000..3f471f3 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/text-base/PropelDataDumpTask.php.svn-base @@ -0,0 +1,365 @@ +. + */ + +/** + * Dumps the contenst of selected databases to XML data dump file. + * + * The generated XML files can have corresponding DTD files generated using the + * PropelDataDTDTask. The results of the data dump can be converted to SQL using + * the PropelDataSQLTask class. + * + * The database may be specified (via 'databaseName' attribute) if you only want to dump + * the contents of one database. Otherwise it is assumed that all databases described + * by datamodel schema file(s) will be dumped. + * + * @author Hans Lellelid (Propel) + * @author Fedor Karpelevitch (Torque) + * @author Jason van Zyl (Torque) + * @author Daniel Rall (Torque) + * @version $Revision$ + * @package propel.phing + */ +class PropelDataDumpTask extends AbstractPropelDataModelTask { + + /** + * Database name. + * The database name may be optionally specified in the XML if you only want + * to dump the contents of one database. + */ + private $databaseName; + + /** + * Database URL used for Creole connection. + * This is a PEAR-compatible (loosely) DSN URL. + */ + private $databaseUrl; + + /** + * Database driver used for Creole connection. + * This should normally be left blank so that default (Creole built-in) driver for database type is used. + */ + private $databaseDriver; + + /** + * Database user used for Creole connection. + * @deprecated Put username in databaseUrl. + */ + private $databaseUser; + + /** + * Database password used for Creole connection. + * @deprecated Put password in databaseUrl. + */ + private $databasePassword; + + /** + * Properties file that maps a data XML file to a particular database. + * @var PhingFile + */ + private $datadbmap; + + /** + * The database connection used to retrieve the data to dump. + * Needs to be public so that the TableInfo class can access it. + */ + public $conn; + + /** + * The statement used to acquire the data to dump. + */ + private $stmt; + + /** + * Set the file that maps between data XML files and databases. + * + * @param PhingFile $sqldbmap the db map + * @return void + */ + public function setDataDbMap(PhingFile $datadbmap) + { + $this->datadbmap = $datadbmap; + } + + /** + * Get the file that maps between data XML files and databases. + * + * @return PhingFile $datadbmap. + */ + public function getDataDbMap() + { + return $this->datadbmap; + } + + /** + * Get the database name to dump + * + * @return The DatabaseName value + */ + public function getDatabaseName() + { + return $this->databaseName; + } + + /** + * Set the database name + * + * @param v The new DatabaseName value + */ + public function setDatabaseName($v) + { + $this->databaseName = $v; + } + + /** + * Get the database url + * + * @return The DatabaseUrl value + */ + public function getDatabaseUrl() + { + return $this->databaseUrl; + } + + /** + * Set the database url + * + * @param string $v The PEAR-compatible database DSN URL. + */ + public function setDatabaseUrl($v) + { + $this->databaseUrl = $v; + } + + /** + * Get the database user + * + * @return string database user + * @deprecated + */ + public function getDatabaseUser() + { + return $this->databaseUser; + } + + /** + * Set the database user + * + * @param string $v The new DatabaseUser value + * @deprecated Specify user in DSN URL. + */ + public function setDatabaseUser($v) + { + $this->databaseUser = $v; + } + + /** + * Get the database password + * + * @return string database password + */ + public function getDatabasePassword() + { + return $this->databasePassword; + } + + /** + * Set the database password + * + * @param string $v The new DatabasePassword value + * @deprecated Specify database password in DSN URL. + */ + public function setDatabasePassword($v) + { + $this->databasePassword = $v; + } + + /** + * Get the database driver name + * + * @return string database driver name + */ + public function getDatabaseDriver() + { + return $this->databaseDriver; + } + + /** + * Set the database driver name + * + * @param string $v The new DatabaseDriver value + */ + public function setDatabaseDriver($v) + { + $this->databaseDriver = $v; + } + + /** + * Create the data XML -> database map. + * + * This is necessary because there is currently no other method of knowing which + * data XML files correspond to which database. This map allows us to convert multiple + * data XML files into SQL. + * + * @throws IOException - if unable to store properties + */ + private function createDataDbMap() + { + if ($this->getDataDbMap() === null) { + return; + } + + // Produce the sql -> database map + $datadbmap = new Properties(); + + // Check to see if the sqldbmap has already been created. + if ($this->getDataDbMap()->exists()) { + $datadbmap->load($this->getDataDbMap()); + } + + foreach ($this->getDataModels() as $dataModel) { // there is really one 1 db per datamodel + foreach ($dataModel->getDatabases() as $database) { + + // if database name is specified, then we only want to dump that one db. + if (empty($this->databaseName) || ($this->databaseName && $database->getName() == $this->databaseName)) { + $outFile = $this->getMappedFile($dataModel->getName()); + $datadbmap->setProperty($outFile->getName(), $database->getName()); + } + } + } + + try { + $datadbmap->store($this->getDataDbMap(), "Data XML file -> Database map"); + } catch (IOException $e) { + throw new IOException("Unable to store properties: ". $e->getMessage()); + } + } + + /** + * Iterates through each datamodel/database, dumps the contents of all tables and creates a DOM XML doc. + * + * @return void + * @throws BuildException + */ + public function main() + { + $this->validate(); + + $buf = "Database settings:\n" + . " driver: " . ($this->databaseDriver ? $this->databaseDriver : "(default)" ). "\n" + . " URL: " . $this->databaseUrl . "\n" + . ($this->databaseUser ? " user: " . $this->databaseUser . "\n" : "") + . ($this->databasePassword ? " password: " . $this->databasePassword . "\n" : ""); + + $this->log($buf, Project::MSG_VERBOSE); + + // 1) First create the Data XML -> database name map. + $this->createDataDbMap(); + + // 2) Now go create the XML files from teh database(s) + foreach ($this->getDataModels() as $dataModel) { // there is really one 1 db per datamodel + foreach ($dataModel->getDatabases() as $database) { + + // if database name is specified, then we only want to dump that one db. + if (empty($this->databaseName) || ($this->databaseName && $database->getName() == $this->databaseName)) { + + $outFile = $this->getMappedFile($dataModel->getName()); + + $this->log("Dumping data to XML for database: " . $database->getName()); + $this->log("Writing to XML file: " . $outFile->getName()); + + try { + + $url = str_replace("@DB@", $database->getName(), $this->databaseUrl); + + if ($url !== $this->databaseUrl) { + $this->log("New (resolved) URL: " . $url, Project::MSG_VERBOSE); + } + + if (empty($url)) { + throw new BuildException("Unable to connect to database; no PDO connection URL specified.", $this->getLocation()); + } + + $this->conn = new PDO($url, $this->databaseUser, $this->databasePassword); + $this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + + $doc = $this->createXMLDoc($database); + $doc->save($outFile->getAbsolutePath()); + + } catch (SQLException $se) { + $this->log("SQLException while connecting to DB: ". $se->getMessage(), Project::MSG_ERR); + throw new BuildException($se); + } + } // if databaseName && database->getName == databaseName + } // foreach database + } // foreach datamodel + } + + /** + * Gets PDOStatement of query to fetch all data from a table. + * @param string $tableName + * @param Platform $platform + * @return PDOStatement + */ + private function getTableDataStmt($tableName, Platform $platform) + { + return $this->conn->query("SELECT * FROM " . $platform->quoteIdentifier( $tableName ) ); + } + + /** + * Creates a DOM document containing data for specified database. + * @param Database $database + * @return DOMDocument + */ + private function createXMLDoc(Database $database) + { + $doc = new DOMDocument('1.0', 'utf-8'); + $doc->formatOutput = true; // pretty printing + $doc->appendChild($doc->createComment("Created by data/dump/Control.tpl template.")); + + $dsNode = $doc->createElement("dataset"); + $dsNode->setAttribute("name", "all"); + $doc->appendChild($dsNode); + + $platform = $this->getGeneratorConfig()->getConfiguredPlatform($this->conn); + + $this->log("Building DOM tree containing data from tables:"); + + foreach ($database->getTables() as $tbl) { + $this->log("\t+ " . $tbl->getName()); + $stmt = $this->getTableDataStmt($tbl->getName(), $platform); + while ($row = $stmt->fetch()) { + $rowNode = $doc->createElement($tbl->getPhpName()); + foreach ($tbl->getColumns() as $col) { + $cval = $row[$col->getName()]; + if ($cval !== null) { + $rowNode->setAttribute($col->getPhpName(), iconv($this->dbEncoding, 'utf-8', $cval)); + } + } + $dsNode->appendChild($rowNode); + unset($rowNode); + } + unset($stmt); + } + + return $doc; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/text-base/PropelDataModelTemplateTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/text-base/PropelDataModelTemplateTask.php.svn-base new file mode 100644 index 0000000..e94a221 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/text-base/PropelDataModelTemplateTask.php.svn-base @@ -0,0 +1,228 @@ +. + */ + +require_once 'propel/phing/AbstractPropelDataModelTask.php'; +include_once 'propel/engine/database/model/AppData.php'; +include_once 'propel/engine/database/model/Database.php'; +include_once 'propel/engine/database/transform/XmlToAppData.php'; + +/** + * A generic class that simply loads the data model and parses a control template. + * + * This class exists largely for compatibility with early Propel where this was + * a CapsuleTask subclass. This class also makes it easy to quickly add some custom + * datamodel-based transformations (by allowing you to put the logic in the templates). + * + * @author Hans Lellelid + * @package propel.phing + * @version $Revision$ + */ +class PropelDataModelTemplateTask extends AbstractPropelDataModelTask { + + /** + * This is the file where the generated text + * will be placed. + * @var string + */ + protected $outputFile; + + /** + * Path where Capsule looks for templates. + * @var PhingFile + */ + protected $templatePath; + + /** + * This is the control template that governs the output. + * It may or may not invoke the services of worker + * templates. + * @var string + */ + protected $controlTemplate; + + /** + * [REQUIRED] Set the output file for the + * generation process. + * @param string $outputFile (TODO: change this to File) + * @return void + */ + public function setOutputFile($outputFile) { + $this->outputFile = $outputFile; + } + + /** + * Get the output file for the + * generation process. + * @return string + */ + public function getOutputFile() { + return $this->outputFile; + } + + /** + * [REQUIRED] Set the control template for the + * generating process. + * @param string $controlTemplate + * @return void + */ + public function setControlTemplate ($controlTemplate) { + $this->controlTemplate = $controlTemplate; + } + + /** + * Get the control template for the + * generating process. + * @return string + */ + public function getControlTemplate() { + return $this->controlTemplate; + } + + /** + * [REQUIRED] Set the path where Capsule will look + * for templates using the file template + * loader. + * @return void + * @throws Exception + */ + public function setTemplatePath($templatePath) { + $resolvedPath = ""; + $tok = strtok($templatePath, ","); + while ( $tok ) { + // resolve relative path from basedir and leave + // absolute path untouched. + $fullPath = $this->project->resolveFile($tok); + $cpath = $fullPath->getCanonicalPath(); + if ($cpath === false) { + $this->log("Template directory does not exist: " . $fullPath->getAbsolutePath()); + } else { + $resolvedPath .= $cpath; + } + $tok = strtok(","); + if ( $tok ) { + $resolvedPath .= ","; + } + } + $this->templatePath = $resolvedPath; + } + + /** + * Get the path where Velocity will look + * for templates using the file template + * loader. + * @return string + */ + public function getTemplatePath() { + return $this->templatePath; + } + + /** + * Creates a new Capsule context with some basic properties set. + * (Capsule is a simple PHP encapsulation system -- aka a php "template" class.) + * @return Capsule + */ + protected function createContext() { + + $context = new Capsule(); + + // Make sure the output directory exists, if it doesn't + // then create it. + $outputDir = new PhingFile($this->outputDirectory); + if (!$outputDir->exists()) { + $this->log("Output directory does not exist, creating: " . $outputDir->getAbsolutePath()); + $outputDir->mkdirs(); + } + + // Place our set of data models into the context along + // with the names of the databases as a convenience for now. + $context->put("targetDatabase", $this->getTargetDatabase()); + $context->put("targetPackage", $this->getTargetPackage()); + $context->put("now", strftime("%c")); + + $this->log("Target database type: " . $this->getTargetDatabase()); + $this->log("Target package: " . $this->getTargetPackage()); + $this->log("Using template path: " . $this->templatePath); + $this->log("Output directory: " . $this->getOutputDirectory()); + + $context->setTemplatePath($this->templatePath); + $context->setOutputDirectory($this->outputDirectory); + + $this->populateContextProperties($context); + + return $context; + } + + /** + * Adds the propel build properties to the passed Capsule context. + * + * @param Capsule $context + * @see GeneratorConfig::getBuildProperties() + */ + public function populateContextProperties(Capsule $context) + { + foreach ($this->getGeneratorConfig()->getBuildProperties() as $key => $propValue) { + $this->log('Adding property ${' . $key . '} to context', Project::MSG_DEBUG); + $context->put($key, $propValue); + } + } + + /** + * Performs validation for single-file mode. + * @throws BuildException - if there are any validation errors + */ + protected function singleFileValidate() + { + parent::validate(); + + // Make sure the control template is set. + if ($this->controlTemplate === null) { + throw new BuildException("The control template needs to be defined!"); + } + // Make sure there is an output file. + if ($this->outputFile === null) { + throw new BuildException("The output file needs to be defined!"); + } + + } + + /** + * Creates Capsule context and parses control template. + * @return void + */ + public function main() + { + $this->singleFileValidate(); + $context = $this->createContext(); + + $context->put("dataModels", $this->getDataModels()); + + $path = $this->outputDirectory . DIRECTORY_SEPARATOR . $this->outputFile; + $this->log("Generating to file " . $path); + + try { + $this->log("Parsing control template: " . $this->controlTemplate); + $context->parse($this->controlTemplate, $path); + } catch (Exception $ioe) { + throw new BuildException("Cannot write parsed template: ". $ioe->getMessage()); + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/text-base/PropelDataSQLTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/text-base/PropelDataSQLTask.php.svn-base new file mode 100644 index 0000000..92f229f --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/text-base/PropelDataSQLTask.php.svn-base @@ -0,0 +1,204 @@ +. + */ + +include_once 'propel/engine/database/model/AppData.php'; +include_once 'propel/engine/database/model/Database.php'; +include_once 'propel/engine/database/transform/XmlToAppData.php'; +include_once 'propel/engine/builder/util/transform/XmlToDataSQL.php'; + +/** + * Task that transforms XML datadump files into files containing SQL INSERT statements. + * + * @author Hans Lellelid (Propel) + * @author Jason van Zyl (Torque) + * @author John McNally (Torque) + * @author Fedor Karpelevitch (Torque) + * @version $Revision$ + * @package propel.phing + */ +class PropelDataSQLTask extends AbstractPropelDataModelTask { + + /** + * Properties file that maps an SQL file to a particular database. + * @var PhingFile + */ + private $sqldbmap; + + /** + * Properties file that maps a data XML file to a particular database. + * @var PhingFile + */ + private $datadbmap; + + /** + * The base directory in which to find data XML files. + * @var PhingFile + */ + private $srcDir; + + /** + * Set the file that maps between SQL files and databases. + * + * @param PhingFile $sqldbmap the sql -> db map. + * @return void + */ + public function setSqlDbMap(PhingFile $sqldbmap) + { + $this->sqldbmap = $sqldbmap; + } + + /** + * Get the file that maps between SQL files and databases. + * + * @return PhingFile sqldbmap. + */ + public function getSqlDbMap() + { + return $this->sqldbmap; + } + + /** + * Set the file that maps between data XML files and databases. + * + * @param PhingFile $sqldbmap the db map + * @return void + */ + public function setDataDbMap(PhingFile $datadbmap) + { + $this->datadbmap = $datadbmap; + } + + /** + * Get the file that maps between data XML files and databases. + * + * @return PhingFile $datadbmap. + */ + public function getDataDbMap() + { + return $this->datadbmap; + } + + /** + * Set the src directory for the data xml files listed in the datadbmap file. + * @param PhingFile $srcDir data xml source directory + */ + public function setSrcDir(PhingFile $srcDir) + { + $this->srcDir = $srcDir; + } + + /** + * Get the src directory for the data xml files listed in the datadbmap file. + * + * @return PhingFile data xml source directory + */ + public function getSrcDir() + { + return $this->srcDir; + } + + /** + * Search through all data models looking for matching database. + * @return Database or NULL if none found. + */ + private function getDatabase($name) + { + foreach ($this->getDataModels() as $dm) { + foreach ($dm->getDatabases() as $db) { + if ($db->getName() == $name) { + return $db; + } + } + } + } + + /** + * Main method parses the XML files and creates SQL files. + * + * @return void + * @throws Exception If there is an error parsing the data xml. + */ + public function main() + { + $this->validate(); + + $targetDatabase = $this->getTargetDatabase(); + + $platform = $this->getGeneratorConfig()->getConfiguredPlatform(); + + // Load the Data XML -> DB Name properties + $map = new Properties(); + try { + $map->load($this->getDataDbMap()); + } catch (IOException $ioe) { + throw new BuildException("Cannot open and process the datadbmap!", $ioe); + } + + // Parse each file in the data -> db map + foreach ($map->keys() as $dataXMLFilename) { + + $dataXMLFile = new PhingFile($this->srcDir, $dataXMLFilename); + + // if file exists then proceed + if ($dataXMLFile->exists()) { + + $dbname = $map->get($dataXMLFilename); + + $db = $this->getDatabase($dbname); + + if (!$db) { + throw new BuildException("Cannot find instantiated Database for name '$dbname' from datadbmap file."); + } + + $db->setPlatform($platform); + + $outFile = $this->getMappedFile($dataXMLFilename); + $sqlWriter = new FileWriter($outFile); + + $this->log("Creating SQL from XML data dump file: " . $dataXMLFile->getAbsolutePath()); + + try { + $dataXmlParser = new XmlToDataSQL($db, $this->getGeneratorConfig(), $this->dbEncoding); + $dataXmlParser->transform($dataXMLFile, $sqlWriter); + } catch (Exception $e) { + throw new BuildException("Exception parsing data XML: " . $e->getMessage(), $x); + } + + // Place the generated SQL file(s) + $p = new Properties(); + if ($this->getSqlDbMap()->exists()) { + $p->load($this->getSqlDbMap()); + } + + $p->setProperty($outFile->getName(), $db->getName()); + $p->store($this->getSqlDbMap(), "Sqlfile -> Database map"); + + } else { + $this->log("File '" . $dataXMLFile->getAbsolutePath() + . "' in datadbmap does not exist, so skipping it.", Project::MSG_WARN); + } + + } // foreach data xml file + + } // main() + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/text-base/PropelGraphvizTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/text-base/PropelGraphvizTask.php.svn-base new file mode 100644 index 0000000..89d859c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/text-base/PropelGraphvizTask.php.svn-base @@ -0,0 +1,181 @@ +. + */ + +require_once 'propel/phing/AbstractPropelDataModelTask.php'; +include_once 'propel/engine/database/model/AppData.php'; + +/** + * A task to generate Graphviz dot files from Propel datamodel. + * + * @author Mark Kimsal + * @version $Revision$ + * @package propel.phing + */ +class PropelGraphvizTask extends AbstractPropelDataModelTask { + + /** + * The properties file that maps an SQL file to a particular database. + * @var PhingFile + */ + private $sqldbmap; + + /** + * Name of the database. + */ + private $database; + + /** + * Name of the output directory. + */ + private $outDir; + + + /** + * Set the sqldbmap. + * @param PhingFile $sqldbmap The db map. + */ + public function setOutputDirectory(PhingFile $out) + { + if (!$out->exists()) { + $out->mkdirs(); + } + $this->outDir = $out; + } + + + /** + * Set the sqldbmap. + * @param PhingFile $sqldbmap The db map. + */ + public function setSqlDbMap(PhingFile $sqldbmap) + { + $this->sqldbmap = $sqldbmap; + } + + /** + * Get the sqldbmap. + * @return PhingFile $sqldbmap. + */ + public function getSqlDbMap() + { + return $this->sqldbmap; + } + + /** + * Set the database name. + * @param string $database + */ + public function setDatabase($database) + { + $this->database = $database; + } + + /** + * Get the database name. + * @return string + */ + public function getDatabase() + { + return $this->database; + } + + + public function main() + { + + $count = 0; + + $dotSyntax = ''; + + // file we are going to create + + $dbMaps = $this->getDataModelDbMap(); + + foreach ($this->getDataModels() as $dataModel) { + + $dotSyntax .= "digraph G {\n"; + foreach ($dataModel->getDatabases() as $database) { + + $this->log("db: " . $database->getName()); + + //print the tables + foreach ($database->getTables() as $tbl) { + + $this->log("\t+ " . $tbl->getName()); + + ++$count; + $dotSyntax .= 'node'.$tbl->getName().' [label="{'.$tbl->getName().'|'; + + foreach ($tbl->getColumns() as $col) { + $dotSyntax .= $col->getName() . ' (' . $col->getType() . ')'; + if (count($col->getForeignKeys()) > 0) { + $dotSyntax .= ' [FK]'; + } elseif ($col->isPrimaryKey()) { + $dotSyntax .= ' [PK]'; + } + $dotSyntax .= '\l'; + } + $dotSyntax .= '}", shape=record];'; + $dotSyntax .= "\n"; + } + + //print the relations + + $count = 0; + $dotSyntax .= "\n"; + foreach ($database->getTables() as $tbl) { + ++$count; + + foreach ($tbl->getColumns() as $col) { + $fk = $col->getForeignKeys(); + if ( count($fk) == 0 or $fk === null ) continue; + if ( count($fk) > 1 ) throw( new Exception("not sure what to do here...") ); + $fk = $fk[0]; // try first one + $dotSyntax .= 'node'.$tbl->getName() .':cols -> node'.$fk->getForeignTableName() . ':table [label="' . $col->getName() . '=' . implode(',', $fk->getForeignColumns()) . ' "];'; + $dotSyntax .= "\n"; + } + } + + + + } // foreach database + $dotSyntax .= "}\n"; + + $this->writeDot($dotSyntax,$this->outDir,$database->getName()); + + $dotSyntax = ''; + + } //foreach datamodels + + } // main() + + + /** + * probably insecure + */ + function writeDot($dotSyntax, PhingFile $outputDir, $baseFilename) { + $file = new PhingFile($outputDir, $baseFilename . '.schema.dot'); + $this->log("Writing dot file to " . $file->getAbsolutePath()); + file_put_contents($file->getAbsolutePath(), $dotSyntax); + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/text-base/PropelOMTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/text-base/PropelOMTask.php.svn-base new file mode 100644 index 0000000..bba0819 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/text-base/PropelOMTask.php.svn-base @@ -0,0 +1,212 @@ +. + */ + +require_once 'propel/phing/AbstractPropelDataModelTask.php'; +include_once 'propel/engine/builder/om/ClassTools.php'; +require_once 'propel/engine/builder/om/OMBuilder.php'; + +/** + * This Task creates the OM classes based on the XML schema file. + * + * @author Hans Lellelid + * @package propel.phing + */ +class PropelOMTask extends AbstractPropelDataModelTask { + + /** + * The platform (php4, php5, etc.) for which the om is being built. + * @var string + */ + private $targetPlatform; + + /** + * Sets the platform (php4, php5, etc.) for which the om is being built. + * @param string $v + */ + public function setTargetPlatform($v) { + $this->targetPlatform = $v; + } + + /** + * Gets the platform (php4, php5, etc.) for which the om is being built. + * @return string + */ + public function getTargetPlatform() { + return $this->targetPlatform; + } + + /** + * Utility method to create directory for package if it doesn't already exist. + * @param string $path The [relative] package path. + * @throws BuildException - if there is an error creating directories + */ + protected function ensureDirExists($path) + { + $f = new PhingFile($this->getOutputDirectory(), $path); + if (!$f->exists()) { + if (!$f->mkdirs()) { + throw new BuildException("Error creating directories: ". $f->getPath()); + } + } + } + + /** + * Uses a builder class to create the output class. + * This method assumes that the DataModelBuilder class has been initialized with the build properties. + * @param OMBuilder $builder + * @param boolean $overwrite Whether to overwrite existing files with te new ones (default is YES). + * @todo -cPropelOMTask Consider refactoring build() method into AbstractPropelDataModelTask (would need to be more generic). + */ + protected function build(OMBuilder $builder, $overwrite = true) + { + + $path = $builder->getClassFilePath(); + $this->ensureDirExists(dirname($path)); + + $_f = new PhingFile($this->getOutputDirectory(), $path); + if ($overwrite || !$_f->exists()) { + $this->log("\t\t-> " . $builder->getClassname() . " [builder: " . get_class($builder) . "]"); + $script = $builder->build(); + file_put_contents($_f->getAbsolutePath(), $script); + foreach ($builder->getWarnings() as $warning) { + $this->log($warning, Project::MSG_WARN); + } + } else { + $this->log("\t\t-> (exists) " . $builder->getClassname()); + } + + } + + /** + * Main method builds all the targets for a typical propel project. + */ + public function main() + { + // check to make sure task received all correct params + $this->validate(); + + $generatorConfig = $this->getGeneratorConfig(); + + foreach ($this->getDataModels() as $dataModel) { + $this->log("Processing Datamodel : " . $dataModel->getName()); + + foreach ($dataModel->getDatabases() as $database) { + + $this->log(" - processing database : " . $database->getName()); + + foreach ($database->getTables() as $table) { + + if (!$table->isForReferenceOnly()) { + + $this->log("\t+ " . $table->getName()); + + // ----------------------------------------------------------------------------------------- + // Create Peer, Object, and TableMap classes + // ----------------------------------------------------------------------------------------- + + // these files are always created / overwrite any existing files + foreach (array('peer', 'object', 'tablemap') as $target) { + $builder = $generatorConfig->getConfiguredBuilder($table, $target); + $this->build($builder); + } + + // ----------------------------------------------------------------------------------------- + // Create [empty] stub Peer and Object classes if they don't exist + // ----------------------------------------------------------------------------------------- + + // these classes are only generated if they don't already exist + foreach (array('peerstub', 'objectstub') as $target) { + $builder = $generatorConfig->getConfiguredBuilder($table, $target); + $this->build($builder, $overwrite=false); + } + + // ----------------------------------------------------------------------------------------- + // Create [empty] stub child Object classes if they don't exist + // ----------------------------------------------------------------------------------------- + + // If table has enumerated children (uses inheritance) then create the empty child stub classes if they don't already exist. + if ($table->getChildrenColumn()) { + $col = $table->getChildrenColumn(); + if ($col->isEnumeratedClasses()) { + foreach ($col->getChildren() as $child) { + $builder = $generatorConfig->getConfiguredBuilder($table, 'objectmultiextend'); + $builder->setChild($child); + $this->build($builder, $overwrite=false); + } // foreach + } // if col->is enumerated + } // if tbl->getChildrenCol + + + // ----------------------------------------------------------------------------------------- + // Create [empty] Interface if it doesn't exist + // ----------------------------------------------------------------------------------------- + + // Create [empty] interface if it does not already exist + if ($table->getInterface()) { + $builder = $generatorConfig->getConfiguredBuilder($table, 'interface'); + $this->build($builder, $overwrite=false); + } + + // ----------------------------------------------------------------------------------------- + // Create tree Node classes + // ----------------------------------------------------------------------------------------- + + if ($table->treeMode()) { + switch($table->treeMode()) { + case 'NestedSet': + foreach (array('nestedsetpeer', 'nestedset') as $target) { + $builder = $generatorConfig->getConfiguredBuilder($table, $target); + $this->build($builder); + } + break; + + case 'MaterializedPath': + foreach (array('nodepeer', 'node') as $target) { + $builder = $generatorConfig->getConfiguredBuilder($table, $target); + $this->build($builder); + } + + foreach (array('nodepeerstub', 'nodestub') as $target) { + $builder = $generatorConfig->getConfiguredBuilder($table, $target); + $this->build($builder, $overwrite=false); + } + break; + + case 'AdjacencyList': + // No implementation for this yet. + default: + break; + } + + } // if Table->treeMode() + + + } // if !$table->isForReferenceOnly() + + } // foreach table + + } // foreach database + + } // foreach dataModel + + } // main() +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/text-base/PropelSQLExec.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/text-base/PropelSQLExec.php.svn-base new file mode 100644 index 0000000..0d2fa03 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/text-base/PropelSQLExec.php.svn-base @@ -0,0 +1,711 @@ +. + */ + +require_once 'phing/Task.php'; + +/** + * Executes all SQL files referenced in the sqldbmap file against their mapped databases. + * + * This task uses an SQL -> Database map in the form of a properties + * file to insert each SQL file listed into its designated database. + * + * @author Hans Lellelid + * @author Dominik del Bondio + * @author Jeff Martin (Torque) + * @author Michael McCallum (Torque) + * @author Tim Stephenson (Torque) + * @author Jason van Zyl (Torque) + * @author Martin Poeschl (Torque) + * @version $Revision$ + * @package propel.phing + */ +class PropelSQLExec extends Task { + + private $goodSql = 0; + private $totalSql = 0; + + const DELIM_ROW = "row"; + const DELIM_NORMAL = "normal"; + + /** + * The delimiter type indicating whether the delimiter will + * only be recognized on a line by itself + */ + private $delimiterType = "normal"; // can't use constant just defined + + //private static $delimiterTypes = array(DELIM_NORMAL, DELIM_ROW); + //private static $errorActions = array("continue", "stop", "abort"); + + /** PDO Database connection */ + private $conn = null; + + /** Autocommit flag. Default value is false */ + private $autocommit = false; + + /** DB url. */ + private $url = null; + + /** User name. */ + private $userId = null; + + /** Password */ + private $password = null; + + /** SQL input command */ + private $sqlCommand = ""; + + /** SQL transactions to perform */ + private $transactions = array(); + + /** SQL Statement delimiter */ + private $delimiter = ";"; + + /** Print SQL results. */ + private $print = false; + + /** Print header columns. */ + private $showheaders = true; + + /** Results Output file. */ + private $output = null; + + /** RDBMS Product needed for this SQL. */ + private $rdbms = null; + + /** RDBMS Version needed for this SQL. */ + private $version = null; + + /** Action to perform if an error is found */ + private $onError = "abort"; + + /** Encoding to use when reading SQL statements from a file */ + private $encoding = null; + + /** Src directory for the files listed in the sqldbmap. */ + private $srcDir; + + /** Properties file that maps an individual SQL file to a database. */ + private $sqldbmap; + + /** + * Set the sqldbmap properties file. + * + * @param sqldbmap filename for the sqldbmap + */ + public function setSqlDbMap($sqldbmap) + { + $this->sqldbmap = $this->project->resolveFile($sqldbmap); + } + + /** + * Get the sqldbmap properties file. + * + * @return filename for the sqldbmap + */ + public function getSqlDbMap() + { + return $this->sqldbmap; + } + + /** + * Set the src directory for the sql files listed in the sqldbmap file. + * + * @param PhingFile $srcDir sql source directory + */ + public function setSrcDir(PhingFile $srcDir) + { + $this->srcDir = $srcDir; + } + + /** + * Get the src directory for the sql files listed in the sqldbmap file. + * + * @return PhingFile SQL Source directory + */ + public function getSrcDir() + { + return $this->srcDir; + } + + /** + * Set the sql command to execute + * + * @param sql sql command to execute + */ + public function addText($sql) + { + $this->sqlCommand .= $sql; + } + + /** + * Set the DB connection url. + * + * @param string $url connection url + */ + public function setUrl($url) + { + $this->url = $url; + } + + /** + * Set the user name for the DB connection. + * + * @param string $userId database user + * @deprecated Specify userid in the DSN URL. + */ + public function setUserid($userId) + { + $this->userId = $userId; + } + + /** + * Set the password for the DB connection. + * + * @param string $password database password + * @deprecated Specify password in the DSN URL. + */ + public function setPassword($password) + { + $this->password = $password; + } + + /** + * Set the autocommit flag for the DB connection. + * + * @param boolean $autocommit the autocommit flag + */ + public function setAutoCommit($autocommit) + { + $this->autocommit = (boolean) $autocommit; + } + + /** + * Set the statement delimiter. + * + *

    For example, set this to "go" and delimitertype to "ROW" for + * Sybase ASE or MS SQL Server.

    + * + * @param string $delimiter + */ + public function setDelimiter($delimiter) + { + $this->delimiter = $delimiter; + } + + /** + * Set the Delimiter type for this sql task. The delimiter type takes two + * values - normal and row. Normal means that any occurence of the delimiter + * terminate the SQL command whereas with row, only a line containing just + * the delimiter is recognized as the end of the command. + * + * @param string $delimiterType + */ + public function setDelimiterType($delimiterType) + { + $this->delimiterType = $delimiterType; + } + + /** + * Set the print flag. + * + * @param boolean $print + */ + public function setPrint($print) + { + $this->print = (boolean) $print; + } + + /** + * Set the showheaders flag. + * + * @param boolean $showheaders + */ + public function setShowheaders($showheaders) + { + $this->showheaders = (boolean) $showheaders; + } + + /** + * Set the output file. + * + * @param PhingFile $output + */ + public function setOutput(PhingFile $output) + { + $this->output = $output; + } + + /** + * Set the action to perform onerror + * + * @param string $action + */ + public function setOnerror($action) + { + $this->onError = $action; + } + + /** + * Load the sql file and then execute it + * + * @throws BuildException + */ + public function main() + { + $this->sqlCommand = trim($this->sqlCommand); + + if ($this->sqldbmap === null || $this->getSqlDbMap()->exists() === false) { + throw new BuildException("You haven't provided an sqldbmap, or " + . "the one you specified doesn't exist: " . $this->sqldbmap->getPath()); + } + + if ($this->url === null) { + throw new BuildException("DSN url attribute must be set!"); + } + + $map = new Properties(); + + try { + $map->load($this->getSqlDbMap()); + } catch (IOException $ioe) { + throw new BuildException("Cannot open and process the sqldbmap!"); + } + + $databases = array(); + + foreach ($map->keys() as $sqlfile) { + + $database = $map->getProperty($sqlfile); + + // Q: already there? + if (!isset($databases[$database])) { + // A: No. + $databases[$database] = array(); + } + + // We want to make sure that the base schemas + // are inserted first. + if (strpos($sqlfile, "schema.sql") !== false) { + // add to the beginning of the array + array_unshift($databases[$database], $sqlfile); + } else { + array_push($databases[$database], $sqlfile); + } + } + + foreach ($databases as $db => $files) { + $transactions = array(); + + foreach ($files as $fileName) { + + $file = new PhingFile($this->srcDir, $fileName); + + if ($file->exists()) { + $this->log("Executing statements in file: " . $file->__toString()); + $transaction = new PropelSQLExecTransaction($this); + $transaction->setSrc($file); + $transactions[] = $transaction; + } else { + $this->log("File '" . $file->__toString() + . "' in sqldbmap does not exist, so skipping it."); + } + } + $this->insertDatabaseSqlFiles($this->url, $db, $transactions); + } + } + + /** + * Take the base url, the target database and insert a set of SQL + * files into the target database. + * + * @param string $url + * @param string $database + * @param array $transactions + */ + private function insertDatabaseSqlFiles($url, $database, $transactions) + { + $url = str_replace("@DB@", $database, $url); + $this->log("Our new url -> " . $url); + + try { + + $buf = "Database settings:" . PHP_EOL + . " URL: " . $url . PHP_EOL + . ($this->userId ? " user: " . $this->userId . PHP_EOL : "") + . ($this->password ? " password: " . $this->password . PHP_EOL : ""); + + $this->log($buf, Project::MSG_VERBOSE); + + // Set user + password to null if they are empty strings + if (!$this->userId) { $this->userId = null; } + + if (!$this->password) { $this->password = null; } + + $this->conn = new PDO($url, $this->userId, $this->password); + $this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + + // $this->conn->setAutoCommit($this->autocommit); + // $this->statement = $this->conn->createStatement(); + + $out = null; + + try { + if ($this->output !== null) { + $this->log("Opening PrintStream to output file " . $this->output->__toString(), Project::MSG_VERBOSE); + $out = new FileWriter($this->output); + } + + // Process all transactions + for ($i=0,$size=count($transactions); $i < $size; $i++) { + $transactions[$i]->runTransaction($out); + if (!$this->autocommit) { + $this->log("Commiting transaction", Project::MSG_VERBOSE); + $this->conn->commit(); + } + } + } catch (Exception $e) { + if ($out) $out->close(); + } + + } catch (IOException $e) { + + if (!$this->autocommit && $this->conn !== null && $this->onError == "abort") { + try { + $this->conn->rollBack(); + } catch (PDOException $ex) { + // do nothing. + System::println("Rollback failed."); + } + } + if ($this->statement) $this->statement = null; // close + throw new BuildException($e); + } catch (PDOException $e) { + if (!$this->autocommit && $this->conn !== null && $this->onError == "abort") { + try { + $this->conn->rollBack(); + } catch (PDOException $ex) { + // do nothing. + System::println("Rollback failed"); + } + } + if ($this->statement) $this->statement = null; // close + throw new BuildException($e); + } + + $this->statement = null; // close + + $this->log($this->goodSql . " of " . $this->totalSql + . " SQL statements executed successfully"); + } + + /** + * Read the statements from the .sql file and execute them. + * Lines starting with '//', '--' or 'REM ' are ignored. + * + * Developer note: must be public in order to be called from + * sudo-"inner" class PropelSQLExecTransaction. + * + * @param Reader $reader + * @param $out Optional output stream. + * @throws PDOException + * @throws IOException + */ + public function runStatements(Reader $reader, $out = null) + { + $sql = ""; + $line = ""; + $sqlBacklog = ""; + $hasQuery = false; + + $in = new BufferedReader($reader); + + $parser['pointer'] = 0; + $parser['isInString'] = false; + $parser['stringQuotes'] = ""; + $parser['backslashCount'] = 0; + $parser['parsedString'] = ""; + + $sqlParts = array(); + + while (($line = $in->readLine()) !== null) { + + $line = trim($line); + $line = ProjectConfigurator::replaceProperties($this->project, $line, + $this->project->getProperties()); + + if (StringHelper::startsWith("//", $line) + || StringHelper::startsWith("--", $line) + || StringHelper::startsWith("#", $line)) { + continue; + } + + if (strlen($line) > 4 && strtoupper(substr($line,0, 4)) == "REM ") { + continue; + } + + if ($sqlBacklog !== "") { + $sql = $sqlBacklog; + $sqlBacklog = ""; + } + + $sql .= " " . $line . PHP_EOL; + + // SQL defines "--" as a comment to EOL + // and in Oracle it may contain a hint + // so we cannot just remove it, instead we must end it + if (strpos($line, "--") !== false) { + $sql .= PHP_EOL; + } + + // DELIM_ROW doesn't need this (as far as i can tell) + if ($this->delimiterType == self::DELIM_NORMAL) { + + // old regex, being replaced due to segfaults: + // See: http://propel.phpdb.org/trac/ticket/294 + //$reg = "#((?:\"(?:\\\\.|[^\"])*\"?)+|'(?:\\\\.|[^'])*'?|" . preg_quote($this->delimiter) . ")#"; + //$sqlParts = preg_split($reg, $sql, 0, PREG_SPLIT_DELIM_CAPTURE); + + $i = $parser['pointer']; + $c = strlen($sql); + while ($i < $c) { + + $char = $sql[$i]; + + switch($char) { + case "\\": + $parser['backslashCount']++; + $this->log("c$i: found ".$parser['backslashCount']." backslash(es)", Project::MSG_VERBOSE); + break; + case "'": + case "\"": + if ($parser['isInString'] && $parser['stringQuotes'] == $char) { + if (($parser['backslashCount'] & 1) == 0) { + #$this->log("$i: out of string", Project::MSG_VERBOSE); + $parser['isInString'] = false; + } else { + $this->log("c$i: rejected quoted delimiter", Project::MSG_VERBOSE); + } + + } elseif (!$parser['isInString']) { + $parser['stringQuotes'] = $char; + $parser['isInString'] = true; + #$this->log("$i: into string with $parser['stringQuotes']", Project::MSG_VERBOSE); + } + break; + } + + if ($char == $this->delimiter && !$parser['isInString']) { + $this->log("c$i: valid end of command found!", Project::MSG_VERBOSE); + $sqlParts[] = $parser['parsedString']; + $sqlParts[] = $this->delimiter; + break; + } + $parser['parsedString'] .= $char; + if ($char !== "\\") { + if ($parser['backslashCount']) $this->log("$i: backslash reset", Project::MSG_VERBOSE); + $parser['backslashCount'] = 0; + } + $i++; + $parser['pointer']++; + } + + $sqlBacklog = ""; + foreach ($sqlParts as $sqlPart) { + // we always want to append, even if it's a delim (which will be stripped off later) + $sqlBacklog .= $sqlPart; + + // we found a single (not enclosed by ' or ") delimiter, so we can use all stuff before the delim as the actual query + if ($sqlPart === $this->delimiter) { + $sql = $sqlBacklog; + $sqlBacklog = ""; + $hasQuery = true; + } + } + } + + if ($hasQuery || ($this->delimiterType == self::DELIM_ROW && $line == $this->delimiter)) { + // this assumes there is always a delimter on the end of the SQL statement. + $sql = StringHelper::substring($sql, 0, strlen($sql) - 1 - strlen($this->delimiter)); + $this->log("SQL: " . $sql, Project::MSG_VERBOSE); + $this->execSQL($sql, $out); + $sql = ""; + $hasQuery = false; + + $parser['pointer'] = 0; + $parser['isInString'] = false; + $parser['stringQuotes'] = ""; + $parser['backslashCount'] = 0; + $parser['parsedString'] = ""; + $sqlParts = array(); + } + } + + // Catch any statements not followed by ; + if ($sql !== "") { + $this->execSQL($sql, $out); + } + } + + /** + * Exec the sql statement. + * + * @param sql + * @param out + * @throws PDOException + */ + protected function execSQL($sql, $out = null) + { + // Check and ignore empty statements + if (trim($sql) == "") { + return; + } + + try { + $this->totalSql++; + + if (!$this->autocommit) $this->conn->beginTransaction(); + + $stmt = $this->conn->prepare($sql); + $stmt->execute(); + $this->log($stmt->rowCount() . " rows affected", Project::MSG_VERBOSE); + + if (!$this->autocommit) $this->conn->commit(); + + $this->goodSql++; + } catch (PDOException $e) { + $this->log("Failed to execute: " . $sql, Project::MSG_ERR); + if ($this->onError != "continue") { + throw $e; + } + $this->log($e->getMessage(), Project::MSG_ERR); + } + } + + /** + * print any results in the statement. + * + * @param out + * @throws PDOException + */ + protected function printResults($out = null) + { + $rs = null; + + do { + $rs = $this->statement->getResultSet(); + + if ($rs !== null) { + + $this->log("Processing new result set.", Project::MSG_VERBOSE); + + $line = ""; + + $colsprinted = false; + + while ($rs->next()) { + + if (!$colsprinted && $this->showheaders) { + $first = true; + foreach ($this->fields as $fieldName => $ignore) { + if ($first) $first = false; else $line .= ","; + $line .= $fieldName; + } + } // if show headers + + $first = true; + foreach ($rs->fields as $columnValue) { + + if ($columnValue != null) { + $columnValue = trim($columnValue); + } + + if ($first) { + $first = false; + } else { + $line .= ","; + } + $line .= $columnValue; + } + + if ($out !== null) { + $out->write($line); + $out->newLine(); + } + + System::println($line); + $line = ""; + } // while rs->next() + } + } while ($this->statement->getMoreResults()); + System::println(); + if ($out !== null) $out->newLine(); + } + +} + +/** + * "Inner" class that contains the definition of a new transaction element. + * Transactions allow several files or blocks of statements + * to be executed using the same Creole connection and commit + * operation in between. + * @package propel.phing + */ +class PropelSQLExecTransaction { + + private $tSrcFile = null; + private $tSqlCommand = ""; + private $parent; + + function __construct($parent) + { + // Parent is required so that we can log things ... + $this->parent = $parent; + } + + public function setSrc(PhingFile $src) + { + $this->tSrcFile = $src; + } + + public function addText($sql) + { + $this->tSqlCommand .= $sql; + } + + /** + * @throws IOException, PDOException + */ + public function runTransaction($out = null) + { + if (!empty($this->tSqlCommand)) { + $this->parent->log("Executing commands", Project::MSG_INFO); + $this->parent->runStatements($this->tSqlCommand, $out); + } + + if ($this->tSrcFile !== null) { + $this->parent->log("Executing file: " . $this->tSrcFile->getAbsolutePath(), Project::MSG_INFO); + $reader = new FileReader($this->tSrcFile); + $this->parent->runStatements($reader, $out); + $reader->close(); + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/text-base/PropelSQLTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/text-base/PropelSQLTask.php.svn-base new file mode 100644 index 0000000..a6f3ccb --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/text-base/PropelSQLTask.php.svn-base @@ -0,0 +1,261 @@ +. + */ + +include_once 'propel/engine/database/model/AppData.php'; + +/** + * The task for building SQL DDL based on the XML datamodel. + * + * This class uses the new DDLBuilder classes instead of the Capsule PHP templates. + * + * @author Hans Lellelid + * @package propel.phing + */ +class PropelSQLTask extends AbstractPropelDataModelTask { + + /** + * The properties file that maps an SQL file to a particular database. + * @var PhingFile + */ + private $sqldbmap; + + /** + * Name of the database. + */ + private $database; + + /** + * Set the sqldbmap. + * @param PhingFile $sqldbmap The db map. + */ + public function setSqlDbMap(PhingFile $sqldbmap) + { + $this->sqldbmap = $sqldbmap; + } + + /** + * Get the sqldbmap. + * @return PhingFile $sqldbmap. + */ + public function getSqlDbMap() + { + return $this->sqldbmap; + } + + /** + * Set the database name. + * @param string $database + */ + public function setDatabase($database) + { + $this->database = $database; + } + + /** + * Get the database name. + * @return string + */ + public function getDatabase() + { + return $this->database; + } + + /** + * Create the sql -> database map. + * + * @throws IOException - if unable to store properties + */ + protected function createSqlDbMap() + { + if ($this->getSqlDbMap() === null) { + return; + } + + // Produce the sql -> database map + $sqldbmap = new Properties(); + + // Check to see if the sqldbmap has already been created. + if ($this->getSqlDbMap()->exists()) { + $sqldbmap->load($this->getSqlDbMap()); + } + + if ($this->packageObjectModel) { + // in this case we'll get the sql file name from the package attribute + $dataModels = $this->packageDataModels(); + foreach ($dataModels as $package => $dataModel) { + foreach ($dataModel->getDatabases() as $database) { + $name = ($package ? $package . '.' : '') . 'schema.xml'; + $sqlFile = $this->getMappedFile($name); + $sqldbmap->setProperty($sqlFile->getName(), $database->getName()); + } + } + } else { + // the traditional way is to map the schema.xml filenames + $dmMap = $this->getDataModelDbMap(); + foreach (array_keys($dmMap) as $dataModelName) { + $sqlFile = $this->getMappedFile($dataModelName); + if ($this->getDatabase() === null) { + $databaseName = $dmMap[$dataModelName]; + } else { + $databaseName = $this->getDatabase(); + } + $sqldbmap->setProperty($sqlFile->getName(), $databaseName); + } + } + + try { + $sqldbmap->store($this->getSqlDbMap(), "Sqlfile -> Database map"); + } catch (IOException $e) { + throw new IOException("Unable to store properties: ". $e->getMessage()); + } + } + + public function main() { + + $this->validate(); + + if (!$this->mapperElement) { + throw new BuildException("You must use a element to describe how names should be transformed."); + } + + if ($this->packageObjectModel) { + $dataModels = $this->packageDataModels(); + } else { + $dataModels = $this->getDataModels(); + } + + // 1) first create a map of filenames to databases; this is used by other tasks like + // the SQLExec task. + $this->createSqlDbMap(); + + // 2) Now actually create the DDL based on the datamodel(s) from XML schema file. + $targetDatabase = $this->getTargetDatabase(); + + $generatorConfig = $this->getGeneratorConfig(); + + $builderClazz = $generatorConfig->getBuilderClassname('ddl'); + + foreach ($dataModels as $package => $dataModel) { + + foreach ($dataModel->getDatabases() as $database) { + + // Clear any start/end DLL + call_user_func(array($builderClazz, 'reset')); + + // file we are going to create + if (!$this->packageObjectModel) { + $name = $dataModel->getName(); + } else { + $name = ($package ? $package . '.' : '') . 'schema.xml'; + } + + $outFile = $this->getMappedFile($name); + + $this->log("Writing to SQL file: " . $outFile->getPath()); + + // First add any "header" SQL + $ddl = call_user_func(array($builderClazz, 'getDatabaseStartDDL')); + + foreach ($database->getTables() as $table) { + + if (!$table->isSkipSql()) { + $builder = $generatorConfig->getConfiguredBuilder($table, 'ddl'); + $this->log("\t+ " . $table->getName() . " [builder: " . get_class($builder) . "]"); + $ddl .= $builder->build(); + foreach ($builder->getWarnings() as $warning) { + $this->log($warning, Project::MSG_WARN); + } + } else { + $this->log("\t + (skipping) " . $table->getName()); + } + + } // foreach database->getTables() + + // Finally check to see if there is any "footer" SQL + $ddl .= call_user_func(array($builderClazz, 'getDatabaseEndDDL')); + + #var_dump($outFile->getAbsolutePath()); + // Now we're done. Write the file! + file_put_contents($outFile->getAbsolutePath(), $ddl); + + } // foreach database + } //foreach datamodels + + } // main() + + /** + * Packages the datamodels to one datamodel per package + * + * This applies only when the the packageObjectModel option is set. We need to + * re-package the datamodels to allow the database package attribute to control + * which tables go into which SQL file. + * + * @return array The packaged datamodels + */ + protected function packageDataModels() { + + static $packagedDataModels; + + if (is_null($packagedDataModels)) { + + $dataModels = $this->getDataModels(); + $dataModel = array_shift($dataModels); + $packagedDataModels = array(); + + $platform = $this->getGeneratorConfig()->getConfiguredPlatform(); + + foreach ($dataModel->getDatabases() as $db) { + foreach ($db->getTables() as $table) { + $package = $table->getPackage(); + if (!isset($packagedDataModels[$package])) { + $dbClone = $this->cloneDatabase($db); + $dbClone->setPackage($package); + $ad = new AppData($platform); + $ad->setName($dataModel->getName()); + $ad->addDatabase($dbClone); + $packagedDataModels[$package] = $ad; + } + $packagedDataModels[$package]->getDatabase($db->getName())->addTable($table); + } + } + } + + return $packagedDataModels; + } + + protected function cloneDatabase($db) { + + $attributes = array ( + 'name' => $db->getName(), + 'baseClass' => $db->getBaseClass(), + 'basePeer' => $db->getBasePeer(), + 'defaultIdMethod' => $db->getDefaultIdMethod(), + 'defaultPhpNamingMethod' => $db->getDefaultPhpNamingMethod(), + 'defaultTranslateMethod' => $db->getDefaultTranslateMethod(), + 'heavyIndexing' => $db->getHeavyIndexing(), + ); + + $clone = new Database(); + $clone->loadFromXML($attributes); + return $clone; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/text-base/PropelSchemaReverseTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/text-base/PropelSchemaReverseTask.php.svn-base new file mode 100644 index 0000000..bfedade --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/.svn/text-base/PropelSchemaReverseTask.php.svn-base @@ -0,0 +1,556 @@ +. + */ + +require_once 'phing/tasks/ext/pdo/PDOTask.php'; +include_once 'propel/engine/GeneratorConfig.php'; +include_once 'propel/engine/database/model/PropelTypes.php'; + +/** + * This class generates an XML schema of an existing database from + * the database metadata. + * + * @author Hans Lellelid + * @version $Revision: 945 $ + * @package propel.phing + */ +class PropelSchemaReverseTask extends PDOTask { + + /** + * Zero bit for no validators + */ + const VALIDATORS_NONE = 0; + + /** + * Bit for maxLength validator + */ + const VALIDATORS_MAXLENGTH = 1; + + /** + * Bit for maxValue validator + */ + const VALIDATORS_MAXVALUE = 2; + + /** + * Bit for type validator + */ + const VALIDATORS_TYPE = 4; + + /** + * Bit for required validator + */ + const VALIDATORS_REQUIRED = 8; + + /** + * Bit for unique validator + */ + const VALIDATORS_UNIQUE = 16; + + /** + * Bit for all validators + */ + const VALIDATORS_ALL = 255; + + /** + * File to contain XML database schema. + * @var PhingFIle + */ + protected $xmlSchema; + + /** + * DB encoding to use + * @var string + */ + protected $dbEncoding = 'iso-8859-1'; + + /** + * DB schema to use. + * @var string + */ + protected $dbSchema; + + /** + * The datasource name (used for in schema.xml) + * + * @var string + */ + protected $databaseName; + + /** + * DOM document produced. + * @var DOMDocument + */ + protected $doc; + + /** + * The document root element. + * @var DOMElement + */ + protected $databaseNode; + + /** + * Hashtable of columns that have primary keys. + * @var array + */ + protected $primaryKeys; + + /** + * Whether to use same name for phpName or not. + * @var boolean + */ + protected $samePhpName; + + /** + * whether to add vendor info or not + * @var boolean + */ + protected $addVendorInfo; + + /** + * Bitfield to switch on/off which validators will be created. + * + * @var int + */ + protected $validatorBits = PropelSchemaReverseTask::VALIDATORS_NONE; + + /** + * Collect validatorInfos to create validators. + * + * @var int + */ + protected $validatorInfos; + + /** + * An initialized GeneratorConfig object containing the converted Phing props. + * + * @var GeneratorConfig + */ + private $generatorConfig; + + /** + * Maps validator type tokens to bits + * + * The tokens are used in the propel.addValidators property to define + * which validators are to be added + * + * @var array + */ + static protected $validatorBitMap = array ( + 'none' => PropelSchemaReverseTask::VALIDATORS_NONE, + 'maxlength' => PropelSchemaReverseTask::VALIDATORS_MAXLENGTH, + 'maxvalue' => PropelSchemaReverseTask::VALIDATORS_MAXVALUE, + 'type' => PropelSchemaReverseTask::VALIDATORS_TYPE, + 'required' => PropelSchemaReverseTask::VALIDATORS_REQUIRED, + 'unique' => PropelSchemaReverseTask::VALIDATORS_UNIQUE, + 'all' => PropelSchemaReverseTask::VALIDATORS_ALL, + ); + + /** + * Defines messages that are added to validators + * + * @var array + */ + static protected $validatorMessages = array ( + 'maxlength' => array ( + 'msg' => 'The field %s must be not longer than %s characters.', + 'var' => array('colName', 'value') + ), + 'maxvalue' => array ( + 'msg' => 'The field %s must be not greater than %s.', + 'var' => array('colName', 'value') + ), + 'type' => array ( + 'msg' => 'The column %s must be an %s value.', + 'var' => array('colName', 'value') + ), + 'required' => array ( + 'msg' => 'The field %s is required.', + 'var' => array('colName') + ), + 'unique' => array ( + 'msg' => 'This %s already exists in table %s.', + 'var' => array('colName', 'tableName') + ), + ); + + /** + * Gets the (optional) schema name to use. + * + * @return string + */ + public function getDbSchema() + { + return $this->dbSchema; + } + + /** + * Sets the name of a database schema to use (optional). + * + * @param string $dbSchema + */ + public function setDbSchema($dbSchema) + { + $this->dbSchema = $dbSchema; + } + + /** + * Gets the database encoding. + * + * @return string + */ + public function getDbEncoding($v) + { + return $this->dbEncoding; + } + + /** + * Sets the database encoding. + * + * @param string $v + */ + public function setDbEncoding($v) + { + $this->dbEncoding = $v; + } + + /** + * Gets the datasource name. + * + * @return string + */ + public function getDatabaseName() + { + return $this->databaseName; + } + + /** + * Sets the datasource name. + * + * This will be used as the value in the generated schema.xml + * + * @param string $v + */ + public function setDatabaseName($v) + { + $this->databaseName = $v; + } + + /** + * Sets the output name for the XML file. + * + * @param PhingFile $v + */ + public function setOutputFile(PhingFile $v) + { + $this->xmlSchema = $v; + } + + /** + * Set whether to use the column name as phpName without any translation. + * + * @param boolean $v + */ + public function setSamePhpName($v) + { + $this->samePhpName = $v; + } + + /** + * Set whether to add vendor info to the schema. + * + * @param boolean $v + */ + public function setAddVendorInfo($v) + { + $this->addVendorInfo = (boolean) $v; + } + + /** + * Sets set validator bitfield from a comma-separated list of "validator bit" names. + * + * @param string $v The comma-separated list of which validators to add. + * @return void + */ + public function setAddValidators($v) + { + $validKeys = array_keys(self::$validatorBitMap); + + // lowercase input + $v = strtolower($v); + + $bits = self::VALIDATORS_NONE; + + $exprs = explode(',', $v); + foreach ($exprs as $expr) { + $expr = trim($expr); + if(!empty($expr)) { + if (!isset(self::$validatorBitMap[$expr])) { + throw new BuildException("Unable to interpret validator in expression ('$v'): " . $expr); + } + $bits |= self::$validatorBitMap[$expr]; + } + } + + $this->validatorBits = $bits; + } + + /** + * Checks whether to add validators of specified type or not + * + * @param int $type The validator type constant. + * @return boolean + */ + protected function isValidatorRequired($type) + { + return (($this->validatorBits & $type) === $type); + } + + /** + * Whether to use the column name as phpName without any translation. + * + * @return boolean + */ + public function isSamePhpName() + { + return $this->samePhpName; + } + + /** + * @throws BuildException + */ + public function main() + { + if (!$this->getDatabaseName()) { + throw new BuildException("databaseName attribute is required for schema reverse engineering", $this->getLocation()); + } + + //(not yet supported) $this->log("schema : " . $this->dbSchema); + //DocumentTypeImpl docType = new DocumentTypeImpl(null, "database", null, + // "http://jakarta.apache.org/turbine/dtd/database.dtd"); + + $this->doc = new DOMDocument('1.0', 'utf-8'); + $this->doc->formatOutput = true; // pretty printing + + $this->doc->appendChild($this->doc->createComment("Autogenerated by ".get_class($this)." class.")); + + try { + + $database = $this->buildModel(); + + if ($this->validatorBits !== self::VALIDATORS_NONE) { + $this->addValidators($database); + } + + $database->appendXml($this->doc); + + $this->log("Writing XML to file: " . $this->xmlSchema->getPath()); + $out = new FileWriter($this->xmlSchema); + $xmlstr = $this->doc->saveXML(); + $out->write($xmlstr); + $out->close(); + + } catch (Exception $e) { + $this->log("There was an error building XML from metadata: " . $e->getMessage(), Project::MSG_ERR); + } + + $this->log("Schema reverse engineering finished"); + } + + /** + * Gets the GeneratorConfig object for this task or creates it on-demand. + * @return GeneratorConfig + */ + protected function getGeneratorConfig() + { + if ($this->generatorConfig === null) { + $this->generatorConfig = new GeneratorConfig(); + $this->generatorConfig->setBuildProperties($this->getProject()->getProperties()); + } + return $this->generatorConfig; + } + + /** + * Builds the model classes from the database schema. + * @return Database The built-out Database (with all tables, etc.) + */ + protected function buildModel() + { + $config = $this->getGeneratorConfig(); + $con = $this->getConnection(); + + $database = new Database($this->getDatabaseName()); + $database->setPlatform($config->getConfiguredPlatform($con)); + + // Some defaults ... + $database->setDefaultIdMethod(IDMethod::NATIVE); + + $parser = $config->getConfiguredSchemaParser($con); + + $parser->parse($database); + + return $database; + } + + /** + * Adds any requested validators to the data model. + * + * We will add the following type specific validators: + * + * for notNull columns: required validator + * for unique indexes: unique validator + * for varchar types: maxLength validators (CHAR, VARCHAR, LONGVARCHAR) + * for numeric types: maxValue validators (BIGINT, SMALLINT, TINYINT, INTEGER, FLOAT, DOUBLE, NUMERIC, DECIMAL, REAL) + * for integer and timestamp types: notMatch validator with [^\d]+ (BIGINT, SMALLINT, TINYINT, INTEGER, TIMESTAMP) + * for float types: notMatch validator with [^\d\.]+ (FLOAT, DOUBLE, NUMERIC, DECIMAL, REAL) + * + * @param Database $database The Database model. + * @return void + * @todo find out how to evaluate the appropriate size and adjust maxValue rule values appropriate + * @todo find out if float type column values must always notMatch('[^\d\.]+'), i.e. digits and point for any db vendor, language etc. + */ + protected function addValidators(Database $database) + { + + $platform = $this->getGeneratorConfig()->getConfiguredPlatform(); + + foreach ($database->getTables() as $table) { + + $set = new PropelSchemaReverse_ValidatorSet(); + + foreach ($table->getColumns() as $col) { + + if ($col->isNotNull() && $this->isValidatorRequired(self::VALIDATORS_REQUIRED)) { + $validator = $set->getValidator($col); + $validator->addRule($this->getValidatorRule($col, 'required')); + } + + if (in_array($col->getType(), array(PropelTypes::CHAR, PropelTypes::VARCHAR, PropelTypes::LONGVARCHAR)) + && $col->getSize() && $this->isValidatorRequired(self::VALIDATORS_MAXLENGTH)) { + $validator = $set->getValidator($col); + $validator->addRule($this->getValidatorRule($col, 'maxLength', $col->getSize())); + } + + if ($col->isNumericType() && $this->isValidatorRequired(self::VALIDATORS_MAXVALUE)) { + $this->log("WARNING: maxValue validator added for column ".$col->getName().". You will have to adjust the size value manually.", Project::MSG_WARN); + $validator = $set->getValidator($col); + $validator->addRule($this->getValidatorRule($col, 'maxSize', 'REPLACEME')); + } + + if ($col->isPhpPrimitiveType() && $this->isValidatorRequired(self::VALIDATORS_TYPE)) { + $validator = $set->getValidator($col); + $validator->addRule($this->getValidatorRule($col, 'type', $col->getPhpType())); + } + + } + + foreach ($table->getUnices() as $unique) { + $colnames = $unique->getColumns(); + if (count($colnames) == 1) { // currently 'unique' validator only works w/ single columns. + $col = $table->getColumn($colnames[0]); + $validator = $set->getValidator($col); + $validator->addRule($this->getValidatorRule($col, 'unique')); + } + } + + foreach ($set->getValidators() as $validator) { + $table->addValidator($validator); + } + + } // foreach table + + } + + /** + * Gets validator rule for specified type (string). + * + * @param Column $column The column that is being validated. + * @param string $type The type (string) for validator (e.g. 'required'). + * @param mixed $value The value for the validator (if applicable) + */ + protected function getValidatorRule(Column $column, $type, $value = null) + { + $rule = new Rule(); + $rule->setName($type); + if ($value !== null) { + $rule->setValue($value); + } + $rule->setMessage($this->getRuleMessage($column, $type, $value)); + return $rule; + } + + /** + * Gets the message for a specified rule. + * + * @param Column $column + * @param string $type + * @param mixed $value + */ + protected function getRuleMessage(Column $column, $type, $value) + { + // create message + $colName = $column->getName(); + $tableName = $column->getTable()->getName(); + $msg = self::$validatorMessages[strtolower($type)]; + $tmp = compact($msg['var']); + array_unshift($tmp, $msg['msg']); + $msg = call_user_func_array('sprintf', $tmp); + return $msg; + } + +} + +/** + * A helper class to store validator sets indexed by column. + * @package propel.phing + */ +class PropelSchemaReverse_ValidatorSet { + + /** + * Map of column names to validators. + * + * @var array Validator[] + */ + private $validators = array(); + + /** + * Gets a single validator for specified column name. + * @param Column $column + * @return Validator + */ + public function getValidator(Column $column) + { + $key = $column->getName(); + if (!isset($this->validators[$key])) { + $this->validators[$key] = new Validator(); + $this->validators[$key]->setColumn($column); + } + return $this->validators[$key]; + } + + /** + * Gets all validators. + * @return array Validator[] + */ + public function getValidators() + { + return $this->validators; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/AbstractPropelDataModelTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/AbstractPropelDataModelTask.php new file mode 100644 index 0000000..d9946d0 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/AbstractPropelDataModelTask.php @@ -0,0 +1,611 @@ +. + */ + +//include_once 'phing/tasks/ext/CapsuleTask.php'; +require_once 'phing/Task.php'; +include_once 'propel/engine/GeneratorConfig.php'; +include_once 'propel/engine/database/model/AppData.php'; +include_once 'propel/engine/database/model/Database.php'; +include_once 'propel/engine/database/transform/XmlToAppData.php'; + +/** + * An abstract base Propel task to perform work related to the XML schema file. + * + * The subclasses invoke templates to do the actual writing of the resulting files. + * + * @author Hans Lellelid (Propel) + * @author Jason van Zyl (Torque) + * @author Daniel Rall (Torque) + * @package propel.phing + */ +abstract class AbstractPropelDataModelTask extends Task { + + /** + * Fileset of XML schemas which represent our data models. + * @var array Fileset[] + */ + protected $schemaFilesets = array(); + + /** + * Data models that we collect. One from each XML schema file. + */ + protected $dataModels = array(); + + /** + * Have datamodels been initialized? + * @var boolean + */ + private $dataModelsLoaded = false; + + /** + * Map of data model name to database name. + * Should probably stick to the convention + * of them being the same but I know right now + * in a lot of cases they won't be. + */ + protected $dataModelDbMap; + + /** + * Hashtable containing the names of all the databases + * in our collection of schemas. + */ + protected $databaseNames; // doesn't seem to be used anywhere + + /** + * The target database(s) we are generating SQL + * for. Right now we can only deal with a single + * target, but we will support multiple targets + * soon. + */ + protected $targetDatabase; + + /** + * DB encoding to use for XmlToAppData object + */ + protected $dbEncoding = 'iso-8859-1'; + + /** + * Target PHP package to place the generated files in. + */ + protected $targetPackage; + + /** + * @var Mapper + */ + protected $mapperElement; + + /** + * Destination directory for results of template scripts. + * @var PhingFile + */ + protected $outputDirectory; + + /** + * Whether to package the datamodels or not + * @var PhingFile + */ + protected $packageObjectModel; + + /** + * Whether to perform validation (XSD) on the schema.xml file(s). + * @var boolean + */ + protected $validate; + + /** + * The XSD schema file to use for validation. + * @var PhingFile + */ + protected $xsdFile; + + /** + * XSL file to use to normalize (or otherwise transform) schema before validation. + * @var PhingFile + */ + protected $xslFile; + + /** + * Optional database connection url. + * @var string + */ + private $url = null; + + /** + * Optional database connection user name. + * @var string + */ + private $userId = null; + + /** + * Optional database connection password. + * @var string + */ + private $password = null; + + /** + * PDO Connection. + * @var PDO + */ + private $conn = false; + + /** + * An initialized GeneratorConfig object containing the converted Phing props. + * + * @var GeneratorConfig + */ + private $generatorConfig; + + /** + * Return the data models that have been + * processed. + * + * @return List data models + */ + public function getDataModels() + { + if (!$this->dataModelsLoaded) $this->loadDataModels(); + return $this->dataModels; + } + + /** + * Return the data model to database name map. + * + * @return Hashtable data model name to database name map. + */ + public function getDataModelDbMap() + { + if (!$this->dataModelsLoaded) $this->loadDataModels(); + return $this->dataModelDbMap; + } + + /** + * Adds a set of xml schema files (nested fileset attribute). + * + * @param set a Set of xml schema files + */ + public function addSchemaFileset(Fileset $set) + { + $this->schemaFilesets[] = $set; + } + + /** + * Get the current target database. + * + * @return String target database(s) + */ + public function getTargetDatabase() + { + return $this->targetDatabase; + } + + /** + * Set the current target database. (e.g. mysql, oracle, ..) + * + * @param v target database(s) + */ + public function setTargetDatabase($v) + { + $this->targetDatabase = $v; + } + + /** + * Get the current target package. + * + * @return string target PHP package. + */ + public function getTargetPackage() + { + return $this->targetPackage; + } + + /** + * Set the current target package. This is where generated PHP classes will + * live. + * + * @param string $v target PHP package. + */ + public function setTargetPackage($v) + { + $this->targetPackage = $v; + } + + /** + * Set the packageObjectModel switch on/off + * + * @param string $v The build.property packageObjectModel + */ + public function setPackageObjectModel($v) + { + $this->packageObjectModel = ($v === '1' ? true : false); + } + + /** + * Set whether to perform validation on the datamodel schema.xml file(s). + * @param boolean $v + */ + public function setValidate($v) + { + $this->validate = $v; + } + + /** + * Set the XSD schema to use for validation of any datamodel schema.xml file(s). + * @param $v PhingFile + */ + public function setXsd(PhingFile $v) + { + $this->xsdFile = $v; + } + + /** + * Set the normalization XSLT to use to transform datamodel schema.xml file(s) before validation and parsing. + * @param $v PhingFile + */ + public function setXsl(PhingFile $v) + { + $this->xslFile = $v; + } + + /** + * [REQUIRED] Set the output directory. It will be + * created if it doesn't exist. + * @param PhingFile $outputDirectory + * @return void + * @throws Exception + */ + public function setOutputDirectory(PhingFile $outputDirectory) { + try { + if (!$outputDirectory->exists()) { + $this->log("Output directory does not exist, creating: " . $outputDirectory->getPath(),Project::MSG_VERBOSE); + if (!$outputDirectory->mkdirs()) { + throw new IOException("Unable to create Ouptut directory: " . $outputDirectory->getAbsolutePath()); + } + } + $this->outputDirectory = $outputDirectory->getCanonicalPath(); + } catch (IOException $ioe) { + throw new BuildException($ioe); + } + } + + /** + * Set the current target database encoding. + * + * @param v target database encoding + */ + public function setDbEncoding($v) + { + $this->dbEncoding = $v; + } + + /** + * Set the DB connection url. + * + * @param string $url connection url + */ + public function setUrl($url) + { + $this->url = $url; + } + + /** + * Set the user name for the DB connection. + * + * @param string $userId database user + */ + public function setUserid($userId) + { + $this->userId = $userId; + } + + /** + * Set the password for the DB connection. + * + * @param string $password database password + */ + public function setPassword($password) + { + $this->password = $password; + } + + /** + * Get the output directory. + * @return string + */ + public function getOutputDirectory() { + return $this->outputDirectory; + } + + /** + * Nested creator, creates one Mapper for this task. + * + * @return Mapper The created Mapper type object. + * @throws BuildException + */ + public function createMapper() { + if ($this->mapperElement !== null) { + throw new BuildException("Cannot define more than one mapper.", $this->location); + } + $this->mapperElement = new Mapper($this->project); + return $this->mapperElement; + } + + /** + * Maps the passed in name to a new filename & returns resolved File object. + * @param string $from + * @return PhingFile Resolved File object. + * @throws BuilException - if no Mapper element se + * - if unable to map new filename. + */ + protected function getMappedFile($from) + { + if (!$this->mapperElement) { + throw new BuildException("This task requires you to use a element to describe how filename changes should be handled."); + } + + $mapper = $this->mapperElement->getImplementation(); + $mapped = $mapper->main($from); + if (!$mapped) { + throw new BuildException("Cannot create new filename based on: " . $from); + } + // Mappers always return arrays since it's possible for some mappers to map to multiple names. + $outFilename = array_shift($mapped); + $outFile = new PhingFile($this->getOutputDirectory(), $outFilename); + return $outFile; + } + + /** + * Gets the PDO connection, if URL specified. + * @return PDO Connection to use (for quoting, Platform class, etc.) or NULL if no connection params were specified. + */ + public function getConnection() + { + if ($this->conn === false) { + $this->conn = null; + if ($this->url) { + $buf = "Using database settings:\n" + . " URL: " . $this->url . "\n" + . ($this->userId ? " user: " . $this->userId . "\n" : "") + . ($this->password ? " password: " . $this->password . "\n" : ""); + + $this->log($buf, Project::MSG_VERBOSE); + + // Set user + password to null if they are empty strings + if (!$this->userId) { $this->userId = null; } + if (!$this->password) { $this->password = null; } + try { + $this->conn = new PDO($this->url, $this->userId, $this->password); + $this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + } catch (PDOException $x) { + $this->log("Unable to create a PDO connection: " . $x->getMessage(), Project::MSG_WARN); + } + } + } + return $this->conn; + } + + /** + * Gets all matching XML schema files and loads them into data models for class. + * @return void + */ + protected function loadDataModels() + { + $ads = array(); + + // Get all matched files from schemaFilesets + foreach ($this->schemaFilesets as $fs) { + $ds = $fs->getDirectoryScanner($this->project); + $srcDir = $fs->getDir($this->project); + + $dataModelFiles = $ds->getIncludedFiles(); + + $platform = $this->getGeneratorConfig()->getConfiguredPlatform(); + + // Make a transaction for each file + foreach ($dataModelFiles as $dmFilename) { + + $this->log("Processing: ".$dmFilename); + $xmlFile = new PhingFile($srcDir, $dmFilename); + + $dom = new DomDocument('1.0', 'UTF-8'); + $dom->load($xmlFile->getAbsolutePath()); + + // normalize (or transform) the XML document using XSLT + if ($this->xslFile) { + $this->log("Transforming " . $xmlFile->getPath() . " using stylesheet " . $this->xslFile->getPath(), Project::MSG_VERBOSE); + if (!class_exists('XSLTProcessor')) { + $this->log("Could not perform XLST transformation. Make sure PHP has been compiled/configured to support XSLT.", Project::MSG_ERR); + } else { + // modify schema to include any external schema's (and remove the external-schema nodes) + $this->includeExternalSchemas($dom, $srcDir); + // normalize the document using normalizer stylesheet + + $xsl = new XsltProcessor(); + $xsl->importStyleSheet(DomDocument::load($this->xslFile->getAbsolutePath())); + $transformed = $xsl->transformToDoc($dom); + $newXmlFilename = substr($xmlFile->getName(), 0, strrpos($xmlFile->getName(), '.')) . '-transformed.xml'; + + // now overwrite previous vars to point to newly transformed file + $xmlFile = new PhingFile($srcDir, $newXmlFilename); + $transformed->save($xmlFile->getAbsolutePath()); + $this->log("\t- Using new (post-transformation) XML file: " . $xmlFile->getPath(), Project::MSG_VERBOSE); + + $dom = new DomDocument('1.0', 'UTF-8'); + $dom->load($xmlFile->getAbsolutePath()); + } + } + + // validate the XML document using XSD schema + if ($this->validate && $this->xsdFile) { + $this->log("Validating XML doc (".$xmlFile->getPath().") using schema file " . $this->xsdFile->getPath(), Project::MSG_VERBOSE); + if (!$dom->schemaValidate($this->xsdFile->getAbsolutePath())) { + throw new EngineException("XML schema file (".$xmlFile->getPath().") does not validate. See warnings above for reasons validation failed (make sure error_reporting is set to show E_WARNING if you don't see any).", $this->getLocation()); + } + } + + $xmlParser = new XmlToAppData($platform, $this->getTargetPackage(), $this->dbEncoding); + $ad = $xmlParser->parseFile($xmlFile->getAbsolutePath()); + $ad->setName($dmFilename); // <-- Important: use the original name, not the -transformed name. + $ads[] = $ad; + } + } + + if (empty($ads)) { + throw new BuildException("No schema files were found (matching your schema fileset definition)."); + } + + if (!$this->packageObjectModel) { + + $this->dataModels = $ads; + $this->databaseNames = array(); // doesn't seem to be used anywhere + $this->dataModelDbMap = array(); + + // Different datamodels may state the same database + // names, we just want the unique names of databases. + foreach ($this->dataModels as $dm) { + $database = $dm->getDatabase(); + $this->dataModelDbMap[$dm->getName()] = $database->getName(); + $this->databaseNames[$database->getName()] = $database->getName(); // making list of *unique* dbnames. + } + } else { + + $this->joinDatamodels($ads); + $this->dataModels[0]->getDatabases(); // calls doFinalInitialization() + } + + $this->dataModelsLoaded = true; + } + + /** + * Replaces all external-schema nodes with the content of xml schema that node refers to + * + * Recurses to include any external schema referenced from in an included xml (and deeper) + * Note: this function very much assumes at least a reasonable XML schema, maybe it'll proof + * users don't have those and adding some more informative exceptions would be better + * + * @param DomDocument $dom + * @param string $srcDir + * @return void (objects, DomDocument, are references by default in PHP 5, so returning it is useless) + **/ + protected function includeExternalSchemas(DomDocument $dom, $srcDir) { + $databaseNode = $dom->getElementsByTagName("database")->item(0); + $externalSchemaNodes = $dom->getElementsByTagName("external-schema"); + $fs = FileSystem::getFileSystem(); + while ($externalSchema = $externalSchemaNodes->item(0)) { + $include = $externalSchema->getAttribute("filename"); + $externalSchema->parentNode->removeChild($externalSchema); + if ($fs->prefixLength($include) != 0) { + $externalSchemaFile = new PhingFile($include); + } else { + $externalSchemaFile = new PhingFile($srcDir, $include); + } + $externalSchemaDom = new DomDocument('1.0', 'UTF-8'); + $externalSchemaDom->load($externalSchemaFile->getAbsolutePath()); + $this->includeExternalSchemas($externalSchemaDom, $srcDir); + foreach ($externalSchemaDom->getElementsByTagName("table") as $tableNode) { // see xsd, datatase may only have table or external-schema, the latter was just deleted so this should cover everything + $databaseNode->appendChild($dom->importNode($tableNode, true)); + } + } + } + /** + * Joins the datamodels collected from schema.xml files into one big datamodel + * + * This applies only when the the packageObjectModel option is set. We need to + * join the datamodels in this case to allow for foreign keys that point to + * tables in different packages. + * + * @param array $ads The datamodels to join + */ + protected function joinDatamodels($ads) { + + foreach ($ads as $ad) { + $db = $ad->getDatabase(null, false); + $this->dataModelDbMap[$ad->getName()] = $db->getName(); + } + + foreach ($ads as $addAd) { + + $ad = &$this->dataModels[0]; + if (!isset($ad)) { + $addAd->setName('JoinedDataModel'); + $ad = $addAd; + continue; + } + foreach ($addAd->getDatabases(false) as $addDb) { + $addDbName = $addDb->getName(); + if (!$package = $addDb->getPackage()) { + throw new BuildException('No package found for database "' . $addDbName . '" in ' . $addAd->getName() . '. The propel.packageObjectModel property requires the package attribute to be set for each database.'); + } + $db = $ad->getDatabase($addDbName, false); + if (!$db) { + $ad->addDatabase($addDb); + continue; + } + foreach ($addDb->getTables() as $addTable) { + $table = $db->getTable($addTable->getName()); + if ($table) { + throw new BuildException('Duplicate table found: ' . $addDbName . '.'); + } + $db->addTable($addTable); + } + } + } + } + + /** + * Gets the GeneratorConfig object for this task or creates it on-demand. + * @return GeneratorConfig + */ + protected function getGeneratorConfig() + { + if ($this->generatorConfig === null) { + $this->generatorConfig = new GeneratorConfig(); + $this->generatorConfig->setBuildProperties($this->getProject()->getProperties()); + } + return $this->generatorConfig; + } + + /** + * Checks this class against Basic requrements of any propel datamodel task. + * + * @throws BuildException - if schema fileset was not defined + * - if no output directory was specified + */ + protected function validate() + { + if (empty($this->schemaFilesets)) { + throw new BuildException("You must specify a fileset of XML schemas.", $this->getLocation()); + } + + // Make sure the output directory is set. + if ($this->outputDirectory === null) { + throw new BuildException("The output directory needs to be defined!", $this->getLocation()); + } + + if ($this->validate) { + if (!$this->xsdFile) { + throw new BuildException("'validate' set to TRUE, but no XSD specified (use 'xsd' attribute).", $this->getLocation()); + } + } + + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelConvertConfTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelConvertConfTask.php new file mode 100644 index 0000000..f5f9c28 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelConvertConfTask.php @@ -0,0 +1,312 @@ +. + */ + +require_once 'phing/Task.php'; +require_once 'propel/phing/PropelDataModelTemplateTask.php'; +require_once 'propel/engine/builder/om/OMBuilder.php'; +include_once 'propel/engine/builder/om/ClassTools.php'; + +/** + * This Task converts the XML runtime configuration file into a PHP array for faster performance. + * + * @author Hans Lellelid + * @package propel.phing + */ +class PropelConvertConfTask extends AbstractPropelDataModelTask { + + /** + * @var PhingFile The XML runtime configuration file to be converted. + */ + private $xmlConfFile; + + /** + * @var string This is the file where the converted conf array dump will be placed. + */ + private $outputFile; + + /** + * @var string This is the file where the classmap manifest converted conf array dump will be placed. + */ + private $outputClassmapFile; + + /** + * [REQUIRED] Set the input XML runtime conf file. + * @param PhingFile $v The XML runtime configuration file to be converted. + */ + public function setXmlConfFile(PhingFile $v) + { + $this->xmlConfFile = $v; + } + + /** + * [REQUIRED] Set the output filename for the converted runtime conf. + * The directory is specified using AbstractPropelDataModelTask#setOutputDirectory(). + * @param string $outputFile + * @see AbstractPropelDataModelTask#setOutputDirectory() + */ + public function setOutputFile($outputFile) + { + // this is a string, not a file + $this->outputFile = $outputFile; + } + + /** + * [REQUIRED] Set the output filename for the autoload classmap. + * The directory is specified using AbstractPropelDataModelTask#setOutputDirectory(). + * @param string $outputFile + * @see AbstractPropelDataModelTask#setOutputDirectory() + */ + public function setOutputClassmapFile($outputFile) + { + // this is a string, not a file + $this->outputClassmapFile = $outputFile; + } + + /** + * The main method does the work of the task. + */ + public function main() + { + // Check to make sure the input and output files were specified and that the input file exists. + + if (!$this->xmlConfFile || !$this->xmlConfFile->exists()) { + throw new BuildException("No valid xmlConfFile specified.", $this->getLocation()); + } + + if (!$this->outputFile) { + throw new BuildException("No outputFile specified.", $this->getLocation()); + } + + // Create a PHP array from the XML file + + $xmlDom = new DOMDocument(); + $xmlDom->load($this->xmlConfFile->getAbsolutePath()); + $xml = simplexml_load_string($xmlDom->saveXML()); + $phpconf = self::simpleXmlToArray($xml); + + /* For some reason the array generated from runtime-conf.xml has separate + * 'log' section and 'propel' sections. To maintain backward compatibility + * we need to put 'log' back into the 'propel' section. + */ + $log = array(); + if (isset($phpconf['log'])) { + $phpconf['propel']['log'] = $phpconf['log']; + unset($phpconf['log']); + } + + if(isset($phpconf['propel'])) { + $phpconf = $phpconf['propel']; + } + + // add generator version + $phpconf['generator_version'] = $this->getGeneratorConfig()->getBuildProperty('version'); + + // add classmap + $phpconf['classmap'] = $this->getClassMap(); + + // Write resulting PHP data to output file: + + $outfile = new PhingFile($this->outputDirectory, $this->outputFile); + $output = "getGeneratorConfig()->getBuildProperty('addTimestamp') ? " on " . strftime("%c") : '') . "\n"; + $output .= "// from XML runtime conf file " . $this->xmlConfFile->getPath() . "\n"; + $output .= "return "; + $output .= var_export($phpconf, true); + $output .= ";"; + + $this->log("Creating PHP runtime conf file: " . $outfile->getPath()); + if (!file_put_contents($outfile->getAbsolutePath(), $output)) { + throw new BuildException("Error creating output file: " . $outfile->getAbsolutePath(), $this->getLocation()); + } + + } // main() + + /** + * Recursive function that converts an SimpleXML object into an array. + * @author Christophe VG (based on code form php.net manual comment) + * @param object SimpleXML object. + * @return array Array representation of SimpleXML object. + */ + private static function simpleXmlToArray($xml) + { + $ar = array(); + + foreach ( $xml->children() as $k => $v ) { + + // recurse the child + $child = self::simpleXmlToArray( $v ); + + //print "Recursed down and found: " . var_export($child, true) . "\n"; + + // if it's not an array, then it was empty, thus a value/string + if ( count($child) == 0 ) { + $child = self::getConvertedXmlValue($v); + + } + + // add the childs attributes as if they where children + foreach ( $v->attributes() as $ak => $av ) { + + // if the child is not an array, transform it into one + if ( !is_array( $child ) ) { + $child = array( "value" => $child ); + } + + if ($ak == 'id') { + // special exception: if there is a key named 'id' + // then we will name the current key after that id + $k = self::getConvertedXmlValue($av); + } else { + // otherwise, just add the attribute like a child element + $child[$ak] = self::getConvertedXmlValue($av); + } + } + + // if the $k is already in our children list, we need to transform + // it into an array, else we add it as a value + if ( !in_array( $k, array_keys($ar) ) ) { + $ar[$k] = $child; + } else { + // (This only applies to nested nodes that do not have an @id attribute) + + // if the $ar[$k] element is not already an array, then we need to make it one. + // this is a bit of a hack, but here we check to also make sure that if it is an + // array, that it has numeric keys. this distinguishes it from simply having other + // nested element data. + + if ( !is_array($ar[$k]) || !isset($ar[$k][0]) ) { $ar[$k] = array($ar[$k]); } + $ar[$k][] = $child; + } + + } + + return $ar; + } + + /** + * Process XML value, handling boolean, if appropriate. + * @param object The simplexml value object. + * @return mixed + */ + private static function getConvertedXmlValue($value) + { + $value = (string) $value; // convert from simplexml to string + // handle booleans specially + $lwr = strtolower($value); + if ($lwr === "false") { + $value = false; + } elseif ($lwr === "true") { + $value = true; + } + return $value; + } + + /** + * Lists data model classes and builds an associative array className => classPath + * To be used for autoloading + * @return array + */ + protected function getClassMap() + { + $phpconfClassmap = array(); + + $generatorConfig = $this->getGeneratorConfig(); + + foreach ($this->getDataModels() as $dataModel) { + + foreach ($dataModel->getDatabases() as $database) { + + $classMap = array(); + + foreach ($database->getTables() as $table) { + + if (!$table->isForReferenceOnly()) { + + // Classes that I'm assuming do not need to be mapped (because they will be required by subclasses): + // - base peer and object classes + // - interfaces + // - base node peer and object classes + + // ----------------------------------------------------- + // Add Peer & Object stub classes and MapBuilder classes + // ----------------------------------------------------- + // (this code is based on PropelOMTask) + + foreach (array('tablemap', 'peerstub', 'objectstub') as $target) { + $builder = $generatorConfig->getConfiguredBuilder($table, $target); + $this->log("Adding class mapping: " . $builder->getClassname() . ' => ' . $builder->getClassFilePath()); + $classMap[$builder->getClassname()] = $builder->getClassFilePath(); + } + + if ($col = $table->getChildrenColumn()) { + if ($col->isEnumeratedClasses()) { + foreach ($col->getChildren() as $child) { + $builder = $generatorConfig->getConfiguredBuilder($table, 'objectmultiextend'); + $builder->setChild($child); + $this->log("Adding class mapping: " . $builder->getClassname() . ' => ' . $builder->getClassFilePath()); + $classMap[$builder->getClassname()] = $builder->getClassFilePath(); + } + } + } + + $baseClass = $table->getBaseClass(); + if ( $baseClass !== null ) { + $className = ClassTools::classname($baseClass); + if (!isset($classMap[$className])) { + $classPath = ClassTools::getFilePath($baseClass); + $this->log('Adding class mapping: ' . $className . ' => ' . $classPath); + $classMap[$className] = $classPath; + } + } + + $basePeer = $table->getBasePeer(); + if ( $basePeer !== null ) { + $className = ClassTools::classname($basePeer); + if (!isset($classMap[$className])) { + $classPath = ClassTools::getFilePath($basePeer); + $this->log('Adding class mapping: ' . $className . ' => ' . $classPath); + $classMap[$className] = $classPath; + } + } + + // ------------------------ + // Create tree Node classes + // ------------------------ + + if ('MaterializedPath' == $table->treeMode()) { + foreach (array('nodepeerstub', 'nodestub') as $target) { + $builder = $generatorConfig->getConfiguredBuilder($table, $target); + $this->log("Adding class mapping: " . $builder->getClassname() . ' => ' . $builder->getClassFilePath()); + $classMap[$builder->getClassname()] = $builder->getClassFilePath(); + } + } + + } // if (!$table->isReferenceOnly()) + } + + $phpconfClassmap = array_merge($phpconfClassmap, $classMap); + } + } + + return $phpconfClassmap; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelCreoleTransformTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelCreoleTransformTask.php new file mode 100644 index 0000000..4446907 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelCreoleTransformTask.php @@ -0,0 +1,829 @@ +. + */ + +require_once 'phing/Task.php'; +include_once 'propel/engine/database/model/PropelTypes.php'; + +/** + * This class generates an XML schema of an existing database from + * Creole metadata. + * + * @author Hans Lellelid (Propel) + * @author Jason van Zyl (Torque) + * @author Fedor Karpelevitch (Torque) + * @version $Revision: 1262 $ + * @package propel.phing + */ +class PropelCreoleTransformTask extends Task { + + /** Name of XML database schema produced. */ + protected $xmlSchema; + + /** Creole URL. */ + protected $dbUrl; + + /** Creole driver. */ + protected $dbDriver; + + /** Creole user name. */ + protected $dbUser; + + /** Creole password. */ + protected $dbPassword; + + /** DB encoding to use */ + protected $dbEncoding = 'iso-8859-1'; + + /** DB schema to use. */ + protected $dbSchema; + + /** parsed DB DSN */ + protected $dsn; + + /** DOM document produced. */ + protected $doc; + + /** The document root element. */ + protected $databaseNode; + + /** Hashtable of columns that have primary keys. */ + protected $primaryKeys; + + /** Hashtable to track what table a column belongs to. */ + // doesn't seem to be used + // protected $columnTableMap; + + /** whether to use same name for phpName or not */ + protected $samePhpName; + + /** whether to add vendor info or not */ + protected $addVendorInfo; + + /** + * Bitfield to switch on/off which validators will be created. + * + * @var int + */ + protected $validatorBits; + + /** + * Collect validatorInfos to create validators. + * + * @var int + */ + protected $validatorInfos; + + /** + * Zero bit for no validators + */ + const VALIDATORS_NONE = 0; + + /** + * Bit for maxLength validator + */ + const VALIDATORS_MAXLENGTH = 1; + + /** + * Bit for maxValue validator + */ + const VALIDATORS_MAXVALUE = 2; + + /** + * Bit for type validator + */ + const VALIDATORS_TYPE = 4; + + /** + * Bit for required validator + */ + const VALIDATORS_REQUIRED = 8; + + /** + * Bit for unique validator + */ + const VALIDATORS_UNIQUE = 16; + + /** + * Bit for all validators + */ + const VALIDATORS_ALL = 255; + + /** + * Maps validator type tokens to bits + * + * The tokens are used in the propel.addValidators property to define + * which validators are to be added + * + * @static + * @var array + */ + static protected $validatorBitMap = array ( + 'none' => PropelCreoleTransformTask::VALIDATORS_NONE, + 'maxlength' => PropelCreoleTransformTask::VALIDATORS_MAXLENGTH, + 'maxvalue' => PropelCreoleTransformTask::VALIDATORS_MAXVALUE, + 'type' => PropelCreoleTransformTask::VALIDATORS_TYPE, + 'required' => PropelCreoleTransformTask::VALIDATORS_REQUIRED, + 'unique' => PropelCreoleTransformTask::VALIDATORS_UNIQUE, + 'all' => PropelCreoleTransformTask::VALIDATORS_ALL, + ); + + /** + * Defines messages that are added to validators + * + * @static + * @var array + */ + static protected $validatorMessages = array ( + 'maxlength' => array ( + 'msg' => 'The field %s must be not longer than %s characters.', + 'var' => array('colName', 'value') + ), + 'maxvalue' => array ( + 'msg' => 'The field %s must be not greater than %s.', + 'var' => array('colName', 'value') + ), + 'type' => array ( + 'msg' => 'The field %s is not a valid value.', + 'var' => array('colName') + ), + 'required' => array ( + 'msg' => 'The field %s is required.', + 'var' => array('colName') + ), + 'unique' => array ( + 'msg' => 'This %s already exists in table %s.', + 'var' => array('colName', 'tableName') + ), + ); + + public function getDbSchema() + { + return $this->dbSchema; + } + + public function setDbSchema($dbSchema) + { + $this->dbSchema = $dbSchema; + } + + public function setDbUrl($v) + { + $this->dbUrl = $v; + } + + public function setDbDriver($v) + { + $this->dbDriver = $v; + } + + public function setDbUser($v) + { + $this->dbUser = $v; + } + + public function setDbPassword($v) + { + $this->dbPassword = $v; + } + + public function setDbEncoding($v) + { + $this->dbEncoding = $v; + } + + public function setOutputFile($v) + { + $this->xmlSchema = $v; + } + + public function setSamePhpName($v) + { + $this->samePhpName = $v; + } + + public function setAddVendorInfo($v) + { + $this->addVendorInfo = (boolean) $v; + } + + /** + * Sets set validator bitfield from a comma-separated list of "validator bit" names. + * + * @param string $v The comma-separated list of which validators to add. + * @return void + */ + public function setAddValidators($v) + { + $validKeys = array_keys(self::$validatorBitMap); + + // lowercase input + $v = strtolower($v); + + $bits = self::VALIDATORS_NONE; + + $exprs = explode(',', $v); + foreach ($exprs as $expr) { + $expr = trim($expr); + if (!isset(self::$validatorBitMap[$expr])) { + throw new BuildException("Unable to interpret validator in expression ('$v'): " . $expr); + } + $bits |= self::$validatorBitMap[$expr]; + } + + $this->validatorBits = $bits; + } + + public function isSamePhpName() + { + return $this->samePhpName; + } + + /** + * Default constructor. + * @return void + * @throws BuildException + */ + public function main() + { + include_once 'creole/Creole.php'; + if (!class_exists('Creole')) { + throw new BuildException( get_class($this) . " task depends on Creole classes being on include_path. (i.e. include of 'creole/Creole.php' failed.)", $this->getLocation()); + } + + $this->log("Propel - CreoleToXMLSchema starting"); + $this->log("Your DB settings are:"); + $this->log("driver : " . ($this->dbDriver ? $this->dbDriver : "(default)")); + $this->log("URL : " . $this->dbUrl); + + //(not yet supported) $this->log("schema : " . $this->dbSchema); + //DocumentTypeImpl docType = new DocumentTypeImpl(null, "database", null, + // "http://jakarta.apache.org/turbine/dtd/database.dtd"); + + $this->doc = new DOMDocument('1.0', 'utf-8'); + $this->doc->formatOutput = true; // pretty printing + + $this->doc->appendChild($this->doc->createComment("Autogenerated by CreoleToXMLSchema!")); + + try { + $this->generateXML(); + $this->log("Writing XML to file: " . $this->xmlSchema); + $outFile = new PhingFile($this->xmlSchema); + $out = new FileWriter($outFile); + $xmlstr = $this->doc->saveXML(); + $out->write($xmlstr); + $out->close(); + } catch (Exception $e) { + $this->log("There was an error building XML from metadata: " . $e->getMessage(), Project::MSG_ERR); + } + $this->log("Propel - CreoleToXMLSchema finished"); + } + + /** + * Generates an XML database schema from Creole metadata. + * + * @return void + * @throws Exception a generic exception. + */ + public function generateXML() + { + // Establish db connection + $con = $this->getConnection(); + + // Get the database Metadata. + $dbInfo = $con->getDatabaseInfo(); + + // create and add the database node + $databaseNode = $this->createDatabaseNode($dbInfo); + $this->doc->appendChild($databaseNode); + } + + /** + * Establishes a Creole database connection + * + * @return object The connection + */ + protected function getConnection() { + + // Attemtp to connect to a database. + $this->dsn = Creole::parseDSN($this->dbUrl); + if ($this->dbUser) { + $this->dsn["username"] = $this->dbUser; + } + if ($this->dbPassword) { + $this->dsn["password"] = $this->dbPassword; + } + if ($this->dbDriver) { + Creole::registerDriver($this->dsn['phptype'], $this->dbDriver); + } + $con = Creole::getConnection($this->dsn); + $this->log("DB connection established"); + + return $con; + } + + /** + * Creates a database node + * + * @param object $dbInfo The dbInfo for this db + * @return object The database node instance + */ + protected function createDatabaseNode($dbInfo) { + + $this->log("Processing database"); + + $node = $this->doc->createElement("database"); + $node->setAttribute("name", $dbInfo->getName()); + + if ($vendorNode = $this->createVendorInfoNode($dbInfo->getVendorSpecificInfo())) { + $node->appendChild($vendorNode); + } + + // create and add table nodes + foreach ($dbInfo->getTables() as $table) { + $tableNode = $this->createTableNode($table); + $node->appendChild($tableNode); + } + + return $node; + } + + /** + * Creates a table node + * + * @param object $table The table + * @return object The table node instance + */ + protected function createTableNode($table) { + + $this->log("Processing table: " . $table->toString()); + + $node = $this->doc->createElement("table"); + $node->setAttribute("name", $table->getName()); + if ($this->isSamePhpName()) { + $node->setAttribute("phpName", $table->getName()); + } + if ($vendorNode = $this->createVendorInfoNode($table->getVendorSpecificInfo())) { + $node->appendChild($vendorNode); + } + + // Create and add column nodes, register column validators + $columns = $table->getColumns(); + foreach ($columns as $column) { + $columnNode = $this->createColumnNode($column); + $node->appendChild($columnNode); + $this->registerValidatorsForColumn($column); + if ($column->isAutoIncrement()) { + $idMethod = 'native'; + } + } + if (isset($idMethod)) { + $node->setAttribute("idMethod", $idMethod); + } + + // Create and add foreign key nodes. + $foreignKeys = $table->getForeignKeys(); + foreach ($foreignKeys as $foreignKey) { + $foreignKeyNode = $this->createForeignKeyNode($foreignKey); + $node->appendChild($foreignKeyNode); + } + + // Create and add index nodes. + $indices = $table->getIndices(); + foreach ($indices as $index) { + $indexNode = $this->createIndexNode($index); + $node->appendChild($indexNode); + } + + // add an id-method-parameter if we have a sequence that matches table_colname_seq + // + // + $pkey = $table->getPrimaryKey(); + if ($pkey) { + $cols = $pkey->getColumns(); + if (count($cols) === 1) { + $col = array_shift($cols); + if ($col->isAutoIncrement()) { + $seq_name = $table->getName().'_'.$col->getName().'_seq'; + if ($table->getDatabase()->isSequence($seq_name)) { + $idMethodParameterNode = $this->doc->createElement("id-method-parameter"); + $idMethodParameterNode->setAttribute("value", $seq_name); + $node->appendChild($idMethodParameterNode); + } + } + } + } + + + // Create and add validator and rule nodes. + $nodes = array(); + $tableName = $table->getName(); + if (isset($this->validatorInfos[$tableName])) { + foreach ($this->validatorInfos[$tableName] as $colName => $rules) { + $column = $table->getColumn($colName); + $colName = $column->getName(); + foreach ($rules as $rule) { + if (!isset($nodes[$colName])) { + $nodes[$colName] = $this->createValidator($column, $rule['type']); + $node->appendChild($nodes[$colName]); + } + $ruleNode = $this->createRuleNode($column, $rule); + $nodes[$colName]->appendChild($ruleNode); + } + } + } + + return $node; + } + + /** + * Returns the Propel type for given Creole type. + * + * This used to be part of the PropelTypes class when Creole was an integral + * part of the Propel build process. As of Propel 1.3, though, this method + * is only needed in this reverse-engineering code. + * + * @param int $creoleType Creole type (e.g. CreoleTypes::CHAR) + * @return string Equivalent Propel type (e.g. PropelTypes::CHAR) + */ + protected static function getMappedPropelType($creoleType) + { + static $creoleToPropelTypeMap; + if ($creoleToPropelTypeMap === null) { + $creoleToPropelTypeMap = array(); + $creoleToPropelTypeMap[CreoleTypes::CHAR] = PropelTypes::CHAR; + $creoleToPropelTypeMap[CreoleTypes::VARCHAR] = PropelTypes::VARCHAR; + $creoleToPropelTypeMap[CreoleTypes::LONGVARCHAR] = PropelTypes::LONGVARCHAR; + $creoleToPropelTypeMap[CreoleTypes::CLOB] = PropelTypes::CLOB; + $creoleToPropelTypeMap[CreoleTypes::NUMERIC] = PropelTypes::NUMERIC; + $creoleToPropelTypeMap[CreoleTypes::DECIMAL] = PropelTypes::DECIMAL; + $creoleToPropelTypeMap[CreoleTypes::TINYINT] = PropelTypes::TINYINT; + $creoleToPropelTypeMap[CreoleTypes::SMALLINT] = PropelTypes::SMALLINT; + $creoleToPropelTypeMap[CreoleTypes::INTEGER] = PropelTypes::INTEGER; + $creoleToPropelTypeMap[CreoleTypes::BIGINT] = PropelTypes::BIGINT; + $creoleToPropelTypeMap[CreoleTypes::REAL] = PropelTypes::REAL; + $creoleToPropelTypeMap[CreoleTypes::FLOAT] = PropelTypes::FLOAT; + $creoleToPropelTypeMap[CreoleTypes::DOUBLE] = PropelTypes::DOUBLE; + $creoleToPropelTypeMap[CreoleTypes::BINARY] = PropelTypes::BINARY; + $creoleToPropelTypeMap[CreoleTypes::VARBINARY] = PropelTypes::VARBINARY; + $creoleToPropelTypeMap[CreoleTypes::LONGVARBINARY] = PropelTypes::LONGVARBINARY; + $creoleToPropelTypeMap[CreoleTypes::BLOB] = PropelTypes::BLOB; + $creoleToPropelTypeMap[CreoleTypes::DATE] = PropelTypes::DATE; + $creoleToPropelTypeMap[CreoleTypes::TIME] = PropelTypes::TIME; + $creoleToPropelTypeMap[CreoleTypes::TIMESTAMP] = PropelTypes::TIMESTAMP; + $creoleToPropelTypeMap[CreoleTypes::BOOLEAN] = PropelTypes::BOOLEAN; + $creoleToPropelTypeMap[CreoleTypes::YEAR] = PropelTypes::INTEGER; + } + + if (isset($creoleToPropelTypeMap[$creoleType])) { + return $creoleToPropelTypeMap[$creoleType]; + } + } + + /** + * Creates an column node + * + * @param object $column The Creole column + * @return object The column node instance + */ + protected function createColumnNode($column) { + + $node = $this->doc->createElement("column"); + + $table = $column->getTable(); + $colName = $column->getName(); + $colType = $column->getType(); + $colSize = $column->getSize(); + $colScale = $column->getScale(); + + if ($colType === CreoleTypes::OTHER) { + $this->log("Column [" . $table->getName() . "." . $colName . "] has a column type (".$column->getNativeType().") that Propel does not support.", Project::MSG_WARN); + } + + $node->setAttribute("name", $colName); + + if ($this->isSamePhpName()) { + $node->setAttribute("phpName", $colName); + } + + $node->setAttribute("type", self::getMappedPropelType($colType)); + + if ($colSize > 0 && ( + $colType == CreoleTypes::CHAR + || $colType == CreoleTypes::VARCHAR + || $colType == CreoleTypes::LONGVARCHAR + || $colType == CreoleTypes::DECIMAL + || $colType == CreoleTypes::FLOAT + || $colType == CreoleTypes::NUMERIC)) { + $node->setAttribute("size", (string) $colSize); + } + + if ($colScale > 0 && ( + $colType == CreoleTypes::DECIMAL + || $colType == CreoleTypes::FLOAT + || $colType == CreoleTypes::NUMERIC)) { + $node->setAttribute("scale", (string) $colScale); + } + + if (!$column->isNullable()) { + $node->setAttribute("required", "true"); + } + + if ($column->isAutoIncrement()) { + $node->setAttribute("autoIncrement", "true"); + } + + if (in_array($colName, $this->getTablePkCols($table))) { + $node->setAttribute("primaryKey", "true"); + } + + if (($defValue = $column->getDefaultValue()) !== null) { + $node->setAttribute("default", iconv($this->dbEncoding, 'utf-8', $defValue)); + } + + if ($vendorNode = $this->createVendorInfoNode($column->getVendorSpecificInfo())) { + $node->appendChild($vendorNode); + } + + return $node; + } + + /** + * Returns the primary key columns for a table + * + * @param object $table The table + * @return array The primary keys + */ + protected function getTablePkCols($table) { + + static $columns = array(); + + $tableName = $table->getName(); + if (!isset($columns[$tableName])) { + $columns[$tableName] = array(); + $primaryKey = $table->getPrimaryKey(); + if ($primaryKey) { + foreach ($primaryKey->getColumns() as $colObject) { + $columns[$tableName][] = $colObject->getName(); + } + } + } + return $columns[$tableName]; + } + + /** + * Creates an foreign key node + * + * @param object $foreignKey The foreign key + * @return object The foreign key node instance + */ + protected function createForeignKeyNode($foreignKey) { + + $node = $this->doc->createElement("foreign-key"); + if ($vendorNode = $this->createVendorInfoNode($foreignKey->getVendorSpecificInfo())) { + $node->appendChild($vendorNode); + } + + $refs = $foreignKey->getReferences(); + // all references must be to same table, so we can grab table from the first, foreign column + $node->setAttribute("foreignTable", $refs[0][1]->getTable()->getName()); + $node->setAttribute("onDelete", $refs[0][2]); + $node->setAttribute("onUpdate", $refs[0][3]); + for ($m = 0, $size = count($refs); $m < $size; $m++) { + $refNode = $this->doc->createElement("reference"); + $refData = $refs[$m]; + $refNode->setAttribute("local", $refData[0]->getName()); + $refNode->setAttribute("foreign", $refData[1]->getName()); + $node->appendChild($refNode); + } + + return $node; + } + + /** + * Creates an index node + * + * @param object $index The index + * @return object The index node instance + */ + protected function createIndexNode($index) { + + $indexType = $index->isUnique() ? 'unique' : 'index'; + + $node = $this->doc->createElement($indexType); + $node->setAttribute("name", $index->getName()); + + $columns = $index->getColumns(); + foreach ($columns as $column) { + $tableName = $column->getTable()->getName(); + $colName = $column->getName(); + $columnNode = $this->doc->createElement("{$indexType}-column"); + $columnNode->setAttribute("name", $colName); + $node->appendChild($columnNode); + if ($indexType == 'unique' && $this->isValidatorRequired('unique')) { + $this->validatorInfos[$tableName][$colName][] = array('type' => 'unique'); + } + } + + if ($vendorNode = $this->createVendorInfoNode($index->getVendorSpecificInfo())) { + $node->appendChild($vendorNode); + } + + return $node; + } + + /** + * Checks whether to add validators of specified type or not + * + * @param int $type The validator type constant. + * @return boolean + */ + protected function isValidatorRequired($type) { + return (($this->validatorBits & $type) === $type); + } + + /** + * Registers column type specific validators if necessary + * + * We'll first collect the validators/rule infos and add them later on to + * have them appended to the table tag as a block. + * + * CreoleTypes are: + * + * BOOLEAN + * BIGINT, SMALLINT, TINYINT, INTEGER + * FLOAT, DOUBLE, NUMERIC, DECIMAL, REAL + * BIGINT, SMALLINT, TINYINT, INTEGER + * TEXT + * BLOB, CLOB, BINARY, VARBINARY, LONGVARBINARY + * DATE, YEAR, TIME + * TIMESTAMP + * + * We will add the following type specific validators: + * + * for notNull columns: required validator + * for unique indexes: unique validator + * for varchar types: maxLength validators (CHAR, VARCHAR, LONGVARCHAR) + * for numeric types: maxValue validators (BIGINT, SMALLINT, TINYINT, INTEGER, FLOAT, DOUBLE, NUMERIC, DECIMAL, REAL) + * for integer and timestamp types: notMatch validator with [^\d]+ (BIGINT, SMALLINT, TINYINT, INTEGER, TIMESTAMP) + * for float types: notMatch validator with [^\d\.]+ (FLOAT, DOUBLE, NUMERIC, DECIMAL, REAL) + * + * @param object $column The Creole column + * @return void + * @todo find out how to evaluate the appropriate size and adjust maxValue rule values appropriate + * @todo find out if float type column values must always notMatch('[^\d\.]+'), i.e. digits and point for any db vendor, language etc. + */ + protected function registerValidatorsForColumn($column) { + + $table = $column->getTable(); + $tableName = $table->getName(); + + $colName = $column->getName(); + $colType = $column->getType(); + $colSize = $column->getSize(); + + if ($this->isValidatorRequired(self::VALIDATORS_REQUIRED)) { + $ruleInfo = array('type' => 'required'); + $this->validatorInfos[$tableName][$colName][] = $ruleInfo; + } + $isPrimarykeyCol = in_array($colName, $this->getTablePkCols($table)); + if ($this->isValidatorRequired(self::VALIDATORS_UNIQUE) && $isPrimarykeyCol) { + $ruleInfo = array('type' => 'unique'); + $this->validatorInfos[$tableName][$colName][] = $ruleInfo; + } + if ($this->isValidatorRequired(self::VALIDATORS_MAXLENGTH) && + $colSize > 0 && in_array($colType, array( + CreoleTypes::CHAR, + CreoleTypes::VARCHAR, + CreoleTypes::LONGVARCHAR))) { + $ruleInfo = array('type' => 'maxLength', 'value' => $colSize); + $this->validatorInfos[$tableName][$colName][] = $ruleInfo; + } + if ($this->isValidatorRequired(self::VALIDATORS_MAXVALUE) && + $colSize > 0 && in_array($colType, array( + CreoleTypes::SMALLINT, + CreoleTypes::TINYINT, + CreoleTypes::INTEGER, + CreoleTypes::BIGINT, + CreoleTypes::FLOAT, + CreoleTypes::DOUBLE, + CreoleTypes::NUMERIC, + CreoleTypes::DECIMAL, + CreoleTypes::REAL))) { + + // TODO: how to evaluate the appropriate size?? + $this->log("WARNING: maxValue validator added for column $colName. You will have to adjust the size value manually.", Project::MSG_WARN); + $ruleInfo = array('type' => 'maxValue', 'value' => $colSize); + $this->validatorInfos[$tableName][$colName][] = $ruleInfo; + } + if ($this->isValidatorRequired(self::VALIDATORS_TYPE) && + $colSize > 0 && in_array($colType, array( + CreoleTypes::SMALLINT, + CreoleTypes::TINYINT, + CreoleTypes::INTEGER, + CreoleTypes::TIMESTAMP))) { + $ruleInfo = array('type' => 'type', 'value' => '[^\d]+'); + $this->validatorInfos[$tableName][$colName][] = $ruleInfo; + } + if ($this->isValidatorRequired(self::VALIDATORS_TYPE) && + $colSize > 0 && in_array($colType, array( + CreoleTypes::FLOAT, + CreoleTypes::DOUBLE, + CreoleTypes::NUMERIC, + CreoleTypes::DECIMAL, + CreoleTypes::REAL))) { + // TODO: is this always true?? + $ruleInfo = array('type' => 'type', 'value' => '[^\d\.]+'); + $this->validatorInfos[$tableName][$colName][] = $ruleInfo; + } + } + + /** + * Creates a validator node + * + * @param object $column The Creole column + * @param integer $type The validator type + * @return object The validator node instance + */ + protected function createValidator($column, $type) { + + $node = $this->doc->createElement('validator'); + $node->setAttribute('column', $column->getName()); + + return $node; + } + + /** + * Creates a rule node + * + * @param object $column The Creole column + * @param array $rule The rule info + * @return object The rule node instance + */ + protected function createRuleNode($column, $rule) { + + extract($rule); + + // create message + $colName = $column->getName(); + $tableName = $column->getTable()->getName(); + $msg = self::$validatorMessages[strtolower($type)]; + $tmp = compact($msg['var']); + array_unshift($tmp, $msg['msg']); + $msg = call_user_func_array('sprintf', $tmp); + + // add node + $node = $this->doc->createElement('rule'); + $node->setAttribute('name', $type == 'type' ? 'notMatch' : $type); + $node->setAttribute('message', $msg); + + return $node; + } + + /** + * Creates a vendor info node + * + * returns false if no vendor info can or has to be added + * + * @param array $vendorInfo The validator info + * @return object|boolean The vendor info instance or false + */ + protected function createVendorInfoNode($vendorInfo) + { + if (!$vendorInfo OR !$this->addVendorInfo) { + return false; + } + + $vendorNode = $this->doc->createElement("vendor"); + $vendorNode->setAttribute("type", $this->dsn["phptype"]); + + foreach ($vendorInfo as $key => $value) { + $parameterNode = $this->doc->createElement("parameter"); + $value = iconv($this->dbEncoding, "utf-8", $value); + $parameterNode->setAttribute("name", $key); + $parameterNode->setAttribute("value", $value); + $vendorNode->appendChild($parameterNode); + } + + return $vendorNode; + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelDataDTDTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelDataDTDTask.php new file mode 100644 index 0000000..e63a728 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelDataDTDTask.php @@ -0,0 +1,80 @@ +. + */ + +require_once 'propel/phing/PropelDataModelTemplateTask.php'; +include_once 'propel/engine/builder/om/ClassTools.php'; + +/** + * This Task creates the OM classes based on the XML schema file. + * + * @author Hans Lellelid + * @package propel.phing + */ +class PropelDataDTDTask extends PropelDataModelTemplateTask { + + + public function main() { + + // check to make sure task received all correct params + $this->validate(); + + if (!$this->mapperElement) { + throw new BuildException("You must use a element to describe how names should be transformed."); + } + + $basepath = $this->getOutputDirectory(); + + // Get new Capsule context + $generator = $this->createContext(); + $generator->put("basepath", $basepath); // make available to other templates + + // we need some values that were loaded into the template context + $basePrefix = $generator->get('basePrefix'); + $project = $generator->get('project'); + + foreach ($this->getDataModels() as $dataModel) { + + $this->log("Processing Datamodel : " . $dataModel->getName()); + + foreach ($dataModel->getDatabases() as $database) { + + $outFile = $this->getMappedFile($dataModel->getName()); + + $generator->put("tables", $database->getTables()); + $generator->parse("data/dtd/dataset.tpl", $outFile->getAbsolutePath()); + + $this->log("Generating DTD for database: " . $database->getName()); + $this->log("Creating DTD file: " . $outFile->getPath()); + + foreach ($database->getTables() as $tbl) { + $this->log("\t + " . $tbl->getName()); + $generator->put("table", $tbl); + $generator->parse("data/dtd/table.tpl", $outFile->getAbsolutePath(), true); + } + + } // foreach database + + } // foreach dataModel + + + } // main() +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelDataDumpTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelDataDumpTask.php new file mode 100644 index 0000000..4c94d26 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelDataDumpTask.php @@ -0,0 +1,365 @@ +. + */ + +/** + * Dumps the contenst of selected databases to XML data dump file. + * + * The generated XML files can have corresponding DTD files generated using the + * PropelDataDTDTask. The results of the data dump can be converted to SQL using + * the PropelDataSQLTask class. + * + * The database may be specified (via 'databaseName' attribute) if you only want to dump + * the contents of one database. Otherwise it is assumed that all databases described + * by datamodel schema file(s) will be dumped. + * + * @author Hans Lellelid (Propel) + * @author Fedor Karpelevitch (Torque) + * @author Jason van Zyl (Torque) + * @author Daniel Rall (Torque) + * @version $Revision: 1262 $ + * @package propel.phing + */ +class PropelDataDumpTask extends AbstractPropelDataModelTask { + + /** + * Database name. + * The database name may be optionally specified in the XML if you only want + * to dump the contents of one database. + */ + private $databaseName; + + /** + * Database URL used for Creole connection. + * This is a PEAR-compatible (loosely) DSN URL. + */ + private $databaseUrl; + + /** + * Database driver used for Creole connection. + * This should normally be left blank so that default (Creole built-in) driver for database type is used. + */ + private $databaseDriver; + + /** + * Database user used for Creole connection. + * @deprecated Put username in databaseUrl. + */ + private $databaseUser; + + /** + * Database password used for Creole connection. + * @deprecated Put password in databaseUrl. + */ + private $databasePassword; + + /** + * Properties file that maps a data XML file to a particular database. + * @var PhingFile + */ + private $datadbmap; + + /** + * The database connection used to retrieve the data to dump. + * Needs to be public so that the TableInfo class can access it. + */ + public $conn; + + /** + * The statement used to acquire the data to dump. + */ + private $stmt; + + /** + * Set the file that maps between data XML files and databases. + * + * @param PhingFile $sqldbmap the db map + * @return void + */ + public function setDataDbMap(PhingFile $datadbmap) + { + $this->datadbmap = $datadbmap; + } + + /** + * Get the file that maps between data XML files and databases. + * + * @return PhingFile $datadbmap. + */ + public function getDataDbMap() + { + return $this->datadbmap; + } + + /** + * Get the database name to dump + * + * @return The DatabaseName value + */ + public function getDatabaseName() + { + return $this->databaseName; + } + + /** + * Set the database name + * + * @param v The new DatabaseName value + */ + public function setDatabaseName($v) + { + $this->databaseName = $v; + } + + /** + * Get the database url + * + * @return The DatabaseUrl value + */ + public function getDatabaseUrl() + { + return $this->databaseUrl; + } + + /** + * Set the database url + * + * @param string $v The PEAR-compatible database DSN URL. + */ + public function setDatabaseUrl($v) + { + $this->databaseUrl = $v; + } + + /** + * Get the database user + * + * @return string database user + * @deprecated + */ + public function getDatabaseUser() + { + return $this->databaseUser; + } + + /** + * Set the database user + * + * @param string $v The new DatabaseUser value + * @deprecated Specify user in DSN URL. + */ + public function setDatabaseUser($v) + { + $this->databaseUser = $v; + } + + /** + * Get the database password + * + * @return string database password + */ + public function getDatabasePassword() + { + return $this->databasePassword; + } + + /** + * Set the database password + * + * @param string $v The new DatabasePassword value + * @deprecated Specify database password in DSN URL. + */ + public function setDatabasePassword($v) + { + $this->databasePassword = $v; + } + + /** + * Get the database driver name + * + * @return string database driver name + */ + public function getDatabaseDriver() + { + return $this->databaseDriver; + } + + /** + * Set the database driver name + * + * @param string $v The new DatabaseDriver value + */ + public function setDatabaseDriver($v) + { + $this->databaseDriver = $v; + } + + /** + * Create the data XML -> database map. + * + * This is necessary because there is currently no other method of knowing which + * data XML files correspond to which database. This map allows us to convert multiple + * data XML files into SQL. + * + * @throws IOException - if unable to store properties + */ + private function createDataDbMap() + { + if ($this->getDataDbMap() === null) { + return; + } + + // Produce the sql -> database map + $datadbmap = new Properties(); + + // Check to see if the sqldbmap has already been created. + if ($this->getDataDbMap()->exists()) { + $datadbmap->load($this->getDataDbMap()); + } + + foreach ($this->getDataModels() as $dataModel) { // there is really one 1 db per datamodel + foreach ($dataModel->getDatabases() as $database) { + + // if database name is specified, then we only want to dump that one db. + if (empty($this->databaseName) || ($this->databaseName && $database->getName() == $this->databaseName)) { + $outFile = $this->getMappedFile($dataModel->getName()); + $datadbmap->setProperty($outFile->getName(), $database->getName()); + } + } + } + + try { + $datadbmap->store($this->getDataDbMap(), "Data XML file -> Database map"); + } catch (IOException $e) { + throw new IOException("Unable to store properties: ". $e->getMessage()); + } + } + + /** + * Iterates through each datamodel/database, dumps the contents of all tables and creates a DOM XML doc. + * + * @return void + * @throws BuildException + */ + public function main() + { + $this->validate(); + + $buf = "Database settings:\n" + . " driver: " . ($this->databaseDriver ? $this->databaseDriver : "(default)" ). "\n" + . " URL: " . $this->databaseUrl . "\n" + . ($this->databaseUser ? " user: " . $this->databaseUser . "\n" : "") + . ($this->databasePassword ? " password: " . $this->databasePassword . "\n" : ""); + + $this->log($buf, Project::MSG_VERBOSE); + + // 1) First create the Data XML -> database name map. + $this->createDataDbMap(); + + // 2) Now go create the XML files from teh database(s) + foreach ($this->getDataModels() as $dataModel) { // there is really one 1 db per datamodel + foreach ($dataModel->getDatabases() as $database) { + + // if database name is specified, then we only want to dump that one db. + if (empty($this->databaseName) || ($this->databaseName && $database->getName() == $this->databaseName)) { + + $outFile = $this->getMappedFile($dataModel->getName()); + + $this->log("Dumping data to XML for database: " . $database->getName()); + $this->log("Writing to XML file: " . $outFile->getName()); + + try { + + $url = str_replace("@DB@", $database->getName(), $this->databaseUrl); + + if ($url !== $this->databaseUrl) { + $this->log("New (resolved) URL: " . $url, Project::MSG_VERBOSE); + } + + if (empty($url)) { + throw new BuildException("Unable to connect to database; no PDO connection URL specified.", $this->getLocation()); + } + + $this->conn = new PDO($url, $this->databaseUser, $this->databasePassword); + $this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + + $doc = $this->createXMLDoc($database); + $doc->save($outFile->getAbsolutePath()); + + } catch (SQLException $se) { + $this->log("SQLException while connecting to DB: ". $se->getMessage(), Project::MSG_ERR); + throw new BuildException($se); + } + } // if databaseName && database->getName == databaseName + } // foreach database + } // foreach datamodel + } + + /** + * Gets PDOStatement of query to fetch all data from a table. + * @param string $tableName + * @param Platform $platform + * @return PDOStatement + */ + private function getTableDataStmt($tableName, Platform $platform) + { + return $this->conn->query("SELECT * FROM " . $platform->quoteIdentifier( $tableName ) ); + } + + /** + * Creates a DOM document containing data for specified database. + * @param Database $database + * @return DOMDocument + */ + private function createXMLDoc(Database $database) + { + $doc = new DOMDocument('1.0', 'utf-8'); + $doc->formatOutput = true; // pretty printing + $doc->appendChild($doc->createComment("Created by data/dump/Control.tpl template.")); + + $dsNode = $doc->createElement("dataset"); + $dsNode->setAttribute("name", "all"); + $doc->appendChild($dsNode); + + $platform = $this->getGeneratorConfig()->getConfiguredPlatform($this->conn); + + $this->log("Building DOM tree containing data from tables:"); + + foreach ($database->getTables() as $tbl) { + $this->log("\t+ " . $tbl->getName()); + $stmt = $this->getTableDataStmt($tbl->getName(), $platform); + while ($row = $stmt->fetch()) { + $rowNode = $doc->createElement($tbl->getPhpName()); + foreach ($tbl->getColumns() as $col) { + $cval = $row[$col->getName()]; + if ($cval !== null) { + $rowNode->setAttribute($col->getPhpName(), iconv($this->dbEncoding, 'utf-8', $cval)); + } + } + $dsNode->appendChild($rowNode); + unset($rowNode); + } + unset($stmt); + } + + return $doc; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelDataModelTemplateTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelDataModelTemplateTask.php new file mode 100644 index 0000000..8c6a7fd --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelDataModelTemplateTask.php @@ -0,0 +1,228 @@ +. + */ + +require_once 'propel/phing/AbstractPropelDataModelTask.php'; +include_once 'propel/engine/database/model/AppData.php'; +include_once 'propel/engine/database/model/Database.php'; +include_once 'propel/engine/database/transform/XmlToAppData.php'; + +/** + * A generic class that simply loads the data model and parses a control template. + * + * This class exists largely for compatibility with early Propel where this was + * a CapsuleTask subclass. This class also makes it easy to quickly add some custom + * datamodel-based transformations (by allowing you to put the logic in the templates). + * + * @author Hans Lellelid + * @package propel.phing + * @version $Revision: 1262 $ + */ +class PropelDataModelTemplateTask extends AbstractPropelDataModelTask { + + /** + * This is the file where the generated text + * will be placed. + * @var string + */ + protected $outputFile; + + /** + * Path where Capsule looks for templates. + * @var PhingFile + */ + protected $templatePath; + + /** + * This is the control template that governs the output. + * It may or may not invoke the services of worker + * templates. + * @var string + */ + protected $controlTemplate; + + /** + * [REQUIRED] Set the output file for the + * generation process. + * @param string $outputFile (TODO: change this to File) + * @return void + */ + public function setOutputFile($outputFile) { + $this->outputFile = $outputFile; + } + + /** + * Get the output file for the + * generation process. + * @return string + */ + public function getOutputFile() { + return $this->outputFile; + } + + /** + * [REQUIRED] Set the control template for the + * generating process. + * @param string $controlTemplate + * @return void + */ + public function setControlTemplate ($controlTemplate) { + $this->controlTemplate = $controlTemplate; + } + + /** + * Get the control template for the + * generating process. + * @return string + */ + public function getControlTemplate() { + return $this->controlTemplate; + } + + /** + * [REQUIRED] Set the path where Capsule will look + * for templates using the file template + * loader. + * @return void + * @throws Exception + */ + public function setTemplatePath($templatePath) { + $resolvedPath = ""; + $tok = strtok($templatePath, ","); + while ( $tok ) { + // resolve relative path from basedir and leave + // absolute path untouched. + $fullPath = $this->project->resolveFile($tok); + $cpath = $fullPath->getCanonicalPath(); + if ($cpath === false) { + $this->log("Template directory does not exist: " . $fullPath->getAbsolutePath()); + } else { + $resolvedPath .= $cpath; + } + $tok = strtok(","); + if ( $tok ) { + $resolvedPath .= ","; + } + } + $this->templatePath = $resolvedPath; + } + + /** + * Get the path where Velocity will look + * for templates using the file template + * loader. + * @return string + */ + public function getTemplatePath() { + return $this->templatePath; + } + + /** + * Creates a new Capsule context with some basic properties set. + * (Capsule is a simple PHP encapsulation system -- aka a php "template" class.) + * @return Capsule + */ + protected function createContext() { + + $context = new Capsule(); + + // Make sure the output directory exists, if it doesn't + // then create it. + $outputDir = new PhingFile($this->outputDirectory); + if (!$outputDir->exists()) { + $this->log("Output directory does not exist, creating: " . $outputDir->getAbsolutePath()); + $outputDir->mkdirs(); + } + + // Place our set of data models into the context along + // with the names of the databases as a convenience for now. + $context->put("targetDatabase", $this->getTargetDatabase()); + $context->put("targetPackage", $this->getTargetPackage()); + $context->put("now", strftime("%c")); + + $this->log("Target database type: " . $this->getTargetDatabase()); + $this->log("Target package: " . $this->getTargetPackage()); + $this->log("Using template path: " . $this->templatePath); + $this->log("Output directory: " . $this->getOutputDirectory()); + + $context->setTemplatePath($this->templatePath); + $context->setOutputDirectory($this->outputDirectory); + + $this->populateContextProperties($context); + + return $context; + } + + /** + * Adds the propel build properties to the passed Capsule context. + * + * @param Capsule $context + * @see GeneratorConfig::getBuildProperties() + */ + public function populateContextProperties(Capsule $context) + { + foreach ($this->getGeneratorConfig()->getBuildProperties() as $key => $propValue) { + $this->log('Adding property ${' . $key . '} to context', Project::MSG_DEBUG); + $context->put($key, $propValue); + } + } + + /** + * Performs validation for single-file mode. + * @throws BuildException - if there are any validation errors + */ + protected function singleFileValidate() + { + parent::validate(); + + // Make sure the control template is set. + if ($this->controlTemplate === null) { + throw new BuildException("The control template needs to be defined!"); + } + // Make sure there is an output file. + if ($this->outputFile === null) { + throw new BuildException("The output file needs to be defined!"); + } + + } + + /** + * Creates Capsule context and parses control template. + * @return void + */ + public function main() + { + $this->singleFileValidate(); + $context = $this->createContext(); + + $context->put("dataModels", $this->getDataModels()); + + $path = $this->outputDirectory . DIRECTORY_SEPARATOR . $this->outputFile; + $this->log("Generating to file " . $path); + + try { + $this->log("Parsing control template: " . $this->controlTemplate); + $context->parse($this->controlTemplate, $path); + } catch (Exception $ioe) { + throw new BuildException("Cannot write parsed template: ". $ioe->getMessage()); + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelDataSQLTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelDataSQLTask.php new file mode 100644 index 0000000..5f397be --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelDataSQLTask.php @@ -0,0 +1,204 @@ +. + */ + +include_once 'propel/engine/database/model/AppData.php'; +include_once 'propel/engine/database/model/Database.php'; +include_once 'propel/engine/database/transform/XmlToAppData.php'; +include_once 'propel/engine/builder/util/transform/XmlToDataSQL.php'; + +/** + * Task that transforms XML datadump files into files containing SQL INSERT statements. + * + * @author Hans Lellelid (Propel) + * @author Jason van Zyl (Torque) + * @author John McNally (Torque) + * @author Fedor Karpelevitch (Torque) + * @version $Revision: 1262 $ + * @package propel.phing + */ +class PropelDataSQLTask extends AbstractPropelDataModelTask { + + /** + * Properties file that maps an SQL file to a particular database. + * @var PhingFile + */ + private $sqldbmap; + + /** + * Properties file that maps a data XML file to a particular database. + * @var PhingFile + */ + private $datadbmap; + + /** + * The base directory in which to find data XML files. + * @var PhingFile + */ + private $srcDir; + + /** + * Set the file that maps between SQL files and databases. + * + * @param PhingFile $sqldbmap the sql -> db map. + * @return void + */ + public function setSqlDbMap(PhingFile $sqldbmap) + { + $this->sqldbmap = $sqldbmap; + } + + /** + * Get the file that maps between SQL files and databases. + * + * @return PhingFile sqldbmap. + */ + public function getSqlDbMap() + { + return $this->sqldbmap; + } + + /** + * Set the file that maps between data XML files and databases. + * + * @param PhingFile $sqldbmap the db map + * @return void + */ + public function setDataDbMap(PhingFile $datadbmap) + { + $this->datadbmap = $datadbmap; + } + + /** + * Get the file that maps between data XML files and databases. + * + * @return PhingFile $datadbmap. + */ + public function getDataDbMap() + { + return $this->datadbmap; + } + + /** + * Set the src directory for the data xml files listed in the datadbmap file. + * @param PhingFile $srcDir data xml source directory + */ + public function setSrcDir(PhingFile $srcDir) + { + $this->srcDir = $srcDir; + } + + /** + * Get the src directory for the data xml files listed in the datadbmap file. + * + * @return PhingFile data xml source directory + */ + public function getSrcDir() + { + return $this->srcDir; + } + + /** + * Search through all data models looking for matching database. + * @return Database or NULL if none found. + */ + private function getDatabase($name) + { + foreach ($this->getDataModels() as $dm) { + foreach ($dm->getDatabases() as $db) { + if ($db->getName() == $name) { + return $db; + } + } + } + } + + /** + * Main method parses the XML files and creates SQL files. + * + * @return void + * @throws Exception If there is an error parsing the data xml. + */ + public function main() + { + $this->validate(); + + $targetDatabase = $this->getTargetDatabase(); + + $platform = $this->getGeneratorConfig()->getConfiguredPlatform(); + + // Load the Data XML -> DB Name properties + $map = new Properties(); + try { + $map->load($this->getDataDbMap()); + } catch (IOException $ioe) { + throw new BuildException("Cannot open and process the datadbmap!", $ioe); + } + + // Parse each file in the data -> db map + foreach ($map->keys() as $dataXMLFilename) { + + $dataXMLFile = new PhingFile($this->srcDir, $dataXMLFilename); + + // if file exists then proceed + if ($dataXMLFile->exists()) { + + $dbname = $map->get($dataXMLFilename); + + $db = $this->getDatabase($dbname); + + if (!$db) { + throw new BuildException("Cannot find instantiated Database for name '$dbname' from datadbmap file."); + } + + $db->setPlatform($platform); + + $outFile = $this->getMappedFile($dataXMLFilename); + $sqlWriter = new FileWriter($outFile); + + $this->log("Creating SQL from XML data dump file: " . $dataXMLFile->getAbsolutePath()); + + try { + $dataXmlParser = new XmlToDataSQL($db, $this->getGeneratorConfig(), $this->dbEncoding); + $dataXmlParser->transform($dataXMLFile, $sqlWriter); + } catch (Exception $e) { + throw new BuildException("Exception parsing data XML: " . $e->getMessage(), $x); + } + + // Place the generated SQL file(s) + $p = new Properties(); + if ($this->getSqlDbMap()->exists()) { + $p->load($this->getSqlDbMap()); + } + + $p->setProperty($outFile->getName(), $db->getName()); + $p->store($this->getSqlDbMap(), "Sqlfile -> Database map"); + + } else { + $this->log("File '" . $dataXMLFile->getAbsolutePath() + . "' in datadbmap does not exist, so skipping it.", Project::MSG_WARN); + } + + } // foreach data xml file + + } // main() + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelGraphvizTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelGraphvizTask.php new file mode 100644 index 0000000..32ceee4 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelGraphvizTask.php @@ -0,0 +1,181 @@ +. + */ + +require_once 'propel/phing/AbstractPropelDataModelTask.php'; +include_once 'propel/engine/database/model/AppData.php'; + +/** + * A task to generate Graphviz dot files from Propel datamodel. + * + * @author Mark Kimsal + * @version $Revision: 1262 $ + * @package propel.phing + */ +class PropelGraphvizTask extends AbstractPropelDataModelTask { + + /** + * The properties file that maps an SQL file to a particular database. + * @var PhingFile + */ + private $sqldbmap; + + /** + * Name of the database. + */ + private $database; + + /** + * Name of the output directory. + */ + private $outDir; + + + /** + * Set the sqldbmap. + * @param PhingFile $sqldbmap The db map. + */ + public function setOutputDirectory(PhingFile $out) + { + if (!$out->exists()) { + $out->mkdirs(); + } + $this->outDir = $out; + } + + + /** + * Set the sqldbmap. + * @param PhingFile $sqldbmap The db map. + */ + public function setSqlDbMap(PhingFile $sqldbmap) + { + $this->sqldbmap = $sqldbmap; + } + + /** + * Get the sqldbmap. + * @return PhingFile $sqldbmap. + */ + public function getSqlDbMap() + { + return $this->sqldbmap; + } + + /** + * Set the database name. + * @param string $database + */ + public function setDatabase($database) + { + $this->database = $database; + } + + /** + * Get the database name. + * @return string + */ + public function getDatabase() + { + return $this->database; + } + + + public function main() + { + + $count = 0; + + $dotSyntax = ''; + + // file we are going to create + + $dbMaps = $this->getDataModelDbMap(); + + foreach ($this->getDataModels() as $dataModel) { + + $dotSyntax .= "digraph G {\n"; + foreach ($dataModel->getDatabases() as $database) { + + $this->log("db: " . $database->getName()); + + //print the tables + foreach ($database->getTables() as $tbl) { + + $this->log("\t+ " . $tbl->getName()); + + ++$count; + $dotSyntax .= 'node'.$tbl->getName().' [label="{
    '.$tbl->getName().'|'; + + foreach ($tbl->getColumns() as $col) { + $dotSyntax .= $col->getName() . ' (' . $col->getType() . ')'; + if (count($col->getForeignKeys()) > 0) { + $dotSyntax .= ' [FK]'; + } elseif ($col->isPrimaryKey()) { + $dotSyntax .= ' [PK]'; + } + $dotSyntax .= '\l'; + } + $dotSyntax .= '}", shape=record];'; + $dotSyntax .= "\n"; + } + + //print the relations + + $count = 0; + $dotSyntax .= "\n"; + foreach ($database->getTables() as $tbl) { + ++$count; + + foreach ($tbl->getColumns() as $col) { + $fk = $col->getForeignKeys(); + if ( count($fk) == 0 or $fk === null ) continue; + if ( count($fk) > 1 ) throw( new Exception("not sure what to do here...") ); + $fk = $fk[0]; // try first one + $dotSyntax .= 'node'.$tbl->getName() .':cols -> node'.$fk->getForeignTableName() . ':table [label="' . $col->getName() . '=' . implode(',', $fk->getForeignColumns()) . ' "];'; + $dotSyntax .= "\n"; + } + } + + + + } // foreach database + $dotSyntax .= "}\n"; + + $this->writeDot($dotSyntax,$this->outDir,$database->getName()); + + $dotSyntax = ''; + + } //foreach datamodels + + } // main() + + + /** + * probably insecure + */ + function writeDot($dotSyntax, PhingFile $outputDir, $baseFilename) { + $file = new PhingFile($outputDir, $baseFilename . '.schema.dot'); + $this->log("Writing dot file to " . $file->getAbsolutePath()); + file_put_contents($file->getAbsolutePath(), $dotSyntax); + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelOMTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelOMTask.php new file mode 100644 index 0000000..f3ff240 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelOMTask.php @@ -0,0 +1,212 @@ +. + */ + +require_once 'propel/phing/AbstractPropelDataModelTask.php'; +include_once 'propel/engine/builder/om/ClassTools.php'; +require_once 'propel/engine/builder/om/OMBuilder.php'; + +/** + * This Task creates the OM classes based on the XML schema file. + * + * @author Hans Lellelid + * @package propel.phing + */ +class PropelOMTask extends AbstractPropelDataModelTask { + + /** + * The platform (php4, php5, etc.) for which the om is being built. + * @var string + */ + private $targetPlatform; + + /** + * Sets the platform (php4, php5, etc.) for which the om is being built. + * @param string $v + */ + public function setTargetPlatform($v) { + $this->targetPlatform = $v; + } + + /** + * Gets the platform (php4, php5, etc.) for which the om is being built. + * @return string + */ + public function getTargetPlatform() { + return $this->targetPlatform; + } + + /** + * Utility method to create directory for package if it doesn't already exist. + * @param string $path The [relative] package path. + * @throws BuildException - if there is an error creating directories + */ + protected function ensureDirExists($path) + { + $f = new PhingFile($this->getOutputDirectory(), $path); + if (!$f->exists()) { + if (!$f->mkdirs()) { + throw new BuildException("Error creating directories: ". $f->getPath()); + } + } + } + + /** + * Uses a builder class to create the output class. + * This method assumes that the DataModelBuilder class has been initialized with the build properties. + * @param OMBuilder $builder + * @param boolean $overwrite Whether to overwrite existing files with te new ones (default is YES). + * @todo -cPropelOMTask Consider refactoring build() method into AbstractPropelDataModelTask (would need to be more generic). + */ + protected function build(OMBuilder $builder, $overwrite = true) + { + + $path = $builder->getClassFilePath(); + $this->ensureDirExists(dirname($path)); + + $_f = new PhingFile($this->getOutputDirectory(), $path); + if ($overwrite || !$_f->exists()) { + $this->log("\t\t-> " . $builder->getClassname() . " [builder: " . get_class($builder) . "]"); + $script = $builder->build(); + file_put_contents($_f->getAbsolutePath(), $script); + foreach ($builder->getWarnings() as $warning) { + $this->log($warning, Project::MSG_WARN); + } + } else { + $this->log("\t\t-> (exists) " . $builder->getClassname()); + } + + } + + /** + * Main method builds all the targets for a typical propel project. + */ + public function main() + { + // check to make sure task received all correct params + $this->validate(); + + $generatorConfig = $this->getGeneratorConfig(); + + foreach ($this->getDataModels() as $dataModel) { + $this->log("Processing Datamodel : " . $dataModel->getName()); + + foreach ($dataModel->getDatabases() as $database) { + + $this->log(" - processing database : " . $database->getName()); + + foreach ($database->getTables() as $table) { + + if (!$table->isForReferenceOnly()) { + + $this->log("\t+ " . $table->getName()); + + // ----------------------------------------------------------------------------------------- + // Create Peer, Object, and TableMap classes + // ----------------------------------------------------------------------------------------- + + // these files are always created / overwrite any existing files + foreach (array('peer', 'object', 'tablemap') as $target) { + $builder = $generatorConfig->getConfiguredBuilder($table, $target); + $this->build($builder); + } + + // ----------------------------------------------------------------------------------------- + // Create [empty] stub Peer and Object classes if they don't exist + // ----------------------------------------------------------------------------------------- + + // these classes are only generated if they don't already exist + foreach (array('peerstub', 'objectstub') as $target) { + $builder = $generatorConfig->getConfiguredBuilder($table, $target); + $this->build($builder, $overwrite=false); + } + + // ----------------------------------------------------------------------------------------- + // Create [empty] stub child Object classes if they don't exist + // ----------------------------------------------------------------------------------------- + + // If table has enumerated children (uses inheritance) then create the empty child stub classes if they don't already exist. + if ($table->getChildrenColumn()) { + $col = $table->getChildrenColumn(); + if ($col->isEnumeratedClasses()) { + foreach ($col->getChildren() as $child) { + $builder = $generatorConfig->getConfiguredBuilder($table, 'objectmultiextend'); + $builder->setChild($child); + $this->build($builder, $overwrite=false); + } // foreach + } // if col->is enumerated + } // if tbl->getChildrenCol + + + // ----------------------------------------------------------------------------------------- + // Create [empty] Interface if it doesn't exist + // ----------------------------------------------------------------------------------------- + + // Create [empty] interface if it does not already exist + if ($table->getInterface()) { + $builder = $generatorConfig->getConfiguredBuilder($table, 'interface'); + $this->build($builder, $overwrite=false); + } + + // ----------------------------------------------------------------------------------------- + // Create tree Node classes + // ----------------------------------------------------------------------------------------- + + if ($table->treeMode()) { + switch($table->treeMode()) { + case 'NestedSet': + foreach (array('nestedsetpeer', 'nestedset') as $target) { + $builder = $generatorConfig->getConfiguredBuilder($table, $target); + $this->build($builder); + } + break; + + case 'MaterializedPath': + foreach (array('nodepeer', 'node') as $target) { + $builder = $generatorConfig->getConfiguredBuilder($table, $target); + $this->build($builder); + } + + foreach (array('nodepeerstub', 'nodestub') as $target) { + $builder = $generatorConfig->getConfiguredBuilder($table, $target); + $this->build($builder, $overwrite=false); + } + break; + + case 'AdjacencyList': + // No implementation for this yet. + default: + break; + } + + } // if Table->treeMode() + + + } // if !$table->isForReferenceOnly() + + } // foreach table + + } // foreach database + + } // foreach dataModel + + } // main() +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelSQLExec.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelSQLExec.php new file mode 100644 index 0000000..d7bc554 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelSQLExec.php @@ -0,0 +1,711 @@ +. + */ + +require_once 'phing/Task.php'; + +/** + * Executes all SQL files referenced in the sqldbmap file against their mapped databases. + * + * This task uses an SQL -> Database map in the form of a properties + * file to insert each SQL file listed into its designated database. + * + * @author Hans Lellelid + * @author Dominik del Bondio + * @author Jeff Martin (Torque) + * @author Michael McCallum (Torque) + * @author Tim Stephenson (Torque) + * @author Jason van Zyl (Torque) + * @author Martin Poeschl (Torque) + * @version $Revision: 1262 $ + * @package propel.phing + */ +class PropelSQLExec extends Task { + + private $goodSql = 0; + private $totalSql = 0; + + const DELIM_ROW = "row"; + const DELIM_NORMAL = "normal"; + + /** + * The delimiter type indicating whether the delimiter will + * only be recognized on a line by itself + */ + private $delimiterType = "normal"; // can't use constant just defined + + //private static $delimiterTypes = array(DELIM_NORMAL, DELIM_ROW); + //private static $errorActions = array("continue", "stop", "abort"); + + /** PDO Database connection */ + private $conn = null; + + /** Autocommit flag. Default value is false */ + private $autocommit = false; + + /** DB url. */ + private $url = null; + + /** User name. */ + private $userId = null; + + /** Password */ + private $password = null; + + /** SQL input command */ + private $sqlCommand = ""; + + /** SQL transactions to perform */ + private $transactions = array(); + + /** SQL Statement delimiter */ + private $delimiter = ";"; + + /** Print SQL results. */ + private $print = false; + + /** Print header columns. */ + private $showheaders = true; + + /** Results Output file. */ + private $output = null; + + /** RDBMS Product needed for this SQL. */ + private $rdbms = null; + + /** RDBMS Version needed for this SQL. */ + private $version = null; + + /** Action to perform if an error is found */ + private $onError = "abort"; + + /** Encoding to use when reading SQL statements from a file */ + private $encoding = null; + + /** Src directory for the files listed in the sqldbmap. */ + private $srcDir; + + /** Properties file that maps an individual SQL file to a database. */ + private $sqldbmap; + + /** + * Set the sqldbmap properties file. + * + * @param sqldbmap filename for the sqldbmap + */ + public function setSqlDbMap($sqldbmap) + { + $this->sqldbmap = $this->project->resolveFile($sqldbmap); + } + + /** + * Get the sqldbmap properties file. + * + * @return filename for the sqldbmap + */ + public function getSqlDbMap() + { + return $this->sqldbmap; + } + + /** + * Set the src directory for the sql files listed in the sqldbmap file. + * + * @param PhingFile $srcDir sql source directory + */ + public function setSrcDir(PhingFile $srcDir) + { + $this->srcDir = $srcDir; + } + + /** + * Get the src directory for the sql files listed in the sqldbmap file. + * + * @return PhingFile SQL Source directory + */ + public function getSrcDir() + { + return $this->srcDir; + } + + /** + * Set the sql command to execute + * + * @param sql sql command to execute + */ + public function addText($sql) + { + $this->sqlCommand .= $sql; + } + + /** + * Set the DB connection url. + * + * @param string $url connection url + */ + public function setUrl($url) + { + $this->url = $url; + } + + /** + * Set the user name for the DB connection. + * + * @param string $userId database user + * @deprecated Specify userid in the DSN URL. + */ + public function setUserid($userId) + { + $this->userId = $userId; + } + + /** + * Set the password for the DB connection. + * + * @param string $password database password + * @deprecated Specify password in the DSN URL. + */ + public function setPassword($password) + { + $this->password = $password; + } + + /** + * Set the autocommit flag for the DB connection. + * + * @param boolean $autocommit the autocommit flag + */ + public function setAutoCommit($autocommit) + { + $this->autocommit = (boolean) $autocommit; + } + + /** + * Set the statement delimiter. + * + *

    For example, set this to "go" and delimitertype to "ROW" for + * Sybase ASE or MS SQL Server.

    + * + * @param string $delimiter + */ + public function setDelimiter($delimiter) + { + $this->delimiter = $delimiter; + } + + /** + * Set the Delimiter type for this sql task. The delimiter type takes two + * values - normal and row. Normal means that any occurence of the delimiter + * terminate the SQL command whereas with row, only a line containing just + * the delimiter is recognized as the end of the command. + * + * @param string $delimiterType + */ + public function setDelimiterType($delimiterType) + { + $this->delimiterType = $delimiterType; + } + + /** + * Set the print flag. + * + * @param boolean $print + */ + public function setPrint($print) + { + $this->print = (boolean) $print; + } + + /** + * Set the showheaders flag. + * + * @param boolean $showheaders + */ + public function setShowheaders($showheaders) + { + $this->showheaders = (boolean) $showheaders; + } + + /** + * Set the output file. + * + * @param PhingFile $output + */ + public function setOutput(PhingFile $output) + { + $this->output = $output; + } + + /** + * Set the action to perform onerror + * + * @param string $action + */ + public function setOnerror($action) + { + $this->onError = $action; + } + + /** + * Load the sql file and then execute it + * + * @throws BuildException + */ + public function main() + { + $this->sqlCommand = trim($this->sqlCommand); + + if ($this->sqldbmap === null || $this->getSqlDbMap()->exists() === false) { + throw new BuildException("You haven't provided an sqldbmap, or " + . "the one you specified doesn't exist: " . $this->sqldbmap->getPath()); + } + + if ($this->url === null) { + throw new BuildException("DSN url attribute must be set!"); + } + + $map = new Properties(); + + try { + $map->load($this->getSqlDbMap()); + } catch (IOException $ioe) { + throw new BuildException("Cannot open and process the sqldbmap!"); + } + + $databases = array(); + + foreach ($map->keys() as $sqlfile) { + + $database = $map->getProperty($sqlfile); + + // Q: already there? + if (!isset($databases[$database])) { + // A: No. + $databases[$database] = array(); + } + + // We want to make sure that the base schemas + // are inserted first. + if (strpos($sqlfile, "schema.sql") !== false) { + // add to the beginning of the array + array_unshift($databases[$database], $sqlfile); + } else { + array_push($databases[$database], $sqlfile); + } + } + + foreach ($databases as $db => $files) { + $transactions = array(); + + foreach ($files as $fileName) { + + $file = new PhingFile($this->srcDir, $fileName); + + if ($file->exists()) { + $this->log("Executing statements in file: " . $file->__toString()); + $transaction = new PropelSQLExecTransaction($this); + $transaction->setSrc($file); + $transactions[] = $transaction; + } else { + $this->log("File '" . $file->__toString() + . "' in sqldbmap does not exist, so skipping it."); + } + } + $this->insertDatabaseSqlFiles($this->url, $db, $transactions); + } + } + + /** + * Take the base url, the target database and insert a set of SQL + * files into the target database. + * + * @param string $url + * @param string $database + * @param array $transactions + */ + private function insertDatabaseSqlFiles($url, $database, $transactions) + { + $url = str_replace("@DB@", $database, $url); + $this->log("Our new url -> " . $url); + + try { + + $buf = "Database settings:" . PHP_EOL + . " URL: " . $url . PHP_EOL + . ($this->userId ? " user: " . $this->userId . PHP_EOL : "") + . ($this->password ? " password: " . $this->password . PHP_EOL : ""); + + $this->log($buf, Project::MSG_VERBOSE); + + // Set user + password to null if they are empty strings + if (!$this->userId) { $this->userId = null; } + + if (!$this->password) { $this->password = null; } + + $this->conn = new PDO($url, $this->userId, $this->password); + $this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + + // $this->conn->setAutoCommit($this->autocommit); + // $this->statement = $this->conn->createStatement(); + + $out = null; + + try { + if ($this->output !== null) { + $this->log("Opening PrintStream to output file " . $this->output->__toString(), Project::MSG_VERBOSE); + $out = new FileWriter($this->output); + } + + // Process all transactions + for ($i=0,$size=count($transactions); $i < $size; $i++) { + $transactions[$i]->runTransaction($out); + if (!$this->autocommit) { + $this->log("Commiting transaction", Project::MSG_VERBOSE); + $this->conn->commit(); + } + } + } catch (Exception $e) { + if ($out) $out->close(); + } + + } catch (IOException $e) { + + if (!$this->autocommit && $this->conn !== null && $this->onError == "abort") { + try { + $this->conn->rollBack(); + } catch (PDOException $ex) { + // do nothing. + System::println("Rollback failed."); + } + } + if ($this->statement) $this->statement = null; // close + throw new BuildException($e); + } catch (PDOException $e) { + if (!$this->autocommit && $this->conn !== null && $this->onError == "abort") { + try { + $this->conn->rollBack(); + } catch (PDOException $ex) { + // do nothing. + System::println("Rollback failed"); + } + } + if ($this->statement) $this->statement = null; // close + throw new BuildException($e); + } + + $this->statement = null; // close + + $this->log($this->goodSql . " of " . $this->totalSql + . " SQL statements executed successfully"); + } + + /** + * Read the statements from the .sql file and execute them. + * Lines starting with '//', '--' or 'REM ' are ignored. + * + * Developer note: must be public in order to be called from + * sudo-"inner" class PropelSQLExecTransaction. + * + * @param Reader $reader + * @param $out Optional output stream. + * @throws PDOException + * @throws IOException + */ + public function runStatements(Reader $reader, $out = null) + { + $sql = ""; + $line = ""; + $sqlBacklog = ""; + $hasQuery = false; + + $in = new BufferedReader($reader); + + $parser['pointer'] = 0; + $parser['isInString'] = false; + $parser['stringQuotes'] = ""; + $parser['backslashCount'] = 0; + $parser['parsedString'] = ""; + + $sqlParts = array(); + + while (($line = $in->readLine()) !== null) { + + $line = trim($line); + $line = ProjectConfigurator::replaceProperties($this->project, $line, + $this->project->getProperties()); + + if (StringHelper::startsWith("//", $line) + || StringHelper::startsWith("--", $line) + || StringHelper::startsWith("#", $line)) { + continue; + } + + if (strlen($line) > 4 && strtoupper(substr($line,0, 4)) == "REM ") { + continue; + } + + if ($sqlBacklog !== "") { + $sql = $sqlBacklog; + $sqlBacklog = ""; + } + + $sql .= " " . $line . PHP_EOL; + + // SQL defines "--" as a comment to EOL + // and in Oracle it may contain a hint + // so we cannot just remove it, instead we must end it + if (strpos($line, "--") !== false) { + $sql .= PHP_EOL; + } + + // DELIM_ROW doesn't need this (as far as i can tell) + if ($this->delimiterType == self::DELIM_NORMAL) { + + // old regex, being replaced due to segfaults: + // See: http://propel.phpdb.org/trac/ticket/294 + //$reg = "#((?:\"(?:\\\\.|[^\"])*\"?)+|'(?:\\\\.|[^'])*'?|" . preg_quote($this->delimiter) . ")#"; + //$sqlParts = preg_split($reg, $sql, 0, PREG_SPLIT_DELIM_CAPTURE); + + $i = $parser['pointer']; + $c = strlen($sql); + while ($i < $c) { + + $char = $sql[$i]; + + switch($char) { + case "\\": + $parser['backslashCount']++; + $this->log("c$i: found ".$parser['backslashCount']." backslash(es)", Project::MSG_VERBOSE); + break; + case "'": + case "\"": + if ($parser['isInString'] && $parser['stringQuotes'] == $char) { + if (($parser['backslashCount'] & 1) == 0) { + #$this->log("$i: out of string", Project::MSG_VERBOSE); + $parser['isInString'] = false; + } else { + $this->log("c$i: rejected quoted delimiter", Project::MSG_VERBOSE); + } + + } elseif (!$parser['isInString']) { + $parser['stringQuotes'] = $char; + $parser['isInString'] = true; + #$this->log("$i: into string with $parser['stringQuotes']", Project::MSG_VERBOSE); + } + break; + } + + if ($char == $this->delimiter && !$parser['isInString']) { + $this->log("c$i: valid end of command found!", Project::MSG_VERBOSE); + $sqlParts[] = $parser['parsedString']; + $sqlParts[] = $this->delimiter; + break; + } + $parser['parsedString'] .= $char; + if ($char !== "\\") { + if ($parser['backslashCount']) $this->log("$i: backslash reset", Project::MSG_VERBOSE); + $parser['backslashCount'] = 0; + } + $i++; + $parser['pointer']++; + } + + $sqlBacklog = ""; + foreach ($sqlParts as $sqlPart) { + // we always want to append, even if it's a delim (which will be stripped off later) + $sqlBacklog .= $sqlPart; + + // we found a single (not enclosed by ' or ") delimiter, so we can use all stuff before the delim as the actual query + if ($sqlPart === $this->delimiter) { + $sql = $sqlBacklog; + $sqlBacklog = ""; + $hasQuery = true; + } + } + } + + if ($hasQuery || ($this->delimiterType == self::DELIM_ROW && $line == $this->delimiter)) { + // this assumes there is always a delimter on the end of the SQL statement. + $sql = StringHelper::substring($sql, 0, strlen($sql) - 1 - strlen($this->delimiter)); + $this->log("SQL: " . $sql, Project::MSG_VERBOSE); + $this->execSQL($sql, $out); + $sql = ""; + $hasQuery = false; + + $parser['pointer'] = 0; + $parser['isInString'] = false; + $parser['stringQuotes'] = ""; + $parser['backslashCount'] = 0; + $parser['parsedString'] = ""; + $sqlParts = array(); + } + } + + // Catch any statements not followed by ; + if ($sql !== "") { + $this->execSQL($sql, $out); + } + } + + /** + * Exec the sql statement. + * + * @param sql + * @param out + * @throws PDOException + */ + protected function execSQL($sql, $out = null) + { + // Check and ignore empty statements + if (trim($sql) == "") { + return; + } + + try { + $this->totalSql++; + + if (!$this->autocommit) $this->conn->beginTransaction(); + + $stmt = $this->conn->prepare($sql); + $stmt->execute(); + $this->log($stmt->rowCount() . " rows affected", Project::MSG_VERBOSE); + + if (!$this->autocommit) $this->conn->commit(); + + $this->goodSql++; + } catch (PDOException $e) { + $this->log("Failed to execute: " . $sql, Project::MSG_ERR); + if ($this->onError != "continue") { + throw $e; + } + $this->log($e->getMessage(), Project::MSG_ERR); + } + } + + /** + * print any results in the statement. + * + * @param out + * @throws PDOException + */ + protected function printResults($out = null) + { + $rs = null; + + do { + $rs = $this->statement->getResultSet(); + + if ($rs !== null) { + + $this->log("Processing new result set.", Project::MSG_VERBOSE); + + $line = ""; + + $colsprinted = false; + + while ($rs->next()) { + + if (!$colsprinted && $this->showheaders) { + $first = true; + foreach ($this->fields as $fieldName => $ignore) { + if ($first) $first = false; else $line .= ","; + $line .= $fieldName; + } + } // if show headers + + $first = true; + foreach ($rs->fields as $columnValue) { + + if ($columnValue != null) { + $columnValue = trim($columnValue); + } + + if ($first) { + $first = false; + } else { + $line .= ","; + } + $line .= $columnValue; + } + + if ($out !== null) { + $out->write($line); + $out->newLine(); + } + + System::println($line); + $line = ""; + } // while rs->next() + } + } while ($this->statement->getMoreResults()); + System::println(); + if ($out !== null) $out->newLine(); + } + +} + +/** + * "Inner" class that contains the definition of a new transaction element. + * Transactions allow several files or blocks of statements + * to be executed using the same Creole connection and commit + * operation in between. + * @package propel.phing + */ +class PropelSQLExecTransaction { + + private $tSrcFile = null; + private $tSqlCommand = ""; + private $parent; + + function __construct($parent) + { + // Parent is required so that we can log things ... + $this->parent = $parent; + } + + public function setSrc(PhingFile $src) + { + $this->tSrcFile = $src; + } + + public function addText($sql) + { + $this->tSqlCommand .= $sql; + } + + /** + * @throws IOException, PDOException + */ + public function runTransaction($out = null) + { + if (!empty($this->tSqlCommand)) { + $this->parent->log("Executing commands", Project::MSG_INFO); + $this->parent->runStatements($this->tSqlCommand, $out); + } + + if ($this->tSrcFile !== null) { + $this->parent->log("Executing file: " . $this->tSrcFile->getAbsolutePath(), Project::MSG_INFO); + $reader = new FileReader($this->tSrcFile); + $this->parent->runStatements($reader, $out); + $reader->close(); + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelSQLTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelSQLTask.php new file mode 100644 index 0000000..9da5501 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelSQLTask.php @@ -0,0 +1,261 @@ +. + */ + +include_once 'propel/engine/database/model/AppData.php'; + +/** + * The task for building SQL DDL based on the XML datamodel. + * + * This class uses the new DDLBuilder classes instead of the Capsule PHP templates. + * + * @author Hans Lellelid + * @package propel.phing + */ +class PropelSQLTask extends AbstractPropelDataModelTask { + + /** + * The properties file that maps an SQL file to a particular database. + * @var PhingFile + */ + private $sqldbmap; + + /** + * Name of the database. + */ + private $database; + + /** + * Set the sqldbmap. + * @param PhingFile $sqldbmap The db map. + */ + public function setSqlDbMap(PhingFile $sqldbmap) + { + $this->sqldbmap = $sqldbmap; + } + + /** + * Get the sqldbmap. + * @return PhingFile $sqldbmap. + */ + public function getSqlDbMap() + { + return $this->sqldbmap; + } + + /** + * Set the database name. + * @param string $database + */ + public function setDatabase($database) + { + $this->database = $database; + } + + /** + * Get the database name. + * @return string + */ + public function getDatabase() + { + return $this->database; + } + + /** + * Create the sql -> database map. + * + * @throws IOException - if unable to store properties + */ + protected function createSqlDbMap() + { + if ($this->getSqlDbMap() === null) { + return; + } + + // Produce the sql -> database map + $sqldbmap = new Properties(); + + // Check to see if the sqldbmap has already been created. + if ($this->getSqlDbMap()->exists()) { + $sqldbmap->load($this->getSqlDbMap()); + } + + if ($this->packageObjectModel) { + // in this case we'll get the sql file name from the package attribute + $dataModels = $this->packageDataModels(); + foreach ($dataModels as $package => $dataModel) { + foreach ($dataModel->getDatabases() as $database) { + $name = ($package ? $package . '.' : '') . 'schema.xml'; + $sqlFile = $this->getMappedFile($name); + $sqldbmap->setProperty($sqlFile->getName(), $database->getName()); + } + } + } else { + // the traditional way is to map the schema.xml filenames + $dmMap = $this->getDataModelDbMap(); + foreach (array_keys($dmMap) as $dataModelName) { + $sqlFile = $this->getMappedFile($dataModelName); + if ($this->getDatabase() === null) { + $databaseName = $dmMap[$dataModelName]; + } else { + $databaseName = $this->getDatabase(); + } + $sqldbmap->setProperty($sqlFile->getName(), $databaseName); + } + } + + try { + $sqldbmap->store($this->getSqlDbMap(), "Sqlfile -> Database map"); + } catch (IOException $e) { + throw new IOException("Unable to store properties: ". $e->getMessage()); + } + } + + public function main() { + + $this->validate(); + + if (!$this->mapperElement) { + throw new BuildException("You must use a element to describe how names should be transformed."); + } + + if ($this->packageObjectModel) { + $dataModels = $this->packageDataModels(); + } else { + $dataModels = $this->getDataModels(); + } + + // 1) first create a map of filenames to databases; this is used by other tasks like + // the SQLExec task. + $this->createSqlDbMap(); + + // 2) Now actually create the DDL based on the datamodel(s) from XML schema file. + $targetDatabase = $this->getTargetDatabase(); + + $generatorConfig = $this->getGeneratorConfig(); + + $builderClazz = $generatorConfig->getBuilderClassname('ddl'); + + foreach ($dataModels as $package => $dataModel) { + + foreach ($dataModel->getDatabases() as $database) { + + // Clear any start/end DLL + call_user_func(array($builderClazz, 'reset')); + + // file we are going to create + if (!$this->packageObjectModel) { + $name = $dataModel->getName(); + } else { + $name = ($package ? $package . '.' : '') . 'schema.xml'; + } + + $outFile = $this->getMappedFile($name); + + $this->log("Writing to SQL file: " . $outFile->getPath()); + + // First add any "header" SQL + $ddl = call_user_func(array($builderClazz, 'getDatabaseStartDDL')); + + foreach ($database->getTables() as $table) { + + if (!$table->isSkipSql()) { + $builder = $generatorConfig->getConfiguredBuilder($table, 'ddl'); + $this->log("\t+ " . $table->getName() . " [builder: " . get_class($builder) . "]"); + $ddl .= $builder->build(); + foreach ($builder->getWarnings() as $warning) { + $this->log($warning, Project::MSG_WARN); + } + } else { + $this->log("\t + (skipping) " . $table->getName()); + } + + } // foreach database->getTables() + + // Finally check to see if there is any "footer" SQL + $ddl .= call_user_func(array($builderClazz, 'getDatabaseEndDDL')); + + #var_dump($outFile->getAbsolutePath()); + // Now we're done. Write the file! + file_put_contents($outFile->getAbsolutePath(), $ddl); + + } // foreach database + } //foreach datamodels + + } // main() + + /** + * Packages the datamodels to one datamodel per package + * + * This applies only when the the packageObjectModel option is set. We need to + * re-package the datamodels to allow the database package attribute to control + * which tables go into which SQL file. + * + * @return array The packaged datamodels + */ + protected function packageDataModels() { + + static $packagedDataModels; + + if (is_null($packagedDataModels)) { + + $dataModels = $this->getDataModels(); + $dataModel = array_shift($dataModels); + $packagedDataModels = array(); + + $platform = $this->getGeneratorConfig()->getConfiguredPlatform(); + + foreach ($dataModel->getDatabases() as $db) { + foreach ($db->getTables() as $table) { + $package = $table->getPackage(); + if (!isset($packagedDataModels[$package])) { + $dbClone = $this->cloneDatabase($db); + $dbClone->setPackage($package); + $ad = new AppData($platform); + $ad->setName($dataModel->getName()); + $ad->addDatabase($dbClone); + $packagedDataModels[$package] = $ad; + } + $packagedDataModels[$package]->getDatabase($db->getName())->addTable($table); + } + } + } + + return $packagedDataModels; + } + + protected function cloneDatabase($db) { + + $attributes = array ( + 'name' => $db->getName(), + 'baseClass' => $db->getBaseClass(), + 'basePeer' => $db->getBasePeer(), + 'defaultIdMethod' => $db->getDefaultIdMethod(), + 'defaultPhpNamingMethod' => $db->getDefaultPhpNamingMethod(), + 'defaultTranslateMethod' => $db->getDefaultTranslateMethod(), + 'heavyIndexing' => $db->getHeavyIndexing(), + ); + + $clone = new Database(); + $clone->loadFromXML($attributes); + return $clone; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelSchemaReverseTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelSchemaReverseTask.php new file mode 100644 index 0000000..bfedade --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelSchemaReverseTask.php @@ -0,0 +1,556 @@ +. + */ + +require_once 'phing/tasks/ext/pdo/PDOTask.php'; +include_once 'propel/engine/GeneratorConfig.php'; +include_once 'propel/engine/database/model/PropelTypes.php'; + +/** + * This class generates an XML schema of an existing database from + * the database metadata. + * + * @author Hans Lellelid + * @version $Revision: 945 $ + * @package propel.phing + */ +class PropelSchemaReverseTask extends PDOTask { + + /** + * Zero bit for no validators + */ + const VALIDATORS_NONE = 0; + + /** + * Bit for maxLength validator + */ + const VALIDATORS_MAXLENGTH = 1; + + /** + * Bit for maxValue validator + */ + const VALIDATORS_MAXVALUE = 2; + + /** + * Bit for type validator + */ + const VALIDATORS_TYPE = 4; + + /** + * Bit for required validator + */ + const VALIDATORS_REQUIRED = 8; + + /** + * Bit for unique validator + */ + const VALIDATORS_UNIQUE = 16; + + /** + * Bit for all validators + */ + const VALIDATORS_ALL = 255; + + /** + * File to contain XML database schema. + * @var PhingFIle + */ + protected $xmlSchema; + + /** + * DB encoding to use + * @var string + */ + protected $dbEncoding = 'iso-8859-1'; + + /** + * DB schema to use. + * @var string + */ + protected $dbSchema; + + /** + * The datasource name (used for in schema.xml) + * + * @var string + */ + protected $databaseName; + + /** + * DOM document produced. + * @var DOMDocument + */ + protected $doc; + + /** + * The document root element. + * @var DOMElement + */ + protected $databaseNode; + + /** + * Hashtable of columns that have primary keys. + * @var array + */ + protected $primaryKeys; + + /** + * Whether to use same name for phpName or not. + * @var boolean + */ + protected $samePhpName; + + /** + * whether to add vendor info or not + * @var boolean + */ + protected $addVendorInfo; + + /** + * Bitfield to switch on/off which validators will be created. + * + * @var int + */ + protected $validatorBits = PropelSchemaReverseTask::VALIDATORS_NONE; + + /** + * Collect validatorInfos to create validators. + * + * @var int + */ + protected $validatorInfos; + + /** + * An initialized GeneratorConfig object containing the converted Phing props. + * + * @var GeneratorConfig + */ + private $generatorConfig; + + /** + * Maps validator type tokens to bits + * + * The tokens are used in the propel.addValidators property to define + * which validators are to be added + * + * @var array + */ + static protected $validatorBitMap = array ( + 'none' => PropelSchemaReverseTask::VALIDATORS_NONE, + 'maxlength' => PropelSchemaReverseTask::VALIDATORS_MAXLENGTH, + 'maxvalue' => PropelSchemaReverseTask::VALIDATORS_MAXVALUE, + 'type' => PropelSchemaReverseTask::VALIDATORS_TYPE, + 'required' => PropelSchemaReverseTask::VALIDATORS_REQUIRED, + 'unique' => PropelSchemaReverseTask::VALIDATORS_UNIQUE, + 'all' => PropelSchemaReverseTask::VALIDATORS_ALL, + ); + + /** + * Defines messages that are added to validators + * + * @var array + */ + static protected $validatorMessages = array ( + 'maxlength' => array ( + 'msg' => 'The field %s must be not longer than %s characters.', + 'var' => array('colName', 'value') + ), + 'maxvalue' => array ( + 'msg' => 'The field %s must be not greater than %s.', + 'var' => array('colName', 'value') + ), + 'type' => array ( + 'msg' => 'The column %s must be an %s value.', + 'var' => array('colName', 'value') + ), + 'required' => array ( + 'msg' => 'The field %s is required.', + 'var' => array('colName') + ), + 'unique' => array ( + 'msg' => 'This %s already exists in table %s.', + 'var' => array('colName', 'tableName') + ), + ); + + /** + * Gets the (optional) schema name to use. + * + * @return string + */ + public function getDbSchema() + { + return $this->dbSchema; + } + + /** + * Sets the name of a database schema to use (optional). + * + * @param string $dbSchema + */ + public function setDbSchema($dbSchema) + { + $this->dbSchema = $dbSchema; + } + + /** + * Gets the database encoding. + * + * @return string + */ + public function getDbEncoding($v) + { + return $this->dbEncoding; + } + + /** + * Sets the database encoding. + * + * @param string $v + */ + public function setDbEncoding($v) + { + $this->dbEncoding = $v; + } + + /** + * Gets the datasource name. + * + * @return string + */ + public function getDatabaseName() + { + return $this->databaseName; + } + + /** + * Sets the datasource name. + * + * This will be used as the value in the generated schema.xml + * + * @param string $v + */ + public function setDatabaseName($v) + { + $this->databaseName = $v; + } + + /** + * Sets the output name for the XML file. + * + * @param PhingFile $v + */ + public function setOutputFile(PhingFile $v) + { + $this->xmlSchema = $v; + } + + /** + * Set whether to use the column name as phpName without any translation. + * + * @param boolean $v + */ + public function setSamePhpName($v) + { + $this->samePhpName = $v; + } + + /** + * Set whether to add vendor info to the schema. + * + * @param boolean $v + */ + public function setAddVendorInfo($v) + { + $this->addVendorInfo = (boolean) $v; + } + + /** + * Sets set validator bitfield from a comma-separated list of "validator bit" names. + * + * @param string $v The comma-separated list of which validators to add. + * @return void + */ + public function setAddValidators($v) + { + $validKeys = array_keys(self::$validatorBitMap); + + // lowercase input + $v = strtolower($v); + + $bits = self::VALIDATORS_NONE; + + $exprs = explode(',', $v); + foreach ($exprs as $expr) { + $expr = trim($expr); + if(!empty($expr)) { + if (!isset(self::$validatorBitMap[$expr])) { + throw new BuildException("Unable to interpret validator in expression ('$v'): " . $expr); + } + $bits |= self::$validatorBitMap[$expr]; + } + } + + $this->validatorBits = $bits; + } + + /** + * Checks whether to add validators of specified type or not + * + * @param int $type The validator type constant. + * @return boolean + */ + protected function isValidatorRequired($type) + { + return (($this->validatorBits & $type) === $type); + } + + /** + * Whether to use the column name as phpName without any translation. + * + * @return boolean + */ + public function isSamePhpName() + { + return $this->samePhpName; + } + + /** + * @throws BuildException + */ + public function main() + { + if (!$this->getDatabaseName()) { + throw new BuildException("databaseName attribute is required for schema reverse engineering", $this->getLocation()); + } + + //(not yet supported) $this->log("schema : " . $this->dbSchema); + //DocumentTypeImpl docType = new DocumentTypeImpl(null, "database", null, + // "http://jakarta.apache.org/turbine/dtd/database.dtd"); + + $this->doc = new DOMDocument('1.0', 'utf-8'); + $this->doc->formatOutput = true; // pretty printing + + $this->doc->appendChild($this->doc->createComment("Autogenerated by ".get_class($this)." class.")); + + try { + + $database = $this->buildModel(); + + if ($this->validatorBits !== self::VALIDATORS_NONE) { + $this->addValidators($database); + } + + $database->appendXml($this->doc); + + $this->log("Writing XML to file: " . $this->xmlSchema->getPath()); + $out = new FileWriter($this->xmlSchema); + $xmlstr = $this->doc->saveXML(); + $out->write($xmlstr); + $out->close(); + + } catch (Exception $e) { + $this->log("There was an error building XML from metadata: " . $e->getMessage(), Project::MSG_ERR); + } + + $this->log("Schema reverse engineering finished"); + } + + /** + * Gets the GeneratorConfig object for this task or creates it on-demand. + * @return GeneratorConfig + */ + protected function getGeneratorConfig() + { + if ($this->generatorConfig === null) { + $this->generatorConfig = new GeneratorConfig(); + $this->generatorConfig->setBuildProperties($this->getProject()->getProperties()); + } + return $this->generatorConfig; + } + + /** + * Builds the model classes from the database schema. + * @return Database The built-out Database (with all tables, etc.) + */ + protected function buildModel() + { + $config = $this->getGeneratorConfig(); + $con = $this->getConnection(); + + $database = new Database($this->getDatabaseName()); + $database->setPlatform($config->getConfiguredPlatform($con)); + + // Some defaults ... + $database->setDefaultIdMethod(IDMethod::NATIVE); + + $parser = $config->getConfiguredSchemaParser($con); + + $parser->parse($database); + + return $database; + } + + /** + * Adds any requested validators to the data model. + * + * We will add the following type specific validators: + * + * for notNull columns: required validator + * for unique indexes: unique validator + * for varchar types: maxLength validators (CHAR, VARCHAR, LONGVARCHAR) + * for numeric types: maxValue validators (BIGINT, SMALLINT, TINYINT, INTEGER, FLOAT, DOUBLE, NUMERIC, DECIMAL, REAL) + * for integer and timestamp types: notMatch validator with [^\d]+ (BIGINT, SMALLINT, TINYINT, INTEGER, TIMESTAMP) + * for float types: notMatch validator with [^\d\.]+ (FLOAT, DOUBLE, NUMERIC, DECIMAL, REAL) + * + * @param Database $database The Database model. + * @return void + * @todo find out how to evaluate the appropriate size and adjust maxValue rule values appropriate + * @todo find out if float type column values must always notMatch('[^\d\.]+'), i.e. digits and point for any db vendor, language etc. + */ + protected function addValidators(Database $database) + { + + $platform = $this->getGeneratorConfig()->getConfiguredPlatform(); + + foreach ($database->getTables() as $table) { + + $set = new PropelSchemaReverse_ValidatorSet(); + + foreach ($table->getColumns() as $col) { + + if ($col->isNotNull() && $this->isValidatorRequired(self::VALIDATORS_REQUIRED)) { + $validator = $set->getValidator($col); + $validator->addRule($this->getValidatorRule($col, 'required')); + } + + if (in_array($col->getType(), array(PropelTypes::CHAR, PropelTypes::VARCHAR, PropelTypes::LONGVARCHAR)) + && $col->getSize() && $this->isValidatorRequired(self::VALIDATORS_MAXLENGTH)) { + $validator = $set->getValidator($col); + $validator->addRule($this->getValidatorRule($col, 'maxLength', $col->getSize())); + } + + if ($col->isNumericType() && $this->isValidatorRequired(self::VALIDATORS_MAXVALUE)) { + $this->log("WARNING: maxValue validator added for column ".$col->getName().". You will have to adjust the size value manually.", Project::MSG_WARN); + $validator = $set->getValidator($col); + $validator->addRule($this->getValidatorRule($col, 'maxSize', 'REPLACEME')); + } + + if ($col->isPhpPrimitiveType() && $this->isValidatorRequired(self::VALIDATORS_TYPE)) { + $validator = $set->getValidator($col); + $validator->addRule($this->getValidatorRule($col, 'type', $col->getPhpType())); + } + + } + + foreach ($table->getUnices() as $unique) { + $colnames = $unique->getColumns(); + if (count($colnames) == 1) { // currently 'unique' validator only works w/ single columns. + $col = $table->getColumn($colnames[0]); + $validator = $set->getValidator($col); + $validator->addRule($this->getValidatorRule($col, 'unique')); + } + } + + foreach ($set->getValidators() as $validator) { + $table->addValidator($validator); + } + + } // foreach table + + } + + /** + * Gets validator rule for specified type (string). + * + * @param Column $column The column that is being validated. + * @param string $type The type (string) for validator (e.g. 'required'). + * @param mixed $value The value for the validator (if applicable) + */ + protected function getValidatorRule(Column $column, $type, $value = null) + { + $rule = new Rule(); + $rule->setName($type); + if ($value !== null) { + $rule->setValue($value); + } + $rule->setMessage($this->getRuleMessage($column, $type, $value)); + return $rule; + } + + /** + * Gets the message for a specified rule. + * + * @param Column $column + * @param string $type + * @param mixed $value + */ + protected function getRuleMessage(Column $column, $type, $value) + { + // create message + $colName = $column->getName(); + $tableName = $column->getTable()->getName(); + $msg = self::$validatorMessages[strtolower($type)]; + $tmp = compact($msg['var']); + array_unshift($tmp, $msg['msg']); + $msg = call_user_func_array('sprintf', $tmp); + return $msg; + } + +} + +/** + * A helper class to store validator sets indexed by column. + * @package propel.phing + */ +class PropelSchemaReverse_ValidatorSet { + + /** + * Map of column names to validators. + * + * @var array Validator[] + */ + private $validators = array(); + + /** + * Gets a single validator for specified column name. + * @param Column $column + * @return Validator + */ + public function getValidator(Column $column) + { + $key = $column->getName(); + if (!isset($this->validators[$key])) { + $this->validators[$key] = new Validator(); + $this->validators[$key]->setColumn($column); + } + return $this->validators[$key]; + } + + /** + * Gets all validators. + * @return array Validator[] + */ + public function getValidators() + { + return $this->validators; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/default.properties b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/default.properties new file mode 100644 index 0000000..ed96ec5 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/default.properties @@ -0,0 +1,264 @@ +# ------------------------------------------------------------------- +# +# D E F A U L T P R O P E R T I E S +# +# ------------------------------------------------------------------- +# This file sets default properties. You can override any of these +# by specifying your new value in the build.properties file for your +# project or a top-level build.properties file. Either way, you +# should not need to edit this file. +# ------------------------------------------------------------------- + + +# ------------------------------------------------------------------- +# +# B A S I C P R O P E R T I E S +# +# ------------------------------------------------------------------- + +propel.version = 1.4.2 + +propel.home = . + +propel.project = +propel.database = +propel.targetPackage = ${propel.project} +propel.runOnlyOnSchemaChange = false + +# Default behavior settings +# +propel.targetPlatform = php5 +propel.packageObjectModel = false +propel.schema.validate = true +propel.useDateTimeClass = true +propel.dateTimeClass = DateTime + +# controls what type of joins will be used in the doSelectJoin*() peer methods, +# if set to true, LEFT JOINS will be used, INNER JOINS otherwise +# see ticket #491, #588 +propel.useLeftJoinsInDoJoinMethods = true + +# ------------------------------------------------------------------- +# +# D A T A B A S E S E T T I N G S +# +# ------------------------------------------------------------------- + +propel.database.url = +propel.database.buildUrl = ${propel.database.url} +propel.database.createUrl = ${propel.database.buildUrl} + +propel.database.driver = + +propel.database.schema = +propel.database.encoding = +propel.database.manualCreation = false + +# if these arent blank then when we try to connect with insert-sql to a database +# that doesnt require them and it isnt in the build.properties it sends +# the ${blah} for the username and password +propel.database.user = +propel.database.password = + +# Creole database settings for reverse engineering applications +# ------------------------------------------------------------- + +# by default leave the databaseDriver blank, so that bundled driver is used by Creole +propel.database.creole.driver = +propel.database.creole.url = + +# ------------------------------------------------------------------- +# +# C R E O L E TO X M L S E T T I N G S +# +# ------------------------------------------------------------------- + +propel.samePhpName = false +propel.addVendorInfo = false +propel.addValidators = none + +# ------------------------------------------------------------------- +# +# T E M P L A T E V A R I A B L E S +# +# ------------------------------------------------------------------- + +propel.addGenericAccessors = false +propel.addGenericMutators = false +propel.addSaveMethod = true +propel.addTimeStamp = false +propel.addValidateMethod = true +propel.addIncludes = true +propel.addHooks = true +propel.basePrefix = Base +propel.saveException = PropelException +propel.emulateForeignKeyConstraints = false + +# Identifier quoting is only implemented at the DDL layer at this point. +# Since this may result in undesired behavior (especially in Postgres), +# it can be disabled by setting this property to true in your build.properties file. +propel.disableIdentifierQuoting = false + +# These are the default formats that will be used when fetching values +# from temporal columns in Propel. You can always specify these when +# calling the methods directly, but for methods like getByName() +# it is nice to change the defaults. + +propel.defaultTimeStampFormat = Y-m-d H:i:s +propel.defaultTimeFormat = %X +propel.defaultDateFormat = %x + +propel.omtar.src.base = false +propel.omtar.src.extension = false +propel.omtar.bin.base = false +propel.omtar.bin.extension = false +propel.omtar.deleteFiles = false + + +# ------------------------------------------------------------------- +# +# C O N T R O L T E M P L A T E S +# +# ------------------------------------------------------------------- +# +# This is a deprecated idea, that will almost certainly be completely +# removed in Propel 1.2 and/or 2.0. +# + +propel.template.conf = ${propel.home}/templates/conf/Control.tpl +propel.template.sql = ${propel.home}/templates/sql/base/Control.tpl +propel.template.sqlDbInit = ${propel.home}/templates/sql/db-init/Control.tpl + + +# ------------------------------------------------------------------- +# +# D I R E C T O R I E S +# +# ------------------------------------------------------------------- + +propel.project.dir = ${propel.home}/projects/${propel.project} + +propel.output.dir = ${propel.project.dir}/build +propel.schema.dir = ${propel.project.dir} +propel.templatePath = ${propel.home}/templates +propel.conf.dir = ${propel.project.dir} + +propel.doc.dir = ${propel.output.dir}/doc +propel.php.dir = ${propel.output.dir}/classes +propel.phpconf.dir = ${propel.output.dir}/conf +propel.phpdoc.dir = ${propel.output.dir}/phpdoc +propel.sql.dir = ${propel.output.dir}/sql +propel.graph.dir = ${propel.output.dir}/graph +propel.omtar.dir = ${propel.output.dir} + + +# ------------------------------------------------------------------- +# +# D E F A U L T F I L E N A M ES +# +# ------------------------------------------------------------------- + +# propel.sqlfile + +propel.runtime.conf.file = runtime-conf.xml +propel.runtime.phpconf.file = ${propel.project}-conf.php +propel.runtime.phpconf-classmap.file = ${propel.project}-classmap.php +propel.default.schema.basename = schema + +# Can't use because of inconsistencies in where the files +# are named (some from build-propel.xml, but some from within templates) +# propel.default.data.basename = ${propel.project}-data + +propel.schema.xsd.file = ${propel.home}/resources/xsd/database.xsd +propel.schema.xsl.file = ${propel.home}/resources/xsl/database.xsl + +# ------------------------------------------------------------------- +# +# I N C L U D E A N D E X C L U D E S E T T I N G S +# +# ------------------------------------------------------------------- + +propel.schema.sql.includes = *schema.xml +propel.schema.sql.excludes = +propel.schema.doc.includes = *schema.xml +propel.schema.doc.excludes = +propel.schema.create-db.includes = *schema.xml +propel.schema.create-db.excludes = +propel.schema.init-sql.includes = *schema.xml +propel.schema.init-sql.excludes = id-table-schema.xml +propel.schema.om.includes = *schema.xml +propel.schema.om.excludes = id-table-schema.xml +propel.schema.datadtd.includes = *schema.xml +propel.schema.datadtd.excludes = id-table-schema.xml + +# ------------------------------------------------------------------- +# +# M A P P E R S E T T I N G S +# +# ------------------------------------------------------------------- + +# (note: data xml files are selected based on datadbmap file) +propel.datasql.mapper.from = *.xml +propel.datasql.mapper.to = *.sql + +propel.datadump.mapper.from = *schema.xml +propel.datadump.mapper.to = *data.xml + +propel.datadtd.mapper.from = *.xml +propel.datadtd.mapper.to = *.dtd + +propel.sql.mapper.from = *.xml +propel.sql.mapper.to = *.sql + + +# ------------------------------------------------------------------- +# +# B U I L D E R S E T T I N G S +# +# ------------------------------------------------------------------- + +# Object Model builders +propel.builder.peer.class = propel.engine.builder.om.php5.PHP5PeerBuilder +propel.builder.object.class = propel.engine.builder.om.php5.PHP5ObjectBuilder +propel.builder.objectstub.class = propel.engine.builder.om.php5.PHP5ExtensionObjectBuilder +propel.builder.peerstub.class = propel.engine.builder.om.php5.PHP5ExtensionPeerBuilder + +propel.builder.objectmultiextend.class = propel.engine.builder.om.php5.PHP5MultiExtendObjectBuilder + +propel.builder.tablemap.class = propel.engine.builder.om.php5.PHP5TableMapBuilder + +propel.builder.interface.class = propel.engine.builder.om.php5.PHP5InterfaceBuilder + +propel.builder.node.class = propel.engine.builder.om.php5.PHP5NodeBuilder +propel.builder.nodepeer.class = propel.engine.builder.om.php5.PHP5NodePeerBuilder +propel.builder.nodestub.class = propel.engine.builder.om.php5.PHP5ExtensionNodeBuilder +propel.builder.nodepeerstub.class = propel.engine.builder.om.php5.PHP5ExtensionNodePeerBuilder + +propel.builder.nestedset.class = propel.engine.builder.om.php5.PHP5NestedSetBuilder +propel.builder.nestedsetpeer.class = propel.engine.builder.om.php5.PHP5NestedSetPeerBuilder + +propel.builder.pluralizer.class = propel.engine.builder.util.DefaultEnglishPluralizer + +# SQL builders + +propel.builder.ddl.class = propel.engine.builder.sql.${propel.database}.${propel.database}DDLBuilder +propel.builder.datasql.class = propel.engine.builder.sql.${propel.database}.${propel.database}DataSQLBuilder + +# Platform classes + +propel.platform.class = propel.engine.platform.${propel.database}Platform + +# Schema Parser (reverse-engineering) classes + +propel.reverse.parser.class = propel.engine.database.reverse.${propel.database}.${propel.database}SchemaParser + +# ------------------------------------------------------------------- +# +# B E H A V I O R S E T T I N G S +# +# ------------------------------------------------------------------- + +propel.behavior.timestampable.class = propel.engine.behavior.TimestampableBehavior +propel.behavior.alternative_coding_standards.class = propel.engine.behavior.AlternativeCodingStandardsBehavior +propel.behavior.soft_delete.class = propel.engine.behavior.SoftDeleteBehavior +propel.behavior.auto_add_pk.class = propel.engine.behavior.AutoAddPkBehavior diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/.svn/all-wcprops new file mode 100644 index 0000000..35f9b5c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/.svn/all-wcprops @@ -0,0 +1,41 @@ +K 25 +svn:wc:ra_dav:version-url +V 40 +/!svn/ver/1750/tags/1.4.2/generator/pear +END +pear-propel-gen.bat +K 25 +svn:wc:ra_dav:version-url +V 60 +/!svn/ver/1695/tags/1.4.2/generator/pear/pear-propel-gen.bat +END +pear-build.xml +K 25 +svn:wc:ra_dav:version-url +V 55 +/!svn/ver/1695/tags/1.4.2/generator/pear/pear-build.xml +END +BuildPropelGenPEARPackageTask.php +K 25 +svn:wc:ra_dav:version-url +V 74 +/!svn/ver/1750/tags/1.4.2/generator/pear/BuildPropelGenPEARPackageTask.php +END +build.properties +K 25 +svn:wc:ra_dav:version-url +V 57 +/!svn/ver/1695/tags/1.4.2/generator/pear/build.properties +END +build-pear-package.xml +K 25 +svn:wc:ra_dav:version-url +V 63 +/!svn/ver/1695/tags/1.4.2/generator/pear/build-pear-package.xml +END +pear-propel-gen +K 25 +svn:wc:ra_dav:version-url +V 56 +/!svn/ver/1695/tags/1.4.2/generator/pear/pear-propel-gen +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/.svn/entries new file mode 100644 index 0000000..33b25a3 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/.svn/entries @@ -0,0 +1,232 @@ +10 + +dir +2332 +http://propel.mirror.svn.symfony-project.com/tags/1.4.2/generator/pear +http://propel.mirror.svn.symfony-project.com + + + +2010-05-09T12:33:47.303712Z +1750 +francois + + + + + + + + + + + + + + +a84bc4f6-26e8-416f-aa96-3cde13879fbb + +pear-propel-gen.bat +file + + + + +2012-05-10T18:42:14.545552Z +1dc3009a41408e9014acebb3662f2208 +2010-02-15T22:12:18.681631Z +1558 +francois + + + + + + + + + + + + + + + + + + + + + +1098 + +pear-build.xml +file + + + + +2012-05-10T18:42:14.545552Z +40bf58e043d9d754c74a9a166e0e0ac0 +2010-01-29T14:48:28.317517Z +1508 +francois +has-props + + + + + + + + + + + + + + + + + + + + +4092 + +BuildPropelGenPEARPackageTask.php +file + + + + +2012-05-10T18:42:14.545552Z +a6d8e0bd9c69c2d77b81450bd7d3d700 +2010-05-09T12:33:47.303712Z +1750 +francois +has-props + + + + + + + + + + + + + + + + + + + + +9133 + +build.properties +file + + + + +2012-05-10T18:42:14.549552Z +da9e91d834c420feb06f86d7989ceb83 +2007-01-01T19:45:13.156040Z +505 +heltem +has-props + + + + + + + + + + + + + + + + + + + + +249 + +build-pear-package.xml +file + + + + +2012-05-10T18:42:14.569551Z +469ae53be9a9c4372c62329e14ce3da3 +2010-01-29T14:48:28.317517Z +1508 +francois +has-props + + + + + + + + + + + + + + + + + + + + +4717 + +pear-propel-gen +file + + + + +2012-05-10T18:42:14.581965Z +57a28b9e1871e1cb7d34421acf964680 +2010-02-08T22:20:47.557608Z +1537 +francois + + + + + + + + + + + + + + + + + + + + + +762 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/.svn/prop-base/BuildPropelGenPEARPackageTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/.svn/prop-base/BuildPropelGenPEARPackageTask.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/.svn/prop-base/BuildPropelGenPEARPackageTask.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/.svn/prop-base/build-pear-package.xml.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/.svn/prop-base/build-pear-package.xml.svn-base new file mode 100644 index 0000000..33acb99 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/.svn/prop-base/build-pear-package.xml.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/.svn/prop-base/build.properties.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/.svn/prop-base/build.properties.svn-base new file mode 100644 index 0000000..33acb99 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/.svn/prop-base/build.properties.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/.svn/prop-base/pear-build.xml.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/.svn/prop-base/pear-build.xml.svn-base new file mode 100644 index 0000000..33acb99 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/.svn/prop-base/pear-build.xml.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/.svn/text-base/BuildPropelGenPEARPackageTask.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/.svn/text-base/BuildPropelGenPEARPackageTask.php.svn-base new file mode 100644 index 0000000..e41c38d --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/.svn/text-base/BuildPropelGenPEARPackageTask.php.svn-base @@ -0,0 +1,270 @@ +. + */ + +require_once 'phing/tasks/system/MatchingTask.php'; +include_once 'phing/types/FileSet.php'; +include_once 'phing/tasks/ext/pearpackage/Fileset.php'; + +/** + * + * @author Hans Lellelid + * @package phing.tasks.ext + * @version $Revision$ + */ +class BuildPropelGenPEARPackageTask extends MatchingTask { + + /** Base directory for reading files. */ + private $dir; + + private $version; + private $state = 'stable'; + private $notes; + + private $filesets = array(); + + /** Package file */ + private $packageFile; + + public function init() { + include_once 'PEAR/PackageFileManager2.php'; + if (!class_exists('PEAR_PackageFileManager2')) { + throw new BuildException("You must have installed PEAR_PackageFileManager2 (PEAR_PackageFileManager >= 1.6.0) in order to create a PEAR package.xml file."); + } + } + + private function setOptions($pkg){ + + $options['baseinstalldir'] = 'propel'; + $options['packagedirectory'] = $this->dir->getAbsolutePath(); + + if (empty($this->filesets)) { + throw new BuildException("You must use a tag to specify the files to include in the package.xml"); + } + + $options['filelistgenerator'] = 'Fileset'; + + // Some PHING-specific options needed by our Fileset reader + $options['phing_project'] = $this->getProject(); + $options['phing_filesets'] = $this->filesets; + + if ($this->packageFile !== null) { + // create one w/ full path + $f = new PhingFile($this->packageFile->getAbsolutePath()); + $options['packagefile'] = $f->getName(); + // must end in trailing slash + $options['outputdirectory'] = $f->getParent() . DIRECTORY_SEPARATOR; + $this->log("Creating package file: " . $f->getPath(), Project::MSG_INFO); + } else { + $this->log("Creating [default] package.xml file in base directory.", Project::MSG_INFO); + } + + // add install exceptions + $options['installexceptions'] = array( 'pear/pear-propel-gen' => '/', + 'pear/pear-propel-gen.bat' => '/', + 'pear/pear-build.xml' => '/', + 'pear/build.properties' => '/', + ); + + $options['dir_roles'] = array( 'projects' => 'data', + 'test' => 'test', + 'templates' => 'data', + 'resources' => 'data'); + + $options['exceptions'] = array( 'pear/pear-propel-gen.bat' => 'script', + 'pear/pear-propel-gen' => 'script', + 'pear/pear-build.xml' => 'data', + 'build.xml' => 'data', + 'build-propel.xml' => 'data', + ); + + $pkg->setOptions($options); + + } + + /** + * Main entry point. + * @return void + */ + public function main() { + + if ($this->dir === null) { + throw new BuildException("You must specify the \"dir\" attribute for PEAR package task."); + } + + if ($this->version === null) { + throw new BuildException("You must specify the \"version\" attribute for PEAR package task."); + } + + $package = new PEAR_PackageFileManager2(); + + $this->setOptions($package); + + // the hard-coded stuff + $package->setPackage('propel_generator'); + $package->setSummary('Generator component of the Propel PHP object persistence layer'); + $package->setDescription('Propel is an object persistence layer for PHP5 based on Apache Torque. This package provides the generator engine that builds PHP classes and SQL DDL based on an XML representation of your data model.'); + $package->setChannel('pear.propelorm.org'); + $package->setPackageType('php'); + + $package->setReleaseVersion($this->version); + $package->setAPIVersion($this->version); + + $package->setReleaseStability($this->state); + $package->setAPIStability($this->state); + + $package->setNotes($this->notes); + + $package->setLicense('LGPL', 'http://www.gnu.org/licenses/lgpl.html'); + + // Add package maintainers + $package->addMaintainer('lead', 'hans', 'Hans Lellelid', 'hans@xmpl.org'); + $package->addMaintainer('lead', 'david', 'David Zuelke', 'dz@bitxtender.com'); + $package->addMaintainer('lead', 'francois', 'Francois Zaninotto', 'fzaninotto@[gmail].com'); + + // (wow ... this is a poor design ...) + // + // note that the order of the method calls below is creating + // sub-"release" sections which have specific rules. This replaces + // the platformexceptions system in the older version of PEAR's package.xml + // + // Programmatically, I feel the need to re-iterate that this API for PEAR_PackageFileManager + // seems really wrong. Sub-sections should be encapsulated in objects instead of having + // a "flat" API that does not represent the structure being created.... + + + // creating a sub-section for 'windows' + $package->addRelease(); + $package->setOSInstallCondition('windows'); + $package->addInstallAs('pear/pear-propel-gen.bat', 'propel-gen.bat'); + $package->addIgnoreToRelease('pear/pear-propel-gen'); + + // creating a sub-section for non-windows + $package->addRelease(); + $package->addInstallAs('pear/pear-propel-gen', 'propel-gen'); + $package->addIgnoreToRelease('pear/pear-propel-gen.bat'); + + + // "core" dependencies + $package->setPhpDep('5.2.4'); + $package->setPearinstallerDep('1.4.0'); + + // "package" dependencies + $package->addPackageDepWithChannel( 'required', 'phing', 'pear.phing.info', '2.3.0'); + + $package->addExtensionDep('required', 'pdo'); + $package->addExtensionDep('required', 'xml'); + $package->addExtensionDep('required', 'xsl'); + + // now add the replacements .... + $package->addReplacement('Phing.php', 'pear-config', '@DATA-DIR@', 'data_dir'); + $package->addReplacement('pear/pear-propel-gen.bat', 'pear-config', '@PHP-BIN@', 'php_bin'); + $package->addReplacement('pear/pear-propel-gen.bat', 'pear-config', '@BIN-DIR@', 'bin_dir'); + $package->addReplacement('pear/pear-propel-gen.bat', 'pear-config', '@PEAR-DIR@', 'php_dir'); + $package->addReplacement('pear/pear-propel-gen.bat', 'pear-config', '@DATA-DIR@', 'data_dir'); + + $package->addReplacement('pear/pear-propel-gen', 'pear-config', '@PHP-BIN@', 'php_bin'); + $package->addReplacement('pear/pear-propel-gen', 'pear-config', '@BIN-DIR@', 'bin_dir'); + $package->addReplacement('pear/pear-propel-gen', 'pear-config', '@PEAR-DIR@', 'php_dir'); + $package->addReplacement('pear/pear-propel-gen', 'pear-config', '@DATA-DIR@', 'data_dir'); + + $package->addReplacement('pear/pear-build.xml', 'pear-config', '@PHP-BIN@', 'php_bin'); + $package->addReplacement('pear/pear-build.xml', 'pear-config', '@BIN-DIR@', 'bin_dir'); + $package->addReplacement('pear/pear-build.xml', 'pear-config', '@PEAR-DIR@', 'php_dir'); + $package->addReplacement('pear/pear-build.xml', 'pear-config', '@DATA-DIR@', 'data_dir'); + + + // now we run this weird generateContents() method that apparently + // is necessary before we can add replacements ... ? + $package->generateContents(); + + $e = $package->writePackageFile(); + + if (PEAR::isError($e)) { + throw new BuildException("Unable to write package file.", new Exception($e->getMessage())); + } + + } + + /** + * Used by the PEAR_PackageFileManager_PhingFileSet lister. + * @return array FileSet[] + */ + public function getFileSets() { + return $this->filesets; + } + + // ------------------------------- + // Set properties from XML + // ------------------------------- + + /** + * Nested creator, creates a FileSet for this task + * + * @return FileSet The created fileset object + */ + function createFileSet() { + $num = array_push($this->filesets, new FileSet()); + return $this->filesets[$num-1]; + } + + /** + * Set the version we are building. + * @param string $v + * @return void + */ + public function setVersion($v){ + $this->version = $v; + } + + /** + * Set the state we are building. + * @param string $v + * @return void + */ + public function setState($v) { + $this->state = $v; + } + + /** + * Sets release notes field. + * @param string $v + * @return void + */ + public function setNotes($v) { + $this->notes = $v; + } + /** + * Sets "dir" property from XML. + * @param PhingFile $f + * @return void + */ + public function setDir(PhingFile $f) { + $this->dir = $f; + } + + /** + * Sets the file to use for generated package.xml + */ + public function setDestFile(PhingFile $f) { + $this->packageFile = $f; + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/.svn/text-base/build-pear-package.xml.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/.svn/text-base/build-pear-package.xml.svn-base new file mode 100644 index 0000000..691134a --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/.svn/text-base/build-pear-package.xml.svn-base @@ -0,0 +1,143 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Propel version for package + + + + + + + + + ----------------------------- + | Creating directory layout | + ----------------------------- + + + + + + + + + + + + + + + + + + + + + ----------------------------- + | Creating PEAR package.xml | + ----------------------------- + + + + + + + + + + + + + + + ----------------------------- + | Creating tar.gz package | + ----------------------------- + + + + + + \ No newline at end of file diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/.svn/text-base/build.properties.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/.svn/text-base/build.properties.svn-base new file mode 100644 index 0000000..fe317e4 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/.svn/text-base/build.properties.svn-base @@ -0,0 +1,5 @@ +# In this file you can define any properties taht you want to affect +# all projects built using the propel-gen script on this system +# +# See http://propel.phpdb.org/trac/wiki/Users/Documentation/BuildProperties for a +# list of available properties. diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/.svn/text-base/pear-build.xml.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/.svn/text-base/pear-build.xml.svn-base new file mode 100644 index 0000000..89be4fc --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/.svn/text-base/pear-build.xml.svn-base @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Processing additional properties file: ${additional.properties} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/.svn/text-base/pear-propel-gen.bat.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/.svn/text-base/pear-propel-gen.bat.svn-base new file mode 100644 index 0000000..c6c4535 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/.svn/text-base/pear-propel-gen.bat.svn-base @@ -0,0 +1,24 @@ +@ECHO OFF + +::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:: The propel-gen build script for Windows based systems +:: $Id: pear-propel-gen.bat,v 1.2 2004/10/17 13:24:09 hlellelid Exp $ +::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +::---------------------------------------------------------------------------------- +:: Please set following to the "phing" script. By default this is expected to be +:: on your path. (You don't need to modify this file if that is the case.) + + SET phingScript=phing + +::--------------------------------------------------------------------------------- +::--------------------------------------------------------------------------------- +:: Do not modify below this line!! (Unless you know what your doing :) +::--------------------------------------------------------------------------------- +::--------------------------------------------------------------------------------- + +"%phingScript%" -f "@DATA-DIR@\propel_generator\pear-build.xml" -Dproject.dir=%* +GOTO :EOF + +:PAUSE_END +PAUSE \ No newline at end of file diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/.svn/text-base/pear-propel-gen.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/.svn/text-base/pear-propel-gen.svn-base new file mode 100644 index 0000000..588c107 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/.svn/text-base/pear-propel-gen.svn-base @@ -0,0 +1,18 @@ +#!/bin/sh + +# ------------------------------------------------------------------------ +# The phing build script for Unix based systems +# $Id: pear-propel-gen,v 1.2 2004/10/17 13:24:09 hlellelid Exp $ +# ------------------------------------------------------------------------ + +# ------------------------------------------------------------------------- +# Do not change anything below this line unless you know what you're doing. +# ------------------------------------------------------------------------- + +# (currently this is not reached) +if (test -z "$PHING_COMMAND") ; then + echo "WARNING: PHP_COMMAND environment not set. (Assuming phing on PATH)" + export PHING_COMMAND="phing" +fi + +$PHING_COMMAND -f @DATA-DIR@/propel_generator/pear-build.xml -Dproject.dir=$* diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/BuildPropelGenPEARPackageTask.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/BuildPropelGenPEARPackageTask.php new file mode 100644 index 0000000..025f0de --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/BuildPropelGenPEARPackageTask.php @@ -0,0 +1,270 @@ +. + */ + +require_once 'phing/tasks/system/MatchingTask.php'; +include_once 'phing/types/FileSet.php'; +include_once 'phing/tasks/ext/pearpackage/Fileset.php'; + +/** + * + * @author Hans Lellelid + * @package phing.tasks.ext + * @version $Revision: 1750 $ + */ +class BuildPropelGenPEARPackageTask extends MatchingTask { + + /** Base directory for reading files. */ + private $dir; + + private $version; + private $state = 'stable'; + private $notes; + + private $filesets = array(); + + /** Package file */ + private $packageFile; + + public function init() { + include_once 'PEAR/PackageFileManager2.php'; + if (!class_exists('PEAR_PackageFileManager2')) { + throw new BuildException("You must have installed PEAR_PackageFileManager2 (PEAR_PackageFileManager >= 1.6.0) in order to create a PEAR package.xml file."); + } + } + + private function setOptions($pkg){ + + $options['baseinstalldir'] = 'propel'; + $options['packagedirectory'] = $this->dir->getAbsolutePath(); + + if (empty($this->filesets)) { + throw new BuildException("You must use a tag to specify the files to include in the package.xml"); + } + + $options['filelistgenerator'] = 'Fileset'; + + // Some PHING-specific options needed by our Fileset reader + $options['phing_project'] = $this->getProject(); + $options['phing_filesets'] = $this->filesets; + + if ($this->packageFile !== null) { + // create one w/ full path + $f = new PhingFile($this->packageFile->getAbsolutePath()); + $options['packagefile'] = $f->getName(); + // must end in trailing slash + $options['outputdirectory'] = $f->getParent() . DIRECTORY_SEPARATOR; + $this->log("Creating package file: " . $f->getPath(), Project::MSG_INFO); + } else { + $this->log("Creating [default] package.xml file in base directory.", Project::MSG_INFO); + } + + // add install exceptions + $options['installexceptions'] = array( 'pear/pear-propel-gen' => '/', + 'pear/pear-propel-gen.bat' => '/', + 'pear/pear-build.xml' => '/', + 'pear/build.properties' => '/', + ); + + $options['dir_roles'] = array( 'projects' => 'data', + 'test' => 'test', + 'templates' => 'data', + 'resources' => 'data'); + + $options['exceptions'] = array( 'pear/pear-propel-gen.bat' => 'script', + 'pear/pear-propel-gen' => 'script', + 'pear/pear-build.xml' => 'data', + 'build.xml' => 'data', + 'build-propel.xml' => 'data', + ); + + $pkg->setOptions($options); + + } + + /** + * Main entry point. + * @return void + */ + public function main() { + + if ($this->dir === null) { + throw new BuildException("You must specify the \"dir\" attribute for PEAR package task."); + } + + if ($this->version === null) { + throw new BuildException("You must specify the \"version\" attribute for PEAR package task."); + } + + $package = new PEAR_PackageFileManager2(); + + $this->setOptions($package); + + // the hard-coded stuff + $package->setPackage('propel_generator'); + $package->setSummary('Generator component of the Propel PHP object persistence layer'); + $package->setDescription('Propel is an object persistence layer for PHP5 based on Apache Torque. This package provides the generator engine that builds PHP classes and SQL DDL based on an XML representation of your data model.'); + $package->setChannel('pear.propelorm.org'); + $package->setPackageType('php'); + + $package->setReleaseVersion($this->version); + $package->setAPIVersion($this->version); + + $package->setReleaseStability($this->state); + $package->setAPIStability($this->state); + + $package->setNotes($this->notes); + + $package->setLicense('LGPL', 'http://www.gnu.org/licenses/lgpl.html'); + + // Add package maintainers + $package->addMaintainer('lead', 'hans', 'Hans Lellelid', 'hans@xmpl.org'); + $package->addMaintainer('lead', 'david', 'David Zuelke', 'dz@bitxtender.com'); + $package->addMaintainer('lead', 'francois', 'Francois Zaninotto', 'fzaninotto@[gmail].com'); + + // (wow ... this is a poor design ...) + // + // note that the order of the method calls below is creating + // sub-"release" sections which have specific rules. This replaces + // the platformexceptions system in the older version of PEAR's package.xml + // + // Programmatically, I feel the need to re-iterate that this API for PEAR_PackageFileManager + // seems really wrong. Sub-sections should be encapsulated in objects instead of having + // a "flat" API that does not represent the structure being created.... + + + // creating a sub-section for 'windows' + $package->addRelease(); + $package->setOSInstallCondition('windows'); + $package->addInstallAs('pear/pear-propel-gen.bat', 'propel-gen.bat'); + $package->addIgnoreToRelease('pear/pear-propel-gen'); + + // creating a sub-section for non-windows + $package->addRelease(); + $package->addInstallAs('pear/pear-propel-gen', 'propel-gen'); + $package->addIgnoreToRelease('pear/pear-propel-gen.bat'); + + + // "core" dependencies + $package->setPhpDep('5.2.4'); + $package->setPearinstallerDep('1.4.0'); + + // "package" dependencies + $package->addPackageDepWithChannel( 'required', 'phing', 'pear.phing.info', '2.3.0'); + + $package->addExtensionDep('required', 'pdo'); + $package->addExtensionDep('required', 'xml'); + $package->addExtensionDep('required', 'xsl'); + + // now add the replacements .... + $package->addReplacement('Phing.php', 'pear-config', '@DATA-DIR@', 'data_dir'); + $package->addReplacement('pear/pear-propel-gen.bat', 'pear-config', '@PHP-BIN@', 'php_bin'); + $package->addReplacement('pear/pear-propel-gen.bat', 'pear-config', '@BIN-DIR@', 'bin_dir'); + $package->addReplacement('pear/pear-propel-gen.bat', 'pear-config', '@PEAR-DIR@', 'php_dir'); + $package->addReplacement('pear/pear-propel-gen.bat', 'pear-config', '@DATA-DIR@', 'data_dir'); + + $package->addReplacement('pear/pear-propel-gen', 'pear-config', '@PHP-BIN@', 'php_bin'); + $package->addReplacement('pear/pear-propel-gen', 'pear-config', '@BIN-DIR@', 'bin_dir'); + $package->addReplacement('pear/pear-propel-gen', 'pear-config', '@PEAR-DIR@', 'php_dir'); + $package->addReplacement('pear/pear-propel-gen', 'pear-config', '@DATA-DIR@', 'data_dir'); + + $package->addReplacement('pear/pear-build.xml', 'pear-config', '@PHP-BIN@', 'php_bin'); + $package->addReplacement('pear/pear-build.xml', 'pear-config', '@BIN-DIR@', 'bin_dir'); + $package->addReplacement('pear/pear-build.xml', 'pear-config', '@PEAR-DIR@', 'php_dir'); + $package->addReplacement('pear/pear-build.xml', 'pear-config', '@DATA-DIR@', 'data_dir'); + + + // now we run this weird generateContents() method that apparently + // is necessary before we can add replacements ... ? + $package->generateContents(); + + $e = $package->writePackageFile(); + + if (PEAR::isError($e)) { + throw new BuildException("Unable to write package file.", new Exception($e->getMessage())); + } + + } + + /** + * Used by the PEAR_PackageFileManager_PhingFileSet lister. + * @return array FileSet[] + */ + public function getFileSets() { + return $this->filesets; + } + + // ------------------------------- + // Set properties from XML + // ------------------------------- + + /** + * Nested creator, creates a FileSet for this task + * + * @return FileSet The created fileset object + */ + function createFileSet() { + $num = array_push($this->filesets, new FileSet()); + return $this->filesets[$num-1]; + } + + /** + * Set the version we are building. + * @param string $v + * @return void + */ + public function setVersion($v){ + $this->version = $v; + } + + /** + * Set the state we are building. + * @param string $v + * @return void + */ + public function setState($v) { + $this->state = $v; + } + + /** + * Sets release notes field. + * @param string $v + * @return void + */ + public function setNotes($v) { + $this->notes = $v; + } + /** + * Sets "dir" property from XML. + * @param PhingFile $f + * @return void + */ + public function setDir(PhingFile $f) { + $this->dir = $f; + } + + /** + * Sets the file to use for generated package.xml + */ + public function setDestFile(PhingFile $f) { + $this->packageFile = $f; + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/build-pear-package.xml b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/build-pear-package.xml new file mode 100644 index 0000000..691134a --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/build-pear-package.xml @@ -0,0 +1,143 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Propel version for package + + + + + + + + + ----------------------------- + | Creating directory layout | + ----------------------------- + + + + + + + + + + + + + + + + + + + + + ----------------------------- + | Creating PEAR package.xml | + ----------------------------- + + + + + + + + + + + + + + + ----------------------------- + | Creating tar.gz package | + ----------------------------- + + + + + + \ No newline at end of file diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/build.properties b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/build.properties new file mode 100644 index 0000000..fe317e4 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/build.properties @@ -0,0 +1,5 @@ +# In this file you can define any properties taht you want to affect +# all projects built using the propel-gen script on this system +# +# See http://propel.phpdb.org/trac/wiki/Users/Documentation/BuildProperties for a +# list of available properties. diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/pear-build.xml b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/pear-build.xml new file mode 100644 index 0000000..89be4fc --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/pear-build.xml @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Processing additional properties file: ${additional.properties} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/pear-propel-gen b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/pear-propel-gen new file mode 100644 index 0000000..588c107 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/pear-propel-gen @@ -0,0 +1,18 @@ +#!/bin/sh + +# ------------------------------------------------------------------------ +# The phing build script for Unix based systems +# $Id: pear-propel-gen,v 1.2 2004/10/17 13:24:09 hlellelid Exp $ +# ------------------------------------------------------------------------ + +# ------------------------------------------------------------------------- +# Do not change anything below this line unless you know what you're doing. +# ------------------------------------------------------------------------- + +# (currently this is not reached) +if (test -z "$PHING_COMMAND") ; then + echo "WARNING: PHP_COMMAND environment not set. (Assuming phing on PATH)" + export PHING_COMMAND="phing" +fi + +$PHING_COMMAND -f @DATA-DIR@/propel_generator/pear-build.xml -Dproject.dir=$* diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/pear-propel-gen.bat b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/pear-propel-gen.bat new file mode 100644 index 0000000..c6c4535 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/pear/pear-propel-gen.bat @@ -0,0 +1,24 @@ +@ECHO OFF + +::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:: The propel-gen build script for Windows based systems +:: $Id: pear-propel-gen.bat,v 1.2 2004/10/17 13:24:09 hlellelid Exp $ +::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +::---------------------------------------------------------------------------------- +:: Please set following to the "phing" script. By default this is expected to be +:: on your path. (You don't need to modify this file if that is the case.) + + SET phingScript=phing + +::--------------------------------------------------------------------------------- +::--------------------------------------------------------------------------------- +:: Do not modify below this line!! (Unless you know what your doing :) +::--------------------------------------------------------------------------------- +::--------------------------------------------------------------------------------- + +"%phingScript%" -f "@DATA-DIR@\propel_generator\pear-build.xml" -Dproject.dir=%* +GOTO :EOF + +:PAUSE_END +PAUSE \ No newline at end of file diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/.svn/all-wcprops new file mode 100644 index 0000000..115b8e4 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 45 +/!svn/ver/1695/tags/1.4.2/generator/resources +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/.svn/entries new file mode 100644 index 0000000..aac61dc --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/.svn/entries @@ -0,0 +1,37 @@ +10 + +dir +2332 +http://propel.mirror.svn.symfony-project.com/tags/1.4.2/generator/resources +http://propel.mirror.svn.symfony-project.com + + + +2009-10-03T10:43:09.670601Z +1190 +francois + + + + + + + + + + + + + + +a84bc4f6-26e8-416f-aa96-3cde13879fbb + +xsl +dir + +dtd +dir + +xsd +dir + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/dtd/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/dtd/.svn/all-wcprops new file mode 100644 index 0000000..85e1311 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/dtd/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 49 +/!svn/ver/1695/tags/1.4.2/generator/resources/dtd +END +database.dtd +K 25 +svn:wc:ra_dav:version-url +V 62 +/!svn/ver/1695/tags/1.4.2/generator/resources/dtd/database.dtd +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/dtd/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/dtd/.svn/entries new file mode 100644 index 0000000..d092324 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/dtd/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +2332 +http://propel.mirror.svn.symfony-project.com/tags/1.4.2/generator/resources/dtd +http://propel.mirror.svn.symfony-project.com + + + +2009-10-03T10:43:09.670601Z +1190 +francois + + + + + + + + + + + + + + +a84bc4f6-26e8-416f-aa96-3cde13879fbb + +database.dtd +file + + + + +2012-05-10T18:42:14.613551Z +0c248bc648ea7a1c52f6161f426be4c1 +2009-10-03T10:43:09.670601Z +1190 +francois + + + + + + + + + + + + + + + + + + + + + +4621 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/dtd/.svn/text-base/database.dtd.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/dtd/.svn/text-base/database.dtd.svn-base new file mode 100644 index 0000000..a18514f --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/dtd/.svn/text-base/database.dtd.svn-base @@ -0,0 +1,176 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/dtd/database.dtd b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/dtd/database.dtd new file mode 100644 index 0000000..a18514f --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/dtd/database.dtd @@ -0,0 +1,176 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsd/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsd/.svn/all-wcprops new file mode 100644 index 0000000..6c6b9c1 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsd/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 49 +/!svn/ver/1695/tags/1.4.2/generator/resources/xsd +END +database.xsd +K 25 +svn:wc:ra_dav:version-url +V 62 +/!svn/ver/1695/tags/1.4.2/generator/resources/xsd/database.xsd +END +custom_datatypes.xsd +K 25 +svn:wc:ra_dav:version-url +V 70 +/!svn/ver/1695/tags/1.4.2/generator/resources/xsd/custom_datatypes.xsd +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsd/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsd/.svn/entries new file mode 100644 index 0000000..57b51d5 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsd/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +2332 +http://propel.mirror.svn.symfony-project.com/tags/1.4.2/generator/resources/xsd +http://propel.mirror.svn.symfony-project.com + + + +2009-10-03T10:43:09.670601Z +1190 +francois + + + + + + + + + + + + + + +a84bc4f6-26e8-416f-aa96-3cde13879fbb + +database.xsd +file + + + + +2012-05-10T18:42:14.633552Z +6093ad37941945d4f4fd8b2144d1efbe +2009-10-03T10:43:09.670601Z +1190 +francois +has-props + + + + + + + + + + + + + + + + + + + + +16167 + +custom_datatypes.xsd +file + + + + +2012-05-10T18:42:14.633552Z +25639f786bdb6f27e6d0b19291bbc386 +2005-10-06T14:51:36.000044Z +224 +ron +has-props + + + + + + + + + + + + + + + + + + + + +229 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsd/.svn/prop-base/custom_datatypes.xsd.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsd/.svn/prop-base/custom_datatypes.xsd.svn-base new file mode 100644 index 0000000..869ac71 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsd/.svn/prop-base/custom_datatypes.xsd.svn-base @@ -0,0 +1,5 @@ +K 14 +svn:executable +V 1 +* +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsd/.svn/prop-base/database.xsd.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsd/.svn/prop-base/database.xsd.svn-base new file mode 100644 index 0000000..869ac71 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsd/.svn/prop-base/database.xsd.svn-base @@ -0,0 +1,5 @@ +K 14 +svn:executable +V 1 +* +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsd/.svn/text-base/custom_datatypes.xsd.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsd/.svn/text-base/custom_datatypes.xsd.svn-base new file mode 100644 index 0000000..12e8327 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsd/.svn/text-base/custom_datatypes.xsd.svn-base @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsd/.svn/text-base/database.xsd.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsd/.svn/text-base/database.xsd.svn-base new file mode 100644 index 0000000..8a1d2ca --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsd/.svn/text-base/database.xsd.svn-base @@ -0,0 +1,397 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsd/custom_datatypes.xsd b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsd/custom_datatypes.xsd new file mode 100755 index 0000000..12e8327 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsd/custom_datatypes.xsd @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsd/database.xsd b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsd/database.xsd new file mode 100755 index 0000000..8a1d2ca --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsd/database.xsd @@ -0,0 +1,397 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsl/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsl/.svn/all-wcprops new file mode 100644 index 0000000..ffbf86e --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsl/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 49 +/!svn/ver/1695/tags/1.4.2/generator/resources/xsl +END +database.xsl +K 25 +svn:wc:ra_dav:version-url +V 62 +/!svn/ver/1695/tags/1.4.2/generator/resources/xsl/database.xsl +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsl/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsl/.svn/entries new file mode 100644 index 0000000..87eb9ff --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsl/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +2332 +http://propel.mirror.svn.symfony-project.com/tags/1.4.2/generator/resources/xsl +http://propel.mirror.svn.symfony-project.com + + + +2009-10-03T10:43:09.670601Z +1190 +francois + + + + + + + + + + + + + + +a84bc4f6-26e8-416f-aa96-3cde13879fbb + +database.xsl +file + + + + +2012-05-10T18:42:14.601552Z +79b138612b64ead70fbf83b83c1d80a1 +2009-10-03T10:43:09.670601Z +1190 +francois +has-props + + + + + + + + + + + + + + + + + + + + +8366 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsl/.svn/prop-base/database.xsl.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsl/.svn/prop-base/database.xsl.svn-base new file mode 100644 index 0000000..869ac71 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsl/.svn/prop-base/database.xsl.svn-base @@ -0,0 +1,5 @@ +K 14 +svn:executable +V 1 +* +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsl/.svn/text-base/database.xsl.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsl/.svn/text-base/database.xsl.svn-base new file mode 100644 index 0000000..81d8217 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsl/.svn/text-base/database.xsl.svn-base @@ -0,0 +1,292 @@ + + +]> + + + + + + + + + + + + native + + + underscore + + + false + + + + + + + + + + + + + + + + + + none + + + + + + + + + + + + + + + + + none + + + + + + + + + + + + + + + + + + + + + + + + +
    + + false + + + false + + + + + + + + + + +
    + + + + + + + none + + + none + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + default + + + + + + + + + + + + + + + + + + class + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + false + + + VARCHAR + + + false + + + false + + + 255 + + + + + + + + + + + + + + + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsl/database.xsl b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsl/database.xsl new file mode 100755 index 0000000..81d8217 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/resources/xsl/database.xsl @@ -0,0 +1,292 @@ + + +]> + + + + + + + + + + + + native + + + underscore + + + false + + + + + + + + + + + + + + + + + + none + + + + + + + + + + + + + + + + + none + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + false + + + + + + + + + + +
    +
    + + + + + + none + + + none + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + default + + + + + + + + + + + + + + + + + + class + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + false + + + VARCHAR + + + false + + + false + + + 255 + + + + + + + + + + + + + + +
    diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/.svn/all-wcprops new file mode 100644 index 0000000..c816c73 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 48 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel +END +PropelException.php +K 25 +svn:wc:ra_dav:version-url +V 68 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/PropelException.php +END +Propel.php +K 25 +svn:wc:ra_dav:version-url +V 59 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/Propel.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/.svn/entries new file mode 100644 index 0000000..1097083 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/.svn/entries @@ -0,0 +1,114 @@ +10 + +dir +2332 +http://propel.mirror.svn.symfony-project.com/tags/1.4.2/runtime/classes/propel +http://propel.mirror.svn.symfony-project.com + + + +2010-04-19T22:01:20.976333Z +1691 +francois + + + + + + + + + + + + + + +a84bc4f6-26e8-416f-aa96-3cde13879fbb + +logger +dir + +adapter +dir + +validator +dir + +PropelException.php +file + + + + +2012-05-10T18:42:10.269549Z +8fba5e85cc812ca3b0e0e4d0f54b3be6 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +1748 + +Propel.php +file + + + + +2012-05-10T18:42:10.273551Z +47930408eee391f5e5adf2861d913e32 +2010-04-19T22:01:20.976333Z +1691 +francois +has-props + + + + + + + + + + + + + + + + + + + + +27256 + +om +dir + +map +dir + +util +dir + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/.svn/prop-base/Propel.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/.svn/prop-base/Propel.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/.svn/prop-base/Propel.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/.svn/prop-base/PropelException.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/.svn/prop-base/PropelException.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/.svn/prop-base/PropelException.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/.svn/text-base/Propel.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/.svn/text-base/Propel.php.svn-base new file mode 100644 index 0000000..89eb53c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/.svn/text-base/Propel.php.svn-base @@ -0,0 +1,841 @@ +. + */ + +require 'propel/PropelException.php'; +require 'propel/adapter/DBAdapter.php'; +require 'propel/util/PropelPDO.php'; + +/** + * Propel's main resource pool and initialization & configuration class. + * + * This static class is used to handle Propel initialization and to maintain all of the + * open database connections and instantiated database maps. + * + * @author Hans Lellelid (Propel) + * @author Daniel Rall (Torque) + * @author Magnús Þór Torfason (Torque) + * @author Jason van Zyl (Torque) + * @author Rafal Krzewski (Torque) + * @author Martin Poeschl (Torque) + * @author Henning P. Schmiedehausen (Torque) + * @author Kurt Schrader (Torque) + * @version $Revision$ + * @package propel + */ +class Propel +{ + /** + * A constant for default. + */ + const DEFAULT_NAME = "default"; + + /** + * A constant defining 'System is unusuable' logging level + */ + const LOG_EMERG = 0; + + /** + * A constant defining 'Immediate action required' logging level + */ + const LOG_ALERT = 1; + + /** + * A constant defining 'Critical conditions' logging level + */ + const LOG_CRIT = 2; + + /** + * A constant defining 'Error conditions' logging level + */ + const LOG_ERR = 3; + + /** + * A constant defining 'Warning conditions' logging level + */ + const LOG_WARNING = 4; + + /** + * A constant defining 'Normal but significant' logging level + */ + const LOG_NOTICE = 5; + + /** + * A constant defining 'Informational' logging level + */ + const LOG_INFO = 6; + + /** + * A constant defining 'Debug-level messages' logging level + */ + const LOG_DEBUG = 7; + + /** + * The Propel version. + */ + const VERSION = '1.4.2'; + + /** + * The class name for a PDO object. + */ + const CLASS_PDO = 'PDO'; + + /** + * The class name for a PropelPDO object. + */ + const CLASS_PROPEL_PDO = 'PropelPDO'; + + /** + * The class name for a DebugPDO object. + */ + const CLASS_DEBUG_PDO = 'DebugPDO'; + + /** + * Constant used to request a READ connection (applies to replication). + */ + const CONNECTION_READ = 'read'; + + /** + * Constant used to request a WRITE connection (applies to replication). + */ + const CONNECTION_WRITE = 'write'; + + /** + * @var string The db name that is specified as the default in the property file + */ + private static $defaultDBName; + + /** + * @var array The global cache of database maps + */ + private static $dbMaps = array(); + + /** + * @var array The cache of DB adapter keys + */ + private static $adapterMap = array(); + + /** + * @var array Cache of established connections (to eliminate overhead). + */ + private static $connectionMap = array(); + + /** + * @var PropelConfiguration Propel-specific configuration. + */ + private static $configuration; + + /** + * @var bool flag to set to true once this class has been initialized + */ + private static $isInit = false; + + /** + * @var Log optional logger + */ + private static $logger = null; + + /** + * @var string The name of the database mapper class + */ + private static $databaseMapClass = 'DatabaseMap'; + + /** + * @var bool Whether the object instance pooling is enabled + */ + private static $instancePoolingEnabled = true; + + /** + * @var bool For replication, whether to force the use of master connection. + */ + private static $forceMasterConnection = false; + + /** + * @var array A map of class names and their file paths for autoloading + */ + private static $autoloadMap = array( + 'PropelException' => 'propel/PropelException.php', + + 'DBAdapter' => 'propel/adapter/DBAdapter.php', + 'DBMSSQL' => 'propel/adapter/DBMSSQL.php', + 'MssqlPropelPDO' => 'propel/adapter/MSSQL/MssqlPropelPDO.php', + 'MssqlDebugPDO' => 'propel/adapter/MSSQL/MssqlDebugPDO.php', + 'MssqlDateTime' => 'propel/adapter/MSSQL/MssqlDateTime.class.php', + 'DBMySQL' => 'propel/adapter/DBMySQL.php', + 'DBMySQLi' => 'propel/adapter/DBMySQLi.php', + 'DBNone' => 'propel/adapter/DBNone.php', + 'DBOracle' => 'propel/adapter/DBOracle.php', + 'DBPostgres' => 'propel/adapter/DBPostgres.php', + 'DBSQLite' => 'propel/adapter/DBSQLite.php', + 'DBSybase' => 'propel/adapter/DBSybase.php', + + 'BasicLogger' => 'propel/logger/BasicLogger.php', + 'MojaviLogAdapter' => 'propel/logger/MojaviLogAdapter.php', + + 'ColumnMap' => 'propel/map/ColumnMap.php', + 'DatabaseMap' => 'propel/map/DatabaseMap.php', + 'TableMap' => 'propel/map/TableMap.php', + 'RelationMap' => 'propel/map/RelationMap.php', + 'ValidatorMap' => 'propel/map/ValidatorMap.php', + + 'BaseObject' => 'propel/om/BaseObject.php', + 'NodeObject' => 'propel/om/NodeObject.php', + 'Persistent' => 'propel/om/Persistent.php', + 'PreOrderNodeIterator' => 'propel/om/PreOrderNodeIterator.php', + 'NestedSetPreOrderNodeIterator' => 'propel/om/NestedSetPreOrderNodeIterator.php', + 'NestedSetRecursiveIterator' => 'propel/om/NestedSetRecursiveIterator.php', + + 'BasePeer' => 'propel/util/BasePeer.php', + 'NodePeer' => 'propel/util/NodePeer.php', + 'Criteria' => 'propel/util/Criteria.php', + 'Join' => 'propel/util/Join.php', + 'PeerInfo' => 'propel/util/PeerInfo.php', + 'PropelColumnTypes' => 'propel/util/PropelColumnTypes.php', + 'PropelConfiguration' => 'propel/util/PropelConfiguration.php', + 'PropelConfigurationIterator' => 'propel/util/PropelConfigurationIterator.php', + 'PropelPDO' => 'propel/util/PropelPDO.php', + 'PropelPager' => 'propel/util/PropelPager.php', + 'PropelDateTime' => 'propel/util/PropelDateTime.php', + 'DebugPDO' => 'propel/util/DebugPDO.php', + 'DebugPDOStatement' => 'propel/util/DebugPDOStatement.php', + + + 'BasicValidator' => 'propel/validator/BasicValidator.php', + 'MatchValidator' => 'propel/validator/MatchValidator.php', + 'MaxLengthValidator' => 'propel/validator/MaxLengthValidator.php', + 'MaxValueValidator' => 'propel/validator/MaxValueValidator.php', + 'MinLengthValidator' => 'propel/validator/MinLengthValidator.php', + 'MinValueValidator' => 'propel/validator/MinValueValidator.php', + 'NotMatchValidator' => 'propel/validator/NotMatchValidator.php', + 'RequiredValidator' => 'propel/validator/RequiredValidator.php', + 'UniqueValidator' => 'propel/validator/UniqueValidator.php', + 'ValidValuesValidator' => 'propel/validator/ValidValuesValidator.php', + 'ValidationFailed' => 'propel/validator/ValidationFailed.php', + ); + + /** + * Initializes Propel + * + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function initialize() + { + if (self::$configuration === null) { + throw new PropelException("Propel cannot be initialized without a valid configuration. Please check the log files for further details."); + } + + self::configureLogging(); + + // reset the connection map (this should enable runtime changes of connection params) + self::$connectionMap = array(); + + if (isset(self::$configuration['classmap']) && is_array(self::$configuration['classmap'])) { + self::$autoloadMap = array_merge(self::$configuration['classmap'], self::$autoloadMap); + } + + self::$isInit = true; + } + + /** + * Configure Propel using a PHP (array) config file. + * + * @param string Path (absolute or relative to include_path) to config file. + * + * @throws PropelException If configuration file cannot be opened. + * (E_WARNING probably will also be raised by PHP) + */ + public static function configure($configFile) + { + $configuration = include($configFile); + if ($configuration === false) { + throw new PropelException("Unable to open configuration file: " . var_export($configFile, true)); + } + self::setConfiguration($configuration); + } + + /** + * Configure the logging system, if config is specified in the runtime configuration. + */ + protected static function configureLogging() + { + if (self::$logger === null) { + if (isset(self::$configuration['log']) && is_array(self::$configuration['log']) && count(self::$configuration['log'])) { + include_once 'Log.php'; // PEAR Log class + $c = self::$configuration['log']; + $type = isset($c['type']) ? $c['type'] : 'file'; + $name = isset($c['name']) ? $c['name'] : './propel.log'; + $ident = isset($c['ident']) ? $c['ident'] : 'propel'; + $conf = isset($c['conf']) ? $c['conf'] : array(); + $level = isset($c['level']) ? $c['level'] : PEAR_LOG_DEBUG; + self::$logger = Log::singleton($type, $name, $ident, $conf, $level); + } // if isset() + } + } + + /** + * Initialization of Propel with a PHP (array) configuration file. + * + * @param string $c The Propel configuration file path. + * + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function init($c) + { + self::configure($c); + self::initialize(); + } + + /** + * Determine whether Propel has already been initialized. + * + * @return bool True if Propel is already initialized. + */ + public static function isInit() + { + return self::$isInit; + } + + /** + * Sets the configuration for Propel and all dependencies. + * + * @param mixed The Configuration (array or PropelConfiguration) + */ + public static function setConfiguration($c) + { + if (is_array($c)) { + if (isset($c['propel']) && is_array($c['propel'])) { + $c = $c['propel']; + } + $c = new PropelConfiguration($c); + } + self::$configuration = $c; + } + + /** + * Get the configuration for this component. + * + * @param int - PropelConfiguration::TYPE_ARRAY: return the configuration as an array + * (for backward compatibility this is the default) + * - PropelConfiguration::TYPE_ARRAY_FLAT: return the configuration as a flat array + * ($config['name.space.item']) + * - PropelConfiguration::TYPE_OBJECT: return the configuration as a PropelConfiguration instance + * @return mixed The Configuration (array or PropelConfiguration) + */ + public static function getConfiguration($type = PropelConfiguration::TYPE_ARRAY) + { + return self::$configuration->getParameters($type); + } + + /** + * Override the configured logger. + * + * This is primarily for things like unit tests / debugging where + * you want to change the logger without altering the configuration file. + * + * You can use any logger class that implements the propel.logger.BasicLogger + * interface. This interface is based on PEAR::Log, so you can also simply pass + * a PEAR::Log object to this method. + * + * @param object The new logger to use. ([PEAR] Log or BasicLogger) + */ + public static function setLogger($logger) + { + self::$logger = $logger; + } + + /** + * Returns true if a logger, for example PEAR::Log, has been configured, + * otherwise false. + * + * @return bool True if Propel uses logging + */ + public static function hasLogger() + { + return (self::$logger !== null); + } + + /** + * Get the configured logger. + * + * @return object Configured log class ([PEAR] Log or BasicLogger). + */ + public static function logger() + { + return self::$logger; + } + + /** + * Logs a message + * If a logger has been configured, the logger will be used, otherwrise the + * logging message will be discarded without any further action + * + * @param string The message that will be logged. + * @param string The logging level. + * + * @return bool True if the message was logged successfully or no logger was used. + */ + public static function log($message, $level = self::LOG_DEBUG) + { + if (self::hasLogger()) { + $logger = self::logger(); + switch ($level) { + case self::LOG_EMERG: + return $logger->log($message, $level); + case self::LOG_ALERT: + return $logger->alert($message); + case self::LOG_CRIT: + return $logger->crit($message); + case self::LOG_ERR: + return $logger->err($message); + case self::LOG_WARNING: + return $logger->warning($message); + case self::LOG_NOTICE: + return $logger->notice($message); + case self::LOG_INFO: + return $logger->info($message); + default: + return $logger->debug($message); + } + } + return true; + } + + /** + * Returns the database map information. Name relates to the name + * of the connection pool to associate with the map. + * + * The database maps are "registered" by the generated map builder classes. + * + * @param string The name of the database corresponding to the DatabaseMap to retrieve. + * + * @return DatabaseMap The named DatabaseMap. + * + * @throws PropelException - if database map is null or propel was not initialized properly. + */ + public static function getDatabaseMap($name = null) + { + if ($name === null) { + $name = self::getDefaultDB(); + if ($name === null) { + throw new PropelException("DatabaseMap name is null!"); + } + } + + if (!isset(self::$dbMaps[$name])) { + $clazz = self::$databaseMapClass; + self::$dbMaps[$name] = new $clazz($name); + } + + return self::$dbMaps[$name]; + } + + /** + * Sets the database map object to use for specified datasource. + * + * @param string $name The datasource name. + * @param DatabaseMap $map The database map object to use for specified datasource. + */ + public static function setDatabaseMap($name, DatabaseMap $map) + { + if ($name === null) { + $name = self::getDefaultDB(); + } + self::$dbMaps[$name] = $map; + } + + /** + * For replication, set whether to always force the use of a master connection. + * + * @param boolean $bit True or False + */ + public static function setForceMasterConnection($bit) + { + self::$forceMasterConnection = (bool) $bit; + } + + /** + * For replication, whether to always force the use of a master connection. + * + * @return boolean + */ + public static function getForceMasterConnection() + { + return self::$forceMasterConnection; + } + + /** + * Sets a Connection for specified datasource name. + * + * @param string $name The datasource name for the connection being set. + * @param PropelPDO $con The PDO connection. + * @param string $mode Whether this is a READ or WRITE connection (Propel::CONNECTION_READ, Propel::CONNECTION_WRITE) + */ + public static function setConnection($name, PropelPDO $con, $mode = Propel::CONNECTION_WRITE) + { + if ($name === null) { + $name = self::getDefaultDB(); + } + if ($mode == Propel::CONNECTION_READ) { + self::$connectionMap[$name]['slave'] = $con; + } else { + self::$connectionMap[$name]['master'] = $con; + } + } + + /** + * Gets an already-opened PDO connection or opens a new one for passed-in db name. + * + * @param string $name The datasource name that is used to look up the DSN from the runtime configuation file. + * @param string $mode The connection mode (this applies to replication systems). + * + * @return PDO A database connection + * + * @throws PropelException - if connection cannot be configured or initialized. + */ + public static function getConnection($name = null, $mode = Propel::CONNECTION_WRITE) + { + if ($name === null) { + $name = self::getDefaultDB(); + } + + // IF a WRITE-mode connection was requested + // or Propel is configured to always use the master connection + // or the slave for this connection has already been set to FALSE (indicating no slave) + // THEN return the master connection. + if ($mode != Propel::CONNECTION_READ || self::$forceMasterConnection || (isset(self::$connectionMap[$name]['slave']) && self::$connectionMap[$name]['slave'] === false)) { + if (!isset(self::$connectionMap[$name]['master'])) { + // load connection parameter for master connection + $conparams = isset(self::$configuration['datasources'][$name]['connection']) ? self::$configuration['datasources'][$name]['connection'] : null; + if (empty($conparams)) { + throw new PropelException('No connection information in your runtime configuration file for datasource ['.$name.']'); + } + // initialize master connection + $con = Propel::initConnection($conparams, $name); + self::$connectionMap[$name]['master'] = $con; + } + + return self::$connectionMap[$name]['master']; + + } else { + + if (!isset(self::$connectionMap[$name]['slave'])) { + + // we've already ensured that the configuration exists, in previous if-statement + $slaveconfigs = isset(self::$configuration['datasources'][$name]['slaves']) ? self::$configuration['datasources'][$name]['slaves'] : null; + + if (empty($slaveconfigs)) { // no slaves configured for this datasource + self::$connectionMap[$name]['slave'] = false; + return self::getConnection($name, Propel::CONNECTION_WRITE); // Recurse to get the WRITE connection + } else { // Initialize a new slave + if (isset($slaveconfigs['connection']['dsn'])) { // only one slave connection configured + $conparams = $slaveconfigs['connection']; + } else { + $randkey = array_rand($slaveconfigs['connection']); + $conparams = $slaveconfigs['connection'][$randkey]; + if (empty($conparams)) { + throw new PropelException('No connection information in your runtime configuration file for SLAVE ['.$randkey.'] to datasource ['.$name.']'); + } + } + + // initialize master connection + $con = Propel::initConnection($conparams, $name); + self::$connectionMap[$name]['slave'] = $con; + } + + } // if datasource slave not set + + return self::$connectionMap[$name]['slave']; + + } // if mode == CONNECTION_WRITE + + } // getConnection() + + /** + * Opens a new PDO connection for passed-in db name. + * + * @param array $conparams Connection paramters. + * @param string $name Datasource name. + * @param string $defaultClass The PDO subclass to instantiate if there is no explicit classname + * specified in the connection params (default is Propel::CLASS_PROPEL_PDO) + * + * @return PDO A database connection of the given class (PDO, PropelPDO, SlavePDO or user-defined) + * + * @throws PropelException - if lower-level exception caught when trying to connect. + */ + public static function initConnection($conparams, $name, $defaultClass = Propel::CLASS_PROPEL_PDO) + { + + $dsn = $conparams['dsn']; + if ($dsn === null) { + throw new PropelException('No dsn specified in your connection parameters for datasource ['.$name.']'); + } + + if (isset($conparams['classname']) && !empty($conparams['classname'])) { + $classname = $conparams['classname']; + if (!class_exists($classname)) { + throw new PropelException('Unable to load specified PDO subclass: ' . $classname); + } + } else { + $classname = $defaultClass; + } + + $user = isset($conparams['user']) ? $conparams['user'] : null; + $password = isset($conparams['password']) ? $conparams['password'] : null; + + // load any driver options from the config file + // driver options are those PDO settings that have to be passed during the connection construction + $driver_options = array(); + if ( isset($conparams['options']) && is_array($conparams['options']) ) { + try { + self::processDriverOptions( $conparams['options'], $driver_options ); + } catch (PropelException $e) { + throw new PropelException('Error processing driver options for datasource ['.$name.']', $e); + } + } + + try { + $con = new $classname($dsn, $user, $password, $driver_options); + $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + } catch (PDOException $e) { + throw new PropelException("Unable to open PDO connection", $e); + } + + // load any connection options from the config file + // connection attributes are those PDO flags that have to be set on the initialized connection + if (isset($conparams['attributes']) && is_array($conparams['attributes'])) { + $attributes = array(); + try { + self::processDriverOptions( $conparams['attributes'], $attributes ); + } catch (PropelException $e) { + throw new PropelException('Error processing connection attributes for datasource ['.$name.']', $e); + } + foreach ($attributes as $key => $value) { + $con->setAttribute($key, $value); + } + } + + // initialize the connection using the settings provided in the config file. this could be a "SET NAMES " query for MySQL, for instance + $adapter = self::getDB($name); + $adapter->initConnection($con, isset($conparams['settings']) && is_array($conparams['settings']) ? $conparams['settings'] : array()); + + return $con; + } + + /** + * Internal function to handle driver options or conneciton attributes in PDO. + * + * Process the INI file flags to be passed to each connection. + * + * @param array Where to find the list of constant flags and their new setting. + * @param array Put the data into here + * + * @throws PropelException If invalid options were specified. + */ + private static function processDriverOptions($source, &$write_to) + { + foreach ($source as $option => $optiondata) { + if (is_string($option) && strpos($option, '::') !== false) { + $key = $option; + } elseif (is_string($option)) { + $key = 'PropelPDO::' . $option; + } + if (!defined($key)) { + throw new PropelException("Invalid PDO option/attribute name specified: ".$key); + } + $key = constant($key); + + $value = $optiondata['value']; + if (is_string($value) && strpos($value, '::') !== false) { + if (!defined($value)) { + throw new PropelException("Invalid PDO option/attribute value specified: ".$value); + } + $value = constant($value); + } + + $write_to[$key] = $value; + } + } + + /** + * Returns database adapter for a specific datasource. + * + * @param string The datasource name. + * + * @return DBAdapter The corresponding database adapter. + * + * @throws PropelException If unable to find DBdapter for specified db. + */ + public static function getDB($name = null) + { + if ($name === null) { + $name = self::getDefaultDB(); + } + + if (!isset(self::$adapterMap[$name])) { + if (!isset(self::$configuration['datasources'][$name]['adapter'])) { + throw new PropelException("Unable to find adapter for datasource [" . $name . "]."); + } + $db = DBAdapter::factory(self::$configuration['datasources'][$name]['adapter']); + // register the adapter for this name + self::$adapterMap[$name] = $db; + } + + return self::$adapterMap[$name]; + } + + /** + * Sets a database adapter for specified datasource. + * + * @param string $name The datasource name. + * @param DBAdapter $adapter The DBAdapter implementation to use. + */ + public static function setDB($name, DBAdapter $adapter) + { + if ($name === null) { + $name = self::getDefaultDB(); + } + self::$adapterMap[$name] = $adapter; + } + + /** + * Returns the name of the default database. + * + * @return string Name of the default DB + */ + public static function getDefaultDB() + { + if (self::$defaultDBName === null) { + // Determine default database name. + self::$defaultDBName = isset(self::$configuration['datasources']['default']) ? self::$configuration['datasources']['default'] : self::DEFAULT_NAME; + } + return self::$defaultDBName; + } + + /** + * Closes any associated resource handles. + * + * This method frees any database connection handles that have been + * opened by the getConnection() method. + */ + public static function close() + { + foreach (self::$connectionMap as $idx => $cons) { + // Propel::log("Closing connections for " . $idx, Propel::LOG_DEBUG); + unset(self::$connectionMap[$idx]); + } + } + + /** + * Autoload function for loading propel dependencies. + * + * @param string The class name needing loading. + * + * @return boolean TRUE if the class was loaded, false otherwise. + */ + public static function autoload($className) + { + if (isset(self::$autoloadMap[$className])) { + require(self::$autoloadMap[$className]); + return true; + } + return false; + } + + /** + * Include once a file specified in DOT notation and reutrn unqualified clasname. + * + * Typically, Propel uses autoload is used to load classes and expects that all classes + * referenced within Propel are included in Propel's autoload map. This method is only + * called when a specific non-Propel classname was specified -- for example, the + * classname of a validator in the schema.xml. This method will attempt to include that + * class via autoload and then relative to a location on the include_path. + * + * @param string $class dot-path to clas (e.g. path.to.my.ClassName). + * @return string unqualified classname + */ + public static function importClass($path) { + + // extract classname + if (($pos = strrpos($path, '.')) === false) { + $class = $path; + } else { + $class = substr($path, $pos + 1); + } + + // check if class exists, using autoloader to attempt to load it. + if (class_exists($class, $useAutoload=true)) { + return $class; + } + + // turn to filesystem path + $path = strtr($path, '.', DIRECTORY_SEPARATOR) . '.php'; + + // include class + $ret = include_once($path); + if ($ret === false) { + throw new PropelException("Unable to import class: " . $class . " from " . $path); + } + + // return qualified name + return $class; + } + + /** + * Set your own class-name for Database-Mapping. Then + * you can change the whole TableMap-Model, but keep its + * functionality for Criteria. + * + * @param string The name of the class. + */ + public static function setDatabaseMapClass($name) + { + self::$databaseMapClass = $name; + } + + /** + * Disable instance pooling. + */ + public static function disableInstancePooling() + { + self::$instancePoolingEnabled = false; + } + + /** + * Enable instance pooling (enabled by default). + */ + public static function enableInstancePooling() + { + self::$instancePoolingEnabled = true; + } + + /** + * the instance pooling behaviour. True by default. + * + * @return boolean Whether the pooling is enabled or not. + */ + public static function isInstancePoolingEnabled() + { + return self::$instancePoolingEnabled; + } +} + +spl_autoload_register(array('Propel', 'autoload')); diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/.svn/text-base/PropelException.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/.svn/text-base/PropelException.php.svn-base new file mode 100644 index 0000000..159554d --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/.svn/text-base/PropelException.php.svn-base @@ -0,0 +1,61 @@ +. + */ + +/** + * The base class of all exceptions thrown by Propel. + * @author Hans Lellelid + * @version $Revision$ + * @package propel + */ +class PropelException extends Exception { + + /** The nested "cause" exception. */ + protected $cause; + + function __construct($p1, $p2 = null) { + + $cause = null; + + if ($p2 !== null) { + $msg = $p1; + $cause = $p2; + } else { + if ($p1 instanceof Exception) { + $msg = ""; + $cause = $p1; + } else { + $msg = $p1; + } + } + + parent::__construct($msg); + + if ($cause !== null) { + $this->cause = $cause; + $this->message .= " [wrapped: " . $cause->getMessage() ."]"; + } + } + + function getCause() { + return $this->cause; + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/Propel.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/Propel.php new file mode 100644 index 0000000..2e96a62 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/Propel.php @@ -0,0 +1,841 @@ +. + */ + +require 'propel/PropelException.php'; +require 'propel/adapter/DBAdapter.php'; +require 'propel/util/PropelPDO.php'; + +/** + * Propel's main resource pool and initialization & configuration class. + * + * This static class is used to handle Propel initialization and to maintain all of the + * open database connections and instantiated database maps. + * + * @author Hans Lellelid (Propel) + * @author Daniel Rall (Torque) + * @author Magnús Þór Torfason (Torque) + * @author Jason van Zyl (Torque) + * @author Rafal Krzewski (Torque) + * @author Martin Poeschl (Torque) + * @author Henning P. Schmiedehausen (Torque) + * @author Kurt Schrader (Torque) + * @version $Revision: 1691 $ + * @package propel + */ +class Propel +{ + /** + * A constant for default. + */ + const DEFAULT_NAME = "default"; + + /** + * A constant defining 'System is unusuable' logging level + */ + const LOG_EMERG = 0; + + /** + * A constant defining 'Immediate action required' logging level + */ + const LOG_ALERT = 1; + + /** + * A constant defining 'Critical conditions' logging level + */ + const LOG_CRIT = 2; + + /** + * A constant defining 'Error conditions' logging level + */ + const LOG_ERR = 3; + + /** + * A constant defining 'Warning conditions' logging level + */ + const LOG_WARNING = 4; + + /** + * A constant defining 'Normal but significant' logging level + */ + const LOG_NOTICE = 5; + + /** + * A constant defining 'Informational' logging level + */ + const LOG_INFO = 6; + + /** + * A constant defining 'Debug-level messages' logging level + */ + const LOG_DEBUG = 7; + + /** + * The Propel version. + */ + const VERSION = '1.4.2'; + + /** + * The class name for a PDO object. + */ + const CLASS_PDO = 'PDO'; + + /** + * The class name for a PropelPDO object. + */ + const CLASS_PROPEL_PDO = 'PropelPDO'; + + /** + * The class name for a DebugPDO object. + */ + const CLASS_DEBUG_PDO = 'DebugPDO'; + + /** + * Constant used to request a READ connection (applies to replication). + */ + const CONNECTION_READ = 'read'; + + /** + * Constant used to request a WRITE connection (applies to replication). + */ + const CONNECTION_WRITE = 'write'; + + /** + * @var string The db name that is specified as the default in the property file + */ + private static $defaultDBName; + + /** + * @var array The global cache of database maps + */ + private static $dbMaps = array(); + + /** + * @var array The cache of DB adapter keys + */ + private static $adapterMap = array(); + + /** + * @var array Cache of established connections (to eliminate overhead). + */ + private static $connectionMap = array(); + + /** + * @var PropelConfiguration Propel-specific configuration. + */ + private static $configuration; + + /** + * @var bool flag to set to true once this class has been initialized + */ + private static $isInit = false; + + /** + * @var Log optional logger + */ + private static $logger = null; + + /** + * @var string The name of the database mapper class + */ + private static $databaseMapClass = 'DatabaseMap'; + + /** + * @var bool Whether the object instance pooling is enabled + */ + private static $instancePoolingEnabled = true; + + /** + * @var bool For replication, whether to force the use of master connection. + */ + private static $forceMasterConnection = false; + + /** + * @var array A map of class names and their file paths for autoloading + */ + private static $autoloadMap = array( + 'PropelException' => 'propel/PropelException.php', + + 'DBAdapter' => 'propel/adapter/DBAdapter.php', + 'DBMSSQL' => 'propel/adapter/DBMSSQL.php', + 'MssqlPropelPDO' => 'propel/adapter/MSSQL/MssqlPropelPDO.php', + 'MssqlDebugPDO' => 'propel/adapter/MSSQL/MssqlDebugPDO.php', + 'MssqlDateTime' => 'propel/adapter/MSSQL/MssqlDateTime.class.php', + 'DBMySQL' => 'propel/adapter/DBMySQL.php', + 'DBMySQLi' => 'propel/adapter/DBMySQLi.php', + 'DBNone' => 'propel/adapter/DBNone.php', + 'DBOracle' => 'propel/adapter/DBOracle.php', + 'DBPostgres' => 'propel/adapter/DBPostgres.php', + 'DBSQLite' => 'propel/adapter/DBSQLite.php', + 'DBSybase' => 'propel/adapter/DBSybase.php', + + 'BasicLogger' => 'propel/logger/BasicLogger.php', + 'MojaviLogAdapter' => 'propel/logger/MojaviLogAdapter.php', + + 'ColumnMap' => 'propel/map/ColumnMap.php', + 'DatabaseMap' => 'propel/map/DatabaseMap.php', + 'TableMap' => 'propel/map/TableMap.php', + 'RelationMap' => 'propel/map/RelationMap.php', + 'ValidatorMap' => 'propel/map/ValidatorMap.php', + + 'BaseObject' => 'propel/om/BaseObject.php', + 'NodeObject' => 'propel/om/NodeObject.php', + 'Persistent' => 'propel/om/Persistent.php', + 'PreOrderNodeIterator' => 'propel/om/PreOrderNodeIterator.php', + 'NestedSetPreOrderNodeIterator' => 'propel/om/NestedSetPreOrderNodeIterator.php', + 'NestedSetRecursiveIterator' => 'propel/om/NestedSetRecursiveIterator.php', + + 'BasePeer' => 'propel/util/BasePeer.php', + 'NodePeer' => 'propel/util/NodePeer.php', + 'Criteria' => 'propel/util/Criteria.php', + 'Join' => 'propel/util/Join.php', + 'PeerInfo' => 'propel/util/PeerInfo.php', + 'PropelColumnTypes' => 'propel/util/PropelColumnTypes.php', + 'PropelConfiguration' => 'propel/util/PropelConfiguration.php', + 'PropelConfigurationIterator' => 'propel/util/PropelConfigurationIterator.php', + 'PropelPDO' => 'propel/util/PropelPDO.php', + 'PropelPager' => 'propel/util/PropelPager.php', + 'PropelDateTime' => 'propel/util/PropelDateTime.php', + 'DebugPDO' => 'propel/util/DebugPDO.php', + 'DebugPDOStatement' => 'propel/util/DebugPDOStatement.php', + + + 'BasicValidator' => 'propel/validator/BasicValidator.php', + 'MatchValidator' => 'propel/validator/MatchValidator.php', + 'MaxLengthValidator' => 'propel/validator/MaxLengthValidator.php', + 'MaxValueValidator' => 'propel/validator/MaxValueValidator.php', + 'MinLengthValidator' => 'propel/validator/MinLengthValidator.php', + 'MinValueValidator' => 'propel/validator/MinValueValidator.php', + 'NotMatchValidator' => 'propel/validator/NotMatchValidator.php', + 'RequiredValidator' => 'propel/validator/RequiredValidator.php', + 'UniqueValidator' => 'propel/validator/UniqueValidator.php', + 'ValidValuesValidator' => 'propel/validator/ValidValuesValidator.php', + 'ValidationFailed' => 'propel/validator/ValidationFailed.php', + ); + + /** + * Initializes Propel + * + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function initialize() + { + if (self::$configuration === null) { + throw new PropelException("Propel cannot be initialized without a valid configuration. Please check the log files for further details."); + } + + self::configureLogging(); + + // reset the connection map (this should enable runtime changes of connection params) + self::$connectionMap = array(); + + if (isset(self::$configuration['classmap']) && is_array(self::$configuration['classmap'])) { + self::$autoloadMap = array_merge(self::$configuration['classmap'], self::$autoloadMap); + } + + self::$isInit = true; + } + + /** + * Configure Propel using a PHP (array) config file. + * + * @param string Path (absolute or relative to include_path) to config file. + * + * @throws PropelException If configuration file cannot be opened. + * (E_WARNING probably will also be raised by PHP) + */ + public static function configure($configFile) + { + $configuration = include($configFile); + if ($configuration === false) { + throw new PropelException("Unable to open configuration file: " . var_export($configFile, true)); + } + self::setConfiguration($configuration); + } + + /** + * Configure the logging system, if config is specified in the runtime configuration. + */ + protected static function configureLogging() + { + if (self::$logger === null) { + if (isset(self::$configuration['log']) && is_array(self::$configuration['log']) && count(self::$configuration['log'])) { + include_once 'Log.php'; // PEAR Log class + $c = self::$configuration['log']; + $type = isset($c['type']) ? $c['type'] : 'file'; + $name = isset($c['name']) ? $c['name'] : './propel.log'; + $ident = isset($c['ident']) ? $c['ident'] : 'propel'; + $conf = isset($c['conf']) ? $c['conf'] : array(); + $level = isset($c['level']) ? $c['level'] : PEAR_LOG_DEBUG; + self::$logger = Log::singleton($type, $name, $ident, $conf, $level); + } // if isset() + } + } + + /** + * Initialization of Propel with a PHP (array) configuration file. + * + * @param string $c The Propel configuration file path. + * + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function init($c) + { + self::configure($c); + self::initialize(); + } + + /** + * Determine whether Propel has already been initialized. + * + * @return bool True if Propel is already initialized. + */ + public static function isInit() + { + return self::$isInit; + } + + /** + * Sets the configuration for Propel and all dependencies. + * + * @param mixed The Configuration (array or PropelConfiguration) + */ + public static function setConfiguration($c) + { + if (is_array($c)) { + if (isset($c['propel']) && is_array($c['propel'])) { + $c = $c['propel']; + } + $c = new PropelConfiguration($c); + } + self::$configuration = $c; + } + + /** + * Get the configuration for this component. + * + * @param int - PropelConfiguration::TYPE_ARRAY: return the configuration as an array + * (for backward compatibility this is the default) + * - PropelConfiguration::TYPE_ARRAY_FLAT: return the configuration as a flat array + * ($config['name.space.item']) + * - PropelConfiguration::TYPE_OBJECT: return the configuration as a PropelConfiguration instance + * @return mixed The Configuration (array or PropelConfiguration) + */ + public static function getConfiguration($type = PropelConfiguration::TYPE_ARRAY) + { + return self::$configuration->getParameters($type); + } + + /** + * Override the configured logger. + * + * This is primarily for things like unit tests / debugging where + * you want to change the logger without altering the configuration file. + * + * You can use any logger class that implements the propel.logger.BasicLogger + * interface. This interface is based on PEAR::Log, so you can also simply pass + * a PEAR::Log object to this method. + * + * @param object The new logger to use. ([PEAR] Log or BasicLogger) + */ + public static function setLogger($logger) + { + self::$logger = $logger; + } + + /** + * Returns true if a logger, for example PEAR::Log, has been configured, + * otherwise false. + * + * @return bool True if Propel uses logging + */ + public static function hasLogger() + { + return (self::$logger !== null); + } + + /** + * Get the configured logger. + * + * @return object Configured log class ([PEAR] Log or BasicLogger). + */ + public static function logger() + { + return self::$logger; + } + + /** + * Logs a message + * If a logger has been configured, the logger will be used, otherwrise the + * logging message will be discarded without any further action + * + * @param string The message that will be logged. + * @param string The logging level. + * + * @return bool True if the message was logged successfully or no logger was used. + */ + public static function log($message, $level = self::LOG_DEBUG) + { + if (self::hasLogger()) { + $logger = self::logger(); + switch ($level) { + case self::LOG_EMERG: + return $logger->log($message, $level); + case self::LOG_ALERT: + return $logger->alert($message); + case self::LOG_CRIT: + return $logger->crit($message); + case self::LOG_ERR: + return $logger->err($message); + case self::LOG_WARNING: + return $logger->warning($message); + case self::LOG_NOTICE: + return $logger->notice($message); + case self::LOG_INFO: + return $logger->info($message); + default: + return $logger->debug($message); + } + } + return true; + } + + /** + * Returns the database map information. Name relates to the name + * of the connection pool to associate with the map. + * + * The database maps are "registered" by the generated map builder classes. + * + * @param string The name of the database corresponding to the DatabaseMap to retrieve. + * + * @return DatabaseMap The named DatabaseMap. + * + * @throws PropelException - if database map is null or propel was not initialized properly. + */ + public static function getDatabaseMap($name = null) + { + if ($name === null) { + $name = self::getDefaultDB(); + if ($name === null) { + throw new PropelException("DatabaseMap name is null!"); + } + } + + if (!isset(self::$dbMaps[$name])) { + $clazz = self::$databaseMapClass; + self::$dbMaps[$name] = new $clazz($name); + } + + return self::$dbMaps[$name]; + } + + /** + * Sets the database map object to use for specified datasource. + * + * @param string $name The datasource name. + * @param DatabaseMap $map The database map object to use for specified datasource. + */ + public static function setDatabaseMap($name, DatabaseMap $map) + { + if ($name === null) { + $name = self::getDefaultDB(); + } + self::$dbMaps[$name] = $map; + } + + /** + * For replication, set whether to always force the use of a master connection. + * + * @param boolean $bit True or False + */ + public static function setForceMasterConnection($bit) + { + self::$forceMasterConnection = (bool) $bit; + } + + /** + * For replication, whether to always force the use of a master connection. + * + * @return boolean + */ + public static function getForceMasterConnection() + { + return self::$forceMasterConnection; + } + + /** + * Sets a Connection for specified datasource name. + * + * @param string $name The datasource name for the connection being set. + * @param PropelPDO $con The PDO connection. + * @param string $mode Whether this is a READ or WRITE connection (Propel::CONNECTION_READ, Propel::CONNECTION_WRITE) + */ + public static function setConnection($name, PropelPDO $con, $mode = Propel::CONNECTION_WRITE) + { + if ($name === null) { + $name = self::getDefaultDB(); + } + if ($mode == Propel::CONNECTION_READ) { + self::$connectionMap[$name]['slave'] = $con; + } else { + self::$connectionMap[$name]['master'] = $con; + } + } + + /** + * Gets an already-opened PDO connection or opens a new one for passed-in db name. + * + * @param string $name The datasource name that is used to look up the DSN from the runtime configuation file. + * @param string $mode The connection mode (this applies to replication systems). + * + * @return PDO A database connection + * + * @throws PropelException - if connection cannot be configured or initialized. + */ + public static function getConnection($name = null, $mode = Propel::CONNECTION_WRITE) + { + if ($name === null) { + $name = self::getDefaultDB(); + } + + // IF a WRITE-mode connection was requested + // or Propel is configured to always use the master connection + // or the slave for this connection has already been set to FALSE (indicating no slave) + // THEN return the master connection. + if ($mode != Propel::CONNECTION_READ || self::$forceMasterConnection || (isset(self::$connectionMap[$name]['slave']) && self::$connectionMap[$name]['slave'] === false)) { + if (!isset(self::$connectionMap[$name]['master'])) { + // load connection parameter for master connection + $conparams = isset(self::$configuration['datasources'][$name]['connection']) ? self::$configuration['datasources'][$name]['connection'] : null; + if (empty($conparams)) { + throw new PropelException('No connection information in your runtime configuration file for datasource ['.$name.']'); + } + // initialize master connection + $con = Propel::initConnection($conparams, $name); + self::$connectionMap[$name]['master'] = $con; + } + + return self::$connectionMap[$name]['master']; + + } else { + + if (!isset(self::$connectionMap[$name]['slave'])) { + + // we've already ensured that the configuration exists, in previous if-statement + $slaveconfigs = isset(self::$configuration['datasources'][$name]['slaves']) ? self::$configuration['datasources'][$name]['slaves'] : null; + + if (empty($slaveconfigs)) { // no slaves configured for this datasource + self::$connectionMap[$name]['slave'] = false; + return self::getConnection($name, Propel::CONNECTION_WRITE); // Recurse to get the WRITE connection + } else { // Initialize a new slave + if (isset($slaveconfigs['connection']['dsn'])) { // only one slave connection configured + $conparams = $slaveconfigs['connection']; + } else { + $randkey = array_rand($slaveconfigs['connection']); + $conparams = $slaveconfigs['connection'][$randkey]; + if (empty($conparams)) { + throw new PropelException('No connection information in your runtime configuration file for SLAVE ['.$randkey.'] to datasource ['.$name.']'); + } + } + + // initialize master connection + $con = Propel::initConnection($conparams, $name); + self::$connectionMap[$name]['slave'] = $con; + } + + } // if datasource slave not set + + return self::$connectionMap[$name]['slave']; + + } // if mode == CONNECTION_WRITE + + } // getConnection() + + /** + * Opens a new PDO connection for passed-in db name. + * + * @param array $conparams Connection paramters. + * @param string $name Datasource name. + * @param string $defaultClass The PDO subclass to instantiate if there is no explicit classname + * specified in the connection params (default is Propel::CLASS_PROPEL_PDO) + * + * @return PDO A database connection of the given class (PDO, PropelPDO, SlavePDO or user-defined) + * + * @throws PropelException - if lower-level exception caught when trying to connect. + */ + public static function initConnection($conparams, $name, $defaultClass = Propel::CLASS_PROPEL_PDO) + { + + $dsn = $conparams['dsn']; + if ($dsn === null) { + throw new PropelException('No dsn specified in your connection parameters for datasource ['.$name.']'); + } + + if (isset($conparams['classname']) && !empty($conparams['classname'])) { + $classname = $conparams['classname']; + if (!class_exists($classname)) { + throw new PropelException('Unable to load specified PDO subclass: ' . $classname); + } + } else { + $classname = $defaultClass; + } + + $user = isset($conparams['user']) ? $conparams['user'] : null; + $password = isset($conparams['password']) ? $conparams['password'] : null; + + // load any driver options from the config file + // driver options are those PDO settings that have to be passed during the connection construction + $driver_options = array(); + if ( isset($conparams['options']) && is_array($conparams['options']) ) { + try { + self::processDriverOptions( $conparams['options'], $driver_options ); + } catch (PropelException $e) { + throw new PropelException('Error processing driver options for datasource ['.$name.']', $e); + } + } + + try { + $con = new $classname($dsn, $user, $password, $driver_options); + $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + } catch (PDOException $e) { + throw new PropelException("Unable to open PDO connection", $e); + } + + // load any connection options from the config file + // connection attributes are those PDO flags that have to be set on the initialized connection + if (isset($conparams['attributes']) && is_array($conparams['attributes'])) { + $attributes = array(); + try { + self::processDriverOptions( $conparams['attributes'], $attributes ); + } catch (PropelException $e) { + throw new PropelException('Error processing connection attributes for datasource ['.$name.']', $e); + } + foreach ($attributes as $key => $value) { + $con->setAttribute($key, $value); + } + } + + // initialize the connection using the settings provided in the config file. this could be a "SET NAMES " query for MySQL, for instance + $adapter = self::getDB($name); + $adapter->initConnection($con, isset($conparams['settings']) && is_array($conparams['settings']) ? $conparams['settings'] : array()); + + return $con; + } + + /** + * Internal function to handle driver options or conneciton attributes in PDO. + * + * Process the INI file flags to be passed to each connection. + * + * @param array Where to find the list of constant flags and their new setting. + * @param array Put the data into here + * + * @throws PropelException If invalid options were specified. + */ + private static function processDriverOptions($source, &$write_to) + { + foreach ($source as $option => $optiondata) { + if (is_string($option) && strpos($option, '::') !== false) { + $key = $option; + } elseif (is_string($option)) { + $key = 'PropelPDO::' . $option; + } + if (!defined($key)) { + throw new PropelException("Invalid PDO option/attribute name specified: ".$key); + } + $key = constant($key); + + $value = $optiondata['value']; + if (is_string($value) && strpos($value, '::') !== false) { + if (!defined($value)) { + throw new PropelException("Invalid PDO option/attribute value specified: ".$value); + } + $value = constant($value); + } + + $write_to[$key] = $value; + } + } + + /** + * Returns database adapter for a specific datasource. + * + * @param string The datasource name. + * + * @return DBAdapter The corresponding database adapter. + * + * @throws PropelException If unable to find DBdapter for specified db. + */ + public static function getDB($name = null) + { + if ($name === null) { + $name = self::getDefaultDB(); + } + + if (!isset(self::$adapterMap[$name])) { + if (!isset(self::$configuration['datasources'][$name]['adapter'])) { + throw new PropelException("Unable to find adapter for datasource [" . $name . "]."); + } + $db = DBAdapter::factory(self::$configuration['datasources'][$name]['adapter']); + // register the adapter for this name + self::$adapterMap[$name] = $db; + } + + return self::$adapterMap[$name]; + } + + /** + * Sets a database adapter for specified datasource. + * + * @param string $name The datasource name. + * @param DBAdapter $adapter The DBAdapter implementation to use. + */ + public static function setDB($name, DBAdapter $adapter) + { + if ($name === null) { + $name = self::getDefaultDB(); + } + self::$adapterMap[$name] = $adapter; + } + + /** + * Returns the name of the default database. + * + * @return string Name of the default DB + */ + public static function getDefaultDB() + { + if (self::$defaultDBName === null) { + // Determine default database name. + self::$defaultDBName = isset(self::$configuration['datasources']['default']) ? self::$configuration['datasources']['default'] : self::DEFAULT_NAME; + } + return self::$defaultDBName; + } + + /** + * Closes any associated resource handles. + * + * This method frees any database connection handles that have been + * opened by the getConnection() method. + */ + public static function close() + { + foreach (self::$connectionMap as $idx => $cons) { + // Propel::log("Closing connections for " . $idx, Propel::LOG_DEBUG); + unset(self::$connectionMap[$idx]); + } + } + + /** + * Autoload function for loading propel dependencies. + * + * @param string The class name needing loading. + * + * @return boolean TRUE if the class was loaded, false otherwise. + */ + public static function autoload($className) + { + if (isset(self::$autoloadMap[$className])) { + require(self::$autoloadMap[$className]); + return true; + } + return false; + } + + /** + * Include once a file specified in DOT notation and reutrn unqualified clasname. + * + * Typically, Propel uses autoload is used to load classes and expects that all classes + * referenced within Propel are included in Propel's autoload map. This method is only + * called when a specific non-Propel classname was specified -- for example, the + * classname of a validator in the schema.xml. This method will attempt to include that + * class via autoload and then relative to a location on the include_path. + * + * @param string $class dot-path to clas (e.g. path.to.my.ClassName). + * @return string unqualified classname + */ + public static function importClass($path) { + + // extract classname + if (($pos = strrpos($path, '.')) === false) { + $class = $path; + } else { + $class = substr($path, $pos + 1); + } + + // check if class exists, using autoloader to attempt to load it. + if (class_exists($class, $useAutoload=true)) { + return $class; + } + + // turn to filesystem path + $path = strtr($path, '.', DIRECTORY_SEPARATOR) . '.php'; + + // include class + $ret = include_once($path); + if ($ret === false) { + throw new PropelException("Unable to import class: " . $class . " from " . $path); + } + + // return qualified name + return $class; + } + + /** + * Set your own class-name for Database-Mapping. Then + * you can change the whole TableMap-Model, but keep its + * functionality for Criteria. + * + * @param string The name of the class. + */ + public static function setDatabaseMapClass($name) + { + self::$databaseMapClass = $name; + } + + /** + * Disable instance pooling. + */ + public static function disableInstancePooling() + { + self::$instancePoolingEnabled = false; + } + + /** + * Enable instance pooling (enabled by default). + */ + public static function enableInstancePooling() + { + self::$instancePoolingEnabled = true; + } + + /** + * the instance pooling behaviour. True by default. + * + * @return boolean Whether the pooling is enabled or not. + */ + public static function isInstancePoolingEnabled() + { + return self::$instancePoolingEnabled; + } +} + +spl_autoload_register(array('Propel', 'autoload')); diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/PropelException.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/PropelException.php new file mode 100644 index 0000000..f9c9583 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/PropelException.php @@ -0,0 +1,61 @@ +. + */ + +/** + * The base class of all exceptions thrown by Propel. + * @author Hans Lellelid + * @version $Revision: 1262 $ + * @package propel + */ +class PropelException extends Exception { + + /** The nested "cause" exception. */ + protected $cause; + + function __construct($p1, $p2 = null) { + + $cause = null; + + if ($p2 !== null) { + $msg = $p1; + $cause = $p2; + } else { + if ($p1 instanceof Exception) { + $msg = ""; + $cause = $p1; + } else { + $msg = $p1; + } + } + + parent::__construct($msg); + + if ($cause !== null) { + $this->cause = $cause; + $this->message .= " [wrapped: " . $cause->getMessage() ."]"; + } + } + + function getCause() { + return $this->cause; + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/all-wcprops new file mode 100644 index 0000000..fa20945 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/all-wcprops @@ -0,0 +1,47 @@ +K 25 +svn:wc:ra_dav:version-url +V 56 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/adapter +END +DBMySQL.php +K 25 +svn:wc:ra_dav:version-url +V 68 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/adapter/DBMySQL.php +END +DBOracle.php +K 25 +svn:wc:ra_dav:version-url +V 69 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/adapter/DBOracle.php +END +DBPostgres.php +K 25 +svn:wc:ra_dav:version-url +V 71 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/adapter/DBPostgres.php +END +DBMSSQL.php +K 25 +svn:wc:ra_dav:version-url +V 68 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/adapter/DBMSSQL.php +END +DBNone.php +K 25 +svn:wc:ra_dav:version-url +V 67 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/adapter/DBNone.php +END +DBAdapter.php +K 25 +svn:wc:ra_dav:version-url +V 70 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/adapter/DBAdapter.php +END +DBSQLite.php +K 25 +svn:wc:ra_dav:version-url +V 69 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/adapter/DBSQLite.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/entries new file mode 100644 index 0000000..03e7371 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/entries @@ -0,0 +1,269 @@ +10 + +dir +2332 +http://propel.mirror.svn.symfony-project.com/tags/1.4.2/runtime/classes/propel/adapter +http://propel.mirror.svn.symfony-project.com + + + +2009-10-29T21:39:18.186840Z +1267 +francois + + + + + + + + + + + + + + +a84bc4f6-26e8-416f-aa96-3cde13879fbb + +MSSQL +dir + +DBMySQL.php +file + + + + +2012-05-10T18:42:09.813551Z +ae4792e7e4cd564750548afe80ef90c0 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +4055 + +DBOracle.php +file + + + + +2012-05-10T18:42:09.813551Z +a264080852156b9049baa0d7bac543ee +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +3740 + +DBPostgres.php +file + + + + +2012-05-10T18:42:09.813551Z +9e6239cc8484351cb01c66ed82381045 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +3835 + +DBMSSQL.php +file + + + + +2012-05-10T18:42:09.813551Z +5cd0b6e09864fda6519885edf4a39f86 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +6252 + +DBNone.php +file + + + + +2012-05-10T18:42:09.821550Z +ae09d03db75cf0d161601aa194f47701 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +3069 + +DBAdapter.php +file + + + + +2012-05-10T18:42:09.825551Z +c8b9fba1dc4c4d4bc2b5ec02423a3293 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +9060 + +DBSQLite.php +file + + + + +2012-05-10T18:42:09.845552Z +db1f777ef1b7837db4189147b95dd753 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +3422 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/prop-base/DBAdapter.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/prop-base/DBAdapter.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/prop-base/DBAdapter.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/prop-base/DBMSSQL.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/prop-base/DBMSSQL.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/prop-base/DBMSSQL.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/prop-base/DBMySQL.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/prop-base/DBMySQL.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/prop-base/DBMySQL.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/prop-base/DBNone.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/prop-base/DBNone.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/prop-base/DBNone.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/prop-base/DBOracle.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/prop-base/DBOracle.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/prop-base/DBOracle.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/prop-base/DBPostgres.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/prop-base/DBPostgres.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/prop-base/DBPostgres.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/prop-base/DBSQLite.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/prop-base/DBSQLite.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/prop-base/DBSQLite.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/text-base/DBAdapter.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/text-base/DBAdapter.php.svn-base new file mode 100644 index 0000000..a401311 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/text-base/DBAdapter.php.svn-base @@ -0,0 +1,306 @@ +. + */ + +/** + * DBAdapter
    defines the interface for a Propel database adapter. + * + *

    Support for new databases is added by subclassing + * DBAdapter and implementing its abstract interface, and by + * registering the new database adapter and corresponding Creole + * driver in the private adapters map (array) in this class.

    + * + *

    The Propel database adapters exist to present a uniform + * interface to database access across all available databases. Once + * the necessary adapters have been written and configured, + * transparent swapping of databases is theoretically supported with + * zero code change and minimal configuration file + * modifications.

    + * + * @author Hans Lellelid (Propel) + * @author Jon S. Stevens (Torque) + * @author Brett McLaughlin (Torque) + * @author Daniel Rall (Torque) + * @version $Revision$ + * @package propel.adapter + */ +abstract class DBAdapter { + + const ID_METHOD_NONE = 0; + const ID_METHOD_AUTOINCREMENT = 1; + const ID_METHOD_SEQUENCE = 2; + + /** + * Creole driver to Propel adapter map. + * @var array + */ + private static $adapters = array( + 'mysql' => 'DBMySQL', + 'mysqli' => 'DBMySQLi', + 'mssql' => 'DBMSSQL', + 'dblib' => 'DBMSSQL', + 'sybase' => 'DBSybase', + 'oracle' => 'DBOracle', + 'pgsql' => 'DBPostgres', + 'sqlite' => 'DBSQLite', + '' => 'DBNone', + ); + + /** + * Creates a new instance of the database adapter associated + * with the specified Creole driver. + * + * @param string $driver The name of the Propel/Creole driver to + * create a new adapter instance for or a shorter form adapter key. + * @return DBAdapter An instance of a Propel database adapter. + * @throws PropelException if the adapter could not be instantiated. + */ + public static function factory($driver) { + $adapterClass = isset(self::$adapters[$driver]) ? self::$adapters[$driver] : null; + if ($adapterClass !== null) { + $a = new $adapterClass(); + return $a; + } else { + throw new PropelException("Unsupported Propel driver: " . $driver . ": Check your configuration file"); + } + } + + /** + * This method is called after a connection was created to run necessary + * post-initialization queries or code. + * + * If a charset was specified, this will be set before any other queries + * are executed. + * + * This base method runs queries specified using the "query" setting. + * + * @param PDO A PDO connection instance. + * @param array An array of settings. + * @see setCharset() + */ + public function initConnection(PDO $con, array $settings) + { + if (isset($settings['charset']['value'])) { + $this->setCharset($con, $settings['charset']['value']); + } + if (isset($settings['queries']) && is_array($settings['queries'])) { + foreach ($settings['queries'] as $queries) { + foreach ((array)$queries as $query) { + $con->exec($query); + } + } + } + } + + /** + * Sets the character encoding using SQL standard SET NAMES statement. + * + * This method is invoked from the default initConnection() method and must + * be overridden for an RDMBS which does _not_ support this SQL standard. + * + * @param PDO A PDO connection instance. + * @param string The charset encoding. + * @see initConnection() + */ + public function setCharset(PDO $con, $charset) + { + $con->exec("SET NAMES '" . $charset . "'"); + } + + /** + * This method is used to ignore case. + * + * @param string The string to transform to upper case. + * @return string The upper case string. + */ + public abstract function toUpperCase($in); + + /** + * Returns the character used to indicate the beginning and end of + * a piece of text used in a SQL statement (generally a single + * quote). + * + * @return string The text delimeter. + */ + public function getStringDelimiter() + { + return '\''; + } + + /** + * This method is used to ignore case. + * + * @param string $in The string whose case to ignore. + * @return string The string in a case that can be ignored. + */ + public abstract function ignoreCase($in); + + /** + * This method is used to ignore case in an ORDER BY clause. + * Usually it is the same as ignoreCase, but some databases + * (Interbase for example) does not use the same SQL in ORDER BY + * and other clauses. + * + * @param string $in The string whose case to ignore. + * @return string The string in a case that can be ignored. + */ + public function ignoreCaseInOrderBy($in) + { + return $this->ignoreCase($in); + } + + /** + * Returns SQL which concatenates the second string to the first. + * + * @param string String to concatenate. + * @param string String to append. + * @return string + */ + public abstract function concatString($s1, $s2); + + /** + * Returns SQL which extracts a substring. + * + * @param string String to extract from. + * @param int Offset to start from. + * @param int Number of characters to extract. + * @return string + */ + public abstract function subString($s, $pos, $len); + + /** + * Returns SQL which calculates the length (in chars) of a string. + * + * @param string String to calculate length of. + * @return string + */ + public abstract function strLength($s); + + + /** + * Quotes database objec identifiers (table names, col names, sequences, etc.). + * @param string $text The identifier to quote. + * @return string The quoted identifier. + */ + public function quoteIdentifier($text) + { + return '"' . $text . '"'; + } + + /** + * Quotes a database table which could have space seperating it from an alias, both should be identified seperately + * @param string $table The table name to quo + * @return string The quoted table name + **/ + public function quoteIdentifierTable($table) { + return implode(" ", array_map(array($this, "quoteIdentifier"), explode(" ", $table) ) ); + } + + /** + * Returns the native ID method for this RDBMS. + * @return int one of DBAdapter:ID_METHOD_SEQUENCE, DBAdapter::ID_METHOD_AUTOINCREMENT. + */ + protected function getIdMethod() + { + return DBAdapter::ID_METHOD_AUTOINCREMENT; + } + + /** + * Whether this adapter uses an ID generation system that requires getting ID _before_ performing INSERT. + * @return boolean + */ + public function isGetIdBeforeInsert() + { + return ($this->getIdMethod() === DBAdapter::ID_METHOD_SEQUENCE); + } + + /** + * Whether this adapter uses an ID generation system that requires getting ID _before_ performing INSERT. + * @return boolean + */ + public function isGetIdAfterInsert() + { + return ($this->getIdMethod() === DBAdapter::ID_METHOD_AUTOINCREMENT); + } + + /** + * Gets the generated ID (either last ID for autoincrement or next sequence ID). + * @return mixed + */ + public function getId(PDO $con, $name = null) + { + return $con->lastInsertId($name); + } + + /** + * Returns timestamp formatter string for use in date() function. + * @return string + */ + public function getTimestampFormatter() + { + return "Y-m-d H:i:s"; + } + + /** + * Returns date formatter string for use in date() function. + * @return string + */ + public function getDateFormatter() + { + return "Y-m-d"; + } + + /** + * Returns time formatter string for use in date() function. + * @return string + */ + public function getTimeFormatter() + { + return "H:i:s"; + } + + /** + * Should Column-Names get identifiers for inserts or updates. + * By default false is returned -> backwards compability. + * + * it`s a workaround...!!! + * + * @todo should be abstract + * @return boolean + * @deprecated + */ + public function useQuoteIdentifier() + { + return false; + } + + /** + * Modifies the passed-in SQL to add LIMIT and/or OFFSET. + */ + public abstract function applyLimit(&$sql, $offset, $limit); + + /** + * Gets the SQL string that this adapter uses for getting a random number. + * + * @param mixed $seed (optional) seed value for databases that support this + */ + public abstract function random($seed = null); + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/text-base/DBMSSQL.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/text-base/DBMSSQL.php.svn-base new file mode 100644 index 0000000..082fc4e --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/text-base/DBMSSQL.php.svn-base @@ -0,0 +1,194 @@ +. +*/ + +/** + * This is used to connect to a MSSQL database. + * + * @author Hans Lellelid (Propel) + * @version $Revision$ + * @package propel.adapter + */ +class DBMSSQL extends DBAdapter { + + /** + * This method is used to ignore case. + * + * @param in The string to transform to upper case. + * @return The upper case string. + */ + public function toUpperCase($in) + { + return "UPPER(" . $in . ")"; + } + + /** + * This method is used to ignore case. + * + * @param in The string whose case to ignore. + * @return The string in a case that can be ignored. + */ + public function ignoreCase($in) + { + return "UPPER(" . $in . ")"; + } + + /** + * Returns SQL which concatenates the second string to the first. + * + * @param string String to concatenate. + * @param string String to append. + * @return string + */ + public function concatString($s1, $s2) + { + return "($s1 + $s2)"; + } + + /** + * Returns SQL which extracts a substring. + * + * @param string String to extract from. + * @param int Offset to start from. + * @param int Number of characters to extract. + * @return string + */ + public function subString($s, $pos, $len) + { + return "SUBSTRING($s, $pos, $len)"; + } + + /** + * Returns SQL which calculates the length (in chars) of a string. + * + * @param string String to calculate length of. + * @return string + */ + public function strLength($s) + { + return "LEN($s)"; + } + + /** + * @see DBAdapter::quoteIdentifier() + */ + public function quoteIdentifier($text) + { + return '[' . $text . ']'; + } + + /** + * @see DBAdapter::random() + */ + public function random($seed = null) + { + return 'rand('.((int) $seed).')'; + } + + /** + * Simulated Limit/Offset + * This rewrites the $sql query to apply the offset and limit. + * @see DBAdapter::applyLimit() + * @author Justin Carlson + * @author Benjamin Runnels + */ + public function applyLimit(&$sql, $offset, $limit) + { + // make sure offset and limit are numeric + if (!is_numeric($offset) || !is_numeric($limit)) + { + throw new Exception("DBMSSQL::applyLimit() expects a number for argument 2 and 3"); + } + + //split the select and from clauses out of the original query + $selectSegment = array(); + preg_match('/\Aselect(.*)from(.*)/si',$sql,$selectSegment); + if (count($selectSegment)==3) + { + $selectStatement = trim($selectSegment[1]); + $fromStatement = trim($selectSegment[2]); + } + else + { + throw new Exception("DBMSSQL::applyLimit() could not locate the select statement at the start of the query. "); + } + + //handle the ORDER BY clause if present + $orderSegment = array(); + preg_match('/order by(.*)\Z/si',$fromStatement,$orderSegment); + if (count($orderSegment)==2) + { + //remove the ORDER BY from $sql + $fromStatement = trim(str_replace($orderSegment[0], '', $fromStatement)); + //the ORDER BY clause is used in our inner select ROW_NUMBER() clause + $countColumn = trim($orderSegment[1]); + } + + //setup inner and outer select selects + $innerSelect = ''; + $outerSelect = ''; + foreach(explode(', ',$selectStatement) as $selCol) { + @list($column,,$alias) = explode(' ', $selCol); + //make sure the current column isn't * or an aggregate + if ($column!='*' && !strstr($column,'(')) { + //we can use the first non-aggregate column for ROW_NUMBER() if it wasn't already set from an order by clause + if(!isset($countColumn)) { + $countColumn = $column; + } + + //add an alias to the inner select so all columns will be unique + $innerSelect .= $column." AS [$column],"; + + //use the alias in the outer select if one was present on the original select column + if(isset($alias)) { + $outerSelect .= "[$column] AS $alias,"; + } else { + $outerSelect .= "[$column],"; + } + } else { + //agregate columns must always have an alias clause + if(!isset($alias)) { + throw new Exception("DBMSSQL::applyLimit() requires aggregate columns to have an Alias clause"); + } + //use the whole aggregate column in the inner select + $innerSelect .= "$selCol,"; + //only add the alias for the aggregate to the outer select + $outerSelect .= "$alias,"; + } + } + + //check if we got this far and still don't have a viable column to user with ROW_NUMBER() + if(!isset($countColumn)) { + throw new Exception("DBMSSQL::applyLimit() requires an ORDER BY clause or at least one non-aggregate column in the select statement"); + } + + //ROW_NUMBER() starts at 1 not 0 + $from = ($offset+1); + $to = ($limit+$offset); + + //substring our select strings to get rid of the last comma and add our FROM and SELECT clauses + $innerSelect = "SELECT ROW_NUMBER() OVER(ORDER BY $countColumn) AS RowNumber, ".substr($innerSelect,0,-1).' FROM'; + $outerSelect = 'SELECT '.substr($outerSelect,0,-1).' FROM'; + + // build the query + $sql = "$outerSelect ($innerSelect $fromStatement) AS derivedb WHERE RowNumber BETWEEN $from AND $to"; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/text-base/DBMySQL.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/text-base/DBMySQL.php.svn-base new file mode 100644 index 0000000..b592297 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/text-base/DBMySQL.php.svn-base @@ -0,0 +1,156 @@ +. + */ + +/** + * This is used in order to connect to a MySQL database. + * + * @author Hans Lellelid (Propel) + * @author Jon S. Stevens (Torque) + * @author Brett McLaughlin (Torque) + * @author Daniel Rall (Torque) + * @version $Revision$ + * @package propel.adapter + */ +class DBMySQL extends DBAdapter { + + /** + * This method is used to ignore case. + * + * @param in The string to transform to upper case. + * @return The upper case string. + */ + public function toUpperCase($in) + { + return "UPPER(" . $in . ")"; + } + + /** + * This method is used to ignore case. + * + * @param in The string whose case to ignore. + * @return The string in a case that can be ignored. + */ + public function ignoreCase($in) + { + return "UPPER(" . $in . ")"; + } + + /** + * Returns SQL which concatenates the second string to the first. + * + * @param string String to concatenate. + * @param string String to append. + * @return string + */ + public function concatString($s1, $s2) + { + return "CONCAT($s1, $s2)"; + } + + /** + * Returns SQL which extracts a substring. + * + * @param string String to extract from. + * @param int Offset to start from. + * @param int Number of characters to extract. + * @return string + */ + public function subString($s, $pos, $len) + { + return "SUBSTRING($s, $pos, $len)"; + } + + /** + * Returns SQL which calculates the length (in chars) of a string. + * + * @param string String to calculate length of. + * @return string + */ + public function strLength($s) + { + return "CHAR_LENGTH($s)"; + } + + + /** + * Locks the specified table. + * + * @param Connection $con The Creole connection to use. + * @param string $table The name of the table to lock. + * @throws PDOException No Statement could be created or + * executed. + */ + public function lockTable(PDO $con, $table) + { + $con->exec("LOCK TABLE " . $table . " WRITE"); + } + + /** + * Unlocks the specified table. + * + * @param PDO $con The PDO connection to use. + * @param string $table The name of the table to unlock. + * @throws PDOException No Statement could be created or + * executed. + */ + public function unlockTable(PDO $con, $table) + { + $statement = $con->exec("UNLOCK TABLES"); + } + + /** + * @see DBAdapter::quoteIdentifier() + */ + public function quoteIdentifier($text) + { + return '`' . $text . '`'; + } + + /** + * @see DBAdapter::useQuoteIdentifier() + */ + public function useQuoteIdentifier() + { + return true; + } + + /** + * @see DBAdapter::applyLimit() + */ + public function applyLimit(&$sql, $offset, $limit) + { + if ( $limit > 0 ) { + $sql .= " LIMIT " . ($offset > 0 ? $offset . ", " : "") . $limit; + } else if ( $offset > 0 ) { + $sql .= " LIMIT " . $offset . ", 18446744073709551615"; + } + } + + /** + * @see DBAdapter::random() + */ + public function random($seed = null) + { + return 'rand('.((int) $seed).')'; + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/text-base/DBNone.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/text-base/DBNone.php.svn-base new file mode 100644 index 0000000..a4c8f70 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/text-base/DBNone.php.svn-base @@ -0,0 +1,115 @@ +. + */ + +/** + * This adapter is used when you do not have a database installed. + * + * @author Hans Lellelid (Propel) + * @author Jon S. Stevens (Torque) + * @author Brett McLaughlin (Torque) + * @version $Revision$ + * @package propel.adapter + */ +class DBNone extends DBAdapter { + + /** + * @see DBAdapter::initConnection() + */ + public function initConnection(PDO $con, array $settings) + { + } + + /** + * This method is used to ignore case. + * + * @param in The string to transform to upper case. + * @return The upper case string. + */ + public function toUpperCase($in) + { + return $in; + } + + /** + * This method is used to ignore case. + * + * @param in The string whose case to ignore. + * @return The string in a case that can be ignored. + */ + public function ignoreCase($in) + { + return $in; + } + + /** + * Returns SQL which concatenates the second string to the first. + * + * @param string String to concatenate. + * @param string String to append. + * @return string + */ + public function concatString($s1, $s2) + { + return ($s1 . $s2); + } + + /** + * Returns SQL which extracts a substring. + * + * @param string String to extract from. + * @param int Offset to start from. + * @param int Number of characters to extract. + * @return string + */ + public function subString($s, $pos, $len) + { + return substr($s, $pos, $len); + } + + /** + * Returns SQL which calculates the length (in chars) of a string. + * + * @param string String to calculate length of. + * @return string + */ + public function strLength($s) + { + return strlen($s); + } + + /** + * Modifies the passed-in SQL to add LIMIT and/or OFFSET. + */ + public function applyLimit(&$sql, $offset, $limit) + { + } + + /** + * Gets the SQL string that this adapter uses for getting a random number. + * + * @param mixed $seed (optional) seed value for databases that support this + */ + public function random($seed = null) + { + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/text-base/DBOracle.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/text-base/DBOracle.php.svn-base new file mode 100644 index 0000000..14dc0c1 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/text-base/DBOracle.php.svn-base @@ -0,0 +1,143 @@ +. + */ + +/** + * Oracle adapter. + * + * @author David Giffin (Propel) + * @author Hans Lellelid (Propel) + * @author Jon S. Stevens (Torque) + * @author Brett McLaughlin (Torque) + * @author Bill Schneider (Torque) + * @author Daniel Rall (Torque) + * @version $Revision$ + * @package propel.adapter + */ +class DBOracle extends DBAdapter { + + /** + * This method is used to ignore case. + * + * @param string $in The string to transform to upper case. + * @return string The upper case string. + */ + public function toUpperCase($in) + { + return "UPPER(" . $in . ")"; + } + + /** + * This method is used to ignore case. + * + * @param string $in The string whose case to ignore. + * @return string The string in a case that can be ignored. + */ + public function ignoreCase($in) + { + return "UPPER(" . $in . ")"; + } + + /** + * Returns SQL which concatenates the second string to the first. + * + * @param string String to concatenate. + * @param string String to append. + * @return string + */ + public function concatString($s1, $s2) + { + return "CONCAT($s1, $s2)"; + } + + /** + * Returns SQL which extracts a substring. + * + * @param string String to extract from. + * @param int Offset to start from. + * @param int Number of characters to extract. + * @return string + */ + public function subString($s, $pos, $len) + { + return "SUBSTR($s, $pos, $len)"; + } + + /** + * Returns SQL which calculates the length (in chars) of a string. + * + * @param string String to calculate length of. + * @return string + */ + public function strLength($s) + { + return "LENGTH($s)"; + } + + /** + * @see DBAdapter::applyLimit() + */ + public function applyLimit(&$sql, $offset, $limit) + { + $sql = + 'SELECT B.* FROM ( ' + . 'SELECT A.*, rownum AS PROPEL$ROWNUM FROM ( ' + . $sql + . ' ) A ' + . ' ) B WHERE '; + + if ( $offset > 0 ) { + $sql .= ' B.PROPEL$ROWNUM > ' . $offset; + + if ( $limit > 0 ) + { + $sql .= ' AND B.PROPEL$ROWNUM <= ' + . ( $offset + $limit ); + } + } else { + $sql .= ' B.PROPEL$ROWNUM <= ' . $limit; + } + } + + protected function getIdMethod() + { + return DBAdapter::ID_METHOD_SEQUENCE; + } + + public function getId(PDO $con, $name = null) + { + if ($name === null) { + throw new PropelException("Unable to fetch next sequence ID without sequence name."); + } + + $stmt = $con->query("SELECT " . $name . ".nextval FROM dual"); + $row = $stmt->fetch(PDO::FETCH_NUM); + + return $row[0]; + } + + public function random($seed=NULL) + { + return 'dbms_random.value'; + } + + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/text-base/DBPostgres.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/text-base/DBPostgres.php.svn-base new file mode 100644 index 0000000..34929c7 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/text-base/DBPostgres.php.svn-base @@ -0,0 +1,152 @@ +. + */ + +/** + * This is used to connect to PostgresQL databases. + * + * http://www.pgsql.org + * + * @author Hans Lellelid (Propel) + * @author Hakan Tandogan (Torque) + * @version $Revision$ + * @package propel.adapter + */ +class DBPostgres extends DBAdapter { + + /** + * This method is used to ignore case. + * + * @param string $in The string to transform to upper case. + * @return string The upper case string. + */ + public function toUpperCase($in) + { + return "UPPER(" . $in . ")"; + } + + /** + * This method is used to ignore case. + * + * @param in The string whose case to ignore. + * @return The string in a case that can be ignored. + */ + public function ignoreCase($in) + { + return "UPPER(" . $in . ")"; + } + + /** + * Returns SQL which concatenates the second string to the first. + * + * @param string String to concatenate. + * @param string String to append. + * @return string + */ + public function concatString($s1, $s2) + { + return "($s1 || $s2)"; + } + + /** + * Returns SQL which extracts a substring. + * + * @param string String to extract from. + * @param int Offset to start from. + * @param int Number of characters to extract. + * @return string + */ + public function subString($s, $pos, $len) + { + return "substring($s from $pos" . ($len > -1 ? "for $len" : "") . ")"; + } + + /** + * Returns SQL which calculates the length (in chars) of a string. + * + * @param string String to calculate length of. + * @return string + */ + public function strLength($s) + { + return "char_length($s)"; + } + + /** + * @see DBAdapter::getIdMethod() + */ + protected function getIdMethod() + { + return DBAdapter::ID_METHOD_SEQUENCE; + } + + /** + * Gets ID for specified sequence name. + */ + public function getId(PDO $con, $name = null) + { + if ($name === null) { + throw new PropelException("Unable to fetch next sequence ID without sequence name."); + } + $stmt = $con->query("SELECT nextval(".$con->quote($name).")"); + $row = $stmt->fetch(PDO::FETCH_NUM); + return $row[0]; + } + + /** + * Returns timestamp formatter string for use in date() function. + * @return string + */ + public function getTimestampFormatter() + { + return "Y-m-d H:i:s O"; + } + + /** + * Returns timestamp formatter string for use in date() function. + * @return string + */ + public function getTimeFormatter() + { + return "H:i:s O"; + } + + /** + * @see DBAdapter::applyLimit() + */ + public function applyLimit(&$sql, $offset, $limit) + { + if ( $limit > 0 ) { + $sql .= " LIMIT ".$limit; + } + if ( $offset > 0 ) { + $sql .= " OFFSET ".$offset; + } + } + + /** + * @see DBAdapter::random() + */ + public function random($seed=NULL) + { + return 'random()'; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/text-base/DBSQLite.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/text-base/DBSQLite.php.svn-base new file mode 100644 index 0000000..ec9b4d5 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/.svn/text-base/DBSQLite.php.svn-base @@ -0,0 +1,127 @@ +. + */ + +/** + * This is used in order to connect to a SQLite database. + * + * @author Hans Lellelid + * @version $Revision$ + * @package propel.adapter + */ +class DBSQLite extends DBAdapter { + + /** + * For SQLite this method has no effect, since SQLite doesn't support specifying a character + * set (or, another way to look at it, it doesn't require a single character set per DB). + * + * @param PDO A PDO connection instance. + * @param string The charset encoding. + * @throws PropelException If the specified charset doesn't match sqlite_libencoding() + */ + public function setCharset(PDO $con, $charset) + { + } + + /** + * This method is used to ignore case. + * + * @param in The string to transform to upper case. + * @return The upper case string. + */ + public function toUpperCase($in) + { + return 'UPPER(' . $in . ')'; + } + + /** + * This method is used to ignore case. + * + * @param in The string whose case to ignore. + * @return The string in a case that can be ignored. + */ + public function ignoreCase($in) + { + return 'UPPER(' . $in . ')'; + } + + /** + * Returns SQL which concatenates the second string to the first. + * + * @param string String to concatenate. + * @param string String to append. + * @return string + */ + public function concatString($s1, $s2) + { + return "($s1 || $s2)"; + } + + /** + * Returns SQL which extracts a substring. + * + * @param string String to extract from. + * @param int Offset to start from. + * @param int Number of characters to extract. + * @return string + */ + public function subString($s, $pos, $len) + { + return "substr($s, $pos, $len)"; + } + + /** + * Returns SQL which calculates the length (in chars) of a string. + * + * @param string String to calculate length of. + * @return string + */ + public function strLength($s) + { + return "length($s)"; + } + + /** + * @see DBAdapter::quoteIdentifier() + */ + public function quoteIdentifier($text) + { + return '[' . $text . ']'; + } + + /** + * @see DBAdapter::applyLimit() + */ + public function applyLimit(&$sql, $offset, $limit) + { + if ( $limit > 0 ) { + $sql .= " LIMIT " . $limit . ($offset > 0 ? " OFFSET " . $offset : ""); + } elseif ( $offset > 0 ) { + $sql .= " LIMIT -1 OFFSET " . $offset; + } + } + + public function random($seed=NULL) + { + return 'random()'; + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/DBAdapter.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/DBAdapter.php new file mode 100644 index 0000000..a01a85d --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/DBAdapter.php @@ -0,0 +1,306 @@ +. + */ + +/** + * DBAdapter
    defines the interface for a Propel database adapter. + * + *

    Support for new databases is added by subclassing + * DBAdapter and implementing its abstract interface, and by + * registering the new database adapter and corresponding Creole + * driver in the private adapters map (array) in this class.

    + * + *

    The Propel database adapters exist to present a uniform + * interface to database access across all available databases. Once + * the necessary adapters have been written and configured, + * transparent swapping of databases is theoretically supported with + * zero code change and minimal configuration file + * modifications.

    + * + * @author Hans Lellelid (Propel) + * @author Jon S. Stevens (Torque) + * @author Brett McLaughlin (Torque) + * @author Daniel Rall (Torque) + * @version $Revision: 1262 $ + * @package propel.adapter + */ +abstract class DBAdapter { + + const ID_METHOD_NONE = 0; + const ID_METHOD_AUTOINCREMENT = 1; + const ID_METHOD_SEQUENCE = 2; + + /** + * Creole driver to Propel adapter map. + * @var array + */ + private static $adapters = array( + 'mysql' => 'DBMySQL', + 'mysqli' => 'DBMySQLi', + 'mssql' => 'DBMSSQL', + 'dblib' => 'DBMSSQL', + 'sybase' => 'DBSybase', + 'oracle' => 'DBOracle', + 'pgsql' => 'DBPostgres', + 'sqlite' => 'DBSQLite', + '' => 'DBNone', + ); + + /** + * Creates a new instance of the database adapter associated + * with the specified Creole driver. + * + * @param string $driver The name of the Propel/Creole driver to + * create a new adapter instance for or a shorter form adapter key. + * @return DBAdapter An instance of a Propel database adapter. + * @throws PropelException if the adapter could not be instantiated. + */ + public static function factory($driver) { + $adapterClass = isset(self::$adapters[$driver]) ? self::$adapters[$driver] : null; + if ($adapterClass !== null) { + $a = new $adapterClass(); + return $a; + } else { + throw new PropelException("Unsupported Propel driver: " . $driver . ": Check your configuration file"); + } + } + + /** + * This method is called after a connection was created to run necessary + * post-initialization queries or code. + * + * If a charset was specified, this will be set before any other queries + * are executed. + * + * This base method runs queries specified using the "query" setting. + * + * @param PDO A PDO connection instance. + * @param array An array of settings. + * @see setCharset() + */ + public function initConnection(PDO $con, array $settings) + { + if (isset($settings['charset']['value'])) { + $this->setCharset($con, $settings['charset']['value']); + } + if (isset($settings['queries']) && is_array($settings['queries'])) { + foreach ($settings['queries'] as $queries) { + foreach ((array)$queries as $query) { + $con->exec($query); + } + } + } + } + + /** + * Sets the character encoding using SQL standard SET NAMES statement. + * + * This method is invoked from the default initConnection() method and must + * be overridden for an RDMBS which does _not_ support this SQL standard. + * + * @param PDO A PDO connection instance. + * @param string The charset encoding. + * @see initConnection() + */ + public function setCharset(PDO $con, $charset) + { + $con->exec("SET NAMES '" . $charset . "'"); + } + + /** + * This method is used to ignore case. + * + * @param string The string to transform to upper case. + * @return string The upper case string. + */ + public abstract function toUpperCase($in); + + /** + * Returns the character used to indicate the beginning and end of + * a piece of text used in a SQL statement (generally a single + * quote). + * + * @return string The text delimeter. + */ + public function getStringDelimiter() + { + return '\''; + } + + /** + * This method is used to ignore case. + * + * @param string $in The string whose case to ignore. + * @return string The string in a case that can be ignored. + */ + public abstract function ignoreCase($in); + + /** + * This method is used to ignore case in an ORDER BY clause. + * Usually it is the same as ignoreCase, but some databases + * (Interbase for example) does not use the same SQL in ORDER BY + * and other clauses. + * + * @param string $in The string whose case to ignore. + * @return string The string in a case that can be ignored. + */ + public function ignoreCaseInOrderBy($in) + { + return $this->ignoreCase($in); + } + + /** + * Returns SQL which concatenates the second string to the first. + * + * @param string String to concatenate. + * @param string String to append. + * @return string + */ + public abstract function concatString($s1, $s2); + + /** + * Returns SQL which extracts a substring. + * + * @param string String to extract from. + * @param int Offset to start from. + * @param int Number of characters to extract. + * @return string + */ + public abstract function subString($s, $pos, $len); + + /** + * Returns SQL which calculates the length (in chars) of a string. + * + * @param string String to calculate length of. + * @return string + */ + public abstract function strLength($s); + + + /** + * Quotes database objec identifiers (table names, col names, sequences, etc.). + * @param string $text The identifier to quote. + * @return string The quoted identifier. + */ + public function quoteIdentifier($text) + { + return '"' . $text . '"'; + } + + /** + * Quotes a database table which could have space seperating it from an alias, both should be identified seperately + * @param string $table The table name to quo + * @return string The quoted table name + **/ + public function quoteIdentifierTable($table) { + return implode(" ", array_map(array($this, "quoteIdentifier"), explode(" ", $table) ) ); + } + + /** + * Returns the native ID method for this RDBMS. + * @return int one of DBAdapter:ID_METHOD_SEQUENCE, DBAdapter::ID_METHOD_AUTOINCREMENT. + */ + protected function getIdMethod() + { + return DBAdapter::ID_METHOD_AUTOINCREMENT; + } + + /** + * Whether this adapter uses an ID generation system that requires getting ID _before_ performing INSERT. + * @return boolean + */ + public function isGetIdBeforeInsert() + { + return ($this->getIdMethod() === DBAdapter::ID_METHOD_SEQUENCE); + } + + /** + * Whether this adapter uses an ID generation system that requires getting ID _before_ performing INSERT. + * @return boolean + */ + public function isGetIdAfterInsert() + { + return ($this->getIdMethod() === DBAdapter::ID_METHOD_AUTOINCREMENT); + } + + /** + * Gets the generated ID (either last ID for autoincrement or next sequence ID). + * @return mixed + */ + public function getId(PDO $con, $name = null) + { + return $con->lastInsertId($name); + } + + /** + * Returns timestamp formatter string for use in date() function. + * @return string + */ + public function getTimestampFormatter() + { + return "Y-m-d H:i:s"; + } + + /** + * Returns date formatter string for use in date() function. + * @return string + */ + public function getDateFormatter() + { + return "Y-m-d"; + } + + /** + * Returns time formatter string for use in date() function. + * @return string + */ + public function getTimeFormatter() + { + return "H:i:s"; + } + + /** + * Should Column-Names get identifiers for inserts or updates. + * By default false is returned -> backwards compability. + * + * it`s a workaround...!!! + * + * @todo should be abstract + * @return boolean + * @deprecated + */ + public function useQuoteIdentifier() + { + return false; + } + + /** + * Modifies the passed-in SQL to add LIMIT and/or OFFSET. + */ + public abstract function applyLimit(&$sql, $offset, $limit); + + /** + * Gets the SQL string that this adapter uses for getting a random number. + * + * @param mixed $seed (optional) seed value for databases that support this + */ + public abstract function random($seed = null); + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/DBMSSQL.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/DBMSSQL.php new file mode 100644 index 0000000..963a667 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/DBMSSQL.php @@ -0,0 +1,194 @@ +. +*/ + +/** + * This is used to connect to a MSSQL database. + * + * @author Hans Lellelid (Propel) + * @version $Revision: 1262 $ + * @package propel.adapter + */ +class DBMSSQL extends DBAdapter { + + /** + * This method is used to ignore case. + * + * @param in The string to transform to upper case. + * @return The upper case string. + */ + public function toUpperCase($in) + { + return "UPPER(" . $in . ")"; + } + + /** + * This method is used to ignore case. + * + * @param in The string whose case to ignore. + * @return The string in a case that can be ignored. + */ + public function ignoreCase($in) + { + return "UPPER(" . $in . ")"; + } + + /** + * Returns SQL which concatenates the second string to the first. + * + * @param string String to concatenate. + * @param string String to append. + * @return string + */ + public function concatString($s1, $s2) + { + return "($s1 + $s2)"; + } + + /** + * Returns SQL which extracts a substring. + * + * @param string String to extract from. + * @param int Offset to start from. + * @param int Number of characters to extract. + * @return string + */ + public function subString($s, $pos, $len) + { + return "SUBSTRING($s, $pos, $len)"; + } + + /** + * Returns SQL which calculates the length (in chars) of a string. + * + * @param string String to calculate length of. + * @return string + */ + public function strLength($s) + { + return "LEN($s)"; + } + + /** + * @see DBAdapter::quoteIdentifier() + */ + public function quoteIdentifier($text) + { + return '[' . $text . ']'; + } + + /** + * @see DBAdapter::random() + */ + public function random($seed = null) + { + return 'rand('.((int) $seed).')'; + } + + /** + * Simulated Limit/Offset + * This rewrites the $sql query to apply the offset and limit. + * @see DBAdapter::applyLimit() + * @author Justin Carlson + * @author Benjamin Runnels + */ + public function applyLimit(&$sql, $offset, $limit) + { + // make sure offset and limit are numeric + if (!is_numeric($offset) || !is_numeric($limit)) + { + throw new Exception("DBMSSQL::applyLimit() expects a number for argument 2 and 3"); + } + + //split the select and from clauses out of the original query + $selectSegment = array(); + preg_match('/\Aselect(.*)from(.*)/si',$sql,$selectSegment); + if (count($selectSegment)==3) + { + $selectStatement = trim($selectSegment[1]); + $fromStatement = trim($selectSegment[2]); + } + else + { + throw new Exception("DBMSSQL::applyLimit() could not locate the select statement at the start of the query. "); + } + + //handle the ORDER BY clause if present + $orderSegment = array(); + preg_match('/order by(.*)\Z/si',$fromStatement,$orderSegment); + if (count($orderSegment)==2) + { + //remove the ORDER BY from $sql + $fromStatement = trim(str_replace($orderSegment[0], '', $fromStatement)); + //the ORDER BY clause is used in our inner select ROW_NUMBER() clause + $countColumn = trim($orderSegment[1]); + } + + //setup inner and outer select selects + $innerSelect = ''; + $outerSelect = ''; + foreach(explode(', ',$selectStatement) as $selCol) { + @list($column,,$alias) = explode(' ', $selCol); + //make sure the current column isn't * or an aggregate + if ($column!='*' && !strstr($column,'(')) { + //we can use the first non-aggregate column for ROW_NUMBER() if it wasn't already set from an order by clause + if(!isset($countColumn)) { + $countColumn = $column; + } + + //add an alias to the inner select so all columns will be unique + $innerSelect .= $column." AS [$column],"; + + //use the alias in the outer select if one was present on the original select column + if(isset($alias)) { + $outerSelect .= "[$column] AS $alias,"; + } else { + $outerSelect .= "[$column],"; + } + } else { + //agregate columns must always have an alias clause + if(!isset($alias)) { + throw new Exception("DBMSSQL::applyLimit() requires aggregate columns to have an Alias clause"); + } + //use the whole aggregate column in the inner select + $innerSelect .= "$selCol,"; + //only add the alias for the aggregate to the outer select + $outerSelect .= "$alias,"; + } + } + + //check if we got this far and still don't have a viable column to user with ROW_NUMBER() + if(!isset($countColumn)) { + throw new Exception("DBMSSQL::applyLimit() requires an ORDER BY clause or at least one non-aggregate column in the select statement"); + } + + //ROW_NUMBER() starts at 1 not 0 + $from = ($offset+1); + $to = ($limit+$offset); + + //substring our select strings to get rid of the last comma and add our FROM and SELECT clauses + $innerSelect = "SELECT ROW_NUMBER() OVER(ORDER BY $countColumn) AS RowNumber, ".substr($innerSelect,0,-1).' FROM'; + $outerSelect = 'SELECT '.substr($outerSelect,0,-1).' FROM'; + + // build the query + $sql = "$outerSelect ($innerSelect $fromStatement) AS derivedb WHERE RowNumber BETWEEN $from AND $to"; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/DBMySQL.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/DBMySQL.php new file mode 100644 index 0000000..caad4ee --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/DBMySQL.php @@ -0,0 +1,156 @@ +. + */ + +/** + * This is used in order to connect to a MySQL database. + * + * @author Hans Lellelid (Propel) + * @author Jon S. Stevens (Torque) + * @author Brett McLaughlin (Torque) + * @author Daniel Rall (Torque) + * @version $Revision: 1262 $ + * @package propel.adapter + */ +class DBMySQL extends DBAdapter { + + /** + * This method is used to ignore case. + * + * @param in The string to transform to upper case. + * @return The upper case string. + */ + public function toUpperCase($in) + { + return "UPPER(" . $in . ")"; + } + + /** + * This method is used to ignore case. + * + * @param in The string whose case to ignore. + * @return The string in a case that can be ignored. + */ + public function ignoreCase($in) + { + return "UPPER(" . $in . ")"; + } + + /** + * Returns SQL which concatenates the second string to the first. + * + * @param string String to concatenate. + * @param string String to append. + * @return string + */ + public function concatString($s1, $s2) + { + return "CONCAT($s1, $s2)"; + } + + /** + * Returns SQL which extracts a substring. + * + * @param string String to extract from. + * @param int Offset to start from. + * @param int Number of characters to extract. + * @return string + */ + public function subString($s, $pos, $len) + { + return "SUBSTRING($s, $pos, $len)"; + } + + /** + * Returns SQL which calculates the length (in chars) of a string. + * + * @param string String to calculate length of. + * @return string + */ + public function strLength($s) + { + return "CHAR_LENGTH($s)"; + } + + + /** + * Locks the specified table. + * + * @param Connection $con The Creole connection to use. + * @param string $table The name of the table to lock. + * @throws PDOException No Statement could be created or + * executed. + */ + public function lockTable(PDO $con, $table) + { + $con->exec("LOCK TABLE " . $table . " WRITE"); + } + + /** + * Unlocks the specified table. + * + * @param PDO $con The PDO connection to use. + * @param string $table The name of the table to unlock. + * @throws PDOException No Statement could be created or + * executed. + */ + public function unlockTable(PDO $con, $table) + { + $statement = $con->exec("UNLOCK TABLES"); + } + + /** + * @see DBAdapter::quoteIdentifier() + */ + public function quoteIdentifier($text) + { + return '`' . $text . '`'; + } + + /** + * @see DBAdapter::useQuoteIdentifier() + */ + public function useQuoteIdentifier() + { + return true; + } + + /** + * @see DBAdapter::applyLimit() + */ + public function applyLimit(&$sql, $offset, $limit) + { + if ( $limit > 0 ) { + $sql .= " LIMIT " . ($offset > 0 ? $offset . ", " : "") . $limit; + } else if ( $offset > 0 ) { + $sql .= " LIMIT " . $offset . ", 18446744073709551615"; + } + } + + /** + * @see DBAdapter::random() + */ + public function random($seed = null) + { + return 'rand('.((int) $seed).')'; + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/DBNone.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/DBNone.php new file mode 100644 index 0000000..8e50853 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/DBNone.php @@ -0,0 +1,115 @@ +. + */ + +/** + * This adapter is used when you do not have a database installed. + * + * @author Hans Lellelid (Propel) + * @author Jon S. Stevens (Torque) + * @author Brett McLaughlin (Torque) + * @version $Revision: 1262 $ + * @package propel.adapter + */ +class DBNone extends DBAdapter { + + /** + * @see DBAdapter::initConnection() + */ + public function initConnection(PDO $con, array $settings) + { + } + + /** + * This method is used to ignore case. + * + * @param in The string to transform to upper case. + * @return The upper case string. + */ + public function toUpperCase($in) + { + return $in; + } + + /** + * This method is used to ignore case. + * + * @param in The string whose case to ignore. + * @return The string in a case that can be ignored. + */ + public function ignoreCase($in) + { + return $in; + } + + /** + * Returns SQL which concatenates the second string to the first. + * + * @param string String to concatenate. + * @param string String to append. + * @return string + */ + public function concatString($s1, $s2) + { + return ($s1 . $s2); + } + + /** + * Returns SQL which extracts a substring. + * + * @param string String to extract from. + * @param int Offset to start from. + * @param int Number of characters to extract. + * @return string + */ + public function subString($s, $pos, $len) + { + return substr($s, $pos, $len); + } + + /** + * Returns SQL which calculates the length (in chars) of a string. + * + * @param string String to calculate length of. + * @return string + */ + public function strLength($s) + { + return strlen($s); + } + + /** + * Modifies the passed-in SQL to add LIMIT and/or OFFSET. + */ + public function applyLimit(&$sql, $offset, $limit) + { + } + + /** + * Gets the SQL string that this adapter uses for getting a random number. + * + * @param mixed $seed (optional) seed value for databases that support this + */ + public function random($seed = null) + { + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/DBOracle.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/DBOracle.php new file mode 100644 index 0000000..759c0d6 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/DBOracle.php @@ -0,0 +1,143 @@ +. + */ + +/** + * Oracle adapter. + * + * @author David Giffin (Propel) + * @author Hans Lellelid (Propel) + * @author Jon S. Stevens (Torque) + * @author Brett McLaughlin (Torque) + * @author Bill Schneider (Torque) + * @author Daniel Rall (Torque) + * @version $Revision: 1262 $ + * @package propel.adapter + */ +class DBOracle extends DBAdapter { + + /** + * This method is used to ignore case. + * + * @param string $in The string to transform to upper case. + * @return string The upper case string. + */ + public function toUpperCase($in) + { + return "UPPER(" . $in . ")"; + } + + /** + * This method is used to ignore case. + * + * @param string $in The string whose case to ignore. + * @return string The string in a case that can be ignored. + */ + public function ignoreCase($in) + { + return "UPPER(" . $in . ")"; + } + + /** + * Returns SQL which concatenates the second string to the first. + * + * @param string String to concatenate. + * @param string String to append. + * @return string + */ + public function concatString($s1, $s2) + { + return "CONCAT($s1, $s2)"; + } + + /** + * Returns SQL which extracts a substring. + * + * @param string String to extract from. + * @param int Offset to start from. + * @param int Number of characters to extract. + * @return string + */ + public function subString($s, $pos, $len) + { + return "SUBSTR($s, $pos, $len)"; + } + + /** + * Returns SQL which calculates the length (in chars) of a string. + * + * @param string String to calculate length of. + * @return string + */ + public function strLength($s) + { + return "LENGTH($s)"; + } + + /** + * @see DBAdapter::applyLimit() + */ + public function applyLimit(&$sql, $offset, $limit) + { + $sql = + 'SELECT B.* FROM ( ' + . 'SELECT A.*, rownum AS PROPEL$ROWNUM FROM ( ' + . $sql + . ' ) A ' + . ' ) B WHERE '; + + if ( $offset > 0 ) { + $sql .= ' B.PROPEL$ROWNUM > ' . $offset; + + if ( $limit > 0 ) + { + $sql .= ' AND B.PROPEL$ROWNUM <= ' + . ( $offset + $limit ); + } + } else { + $sql .= ' B.PROPEL$ROWNUM <= ' . $limit; + } + } + + protected function getIdMethod() + { + return DBAdapter::ID_METHOD_SEQUENCE; + } + + public function getId(PDO $con, $name = null) + { + if ($name === null) { + throw new PropelException("Unable to fetch next sequence ID without sequence name."); + } + + $stmt = $con->query("SELECT " . $name . ".nextval FROM dual"); + $row = $stmt->fetch(PDO::FETCH_NUM); + + return $row[0]; + } + + public function random($seed=NULL) + { + return 'dbms_random.value'; + } + + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/DBPostgres.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/DBPostgres.php new file mode 100644 index 0000000..3dc32cd --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/DBPostgres.php @@ -0,0 +1,152 @@ +. + */ + +/** + * This is used to connect to PostgresQL databases. + * + * http://www.pgsql.org + * + * @author Hans Lellelid (Propel) + * @author Hakan Tandogan (Torque) + * @version $Revision: 1262 $ + * @package propel.adapter + */ +class DBPostgres extends DBAdapter { + + /** + * This method is used to ignore case. + * + * @param string $in The string to transform to upper case. + * @return string The upper case string. + */ + public function toUpperCase($in) + { + return "UPPER(" . $in . ")"; + } + + /** + * This method is used to ignore case. + * + * @param in The string whose case to ignore. + * @return The string in a case that can be ignored. + */ + public function ignoreCase($in) + { + return "UPPER(" . $in . ")"; + } + + /** + * Returns SQL which concatenates the second string to the first. + * + * @param string String to concatenate. + * @param string String to append. + * @return string + */ + public function concatString($s1, $s2) + { + return "($s1 || $s2)"; + } + + /** + * Returns SQL which extracts a substring. + * + * @param string String to extract from. + * @param int Offset to start from. + * @param int Number of characters to extract. + * @return string + */ + public function subString($s, $pos, $len) + { + return "substring($s from $pos" . ($len > -1 ? "for $len" : "") . ")"; + } + + /** + * Returns SQL which calculates the length (in chars) of a string. + * + * @param string String to calculate length of. + * @return string + */ + public function strLength($s) + { + return "char_length($s)"; + } + + /** + * @see DBAdapter::getIdMethod() + */ + protected function getIdMethod() + { + return DBAdapter::ID_METHOD_SEQUENCE; + } + + /** + * Gets ID for specified sequence name. + */ + public function getId(PDO $con, $name = null) + { + if ($name === null) { + throw new PropelException("Unable to fetch next sequence ID without sequence name."); + } + $stmt = $con->query("SELECT nextval(".$con->quote($name).")"); + $row = $stmt->fetch(PDO::FETCH_NUM); + return $row[0]; + } + + /** + * Returns timestamp formatter string for use in date() function. + * @return string + */ + public function getTimestampFormatter() + { + return "Y-m-d H:i:s O"; + } + + /** + * Returns timestamp formatter string for use in date() function. + * @return string + */ + public function getTimeFormatter() + { + return "H:i:s O"; + } + + /** + * @see DBAdapter::applyLimit() + */ + public function applyLimit(&$sql, $offset, $limit) + { + if ( $limit > 0 ) { + $sql .= " LIMIT ".$limit; + } + if ( $offset > 0 ) { + $sql .= " OFFSET ".$offset; + } + } + + /** + * @see DBAdapter::random() + */ + public function random($seed=NULL) + { + return 'random()'; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/DBSQLite.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/DBSQLite.php new file mode 100644 index 0000000..f7bdf66 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/DBSQLite.php @@ -0,0 +1,127 @@ +. + */ + +/** + * This is used in order to connect to a SQLite database. + * + * @author Hans Lellelid + * @version $Revision: 1262 $ + * @package propel.adapter + */ +class DBSQLite extends DBAdapter { + + /** + * For SQLite this method has no effect, since SQLite doesn't support specifying a character + * set (or, another way to look at it, it doesn't require a single character set per DB). + * + * @param PDO A PDO connection instance. + * @param string The charset encoding. + * @throws PropelException If the specified charset doesn't match sqlite_libencoding() + */ + public function setCharset(PDO $con, $charset) + { + } + + /** + * This method is used to ignore case. + * + * @param in The string to transform to upper case. + * @return The upper case string. + */ + public function toUpperCase($in) + { + return 'UPPER(' . $in . ')'; + } + + /** + * This method is used to ignore case. + * + * @param in The string whose case to ignore. + * @return The string in a case that can be ignored. + */ + public function ignoreCase($in) + { + return 'UPPER(' . $in . ')'; + } + + /** + * Returns SQL which concatenates the second string to the first. + * + * @param string String to concatenate. + * @param string String to append. + * @return string + */ + public function concatString($s1, $s2) + { + return "($s1 || $s2)"; + } + + /** + * Returns SQL which extracts a substring. + * + * @param string String to extract from. + * @param int Offset to start from. + * @param int Number of characters to extract. + * @return string + */ + public function subString($s, $pos, $len) + { + return "substr($s, $pos, $len)"; + } + + /** + * Returns SQL which calculates the length (in chars) of a string. + * + * @param string String to calculate length of. + * @return string + */ + public function strLength($s) + { + return "length($s)"; + } + + /** + * @see DBAdapter::quoteIdentifier() + */ + public function quoteIdentifier($text) + { + return '[' . $text . ']'; + } + + /** + * @see DBAdapter::applyLimit() + */ + public function applyLimit(&$sql, $offset, $limit) + { + if ( $limit > 0 ) { + $sql .= " LIMIT " . $limit . ($offset > 0 ? " OFFSET " . $offset : ""); + } elseif ( $offset > 0 ) { + $sql .= " LIMIT -1 OFFSET " . $offset; + } + } + + public function random($seed=NULL) + { + return 'random()'; + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/MSSQL/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/MSSQL/.svn/all-wcprops new file mode 100644 index 0000000..eb6f68a --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/MSSQL/.svn/all-wcprops @@ -0,0 +1,23 @@ +K 25 +svn:wc:ra_dav:version-url +V 62 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/adapter/MSSQL +END +MssqlDebugPDO.php +K 25 +svn:wc:ra_dav:version-url +V 80 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/adapter/MSSQL/MssqlDebugPDO.php +END +MssqlDateTime.class.php +K 25 +svn:wc:ra_dav:version-url +V 86 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/adapter/MSSQL/MssqlDateTime.class.php +END +MssqlPropelPDO.php +K 25 +svn:wc:ra_dav:version-url +V 81 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/adapter/MSSQL/MssqlPropelPDO.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/MSSQL/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/MSSQL/.svn/entries new file mode 100644 index 0000000..48b18b5 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/MSSQL/.svn/entries @@ -0,0 +1,130 @@ +10 + +dir +2332 +http://propel.mirror.svn.symfony-project.com/tags/1.4.2/runtime/classes/propel/adapter/MSSQL +http://propel.mirror.svn.symfony-project.com + + + +2009-10-29T21:39:18.186840Z +1267 +francois + + + + + + + + + + + + + + +a84bc4f6-26e8-416f-aa96-3cde13879fbb + +MssqlDebugPDO.php +file + + + + +2012-05-10T18:42:09.725546Z +3d973dadec6d9c32cadd005bfb31104d +2009-10-29T21:39:18.186840Z +1267 +francois +has-props + + + + + + + + + + + + + + + + + + + + +2782 + +MssqlDateTime.class.php +file + + + + +2012-05-10T18:42:09.729552Z +766e4c2e9f5e004ee4848fd8de0cca17 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +627 + +MssqlPropelPDO.php +file + + + + +2012-05-10T18:42:09.729552Z +c671639beacaec0da602fb10da25ed07 +2009-10-29T21:39:18.186840Z +1267 +francois +has-props + + + + + + + + + + + + + + + + + + + + +2784 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/MSSQL/.svn/prop-base/MssqlDateTime.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/MSSQL/.svn/prop-base/MssqlDateTime.class.php.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/MSSQL/.svn/prop-base/MssqlDateTime.class.php.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/MSSQL/.svn/prop-base/MssqlDebugPDO.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/MSSQL/.svn/prop-base/MssqlDebugPDO.php.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/MSSQL/.svn/prop-base/MssqlDebugPDO.php.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/MSSQL/.svn/prop-base/MssqlPropelPDO.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/MSSQL/.svn/prop-base/MssqlPropelPDO.php.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/MSSQL/.svn/prop-base/MssqlPropelPDO.php.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/MSSQL/.svn/text-base/MssqlDateTime.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/MSSQL/.svn/text-base/MssqlDateTime.class.php.svn-base new file mode 100644 index 0000000..4df0f8c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/MSSQL/.svn/text-base/MssqlDateTime.class.php.svn-base @@ -0,0 +1,27 @@ +getNestedTransactionCount(); + if ( $opcount === 0 ) { + $return = self::exec('BEGIN TRANSACTION'); + $this->isUncommitable = false; + } + $this->incrementNestedTransactionCount(); + return $return; + } + + /** + * Commit a transaction. + * + * It is necessary to override the abstract PDO transaction functions here, as + * the PDO driver for MSSQL does not support transactions. + */ + public function commit() + { + $return = true; + $opcount = $this->getNestedTransactionCount(); + if ($opcount > 0) { + if ($opcount === 1) { + if ($this->isUncommitable) { + throw new PropelException('Cannot commit because a nested transaction was rolled back'); + } else { + $return = self::exec('COMMIT TRANSACTION'); + } + } + $this->decrementNestedTransactionCount(); + } + return $return; + } + + /** + * Roll-back a transaction. + * + * It is necessary to override the abstract PDO transaction functions here, as + * the PDO driver for MSSQL does not support transactions. + */ + public function rollBack() + { + $return = true; + $opcount = $this->getNestedTransactionCount(); + if ($opcount > 0) { + if ($opcount === 1) { + $return = self::exec('ROLLBACK TRANSACTION'); + } else { + $this->isUncommitable = true; + } + $this->decrementNestedTransactionCount(); + } + return $return; + } + + /** + * Rollback the whole transaction, even if this is a nested rollback + * and reset the nested transaction count to 0. + * + * It is necessary to override the abstract PDO transaction functions here, as + * the PDO driver for MSSQL does not support transactions. + */ + public function forceRollBack() + { + $return = true; + $opcount = $this->getNestedTransactionCount(); + if ($opcount > 0) { + // If we're in a transaction, always roll it back + // regardless of nesting level. + $return = self::exec('ROLLBACK TRANSACTION'); + + // reset nested transaction count to 0 so that we don't + // try to commit (or rollback) the transaction outside this scope. + $this->nestedTransactionCount = 0; + } + return $return; + } + + public function lastInsertId($seqname = null) + { + $result = self::query('SELECT SCOPE_IDENTITY()'); + return (int)$result->fetchColumn(); + } + + public function quoteIdentifier($text) + { + return '[' . $text . ']'; + } + + public function useQuoteIdentifier() + { + return true; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/MSSQL/.svn/text-base/MssqlPropelPDO.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/MSSQL/.svn/text-base/MssqlPropelPDO.php.svn-base new file mode 100644 index 0000000..10753a3 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/MSSQL/.svn/text-base/MssqlPropelPDO.php.svn-base @@ -0,0 +1,110 @@ +getNestedTransactionCount(); + if ( $opcount === 0 ) { + $return = self::exec('BEGIN TRANSACTION'); + $this->isUncommitable = false; + } + $this->incrementNestedTransactionCount(); + return $return; + } + + /** + * Commit a transaction. + * + * It is necessary to override the abstract PDO transaction functions here, as + * the PDO driver for MSSQL does not support transactions. + */ + public function commit() + { + $return = true; + $opcount = $this->getNestedTransactionCount(); + if ($opcount > 0) { + if ($opcount === 1) { + if ($this->isUncommitable) { + throw new PropelException('Cannot commit because a nested transaction was rolled back'); + } else { + $return = self::exec('COMMIT TRANSACTION'); + } + } + $this->decrementNestedTransactionCount(); + } + return $return; + } + + /** + * Roll-back a transaction. + * + * It is necessary to override the abstract PDO transaction functions here, as + * the PDO driver for MSSQL does not support transactions. + */ + public function rollBack() + { + $return = true; + $opcount = $this->getNestedTransactionCount(); + if ($opcount > 0) { + if ($opcount === 1) { + $return = self::exec('ROLLBACK TRANSACTION'); + } else { + $this->isUncommitable = true; + } + $this->decrementNestedTransactionCount(); + } + return $return; + } + + /** + * Rollback the whole transaction, even if this is a nested rollback + * and reset the nested transaction count to 0. + * + * It is necessary to override the abstract PDO transaction functions here, as + * the PDO driver for MSSQL does not support transactions. + */ + public function forceRollBack() + { + $return = true; + $opcount = $this->getNestedTransactionCount(); + if ($opcount > 0) { + // If we're in a transaction, always roll it back + // regardless of nesting level. + $return = self::exec('ROLLBACK TRANSACTION'); + + // reset nested transaction count to 0 so that we don't + // try to commit (or rollback) the transaction outside this scope. + $this->nestedTransactionCount = 0; + } + return $return; + } + + public function lastInsertId($seqname = null) + { + $result = self::query('SELECT SCOPE_IDENTITY()'); + return (int)$result->fetchColumn(); + } + + public function quoteIdentifier($text) + { + return '[' . $text . ']'; + } + + public function useQuoteIdentifier() + { + return true; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/MSSQL/MssqlDateTime.class.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/MSSQL/MssqlDateTime.class.php new file mode 100644 index 0000000..4df0f8c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/MSSQL/MssqlDateTime.class.php @@ -0,0 +1,27 @@ +getNestedTransactionCount(); + if ( $opcount === 0 ) { + $return = self::exec('BEGIN TRANSACTION'); + $this->isUncommitable = false; + } + $this->incrementNestedTransactionCount(); + return $return; + } + + /** + * Commit a transaction. + * + * It is necessary to override the abstract PDO transaction functions here, as + * the PDO driver for MSSQL does not support transactions. + */ + public function commit() + { + $return = true; + $opcount = $this->getNestedTransactionCount(); + if ($opcount > 0) { + if ($opcount === 1) { + if ($this->isUncommitable) { + throw new PropelException('Cannot commit because a nested transaction was rolled back'); + } else { + $return = self::exec('COMMIT TRANSACTION'); + } + } + $this->decrementNestedTransactionCount(); + } + return $return; + } + + /** + * Roll-back a transaction. + * + * It is necessary to override the abstract PDO transaction functions here, as + * the PDO driver for MSSQL does not support transactions. + */ + public function rollBack() + { + $return = true; + $opcount = $this->getNestedTransactionCount(); + if ($opcount > 0) { + if ($opcount === 1) { + $return = self::exec('ROLLBACK TRANSACTION'); + } else { + $this->isUncommitable = true; + } + $this->decrementNestedTransactionCount(); + } + return $return; + } + + /** + * Rollback the whole transaction, even if this is a nested rollback + * and reset the nested transaction count to 0. + * + * It is necessary to override the abstract PDO transaction functions here, as + * the PDO driver for MSSQL does not support transactions. + */ + public function forceRollBack() + { + $return = true; + $opcount = $this->getNestedTransactionCount(); + if ($opcount > 0) { + // If we're in a transaction, always roll it back + // regardless of nesting level. + $return = self::exec('ROLLBACK TRANSACTION'); + + // reset nested transaction count to 0 so that we don't + // try to commit (or rollback) the transaction outside this scope. + $this->nestedTransactionCount = 0; + } + return $return; + } + + public function lastInsertId($seqname = null) + { + $result = self::query('SELECT SCOPE_IDENTITY()'); + return (int)$result->fetchColumn(); + } + + public function quoteIdentifier($text) + { + return '[' . $text . ']'; + } + + public function useQuoteIdentifier() + { + return true; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/MSSQL/MssqlPropelPDO.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/MSSQL/MssqlPropelPDO.php new file mode 100644 index 0000000..10753a3 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/adapter/MSSQL/MssqlPropelPDO.php @@ -0,0 +1,110 @@ +getNestedTransactionCount(); + if ( $opcount === 0 ) { + $return = self::exec('BEGIN TRANSACTION'); + $this->isUncommitable = false; + } + $this->incrementNestedTransactionCount(); + return $return; + } + + /** + * Commit a transaction. + * + * It is necessary to override the abstract PDO transaction functions here, as + * the PDO driver for MSSQL does not support transactions. + */ + public function commit() + { + $return = true; + $opcount = $this->getNestedTransactionCount(); + if ($opcount > 0) { + if ($opcount === 1) { + if ($this->isUncommitable) { + throw new PropelException('Cannot commit because a nested transaction was rolled back'); + } else { + $return = self::exec('COMMIT TRANSACTION'); + } + } + $this->decrementNestedTransactionCount(); + } + return $return; + } + + /** + * Roll-back a transaction. + * + * It is necessary to override the abstract PDO transaction functions here, as + * the PDO driver for MSSQL does not support transactions. + */ + public function rollBack() + { + $return = true; + $opcount = $this->getNestedTransactionCount(); + if ($opcount > 0) { + if ($opcount === 1) { + $return = self::exec('ROLLBACK TRANSACTION'); + } else { + $this->isUncommitable = true; + } + $this->decrementNestedTransactionCount(); + } + return $return; + } + + /** + * Rollback the whole transaction, even if this is a nested rollback + * and reset the nested transaction count to 0. + * + * It is necessary to override the abstract PDO transaction functions here, as + * the PDO driver for MSSQL does not support transactions. + */ + public function forceRollBack() + { + $return = true; + $opcount = $this->getNestedTransactionCount(); + if ($opcount > 0) { + // If we're in a transaction, always roll it back + // regardless of nesting level. + $return = self::exec('ROLLBACK TRANSACTION'); + + // reset nested transaction count to 0 so that we don't + // try to commit (or rollback) the transaction outside this scope. + $this->nestedTransactionCount = 0; + } + return $return; + } + + public function lastInsertId($seqname = null) + { + $result = self::query('SELECT SCOPE_IDENTITY()'); + return (int)$result->fetchColumn(); + } + + public function quoteIdentifier($text) + { + return '[' . $text . ']'; + } + + public function useQuoteIdentifier() + { + return true; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/logger/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/logger/.svn/all-wcprops new file mode 100644 index 0000000..3627b18 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/logger/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 55 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/logger +END +BasicLogger.php +K 25 +svn:wc:ra_dav:version-url +V 71 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/logger/BasicLogger.php +END +MojaviLogAdapter.php +K 25 +svn:wc:ra_dav:version-url +V 76 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/logger/MojaviLogAdapter.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/logger/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/logger/.svn/entries new file mode 100644 index 0000000..6431bc4 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/logger/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +2332 +http://propel.mirror.svn.symfony-project.com/tags/1.4.2/runtime/classes/propel/logger +http://propel.mirror.svn.symfony-project.com + + + +2009-10-26T20:54:39.333354Z +1262 +francois + + + + + + + + + + + + + + +a84bc4f6-26e8-416f-aa96-3cde13879fbb + +BasicLogger.php +file + + + + +2012-05-10T18:42:09.685567Z +2539bd69783d0429d0926ea8446c9ac2 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +3578 + +MojaviLogAdapter.php +file + + + + +2012-05-10T18:42:09.689549Z +90ab15980966390e0459fadec6484022 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +4606 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/logger/.svn/prop-base/BasicLogger.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/logger/.svn/prop-base/BasicLogger.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/logger/.svn/prop-base/BasicLogger.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/logger/.svn/prop-base/MojaviLogAdapter.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/logger/.svn/prop-base/MojaviLogAdapter.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/logger/.svn/prop-base/MojaviLogAdapter.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/logger/.svn/text-base/BasicLogger.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/logger/.svn/text-base/BasicLogger.php.svn-base new file mode 100644 index 0000000..024c1c4 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/logger/.svn/text-base/BasicLogger.php.svn-base @@ -0,0 +1,103 @@ +. + */ + + +/** + * This is a minimalistic interface that any logging class must implement for Propel. + * + * The API for this interface is based on the PEAR::Log interface. It provides a simple + * API that can be used by Propel independently of Log backend. + * + * PEAR::Log and perhaps the Log API was developed by Chuck Hagenbuch + * and Jon Parise . + * + * @author Hans Lellelid + * @version $Revision$ + * @package propel.logger + */ +interface BasicLogger { + + /** + * A convenience function for logging an alert event. + * + * @param mixed $message String or Exception object containing the message + * to log. + */ + public function alert($message); + + /** + * A convenience function for logging a critical event. + * + * @param mixed $message String or Exception object containing the message + * to log. + */ + public function crit($message); + + /** + * A convenience function for logging an error event. + * + * @param mixed $message String or Exception object containing the message + * to log. + */ + public function err($message); + + /** + * A convenience function for logging a warning event. + * + * @param mixed $message String or Exception object containing the message + * to log. + */ + public function warning($message); + /** + * A convenience function for logging an critical event. + * + * @param mixed $message String or Exception object containing the message + * to log. + */ + public function notice($message); + /** + * A convenience function for logging an critical event. + * + * @param mixed $message String or Exception object containing the message + * to log. + */ + public function info($message); + + /** + * A convenience function for logging a debug event. + * + * @param mixed $message String or Exception object containing the message + * to log. + */ + public function debug($message); + + /** + * Primary method to handle logging. + * + * @param mixed $message String or Exception object containing the message + * to log. + * @param int $severity The numeric severity. Defaults to null so that no + * assumptions are made about the logging backend. + */ + public function log($message, $severity = null); + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/logger/.svn/text-base/MojaviLogAdapter.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/logger/.svn/text-base/MojaviLogAdapter.php.svn-base new file mode 100644 index 0000000..6e607d8 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/logger/.svn/text-base/MojaviLogAdapter.php.svn-base @@ -0,0 +1,170 @@ +. + */ + +/** + * Mojavi logging adapter for propel + * + * @author Brandon Keepers + * @version $Revision$ + * @package propel.logger + */ +class MojaviLogAdapter implements BasicLogger { + + /** + * Instance of mojavi logger + */ + private $logger = null; + + /** + * constructor for setting up Mojavi log adapter + * + * @param ErrorLog $logger instance of Mojavi error log obtained by + * calling LogManager::getLogger(); + */ + public function __construct($logger = null) + { + $this->logger = $logger; + } + + /** + * A convenience function for logging an alert event. + * + * @param mixed $message String or Exception object containing the message + * to log. + */ + public function alert($message) + { + $this->log($message, 'alert'); + } + + /** + * A convenience function for logging a critical event. + * + * @param mixed $message String or Exception object containing the message + * to log. + */ + public function crit($message) + { + $this->log($message, 'crit'); + } + + /** + * A convenience function for logging an error event. + * + * @param mixed $message String or Exception object containing the message + * to log. + */ + public function err($message) + { + $this->log($message, 'err'); + } + + /** + * A convenience function for logging a warning event. + * + * @param mixed $message String or Exception object containing the message + * to log. + */ + public function warning($message) + { + $this->log($message, 'warning'); + } + + + /** + * A convenience function for logging an critical event. + * + * @param mixed $message String or Exception object containing the message + * to log. + */ + public function notice($message) + { + $this->log($message, 'notice'); + } + /** + * A convenience function for logging an critical event. + * + * @param mixed $message String or Exception object containing the message + * to log. + */ + public function info($message) + { + $this->log($message, 'info'); + } + + /** + * A convenience function for logging a debug event. + * + * @param mixed $message String or Exception object containing the message + * to log. + */ + public function debug($message) + { + $this->log($message, 'debug'); + } + + /** + * Primary method to handle logging. + * + * @param mixed $message String or Exception object containing the message + * to log. + * @param int $severity The numeric severity. Defaults to null so that no + * assumptions are made about the logging backend. + */ + public function log($message, $severity = null) + { + if (is_null($this->logger)) + $this->logger = LogManager::getLogger('propel'); + + switch($severity) + { + case 'crit': + $method = 'fatal'; + break; + case 'err': + $method = 'error'; + break; + case 'alert': + case 'warning': + $method = 'warning'; + break; + case 'notice': + case 'info': + $method = 'info'; + break; + case 'debug': + default: + $method = 'debug'; + } + + // get a backtrace to pass class, function, file, & line to Mojavi logger + $trace = debug_backtrace(); + + // call the appropriate Mojavi logger method + $this->logger->{$method} ( + $message, + $trace[2]['class'], + $trace[2]['function'], + $trace[1]['file'], + $trace[1]['line'] + ); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/logger/BasicLogger.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/logger/BasicLogger.php new file mode 100644 index 0000000..556424a --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/logger/BasicLogger.php @@ -0,0 +1,103 @@ +. + */ + + +/** + * This is a minimalistic interface that any logging class must implement for Propel. + * + * The API for this interface is based on the PEAR::Log interface. It provides a simple + * API that can be used by Propel independently of Log backend. + * + * PEAR::Log and perhaps the Log API was developed by Chuck Hagenbuch + * and Jon Parise . + * + * @author Hans Lellelid + * @version $Revision: 1262 $ + * @package propel.logger + */ +interface BasicLogger { + + /** + * A convenience function for logging an alert event. + * + * @param mixed $message String or Exception object containing the message + * to log. + */ + public function alert($message); + + /** + * A convenience function for logging a critical event. + * + * @param mixed $message String or Exception object containing the message + * to log. + */ + public function crit($message); + + /** + * A convenience function for logging an error event. + * + * @param mixed $message String or Exception object containing the message + * to log. + */ + public function err($message); + + /** + * A convenience function for logging a warning event. + * + * @param mixed $message String or Exception object containing the message + * to log. + */ + public function warning($message); + /** + * A convenience function for logging an critical event. + * + * @param mixed $message String or Exception object containing the message + * to log. + */ + public function notice($message); + /** + * A convenience function for logging an critical event. + * + * @param mixed $message String or Exception object containing the message + * to log. + */ + public function info($message); + + /** + * A convenience function for logging a debug event. + * + * @param mixed $message String or Exception object containing the message + * to log. + */ + public function debug($message); + + /** + * Primary method to handle logging. + * + * @param mixed $message String or Exception object containing the message + * to log. + * @param int $severity The numeric severity. Defaults to null so that no + * assumptions are made about the logging backend. + */ + public function log($message, $severity = null); + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/logger/MojaviLogAdapter.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/logger/MojaviLogAdapter.php new file mode 100644 index 0000000..f609082 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/logger/MojaviLogAdapter.php @@ -0,0 +1,170 @@ +. + */ + +/** + * Mojavi logging adapter for propel + * + * @author Brandon Keepers + * @version $Revision: 1262 $ + * @package propel.logger + */ +class MojaviLogAdapter implements BasicLogger { + + /** + * Instance of mojavi logger + */ + private $logger = null; + + /** + * constructor for setting up Mojavi log adapter + * + * @param ErrorLog $logger instance of Mojavi error log obtained by + * calling LogManager::getLogger(); + */ + public function __construct($logger = null) + { + $this->logger = $logger; + } + + /** + * A convenience function for logging an alert event. + * + * @param mixed $message String or Exception object containing the message + * to log. + */ + public function alert($message) + { + $this->log($message, 'alert'); + } + + /** + * A convenience function for logging a critical event. + * + * @param mixed $message String or Exception object containing the message + * to log. + */ + public function crit($message) + { + $this->log($message, 'crit'); + } + + /** + * A convenience function for logging an error event. + * + * @param mixed $message String or Exception object containing the message + * to log. + */ + public function err($message) + { + $this->log($message, 'err'); + } + + /** + * A convenience function for logging a warning event. + * + * @param mixed $message String or Exception object containing the message + * to log. + */ + public function warning($message) + { + $this->log($message, 'warning'); + } + + + /** + * A convenience function for logging an critical event. + * + * @param mixed $message String or Exception object containing the message + * to log. + */ + public function notice($message) + { + $this->log($message, 'notice'); + } + /** + * A convenience function for logging an critical event. + * + * @param mixed $message String or Exception object containing the message + * to log. + */ + public function info($message) + { + $this->log($message, 'info'); + } + + /** + * A convenience function for logging a debug event. + * + * @param mixed $message String or Exception object containing the message + * to log. + */ + public function debug($message) + { + $this->log($message, 'debug'); + } + + /** + * Primary method to handle logging. + * + * @param mixed $message String or Exception object containing the message + * to log. + * @param int $severity The numeric severity. Defaults to null so that no + * assumptions are made about the logging backend. + */ + public function log($message, $severity = null) + { + if (is_null($this->logger)) + $this->logger = LogManager::getLogger('propel'); + + switch($severity) + { + case 'crit': + $method = 'fatal'; + break; + case 'err': + $method = 'error'; + break; + case 'alert': + case 'warning': + $method = 'warning'; + break; + case 'notice': + case 'info': + $method = 'info'; + break; + case 'debug': + default: + $method = 'debug'; + } + + // get a backtrace to pass class, function, file, & line to Mojavi logger + $trace = debug_backtrace(); + + // call the appropriate Mojavi logger method + $this->logger->{$method} ( + $message, + $trace[2]['class'], + $trace[2]['function'], + $trace[1]['file'], + $trace[1]['line'] + ); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/.svn/all-wcprops new file mode 100644 index 0000000..3b5931c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/.svn/all-wcprops @@ -0,0 +1,35 @@ +K 25 +svn:wc:ra_dav:version-url +V 52 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/map +END +ColumnMap.php +K 25 +svn:wc:ra_dav:version-url +V 66 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/map/ColumnMap.php +END +RelationMap.php +K 25 +svn:wc:ra_dav:version-url +V 68 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/map/RelationMap.php +END +DatabaseMap.php +K 25 +svn:wc:ra_dav:version-url +V 68 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/map/DatabaseMap.php +END +ValidatorMap.php +K 25 +svn:wc:ra_dav:version-url +V 69 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/map/ValidatorMap.php +END +TableMap.php +K 25 +svn:wc:ra_dav:version-url +V 65 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/map/TableMap.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/.svn/entries new file mode 100644 index 0000000..a0d100e --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/.svn/entries @@ -0,0 +1,198 @@ +10 + +dir +2332 +http://propel.mirror.svn.symfony-project.com/tags/1.4.2/runtime/classes/propel/map +http://propel.mirror.svn.symfony-project.com + + + +2009-10-26T20:54:39.333354Z +1262 +francois + + + + + + + + + + + + + + +a84bc4f6-26e8-416f-aa96-3cde13879fbb + +ColumnMap.php +file + + + + +2012-05-10T18:42:10.013551Z +5e244d33009eea0d7e5b63bcef8d2002 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +12209 + +RelationMap.php +file + + + + +2012-05-10T18:42:10.017552Z +8dde67cf6d4bf0240fbe489f6aca04a0 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +4991 + +DatabaseMap.php +file + + + + +2012-05-10T18:42:10.021549Z +b9a9ded2e3bda0c4a6e983f28001584d +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +5970 + +ValidatorMap.php +file + + + + +2012-05-10T18:42:10.049548Z +956f36d582cb60d32e3e51454f59d8ac +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +2623 + +TableMap.php +file + + + + +2012-05-10T18:42:10.061550Z +9fab415f5535e50abcbae6481a7be51d +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +18969 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/.svn/prop-base/ColumnMap.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/.svn/prop-base/ColumnMap.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/.svn/prop-base/ColumnMap.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/.svn/prop-base/DatabaseMap.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/.svn/prop-base/DatabaseMap.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/.svn/prop-base/DatabaseMap.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/.svn/prop-base/RelationMap.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/.svn/prop-base/RelationMap.php.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/.svn/prop-base/RelationMap.php.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/.svn/prop-base/TableMap.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/.svn/prop-base/TableMap.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/.svn/prop-base/TableMap.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/.svn/prop-base/ValidatorMap.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/.svn/prop-base/ValidatorMap.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/.svn/prop-base/ValidatorMap.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/.svn/text-base/ColumnMap.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/.svn/text-base/ColumnMap.php.svn-base new file mode 100644 index 0000000..d586390 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/.svn/text-base/ColumnMap.php.svn-base @@ -0,0 +1,475 @@ +. + */ + +/** + * ColumnMap is used to model a column of a table in a database. + * + * GENERAL NOTE + * ------------ + * The propel.map classes are abstract building-block classes for modeling + * the database at runtime. These classes are similar (a lite version) to the + * propel.engine.database.model classes, which are build-time modeling classes. + * These classes in themselves do not do any database metadata lookups. + * + * @author Hans Lellelid (Propel) + * @author John D. McNally (Torque) + * @version $Revision$ + * @package propel.map + */ +class ColumnMap { + + // Propel type of the column + protected $type; + + // Size of the column + protected $size = 0; + + // Is it a primary key? + protected $pk = false; + + // Is null value allowed? + protected $notNull = false; + + // The default value for this column + protected $defaultValue; + + // Name of the table that this column is related to + protected $relatedTableName = ""; + + // Name of the column that this column is related to + protected $relatedColumnName = ""; + + // The TableMap for this column + protected $table; + + // The name of the column + protected $columnName; + + // The php name of the column + protected $phpName; + + // The validators for this column + protected $validators = array(); + + /** + * Constructor. + * + * @param string $name The name of the column. + * @param TableMap containingTable TableMap of the table this column is in. + */ + public function __construct($name, TableMap $containingTable) + { + $this->columnName = $name; + $this->table = $containingTable; + } + + /** + * Get the name of a column. + * + * @return string A String with the column name. + */ + public function getName() + { + return $this->columnName; + } + + /** + * Get the table map this column belongs to. + * @return TableMap + */ + public function getTable() + { + return $this->table; + } + + /** + * Get the name of the table this column is in. + * + * @return string A String with the table name. + */ + public function getTableName() + { + return $this->table->getName(); + } + + /** + * Get the table name + column name. + * + * @return string A String with the full column name. + */ + public function getFullyQualifiedName() + { + return $this->getTableName() . "." . $this->columnName; + } + + /** + * Set the php anme of this column. + * + * @param string $phpName A string representing the PHP name. + * @return void + */ + public function setPhpName($phpName) + { + $this->phpName = $phpName; + } + + /** + * Get the name of a column. + * + * @return string A String with the column name. + */ + public function getPhpName() + { + return $this->phpName; + } + + /** + * Set the Propel type of this column. + * + * @param string $type A string representing the Propel type (e.g. PropelColumnTypes::DATE). + * @return void + */ + public function setType($type) + { + $this->type = $type; + } + + /** + * Get the Propel type of this column. + * + * @return string A string representing the Propel type (e.g. PropelColumnTypes::DATE). + */ + public function getType() + { + return $this->type; + } + + /** + * Get the PDO type of this column. + * + * @return int The PDO::PARMA_* value + */ + public function getPdoType() + { + return PropelColumnTypes::getPdoType($this->type); + } + + /** + * Whether this is a BLOB, LONGVARBINARY, or VARBINARY. + * @return boolean + */ + public function isLob() + { + return ($this->type == PropelColumnTypes::BLOB || $this->type == PropelColumnTypes::VARBINARY || $this->type == PropelColumnTypes::LONGVARBINARY); + } + + /** + * Whether this is a DATE/TIME/TIMESTAMP column. + * + * @return boolean + * @since 1.3 + */ + public function isTemporal() + { + return ($this->type == PropelColumnTypes::TIMESTAMP || $this->type == PropelColumnTypes::DATE || $this->type == PropelColumnTypes::TIME || $this->type == PropelColumnTypes::BU_DATE || $this->type == PropelColumnTypes::BU_TIMESTAMP); + } + + /** + * Whether this is a DATE/TIME/TIMESTAMP column that is post-epoch (1970). + * + * PHP cannot handle pre-epoch timestamps well -- hence the need to differentiate + * between epoch and pre-epoch timestamps. + * + * @return boolean + * @deprecated Propel supports non-epoch dates + */ + public function isEpochTemporal() + { + return ($this->type == PropelColumnTypes::TIMESTAMP || $this->type == PropelColumnTypes::DATE || $this->type == PropelColumnTypes::TIME); + } + + /** + * Whether this column is numeric (int, decimal, bigint etc). + * @return boolean + */ + public function isNumeric() + { + return ($this->type == PropelColumnTypes::NUMERIC || $this->type == PropelColumnTypes::DECIMAL || $this->type == PropelColumnTypes::TINYINT || $this->type == PropelColumnTypes::SMALLINT || $this->type == PropelColumnTypes::INTEGER || $this->type == PropelColumnTypes::BIGINT || $this->type == PropelColumnTypes::REAL || $this->type == PropelColumnTypes::FLOAT || $this->type == PropelColumnTypes::DOUBLE); + } + + /** + * Whether this column is a text column (varchar, char, longvarchar). + * @return boolean + */ + public function isText() + { + return ($this->type == PropelColumnTypes::VARCHAR || $this->type == PropelColumnTypes::LONGVARCHAR || $this->type == PropelColumnTypes::CHAR); + } + + /** + * Set the size of this column. + * + * @param int $size An int specifying the size. + * @return void + */ + public function setSize($size) + { + $this->size = $size; + } + + /** + * Get the size of this column. + * + * @return int An int specifying the size. + */ + public function getSize() + { + return $this->size; + } + + /** + * Set if this column is a primary key or not. + * + * @param boolean $pk True if column is a primary key. + * @return void + */ + public function setPrimaryKey($pk) + { + $this->pk = $pk; + } + + /** + * Is this column a primary key? + * + * @return boolean True if column is a primary key. + */ + public function isPrimaryKey() + { + return $this->pk; + } + + /** + * Set if this column may be null. + * + * @param boolean nn True if column may be null. + * @return void + */ + public function setNotNull($nn) + { + $this->notNull = $nn; + } + + /** + * Is null value allowed ? + * + * @return boolean True if column may not be null. + */ + public function isNotNull() + { + return ($this->notNull || $this->isPrimaryKey()); + } + + /** + * Sets the default value for this column. + * @param mixed $defaultValue the default value for the column + * @return void + */ + public function setDefaultValue($defaultValue) + { + $this->defaultValue = $defaultValue; + } + + /** + * Gets the default value for this column. + * @return mixed String or NULL + */ + public function getDefaultValue() + { + return $this->defaultValue; + } + + /** + * Set the foreign key for this column. + * + * @param string tableName The name of the table that is foreign. + * @param string columnName The name of the column that is foreign. + * @return void + */ + public function setForeignKey($tableName, $columnName) + { + if ($tableName && $columnName) { + $this->relatedTableName = $tableName; + $this->relatedColumnName = $columnName; + } else { + $this->relatedTableName = ""; + $this->relatedColumnName = ""; + } + } + + /** + * Is this column a foreign key? + * + * @return boolean True if column is a foreign key. + */ + public function isForeignKey() + { + if ($this->relatedTableName) { + return true; + } else { + return false; + } + } + + /** + * Get the RelationMap object for this foreign key + */ + public function getRelation() + { + if(!$this->relatedTableName) return null; + foreach ($this->getTable()->getRelations() as $name => $relation) + { + if($relation->getType() == RelationMap::MANY_TO_ONE) + { + if ($relation->getForeignTable()->getName() == $this->getRelatedTableName() + && array_key_exists($this->getFullyQualifiedName(), $relation->getColumnMappings())) + { + return $relation; + } + } + } + } + + /** + * Get the table.column that this column is related to. + * + * @return string A String with the full name for the related column. + */ + public function getRelatedName() + { + return $this->relatedTableName . "." . $this->relatedColumnName; + } + + /** + * Get the table name that this column is related to. + * + * @return string A String with the name for the related table. + */ + public function getRelatedTableName() + { + return $this->relatedTableName; + } + + /** + * Get the column name that this column is related to. + * + * @return string A String with the name for the related column. + */ + public function getRelatedColumnName() + { + return $this->relatedColumnName; + } + + /** + * Get the TableMap object that this column is related to. + * + * @return TableMap The related TableMap object + * @throws PropelException when called on a column with no foreign key + */ + public function getRelatedTable() + { + if ($this->relatedTableName) { + return $this->table->getDatabaseMap()->getTable($this->relatedTableName); + } else { + throw new PropelException("Cannot fetch RelatedTable for column with no foreign key: " . $this->columnName); + } + } + + /** + * Get the TableMap object that this column is related to. + * + * @return ColumnMap The related ColumnMap object + * @throws PropelException when called on a column with no foreign key + */ + public function getRelatedColumn() + { + return $this->getRelatedTable()->getColumn($this->relatedColumnName); + } + + public function addValidator($validator) + { + $this->validators[] = $validator; + } + + public function hasValidators() + { + return count($this->validators) > 0; + } + + public function getValidators() + { + return $this->validators; + } + + /** + * Performs DB-specific ignore case, but only if the column type necessitates it. + * @param string $str The expression we want to apply the ignore case formatting to (e.g. the column name). + * @param DBAdapter $db + */ + public function ignoreCase($str, DBAdapter $db) + { + if ($this->isText()) { + return $db->ignoreCase($str); + } else { + return $str; + } + } + + /** + * Normalizes the column name, removing table prefix and uppercasing. + * + * article.first_name becomes FIRST_NAME + * + * @param string $name + * @return string Normalized column name. + */ + public static function normalizeName($name) + { + if (false !== ($pos = strpos($name, '.'))) { + $name = substr($name, $pos + 1); + } + $name = strtoupper($name); + return $name; + } + + // deprecated methods + + /** + * Gets column name + * @deprecated Use getName() instead + * @return string + * @deprecated Use getName() instead. + */ + public function getColumnName() + { + return $this->getName(); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/.svn/text-base/DatabaseMap.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/.svn/text-base/DatabaseMap.php.svn-base new file mode 100644 index 0000000..4a8101f --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/.svn/text-base/DatabaseMap.php.svn-base @@ -0,0 +1,200 @@ +. + */ + +/** + * DatabaseMap is used to model a database. + * + * GENERAL NOTE + * ------------ + * The propel.map classes are abstract building-block classes for modeling + * the database at runtime. These classes are similar (a lite version) to the + * propel.engine.database.model classes, which are build-time modeling classes. + * These classes in themselves do not do any database metadata lookups. + * + * @author Hans Lellelid (Propel) + * @author John D. McNally (Torque) + * @author Daniel Rall (Torque) + * @version $Revision$ + * @package propel.map + */ +class DatabaseMap +{ + + /** @var string Name of the database. */ + protected $name; + + /** @var array TableMap[] Tables in the database, using table name as key */ + protected $tables = array(); + + /** @var array TableMap[] Tables in the database, using table phpName as key */ + protected $tablesByPhpName = array(); + + /** + * Constructor. + * + * @param string $name Name of the database. + */ + public function __construct($name) + { + $this->name = $name; + } + + /** + * Get the name of this database. + * + * @return string The name of the database. + */ + public function getName() + { + return $this->name; + } + + /** + * Add a new table to the database by name. + * + * @param string $tableName The name of the table. + * @return TableMap The newly created TableMap. + */ + public function addTable($tableName) + { + $this->tables[$tableName] = new TableMap($tableName, $this); + return $this->tables[$tableName]; + } + + /** + * Add a new table object to the database. + * + * @param TableMap $table The table to add + */ + public function addTableObject(TableMap $table) + { + $table->setDatabaseMap($this); + $this->tables[$table->getName()] = $table; + $this->tablesByPhpName[$table->getPhpName()] = $table; + } + + /** + * Add a new table to the database, using the tablemap class name. + * + * @param string $tableMapClass The name of the table map to add + * @return TableMap The TableMap object + */ + public function addTableFromMapClass($tableMapClass) + { + $table = new $tableMapClass(); + if(!$this->hasTable($table->getName())) { + $this->addTableObject($table); + return $table; + } else { + return $this->getTable($table->getName()); + } + } + + /** + * Does this database contain this specific table? + * + * @param string $name The String representation of the table. + * @return boolean True if the database contains the table. + */ + public function hasTable($name) + { + if ( strpos($name, '.') > 0) { + $name = substr($name, 0, strpos($name, '.')); + } + return isset($this->tables[$name]); + } + + /** + * Get a TableMap for the table by name. + * + * @param string $name Name of the table. + * @return TableMap A TableMap + * @throws PropelException if the table is undefined + */ + public function getTable($name) + { + if (!isset($this->tables[$name])) { + throw new PropelException("Cannot fetch TableMap for undefined table: " . $name ); + } + return $this->tables[$name]; + } + + /** + * Get a TableMap[] of all of the tables in the database. + * + * @return array A TableMap[]. + */ + public function getTables() + { + return $this->tables; + } + + /** + * Get a ColumnMap for the column by name. + * Name must be fully qualified, e.g. book.AUTHOR_ID + * + * @param $qualifiedColumnName Name of the column. + * @return ColumnMap A TableMap + * @throws PropelException if the table is undefined, or if the table is undefined + */ + public function getColumn($qualifiedColumnName) + { + list($tableName, $columnName) = explode('.', $qualifiedColumnName); + return $this->getTable($tableName)->getColumn($columnName, false); + } + + // deprecated methods + + /** + * Does this database contain this specific table? + * + * @deprecated Use hasTable() instead + * @param string $name The String representation of the table. + * @return boolean True if the database contains the table. + */ + public function containsTable($name) + { + return $this->hasTable($name); + } + + public function getTableByPhpName($phpName) + { + if (array_key_exists($phpName, $this->tablesByPhpName)) { + return $this->tablesByPhpName[$phpName]; + } else if (class_exists($tmClass = $phpName . 'TableMap')) { + $this->addTableFromMapClass($tmClass); + return $this->tablesByPhpName[$phpName]; + } else { + throw new PropelException("Cannot fetch TableMap for undefined table phpName: " . $phpName); + } + } + + /** + * Convenience method to get the DBAdapter registered with Propel for this database. + * @return DBAdapter + * @see Propel::getDB(string) + */ + public function getDBAdapter() + { + return Propel::getDB($this->name); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/.svn/text-base/RelationMap.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/.svn/text-base/RelationMap.php.svn-base new file mode 100644 index 0000000..d24c576 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/.svn/text-base/RelationMap.php.svn-base @@ -0,0 +1,218 @@ +. + */ + +/** + * RelationMap is used to model a database relationship. + * + * GENERAL NOTE + * ------------ + * The propel.map classes are abstract building-block classes for modeling + * the database at runtime. These classes are similar (a lite version) to the + * propel.engine.database.model classes, which are build-time modeling classes. + * These classes in themselves do not do any database metadata lookups. + * + * @author Francois Zaninotto + * @version $Revision: 1153 $ + * @package propel.map + */ +class RelationMap { + + const + MANY_TO_ONE = 1, + ONE_TO_MANY = 2, + ONE_TO_ONE = 3; + + protected + $name, + $type, + $localTable, + $foreignTable, + $localColumns = array(), + $foreignColumns = array(), + $onUpdate, $onDelete; + + /** + * Constructor. + * + * @param string $name Name of the database. + */ + public function __construct($name) + { + $this->name = $name; + } + + /** + * Get the name of this database. + * + * @return string The name of the database. + */ + public function getName() + { + return $this->name; + } + + /** + * Set the type + * + * @param integer $type The relation type (either self::HAS_ONE, or self::HAS_MANY) + */ + public function setType($type) + { + $this->type = $type; + } + + /** + * Get the type + * + * @return integer the relation type + */ + public function getType() + { + return $this->type; + } + + /** + * Set the local table + * + * @param TableMap $table The local table for this relationship + */ + public function setLocalTable($table) + { + $this->localTable = $table; + } + + /** + * Get the local table + * + * @return TableMap The local table for this relationship + */ + public function getLocalTable() + { + return $this->localTable; + } + + /** + * Set the foreign table + * + * @param TableMap $table The foreign table for this relationship + */ + public function setForeignTable($table) + { + $this->foreignTable = $table; + } + + /** + * Get the foreign table + * + * @return TableMap The foreign table for this relationship + */ + public function getForeignTable() + { + return $this->foreignTable; + } + + /** + * Add a column mapping + * + * @param ColumnMap $local The local column + * @param ColumnMap $foreign The foreign column + */ + public function addColumnMapping(ColumnMap $local, ColumnMap $foreign) + { + $this->localColumns[] = $local; + $this->foreignColumns[] = $foreign; + } + + /** + * Get an associative array mapping local column names to foreign column names + * + * @return Array Associative array (local => foreign) of fully qualified column names + */ + public function getColumnMappings() + { + $h = array(); + for ($i=0, $size=count($this->localColumns); $i < $size; $i++) { + $h[$this->localColumns[$i]->getFullyQualifiedName()] = $this->foreignColumns[$i]->getFullyQualifiedName(); + } + return $h; + } + + /** + * Get the local columns + * + * @return Array list of ColumnMap objects + */ + public function getLocalColumns() + { + return $this->localColumns; + } + + /** + * Get the foreign columns + * + * @return Array list of ColumnMap objects + */ + public function getForeignColumns() + { + return $this->foreignColumns; + } + + /** + * Set the onUpdate behavior + * + * @param string $onUpdate + */ + public function setOnUpdate($onUpdate) + { + $this->onUpdate = $onUpdate; + } + + /** + * Get the onUpdate behavior + * + * @return integer the relation type + */ + public function getOnUpdate() + { + return $this->onUpdate; + } + + /** + * Set the onDelete behavior + * + * @param string $onDelete + */ + public function setOnDelete($onDelete) + { + $this->onDelete = $onDelete; + } + + /** + * Get the onDelete behavior + * + * @return integer the relation type + */ + public function getOnDelete() + { + return $this->onDelete; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/.svn/text-base/TableMap.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/.svn/text-base/TableMap.php.svn-base new file mode 100644 index 0000000..55b28dd --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/.svn/text-base/TableMap.php.svn-base @@ -0,0 +1,654 @@ +. + */ + +/** + * TableMap is used to model a table in a database. + * + * GENERAL NOTE + * ------------ + * The propel.map classes are abstract building-block classes for modeling + * the database at runtime. These classes are similar (a lite version) to the + * propel.engine.database.model classes, which are build-time modeling classes. + * These classes in themselves do not do any database metadata lookups. + * + * @author Hans Lellelid (Propel) + * @author John D. McNally (Torque) + * @author Daniel Rall (Torque) + * @version $Revision$ + * @package propel.map + */ +class TableMap { + + // The columns in the table + protected $columns = array(); + + // The database this table belongs to + protected $dbMap; + + // The name of the table + protected $tableName; + + // The PHP name of the table + protected $phpName; + + // The Classname for this table + protected $classname; + + // The Package for this table + protected $package; + + // Whether to use an id generator for pkey + protected $useIdGenerator; + + // The primary key columns in the table + protected $primaryKeys = array(); + + // The foreign key columns in the table + protected $foreignKeys = array(); + + // The relationships in the table + protected $relations = array(); + + // Relations are lazy loaded. This property tells if the relations are loaded or not + protected $relationsBuilt = false; + + // Object to store information that is needed if the for generating primary keys + protected $pkInfo; + + /** + * Construct a new TableMap. + * + */ + public function __construct($name = null, $dbMap = null) + { + if(!is_null($name)) $this->setName($name); + if(!is_null($dbMap)) $this->setDatabaseMap($dbMap); + $this->initialize(); + } + + /** + * Initialize the TableMap to build columns, relations, etc + * This method should be overridden by descendents + */ + public function initialize() + { + } + + /** + * Set the DatabaseMap containing this TableMap. + * + * @param DatabaseMap $dbMap A DatabaseMap. + */ + public function setDatabaseMap(DatabaseMap $dbMap) + { + $this->dbMap = $dbMap; + } + + /** + * Get the DatabaseMap containing this TableMap. + * + * @return DatabaseMap A DatabaseMap. + */ + public function getDatabaseMap() + { + return $this->dbMap; + } + + /** + * Set the name of the Table. + * + * @param string $name The name of the table. + */ + public function setName($name) + { + $this->tableName = $name; + } + + /** + * Get the name of the Table. + * + * @return string A String with the name of the table. + */ + public function getName() + { + return $this->tableName; + } + + /** + * Set the PHP name of the Table. + * + * @param string $phpName The PHP Name for this table + */ + public function setPhpName($phpName) + { + $this->phpName = $phpName; + } + + /** + * Get the PHP name of the Table. + * + * @return string A String with the name of the table. + */ + public function getPhpName() + { + return $this->phpName; + } + + /** + * Set the Classname of the Table. Could be useful for calling + * Peer and Object methods dynamically. + * @param string $classname The Classname + */ + public function setClassname($classname) + { + $this->classname = $classname; + } + + /** + * Get the Classname of the Propel-Classes belonging to this table. + * @return string + */ + public function getClassname() + { + return $this->classname; + } + + /** + * Set the Package of the Table + * + * @param string $package The Package + */ + public function setPackage($package) + { + $this->package = $package; + } + + /** + * Get the Package of the table. + * @return string + */ + public function getPackage() + { + return $this->package; + } + + /** + * Set whether or not to use Id generator for primary key. + * @param boolean $bit + */ + public function setUseIdGenerator($bit) + { + $this->useIdGenerator = $bit; + } + + /** + * Whether to use Id generator for primary key. + * @return boolean + */ + public function isUseIdGenerator() + { + return $this->useIdGenerator; + } + + /** + * Sets the pk information needed to generate a key + * + * @param $pkInfo information needed to generate a key + */ + public function setPrimaryKeyMethodInfo($pkInfo) + { + $this->pkInfo = $pkInfo; + } + + /** + * Get the information used to generate a primary key + * + * @return An Object. + */ + public function getPrimaryKeyMethodInfo() + { + return $this->pkInfo; + } + + /** + * Add a column to the table. + * + * @param string name A String with the column name. + * @param string $type A string specifying the Propel type. + * @param boolean $isNotNull Whether column does not allow NULL values. + * @param int $size An int specifying the size. + * @param boolean $pk True if column is a primary key. + * @param string $fkTable A String with the foreign key table name. + * @param $fkColumn A String with the foreign key column name. + * @param string $defaultValue The default value for this column. + * @return ColumnMap The newly created column. + */ + public function addColumn($name, $phpName, $type, $isNotNull = false, $size = null, $defaultValue = null, $pk = false, $fkTable = null, $fkColumn = null) + { + + $col = new ColumnMap($name, $this); + + if ($fkTable && $fkColumn) { + if (strpos($fkColumn, '.') > 0 && strpos($fkColumn, $fkTable) !== false) { + $fkColumn = substr($fkColumn, strlen($fkTable) + 1); + } + $col->setForeignKey($fkTable, $fkColumn); + $this->foreignKeys[$name] = $col; + } + + $col->setType($type); + $col->setSize($size); + $col->setPhpName($phpName); + $col->setNotNull($isNotNull); + $col->setDefaultValue($defaultValue); + if ($pk) { + $col->setPrimaryKey(true); + $this->primaryKeys[$name] = $col; + } + $this->columns[$name] = $col; + + return $this->columns[$name]; + } + + /** + * Add a pre-created column to this table. It will replace any + * existing column. + * + * @param ColumnMap $cmap A ColumnMap. + * @return ColumnMap The added column map. + */ + public function addConfiguredColumn($cmap) + { + $this->columns[ $cmap->getColumnName() ] = $cmap; + return $cmap; + } + + /** + * Does this table contain the specified column? + * + * @param mixed $name name of the column or ColumnMap instance + * @param boolean $normalize Normalize the column name (if column name not like FIRST_NAME) + * @return boolean True if the table contains the column. + */ + public function hasColumn($name, $normalize = true) + { + if ($name instanceof ColumnMap) { + $name = $name->getColumnName(); + } else if($normalize) { + $name = ColumnMap::normalizeName($name); + } + return isset($this->columns[$name]); + } + + /** + * Get a ColumnMap for the named table. + * + * @param string $name A String with the name of the table. + * @param boolean $normalize Normalize the column name (if column name not like FIRST_NAME) + * @return ColumnMap A ColumnMap. + * @throws PropelException if the column is undefined + */ + public function getColumn($name, $normalize = true) + { + if ($normalize) { + $name = ColumnMap::normalizeName($name); + } + if (!$this->containsColumn($name, false)) { + throw new PropelException("Cannot fetch ColumnMap for undefined column: " . $name); + } + return $this->columns[$name]; + } + + /** + * Get a ColumnMap[] of the columns in this table. + * + * @return array A ColumnMap[]. + */ + public function getColumns() + { + return $this->columns; + } + + /** + * Add a primary key column to this Table. + * + * @param string $columnName A String with the column name. + * @param string $type A string specifying the Propel type. + * @param boolean $isNotNull Whether column does not allow NULL values. + * @param $size An int specifying the size. + * @return ColumnMap Newly added PrimaryKey column. + */ + public function addPrimaryKey($columnName, $phpName, $type, $isNotNull = false, $size = null, $defaultValue = null) + { + return $this->addColumn($columnName, $phpName, $type, $isNotNull, $size, $defaultValue, true, null, null); + } + + /** + * Add a foreign key column to the table. + * + * @param string $columnName A String with the column name. + * @param string $type A string specifying the Propel type. + * @param string $fkTable A String with the foreign key table name. + * @param string $fkColumn A String with the foreign key column name. + * @param boolean $isNotNull Whether column does not allow NULL values. + * @param int $size An int specifying the size. + * @param string $defaultValue The default value for this column. + * @return ColumnMap Newly added ForeignKey column. + */ + public function addForeignKey($columnName, $phpName, $type, $fkTable, $fkColumn, $isNotNull = false, $size = 0, $defaultValue = null) + { + return $this->addColumn($columnName, $phpName, $type, $isNotNull, $size, $defaultValue, false, $fkTable, $fkColumn); + } + + /** + * Add a foreign primary key column to the table. + * + * @param string $columnName A String with the column name. + * @param string $type A string specifying the Propel type. + * @param string $fkTable A String with the foreign key table name. + * @param string $fkColumn A String with the foreign key column name. + * @param boolean $isNotNull Whether column does not allow NULL values. + * @param int $size An int specifying the size. + * @param string $defaultValue The default value for this column. + * @return ColumnMap Newly created foreign pkey column. + */ + public function addForeignPrimaryKey($columnName, $phpName, $type, $fkTable, $fkColumn, $isNotNull = false, $size = 0, $defaultValue = null) + { + return $this->addColumn($columnName, $phpName, $type, $isNotNull, $size, $defaultValue, true, $fkTable, $fkColumn); + } + + /** + * Returns array of ColumnMap objects that make up the primary key for this table + * + * @return array ColumnMap[] + */ + public function getPrimaryKeys() + { + return $this->primaryKeys; + } + + /** + * Returns array of ColumnMap objects that are foreign keys for this table + * + * @return array ColumnMap[] + */ + public function getForeignKeys() + { + return $this->foreignKeys; + } + + /** + * Add a validator to a table's column + * + * @param string $columnName The name of the validator's column + * @param string $name The rule name of this validator + * @param string $classname The dot-path name of class to use (e.g. myapp.propel.MyValidator) + * @param string $value + * @param string $message The error message which is returned on invalid values + * @return void + */ + public function addValidator($columnName, $name, $classname, $value, $message) + { + if (false !== ($pos = strpos($columnName, '.'))) { + $columnName = substr($columnName, $pos + 1); + } + + $col = $this->getColumn($columnName); + if ($col !== null) { + $validator = new ValidatorMap($col); + $validator->setName($name); + $validator->setClass($classname); + $validator->setValue($value); + $validator->setMessage($message); + $col->addValidator($validator); + } + } + + /** + * Build relations + * Relations are lazy loaded for performance reasons + * This method should be overridden by descendents + */ + public function buildRelations() + { + } + + /** + * Adds a RelationMap to the table + * + * @param string $name The relation name + * @param string $tablePhpName The related table name + * @param integer $type The relation type (either RelationMap::MANY_TO_ONE, RelationMap::ONE_TO_MANY, or RelationMAp::ONE_TO_ONE) + * @param array $columnMapping An associative array mapping column names (local => foreign) + * @return RelationMap the built RelationMap object + */ + public function addRelation($name, $tablePhpName, $type, $columnMapping = array(), $onDelete = null, $onUpdate = null) + { + // note: using phpName for the second table allows the use of DatabaseMap::getTableByPhpName() + // and this method autoloads the TableMap if the table isn't loaded yet + $relation = new RelationMap($name); + $relation->setType($type); + $relation->setOnUpdate($onUpdate); + $relation->setOnDelete($onDelete); + // set tables + if ($type == RelationMap::MANY_TO_ONE) { + $relation->setLocalTable($this); + $relation->setForeignTable($this->dbMap->getTableByPhpName($tablePhpName)); + } else { + $relation->setLocalTable($this->dbMap->getTableByPhpName($tablePhpName)); + $relation->setForeignTable($this); + $columnMapping = array_flip($columnMapping); + } + // set columns + foreach ($columnMapping as $key => $value) + { + $relation->addColumnMapping( + $relation->getLocalTable()->getColumn($key), + $relation->getForeignTable()->getColumn($value) + ); + } + $this->relations[$name] = $relation; + return $relation; + } + + /** + * Gets a RelationMap of the table by relation name + * + * @param String $name The relation name + * @return boolean true if the relation exists + */ + public function hasRelation($name) + { + return array_key_exists($name, $this->getRelations()); + } + + /** + * Gets a RelationMap of the table by relation name + * + * @param String $name The relation name + * @return RelationMap The relation object + * @throws PropelException When called on an inexistent relation + */ + public function getRelation($name) + { + if (!array_key_exists($name, $this->getRelations())) + { + throw new PropelException('Calling getRelation() on an unknown relation, ' . $name); + } + return $this->relations[$name]; + } + + /** + * Gets the RelationMap objects of the table + * This method will build the relations if they are not built yet + * + * @return Array list of RelationMap objects + */ + public function getRelations() + { + if(!$this->relationsBuilt) + { + $this->buildRelations(); + $this->relationsBuilt = true; + } + return $this->relations; + } + + /** + * + * Gets the list of behaviors registered for this table + * + * @return array + */ + public function getBehaviors() + { + return array(); + } + + // Deprecated methods and attributres, to be removed + + /** + * Does this table contain the specified column? + * + * @deprecated Use hasColumn instead + * @param mixed $name name of the column or ColumnMap instance + * @param boolean $normalize Normalize the column name (if column name not like FIRST_NAME) + * @return boolean True if the table contains the column. + */ + public function containsColumn($name, $normalize = true) + { + return $this->hasColumn($name, $normalize); + } + + /** + * Normalizes the column name, removing table prefix and uppercasing. + * article.first_name becomes FIRST_NAME + * + * @deprecated Use ColumnMap::normalizeColumName() instead + * @param string $name + * @return string Normalized column name. + */ + protected function normalizeColName($name) + { + return ColumnMap::normalizeName($name); + } + + /** + * Returns array of ColumnMap objects that make up the primary key for this table. + * + * @deprecated Use getPrimaryKeys instead + * @return array ColumnMap[] + */ + public function getPrimaryKeyColumns() + { + return array_values($this->primaryKeys); + } + + //---Utility methods for doing intelligent lookup of table names + + /** + * The prefix on the table name. + * @deprecated Not used anywhere in Propel + */ + private $prefix; + + /** + * Get table prefix name. + * + * @deprecated Not used anywhere in Propel + * @return string A String with the prefix. + */ + public function getPrefix() + { + return $this->prefix; + } + + /** + * Set table prefix name. + * + * @deprecated Not used anywhere in Propel + * @param string $prefix The prefix for the table name (ie: SCARAB for + * SCARAB_PROJECT). + * @return void + */ + public function setPrefix($prefix) + { + $this->prefix = $prefix; + } + + /** + * Tell me if i have PREFIX in my string. + * + * @deprecated Not used anywhere in Propel + * @param data A String. + * @return boolean True if prefix is contained in data. + */ + protected function hasPrefix($data) + { + return (strpos($data, $this->prefix) === 0); + } + + /** + * Removes the PREFIX if found + * + * @deprecated Not used anywhere in Propel + * @param string $data A String. + * @return string A String with data, but with prefix removed. + */ + protected function removePrefix($data) + { + return $this->hasPrefix($data) ? substr($data, strlen($this->prefix)) : $data; + } + + /** + * Removes the PREFIX, removes the underscores and makes + * first letter caps. + * + * SCARAB_FOO_BAR becomes FooBar. + * + * @deprecated Not used anywhere in Propel. At buildtime, use Column::generatePhpName() for that purpose + * @param data A String. + * @return string A String with data processed. + */ + public final function removeUnderScores($data) + { + $out = ''; + $tmp = $this->removePrefix($data); + $tok = strtok($tmp, '_'); + while ($tok) { + $out .= ucfirst($tok); + $tok = strtok('_'); + } + return $out; + } + + /** + * Makes the first letter caps and the rest lowercase. + * + * @deprecated Not used anywhere in Propel. + * @param string $data A String. + * @return string A String with data processed. + */ + private function firstLetterCaps($data) + { + return(ucfirst(strtolower($data))); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/.svn/text-base/ValidatorMap.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/.svn/text-base/ValidatorMap.php.svn-base new file mode 100644 index 0000000..1ef24a4 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/.svn/text-base/ValidatorMap.php.svn-base @@ -0,0 +1,103 @@ +. + */ + +/** + * ValidatorMap is used to model a column validator. + * + * GENERAL NOTE + * ------------ + * The propel.map classes are abstract building-block classes for modeling + * the database at runtime. These classes are similar (a lite version) to the + * propel.engine.database.model classes, which are build-time modeling classes. + * These classes in themselves do not do any database metadata lookups. + * + * @author Michael Aichler + * @version $Revision$ + * @package propel.map + */ +class ValidatorMap +{ + /** rule name of this validator */ + private $name; + /** the dot-path to class to use for validator */ + private $classname; + /** value to check against */ + private $value; + /** execption message thrown on invalid input */ + private $message; + /** related column */ + private $column; + + public function __construct($containingColumn) + { + $this->column = $containingColumn; + } + + public function getColumn() + { + return $this->column; + } + + public function getColumnName() + { + return $this->column->getColumnName(); + } + + public function setName($name) + { + $this->name = $name; + } + + public function setClass($classname) + { + $this->classname = $classname; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function setMessage($message) + { + $this->message = $message; + } + + public function getName() + { + return $this->name; + } + + public function getClass() + { + return $this->classname; + } + + public function getValue() + { + return $this->value; + } + + public function getMessage() + { + return $this->message; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/ColumnMap.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/ColumnMap.php new file mode 100644 index 0000000..25aed6e --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/ColumnMap.php @@ -0,0 +1,475 @@ +. + */ + +/** + * ColumnMap is used to model a column of a table in a database. + * + * GENERAL NOTE + * ------------ + * The propel.map classes are abstract building-block classes for modeling + * the database at runtime. These classes are similar (a lite version) to the + * propel.engine.database.model classes, which are build-time modeling classes. + * These classes in themselves do not do any database metadata lookups. + * + * @author Hans Lellelid (Propel) + * @author John D. McNally (Torque) + * @version $Revision: 1262 $ + * @package propel.map + */ +class ColumnMap { + + // Propel type of the column + protected $type; + + // Size of the column + protected $size = 0; + + // Is it a primary key? + protected $pk = false; + + // Is null value allowed? + protected $notNull = false; + + // The default value for this column + protected $defaultValue; + + // Name of the table that this column is related to + protected $relatedTableName = ""; + + // Name of the column that this column is related to + protected $relatedColumnName = ""; + + // The TableMap for this column + protected $table; + + // The name of the column + protected $columnName; + + // The php name of the column + protected $phpName; + + // The validators for this column + protected $validators = array(); + + /** + * Constructor. + * + * @param string $name The name of the column. + * @param TableMap containingTable TableMap of the table this column is in. + */ + public function __construct($name, TableMap $containingTable) + { + $this->columnName = $name; + $this->table = $containingTable; + } + + /** + * Get the name of a column. + * + * @return string A String with the column name. + */ + public function getName() + { + return $this->columnName; + } + + /** + * Get the table map this column belongs to. + * @return TableMap + */ + public function getTable() + { + return $this->table; + } + + /** + * Get the name of the table this column is in. + * + * @return string A String with the table name. + */ + public function getTableName() + { + return $this->table->getName(); + } + + /** + * Get the table name + column name. + * + * @return string A String with the full column name. + */ + public function getFullyQualifiedName() + { + return $this->getTableName() . "." . $this->columnName; + } + + /** + * Set the php anme of this column. + * + * @param string $phpName A string representing the PHP name. + * @return void + */ + public function setPhpName($phpName) + { + $this->phpName = $phpName; + } + + /** + * Get the name of a column. + * + * @return string A String with the column name. + */ + public function getPhpName() + { + return $this->phpName; + } + + /** + * Set the Propel type of this column. + * + * @param string $type A string representing the Propel type (e.g. PropelColumnTypes::DATE). + * @return void + */ + public function setType($type) + { + $this->type = $type; + } + + /** + * Get the Propel type of this column. + * + * @return string A string representing the Propel type (e.g. PropelColumnTypes::DATE). + */ + public function getType() + { + return $this->type; + } + + /** + * Get the PDO type of this column. + * + * @return int The PDO::PARMA_* value + */ + public function getPdoType() + { + return PropelColumnTypes::getPdoType($this->type); + } + + /** + * Whether this is a BLOB, LONGVARBINARY, or VARBINARY. + * @return boolean + */ + public function isLob() + { + return ($this->type == PropelColumnTypes::BLOB || $this->type == PropelColumnTypes::VARBINARY || $this->type == PropelColumnTypes::LONGVARBINARY); + } + + /** + * Whether this is a DATE/TIME/TIMESTAMP column. + * + * @return boolean + * @since 1.3 + */ + public function isTemporal() + { + return ($this->type == PropelColumnTypes::TIMESTAMP || $this->type == PropelColumnTypes::DATE || $this->type == PropelColumnTypes::TIME || $this->type == PropelColumnTypes::BU_DATE || $this->type == PropelColumnTypes::BU_TIMESTAMP); + } + + /** + * Whether this is a DATE/TIME/TIMESTAMP column that is post-epoch (1970). + * + * PHP cannot handle pre-epoch timestamps well -- hence the need to differentiate + * between epoch and pre-epoch timestamps. + * + * @return boolean + * @deprecated Propel supports non-epoch dates + */ + public function isEpochTemporal() + { + return ($this->type == PropelColumnTypes::TIMESTAMP || $this->type == PropelColumnTypes::DATE || $this->type == PropelColumnTypes::TIME); + } + + /** + * Whether this column is numeric (int, decimal, bigint etc). + * @return boolean + */ + public function isNumeric() + { + return ($this->type == PropelColumnTypes::NUMERIC || $this->type == PropelColumnTypes::DECIMAL || $this->type == PropelColumnTypes::TINYINT || $this->type == PropelColumnTypes::SMALLINT || $this->type == PropelColumnTypes::INTEGER || $this->type == PropelColumnTypes::BIGINT || $this->type == PropelColumnTypes::REAL || $this->type == PropelColumnTypes::FLOAT || $this->type == PropelColumnTypes::DOUBLE); + } + + /** + * Whether this column is a text column (varchar, char, longvarchar). + * @return boolean + */ + public function isText() + { + return ($this->type == PropelColumnTypes::VARCHAR || $this->type == PropelColumnTypes::LONGVARCHAR || $this->type == PropelColumnTypes::CHAR); + } + + /** + * Set the size of this column. + * + * @param int $size An int specifying the size. + * @return void + */ + public function setSize($size) + { + $this->size = $size; + } + + /** + * Get the size of this column. + * + * @return int An int specifying the size. + */ + public function getSize() + { + return $this->size; + } + + /** + * Set if this column is a primary key or not. + * + * @param boolean $pk True if column is a primary key. + * @return void + */ + public function setPrimaryKey($pk) + { + $this->pk = $pk; + } + + /** + * Is this column a primary key? + * + * @return boolean True if column is a primary key. + */ + public function isPrimaryKey() + { + return $this->pk; + } + + /** + * Set if this column may be null. + * + * @param boolean nn True if column may be null. + * @return void + */ + public function setNotNull($nn) + { + $this->notNull = $nn; + } + + /** + * Is null value allowed ? + * + * @return boolean True if column may not be null. + */ + public function isNotNull() + { + return ($this->notNull || $this->isPrimaryKey()); + } + + /** + * Sets the default value for this column. + * @param mixed $defaultValue the default value for the column + * @return void + */ + public function setDefaultValue($defaultValue) + { + $this->defaultValue = $defaultValue; + } + + /** + * Gets the default value for this column. + * @return mixed String or NULL + */ + public function getDefaultValue() + { + return $this->defaultValue; + } + + /** + * Set the foreign key for this column. + * + * @param string tableName The name of the table that is foreign. + * @param string columnName The name of the column that is foreign. + * @return void + */ + public function setForeignKey($tableName, $columnName) + { + if ($tableName && $columnName) { + $this->relatedTableName = $tableName; + $this->relatedColumnName = $columnName; + } else { + $this->relatedTableName = ""; + $this->relatedColumnName = ""; + } + } + + /** + * Is this column a foreign key? + * + * @return boolean True if column is a foreign key. + */ + public function isForeignKey() + { + if ($this->relatedTableName) { + return true; + } else { + return false; + } + } + + /** + * Get the RelationMap object for this foreign key + */ + public function getRelation() + { + if(!$this->relatedTableName) return null; + foreach ($this->getTable()->getRelations() as $name => $relation) + { + if($relation->getType() == RelationMap::MANY_TO_ONE) + { + if ($relation->getForeignTable()->getName() == $this->getRelatedTableName() + && array_key_exists($this->getFullyQualifiedName(), $relation->getColumnMappings())) + { + return $relation; + } + } + } + } + + /** + * Get the table.column that this column is related to. + * + * @return string A String with the full name for the related column. + */ + public function getRelatedName() + { + return $this->relatedTableName . "." . $this->relatedColumnName; + } + + /** + * Get the table name that this column is related to. + * + * @return string A String with the name for the related table. + */ + public function getRelatedTableName() + { + return $this->relatedTableName; + } + + /** + * Get the column name that this column is related to. + * + * @return string A String with the name for the related column. + */ + public function getRelatedColumnName() + { + return $this->relatedColumnName; + } + + /** + * Get the TableMap object that this column is related to. + * + * @return TableMap The related TableMap object + * @throws PropelException when called on a column with no foreign key + */ + public function getRelatedTable() + { + if ($this->relatedTableName) { + return $this->table->getDatabaseMap()->getTable($this->relatedTableName); + } else { + throw new PropelException("Cannot fetch RelatedTable for column with no foreign key: " . $this->columnName); + } + } + + /** + * Get the TableMap object that this column is related to. + * + * @return ColumnMap The related ColumnMap object + * @throws PropelException when called on a column with no foreign key + */ + public function getRelatedColumn() + { + return $this->getRelatedTable()->getColumn($this->relatedColumnName); + } + + public function addValidator($validator) + { + $this->validators[] = $validator; + } + + public function hasValidators() + { + return count($this->validators) > 0; + } + + public function getValidators() + { + return $this->validators; + } + + /** + * Performs DB-specific ignore case, but only if the column type necessitates it. + * @param string $str The expression we want to apply the ignore case formatting to (e.g. the column name). + * @param DBAdapter $db + */ + public function ignoreCase($str, DBAdapter $db) + { + if ($this->isText()) { + return $db->ignoreCase($str); + } else { + return $str; + } + } + + /** + * Normalizes the column name, removing table prefix and uppercasing. + * + * article.first_name becomes FIRST_NAME + * + * @param string $name + * @return string Normalized column name. + */ + public static function normalizeName($name) + { + if (false !== ($pos = strpos($name, '.'))) { + $name = substr($name, $pos + 1); + } + $name = strtoupper($name); + return $name; + } + + // deprecated methods + + /** + * Gets column name + * @deprecated Use getName() instead + * @return string + * @deprecated Use getName() instead. + */ + public function getColumnName() + { + return $this->getName(); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/DatabaseMap.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/DatabaseMap.php new file mode 100644 index 0000000..8e6de6c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/DatabaseMap.php @@ -0,0 +1,200 @@ +. + */ + +/** + * DatabaseMap is used to model a database. + * + * GENERAL NOTE + * ------------ + * The propel.map classes are abstract building-block classes for modeling + * the database at runtime. These classes are similar (a lite version) to the + * propel.engine.database.model classes, which are build-time modeling classes. + * These classes in themselves do not do any database metadata lookups. + * + * @author Hans Lellelid (Propel) + * @author John D. McNally (Torque) + * @author Daniel Rall (Torque) + * @version $Revision: 1262 $ + * @package propel.map + */ +class DatabaseMap +{ + + /** @var string Name of the database. */ + protected $name; + + /** @var array TableMap[] Tables in the database, using table name as key */ + protected $tables = array(); + + /** @var array TableMap[] Tables in the database, using table phpName as key */ + protected $tablesByPhpName = array(); + + /** + * Constructor. + * + * @param string $name Name of the database. + */ + public function __construct($name) + { + $this->name = $name; + } + + /** + * Get the name of this database. + * + * @return string The name of the database. + */ + public function getName() + { + return $this->name; + } + + /** + * Add a new table to the database by name. + * + * @param string $tableName The name of the table. + * @return TableMap The newly created TableMap. + */ + public function addTable($tableName) + { + $this->tables[$tableName] = new TableMap($tableName, $this); + return $this->tables[$tableName]; + } + + /** + * Add a new table object to the database. + * + * @param TableMap $table The table to add + */ + public function addTableObject(TableMap $table) + { + $table->setDatabaseMap($this); + $this->tables[$table->getName()] = $table; + $this->tablesByPhpName[$table->getPhpName()] = $table; + } + + /** + * Add a new table to the database, using the tablemap class name. + * + * @param string $tableMapClass The name of the table map to add + * @return TableMap The TableMap object + */ + public function addTableFromMapClass($tableMapClass) + { + $table = new $tableMapClass(); + if(!$this->hasTable($table->getName())) { + $this->addTableObject($table); + return $table; + } else { + return $this->getTable($table->getName()); + } + } + + /** + * Does this database contain this specific table? + * + * @param string $name The String representation of the table. + * @return boolean True if the database contains the table. + */ + public function hasTable($name) + { + if ( strpos($name, '.') > 0) { + $name = substr($name, 0, strpos($name, '.')); + } + return isset($this->tables[$name]); + } + + /** + * Get a TableMap for the table by name. + * + * @param string $name Name of the table. + * @return TableMap A TableMap + * @throws PropelException if the table is undefined + */ + public function getTable($name) + { + if (!isset($this->tables[$name])) { + throw new PropelException("Cannot fetch TableMap for undefined table: " . $name ); + } + return $this->tables[$name]; + } + + /** + * Get a TableMap[] of all of the tables in the database. + * + * @return array A TableMap[]. + */ + public function getTables() + { + return $this->tables; + } + + /** + * Get a ColumnMap for the column by name. + * Name must be fully qualified, e.g. book.AUTHOR_ID + * + * @param $qualifiedColumnName Name of the column. + * @return ColumnMap A TableMap + * @throws PropelException if the table is undefined, or if the table is undefined + */ + public function getColumn($qualifiedColumnName) + { + list($tableName, $columnName) = explode('.', $qualifiedColumnName); + return $this->getTable($tableName)->getColumn($columnName, false); + } + + // deprecated methods + + /** + * Does this database contain this specific table? + * + * @deprecated Use hasTable() instead + * @param string $name The String representation of the table. + * @return boolean True if the database contains the table. + */ + public function containsTable($name) + { + return $this->hasTable($name); + } + + public function getTableByPhpName($phpName) + { + if (array_key_exists($phpName, $this->tablesByPhpName)) { + return $this->tablesByPhpName[$phpName]; + } else if (class_exists($tmClass = $phpName . 'TableMap')) { + $this->addTableFromMapClass($tmClass); + return $this->tablesByPhpName[$phpName]; + } else { + throw new PropelException("Cannot fetch TableMap for undefined table phpName: " . $phpName); + } + } + + /** + * Convenience method to get the DBAdapter registered with Propel for this database. + * @return DBAdapter + * @see Propel::getDB(string) + */ + public function getDBAdapter() + { + return Propel::getDB($this->name); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/RelationMap.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/RelationMap.php new file mode 100644 index 0000000..d24c576 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/RelationMap.php @@ -0,0 +1,218 @@ +. + */ + +/** + * RelationMap is used to model a database relationship. + * + * GENERAL NOTE + * ------------ + * The propel.map classes are abstract building-block classes for modeling + * the database at runtime. These classes are similar (a lite version) to the + * propel.engine.database.model classes, which are build-time modeling classes. + * These classes in themselves do not do any database metadata lookups. + * + * @author Francois Zaninotto + * @version $Revision: 1153 $ + * @package propel.map + */ +class RelationMap { + + const + MANY_TO_ONE = 1, + ONE_TO_MANY = 2, + ONE_TO_ONE = 3; + + protected + $name, + $type, + $localTable, + $foreignTable, + $localColumns = array(), + $foreignColumns = array(), + $onUpdate, $onDelete; + + /** + * Constructor. + * + * @param string $name Name of the database. + */ + public function __construct($name) + { + $this->name = $name; + } + + /** + * Get the name of this database. + * + * @return string The name of the database. + */ + public function getName() + { + return $this->name; + } + + /** + * Set the type + * + * @param integer $type The relation type (either self::HAS_ONE, or self::HAS_MANY) + */ + public function setType($type) + { + $this->type = $type; + } + + /** + * Get the type + * + * @return integer the relation type + */ + public function getType() + { + return $this->type; + } + + /** + * Set the local table + * + * @param TableMap $table The local table for this relationship + */ + public function setLocalTable($table) + { + $this->localTable = $table; + } + + /** + * Get the local table + * + * @return TableMap The local table for this relationship + */ + public function getLocalTable() + { + return $this->localTable; + } + + /** + * Set the foreign table + * + * @param TableMap $table The foreign table for this relationship + */ + public function setForeignTable($table) + { + $this->foreignTable = $table; + } + + /** + * Get the foreign table + * + * @return TableMap The foreign table for this relationship + */ + public function getForeignTable() + { + return $this->foreignTable; + } + + /** + * Add a column mapping + * + * @param ColumnMap $local The local column + * @param ColumnMap $foreign The foreign column + */ + public function addColumnMapping(ColumnMap $local, ColumnMap $foreign) + { + $this->localColumns[] = $local; + $this->foreignColumns[] = $foreign; + } + + /** + * Get an associative array mapping local column names to foreign column names + * + * @return Array Associative array (local => foreign) of fully qualified column names + */ + public function getColumnMappings() + { + $h = array(); + for ($i=0, $size=count($this->localColumns); $i < $size; $i++) { + $h[$this->localColumns[$i]->getFullyQualifiedName()] = $this->foreignColumns[$i]->getFullyQualifiedName(); + } + return $h; + } + + /** + * Get the local columns + * + * @return Array list of ColumnMap objects + */ + public function getLocalColumns() + { + return $this->localColumns; + } + + /** + * Get the foreign columns + * + * @return Array list of ColumnMap objects + */ + public function getForeignColumns() + { + return $this->foreignColumns; + } + + /** + * Set the onUpdate behavior + * + * @param string $onUpdate + */ + public function setOnUpdate($onUpdate) + { + $this->onUpdate = $onUpdate; + } + + /** + * Get the onUpdate behavior + * + * @return integer the relation type + */ + public function getOnUpdate() + { + return $this->onUpdate; + } + + /** + * Set the onDelete behavior + * + * @param string $onDelete + */ + public function setOnDelete($onDelete) + { + $this->onDelete = $onDelete; + } + + /** + * Get the onDelete behavior + * + * @return integer the relation type + */ + public function getOnDelete() + { + return $this->onDelete; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/TableMap.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/TableMap.php new file mode 100644 index 0000000..2306b6f --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/TableMap.php @@ -0,0 +1,654 @@ +. + */ + +/** + * TableMap is used to model a table in a database. + * + * GENERAL NOTE + * ------------ + * The propel.map classes are abstract building-block classes for modeling + * the database at runtime. These classes are similar (a lite version) to the + * propel.engine.database.model classes, which are build-time modeling classes. + * These classes in themselves do not do any database metadata lookups. + * + * @author Hans Lellelid (Propel) + * @author John D. McNally (Torque) + * @author Daniel Rall (Torque) + * @version $Revision: 1262 $ + * @package propel.map + */ +class TableMap { + + // The columns in the table + protected $columns = array(); + + // The database this table belongs to + protected $dbMap; + + // The name of the table + protected $tableName; + + // The PHP name of the table + protected $phpName; + + // The Classname for this table + protected $classname; + + // The Package for this table + protected $package; + + // Whether to use an id generator for pkey + protected $useIdGenerator; + + // The primary key columns in the table + protected $primaryKeys = array(); + + // The foreign key columns in the table + protected $foreignKeys = array(); + + // The relationships in the table + protected $relations = array(); + + // Relations are lazy loaded. This property tells if the relations are loaded or not + protected $relationsBuilt = false; + + // Object to store information that is needed if the for generating primary keys + protected $pkInfo; + + /** + * Construct a new TableMap. + * + */ + public function __construct($name = null, $dbMap = null) + { + if(!is_null($name)) $this->setName($name); + if(!is_null($dbMap)) $this->setDatabaseMap($dbMap); + $this->initialize(); + } + + /** + * Initialize the TableMap to build columns, relations, etc + * This method should be overridden by descendents + */ + public function initialize() + { + } + + /** + * Set the DatabaseMap containing this TableMap. + * + * @param DatabaseMap $dbMap A DatabaseMap. + */ + public function setDatabaseMap(DatabaseMap $dbMap) + { + $this->dbMap = $dbMap; + } + + /** + * Get the DatabaseMap containing this TableMap. + * + * @return DatabaseMap A DatabaseMap. + */ + public function getDatabaseMap() + { + return $this->dbMap; + } + + /** + * Set the name of the Table. + * + * @param string $name The name of the table. + */ + public function setName($name) + { + $this->tableName = $name; + } + + /** + * Get the name of the Table. + * + * @return string A String with the name of the table. + */ + public function getName() + { + return $this->tableName; + } + + /** + * Set the PHP name of the Table. + * + * @param string $phpName The PHP Name for this table + */ + public function setPhpName($phpName) + { + $this->phpName = $phpName; + } + + /** + * Get the PHP name of the Table. + * + * @return string A String with the name of the table. + */ + public function getPhpName() + { + return $this->phpName; + } + + /** + * Set the Classname of the Table. Could be useful for calling + * Peer and Object methods dynamically. + * @param string $classname The Classname + */ + public function setClassname($classname) + { + $this->classname = $classname; + } + + /** + * Get the Classname of the Propel-Classes belonging to this table. + * @return string + */ + public function getClassname() + { + return $this->classname; + } + + /** + * Set the Package of the Table + * + * @param string $package The Package + */ + public function setPackage($package) + { + $this->package = $package; + } + + /** + * Get the Package of the table. + * @return string + */ + public function getPackage() + { + return $this->package; + } + + /** + * Set whether or not to use Id generator for primary key. + * @param boolean $bit + */ + public function setUseIdGenerator($bit) + { + $this->useIdGenerator = $bit; + } + + /** + * Whether to use Id generator for primary key. + * @return boolean + */ + public function isUseIdGenerator() + { + return $this->useIdGenerator; + } + + /** + * Sets the pk information needed to generate a key + * + * @param $pkInfo information needed to generate a key + */ + public function setPrimaryKeyMethodInfo($pkInfo) + { + $this->pkInfo = $pkInfo; + } + + /** + * Get the information used to generate a primary key + * + * @return An Object. + */ + public function getPrimaryKeyMethodInfo() + { + return $this->pkInfo; + } + + /** + * Add a column to the table. + * + * @param string name A String with the column name. + * @param string $type A string specifying the Propel type. + * @param boolean $isNotNull Whether column does not allow NULL values. + * @param int $size An int specifying the size. + * @param boolean $pk True if column is a primary key. + * @param string $fkTable A String with the foreign key table name. + * @param $fkColumn A String with the foreign key column name. + * @param string $defaultValue The default value for this column. + * @return ColumnMap The newly created column. + */ + public function addColumn($name, $phpName, $type, $isNotNull = false, $size = null, $defaultValue = null, $pk = false, $fkTable = null, $fkColumn = null) + { + + $col = new ColumnMap($name, $this); + + if ($fkTable && $fkColumn) { + if (strpos($fkColumn, '.') > 0 && strpos($fkColumn, $fkTable) !== false) { + $fkColumn = substr($fkColumn, strlen($fkTable) + 1); + } + $col->setForeignKey($fkTable, $fkColumn); + $this->foreignKeys[$name] = $col; + } + + $col->setType($type); + $col->setSize($size); + $col->setPhpName($phpName); + $col->setNotNull($isNotNull); + $col->setDefaultValue($defaultValue); + if ($pk) { + $col->setPrimaryKey(true); + $this->primaryKeys[$name] = $col; + } + $this->columns[$name] = $col; + + return $this->columns[$name]; + } + + /** + * Add a pre-created column to this table. It will replace any + * existing column. + * + * @param ColumnMap $cmap A ColumnMap. + * @return ColumnMap The added column map. + */ + public function addConfiguredColumn($cmap) + { + $this->columns[ $cmap->getColumnName() ] = $cmap; + return $cmap; + } + + /** + * Does this table contain the specified column? + * + * @param mixed $name name of the column or ColumnMap instance + * @param boolean $normalize Normalize the column name (if column name not like FIRST_NAME) + * @return boolean True if the table contains the column. + */ + public function hasColumn($name, $normalize = true) + { + if ($name instanceof ColumnMap) { + $name = $name->getColumnName(); + } else if($normalize) { + $name = ColumnMap::normalizeName($name); + } + return isset($this->columns[$name]); + } + + /** + * Get a ColumnMap for the named table. + * + * @param string $name A String with the name of the table. + * @param boolean $normalize Normalize the column name (if column name not like FIRST_NAME) + * @return ColumnMap A ColumnMap. + * @throws PropelException if the column is undefined + */ + public function getColumn($name, $normalize = true) + { + if ($normalize) { + $name = ColumnMap::normalizeName($name); + } + if (!$this->containsColumn($name, false)) { + throw new PropelException("Cannot fetch ColumnMap for undefined column: " . $name); + } + return $this->columns[$name]; + } + + /** + * Get a ColumnMap[] of the columns in this table. + * + * @return array A ColumnMap[]. + */ + public function getColumns() + { + return $this->columns; + } + + /** + * Add a primary key column to this Table. + * + * @param string $columnName A String with the column name. + * @param string $type A string specifying the Propel type. + * @param boolean $isNotNull Whether column does not allow NULL values. + * @param $size An int specifying the size. + * @return ColumnMap Newly added PrimaryKey column. + */ + public function addPrimaryKey($columnName, $phpName, $type, $isNotNull = false, $size = null, $defaultValue = null) + { + return $this->addColumn($columnName, $phpName, $type, $isNotNull, $size, $defaultValue, true, null, null); + } + + /** + * Add a foreign key column to the table. + * + * @param string $columnName A String with the column name. + * @param string $type A string specifying the Propel type. + * @param string $fkTable A String with the foreign key table name. + * @param string $fkColumn A String with the foreign key column name. + * @param boolean $isNotNull Whether column does not allow NULL values. + * @param int $size An int specifying the size. + * @param string $defaultValue The default value for this column. + * @return ColumnMap Newly added ForeignKey column. + */ + public function addForeignKey($columnName, $phpName, $type, $fkTable, $fkColumn, $isNotNull = false, $size = 0, $defaultValue = null) + { + return $this->addColumn($columnName, $phpName, $type, $isNotNull, $size, $defaultValue, false, $fkTable, $fkColumn); + } + + /** + * Add a foreign primary key column to the table. + * + * @param string $columnName A String with the column name. + * @param string $type A string specifying the Propel type. + * @param string $fkTable A String with the foreign key table name. + * @param string $fkColumn A String with the foreign key column name. + * @param boolean $isNotNull Whether column does not allow NULL values. + * @param int $size An int specifying the size. + * @param string $defaultValue The default value for this column. + * @return ColumnMap Newly created foreign pkey column. + */ + public function addForeignPrimaryKey($columnName, $phpName, $type, $fkTable, $fkColumn, $isNotNull = false, $size = 0, $defaultValue = null) + { + return $this->addColumn($columnName, $phpName, $type, $isNotNull, $size, $defaultValue, true, $fkTable, $fkColumn); + } + + /** + * Returns array of ColumnMap objects that make up the primary key for this table + * + * @return array ColumnMap[] + */ + public function getPrimaryKeys() + { + return $this->primaryKeys; + } + + /** + * Returns array of ColumnMap objects that are foreign keys for this table + * + * @return array ColumnMap[] + */ + public function getForeignKeys() + { + return $this->foreignKeys; + } + + /** + * Add a validator to a table's column + * + * @param string $columnName The name of the validator's column + * @param string $name The rule name of this validator + * @param string $classname The dot-path name of class to use (e.g. myapp.propel.MyValidator) + * @param string $value + * @param string $message The error message which is returned on invalid values + * @return void + */ + public function addValidator($columnName, $name, $classname, $value, $message) + { + if (false !== ($pos = strpos($columnName, '.'))) { + $columnName = substr($columnName, $pos + 1); + } + + $col = $this->getColumn($columnName); + if ($col !== null) { + $validator = new ValidatorMap($col); + $validator->setName($name); + $validator->setClass($classname); + $validator->setValue($value); + $validator->setMessage($message); + $col->addValidator($validator); + } + } + + /** + * Build relations + * Relations are lazy loaded for performance reasons + * This method should be overridden by descendents + */ + public function buildRelations() + { + } + + /** + * Adds a RelationMap to the table + * + * @param string $name The relation name + * @param string $tablePhpName The related table name + * @param integer $type The relation type (either RelationMap::MANY_TO_ONE, RelationMap::ONE_TO_MANY, or RelationMAp::ONE_TO_ONE) + * @param array $columnMapping An associative array mapping column names (local => foreign) + * @return RelationMap the built RelationMap object + */ + public function addRelation($name, $tablePhpName, $type, $columnMapping = array(), $onDelete = null, $onUpdate = null) + { + // note: using phpName for the second table allows the use of DatabaseMap::getTableByPhpName() + // and this method autoloads the TableMap if the table isn't loaded yet + $relation = new RelationMap($name); + $relation->setType($type); + $relation->setOnUpdate($onUpdate); + $relation->setOnDelete($onDelete); + // set tables + if ($type == RelationMap::MANY_TO_ONE) { + $relation->setLocalTable($this); + $relation->setForeignTable($this->dbMap->getTableByPhpName($tablePhpName)); + } else { + $relation->setLocalTable($this->dbMap->getTableByPhpName($tablePhpName)); + $relation->setForeignTable($this); + $columnMapping = array_flip($columnMapping); + } + // set columns + foreach ($columnMapping as $key => $value) + { + $relation->addColumnMapping( + $relation->getLocalTable()->getColumn($key), + $relation->getForeignTable()->getColumn($value) + ); + } + $this->relations[$name] = $relation; + return $relation; + } + + /** + * Gets a RelationMap of the table by relation name + * + * @param String $name The relation name + * @return boolean true if the relation exists + */ + public function hasRelation($name) + { + return array_key_exists($name, $this->getRelations()); + } + + /** + * Gets a RelationMap of the table by relation name + * + * @param String $name The relation name + * @return RelationMap The relation object + * @throws PropelException When called on an inexistent relation + */ + public function getRelation($name) + { + if (!array_key_exists($name, $this->getRelations())) + { + throw new PropelException('Calling getRelation() on an unknown relation, ' . $name); + } + return $this->relations[$name]; + } + + /** + * Gets the RelationMap objects of the table + * This method will build the relations if they are not built yet + * + * @return Array list of RelationMap objects + */ + public function getRelations() + { + if(!$this->relationsBuilt) + { + $this->buildRelations(); + $this->relationsBuilt = true; + } + return $this->relations; + } + + /** + * + * Gets the list of behaviors registered for this table + * + * @return array + */ + public function getBehaviors() + { + return array(); + } + + // Deprecated methods and attributres, to be removed + + /** + * Does this table contain the specified column? + * + * @deprecated Use hasColumn instead + * @param mixed $name name of the column or ColumnMap instance + * @param boolean $normalize Normalize the column name (if column name not like FIRST_NAME) + * @return boolean True if the table contains the column. + */ + public function containsColumn($name, $normalize = true) + { + return $this->hasColumn($name, $normalize); + } + + /** + * Normalizes the column name, removing table prefix and uppercasing. + * article.first_name becomes FIRST_NAME + * + * @deprecated Use ColumnMap::normalizeColumName() instead + * @param string $name + * @return string Normalized column name. + */ + protected function normalizeColName($name) + { + return ColumnMap::normalizeName($name); + } + + /** + * Returns array of ColumnMap objects that make up the primary key for this table. + * + * @deprecated Use getPrimaryKeys instead + * @return array ColumnMap[] + */ + public function getPrimaryKeyColumns() + { + return array_values($this->primaryKeys); + } + + //---Utility methods for doing intelligent lookup of table names + + /** + * The prefix on the table name. + * @deprecated Not used anywhere in Propel + */ + private $prefix; + + /** + * Get table prefix name. + * + * @deprecated Not used anywhere in Propel + * @return string A String with the prefix. + */ + public function getPrefix() + { + return $this->prefix; + } + + /** + * Set table prefix name. + * + * @deprecated Not used anywhere in Propel + * @param string $prefix The prefix for the table name (ie: SCARAB for + * SCARAB_PROJECT). + * @return void + */ + public function setPrefix($prefix) + { + $this->prefix = $prefix; + } + + /** + * Tell me if i have PREFIX in my string. + * + * @deprecated Not used anywhere in Propel + * @param data A String. + * @return boolean True if prefix is contained in data. + */ + protected function hasPrefix($data) + { + return (strpos($data, $this->prefix) === 0); + } + + /** + * Removes the PREFIX if found + * + * @deprecated Not used anywhere in Propel + * @param string $data A String. + * @return string A String with data, but with prefix removed. + */ + protected function removePrefix($data) + { + return $this->hasPrefix($data) ? substr($data, strlen($this->prefix)) : $data; + } + + /** + * Removes the PREFIX, removes the underscores and makes + * first letter caps. + * + * SCARAB_FOO_BAR becomes FooBar. + * + * @deprecated Not used anywhere in Propel. At buildtime, use Column::generatePhpName() for that purpose + * @param data A String. + * @return string A String with data processed. + */ + public final function removeUnderScores($data) + { + $out = ''; + $tmp = $this->removePrefix($data); + $tok = strtok($tmp, '_'); + while ($tok) { + $out .= ucfirst($tok); + $tok = strtok('_'); + } + return $out; + } + + /** + * Makes the first letter caps and the rest lowercase. + * + * @deprecated Not used anywhere in Propel. + * @param string $data A String. + * @return string A String with data processed. + */ + private function firstLetterCaps($data) + { + return(ucfirst(strtolower($data))); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/ValidatorMap.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/ValidatorMap.php new file mode 100644 index 0000000..84da6be --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/map/ValidatorMap.php @@ -0,0 +1,103 @@ +. + */ + +/** + * ValidatorMap is used to model a column validator. + * + * GENERAL NOTE + * ------------ + * The propel.map classes are abstract building-block classes for modeling + * the database at runtime. These classes are similar (a lite version) to the + * propel.engine.database.model classes, which are build-time modeling classes. + * These classes in themselves do not do any database metadata lookups. + * + * @author Michael Aichler + * @version $Revision: 1262 $ + * @package propel.map + */ +class ValidatorMap +{ + /** rule name of this validator */ + private $name; + /** the dot-path to class to use for validator */ + private $classname; + /** value to check against */ + private $value; + /** execption message thrown on invalid input */ + private $message; + /** related column */ + private $column; + + public function __construct($containingColumn) + { + $this->column = $containingColumn; + } + + public function getColumn() + { + return $this->column; + } + + public function getColumnName() + { + return $this->column->getColumnName(); + } + + public function setName($name) + { + $this->name = $name; + } + + public function setClass($classname) + { + $this->classname = $classname; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function setMessage($message) + { + $this->message = $message; + } + + public function getName() + { + return $this->name; + } + + public function getClass() + { + return $this->classname; + } + + public function getValue() + { + return $this->value; + } + + public function getMessage() + { + return $this->message; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/.svn/all-wcprops new file mode 100644 index 0000000..5b6fc81 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/.svn/all-wcprops @@ -0,0 +1,35 @@ +K 25 +svn:wc:ra_dav:version-url +V 51 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/om +END +NodeObject.php +K 25 +svn:wc:ra_dav:version-url +V 66 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/om/NodeObject.php +END +NestedSetRecursiveIterator.php +K 25 +svn:wc:ra_dav:version-url +V 82 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/om/NestedSetRecursiveIterator.php +END +Persistent.php +K 25 +svn:wc:ra_dav:version-url +V 66 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/om/Persistent.php +END +BaseObject.php +K 25 +svn:wc:ra_dav:version-url +V 66 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/om/BaseObject.php +END +PreOrderNodeIterator.php +K 25 +svn:wc:ra_dav:version-url +V 76 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/om/PreOrderNodeIterator.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/.svn/entries new file mode 100644 index 0000000..e6e6f07 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/.svn/entries @@ -0,0 +1,198 @@ +10 + +dir +2332 +http://propel.mirror.svn.symfony-project.com/tags/1.4.2/runtime/classes/propel/om +http://propel.mirror.svn.symfony-project.com + + + +2009-10-26T20:54:39.333354Z +1262 +francois + + + + + + + + + + + + + + +a84bc4f6-26e8-416f-aa96-3cde13879fbb + +NodeObject.php +file + + + + +2012-05-10T18:42:09.949552Z +c7cfa75b58299a170f2ed876c0b172c3 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +9622 + +NestedSetRecursiveIterator.php +file + + + + +2012-05-10T18:42:09.949552Z +33fd7af64361b9f266fd6cd403d5ee72 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +2340 + +Persistent.php +file + + + + +2012-05-10T18:42:09.989547Z +2ff527372e9316f1a9926a4f29ce7cdc +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +3425 + +BaseObject.php +file + + + + +2012-05-10T18:42:09.997566Z +7ca7772da246cc34fdf6228e1760a2e2 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +6786 + +PreOrderNodeIterator.php +file + + + + +2012-05-10T18:42:10.001549Z +0bbc49e6f7474a6bd9ae89e43a86bf9c +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +2387 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/.svn/prop-base/BaseObject.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/.svn/prop-base/BaseObject.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/.svn/prop-base/BaseObject.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/.svn/prop-base/NestedSetRecursiveIterator.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/.svn/prop-base/NestedSetRecursiveIterator.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/.svn/prop-base/NestedSetRecursiveIterator.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/.svn/prop-base/NodeObject.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/.svn/prop-base/NodeObject.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/.svn/prop-base/NodeObject.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/.svn/prop-base/Persistent.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/.svn/prop-base/Persistent.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/.svn/prop-base/Persistent.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/.svn/prop-base/PreOrderNodeIterator.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/.svn/prop-base/PreOrderNodeIterator.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/.svn/prop-base/PreOrderNodeIterator.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/.svn/text-base/BaseObject.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/.svn/text-base/BaseObject.php.svn-base new file mode 100644 index 0000000..924bff3 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/.svn/text-base/BaseObject.php.svn-base @@ -0,0 +1,266 @@ +. + */ + +/** + * This class contains attributes and methods that are used by all + * business objects within the system. + * + * @author Hans Lellelid (Propel) + * @author Frank Y. Kim (Torque) + * @author John D. McNally (Torque) + * @version $Revision$ + * @package propel.om + */ +abstract class BaseObject { + + /** + * attribute to determine if this object has previously been saved. + * @var boolean + */ + private $_new = true; + + /** + * attribute to determine whether this object has been deleted. + * @var boolean + */ + private $_deleted = false; + + /** + * The columns that have been modified in current object. + * Tracking modified columns allows us to only update modified columns. + * @var array + */ + protected $modifiedColumns = array(); + + /** + * Empty constructor (this allows people with their own BaseObject implementation to use its constructor) + */ + public function __construct() { + + } + + /** + * Returns whether the object has been modified. + * + * @return boolean True if the object has been modified. + */ + public function isModified() + { + return !empty($this->modifiedColumns); + } + + /** + * Has specified column been modified? + * + * @param string $col + * @return boolean True if $col has been modified. + */ + public function isColumnModified($col) + { + return in_array($col, $this->modifiedColumns); + } + + /** + * Get the columns that have been modified in this object. + * @return array A unique list of the modified column names for this object. + */ + public function getModifiedColumns() + { + return array_unique($this->modifiedColumns); + } + + /** + * Returns whether the object has ever been saved. This will + * be false, if the object was retrieved from storage or was created + * and then saved. + * + * @return true, if the object has never been persisted. + */ + public function isNew() + { + return $this->_new; + } + + /** + * Setter for the isNew attribute. This method will be called + * by Propel-generated children and Peers. + * + * @param boolean $b the state of the object. + */ + public function setNew($b) + { + $this->_new = (boolean) $b; + } + + /** + * Whether this object has been deleted. + * @return boolean The deleted state of this object. + */ + public function isDeleted() + { + return $this->_deleted; + } + + /** + * Specify whether this object has been deleted. + * @param boolean $b The deleted state of this object. + * @return void + */ + public function setDeleted($b) + { + $this->_deleted = (boolean) $b; + } + + /** + * Code to be run before persisting the object + * @param PropelPDO $con + * @return bloolean + */ + public function preSave(PropelPDO $con = null) + { + return true; + } + + /** + * Code to be run after persisting the object + * @param PropelPDO $con + */ + public function postSave(PropelPDO $con = null) { } + + /** + * Code to be run before inserting to database + * @param PropelPDO $con + * @return boolean + */ + public function preInsert(PropelPDO $con = null) + { + return true; + } + + /** + * Code to be run after inserting to database + * @param PropelPDO $con + */ + public function postInsert(PropelPDO $con = null) { } + + /** + * Code to be run before updating the object in database + * @param PropelPDO $con + * @return boolean + */ + public function preUpdate(PropelPDO $con = null) + { + return true; + } + + /** + * Code to be run after updating the object in database + * @param PropelPDO $con + */ + public function postUpdate(PropelPDO $con = null) { } + + /** + * Code to be run before deleting the object in database + * @param PropelPDO $con + * @return boolean + */ + public function preDelete(PropelPDO $con = null) + { + return true; + } + + /** + * Code to be run after deleting the object in database + * @param PropelPDO $con + */ + public function postDelete(PropelPDO $con = null) { } + + /** + * Sets the modified state for the object to be false. + * @param string $col If supplied, only the specified column is reset. + * @return void + */ + public function resetModified($col = null) + { + if ($col !== null) + { + while (($offset = array_search($col, $this->modifiedColumns)) !== false) + array_splice($this->modifiedColumns, $offset, 1); + } + else + { + $this->modifiedColumns = array(); + } + } + + /** + * Compares this with another BaseObject instance. If + * obj is an instance of BaseObject, delegates to + * equals(BaseObject). Otherwise, returns false. + * + * @param obj The object to compare to. + * @return Whether equal to the object specified. + */ + public function equals($obj) + { + $thisclazz = get_class($this); + if (is_object($obj) && $obj instanceof $thisclazz) { + if ($this === $obj) { + return true; + } elseif ($this->getPrimaryKey() === null || $obj->getPrimaryKey() === null) { + return false; + } else { + return ($this->getPrimaryKey() === $obj->getPrimaryKey()); + } + } else { + return false; + } + } + + /** + * If the primary key is not null, return the hashcode of the + * primary key. Otherwise calls Object.hashCode(). + * + * @return int Hashcode + */ + public function hashCode() + { + $ok = $this->getPrimaryKey(); + if ($ok === null) { + return crc32(serialize($this)); + } + return crc32(serialize($ok)); // serialize because it could be an array ("ComboKey") + } + + /** + * Logs a message using Propel::log(). + * + * @param string $msg + * @param int $priority One of the Propel::LOG_* logging levels + * @return boolean + */ + protected function log($msg, $priority = Propel::LOG_INFO) + { + return Propel::log(get_class($this) . ': ' . $msg, $priority); + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/.svn/text-base/NestedSetRecursiveIterator.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/.svn/text-base/NestedSetRecursiveIterator.php.svn-base new file mode 100644 index 0000000..9726332 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/.svn/text-base/NestedSetRecursiveIterator.php.svn-base @@ -0,0 +1,88 @@ +. + */ + +/** + * Pre-order node iterator for Node objects. + * + * @author Heltem + * @version $Revision$ + * @package propel.om + */ +class NestedSetRecursiveIterator implements RecursiveIterator +{ + protected $topNode = null; + + protected $curNode = null; + + public function __construct($node) { + $this->topNode = $node; + $this->curNode = $node; + } + + public function rewind() { + $this->curNode = $this->topNode; + } + + public function valid() { + return ($this->curNode !== null); + } + + public function current() { + return $this->curNode; + } + + public function key() { + $key = array(); + foreach ($this->curNode->getPath() as $node) { + $key[] = $node->getPrimaryKey(); + } + return implode('.', $key); + } + + public function next() { + $nextNode = null; + + if ($this->valid()) { + while (null === $nextNode) { + if (null === $this->curNode) { + break; + } + + if ($this->curNode->hasNextSibling()) { + $nextNode = $this->curNode->retrieveNextSibling(); + } else { + break; + } + } + $this->curNode = $nextNode; + } + return $this->curNode; + } + + public function hasChildren() { + return $this->curNode->hasChildren(); + } + + public function getChildren() { + return new NestedSetRecursiveIterator($this->curNode->retrieveFirstChild()); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/.svn/text-base/NodeObject.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/.svn/text-base/NodeObject.php.svn-base new file mode 100644 index 0000000..cf60ade --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/.svn/text-base/NodeObject.php.svn-base @@ -0,0 +1,334 @@ +. + */ + +/** + * This interface defines methods that must be implemented by all + * business objects within the system to handle Node object. + * + * @author Heltem (Propel) + * @version $Revision$ + * @package propel.om + */ +interface NodeObject extends IteratorAggregate { + /** + * If object is saved without left/right values, set them as undefined (0) + * + * @param PropelPDO $con Connection to use. + * @return void + * @throws PropelException + */ + public function save(PropelPDO $con = null); + + /** + * Delete node and descendants + * + * @param PropelPDO $con Connection to use. + * @return void + * @throws PropelException + */ + public function delete(PropelPDO $con = null); + + /** + * Sets node properties to make it a root node. + * + * @return object The current object (for fluent API support) + * @throws PropelException + */ + public function makeRoot(); + + /** + * Gets the level if set, otherwise calculates this and returns it + * + * @param PropelPDO $con Connection to use. + * @return int + */ + public function getLevel(PropelPDO $con = null); + + /** + * Get the path to the node in the tree + * + * @param PropelPDO $con Connection to use. + * @return array + */ + public function getPath(PropelPDO $con = null); + + /** + * Gets the number of children for the node (direct descendants) + * + * @param PropelPDO $con Connection to use. + * @return int + */ + public function getNumberOfChildren(PropelPDO $con = null); + + /** + * Gets the total number of desceandants for the node + * + * @param PropelPDO $con Connection to use. + * @return int + */ + public function getNumberOfDescendants(PropelPDO $con = null); + + /** + * Gets the children for the node + * + * @param PropelPDO $con Connection to use. + * @return array + */ + public function getChildren(PropelPDO $con = null); + + /** + * Gets the descendants for the node + * + * @param PropelPDO $con Connection to use. + * @return array + */ + public function getDescendants(PropelPDO $con = null); + + /** + * Sets the level of the node in the tree + * + * @param int $v new value + * @return object The current object (for fluent API support) + */ + public function setLevel($level); + + /** + * Sets the children array of the node in the tree + * + * @param array of Node $children array of Propel node object + * @return object The current object (for fluent API support) + */ + public function setChildren(array $children); + + /** + * Sets the parentNode of the node in the tree + * + * @param Node $parent Propel node object + * @return object The current object (for fluent API support) + */ + public function setParentNode(NodeObject $parent = null); + + /** + * Sets the previous sibling of the node in the tree + * + * @param Node $node Propel node object + * @return object The current object (for fluent API support) + */ + public function setPrevSibling(NodeObject $node = null); + + /** + * Sets the next sibling of the node in the tree + * + * @param Node $node Propel node object + * @return object The current object (for fluent API support) + */ + public function setNextSibling(NodeObject $node = null); + + /** + * Determines if the node is the root node + * + * @return bool + */ + public function isRoot(); + + /** + * Determines if the node is a leaf node + * + * @return bool + */ + public function isLeaf(); + + /** + * Tests if object is equal to $node + * + * @param object $node Propel object for node to compare to + * @return bool + */ + public function isEqualTo(NodeObject $node); + + /** + * Tests if object has an ancestor + * + * @param PropelPDO $con Connection to use. + * @return bool + */ + public function hasParent(PropelPDO $con = null); + + /** + * Determines if the node has children / descendants + * + * @return bool + */ + public function hasChildren(); + + /** + * Determines if the node has previous sibling + * + * @param PropelPDO $con Connection to use. + * @return bool + */ + public function hasPrevSibling(PropelPDO $con = null); + + /** + * Determines if the node has next sibling + * + * @param PropelPDO $con Connection to use. + * @return bool + */ + public function hasNextSibling(PropelPDO $con = null); + + /** + * Gets ancestor for the given node if it exists + * + * @param PropelPDO $con Connection to use. + * @return mixed Propel object if exists else false + */ + public function retrieveParent(PropelPDO $con = null); + + /** + * Gets first child if it exists + * + * @param PropelPDO $con Connection to use. + * @return mixed Propel object if exists else false + */ + public function retrieveFirstChild(PropelPDO $con = null); + + /** + * Gets last child if it exists + * + * @param PropelPDO $con Connection to use. + * @return mixed Propel object if exists else false + */ + public function retrieveLastChild(PropelPDO $con = null); + + /** + * Gets prev sibling for the given node if it exists + * + * @param PropelPDO $con Connection to use. + * @return mixed Propel object if exists else false + */ + public function retrievePrevSibling(PropelPDO $con = null); + + /** + * Gets next sibling for the given node if it exists + * + * @param PropelPDO $con Connection to use. + * @return mixed Propel object if exists else false + */ + public function retrieveNextSibling(PropelPDO $con = null); + + /** + * Inserts as first child of destination node $parent + * + * @param object $parent Propel object for given destination node + * @param PropelPDO $con Connection to use. + * @return object The current object (for fluent API support) + */ + public function insertAsFirstChildOf(NodeObject $parent, PropelPDO $con = null); + + /** + * Inserts as last child of destination node $parent + * + * @param object $parent Propel object for given destination node + * @param PropelPDO $con Connection to use. + * @return object The current object (for fluent API support) + */ + public function insertAsLastChildOf(NodeObject $parent, PropelPDO $con = null); + + /** + * Inserts node as previous sibling to destination node $dest + * + * @param object $dest Propel object for given destination node + * @param PropelPDO $con Connection to use. + * @return object The current object (for fluent API support) + */ + public function insertAsPrevSiblingOf(NodeObject $dest, PropelPDO $con = null); + + /** + * Inserts node as next sibling to destination node $dest + * + * @param object $dest Propel object for given destination node + * @param PropelPDO $con Connection to use. + * @return object The current object (for fluent API support) + */ + public function insertAsNextSiblingOf(NodeObject $dest, PropelPDO $con = null); + + /** + * Moves node to be first child of $parent + * + * @param object $parent Propel object for destination node + * @param PropelPDO $con Connection to use. + * @return void + */ + public function moveToFirstChildOf(NodeObject $parent, PropelPDO $con = null); + + /** + * Moves node to be last child of $parent + * + * @param object $parent Propel object for destination node + * @param PropelPDO $con Connection to use. + * @return void + */ + public function moveToLastChildOf(NodeObject $parent, PropelPDO $con = null); + + /** + * Moves node to be prev sibling to $dest + * + * @param object $dest Propel object for destination node + * @param PropelPDO $con Connection to use. + * @return void + */ + public function moveToPrevSiblingOf(NodeObject $dest, PropelPDO $con = null); + + /** + * Moves node to be next sibling to $dest + * + * @param object $dest Propel object for destination node + * @param PropelPDO $con Connection to use. + * @return void + */ + public function moveToNextSiblingOf(NodeObject $dest, PropelPDO $con = null); + + /** + * Inserts node as parent of given node. + * + * @param object $node Propel object for given destination node + * @param PropelPDO $con Connection to use. + * @return void + * @throws Exception When trying to insert node as parent of a root node + */ + public function insertAsParentOf(NodeObject $node, PropelPDO $con = null); + + /** + * Wraps the getter for the scope value + * + * @return int + */ + public function getScopeIdValue(); + + /** + * Set the value of scope column + * + * @param int $v new value + * @return object The current object (for fluent API support) + */ + public function setScopeIdValue($v); +} // NodeObject diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/.svn/text-base/Persistent.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/.svn/text-base/Persistent.php.svn-base new file mode 100644 index 0000000..6e53805 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/.svn/text-base/Persistent.php.svn-base @@ -0,0 +1,118 @@ +. + */ + +/** + * This interface defines methods related to saving an object + * + * @author Hans Lellelid (Propel) + * @author John D. McNally (Torque) + * @author Fedor K. (Torque) + * @version $Revision$ + * @package propel.om + */ +interface Persistent { + + /** + * getter for the object primaryKey. + * + * @return ObjectKey the object primaryKey as an Object + */ + public function getPrimaryKey(); + + /** + * Sets the PrimaryKey for the object. + * + * @param mixed $primaryKey The new PrimaryKey object or string (result of PrimaryKey.toString()). + * @return void + * @throws Exception, This method might throw an exceptions + */ + public function setPrimaryKey($primaryKey); + + + /** + * Returns whether the object has been modified, since it was + * last retrieved from storage. + * + * @return boolean True if the object has been modified. + */ + public function isModified(); + + /** + * Has specified column been modified? + * + * @param string $col + * @return boolean True if $col has been modified. + */ + public function isColumnModified($col); + + /** + * Returns whether the object has ever been saved. This will + * be false, if the object was retrieved from storage or was created + * and then saved. + * + * @return boolean True, if the object has never been persisted. + */ + public function isNew(); + + /** + * Setter for the isNew attribute. This method will be called + * by Propel-generated children and Peers. + * + * @param boolean $b the state of the object. + */ + public function setNew($b); + + /** + * Resets (to false) the "modified" state for this object. + * + * @return void + */ + public function resetModified(); + + /** + * Whether this object has been deleted. + * @return boolean The deleted state of this object. + */ + public function isDeleted(); + + /** + * Specify whether this object has been deleted. + * @param boolean $b The deleted state of this object. + * @return void + */ + public function setDeleted($b); + + /** + * Deletes the object. + * @param PropelPDO $con + * @return void + * @throws Exception + */ + public function delete(PropelPDO $con = null); + + /** + * Saves the object. + * @param PropelPDO $con + * @return void + * @throws Exception + */ + public function save(PropelPDO $con = null); +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/.svn/text-base/PreOrderNodeIterator.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/.svn/text-base/PreOrderNodeIterator.php.svn-base new file mode 100644 index 0000000..901f922 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/.svn/text-base/PreOrderNodeIterator.php.svn-base @@ -0,0 +1,90 @@ +. + */ + +/** + * Pre-order node iterator for Node objects. + * + * @author Dave Lawson + * @version $Revision$ + * @package propel.om + */ +class PreOrderNodeIterator implements Iterator +{ + private $topNode = null; + + private $curNode = null; + + private $querydb = false; + + private $con = null; + + public function __construct($node, $opts) { + $this->topNode = $node; + $this->curNode = $node; + + if (isset($opts['con'])) + $this->con = $opts['con']; + + if (isset($opts['querydb'])) + $this->querydb = $opts['querydb']; + } + + public function rewind() { + $this->curNode = $this->topNode; + } + + public function valid() { + return ($this->curNode !== null); + } + + public function current() { + return $this->curNode; + } + + public function key() { + return $this->curNode->getNodePath(); + } + + public function next() { + + if ($this->valid()) + { + $nextNode = $this->curNode->getFirstChildNode($this->querydb, $this->con); + + while ($nextNode === null) + { + if ($this->curNode === null || $this->curNode->equals($this->topNode)) + break; + + $nextNode = $this->curNode->getSiblingNode(false, $this->querydb, $this->con); + + if ($nextNode === null) + $this->curNode = $this->curNode->getParentNode($this->querydb, $this->con); + } + + $this->curNode = $nextNode; + } + + return $this->curNode; + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/BaseObject.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/BaseObject.php new file mode 100644 index 0000000..6bde977 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/BaseObject.php @@ -0,0 +1,266 @@ +. + */ + +/** + * This class contains attributes and methods that are used by all + * business objects within the system. + * + * @author Hans Lellelid (Propel) + * @author Frank Y. Kim (Torque) + * @author John D. McNally (Torque) + * @version $Revision: 1262 $ + * @package propel.om + */ +abstract class BaseObject { + + /** + * attribute to determine if this object has previously been saved. + * @var boolean + */ + private $_new = true; + + /** + * attribute to determine whether this object has been deleted. + * @var boolean + */ + private $_deleted = false; + + /** + * The columns that have been modified in current object. + * Tracking modified columns allows us to only update modified columns. + * @var array + */ + protected $modifiedColumns = array(); + + /** + * Empty constructor (this allows people with their own BaseObject implementation to use its constructor) + */ + public function __construct() { + + } + + /** + * Returns whether the object has been modified. + * + * @return boolean True if the object has been modified. + */ + public function isModified() + { + return !empty($this->modifiedColumns); + } + + /** + * Has specified column been modified? + * + * @param string $col + * @return boolean True if $col has been modified. + */ + public function isColumnModified($col) + { + return in_array($col, $this->modifiedColumns); + } + + /** + * Get the columns that have been modified in this object. + * @return array A unique list of the modified column names for this object. + */ + public function getModifiedColumns() + { + return array_unique($this->modifiedColumns); + } + + /** + * Returns whether the object has ever been saved. This will + * be false, if the object was retrieved from storage or was created + * and then saved. + * + * @return true, if the object has never been persisted. + */ + public function isNew() + { + return $this->_new; + } + + /** + * Setter for the isNew attribute. This method will be called + * by Propel-generated children and Peers. + * + * @param boolean $b the state of the object. + */ + public function setNew($b) + { + $this->_new = (boolean) $b; + } + + /** + * Whether this object has been deleted. + * @return boolean The deleted state of this object. + */ + public function isDeleted() + { + return $this->_deleted; + } + + /** + * Specify whether this object has been deleted. + * @param boolean $b The deleted state of this object. + * @return void + */ + public function setDeleted($b) + { + $this->_deleted = (boolean) $b; + } + + /** + * Code to be run before persisting the object + * @param PropelPDO $con + * @return bloolean + */ + public function preSave(PropelPDO $con = null) + { + return true; + } + + /** + * Code to be run after persisting the object + * @param PropelPDO $con + */ + public function postSave(PropelPDO $con = null) { } + + /** + * Code to be run before inserting to database + * @param PropelPDO $con + * @return boolean + */ + public function preInsert(PropelPDO $con = null) + { + return true; + } + + /** + * Code to be run after inserting to database + * @param PropelPDO $con + */ + public function postInsert(PropelPDO $con = null) { } + + /** + * Code to be run before updating the object in database + * @param PropelPDO $con + * @return boolean + */ + public function preUpdate(PropelPDO $con = null) + { + return true; + } + + /** + * Code to be run after updating the object in database + * @param PropelPDO $con + */ + public function postUpdate(PropelPDO $con = null) { } + + /** + * Code to be run before deleting the object in database + * @param PropelPDO $con + * @return boolean + */ + public function preDelete(PropelPDO $con = null) + { + return true; + } + + /** + * Code to be run after deleting the object in database + * @param PropelPDO $con + */ + public function postDelete(PropelPDO $con = null) { } + + /** + * Sets the modified state for the object to be false. + * @param string $col If supplied, only the specified column is reset. + * @return void + */ + public function resetModified($col = null) + { + if ($col !== null) + { + while (($offset = array_search($col, $this->modifiedColumns)) !== false) + array_splice($this->modifiedColumns, $offset, 1); + } + else + { + $this->modifiedColumns = array(); + } + } + + /** + * Compares this with another BaseObject instance. If + * obj is an instance of BaseObject, delegates to + * equals(BaseObject). Otherwise, returns false. + * + * @param obj The object to compare to. + * @return Whether equal to the object specified. + */ + public function equals($obj) + { + $thisclazz = get_class($this); + if (is_object($obj) && $obj instanceof $thisclazz) { + if ($this === $obj) { + return true; + } elseif ($this->getPrimaryKey() === null || $obj->getPrimaryKey() === null) { + return false; + } else { + return ($this->getPrimaryKey() === $obj->getPrimaryKey()); + } + } else { + return false; + } + } + + /** + * If the primary key is not null, return the hashcode of the + * primary key. Otherwise calls Object.hashCode(). + * + * @return int Hashcode + */ + public function hashCode() + { + $ok = $this->getPrimaryKey(); + if ($ok === null) { + return crc32(serialize($this)); + } + return crc32(serialize($ok)); // serialize because it could be an array ("ComboKey") + } + + /** + * Logs a message using Propel::log(). + * + * @param string $msg + * @param int $priority One of the Propel::LOG_* logging levels + * @return boolean + */ + protected function log($msg, $priority = Propel::LOG_INFO) + { + return Propel::log(get_class($this) . ': ' . $msg, $priority); + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/NestedSetRecursiveIterator.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/NestedSetRecursiveIterator.php new file mode 100644 index 0000000..5e6f632 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/NestedSetRecursiveIterator.php @@ -0,0 +1,88 @@ +. + */ + +/** + * Pre-order node iterator for Node objects. + * + * @author Heltem + * @version $Revision: 1262 $ + * @package propel.om + */ +class NestedSetRecursiveIterator implements RecursiveIterator +{ + protected $topNode = null; + + protected $curNode = null; + + public function __construct($node) { + $this->topNode = $node; + $this->curNode = $node; + } + + public function rewind() { + $this->curNode = $this->topNode; + } + + public function valid() { + return ($this->curNode !== null); + } + + public function current() { + return $this->curNode; + } + + public function key() { + $key = array(); + foreach ($this->curNode->getPath() as $node) { + $key[] = $node->getPrimaryKey(); + } + return implode('.', $key); + } + + public function next() { + $nextNode = null; + + if ($this->valid()) { + while (null === $nextNode) { + if (null === $this->curNode) { + break; + } + + if ($this->curNode->hasNextSibling()) { + $nextNode = $this->curNode->retrieveNextSibling(); + } else { + break; + } + } + $this->curNode = $nextNode; + } + return $this->curNode; + } + + public function hasChildren() { + return $this->curNode->hasChildren(); + } + + public function getChildren() { + return new NestedSetRecursiveIterator($this->curNode->retrieveFirstChild()); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/NodeObject.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/NodeObject.php new file mode 100644 index 0000000..4b5a61a --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/NodeObject.php @@ -0,0 +1,334 @@ +. + */ + +/** + * This interface defines methods that must be implemented by all + * business objects within the system to handle Node object. + * + * @author Heltem (Propel) + * @version $Revision: 1262 $ + * @package propel.om + */ +interface NodeObject extends IteratorAggregate { + /** + * If object is saved without left/right values, set them as undefined (0) + * + * @param PropelPDO $con Connection to use. + * @return void + * @throws PropelException + */ + public function save(PropelPDO $con = null); + + /** + * Delete node and descendants + * + * @param PropelPDO $con Connection to use. + * @return void + * @throws PropelException + */ + public function delete(PropelPDO $con = null); + + /** + * Sets node properties to make it a root node. + * + * @return object The current object (for fluent API support) + * @throws PropelException + */ + public function makeRoot(); + + /** + * Gets the level if set, otherwise calculates this and returns it + * + * @param PropelPDO $con Connection to use. + * @return int + */ + public function getLevel(PropelPDO $con = null); + + /** + * Get the path to the node in the tree + * + * @param PropelPDO $con Connection to use. + * @return array + */ + public function getPath(PropelPDO $con = null); + + /** + * Gets the number of children for the node (direct descendants) + * + * @param PropelPDO $con Connection to use. + * @return int + */ + public function getNumberOfChildren(PropelPDO $con = null); + + /** + * Gets the total number of desceandants for the node + * + * @param PropelPDO $con Connection to use. + * @return int + */ + public function getNumberOfDescendants(PropelPDO $con = null); + + /** + * Gets the children for the node + * + * @param PropelPDO $con Connection to use. + * @return array + */ + public function getChildren(PropelPDO $con = null); + + /** + * Gets the descendants for the node + * + * @param PropelPDO $con Connection to use. + * @return array + */ + public function getDescendants(PropelPDO $con = null); + + /** + * Sets the level of the node in the tree + * + * @param int $v new value + * @return object The current object (for fluent API support) + */ + public function setLevel($level); + + /** + * Sets the children array of the node in the tree + * + * @param array of Node $children array of Propel node object + * @return object The current object (for fluent API support) + */ + public function setChildren(array $children); + + /** + * Sets the parentNode of the node in the tree + * + * @param Node $parent Propel node object + * @return object The current object (for fluent API support) + */ + public function setParentNode(NodeObject $parent = null); + + /** + * Sets the previous sibling of the node in the tree + * + * @param Node $node Propel node object + * @return object The current object (for fluent API support) + */ + public function setPrevSibling(NodeObject $node = null); + + /** + * Sets the next sibling of the node in the tree + * + * @param Node $node Propel node object + * @return object The current object (for fluent API support) + */ + public function setNextSibling(NodeObject $node = null); + + /** + * Determines if the node is the root node + * + * @return bool + */ + public function isRoot(); + + /** + * Determines if the node is a leaf node + * + * @return bool + */ + public function isLeaf(); + + /** + * Tests if object is equal to $node + * + * @param object $node Propel object for node to compare to + * @return bool + */ + public function isEqualTo(NodeObject $node); + + /** + * Tests if object has an ancestor + * + * @param PropelPDO $con Connection to use. + * @return bool + */ + public function hasParent(PropelPDO $con = null); + + /** + * Determines if the node has children / descendants + * + * @return bool + */ + public function hasChildren(); + + /** + * Determines if the node has previous sibling + * + * @param PropelPDO $con Connection to use. + * @return bool + */ + public function hasPrevSibling(PropelPDO $con = null); + + /** + * Determines if the node has next sibling + * + * @param PropelPDO $con Connection to use. + * @return bool + */ + public function hasNextSibling(PropelPDO $con = null); + + /** + * Gets ancestor for the given node if it exists + * + * @param PropelPDO $con Connection to use. + * @return mixed Propel object if exists else false + */ + public function retrieveParent(PropelPDO $con = null); + + /** + * Gets first child if it exists + * + * @param PropelPDO $con Connection to use. + * @return mixed Propel object if exists else false + */ + public function retrieveFirstChild(PropelPDO $con = null); + + /** + * Gets last child if it exists + * + * @param PropelPDO $con Connection to use. + * @return mixed Propel object if exists else false + */ + public function retrieveLastChild(PropelPDO $con = null); + + /** + * Gets prev sibling for the given node if it exists + * + * @param PropelPDO $con Connection to use. + * @return mixed Propel object if exists else false + */ + public function retrievePrevSibling(PropelPDO $con = null); + + /** + * Gets next sibling for the given node if it exists + * + * @param PropelPDO $con Connection to use. + * @return mixed Propel object if exists else false + */ + public function retrieveNextSibling(PropelPDO $con = null); + + /** + * Inserts as first child of destination node $parent + * + * @param object $parent Propel object for given destination node + * @param PropelPDO $con Connection to use. + * @return object The current object (for fluent API support) + */ + public function insertAsFirstChildOf(NodeObject $parent, PropelPDO $con = null); + + /** + * Inserts as last child of destination node $parent + * + * @param object $parent Propel object for given destination node + * @param PropelPDO $con Connection to use. + * @return object The current object (for fluent API support) + */ + public function insertAsLastChildOf(NodeObject $parent, PropelPDO $con = null); + + /** + * Inserts node as previous sibling to destination node $dest + * + * @param object $dest Propel object for given destination node + * @param PropelPDO $con Connection to use. + * @return object The current object (for fluent API support) + */ + public function insertAsPrevSiblingOf(NodeObject $dest, PropelPDO $con = null); + + /** + * Inserts node as next sibling to destination node $dest + * + * @param object $dest Propel object for given destination node + * @param PropelPDO $con Connection to use. + * @return object The current object (for fluent API support) + */ + public function insertAsNextSiblingOf(NodeObject $dest, PropelPDO $con = null); + + /** + * Moves node to be first child of $parent + * + * @param object $parent Propel object for destination node + * @param PropelPDO $con Connection to use. + * @return void + */ + public function moveToFirstChildOf(NodeObject $parent, PropelPDO $con = null); + + /** + * Moves node to be last child of $parent + * + * @param object $parent Propel object for destination node + * @param PropelPDO $con Connection to use. + * @return void + */ + public function moveToLastChildOf(NodeObject $parent, PropelPDO $con = null); + + /** + * Moves node to be prev sibling to $dest + * + * @param object $dest Propel object for destination node + * @param PropelPDO $con Connection to use. + * @return void + */ + public function moveToPrevSiblingOf(NodeObject $dest, PropelPDO $con = null); + + /** + * Moves node to be next sibling to $dest + * + * @param object $dest Propel object for destination node + * @param PropelPDO $con Connection to use. + * @return void + */ + public function moveToNextSiblingOf(NodeObject $dest, PropelPDO $con = null); + + /** + * Inserts node as parent of given node. + * + * @param object $node Propel object for given destination node + * @param PropelPDO $con Connection to use. + * @return void + * @throws Exception When trying to insert node as parent of a root node + */ + public function insertAsParentOf(NodeObject $node, PropelPDO $con = null); + + /** + * Wraps the getter for the scope value + * + * @return int + */ + public function getScopeIdValue(); + + /** + * Set the value of scope column + * + * @param int $v new value + * @return object The current object (for fluent API support) + */ + public function setScopeIdValue($v); +} // NodeObject diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/Persistent.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/Persistent.php new file mode 100644 index 0000000..506e87a --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/Persistent.php @@ -0,0 +1,118 @@ +. + */ + +/** + * This interface defines methods related to saving an object + * + * @author Hans Lellelid (Propel) + * @author John D. McNally (Torque) + * @author Fedor K. (Torque) + * @version $Revision: 1262 $ + * @package propel.om + */ +interface Persistent { + + /** + * getter for the object primaryKey. + * + * @return ObjectKey the object primaryKey as an Object + */ + public function getPrimaryKey(); + + /** + * Sets the PrimaryKey for the object. + * + * @param mixed $primaryKey The new PrimaryKey object or string (result of PrimaryKey.toString()). + * @return void + * @throws Exception, This method might throw an exceptions + */ + public function setPrimaryKey($primaryKey); + + + /** + * Returns whether the object has been modified, since it was + * last retrieved from storage. + * + * @return boolean True if the object has been modified. + */ + public function isModified(); + + /** + * Has specified column been modified? + * + * @param string $col + * @return boolean True if $col has been modified. + */ + public function isColumnModified($col); + + /** + * Returns whether the object has ever been saved. This will + * be false, if the object was retrieved from storage or was created + * and then saved. + * + * @return boolean True, if the object has never been persisted. + */ + public function isNew(); + + /** + * Setter for the isNew attribute. This method will be called + * by Propel-generated children and Peers. + * + * @param boolean $b the state of the object. + */ + public function setNew($b); + + /** + * Resets (to false) the "modified" state for this object. + * + * @return void + */ + public function resetModified(); + + /** + * Whether this object has been deleted. + * @return boolean The deleted state of this object. + */ + public function isDeleted(); + + /** + * Specify whether this object has been deleted. + * @param boolean $b The deleted state of this object. + * @return void + */ + public function setDeleted($b); + + /** + * Deletes the object. + * @param PropelPDO $con + * @return void + * @throws Exception + */ + public function delete(PropelPDO $con = null); + + /** + * Saves the object. + * @param PropelPDO $con + * @return void + * @throws Exception + */ + public function save(PropelPDO $con = null); +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/PreOrderNodeIterator.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/PreOrderNodeIterator.php new file mode 100644 index 0000000..6986d36 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/om/PreOrderNodeIterator.php @@ -0,0 +1,90 @@ +. + */ + +/** + * Pre-order node iterator for Node objects. + * + * @author Dave Lawson + * @version $Revision: 1262 $ + * @package propel.om + */ +class PreOrderNodeIterator implements Iterator +{ + private $topNode = null; + + private $curNode = null; + + private $querydb = false; + + private $con = null; + + public function __construct($node, $opts) { + $this->topNode = $node; + $this->curNode = $node; + + if (isset($opts['con'])) + $this->con = $opts['con']; + + if (isset($opts['querydb'])) + $this->querydb = $opts['querydb']; + } + + public function rewind() { + $this->curNode = $this->topNode; + } + + public function valid() { + return ($this->curNode !== null); + } + + public function current() { + return $this->curNode; + } + + public function key() { + return $this->curNode->getNodePath(); + } + + public function next() { + + if ($this->valid()) + { + $nextNode = $this->curNode->getFirstChildNode($this->querydb, $this->con); + + while ($nextNode === null) + { + if ($this->curNode === null || $this->curNode->equals($this->topNode)) + break; + + $nextNode = $this->curNode->getSiblingNode(false, $this->querydb, $this->con); + + if ($nextNode === null) + $this->curNode = $this->curNode->getParentNode($this->querydb, $this->con); + } + + $this->curNode = $nextNode; + } + + return $this->curNode; + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/all-wcprops new file mode 100644 index 0000000..c604443 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/all-wcprops @@ -0,0 +1,77 @@ +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/util +END +DebugPDO.php +K 25 +svn:wc:ra_dav:version-url +V 66 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/util/DebugPDO.php +END +PropelConfiguration.php +K 25 +svn:wc:ra_dav:version-url +V 77 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/util/PropelConfiguration.php +END +DebugPDOStatement.php +K 25 +svn:wc:ra_dav:version-url +V 75 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/util/DebugPDOStatement.php +END +PropelDateTime.php +K 25 +svn:wc:ra_dav:version-url +V 72 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/util/PropelDateTime.php +END +Join.php +K 25 +svn:wc:ra_dav:version-url +V 62 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/util/Join.php +END +PropelPager.php +K 25 +svn:wc:ra_dav:version-url +V 69 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/util/PropelPager.php +END +NodePeer.php +K 25 +svn:wc:ra_dav:version-url +V 66 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/util/NodePeer.php +END +Criteria.php +K 25 +svn:wc:ra_dav:version-url +V 66 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/util/Criteria.php +END +PropelConfigurationIterator.php +K 25 +svn:wc:ra_dav:version-url +V 85 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/util/PropelConfigurationIterator.php +END +PropelColumnTypes.php +K 25 +svn:wc:ra_dav:version-url +V 75 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/util/PropelColumnTypes.php +END +PropelPDO.php +K 25 +svn:wc:ra_dav:version-url +V 67 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/util/PropelPDO.php +END +BasePeer.php +K 25 +svn:wc:ra_dav:version-url +V 66 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/util/BasePeer.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/entries new file mode 100644 index 0000000..f878fd6 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/entries @@ -0,0 +1,436 @@ +10 + +dir +2332 +http://propel.mirror.svn.symfony-project.com/tags/1.4.2/runtime/classes/propel/util +http://propel.mirror.svn.symfony-project.com + + + +2010-03-15T23:09:22.835729Z +1608 +francois + + + + + + + + + + + + + + +a84bc4f6-26e8-416f-aa96-3cde13879fbb + +DebugPDO.php +file + + + + +2012-05-10T18:42:10.209548Z +8e89bd8c2f799865a6df3425c42dfd09 +2009-11-29T22:36:48.171080Z +1343 +david +has-props + + + + + + + + + + + + + + + + + + + + +19159 + +PropelConfiguration.php +file + + + + +2012-05-10T18:42:10.209548Z +fb727ec6ab64c41a7721b0115e33b50e +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +4541 + +DebugPDOStatement.php +file + + + + +2012-05-10T18:42:10.213552Z +81f2e1feb25469370af10f5183258d0f +2010-03-15T13:06:11.709936Z +1601 +francois +has-props + + + + + + + + + + + + + + + + + + + + +4290 + +PropelDateTime.php +file + + + + +2012-05-10T18:42:10.213552Z +5c3158baf82b03e9405d5405f96f981f +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +2820 + +Join.php +file + + + + +2012-05-10T18:42:10.213552Z +e679271d6e960f2bff02960c7459c7f7 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +7251 + +PropelPager.php +file + + + + +2012-05-10T18:42:10.217551Z +af87680f0e4b9763ff5fb4d3cd8ab4b6 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +13101 + +NodePeer.php +file + + + + +2012-05-10T18:42:10.257560Z +75e5c11a9d639ff74325dab6686715a1 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +12540 + +Criteria.php +file + + + + +2012-05-10T18:42:10.261545Z +473a7f1cea8ae7d88ba9295dd02eeff7 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +44455 + +PropelConfigurationIterator.php +file + + + + +2012-05-10T18:42:10.261545Z +dc3e63075371f5f3c7b22e3365c774ac +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +2913 + +PropelColumnTypes.php +file + + + + +2012-05-10T18:42:10.265551Z +d6bdfc3340ad646ddabff3a45933cf98 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +3122 + +PropelPDO.php +file + + + + +2012-05-10T18:42:10.265551Z +d8fa32ba3101557bf4e3287789c1f6ae +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +7446 + +BasePeer.php +file + + + + +2012-05-10T18:42:10.269549Z +2f9b86494f8a83c8b4f1a6fb39c2e9c4 +2010-03-15T23:09:22.835729Z +1608 +francois +has-props + + + + + + + + + + + + + + + + + + + + +35193 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/prop-base/BasePeer.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/prop-base/BasePeer.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/prop-base/BasePeer.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/prop-base/Criteria.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/prop-base/Criteria.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/prop-base/Criteria.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/prop-base/DebugPDO.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/prop-base/DebugPDO.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/prop-base/DebugPDO.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/prop-base/DebugPDOStatement.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/prop-base/DebugPDOStatement.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/prop-base/DebugPDOStatement.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/prop-base/Join.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/prop-base/Join.php.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/prop-base/Join.php.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/prop-base/NodePeer.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/prop-base/NodePeer.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/prop-base/NodePeer.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/prop-base/PropelColumnTypes.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/prop-base/PropelColumnTypes.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/prop-base/PropelColumnTypes.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/prop-base/PropelConfiguration.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/prop-base/PropelConfiguration.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/prop-base/PropelConfiguration.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/prop-base/PropelConfigurationIterator.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/prop-base/PropelConfigurationIterator.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/prop-base/PropelConfigurationIterator.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/prop-base/PropelDateTime.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/prop-base/PropelDateTime.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/prop-base/PropelDateTime.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/prop-base/PropelPDO.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/prop-base/PropelPDO.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/prop-base/PropelPDO.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/prop-base/PropelPager.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/prop-base/PropelPager.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/prop-base/PropelPager.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/text-base/BasePeer.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/text-base/BasePeer.php.svn-base new file mode 100644 index 0000000..c4e9e19 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/text-base/BasePeer.php.svn-base @@ -0,0 +1,1064 @@ +. + */ + +/** + * This is a utility class for all generated Peer classes in the system. + * + * Peer classes are responsible for isolating all of the database access + * for a specific business object. They execute all of the SQL + * against the database. Over time this class has grown to include + * utility methods which ease execution of cross-database queries and + * the implementation of concrete Peers. + * + * @author Hans Lellelid (Propel) + * @author Kaspars Jaudzems (Propel) + * @author Heltem (Propel) + * @author Frank Y. Kim (Torque) + * @author John D. McNally (Torque) + * @author Brett McLaughlin (Torque) + * @author Stephen Haberman (Torque) + * @version $Revision$ + * @package propel.util + */ +class BasePeer +{ + + /** Array (hash) that contains the cached mapBuilders. */ + private static $mapBuilders = array(); + + /** Array (hash) that contains cached validators */ + private static $validatorMap = array(); + + /** + * phpname type + * e.g. 'AuthorId' + */ + const TYPE_PHPNAME = 'phpName'; + + /** + * studlyphpname type + * e.g. 'authorId' + */ + const TYPE_STUDLYPHPNAME = 'studlyPhpName'; + + /** + * column (peer) name type + * e.g. 'book.AUTHOR_ID' + */ + const TYPE_COLNAME = 'colName'; + + /** + * column fieldname type + * e.g. 'author_id' + */ + const TYPE_FIELDNAME = 'fieldName'; + + /** + * num type + * simply the numerical array index, e.g. 4 + */ + const TYPE_NUM = 'num'; + + static public function getFieldnames ($classname, $type = self::TYPE_PHPNAME) { + + // TODO we should take care of including the peer class here + + $peerclass = 'Base' . $classname . 'Peer'; // TODO is this always true? + $callable = array($peerclass, 'getFieldnames'); + $args = array($type); + + return call_user_func_array($callable, $args); + } + + static public function translateFieldname($classname, $fieldname, $fromType, $toType) { + + // TODO we should take care of including the peer class here + + $peerclass = 'Base' . $classname . 'Peer'; // TODO is this always true? + $callable = array($peerclass, 'translateFieldname'); + $args = array($fieldname, $fromType, $toType); + + return call_user_func_array($callable, $args); + } + + /** + * Method to perform deletes based on values and keys in a + * Criteria. + * + * @param Criteria $criteria The criteria to use. + * @param PropelPDO $con A PropelPDO connection object. + * @return int The number of rows affected by last statement execution. For most + * uses there is only one delete statement executed, so this number + * will correspond to the number of rows affected by the call to this + * method. Note that the return value does require that this information + * is returned (supported) by the PDO driver. + * @throws PropelException + */ + public static function doDelete(Criteria $criteria, PropelPDO $con) + { + $db = Propel::getDB($criteria->getDbName()); + $dbMap = Propel::getDatabaseMap($criteria->getDbName()); + + // Set up a list of required tables (one DELETE statement will + // be executed per table) + + $tables_keys = array(); + foreach ($criteria as $c) { + foreach ($c->getAllTables() as $tableName) { + $tableName2 = $criteria->getTableForAlias($tableName); + if ($tableName2 !== null) { + $tables_keys[$tableName2 . ' ' . $tableName] = true; + } else { + $tables_keys[$tableName] = true; + } + } + } // foreach criteria->keys() + + $affectedRows = 0; // initialize this in case the next loop has no iterations. + + $tables = array_keys($tables_keys); + + foreach ($tables as $tableName) { + + $whereClause = array(); + $selectParams = array(); + foreach ($dbMap->getTable($tableName)->getColumns() as $colMap) { + $key = $tableName . '.' . $colMap->getColumnName(); + if ($criteria->containsKey($key)) { + $sb = ""; + $criteria->getCriterion($key)->appendPsTo($sb, $selectParams); + $whereClause[] = $sb; + } + } + + if (empty($whereClause)) { + throw new PropelException("Cowardly refusing to delete from table $tableName with empty WHERE clause."); + } + + // Execute the statement. + try { + $sql = "DELETE FROM " . $tableName . " WHERE " . implode(" AND ", $whereClause); + $stmt = $con->prepare($sql); + self::populateStmtValues($stmt, $selectParams, $dbMap, $db); + $stmt->execute(); + $affectedRows = $stmt->rowCount(); + } catch (Exception $e) { + Propel::log($e->getMessage(), Propel::LOG_ERR); + throw new PropelException("Unable to execute DELETE statement.",$e); + } + + } // for each table + + return $affectedRows; + } + + /** + * Method to deletes all contents of specified table. + * + * This method is invoked from generated Peer classes like this: + * + * public static function doDeleteAll($con = null) + * { + * if ($con === null) $con = Propel::getConnection(self::DATABASE_NAME); + * BasePeer::doDeleteAll(self::TABLE_NAME, $con); + * } + * + * + * @param string $tableName The name of the table to empty. + * @param PropelPDO $con A PropelPDO connection object. + * @return int The number of rows affected by the statement. Note + * that the return value does require that this information + * is returned (supported) by the Creole db driver. + * @throws PropelException - wrapping SQLException caught from statement execution. + */ + public static function doDeleteAll($tableName, PropelPDO $con) + { + try { + $sql = "DELETE FROM " . $tableName; + $stmt = $con->prepare($sql); + $stmt->execute(); + return $stmt->rowCount(); + } catch (Exception $e) { + Propel::log($e->getMessage(), Propel::LOG_ERR); + throw new PropelException("Unable to perform DELETE ALL operation.", $e); + } + } + + /** + * Method to perform inserts based on values and keys in a + * Criteria. + *

    + * If the primary key is auto incremented the data in Criteria + * will be inserted and the auto increment value will be returned. + *

    + * If the primary key is included in Criteria then that value will + * be used to insert the row. + *

    + * If no primary key is included in Criteria then we will try to + * figure out the primary key from the database map and insert the + * row with the next available id using util.db.IDBroker. + *

    + * If no primary key is defined for the table the values will be + * inserted as specified in Criteria and null will be returned. + * + * @param Criteria $criteria Object containing values to insert. + * @param PropelPDO $con A PropelPDO connection. + * @return mixed The primary key for the new row if (and only if!) the primary key + * is auto-generated. Otherwise will return null. + * @throws PropelException + */ + public static function doInsert(Criteria $criteria, PropelPDO $con) { + + // the primary key + $id = null; + + $db = Propel::getDB($criteria->getDbName()); + + // Get the table name and method for determining the primary + // key value. + $keys = $criteria->keys(); + if (!empty($keys)) { + $tableName = $criteria->getTableName( $keys[0] ); + } else { + throw new PropelException("Database insert attempted without anything specified to insert"); + } + + $dbMap = Propel::getDatabaseMap($criteria->getDbName()); + $tableMap = $dbMap->getTable($tableName); + $keyInfo = $tableMap->getPrimaryKeyMethodInfo(); + $useIdGen = $tableMap->isUseIdGenerator(); + //$keyGen = $con->getIdGenerator(); + + $pk = self::getPrimaryKey($criteria); + + // only get a new key value if you need to + // the reason is that a primary key might be defined + // but you are still going to set its value. for example: + // a join table where both keys are primary and you are + // setting both columns with your own values + + // pk will be null if there is no primary key defined for the table + // we're inserting into. + if ($pk !== null && $useIdGen && !$criteria->keyContainsValue($pk->getFullyQualifiedName()) && $db->isGetIdBeforeInsert()) { + try { + $id = $db->getId($con, $keyInfo); + } catch (Exception $e) { + throw new PropelException("Unable to get sequence id.", $e); + } + $criteria->add($pk->getFullyQualifiedName(), $id); + } + + try { + $adapter = Propel::getDB($criteria->getDBName()); + + $qualifiedCols = $criteria->keys(); // we need table.column cols when populating values + $columns = array(); // but just 'column' cols for the SQL + foreach ($qualifiedCols as $qualifiedCol) { + $columns[] = substr($qualifiedCol, strrpos($qualifiedCol, '.') + 1); + } + + // add identifiers + if ($adapter->useQuoteIdentifier()) { + $columns = array_map(array($adapter, 'quoteIdentifier'), $columns); + } + + $sql = 'INSERT INTO ' . $tableName + . ' (' . implode(',', $columns) . ')' + . ' VALUES ('; + // . substr(str_repeat("?,", count($columns)), 0, -1) . + for($p=1, $cnt=count($columns); $p <= $cnt; $p++) { + $sql .= ':p'.$p; + if ($p !== $cnt) $sql .= ','; + } + $sql .= ')'; + + $stmt = $con->prepare($sql); + self::populateStmtValues($stmt, self::buildParams($qualifiedCols, $criteria), $dbMap, $db); + $stmt->execute(); + + } catch (Exception $e) { + Propel::log($e->getMessage(), Propel::LOG_ERR); + throw new PropelException("Unable to execute INSERT statement.", $e); + } + + // If the primary key column is auto-incremented, get the id now. + if ($pk !== null && $useIdGen && $db->isGetIdAfterInsert()) { + try { + $id = $db->getId($con, $keyInfo); + } catch (Exception $e) { + throw new PropelException("Unable to get autoincrement id.", $e); + } + } + + return $id; + } + + /** + * Method used to update rows in the DB. Rows are selected based + * on selectCriteria and updated using values in updateValues. + *

    + * Use this method for performing an update of the kind: + *

    + * WHERE some_column = some value AND could_have_another_column = + * another value AND so on. + * + * @param $selectCriteria A Criteria object containing values used in where + * clause. + * @param $updateValues A Criteria object containing values used in set + * clause. + * @param PropelPDO $con The PropelPDO connection object to use. + * @return int The number of rows affected by last update statement. For most + * uses there is only one update statement executed, so this number + * will correspond to the number of rows affected by the call to this + * method. Note that the return value does require that this information + * is returned (supported) by the Creole db driver. + * @throws PropelException + */ + public static function doUpdate(Criteria $selectCriteria, Criteria $updateValues, PropelPDO $con) { + + $db = Propel::getDB($selectCriteria->getDbName()); + $dbMap = Propel::getDatabaseMap($selectCriteria->getDbName()); + + // Get list of required tables, containing all columns + $tablesColumns = $selectCriteria->getTablesColumns(); + + // we also need the columns for the update SQL + $updateTablesColumns = $updateValues->getTablesColumns(); + + $affectedRows = 0; // initialize this in case the next loop has no iterations. + + foreach ($tablesColumns as $tableName => $columns) { + + $whereClause = array(); + + $params = array(); + + $stmt = null; + try { + + $sql = "UPDATE " . $tableName . " SET "; + $p = 1; + foreach ($updateTablesColumns[$tableName] as $col) { + $updateColumnName = substr($col, strrpos($col, '.') + 1); + // add identifiers for the actual database? + if ($db->useQuoteIdentifier()) { + $updateColumnName = $db->quoteIdentifier($updateColumnName); + } + if ($updateValues->getComparison($col) != Criteria::CUSTOM_EQUAL) { + $sql .= $updateColumnName . '=:p'.$p++.', '; + } else { + $param = $updateValues->get($col); + $sql .= $updateColumnName . ' = '; + if (is_array($param)) { + if (isset($param['raw'])) { + $raw = $param['raw']; + $rawcvt = ''; + // parse the $params['raw'] for ? chars + for($r=0,$len=strlen($raw); $r < $len; $r++) { + if ($raw{$r} == '?') { + $rawcvt .= ':p'.$p++; + } else { + $rawcvt .= $raw{$r}; + } + } + $sql .= $rawcvt . ', '; + } else { + $sql .= ':p'.$p++.', '; + } + if (isset($param['value'])) { + $updateValues->put($col, $param['value']); + } + } else { + $updateValues->remove($col); + $sql .= $param . ', '; + } + } + } + + $params = self::buildParams($updateTablesColumns[$tableName], $updateValues); + + foreach ($columns as $colName) { + $sb = ""; + $selectCriteria->getCriterion($colName)->appendPsTo($sb, $params); + $whereClause[] = $sb; + } + + $sql = substr($sql, 0, -2) . " WHERE " . implode(" AND ", $whereClause); + + $stmt = $con->prepare($sql); + + // Replace ':p?' with the actual values + self::populateStmtValues($stmt, $params, $dbMap, $db); + + $stmt->execute(); + + $affectedRows = $stmt->rowCount(); + + $stmt = null; // close + + } catch (Exception $e) { + if ($stmt) $stmt = null; // close + Propel::log($e->getMessage(), Propel::LOG_ERR); + throw new PropelException("Unable to execute UPDATE statement.", $e); + } + + } // foreach table in the criteria + + return $affectedRows; + } + + /** + * Executes query build by createSelectSql() and returns the resultset statement. + * + * @param Criteria $criteria A Criteria. + * @param PropelPDO $con A PropelPDO connection to use. + * @return PDOStatement The resultset. + * @throws PropelException + * @see createSelectSql() + */ + public static function doSelect(Criteria $criteria, PropelPDO $con = null) + { + $dbMap = Propel::getDatabaseMap($criteria->getDbName()); + $db = Propel::getDB($criteria->getDbName()); + + if ($con === null) { + $con = Propel::getConnection($criteria->getDbName(), Propel::CONNECTION_READ); + } + + $stmt = null; + + if ($criteria->isUseTransaction()) $con->beginTransaction(); + + try { + + $params = array(); + $sql = self::createSelectSql($criteria, $params); + + $stmt = $con->prepare($sql); + + self::populateStmtValues($stmt, $params, $dbMap, $db); + + $stmt->execute(); + + if ($criteria->isUseTransaction()) $con->commit(); + + } catch (Exception $e) { + if ($stmt) $stmt = null; // close + if ($criteria->isUseTransaction()) $con->rollBack(); + Propel::log($e->getMessage(), Propel::LOG_ERR); + throw new PropelException($e); + } + + return $stmt; + } + + /** + * Executes a COUNT query using either a simple SQL rewrite or, for more complex queries, a + * sub-select of the SQL created by createSelectSql() and returns the statement. + * + * @param Criteria $criteria A Criteria. + * @param PropelPDO $con A PropelPDO connection to use. + * @return PDOStatement The resultset statement. + * @throws PropelException + * @see createSelectSql() + */ + public static function doCount(Criteria $criteria, PropelPDO $con = null) + { + $dbMap = Propel::getDatabaseMap($criteria->getDbName()); + $db = Propel::getDB($criteria->getDbName()); + + if ($con === null) { + $con = Propel::getConnection($criteria->getDbName(), Propel::CONNECTION_READ); + } + + $stmt = null; + + if ($criteria->isUseTransaction()) $con->beginTransaction(); + + $needsComplexCount = ($criteria->getGroupByColumns() || $criteria->getOffset() + || $criteria->getLimit() || $criteria->getHaving() || in_array(Criteria::DISTINCT, $criteria->getSelectModifiers())); + + try { + + $params = array(); + + if ($needsComplexCount) { + if (self::needsSelectAliases($criteria)) { + self::turnSelectColumnsToAliases($criteria); + } + $selectSql = self::createSelectSql($criteria, $params); + $sql = 'SELECT COUNT(*) FROM (' . $selectSql . ') AS propelmatch4cnt'; + } else { + // Replace SELECT columns with COUNT(*) + $criteria->clearSelectColumns()->addSelectColumn('COUNT(*)'); + $sql = self::createSelectSql($criteria, $params); + } + + $stmt = $con->prepare($sql); + self::populateStmtValues($stmt, $params, $dbMap, $db); + $stmt->execute(); + + if ($criteria->isUseTransaction()) $con->commit(); + + } catch (Exception $e) { + if ($stmt) $stmt = null; // close + if ($criteria->isUseTransaction()) $con->rollBack(); + Propel::log($e->getMessage(), Propel::LOG_ERR); + throw new PropelException($e); + } + + return $stmt; + } + + /** + * Populates values in a prepared statement. + * + * This method is designed to work with the createSelectSql() method, which creates + * both the SELECT SQL statement and populates a passed-in array of parameter + * values that should be substituted. + * + * + * $params = array(); + * $sql = BasePeer::createSelectSql($criteria, $params); + * BasePeer::populateStmtValues($stmt, $params, Propel::getDatabaseMap($critera->getDbName()), Propel::getDB($criteria->getDbName())); + * + * + * @param PDOStatement $stmt + * @param array $params array('column' => ..., 'table' => ..., 'value' => ...) + * @param DatabaseMap $dbMap + * @return int The number of params replaced. + * @see createSelectSql() + * @see doSelect() + */ + public static function populateStmtValues(PDOStatement $stmt, array $params, DatabaseMap $dbMap, DBAdapter $db) + { + $i = 1; + foreach ($params as $param) { + $tableName = $param['table']; + $columnName = $param['column']; + $value = $param['value']; + + if ($value === null) { + + $stmt->bindValue(':p'.$i++, null, PDO::PARAM_NULL); + + } elseif (isset($tableName) ) { + + $cMap = $dbMap->getTable($tableName)->getColumn($columnName); + $type = $cMap->getType(); + $pdoType = $cMap->getPdoType(); + + // FIXME - This is a temporary hack to get around apparent bugs w/ PDO+MYSQL + // See http://pecl.php.net/bugs/bug.php?id=9919 + if ($pdoType == PDO::PARAM_BOOL && $db instanceof DBMySQL) { + $value = (int) $value; + $pdoType = PDO::PARAM_INT; + } elseif (is_numeric($value) && $cMap->isEpochTemporal()) { // it's a timestamp that needs to be formatted + if ($type == PropelColumnTypes::TIMESTAMP) { + $value = date($db->getTimestampFormatter(), $value); + } else if ($type == PropelColumnTypes::DATE) { + $value = date($db->getDateFormatter(), $value); + } else if ($type == PropelColumnTypes::TIME) { + $value = date($db->getTimeFormatter(), $value); + } + } elseif ($value instanceof DateTime && $cMap->isTemporal()) { // it's a timestamp that needs to be formatted + if ($type == PropelColumnTypes::TIMESTAMP || $type == PropelColumnTypes::BU_TIMESTAMP) { + $value = $value->format($db->getTimestampFormatter()); + } else if ($type == PropelColumnTypes::DATE || $type == PropelColumnTypes::BU_DATE) { + $value = $value->format($db->getDateFormatter()); + } else if ($type == PropelColumnTypes::TIME) { + $value = $value->format($db->getTimeFormatter()); + } + } elseif (is_resource($value) && $cMap->isLob()) { + // we always need to make sure that the stream is rewound, otherwise nothing will + // get written to database. + rewind($value); + } + + $stmt->bindValue(':p'.$i++, $value, $pdoType); + } else { + $stmt->bindValue(':p'.$i++, $value); + } + } // foreach + } + + /** + * Applies any validators that were defined in the schema to the specified columns. + * + * @param string $dbName The name of the database + * @param string $tableName The name of the table + * @param array $columns Array of column names as key and column values as value. + */ + public static function doValidate($dbName, $tableName, $columns) + { + $dbMap = Propel::getDatabaseMap($dbName); + $tableMap = $dbMap->getTable($tableName); + $failureMap = array(); // map of ValidationFailed objects + foreach ($columns as $colName => $colValue) { + if ($tableMap->containsColumn($colName)) { + $col = $tableMap->getColumn($colName); + foreach ($col->getValidators() as $validatorMap) { + $validator = BasePeer::getValidator($validatorMap->getClass()); + if ($validator && ($col->isNotNull() || $colValue !== null) && $validator->isValid($validatorMap, $colValue) === false) { + if (!isset($failureMap[$colName])) { // for now we do one ValidationFailed per column, not per rule + $failureMap[$colName] = new ValidationFailed($colName, $validatorMap->getMessage(), $validator); + } + } + } + } + } + return (!empty($failureMap) ? $failureMap : true); + } + + /** + * Helper method which returns the primary key contained + * in the given Criteria object. + * + * @param Criteria $criteria A Criteria. + * @return ColumnMap If the Criteria object contains a primary + * key, or null if it doesn't. + * @throws PropelException + */ + private static function getPrimaryKey(Criteria $criteria) + { + // Assume all the keys are for the same table. + $keys = $criteria->keys(); + $key = $keys[0]; + $table = $criteria->getTableName($key); + + $pk = null; + + if (!empty($table)) { + + $dbMap = Propel::getDatabaseMap($criteria->getDbName()); + + if ($dbMap === null) { + throw new PropelException("\$dbMap is null"); + } + + if ($dbMap->getTable($table) === null) { + throw new PropelException("\$dbMap->getTable() is null"); + } + + $columns = $dbMap->getTable($table)->getColumns(); + foreach (array_keys($columns) as $key) { + if ($columns[$key]->isPrimaryKey()) { + $pk = $columns[$key]; + break; + } + } + } + return $pk; + } + + /** + * Checks whether the Criteria needs to use column aliasing + * This is implemented in a service class rather than in Criteria itself + * in order to avoid doing the tests when it's not necessary (e.g. for SELECTs) + */ + public static function needsSelectAliases(Criteria $criteria) + { + $columnNames = array(); + foreach ($criteria->getSelectColumns() as $fullyQualifiedColumnName) { + if ($pos = strrpos($fullyQualifiedColumnName, '.')) { + $columnName = substr($fullyQualifiedColumnName, $pos); + if (isset($columnNames[$columnName])) { + // more than one column with the same name, so aliasing is required + return true; + } + $columnNames[$columnName] = true; + } + } + return false; + } + + /** + * Ensures uniqueness of select column names by turning them all into aliases + * This is necessary for queries on more than one table when the tables share a column name + * @see http://propel.phpdb.org/trac/ticket/795 + * + * @param Criteria $criteria + * + * @return Criteria The input, with Select columns replaced by aliases + */ + public static function turnSelectColumnsToAliases(Criteria $criteria) + { + $selectColumns = $criteria->getSelectColumns(); + // clearSelectColumns also clears the aliases, so get them too + $asColumns = $criteria->getAsColumns(); + $criteria->clearSelectColumns(); + $columnAliases = $asColumns; + // add the select columns back + foreach ($selectColumns as $clause) { + // Generate a unique alias + $baseAlias = preg_replace('/\W/', '_', $clause); + $alias = $baseAlias; + // If it already exists, add a unique suffix + $i = 0; + while (isset($columnAliases[$alias])) { + $i++; + $alias = $baseAlias . '_' . $i; + } + // Add it as an alias + $criteria->addAsColumn($alias, $clause); + $columnAliases[$alias] = $clause; + } + // Add the aliases back, don't modify them + foreach ($asColumns as $name => $clause) { + $criteria->addAsColumn($name, $clause); + } + + return $criteria; + } + + /** + * Method to create an SQL query based on values in a Criteria. + * + * This method creates only prepared statement SQL (using ? where values + * will go). The second parameter ($params) stores the values that need + * to be set before the statement is executed. The reason we do it this way + * is to let the PDO layer handle all escaping & value formatting. + * + * @param Criteria $criteria Criteria for the SELECT query. + * @param array &$params Parameters that are to be replaced in prepared statement. + * @return string + * @throws PropelException Trouble creating the query string. + */ + public static function createSelectSql(Criteria $criteria, &$params) + { + $db = Propel::getDB($criteria->getDbName()); + $dbMap = Propel::getDatabaseMap($criteria->getDbName()); + + // redundant definition $selectModifiers = array(); + $selectClause = array(); + $fromClause = array(); + $joinClause = array(); + $joinTables = array(); + $whereClause = array(); + $orderByClause = array(); + // redundant definition $groupByClause = array(); + + $orderBy = $criteria->getOrderByColumns(); + $groupBy = $criteria->getGroupByColumns(); + $ignoreCase = $criteria->isIgnoreCase(); + $select = $criteria->getSelectColumns(); + $aliases = $criteria->getAsColumns(); + + // simple copy + $selectModifiers = $criteria->getSelectModifiers(); + + // get selected columns + foreach ($select as $columnName) { + + // expect every column to be of "table.column" formation + // it could be a function: e.g. MAX(books.price) + + $tableName = null; + + $selectClause[] = $columnName; // the full column name: e.g. MAX(books.price) + + $parenPos = strrpos($columnName, '('); + $dotPos = strrpos($columnName, '.', ($parenPos !== false ? $parenPos : 0)); + + // [HL] I think we really only want to worry about adding stuff to + // the fromClause if this function has a TABLE.COLUMN in it at all. + // e.g. COUNT(*) should not need this treatment -- or there needs to + // be special treatment for '*' + if ($dotPos !== false) { + + if ($parenPos === false) { // table.column + $tableName = substr($columnName, 0, $dotPos); + } else { // FUNC(table.column) + $tableName = substr($columnName, $parenPos + 1, $dotPos - ($parenPos + 1)); + // functions may contain qualifiers so only take the last + // word as the table name. + // COUNT(DISTINCT books.price) + $lastSpace = strpos($tableName, ' '); + if ($lastSpace !== false) { // COUNT(DISTINCT books.price) + $tableName = substr($tableName, $lastSpace + 1); + } + } + $tableName2 = $criteria->getTableForAlias($tableName); + if ($tableName2 !== null) { + $fromClause[] = $tableName2 . ' ' . $tableName; + } else { + $fromClause[] = $tableName; + } + + } // if $dotPost !== null + } + + // set the aliases + foreach ($aliases as $alias => $col) { + $selectClause[] = $col . " AS " . $alias; + } + + // add the criteria to WHERE clause + // this will also add the table names to the FROM clause if they are not already + // invluded via a LEFT JOIN + foreach ($criteria->keys() as $key) { + + $criterion = $criteria->getCriterion($key); + $someCriteria = $criterion->getAttachedCriterion(); + $someCriteriaLength = count($someCriteria); + $table = null; + for ($i=0; $i < $someCriteriaLength; $i++) { + $tableName = $someCriteria[$i]->getTable(); + + $table = $criteria->getTableForAlias($tableName); + if ($table !== null) { + $fromClause[] = $table . ' ' . $tableName; + } else { + $fromClause[] = $tableName; + $table = $tableName; + } + + $ignoreCase = + (($criteria->isIgnoreCase() + || $someCriteria[$i]->isIgnoreCase()) + && (strpos($dbMap->getTable($table)->getColumn($someCriteria[$i]->getColumn())->getType(), "VARCHAR") !== false) + ); + + $someCriteria[$i]->setIgnoreCase($ignoreCase); + } + + $criterion->setDB($db); + + $sb = ""; + $criterion->appendPsTo($sb, $params); + $whereClause[] = $sb; + } + + // Handle joins + // joins with a null join type will be added to the FROM clause and the condition added to the WHERE clause. + // joins of a specified type: the LEFT side will be added to the fromClause and the RIGHT to the joinClause + foreach ((array) $criteria->getJoins() as $join) { + // The join might have been established using an alias name + $leftTable = $join->getLeftTableName(); + $leftTableAlias = ''; + if ($realTable = $criteria->getTableForAlias($leftTable)) { + $leftTableAlias = " $leftTable"; + $leftTable = $realTable; + } + + $rightTable = $join->getRightTableName(); + $rightTableAlias = ''; + if ($realTable = $criteria->getTableForAlias($rightTable)) { + $rightTableAlias = " $rightTable"; + $rightTable = $realTable; + } + + // determine if casing is relevant. + if ($ignoreCase = $criteria->isIgnoreCase()) { + $leftColType = $dbMap->getTable($leftTable)->getColumn($join->getLeftColumnName())->getType(); + $rightColType = $dbMap->getTable($rightTable)->getColumn($join->getRightColumnName())->getType(); + $ignoreCase = ($leftColType == 'string' || $rightColType == 'string'); + } + + // build the condition + $condition = ''; + foreach ($join->getConditions() as $index => $conditionDesc) + { + if ($ignoreCase) { + $condition .= $db->ignoreCase($conditionDesc['left']) . $conditionDesc['operator'] . $db->ignoreCase($conditionDesc['right']); + } else { + $condition .= implode($conditionDesc); + } + if ($index + 1 < $join->countConditions()) { + $condition .= ' AND '; + } + } + + // add 'em to the queues.. + if ($joinType = $join->getJoinType()) { + // real join + if (!$fromClause) { + $fromClause[] = $leftTable . $leftTableAlias; + } + $joinTables[] = $rightTable . $rightTableAlias; + $joinClause[] = $join->getJoinType() . ' ' . $rightTable . $rightTableAlias . " ON ($condition)"; + } else { + // implicit join, translates to a where + $fromClause[] = $leftTable . $leftTableAlias; + $fromClause[] = $rightTable . $rightTableAlias; + $whereClause[] = $condition; + } + } + + // Unique from clause elements + $fromClause = array_unique($fromClause); + $fromClause = array_diff($fromClause, array('')); + + // tables should not exist in both the from and join clauses + if ($joinTables && $fromClause) { + foreach ($fromClause as $fi => $ftable) { + if (in_array($ftable, $joinTables)) { + unset($fromClause[$fi]); + } + } + } + + // Add the GROUP BY columns + $groupByClause = $groupBy; + + $having = $criteria->getHaving(); + $havingString = null; + if ($having !== null) { + $sb = ""; + $having->appendPsTo($sb, $params); + $havingString = $sb; + } + + if (!empty($orderBy)) { + + foreach ($orderBy as $orderByColumn) { + + // Add function expression as-is. + + if (strpos($orderByColumn, '(') !== false) { + $orderByClause[] = $orderByColumn; + continue; + } + + // Split orderByColumn (i.e. "table.column DESC") + + $dotPos = strrpos($orderByColumn, '.'); + + if ($dotPos !== false) { + $tableName = substr($orderByColumn, 0, $dotPos); + $columnName = substr($orderByColumn, $dotPos+1); + } + else { + $tableName = ''; + $columnName = $orderByColumn; + } + + $spacePos = strpos($columnName, ' '); + + if ($spacePos !== false) { + $direction = substr($columnName, $spacePos); + $columnName = substr($columnName, 0, $spacePos); + } + else { + $direction = ''; + } + + $tableAlias = $tableName; + if ($aliasTableName = $criteria->getTableForAlias($tableName)) { + $tableName = $aliasTableName; + } + + $columnAlias = $columnName; + if ($asColumnName = $criteria->getColumnForAs($columnName)) { + $columnName = $asColumnName; + } + + $column = $tableName ? $dbMap->getTable($tableName)->getColumn($columnName) : null; + + if ($criteria->isIgnoreCase() && $column && $column->isText()) { + $orderByClause[] = $db->ignoreCaseInOrderBy("$tableAlias.$columnAlias") . $direction; + $selectClause[] = $db->ignoreCaseInOrderBy("$tableAlias.$columnAlias"); + } else { + $orderByClause[] = $orderByColumn; + } + } + } + + if (empty($fromClause) && $criteria->getPrimaryTableName()) { + $fromClause[] = $criteria->getPrimaryTableName(); + } + + // from / join tables quoten if it is necessary + if ($db->useQuoteIdentifier()) { + $fromClause = array_map(array($db, 'quoteIdentifierTable'), $fromClause); + $joinClause = $joinClause ? $joinClause : array_map(array($db, 'quoteIdentifierTable'), $joinClause); + } + + // build from-clause + $from = ''; + if (!empty($joinClause) && count($fromClause) > 1) { + $from .= implode(" CROSS JOIN ", $fromClause); + } else { + $from .= implode(", ", $fromClause); + } + + $from .= $joinClause ? ' ' . implode(' ', $joinClause) : ''; + + // Build the SQL from the arrays we compiled + $sql = "SELECT " + .($selectModifiers ? implode(" ", $selectModifiers) . " " : "") + .implode(", ", $selectClause) + ." FROM " . $from + .($whereClause ? " WHERE ".implode(" AND ", $whereClause) : "") + .($groupByClause ? " GROUP BY ".implode(",", $groupByClause) : "") + .($havingString ? " HAVING ".$havingString : "") + .($orderByClause ? " ORDER BY ".implode(",", $orderByClause) : ""); + + // APPLY OFFSET & LIMIT to the query. + if ($criteria->getLimit() || $criteria->getOffset()) { + $db->applyLimit($sql, $criteria->getOffset(), $criteria->getLimit()); + } + + return $sql; + } + + /** + * Builds a params array, like the kind populated by Criterion::appendPsTo(). + * This is useful for building an array even when it is not using the appendPsTo() method. + * @param array $columns + * @param Criteria $values + * @return array params array('column' => ..., 'table' => ..., 'value' => ...) + */ + private static function buildParams($columns, Criteria $values) + { + $params = array(); + foreach ($columns as $key) { + if ($values->containsKey($key)) { + $crit = $values->getCriterion($key); + $params[] = array('column' => $crit->getColumn(), 'table' => $crit->getTable(), 'value' => $crit->getValue()); + } + } + return $params; + } + + /** + * This function searches for the given validator $name under propel/validator/$name.php, + * imports and caches it. + * + * @param string $classname The dot-path name of class (e.g. myapp.propel.MyValidator) + * @return Validator object or null if not able to instantiate validator class (and error will be logged in this case) + */ + public static function getValidator($classname) + { + try { + $v = isset(self::$validatorMap[$classname]) ? self::$validatorMap[$classname] : null; + if ($v === null) { + $cls = Propel::importClass($classname); + $v = new $cls(); + self::$validatorMap[$classname] = $v; + } + return $v; + } catch (Exception $e) { + Propel::log("BasePeer::getValidator(): failed trying to instantiate " . $classname . ": ".$e->getMessage(), Propel::LOG_ERR); + } + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/text-base/Criteria.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/text-base/Criteria.php.svn-base new file mode 100644 index 0000000..9e86a63 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/text-base/Criteria.php.svn-base @@ -0,0 +1,1754 @@ +. + */ + +/** + * This is a utility class for holding criteria information for a query. + * + * BasePeer constructs SQL statements based on the values in this class. + * + * @author Hans Lellelid (Propel) + * @author Kaspars Jaudzems (Propel) + * @author Frank Y. Kim (Torque) + * @author John D. McNally (Torque) + * @author Brett McLaughlin (Torque) + * @author Eric Dobbs (Torque) + * @author Henning P. Schmiedehausen (Torque) + * @author Sam Joseph (Torque) + * @version $Revision$ + * @package propel.util + */ +class Criteria implements IteratorAggregate { + + /** Comparison type. */ + const EQUAL = "="; + + /** Comparison type. */ + const NOT_EQUAL = "<>"; + + /** Comparison type. */ + const ALT_NOT_EQUAL = "!="; + + /** Comparison type. */ + const GREATER_THAN = ">"; + + /** Comparison type. */ + const LESS_THAN = "<"; + + /** Comparison type. */ + const GREATER_EQUAL = ">="; + + /** Comparison type. */ + const LESS_EQUAL = "<="; + + /** Comparison type. */ + const LIKE = " LIKE "; + + /** Comparison type. */ + const NOT_LIKE = " NOT LIKE "; + + /** PostgreSQL comparison type */ + const ILIKE = " ILIKE "; + + /** PostgreSQL comparison type */ + const NOT_ILIKE = " NOT ILIKE "; + + /** Comparison type. */ + const CUSTOM = "CUSTOM"; + + /** Comparison type for update */ + const CUSTOM_EQUAL = "CUSTOM_EQUAL"; + + /** Comparison type. */ + const DISTINCT = "DISTINCT "; + + /** Comparison type. */ + const IN = " IN "; + + /** Comparison type. */ + const NOT_IN = " NOT IN "; + + /** Comparison type. */ + const ALL = "ALL "; + + /** Comparison type. */ + const JOIN = "JOIN"; + + /** Binary math operator: AND */ + const BINARY_AND = "&"; + + /** Binary math operator: OR */ + const BINARY_OR = "|"; + + /** "Order by" qualifier - ascending */ + const ASC = "ASC"; + + /** "Order by" qualifier - descending */ + const DESC = "DESC"; + + /** "IS NULL" null comparison */ + const ISNULL = " IS NULL "; + + /** "IS NOT NULL" null comparison */ + const ISNOTNULL = " IS NOT NULL "; + + /** "CURRENT_DATE" ANSI SQL function */ + const CURRENT_DATE = "CURRENT_DATE"; + + /** "CURRENT_TIME" ANSI SQL function */ + const CURRENT_TIME = "CURRENT_TIME"; + + /** "CURRENT_TIMESTAMP" ANSI SQL function */ + const CURRENT_TIMESTAMP = "CURRENT_TIMESTAMP"; + + /** "LEFT JOIN" SQL statement */ + const LEFT_JOIN = "LEFT JOIN"; + + /** "RIGHT JOIN" SQL statement */ + const RIGHT_JOIN = "RIGHT JOIN"; + + /** "INNER JOIN" SQL statement */ + const INNER_JOIN = "INNER JOIN"; + + private $ignoreCase = false; + private $singleRecord = false; + private $selectModifiers = array(); + private $selectColumns = array(); + private $orderByColumns = array(); + private $groupByColumns = array(); + private $having = null; + private $asColumns = array(); + private $joins = array(); + + /** The name of the database. */ + private $dbName; + + /** + * The primary table for this Criteria. + * Useful in cases where there are no select or where + * columns. + * @var string + */ + private $primaryTableName; + + /** The name of the database as given in the contructor. */ + private $originalDbName; + + /** + * To limit the number of rows to return. 0 means return all + * rows. + */ + private $limit = 0; + + /** To start the results at a row other than the first one. */ + private $offset = 0; + + // flag to note that the criteria involves a blob. + private $blobFlag = null; + + private $aliases = array(); + + private $useTransaction = false; + + /** + * Primary storage of criteria data. + * @var array + */ + private $map = array(); + + /** + * Creates a new instance with the default capacity which corresponds to + * the specified database. + * + * @param dbName The dabase name. + */ + public function __construct($dbName = null) + { + $this->setDbName($dbName); + $this->originalDbName = $dbName; + } + + /** + * Implementing SPL IteratorAggregate interface. This allows + * you to foreach () over a Criteria object. + */ + public function getIterator() + { + return new CriterionIterator($this); + } + + /** + * Get the criteria map. + * @return array + */ + public function getMap() + { + return $this->map; + } + + /** + * Brings this criteria back to its initial state, so that it + * can be reused as if it was new. Except if the criteria has grown in + * capacity, it is left at the current capacity. + * @return void + */ + public function clear() + { + $this->map = array(); + $this->ignoreCase = false; + $this->singleRecord = false; + $this->selectModifiers = array(); + $this->selectColumns = array(); + $this->orderByColumns = array(); + $this->groupByColumns = array(); + $this->having = null; + $this->asColumns = array(); + $this->joins = array(); + $this->dbName = $this->originalDbName; + $this->offset = 0; + $this->limit = -1; + $this->blobFlag = null; + $this->aliases = array(); + $this->useTransaction = false; + } + + /** + * Add an AS clause to the select columns. Usage: + * + * + * Criteria myCrit = new Criteria(); + * myCrit->addAsColumn("alias", "ALIAS(".MyPeer::ID.")"); + * + * + * @param string $name Wanted Name of the column (alias). + * @param string $clause SQL clause to select from the table + * + * If the name already exists, it is replaced by the new clause. + * + * @return Criteria A modified Criteria object. + */ + public function addAsColumn($name, $clause) + { + $this->asColumns[$name] = $clause; + return $this; + } + + /** + * Get the column aliases. + * + * @return array An assoc array which map the column alias names + * to the alias clauses. + */ + public function getAsColumns() + { + return $this->asColumns; + } + + /** + * Returns the column name associated with an alias (AS-column). + * + * @param string $alias + * @return string $string + */ + public function getColumnForAs($as) + { + if (isset($this->asColumns[$as])) { + return $this->asColumns[$as]; + } + } + + /** + * Allows one to specify an alias for a table that can + * be used in various parts of the SQL. + * + * @param string $alias + * @param string $table + * @return void + */ + public function addAlias($alias, $table) + { + $this->aliases[$alias] = $table; + } + + /** + * Returns the table name associated with an alias. + * + * @param string $alias + * @return string $string + */ + public function getTableForAlias($alias) + { + if (isset($this->aliases[$alias])) { + return $this->aliases[$alias]; + } + } + + /** + * Get the keys for the criteria map. + * @return array + */ + public function keys() + { + return array_keys($this->map); + } + + /** + * Does this Criteria object contain the specified key? + * + * @param string $column [table.]column + * @return boolean True if this Criteria object contain the specified key. + */ + public function containsKey($column) + { + // must use array_key_exists() because the key could + // exist but have a NULL value (that'd be valid). + return array_key_exists($column, $this->map); + } + + /** + * Does this Criteria object contain the specified key and does it have a value set for the key + * + * @param string $column [table.]column + * @return boolean True if this Criteria object contain the specified key and a value for that key + */ + public function keyContainsValue($column) + { + // must use array_key_exists() because the key could + // exist but have a NULL value (that'd be valid). + return (array_key_exists($column, $this->map) && ($this->map[$column]->getValue() !== null) ); + } + + /** + * Will force the sql represented by this criteria to be executed within + * a transaction. This is here primarily to support the oid type in + * postgresql. Though it can be used to require any single sql statement + * to use a transaction. + * @return void + */ + public function setUseTransaction($v) + { + $this->useTransaction = (boolean) $v; + } + + /** + * Whether the sql command specified by this criteria must be wrapped + * in a transaction. + * + * @return boolean + */ + public function isUseTransaction() + { + return $this->useTransaction; + } + + /** + * Method to return criteria related to columns in a table. + * + * @param string $column Column name. + * @return Criterion A Criterion or null if $column is invalid. + */ + public function getCriterion($column) + { + if ( isset ( $this->map[$column] ) ) { + return $this->map[$column]; + } + return null; + } + + /** + * Method to return criterion that is not added automatically + * to this Criteria. This can be used to chain the + * Criterions to form a more complex where clause. + * + * @param string $column Full name of column (for example TABLE.COLUMN). + * @param mixed $value + * @param string $comparison + * @return Criterion + */ + public function getNewCriterion($column, $value, $comparison = null) + { + return new Criterion($this, $column, $value, $comparison); + } + + /** + * Method to return a String table name. + * + * @param string $name Name of the key. + * @return string The value of the object at key. + */ + public function getColumnName($name) + { + if (isset($this->map[$name])) { + return $this->map[$name]->getColumn(); + } + return null; + } + + /** + * Shortcut method to get an array of columns indexed by table. + * @return array array(table => array(table.column1, table.column2)) + */ + public function getTablesColumns() + { + $tables = array(); + foreach ( array_keys ( $this->map ) as $key) { + $t = substr ( $key, 0, strrpos ( $key, '.' ) ); + if ( ! isset ( $tables[$t] ) ) { + $tables[$t] = array( $key ); + } else { + $tables[$t][] = $key; + } + } + return $tables; + } + + /** + * Method to return a comparison String. + * + * @param string $key String name of the key. + * @return string A String with the value of the object at key. + */ + public function getComparison($key) + { + if ( isset ( $this->map[$key] ) ) { + return $this->map[$key]->getComparison(); + } + return null; + } + + /** + * Get the Database(Map) name. + * + * @return string A String with the Database(Map) name. + */ + public function getDbName() + { + return $this->dbName; + } + + /** + * Set the DatabaseMap name. If null is supplied, uses value + * provided by Propel::getDefaultDB(). + * + * @param string $dbName The Database (Map) name. + * @return void + */ + public function setDbName($dbName = null) + { + $this->dbName = ($dbName === null ? Propel::getDefaultDB() : $dbName); + } + + /** + * Get the primary table for this Criteria. + * + * This is useful for cases where a Criteria may not contain + * any SELECT columns or WHERE columns. This must be explicitly + * set, of course, in order to be useful. + * + * @return string + */ + public function getPrimaryTableName() + { + return $this->primaryTableName; + } + + /** + * Sets the primary table for this Criteria. + * + * This is useful for cases where a Criteria may not contain + * any SELECT columns or WHERE columns. This must be explicitly + * set, of course, in order to be useful. + * + * @param string $v + */ + public function setPrimaryTableName($tableName) + { + $this->primaryTableName = $tableName; + } + + /** + * Method to return a String table name. + * + * @param string $name The name of the key. + * @return string The value of table for criterion at key. + */ + public function getTableName($name) + { + if (isset($this->map[$name])) { + return $this->map[$name]->getTable(); + } + return null; + } + + /** + * Method to return the value that was added to Criteria. + * + * @param string $name A String with the name of the key. + * @return mixed The value of object at key. + */ + public function getValue($name) + { + if (isset($this->map[$name])) { + return $this->map[$name]->getValue(); + } + return null; + } + + /** + * An alias to getValue() -- exposing a Hashtable-like interface. + * + * @param string $key An Object. + * @return mixed The value within the Criterion (not the Criterion object). + */ + public function get($key) + { + return $this->getValue($key); + } + + /** + * Overrides Hashtable put, so that this object is returned + * instead of the value previously in the Criteria object. + * The reason is so that it more closely matches the behavior + * of the add() methods. If you want to get the previous value + * then you should first Criteria.get() it yourself. Note, if + * you attempt to pass in an Object that is not a String, it will + * throw a NPE. The reason for this is that none of the add() + * methods support adding anything other than a String as a key. + * + * @param string $key + * @param mixed $value + * @return Instance of self. + */ + public function put($key, $value) + { + return $this->add($key, $value); + } + + /** + * Copies all of the mappings from the specified Map to this Criteria + * These mappings will replace any mappings that this Criteria had for any + * of the keys currently in the specified Map. + * + * if the map was another Criteria, its attributes are copied to this + * Criteria, overwriting previous settings. + * + * @param mixed $t Mappings to be stored in this map. + */ + public function putAll($t) + { + + if (is_array($t)) { + + foreach ($t as $key=>$value) { + + if ($value instanceof Criterion) { + + $this->map[$key] = $value; + + } else { + + $this->put($key, $value); + + } + + } + + } elseif ($t instanceof Criteria) { + + $this->joins = $t->joins; + + } + + } + + + /** + * This method adds a new criterion to the list of criterias. + * If a criterion for the requested column already exists, it is + * replaced. If is used as follow: + * + *

    + * + * $crit = new Criteria(); + * $crit->add("column", + * "value" + * "Criteria::GREATER_THAN"); + * + * + * Any comparison can be used. + * + * The name of the table must be used implicitly in the column name, + * so the Column name must be something like 'TABLE.id'. If you + * don't like this, you can use the add(table, column, value) method. + * + * @param string $critOrColumn The column to run the comparison on, or Criterion object. + * @param mixed $value + * @param string $comparison A String. + * + * @return A modified Criteria object. + */ + public function add($p1, $value = null, $comparison = null) + { + if ($p1 instanceof Criterion) { + $this->map[$p1->getTable() . '.' . $p1->getColumn()] = $p1; + } else { + $this->map[$p1] = new Criterion($this, $p1, $value, $comparison); + } + return $this; + } + + /** + * This is the way that you should add a straight (inner) join of two tables. For + * example: + * + *

    + * AND PROJECT.PROJECT_ID=FOO.PROJECT_ID + *

    + * + * left = PROJECT.PROJECT_ID + * right = FOO.PROJECT_ID + * + * @param mixed $left A String with the left side of the join. + * @param mixed $right A String with the right side of the join. + * @param mixed $operator A String with the join operator e.g. LEFT JOIN, ... + * + * @return Criteria A modified Criteria object. + */ + public function addJoin($left, $right, $operator = null) + { + $join = new Join(); + if (!is_array($left)) { + // simple join + $join->addCondition($left, $right); + } else { + // join with multiple conditions + // deprecated: use addMultipleJoin() instead + foreach ($left as $key => $value) + { + $join->addCondition($value, $right[$key]); + } + } + $join->setJoinType($operator); + + return $this->addJoinObject($join); + } + + /** + * Add a join with multiple conditions + * see http://propel.phpdb.org/trac/ticket/167, http://propel.phpdb.org/trac/ticket/606 + * + * Example usage: + * $c->addMultipleJoin(array( + * array(LeftPeer::LEFT_COLUMN, RightPeer::RIGHT_COLUMN), // if no third argument, defaults to Criteria::EQUAL + * array(FoldersPeer::alias( 'fo', FoldersPeer::LFT ), FoldersPeer::alias( 'parent', FoldersPeer::RGT ), Criteria::LESS_EQUAL ) + * ), + * Criteria::LEFT_JOIN + * ); + * + * @see addJoin() + * @param array $conditions An array of conditions, each condition being an array (left, right, operator) + * @param string $joinType A String with the join operator. Defaults to an implicit join. + * + * @return Criteria A modified Criteria object. + */ + public function addMultipleJoin($conditions, $joinType = null) + { + $join = new Join(); + foreach ($conditions as $condition) { + $join->addCondition($condition[0], $condition[1], isset($condition[2]) ? $condition[2] : Criteria::EQUAL); + } + $join->setJoinType($joinType); + + return $this->addJoinObject($join); + } + + /** + * Add a join object to the Criteria + * + * @param Join $join A join object + * + * @return Criteria A modified Criteria object + */ + public function addJoinObject(Join $join) + { + if (!in_array($join, $this->joins)) { // compare equality, NOT identity + $this->joins[] = $join; + } + return $this; + } + + + /** + * Get the array of Joins. + * @return array Join[] + */ + public function getJoins() + { + return $this->joins; + } + + /** + * Adds "ALL" modifier to the SQL statement. + * @return Criteria Modified Criteria object (for fluent API) + */ + public function setAll() + { + $this->selectModifiers[] = self::ALL; + return $this; + } + + /** + * Adds "DISTINCT" modifier to the SQL statement. + * @return Criteria Modified Criteria object (for fluent API) + */ + public function setDistinct() + { + $this->selectModifiers[] = self::DISTINCT; + return $this; + } + + /** + * Sets ignore case. + * + * @param boolean $b True if case should be ignored. + * @return Criteria Modified Criteria object (for fluent API) + */ + public function setIgnoreCase($b) + { + $this->ignoreCase = (boolean) $b; + return $this; + } + + /** + * Is ignore case on or off? + * + * @return boolean True if case is ignored. + */ + public function isIgnoreCase() + { + return $this->ignoreCase; + } + + /** + * Set single record? Set this to true if you expect the query + * to result in only a single result record (the default behaviour is to + * throw a PropelException if multiple records are returned when the query + * is executed). This should be used in situations where returning multiple + * rows would indicate an error of some sort. If your query might return + * multiple records but you are only interested in the first one then you + * should be using setLimit(1). + * + * @param boolean $b Set to TRUE if you expect the query to select just one record. + * @return Criteria Modified Criteria object (for fluent API) + */ + public function setSingleRecord($b) + { + $this->singleRecord = (boolean) $b; + return $this; + } + + /** + * Is single record? + * + * @return boolean True if a single record is being returned. + */ + public function isSingleRecord() + { + return $this->singleRecord; + } + + /** + * Set limit. + * + * @param limit An int with the value for limit. + * @return Criteria Modified Criteria object (for fluent API) + */ + public function setLimit($limit) + { + // TODO: do we enforce int here? 32bit issue if we do + $this->limit = $limit; + return $this; + } + + /** + * Get limit. + * + * @return int An int with the value for limit. + */ + public function getLimit() + { + return $this->limit; + } + + /** + * Set offset. + * + * @param int $offset An int with the value for offset. (Note this values is + * cast to a 32bit integer and may result in truncatation) + * @return Criteria Modified Criteria object (for fluent API) + */ + public function setOffset($offset) + { + $this->offset = (int) $offset; + return $this; + } + + /** + * Get offset. + * + * @return An int with the value for offset. + */ + public function getOffset() + { + return $this->offset; + } + + /** + * Add select column. + * + * @param string $name Name of the select column. + * @return Criteria Modified Criteria object (for fluent API) + */ + public function addSelectColumn($name) + { + $this->selectColumns[] = $name; + return $this; + } + + /** + * Whether this Criteria has any select columns. + * + * This will include columns added with addAsColumn() method. + * + * @return boolean + * @see addAsColumn() + * @see addSelectColumn() + */ + public function hasSelectClause() + { + return (!empty($this->selectColumns) || !empty($this->asColumns)); + } + + /** + * Get select columns. + * + * @return array An array with the name of the select + * columns. + */ + public function getSelectColumns() + { + return $this->selectColumns; + } + + /** + * Clears current select columns. + * + * @return Criteria Modified Criteria object (for fluent API) + */ + public function clearSelectColumns() { + $this->selectColumns = $this->asColumns = array(); + return $this; + } + + /** + * Get select modifiers. + * + * @return An array with the select modifiers. + */ + public function getSelectModifiers() + { + return $this->selectModifiers; + } + + /** + * Add group by column name. + * + * @param string $groupBy The name of the column to group by. + * @return A modified Criteria object. + */ + public function addGroupByColumn($groupBy) + { + $this->groupByColumns[] = $groupBy; + return $this; + } + + /** + * Add order by column name, explicitly specifying ascending. + * + * @param name The name of the column to order by. + * @return A modified Criteria object. + */ + public function addAscendingOrderByColumn($name) + { + $this->orderByColumns[] = $name . ' ' . self::ASC; + return $this; + } + + /** + * Add order by column name, explicitly specifying descending. + * + * @param string $name The name of the column to order by. + * @return Criteria Modified Criteria object (for fluent API) + */ + public function addDescendingOrderByColumn($name) + { + $this->orderByColumns[] = $name . ' ' . self::DESC; + return $this; + } + + /** + * Get order by columns. + * + * @return array An array with the name of the order columns. + */ + public function getOrderByColumns() + { + return $this->orderByColumns; + } + + /** + * Clear the order-by columns. + * + * @return Criteria Modified Criteria object (for fluent API) + */ + public function clearOrderByColumns() + { + $this->orderByColumns = array(); + return $this; + } + + /** + * Clear the group-by columns. + * + * @return Criteria + */ + public function clearGroupByColumns() + { + $this->groupByColumns = array(); + return $this; + } + + /** + * Get group by columns. + * + * @return array + */ + public function getGroupByColumns() + { + return $this->groupByColumns; + } + + /** + * Get Having Criterion. + * + * @return Criterion A Criterion object that is the having clause. + */ + public function getHaving() + { + return $this->having; + } + + /** + * Remove an object from the criteria. + * + * @param string $key A string with the key to be removed. + * @return mixed The removed value. + */ + public function remove($key) + { + if ( isset ( $this->map[$key] ) ) { + $removed = $this->map[$key]; + unset ( $this->map[$key] ); + if ( $removed instanceof Criterion ) { + return $removed->getValue(); + } + return $removed; + } + } + + /** + * Build a string representation of the Criteria. + * + * @return string A String with the representation of the Criteria. + */ + public function toString() + { + + $sb = "Criteria:"; + try { + + $params = array(); + $sb .= "\nSQL (may not be complete): " + . BasePeer::createSelectSql($this, $params); + + $sb .= "\nParams: "; + $paramstr = array(); + foreach ($params as $param) { + $paramstr[] = $param['table'] . '.' . $param['column'] . ' => ' . var_export($param['value'], true); + } + $sb .= implode(", ", $paramstr); + + } catch (Exception $exc) { + $sb .= "(Error: " . $exc->getMessage() . ")"; + } + + return $sb; + } + + /** + * Returns the size (count) of this criteria. + * @return int + */ + public function size() + { + return count($this->map); + } + + /** + * This method checks another Criteria to see if they contain + * the same attributes and hashtable entries. + * @return boolean + */ + public function equals($crit) + { + $isEquiv = false; + if ($crit === null || !($crit instanceof Criteria)) { + $isEquiv = false; + } elseif ($this === $crit) { + $isEquiv = true; + } elseif ($this->size() === $crit->size()) { + + // Important: nested criterion objects are checked + + $criteria = $crit; // alias + if ($this->offset === $criteria->getOffset() + && $this->limit === $criteria->getLimit() + && $this->ignoreCase === $criteria->isIgnoreCase() + && $this->singleRecord === $criteria->isSingleRecord() + && $this->dbName === $criteria->getDbName() + && $this->selectModifiers === $criteria->getSelectModifiers() + && $this->selectColumns === $criteria->getSelectColumns() + && $this->orderByColumns === $criteria->getOrderByColumns() + && $this->groupByColumns === $criteria->getGroupByColumns() + ) + { + $isEquiv = true; + foreach ($criteria->keys() as $key) { + if ($this->containsKey($key)) { + $a = $this->getCriterion($key); + $b = $criteria->getCriterion($key); + if (!$a->equals($b)) { + $isEquiv = false; + break; + } + } else { + $isEquiv = false; + break; + } + } + } + } + return $isEquiv; + } + + /** + * This method adds a prepared Criterion object to the Criteria as a having clause. + * You can get a new, empty Criterion object with the + * getNewCriterion() method. + * + *

    + * + * $crit = new Criteria(); + * $c = $crit->getNewCriterion(BasePeer::ID, 5, Criteria::LESS_THAN); + * $crit->addHaving($c); + * + * + * @param having A Criterion object + * + * @return A modified Criteria object. + */ + public function addHaving(Criterion $having) + { + $this->having = $having; + return $this; + } + + /** + * This method adds a new criterion to the list of criterias. + * If a criterion for the requested column already exists, it is + * "AND"ed to the existing criterion. + * + * addAnd(column, value, comparison) + * + * $crit = $orig_crit->addAnd("column", + * "value" + * "Criterion::GREATER_THAN"); + * + * + * addAnd(column, value) + * + * $crit = $orig_crit->addAnd("column", "value"); + * + * + * addAnd(Criterion) + * + * $crit = new Criteria(); + * $c = $crit->getNewCriterion(BasePeer::ID, 5, Criteria::LESS_THAN); + * $crit->addAnd($c); + * + * + * Any comparison can be used, of course. + * + * + * @return Criteria A modified Criteria object. + */ + public function addAnd($p1, $p2 = null, $p3 = null) + { + if ($p3 !== null) { + // addAnd(column, value, comparison) + $oc = $this->getCriterion($p1); + $nc = new Criterion($this, $p1, $p2, $p3); + if ( $oc === null) { + $this->map[$p1] = $nc; + } else { + $oc->addAnd($nc); + } + } elseif ($p2 !== null) { + // addAnd(column, value) + $this->addAnd($p1, $p2, self::EQUAL); + } elseif ($p1 instanceof Criterion) { + // addAnd(Criterion) + $oc = $this->getCriterion($p1->getTable() . '.' . $p1->getColumn()); + if ($oc === null) { + $this->add($p1); + } else { + $oc->addAnd($p1); + } + } elseif ($p2 === null && $p3 === null) { + // client has not specified $p3 (comparison) + // which means Criteria::EQUAL but has also specified $p2 == null + // which is a valid combination we should handle by creating "IS NULL" + $this->addAnd($p1, $p2, self::EQUAL); + } + return $this; + } + + /** + * This method adds a new criterion to the list of criterias. + * If a criterion for the requested column already exists, it is + * "OR"ed to the existing criterion. + * + * Any comparison can be used. + * + * Supports a number of different signatures: + * + * addOr(column, value, comparison) + * + * $crit = $orig_crit->addOr("column", + * "value" + * "Criterion::GREATER_THAN"); + * + * + * addOr(column, value) + * + * $crit = $orig_crit->addOr("column", "value"); + * + * + * addOr(Criterion) + * + * @return Criteria A modified Criteria object. + */ + public function addOr($p1, $p2 = null, $p3 = null) + { + if ($p3 !== null) { + // addOr(column, value, comparison) + $nc = new Criterion($this, $p1, $p2, $p3); + $oc = $this->getCriterion($p1); + if ($oc === null) { + $this->map[$p1] = $nc; + } else { + $oc->addOr($nc); + } + } elseif ($p2 !== null) { + // addOr(column, value) + $this->addOr($p1, $p2, self::EQUAL); + } elseif ($p1 instanceof Criterion) { + // addOr(Criterion) + $oc = $this->getCriterion($p1->getTable() . '.' . $p1->getColumn()); + if ($oc === null) { + $this->add($p1); + } else { + $oc->addOr($p1); + } + } elseif ($p2 === null && $p3 === null) { + // client has not specified $p3 (comparison) + // which means Criteria::EQUAL but has also specified $p2 == null + // which is a valid combination we should handle by creating "IS NULL" + $this->addOr($p1, $p2, self::EQUAL); + } + + return $this; + } +} + +// -------------------------------------------------------------------- +// Criterion Iterator class -- allows foreach ($criteria as $criterion) +// -------------------------------------------------------------------- + +/** + * Class that implements SPL Iterator interface. This allows foreach () to + * be used w/ Criteria objects. Probably there is no performance advantage + * to doing it this way, but it makes sense -- and simpler code. + * + * @author Hans Lellelid + * @package propel.util + */ +class CriterionIterator implements Iterator { + + private $idx = 0; + private $criteria; + private $criteriaKeys; + private $criteriaSize; + + public function __construct(Criteria $criteria) { + $this->criteria = $criteria; + $this->criteriaKeys = $criteria->keys(); + $this->criteriaSize = count($this->criteriaKeys); + } + + public function rewind() { + $this->idx = 0; + } + + public function valid() { + return $this->idx < $this->criteriaSize; + } + + public function key() { + return $this->criteriaKeys[$this->idx]; + } + + public function current() { + return $this->criteria->getCriterion($this->criteriaKeys[$this->idx]); + } + + public function next() { + $this->idx++; + } + +} + +// -------------------------------------------------------------------- +// Criterion "inner" class +// -------------------------------------------------------------------- + +/** + * This is an "inner" class that describes an object in the criteria. + * + * In Torque this is an inner class of the Criteria class. + * + * @author Hans Lellelid (Propel) + * @package propel.util + */ +class Criterion { + + const UND = " AND "; + const ODER = " OR "; + + /** Value of the CO. */ + private $value; + + /** Comparison value. + * @var SqlEnum + */ + private $comparison; + + /** Table name. */ + private $table; + + /** Real table name */ + private $realtable; + + /** Column name. */ + private $column; + + /** flag to ignore case in comparision */ + private $ignoreStringCase = false; + + /** + * The DBAdaptor which might be used to get db specific + * variations of sql. + */ + private $db; + + /** + * other connected criteria and their conjunctions. + */ + private $clauses = array(); + private $conjunctions = array(); + + /** "Parent" Criteria class */ + private $parent; + + /** + * Create a new instance. + * + * @param Criteria $parent The outer class (this is an "inner" class). + * @param string $column TABLE.COLUMN format. + * @param mixed $value + * @param string $comparison + */ + public function __construct(Criteria $outer, $column, $value, $comparison = null) + { + $this->value = $value; + $dotPos = strrpos($column,'.'); + if ($dotPos === false) { + // no dot => aliased column + $this->table = null; + $this->column = $column; + } else { + $this->table = substr($column, 0, $dotPos); + $this->column = substr($column, $dotPos+1, strlen($column)); + } + $this->comparison = ($comparison === null ? Criteria::EQUAL : $comparison); + $this->init($outer); + } + + /** + * Init some properties with the help of outer class + * @param Criteria $criteria The outer class + */ + public function init(Criteria $criteria) + { + //init $this->db + try { + $db = Propel::getDB($criteria->getDbName()); + $this->setDB($db); + } catch (Exception $e) { + // we are only doing this to allow easier debugging, so + // no need to throw up the exception, just make note of it. + Propel::log("Could not get a DBAdapter, sql may be wrong", Propel::LOG_ERR); + } + + //init $this->realtable + $realtable = $criteria->getTableForAlias($this->table); + if (! strlen ( $realtable ) ) { + $realtable = $this->table; + } + $this->realtable = $realtable; + + } + + /** + * Get the column name. + * + * @return string A String with the column name. + */ + public function getColumn() + { + return $this->column; + } + + /** + * Set the table name. + * + * @param name A String with the table name. + * @return void + */ + public function setTable($name) + { + $this->table = $name; + } + + /** + * Get the table name. + * + * @return string A String with the table name. + */ + public function getTable() + { + return $this->table; + } + + /** + * Get the comparison. + * + * @return string A String with the comparison. + */ + public function getComparison() + { + return $this->comparison; + } + + /** + * Get the value. + * + * @return mixed An Object with the value. + */ + public function getValue() + { + return $this->value; + } + + /** + * Get the value of db. + * The DBAdapter which might be used to get db specific + * variations of sql. + * @return DBAdapter value of db. + */ + public function getDB() + { + return $this->db; + } + + /** + * Set the value of db. + * The DBAdapter might be used to get db specific variations of sql. + * @param DBAdapter $v Value to assign to db. + * @return void + */ + public function setDB(DBAdapter $v) + { + $this->db = $v; + foreach ( $this->clauses as $clause ) { + $clause->setDB($v); + } + } + + /** + * Sets ignore case. + * + * @param boolean $b True if case should be ignored. + * @return Criterion A modified Criterion object. + */ + public function setIgnoreCase($b) + { + $this->ignoreStringCase = (boolean) $b; + return $this; + } + + /** + * Is ignore case on or off? + * + * @return boolean True if case is ignored. + */ + public function isIgnoreCase() + { + return $this->ignoreStringCase; + } + + /** + * Get the list of clauses in this Criterion. + * @return array + */ + private function getClauses() + { + return $this->clauses; + } + + /** + * Get the list of conjunctions in this Criterion + * @return array + */ + public function getConjunctions() + { + return $this->conjunctions; + } + + /** + * Append an AND Criterion onto this Criterion's list. + */ + public function addAnd(Criterion $criterion) + { + $this->clauses[] = $criterion; + $this->conjunctions[] = self::UND; + return $this; + } + + /** + * Append an OR Criterion onto this Criterion's list. + * @return Criterion + */ + public function addOr(Criterion $criterion) + { + $this->clauses[] = $criterion; + $this->conjunctions[] = self::ODER; + return $this; + } + + /** + * Appends a Prepared Statement representation of the Criterion + * onto the buffer. + * + * @param string &$sb The string that will receive the Prepared Statement + * @param array $params A list to which Prepared Statement parameters + * will be appended + * @return void + * @throws PropelException - if the expression builder cannot figure out how to turn a specified + * expression into proper SQL. + */ + public function appendPsTo(&$sb, array &$params) + { + if ($this->column === null) { + return; + } + + $db = $this->getDb(); + $sb .= str_repeat ( '(', count($this->clauses) ); + + if (Criteria::CUSTOM === $this->comparison) { + if ($this->value !== "") { + $sb .= (string) $this->value; + } + } else { + + if ($this->table === null) { + $field = $this->column; + } else { + $field = $this->table . '.' . $this->column; + } + + // Check to see if table is an alias & store real name, if so + // (real table name is needed for the returned $params array) + $realtable = $this->realtable; + + // There are several different types of expressions that need individual handling: + // IN/NOT IN, LIKE/NOT LIKE, and traditional expressions. + + // OPTION 1: table.column IN (?, ?) or table.column NOT IN (?, ?) + if ($this->comparison === Criteria::IN || $this->comparison === Criteria::NOT_IN) { + + $_bindParams = array(); // the param names used in query building + $_idxstart = count($params); + $valuesLength = 0; + foreach ( (array) $this->value as $value ) { + $valuesLength++; // increment this first to correct for wanting bind params to start with :p1 + $params[] = array('table' => $realtable, 'column' => $this->column, 'value' => $value); + $_bindParams[] = ':p'.($_idxstart + $valuesLength); + } + if ( $valuesLength !== 0 ) { + $sb .= $field . $this->comparison . '(' . implode(',', $_bindParams) . ')'; + } else { + $sb .= ($this->comparison === Criteria::IN) ? "1<>1" : "1=1"; + } + unset ( $value, $valuesLength ); + + // OPTION 2: table.column LIKE ? or table.column NOT LIKE ? (or ILIKE for Postgres) + } elseif ($this->comparison === Criteria::LIKE || $this->comparison === Criteria::NOT_LIKE + || $this->comparison === Criteria::ILIKE || $this->comparison === Criteria::NOT_ILIKE) { + // Handle LIKE, NOT LIKE (and related ILIKE, NOT ILIKE for Postgres) + + // If selection is case insensitive use ILIKE for PostgreSQL or SQL + // UPPER() function on column name for other databases. + if ($this->ignoreStringCase) { + if ($db instanceof DBPostgres) { + if ($this->comparison === Criteria::LIKE) { + $this->comparison = Criteria::ILIKE; + } elseif ($this->comparison === Criteria::NOT_LIKE) { + $this->comparison = Criteria::NOT_ILIKE; + } + } else { + $field = $db->ignoreCase($field); + } + } + + $params[] = array('table' => $realtable, 'column' => $this->column, 'value' => $this->value); + + $sb .= $field . $this->comparison; + + // If selection is case insensitive use SQL UPPER() function + // on criteria or, if Postgres we are using ILIKE, so not necessary. + if ($this->ignoreStringCase && !($db instanceof DBPostgres)) { + $sb .= $db->ignoreCase(':p'.count($params)); + } else { + $sb .= ':p'.count($params); + } + + // OPTION 3: table.column = ? or table.column >= ? etc. (traditional expressions, the default) + } else { + + // NULL VALUES need special treatment because the SQL syntax is different + // i.e. table.column IS NULL rather than table.column = null + if ($this->value !== null) { + + // ANSI SQL functions get inserted right into SQL (not escaped, etc.) + if ($this->value === Criteria::CURRENT_DATE || $this->value === Criteria::CURRENT_TIME || $this->value === Criteria::CURRENT_TIMESTAMP) { + $sb .= $field . $this->comparison . $this->value; + } else { + + $params[] = array('table' => $realtable, 'column' => $this->column, 'value' => $this->value); + + // default case, it is a normal col = value expression; value + // will be replaced w/ '?' and will be inserted later using PDO bindValue() + if ($this->ignoreStringCase) { + $sb .= $db->ignoreCase($field) . $this->comparison . $db->ignoreCase(':p'.count($params)); + } else { + $sb .= $field . $this->comparison . ':p'.count($params); + } + + } + } else { + + // value is null, which means it was either not specified or specifically + // set to null. + if ($this->comparison === Criteria::EQUAL || $this->comparison === Criteria::ISNULL) { + $sb .= $field . Criteria::ISNULL; + } elseif ($this->comparison === Criteria::NOT_EQUAL || $this->comparison === Criteria::ISNOTNULL) { + $sb .= $field . Criteria::ISNOTNULL; + } else { + // for now throw an exception, because not sure how to interpret this + throw new PropelException("Could not build SQL for expression: $field " . $this->comparison . " NULL"); + } + + } + + } + } + + foreach ( $this->clauses as $key=>$clause ) { + $sb .= $this->conjunctions[$key]; + $clause->appendPsTo($sb, $params); + $sb .= ')'; + } + } + + /** + * This method checks another Criteria to see if they contain + * the same attributes and hashtable entries. + * @return boolean + */ + public function equals($obj) + { + // TODO: optimize me with early outs + if ($this === $obj) { + return true; + } + + if (($obj === null) || !($obj instanceof Criterion)) { + return false; + } + + $crit = $obj; + + $isEquiv = ( ( ($this->table === null && $crit->getTable() === null) + || ( $this->table !== null && $this->table === $crit->getTable() ) + ) + && $this->column === $crit->getColumn() + && $this->comparison === $crit->getComparison()); + + // check chained criterion + + $clausesLength = count($this->clauses); + $isEquiv &= (count($crit->getClauses()) == $clausesLength); + $critConjunctions = $crit->getConjunctions(); + $critClauses = $crit->getClauses(); + for ($i=0; $i < $clausesLength && $isEquiv; $i++) { + $isEquiv &= ($this->conjunctions[$i] === $critConjunctions[$i]); + $isEquiv &= ($this->clauses[$i] === $critClauses[$i]); + } + + if ($isEquiv) { + $isEquiv &= $this->value === $crit->getValue(); + } + + return $isEquiv; + } + + /** + * Returns a hash code value for the object. + */ + public function hashCode() + { + $h = crc32(serialize($this->value)) ^ crc32($this->comparison); + + if ($this->table !== null) { + $h ^= crc32($this->table); + } + + if ($this->column !== null) { + $h ^= crc32($this->column); + } + + foreach ( $this->clauses as $clause ) { + // TODO: i KNOW there is a php incompatibility with the following line + // but i dont remember what it is, someone care to look it up and + // replace it if it doesnt bother us? + // $clause->appendPsTo($sb='',$params=array()); + $sb = ''; + $params = array(); + $clause->appendPsTo($sb,$params); + $h ^= crc32(serialize(array($sb,$params))); + unset ( $sb, $params ); + } + + return $h; + } + + /** + * Get all tables from nested criterion objects + * @return array + */ + public function getAllTables() + { + $tables = array(); + $this->addCriterionTable($this, $tables); + return $tables; + } + + /** + * method supporting recursion through all criterions to give + * us a string array of tables from each criterion + * @return void + */ + private function addCriterionTable(Criterion $c, array &$s) + { + $s[] = $c->getTable(); + foreach ( $c->getClauses() as $clause ) { + $this->addCriterionTable($clause, $s); + } + } + + /** + * get an array of all criterion attached to this + * recursing through all sub criterion + * @return array Criterion[] + */ + public function getAttachedCriterion() + { + $crits = array(); + $this->traverseCriterion($this, $crits); + return $crits; + } + + /** + * method supporting recursion through all criterions to give + * us an array of them + * @param Criterion $c + * @param array &$a + * @return void + */ + private function traverseCriterion(Criterion $c, array &$a) + { + $a[] = $c; + foreach ( $c->getClauses() as $clause ) { + $this->traverseCriterion($clause, $a); + } + } +} \ No newline at end of file diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/text-base/DebugPDO.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/text-base/DebugPDO.php.svn-base new file mode 100644 index 0000000..dcc54a9 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/text-base/DebugPDO.php.svn-base @@ -0,0 +1,550 @@ +. + */ + +/** + * PDO connection subclass that provides some basic support for query counting and logging. + * + * This class is ONLY intended for development use. This class is also a work in-progress + * and, as such, it should be expected that this class' API may change. + * + * The following runtime configuration items affect the behaviour of this class: + * + * - debugpdo.logging.enabled (default: true) + * Should any logging take place + * + * - debugpdo.logging.innerglue (default: ": ") + * String to use for combining the title of a detail and its value + * + * - debugpdo.logging.outerglue (default: " | ") + * String to use for combining details together on a log line + * + * - debugpdo.logging.realmemoryusage (default: false) + * Parameter to memory_get_usage() and memory_get_peak_usage() calls + * + * - debugpdo.logging.methods (default: DebugPDO::$defaultLogMethods) + * An array of method names ("Class::method") to be included in method call logging + * + * - debugpdo.logging.onlyslow (default: false) + * Suppress logging of non-slow queries. + * + * - debugpdo.logging.details.slow.enabled (default: false) + * Enables flagging of slow method calls + * + * - debugpdo.logging.details.slow.threshold (default: 0.1) + * Method calls taking more seconds than this threshold are considered slow + * + * - debugpdo.logging.details.time.enabled (default: false) + * Enables logging of method execution times + * + * - debugpdo.logging.details.time.precision (default: 3) + * Determines the precision of the execution time logging + * + * - debugpdo.logging.details.time.pad (default: 10) + * How much horizontal space to reserve for the execution time on a log line + * + * - debugpdo.logging.details.mem.enabled (default: false) + * Enables logging of the instantaneous PHP memory consumption + * + * - debugpdo.logging.details.mem.precision (default: 1) + * Determines the precision of the memory consumption logging + * + * - debugpdo.logging.details.mem.pad (default: 9) + * How much horizontal space to reserve for the memory consumption on a log line + * + * - debugpdo.logging.details.memdelta.enabled (default: false) + * Enables logging differences in memory consumption before and after the method call + * + * - debugpdo.logging.details.memdelta.precision (default: 1) + * Determines the precision of the memory difference logging + * + * - debugpdo.logging.details.memdelta.pad (default: 10) + * How much horizontal space to reserve for the memory difference on a log line + * + * - debugpdo.logging.details.mempeak.enabled (default: false) + * Enables logging the peak memory consumption thus far by the currently executing PHP script + * + * - debugpdo.logging.details.mempeak.precision (default: 1) + * Determines the precision of the memory peak logging + * + * - debugpdo.logging.details.mempeak.pad (default: 9) + * How much horizontal space to reserve for the memory peak on a log line + * + * - debugpdo.logging.details.querycount.enabled (default: false) + * Enables logging of the number of queries performed by the DebugPDO instance thus far + * + * - debugpdo.logging.details.querycount.pad (default: 2) + * How much horizontal space to reserve for the query count on a log line + * + * - debugpdo.logging.details.method.enabled (default: false) + * Enables logging of the name of the method call + * + * - debugpdo.logging.details.method.pad (default: 28) + * How much horizontal space to reserve for the method name on a log line + * + * The order in which the logging details are enabled is significant, since it determines the order in + * which they will appear in the log file. + * + * @example // Enable simple query profiling, flagging calls taking over 1.5 seconds as slow: + * $config = Propel::getConfiguration(PropelConfiguration::TYPE_OBJECT); + * $config->setParameter('debugpdo.logging.details.slow.enabled', true); + * $config->setParameter('debugpdo.logging.details.slow.threshold', 1.5); + * $config->setParameter('debugpdo.logging.details.time.enabled', true); + * + * @author Francois Zaninotto + * @author Cameron Brunner + * @author Hans Lellelid + * @author Christian Abegg + * @author Jarno Rantanen + * @since 2006-09-22 + * @package propel.util + */ +class DebugPDO extends PropelPDO +{ + const DEFAULT_SLOW_THRESHOLD = 0.1; + const DEFAULT_ONLYSLOW_ENABLED = false; + + /** + * Count of queries performed. + * + * @var int + */ + protected $queryCount = 0; + + /** + * SQL code of the latest performed query. + * + * @var string + */ + protected $lastExecutedQuery; + + /** + * The statement class to use. + * + * @var string + */ + protected $statementClass = 'DebugPDOStatement'; + + /** + * Configured BasicLogger (or compatible) logger. + * + * @var BasicLogger + */ + protected $logger; + + /** + * The log level to use for logging. + * + * @var int + */ + private $logLevel = Propel::LOG_DEBUG; + + /** + * The default value for runtime config item "debugpdo.logging.methods". + * + * @var array + */ + protected static $defaultLogMethods = array( + 'DebugPDO::exec', + 'DebugPDO::query', + 'DebugPDOStatement::execute', + ); + + /** + * Creates a DebugPDO instance representing a connection to a database. + * + * This method is overridden in order to specify a custom PDOStatement class and to implement logging. + * + * @param string $dsn Connection DSN. + * @param string $username (optional) The user name for the DSN string. + * @param string $password (optional) The password for the DSN string. + * @param array $driver_options (optional) A key=>value array of driver-specific connection options. + * @throws PDOException if there is an error during connection initialization. + */ + public function __construct($dsn, $username = null, $password = null, $driver_options = array()) + { + $debug = $this->getDebugSnapshot(); + + parent::__construct($dsn, $username, $password, $driver_options); + + $this->configureStatementClass($suppress=true); + $this->log('', null, __METHOD__, $debug); + } + + /** + * Configures the PDOStatement class for this connection. + * + * @param boolean $suppressError Whether to suppress an exception if the statement class cannot be set. + * @throws PropelException if the statement class cannot be set (and $suppressError is false). + */ + protected function configureStatementClass($suppressError = false) + { + // extending PDOStatement is not supported with persistent connections + if (!$this->getAttribute(PDO::ATTR_PERSISTENT)) { + $this->setAttribute(PDO::ATTR_STATEMENT_CLASS, array($this->getStatementClass(), array($this))); + } elseif (!$suppressError) { + throw new PropelException('Extending PDOStatement is not supported with persistent connections.'); + } + } + + /** + * Sets the custom classname to use for PDOStatement. + * + * It is assumed that the specified classname has been loaded (or can be loaded + * on-demand with autoload). + * + * @param string $classname Name of the statement class to use. + */ + public function setStatementClass($classname) + { + $this->statementClass = $classname; + $this->configureStatementClass(); + } + + /** + * Gets the custom classname to use for PDOStatement. + * + * @return string + */ + public function getStatementClass() + { + return $this->statementClass; + } + + /** + * Returns the number of queries this DebugPDO instance has performed on the database connection. + * + * When using DebugPDOStatement as the statement class, any queries by DebugPDOStatement instances + * are counted as well. + * + * @return int + * @throws PropelException if persistent connection is used (since unable to override PDOStatement in that case). + */ + public function getQueryCount() + { + // extending PDOStatement is not supported with persistent connections + if ($this->getAttribute(PDO::ATTR_PERSISTENT)) { + throw new PropelException('Extending PDOStatement is not supported with persistent connections. ' . + 'Count would be inaccurate, because we cannot count the PDOStatment::execute() calls. ' . + 'Either don\'t use persistent connections or don\'t call PropelPDO::getQueryCount()'); + } + return $this->queryCount; + } + + /** + * Increments the number of queries performed by this DebugPDO instance. + * + * Returns the original number of queries (ie the value of $this->queryCount before calling this method). + * + * @return int + */ + public function incrementQueryCount() + { + $this->queryCount++; + } + + /** + * Get the SQL code for the latest query executed by Propel + * + * @return string Executable SQL code + */ + public function getLastExecutedQuery() + { + return $this->lastExecutedQuery; + } + + /** + * Set the SQL code for the latest query executed by Propel + * + * @param string $query Executable SQL code + */ + public function setLastExecutedQuery($query) + { + $this->lastExecutedQuery = $query; + } + + /** + * Prepares a statement for execution and returns a statement object. + * + * Overrides PDO::prepare() to add logging and query counting. + * + * @param string $sql This must be a valid SQL statement for the target database server. + * @param array One or more key=>value pairs to set attribute values for the PDOStatement object that this method returns. + * @return PDOStatement + */ + public function prepare($sql, $driver_options = array()) + { + $debug = $this->getDebugSnapshot(); + $return = parent::prepare($sql, $driver_options); + + $this->log($sql, null, __METHOD__, $debug); + + return $return; + } + + /** + * Execute an SQL statement and return the number of affected rows. + * + * Overridden for query counting and logging. + * + * @return int + */ + public function exec($sql) + { + $debug = $this->getDebugSnapshot(); + $return = parent::exec($sql); + + $this->log($sql, null, __METHOD__, $debug); + $this->setLastExecutedQuery($sql); + $this->incrementQueryCount(); + + return $return; + } + + /** + * Executes an SQL statement, returning a result set as a PDOStatement object. Despite its signature here, + * this method takes a variety of parameters. + * + * Overridden for query counting and logging. + * + * @see http://php.net/manual/en/pdo.query.php for a description of the possible parameters. + * @return PDOStatement + */ + public function query() + { + $debug = $this->getDebugSnapshot(); + $args = func_get_args(); + if (version_compare(PHP_VERSION, '5.3', '<')) { + $return = call_user_func_array(array($this, 'parent::query'), $args); + } else { + $return = call_user_func_array('parent::query', $args); + } + + $sql = $args[0]; + $this->log($sql, null, __METHOD__, $debug); + $this->setLastExecutedQuery($sql); + $this->incrementQueryCount(); + + return $return; + } + + /** + * Sets the logging level to use for logging method calls and SQL statements. + * + * @param int $level Value of one of the Propel::LOG_* class constants. + */ + public function setLogLevel($level) + { + $this->logLevel = $level; + } + + /** + * Sets a logger to use. + * + * The logger will be used by this class to log various method calls and their properties. + * + * @param BasicLogger $logger A Logger with an API compatible with BasicLogger (or PEAR Log). + */ + public function setLogger($logger) + { + $this->logger = $logger; + } + + /** + * Logs the method call or SQL using the Propel::log() method or a registered logger class. + * + * @uses self::getLogPrefix() + * @see self::setLogger() + * + * @param string $msg Message to log. + * @param int $level (optional) Log level to use; will use self::setLogLevel() specified level by default. + * @param string $methodName (optional) Name of the method whose execution is being logged. + * @param array $debugSnapshot (optional) Previous return value from self::getDebugSnapshot(). + */ + public function log($msg, $level = null, $methodName = null, array $debugSnapshot = null) + { + // If logging has been specifically disabled, this method won't do anything + if (!$this->getLoggingConfig('enabled', true)) + return; + + // If the method being logged isn't one of the ones to be logged, bail + if (!in_array($methodName, $this->getLoggingConfig('methods', self::$defaultLogMethods))) + return; + + // If a logging level wasn't provided, use the default one + if ($level === null) + $level = $this->logLevel; + + // Determine if this query is slow enough to warrant logging + if ($this->getLoggingConfig("onlyslow", self::DEFAULT_ONLYSLOW_ENABLED)) + { + $now = $this->getDebugSnapshot(); + if ($now['microtime'] - $debugSnapshot['microtime'] < $this->getLoggingConfig("details.slow.threshold", self::DEFAULT_SLOW_THRESHOLD)) return; + } + + // If the necessary additional parameters were given, get the debug log prefix for the log line + if ($methodName && $debugSnapshot) + $msg = $this->getLogPrefix($methodName, $debugSnapshot) . $msg; + + // We won't log empty messages + if (!$msg) + return; + + // Delegate the actual logging forward + if ($this->logger) + $this->logger->log($msg, $level); + else + Propel::log($msg, $level); + } + + /** + * Returns a snapshot of the current values of some functions useful in debugging. + * + * @return array + */ + public function getDebugSnapshot() + { + return array( + 'microtime' => microtime(true), + 'memory_get_usage' => memory_get_usage($this->getLoggingConfig('realmemoryusage', false)), + 'memory_get_peak_usage' => memory_get_peak_usage($this->getLoggingConfig('realmemoryusage', false)), + ); + } + + /** + * Returns a named configuration item from the Propel runtime configuration, from under the + * 'debugpdo.logging' prefix. If such a configuration setting hasn't been set, the given default + * value will be returned. + * + * @param string $key Key for which to return the value. + * @param mixed $defaultValue Default value to apply if config item hasn't been set. + * @return mixed + */ + protected function getLoggingConfig($key, $defaultValue) + { + return Propel::getConfiguration(PropelConfiguration::TYPE_OBJECT)->getParameter("debugpdo.logging.$key", $defaultValue); + } + + /** + * Returns a prefix that may be prepended to a log line, containing debug information according + * to the current configuration. + * + * Uses a given $debugSnapshot to calculate how much time has passed since the call to self::getDebugSnapshot(), + * how much the memory consumption by PHP has changed etc. + * + * @see self::getDebugSnapshot() + * + * @param string $methodName Name of the method whose execution is being logged. + * @param array $debugSnapshot A previous return value from self::getDebugSnapshot(). + * @return string + */ + protected function getLogPrefix($methodName, $debugSnapshot) + { + $prefix = ''; + $now = $this->getDebugSnapshot(); + $logDetails = array_keys($this->getLoggingConfig('details', array())); + $innerGlue = $this->getLoggingConfig('innerglue', ': '); + $outerGlue = $this->getLoggingConfig('outerglue', ' | '); + + // Iterate through each detail that has been configured to be enabled + foreach ($logDetails as $detailName) { + + if (!$this->getLoggingConfig("details.$detailName.enabled", false)) + continue; + + switch ($detailName) { + + case 'slow'; + $value = $now['microtime'] - $debugSnapshot['microtime'] >= $this->getLoggingConfig("details.$detailName.threshold", self::DEFAULT_SLOW_THRESHOLD) ? 'YES' : ' NO'; + break; + + case 'time': + $value = number_format($now['microtime'] - $debugSnapshot['microtime'], $this->getLoggingConfig("details.$detailName.precision", 3)) . ' sec'; + $value = str_pad($value, $this->getLoggingConfig("details.$detailName.pad", 10), ' ', STR_PAD_LEFT); + break; + + case 'mem': + $value = self::getReadableBytes($now['memory_get_usage'], $this->getLoggingConfig("details.$detailName.precision", 1)); + $value = str_pad($value, $this->getLoggingConfig("details.$detailName.pad", 9), ' ', STR_PAD_LEFT); + break; + + case 'memdelta': + $value = $now['memory_get_usage'] - $debugSnapshot['memory_get_usage']; + $value = ($value > 0 ? '+' : '') . self::getReadableBytes($value, $this->getLoggingConfig("details.$detailName.precision", 1)); + $value = str_pad($value, $this->getLoggingConfig("details.$detailName.pad", 10), ' ', STR_PAD_LEFT); + break; + + case 'mempeak': + $value = self::getReadableBytes($now['memory_get_peak_usage'], $this->getLoggingConfig("details.$detailName.precision", 1)); + $value = str_pad($value, $this->getLoggingConfig("details.$detailName.pad", 9), ' ', STR_PAD_LEFT); + break; + + case 'querycount': + $value = $this->getQueryCount(); + $value = str_pad($value, $this->getLoggingConfig("details.$detailName.pad", 2), ' ', STR_PAD_LEFT); + break; + + case 'method': + $value = $methodName; + $value = str_pad($value, $this->getLoggingConfig("details.$detailName.pad", 28), ' ', STR_PAD_RIGHT); + break; + + default: + $value = 'n/a'; + break; + + } + + $prefix .= $detailName . $innerGlue . $value . $outerGlue; + + } + + return $prefix; + } + + /** + * Returns a human-readable representation of the given byte count. + * + * @param int $bytes Byte count to convert. + * @param int $precision How many decimals to include. + * @return string + */ + protected function getReadableBytes($bytes, $precision) + { + $suffix = array('B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'); + $total = count($suffix); + + for ($i = 0; $bytes > 1024 && $i < $total; $i++) + $bytes /= 1024; + + return number_format($bytes, $precision) . ' ' . $suffix[$i]; + } + + /** + * If so configured, makes an entry to the log of the state of this DebugPDO instance just prior to its destruction. + * + * @see self::log() + */ + public function __destruct() + { + $this->log('', null, __METHOD__, $this->getDebugSnapshot()); + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/text-base/DebugPDOStatement.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/text-base/DebugPDOStatement.php.svn-base new file mode 100644 index 0000000..6924ca0 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/text-base/DebugPDOStatement.php.svn-base @@ -0,0 +1,134 @@ +. + */ + +/** + * PDOStatement that provides some enhanced functionality needed by Propel. + * + * Simply adds the ability to count the number of queries executed and log the queries/method calls. + * + * @author Oliver Schonrock + * @author Jarno Rantanen + * @since 2007-07-12 + * @package propel.util + */ +class DebugPDOStatement extends PDOStatement +{ + + /** + * The PDO connection from which this instance was created. + * + * @var DebugPDO + */ + protected $pdo; + + /** + * Hashmap for resolving the PDO::PARAM_* class constants to their human-readable names. + * + * This is only used in logging the binding of variables. + * + * @see self::bindValue() + * @var array + */ + protected static $typeMap = array( + PDO::PARAM_BOOL => "PDO::PARAM_BOOL", + PDO::PARAM_INT => "PDO::PARAM_INT", + PDO::PARAM_STR => "PDO::PARAM_STR", + PDO::PARAM_LOB => "PDO::PARAM_LOB", + PDO::PARAM_NULL => "PDO::PARAM_NULL", + ); + + /** + * @var array The values that have been bound + */ + protected $boundValues = array(); + + /** + * Construct a new statement class with reference to main DebugPDO object from + * which this instance was created. + * + * @param DebugPDO $pdo Reference to the parent PDO instance. + */ + protected function __construct(DebugPDO $pdo) + { + $this->pdo = $pdo; + } + + public function getExecutedQueryString() + { + $sql = $this->queryString; + + $matches = array(); + if (preg_match_all('/(:p[0-9]+\b)/', $sql, $matches)) { + $size = count($matches[1]); + for ($i = $size-1; $i >= 0; $i--) { + $pos = $matches[1][$i]; + $sql = str_replace($pos, $this->boundValues[$pos], $sql); + } + } + + return $sql; + } + + /** + * Executes a prepared statement. Returns a boolean value indicating success. + * + * Overridden for query counting and logging. + * + * @return bool + */ + public function execute($input_parameters = null) + { + $debug = $this->pdo->getDebugSnapshot(); + $return = parent::execute($input_parameters); + + $sql = $this->getExecutedQueryString(); + $this->pdo->log($sql, null, __METHOD__, $debug); + $this->pdo->setLastExecutedQuery($sql); + $this->pdo->incrementQueryCount(); + + return $return; + } + + /** + * Binds a value to a corresponding named or question mark placeholder in the SQL statement + * that was use to prepare the statement. Returns a boolean value indicating success. + * + * @param int $pos Parameter identifier (for determining what to replace in the query). + * @param mixed $value The value to bind to the parameter. + * @param int $type Explicit data type for the parameter using the PDO::PARAM_* constants. Defaults to PDO::PARAM_STR. + * @return boolean + */ + public function bindValue($pos, $value, $type = PDO::PARAM_STR) + { + $debug = $this->pdo->getDebugSnapshot(); + $typestr = isset(self::$typeMap[$type]) ? self::$typeMap[$type] : '(default)'; + $return = parent::bindValue($pos, $value, $type); + $valuestr = $type == PDO::PARAM_LOB ? '[LOB value]' : var_export($value, true); + $msg = "Binding $valuestr at position $pos w/ PDO type $typestr"; + + $this->boundValues[$pos] = $valuestr; + + $this->pdo->log($msg, null, __METHOD__, $debug); + + return $return; + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/text-base/Join.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/text-base/Join.php.svn-base new file mode 100644 index 0000000..448859e --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/text-base/Join.php.svn-base @@ -0,0 +1,251 @@ +. + */ + +/** + * Data object to describe a join between two tables, for example + *

    + * table_a LEFT JOIN table_b ON table_a.id = table_b.a_id
    + * 
    + * + * @author Francois Zaninotto (Propel) + * @author Hans Lellelid (Propel) + * @author Kaspars Jaudzems (Propel) + * @author Frank Y. Kim (Torque) + * @author John D. McNally (Torque) + * @author Brett McLaughlin (Torque) + * @author Eric Dobbs (Torque) + * @author Henning P. Schmiedehausen (Torque) + * @author Sam Joseph (Torque) + * @package propel.util + */ +class Join +{ + // default comparison type + const EQUAL = "="; + + // the left parts of the join condition + protected $left = array(); + + // the right parts of the join condition + protected $right = array(); + + // the comparison operators for each pair of columns in the join condition + protected $operator = array(); + + // the type of the join (LEFT JOIN, ...), or null for an implicit join + protected $joinType = null; + + // the number of conditions in the join + protected $count = 0; + + /** + * Constructor + * Use it preferably with no arguments, and then use addCondition() and setJoinType() + * Syntax with arguments used mainly for backwards compatibility + * + * @param string $leftColumn The left column of the join condition + * (may contain an alias name) + * @param string $rightColumn The right column of the join condition + * (may contain an alias name) + * @param string $joinType The type of the join. Valid join types are null (implicit join), + * Criteria::LEFT_JOIN, Criteria::RIGHT_JOIN, and Criteria::INNER_JOIN + */ + public function __construct($leftColumn = null, $rightColumn = null, $joinType = null) + { + if(!is_null($leftColumn)) { + if (!is_array($leftColumn)) { + // simple join + $this->addCondition($leftColumn, $rightColumn); + } else { + // join with multiple conditions + if (count($leftColumn) != count($rightColumn) ) { + throw new PropelException("Unable to create join because the left column count isn't equal to the right column count"); + } + foreach ($leftColumn as $key => $value) + { + $this->addCondition($value, $rightColumn[$key]); + } + } + $this->setJoinType($joinType); + } + } + + /** + * Join condition definition + * + * @param string $left The left column of the join condition + * (may contain an alias name) + * @param string $right The right column of the join condition + * (may contain an alias name) + * @param string $joinType The type of the join. Valid join types are null (implicit join), + * Criteria::LEFT_JOIN, Criteria::RIGHT_JOIN, and Criteria::INNER_JOIN + */ + public function addCondition($left, $right, $operator = self::EQUAL) + { + $this->left[] = $left; + $this->right[] = $right; + $this->operator[] = $operator; + $this->count++; + } + + /** + * Retrieve the number of conditions in the join + * + * @return integer The number of conditions in the join + */ + public function countConditions() + { + return $this->count; + } + + /** + * Return an array of the join conditions + * + * @return array An array of arrays representing (left, comparison, right) for each condition + */ + public function getConditions() + { + $conditions = array(); + for ($i=0; $i < $this->count; $i++) { + $conditions[] = array( + 'left' => $this->getLeftColumn($i), + 'operator' => $this->getOperator($i), + 'right' => $this->getRightColumn($i) + ); + } + return $conditions; + } + + /** + * @return the comparison operator for the join condition + */ + public function getOperator($index = 0) + { + return $this->operator[$index]; + } + + public function getOperators() + { + return $this->operator; + } + + /** + * Set the join type + * + * @param string $joinType The type of the join. Valid join types are + * null (adding the join condition to the where clause), + * Criteria::LEFT_JOIN(), Criteria::RIGHT_JOIN(), and Criteria::INNER_JOIN() + */ + public function setJoinType($joinType = null) + { + $this->joinType = $joinType; + } + + /** + * Get the join type + * + * @return string The type of the join, i.e. Criteria::LEFT_JOIN(), ..., + * or null for adding the join condition to the where Clause + */ + public function getJoinType() + { + return $this->joinType; + } + + /** + * @return the left column of the join condition + */ + public function getLeftColumn($index = 0) + { + return $this->left[$index]; + } + + /** + * @return all right columns of the join condition + */ + public function getLeftColumns() + { + return $this->left; + } + + + public function getLeftColumnName($index = 0) + { + return substr($this->left[$index], strrpos($this->left[$index], '.') + 1); + } + + public function getLeftTableName($index = 0) + { + return substr($this->left[$index], 0, strrpos($this->left[$index], '.')); + } + + /** + * @return the right column of the join condition + */ + public function getRightColumn($index = 0) + { + return $this->right[$index]; + } + + /** + * @return all right columns of the join condition + */ + public function getRightColumns() + { + return $this->right; + } + + public function getRightColumnName($index = 0) + { + return substr($this->right[$index], strrpos($this->right[$index], '.') + 1); + } + + public function getRightTableName($index = 0) + { + return substr($this->right[$index], 0, strrpos($this->right[$index], '.')); + } + + /** + * returns a String representation of the class, + * mainly for debugging purposes + * + * @return string A String representation of the class + */ + public function toString() + { + $result = ''; + if ($this->joinType !== null) + { + $result .= $this->joinType . ' : '; + } + foreach ($$this->getConditions() as $index => $condition) + { + $result .= implode($condition); + if ($index + 1 < $this->count) { + $result .= ' AND '; + } + } + $result .= '(ignoreCase not considered)'; + + return $result; + } +} + \ No newline at end of file diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/text-base/NodePeer.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/text-base/NodePeer.php.svn-base new file mode 100644 index 0000000..609c021 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/text-base/NodePeer.php.svn-base @@ -0,0 +1,379 @@ +. + */ + +/** + * This is a utility interface for all generated NodePeer classes in the system. + * + * @author Heltem (Propel) + * @version $Revision$ + * @package propel.util + */ +interface NodePeer { + /** + * Creates the supplied node as the root node. + * + * @param object $node Propel object for model + * @return object Inserted propel object for model + */ + public static function createRoot(NodeObject $node); + + /** + * Returns the root node for a given scope id + * + * @param int $scopeId Scope id to determine which root node to return + * @param PropelPDO $con Connection to use. + * @return object Propel object for root node + */ + public static function retrieveRoot($scopeId = 1, PropelPDO $con = null); + + /** + * Inserts $child as first child of destination node $parent + * + * @param object $child Propel object for child node + * @param object $parent Propel object for parent node + * @param PropelPDO $con Connection to use. + * @return void + */ + public static function insertAsFirstChildOf(NodeObject $child, NodeObject $parent, PropelPDO $con = null); + + /** + * Inserts $child as last child of destination node $parent + * + * @param object $child Propel object for child node + * @param object $parent Propel object for parent node + * @param PropelPDO $con Connection to use. + * @return void + */ + public static function insertAsLastChildOf(NodeObject $child, NodeObject $parent, PropelPDO $con = null); + + /** + * Inserts $sibling as previous sibling to destination node $node + * + * @param object $node Propel object for destination node + * @param object $sibling Propel object for source node + * @param PropelPDO $con Connection to use. + * @return void + */ + public static function insertAsPrevSiblingOf(NodeObject $node, NodeObject $sibling, PropelPDO $con = null); + + /** + * Inserts $sibling as next sibling to destination node $node + * + * @param object $node Propel object for destination node + * @param object $sibling Propel object for source node + * @param PropelPDO $con Connection to use. + * @return void + */ + public static function insertAsNextSiblingOf(NodeObject $node, NodeObject $sibling, PropelPDO $con = null); + + /** + * Inserts $parent as parent of given $node. + * + * @param object $parent Propel object for given parent node + * @param object $node Propel object for given destination node + * @param PropelPDO $con Connection to use. + * @return void + * @throws Exception When trying to insert node as parent of a root node + */ + public static function insertAsParentOf(NodeObject $parent, NodeObject $node, PropelPDO $con = null); + + /** + * Inserts $node as root node + * + * @param object $node Propel object as root node + * @param PropelPDO $con Connection to use. + * @return void + */ + public static function insertRoot(NodeObject $node, PropelPDO $con = null); + + /** + * Delete root node + * + * @param int $scopeId Scope id to determine which root node to delete + * @param PropelPDO $con Connection to use. + * @return boolean Deletion status + */ + public static function deleteRoot($scopeId = 1, PropelPDO $con = null); + + /** + * Delete $dest node + * + * @param object $dest Propel object node to delete + * @param PropelPDO $con Connection to use. + * @return boolean Deletion status + */ + public static function deleteNode(NodeObject $dest, PropelPDO $con = null); + + /** + * Moves $child to be first child of $parent + * + * @param object $parent Propel object for parent node + * @param object $child Propel object for child node + * @param PropelPDO $con Connection to use. + * @return void + */ + public static function moveToFirstChildOf(NodeObject $parent, NodeObject $child, PropelPDO $con = null); + + /** + * Moves $node to be last child of $dest + * + * @param object $dest Propel object for destination node + * @param object $node Propel object for source node + * @param PropelPDO $con Connection to use. + * @return void + */ + public static function moveToLastChildOf(NodeObject $dest, NodeObject $node, PropelPDO $con = null); + + /** + * Moves $node to be prev sibling to $dest + * + * @param object $dest Propel object for destination node + * @param object $node Propel object for source node + * @param PropelPDO $con Connection to use. + * @return void + */ + public static function moveToPrevSiblingOf(NodeObject $dest, NodeObject $node, PropelPDO $con = null); + + /** + * Moves $node to be next sibling to $dest + * + * @param object $dest Propel object for destination node + * @param object $node Propel object for source node + * @param PropelPDO $con Connection to use. + * @return void + */ + public static function moveToNextSiblingOf(NodeObject $dest, NodeObject $node, PropelPDO $con = null); + + /** + * Gets first child for the given node if it exists + * + * @param object $node Propel object for src node + * @param PropelPDO $con Connection to use. + * @return mixed Propel object if exists else false + */ + public static function retrieveFirstChild(NodeObject $node, PropelPDO $con = null); + + /** + * Gets last child for the given node if it exists + * + * @param object $node Propel object for src node + * @param PropelPDO $con Connection to use. + * @return mixed Propel object if exists else false + */ + public static function retrieveLastChild(NodeObject $node, PropelPDO $con = null); + + /** + * Gets prev sibling for the given node if it exists + * + * @param object $node Propel object for src node + * @param PropelPDO $con Connection to use. + * @return mixed Propel object if exists else false + */ + public static function retrievePrevSibling(NodeObject $node, PropelPDO $con = null); + + /** + * Gets next sibling for the given node if it exists + * + * @param object $node Propel object for src node + * @param PropelPDO $con Connection to use. + * @return mixed Propel object if exists else false + */ + public static function retrieveNextSibling(NodeObject $node, PropelPDO $con = null); + + /** + * Retrieves the entire tree from root + * + * @param int $scopeId Scope id to determine which scope tree to return + * @param PropelPDO $con Connection to use. + */ + public static function retrieveTree($scopeId = 1, PropelPDO $con = null); + + /** + * Retrieves the entire tree from parent $node + * + * @param PropelPDO $con Connection to use. + */ + public static function retrieveBranch(NodeObject $node, PropelPDO $con = null); + + /** + * Gets direct children for the node + * + * @param object $node Propel object for parent node + * @param PropelPDO $con Connection to use. + */ + public static function retrieveChildren(NodeObject $node, PropelPDO $con = null); + + /** + * Gets all descendants for the node + * + * @param object $node Propel object for parent node + * @param PropelPDO $con Connection to use. + */ + public static function retrieveDescendants(NodeObject $node, PropelPDO $con = null); + + /** + * Gets all siblings for the node + * + * @param object $node Propel object for src node + * @param PropelPDO $con Connection to use. + */ + public static function retrieveSiblings(NodeObject $node, PropelPDO $con = null); + + /** + * Gets ancestor for the given node if it exists + * + * @param object $node Propel object for src node + * @param PropelPDO $con Connection to use. + * @return mixed Propel object if exists else false + */ + public static function retrieveParent(NodeObject $node, PropelPDO $con = null); + + /** + * Gets level for the given node + * + * @param object $node Propel object for src node + * @param PropelPDO $con Connection to use. + * @return int Level for the given node + */ + public static function getLevel(NodeObject $node, PropelPDO $con = null); + + /** + * Gets number of direct children for given node + * + * @param object $node Propel object for src node + * @param PropelPDO $con Connection to use. + * @return int Level for the given node + */ + public static function getNumberOfChildren(NodeObject $node, PropelPDO $con = null); + + /** + * Gets number of descendants for given node + * + * @param object $node Propel object for src node + * @param PropelPDO $con Connection to use. + * @return int Level for the given node + */ + public static function getNumberOfDescendants(NodeObject $node, PropelPDO $con = null); + + /** + * Returns path to a specific node as an array, useful to create breadcrumbs + * + * @param object $node Propel object of node to create path to + * @param PropelPDO $con Connection to use. + * @return array Array in order of heirarchy + */ + public static function getPath(NodeObject $node, PropelPDO $con = null); + + /** + * Tests if node is valid + * + * @param object $node Propel object for src node + * @return bool + */ + public static function isValid(NodeObject $node = null); + + /** + * Tests if node is a root + * + * @param object $node Propel object for src node + * @return bool + */ + public static function isRoot(NodeObject $node); + + /** + * Tests if node is a leaf + * + * @param object $node Propel object for src node + * @return bool + */ + public static function isLeaf(NodeObject $node); + + /** + * Tests if $child is a child of $parent + * + * @param object $child Propel object for node + * @param object $parent Propel object for node + * @return bool + */ + public static function isChildOf(NodeObject $child, NodeObject $parent); + + /** + * Tests if $node1 is equal to $node2 + * + * @param object $node1 Propel object for node + * @param object $node2 Propel object for node + * @return bool + */ + public static function isEqualTo(NodeObject $node1, NodeObject $node2); + + /** + * Tests if $node has an ancestor + * + * @param object $node Propel object for node + * @param PropelPDO $con Connection to use. + * @return bool + */ + public static function hasParent(NodeObject $node, PropelPDO $con = null); + + /** + * Tests if $node has prev sibling + * + * @param object $node Propel object for node + * @param PropelPDO $con Connection to use. + * @return bool + */ + public static function hasPrevSibling(NodeObject $node, PropelPDO $con = null); + + /** + * Tests if $node has next sibling + * + * @param object $node Propel object for node + * @param PropelPDO $con Connection to use. + * @return bool + */ + public static function hasNextSibling(NodeObject $node, PropelPDO $con = null); + + /** + * Tests if $node has children + * + * @param object $node Propel object for node + * @return bool + */ + public static function hasChildren(NodeObject $node); + + /** + * Deletes $node and all of its descendants + * + * @param object $node Propel object for source node + * @param PropelPDO $con Connection to use. + */ + public static function deleteDescendants(NodeObject $node, PropelPDO $con = null); + + /** + * Returns a node given its primary key or the node itself + * + * @param int/object $node Primary key/instance of required node + * @param PropelPDO $con Connection to use. + * @return object Propel object for model + */ + public static function getNode($node, PropelPDO $con = null); + +} // NodePeer diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/text-base/PropelColumnTypes.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/text-base/PropelColumnTypes.php.svn-base new file mode 100644 index 0000000..0eac4d1 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/text-base/PropelColumnTypes.php.svn-base @@ -0,0 +1,95 @@ +. + */ + +/** + * Enumeration of Propel types. + * + * THIS CLASS MUST BE KEPT UP-TO-DATE WITH THE MORE EXTENSIVE GENERATOR VERSION OF THIS CLASS. + * + * @author Hans Lellelid (Propel) + * @version $Revision$ + * @package propel.util + */ +class PropelColumnTypes { + + const CHAR = "CHAR"; + const VARCHAR = "VARCHAR"; + const LONGVARCHAR = "LONGVARCHAR"; + const CLOB = "CLOB"; + const NUMERIC = "NUMERIC"; + const DECIMAL = "DECIMAL"; + const TINYINT = "TINYINT"; + const SMALLINT = "SMALLINT"; + const INTEGER = "INTEGER"; + const BIGINT = "BIGINT"; + const REAL = "REAL"; + const FLOAT = "FLOAT"; + const DOUBLE = "DOUBLE"; + const BINARY = "BINARY"; + const VARBINARY = "VARBINARY"; + const LONGVARBINARY = "LONGVARBINARY"; + const BLOB = "BLOB"; + const DATE = "DATE"; + const TIME = "TIME"; + const TIMESTAMP = "TIMESTAMP"; + + const BU_DATE = "BU_DATE"; + const BU_TIMESTAMP = "BU_TIMESTAMP"; + + const BOOLEAN = "BOOLEAN"; + + private static $propelToPdoMap = array( + self::CHAR => PDO::PARAM_STR, + self::VARCHAR => PDO::PARAM_STR, + self::LONGVARCHAR => PDO::PARAM_STR, + self::CLOB => PDO::PARAM_LOB, + self::NUMERIC => PDO::PARAM_STR, + self::DECIMAL => PDO::PARAM_STR, + self::TINYINT => PDO::PARAM_INT, + self::SMALLINT => PDO::PARAM_INT, + self::INTEGER => PDO::PARAM_INT, + self::BIGINT => PDO::PARAM_STR, + self::REAL => PDO::PARAM_STR, + self::FLOAT => PDO::PARAM_STR, + self::DOUBLE => PDO::PARAM_STR, + self::BINARY => PDO::PARAM_STR, + self::VARBINARY => PDO::PARAM_STR, + self::LONGVARBINARY => PDO::PARAM_STR, + self::BLOB => PDO::PARAM_LOB, + self::DATE => PDO::PARAM_STR, + self::TIME => PDO::PARAM_STR, + self::TIMESTAMP => PDO::PARAM_STR, + self::BU_DATE => PDO::PARAM_STR, + self::BU_TIMESTAMP => PDO::PARAM_STR, + self::BOOLEAN => PDO::PARAM_BOOL, + ); + + /** + * Resturns the PDO type (PDO::PARAM_* constant) value for the Propel type provided. + * @param string $propelType + * @return int + */ + public static function getPdoType($propelType) + { + return self::$propelToPdoMap[$propelType]; + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/text-base/PropelConfiguration.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/text-base/PropelConfiguration.php.svn-base new file mode 100644 index 0000000..d03539c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/text-base/PropelConfiguration.php.svn-base @@ -0,0 +1,170 @@ +. + */ + +/** + * PropelConfiguration is a container for all Propel's configuration data. + * + * PropelConfiguration implements ArrayAccess interface so the configuration + * can be accessed as an array or using a simple getter and setter. The whole + * configuration can also be retrieved as a nested arrays, flat array or as a + * PropelConfiguration instance. + * + * @author Veikko Mäkinen + * @version $Revision$ + * @package propel + */ +class PropelConfiguration implements ArrayAccess +{ + const TYPE_ARRAY = 1; + + const TYPE_ARRAY_FLAT = 2; + + const TYPE_OBJECT = 3; + + /** + * @var array An array of parameters + */ + protected $parameters = array(); + + /** + * Construct a new configuration container + * + * @param array $parameters + */ + public function __construct(array $parameters = array()) + { + $this->parameters = $parameters; + } + + /** + * @see http://www.php.net/ArrayAccess + */ + public function offsetExists($offset) + { + return isset($this->parameter[$offset]) || array_key_exists($offset, $this->parameters); + } + + /** + * @see http://www.php.net/ArrayAccess + */ + public function offsetSet($offset, $value) + { + $this->parameter[$offset] = $value; + } + + /** + * @see http://www.php.net/ArrayAccess + */ + public function offsetGet($offset) + { + return $this->parameters[$offset]; + } + + /** + * @see http://www.php.net/ArrayAccess + */ + public function offsetUnset($offset) + { + unset($this->parameters[$offset]); + } + + /** + * Get parameter value from the container + * + * @param string $name Parameter name + * @param mixed $default Default value to be used if the + * requested value is not found + * @return mixed Parameter value or the default + */ + public function getParameter($name, $default = null) + { + $ret = $this->parameters; + $parts = explode('.', $name); //name.space.name + while ($part = array_shift($parts)) { + if (array_key_exists($part, $ret)) { + $ret = $ret[$part]; + } else { + return $default; + } + } + return $ret; + } + + /** + * Store a value to the container + * + * @param string $name Configuration item name (name.space.name) + * @param mixed $value Value to be stored + */ + public function setParameter($name, $value) + { + $param = &$this->parameters; + $parts = explode('.', $name); //name.space.name + while ($part = array_shift($parts)) { + $param = &$param[$part]; + } + $param = $value; + } + + /** + * + * + * @param int $type + * @return mixed + */ + public function getParameters($type = PropelConfiguration::TYPE_ARRAY) + { + switch ($type) { + case PropelConfiguration::TYPE_ARRAY: + return $this->parameters; + case PropelConfiguration::TYPE_ARRAY_FLAT: + return $this->toFlatArray(); + case PropelConfiguration::TYPE_OBJECT: + return $this; + default: + throw new PropelException('Unknown configuration type: '. var_export($type, true)); + } + + } + + + /** + * Get the configuration as a flat array. ($array['name.space.item'] = 'value') + * + * @return array + */ + protected function toFlatArray() + { + $result = array(); + $it = new PropelConfigurationIterator(new RecursiveArrayIterator($this->parameters), RecursiveIteratorIterator::SELF_FIRST); + foreach($it as $key => $value) { + $ns = $it->getDepth() ? $it->getNamespace() . '.'. $key : $key; + if ($it->getNodeType() == PropelConfigurationIterator::NODE_ITEM) { + $result[$ns] = $value; + } + } + + return $result; + } + +} + +?> diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/text-base/PropelConfigurationIterator.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/text-base/PropelConfigurationIterator.php.svn-base new file mode 100644 index 0000000..bdb2cbe --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/text-base/PropelConfigurationIterator.php.svn-base @@ -0,0 +1,114 @@ +. + */ + +/** + * PropelConfigurationIterator is used internally by PropelConfiguration to + * build a flat array from nesting configuration arrays. + * + * @author Veikko Mäkinen + * @version $Revision$ + * @package propel + */ +class PropelConfigurationIterator extends RecursiveIteratorIterator +{ + /** + * Node is a parent node + */ + const NODE_PARENT = 0; + + /** + * Node is an actual configuration item + */ + const NODE_ITEM = 1; + + /** + * Namespace stack when recursively iterating the configuration tree + * + * @var array + */ + protected $namespaceStack = array(); + + /** + * Current node type. Possible values: null (undefined), self::NODE_PARENT or self::NODE_ITEM + * + * @var int + */ + protected $nodeType = null; + + /** + * Get current namespace + * + * @return string + */ + public function getNamespace() + { + return implode('.', $this->namespaceStack); + } + + /** + * Get current node type. + * + * @see http://www.php.net/RecursiveIteratorIterator + * @return int + * - null (undefined) + * - self::NODE_PARENT + * - self::NODE_ITEM + */ + public function getNodeType() + { + return $this->nodeType; + } + + /** + * Get the current element + * + * @see http://www.php.net/RecursiveIteratorIterator + * @return mixed + */ + public function current() + { + $current = parent::current(); + if (is_array($current)) { + $this->namespaceStack[] = $this->key(); + $this->nodeType = self::NODE_PARENT; + } + else { + $this->nodeType = self::NODE_ITEM; + } + + return $current; + } + + /** + * Called after current child iterator is invalid and right before it gets destructed. + * + * @see http://www.php.net/RecursiveIteratorIterator + */ + public function endChildren() + { + if ($this->namespaceStack) { + array_pop($this->namespaceStack); + } + } + +} + +?> diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/text-base/PropelDateTime.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/text-base/PropelDateTime.php.svn-base new file mode 100644 index 0000000..2941545 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/text-base/PropelDateTime.php.svn-base @@ -0,0 +1,87 @@ +. + */ + +/** + * DateTime subclass which supports serialization. + * + * Currently Propel is not using this for storing date/time objects + * within model objeects; however, we are keeping it in the repository + * because it is useful if you want to store a DateTime object in a session. + * + * @author Alan Pinstein + * @author Soenke Ruempler + * @author Hans Lellelid + * @package propel.util + */ +class PropelDateTime extends DateTime +{ + + /** + * A string representation of the date, for serialization. + * @var string + */ + private $dateString; + + /** + * A string representation of the time zone, for serialization. + * @var string + */ + private $tzString; + + /** + * Convenience method to enable a more fluent API. + * @param string $date Date/time value. + * @param DateTimeZone $tz (optional) timezone + */ + public static function newInstance($date, DateTimeZone $tz = null) + { + if ($tz) { + return new DateTime($date, $tz); + } else { + return new DateTime($date); + } + } + + /** + * PHP "magic" function called when object is serialized. + * Sets an internal property with the date string and returns properties + * of class that should be serialized. + * @return array string[] + */ + function __sleep() + { + // We need to use a string without a time zone, due to + // PHP bug: http://bugs.php.net/bug.php?id=40743 + $this->dateString = $this->format('Y-m-d H:i:s'); + $this->tzString = $this->getTimeZone()->getName(); + return array('dateString', 'tzString'); + } + + /** + * PHP "magic" function called when object is restored from serialized state. + * Calls DateTime constructor with previously stored string value of date. + */ + function __wakeup() + { + parent::__construct($this->dateString, new DateTimeZone($this->tzString)); + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/text-base/PropelPDO.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/text-base/PropelPDO.php.svn-base new file mode 100644 index 0000000..b4ea66c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/text-base/PropelPDO.php.svn-base @@ -0,0 +1,268 @@ +. + */ + + +/** + * PDO connection subclass that provides the basic fixes to PDO that are required by Propel. + * + * This class was designed to work around the limitation in PDO where attempting to begin + * a transaction when one has already been begun will trigger a PDOException. Propel + * relies on the ability to create nested transactions, even if the underlying layer + * simply ignores these (because it doesn't support nested transactions). + * + * The changes that this class makes to the underlying API include the addition of the + * getNestedTransactionDepth() and isInTransaction() and the fact that beginTransaction() + * will no longer throw a PDOException (or trigger an error) if a transaction is already + * in-progress. + * + * @author Cameron Brunner + * @author Hans Lellelid + * @author Christian Abegg + * @since 2006-09-22 + * @package propel.util + */ +class PropelPDO extends PDO { + + /** + * Attribute to use to set whether to cache prepared statements. + */ + const PROPEL_ATTR_CACHE_PREPARES = -1; + + /** + * The current transaction depth. + * @var int + */ + protected $nestedTransactionCount = 0; + + /** + * Cache of prepared statements (PDOStatement) keyed by md5 of SQL. + * + * @var array [md5(sql) => PDOStatement] + */ + protected $preparedStatements = array(); + + /** + * Whether to cache prepared statements. + * + * @var boolean + */ + protected $cachePreparedStatements = false; + + /** + * Whether the final commit is possible + * Is false if a nested transaction is rolled back + */ + protected $isUncommitable = false; + + /** + * Gets the current transaction depth. + * @return int + */ + public function getNestedTransactionCount() + { + return $this->nestedTransactionCount; + } + + /** + * Set the current transaction depth. + * @param int $v The new depth. + */ + protected function setNestedTransactionCount($v) + { + $this->nestedTransactionCount = $v; + } + + /** + * Decrements the current transaction depth by one. + */ + protected function decrementNestedTransactionCount() + { + $this->nestedTransactionCount--; + } + + /** + * Increments the current transaction depth by one. + */ + protected function incrementNestedTransactionCount() + { + $this->nestedTransactionCount++; + } + + /** + * Is this PDO connection currently in-transaction? + * This is equivalent to asking whether the current nested transaction count + * is greater than 0. + * @return boolean + */ + public function isInTransaction() + { + return ($this->getNestedTransactionCount() > 0); + } + + /** + * Overrides PDO::beginTransaction() to prevent errors due to already-in-progress transaction. + */ + public function beginTransaction() + { + $return = true; + $opcount = $this->getNestedTransactionCount(); + if ( $opcount === 0 ) { + $return = parent::beginTransaction(); + $this->isUncommitable = false; + } + $this->incrementNestedTransactionCount(); + return $return; + } + + /** + * Overrides PDO::commit() to only commit the transaction if we are in the outermost + * transaction nesting level. + */ + public function commit() + { + $return = true; + $opcount = $this->getNestedTransactionCount(); + if ($opcount > 0) { + if ($opcount === 1) { + if ($this->isUncommitable) { + throw new PropelException('Cannot commit because a nested transaction was rolled back'); + } else { + $return = parent::commit(); + } + } + $this->decrementNestedTransactionCount(); + } + return $return; + } + + /** + * Overrides PDO::rollBack() to only rollback the transaction if we are in the outermost + * transaction nesting level + * @return boolean Whether operation was successful. + */ + public function rollBack() + { + $return = true; + $opcount = $this->getNestedTransactionCount(); + if ($opcount > 0) { + if ($opcount === 1) { + $return = parent::rollBack(); + } else { + $this->isUncommitable = true; + } + $this->decrementNestedTransactionCount(); + } + return $return; + } + + /** + * Rollback the whole transaction, even if this is a nested rollback + * and reset the nested transaction count to 0. + * @return boolean Whether operation was successful. + */ + public function forceRollBack() + { + $return = true; + $opcount = $this->getNestedTransactionCount(); + if ($opcount > 0) { + // If we're in a transaction, always roll it back + // regardless of nesting level. + $return = parent::rollBack(); + + // reset nested transaction count to 0 so that we don't + // try to commit (or rollback) the transaction outside this scope. + $this->nestedTransactionCount = 0; + } + return $return; + } + + /** + * Sets a connection attribute. + * + * This is overridden here to provide support for setting Propel-specific attributes + * too. + * + * @param int $attribute The attribute to set (e.g. PropelPDO::PROPEL_ATTR_CACHE_PREPARES). + * @param mixed $value The attribute value. + */ + public function setAttribute($attribute, $value) + { + switch($attribute) { + case self::PROPEL_ATTR_CACHE_PREPARES: + $this->cachePreparedStatements = $value; + break; + default: + parent::setAttribute($attribute, $value); + } + } + + /** + * Gets a connection attribute. + * + * This is overridden here to provide support for setting Propel-specific attributes + * too. + * + * @param int $attribute The attribute to get (e.g. PropelPDO::PROPEL_ATTR_CACHE_PREPARES). + */ + public function getAttribute($attribute) + { + switch($attribute) { + case self::PROPEL_ATTR_CACHE_PREPARES: + return $this->cachePreparedStatements; + break; + default: + return parent::getAttribute($attribute); + } + } + + /** + * Overrides PDO::prepare() to add query caching support if the + * PropelPDO::PROPEL_ATTR_CACHE_PREPARES was set to true. + * . + * @param string $sql + * @param array + * @return PDOStatement + */ + public function prepare($sql, $driver_options = array()) + { + if ($this->cachePreparedStatements) { + $key = $sql; + if (!isset($this->preparedStatements[$key])) { + $stmt = parent::prepare($sql, $driver_options); + $this->preparedStatements[$key] = $stmt; + return $stmt; + } else { + return $this->preparedStatements[$key]; + } + } else { + return parent::prepare($sql, $driver_options); + } + } + + /** + * Clears any stored prepared statements for this connection. + */ + public function clearStatementCache() + { + $this->preparedStatements = array(); + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/text-base/PropelPager.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/text-base/PropelPager.php.svn-base new file mode 100644 index 0000000..25d08aa --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/.svn/text-base/PropelPager.php.svn-base @@ -0,0 +1,607 @@ +. + */ + +/** + * PropelPager + * + * Example Usage: + * + * require_once 'propel/util/PropelPager.php'; + * require_once 'PEACH/Propel/Poem/poemPeer.php'; + * + * $c = new Criteria(); + * $c->addDescendingOrderByColumn(poemPeer::SID); + * + * // with join + * $pager = new PropelPager($c, 'poemPeer', 'doSelectJoinPoemUsers', 1, 50); + * + * // without Join + * + * $pager = new PropelPager($c, 'poemPeer', 'doSelect', 1, 50); + * + * Some template: + * + *

    + * Total Pages: getTotalPages()?> Total Records: getTotalRecordCount()?> + *

    + * + * + * + * + * + * + * + * + * + * + *
    + * getFirstPage):?> + * | + * + * + * getPrev()):?> + * Previous| + * + * + * getPrevLinks() as $link):?> + * | + * + * getPage()?> + * getNextLinks() as $link):?> + * | + * + * + * getNext()):?> + * Last| + * + * + * getLastPage()):?> + * | + * + *
    + * + * + * + * + * + * + * + * getResult() as $poem):?> + * + * + * + * + * + * + * + *
    TitleAuteurDatecomments
    getTitle()?>getPoemUsers()->getUname()?>getTime()?>getComments()?>
    + * + * + * @author Rob Halff + * @author Niklas Närhinen + * @version $Revision$ + * @copyright Copyright (c) 2004 Rob Halff: LGPL - See LICENCE + * @package propel.util + */ +class PropelPager implements Countable, Iterator { + + private $recordCount; + private $pages; + private $peerClass; + private $peerSelectMethod; + private $peerCountMethod; + private $criteria; + private $countCriteria; + private $page; + private $rs = null; + + //Iterator vars + private $currentKey = 0; + + /** @var int Start row (offset) */ + protected $start = 0; + + /** @var int Max rows to return (0 means all) */ + protected $max = 0; + + /** + * Create a new Propel Pager. + * @param Criteria $c + * @param string $peerClass The name of the static Peer class. + * @param string $peerSelectMethod The name of the static method for selecting content from the Peer class. + * @param int $page The current page (1-based). + * @param int $rowsPerPage The number of rows that should be displayed per page. + */ + public function __construct($c = null, $peerClass = null, $peerSelectMethod = null, $page = 1, $rowsPerPage = 25) + { + if (!isset($c)) { + $c = new Criteria(); + } + $this->setCriteria($c); + $this->setPeerClass($peerClass); + $this->setPeerSelectMethod($peerSelectMethod); + $this->guessPeerCountMethod(); + $this->setPage($page); + $this->setRowsPerPage($rowsPerPage); + } + + /** + * Set the criteria for this pager. + * @param Criteria $c + * @return void + */ + public function setCriteria(Criteria $c) + { + $this->criteria = $c; + } + + /** + * Return the Criteria object for this pager. + * @return Criteria + */ + public function getCriteria() + { + return $this->criteria; + } + + /** + * Set the Peer Classname + * + * @param string $class + * @return void + */ + public function setPeerClass($class) + { + $this->peerClass = $class; + } + + /** + * Return the Peer Classname. + * @return string + */ + public function getPeerClass() + { + return $this->peerClass; + } + + /** + * Set the Peer select method. + * This exists for legacy support, please use setPeerSelectMethod(). + * @param string $method The name of the static method to call on the Peer class. + * @return void + * @see setPeerSelectMethod() + * @deprecated + */ + public function setPeerMethod($method) + { + $this->setPeerSelectMethod($method); + } + + /** + * Return the Peer select method. + * This exists for legacy support, please use getPeerSelectMethod(). + * @return string + * @see getPeerSelectMethod() + * @deprecated + */ + public function getPeerMethod() + { + return $this->getPeerSelectMethod(); + } + + /** + * Set the Peer select method. + * + * @param string $method The name of the static method to call on the Peer class. + * @return void + */ + public function setPeerSelectMethod($method) + { + $this->peerSelectMethod = $method; + } + + /** + * Return the Peer select method. + * @return string + */ + public function getPeerSelectMethod() + { + return $this->peerSelectMethod; + } + + /** + * Sets the Count method. + * This is set based on the Peer method, for example if Peer method is doSelectJoin*() then the + * count method will be doCountJoin*(). + * @param string $method The name of the static method to call on the Peer class. + */ + public function setPeerCountMethod($method) + { + $this->peerCountMethod = $method; + } + + /** + * Return the Peer count method. + */ + public function getPeerCountMethod() + { + return $this->peerCountMethod; + } + + /** + * Guesses the Peer count method based on the select method. + */ + private function guessPeerCountMethod() + { + $selectMethod = $this->getPeerSelectMethod(); + if ($selectMethod == 'doSelect') { + $countMethod = 'doCount'; + } elseif ( ($pos = stripos($selectMethod, 'doSelectJoin')) === 0) { + $countMethod = 'doCount' . substr($selectMethod, strlen('doSelect')); + } else { + // we will fall back to doCount() if we don't understand the join + // method; however, it probably won't be accurate. Maybe triggering an error would + // be appropriate ... + $countMethod = 'doCount'; + } + $this->setPeerCountMethod($countMethod); + } + + /** + * Get the paged resultset + * + * @return mixed $rs + */ + public function getResult() + { + if (!isset($this->rs)) { + $this->doRs(); + } + + return $this->rs; + } + + /** + * Get the paged resultset + * + * Main method which creates a paged result set based on the criteria + * and the requested peer select method. + * + */ + private function doRs() + { + $this->criteria->setOffset($this->start); + $this->criteria->setLimit($this->max); + $this->rs = call_user_func(array($this->getPeerClass(), $this->getPeerSelectMethod()), $this->criteria); + } + + /** + * Get the first page + * + * For now I can only think of returning 1 always. + * It should probably return 0 if there are no pages + * + * @return int 1 + */ + public function getFirstPage() + { + return '1'; + } + + /** + * Convenience method to indicate whether current page is the first page. + * + * @return boolean + */ + public function atFirstPage() + { + return $this->getPage() == $this->getFirstPage(); + } + + /** + * Get last page + * + * @return int $lastPage + */ + public function getLastPage() + { + $totalPages = $this->getTotalPages(); + if ($totalPages == 0) { + return 1; + } else { + return $totalPages; + } + } + + /** + * Convenience method to indicate whether current page is the last page. + * + * @return boolean + */ + public function atLastPage() + { + return $this->getPage() == $this->getLastPage(); + } + + /** + * get total pages + * + * @return int $this->pages + */ + public function getTotalPages() { + if (!isset($this->pages)) { + $recordCount = $this->getTotalRecordCount(); + if ($this->max > 0) { + $this->pages = ceil($recordCount/$this->max); + } else { + $this->pages = 0; + } + } + return $this->pages; + } + + /** + * get an array of previous id's + * + * @param int $range + * @return array $links + */ + public function getPrevLinks($range = 5) + { + $total = $this->getTotalPages(); + $start = $this->getPage() - 1; + $end = $this->getPage() - $range; + $first = $this->getFirstPage(); + $links = array(); + for ($i=$start; $i>$end; $i--) { + if ($i < $first) { + break; + } + $links[] = $i; + } + + return array_reverse($links); + } + + /** + * get an array of next id's + * + * @param int $range + * @return array $links + */ + public function getNextLinks($range = 5) + { + $total = $this->getTotalPages(); + $start = $this->getPage() + 1; + $end = $this->getPage() + $range; + $last = $this->getLastPage(); + $links = array(); + for ($i=$start; $i<$end; $i++) { + if ($i > $last) { + break; + } + $links[] = $i; + } + + return $links; + } + + /** + * Returns whether last page is complete + * + * @return bool Last page complete or not + */ + public function isLastPageComplete() + { + return !($this->getTotalRecordCount() % $this->max); + } + + /** + * get previous id + * + * @return mixed $prev + */ + public function getPrev() { + if ($this->getPage() != $this->getFirstPage()) { + $prev = $this->getPage() - 1; + } else { + $prev = false; + } + return $prev; + } + + /** + * get next id + * + * @return mixed $next + */ + public function getNext() { + if ($this->getPage() != $this->getLastPage()) { + $next = $this->getPage() + 1; + } else { + $next = false; + } + return $next; + } + + /** + * Set the current page number (First page is 1). + * @param int $page + * @return void + */ + public function setPage($page) + { + $this->page = $page; + // (re-)calculate start rec + $this->calculateStart(); + } + + /** + * Get current page. + * @return int + */ + public function getPage() + { + return $this->page; + } + + /** + * Set the number of rows per page. + * @param int $r + */ + public function setRowsPerPage($r) + { + $this->max = $r; + // (re-)calculate start rec + $this->calculateStart(); + } + + /** + * Get number of rows per page. + * @return int + */ + public function getRowsPerPage() + { + return $this->max; + } + + /** + * Calculate startrow / max rows based on current page and rows-per-page. + * @return void + */ + private function calculateStart() + { + $this->start = ( ($this->page - 1) * $this->max ); + } + + /** + * Gets the total number of (un-LIMITed) records. + * + * This method will perform a query that executes un-LIMITed query. + * + * @return int Total number of records - disregarding page, maxrows, etc. + */ + public function getTotalRecordCount() + { + + if (!isset($this->rs)) { + $this->doRs(); + } + + if (empty($this->recordCount)) { + $this->countCriteria = clone $this->criteria; + $this->countCriteria->setLimit(0); + $this->countCriteria->setOffset(0); + + $this->recordCount = call_user_func( + array( + $this->getPeerClass(), + $this->getPeerCountMethod() + ), + $this->countCriteria + ); + + } + + return $this->recordCount; + + } + + /** + * Sets the start row or offset. + * @param int $v + */ + public function setStart($v) + { + $this->start = $v; + } + + /** + * Sets max rows (limit). + * @param int $v + * @return void + */ + public function setMax($v) + { + $this->max = $v; + } + + /** + * Returns the count of the current page's records + * @return int + */ + public function count() + { + return count($this->getResult()); + } + + /** + * Returns the current element of the iterator + * @return mixed + */ + public function current() + { + if (!isset($this->rs)) { + $this->doRs(); + } + return $this->rs[$this->currentKey]; + } + + /** + * Returns the current key of the iterator + * @return int + */ + public function key() + { + return $this->currentKey; + } + + /** + * Advances the iterator to the next element + * @return void + */ + public function next() + { + $this->currentKey++; + } + + /** + * Resets the iterator to the first element + * @return void + */ + public function rewind() + { + $this->currentKey = 0; + } + + /** + * Checks if the current key exists in the container + * @return boolean + */ + public function valid() + { + if (!isset($this->rs)) { + $this->doRs(); + } + return in_array($this->currentKey, array_keys($this->rs)); + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/BasePeer.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/BasePeer.php new file mode 100644 index 0000000..28bf222 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/BasePeer.php @@ -0,0 +1,1064 @@ +. + */ + +/** + * This is a utility class for all generated Peer classes in the system. + * + * Peer classes are responsible for isolating all of the database access + * for a specific business object. They execute all of the SQL + * against the database. Over time this class has grown to include + * utility methods which ease execution of cross-database queries and + * the implementation of concrete Peers. + * + * @author Hans Lellelid (Propel) + * @author Kaspars Jaudzems (Propel) + * @author Heltem (Propel) + * @author Frank Y. Kim (Torque) + * @author John D. McNally (Torque) + * @author Brett McLaughlin (Torque) + * @author Stephen Haberman (Torque) + * @version $Revision: 1608 $ + * @package propel.util + */ +class BasePeer +{ + + /** Array (hash) that contains the cached mapBuilders. */ + private static $mapBuilders = array(); + + /** Array (hash) that contains cached validators */ + private static $validatorMap = array(); + + /** + * phpname type + * e.g. 'AuthorId' + */ + const TYPE_PHPNAME = 'phpName'; + + /** + * studlyphpname type + * e.g. 'authorId' + */ + const TYPE_STUDLYPHPNAME = 'studlyPhpName'; + + /** + * column (peer) name type + * e.g. 'book.AUTHOR_ID' + */ + const TYPE_COLNAME = 'colName'; + + /** + * column fieldname type + * e.g. 'author_id' + */ + const TYPE_FIELDNAME = 'fieldName'; + + /** + * num type + * simply the numerical array index, e.g. 4 + */ + const TYPE_NUM = 'num'; + + static public function getFieldnames ($classname, $type = self::TYPE_PHPNAME) { + + // TODO we should take care of including the peer class here + + $peerclass = 'Base' . $classname . 'Peer'; // TODO is this always true? + $callable = array($peerclass, 'getFieldnames'); + $args = array($type); + + return call_user_func_array($callable, $args); + } + + static public function translateFieldname($classname, $fieldname, $fromType, $toType) { + + // TODO we should take care of including the peer class here + + $peerclass = 'Base' . $classname . 'Peer'; // TODO is this always true? + $callable = array($peerclass, 'translateFieldname'); + $args = array($fieldname, $fromType, $toType); + + return call_user_func_array($callable, $args); + } + + /** + * Method to perform deletes based on values and keys in a + * Criteria. + * + * @param Criteria $criteria The criteria to use. + * @param PropelPDO $con A PropelPDO connection object. + * @return int The number of rows affected by last statement execution. For most + * uses there is only one delete statement executed, so this number + * will correspond to the number of rows affected by the call to this + * method. Note that the return value does require that this information + * is returned (supported) by the PDO driver. + * @throws PropelException + */ + public static function doDelete(Criteria $criteria, PropelPDO $con) + { + $db = Propel::getDB($criteria->getDbName()); + $dbMap = Propel::getDatabaseMap($criteria->getDbName()); + + // Set up a list of required tables (one DELETE statement will + // be executed per table) + + $tables_keys = array(); + foreach ($criteria as $c) { + foreach ($c->getAllTables() as $tableName) { + $tableName2 = $criteria->getTableForAlias($tableName); + if ($tableName2 !== null) { + $tables_keys[$tableName2 . ' ' . $tableName] = true; + } else { + $tables_keys[$tableName] = true; + } + } + } // foreach criteria->keys() + + $affectedRows = 0; // initialize this in case the next loop has no iterations. + + $tables = array_keys($tables_keys); + + foreach ($tables as $tableName) { + + $whereClause = array(); + $selectParams = array(); + foreach ($dbMap->getTable($tableName)->getColumns() as $colMap) { + $key = $tableName . '.' . $colMap->getColumnName(); + if ($criteria->containsKey($key)) { + $sb = ""; + $criteria->getCriterion($key)->appendPsTo($sb, $selectParams); + $whereClause[] = $sb; + } + } + + if (empty($whereClause)) { + throw new PropelException("Cowardly refusing to delete from table $tableName with empty WHERE clause."); + } + + // Execute the statement. + try { + $sql = "DELETE FROM " . $tableName . " WHERE " . implode(" AND ", $whereClause); + $stmt = $con->prepare($sql); + self::populateStmtValues($stmt, $selectParams, $dbMap, $db); + $stmt->execute(); + $affectedRows = $stmt->rowCount(); + } catch (Exception $e) { + Propel::log($e->getMessage(), Propel::LOG_ERR); + throw new PropelException("Unable to execute DELETE statement.",$e); + } + + } // for each table + + return $affectedRows; + } + + /** + * Method to deletes all contents of specified table. + * + * This method is invoked from generated Peer classes like this: + * + * public static function doDeleteAll($con = null) + * { + * if ($con === null) $con = Propel::getConnection(self::DATABASE_NAME); + * BasePeer::doDeleteAll(self::TABLE_NAME, $con); + * } + * + * + * @param string $tableName The name of the table to empty. + * @param PropelPDO $con A PropelPDO connection object. + * @return int The number of rows affected by the statement. Note + * that the return value does require that this information + * is returned (supported) by the Creole db driver. + * @throws PropelException - wrapping SQLException caught from statement execution. + */ + public static function doDeleteAll($tableName, PropelPDO $con) + { + try { + $sql = "DELETE FROM " . $tableName; + $stmt = $con->prepare($sql); + $stmt->execute(); + return $stmt->rowCount(); + } catch (Exception $e) { + Propel::log($e->getMessage(), Propel::LOG_ERR); + throw new PropelException("Unable to perform DELETE ALL operation.", $e); + } + } + + /** + * Method to perform inserts based on values and keys in a + * Criteria. + *

    + * If the primary key is auto incremented the data in Criteria + * will be inserted and the auto increment value will be returned. + *

    + * If the primary key is included in Criteria then that value will + * be used to insert the row. + *

    + * If no primary key is included in Criteria then we will try to + * figure out the primary key from the database map and insert the + * row with the next available id using util.db.IDBroker. + *

    + * If no primary key is defined for the table the values will be + * inserted as specified in Criteria and null will be returned. + * + * @param Criteria $criteria Object containing values to insert. + * @param PropelPDO $con A PropelPDO connection. + * @return mixed The primary key for the new row if (and only if!) the primary key + * is auto-generated. Otherwise will return null. + * @throws PropelException + */ + public static function doInsert(Criteria $criteria, PropelPDO $con) { + + // the primary key + $id = null; + + $db = Propel::getDB($criteria->getDbName()); + + // Get the table name and method for determining the primary + // key value. + $keys = $criteria->keys(); + if (!empty($keys)) { + $tableName = $criteria->getTableName( $keys[0] ); + } else { + throw new PropelException("Database insert attempted without anything specified to insert"); + } + + $dbMap = Propel::getDatabaseMap($criteria->getDbName()); + $tableMap = $dbMap->getTable($tableName); + $keyInfo = $tableMap->getPrimaryKeyMethodInfo(); + $useIdGen = $tableMap->isUseIdGenerator(); + //$keyGen = $con->getIdGenerator(); + + $pk = self::getPrimaryKey($criteria); + + // only get a new key value if you need to + // the reason is that a primary key might be defined + // but you are still going to set its value. for example: + // a join table where both keys are primary and you are + // setting both columns with your own values + + // pk will be null if there is no primary key defined for the table + // we're inserting into. + if ($pk !== null && $useIdGen && !$criteria->keyContainsValue($pk->getFullyQualifiedName()) && $db->isGetIdBeforeInsert()) { + try { + $id = $db->getId($con, $keyInfo); + } catch (Exception $e) { + throw new PropelException("Unable to get sequence id.", $e); + } + $criteria->add($pk->getFullyQualifiedName(), $id); + } + + try { + $adapter = Propel::getDB($criteria->getDBName()); + + $qualifiedCols = $criteria->keys(); // we need table.column cols when populating values + $columns = array(); // but just 'column' cols for the SQL + foreach ($qualifiedCols as $qualifiedCol) { + $columns[] = substr($qualifiedCol, strrpos($qualifiedCol, '.') + 1); + } + + // add identifiers + if ($adapter->useQuoteIdentifier()) { + $columns = array_map(array($adapter, 'quoteIdentifier'), $columns); + } + + $sql = 'INSERT INTO ' . $tableName + . ' (' . implode(',', $columns) . ')' + . ' VALUES ('; + // . substr(str_repeat("?,", count($columns)), 0, -1) . + for($p=1, $cnt=count($columns); $p <= $cnt; $p++) { + $sql .= ':p'.$p; + if ($p !== $cnt) $sql .= ','; + } + $sql .= ')'; + + $stmt = $con->prepare($sql); + self::populateStmtValues($stmt, self::buildParams($qualifiedCols, $criteria), $dbMap, $db); + $stmt->execute(); + + } catch (Exception $e) { + Propel::log($e->getMessage(), Propel::LOG_ERR); + throw new PropelException("Unable to execute INSERT statement.", $e); + } + + // If the primary key column is auto-incremented, get the id now. + if ($pk !== null && $useIdGen && $db->isGetIdAfterInsert()) { + try { + $id = $db->getId($con, $keyInfo); + } catch (Exception $e) { + throw new PropelException("Unable to get autoincrement id.", $e); + } + } + + return $id; + } + + /** + * Method used to update rows in the DB. Rows are selected based + * on selectCriteria and updated using values in updateValues. + *

    + * Use this method for performing an update of the kind: + *

    + * WHERE some_column = some value AND could_have_another_column = + * another value AND so on. + * + * @param $selectCriteria A Criteria object containing values used in where + * clause. + * @param $updateValues A Criteria object containing values used in set + * clause. + * @param PropelPDO $con The PropelPDO connection object to use. + * @return int The number of rows affected by last update statement. For most + * uses there is only one update statement executed, so this number + * will correspond to the number of rows affected by the call to this + * method. Note that the return value does require that this information + * is returned (supported) by the Creole db driver. + * @throws PropelException + */ + public static function doUpdate(Criteria $selectCriteria, Criteria $updateValues, PropelPDO $con) { + + $db = Propel::getDB($selectCriteria->getDbName()); + $dbMap = Propel::getDatabaseMap($selectCriteria->getDbName()); + + // Get list of required tables, containing all columns + $tablesColumns = $selectCriteria->getTablesColumns(); + + // we also need the columns for the update SQL + $updateTablesColumns = $updateValues->getTablesColumns(); + + $affectedRows = 0; // initialize this in case the next loop has no iterations. + + foreach ($tablesColumns as $tableName => $columns) { + + $whereClause = array(); + + $params = array(); + + $stmt = null; + try { + + $sql = "UPDATE " . $tableName . " SET "; + $p = 1; + foreach ($updateTablesColumns[$tableName] as $col) { + $updateColumnName = substr($col, strrpos($col, '.') + 1); + // add identifiers for the actual database? + if ($db->useQuoteIdentifier()) { + $updateColumnName = $db->quoteIdentifier($updateColumnName); + } + if ($updateValues->getComparison($col) != Criteria::CUSTOM_EQUAL) { + $sql .= $updateColumnName . '=:p'.$p++.', '; + } else { + $param = $updateValues->get($col); + $sql .= $updateColumnName . ' = '; + if (is_array($param)) { + if (isset($param['raw'])) { + $raw = $param['raw']; + $rawcvt = ''; + // parse the $params['raw'] for ? chars + for($r=0,$len=strlen($raw); $r < $len; $r++) { + if ($raw{$r} == '?') { + $rawcvt .= ':p'.$p++; + } else { + $rawcvt .= $raw{$r}; + } + } + $sql .= $rawcvt . ', '; + } else { + $sql .= ':p'.$p++.', '; + } + if (isset($param['value'])) { + $updateValues->put($col, $param['value']); + } + } else { + $updateValues->remove($col); + $sql .= $param . ', '; + } + } + } + + $params = self::buildParams($updateTablesColumns[$tableName], $updateValues); + + foreach ($columns as $colName) { + $sb = ""; + $selectCriteria->getCriterion($colName)->appendPsTo($sb, $params); + $whereClause[] = $sb; + } + + $sql = substr($sql, 0, -2) . " WHERE " . implode(" AND ", $whereClause); + + $stmt = $con->prepare($sql); + + // Replace ':p?' with the actual values + self::populateStmtValues($stmt, $params, $dbMap, $db); + + $stmt->execute(); + + $affectedRows = $stmt->rowCount(); + + $stmt = null; // close + + } catch (Exception $e) { + if ($stmt) $stmt = null; // close + Propel::log($e->getMessage(), Propel::LOG_ERR); + throw new PropelException("Unable to execute UPDATE statement.", $e); + } + + } // foreach table in the criteria + + return $affectedRows; + } + + /** + * Executes query build by createSelectSql() and returns the resultset statement. + * + * @param Criteria $criteria A Criteria. + * @param PropelPDO $con A PropelPDO connection to use. + * @return PDOStatement The resultset. + * @throws PropelException + * @see createSelectSql() + */ + public static function doSelect(Criteria $criteria, PropelPDO $con = null) + { + $dbMap = Propel::getDatabaseMap($criteria->getDbName()); + $db = Propel::getDB($criteria->getDbName()); + + if ($con === null) { + $con = Propel::getConnection($criteria->getDbName(), Propel::CONNECTION_READ); + } + + $stmt = null; + + if ($criteria->isUseTransaction()) $con->beginTransaction(); + + try { + + $params = array(); + $sql = self::createSelectSql($criteria, $params); + + $stmt = $con->prepare($sql); + + self::populateStmtValues($stmt, $params, $dbMap, $db); + + $stmt->execute(); + + if ($criteria->isUseTransaction()) $con->commit(); + + } catch (Exception $e) { + if ($stmt) $stmt = null; // close + if ($criteria->isUseTransaction()) $con->rollBack(); + Propel::log($e->getMessage(), Propel::LOG_ERR); + throw new PropelException($e); + } + + return $stmt; + } + + /** + * Executes a COUNT query using either a simple SQL rewrite or, for more complex queries, a + * sub-select of the SQL created by createSelectSql() and returns the statement. + * + * @param Criteria $criteria A Criteria. + * @param PropelPDO $con A PropelPDO connection to use. + * @return PDOStatement The resultset statement. + * @throws PropelException + * @see createSelectSql() + */ + public static function doCount(Criteria $criteria, PropelPDO $con = null) + { + $dbMap = Propel::getDatabaseMap($criteria->getDbName()); + $db = Propel::getDB($criteria->getDbName()); + + if ($con === null) { + $con = Propel::getConnection($criteria->getDbName(), Propel::CONNECTION_READ); + } + + $stmt = null; + + if ($criteria->isUseTransaction()) $con->beginTransaction(); + + $needsComplexCount = ($criteria->getGroupByColumns() || $criteria->getOffset() + || $criteria->getLimit() || $criteria->getHaving() || in_array(Criteria::DISTINCT, $criteria->getSelectModifiers())); + + try { + + $params = array(); + + if ($needsComplexCount) { + if (self::needsSelectAliases($criteria)) { + self::turnSelectColumnsToAliases($criteria); + } + $selectSql = self::createSelectSql($criteria, $params); + $sql = 'SELECT COUNT(*) FROM (' . $selectSql . ') AS propelmatch4cnt'; + } else { + // Replace SELECT columns with COUNT(*) + $criteria->clearSelectColumns()->addSelectColumn('COUNT(*)'); + $sql = self::createSelectSql($criteria, $params); + } + + $stmt = $con->prepare($sql); + self::populateStmtValues($stmt, $params, $dbMap, $db); + $stmt->execute(); + + if ($criteria->isUseTransaction()) $con->commit(); + + } catch (Exception $e) { + if ($stmt) $stmt = null; // close + if ($criteria->isUseTransaction()) $con->rollBack(); + Propel::log($e->getMessage(), Propel::LOG_ERR); + throw new PropelException($e); + } + + return $stmt; + } + + /** + * Populates values in a prepared statement. + * + * This method is designed to work with the createSelectSql() method, which creates + * both the SELECT SQL statement and populates a passed-in array of parameter + * values that should be substituted. + * + * + * $params = array(); + * $sql = BasePeer::createSelectSql($criteria, $params); + * BasePeer::populateStmtValues($stmt, $params, Propel::getDatabaseMap($critera->getDbName()), Propel::getDB($criteria->getDbName())); + * + * + * @param PDOStatement $stmt + * @param array $params array('column' => ..., 'table' => ..., 'value' => ...) + * @param DatabaseMap $dbMap + * @return int The number of params replaced. + * @see createSelectSql() + * @see doSelect() + */ + public static function populateStmtValues(PDOStatement $stmt, array $params, DatabaseMap $dbMap, DBAdapter $db) + { + $i = 1; + foreach ($params as $param) { + $tableName = $param['table']; + $columnName = $param['column']; + $value = $param['value']; + + if ($value === null) { + + $stmt->bindValue(':p'.$i++, null, PDO::PARAM_NULL); + + } elseif (isset($tableName) ) { + + $cMap = $dbMap->getTable($tableName)->getColumn($columnName); + $type = $cMap->getType(); + $pdoType = $cMap->getPdoType(); + + // FIXME - This is a temporary hack to get around apparent bugs w/ PDO+MYSQL + // See http://pecl.php.net/bugs/bug.php?id=9919 + if ($pdoType == PDO::PARAM_BOOL && $db instanceof DBMySQL) { + $value = (int) $value; + $pdoType = PDO::PARAM_INT; + } elseif (is_numeric($value) && $cMap->isEpochTemporal()) { // it's a timestamp that needs to be formatted + if ($type == PropelColumnTypes::TIMESTAMP) { + $value = date($db->getTimestampFormatter(), $value); + } else if ($type == PropelColumnTypes::DATE) { + $value = date($db->getDateFormatter(), $value); + } else if ($type == PropelColumnTypes::TIME) { + $value = date($db->getTimeFormatter(), $value); + } + } elseif ($value instanceof DateTime && $cMap->isTemporal()) { // it's a timestamp that needs to be formatted + if ($type == PropelColumnTypes::TIMESTAMP || $type == PropelColumnTypes::BU_TIMESTAMP) { + $value = $value->format($db->getTimestampFormatter()); + } else if ($type == PropelColumnTypes::DATE || $type == PropelColumnTypes::BU_DATE) { + $value = $value->format($db->getDateFormatter()); + } else if ($type == PropelColumnTypes::TIME) { + $value = $value->format($db->getTimeFormatter()); + } + } elseif (is_resource($value) && $cMap->isLob()) { + // we always need to make sure that the stream is rewound, otherwise nothing will + // get written to database. + rewind($value); + } + + $stmt->bindValue(':p'.$i++, $value, $pdoType); + } else { + $stmt->bindValue(':p'.$i++, $value); + } + } // foreach + } + + /** + * Applies any validators that were defined in the schema to the specified columns. + * + * @param string $dbName The name of the database + * @param string $tableName The name of the table + * @param array $columns Array of column names as key and column values as value. + */ + public static function doValidate($dbName, $tableName, $columns) + { + $dbMap = Propel::getDatabaseMap($dbName); + $tableMap = $dbMap->getTable($tableName); + $failureMap = array(); // map of ValidationFailed objects + foreach ($columns as $colName => $colValue) { + if ($tableMap->containsColumn($colName)) { + $col = $tableMap->getColumn($colName); + foreach ($col->getValidators() as $validatorMap) { + $validator = BasePeer::getValidator($validatorMap->getClass()); + if ($validator && ($col->isNotNull() || $colValue !== null) && $validator->isValid($validatorMap, $colValue) === false) { + if (!isset($failureMap[$colName])) { // for now we do one ValidationFailed per column, not per rule + $failureMap[$colName] = new ValidationFailed($colName, $validatorMap->getMessage(), $validator); + } + } + } + } + } + return (!empty($failureMap) ? $failureMap : true); + } + + /** + * Helper method which returns the primary key contained + * in the given Criteria object. + * + * @param Criteria $criteria A Criteria. + * @return ColumnMap If the Criteria object contains a primary + * key, or null if it doesn't. + * @throws PropelException + */ + private static function getPrimaryKey(Criteria $criteria) + { + // Assume all the keys are for the same table. + $keys = $criteria->keys(); + $key = $keys[0]; + $table = $criteria->getTableName($key); + + $pk = null; + + if (!empty($table)) { + + $dbMap = Propel::getDatabaseMap($criteria->getDbName()); + + if ($dbMap === null) { + throw new PropelException("\$dbMap is null"); + } + + if ($dbMap->getTable($table) === null) { + throw new PropelException("\$dbMap->getTable() is null"); + } + + $columns = $dbMap->getTable($table)->getColumns(); + foreach (array_keys($columns) as $key) { + if ($columns[$key]->isPrimaryKey()) { + $pk = $columns[$key]; + break; + } + } + } + return $pk; + } + + /** + * Checks whether the Criteria needs to use column aliasing + * This is implemented in a service class rather than in Criteria itself + * in order to avoid doing the tests when it's not necessary (e.g. for SELECTs) + */ + public static function needsSelectAliases(Criteria $criteria) + { + $columnNames = array(); + foreach ($criteria->getSelectColumns() as $fullyQualifiedColumnName) { + if ($pos = strrpos($fullyQualifiedColumnName, '.')) { + $columnName = substr($fullyQualifiedColumnName, $pos); + if (isset($columnNames[$columnName])) { + // more than one column with the same name, so aliasing is required + return true; + } + $columnNames[$columnName] = true; + } + } + return false; + } + + /** + * Ensures uniqueness of select column names by turning them all into aliases + * This is necessary for queries on more than one table when the tables share a column name + * @see http://propel.phpdb.org/trac/ticket/795 + * + * @param Criteria $criteria + * + * @return Criteria The input, with Select columns replaced by aliases + */ + public static function turnSelectColumnsToAliases(Criteria $criteria) + { + $selectColumns = $criteria->getSelectColumns(); + // clearSelectColumns also clears the aliases, so get them too + $asColumns = $criteria->getAsColumns(); + $criteria->clearSelectColumns(); + $columnAliases = $asColumns; + // add the select columns back + foreach ($selectColumns as $clause) { + // Generate a unique alias + $baseAlias = preg_replace('/\W/', '_', $clause); + $alias = $baseAlias; + // If it already exists, add a unique suffix + $i = 0; + while (isset($columnAliases[$alias])) { + $i++; + $alias = $baseAlias . '_' . $i; + } + // Add it as an alias + $criteria->addAsColumn($alias, $clause); + $columnAliases[$alias] = $clause; + } + // Add the aliases back, don't modify them + foreach ($asColumns as $name => $clause) { + $criteria->addAsColumn($name, $clause); + } + + return $criteria; + } + + /** + * Method to create an SQL query based on values in a Criteria. + * + * This method creates only prepared statement SQL (using ? where values + * will go). The second parameter ($params) stores the values that need + * to be set before the statement is executed. The reason we do it this way + * is to let the PDO layer handle all escaping & value formatting. + * + * @param Criteria $criteria Criteria for the SELECT query. + * @param array &$params Parameters that are to be replaced in prepared statement. + * @return string + * @throws PropelException Trouble creating the query string. + */ + public static function createSelectSql(Criteria $criteria, &$params) + { + $db = Propel::getDB($criteria->getDbName()); + $dbMap = Propel::getDatabaseMap($criteria->getDbName()); + + // redundant definition $selectModifiers = array(); + $selectClause = array(); + $fromClause = array(); + $joinClause = array(); + $joinTables = array(); + $whereClause = array(); + $orderByClause = array(); + // redundant definition $groupByClause = array(); + + $orderBy = $criteria->getOrderByColumns(); + $groupBy = $criteria->getGroupByColumns(); + $ignoreCase = $criteria->isIgnoreCase(); + $select = $criteria->getSelectColumns(); + $aliases = $criteria->getAsColumns(); + + // simple copy + $selectModifiers = $criteria->getSelectModifiers(); + + // get selected columns + foreach ($select as $columnName) { + + // expect every column to be of "table.column" formation + // it could be a function: e.g. MAX(books.price) + + $tableName = null; + + $selectClause[] = $columnName; // the full column name: e.g. MAX(books.price) + + $parenPos = strrpos($columnName, '('); + $dotPos = strrpos($columnName, '.', ($parenPos !== false ? $parenPos : 0)); + + // [HL] I think we really only want to worry about adding stuff to + // the fromClause if this function has a TABLE.COLUMN in it at all. + // e.g. COUNT(*) should not need this treatment -- or there needs to + // be special treatment for '*' + if ($dotPos !== false) { + + if ($parenPos === false) { // table.column + $tableName = substr($columnName, 0, $dotPos); + } else { // FUNC(table.column) + $tableName = substr($columnName, $parenPos + 1, $dotPos - ($parenPos + 1)); + // functions may contain qualifiers so only take the last + // word as the table name. + // COUNT(DISTINCT books.price) + $lastSpace = strpos($tableName, ' '); + if ($lastSpace !== false) { // COUNT(DISTINCT books.price) + $tableName = substr($tableName, $lastSpace + 1); + } + } + $tableName2 = $criteria->getTableForAlias($tableName); + if ($tableName2 !== null) { + $fromClause[] = $tableName2 . ' ' . $tableName; + } else { + $fromClause[] = $tableName; + } + + } // if $dotPost !== null + } + + // set the aliases + foreach ($aliases as $alias => $col) { + $selectClause[] = $col . " AS " . $alias; + } + + // add the criteria to WHERE clause + // this will also add the table names to the FROM clause if they are not already + // invluded via a LEFT JOIN + foreach ($criteria->keys() as $key) { + + $criterion = $criteria->getCriterion($key); + $someCriteria = $criterion->getAttachedCriterion(); + $someCriteriaLength = count($someCriteria); + $table = null; + for ($i=0; $i < $someCriteriaLength; $i++) { + $tableName = $someCriteria[$i]->getTable(); + + $table = $criteria->getTableForAlias($tableName); + if ($table !== null) { + $fromClause[] = $table . ' ' . $tableName; + } else { + $fromClause[] = $tableName; + $table = $tableName; + } + + $ignoreCase = + (($criteria->isIgnoreCase() + || $someCriteria[$i]->isIgnoreCase()) + && (strpos($dbMap->getTable($table)->getColumn($someCriteria[$i]->getColumn())->getType(), "VARCHAR") !== false) + ); + + $someCriteria[$i]->setIgnoreCase($ignoreCase); + } + + $criterion->setDB($db); + + $sb = ""; + $criterion->appendPsTo($sb, $params); + $whereClause[] = $sb; + } + + // Handle joins + // joins with a null join type will be added to the FROM clause and the condition added to the WHERE clause. + // joins of a specified type: the LEFT side will be added to the fromClause and the RIGHT to the joinClause + foreach ((array) $criteria->getJoins() as $join) { + // The join might have been established using an alias name + $leftTable = $join->getLeftTableName(); + $leftTableAlias = ''; + if ($realTable = $criteria->getTableForAlias($leftTable)) { + $leftTableAlias = " $leftTable"; + $leftTable = $realTable; + } + + $rightTable = $join->getRightTableName(); + $rightTableAlias = ''; + if ($realTable = $criteria->getTableForAlias($rightTable)) { + $rightTableAlias = " $rightTable"; + $rightTable = $realTable; + } + + // determine if casing is relevant. + if ($ignoreCase = $criteria->isIgnoreCase()) { + $leftColType = $dbMap->getTable($leftTable)->getColumn($join->getLeftColumnName())->getType(); + $rightColType = $dbMap->getTable($rightTable)->getColumn($join->getRightColumnName())->getType(); + $ignoreCase = ($leftColType == 'string' || $rightColType == 'string'); + } + + // build the condition + $condition = ''; + foreach ($join->getConditions() as $index => $conditionDesc) + { + if ($ignoreCase) { + $condition .= $db->ignoreCase($conditionDesc['left']) . $conditionDesc['operator'] . $db->ignoreCase($conditionDesc['right']); + } else { + $condition .= implode($conditionDesc); + } + if ($index + 1 < $join->countConditions()) { + $condition .= ' AND '; + } + } + + // add 'em to the queues.. + if ($joinType = $join->getJoinType()) { + // real join + if (!$fromClause) { + $fromClause[] = $leftTable . $leftTableAlias; + } + $joinTables[] = $rightTable . $rightTableAlias; + $joinClause[] = $join->getJoinType() . ' ' . $rightTable . $rightTableAlias . " ON ($condition)"; + } else { + // implicit join, translates to a where + $fromClause[] = $leftTable . $leftTableAlias; + $fromClause[] = $rightTable . $rightTableAlias; + $whereClause[] = $condition; + } + } + + // Unique from clause elements + $fromClause = array_unique($fromClause); + $fromClause = array_diff($fromClause, array('')); + + // tables should not exist in both the from and join clauses + if ($joinTables && $fromClause) { + foreach ($fromClause as $fi => $ftable) { + if (in_array($ftable, $joinTables)) { + unset($fromClause[$fi]); + } + } + } + + // Add the GROUP BY columns + $groupByClause = $groupBy; + + $having = $criteria->getHaving(); + $havingString = null; + if ($having !== null) { + $sb = ""; + $having->appendPsTo($sb, $params); + $havingString = $sb; + } + + if (!empty($orderBy)) { + + foreach ($orderBy as $orderByColumn) { + + // Add function expression as-is. + + if (strpos($orderByColumn, '(') !== false) { + $orderByClause[] = $orderByColumn; + continue; + } + + // Split orderByColumn (i.e. "table.column DESC") + + $dotPos = strrpos($orderByColumn, '.'); + + if ($dotPos !== false) { + $tableName = substr($orderByColumn, 0, $dotPos); + $columnName = substr($orderByColumn, $dotPos+1); + } + else { + $tableName = ''; + $columnName = $orderByColumn; + } + + $spacePos = strpos($columnName, ' '); + + if ($spacePos !== false) { + $direction = substr($columnName, $spacePos); + $columnName = substr($columnName, 0, $spacePos); + } + else { + $direction = ''; + } + + $tableAlias = $tableName; + if ($aliasTableName = $criteria->getTableForAlias($tableName)) { + $tableName = $aliasTableName; + } + + $columnAlias = $columnName; + if ($asColumnName = $criteria->getColumnForAs($columnName)) { + $columnName = $asColumnName; + } + + $column = $tableName ? $dbMap->getTable($tableName)->getColumn($columnName) : null; + + if ($criteria->isIgnoreCase() && $column && $column->isText()) { + $orderByClause[] = $db->ignoreCaseInOrderBy("$tableAlias.$columnAlias") . $direction; + $selectClause[] = $db->ignoreCaseInOrderBy("$tableAlias.$columnAlias"); + } else { + $orderByClause[] = $orderByColumn; + } + } + } + + if (empty($fromClause) && $criteria->getPrimaryTableName()) { + $fromClause[] = $criteria->getPrimaryTableName(); + } + + // from / join tables quoten if it is necessary + if ($db->useQuoteIdentifier()) { + $fromClause = array_map(array($db, 'quoteIdentifierTable'), $fromClause); + $joinClause = $joinClause ? $joinClause : array_map(array($db, 'quoteIdentifierTable'), $joinClause); + } + + // build from-clause + $from = ''; + if (!empty($joinClause) && count($fromClause) > 1) { + $from .= implode(" CROSS JOIN ", $fromClause); + } else { + $from .= implode(", ", $fromClause); + } + + $from .= $joinClause ? ' ' . implode(' ', $joinClause) : ''; + + // Build the SQL from the arrays we compiled + $sql = "SELECT " + .($selectModifiers ? implode(" ", $selectModifiers) . " " : "") + .implode(", ", $selectClause) + ." FROM " . $from + .($whereClause ? " WHERE ".implode(" AND ", $whereClause) : "") + .($groupByClause ? " GROUP BY ".implode(",", $groupByClause) : "") + .($havingString ? " HAVING ".$havingString : "") + .($orderByClause ? " ORDER BY ".implode(",", $orderByClause) : ""); + + // APPLY OFFSET & LIMIT to the query. + if ($criteria->getLimit() || $criteria->getOffset()) { + $db->applyLimit($sql, $criteria->getOffset(), $criteria->getLimit()); + } + + return $sql; + } + + /** + * Builds a params array, like the kind populated by Criterion::appendPsTo(). + * This is useful for building an array even when it is not using the appendPsTo() method. + * @param array $columns + * @param Criteria $values + * @return array params array('column' => ..., 'table' => ..., 'value' => ...) + */ + private static function buildParams($columns, Criteria $values) + { + $params = array(); + foreach ($columns as $key) { + if ($values->containsKey($key)) { + $crit = $values->getCriterion($key); + $params[] = array('column' => $crit->getColumn(), 'table' => $crit->getTable(), 'value' => $crit->getValue()); + } + } + return $params; + } + + /** + * This function searches for the given validator $name under propel/validator/$name.php, + * imports and caches it. + * + * @param string $classname The dot-path name of class (e.g. myapp.propel.MyValidator) + * @return Validator object or null if not able to instantiate validator class (and error will be logged in this case) + */ + public static function getValidator($classname) + { + try { + $v = isset(self::$validatorMap[$classname]) ? self::$validatorMap[$classname] : null; + if ($v === null) { + $cls = Propel::importClass($classname); + $v = new $cls(); + self::$validatorMap[$classname] = $v; + } + return $v; + } catch (Exception $e) { + Propel::log("BasePeer::getValidator(): failed trying to instantiate " . $classname . ": ".$e->getMessage(), Propel::LOG_ERR); + } + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/Criteria.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/Criteria.php new file mode 100644 index 0000000..42f11be --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/Criteria.php @@ -0,0 +1,1754 @@ +. + */ + +/** + * This is a utility class for holding criteria information for a query. + * + * BasePeer constructs SQL statements based on the values in this class. + * + * @author Hans Lellelid (Propel) + * @author Kaspars Jaudzems (Propel) + * @author Frank Y. Kim (Torque) + * @author John D. McNally (Torque) + * @author Brett McLaughlin (Torque) + * @author Eric Dobbs (Torque) + * @author Henning P. Schmiedehausen (Torque) + * @author Sam Joseph (Torque) + * @version $Revision: 1262 $ + * @package propel.util + */ +class Criteria implements IteratorAggregate { + + /** Comparison type. */ + const EQUAL = "="; + + /** Comparison type. */ + const NOT_EQUAL = "<>"; + + /** Comparison type. */ + const ALT_NOT_EQUAL = "!="; + + /** Comparison type. */ + const GREATER_THAN = ">"; + + /** Comparison type. */ + const LESS_THAN = "<"; + + /** Comparison type. */ + const GREATER_EQUAL = ">="; + + /** Comparison type. */ + const LESS_EQUAL = "<="; + + /** Comparison type. */ + const LIKE = " LIKE "; + + /** Comparison type. */ + const NOT_LIKE = " NOT LIKE "; + + /** PostgreSQL comparison type */ + const ILIKE = " ILIKE "; + + /** PostgreSQL comparison type */ + const NOT_ILIKE = " NOT ILIKE "; + + /** Comparison type. */ + const CUSTOM = "CUSTOM"; + + /** Comparison type for update */ + const CUSTOM_EQUAL = "CUSTOM_EQUAL"; + + /** Comparison type. */ + const DISTINCT = "DISTINCT "; + + /** Comparison type. */ + const IN = " IN "; + + /** Comparison type. */ + const NOT_IN = " NOT IN "; + + /** Comparison type. */ + const ALL = "ALL "; + + /** Comparison type. */ + const JOIN = "JOIN"; + + /** Binary math operator: AND */ + const BINARY_AND = "&"; + + /** Binary math operator: OR */ + const BINARY_OR = "|"; + + /** "Order by" qualifier - ascending */ + const ASC = "ASC"; + + /** "Order by" qualifier - descending */ + const DESC = "DESC"; + + /** "IS NULL" null comparison */ + const ISNULL = " IS NULL "; + + /** "IS NOT NULL" null comparison */ + const ISNOTNULL = " IS NOT NULL "; + + /** "CURRENT_DATE" ANSI SQL function */ + const CURRENT_DATE = "CURRENT_DATE"; + + /** "CURRENT_TIME" ANSI SQL function */ + const CURRENT_TIME = "CURRENT_TIME"; + + /** "CURRENT_TIMESTAMP" ANSI SQL function */ + const CURRENT_TIMESTAMP = "CURRENT_TIMESTAMP"; + + /** "LEFT JOIN" SQL statement */ + const LEFT_JOIN = "LEFT JOIN"; + + /** "RIGHT JOIN" SQL statement */ + const RIGHT_JOIN = "RIGHT JOIN"; + + /** "INNER JOIN" SQL statement */ + const INNER_JOIN = "INNER JOIN"; + + private $ignoreCase = false; + private $singleRecord = false; + private $selectModifiers = array(); + private $selectColumns = array(); + private $orderByColumns = array(); + private $groupByColumns = array(); + private $having = null; + private $asColumns = array(); + private $joins = array(); + + /** The name of the database. */ + private $dbName; + + /** + * The primary table for this Criteria. + * Useful in cases where there are no select or where + * columns. + * @var string + */ + private $primaryTableName; + + /** The name of the database as given in the contructor. */ + private $originalDbName; + + /** + * To limit the number of rows to return. 0 means return all + * rows. + */ + private $limit = 0; + + /** To start the results at a row other than the first one. */ + private $offset = 0; + + // flag to note that the criteria involves a blob. + private $blobFlag = null; + + private $aliases = array(); + + private $useTransaction = false; + + /** + * Primary storage of criteria data. + * @var array + */ + private $map = array(); + + /** + * Creates a new instance with the default capacity which corresponds to + * the specified database. + * + * @param dbName The dabase name. + */ + public function __construct($dbName = null) + { + $this->setDbName($dbName); + $this->originalDbName = $dbName; + } + + /** + * Implementing SPL IteratorAggregate interface. This allows + * you to foreach () over a Criteria object. + */ + public function getIterator() + { + return new CriterionIterator($this); + } + + /** + * Get the criteria map. + * @return array + */ + public function getMap() + { + return $this->map; + } + + /** + * Brings this criteria back to its initial state, so that it + * can be reused as if it was new. Except if the criteria has grown in + * capacity, it is left at the current capacity. + * @return void + */ + public function clear() + { + $this->map = array(); + $this->ignoreCase = false; + $this->singleRecord = false; + $this->selectModifiers = array(); + $this->selectColumns = array(); + $this->orderByColumns = array(); + $this->groupByColumns = array(); + $this->having = null; + $this->asColumns = array(); + $this->joins = array(); + $this->dbName = $this->originalDbName; + $this->offset = 0; + $this->limit = -1; + $this->blobFlag = null; + $this->aliases = array(); + $this->useTransaction = false; + } + + /** + * Add an AS clause to the select columns. Usage: + * + * + * Criteria myCrit = new Criteria(); + * myCrit->addAsColumn("alias", "ALIAS(".MyPeer::ID.")"); + * + * + * @param string $name Wanted Name of the column (alias). + * @param string $clause SQL clause to select from the table + * + * If the name already exists, it is replaced by the new clause. + * + * @return Criteria A modified Criteria object. + */ + public function addAsColumn($name, $clause) + { + $this->asColumns[$name] = $clause; + return $this; + } + + /** + * Get the column aliases. + * + * @return array An assoc array which map the column alias names + * to the alias clauses. + */ + public function getAsColumns() + { + return $this->asColumns; + } + + /** + * Returns the column name associated with an alias (AS-column). + * + * @param string $alias + * @return string $string + */ + public function getColumnForAs($as) + { + if (isset($this->asColumns[$as])) { + return $this->asColumns[$as]; + } + } + + /** + * Allows one to specify an alias for a table that can + * be used in various parts of the SQL. + * + * @param string $alias + * @param string $table + * @return void + */ + public function addAlias($alias, $table) + { + $this->aliases[$alias] = $table; + } + + /** + * Returns the table name associated with an alias. + * + * @param string $alias + * @return string $string + */ + public function getTableForAlias($alias) + { + if (isset($this->aliases[$alias])) { + return $this->aliases[$alias]; + } + } + + /** + * Get the keys for the criteria map. + * @return array + */ + public function keys() + { + return array_keys($this->map); + } + + /** + * Does this Criteria object contain the specified key? + * + * @param string $column [table.]column + * @return boolean True if this Criteria object contain the specified key. + */ + public function containsKey($column) + { + // must use array_key_exists() because the key could + // exist but have a NULL value (that'd be valid). + return array_key_exists($column, $this->map); + } + + /** + * Does this Criteria object contain the specified key and does it have a value set for the key + * + * @param string $column [table.]column + * @return boolean True if this Criteria object contain the specified key and a value for that key + */ + public function keyContainsValue($column) + { + // must use array_key_exists() because the key could + // exist but have a NULL value (that'd be valid). + return (array_key_exists($column, $this->map) && ($this->map[$column]->getValue() !== null) ); + } + + /** + * Will force the sql represented by this criteria to be executed within + * a transaction. This is here primarily to support the oid type in + * postgresql. Though it can be used to require any single sql statement + * to use a transaction. + * @return void + */ + public function setUseTransaction($v) + { + $this->useTransaction = (boolean) $v; + } + + /** + * Whether the sql command specified by this criteria must be wrapped + * in a transaction. + * + * @return boolean + */ + public function isUseTransaction() + { + return $this->useTransaction; + } + + /** + * Method to return criteria related to columns in a table. + * + * @param string $column Column name. + * @return Criterion A Criterion or null if $column is invalid. + */ + public function getCriterion($column) + { + if ( isset ( $this->map[$column] ) ) { + return $this->map[$column]; + } + return null; + } + + /** + * Method to return criterion that is not added automatically + * to this Criteria. This can be used to chain the + * Criterions to form a more complex where clause. + * + * @param string $column Full name of column (for example TABLE.COLUMN). + * @param mixed $value + * @param string $comparison + * @return Criterion + */ + public function getNewCriterion($column, $value, $comparison = null) + { + return new Criterion($this, $column, $value, $comparison); + } + + /** + * Method to return a String table name. + * + * @param string $name Name of the key. + * @return string The value of the object at key. + */ + public function getColumnName($name) + { + if (isset($this->map[$name])) { + return $this->map[$name]->getColumn(); + } + return null; + } + + /** + * Shortcut method to get an array of columns indexed by table. + * @return array array(table => array(table.column1, table.column2)) + */ + public function getTablesColumns() + { + $tables = array(); + foreach ( array_keys ( $this->map ) as $key) { + $t = substr ( $key, 0, strrpos ( $key, '.' ) ); + if ( ! isset ( $tables[$t] ) ) { + $tables[$t] = array( $key ); + } else { + $tables[$t][] = $key; + } + } + return $tables; + } + + /** + * Method to return a comparison String. + * + * @param string $key String name of the key. + * @return string A String with the value of the object at key. + */ + public function getComparison($key) + { + if ( isset ( $this->map[$key] ) ) { + return $this->map[$key]->getComparison(); + } + return null; + } + + /** + * Get the Database(Map) name. + * + * @return string A String with the Database(Map) name. + */ + public function getDbName() + { + return $this->dbName; + } + + /** + * Set the DatabaseMap name. If null is supplied, uses value + * provided by Propel::getDefaultDB(). + * + * @param string $dbName The Database (Map) name. + * @return void + */ + public function setDbName($dbName = null) + { + $this->dbName = ($dbName === null ? Propel::getDefaultDB() : $dbName); + } + + /** + * Get the primary table for this Criteria. + * + * This is useful for cases where a Criteria may not contain + * any SELECT columns or WHERE columns. This must be explicitly + * set, of course, in order to be useful. + * + * @return string + */ + public function getPrimaryTableName() + { + return $this->primaryTableName; + } + + /** + * Sets the primary table for this Criteria. + * + * This is useful for cases where a Criteria may not contain + * any SELECT columns or WHERE columns. This must be explicitly + * set, of course, in order to be useful. + * + * @param string $v + */ + public function setPrimaryTableName($tableName) + { + $this->primaryTableName = $tableName; + } + + /** + * Method to return a String table name. + * + * @param string $name The name of the key. + * @return string The value of table for criterion at key. + */ + public function getTableName($name) + { + if (isset($this->map[$name])) { + return $this->map[$name]->getTable(); + } + return null; + } + + /** + * Method to return the value that was added to Criteria. + * + * @param string $name A String with the name of the key. + * @return mixed The value of object at key. + */ + public function getValue($name) + { + if (isset($this->map[$name])) { + return $this->map[$name]->getValue(); + } + return null; + } + + /** + * An alias to getValue() -- exposing a Hashtable-like interface. + * + * @param string $key An Object. + * @return mixed The value within the Criterion (not the Criterion object). + */ + public function get($key) + { + return $this->getValue($key); + } + + /** + * Overrides Hashtable put, so that this object is returned + * instead of the value previously in the Criteria object. + * The reason is so that it more closely matches the behavior + * of the add() methods. If you want to get the previous value + * then you should first Criteria.get() it yourself. Note, if + * you attempt to pass in an Object that is not a String, it will + * throw a NPE. The reason for this is that none of the add() + * methods support adding anything other than a String as a key. + * + * @param string $key + * @param mixed $value + * @return Instance of self. + */ + public function put($key, $value) + { + return $this->add($key, $value); + } + + /** + * Copies all of the mappings from the specified Map to this Criteria + * These mappings will replace any mappings that this Criteria had for any + * of the keys currently in the specified Map. + * + * if the map was another Criteria, its attributes are copied to this + * Criteria, overwriting previous settings. + * + * @param mixed $t Mappings to be stored in this map. + */ + public function putAll($t) + { + + if (is_array($t)) { + + foreach ($t as $key=>$value) { + + if ($value instanceof Criterion) { + + $this->map[$key] = $value; + + } else { + + $this->put($key, $value); + + } + + } + + } elseif ($t instanceof Criteria) { + + $this->joins = $t->joins; + + } + + } + + + /** + * This method adds a new criterion to the list of criterias. + * If a criterion for the requested column already exists, it is + * replaced. If is used as follow: + * + *

    + * + * $crit = new Criteria(); + * $crit->add("column", + * "value" + * "Criteria::GREATER_THAN"); + * + * + * Any comparison can be used. + * + * The name of the table must be used implicitly in the column name, + * so the Column name must be something like 'TABLE.id'. If you + * don't like this, you can use the add(table, column, value) method. + * + * @param string $critOrColumn The column to run the comparison on, or Criterion object. + * @param mixed $value + * @param string $comparison A String. + * + * @return A modified Criteria object. + */ + public function add($p1, $value = null, $comparison = null) + { + if ($p1 instanceof Criterion) { + $this->map[$p1->getTable() . '.' . $p1->getColumn()] = $p1; + } else { + $this->map[$p1] = new Criterion($this, $p1, $value, $comparison); + } + return $this; + } + + /** + * This is the way that you should add a straight (inner) join of two tables. For + * example: + * + *

    + * AND PROJECT.PROJECT_ID=FOO.PROJECT_ID + *

    + * + * left = PROJECT.PROJECT_ID + * right = FOO.PROJECT_ID + * + * @param mixed $left A String with the left side of the join. + * @param mixed $right A String with the right side of the join. + * @param mixed $operator A String with the join operator e.g. LEFT JOIN, ... + * + * @return Criteria A modified Criteria object. + */ + public function addJoin($left, $right, $operator = null) + { + $join = new Join(); + if (!is_array($left)) { + // simple join + $join->addCondition($left, $right); + } else { + // join with multiple conditions + // deprecated: use addMultipleJoin() instead + foreach ($left as $key => $value) + { + $join->addCondition($value, $right[$key]); + } + } + $join->setJoinType($operator); + + return $this->addJoinObject($join); + } + + /** + * Add a join with multiple conditions + * see http://propel.phpdb.org/trac/ticket/167, http://propel.phpdb.org/trac/ticket/606 + * + * Example usage: + * $c->addMultipleJoin(array( + * array(LeftPeer::LEFT_COLUMN, RightPeer::RIGHT_COLUMN), // if no third argument, defaults to Criteria::EQUAL + * array(FoldersPeer::alias( 'fo', FoldersPeer::LFT ), FoldersPeer::alias( 'parent', FoldersPeer::RGT ), Criteria::LESS_EQUAL ) + * ), + * Criteria::LEFT_JOIN + * ); + * + * @see addJoin() + * @param array $conditions An array of conditions, each condition being an array (left, right, operator) + * @param string $joinType A String with the join operator. Defaults to an implicit join. + * + * @return Criteria A modified Criteria object. + */ + public function addMultipleJoin($conditions, $joinType = null) + { + $join = new Join(); + foreach ($conditions as $condition) { + $join->addCondition($condition[0], $condition[1], isset($condition[2]) ? $condition[2] : Criteria::EQUAL); + } + $join->setJoinType($joinType); + + return $this->addJoinObject($join); + } + + /** + * Add a join object to the Criteria + * + * @param Join $join A join object + * + * @return Criteria A modified Criteria object + */ + public function addJoinObject(Join $join) + { + if (!in_array($join, $this->joins)) { // compare equality, NOT identity + $this->joins[] = $join; + } + return $this; + } + + + /** + * Get the array of Joins. + * @return array Join[] + */ + public function getJoins() + { + return $this->joins; + } + + /** + * Adds "ALL" modifier to the SQL statement. + * @return Criteria Modified Criteria object (for fluent API) + */ + public function setAll() + { + $this->selectModifiers[] = self::ALL; + return $this; + } + + /** + * Adds "DISTINCT" modifier to the SQL statement. + * @return Criteria Modified Criteria object (for fluent API) + */ + public function setDistinct() + { + $this->selectModifiers[] = self::DISTINCT; + return $this; + } + + /** + * Sets ignore case. + * + * @param boolean $b True if case should be ignored. + * @return Criteria Modified Criteria object (for fluent API) + */ + public function setIgnoreCase($b) + { + $this->ignoreCase = (boolean) $b; + return $this; + } + + /** + * Is ignore case on or off? + * + * @return boolean True if case is ignored. + */ + public function isIgnoreCase() + { + return $this->ignoreCase; + } + + /** + * Set single record? Set this to true if you expect the query + * to result in only a single result record (the default behaviour is to + * throw a PropelException if multiple records are returned when the query + * is executed). This should be used in situations where returning multiple + * rows would indicate an error of some sort. If your query might return + * multiple records but you are only interested in the first one then you + * should be using setLimit(1). + * + * @param boolean $b Set to TRUE if you expect the query to select just one record. + * @return Criteria Modified Criteria object (for fluent API) + */ + public function setSingleRecord($b) + { + $this->singleRecord = (boolean) $b; + return $this; + } + + /** + * Is single record? + * + * @return boolean True if a single record is being returned. + */ + public function isSingleRecord() + { + return $this->singleRecord; + } + + /** + * Set limit. + * + * @param limit An int with the value for limit. + * @return Criteria Modified Criteria object (for fluent API) + */ + public function setLimit($limit) + { + // TODO: do we enforce int here? 32bit issue if we do + $this->limit = $limit; + return $this; + } + + /** + * Get limit. + * + * @return int An int with the value for limit. + */ + public function getLimit() + { + return $this->limit; + } + + /** + * Set offset. + * + * @param int $offset An int with the value for offset. (Note this values is + * cast to a 32bit integer and may result in truncatation) + * @return Criteria Modified Criteria object (for fluent API) + */ + public function setOffset($offset) + { + $this->offset = (int) $offset; + return $this; + } + + /** + * Get offset. + * + * @return An int with the value for offset. + */ + public function getOffset() + { + return $this->offset; + } + + /** + * Add select column. + * + * @param string $name Name of the select column. + * @return Criteria Modified Criteria object (for fluent API) + */ + public function addSelectColumn($name) + { + $this->selectColumns[] = $name; + return $this; + } + + /** + * Whether this Criteria has any select columns. + * + * This will include columns added with addAsColumn() method. + * + * @return boolean + * @see addAsColumn() + * @see addSelectColumn() + */ + public function hasSelectClause() + { + return (!empty($this->selectColumns) || !empty($this->asColumns)); + } + + /** + * Get select columns. + * + * @return array An array with the name of the select + * columns. + */ + public function getSelectColumns() + { + return $this->selectColumns; + } + + /** + * Clears current select columns. + * + * @return Criteria Modified Criteria object (for fluent API) + */ + public function clearSelectColumns() { + $this->selectColumns = $this->asColumns = array(); + return $this; + } + + /** + * Get select modifiers. + * + * @return An array with the select modifiers. + */ + public function getSelectModifiers() + { + return $this->selectModifiers; + } + + /** + * Add group by column name. + * + * @param string $groupBy The name of the column to group by. + * @return A modified Criteria object. + */ + public function addGroupByColumn($groupBy) + { + $this->groupByColumns[] = $groupBy; + return $this; + } + + /** + * Add order by column name, explicitly specifying ascending. + * + * @param name The name of the column to order by. + * @return A modified Criteria object. + */ + public function addAscendingOrderByColumn($name) + { + $this->orderByColumns[] = $name . ' ' . self::ASC; + return $this; + } + + /** + * Add order by column name, explicitly specifying descending. + * + * @param string $name The name of the column to order by. + * @return Criteria Modified Criteria object (for fluent API) + */ + public function addDescendingOrderByColumn($name) + { + $this->orderByColumns[] = $name . ' ' . self::DESC; + return $this; + } + + /** + * Get order by columns. + * + * @return array An array with the name of the order columns. + */ + public function getOrderByColumns() + { + return $this->orderByColumns; + } + + /** + * Clear the order-by columns. + * + * @return Criteria Modified Criteria object (for fluent API) + */ + public function clearOrderByColumns() + { + $this->orderByColumns = array(); + return $this; + } + + /** + * Clear the group-by columns. + * + * @return Criteria + */ + public function clearGroupByColumns() + { + $this->groupByColumns = array(); + return $this; + } + + /** + * Get group by columns. + * + * @return array + */ + public function getGroupByColumns() + { + return $this->groupByColumns; + } + + /** + * Get Having Criterion. + * + * @return Criterion A Criterion object that is the having clause. + */ + public function getHaving() + { + return $this->having; + } + + /** + * Remove an object from the criteria. + * + * @param string $key A string with the key to be removed. + * @return mixed The removed value. + */ + public function remove($key) + { + if ( isset ( $this->map[$key] ) ) { + $removed = $this->map[$key]; + unset ( $this->map[$key] ); + if ( $removed instanceof Criterion ) { + return $removed->getValue(); + } + return $removed; + } + } + + /** + * Build a string representation of the Criteria. + * + * @return string A String with the representation of the Criteria. + */ + public function toString() + { + + $sb = "Criteria:"; + try { + + $params = array(); + $sb .= "\nSQL (may not be complete): " + . BasePeer::createSelectSql($this, $params); + + $sb .= "\nParams: "; + $paramstr = array(); + foreach ($params as $param) { + $paramstr[] = $param['table'] . '.' . $param['column'] . ' => ' . var_export($param['value'], true); + } + $sb .= implode(", ", $paramstr); + + } catch (Exception $exc) { + $sb .= "(Error: " . $exc->getMessage() . ")"; + } + + return $sb; + } + + /** + * Returns the size (count) of this criteria. + * @return int + */ + public function size() + { + return count($this->map); + } + + /** + * This method checks another Criteria to see if they contain + * the same attributes and hashtable entries. + * @return boolean + */ + public function equals($crit) + { + $isEquiv = false; + if ($crit === null || !($crit instanceof Criteria)) { + $isEquiv = false; + } elseif ($this === $crit) { + $isEquiv = true; + } elseif ($this->size() === $crit->size()) { + + // Important: nested criterion objects are checked + + $criteria = $crit; // alias + if ($this->offset === $criteria->getOffset() + && $this->limit === $criteria->getLimit() + && $this->ignoreCase === $criteria->isIgnoreCase() + && $this->singleRecord === $criteria->isSingleRecord() + && $this->dbName === $criteria->getDbName() + && $this->selectModifiers === $criteria->getSelectModifiers() + && $this->selectColumns === $criteria->getSelectColumns() + && $this->orderByColumns === $criteria->getOrderByColumns() + && $this->groupByColumns === $criteria->getGroupByColumns() + ) + { + $isEquiv = true; + foreach ($criteria->keys() as $key) { + if ($this->containsKey($key)) { + $a = $this->getCriterion($key); + $b = $criteria->getCriterion($key); + if (!$a->equals($b)) { + $isEquiv = false; + break; + } + } else { + $isEquiv = false; + break; + } + } + } + } + return $isEquiv; + } + + /** + * This method adds a prepared Criterion object to the Criteria as a having clause. + * You can get a new, empty Criterion object with the + * getNewCriterion() method. + * + *

    + * + * $crit = new Criteria(); + * $c = $crit->getNewCriterion(BasePeer::ID, 5, Criteria::LESS_THAN); + * $crit->addHaving($c); + * + * + * @param having A Criterion object + * + * @return A modified Criteria object. + */ + public function addHaving(Criterion $having) + { + $this->having = $having; + return $this; + } + + /** + * This method adds a new criterion to the list of criterias. + * If a criterion for the requested column already exists, it is + * "AND"ed to the existing criterion. + * + * addAnd(column, value, comparison) + * + * $crit = $orig_crit->addAnd("column", + * "value" + * "Criterion::GREATER_THAN"); + * + * + * addAnd(column, value) + * + * $crit = $orig_crit->addAnd("column", "value"); + * + * + * addAnd(Criterion) + * + * $crit = new Criteria(); + * $c = $crit->getNewCriterion(BasePeer::ID, 5, Criteria::LESS_THAN); + * $crit->addAnd($c); + * + * + * Any comparison can be used, of course. + * + * + * @return Criteria A modified Criteria object. + */ + public function addAnd($p1, $p2 = null, $p3 = null) + { + if ($p3 !== null) { + // addAnd(column, value, comparison) + $oc = $this->getCriterion($p1); + $nc = new Criterion($this, $p1, $p2, $p3); + if ( $oc === null) { + $this->map[$p1] = $nc; + } else { + $oc->addAnd($nc); + } + } elseif ($p2 !== null) { + // addAnd(column, value) + $this->addAnd($p1, $p2, self::EQUAL); + } elseif ($p1 instanceof Criterion) { + // addAnd(Criterion) + $oc = $this->getCriterion($p1->getTable() . '.' . $p1->getColumn()); + if ($oc === null) { + $this->add($p1); + } else { + $oc->addAnd($p1); + } + } elseif ($p2 === null && $p3 === null) { + // client has not specified $p3 (comparison) + // which means Criteria::EQUAL but has also specified $p2 == null + // which is a valid combination we should handle by creating "IS NULL" + $this->addAnd($p1, $p2, self::EQUAL); + } + return $this; + } + + /** + * This method adds a new criterion to the list of criterias. + * If a criterion for the requested column already exists, it is + * "OR"ed to the existing criterion. + * + * Any comparison can be used. + * + * Supports a number of different signatures: + * + * addOr(column, value, comparison) + * + * $crit = $orig_crit->addOr("column", + * "value" + * "Criterion::GREATER_THAN"); + * + * + * addOr(column, value) + * + * $crit = $orig_crit->addOr("column", "value"); + * + * + * addOr(Criterion) + * + * @return Criteria A modified Criteria object. + */ + public function addOr($p1, $p2 = null, $p3 = null) + { + if ($p3 !== null) { + // addOr(column, value, comparison) + $nc = new Criterion($this, $p1, $p2, $p3); + $oc = $this->getCriterion($p1); + if ($oc === null) { + $this->map[$p1] = $nc; + } else { + $oc->addOr($nc); + } + } elseif ($p2 !== null) { + // addOr(column, value) + $this->addOr($p1, $p2, self::EQUAL); + } elseif ($p1 instanceof Criterion) { + // addOr(Criterion) + $oc = $this->getCriterion($p1->getTable() . '.' . $p1->getColumn()); + if ($oc === null) { + $this->add($p1); + } else { + $oc->addOr($p1); + } + } elseif ($p2 === null && $p3 === null) { + // client has not specified $p3 (comparison) + // which means Criteria::EQUAL but has also specified $p2 == null + // which is a valid combination we should handle by creating "IS NULL" + $this->addOr($p1, $p2, self::EQUAL); + } + + return $this; + } +} + +// -------------------------------------------------------------------- +// Criterion Iterator class -- allows foreach ($criteria as $criterion) +// -------------------------------------------------------------------- + +/** + * Class that implements SPL Iterator interface. This allows foreach () to + * be used w/ Criteria objects. Probably there is no performance advantage + * to doing it this way, but it makes sense -- and simpler code. + * + * @author Hans Lellelid + * @package propel.util + */ +class CriterionIterator implements Iterator { + + private $idx = 0; + private $criteria; + private $criteriaKeys; + private $criteriaSize; + + public function __construct(Criteria $criteria) { + $this->criteria = $criteria; + $this->criteriaKeys = $criteria->keys(); + $this->criteriaSize = count($this->criteriaKeys); + } + + public function rewind() { + $this->idx = 0; + } + + public function valid() { + return $this->idx < $this->criteriaSize; + } + + public function key() { + return $this->criteriaKeys[$this->idx]; + } + + public function current() { + return $this->criteria->getCriterion($this->criteriaKeys[$this->idx]); + } + + public function next() { + $this->idx++; + } + +} + +// -------------------------------------------------------------------- +// Criterion "inner" class +// -------------------------------------------------------------------- + +/** + * This is an "inner" class that describes an object in the criteria. + * + * In Torque this is an inner class of the Criteria class. + * + * @author Hans Lellelid (Propel) + * @package propel.util + */ +class Criterion { + + const UND = " AND "; + const ODER = " OR "; + + /** Value of the CO. */ + private $value; + + /** Comparison value. + * @var SqlEnum + */ + private $comparison; + + /** Table name. */ + private $table; + + /** Real table name */ + private $realtable; + + /** Column name. */ + private $column; + + /** flag to ignore case in comparision */ + private $ignoreStringCase = false; + + /** + * The DBAdaptor which might be used to get db specific + * variations of sql. + */ + private $db; + + /** + * other connected criteria and their conjunctions. + */ + private $clauses = array(); + private $conjunctions = array(); + + /** "Parent" Criteria class */ + private $parent; + + /** + * Create a new instance. + * + * @param Criteria $parent The outer class (this is an "inner" class). + * @param string $column TABLE.COLUMN format. + * @param mixed $value + * @param string $comparison + */ + public function __construct(Criteria $outer, $column, $value, $comparison = null) + { + $this->value = $value; + $dotPos = strrpos($column,'.'); + if ($dotPos === false) { + // no dot => aliased column + $this->table = null; + $this->column = $column; + } else { + $this->table = substr($column, 0, $dotPos); + $this->column = substr($column, $dotPos+1, strlen($column)); + } + $this->comparison = ($comparison === null ? Criteria::EQUAL : $comparison); + $this->init($outer); + } + + /** + * Init some properties with the help of outer class + * @param Criteria $criteria The outer class + */ + public function init(Criteria $criteria) + { + //init $this->db + try { + $db = Propel::getDB($criteria->getDbName()); + $this->setDB($db); + } catch (Exception $e) { + // we are only doing this to allow easier debugging, so + // no need to throw up the exception, just make note of it. + Propel::log("Could not get a DBAdapter, sql may be wrong", Propel::LOG_ERR); + } + + //init $this->realtable + $realtable = $criteria->getTableForAlias($this->table); + if (! strlen ( $realtable ) ) { + $realtable = $this->table; + } + $this->realtable = $realtable; + + } + + /** + * Get the column name. + * + * @return string A String with the column name. + */ + public function getColumn() + { + return $this->column; + } + + /** + * Set the table name. + * + * @param name A String with the table name. + * @return void + */ + public function setTable($name) + { + $this->table = $name; + } + + /** + * Get the table name. + * + * @return string A String with the table name. + */ + public function getTable() + { + return $this->table; + } + + /** + * Get the comparison. + * + * @return string A String with the comparison. + */ + public function getComparison() + { + return $this->comparison; + } + + /** + * Get the value. + * + * @return mixed An Object with the value. + */ + public function getValue() + { + return $this->value; + } + + /** + * Get the value of db. + * The DBAdapter which might be used to get db specific + * variations of sql. + * @return DBAdapter value of db. + */ + public function getDB() + { + return $this->db; + } + + /** + * Set the value of db. + * The DBAdapter might be used to get db specific variations of sql. + * @param DBAdapter $v Value to assign to db. + * @return void + */ + public function setDB(DBAdapter $v) + { + $this->db = $v; + foreach ( $this->clauses as $clause ) { + $clause->setDB($v); + } + } + + /** + * Sets ignore case. + * + * @param boolean $b True if case should be ignored. + * @return Criterion A modified Criterion object. + */ + public function setIgnoreCase($b) + { + $this->ignoreStringCase = (boolean) $b; + return $this; + } + + /** + * Is ignore case on or off? + * + * @return boolean True if case is ignored. + */ + public function isIgnoreCase() + { + return $this->ignoreStringCase; + } + + /** + * Get the list of clauses in this Criterion. + * @return array + */ + private function getClauses() + { + return $this->clauses; + } + + /** + * Get the list of conjunctions in this Criterion + * @return array + */ + public function getConjunctions() + { + return $this->conjunctions; + } + + /** + * Append an AND Criterion onto this Criterion's list. + */ + public function addAnd(Criterion $criterion) + { + $this->clauses[] = $criterion; + $this->conjunctions[] = self::UND; + return $this; + } + + /** + * Append an OR Criterion onto this Criterion's list. + * @return Criterion + */ + public function addOr(Criterion $criterion) + { + $this->clauses[] = $criterion; + $this->conjunctions[] = self::ODER; + return $this; + } + + /** + * Appends a Prepared Statement representation of the Criterion + * onto the buffer. + * + * @param string &$sb The string that will receive the Prepared Statement + * @param array $params A list to which Prepared Statement parameters + * will be appended + * @return void + * @throws PropelException - if the expression builder cannot figure out how to turn a specified + * expression into proper SQL. + */ + public function appendPsTo(&$sb, array &$params) + { + if ($this->column === null) { + return; + } + + $db = $this->getDb(); + $sb .= str_repeat ( '(', count($this->clauses) ); + + if (Criteria::CUSTOM === $this->comparison) { + if ($this->value !== "") { + $sb .= (string) $this->value; + } + } else { + + if ($this->table === null) { + $field = $this->column; + } else { + $field = $this->table . '.' . $this->column; + } + + // Check to see if table is an alias & store real name, if so + // (real table name is needed for the returned $params array) + $realtable = $this->realtable; + + // There are several different types of expressions that need individual handling: + // IN/NOT IN, LIKE/NOT LIKE, and traditional expressions. + + // OPTION 1: table.column IN (?, ?) or table.column NOT IN (?, ?) + if ($this->comparison === Criteria::IN || $this->comparison === Criteria::NOT_IN) { + + $_bindParams = array(); // the param names used in query building + $_idxstart = count($params); + $valuesLength = 0; + foreach ( (array) $this->value as $value ) { + $valuesLength++; // increment this first to correct for wanting bind params to start with :p1 + $params[] = array('table' => $realtable, 'column' => $this->column, 'value' => $value); + $_bindParams[] = ':p'.($_idxstart + $valuesLength); + } + if ( $valuesLength !== 0 ) { + $sb .= $field . $this->comparison . '(' . implode(',', $_bindParams) . ')'; + } else { + $sb .= ($this->comparison === Criteria::IN) ? "1<>1" : "1=1"; + } + unset ( $value, $valuesLength ); + + // OPTION 2: table.column LIKE ? or table.column NOT LIKE ? (or ILIKE for Postgres) + } elseif ($this->comparison === Criteria::LIKE || $this->comparison === Criteria::NOT_LIKE + || $this->comparison === Criteria::ILIKE || $this->comparison === Criteria::NOT_ILIKE) { + // Handle LIKE, NOT LIKE (and related ILIKE, NOT ILIKE for Postgres) + + // If selection is case insensitive use ILIKE for PostgreSQL or SQL + // UPPER() function on column name for other databases. + if ($this->ignoreStringCase) { + if ($db instanceof DBPostgres) { + if ($this->comparison === Criteria::LIKE) { + $this->comparison = Criteria::ILIKE; + } elseif ($this->comparison === Criteria::NOT_LIKE) { + $this->comparison = Criteria::NOT_ILIKE; + } + } else { + $field = $db->ignoreCase($field); + } + } + + $params[] = array('table' => $realtable, 'column' => $this->column, 'value' => $this->value); + + $sb .= $field . $this->comparison; + + // If selection is case insensitive use SQL UPPER() function + // on criteria or, if Postgres we are using ILIKE, so not necessary. + if ($this->ignoreStringCase && !($db instanceof DBPostgres)) { + $sb .= $db->ignoreCase(':p'.count($params)); + } else { + $sb .= ':p'.count($params); + } + + // OPTION 3: table.column = ? or table.column >= ? etc. (traditional expressions, the default) + } else { + + // NULL VALUES need special treatment because the SQL syntax is different + // i.e. table.column IS NULL rather than table.column = null + if ($this->value !== null) { + + // ANSI SQL functions get inserted right into SQL (not escaped, etc.) + if ($this->value === Criteria::CURRENT_DATE || $this->value === Criteria::CURRENT_TIME || $this->value === Criteria::CURRENT_TIMESTAMP) { + $sb .= $field . $this->comparison . $this->value; + } else { + + $params[] = array('table' => $realtable, 'column' => $this->column, 'value' => $this->value); + + // default case, it is a normal col = value expression; value + // will be replaced w/ '?' and will be inserted later using PDO bindValue() + if ($this->ignoreStringCase) { + $sb .= $db->ignoreCase($field) . $this->comparison . $db->ignoreCase(':p'.count($params)); + } else { + $sb .= $field . $this->comparison . ':p'.count($params); + } + + } + } else { + + // value is null, which means it was either not specified or specifically + // set to null. + if ($this->comparison === Criteria::EQUAL || $this->comparison === Criteria::ISNULL) { + $sb .= $field . Criteria::ISNULL; + } elseif ($this->comparison === Criteria::NOT_EQUAL || $this->comparison === Criteria::ISNOTNULL) { + $sb .= $field . Criteria::ISNOTNULL; + } else { + // for now throw an exception, because not sure how to interpret this + throw new PropelException("Could not build SQL for expression: $field " . $this->comparison . " NULL"); + } + + } + + } + } + + foreach ( $this->clauses as $key=>$clause ) { + $sb .= $this->conjunctions[$key]; + $clause->appendPsTo($sb, $params); + $sb .= ')'; + } + } + + /** + * This method checks another Criteria to see if they contain + * the same attributes and hashtable entries. + * @return boolean + */ + public function equals($obj) + { + // TODO: optimize me with early outs + if ($this === $obj) { + return true; + } + + if (($obj === null) || !($obj instanceof Criterion)) { + return false; + } + + $crit = $obj; + + $isEquiv = ( ( ($this->table === null && $crit->getTable() === null) + || ( $this->table !== null && $this->table === $crit->getTable() ) + ) + && $this->column === $crit->getColumn() + && $this->comparison === $crit->getComparison()); + + // check chained criterion + + $clausesLength = count($this->clauses); + $isEquiv &= (count($crit->getClauses()) == $clausesLength); + $critConjunctions = $crit->getConjunctions(); + $critClauses = $crit->getClauses(); + for ($i=0; $i < $clausesLength && $isEquiv; $i++) { + $isEquiv &= ($this->conjunctions[$i] === $critConjunctions[$i]); + $isEquiv &= ($this->clauses[$i] === $critClauses[$i]); + } + + if ($isEquiv) { + $isEquiv &= $this->value === $crit->getValue(); + } + + return $isEquiv; + } + + /** + * Returns a hash code value for the object. + */ + public function hashCode() + { + $h = crc32(serialize($this->value)) ^ crc32($this->comparison); + + if ($this->table !== null) { + $h ^= crc32($this->table); + } + + if ($this->column !== null) { + $h ^= crc32($this->column); + } + + foreach ( $this->clauses as $clause ) { + // TODO: i KNOW there is a php incompatibility with the following line + // but i dont remember what it is, someone care to look it up and + // replace it if it doesnt bother us? + // $clause->appendPsTo($sb='',$params=array()); + $sb = ''; + $params = array(); + $clause->appendPsTo($sb,$params); + $h ^= crc32(serialize(array($sb,$params))); + unset ( $sb, $params ); + } + + return $h; + } + + /** + * Get all tables from nested criterion objects + * @return array + */ + public function getAllTables() + { + $tables = array(); + $this->addCriterionTable($this, $tables); + return $tables; + } + + /** + * method supporting recursion through all criterions to give + * us a string array of tables from each criterion + * @return void + */ + private function addCriterionTable(Criterion $c, array &$s) + { + $s[] = $c->getTable(); + foreach ( $c->getClauses() as $clause ) { + $this->addCriterionTable($clause, $s); + } + } + + /** + * get an array of all criterion attached to this + * recursing through all sub criterion + * @return array Criterion[] + */ + public function getAttachedCriterion() + { + $crits = array(); + $this->traverseCriterion($this, $crits); + return $crits; + } + + /** + * method supporting recursion through all criterions to give + * us an array of them + * @param Criterion $c + * @param array &$a + * @return void + */ + private function traverseCriterion(Criterion $c, array &$a) + { + $a[] = $c; + foreach ( $c->getClauses() as $clause ) { + $this->traverseCriterion($clause, $a); + } + } +} \ No newline at end of file diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/DebugPDO.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/DebugPDO.php new file mode 100644 index 0000000..a546b6c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/DebugPDO.php @@ -0,0 +1,550 @@ +. + */ + +/** + * PDO connection subclass that provides some basic support for query counting and logging. + * + * This class is ONLY intended for development use. This class is also a work in-progress + * and, as such, it should be expected that this class' API may change. + * + * The following runtime configuration items affect the behaviour of this class: + * + * - debugpdo.logging.enabled (default: true) + * Should any logging take place + * + * - debugpdo.logging.innerglue (default: ": ") + * String to use for combining the title of a detail and its value + * + * - debugpdo.logging.outerglue (default: " | ") + * String to use for combining details together on a log line + * + * - debugpdo.logging.realmemoryusage (default: false) + * Parameter to memory_get_usage() and memory_get_peak_usage() calls + * + * - debugpdo.logging.methods (default: DebugPDO::$defaultLogMethods) + * An array of method names ("Class::method") to be included in method call logging + * + * - debugpdo.logging.onlyslow (default: false) + * Suppress logging of non-slow queries. + * + * - debugpdo.logging.details.slow.enabled (default: false) + * Enables flagging of slow method calls + * + * - debugpdo.logging.details.slow.threshold (default: 0.1) + * Method calls taking more seconds than this threshold are considered slow + * + * - debugpdo.logging.details.time.enabled (default: false) + * Enables logging of method execution times + * + * - debugpdo.logging.details.time.precision (default: 3) + * Determines the precision of the execution time logging + * + * - debugpdo.logging.details.time.pad (default: 10) + * How much horizontal space to reserve for the execution time on a log line + * + * - debugpdo.logging.details.mem.enabled (default: false) + * Enables logging of the instantaneous PHP memory consumption + * + * - debugpdo.logging.details.mem.precision (default: 1) + * Determines the precision of the memory consumption logging + * + * - debugpdo.logging.details.mem.pad (default: 9) + * How much horizontal space to reserve for the memory consumption on a log line + * + * - debugpdo.logging.details.memdelta.enabled (default: false) + * Enables logging differences in memory consumption before and after the method call + * + * - debugpdo.logging.details.memdelta.precision (default: 1) + * Determines the precision of the memory difference logging + * + * - debugpdo.logging.details.memdelta.pad (default: 10) + * How much horizontal space to reserve for the memory difference on a log line + * + * - debugpdo.logging.details.mempeak.enabled (default: false) + * Enables logging the peak memory consumption thus far by the currently executing PHP script + * + * - debugpdo.logging.details.mempeak.precision (default: 1) + * Determines the precision of the memory peak logging + * + * - debugpdo.logging.details.mempeak.pad (default: 9) + * How much horizontal space to reserve for the memory peak on a log line + * + * - debugpdo.logging.details.querycount.enabled (default: false) + * Enables logging of the number of queries performed by the DebugPDO instance thus far + * + * - debugpdo.logging.details.querycount.pad (default: 2) + * How much horizontal space to reserve for the query count on a log line + * + * - debugpdo.logging.details.method.enabled (default: false) + * Enables logging of the name of the method call + * + * - debugpdo.logging.details.method.pad (default: 28) + * How much horizontal space to reserve for the method name on a log line + * + * The order in which the logging details are enabled is significant, since it determines the order in + * which they will appear in the log file. + * + * @example // Enable simple query profiling, flagging calls taking over 1.5 seconds as slow: + * $config = Propel::getConfiguration(PropelConfiguration::TYPE_OBJECT); + * $config->setParameter('debugpdo.logging.details.slow.enabled', true); + * $config->setParameter('debugpdo.logging.details.slow.threshold', 1.5); + * $config->setParameter('debugpdo.logging.details.time.enabled', true); + * + * @author Francois Zaninotto + * @author Cameron Brunner + * @author Hans Lellelid + * @author Christian Abegg + * @author Jarno Rantanen + * @since 2006-09-22 + * @package propel.util + */ +class DebugPDO extends PropelPDO +{ + const DEFAULT_SLOW_THRESHOLD = 0.1; + const DEFAULT_ONLYSLOW_ENABLED = false; + + /** + * Count of queries performed. + * + * @var int + */ + protected $queryCount = 0; + + /** + * SQL code of the latest performed query. + * + * @var string + */ + protected $lastExecutedQuery; + + /** + * The statement class to use. + * + * @var string + */ + protected $statementClass = 'DebugPDOStatement'; + + /** + * Configured BasicLogger (or compatible) logger. + * + * @var BasicLogger + */ + protected $logger; + + /** + * The log level to use for logging. + * + * @var int + */ + private $logLevel = Propel::LOG_DEBUG; + + /** + * The default value for runtime config item "debugpdo.logging.methods". + * + * @var array + */ + protected static $defaultLogMethods = array( + 'DebugPDO::exec', + 'DebugPDO::query', + 'DebugPDOStatement::execute', + ); + + /** + * Creates a DebugPDO instance representing a connection to a database. + * + * This method is overridden in order to specify a custom PDOStatement class and to implement logging. + * + * @param string $dsn Connection DSN. + * @param string $username (optional) The user name for the DSN string. + * @param string $password (optional) The password for the DSN string. + * @param array $driver_options (optional) A key=>value array of driver-specific connection options. + * @throws PDOException if there is an error during connection initialization. + */ + public function __construct($dsn, $username = null, $password = null, $driver_options = array()) + { + $debug = $this->getDebugSnapshot(); + + parent::__construct($dsn, $username, $password, $driver_options); + + $this->configureStatementClass($suppress=true); + $this->log('', null, __METHOD__, $debug); + } + + /** + * Configures the PDOStatement class for this connection. + * + * @param boolean $suppressError Whether to suppress an exception if the statement class cannot be set. + * @throws PropelException if the statement class cannot be set (and $suppressError is false). + */ + protected function configureStatementClass($suppressError = false) + { + // extending PDOStatement is not supported with persistent connections + if (!$this->getAttribute(PDO::ATTR_PERSISTENT)) { + $this->setAttribute(PDO::ATTR_STATEMENT_CLASS, array($this->getStatementClass(), array($this))); + } elseif (!$suppressError) { + throw new PropelException('Extending PDOStatement is not supported with persistent connections.'); + } + } + + /** + * Sets the custom classname to use for PDOStatement. + * + * It is assumed that the specified classname has been loaded (or can be loaded + * on-demand with autoload). + * + * @param string $classname Name of the statement class to use. + */ + public function setStatementClass($classname) + { + $this->statementClass = $classname; + $this->configureStatementClass(); + } + + /** + * Gets the custom classname to use for PDOStatement. + * + * @return string + */ + public function getStatementClass() + { + return $this->statementClass; + } + + /** + * Returns the number of queries this DebugPDO instance has performed on the database connection. + * + * When using DebugPDOStatement as the statement class, any queries by DebugPDOStatement instances + * are counted as well. + * + * @return int + * @throws PropelException if persistent connection is used (since unable to override PDOStatement in that case). + */ + public function getQueryCount() + { + // extending PDOStatement is not supported with persistent connections + if ($this->getAttribute(PDO::ATTR_PERSISTENT)) { + throw new PropelException('Extending PDOStatement is not supported with persistent connections. ' . + 'Count would be inaccurate, because we cannot count the PDOStatment::execute() calls. ' . + 'Either don\'t use persistent connections or don\'t call PropelPDO::getQueryCount()'); + } + return $this->queryCount; + } + + /** + * Increments the number of queries performed by this DebugPDO instance. + * + * Returns the original number of queries (ie the value of $this->queryCount before calling this method). + * + * @return int + */ + public function incrementQueryCount() + { + $this->queryCount++; + } + + /** + * Get the SQL code for the latest query executed by Propel + * + * @return string Executable SQL code + */ + public function getLastExecutedQuery() + { + return $this->lastExecutedQuery; + } + + /** + * Set the SQL code for the latest query executed by Propel + * + * @param string $query Executable SQL code + */ + public function setLastExecutedQuery($query) + { + $this->lastExecutedQuery = $query; + } + + /** + * Prepares a statement for execution and returns a statement object. + * + * Overrides PDO::prepare() to add logging and query counting. + * + * @param string $sql This must be a valid SQL statement for the target database server. + * @param array One or more key=>value pairs to set attribute values for the PDOStatement object that this method returns. + * @return PDOStatement + */ + public function prepare($sql, $driver_options = array()) + { + $debug = $this->getDebugSnapshot(); + $return = parent::prepare($sql, $driver_options); + + $this->log($sql, null, __METHOD__, $debug); + + return $return; + } + + /** + * Execute an SQL statement and return the number of affected rows. + * + * Overridden for query counting and logging. + * + * @return int + */ + public function exec($sql) + { + $debug = $this->getDebugSnapshot(); + $return = parent::exec($sql); + + $this->log($sql, null, __METHOD__, $debug); + $this->setLastExecutedQuery($sql); + $this->incrementQueryCount(); + + return $return; + } + + /** + * Executes an SQL statement, returning a result set as a PDOStatement object. Despite its signature here, + * this method takes a variety of parameters. + * + * Overridden for query counting and logging. + * + * @see http://php.net/manual/en/pdo.query.php for a description of the possible parameters. + * @return PDOStatement + */ + public function query() + { + $debug = $this->getDebugSnapshot(); + $args = func_get_args(); + if (version_compare(PHP_VERSION, '5.3', '<')) { + $return = call_user_func_array(array($this, 'parent::query'), $args); + } else { + $return = call_user_func_array('parent::query', $args); + } + + $sql = $args[0]; + $this->log($sql, null, __METHOD__, $debug); + $this->setLastExecutedQuery($sql); + $this->incrementQueryCount(); + + return $return; + } + + /** + * Sets the logging level to use for logging method calls and SQL statements. + * + * @param int $level Value of one of the Propel::LOG_* class constants. + */ + public function setLogLevel($level) + { + $this->logLevel = $level; + } + + /** + * Sets a logger to use. + * + * The logger will be used by this class to log various method calls and their properties. + * + * @param BasicLogger $logger A Logger with an API compatible with BasicLogger (or PEAR Log). + */ + public function setLogger($logger) + { + $this->logger = $logger; + } + + /** + * Logs the method call or SQL using the Propel::log() method or a registered logger class. + * + * @uses self::getLogPrefix() + * @see self::setLogger() + * + * @param string $msg Message to log. + * @param int $level (optional) Log level to use; will use self::setLogLevel() specified level by default. + * @param string $methodName (optional) Name of the method whose execution is being logged. + * @param array $debugSnapshot (optional) Previous return value from self::getDebugSnapshot(). + */ + public function log($msg, $level = null, $methodName = null, array $debugSnapshot = null) + { + // If logging has been specifically disabled, this method won't do anything + if (!$this->getLoggingConfig('enabled', true)) + return; + + // If the method being logged isn't one of the ones to be logged, bail + if (!in_array($methodName, $this->getLoggingConfig('methods', self::$defaultLogMethods))) + return; + + // If a logging level wasn't provided, use the default one + if ($level === null) + $level = $this->logLevel; + + // Determine if this query is slow enough to warrant logging + if ($this->getLoggingConfig("onlyslow", self::DEFAULT_ONLYSLOW_ENABLED)) + { + $now = $this->getDebugSnapshot(); + if ($now['microtime'] - $debugSnapshot['microtime'] < $this->getLoggingConfig("details.slow.threshold", self::DEFAULT_SLOW_THRESHOLD)) return; + } + + // If the necessary additional parameters were given, get the debug log prefix for the log line + if ($methodName && $debugSnapshot) + $msg = $this->getLogPrefix($methodName, $debugSnapshot) . $msg; + + // We won't log empty messages + if (!$msg) + return; + + // Delegate the actual logging forward + if ($this->logger) + $this->logger->log($msg, $level); + else + Propel::log($msg, $level); + } + + /** + * Returns a snapshot of the current values of some functions useful in debugging. + * + * @return array + */ + public function getDebugSnapshot() + { + return array( + 'microtime' => microtime(true), + 'memory_get_usage' => memory_get_usage($this->getLoggingConfig('realmemoryusage', false)), + 'memory_get_peak_usage' => memory_get_peak_usage($this->getLoggingConfig('realmemoryusage', false)), + ); + } + + /** + * Returns a named configuration item from the Propel runtime configuration, from under the + * 'debugpdo.logging' prefix. If such a configuration setting hasn't been set, the given default + * value will be returned. + * + * @param string $key Key for which to return the value. + * @param mixed $defaultValue Default value to apply if config item hasn't been set. + * @return mixed + */ + protected function getLoggingConfig($key, $defaultValue) + { + return Propel::getConfiguration(PropelConfiguration::TYPE_OBJECT)->getParameter("debugpdo.logging.$key", $defaultValue); + } + + /** + * Returns a prefix that may be prepended to a log line, containing debug information according + * to the current configuration. + * + * Uses a given $debugSnapshot to calculate how much time has passed since the call to self::getDebugSnapshot(), + * how much the memory consumption by PHP has changed etc. + * + * @see self::getDebugSnapshot() + * + * @param string $methodName Name of the method whose execution is being logged. + * @param array $debugSnapshot A previous return value from self::getDebugSnapshot(). + * @return string + */ + protected function getLogPrefix($methodName, $debugSnapshot) + { + $prefix = ''; + $now = $this->getDebugSnapshot(); + $logDetails = array_keys($this->getLoggingConfig('details', array())); + $innerGlue = $this->getLoggingConfig('innerglue', ': '); + $outerGlue = $this->getLoggingConfig('outerglue', ' | '); + + // Iterate through each detail that has been configured to be enabled + foreach ($logDetails as $detailName) { + + if (!$this->getLoggingConfig("details.$detailName.enabled", false)) + continue; + + switch ($detailName) { + + case 'slow'; + $value = $now['microtime'] - $debugSnapshot['microtime'] >= $this->getLoggingConfig("details.$detailName.threshold", self::DEFAULT_SLOW_THRESHOLD) ? 'YES' : ' NO'; + break; + + case 'time': + $value = number_format($now['microtime'] - $debugSnapshot['microtime'], $this->getLoggingConfig("details.$detailName.precision", 3)) . ' sec'; + $value = str_pad($value, $this->getLoggingConfig("details.$detailName.pad", 10), ' ', STR_PAD_LEFT); + break; + + case 'mem': + $value = self::getReadableBytes($now['memory_get_usage'], $this->getLoggingConfig("details.$detailName.precision", 1)); + $value = str_pad($value, $this->getLoggingConfig("details.$detailName.pad", 9), ' ', STR_PAD_LEFT); + break; + + case 'memdelta': + $value = $now['memory_get_usage'] - $debugSnapshot['memory_get_usage']; + $value = ($value > 0 ? '+' : '') . self::getReadableBytes($value, $this->getLoggingConfig("details.$detailName.precision", 1)); + $value = str_pad($value, $this->getLoggingConfig("details.$detailName.pad", 10), ' ', STR_PAD_LEFT); + break; + + case 'mempeak': + $value = self::getReadableBytes($now['memory_get_peak_usage'], $this->getLoggingConfig("details.$detailName.precision", 1)); + $value = str_pad($value, $this->getLoggingConfig("details.$detailName.pad", 9), ' ', STR_PAD_LEFT); + break; + + case 'querycount': + $value = $this->getQueryCount(); + $value = str_pad($value, $this->getLoggingConfig("details.$detailName.pad", 2), ' ', STR_PAD_LEFT); + break; + + case 'method': + $value = $methodName; + $value = str_pad($value, $this->getLoggingConfig("details.$detailName.pad", 28), ' ', STR_PAD_RIGHT); + break; + + default: + $value = 'n/a'; + break; + + } + + $prefix .= $detailName . $innerGlue . $value . $outerGlue; + + } + + return $prefix; + } + + /** + * Returns a human-readable representation of the given byte count. + * + * @param int $bytes Byte count to convert. + * @param int $precision How many decimals to include. + * @return string + */ + protected function getReadableBytes($bytes, $precision) + { + $suffix = array('B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'); + $total = count($suffix); + + for ($i = 0; $bytes > 1024 && $i < $total; $i++) + $bytes /= 1024; + + return number_format($bytes, $precision) . ' ' . $suffix[$i]; + } + + /** + * If so configured, makes an entry to the log of the state of this DebugPDO instance just prior to its destruction. + * + * @see self::log() + */ + public function __destruct() + { + $this->log('', null, __METHOD__, $this->getDebugSnapshot()); + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/DebugPDOStatement.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/DebugPDOStatement.php new file mode 100644 index 0000000..a1452c5 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/DebugPDOStatement.php @@ -0,0 +1,134 @@ +. + */ + +/** + * PDOStatement that provides some enhanced functionality needed by Propel. + * + * Simply adds the ability to count the number of queries executed and log the queries/method calls. + * + * @author Oliver Schonrock + * @author Jarno Rantanen + * @since 2007-07-12 + * @package propel.util + */ +class DebugPDOStatement extends PDOStatement +{ + + /** + * The PDO connection from which this instance was created. + * + * @var DebugPDO + */ + protected $pdo; + + /** + * Hashmap for resolving the PDO::PARAM_* class constants to their human-readable names. + * + * This is only used in logging the binding of variables. + * + * @see self::bindValue() + * @var array + */ + protected static $typeMap = array( + PDO::PARAM_BOOL => "PDO::PARAM_BOOL", + PDO::PARAM_INT => "PDO::PARAM_INT", + PDO::PARAM_STR => "PDO::PARAM_STR", + PDO::PARAM_LOB => "PDO::PARAM_LOB", + PDO::PARAM_NULL => "PDO::PARAM_NULL", + ); + + /** + * @var array The values that have been bound + */ + protected $boundValues = array(); + + /** + * Construct a new statement class with reference to main DebugPDO object from + * which this instance was created. + * + * @param DebugPDO $pdo Reference to the parent PDO instance. + */ + protected function __construct(DebugPDO $pdo) + { + $this->pdo = $pdo; + } + + public function getExecutedQueryString() + { + $sql = $this->queryString; + + $matches = array(); + if (preg_match_all('/(:p[0-9]+\b)/', $sql, $matches)) { + $size = count($matches[1]); + for ($i = $size-1; $i >= 0; $i--) { + $pos = $matches[1][$i]; + $sql = str_replace($pos, $this->boundValues[$pos], $sql); + } + } + + return $sql; + } + + /** + * Executes a prepared statement. Returns a boolean value indicating success. + * + * Overridden for query counting and logging. + * + * @return bool + */ + public function execute($input_parameters = null) + { + $debug = $this->pdo->getDebugSnapshot(); + $return = parent::execute($input_parameters); + + $sql = $this->getExecutedQueryString(); + $this->pdo->log($sql, null, __METHOD__, $debug); + $this->pdo->setLastExecutedQuery($sql); + $this->pdo->incrementQueryCount(); + + return $return; + } + + /** + * Binds a value to a corresponding named or question mark placeholder in the SQL statement + * that was use to prepare the statement. Returns a boolean value indicating success. + * + * @param int $pos Parameter identifier (for determining what to replace in the query). + * @param mixed $value The value to bind to the parameter. + * @param int $type Explicit data type for the parameter using the PDO::PARAM_* constants. Defaults to PDO::PARAM_STR. + * @return boolean + */ + public function bindValue($pos, $value, $type = PDO::PARAM_STR) + { + $debug = $this->pdo->getDebugSnapshot(); + $typestr = isset(self::$typeMap[$type]) ? self::$typeMap[$type] : '(default)'; + $return = parent::bindValue($pos, $value, $type); + $valuestr = $type == PDO::PARAM_LOB ? '[LOB value]' : var_export($value, true); + $msg = "Binding $valuestr at position $pos w/ PDO type $typestr"; + + $this->boundValues[$pos] = $valuestr; + + $this->pdo->log($msg, null, __METHOD__, $debug); + + return $return; + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/Join.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/Join.php new file mode 100644 index 0000000..448859e --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/Join.php @@ -0,0 +1,251 @@ +. + */ + +/** + * Data object to describe a join between two tables, for example + *

    + * table_a LEFT JOIN table_b ON table_a.id = table_b.a_id
    + * 
    + * + * @author Francois Zaninotto (Propel) + * @author Hans Lellelid (Propel) + * @author Kaspars Jaudzems (Propel) + * @author Frank Y. Kim (Torque) + * @author John D. McNally (Torque) + * @author Brett McLaughlin (Torque) + * @author Eric Dobbs (Torque) + * @author Henning P. Schmiedehausen (Torque) + * @author Sam Joseph (Torque) + * @package propel.util + */ +class Join +{ + // default comparison type + const EQUAL = "="; + + // the left parts of the join condition + protected $left = array(); + + // the right parts of the join condition + protected $right = array(); + + // the comparison operators for each pair of columns in the join condition + protected $operator = array(); + + // the type of the join (LEFT JOIN, ...), or null for an implicit join + protected $joinType = null; + + // the number of conditions in the join + protected $count = 0; + + /** + * Constructor + * Use it preferably with no arguments, and then use addCondition() and setJoinType() + * Syntax with arguments used mainly for backwards compatibility + * + * @param string $leftColumn The left column of the join condition + * (may contain an alias name) + * @param string $rightColumn The right column of the join condition + * (may contain an alias name) + * @param string $joinType The type of the join. Valid join types are null (implicit join), + * Criteria::LEFT_JOIN, Criteria::RIGHT_JOIN, and Criteria::INNER_JOIN + */ + public function __construct($leftColumn = null, $rightColumn = null, $joinType = null) + { + if(!is_null($leftColumn)) { + if (!is_array($leftColumn)) { + // simple join + $this->addCondition($leftColumn, $rightColumn); + } else { + // join with multiple conditions + if (count($leftColumn) != count($rightColumn) ) { + throw new PropelException("Unable to create join because the left column count isn't equal to the right column count"); + } + foreach ($leftColumn as $key => $value) + { + $this->addCondition($value, $rightColumn[$key]); + } + } + $this->setJoinType($joinType); + } + } + + /** + * Join condition definition + * + * @param string $left The left column of the join condition + * (may contain an alias name) + * @param string $right The right column of the join condition + * (may contain an alias name) + * @param string $joinType The type of the join. Valid join types are null (implicit join), + * Criteria::LEFT_JOIN, Criteria::RIGHT_JOIN, and Criteria::INNER_JOIN + */ + public function addCondition($left, $right, $operator = self::EQUAL) + { + $this->left[] = $left; + $this->right[] = $right; + $this->operator[] = $operator; + $this->count++; + } + + /** + * Retrieve the number of conditions in the join + * + * @return integer The number of conditions in the join + */ + public function countConditions() + { + return $this->count; + } + + /** + * Return an array of the join conditions + * + * @return array An array of arrays representing (left, comparison, right) for each condition + */ + public function getConditions() + { + $conditions = array(); + for ($i=0; $i < $this->count; $i++) { + $conditions[] = array( + 'left' => $this->getLeftColumn($i), + 'operator' => $this->getOperator($i), + 'right' => $this->getRightColumn($i) + ); + } + return $conditions; + } + + /** + * @return the comparison operator for the join condition + */ + public function getOperator($index = 0) + { + return $this->operator[$index]; + } + + public function getOperators() + { + return $this->operator; + } + + /** + * Set the join type + * + * @param string $joinType The type of the join. Valid join types are + * null (adding the join condition to the where clause), + * Criteria::LEFT_JOIN(), Criteria::RIGHT_JOIN(), and Criteria::INNER_JOIN() + */ + public function setJoinType($joinType = null) + { + $this->joinType = $joinType; + } + + /** + * Get the join type + * + * @return string The type of the join, i.e. Criteria::LEFT_JOIN(), ..., + * or null for adding the join condition to the where Clause + */ + public function getJoinType() + { + return $this->joinType; + } + + /** + * @return the left column of the join condition + */ + public function getLeftColumn($index = 0) + { + return $this->left[$index]; + } + + /** + * @return all right columns of the join condition + */ + public function getLeftColumns() + { + return $this->left; + } + + + public function getLeftColumnName($index = 0) + { + return substr($this->left[$index], strrpos($this->left[$index], '.') + 1); + } + + public function getLeftTableName($index = 0) + { + return substr($this->left[$index], 0, strrpos($this->left[$index], '.')); + } + + /** + * @return the right column of the join condition + */ + public function getRightColumn($index = 0) + { + return $this->right[$index]; + } + + /** + * @return all right columns of the join condition + */ + public function getRightColumns() + { + return $this->right; + } + + public function getRightColumnName($index = 0) + { + return substr($this->right[$index], strrpos($this->right[$index], '.') + 1); + } + + public function getRightTableName($index = 0) + { + return substr($this->right[$index], 0, strrpos($this->right[$index], '.')); + } + + /** + * returns a String representation of the class, + * mainly for debugging purposes + * + * @return string A String representation of the class + */ + public function toString() + { + $result = ''; + if ($this->joinType !== null) + { + $result .= $this->joinType . ' : '; + } + foreach ($$this->getConditions() as $index => $condition) + { + $result .= implode($condition); + if ($index + 1 < $this->count) { + $result .= ' AND '; + } + } + $result .= '(ignoreCase not considered)'; + + return $result; + } +} + \ No newline at end of file diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/NodePeer.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/NodePeer.php new file mode 100644 index 0000000..e70c0ff --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/NodePeer.php @@ -0,0 +1,379 @@ +. + */ + +/** + * This is a utility interface for all generated NodePeer classes in the system. + * + * @author Heltem (Propel) + * @version $Revision: 1262 $ + * @package propel.util + */ +interface NodePeer { + /** + * Creates the supplied node as the root node. + * + * @param object $node Propel object for model + * @return object Inserted propel object for model + */ + public static function createRoot(NodeObject $node); + + /** + * Returns the root node for a given scope id + * + * @param int $scopeId Scope id to determine which root node to return + * @param PropelPDO $con Connection to use. + * @return object Propel object for root node + */ + public static function retrieveRoot($scopeId = 1, PropelPDO $con = null); + + /** + * Inserts $child as first child of destination node $parent + * + * @param object $child Propel object for child node + * @param object $parent Propel object for parent node + * @param PropelPDO $con Connection to use. + * @return void + */ + public static function insertAsFirstChildOf(NodeObject $child, NodeObject $parent, PropelPDO $con = null); + + /** + * Inserts $child as last child of destination node $parent + * + * @param object $child Propel object for child node + * @param object $parent Propel object for parent node + * @param PropelPDO $con Connection to use. + * @return void + */ + public static function insertAsLastChildOf(NodeObject $child, NodeObject $parent, PropelPDO $con = null); + + /** + * Inserts $sibling as previous sibling to destination node $node + * + * @param object $node Propel object for destination node + * @param object $sibling Propel object for source node + * @param PropelPDO $con Connection to use. + * @return void + */ + public static function insertAsPrevSiblingOf(NodeObject $node, NodeObject $sibling, PropelPDO $con = null); + + /** + * Inserts $sibling as next sibling to destination node $node + * + * @param object $node Propel object for destination node + * @param object $sibling Propel object for source node + * @param PropelPDO $con Connection to use. + * @return void + */ + public static function insertAsNextSiblingOf(NodeObject $node, NodeObject $sibling, PropelPDO $con = null); + + /** + * Inserts $parent as parent of given $node. + * + * @param object $parent Propel object for given parent node + * @param object $node Propel object for given destination node + * @param PropelPDO $con Connection to use. + * @return void + * @throws Exception When trying to insert node as parent of a root node + */ + public static function insertAsParentOf(NodeObject $parent, NodeObject $node, PropelPDO $con = null); + + /** + * Inserts $node as root node + * + * @param object $node Propel object as root node + * @param PropelPDO $con Connection to use. + * @return void + */ + public static function insertRoot(NodeObject $node, PropelPDO $con = null); + + /** + * Delete root node + * + * @param int $scopeId Scope id to determine which root node to delete + * @param PropelPDO $con Connection to use. + * @return boolean Deletion status + */ + public static function deleteRoot($scopeId = 1, PropelPDO $con = null); + + /** + * Delete $dest node + * + * @param object $dest Propel object node to delete + * @param PropelPDO $con Connection to use. + * @return boolean Deletion status + */ + public static function deleteNode(NodeObject $dest, PropelPDO $con = null); + + /** + * Moves $child to be first child of $parent + * + * @param object $parent Propel object for parent node + * @param object $child Propel object for child node + * @param PropelPDO $con Connection to use. + * @return void + */ + public static function moveToFirstChildOf(NodeObject $parent, NodeObject $child, PropelPDO $con = null); + + /** + * Moves $node to be last child of $dest + * + * @param object $dest Propel object for destination node + * @param object $node Propel object for source node + * @param PropelPDO $con Connection to use. + * @return void + */ + public static function moveToLastChildOf(NodeObject $dest, NodeObject $node, PropelPDO $con = null); + + /** + * Moves $node to be prev sibling to $dest + * + * @param object $dest Propel object for destination node + * @param object $node Propel object for source node + * @param PropelPDO $con Connection to use. + * @return void + */ + public static function moveToPrevSiblingOf(NodeObject $dest, NodeObject $node, PropelPDO $con = null); + + /** + * Moves $node to be next sibling to $dest + * + * @param object $dest Propel object for destination node + * @param object $node Propel object for source node + * @param PropelPDO $con Connection to use. + * @return void + */ + public static function moveToNextSiblingOf(NodeObject $dest, NodeObject $node, PropelPDO $con = null); + + /** + * Gets first child for the given node if it exists + * + * @param object $node Propel object for src node + * @param PropelPDO $con Connection to use. + * @return mixed Propel object if exists else false + */ + public static function retrieveFirstChild(NodeObject $node, PropelPDO $con = null); + + /** + * Gets last child for the given node if it exists + * + * @param object $node Propel object for src node + * @param PropelPDO $con Connection to use. + * @return mixed Propel object if exists else false + */ + public static function retrieveLastChild(NodeObject $node, PropelPDO $con = null); + + /** + * Gets prev sibling for the given node if it exists + * + * @param object $node Propel object for src node + * @param PropelPDO $con Connection to use. + * @return mixed Propel object if exists else false + */ + public static function retrievePrevSibling(NodeObject $node, PropelPDO $con = null); + + /** + * Gets next sibling for the given node if it exists + * + * @param object $node Propel object for src node + * @param PropelPDO $con Connection to use. + * @return mixed Propel object if exists else false + */ + public static function retrieveNextSibling(NodeObject $node, PropelPDO $con = null); + + /** + * Retrieves the entire tree from root + * + * @param int $scopeId Scope id to determine which scope tree to return + * @param PropelPDO $con Connection to use. + */ + public static function retrieveTree($scopeId = 1, PropelPDO $con = null); + + /** + * Retrieves the entire tree from parent $node + * + * @param PropelPDO $con Connection to use. + */ + public static function retrieveBranch(NodeObject $node, PropelPDO $con = null); + + /** + * Gets direct children for the node + * + * @param object $node Propel object for parent node + * @param PropelPDO $con Connection to use. + */ + public static function retrieveChildren(NodeObject $node, PropelPDO $con = null); + + /** + * Gets all descendants for the node + * + * @param object $node Propel object for parent node + * @param PropelPDO $con Connection to use. + */ + public static function retrieveDescendants(NodeObject $node, PropelPDO $con = null); + + /** + * Gets all siblings for the node + * + * @param object $node Propel object for src node + * @param PropelPDO $con Connection to use. + */ + public static function retrieveSiblings(NodeObject $node, PropelPDO $con = null); + + /** + * Gets ancestor for the given node if it exists + * + * @param object $node Propel object for src node + * @param PropelPDO $con Connection to use. + * @return mixed Propel object if exists else false + */ + public static function retrieveParent(NodeObject $node, PropelPDO $con = null); + + /** + * Gets level for the given node + * + * @param object $node Propel object for src node + * @param PropelPDO $con Connection to use. + * @return int Level for the given node + */ + public static function getLevel(NodeObject $node, PropelPDO $con = null); + + /** + * Gets number of direct children for given node + * + * @param object $node Propel object for src node + * @param PropelPDO $con Connection to use. + * @return int Level for the given node + */ + public static function getNumberOfChildren(NodeObject $node, PropelPDO $con = null); + + /** + * Gets number of descendants for given node + * + * @param object $node Propel object for src node + * @param PropelPDO $con Connection to use. + * @return int Level for the given node + */ + public static function getNumberOfDescendants(NodeObject $node, PropelPDO $con = null); + + /** + * Returns path to a specific node as an array, useful to create breadcrumbs + * + * @param object $node Propel object of node to create path to + * @param PropelPDO $con Connection to use. + * @return array Array in order of heirarchy + */ + public static function getPath(NodeObject $node, PropelPDO $con = null); + + /** + * Tests if node is valid + * + * @param object $node Propel object for src node + * @return bool + */ + public static function isValid(NodeObject $node = null); + + /** + * Tests if node is a root + * + * @param object $node Propel object for src node + * @return bool + */ + public static function isRoot(NodeObject $node); + + /** + * Tests if node is a leaf + * + * @param object $node Propel object for src node + * @return bool + */ + public static function isLeaf(NodeObject $node); + + /** + * Tests if $child is a child of $parent + * + * @param object $child Propel object for node + * @param object $parent Propel object for node + * @return bool + */ + public static function isChildOf(NodeObject $child, NodeObject $parent); + + /** + * Tests if $node1 is equal to $node2 + * + * @param object $node1 Propel object for node + * @param object $node2 Propel object for node + * @return bool + */ + public static function isEqualTo(NodeObject $node1, NodeObject $node2); + + /** + * Tests if $node has an ancestor + * + * @param object $node Propel object for node + * @param PropelPDO $con Connection to use. + * @return bool + */ + public static function hasParent(NodeObject $node, PropelPDO $con = null); + + /** + * Tests if $node has prev sibling + * + * @param object $node Propel object for node + * @param PropelPDO $con Connection to use. + * @return bool + */ + public static function hasPrevSibling(NodeObject $node, PropelPDO $con = null); + + /** + * Tests if $node has next sibling + * + * @param object $node Propel object for node + * @param PropelPDO $con Connection to use. + * @return bool + */ + public static function hasNextSibling(NodeObject $node, PropelPDO $con = null); + + /** + * Tests if $node has children + * + * @param object $node Propel object for node + * @return bool + */ + public static function hasChildren(NodeObject $node); + + /** + * Deletes $node and all of its descendants + * + * @param object $node Propel object for source node + * @param PropelPDO $con Connection to use. + */ + public static function deleteDescendants(NodeObject $node, PropelPDO $con = null); + + /** + * Returns a node given its primary key or the node itself + * + * @param int/object $node Primary key/instance of required node + * @param PropelPDO $con Connection to use. + * @return object Propel object for model + */ + public static function getNode($node, PropelPDO $con = null); + +} // NodePeer diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/PropelColumnTypes.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/PropelColumnTypes.php new file mode 100644 index 0000000..81bc1f2 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/PropelColumnTypes.php @@ -0,0 +1,95 @@ +. + */ + +/** + * Enumeration of Propel types. + * + * THIS CLASS MUST BE KEPT UP-TO-DATE WITH THE MORE EXTENSIVE GENERATOR VERSION OF THIS CLASS. + * + * @author Hans Lellelid (Propel) + * @version $Revision: 1262 $ + * @package propel.util + */ +class PropelColumnTypes { + + const CHAR = "CHAR"; + const VARCHAR = "VARCHAR"; + const LONGVARCHAR = "LONGVARCHAR"; + const CLOB = "CLOB"; + const NUMERIC = "NUMERIC"; + const DECIMAL = "DECIMAL"; + const TINYINT = "TINYINT"; + const SMALLINT = "SMALLINT"; + const INTEGER = "INTEGER"; + const BIGINT = "BIGINT"; + const REAL = "REAL"; + const FLOAT = "FLOAT"; + const DOUBLE = "DOUBLE"; + const BINARY = "BINARY"; + const VARBINARY = "VARBINARY"; + const LONGVARBINARY = "LONGVARBINARY"; + const BLOB = "BLOB"; + const DATE = "DATE"; + const TIME = "TIME"; + const TIMESTAMP = "TIMESTAMP"; + + const BU_DATE = "BU_DATE"; + const BU_TIMESTAMP = "BU_TIMESTAMP"; + + const BOOLEAN = "BOOLEAN"; + + private static $propelToPdoMap = array( + self::CHAR => PDO::PARAM_STR, + self::VARCHAR => PDO::PARAM_STR, + self::LONGVARCHAR => PDO::PARAM_STR, + self::CLOB => PDO::PARAM_LOB, + self::NUMERIC => PDO::PARAM_STR, + self::DECIMAL => PDO::PARAM_STR, + self::TINYINT => PDO::PARAM_INT, + self::SMALLINT => PDO::PARAM_INT, + self::INTEGER => PDO::PARAM_INT, + self::BIGINT => PDO::PARAM_STR, + self::REAL => PDO::PARAM_STR, + self::FLOAT => PDO::PARAM_STR, + self::DOUBLE => PDO::PARAM_STR, + self::BINARY => PDO::PARAM_STR, + self::VARBINARY => PDO::PARAM_STR, + self::LONGVARBINARY => PDO::PARAM_STR, + self::BLOB => PDO::PARAM_LOB, + self::DATE => PDO::PARAM_STR, + self::TIME => PDO::PARAM_STR, + self::TIMESTAMP => PDO::PARAM_STR, + self::BU_DATE => PDO::PARAM_STR, + self::BU_TIMESTAMP => PDO::PARAM_STR, + self::BOOLEAN => PDO::PARAM_BOOL, + ); + + /** + * Resturns the PDO type (PDO::PARAM_* constant) value for the Propel type provided. + * @param string $propelType + * @return int + */ + public static function getPdoType($propelType) + { + return self::$propelToPdoMap[$propelType]; + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/PropelConfiguration.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/PropelConfiguration.php new file mode 100644 index 0000000..d802fc9 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/PropelConfiguration.php @@ -0,0 +1,170 @@ +. + */ + +/** + * PropelConfiguration is a container for all Propel's configuration data. + * + * PropelConfiguration implements ArrayAccess interface so the configuration + * can be accessed as an array or using a simple getter and setter. The whole + * configuration can also be retrieved as a nested arrays, flat array or as a + * PropelConfiguration instance. + * + * @author Veikko Mäkinen + * @version $Revision: 1262 $ + * @package propel + */ +class PropelConfiguration implements ArrayAccess +{ + const TYPE_ARRAY = 1; + + const TYPE_ARRAY_FLAT = 2; + + const TYPE_OBJECT = 3; + + /** + * @var array An array of parameters + */ + protected $parameters = array(); + + /** + * Construct a new configuration container + * + * @param array $parameters + */ + public function __construct(array $parameters = array()) + { + $this->parameters = $parameters; + } + + /** + * @see http://www.php.net/ArrayAccess + */ + public function offsetExists($offset) + { + return isset($this->parameter[$offset]) || array_key_exists($offset, $this->parameters); + } + + /** + * @see http://www.php.net/ArrayAccess + */ + public function offsetSet($offset, $value) + { + $this->parameter[$offset] = $value; + } + + /** + * @see http://www.php.net/ArrayAccess + */ + public function offsetGet($offset) + { + return $this->parameters[$offset]; + } + + /** + * @see http://www.php.net/ArrayAccess + */ + public function offsetUnset($offset) + { + unset($this->parameters[$offset]); + } + + /** + * Get parameter value from the container + * + * @param string $name Parameter name + * @param mixed $default Default value to be used if the + * requested value is not found + * @return mixed Parameter value or the default + */ + public function getParameter($name, $default = null) + { + $ret = $this->parameters; + $parts = explode('.', $name); //name.space.name + while ($part = array_shift($parts)) { + if (array_key_exists($part, $ret)) { + $ret = $ret[$part]; + } else { + return $default; + } + } + return $ret; + } + + /** + * Store a value to the container + * + * @param string $name Configuration item name (name.space.name) + * @param mixed $value Value to be stored + */ + public function setParameter($name, $value) + { + $param = &$this->parameters; + $parts = explode('.', $name); //name.space.name + while ($part = array_shift($parts)) { + $param = &$param[$part]; + } + $param = $value; + } + + /** + * + * + * @param int $type + * @return mixed + */ + public function getParameters($type = PropelConfiguration::TYPE_ARRAY) + { + switch ($type) { + case PropelConfiguration::TYPE_ARRAY: + return $this->parameters; + case PropelConfiguration::TYPE_ARRAY_FLAT: + return $this->toFlatArray(); + case PropelConfiguration::TYPE_OBJECT: + return $this; + default: + throw new PropelException('Unknown configuration type: '. var_export($type, true)); + } + + } + + + /** + * Get the configuration as a flat array. ($array['name.space.item'] = 'value') + * + * @return array + */ + protected function toFlatArray() + { + $result = array(); + $it = new PropelConfigurationIterator(new RecursiveArrayIterator($this->parameters), RecursiveIteratorIterator::SELF_FIRST); + foreach($it as $key => $value) { + $ns = $it->getDepth() ? $it->getNamespace() . '.'. $key : $key; + if ($it->getNodeType() == PropelConfigurationIterator::NODE_ITEM) { + $result[$ns] = $value; + } + } + + return $result; + } + +} + +?> diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/PropelConfigurationIterator.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/PropelConfigurationIterator.php new file mode 100644 index 0000000..26d1edc --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/PropelConfigurationIterator.php @@ -0,0 +1,114 @@ +. + */ + +/** + * PropelConfigurationIterator is used internally by PropelConfiguration to + * build a flat array from nesting configuration arrays. + * + * @author Veikko Mäkinen + * @version $Revision: 1262 $ + * @package propel + */ +class PropelConfigurationIterator extends RecursiveIteratorIterator +{ + /** + * Node is a parent node + */ + const NODE_PARENT = 0; + + /** + * Node is an actual configuration item + */ + const NODE_ITEM = 1; + + /** + * Namespace stack when recursively iterating the configuration tree + * + * @var array + */ + protected $namespaceStack = array(); + + /** + * Current node type. Possible values: null (undefined), self::NODE_PARENT or self::NODE_ITEM + * + * @var int + */ + protected $nodeType = null; + + /** + * Get current namespace + * + * @return string + */ + public function getNamespace() + { + return implode('.', $this->namespaceStack); + } + + /** + * Get current node type. + * + * @see http://www.php.net/RecursiveIteratorIterator + * @return int + * - null (undefined) + * - self::NODE_PARENT + * - self::NODE_ITEM + */ + public function getNodeType() + { + return $this->nodeType; + } + + /** + * Get the current element + * + * @see http://www.php.net/RecursiveIteratorIterator + * @return mixed + */ + public function current() + { + $current = parent::current(); + if (is_array($current)) { + $this->namespaceStack[] = $this->key(); + $this->nodeType = self::NODE_PARENT; + } + else { + $this->nodeType = self::NODE_ITEM; + } + + return $current; + } + + /** + * Called after current child iterator is invalid and right before it gets destructed. + * + * @see http://www.php.net/RecursiveIteratorIterator + */ + public function endChildren() + { + if ($this->namespaceStack) { + array_pop($this->namespaceStack); + } + } + +} + +?> diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/PropelDateTime.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/PropelDateTime.php new file mode 100644 index 0000000..4913e62 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/PropelDateTime.php @@ -0,0 +1,87 @@ +. + */ + +/** + * DateTime subclass which supports serialization. + * + * Currently Propel is not using this for storing date/time objects + * within model objeects; however, we are keeping it in the repository + * because it is useful if you want to store a DateTime object in a session. + * + * @author Alan Pinstein + * @author Soenke Ruempler + * @author Hans Lellelid + * @package propel.util + */ +class PropelDateTime extends DateTime +{ + + /** + * A string representation of the date, for serialization. + * @var string + */ + private $dateString; + + /** + * A string representation of the time zone, for serialization. + * @var string + */ + private $tzString; + + /** + * Convenience method to enable a more fluent API. + * @param string $date Date/time value. + * @param DateTimeZone $tz (optional) timezone + */ + public static function newInstance($date, DateTimeZone $tz = null) + { + if ($tz) { + return new DateTime($date, $tz); + } else { + return new DateTime($date); + } + } + + /** + * PHP "magic" function called when object is serialized. + * Sets an internal property with the date string and returns properties + * of class that should be serialized. + * @return array string[] + */ + function __sleep() + { + // We need to use a string without a time zone, due to + // PHP bug: http://bugs.php.net/bug.php?id=40743 + $this->dateString = $this->format('Y-m-d H:i:s'); + $this->tzString = $this->getTimeZone()->getName(); + return array('dateString', 'tzString'); + } + + /** + * PHP "magic" function called when object is restored from serialized state. + * Calls DateTime constructor with previously stored string value of date. + */ + function __wakeup() + { + parent::__construct($this->dateString, new DateTimeZone($this->tzString)); + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/PropelPDO.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/PropelPDO.php new file mode 100644 index 0000000..b51fa10 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/PropelPDO.php @@ -0,0 +1,268 @@ +. + */ + + +/** + * PDO connection subclass that provides the basic fixes to PDO that are required by Propel. + * + * This class was designed to work around the limitation in PDO where attempting to begin + * a transaction when one has already been begun will trigger a PDOException. Propel + * relies on the ability to create nested transactions, even if the underlying layer + * simply ignores these (because it doesn't support nested transactions). + * + * The changes that this class makes to the underlying API include the addition of the + * getNestedTransactionDepth() and isInTransaction() and the fact that beginTransaction() + * will no longer throw a PDOException (or trigger an error) if a transaction is already + * in-progress. + * + * @author Cameron Brunner + * @author Hans Lellelid + * @author Christian Abegg + * @since 2006-09-22 + * @package propel.util + */ +class PropelPDO extends PDO { + + /** + * Attribute to use to set whether to cache prepared statements. + */ + const PROPEL_ATTR_CACHE_PREPARES = -1; + + /** + * The current transaction depth. + * @var int + */ + protected $nestedTransactionCount = 0; + + /** + * Cache of prepared statements (PDOStatement) keyed by md5 of SQL. + * + * @var array [md5(sql) => PDOStatement] + */ + protected $preparedStatements = array(); + + /** + * Whether to cache prepared statements. + * + * @var boolean + */ + protected $cachePreparedStatements = false; + + /** + * Whether the final commit is possible + * Is false if a nested transaction is rolled back + */ + protected $isUncommitable = false; + + /** + * Gets the current transaction depth. + * @return int + */ + public function getNestedTransactionCount() + { + return $this->nestedTransactionCount; + } + + /** + * Set the current transaction depth. + * @param int $v The new depth. + */ + protected function setNestedTransactionCount($v) + { + $this->nestedTransactionCount = $v; + } + + /** + * Decrements the current transaction depth by one. + */ + protected function decrementNestedTransactionCount() + { + $this->nestedTransactionCount--; + } + + /** + * Increments the current transaction depth by one. + */ + protected function incrementNestedTransactionCount() + { + $this->nestedTransactionCount++; + } + + /** + * Is this PDO connection currently in-transaction? + * This is equivalent to asking whether the current nested transaction count + * is greater than 0. + * @return boolean + */ + public function isInTransaction() + { + return ($this->getNestedTransactionCount() > 0); + } + + /** + * Overrides PDO::beginTransaction() to prevent errors due to already-in-progress transaction. + */ + public function beginTransaction() + { + $return = true; + $opcount = $this->getNestedTransactionCount(); + if ( $opcount === 0 ) { + $return = parent::beginTransaction(); + $this->isUncommitable = false; + } + $this->incrementNestedTransactionCount(); + return $return; + } + + /** + * Overrides PDO::commit() to only commit the transaction if we are in the outermost + * transaction nesting level. + */ + public function commit() + { + $return = true; + $opcount = $this->getNestedTransactionCount(); + if ($opcount > 0) { + if ($opcount === 1) { + if ($this->isUncommitable) { + throw new PropelException('Cannot commit because a nested transaction was rolled back'); + } else { + $return = parent::commit(); + } + } + $this->decrementNestedTransactionCount(); + } + return $return; + } + + /** + * Overrides PDO::rollBack() to only rollback the transaction if we are in the outermost + * transaction nesting level + * @return boolean Whether operation was successful. + */ + public function rollBack() + { + $return = true; + $opcount = $this->getNestedTransactionCount(); + if ($opcount > 0) { + if ($opcount === 1) { + $return = parent::rollBack(); + } else { + $this->isUncommitable = true; + } + $this->decrementNestedTransactionCount(); + } + return $return; + } + + /** + * Rollback the whole transaction, even if this is a nested rollback + * and reset the nested transaction count to 0. + * @return boolean Whether operation was successful. + */ + public function forceRollBack() + { + $return = true; + $opcount = $this->getNestedTransactionCount(); + if ($opcount > 0) { + // If we're in a transaction, always roll it back + // regardless of nesting level. + $return = parent::rollBack(); + + // reset nested transaction count to 0 so that we don't + // try to commit (or rollback) the transaction outside this scope. + $this->nestedTransactionCount = 0; + } + return $return; + } + + /** + * Sets a connection attribute. + * + * This is overridden here to provide support for setting Propel-specific attributes + * too. + * + * @param int $attribute The attribute to set (e.g. PropelPDO::PROPEL_ATTR_CACHE_PREPARES). + * @param mixed $value The attribute value. + */ + public function setAttribute($attribute, $value) + { + switch($attribute) { + case self::PROPEL_ATTR_CACHE_PREPARES: + $this->cachePreparedStatements = $value; + break; + default: + parent::setAttribute($attribute, $value); + } + } + + /** + * Gets a connection attribute. + * + * This is overridden here to provide support for setting Propel-specific attributes + * too. + * + * @param int $attribute The attribute to get (e.g. PropelPDO::PROPEL_ATTR_CACHE_PREPARES). + */ + public function getAttribute($attribute) + { + switch($attribute) { + case self::PROPEL_ATTR_CACHE_PREPARES: + return $this->cachePreparedStatements; + break; + default: + return parent::getAttribute($attribute); + } + } + + /** + * Overrides PDO::prepare() to add query caching support if the + * PropelPDO::PROPEL_ATTR_CACHE_PREPARES was set to true. + * . + * @param string $sql + * @param array + * @return PDOStatement + */ + public function prepare($sql, $driver_options = array()) + { + if ($this->cachePreparedStatements) { + $key = $sql; + if (!isset($this->preparedStatements[$key])) { + $stmt = parent::prepare($sql, $driver_options); + $this->preparedStatements[$key] = $stmt; + return $stmt; + } else { + return $this->preparedStatements[$key]; + } + } else { + return parent::prepare($sql, $driver_options); + } + } + + /** + * Clears any stored prepared statements for this connection. + */ + public function clearStatementCache() + { + $this->preparedStatements = array(); + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/PropelPager.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/PropelPager.php new file mode 100644 index 0000000..1bac7b4 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/util/PropelPager.php @@ -0,0 +1,607 @@ +. + */ + +/** + * PropelPager + * + * Example Usage: + * + * require_once 'propel/util/PropelPager.php'; + * require_once 'PEACH/Propel/Poem/poemPeer.php'; + * + * $c = new Criteria(); + * $c->addDescendingOrderByColumn(poemPeer::SID); + * + * // with join + * $pager = new PropelPager($c, 'poemPeer', 'doSelectJoinPoemUsers', 1, 50); + * + * // without Join + * + * $pager = new PropelPager($c, 'poemPeer', 'doSelect', 1, 50); + * + * Some template: + * + *

    + * Total Pages: getTotalPages()?> Total Records: getTotalRecordCount()?> + *

    + * + * + * + * + * + * + * + * + * + * + *
    + * getFirstPage):?> + * | + * + * + * getPrev()):?> + * Previous| + * + * + * getPrevLinks() as $link):?> + * | + * + * getPage()?> + * getNextLinks() as $link):?> + * | + * + * + * getNext()):?> + * Last| + * + * + * getLastPage()):?> + * | + * + *
    + * + * + * + * + * + * + * + * getResult() as $poem):?> + * + * + * + * + * + * + * + *
    TitleAuteurDatecomments
    getTitle()?>getPoemUsers()->getUname()?>getTime()?>getComments()?>
    + * + * + * @author Rob Halff + * @author Niklas Närhinen + * @version $Revision: 1262 $ + * @copyright Copyright (c) 2004 Rob Halff: LGPL - See LICENCE + * @package propel.util + */ +class PropelPager implements Countable, Iterator { + + private $recordCount; + private $pages; + private $peerClass; + private $peerSelectMethod; + private $peerCountMethod; + private $criteria; + private $countCriteria; + private $page; + private $rs = null; + + //Iterator vars + private $currentKey = 0; + + /** @var int Start row (offset) */ + protected $start = 0; + + /** @var int Max rows to return (0 means all) */ + protected $max = 0; + + /** + * Create a new Propel Pager. + * @param Criteria $c + * @param string $peerClass The name of the static Peer class. + * @param string $peerSelectMethod The name of the static method for selecting content from the Peer class. + * @param int $page The current page (1-based). + * @param int $rowsPerPage The number of rows that should be displayed per page. + */ + public function __construct($c = null, $peerClass = null, $peerSelectMethod = null, $page = 1, $rowsPerPage = 25) + { + if (!isset($c)) { + $c = new Criteria(); + } + $this->setCriteria($c); + $this->setPeerClass($peerClass); + $this->setPeerSelectMethod($peerSelectMethod); + $this->guessPeerCountMethod(); + $this->setPage($page); + $this->setRowsPerPage($rowsPerPage); + } + + /** + * Set the criteria for this pager. + * @param Criteria $c + * @return void + */ + public function setCriteria(Criteria $c) + { + $this->criteria = $c; + } + + /** + * Return the Criteria object for this pager. + * @return Criteria + */ + public function getCriteria() + { + return $this->criteria; + } + + /** + * Set the Peer Classname + * + * @param string $class + * @return void + */ + public function setPeerClass($class) + { + $this->peerClass = $class; + } + + /** + * Return the Peer Classname. + * @return string + */ + public function getPeerClass() + { + return $this->peerClass; + } + + /** + * Set the Peer select method. + * This exists for legacy support, please use setPeerSelectMethod(). + * @param string $method The name of the static method to call on the Peer class. + * @return void + * @see setPeerSelectMethod() + * @deprecated + */ + public function setPeerMethod($method) + { + $this->setPeerSelectMethod($method); + } + + /** + * Return the Peer select method. + * This exists for legacy support, please use getPeerSelectMethod(). + * @return string + * @see getPeerSelectMethod() + * @deprecated + */ + public function getPeerMethod() + { + return $this->getPeerSelectMethod(); + } + + /** + * Set the Peer select method. + * + * @param string $method The name of the static method to call on the Peer class. + * @return void + */ + public function setPeerSelectMethod($method) + { + $this->peerSelectMethod = $method; + } + + /** + * Return the Peer select method. + * @return string + */ + public function getPeerSelectMethod() + { + return $this->peerSelectMethod; + } + + /** + * Sets the Count method. + * This is set based on the Peer method, for example if Peer method is doSelectJoin*() then the + * count method will be doCountJoin*(). + * @param string $method The name of the static method to call on the Peer class. + */ + public function setPeerCountMethod($method) + { + $this->peerCountMethod = $method; + } + + /** + * Return the Peer count method. + */ + public function getPeerCountMethod() + { + return $this->peerCountMethod; + } + + /** + * Guesses the Peer count method based on the select method. + */ + private function guessPeerCountMethod() + { + $selectMethod = $this->getPeerSelectMethod(); + if ($selectMethod == 'doSelect') { + $countMethod = 'doCount'; + } elseif ( ($pos = stripos($selectMethod, 'doSelectJoin')) === 0) { + $countMethod = 'doCount' . substr($selectMethod, strlen('doSelect')); + } else { + // we will fall back to doCount() if we don't understand the join + // method; however, it probably won't be accurate. Maybe triggering an error would + // be appropriate ... + $countMethod = 'doCount'; + } + $this->setPeerCountMethod($countMethod); + } + + /** + * Get the paged resultset + * + * @return mixed $rs + */ + public function getResult() + { + if (!isset($this->rs)) { + $this->doRs(); + } + + return $this->rs; + } + + /** + * Get the paged resultset + * + * Main method which creates a paged result set based on the criteria + * and the requested peer select method. + * + */ + private function doRs() + { + $this->criteria->setOffset($this->start); + $this->criteria->setLimit($this->max); + $this->rs = call_user_func(array($this->getPeerClass(), $this->getPeerSelectMethod()), $this->criteria); + } + + /** + * Get the first page + * + * For now I can only think of returning 1 always. + * It should probably return 0 if there are no pages + * + * @return int 1 + */ + public function getFirstPage() + { + return '1'; + } + + /** + * Convenience method to indicate whether current page is the first page. + * + * @return boolean + */ + public function atFirstPage() + { + return $this->getPage() == $this->getFirstPage(); + } + + /** + * Get last page + * + * @return int $lastPage + */ + public function getLastPage() + { + $totalPages = $this->getTotalPages(); + if ($totalPages == 0) { + return 1; + } else { + return $totalPages; + } + } + + /** + * Convenience method to indicate whether current page is the last page. + * + * @return boolean + */ + public function atLastPage() + { + return $this->getPage() == $this->getLastPage(); + } + + /** + * get total pages + * + * @return int $this->pages + */ + public function getTotalPages() { + if (!isset($this->pages)) { + $recordCount = $this->getTotalRecordCount(); + if ($this->max > 0) { + $this->pages = ceil($recordCount/$this->max); + } else { + $this->pages = 0; + } + } + return $this->pages; + } + + /** + * get an array of previous id's + * + * @param int $range + * @return array $links + */ + public function getPrevLinks($range = 5) + { + $total = $this->getTotalPages(); + $start = $this->getPage() - 1; + $end = $this->getPage() - $range; + $first = $this->getFirstPage(); + $links = array(); + for ($i=$start; $i>$end; $i--) { + if ($i < $first) { + break; + } + $links[] = $i; + } + + return array_reverse($links); + } + + /** + * get an array of next id's + * + * @param int $range + * @return array $links + */ + public function getNextLinks($range = 5) + { + $total = $this->getTotalPages(); + $start = $this->getPage() + 1; + $end = $this->getPage() + $range; + $last = $this->getLastPage(); + $links = array(); + for ($i=$start; $i<$end; $i++) { + if ($i > $last) { + break; + } + $links[] = $i; + } + + return $links; + } + + /** + * Returns whether last page is complete + * + * @return bool Last page complete or not + */ + public function isLastPageComplete() + { + return !($this->getTotalRecordCount() % $this->max); + } + + /** + * get previous id + * + * @return mixed $prev + */ + public function getPrev() { + if ($this->getPage() != $this->getFirstPage()) { + $prev = $this->getPage() - 1; + } else { + $prev = false; + } + return $prev; + } + + /** + * get next id + * + * @return mixed $next + */ + public function getNext() { + if ($this->getPage() != $this->getLastPage()) { + $next = $this->getPage() + 1; + } else { + $next = false; + } + return $next; + } + + /** + * Set the current page number (First page is 1). + * @param int $page + * @return void + */ + public function setPage($page) + { + $this->page = $page; + // (re-)calculate start rec + $this->calculateStart(); + } + + /** + * Get current page. + * @return int + */ + public function getPage() + { + return $this->page; + } + + /** + * Set the number of rows per page. + * @param int $r + */ + public function setRowsPerPage($r) + { + $this->max = $r; + // (re-)calculate start rec + $this->calculateStart(); + } + + /** + * Get number of rows per page. + * @return int + */ + public function getRowsPerPage() + { + return $this->max; + } + + /** + * Calculate startrow / max rows based on current page and rows-per-page. + * @return void + */ + private function calculateStart() + { + $this->start = ( ($this->page - 1) * $this->max ); + } + + /** + * Gets the total number of (un-LIMITed) records. + * + * This method will perform a query that executes un-LIMITed query. + * + * @return int Total number of records - disregarding page, maxrows, etc. + */ + public function getTotalRecordCount() + { + + if (!isset($this->rs)) { + $this->doRs(); + } + + if (empty($this->recordCount)) { + $this->countCriteria = clone $this->criteria; + $this->countCriteria->setLimit(0); + $this->countCriteria->setOffset(0); + + $this->recordCount = call_user_func( + array( + $this->getPeerClass(), + $this->getPeerCountMethod() + ), + $this->countCriteria + ); + + } + + return $this->recordCount; + + } + + /** + * Sets the start row or offset. + * @param int $v + */ + public function setStart($v) + { + $this->start = $v; + } + + /** + * Sets max rows (limit). + * @param int $v + * @return void + */ + public function setMax($v) + { + $this->max = $v; + } + + /** + * Returns the count of the current page's records + * @return int + */ + public function count() + { + return count($this->getResult()); + } + + /** + * Returns the current element of the iterator + * @return mixed + */ + public function current() + { + if (!isset($this->rs)) { + $this->doRs(); + } + return $this->rs[$this->currentKey]; + } + + /** + * Returns the current key of the iterator + * @return int + */ + public function key() + { + return $this->currentKey; + } + + /** + * Advances the iterator to the next element + * @return void + */ + public function next() + { + $this->currentKey++; + } + + /** + * Resets the iterator to the first element + * @return void + */ + public function rewind() + { + $this->currentKey = 0; + } + + /** + * Checks if the current key exists in the container + * @return boolean + */ + public function valid() + { + if (!isset($this->rs)) { + $this->doRs(); + } + return in_array($this->currentKey, array_keys($this->rs)); + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/all-wcprops new file mode 100644 index 0000000..ec0863a --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/all-wcprops @@ -0,0 +1,77 @@ +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/validator +END +MinLengthValidator.php +K 25 +svn:wc:ra_dav:version-url +V 81 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/validator/MinLengthValidator.php +END +UniqueValidator.php +K 25 +svn:wc:ra_dav:version-url +V 78 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/validator/UniqueValidator.php +END +MaxLengthValidator.php +K 25 +svn:wc:ra_dav:version-url +V 81 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/validator/MaxLengthValidator.php +END +ValidationFailed.php +K 25 +svn:wc:ra_dav:version-url +V 79 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/validator/ValidationFailed.php +END +MatchValidator.php +K 25 +svn:wc:ra_dav:version-url +V 77 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/validator/MatchValidator.php +END +NotMatchValidator.php +K 25 +svn:wc:ra_dav:version-url +V 80 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/validator/NotMatchValidator.php +END +ValidValuesValidator.php +K 25 +svn:wc:ra_dav:version-url +V 83 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/validator/ValidValuesValidator.php +END +MinValueValidator.php +K 25 +svn:wc:ra_dav:version-url +V 80 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/validator/MinValueValidator.php +END +RequiredValidator.php +K 25 +svn:wc:ra_dav:version-url +V 80 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/validator/RequiredValidator.php +END +BasicValidator.php +K 25 +svn:wc:ra_dav:version-url +V 77 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/validator/BasicValidator.php +END +TypeValidator.php +K 25 +svn:wc:ra_dav:version-url +V 76 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/validator/TypeValidator.php +END +MaxValueValidator.php +K 25 +svn:wc:ra_dav:version-url +V 80 +/!svn/ver/1695/tags/1.4.2/runtime/classes/propel/validator/MaxValueValidator.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/entries new file mode 100644 index 0000000..969eb2d --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/entries @@ -0,0 +1,436 @@ +10 + +dir +2332 +http://propel.mirror.svn.symfony-project.com/tags/1.4.2/runtime/classes/propel/validator +http://propel.mirror.svn.symfony-project.com + + + +2009-10-26T20:54:39.333354Z +1262 +francois + + + + + + + + + + + + + + +a84bc4f6-26e8-416f-aa96-3cde13879fbb + +MinLengthValidator.php +file + + + + +2012-05-10T18:42:09.889553Z +d3de9a34aeb5595d96fd72176d696e0b +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +1697 + +UniqueValidator.php +file + + + + +2012-05-10T18:42:09.901552Z +1b88a1f4e2bdfc2c7337d8a8b62c4032 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +1911 + +MaxLengthValidator.php +file + + + + +2012-05-10T18:42:09.901552Z +f764802bd01c9f6e614e88035556b65a +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +1881 + +ValidationFailed.php +file + + + + +2012-05-10T18:42:09.905549Z +650666edce16fcaa02935bc6b1764f76 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +3360 + +MatchValidator.php +file + + + + +2012-05-10T18:42:09.905549Z +62387281418dc6eaece57d02a8b0abd1 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +2783 + +NotMatchValidator.php +file + + + + +2012-05-10T18:42:09.917555Z +b88ecaf8a6d17fe837b26781cdf92c7c +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +2663 + +ValidValuesValidator.php +file + + + + +2012-05-10T18:42:09.917555Z +75ccd8ca9415cbce395ff87cce59543c +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +1698 + +MinValueValidator.php +file + + + + +2012-05-10T18:42:09.917555Z +7cd086ee0626aeeaea2fdb91c9a447ba +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +1935 + +RequiredValidator.php +file + + + + +2012-05-10T18:42:09.921551Z +15773ad1a31ec6251a53203bde1fdd6e +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +1707 + +BasicValidator.php +file + + + + +2012-05-10T18:42:09.921551Z +60c19d562bb1d12b9a64cd72efccfb13 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +1766 + +TypeValidator.php +file + + + + +2012-05-10T18:42:09.921551Z +616368c500786fb3ef5b54d2cc729fb0 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +1643 + +MaxValueValidator.php +file + + + + +2012-05-10T18:42:09.925552Z +be20082b36c15ce60e9d12f4699edc65 +2009-10-26T20:54:39.333354Z +1262 +francois +has-props + + + + + + + + + + + + + + + + + + + + +1939 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/prop-base/BasicValidator.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/prop-base/BasicValidator.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/prop-base/BasicValidator.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/prop-base/MatchValidator.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/prop-base/MatchValidator.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/prop-base/MatchValidator.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/prop-base/MaxLengthValidator.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/prop-base/MaxLengthValidator.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/prop-base/MaxLengthValidator.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/prop-base/MaxValueValidator.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/prop-base/MaxValueValidator.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/prop-base/MaxValueValidator.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/prop-base/MinLengthValidator.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/prop-base/MinLengthValidator.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/prop-base/MinLengthValidator.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/prop-base/MinValueValidator.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/prop-base/MinValueValidator.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/prop-base/MinValueValidator.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/prop-base/NotMatchValidator.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/prop-base/NotMatchValidator.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/prop-base/NotMatchValidator.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/prop-base/RequiredValidator.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/prop-base/RequiredValidator.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/prop-base/RequiredValidator.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/prop-base/TypeValidator.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/prop-base/TypeValidator.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/prop-base/TypeValidator.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/prop-base/UniqueValidator.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/prop-base/UniqueValidator.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/prop-base/UniqueValidator.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/prop-base/ValidValuesValidator.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/prop-base/ValidValuesValidator.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/prop-base/ValidValuesValidator.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/prop-base/ValidationFailed.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/prop-base/ValidationFailed.php.svn-base new file mode 100644 index 0000000..c245c27 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/prop-base/ValidationFailed.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 35 +Id Rev Date Author HeadURL Revision +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/text-base/BasicValidator.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/text-base/BasicValidator.php.svn-base new file mode 100644 index 0000000..18da36f --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/text-base/BasicValidator.php.svn-base @@ -0,0 +1,46 @@ +. + */ + +/** + * Basic Validator interface. + * + * BasicValidator objects perform validation without any knowledge of column/table + * context. They are simply given an input and some value and asked whether the input + * is valid. + * + * @author Michael Aichler + * @version $Revision$ + * @package propel.validator + */ +interface BasicValidator +{ + + /** + * Determine whether a value meets the criteria specified + * + * @param ValidatorMap $map A column map object for the column to be validated. + * @param string $str a String to be tested + * + * @return mixed TRUE if valid, error message otherwise + */ + public function isValid(ValidatorMap $map, $str); + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/text-base/MatchValidator.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/text-base/MatchValidator.php.svn-base new file mode 100644 index 0000000..cfad2c7 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/text-base/MatchValidator.php.svn-base @@ -0,0 +1,79 @@ +. + */ + +/** + * A validator for regular expressions. + * + * This validator will return true, when the passed value *matches* the + * regular expression. + * + * ## This class replaces the former class MaskValidator ## + * + * If you do want to test if the value does *not* match an expression, + * you can use the MatchValidator class instead. + * + * Below is an example usage for your Propel xml schema file. + * + * + * + * + * + * + * + * + * + * @author Michael Aichler + * @author Hans Lellelid + * @version $Revision$ + * @package propel.validator + */ +class MatchValidator implements BasicValidator +{ + /** + * Prepares the regular expression entered in the XML + * for use with preg_match(). + * @param string $exp + * @return string Prepared regular expession. + */ + private function prepareRegexp($exp) + { + // remove surrounding '/' marks so that they don't get escaped in next step + if ($exp{0} !== '/' || $exp{strlen($exp)-1} !== '/' ) { + $exp = '/' . $exp . '/'; + } + + // if they did not escape / chars; we do that for them + $exp = preg_replace('/([^\\\])\/([^$])/', '$1\/$2', $exp); + + return $exp; + } + + /** + * Whether the passed string matches regular expression. + */ + public function isValid (ValidatorMap $map, $str) + { + return (preg_match($this->prepareRegexp($map->getValue()), $str) != 0); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/text-base/MaxLengthValidator.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/text-base/MaxLengthValidator.php.svn-base new file mode 100644 index 0000000..2ab2db0 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/text-base/MaxLengthValidator.php.svn-base @@ -0,0 +1,50 @@ +. + */ + +/** + * A validator for maximum string length. + * + * Below is an example usage for your Propel xml schema file. + * + * Note that if you have specified the size attribute in the column tag + * you do not have to specify it as value in the validator rule again as + * this is done automatically. + * + * + * + * + * + * + * + * + * + * @author Michael Aichler + * @version $Revision$ + * @package propel.validator + */ +class MaxLengthValidator implements BasicValidator +{ + + public function isValid (ValidatorMap $map, $str) + { + return strlen($str) <= intval($map->getValue()); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/text-base/MaxValueValidator.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/text-base/MaxValueValidator.php.svn-base new file mode 100644 index 0000000..9c3e1b8 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/text-base/MaxValueValidator.php.svn-base @@ -0,0 +1,54 @@ +. + */ + +/** + * A validator for maximum values. + * + * Below is an example usage for your Propel xml schema file. + * + * + * + * + * + * + * + * + * + * + * @author Michael Aichler + * @version $Revision$ + * @package propel.validator + */ +class MaxValueValidator implements BasicValidator +{ + + /** + * @see BasicValidator::isValid() + */ + public function isValid (ValidatorMap $map, $value) + { + if (is_null($value) == false && is_numeric($value) == true) { + return intval($value) <= intval($map->getValue()); + } + + return false; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/text-base/MinLengthValidator.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/text-base/MinLengthValidator.php.svn-base new file mode 100644 index 0000000..ff57bcb --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/text-base/MinLengthValidator.php.svn-base @@ -0,0 +1,47 @@ +. + */ + +/** + * A validator for minimum string length. + * + * + * + * + * + * + * + * + * + * @author Michael Aichler + * @version $Revision$ + * @package propel.validator + */ +class MinLengthValidator implements BasicValidator +{ + + /** + * @see BasicValidator::isValid() + */ + public function isValid (ValidatorMap $map, $str) + { + return strlen($str) >= intval($map->getValue()); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/text-base/MinValueValidator.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/text-base/MinValueValidator.php.svn-base new file mode 100644 index 0000000..a31cae9 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/text-base/MinValueValidator.php.svn-base @@ -0,0 +1,54 @@ +. + */ + +/** + * A validator for minimum values. + * + * Below is an example usage for your Propel xml schema file. + * + * + * + * + * + * + * + * + * + * + * @author Michael Aichler + * @version $Revision$ + * @package propel.validator + */ +class MinValueValidator implements BasicValidator +{ + + /** + * @see BasicValidator::isValid() + */ + public function isValid (ValidatorMap $map, $value) + { + if (is_null($value) == false && is_numeric($value)) { + return intval($value) >= intval($map->getValue()); + } + + return false; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/text-base/NotMatchValidator.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/text-base/NotMatchValidator.php.svn-base new file mode 100644 index 0000000..810dd6a --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/text-base/NotMatchValidator.php.svn-base @@ -0,0 +1,77 @@ +. + */ + +/** + * A validator for regular expressions. + * + * This validator will return true, when the passed value does *not* match + * the regular expression. + * + * If you do want to test if the value *matches* an expression, you can use + * the MatchValidator class instead. + * + * Below is an example usage for your Propel xml schema file. + * + * + * + * + * + * + * + * + * + * @author Michael Aichler + * @author Hans Lellelid + * @version $Revision$ + * @package propel.validator + */ +class NotMatchValidator implements BasicValidator +{ + /** + * Prepares the regular expression entered in the XML + * for use with preg_match(). + * @param string $exp + * @return string Prepared regular expession. + */ + private function prepareRegexp($exp) + { + // remove surrounding '/' marks so that they don't get escaped in next step + if ($exp{0} !== '/' || $exp{strlen($exp)-1} !== '/' ) { + $exp = '/' . $exp . '/'; + } + + // if they did not escape / chars; we do that for them + $exp = preg_replace('/([^\\\])\/([^$])/', '$1\/$2', $exp); + + return $exp; + } + + /** + * Whether the passed string matches regular expression. + */ + public function isValid (ValidatorMap $map, $str) + { + return (preg_match($this->prepareRegexp($map->getValue()), $str) == 0); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/text-base/RequiredValidator.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/text-base/RequiredValidator.php.svn-base new file mode 100644 index 0000000..eb5e6b6 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/text-base/RequiredValidator.php.svn-base @@ -0,0 +1,49 @@ +. + */ + +/** + * A validator for required fields. + * + * Below is an example usage for your Propel xml schema file. + * + * + * + * + * + * + * + * + * + * @author Michael Aichler + * @version $Revision$ + * @package propel.validator + */ +class RequiredValidator implements BasicValidator +{ + + /** + * @see BasicValidator::isValid() + */ + public function isValid (ValidatorMap $map, $str) + { + return ($str !== null && $str !== ""); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/text-base/TypeValidator.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/text-base/TypeValidator.php.svn-base new file mode 100644 index 0000000..10dc253 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/text-base/TypeValidator.php.svn-base @@ -0,0 +1,44 @@ +. + */ + +/** + * A validator for validating the (PHP) type of the value submitted. + * + * + * + * + * + * + * + * + * + * @author Hans Lellelid + * @version $Revision$ + * @package propel.validator + */ +class TypeValidator implements BasicValidator +{ + + public function isValid(ValidatorMap $map, $value) + { + return (gettype($value) == $map->getValue()); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/text-base/UniqueValidator.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/text-base/UniqueValidator.php.svn-base new file mode 100644 index 0000000..bff0b1c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/text-base/UniqueValidator.php.svn-base @@ -0,0 +1,59 @@ +. + */ + +/** + * A validator for unique column names. + * + * + * + * + * + * + * + * + * + * @author Michael Aichler + * @version $Revision$ + * @package propel.validator + */ +class UniqueValidator implements BasicValidator +{ + + /** + * @see BasicValidator::isValid() + */ + public function isValid (ValidatorMap $map, $str) + { + $column = $map->getColumn(); + + $c = new Criteria(); + $c->add($column->getFullyQualifiedName(), $str, Criteria::EQUAL); + + $table = $column->getTable()->getClassName(); + + $clazz = $table . 'Peer'; + $count = call_user_func(array($clazz, 'doCount'), $c); + + $isValid = ($count === 0); + + return $isValid; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/text-base/ValidValuesValidator.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/text-base/ValidValuesValidator.php.svn-base new file mode 100644 index 0000000..b43629b --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/text-base/ValidValuesValidator.php.svn-base @@ -0,0 +1,44 @@ +. + */ + +/** + * A validator for valid values (e.g. for enum fields) + * + * + * + * + * + * + * + * + * + * @author Michael Aichler + * @version $Revision$ + * @package propel.validator + */ +class ValidValuesValidator implements BasicValidator +{ + + public function isValid (ValidatorMap $map, $str) + { + return in_array($str, preg_split("/[|,]/", $map->getValue())); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/text-base/ValidationFailed.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/text-base/ValidationFailed.php.svn-base new file mode 100644 index 0000000..5bf2ee7 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/.svn/text-base/ValidationFailed.php.svn-base @@ -0,0 +1,126 @@ +. + */ + + +/** + * Simple class that serves as a container for any information about a failed validation. + * + * Currently this class stores the qualified column name (e.g. tablename.COLUMN_NAME) and + * the message that should be displayed to the user. + * + * An array of these objects will be returned by BasePeer::doValidate() if validation + * failed. + * + * @author Hans Lellelid + * @version $Revision$ + * @package propel.validator + * @see BasePeer::doValidate() + */ +class ValidationFailed { + + /** Column name in tablename.COLUMN_NAME format */ + private $colname; + + /** Message to display to user. */ + private $message; + + /** Validator object that caused this to fail. */ + private $validator; + + /** + * Construct a new ValidationFailed object. + * @param string $colname Column name. + * @param string $message Message to display to user. + * @param object $validator The Validator that caused this column to fail. + */ + public function __construct($colname, $message, $validator = null) + { + $this->colname = $colname; + $this->message = $message; + $this->validator = $validator; + } + + /** + * Set the column name. + * @param string $v + */ + public function setColumn($v) + { + $this->colname = $v; + } + + /** + * Gets the column name. + * @return string Qualified column name (tablename.COLUMN_NAME) + */ + public function getColumn() + { + return $this->colname; + } + + /** + * Set the message for the validation failure. + * @param string $v + */ + public function setMessage($v) + { + $this->message = $v; + } + + /** + * Gets the message for the validation failure. + * @return string + */ + public function getMessage() + { + return $this->message; + } + + /** + * Set the validator object that caused this to fail. + * @param object $v + */ + public function setValidator($v) + { + $this->validator = $v; + } + + /** + * Gets the validator object that caused this to fail. + * @return object + */ + public function getValidator() + { + return $this->validator; + } + + /** + * "magic" method to get string represenation of object. + * Maybe someday PHP5 will support the invoking this method automatically + * on (string) cast. Until then it's pretty useless. + * @return string + */ + public function __toString() + { + return $this->getMessage(); + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/BasicValidator.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/BasicValidator.php new file mode 100644 index 0000000..24e2168 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/BasicValidator.php @@ -0,0 +1,46 @@ +. + */ + +/** + * Basic Validator interface. + * + * BasicValidator objects perform validation without any knowledge of column/table + * context. They are simply given an input and some value and asked whether the input + * is valid. + * + * @author Michael Aichler + * @version $Revision: 1262 $ + * @package propel.validator + */ +interface BasicValidator +{ + + /** + * Determine whether a value meets the criteria specified + * + * @param ValidatorMap $map A column map object for the column to be validated. + * @param string $str a String to be tested + * + * @return mixed TRUE if valid, error message otherwise + */ + public function isValid(ValidatorMap $map, $str); + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/MatchValidator.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/MatchValidator.php new file mode 100644 index 0000000..283e91c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/MatchValidator.php @@ -0,0 +1,79 @@ +. + */ + +/** + * A validator for regular expressions. + * + * This validator will return true, when the passed value *matches* the + * regular expression. + * + * ## This class replaces the former class MaskValidator ## + * + * If you do want to test if the value does *not* match an expression, + * you can use the MatchValidator class instead. + * + * Below is an example usage for your Propel xml schema file. + * + * + * + * + * + * + * + * + * + * @author Michael Aichler + * @author Hans Lellelid + * @version $Revision: 1262 $ + * @package propel.validator + */ +class MatchValidator implements BasicValidator +{ + /** + * Prepares the regular expression entered in the XML + * for use with preg_match(). + * @param string $exp + * @return string Prepared regular expession. + */ + private function prepareRegexp($exp) + { + // remove surrounding '/' marks so that they don't get escaped in next step + if ($exp{0} !== '/' || $exp{strlen($exp)-1} !== '/' ) { + $exp = '/' . $exp . '/'; + } + + // if they did not escape / chars; we do that for them + $exp = preg_replace('/([^\\\])\/([^$])/', '$1\/$2', $exp); + + return $exp; + } + + /** + * Whether the passed string matches regular expression. + */ + public function isValid (ValidatorMap $map, $str) + { + return (preg_match($this->prepareRegexp($map->getValue()), $str) != 0); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/MaxLengthValidator.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/MaxLengthValidator.php new file mode 100644 index 0000000..7737e07 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/MaxLengthValidator.php @@ -0,0 +1,50 @@ +. + */ + +/** + * A validator for maximum string length. + * + * Below is an example usage for your Propel xml schema file. + * + * Note that if you have specified the size attribute in the column tag + * you do not have to specify it as value in the validator rule again as + * this is done automatically. + * + * + * + * + * + * + * + * + * + * @author Michael Aichler + * @version $Revision: 1262 $ + * @package propel.validator + */ +class MaxLengthValidator implements BasicValidator +{ + + public function isValid (ValidatorMap $map, $str) + { + return strlen($str) <= intval($map->getValue()); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/MaxValueValidator.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/MaxValueValidator.php new file mode 100644 index 0000000..4322652 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/MaxValueValidator.php @@ -0,0 +1,54 @@ +. + */ + +/** + * A validator for maximum values. + * + * Below is an example usage for your Propel xml schema file. + * + * + * + * + * + * + * + * + * + * + * @author Michael Aichler + * @version $Revision: 1262 $ + * @package propel.validator + */ +class MaxValueValidator implements BasicValidator +{ + + /** + * @see BasicValidator::isValid() + */ + public function isValid (ValidatorMap $map, $value) + { + if (is_null($value) == false && is_numeric($value) == true) { + return intval($value) <= intval($map->getValue()); + } + + return false; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/MinLengthValidator.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/MinLengthValidator.php new file mode 100644 index 0000000..b6c3ebd --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/MinLengthValidator.php @@ -0,0 +1,47 @@ +. + */ + +/** + * A validator for minimum string length. + * + * + * + * + * + * + * + * + * + * @author Michael Aichler + * @version $Revision: 1262 $ + * @package propel.validator + */ +class MinLengthValidator implements BasicValidator +{ + + /** + * @see BasicValidator::isValid() + */ + public function isValid (ValidatorMap $map, $str) + { + return strlen($str) >= intval($map->getValue()); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/MinValueValidator.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/MinValueValidator.php new file mode 100644 index 0000000..5d1cfda --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/MinValueValidator.php @@ -0,0 +1,54 @@ +. + */ + +/** + * A validator for minimum values. + * + * Below is an example usage for your Propel xml schema file. + * + * + * + * + * + * + * + * + * + * + * @author Michael Aichler + * @version $Revision: 1262 $ + * @package propel.validator + */ +class MinValueValidator implements BasicValidator +{ + + /** + * @see BasicValidator::isValid() + */ + public function isValid (ValidatorMap $map, $value) + { + if (is_null($value) == false && is_numeric($value)) { + return intval($value) >= intval($map->getValue()); + } + + return false; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/NotMatchValidator.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/NotMatchValidator.php new file mode 100644 index 0000000..a372615 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/NotMatchValidator.php @@ -0,0 +1,77 @@ +. + */ + +/** + * A validator for regular expressions. + * + * This validator will return true, when the passed value does *not* match + * the regular expression. + * + * If you do want to test if the value *matches* an expression, you can use + * the MatchValidator class instead. + * + * Below is an example usage for your Propel xml schema file. + * + * + * + * + * + * + * + * + * + * @author Michael Aichler + * @author Hans Lellelid + * @version $Revision: 1262 $ + * @package propel.validator + */ +class NotMatchValidator implements BasicValidator +{ + /** + * Prepares the regular expression entered in the XML + * for use with preg_match(). + * @param string $exp + * @return string Prepared regular expession. + */ + private function prepareRegexp($exp) + { + // remove surrounding '/' marks so that they don't get escaped in next step + if ($exp{0} !== '/' || $exp{strlen($exp)-1} !== '/' ) { + $exp = '/' . $exp . '/'; + } + + // if they did not escape / chars; we do that for them + $exp = preg_replace('/([^\\\])\/([^$])/', '$1\/$2', $exp); + + return $exp; + } + + /** + * Whether the passed string matches regular expression. + */ + public function isValid (ValidatorMap $map, $str) + { + return (preg_match($this->prepareRegexp($map->getValue()), $str) == 0); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/RequiredValidator.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/RequiredValidator.php new file mode 100644 index 0000000..28daf41 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/RequiredValidator.php @@ -0,0 +1,49 @@ +. + */ + +/** + * A validator for required fields. + * + * Below is an example usage for your Propel xml schema file. + * + * + * + * + * + * + * + * + * + * @author Michael Aichler + * @version $Revision: 1262 $ + * @package propel.validator + */ +class RequiredValidator implements BasicValidator +{ + + /** + * @see BasicValidator::isValid() + */ + public function isValid (ValidatorMap $map, $str) + { + return ($str !== null && $str !== ""); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/TypeValidator.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/TypeValidator.php new file mode 100644 index 0000000..994d17c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/TypeValidator.php @@ -0,0 +1,44 @@ +. + */ + +/** + * A validator for validating the (PHP) type of the value submitted. + * + * + * + * + * + * + * + * + * + * @author Hans Lellelid + * @version $Revision: 1262 $ + * @package propel.validator + */ +class TypeValidator implements BasicValidator +{ + + public function isValid(ValidatorMap $map, $value) + { + return (gettype($value) == $map->getValue()); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/UniqueValidator.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/UniqueValidator.php new file mode 100644 index 0000000..5bb10bf --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/UniqueValidator.php @@ -0,0 +1,59 @@ +. + */ + +/** + * A validator for unique column names. + * + * + * + * + * + * + * + * + * + * @author Michael Aichler + * @version $Revision: 1262 $ + * @package propel.validator + */ +class UniqueValidator implements BasicValidator +{ + + /** + * @see BasicValidator::isValid() + */ + public function isValid (ValidatorMap $map, $str) + { + $column = $map->getColumn(); + + $c = new Criteria(); + $c->add($column->getFullyQualifiedName(), $str, Criteria::EQUAL); + + $table = $column->getTable()->getClassName(); + + $clazz = $table . 'Peer'; + $count = call_user_func(array($clazz, 'doCount'), $c); + + $isValid = ($count === 0); + + return $isValid; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/ValidValuesValidator.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/ValidValuesValidator.php new file mode 100644 index 0000000..f3b4885 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/ValidValuesValidator.php @@ -0,0 +1,44 @@ +. + */ + +/** + * A validator for valid values (e.g. for enum fields) + * + * + * + * + * + * + * + * + * + * @author Michael Aichler + * @version $Revision: 1262 $ + * @package propel.validator + */ +class ValidValuesValidator implements BasicValidator +{ + + public function isValid (ValidatorMap $map, $str) + { + return in_array($str, preg_split("/[|,]/", $map->getValue())); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/ValidationFailed.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/ValidationFailed.php new file mode 100644 index 0000000..47e759c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel/validator/ValidationFailed.php @@ -0,0 +1,126 @@ +. + */ + + +/** + * Simple class that serves as a container for any information about a failed validation. + * + * Currently this class stores the qualified column name (e.g. tablename.COLUMN_NAME) and + * the message that should be displayed to the user. + * + * An array of these objects will be returned by BasePeer::doValidate() if validation + * failed. + * + * @author Hans Lellelid + * @version $Revision: 1262 $ + * @package propel.validator + * @see BasePeer::doValidate() + */ +class ValidationFailed { + + /** Column name in tablename.COLUMN_NAME format */ + private $colname; + + /** Message to display to user. */ + private $message; + + /** Validator object that caused this to fail. */ + private $validator; + + /** + * Construct a new ValidationFailed object. + * @param string $colname Column name. + * @param string $message Message to display to user. + * @param object $validator The Validator that caused this column to fail. + */ + public function __construct($colname, $message, $validator = null) + { + $this->colname = $colname; + $this->message = $message; + $this->validator = $validator; + } + + /** + * Set the column name. + * @param string $v + */ + public function setColumn($v) + { + $this->colname = $v; + } + + /** + * Gets the column name. + * @return string Qualified column name (tablename.COLUMN_NAME) + */ + public function getColumn() + { + return $this->colname; + } + + /** + * Set the message for the validation failure. + * @param string $v + */ + public function setMessage($v) + { + $this->message = $v; + } + + /** + * Gets the message for the validation failure. + * @return string + */ + public function getMessage() + { + return $this->message; + } + + /** + * Set the validator object that caused this to fail. + * @param object $v + */ + public function setValidator($v) + { + $this->validator = $v; + } + + /** + * Gets the validator object that caused this to fail. + * @return object + */ + public function getValidator() + { + return $this->validator; + } + + /** + * "magic" method to get string represenation of object. + * Maybe someday PHP5 will support the invoking this method automatically + * on (string) cast. Until then it's pretty useless. + * @return string + */ + public function __toString() + { + return $this->getMessage(); + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/widget/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/widget/.svn/all-wcprops new file mode 100644 index 0000000..686d302 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/widget/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 66 +/!svn/ver/29679/branches/1.4/lib/plugins/sfPropelPlugin/lib/widget +END +sfWidgetFormPropelChoice.class.php +K 25 +svn:wc:ra_dav:version-url +V 101 +/!svn/ver/29679/branches/1.4/lib/plugins/sfPropelPlugin/lib/widget/sfWidgetFormPropelChoice.class.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/widget/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/widget/.svn/entries new file mode 100644 index 0000000..c740d6f --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/widget/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/lib/widget +http://svn.symfony-project.com + + + +2010-05-30T14:46:03.207692Z +29679 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +sfWidgetFormPropelChoice.class.php +file + + + + +2012-05-10T18:41:44.901550Z +9a0ea458ec180fc683052cf83cdd51d2 +2010-05-30T14:46:03.207692Z +29679 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +3964 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/widget/.svn/prop-base/sfWidgetFormPropelChoice.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/widget/.svn/prop-base/sfWidgetFormPropelChoice.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/widget/.svn/prop-base/sfWidgetFormPropelChoice.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/widget/.svn/text-base/sfWidgetFormPropelChoice.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/widget/.svn/text-base/sfWidgetFormPropelChoice.class.php.svn-base new file mode 100644 index 0000000..ad22e06 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/widget/.svn/text-base/sfWidgetFormPropelChoice.class.php.svn-base @@ -0,0 +1,108 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormPropelChoice represents a choice widget for a model. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfWidgetFormPropelChoice extends sfWidgetFormChoice +{ + /** + * @see sfWidget + */ + public function __construct($options = array(), $attributes = array()) + { + $options['choices'] = array(); + + parent::__construct($options, $attributes); + } + + /** + * Constructor. + * + * Available options: + * + * * model: The model class (required) + * * add_empty: Whether to add a first empty value or not (false by default) + * If the option is not a Boolean, the value will be used as the text value + * * method: The method to use to display object values (__toString by default) + * * key_method: The method to use to display the object keys (getPrimaryKey by default) + * * order_by: An array composed of two fields: + * * The column to order by the results (must be in the PhpName format) + * * asc or desc + * * criteria: A criteria to use when retrieving objects + * * connection: The Propel connection to use (null by default) + * * multiple: true if the select tag must allow multiple selections + * * peer_method: The peer method to use to fetch objects + * + * @see sfWidgetFormSelect + */ + protected function configure($options = array(), $attributes = array()) + { + $this->addRequiredOption('model'); + $this->addOption('add_empty', false); + $this->addOption('method', '__toString'); + $this->addOption('key_method', 'getPrimaryKey'); + $this->addOption('order_by', null); + $this->addOption('criteria', null); + $this->addOption('connection', null); + $this->addOption('multiple', false); + $this->addOption('peer_method', 'doSelect'); + + parent::configure($options, $attributes); + } + + /** + * Returns the choices associated to the model. + * + * @return array An array of choices + */ + public function getChoices() + { + $choices = array(); + if (false !== $this->getOption('add_empty')) + { + $choices[''] = true === $this->getOption('add_empty') ? '' : $this->translate($this->getOption('add_empty')); + } + + $class = constant($this->getOption('model').'::PEER'); + + $criteria = null === $this->getOption('criteria') ? new Criteria() : clone $this->getOption('criteria'); + if ($order = $this->getOption('order_by')) + { + $method = sprintf('add%sOrderByColumn', 0 === strpos(strtoupper($order[1]), 'ASC') ? 'Ascending' : 'Descending'); + $criteria->$method(call_user_func(array($class, 'translateFieldName'), $order[0], BasePeer::TYPE_PHPNAME, BasePeer::TYPE_COLNAME)); + } + $objects = call_user_func(array($class, $this->getOption('peer_method')), $criteria, $this->getOption('connection')); + + $methodKey = $this->getOption('key_method'); + if (!method_exists($this->getOption('model'), $methodKey)) + { + throw new RuntimeException(sprintf('Class "%s" must implement a "%s" method to be rendered in a "%s" widget', $this->getOption('model'), $methodKey, __CLASS__)); + } + + $methodValue = $this->getOption('method'); + if (!method_exists($this->getOption('model'), $methodValue)) + { + throw new RuntimeException(sprintf('Class "%s" must implement a "%s" method to be rendered in a "%s" widget', $this->getOption('model'), $methodValue, __CLASS__)); + } + + foreach ($objects as $object) + { + $choices[$object->$methodKey()] = $object->$methodValue(); + } + + return $choices; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/widget/sfWidgetFormPropelChoice.class.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/widget/sfWidgetFormPropelChoice.class.php new file mode 100644 index 0000000..655de84 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/widget/sfWidgetFormPropelChoice.class.php @@ -0,0 +1,108 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormPropelChoice represents a choice widget for a model. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id: sfWidgetFormPropelChoice.class.php 29679 2010-05-30 14:46:03Z Kris.Wallsmith $ + */ +class sfWidgetFormPropelChoice extends sfWidgetFormChoice +{ + /** + * @see sfWidget + */ + public function __construct($options = array(), $attributes = array()) + { + $options['choices'] = array(); + + parent::__construct($options, $attributes); + } + + /** + * Constructor. + * + * Available options: + * + * * model: The model class (required) + * * add_empty: Whether to add a first empty value or not (false by default) + * If the option is not a Boolean, the value will be used as the text value + * * method: The method to use to display object values (__toString by default) + * * key_method: The method to use to display the object keys (getPrimaryKey by default) + * * order_by: An array composed of two fields: + * * The column to order by the results (must be in the PhpName format) + * * asc or desc + * * criteria: A criteria to use when retrieving objects + * * connection: The Propel connection to use (null by default) + * * multiple: true if the select tag must allow multiple selections + * * peer_method: The peer method to use to fetch objects + * + * @see sfWidgetFormSelect + */ + protected function configure($options = array(), $attributes = array()) + { + $this->addRequiredOption('model'); + $this->addOption('add_empty', false); + $this->addOption('method', '__toString'); + $this->addOption('key_method', 'getPrimaryKey'); + $this->addOption('order_by', null); + $this->addOption('criteria', null); + $this->addOption('connection', null); + $this->addOption('multiple', false); + $this->addOption('peer_method', 'doSelect'); + + parent::configure($options, $attributes); + } + + /** + * Returns the choices associated to the model. + * + * @return array An array of choices + */ + public function getChoices() + { + $choices = array(); + if (false !== $this->getOption('add_empty')) + { + $choices[''] = true === $this->getOption('add_empty') ? '' : $this->translate($this->getOption('add_empty')); + } + + $class = constant($this->getOption('model').'::PEER'); + + $criteria = null === $this->getOption('criteria') ? new Criteria() : clone $this->getOption('criteria'); + if ($order = $this->getOption('order_by')) + { + $method = sprintf('add%sOrderByColumn', 0 === strpos(strtoupper($order[1]), 'ASC') ? 'Ascending' : 'Descending'); + $criteria->$method(call_user_func(array($class, 'translateFieldName'), $order[0], BasePeer::TYPE_PHPNAME, BasePeer::TYPE_COLNAME)); + } + $objects = call_user_func(array($class, $this->getOption('peer_method')), $criteria, $this->getOption('connection')); + + $methodKey = $this->getOption('key_method'); + if (!method_exists($this->getOption('model'), $methodKey)) + { + throw new RuntimeException(sprintf('Class "%s" must implement a "%s" method to be rendered in a "%s" widget', $this->getOption('model'), $methodKey, __CLASS__)); + } + + $methodValue = $this->getOption('method'); + if (!method_exists($this->getOption('model'), $methodValue)) + { + throw new RuntimeException(sprintf('Class "%s" must implement a "%s" method to be rendered in a "%s" widget', $this->getOption('model'), $methodValue, __CLASS__)); + } + + foreach ($objects as $object) + { + $choices[$object->$methodKey()] = $object->$methodValue(); + } + + return $choices; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/.svn/all-wcprops new file mode 100644 index 0000000..4e8bd65 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 60 +/!svn/ver/31927/branches/1.4/lib/plugins/sfPropelPlugin/test +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/.svn/entries new file mode 100644 index 0000000..cfced0c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/.svn/entries @@ -0,0 +1,40 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test +http://svn.symfony-project.com + + + +2011-01-29T14:28:51.873803Z +31927 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +unit +dir + +functional +dir + +bin +dir + +bootstrap +dir + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bin/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bin/.svn/all-wcprops new file mode 100644 index 0000000..28487ca --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bin/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 64 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/bin +END +prove.php +K 25 +svn:wc:ra_dav:version-url +V 74 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/bin/prove.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bin/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bin/.svn/entries new file mode 100644 index 0000000..adfd8f8 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bin/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/bin +http://svn.symfony-project.com + + + +2009-10-08T16:50:37.503387Z +22881 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +prove.php +file + + + + +2012-05-10T18:41:42.970854Z +01b766ca25f5f989a0037d3890e7eb65 +2009-10-08T16:50:37.503387Z +22881 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +908 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bin/.svn/prop-base/prove.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bin/.svn/prop-base/prove.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bin/.svn/prop-base/prove.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bin/.svn/text-base/prove.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bin/.svn/text-base/prove.php.svn-base new file mode 100644 index 0000000..ff29c23 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bin/.svn/text-base/prove.php.svn-base @@ -0,0 +1,31 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once dirname(__FILE__).'/../../../../../lib/vendor/lime/lime.php'; +require_once dirname(__FILE__).'/../../../../../lib/util/sfToolkit.class.php'; +require_once dirname(__FILE__).'/../../../../../lib/util/sfFinder.class.php'; + +if ($files = glob(sfToolkit::getTmpDir().DIRECTORY_SEPARATOR.'/sf_autoload_unit_*')) +{ + foreach ($files as $file) + { + unlink($file); + } +} + +$h = new lime_harness(new lime_output_color); +$h->base_dir = realpath(dirname(__FILE__).'/..'); + +$h->register(sfFinder::type('file')->prune('fixtures')->name('*Test.php')->in(array( + $h->base_dir.'/unit', + $h->base_dir.'/functional', +))); + +exit($h->run() ? 0 : 1); diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bin/prove.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bin/prove.php new file mode 100644 index 0000000..ff29c23 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bin/prove.php @@ -0,0 +1,31 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once dirname(__FILE__).'/../../../../../lib/vendor/lime/lime.php'; +require_once dirname(__FILE__).'/../../../../../lib/util/sfToolkit.class.php'; +require_once dirname(__FILE__).'/../../../../../lib/util/sfFinder.class.php'; + +if ($files = glob(sfToolkit::getTmpDir().DIRECTORY_SEPARATOR.'/sf_autoload_unit_*')) +{ + foreach ($files as $file) + { + unlink($file); + } +} + +$h = new lime_harness(new lime_output_color); +$h->base_dir = realpath(dirname(__FILE__).'/..'); + +$h->register(sfFinder::type('file')->prune('fixtures')->name('*Test.php')->in(array( + $h->base_dir.'/unit', + $h->base_dir.'/functional', +))); + +exit($h->run() ? 0 : 1); diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bootstrap/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bootstrap/.svn/all-wcprops new file mode 100644 index 0000000..73632e4 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bootstrap/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 70 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/bootstrap +END +unit.php +K 25 +svn:wc:ra_dav:version-url +V 79 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/bootstrap/unit.php +END +functional.php +K 25 +svn:wc:ra_dav:version-url +V 85 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/bootstrap/functional.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bootstrap/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bootstrap/.svn/entries new file mode 100644 index 0000000..ed471d3 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bootstrap/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/bootstrap +http://svn.symfony-project.com + + + +2009-11-01T22:54:37.862628Z +23501 +FabianLange + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +unit.php +file + + + + +2012-05-10T18:41:43.601549Z +4a3b848c6b3a47c040f175133163e979 +2009-10-25T23:50:12.285944Z +23346 +FabianLange +has-props + + + + + + + + + + + + + + + + + + + + +770 + +functional.php +file + + + + +2012-05-10T18:41:43.601549Z +c205ba45156cdf204e23a4c33e3e4c2f +2009-11-01T22:54:37.862628Z +23501 +FabianLange +has-props + + + + + + + + + + + + + + + + + + + + +1371 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bootstrap/.svn/prop-base/functional.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bootstrap/.svn/prop-base/functional.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bootstrap/.svn/prop-base/functional.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bootstrap/.svn/prop-base/unit.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bootstrap/.svn/prop-base/unit.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bootstrap/.svn/prop-base/unit.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bootstrap/.svn/text-base/functional.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bootstrap/.svn/text-base/functional.php.svn-base new file mode 100644 index 0000000..ac867e1 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bootstrap/.svn/text-base/functional.php.svn-base @@ -0,0 +1,55 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +// we need SQLite for functional tests +if (!extension_loaded('SQLite') && !extension_loaded('pdo_SQLite')) +{ + return false; +} + +if (!isset($root_dir)) +{ + $root_dir = realpath(dirname(__FILE__).sprintf('/../%s/fixtures', isset($type) ? $type : 'functional')); +} + +require_once $root_dir.'/config/ProjectConfiguration.class.php'; +$configuration = ProjectConfiguration::getApplicationConfiguration($app, 'test', isset($debug) ? $debug : true); +sfContext::createInstance($configuration); + +// remove all cache +sf_functional_test_shutdown(); +register_shutdown_function('sf_functional_test_shutdown'); + +$configuration->initializePropel($app); +if (isset($fixtures)) +{ + $configuration->loadFixtures($fixtures); +} + +function sf_functional_test_shutdown_cleanup() +{ + sfToolkit::clearDirectory(sfConfig::get('sf_cache_dir')); + sfToolkit::clearDirectory(sfConfig::get('sf_log_dir')); +} + +function sf_functional_test_shutdown() +{ + // try/catch needed due to http://bugs.php.net/bug.php?id=33598 + try + { + sf_functional_test_shutdown_cleanup(); + } + catch (Exception $e) + { + echo $e.PHP_EOL; + } +} + +return true; diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bootstrap/.svn/text-base/unit.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bootstrap/.svn/text-base/unit.php.svn-base new file mode 100644 index 0000000..94b4912 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bootstrap/.svn/text-base/unit.php.svn-base @@ -0,0 +1,20 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../../../../test/bootstrap/unit.php'); + +require_once(dirname(__FILE__).'/../../../../autoload/sfSimpleAutoload.class.php'); +$autoload = sfSimpleAutoload::getInstance(sys_get_temp_dir().DIRECTORY_SEPARATOR.sprintf('sf_autoload_unit_propel_%s.data', md5(__FILE__))); +$autoload->addDirectory(realpath(dirname(__FILE__).'/../../lib')); +$autoload->register(); + +$_test_dir = realpath(dirname(__FILE__).'/..'); + +sfToolkit::addIncludePath(realpath(dirname(__FILE__).'/../../lib/vendor')); \ No newline at end of file diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bootstrap/functional.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bootstrap/functional.php new file mode 100644 index 0000000..ac867e1 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bootstrap/functional.php @@ -0,0 +1,55 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +// we need SQLite for functional tests +if (!extension_loaded('SQLite') && !extension_loaded('pdo_SQLite')) +{ + return false; +} + +if (!isset($root_dir)) +{ + $root_dir = realpath(dirname(__FILE__).sprintf('/../%s/fixtures', isset($type) ? $type : 'functional')); +} + +require_once $root_dir.'/config/ProjectConfiguration.class.php'; +$configuration = ProjectConfiguration::getApplicationConfiguration($app, 'test', isset($debug) ? $debug : true); +sfContext::createInstance($configuration); + +// remove all cache +sf_functional_test_shutdown(); +register_shutdown_function('sf_functional_test_shutdown'); + +$configuration->initializePropel($app); +if (isset($fixtures)) +{ + $configuration->loadFixtures($fixtures); +} + +function sf_functional_test_shutdown_cleanup() +{ + sfToolkit::clearDirectory(sfConfig::get('sf_cache_dir')); + sfToolkit::clearDirectory(sfConfig::get('sf_log_dir')); +} + +function sf_functional_test_shutdown() +{ + // try/catch needed due to http://bugs.php.net/bug.php?id=33598 + try + { + sf_functional_test_shutdown_cleanup(); + } + catch (Exception $e) + { + echo $e.PHP_EOL; + } +} + +return true; diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bootstrap/unit.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bootstrap/unit.php new file mode 100644 index 0000000..94b4912 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/bootstrap/unit.php @@ -0,0 +1,20 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../../../../test/bootstrap/unit.php'); + +require_once(dirname(__FILE__).'/../../../../autoload/sfSimpleAutoload.class.php'); +$autoload = sfSimpleAutoload::getInstance(sys_get_temp_dir().DIRECTORY_SEPARATOR.sprintf('sf_autoload_unit_propel_%s.data', md5(__FILE__))); +$autoload->addDirectory(realpath(dirname(__FILE__).'/../../lib')); +$autoload->register(); + +$_test_dir = realpath(dirname(__FILE__).'/..'); + +sfToolkit::addIncludePath(realpath(dirname(__FILE__).'/../../lib/vendor')); \ No newline at end of file diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/.svn/all-wcprops new file mode 100644 index 0000000..0dcea06 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/.svn/all-wcprops @@ -0,0 +1,29 @@ +K 25 +svn:wc:ra_dav:version-url +V 71 +/!svn/ver/31927/branches/1.4/lib/plugins/sfPropelPlugin/test/functional +END +pagerTest.php +K 25 +svn:wc:ra_dav:version-url +V 85 +/!svn/ver/24533/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/pagerTest.php +END +i18nTest.php +K 25 +svn:wc:ra_dav:version-url +V 84 +/!svn/ver/24597/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/i18nTest.php +END +formTest.php +K 25 +svn:wc:ra_dav:version-url +V 84 +/!svn/ver/23921/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/formTest.php +END +poolingTest.php +K 25 +svn:wc:ra_dav:version-url +V 87 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/poolingTest.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/.svn/entries new file mode 100644 index 0000000..cf97e59 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/.svn/entries @@ -0,0 +1,170 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional +http://svn.symfony-project.com + + + +2011-01-29T14:28:51.873803Z +31927 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +pagerTest.php +file + + + + +2012-05-10T18:41:41.673550Z +f46f1cc135267281b69a1de7d41f4490 +2009-11-29T15:58:01.774223Z +24533 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +878 + +i18nTest.php +file + + + + +2012-05-10T18:41:41.685571Z +0f1243b5d9b76fdc4302506577efecde +2009-11-30T19:53:50.069045Z +24597 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +5055 + +fixtures +dir + +formTest.php +file + + + + +2012-05-10T18:41:41.862509Z +6133d9cb13f0b98877c26c41494b3083 +2009-11-14T14:57:50.000337Z +23921 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +8477 + +crud +dir + +poolingTest.php +file + + + + +2012-05-10T18:41:41.897548Z +a5be5d2ede06b55c6d8a030150f77335 +2008-12-14T15:41:43.923524Z +14025 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +811 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/.svn/prop-base/formTest.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/.svn/prop-base/formTest.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/.svn/prop-base/formTest.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/.svn/prop-base/i18nTest.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/.svn/prop-base/i18nTest.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/.svn/prop-base/i18nTest.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/.svn/prop-base/pagerTest.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/.svn/prop-base/pagerTest.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/.svn/prop-base/pagerTest.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/.svn/prop-base/poolingTest.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/.svn/prop-base/poolingTest.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/.svn/prop-base/poolingTest.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/.svn/text-base/formTest.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/.svn/text-base/formTest.php.svn-base new file mode 100644 index 0000000..dc7323c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/.svn/text-base/formTest.php.svn-base @@ -0,0 +1,280 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'frontend'; +$fixtures = 'fixtures/fixtures.yml'; +if (!include(dirname(__FILE__).'/../bootstrap/functional.php')) +{ + return; +} + +$b = new sfTestBrowser(); + +// file upload +$fileToUpload = dirname(__FILE__).'/fixtures/config/databases.yml'; +$uploadedFile = sfConfig::get('sf_cache_dir').'/uploaded.yml'; +$name = 'test'; +$b-> + get('/attachment/index')-> + with('request')->begin()-> + isParameter('module', 'attachment')-> + isParameter('action', 'index')-> + end()-> + with('response')->isStatusCode(200)-> + click('submit', array('attachment' => array('name' => $name, 'file' => $fileToUpload)))-> + with('response')->begin()-> + isRedirected()-> + followRedirect()-> + end()-> + with('response')->begin()-> + matches('/ok/')-> + end() +; + +$b->test()->ok(file_exists($uploadedFile), 'file is uploaded'); +$b->test()->is(file_get_contents($uploadedFile), file_get_contents($fileToUpload), 'file is correctly uploaded'); + +$c = new Criteria(); +$c->add(AttachmentPeer::NAME, $name); +$attachments = AttachmentPeer::doSelect($c); + +$b->test()->is(count($attachments), 1, 'the attachment has been saved in the database'); +$b->test()->is($attachments[0]->getFile(), 'uploaded.yml', 'the attachment filename has been saved in the database'); + +@unlink($uploadedFile); +AttachmentPeer::doDeleteAll(); +$b->test()->ok(!file_exists($uploadedFile), 'uploaded file is deleted'); + +// file upload in embedded form +$b-> + getAndCheck('attachment', 'embedded')-> + with('response')->begin()-> + checkElement('input[name="article[attachment][article_id]"]', false)-> + checkElement('input[type="file"][name="article[attachment][file]"]')-> + end()-> + + setField('article[title]', 'Test Article')-> + setField('article[attachment][name]', $name)-> + setField('article[attachment][file]', $fileToUpload)-> + click('submit')-> + + with('form')->hasErrors(false)-> + + with('response')->begin()-> + isRedirected()-> + followRedirect()-> + end()-> + with('response')->begin()-> + matches('/ok/')-> + end() +; + +$b->test()->ok(file_exists($uploadedFile), 'file is uploaded'); +$b->test()->is(file_get_contents($uploadedFile), file_get_contents($fileToUpload), 'file is correctly uploaded'); + +$c = new Criteria(); +$c->add(AttachmentPeer::NAME, $name); +$attachments = AttachmentPeer::doSelect($c); + +$b->test()->is(count($attachments), 1, 'the attachment has been saved in the database'); +$b->test()->ok($attachments[0]->getArticleId(), 'the attachment is tied to an article'); +$b->test()->is($attachments[0]->getFile(), 'uploaded.yml', 'the attachment filename has been saved in the database'); + +// sfValidatorPropelUnique + +// create a category with a unique name +$b-> + get('/unique/category')-> + with('request')->begin()-> + isParameter('module', 'unique')-> + isParameter('action', 'category')-> + end()-> + with('response')->isStatusCode(200)-> + click('submit', array('category' => array('name' => 'foo')))-> + with('response')->begin()-> + isRedirected()-> + followRedirect()-> + end()-> + with('response')->begin()-> + matches('/ok/')-> + end() +; + +// create another category with the same name +// we must have an error +$b-> + get('/unique/category')-> + with('request')->begin()-> + isParameter('module', 'unique')-> + isParameter('action', 'category')-> + end()-> + with('response')->isStatusCode(200)-> + click('submit', array('category' => array('name' => 'foo')))-> + with('form')->begin()-> + hasErrors(1)-> + hasGlobalError(false)-> + isError('name', 'invalid')-> + end()-> + with('response')->begin()-> + checkElement('td[colspan="2"] .error_list li', 0)-> + checkElement('.error_list li', 'An object with the same "name" already exist.')-> + checkElement('.error_list li', 1)-> + end() +; + +// same thing but with a global error +$b-> + get('/unique/category')-> + with('request')->begin()-> + isParameter('module', 'unique')-> + isParameter('action', 'category')-> + end()-> + with('response')->isStatusCode(200)-> + click('submit', array('category' => array('name' => 'foo'), 'global' => 1))-> + with('form')->begin()-> + hasErrors(1)-> + hasGlobalError('invalid')-> + isError('name', false)-> + end()-> + with('response')->begin()-> + checkElement('td[colspan="2"] .error_list li', 'An object with the same "name" already exist.')-> + checkElement('td[colspan="2"] .error_list li', 1)-> + end() +; + +// updating the same category again with the same name is allowed +$b-> + get('/unique/category?category[id]='.CategoryPeer::getByName('foo')->getId())-> + with('request')->begin()-> + isParameter('module', 'unique')-> + isParameter('action', 'category')-> + end()-> + with('response')->isStatusCode(200)-> + click('submit')-> + with('response')->begin()-> + isRedirected()-> + followRedirect()-> + end()-> + with('response')->begin()-> + matches('/ok/')-> + end() +; + +// create an article with a unique title-category_id +$b-> + get('/unique/article')-> + with('request')->begin()-> + isParameter('module', 'unique')-> + isParameter('action', 'article')-> + end()-> + with('response')->isStatusCode(200)-> + click('submit', array('article' => array('title' => 'foo', 'category_id' => 1)))-> + with('response')->begin()-> + isRedirected()-> + followRedirect()-> + end()-> + with('response')->begin()-> + matches('/ok/')-> + end() +; + +// create another article with the same title but a different category_id +$b-> + get('/unique/article')-> + with('request')->begin()-> + isParameter('module', 'unique')-> + isParameter('action', 'article')-> + end()-> + with('response')->isStatusCode(200)-> + click('submit', array('article' => array('title' => 'foo', 'category_id' => 2)))-> + with('response')->begin()-> + isRedirected()-> + followRedirect()-> + end()-> + with('response')->begin()-> + matches('/ok/')-> + end() +; + +// create another article with the same title and category_id as the first one +// we must have an error +$b-> + get('/unique/article')-> + with('request')->begin()-> + isParameter('module', 'unique')-> + isParameter('action', 'article')-> + end()-> + with('response')->isStatusCode(200)-> + click('submit', array('article' => array('title' => 'foo', 'category_id' => 1)))-> + with('response')->checkElement('.error_list li', 'An object with the same "title, category_id" already exist.') +; + +// update the category from the article form +$b-> + get('/unique/edit')-> + with('request')->begin()-> + isParameter('module', 'unique')-> + isParameter('action', 'edit')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('input[value="foo title"]')-> + checkElement('#article_category_id option[selected="selected"]', 1)-> + checkElement('input[value="Category 1"]')-> + end()-> + click('submit', array('article' => array('title' => 'foo bar', 'category' => array('name' => 'Category foo'))))-> + with('response')->begin()-> + isRedirected()-> + followRedirect()-> + end()-> + with('response')->begin()-> + checkElement('input[value="foo bar"]')-> + checkElement('#article_category_id option[selected="selected"]', 1)-> + checkElement('input[value="Category foo"]')-> + end() +; + +// sfValidatorPropelChoice + +// submit a form with an impossible choice validator +$b-> + get('/choice/article')-> + with('request')->begin()-> + isParameter('module', 'choice')-> + isParameter('action', 'article')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + end()-> + click('submit', array('article' => array('title' => 'foobar', 'category_id' => 1, 'author_article_list' => array(1)), 'impossible_validator' => 1))-> + with('form')->begin()-> + hasErrors(1)-> + isError('category_id', 'invalid')-> + end() +; + +// sfValidatorPropelChoice (multiple == true) + +// submit a form with an impossible choice validator +$b-> + get('/choice/article')-> + with('request')->begin()-> + isParameter('module', 'choice')-> + isParameter('action', 'article')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + end()-> + click('submit', array('article' => array('title' => 'foobar', 'category_id' => 1, 'author_article_list' => array(1)), 'impossible_validator_many' => 1))-> + with('form')->begin()-> + hasErrors(1)-> + isError('author_article_list', 'invalid')-> + end() +; diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/.svn/text-base/i18nTest.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/.svn/text-base/i18nTest.php.svn-base new file mode 100644 index 0000000..64ff6a7 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/.svn/text-base/i18nTest.php.svn-base @@ -0,0 +1,159 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'frontend'; +$fixtures = 'fixtures/fixtures.yml'; +if (!include(dirname(__FILE__).'/../bootstrap/functional.php')) +{ + return; +} + +$b = new sfTestBrowser(new sfBrowser()); +$b->setTester('propel', 'sfTesterPropel'); + +// en +$b-> + get('/i18n/default')-> + with('request')->begin()-> + isParameter('module', 'i18n')-> + isParameter('action', 'default')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('#movies .toString:first', '')-> + checkElement('#movies .default:first', '')-> + checkElement('#movies .it:first', 'La Vita è bella')-> + checkElement('#movies .fr:first', 'La Vie est belle')-> + end() +; + +// fr +$b-> + get('/i18n/index')-> + with('request')->begin()-> + isParameter('module', 'i18n')-> + isParameter('action', 'index')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('#movies .toString:first', 'La Vie est belle')-> + checkElement('#movies .default:first', 'La Vie est belle')-> + checkElement('#movies .it:first', 'La Vita è bella')-> + checkElement('#movies .fr:first', 'La Vie est belle')-> + end() +; + +// still fr +$b-> + get('/i18n/default')-> + with('request')->begin()-> + isParameter('module', 'i18n')-> + isParameter('action', 'default')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('#movies .toString:first', 'La Vie est belle')-> + checkElement('#movies .default:first', 'La Vie est belle')-> + checkElement('#movies .it:first', 'La Vita è bella')-> + checkElement('#movies .fr:first', 'La Vie est belle')-> + end() +; + +// i18n forms +$b-> + get('/i18n/movie')-> + with('request')->begin()-> + isParameter('module', 'i18n')-> + isParameter('action', 'movie')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('#movie_fr_id', false)-> + checkElement('#movie_fr_culture', false)-> + end()-> + + click('submit', array('movie' => array('director' => 'Robert Aldrich', 'en' => array('title' => 'The Dirty Dozen'), 'fr' => array('title' => 'Les Douze Salopards'))))-> + with('response')->begin()-> + isRedirected()-> + followRedirect()-> + end()-> + with('response')->begin()-> + checkElement('input[value="Robert Aldrich"]')-> + checkElement('input[value="The Dirty Dozen"]')-> + checkElement('input[value="Les Douze Salopards"]')-> + checkElement('#movie_fr_id', true)-> + checkElement('#movie_fr_culture', true)-> + end()-> + + with('propel')->begin()-> + check('Movie', array(), 2)-> + check('Movie', array('director' => 'Robert Aldrich', 'id' => 2))-> + check('MovieI18N', array(), 4)-> + check('MovieI18N', array('id' => 2), 2)-> + check('MovieI18N', array('culture' => 'fr', 'id' => 2, 'title' => 'Les Douze Salopards'))-> + check('MovieI18N', array('culture' => 'en', 'id' => 2, 'title' => 'The Dirty Dozen'))-> + end()-> + + click('submit', array('movie' => array('director' => 'Robert Aldrich (1)', 'en' => array('title' => 'The Dirty Dozen (1)'), 'fr' => array('title' => 'Les Douze Salopards (1)'))))-> + with('response')->begin()-> + isRedirected()-> + followRedirect()-> + end()-> + with('response')->begin()-> + checkElement('input[value="Robert Aldrich (1)"]')-> + checkElement('input[value="The Dirty Dozen (1)"]')-> + checkElement('input[value="Les Douze Salopards (1)"]')-> + end()-> + + with('propel')->begin()-> + check('Movie', array(), 2)-> + check('Movie', array('director' => 'Robert Aldrich (1)', 'id' => 2))-> + check('MovieI18N', array(), 4)-> + check('MovieI18N', array('id' => 2), 2)-> + check('MovieI18N', array('culture' => 'fr', 'id' => 2, 'title' => 'Les Douze Salopards (1)'))-> + check('MovieI18N', array('culture' => 'en', 'id' => 2, 'title' => 'The Dirty Dozen (1)'))-> + end()-> + + // Bug #7486 + click('submit')-> + + with('form')->begin()-> + hasErrors(false)-> + end()-> + + get('/i18n/movie')-> + click('submit', array('movie' => array('director' => 'Robert Aldrich', 'en' => array('title' => 'The Dirty Dozen (1)'), 'fr' => array('title' => 'Les Douze Salopards (1)'))))-> + + with('form')->begin()-> + hasErrors(2)-> + end()-> + + click('submit', array('movie' => array('director' => 'Robert Aldrich', 'en' => array('title' => 'The Dirty Dozen'), 'fr' => array('title' => 'Les Douze Salopards'))))-> + + with('form')->begin()-> + hasErrors(false)-> + end()-> + with('response')->begin()-> + isRedirected()-> + followRedirect()-> + end()-> + with('response')->begin()-> + checkElement('input[value="Robert Aldrich"]')-> + checkElement('input[value="The Dirty Dozen"]')-> + checkElement('input[value="Les Douze Salopards"]')-> + end() + // END: Bug #7486 +; + +$b->getAndCheck('i18n', 'products') + ->with('response')->begin() + ->checkElement('ul#products li.toString', 'PRIMARY STRING') + ->end() +; diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/.svn/text-base/pagerTest.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/.svn/text-base/pagerTest.php.svn-base new file mode 100644 index 0000000..2482af1 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/.svn/text-base/pagerTest.php.svn-base @@ -0,0 +1,39 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'frontend'; +$fixtures = 'fixtures/fixtures.yml'; +if (!include(dirname(__FILE__).'/../bootstrap/functional.php')) +{ + return; +} + +$browser = new sfTestFunctional(new sfBrowser()); + +ArticlePeer::doDeleteAll(); +$category = CategoryPeer::doSelectOne(new Criteria()); + +foreach (range(1, 20) as $n) +{ + $article = new Article(); + $article->setTitle(sprintf('Article #%s', $n)); + $article->setCategory($category); + $article->save(); +} + +$browser + ->getAndCheck('pager', 'interfaces') + + ->with('response')->begin() + ->checkElement('#pagerResults li', 10) + + ->checkElement('#pagerCount:contains(20)') + ->end() +; diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/.svn/text-base/poolingTest.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/.svn/text-base/poolingTest.php.svn-base new file mode 100644 index 0000000..3b93cbb --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/.svn/text-base/poolingTest.php.svn-base @@ -0,0 +1,30 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'frontend'; +$fixtures = 'fixtures/fixtures.yml'; +if (!include(dirname(__FILE__).'/../bootstrap/functional.php')) +{ + return; +} + +$b = new sfTestFunctional(new sfBrowser(), null, array('propel' => 'sfTesterPropel')); + +ArticlePeer::doDeleteAll(); +$c = CategoryPeer::doSelectOne(new Criteria()); +$hash = spl_object_hash($c); + +$b-> + get('/pooling/addArticleButDontSave/category_id/'.$c->getId())-> + with('propel')->check('Article', null, 0)-> + + get('/pooling/addArticleAndSave/category_id/'.$c->getId())-> + with('propel')->check('Article', null, 1) +; diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/all-wcprops new file mode 100644 index 0000000..88a004e --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/all-wcprops @@ -0,0 +1,65 @@ +K 25 +svn:wc:ra_dav:version-url +V 76 +/!svn/ver/31927/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/crud +END +crud10Test.php +K 25 +svn:wc:ra_dav:version-url +V 91 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/crud/crud10Test.php +END +rest1Test.php +K 25 +svn:wc:ra_dav:version-url +V 90 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/crud/rest1Test.php +END +crud2Test.php +K 25 +svn:wc:ra_dav:version-url +V 90 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/crud/crud2Test.php +END +rest2Test.php +K 25 +svn:wc:ra_dav:version-url +V 90 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/crud/rest2Test.php +END +crud3Test.php +K 25 +svn:wc:ra_dav:version-url +V 90 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/crud/crud3Test.php +END +crud6Test.php +K 25 +svn:wc:ra_dav:version-url +V 90 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/crud/crud6Test.php +END +crud7Test.php +K 25 +svn:wc:ra_dav:version-url +V 90 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/crud/crud7Test.php +END +crudBrowser.class.php +K 25 +svn:wc:ra_dav:version-url +V 98 +/!svn/ver/31927/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/crud/crudBrowser.class.php +END +restBrowser.class.php +K 25 +svn:wc:ra_dav:version-url +V 98 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/crud/restBrowser.class.php +END +crud9Test.php +K 25 +svn:wc:ra_dav:version-url +V 90 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/crud/crud9Test.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/entries new file mode 100644 index 0000000..4aeb868 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/entries @@ -0,0 +1,368 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/crud +http://svn.symfony-project.com + + + +2011-01-29T14:28:51.873803Z +31927 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +crud10Test.php +file + + + + +2012-05-10T18:41:41.325550Z +49362b451082fb60a2f0d2aa15b06fb3 +2008-09-12T05:11:21.718276Z +11468 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +502 + +rest1Test.php +file + + + + +2012-05-10T18:41:41.325550Z +8802b3378f1f1f1bc631da324a196163 +2008-09-12T11:07:23.596269Z +11475 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +492 + +crud2Test.php +file + + + + +2012-05-10T18:41:41.325550Z +32c74bf4caca994059b9376a720c4c66 +2008-02-25T22:55:52.534102Z +7610 +dwhittle +has-props + + + + + + + + + + + + + + + + + + + + +511 + +rest2Test.php +file + + + + +2012-05-10T18:41:41.325550Z +c5896096ce50b20eecda2bf21f670862 +2008-09-12T11:07:23.596269Z +11475 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +515 + +crud3Test.php +file + + + + +2012-05-10T18:41:41.333552Z +acdedb2b0b7b9e429e15c6de04c7755c +2008-02-25T22:55:52.534102Z +7610 +dwhittle +has-props + + + + + + + + + + + + + + + + + + + + +536 + +crud6Test.php +file + + + + +2012-05-10T18:41:41.333552Z +52bfa7bb38320cdd0a00b685654951fd +2008-02-25T22:55:52.534102Z +7610 +dwhittle +has-props + + + + + + + + + + + + + + + + + + + + +492 + +crud7Test.php +file + + + + +2012-05-10T18:41:41.461548Z +0cf5e67450cdf283fe098aa24beb807f +2008-02-25T22:55:52.534102Z +7610 +dwhittle +has-props + + + + + + + + + + + + + + + + + + + + +515 + +crudBrowser.class.php +file + + + + +2012-05-10T18:41:41.461548Z +bf83645b93abbfde941249523415724b +2011-01-29T14:28:51.873803Z +31927 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +14598 + +restBrowser.class.php +file + + + + +2012-05-10T18:41:41.465552Z +a3434688e012c4e3e730e03b40a90167 +2008-11-08T13:30:13.504831Z +12768 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +1040 + +crud9Test.php +file + + + + +2012-05-10T18:41:41.465552Z +27c969e00d288306daf57f7c48e6cab2 +2008-06-26T00:57:01.753346Z +9877 +dwhittle +has-props + + + + + + + + + + + + + + + + + + + + +523 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/prop-base/crud10Test.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/prop-base/crud10Test.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/prop-base/crud10Test.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/prop-base/crud2Test.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/prop-base/crud2Test.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/prop-base/crud2Test.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/prop-base/crud3Test.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/prop-base/crud3Test.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/prop-base/crud3Test.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/prop-base/crud6Test.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/prop-base/crud6Test.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/prop-base/crud6Test.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/prop-base/crud7Test.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/prop-base/crud7Test.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/prop-base/crud7Test.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/prop-base/crud9Test.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/prop-base/crud9Test.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/prop-base/crud9Test.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/prop-base/crudBrowser.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/prop-base/crudBrowser.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/prop-base/crudBrowser.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/prop-base/rest1Test.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/prop-base/rest1Test.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/prop-base/rest1Test.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/prop-base/rest2Test.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/prop-base/rest2Test.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/prop-base/rest2Test.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/prop-base/restBrowser.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/prop-base/restBrowser.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/prop-base/restBrowser.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/text-base/crud10Test.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/text-base/crud10Test.php.svn-base new file mode 100644 index 0000000..ee2a7ef --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/text-base/crud10Test.php.svn-base @@ -0,0 +1,21 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'crud'; +$fixtures = 'fixtures/fixtures.yml'; +if (!include(dirname(__FILE__).'/../../bootstrap/functional.php')) +{ + return; +} + +require_once(dirname(__FILE__).'/crudBrowser.class.php'); + +$b = new CrudBrowser(); +$b->browse(array('with-show')); diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/text-base/crud2Test.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/text-base/crud2Test.php.svn-base new file mode 100644 index 0000000..ada38a0 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/text-base/crud2Test.php.svn-base @@ -0,0 +1,21 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'crud'; +$fixtures = 'fixtures/fixtures.yml'; +if (!include(dirname(__FILE__).'/../../bootstrap/functional.php')) +{ + return; +} + +require_once(dirname(__FILE__).'/crudBrowser.class.php'); + +$b = new CrudBrowser(); +$b->browse(array('generate-in-cache')); diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/text-base/crud3Test.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/text-base/crud3Test.php.svn-base new file mode 100644 index 0000000..8f7e67b --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/text-base/crud3Test.php.svn-base @@ -0,0 +1,21 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'crud'; +$fixtures = 'fixtures/fixtures.yml'; +if (!include(dirname(__FILE__).'/../../bootstrap/functional.php')) +{ + return; +} + +require_once(dirname(__FILE__).'/crudBrowser.class.php'); + +$b = new CrudBrowser(); +$b->browse(array('generate-in-cache', 'non-verbose-templates')); diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/text-base/crud6Test.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/text-base/crud6Test.php.svn-base new file mode 100644 index 0000000..48dd228 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/text-base/crud6Test.php.svn-base @@ -0,0 +1,21 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'crud'; +$fixtures = 'fixtures/fixtures.yml'; +if (!include(dirname(__FILE__).'/../../bootstrap/functional.php')) +{ + return; +} + +require_once(dirname(__FILE__).'/crudBrowser.class.php'); + +$b = new CrudBrowser(); +$b->browse(array()); diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/text-base/crud7Test.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/text-base/crud7Test.php.svn-base new file mode 100644 index 0000000..08e801c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/text-base/crud7Test.php.svn-base @@ -0,0 +1,21 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'crud'; +$fixtures = 'fixtures/fixtures.yml'; +if (!include(dirname(__FILE__).'/../../bootstrap/functional.php')) +{ + return; +} + +require_once(dirname(__FILE__).'/crudBrowser.class.php'); + +$b = new CrudBrowser(); +$b->browse(array('non-verbose-templates')); diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/text-base/crud9Test.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/text-base/crud9Test.php.svn-base new file mode 100644 index 0000000..e563dca --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/text-base/crud9Test.php.svn-base @@ -0,0 +1,21 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'crud'; +$fixtures = 'fixtures/fixtures.yml'; +if (!include(dirname(__FILE__).'/../../bootstrap/functional.php')) +{ + return; +} + +require_once(dirname(__FILE__).'/crudBrowser.class.php'); + +$b = new CrudBrowser(); +$b->browse(array('generate-in-cache', 'with-show')); diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/text-base/crudBrowser.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/text-base/crudBrowser.class.php.svn-base new file mode 100644 index 0000000..318c35c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/text-base/crudBrowser.class.php.svn-base @@ -0,0 +1,359 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +class CrudBrowser extends sfTestBrowser +{ + protected + $urlPrefix = 'article', + $singularName = 'Article', + $pluralName = 'Articles', + $projectDir = ''; + + public function setup($options) + { + $this->projectDir = dirname(__FILE__).'/../fixtures'; + $this->cleanup(); + + chdir($this->projectDir); + $task = new sfPropelGenerateModuleTask(new sfEventDispatcher(), new sfFormatter()); + $options[] = 'env=test'; + $options[] = 'singular='.$this->singularName; + $options[] = 'plural='.$this->pluralName; + $options[] = '--non-verbose-templates'; + $task->run(array('crud', 'article', 'Article'), $options); + + require_once($this->projectDir.'/config/ProjectConfiguration.class.php'); + sfContext::createInstance(ProjectConfiguration::getApplicationConfiguration('crud', 'test', true, $this->projectDir)); + + return $options; + } + + public function teardown() + { + $this->cleanup(); + + return $this; + } + + public function browse($options) + { + $options = $this->setup($options); + + // list page + $this-> + info('list page')-> + get('/'.$this->urlPrefix)-> + with('request')->begin()-> + isParameter('module', $this->urlPrefix)-> + isParameter('action', 'index')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + + checkElement('h1', $this->pluralName.' List')-> + + checkElement('table thead tr th:nth(0)', 'Id')-> + checkElement('table thead tr th:nth(1)', 'Title')-> + checkElement('table thead tr th:nth(2)', 'Body')-> + checkElement('table thead tr th:nth(3)', 'Online')-> + checkElement('table thead tr th:nth(4)', 'Excerpt')-> + checkElement('table thead tr th:nth(5)', 'Category')-> + checkElement('table thead tr th:nth(6)', 'Created at')-> + checkElement('table thead tr th:nth(7)', 'End date')-> + checkElement('table thead tr th:nth(8)', 'Book')-> + + checkElement('table tbody tr td:nth(0)', '1')-> + checkElement('table tbody tr td:nth(1)', 'foo title')-> + checkElement('table tbody tr td:nth(2)', 'bar body')-> + checkElement('table tbody tr td:nth(3)', '1')-> + checkElement('table tbody tr td:nth(4)', 'foo excerpt')-> + checkElement('table tbody tr td:nth(5)', '1')-> + checkElement('table tbody tr td:nth(6)', '/^\d{4}\-\d{2}\-\d{2} \d{2}\:\d{2}\:\d{2}$/')-> + checkElement('table tbody tr td:nth(7)', '')-> + checkElement('table tbody tr td:nth(8)', '')-> + checkElement(sprintf('a[href*="/%s/new"]', $this->urlPrefix))-> + checkElement(sprintf('tbody a[href*="/%s/1%s"]', $this->urlPrefix, in_array('with-show', $options) ? '' : '/edit'))-> + checkElement(sprintf('tbody a[href*="/%s/2%s"]', $this->urlPrefix, in_array('with-show', $options) ? '' : '/edit'))-> + end() + ; + + // create page + $this-> + info('create page')-> + click('New')-> + with('request')->begin()-> + isParameter('module', $this->urlPrefix)-> + isParameter('action', 'new')-> + isParameter('id', null)-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('h1', 'New '.$this->singularName)-> + checkElement(sprintf('a[href*="/%s"]', $this->urlPrefix), 'Back to list')-> + checkElement(sprintf('a[href*="/%s/"]', $this->urlPrefix), false)-> + end()-> + checkFormValues(array( + 'title' => '', + 'body' => '', + 'Online' => false, + 'category_id' => 0, + 'end_date' => array('year' => '', 'month' => '', 'day' => '', 'hour' => '', 'minute' => ''), + 'book_id' => 0, + 'author_article_list' => array(), + )) + ; + + // save + $this-> + info('save')-> + saveValues($options, array( + 'title' => 'my real title', + 'body' => 'my real body', + 'Online' => true, + 'category_id' => 2, + 'end_date' => array('year' => '', 'month' => '', 'day' => '', 'hour' => '', 'minute' => ''), + 'book_id' => null, + 'author_article_list' => array(1, 2), + ), 3, true) + ; + + // go back to the list + $this-> + info('go back to the list')-> + click('Back to list')-> + with('request')->begin()-> + isParameter('module', $this->urlPrefix)-> + isParameter('action', 'index')-> + end()-> + with('response')->isStatusCode(200) + ; + + // edit page + $this->info('edit page'); + if (!in_array('with-show', $options) && ($options['with-show'] === true)) + { + $this->click('3'); + } + else + { + $this->get(sprintf('/%s/3/edit', $this->urlPrefix)); + } + + $this-> + with('request')->begin()-> + isParameter('module', $this->urlPrefix)-> + isParameter('action', 'edit')-> + isParameter('id', 3)-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('h1', 'Edit '.$this->singularName)-> + checkElement(sprintf('a[href*="/%s"]', $this->urlPrefix), 'Back to list')-> + checkElement(sprintf('a[href*="/%s/3"]', $this->urlPrefix), 'Delete')-> + checkElement(sprintf('a[href*="/%s/3"][onclick*="confirm"]', $this->urlPrefix))-> + checkElement('table tbody th:nth(0)', 'Title')-> + checkElement('table tbody th:nth(1)', 'Body')-> + checkElement('table tbody th:nth(2)', 'Online')-> + checkElement('table tbody th:nth(3)', 'Excerpt')-> + checkElement('table tbody th:nth(4)', 'Category')-> + checkElement('table tbody th:nth(5)', 'Created at')-> + checkElement('table tbody th:nth(6)', 'End date')-> + checkElement('table tbody th:nth(7)', 'Book')-> + checkElement('table tbody th:nth(8)', 'Author article list')-> + checkElement('table tbody td select[id="article_category_id"][name="article[category_id]"] option', 2)-> + checkElement('table tbody td select[id="article_book_id"][name="article[book_id]"] option', 2)-> + end() + ; + + // save / validation + $values = array( + 'id' => 1009299, + 'title' => '', + 'body' => 'my body', + 'Online' => true, + 'excerpt' => 'my excerpt', + 'category_id' => null, + 'end_date' => array('year' => 0, 'month' => 0, 'day' => 15, 'hour' => '10', 'minute' => '20'), + 'book_id' => 149999, + 'author_article_list' => array(0, 5), + ); + + $this-> + info('save / validation')-> + click('Save', array('article' => $values))-> + with('request')->begin()-> + isParameter('module', $this->urlPrefix)-> + isParameter('action', 'update')-> + end()-> + checkFormValues(array_merge($values, array( + 'end_date' => array('year' => null, 'month' => null, 'day' => 15, 'hour' => '10', 'minute' => '20'))) + )-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('ul[class="error_list"] li:contains("Required.")', 2)-> + checkElement('ul[class="error_list"] li:contains("Invalid.")', 4)-> + end() + ; + + // save + $this-> + info('save')-> + saveValues($options, array( + 'id' => 3, + 'title' => 'my title', + 'body' => 'my body', + 'Online' => false, + 'category_id' => 1, + 'end_date' => array('year' => date('Y'), 'month' => 10, 'day' => 15, 'hour' => '10', 'minute' => '20'), + 'book_id' => 1, + 'author_article_list' => array(1, 3), + ), 3, false) + ; + + // go back to the list + $this-> + info('go back to the list')-> + click('Back to list')-> + with('request')->begin()-> + isParameter('module', $this->urlPrefix)-> + isParameter('action', 'index')-> + end()-> + with('response')->isStatusCode(200) + ; + + // delete + $this-> + info('delete')-> + get(sprintf('/%s/3/edit', $this->urlPrefix))-> + click('Delete', array(), array('method' => 'delete', '_with_csrf' => true))-> + with('request')->begin()-> + isParameter('module', $this->urlPrefix)-> + isParameter('action', 'delete')-> + end()-> + with('response')->begin()-> + isRedirected()-> + followRedirect()-> + end()-> + with('request')->begin()-> + isParameter('module', $this->urlPrefix)-> + isParameter('action', 'index')-> + end()-> + with('response')->isStatusCode(200)-> + + get(sprintf('/%s/3/edit', $this->urlPrefix))-> + with('response')->isStatusCode(404) + ; + + if (in_array('with-show', $options)) + { + // show page + $this-> + info('show page')-> + get(sprintf('/%s/2', $this->urlPrefix))-> + with('request')->begin()-> + isParameter('module', $this->urlPrefix)-> + isParameter('action', 'show')-> + isParameter('id', 2)-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement(sprintf('a[href*="/%s/2%s"]', $this->urlPrefix, in_array('with-show', $options) ? '' : '/edit'), 'Edit')-> + checkElement(sprintf('a[href*="/%s"]', $this->urlPrefix), 'List', array('position' => 1))-> + checkElement('body table tbody tr:nth(0)', '/Id\:\s+2/')-> + checkElement('body table tbody tr:nth(1)', '/Title\:\s+foo foo title/')-> + checkElement('body table tbody tr:nth(2)', '/Body\:\s+bar bar body/')-> + checkElement('body table tbody tr:nth(3)', '/Online\:\s+/')-> + checkElement('body table tbody tr:nth(4)', '/Excerpt\:\s+foo excerpt/')-> + checkElement('body table tbody tr:nth(5)', '/Category\:\s+2/')-> + checkElement('body table tbody tr:nth(6)', '/Created at\:\s+[0-9\-\:\s]+/')-> + checkElement('body table tbody tr:nth(7)', '/End date\:\s+[0-9\-\:\s]+/')-> + checkElement('body table tbody tr:nth(8)', '/Book\:\s+/')-> + end() + ; + } + else + { + $this->get(sprintf('/%s/show/id/2', $this->urlPrefix))->with('response')->isStatusCode(404); + } + + $this->teardown(); + + return $this; + } + + public function saveValues($options, $values, $id, $creation) + { + $this-> + click('Save', array('article' => $values))-> + with('request')->begin()-> + isParameter('module', $this->urlPrefix)-> + isParameter('action', $creation ? 'create' : 'update')-> + end()-> + with('response')->begin()-> + isRedirected()-> + followRedirect()-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + end()-> + with('request')->begin()-> + isParameter('module', $this->urlPrefix)-> + isParameter('action', 'edit')-> + isParameter('id', $id)-> + end()-> + checkFormValues($values) + ; + + return $this; + } + + public function checkFormValues(array $values) + { + return $this->with('response')->begin()-> + checkElement(sprintf('table tbody td input[id="article_title"][name="article[title]"][value="%s"]', $values['title']))-> + + checkElement('table tbody td textarea[id="article_body"][name="article[body]"]', $values['body'])-> + + checkElement(sprintf('table tbody td input[id="article_Online"][name="article[Online]"][type="checkbox"]%s', $values['Online'] ? '[checked="checked"]' : ''))-> + + checkElement(sprintf('table tbody td select[id="article_category_id"][name="article[category_id]"] option[value="1"]%s', $values['category_id'] == 1 ? '[selected="selected"]' : ''), 'Category 1')-> + checkElement(sprintf('table tbody td select[id="article_category_id"][name="article[category_id]"] option[value="2"]%s', $values['category_id'] == 2 ? '[selected="selected"]' : ''), 'Category 2')-> + + checkElement(sprintf('table tbody td select[id="article_book_id"][name="article[book_id]"] option[value=""]%s', $values['book_id'] == '' ? '[selected="selected"]' : ''), '')-> + checkElement(sprintf('table tbody td select[id="article_book_id"][name="article[book_id]"] option[value="1"]%s', $values['book_id'] == 1 ? '[selected="selected"]' : ''), 'The definitive guide to symfony')-> + + checkElement(sprintf('table tbody td select[id="article_author_article_list"][name="article[author_article_list][]"] option[value="1"]%s', in_array(1, $values['author_article_list']) ? '[selected="selected"]' : ''), 'Fabien')-> + checkElement(sprintf('table tbody td select[id="article_author_article_list"][name="article[author_article_list][]"] option[value="2"]%s', in_array(2, $values['author_article_list']) ? '[selected="selected"]' : ''), 'Thomas')-> + checkElement(sprintf('table tbody td select[id="article_author_article_list"][name="article[author_article_list][]"] option[value="3"]%s', in_array(3, $values['author_article_list']) ? '[selected="selected"]' : ''), 'Hélène')-> + + checkElement('table tbody td select[id="article_end_date_year"][name="article[end_date][year]"] option[selected="selected"]', (string) $values['end_date']['year'])-> + checkElement('table tbody td select[id="article_end_date_month"][name="article[end_date][month]"] option[selected="selected"]', (string) $values['end_date']['month'])-> + checkElement('table tbody td select[id="article_end_date_day"][name="article[end_date][day]"] option[selected="selected"]', (string) $values['end_date']['day'])-> + checkElement('table tbody td select[id="article_end_date_hour"][name="article[end_date][hour]"] option[selected="selected"]', (string) $values['end_date']['hour'])-> + checkElement('table tbody td select[id="article_end_date_minute"][name="article[end_date][minute]"] option[selected="selected"]', (string) $values['end_date']['minute'])-> + end(); + } + + protected function clearDirectory($dir) + { + sfToolkit::clearDirectory($dir); + if (is_dir($dir)) + { + rmdir($dir); + } + } + + protected function cleanup() + { + $this->clearDirectory(sprintf($this->projectDir.'/apps/crud/modules/%s', $this->urlPrefix)); + $this->clearDirectory(sprintf($this->projectDir.'/cache/crud/test/modules/auto%s', ucfirst($this->urlPrefix))); + $this->clearDirectory($this->projectDir.'/test/functional/crud'); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/text-base/rest1Test.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/text-base/rest1Test.php.svn-base new file mode 100644 index 0000000..d41fcd9 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/text-base/rest1Test.php.svn-base @@ -0,0 +1,21 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'crud'; +$fixtures = 'fixtures/fixtures.yml'; +if (!include(dirname(__FILE__).'/../../bootstrap/functional.php')) +{ + return; +} + +require_once(dirname(__FILE__).'/restBrowser.class.php'); + +$b = new RestBrowser(); +$b->browse(array()); diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/text-base/rest2Test.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/text-base/rest2Test.php.svn-base new file mode 100644 index 0000000..51d9a26 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/text-base/rest2Test.php.svn-base @@ -0,0 +1,21 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'crud'; +$fixtures = 'fixtures/fixtures.yml'; +if (!include(dirname(__FILE__).'/../../bootstrap/functional.php')) +{ + return; +} + +require_once(dirname(__FILE__).'/restBrowser.class.php'); + +$b = new RestBrowser(); +$b->browse(array('non-verbose-templates')); diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/text-base/restBrowser.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/text-base/restBrowser.class.php.svn-base new file mode 100644 index 0000000..be12bd0 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/.svn/text-base/restBrowser.class.php.svn-base @@ -0,0 +1,36 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/crudBrowser.class.php'); + +class RestBrowser extends CrudBrowser +{ + protected + $urlPrefix = 'articles'; + + public function setup($options) + { + $this->projectDir = dirname(__FILE__).'/../fixtures'; + $this->cleanup(); + + chdir($this->projectDir); + $task = new sfPropelGenerateModuleForRouteTask(new sfEventDispatcher(), new sfFormatter()); + $options[] = 'env=test'; + $options[] = '--non-verbose-templates'; + $task->run(array('crud', 'articles'), $options); + + require_once($this->projectDir.'/config/ProjectConfiguration.class.php'); + sfContext::createInstance(ProjectConfiguration::getApplicationConfiguration('crud', 'test', true, $this->projectDir)); + + $options['with-show'] = true; + + return $options; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/crud10Test.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/crud10Test.php new file mode 100644 index 0000000..ee2a7ef --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/crud10Test.php @@ -0,0 +1,21 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'crud'; +$fixtures = 'fixtures/fixtures.yml'; +if (!include(dirname(__FILE__).'/../../bootstrap/functional.php')) +{ + return; +} + +require_once(dirname(__FILE__).'/crudBrowser.class.php'); + +$b = new CrudBrowser(); +$b->browse(array('with-show')); diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/crud2Test.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/crud2Test.php new file mode 100644 index 0000000..ada38a0 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/crud2Test.php @@ -0,0 +1,21 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'crud'; +$fixtures = 'fixtures/fixtures.yml'; +if (!include(dirname(__FILE__).'/../../bootstrap/functional.php')) +{ + return; +} + +require_once(dirname(__FILE__).'/crudBrowser.class.php'); + +$b = new CrudBrowser(); +$b->browse(array('generate-in-cache')); diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/crud3Test.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/crud3Test.php new file mode 100644 index 0000000..8f7e67b --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/crud3Test.php @@ -0,0 +1,21 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'crud'; +$fixtures = 'fixtures/fixtures.yml'; +if (!include(dirname(__FILE__).'/../../bootstrap/functional.php')) +{ + return; +} + +require_once(dirname(__FILE__).'/crudBrowser.class.php'); + +$b = new CrudBrowser(); +$b->browse(array('generate-in-cache', 'non-verbose-templates')); diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/crud6Test.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/crud6Test.php new file mode 100644 index 0000000..48dd228 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/crud6Test.php @@ -0,0 +1,21 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'crud'; +$fixtures = 'fixtures/fixtures.yml'; +if (!include(dirname(__FILE__).'/../../bootstrap/functional.php')) +{ + return; +} + +require_once(dirname(__FILE__).'/crudBrowser.class.php'); + +$b = new CrudBrowser(); +$b->browse(array()); diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/crud7Test.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/crud7Test.php new file mode 100644 index 0000000..08e801c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/crud7Test.php @@ -0,0 +1,21 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'crud'; +$fixtures = 'fixtures/fixtures.yml'; +if (!include(dirname(__FILE__).'/../../bootstrap/functional.php')) +{ + return; +} + +require_once(dirname(__FILE__).'/crudBrowser.class.php'); + +$b = new CrudBrowser(); +$b->browse(array('non-verbose-templates')); diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/crud9Test.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/crud9Test.php new file mode 100644 index 0000000..e563dca --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/crud9Test.php @@ -0,0 +1,21 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'crud'; +$fixtures = 'fixtures/fixtures.yml'; +if (!include(dirname(__FILE__).'/../../bootstrap/functional.php')) +{ + return; +} + +require_once(dirname(__FILE__).'/crudBrowser.class.php'); + +$b = new CrudBrowser(); +$b->browse(array('generate-in-cache', 'with-show')); diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/crudBrowser.class.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/crudBrowser.class.php new file mode 100644 index 0000000..318c35c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/crudBrowser.class.php @@ -0,0 +1,359 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +class CrudBrowser extends sfTestBrowser +{ + protected + $urlPrefix = 'article', + $singularName = 'Article', + $pluralName = 'Articles', + $projectDir = ''; + + public function setup($options) + { + $this->projectDir = dirname(__FILE__).'/../fixtures'; + $this->cleanup(); + + chdir($this->projectDir); + $task = new sfPropelGenerateModuleTask(new sfEventDispatcher(), new sfFormatter()); + $options[] = 'env=test'; + $options[] = 'singular='.$this->singularName; + $options[] = 'plural='.$this->pluralName; + $options[] = '--non-verbose-templates'; + $task->run(array('crud', 'article', 'Article'), $options); + + require_once($this->projectDir.'/config/ProjectConfiguration.class.php'); + sfContext::createInstance(ProjectConfiguration::getApplicationConfiguration('crud', 'test', true, $this->projectDir)); + + return $options; + } + + public function teardown() + { + $this->cleanup(); + + return $this; + } + + public function browse($options) + { + $options = $this->setup($options); + + // list page + $this-> + info('list page')-> + get('/'.$this->urlPrefix)-> + with('request')->begin()-> + isParameter('module', $this->urlPrefix)-> + isParameter('action', 'index')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + + checkElement('h1', $this->pluralName.' List')-> + + checkElement('table thead tr th:nth(0)', 'Id')-> + checkElement('table thead tr th:nth(1)', 'Title')-> + checkElement('table thead tr th:nth(2)', 'Body')-> + checkElement('table thead tr th:nth(3)', 'Online')-> + checkElement('table thead tr th:nth(4)', 'Excerpt')-> + checkElement('table thead tr th:nth(5)', 'Category')-> + checkElement('table thead tr th:nth(6)', 'Created at')-> + checkElement('table thead tr th:nth(7)', 'End date')-> + checkElement('table thead tr th:nth(8)', 'Book')-> + + checkElement('table tbody tr td:nth(0)', '1')-> + checkElement('table tbody tr td:nth(1)', 'foo title')-> + checkElement('table tbody tr td:nth(2)', 'bar body')-> + checkElement('table tbody tr td:nth(3)', '1')-> + checkElement('table tbody tr td:nth(4)', 'foo excerpt')-> + checkElement('table tbody tr td:nth(5)', '1')-> + checkElement('table tbody tr td:nth(6)', '/^\d{4}\-\d{2}\-\d{2} \d{2}\:\d{2}\:\d{2}$/')-> + checkElement('table tbody tr td:nth(7)', '')-> + checkElement('table tbody tr td:nth(8)', '')-> + checkElement(sprintf('a[href*="/%s/new"]', $this->urlPrefix))-> + checkElement(sprintf('tbody a[href*="/%s/1%s"]', $this->urlPrefix, in_array('with-show', $options) ? '' : '/edit'))-> + checkElement(sprintf('tbody a[href*="/%s/2%s"]', $this->urlPrefix, in_array('with-show', $options) ? '' : '/edit'))-> + end() + ; + + // create page + $this-> + info('create page')-> + click('New')-> + with('request')->begin()-> + isParameter('module', $this->urlPrefix)-> + isParameter('action', 'new')-> + isParameter('id', null)-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('h1', 'New '.$this->singularName)-> + checkElement(sprintf('a[href*="/%s"]', $this->urlPrefix), 'Back to list')-> + checkElement(sprintf('a[href*="/%s/"]', $this->urlPrefix), false)-> + end()-> + checkFormValues(array( + 'title' => '', + 'body' => '', + 'Online' => false, + 'category_id' => 0, + 'end_date' => array('year' => '', 'month' => '', 'day' => '', 'hour' => '', 'minute' => ''), + 'book_id' => 0, + 'author_article_list' => array(), + )) + ; + + // save + $this-> + info('save')-> + saveValues($options, array( + 'title' => 'my real title', + 'body' => 'my real body', + 'Online' => true, + 'category_id' => 2, + 'end_date' => array('year' => '', 'month' => '', 'day' => '', 'hour' => '', 'minute' => ''), + 'book_id' => null, + 'author_article_list' => array(1, 2), + ), 3, true) + ; + + // go back to the list + $this-> + info('go back to the list')-> + click('Back to list')-> + with('request')->begin()-> + isParameter('module', $this->urlPrefix)-> + isParameter('action', 'index')-> + end()-> + with('response')->isStatusCode(200) + ; + + // edit page + $this->info('edit page'); + if (!in_array('with-show', $options) && ($options['with-show'] === true)) + { + $this->click('3'); + } + else + { + $this->get(sprintf('/%s/3/edit', $this->urlPrefix)); + } + + $this-> + with('request')->begin()-> + isParameter('module', $this->urlPrefix)-> + isParameter('action', 'edit')-> + isParameter('id', 3)-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('h1', 'Edit '.$this->singularName)-> + checkElement(sprintf('a[href*="/%s"]', $this->urlPrefix), 'Back to list')-> + checkElement(sprintf('a[href*="/%s/3"]', $this->urlPrefix), 'Delete')-> + checkElement(sprintf('a[href*="/%s/3"][onclick*="confirm"]', $this->urlPrefix))-> + checkElement('table tbody th:nth(0)', 'Title')-> + checkElement('table tbody th:nth(1)', 'Body')-> + checkElement('table tbody th:nth(2)', 'Online')-> + checkElement('table tbody th:nth(3)', 'Excerpt')-> + checkElement('table tbody th:nth(4)', 'Category')-> + checkElement('table tbody th:nth(5)', 'Created at')-> + checkElement('table tbody th:nth(6)', 'End date')-> + checkElement('table tbody th:nth(7)', 'Book')-> + checkElement('table tbody th:nth(8)', 'Author article list')-> + checkElement('table tbody td select[id="article_category_id"][name="article[category_id]"] option', 2)-> + checkElement('table tbody td select[id="article_book_id"][name="article[book_id]"] option', 2)-> + end() + ; + + // save / validation + $values = array( + 'id' => 1009299, + 'title' => '', + 'body' => 'my body', + 'Online' => true, + 'excerpt' => 'my excerpt', + 'category_id' => null, + 'end_date' => array('year' => 0, 'month' => 0, 'day' => 15, 'hour' => '10', 'minute' => '20'), + 'book_id' => 149999, + 'author_article_list' => array(0, 5), + ); + + $this-> + info('save / validation')-> + click('Save', array('article' => $values))-> + with('request')->begin()-> + isParameter('module', $this->urlPrefix)-> + isParameter('action', 'update')-> + end()-> + checkFormValues(array_merge($values, array( + 'end_date' => array('year' => null, 'month' => null, 'day' => 15, 'hour' => '10', 'minute' => '20'))) + )-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('ul[class="error_list"] li:contains("Required.")', 2)-> + checkElement('ul[class="error_list"] li:contains("Invalid.")', 4)-> + end() + ; + + // save + $this-> + info('save')-> + saveValues($options, array( + 'id' => 3, + 'title' => 'my title', + 'body' => 'my body', + 'Online' => false, + 'category_id' => 1, + 'end_date' => array('year' => date('Y'), 'month' => 10, 'day' => 15, 'hour' => '10', 'minute' => '20'), + 'book_id' => 1, + 'author_article_list' => array(1, 3), + ), 3, false) + ; + + // go back to the list + $this-> + info('go back to the list')-> + click('Back to list')-> + with('request')->begin()-> + isParameter('module', $this->urlPrefix)-> + isParameter('action', 'index')-> + end()-> + with('response')->isStatusCode(200) + ; + + // delete + $this-> + info('delete')-> + get(sprintf('/%s/3/edit', $this->urlPrefix))-> + click('Delete', array(), array('method' => 'delete', '_with_csrf' => true))-> + with('request')->begin()-> + isParameter('module', $this->urlPrefix)-> + isParameter('action', 'delete')-> + end()-> + with('response')->begin()-> + isRedirected()-> + followRedirect()-> + end()-> + with('request')->begin()-> + isParameter('module', $this->urlPrefix)-> + isParameter('action', 'index')-> + end()-> + with('response')->isStatusCode(200)-> + + get(sprintf('/%s/3/edit', $this->urlPrefix))-> + with('response')->isStatusCode(404) + ; + + if (in_array('with-show', $options)) + { + // show page + $this-> + info('show page')-> + get(sprintf('/%s/2', $this->urlPrefix))-> + with('request')->begin()-> + isParameter('module', $this->urlPrefix)-> + isParameter('action', 'show')-> + isParameter('id', 2)-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement(sprintf('a[href*="/%s/2%s"]', $this->urlPrefix, in_array('with-show', $options) ? '' : '/edit'), 'Edit')-> + checkElement(sprintf('a[href*="/%s"]', $this->urlPrefix), 'List', array('position' => 1))-> + checkElement('body table tbody tr:nth(0)', '/Id\:\s+2/')-> + checkElement('body table tbody tr:nth(1)', '/Title\:\s+foo foo title/')-> + checkElement('body table tbody tr:nth(2)', '/Body\:\s+bar bar body/')-> + checkElement('body table tbody tr:nth(3)', '/Online\:\s+/')-> + checkElement('body table tbody tr:nth(4)', '/Excerpt\:\s+foo excerpt/')-> + checkElement('body table tbody tr:nth(5)', '/Category\:\s+2/')-> + checkElement('body table tbody tr:nth(6)', '/Created at\:\s+[0-9\-\:\s]+/')-> + checkElement('body table tbody tr:nth(7)', '/End date\:\s+[0-9\-\:\s]+/')-> + checkElement('body table tbody tr:nth(8)', '/Book\:\s+/')-> + end() + ; + } + else + { + $this->get(sprintf('/%s/show/id/2', $this->urlPrefix))->with('response')->isStatusCode(404); + } + + $this->teardown(); + + return $this; + } + + public function saveValues($options, $values, $id, $creation) + { + $this-> + click('Save', array('article' => $values))-> + with('request')->begin()-> + isParameter('module', $this->urlPrefix)-> + isParameter('action', $creation ? 'create' : 'update')-> + end()-> + with('response')->begin()-> + isRedirected()-> + followRedirect()-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + end()-> + with('request')->begin()-> + isParameter('module', $this->urlPrefix)-> + isParameter('action', 'edit')-> + isParameter('id', $id)-> + end()-> + checkFormValues($values) + ; + + return $this; + } + + public function checkFormValues(array $values) + { + return $this->with('response')->begin()-> + checkElement(sprintf('table tbody td input[id="article_title"][name="article[title]"][value="%s"]', $values['title']))-> + + checkElement('table tbody td textarea[id="article_body"][name="article[body]"]', $values['body'])-> + + checkElement(sprintf('table tbody td input[id="article_Online"][name="article[Online]"][type="checkbox"]%s', $values['Online'] ? '[checked="checked"]' : ''))-> + + checkElement(sprintf('table tbody td select[id="article_category_id"][name="article[category_id]"] option[value="1"]%s', $values['category_id'] == 1 ? '[selected="selected"]' : ''), 'Category 1')-> + checkElement(sprintf('table tbody td select[id="article_category_id"][name="article[category_id]"] option[value="2"]%s', $values['category_id'] == 2 ? '[selected="selected"]' : ''), 'Category 2')-> + + checkElement(sprintf('table tbody td select[id="article_book_id"][name="article[book_id]"] option[value=""]%s', $values['book_id'] == '' ? '[selected="selected"]' : ''), '')-> + checkElement(sprintf('table tbody td select[id="article_book_id"][name="article[book_id]"] option[value="1"]%s', $values['book_id'] == 1 ? '[selected="selected"]' : ''), 'The definitive guide to symfony')-> + + checkElement(sprintf('table tbody td select[id="article_author_article_list"][name="article[author_article_list][]"] option[value="1"]%s', in_array(1, $values['author_article_list']) ? '[selected="selected"]' : ''), 'Fabien')-> + checkElement(sprintf('table tbody td select[id="article_author_article_list"][name="article[author_article_list][]"] option[value="2"]%s', in_array(2, $values['author_article_list']) ? '[selected="selected"]' : ''), 'Thomas')-> + checkElement(sprintf('table tbody td select[id="article_author_article_list"][name="article[author_article_list][]"] option[value="3"]%s', in_array(3, $values['author_article_list']) ? '[selected="selected"]' : ''), 'Hélène')-> + + checkElement('table tbody td select[id="article_end_date_year"][name="article[end_date][year]"] option[selected="selected"]', (string) $values['end_date']['year'])-> + checkElement('table tbody td select[id="article_end_date_month"][name="article[end_date][month]"] option[selected="selected"]', (string) $values['end_date']['month'])-> + checkElement('table tbody td select[id="article_end_date_day"][name="article[end_date][day]"] option[selected="selected"]', (string) $values['end_date']['day'])-> + checkElement('table tbody td select[id="article_end_date_hour"][name="article[end_date][hour]"] option[selected="selected"]', (string) $values['end_date']['hour'])-> + checkElement('table tbody td select[id="article_end_date_minute"][name="article[end_date][minute]"] option[selected="selected"]', (string) $values['end_date']['minute'])-> + end(); + } + + protected function clearDirectory($dir) + { + sfToolkit::clearDirectory($dir); + if (is_dir($dir)) + { + rmdir($dir); + } + } + + protected function cleanup() + { + $this->clearDirectory(sprintf($this->projectDir.'/apps/crud/modules/%s', $this->urlPrefix)); + $this->clearDirectory(sprintf($this->projectDir.'/cache/crud/test/modules/auto%s', ucfirst($this->urlPrefix))); + $this->clearDirectory($this->projectDir.'/test/functional/crud'); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/rest1Test.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/rest1Test.php new file mode 100644 index 0000000..d41fcd9 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/rest1Test.php @@ -0,0 +1,21 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'crud'; +$fixtures = 'fixtures/fixtures.yml'; +if (!include(dirname(__FILE__).'/../../bootstrap/functional.php')) +{ + return; +} + +require_once(dirname(__FILE__).'/restBrowser.class.php'); + +$b = new RestBrowser(); +$b->browse(array()); diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/rest2Test.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/rest2Test.php new file mode 100644 index 0000000..51d9a26 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/rest2Test.php @@ -0,0 +1,21 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'crud'; +$fixtures = 'fixtures/fixtures.yml'; +if (!include(dirname(__FILE__).'/../../bootstrap/functional.php')) +{ + return; +} + +require_once(dirname(__FILE__).'/restBrowser.class.php'); + +$b = new RestBrowser(); +$b->browse(array('non-verbose-templates')); diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/restBrowser.class.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/restBrowser.class.php new file mode 100644 index 0000000..be12bd0 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/crud/restBrowser.class.php @@ -0,0 +1,36 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/crudBrowser.class.php'); + +class RestBrowser extends CrudBrowser +{ + protected + $urlPrefix = 'articles'; + + public function setup($options) + { + $this->projectDir = dirname(__FILE__).'/../fixtures'; + $this->cleanup(); + + chdir($this->projectDir); + $task = new sfPropelGenerateModuleForRouteTask(new sfEventDispatcher(), new sfFormatter()); + $options[] = 'env=test'; + $options[] = '--non-verbose-templates'; + $task->run(array('crud', 'articles'), $options); + + require_once($this->projectDir.'/config/ProjectConfiguration.class.php'); + sfContext::createInstance(ProjectConfiguration::getApplicationConfiguration('crud', 'test', true, $this->projectDir)); + + $options['with-show'] = true; + + return $options; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/.svn/all-wcprops new file mode 100644 index 0000000..4575c47 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 80 +/!svn/ver/24597/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures +END +symfony +K 25 +svn:wc:ra_dav:version-url +V 88 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/symfony +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/.svn/entries new file mode 100644 index 0000000..4c19287 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/.svn/entries @@ -0,0 +1,86 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures +http://svn.symfony-project.com + + + +2009-11-30T19:53:50.069045Z +24597 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +test +dir + +log +dir + +plugins +dir + +apps +dir + +cache +dir + +symfony +file + + + + +2012-05-10T18:41:41.189557Z +36073c1914105fb3bbb4f1ce4965b4d2 +2008-04-01T21:33:35.403406Z +8196 +dwhittle +has-props + + + + + + + + + + + + + + + + + + + + +482 + +config +dir + +lib +dir + +data +dir + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/.svn/prop-base/symfony.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/.svn/prop-base/symfony.svn-base new file mode 100644 index 0000000..869ac71 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/.svn/prop-base/symfony.svn-base @@ -0,0 +1,5 @@ +K 14 +svn:executable +V 1 +* +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/.svn/text-base/symfony.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/.svn/text-base/symfony.svn-base new file mode 100644 index 0000000..3ea1419 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/.svn/text-base/symfony.svn-base @@ -0,0 +1,15 @@ +#!/usr/bin/env php + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +chdir(dirname(__FILE__)); +require_once(dirname(__FILE__).'/config/ProjectConfiguration.class.php'); +$configuration = new ProjectConfiguration(); +include($configuration->getSymfonyLibDir().'/command/cli.php'); diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/.svn/all-wcprops new file mode 100644 index 0000000..aff3688 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 85 +/!svn/ver/24597/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/.svn/entries new file mode 100644 index 0000000..b23c6a3 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/.svn/entries @@ -0,0 +1,37 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps +http://svn.symfony-project.com + + + +2009-11-30T19:53:50.069045Z +24597 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +frontend +dir + +backend_compat +dir + +crud +dir + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/.svn/all-wcprops new file mode 100644 index 0000000..4e8e8aa --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 100 +/!svn/ver/24434/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/.svn/entries new file mode 100644 index 0000000..6068b7a --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/.svn/entries @@ -0,0 +1,43 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat +http://svn.symfony-project.com + + + +2009-11-26T11:52:47.753777Z +24434 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +i18n +dir + +config +dir + +lib +dir + +modules +dir + +templates +dir + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/.svn/all-wcprops new file mode 100644 index 0000000..58f59b5 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/.svn/all-wcprops @@ -0,0 +1,59 @@ +K 25 +svn:wc:ra_dav:version-url +V 107 +/!svn/ver/24434/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config +END +factories.yml +K 25 +svn:wc:ra_dav:version-url +V 121 +/!svn/ver/24434/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/factories.yml +END +app.yml +K 25 +svn:wc:ra_dav:version-url +V 115 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/app.yml +END +settings.yml +K 25 +svn:wc:ra_dav:version-url +V 120 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/settings.yml +END +cache.yml +K 25 +svn:wc:ra_dav:version-url +V 117 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/cache.yml +END +routing.yml +K 25 +svn:wc:ra_dav:version-url +V 119 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/routing.yml +END +security.yml +K 25 +svn:wc:ra_dav:version-url +V 120 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/security.yml +END +filters.yml +K 25 +svn:wc:ra_dav:version-url +V 119 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/filters.yml +END +view.yml +K 25 +svn:wc:ra_dav:version-url +V 116 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/view.yml +END +backend_compatConfiguration.class.php +K 25 +svn:wc:ra_dav:version-url +V 145 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/backend_compatConfiguration.class.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/.svn/entries new file mode 100644 index 0000000..34dbcc4 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/.svn/entries @@ -0,0 +1,334 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config +http://svn.symfony-project.com + + + +2009-11-26T11:52:47.753777Z +24434 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +factories.yml +file + + + + +2012-05-10T18:41:38.069552Z +a66e8e26cd1d4950fd440da104aedab8 +2009-11-26T11:52:47.753777Z +24434 +fabien + + + + + + + + + + + + + + + + + + + + + +277 + +app.yml +file + + + + +2012-05-10T18:41:38.069552Z +6f622a40f3255229a7ce20d54358432a +2007-09-16T00:53:55.343643Z +5125 +dwhittle + + + + + + + + + + + + + + + + + + + + + +22 + +settings.yml +file + + + + +2012-05-10T18:41:38.069552Z +439a8b1a241bd37d7e6edae85c5627d4 +2009-09-11T07:38:24.815935Z +21884 +fabien + + + + + + + + + + + + + + + + + + + + + +528 + +cache.yml +file + + + + +2012-05-10T18:41:38.069552Z +e8bf44a2ebd40560e059ae7ee72f6433 +2009-09-11T07:38:24.815935Z +21884 +fabien + + + + + + + + + + + + + + + + + + + + + +72 + +routing.yml +file + + + + +2012-05-10T18:41:38.069552Z +797b3c445d790684651e05ab15d2de02 +2007-09-16T00:53:55.343643Z +5125 +dwhittle + + + + + + + + + + + + + + + + + + + + + +255 + +security.yml +file + + + + +2012-05-10T18:41:38.069552Z +a66fd43f8b3cc8d473e52a49d4938d99 +2009-09-11T07:38:24.815935Z +21884 +fabien + + + + + + + + + + + + + + + + + + + + + +28 + +filters.yml +file + + + + +2012-05-10T18:41:38.145547Z +cb29ce7fce1374e670a4134c4991505f +2009-04-30T07:13:08.234464Z +17794 +fabien + + + + + + + + + + + + + + + + + + + + + +115 + +view.yml +file + + + + +2012-05-10T18:41:38.153565Z +721f76e57c90a9a2c2dd82f3a56443dc +2009-09-11T07:38:24.815935Z +21884 +fabien + + + + + + + + + + + + + + + + + + + + + +315 + +backend_compatConfiguration.class.php +file + + + + +2012-05-10T18:41:38.167990Z +657381bcdfa8d9a032f1ca08abdea299 +2009-04-28T06:56:14.744298Z +17701 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +118 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/.svn/prop-base/backend_compatConfiguration.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/.svn/prop-base/backend_compatConfiguration.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/.svn/prop-base/backend_compatConfiguration.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/.svn/text-base/app.yml.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/.svn/text-base/app.yml.svn-base new file mode 100644 index 0000000..24e2621 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/.svn/text-base/app.yml.svn-base @@ -0,0 +1,2 @@ +# default values +all: diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/.svn/text-base/backend_compatConfiguration.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/.svn/text-base/backend_compatConfiguration.class.php.svn-base new file mode 100644 index 0000000..3956bd2 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/.svn/text-base/backend_compatConfiguration.class.php.svn-base @@ -0,0 +1,8 @@ + + web_debug: true + cache: false + no_script_name: false + etag: false + +test: + .settings: + error_reporting: + cache: false + web_debug: false + no_script_name: false + etag: false diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/.svn/text-base/view.yml.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/.svn/text-base/view.yml.svn-base new file mode 100644 index 0000000..901d830 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/.svn/text-base/view.yml.svn-base @@ -0,0 +1,17 @@ +default: + http_metas: + content-type: text/html + + metas: + title: symfony project + robots: index, follow + description: symfony project + keywords: symfony, project + language: en + + stylesheets: [main] + + javascripts: [ ] + + has_layout: true + layout: layout diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/app.yml b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/app.yml new file mode 100644 index 0000000..24e2621 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/app.yml @@ -0,0 +1,2 @@ +# default values +all: diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/backend_compatConfiguration.class.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/backend_compatConfiguration.class.php new file mode 100644 index 0000000..3956bd2 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/backend_compatConfiguration.class.php @@ -0,0 +1,8 @@ + + web_debug: true + cache: false + no_script_name: false + etag: false + +test: + .settings: + error_reporting: + cache: false + web_debug: false + no_script_name: false + etag: false diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/view.yml b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/view.yml new file mode 100644 index 0000000..901d830 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/config/view.yml @@ -0,0 +1,17 @@ +default: + http_metas: + content-type: text/html + + metas: + title: symfony project + robots: index, follow + description: symfony project + keywords: symfony, project + language: en + + stylesheets: [main] + + javascripts: [ ] + + has_layout: true + layout: layout diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/i18n/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/i18n/.svn/all-wcprops new file mode 100644 index 0000000..b377815 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/i18n/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 105 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/i18n +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/i18n/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/i18n/.svn/entries new file mode 100644 index 0000000..909501c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/i18n/.svn/entries @@ -0,0 +1,28 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/i18n +http://svn.symfony-project.com + + + +2007-09-16T00:53:55.343643Z +5125 +dwhittle + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/lib/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/lib/.svn/all-wcprops new file mode 100644 index 0000000..457a680 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/lib/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 104 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/lib +END +myUser.class.php +K 25 +svn:wc:ra_dav:version-url +V 121 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/lib/myUser.class.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/lib/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/lib/.svn/entries new file mode 100644 index 0000000..08df45c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/lib/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/lib +http://svn.symfony-project.com + + + +2007-09-16T00:53:55.343643Z +5125 +dwhittle + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +myUser.class.php +file + + + + +2012-05-10T18:41:38.177552Z +215548048bbbdd100411afc00252a797 +2007-09-16T00:53:55.343643Z +5125 +dwhittle +has-props + + + + + + + + + + + + + + + + + + + + +52 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/lib/.svn/prop-base/myUser.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/lib/.svn/prop-base/myUser.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/lib/.svn/prop-base/myUser.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/lib/.svn/text-base/myUser.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/lib/.svn/text-base/myUser.class.php.svn-base new file mode 100644 index 0000000..4c79302 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/lib/.svn/text-base/myUser.class.php.svn-base @@ -0,0 +1,5 @@ + + * @version SVN: $Id$ + */ +class articleActions extends autoarticleActions +{ + public function executeMyAction() + { + return $this->renderText('Selected '.implode(', ', $this->getRequestParameter('sf_admin_batch_selection', array()))); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/actions/actions.class.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/actions/actions.class.php new file mode 100644 index 0000000..221959f --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/actions/actions.class.php @@ -0,0 +1,17 @@ + + * @version SVN: $Id: actions.class.php 5125 2007-09-16 00:53:55Z dwhittle $ + */ +class articleActions extends autoarticleActions +{ + public function executeMyAction() + { + return $this->renderText('Selected '.implode(', ', $this->getRequestParameter('sf_admin_batch_selection', array()))); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/config/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/config/.svn/all-wcprops new file mode 100644 index 0000000..a51385d --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/config/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 123 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/config +END +generator.yml +K 25 +svn:wc:ra_dav:version-url +V 137 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/config/generator.yml +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/config/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/config/.svn/entries new file mode 100644 index 0000000..8eb1272 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/config/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/config +http://svn.symfony-project.com + + + +2007-09-16T00:53:55.343643Z +5125 +dwhittle + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +generator.yml +file + + + + +2012-05-10T18:41:38.289556Z +598ec64a158fa94d2cec09bd82fcc677 +2007-09-16T00:53:55.343643Z +5125 +dwhittle + + + + + + + + + + + + + + + + + + + + + +125 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/config/.svn/text-base/generator.yml.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/config/.svn/text-base/generator.yml.svn-base new file mode 100644 index 0000000..f14e483 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/config/.svn/text-base/generator.yml.svn-base @@ -0,0 +1,5 @@ +generator: + class: sfPropelAdminGenerator + param: + model_class: Article + theme: default diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/config/generator.yml b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/config/generator.yml new file mode 100644 index 0000000..f14e483 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/config/generator.yml @@ -0,0 +1,5 @@ +generator: + class: sfPropelAdminGenerator + param: + model_class: Article + theme: default diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/templates/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/templates/.svn/all-wcprops new file mode 100644 index 0000000..874a766 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/templates/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 126 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/templates +END +_body.php +K 25 +svn:wc:ra_dav:version-url +V 136 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/templates/_body.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/templates/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/templates/.svn/entries new file mode 100644 index 0000000..63cf23d --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/templates/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/templates +http://svn.symfony-project.com + + + +2007-09-16T00:53:55.343643Z +5125 +dwhittle + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +_body.php +file + + + + +2012-05-10T18:41:38.477546Z +ccdc56d01e67d8781707a892eaa3c010 +2007-09-16T00:53:55.343643Z +5125 +dwhittle +has-props + + + + + + + + + + + + + + + + + + + + +375 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/templates/.svn/prop-base/_body.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/templates/.svn/prop-base/_body.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/templates/.svn/prop-base/_body.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/templates/.svn/text-base/_body.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/templates/.svn/text-base/_body.php.svn-base new file mode 100644 index 0000000..2c327c3 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/templates/.svn/text-base/_body.php.svn-base @@ -0,0 +1,9 @@ + +before getBody() ?> after + + + + + +SOMETHING WRONG HAPPENED + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/templates/_body.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/templates/_body.php new file mode 100644 index 0000000..2c327c3 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/article/templates/_body.php @@ -0,0 +1,9 @@ + +before getBody() ?> after + + + + + +SOMETHING WRONG HAPPENED + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/.svn/all-wcprops new file mode 100644 index 0000000..20cfae2 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 114 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/.svn/entries new file mode 100644 index 0000000..daefed2 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/.svn/entries @@ -0,0 +1,37 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error +http://svn.symfony-project.com + + + +2007-10-14T10:19:32.975089Z +5503 +dwhittle + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions +dir + +config +dir + +templates +dir + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/actions/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/actions/.svn/all-wcprops new file mode 100644 index 0000000..34eb9c2 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/actions/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 122 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/actions +END +actions.class.php +K 25 +svn:wc:ra_dav:version-url +V 140 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/actions/actions.class.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/actions/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/actions/.svn/entries new file mode 100644 index 0000000..a222cfc --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/actions/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/actions +http://svn.symfony-project.com + + + +2007-09-16T00:53:55.343643Z +5125 +dwhittle + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions.class.php +file + + + + +2012-05-10T18:41:38.589547Z +ba4053be4acbe328fa8fdd68e1231473 +2007-09-16T00:53:55.343643Z +5125 +dwhittle +has-props + + + + + + + + + + + + + + + + + + + + +279 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/actions/.svn/prop-base/actions.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/actions/.svn/prop-base/actions.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/actions/.svn/prop-base/actions.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/actions/.svn/text-base/actions.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/actions/.svn/text-base/actions.class.php.svn-base new file mode 100644 index 0000000..a54b1eb --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/actions/.svn/text-base/actions.class.php.svn-base @@ -0,0 +1,13 @@ + + * @version SVN: $Id$ + */ +class errorActions extends autoerrorActions +{ +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/actions/actions.class.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/actions/actions.class.php new file mode 100644 index 0000000..c61837e --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/actions/actions.class.php @@ -0,0 +1,13 @@ + + * @version SVN: $Id: actions.class.php 5125 2007-09-16 00:53:55Z dwhittle $ + */ +class errorActions extends autoerrorActions +{ +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/config/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/config/.svn/all-wcprops new file mode 100644 index 0000000..5c2297d --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/config/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 121 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/config +END +generator.yml +K 25 +svn:wc:ra_dav:version-url +V 135 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/config/generator.yml +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/config/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/config/.svn/entries new file mode 100644 index 0000000..f3a60f7 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/config/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/config +http://svn.symfony-project.com + + + +2007-09-16T00:53:55.343643Z +5125 +dwhittle + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +generator.yml +file + + + + +2012-05-10T18:41:38.797549Z +09f34a54169b455fd15afb9be89df6ef +2007-09-16T00:53:55.343643Z +5125 +dwhittle + + + + + + + + + + + + + + + + + + + + + +127 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/config/.svn/text-base/generator.yml.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/config/.svn/text-base/generator.yml.svn-base new file mode 100644 index 0000000..f974efc --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/config/.svn/text-base/generator.yml.svn-base @@ -0,0 +1,5 @@ +generator: + class: sfPropelAdminGenerator + param: + model_class: FakeClass + theme: default diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/config/generator.yml b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/config/generator.yml new file mode 100644 index 0000000..f974efc --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/config/generator.yml @@ -0,0 +1,5 @@ +generator: + class: sfPropelAdminGenerator + param: + model_class: FakeClass + theme: default diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/templates/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/templates/.svn/all-wcprops new file mode 100644 index 0000000..944a572 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/templates/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 124 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/templates +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/templates/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/templates/.svn/entries new file mode 100644 index 0000000..b0088e4 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/templates/.svn/entries @@ -0,0 +1,28 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/error/templates +http://svn.symfony-project.com + + + +2007-09-16T00:53:55.343643Z +5125 +dwhittle + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/.svn/all-wcprops new file mode 100644 index 0000000..65fee4c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 120 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/.svn/entries new file mode 100644 index 0000000..b2a4531 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/.svn/entries @@ -0,0 +1,37 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance +http://svn.symfony-project.com + + + +2007-10-14T10:19:32.975089Z +5503 +dwhittle + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions +dir + +config +dir + +templates +dir + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/actions/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/actions/.svn/all-wcprops new file mode 100644 index 0000000..f662642 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/actions/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 128 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/actions +END +actions.class.php +K 25 +svn:wc:ra_dav:version-url +V 146 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/actions/actions.class.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/actions/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/actions/.svn/entries new file mode 100644 index 0000000..8b6df31 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/actions/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/actions +http://svn.symfony-project.com + + + +2007-09-16T00:53:55.343643Z +5125 +dwhittle + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions.class.php +file + + + + +2012-05-10T18:41:38.909551Z +a5d9dac5a331d98fed0398495dac9d36 +2007-09-16T00:53:55.343643Z +5125 +dwhittle +has-props + + + + + + + + + + + + + + + + + + + + +618 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/actions/.svn/prop-base/actions.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/actions/.svn/prop-base/actions.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/actions/.svn/prop-base/actions.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/actions/.svn/text-base/actions.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/actions/.svn/text-base/actions.class.php.svn-base new file mode 100644 index 0000000..444c9ee --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/actions/.svn/text-base/actions.class.php.svn-base @@ -0,0 +1,28 @@ + + * @version SVN: $Id$ + */ +class inheritanceActions extends autoinheritanceActions +{ + protected function addFiltersCriteria($c) + { + if ($this->getRequestParameter('filter')) + { + $c->add(ArticlePeer::ONLINE, true); + } + } + + protected function addSortCriteria($c) + { + if ($this->getRequestParameter('sort')) + { + $c->addAscendingOrderByColumn(ArticlePeer::TITLE); + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/actions/actions.class.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/actions/actions.class.php new file mode 100644 index 0000000..e48a12b --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/actions/actions.class.php @@ -0,0 +1,28 @@ + + * @version SVN: $Id: actions.class.php 5125 2007-09-16 00:53:55Z dwhittle $ + */ +class inheritanceActions extends autoinheritanceActions +{ + protected function addFiltersCriteria($c) + { + if ($this->getRequestParameter('filter')) + { + $c->add(ArticlePeer::ONLINE, true); + } + } + + protected function addSortCriteria($c) + { + if ($this->getRequestParameter('sort')) + { + $c->addAscendingOrderByColumn(ArticlePeer::TITLE); + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/config/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/config/.svn/all-wcprops new file mode 100644 index 0000000..a5d0cea --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/config/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 127 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/config +END +generator.yml +K 25 +svn:wc:ra_dav:version-url +V 141 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/config/generator.yml +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/config/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/config/.svn/entries new file mode 100644 index 0000000..3925112 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/config/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/config +http://svn.symfony-project.com + + + +2007-09-16T00:53:55.343643Z +5125 +dwhittle + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +generator.yml +file + + + + +2012-05-10T18:41:38.949549Z +598ec64a158fa94d2cec09bd82fcc677 +2007-09-16T00:53:55.343643Z +5125 +dwhittle + + + + + + + + + + + + + + + + + + + + + +125 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/config/.svn/text-base/generator.yml.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/config/.svn/text-base/generator.yml.svn-base new file mode 100644 index 0000000..f14e483 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/config/.svn/text-base/generator.yml.svn-base @@ -0,0 +1,5 @@ +generator: + class: sfPropelAdminGenerator + param: + model_class: Article + theme: default diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/config/generator.yml b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/config/generator.yml new file mode 100644 index 0000000..f14e483 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/config/generator.yml @@ -0,0 +1,5 @@ +generator: + class: sfPropelAdminGenerator + param: + model_class: Article + theme: default diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/templates/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/templates/.svn/all-wcprops new file mode 100644 index 0000000..baf2e22 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/templates/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 130 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/templates +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/templates/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/templates/.svn/entries new file mode 100644 index 0000000..364dc79 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/templates/.svn/entries @@ -0,0 +1,28 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/inheritance/templates +http://svn.symfony-project.com + + + +2007-09-16T00:53:55.343643Z +5125 +dwhittle + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/.svn/all-wcprops new file mode 100644 index 0000000..39513e9 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 119 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/.svn/entries new file mode 100644 index 0000000..a8796d8 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/.svn/entries @@ -0,0 +1,40 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation +http://svn.symfony-project.com + + + +2009-09-11T07:38:24.815935Z +21884 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions +dir + +config +dir + +validate +dir + +templates +dir + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/actions/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/actions/.svn/all-wcprops new file mode 100644 index 0000000..b81f7cf --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/actions/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 127 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/actions +END +actions.class.php +K 25 +svn:wc:ra_dav:version-url +V 145 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/actions/actions.class.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/actions/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/actions/.svn/entries new file mode 100644 index 0000000..18221e2 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/actions/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/actions +http://svn.symfony-project.com + + + +2007-09-16T00:53:55.343643Z +5125 +dwhittle + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions.class.php +file + + + + +2012-05-10T18:41:39.065551Z +0a05efa184d8b6c8882d68c21dbab02e +2007-09-16T00:53:55.343643Z +5125 +dwhittle +has-props + + + + + + + + + + + + + + + + + + + + +299 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/actions/.svn/prop-base/actions.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/actions/.svn/prop-base/actions.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/actions/.svn/prop-base/actions.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/actions/.svn/text-base/actions.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/actions/.svn/text-base/actions.class.php.svn-base new file mode 100644 index 0000000..9c1eb04 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/actions/.svn/text-base/actions.class.php.svn-base @@ -0,0 +1,13 @@ + + * @version SVN: $Id$ + */ +class validationActions extends autovalidationActions +{ +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/actions/actions.class.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/actions/actions.class.php new file mode 100644 index 0000000..312c474 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/actions/actions.class.php @@ -0,0 +1,13 @@ + + * @version SVN: $Id: actions.class.php 5125 2007-09-16 00:53:55Z dwhittle $ + */ +class validationActions extends autovalidationActions +{ +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/config/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/config/.svn/all-wcprops new file mode 100644 index 0000000..7249198 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/config/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 126 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/config +END +generator.yml +K 25 +svn:wc:ra_dav:version-url +V 140 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/config/generator.yml +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/config/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/config/.svn/entries new file mode 100644 index 0000000..35ca2a3 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/config/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/config +http://svn.symfony-project.com + + + +2007-09-16T00:53:55.343643Z +5125 +dwhittle + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +generator.yml +file + + + + +2012-05-10T18:41:39.109552Z +598ec64a158fa94d2cec09bd82fcc677 +2007-09-16T00:53:55.343643Z +5125 +dwhittle + + + + + + + + + + + + + + + + + + + + + +125 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/config/.svn/text-base/generator.yml.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/config/.svn/text-base/generator.yml.svn-base new file mode 100644 index 0000000..f14e483 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/config/.svn/text-base/generator.yml.svn-base @@ -0,0 +1,5 @@ +generator: + class: sfPropelAdminGenerator + param: + model_class: Article + theme: default diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/config/generator.yml b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/config/generator.yml new file mode 100644 index 0000000..f14e483 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/config/generator.yml @@ -0,0 +1,5 @@ +generator: + class: sfPropelAdminGenerator + param: + model_class: Article + theme: default diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/templates/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/templates/.svn/all-wcprops new file mode 100644 index 0000000..756c00d --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/templates/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 129 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/templates +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/templates/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/templates/.svn/entries new file mode 100644 index 0000000..f6caff0 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/templates/.svn/entries @@ -0,0 +1,28 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/templates +http://svn.symfony-project.com + + + +2007-09-16T00:53:55.343643Z +5125 +dwhittle + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/validate/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/validate/.svn/all-wcprops new file mode 100644 index 0000000..1e79d88 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/validate/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 128 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/validate +END +edit.yml +K 25 +svn:wc:ra_dav:version-url +V 137 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/validate/edit.yml +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/validate/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/validate/.svn/entries new file mode 100644 index 0000000..50ff2d1 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/validate/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/validate +http://svn.symfony-project.com + + + +2009-09-11T07:38:24.815935Z +21884 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +edit.yml +file + + + + +2012-05-10T18:41:39.153551Z +bfc470d94300becfe245c4d5cf567b43 +2009-09-11T07:38:24.815935Z +21884 +fabien + + + + + + + + + + + + + + + + + + + + + +206 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/validate/.svn/text-base/edit.yml.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/validate/.svn/text-base/edit.yml.svn-base new file mode 100644 index 0000000..e40ab2e --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/validate/.svn/text-base/edit.yml.svn-base @@ -0,0 +1,13 @@ +methods: + post: + - "article{title}" + - "article{body}" + +names: + article{title}: + required: true + required_msg: required + + article{body}: + required: true + required_msg: required diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/validate/edit.yml b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/validate/edit.yml new file mode 100644 index 0000000..e40ab2e --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/modules/validation/validate/edit.yml @@ -0,0 +1,13 @@ +methods: + post: + - "article{title}" + - "article{body}" + +names: + article{title}: + required: true + required_msg: required + + article{body}: + required: true + required_msg: required diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/templates/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/templates/.svn/all-wcprops new file mode 100644 index 0000000..ff4f85c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/templates/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 110 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/templates +END +layout.php +K 25 +svn:wc:ra_dav:version-url +V 121 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/templates/layout.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/templates/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/templates/.svn/entries new file mode 100644 index 0000000..b9526b9 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/templates/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/templates +http://svn.symfony-project.com + + + +2009-04-30T07:13:08.234464Z +17794 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +layout.php +file + + + + +2012-05-10T18:41:39.253549Z +fed91e1e8658e1a885a3608c99c9faa5 +2009-04-30T07:13:08.234464Z +17794 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +475 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/templates/.svn/prop-base/layout.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/templates/.svn/prop-base/layout.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/templates/.svn/prop-base/layout.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/templates/.svn/text-base/layout.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/templates/.svn/text-base/layout.php.svn-base new file mode 100644 index 0000000..6d75aa8 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/templates/.svn/text-base/layout.php.svn-base @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/templates/layout.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/templates/layout.php new file mode 100644 index 0000000..6d75aa8 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/backend_compat/templates/layout.php @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/.svn/all-wcprops new file mode 100644 index 0000000..430d791 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 90 +/!svn/ver/24434/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/.svn/entries new file mode 100644 index 0000000..1e77692 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/.svn/entries @@ -0,0 +1,43 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud +http://svn.symfony-project.com + + + +2009-11-26T11:52:47.753777Z +24434 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +i18n +dir + +config +dir + +lib +dir + +modules +dir + +templates +dir + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/.svn/all-wcprops new file mode 100644 index 0000000..f7ea3bd --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/.svn/all-wcprops @@ -0,0 +1,59 @@ +K 25 +svn:wc:ra_dav:version-url +V 97 +/!svn/ver/24434/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config +END +crudConfiguration.class.php +K 25 +svn:wc:ra_dav:version-url +V 125 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/crudConfiguration.class.php +END +factories.yml +K 25 +svn:wc:ra_dav:version-url +V 111 +/!svn/ver/24434/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/factories.yml +END +app.yml +K 25 +svn:wc:ra_dav:version-url +V 105 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/app.yml +END +settings.yml +K 25 +svn:wc:ra_dav:version-url +V 110 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/settings.yml +END +cache.yml +K 25 +svn:wc:ra_dav:version-url +V 107 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/cache.yml +END +routing.yml +K 25 +svn:wc:ra_dav:version-url +V 109 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/routing.yml +END +security.yml +K 25 +svn:wc:ra_dav:version-url +V 110 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/security.yml +END +filters.yml +K 25 +svn:wc:ra_dav:version-url +V 109 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/filters.yml +END +view.yml +K 25 +svn:wc:ra_dav:version-url +V 106 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/view.yml +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/.svn/entries new file mode 100644 index 0000000..0d00811 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/.svn/entries @@ -0,0 +1,334 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config +http://svn.symfony-project.com + + + +2009-11-26T11:52:47.753777Z +24434 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +crudConfiguration.class.php +file + + + + +2012-05-10T18:41:39.429552Z +162ea259e3e8894308048ccb70bb47e4 +2008-03-19T20:05:40.589817Z +7989 +dwhittle +has-props + + + + + + + + + + + + + + + + + + + + +108 + +factories.yml +file + + + + +2012-05-10T18:41:39.429552Z +a66e8e26cd1d4950fd440da104aedab8 +2009-11-26T11:52:47.753777Z +24434 +fabien + + + + + + + + + + + + + + + + + + + + + +277 + +app.yml +file + + + + +2012-05-10T18:41:39.433552Z +6f622a40f3255229a7ce20d54358432a +2007-09-16T00:53:55.343643Z +5125 +dwhittle + + + + + + + + + + + + + + + + + + + + + +22 + +settings.yml +file + + + + +2012-05-10T18:41:39.433552Z +6339243a34afb7c58b52d755019a3d8d +2009-09-11T07:38:24.815935Z +21884 +fabien + + + + + + + + + + + + + + + + + + + + + +573 + +cache.yml +file + + + + +2012-05-10T18:41:39.437548Z +e8bf44a2ebd40560e059ae7ee72f6433 +2009-09-11T07:38:24.815935Z +21884 +fabien + + + + + + + + + + + + + + + + + + + + + +72 + +routing.yml +file + + + + +2012-05-10T18:41:39.437548Z +64b3897873b0b7218b861e28eefdf06e +2008-09-12T11:07:23.596269Z +11475 +fabien + + + + + + + + + + + + + + + + + + + + + +584 + +security.yml +file + + + + +2012-05-10T18:41:39.529567Z +a66fd43f8b3cc8d473e52a49d4938d99 +2009-09-11T07:38:24.815935Z +21884 +fabien + + + + + + + + + + + + + + + + + + + + + +28 + +filters.yml +file + + + + +2012-05-10T18:41:39.529567Z +cb29ce7fce1374e670a4134c4991505f +2009-04-30T07:13:08.234464Z +17794 +fabien + + + + + + + + + + + + + + + + + + + + + +115 + +view.yml +file + + + + +2012-05-10T18:41:39.529567Z +721f76e57c90a9a2c2dd82f3a56443dc +2009-09-11T07:38:24.815935Z +21884 +fabien + + + + + + + + + + + + + + + + + + + + + +315 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/.svn/prop-base/crudConfiguration.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/.svn/prop-base/crudConfiguration.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/.svn/prop-base/crudConfiguration.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/.svn/text-base/app.yml.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/.svn/text-base/app.yml.svn-base new file mode 100644 index 0000000..24e2621 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/.svn/text-base/app.yml.svn-base @@ -0,0 +1,2 @@ +# default values +all: diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/.svn/text-base/cache.yml.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/.svn/text-base/cache.yml.svn-base new file mode 100644 index 0000000..c120397 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/.svn/text-base/cache.yml.svn-base @@ -0,0 +1,4 @@ +default: + enabled: false + with_layout: false + lifetime: 86400 diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/.svn/text-base/crudConfiguration.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/.svn/text-base/crudConfiguration.class.php.svn-base new file mode 100644 index 0000000..f616c70 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/.svn/text-base/crudConfiguration.class.php.svn-base @@ -0,0 +1,8 @@ + + web_debug: true + cache: false + no_script_name: false + etag: false + +test: + .settings: + error_reporting: + cache: false + web_debug: false + no_script_name: false + etag: false + +all: + .settings: + csrf_secret: F=84rfz3 diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/.svn/text-base/view.yml.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/.svn/text-base/view.yml.svn-base new file mode 100644 index 0000000..901d830 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/.svn/text-base/view.yml.svn-base @@ -0,0 +1,17 @@ +default: + http_metas: + content-type: text/html + + metas: + title: symfony project + robots: index, follow + description: symfony project + keywords: symfony, project + language: en + + stylesheets: [main] + + javascripts: [ ] + + has_layout: true + layout: layout diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/app.yml b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/app.yml new file mode 100644 index 0000000..24e2621 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/app.yml @@ -0,0 +1,2 @@ +# default values +all: diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/cache.yml b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/cache.yml new file mode 100644 index 0000000..c120397 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/cache.yml @@ -0,0 +1,4 @@ +default: + enabled: false + with_layout: false + lifetime: 86400 diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/crudConfiguration.class.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/crudConfiguration.class.php new file mode 100644 index 0000000..f616c70 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/crudConfiguration.class.php @@ -0,0 +1,8 @@ + + web_debug: true + cache: false + no_script_name: false + etag: false + +test: + .settings: + error_reporting: + cache: false + web_debug: false + no_script_name: false + etag: false + +all: + .settings: + csrf_secret: F=84rfz3 diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/view.yml b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/view.yml new file mode 100644 index 0000000..901d830 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/config/view.yml @@ -0,0 +1,17 @@ +default: + http_metas: + content-type: text/html + + metas: + title: symfony project + robots: index, follow + description: symfony project + keywords: symfony, project + language: en + + stylesheets: [main] + + javascripts: [ ] + + has_layout: true + layout: layout diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/i18n/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/i18n/.svn/all-wcprops new file mode 100644 index 0000000..e833dd9 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/i18n/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 95 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/i18n +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/i18n/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/i18n/.svn/entries new file mode 100644 index 0000000..3fc50d5 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/i18n/.svn/entries @@ -0,0 +1,28 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/i18n +http://svn.symfony-project.com + + + +2007-09-16T00:53:55.343643Z +5125 +dwhittle + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/lib/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/lib/.svn/all-wcprops new file mode 100644 index 0000000..1f6e62f --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/lib/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 94 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/lib +END +myUser.class.php +K 25 +svn:wc:ra_dav:version-url +V 111 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/lib/myUser.class.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/lib/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/lib/.svn/entries new file mode 100644 index 0000000..cf4f8ff --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/lib/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/lib +http://svn.symfony-project.com + + + +2007-09-16T00:53:55.343643Z +5125 +dwhittle + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +myUser.class.php +file + + + + +2012-05-10T18:41:39.541552Z +215548048bbbdd100411afc00252a797 +2007-09-16T00:53:55.343643Z +5125 +dwhittle +has-props + + + + + + + + + + + + + + + + + + + + +52 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/lib/.svn/prop-base/myUser.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/lib/.svn/prop-base/myUser.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/lib/.svn/prop-base/myUser.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/lib/.svn/text-base/myUser.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/lib/.svn/text-base/myUser.class.php.svn-base new file mode 100644 index 0000000..4c79302 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/lib/.svn/text-base/myUser.class.php.svn-base @@ -0,0 +1,5 @@ + + * @version SVN: $Id$ + */ +class errorActions extends autoerrorActions +{ +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/error/actions/actions.class.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/error/actions/actions.class.php new file mode 100644 index 0000000..c61837e --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/error/actions/actions.class.php @@ -0,0 +1,13 @@ + + * @version SVN: $Id: actions.class.php 5125 2007-09-16 00:53:55Z dwhittle $ + */ +class errorActions extends autoerrorActions +{ +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/error/config/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/error/config/.svn/all-wcprops new file mode 100644 index 0000000..49ac01b --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/error/config/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 111 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/error/config +END +generator.yml +K 25 +svn:wc:ra_dav:version-url +V 125 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/error/config/generator.yml +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/error/config/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/error/config/.svn/entries new file mode 100644 index 0000000..ea715e5 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/error/config/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/error/config +http://svn.symfony-project.com + + + +2007-09-16T00:53:55.343643Z +5125 +dwhittle + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +generator.yml +file + + + + +2012-05-10T18:41:39.661557Z +51d53abf4b8ab68a42ed455d8a38626d +2007-09-16T00:53:55.343643Z +5125 +dwhittle + + + + + + + + + + + + + + + + + + + + + +126 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/error/config/.svn/text-base/generator.yml.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/error/config/.svn/text-base/generator.yml.svn-base new file mode 100644 index 0000000..9591bf9 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/error/config/.svn/text-base/generator.yml.svn-base @@ -0,0 +1,5 @@ +generator: + class: sfPropelCrudGenerator + param: + model_class: FakeClass + theme: default diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/error/config/generator.yml b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/error/config/generator.yml new file mode 100644 index 0000000..9591bf9 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/error/config/generator.yml @@ -0,0 +1,5 @@ +generator: + class: sfPropelCrudGenerator + param: + model_class: FakeClass + theme: default diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/error/lib/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/error/lib/.svn/all-wcprops new file mode 100644 index 0000000..0eba251 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/error/lib/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 108 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/error/lib +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/error/lib/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/error/lib/.svn/entries new file mode 100644 index 0000000..0a1ca1d --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/error/lib/.svn/entries @@ -0,0 +1,28 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/error/lib +http://svn.symfony-project.com + + + +2007-09-16T00:53:55.343643Z +5125 +dwhittle + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/error/templates/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/error/templates/.svn/all-wcprops new file mode 100644 index 0000000..174a965 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/error/templates/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 114 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/error/templates +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/error/templates/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/error/templates/.svn/entries new file mode 100644 index 0000000..4e7fbb4 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/error/templates/.svn/entries @@ -0,0 +1,28 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/modules/error/templates +http://svn.symfony-project.com + + + +2007-09-16T00:53:55.343643Z +5125 +dwhittle + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/templates/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/templates/.svn/all-wcprops new file mode 100644 index 0000000..c04910c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/templates/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 100 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/templates +END +layout.php +K 25 +svn:wc:ra_dav:version-url +V 111 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/templates/layout.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/templates/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/templates/.svn/entries new file mode 100644 index 0000000..e0fbbb8 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/templates/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/templates +http://svn.symfony-project.com + + + +2009-04-30T07:13:08.234464Z +17794 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +layout.php +file + + + + +2012-05-10T18:41:39.933553Z +fed91e1e8658e1a885a3608c99c9faa5 +2009-04-30T07:13:08.234464Z +17794 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +475 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/templates/.svn/prop-base/layout.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/templates/.svn/prop-base/layout.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/templates/.svn/prop-base/layout.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/templates/.svn/text-base/layout.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/templates/.svn/text-base/layout.php.svn-base new file mode 100644 index 0000000..6d75aa8 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/templates/.svn/text-base/layout.php.svn-base @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/templates/layout.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/templates/layout.php new file mode 100644 index 0000000..6d75aa8 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/crud/templates/layout.php @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/.svn/all-wcprops new file mode 100644 index 0000000..94d6f44 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 94 +/!svn/ver/24597/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/.svn/entries new file mode 100644 index 0000000..e52f465 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/.svn/entries @@ -0,0 +1,43 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend +http://svn.symfony-project.com + + + +2009-11-30T19:53:50.069045Z +24597 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +i18n +dir + +config +dir + +lib +dir + +modules +dir + +templates +dir + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/.svn/all-wcprops new file mode 100644 index 0000000..c413fa9 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/.svn/all-wcprops @@ -0,0 +1,59 @@ +K 25 +svn:wc:ra_dav:version-url +V 101 +/!svn/ver/24434/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config +END +factories.yml +K 25 +svn:wc:ra_dav:version-url +V 115 +/!svn/ver/24434/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/factories.yml +END +app.yml +K 25 +svn:wc:ra_dav:version-url +V 109 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/app.yml +END +settings.yml +K 25 +svn:wc:ra_dav:version-url +V 114 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/settings.yml +END +frontendConfiguration.class.php +K 25 +svn:wc:ra_dav:version-url +V 133 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/frontendConfiguration.class.php +END +cache.yml +K 25 +svn:wc:ra_dav:version-url +V 111 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/cache.yml +END +routing.yml +K 25 +svn:wc:ra_dav:version-url +V 113 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/routing.yml +END +security.yml +K 25 +svn:wc:ra_dav:version-url +V 114 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/security.yml +END +filters.yml +K 25 +svn:wc:ra_dav:version-url +V 113 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/filters.yml +END +view.yml +K 25 +svn:wc:ra_dav:version-url +V 110 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/view.yml +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/.svn/entries new file mode 100644 index 0000000..d715013 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/.svn/entries @@ -0,0 +1,334 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config +http://svn.symfony-project.com + + + +2009-11-26T11:52:47.753777Z +24434 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +factories.yml +file + + + + +2012-05-10T18:41:34.045549Z +a66e8e26cd1d4950fd440da104aedab8 +2009-11-26T11:52:47.753777Z +24434 +fabien + + + + + + + + + + + + + + + + + + + + + +277 + +app.yml +file + + + + +2012-05-10T18:41:34.045549Z +664ff901092a718deab9361d52dd2813 +2008-04-05T00:43:40.436058Z +8315 +dwhittle + + + + + + + + + + + + + + + + + + + + + +23 + +settings.yml +file + + + + +2012-05-10T18:41:34.045549Z +3805fc82e550a9522cbcdcecfa5e72fd +2009-09-11T07:38:24.815935Z +21884 +fabien + + + + + + + + + + + + + + + + + + + + + +1043 + +frontendConfiguration.class.php +file + + + + +2012-05-10T18:41:34.045549Z +1b1e5eb069c9708079653452d6b5c559 +2008-08-25T18:52:22.235138Z +11123 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +112 + +cache.yml +file + + + + +2012-05-10T18:41:34.049551Z +e8bf44a2ebd40560e059ae7ee72f6433 +2009-09-11T07:38:24.815935Z +21884 +fabien + + + + + + + + + + + + + + + + + + + + + +72 + +routing.yml +file + + + + +2012-05-10T18:41:34.141937Z +797b3c445d790684651e05ab15d2de02 +2008-04-05T00:43:40.436058Z +8315 +dwhittle + + + + + + + + + + + + + + + + + + + + + +255 + +security.yml +file + + + + +2012-05-10T18:41:34.149560Z +a66fd43f8b3cc8d473e52a49d4938d99 +2009-09-11T07:38:24.815935Z +21884 +fabien + + + + + + + + + + + + + + + + + + + + + +28 + +filters.yml +file + + + + +2012-05-10T18:41:34.153547Z +93f57b2488497276de4f181fdda9b10b +2009-04-30T07:13:08.234464Z +17794 +fabien + + + + + + + + + + + + + + + + + + + + + +86 + +view.yml +file + + + + +2012-05-10T18:41:34.153547Z +36eb0fa41299f46c8b8f374729bd6b76 +2009-09-11T07:38:24.815935Z +21884 +fabien + + + + + + + + + + + + + + + + + + + + + +318 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/.svn/prop-base/frontendConfiguration.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/.svn/prop-base/frontendConfiguration.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/.svn/prop-base/frontendConfiguration.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/.svn/text-base/app.yml.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/.svn/text-base/app.yml.svn-base new file mode 100644 index 0000000..1899f5f --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/.svn/text-base/app.yml.svn-base @@ -0,0 +1,2 @@ +# default values +#all: diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/.svn/text-base/cache.yml.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/.svn/text-base/cache.yml.svn-base new file mode 100644 index 0000000..c120397 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/.svn/text-base/cache.yml.svn-base @@ -0,0 +1,4 @@ +default: + enabled: false + with_layout: false + lifetime: 86400 diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/.svn/text-base/factories.yml.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/.svn/text-base/factories.yml.svn-base new file mode 100644 index 0000000..1b33b56 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/.svn/text-base/factories.yml.svn-base @@ -0,0 +1,17 @@ +prod: + logger: + class: sfNoLogger + param: + level: err + loggers: ~ + +test: + response: + class: sfWebResponse + param: + send_http_headers: false + + storage: + class: sfSessionTestStorage + param: + session_path: %SF_TEST_CACHE_DIR%/sessions diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/.svn/text-base/filters.yml.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/.svn/text-base/filters.yml.svn-base new file mode 100644 index 0000000..0cbf8a7 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/.svn/text-base/filters.yml.svn-base @@ -0,0 +1,8 @@ +rendering: ~ +security: ~ + +# insert your own filters here + +cache: ~ + +execution: ~ diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/.svn/text-base/frontendConfiguration.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/.svn/text-base/frontendConfiguration.class.php.svn-base new file mode 100644 index 0000000..12b3e0b --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/.svn/text-base/frontendConfiguration.class.php.svn-base @@ -0,0 +1,8 @@ + + web_debug: true + cache: false + no_script_name: false + etag: false + +test: + .settings: + error_reporting: + cache: false + web_debug: false + no_script_name: false + etag: false + +all: + .settings: + # Form security secret (CSRF protection) + csrf_secret: false # Unique secret to enable CSRF protection or false to disable + + # Output escaping settings + escaping_strategy: false # Determines how variables are made available to templates. Accepted values: true, false. + escaping_method: ESC_SPECIALCHARS # Function or helper used for escaping. Accepted values: ESC_RAW, ESC_ENTITIES, ESC_JS, ESC_JS_NO_ENTITIES, and ESC_SPECIALCHARS. diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/.svn/text-base/view.yml.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/.svn/text-base/view.yml.svn-base new file mode 100644 index 0000000..ba06e3e --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/.svn/text-base/view.yml.svn-base @@ -0,0 +1,17 @@ +default: + http_metas: + content-type: text/html + + metas: + #title: symfony project + #description: symfony project + #keywords: symfony, project + #language: en + robots: index, follow + + stylesheets: [main] + + javascripts: [] + + has_layout: true + layout: layout diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/app.yml b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/app.yml new file mode 100644 index 0000000..1899f5f --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/app.yml @@ -0,0 +1,2 @@ +# default values +#all: diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/cache.yml b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/cache.yml new file mode 100644 index 0000000..c120397 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/cache.yml @@ -0,0 +1,4 @@ +default: + enabled: false + with_layout: false + lifetime: 86400 diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/factories.yml b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/factories.yml new file mode 100644 index 0000000..1b33b56 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/factories.yml @@ -0,0 +1,17 @@ +prod: + logger: + class: sfNoLogger + param: + level: err + loggers: ~ + +test: + response: + class: sfWebResponse + param: + send_http_headers: false + + storage: + class: sfSessionTestStorage + param: + session_path: %SF_TEST_CACHE_DIR%/sessions diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/filters.yml b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/filters.yml new file mode 100644 index 0000000..0cbf8a7 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/filters.yml @@ -0,0 +1,8 @@ +rendering: ~ +security: ~ + +# insert your own filters here + +cache: ~ + +execution: ~ diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/frontendConfiguration.class.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/frontendConfiguration.class.php new file mode 100644 index 0000000..12b3e0b --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/frontendConfiguration.class.php @@ -0,0 +1,8 @@ + + web_debug: true + cache: false + no_script_name: false + etag: false + +test: + .settings: + error_reporting: + cache: false + web_debug: false + no_script_name: false + etag: false + +all: + .settings: + # Form security secret (CSRF protection) + csrf_secret: false # Unique secret to enable CSRF protection or false to disable + + # Output escaping settings + escaping_strategy: false # Determines how variables are made available to templates. Accepted values: true, false. + escaping_method: ESC_SPECIALCHARS # Function or helper used for escaping. Accepted values: ESC_RAW, ESC_ENTITIES, ESC_JS, ESC_JS_NO_ENTITIES, and ESC_SPECIALCHARS. diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/view.yml b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/view.yml new file mode 100644 index 0000000..ba06e3e --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/config/view.yml @@ -0,0 +1,17 @@ +default: + http_metas: + content-type: text/html + + metas: + #title: symfony project + #description: symfony project + #keywords: symfony, project + #language: en + robots: index, follow + + stylesheets: [main] + + javascripts: [] + + has_layout: true + layout: layout diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/i18n/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/i18n/.svn/all-wcprops new file mode 100644 index 0000000..84cf04a --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/i18n/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 99 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/i18n +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/i18n/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/i18n/.svn/entries new file mode 100644 index 0000000..f9fb666 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/i18n/.svn/entries @@ -0,0 +1,28 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/i18n +http://svn.symfony-project.com + + + +2008-04-05T00:43:40.436058Z +8315 +dwhittle + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/lib/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/lib/.svn/all-wcprops new file mode 100644 index 0000000..1958875 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/lib/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 98 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/lib +END +myUser.class.php +K 25 +svn:wc:ra_dav:version-url +V 115 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/lib/myUser.class.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/lib/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/lib/.svn/entries new file mode 100644 index 0000000..d9de32d --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/lib/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/lib +http://svn.symfony-project.com + + + +2008-04-05T00:43:40.436058Z +8315 +dwhittle + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +myUser.class.php +file + + + + +2012-05-10T18:41:34.161552Z +215548048bbbdd100411afc00252a797 +2008-04-05T00:43:40.436058Z +8315 +dwhittle +has-props + + + + + + + + + + + + + + + + + + + + +52 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/lib/.svn/prop-base/myUser.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/lib/.svn/prop-base/myUser.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/lib/.svn/prop-base/myUser.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/lib/.svn/text-base/myUser.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/lib/.svn/text-base/myUser.class.php.svn-base new file mode 100644 index 0000000..4c79302 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/lib/.svn/text-base/myUser.class.php.svn-base @@ -0,0 +1,5 @@ +form = new AttachmentForm(); + unset($this->form['article_id']); + + if ($request->isMethod(sfRequest::POST)) + { + $this->form->bind($request->getParameter('attachment'), $request->getFiles('attachment')); + + if ($this->form->isValid()) + { + $this->form->save(); + + $this->redirect('attachment/ok'); + } + } + } + + public function executeEmbedded($request) + { + $this->form = new ArticleForm(null, array('with_attachment' => true)); + + if ( + $request->isMethod(sfRequest::POST) + && + $this->form->bindAndSave($request->getParameter('article'), $request->getFiles('article')) + ) + { + $this->redirect('attachment/ok'); + } + + $this->setTemplate('index'); + } + + public function executeOk() + { + return $this->renderText('ok'); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/attachment/actions/actions.class.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/attachment/actions/actions.class.php new file mode 100644 index 0000000..9bbcfa9 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/attachment/actions/actions.class.php @@ -0,0 +1,51 @@ +form = new AttachmentForm(); + unset($this->form['article_id']); + + if ($request->isMethod(sfRequest::POST)) + { + $this->form->bind($request->getParameter('attachment'), $request->getFiles('attachment')); + + if ($this->form->isValid()) + { + $this->form->save(); + + $this->redirect('attachment/ok'); + } + } + } + + public function executeEmbedded($request) + { + $this->form = new ArticleForm(null, array('with_attachment' => true)); + + if ( + $request->isMethod(sfRequest::POST) + && + $this->form->bindAndSave($request->getParameter('article'), $request->getFiles('article')) + ) + { + $this->redirect('attachment/ok'); + } + + $this->setTemplate('index'); + } + + public function executeOk() + { + return $this->renderText('ok'); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/attachment/templates/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/attachment/templates/.svn/all-wcprops new file mode 100644 index 0000000..1551670 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/attachment/templates/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 123 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/attachment/templates +END +indexSuccess.php +K 25 +svn:wc:ra_dav:version-url +V 140 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/attachment/templates/indexSuccess.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/attachment/templates/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/attachment/templates/.svn/entries new file mode 100644 index 0000000..62c5de5 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/attachment/templates/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/attachment/templates +http://svn.symfony-project.com + + + +2008-12-13T14:27:57.072049Z +14010 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +indexSuccess.php +file + + + + +2012-05-10T18:41:37.485550Z +49b0b68b1a65c8adfcebe307deb0b37a +2008-12-13T14:27:57.072049Z +14010 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +293 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/attachment/templates/.svn/prop-base/indexSuccess.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/attachment/templates/.svn/prop-base/indexSuccess.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/attachment/templates/.svn/prop-base/indexSuccess.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/attachment/templates/.svn/text-base/indexSuccess.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/attachment/templates/.svn/text-base/indexSuccess.php.svn-base new file mode 100644 index 0000000..834a154 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/attachment/templates/.svn/text-base/indexSuccess.php.svn-base @@ -0,0 +1,10 @@ +
    + + + + + +
    + +
    +
    diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/attachment/templates/indexSuccess.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/attachment/templates/indexSuccess.php new file mode 100644 index 0000000..834a154 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/attachment/templates/indexSuccess.php @@ -0,0 +1,10 @@ +
    + + + + + +
    + +
    +
    diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/.svn/all-wcprops new file mode 100644 index 0000000..9d29935 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 109 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/.svn/entries new file mode 100644 index 0000000..b6ca520 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/.svn/entries @@ -0,0 +1,34 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice +http://svn.symfony-project.com + + + +2009-04-04T14:16:46.420406Z +16987 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions +dir + +templates +dir + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/actions/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/actions/.svn/all-wcprops new file mode 100644 index 0000000..7f6bcdf --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/actions/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 117 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/actions +END +actions.class.php +K 25 +svn:wc:ra_dav:version-url +V 135 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/actions/actions.class.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/actions/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/actions/.svn/entries new file mode 100644 index 0000000..3dce199 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/actions/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/actions +http://svn.symfony-project.com + + + +2009-04-04T14:16:46.420406Z +16987 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions.class.php +file + + + + +2012-05-10T18:41:37.577551Z +ec3395c6e0382aa74fc942e23af57d49 +2009-04-04T14:16:46.420406Z +16987 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +1153 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/actions/.svn/prop-base/actions.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/actions/.svn/prop-base/actions.class.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/actions/.svn/prop-base/actions.class.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/actions/.svn/text-base/actions.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/actions/.svn/text-base/actions.class.php.svn-base new file mode 100644 index 0000000..5cd6240 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/actions/.svn/text-base/actions.class.php.svn-base @@ -0,0 +1,50 @@ +form = new ArticleForm(); + + if ($request->getParameter('impossible_validator')) + { + $criteria = new Criteria(); + $criteria->add(CategoryPeer::ID, null, Criteria::ISNULL); + + $this->form->getValidator('category_id')->setOption('criteria', $criteria); + } + + if ($request->getParameter('impossible_validator_many')) + { + $criteria = new Criteria(); + $criteria->add(AuthorPeer::ID, null, Criteria::ISNULL); + + $this->form->getValidator('author_article_list')->setOption('criteria', $criteria); + } + + if ($request->isMethod(sfRequest::POST)) + { + $this->form->bind($request->getParameter('article')); + + if ($this->form->isValid()) + { + $this->form->save(); + + $this->redirect('choice/ok'); + } + } + } + + public function executeOk() + { + return $this->renderText('ok'); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/actions/actions.class.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/actions/actions.class.php new file mode 100644 index 0000000..4f14326 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/actions/actions.class.php @@ -0,0 +1,50 @@ +form = new ArticleForm(); + + if ($request->getParameter('impossible_validator')) + { + $criteria = new Criteria(); + $criteria->add(CategoryPeer::ID, null, Criteria::ISNULL); + + $this->form->getValidator('category_id')->setOption('criteria', $criteria); + } + + if ($request->getParameter('impossible_validator_many')) + { + $criteria = new Criteria(); + $criteria->add(AuthorPeer::ID, null, Criteria::ISNULL); + + $this->form->getValidator('author_article_list')->setOption('criteria', $criteria); + } + + if ($request->isMethod(sfRequest::POST)) + { + $this->form->bind($request->getParameter('article')); + + if ($this->form->isValid()) + { + $this->form->save(); + + $this->redirect('choice/ok'); + } + } + } + + public function executeOk() + { + return $this->renderText('ok'); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/templates/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/templates/.svn/all-wcprops new file mode 100644 index 0000000..d14e52a --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/templates/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 119 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/templates +END +articleSuccess.php +K 25 +svn:wc:ra_dav:version-url +V 138 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/templates/articleSuccess.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/templates/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/templates/.svn/entries new file mode 100644 index 0000000..d62ee23 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/templates/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/templates +http://svn.symfony-project.com + + + +2009-02-19T13:35:10.118243Z +15627 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +articleSuccess.php +file + + + + +2012-05-10T18:41:37.617549Z +293eff9beac79dcf0b48976eff8a3f17 +2009-02-19T13:35:10.118243Z +15627 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +224 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/templates/.svn/prop-base/articleSuccess.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/templates/.svn/prop-base/articleSuccess.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/templates/.svn/prop-base/articleSuccess.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/templates/.svn/text-base/articleSuccess.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/templates/.svn/text-base/articleSuccess.php.svn-base new file mode 100644 index 0000000..ba0e051 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/templates/.svn/text-base/articleSuccess.php.svn-base @@ -0,0 +1,10 @@ +
    + + + + + +
    + +
    +
    diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/templates/articleSuccess.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/templates/articleSuccess.php new file mode 100644 index 0000000..ba0e051 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/choice/templates/articleSuccess.php @@ -0,0 +1,10 @@ +
    + + + + + +
    + +
    +
    diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/.svn/all-wcprops new file mode 100644 index 0000000..88d03a0 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 107 +/!svn/ver/24597/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/.svn/entries new file mode 100644 index 0000000..04218c3 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/.svn/entries @@ -0,0 +1,34 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n +http://svn.symfony-project.com + + + +2009-11-30T19:53:50.069045Z +24597 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions +dir + +templates +dir + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/actions/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/actions/.svn/all-wcprops new file mode 100644 index 0000000..fc79af4 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/actions/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 115 +/!svn/ver/24597/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/actions +END +actions.class.php +K 25 +svn:wc:ra_dav:version-url +V 133 +/!svn/ver/24597/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/actions/actions.class.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/actions/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/actions/.svn/entries new file mode 100644 index 0000000..20335d8 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/actions/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/actions +http://svn.symfony-project.com + + + +2009-11-30T19:53:50.069045Z +24597 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions.class.php +file + + + + +2012-05-10T18:41:35.161549Z +4b0a078956346fe39f25ce1073d15fbb +2009-11-30T19:53:50.069045Z +24597 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +1015 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/actions/.svn/prop-base/actions.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/actions/.svn/prop-base/actions.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/actions/.svn/prop-base/actions.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/actions/.svn/text-base/actions.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/actions/.svn/text-base/actions.class.php.svn-base new file mode 100644 index 0000000..819bde3 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/actions/.svn/text-base/actions.class.php.svn-base @@ -0,0 +1,48 @@ +getUser()->setCulture('fr'); + + $this->movies = MoviePeer::doSelect(new Criteria()); + } + + public function executeDefault() + { + $this->movies = MoviePeer::doSelect(new Criteria()); + + $this->setTemplate('index'); + } + + public function executeMovie($request) + { + $this->form = new MovieForm(MoviePeer::retrieveByPk($request->getParameter('id'))); + + if ($request->isMethod(sfRequest::POST)) + { + $this->form->bind($request->getParameter('movie')); + + if ($this->form->isValid()) + { + $movie = $this->form->save(); + + $this->redirect('i18n/movie?id='.$movie->getId()); + } + } + } + + public function executeProducts() + { + $this->products = ProductPeer::doSelect(new Criteria()); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/actions/actions.class.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/actions/actions.class.php new file mode 100644 index 0000000..6395c6f --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/actions/actions.class.php @@ -0,0 +1,48 @@ +getUser()->setCulture('fr'); + + $this->movies = MoviePeer::doSelect(new Criteria()); + } + + public function executeDefault() + { + $this->movies = MoviePeer::doSelect(new Criteria()); + + $this->setTemplate('index'); + } + + public function executeMovie($request) + { + $this->form = new MovieForm(MoviePeer::retrieveByPk($request->getParameter('id'))); + + if ($request->isMethod(sfRequest::POST)) + { + $this->form->bind($request->getParameter('movie')); + + if ($this->form->isValid()) + { + $movie = $this->form->save(); + + $this->redirect('i18n/movie?id='.$movie->getId()); + } + } + } + + public function executeProducts() + { + $this->products = ProductPeer::doSelect(new Criteria()); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/.svn/all-wcprops new file mode 100644 index 0000000..ec734f3 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/.svn/all-wcprops @@ -0,0 +1,23 @@ +K 25 +svn:wc:ra_dav:version-url +V 117 +/!svn/ver/24597/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates +END +productsSuccess.php +K 25 +svn:wc:ra_dav:version-url +V 137 +/!svn/ver/24597/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/productsSuccess.php +END +indexSuccess.php +K 25 +svn:wc:ra_dav:version-url +V 134 +/!svn/ver/24597/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/indexSuccess.php +END +movieSuccess.php +K 25 +svn:wc:ra_dav:version-url +V 134 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/movieSuccess.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/.svn/entries new file mode 100644 index 0000000..a1a9b8d --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/.svn/entries @@ -0,0 +1,130 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates +http://svn.symfony-project.com + + + +2009-11-30T19:53:50.069045Z +24597 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +productsSuccess.php +file + + + + +2012-05-10T18:41:36.677553Z +b2efdceabee458431c1b6de5918578e2 +2009-11-30T19:53:50.069045Z +24597 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +145 + +indexSuccess.php +file + + + + +2012-05-10T18:41:36.681552Z +d4ab53ed58338d28d79fbf9b98f05659 +2009-11-30T19:53:50.069045Z +24597 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +321 + +movieSuccess.php +file + + + + +2012-05-10T18:41:36.681552Z +84a584a8241a071750f94b8bada79b82 +2008-11-09T20:08:32.276277Z +12854 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +185 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/.svn/prop-base/indexSuccess.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/.svn/prop-base/indexSuccess.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/.svn/prop-base/indexSuccess.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/.svn/prop-base/movieSuccess.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/.svn/prop-base/movieSuccess.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/.svn/prop-base/movieSuccess.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/.svn/prop-base/productsSuccess.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/.svn/prop-base/productsSuccess.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/.svn/prop-base/productsSuccess.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/.svn/text-base/indexSuccess.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/.svn/text-base/indexSuccess.php.svn-base new file mode 100644 index 0000000..59c9778 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/.svn/text-base/indexSuccess.php.svn-base @@ -0,0 +1,8 @@ +
      + +
    • +
    • getTitle() ?>
    • +
    • getTitle('fr') ?>
    • +
    • getTitle('it') ?>
    • + +
    diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/.svn/text-base/movieSuccess.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/.svn/text-base/movieSuccess.php.svn-base new file mode 100644 index 0000000..a6b357a --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/.svn/text-base/movieSuccess.php.svn-base @@ -0,0 +1,10 @@ +
    + + + + + +
    + +
    +
    diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/.svn/text-base/productsSuccess.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/.svn/text-base/productsSuccess.php.svn-base new file mode 100644 index 0000000..0b06efe --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/.svn/text-base/productsSuccess.php.svn-base @@ -0,0 +1,5 @@ +
      + +
    • + +
    diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/indexSuccess.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/indexSuccess.php new file mode 100644 index 0000000..59c9778 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/indexSuccess.php @@ -0,0 +1,8 @@ +
      + +
    • +
    • getTitle() ?>
    • +
    • getTitle('fr') ?>
    • +
    • getTitle('it') ?>
    • + +
    diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/movieSuccess.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/movieSuccess.php new file mode 100644 index 0000000..a6b357a --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/movieSuccess.php @@ -0,0 +1,10 @@ +
    + + + + + +
    + +
    +
    diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/productsSuccess.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/productsSuccess.php new file mode 100644 index 0000000..0b06efe --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/i18n/templates/productsSuccess.php @@ -0,0 +1,5 @@ +
      + +
    • + +
    diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/.svn/all-wcprops new file mode 100644 index 0000000..823d7b9 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 108 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/.svn/entries new file mode 100644 index 0000000..b8652dd --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/.svn/entries @@ -0,0 +1,34 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager +http://svn.symfony-project.com + + + +2009-09-11T13:01:31.334864Z +21912 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions +dir + +templates +dir + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/actions/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/actions/.svn/all-wcprops new file mode 100644 index 0000000..33685c1 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/actions/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 116 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/actions +END +actions.class.php +K 25 +svn:wc:ra_dav:version-url +V 134 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/actions/actions.class.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/actions/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/actions/.svn/entries new file mode 100644 index 0000000..6115729 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/actions/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/actions +http://svn.symfony-project.com + + + +2009-09-11T13:01:31.334864Z +21912 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions.class.php +file + + + + +2012-05-10T18:41:37.689548Z +eeac1285aa28e3e74b611880e83c1649 +2009-09-11T13:01:31.334864Z +21912 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +169 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/actions/.svn/prop-base/actions.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/actions/.svn/prop-base/actions.class.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/actions/.svn/prop-base/actions.class.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/actions/.svn/text-base/actions.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/actions/.svn/text-base/actions.class.php.svn-base new file mode 100644 index 0000000..2b4fbd5 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/actions/.svn/text-base/actions.class.php.svn-base @@ -0,0 +1,10 @@ +pager = new sfPropelPager('Article'); + $this->pager->init(); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/actions/actions.class.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/actions/actions.class.php new file mode 100644 index 0000000..2b4fbd5 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/actions/actions.class.php @@ -0,0 +1,10 @@ +pager = new sfPropelPager('Article'); + $this->pager->init(); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/templates/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/templates/.svn/all-wcprops new file mode 100644 index 0000000..7db866e --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/templates/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 118 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/templates +END +interfacesSuccess.php +K 25 +svn:wc:ra_dav:version-url +V 140 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/templates/interfacesSuccess.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/templates/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/templates/.svn/entries new file mode 100644 index 0000000..602b750 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/templates/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/templates +http://svn.symfony-project.com + + + +2009-09-11T13:01:31.334864Z +21912 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +interfacesSuccess.php +file + + + + +2012-05-10T18:41:37.757550Z +2940adac199216e78b6ebe5d66ff4cc3 +2009-09-11T13:01:31.334864Z +21912 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +238 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/templates/.svn/prop-base/interfacesSuccess.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/templates/.svn/prop-base/interfacesSuccess.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/templates/.svn/prop-base/interfacesSuccess.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/templates/.svn/text-base/interfacesSuccess.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/templates/.svn/text-base/interfacesSuccess.php.svn-base new file mode 100644 index 0000000..5cd6d9c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/templates/.svn/text-base/interfacesSuccess.php.svn-base @@ -0,0 +1,7 @@ +
      + $article): ?> +
    • getTitle() ?>
    • + +
    + + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/templates/interfacesSuccess.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/templates/interfacesSuccess.php new file mode 100644 index 0000000..5cd6d9c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pager/templates/interfacesSuccess.php @@ -0,0 +1,7 @@ +
      + $article): ?> +
    • getTitle() ?>
    • + +
    + + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pooling/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pooling/.svn/all-wcprops new file mode 100644 index 0000000..e8845c8 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pooling/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 110 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pooling +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pooling/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pooling/.svn/entries new file mode 100644 index 0000000..01243c3 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pooling/.svn/entries @@ -0,0 +1,31 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pooling +http://svn.symfony-project.com + + + +2008-12-14T15:41:43.923524Z +14025 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions +dir + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pooling/actions/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pooling/actions/.svn/all-wcprops new file mode 100644 index 0000000..a9b20e2 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pooling/actions/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 118 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pooling/actions +END +actions.class.php +K 25 +svn:wc:ra_dav:version-url +V 136 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pooling/actions/actions.class.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pooling/actions/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pooling/actions/.svn/entries new file mode 100644 index 0000000..79f1c03 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pooling/actions/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pooling/actions +http://svn.symfony-project.com + + + +2008-12-14T15:41:43.923524Z +14025 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions.class.php +file + + + + +2012-05-10T18:41:37.273551Z +d3a2c35b2472fe17da484bf73fbee579 +2008-12-14T15:41:43.923524Z +14025 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +865 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pooling/actions/.svn/prop-base/actions.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pooling/actions/.svn/prop-base/actions.class.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pooling/actions/.svn/prop-base/actions.class.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pooling/actions/.svn/text-base/actions.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pooling/actions/.svn/text-base/actions.class.php.svn-base new file mode 100644 index 0000000..9dc75d4 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pooling/actions/.svn/text-base/actions.class.php.svn-base @@ -0,0 +1,35 @@ +setTitle(__METHOD__.'()'); + + $category = CategoryPeer::retrieveByPK($request->getParameter('category_id')); + $category->addArticle($article); + + return sfView::NONE; + } + + public function executeAddArticleAndSave(sfWebRequest $request) + { + $article = new Article(); + $article->setTitle(__METHOD__.'()'); + + $category = CategoryPeer::retrieveByPK($request->getParameter('category_id')); + $category->addArticle($article); + $category->save(); + + return sfView::NONE; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pooling/actions/actions.class.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pooling/actions/actions.class.php new file mode 100644 index 0000000..8f9eafe --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/pooling/actions/actions.class.php @@ -0,0 +1,35 @@ +setTitle(__METHOD__.'()'); + + $category = CategoryPeer::retrieveByPK($request->getParameter('category_id')); + $category->addArticle($article); + + return sfView::NONE; + } + + public function executeAddArticleAndSave(sfWebRequest $request) + { + $article = new Article(); + $article->setTitle(__METHOD__.'()'); + + $category = CategoryPeer::retrieveByPK($request->getParameter('category_id')); + $category->addArticle($article); + $category->save(); + + return sfView::NONE; + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/.svn/all-wcprops new file mode 100644 index 0000000..80a442c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 109 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/.svn/entries new file mode 100644 index 0000000..85f94a9 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/.svn/entries @@ -0,0 +1,34 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique +http://svn.symfony-project.com + + + +2009-04-04T14:16:46.420406Z +16987 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions +dir + +templates +dir + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/actions/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/actions/.svn/all-wcprops new file mode 100644 index 0000000..a43f586 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/actions/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 117 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/actions +END +actions.class.php +K 25 +svn:wc:ra_dav:version-url +V 135 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/actions/actions.class.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/actions/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/actions/.svn/entries new file mode 100644 index 0000000..c8546cb --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/actions/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/actions +http://svn.symfony-project.com + + + +2009-04-04T14:16:46.420406Z +16987 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions.class.php +file + + + + +2012-05-10T18:41:36.917550Z +b5c10584b97ed16aa63f06ab187e2559 +2009-04-04T14:16:46.420406Z +16987 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +1572 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/actions/.svn/prop-base/actions.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/actions/.svn/prop-base/actions.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/actions/.svn/prop-base/actions.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/actions/.svn/text-base/actions.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/actions/.svn/text-base/actions.class.php.svn-base new file mode 100644 index 0000000..14325f2 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/actions/.svn/text-base/actions.class.php.svn-base @@ -0,0 +1,74 @@ +form = new ArticleForm(); + + if ($request->isMethod(sfRequest::POST)) + { + $this->form->bind($request->getParameter('article')); + + if ($this->form->isValid()) + { + $this->form->save(); + + $this->redirect('unique/ok'); + } + } + } + + public function executeEdit($request) + { + $this->form = new ArticleForm(ArticlePeer::doSelectOne(new Criteria())); + + if ($request->isMethod(sfRequest::POST)) + { + $this->form->bind($request->getParameter('article')); + + if ($this->form->isValid()) + { + $this->form->save(); + + $this->redirect('unique/edit'); + } + } + } + + public function executeCategory($request) + { + $category = CategoryPeer::retrieveByPk($request->getParameter('category[id]')); + $this->form = new CategoryForm($category); + + if ($request->getParameter('global')) + { + $this->form->getValidatorSchema()->getPostValidator()->setOption('throw_global_error', true); + } + + if ($request->isMethod(sfRequest::POST)) + { + $this->form->bind($request->getParameter('category')); + + if ($this->form->isValid()) + { + $this->form->save(); + + $this->redirect('unique/ok'); + } + } + } + + public function executeOk() + { + return $this->renderText('ok'); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/actions/actions.class.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/actions/actions.class.php new file mode 100644 index 0000000..205d898 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/actions/actions.class.php @@ -0,0 +1,74 @@ +form = new ArticleForm(); + + if ($request->isMethod(sfRequest::POST)) + { + $this->form->bind($request->getParameter('article')); + + if ($this->form->isValid()) + { + $this->form->save(); + + $this->redirect('unique/ok'); + } + } + } + + public function executeEdit($request) + { + $this->form = new ArticleForm(ArticlePeer::doSelectOne(new Criteria())); + + if ($request->isMethod(sfRequest::POST)) + { + $this->form->bind($request->getParameter('article')); + + if ($this->form->isValid()) + { + $this->form->save(); + + $this->redirect('unique/edit'); + } + } + } + + public function executeCategory($request) + { + $category = CategoryPeer::retrieveByPk($request->getParameter('category[id]')); + $this->form = new CategoryForm($category); + + if ($request->getParameter('global')) + { + $this->form->getValidatorSchema()->getPostValidator()->setOption('throw_global_error', true); + } + + if ($request->isMethod(sfRequest::POST)) + { + $this->form->bind($request->getParameter('category')); + + if ($this->form->isValid()) + { + $this->form->save(); + + $this->redirect('unique/ok'); + } + } + } + + public function executeOk() + { + return $this->renderText('ok'); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/.svn/all-wcprops new file mode 100644 index 0000000..f6d5390 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/.svn/all-wcprops @@ -0,0 +1,23 @@ +K 25 +svn:wc:ra_dav:version-url +V 119 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates +END +articleSuccess.php +K 25 +svn:wc:ra_dav:version-url +V 138 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/articleSuccess.php +END +editSuccess.php +K 25 +svn:wc:ra_dav:version-url +V 135 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/editSuccess.php +END +categorySuccess.php +K 25 +svn:wc:ra_dav:version-url +V 139 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/categorySuccess.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/.svn/entries new file mode 100644 index 0000000..4c056ad --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/.svn/entries @@ -0,0 +1,130 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates +http://svn.symfony-project.com + + + +2008-11-04T17:48:38.050834Z +12637 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +articleSuccess.php +file + + + + +2012-05-10T18:41:37.133552Z +72035d86d28227df58b6847407b84331 +2008-05-07T22:45:35.839203Z +8851 +dwhittle +has-props + + + + + + + + + + + + + + + + + + + + +224 + +editSuccess.php +file + + + + +2012-05-10T18:41:37.133552Z +da735ed68cc68a62222c7d49065520e1 +2008-11-04T17:48:38.050834Z +12637 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +221 + +categorySuccess.php +file + + + + +2012-05-10T18:41:37.133552Z +9184fa38844d28d0bac656a8899974c2 +2008-05-07T22:45:35.839203Z +8851 +dwhittle +has-props + + + + + + + + + + + + + + + + + + + + +225 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/.svn/prop-base/articleSuccess.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/.svn/prop-base/articleSuccess.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/.svn/prop-base/articleSuccess.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/.svn/prop-base/categorySuccess.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/.svn/prop-base/categorySuccess.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/.svn/prop-base/categorySuccess.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/.svn/prop-base/editSuccess.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/.svn/prop-base/editSuccess.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/.svn/prop-base/editSuccess.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/.svn/text-base/articleSuccess.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/.svn/text-base/articleSuccess.php.svn-base new file mode 100644 index 0000000..cb699dd --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/.svn/text-base/articleSuccess.php.svn-base @@ -0,0 +1,10 @@ +
    + + + + + +
    + +
    +
    diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/.svn/text-base/categorySuccess.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/.svn/text-base/categorySuccess.php.svn-base new file mode 100644 index 0000000..1216192 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/.svn/text-base/categorySuccess.php.svn-base @@ -0,0 +1,10 @@ +
    + + + + + +
    + +
    +
    diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/.svn/text-base/editSuccess.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/.svn/text-base/editSuccess.php.svn-base new file mode 100644 index 0000000..7dde173 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/.svn/text-base/editSuccess.php.svn-base @@ -0,0 +1,10 @@ +
    + + + + + +
    + +
    +
    diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/articleSuccess.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/articleSuccess.php new file mode 100644 index 0000000..cb699dd --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/articleSuccess.php @@ -0,0 +1,10 @@ +
    + + + + + +
    + +
    +
    diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/categorySuccess.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/categorySuccess.php new file mode 100644 index 0000000..1216192 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/categorySuccess.php @@ -0,0 +1,10 @@ +
    + + + + + +
    + +
    +
    diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/editSuccess.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/editSuccess.php new file mode 100644 index 0000000..7dde173 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/modules/unique/templates/editSuccess.php @@ -0,0 +1,10 @@ +
    + + + + + +
    + +
    +
    diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/templates/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/templates/.svn/all-wcprops new file mode 100644 index 0000000..ffd6cf2 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/templates/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 104 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/templates +END +layout.php +K 25 +svn:wc:ra_dav:version-url +V 115 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/templates/layout.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/templates/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/templates/.svn/entries new file mode 100644 index 0000000..3a15e82 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/templates/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/templates +http://svn.symfony-project.com + + + +2009-04-30T07:13:08.234464Z +17794 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +layout.php +file + + + + +2012-05-10T18:41:37.829549Z +6ca9e4cac44c9ac400ea5243371de56e +2009-04-30T07:13:08.234464Z +17794 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +460 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/templates/.svn/prop-base/layout.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/templates/.svn/prop-base/layout.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/templates/.svn/prop-base/layout.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/templates/.svn/text-base/layout.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/templates/.svn/text-base/layout.php.svn-base new file mode 100644 index 0000000..cb547eb --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/templates/.svn/text-base/layout.php.svn-base @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/templates/layout.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/templates/layout.php new file mode 100644 index 0000000..cb547eb --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/apps/frontend/templates/layout.php @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/cache/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/cache/.svn/all-wcprops new file mode 100644 index 0000000..d0b45a1 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/cache/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 86 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/cache +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/cache/.svn/dir-prop-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/cache/.svn/dir-prop-base new file mode 100644 index 0000000..1f596b0 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/cache/.svn/dir-prop-base @@ -0,0 +1,6 @@ +K 10 +svn:ignore +V 2 +* + +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/cache/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/cache/.svn/entries new file mode 100644 index 0000000..b28e418 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/cache/.svn/entries @@ -0,0 +1,28 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/cache +http://svn.symfony-project.com + + + +2007-09-16T00:53:55.343643Z +5125 +dwhittle +has-props + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/.svn/all-wcprops new file mode 100644 index 0000000..ada12ec --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/.svn/all-wcprops @@ -0,0 +1,41 @@ +K 25 +svn:wc:ra_dav:version-url +V 87 +/!svn/ver/24597/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/config +END +propel.ini +K 25 +svn:wc:ra_dav:version-url +V 98 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/propel.ini +END +schema.xml +K 25 +svn:wc:ra_dav:version-url +V 98 +/!svn/ver/24597/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/schema.xml +END +rsync_exclude.txt +K 25 +svn:wc:ra_dav:version-url +V 105 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/rsync_exclude.txt +END +databases.yml +K 25 +svn:wc:ra_dav:version-url +V 101 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/databases.yml +END +ProjectConfiguration.class.php +K 25 +svn:wc:ra_dav:version-url +V 118 +/!svn/ver/23932/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/ProjectConfiguration.class.php +END +properties.ini +K 25 +svn:wc:ra_dav:version-url +V 102 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/properties.ini +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/.svn/dir-prop-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/.svn/dir-prop-base new file mode 100644 index 0000000..88892a9 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/.svn/dir-prop-base @@ -0,0 +1,6 @@ +K 10 +svn:ignore +V 17 +*transformed.xml + +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/.svn/entries new file mode 100644 index 0000000..ddbb89a --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/.svn/entries @@ -0,0 +1,232 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/config +http://svn.symfony-project.com + + + +2009-11-30T19:53:50.069045Z +24597 +Kris.Wallsmith +has-props + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +propel.ini +file + + + + +2012-05-10T18:41:40.301554Z +6f0041a95b30a906f764fdcf814c20f8 +2009-10-24T14:54:47.401328Z +23309 +Kris.Wallsmith + + + + + + + + + + + + + + + + + + + + + +2340 + +schema.xml +file + + + + +2012-05-10T18:41:40.301554Z +8cda190f761cfcc60ef0c37712123895 +2009-11-30T19:53:50.069045Z +24597 +Kris.Wallsmith + + + + + + + + + + + + + + + + + + + + + +4372 + +rsync_exclude.txt +file + + + + +2012-05-10T18:41:40.301554Z +a1ee5a94527acd50000a270f7a893e2a +2007-09-16T00:53:55.343643Z +5125 +dwhittle + + + + + + + + + + + + + + + + + + + + + +51 + +databases.yml +file + + + + +2012-05-10T18:41:40.301554Z +c58b03965adf0468894f24741c0464df +2008-12-14T15:41:43.923524Z +14025 +Kris.Wallsmith + + + + + + + + + + + + + + + + + + + + + +179 + +ProjectConfiguration.class.php +file + + + + +2012-05-10T18:41:40.309548Z +f08686a7155be4858ba5c710ac94a850 +2009-11-14T16:32:53.123081Z +23932 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +2348 + +properties.ini +file + + + + +2012-05-10T18:41:40.524773Z +48369611b848e923e3e71c0ff7def819 +2007-09-16T00:53:55.343643Z +5125 +dwhittle + + + + + + + + + + + + + + + + + + + + + +34 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/.svn/prop-base/ProjectConfiguration.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/.svn/prop-base/ProjectConfiguration.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/.svn/prop-base/ProjectConfiguration.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/.svn/text-base/ProjectConfiguration.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/.svn/text-base/ProjectConfiguration.class.php.svn-base new file mode 100644 index 0000000..db538a3 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/.svn/text-base/ProjectConfiguration.class.php.svn-base @@ -0,0 +1,85 @@ +enableAllPluginsExcept(array('sfDoctrinePlugin')); + } + + public function initializePropel($app) + { + // build Propel om/map/sql/forms + $files = glob(sfConfig::get('sf_lib_dir').'/model/om/*.php'); + if (false === $files || !count($files)) + { + chdir(sfConfig::get('sf_root_dir')); + $task = new sfPropelBuildModelTask($this->dispatcher, new sfFormatter()); + ob_start(); + $task->run(); + $output = ob_get_clean(); + } + + $files = glob(sfConfig::get('sf_data_dir').'/sql/*.php'); + if (false === $files || !count($files)) + { + chdir(sfConfig::get('sf_root_dir')); + $task = new sfPropelBuildSqlTask($this->dispatcher, new sfFormatter()); + ob_start(); + $task->run(); + $output = ob_get_clean(); + } + + $files = glob(sfConfig::get('sf_lib_dir').'/form/base/*.php'); + if (false === $files || !count($files)) + { + chdir(sfConfig::get('sf_root_dir')); + $task = new sfPropelBuildFormsTask($this->dispatcher, new sfFormatter()); + $task->run(array(), array('application='.$app)); + } + } + + public function loadFixtures($fixtures) + { + // initialize database manager + $databaseManager = new sfDatabaseManager($this); + + // cleanup database + $db = sfConfig::get('sf_data_dir').DIRECTORY_SEPARATOR.'/database.sqlite'; + if (file_exists($db)) + { + unlink($db); + } + + // initialize database + $sql = file_get_contents(sfConfig::get('sf_data_dir').DIRECTORY_SEPARATOR.'sql'.DIRECTORY_SEPARATOR.'lib.model.schema.sql'); + $sql = preg_replace('/^\s*\-\-.+$/m', '', $sql); + $sql = preg_replace('/^\s*DROP TABLE .+?$/m', '', $sql); + $con = Propel::getConnection(); + $tables = preg_split('/CREATE TABLE/', $sql); + foreach ($tables as $table) + { + $table = trim($table); + if (!$table) + { + continue; + } + + $con->query('CREATE TABLE '.$table); + } + + // load fixtures + $data = new sfPropelData(); + if (is_array($fixtures)) + { + $data->loadDataFromArray($fixtures); + } + else + { + $data->loadData(sfConfig::get('sf_data_dir').'/'.$fixtures); + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/.svn/text-base/databases.yml.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/.svn/text-base/databases.yml.svn-base new file mode 100644 index 0000000..919b67f --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/.svn/text-base/databases.yml.svn-base @@ -0,0 +1,11 @@ +test: + propel: + param: + classname: DebugPDO + +all: + propel: + class: sfPropelDatabase + param: + dsn: sqlite:%SF_DATA_DIR%/database.sqlite + pooling: true diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/.svn/text-base/propel.ini.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/.svn/text-base/propel.ini.svn-base new file mode 100644 index 0000000..efeb24c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/.svn/text-base/propel.ini.svn-base @@ -0,0 +1,55 @@ +propel.targetPackage = lib.model +propel.packageObjectModel = true +propel.project = project +propel.database = sqlite +propel.database.driver = sqlite +propel.database.createUrl = sqlite:%SF_DATA_DIR%/database.sqlite +propel.database.url = sqlite:%SF_DATA_DIR%/database.sqlite +propel.database.creole.url = ${propel.database.url} +propel.database.user = root +propel.database.password = +propel.database.encoding = utf8 + +; mysql options +propel.mysql.tableType = InnoDB + +propel.addVendorInfo = true +propel.addGenericAccessors = true +propel.addGenericMutators = true +propel.addTimeStamp = true +propel.addValidators = false +propel.addIncludes = false + +propel.useDateTimeClass = true +propel.defaultTimeStampFormat = Y-m-d H:i:s +propel.defaultTimeFormat = H:i:s +propel.defaultDateFormat = Y-m-d + +propel.schema.validate = false +propel.samePhpName = false +propel.disableIdentifierQuoting = false +propel.emulateForeignKeyConstraints = true + +; directories +propel.home = . +propel.output.dir = %SF_ROOT_DIR% +propel.schema.dir = ${propel.output.dir}/config +propel.conf.dir = ${propel.output.dir}/config +propel.phpconf.dir = ${propel.output.dir}/config +propel.sql.dir = ${propel.output.dir}/data/sql +propel.runtime.conf.file = runtime-conf.xml +propel.php.dir = ${propel.output.dir} +propel.default.schema.basename = schema +propel.datadump.mapper.from = *schema.xml +propel.datadump.mapper.to = *data.xml + +propel.builder.addComments = true +propel.builder.addBehaviors = true + +; behaviors +propel.behavior.default = symfony,symfony_i18n +propel.behavior.symfony.class = plugins.sfPropelPlugin.lib.behavior.SfPropelBehaviorSymfony +propel.behavior.symfony_i18n.class = plugins.sfPropelPlugin.lib.behavior.SfPropelBehaviorI18n +propel.behavior.symfony_i18n_translation.class = plugins.sfPropelPlugin.lib.behavior.SfPropelBehaviorI18nTranslation +propel.behavior.symfony_behaviors.class = plugins.sfPropelPlugin.lib.behavior.SfPropelBehaviorSymfonyBehaviors +propel.behavior.symfony_timestampable.class = plugins.sfPropelPlugin.lib.behavior.SfPropelBehaviorTimestampable diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/.svn/text-base/properties.ini.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/.svn/text-base/properties.ini.svn-base new file mode 100644 index 0000000..071643d --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/.svn/text-base/properties.ini.svn-base @@ -0,0 +1,2 @@ +[symfony] + name=##PROJECT_NAME## diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/.svn/text-base/rsync_exclude.txt.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/.svn/text-base/rsync_exclude.txt.svn-base new file mode 100644 index 0000000..2d99665 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/.svn/text-base/rsync_exclude.txt.svn-base @@ -0,0 +1,5 @@ +.svn +/web/uploads/* +/cache/* +/log/* +/web/*_dev.php diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/.svn/text-base/schema.xml.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/.svn/text-base/schema.xml.svn-base new file mode 100644 index 0000000..64163b9 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/.svn/text-base/schema.xml.svn-base @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + +
    + + + + +
    + + + + +
    + + + + + + + + + + + + + + +
    + + + + + +
    + + + + + + + + +
    + + + + +
    + + + + + + + + + + + +
    + + + + + + + + + +
    + +
    diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/ProjectConfiguration.class.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/ProjectConfiguration.class.php new file mode 100644 index 0000000..db538a3 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/ProjectConfiguration.class.php @@ -0,0 +1,85 @@ +enableAllPluginsExcept(array('sfDoctrinePlugin')); + } + + public function initializePropel($app) + { + // build Propel om/map/sql/forms + $files = glob(sfConfig::get('sf_lib_dir').'/model/om/*.php'); + if (false === $files || !count($files)) + { + chdir(sfConfig::get('sf_root_dir')); + $task = new sfPropelBuildModelTask($this->dispatcher, new sfFormatter()); + ob_start(); + $task->run(); + $output = ob_get_clean(); + } + + $files = glob(sfConfig::get('sf_data_dir').'/sql/*.php'); + if (false === $files || !count($files)) + { + chdir(sfConfig::get('sf_root_dir')); + $task = new sfPropelBuildSqlTask($this->dispatcher, new sfFormatter()); + ob_start(); + $task->run(); + $output = ob_get_clean(); + } + + $files = glob(sfConfig::get('sf_lib_dir').'/form/base/*.php'); + if (false === $files || !count($files)) + { + chdir(sfConfig::get('sf_root_dir')); + $task = new sfPropelBuildFormsTask($this->dispatcher, new sfFormatter()); + $task->run(array(), array('application='.$app)); + } + } + + public function loadFixtures($fixtures) + { + // initialize database manager + $databaseManager = new sfDatabaseManager($this); + + // cleanup database + $db = sfConfig::get('sf_data_dir').DIRECTORY_SEPARATOR.'/database.sqlite'; + if (file_exists($db)) + { + unlink($db); + } + + // initialize database + $sql = file_get_contents(sfConfig::get('sf_data_dir').DIRECTORY_SEPARATOR.'sql'.DIRECTORY_SEPARATOR.'lib.model.schema.sql'); + $sql = preg_replace('/^\s*\-\-.+$/m', '', $sql); + $sql = preg_replace('/^\s*DROP TABLE .+?$/m', '', $sql); + $con = Propel::getConnection(); + $tables = preg_split('/CREATE TABLE/', $sql); + foreach ($tables as $table) + { + $table = trim($table); + if (!$table) + { + continue; + } + + $con->query('CREATE TABLE '.$table); + } + + // load fixtures + $data = new sfPropelData(); + if (is_array($fixtures)) + { + $data->loadDataFromArray($fixtures); + } + else + { + $data->loadData(sfConfig::get('sf_data_dir').'/'.$fixtures); + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/databases.yml b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/databases.yml new file mode 100644 index 0000000..919b67f --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/databases.yml @@ -0,0 +1,11 @@ +test: + propel: + param: + classname: DebugPDO + +all: + propel: + class: sfPropelDatabase + param: + dsn: sqlite:%SF_DATA_DIR%/database.sqlite + pooling: true diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/propel.ini b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/propel.ini new file mode 100644 index 0000000..efeb24c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/propel.ini @@ -0,0 +1,55 @@ +propel.targetPackage = lib.model +propel.packageObjectModel = true +propel.project = project +propel.database = sqlite +propel.database.driver = sqlite +propel.database.createUrl = sqlite:%SF_DATA_DIR%/database.sqlite +propel.database.url = sqlite:%SF_DATA_DIR%/database.sqlite +propel.database.creole.url = ${propel.database.url} +propel.database.user = root +propel.database.password = +propel.database.encoding = utf8 + +; mysql options +propel.mysql.tableType = InnoDB + +propel.addVendorInfo = true +propel.addGenericAccessors = true +propel.addGenericMutators = true +propel.addTimeStamp = true +propel.addValidators = false +propel.addIncludes = false + +propel.useDateTimeClass = true +propel.defaultTimeStampFormat = Y-m-d H:i:s +propel.defaultTimeFormat = H:i:s +propel.defaultDateFormat = Y-m-d + +propel.schema.validate = false +propel.samePhpName = false +propel.disableIdentifierQuoting = false +propel.emulateForeignKeyConstraints = true + +; directories +propel.home = . +propel.output.dir = %SF_ROOT_DIR% +propel.schema.dir = ${propel.output.dir}/config +propel.conf.dir = ${propel.output.dir}/config +propel.phpconf.dir = ${propel.output.dir}/config +propel.sql.dir = ${propel.output.dir}/data/sql +propel.runtime.conf.file = runtime-conf.xml +propel.php.dir = ${propel.output.dir} +propel.default.schema.basename = schema +propel.datadump.mapper.from = *schema.xml +propel.datadump.mapper.to = *data.xml + +propel.builder.addComments = true +propel.builder.addBehaviors = true + +; behaviors +propel.behavior.default = symfony,symfony_i18n +propel.behavior.symfony.class = plugins.sfPropelPlugin.lib.behavior.SfPropelBehaviorSymfony +propel.behavior.symfony_i18n.class = plugins.sfPropelPlugin.lib.behavior.SfPropelBehaviorI18n +propel.behavior.symfony_i18n_translation.class = plugins.sfPropelPlugin.lib.behavior.SfPropelBehaviorI18nTranslation +propel.behavior.symfony_behaviors.class = plugins.sfPropelPlugin.lib.behavior.SfPropelBehaviorSymfonyBehaviors +propel.behavior.symfony_timestampable.class = plugins.sfPropelPlugin.lib.behavior.SfPropelBehaviorTimestampable diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/properties.ini b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/properties.ini new file mode 100644 index 0000000..071643d --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/properties.ini @@ -0,0 +1,2 @@ +[symfony] + name=##PROJECT_NAME## diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/rsync_exclude.txt b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/rsync_exclude.txt new file mode 100644 index 0000000..2d99665 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/rsync_exclude.txt @@ -0,0 +1,5 @@ +.svn +/web/uploads/* +/cache/* +/log/* +/web/*_dev.php diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/schema.xml b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/schema.xml new file mode 100644 index 0000000..64163b9 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/config/schema.xml @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + +
    + + + + +
    + + + + +
    + + + + + + + + + + + + + + +
    + + + + + +
    + + + + + + + + +
    + + + + +
    + + + + + + + + + + + +
    + + + + + + + + + +
    + +
    diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/data/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/data/.svn/all-wcprops new file mode 100644 index 0000000..d42d592 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/data/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 85 +/!svn/ver/24597/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/data +END +environment.migrated +K 25 +svn:wc:ra_dav:version-url +V 106 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/data/environment.migrated +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/data/.svn/dir-prop-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/data/.svn/dir-prop-base new file mode 100644 index 0000000..eecf2d1 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/data/.svn/dir-prop-base @@ -0,0 +1,7 @@ +K 10 +svn:ignore +V 20 +sql +database.sqlite + +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/data/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/data/.svn/entries new file mode 100644 index 0000000..002e650 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/data/.svn/entries @@ -0,0 +1,68 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/data +http://svn.symfony-project.com + + + +2009-11-30T19:53:50.069045Z +24597 +Kris.Wallsmith +has-props + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +environment.migrated +file + + + + +2012-05-10T18:41:41.177550Z +d41d8cd98f00b204e9800998ecf8427e +2007-12-10T09:03:15.080739Z +6419 +dwhittle + + + + + + + + + + + + + + + + + + + + + +0 + +fixtures +dir + +migrations +dir + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/data/.svn/text-base/environment.migrated.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/data/.svn/text-base/environment.migrated.svn-base new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/data/environment.migrated b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/data/environment.migrated new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/data/fixtures/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/data/fixtures/.svn/all-wcprops new file mode 100644 index 0000000..2a5ffcf --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/data/fixtures/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 94 +/!svn/ver/24597/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/data/fixtures +END +fixtures.yml +K 25 +svn:wc:ra_dav:version-url +V 107 +/!svn/ver/24597/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/data/fixtures/fixtures.yml +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/data/fixtures/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/data/fixtures/.svn/entries new file mode 100644 index 0000000..c5f1bec --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/data/fixtures/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/data/fixtures +http://svn.symfony-project.com + + + +2009-11-30T19:53:50.069045Z +24597 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +fixtures.yml +file + + + + +2012-05-10T18:41:41.129549Z +6c493e9861af475bdc14774202442361 +2009-11-30T19:53:50.069045Z +24597 +Kris.Wallsmith + + + + + + + + + + + + + + + + + + + + + +1125 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/data/fixtures/.svn/text-base/fixtures.yml.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/data/fixtures/.svn/text-base/fixtures.yml.svn-base new file mode 100644 index 0000000..152f0d6 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/data/fixtures/.svn/text-base/fixtures.yml.svn-base @@ -0,0 +1,62 @@ +Book: + book_1: + name: The definitive guide to symfony + +Category: + category_1: + name: Category 1 + + category_2: + name: Category 2 + +Article: + article_1: + title: foo title + body: bar body + excerpt: foo excerpt + online: true + category_id: category_1 + created_at: + + article_2: + title: foo foo title + body: bar bar body + excerpt: foo excerpt + online: false + category_id: category_2 + created_at: + +Author: + fabien: + name: Fabien + author_articles: [article_1, article_2] + thomas: + name: Thomas + author_articles: [article_1] + helene: + name: Hélène + +Movie: + la_vita_e_bella: + director: Roberto Benigni + +MovieI18n: + la_vita_e_bella_it: + id: la_vita_e_bella + culture: it + title: La Vita è bella + la_vita_e_bella_fr: + id: la_vita_e_bella + culture: fr + title: La Vie est belle + +Product: + product1: + price: 5.00 + a_primary_string: PRIMARY STRING + +ProductI18n: + product1_en: + id: product1 + culture: en + name: PRIMARY STRING I18N diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/data/fixtures/fixtures.yml b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/data/fixtures/fixtures.yml new file mode 100644 index 0000000..152f0d6 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/data/fixtures/fixtures.yml @@ -0,0 +1,62 @@ +Book: + book_1: + name: The definitive guide to symfony + +Category: + category_1: + name: Category 1 + + category_2: + name: Category 2 + +Article: + article_1: + title: foo title + body: bar body + excerpt: foo excerpt + online: true + category_id: category_1 + created_at: + + article_2: + title: foo foo title + body: bar bar body + excerpt: foo excerpt + online: false + category_id: category_2 + created_at: + +Author: + fabien: + name: Fabien + author_articles: [article_1, article_2] + thomas: + name: Thomas + author_articles: [article_1] + helene: + name: Hélène + +Movie: + la_vita_e_bella: + director: Roberto Benigni + +MovieI18n: + la_vita_e_bella_it: + id: la_vita_e_bella + culture: it + title: La Vita è bella + la_vita_e_bella_fr: + id: la_vita_e_bella + culture: fr + title: La Vie est belle + +Product: + product1: + price: 5.00 + a_primary_string: PRIMARY STRING + +ProductI18n: + product1_en: + id: product1 + culture: en + name: PRIMARY STRING I18N diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/data/migrations/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/data/migrations/.svn/all-wcprops new file mode 100644 index 0000000..3636516 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/data/migrations/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 96 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/data/migrations +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/data/migrations/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/data/migrations/.svn/entries new file mode 100644 index 0000000..e8be0c8 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/data/migrations/.svn/entries @@ -0,0 +1,28 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/data/migrations +http://svn.symfony-project.com + + + +2008-08-26T20:28:12.169942Z +11170 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/.svn/all-wcprops new file mode 100644 index 0000000..bcd4875 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 84 +/!svn/ver/24068/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/.svn/entries new file mode 100644 index 0000000..9a93b71 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/.svn/entries @@ -0,0 +1,37 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib +http://svn.symfony-project.com + + + +2009-11-17T06:39:35.953872Z +24068 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +model +dir + +form +dir + +filter +dir + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/all-wcprops new file mode 100644 index 0000000..ede0a2a --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/all-wcprops @@ -0,0 +1,65 @@ +K 25 +svn:wc:ra_dav:version-url +V 91 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter +END +BaseFormFilterPropel.class.php +K 25 +svn:wc:ra_dav:version-url +V 122 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/BaseFormFilterPropel.class.php +END +CategoryFormFilter.class.php +K 25 +svn:wc:ra_dav:version-url +V 120 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/CategoryFormFilter.class.php +END +MovieFormFilter.class.php +K 25 +svn:wc:ra_dav:version-url +V 117 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/MovieFormFilter.class.php +END +MovieI18nFormFilter.class.php +K 25 +svn:wc:ra_dav:version-url +V 121 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/MovieI18nFormFilter.class.php +END +ProductFormFilter.class.php +K 25 +svn:wc:ra_dav:version-url +V 119 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/ProductFormFilter.class.php +END +ProductI18nFormFilter.class.php +K 25 +svn:wc:ra_dav:version-url +V 123 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/ProductI18nFormFilter.class.php +END +AuthorFormFilter.class.php +K 25 +svn:wc:ra_dav:version-url +V 118 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/AuthorFormFilter.class.php +END +ArticleFormFilter.class.php +K 25 +svn:wc:ra_dav:version-url +V 119 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/ArticleFormFilter.class.php +END +AttachmentFormFilter.class.php +K 25 +svn:wc:ra_dav:version-url +V 122 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/AttachmentFormFilter.class.php +END +BookFormFilter.class.php +K 25 +svn:wc:ra_dav:version-url +V 116 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/BookFormFilter.class.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/dir-prop-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/dir-prop-base new file mode 100644 index 0000000..6108faa --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/dir-prop-base @@ -0,0 +1,6 @@ +K 10 +svn:ignore +V 5 +base + +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/entries new file mode 100644 index 0000000..1e2d583 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/entries @@ -0,0 +1,368 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter +http://svn.symfony-project.com + + + +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith +has-props + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +BaseFormFilterPropel.class.php +file + + + + +2012-05-10T18:41:41.029553Z +3c664dcb79d39b34dcb4e74ec71c6951 +2009-10-24T13:59:13.481775Z +23306 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +338 + +CategoryFormFilter.class.php +file + + + + +2012-05-10T18:41:41.029553Z +632b6491d915bafa080fe806d80b9274 +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +323 + +MovieFormFilter.class.php +file + + + + +2012-05-10T18:41:41.029553Z +66eb10d820fc1d634ef20a585184e991 +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +311 + +MovieI18nFormFilter.class.php +file + + + + +2012-05-10T18:41:41.033552Z +3c393a4f3b6c88d50f3567641a879b77 +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +327 + +ProductFormFilter.class.php +file + + + + +2012-05-10T18:41:41.033552Z +c10662a0fdedfc00d5e10828c388ac71 +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +319 + +ProductI18nFormFilter.class.php +file + + + + +2012-05-10T18:41:41.037551Z +cdbac544c3937a54c8934c059a710507 +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +335 + +AuthorFormFilter.class.php +file + + + + +2012-05-10T18:41:41.037551Z +7b8229c153a65667780ae798ea04e624 +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +315 + +ArticleFormFilter.class.php +file + + + + +2012-05-10T18:41:41.045549Z +3c2053135c6e2679024e76f272dc56b7 +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +319 + +AttachmentFormFilter.class.php +file + + + + +2012-05-10T18:41:41.045549Z +c149e951f33180adbd855cc4cbaefbad +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +331 + +BookFormFilter.class.php +file + + + + +2012-05-10T18:41:41.053551Z +b622eda43f759c2db8a7fb73d5142d54 +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +307 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/prop-base/ArticleFormFilter.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/prop-base/ArticleFormFilter.class.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/prop-base/ArticleFormFilter.class.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/prop-base/AttachmentFormFilter.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/prop-base/AttachmentFormFilter.class.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/prop-base/AttachmentFormFilter.class.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/prop-base/AuthorFormFilter.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/prop-base/AuthorFormFilter.class.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/prop-base/AuthorFormFilter.class.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/prop-base/BaseFormFilterPropel.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/prop-base/BaseFormFilterPropel.class.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/prop-base/BaseFormFilterPropel.class.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/prop-base/BookFormFilter.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/prop-base/BookFormFilter.class.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/prop-base/BookFormFilter.class.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/prop-base/CategoryFormFilter.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/prop-base/CategoryFormFilter.class.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/prop-base/CategoryFormFilter.class.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/prop-base/MovieFormFilter.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/prop-base/MovieFormFilter.class.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/prop-base/MovieFormFilter.class.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/prop-base/MovieI18nFormFilter.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/prop-base/MovieI18nFormFilter.class.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/prop-base/MovieI18nFormFilter.class.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/prop-base/ProductFormFilter.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/prop-base/ProductFormFilter.class.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/prop-base/ProductFormFilter.class.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/prop-base/ProductI18nFormFilter.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/prop-base/ProductI18nFormFilter.class.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/prop-base/ProductI18nFormFilter.class.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/text-base/ArticleFormFilter.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/text-base/ArticleFormFilter.class.php.svn-base new file mode 100644 index 0000000..6cdd091 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/filter/.svn/text-base/ArticleFormFilter.class.php.svn-base @@ -0,0 +1,16 @@ +getObject()->getCategory()) + { + $this->embedForm('category', new CategoryForm($this->getObject()->getCategory())); + } + + if ($this->getOption('with_attachment')) + { + $attachment = new Attachment(); + $attachment->setArticle($this->object); + + $attachmentForm = new AttachmentForm($attachment); + unset($attachmentForm['article_id']); + + $this->embedForm('attachment', $attachmentForm); + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/.svn/text-base/AttachmentForm.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/.svn/text-base/AttachmentForm.class.php.svn-base new file mode 100644 index 0000000..02abd8d --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/.svn/text-base/AttachmentForm.class.php.svn-base @@ -0,0 +1,20 @@ +widgetSchema['file'] = new sfWidgetFormInputFile(); + $this->validatorSchema['file'] = new sfValidatorFile(array( + 'path' => sfConfig::get('sf_cache_dir'), + 'mime_type_guessers' => array(), + )); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/.svn/text-base/AuthorForm.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/.svn/text-base/AuthorForm.class.php.svn-base new file mode 100644 index 0000000..80f3e6e --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/.svn/text-base/AuthorForm.class.php.svn-base @@ -0,0 +1,15 @@ +embedI18n(array('en', 'fr')); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/.svn/text-base/MovieI18nForm.class.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/.svn/text-base/MovieI18nForm.class.php.svn-base new file mode 100644 index 0000000..5b6b78e --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/.svn/text-base/MovieI18nForm.class.php.svn-base @@ -0,0 +1,15 @@ +getObject()->getCategory()) + { + $this->embedForm('category', new CategoryForm($this->getObject()->getCategory())); + } + + if ($this->getOption('with_attachment')) + { + $attachment = new Attachment(); + $attachment->setArticle($this->object); + + $attachmentForm = new AttachmentForm($attachment); + unset($attachmentForm['article_id']); + + $this->embedForm('attachment', $attachmentForm); + } + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/AttachmentForm.class.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/AttachmentForm.class.php new file mode 100644 index 0000000..d58eb0e --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/AttachmentForm.class.php @@ -0,0 +1,20 @@ +widgetSchema['file'] = new sfWidgetFormInputFile(); + $this->validatorSchema['file'] = new sfValidatorFile(array( + 'path' => sfConfig::get('sf_cache_dir'), + 'mime_type_guessers' => array(), + )); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/AuthorForm.class.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/AuthorForm.class.php new file mode 100644 index 0000000..c8f5a91 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/AuthorForm.class.php @@ -0,0 +1,15 @@ +embedI18n(array('en', 'fr')); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/MovieI18nForm.class.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/MovieI18nForm.class.php new file mode 100644 index 0000000..98c9221 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/form/MovieI18nForm.class.php @@ -0,0 +1,15 @@ +getExtension($file->getOriginalExtension()); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/text-base/AttachmentPeer.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/text-base/AttachmentPeer.php.svn-base new file mode 100644 index 0000000..505f0b2 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/text-base/AttachmentPeer.php.svn-base @@ -0,0 +1,12 @@ +getName(); + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/text-base/AuthorArticle.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/text-base/AuthorArticle.php.svn-base new file mode 100644 index 0000000..0382a8b --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/text-base/AuthorArticle.php.svn-base @@ -0,0 +1,23 @@ +getName(); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/text-base/BookPeer.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/text-base/BookPeer.php.svn-base new file mode 100644 index 0000000..3857e55 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/text-base/BookPeer.php.svn-base @@ -0,0 +1,12 @@ +getName(); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/text-base/CategoryPeer.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/text-base/CategoryPeer.php.svn-base new file mode 100644 index 0000000..bdfcef4 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/text-base/CategoryPeer.php.svn-base @@ -0,0 +1,19 @@ +add(self::NAME, $name); + + return self::doSelectOne($c); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/text-base/Movie.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/text-base/Movie.php.svn-base new file mode 100644 index 0000000..58cfaf9 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/.svn/text-base/Movie.php.svn-base @@ -0,0 +1,12 @@ +getExtension($file->getOriginalExtension()); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/AttachmentPeer.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/AttachmentPeer.php new file mode 100644 index 0000000..505f0b2 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/AttachmentPeer.php @@ -0,0 +1,12 @@ +getName(); + } + +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/AuthorArticle.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/AuthorArticle.php new file mode 100644 index 0000000..0382a8b --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/AuthorArticle.php @@ -0,0 +1,23 @@ +getName(); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/BookPeer.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/BookPeer.php new file mode 100644 index 0000000..3857e55 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/BookPeer.php @@ -0,0 +1,12 @@ +getName(); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/CategoryPeer.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/CategoryPeer.php new file mode 100644 index 0000000..bdfcef4 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/CategoryPeer.php @@ -0,0 +1,19 @@ +add(self::NAME, $name); + + return self::doSelectOne($c); + } +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/Movie.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/Movie.php new file mode 100644 index 0000000..58cfaf9 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/lib/model/Movie.php @@ -0,0 +1,12 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +chdir(dirname(__FILE__)); +require_once(dirname(__FILE__).'/config/ProjectConfiguration.class.php'); +$configuration = new ProjectConfiguration(); +include($configuration->getSymfonyLibDir().'/command/cli.php'); diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/test/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/test/.svn/all-wcprops new file mode 100644 index 0000000..d23a07c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/test/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 85 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/test +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/test/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/test/.svn/entries new file mode 100644 index 0000000..13e8734 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/test/.svn/entries @@ -0,0 +1,31 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/test +http://svn.symfony-project.com + + + +2009-09-28T07:25:53.009086Z +22534 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +functional +dir + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/test/functional/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/test/functional/.svn/all-wcprops new file mode 100644 index 0000000..cec2133 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/test/functional/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 96 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/test/functional +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/test/functional/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/test/functional/.svn/entries new file mode 100644 index 0000000..a59cd35 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/fixtures/test/functional/.svn/entries @@ -0,0 +1,28 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/functional/fixtures/test/functional +http://svn.symfony-project.com + + + +2009-09-28T07:25:53.009086Z +22534 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/formTest.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/formTest.php new file mode 100644 index 0000000..dc7323c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/formTest.php @@ -0,0 +1,280 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'frontend'; +$fixtures = 'fixtures/fixtures.yml'; +if (!include(dirname(__FILE__).'/../bootstrap/functional.php')) +{ + return; +} + +$b = new sfTestBrowser(); + +// file upload +$fileToUpload = dirname(__FILE__).'/fixtures/config/databases.yml'; +$uploadedFile = sfConfig::get('sf_cache_dir').'/uploaded.yml'; +$name = 'test'; +$b-> + get('/attachment/index')-> + with('request')->begin()-> + isParameter('module', 'attachment')-> + isParameter('action', 'index')-> + end()-> + with('response')->isStatusCode(200)-> + click('submit', array('attachment' => array('name' => $name, 'file' => $fileToUpload)))-> + with('response')->begin()-> + isRedirected()-> + followRedirect()-> + end()-> + with('response')->begin()-> + matches('/ok/')-> + end() +; + +$b->test()->ok(file_exists($uploadedFile), 'file is uploaded'); +$b->test()->is(file_get_contents($uploadedFile), file_get_contents($fileToUpload), 'file is correctly uploaded'); + +$c = new Criteria(); +$c->add(AttachmentPeer::NAME, $name); +$attachments = AttachmentPeer::doSelect($c); + +$b->test()->is(count($attachments), 1, 'the attachment has been saved in the database'); +$b->test()->is($attachments[0]->getFile(), 'uploaded.yml', 'the attachment filename has been saved in the database'); + +@unlink($uploadedFile); +AttachmentPeer::doDeleteAll(); +$b->test()->ok(!file_exists($uploadedFile), 'uploaded file is deleted'); + +// file upload in embedded form +$b-> + getAndCheck('attachment', 'embedded')-> + with('response')->begin()-> + checkElement('input[name="article[attachment][article_id]"]', false)-> + checkElement('input[type="file"][name="article[attachment][file]"]')-> + end()-> + + setField('article[title]', 'Test Article')-> + setField('article[attachment][name]', $name)-> + setField('article[attachment][file]', $fileToUpload)-> + click('submit')-> + + with('form')->hasErrors(false)-> + + with('response')->begin()-> + isRedirected()-> + followRedirect()-> + end()-> + with('response')->begin()-> + matches('/ok/')-> + end() +; + +$b->test()->ok(file_exists($uploadedFile), 'file is uploaded'); +$b->test()->is(file_get_contents($uploadedFile), file_get_contents($fileToUpload), 'file is correctly uploaded'); + +$c = new Criteria(); +$c->add(AttachmentPeer::NAME, $name); +$attachments = AttachmentPeer::doSelect($c); + +$b->test()->is(count($attachments), 1, 'the attachment has been saved in the database'); +$b->test()->ok($attachments[0]->getArticleId(), 'the attachment is tied to an article'); +$b->test()->is($attachments[0]->getFile(), 'uploaded.yml', 'the attachment filename has been saved in the database'); + +// sfValidatorPropelUnique + +// create a category with a unique name +$b-> + get('/unique/category')-> + with('request')->begin()-> + isParameter('module', 'unique')-> + isParameter('action', 'category')-> + end()-> + with('response')->isStatusCode(200)-> + click('submit', array('category' => array('name' => 'foo')))-> + with('response')->begin()-> + isRedirected()-> + followRedirect()-> + end()-> + with('response')->begin()-> + matches('/ok/')-> + end() +; + +// create another category with the same name +// we must have an error +$b-> + get('/unique/category')-> + with('request')->begin()-> + isParameter('module', 'unique')-> + isParameter('action', 'category')-> + end()-> + with('response')->isStatusCode(200)-> + click('submit', array('category' => array('name' => 'foo')))-> + with('form')->begin()-> + hasErrors(1)-> + hasGlobalError(false)-> + isError('name', 'invalid')-> + end()-> + with('response')->begin()-> + checkElement('td[colspan="2"] .error_list li', 0)-> + checkElement('.error_list li', 'An object with the same "name" already exist.')-> + checkElement('.error_list li', 1)-> + end() +; + +// same thing but with a global error +$b-> + get('/unique/category')-> + with('request')->begin()-> + isParameter('module', 'unique')-> + isParameter('action', 'category')-> + end()-> + with('response')->isStatusCode(200)-> + click('submit', array('category' => array('name' => 'foo'), 'global' => 1))-> + with('form')->begin()-> + hasErrors(1)-> + hasGlobalError('invalid')-> + isError('name', false)-> + end()-> + with('response')->begin()-> + checkElement('td[colspan="2"] .error_list li', 'An object with the same "name" already exist.')-> + checkElement('td[colspan="2"] .error_list li', 1)-> + end() +; + +// updating the same category again with the same name is allowed +$b-> + get('/unique/category?category[id]='.CategoryPeer::getByName('foo')->getId())-> + with('request')->begin()-> + isParameter('module', 'unique')-> + isParameter('action', 'category')-> + end()-> + with('response')->isStatusCode(200)-> + click('submit')-> + with('response')->begin()-> + isRedirected()-> + followRedirect()-> + end()-> + with('response')->begin()-> + matches('/ok/')-> + end() +; + +// create an article with a unique title-category_id +$b-> + get('/unique/article')-> + with('request')->begin()-> + isParameter('module', 'unique')-> + isParameter('action', 'article')-> + end()-> + with('response')->isStatusCode(200)-> + click('submit', array('article' => array('title' => 'foo', 'category_id' => 1)))-> + with('response')->begin()-> + isRedirected()-> + followRedirect()-> + end()-> + with('response')->begin()-> + matches('/ok/')-> + end() +; + +// create another article with the same title but a different category_id +$b-> + get('/unique/article')-> + with('request')->begin()-> + isParameter('module', 'unique')-> + isParameter('action', 'article')-> + end()-> + with('response')->isStatusCode(200)-> + click('submit', array('article' => array('title' => 'foo', 'category_id' => 2)))-> + with('response')->begin()-> + isRedirected()-> + followRedirect()-> + end()-> + with('response')->begin()-> + matches('/ok/')-> + end() +; + +// create another article with the same title and category_id as the first one +// we must have an error +$b-> + get('/unique/article')-> + with('request')->begin()-> + isParameter('module', 'unique')-> + isParameter('action', 'article')-> + end()-> + with('response')->isStatusCode(200)-> + click('submit', array('article' => array('title' => 'foo', 'category_id' => 1)))-> + with('response')->checkElement('.error_list li', 'An object with the same "title, category_id" already exist.') +; + +// update the category from the article form +$b-> + get('/unique/edit')-> + with('request')->begin()-> + isParameter('module', 'unique')-> + isParameter('action', 'edit')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('input[value="foo title"]')-> + checkElement('#article_category_id option[selected="selected"]', 1)-> + checkElement('input[value="Category 1"]')-> + end()-> + click('submit', array('article' => array('title' => 'foo bar', 'category' => array('name' => 'Category foo'))))-> + with('response')->begin()-> + isRedirected()-> + followRedirect()-> + end()-> + with('response')->begin()-> + checkElement('input[value="foo bar"]')-> + checkElement('#article_category_id option[selected="selected"]', 1)-> + checkElement('input[value="Category foo"]')-> + end() +; + +// sfValidatorPropelChoice + +// submit a form with an impossible choice validator +$b-> + get('/choice/article')-> + with('request')->begin()-> + isParameter('module', 'choice')-> + isParameter('action', 'article')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + end()-> + click('submit', array('article' => array('title' => 'foobar', 'category_id' => 1, 'author_article_list' => array(1)), 'impossible_validator' => 1))-> + with('form')->begin()-> + hasErrors(1)-> + isError('category_id', 'invalid')-> + end() +; + +// sfValidatorPropelChoice (multiple == true) + +// submit a form with an impossible choice validator +$b-> + get('/choice/article')-> + with('request')->begin()-> + isParameter('module', 'choice')-> + isParameter('action', 'article')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + end()-> + click('submit', array('article' => array('title' => 'foobar', 'category_id' => 1, 'author_article_list' => array(1)), 'impossible_validator_many' => 1))-> + with('form')->begin()-> + hasErrors(1)-> + isError('author_article_list', 'invalid')-> + end() +; diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/i18nTest.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/i18nTest.php new file mode 100644 index 0000000..64ff6a7 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/i18nTest.php @@ -0,0 +1,159 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'frontend'; +$fixtures = 'fixtures/fixtures.yml'; +if (!include(dirname(__FILE__).'/../bootstrap/functional.php')) +{ + return; +} + +$b = new sfTestBrowser(new sfBrowser()); +$b->setTester('propel', 'sfTesterPropel'); + +// en +$b-> + get('/i18n/default')-> + with('request')->begin()-> + isParameter('module', 'i18n')-> + isParameter('action', 'default')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('#movies .toString:first', '')-> + checkElement('#movies .default:first', '')-> + checkElement('#movies .it:first', 'La Vita è bella')-> + checkElement('#movies .fr:first', 'La Vie est belle')-> + end() +; + +// fr +$b-> + get('/i18n/index')-> + with('request')->begin()-> + isParameter('module', 'i18n')-> + isParameter('action', 'index')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('#movies .toString:first', 'La Vie est belle')-> + checkElement('#movies .default:first', 'La Vie est belle')-> + checkElement('#movies .it:first', 'La Vita è bella')-> + checkElement('#movies .fr:first', 'La Vie est belle')-> + end() +; + +// still fr +$b-> + get('/i18n/default')-> + with('request')->begin()-> + isParameter('module', 'i18n')-> + isParameter('action', 'default')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('#movies .toString:first', 'La Vie est belle')-> + checkElement('#movies .default:first', 'La Vie est belle')-> + checkElement('#movies .it:first', 'La Vita è bella')-> + checkElement('#movies .fr:first', 'La Vie est belle')-> + end() +; + +// i18n forms +$b-> + get('/i18n/movie')-> + with('request')->begin()-> + isParameter('module', 'i18n')-> + isParameter('action', 'movie')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('#movie_fr_id', false)-> + checkElement('#movie_fr_culture', false)-> + end()-> + + click('submit', array('movie' => array('director' => 'Robert Aldrich', 'en' => array('title' => 'The Dirty Dozen'), 'fr' => array('title' => 'Les Douze Salopards'))))-> + with('response')->begin()-> + isRedirected()-> + followRedirect()-> + end()-> + with('response')->begin()-> + checkElement('input[value="Robert Aldrich"]')-> + checkElement('input[value="The Dirty Dozen"]')-> + checkElement('input[value="Les Douze Salopards"]')-> + checkElement('#movie_fr_id', true)-> + checkElement('#movie_fr_culture', true)-> + end()-> + + with('propel')->begin()-> + check('Movie', array(), 2)-> + check('Movie', array('director' => 'Robert Aldrich', 'id' => 2))-> + check('MovieI18N', array(), 4)-> + check('MovieI18N', array('id' => 2), 2)-> + check('MovieI18N', array('culture' => 'fr', 'id' => 2, 'title' => 'Les Douze Salopards'))-> + check('MovieI18N', array('culture' => 'en', 'id' => 2, 'title' => 'The Dirty Dozen'))-> + end()-> + + click('submit', array('movie' => array('director' => 'Robert Aldrich (1)', 'en' => array('title' => 'The Dirty Dozen (1)'), 'fr' => array('title' => 'Les Douze Salopards (1)'))))-> + with('response')->begin()-> + isRedirected()-> + followRedirect()-> + end()-> + with('response')->begin()-> + checkElement('input[value="Robert Aldrich (1)"]')-> + checkElement('input[value="The Dirty Dozen (1)"]')-> + checkElement('input[value="Les Douze Salopards (1)"]')-> + end()-> + + with('propel')->begin()-> + check('Movie', array(), 2)-> + check('Movie', array('director' => 'Robert Aldrich (1)', 'id' => 2))-> + check('MovieI18N', array(), 4)-> + check('MovieI18N', array('id' => 2), 2)-> + check('MovieI18N', array('culture' => 'fr', 'id' => 2, 'title' => 'Les Douze Salopards (1)'))-> + check('MovieI18N', array('culture' => 'en', 'id' => 2, 'title' => 'The Dirty Dozen (1)'))-> + end()-> + + // Bug #7486 + click('submit')-> + + with('form')->begin()-> + hasErrors(false)-> + end()-> + + get('/i18n/movie')-> + click('submit', array('movie' => array('director' => 'Robert Aldrich', 'en' => array('title' => 'The Dirty Dozen (1)'), 'fr' => array('title' => 'Les Douze Salopards (1)'))))-> + + with('form')->begin()-> + hasErrors(2)-> + end()-> + + click('submit', array('movie' => array('director' => 'Robert Aldrich', 'en' => array('title' => 'The Dirty Dozen'), 'fr' => array('title' => 'Les Douze Salopards'))))-> + + with('form')->begin()-> + hasErrors(false)-> + end()-> + with('response')->begin()-> + isRedirected()-> + followRedirect()-> + end()-> + with('response')->begin()-> + checkElement('input[value="Robert Aldrich"]')-> + checkElement('input[value="The Dirty Dozen"]')-> + checkElement('input[value="Les Douze Salopards"]')-> + end() + // END: Bug #7486 +; + +$b->getAndCheck('i18n', 'products') + ->with('response')->begin() + ->checkElement('ul#products li.toString', 'PRIMARY STRING') + ->end() +; diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/pagerTest.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/pagerTest.php new file mode 100644 index 0000000..2482af1 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/pagerTest.php @@ -0,0 +1,39 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'frontend'; +$fixtures = 'fixtures/fixtures.yml'; +if (!include(dirname(__FILE__).'/../bootstrap/functional.php')) +{ + return; +} + +$browser = new sfTestFunctional(new sfBrowser()); + +ArticlePeer::doDeleteAll(); +$category = CategoryPeer::doSelectOne(new Criteria()); + +foreach (range(1, 20) as $n) +{ + $article = new Article(); + $article->setTitle(sprintf('Article #%s', $n)); + $article->setCategory($category); + $article->save(); +} + +$browser + ->getAndCheck('pager', 'interfaces') + + ->with('response')->begin() + ->checkElement('#pagerResults li', 10) + + ->checkElement('#pagerCount:contains(20)') + ->end() +; diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/poolingTest.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/poolingTest.php new file mode 100644 index 0000000..3b93cbb --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/functional/poolingTest.php @@ -0,0 +1,30 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'frontend'; +$fixtures = 'fixtures/fixtures.yml'; +if (!include(dirname(__FILE__).'/../bootstrap/functional.php')) +{ + return; +} + +$b = new sfTestFunctional(new sfBrowser(), null, array('propel' => 'sfTesterPropel')); + +ArticlePeer::doDeleteAll(); +$c = CategoryPeer::doSelectOne(new Criteria()); +$hash = spl_object_hash($c); + +$b-> + get('/pooling/addArticleButDontSave/category_id/'.$c->getId())-> + with('propel')->check('Article', null, 0)-> + + get('/pooling/addArticleAndSave/category_id/'.$c->getId())-> + with('propel')->check('Article', null, 1) +; diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/.svn/all-wcprops new file mode 100644 index 0000000..6f1f60a --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 65 +/!svn/ver/27940/branches/1.4/lib/plugins/sfPropelPlugin/test/unit +END +sfMixerTest.php +K 25 +svn:wc:ra_dav:version-url +V 81 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/unit/sfMixerTest.php +END +sfPropelDatabaseSchemaTest.php +K 25 +svn:wc:ra_dav:version-url +V 96 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/unit/sfPropelDatabaseSchemaTest.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/.svn/entries new file mode 100644 index 0000000..2f567a6 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/.svn/entries @@ -0,0 +1,114 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/unit +http://svn.symfony-project.com + + + +2010-02-12T13:31:30.838136Z +27940 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +task +dir + +form +dir + +sfMixerTest.php +file + + + + +2012-05-10T18:41:33.221552Z +5fb2845a47db2b2e6c9d1e26847b1e5c +2009-06-25T06:35:13.766150Z +19531 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +5671 + +database +dir + +validator +dir + +debug +dir + +sfPropelDatabaseSchemaTest.php +file + + + + +2012-05-10T18:41:33.221552Z +abc9c8ffe13eecd9deb873437ea16b8e +2009-10-24T14:38:02.507029Z +23307 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +3267 + +fixtures +dir + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/.svn/prop-base/sfMixerTest.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/.svn/prop-base/sfMixerTest.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/.svn/prop-base/sfMixerTest.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/.svn/prop-base/sfPropelDatabaseSchemaTest.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/.svn/prop-base/sfPropelDatabaseSchemaTest.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/.svn/prop-base/sfPropelDatabaseSchemaTest.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/.svn/text-base/sfMixerTest.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/.svn/text-base/sfMixerTest.php.svn-base new file mode 100644 index 0000000..f306bbe --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/.svn/text-base/sfMixerTest.php.svn-base @@ -0,0 +1,170 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../bootstrap/unit.php'); + +$t = new lime_test(10); + +class myClass +{ + public $ret = ''; + static public $retStatic = ''; + + public function myMethod() + { + $this->ret = "before myMethod\n"; + sfMixer::callMixins(); + $this->ret .= "after myMethod\n"; + + return $this->ret; + } + + public function myMethodWithSeveralHooks() + { + $this->ret = "before myMethodWithSeveralHooks\n"; + sfMixer::callMixins('before'); + + $this->ret .= "myMethodWithSeveralHooks\n"; + sfMixer::callMixins(); + + $this->ret .= "after myMethodWithSeveralHooks\n"; + sfMixer::callMixins('after'); + + return $this->ret; + } + + public function myMethodWithArgs($arg1, $arg2 = 'default') + { + $this->ret = "before myMethodWithArgs\n"; + sfMixer::callMixins(); + $this->ret .= "after myMethodWithArgs\n"; + + return $this->ret; + } + + static public function myStaticMethod() + { + self::$retStatic = "before myStaticMethod\n"; + sfMixer::callMixins(); + self::$retStatic .= "after myStaticMethod\n"; + + return self::$retStatic; + } + + static public function myStaticMethodWithArgs($arg1, $arg2 = 'default') + { + self::$retStatic = "before myStaticMethodWithArgs\n"; + sfMixer::callMixins(); + self::$retStatic .= "after myStaticMethodWithArgs\n"; + + return self::$retStatic; + } + + function __call($method, $arguments) + { + $r = "before __call\n"; + $r .= sfMixer::callMixins(); + $r .= "after __call\n"; + + return $r; + } +} + +$m = new myClass(); + +$t->is($m->myMethod(), "before myMethod\nafter myMethod\n", 'method call without mixins'); +$t->is(myClass::myStaticMethod(), "before myStaticMethod\nafter myStaticMethod\n", 'static method call without mixins'); + +try +{ + $m->newMethod(); + $t->fail('method call that does not exist'); +} +catch (Exception $e) +{ + $t->pass('method call that does not exist'); +} + +class myClassMixins +{ + public function myMixinMethod($object) + { + $object->ret .= "in myMethod mixin method\n"; + } + + public function myMethodWithSeveralHooks($object) + { + $object->ret .= "in myMethodWithSeveralHooks mixin method for default hook\n"; + } + + public function myMethodWithSeveralHooksBefore($object) + { + $object->ret .= "in myMethodWithSeveralHooks mixin method for before hook\n"; + } + + public function myMethodWithSeveralHooksAfter($object) + { + $object->ret .= "in myMethodWithSeveralHooks mixin method for after hook\n"; + } + +// TODO + public function myStaticMixinMethod($object) + { + $object->ret .= "in myStaticMethod mixin method\n"; + } + + public function myMixinMethodWithArgs($object, $arg1, $arg2 = 'default') + { + $object->ret .= "in myMethodWithArgs mixin method ($arg1, $arg2)\n"; + } + + public function myMixinStaticMethod() + { + myClass::$retStatic .= "in myStaticMethod mixin method\n"; + } + + public function myMixinStaticMethodWithArgs($class, $arg1, $arg2 = 'default') + { + myClass::$retStatic .= "in myStaticMethodWithArgs mixin method ($arg1, $arg2)\n"; + } + + public function newMethod($object) + { + return "in newMethod mixin method\n"; + } + + public function newMethodWithArgs($object, $arg1, $arg2 = 'default') + { + return "in newMethodWithArgs mixin method ($arg1, $arg2)\n"; + } +} + +sfMixer::register('myClass:myMethod', array('myClassMixins', 'myMixinMethod')); +sfMixer::register('myClass:myStaticMethod', array('myClassMixins', 'myMixinStaticMethod')); + +$t->is($m->myMethod(), "before myMethod\nin myMethod mixin method\nafter myMethod\n", 'method call with a mixin'); +$t->is(myClass::myStaticMethod(), "before myStaticMethod\nin myStaticMethod mixin method\nafter myStaticMethod\n", 'static method call with a mixin'); + +sfMixer::register('myClass:myMethodWithArgs', array('myClassMixins', 'myMixinMethodWithArgs')); +$t->is($m->myMethodWithArgs('value'), "before myMethodWithArgs\nin myMethodWithArgs mixin method (value, default)\nafter myMethodWithArgs\n", 'method call with arguments with a mixin'); + +sfMixer::register('myClass:myStaticMethodWithArgs', array('myClassMixins', 'myMixinStaticMethodWithArgs')); +$t->is(myClass::myStaticMethodWithArgs('value'), "before myStaticMethodWithArgs\nin myStaticMethodWithArgs mixin method (value, default)\nafter myStaticMethodWithArgs\n", 'static method call with arguments with a mixin'); + +sfMixer::register('myClass', array('myClassMixins', 'newMethod')); +$t->is($m->newMethod(), "before __call\nin newMethod mixin method\nafter __call\n", 'method call from a mixin'); + +sfMixer::register('myClass', array('myClassMixins', 'newMethodWithArgs')); +$t->is($m->newMethodWithArgs('value'), "before __call\nin newMethodWithArgs mixin method (value, default)\nafter __call\n", 'method call from a mixin with arguments'); + +sfMixer::register('myClass:myMethodWithSeveralHooks:before', array('myClassMixins', 'myMethodWithSeveralHooksBefore')); +sfMixer::register('myClass:myMethodWithSeveralHooks', array('myClassMixins', 'myMethodWithSeveralHooks')); +sfMixer::register('myClass:myMethodWithSeveralHooks:after', array('myClassMixins', 'myMethodWithSeveralHooksAfter')); +$t->is($m->myMethodWithSeveralHooks(), "before myMethodWithSeveralHooks\nin myMethodWithSeveralHooks mixin method for before hook\nmyMethodWithSeveralHooks\nin myMethodWithSeveralHooks mixin method for default hook\nafter myMethodWithSeveralHooks\nin myMethodWithSeveralHooks mixin method for after hook\n", 'method call with several registered hooks'); diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/.svn/text-base/sfPropelDatabaseSchemaTest.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/.svn/text-base/sfPropelDatabaseSchemaTest.php.svn-base new file mode 100644 index 0000000..0346a6d --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/.svn/text-base/sfPropelDatabaseSchemaTest.php.svn-base @@ -0,0 +1,88 @@ + + * (c) Francois Zaninotto + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../bootstrap/unit.php'); + +class my_lime_test extends lime_test +{ + public function is_array_explicit($test, $target, $prefix = '') + { + foreach ($test as $key => $value) + { + if (is_array($value)) + { + $this->is_array_explicit($value, $target[$key], $prefix.' '.$key); + } + else + { + $this->is($value, $target[$key], sprintf('%s %s is %s', $prefix, $key, $value)); + } + } + } + + public function is_line_by_line($exp1, $exp2) + { + $array_exp1 = explode("\n", $exp1); + $array_exp2 = explode("\n", $exp2); + $nb_lines = count($array_exp1); + for ($i=0; $i < $nb_lines; $i++) + { + if(!$array_exp1[$i]) continue; // Skip blank lines to avoid testing nothing + $this->is(trim($array_exp1[$i]), trim($array_exp2[$i]), sprintf('Line %d matches %s', $i, $array_exp1[$i])); + } + } +} + +require_once(dirname(__FILE__).'/../../../../../test/bootstrap/unit.php'); +require_once(dirname(__FILE__).'/../../lib/addon/sfPropelDatabaseSchema.class.php'); +require_once(dirname(__FILE__).'/../../../../util/sfInflector.class.php'); +require_once(dirname(__FILE__).'/../../../../util/sfToolkit.class.php'); +require_once(dirname(__FILE__).'/../../../../yaml/sfYaml.php'); + +$t = new my_lime_test(401); + +$t->diag('Classical YAML to XML conversion'); +$p = new sfPropelDatabaseSchema(); +$p->loadYAML(dirname(__FILE__).'/fixtures/schema.yml'); +$target = file_get_contents(dirname(__FILE__).'/fixtures/schema.xml'); +$t->is_line_by_line($p->asXML(), $target); + +$t->diag('New YAML to XML conversion'); +$p = new sfPropelDatabaseSchema(); +$p->loadYAML(dirname(__FILE__).'/fixtures/new_schema.yml'); +$target = file_get_contents(dirname(__FILE__).'/fixtures/schema.xml'); +$t->is_line_by_line($p->asXML(), $target); + +$t->diag('New YAML to Old YAML conversion'); +$old_yml_target = sfYaml::load(dirname(__FILE__).'/fixtures/schema.yml'); +$p = new sfPropelDatabaseSchema(); +$new_yml_transformed = $p->convertNewToOldYaml(sfYaml::load(dirname(__FILE__).'/fixtures/new_schema.yml')); +$t->is_array_explicit($new_yml_transformed, $old_yml_target); + +$t->diag('Old YAML to New YAML conversion'); +$new_yml_target = sfYaml::load(dirname(__FILE__).'/fixtures/new_schema.yml'); +$p = new sfPropelDatabaseSchema(); +$old_yml_transformed = $p->convertOldToNewYaml(sfYaml::load(dirname(__FILE__).'/fixtures/schema.yml')); +$t->is_array_explicit($old_yml_transformed, $new_yml_target); + + +$t->todo('XML and classical YAML internal representation'); +$p1 = new sfPropelDatabaseSchema(); +$p1->loadXML(dirname(__FILE__).'/fixtures/schema.xml'); +$p2 = new sfPropelDatabaseSchema(); +$p2->loadYAML(dirname(__FILE__).'/fixtures/schema.yml'); +//$t->is_array_explicit($p1->asArray(), $p2->asArray()); + +$t->todo('XML and classical YAML compared as XML'); +//$t->is_line_by_line($p1->asXML(), $p2->asXML()); + +$t->todo('XML and classical YAML compared as YAML'); +//$t->is_line_by_line($p1->asYAML(), $p2->asYAML()); diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/database/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/database/.svn/all-wcprops new file mode 100644 index 0000000..f6078b8 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/database/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 74 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/unit/database +END +sfPropelDatabaseTest.php +K 25 +svn:wc:ra_dav:version-url +V 99 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/unit/database/sfPropelDatabaseTest.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/database/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/database/.svn/entries new file mode 100644 index 0000000..d72ef09 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/database/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/unit/database +http://svn.symfony-project.com + + + +2009-11-09T23:23:25.629412Z +23737 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +sfPropelDatabaseTest.php +file + + + + +2012-05-10T18:41:32.877548Z +4a5bee8295ce864c2b084754b6e63c5e +2009-11-09T23:23:25.629412Z +23737 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +1575 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/database/.svn/prop-base/sfPropelDatabaseTest.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/database/.svn/prop-base/sfPropelDatabaseTest.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/database/.svn/prop-base/sfPropelDatabaseTest.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/database/.svn/text-base/sfPropelDatabaseTest.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/database/.svn/text-base/sfPropelDatabaseTest.php.svn-base new file mode 100644 index 0000000..0adf192 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/database/.svn/text-base/sfPropelDatabaseTest.php.svn-base @@ -0,0 +1,59 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); + +$t = new lime_test(1); + +class ProjectConfiguration extends sfProjectConfiguration +{ + protected $plugins = array('sfPropelPlugin'); +} +new ProjectConfiguration(); + +// ->__construct() +$t->diag('->__construct()'); + +$configuration = array( + 'propel' => array( + 'datasources' => array( + 'propel' => array( + 'adapter' => 'mysql', + 'connection' => array( + 'dsn' => 'mysql:dbname=testdb;host=localhost', + 'user' => 'foo', + 'password' => 'bar', + 'classname' => 'PropelPDO', + 'options' => array( + 'ATTR_PERSISTENT' => true, + 'ATTR_AUTOCOMMIT' => false, + ), + 'settings' => array( + 'charset' => array('value' => 'utf8'), + 'queries' => array(), + ), + ), + ), + 'default' => 'propel', + ), + ), +); + +$parametersTests = array( + 'dsn' => 'mysql:dbname=testdb;host=localhost', + 'username' => 'foo', + 'password' => 'bar', + 'encoding' => 'utf8', + 'persistent' => true, + 'options' => array('ATTR_AUTOCOMMIT' => false) +); + +$p = new sfPropelDatabase($parametersTests); +$t->is_deeply($p->getConfiguration(), $configuration, '->__construct() creates a valid propel configuration from parameters'); diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/database/sfPropelDatabaseTest.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/database/sfPropelDatabaseTest.php new file mode 100644 index 0000000..0adf192 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/database/sfPropelDatabaseTest.php @@ -0,0 +1,59 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); + +$t = new lime_test(1); + +class ProjectConfiguration extends sfProjectConfiguration +{ + protected $plugins = array('sfPropelPlugin'); +} +new ProjectConfiguration(); + +// ->__construct() +$t->diag('->__construct()'); + +$configuration = array( + 'propel' => array( + 'datasources' => array( + 'propel' => array( + 'adapter' => 'mysql', + 'connection' => array( + 'dsn' => 'mysql:dbname=testdb;host=localhost', + 'user' => 'foo', + 'password' => 'bar', + 'classname' => 'PropelPDO', + 'options' => array( + 'ATTR_PERSISTENT' => true, + 'ATTR_AUTOCOMMIT' => false, + ), + 'settings' => array( + 'charset' => array('value' => 'utf8'), + 'queries' => array(), + ), + ), + ), + 'default' => 'propel', + ), + ), +); + +$parametersTests = array( + 'dsn' => 'mysql:dbname=testdb;host=localhost', + 'username' => 'foo', + 'password' => 'bar', + 'encoding' => 'utf8', + 'persistent' => true, + 'options' => array('ATTR_AUTOCOMMIT' => false) +); + +$p = new sfPropelDatabase($parametersTests); +$t->is_deeply($p->getConfiguration(), $configuration, '->__construct() creates a valid propel configuration from parameters'); diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/debug/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/debug/.svn/all-wcprops new file mode 100644 index 0000000..4cd6f8c --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/debug/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 71 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/unit/debug +END +sfWebDebugPanelPropelTest.php +K 25 +svn:wc:ra_dav:version-url +V 101 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/unit/debug/sfWebDebugPanelPropelTest.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/debug/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/debug/.svn/entries new file mode 100644 index 0000000..1718a4b --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/debug/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/unit/debug +http://svn.symfony-project.com + + + +2009-11-08T22:30:00.645042Z +23706 +FabianLange + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +sfWebDebugPanelPropelTest.php +file + + + + +2012-05-10T18:41:33.121550Z +719ff8a661dafd2885ece93b877b37cb +2009-11-08T22:30:00.645042Z +23706 +FabianLange +has-props + + + + + + + + + + + + + + + + + + + + +2341 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/debug/.svn/prop-base/sfWebDebugPanelPropelTest.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/debug/.svn/prop-base/sfWebDebugPanelPropelTest.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/debug/.svn/prop-base/sfWebDebugPanelPropelTest.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/debug/.svn/text-base/sfWebDebugPanelPropelTest.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/debug/.svn/text-base/sfWebDebugPanelPropelTest.php.svn-base new file mode 100644 index 0000000..afe1139 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/debug/.svn/text-base/sfWebDebugPanelPropelTest.php.svn-base @@ -0,0 +1,57 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); + +$t = new lime_test(5); + +class sfWebDebugPanelPropelTest extends sfWebDebugPanelPropel +{ + protected function getPropelConfiguration() + { + $config = new PropelConfiguration(array()); + $config->setParameter('debugpdo.logging.details.slow.enabled', true); + $config->setParameter('debugpdo.logging.details.slow.threshold', 1); + return $config; + } +} + +class sfWebDebugPanelPropelTestDifferentGlue extends sfWebDebugPanelPropel +{ + protected function getPropelConfiguration() + { + $config = new PropelConfiguration(array()); + $config->setParameter('debugpdo.logging.outerglue', 'xx'); + $config->setParameter('debugpdo.logging.innerglue', '/ '); + $config->setParameter('debugpdo.logging.details.slow.enabled', true); + $config->setParameter('debugpdo.logging.details.slow.threshold', 5); + return $config; + } +} + +// ->getPanelContent() +$t->diag('->getPanelContent()'); + +$dispatcher = new sfEventDispatcher(); +$logger = new sfVarLogger($dispatcher); +$logger->log('{sfPropelLogger} SELECT * FROM foo WHERE bar<1'); +$logger->log('{sfPropelLogger} time: 3.42 sec | mem: 2.8 MB | SELECT * FROM foo WHERE aText like \' | foo\''); +$panel = new sfWebDebugPanelPropelTest(new sfWebDebug($dispatcher, $logger)); +$content = $panel->getPanelContent(); +$t->like($content, '/bar<1/', '->getPanelContent() returns escaped queries'); +$t->like($content, '/aText like ' | foo'/', '->getPanelContent() works with glue string in SQL'); +$t->like($content, '/sfWebDebugWarning/', '->getPanelContent() contains a slow query warning'); + +$logger = new sfVarLogger($dispatcher); +$logger->log('{sfPropelLogger} time/ 3.42 secxxmem/ 2.8 MBxxSELECT * FROM foo WHERE bar == 42'); +$panel = new sfWebDebugPanelPropelTestDifferentGlue(new sfWebDebug($dispatcher, $logger)); +$content = $panel->getPanelContent(); +$t->like($content, '/time\/ 3.42 sec, mem\/ 2.8 MB/', '->getPanelContent() works with strange glue strings'); +$t->unlike($content, '/sfWebDebugWarning/', '->getPanelContent() should not contain a slow warning'); diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/debug/sfWebDebugPanelPropelTest.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/debug/sfWebDebugPanelPropelTest.php new file mode 100644 index 0000000..afe1139 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/debug/sfWebDebugPanelPropelTest.php @@ -0,0 +1,57 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); + +$t = new lime_test(5); + +class sfWebDebugPanelPropelTest extends sfWebDebugPanelPropel +{ + protected function getPropelConfiguration() + { + $config = new PropelConfiguration(array()); + $config->setParameter('debugpdo.logging.details.slow.enabled', true); + $config->setParameter('debugpdo.logging.details.slow.threshold', 1); + return $config; + } +} + +class sfWebDebugPanelPropelTestDifferentGlue extends sfWebDebugPanelPropel +{ + protected function getPropelConfiguration() + { + $config = new PropelConfiguration(array()); + $config->setParameter('debugpdo.logging.outerglue', 'xx'); + $config->setParameter('debugpdo.logging.innerglue', '/ '); + $config->setParameter('debugpdo.logging.details.slow.enabled', true); + $config->setParameter('debugpdo.logging.details.slow.threshold', 5); + return $config; + } +} + +// ->getPanelContent() +$t->diag('->getPanelContent()'); + +$dispatcher = new sfEventDispatcher(); +$logger = new sfVarLogger($dispatcher); +$logger->log('{sfPropelLogger} SELECT * FROM foo WHERE bar<1'); +$logger->log('{sfPropelLogger} time: 3.42 sec | mem: 2.8 MB | SELECT * FROM foo WHERE aText like \' | foo\''); +$panel = new sfWebDebugPanelPropelTest(new sfWebDebug($dispatcher, $logger)); +$content = $panel->getPanelContent(); +$t->like($content, '/bar<1/', '->getPanelContent() returns escaped queries'); +$t->like($content, '/aText like ' | foo'/', '->getPanelContent() works with glue string in SQL'); +$t->like($content, '/sfWebDebugWarning/', '->getPanelContent() contains a slow query warning'); + +$logger = new sfVarLogger($dispatcher); +$logger->log('{sfPropelLogger} time/ 3.42 secxxmem/ 2.8 MBxxSELECT * FROM foo WHERE bar == 42'); +$panel = new sfWebDebugPanelPropelTestDifferentGlue(new sfWebDebug($dispatcher, $logger)); +$content = $panel->getPanelContent(); +$t->like($content, '/time\/ 3.42 sec, mem\/ 2.8 MB/', '->getPanelContent() works with strange glue strings'); +$t->unlike($content, '/sfWebDebugWarning/', '->getPanelContent() should not contain a slow warning'); diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/fixtures/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/fixtures/.svn/all-wcprops new file mode 100644 index 0000000..1e56e75 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/fixtures/.svn/all-wcprops @@ -0,0 +1,23 @@ +K 25 +svn:wc:ra_dav:version-url +V 74 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/unit/fixtures +END +schema.xml +K 25 +svn:wc:ra_dav:version-url +V 85 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/unit/fixtures/schema.xml +END +schema.yml +K 25 +svn:wc:ra_dav:version-url +V 85 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/unit/fixtures/schema.yml +END +new_schema.yml +K 25 +svn:wc:ra_dav:version-url +V 89 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/test/unit/fixtures/new_schema.yml +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/fixtures/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/fixtures/.svn/entries new file mode 100644 index 0000000..b89a714 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/fixtures/.svn/entries @@ -0,0 +1,130 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/unit/fixtures +http://svn.symfony-project.com + + + +2009-10-24T14:38:02.507029Z +23307 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +schema.xml +file + + + + +2012-05-10T18:41:33.205551Z +a85f6cef1513760cc4e086b05fb35c32 +2009-10-24T14:38:02.507029Z +23307 +Kris.Wallsmith + + + + + + + + + + + + + + + + + + + + + +5493 + +schema.yml +file + + + + +2012-05-10T18:41:33.205551Z +bdd85729b66473e797b9a11b8c71b339 +2009-10-24T14:38:02.507029Z +23307 +Kris.Wallsmith + + + + + + + + + + + + + + + + + + + + + +2845 + +new_schema.yml +file + + + + +2012-05-10T18:41:33.205551Z +920c967940372bce3e1d706c1e76bbd4 +2009-10-24T14:38:02.507029Z +23307 +Kris.Wallsmith + + + + + + + + + + + + + + + + + + + + + +3125 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/fixtures/.svn/text-base/new_schema.yml.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/fixtures/.svn/text-base/new_schema.yml.svn-base new file mode 100644 index 0000000..44e2121 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/fixtures/.svn/text-base/new_schema.yml.svn-base @@ -0,0 +1,113 @@ +connection: propel +defaultIdMethod: none +package: lib.model +propel_behaviors: + timestampable: + boolean: true + create_column: create_date + +classes: + Group: + tableName: ab_group + package: foo.bar.lib.model + columns: + id: + name: varchar(50) + type: varchar(50) + inheritance: + column: type + classes: + tight: Group_Tight + loose: { phpName: Group_Loose, package: some.other.package } + + User: + tableName: cd_user + isI18N: true + i18nTable: cd_user_i18n + columns: + first_name: { type: varchar, size: 255, default: "Anonymous" } + last_name: varchar(50) + age: { type: integer, required: true, index: true } + ab_group_id: + created_at: + + CdUserI18n: + tableName: cd_user_i18n + columns: + description: longvarchar + + EfArticle: + tableName: ef_article + columns: + title: { type: longvarchar, required: true, index: unique } + stripped_title: { type: longvarchar, required: true, primaryKey: true, sequence: my_custom_sequence_name } + user_id: + my_group: { type: integer, foreignTable: ab_group, foreignReference: id, onDelete: setnull } + my_other_group: { type: integer, foreignTable: ab_group, foreignReference: id, onDelete: setnull, phpName: MyOtherGroupPhpName, fkPhpName: MyOtherGroupFkPhpName, fkRefPhpName: MyOtherGroupFkRefPhpName } + created_at: timestamp + updated_at: + + Article: + tableName: ij_article + columns: + title: varchar(50) + user_id: { type: integer } + created_at: + foreignKeys: + - + foreignTable: cd_user + onDelete: cascade + phpName: SomePhpName + refPhpName: SomeRefPhpName + references: + - { local: user_id, foreign: id } + indexes: + my_index: [title(10), user_id] + uniques: + my_other_index: [created_at(10)] + behaviors: + paranoid: { column: deleted_at } + act_as_nested_set: + propel_behaviors: + paranoid: { column: deleted_at } + act_as_nested_set: + + KlArticle: + tableName: kl_article + columns: + title: varchar(50) + user_id: { type: integer, phpName: AuthorId } + foreignKeys: + - + foreignClass: User + phpName: Author + references: + - { local: user_id, foreign: id } + + AbGroupI18n: + tableName: ab_group_i18n + columns: + motto: longvarchar + + History: + tableName: history + columns: + id: + type: { type: varchar(64) } + inheritance: + column: type + classes: + new_user: History_NewUser + new_page: History_NewPage + + myNestedSetNode: + tableName: my_nested_sets + columns: + id: + lft: { type: integer, required: true } + rgt: { type: integer, required: true } + scope: { type: integer, required: true } + nestedSet: + left: lft + right: rgt + scope: scope diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/fixtures/.svn/text-base/schema.xml.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/fixtures/.svn/text-base/schema.xml.svn-base new file mode 100644 index 0000000..edcb508 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/fixtures/.svn/text-base/schema.xml.svn-base @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + +
    + + + + + + + + +
    + + + + + + + +
    + + + + + + +
    + +
    diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/fixtures/.svn/text-base/schema.yml.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/fixtures/.svn/text-base/schema.yml.svn-base new file mode 100644 index 0000000..ee100b6 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/fixtures/.svn/text-base/schema.yml.svn-base @@ -0,0 +1,95 @@ +propel: + _attributes: { defaultIdMethod: none, package: lib.model } + _propel_behaviors: + timestampable: + boolean: true + create_column: create_date + + ab_group: + _attributes: { phpName: Group, package: foo.bar.lib.model } + id: + name: varchar(50) + type: varchar(50) + _inheritance: + column: type + classes: + tight: Group_Tight + loose: { phpName: Group_Loose, package: some.other.package } + + cd_user: + _attributes: { phpName: User, isI18N: true, i18nTable: cd_user_i18n } + first_name: { type: varchar, size: 255, default: "Anonymous" } + last_name: varchar(50) + age: { type: integer, required: true, index: true } + ab_group_id: + created_at: + + cd_user_i18n: + description: longvarchar + + ef_article: + title: { type: longvarchar, required: true, index: unique } + stripped_title: { type: longvarchar, required: true, primaryKey: true, sequence: my_custom_sequence_name } + user_id: + my_group: { type: integer, foreignTable: ab_group, foreignReference: id, onDelete: setnull } + my_other_group: { type: integer, foreignTable: ab_group, foreignReference: id, onDelete: setnull, phpName: MyOtherGroupPhpName, fkPhpName: MyOtherGroupFkPhpName, fkRefPhpName: MyOtherGroupFkRefPhpName } + created_at: timestamp + updated_at: + + ij_article: + _attributes: { phpName: Article } + title: varchar(50) + user_id: { type: integer } + _foreignKeys: + - + foreignTable: cd_user + onDelete: cascade + phpName: SomePhpName + refPhpName: SomeRefPhpName + references: + - { local: user_id, foreign: id } + created_at: + _indexes: + my_index: [title(10), user_id] + _uniques: + my_other_index: [created_at(10)] + _behaviors: + paranoid: { column: deleted_at } + act_as_nested_set: + _propel_behaviors: + paranoid: { column: deleted_at } + act_as_nested_set: + + kl_article: + title: varchar(50) + user_id: { type: integer, phpName: AuthorId } + _foreignKeys: + - + foreignClass: User + phpName: Author + references: + - { local: user_id, foreign: id } + + ab_group_i18n: + motto: longvarchar + + history: + _attributes: { phpName: History } + id: + type: { type: varchar(64) } + _inheritance: + column: type + classes: + new_user: History_NewUser + new_page: History_NewPage + + my_nested_sets: + _attributes: { phpName: myNestedSetNode } + id: + lft: { type: integer, required: true } + rgt: { type: integer, required: true } + scope: { type: integer, required: true } + _nestedSet: + left: lft + right: rgt + scope: scope diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/fixtures/new_schema.yml b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/fixtures/new_schema.yml new file mode 100644 index 0000000..44e2121 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/fixtures/new_schema.yml @@ -0,0 +1,113 @@ +connection: propel +defaultIdMethod: none +package: lib.model +propel_behaviors: + timestampable: + boolean: true + create_column: create_date + +classes: + Group: + tableName: ab_group + package: foo.bar.lib.model + columns: + id: + name: varchar(50) + type: varchar(50) + inheritance: + column: type + classes: + tight: Group_Tight + loose: { phpName: Group_Loose, package: some.other.package } + + User: + tableName: cd_user + isI18N: true + i18nTable: cd_user_i18n + columns: + first_name: { type: varchar, size: 255, default: "Anonymous" } + last_name: varchar(50) + age: { type: integer, required: true, index: true } + ab_group_id: + created_at: + + CdUserI18n: + tableName: cd_user_i18n + columns: + description: longvarchar + + EfArticle: + tableName: ef_article + columns: + title: { type: longvarchar, required: true, index: unique } + stripped_title: { type: longvarchar, required: true, primaryKey: true, sequence: my_custom_sequence_name } + user_id: + my_group: { type: integer, foreignTable: ab_group, foreignReference: id, onDelete: setnull } + my_other_group: { type: integer, foreignTable: ab_group, foreignReference: id, onDelete: setnull, phpName: MyOtherGroupPhpName, fkPhpName: MyOtherGroupFkPhpName, fkRefPhpName: MyOtherGroupFkRefPhpName } + created_at: timestamp + updated_at: + + Article: + tableName: ij_article + columns: + title: varchar(50) + user_id: { type: integer } + created_at: + foreignKeys: + - + foreignTable: cd_user + onDelete: cascade + phpName: SomePhpName + refPhpName: SomeRefPhpName + references: + - { local: user_id, foreign: id } + indexes: + my_index: [title(10), user_id] + uniques: + my_other_index: [created_at(10)] + behaviors: + paranoid: { column: deleted_at } + act_as_nested_set: + propel_behaviors: + paranoid: { column: deleted_at } + act_as_nested_set: + + KlArticle: + tableName: kl_article + columns: + title: varchar(50) + user_id: { type: integer, phpName: AuthorId } + foreignKeys: + - + foreignClass: User + phpName: Author + references: + - { local: user_id, foreign: id } + + AbGroupI18n: + tableName: ab_group_i18n + columns: + motto: longvarchar + + History: + tableName: history + columns: + id: + type: { type: varchar(64) } + inheritance: + column: type + classes: + new_user: History_NewUser + new_page: History_NewPage + + myNestedSetNode: + tableName: my_nested_sets + columns: + id: + lft: { type: integer, required: true } + rgt: { type: integer, required: true } + scope: { type: integer, required: true } + nestedSet: + left: lft + right: rgt + scope: scope diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/fixtures/schema.xml b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/fixtures/schema.xml new file mode 100644 index 0000000..edcb508 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/fixtures/schema.xml @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + +
    + + + + + + + + +
    + + + + + + + +
    + + + + + + +
    + +
    diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/fixtures/schema.yml b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/fixtures/schema.yml new file mode 100644 index 0000000..ee100b6 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/fixtures/schema.yml @@ -0,0 +1,95 @@ +propel: + _attributes: { defaultIdMethod: none, package: lib.model } + _propel_behaviors: + timestampable: + boolean: true + create_column: create_date + + ab_group: + _attributes: { phpName: Group, package: foo.bar.lib.model } + id: + name: varchar(50) + type: varchar(50) + _inheritance: + column: type + classes: + tight: Group_Tight + loose: { phpName: Group_Loose, package: some.other.package } + + cd_user: + _attributes: { phpName: User, isI18N: true, i18nTable: cd_user_i18n } + first_name: { type: varchar, size: 255, default: "Anonymous" } + last_name: varchar(50) + age: { type: integer, required: true, index: true } + ab_group_id: + created_at: + + cd_user_i18n: + description: longvarchar + + ef_article: + title: { type: longvarchar, required: true, index: unique } + stripped_title: { type: longvarchar, required: true, primaryKey: true, sequence: my_custom_sequence_name } + user_id: + my_group: { type: integer, foreignTable: ab_group, foreignReference: id, onDelete: setnull } + my_other_group: { type: integer, foreignTable: ab_group, foreignReference: id, onDelete: setnull, phpName: MyOtherGroupPhpName, fkPhpName: MyOtherGroupFkPhpName, fkRefPhpName: MyOtherGroupFkRefPhpName } + created_at: timestamp + updated_at: + + ij_article: + _attributes: { phpName: Article } + title: varchar(50) + user_id: { type: integer } + _foreignKeys: + - + foreignTable: cd_user + onDelete: cascade + phpName: SomePhpName + refPhpName: SomeRefPhpName + references: + - { local: user_id, foreign: id } + created_at: + _indexes: + my_index: [title(10), user_id] + _uniques: + my_other_index: [created_at(10)] + _behaviors: + paranoid: { column: deleted_at } + act_as_nested_set: + _propel_behaviors: + paranoid: { column: deleted_at } + act_as_nested_set: + + kl_article: + title: varchar(50) + user_id: { type: integer, phpName: AuthorId } + _foreignKeys: + - + foreignClass: User + phpName: Author + references: + - { local: user_id, foreign: id } + + ab_group_i18n: + motto: longvarchar + + history: + _attributes: { phpName: History } + id: + type: { type: varchar(64) } + _inheritance: + column: type + classes: + new_user: History_NewUser + new_page: History_NewPage + + my_nested_sets: + _attributes: { phpName: myNestedSetNode } + id: + lft: { type: integer, required: true } + rgt: { type: integer, required: true } + scope: { type: integer, required: true } + _nestedSet: + left: lft + right: rgt + scope: scope diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/form/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/form/.svn/all-wcprops new file mode 100644 index 0000000..013a005 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/form/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 70 +/!svn/ver/27940/branches/1.4/lib/plugins/sfPropelPlugin/test/unit/form +END +sfFormPropelTest.php +K 25 +svn:wc:ra_dav:version-url +V 91 +/!svn/ver/27940/branches/1.4/lib/plugins/sfPropelPlugin/test/unit/form/sfFormPropelTest.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/form/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/form/.svn/entries new file mode 100644 index 0000000..73564c1 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/form/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/unit/form +http://svn.symfony-project.com + + + +2010-02-12T13:31:30.838136Z +27940 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +sfFormPropelTest.php +file + + + + +2012-05-10T18:41:32.837547Z +fdd9712e528f185eec0a58ade3d2cce5 +2010-02-12T13:31:30.838136Z +27940 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +1024 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/form/.svn/prop-base/sfFormPropelTest.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/form/.svn/prop-base/sfFormPropelTest.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/form/.svn/prop-base/sfFormPropelTest.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/form/.svn/text-base/sfFormPropelTest.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/form/.svn/text-base/sfFormPropelTest.php.svn-base new file mode 100644 index 0000000..819a8e2 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/form/.svn/text-base/sfFormPropelTest.php.svn-base @@ -0,0 +1,37 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'frontend'; +include dirname(__FILE__).'/../../bootstrap/functional.php'; +include $configuration->getSymfonyLibDir().'/vendor/lime/lime.php'; + +$t = new lime_test(2); + +// ->__construct() +$t->diag('->__construct()'); + +class DefaultValuesForm extends AuthorForm +{ + public function configure() + { + $this->setDefault('name', 'John Doe'); + } +} + +$author = new Author(); +$form = new DefaultValuesForm($author); +$t->is($form->getDefault('name'), 'John Doe', '->__construct() uses form defaults for new objects'); + +$author = new Author(); +$author->setName('Jacques Doe'); +$author->save(); +$form = new DefaultValuesForm($author); +$t->is($form->getDefault('name'), 'Jacques Doe', '->__construct() uses object value as a default for existing objects'); +$author->delete(); diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/form/sfFormPropelTest.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/form/sfFormPropelTest.php new file mode 100644 index 0000000..819a8e2 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/form/sfFormPropelTest.php @@ -0,0 +1,37 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'frontend'; +include dirname(__FILE__).'/../../bootstrap/functional.php'; +include $configuration->getSymfonyLibDir().'/vendor/lime/lime.php'; + +$t = new lime_test(2); + +// ->__construct() +$t->diag('->__construct()'); + +class DefaultValuesForm extends AuthorForm +{ + public function configure() + { + $this->setDefault('name', 'John Doe'); + } +} + +$author = new Author(); +$form = new DefaultValuesForm($author); +$t->is($form->getDefault('name'), 'John Doe', '->__construct() uses form defaults for new objects'); + +$author = new Author(); +$author->setName('Jacques Doe'); +$author->save(); +$form = new DefaultValuesForm($author); +$t->is($form->getDefault('name'), 'Jacques Doe', '->__construct() uses object value as a default for existing objects'); +$author->delete(); diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/sfMixerTest.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/sfMixerTest.php new file mode 100644 index 0000000..f306bbe --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/sfMixerTest.php @@ -0,0 +1,170 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../bootstrap/unit.php'); + +$t = new lime_test(10); + +class myClass +{ + public $ret = ''; + static public $retStatic = ''; + + public function myMethod() + { + $this->ret = "before myMethod\n"; + sfMixer::callMixins(); + $this->ret .= "after myMethod\n"; + + return $this->ret; + } + + public function myMethodWithSeveralHooks() + { + $this->ret = "before myMethodWithSeveralHooks\n"; + sfMixer::callMixins('before'); + + $this->ret .= "myMethodWithSeveralHooks\n"; + sfMixer::callMixins(); + + $this->ret .= "after myMethodWithSeveralHooks\n"; + sfMixer::callMixins('after'); + + return $this->ret; + } + + public function myMethodWithArgs($arg1, $arg2 = 'default') + { + $this->ret = "before myMethodWithArgs\n"; + sfMixer::callMixins(); + $this->ret .= "after myMethodWithArgs\n"; + + return $this->ret; + } + + static public function myStaticMethod() + { + self::$retStatic = "before myStaticMethod\n"; + sfMixer::callMixins(); + self::$retStatic .= "after myStaticMethod\n"; + + return self::$retStatic; + } + + static public function myStaticMethodWithArgs($arg1, $arg2 = 'default') + { + self::$retStatic = "before myStaticMethodWithArgs\n"; + sfMixer::callMixins(); + self::$retStatic .= "after myStaticMethodWithArgs\n"; + + return self::$retStatic; + } + + function __call($method, $arguments) + { + $r = "before __call\n"; + $r .= sfMixer::callMixins(); + $r .= "after __call\n"; + + return $r; + } +} + +$m = new myClass(); + +$t->is($m->myMethod(), "before myMethod\nafter myMethod\n", 'method call without mixins'); +$t->is(myClass::myStaticMethod(), "before myStaticMethod\nafter myStaticMethod\n", 'static method call without mixins'); + +try +{ + $m->newMethod(); + $t->fail('method call that does not exist'); +} +catch (Exception $e) +{ + $t->pass('method call that does not exist'); +} + +class myClassMixins +{ + public function myMixinMethod($object) + { + $object->ret .= "in myMethod mixin method\n"; + } + + public function myMethodWithSeveralHooks($object) + { + $object->ret .= "in myMethodWithSeveralHooks mixin method for default hook\n"; + } + + public function myMethodWithSeveralHooksBefore($object) + { + $object->ret .= "in myMethodWithSeveralHooks mixin method for before hook\n"; + } + + public function myMethodWithSeveralHooksAfter($object) + { + $object->ret .= "in myMethodWithSeveralHooks mixin method for after hook\n"; + } + +// TODO + public function myStaticMixinMethod($object) + { + $object->ret .= "in myStaticMethod mixin method\n"; + } + + public function myMixinMethodWithArgs($object, $arg1, $arg2 = 'default') + { + $object->ret .= "in myMethodWithArgs mixin method ($arg1, $arg2)\n"; + } + + public function myMixinStaticMethod() + { + myClass::$retStatic .= "in myStaticMethod mixin method\n"; + } + + public function myMixinStaticMethodWithArgs($class, $arg1, $arg2 = 'default') + { + myClass::$retStatic .= "in myStaticMethodWithArgs mixin method ($arg1, $arg2)\n"; + } + + public function newMethod($object) + { + return "in newMethod mixin method\n"; + } + + public function newMethodWithArgs($object, $arg1, $arg2 = 'default') + { + return "in newMethodWithArgs mixin method ($arg1, $arg2)\n"; + } +} + +sfMixer::register('myClass:myMethod', array('myClassMixins', 'myMixinMethod')); +sfMixer::register('myClass:myStaticMethod', array('myClassMixins', 'myMixinStaticMethod')); + +$t->is($m->myMethod(), "before myMethod\nin myMethod mixin method\nafter myMethod\n", 'method call with a mixin'); +$t->is(myClass::myStaticMethod(), "before myStaticMethod\nin myStaticMethod mixin method\nafter myStaticMethod\n", 'static method call with a mixin'); + +sfMixer::register('myClass:myMethodWithArgs', array('myClassMixins', 'myMixinMethodWithArgs')); +$t->is($m->myMethodWithArgs('value'), "before myMethodWithArgs\nin myMethodWithArgs mixin method (value, default)\nafter myMethodWithArgs\n", 'method call with arguments with a mixin'); + +sfMixer::register('myClass:myStaticMethodWithArgs', array('myClassMixins', 'myMixinStaticMethodWithArgs')); +$t->is(myClass::myStaticMethodWithArgs('value'), "before myStaticMethodWithArgs\nin myStaticMethodWithArgs mixin method (value, default)\nafter myStaticMethodWithArgs\n", 'static method call with arguments with a mixin'); + +sfMixer::register('myClass', array('myClassMixins', 'newMethod')); +$t->is($m->newMethod(), "before __call\nin newMethod mixin method\nafter __call\n", 'method call from a mixin'); + +sfMixer::register('myClass', array('myClassMixins', 'newMethodWithArgs')); +$t->is($m->newMethodWithArgs('value'), "before __call\nin newMethodWithArgs mixin method (value, default)\nafter __call\n", 'method call from a mixin with arguments'); + +sfMixer::register('myClass:myMethodWithSeveralHooks:before', array('myClassMixins', 'myMethodWithSeveralHooksBefore')); +sfMixer::register('myClass:myMethodWithSeveralHooks', array('myClassMixins', 'myMethodWithSeveralHooks')); +sfMixer::register('myClass:myMethodWithSeveralHooks:after', array('myClassMixins', 'myMethodWithSeveralHooksAfter')); +$t->is($m->myMethodWithSeveralHooks(), "before myMethodWithSeveralHooks\nin myMethodWithSeveralHooks mixin method for before hook\nmyMethodWithSeveralHooks\nin myMethodWithSeveralHooks mixin method for default hook\nafter myMethodWithSeveralHooks\nin myMethodWithSeveralHooks mixin method for after hook\n", 'method call with several registered hooks'); diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/sfPropelDatabaseSchemaTest.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/sfPropelDatabaseSchemaTest.php new file mode 100644 index 0000000..0346a6d --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/sfPropelDatabaseSchemaTest.php @@ -0,0 +1,88 @@ + + * (c) Francois Zaninotto + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../bootstrap/unit.php'); + +class my_lime_test extends lime_test +{ + public function is_array_explicit($test, $target, $prefix = '') + { + foreach ($test as $key => $value) + { + if (is_array($value)) + { + $this->is_array_explicit($value, $target[$key], $prefix.' '.$key); + } + else + { + $this->is($value, $target[$key], sprintf('%s %s is %s', $prefix, $key, $value)); + } + } + } + + public function is_line_by_line($exp1, $exp2) + { + $array_exp1 = explode("\n", $exp1); + $array_exp2 = explode("\n", $exp2); + $nb_lines = count($array_exp1); + for ($i=0; $i < $nb_lines; $i++) + { + if(!$array_exp1[$i]) continue; // Skip blank lines to avoid testing nothing + $this->is(trim($array_exp1[$i]), trim($array_exp2[$i]), sprintf('Line %d matches %s', $i, $array_exp1[$i])); + } + } +} + +require_once(dirname(__FILE__).'/../../../../../test/bootstrap/unit.php'); +require_once(dirname(__FILE__).'/../../lib/addon/sfPropelDatabaseSchema.class.php'); +require_once(dirname(__FILE__).'/../../../../util/sfInflector.class.php'); +require_once(dirname(__FILE__).'/../../../../util/sfToolkit.class.php'); +require_once(dirname(__FILE__).'/../../../../yaml/sfYaml.php'); + +$t = new my_lime_test(401); + +$t->diag('Classical YAML to XML conversion'); +$p = new sfPropelDatabaseSchema(); +$p->loadYAML(dirname(__FILE__).'/fixtures/schema.yml'); +$target = file_get_contents(dirname(__FILE__).'/fixtures/schema.xml'); +$t->is_line_by_line($p->asXML(), $target); + +$t->diag('New YAML to XML conversion'); +$p = new sfPropelDatabaseSchema(); +$p->loadYAML(dirname(__FILE__).'/fixtures/new_schema.yml'); +$target = file_get_contents(dirname(__FILE__).'/fixtures/schema.xml'); +$t->is_line_by_line($p->asXML(), $target); + +$t->diag('New YAML to Old YAML conversion'); +$old_yml_target = sfYaml::load(dirname(__FILE__).'/fixtures/schema.yml'); +$p = new sfPropelDatabaseSchema(); +$new_yml_transformed = $p->convertNewToOldYaml(sfYaml::load(dirname(__FILE__).'/fixtures/new_schema.yml')); +$t->is_array_explicit($new_yml_transformed, $old_yml_target); + +$t->diag('Old YAML to New YAML conversion'); +$new_yml_target = sfYaml::load(dirname(__FILE__).'/fixtures/new_schema.yml'); +$p = new sfPropelDatabaseSchema(); +$old_yml_transformed = $p->convertOldToNewYaml(sfYaml::load(dirname(__FILE__).'/fixtures/schema.yml')); +$t->is_array_explicit($old_yml_transformed, $new_yml_target); + + +$t->todo('XML and classical YAML internal representation'); +$p1 = new sfPropelDatabaseSchema(); +$p1->loadXML(dirname(__FILE__).'/fixtures/schema.xml'); +$p2 = new sfPropelDatabaseSchema(); +$p2->loadYAML(dirname(__FILE__).'/fixtures/schema.yml'); +//$t->is_array_explicit($p1->asArray(), $p2->asArray()); + +$t->todo('XML and classical YAML compared as XML'); +//$t->is_line_by_line($p1->asXML(), $p2->asXML()); + +$t->todo('XML and classical YAML compared as YAML'); +//$t->is_line_by_line($p1->asYAML(), $p2->asYAML()); diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/task/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/task/.svn/all-wcprops new file mode 100644 index 0000000..a12d0b3 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/task/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 70 +/!svn/ver/24039/branches/1.4/lib/plugins/sfPropelPlugin/test/unit/task +END +sfPhingTest.php +K 25 +svn:wc:ra_dav:version-url +V 86 +/!svn/ver/24039/branches/1.4/lib/plugins/sfPropelPlugin/test/unit/task/sfPhingTest.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/task/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/task/.svn/entries new file mode 100644 index 0000000..810bb05 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/task/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/unit/task +http://svn.symfony-project.com + + + +2009-11-16T17:52:14.706630Z +24039 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +sfPhingTest.php +file + + + + +2012-05-10T18:41:32.801581Z +58e72affe01bc9939642d2315ea8e877 +2009-11-16T17:52:14.706630Z +24039 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +483 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/task/.svn/prop-base/sfPhingTest.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/task/.svn/prop-base/sfPhingTest.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/task/.svn/prop-base/sfPhingTest.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/task/.svn/text-base/sfPhingTest.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/task/.svn/text-base/sfPhingTest.php.svn-base new file mode 100644 index 0000000..09c3cda --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/task/.svn/text-base/sfPhingTest.php.svn-base @@ -0,0 +1,18 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once dirname(__FILE__).'/../../bootstrap/unit.php'; + +$t = new lime_test(1); + +// ::getPhingVersion() +$t->diag('::getPhingVersion()'); + +$t->is(sfPhing::getPhingVersion(), 'sfPhing', '::getPhingVersion() returns "sfPhing"'); diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/task/sfPhingTest.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/task/sfPhingTest.php new file mode 100644 index 0000000..09c3cda --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/task/sfPhingTest.php @@ -0,0 +1,18 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once dirname(__FILE__).'/../../bootstrap/unit.php'; + +$t = new lime_test(1); + +// ::getPhingVersion() +$t->diag('::getPhingVersion()'); + +$t->is(sfPhing::getPhingVersion(), 'sfPhing', '::getPhingVersion() returns "sfPhing"'); diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/validator/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/validator/.svn/all-wcprops new file mode 100644 index 0000000..15eb183 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/validator/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 75 +/!svn/ver/27940/branches/1.4/lib/plugins/sfPropelPlugin/test/unit/validator +END +sfValidatorPropelUniqueTest.php +K 25 +svn:wc:ra_dav:version-url +V 107 +/!svn/ver/27940/branches/1.4/lib/plugins/sfPropelPlugin/test/unit/validator/sfValidatorPropelUniqueTest.php +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/validator/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/validator/.svn/entries new file mode 100644 index 0000000..f48fd9e --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/validator/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/test/unit/validator +http://svn.symfony-project.com + + + +2010-02-12T13:31:30.838136Z +27940 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +sfValidatorPropelUniqueTest.php +file + + + + +2012-05-10T18:41:33.089550Z +41202a20e9e488691b5d16866612a367 +2010-02-12T13:31:30.838136Z +27940 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +1418 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/validator/.svn/prop-base/sfValidatorPropelUniqueTest.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/validator/.svn/prop-base/sfValidatorPropelUniqueTest.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/validator/.svn/prop-base/sfValidatorPropelUniqueTest.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/validator/.svn/text-base/sfValidatorPropelUniqueTest.php.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/validator/.svn/text-base/sfValidatorPropelUniqueTest.php.svn-base new file mode 100644 index 0000000..011f7a6 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/validator/.svn/text-base/sfValidatorPropelUniqueTest.php.svn-base @@ -0,0 +1,58 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'frontend'; +include dirname(__FILE__).'/../../bootstrap/functional.php'; +include $configuration->getSymfonyLibDir().'/vendor/lime/lime.php'; + +$t = new lime_test(2); + +// ->clean() +$t->diag('->clean()'); + +$validator = new sfValidatorPropelUnique(array('model' => 'Author', 'column' => 'name')); + +$author = new Author(); +$author->setName('==NAME=='); +$author->save(); + +try +{ + $validator->clean(array('name' => '==NAME==')); + $t->fail('->clean() throws an error on the column'); +} +catch (sfValidatorErrorSchema $errors) +{ + $t->is(isset($errors['name']), true, '->clean() throws an error on the column'); +} +catch (Exception $e) +{ + $t->fail('->clean() throws an error on the column'); + $t->diag(' '.$e->getMessage()); +} + +$validator->setOption('field', 'author_name'); + +try +{ + $validator->clean(array('author_name' => '==NAME==')); + $t->fail('->clean() throws an error on the field'); +} +catch (sfValidatorErrorSchema $errors) +{ + $t->is(isset($errors['author_name']), true, '->clean() throws an error on the field'); +} +catch (Exception $e) +{ + $t->fail('->clean() throws an error on the field'); + $t->diag(' '.$e->getMessage()); +} + +$author->delete(); diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/validator/sfValidatorPropelUniqueTest.php b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/validator/sfValidatorPropelUniqueTest.php new file mode 100644 index 0000000..011f7a6 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/test/unit/validator/sfValidatorPropelUniqueTest.php @@ -0,0 +1,58 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'frontend'; +include dirname(__FILE__).'/../../bootstrap/functional.php'; +include $configuration->getSymfonyLibDir().'/vendor/lime/lime.php'; + +$t = new lime_test(2); + +// ->clean() +$t->diag('->clean()'); + +$validator = new sfValidatorPropelUnique(array('model' => 'Author', 'column' => 'name')); + +$author = new Author(); +$author->setName('==NAME=='); +$author->save(); + +try +{ + $validator->clean(array('name' => '==NAME==')); + $t->fail('->clean() throws an error on the column'); +} +catch (sfValidatorErrorSchema $errors) +{ + $t->is(isset($errors['name']), true, '->clean() throws an error on the column'); +} +catch (Exception $e) +{ + $t->fail('->clean() throws an error on the column'); + $t->diag(' '.$e->getMessage()); +} + +$validator->setOption('field', 'author_name'); + +try +{ + $validator->clean(array('author_name' => '==NAME==')); + $t->fail('->clean() throws an error on the field'); +} +catch (sfValidatorErrorSchema $errors) +{ + $t->is(isset($errors['author_name']), true, '->clean() throws an error on the field'); +} +catch (Exception $e) +{ + $t->fail('->clean() throws an error on the field'); + $t->diag(' '.$e->getMessage()); +} + +$author->delete(); diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/.svn/all-wcprops new file mode 100644 index 0000000..f2a1401 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 59 +/!svn/ver/29716/branches/1.4/lib/plugins/sfPropelPlugin/web +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/.svn/entries new file mode 100644 index 0000000..85d0874 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/.svn/entries @@ -0,0 +1,34 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/web +http://svn.symfony-project.com + + + +2010-06-01T17:07:19.425715Z +29716 +Jonathan.Wage + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +images +dir + +css +dir + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/css/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/css/.svn/all-wcprops new file mode 100644 index 0000000..d51b815 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/css/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 63 +/!svn/ver/29716/branches/1.4/lib/plugins/sfPropelPlugin/web/css +END +global.css +K 25 +svn:wc:ra_dav:version-url +V 74 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/web/css/global.css +END +default.css +K 25 +svn:wc:ra_dav:version-url +V 75 +/!svn/ver/29716/branches/1.4/lib/plugins/sfPropelPlugin/web/css/default.css +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/css/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/css/.svn/entries new file mode 100644 index 0000000..001e0e7 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/css/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/web/css +http://svn.symfony-project.com + + + +2010-06-01T17:07:19.425715Z +29716 +Jonathan.Wage + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +global.css +file + + + + +2012-05-10T18:41:47.853551Z +e28efc685c6708e9857073d743eeab47 +2008-11-17T19:00:02.280266Z +13070 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +2306 + +default.css +file + + + + +2012-05-10T18:41:47.857551Z +cbf8eb566dbea914c352ed9c5afc7529 +2010-06-01T17:07:19.425715Z +29716 +Jonathan.Wage +has-props + + + + + + + + + + + + + + + + + + + + +4771 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/css/.svn/prop-base/default.css.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/css/.svn/prop-base/default.css.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/css/.svn/prop-base/default.css.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/css/.svn/prop-base/global.css.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/css/.svn/prop-base/global.css.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/css/.svn/prop-base/global.css.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/css/.svn/text-base/default.css.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/css/.svn/text-base/default.css.svn-base new file mode 100644 index 0000000..7abcfd8 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/css/.svn/text-base/default.css.svn-base @@ -0,0 +1,271 @@ +#sf_admin_container a +{ + color: #464646; + text-decoration: none; +} + +#sf_admin_container a:hover +{ + color: #000; + text-decoration: underline; +} + +#sf_admin_container h1 +{ + margin: 0; + padding: 0; + margin-bottom: 20px; +} + +#sf_admin_container th +{ + background-color: #e7eef6; + white-space: nowrap; +} + +#sf_admin_container td, #sf_admin_container th +{ + border: 0; + border-bottom: 1px solid #ddd; + border-top: 1px solid #ddd; + text-align: left; + vertical-align: top; +} + +#sf_admin_container tr +{ + background-color: #fff; + border-left: 1px solid #ddd; + border-right: 1px solid #ddd; +} + +#sf_admin_container ul.error_list +{ + margin: 0; + margin-bottom: 7px; + color: #d33; + border: none; + background-color: #f33; +} + +#sf_admin_container ul.error_list li +{ + padding: 4px; + padding-left: 25px; + list-style: none; + color: #fff; + background: url(../images/error.png) no-repeat 4px 4px; +} + +#sf_admin_container tr:hover +{ + background-color: #ffe; +} + +#sf_admin_container input, #sf_admin_container textarea +{ + width: auto; +} + +#sf_admin_container .radio_list, #sf_admin_container .checkbox_list +{ + margin: 0; +} + +#sf_admin_container .radio_list li, #sf_admin_container .checkbox_list li +{ + list-style: none; + display: inline; +} + +#sf_admin_container .double_list_select, #sf_admin_container .double_list_select-selected +{ + width: 12em; +} + +#sf_admin_container .double_list_label +{ + font-weight: bold; +} + +#sf_admin_container tfoot td +{ + margin: 0; + list-style: none; + text-align: right; +} + +#sf_admin_container thead img, #sf_admin_container tfoot img +{ + vertical-align: middle; +} + +#sf_admin_bar +{ + float: right; + margin-left: 20px; +} + +.sf_admin_pagination +{ + float: right; +} + +#sf_admin_container ul.sf_admin_td_actions +{ + margin: 0; + padding: 0; + list-style-type: none; +} + +#sf_admin_container ul.sf_admin_td_actions li +{ + list-style-type: none; + display: inline; + margin-right: 10px; + font-size: 90%; +} + +#sf_admin_container ul.sf_admin_actions +{ + margin: 10px 0; + list-style-type: none; +} + +#sf_admin_container ul.sf_admin_actions li +{ + list-style-type: none; + display: inline; + margin-right: 10px; +} + +#sf_admin_container ul.sf_admin_actions li a, +#sf_admin_container ul.sf_admin_td_actions li a +{ + padding-left: 20px; + background: url(../images/default.png) no-repeat 0 0; +} + +#sf_admin_container ul li.sf_admin_action_new a +{ + background: url(../images/new.png) no-repeat 0 0; +} + +#sf_admin_container ul li.sf_admin_action_delete a +{ + background: url(../images/delete.png) no-repeat 0 0; +} + +#sf_admin_container ul li.sf_admin_action_list a +{ + background: url(../images/list.png) no-repeat 0 0; +} + +#sf_admin_container ul li.sf_admin_action_edit a +{ + background: url(../images/edit.png) no-repeat 0 0; +} + +#sf_admin_container .notice +{ + margin: 4px 0; + padding: 4px 4px 4px 30px; + background: url(../images/tick.png) no-repeat 10px 4px; + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + background-color: #ffc; +} + +#sf_admin_container .error +{ + margin: 4px 0; + padding: 4px 4px 4px 30px; + background: url(../images/error.png) no-repeat 10px 4px; + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + background-color: #f33; + color: #fff; +} + +#sf_admin_container .sf_admin_row_0 td +{ +} + +#sf_admin_container .sf_admin_row_1 td +{ +/* background-color: #eee;*/ +} + +#sf_admin_container fieldset h2 +{ + padding: 3px; + color: #333; + background-color: #ccf; + font-size: 11px; + margin: 0; +} + +#sf_admin_container fieldset +{ + margin-bottom: 3px; + border: 1px solid #ddd; + border-bottom: 0px; + background-color: #fff; +} + +#sf_admin_container fieldset.collapsed * { display:none; } +#sf_admin_container fieldset.collapsed h2, #sf_admin_container fieldset.collapsed { display:block !important; } +#sf_admin_container fieldset.collapsed .collapse-toggle { display: inline !important; } +#sf_admin_container fieldset.collapse h2 a.collapse-toggle { color:#ffc; } +#sf_admin_container fieldset.collapse h2 a.collapse-toggle:hover { text-decoration:underline; } + +#sf_admin_container label +{ + display: block; + padding: 0 1em 3px 0; + float: left; + text-align: left; + width: 8em; + color: #666; + font-weight: normal !important; +} + +#sf_admin_container ul label, #sf_admin_container td label +{ + display: inline; + float: none !important; +} + +#sf_admin_container .sf_admin_form_row +{ + clear: both; + padding: 10px; + border-bottom: 1px solid #ddd; +} + +#sf_admin_container .sf_admin_form_row .content +{ + padding-left: 9em; +} + +#sf_admin_container .help +{ + padding-left: 9em; + color: #aaa; +} + +#sf_admin_container td .help +{ + padding-left: 0; +} + +#sf_admin_container .errors input, #sf_admin_container .errors select +{ + border: 1px solid #f22; +} + +#sf_admin_container .sf_admin_list .sf_admin_boolean +{ + text-align: center; +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/css/.svn/text-base/global.css.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/css/.svn/text-base/global.css.svn-base new file mode 100644 index 0000000..9760cb2 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/css/.svn/text-base/global.css.svn-base @@ -0,0 +1,34 @@ +/* http://yui.yahooapis.com/2.6.0/build/reset/reset-min.css +Copyright (c) 2008, Yahoo! Inc. All rights reserved. +Code licensed under the BSD License: +http://developer.yahoo.net/yui/license.txt +version: 2.6.0 +*/ +html{color:#000;background:#FFF;}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}li{list-style:none;}caption,th{text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}q:before,q:after{content:'';}abbr,acronym{border:0;font-variant:normal;}sup{vertical-align:text-top;}sub{vertical-align:text-bottom;}input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit;}input,textarea,select{*font-size:100%;}legend{color:#000;}del,ins{text-decoration:none;} + +/* http://yui.yahooapis.com/2.6.0/build/fonts/fonts-min.css +Copyright (c) 2008, Yahoo! Inc. All rights reserved. +Code licensed under the BSD License: +http://developer.yahoo.net/yui/license.txt +version: 2.6.0 +*/ +body{font:13px/1.231 arial,helvetica,clean,sans-serif;*font-size:small;*font:x-small;}select,input,button,textarea{font:99% arial,helvetica,clean,sans-serif;}table{font-size:inherit;font:100%;}pre,code,kbd,samp,tt{font-family:monospace;*font-size:108%;line-height:100%;} + +/* http://yui.yahooapis.com/2.6.0/build/base/base-min.css +Copyright (c) 2008, Yahoo! Inc. All rights reserved. +Code licensed under the BSD License: +http://developer.yahoo.net/yui/license.txt +version: 2.6.0 +*/ +h1{font-size:138.5%;}h2{font-size:123.1%;}h3{font-size:108%;}h1,h2,h3{margin:1em 0;}h1,h2,h3,h4,h5,h6,strong{font-weight:bold;}abbr,acronym{border-bottom:1px dotted #000;cursor:help;} em{font-style:italic;}blockquote,ul,ol,dl{margin:1em;}ol,ul,dl{margin-left:2em;}ol li{list-style:decimal outside;}ul li{list-style:disc outside;}dl dd{margin-left:1em;}th,td{border:1px solid #000;padding:.5em;}th{font-weight:bold;text-align:center;}caption{margin-bottom:.5em;text-align:center;}p,fieldset,table,pre{margin-bottom:1em;}input[type=text],input[type=password],textarea{width:12.25em;*width:11.9em;} + +html +{ + background-color: #eee; +} + +body +{ + padding: 30px; + text-align: left; +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/css/default.css b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/css/default.css new file mode 100644 index 0000000..7abcfd8 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/css/default.css @@ -0,0 +1,271 @@ +#sf_admin_container a +{ + color: #464646; + text-decoration: none; +} + +#sf_admin_container a:hover +{ + color: #000; + text-decoration: underline; +} + +#sf_admin_container h1 +{ + margin: 0; + padding: 0; + margin-bottom: 20px; +} + +#sf_admin_container th +{ + background-color: #e7eef6; + white-space: nowrap; +} + +#sf_admin_container td, #sf_admin_container th +{ + border: 0; + border-bottom: 1px solid #ddd; + border-top: 1px solid #ddd; + text-align: left; + vertical-align: top; +} + +#sf_admin_container tr +{ + background-color: #fff; + border-left: 1px solid #ddd; + border-right: 1px solid #ddd; +} + +#sf_admin_container ul.error_list +{ + margin: 0; + margin-bottom: 7px; + color: #d33; + border: none; + background-color: #f33; +} + +#sf_admin_container ul.error_list li +{ + padding: 4px; + padding-left: 25px; + list-style: none; + color: #fff; + background: url(../images/error.png) no-repeat 4px 4px; +} + +#sf_admin_container tr:hover +{ + background-color: #ffe; +} + +#sf_admin_container input, #sf_admin_container textarea +{ + width: auto; +} + +#sf_admin_container .radio_list, #sf_admin_container .checkbox_list +{ + margin: 0; +} + +#sf_admin_container .radio_list li, #sf_admin_container .checkbox_list li +{ + list-style: none; + display: inline; +} + +#sf_admin_container .double_list_select, #sf_admin_container .double_list_select-selected +{ + width: 12em; +} + +#sf_admin_container .double_list_label +{ + font-weight: bold; +} + +#sf_admin_container tfoot td +{ + margin: 0; + list-style: none; + text-align: right; +} + +#sf_admin_container thead img, #sf_admin_container tfoot img +{ + vertical-align: middle; +} + +#sf_admin_bar +{ + float: right; + margin-left: 20px; +} + +.sf_admin_pagination +{ + float: right; +} + +#sf_admin_container ul.sf_admin_td_actions +{ + margin: 0; + padding: 0; + list-style-type: none; +} + +#sf_admin_container ul.sf_admin_td_actions li +{ + list-style-type: none; + display: inline; + margin-right: 10px; + font-size: 90%; +} + +#sf_admin_container ul.sf_admin_actions +{ + margin: 10px 0; + list-style-type: none; +} + +#sf_admin_container ul.sf_admin_actions li +{ + list-style-type: none; + display: inline; + margin-right: 10px; +} + +#sf_admin_container ul.sf_admin_actions li a, +#sf_admin_container ul.sf_admin_td_actions li a +{ + padding-left: 20px; + background: url(../images/default.png) no-repeat 0 0; +} + +#sf_admin_container ul li.sf_admin_action_new a +{ + background: url(../images/new.png) no-repeat 0 0; +} + +#sf_admin_container ul li.sf_admin_action_delete a +{ + background: url(../images/delete.png) no-repeat 0 0; +} + +#sf_admin_container ul li.sf_admin_action_list a +{ + background: url(../images/list.png) no-repeat 0 0; +} + +#sf_admin_container ul li.sf_admin_action_edit a +{ + background: url(../images/edit.png) no-repeat 0 0; +} + +#sf_admin_container .notice +{ + margin: 4px 0; + padding: 4px 4px 4px 30px; + background: url(../images/tick.png) no-repeat 10px 4px; + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + background-color: #ffc; +} + +#sf_admin_container .error +{ + margin: 4px 0; + padding: 4px 4px 4px 30px; + background: url(../images/error.png) no-repeat 10px 4px; + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + background-color: #f33; + color: #fff; +} + +#sf_admin_container .sf_admin_row_0 td +{ +} + +#sf_admin_container .sf_admin_row_1 td +{ +/* background-color: #eee;*/ +} + +#sf_admin_container fieldset h2 +{ + padding: 3px; + color: #333; + background-color: #ccf; + font-size: 11px; + margin: 0; +} + +#sf_admin_container fieldset +{ + margin-bottom: 3px; + border: 1px solid #ddd; + border-bottom: 0px; + background-color: #fff; +} + +#sf_admin_container fieldset.collapsed * { display:none; } +#sf_admin_container fieldset.collapsed h2, #sf_admin_container fieldset.collapsed { display:block !important; } +#sf_admin_container fieldset.collapsed .collapse-toggle { display: inline !important; } +#sf_admin_container fieldset.collapse h2 a.collapse-toggle { color:#ffc; } +#sf_admin_container fieldset.collapse h2 a.collapse-toggle:hover { text-decoration:underline; } + +#sf_admin_container label +{ + display: block; + padding: 0 1em 3px 0; + float: left; + text-align: left; + width: 8em; + color: #666; + font-weight: normal !important; +} + +#sf_admin_container ul label, #sf_admin_container td label +{ + display: inline; + float: none !important; +} + +#sf_admin_container .sf_admin_form_row +{ + clear: both; + padding: 10px; + border-bottom: 1px solid #ddd; +} + +#sf_admin_container .sf_admin_form_row .content +{ + padding-left: 9em; +} + +#sf_admin_container .help +{ + padding-left: 9em; + color: #aaa; +} + +#sf_admin_container td .help +{ + padding-left: 0; +} + +#sf_admin_container .errors input, #sf_admin_container .errors select +{ + border: 1px solid #f22; +} + +#sf_admin_container .sf_admin_list .sf_admin_boolean +{ + text-align: center; +} + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/css/global.css b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/css/global.css new file mode 100644 index 0000000..9760cb2 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/css/global.css @@ -0,0 +1,34 @@ +/* http://yui.yahooapis.com/2.6.0/build/reset/reset-min.css +Copyright (c) 2008, Yahoo! Inc. All rights reserved. +Code licensed under the BSD License: +http://developer.yahoo.net/yui/license.txt +version: 2.6.0 +*/ +html{color:#000;background:#FFF;}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}li{list-style:none;}caption,th{text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}q:before,q:after{content:'';}abbr,acronym{border:0;font-variant:normal;}sup{vertical-align:text-top;}sub{vertical-align:text-bottom;}input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit;}input,textarea,select{*font-size:100%;}legend{color:#000;}del,ins{text-decoration:none;} + +/* http://yui.yahooapis.com/2.6.0/build/fonts/fonts-min.css +Copyright (c) 2008, Yahoo! Inc. All rights reserved. +Code licensed under the BSD License: +http://developer.yahoo.net/yui/license.txt +version: 2.6.0 +*/ +body{font:13px/1.231 arial,helvetica,clean,sans-serif;*font-size:small;*font:x-small;}select,input,button,textarea{font:99% arial,helvetica,clean,sans-serif;}table{font-size:inherit;font:100%;}pre,code,kbd,samp,tt{font-family:monospace;*font-size:108%;line-height:100%;} + +/* http://yui.yahooapis.com/2.6.0/build/base/base-min.css +Copyright (c) 2008, Yahoo! Inc. All rights reserved. +Code licensed under the BSD License: +http://developer.yahoo.net/yui/license.txt +version: 2.6.0 +*/ +h1{font-size:138.5%;}h2{font-size:123.1%;}h3{font-size:108%;}h1,h2,h3{margin:1em 0;}h1,h2,h3,h4,h5,h6,strong{font-weight:bold;}abbr,acronym{border-bottom:1px dotted #000;cursor:help;} em{font-style:italic;}blockquote,ul,ol,dl{margin:1em;}ol,ul,dl{margin-left:2em;}ol li{list-style:decimal outside;}ul li{list-style:disc outside;}dl dd{margin-left:1em;}th,td{border:1px solid #000;padding:.5em;}th{font-weight:bold;text-align:center;}caption{margin-bottom:.5em;text-align:center;}p,fieldset,table,pre{margin-bottom:1em;}input[type=text],input[type=password],textarea{width:12.25em;*width:11.9em;} + +html +{ + background-color: #eee; +} + +body +{ + padding: 30px; + text-align: left; +} diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/all-wcprops b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/all-wcprops new file mode 100644 index 0000000..e6ffb94 --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/all-wcprops @@ -0,0 +1,83 @@ +K 25 +svn:wc:ra_dav:version-url +V 66 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/web/images +END +previous.png +K 25 +svn:wc:ra_dav:version-url +V 79 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/web/images/previous.png +END +desc.png +K 25 +svn:wc:ra_dav:version-url +V 75 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/web/images/desc.png +END +next.png +K 25 +svn:wc:ra_dav:version-url +V 75 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/web/images/next.png +END +delete.png +K 25 +svn:wc:ra_dav:version-url +V 77 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/web/images/delete.png +END +last.png +K 25 +svn:wc:ra_dav:version-url +V 75 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/web/images/last.png +END +default.png +K 25 +svn:wc:ra_dav:version-url +V 78 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/web/images/default.png +END +edit.png +K 25 +svn:wc:ra_dav:version-url +V 75 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/web/images/edit.png +END +asc.png +K 25 +svn:wc:ra_dav:version-url +V 74 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/web/images/asc.png +END +first.png +K 25 +svn:wc:ra_dav:version-url +V 76 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/web/images/first.png +END +error.png +K 25 +svn:wc:ra_dav:version-url +V 76 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/web/images/error.png +END +new.png +K 25 +svn:wc:ra_dav:version-url +V 74 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/web/images/new.png +END +tick.png +K 25 +svn:wc:ra_dav:version-url +V 75 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/web/images/tick.png +END +list.png +K 25 +svn:wc:ra_dav:version-url +V 75 +/!svn/ver/23881/branches/1.4/lib/plugins/sfPropelPlugin/web/images/list.png +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/entries b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/entries new file mode 100644 index 0000000..e05f92e --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/entries @@ -0,0 +1,470 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/plugins/sfPropelPlugin/web/images +http://svn.symfony-project.com + + + +2008-10-31T10:41:27.929151Z +12474 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +previous.png +file + + + + +2012-05-10T18:41:47.693550Z +be50e30d062c600d679701409f571487 +2008-10-31T10:41:27.929151Z +12474 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +452 + +desc.png +file + + + + +2012-05-10T18:41:47.693550Z +73efac62eee333791c162b9b2e89f6f0 +2008-10-31T10:41:27.929151Z +12474 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +285 + +next.png +file + + + + +2012-05-10T18:41:47.693550Z +a0bab3570268999accd61a785ca2e045 +2008-10-31T10:41:27.929151Z +12474 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +448 + +delete.png +file + + + + +2012-05-10T18:41:47.693550Z +6a39b61050e9f939487a70b5d979fb00 +2008-10-31T10:41:27.929151Z +12474 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +325 + +last.png +file + + + + +2012-05-10T18:41:47.705551Z +73ddcdb8229f04d6473c9ba8bdd0cfea +2008-10-31T10:41:27.929151Z +12474 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +436 + +default.png +file + + + + +2012-05-10T18:41:47.705551Z +fb3a7cae82dddb2f7cb213aeb7fc51b3 +2008-10-31T10:41:27.929151Z +12474 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +267 + +edit.png +file + + + + +2012-05-10T18:41:47.705551Z +6b804947fd5be9525de671a88c92252f +2008-10-31T10:41:27.929151Z +12474 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +411 + +asc.png +file + + + + +2012-05-10T18:41:47.705551Z +da2a748d8c6a13617e86a46bd80f5a04 +2008-10-31T10:41:27.929151Z +12474 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +287 + +first.png +file + + + + +2012-05-10T18:41:47.844296Z +6eda11598820574aa6463a049260e7d7 +2008-10-31T10:41:27.929151Z +12474 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +435 + +error.png +file + + + + +2012-05-10T18:41:47.844296Z +e30392fe4d95c20d76b2398869c573c5 +2008-10-31T10:41:27.929151Z +12474 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +438 + +new.png +file + + + + +2012-05-10T18:41:47.845549Z +e2f928c36627d5b17a8c9c9a5e07bb05 +2008-10-31T10:41:27.929151Z +12474 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +288 + +tick.png +file + + + + +2012-05-10T18:41:47.845549Z +9b20d749f9e31ef58b8b0cbc6d7d50ba +2008-10-31T10:41:27.929151Z +12474 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +344 + +list.png +file + + + + +2012-05-10T18:41:47.845549Z +fb3a7cae82dddb2f7cb213aeb7fc51b3 +2008-10-31T10:41:27.929151Z +12474 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +267 + diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/asc.png.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/asc.png.svn-base new file mode 100644 index 0000000..dbc918b --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/asc.png.svn-base @@ -0,0 +1,9 @@ +K 14 +svn:executable +V 1 +* +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/default.png.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/default.png.svn-base new file mode 100644 index 0000000..dbc918b --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/default.png.svn-base @@ -0,0 +1,9 @@ +K 14 +svn:executable +V 1 +* +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/delete.png.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/delete.png.svn-base new file mode 100644 index 0000000..dbc918b --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/delete.png.svn-base @@ -0,0 +1,9 @@ +K 14 +svn:executable +V 1 +* +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/desc.png.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/desc.png.svn-base new file mode 100644 index 0000000..dbc918b --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/desc.png.svn-base @@ -0,0 +1,9 @@ +K 14 +svn:executable +V 1 +* +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/edit.png.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/edit.png.svn-base new file mode 100644 index 0000000..dbc918b --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/edit.png.svn-base @@ -0,0 +1,9 @@ +K 14 +svn:executable +V 1 +* +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/error.png.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/error.png.svn-base new file mode 100644 index 0000000..dbc918b --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/error.png.svn-base @@ -0,0 +1,9 @@ +K 14 +svn:executable +V 1 +* +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/first.png.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/first.png.svn-base new file mode 100644 index 0000000..dbc918b --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/first.png.svn-base @@ -0,0 +1,9 @@ +K 14 +svn:executable +V 1 +* +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/last.png.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/last.png.svn-base new file mode 100644 index 0000000..dbc918b --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/last.png.svn-base @@ -0,0 +1,9 @@ +K 14 +svn:executable +V 1 +* +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/list.png.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/list.png.svn-base new file mode 100644 index 0000000..dbc918b --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/list.png.svn-base @@ -0,0 +1,9 @@ +K 14 +svn:executable +V 1 +* +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/new.png.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/new.png.svn-base new file mode 100644 index 0000000..dbc918b --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/new.png.svn-base @@ -0,0 +1,9 @@ +K 14 +svn:executable +V 1 +* +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/next.png.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/next.png.svn-base new file mode 100644 index 0000000..dbc918b --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/next.png.svn-base @@ -0,0 +1,9 @@ +K 14 +svn:executable +V 1 +* +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/previous.png.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/previous.png.svn-base new file mode 100644 index 0000000..dbc918b --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/previous.png.svn-base @@ -0,0 +1,9 @@ +K 14 +svn:executable +V 1 +* +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/tick.png.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/tick.png.svn-base new file mode 100644 index 0000000..dbc918b --- /dev/null +++ b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/prop-base/tick.png.svn-base @@ -0,0 +1,9 @@ +K 14 +svn:executable +V 1 +* +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/text-base/asc.png.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/text-base/asc.png.svn-base new file mode 100644 index 0000000000000000000000000000000000000000..12ba77067f7ff2a40772b7109492fe50962abf2f GIT binary patch literal 287 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmUzPnffIy#(?lOI#yL zg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+5i=8^mK6yskoK&=l_3uX4QtyMkj}j zj5;Ug>{z)w(I@9$5{qE>rr1L12A+^Jf?V(C-0_{mJ>lT}{r^3_Ga3E({98Yg?ZDrE zzrV|~$rSZeBp*C}wa+o)Xw$>*>+K789yK57>~uS(yPMx|#)(Y^f0(jb5(VT{`tq#9 z#2FTM7C!%{%#-#hC*iiENe91>x|L$1$a~wGo`X)ElNnteU*ahfDvERP@;JeGyd%vb gkGU-^jfum6A^N^obBSMU4bbrnp00i_>zopr0B_lC>Hq)$ literal 0 HcmV?d00001 diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/text-base/default.png.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/text-base/default.png.svn-base new file mode 100644 index 0000000000000000000000000000000000000000..95b13aefdf683ad5e1725022b2a2c4d539155b26 GIT binary patch literal 267 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmUzPnffIy#(?lOI#yL zg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+5i>J^>lFzskoK&=l_3uX4QtyMyCTz z$y?T0yH5&U)!ZWy$iu)`=9{|653mdKI;Vst0QV|k1poj5 literal 0 HcmV?d00001 diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/text-base/delete.png.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/text-base/delete.png.svn-base new file mode 100644 index 0000000000000000000000000000000000000000..c7798043231455c50262219c841092d98fcf3e5c GIT binary patch literal 325 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmUzPnffIy#(?lOI#yL zg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+5i<@_jGX#skoK&=l_3uX4QtyMkj}j zj5;Ug%w4%sf$N#No5|LK!tXaX7w&qnfA<<4W)9`d1L}P*TkGB2czN7rKSlj*mbqf{z+`;#0?e$u43MQ{H-Q;r_RJ#_mHriZ{9ci~7!y{P*wgafU@7C7aGR{NMD8 zkEg!we`~UU{B*?^Y=8Q{mZcO-NKEoVE=MxOMLBlK0_W9ih-Et7yd| z(YTO@?`!=2e+LXrzDQn7W?9Xh@W4Do+4CiXWX0;@LpQVIADA@=TIwsPs^lo1>(Es+ g0M^;q17nyZ^tAS<6j0Hpx6}#uxl6zh5<;kk(NHgjq9%&4oCGd zT;XSCkP=ZPE)YSQ^;NYQ9=!a<@aN}mFus%8&#>$FJqC0yFd|1IC=5g;+5Q`88!$Zi z@Ea~JBf!dV?&<}G*Ux`3B6|_T1t87lCT0w;elsz!akGQ5q9iw1^P+55M!e}@_wL>Q zn|;(6PM$f%pdii#)XV{Ne4%c9AU7rv0=D%>lT<#$Y!juFd&(UVgmpI3;=^sd5#UthH(G@002ovPDHLk FV1gkYtpET3 literal 0 HcmV?d00001 diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/text-base/error.png.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/text-base/error.png.svn-base new file mode 100644 index 0000000000000000000000000000000000000000..6631294a5938a38a962c0220b400ea14ed0c6191 GIT binary patch literal 438 zcmV;n0ZIOeP)Ag|Tr{!W2no z#+Qm@4~h8psW?pRHzYg|8NejOAiFv!Uu4Abbb6Ct+J z5l92YzW>Ey!1uohg&_PBgn^;;3y8gTA;dwk@%tZ^F!%!%4A_I2W*LD*C@>J2fixFT z2MfsBuc!tvDtu-5|3idCnQ2hwRHB~=kGq9 z&$i0*9J36UrrvEC|5r`XG(0u}l6Ok65}9Dc36d6pz-$m<|IsGgY%ne{@v0TLRe|c6zf()11c|BAqM^S9 z!o&*PZQ6vr0b>$Vp9p9OL@5*Rx42XqyT0wXU~yW%g;HRg)rtKJ^>lFzskoK&=l_3uX4QtyMyCTz z$y?T0yH5&U)!ZWy$iu)`=9{|653mdKI;Vst0QV|k1poj5 literal 0 HcmV?d00001 diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/text-base/new.png.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/text-base/new.png.svn-base new file mode 100644 index 0000000000000000000000000000000000000000..d91b835978fcfb0c4080632205a05160cad79737 GIT binary patch literal 288 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmUzPnffIy#(?lOI#yL zg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+5i=8@^oeIdHvBgVtKnI}_J{HEi%0%_wZHg{S&p)9(pjd#^}f!YZP`@IwE?^dH@dHK_Z;Vc z>-w>2fuivYwywq1va7`%3Qu=T(ffCJ4?|GDntP0n0@K9aJsBa7TYvmDIxIOSOCoV* k=ba^IEFSC>R5-w(Q|oBI^WCO5K-V*Py85}Sb4q9e0MGYyUH||9 literal 0 HcmV?d00001 diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/text-base/next.png.svn-base b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/.svn/text-base/next.png.svn-base new file mode 100644 index 0000000000000000000000000000000000000000..d5bd836bea17614b6767a9b61cea74c2dd5cee8f GIT binary patch literal 448 zcmV;x0YCnUP)CJid6Iq4D`a@3lI)CX!o6GgDoT2jvLz24Xfq63zgQTr8__ER&Zr`TK`?581aM qrrKN`RozqZ*JBzblRoDk0R{lQil`%kyy@5g0000i^L8FF;ZpeSm>s zsRM!^whuKtup02~4?+UuB6L1VfI`KYUs4|$o~2p zVKCf)uYVxedl$snAPn+?$4&%)r6Z6As`>sGivi#NA`~JU@(UPZUPydUZ2bO*B@F(c zrNDqah}6djBtn6K$PA>pfI3(})_z4bfKlNq!~Y*53=FJ5Nj4~EWk#^skl0slAo2rp uUSQ;S1BoG!7r#R>zRUz>P@0_q0t^6Dhq7>n--PP`0000PbXFRCwBA z{Qv(y10{fofkHsB0W2`a+?}b!sE7HNG1+}K$u9V><1Whp!bk=oTmS+vQ_%s?b^kS7 zq!|AE{mUT3Xv%Pf;W6=H0Me}NAj{z)w(I@9$5{qE>rr1L12A+^Jf?V(C-0_{mJ>lT}{r^3_Ga3E({98Yg?ZDrE zzrV|~$rSZeBp*C}wa+o)Xw$>*>+K789yK57>~uS(yPMx|#)(Y^f0(jb5(VT{`tq#9 z#2FTM7C!%{%#-#hC*iiENe91>x|L$1$a~wGo`X)ElNnteU*ahfDvERP@;JeGyd%vb gkGU-^jfum6A^N^obBSMU4bbrnp00i_>zopr0B_lC>Hq)$ literal 0 HcmV?d00001 diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/default.png b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/default.png new file mode 100755 index 0000000000000000000000000000000000000000..95b13aefdf683ad5e1725022b2a2c4d539155b26 GIT binary patch literal 267 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmUzPnffIy#(?lOI#yL zg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+5i>J^>lFzskoK&=l_3uX4QtyMyCTz z$y?T0yH5&U)!ZWy$iu)`=9{|653mdKI;Vst0QV|k1poj5 literal 0 HcmV?d00001 diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/delete.png b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/delete.png new file mode 100755 index 0000000000000000000000000000000000000000..c7798043231455c50262219c841092d98fcf3e5c GIT binary patch literal 325 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmUzPnffIy#(?lOI#yL zg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+5i<@_jGX#skoK&=l_3uX4QtyMkj}j zj5;Ug%w4%sf$N#No5|LK!tXaX7w&qnfA<<4W)9`d1L}P*TkGB2czN7rKSlj*mbqf{z+`;#0?e$u43MQ{H-Q;r_RJ#_mHriZ{9ci~7!y{P*wgafU@7C7aGR{NMD8 zkEg!we`~UU{B*?^Y=8Q{mZcO-NKEoVE=MxOMLBlK0_W9ih-Et7yd| z(YTO@?`!=2e+LXrzDQn7W?9Xh@W4Do+4CiXWX0;@LpQVIADA@=TIwsPs^lo1>(Es+ g0M^;q17nyZ^tAS<6j0Hpx6}#uxl6zh5<;kk(NHgjq9%&4oCGd zT;XSCkP=ZPE)YSQ^;NYQ9=!a<@aN}mFus%8&#>$FJqC0yFd|1IC=5g;+5Q`88!$Zi z@Ea~JBf!dV?&<}G*Ux`3B6|_T1t87lCT0w;elsz!akGQ5q9iw1^P+55M!e}@_wL>Q zn|;(6PM$f%pdii#)XV{Ne4%c9AU7rv0=D%>lT<#$Y!juFd&(UVgmpI3;=^sd5#UthH(G@002ovPDHLk FV1gkYtpET3 literal 0 HcmV?d00001 diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/error.png b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/error.png new file mode 100755 index 0000000000000000000000000000000000000000..6631294a5938a38a962c0220b400ea14ed0c6191 GIT binary patch literal 438 zcmV;n0ZIOeP)Ag|Tr{!W2no z#+Qm@4~h8psW?pRHzYg|8NejOAiFv!Uu4Abbb6Ct+J z5l92YzW>Ey!1uohg&_PBgn^;;3y8gTA;dwk@%tZ^F!%!%4A_I2W*LD*C@>J2fixFT z2MfsBuc!tvDtu-5|3idCnQ2hwRHB~=kGq9 z&$i0*9J36UrrvEC|5r`XG(0u}l6Ok65}9Dc36d6pz-$m<|IsGgY%ne{@v0TLRe|c6zf()11c|BAqM^S9 z!o&*PZQ6vr0b>$Vp9p9OL@5*Rx42XqyT0wXU~yW%g;HRg)rtKJ^>lFzskoK&=l_3uX4QtyMyCTz z$y?T0yH5&U)!ZWy$iu)`=9{|653mdKI;Vst0QV|k1poj5 literal 0 HcmV?d00001 diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/new.png b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/new.png new file mode 100755 index 0000000000000000000000000000000000000000..d91b835978fcfb0c4080632205a05160cad79737 GIT binary patch literal 288 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmUzPnffIy#(?lOI#yL zg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+5i=8@^oeIdHvBgVtKnI}_J{HEi%0%_wZHg{S&p)9(pjd#^}f!YZP`@IwE?^dH@dHK_Z;Vc z>-w>2fuivYwywq1va7`%3Qu=T(ffCJ4?|GDntP0n0@K9aJsBa7TYvmDIxIOSOCoV* k=ba^IEFSC>R5-w(Q|oBI^WCO5K-V*Py85}Sb4q9e0MGYyUH||9 literal 0 HcmV?d00001 diff --git a/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/next.png b/lib/vendor/symfony/lib/plugins/sfPropelPlugin/web/images/next.png new file mode 100755 index 0000000000000000000000000000000000000000..d5bd836bea17614b6767a9b61cea74c2dd5cee8f GIT binary patch literal 448 zcmV;x0YCnUP)CJid6Iq4D`a@3lI)CX!o6GgDoT2jvLz24Xfq63zgQTr8__ER&Zr`TK`?581aM qrrKN`RozqZ*JBzblRoDk0R{lQil`%kyy@5g0000i^L8FF;ZpeSm>s zsRM!^whuKtup02~4?+UuB6L1VfI`KYUs4|$o~2p zVKCf)uYVxedl$snAPn+?$4&%)r6Z6As`>sGivi#NA`~JU@(UPZUPydUZ2bO*B@F(c zrNDqah}6djBtn6K$PA>pfI3(})_z4bfKlNq!~Y*53=FJ5Nj4~EWk#^skl0slAo2rp uUSQ;S1BoG!7r#R>zRUz>P@0_q0t^6Dhq7>n--PP`0000PbXFRCwBA z{Qv(y10{fofkHsB0W2`a+?}b!sE7HNG1+}K$u9V><1Whp!bk=oTmS+vQ_%s?b^kS7 zq!|AE{mUT3Xv%Pf;W6=H0Me}NAj + * (c) 2004-2006 Sean Kerr + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfRequest provides methods for manipulating client request information such + * as attributes, and parameters. It is also possible to manipulate the + * request method originally sent by the user. + * + * @package symfony + * @subpackage request + * @author Fabien Potencier + * @author Sean Kerr + * @version SVN: $Id$ + */ +abstract class sfRequest implements ArrayAccess +{ + const GET = 'GET'; + const POST = 'POST'; + const PUT = 'PUT'; + const DELETE = 'DELETE'; + const HEAD = 'HEAD'; + + protected + $dispatcher = null, + $content = null, + $method = null, + $options = array(), + $parameterHolder = null, + $attributeHolder = null; + + /** + * Class constructor. + * + * @see initialize() + */ + public function __construct(sfEventDispatcher $dispatcher, $parameters = array(), $attributes = array(), $options = array()) + { + $this->initialize($dispatcher, $parameters, $attributes, $options); + } + + /** + * Initializes this sfRequest. + * + * Available options: + * + * * logging: Whether to enable logging or not (false by default) + * + * @param sfEventDispatcher $dispatcher An sfEventDispatcher instance + * @param array $parameters An associative array of initialization parameters + * @param array $attributes An associative array of initialization attributes + * @param array $options An associative array of options + * + * @return bool true, if initialization completes successfully, otherwise false + * + * @throws sfInitializationException If an error occurs while initializing this sfRequest + */ + public function initialize(sfEventDispatcher $dispatcher, $parameters = array(), $attributes = array(), $options = array()) + { + $this->dispatcher = $dispatcher; + + $this->options = $options; + + if (!isset($this->options['logging'])) + { + $this->options['logging'] = false; + } + + // initialize parameter and attribute holders + $this->parameterHolder = new sfParameterHolder(); + $this->attributeHolder = new sfParameterHolder(); + + $this->parameterHolder->add($parameters); + $this->attributeHolder->add($attributes); + } + + /** + * Returns the options. + * + * @return array The options. + */ + public function getOptions() + { + return $this->options; + } + + /** + * Extracts parameter values from the request. + * + * @param array $names An indexed array of parameter names to extract + * + * @return array An associative array of parameters and their values. If + * a specified parameter doesn't exist an empty string will + * be returned for its value + */ + public function extractParameters($names) + { + $array = array(); + + $parameters = $this->parameterHolder->getAll(); + foreach ($parameters as $key => $value) + { + if (in_array($key, $names)) + { + $array[$key] = $value; + } + } + + return $array; + } + + /** + * Gets the request method. + * + * @return string The request method + */ + public function getMethod() + { + return $this->method; + } + + /** + * Sets the request method. + * + * @param string $method The request method + * + * @throws sfException - If the specified request method is invalid + */ + public function setMethod($method) + { + if (!in_array(strtoupper($method), array(self::GET, self::POST, self::PUT, self::DELETE, self::HEAD))) + { + throw new sfException(sprintf('Invalid request method: %s.', $method)); + } + + $this->method = strtoupper($method); + } + + /** + * Returns true if the request parameter exists (implements the ArrayAccess interface). + * + * @param string $name The name of the request parameter + * + * @return Boolean true if the request parameter exists, false otherwise + */ + public function offsetExists($name) + { + return $this->hasParameter($name); + } + + /** + * Returns the request parameter associated with the name (implements the ArrayAccess interface). + * + * @param string $name The offset of the value to get + * + * @return mixed The request parameter if exists, null otherwise + */ + public function offsetGet($name) + { + return $this->getParameter($name, false); + } + + /** + * Sets the request parameter associated with the offset (implements the ArrayAccess interface). + * + * @param string $offset The parameter name + * @param string $value The parameter value + */ + public function offsetSet($offset, $value) + { + $this->setParameter($offset, $value); + } + + /** + * Removes a request parameter. + * + * @param string $offset The parameter name + */ + public function offsetUnset($offset) + { + $this->getParameterHolder()->remove($offset); + } + + /** + * Retrieves the parameters for the current request. + * + * @return sfParameterHolder The parameter holder + */ + public function getParameterHolder() + { + return $this->parameterHolder; + } + + /** + * Retrieves the attributes holder. + * + * @return sfParameterHolder The attribute holder + */ + public function getAttributeHolder() + { + return $this->attributeHolder; + } + + /** + * Retrieves an attribute from the current request. + * + * @param string $name Attribute name + * @param string $default Default attribute value + * + * @return mixed An attribute value + */ + public function getAttribute($name, $default = null) + { + return $this->attributeHolder->get($name, $default); + } + + /** + * Indicates whether or not an attribute exist for the current request. + * + * @param string $name Attribute name + * + * @return bool true, if the attribute exists otherwise false + */ + public function hasAttribute($name) + { + return $this->attributeHolder->has($name); + } + + /** + * Sets an attribute for the request. + * + * @param string $name Attribute name + * @param string $value Value for the attribute + * + */ + public function setAttribute($name, $value) + { + $this->attributeHolder->set($name, $value); + } + + /** + * Retrieves a parameter for the current request. + * + * @param string $name Parameter name + * @param string $default Parameter default value + * + */ + public function getParameter($name, $default = null) + { + return $this->parameterHolder->get($name, $default); + } + + /** + * Indicates whether or not a parameter exist for the current request. + * + * @param string $name Parameter name + * + * @return bool true, if the parameter exists otherwise false + */ + public function hasParameter($name) + { + return $this->parameterHolder->has($name); + } + + /** + * Sets a parameter for the current request. + * + * @param string $name Parameter name + * @param string $value Parameter value + * + */ + public function setParameter($name, $value) + { + $this->parameterHolder->set($name, $value); + } + + /** + * Returns the content of the current request. + * + * @return string|Boolean The content or false if none is available + */ + public function getContent() + { + if (null === $this->content) + { + if (0 === strlen(trim($this->content = file_get_contents('php://input')))) + { + $this->content = false; + } + } + + return $this->content; + } + + /** + * Calls methods defined via sfEventDispatcher. + * + * @param string $method The method name + * @param array $arguments The method arguments + * + * @return mixed The returned value of the called method + * + * @throws sfException if call fails + */ + public function __call($method, $arguments) + { + $event = $this->dispatcher->notifyUntil(new sfEvent($this, 'request.method_not_found', array('method' => $method, 'arguments' => $arguments))); + if (!$event->isProcessed()) + { + throw new sfException(sprintf('Call to undefined method %s::%s.', get_class($this), $method)); + } + + return $event->getReturnValue(); + } + + public function __clone() + { + $this->parameterHolder = clone $this->parameterHolder; + $this->attributeHolder = clone $this->attributeHolder; + } +} diff --git a/lib/vendor/symfony/lib/request/.svn/text-base/sfWebRequest.class.php.svn-base b/lib/vendor/symfony/lib/request/.svn/text-base/sfWebRequest.class.php.svn-base new file mode 100644 index 0000000..01fab4b --- /dev/null +++ b/lib/vendor/symfony/lib/request/.svn/text-base/sfWebRequest.class.php.svn-base @@ -0,0 +1,975 @@ + + * (c) 2004-2006 Sean Kerr + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWebRequest class. + * + * This class manages web requests. It parses input from the request and store them as parameters. + * + * @package symfony + * @subpackage request + * @author Fabien Potencier + * @author Sean Kerr + * @version SVN: $Id$ + */ +class sfWebRequest extends sfRequest +{ + const + PORT_HTTP = 80, + PORT_HTTPS = 443; + + protected + $languages = null, + $charsets = null, + $acceptableContentTypes = null, + $pathInfoArray = null, + $relativeUrlRoot = null, + $getParameters = null, + $postParameters = null, + $requestParameters = null, + $formats = array(), + $format = null, + $fixedFileArray = false; + + /** + * Initializes this sfRequest. + * + * Available options: + * + * * formats: The list of supported format and their associated mime-types + * * path_info_key: The path info key (default to PATH_INFO) + * * path_info_array: The path info array (default to SERVER) + * * relative_url_root: The relative URL root + * * http_port: The port to use for HTTP requests + * * https_port: The port to use for HTTPS requests + * + * @param sfEventDispatcher $dispatcher An sfEventDispatcher instance + * @param array $parameters An associative array of initialization parameters + * @param array $attributes An associative array of initialization attributes + * @param array $options An associative array of options + * + * @return bool true, if initialization completes successfully, otherwise false + * + * @throws sfInitializationException If an error occurs while initializing this sfRequest + * + * @see sfRequest + */ + public function initialize(sfEventDispatcher $dispatcher, $parameters = array(), $attributes = array(), $options = array()) + { + $options = array_merge(array( + 'path_info_key' => 'PATH_INFO', + 'path_info_array' => 'SERVER', + 'http_port' => null, + 'https_port' => null, + 'default_format' => null, // to maintain bc + ), $options); + parent::initialize($dispatcher, $parameters, $attributes, $options); + + // GET parameters + $this->getParameters = get_magic_quotes_gpc() ? sfToolkit::stripslashesDeep($_GET) : $_GET; + $this->parameterHolder->add($this->getParameters); + + $postParameters = $_POST; + + if (isset($_SERVER['REQUEST_METHOD'])) + { + switch ($_SERVER['REQUEST_METHOD']) + { + case 'GET': + $this->setMethod(self::GET); + break; + + case 'POST': + if (isset($_POST['sf_method'])) + { + $this->setMethod(strtoupper($_POST['sf_method'])); + unset($postParameters['sf_method']); + } + elseif (isset($_GET['sf_method'])) + { + $this->setMethod(strtoupper($_GET['sf_method'])); + unset($_GET['sf_method']); + } + else + { + $this->setMethod(self::POST); + } + $this->parameterHolder->remove('sf_method'); + break; + + case 'PUT': + $this->setMethod(self::PUT); + if ('application/x-www-form-urlencoded' === $this->getContentType()) + { + parse_str($this->getContent(), $postParameters); + } + break; + + case 'DELETE': + $this->setMethod(self::DELETE); + if ('application/x-www-form-urlencoded' === $this->getContentType()) + { + parse_str($this->getContent(), $postParameters); + } + break; + + case 'HEAD': + $this->setMethod(self::HEAD); + break; + + default: + $this->setMethod(self::GET); + } + } + else + { + // set the default method + $this->setMethod(self::GET); + } + + $this->postParameters = get_magic_quotes_gpc() ? sfToolkit::stripslashesDeep($postParameters) : $postParameters; + $this->parameterHolder->add($this->postParameters); + + if (isset($this->options['formats'])) + { + foreach ($this->options['formats'] as $format => $mimeTypes) + { + $this->setFormat($format, $mimeTypes); + } + } + + // additional parameters + $this->requestParameters = $this->parseRequestParameters(); + $this->parameterHolder->add($this->requestParameters); + + $this->fixParameters(); + } + + /** + * Returns the content type of the current request. + * + * @param Boolean $trimmed If false the full Content-Type header will be returned + * + * @return string + */ + public function getContentType($trim = true) + { + $contentType = $this->getHttpHeader('Content-Type', null); + + if ($trim && false !== $pos = strpos($contentType, ';')) + { + $contentType = substr($contentType, 0, $pos); + } + + return $contentType; + } + + /** + * Retrieves the uniform resource identifier for the current web request. + * + * @return string Unified resource identifier + */ + public function getUri() + { + $pathArray = $this->getPathInfoArray(); + + // for IIS with rewrite module (IIFR, ISAPI Rewrite, ...) + if ('HTTP_X_REWRITE_URL' == $this->options['path_info_key']) + { + $uri = isset($pathArray['HTTP_X_REWRITE_URL']) ? $pathArray['HTTP_X_REWRITE_URL'] : ''; + } + else + { + $uri = isset($pathArray['REQUEST_URI']) ? $pathArray['REQUEST_URI'] : ''; + } + + return $this->isAbsUri() ? $uri : $this->getUriPrefix().$uri; + } + + /** + * See if the client is using absolute uri + * + * @return boolean true, if is absolute uri otherwise false + */ + public function isAbsUri() + { + $pathArray = $this->getPathInfoArray(); + + return isset($pathArray['REQUEST_URI']) ? preg_match('/^http/', $pathArray['REQUEST_URI']) : false; + } + + /** + * Returns Uri prefix, including protocol, hostname and server port. + * + * @return string Uniform resource identifier prefix + */ + public function getUriPrefix() + { + $pathArray = $this->getPathInfoArray(); + $secure = $this->isSecure(); + + $protocol = $secure ? 'https' : 'http'; + $host = $this->getHost(); + $port = null; + + // extract port from host or environment variable + if (false !== strpos($host, ':')) + { + list($host, $port) = explode(':', $host, 2); + } + else if (isset($this->options[$protocol.'_port'])) + { + $port = $this->options[$protocol.'_port']; + } + else if (isset($pathArray['SERVER_PORT'])) + { + $port = $pathArray['SERVER_PORT']; + } + + // cleanup the port based on whether the current request is forwarded from + // a secure one and whether the introspected port matches the standard one + if ($this->isForwardedSecure()) + { + $port = isset($this->options['https_port']) && self::PORT_HTTPS != $this->options['https_port'] ? $this->options['https_port'] : null; + } + elseif (($secure && self::PORT_HTTPS == $port) || (!$secure && self::PORT_HTTP == $port)) + { + $port = null; + } + + return sprintf('%s://%s%s', $protocol, $host, $port ? ':'.$port : ''); + } + + /** + * Retrieves the path info for the current web request. + * + * @return string Path info + */ + public function getPathInfo() + { + $pathInfo = ''; + + $pathArray = $this->getPathInfoArray(); + + // simulate PATH_INFO if needed + $sf_path_info_key = $this->options['path_info_key']; + if (!isset($pathArray[$sf_path_info_key]) || !$pathArray[$sf_path_info_key]) + { + if (isset($pathArray['REQUEST_URI'])) + { + $qs = isset($pathArray['QUERY_STRING']) ? $pathArray['QUERY_STRING'] : ''; + $script_name = $this->getScriptName(); + $uri_prefix = $this->isAbsUri() ? $this->getUriPrefix() : ''; + $pathInfo = preg_replace('/^'.preg_quote($uri_prefix, '/').'/','',$pathArray['REQUEST_URI']); + $pathInfo = preg_replace('/^'.preg_quote($script_name, '/').'/', '', $pathInfo); + $prefix_name = preg_replace('#/[^/]+$#', '', $script_name); + $pathInfo = preg_replace('/^'.preg_quote($prefix_name, '/').'/', '', $pathInfo); + $pathInfo = preg_replace('/\??'.preg_quote($qs, '/').'$/', '', $pathInfo); + } + } + else + { + $pathInfo = $pathArray[$sf_path_info_key]; + if ($relativeUrlRoot = $this->getRelativeUrlRoot()) + { + $pathInfo = preg_replace('/^'.str_replace('/', '\\/', $relativeUrlRoot).'\//', '', $pathInfo); + } + } + + // for IIS + if (isset($_SERVER['SERVER_SOFTWARE']) && false !== stripos($_SERVER['SERVER_SOFTWARE'], 'iis') && $pos = stripos($pathInfo, '.php')) + { + $pathInfo = substr($pathInfo, $pos + 4); + } + + if (!$pathInfo) + { + $pathInfo = '/'; + } + + return $pathInfo; + } + + public function getPathInfoPrefix() + { + $prefix = $this->getRelativeUrlRoot(); + + if (!isset($this->options['no_script_name']) || !$this->options['no_script_name']) + { + $scriptName = $this->getScriptName(); + $prefix = null === $prefix ? $scriptName : $prefix.'/'.basename($scriptName); + } + + return $prefix; + } + + public function getGetParameters() + { + return $this->getParameters; + } + + public function getPostParameters() + { + return $this->postParameters; + } + + public function getRequestParameters() + { + return $this->requestParameters; + } + + public function addRequestParameters($parameters) + { + $this->requestParameters = array_merge($this->requestParameters, $parameters); + $this->getParameterHolder()->add($parameters); + + $this->fixParameters(); + } + + /** + * Returns referer. + * + * @return string + */ + public function getReferer() + { + $pathArray = $this->getPathInfoArray(); + + return isset($pathArray['HTTP_REFERER']) ? $pathArray['HTTP_REFERER'] : ''; + } + + /** + * Returns current host name. + * + * @return string + */ + public function getHost() + { + $pathArray = $this->getPathInfoArray(); + + if (isset($pathArray['HTTP_X_FORWARDED_HOST'])) + { + $elements = explode(',', $pathArray['HTTP_X_FORWARDED_HOST']); + + return trim($elements[count($elements) - 1]); + } + else + { + return isset($pathArray['HTTP_HOST']) ? $pathArray['HTTP_HOST'] : ''; + } + } + + /** + * Returns current script name. + * + * @return string + */ + public function getScriptName() + { + $pathArray = $this->getPathInfoArray(); + + return isset($pathArray['SCRIPT_NAME']) ? $pathArray['SCRIPT_NAME'] : (isset($pathArray['ORIG_SCRIPT_NAME']) ? $pathArray['ORIG_SCRIPT_NAME'] : ''); + } + + /** + * Checks if the request method is the given one. + * + * @param string $method The method name + * + * @return bool true if the current method is the given one, false otherwise + */ + public function isMethod($method) + { + return strtoupper($method) == $this->getMethod(); + } + + /** + * Returns the preferred culture for the current request. + * + * @param array $cultures An array of ordered cultures available + * + * @return string The preferred culture + */ + public function getPreferredCulture(array $cultures = null) + { + $preferredCultures = $this->getLanguages(); + + if (null === $cultures) + { + return isset($preferredCultures[0]) ? $preferredCultures[0] : null; + } + + if (!$preferredCultures) + { + return $cultures[0]; + } + + $preferredCultures = array_values(array_intersect($preferredCultures, $cultures)); + + return isset($preferredCultures[0]) ? $preferredCultures[0] : $cultures[0]; + } + + /** + * Gets a list of languages acceptable by the client browser + * + * @return array Languages ordered in the user browser preferences + */ + public function getLanguages() + { + if ($this->languages) + { + return $this->languages; + } + + if (!isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) + { + return array(); + } + + $languages = $this->splitHttpAcceptHeader($_SERVER['HTTP_ACCEPT_LANGUAGE']); + foreach ($languages as $lang) + { + if (strstr($lang, '-')) + { + $codes = explode('-', $lang); + if ($codes[0] == 'i') + { + // Language not listed in ISO 639 that are not variants + // of any listed language, which can be registerd with the + // i-prefix, such as i-cherokee + if (count($codes) > 1) + { + $lang = $codes[1]; + } + } + else + { + for ($i = 0, $max = count($codes); $i < $max; $i++) + { + if ($i == 0) + { + $lang = strtolower($codes[0]); + } + else + { + $lang .= '_'.strtoupper($codes[$i]); + } + } + } + } + + $this->languages[] = $lang; + } + + return $this->languages; + } + + /** + * Gets a list of charsets acceptable by the client browser. + * + * @return array List of charsets in preferable order + */ + public function getCharsets() + { + if ($this->charsets) + { + return $this->charsets; + } + + if (!isset($_SERVER['HTTP_ACCEPT_CHARSET'])) + { + return array(); + } + + $this->charsets = $this->splitHttpAcceptHeader($_SERVER['HTTP_ACCEPT_CHARSET']); + + return $this->charsets; + } + + /** + * Gets a list of content types acceptable by the client browser + * + * @return array Languages ordered in the user browser preferences + */ + public function getAcceptableContentTypes() + { + if ($this->acceptableContentTypes) + { + return $this->acceptableContentTypes; + } + + if (!isset($_SERVER['HTTP_ACCEPT'])) + { + return array(); + } + + $this->acceptableContentTypes = $this->splitHttpAcceptHeader($_SERVER['HTTP_ACCEPT']); + + return $this->acceptableContentTypes; + } + + /** + * Returns true if the request is a XMLHttpRequest. + * + * It works if your JavaScript library set an X-Requested-With HTTP header. + * Works with Prototype, Mootools, jQuery, and perhaps others. + * + * @return bool true if the request is an XMLHttpRequest, false otherwise + */ + public function isXmlHttpRequest() + { + return ($this->getHttpHeader('X_REQUESTED_WITH') == 'XMLHttpRequest'); + } + + public function getHttpHeader($name, $prefix = 'http') + { + if ($prefix) + { + $prefix = strtoupper($prefix).'_'; + } + + $name = $prefix.strtoupper(strtr($name, '-', '_')); + + $pathArray = $this->getPathInfoArray(); + + return isset($pathArray[$name]) ? sfToolkit::stripslashesDeep($pathArray[$name]) : null; + } + + /** + * Gets a cookie value. + * + * @param string $name Cookie name + * @param string $defaultValue Default value returned when no cookie with given name is found + * + * @return mixed + */ + public function getCookie($name, $defaultValue = null) + { + $retval = $defaultValue; + + if (isset($_COOKIE[$name])) + { + $retval = get_magic_quotes_gpc() ? sfToolkit::stripslashesDeep($_COOKIE[$name]) : $_COOKIE[$name]; + } + + return $retval; + } + + /** + * Returns true if the current or forwarded request is secure (HTTPS protocol). + * + * @return boolean + */ + public function isSecure() + { + $pathArray = $this->getPathInfoArray(); + + return + (isset($pathArray['HTTPS']) && ('on' == strtolower($pathArray['HTTPS']) || 1 == $pathArray['HTTPS'])) + || + (isset($pathArray['HTTP_SSL_HTTPS']) && ('on' == strtolower($pathArray['HTTP_SSL_HTTPS']) || 1 == $pathArray['HTTP_SSL_HTTPS'])) + || + $this->isForwardedSecure() + ; + } + + /** + * Returns true if the current request is forwarded from a request that is secure. + * + * @return boolean + */ + protected function isForwardedSecure() + { + $pathArray = $this->getPathInfoArray(); + + return isset($pathArray['HTTP_X_FORWARDED_PROTO']) && 'https' == strtolower($pathArray['HTTP_X_FORWARDED_PROTO']); + } + + /** + * Retrieves relative root url. + * + * @return string URL + */ + public function getRelativeUrlRoot() + { + if (null === $this->relativeUrlRoot) + { + if (!isset($this->options['relative_url_root'])) + { + $this->relativeUrlRoot = preg_replace('#/[^/]+\.php5?$#', '', $this->getScriptName()); + } + else + { + $this->relativeUrlRoot = $this->options['relative_url_root']; + } + } + + return $this->relativeUrlRoot; + } + + /** + * Sets the relative root url for the current web request. + * + * @param string $value Value for the url + */ + public function setRelativeUrlRoot($value) + { + $this->relativeUrlRoot = $value; + } + + /** + * Splits an HTTP header for the current web request. + * + * @param string $header Header to split + */ + public function splitHttpAcceptHeader($header) + { + $values = array(); + foreach (array_filter(explode(',', $header)) as $value) + { + // Cut off any q-value that might come after a semi-colon + if ($pos = strpos($value, ';')) + { + $q = (float) trim(substr($value, strpos($value, '=') + 1)); + $value = substr($value, 0, $pos); + } + else + { + $q = 1; + } + + if (0 < $q) + { + $values[trim($value)] = $q; + } + } + + arsort($values); + + return array_keys($values); + } + + /** + * Returns the array that contains all request information ($_SERVER or $_ENV). + * + * This information is stored in the path_info_array option. + * + * @return array Path information + */ + public function getPathInfoArray() + { + if (!$this->pathInfoArray) + { + // parse PATH_INFO + switch ($this->options['path_info_array']) + { + case 'SERVER': + $this->pathInfoArray =& $_SERVER; + break; + + case 'ENV': + default: + $this->pathInfoArray =& $_ENV; + } + } + + return $this->pathInfoArray; + } + + /** + * Gets the mime type associated with the format. + * + * @param string $format The format + * + * @return string The associated mime type (null if not found) + */ + public function getMimeType($format) + { + return isset($this->formats[$format]) ? $this->formats[$format][0] : null; + } + + /** + * Gets the format associated with the mime type. + * + * @param string $mimeType The associated mime type + * + * @return string The format (null if not found) + */ + public function getFormat($mimeType) + { + foreach ($this->formats as $format => $mimeTypes) + { + if (in_array($mimeType, $mimeTypes)) + { + return $format; + } + } + + return null; + } + + /** + * Associates a format with mime types. + * + * @param string $format The format + * @param string|array $mimeTypes The associated mime types (the preferred one must be the first as it will be used as the content type) + */ + public function setFormat($format, $mimeTypes) + { + $this->formats[$format] = is_array($mimeTypes) ? $mimeTypes : array($mimeTypes); + } + + /** + * Sets the request format. + * + * @param string $format The request format + */ + public function setRequestFormat($format) + { + $this->format = $format; + } + + /** + * Gets the request format. + * + * Here is the process to determine the format: + * + * * format defined by the user (with setRequestFormat()) + * * sf_format request parameter + * * default format from factories + * + * @return string The request format + */ + public function getRequestFormat() + { + if (null === $this->format) + { + $this->setRequestFormat($this->getParameter('sf_format', $this->options['default_format'])); + } + + return $this->format; + } + + /** + * Retrieves an array of files. + * + * @param string $key A key + * @return array An associative array of files + */ + public function getFiles($key = null) + { + if (false === $this->fixedFileArray) + { + $this->fixedFileArray = self::convertFileInformation($_FILES); + } + + return null === $key ? $this->fixedFileArray : (isset($this->fixedFileArray[$key]) ? $this->fixedFileArray[$key] : array()); + } + + /** + * Converts uploaded file array to a format following the $_GET and $POST naming convention. + * + * It's safe to pass an already converted array, in which case this method just returns the original array unmodified. + * + * @param array $taintedFiles An array representing uploaded file information + * + * @return array An array of re-ordered uploaded file information + */ + static public function convertFileInformation(array $taintedFiles) + { + $files = array(); + foreach ($taintedFiles as $key => $data) + { + $files[$key] = self::fixPhpFilesArray($data); + } + + return $files; + } + + static protected function fixPhpFilesArray($data) + { + $fileKeys = array('error', 'name', 'size', 'tmp_name', 'type'); + $keys = array_keys($data); + sort($keys); + + if ($fileKeys != $keys || !isset($data['name']) || !is_array($data['name'])) + { + return $data; + } + + $files = $data; + foreach ($fileKeys as $k) + { + unset($files[$k]); + } + foreach (array_keys($data['name']) as $key) + { + $files[$key] = self::fixPhpFilesArray(array( + 'error' => $data['error'][$key], + 'name' => $data['name'][$key], + 'type' => $data['type'][$key], + 'tmp_name' => $data['tmp_name'][$key], + 'size' => $data['size'][$key], + )); + } + + return $files; + } + + /** + * Returns the value of a GET parameter. + * + * @param string $name The GET parameter name + * @param string $default The default value + * + * @return string The GET parameter value + */ + public function getGetParameter($name, $default = null) + { + if (isset($this->getParameters[$name])) + { + return $this->getParameters[$name]; + } + else + { + return sfToolkit::getArrayValueForPath($this->getParameters, $name, $default); + } + } + + /** + * Returns the value of a POST parameter. + * + * @param string $name The POST parameter name + * @param string $default The default value + * + * @return string The POST parameter value + */ + public function getPostParameter($name, $default = null) + { + if (isset($this->postParameters[$name])) + { + return $this->postParameters[$name]; + } + else + { + return sfToolkit::getArrayValueForPath($this->postParameters, $name, $default); + } + } + + /** + * Returns the value of a parameter passed as a URL segment. + * + * @param string $name The parameter name + * @param string $default The default value + * + * @return string The parameter value + */ + public function getUrlParameter($name, $default = null) + { + if (isset($this->requestParameters[$name])) + { + return $this->requestParameters[$name]; + } + else + { + return sfToolkit::getArrayValueForPath($this->requestParameters, $name, $default); + } + } + + /** + * Returns the remote IP address that made the request. + * + * @return string The remote IP address + */ + public function getRemoteAddress() + { + $pathInfo = $this->getPathInfoArray(); + + return $pathInfo['REMOTE_ADDR']; + } + + /** + * Returns an array containing a list of IPs, the first being the client address + * and the others the addresses of each proxy that passed the request. The address + * for the last proxy can be retrieved via getRemoteAddress(). + * + * This method returns null if no proxy passed this request. Note that some proxies + * do not use this header, and act as if they were the client. + * + * @return string|null An array of IP from the client and the proxies that passed + * the request, or null if no proxy was used. + */ + public function getForwardedFor() + { + $pathInfo = $this->getPathInfoArray(); + + if (empty($pathInfo['HTTP_X_FORWARDED_FOR'])) + { + return null; + } + + return explode(', ', $pathInfo['HTTP_X_FORWARDED_FOR']); + } + + public function checkCSRFProtection() + { + $form = new BaseForm(); + $form->bind($form->isCSRFProtected() ? array($form->getCSRFFieldName() => $this->getParameter($form->getCSRFFieldName())) : array()); + + if (!$form->isValid()) + { + throw $form->getErrorSchema(); + } + } + + /** + * Parses the request parameters. + * + * This method notifies the request.filter_parameters event. + * + * @return array An array of request parameters. + */ + protected function parseRequestParameters() + { + return $this->dispatcher->filter(new sfEvent($this, 'request.filter_parameters', $this->getRequestContext()), array())->getReturnValue(); + } + + /** + * Returns the request context used. + * + * @return array An array of values representing the current request + */ + public function getRequestContext() + { + return array( + 'path_info' => $this->getPathInfo(), + 'prefix' => $this->getPathInfoPrefix(), + 'method' => $this->getMethod(), + 'format' => $this->getRequestFormat(), + 'host' => $this->getHost(), + 'is_secure' => $this->isSecure(), + 'request_uri' => $this->getUri(), + ); + } + + protected function fixParameters() + { + // move symfony parameters to attributes (parameters prefixed with _sf_) + foreach ($this->parameterHolder->getAll() as $key => $value) + { + if (0 === stripos($key, '_sf_')) + { + $this->parameterHolder->remove($key); + $this->setAttribute(substr($key, 1), $value); + } + } + } +} diff --git a/lib/vendor/symfony/lib/request/sfRequest.class.php b/lib/vendor/symfony/lib/request/sfRequest.class.php new file mode 100644 index 0000000..adb01f4 --- /dev/null +++ b/lib/vendor/symfony/lib/request/sfRequest.class.php @@ -0,0 +1,328 @@ + + * (c) 2004-2006 Sean Kerr + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfRequest provides methods for manipulating client request information such + * as attributes, and parameters. It is also possible to manipulate the + * request method originally sent by the user. + * + * @package symfony + * @subpackage request + * @author Fabien Potencier + * @author Sean Kerr + * @version SVN: $Id: sfRequest.class.php 28641 2010-03-21 10:20:44Z fabien $ + */ +abstract class sfRequest implements ArrayAccess +{ + const GET = 'GET'; + const POST = 'POST'; + const PUT = 'PUT'; + const DELETE = 'DELETE'; + const HEAD = 'HEAD'; + + protected + $dispatcher = null, + $content = null, + $method = null, + $options = array(), + $parameterHolder = null, + $attributeHolder = null; + + /** + * Class constructor. + * + * @see initialize() + */ + public function __construct(sfEventDispatcher $dispatcher, $parameters = array(), $attributes = array(), $options = array()) + { + $this->initialize($dispatcher, $parameters, $attributes, $options); + } + + /** + * Initializes this sfRequest. + * + * Available options: + * + * * logging: Whether to enable logging or not (false by default) + * + * @param sfEventDispatcher $dispatcher An sfEventDispatcher instance + * @param array $parameters An associative array of initialization parameters + * @param array $attributes An associative array of initialization attributes + * @param array $options An associative array of options + * + * @return bool true, if initialization completes successfully, otherwise false + * + * @throws sfInitializationException If an error occurs while initializing this sfRequest + */ + public function initialize(sfEventDispatcher $dispatcher, $parameters = array(), $attributes = array(), $options = array()) + { + $this->dispatcher = $dispatcher; + + $this->options = $options; + + if (!isset($this->options['logging'])) + { + $this->options['logging'] = false; + } + + // initialize parameter and attribute holders + $this->parameterHolder = new sfParameterHolder(); + $this->attributeHolder = new sfParameterHolder(); + + $this->parameterHolder->add($parameters); + $this->attributeHolder->add($attributes); + } + + /** + * Returns the options. + * + * @return array The options. + */ + public function getOptions() + { + return $this->options; + } + + /** + * Extracts parameter values from the request. + * + * @param array $names An indexed array of parameter names to extract + * + * @return array An associative array of parameters and their values. If + * a specified parameter doesn't exist an empty string will + * be returned for its value + */ + public function extractParameters($names) + { + $array = array(); + + $parameters = $this->parameterHolder->getAll(); + foreach ($parameters as $key => $value) + { + if (in_array($key, $names)) + { + $array[$key] = $value; + } + } + + return $array; + } + + /** + * Gets the request method. + * + * @return string The request method + */ + public function getMethod() + { + return $this->method; + } + + /** + * Sets the request method. + * + * @param string $method The request method + * + * @throws sfException - If the specified request method is invalid + */ + public function setMethod($method) + { + if (!in_array(strtoupper($method), array(self::GET, self::POST, self::PUT, self::DELETE, self::HEAD))) + { + throw new sfException(sprintf('Invalid request method: %s.', $method)); + } + + $this->method = strtoupper($method); + } + + /** + * Returns true if the request parameter exists (implements the ArrayAccess interface). + * + * @param string $name The name of the request parameter + * + * @return Boolean true if the request parameter exists, false otherwise + */ + public function offsetExists($name) + { + return $this->hasParameter($name); + } + + /** + * Returns the request parameter associated with the name (implements the ArrayAccess interface). + * + * @param string $name The offset of the value to get + * + * @return mixed The request parameter if exists, null otherwise + */ + public function offsetGet($name) + { + return $this->getParameter($name, false); + } + + /** + * Sets the request parameter associated with the offset (implements the ArrayAccess interface). + * + * @param string $offset The parameter name + * @param string $value The parameter value + */ + public function offsetSet($offset, $value) + { + $this->setParameter($offset, $value); + } + + /** + * Removes a request parameter. + * + * @param string $offset The parameter name + */ + public function offsetUnset($offset) + { + $this->getParameterHolder()->remove($offset); + } + + /** + * Retrieves the parameters for the current request. + * + * @return sfParameterHolder The parameter holder + */ + public function getParameterHolder() + { + return $this->parameterHolder; + } + + /** + * Retrieves the attributes holder. + * + * @return sfParameterHolder The attribute holder + */ + public function getAttributeHolder() + { + return $this->attributeHolder; + } + + /** + * Retrieves an attribute from the current request. + * + * @param string $name Attribute name + * @param string $default Default attribute value + * + * @return mixed An attribute value + */ + public function getAttribute($name, $default = null) + { + return $this->attributeHolder->get($name, $default); + } + + /** + * Indicates whether or not an attribute exist for the current request. + * + * @param string $name Attribute name + * + * @return bool true, if the attribute exists otherwise false + */ + public function hasAttribute($name) + { + return $this->attributeHolder->has($name); + } + + /** + * Sets an attribute for the request. + * + * @param string $name Attribute name + * @param string $value Value for the attribute + * + */ + public function setAttribute($name, $value) + { + $this->attributeHolder->set($name, $value); + } + + /** + * Retrieves a parameter for the current request. + * + * @param string $name Parameter name + * @param string $default Parameter default value + * + */ + public function getParameter($name, $default = null) + { + return $this->parameterHolder->get($name, $default); + } + + /** + * Indicates whether or not a parameter exist for the current request. + * + * @param string $name Parameter name + * + * @return bool true, if the parameter exists otherwise false + */ + public function hasParameter($name) + { + return $this->parameterHolder->has($name); + } + + /** + * Sets a parameter for the current request. + * + * @param string $name Parameter name + * @param string $value Parameter value + * + */ + public function setParameter($name, $value) + { + $this->parameterHolder->set($name, $value); + } + + /** + * Returns the content of the current request. + * + * @return string|Boolean The content or false if none is available + */ + public function getContent() + { + if (null === $this->content) + { + if (0 === strlen(trim($this->content = file_get_contents('php://input')))) + { + $this->content = false; + } + } + + return $this->content; + } + + /** + * Calls methods defined via sfEventDispatcher. + * + * @param string $method The method name + * @param array $arguments The method arguments + * + * @return mixed The returned value of the called method + * + * @throws sfException if call fails + */ + public function __call($method, $arguments) + { + $event = $this->dispatcher->notifyUntil(new sfEvent($this, 'request.method_not_found', array('method' => $method, 'arguments' => $arguments))); + if (!$event->isProcessed()) + { + throw new sfException(sprintf('Call to undefined method %s::%s.', get_class($this), $method)); + } + + return $event->getReturnValue(); + } + + public function __clone() + { + $this->parameterHolder = clone $this->parameterHolder; + $this->attributeHolder = clone $this->attributeHolder; + } +} diff --git a/lib/vendor/symfony/lib/request/sfWebRequest.class.php b/lib/vendor/symfony/lib/request/sfWebRequest.class.php new file mode 100644 index 0000000..2501179 --- /dev/null +++ b/lib/vendor/symfony/lib/request/sfWebRequest.class.php @@ -0,0 +1,975 @@ + + * (c) 2004-2006 Sean Kerr + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWebRequest class. + * + * This class manages web requests. It parses input from the request and store them as parameters. + * + * @package symfony + * @subpackage request + * @author Fabien Potencier + * @author Sean Kerr + * @version SVN: $Id: sfWebRequest.class.php 32729 2011-07-05 15:23:04Z www-data $ + */ +class sfWebRequest extends sfRequest +{ + const + PORT_HTTP = 80, + PORT_HTTPS = 443; + + protected + $languages = null, + $charsets = null, + $acceptableContentTypes = null, + $pathInfoArray = null, + $relativeUrlRoot = null, + $getParameters = null, + $postParameters = null, + $requestParameters = null, + $formats = array(), + $format = null, + $fixedFileArray = false; + + /** + * Initializes this sfRequest. + * + * Available options: + * + * * formats: The list of supported format and their associated mime-types + * * path_info_key: The path info key (default to PATH_INFO) + * * path_info_array: The path info array (default to SERVER) + * * relative_url_root: The relative URL root + * * http_port: The port to use for HTTP requests + * * https_port: The port to use for HTTPS requests + * + * @param sfEventDispatcher $dispatcher An sfEventDispatcher instance + * @param array $parameters An associative array of initialization parameters + * @param array $attributes An associative array of initialization attributes + * @param array $options An associative array of options + * + * @return bool true, if initialization completes successfully, otherwise false + * + * @throws sfInitializationException If an error occurs while initializing this sfRequest + * + * @see sfRequest + */ + public function initialize(sfEventDispatcher $dispatcher, $parameters = array(), $attributes = array(), $options = array()) + { + $options = array_merge(array( + 'path_info_key' => 'PATH_INFO', + 'path_info_array' => 'SERVER', + 'http_port' => null, + 'https_port' => null, + 'default_format' => null, // to maintain bc + ), $options); + parent::initialize($dispatcher, $parameters, $attributes, $options); + + // GET parameters + $this->getParameters = get_magic_quotes_gpc() ? sfToolkit::stripslashesDeep($_GET) : $_GET; + $this->parameterHolder->add($this->getParameters); + + $postParameters = $_POST; + + if (isset($_SERVER['REQUEST_METHOD'])) + { + switch ($_SERVER['REQUEST_METHOD']) + { + case 'GET': + $this->setMethod(self::GET); + break; + + case 'POST': + if (isset($_POST['sf_method'])) + { + $this->setMethod(strtoupper($_POST['sf_method'])); + unset($postParameters['sf_method']); + } + elseif (isset($_GET['sf_method'])) + { + $this->setMethod(strtoupper($_GET['sf_method'])); + unset($_GET['sf_method']); + } + else + { + $this->setMethod(self::POST); + } + $this->parameterHolder->remove('sf_method'); + break; + + case 'PUT': + $this->setMethod(self::PUT); + if ('application/x-www-form-urlencoded' === $this->getContentType()) + { + parse_str($this->getContent(), $postParameters); + } + break; + + case 'DELETE': + $this->setMethod(self::DELETE); + if ('application/x-www-form-urlencoded' === $this->getContentType()) + { + parse_str($this->getContent(), $postParameters); + } + break; + + case 'HEAD': + $this->setMethod(self::HEAD); + break; + + default: + $this->setMethod(self::GET); + } + } + else + { + // set the default method + $this->setMethod(self::GET); + } + + $this->postParameters = get_magic_quotes_gpc() ? sfToolkit::stripslashesDeep($postParameters) : $postParameters; + $this->parameterHolder->add($this->postParameters); + + if (isset($this->options['formats'])) + { + foreach ($this->options['formats'] as $format => $mimeTypes) + { + $this->setFormat($format, $mimeTypes); + } + } + + // additional parameters + $this->requestParameters = $this->parseRequestParameters(); + $this->parameterHolder->add($this->requestParameters); + + $this->fixParameters(); + } + + /** + * Returns the content type of the current request. + * + * @param Boolean $trimmed If false the full Content-Type header will be returned + * + * @return string + */ + public function getContentType($trim = true) + { + $contentType = $this->getHttpHeader('Content-Type', null); + + if ($trim && false !== $pos = strpos($contentType, ';')) + { + $contentType = substr($contentType, 0, $pos); + } + + return $contentType; + } + + /** + * Retrieves the uniform resource identifier for the current web request. + * + * @return string Unified resource identifier + */ + public function getUri() + { + $pathArray = $this->getPathInfoArray(); + + // for IIS with rewrite module (IIFR, ISAPI Rewrite, ...) + if ('HTTP_X_REWRITE_URL' == $this->options['path_info_key']) + { + $uri = isset($pathArray['HTTP_X_REWRITE_URL']) ? $pathArray['HTTP_X_REWRITE_URL'] : ''; + } + else + { + $uri = isset($pathArray['REQUEST_URI']) ? $pathArray['REQUEST_URI'] : ''; + } + + return $this->isAbsUri() ? $uri : $this->getUriPrefix().$uri; + } + + /** + * See if the client is using absolute uri + * + * @return boolean true, if is absolute uri otherwise false + */ + public function isAbsUri() + { + $pathArray = $this->getPathInfoArray(); + + return isset($pathArray['REQUEST_URI']) ? preg_match('/^http/', $pathArray['REQUEST_URI']) : false; + } + + /** + * Returns Uri prefix, including protocol, hostname and server port. + * + * @return string Uniform resource identifier prefix + */ + public function getUriPrefix() + { + $pathArray = $this->getPathInfoArray(); + $secure = $this->isSecure(); + + $protocol = $secure ? 'https' : 'http'; + $host = $this->getHost(); + $port = null; + + // extract port from host or environment variable + if (false !== strpos($host, ':')) + { + list($host, $port) = explode(':', $host, 2); + } + else if (isset($this->options[$protocol.'_port'])) + { + $port = $this->options[$protocol.'_port']; + } + else if (isset($pathArray['SERVER_PORT'])) + { + $port = $pathArray['SERVER_PORT']; + } + + // cleanup the port based on whether the current request is forwarded from + // a secure one and whether the introspected port matches the standard one + if ($this->isForwardedSecure()) + { + $port = isset($this->options['https_port']) && self::PORT_HTTPS != $this->options['https_port'] ? $this->options['https_port'] : null; + } + elseif (($secure && self::PORT_HTTPS == $port) || (!$secure && self::PORT_HTTP == $port)) + { + $port = null; + } + + return sprintf('%s://%s%s', $protocol, $host, $port ? ':'.$port : ''); + } + + /** + * Retrieves the path info for the current web request. + * + * @return string Path info + */ + public function getPathInfo() + { + $pathInfo = ''; + + $pathArray = $this->getPathInfoArray(); + + // simulate PATH_INFO if needed + $sf_path_info_key = $this->options['path_info_key']; + if (!isset($pathArray[$sf_path_info_key]) || !$pathArray[$sf_path_info_key]) + { + if (isset($pathArray['REQUEST_URI'])) + { + $qs = isset($pathArray['QUERY_STRING']) ? $pathArray['QUERY_STRING'] : ''; + $script_name = $this->getScriptName(); + $uri_prefix = $this->isAbsUri() ? $this->getUriPrefix() : ''; + $pathInfo = preg_replace('/^'.preg_quote($uri_prefix, '/').'/','',$pathArray['REQUEST_URI']); + $pathInfo = preg_replace('/^'.preg_quote($script_name, '/').'/', '', $pathInfo); + $prefix_name = preg_replace('#/[^/]+$#', '', $script_name); + $pathInfo = preg_replace('/^'.preg_quote($prefix_name, '/').'/', '', $pathInfo); + $pathInfo = preg_replace('/\??'.preg_quote($qs, '/').'$/', '', $pathInfo); + } + } + else + { + $pathInfo = $pathArray[$sf_path_info_key]; + if ($relativeUrlRoot = $this->getRelativeUrlRoot()) + { + $pathInfo = preg_replace('/^'.str_replace('/', '\\/', $relativeUrlRoot).'\//', '', $pathInfo); + } + } + + // for IIS + if (isset($_SERVER['SERVER_SOFTWARE']) && false !== stripos($_SERVER['SERVER_SOFTWARE'], 'iis') && $pos = stripos($pathInfo, '.php')) + { + $pathInfo = substr($pathInfo, $pos + 4); + } + + if (!$pathInfo) + { + $pathInfo = '/'; + } + + return $pathInfo; + } + + public function getPathInfoPrefix() + { + $prefix = $this->getRelativeUrlRoot(); + + if (!isset($this->options['no_script_name']) || !$this->options['no_script_name']) + { + $scriptName = $this->getScriptName(); + $prefix = null === $prefix ? $scriptName : $prefix.'/'.basename($scriptName); + } + + return $prefix; + } + + public function getGetParameters() + { + return $this->getParameters; + } + + public function getPostParameters() + { + return $this->postParameters; + } + + public function getRequestParameters() + { + return $this->requestParameters; + } + + public function addRequestParameters($parameters) + { + $this->requestParameters = array_merge($this->requestParameters, $parameters); + $this->getParameterHolder()->add($parameters); + + $this->fixParameters(); + } + + /** + * Returns referer. + * + * @return string + */ + public function getReferer() + { + $pathArray = $this->getPathInfoArray(); + + return isset($pathArray['HTTP_REFERER']) ? $pathArray['HTTP_REFERER'] : ''; + } + + /** + * Returns current host name. + * + * @return string + */ + public function getHost() + { + $pathArray = $this->getPathInfoArray(); + + if (isset($pathArray['HTTP_X_FORWARDED_HOST'])) + { + $elements = explode(',', $pathArray['HTTP_X_FORWARDED_HOST']); + + return trim($elements[count($elements) - 1]); + } + else + { + return isset($pathArray['HTTP_HOST']) ? $pathArray['HTTP_HOST'] : ''; + } + } + + /** + * Returns current script name. + * + * @return string + */ + public function getScriptName() + { + $pathArray = $this->getPathInfoArray(); + + return isset($pathArray['SCRIPT_NAME']) ? $pathArray['SCRIPT_NAME'] : (isset($pathArray['ORIG_SCRIPT_NAME']) ? $pathArray['ORIG_SCRIPT_NAME'] : ''); + } + + /** + * Checks if the request method is the given one. + * + * @param string $method The method name + * + * @return bool true if the current method is the given one, false otherwise + */ + public function isMethod($method) + { + return strtoupper($method) == $this->getMethod(); + } + + /** + * Returns the preferred culture for the current request. + * + * @param array $cultures An array of ordered cultures available + * + * @return string The preferred culture + */ + public function getPreferredCulture(array $cultures = null) + { + $preferredCultures = $this->getLanguages(); + + if (null === $cultures) + { + return isset($preferredCultures[0]) ? $preferredCultures[0] : null; + } + + if (!$preferredCultures) + { + return $cultures[0]; + } + + $preferredCultures = array_values(array_intersect($preferredCultures, $cultures)); + + return isset($preferredCultures[0]) ? $preferredCultures[0] : $cultures[0]; + } + + /** + * Gets a list of languages acceptable by the client browser + * + * @return array Languages ordered in the user browser preferences + */ + public function getLanguages() + { + if ($this->languages) + { + return $this->languages; + } + + if (!isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) + { + return array(); + } + + $languages = $this->splitHttpAcceptHeader($_SERVER['HTTP_ACCEPT_LANGUAGE']); + foreach ($languages as $lang) + { + if (strstr($lang, '-')) + { + $codes = explode('-', $lang); + if ($codes[0] == 'i') + { + // Language not listed in ISO 639 that are not variants + // of any listed language, which can be registerd with the + // i-prefix, such as i-cherokee + if (count($codes) > 1) + { + $lang = $codes[1]; + } + } + else + { + for ($i = 0, $max = count($codes); $i < $max; $i++) + { + if ($i == 0) + { + $lang = strtolower($codes[0]); + } + else + { + $lang .= '_'.strtoupper($codes[$i]); + } + } + } + } + + $this->languages[] = $lang; + } + + return $this->languages; + } + + /** + * Gets a list of charsets acceptable by the client browser. + * + * @return array List of charsets in preferable order + */ + public function getCharsets() + { + if ($this->charsets) + { + return $this->charsets; + } + + if (!isset($_SERVER['HTTP_ACCEPT_CHARSET'])) + { + return array(); + } + + $this->charsets = $this->splitHttpAcceptHeader($_SERVER['HTTP_ACCEPT_CHARSET']); + + return $this->charsets; + } + + /** + * Gets a list of content types acceptable by the client browser + * + * @return array Languages ordered in the user browser preferences + */ + public function getAcceptableContentTypes() + { + if ($this->acceptableContentTypes) + { + return $this->acceptableContentTypes; + } + + if (!isset($_SERVER['HTTP_ACCEPT'])) + { + return array(); + } + + $this->acceptableContentTypes = $this->splitHttpAcceptHeader($_SERVER['HTTP_ACCEPT']); + + return $this->acceptableContentTypes; + } + + /** + * Returns true if the request is a XMLHttpRequest. + * + * It works if your JavaScript library set an X-Requested-With HTTP header. + * Works with Prototype, Mootools, jQuery, and perhaps others. + * + * @return bool true if the request is an XMLHttpRequest, false otherwise + */ + public function isXmlHttpRequest() + { + return ($this->getHttpHeader('X_REQUESTED_WITH') == 'XMLHttpRequest'); + } + + public function getHttpHeader($name, $prefix = 'http') + { + if ($prefix) + { + $prefix = strtoupper($prefix).'_'; + } + + $name = $prefix.strtoupper(strtr($name, '-', '_')); + + $pathArray = $this->getPathInfoArray(); + + return isset($pathArray[$name]) ? sfToolkit::stripslashesDeep($pathArray[$name]) : null; + } + + /** + * Gets a cookie value. + * + * @param string $name Cookie name + * @param string $defaultValue Default value returned when no cookie with given name is found + * + * @return mixed + */ + public function getCookie($name, $defaultValue = null) + { + $retval = $defaultValue; + + if (isset($_COOKIE[$name])) + { + $retval = get_magic_quotes_gpc() ? sfToolkit::stripslashesDeep($_COOKIE[$name]) : $_COOKIE[$name]; + } + + return $retval; + } + + /** + * Returns true if the current or forwarded request is secure (HTTPS protocol). + * + * @return boolean + */ + public function isSecure() + { + $pathArray = $this->getPathInfoArray(); + + return + (isset($pathArray['HTTPS']) && ('on' == strtolower($pathArray['HTTPS']) || 1 == $pathArray['HTTPS'])) + || + (isset($pathArray['HTTP_SSL_HTTPS']) && ('on' == strtolower($pathArray['HTTP_SSL_HTTPS']) || 1 == $pathArray['HTTP_SSL_HTTPS'])) + || + $this->isForwardedSecure() + ; + } + + /** + * Returns true if the current request is forwarded from a request that is secure. + * + * @return boolean + */ + protected function isForwardedSecure() + { + $pathArray = $this->getPathInfoArray(); + + return isset($pathArray['HTTP_X_FORWARDED_PROTO']) && 'https' == strtolower($pathArray['HTTP_X_FORWARDED_PROTO']); + } + + /** + * Retrieves relative root url. + * + * @return string URL + */ + public function getRelativeUrlRoot() + { + if (null === $this->relativeUrlRoot) + { + if (!isset($this->options['relative_url_root'])) + { + $this->relativeUrlRoot = preg_replace('#/[^/]+\.php5?$#', '', $this->getScriptName()); + } + else + { + $this->relativeUrlRoot = $this->options['relative_url_root']; + } + } + + return $this->relativeUrlRoot; + } + + /** + * Sets the relative root url for the current web request. + * + * @param string $value Value for the url + */ + public function setRelativeUrlRoot($value) + { + $this->relativeUrlRoot = $value; + } + + /** + * Splits an HTTP header for the current web request. + * + * @param string $header Header to split + */ + public function splitHttpAcceptHeader($header) + { + $values = array(); + foreach (array_filter(explode(',', $header)) as $value) + { + // Cut off any q-value that might come after a semi-colon + if ($pos = strpos($value, ';')) + { + $q = (float) trim(substr($value, strpos($value, '=') + 1)); + $value = substr($value, 0, $pos); + } + else + { + $q = 1; + } + + if (0 < $q) + { + $values[trim($value)] = $q; + } + } + + arsort($values); + + return array_keys($values); + } + + /** + * Returns the array that contains all request information ($_SERVER or $_ENV). + * + * This information is stored in the path_info_array option. + * + * @return array Path information + */ + public function getPathInfoArray() + { + if (!$this->pathInfoArray) + { + // parse PATH_INFO + switch ($this->options['path_info_array']) + { + case 'SERVER': + $this->pathInfoArray =& $_SERVER; + break; + + case 'ENV': + default: + $this->pathInfoArray =& $_ENV; + } + } + + return $this->pathInfoArray; + } + + /** + * Gets the mime type associated with the format. + * + * @param string $format The format + * + * @return string The associated mime type (null if not found) + */ + public function getMimeType($format) + { + return isset($this->formats[$format]) ? $this->formats[$format][0] : null; + } + + /** + * Gets the format associated with the mime type. + * + * @param string $mimeType The associated mime type + * + * @return string The format (null if not found) + */ + public function getFormat($mimeType) + { + foreach ($this->formats as $format => $mimeTypes) + { + if (in_array($mimeType, $mimeTypes)) + { + return $format; + } + } + + return null; + } + + /** + * Associates a format with mime types. + * + * @param string $format The format + * @param string|array $mimeTypes The associated mime types (the preferred one must be the first as it will be used as the content type) + */ + public function setFormat($format, $mimeTypes) + { + $this->formats[$format] = is_array($mimeTypes) ? $mimeTypes : array($mimeTypes); + } + + /** + * Sets the request format. + * + * @param string $format The request format + */ + public function setRequestFormat($format) + { + $this->format = $format; + } + + /** + * Gets the request format. + * + * Here is the process to determine the format: + * + * * format defined by the user (with setRequestFormat()) + * * sf_format request parameter + * * default format from factories + * + * @return string The request format + */ + public function getRequestFormat() + { + if (null === $this->format) + { + $this->setRequestFormat($this->getParameter('sf_format', $this->options['default_format'])); + } + + return $this->format; + } + + /** + * Retrieves an array of files. + * + * @param string $key A key + * @return array An associative array of files + */ + public function getFiles($key = null) + { + if (false === $this->fixedFileArray) + { + $this->fixedFileArray = self::convertFileInformation($_FILES); + } + + return null === $key ? $this->fixedFileArray : (isset($this->fixedFileArray[$key]) ? $this->fixedFileArray[$key] : array()); + } + + /** + * Converts uploaded file array to a format following the $_GET and $POST naming convention. + * + * It's safe to pass an already converted array, in which case this method just returns the original array unmodified. + * + * @param array $taintedFiles An array representing uploaded file information + * + * @return array An array of re-ordered uploaded file information + */ + static public function convertFileInformation(array $taintedFiles) + { + $files = array(); + foreach ($taintedFiles as $key => $data) + { + $files[$key] = self::fixPhpFilesArray($data); + } + + return $files; + } + + static protected function fixPhpFilesArray($data) + { + $fileKeys = array('error', 'name', 'size', 'tmp_name', 'type'); + $keys = array_keys($data); + sort($keys); + + if ($fileKeys != $keys || !isset($data['name']) || !is_array($data['name'])) + { + return $data; + } + + $files = $data; + foreach ($fileKeys as $k) + { + unset($files[$k]); + } + foreach (array_keys($data['name']) as $key) + { + $files[$key] = self::fixPhpFilesArray(array( + 'error' => $data['error'][$key], + 'name' => $data['name'][$key], + 'type' => $data['type'][$key], + 'tmp_name' => $data['tmp_name'][$key], + 'size' => $data['size'][$key], + )); + } + + return $files; + } + + /** + * Returns the value of a GET parameter. + * + * @param string $name The GET parameter name + * @param string $default The default value + * + * @return string The GET parameter value + */ + public function getGetParameter($name, $default = null) + { + if (isset($this->getParameters[$name])) + { + return $this->getParameters[$name]; + } + else + { + return sfToolkit::getArrayValueForPath($this->getParameters, $name, $default); + } + } + + /** + * Returns the value of a POST parameter. + * + * @param string $name The POST parameter name + * @param string $default The default value + * + * @return string The POST parameter value + */ + public function getPostParameter($name, $default = null) + { + if (isset($this->postParameters[$name])) + { + return $this->postParameters[$name]; + } + else + { + return sfToolkit::getArrayValueForPath($this->postParameters, $name, $default); + } + } + + /** + * Returns the value of a parameter passed as a URL segment. + * + * @param string $name The parameter name + * @param string $default The default value + * + * @return string The parameter value + */ + public function getUrlParameter($name, $default = null) + { + if (isset($this->requestParameters[$name])) + { + return $this->requestParameters[$name]; + } + else + { + return sfToolkit::getArrayValueForPath($this->requestParameters, $name, $default); + } + } + + /** + * Returns the remote IP address that made the request. + * + * @return string The remote IP address + */ + public function getRemoteAddress() + { + $pathInfo = $this->getPathInfoArray(); + + return $pathInfo['REMOTE_ADDR']; + } + + /** + * Returns an array containing a list of IPs, the first being the client address + * and the others the addresses of each proxy that passed the request. The address + * for the last proxy can be retrieved via getRemoteAddress(). + * + * This method returns null if no proxy passed this request. Note that some proxies + * do not use this header, and act as if they were the client. + * + * @return string|null An array of IP from the client and the proxies that passed + * the request, or null if no proxy was used. + */ + public function getForwardedFor() + { + $pathInfo = $this->getPathInfoArray(); + + if (empty($pathInfo['HTTP_X_FORWARDED_FOR'])) + { + return null; + } + + return explode(', ', $pathInfo['HTTP_X_FORWARDED_FOR']); + } + + public function checkCSRFProtection() + { + $form = new BaseForm(); + $form->bind($form->isCSRFProtected() ? array($form->getCSRFFieldName() => $this->getParameter($form->getCSRFFieldName())) : array()); + + if (!$form->isValid()) + { + throw $form->getErrorSchema(); + } + } + + /** + * Parses the request parameters. + * + * This method notifies the request.filter_parameters event. + * + * @return array An array of request parameters. + */ + protected function parseRequestParameters() + { + return $this->dispatcher->filter(new sfEvent($this, 'request.filter_parameters', $this->getRequestContext()), array())->getReturnValue(); + } + + /** + * Returns the request context used. + * + * @return array An array of values representing the current request + */ + public function getRequestContext() + { + return array( + 'path_info' => $this->getPathInfo(), + 'prefix' => $this->getPathInfoPrefix(), + 'method' => $this->getMethod(), + 'format' => $this->getRequestFormat(), + 'host' => $this->getHost(), + 'is_secure' => $this->isSecure(), + 'request_uri' => $this->getUri(), + ); + } + + protected function fixParameters() + { + // move symfony parameters to attributes (parameters prefixed with _sf_) + foreach ($this->parameterHolder->getAll() as $key => $value) + { + if (0 === stripos($key, '_sf_')) + { + $this->parameterHolder->remove($key); + $this->setAttribute(substr($key, 1), $value); + } + } + } +} diff --git a/lib/vendor/symfony/lib/response/.svn/all-wcprops b/lib/vendor/symfony/lib/response/.svn/all-wcprops new file mode 100644 index 0000000..7110ef2 --- /dev/null +++ b/lib/vendor/symfony/lib/response/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 41 +/!svn/ver/31399/branches/1.4/lib/response +END +sfWebResponse.class.php +K 25 +svn:wc:ra_dav:version-url +V 65 +/!svn/ver/31399/branches/1.4/lib/response/sfWebResponse.class.php +END +sfResponse.class.php +K 25 +svn:wc:ra_dav:version-url +V 62 +/!svn/ver/23881/branches/1.4/lib/response/sfResponse.class.php +END diff --git a/lib/vendor/symfony/lib/response/.svn/entries b/lib/vendor/symfony/lib/response/.svn/entries new file mode 100644 index 0000000..e1b82eb --- /dev/null +++ b/lib/vendor/symfony/lib/response/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/response +http://svn.symfony-project.com + + + +2010-11-15T16:48:22.217158Z +31399 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +sfWebResponse.class.php +file + + + + +2012-05-10T18:41:03.149552Z +cff24df19176affd4f29223692ac283c +2010-11-15T16:48:22.217158Z +31399 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +22735 + +sfResponse.class.php +file + + + + +2012-05-10T18:41:03.149552Z +d71e1d56280b9c7e911c1e84e5af933a +2009-01-11T09:32:32.617919Z +14598 +dwhittle +has-props + + + + + + + + + + + + + + + + + + + + +4039 + diff --git a/lib/vendor/symfony/lib/response/.svn/prop-base/sfResponse.class.php.svn-base b/lib/vendor/symfony/lib/response/.svn/prop-base/sfResponse.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/response/.svn/prop-base/sfResponse.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/response/.svn/prop-base/sfWebResponse.class.php.svn-base b/lib/vendor/symfony/lib/response/.svn/prop-base/sfWebResponse.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/response/.svn/prop-base/sfWebResponse.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/response/.svn/text-base/sfResponse.class.php.svn-base b/lib/vendor/symfony/lib/response/.svn/text-base/sfResponse.class.php.svn-base new file mode 100644 index 0000000..0525ae5 --- /dev/null +++ b/lib/vendor/symfony/lib/response/.svn/text-base/sfResponse.class.php.svn-base @@ -0,0 +1,169 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfResponse provides methods for manipulating client response information such + * as headers, cookies and content. + * + * @package symfony + * @subpackage response + * @author Fabien Potencier + * @version SVN: $Id$ + */ +abstract class sfResponse implements Serializable +{ + protected + $options = array(), + $dispatcher = null, + $content = ''; + + /** + * Class constructor. + * + * @see initialize() + */ + public function __construct(sfEventDispatcher $dispatcher, $options = array()) + { + $this->initialize($dispatcher, $options); + } + + /** + * Initializes this sfResponse. + * + * Available options: + * + * * logging: Whether to enable logging or not (false by default) + * + * @param sfEventDispatcher $dispatcher An sfEventDispatcher instance + * @param array $options An array of options + * + * @return bool true, if initialization completes successfully, otherwise false + * + * @throws sfInitializationException If an error occurs while initializing this sfResponse + */ + public function initialize(sfEventDispatcher $dispatcher, $options = array()) + { + $this->dispatcher = $dispatcher; + $this->options = $options; + + if (!isset($this->options['logging'])) + { + $this->options['logging'] = false; + } + } + + /** + * Sets the event dispatcher. + * + * @param sfEventDispatcher $dispatcher An sfEventDispatcher instance + */ + public function setEventDispatcher(sfEventDispatcher $dispatcher) + { + $this->dispatcher = $dispatcher; + } + + /** + * Sets the response content + * + * @param string $content + */ + public function setContent($content) + { + $this->content = $content; + } + + /** + * Gets the current response content + * + * @return string Content + */ + public function getContent() + { + return $this->content; + } + + /** + * Outputs the response content + */ + public function sendContent() + { + $event = $this->dispatcher->filter(new sfEvent($this, 'response.filter_content'), $this->getContent()); + $content = $event->getReturnValue(); + + if ($this->options['logging']) + { + $this->dispatcher->notify(new sfEvent($this, 'application.log', array(sprintf('Send content (%s o)', strlen($content))))); + } + + echo $content; + } + + /** + * Sends the content. + */ + public function send() + { + $this->sendContent(); + } + + /** + * Returns the options. + * + * @return array The options. + */ + public function getOptions() + { + return $this->options; + } + + /** + * Calls methods defined via sfEventDispatcher. + * + * @param string $method The method name + * @param array $arguments The method arguments + * + * @return mixed The returned value of the called method + * + * @throws sfException If the calls fails + */ + public function __call($method, $arguments) + { + $event = $this->dispatcher->notifyUntil(new sfEvent($this, 'response.method_not_found', array('method' => $method, 'arguments' => $arguments))); + if (!$event->isProcessed()) + { + throw new sfException(sprintf('Call to undefined method %s::%s.', get_class($this), $method)); + } + + return $event->getReturnValue(); + } + + /** + * Serializes the current instance. + * + * @return array Objects instance + */ + public function serialize() + { + return serialize($this->content); + } + + /** + * Unserializes a sfResponse instance. + * + * You need to inject a dispatcher after unserializing a sfResponse instance. + * + * @param string $serialized A serialized sfResponse instance + * + */ + public function unserialize($serialized) + { + $this->content = unserialize($serialized); + } +} diff --git a/lib/vendor/symfony/lib/response/.svn/text-base/sfWebResponse.class.php.svn-base b/lib/vendor/symfony/lib/response/.svn/text-base/sfWebResponse.class.php.svn-base new file mode 100644 index 0000000..6dd19bf --- /dev/null +++ b/lib/vendor/symfony/lib/response/.svn/text-base/sfWebResponse.class.php.svn-base @@ -0,0 +1,874 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWebResponse class. + * + * This class manages web reponses. It supports cookies and headers management. + * + * @package symfony + * @subpackage response + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfWebResponse extends sfResponse +{ + const + FIRST = 'first', + MIDDLE = '', + LAST = 'last', + ALL = 'ALL', + RAW = 'RAW'; + + protected + $cookies = array(), + $statusCode = 200, + $statusText = 'OK', + $headerOnly = false, + $headers = array(), + $metas = array(), + $httpMetas = array(), + $positions = array('first', '', 'last'), + $stylesheets = array(), + $javascripts = array(), + $slots = array(); + + static protected $statusTexts = array( + '100' => 'Continue', + '101' => 'Switching Protocols', + '200' => 'OK', + '201' => 'Created', + '202' => 'Accepted', + '203' => 'Non-Authoritative Information', + '204' => 'No Content', + '205' => 'Reset Content', + '206' => 'Partial Content', + '300' => 'Multiple Choices', + '301' => 'Moved Permanently', + '302' => 'Found', + '303' => 'See Other', + '304' => 'Not Modified', + '305' => 'Use Proxy', + '306' => '(Unused)', + '307' => 'Temporary Redirect', + '400' => 'Bad Request', + '401' => 'Unauthorized', + '402' => 'Payment Required', + '403' => 'Forbidden', + '404' => 'Not Found', + '405' => 'Method Not Allowed', + '406' => 'Not Acceptable', + '407' => 'Proxy Authentication Required', + '408' => 'Request Timeout', + '409' => 'Conflict', + '410' => 'Gone', + '411' => 'Length Required', + '412' => 'Precondition Failed', + '413' => 'Request Entity Too Large', + '414' => 'Request-URI Too Long', + '415' => 'Unsupported Media Type', + '416' => 'Requested Range Not Satisfiable', + '417' => 'Expectation Failed', + '500' => 'Internal Server Error', + '501' => 'Not Implemented', + '502' => 'Bad Gateway', + '503' => 'Service Unavailable', + '504' => 'Gateway Timeout', + '505' => 'HTTP Version Not Supported', + ); + + /** + * Initializes this sfWebResponse. + * + * Available options: + * + * * charset: The charset to use (utf-8 by default) + * * content_type: The content type (text/html by default) + * * send_http_headers: Whether to send HTTP headers or not (true by default) + * * http_protocol: The HTTP protocol to use for the response (HTTP/1.0 by default) + * + * @param sfEventDispatcher $dispatcher An sfEventDispatcher instance + * @param array $options An array of options + * + * @return bool true, if initialization completes successfully, otherwise false + * + * @throws sfInitializationException If an error occurs while initializing this sfResponse + * + * @see sfResponse + */ + public function initialize(sfEventDispatcher $dispatcher, $options = array()) + { + parent::initialize($dispatcher, $options); + + $this->javascripts = array_combine($this->positions, array_fill(0, count($this->positions), array())); + $this->stylesheets = array_combine($this->positions, array_fill(0, count($this->positions), array())); + + if (!isset($this->options['charset'])) + { + $this->options['charset'] = 'utf-8'; + } + + if (!isset($this->options['send_http_headers'])) + { + $this->options['send_http_headers'] = true; + } + + if (!isset($this->options['http_protocol'])) + { + $this->options['http_protocol'] = 'HTTP/1.0'; + } + + $this->options['content_type'] = $this->fixContentType(isset($this->options['content_type']) ? $this->options['content_type'] : 'text/html'); + } + + /** + * Sets if the response consist of just HTTP headers. + * + * @param bool $value + */ + public function setHeaderOnly($value = true) + { + $this->headerOnly = (boolean) $value; + } + + /** + * Returns if the response must only consist of HTTP headers. + * + * @return bool returns true if, false otherwise + */ + public function isHeaderOnly() + { + return $this->headerOnly; + } + + /** + * Sets a cookie. + * + * @param string $name HTTP header name + * @param string $value Value for the cookie + * @param string $expire Cookie expiration period + * @param string $path Path + * @param string $domain Domain name + * @param bool $secure If secure + * @param bool $httpOnly If uses only HTTP + * + * @throws sfException If fails to set the cookie + */ + public function setCookie($name, $value, $expire = null, $path = '/', $domain = '', $secure = false, $httpOnly = false) + { + if ($expire !== null) + { + if (is_numeric($expire)) + { + $expire = (int) $expire; + } + else + { + $expire = strtotime($expire); + if ($expire === false || $expire == -1) + { + throw new sfException('Your expire parameter is not valid.'); + } + } + } + + $this->cookies[$name] = array( + 'name' => $name, + 'value' => $value, + 'expire' => $expire, + 'path' => $path, + 'domain' => $domain, + 'secure' => $secure ? true : false, + 'httpOnly' => $httpOnly, + ); + } + + /** + * Sets response status code. + * + * @param string $code HTTP status code + * @param string $name HTTP status text + * + */ + public function setStatusCode($code, $name = null) + { + $this->statusCode = $code; + $this->statusText = null !== $name ? $name : self::$statusTexts[$code]; + } + + /** + * Retrieves status text for the current web response. + * + * @return string Status text + */ + public function getStatusText() + { + return $this->statusText; + } + + /** + * Retrieves status code for the current web response. + * + * @return integer Status code + */ + public function getStatusCode() + { + return $this->statusCode; + } + + /** + * Sets a HTTP header. + * + * @param string $name HTTP header name + * @param string $value Value (if null, remove the HTTP header) + * @param bool $replace Replace for the value + * + */ + public function setHttpHeader($name, $value, $replace = true) + { + $name = $this->normalizeHeaderName($name); + + if (null === $value) + { + unset($this->headers[$name]); + + return; + } + + if ('Content-Type' == $name) + { + if ($replace || !$this->getHttpHeader('Content-Type', null)) + { + $this->setContentType($value); + } + + return; + } + + if (!$replace) + { + $current = isset($this->headers[$name]) ? $this->headers[$name] : ''; + $value = ($current ? $current.', ' : '').$value; + } + + $this->headers[$name] = $value; + } + + /** + * Gets HTTP header current value. + * + * @param string $name HTTP header name + * @param string $default Default value returned if named HTTP header is not found + * + * @return string + */ + public function getHttpHeader($name, $default = null) + { + $name = $this->normalizeHeaderName($name); + + return isset($this->headers[$name]) ? $this->headers[$name] : $default; + } + + /** + * Checks if response has given HTTP header. + * + * @param string $name HTTP header name + * + * @return bool + */ + public function hasHttpHeader($name) + { + return array_key_exists($this->normalizeHeaderName($name), $this->headers); + } + + /** + * Sets response content type. + * + * @param string $value Content type + * + */ + public function setContentType($value) + { + $this->headers['Content-Type'] = $this->fixContentType($value); + } + + /** + * Gets the current charset as defined by the content type. + * + * @return string The current charset + */ + public function getCharset() + { + return $this->options['charset']; + } + + /** + * Gets response content type. + * + * @return array + */ + public function getContentType() + { + return $this->getHttpHeader('Content-Type', $this->options['content_type']); + } + + /** + * Sends HTTP headers and cookies. Only the first invocation of this method will send the headers. + * Subsequent invocations will silently do nothing. This allows certain actions to send headers early, + * while still using the standard controller. + */ + public function sendHttpHeaders() + { + if (!$this->options['send_http_headers']) + { + return; + } + + // status + $status = $this->options['http_protocol'].' '.$this->statusCode.' '.$this->statusText; + header($status); + + if (substr(php_sapi_name(), 0, 3) == 'cgi') + { + // fastcgi servers cannot send this status information because it was sent by them already due to the HTT/1.0 line + // so we can safely unset them. see ticket #3191 + unset($this->headers['Status']); + } + + if ($this->options['logging']) + { + $this->dispatcher->notify(new sfEvent($this, 'application.log', array(sprintf('Send status "%s"', $status)))); + } + + // headers + if (!$this->getHttpHeader('Content-Type')) + { + $this->setContentType($this->options['content_type']); + } + foreach ($this->headers as $name => $value) + { + header($name.': '.$value); + + if ($value != '' && $this->options['logging']) + { + $this->dispatcher->notify(new sfEvent($this, 'application.log', array(sprintf('Send header "%s: %s"', $name, $value)))); + } + } + + // cookies + foreach ($this->cookies as $cookie) + { + setrawcookie($cookie['name'], $cookie['value'], $cookie['expire'], $cookie['path'], $cookie['domain'], $cookie['secure'], $cookie['httpOnly']); + + if ($this->options['logging']) + { + $this->dispatcher->notify(new sfEvent($this, 'application.log', array(sprintf('Send cookie "%s": "%s"', $cookie['name'], $cookie['value'])))); + } + } + // prevent resending the headers + $this->options['send_http_headers'] = false; + } + + /** + * Send content for the current web response. + * + */ + public function sendContent() + { + if (!$this->headerOnly) + { + parent::sendContent(); + } + } + + /** + * Sends the HTTP headers and the content. + */ + public function send() + { + $this->sendHttpHeaders(); + $this->sendContent(); + } + + /** + * Retrieves a normalized Header. + * + * @param string $name Header name + * + * @return string Normalized header + */ + protected function normalizeHeaderName($name) + { + return preg_replace('/\-(.)/e', "'-'.strtoupper('\\1')", strtr(ucfirst(strtolower($name)), '_', '-')); + } + + /** + * Retrieves a formated date. + * + * @param string $timestamp Timestamp + * @param string $type Format type + * + * @return string Formatted date + */ + static public function getDate($timestamp, $type = 'rfc1123') + { + $type = strtolower($type); + + if ($type == 'rfc1123') + { + return substr(gmdate('r', $timestamp), 0, -5).'GMT'; + } + else if ($type == 'rfc1036') + { + return gmdate('l, d-M-y H:i:s ', $timestamp).'GMT'; + } + else if ($type == 'asctime') + { + return gmdate('D M j H:i:s', $timestamp); + } + else + { + throw new InvalidArgumentException('The second getDate() method parameter must be one of: rfc1123, rfc1036 or asctime.'); + } + } + + /** + * Adds vary to a http header. + * + * @param string $header HTTP header + */ + public function addVaryHttpHeader($header) + { + $vary = $this->getHttpHeader('Vary'); + $currentHeaders = array(); + if ($vary) + { + $currentHeaders = preg_split('/\s*,\s*/', $vary); + } + $header = $this->normalizeHeaderName($header); + + if (!in_array($header, $currentHeaders)) + { + $currentHeaders[] = $header; + $this->setHttpHeader('Vary', implode(', ', $currentHeaders)); + } + } + + /** + * Adds an control cache http header. + * + * @param string $name HTTP header + * @param string $value Value for the http header + */ + public function addCacheControlHttpHeader($name, $value = null) + { + $cacheControl = $this->getHttpHeader('Cache-Control'); + $currentHeaders = array(); + if ($cacheControl) + { + foreach (preg_split('/\s*,\s*/', $cacheControl) as $tmp) + { + $tmp = explode('=', $tmp); + $currentHeaders[$tmp[0]] = isset($tmp[1]) ? $tmp[1] : null; + } + } + $currentHeaders[strtr(strtolower($name), '_', '-')] = $value; + + $headers = array(); + foreach ($currentHeaders as $key => $value) + { + $headers[] = $key.(null !== $value ? '='.$value : ''); + } + + $this->setHttpHeader('Cache-Control', implode(', ', $headers)); + } + + /** + * Retrieves meta headers for the current web response. + * + * @return string Meta headers + */ + public function getHttpMetas() + { + return $this->httpMetas; + } + + /** + * Adds a HTTP meta header. + * + * @param string $key Key to replace + * @param string $value HTTP meta header value (if null, remove the HTTP meta) + * @param bool $replace Replace or not + */ + public function addHttpMeta($key, $value, $replace = true) + { + $key = $this->normalizeHeaderName($key); + + // set HTTP header + $this->setHttpHeader($key, $value, $replace); + + if (null === $value) + { + unset($this->httpMetas[$key]); + + return; + } + + if ('Content-Type' == $key) + { + $value = $this->getContentType(); + } + elseif (!$replace) + { + $current = isset($this->httpMetas[$key]) ? $this->httpMetas[$key] : ''; + $value = ($current ? $current.', ' : '').$value; + } + + $this->httpMetas[$key] = $value; + } + + /** + * Retrieves all meta headers. + * + * @return array List of meta headers + */ + public function getMetas() + { + return $this->metas; + } + + /** + * Adds a meta header. + * + * @param string $key Name of the header + * @param string $value Meta header value (if null, remove the meta) + * @param bool $replace true if it's replaceable + * @param bool $escape true for escaping the header + */ + public function addMeta($key, $value, $replace = true, $escape = true) + { + $key = strtolower($key); + + if (null === $value) + { + unset($this->metas[$key]); + + return; + } + + // FIXME: If you use the i18n layer and escape the data here, it won't work + // see include_metas() in AssetHelper + if ($escape) + { + $value = htmlspecialchars($value, ENT_QUOTES, $this->options['charset']); + } + + $current = isset($this->metas[$key]) ? $this->metas[$key] : null; + if ($replace || !$current) + { + $this->metas[$key] = $value; + } + } + + /** + * Retrieves title for the current web response. + * + * @return string Title + */ + public function getTitle() + { + return isset($this->metas['title']) ? $this->metas['title'] : ''; + } + + /** + * Sets title for the current web response. + * + * @param string $title Title name + * @param bool $escape true, for escaping the title + */ + public function setTitle($title, $escape = true) + { + $this->addMeta('title', $title, true, $escape); + } + + /** + * Returns the available position names for stylesheets and javascripts in order. + * + * @return array An array of position names + */ + public function getPositions() + { + return $this->positions; + } + + /** + * Retrieves stylesheets for the current web response. + * + * By default, the position is sfWebResponse::ALL, + * and the method returns all stylesheets ordered by position. + * + * @param string $position The position + * + * @return array An associative array of stylesheet files as keys and options as values + */ + public function getStylesheets($position = self::ALL) + { + if (self::ALL === $position) + { + $stylesheets = array(); + foreach ($this->getPositions() as $position) + { + foreach ($this->stylesheets[$position] as $file => $options) + { + $stylesheets[$file] = $options; + } + } + + return $stylesheets; + } + else if (self::RAW === $position) + { + return $this->stylesheets; + } + + $this->validatePosition($position); + + return $this->stylesheets[$position]; + } + + /** + * Adds a stylesheet to the current web response. + * + * @param string $file The stylesheet file + * @param string $position Position + * @param string $options Stylesheet options + */ + public function addStylesheet($file, $position = '', $options = array()) + { + $this->validatePosition($position); + + $this->stylesheets[$position][$file] = $options; + } + + /** + * Removes a stylesheet from the current web response. + * + * @param string $file The stylesheet file to remove + */ + public function removeStylesheet($file) + { + foreach ($this->getPositions() as $position) + { + unset($this->stylesheets[$position][$file]); + } + } + + /** + * Retrieves javascript files from the current web response. + * + * By default, the position is sfWebResponse::ALL, + * and the method returns all javascripts ordered by position. + * + * @param string $position The position + * + * @return array An associative array of javascript files as keys and options as values + */ + public function getJavascripts($position = self::ALL) + { + if (self::ALL === $position) + { + $javascripts = array(); + foreach ($this->getPositions() as $position) + { + foreach ($this->javascripts[$position] as $file => $options) + { + $javascripts[$file] = $options; + } + } + + return $javascripts; + } + else if (self::RAW === $position) + { + return $this->javascripts; + } + + $this->validatePosition($position); + + return $this->javascripts[$position]; + } + + /** + * Adds javascript code to the current web response. + * + * @param string $file The JavaScript file + * @param string $position Position + * @param string $options Javascript options + */ + public function addJavascript($file, $position = '', $options = array()) + { + $this->validatePosition($position); + + $this->javascripts[$position][$file] = $options; + } + + /** + * Removes a JavaScript file from the current web response. + * + * @param string $file The Javascript file to remove + */ + public function removeJavascript($file) + { + foreach ($this->getPositions() as $position) + { + unset($this->javascripts[$position][$file]); + } + } + + /** + * Retrieves slots from the current web response. + * + * @return string Javascript code + */ + public function getSlots() + { + return $this->slots; + } + + /** + * Sets a slot content. + * + * @param string $name Slot name + * @param string $content Content + */ + public function setSlot($name, $content) + { + $this->slots[$name] = $content; + } + + /** + * Retrieves cookies from the current web response. + * + * @return array Cookies + */ + public function getCookies() + { + return $this->cookies; + } + + /** + * Retrieves HTTP headers from the current web response. + * + * @return string HTTP headers + */ + public function getHttpHeaders() + { + return $this->headers; + } + + /** + * Cleans HTTP headers from the current web response. + */ + public function clearHttpHeaders() + { + $this->headers = array(); + } + + /** + * Copies all properties from a given sfWebResponse object to the current one. + * + * @param sfWebResponse $response An sfWebResponse instance + */ + public function copyProperties(sfWebResponse $response) + { + $this->options = $response->getOptions(); + $this->headers = $response->getHttpHeaders(); + $this->metas = $response->getMetas(); + $this->httpMetas = $response->getHttpMetas(); + $this->stylesheets = $response->getStylesheets(self::RAW); + $this->javascripts = $response->getJavascripts(self::RAW); + $this->slots = $response->getSlots(); + + // HTTP protocol must be from the current request + // this fix is not nice but that's the only way to fix it and keep BC (see #9254) + $this->options['http_protocol'] = isset($_SERVER['SERVER_PROTOCOL']) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0'; + } + + /** + * Merges all properties from a given sfWebResponse object to the current one. + * + * @param sfWebResponse $response An sfWebResponse instance + */ + public function merge(sfWebResponse $response) + { + foreach ($this->getPositions() as $position) + { + $this->javascripts[$position] = array_merge($this->getJavascripts($position), $response->getJavascripts($position)); + $this->stylesheets[$position] = array_merge($this->getStylesheets($position), $response->getStylesheets($position)); + } + + $this->slots = array_merge($this->getSlots(), $response->getSlots()); + } + + /** + * @see sfResponse + */ + public function serialize() + { + return serialize(array($this->content, $this->statusCode, $this->statusText, $this->options, $this->headerOnly, $this->headers, $this->metas, $this->httpMetas, $this->stylesheets, $this->javascripts, $this->slots)); + } + + /** + * @see sfResponse + */ + public function unserialize($serialized) + { + list($this->content, $this->statusCode, $this->statusText, $this->options, $this->headerOnly, $this->headers, $this->metas, $this->httpMetas, $this->stylesheets, $this->javascripts, $this->slots) = unserialize($serialized); + } + + /** + * Validate a position name. + * + * @param string $position + * + * @throws InvalidArgumentException if the position is not available + */ + protected function validatePosition($position) + { + if (!in_array($position, $this->positions, true)) + { + throw new InvalidArgumentException(sprintf('The position "%s" does not exist (available positions: %s).', $position, implode(', ', $this->positions))); + } + } + + /** + * Fixes the content type by adding the charset for text content types. + * + * @param string $contentType The content type + * + * @return string The content type with the charset if needed + */ + protected function fixContentType($contentType) + { + // add charset if needed (only on text content) + if (false === stripos($contentType, 'charset') && (0 === stripos($contentType, 'text/') || strlen($contentType) - 3 === strripos($contentType, 'xml'))) + { + $contentType .= '; charset='.$this->options['charset']; + } + + // change the charset for the response + if (preg_match('/charset\s*=\s*(.+)\s*$/', $contentType, $match)) + { + $this->options['charset'] = $match[1]; + } + + return $contentType; + } +} diff --git a/lib/vendor/symfony/lib/response/sfResponse.class.php b/lib/vendor/symfony/lib/response/sfResponse.class.php new file mode 100644 index 0000000..44e73b4 --- /dev/null +++ b/lib/vendor/symfony/lib/response/sfResponse.class.php @@ -0,0 +1,169 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfResponse provides methods for manipulating client response information such + * as headers, cookies and content. + * + * @package symfony + * @subpackage response + * @author Fabien Potencier + * @version SVN: $Id: sfResponse.class.php 14598 2009-01-11 09:32:32Z dwhittle $ + */ +abstract class sfResponse implements Serializable +{ + protected + $options = array(), + $dispatcher = null, + $content = ''; + + /** + * Class constructor. + * + * @see initialize() + */ + public function __construct(sfEventDispatcher $dispatcher, $options = array()) + { + $this->initialize($dispatcher, $options); + } + + /** + * Initializes this sfResponse. + * + * Available options: + * + * * logging: Whether to enable logging or not (false by default) + * + * @param sfEventDispatcher $dispatcher An sfEventDispatcher instance + * @param array $options An array of options + * + * @return bool true, if initialization completes successfully, otherwise false + * + * @throws sfInitializationException If an error occurs while initializing this sfResponse + */ + public function initialize(sfEventDispatcher $dispatcher, $options = array()) + { + $this->dispatcher = $dispatcher; + $this->options = $options; + + if (!isset($this->options['logging'])) + { + $this->options['logging'] = false; + } + } + + /** + * Sets the event dispatcher. + * + * @param sfEventDispatcher $dispatcher An sfEventDispatcher instance + */ + public function setEventDispatcher(sfEventDispatcher $dispatcher) + { + $this->dispatcher = $dispatcher; + } + + /** + * Sets the response content + * + * @param string $content + */ + public function setContent($content) + { + $this->content = $content; + } + + /** + * Gets the current response content + * + * @return string Content + */ + public function getContent() + { + return $this->content; + } + + /** + * Outputs the response content + */ + public function sendContent() + { + $event = $this->dispatcher->filter(new sfEvent($this, 'response.filter_content'), $this->getContent()); + $content = $event->getReturnValue(); + + if ($this->options['logging']) + { + $this->dispatcher->notify(new sfEvent($this, 'application.log', array(sprintf('Send content (%s o)', strlen($content))))); + } + + echo $content; + } + + /** + * Sends the content. + */ + public function send() + { + $this->sendContent(); + } + + /** + * Returns the options. + * + * @return array The options. + */ + public function getOptions() + { + return $this->options; + } + + /** + * Calls methods defined via sfEventDispatcher. + * + * @param string $method The method name + * @param array $arguments The method arguments + * + * @return mixed The returned value of the called method + * + * @throws sfException If the calls fails + */ + public function __call($method, $arguments) + { + $event = $this->dispatcher->notifyUntil(new sfEvent($this, 'response.method_not_found', array('method' => $method, 'arguments' => $arguments))); + if (!$event->isProcessed()) + { + throw new sfException(sprintf('Call to undefined method %s::%s.', get_class($this), $method)); + } + + return $event->getReturnValue(); + } + + /** + * Serializes the current instance. + * + * @return array Objects instance + */ + public function serialize() + { + return serialize($this->content); + } + + /** + * Unserializes a sfResponse instance. + * + * You need to inject a dispatcher after unserializing a sfResponse instance. + * + * @param string $serialized A serialized sfResponse instance + * + */ + public function unserialize($serialized) + { + $this->content = unserialize($serialized); + } +} diff --git a/lib/vendor/symfony/lib/response/sfWebResponse.class.php b/lib/vendor/symfony/lib/response/sfWebResponse.class.php new file mode 100644 index 0000000..3aa15ea --- /dev/null +++ b/lib/vendor/symfony/lib/response/sfWebResponse.class.php @@ -0,0 +1,874 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWebResponse class. + * + * This class manages web reponses. It supports cookies and headers management. + * + * @package symfony + * @subpackage response + * @author Fabien Potencier + * @version SVN: $Id: sfWebResponse.class.php 31399 2010-11-15 16:48:22Z fabien $ + */ +class sfWebResponse extends sfResponse +{ + const + FIRST = 'first', + MIDDLE = '', + LAST = 'last', + ALL = 'ALL', + RAW = 'RAW'; + + protected + $cookies = array(), + $statusCode = 200, + $statusText = 'OK', + $headerOnly = false, + $headers = array(), + $metas = array(), + $httpMetas = array(), + $positions = array('first', '', 'last'), + $stylesheets = array(), + $javascripts = array(), + $slots = array(); + + static protected $statusTexts = array( + '100' => 'Continue', + '101' => 'Switching Protocols', + '200' => 'OK', + '201' => 'Created', + '202' => 'Accepted', + '203' => 'Non-Authoritative Information', + '204' => 'No Content', + '205' => 'Reset Content', + '206' => 'Partial Content', + '300' => 'Multiple Choices', + '301' => 'Moved Permanently', + '302' => 'Found', + '303' => 'See Other', + '304' => 'Not Modified', + '305' => 'Use Proxy', + '306' => '(Unused)', + '307' => 'Temporary Redirect', + '400' => 'Bad Request', + '401' => 'Unauthorized', + '402' => 'Payment Required', + '403' => 'Forbidden', + '404' => 'Not Found', + '405' => 'Method Not Allowed', + '406' => 'Not Acceptable', + '407' => 'Proxy Authentication Required', + '408' => 'Request Timeout', + '409' => 'Conflict', + '410' => 'Gone', + '411' => 'Length Required', + '412' => 'Precondition Failed', + '413' => 'Request Entity Too Large', + '414' => 'Request-URI Too Long', + '415' => 'Unsupported Media Type', + '416' => 'Requested Range Not Satisfiable', + '417' => 'Expectation Failed', + '500' => 'Internal Server Error', + '501' => 'Not Implemented', + '502' => 'Bad Gateway', + '503' => 'Service Unavailable', + '504' => 'Gateway Timeout', + '505' => 'HTTP Version Not Supported', + ); + + /** + * Initializes this sfWebResponse. + * + * Available options: + * + * * charset: The charset to use (utf-8 by default) + * * content_type: The content type (text/html by default) + * * send_http_headers: Whether to send HTTP headers or not (true by default) + * * http_protocol: The HTTP protocol to use for the response (HTTP/1.0 by default) + * + * @param sfEventDispatcher $dispatcher An sfEventDispatcher instance + * @param array $options An array of options + * + * @return bool true, if initialization completes successfully, otherwise false + * + * @throws sfInitializationException If an error occurs while initializing this sfResponse + * + * @see sfResponse + */ + public function initialize(sfEventDispatcher $dispatcher, $options = array()) + { + parent::initialize($dispatcher, $options); + + $this->javascripts = array_combine($this->positions, array_fill(0, count($this->positions), array())); + $this->stylesheets = array_combine($this->positions, array_fill(0, count($this->positions), array())); + + if (!isset($this->options['charset'])) + { + $this->options['charset'] = 'utf-8'; + } + + if (!isset($this->options['send_http_headers'])) + { + $this->options['send_http_headers'] = true; + } + + if (!isset($this->options['http_protocol'])) + { + $this->options['http_protocol'] = 'HTTP/1.0'; + } + + $this->options['content_type'] = $this->fixContentType(isset($this->options['content_type']) ? $this->options['content_type'] : 'text/html'); + } + + /** + * Sets if the response consist of just HTTP headers. + * + * @param bool $value + */ + public function setHeaderOnly($value = true) + { + $this->headerOnly = (boolean) $value; + } + + /** + * Returns if the response must only consist of HTTP headers. + * + * @return bool returns true if, false otherwise + */ + public function isHeaderOnly() + { + return $this->headerOnly; + } + + /** + * Sets a cookie. + * + * @param string $name HTTP header name + * @param string $value Value for the cookie + * @param string $expire Cookie expiration period + * @param string $path Path + * @param string $domain Domain name + * @param bool $secure If secure + * @param bool $httpOnly If uses only HTTP + * + * @throws sfException If fails to set the cookie + */ + public function setCookie($name, $value, $expire = null, $path = '/', $domain = '', $secure = false, $httpOnly = false) + { + if ($expire !== null) + { + if (is_numeric($expire)) + { + $expire = (int) $expire; + } + else + { + $expire = strtotime($expire); + if ($expire === false || $expire == -1) + { + throw new sfException('Your expire parameter is not valid.'); + } + } + } + + $this->cookies[$name] = array( + 'name' => $name, + 'value' => $value, + 'expire' => $expire, + 'path' => $path, + 'domain' => $domain, + 'secure' => $secure ? true : false, + 'httpOnly' => $httpOnly, + ); + } + + /** + * Sets response status code. + * + * @param string $code HTTP status code + * @param string $name HTTP status text + * + */ + public function setStatusCode($code, $name = null) + { + $this->statusCode = $code; + $this->statusText = null !== $name ? $name : self::$statusTexts[$code]; + } + + /** + * Retrieves status text for the current web response. + * + * @return string Status text + */ + public function getStatusText() + { + return $this->statusText; + } + + /** + * Retrieves status code for the current web response. + * + * @return integer Status code + */ + public function getStatusCode() + { + return $this->statusCode; + } + + /** + * Sets a HTTP header. + * + * @param string $name HTTP header name + * @param string $value Value (if null, remove the HTTP header) + * @param bool $replace Replace for the value + * + */ + public function setHttpHeader($name, $value, $replace = true) + { + $name = $this->normalizeHeaderName($name); + + if (null === $value) + { + unset($this->headers[$name]); + + return; + } + + if ('Content-Type' == $name) + { + if ($replace || !$this->getHttpHeader('Content-Type', null)) + { + $this->setContentType($value); + } + + return; + } + + if (!$replace) + { + $current = isset($this->headers[$name]) ? $this->headers[$name] : ''; + $value = ($current ? $current.', ' : '').$value; + } + + $this->headers[$name] = $value; + } + + /** + * Gets HTTP header current value. + * + * @param string $name HTTP header name + * @param string $default Default value returned if named HTTP header is not found + * + * @return string + */ + public function getHttpHeader($name, $default = null) + { + $name = $this->normalizeHeaderName($name); + + return isset($this->headers[$name]) ? $this->headers[$name] : $default; + } + + /** + * Checks if response has given HTTP header. + * + * @param string $name HTTP header name + * + * @return bool + */ + public function hasHttpHeader($name) + { + return array_key_exists($this->normalizeHeaderName($name), $this->headers); + } + + /** + * Sets response content type. + * + * @param string $value Content type + * + */ + public function setContentType($value) + { + $this->headers['Content-Type'] = $this->fixContentType($value); + } + + /** + * Gets the current charset as defined by the content type. + * + * @return string The current charset + */ + public function getCharset() + { + return $this->options['charset']; + } + + /** + * Gets response content type. + * + * @return array + */ + public function getContentType() + { + return $this->getHttpHeader('Content-Type', $this->options['content_type']); + } + + /** + * Sends HTTP headers and cookies. Only the first invocation of this method will send the headers. + * Subsequent invocations will silently do nothing. This allows certain actions to send headers early, + * while still using the standard controller. + */ + public function sendHttpHeaders() + { + if (!$this->options['send_http_headers']) + { + return; + } + + // status + $status = $this->options['http_protocol'].' '.$this->statusCode.' '.$this->statusText; + header($status); + + if (substr(php_sapi_name(), 0, 3) == 'cgi') + { + // fastcgi servers cannot send this status information because it was sent by them already due to the HTT/1.0 line + // so we can safely unset them. see ticket #3191 + unset($this->headers['Status']); + } + + if ($this->options['logging']) + { + $this->dispatcher->notify(new sfEvent($this, 'application.log', array(sprintf('Send status "%s"', $status)))); + } + + // headers + if (!$this->getHttpHeader('Content-Type')) + { + $this->setContentType($this->options['content_type']); + } + foreach ($this->headers as $name => $value) + { + header($name.': '.$value); + + if ($value != '' && $this->options['logging']) + { + $this->dispatcher->notify(new sfEvent($this, 'application.log', array(sprintf('Send header "%s: %s"', $name, $value)))); + } + } + + // cookies + foreach ($this->cookies as $cookie) + { + setrawcookie($cookie['name'], $cookie['value'], $cookie['expire'], $cookie['path'], $cookie['domain'], $cookie['secure'], $cookie['httpOnly']); + + if ($this->options['logging']) + { + $this->dispatcher->notify(new sfEvent($this, 'application.log', array(sprintf('Send cookie "%s": "%s"', $cookie['name'], $cookie['value'])))); + } + } + // prevent resending the headers + $this->options['send_http_headers'] = false; + } + + /** + * Send content for the current web response. + * + */ + public function sendContent() + { + if (!$this->headerOnly) + { + parent::sendContent(); + } + } + + /** + * Sends the HTTP headers and the content. + */ + public function send() + { + $this->sendHttpHeaders(); + $this->sendContent(); + } + + /** + * Retrieves a normalized Header. + * + * @param string $name Header name + * + * @return string Normalized header + */ + protected function normalizeHeaderName($name) + { + return preg_replace('/\-(.)/e', "'-'.strtoupper('\\1')", strtr(ucfirst(strtolower($name)), '_', '-')); + } + + /** + * Retrieves a formated date. + * + * @param string $timestamp Timestamp + * @param string $type Format type + * + * @return string Formatted date + */ + static public function getDate($timestamp, $type = 'rfc1123') + { + $type = strtolower($type); + + if ($type == 'rfc1123') + { + return substr(gmdate('r', $timestamp), 0, -5).'GMT'; + } + else if ($type == 'rfc1036') + { + return gmdate('l, d-M-y H:i:s ', $timestamp).'GMT'; + } + else if ($type == 'asctime') + { + return gmdate('D M j H:i:s', $timestamp); + } + else + { + throw new InvalidArgumentException('The second getDate() method parameter must be one of: rfc1123, rfc1036 or asctime.'); + } + } + + /** + * Adds vary to a http header. + * + * @param string $header HTTP header + */ + public function addVaryHttpHeader($header) + { + $vary = $this->getHttpHeader('Vary'); + $currentHeaders = array(); + if ($vary) + { + $currentHeaders = preg_split('/\s*,\s*/', $vary); + } + $header = $this->normalizeHeaderName($header); + + if (!in_array($header, $currentHeaders)) + { + $currentHeaders[] = $header; + $this->setHttpHeader('Vary', implode(', ', $currentHeaders)); + } + } + + /** + * Adds an control cache http header. + * + * @param string $name HTTP header + * @param string $value Value for the http header + */ + public function addCacheControlHttpHeader($name, $value = null) + { + $cacheControl = $this->getHttpHeader('Cache-Control'); + $currentHeaders = array(); + if ($cacheControl) + { + foreach (preg_split('/\s*,\s*/', $cacheControl) as $tmp) + { + $tmp = explode('=', $tmp); + $currentHeaders[$tmp[0]] = isset($tmp[1]) ? $tmp[1] : null; + } + } + $currentHeaders[strtr(strtolower($name), '_', '-')] = $value; + + $headers = array(); + foreach ($currentHeaders as $key => $value) + { + $headers[] = $key.(null !== $value ? '='.$value : ''); + } + + $this->setHttpHeader('Cache-Control', implode(', ', $headers)); + } + + /** + * Retrieves meta headers for the current web response. + * + * @return string Meta headers + */ + public function getHttpMetas() + { + return $this->httpMetas; + } + + /** + * Adds a HTTP meta header. + * + * @param string $key Key to replace + * @param string $value HTTP meta header value (if null, remove the HTTP meta) + * @param bool $replace Replace or not + */ + public function addHttpMeta($key, $value, $replace = true) + { + $key = $this->normalizeHeaderName($key); + + // set HTTP header + $this->setHttpHeader($key, $value, $replace); + + if (null === $value) + { + unset($this->httpMetas[$key]); + + return; + } + + if ('Content-Type' == $key) + { + $value = $this->getContentType(); + } + elseif (!$replace) + { + $current = isset($this->httpMetas[$key]) ? $this->httpMetas[$key] : ''; + $value = ($current ? $current.', ' : '').$value; + } + + $this->httpMetas[$key] = $value; + } + + /** + * Retrieves all meta headers. + * + * @return array List of meta headers + */ + public function getMetas() + { + return $this->metas; + } + + /** + * Adds a meta header. + * + * @param string $key Name of the header + * @param string $value Meta header value (if null, remove the meta) + * @param bool $replace true if it's replaceable + * @param bool $escape true for escaping the header + */ + public function addMeta($key, $value, $replace = true, $escape = true) + { + $key = strtolower($key); + + if (null === $value) + { + unset($this->metas[$key]); + + return; + } + + // FIXME: If you use the i18n layer and escape the data here, it won't work + // see include_metas() in AssetHelper + if ($escape) + { + $value = htmlspecialchars($value, ENT_QUOTES, $this->options['charset']); + } + + $current = isset($this->metas[$key]) ? $this->metas[$key] : null; + if ($replace || !$current) + { + $this->metas[$key] = $value; + } + } + + /** + * Retrieves title for the current web response. + * + * @return string Title + */ + public function getTitle() + { + return isset($this->metas['title']) ? $this->metas['title'] : ''; + } + + /** + * Sets title for the current web response. + * + * @param string $title Title name + * @param bool $escape true, for escaping the title + */ + public function setTitle($title, $escape = true) + { + $this->addMeta('title', $title, true, $escape); + } + + /** + * Returns the available position names for stylesheets and javascripts in order. + * + * @return array An array of position names + */ + public function getPositions() + { + return $this->positions; + } + + /** + * Retrieves stylesheets for the current web response. + * + * By default, the position is sfWebResponse::ALL, + * and the method returns all stylesheets ordered by position. + * + * @param string $position The position + * + * @return array An associative array of stylesheet files as keys and options as values + */ + public function getStylesheets($position = self::ALL) + { + if (self::ALL === $position) + { + $stylesheets = array(); + foreach ($this->getPositions() as $position) + { + foreach ($this->stylesheets[$position] as $file => $options) + { + $stylesheets[$file] = $options; + } + } + + return $stylesheets; + } + else if (self::RAW === $position) + { + return $this->stylesheets; + } + + $this->validatePosition($position); + + return $this->stylesheets[$position]; + } + + /** + * Adds a stylesheet to the current web response. + * + * @param string $file The stylesheet file + * @param string $position Position + * @param string $options Stylesheet options + */ + public function addStylesheet($file, $position = '', $options = array()) + { + $this->validatePosition($position); + + $this->stylesheets[$position][$file] = $options; + } + + /** + * Removes a stylesheet from the current web response. + * + * @param string $file The stylesheet file to remove + */ + public function removeStylesheet($file) + { + foreach ($this->getPositions() as $position) + { + unset($this->stylesheets[$position][$file]); + } + } + + /** + * Retrieves javascript files from the current web response. + * + * By default, the position is sfWebResponse::ALL, + * and the method returns all javascripts ordered by position. + * + * @param string $position The position + * + * @return array An associative array of javascript files as keys and options as values + */ + public function getJavascripts($position = self::ALL) + { + if (self::ALL === $position) + { + $javascripts = array(); + foreach ($this->getPositions() as $position) + { + foreach ($this->javascripts[$position] as $file => $options) + { + $javascripts[$file] = $options; + } + } + + return $javascripts; + } + else if (self::RAW === $position) + { + return $this->javascripts; + } + + $this->validatePosition($position); + + return $this->javascripts[$position]; + } + + /** + * Adds javascript code to the current web response. + * + * @param string $file The JavaScript file + * @param string $position Position + * @param string $options Javascript options + */ + public function addJavascript($file, $position = '', $options = array()) + { + $this->validatePosition($position); + + $this->javascripts[$position][$file] = $options; + } + + /** + * Removes a JavaScript file from the current web response. + * + * @param string $file The Javascript file to remove + */ + public function removeJavascript($file) + { + foreach ($this->getPositions() as $position) + { + unset($this->javascripts[$position][$file]); + } + } + + /** + * Retrieves slots from the current web response. + * + * @return string Javascript code + */ + public function getSlots() + { + return $this->slots; + } + + /** + * Sets a slot content. + * + * @param string $name Slot name + * @param string $content Content + */ + public function setSlot($name, $content) + { + $this->slots[$name] = $content; + } + + /** + * Retrieves cookies from the current web response. + * + * @return array Cookies + */ + public function getCookies() + { + return $this->cookies; + } + + /** + * Retrieves HTTP headers from the current web response. + * + * @return string HTTP headers + */ + public function getHttpHeaders() + { + return $this->headers; + } + + /** + * Cleans HTTP headers from the current web response. + */ + public function clearHttpHeaders() + { + $this->headers = array(); + } + + /** + * Copies all properties from a given sfWebResponse object to the current one. + * + * @param sfWebResponse $response An sfWebResponse instance + */ + public function copyProperties(sfWebResponse $response) + { + $this->options = $response->getOptions(); + $this->headers = $response->getHttpHeaders(); + $this->metas = $response->getMetas(); + $this->httpMetas = $response->getHttpMetas(); + $this->stylesheets = $response->getStylesheets(self::RAW); + $this->javascripts = $response->getJavascripts(self::RAW); + $this->slots = $response->getSlots(); + + // HTTP protocol must be from the current request + // this fix is not nice but that's the only way to fix it and keep BC (see #9254) + $this->options['http_protocol'] = isset($_SERVER['SERVER_PROTOCOL']) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0'; + } + + /** + * Merges all properties from a given sfWebResponse object to the current one. + * + * @param sfWebResponse $response An sfWebResponse instance + */ + public function merge(sfWebResponse $response) + { + foreach ($this->getPositions() as $position) + { + $this->javascripts[$position] = array_merge($this->getJavascripts($position), $response->getJavascripts($position)); + $this->stylesheets[$position] = array_merge($this->getStylesheets($position), $response->getStylesheets($position)); + } + + $this->slots = array_merge($this->getSlots(), $response->getSlots()); + } + + /** + * @see sfResponse + */ + public function serialize() + { + return serialize(array($this->content, $this->statusCode, $this->statusText, $this->options, $this->headerOnly, $this->headers, $this->metas, $this->httpMetas, $this->stylesheets, $this->javascripts, $this->slots)); + } + + /** + * @see sfResponse + */ + public function unserialize($serialized) + { + list($this->content, $this->statusCode, $this->statusText, $this->options, $this->headerOnly, $this->headers, $this->metas, $this->httpMetas, $this->stylesheets, $this->javascripts, $this->slots) = unserialize($serialized); + } + + /** + * Validate a position name. + * + * @param string $position + * + * @throws InvalidArgumentException if the position is not available + */ + protected function validatePosition($position) + { + if (!in_array($position, $this->positions, true)) + { + throw new InvalidArgumentException(sprintf('The position "%s" does not exist (available positions: %s).', $position, implode(', ', $this->positions))); + } + } + + /** + * Fixes the content type by adding the charset for text content types. + * + * @param string $contentType The content type + * + * @return string The content type with the charset if needed + */ + protected function fixContentType($contentType) + { + // add charset if needed (only on text content) + if (false === stripos($contentType, 'charset') && (0 === stripos($contentType, 'text/') || strlen($contentType) - 3 === strripos($contentType, 'xml'))) + { + $contentType .= '; charset='.$this->options['charset']; + } + + // change the charset for the response + if (preg_match('/charset\s*=\s*(.+)\s*$/', $contentType, $match)) + { + $this->options['charset'] = $match[1]; + } + + return $contentType; + } +} diff --git a/lib/vendor/symfony/lib/routing/.svn/all-wcprops b/lib/vendor/symfony/lib/routing/.svn/all-wcprops new file mode 100644 index 0000000..817ab8e --- /dev/null +++ b/lib/vendor/symfony/lib/routing/.svn/all-wcprops @@ -0,0 +1,47 @@ +K 25 +svn:wc:ra_dav:version-url +V 40 +/!svn/ver/32939/branches/1.4/lib/routing +END +sfRoute.class.php +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/32939/branches/1.4/lib/routing/sfRoute.class.php +END +sfObjectRouteCollection.class.php +K 25 +svn:wc:ra_dav:version-url +V 74 +/!svn/ver/32654/branches/1.4/lib/routing/sfObjectRouteCollection.class.php +END +sfObjectRoute.class.php +K 25 +svn:wc:ra_dav:version-url +V 64 +/!svn/ver/23881/branches/1.4/lib/routing/sfObjectRoute.class.php +END +sfPatternRouting.class.php +K 25 +svn:wc:ra_dav:version-url +V 67 +/!svn/ver/32845/branches/1.4/lib/routing/sfPatternRouting.class.php +END +sfRequestRoute.class.php +K 25 +svn:wc:ra_dav:version-url +V 65 +/!svn/ver/23881/branches/1.4/lib/routing/sfRequestRoute.class.php +END +sfRouting.class.php +K 25 +svn:wc:ra_dav:version-url +V 60 +/!svn/ver/23881/branches/1.4/lib/routing/sfRouting.class.php +END +sfRouteCollection.class.php +K 25 +svn:wc:ra_dav:version-url +V 68 +/!svn/ver/29491/branches/1.4/lib/routing/sfRouteCollection.class.php +END diff --git a/lib/vendor/symfony/lib/routing/.svn/entries b/lib/vendor/symfony/lib/routing/.svn/entries new file mode 100644 index 0000000..44550cb --- /dev/null +++ b/lib/vendor/symfony/lib/routing/.svn/entries @@ -0,0 +1,266 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/routing +http://svn.symfony-project.com + + + +2011-08-22T13:40:06.742701Z +32939 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +sfRoute.class.php +file + + + + +2012-05-10T18:41:48.037549Z +a4708b90cc3364998a8ce2b6f3ee3546 +2011-08-22T13:40:06.742701Z +32939 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +22735 + +sfObjectRouteCollection.class.php +file + + + + +2012-05-10T18:41:48.037549Z +2cad0d0982e522da06540bf560eae66d +2011-06-15T18:58:43.342852Z +32654 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +9653 + +sfObjectRoute.class.php +file + + + + +2012-05-10T18:41:48.045552Z +fcf7d47d1ff58d768dcda8859cf89bce +2009-08-04T20:53:57.317218Z +20784 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +6920 + +sfPatternRouting.class.php +file + + + + +2012-05-10T18:41:48.045552Z +7ebf90194923ecb46690d7b70b42a135 +2011-07-28T11:50:48.967102Z +32845 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +14179 + +sfRequestRoute.class.php +file + + + + +2012-05-10T18:41:48.104601Z +33aff61aa4ecc2682b50a2e676a63daa +2009-08-04T20:53:57.317218Z +20784 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +2813 + +sfRouting.class.php +file + + + + +2012-05-10T18:41:48.105549Z +d26dcc815c61fc3d91fb984f36b96899 +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +7377 + +sfRouteCollection.class.php +file + + + + +2012-05-10T18:41:48.105549Z +b0c25ff56140553dc8cb7e0d069cf488 +2010-05-17T13:10:55.585045Z +29491 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +2217 + diff --git a/lib/vendor/symfony/lib/routing/.svn/prop-base/sfObjectRoute.class.php.svn-base b/lib/vendor/symfony/lib/routing/.svn/prop-base/sfObjectRoute.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/routing/.svn/prop-base/sfObjectRoute.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/routing/.svn/prop-base/sfObjectRouteCollection.class.php.svn-base b/lib/vendor/symfony/lib/routing/.svn/prop-base/sfObjectRouteCollection.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/routing/.svn/prop-base/sfObjectRouteCollection.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/routing/.svn/prop-base/sfPatternRouting.class.php.svn-base b/lib/vendor/symfony/lib/routing/.svn/prop-base/sfPatternRouting.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/routing/.svn/prop-base/sfPatternRouting.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/routing/.svn/prop-base/sfRequestRoute.class.php.svn-base b/lib/vendor/symfony/lib/routing/.svn/prop-base/sfRequestRoute.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/routing/.svn/prop-base/sfRequestRoute.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/routing/.svn/prop-base/sfRoute.class.php.svn-base b/lib/vendor/symfony/lib/routing/.svn/prop-base/sfRoute.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/routing/.svn/prop-base/sfRoute.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/routing/.svn/prop-base/sfRouteCollection.class.php.svn-base b/lib/vendor/symfony/lib/routing/.svn/prop-base/sfRouteCollection.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/routing/.svn/prop-base/sfRouteCollection.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/routing/.svn/prop-base/sfRouting.class.php.svn-base b/lib/vendor/symfony/lib/routing/.svn/prop-base/sfRouting.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/routing/.svn/prop-base/sfRouting.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/routing/.svn/text-base/sfObjectRoute.class.php.svn-base b/lib/vendor/symfony/lib/routing/.svn/text-base/sfObjectRoute.class.php.svn-base new file mode 100644 index 0000000..4dc5473 --- /dev/null +++ b/lib/vendor/symfony/lib/routing/.svn/text-base/sfObjectRoute.class.php.svn-base @@ -0,0 +1,240 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfObjectRoute represents a route that is bound to PHP object(s). + * + * An object route can represent a single object or a list of objects. + * + * @package symfony + * @subpackage routing + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfObjectRoute extends sfRequestRoute +{ + protected + $object = false, + $objects = false; + + /** + * Constructor. + * + * @param string $pattern The pattern to match + * @param array $defaults An array of default parameter values + * @param array $requirements An array of requirements for parameters (regexes) + * @param array $options An array of options + * + * @see sfRoute + */ + public function __construct($pattern, array $defaults = array(), array $requirements = array(), array $options = array()) + { + if (!isset($options['model'])) + { + throw new InvalidArgumentException(sprintf('You must pass a "model" option for a %s object (%s).', get_class($this), $pattern)); + } + + if (!isset($options['type'])) + { + throw new InvalidArgumentException(sprintf('You must pass a "type" option for a %s object (%s).', get_class($this), $pattern)); + } + + if (!in_array($options['type'], array('object', 'list'))) + { + throw new InvalidArgumentException(sprintf('The "type" option can only be "object" or "list", "%s" given (%s).', $options['type'], $pattern)); + } + + parent::__construct($pattern, $defaults, $requirements, $options); + } + + /** + * Returns true if the parameters matches this route, false otherwise. + * + * @param mixed $params The parameters + * @param array $context The context + * + * @return Boolean true if the parameters matches this route, false otherwise. + */ + public function matchesParameters($params, $context = array()) + { + return parent::matchesParameters('object' == $this->options['type'] ? $this->convertObjectToArray($params) : $params); + } + + /** + * Generates a URL from the given parameters. + * + * @param mixed $params The parameter values + * @param array $context The context + * @param Boolean $absolute Whether to generate an absolute URL + * + * @return string The generated URL + */ + public function generate($params, $context = array(), $absolute = false) + { + return parent::generate('object' == $this->options['type'] ? $this->convertObjectToArray($params) : $params, $context, $absolute); + } + + /** + * Gets the object related to the current route and parameters. + * + * This method is only accessible if the route is bound and of type "object". + * + * @return Object The related object + */ + public function getObject() + { + if (!$this->isBound()) + { + throw new LogicException('The route is not bound.'); + } + + if ('object' != $this->options['type']) + { + throw new LogicException(sprintf('The route "%s" is not of type "object".', $this->pattern)); + } + + if (false !== $this->object) + { + return $this->object; + } + + // check the related object + if (!($this->object = $this->getObjectForParameters($this->parameters)) && (!isset($this->options['allow_empty']) || !$this->options['allow_empty'])) + { + throw new sfError404Exception(sprintf('Unable to find the %s object with the following parameters "%s").', $this->options['model'], str_replace("\n", '', var_export($this->filterParameters($this->parameters), true)))); + } + + return $this->object; + } + + /** + * Gets the list of objects related to the current route and parameters. + * + * This method is only accessible if the route is bound and of type "list". + * + * @return array And array of related objects + */ + public function getObjects() + { + if (!$this->isBound()) + { + throw new LogicException('The route is not bound.'); + } + + if ('list' != $this->options['type']) + { + throw new LogicException(sprintf('The route "%s" is not of type "list".', $this->pattern)); + } + + if (false !== $this->objects) + { + return $this->objects; + } + + $this->objects = $this->getObjectsForParameters($this->parameters); + + if (!count($this->objects) && isset($this->options['allow_empty']) && !$this->options['allow_empty']) + { + throw new sfError404Exception(sprintf('No %s object found for the following parameters "%s").', $this->options['model'], str_replace("\n", '', var_export($this->filterParameters($this->parameters), true)))); + } + + return $this->objects; + } + + protected function getObjectForParameters($parameters) + { + $className = $this->options['model']; + + if (!isset($this->options['method'])) + { + throw new InvalidArgumentException(sprintf('You must pass a "method" option for a %s object.', get_class($this))); + } + + return call_user_func(array($className, $this->options['method']), $this->filterParameters($parameters)); + } + + protected function getObjectsForParameters($parameters) + { + $className = $this->options['model']; + + if (!isset($this->options['method'])) + { + throw new InvalidArgumentException(sprintf('You must pass a "method" option for a %s object.', get_class($this))); + } + + return call_user_func(array($className, $this->options['method']), $this->filterParameters($parameters)); + } + + protected function filterParameters($parameters) + { + if (!is_array($parameters)) + { + return $parameters; + } + + $params = array(); + foreach (array_keys($this->variables) as $variable) + { + $params[$variable] = $parameters[$variable]; + } + + return $params; + } + + protected function convertObjectToArray($object) + { + if (!$this->compiled) + { + $this->compile(); + } + + if (is_array($object)) + { + if (!isset($object['sf_subject'])) + { + return $object; + } + + $parameters = $object; + $object = $parameters['sf_subject']; + unset($parameters['sf_subject']); + } + else + { + $parameters = array(); + } + + return array_merge($parameters, $this->doConvertObjectToArray($object)); + } + + protected function doConvertObjectToArray($object) + { + $method = isset($this->options['convert']) ? $this->options['convert'] : 'toParams'; + + return $object->$method(); + } + + protected function getRealVariables() + { + $variables = array(); + + foreach (array_keys($this->variables) as $variable) + { + if (0 === strpos($variable, 'sf_') || in_array($variable, array('module', 'action'))) + { + continue; + } + + $variables[] = $variable; + } + + return $variables; + } +} diff --git a/lib/vendor/symfony/lib/routing/.svn/text-base/sfObjectRouteCollection.class.php.svn-base b/lib/vendor/symfony/lib/routing/.svn/text-base/sfObjectRouteCollection.class.php.svn-base new file mode 100644 index 0000000..b5560b4 --- /dev/null +++ b/lib/vendor/symfony/lib/routing/.svn/text-base/sfObjectRouteCollection.class.php.svn-base @@ -0,0 +1,226 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfObjectRouteCollection represents a collection of routes bound to objects. + * + * @package symfony + * @subpackage routing + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfObjectRouteCollection extends sfRouteCollection +{ + protected + $routeClass = 'sfObjectRoute'; + + /** + * Constructor. + * + * @param array $options An array of options + */ + public function __construct(array $options) + { + parent::__construct($options); + + if (!isset($this->options['model'])) + { + throw new InvalidArgumentException(sprintf('You must pass a "model" option to %s ("%s" route)', get_class($this), $this->options['name'])); + } + + $this->options = array_merge(array( + 'actions' => false, + 'module' => $this->options['name'], + 'prefix_path' => '/'.$this->options['name'], + 'column' => isset($this->options['column']) ? $this->options['column'] : 'id', + 'with_show' => true, + 'segment_names' => array('edit' => 'edit', 'new' => 'new'), + 'model_methods' => array(), + 'requirements' => array(), + 'with_wildcard_routes' => false, + 'default_params' => array(), + ), $this->options); + + $this->options['requirements'] = array_merge(array($this->options['column'] => 'id' == $this->options['column'] ? '\d+' : null), $this->options['requirements']); + $this->options['model_methods'] = array_merge(array('list' => null, 'object' => null), $this->options['model_methods']); + + if (isset($this->options['route_class'])) + { + $this->routeClass = $this->options['route_class']; + } + + $this->generateRoutes(); + } + + protected function generateRoutes() + { + // collection actions + if (isset($this->options['collection_actions'])) + { + foreach ($this->options['collection_actions'] as $action => $methods) + { + $this->routes[$this->getRoute($action)] = $this->getRouteForCollection($action, $methods); + } + } + + // "standard" actions + $actions = false === $this->options['actions'] ? $this->getDefaultActions() : $this->options['actions']; + foreach ($actions as $action) + { + $method = 'getRouteFor'.ucfirst($action); + if (!method_exists($this, $method)) + { + throw new InvalidArgumentException(sprintf('Unable to generate a route for the "%s" action.', $action)); + } + + $this->routes[$this->getRoute($action)] = $this->$method(); + } + + // object actions + if (isset($this->options['object_actions'])) + { + foreach ($this->options['object_actions'] as $action => $methods) + { + $this->routes[$this->getRoute($action)] = $this->getRouteForObject($action, $methods); + } + } + + if ($this->options['with_wildcard_routes']) + { + // wildcard object actions + $this->routes[$this->getRoute('object')] = new $this->routeClass( + sprintf('%s/:%s/:action.:sf_format', $this->options['prefix_path'], $this->options['column']), + array_merge(array('module' => $this->options['module'], 'sf_format' => 'html'), $this->options['default_params']), + array_merge($this->options['requirements'], array('sf_method' => array('get', 'head'))), + array('model' => $this->options['model'], 'type' => 'object', 'method' => $this->options['model_methods']['object']) + ); + + // wildcard collection actions + $this->routes[$this->getRoute('collection')] = new $this->routeClass( + sprintf('%s/:action/action.:sf_format', $this->options['prefix_path']), + array_merge(array('module' => $this->options['module'], 'sf_format' => 'html'), $this->options['default_params']), + array_merge($this->options['requirements'], array('sf_method' => 'post')), + array('model' => $this->options['model'], 'type' => 'list', 'method' => $this->options['model_methods']['list']) + ); + } + } + + protected function getRouteForCollection($action, $methods) + { + return new $this->routeClass( + sprintf('%s/%s.:sf_format', $this->options['prefix_path'], $action), + array_merge(array('module' => $this->options['module'], 'action' => $action, 'sf_format' => 'html'), $this->options['default_params']), + array_merge($this->options['requirements'], array('sf_method' => $methods)), + array('model' => $this->options['model'], 'type' => 'list', 'method' => $this->options['model_methods']['list']) + ); + } + + protected function getRouteForObject($action, $methods) + { + return new $this->routeClass( + sprintf('%s/:%s/%s.:sf_format', $this->options['prefix_path'], $this->options['column'], $action), + array_merge(array('module' => $this->options['module'], 'action' => $action, 'sf_format' => 'html'), $this->options['default_params']), + array_merge($this->options['requirements'], array('sf_method' => $methods)), + array('model' => $this->options['model'], 'type' => 'object', 'method' => $this->options['model_methods']['object']) + ); + } + + protected function getRouteForList() + { + return new $this->routeClass( + sprintf('%s.:sf_format', $this->options['prefix_path']), + array_merge(array('module' => $this->options['module'], 'action' => $this->getActionMethod('list'), 'sf_format' => 'html'), $this->options['default_params']), + array_merge($this->options['requirements'], array('sf_method' => array('get', 'head'))), + array('model' => $this->options['model'], 'type' => 'list', 'method' => $this->options['model_methods']['list']) + ); + } + + protected function getRouteForNew() + { + return new $this->routeClass( + sprintf('%s/%s.:sf_format', $this->options['prefix_path'], $this->options['segment_names']['new']), + array_merge(array('module' => $this->options['module'], 'action' => $this->getActionMethod('new'), 'sf_format' => 'html'), $this->options['default_params']), + array_merge($this->options['requirements'], array('sf_method' => array('get', 'head'))), + array('model' => $this->options['model'], 'type' => 'object') + ); + } + + protected function getRouteForCreate() + { + return new $this->routeClass( + sprintf('%s.:sf_format', $this->options['prefix_path']), + array_merge(array('module' => $this->options['module'], 'action' => $this->getActionMethod('create'), 'sf_format' => 'html'), $this->options['default_params']), + array_merge($this->options['requirements'], array('sf_method' => 'post')), + array('model' => $this->options['model'], 'type' => 'object') + ); + } + + protected function getRouteForShow() + { + return new $this->routeClass( + sprintf('%s/:%s.:sf_format', $this->options['prefix_path'], $this->options['column']), + array_merge(array('module' => $this->options['module'], 'action' => $this->getActionMethod('show'), 'sf_format' => 'html'), $this->options['default_params']), + array_merge($this->options['requirements'], array('sf_method' => array('get', 'head'))), + array('model' => $this->options['model'], 'type' => 'object', 'method' => $this->options['model_methods']['object']) + ); + } + + protected function getRouteForEdit() + { + return new $this->routeClass( + sprintf('%s/:%s/%s.:sf_format', $this->options['prefix_path'], $this->options['column'], $this->options['segment_names']['edit']), + array_merge(array('module' => $this->options['module'], 'action' => $this->getActionMethod('edit'), 'sf_format' => 'html'), $this->options['default_params']), + array_merge($this->options['requirements'], array('sf_method' => array('get', 'head'))), + array('model' => $this->options['model'], 'type' => 'object', 'method' => $this->options['model_methods']['object']) + ); + } + + protected function getRouteForUpdate() + { + return new $this->routeClass( + sprintf('%s/:%s.:sf_format', $this->options['prefix_path'], $this->options['column']), + array_merge(array('module' => $this->options['module'], 'action' => $this->getActionMethod('update'), 'sf_format' => 'html'), $this->options['default_params']), + array_merge($this->options['requirements'], array('sf_method' => 'put')), + array('model' => $this->options['model'], 'type' => 'object', 'method' => $this->options['model_methods']['object']) + ); + } + + protected function getRouteForDelete() + { + return new $this->routeClass( + sprintf('%s/:%s.:sf_format', $this->options['prefix_path'], $this->options['column']), + array_merge(array('module' => $this->options['module'], 'action' => $this->getActionMethod('delete'), 'sf_format' => 'html'), $this->options['default_params']), + array_merge($this->options['requirements'], array('sf_method' => 'delete')), + array('model' => $this->options['model'], 'type' => 'object', 'method' => $this->options['model_methods']['object']) + ); + } + + protected function getDefaultActions() + { + $actions = array('list', 'new', 'create', 'edit', 'update', 'delete'); + + if ($this->options['with_show']) + { + $actions[] = 'show'; + } + + return $actions; + } + + protected function getRoute($action) + { + return 'list' == $action ? $this->options['name'] : $this->options['name'].'_'.$action; + } + + protected function getActionMethod($action) + { + return 'list' == $action ? 'index' : $action; + } +} diff --git a/lib/vendor/symfony/lib/routing/.svn/text-base/sfPatternRouting.class.php.svn-base b/lib/vendor/symfony/lib/routing/.svn/text-base/sfPatternRouting.class.php.svn-base new file mode 100644 index 0000000..2091749 --- /dev/null +++ b/lib/vendor/symfony/lib/routing/.svn/text-base/sfPatternRouting.class.php.svn-base @@ -0,0 +1,530 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfPatternRouting class controls the generation and parsing of URLs. + * + * It parses and generates URLs by delegating the work to an array of sfRoute objects. + * + * @package symfony + * @subpackage routing + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfPatternRouting extends sfRouting +{ + protected + $currentRouteName = null, + $currentInternalUri = array(), + $routes = array(), + $defaultParamsDirty = false, + $cacheData = array(), + $cacheChanged = false; + + /** + * Initializes this Routing. + * + * Available options: + * + * * suffix: The default suffix + * * variable_prefixes: An array of characters that starts a variable name (: by default) + * * segment_separators: An array of allowed characters for segment separators (/ and . by default) + * * variable_regex: A regex that match a valid variable name ([\w\d_]+ by default) + * * generate_shortest_url: Whether to generate the shortest URL possible (true by default) + * * extra_parameters_as_query_string: Whether to generate extra parameters as a query string + * * lookup_cache_dedicated_keys: Whether to use dedicated keys for parse/generate cache (false by default) + * WARNING: When this option is activated, do not use sfFileCache; use a fast access + * cache backend (like sfAPCCache). + * + * @see sfRouting + */ + public function initialize(sfEventDispatcher $dispatcher, sfCache $cache = null, $options = array()) + { + $options = array_merge(array( + 'variable_prefixes' => array(':'), + 'segment_separators' => array('/', '.'), + 'variable_regex' => '[\w\d_]+', + 'load_configuration' => false, + 'suffix' => '', + 'generate_shortest_url' => true, + 'extra_parameters_as_query_string' => true, + 'lookup_cache_dedicated_keys' => false, + ), $options); + + // for BC + if ('.' == $options['suffix']) + { + $options['suffix'] = ''; + } + + parent::initialize($dispatcher, $cache, $options); + + if (null !== $this->cache && !$options['lookup_cache_dedicated_keys'] && $cacheData = $this->cache->get('symfony.routing.data')) + { + $this->cacheData = unserialize($cacheData); + } + } + + /** + * @see sfRouting + */ + public function loadConfiguration() + { + if ($this->options['load_configuration'] && $config = $this->getConfigFilename()) + { + include($config); + } + + parent::loadConfiguration(); + } + + /** + * Added for better performance. We need to ensure that changed default parameters + * are set, but resetting them everytime wastes many cpu cycles + */ + protected function ensureDefaultParametersAreSet() + { + if ($this->defaultParamsDirty) + { + foreach ($this->routes as $route) + { + $route->setDefaultParameters($this->defaultParameters); + } + $this->defaultParamsDirty = false; + } + } + + /** + * @see sfRouting + */ + public function setDefaultParameter($key, $value) + { + parent::setDefaultParameter($key, $value); + $this->defaultParamsDirty = true; + } + + /** + * @see sfRouting + */ + public function setDefaultParameters($parameters) + { + parent::setDefaultParameters($parameters); + $this->defaultParamsDirty = true; + } + + protected function getConfigFileName() + { + return sfContext::getInstance()->getConfigCache()->checkConfig('config/routing.yml', true); + } + + /** + * @see sfRouting + */ + public function getCurrentInternalUri($withRouteName = false) + { + return null === $this->currentRouteName ? null : $this->currentInternalUri[$withRouteName ? 0 : 1]; + } + + /** + * Gets the current route name. + * + * @return string The route name + */ + public function getCurrentRouteName() + { + return $this->currentRouteName; + } + + /** + * @see sfRouting + */ + public function getRoutes() + { + return $this->routes; + } + + /** + * @see sfRouting + */ + public function setRoutes($routes) + { + foreach ($routes as $name => $route) + { + $this->connect($name, $route); + } + } + + /** + * @see sfRouting + */ + public function hasRoutes() + { + return count($this->routes) ? true : false; + } + + /** + * @see sfRouting + */ + public function clearRoutes() + { + if ($this->options['logging']) + { + $this->dispatcher->notify(new sfEvent($this, 'application.log', array('Clear all current routes'))); + } + + $this->routes = array(); + } + + /** + * Returns true if the route name given is defined. + * + * @param string $name The route name + * + * @return boolean + */ + public function hasRouteName($name) + { + return isset($this->routes[$name]) ? true : false; + } + + /** + * Adds a new route at the beginning of the current list of routes. + * + * @see connect + */ + public function prependRoute($name, $route) + { + $routes = $this->routes; + $this->routes = array(); + $this->connect($name, $route); + $this->routes = array_merge($this->routes, $routes); + } + + /** + * Adds a new route. + * + * Alias for the connect method. + * + * @see connect + */ + public function appendRoute($name, $route) + { + return $this->connect($name, $route); + } + + /** + * Adds a new route before a given one in the current list of routes. + * + * @see connect + */ + public function insertRouteBefore($pivot, $name, $route) + { + if (!isset($this->routes[$pivot])) + { + throw new sfConfigurationException(sprintf('Unable to insert route "%s" before inexistent route "%s".', $name, $pivot)); + } + + $routes = $this->routes; + $this->routes = array(); + $newroutes = array(); + foreach ($routes as $key => $value) + { + if ($key == $pivot) + { + $this->connect($name, $route); + $newroutes = array_merge($newroutes, $this->routes); + } + $newroutes[$key] = $value; + } + + $this->routes = $newroutes; + } + + /** + * Adds a new route at the end of the current list of routes. + * + * A route string is a string with 2 special constructions: + * - :string: :string denotes a named parameter (available later as $request->getParameter('string')) + * - *: * match an indefinite number of parameters in a route + * + * Here is a very common rule in a symfony project: + * + * + * $r->connect('default', new sfRoute('/:module/:action/*')); + * + * + * @param string $name The route name + * @param sfRoute $route A sfRoute instance + * + * @return array current routes + */ + public function connect($name, $route) + { + $routes = $route instanceof sfRouteCollection ? $route : array($name => $route); + foreach (self::flattenRoutes($routes) as $name => $route) + { + $this->routes[$name] = $route; + $this->configureRoute($route); + + if ($this->options['logging']) + { + $this->dispatcher->notify(new sfEvent($this, 'application.log', array(sprintf('Connect %s "%s" (%s)', get_class($route), $name, $route->getPattern())))); + } + } + } + + public function configureRoute(sfRoute $route) + { + $route->setDefaultParameters($this->defaultParameters); + $route->setDefaultOptions($this->options); + } + + /** + * @see sfRouting + */ + public function generate($name, $params = array(), $absolute = false) + { + // fetch from cache + if (null !== $this->cache) + { + $cacheKey = 'generate_'.$name.'_'.md5(serialize(array_merge($this->defaultParameters, $params))).'_'.md5(serialize($this->options['context'])); + if ($this->options['lookup_cache_dedicated_keys'] && $url = $this->cache->get('symfony.routing.data.'.$cacheKey)) + { + return $this->fixGeneratedUrl($url, $absolute); + } + elseif (isset($this->cacheData[$cacheKey])) + { + return $this->fixGeneratedUrl($this->cacheData[$cacheKey], $absolute); + } + } + + if ($name) + { + // named route + if (!isset($this->routes[$name])) + { + throw new sfConfigurationException(sprintf('The route "%s" does not exist.', $name)); + } + $route = $this->routes[$name]; + $this->ensureDefaultParametersAreSet(); + } + else + { + // find a matching route + if (false === $route = $this->getRouteThatMatchesParameters($params)) + { + throw new sfConfigurationException(sprintf('Unable to find a matching route to generate url for params "%s".', is_object($params) ? 'Object('.get_class($params).')' : str_replace("\n", '', var_export($params, true)))); + } + } + + $url = $route->generate($params, $this->options['context'], $absolute); + + // store in cache + if (null !== $this->cache) + { + if ($this->options['lookup_cache_dedicated_keys']) + { + $this->cache->set('symfony.routing.data.'.$cacheKey, $url); + } + else + { + $this->cacheChanged = true; + $this->cacheData[$cacheKey] = $url; + } + } + + return $this->fixGeneratedUrl($url, $absolute); + } + + /** + * @see sfRouting + */ + public function parse($url) + { + if (false === $info = $this->findRoute($url)) + { + $this->currentRouteName = null; + $this->currentInternalUri = array(); + + return false; + } + + if ($this->options['logging']) + { + $this->dispatcher->notify(new sfEvent($this, 'application.log', array(sprintf('Match route "%s" (%s) for %s with parameters %s', $info['name'], $info['pattern'], $url, str_replace("\n", '', var_export($info['parameters'], true)))))); + } + + // store the current internal URI + $this->updateCurrentInternalUri($info['name'], $info['parameters']); + + $route = $this->routes[$info['name']]; + + $this->ensureDefaultParametersAreSet(); + + $route->bind($this->options['context'], $info['parameters']); + $info['parameters']['_sf_route'] = $route; + + return $info['parameters']; + } + + protected function updateCurrentInternalUri($name, array $parameters) + { + // store the route name + $this->currentRouteName = $name; + + $internalUri = array('@'.$this->currentRouteName, $parameters['module'].'/'.$parameters['action']); + unset($parameters['module'], $parameters['action']); + + $params = array(); + foreach ($parameters as $key => $value) + { + $params[] = $key.'='.$value; + } + + // sort to guaranty unicity + sort($params); + + $params = $params ? '?'.implode('&', $params) : ''; + + $this->currentInternalUri = array($internalUri[0].$params, $internalUri[1].$params); + } + + /** + * Finds a matching route for given URL. + * + * Returns false if no route matches. + * + * Returned array contains: + * + * - name: name or alias of the route that matched + * - pattern: the compiled pattern of the route that matched + * - parameters: array containing key value pairs of the request parameters including defaults + * + * @param string $url URL to be parsed + * + * @return array|false An array with routing information or false if no route matched + */ + public function findRoute($url) + { + $url = $this->normalizeUrl($url); + + // fetch from cache + if (null !== $this->cache) + { + $cacheKey = 'parse_'.$url.'_'.md5(serialize($this->options['context'])); + if ($this->options['lookup_cache_dedicated_keys'] && $info = $this->cache->get('symfony.routing.data.'.$cacheKey)) + { + return unserialize($info); + } + elseif (isset($this->cacheData[$cacheKey])) + { + return $this->cacheData[$cacheKey]; + } + } + + $info = $this->getRouteThatMatchesUrl($url); + + // store in cache + if (null !== $this->cache) + { + if ($this->options['lookup_cache_dedicated_keys']) + { + $this->cache->set('symfony.routing.data.'.$cacheKey, serialize($info)); + } + else + { + $this->cacheChanged = true; + $this->cacheData[$cacheKey] = $info; + } + } + + return $info; + } + + static public function flattenRoutes($routes) + { + $flattenRoutes = array(); + foreach ($routes as $name => $route) + { + if ($route instanceof sfRouteCollection) + { + $flattenRoutes = array_merge($flattenRoutes, self::flattenRoutes($route)); + } + else + { + $flattenRoutes[$name] = $route; + } + } + + return $flattenRoutes; + } + + protected function getRouteThatMatchesUrl($url) + { + $this->ensureDefaultParametersAreSet(); + foreach ($this->routes as $name => $route) + { + if (false === $parameters = $route->matchesUrl($url, $this->options['context'])) + { + continue; + } + + return array('name' => $name, 'pattern' => $route->getPattern(), 'parameters' => $parameters); + } + + return false; + } + + protected function getRouteThatMatchesParameters($parameters) + { + $this->ensureDefaultParametersAreSet(); + foreach ($this->routes as $route) + { + if ($route->matchesParameters($parameters, $this->options['context'])) + { + return $route; + } + } + + return false; + } + + protected function normalizeUrl($url) + { + // an URL should start with a '/', mod_rewrite doesn't respect that, but no-mod_rewrite version does. + if ('/' != substr($url, 0, 1)) + { + $url = '/'.$url; + } + + // we remove the query string + if (false !== $pos = strpos($url, '?')) + { + $url = substr($url, 0, $pos); + } + + // remove multiple / + $url = preg_replace('#/+#', '/', $url); + + return $url; + } + + /** + * @see sfRouting + */ + public function shutdown() + { + if (null !== $this->cache && $this->cacheChanged) + { + $this->cacheChanged = false; + $this->cache->set('symfony.routing.data', serialize($this->cacheData)); + } + } +} diff --git a/lib/vendor/symfony/lib/routing/.svn/text-base/sfRequestRoute.class.php.svn-base b/lib/vendor/symfony/lib/routing/.svn/text-base/sfRequestRoute.class.php.svn-base new file mode 100644 index 0000000..d99559f --- /dev/null +++ b/lib/vendor/symfony/lib/routing/.svn/text-base/sfRequestRoute.class.php.svn-base @@ -0,0 +1,107 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfRequestRoute represents a route that is request aware. + * + * It implements the sf_method requirement. + * + * @package symfony + * @subpackage routing + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfRequestRoute extends sfRoute +{ + /** + * Constructor. + * + * Applies a default sf_method requirements of GET or HEAD. + * + * @see sfRoute + */ + public function __construct($pattern, $defaults = array(), $requirements = array(), $options = array()) + { + if (!isset($requirements['sf_method'])) + { + $requirements['sf_method'] = array('get', 'head'); + } + else + { + $requirements['sf_method'] = array_map('strtolower', (array) $requirements['sf_method']); + } + + parent::__construct($pattern, $defaults, $requirements, $options); + } + + /** + * Returns true if the URL matches this route, false otherwise. + * + * @param string $url The URL + * @param array $context The context + * + * @return array An array of parameters + */ + public function matchesUrl($url, $context = array()) + { + if (false === $parameters = parent::matchesUrl($url, $context)) + { + return false; + } + + // enforce the sf_method requirement + if (in_array(strtolower($context['method']), $this->requirements['sf_method'])) + { + return $parameters; + } + + return false; + } + + /** + * Returns true if the parameters match this route, false otherwise. + * + * @param mixed $params The parameters + * @param array $context The context + * + * @return Boolean true if the parameters match this route, false otherwise. + */ + public function matchesParameters($params, $context = array()) + { + if (isset($params['sf_method'])) + { + // enforce the sf_method requirement + if (!in_array(strtolower($params['sf_method']), $this->requirements['sf_method'])) + { + return false; + } + + unset($params['sf_method']); + } + + return parent::matchesParameters($params, $context); + } + + /** + * Generates a URL from the given parameters. + * + * @param mixed $params The parameter values + * @param array $context The context + * @param Boolean $absolute Whether to generate an absolute URL + * + * @return string The generated URL + */ + public function generate($params, $context = array(), $absolute = false) + { + unset($params['sf_method']); + + return parent::generate($params, $context, $absolute); + } +} diff --git a/lib/vendor/symfony/lib/routing/.svn/text-base/sfRoute.class.php.svn-base b/lib/vendor/symfony/lib/routing/.svn/text-base/sfRoute.class.php.svn-base new file mode 100644 index 0000000..ae9a1b9 --- /dev/null +++ b/lib/vendor/symfony/lib/routing/.svn/text-base/sfRoute.class.php.svn-base @@ -0,0 +1,856 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfRoute represents a route. + * + * @package symfony + * @subpackage routing + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfRoute implements Serializable +{ + protected + $isBound = false, + $context = null, + $parameters = null, + $suffix = null, + $defaultParameters = array(), + $defaultOptions = array(), + $compiled = false, + $options = array(), + $pattern = null, + $staticPrefix = null, + $regex = null, + $variables = array(), + $defaults = array(), + $requirements = array(), + $tokens = array(), + $customToken = false; + + /** + * Constructor. + * + * Available options: + * + * * variable_prefixes: An array of characters that starts a variable name (: by default) + * * segment_separators: An array of allowed characters for segment separators (/ and . by default) + * * variable_regex: A regex that match a valid variable name ([\w\d_]+ by default) + * * generate_shortest_url: Whether to generate the shortest URL possible (true by default) + * * extra_parameters_as_query_string: Whether to generate extra parameters as a query string + * + * @param string $pattern The pattern to match + * @param array $defaults An array of default parameter values + * @param array $requirements An array of requirements for parameters (regexes) + * @param array $options An array of options + */ + public function __construct($pattern, array $defaults = array(), array $requirements = array(), array $options = array()) + { + $this->pattern = trim($pattern); + $this->defaults = $defaults; + $this->requirements = $requirements; + $this->options = $options; + } + + /** + * Binds the current route for a given context and parameters. + * + * @param array $context The context + * @param array $parameters The parameters + */ + public function bind($context, $parameters) + { + $this->isBound = true; + $this->context = $context; + $this->parameters = $parameters; + } + + /** + * Returns true if the route is bound to context and parameters. + * + * @return Boolean true if theroute is bound to context and parameters, false otherwise + */ + public function isBound() + { + return $this->isBound; + } + + /** + * Returns an array of parameters if the URL matches this route, false otherwise. + * + * @param string $url The URL + * @param array $context The context + * + * @return array An array of parameters + */ + public function matchesUrl($url, $context = array()) + { + if (!$this->compiled) + { + $this->compile(); + } + + // check the static prefix uf the URL first. Only use the more expensive preg_match when it matches + if ('' !== $this->staticPrefix && 0 !== strpos($url, $this->staticPrefix)) + { + return false; + } + if (!preg_match($this->regex, $url, $matches)) + { + return false; + } + + $defaults = array_merge($this->getDefaultParameters(), $this->defaults); + $parameters = array(); + + // * + if (isset($matches['_star'])) + { + $parameters = $this->parseStarParameter($matches['_star']); + unset($matches['_star'], $parameters['module'], $parameters['action']); + } + + // defaults + $parameters = $this->mergeArrays($defaults, $parameters); + + // variables + foreach ($matches as $key => $value) + { + if (!is_int($key)) + { + $parameters[$key] = urldecode($value); + } + } + + return $parameters; + } + + /** + * Returns true if the parameters matches this route, false otherwise. + * + * @param mixed $params The parameters + * @param array $context The context + * + * @return Boolean true if the parameters matches this route, false otherwise. + */ + public function matchesParameters($params, $context = array()) + { + if (!$this->compiled) + { + $this->compile(); + } + + if (!is_array($params)) + { + return false; + } + + $defaults = $this->mergeArrays($this->getDefaultParameters(), $this->defaults); + $tparams = $this->mergeArrays($defaults, $params); + + // all $variables must be defined in the $tparams array + if (array_diff_key($this->variables, $tparams)) + { + return false; + } + + // check requirements + foreach (array_keys($this->variables) as $variable) + { + if (!$tparams[$variable]) + { + continue; + } + + if (!preg_match('#'.$this->requirements[$variable].'#', $tparams[$variable])) + { + return false; + } + } + + // all $params must be in $variables or $defaults if there is no * in route + if (!$this->options['extra_parameters_as_query_string']) + { + if (false === strpos($this->regex, '<_star>') && array_diff_key($params, $this->variables, $defaults)) + { + return false; + } + } + + // check that $params does not override a default value that is not a variable + foreach ($defaults as $key => $value) + { + if (!isset($this->variables[$key]) && $tparams[$key] != $value) + { + return false; + } + } + + return true; + } + + /** + * Generates a URL from the given parameters. + * + * @param mixed $params The parameter values + * @param array $context The context + * @param Boolean $absolute Whether to generate an absolute URL + * + * @return string The generated URL + */ + public function generate($params, $context = array(), $absolute = false) + { + if (!$this->compiled) + { + $this->compile(); + } + + $url = $this->pattern; + + $defaults = $this->mergeArrays($this->getDefaultParameters(), $this->defaults); + $tparams = $this->mergeArrays($defaults, $params); + + // all params must be given + if ($diff = array_diff_key($this->variables, $tparams)) + { + throw new InvalidArgumentException(sprintf('The "%s" route has some missing mandatory parameters (%s).', $this->pattern, implode(', ', $diff))); + } + + if ($this->options['generate_shortest_url'] || $this->customToken) + { + $url = $this->generateWithTokens($tparams); + } + else + { + // replace variables + $variables = $this->variables; + uasort($variables, array('sfRoute', 'generateCompareVarsByStrlen')); + foreach ($variables as $variable => $value) + { + $url = str_replace($value, urlencode($tparams[$variable]), $url); + } + + if(!in_array($this->suffix, $this->options['segment_separators'])) + { + $url .= $this->suffix; + } + } + + // replace extra parameters if the route contains * + $url = $this->generateStarParameter($url, $defaults, $tparams); + + if ($this->options['extra_parameters_as_query_string'] && !$this->hasStarParameter()) + { + // add a query string if needed + if ($extra = array_diff_key($params, $this->variables, $defaults)) + { + $url .= '?'.http_build_query($extra); + } + } + + return $url; + } + + static private function generateCompareVarsByStrlen($a, $b) + { + return strlen($a) < strlen($b); + } + + /** + * Generates a URL for the given parameters by using the route tokens. + * + * @param array $parameters An array of parameters + */ + protected function generateWithTokens($parameters) + { + $url = array(); + $optional = $this->options['generate_shortest_url']; + $first = true; + $tokens = array_reverse($this->tokens); + foreach ($tokens as $token) + { + switch ($token[0]) + { + case 'variable': + if (!$optional || !isset($this->defaults[$token[3]]) || $parameters[$token[3]] != $this->defaults[$token[3]]) + { + $url[] = urlencode($parameters[$token[3]]); + $optional = false; + } + break; + case 'text': + $url[] = $token[2]; + $optional = false; + break; + case 'separator': + if (false === $optional || $first) + { + $url[] = $token[2]; + } + break; + default: + // handle custom tokens + if ($segment = call_user_func_array(array($this, 'generateFor'.ucfirst(array_shift($token))), array_merge(array($optional, $parameters), $token))) + { + $url[] = $segment; + $optional = false; + } + break; + } + + $first = false; + } + + $url = implode('', array_reverse($url)); + if (!$url) + { + $url = '/'; + } + + return $url; + } + + /** + * Returns the route parameters. + * + * @return array The route parameters + */ + public function getParameters() + { + if (!$this->compiled) + { + $this->compile(); + } + + return $this->parameters; + } + + /** + * Returns the compiled pattern. + * + * @return string The compiled pattern + */ + public function getPattern() + { + if (!$this->compiled) + { + $this->compile(); + } + + return $this->pattern; + } + + /** + * Returns the compiled regex. + * + * @return string The compiled regex + */ + public function getRegex() + { + if (!$this->compiled) + { + $this->compile(); + } + + return $this->regex; + } + + /** + * Returns the compiled tokens. + * + * @return array The compiled tokens + */ + public function getTokens() + { + if (!$this->compiled) + { + $this->compile(); + } + + return $this->tokens; + } + + /** + * Returns the compiled options. + * + * @return array The compiled options + */ + public function getOptions() + { + if (!$this->compiled) + { + $this->compile(); + } + + return $this->options; + } + + /** + * Returns the compiled variables. + * + * @return array The compiled variables + */ + public function getVariables() + { + if (!$this->compiled) + { + $this->compile(); + } + + return $this->variables; + } + + /** + * Returns the compiled defaults. + * + * @return array The compiled defaults + */ + public function getDefaults() + { + if (!$this->compiled) + { + $this->compile(); + } + + return $this->defaults; + } + + /** + * Returns the compiled requirements. + * + * @return array The compiled requirements + */ + public function getRequirements() + { + if (!$this->compiled) + { + $this->compile(); + } + + return $this->requirements; + } + + /** + * Compiles the current route instance. + */ + public function compile() + { + if ($this->compiled) + { + return; + } + + $this->initializeOptions(); + $this->fixRequirements(); + $this->fixDefaults(); + $this->fixSuffix(); + + $this->compiled = true; + $this->firstOptional = 0; + $this->segments = array(); + + $this->preCompile(); + + $this->tokenize(); + + // parse + foreach ($this->tokens as $token) + { + call_user_func_array(array($this, 'compileFor'.ucfirst(array_shift($token))), $token); + } + + $this->postCompile(); + + $separator = ''; + if (count($this->tokens)) + { + $lastToken = $this->tokens[count($this->tokens) - 1]; + $separator = 'separator' == $lastToken[0] ? $lastToken[2] : ''; + } + + $this->regex = "#^".implode("", $this->segments)."".preg_quote($separator, '#')."$#x"; + } + + /** + * Pre-compiles a route. + */ + protected function preCompile() + { + // a route must start with a slash + if (empty($this->pattern) || '/' != $this->pattern[0]) + { + $this->pattern = '/'.$this->pattern; + } + } + + /** + * Post-compiles a route. + */ + protected function postCompile() + { + // all segments after the last static segment are optional + // be careful, the n-1 is optional only if n is empty + for ($i = $this->firstOptional, $max = count($this->segments); $i < $max; $i++) + { + $this->segments[$i] = (0 == $i ? '/?' : '').str_repeat(' ', $i - $this->firstOptional).'(?:'.$this->segments[$i]; + $this->segments[] = str_repeat(' ', $max - $i - 1).')?'; + } + + $this->staticPrefix = ''; + foreach ($this->tokens as $token) + { + switch ($token[0]) + { + case 'separator': + break; + case 'text': + if ($token[2] !== '*') + { + // non-star text is static + $this->staticPrefix .= $token[1].$token[2]; + break; + } + default: + // everything else indicates variable parts. break switch and for loop + break 2; + } + } + } + + /** + * Tokenizes the route. + */ + protected function tokenize() + { + $this->tokens = array(); + $buffer = $this->pattern; + $afterASeparator = false; + $currentSeparator = ''; + + // a route is an array of (separator + variable) or (separator + text) segments + while (strlen($buffer)) + { + if (false !== $this->tokenizeBufferBefore($buffer, $this->tokens, $afterASeparator, $currentSeparator)) + { + // a custom token + $this->customToken = true; + } + else if ($afterASeparator && preg_match('#^'.$this->options['variable_prefix_regex'].'('.$this->options['variable_regex'].')#', $buffer, $match)) + { + // a variable + $this->tokens[] = array('variable', $currentSeparator, $match[0], $match[1]); + + $currentSeparator = ''; + $buffer = substr($buffer, strlen($match[0])); + $afterASeparator = false; + } + else if ($afterASeparator && preg_match('#^('.$this->options['text_regex'].')(?:'.$this->options['segment_separators_regex'].'|$)#', $buffer, $match)) + { + // a text + $this->tokens[] = array('text', $currentSeparator, $match[1], null); + + $currentSeparator = ''; + $buffer = substr($buffer, strlen($match[1])); + $afterASeparator = false; + } + else if (!$afterASeparator && preg_match('#^/|^'.$this->options['segment_separators_regex'].'#', $buffer, $match)) + { + // beginning of URL (^/) or a separator + $this->tokens[] = array('separator', $currentSeparator, $match[0], null); + + $currentSeparator = $match[0]; + $buffer = substr($buffer, strlen($match[0])); + $afterASeparator = true; + } + else if (false !== $this->tokenizeBufferAfter($buffer, $this->tokens, $afterASeparator, $currentSeparator)) + { + // a custom token + $this->customToken = true; + } + else + { + // parsing problem + throw new InvalidArgumentException(sprintf('Unable to parse "%s" route near "%s".', $this->pattern, $buffer)); + } + } + + // check for suffix + if ($this->suffix) + { + // treat as a separator + $this->tokens[] = array('separator', $currentSeparator, $this->suffix); + } + + } + + /** + * Tokenizes the buffer before default logic is applied. + * + * This method must return false if the buffer has not been parsed. + * + * @param string $buffer The current route buffer + * @param array $tokens An array of current tokens + * @param Boolean $afterASeparator Whether the buffer is just after a separator + * @param string $currentSeparator The last matched separator + * + * @return Boolean true if a token has been generated, false otherwise + */ + protected function tokenizeBufferBefore(&$buffer, &$tokens, &$afterASeparator, &$currentSeparator) + { + return false; + } + + /** + * Tokenizes the buffer after default logic is applied. + * + * This method must return false if the buffer has not been parsed. + * + * @param string $buffer The current route buffer + * @param array $tokens An array of current tokens + * @param Boolean $afterASeparator Whether the buffer is just after a separator + * @param string $currentSeparator The last matched separator + * + * @return Boolean true if a token has been generated, false otherwise + */ + protected function tokenizeBufferAfter(&$buffer, &$tokens, &$afterASeparator, &$currentSeparator) + { + return false; + } + + protected function compileForText($separator, $text) + { + if ('*' == $text) + { + $this->segments[] = '(?:'.preg_quote($separator, '#').'(?P<_star>.*))?'; + } + else + { + $this->firstOptional = count($this->segments) + 1; + + $this->segments[] = preg_quote($separator, '#').preg_quote($text, '#'); + } + } + + protected function compileForVariable($separator, $name, $variable) + { + if (!isset($this->requirements[$variable])) + { + $this->requirements[$variable] = $this->options['variable_content_regex']; + } + + $this->segments[] = preg_quote($separator, '#').'(?P<'.$variable.'>'.$this->requirements[$variable].')'; + $this->variables[$variable] = $name; + + if (!isset($this->defaults[$variable])) + { + $this->firstOptional = count($this->segments); + } + } + + protected function compileForSeparator($separator, $regexSeparator) + { + } + + public function getDefaultParameters() + { + return $this->defaultParameters; + } + + public function setDefaultParameters($parameters) + { + $this->defaultParameters = $parameters; + } + + public function getDefaultOptions() + { + return $this->defaultOptions; + } + + public function setDefaultOptions($options) + { + $this->defaultOptions = $options; + } + + protected function initializeOptions() + { + $this->options = array_merge(array( + 'suffix' => '', + 'variable_prefixes' => array(':'), + 'segment_separators' => array('/', '.'), + 'variable_regex' => '[\w\d_]+', + 'text_regex' => '.+?', + 'generate_shortest_url' => true, + 'extra_parameters_as_query_string' => true, + ), $this->getDefaultOptions(), $this->options); + + $preg_quote_hash = create_function('$a', 'return preg_quote($a, \'#\');'); + + // compute some regexes + $this->options['variable_prefix_regex'] = '(?:'.implode('|', array_map($preg_quote_hash, $this->options['variable_prefixes'])).')'; + + if (count($this->options['segment_separators'])) + { + $this->options['segment_separators_regex'] = '(?:'.implode('|', array_map($preg_quote_hash, $this->options['segment_separators'])).')'; + + // as of PHP 5.3.0, preg_quote automatically quotes dashes "-" (see http://bugs.php.net/bug.php?id=47229) + $preg_quote_hash_53 = create_function('$a', 'return str_replace(\'-\', \'\-\', preg_quote($a, \'#\'));'); + $this->options['variable_content_regex'] = '[^'.implode('', + array_map(version_compare(PHP_VERSION, '5.3.0RC4', '>=') ? $preg_quote_hash : $preg_quote_hash_53, $this->options['segment_separators']) + ).']+'; + } + else + { + // use simplified regexes for case where no separators are used + $this->options['segment_separators_regex'] = '()'; + $this->options['variable_content_regex'] = '.+'; + } + } + + protected function parseStarParameter($star) + { + $parameters = array(); + $tmp = explode('/', $star); + for ($i = 0, $max = count($tmp); $i < $max; $i += 2) + { + //dont allow a param name to be empty - #4173 + if (!empty($tmp[$i])) + { + $parameters[$tmp[$i]] = isset($tmp[$i + 1]) ? urldecode($tmp[$i + 1]) : true; + } + } + + return $parameters; + } + + protected function hasStarParameter() + { + return false !== strpos($this->regex, '<_star>'); + } + + protected function generateStarParameter($url, $defaults, $parameters) + { + if (false === strpos($this->regex, '<_star>')) + { + return $url; + } + + $tmp = array(); + foreach (array_diff_key($parameters, $this->variables, $defaults) as $key => $value) + { + if (is_array($value)) + { + foreach ($value as $v) + { + $tmp[] = $key.'='.urlencode($v); + } + } + else + { + $tmp[] = urlencode($key).'/'.urlencode($value); + } + } + $tmp = implode('/', $tmp); + if ($tmp) + { + $tmp = '/'.$tmp; + } + + return preg_replace('#'.$this->options['segment_separators_regex'].'\*('.$this->options['segment_separators_regex'].'|$)#', "$tmp$1", $url); + } + + protected function mergeArrays($arr1, $arr2) + { + foreach ($arr2 as $key => $value) + { + $arr1[$key] = $value; + } + + return $arr1; + } + + protected function fixDefaults() + { + foreach ($this->defaults as $key => $value) + { + if (ctype_digit($key)) + { + $this->defaults[$value] = true; + } + else + { + $this->defaults[$key] = urldecode($value); + } + } + } + + protected function fixRequirements() + { + foreach ($this->requirements as $key => $regex) + { + if (!is_string($regex)) + { + continue; + } + + if ('^' == $regex[0]) + { + $regex = substr($regex, 1); + } + if ('$' == substr($regex, -1)) + { + $regex = substr($regex, 0, -1); + } + + $this->requirements[$key] = $regex; + } + } + + protected function fixSuffix() + { + $length = strlen($this->pattern); + + if ($length > 0 && '/' == $this->pattern[$length - 1]) + { + // route ends by / (directory) + $this->suffix = '/'; + } + else if ($length > 0 && '.' == $this->pattern[$length - 1]) + { + // route ends by . (no suffix) + $this->suffix = ''; + $this->pattern = substr($this->pattern, 0, $length - 1); + } + else if (preg_match('#\.(?:'.$this->options['variable_prefix_regex'].$this->options['variable_regex'].'|'.$this->options['variable_content_regex'].')$#i', $this->pattern)) + { + // specific suffix for this route + // a . with a variable after or some chars without any separators + $this->suffix = ''; + } + else + { + $this->suffix = $this->options['suffix']; + } + } + + public function serialize() + { + // always serialize compiled routes + $this->compile(); + // sfPatternRouting will always re-set defaultParameters, so no need to serialize them + return serialize(array($this->tokens, $this->defaultOptions, $this->options, $this->pattern, $this->staticPrefix, $this->regex, $this->variables, $this->defaults, $this->requirements, $this->suffix, $this->customToken)); + } + + public function unserialize($data) + { + list($this->tokens, $this->defaultOptions, $this->options, $this->pattern, $this->staticPrefix, $this->regex, $this->variables, $this->defaults, $this->requirements, $this->suffix, $this->customToken) = unserialize($data); + $this->compiled = true; + } +} \ No newline at end of file diff --git a/lib/vendor/symfony/lib/routing/.svn/text-base/sfRouteCollection.class.php.svn-base b/lib/vendor/symfony/lib/routing/.svn/text-base/sfRouteCollection.class.php.svn-base new file mode 100644 index 0000000..ee01171 --- /dev/null +++ b/lib/vendor/symfony/lib/routing/.svn/text-base/sfRouteCollection.class.php.svn-base @@ -0,0 +1,110 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfRouteCollection represents a collection of routes. + * + * @package symfony + * @subpackage routing + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfRouteCollection implements Iterator +{ + protected + $count = 0, + $options = array(), + $routes = array(); + + /** + * Constructor. + * + * @param array $options An array of options + */ + public function __construct(array $options) + { + if (!isset($options['name'])) + { + throw new InvalidArgumentException('You must pass a "name" option to sfRouteCollection'); + } + + $this->options = $options; + } + + /** + * Returns the routes. + * + * @return array The routes + */ + public function getRoutes() + { + return $this->routes; + } + + /** + * Returns the options. + * + * @return array The options + */ + public function getOptions() + { + return $this->options; + } + + /** + * Reset the error array to the beginning (implements the Iterator interface). + */ + public function rewind() + { + reset($this->routes); + + $this->count = count($this->routes); + } + + /** + * Get the name of the current route (implements the Iterator interface). + * + * @return string The key + */ + public function key() + { + return key($this->routes); + } + + /** + * Returns the current route (implements the Iterator interface). + * + * @return mixed The escaped value + */ + public function current() + { + return current($this->routes); + } + + /** + * Moves to the next route (implements the Iterator interface). + */ + public function next() + { + next($this->routes); + + --$this->count; + } + + /** + * Returns true if the current route is valid (implements the Iterator interface). + * + * @return boolean The validity of the current route; true if it is valid + */ + public function valid() + { + return $this->count > 0; + } +} diff --git a/lib/vendor/symfony/lib/routing/.svn/text-base/sfRouting.class.php.svn-base b/lib/vendor/symfony/lib/routing/.svn/text-base/sfRouting.class.php.svn-base new file mode 100644 index 0000000..6a27f6e --- /dev/null +++ b/lib/vendor/symfony/lib/routing/.svn/text-base/sfRouting.class.php.svn-base @@ -0,0 +1,283 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfRouting class controls the generation and parsing of URLs. + * + * @package symfony + * @subpackage routing + * @author Fabien Potencier + * @version SVN: $Id$ + */ +abstract class sfRouting +{ + protected + $dispatcher = null, + $cache = null, + $defaultParameters = array(), + $options = array(); + + /** + * Class constructor. + * + * @see initialize() + */ + public function __construct(sfEventDispatcher $dispatcher, sfCache $cache = null, $options = array()) + { + $this->initialize($dispatcher, $cache, $options); + + if (!isset($this->options['auto_shutdown']) || $this->options['auto_shutdown']) + { + register_shutdown_function(array($this, 'shutdown')); + } + } + + /** + * Returns the routing cache object. + * + * @return sfCache A sfCache instance or null + */ + public function getCache() + { + return $this->cache; + } + + /** + * Initializes this sfRouting instance. + * + * Available options: + * + * * default_module: The default module name + * * default_action: The default action name + * * logging: Whether to log or not (false by default) + * * debug: Whether to cache or not (false by default) + * * context: An array of context variables to help URL matching and generation + * + * @param sfEventDispatcher $dispatcher An sfEventDispatcher instance + * @param sfCache $cache An sfCache instance + * @param array $options An associative array of initialization options. + */ + public function initialize(sfEventDispatcher $dispatcher, sfCache $cache = null, $options = array()) + { + $this->dispatcher = $dispatcher; + + $options['debug'] = isset($options['debug']) ? (boolean) $options['debug'] : false; + + // disable caching when in debug mode + $this->cache = $options['debug'] ? null : $cache; + + $this->setDefaultParameter('module', isset($options['default_module']) ? $options['default_module'] : 'default'); + $this->setDefaultParameter('action', isset($options['default_action']) ? $options['default_action'] : 'index'); + + if (!isset($options['logging'])) + { + $options['logging'] = false; + } + + if (!isset($options['context'])) + { + $options['context'] = array(); + } + + $this->options = $options; + + $this->dispatcher->connect('user.change_culture', array($this, 'listenToChangeCultureEvent')); + $this->dispatcher->connect('request.filter_parameters', array($this, 'filterParametersEvent')); + + $this->loadConfiguration(); + } + + /** + * Returns the options. + * + * @return array An array of options + */ + public function getOptions() + { + return $this->options; + } + + /** + * Loads routing configuration. + * + * This methods notifies a routing.load_configuration event. + */ + public function loadConfiguration() + { + $this->dispatcher->notify(new sfEvent($this, 'routing.load_configuration')); + } + + /** + * Gets the internal URI for the current request. + * + * @param bool $with_route_name Whether to give an internal URI with the route name (@route) + * or with the module/action pair + * + * @return string The current internal URI + */ + abstract public function getCurrentInternalUri($with_route_name = false); + + /** + * Gets the current compiled route array. + * + * @return array The route array + */ + abstract public function getRoutes(); + + /** + * Sets the compiled route array. + * + * @param array $routes The route array + * + * @return array The route array + */ + abstract public function setRoutes($routes); + + /** + * Returns true if this instance has some routes. + * + * @return bool + */ + abstract public function hasRoutes(); + + /** + * Clears all current routes. + */ + abstract public function clearRoutes(); + + /** + * Generates a valid URLs for parameters. + * + * @param string $name The route name + * @param array $params The parameter values + * @param Boolean $absolute Whether to generate an absolute URL + * + * @return string The generated URL + */ + abstract public function generate($name, $params = array(), $absolute = false); + + /** + * Parses a URL to find a matching route and sets internal state. + * + * Returns false if no route match the URL. + * + * @param string $url URL to be parsed + * + * @return array|false An array of parameters or false if the route does not match + */ + abstract public function parse($url); + + /** + * Gets the default parameters for URL generation. + * + * @return array An array of default parameters + */ + public function getDefaultParameters() + { + return $this->defaultParameters; + } + + /** + * Gets a default parameter. + * + * @param string $key The key + * + * @return string The value + */ + public function getDefaultParameter($key) + { + return isset($this->defaultParameters[$key]) ? $this->defaultParameters[$key] : null; + } + + /** + * Sets a default parameter. + * + * @param string $key The key + * @param string $value The value + */ + public function setDefaultParameter($key, $value) + { + $this->defaultParameters[$key] = $value; + } + + /** + * Sets the default parameters for URL generation. + * + * @param array $parameters An array of default parameters + */ + public function setDefaultParameters($parameters) + { + $this->defaultParameters = $parameters; + } + + /** + * Listens to the user.change_culture event. + * + * @param sfEvent $event An sfEvent instance + * + */ + public function listenToChangeCultureEvent(sfEvent $event) + { + // change the culture in the routing default parameters + $this->setDefaultParameter('sf_culture', $event['culture']); + } + + /** + * Listens to the request.filter_parameters event. + * + * @param sfEvent $event An sfEvent instance + * + * @return array $parameters An array of parameters for the event + */ + public function filterParametersEvent(sfEvent $event, $parameters) + { + $context = $event->getParameters(); + + $this->options['context'] = $context; + + if (false === $params = $this->parse($event['path_info'])) + { + return $parameters; + } + + return array_merge($parameters, $params); + } + + protected function fixGeneratedUrl($url, $absolute = false) + { + if (isset($this->options['context']['prefix'])) + { + if (0 === strpos($url, 'http')) + { + $url = preg_replace('#https?\://[^/]+#', '$0'.$this->options['context']['prefix'], $url); + } + else + { + $url = $this->options['context']['prefix'].$url; + } + } + + if ($absolute && isset($this->options['context']['host']) && 0 !== strpos($url, 'http')) + { + $url = 'http'.(isset($this->options['context']['is_secure']) && $this->options['context']['is_secure'] ? 's' : '').'://'.$this->options['context']['host'].$url; + } + + return $url; + } + + /** + * Execute the shutdown procedure. + * + * @return void + */ + public function shutdown() + { + } +} diff --git a/lib/vendor/symfony/lib/routing/sfObjectRoute.class.php b/lib/vendor/symfony/lib/routing/sfObjectRoute.class.php new file mode 100644 index 0000000..5e5b2ba --- /dev/null +++ b/lib/vendor/symfony/lib/routing/sfObjectRoute.class.php @@ -0,0 +1,240 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfObjectRoute represents a route that is bound to PHP object(s). + * + * An object route can represent a single object or a list of objects. + * + * @package symfony + * @subpackage routing + * @author Fabien Potencier + * @version SVN: $Id: sfObjectRoute.class.php 20784 2009-08-04 20:53:57Z Kris.Wallsmith $ + */ +class sfObjectRoute extends sfRequestRoute +{ + protected + $object = false, + $objects = false; + + /** + * Constructor. + * + * @param string $pattern The pattern to match + * @param array $defaults An array of default parameter values + * @param array $requirements An array of requirements for parameters (regexes) + * @param array $options An array of options + * + * @see sfRoute + */ + public function __construct($pattern, array $defaults = array(), array $requirements = array(), array $options = array()) + { + if (!isset($options['model'])) + { + throw new InvalidArgumentException(sprintf('You must pass a "model" option for a %s object (%s).', get_class($this), $pattern)); + } + + if (!isset($options['type'])) + { + throw new InvalidArgumentException(sprintf('You must pass a "type" option for a %s object (%s).', get_class($this), $pattern)); + } + + if (!in_array($options['type'], array('object', 'list'))) + { + throw new InvalidArgumentException(sprintf('The "type" option can only be "object" or "list", "%s" given (%s).', $options['type'], $pattern)); + } + + parent::__construct($pattern, $defaults, $requirements, $options); + } + + /** + * Returns true if the parameters matches this route, false otherwise. + * + * @param mixed $params The parameters + * @param array $context The context + * + * @return Boolean true if the parameters matches this route, false otherwise. + */ + public function matchesParameters($params, $context = array()) + { + return parent::matchesParameters('object' == $this->options['type'] ? $this->convertObjectToArray($params) : $params); + } + + /** + * Generates a URL from the given parameters. + * + * @param mixed $params The parameter values + * @param array $context The context + * @param Boolean $absolute Whether to generate an absolute URL + * + * @return string The generated URL + */ + public function generate($params, $context = array(), $absolute = false) + { + return parent::generate('object' == $this->options['type'] ? $this->convertObjectToArray($params) : $params, $context, $absolute); + } + + /** + * Gets the object related to the current route and parameters. + * + * This method is only accessible if the route is bound and of type "object". + * + * @return Object The related object + */ + public function getObject() + { + if (!$this->isBound()) + { + throw new LogicException('The route is not bound.'); + } + + if ('object' != $this->options['type']) + { + throw new LogicException(sprintf('The route "%s" is not of type "object".', $this->pattern)); + } + + if (false !== $this->object) + { + return $this->object; + } + + // check the related object + if (!($this->object = $this->getObjectForParameters($this->parameters)) && (!isset($this->options['allow_empty']) || !$this->options['allow_empty'])) + { + throw new sfError404Exception(sprintf('Unable to find the %s object with the following parameters "%s").', $this->options['model'], str_replace("\n", '', var_export($this->filterParameters($this->parameters), true)))); + } + + return $this->object; + } + + /** + * Gets the list of objects related to the current route and parameters. + * + * This method is only accessible if the route is bound and of type "list". + * + * @return array And array of related objects + */ + public function getObjects() + { + if (!$this->isBound()) + { + throw new LogicException('The route is not bound.'); + } + + if ('list' != $this->options['type']) + { + throw new LogicException(sprintf('The route "%s" is not of type "list".', $this->pattern)); + } + + if (false !== $this->objects) + { + return $this->objects; + } + + $this->objects = $this->getObjectsForParameters($this->parameters); + + if (!count($this->objects) && isset($this->options['allow_empty']) && !$this->options['allow_empty']) + { + throw new sfError404Exception(sprintf('No %s object found for the following parameters "%s").', $this->options['model'], str_replace("\n", '', var_export($this->filterParameters($this->parameters), true)))); + } + + return $this->objects; + } + + protected function getObjectForParameters($parameters) + { + $className = $this->options['model']; + + if (!isset($this->options['method'])) + { + throw new InvalidArgumentException(sprintf('You must pass a "method" option for a %s object.', get_class($this))); + } + + return call_user_func(array($className, $this->options['method']), $this->filterParameters($parameters)); + } + + protected function getObjectsForParameters($parameters) + { + $className = $this->options['model']; + + if (!isset($this->options['method'])) + { + throw new InvalidArgumentException(sprintf('You must pass a "method" option for a %s object.', get_class($this))); + } + + return call_user_func(array($className, $this->options['method']), $this->filterParameters($parameters)); + } + + protected function filterParameters($parameters) + { + if (!is_array($parameters)) + { + return $parameters; + } + + $params = array(); + foreach (array_keys($this->variables) as $variable) + { + $params[$variable] = $parameters[$variable]; + } + + return $params; + } + + protected function convertObjectToArray($object) + { + if (!$this->compiled) + { + $this->compile(); + } + + if (is_array($object)) + { + if (!isset($object['sf_subject'])) + { + return $object; + } + + $parameters = $object; + $object = $parameters['sf_subject']; + unset($parameters['sf_subject']); + } + else + { + $parameters = array(); + } + + return array_merge($parameters, $this->doConvertObjectToArray($object)); + } + + protected function doConvertObjectToArray($object) + { + $method = isset($this->options['convert']) ? $this->options['convert'] : 'toParams'; + + return $object->$method(); + } + + protected function getRealVariables() + { + $variables = array(); + + foreach (array_keys($this->variables) as $variable) + { + if (0 === strpos($variable, 'sf_') || in_array($variable, array('module', 'action'))) + { + continue; + } + + $variables[] = $variable; + } + + return $variables; + } +} diff --git a/lib/vendor/symfony/lib/routing/sfObjectRouteCollection.class.php b/lib/vendor/symfony/lib/routing/sfObjectRouteCollection.class.php new file mode 100644 index 0000000..034c413 --- /dev/null +++ b/lib/vendor/symfony/lib/routing/sfObjectRouteCollection.class.php @@ -0,0 +1,226 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfObjectRouteCollection represents a collection of routes bound to objects. + * + * @package symfony + * @subpackage routing + * @author Fabien Potencier + * @version SVN: $Id: sfObjectRouteCollection.class.php 32654 2011-06-15 18:58:43Z fabien $ + */ +class sfObjectRouteCollection extends sfRouteCollection +{ + protected + $routeClass = 'sfObjectRoute'; + + /** + * Constructor. + * + * @param array $options An array of options + */ + public function __construct(array $options) + { + parent::__construct($options); + + if (!isset($this->options['model'])) + { + throw new InvalidArgumentException(sprintf('You must pass a "model" option to %s ("%s" route)', get_class($this), $this->options['name'])); + } + + $this->options = array_merge(array( + 'actions' => false, + 'module' => $this->options['name'], + 'prefix_path' => '/'.$this->options['name'], + 'column' => isset($this->options['column']) ? $this->options['column'] : 'id', + 'with_show' => true, + 'segment_names' => array('edit' => 'edit', 'new' => 'new'), + 'model_methods' => array(), + 'requirements' => array(), + 'with_wildcard_routes' => false, + 'default_params' => array(), + ), $this->options); + + $this->options['requirements'] = array_merge(array($this->options['column'] => 'id' == $this->options['column'] ? '\d+' : null), $this->options['requirements']); + $this->options['model_methods'] = array_merge(array('list' => null, 'object' => null), $this->options['model_methods']); + + if (isset($this->options['route_class'])) + { + $this->routeClass = $this->options['route_class']; + } + + $this->generateRoutes(); + } + + protected function generateRoutes() + { + // collection actions + if (isset($this->options['collection_actions'])) + { + foreach ($this->options['collection_actions'] as $action => $methods) + { + $this->routes[$this->getRoute($action)] = $this->getRouteForCollection($action, $methods); + } + } + + // "standard" actions + $actions = false === $this->options['actions'] ? $this->getDefaultActions() : $this->options['actions']; + foreach ($actions as $action) + { + $method = 'getRouteFor'.ucfirst($action); + if (!method_exists($this, $method)) + { + throw new InvalidArgumentException(sprintf('Unable to generate a route for the "%s" action.', $action)); + } + + $this->routes[$this->getRoute($action)] = $this->$method(); + } + + // object actions + if (isset($this->options['object_actions'])) + { + foreach ($this->options['object_actions'] as $action => $methods) + { + $this->routes[$this->getRoute($action)] = $this->getRouteForObject($action, $methods); + } + } + + if ($this->options['with_wildcard_routes']) + { + // wildcard object actions + $this->routes[$this->getRoute('object')] = new $this->routeClass( + sprintf('%s/:%s/:action.:sf_format', $this->options['prefix_path'], $this->options['column']), + array_merge(array('module' => $this->options['module'], 'sf_format' => 'html'), $this->options['default_params']), + array_merge($this->options['requirements'], array('sf_method' => array('get', 'head'))), + array('model' => $this->options['model'], 'type' => 'object', 'method' => $this->options['model_methods']['object']) + ); + + // wildcard collection actions + $this->routes[$this->getRoute('collection')] = new $this->routeClass( + sprintf('%s/:action/action.:sf_format', $this->options['prefix_path']), + array_merge(array('module' => $this->options['module'], 'sf_format' => 'html'), $this->options['default_params']), + array_merge($this->options['requirements'], array('sf_method' => 'post')), + array('model' => $this->options['model'], 'type' => 'list', 'method' => $this->options['model_methods']['list']) + ); + } + } + + protected function getRouteForCollection($action, $methods) + { + return new $this->routeClass( + sprintf('%s/%s.:sf_format', $this->options['prefix_path'], $action), + array_merge(array('module' => $this->options['module'], 'action' => $action, 'sf_format' => 'html'), $this->options['default_params']), + array_merge($this->options['requirements'], array('sf_method' => $methods)), + array('model' => $this->options['model'], 'type' => 'list', 'method' => $this->options['model_methods']['list']) + ); + } + + protected function getRouteForObject($action, $methods) + { + return new $this->routeClass( + sprintf('%s/:%s/%s.:sf_format', $this->options['prefix_path'], $this->options['column'], $action), + array_merge(array('module' => $this->options['module'], 'action' => $action, 'sf_format' => 'html'), $this->options['default_params']), + array_merge($this->options['requirements'], array('sf_method' => $methods)), + array('model' => $this->options['model'], 'type' => 'object', 'method' => $this->options['model_methods']['object']) + ); + } + + protected function getRouteForList() + { + return new $this->routeClass( + sprintf('%s.:sf_format', $this->options['prefix_path']), + array_merge(array('module' => $this->options['module'], 'action' => $this->getActionMethod('list'), 'sf_format' => 'html'), $this->options['default_params']), + array_merge($this->options['requirements'], array('sf_method' => array('get', 'head'))), + array('model' => $this->options['model'], 'type' => 'list', 'method' => $this->options['model_methods']['list']) + ); + } + + protected function getRouteForNew() + { + return new $this->routeClass( + sprintf('%s/%s.:sf_format', $this->options['prefix_path'], $this->options['segment_names']['new']), + array_merge(array('module' => $this->options['module'], 'action' => $this->getActionMethod('new'), 'sf_format' => 'html'), $this->options['default_params']), + array_merge($this->options['requirements'], array('sf_method' => array('get', 'head'))), + array('model' => $this->options['model'], 'type' => 'object') + ); + } + + protected function getRouteForCreate() + { + return new $this->routeClass( + sprintf('%s.:sf_format', $this->options['prefix_path']), + array_merge(array('module' => $this->options['module'], 'action' => $this->getActionMethod('create'), 'sf_format' => 'html'), $this->options['default_params']), + array_merge($this->options['requirements'], array('sf_method' => 'post')), + array('model' => $this->options['model'], 'type' => 'object') + ); + } + + protected function getRouteForShow() + { + return new $this->routeClass( + sprintf('%s/:%s.:sf_format', $this->options['prefix_path'], $this->options['column']), + array_merge(array('module' => $this->options['module'], 'action' => $this->getActionMethod('show'), 'sf_format' => 'html'), $this->options['default_params']), + array_merge($this->options['requirements'], array('sf_method' => array('get', 'head'))), + array('model' => $this->options['model'], 'type' => 'object', 'method' => $this->options['model_methods']['object']) + ); + } + + protected function getRouteForEdit() + { + return new $this->routeClass( + sprintf('%s/:%s/%s.:sf_format', $this->options['prefix_path'], $this->options['column'], $this->options['segment_names']['edit']), + array_merge(array('module' => $this->options['module'], 'action' => $this->getActionMethod('edit'), 'sf_format' => 'html'), $this->options['default_params']), + array_merge($this->options['requirements'], array('sf_method' => array('get', 'head'))), + array('model' => $this->options['model'], 'type' => 'object', 'method' => $this->options['model_methods']['object']) + ); + } + + protected function getRouteForUpdate() + { + return new $this->routeClass( + sprintf('%s/:%s.:sf_format', $this->options['prefix_path'], $this->options['column']), + array_merge(array('module' => $this->options['module'], 'action' => $this->getActionMethod('update'), 'sf_format' => 'html'), $this->options['default_params']), + array_merge($this->options['requirements'], array('sf_method' => 'put')), + array('model' => $this->options['model'], 'type' => 'object', 'method' => $this->options['model_methods']['object']) + ); + } + + protected function getRouteForDelete() + { + return new $this->routeClass( + sprintf('%s/:%s.:sf_format', $this->options['prefix_path'], $this->options['column']), + array_merge(array('module' => $this->options['module'], 'action' => $this->getActionMethod('delete'), 'sf_format' => 'html'), $this->options['default_params']), + array_merge($this->options['requirements'], array('sf_method' => 'delete')), + array('model' => $this->options['model'], 'type' => 'object', 'method' => $this->options['model_methods']['object']) + ); + } + + protected function getDefaultActions() + { + $actions = array('list', 'new', 'create', 'edit', 'update', 'delete'); + + if ($this->options['with_show']) + { + $actions[] = 'show'; + } + + return $actions; + } + + protected function getRoute($action) + { + return 'list' == $action ? $this->options['name'] : $this->options['name'].'_'.$action; + } + + protected function getActionMethod($action) + { + return 'list' == $action ? 'index' : $action; + } +} diff --git a/lib/vendor/symfony/lib/routing/sfPatternRouting.class.php b/lib/vendor/symfony/lib/routing/sfPatternRouting.class.php new file mode 100644 index 0000000..d457c19 --- /dev/null +++ b/lib/vendor/symfony/lib/routing/sfPatternRouting.class.php @@ -0,0 +1,530 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfPatternRouting class controls the generation and parsing of URLs. + * + * It parses and generates URLs by delegating the work to an array of sfRoute objects. + * + * @package symfony + * @subpackage routing + * @author Fabien Potencier + * @version SVN: $Id: sfPatternRouting.class.php 32845 2011-07-28 11:50:48Z fabien $ + */ +class sfPatternRouting extends sfRouting +{ + protected + $currentRouteName = null, + $currentInternalUri = array(), + $routes = array(), + $defaultParamsDirty = false, + $cacheData = array(), + $cacheChanged = false; + + /** + * Initializes this Routing. + * + * Available options: + * + * * suffix: The default suffix + * * variable_prefixes: An array of characters that starts a variable name (: by default) + * * segment_separators: An array of allowed characters for segment separators (/ and . by default) + * * variable_regex: A regex that match a valid variable name ([\w\d_]+ by default) + * * generate_shortest_url: Whether to generate the shortest URL possible (true by default) + * * extra_parameters_as_query_string: Whether to generate extra parameters as a query string + * * lookup_cache_dedicated_keys: Whether to use dedicated keys for parse/generate cache (false by default) + * WARNING: When this option is activated, do not use sfFileCache; use a fast access + * cache backend (like sfAPCCache). + * + * @see sfRouting + */ + public function initialize(sfEventDispatcher $dispatcher, sfCache $cache = null, $options = array()) + { + $options = array_merge(array( + 'variable_prefixes' => array(':'), + 'segment_separators' => array('/', '.'), + 'variable_regex' => '[\w\d_]+', + 'load_configuration' => false, + 'suffix' => '', + 'generate_shortest_url' => true, + 'extra_parameters_as_query_string' => true, + 'lookup_cache_dedicated_keys' => false, + ), $options); + + // for BC + if ('.' == $options['suffix']) + { + $options['suffix'] = ''; + } + + parent::initialize($dispatcher, $cache, $options); + + if (null !== $this->cache && !$options['lookup_cache_dedicated_keys'] && $cacheData = $this->cache->get('symfony.routing.data')) + { + $this->cacheData = unserialize($cacheData); + } + } + + /** + * @see sfRouting + */ + public function loadConfiguration() + { + if ($this->options['load_configuration'] && $config = $this->getConfigFilename()) + { + include($config); + } + + parent::loadConfiguration(); + } + + /** + * Added for better performance. We need to ensure that changed default parameters + * are set, but resetting them everytime wastes many cpu cycles + */ + protected function ensureDefaultParametersAreSet() + { + if ($this->defaultParamsDirty) + { + foreach ($this->routes as $route) + { + $route->setDefaultParameters($this->defaultParameters); + } + $this->defaultParamsDirty = false; + } + } + + /** + * @see sfRouting + */ + public function setDefaultParameter($key, $value) + { + parent::setDefaultParameter($key, $value); + $this->defaultParamsDirty = true; + } + + /** + * @see sfRouting + */ + public function setDefaultParameters($parameters) + { + parent::setDefaultParameters($parameters); + $this->defaultParamsDirty = true; + } + + protected function getConfigFileName() + { + return sfContext::getInstance()->getConfigCache()->checkConfig('config/routing.yml', true); + } + + /** + * @see sfRouting + */ + public function getCurrentInternalUri($withRouteName = false) + { + return null === $this->currentRouteName ? null : $this->currentInternalUri[$withRouteName ? 0 : 1]; + } + + /** + * Gets the current route name. + * + * @return string The route name + */ + public function getCurrentRouteName() + { + return $this->currentRouteName; + } + + /** + * @see sfRouting + */ + public function getRoutes() + { + return $this->routes; + } + + /** + * @see sfRouting + */ + public function setRoutes($routes) + { + foreach ($routes as $name => $route) + { + $this->connect($name, $route); + } + } + + /** + * @see sfRouting + */ + public function hasRoutes() + { + return count($this->routes) ? true : false; + } + + /** + * @see sfRouting + */ + public function clearRoutes() + { + if ($this->options['logging']) + { + $this->dispatcher->notify(new sfEvent($this, 'application.log', array('Clear all current routes'))); + } + + $this->routes = array(); + } + + /** + * Returns true if the route name given is defined. + * + * @param string $name The route name + * + * @return boolean + */ + public function hasRouteName($name) + { + return isset($this->routes[$name]) ? true : false; + } + + /** + * Adds a new route at the beginning of the current list of routes. + * + * @see connect + */ + public function prependRoute($name, $route) + { + $routes = $this->routes; + $this->routes = array(); + $this->connect($name, $route); + $this->routes = array_merge($this->routes, $routes); + } + + /** + * Adds a new route. + * + * Alias for the connect method. + * + * @see connect + */ + public function appendRoute($name, $route) + { + return $this->connect($name, $route); + } + + /** + * Adds a new route before a given one in the current list of routes. + * + * @see connect + */ + public function insertRouteBefore($pivot, $name, $route) + { + if (!isset($this->routes[$pivot])) + { + throw new sfConfigurationException(sprintf('Unable to insert route "%s" before inexistent route "%s".', $name, $pivot)); + } + + $routes = $this->routes; + $this->routes = array(); + $newroutes = array(); + foreach ($routes as $key => $value) + { + if ($key == $pivot) + { + $this->connect($name, $route); + $newroutes = array_merge($newroutes, $this->routes); + } + $newroutes[$key] = $value; + } + + $this->routes = $newroutes; + } + + /** + * Adds a new route at the end of the current list of routes. + * + * A route string is a string with 2 special constructions: + * - :string: :string denotes a named parameter (available later as $request->getParameter('string')) + * - *: * match an indefinite number of parameters in a route + * + * Here is a very common rule in a symfony project: + * + * + * $r->connect('default', new sfRoute('/:module/:action/*')); + * + * + * @param string $name The route name + * @param sfRoute $route A sfRoute instance + * + * @return array current routes + */ + public function connect($name, $route) + { + $routes = $route instanceof sfRouteCollection ? $route : array($name => $route); + foreach (self::flattenRoutes($routes) as $name => $route) + { + $this->routes[$name] = $route; + $this->configureRoute($route); + + if ($this->options['logging']) + { + $this->dispatcher->notify(new sfEvent($this, 'application.log', array(sprintf('Connect %s "%s" (%s)', get_class($route), $name, $route->getPattern())))); + } + } + } + + public function configureRoute(sfRoute $route) + { + $route->setDefaultParameters($this->defaultParameters); + $route->setDefaultOptions($this->options); + } + + /** + * @see sfRouting + */ + public function generate($name, $params = array(), $absolute = false) + { + // fetch from cache + if (null !== $this->cache) + { + $cacheKey = 'generate_'.$name.'_'.md5(serialize(array_merge($this->defaultParameters, $params))).'_'.md5(serialize($this->options['context'])); + if ($this->options['lookup_cache_dedicated_keys'] && $url = $this->cache->get('symfony.routing.data.'.$cacheKey)) + { + return $this->fixGeneratedUrl($url, $absolute); + } + elseif (isset($this->cacheData[$cacheKey])) + { + return $this->fixGeneratedUrl($this->cacheData[$cacheKey], $absolute); + } + } + + if ($name) + { + // named route + if (!isset($this->routes[$name])) + { + throw new sfConfigurationException(sprintf('The route "%s" does not exist.', $name)); + } + $route = $this->routes[$name]; + $this->ensureDefaultParametersAreSet(); + } + else + { + // find a matching route + if (false === $route = $this->getRouteThatMatchesParameters($params)) + { + throw new sfConfigurationException(sprintf('Unable to find a matching route to generate url for params "%s".', is_object($params) ? 'Object('.get_class($params).')' : str_replace("\n", '', var_export($params, true)))); + } + } + + $url = $route->generate($params, $this->options['context'], $absolute); + + // store in cache + if (null !== $this->cache) + { + if ($this->options['lookup_cache_dedicated_keys']) + { + $this->cache->set('symfony.routing.data.'.$cacheKey, $url); + } + else + { + $this->cacheChanged = true; + $this->cacheData[$cacheKey] = $url; + } + } + + return $this->fixGeneratedUrl($url, $absolute); + } + + /** + * @see sfRouting + */ + public function parse($url) + { + if (false === $info = $this->findRoute($url)) + { + $this->currentRouteName = null; + $this->currentInternalUri = array(); + + return false; + } + + if ($this->options['logging']) + { + $this->dispatcher->notify(new sfEvent($this, 'application.log', array(sprintf('Match route "%s" (%s) for %s with parameters %s', $info['name'], $info['pattern'], $url, str_replace("\n", '', var_export($info['parameters'], true)))))); + } + + // store the current internal URI + $this->updateCurrentInternalUri($info['name'], $info['parameters']); + + $route = $this->routes[$info['name']]; + + $this->ensureDefaultParametersAreSet(); + + $route->bind($this->options['context'], $info['parameters']); + $info['parameters']['_sf_route'] = $route; + + return $info['parameters']; + } + + protected function updateCurrentInternalUri($name, array $parameters) + { + // store the route name + $this->currentRouteName = $name; + + $internalUri = array('@'.$this->currentRouteName, $parameters['module'].'/'.$parameters['action']); + unset($parameters['module'], $parameters['action']); + + $params = array(); + foreach ($parameters as $key => $value) + { + $params[] = $key.'='.$value; + } + + // sort to guaranty unicity + sort($params); + + $params = $params ? '?'.implode('&', $params) : ''; + + $this->currentInternalUri = array($internalUri[0].$params, $internalUri[1].$params); + } + + /** + * Finds a matching route for given URL. + * + * Returns false if no route matches. + * + * Returned array contains: + * + * - name: name or alias of the route that matched + * - pattern: the compiled pattern of the route that matched + * - parameters: array containing key value pairs of the request parameters including defaults + * + * @param string $url URL to be parsed + * + * @return array|false An array with routing information or false if no route matched + */ + public function findRoute($url) + { + $url = $this->normalizeUrl($url); + + // fetch from cache + if (null !== $this->cache) + { + $cacheKey = 'parse_'.$url.'_'.md5(serialize($this->options['context'])); + if ($this->options['lookup_cache_dedicated_keys'] && $info = $this->cache->get('symfony.routing.data.'.$cacheKey)) + { + return unserialize($info); + } + elseif (isset($this->cacheData[$cacheKey])) + { + return $this->cacheData[$cacheKey]; + } + } + + $info = $this->getRouteThatMatchesUrl($url); + + // store in cache + if (null !== $this->cache) + { + if ($this->options['lookup_cache_dedicated_keys']) + { + $this->cache->set('symfony.routing.data.'.$cacheKey, serialize($info)); + } + else + { + $this->cacheChanged = true; + $this->cacheData[$cacheKey] = $info; + } + } + + return $info; + } + + static public function flattenRoutes($routes) + { + $flattenRoutes = array(); + foreach ($routes as $name => $route) + { + if ($route instanceof sfRouteCollection) + { + $flattenRoutes = array_merge($flattenRoutes, self::flattenRoutes($route)); + } + else + { + $flattenRoutes[$name] = $route; + } + } + + return $flattenRoutes; + } + + protected function getRouteThatMatchesUrl($url) + { + $this->ensureDefaultParametersAreSet(); + foreach ($this->routes as $name => $route) + { + if (false === $parameters = $route->matchesUrl($url, $this->options['context'])) + { + continue; + } + + return array('name' => $name, 'pattern' => $route->getPattern(), 'parameters' => $parameters); + } + + return false; + } + + protected function getRouteThatMatchesParameters($parameters) + { + $this->ensureDefaultParametersAreSet(); + foreach ($this->routes as $route) + { + if ($route->matchesParameters($parameters, $this->options['context'])) + { + return $route; + } + } + + return false; + } + + protected function normalizeUrl($url) + { + // an URL should start with a '/', mod_rewrite doesn't respect that, but no-mod_rewrite version does. + if ('/' != substr($url, 0, 1)) + { + $url = '/'.$url; + } + + // we remove the query string + if (false !== $pos = strpos($url, '?')) + { + $url = substr($url, 0, $pos); + } + + // remove multiple / + $url = preg_replace('#/+#', '/', $url); + + return $url; + } + + /** + * @see sfRouting + */ + public function shutdown() + { + if (null !== $this->cache && $this->cacheChanged) + { + $this->cacheChanged = false; + $this->cache->set('symfony.routing.data', serialize($this->cacheData)); + } + } +} diff --git a/lib/vendor/symfony/lib/routing/sfRequestRoute.class.php b/lib/vendor/symfony/lib/routing/sfRequestRoute.class.php new file mode 100644 index 0000000..55d89fb --- /dev/null +++ b/lib/vendor/symfony/lib/routing/sfRequestRoute.class.php @@ -0,0 +1,107 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfRequestRoute represents a route that is request aware. + * + * It implements the sf_method requirement. + * + * @package symfony + * @subpackage routing + * @author Fabien Potencier + * @version SVN: $Id: sfRequestRoute.class.php 20784 2009-08-04 20:53:57Z Kris.Wallsmith $ + */ +class sfRequestRoute extends sfRoute +{ + /** + * Constructor. + * + * Applies a default sf_method requirements of GET or HEAD. + * + * @see sfRoute + */ + public function __construct($pattern, $defaults = array(), $requirements = array(), $options = array()) + { + if (!isset($requirements['sf_method'])) + { + $requirements['sf_method'] = array('get', 'head'); + } + else + { + $requirements['sf_method'] = array_map('strtolower', (array) $requirements['sf_method']); + } + + parent::__construct($pattern, $defaults, $requirements, $options); + } + + /** + * Returns true if the URL matches this route, false otherwise. + * + * @param string $url The URL + * @param array $context The context + * + * @return array An array of parameters + */ + public function matchesUrl($url, $context = array()) + { + if (false === $parameters = parent::matchesUrl($url, $context)) + { + return false; + } + + // enforce the sf_method requirement + if (in_array(strtolower($context['method']), $this->requirements['sf_method'])) + { + return $parameters; + } + + return false; + } + + /** + * Returns true if the parameters match this route, false otherwise. + * + * @param mixed $params The parameters + * @param array $context The context + * + * @return Boolean true if the parameters match this route, false otherwise. + */ + public function matchesParameters($params, $context = array()) + { + if (isset($params['sf_method'])) + { + // enforce the sf_method requirement + if (!in_array(strtolower($params['sf_method']), $this->requirements['sf_method'])) + { + return false; + } + + unset($params['sf_method']); + } + + return parent::matchesParameters($params, $context); + } + + /** + * Generates a URL from the given parameters. + * + * @param mixed $params The parameter values + * @param array $context The context + * @param Boolean $absolute Whether to generate an absolute URL + * + * @return string The generated URL + */ + public function generate($params, $context = array(), $absolute = false) + { + unset($params['sf_method']); + + return parent::generate($params, $context, $absolute); + } +} diff --git a/lib/vendor/symfony/lib/routing/sfRoute.class.php b/lib/vendor/symfony/lib/routing/sfRoute.class.php new file mode 100644 index 0000000..7593542 --- /dev/null +++ b/lib/vendor/symfony/lib/routing/sfRoute.class.php @@ -0,0 +1,856 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfRoute represents a route. + * + * @package symfony + * @subpackage routing + * @author Fabien Potencier + * @version SVN: $Id: sfRoute.class.php 32939 2011-08-22 13:40:06Z fabien $ + */ +class sfRoute implements Serializable +{ + protected + $isBound = false, + $context = null, + $parameters = null, + $suffix = null, + $defaultParameters = array(), + $defaultOptions = array(), + $compiled = false, + $options = array(), + $pattern = null, + $staticPrefix = null, + $regex = null, + $variables = array(), + $defaults = array(), + $requirements = array(), + $tokens = array(), + $customToken = false; + + /** + * Constructor. + * + * Available options: + * + * * variable_prefixes: An array of characters that starts a variable name (: by default) + * * segment_separators: An array of allowed characters for segment separators (/ and . by default) + * * variable_regex: A regex that match a valid variable name ([\w\d_]+ by default) + * * generate_shortest_url: Whether to generate the shortest URL possible (true by default) + * * extra_parameters_as_query_string: Whether to generate extra parameters as a query string + * + * @param string $pattern The pattern to match + * @param array $defaults An array of default parameter values + * @param array $requirements An array of requirements for parameters (regexes) + * @param array $options An array of options + */ + public function __construct($pattern, array $defaults = array(), array $requirements = array(), array $options = array()) + { + $this->pattern = trim($pattern); + $this->defaults = $defaults; + $this->requirements = $requirements; + $this->options = $options; + } + + /** + * Binds the current route for a given context and parameters. + * + * @param array $context The context + * @param array $parameters The parameters + */ + public function bind($context, $parameters) + { + $this->isBound = true; + $this->context = $context; + $this->parameters = $parameters; + } + + /** + * Returns true if the route is bound to context and parameters. + * + * @return Boolean true if theroute is bound to context and parameters, false otherwise + */ + public function isBound() + { + return $this->isBound; + } + + /** + * Returns an array of parameters if the URL matches this route, false otherwise. + * + * @param string $url The URL + * @param array $context The context + * + * @return array An array of parameters + */ + public function matchesUrl($url, $context = array()) + { + if (!$this->compiled) + { + $this->compile(); + } + + // check the static prefix uf the URL first. Only use the more expensive preg_match when it matches + if ('' !== $this->staticPrefix && 0 !== strpos($url, $this->staticPrefix)) + { + return false; + } + if (!preg_match($this->regex, $url, $matches)) + { + return false; + } + + $defaults = array_merge($this->getDefaultParameters(), $this->defaults); + $parameters = array(); + + // * + if (isset($matches['_star'])) + { + $parameters = $this->parseStarParameter($matches['_star']); + unset($matches['_star'], $parameters['module'], $parameters['action']); + } + + // defaults + $parameters = $this->mergeArrays($defaults, $parameters); + + // variables + foreach ($matches as $key => $value) + { + if (!is_int($key)) + { + $parameters[$key] = urldecode($value); + } + } + + return $parameters; + } + + /** + * Returns true if the parameters matches this route, false otherwise. + * + * @param mixed $params The parameters + * @param array $context The context + * + * @return Boolean true if the parameters matches this route, false otherwise. + */ + public function matchesParameters($params, $context = array()) + { + if (!$this->compiled) + { + $this->compile(); + } + + if (!is_array($params)) + { + return false; + } + + $defaults = $this->mergeArrays($this->getDefaultParameters(), $this->defaults); + $tparams = $this->mergeArrays($defaults, $params); + + // all $variables must be defined in the $tparams array + if (array_diff_key($this->variables, $tparams)) + { + return false; + } + + // check requirements + foreach (array_keys($this->variables) as $variable) + { + if (!$tparams[$variable]) + { + continue; + } + + if (!preg_match('#'.$this->requirements[$variable].'#', $tparams[$variable])) + { + return false; + } + } + + // all $params must be in $variables or $defaults if there is no * in route + if (!$this->options['extra_parameters_as_query_string']) + { + if (false === strpos($this->regex, '<_star>') && array_diff_key($params, $this->variables, $defaults)) + { + return false; + } + } + + // check that $params does not override a default value that is not a variable + foreach ($defaults as $key => $value) + { + if (!isset($this->variables[$key]) && $tparams[$key] != $value) + { + return false; + } + } + + return true; + } + + /** + * Generates a URL from the given parameters. + * + * @param mixed $params The parameter values + * @param array $context The context + * @param Boolean $absolute Whether to generate an absolute URL + * + * @return string The generated URL + */ + public function generate($params, $context = array(), $absolute = false) + { + if (!$this->compiled) + { + $this->compile(); + } + + $url = $this->pattern; + + $defaults = $this->mergeArrays($this->getDefaultParameters(), $this->defaults); + $tparams = $this->mergeArrays($defaults, $params); + + // all params must be given + if ($diff = array_diff_key($this->variables, $tparams)) + { + throw new InvalidArgumentException(sprintf('The "%s" route has some missing mandatory parameters (%s).', $this->pattern, implode(', ', $diff))); + } + + if ($this->options['generate_shortest_url'] || $this->customToken) + { + $url = $this->generateWithTokens($tparams); + } + else + { + // replace variables + $variables = $this->variables; + uasort($variables, array('sfRoute', 'generateCompareVarsByStrlen')); + foreach ($variables as $variable => $value) + { + $url = str_replace($value, urlencode($tparams[$variable]), $url); + } + + if(!in_array($this->suffix, $this->options['segment_separators'])) + { + $url .= $this->suffix; + } + } + + // replace extra parameters if the route contains * + $url = $this->generateStarParameter($url, $defaults, $tparams); + + if ($this->options['extra_parameters_as_query_string'] && !$this->hasStarParameter()) + { + // add a query string if needed + if ($extra = array_diff_key($params, $this->variables, $defaults)) + { + $url .= '?'.http_build_query($extra); + } + } + + return $url; + } + + static private function generateCompareVarsByStrlen($a, $b) + { + return strlen($a) < strlen($b); + } + + /** + * Generates a URL for the given parameters by using the route tokens. + * + * @param array $parameters An array of parameters + */ + protected function generateWithTokens($parameters) + { + $url = array(); + $optional = $this->options['generate_shortest_url']; + $first = true; + $tokens = array_reverse($this->tokens); + foreach ($tokens as $token) + { + switch ($token[0]) + { + case 'variable': + if (!$optional || !isset($this->defaults[$token[3]]) || $parameters[$token[3]] != $this->defaults[$token[3]]) + { + $url[] = urlencode($parameters[$token[3]]); + $optional = false; + } + break; + case 'text': + $url[] = $token[2]; + $optional = false; + break; + case 'separator': + if (false === $optional || $first) + { + $url[] = $token[2]; + } + break; + default: + // handle custom tokens + if ($segment = call_user_func_array(array($this, 'generateFor'.ucfirst(array_shift($token))), array_merge(array($optional, $parameters), $token))) + { + $url[] = $segment; + $optional = false; + } + break; + } + + $first = false; + } + + $url = implode('', array_reverse($url)); + if (!$url) + { + $url = '/'; + } + + return $url; + } + + /** + * Returns the route parameters. + * + * @return array The route parameters + */ + public function getParameters() + { + if (!$this->compiled) + { + $this->compile(); + } + + return $this->parameters; + } + + /** + * Returns the compiled pattern. + * + * @return string The compiled pattern + */ + public function getPattern() + { + if (!$this->compiled) + { + $this->compile(); + } + + return $this->pattern; + } + + /** + * Returns the compiled regex. + * + * @return string The compiled regex + */ + public function getRegex() + { + if (!$this->compiled) + { + $this->compile(); + } + + return $this->regex; + } + + /** + * Returns the compiled tokens. + * + * @return array The compiled tokens + */ + public function getTokens() + { + if (!$this->compiled) + { + $this->compile(); + } + + return $this->tokens; + } + + /** + * Returns the compiled options. + * + * @return array The compiled options + */ + public function getOptions() + { + if (!$this->compiled) + { + $this->compile(); + } + + return $this->options; + } + + /** + * Returns the compiled variables. + * + * @return array The compiled variables + */ + public function getVariables() + { + if (!$this->compiled) + { + $this->compile(); + } + + return $this->variables; + } + + /** + * Returns the compiled defaults. + * + * @return array The compiled defaults + */ + public function getDefaults() + { + if (!$this->compiled) + { + $this->compile(); + } + + return $this->defaults; + } + + /** + * Returns the compiled requirements. + * + * @return array The compiled requirements + */ + public function getRequirements() + { + if (!$this->compiled) + { + $this->compile(); + } + + return $this->requirements; + } + + /** + * Compiles the current route instance. + */ + public function compile() + { + if ($this->compiled) + { + return; + } + + $this->initializeOptions(); + $this->fixRequirements(); + $this->fixDefaults(); + $this->fixSuffix(); + + $this->compiled = true; + $this->firstOptional = 0; + $this->segments = array(); + + $this->preCompile(); + + $this->tokenize(); + + // parse + foreach ($this->tokens as $token) + { + call_user_func_array(array($this, 'compileFor'.ucfirst(array_shift($token))), $token); + } + + $this->postCompile(); + + $separator = ''; + if (count($this->tokens)) + { + $lastToken = $this->tokens[count($this->tokens) - 1]; + $separator = 'separator' == $lastToken[0] ? $lastToken[2] : ''; + } + + $this->regex = "#^".implode("", $this->segments)."".preg_quote($separator, '#')."$#x"; + } + + /** + * Pre-compiles a route. + */ + protected function preCompile() + { + // a route must start with a slash + if (empty($this->pattern) || '/' != $this->pattern[0]) + { + $this->pattern = '/'.$this->pattern; + } + } + + /** + * Post-compiles a route. + */ + protected function postCompile() + { + // all segments after the last static segment are optional + // be careful, the n-1 is optional only if n is empty + for ($i = $this->firstOptional, $max = count($this->segments); $i < $max; $i++) + { + $this->segments[$i] = (0 == $i ? '/?' : '').str_repeat(' ', $i - $this->firstOptional).'(?:'.$this->segments[$i]; + $this->segments[] = str_repeat(' ', $max - $i - 1).')?'; + } + + $this->staticPrefix = ''; + foreach ($this->tokens as $token) + { + switch ($token[0]) + { + case 'separator': + break; + case 'text': + if ($token[2] !== '*') + { + // non-star text is static + $this->staticPrefix .= $token[1].$token[2]; + break; + } + default: + // everything else indicates variable parts. break switch and for loop + break 2; + } + } + } + + /** + * Tokenizes the route. + */ + protected function tokenize() + { + $this->tokens = array(); + $buffer = $this->pattern; + $afterASeparator = false; + $currentSeparator = ''; + + // a route is an array of (separator + variable) or (separator + text) segments + while (strlen($buffer)) + { + if (false !== $this->tokenizeBufferBefore($buffer, $this->tokens, $afterASeparator, $currentSeparator)) + { + // a custom token + $this->customToken = true; + } + else if ($afterASeparator && preg_match('#^'.$this->options['variable_prefix_regex'].'('.$this->options['variable_regex'].')#', $buffer, $match)) + { + // a variable + $this->tokens[] = array('variable', $currentSeparator, $match[0], $match[1]); + + $currentSeparator = ''; + $buffer = substr($buffer, strlen($match[0])); + $afterASeparator = false; + } + else if ($afterASeparator && preg_match('#^('.$this->options['text_regex'].')(?:'.$this->options['segment_separators_regex'].'|$)#', $buffer, $match)) + { + // a text + $this->tokens[] = array('text', $currentSeparator, $match[1], null); + + $currentSeparator = ''; + $buffer = substr($buffer, strlen($match[1])); + $afterASeparator = false; + } + else if (!$afterASeparator && preg_match('#^/|^'.$this->options['segment_separators_regex'].'#', $buffer, $match)) + { + // beginning of URL (^/) or a separator + $this->tokens[] = array('separator', $currentSeparator, $match[0], null); + + $currentSeparator = $match[0]; + $buffer = substr($buffer, strlen($match[0])); + $afterASeparator = true; + } + else if (false !== $this->tokenizeBufferAfter($buffer, $this->tokens, $afterASeparator, $currentSeparator)) + { + // a custom token + $this->customToken = true; + } + else + { + // parsing problem + throw new InvalidArgumentException(sprintf('Unable to parse "%s" route near "%s".', $this->pattern, $buffer)); + } + } + + // check for suffix + if ($this->suffix) + { + // treat as a separator + $this->tokens[] = array('separator', $currentSeparator, $this->suffix); + } + + } + + /** + * Tokenizes the buffer before default logic is applied. + * + * This method must return false if the buffer has not been parsed. + * + * @param string $buffer The current route buffer + * @param array $tokens An array of current tokens + * @param Boolean $afterASeparator Whether the buffer is just after a separator + * @param string $currentSeparator The last matched separator + * + * @return Boolean true if a token has been generated, false otherwise + */ + protected function tokenizeBufferBefore(&$buffer, &$tokens, &$afterASeparator, &$currentSeparator) + { + return false; + } + + /** + * Tokenizes the buffer after default logic is applied. + * + * This method must return false if the buffer has not been parsed. + * + * @param string $buffer The current route buffer + * @param array $tokens An array of current tokens + * @param Boolean $afterASeparator Whether the buffer is just after a separator + * @param string $currentSeparator The last matched separator + * + * @return Boolean true if a token has been generated, false otherwise + */ + protected function tokenizeBufferAfter(&$buffer, &$tokens, &$afterASeparator, &$currentSeparator) + { + return false; + } + + protected function compileForText($separator, $text) + { + if ('*' == $text) + { + $this->segments[] = '(?:'.preg_quote($separator, '#').'(?P<_star>.*))?'; + } + else + { + $this->firstOptional = count($this->segments) + 1; + + $this->segments[] = preg_quote($separator, '#').preg_quote($text, '#'); + } + } + + protected function compileForVariable($separator, $name, $variable) + { + if (!isset($this->requirements[$variable])) + { + $this->requirements[$variable] = $this->options['variable_content_regex']; + } + + $this->segments[] = preg_quote($separator, '#').'(?P<'.$variable.'>'.$this->requirements[$variable].')'; + $this->variables[$variable] = $name; + + if (!isset($this->defaults[$variable])) + { + $this->firstOptional = count($this->segments); + } + } + + protected function compileForSeparator($separator, $regexSeparator) + { + } + + public function getDefaultParameters() + { + return $this->defaultParameters; + } + + public function setDefaultParameters($parameters) + { + $this->defaultParameters = $parameters; + } + + public function getDefaultOptions() + { + return $this->defaultOptions; + } + + public function setDefaultOptions($options) + { + $this->defaultOptions = $options; + } + + protected function initializeOptions() + { + $this->options = array_merge(array( + 'suffix' => '', + 'variable_prefixes' => array(':'), + 'segment_separators' => array('/', '.'), + 'variable_regex' => '[\w\d_]+', + 'text_regex' => '.+?', + 'generate_shortest_url' => true, + 'extra_parameters_as_query_string' => true, + ), $this->getDefaultOptions(), $this->options); + + $preg_quote_hash = create_function('$a', 'return preg_quote($a, \'#\');'); + + // compute some regexes + $this->options['variable_prefix_regex'] = '(?:'.implode('|', array_map($preg_quote_hash, $this->options['variable_prefixes'])).')'; + + if (count($this->options['segment_separators'])) + { + $this->options['segment_separators_regex'] = '(?:'.implode('|', array_map($preg_quote_hash, $this->options['segment_separators'])).')'; + + // as of PHP 5.3.0, preg_quote automatically quotes dashes "-" (see http://bugs.php.net/bug.php?id=47229) + $preg_quote_hash_53 = create_function('$a', 'return str_replace(\'-\', \'\-\', preg_quote($a, \'#\'));'); + $this->options['variable_content_regex'] = '[^'.implode('', + array_map(version_compare(PHP_VERSION, '5.3.0RC4', '>=') ? $preg_quote_hash : $preg_quote_hash_53, $this->options['segment_separators']) + ).']+'; + } + else + { + // use simplified regexes for case where no separators are used + $this->options['segment_separators_regex'] = '()'; + $this->options['variable_content_regex'] = '.+'; + } + } + + protected function parseStarParameter($star) + { + $parameters = array(); + $tmp = explode('/', $star); + for ($i = 0, $max = count($tmp); $i < $max; $i += 2) + { + //dont allow a param name to be empty - #4173 + if (!empty($tmp[$i])) + { + $parameters[$tmp[$i]] = isset($tmp[$i + 1]) ? urldecode($tmp[$i + 1]) : true; + } + } + + return $parameters; + } + + protected function hasStarParameter() + { + return false !== strpos($this->regex, '<_star>'); + } + + protected function generateStarParameter($url, $defaults, $parameters) + { + if (false === strpos($this->regex, '<_star>')) + { + return $url; + } + + $tmp = array(); + foreach (array_diff_key($parameters, $this->variables, $defaults) as $key => $value) + { + if (is_array($value)) + { + foreach ($value as $v) + { + $tmp[] = $key.'='.urlencode($v); + } + } + else + { + $tmp[] = urlencode($key).'/'.urlencode($value); + } + } + $tmp = implode('/', $tmp); + if ($tmp) + { + $tmp = '/'.$tmp; + } + + return preg_replace('#'.$this->options['segment_separators_regex'].'\*('.$this->options['segment_separators_regex'].'|$)#', "$tmp$1", $url); + } + + protected function mergeArrays($arr1, $arr2) + { + foreach ($arr2 as $key => $value) + { + $arr1[$key] = $value; + } + + return $arr1; + } + + protected function fixDefaults() + { + foreach ($this->defaults as $key => $value) + { + if (ctype_digit($key)) + { + $this->defaults[$value] = true; + } + else + { + $this->defaults[$key] = urldecode($value); + } + } + } + + protected function fixRequirements() + { + foreach ($this->requirements as $key => $regex) + { + if (!is_string($regex)) + { + continue; + } + + if ('^' == $regex[0]) + { + $regex = substr($regex, 1); + } + if ('$' == substr($regex, -1)) + { + $regex = substr($regex, 0, -1); + } + + $this->requirements[$key] = $regex; + } + } + + protected function fixSuffix() + { + $length = strlen($this->pattern); + + if ($length > 0 && '/' == $this->pattern[$length - 1]) + { + // route ends by / (directory) + $this->suffix = '/'; + } + else if ($length > 0 && '.' == $this->pattern[$length - 1]) + { + // route ends by . (no suffix) + $this->suffix = ''; + $this->pattern = substr($this->pattern, 0, $length - 1); + } + else if (preg_match('#\.(?:'.$this->options['variable_prefix_regex'].$this->options['variable_regex'].'|'.$this->options['variable_content_regex'].')$#i', $this->pattern)) + { + // specific suffix for this route + // a . with a variable after or some chars without any separators + $this->suffix = ''; + } + else + { + $this->suffix = $this->options['suffix']; + } + } + + public function serialize() + { + // always serialize compiled routes + $this->compile(); + // sfPatternRouting will always re-set defaultParameters, so no need to serialize them + return serialize(array($this->tokens, $this->defaultOptions, $this->options, $this->pattern, $this->staticPrefix, $this->regex, $this->variables, $this->defaults, $this->requirements, $this->suffix, $this->customToken)); + } + + public function unserialize($data) + { + list($this->tokens, $this->defaultOptions, $this->options, $this->pattern, $this->staticPrefix, $this->regex, $this->variables, $this->defaults, $this->requirements, $this->suffix, $this->customToken) = unserialize($data); + $this->compiled = true; + } +} \ No newline at end of file diff --git a/lib/vendor/symfony/lib/routing/sfRouteCollection.class.php b/lib/vendor/symfony/lib/routing/sfRouteCollection.class.php new file mode 100644 index 0000000..e332f0f --- /dev/null +++ b/lib/vendor/symfony/lib/routing/sfRouteCollection.class.php @@ -0,0 +1,110 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfRouteCollection represents a collection of routes. + * + * @package symfony + * @subpackage routing + * @author Fabien Potencier + * @version SVN: $Id: sfRouteCollection.class.php 29491 2010-05-17 13:10:55Z fabien $ + */ +class sfRouteCollection implements Iterator +{ + protected + $count = 0, + $options = array(), + $routes = array(); + + /** + * Constructor. + * + * @param array $options An array of options + */ + public function __construct(array $options) + { + if (!isset($options['name'])) + { + throw new InvalidArgumentException('You must pass a "name" option to sfRouteCollection'); + } + + $this->options = $options; + } + + /** + * Returns the routes. + * + * @return array The routes + */ + public function getRoutes() + { + return $this->routes; + } + + /** + * Returns the options. + * + * @return array The options + */ + public function getOptions() + { + return $this->options; + } + + /** + * Reset the error array to the beginning (implements the Iterator interface). + */ + public function rewind() + { + reset($this->routes); + + $this->count = count($this->routes); + } + + /** + * Get the name of the current route (implements the Iterator interface). + * + * @return string The key + */ + public function key() + { + return key($this->routes); + } + + /** + * Returns the current route (implements the Iterator interface). + * + * @return mixed The escaped value + */ + public function current() + { + return current($this->routes); + } + + /** + * Moves to the next route (implements the Iterator interface). + */ + public function next() + { + next($this->routes); + + --$this->count; + } + + /** + * Returns true if the current route is valid (implements the Iterator interface). + * + * @return boolean The validity of the current route; true if it is valid + */ + public function valid() + { + return $this->count > 0; + } +} diff --git a/lib/vendor/symfony/lib/routing/sfRouting.class.php b/lib/vendor/symfony/lib/routing/sfRouting.class.php new file mode 100644 index 0000000..7bfa7dc --- /dev/null +++ b/lib/vendor/symfony/lib/routing/sfRouting.class.php @@ -0,0 +1,283 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfRouting class controls the generation and parsing of URLs. + * + * @package symfony + * @subpackage routing + * @author Fabien Potencier + * @version SVN: $Id: sfRouting.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $ + */ +abstract class sfRouting +{ + protected + $dispatcher = null, + $cache = null, + $defaultParameters = array(), + $options = array(); + + /** + * Class constructor. + * + * @see initialize() + */ + public function __construct(sfEventDispatcher $dispatcher, sfCache $cache = null, $options = array()) + { + $this->initialize($dispatcher, $cache, $options); + + if (!isset($this->options['auto_shutdown']) || $this->options['auto_shutdown']) + { + register_shutdown_function(array($this, 'shutdown')); + } + } + + /** + * Returns the routing cache object. + * + * @return sfCache A sfCache instance or null + */ + public function getCache() + { + return $this->cache; + } + + /** + * Initializes this sfRouting instance. + * + * Available options: + * + * * default_module: The default module name + * * default_action: The default action name + * * logging: Whether to log or not (false by default) + * * debug: Whether to cache or not (false by default) + * * context: An array of context variables to help URL matching and generation + * + * @param sfEventDispatcher $dispatcher An sfEventDispatcher instance + * @param sfCache $cache An sfCache instance + * @param array $options An associative array of initialization options. + */ + public function initialize(sfEventDispatcher $dispatcher, sfCache $cache = null, $options = array()) + { + $this->dispatcher = $dispatcher; + + $options['debug'] = isset($options['debug']) ? (boolean) $options['debug'] : false; + + // disable caching when in debug mode + $this->cache = $options['debug'] ? null : $cache; + + $this->setDefaultParameter('module', isset($options['default_module']) ? $options['default_module'] : 'default'); + $this->setDefaultParameter('action', isset($options['default_action']) ? $options['default_action'] : 'index'); + + if (!isset($options['logging'])) + { + $options['logging'] = false; + } + + if (!isset($options['context'])) + { + $options['context'] = array(); + } + + $this->options = $options; + + $this->dispatcher->connect('user.change_culture', array($this, 'listenToChangeCultureEvent')); + $this->dispatcher->connect('request.filter_parameters', array($this, 'filterParametersEvent')); + + $this->loadConfiguration(); + } + + /** + * Returns the options. + * + * @return array An array of options + */ + public function getOptions() + { + return $this->options; + } + + /** + * Loads routing configuration. + * + * This methods notifies a routing.load_configuration event. + */ + public function loadConfiguration() + { + $this->dispatcher->notify(new sfEvent($this, 'routing.load_configuration')); + } + + /** + * Gets the internal URI for the current request. + * + * @param bool $with_route_name Whether to give an internal URI with the route name (@route) + * or with the module/action pair + * + * @return string The current internal URI + */ + abstract public function getCurrentInternalUri($with_route_name = false); + + /** + * Gets the current compiled route array. + * + * @return array The route array + */ + abstract public function getRoutes(); + + /** + * Sets the compiled route array. + * + * @param array $routes The route array + * + * @return array The route array + */ + abstract public function setRoutes($routes); + + /** + * Returns true if this instance has some routes. + * + * @return bool + */ + abstract public function hasRoutes(); + + /** + * Clears all current routes. + */ + abstract public function clearRoutes(); + + /** + * Generates a valid URLs for parameters. + * + * @param string $name The route name + * @param array $params The parameter values + * @param Boolean $absolute Whether to generate an absolute URL + * + * @return string The generated URL + */ + abstract public function generate($name, $params = array(), $absolute = false); + + /** + * Parses a URL to find a matching route and sets internal state. + * + * Returns false if no route match the URL. + * + * @param string $url URL to be parsed + * + * @return array|false An array of parameters or false if the route does not match + */ + abstract public function parse($url); + + /** + * Gets the default parameters for URL generation. + * + * @return array An array of default parameters + */ + public function getDefaultParameters() + { + return $this->defaultParameters; + } + + /** + * Gets a default parameter. + * + * @param string $key The key + * + * @return string The value + */ + public function getDefaultParameter($key) + { + return isset($this->defaultParameters[$key]) ? $this->defaultParameters[$key] : null; + } + + /** + * Sets a default parameter. + * + * @param string $key The key + * @param string $value The value + */ + public function setDefaultParameter($key, $value) + { + $this->defaultParameters[$key] = $value; + } + + /** + * Sets the default parameters for URL generation. + * + * @param array $parameters An array of default parameters + */ + public function setDefaultParameters($parameters) + { + $this->defaultParameters = $parameters; + } + + /** + * Listens to the user.change_culture event. + * + * @param sfEvent $event An sfEvent instance + * + */ + public function listenToChangeCultureEvent(sfEvent $event) + { + // change the culture in the routing default parameters + $this->setDefaultParameter('sf_culture', $event['culture']); + } + + /** + * Listens to the request.filter_parameters event. + * + * @param sfEvent $event An sfEvent instance + * + * @return array $parameters An array of parameters for the event + */ + public function filterParametersEvent(sfEvent $event, $parameters) + { + $context = $event->getParameters(); + + $this->options['context'] = $context; + + if (false === $params = $this->parse($event['path_info'])) + { + return $parameters; + } + + return array_merge($parameters, $params); + } + + protected function fixGeneratedUrl($url, $absolute = false) + { + if (isset($this->options['context']['prefix'])) + { + if (0 === strpos($url, 'http')) + { + $url = preg_replace('#https?\://[^/]+#', '$0'.$this->options['context']['prefix'], $url); + } + else + { + $url = $this->options['context']['prefix'].$url; + } + } + + if ($absolute && isset($this->options['context']['host']) && 0 !== strpos($url, 'http')) + { + $url = 'http'.(isset($this->options['context']['is_secure']) && $this->options['context']['is_secure'] ? 's' : '').'://'.$this->options['context']['host'].$url; + } + + return $url; + } + + /** + * Execute the shutdown procedure. + * + * @return void + */ + public function shutdown() + { + } +} diff --git a/lib/vendor/symfony/lib/storage/.svn/all-wcprops b/lib/vendor/symfony/lib/storage/.svn/all-wcprops new file mode 100644 index 0000000..6fc3dc5 --- /dev/null +++ b/lib/vendor/symfony/lib/storage/.svn/all-wcprops @@ -0,0 +1,65 @@ +K 25 +svn:wc:ra_dav:version-url +V 40 +/!svn/ver/33027/branches/1.4/lib/storage +END +sfCacheSessionStorage.class.php +K 25 +svn:wc:ra_dav:version-url +V 72 +/!svn/ver/33027/branches/1.4/lib/storage/sfCacheSessionStorage.class.php +END +sfPostgreSQLSessionStorage.class.php +K 25 +svn:wc:ra_dav:version-url +V 77 +/!svn/ver/23881/branches/1.4/lib/storage/sfPostgreSQLSessionStorage.class.php +END +sfDatabaseSessionStorage.class.php +K 25 +svn:wc:ra_dav:version-url +V 75 +/!svn/ver/23881/branches/1.4/lib/storage/sfDatabaseSessionStorage.class.php +END +sfMySQLSessionStorage.class.php +K 25 +svn:wc:ra_dav:version-url +V 72 +/!svn/ver/24590/branches/1.4/lib/storage/sfMySQLSessionStorage.class.php +END +sfNoStorage.class.php +K 25 +svn:wc:ra_dav:version-url +V 62 +/!svn/ver/23881/branches/1.4/lib/storage/sfNoStorage.class.php +END +sfStorage.class.php +K 25 +svn:wc:ra_dav:version-url +V 60 +/!svn/ver/23881/branches/1.4/lib/storage/sfStorage.class.php +END +sfMySQLiSessionStorage.class.php +K 25 +svn:wc:ra_dav:version-url +V 73 +/!svn/ver/24590/branches/1.4/lib/storage/sfMySQLiSessionStorage.class.php +END +sfSessionStorage.class.php +K 25 +svn:wc:ra_dav:version-url +V 67 +/!svn/ver/31471/branches/1.4/lib/storage/sfSessionStorage.class.php +END +sfSessionTestStorage.class.php +K 25 +svn:wc:ra_dav:version-url +V 71 +/!svn/ver/23881/branches/1.4/lib/storage/sfSessionTestStorage.class.php +END +sfPDOSessionStorage.class.php +K 25 +svn:wc:ra_dav:version-url +V 70 +/!svn/ver/23881/branches/1.4/lib/storage/sfPDOSessionStorage.class.php +END diff --git a/lib/vendor/symfony/lib/storage/.svn/entries b/lib/vendor/symfony/lib/storage/.svn/entries new file mode 100644 index 0000000..5673844 --- /dev/null +++ b/lib/vendor/symfony/lib/storage/.svn/entries @@ -0,0 +1,368 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/storage +http://svn.symfony-project.com + + + +2011-09-15T17:16:42.673807Z +33027 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +sfCacheSessionStorage.class.php +file + + + + +2012-05-10T18:41:07.585548Z +55a20317dea0d99007268d05f2c2fcb1 +2011-09-15T17:16:42.673807Z +33027 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +8976 + +sfPostgreSQLSessionStorage.class.php +file + + + + +2012-05-10T18:41:07.593549Z +537e9f7624ab35283da6f150ce94e358 +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +4841 + +sfDatabaseSessionStorage.class.php +file + + + + +2012-05-10T18:41:07.593549Z +465db688ec1b6976ea1062f0db328fcd +2009-09-15T11:00:20.335049Z +22037 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +5678 + +sfMySQLSessionStorage.class.php +file + + + + +2012-05-10T18:41:07.701547Z +b60fa6d428f7676731ec1ce98588a992 +2009-11-30T18:28:13.499912Z +24590 +FabianLange +has-props + + + + + + + + + + + + + + + + + + + + +6185 + +sfNoStorage.class.php +file + + + + +2012-05-10T18:41:07.701547Z +5e24c0451dafb4947d15537008e23279 +2008-06-27T18:00:49.794902Z +9942 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +2396 + +sfStorage.class.php +file + + + + +2012-05-10T18:41:07.701547Z +d847528df8555c15c77b430365acbd90 +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +3489 + +sfMySQLiSessionStorage.class.php +file + + + + +2012-05-10T18:41:07.701547Z +57c5f425360f3b7a1e69c2082b163813 +2009-11-30T18:28:13.499912Z +24590 +FabianLange +has-props + + + + + + + + + + + + + + + + + + + + +2055 + +sfSessionStorage.class.php +file + + + + +2012-05-10T18:41:07.705545Z +10ae70628bf793fd8296ef3102f621b7 +2010-11-22T19:32:02.752845Z +31471 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +5218 + +sfSessionTestStorage.class.php +file + + + + +2012-05-10T18:41:07.705545Z +41d823350e821cc3c67a468bdf873af1 +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +4254 + +sfPDOSessionStorage.class.php +file + + + + +2012-05-10T18:41:07.705545Z +7f71a7ec37ac3aab0190c1b7380b56e8 +2008-11-18T22:22:01.848221Z +13143 +FabianLange +has-props + + + + + + + + + + + + + + + + + + + + +5308 + diff --git a/lib/vendor/symfony/lib/storage/.svn/prop-base/sfCacheSessionStorage.class.php.svn-base b/lib/vendor/symfony/lib/storage/.svn/prop-base/sfCacheSessionStorage.class.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/lib/storage/.svn/prop-base/sfCacheSessionStorage.class.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/lib/storage/.svn/prop-base/sfDatabaseSessionStorage.class.php.svn-base b/lib/vendor/symfony/lib/storage/.svn/prop-base/sfDatabaseSessionStorage.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/storage/.svn/prop-base/sfDatabaseSessionStorage.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/storage/.svn/prop-base/sfMySQLSessionStorage.class.php.svn-base b/lib/vendor/symfony/lib/storage/.svn/prop-base/sfMySQLSessionStorage.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/storage/.svn/prop-base/sfMySQLSessionStorage.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/storage/.svn/prop-base/sfMySQLiSessionStorage.class.php.svn-base b/lib/vendor/symfony/lib/storage/.svn/prop-base/sfMySQLiSessionStorage.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/storage/.svn/prop-base/sfMySQLiSessionStorage.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/storage/.svn/prop-base/sfNoStorage.class.php.svn-base b/lib/vendor/symfony/lib/storage/.svn/prop-base/sfNoStorage.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/storage/.svn/prop-base/sfNoStorage.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/storage/.svn/prop-base/sfPDOSessionStorage.class.php.svn-base b/lib/vendor/symfony/lib/storage/.svn/prop-base/sfPDOSessionStorage.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/storage/.svn/prop-base/sfPDOSessionStorage.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/storage/.svn/prop-base/sfPostgreSQLSessionStorage.class.php.svn-base b/lib/vendor/symfony/lib/storage/.svn/prop-base/sfPostgreSQLSessionStorage.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/storage/.svn/prop-base/sfPostgreSQLSessionStorage.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/storage/.svn/prop-base/sfSessionStorage.class.php.svn-base b/lib/vendor/symfony/lib/storage/.svn/prop-base/sfSessionStorage.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/storage/.svn/prop-base/sfSessionStorage.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/storage/.svn/prop-base/sfSessionTestStorage.class.php.svn-base b/lib/vendor/symfony/lib/storage/.svn/prop-base/sfSessionTestStorage.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/storage/.svn/prop-base/sfSessionTestStorage.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/storage/.svn/prop-base/sfStorage.class.php.svn-base b/lib/vendor/symfony/lib/storage/.svn/prop-base/sfStorage.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/storage/.svn/prop-base/sfStorage.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/storage/.svn/text-base/sfCacheSessionStorage.class.php.svn-base b/lib/vendor/symfony/lib/storage/.svn/text-base/sfCacheSessionStorage.class.php.svn-base new file mode 100644 index 0000000..00d602b --- /dev/null +++ b/lib/vendor/symfony/lib/storage/.svn/text-base/sfCacheSessionStorage.class.php.svn-base @@ -0,0 +1,283 @@ + + */ +class sfCacheSessionStorage extends sfStorage +{ + protected + $id = null, + $context = null, + $dispatcher = null, + $request = null, + $response = null, + $cache = null, + $data = array(), + $dataChanged = false; + + /** + * Initialize this Storage. + * + * @param array $options An associative array of initialization parameters. + * session_name [required] name of session to use + * session_cookie_path [required] cookie path + * session_cookie_domain [required] cookie domain + * session_cookie_lifetime [required] liftime of cookie + * session_cookie_secure [required] send only if secure connection + * session_cookie_http_only [required] accessible only via http protocol + * + * @return bool true, when initialization completes successfully. + * + * @throws sfInitializationException If an error occurs while initializing this Storage. + */ + public function initialize($options = array()) + { + // initialize parent + + // bc with a slightly different name formerly used here, let's be + // compatible with the base class name for it from here on out + if (isset($options['session_cookie_http_only'])) + { + $options['session_cookie_httponly'] = $options['session_cookie_http_only']; + } + + parent::initialize(array_merge(array('session_name' => 'sfproject', + 'session_cookie_lifetime' => '+30 days', + 'session_cookie_path' => '/', + 'session_cookie_domain' => null, + 'session_cookie_secure' => false, + 'session_cookie_httponly' => true, + 'session_cookie_secret' => 'sf$ecret'), $options)); + + // create cache instance + if (isset($this->options['cache']) && $this->options['cache']['class']) + { + $this->cache = new $this->options['cache']['class'](is_array($this->options['cache']['param']) ? $this->options['cache']['param'] : array()); + } + else + { + throw new InvalidArgumentException('sfCacheSessionStorage requires cache option.'); + } + + $this->context = sfContext::getInstance(); + + $this->dispatcher = $this->context->getEventDispatcher(); + $this->request = $this->context->getRequest(); + $this->response = $this->context->getResponse(); + + $cookie = $this->request->getCookie($this->options['session_name']); + + if(strpos($cookie, ':') !== false) + { + // split cookie data id:signature(id+secret) + list($id, $signature) = explode(':', $cookie, 2); + + if($signature == sha1($id.':'.$this->options['session_cookie_secret'])) + { + // cookie is valid + $this->id = $id; + } + else + { + // cookie signature broken + $this->id = null; + } + } + else + { + // cookie format wrong + $this->id = null; + } + + if(empty($this->id)) + { + $ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : 'localhost'; + $ua = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'ua'; + + // generate new id based on random # / ip / user agent / secret + $this->id = md5(rand(0, 999999).$ip.$ua.$this->options['session_cookie_secret']); + + if(sfConfig::get('sf_logging_enabled')) + { + $this->dispatcher->notify(new sfEvent($this, 'application.log', array('New session created'))); + } + + // only send cookie when id is issued + $this->response->setCookie($this->options['session_name'], + $this->id.':'.sha1($this->id.':'.$this->options['session_cookie_secret']), + $this->options['session_cookie_lifetime'], + $this->options['session_cookie_path'], + $this->options['session_cookie_domain'], + $this->options['session_cookie_secure'], + $this->options['session_cookie_httponly']); + + $this->data = array(); + } + else + { + // load data from cache. Watch out for the default case. We could + // serialize(array()) as the default to the call but that would be a performance hit + $raw = $this->cache->get($this->id, null); + if (is_null($raw)) + { + $this->data = array(); + } + elseif (is_array($raw)) + { + // probably an old cached value (BC) + $this->data = $raw; + } + else + { + $this->data = unserialize($raw); + } + + if(sfConfig::get('sf_logging_enabled')) + { + $this->dispatcher->notify(new sfEvent($this, 'application.log', array('Restored previous session'))); + } + } + session_id($this->id); + $this->response->addCacheControlHttpHeader('private'); + + return true; + } + + /** + * Write data to this storage. + * + * The preferred format for a key is directory style so naming conflicts can be avoided. + * + * @param string $key A unique key identifying your data. + * @param mixed $data Data associated with your key. + * + * @return void + */ + public function write($key, $data) + { + $this->dataChanged = true; + + $this->data[$key] =& $data; + } + + /** + * Read data from this storage. + * + * The preferred format for a key is directory style so naming conflicts can be avoided. + * + * @param string $key A unique key identifying your data. + * + * @return mixed Data associated with the key. + */ + public function read($key) + { + $retval = null; + + if (isset($this->data[$key])) + { + $retval =& $this->data[$key]; + } + + return $retval; + } + + /** + * Remove data from this storage. + * + * The preferred format for a key is directory style so naming conflicts can be avoided. + * + * @param string $key A unique key identifying your data. + * + * @return mixed Data associated with the key. + */ + public function remove($key) + { + $retval = null; + + if (isset($this->data[$key])) + { + $this->dataChanged = true; + + $retval =& $this->data[$key]; + unset($this->data[$key]); + } + + return $retval; + } + + /** + * Regenerates id that represents this storage. + * + * @param boolean $destroy Destroy session when regenerating? + * + * @return boolean True if session regenerated, false if error + * + * @throws sfStorageException If an error occurs while regenerating this storage + */ + public function regenerate($destroy = false) + { + if($destroy) + { + $this->data = array(); + $this->cache->remove($this->id); + } + + // generate session id + $ua = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'ua'; + + $this->id = md5(rand(0, 999999).$_SERVER['REMOTE_ADDR'].$ua.$this->options['session_cookie_secret']); + + // save data to cache + $this->cache->set($this->id, serialize($this->data)); + + // update session id in signed cookie + $this->response->setCookie($this->options['session_name'], + $this->id.':'.sha1($this->id.':'.$this->options['session_cookie_secret']), + $this->options['session_cookie_lifetime'], + $this->options['session_cookie_path'], + $this->options['session_cookie_domain'], + $this->options['session_cookie_secure'], + $this->options['session_cookie_httponly']); + session_id($this->id); + return true; + } + + /** + * Expires the session storage instance. + */ + public function expire() + { + // destroy data and regenerate id + $this->regenerate(true); + + if(sfConfig::get('sf_logging_enabled')) + { + $this->dispatcher->notify(new sfEvent($this, 'application.log', array('new session created due to expiraton'))); + } + } + + /** + * Executes the shutdown procedure. + * + * @throws sfStorageException If an error occurs while shutting down this storage + */ + public function shutdown() + { + // only update cache if session has changed + if($this->dataChanged === true) + { + $this->cache->set($this->id, serialize($this->data)); + if(sfConfig::get('sf_logging_enabled')) + { + $this->dispatcher->notify(new sfEvent($this, 'application.log', array('Storing session to cache'))); + } + } + } +} diff --git a/lib/vendor/symfony/lib/storage/.svn/text-base/sfDatabaseSessionStorage.class.php.svn-base b/lib/vendor/symfony/lib/storage/.svn/text-base/sfDatabaseSessionStorage.class.php.svn-base new file mode 100644 index 0000000..c88b4b0 --- /dev/null +++ b/lib/vendor/symfony/lib/storage/.svn/text-base/sfDatabaseSessionStorage.class.php.svn-base @@ -0,0 +1,205 @@ + + * (c) 2004-2006 Sean Kerr + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Base class for all sfStorage that uses a sfDatabase object as a storage. + * + * @package symfony + * @subpackage storage + * @author Fabien Potencier + * @author Sean Kerr + * @version SVN: $Id$ + */ +abstract class sfDatabaseSessionStorage extends sfSessionStorage +{ + protected + $db = null, + $con = null; + + /** + * Available options: + * + * * db_table: The database table in which session data will be stored + * * database: The sfDatabase object to use + * * db_id_col: The database column in which the session id will be stored (sess_id by default) + * * db_data_col: The database column in which the session data will be stored (sess_data by default) + * * db_time_col: The database column in which the session timestamp will be stored (sess_time by default) + * + * @param array $options An associative array of options + * + * @see sfSessionStorage + */ + public function initialize($options = array()) + { + $options = array_merge(array( + 'db_id_col' => 'sess_id', + 'db_data_col' => 'sess_data', + 'db_time_col' => 'sess_time', + ), $options); + + // disable auto_start + $options['auto_start'] = false; + + // initialize the parent + parent::initialize($options); + + if (!isset($this->options['db_table'])) + { + throw new sfInitializationException('You must provide a "db_table" option to sfDatabaseSessionStorage.'); + } + + if (!isset($this->options['database'])) + { + throw new sfInitializationException('You must provide a "database" option to sfDatabaseSessionStorage.'); + } + + // use this object as the session handler + session_set_save_handler(array($this, 'sessionOpen'), + array($this, 'sessionClose'), + array($this, 'sessionRead'), + array($this, 'sessionWrite'), + array($this, 'sessionDestroy'), + array($this, 'sessionGC')); + + // start our session + session_start(); + } + + /** + * Closes a session. + * + * @return boolean true, if the session was closed, otherwise false + */ + public function sessionClose() + { + // do nothing + return true; + } + + /** + * Opens a session. + * + * @param string $path (ignored) + * @param string $name (ignored) + * + * @return boolean true, if the session was opened, otherwise an exception is thrown + * + * @throws DatabaseException If a connection with the database does not exist or cannot be created + */ + public function sessionOpen($path = null, $name = null) + { + // what database are we using? + $database = $this->options['database']; + + // get the database and connection + $databaseClass = get_class($database); + if($databaseClass == 'sfPropelDatabase') + { + $this->db = Propel::getConnection($database->getParameter('name')); + } + elseif($databaseClass == 'sfDoctrineDatabase') + { + $this->db = $database->getConnection(); + } + else + { + $this->db = $database->getResource(); + } + + $this->con = $database->getConnection(); + + if (null === $this->db && null === $this->con) + { + throw new sfDatabaseException('Database connection does not exist. Unable to open session.'); + } + + return true; + } + + /** + * Destroys a session. + * + * @param string $id A session ID + * + * @return bool true, if the session was destroyed, otherwise an exception is thrown + * + * @throws DatabaseException If the session cannot be destroyed + */ + abstract public function sessionDestroy($id); + + /** + * Cleans up old sessions. + * + * @param int $lifetime The lifetime of a session + * + * @return bool true, if old sessions have been cleaned, otherwise an exception is thrown + * + * @throws DatabaseException If any old sessions cannot be cleaned + */ + abstract public function sessionGC($lifetime); + + /** + * Reads a session. + * + * @param string $id A session ID + * + * @return bool true, if the session was read, otherwise an exception is thrown + * + * @throws DatabaseException If the session cannot be read + */ + abstract public function sessionRead($id); + + /** + * Writes session data. + * + * @param string $id A session ID + * @param string $data A serialized chunk of session data + * + * @return bool true, if the session was written, otherwise an exception is thrown + * + * @throws DatabaseException If the session data cannot be written + */ + abstract public function sessionWrite($id, $data); + + /** + * Regenerates id that represents this storage. + * + * @param boolean $destroy Destroy session when regenerating? + * + * @return boolean True if session regenerated, false if error + * + */ + public function regenerate($destroy = false) + { + if (self::$sessionIdRegenerated) + { + return; + } + + $currentId = session_id(); + + parent::regenerate($destroy); + + $newId = session_id(); + $this->sessionRead($newId); + + return $this->sessionWrite($newId, $this->sessionRead($currentId)); + } + + /** + * Executes the shutdown procedure. + * + */ + public function shutdown() + { + parent::shutdown(); + } +} diff --git a/lib/vendor/symfony/lib/storage/.svn/text-base/sfMySQLSessionStorage.class.php.svn-base b/lib/vendor/symfony/lib/storage/.svn/text-base/sfMySQLSessionStorage.class.php.svn-base new file mode 100644 index 0000000..f168156 --- /dev/null +++ b/lib/vendor/symfony/lib/storage/.svn/text-base/sfMySQLSessionStorage.class.php.svn-base @@ -0,0 +1,216 @@ + + * (c) 2004-2006 Sean Kerr + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Provides support for session storage using a MySQL brand database. + * + * parameters: see sfDatabaseSessionStorage + * + * @package symfony + * @subpackage storage + * @author Fabien Potencier + * @author Sean Kerr + * @author Julien Garand + * @version SVN: $Id$ + */ +class sfMySQLSessionStorage extends sfDatabaseSessionStorage +{ + /** + * Destroys a session. + * + * @param string $id A session ID + * + * @return bool true, if the session was destroyed, otherwise an exception is thrown + * + * @throws sfDatabaseException If the session cannot be destroyed. + */ + public function sessionDestroy($id) + { + // get table/column + $db_table = $this->options['db_table']; + $db_id_col = $this->options['db_id_col']; + + // cleanup the session id, just in case + $id = $this->db_escape($id); + + // delete the record associated with this id + $sql = "DELETE FROM $db_table WHERE $db_id_col = '$id'"; + + if ($this->db_query($sql)) + { + return true; + } + + // failed to destroy session + throw new sfDatabaseException(sprintf('%s cannot destroy session id "%s" (%s).', get_class($this), $id, $this->db_error())); + } + + /** + * Cleans up old sessions. + * + * @param int $lifetime The lifetime of a session + * + * @return bool true, if old sessions have been cleaned, otherwise an exception is thrown + * + * @throws sfDatabaseException If any old sessions cannot be cleaned + */ + public function sessionGC($lifetime) + { + // get table/column + $db_table = $this->options['db_table']; + $db_time_col = $this->options['db_time_col']; + + // delete the record older than the authorised session life time + $lifetime = $this->db_escape($lifetime); // We never know... + $sql = "DELETE FROM $db_table WHERE $db_time_col + $lifetime < UNIX_TIMESTAMP()"; + + if (!$this->db_query($sql)) + { + throw new sfDatabaseException(sprintf('%s cannot delete old sessions (%s).', get_class($this), $this->db_error())); + } + + return true; + } + + /** + * Reads a session. + * + * @param string $id A session ID + * + * @return string The session data if the session was read or created, otherwise an exception is thrown + * + * @throws sfDatabaseException If the session cannot be read + */ + public function sessionRead($id) + { + // get table/column + $db_table = $this->options['db_table']; + $db_data_col = $this->options['db_data_col']; + $db_id_col = $this->options['db_id_col']; + $db_time_col = $this->options['db_time_col']; + + // cleanup the session id, just in case + $id = $this->db_escape($id); + + // get the record associated with this id + $sql = "SELECT $db_data_col FROM $db_table WHERE $db_id_col = '$id'"; + + $result = $this->db_query($sql); + + if ($result != false && $this->db_num_rows($result) == 1) + { + // found the session + $data = $this->db_fetch_row($result); + + return $data[0]; + } + else + { + // session does not exist, create it + $sql = "INSERT INTO $db_table ($db_id_col, $db_data_col, $db_time_col) VALUES ('$id', '', UNIX_TIMESTAMP())"; + if ($this->db_query($sql)) + { + return ''; + } + + // can't create record + throw new sfDatabaseException(sprintf('%s cannot create new record for id "%s" (%s).', get_class($this), $id, $this->db_error())); + } + } + + /** + * Writes session data. + * + * @param string $id A session ID + * @param string $data A serialized chunk of session data + * + * @return bool true, if the session was written, otherwise an exception is thrown + * + * @throws sfDatabaseException If the session data cannot be written + */ + public function sessionWrite($id, $data) + { + // get table/column + $db_table = $this->options['db_table']; + $db_data_col = $this->options['db_data_col']; + $db_id_col = $this->options['db_id_col']; + $db_time_col = $this->options['db_time_col']; + + // cleanup the session id and data, just in case + $id = $this->db_escape($id); + $data = $this->db_escape($data); + + // update the record associated with this id + $sql = "UPDATE $db_table SET $db_data_col='$data', $db_time_col=UNIX_TIMESTAMP() WHERE $db_id_col='$id'"; + + if ($this->db_query($sql)) + { + return true; + } + + // failed to write session data + throw new sfDatabaseException(sprintf('%s cannot write session data for id "%s" (%s).', get_class($this), $id, $this->db_error())); + } + + /** + * Executes an SQL Query + * + * @param string $query The query to execute + * @return mixed The result of the query + */ + protected function db_query($query) + { + return @mysql_query($query, $this->db); + } + + /** + * Escapes a string before using it in a query statement + * + * @param string $string The string to escape + * @return string The escaped string + */ + protected function db_escape($string) + { + return mysql_real_escape_string($string, $this->db); + } + + /** + * Counts the rows in a query result + * + * @param resource $result Result of a query + * @return int Number of rows + */ + protected function db_num_rows($result) + { + return mysql_num_rows($result); + } + + /** + * Extracts a row from a query result set + * + * @param resource $result Result of a query + * @return array Extracted row as an indexed array + */ + protected function db_fetch_row($result) + { + return mysql_fetch_row($result); + } + + /** + * Returns the text of the error message from previous database operation + * + * @return string The error text from the last database function + */ + protected function db_error() + { + return mysql_error($this->db); + } +} diff --git a/lib/vendor/symfony/lib/storage/.svn/text-base/sfMySQLiSessionStorage.class.php.svn-base b/lib/vendor/symfony/lib/storage/.svn/text-base/sfMySQLiSessionStorage.class.php.svn-base new file mode 100644 index 0000000..4f7965a --- /dev/null +++ b/lib/vendor/symfony/lib/storage/.svn/text-base/sfMySQLiSessionStorage.class.php.svn-base @@ -0,0 +1,80 @@ + + * (c) 2004-2006 Sean Kerr + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Provides support for session storage using a MySQL brand database + * using the MySQL improved API. + * + * parameters: see sfDatabaseSessionStorage + * + * @package symfony + * @subpackage storage + * @author Fabien Potencier + * @author Sean Kerr + * @author Julien Garand + * @version SVN: $Id$ + */ +class sfMySQLiSessionStorage extends sfMySQLSessionStorage +{ + /** + * Execute an SQL Query + * + * @param string $query The query to execute + * @return mixed The result of the query + */ + protected function db_query($query) + { + return mysqli_query($this->db, $query); + } + + /** + * Escape a string before using it in a query statement + * + * @param string $string The string to escape + * @return string The escaped string + */ + protected function db_escape($string) + { + return mysqli_real_escape_string($this->db, $string); + } + + /** + * Count the rows in a query result + * + * @param resource $result Result of a query + * @return int Number of rows + */ + protected function db_num_rows($result) + { + return $result->num_rows; + } + + /** + * Extract a row from a query result set + * + * @param resource $result Result of a query + * @return array Extracted row as an indexed array + */ + protected function db_fetch_row($result) + { + return $result->fetch_row(); + } + + /** + * Returns the text of the error message from previous database operation + * + * @return string The error text from the last database function + */ + protected function db_error() + { + return mysqli_error($this->db); + } +} diff --git a/lib/vendor/symfony/lib/storage/.svn/text-base/sfNoStorage.class.php.svn-base b/lib/vendor/symfony/lib/storage/.svn/text-base/sfNoStorage.class.php.svn-base new file mode 100644 index 0000000..529d199 --- /dev/null +++ b/lib/vendor/symfony/lib/storage/.svn/text-base/sfNoStorage.class.php.svn-base @@ -0,0 +1,93 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfNoStorage allows you to disable session support. + * + * To disable sessions, change the storage factory in config/factories.yml: + * + * storage: + * class: sfNoStorage + * + * @package symfony + * @subpackage storage + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfNoStorage extends sfStorage +{ + /** + * Reads data from this storage. + * + * The preferred format for a key is directory style so naming conflicts can be avoided. + * + * @param string $key A unique key identifying your data + * + * @return mixed Data associated with the key + * + * @throws sfStorageException If an error occurs while reading data from this storage + */ + public function read($key) + { + return null; + } + + /** + * Removes data from this storage. + * + * The preferred format for a key is directory style so naming conflicts can be avoided. + * + * @param string $key A unique key identifying your data + * + * @return mixed Data associated with the key + * + * @throws sfStorageException If an error occurs while removing data from this storage + */ + public function remove($key) + { + return null; + } + + /** + * Writes data to this storage. + * + * The preferred format for a key is directory style so naming conflicts can be avoided. + * + * @param string $key A unique key identifying your data + * @param mixed $data Data associated with your key + * + * @throws sfStorageException If an error occurs while writing to this storage + */ + public function write($key, $data) + { + } + + /** + * Regenerates id that represents this storage. + * + * @param boolean $destroy Destroy session when regenerating? + * + * @return boolean True if session regenerated, false if error + * + */ + public function regenerate($destroy = false) + { + return true; + } + + /** + * Executes the shutdown procedure. + * + * @throws sfStorageException If an error occurs while shutting down this storage + */ + public function shutdown() + { + } +} diff --git a/lib/vendor/symfony/lib/storage/.svn/text-base/sfPDOSessionStorage.class.php.svn-base b/lib/vendor/symfony/lib/storage/.svn/text-base/sfPDOSessionStorage.class.php.svn-base new file mode 100644 index 0000000..e831f38 --- /dev/null +++ b/lib/vendor/symfony/lib/storage/.svn/text-base/sfPDOSessionStorage.class.php.svn-base @@ -0,0 +1,174 @@ + + * (c) 2004, 2005 Sean Kerr + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Provides support for session storage using a PDO database abstraction layer. + * + * parameters: see sfDatabaseSessionStorage + * + * @package symfony + * @subpackage storage + * @author Mathew Toth + * @author Fabien Potencier + * @author Sean Kerr + * @version SVN: $Id$ + */ +class sfPDOSessionStorage extends sfDatabaseSessionStorage +{ + /** + * Destroys a session. + * + * @param string $id A session ID + * + * @return bool true, if the session was destroyed, otherwise an exception is thrown + * + * @throws DatabaseException If the session cannot be destroyed + */ + public function sessionDestroy($id) + { + // get table/column + $db_table = $this->options['db_table']; + $db_id_col = $this->options['db_id_col']; + + // delete the record associated with this id + $sql = 'DELETE FROM '.$db_table.' WHERE '.$db_id_col.'= ?'; + + try + { + $stmt = $this->db->prepare($sql); + $stmt->bindParam(1, $id, PDO::PARAM_STR); + $stmt->execute(); + } + catch (PDOException $e) + { + throw new sfDatabaseException(sprintf('PDOException was thrown when trying to manipulate session data. Message: %s', $e->getMessage())); + } + + return true; + } + + /** + * Cleans up old sessions. + * + * @param int $lifetime The lifetime of a session + * + * @return bool true, if old sessions have been cleaned, otherwise an exception is thrown + * + * @throws DatabaseException If any old sessions cannot be cleaned + */ + public function sessionGC($lifetime) + { + // get table/column + $db_table = $this->options['db_table']; + $db_time_col = $this->options['db_time_col']; + + // delete the record associated with this id + $sql = 'DELETE FROM '.$db_table.' WHERE '.$db_time_col.' < '.(time() - $lifetime); + + try + { + $this->db->query($sql); + } + catch (PDOException $e) + { + throw new sfDatabaseException(sprintf('PDOException was thrown when trying to manipulate session data. Message: %s', $e->getMessage())); + } + + return true; + } + + /** + * Reads a session. + * + * @param string $id A session ID + * + * @return string The session data if the session was read or created, otherwise an exception is thrown + * + * @throws DatabaseException If the session cannot be read + */ + public function sessionRead($id) + { + // get table/columns + $db_table = $this->options['db_table']; + $db_data_col = $this->options['db_data_col']; + $db_id_col = $this->options['db_id_col']; + $db_time_col = $this->options['db_time_col']; + + try + { + $sql = 'SELECT '.$db_data_col.' FROM '.$db_table.' WHERE '.$db_id_col.'=?'; + + $stmt = $this->db->prepare($sql); + $stmt->bindParam(1, $id, PDO::PARAM_STR, 255); + + $stmt->execute(); + // it is recommended to use fetchAll so that PDO can close the DB cursor + // we anyway expect either no rows, or one row with one column. fetchColumn, seems to be buggy #4777 + $sessionRows = $stmt->fetchAll(PDO::FETCH_NUM); + if (count($sessionRows) == 1) + { + return $sessionRows[0][0]; + } + else + { + // session does not exist, create it + $sql = 'INSERT INTO '.$db_table.'('.$db_id_col.', '.$db_data_col.', '.$db_time_col.') VALUES (?, ?, ?)'; + + $stmt = $this->db->prepare($sql); + $stmt->bindParam(1, $id, PDO::PARAM_STR); + $stmt->bindValue(2, '', PDO::PARAM_STR); + $stmt->bindValue(3, time(), PDO::PARAM_INT); + $stmt->execute(); + + return ''; + } + } + catch (PDOException $e) + { + throw new sfDatabaseException(sprintf('PDOException was thrown when trying to manipulate session data. Message: %s', $e->getMessage())); + } + } + + /** + * Writes session data. + * + * @param string $id A session ID + * @param string $data A serialized chunk of session data + * + * @return bool true, if the session was written, otherwise an exception is thrown + * + * @throws DatabaseException If the session data cannot be written + */ + public function sessionWrite($id, $data) + { + // get table/column + $db_table = $this->options['db_table']; + $db_data_col = $this->options['db_data_col']; + $db_id_col = $this->options['db_id_col']; + $db_time_col = $this->options['db_time_col']; + + $sql = 'UPDATE '.$db_table.' SET '.$db_data_col.' = ?, '.$db_time_col.' = '.time().' WHERE '.$db_id_col.'= ?'; + + try + { + $stmt = $this->db->prepare($sql); + $stmt->bindParam(1, $data, PDO::PARAM_STR); + $stmt->bindParam(2, $id, PDO::PARAM_STR); + $stmt->execute(); + } + catch (PDOException $e) + { + throw new sfDatabaseException(sprintf('PDOException was thrown when trying to manipulate session data. Message: %s', $e->getMessage())); + } + + return true; + } +} diff --git a/lib/vendor/symfony/lib/storage/.svn/text-base/sfPostgreSQLSessionStorage.class.php.svn-base b/lib/vendor/symfony/lib/storage/.svn/text-base/sfPostgreSQLSessionStorage.class.php.svn-base new file mode 100644 index 0000000..828d694 --- /dev/null +++ b/lib/vendor/symfony/lib/storage/.svn/text-base/sfPostgreSQLSessionStorage.class.php.svn-base @@ -0,0 +1,161 @@ + + * (c) 2004-2006 Sean Kerr + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Provides support for session storage using a PostgreSQL brand database. + * + * parameters: see sfDatabaseSessionStorage + * + * @package symfony + * @subpackage storage + * @author Fabien Potencier + * @author Sean Kerr + * @version SVN: $Id$ + */ +class sfPostgreSQLSessionStorage extends sfDatabaseSessionStorage +{ + /** + * Destroys a session. + * + * @param string $id A session ID + * + * @return bool true, if the session was destroyed, otherwise an exception is thrown + * + * @throws sfDatabaseException If the session cannot be destroyed + */ + public function sessionDestroy($id) + { + // get table/column + $db_table = $this->options['db_table']; + $db_id_col = $this->options['db_id_col']; + + // cleanup the session id, just in case + $id = addslashes($id); + + // delete the record associated with this id + $sql = 'DELETE FROM '.$db_table.' WHERE '.$db_id_col.' = \''.$id.'\''; + + if (@pg_query($this->db, $sql)) + { + return true; + } + + // failed to destroy session + throw new sfDatabaseException(sprintf('sfPostgreSQLSessionStorage cannot destroy session id "%s".', $id)); + } + + /** + * Cleans up old sessions. + * + * @param int $lifetime The lifetime of a session + * + * @return bool true, if old sessions have been cleaned, otherwise an exception is thrown + * + * @throws sfDatabaseException If any old sessions cannot be cleaned + */ + public function sessionGC($lifetime) + { + // get table/column + $db_table = $this->options['db_table']; + $db_time_col = $this->options['db_time_col']; + + // delete the record associated with this id + $sql = 'DELETE FROM '.$db_table.' WHERE '.$db_time_col.' < '.(time() - $lifetime); + + if (!@pg_query($this->db, $sql)) + { + throw new sfDatabaseException('sfPostgreSQLSessionStorage cannot delete old sessions.'); + } + + return true; + } + + /** + * Reads a session. + * + * @param string $id A session ID + * + * @return string The session data if the session was read or created, otherwise an exception is thrown + * + * @throws sfDatabaseException If the session cannot be read + */ + public function sessionRead($id) + { + // get table/column + $db_table = $this->options['db_table']; + $db_data_col = $this->options['db_data_col']; + $db_id_col = $this->options['db_id_col']; + $db_time_col = $this->options['db_time_col']; + + // cleanup the session id, just in case + $id = addslashes($id); + + // delete the record associated with this id + $sql = 'SELECT '.$db_data_col.' FROM '.$db_table.' WHERE '.$db_id_col.' = \''.$id.'\''; + + $result = @pg_query($this->db, $sql); + + if ($result != false && @pg_num_rows($result) == 1) + { + // found the session + $data = pg_fetch_row($result); + + return $data[0]; + } + else + { + // session does not exist, create it + $sql = 'INSERT INTO '.$db_table.' ('.$db_id_col.', '.$db_data_col.', '.$db_time_col.') VALUES (\''.$id.'\', \'\', '.time().')'; + + if (@pg_query($this->db, $sql)) + { + return ''; + } + + // can't create record + throw new sfDatabaseException(sprintf('sfPostgreSQLSessionStorage cannot create new record for id "%s".', $id)); + } + } + + /** + * Writes session data. + * + * @param string $id A session ID + * @param string $data A serialized chunk of session data + * + * @return bool true, if the session was written, otherwise an exception is thrown + * + * @throws sfDatabaseException If the session data cannot be written + */ + public function sessionWrite($id, $data) + { + // get table/column + $db_table = $this->options['db_table']; + $db_data_col = $this->options['db_data_col']; + $db_id_col = $this->options['db_id_col']; + $db_time_col = $this->options['db_time_col']; + + // cleanup the session id and data, just in case + $id = addslashes($id); + $data = addslashes($data); + + // delete the record associated with this id + $sql = 'UPDATE '.$db_table.' SET '.$db_data_col.' = \''.$data.'\', '.$db_time_col.' = '.time().' WHERE '.$db_id_col.' = \''.$id.'\''; + + if (@pg_query($this->db, $sql)) + { + return true; + } + + // failed to write session data + throw new sfDatabaseException(sprintf('sfPostgreSQLSessionStorage cannot write session data for id "%s".', $id)); + } +} diff --git a/lib/vendor/symfony/lib/storage/.svn/text-base/sfSessionStorage.class.php.svn-base b/lib/vendor/symfony/lib/storage/.svn/text-base/sfSessionStorage.class.php.svn-base new file mode 100644 index 0000000..3953409 --- /dev/null +++ b/lib/vendor/symfony/lib/storage/.svn/text-base/sfSessionStorage.class.php.svn-base @@ -0,0 +1,185 @@ + + * (c) 2004-2006 Sean Kerr + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfSessionStorage allows you to store persistent symfony data in the user session. + * + * Optional parameters: + * + * # auto_start - [Yes] - Should session_start() automatically be called? + * # session_name - [symfony] - The name of the session. + * + * @package symfony + * @subpackage storage + * @author Fabien Potencier + * @author Sean Kerr + * @version SVN: $Id$ + */ +class sfSessionStorage extends sfStorage +{ + static protected + $sessionIdRegenerated = false, + $sessionStarted = false; + + /** + * Available options: + * + * * session_name: The cookie name (symfony by default) + * * session_id: The session id (null by default) + * * auto_start: Whether to start the session (true by default) + * * session_cookie_lifetime: Cookie lifetime + * * session_cookie_path: Cookie path + * * session_cookie_domain: Cookie domain + * * session_cookie_secure: Cookie secure + * * session_cookie_httponly: Cookie http only (only for PHP >= 5.2) + * + * The default values for all 'session_cookie_*' options are those returned by the session_get_cookie_params() function + * + * @param array $options An associative array of options + * + * @see sfStorage + */ + public function initialize($options = null) + { + $cookieDefaults = session_get_cookie_params(); + + $options = array_merge(array( + 'session_name' => 'symfony', + 'session_id' => null, + 'auto_start' => true, + 'session_cookie_lifetime' => $cookieDefaults['lifetime'], + 'session_cookie_path' => $cookieDefaults['path'], + 'session_cookie_domain' => $cookieDefaults['domain'], + 'session_cookie_secure' => $cookieDefaults['secure'], + 'session_cookie_httponly' => isset($cookieDefaults['httponly']) ? $cookieDefaults['httponly'] : false, + 'session_cache_limiter' => null, + ), $options); + + // initialize parent + parent::initialize($options); + + // set session name + $sessionName = $this->options['session_name']; + + session_name($sessionName); + + if (!(boolean) ini_get('session.use_cookies') && $sessionId = $this->options['session_id']) + { + session_id($sessionId); + } + + $lifetime = $this->options['session_cookie_lifetime']; + $path = $this->options['session_cookie_path']; + $domain = $this->options['session_cookie_domain']; + $secure = $this->options['session_cookie_secure']; + $httpOnly = $this->options['session_cookie_httponly']; + session_set_cookie_params($lifetime, $path, $domain, $secure, $httpOnly); + + if (null !== $this->options['session_cache_limiter']) + { + session_cache_limiter($this->options['session_cache_limiter']); + } + + if ($this->options['auto_start'] && !self::$sessionStarted) + { + session_start(); + self::$sessionStarted = true; + } + } + + /** + * Reads data from this storage. + * + * The preferred format for a key is directory style so naming conflicts can be avoided. + * + * @param string $key A unique key identifying your data + * + * @return mixed Data associated with the key + */ + public function read($key) + { + $retval = null; + + if (isset($_SESSION[$key])) + { + $retval = $_SESSION[$key]; + } + + return $retval; + } + + /** + * Removes data from this storage. + * + * The preferred format for a key is directory style so naming conflicts can be avoided. + * + * @param string $key A unique key identifying your data + * + * @return mixed Data associated with the key + */ + public function remove($key) + { + $retval = null; + + if (isset($_SESSION[$key])) + { + $retval = $_SESSION[$key]; + unset($_SESSION[$key]); + } + + return $retval; + } + + /** + * Writes data to this storage. + * + * The preferred format for a key is directory style so naming conflicts can be avoided. + * + * @param string $key A unique key identifying your data + * @param mixed $data Data associated with your key + * + */ + public function write($key, $data) + { + $_SESSION[$key] = $data; + } + + /** + * Regenerates id that represents this storage. + * + * @param boolean $destroy Destroy session when regenerating? + * + * @return boolean True if session regenerated, false if error + * + */ + public function regenerate($destroy = false) + { + if (self::$sessionIdRegenerated) + { + return; + } + + // regenerate a new session id once per object + session_regenerate_id($destroy); + + self::$sessionIdRegenerated = true; + } + + /** + * Executes the shutdown procedure. + * + */ + public function shutdown() + { + // don't need a shutdown procedure because read/write do it in real-time + session_write_close(); + } +} diff --git a/lib/vendor/symfony/lib/storage/.svn/text-base/sfSessionTestStorage.class.php.svn-base b/lib/vendor/symfony/lib/storage/.svn/text-base/sfSessionTestStorage.class.php.svn-base new file mode 100644 index 0000000..002194e --- /dev/null +++ b/lib/vendor/symfony/lib/storage/.svn/text-base/sfSessionTestStorage.class.php.svn-base @@ -0,0 +1,171 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfSessionTestStorage is a fake sfSessionStorage implementation to allow easy testing. + * + * @package symfony + * @subpackage storage + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfSessionTestStorage extends sfStorage +{ + protected + $sessionId = null, + $sessionData = array(); + + /** + * Available options: + * + * * session_path: The path to store the session files + * * session_id: The session identifier + * + * @param array $options An associative array of options + * + * @see sfStorage + */ + public function initialize($options = null) + { + if (!isset($options['session_path'])) + { + throw new InvalidArgumentException('The "session_path" option is mandatory for the sfSessionTestStorage class.'); + } + + $options = array_merge(array( + 'session_id' => null, + ), $options); + + // initialize parent + parent::initialize($options); + + $this->sessionId = null !== $this->options['session_id'] ? $this->options['session_id'] : (array_key_exists('session_id', $_SERVER) ? $_SERVER['session_id'] : null); + + if ($this->sessionId) + { + // we read session data from temp file + $file = $this->options['session_path'].DIRECTORY_SEPARATOR.$this->sessionId.'.session'; + $this->sessionData = file_exists($file) ? unserialize(file_get_contents($file)) : array(); + } + else + { + $this->sessionId = md5(uniqid(rand(), true)); + $this->sessionData = array(); + } + } + + /** + * Gets session id for the current session storage instance. + * + * @return string Session id + */ + public function getSessionId() + { + return $this->sessionId; + } + + /** + * Reads data from this storage. + * + * The preferred format for a key is directory style so naming conflicts can be avoided. + * + * @param string $key A unique key identifying your data + * + * @return mixed Data associated with the key + */ + public function read($key) + { + $retval = null; + + if (isset($this->sessionData[$key])) + { + $retval = $this->sessionData[$key]; + } + + return $retval; + } + + /** + * Removes data from this storage. + * + * The preferred format for a key is directory style so naming conflicts can be avoided. + * + * @param string $key A unique key identifying your data + * + * @return mixed Data associated with the key + */ + public function remove($key) + { + $retval = null; + + if (isset($this->sessionData[$key])) + { + $retval = $this->sessionData[$key]; + unset($this->sessionData[$key]); + } + + return $retval; + } + + /** + * Writes data to this storage. + * + * The preferred format for a key is directory style so naming conflicts can be avoided + * + * @param string $key A unique key identifying your data + * @param mixed $data Data associated with your key + * + */ + public function write($key, $data) + { + $this->sessionData[$key] = $data; + } + + /** + * Clears all test sessions. + */ + public function clear() + { + sfToolkit::clearDirectory($this->options['session_path']); + } + + /** + * Regenerates id that represents this storage. + * + * @param boolean $destroy Destroy session when regenerating? + * + * @return boolean True if session regenerated, false if error + * + */ + public function regenerate($destroy = false) + { + return true; + } + + /** + * Executes the shutdown procedure. + * + */ + public function shutdown() + { + if ($this->sessionId) + { + $current_umask = umask(0000); + if (!is_dir($this->options['session_path'])) + { + mkdir($this->options['session_path'], 0777, true); + } + umask($current_umask); + file_put_contents($this->options['session_path'].DIRECTORY_SEPARATOR.$this->sessionId.'.session', serialize($this->sessionData)); + $this->sessionId = ''; + $this->sessionData = array(); + } + } +} diff --git a/lib/vendor/symfony/lib/storage/.svn/text-base/sfStorage.class.php.svn-base b/lib/vendor/symfony/lib/storage/.svn/text-base/sfStorage.class.php.svn-base new file mode 100644 index 0000000..2de7cb8 --- /dev/null +++ b/lib/vendor/symfony/lib/storage/.svn/text-base/sfStorage.class.php.svn-base @@ -0,0 +1,126 @@ + + * (c) 2004-2006 Sean Kerr + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfStorage allows you to customize the way symfony stores its persistent data. + * + * @package symfony + * @subpackage storage + * @author Fabien Potencier + * @author Sean Kerr + * @version SVN: $Id$ + */ +abstract class sfStorage +{ + protected + $options = array(); + + /** + * Class constructor. + * + * @see initialize() + */ + public function __construct($options = array()) + { + $this->initialize($options); + + if ($this->options['auto_shutdown']) + { + register_shutdown_function(array($this, 'shutdown')); + } + } + + /** + * Initializes this Storage instance. + * + * Available options: + * + * * auto_shutdown: Whether to automatically save the changes to the session (true by default) + * + * @param array $options An associative array of options + * + * @return bool true, if initialization completes successfully, otherwise false + * + * @throws sfInitializationException If an error occurs while initializing this sfStorage + */ + public function initialize($options = array()) + { + $this->options = array_merge(array( + 'auto_shutdown' => true, + ), $options); + } + + /** + * Returns the option array. + * + * @return array The array of options + */ + public function getOptions() + { + return $this->options; + } + + /** + * Reads data from this storage. + * + * The preferred format for a key is directory style so naming conflicts can be avoided. + * + * @param string $key A unique key identifying your data + * + * @return mixed Data associated with the key + * + * @throws sfStorageException If an error occurs while reading data from this storage + */ + abstract public function read($key); + + /** + * Regenerates id that represents this storage. + * + * @param boolean $destroy Destroy session when regenerating? + * + * @return boolean True if session regenerated, false if error + * + * @throws sfStorageException If an error occurs while regenerating this storage + */ + abstract public function regenerate($destroy = false); + + /** + * Removes data from this storage. + * + * The preferred format for a key is directory style so naming conflicts can be avoided. + * + * @param string $key A unique key identifying your data + * + * @return mixed Data associated with the key + * + * @throws sfStorageException If an error occurs while removing data from this storage + */ + abstract public function remove($key); + + /** + * Executes the shutdown procedure. + * + * @throws sfStorageException If an error occurs while shutting down this storage + */ + abstract public function shutdown(); + + /** + * Writes data to this storage. + * + * The preferred format for a key is directory style so naming conflicts can be avoided. + * + * @param string $key A unique key identifying your data + * @param mixed $data Data associated with your key + * + * @throws sfStorageException If an error occurs while writing to this storage + */ + abstract public function write($key, $data); +} diff --git a/lib/vendor/symfony/lib/storage/sfCacheSessionStorage.class.php b/lib/vendor/symfony/lib/storage/sfCacheSessionStorage.class.php new file mode 100644 index 0000000..00d602b --- /dev/null +++ b/lib/vendor/symfony/lib/storage/sfCacheSessionStorage.class.php @@ -0,0 +1,283 @@ + + */ +class sfCacheSessionStorage extends sfStorage +{ + protected + $id = null, + $context = null, + $dispatcher = null, + $request = null, + $response = null, + $cache = null, + $data = array(), + $dataChanged = false; + + /** + * Initialize this Storage. + * + * @param array $options An associative array of initialization parameters. + * session_name [required] name of session to use + * session_cookie_path [required] cookie path + * session_cookie_domain [required] cookie domain + * session_cookie_lifetime [required] liftime of cookie + * session_cookie_secure [required] send only if secure connection + * session_cookie_http_only [required] accessible only via http protocol + * + * @return bool true, when initialization completes successfully. + * + * @throws sfInitializationException If an error occurs while initializing this Storage. + */ + public function initialize($options = array()) + { + // initialize parent + + // bc with a slightly different name formerly used here, let's be + // compatible with the base class name for it from here on out + if (isset($options['session_cookie_http_only'])) + { + $options['session_cookie_httponly'] = $options['session_cookie_http_only']; + } + + parent::initialize(array_merge(array('session_name' => 'sfproject', + 'session_cookie_lifetime' => '+30 days', + 'session_cookie_path' => '/', + 'session_cookie_domain' => null, + 'session_cookie_secure' => false, + 'session_cookie_httponly' => true, + 'session_cookie_secret' => 'sf$ecret'), $options)); + + // create cache instance + if (isset($this->options['cache']) && $this->options['cache']['class']) + { + $this->cache = new $this->options['cache']['class'](is_array($this->options['cache']['param']) ? $this->options['cache']['param'] : array()); + } + else + { + throw new InvalidArgumentException('sfCacheSessionStorage requires cache option.'); + } + + $this->context = sfContext::getInstance(); + + $this->dispatcher = $this->context->getEventDispatcher(); + $this->request = $this->context->getRequest(); + $this->response = $this->context->getResponse(); + + $cookie = $this->request->getCookie($this->options['session_name']); + + if(strpos($cookie, ':') !== false) + { + // split cookie data id:signature(id+secret) + list($id, $signature) = explode(':', $cookie, 2); + + if($signature == sha1($id.':'.$this->options['session_cookie_secret'])) + { + // cookie is valid + $this->id = $id; + } + else + { + // cookie signature broken + $this->id = null; + } + } + else + { + // cookie format wrong + $this->id = null; + } + + if(empty($this->id)) + { + $ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : 'localhost'; + $ua = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'ua'; + + // generate new id based on random # / ip / user agent / secret + $this->id = md5(rand(0, 999999).$ip.$ua.$this->options['session_cookie_secret']); + + if(sfConfig::get('sf_logging_enabled')) + { + $this->dispatcher->notify(new sfEvent($this, 'application.log', array('New session created'))); + } + + // only send cookie when id is issued + $this->response->setCookie($this->options['session_name'], + $this->id.':'.sha1($this->id.':'.$this->options['session_cookie_secret']), + $this->options['session_cookie_lifetime'], + $this->options['session_cookie_path'], + $this->options['session_cookie_domain'], + $this->options['session_cookie_secure'], + $this->options['session_cookie_httponly']); + + $this->data = array(); + } + else + { + // load data from cache. Watch out for the default case. We could + // serialize(array()) as the default to the call but that would be a performance hit + $raw = $this->cache->get($this->id, null); + if (is_null($raw)) + { + $this->data = array(); + } + elseif (is_array($raw)) + { + // probably an old cached value (BC) + $this->data = $raw; + } + else + { + $this->data = unserialize($raw); + } + + if(sfConfig::get('sf_logging_enabled')) + { + $this->dispatcher->notify(new sfEvent($this, 'application.log', array('Restored previous session'))); + } + } + session_id($this->id); + $this->response->addCacheControlHttpHeader('private'); + + return true; + } + + /** + * Write data to this storage. + * + * The preferred format for a key is directory style so naming conflicts can be avoided. + * + * @param string $key A unique key identifying your data. + * @param mixed $data Data associated with your key. + * + * @return void + */ + public function write($key, $data) + { + $this->dataChanged = true; + + $this->data[$key] =& $data; + } + + /** + * Read data from this storage. + * + * The preferred format for a key is directory style so naming conflicts can be avoided. + * + * @param string $key A unique key identifying your data. + * + * @return mixed Data associated with the key. + */ + public function read($key) + { + $retval = null; + + if (isset($this->data[$key])) + { + $retval =& $this->data[$key]; + } + + return $retval; + } + + /** + * Remove data from this storage. + * + * The preferred format for a key is directory style so naming conflicts can be avoided. + * + * @param string $key A unique key identifying your data. + * + * @return mixed Data associated with the key. + */ + public function remove($key) + { + $retval = null; + + if (isset($this->data[$key])) + { + $this->dataChanged = true; + + $retval =& $this->data[$key]; + unset($this->data[$key]); + } + + return $retval; + } + + /** + * Regenerates id that represents this storage. + * + * @param boolean $destroy Destroy session when regenerating? + * + * @return boolean True if session regenerated, false if error + * + * @throws sfStorageException If an error occurs while regenerating this storage + */ + public function regenerate($destroy = false) + { + if($destroy) + { + $this->data = array(); + $this->cache->remove($this->id); + } + + // generate session id + $ua = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'ua'; + + $this->id = md5(rand(0, 999999).$_SERVER['REMOTE_ADDR'].$ua.$this->options['session_cookie_secret']); + + // save data to cache + $this->cache->set($this->id, serialize($this->data)); + + // update session id in signed cookie + $this->response->setCookie($this->options['session_name'], + $this->id.':'.sha1($this->id.':'.$this->options['session_cookie_secret']), + $this->options['session_cookie_lifetime'], + $this->options['session_cookie_path'], + $this->options['session_cookie_domain'], + $this->options['session_cookie_secure'], + $this->options['session_cookie_httponly']); + session_id($this->id); + return true; + } + + /** + * Expires the session storage instance. + */ + public function expire() + { + // destroy data and regenerate id + $this->regenerate(true); + + if(sfConfig::get('sf_logging_enabled')) + { + $this->dispatcher->notify(new sfEvent($this, 'application.log', array('new session created due to expiraton'))); + } + } + + /** + * Executes the shutdown procedure. + * + * @throws sfStorageException If an error occurs while shutting down this storage + */ + public function shutdown() + { + // only update cache if session has changed + if($this->dataChanged === true) + { + $this->cache->set($this->id, serialize($this->data)); + if(sfConfig::get('sf_logging_enabled')) + { + $this->dispatcher->notify(new sfEvent($this, 'application.log', array('Storing session to cache'))); + } + } + } +} diff --git a/lib/vendor/symfony/lib/storage/sfDatabaseSessionStorage.class.php b/lib/vendor/symfony/lib/storage/sfDatabaseSessionStorage.class.php new file mode 100644 index 0000000..2a30b2f --- /dev/null +++ b/lib/vendor/symfony/lib/storage/sfDatabaseSessionStorage.class.php @@ -0,0 +1,205 @@ + + * (c) 2004-2006 Sean Kerr + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Base class for all sfStorage that uses a sfDatabase object as a storage. + * + * @package symfony + * @subpackage storage + * @author Fabien Potencier + * @author Sean Kerr + * @version SVN: $Id: sfDatabaseSessionStorage.class.php 22037 2009-09-15 11:00:20Z fabien $ + */ +abstract class sfDatabaseSessionStorage extends sfSessionStorage +{ + protected + $db = null, + $con = null; + + /** + * Available options: + * + * * db_table: The database table in which session data will be stored + * * database: The sfDatabase object to use + * * db_id_col: The database column in which the session id will be stored (sess_id by default) + * * db_data_col: The database column in which the session data will be stored (sess_data by default) + * * db_time_col: The database column in which the session timestamp will be stored (sess_time by default) + * + * @param array $options An associative array of options + * + * @see sfSessionStorage + */ + public function initialize($options = array()) + { + $options = array_merge(array( + 'db_id_col' => 'sess_id', + 'db_data_col' => 'sess_data', + 'db_time_col' => 'sess_time', + ), $options); + + // disable auto_start + $options['auto_start'] = false; + + // initialize the parent + parent::initialize($options); + + if (!isset($this->options['db_table'])) + { + throw new sfInitializationException('You must provide a "db_table" option to sfDatabaseSessionStorage.'); + } + + if (!isset($this->options['database'])) + { + throw new sfInitializationException('You must provide a "database" option to sfDatabaseSessionStorage.'); + } + + // use this object as the session handler + session_set_save_handler(array($this, 'sessionOpen'), + array($this, 'sessionClose'), + array($this, 'sessionRead'), + array($this, 'sessionWrite'), + array($this, 'sessionDestroy'), + array($this, 'sessionGC')); + + // start our session + session_start(); + } + + /** + * Closes a session. + * + * @return boolean true, if the session was closed, otherwise false + */ + public function sessionClose() + { + // do nothing + return true; + } + + /** + * Opens a session. + * + * @param string $path (ignored) + * @param string $name (ignored) + * + * @return boolean true, if the session was opened, otherwise an exception is thrown + * + * @throws DatabaseException If a connection with the database does not exist or cannot be created + */ + public function sessionOpen($path = null, $name = null) + { + // what database are we using? + $database = $this->options['database']; + + // get the database and connection + $databaseClass = get_class($database); + if($databaseClass == 'sfPropelDatabase') + { + $this->db = Propel::getConnection($database->getParameter('name')); + } + elseif($databaseClass == 'sfDoctrineDatabase') + { + $this->db = $database->getConnection(); + } + else + { + $this->db = $database->getResource(); + } + + $this->con = $database->getConnection(); + + if (null === $this->db && null === $this->con) + { + throw new sfDatabaseException('Database connection does not exist. Unable to open session.'); + } + + return true; + } + + /** + * Destroys a session. + * + * @param string $id A session ID + * + * @return bool true, if the session was destroyed, otherwise an exception is thrown + * + * @throws DatabaseException If the session cannot be destroyed + */ + abstract public function sessionDestroy($id); + + /** + * Cleans up old sessions. + * + * @param int $lifetime The lifetime of a session + * + * @return bool true, if old sessions have been cleaned, otherwise an exception is thrown + * + * @throws DatabaseException If any old sessions cannot be cleaned + */ + abstract public function sessionGC($lifetime); + + /** + * Reads a session. + * + * @param string $id A session ID + * + * @return bool true, if the session was read, otherwise an exception is thrown + * + * @throws DatabaseException If the session cannot be read + */ + abstract public function sessionRead($id); + + /** + * Writes session data. + * + * @param string $id A session ID + * @param string $data A serialized chunk of session data + * + * @return bool true, if the session was written, otherwise an exception is thrown + * + * @throws DatabaseException If the session data cannot be written + */ + abstract public function sessionWrite($id, $data); + + /** + * Regenerates id that represents this storage. + * + * @param boolean $destroy Destroy session when regenerating? + * + * @return boolean True if session regenerated, false if error + * + */ + public function regenerate($destroy = false) + { + if (self::$sessionIdRegenerated) + { + return; + } + + $currentId = session_id(); + + parent::regenerate($destroy); + + $newId = session_id(); + $this->sessionRead($newId); + + return $this->sessionWrite($newId, $this->sessionRead($currentId)); + } + + /** + * Executes the shutdown procedure. + * + */ + public function shutdown() + { + parent::shutdown(); + } +} diff --git a/lib/vendor/symfony/lib/storage/sfMySQLSessionStorage.class.php b/lib/vendor/symfony/lib/storage/sfMySQLSessionStorage.class.php new file mode 100644 index 0000000..2a635a2 --- /dev/null +++ b/lib/vendor/symfony/lib/storage/sfMySQLSessionStorage.class.php @@ -0,0 +1,216 @@ + + * (c) 2004-2006 Sean Kerr + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Provides support for session storage using a MySQL brand database. + * + * parameters: see sfDatabaseSessionStorage + * + * @package symfony + * @subpackage storage + * @author Fabien Potencier + * @author Sean Kerr + * @author Julien Garand + * @version SVN: $Id: sfMySQLSessionStorage.class.php 24590 2009-11-30 18:28:13Z FabianLange $ + */ +class sfMySQLSessionStorage extends sfDatabaseSessionStorage +{ + /** + * Destroys a session. + * + * @param string $id A session ID + * + * @return bool true, if the session was destroyed, otherwise an exception is thrown + * + * @throws sfDatabaseException If the session cannot be destroyed. + */ + public function sessionDestroy($id) + { + // get table/column + $db_table = $this->options['db_table']; + $db_id_col = $this->options['db_id_col']; + + // cleanup the session id, just in case + $id = $this->db_escape($id); + + // delete the record associated with this id + $sql = "DELETE FROM $db_table WHERE $db_id_col = '$id'"; + + if ($this->db_query($sql)) + { + return true; + } + + // failed to destroy session + throw new sfDatabaseException(sprintf('%s cannot destroy session id "%s" (%s).', get_class($this), $id, $this->db_error())); + } + + /** + * Cleans up old sessions. + * + * @param int $lifetime The lifetime of a session + * + * @return bool true, if old sessions have been cleaned, otherwise an exception is thrown + * + * @throws sfDatabaseException If any old sessions cannot be cleaned + */ + public function sessionGC($lifetime) + { + // get table/column + $db_table = $this->options['db_table']; + $db_time_col = $this->options['db_time_col']; + + // delete the record older than the authorised session life time + $lifetime = $this->db_escape($lifetime); // We never know... + $sql = "DELETE FROM $db_table WHERE $db_time_col + $lifetime < UNIX_TIMESTAMP()"; + + if (!$this->db_query($sql)) + { + throw new sfDatabaseException(sprintf('%s cannot delete old sessions (%s).', get_class($this), $this->db_error())); + } + + return true; + } + + /** + * Reads a session. + * + * @param string $id A session ID + * + * @return string The session data if the session was read or created, otherwise an exception is thrown + * + * @throws sfDatabaseException If the session cannot be read + */ + public function sessionRead($id) + { + // get table/column + $db_table = $this->options['db_table']; + $db_data_col = $this->options['db_data_col']; + $db_id_col = $this->options['db_id_col']; + $db_time_col = $this->options['db_time_col']; + + // cleanup the session id, just in case + $id = $this->db_escape($id); + + // get the record associated with this id + $sql = "SELECT $db_data_col FROM $db_table WHERE $db_id_col = '$id'"; + + $result = $this->db_query($sql); + + if ($result != false && $this->db_num_rows($result) == 1) + { + // found the session + $data = $this->db_fetch_row($result); + + return $data[0]; + } + else + { + // session does not exist, create it + $sql = "INSERT INTO $db_table ($db_id_col, $db_data_col, $db_time_col) VALUES ('$id', '', UNIX_TIMESTAMP())"; + if ($this->db_query($sql)) + { + return ''; + } + + // can't create record + throw new sfDatabaseException(sprintf('%s cannot create new record for id "%s" (%s).', get_class($this), $id, $this->db_error())); + } + } + + /** + * Writes session data. + * + * @param string $id A session ID + * @param string $data A serialized chunk of session data + * + * @return bool true, if the session was written, otherwise an exception is thrown + * + * @throws sfDatabaseException If the session data cannot be written + */ + public function sessionWrite($id, $data) + { + // get table/column + $db_table = $this->options['db_table']; + $db_data_col = $this->options['db_data_col']; + $db_id_col = $this->options['db_id_col']; + $db_time_col = $this->options['db_time_col']; + + // cleanup the session id and data, just in case + $id = $this->db_escape($id); + $data = $this->db_escape($data); + + // update the record associated with this id + $sql = "UPDATE $db_table SET $db_data_col='$data', $db_time_col=UNIX_TIMESTAMP() WHERE $db_id_col='$id'"; + + if ($this->db_query($sql)) + { + return true; + } + + // failed to write session data + throw new sfDatabaseException(sprintf('%s cannot write session data for id "%s" (%s).', get_class($this), $id, $this->db_error())); + } + + /** + * Executes an SQL Query + * + * @param string $query The query to execute + * @return mixed The result of the query + */ + protected function db_query($query) + { + return @mysql_query($query, $this->db); + } + + /** + * Escapes a string before using it in a query statement + * + * @param string $string The string to escape + * @return string The escaped string + */ + protected function db_escape($string) + { + return mysql_real_escape_string($string, $this->db); + } + + /** + * Counts the rows in a query result + * + * @param resource $result Result of a query + * @return int Number of rows + */ + protected function db_num_rows($result) + { + return mysql_num_rows($result); + } + + /** + * Extracts a row from a query result set + * + * @param resource $result Result of a query + * @return array Extracted row as an indexed array + */ + protected function db_fetch_row($result) + { + return mysql_fetch_row($result); + } + + /** + * Returns the text of the error message from previous database operation + * + * @return string The error text from the last database function + */ + protected function db_error() + { + return mysql_error($this->db); + } +} diff --git a/lib/vendor/symfony/lib/storage/sfMySQLiSessionStorage.class.php b/lib/vendor/symfony/lib/storage/sfMySQLiSessionStorage.class.php new file mode 100644 index 0000000..adbd115 --- /dev/null +++ b/lib/vendor/symfony/lib/storage/sfMySQLiSessionStorage.class.php @@ -0,0 +1,80 @@ + + * (c) 2004-2006 Sean Kerr + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Provides support for session storage using a MySQL brand database + * using the MySQL improved API. + * + * parameters: see sfDatabaseSessionStorage + * + * @package symfony + * @subpackage storage + * @author Fabien Potencier + * @author Sean Kerr + * @author Julien Garand + * @version SVN: $Id: sfMySQLiSessionStorage.class.php 24590 2009-11-30 18:28:13Z FabianLange $ + */ +class sfMySQLiSessionStorage extends sfMySQLSessionStorage +{ + /** + * Execute an SQL Query + * + * @param string $query The query to execute + * @return mixed The result of the query + */ + protected function db_query($query) + { + return mysqli_query($this->db, $query); + } + + /** + * Escape a string before using it in a query statement + * + * @param string $string The string to escape + * @return string The escaped string + */ + protected function db_escape($string) + { + return mysqli_real_escape_string($this->db, $string); + } + + /** + * Count the rows in a query result + * + * @param resource $result Result of a query + * @return int Number of rows + */ + protected function db_num_rows($result) + { + return $result->num_rows; + } + + /** + * Extract a row from a query result set + * + * @param resource $result Result of a query + * @return array Extracted row as an indexed array + */ + protected function db_fetch_row($result) + { + return $result->fetch_row(); + } + + /** + * Returns the text of the error message from previous database operation + * + * @return string The error text from the last database function + */ + protected function db_error() + { + return mysqli_error($this->db); + } +} diff --git a/lib/vendor/symfony/lib/storage/sfNoStorage.class.php b/lib/vendor/symfony/lib/storage/sfNoStorage.class.php new file mode 100644 index 0000000..ac109e0 --- /dev/null +++ b/lib/vendor/symfony/lib/storage/sfNoStorage.class.php @@ -0,0 +1,93 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfNoStorage allows you to disable session support. + * + * To disable sessions, change the storage factory in config/factories.yml: + * + * storage: + * class: sfNoStorage + * + * @package symfony + * @subpackage storage + * @author Fabien Potencier + * @version SVN: $Id: sfNoStorage.class.php 9942 2008-06-27 18:00:49Z fabien $ + */ +class sfNoStorage extends sfStorage +{ + /** + * Reads data from this storage. + * + * The preferred format for a key is directory style so naming conflicts can be avoided. + * + * @param string $key A unique key identifying your data + * + * @return mixed Data associated with the key + * + * @throws sfStorageException If an error occurs while reading data from this storage + */ + public function read($key) + { + return null; + } + + /** + * Removes data from this storage. + * + * The preferred format for a key is directory style so naming conflicts can be avoided. + * + * @param string $key A unique key identifying your data + * + * @return mixed Data associated with the key + * + * @throws sfStorageException If an error occurs while removing data from this storage + */ + public function remove($key) + { + return null; + } + + /** + * Writes data to this storage. + * + * The preferred format for a key is directory style so naming conflicts can be avoided. + * + * @param string $key A unique key identifying your data + * @param mixed $data Data associated with your key + * + * @throws sfStorageException If an error occurs while writing to this storage + */ + public function write($key, $data) + { + } + + /** + * Regenerates id that represents this storage. + * + * @param boolean $destroy Destroy session when regenerating? + * + * @return boolean True if session regenerated, false if error + * + */ + public function regenerate($destroy = false) + { + return true; + } + + /** + * Executes the shutdown procedure. + * + * @throws sfStorageException If an error occurs while shutting down this storage + */ + public function shutdown() + { + } +} diff --git a/lib/vendor/symfony/lib/storage/sfPDOSessionStorage.class.php b/lib/vendor/symfony/lib/storage/sfPDOSessionStorage.class.php new file mode 100644 index 0000000..ca8af01 --- /dev/null +++ b/lib/vendor/symfony/lib/storage/sfPDOSessionStorage.class.php @@ -0,0 +1,174 @@ + + * (c) 2004, 2005 Sean Kerr + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Provides support for session storage using a PDO database abstraction layer. + * + * parameters: see sfDatabaseSessionStorage + * + * @package symfony + * @subpackage storage + * @author Mathew Toth + * @author Fabien Potencier + * @author Sean Kerr + * @version SVN: $Id: sfPDOSessionStorage.class.php 13143 2008-11-18 22:22:01Z FabianLange $ + */ +class sfPDOSessionStorage extends sfDatabaseSessionStorage +{ + /** + * Destroys a session. + * + * @param string $id A session ID + * + * @return bool true, if the session was destroyed, otherwise an exception is thrown + * + * @throws DatabaseException If the session cannot be destroyed + */ + public function sessionDestroy($id) + { + // get table/column + $db_table = $this->options['db_table']; + $db_id_col = $this->options['db_id_col']; + + // delete the record associated with this id + $sql = 'DELETE FROM '.$db_table.' WHERE '.$db_id_col.'= ?'; + + try + { + $stmt = $this->db->prepare($sql); + $stmt->bindParam(1, $id, PDO::PARAM_STR); + $stmt->execute(); + } + catch (PDOException $e) + { + throw new sfDatabaseException(sprintf('PDOException was thrown when trying to manipulate session data. Message: %s', $e->getMessage())); + } + + return true; + } + + /** + * Cleans up old sessions. + * + * @param int $lifetime The lifetime of a session + * + * @return bool true, if old sessions have been cleaned, otherwise an exception is thrown + * + * @throws DatabaseException If any old sessions cannot be cleaned + */ + public function sessionGC($lifetime) + { + // get table/column + $db_table = $this->options['db_table']; + $db_time_col = $this->options['db_time_col']; + + // delete the record associated with this id + $sql = 'DELETE FROM '.$db_table.' WHERE '.$db_time_col.' < '.(time() - $lifetime); + + try + { + $this->db->query($sql); + } + catch (PDOException $e) + { + throw new sfDatabaseException(sprintf('PDOException was thrown when trying to manipulate session data. Message: %s', $e->getMessage())); + } + + return true; + } + + /** + * Reads a session. + * + * @param string $id A session ID + * + * @return string The session data if the session was read or created, otherwise an exception is thrown + * + * @throws DatabaseException If the session cannot be read + */ + public function sessionRead($id) + { + // get table/columns + $db_table = $this->options['db_table']; + $db_data_col = $this->options['db_data_col']; + $db_id_col = $this->options['db_id_col']; + $db_time_col = $this->options['db_time_col']; + + try + { + $sql = 'SELECT '.$db_data_col.' FROM '.$db_table.' WHERE '.$db_id_col.'=?'; + + $stmt = $this->db->prepare($sql); + $stmt->bindParam(1, $id, PDO::PARAM_STR, 255); + + $stmt->execute(); + // it is recommended to use fetchAll so that PDO can close the DB cursor + // we anyway expect either no rows, or one row with one column. fetchColumn, seems to be buggy #4777 + $sessionRows = $stmt->fetchAll(PDO::FETCH_NUM); + if (count($sessionRows) == 1) + { + return $sessionRows[0][0]; + } + else + { + // session does not exist, create it + $sql = 'INSERT INTO '.$db_table.'('.$db_id_col.', '.$db_data_col.', '.$db_time_col.') VALUES (?, ?, ?)'; + + $stmt = $this->db->prepare($sql); + $stmt->bindParam(1, $id, PDO::PARAM_STR); + $stmt->bindValue(2, '', PDO::PARAM_STR); + $stmt->bindValue(3, time(), PDO::PARAM_INT); + $stmt->execute(); + + return ''; + } + } + catch (PDOException $e) + { + throw new sfDatabaseException(sprintf('PDOException was thrown when trying to manipulate session data. Message: %s', $e->getMessage())); + } + } + + /** + * Writes session data. + * + * @param string $id A session ID + * @param string $data A serialized chunk of session data + * + * @return bool true, if the session was written, otherwise an exception is thrown + * + * @throws DatabaseException If the session data cannot be written + */ + public function sessionWrite($id, $data) + { + // get table/column + $db_table = $this->options['db_table']; + $db_data_col = $this->options['db_data_col']; + $db_id_col = $this->options['db_id_col']; + $db_time_col = $this->options['db_time_col']; + + $sql = 'UPDATE '.$db_table.' SET '.$db_data_col.' = ?, '.$db_time_col.' = '.time().' WHERE '.$db_id_col.'= ?'; + + try + { + $stmt = $this->db->prepare($sql); + $stmt->bindParam(1, $data, PDO::PARAM_STR); + $stmt->bindParam(2, $id, PDO::PARAM_STR); + $stmt->execute(); + } + catch (PDOException $e) + { + throw new sfDatabaseException(sprintf('PDOException was thrown when trying to manipulate session data. Message: %s', $e->getMessage())); + } + + return true; + } +} diff --git a/lib/vendor/symfony/lib/storage/sfPostgreSQLSessionStorage.class.php b/lib/vendor/symfony/lib/storage/sfPostgreSQLSessionStorage.class.php new file mode 100644 index 0000000..27c6791 --- /dev/null +++ b/lib/vendor/symfony/lib/storage/sfPostgreSQLSessionStorage.class.php @@ -0,0 +1,161 @@ + + * (c) 2004-2006 Sean Kerr + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Provides support for session storage using a PostgreSQL brand database. + * + * parameters: see sfDatabaseSessionStorage + * + * @package symfony + * @subpackage storage + * @author Fabien Potencier + * @author Sean Kerr + * @version SVN: $Id: sfPostgreSQLSessionStorage.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $ + */ +class sfPostgreSQLSessionStorage extends sfDatabaseSessionStorage +{ + /** + * Destroys a session. + * + * @param string $id A session ID + * + * @return bool true, if the session was destroyed, otherwise an exception is thrown + * + * @throws sfDatabaseException If the session cannot be destroyed + */ + public function sessionDestroy($id) + { + // get table/column + $db_table = $this->options['db_table']; + $db_id_col = $this->options['db_id_col']; + + // cleanup the session id, just in case + $id = addslashes($id); + + // delete the record associated with this id + $sql = 'DELETE FROM '.$db_table.' WHERE '.$db_id_col.' = \''.$id.'\''; + + if (@pg_query($this->db, $sql)) + { + return true; + } + + // failed to destroy session + throw new sfDatabaseException(sprintf('sfPostgreSQLSessionStorage cannot destroy session id "%s".', $id)); + } + + /** + * Cleans up old sessions. + * + * @param int $lifetime The lifetime of a session + * + * @return bool true, if old sessions have been cleaned, otherwise an exception is thrown + * + * @throws sfDatabaseException If any old sessions cannot be cleaned + */ + public function sessionGC($lifetime) + { + // get table/column + $db_table = $this->options['db_table']; + $db_time_col = $this->options['db_time_col']; + + // delete the record associated with this id + $sql = 'DELETE FROM '.$db_table.' WHERE '.$db_time_col.' < '.(time() - $lifetime); + + if (!@pg_query($this->db, $sql)) + { + throw new sfDatabaseException('sfPostgreSQLSessionStorage cannot delete old sessions.'); + } + + return true; + } + + /** + * Reads a session. + * + * @param string $id A session ID + * + * @return string The session data if the session was read or created, otherwise an exception is thrown + * + * @throws sfDatabaseException If the session cannot be read + */ + public function sessionRead($id) + { + // get table/column + $db_table = $this->options['db_table']; + $db_data_col = $this->options['db_data_col']; + $db_id_col = $this->options['db_id_col']; + $db_time_col = $this->options['db_time_col']; + + // cleanup the session id, just in case + $id = addslashes($id); + + // delete the record associated with this id + $sql = 'SELECT '.$db_data_col.' FROM '.$db_table.' WHERE '.$db_id_col.' = \''.$id.'\''; + + $result = @pg_query($this->db, $sql); + + if ($result != false && @pg_num_rows($result) == 1) + { + // found the session + $data = pg_fetch_row($result); + + return $data[0]; + } + else + { + // session does not exist, create it + $sql = 'INSERT INTO '.$db_table.' ('.$db_id_col.', '.$db_data_col.', '.$db_time_col.') VALUES (\''.$id.'\', \'\', '.time().')'; + + if (@pg_query($this->db, $sql)) + { + return ''; + } + + // can't create record + throw new sfDatabaseException(sprintf('sfPostgreSQLSessionStorage cannot create new record for id "%s".', $id)); + } + } + + /** + * Writes session data. + * + * @param string $id A session ID + * @param string $data A serialized chunk of session data + * + * @return bool true, if the session was written, otherwise an exception is thrown + * + * @throws sfDatabaseException If the session data cannot be written + */ + public function sessionWrite($id, $data) + { + // get table/column + $db_table = $this->options['db_table']; + $db_data_col = $this->options['db_data_col']; + $db_id_col = $this->options['db_id_col']; + $db_time_col = $this->options['db_time_col']; + + // cleanup the session id and data, just in case + $id = addslashes($id); + $data = addslashes($data); + + // delete the record associated with this id + $sql = 'UPDATE '.$db_table.' SET '.$db_data_col.' = \''.$data.'\', '.$db_time_col.' = '.time().' WHERE '.$db_id_col.' = \''.$id.'\''; + + if (@pg_query($this->db, $sql)) + { + return true; + } + + // failed to write session data + throw new sfDatabaseException(sprintf('sfPostgreSQLSessionStorage cannot write session data for id "%s".', $id)); + } +} diff --git a/lib/vendor/symfony/lib/storage/sfSessionStorage.class.php b/lib/vendor/symfony/lib/storage/sfSessionStorage.class.php new file mode 100644 index 0000000..77e3ca0 --- /dev/null +++ b/lib/vendor/symfony/lib/storage/sfSessionStorage.class.php @@ -0,0 +1,185 @@ + + * (c) 2004-2006 Sean Kerr + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfSessionStorage allows you to store persistent symfony data in the user session. + * + * Optional parameters: + * + * # auto_start - [Yes] - Should session_start() automatically be called? + * # session_name - [symfony] - The name of the session. + * + * @package symfony + * @subpackage storage + * @author Fabien Potencier + * @author Sean Kerr + * @version SVN: $Id: sfSessionStorage.class.php 31471 2010-11-22 19:32:02Z fabien $ + */ +class sfSessionStorage extends sfStorage +{ + static protected + $sessionIdRegenerated = false, + $sessionStarted = false; + + /** + * Available options: + * + * * session_name: The cookie name (symfony by default) + * * session_id: The session id (null by default) + * * auto_start: Whether to start the session (true by default) + * * session_cookie_lifetime: Cookie lifetime + * * session_cookie_path: Cookie path + * * session_cookie_domain: Cookie domain + * * session_cookie_secure: Cookie secure + * * session_cookie_httponly: Cookie http only (only for PHP >= 5.2) + * + * The default values for all 'session_cookie_*' options are those returned by the session_get_cookie_params() function + * + * @param array $options An associative array of options + * + * @see sfStorage + */ + public function initialize($options = null) + { + $cookieDefaults = session_get_cookie_params(); + + $options = array_merge(array( + 'session_name' => 'symfony', + 'session_id' => null, + 'auto_start' => true, + 'session_cookie_lifetime' => $cookieDefaults['lifetime'], + 'session_cookie_path' => $cookieDefaults['path'], + 'session_cookie_domain' => $cookieDefaults['domain'], + 'session_cookie_secure' => $cookieDefaults['secure'], + 'session_cookie_httponly' => isset($cookieDefaults['httponly']) ? $cookieDefaults['httponly'] : false, + 'session_cache_limiter' => null, + ), $options); + + // initialize parent + parent::initialize($options); + + // set session name + $sessionName = $this->options['session_name']; + + session_name($sessionName); + + if (!(boolean) ini_get('session.use_cookies') && $sessionId = $this->options['session_id']) + { + session_id($sessionId); + } + + $lifetime = $this->options['session_cookie_lifetime']; + $path = $this->options['session_cookie_path']; + $domain = $this->options['session_cookie_domain']; + $secure = $this->options['session_cookie_secure']; + $httpOnly = $this->options['session_cookie_httponly']; + session_set_cookie_params($lifetime, $path, $domain, $secure, $httpOnly); + + if (null !== $this->options['session_cache_limiter']) + { + session_cache_limiter($this->options['session_cache_limiter']); + } + + if ($this->options['auto_start'] && !self::$sessionStarted) + { + session_start(); + self::$sessionStarted = true; + } + } + + /** + * Reads data from this storage. + * + * The preferred format for a key is directory style so naming conflicts can be avoided. + * + * @param string $key A unique key identifying your data + * + * @return mixed Data associated with the key + */ + public function read($key) + { + $retval = null; + + if (isset($_SESSION[$key])) + { + $retval = $_SESSION[$key]; + } + + return $retval; + } + + /** + * Removes data from this storage. + * + * The preferred format for a key is directory style so naming conflicts can be avoided. + * + * @param string $key A unique key identifying your data + * + * @return mixed Data associated with the key + */ + public function remove($key) + { + $retval = null; + + if (isset($_SESSION[$key])) + { + $retval = $_SESSION[$key]; + unset($_SESSION[$key]); + } + + return $retval; + } + + /** + * Writes data to this storage. + * + * The preferred format for a key is directory style so naming conflicts can be avoided. + * + * @param string $key A unique key identifying your data + * @param mixed $data Data associated with your key + * + */ + public function write($key, $data) + { + $_SESSION[$key] = $data; + } + + /** + * Regenerates id that represents this storage. + * + * @param boolean $destroy Destroy session when regenerating? + * + * @return boolean True if session regenerated, false if error + * + */ + public function regenerate($destroy = false) + { + if (self::$sessionIdRegenerated) + { + return; + } + + // regenerate a new session id once per object + session_regenerate_id($destroy); + + self::$sessionIdRegenerated = true; + } + + /** + * Executes the shutdown procedure. + * + */ + public function shutdown() + { + // don't need a shutdown procedure because read/write do it in real-time + session_write_close(); + } +} diff --git a/lib/vendor/symfony/lib/storage/sfSessionTestStorage.class.php b/lib/vendor/symfony/lib/storage/sfSessionTestStorage.class.php new file mode 100644 index 0000000..80c1305 --- /dev/null +++ b/lib/vendor/symfony/lib/storage/sfSessionTestStorage.class.php @@ -0,0 +1,171 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfSessionTestStorage is a fake sfSessionStorage implementation to allow easy testing. + * + * @package symfony + * @subpackage storage + * @author Fabien Potencier + * @version SVN: $Id: sfSessionTestStorage.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $ + */ +class sfSessionTestStorage extends sfStorage +{ + protected + $sessionId = null, + $sessionData = array(); + + /** + * Available options: + * + * * session_path: The path to store the session files + * * session_id: The session identifier + * + * @param array $options An associative array of options + * + * @see sfStorage + */ + public function initialize($options = null) + { + if (!isset($options['session_path'])) + { + throw new InvalidArgumentException('The "session_path" option is mandatory for the sfSessionTestStorage class.'); + } + + $options = array_merge(array( + 'session_id' => null, + ), $options); + + // initialize parent + parent::initialize($options); + + $this->sessionId = null !== $this->options['session_id'] ? $this->options['session_id'] : (array_key_exists('session_id', $_SERVER) ? $_SERVER['session_id'] : null); + + if ($this->sessionId) + { + // we read session data from temp file + $file = $this->options['session_path'].DIRECTORY_SEPARATOR.$this->sessionId.'.session'; + $this->sessionData = file_exists($file) ? unserialize(file_get_contents($file)) : array(); + } + else + { + $this->sessionId = md5(uniqid(rand(), true)); + $this->sessionData = array(); + } + } + + /** + * Gets session id for the current session storage instance. + * + * @return string Session id + */ + public function getSessionId() + { + return $this->sessionId; + } + + /** + * Reads data from this storage. + * + * The preferred format for a key is directory style so naming conflicts can be avoided. + * + * @param string $key A unique key identifying your data + * + * @return mixed Data associated with the key + */ + public function read($key) + { + $retval = null; + + if (isset($this->sessionData[$key])) + { + $retval = $this->sessionData[$key]; + } + + return $retval; + } + + /** + * Removes data from this storage. + * + * The preferred format for a key is directory style so naming conflicts can be avoided. + * + * @param string $key A unique key identifying your data + * + * @return mixed Data associated with the key + */ + public function remove($key) + { + $retval = null; + + if (isset($this->sessionData[$key])) + { + $retval = $this->sessionData[$key]; + unset($this->sessionData[$key]); + } + + return $retval; + } + + /** + * Writes data to this storage. + * + * The preferred format for a key is directory style so naming conflicts can be avoided + * + * @param string $key A unique key identifying your data + * @param mixed $data Data associated with your key + * + */ + public function write($key, $data) + { + $this->sessionData[$key] = $data; + } + + /** + * Clears all test sessions. + */ + public function clear() + { + sfToolkit::clearDirectory($this->options['session_path']); + } + + /** + * Regenerates id that represents this storage. + * + * @param boolean $destroy Destroy session when regenerating? + * + * @return boolean True if session regenerated, false if error + * + */ + public function regenerate($destroy = false) + { + return true; + } + + /** + * Executes the shutdown procedure. + * + */ + public function shutdown() + { + if ($this->sessionId) + { + $current_umask = umask(0000); + if (!is_dir($this->options['session_path'])) + { + mkdir($this->options['session_path'], 0777, true); + } + umask($current_umask); + file_put_contents($this->options['session_path'].DIRECTORY_SEPARATOR.$this->sessionId.'.session', serialize($this->sessionData)); + $this->sessionId = ''; + $this->sessionData = array(); + } + } +} diff --git a/lib/vendor/symfony/lib/storage/sfStorage.class.php b/lib/vendor/symfony/lib/storage/sfStorage.class.php new file mode 100644 index 0000000..ca896c4 --- /dev/null +++ b/lib/vendor/symfony/lib/storage/sfStorage.class.php @@ -0,0 +1,126 @@ + + * (c) 2004-2006 Sean Kerr + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfStorage allows you to customize the way symfony stores its persistent data. + * + * @package symfony + * @subpackage storage + * @author Fabien Potencier + * @author Sean Kerr + * @version SVN: $Id: sfStorage.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $ + */ +abstract class sfStorage +{ + protected + $options = array(); + + /** + * Class constructor. + * + * @see initialize() + */ + public function __construct($options = array()) + { + $this->initialize($options); + + if ($this->options['auto_shutdown']) + { + register_shutdown_function(array($this, 'shutdown')); + } + } + + /** + * Initializes this Storage instance. + * + * Available options: + * + * * auto_shutdown: Whether to automatically save the changes to the session (true by default) + * + * @param array $options An associative array of options + * + * @return bool true, if initialization completes successfully, otherwise false + * + * @throws sfInitializationException If an error occurs while initializing this sfStorage + */ + public function initialize($options = array()) + { + $this->options = array_merge(array( + 'auto_shutdown' => true, + ), $options); + } + + /** + * Returns the option array. + * + * @return array The array of options + */ + public function getOptions() + { + return $this->options; + } + + /** + * Reads data from this storage. + * + * The preferred format for a key is directory style so naming conflicts can be avoided. + * + * @param string $key A unique key identifying your data + * + * @return mixed Data associated with the key + * + * @throws sfStorageException If an error occurs while reading data from this storage + */ + abstract public function read($key); + + /** + * Regenerates id that represents this storage. + * + * @param boolean $destroy Destroy session when regenerating? + * + * @return boolean True if session regenerated, false if error + * + * @throws sfStorageException If an error occurs while regenerating this storage + */ + abstract public function regenerate($destroy = false); + + /** + * Removes data from this storage. + * + * The preferred format for a key is directory style so naming conflicts can be avoided. + * + * @param string $key A unique key identifying your data + * + * @return mixed Data associated with the key + * + * @throws sfStorageException If an error occurs while removing data from this storage + */ + abstract public function remove($key); + + /** + * Executes the shutdown procedure. + * + * @throws sfStorageException If an error occurs while shutting down this storage + */ + abstract public function shutdown(); + + /** + * Writes data to this storage. + * + * The preferred format for a key is directory style so naming conflicts can be avoided. + * + * @param string $key A unique key identifying your data + * @param mixed $data Data associated with your key + * + * @throws sfStorageException If an error occurs while writing to this storage + */ + abstract public function write($key, $data); +} diff --git a/lib/vendor/symfony/lib/task/.svn/all-wcprops b/lib/vendor/symfony/lib/task/.svn/all-wcprops new file mode 100644 index 0000000..1d17676 --- /dev/null +++ b/lib/vendor/symfony/lib/task/.svn/all-wcprops @@ -0,0 +1,29 @@ +K 25 +svn:wc:ra_dav:version-url +V 37 +/!svn/ver/33151/branches/1.4/lib/task +END +sfBaseTask.class.php +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/24341/branches/1.4/lib/task/sfBaseTask.class.php +END +sfTask.class.php +K 25 +svn:wc:ra_dav:version-url +V 54 +/!svn/ver/33151/branches/1.4/lib/task/sfTask.class.php +END +sfFilesystem.class.php +K 25 +svn:wc:ra_dav:version-url +V 60 +/!svn/ver/31247/branches/1.4/lib/task/sfFilesystem.class.php +END +sfCommandApplicationTask.class.php +K 25 +svn:wc:ra_dav:version-url +V 72 +/!svn/ver/23881/branches/1.4/lib/task/sfCommandApplicationTask.class.php +END diff --git a/lib/vendor/symfony/lib/task/.svn/entries b/lib/vendor/symfony/lib/task/.svn/entries new file mode 100644 index 0000000..894c2fa --- /dev/null +++ b/lib/vendor/symfony/lib/task/.svn/entries @@ -0,0 +1,197 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/task +http://svn.symfony-project.com + + + +2011-10-24T08:55:03.128807Z +33151 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +test +dir + +i18n +dir + +sfBaseTask.class.php +file + + + + +2012-05-10T18:41:07.401547Z +85c7973e2a6152a0f651502e94bae400 +2009-11-24T15:01:58.408035Z +24341 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +11585 + +app +dir + +log +dir + +configure +dir + +sfTask.class.php +file + + + + +2012-05-10T18:41:07.405550Z +1864cb1341bc61cd69d2d1b9cb8c8962 +2011-10-24T08:55:03.128807Z +33151 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +19227 + +generator +dir + +help +dir + +plugin +dir + +cache +dir + +symfony +dir + +project +dir + +sfFilesystem.class.php +file + + + + +2012-05-10T18:41:07.405550Z +9d1dca3a5a8f57d868c4995f4ea25331 +2010-10-26T12:26:15.997945Z +31247 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +11901 + +sfCommandApplicationTask.class.php +file + + + + +2012-05-10T18:41:07.413547Z +ffc26508022e8b0561d5703346c810a5 +2009-11-06T08:08:54.505174Z +23651 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +4679 + diff --git a/lib/vendor/symfony/lib/task/.svn/prop-base/sfBaseTask.class.php.svn-base b/lib/vendor/symfony/lib/task/.svn/prop-base/sfBaseTask.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/.svn/prop-base/sfBaseTask.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/.svn/prop-base/sfCommandApplicationTask.class.php.svn-base b/lib/vendor/symfony/lib/task/.svn/prop-base/sfCommandApplicationTask.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/.svn/prop-base/sfCommandApplicationTask.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/.svn/prop-base/sfFilesystem.class.php.svn-base b/lib/vendor/symfony/lib/task/.svn/prop-base/sfFilesystem.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/.svn/prop-base/sfFilesystem.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/.svn/prop-base/sfTask.class.php.svn-base b/lib/vendor/symfony/lib/task/.svn/prop-base/sfTask.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/.svn/prop-base/sfTask.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/.svn/text-base/sfBaseTask.class.php.svn-base b/lib/vendor/symfony/lib/task/.svn/text-base/sfBaseTask.class.php.svn-base new file mode 100644 index 0000000..105ac6b --- /dev/null +++ b/lib/vendor/symfony/lib/task/.svn/text-base/sfBaseTask.class.php.svn-base @@ -0,0 +1,392 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Base class for all symfony tasks. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id$ + */ +abstract class sfBaseTask extends sfCommandApplicationTask +{ + protected + $configuration = null, + $pluginManager = null; + + /** + * @see sfTask + */ + protected function doRun(sfCommandManager $commandManager, $options) + { + $event = $this->dispatcher->filter(new sfEvent($this, 'command.filter_options', array('command_manager' => $commandManager)), $options); + $options = $event->getReturnValue(); + + $this->process($commandManager, $options); + + $event = new sfEvent($this, 'command.pre_command', array('arguments' => $commandManager->getArgumentValues(), 'options' => $commandManager->getOptionValues())); + $this->dispatcher->notifyUntil($event); + if ($event->isProcessed()) + { + return $event->getReturnValue(); + } + + $this->checkProjectExists(); + + $requiresApplication = $commandManager->getArgumentSet()->hasArgument('application') || $commandManager->getOptionSet()->hasOption('application'); + if (null === $this->configuration || ($requiresApplication && !$this->configuration instanceof sfApplicationConfiguration)) + { + $application = $commandManager->getArgumentSet()->hasArgument('application') ? $commandManager->getArgumentValue('application') : ($commandManager->getOptionSet()->hasOption('application') ? $commandManager->getOptionValue('application') : null); + $env = $commandManager->getOptionSet()->hasOption('env') ? $commandManager->getOptionValue('env') : 'test'; + + if (true === $application) + { + $application = $this->getFirstApplication(); + + if ($commandManager->getOptionSet()->hasOption('application')) + { + $commandManager->setOption($commandManager->getOptionSet()->getOption('application'), $application); + } + } + + $this->configuration = $this->createConfiguration($application, $env); + } + + if (null !== $this->commandApplication && !$this->commandApplication->withTrace()) + { + sfConfig::set('sf_logging_enabled', false); + } + + $ret = $this->execute($commandManager->getArgumentValues(), $commandManager->getOptionValues()); + + $this->dispatcher->notify(new sfEvent($this, 'command.post_command')); + + return $ret; + } + + /** + * Sets the current task's configuration. + * + * @param sfProjectConfiguration $configuration + */ + public function setConfiguration(sfProjectConfiguration $configuration = null) + { + $this->configuration = $configuration; + } + + /** + * Returns the filesystem instance. + * + * @return sfFilesystem A sfFilesystem instance + */ + public function getFilesystem() + { + if (!isset($this->filesystem)) + { + if (null === $this->commandApplication || $this->commandApplication->isVerbose()) + { + $this->filesystem = new sfFilesystem($this->dispatcher, $this->formatter); + } + else + { + $this->filesystem = new sfFilesystem(); + } + } + + return $this->filesystem; + } + + /** + * Checks if the current directory is a symfony project directory. + * + * @return true if the current directory is a symfony project directory, false otherwise + */ + public function checkProjectExists() + { + if (!file_exists('symfony')) + { + throw new sfException('You must be in a symfony project directory.'); + } + } + + /** + * Checks if an application exists. + * + * @param string $app The application name + * + * @return bool true if the application exists, false otherwise + */ + public function checkAppExists($app) + { + if (!is_dir(sfConfig::get('sf_apps_dir').'/'.$app)) + { + throw new sfException(sprintf('Application "%s" does not exist', $app)); + } + } + + /** + * Checks if a module exists. + * + * @param string $app The application name + * @param string $module The module name + * + * @return bool true if the module exists, false otherwise + */ + public function checkModuleExists($app, $module) + { + if (!is_dir(sfConfig::get('sf_apps_dir').'/'.$app.'/modules/'.$module)) + { + throw new sfException(sprintf('Module "%s/%s" does not exist.', $app, $module)); + } + } + + /** + * Creates a configuration object. + * + * @param string $application The application name + * @param string $env The environment name + * + * @return sfProjectConfiguration A sfProjectConfiguration instance + */ + protected function createConfiguration($application, $env) + { + if (null !== $application) + { + $this->checkAppExists($application); + + require_once sfConfig::get('sf_config_dir').'/ProjectConfiguration.class.php'; + + $configuration = ProjectConfiguration::getApplicationConfiguration($application, $env, true, null, $this->dispatcher); + } + else + { + if (file_exists(sfConfig::get('sf_config_dir').'/ProjectConfiguration.class.php')) + { + require_once sfConfig::get('sf_config_dir').'/ProjectConfiguration.class.php'; + $configuration = new ProjectConfiguration(null, $this->dispatcher); + } + else + { + $configuration = new sfProjectConfiguration(getcwd(), $this->dispatcher); + } + + if (null !== $env) + { + sfConfig::set('sf_environment', $env); + } + + $this->initializeAutoload($configuration); + } + + return $configuration; + } + + /** + * Returns the first application in apps. + * + * @return string The Application name + */ + protected function getFirstApplication() + { + if (count($dirs = sfFinder::type('dir')->maxdepth(0)->follow_link()->relative()->in(sfConfig::get('sf_apps_dir')))) + { + return $dirs[0]; + } + + return null; + } + + /** + * Reloads all autoloaders. + * + * This method should be called whenever a task generates new classes that + * are to be loaded by the symfony autoloader. It clears the autoloader + * cache for all applications and environments and the current execution. + * + * @see initializeAutoload() + */ + protected function reloadAutoload() + { + $this->initializeAutoload($this->configuration, true); + } + + /** + * Initializes autoloaders. + * + * @param sfProjectConfiguration $configuration The current project or application configuration + * @param boolean $reload If true, all autoloaders will be reloaded + */ + protected function initializeAutoload(sfProjectConfiguration $configuration, $reload = false) + { + // sfAutoload + if ($reload) + { + $this->logSection('autoload', 'Resetting application autoloaders'); + + $finder = sfFinder::type('file')->name('*autoload.yml.php'); + $this->getFilesystem()->remove($finder->in(sfConfig::get('sf_cache_dir'))); + sfAutoload::getInstance()->reloadClasses(true); + } + + // sfSimpleAutoload + if (!$configuration instanceof sfApplicationConfiguration) + { + // plugins + if ($reload) + { + foreach ($configuration->getPlugins() as $name) + { + $configuration->getPluginConfiguration($name)->initializeAutoload(); + } + } + + // project + $autoload = sfSimpleAutoload::getInstance(sfConfig::get('sf_cache_dir').'/project_autoload.cache'); + $autoload->loadConfiguration(sfFinder::type('file')->name('autoload.yml')->in(array( + sfConfig::get('sf_symfony_lib_dir').'/config/config', + sfConfig::get('sf_config_dir'), + ))); + $autoload->register(); + + if ($reload) + { + $this->logSection('autoload', 'Resetting CLI autoloader'); + $autoload->reload(); + } + } + } + + /** + * Mirrors a directory structure inside the created project. + * + * @param string $dir The directory to mirror + * @param sfFinder $finder A sfFinder instance to use for the mirroring + */ + protected function installDir($dir, $finder = null) + { + if (null === $finder) + { + $finder = sfFinder::type('any')->discard('.sf'); + } + + $this->getFilesystem()->mirror($dir, sfConfig::get('sf_root_dir'), $finder); + } + + /** + * Replaces tokens in files contained in a given directory. + * + * If you don't pass a directory, it will replace in the config/ and lib/ directory. + * + * You can define global tokens by defining the $this->tokens property. + * + * @param array $dirs An array of directory where to do the replacement + * @param array $tokens An array of tokens to use + */ + protected function replaceTokens($dirs = array(), $tokens = array()) + { + if (!$dirs) + { + $dirs = array(sfConfig::get('sf_config_dir'), sfConfig::get('sf_lib_dir')); + } + + $tokens = array_merge(isset($this->tokens) ? $this->tokens : array(), $tokens); + + $this->getFilesystem()->replaceTokens(sfFinder::type('file')->prune('vendor')->in($dirs), '##', '##', $tokens); + } + + /** + * Reloads tasks. + * + * Useful when you install plugins with tasks and if you want to use them with the runTask() method. + */ + protected function reloadTasks() + { + if (null === $this->commandApplication) + { + return; + } + + $this->configuration = $this->createConfiguration(null, null); + + $this->commandApplication->clearTasks(); + $this->commandApplication->loadTasks($this->configuration); + + $disabledPluginsRegex = sprintf('#^(%s)#', implode('|', array_diff($this->configuration->getAllPluginPaths(), $this->configuration->getPluginPaths()))); + $tasks = array(); + foreach (get_declared_classes() as $class) + { + $r = new Reflectionclass($class); + if ($r->isSubclassOf('sfTask') && !$r->isAbstract() && !preg_match($disabledPluginsRegex, $r->getFileName())) + { + $tasks[] = new $class($this->dispatcher, $this->formatter); + } + } + + $this->commandApplication->registerTasks($tasks); + } + + /** + * Enables a plugin in the ProjectConfiguration class. + * + * @param string $plugin The name of the plugin + */ + protected function enablePlugin($plugin) + { + sfSymfonyPluginManager::enablePlugin($plugin, sfConfig::get('sf_config_dir')); + } + + /** + * Disables a plugin in the ProjectConfiguration class. + * + * @param string $plugin The name of the plugin + */ + protected function disablePlugin($plugin) + { + sfSymfonyPluginManager::disablePlugin($plugin, sfConfig::get('sf_config_dir')); + } + + /** + * Returns a plugin manager instance. + * + * @return sfSymfonyPluginManager A sfSymfonyPluginManager instance + */ + protected function getPluginManager() + { + if (null === $this->pluginManager) + { + $environment = new sfPearEnvironment($this->dispatcher, array( + 'plugin_dir' => sfConfig::get('sf_plugins_dir'), + 'cache_dir' => sfConfig::get('sf_cache_dir').'/.pear', + 'web_dir' => sfConfig::get('sf_web_dir'), + 'config_dir' => sfConfig::get('sf_config_dir'), + )); + + $this->pluginManager = new sfSymfonyPluginManager($this->dispatcher, $environment); + } + + return $this->pluginManager; + } + + /** + * @see sfCommandApplicationTask + */ + protected function createTask($name) + { + $task = parent::createTask($name); + + if ($task instanceof sfBaseTask) + { + $task->setConfiguration($this->configuration); + } + + return $task; + } +} diff --git a/lib/vendor/symfony/lib/task/.svn/text-base/sfCommandApplicationTask.class.php.svn-base b/lib/vendor/symfony/lib/task/.svn/text-base/sfCommandApplicationTask.class.php.svn-base new file mode 100644 index 0000000..2dc4412 --- /dev/null +++ b/lib/vendor/symfony/lib/task/.svn/text-base/sfCommandApplicationTask.class.php.svn-base @@ -0,0 +1,166 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Base class for tasks that depends on a sfCommandApplication object. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id$ + */ +abstract class sfCommandApplicationTask extends sfTask +{ + protected + $mailer = null, + $routing = null, + $commandApplication = null; + + /** + * Sets the command application instance for this task. + * + * @param sfCommandApplication $commandApplication A sfCommandApplication instance + */ + public function setCommandApplication(sfCommandApplication $commandApplication = null) + { + $this->commandApplication = $commandApplication; + } + + /** + * @see sfTask + */ + public function log($messages) + { + if (null === $this->commandApplication || $this->commandApplication->isVerbose()) + { + parent::log($messages); + } + } + + /** + * @see sfTask + */ + public function logSection($section, $message, $size = null, $style = 'INFO') + { + if (null === $this->commandApplication || $this->commandApplication->isVerbose()) + { + parent::logSection($section, $message, $size, $style); + } + } + + /** + * Creates a new task object. + * + * @param string $name The name of the task + * + * @return sfTask + * + * @throws LogicException If the current task has no command application + */ + protected function createTask($name) + { + if (null === $this->commandApplication) + { + throw new LogicException('Unable to create a task as no command application is associated with this task yet.'); + } + + $task = $this->commandApplication->getTaskToExecute($name); + + if ($task instanceof sfCommandApplicationTask) + { + $task->setCommandApplication($this->commandApplication); + } + + return $task; + } + + /** + * Executes another task in the context of the current one. + * + * @param string $name The name of the task to execute + * @param array $arguments An array of arguments to pass to the task + * @param array $options An array of options to pass to the task + * + * @return Boolean The returned value of the task run() method + * + * @see createTask() + */ + protected function runTask($name, $arguments = array(), $options = array()) + { + return $this->createTask($name)->run($arguments, $options); + } + + /** + * Returns a mailer instance. + * + * Notice that your task should accept an application option. + * The mailer configuration is read from the current configuration + * instance, which is automatically created according to the current + * --application option. + * + * @return sfMailer A sfMailer instance + */ + protected function getMailer() + { + if (!$this->mailer) + { + $this->mailer = $this->initializeMailer(); + } + + return $this->mailer; + } + + protected function initializeMailer() + { + require_once sfConfig::get('sf_symfony_lib_dir').'/vendor/swiftmailer/classes/Swift.php'; + Swift::registerAutoload(); + sfMailer::initialize(); + + $config = sfFactoryConfigHandler::getConfiguration($this->configuration->getConfigPaths('config/factories.yml')); + + return new $config['mailer']['class']($this->dispatcher, $config['mailer']['param']); + } + + /** + * Returns a routing instance. + * + * Notice that your task should accept an application option. + * The routing configuration is read from the current configuration + * instance, which is automatically created according to the current + * --application option. + * + * @return sfRouting A sfRouting instance + */ + protected function getRouting() + { + if (!$this->routing) + { + $this->routing = $this->initializeRouting(); + } + + return $this->routing; + } + + protected function initializeRouting() + { + $config = sfFactoryConfigHandler::getConfiguration($this->configuration->getConfigPaths('config/factories.yml')); + $params = array_merge($config['routing']['param'], array('load_configuration' => false, 'logging' => false)); + + $handler = new sfRoutingConfigHandler(); + $routes = $handler->evaluate($this->configuration->getConfigPaths('config/routing.yml')); + + $routing = new $config['routing']['class']($this->dispatcher, null, $params); + $routing->setRoutes($routes); + + $this->dispatcher->notify(new sfEvent($routing, 'routing.load_configuration')); + + return $routing; + } +} diff --git a/lib/vendor/symfony/lib/task/.svn/text-base/sfFilesystem.class.php.svn-base b/lib/vendor/symfony/lib/task/.svn/text-base/sfFilesystem.class.php.svn-base new file mode 100644 index 0000000..60ad0ee --- /dev/null +++ b/lib/vendor/symfony/lib/task/.svn/text-base/sfFilesystem.class.php.svn-base @@ -0,0 +1,487 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfFilesystem provides basic utility to manipulate the file system. + * + * @package symfony + * @subpackage util + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfFilesystem +{ + protected + $dispatcher = null, + $formatter = null; + + /** + * Constructor. + * + * @param sfEventDispatcher $dispatcher An sfEventDispatcher instance + * @param sfFormatter $formatter An sfFormatter instance + */ + public function __construct(sfEventDispatcher $dispatcher = null, sfFormatter $formatter = null) + { + $this->dispatcher = $dispatcher; + $this->formatter = $formatter; + } + + /** + * Copies a file. + * + * This method only copies the file if the origin file is newer than the target file. + * + * By default, if the target already exists, it is not overriden. + * + * To override existing files, pass the "override" option. + * + * @param string $originFile The original filename + * @param string $targetFile The target filename + * @param array $options An array of options + */ + public function copy($originFile, $targetFile, $options = array()) + { + if (!array_key_exists('override', $options)) + { + $options['override'] = false; + } + + // we create target_dir if needed + if (!is_dir(dirname($targetFile))) + { + $this->mkdirs(dirname($targetFile)); + } + + $mostRecent = false; + if (file_exists($targetFile)) + { + $statTarget = stat($targetFile); + $stat_origin = stat($originFile); + $mostRecent = ($stat_origin['mtime'] > $statTarget['mtime']) ? true : false; + } + + if ($options['override'] || !file_exists($targetFile) || $mostRecent) + { + $this->logSection('file+', $targetFile); + copy($originFile, $targetFile); + } + } + + /** + * Creates a directory recursively. + * + * @param string $path The directory path + * @param int $mode The directory mode + * + * @return bool true if the directory has been created, false otherwise + */ + public function mkdirs($path, $mode = 0777) + { + if (is_dir($path)) + { + return true; + } + + $this->logSection('dir+', $path); + + return @mkdir($path, $mode, true); + } + + /** + * Creates empty files. + * + * @param mixed $files The filename, or an array of filenames + */ + public function touch($files) + { + if (!is_array($files)) + { + $files = array($files); + } + + foreach ($files as $file) + { + $this->logSection('file+', $file); + + touch($file); + } + } + + /** + * Removes files or directories. + * + * @param mixed $files A filename or an array of files to remove + */ + public function remove($files) + { + if (!is_array($files)) + { + $files = array($files); + } + + $files = array_reverse($files); + foreach ($files as $file) + { + if (is_dir($file) && !is_link($file)) + { + $this->logSection('dir-', $file); + + rmdir($file); + } + else + { + $this->logSection(is_link($file) ? 'link-' : 'file-', $file); + + unlink($file); + } + } + } + + /** + * Change mode for an array of files or directories. + * + * @param array $files An array of files or directories + * @param integer $mode The new mode + * @param integer $umask The mode mask (octal) + */ + public function chmod($files, $mode, $umask = 0000) + { + $currentUmask = umask(); + umask($umask); + + if (!is_array($files)) + { + $files = array($files); + } + + foreach ($files as $file) + { + $this->logSection(sprintf('chmod %o', $mode), $file); + chmod($file, $mode); + } + + umask($currentUmask); + } + + /** + * Renames a file. + * + * @param string $origin The origin filename + * @param string $target The new filename + */ + public function rename($origin, $target) + { + // we check that target does not exist + if (is_readable($target)) + { + throw new sfException(sprintf('Cannot rename because the target "%s" already exist.', $target)); + } + + $this->logSection('rename', $origin.' > '.$target); + rename($origin, $target); + } + + /** + * Creates a symbolic link or copy a directory. + * + * @param string $originDir The origin directory path + * @param string $targetDir The symbolic link name + * @param bool $copyOnWindows Whether to copy files if on windows + */ + public function symlink($originDir, $targetDir, $copyOnWindows = false) + { + if ('\\' == DIRECTORY_SEPARATOR && $copyOnWindows) + { + $finder = sfFinder::type('any'); + $this->mirror($originDir, $targetDir, $finder); + return; + } + + $ok = false; + if (is_link($targetDir)) + { + if (readlink($targetDir) != $originDir) + { + unlink($targetDir); + } + else + { + $ok = true; + } + } + + if (!$ok) + { + $this->logSection('link+', $targetDir); + symlink($originDir, $targetDir); + } + } + + /** + * Creates a symbolic link using a relative path if possible. + * + * @param string $originDir The origin directory path + * @param string $targetDir The symbolic link name + * @param bool $copyOnWindows Whether to copy files if on windows + */ + public function relativeSymlink($originDir, $targetDir, $copyOnWindows = false) + { + if ('\\' != DIRECTORY_SEPARATOR || !$copyOnWindows) + { + $originDir = $this->calculateRelativeDir($targetDir, $originDir); + } + + $this->symlink($originDir, $targetDir, $copyOnWindows); + } + + /** + * Mirrors a directory to another. + * + * @param string $originDir The origin directory + * @param string $targetDir The target directory + * @param sfFinder $finder An sfFinder instance + * @param array $options An array of options (see copy()) + */ + public function mirror($originDir, $targetDir, $finder, $options = array()) + { + foreach ($finder->relative()->in($originDir) as $file) + { + if (is_dir($originDir.DIRECTORY_SEPARATOR.$file)) + { + $this->mkdirs($targetDir.DIRECTORY_SEPARATOR.$file); + } + else if (is_file($originDir.DIRECTORY_SEPARATOR.$file)) + { + $this->copy($originDir.DIRECTORY_SEPARATOR.$file, $targetDir.DIRECTORY_SEPARATOR.$file, $options); + } + else if (is_link($originDir.DIRECTORY_SEPARATOR.$file)) + { + $this->symlink($originDir.DIRECTORY_SEPARATOR.$file, $targetDir.DIRECTORY_SEPARATOR.$file); + } + else + { + throw new sfException(sprintf('Unable to guess "%s" file type.', $file)); + } + } + } + + /** + * Executes a shell command. + * + * @param string $cmd The command to execute on the shell + * @param array $stdoutCallback A callback for stdout output + * @param array $stderrCallback A callback for stderr output + * + * @return array An array composed of the content output and the error output + */ + public function execute($cmd, $stdoutCallback = null, $stderrCallback = null) + { + $this->logSection('exec ', $cmd); + + $descriptorspec = array( + 1 => array('pipe', 'w'), // stdout + 2 => array('pipe', 'w'), // stderr + ); + + $process = proc_open($cmd, $descriptorspec, $pipes); + if (!is_resource($process)) + { + throw new RuntimeException('Unable to execute the command.'); + } + + stream_set_blocking($pipes[1], false); + stream_set_blocking($pipes[2], false); + + $output = ''; + $err = ''; + while (!feof($pipes[1]) || !feof($pipes[2])) + { + foreach ($pipes as $key => $pipe) + { + if (!$line = fread($pipe, 128)) + { + continue; + } + + if (1 == $key) + { + // stdout + $output .= $line; + if ($stdoutCallback) + { + call_user_func($stdoutCallback, $line); + } + } + else + { + // stderr + $err .= $line; + if ($stderrCallback) + { + call_user_func($stderrCallback, $line); + } + } + } + + usleep(100000); + } + + fclose($pipes[1]); + fclose($pipes[2]); + + if (($return = proc_close($process)) > 0) + { + throw new RuntimeException('Problem executing command.', $return); + } + + return array($output, $err); + } + + /** + * Replaces tokens in an array of files. + * + * @param array $files An array of filenames + * @param string $beginToken The begin token delimiter + * @param string $endToken The end token delimiter + * @param array $tokens An array of token/value pairs + */ + public function replaceTokens($files, $beginToken, $endToken, $tokens) + { + if (!is_array($files)) + { + $files = array($files); + } + + foreach ($files as $file) + { + $content = file_get_contents($file); + foreach ($tokens as $key => $value) + { + $content = str_replace($beginToken.$key.$endToken, $value, $content, $count); + } + + $this->logSection('tokens', $file); + + file_put_contents($file, $content); + } + } + + /** + * Logs a message in a section. + * + * @param string $section The section name + * @param string $message The message + * @param int $size The maximum size of a line + */ + protected function logSection($section, $message, $size = null) + { + if (!$this->dispatcher) + { + return; + } + + $message = $this->formatter ? $this->formatter->formatSection($section, $message, $size) : $section.' '.$message."\n"; + + $this->dispatcher->notify(new sfEvent($this, 'command.log', array($message))); + } + + /** + * Calculates the relative path from one to another directory. + * + * If the paths share no common path the absolute target dir is returned. + * + * @param string $from The directory from which to calculate the relative path + * @param string $to The target directory + * + * @return string + */ + protected function calculateRelativeDir($from, $to) + { + $from = $this->canonicalizePath($from); + $to = $this->canonicalizePath($to); + + $commonLength = 0; + $minPathLength = min(strlen($from), strlen($to)); + + // count how many chars the strings have in common + for ($i = 0; $i < $minPathLength; $i++) + { + if ($from[$i] != $to[$i]) + { + break; + } + + if (DIRECTORY_SEPARATOR == $from[$i]) + { + $commonLength = $i + 1; + } + } + + if ($commonLength) + { + if (extension_loaded('mbstring')) + { + $levelUp = mb_substr_count(mb_strcut($from, $commonLength), DIRECTORY_SEPARATOR); + } + else + { + $levelUp = substr_count($from, DIRECTORY_SEPARATOR, $commonLength); + } + + // up that many level + $relativeDir = str_repeat('..'.DIRECTORY_SEPARATOR, $levelUp); + + // down the remaining $to path + $relativeDir .= substr($to, $commonLength); + + return $relativeDir; + } + + return $to; + } + + /** + * @param string A filesystem path + * + * @return string + */ + protected function canonicalizePath($path) + { + if (empty($path)) + { + return ''; + } + + $out = array(); + foreach (explode(DIRECTORY_SEPARATOR, $path) as $i => $fold) + { + if ('' == $fold || '.' == $fold) + { + continue; + } + + if ('..' == $fold && $i > 0 && '..' != end($out)) + { + array_pop($out); + } + else + { + $out[] = $fold; + } + } + + $result = DIRECTORY_SEPARATOR == $path[0] ? DIRECTORY_SEPARATOR : ''; + $result .= implode(DIRECTORY_SEPARATOR, $out); + $result .= DIRECTORY_SEPARATOR == $path[strlen($path) - 1] ? DIRECTORY_SEPARATOR : ''; + + return $result; + } +} diff --git a/lib/vendor/symfony/lib/task/.svn/text-base/sfTask.class.php.svn-base b/lib/vendor/symfony/lib/task/.svn/text-base/sfTask.class.php.svn-base new file mode 100644 index 0000000..e5d7284 --- /dev/null +++ b/lib/vendor/symfony/lib/task/.svn/text-base/sfTask.class.php.svn-base @@ -0,0 +1,664 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Abstract class for all tasks. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id$ + */ +abstract class sfTask +{ + protected + $namespace = '', + $name = null, + $aliases = array(), + $briefDescription = '', + $detailedDescription = '', + $arguments = array(), + $options = array(), + $dispatcher = null, + $formatter = null; + + /** + * Constructor. + * + * @param sfEventDispatcher $dispatcher An sfEventDispatcher instance + * @param sfFormatter $formatter An sfFormatter instance + */ + public function __construct(sfEventDispatcher $dispatcher, sfFormatter $formatter) + { + $this->initialize($dispatcher, $formatter); + + $this->configure(); + } + + /** + * Initializes the sfTask instance. + * + * @param sfEventDispatcher $dispatcher A sfEventDispatcher instance + * @param sfFormatter $formatter A sfFormatter instance + */ + public function initialize(sfEventDispatcher $dispatcher, sfFormatter $formatter) + { + $this->dispatcher = $dispatcher; + $this->formatter = $formatter; + } + + /** + * Configures the current task. + */ + protected function configure() + { + } + + /** + * Returns the formatter instance. + * + * @return sfFormatter The formatter instance + */ + public function getFormatter() + { + return $this->formatter; + } + + /** + * Sets the formatter instance. + * + * @param sfFormatter The formatter instance + */ + public function setFormatter(sfFormatter $formatter) + { + $this->formatter = $formatter; + } + + /** + * Runs the task from the CLI. + * + * @param sfCommandManager $commandManager An sfCommandManager instance + * @param mixed $options The command line options + * + * @return integer 0 if everything went fine, or an error code + */ + public function runFromCLI(sfCommandManager $commandManager, $options = null) + { + $commandManager->getArgumentSet()->addArguments($this->getArguments()); + $commandManager->getOptionSet()->addOptions($this->getOptions()); + + return $this->doRun($commandManager, $options); + } + + /** + * Runs the task. + * + * @param array|string $arguments An array of arguments or a string representing the CLI arguments and options + * @param array $options An array of options + * + * @return integer 0 if everything went fine, or an error code + */ + public function run($arguments = array(), $options = array()) + { + $commandManager = new sfCommandManager(new sfCommandArgumentSet($this->getArguments()), new sfCommandOptionSet($this->getOptions())); + + if (is_array($arguments) && is_string(key($arguments))) + { + // index arguments by name for ordering and reference + $indexArguments = array(); + foreach ($this->arguments as $argument) + { + $indexArguments[$argument->getName()] = $argument; + } + + foreach ($arguments as $name => $value) + { + if (false !== $pos = array_search($name, array_keys($indexArguments))) + { + if ($indexArguments[$name]->isArray()) + { + $value = join(' ', (array) $value); + $arguments[$pos] = isset($arguments[$pos]) ? $arguments[$pos].' '.$value : $value; + } + else + { + $arguments[$pos] = $value; + } + + unset($arguments[$name]); + } + } + + ksort($arguments); + } + + // index options by name for reference + $indexedOptions = array(); + foreach ($this->options as $option) + { + $indexedOptions[$option->getName()] = $option; + } + + foreach ($options as $name => $value) + { + if (is_string($name)) + { + if (false === $value || null === $value || (isset($indexedOptions[$name]) && $indexedOptions[$name]->isArray() && !$value)) + { + unset($options[$name]); + continue; + } + + // convert associative array + $value = true === $value ? $name : sprintf('%s=%s', $name, isset($indexedOptions[$name]) && $indexedOptions[$name]->isArray() ? join(' --'.$name.'=', (array) $value) : $value); + } + + // add -- before each option if needed + if (0 !== strpos($value, '--')) + { + $value = '--'.$value; + } + + $options[] = $value; + unset($options[$name]); + } + + return $this->doRun($commandManager, is_string($arguments) ? $arguments : implode(' ', array_merge($arguments, $options))); + } + + /** + * Returns the argument objects. + * + * @return sfCommandArgument An array of sfCommandArgument objects. + */ + public function getArguments() + { + return $this->arguments; + } + + /** + * Adds an array of argument objects. + * + * @param array $arguments An array of arguments + */ + public function addArguments($arguments) + { + $this->arguments = array_merge($this->arguments, $arguments); + } + + /** + * Add an argument. + * + * This method always use the sfCommandArgument class to create an option. + * + * @see sfCommandArgument::__construct() + */ + public function addArgument($name, $mode = null, $help = '', $default = null) + { + $this->arguments[] = new sfCommandArgument($name, $mode, $help, $default); + } + + /** + * Returns the options objects. + * + * @return sfCommandOption An array of sfCommandOption objects. + */ + public function getOptions() + { + return $this->options; + } + + /** + * Adds an array of option objects. + * + * @param array $options An array of options + */ + public function addOptions($options) + { + $this->options = array_merge($this->options, $options); + } + + /** + * Add an option. + * + * This method always use the sfCommandOption class to create an option. + * + * @see sfCommandOption::__construct() + */ + public function addOption($name, $shortcut = null, $mode = null, $help = '', $default = null) + { + $this->options[] = new sfCommandOption($name, $shortcut, $mode, $help, $default); + } + + /** + * Returns the task namespace. + * + * @return string The task namespace + */ + public function getNamespace() + { + return $this->namespace; + } + + /** + * Returns the task name + * + * @return string The task name + */ + public function getName() + { + if ($this->name) + { + return $this->name; + } + + $name = get_class($this); + + if ('sf' == substr($name, 0, 2)) + { + $name = substr($name, 2); + } + + if ('Task' == substr($name, -4)) + { + $name = substr($name, 0, -4); + } + + return str_replace('_', '-', sfInflector::underscore($name)); + } + + /** + * Returns the fully qualified task name. + * + * @return string The fully qualified task name + */ + final function getFullName() + { + return $this->getNamespace() ? $this->getNamespace().':'.$this->getName() : $this->getName(); + } + + /** + * Returns the brief description for the task. + * + * @return string The brief description for the task + */ + public function getBriefDescription() + { + return $this->briefDescription; + } + + /** + * Returns the detailed description for the task. + * + * It also formats special string like [...|COMMENT] + * depending on the current formatter. + * + * @return string The detailed description for the task + */ + public function getDetailedDescription() + { + return preg_replace('/\[(.+?)\|(\w+)\]/se', '$this->formatter->format("$1", "$2")', $this->detailedDescription); + } + + /** + * Returns the aliases for the task. + * + * @return array An array of aliases for the task + */ + public function getAliases() + { + return $this->aliases; + } + + /** + * Returns the synopsis for the task. + * + * @return string The synopsis + */ + public function getSynopsis() + { + $options = array(); + foreach ($this->getOptions() as $option) + { + $shortcut = $option->getShortcut() ? sprintf('-%s|', $option->getShortcut()) : ''; + $options[] = sprintf('['.($option->isParameterRequired() ? '%s--%s="..."' : ($option->isParameterOptional() ? '%s--%s[="..."]' : '%s--%s')).']', $shortcut, $option->getName()); + } + + $arguments = array(); + foreach ($this->getArguments() as $argument) + { + $arguments[] = sprintf($argument->isRequired() ? '%s' : '[%s]', $argument->getName().($argument->isArray() ? '1' : '')); + + if ($argument->isArray()) + { + $arguments[] = sprintf('... [%sN]', $argument->getName()); + } + } + + return sprintf('%%s %s %s %s', $this->getFullName(), implode(' ', $options), implode(' ', $arguments)); + } + + protected function process(sfCommandManager $commandManager, $options) + { + $commandManager->process($options); + if (!$commandManager->isValid()) + { + throw new sfCommandArgumentsException(sprintf("The execution of task \"%s\" failed.\n- %s", $this->getFullName(), implode("\n- ", $commandManager->getErrors()))); + } + } + + protected function doRun(sfCommandManager $commandManager, $options) + { + $event = $this->dispatcher->filter(new sfEvent($this, 'command.filter_options', array('command_manager' => $commandManager)), $options); + $options = $event->getReturnValue(); + + $this->process($commandManager, $options); + + $event = new sfEvent($this, 'command.pre_command', array('arguments' => $commandManager->getArgumentValues(), 'options' => $commandManager->getOptionValues())); + $this->dispatcher->notifyUntil($event); + if ($event->isProcessed()) + { + return $event->getReturnValue(); + } + + $ret = $this->execute($commandManager->getArgumentValues(), $commandManager->getOptionValues()); + + $this->dispatcher->notify(new sfEvent($this, 'command.post_command')); + + return $ret; + } + + /** + * Logs a message. + * + * @param mixed $messages The message as an array of lines of a single string + */ + public function log($messages) + { + if (!is_array($messages)) + { + $messages = array($messages); + } + + $this->dispatcher->notify(new sfEvent($this, 'command.log', $messages)); + } + + /** + * Logs a message in a section. + * + * @param string $section The section name + * @param string $message The message + * @param int $size The maximum size of a line + * @param string $style The color scheme to apply to the section string (INFO, ERROR, or COMMAND) + */ + public function logSection($section, $message, $size = null, $style = 'INFO') + { + $this->dispatcher->notify(new sfEvent($this, 'command.log', array($this->formatter->formatSection($section, $message, $size, $style)))); + } + + /** + * Logs a message as a block of text. + * + * @param string|array $messages The message to display in the block + * @param string $style The style to use + */ + public function logBlock($messages, $style) + { + if (!is_array($messages)) + { + $messages = array($messages); + } + + $style = str_replace('_LARGE', '', $style, $count); + $large = (Boolean) $count; + + $len = 0; + $lines = array(); + foreach ($messages as $message) + { + $lines[] = sprintf($large ? ' %s ' : ' %s ', $message); + $len = max($this->strlen($message) + ($large ? 4 : 2), $len); + } + + $messages = $large ? array(str_repeat(' ', $len)) : array(); + foreach ($lines as $line) + { + $messages[] = $line.str_repeat(' ', $len - $this->strlen($line)); + } + if ($large) + { + $messages[] = str_repeat(' ', $len); + } + + foreach ($messages as $message) + { + $this->log($this->formatter->format($message, $style)); + } + } + + /** + * Asks a question to the user. + * + * @param string|array $question The question to ask + * @param string $style The style to use (QUESTION by default) + * @param string $default The default answer if none is given by the user + * + * @param string The user answer + */ + public function ask($question, $style = 'QUESTION', $default = null) + { + if (false === $style) + { + $this->log($question); + } + else + { + $this->logBlock($question, null === $style ? 'QUESTION' : $style); + } + + $ret = trim(fgets(STDIN)); + + return $ret ? $ret : $default; + } + + /** + * Asks a confirmation to the user. + * + * The question will be asked until the user answer by nothing, yes, or no. + * + * @param string|array $question The question to ask + * @param string $style The style to use (QUESTION by default) + * @param Boolean $default The default answer if the user enters nothing + * + * @param Boolean true if the user has confirmed, false otherwise + */ + public function askConfirmation($question, $style = 'QUESTION', $default = true) + { + $answer = 'z'; + while ($answer && !in_array(strtolower($answer[0]), array('y', 'n'))) + { + $answer = $this->ask($question, $style); + } + + if (false === $default) + { + return $answer && 'y' == strtolower($answer[0]); + } + else + { + return !$answer || 'y' == strtolower($answer[0]); + } + } + + /** + * Asks for a value and validates the response. + * + * Available options: + * + * * value: A value to try against the validator before asking the user + * * attempts: Max number of times to ask before giving up (false by default, which means infinite) + * * style: Style for question output (QUESTION by default) + * + * @param string|array $question + * @param sfValidatorBase $validator + * @param array $options + * + * @return mixed + */ + public function askAndValidate($question, sfValidatorBase $validator, array $options = array()) + { + if (!is_array($question)) + { + $question = array($question); + } + + $options = array_merge(array( + 'value' => null, + 'attempts' => false, + 'style' => 'QUESTION', + ), $options); + + // does the provided value passes the validator? + if ($options['value']) + { + try + { + return $validator->clean($options['value']); + } + catch (sfValidatorError $error) + { + } + } + + // no, ask the user for a valid user + $error = null; + while (false === $options['attempts'] || $options['attempts']--) + { + if (null !== $error) + { + $this->logBlock($error->getMessage(), 'ERROR'); + } + + $value = $this->ask($question, $options['style'], null); + + try + { + return $validator->clean($value); + } + catch (sfValidatorError $error) + { + } + } + + throw $error; + } + + /** + * Returns an XML representation of a task. + * + * @return string An XML string representing the task + */ + public function asXml() + { + $dom = new DOMDocument('1.0', 'UTF-8'); + $dom->formatOutput = true; + $dom->appendChild($taskXML = $dom->createElement('task')); + $taskXML->setAttribute('id', $this->getFullName()); + $taskXML->setAttribute('namespace', $this->getNamespace() ? $this->getNamespace() : '_global'); + $taskXML->setAttribute('name', $this->getName()); + + $taskXML->appendChild($usageXML = $dom->createElement('usage')); + $usageXML->appendChild($dom->createTextNode(sprintf($this->getSynopsis(), ''))); + + $taskXML->appendChild($descriptionXML = $dom->createElement('description')); + $descriptionXML->appendChild($dom->createTextNode(implode("\n ", explode("\n", $this->getBriefDescription())))); + + $taskXML->appendChild($helpXML = $dom->createElement('help')); + $help = $this->detailedDescription; + $help = str_replace(array('|COMMENT', '|INFO'), array('|strong', '|em'), $help); + $help = preg_replace('/\[(.+?)\|(\w+)\]/s', '<$2>$1', $help); + $helpXML->appendChild($dom->createTextNode(implode("\n ", explode("\n", $help)))); + + $taskXML->appendChild($aliasesXML = $dom->createElement('aliases')); + foreach ($this->getAliases() as $alias) + { + $aliasesXML->appendChild($aliasXML = $dom->createElement('alias')); + $aliasXML->appendChild($dom->createTextNode($alias)); + } + + $taskXML->appendChild($argumentsXML = $dom->createElement('arguments')); + foreach ($this->getArguments() as $argument) + { + $argumentsXML->appendChild($argumentXML = $dom->createElement('argument')); + $argumentXML->setAttribute('name', $argument->getName()); + $argumentXML->setAttribute('is_required', $argument->isRequired() ? 1 : 0); + $argumentXML->setAttribute('is_array', $argument->isArray() ? 1 : 0); + $argumentXML->appendChild($helpXML = $dom->createElement('description')); + $helpXML->appendChild($dom->createTextNode($argument->getHelp())); + + $argumentXML->appendChild($defaultsXML = $dom->createElement('defaults')); + $defaults = is_array($argument->getDefault()) ? $argument->getDefault() : ($argument->getDefault() ? array($argument->getDefault()) : array()); + foreach ($defaults as $default) + { + $defaultsXML->appendChild($defaultXML = $dom->createElement('default')); + $defaultXML->appendChild($dom->createTextNode($default)); + } + } + + $taskXML->appendChild($optionsXML = $dom->createElement('options')); + foreach ($this->getOptions() as $option) + { + $optionsXML->appendChild($optionXML = $dom->createElement('option')); + $optionXML->setAttribute('name', '--'.$option->getName()); + $optionXML->setAttribute('shortcut', $option->getShortcut() ? '-'.$option->getShortcut() : ''); + $optionXML->setAttribute('accept_parameter', $option->acceptParameter() ? 1 : 0); + $optionXML->setAttribute('is_parameter_required', $option->isParameterRequired() ? 1 : 0); + $optionXML->setAttribute('is_multiple', $option->isArray() ? 1 : 0); + $optionXML->appendChild($helpXML = $dom->createElement('description')); + $helpXML->appendChild($dom->createTextNode($option->getHelp())); + + if ($option->acceptParameter()) + { + $optionXML->appendChild($defaultsXML = $dom->createElement('defaults')); + $defaults = is_array($option->getDefault()) ? $option->getDefault() : ($option->getDefault() ? array($option->getDefault()) : array()); + foreach ($defaults as $default) + { + $defaultsXML->appendChild($defaultXML = $dom->createElement('default')); + $defaultXML->appendChild($dom->createTextNode($default)); + } + } + } + + return $dom->saveXml(); + } + + /** + * Executes the current task. + * + * @param array $arguments An array of arguments + * @param array $options An array of options + * + * @return integer 0 if everything went fine, or an error code + */ + abstract protected function execute($arguments = array(), $options = array()); + + protected function strlen($string) + { + if (!function_exists('mb_strlen')) { + return strlen($string); + } + + if (false === $encoding = mb_detect_encoding($string)) { + return strlen($string); + } + + return mb_strlen($string, $encoding); + } +} diff --git a/lib/vendor/symfony/lib/task/app/.svn/all-wcprops b/lib/vendor/symfony/lib/task/app/.svn/all-wcprops new file mode 100644 index 0000000..830fdbf --- /dev/null +++ b/lib/vendor/symfony/lib/task/app/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 41 +/!svn/ver/23881/branches/1.4/lib/task/app +END +sfAppRoutesTask.class.php +K 25 +svn:wc:ra_dav:version-url +V 67 +/!svn/ver/23881/branches/1.4/lib/task/app/sfAppRoutesTask.class.php +END diff --git a/lib/vendor/symfony/lib/task/app/.svn/entries b/lib/vendor/symfony/lib/task/app/.svn/entries new file mode 100644 index 0000000..758cb81 --- /dev/null +++ b/lib/vendor/symfony/lib/task/app/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/task/app +http://svn.symfony-project.com + + + +2009-11-03T09:10:12.062151Z +23549 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +sfAppRoutesTask.class.php +file + + + + +2012-05-10T18:41:04.205552Z +e016292531af709ab18831d97bb2bccd +2009-11-03T09:10:12.062151Z +23549 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +5415 + diff --git a/lib/vendor/symfony/lib/task/app/.svn/prop-base/sfAppRoutesTask.class.php.svn-base b/lib/vendor/symfony/lib/task/app/.svn/prop-base/sfAppRoutesTask.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/app/.svn/prop-base/sfAppRoutesTask.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/app/.svn/text-base/sfAppRoutesTask.class.php.svn-base b/lib/vendor/symfony/lib/task/app/.svn/text-base/sfAppRoutesTask.class.php.svn-base new file mode 100644 index 0000000..7623daf --- /dev/null +++ b/lib/vendor/symfony/lib/task/app/.svn/text-base/sfAppRoutesTask.class.php.svn-base @@ -0,0 +1,166 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Displays the current routes for an application. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfAppRoutesTask extends sfBaseTask +{ + protected + $routes = array(); + + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('application', sfCommandArgument::REQUIRED, 'The application name'), + new sfCommandArgument('name', sfCommandArgument::OPTIONAL, 'A route name'), + )); + + $this->namespace = 'app'; + $this->name = 'routes'; + $this->briefDescription = 'Displays current routes for an application'; + + $this->detailedDescription = <<routes = $this->getRouting()->getRoutes(); + + // display + $arguments['name'] ? $this->outputRoute($arguments['application'], $arguments['name']) : $this->outputRoutes($arguments['application']); + } + + protected function outputRoutes($application) + { + $this->logSection('app', sprintf('Current routes for application "%s"', $application)); + + $maxName = 4; + $maxMethod = 6; + foreach ($this->routes as $name => $route) + { + $requirements = $route->getRequirements(); + $method = isset($requirements['sf_method']) ? strtoupper(is_array($requirements['sf_method']) ? implode(', ', $requirements['sf_method']) : $requirements['sf_method']) : 'ANY'; + + if (strlen($name) > $maxName) + { + $maxName = strlen($name); + } + + if (strlen($method) > $maxMethod) + { + $maxMethod = strlen($method); + } + } + $format = '%-'.$maxName.'s %-'.$maxMethod.'s %s'; + + // displays the generated routes + $format1 = '%-'.($maxName + 9).'s %-'.($maxMethod + 9).'s %s'; + $this->log(sprintf($format1, $this->formatter->format('Name', 'COMMENT'), $this->formatter->format('Method', 'COMMENT'), $this->formatter->format('Pattern', 'COMMENT'))); + foreach ($this->routes as $name => $route) + { + $requirements = $route->getRequirements(); + $method = isset($requirements['sf_method']) ? strtoupper(is_array($requirements['sf_method']) ? implode(', ', $requirements['sf_method']) : $requirements['sf_method']) : 'ANY'; + $this->log(sprintf($format, $name, $method, $route->getPattern())); + } + } + + protected function outputRoute($application, $name) + { + $this->logSection('app', sprintf('Route "%s" for application "%s"', $name, $application)); + + if (!isset($this->routes[$name])) + { + throw new sfCommandException(sprintf('The route "%s" does not exist.', $name)); + } + + $route = $this->routes[$name]; + $this->log(sprintf('%s %s', $this->formatter->format('Name', 'COMMENT'), $name)); + $this->log(sprintf('%s %s', $this->formatter->format('Pattern', 'COMMENT'), $route->getPattern())); + $this->log(sprintf('%s %s', $this->formatter->format('Class', 'COMMENT'), get_class($route))); + + $defaults = ''; + $d = $route->getDefaults(); + ksort($d); + foreach ($d as $name => $value) + { + $defaults .= ($defaults ? "\n".str_repeat(' ', 13) : '').$name.': '.$this->formatValue($value); + } + $this->log(sprintf('%s %s', $this->formatter->format('Defaults', 'COMMENT'), $defaults)); + + $requirements = ''; + $r = $route->getRequirements(); + ksort($r); + foreach ($r as $name => $value) + { + $requirements .= ($requirements ? "\n".str_repeat(' ', 13) : '').$name.': '.$this->formatValue($value); + } + $this->log(sprintf('%s %s', $this->formatter->format('Requirements', 'COMMENT'), $requirements)); + + $options = ''; + $o = $route->getOptions(); + ksort($o); + foreach ($o as $name => $value) + { + $options .= ($options ? "\n".str_repeat(' ', 13) : '').$name.': '.$this->formatValue($value); + } + $this->log(sprintf('%s %s', $this->formatter->format('Options', 'COMMENT'), $options)); + $this->log(sprintf('%s %s', $this->formatter->format('Regex', 'COMMENT'), preg_replace('/^ /', '', preg_replace('/^/m', ' ', $route->getRegex())))); + + $tokens = ''; + foreach ($route->getTokens() as $token) + { + if (!$tokens) + { + $tokens = $this->displayToken($token); + } + else + { + $tokens .= "\n".str_repeat(' ', 13).$this->displayToken($token); + } + } + $this->log(sprintf('%s %s', $this->formatter->format('Tokens', 'COMMENT'), $tokens)); + } + + protected function displayToken($token) + { + $type = array_shift($token); + array_shift($token); + + return sprintf('%-10s %s', $type, $this->formatValue($token)); + } + + protected function formatValue($value) + { + if (is_object($value)) + { + return sprintf('object(%s)', get_class($value)); + } + else + { + return preg_replace("/\n\s*/s", '', var_export($value, true)); + } + } +} diff --git a/lib/vendor/symfony/lib/task/app/sfAppRoutesTask.class.php b/lib/vendor/symfony/lib/task/app/sfAppRoutesTask.class.php new file mode 100644 index 0000000..40aecd5 --- /dev/null +++ b/lib/vendor/symfony/lib/task/app/sfAppRoutesTask.class.php @@ -0,0 +1,166 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Displays the current routes for an application. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id: sfAppRoutesTask.class.php 23549 2009-11-03 09:10:12Z fabien $ + */ +class sfAppRoutesTask extends sfBaseTask +{ + protected + $routes = array(); + + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('application', sfCommandArgument::REQUIRED, 'The application name'), + new sfCommandArgument('name', sfCommandArgument::OPTIONAL, 'A route name'), + )); + + $this->namespace = 'app'; + $this->name = 'routes'; + $this->briefDescription = 'Displays current routes for an application'; + + $this->detailedDescription = <<routes = $this->getRouting()->getRoutes(); + + // display + $arguments['name'] ? $this->outputRoute($arguments['application'], $arguments['name']) : $this->outputRoutes($arguments['application']); + } + + protected function outputRoutes($application) + { + $this->logSection('app', sprintf('Current routes for application "%s"', $application)); + + $maxName = 4; + $maxMethod = 6; + foreach ($this->routes as $name => $route) + { + $requirements = $route->getRequirements(); + $method = isset($requirements['sf_method']) ? strtoupper(is_array($requirements['sf_method']) ? implode(', ', $requirements['sf_method']) : $requirements['sf_method']) : 'ANY'; + + if (strlen($name) > $maxName) + { + $maxName = strlen($name); + } + + if (strlen($method) > $maxMethod) + { + $maxMethod = strlen($method); + } + } + $format = '%-'.$maxName.'s %-'.$maxMethod.'s %s'; + + // displays the generated routes + $format1 = '%-'.($maxName + 9).'s %-'.($maxMethod + 9).'s %s'; + $this->log(sprintf($format1, $this->formatter->format('Name', 'COMMENT'), $this->formatter->format('Method', 'COMMENT'), $this->formatter->format('Pattern', 'COMMENT'))); + foreach ($this->routes as $name => $route) + { + $requirements = $route->getRequirements(); + $method = isset($requirements['sf_method']) ? strtoupper(is_array($requirements['sf_method']) ? implode(', ', $requirements['sf_method']) : $requirements['sf_method']) : 'ANY'; + $this->log(sprintf($format, $name, $method, $route->getPattern())); + } + } + + protected function outputRoute($application, $name) + { + $this->logSection('app', sprintf('Route "%s" for application "%s"', $name, $application)); + + if (!isset($this->routes[$name])) + { + throw new sfCommandException(sprintf('The route "%s" does not exist.', $name)); + } + + $route = $this->routes[$name]; + $this->log(sprintf('%s %s', $this->formatter->format('Name', 'COMMENT'), $name)); + $this->log(sprintf('%s %s', $this->formatter->format('Pattern', 'COMMENT'), $route->getPattern())); + $this->log(sprintf('%s %s', $this->formatter->format('Class', 'COMMENT'), get_class($route))); + + $defaults = ''; + $d = $route->getDefaults(); + ksort($d); + foreach ($d as $name => $value) + { + $defaults .= ($defaults ? "\n".str_repeat(' ', 13) : '').$name.': '.$this->formatValue($value); + } + $this->log(sprintf('%s %s', $this->formatter->format('Defaults', 'COMMENT'), $defaults)); + + $requirements = ''; + $r = $route->getRequirements(); + ksort($r); + foreach ($r as $name => $value) + { + $requirements .= ($requirements ? "\n".str_repeat(' ', 13) : '').$name.': '.$this->formatValue($value); + } + $this->log(sprintf('%s %s', $this->formatter->format('Requirements', 'COMMENT'), $requirements)); + + $options = ''; + $o = $route->getOptions(); + ksort($o); + foreach ($o as $name => $value) + { + $options .= ($options ? "\n".str_repeat(' ', 13) : '').$name.': '.$this->formatValue($value); + } + $this->log(sprintf('%s %s', $this->formatter->format('Options', 'COMMENT'), $options)); + $this->log(sprintf('%s %s', $this->formatter->format('Regex', 'COMMENT'), preg_replace('/^ /', '', preg_replace('/^/m', ' ', $route->getRegex())))); + + $tokens = ''; + foreach ($route->getTokens() as $token) + { + if (!$tokens) + { + $tokens = $this->displayToken($token); + } + else + { + $tokens .= "\n".str_repeat(' ', 13).$this->displayToken($token); + } + } + $this->log(sprintf('%s %s', $this->formatter->format('Tokens', 'COMMENT'), $tokens)); + } + + protected function displayToken($token) + { + $type = array_shift($token); + array_shift($token); + + return sprintf('%-10s %s', $type, $this->formatValue($token)); + } + + protected function formatValue($value) + { + if (is_object($value)) + { + return sprintf('object(%s)', get_class($value)); + } + else + { + return preg_replace("/\n\s*/s", '', var_export($value, true)); + } + } +} diff --git a/lib/vendor/symfony/lib/task/cache/.svn/all-wcprops b/lib/vendor/symfony/lib/task/cache/.svn/all-wcprops new file mode 100644 index 0000000..92ddd2c --- /dev/null +++ b/lib/vendor/symfony/lib/task/cache/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 43 +/!svn/ver/23922/branches/1.4/lib/task/cache +END +sfCacheClearTask.class.php +K 25 +svn:wc:ra_dav:version-url +V 70 +/!svn/ver/23922/branches/1.4/lib/task/cache/sfCacheClearTask.class.php +END diff --git a/lib/vendor/symfony/lib/task/cache/.svn/entries b/lib/vendor/symfony/lib/task/cache/.svn/entries new file mode 100644 index 0000000..6312549 --- /dev/null +++ b/lib/vendor/symfony/lib/task/cache/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/task/cache +http://svn.symfony-project.com + + + +2009-11-14T14:58:38.254908Z +23922 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +sfCacheClearTask.class.php +file + + + + +2012-05-10T18:41:04.277545Z +f7907a739738f7ff8b7e53a8dc3c160b +2009-11-14T14:58:38.254908Z +23922 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +7848 + diff --git a/lib/vendor/symfony/lib/task/cache/.svn/prop-base/sfCacheClearTask.class.php.svn-base b/lib/vendor/symfony/lib/task/cache/.svn/prop-base/sfCacheClearTask.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/cache/.svn/prop-base/sfCacheClearTask.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/cache/.svn/text-base/sfCacheClearTask.class.php.svn-base b/lib/vendor/symfony/lib/task/cache/.svn/text-base/sfCacheClearTask.class.php.svn-base new file mode 100644 index 0000000..70cab25 --- /dev/null +++ b/lib/vendor/symfony/lib/task/cache/.svn/text-base/sfCacheClearTask.class.php.svn-base @@ -0,0 +1,257 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Clears the symfony cache. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfCacheClearTask extends sfBaseTask +{ + protected + $config = null; + + /** + * @see sfTask + */ + protected function configure() + { + $this->addOptions(array( + new sfCommandOption('app', null, sfCommandOption::PARAMETER_OPTIONAL, 'The application name', null), + new sfCommandOption('env', null, sfCommandOption::PARAMETER_OPTIONAL, 'The environment', null), + new sfCommandOption('type', null, sfCommandOption::PARAMETER_OPTIONAL, 'The type', 'all'), + )); + + $this->aliases = array('cc'); + $this->namespace = 'cache'; + $this->name = 'clear'; + $this->briefDescription = 'Clears the cache'; + + $this->detailedDescription = <<discard('.sf')->maxdepth(0)->relative(); + + // iterate through applications + $apps = null === $options['app'] ? $dirFinder->in(sfConfig::get('sf_apps_dir')) : array($options['app']); + foreach ($apps as $app) + { + $this->checkAppExists($app); + + if (!is_dir(sfConfig::get('sf_cache_dir').'/'.$app)) + { + continue; + } + + // iterate through environments + $envs = null === $options['env'] ? $dirFinder->in(sfConfig::get('sf_cache_dir').'/'.$app) : array($options['env']); + foreach ($envs as $env) + { + if (!is_dir(sfConfig::get('sf_cache_dir').'/'.$app.'/'.$env)) + { + continue; + } + + $this->logSection('cache', sprintf('Clearing cache type "%s" for "%s" app and "%s" env', $options['type'], $app, $env)); + + $appConfiguration = ProjectConfiguration::getApplicationConfiguration($app, $env, true); + + $this->lock($app, $env); + + $event = $appConfiguration->getEventDispatcher()->notifyUntil(new sfEvent($this, 'task.cache.clear', array('app' => $appConfiguration, 'env' => $env, 'type' => $options['type']))); + if (!$event->isProcessed()) + { + // default cleaning process + $method = $this->getClearCacheMethod($options['type']); + if (!method_exists($this, $method)) + { + throw new InvalidArgumentException(sprintf('Do not know how to remove cache for type "%s".', $options['type'])); + } + $this->$method($appConfiguration); + } + + $this->unlock($app, $env); + } + } + + // clear global cache + if (null === $options['app'] && 'all' == $options['type']) + { + $this->getFilesystem()->remove(sfFinder::type('file')->discard('.sf')->in(sfConfig::get('sf_cache_dir'))); + } + } + + protected function getClearCacheMethod($type) + { + return sprintf('clear%sCache', ucfirst($type)); + } + + protected function clearAllCache(sfApplicationConfiguration $appConfiguration) + { + $this->clearI18NCache($appConfiguration); + $this->clearRoutingCache($appConfiguration); + $this->clearTemplateCache($appConfiguration); + $this->clearModuleCache($appConfiguration); + $this->clearConfigCache($appConfiguration); + } + + protected function clearConfigCache(sfApplicationConfiguration $appConfiguration) + { + $subDir = sfConfig::get('sf_cache_dir').'/'.$appConfiguration->getApplication().'/'.$appConfiguration->getEnvironment().'/config'; + + if (is_dir($subDir)) + { + // remove cache files + $this->getFilesystem()->remove(sfFinder::type('file')->discard('.sf')->in($subDir)); + } + } + + protected function clearI18NCache(sfApplicationConfiguration $appConfiguration) + { + $config = $this->getFactoriesConfiguration($appConfiguration); + + if (isset($config['i18n']['param']['cache'])) + { + $this->cleanCacheFromFactoryConfig($config['i18n']['param']['cache']); + } + } + + protected function clearRoutingCache(sfApplicationConfiguration $appConfiguration) + { + $config = $this->getFactoriesConfiguration($appConfiguration); + + if (isset($config['routing']['param']['cache'])) + { + $this->cleanCacheFromFactoryConfig($config['routing']['param']['cache']); + } + } + + protected function clearTemplateCache(sfApplicationConfiguration $appConfiguration) + { + $config = $this->getFactoriesConfiguration($appConfiguration); + + if (isset($config['view_cache'])) + { + $this->cleanCacheFromFactoryConfig($config['view_cache']); + } + } + + protected function clearModuleCache(sfApplicationConfiguration $appConfiguration) + { + $subDir = sfConfig::get('sf_cache_dir').'/'.$appConfiguration->getApplication().'/'.$appConfiguration->getEnvironment().'/modules'; + + if (is_dir($subDir)) + { + // remove cache files + $this->getFilesystem()->remove(sfFinder::type('file')->discard('.sf')->in($subDir)); + } + } + + public function getFactoriesConfiguration(sfApplicationConfiguration $appConfiguration) + { + $app = $appConfiguration->getApplication(); + $env = $appConfiguration->getEnvironment(); + + if (!isset($this->config[$app])) + { + $this->config[$app] = array(); + } + + if (!isset($this->config[$app][$env])) + { + $this->config[$app][$env] = sfFactoryConfigHandler::getConfiguration($appConfiguration->getConfigPaths('config/factories.yml')); + } + + return $this->config[$app][$env] ; + } + + public function cleanCacheFromFactoryConfig($class, $parameters = array()) + { + if ($class) + { + // the standard array with ['class'] and ['param'] can be passed as well + if (is_array($class)) + { + if (!isset($class['class'])) + { + return; + } + if (isset($class['param'])) + { + $parameters = $class['param']; + } + $class = $class['class']; + } + $cache = new $class($parameters); + $cache->clean(); + } + } + + protected function lock($app, $env) + { + // create a lock file + $this->getFilesystem()->touch($this->getLockFile($app, $env)); + + // change mode so the web user can remove it if we die + $this->getFilesystem()->chmod($this->getLockFile($app, $env), 0777); + } + + protected function unlock($app, $env) + { + // release lock + $this->getFilesystem()->remove($this->getLockFile($app, $env)); + } + + protected function getLockFile($app, $env) + { + return sfConfig::get('sf_data_dir').'/'.$app.'_'.$env.'-cli.lck'; + } +} diff --git a/lib/vendor/symfony/lib/task/cache/sfCacheClearTask.class.php b/lib/vendor/symfony/lib/task/cache/sfCacheClearTask.class.php new file mode 100644 index 0000000..af94f82 --- /dev/null +++ b/lib/vendor/symfony/lib/task/cache/sfCacheClearTask.class.php @@ -0,0 +1,257 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Clears the symfony cache. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id: sfCacheClearTask.class.php 23922 2009-11-14 14:58:38Z fabien $ + */ +class sfCacheClearTask extends sfBaseTask +{ + protected + $config = null; + + /** + * @see sfTask + */ + protected function configure() + { + $this->addOptions(array( + new sfCommandOption('app', null, sfCommandOption::PARAMETER_OPTIONAL, 'The application name', null), + new sfCommandOption('env', null, sfCommandOption::PARAMETER_OPTIONAL, 'The environment', null), + new sfCommandOption('type', null, sfCommandOption::PARAMETER_OPTIONAL, 'The type', 'all'), + )); + + $this->aliases = array('cc'); + $this->namespace = 'cache'; + $this->name = 'clear'; + $this->briefDescription = 'Clears the cache'; + + $this->detailedDescription = <<discard('.sf')->maxdepth(0)->relative(); + + // iterate through applications + $apps = null === $options['app'] ? $dirFinder->in(sfConfig::get('sf_apps_dir')) : array($options['app']); + foreach ($apps as $app) + { + $this->checkAppExists($app); + + if (!is_dir(sfConfig::get('sf_cache_dir').'/'.$app)) + { + continue; + } + + // iterate through environments + $envs = null === $options['env'] ? $dirFinder->in(sfConfig::get('sf_cache_dir').'/'.$app) : array($options['env']); + foreach ($envs as $env) + { + if (!is_dir(sfConfig::get('sf_cache_dir').'/'.$app.'/'.$env)) + { + continue; + } + + $this->logSection('cache', sprintf('Clearing cache type "%s" for "%s" app and "%s" env', $options['type'], $app, $env)); + + $appConfiguration = ProjectConfiguration::getApplicationConfiguration($app, $env, true); + + $this->lock($app, $env); + + $event = $appConfiguration->getEventDispatcher()->notifyUntil(new sfEvent($this, 'task.cache.clear', array('app' => $appConfiguration, 'env' => $env, 'type' => $options['type']))); + if (!$event->isProcessed()) + { + // default cleaning process + $method = $this->getClearCacheMethod($options['type']); + if (!method_exists($this, $method)) + { + throw new InvalidArgumentException(sprintf('Do not know how to remove cache for type "%s".', $options['type'])); + } + $this->$method($appConfiguration); + } + + $this->unlock($app, $env); + } + } + + // clear global cache + if (null === $options['app'] && 'all' == $options['type']) + { + $this->getFilesystem()->remove(sfFinder::type('file')->discard('.sf')->in(sfConfig::get('sf_cache_dir'))); + } + } + + protected function getClearCacheMethod($type) + { + return sprintf('clear%sCache', ucfirst($type)); + } + + protected function clearAllCache(sfApplicationConfiguration $appConfiguration) + { + $this->clearI18NCache($appConfiguration); + $this->clearRoutingCache($appConfiguration); + $this->clearTemplateCache($appConfiguration); + $this->clearModuleCache($appConfiguration); + $this->clearConfigCache($appConfiguration); + } + + protected function clearConfigCache(sfApplicationConfiguration $appConfiguration) + { + $subDir = sfConfig::get('sf_cache_dir').'/'.$appConfiguration->getApplication().'/'.$appConfiguration->getEnvironment().'/config'; + + if (is_dir($subDir)) + { + // remove cache files + $this->getFilesystem()->remove(sfFinder::type('file')->discard('.sf')->in($subDir)); + } + } + + protected function clearI18NCache(sfApplicationConfiguration $appConfiguration) + { + $config = $this->getFactoriesConfiguration($appConfiguration); + + if (isset($config['i18n']['param']['cache'])) + { + $this->cleanCacheFromFactoryConfig($config['i18n']['param']['cache']); + } + } + + protected function clearRoutingCache(sfApplicationConfiguration $appConfiguration) + { + $config = $this->getFactoriesConfiguration($appConfiguration); + + if (isset($config['routing']['param']['cache'])) + { + $this->cleanCacheFromFactoryConfig($config['routing']['param']['cache']); + } + } + + protected function clearTemplateCache(sfApplicationConfiguration $appConfiguration) + { + $config = $this->getFactoriesConfiguration($appConfiguration); + + if (isset($config['view_cache'])) + { + $this->cleanCacheFromFactoryConfig($config['view_cache']); + } + } + + protected function clearModuleCache(sfApplicationConfiguration $appConfiguration) + { + $subDir = sfConfig::get('sf_cache_dir').'/'.$appConfiguration->getApplication().'/'.$appConfiguration->getEnvironment().'/modules'; + + if (is_dir($subDir)) + { + // remove cache files + $this->getFilesystem()->remove(sfFinder::type('file')->discard('.sf')->in($subDir)); + } + } + + public function getFactoriesConfiguration(sfApplicationConfiguration $appConfiguration) + { + $app = $appConfiguration->getApplication(); + $env = $appConfiguration->getEnvironment(); + + if (!isset($this->config[$app])) + { + $this->config[$app] = array(); + } + + if (!isset($this->config[$app][$env])) + { + $this->config[$app][$env] = sfFactoryConfigHandler::getConfiguration($appConfiguration->getConfigPaths('config/factories.yml')); + } + + return $this->config[$app][$env] ; + } + + public function cleanCacheFromFactoryConfig($class, $parameters = array()) + { + if ($class) + { + // the standard array with ['class'] and ['param'] can be passed as well + if (is_array($class)) + { + if (!isset($class['class'])) + { + return; + } + if (isset($class['param'])) + { + $parameters = $class['param']; + } + $class = $class['class']; + } + $cache = new $class($parameters); + $cache->clean(); + } + } + + protected function lock($app, $env) + { + // create a lock file + $this->getFilesystem()->touch($this->getLockFile($app, $env)); + + // change mode so the web user can remove it if we die + $this->getFilesystem()->chmod($this->getLockFile($app, $env), 0777); + } + + protected function unlock($app, $env) + { + // release lock + $this->getFilesystem()->remove($this->getLockFile($app, $env)); + } + + protected function getLockFile($app, $env) + { + return sfConfig::get('sf_data_dir').'/'.$app.'_'.$env.'-cli.lck'; + } +} diff --git a/lib/vendor/symfony/lib/task/configure/.svn/all-wcprops b/lib/vendor/symfony/lib/task/configure/.svn/all-wcprops new file mode 100644 index 0000000..adefd10 --- /dev/null +++ b/lib/vendor/symfony/lib/task/configure/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 47 +/!svn/ver/23881/branches/1.4/lib/task/configure +END +sfConfigureAuthorTask.class.php +K 25 +svn:wc:ra_dav:version-url +V 79 +/!svn/ver/23881/branches/1.4/lib/task/configure/sfConfigureAuthorTask.class.php +END diff --git a/lib/vendor/symfony/lib/task/configure/.svn/entries b/lib/vendor/symfony/lib/task/configure/.svn/entries new file mode 100644 index 0000000..bb42834 --- /dev/null +++ b/lib/vendor/symfony/lib/task/configure/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/task/configure +http://svn.symfony-project.com + + + +2009-06-10T13:43:17.680825Z +19116 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +sfConfigureAuthorTask.class.php +file + + + + +2012-05-10T18:41:04.221548Z +a23ad8cc62e238cf8d5f43909e32652d +2008-01-06T18:53:47.259309Z +6978 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +1873 + diff --git a/lib/vendor/symfony/lib/task/configure/.svn/prop-base/sfConfigureAuthorTask.class.php.svn-base b/lib/vendor/symfony/lib/task/configure/.svn/prop-base/sfConfigureAuthorTask.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/configure/.svn/prop-base/sfConfigureAuthorTask.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/configure/.svn/text-base/sfConfigureAuthorTask.class.php.svn-base b/lib/vendor/symfony/lib/task/configure/.svn/text-base/sfConfigureAuthorTask.class.php.svn-base new file mode 100644 index 0000000..4eb20d9 --- /dev/null +++ b/lib/vendor/symfony/lib/task/configure/.svn/text-base/sfConfigureAuthorTask.class.php.svn-base @@ -0,0 +1,73 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Configures the main author of the project. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfConfigureAuthorTask extends sfBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('author', sfCommandArgument::REQUIRED, 'The project author'), + )); + + $this->namespace = 'configure'; + $this->name = 'author'; + + $this->briefDescription = 'Configure project author'; + + $this->detailedDescription = <<"|INFO] + +The author is used by the generates to pre-configure the PHPDoc header for each generated file. + +The value is stored in [config/properties.ini]. +EOF; + } + + /** + * @see sfTask + */ + protected function execute($arguments = array(), $options = array()) + { + $file = sfConfig::get('sf_config_dir').'/properties.ini'; + $content = parse_ini_file($file, true); + + if (!isset($content['symfony'])) + { + $content['symfony'] = array(); + } + + $content['symfony']['author'] = $arguments['author']; + + $ini = ''; + foreach ($content as $section => $values) + { + $ini .= sprintf("[%s]\n", $section); + foreach ($values as $key => $value) + { + $ini .= sprintf(" %s=%s\n", $key, $value); + } + } + + file_put_contents($file, $ini); + } +} diff --git a/lib/vendor/symfony/lib/task/configure/sfConfigureAuthorTask.class.php b/lib/vendor/symfony/lib/task/configure/sfConfigureAuthorTask.class.php new file mode 100644 index 0000000..2d08522 --- /dev/null +++ b/lib/vendor/symfony/lib/task/configure/sfConfigureAuthorTask.class.php @@ -0,0 +1,73 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Configures the main author of the project. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id: sfConfigureAuthorTask.class.php 6978 2008-01-06 18:53:47Z fabien $ + */ +class sfConfigureAuthorTask extends sfBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('author', sfCommandArgument::REQUIRED, 'The project author'), + )); + + $this->namespace = 'configure'; + $this->name = 'author'; + + $this->briefDescription = 'Configure project author'; + + $this->detailedDescription = <<"|INFO] + +The author is used by the generates to pre-configure the PHPDoc header for each generated file. + +The value is stored in [config/properties.ini]. +EOF; + } + + /** + * @see sfTask + */ + protected function execute($arguments = array(), $options = array()) + { + $file = sfConfig::get('sf_config_dir').'/properties.ini'; + $content = parse_ini_file($file, true); + + if (!isset($content['symfony'])) + { + $content['symfony'] = array(); + } + + $content['symfony']['author'] = $arguments['author']; + + $ini = ''; + foreach ($content as $section => $values) + { + $ini .= sprintf("[%s]\n", $section); + foreach ($values as $key => $value) + { + $ini .= sprintf(" %s=%s\n", $key, $value); + } + } + + file_put_contents($file, $ini); + } +} diff --git a/lib/vendor/symfony/lib/task/generator/.svn/all-wcprops b/lib/vendor/symfony/lib/task/generator/.svn/all-wcprops new file mode 100644 index 0000000..69e1669 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/.svn/all-wcprops @@ -0,0 +1,35 @@ +K 25 +svn:wc:ra_dav:version-url +V 47 +/!svn/ver/30530/branches/1.4/lib/task/generator +END +sfGenerateAppTask.class.php +K 25 +svn:wc:ra_dav:version-url +V 75 +/!svn/ver/24039/branches/1.4/lib/task/generator/sfGenerateAppTask.class.php +END +sfGenerateTaskTask.class.php +K 25 +svn:wc:ra_dav:version-url +V 76 +/!svn/ver/27750/branches/1.4/lib/task/generator/sfGenerateTaskTask.class.php +END +sfGenerateModuleTask.class.php +K 25 +svn:wc:ra_dav:version-url +V 78 +/!svn/ver/23922/branches/1.4/lib/task/generator/sfGenerateModuleTask.class.php +END +sfGenerateProjectTask.class.php +K 25 +svn:wc:ra_dav:version-url +V 79 +/!svn/ver/30530/branches/1.4/lib/task/generator/sfGenerateProjectTask.class.php +END +sfGeneratorBaseTask.class.php +K 25 +svn:wc:ra_dav:version-url +V 77 +/!svn/ver/23881/branches/1.4/lib/task/generator/sfGeneratorBaseTask.class.php +END diff --git a/lib/vendor/symfony/lib/task/generator/.svn/entries b/lib/vendor/symfony/lib/task/generator/.svn/entries new file mode 100644 index 0000000..6efc96c --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/.svn/entries @@ -0,0 +1,201 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/task/generator +http://svn.symfony-project.com + + + +2010-08-04T16:38:41.038857Z +30530 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +sfGenerateAppTask.class.php +file + + + + +2012-05-10T18:41:06.825549Z +d77f8b111b910bc910098adfc381da70 +2009-11-16T17:52:14.706630Z +24039 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +6170 + +sfGenerateTaskTask.class.php +file + + + + +2012-05-10T18:41:06.825549Z +bb3edfee4ef82dd41a1e1dc35a13a2ce +2010-02-08T19:02:44.771890Z +27750 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +6156 + +skeleton +dir + +sfGenerateModuleTask.class.php +file + + + + +2012-05-10T18:41:06.957550Z +7ab5fc368fc6807e436714b6a47c22b7 +2009-11-14T14:58:38.254908Z +23922 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +3901 + +sfGenerateProjectTask.class.php +file + + + + +2012-05-10T18:41:06.981549Z +14644c9df2782a3482209cf66ede5141 +2010-08-04T16:38:41.038857Z +30530 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +5771 + +sfGeneratorBaseTask.class.php +file + + + + +2012-05-10T18:41:06.981549Z +f4a2f0fc15961f5545b1e27667f39099 +2008-01-04T06:31:12.334921Z +6931 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +584 + diff --git a/lib/vendor/symfony/lib/task/generator/.svn/prop-base/sfGenerateAppTask.class.php.svn-base b/lib/vendor/symfony/lib/task/generator/.svn/prop-base/sfGenerateAppTask.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/.svn/prop-base/sfGenerateAppTask.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/generator/.svn/prop-base/sfGenerateModuleTask.class.php.svn-base b/lib/vendor/symfony/lib/task/generator/.svn/prop-base/sfGenerateModuleTask.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/.svn/prop-base/sfGenerateModuleTask.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/generator/.svn/prop-base/sfGenerateProjectTask.class.php.svn-base b/lib/vendor/symfony/lib/task/generator/.svn/prop-base/sfGenerateProjectTask.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/.svn/prop-base/sfGenerateProjectTask.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/generator/.svn/prop-base/sfGenerateTaskTask.class.php.svn-base b/lib/vendor/symfony/lib/task/generator/.svn/prop-base/sfGenerateTaskTask.class.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/.svn/prop-base/sfGenerateTaskTask.class.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/lib/task/generator/.svn/prop-base/sfGeneratorBaseTask.class.php.svn-base b/lib/vendor/symfony/lib/task/generator/.svn/prop-base/sfGeneratorBaseTask.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/.svn/prop-base/sfGeneratorBaseTask.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/generator/.svn/text-base/sfGenerateAppTask.class.php.svn-base b/lib/vendor/symfony/lib/task/generator/.svn/text-base/sfGenerateAppTask.class.php.svn-base new file mode 100644 index 0000000..bd18241 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/.svn/text-base/sfGenerateAppTask.class.php.svn-base @@ -0,0 +1,167 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/sfGeneratorBaseTask.class.php'); + +/** + * Generates a new application. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfGenerateAppTask extends sfGeneratorBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('app', sfCommandArgument::REQUIRED, 'The application name'), + )); + + $this->addOptions(array( + new sfCommandOption('escaping-strategy', null, sfCommandOption::PARAMETER_REQUIRED, 'Output escaping strategy', true), + new sfCommandOption('csrf-secret', null, sfCommandOption::PARAMETER_REQUIRED, 'Secret to use for CSRF protection', true), + )); + + $this->namespace = 'generate'; + $this->name = 'app'; + + $this->briefDescription = 'Generates a new application'; + + $this->detailedDescription = <<discard('.sf'); + $this->getFilesystem()->mirror($skeletonDir.'/app', $appDir, $finder); + + // Create $app.php or index.php if it is our first app + $indexName = 'index'; + $firstApp = !file_exists(sfConfig::get('sf_web_dir').'/index.php'); + if (!$firstApp) + { + $indexName = $app; + } + + if (true === $options['csrf-secret']) + { + $options['csrf-secret'] = sha1(rand(111111111, 99999999).getmypid()); + } + + // Set no_script_name value in settings.yml for production environment + $finder = sfFinder::type('file')->name('settings.yml'); + $this->getFilesystem()->replaceTokens($finder->in($appDir.'/config'), '##', '##', array( + 'NO_SCRIPT_NAME' => $firstApp ? 'true' : 'false', + 'CSRF_SECRET' => sfYamlInline::dump(sfYamlInline::parseScalar($options['csrf-secret'])), + 'ESCAPING_STRATEGY' => sfYamlInline::dump((boolean) sfYamlInline::parseScalar($options['escaping-strategy'])), + 'USE_DATABASE' => sfConfig::has('sf_orm') ? 'true' : 'false', + )); + + $this->getFilesystem()->copy($skeletonDir.'/web/index.php', sfConfig::get('sf_web_dir').'/'.$indexName.'.php'); + $this->getFilesystem()->copy($skeletonDir.'/web/index.php', sfConfig::get('sf_web_dir').'/'.$app.'_dev.php'); + + $this->getFilesystem()->replaceTokens(sfConfig::get('sf_web_dir').'/'.$indexName.'.php', '##', '##', array( + 'APP_NAME' => $app, + 'ENVIRONMENT' => 'prod', + 'IS_DEBUG' => 'false', + 'IP_CHECK' => '', + )); + + $this->getFilesystem()->replaceTokens(sfConfig::get('sf_web_dir').'/'.$app.'_dev.php', '##', '##', array( + 'APP_NAME' => $app, + 'ENVIRONMENT' => 'dev', + 'IS_DEBUG' => 'true', + 'IP_CHECK' => '// this check prevents access to debug front controllers that are deployed by accident to production servers.'.PHP_EOL. + '// feel free to remove this, extend it or make something more sophisticated.'.PHP_EOL. + 'if (!in_array(@$_SERVER[\'REMOTE_ADDR\'], array(\'127.0.0.1\', \'::1\')))'.PHP_EOL. + '{'.PHP_EOL. + ' die(\'You are not allowed to access this file. Check \'.basename(__FILE__).\' for more information.\');'.PHP_EOL. + '}'.PHP_EOL, + )); + + $this->getFilesystem()->rename($appDir.'/config/ApplicationConfiguration.class.php', $appDir.'/config/'.$app.'Configuration.class.php'); + + $this->getFilesystem()->replaceTokens($appDir.'/config/'.$app.'Configuration.class.php', '##', '##', array('APP_NAME' => $app)); + + $fixPerms = new sfProjectPermissionsTask($this->dispatcher, $this->formatter); + $fixPerms->setCommandApplication($this->commandApplication); + $fixPerms->setConfiguration($this->configuration); + $fixPerms->run(); + + // Create test dir + $this->getFilesystem()->mkdirs(sfConfig::get('sf_test_dir').'/functional/'.$app); + } +} diff --git a/lib/vendor/symfony/lib/task/generator/.svn/text-base/sfGenerateModuleTask.class.php.svn-base b/lib/vendor/symfony/lib/task/generator/.svn/text-base/sfGenerateModuleTask.class.php.svn-base new file mode 100644 index 0000000..af2756c --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/.svn/text-base/sfGenerateModuleTask.class.php.svn-base @@ -0,0 +1,116 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/sfGeneratorBaseTask.class.php'); + +/** + * Generates a new module. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfGenerateModuleTask extends sfGeneratorBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('application', sfCommandArgument::REQUIRED, 'The application name'), + new sfCommandArgument('module', sfCommandArgument::REQUIRED, 'The module name'), + )); + + $this->namespace = 'generate'; + $this->name = 'module'; + + $this->briefDescription = 'Generates a new module'; + + $this->detailedDescription = <<|INFO] + +You can customize the default skeleton used by the task by creating a +[%sf_data_dir%/skeleton/module|COMMENT] directory. + +The task also creates a functional test stub named +[%sf_test_dir%/functional/%application%/%module%ActionsTest.class.php|COMMENT] +that does not pass by default. + +If a module with the same name already exists in the application, +it throws a [sfCommandException|COMMENT]. +EOF; + } + + /** + * @see sfTask + */ + protected function execute($arguments = array(), $options = array()) + { + $app = $arguments['application']; + $module = $arguments['module']; + + // Validate the module name + if (!preg_match('/^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*$/', $module)) + { + throw new sfCommandException(sprintf('The module name "%s" is invalid.', $module)); + } + + $moduleDir = sfConfig::get('sf_app_module_dir').'/'.$module; + + if (is_dir($moduleDir)) + { + throw new sfCommandException(sprintf('The module "%s" already exists in the "%s" application.', $moduleDir, $app)); + } + + $properties = parse_ini_file(sfConfig::get('sf_config_dir').'/properties.ini', true); + + $constants = array( + 'PROJECT_NAME' => isset($properties['symfony']['name']) ? $properties['symfony']['name'] : 'symfony', + 'APP_NAME' => $app, + 'MODULE_NAME' => $module, + 'AUTHOR_NAME' => isset($properties['symfony']['author']) ? $properties['symfony']['author'] : 'Your name here', + ); + + if (is_readable(sfConfig::get('sf_data_dir').'/skeleton/module')) + { + $skeletonDir = sfConfig::get('sf_data_dir').'/skeleton/module'; + } + else + { + $skeletonDir = dirname(__FILE__).'/skeleton/module'; + } + + // create basic application structure + $finder = sfFinder::type('any')->discard('.sf'); + $this->getFilesystem()->mirror($skeletonDir.'/module', $moduleDir, $finder); + + // create basic test + $this->getFilesystem()->copy($skeletonDir.'/test/actionsTest.php', sfConfig::get('sf_test_dir').'/functional/'.$app.'/'.$module.'ActionsTest.php'); + + // customize test file + $this->getFilesystem()->replaceTokens(sfConfig::get('sf_test_dir').'/functional/'.$app.DIRECTORY_SEPARATOR.$module.'ActionsTest.php', '##', '##', $constants); + + // customize php and yml files + $finder = sfFinder::type('file')->name('*.php', '*.yml'); + $this->getFilesystem()->replaceTokens($finder->in($moduleDir), '##', '##', $constants); + } +} diff --git a/lib/vendor/symfony/lib/task/generator/.svn/text-base/sfGenerateProjectTask.class.php.svn-base b/lib/vendor/symfony/lib/task/generator/.svn/text-base/sfGenerateProjectTask.class.php.svn-base new file mode 100644 index 0000000..dfede5b --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/.svn/text-base/sfGenerateProjectTask.class.php.svn-base @@ -0,0 +1,169 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/sfGeneratorBaseTask.class.php'); + +/** + * Generates a new project. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfGenerateProjectTask extends sfGeneratorBaseTask +{ + /** + * @see sfTask + */ + protected function doRun(sfCommandManager $commandManager, $options) + { + $this->process($commandManager, $options); + + return $this->execute($commandManager->getArgumentValues(), $commandManager->getOptionValues()); + } + + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('name', sfCommandArgument::REQUIRED, 'The project name'), + new sfCommandArgument('author', sfCommandArgument::OPTIONAL, 'The project author', 'Your name here'), + )); + + $this->addOptions(array( + new sfCommandOption('orm', null, sfCommandOption::PARAMETER_REQUIRED, 'The ORM to use by default', 'Doctrine'), + new sfCommandOption('installer', null, sfCommandOption::PARAMETER_REQUIRED, 'An installer script to execute', null), + )); + + $this->namespace = 'generate'; + $this->name = 'project'; + + $this->briefDescription = 'Generates a new project'; + + $this->detailedDescription = <<commandApplication && !file_exists($options['installer'])) + { + throw new InvalidArgumentException(sprintf('The installer "%s" does not exist.', $options['installer'])); + } + + // clean orm option + $options['orm'] = ucfirst(strtolower($options['orm'])); + + $this->arguments = $arguments; + $this->options = $options; + + // create basic project structure + $this->installDir(dirname(__FILE__).'/skeleton/project'); + + // update ProjectConfiguration class (use a relative path when the symfony core is nested within the project) + $symfonyCoreAutoload = 0 === strpos(sfConfig::get('sf_symfony_lib_dir'), sfConfig::get('sf_root_dir')) ? + sprintf('dirname(__FILE__).\'/..%s/autoload/sfCoreAutoload.class.php\'', str_replace(sfConfig::get('sf_root_dir'), '', sfConfig::get('sf_symfony_lib_dir'))) : + var_export(sfConfig::get('sf_symfony_lib_dir').'/autoload/sfCoreAutoload.class.php', true); + + $this->replaceTokens(array(sfConfig::get('sf_config_dir')), array('SYMFONY_CORE_AUTOLOAD' => str_replace('\\', '/', $symfonyCoreAutoload))); + + $this->tokens = array( + 'ORM' => $this->options['orm'], + 'PROJECT_NAME' => $this->arguments['name'], + 'AUTHOR_NAME' => $this->arguments['author'], + 'PROJECT_DIR' => sfConfig::get('sf_root_dir'), + ); + + $this->replaceTokens(); + + // execute the choosen ORM installer script + if (in_array($options['orm'], array('Doctrine', 'Propel'))) + { + include dirname(__FILE__).'/../../plugins/sf'.$options['orm'].'Plugin/config/installer.php'; + } + + // execute a custom installer + if ($options['installer'] && $this->commandApplication) + { + if ($this->canRunInstaller($options['installer'])) + { + $this->reloadTasks(); + include $options['installer']; + } + } + + // fix permission for common directories + $fixPerms = new sfProjectPermissionsTask($this->dispatcher, $this->formatter); + $fixPerms->setCommandApplication($this->commandApplication); + $fixPerms->setConfiguration($this->configuration); + $fixPerms->run(); + + $this->replaceTokens(); + } + + protected function canRunInstaller($installer) + { + if (preg_match('#^(https?|ftps?)://#', $installer)) + { + if (ini_get('allow_url_fopen') === false) + { + $this->logSection('generate', sprintf('Cannot run remote installer "%s" because "allow_url_fopen" is off', $installer)); + } + if (ini_get('allow_url_include') === false) + { + $this->logSection('generate', sprintf('Cannot run remote installer "%s" because "allow_url_include" is off', $installer)); + } + return ini_get('allow_url_fopen') && ini_get('allow_url_include'); + } + return true; + } +} diff --git a/lib/vendor/symfony/lib/task/generator/.svn/text-base/sfGenerateTaskTask.class.php.svn-base b/lib/vendor/symfony/lib/task/generator/.svn/text-base/sfGenerateTaskTask.class.php.svn-base new file mode 100644 index 0000000..17539a0 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/.svn/text-base/sfGenerateTaskTask.class.php.svn-base @@ -0,0 +1,190 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Creates a task skeleton + * + * @package symfony + * @subpackage task + * @author Francois Zaninotto + */ +class sfGenerateTaskTask extends sfBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('task_name', sfCommandArgument::REQUIRED, 'The task name (can contain namespace)'), + )); + + $this->addOptions(array( + new sfCommandOption('dir', null, sfCommandOption::PARAMETER_REQUIRED, 'The directory to create the task in', 'lib/task'), + new sfCommandOption('use-database', null, sfCommandOption::PARAMETER_REQUIRED, 'Whether the task needs model initialization to access database', sfConfig::get('sf_orm')), + new sfCommandOption('brief-description', null, sfCommandOption::PARAMETER_REQUIRED, 'A brief task description (appears in task list)'), + )); + + $this->namespace = 'generate'; + $this->name = 'task'; + $this->briefDescription = 'Creates a skeleton class for a new task'; + + $this->detailedDescription = <<addArguments(array( + // new sfCommandArgument('my_arg', sfCommandArgument::REQUIRED, 'My argument'), + // )); + + \$this->addOptions(array( + new sfCommandOption('application', null, sfCommandOption::PARAMETER_REQUIRED, 'The application name'), + new sfCommandOption('env', null, sfCommandOption::PARAMETER_REQUIRED, 'The environment', 'dev'), + new sfCommandOption('connection', null, sfCommandOption::PARAMETER_REQUIRED, 'The connection name', '$defaultConnection'), + // add your own options here + )); + + \$this->namespace = '$namespace'; + \$this->name = '$name'; + \$this->briefDescription = '$briefDescription'; + \$this->detailedDescription = <<configuration); + \$connection = \$databaseManager->getDatabase(\$options['connection'])->getConnection(); + + // add your code here + } +} + +HED; + } + else + { + $content = <<addArguments(array( + // new sfCommandArgument('my_arg', sfCommandArgument::REQUIRED, 'My argument'), + // )); + + // // add your own options here + // \$this->addOptions(array( + // new sfCommandOption('my_option', null, sfCommandOption::PARAMETER_REQUIRED, 'My option'), + // )); + + \$this->namespace = '$namespace'; + \$this->name = '$name'; + \$this->briefDescription = '$briefDescription'; + \$this->detailedDescription = <<getFilesystem()->mkdirs($options['dir']); + } + + $taskFile = sfConfig::get('sf_root_dir').'/'.$options['dir'].'/'.$taskClassName.'.class.php'; + if (is_readable($taskFile)) + { + throw new sfCommandException(sprintf('A "%s" task already exists in "%s".', $taskName, $taskFile)); + } + + $this->logSection('task', sprintf('Creating "%s" task file', $taskFile)); + file_put_contents($taskFile, $content); + } +} diff --git a/lib/vendor/symfony/lib/task/generator/.svn/text-base/sfGeneratorBaseTask.class.php.svn-base b/lib/vendor/symfony/lib/task/generator/.svn/text-base/sfGeneratorBaseTask.class.php.svn-base new file mode 100644 index 0000000..163a39d --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/.svn/text-base/sfGeneratorBaseTask.class.php.svn-base @@ -0,0 +1,21 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Base class for all symfony generator tasks. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id$ + */ +abstract class sfGeneratorBaseTask extends sfBaseTask +{ +} diff --git a/lib/vendor/symfony/lib/task/generator/sfGenerateAppTask.class.php b/lib/vendor/symfony/lib/task/generator/sfGenerateAppTask.class.php new file mode 100644 index 0000000..4a8615d --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/sfGenerateAppTask.class.php @@ -0,0 +1,167 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/sfGeneratorBaseTask.class.php'); + +/** + * Generates a new application. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id: sfGenerateAppTask.class.php 24039 2009-11-16 17:52:14Z Kris.Wallsmith $ + */ +class sfGenerateAppTask extends sfGeneratorBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('app', sfCommandArgument::REQUIRED, 'The application name'), + )); + + $this->addOptions(array( + new sfCommandOption('escaping-strategy', null, sfCommandOption::PARAMETER_REQUIRED, 'Output escaping strategy', true), + new sfCommandOption('csrf-secret', null, sfCommandOption::PARAMETER_REQUIRED, 'Secret to use for CSRF protection', true), + )); + + $this->namespace = 'generate'; + $this->name = 'app'; + + $this->briefDescription = 'Generates a new application'; + + $this->detailedDescription = <<discard('.sf'); + $this->getFilesystem()->mirror($skeletonDir.'/app', $appDir, $finder); + + // Create $app.php or index.php if it is our first app + $indexName = 'index'; + $firstApp = !file_exists(sfConfig::get('sf_web_dir').'/index.php'); + if (!$firstApp) + { + $indexName = $app; + } + + if (true === $options['csrf-secret']) + { + $options['csrf-secret'] = sha1(rand(111111111, 99999999).getmypid()); + } + + // Set no_script_name value in settings.yml for production environment + $finder = sfFinder::type('file')->name('settings.yml'); + $this->getFilesystem()->replaceTokens($finder->in($appDir.'/config'), '##', '##', array( + 'NO_SCRIPT_NAME' => $firstApp ? 'true' : 'false', + 'CSRF_SECRET' => sfYamlInline::dump(sfYamlInline::parseScalar($options['csrf-secret'])), + 'ESCAPING_STRATEGY' => sfYamlInline::dump((boolean) sfYamlInline::parseScalar($options['escaping-strategy'])), + 'USE_DATABASE' => sfConfig::has('sf_orm') ? 'true' : 'false', + )); + + $this->getFilesystem()->copy($skeletonDir.'/web/index.php', sfConfig::get('sf_web_dir').'/'.$indexName.'.php'); + $this->getFilesystem()->copy($skeletonDir.'/web/index.php', sfConfig::get('sf_web_dir').'/'.$app.'_dev.php'); + + $this->getFilesystem()->replaceTokens(sfConfig::get('sf_web_dir').'/'.$indexName.'.php', '##', '##', array( + 'APP_NAME' => $app, + 'ENVIRONMENT' => 'prod', + 'IS_DEBUG' => 'false', + 'IP_CHECK' => '', + )); + + $this->getFilesystem()->replaceTokens(sfConfig::get('sf_web_dir').'/'.$app.'_dev.php', '##', '##', array( + 'APP_NAME' => $app, + 'ENVIRONMENT' => 'dev', + 'IS_DEBUG' => 'true', + 'IP_CHECK' => '// this check prevents access to debug front controllers that are deployed by accident to production servers.'.PHP_EOL. + '// feel free to remove this, extend it or make something more sophisticated.'.PHP_EOL. + 'if (!in_array(@$_SERVER[\'REMOTE_ADDR\'], array(\'127.0.0.1\', \'::1\')))'.PHP_EOL. + '{'.PHP_EOL. + ' die(\'You are not allowed to access this file. Check \'.basename(__FILE__).\' for more information.\');'.PHP_EOL. + '}'.PHP_EOL, + )); + + $this->getFilesystem()->rename($appDir.'/config/ApplicationConfiguration.class.php', $appDir.'/config/'.$app.'Configuration.class.php'); + + $this->getFilesystem()->replaceTokens($appDir.'/config/'.$app.'Configuration.class.php', '##', '##', array('APP_NAME' => $app)); + + $fixPerms = new sfProjectPermissionsTask($this->dispatcher, $this->formatter); + $fixPerms->setCommandApplication($this->commandApplication); + $fixPerms->setConfiguration($this->configuration); + $fixPerms->run(); + + // Create test dir + $this->getFilesystem()->mkdirs(sfConfig::get('sf_test_dir').'/functional/'.$app); + } +} diff --git a/lib/vendor/symfony/lib/task/generator/sfGenerateModuleTask.class.php b/lib/vendor/symfony/lib/task/generator/sfGenerateModuleTask.class.php new file mode 100644 index 0000000..7c04caf --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/sfGenerateModuleTask.class.php @@ -0,0 +1,116 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/sfGeneratorBaseTask.class.php'); + +/** + * Generates a new module. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id: sfGenerateModuleTask.class.php 23922 2009-11-14 14:58:38Z fabien $ + */ +class sfGenerateModuleTask extends sfGeneratorBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('application', sfCommandArgument::REQUIRED, 'The application name'), + new sfCommandArgument('module', sfCommandArgument::REQUIRED, 'The module name'), + )); + + $this->namespace = 'generate'; + $this->name = 'module'; + + $this->briefDescription = 'Generates a new module'; + + $this->detailedDescription = <<|INFO] + +You can customize the default skeleton used by the task by creating a +[%sf_data_dir%/skeleton/module|COMMENT] directory. + +The task also creates a functional test stub named +[%sf_test_dir%/functional/%application%/%module%ActionsTest.class.php|COMMENT] +that does not pass by default. + +If a module with the same name already exists in the application, +it throws a [sfCommandException|COMMENT]. +EOF; + } + + /** + * @see sfTask + */ + protected function execute($arguments = array(), $options = array()) + { + $app = $arguments['application']; + $module = $arguments['module']; + + // Validate the module name + if (!preg_match('/^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*$/', $module)) + { + throw new sfCommandException(sprintf('The module name "%s" is invalid.', $module)); + } + + $moduleDir = sfConfig::get('sf_app_module_dir').'/'.$module; + + if (is_dir($moduleDir)) + { + throw new sfCommandException(sprintf('The module "%s" already exists in the "%s" application.', $moduleDir, $app)); + } + + $properties = parse_ini_file(sfConfig::get('sf_config_dir').'/properties.ini', true); + + $constants = array( + 'PROJECT_NAME' => isset($properties['symfony']['name']) ? $properties['symfony']['name'] : 'symfony', + 'APP_NAME' => $app, + 'MODULE_NAME' => $module, + 'AUTHOR_NAME' => isset($properties['symfony']['author']) ? $properties['symfony']['author'] : 'Your name here', + ); + + if (is_readable(sfConfig::get('sf_data_dir').'/skeleton/module')) + { + $skeletonDir = sfConfig::get('sf_data_dir').'/skeleton/module'; + } + else + { + $skeletonDir = dirname(__FILE__).'/skeleton/module'; + } + + // create basic application structure + $finder = sfFinder::type('any')->discard('.sf'); + $this->getFilesystem()->mirror($skeletonDir.'/module', $moduleDir, $finder); + + // create basic test + $this->getFilesystem()->copy($skeletonDir.'/test/actionsTest.php', sfConfig::get('sf_test_dir').'/functional/'.$app.'/'.$module.'ActionsTest.php'); + + // customize test file + $this->getFilesystem()->replaceTokens(sfConfig::get('sf_test_dir').'/functional/'.$app.DIRECTORY_SEPARATOR.$module.'ActionsTest.php', '##', '##', $constants); + + // customize php and yml files + $finder = sfFinder::type('file')->name('*.php', '*.yml'); + $this->getFilesystem()->replaceTokens($finder->in($moduleDir), '##', '##', $constants); + } +} diff --git a/lib/vendor/symfony/lib/task/generator/sfGenerateProjectTask.class.php b/lib/vendor/symfony/lib/task/generator/sfGenerateProjectTask.class.php new file mode 100644 index 0000000..d3d0da3 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/sfGenerateProjectTask.class.php @@ -0,0 +1,169 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/sfGeneratorBaseTask.class.php'); + +/** + * Generates a new project. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id: sfGenerateProjectTask.class.php 30530 2010-08-04 16:38:41Z fabien $ + */ +class sfGenerateProjectTask extends sfGeneratorBaseTask +{ + /** + * @see sfTask + */ + protected function doRun(sfCommandManager $commandManager, $options) + { + $this->process($commandManager, $options); + + return $this->execute($commandManager->getArgumentValues(), $commandManager->getOptionValues()); + } + + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('name', sfCommandArgument::REQUIRED, 'The project name'), + new sfCommandArgument('author', sfCommandArgument::OPTIONAL, 'The project author', 'Your name here'), + )); + + $this->addOptions(array( + new sfCommandOption('orm', null, sfCommandOption::PARAMETER_REQUIRED, 'The ORM to use by default', 'Doctrine'), + new sfCommandOption('installer', null, sfCommandOption::PARAMETER_REQUIRED, 'An installer script to execute', null), + )); + + $this->namespace = 'generate'; + $this->name = 'project'; + + $this->briefDescription = 'Generates a new project'; + + $this->detailedDescription = <<commandApplication && !file_exists($options['installer'])) + { + throw new InvalidArgumentException(sprintf('The installer "%s" does not exist.', $options['installer'])); + } + + // clean orm option + $options['orm'] = ucfirst(strtolower($options['orm'])); + + $this->arguments = $arguments; + $this->options = $options; + + // create basic project structure + $this->installDir(dirname(__FILE__).'/skeleton/project'); + + // update ProjectConfiguration class (use a relative path when the symfony core is nested within the project) + $symfonyCoreAutoload = 0 === strpos(sfConfig::get('sf_symfony_lib_dir'), sfConfig::get('sf_root_dir')) ? + sprintf('dirname(__FILE__).\'/..%s/autoload/sfCoreAutoload.class.php\'', str_replace(sfConfig::get('sf_root_dir'), '', sfConfig::get('sf_symfony_lib_dir'))) : + var_export(sfConfig::get('sf_symfony_lib_dir').'/autoload/sfCoreAutoload.class.php', true); + + $this->replaceTokens(array(sfConfig::get('sf_config_dir')), array('SYMFONY_CORE_AUTOLOAD' => str_replace('\\', '/', $symfonyCoreAutoload))); + + $this->tokens = array( + 'ORM' => $this->options['orm'], + 'PROJECT_NAME' => $this->arguments['name'], + 'AUTHOR_NAME' => $this->arguments['author'], + 'PROJECT_DIR' => sfConfig::get('sf_root_dir'), + ); + + $this->replaceTokens(); + + // execute the choosen ORM installer script + if (in_array($options['orm'], array('Doctrine', 'Propel'))) + { + include dirname(__FILE__).'/../../plugins/sf'.$options['orm'].'Plugin/config/installer.php'; + } + + // execute a custom installer + if ($options['installer'] && $this->commandApplication) + { + if ($this->canRunInstaller($options['installer'])) + { + $this->reloadTasks(); + include $options['installer']; + } + } + + // fix permission for common directories + $fixPerms = new sfProjectPermissionsTask($this->dispatcher, $this->formatter); + $fixPerms->setCommandApplication($this->commandApplication); + $fixPerms->setConfiguration($this->configuration); + $fixPerms->run(); + + $this->replaceTokens(); + } + + protected function canRunInstaller($installer) + { + if (preg_match('#^(https?|ftps?)://#', $installer)) + { + if (ini_get('allow_url_fopen') === false) + { + $this->logSection('generate', sprintf('Cannot run remote installer "%s" because "allow_url_fopen" is off', $installer)); + } + if (ini_get('allow_url_include') === false) + { + $this->logSection('generate', sprintf('Cannot run remote installer "%s" because "allow_url_include" is off', $installer)); + } + return ini_get('allow_url_fopen') && ini_get('allow_url_include'); + } + return true; + } +} diff --git a/lib/vendor/symfony/lib/task/generator/sfGenerateTaskTask.class.php b/lib/vendor/symfony/lib/task/generator/sfGenerateTaskTask.class.php new file mode 100644 index 0000000..17539a0 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/sfGenerateTaskTask.class.php @@ -0,0 +1,190 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Creates a task skeleton + * + * @package symfony + * @subpackage task + * @author Francois Zaninotto + */ +class sfGenerateTaskTask extends sfBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('task_name', sfCommandArgument::REQUIRED, 'The task name (can contain namespace)'), + )); + + $this->addOptions(array( + new sfCommandOption('dir', null, sfCommandOption::PARAMETER_REQUIRED, 'The directory to create the task in', 'lib/task'), + new sfCommandOption('use-database', null, sfCommandOption::PARAMETER_REQUIRED, 'Whether the task needs model initialization to access database', sfConfig::get('sf_orm')), + new sfCommandOption('brief-description', null, sfCommandOption::PARAMETER_REQUIRED, 'A brief task description (appears in task list)'), + )); + + $this->namespace = 'generate'; + $this->name = 'task'; + $this->briefDescription = 'Creates a skeleton class for a new task'; + + $this->detailedDescription = <<addArguments(array( + // new sfCommandArgument('my_arg', sfCommandArgument::REQUIRED, 'My argument'), + // )); + + \$this->addOptions(array( + new sfCommandOption('application', null, sfCommandOption::PARAMETER_REQUIRED, 'The application name'), + new sfCommandOption('env', null, sfCommandOption::PARAMETER_REQUIRED, 'The environment', 'dev'), + new sfCommandOption('connection', null, sfCommandOption::PARAMETER_REQUIRED, 'The connection name', '$defaultConnection'), + // add your own options here + )); + + \$this->namespace = '$namespace'; + \$this->name = '$name'; + \$this->briefDescription = '$briefDescription'; + \$this->detailedDescription = <<configuration); + \$connection = \$databaseManager->getDatabase(\$options['connection'])->getConnection(); + + // add your code here + } +} + +HED; + } + else + { + $content = <<addArguments(array( + // new sfCommandArgument('my_arg', sfCommandArgument::REQUIRED, 'My argument'), + // )); + + // // add your own options here + // \$this->addOptions(array( + // new sfCommandOption('my_option', null, sfCommandOption::PARAMETER_REQUIRED, 'My option'), + // )); + + \$this->namespace = '$namespace'; + \$this->name = '$name'; + \$this->briefDescription = '$briefDescription'; + \$this->detailedDescription = <<getFilesystem()->mkdirs($options['dir']); + } + + $taskFile = sfConfig::get('sf_root_dir').'/'.$options['dir'].'/'.$taskClassName.'.class.php'; + if (is_readable($taskFile)) + { + throw new sfCommandException(sprintf('A "%s" task already exists in "%s".', $taskName, $taskFile)); + } + + $this->logSection('task', sprintf('Creating "%s" task file', $taskFile)); + file_put_contents($taskFile, $content); + } +} diff --git a/lib/vendor/symfony/lib/task/generator/sfGeneratorBaseTask.class.php b/lib/vendor/symfony/lib/task/generator/sfGeneratorBaseTask.class.php new file mode 100644 index 0000000..778eb41 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/sfGeneratorBaseTask.class.php @@ -0,0 +1,21 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Base class for all symfony generator tasks. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id: sfGeneratorBaseTask.class.php 6931 2008-01-04 06:31:12Z fabien $ + */ +abstract class sfGeneratorBaseTask extends sfBaseTask +{ +} diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/.svn/all-wcprops b/lib/vendor/symfony/lib/task/generator/skeleton/.svn/all-wcprops new file mode 100644 index 0000000..a029674 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 56 +/!svn/ver/24593/branches/1.4/lib/task/generator/skeleton +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/.svn/entries b/lib/vendor/symfony/lib/task/generator/skeleton/.svn/entries new file mode 100644 index 0000000..890f592 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/.svn/entries @@ -0,0 +1,37 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/task/generator/skeleton +http://svn.symfony-project.com + + + +2009-11-30T18:50:31.284109Z +24593 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +app +dir + +module +dir + +project +dir + diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/app/.svn/all-wcprops b/lib/vendor/symfony/lib/task/generator/skeleton/app/.svn/all-wcprops new file mode 100644 index 0000000..d40619e --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/app/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 60 +/!svn/ver/24593/branches/1.4/lib/task/generator/skeleton/app +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/app/.svn/entries b/lib/vendor/symfony/lib/task/generator/skeleton/app/.svn/entries new file mode 100644 index 0000000..59fdf80 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/app/.svn/entries @@ -0,0 +1,37 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/task/generator/skeleton/app +http://svn.symfony-project.com + + + +2009-11-30T18:50:31.284109Z +24593 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +app +dir + +lib +dir + +web +dir + diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/app/app/.svn/all-wcprops b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/.svn/all-wcprops new file mode 100644 index 0000000..7aff737 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 64 +/!svn/ver/24593/branches/1.4/lib/task/generator/skeleton/app/app +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/app/app/.svn/entries b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/.svn/entries new file mode 100644 index 0000000..c8b57af --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/.svn/entries @@ -0,0 +1,43 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/task/generator/skeleton/app/app +http://svn.symfony-project.com + + + +2009-11-30T18:50:31.284109Z +24593 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +i18n +dir + +config +dir + +lib +dir + +modules +dir + +templates +dir + diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/all-wcprops b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/all-wcprops new file mode 100644 index 0000000..e395d92 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/all-wcprops @@ -0,0 +1,59 @@ +K 25 +svn:wc:ra_dav:version-url +V 71 +/!svn/ver/24593/branches/1.4/lib/task/generator/skeleton/app/app/config +END +factories.yml +K 25 +svn:wc:ra_dav:version-url +V 85 +/!svn/ver/24434/branches/1.4/lib/task/generator/skeleton/app/app/config/factories.yml +END +app.yml +K 25 +svn:wc:ra_dav:version-url +V 79 +/!svn/ver/24275/branches/1.4/lib/task/generator/skeleton/app/app/config/app.yml +END +settings.yml +K 25 +svn:wc:ra_dav:version-url +V 84 +/!svn/ver/24593/branches/1.4/lib/task/generator/skeleton/app/app/config/settings.yml +END +cache.yml +K 25 +svn:wc:ra_dav:version-url +V 81 +/!svn/ver/24275/branches/1.4/lib/task/generator/skeleton/app/app/config/cache.yml +END +ApplicationConfiguration.class.php +K 25 +svn:wc:ra_dav:version-url +V 106 +/!svn/ver/23881/branches/1.4/lib/task/generator/skeleton/app/app/config/ApplicationConfiguration.class.php +END +routing.yml +K 25 +svn:wc:ra_dav:version-url +V 83 +/!svn/ver/24275/branches/1.4/lib/task/generator/skeleton/app/app/config/routing.yml +END +security.yml +K 25 +svn:wc:ra_dav:version-url +V 84 +/!svn/ver/24275/branches/1.4/lib/task/generator/skeleton/app/app/config/security.yml +END +filters.yml +K 25 +svn:wc:ra_dav:version-url +V 83 +/!svn/ver/24275/branches/1.4/lib/task/generator/skeleton/app/app/config/filters.yml +END +view.yml +K 25 +svn:wc:ra_dav:version-url +V 80 +/!svn/ver/24275/branches/1.4/lib/task/generator/skeleton/app/app/config/view.yml +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/entries b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/entries new file mode 100644 index 0000000..a59c6c3 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/entries @@ -0,0 +1,334 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/task/generator/skeleton/app/app/config +http://svn.symfony-project.com + + + +2009-11-30T18:50:31.284109Z +24593 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +factories.yml +file + + + + +2012-05-10T18:41:04.561549Z +a88ede767c3029a8a089b6cefc0ec057 +2009-11-26T11:52:47.753777Z +24434 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +810 + +app.yml +file + + + + +2012-05-10T18:41:04.561549Z +f41593e40a97733e17f41b71a139bec8 +2009-11-23T15:11:28.124771Z +24275 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +153 + +settings.yml +file + + + + +2012-05-10T18:41:04.565549Z +f4fe565801f7405881abe4aa7f02a7cd +2009-11-30T18:50:31.284109Z +24593 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +1005 + +cache.yml +file + + + + +2012-05-10T18:41:04.573548Z +a57e05bc507e8b528e19b8c40d9c0095 +2009-11-23T15:11:28.124771Z +24275 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +204 + +ApplicationConfiguration.class.php +file + + + + +2012-05-10T18:41:04.573548Z +71ecb1fdfa72ae98e82348b2938ff9e8 +2008-03-19T10:21:16.391410Z +7962 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +116 + +routing.yml +file + + + + +2012-05-10T18:41:04.573548Z +25108de3ae9921c47ae2f4897e0fb75b +2009-11-23T15:11:28.124771Z +24275 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +382 + +security.yml +file + + + + +2012-05-10T18:41:04.669548Z +43e0ff3a33ac86478b3f9a769a848bfb +2009-11-23T15:11:28.124771Z +24275 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +163 + +filters.yml +file + + + + +2012-05-10T18:41:04.669548Z +7e83763cc5fc6e227c2c5e7e5facf9d5 +2009-11-23T15:11:28.124771Z +24275 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +219 + +view.yml +file + + + + +2012-05-10T18:41:04.669548Z +286ac00a00fb38da71776405238fa152 +2009-11-23T15:11:28.124771Z +24275 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +454 + diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/prop-base/ApplicationConfiguration.class.php.svn-base b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/prop-base/ApplicationConfiguration.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/prop-base/ApplicationConfiguration.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/prop-base/app.yml.svn-base b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/prop-base/app.yml.svn-base new file mode 100644 index 0000000..3ca3dd6 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/prop-base/app.yml.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/plain +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/prop-base/cache.yml.svn-base b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/prop-base/cache.yml.svn-base new file mode 100644 index 0000000..3ca3dd6 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/prop-base/cache.yml.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/plain +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/prop-base/factories.yml.svn-base b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/prop-base/factories.yml.svn-base new file mode 100644 index 0000000..3ca3dd6 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/prop-base/factories.yml.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/plain +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/prop-base/filters.yml.svn-base b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/prop-base/filters.yml.svn-base new file mode 100644 index 0000000..3ca3dd6 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/prop-base/filters.yml.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/plain +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/prop-base/routing.yml.svn-base b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/prop-base/routing.yml.svn-base new file mode 100644 index 0000000..3ca3dd6 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/prop-base/routing.yml.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/plain +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/prop-base/security.yml.svn-base b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/prop-base/security.yml.svn-base new file mode 100644 index 0000000..3ca3dd6 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/prop-base/security.yml.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/plain +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/prop-base/settings.yml.svn-base b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/prop-base/settings.yml.svn-base new file mode 100644 index 0000000..3ca3dd6 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/prop-base/settings.yml.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/plain +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/prop-base/view.yml.svn-base b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/prop-base/view.yml.svn-base new file mode 100644 index 0000000..3ca3dd6 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/prop-base/view.yml.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/plain +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/text-base/ApplicationConfiguration.class.php.svn-base b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/text-base/ApplicationConfiguration.class.php.svn-base new file mode 100644 index 0000000..d9ebc3f --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/text-base/ApplicationConfiguration.class.php.svn-base @@ -0,0 +1,8 @@ + + web_debug: true + cache: false + no_script_name: false + etag: false + +test: + .settings: + error_reporting: + cache: false + web_debug: false + no_script_name: false + etag: false + +all: + .settings: + # Form security secret (CSRF protection) + csrf_secret: ##CSRF_SECRET## + + # Output escaping settings + escaping_strategy: ##ESCAPING_STRATEGY## + escaping_method: ESC_SPECIALCHARS + + # Enable the database manager + use_database: ##USE_DATABASE## diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/text-base/view.yml.svn-base b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/text-base/view.yml.svn-base new file mode 100644 index 0000000..407733d --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/.svn/text-base/view.yml.svn-base @@ -0,0 +1,20 @@ +# You can find more information about this file on the symfony website: +# http://www.symfony-project.org/reference/1_4/en/13-View + +default: + http_metas: + content-type: text/html + + metas: + #title: symfony project + #description: symfony project + #keywords: symfony, project + #language: en + #robots: index, follow + + stylesheets: [main.css] + + javascripts: [] + + has_layout: true + layout: layout diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/ApplicationConfiguration.class.php b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/ApplicationConfiguration.class.php new file mode 100644 index 0000000..d9ebc3f --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/ApplicationConfiguration.class.php @@ -0,0 +1,8 @@ + + web_debug: true + cache: false + no_script_name: false + etag: false + +test: + .settings: + error_reporting: + cache: false + web_debug: false + no_script_name: false + etag: false + +all: + .settings: + # Form security secret (CSRF protection) + csrf_secret: ##CSRF_SECRET## + + # Output escaping settings + escaping_strategy: ##ESCAPING_STRATEGY## + escaping_method: ESC_SPECIALCHARS + + # Enable the database manager + use_database: ##USE_DATABASE## diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/view.yml b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/view.yml new file mode 100644 index 0000000..407733d --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/config/view.yml @@ -0,0 +1,20 @@ +# You can find more information about this file on the symfony website: +# http://www.symfony-project.org/reference/1_4/en/13-View + +default: + http_metas: + content-type: text/html + + metas: + #title: symfony project + #description: symfony project + #keywords: symfony, project + #language: en + #robots: index, follow + + stylesheets: [main.css] + + javascripts: [] + + has_layout: true + layout: layout diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/app/app/i18n/.sf b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/i18n/.sf new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/app/app/i18n/.svn/all-wcprops b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/i18n/.svn/all-wcprops new file mode 100644 index 0000000..7d604bd --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/i18n/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 69 +/!svn/ver/23881/branches/1.4/lib/task/generator/skeleton/app/app/i18n +END +.sf +K 25 +svn:wc:ra_dav:version-url +V 73 +/!svn/ver/23881/branches/1.4/lib/task/generator/skeleton/app/app/i18n/.sf +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/app/app/i18n/.svn/entries b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/i18n/.svn/entries new file mode 100644 index 0000000..684654e --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/i18n/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/task/generator/skeleton/app/app/i18n +http://svn.symfony-project.com + + + +2006-02-08T15:30:14.843948Z +774 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +.sf +file + + + + +2012-05-10T18:41:04.453547Z +d41d8cd98f00b204e9800998ecf8427e +2005-10-18T14:27:36.467326Z +1 +fabien + + + + + + + + + + + + + + + + + + + + + +0 + diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/app/app/i18n/.svn/text-base/.sf.svn-base b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/i18n/.svn/text-base/.sf.svn-base new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/app/app/lib/.sf/.svn/all-wcprops b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/lib/.sf/.svn/all-wcprops new file mode 100644 index 0000000..b1a5e5c --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/lib/.sf/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 72 +/!svn/ver/23881/branches/1.4/lib/task/generator/skeleton/app/app/lib/.sf +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/app/app/lib/.sf/.svn/entries b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/lib/.sf/.svn/entries new file mode 100644 index 0000000..4774924 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/lib/.sf/.svn/entries @@ -0,0 +1,28 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/task/generator/skeleton/app/app/lib/.sf +http://svn.symfony-project.com + + + +2006-08-21T08:44:19.218526Z +1675 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/app/app/lib/.svn/all-wcprops b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/lib/.svn/all-wcprops new file mode 100644 index 0000000..0cab11f --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/lib/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 68 +/!svn/ver/23881/branches/1.4/lib/task/generator/skeleton/app/app/lib +END +myUser.class.php +K 25 +svn:wc:ra_dav:version-url +V 85 +/!svn/ver/23881/branches/1.4/lib/task/generator/skeleton/app/app/lib/myUser.class.php +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/app/app/lib/.svn/entries b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/lib/.svn/entries new file mode 100644 index 0000000..53b10d0 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/lib/.svn/entries @@ -0,0 +1,65 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/task/generator/skeleton/app/app/lib +http://svn.symfony-project.com + + + +2006-08-21T17:22:01.618890Z +1721 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +.sf +dir + +myUser.class.php +file + + + + +2012-05-10T18:41:04.693548Z +215548048bbbdd100411afc00252a797 +2006-08-21T17:22:01.618890Z +1721 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +52 + diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/app/app/lib/.svn/prop-base/myUser.class.php.svn-base b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/lib/.svn/prop-base/myUser.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/lib/.svn/prop-base/myUser.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/app/app/lib/.svn/text-base/myUser.class.php.svn-base b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/lib/.svn/text-base/myUser.class.php.svn-base new file mode 100644 index 0000000..4c79302 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/lib/.svn/text-base/myUser.class.php.svn-base @@ -0,0 +1,5 @@ + + + + + + + + + + + + + + diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/app/app/templates/layout.php b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/templates/layout.php new file mode 100644 index 0000000..b37659b --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/app/app/templates/layout.php @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/app/lib/.svn/all-wcprops b/lib/vendor/symfony/lib/task/generator/skeleton/app/lib/.svn/all-wcprops new file mode 100644 index 0000000..5c73ec9 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/app/lib/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 64 +/!svn/ver/23881/branches/1.4/lib/task/generator/skeleton/app/lib +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/app/lib/.svn/entries b/lib/vendor/symfony/lib/task/generator/skeleton/app/lib/.svn/entries new file mode 100644 index 0000000..58c9330 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/app/lib/.svn/entries @@ -0,0 +1,28 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/task/generator/skeleton/app/lib +http://svn.symfony-project.com + + + +2008-03-19T10:21:16.391410Z +7962 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/app/web/.svn/all-wcprops b/lib/vendor/symfony/lib/task/generator/skeleton/app/web/.svn/all-wcprops new file mode 100644 index 0000000..c937c2b --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/app/web/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 64 +/!svn/ver/23881/branches/1.4/lib/task/generator/skeleton/app/web +END +index.php +K 25 +svn:wc:ra_dav:version-url +V 74 +/!svn/ver/23881/branches/1.4/lib/task/generator/skeleton/app/web/index.php +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/app/web/.svn/entries b/lib/vendor/symfony/lib/task/generator/skeleton/app/web/.svn/entries new file mode 100644 index 0000000..4c17090 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/app/web/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/task/generator/skeleton/app/web +http://svn.symfony-project.com + + + +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +index.php +file + + + + +2012-05-10T18:41:04.993577Z +2ba3c8dc842a4a53bf32186d792c1f8c +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +270 + diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/app/web/.svn/prop-base/index.php.svn-base b/lib/vendor/symfony/lib/task/generator/skeleton/app/web/.svn/prop-base/index.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/app/web/.svn/prop-base/index.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/app/web/.svn/text-base/index.php.svn-base b/lib/vendor/symfony/lib/task/generator/skeleton/app/web/.svn/text-base/index.php.svn-base new file mode 100644 index 0000000..5b19abd --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/app/web/.svn/text-base/index.php.svn-base @@ -0,0 +1,7 @@ +dispatch(); diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/app/web/index.php b/lib/vendor/symfony/lib/task/generator/skeleton/app/web/index.php new file mode 100644 index 0000000..5b19abd --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/app/web/index.php @@ -0,0 +1,7 @@ +dispatch(); diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/module/.svn/all-wcprops b/lib/vendor/symfony/lib/task/generator/skeleton/module/.svn/all-wcprops new file mode 100644 index 0000000..9730446 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/module/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 63 +/!svn/ver/23881/branches/1.4/lib/task/generator/skeleton/module +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/module/.svn/entries b/lib/vendor/symfony/lib/task/generator/skeleton/module/.svn/entries new file mode 100644 index 0000000..b0c69a9 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/module/.svn/entries @@ -0,0 +1,34 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/task/generator/skeleton/module +http://svn.symfony-project.com + + + +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +test +dir + +module +dir + diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/module/module/.svn/all-wcprops b/lib/vendor/symfony/lib/task/generator/skeleton/module/module/.svn/all-wcprops new file mode 100644 index 0000000..876e4b3 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/module/module/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 70 +/!svn/ver/23881/branches/1.4/lib/task/generator/skeleton/module/module +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/module/module/.svn/entries b/lib/vendor/symfony/lib/task/generator/skeleton/module/module/.svn/entries new file mode 100644 index 0000000..596367b --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/module/module/.svn/entries @@ -0,0 +1,34 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/task/generator/skeleton/module/module +http://svn.symfony-project.com + + + +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions +dir + +templates +dir + diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/module/module/actions/.svn/all-wcprops b/lib/vendor/symfony/lib/task/generator/skeleton/module/module/actions/.svn/all-wcprops new file mode 100644 index 0000000..bc111ed --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/module/module/actions/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 78 +/!svn/ver/23881/branches/1.4/lib/task/generator/skeleton/module/module/actions +END +actions.class.php +K 25 +svn:wc:ra_dav:version-url +V 96 +/!svn/ver/23881/branches/1.4/lib/task/generator/skeleton/module/module/actions/actions.class.php +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/module/module/actions/.svn/entries b/lib/vendor/symfony/lib/task/generator/skeleton/module/module/actions/.svn/entries new file mode 100644 index 0000000..85e2ee9 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/module/module/actions/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/task/generator/skeleton/module/module/actions +http://svn.symfony-project.com + + + +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions.class.php +file + + + + +2012-05-10T18:41:05.333551Z +52d33e9b31358cd8b35059ef90958a25 +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +468 + diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/module/module/actions/.svn/prop-base/actions.class.php.svn-base b/lib/vendor/symfony/lib/task/generator/skeleton/module/module/actions/.svn/prop-base/actions.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/module/module/actions/.svn/prop-base/actions.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/module/module/actions/.svn/text-base/actions.class.php.svn-base b/lib/vendor/symfony/lib/task/generator/skeleton/module/module/actions/.svn/text-base/actions.class.php.svn-base new file mode 100644 index 0000000..5800dab --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/module/module/actions/.svn/text-base/actions.class.php.svn-base @@ -0,0 +1,22 @@ +forward('default', 'module'); + } +} diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/module/module/actions/actions.class.php b/lib/vendor/symfony/lib/task/generator/skeleton/module/module/actions/actions.class.php new file mode 100644 index 0000000..17e6ba2 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/module/module/actions/actions.class.php @@ -0,0 +1,22 @@ +forward('default', 'module'); + } +} diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/module/module/templates/.svn/all-wcprops b/lib/vendor/symfony/lib/task/generator/skeleton/module/module/templates/.svn/all-wcprops new file mode 100644 index 0000000..e843d1d --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/module/module/templates/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 80 +/!svn/ver/23881/branches/1.4/lib/task/generator/skeleton/module/module/templates +END +indexSuccess.php +K 25 +svn:wc:ra_dav:version-url +V 97 +/!svn/ver/23881/branches/1.4/lib/task/generator/skeleton/module/module/templates/indexSuccess.php +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/module/module/templates/.svn/entries b/lib/vendor/symfony/lib/task/generator/skeleton/module/module/templates/.svn/entries new file mode 100644 index 0000000..f09b5f6 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/module/module/templates/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/task/generator/skeleton/module/module/templates +http://svn.symfony-project.com + + + +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +indexSuccess.php +file + + + + +2012-05-10T18:41:05.405546Z +d41d8cd98f00b204e9800998ecf8427e +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +0 + diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/module/module/templates/.svn/prop-base/indexSuccess.php.svn-base b/lib/vendor/symfony/lib/task/generator/skeleton/module/module/templates/.svn/prop-base/indexSuccess.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/module/module/templates/.svn/prop-base/indexSuccess.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/module/module/templates/.svn/text-base/indexSuccess.php.svn-base b/lib/vendor/symfony/lib/task/generator/skeleton/module/module/templates/.svn/text-base/indexSuccess.php.svn-base new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/module/module/templates/indexSuccess.php b/lib/vendor/symfony/lib/task/generator/skeleton/module/module/templates/indexSuccess.php new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/module/test/.svn/all-wcprops b/lib/vendor/symfony/lib/task/generator/skeleton/module/test/.svn/all-wcprops new file mode 100644 index 0000000..9ba16b3 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/module/test/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 68 +/!svn/ver/23881/branches/1.4/lib/task/generator/skeleton/module/test +END +actionsTest.php +K 25 +svn:wc:ra_dav:version-url +V 84 +/!svn/ver/23881/branches/1.4/lib/task/generator/skeleton/module/test/actionsTest.php +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/module/test/.svn/entries b/lib/vendor/symfony/lib/task/generator/skeleton/module/test/.svn/entries new file mode 100644 index 0000000..353343d --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/module/test/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/task/generator/skeleton/module/test +http://svn.symfony-project.com + + + +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actionsTest.php +file + + + + +2012-05-10T18:41:05.273549Z +bf5523c5392d729f5343194eb0fc5404 +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +413 + diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/module/test/.svn/prop-base/actionsTest.php.svn-base b/lib/vendor/symfony/lib/task/generator/skeleton/module/test/.svn/prop-base/actionsTest.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/module/test/.svn/prop-base/actionsTest.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/module/test/.svn/text-base/actionsTest.php.svn-base b/lib/vendor/symfony/lib/task/generator/skeleton/module/test/.svn/text-base/actionsTest.php.svn-base new file mode 100644 index 0000000..f487ff8 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/module/test/.svn/text-base/actionsTest.php.svn-base @@ -0,0 +1,19 @@ + + get('/##MODULE_NAME##/index')-> + + with('request')->begin()-> + isParameter('module', '##MODULE_NAME##')-> + isParameter('action', 'index')-> + end()-> + + with('response')->begin()-> + isStatusCode(200)-> + checkElement('body', '!/This is a temporary page/')-> + end() +; diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/module/test/actionsTest.php b/lib/vendor/symfony/lib/task/generator/skeleton/module/test/actionsTest.php new file mode 100644 index 0000000..f487ff8 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/module/test/actionsTest.php @@ -0,0 +1,19 @@ + + get('/##MODULE_NAME##/index')-> + + with('request')->begin()-> + isParameter('module', '##MODULE_NAME##')-> + isParameter('action', 'index')-> + end()-> + + with('response')->begin()-> + isStatusCode(200)-> + checkElement('body', '!/This is a temporary page/')-> + end() +; diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/.svn/all-wcprops b/lib/vendor/symfony/lib/task/generator/skeleton/project/.svn/all-wcprops new file mode 100644 index 0000000..d8279c0 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/project/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 64 +/!svn/ver/23881/branches/1.4/lib/task/generator/skeleton/project +END +symfony +K 25 +svn:wc:ra_dav:version-url +V 72 +/!svn/ver/23881/branches/1.4/lib/task/generator/skeleton/project/symfony +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/.svn/entries b/lib/vendor/symfony/lib/task/generator/skeleton/project/.svn/entries new file mode 100644 index 0000000..eac7675 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/project/.svn/entries @@ -0,0 +1,89 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/task/generator/skeleton/project +http://svn.symfony-project.com + + + +2009-10-25T13:11:48.154419Z +23322 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +test +dir + +log +dir + +plugins +dir + +apps +dir + +cache +dir + +symfony +file + + + + +2012-05-10T18:41:06.661547Z +ec0244c82ba8f52899e48b4e473f78e8 +2008-11-27T18:10:40.723278Z +13444 +fabien + + + + + + + + + + + + + + + + + + + + + +446 + +config +dir + +lib +dir + +data +dir + +web +dir + diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/.svn/text-base/symfony.svn-base b/lib/vendor/symfony/lib/task/generator/skeleton/project/.svn/text-base/symfony.svn-base new file mode 100644 index 0000000..e28569c --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/project/.svn/text-base/symfony.svn-base @@ -0,0 +1,14 @@ +#!/usr/bin/env php + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +chdir(dirname(__FILE__)); +require_once(dirname(__FILE__).'/config/ProjectConfiguration.class.php'); +include(sfCoreAutoload::getInstance()->getBaseDir().'/command/cli.php'); diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/apps/.sf b/lib/vendor/symfony/lib/task/generator/skeleton/project/apps/.sf new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/apps/.svn/all-wcprops b/lib/vendor/symfony/lib/task/generator/skeleton/project/apps/.svn/all-wcprops new file mode 100644 index 0000000..cd1e951 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/project/apps/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 69 +/!svn/ver/23881/branches/1.4/lib/task/generator/skeleton/project/apps +END +.sf +K 25 +svn:wc:ra_dav:version-url +V 73 +/!svn/ver/23881/branches/1.4/lib/task/generator/skeleton/project/apps/.sf +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/apps/.svn/entries b/lib/vendor/symfony/lib/task/generator/skeleton/project/apps/.svn/entries new file mode 100644 index 0000000..3f18b8b --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/project/apps/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/task/generator/skeleton/project/apps +http://svn.symfony-project.com + + + +2006-01-09T15:49:12.017398Z +355 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +.sf +file + + + + +2012-05-10T18:41:05.989552Z +d41d8cd98f00b204e9800998ecf8427e +2006-01-09T15:49:12.017398Z +355 +fabien + + + + + + + + + + + + + + + + + + + + + +0 + diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/apps/.svn/text-base/.sf.svn-base b/lib/vendor/symfony/lib/task/generator/skeleton/project/apps/.svn/text-base/.sf.svn-base new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/cache/.sf b/lib/vendor/symfony/lib/task/generator/skeleton/project/cache/.sf new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/cache/.svn/all-wcprops b/lib/vendor/symfony/lib/task/generator/skeleton/project/cache/.svn/all-wcprops new file mode 100644 index 0000000..aedd09c --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/project/cache/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 70 +/!svn/ver/23881/branches/1.4/lib/task/generator/skeleton/project/cache +END +.sf +K 25 +svn:wc:ra_dav:version-url +V 74 +/!svn/ver/23881/branches/1.4/lib/task/generator/skeleton/project/cache/.sf +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/cache/.svn/entries b/lib/vendor/symfony/lib/task/generator/skeleton/project/cache/.svn/entries new file mode 100644 index 0000000..d7ce8a1 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/project/cache/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/task/generator/skeleton/project/cache +http://svn.symfony-project.com + + + +2005-10-18T14:27:36.467326Z +1 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +.sf +file + + + + +2012-05-10T18:41:06.025552Z +d41d8cd98f00b204e9800998ecf8427e +2005-10-18T14:27:36.467326Z +1 +fabien + + + + + + + + + + + + + + + + + + + + + +0 + diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/cache/.svn/text-base/.sf.svn-base b/lib/vendor/symfony/lib/task/generator/skeleton/project/cache/.svn/text-base/.sf.svn-base new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/config/.svn/all-wcprops b/lib/vendor/symfony/lib/task/generator/skeleton/project/config/.svn/all-wcprops new file mode 100644 index 0000000..16ce60d --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/project/config/.svn/all-wcprops @@ -0,0 +1,23 @@ +K 25 +svn:wc:ra_dav:version-url +V 71 +/!svn/ver/23881/branches/1.4/lib/task/generator/skeleton/project/config +END +rsync_exclude.txt +K 25 +svn:wc:ra_dav:version-url +V 89 +/!svn/ver/23881/branches/1.4/lib/task/generator/skeleton/project/config/rsync_exclude.txt +END +ProjectConfiguration.class.php +K 25 +svn:wc:ra_dav:version-url +V 102 +/!svn/ver/23881/branches/1.4/lib/task/generator/skeleton/project/config/ProjectConfiguration.class.php +END +properties.ini +K 25 +svn:wc:ra_dav:version-url +V 86 +/!svn/ver/23881/branches/1.4/lib/task/generator/skeleton/project/config/properties.ini +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/config/.svn/entries b/lib/vendor/symfony/lib/task/generator/skeleton/project/config/.svn/entries new file mode 100644 index 0000000..d1f87f9 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/project/config/.svn/entries @@ -0,0 +1,130 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/task/generator/skeleton/project/config +http://svn.symfony-project.com + + + +2009-10-25T13:11:48.154419Z +23322 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +rsync_exclude.txt +file + + + + +2012-05-10T18:41:06.089550Z +78ae708496b5f45951a083f26704d03d +2009-05-26T18:33:11.500660Z +18661 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +128 + +ProjectConfiguration.class.php +file + + + + +2012-05-10T18:41:06.089550Z +155135c15472613316e1cb9c97631dcc +2009-06-15T12:47:22.935270Z +19273 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +172 + +properties.ini +file + + + + +2012-05-10T18:41:06.089550Z +e92cbb54e33fbbce0b06f9b36eaa6e7e +2009-10-25T13:11:48.154419Z +23322 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +73 + diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/config/.svn/prop-base/ProjectConfiguration.class.php.svn-base b/lib/vendor/symfony/lib/task/generator/skeleton/project/config/.svn/prop-base/ProjectConfiguration.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/project/config/.svn/prop-base/ProjectConfiguration.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/config/.svn/prop-base/properties.ini.svn-base b/lib/vendor/symfony/lib/task/generator/skeleton/project/config/.svn/prop-base/properties.ini.svn-base new file mode 100644 index 0000000..3ca3dd6 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/project/config/.svn/prop-base/properties.ini.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/plain +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/config/.svn/prop-base/rsync_exclude.txt.svn-base b/lib/vendor/symfony/lib/task/generator/skeleton/project/config/.svn/prop-base/rsync_exclude.txt.svn-base new file mode 100644 index 0000000..3ca3dd6 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/project/config/.svn/prop-base/rsync_exclude.txt.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/plain +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/config/.svn/text-base/ProjectConfiguration.class.php.svn-base b/lib/vendor/symfony/lib/task/generator/skeleton/project/config/.svn/text-base/ProjectConfiguration.class.php.svn-base new file mode 100644 index 0000000..9c9537e --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/project/config/.svn/text-base/ProjectConfiguration.class.php.svn-base @@ -0,0 +1,11 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +chdir(dirname(__FILE__)); +require_once(dirname(__FILE__).'/config/ProjectConfiguration.class.php'); +include(sfCoreAutoload::getInstance()->getBaseDir().'/command/cli.php'); diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/test/.sf b/lib/vendor/symfony/lib/task/generator/skeleton/project/test/.sf new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/test/.svn/all-wcprops b/lib/vendor/symfony/lib/task/generator/skeleton/project/test/.svn/all-wcprops new file mode 100644 index 0000000..30fdefc --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/project/test/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 69 +/!svn/ver/23881/branches/1.4/lib/task/generator/skeleton/project/test +END +.sf +K 25 +svn:wc:ra_dav:version-url +V 73 +/!svn/ver/23881/branches/1.4/lib/task/generator/skeleton/project/test/.sf +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/test/.svn/entries b/lib/vendor/symfony/lib/task/generator/skeleton/project/test/.svn/entries new file mode 100644 index 0000000..7c68f17 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/project/test/.svn/entries @@ -0,0 +1,71 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/task/generator/skeleton/project/test +http://svn.symfony-project.com + + + +2009-10-20T13:20:17.233574Z +23205 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +unit +dir + +functional +dir + +.sf +file + + + + +2012-05-10T18:41:05.769547Z +d41d8cd98f00b204e9800998ecf8427e +2006-02-27T09:34:26.829181Z +901 +fabien + + + + + + + + + + + + + + + + + + + + + +0 + +bootstrap +dir + diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/test/.svn/text-base/.sf.svn-base b/lib/vendor/symfony/lib/task/generator/skeleton/project/test/.svn/text-base/.sf.svn-base new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/test/bootstrap/.svn/all-wcprops b/lib/vendor/symfony/lib/task/generator/skeleton/project/test/bootstrap/.svn/all-wcprops new file mode 100644 index 0000000..90262d6 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/project/test/bootstrap/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 79 +/!svn/ver/23881/branches/1.4/lib/task/generator/skeleton/project/test/bootstrap +END +unit.php +K 25 +svn:wc:ra_dav:version-url +V 88 +/!svn/ver/23881/branches/1.4/lib/task/generator/skeleton/project/test/bootstrap/unit.php +END +functional.php +K 25 +svn:wc:ra_dav:version-url +V 94 +/!svn/ver/23881/branches/1.4/lib/task/generator/skeleton/project/test/bootstrap/functional.php +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/test/bootstrap/.svn/entries b/lib/vendor/symfony/lib/task/generator/skeleton/project/test/bootstrap/.svn/entries new file mode 100644 index 0000000..12ae05b --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/project/test/bootstrap/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/task/generator/skeleton/project/test/bootstrap +http://svn.symfony-project.com + + + +2009-10-20T13:20:17.233574Z +23205 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +unit.php +file + + + + +2012-05-10T18:41:05.757548Z +ef14875d3a428204d066f5a4cea1a659 +2009-10-20T13:20:17.233574Z +23205 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +937 + +functional.php +file + + + + +2012-05-10T18:41:05.761550Z +9351bf99d8167cd9b73119625341e637 +2008-03-19T10:21:16.391410Z +7962 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +792 + diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/test/bootstrap/.svn/prop-base/functional.php.svn-base b/lib/vendor/symfony/lib/task/generator/skeleton/project/test/bootstrap/.svn/prop-base/functional.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/project/test/bootstrap/.svn/prop-base/functional.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/test/bootstrap/.svn/prop-base/unit.php.svn-base b/lib/vendor/symfony/lib/task/generator/skeleton/project/test/bootstrap/.svn/prop-base/unit.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/project/test/bootstrap/.svn/prop-base/unit.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/test/bootstrap/.svn/text-base/functional.php.svn-base b/lib/vendor/symfony/lib/task/generator/skeleton/project/test/bootstrap/.svn/text-base/functional.php.svn-base new file mode 100644 index 0000000..7e174f8 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/project/test/bootstrap/.svn/text-base/functional.php.svn-base @@ -0,0 +1,26 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +// guess current application +if (!isset($app)) +{ + $traces = debug_backtrace(); + $caller = $traces[0]; + + $dirPieces = explode(DIRECTORY_SEPARATOR, dirname($caller['file'])); + $app = array_pop($dirPieces); +} + +require_once dirname(__FILE__).'/../../config/ProjectConfiguration.class.php'; +$configuration = ProjectConfiguration::getApplicationConfiguration($app, 'test', isset($debug) ? $debug : true); +sfContext::createInstance($configuration); + +// remove all cache +sfToolkit::clearDirectory(sfConfig::get('sf_app_cache_dir')); diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/test/bootstrap/.svn/text-base/unit.php.svn-base b/lib/vendor/symfony/lib/task/generator/skeleton/project/test/bootstrap/.svn/text-base/unit.php.svn-base new file mode 100644 index 0000000..0560115 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/project/test/bootstrap/.svn/text-base/unit.php.svn-base @@ -0,0 +1,26 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$_test_dir = realpath(dirname(__FILE__).'/..'); + +// configuration +require_once dirname(__FILE__).'/../../config/ProjectConfiguration.class.php'; +$configuration = ProjectConfiguration::hasActive() ? ProjectConfiguration::getActive() : new ProjectConfiguration(realpath($_test_dir.'/..')); + +// autoloader +$autoload = sfSimpleAutoload::getInstance(sfConfig::get('sf_cache_dir').'/project_autoload.cache'); +$autoload->loadConfiguration(sfFinder::type('file')->name('autoload.yml')->in(array( + sfConfig::get('sf_symfony_lib_dir').'/config/config', + sfConfig::get('sf_config_dir'), +))); +$autoload->register(); + +// lime +include $configuration->getSymfonyLibDir().'/vendor/lime/lime.php'; diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/test/bootstrap/functional.php b/lib/vendor/symfony/lib/task/generator/skeleton/project/test/bootstrap/functional.php new file mode 100644 index 0000000..7e174f8 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/project/test/bootstrap/functional.php @@ -0,0 +1,26 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +// guess current application +if (!isset($app)) +{ + $traces = debug_backtrace(); + $caller = $traces[0]; + + $dirPieces = explode(DIRECTORY_SEPARATOR, dirname($caller['file'])); + $app = array_pop($dirPieces); +} + +require_once dirname(__FILE__).'/../../config/ProjectConfiguration.class.php'; +$configuration = ProjectConfiguration::getApplicationConfiguration($app, 'test', isset($debug) ? $debug : true); +sfContext::createInstance($configuration); + +// remove all cache +sfToolkit::clearDirectory(sfConfig::get('sf_app_cache_dir')); diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/test/bootstrap/unit.php b/lib/vendor/symfony/lib/task/generator/skeleton/project/test/bootstrap/unit.php new file mode 100644 index 0000000..0560115 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/project/test/bootstrap/unit.php @@ -0,0 +1,26 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$_test_dir = realpath(dirname(__FILE__).'/..'); + +// configuration +require_once dirname(__FILE__).'/../../config/ProjectConfiguration.class.php'; +$configuration = ProjectConfiguration::hasActive() ? ProjectConfiguration::getActive() : new ProjectConfiguration(realpath($_test_dir.'/..')); + +// autoloader +$autoload = sfSimpleAutoload::getInstance(sfConfig::get('sf_cache_dir').'/project_autoload.cache'); +$autoload->loadConfiguration(sfFinder::type('file')->name('autoload.yml')->in(array( + sfConfig::get('sf_symfony_lib_dir').'/config/config', + sfConfig::get('sf_config_dir'), +))); +$autoload->register(); + +// lime +include $configuration->getSymfonyLibDir().'/vendor/lime/lime.php'; diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/test/functional/.sf b/lib/vendor/symfony/lib/task/generator/skeleton/project/test/functional/.sf new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/test/functional/.svn/all-wcprops b/lib/vendor/symfony/lib/task/generator/skeleton/project/test/functional/.svn/all-wcprops new file mode 100644 index 0000000..4ea1e4a --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/project/test/functional/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 80 +/!svn/ver/23881/branches/1.4/lib/task/generator/skeleton/project/test/functional +END +.sf +K 25 +svn:wc:ra_dav:version-url +V 84 +/!svn/ver/23881/branches/1.4/lib/task/generator/skeleton/project/test/functional/.sf +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/test/functional/.svn/entries b/lib/vendor/symfony/lib/task/generator/skeleton/project/test/functional/.svn/entries new file mode 100644 index 0000000..d26a76b --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/project/test/functional/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/task/generator/skeleton/project/test/functional +http://svn.symfony-project.com + + + +2006-10-17T12:05:52.448695Z +2419 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +.sf +file + + + + +2012-05-10T18:41:05.677548Z +d41d8cd98f00b204e9800998ecf8427e +2006-10-17T12:05:52.448695Z +2419 +fabien + + + + + + + + + + + + + + + + + + + + + +0 + diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/test/functional/.svn/text-base/.sf.svn-base b/lib/vendor/symfony/lib/task/generator/skeleton/project/test/functional/.svn/text-base/.sf.svn-base new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/test/unit/.sf b/lib/vendor/symfony/lib/task/generator/skeleton/project/test/unit/.sf new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/test/unit/.svn/all-wcprops b/lib/vendor/symfony/lib/task/generator/skeleton/project/test/unit/.svn/all-wcprops new file mode 100644 index 0000000..54b50dd --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/project/test/unit/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 74 +/!svn/ver/23881/branches/1.4/lib/task/generator/skeleton/project/test/unit +END +.sf +K 25 +svn:wc:ra_dav:version-url +V 78 +/!svn/ver/23881/branches/1.4/lib/task/generator/skeleton/project/test/unit/.sf +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/test/unit/.svn/entries b/lib/vendor/symfony/lib/task/generator/skeleton/project/test/unit/.svn/entries new file mode 100644 index 0000000..2d96dc2 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/project/test/unit/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/task/generator/skeleton/project/test/unit +http://svn.symfony-project.com + + + +2006-10-17T12:05:52.448695Z +2419 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +.sf +file + + + + +2012-05-10T18:41:05.641548Z +d41d8cd98f00b204e9800998ecf8427e +2006-10-17T12:05:52.448695Z +2419 +fabien + + + + + + + + + + + + + + + + + + + + + +0 + diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/test/unit/.svn/text-base/.sf.svn-base b/lib/vendor/symfony/lib/task/generator/skeleton/project/test/unit/.svn/text-base/.sf.svn-base new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/web/.htaccess b/lib/vendor/symfony/lib/task/generator/skeleton/project/web/.htaccess new file mode 100644 index 0000000..ae05df6 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/project/web/.htaccess @@ -0,0 +1,22 @@ +Options +FollowSymLinks +ExecCGI + + + RewriteEngine On + + # uncomment the following line, if you are having trouble + # getting no_script_name to work + #RewriteBase / + + # we skip all files with .something + #RewriteCond %{REQUEST_URI} \..+$ + #RewriteCond %{REQUEST_URI} !\.html$ + #RewriteRule .* - [L] + + # we check if the .html version is here (caching) + RewriteRule ^$ index.html [QSA] + RewriteRule ^([^.]+)$ $1.html [QSA] + RewriteCond %{REQUEST_FILENAME} !-f + + # no, so we redirect to our front web controller + RewriteRule ^(.*)$ index.php [QSA,L] + diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/web/.svn/all-wcprops b/lib/vendor/symfony/lib/task/generator/skeleton/project/web/.svn/all-wcprops new file mode 100644 index 0000000..0a1690e --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/project/web/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 68 +/!svn/ver/23881/branches/1.4/lib/task/generator/skeleton/project/web +END +robots.txt +K 25 +svn:wc:ra_dav:version-url +V 79 +/!svn/ver/23881/branches/1.4/lib/task/generator/skeleton/project/web/robots.txt +END +.htaccess +K 25 +svn:wc:ra_dav:version-url +V 78 +/!svn/ver/23881/branches/1.4/lib/task/generator/skeleton/project/web/.htaccess +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/web/.svn/entries b/lib/vendor/symfony/lib/task/generator/skeleton/project/web/.svn/entries new file mode 100644 index 0000000..a38a2f6 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/project/web/.svn/entries @@ -0,0 +1,108 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/task/generator/skeleton/project/web +http://svn.symfony-project.com + + + +2008-02-27T21:00:15.615729Z +7638 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +images +dir + +robots.txt +file + + + + +2012-05-10T18:41:06.621548Z +58358960364e26d020c98d05aa8f27ad +2006-11-17T19:41:57.127276Z +2749 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +26 + +uploads +dir + +css +dir + +.htaccess +file + + + + +2012-05-10T18:41:06.621548Z +06b539362d5de8d6a15d520abefc8cca +2008-02-27T21:00:15.615729Z +7638 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +595 + +js +dir + diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/web/.svn/prop-base/.htaccess.svn-base b/lib/vendor/symfony/lib/task/generator/skeleton/project/web/.svn/prop-base/.htaccess.svn-base new file mode 100644 index 0000000..3ca3dd6 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/project/web/.svn/prop-base/.htaccess.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/plain +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/web/.svn/prop-base/robots.txt.svn-base b/lib/vendor/symfony/lib/task/generator/skeleton/project/web/.svn/prop-base/robots.txt.svn-base new file mode 100644 index 0000000..3ca3dd6 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/project/web/.svn/prop-base/robots.txt.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/plain +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/web/.svn/text-base/.htaccess.svn-base b/lib/vendor/symfony/lib/task/generator/skeleton/project/web/.svn/text-base/.htaccess.svn-base new file mode 100644 index 0000000..ae05df6 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/project/web/.svn/text-base/.htaccess.svn-base @@ -0,0 +1,22 @@ +Options +FollowSymLinks +ExecCGI + + + RewriteEngine On + + # uncomment the following line, if you are having trouble + # getting no_script_name to work + #RewriteBase / + + # we skip all files with .something + #RewriteCond %{REQUEST_URI} \..+$ + #RewriteCond %{REQUEST_URI} !\.html$ + #RewriteRule .* - [L] + + # we check if the .html version is here (caching) + RewriteRule ^$ index.html [QSA] + RewriteRule ^([^.]+)$ $1.html [QSA] + RewriteCond %{REQUEST_FILENAME} !-f + + # no, so we redirect to our front web controller + RewriteRule ^(.*)$ index.php [QSA,L] + diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/web/.svn/text-base/robots.txt.svn-base b/lib/vendor/symfony/lib/task/generator/skeleton/project/web/.svn/text-base/robots.txt.svn-base new file mode 100644 index 0000000..0827227 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/project/web/.svn/text-base/robots.txt.svn-base @@ -0,0 +1,2 @@ +#User-agent: * +#Disallow: diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/web/css/.svn/all-wcprops b/lib/vendor/symfony/lib/task/generator/skeleton/project/web/css/.svn/all-wcprops new file mode 100644 index 0000000..3389d73 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/project/web/css/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 72 +/!svn/ver/23881/branches/1.4/lib/task/generator/skeleton/project/web/css +END +main.css +K 25 +svn:wc:ra_dav:version-url +V 81 +/!svn/ver/23881/branches/1.4/lib/task/generator/skeleton/project/web/css/main.css +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/web/css/.svn/entries b/lib/vendor/symfony/lib/task/generator/skeleton/project/web/css/.svn/entries new file mode 100644 index 0000000..b5eff92 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/project/web/css/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/task/generator/skeleton/project/web/css +http://svn.symfony-project.com + + + +2007-11-02T16:00:44.381666Z +5817 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +main.css +file + + + + +2012-05-10T18:41:06.573549Z +d41d8cd98f00b204e9800998ecf8427e +2007-11-02T16:00:44.381666Z +5817 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +0 + diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/web/css/.svn/prop-base/main.css.svn-base b/lib/vendor/symfony/lib/task/generator/skeleton/project/web/css/.svn/prop-base/main.css.svn-base new file mode 100644 index 0000000..f94f265 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/project/web/css/.svn/prop-base/main.css.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 8 +text/css +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/web/css/.svn/text-base/main.css.svn-base b/lib/vendor/symfony/lib/task/generator/skeleton/project/web/css/.svn/text-base/main.css.svn-base new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/web/css/main.css b/lib/vendor/symfony/lib/task/generator/skeleton/project/web/css/main.css new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/web/images/.sf b/lib/vendor/symfony/lib/task/generator/skeleton/project/web/images/.sf new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/web/images/.svn/all-wcprops b/lib/vendor/symfony/lib/task/generator/skeleton/project/web/images/.svn/all-wcprops new file mode 100644 index 0000000..b4bc9a4 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/project/web/images/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 75 +/!svn/ver/23881/branches/1.4/lib/task/generator/skeleton/project/web/images +END +.sf +K 25 +svn:wc:ra_dav:version-url +V 79 +/!svn/ver/23881/branches/1.4/lib/task/generator/skeleton/project/web/images/.sf +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/web/images/.svn/entries b/lib/vendor/symfony/lib/task/generator/skeleton/project/web/images/.svn/entries new file mode 100644 index 0000000..7d6238b --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/project/web/images/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/task/generator/skeleton/project/web/images +http://svn.symfony-project.com + + + +2005-10-31T15:12:29.118494Z +28 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +.sf +file + + + + +2012-05-10T18:41:06.409547Z +d41d8cd98f00b204e9800998ecf8427e +2005-10-31T15:12:29.118494Z +28 +fabien + + + + + + + + + + + + + + + + + + + + + +0 + diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/web/images/.svn/text-base/.sf.svn-base b/lib/vendor/symfony/lib/task/generator/skeleton/project/web/images/.svn/text-base/.sf.svn-base new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/web/js/.sf b/lib/vendor/symfony/lib/task/generator/skeleton/project/web/js/.sf new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/web/js/.svn/all-wcprops b/lib/vendor/symfony/lib/task/generator/skeleton/project/web/js/.svn/all-wcprops new file mode 100644 index 0000000..88520f6 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/project/web/js/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 71 +/!svn/ver/23881/branches/1.4/lib/task/generator/skeleton/project/web/js +END +.sf +K 25 +svn:wc:ra_dav:version-url +V 75 +/!svn/ver/23881/branches/1.4/lib/task/generator/skeleton/project/web/js/.sf +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/web/js/.svn/entries b/lib/vendor/symfony/lib/task/generator/skeleton/project/web/js/.svn/entries new file mode 100644 index 0000000..a6ee6a9 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/project/web/js/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/task/generator/skeleton/project/web/js +http://svn.symfony-project.com + + + +2005-10-31T15:12:29.118494Z +28 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +.sf +file + + + + +2012-05-10T18:41:06.613551Z +d41d8cd98f00b204e9800998ecf8427e +2005-10-31T15:12:29.118494Z +28 +fabien + + + + + + + + + + + + + + + + + + + + + +0 + diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/web/js/.svn/text-base/.sf.svn-base b/lib/vendor/symfony/lib/task/generator/skeleton/project/web/js/.svn/text-base/.sf.svn-base new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/web/robots.txt b/lib/vendor/symfony/lib/task/generator/skeleton/project/web/robots.txt new file mode 100644 index 0000000..0827227 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/project/web/robots.txt @@ -0,0 +1,2 @@ +#User-agent: * +#Disallow: diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/web/uploads/.sf b/lib/vendor/symfony/lib/task/generator/skeleton/project/web/uploads/.sf new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/web/uploads/.svn/all-wcprops b/lib/vendor/symfony/lib/task/generator/skeleton/project/web/uploads/.svn/all-wcprops new file mode 100644 index 0000000..ae86a9b --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/project/web/uploads/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 76 +/!svn/ver/23881/branches/1.4/lib/task/generator/skeleton/project/web/uploads +END +.sf +K 25 +svn:wc:ra_dav:version-url +V 80 +/!svn/ver/23881/branches/1.4/lib/task/generator/skeleton/project/web/uploads/.sf +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/web/uploads/.svn/entries b/lib/vendor/symfony/lib/task/generator/skeleton/project/web/uploads/.svn/entries new file mode 100644 index 0000000..0325a12 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/project/web/uploads/.svn/entries @@ -0,0 +1,65 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/task/generator/skeleton/project/web/uploads +http://svn.symfony-project.com + + + +2005-10-18T14:27:36.467326Z +1 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +assets +dir + +.sf +file + + + + +2012-05-10T18:41:06.561547Z +d41d8cd98f00b204e9800998ecf8427e +2005-10-18T14:27:36.467326Z +1 +fabien + + + + + + + + + + + + + + + + + + + + + +0 + diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/web/uploads/.svn/text-base/.sf.svn-base b/lib/vendor/symfony/lib/task/generator/skeleton/project/web/uploads/.svn/text-base/.sf.svn-base new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/web/uploads/assets/.sf b/lib/vendor/symfony/lib/task/generator/skeleton/project/web/uploads/assets/.sf new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/web/uploads/assets/.svn/all-wcprops b/lib/vendor/symfony/lib/task/generator/skeleton/project/web/uploads/assets/.svn/all-wcprops new file mode 100644 index 0000000..4efce30 --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/project/web/uploads/assets/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 83 +/!svn/ver/23881/branches/1.4/lib/task/generator/skeleton/project/web/uploads/assets +END +.sf +K 25 +svn:wc:ra_dav:version-url +V 87 +/!svn/ver/23881/branches/1.4/lib/task/generator/skeleton/project/web/uploads/assets/.sf +END diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/web/uploads/assets/.svn/entries b/lib/vendor/symfony/lib/task/generator/skeleton/project/web/uploads/assets/.svn/entries new file mode 100644 index 0000000..652212f --- /dev/null +++ b/lib/vendor/symfony/lib/task/generator/skeleton/project/web/uploads/assets/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/task/generator/skeleton/project/web/uploads/assets +http://svn.symfony-project.com + + + +2005-10-18T14:27:36.467326Z +1 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +.sf +file + + + + +2012-05-10T18:41:06.477547Z +d41d8cd98f00b204e9800998ecf8427e +2005-10-18T14:27:36.467326Z +1 +fabien + + + + + + + + + + + + + + + + + + + + + +0 + diff --git a/lib/vendor/symfony/lib/task/generator/skeleton/project/web/uploads/assets/.svn/text-base/.sf.svn-base b/lib/vendor/symfony/lib/task/generator/skeleton/project/web/uploads/assets/.svn/text-base/.sf.svn-base new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/lib/task/help/.svn/all-wcprops b/lib/vendor/symfony/lib/task/help/.svn/all-wcprops new file mode 100644 index 0000000..b03e486 --- /dev/null +++ b/lib/vendor/symfony/lib/task/help/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 42 +/!svn/ver/23922/branches/1.4/lib/task/help +END +sfListTask.class.php +K 25 +svn:wc:ra_dav:version-url +V 63 +/!svn/ver/23881/branches/1.4/lib/task/help/sfListTask.class.php +END +sfHelpTask.class.php +K 25 +svn:wc:ra_dav:version-url +V 63 +/!svn/ver/23922/branches/1.4/lib/task/help/sfHelpTask.class.php +END diff --git a/lib/vendor/symfony/lib/task/help/.svn/entries b/lib/vendor/symfony/lib/task/help/.svn/entries new file mode 100644 index 0000000..cb5b94c --- /dev/null +++ b/lib/vendor/symfony/lib/task/help/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/task/help +http://svn.symfony-project.com + + + +2009-11-14T14:58:38.254908Z +23922 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +sfListTask.class.php +file + + + + +2012-05-10T18:41:07.333546Z +4206bd62ed81037aa47ec157ac0f7d38 +2009-08-25T11:24:13.806084Z +21428 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +4754 + +sfHelpTask.class.php +file + + + + +2012-05-10T18:41:07.333546Z +c91ca3cbaa7c5692d54eb997c0c48822 +2009-11-14T14:58:38.254908Z +23922 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +4467 + diff --git a/lib/vendor/symfony/lib/task/help/.svn/prop-base/sfHelpTask.class.php.svn-base b/lib/vendor/symfony/lib/task/help/.svn/prop-base/sfHelpTask.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/help/.svn/prop-base/sfHelpTask.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/help/.svn/prop-base/sfListTask.class.php.svn-base b/lib/vendor/symfony/lib/task/help/.svn/prop-base/sfListTask.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/help/.svn/prop-base/sfListTask.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/help/.svn/text-base/sfHelpTask.class.php.svn-base b/lib/vendor/symfony/lib/task/help/.svn/text-base/sfHelpTask.class.php.svn-base new file mode 100644 index 0000000..1f4ac9e --- /dev/null +++ b/lib/vendor/symfony/lib/task/help/.svn/text-base/sfHelpTask.class.php.svn-base @@ -0,0 +1,133 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Displays help for a task. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfHelpTask extends sfCommandApplicationTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('task_name', sfCommandArgument::OPTIONAL, 'The task name', 'help'), + )); + + $this->addOptions(array( + new sfCommandOption('xml', null, sfCommandOption::PARAMETER_NONE, 'To output help as XML'), + )); + + $this->briefDescription = 'Displays help for a task'; + + $this->detailedDescription = <<commandApplication)) + { + throw new sfCommandException('You can only launch this task from the command line.'); + } + + $task = $this->commandApplication->getTask($arguments['task_name']); + + if ($options['xml']) + { + $this->outputAsXml($task); + } + else + { + $this->outputAsText($task); + } + } + + protected function outputAsText(sfTask $task) + { + $messages = array(); + + $messages[] = $this->formatter->format('Usage:', 'COMMENT'); + $messages[] = $this->formatter->format(sprintf(' '.$task->getSynopsis(), null === $this->commandApplication ? '' : $this->commandApplication->getName()))."\n"; + + // find the largest option or argument name + $max = 0; + foreach ($task->getOptions() as $option) + { + $max = strlen($option->getName()) + 2 > $max ? strlen($option->getName()) + 2 : $max; + } + foreach ($task->getArguments() as $argument) + { + $max = strlen($argument->getName()) > $max ? strlen($argument->getName()) : $max; + } + $max += strlen($this->formatter->format(' ', 'INFO')); + + if ($task->getAliases()) + { + $messages[] = $this->formatter->format('Aliases:', 'COMMENT').' '.$this->formatter->format(implode(', ', $task->getAliases()), 'INFO')."\n"; + } + + if ($task->getArguments()) + { + $messages[] = $this->formatter->format('Arguments:', 'COMMENT'); + foreach ($task->getArguments() as $argument) + { + $default = null !== $argument->getDefault() && (!is_array($argument->getDefault()) || count($argument->getDefault())) ? $this->formatter->format(sprintf(' (default: %s)', is_array($argument->getDefault()) ? str_replace("\n", '', print_r($argument->getDefault(), true)): $argument->getDefault()), 'COMMENT') : ''; + $messages[] = sprintf(" %-${max}s %s%s", $this->formatter->format($argument->getName(), 'INFO'), $argument->getHelp(), $default); + } + + $messages[] = ''; + } + + if ($task->getOptions()) + { + $messages[] = $this->formatter->format('Options:', 'COMMENT'); + + foreach ($task->getOptions() as $option) + { + $default = $option->acceptParameter() && null !== $option->getDefault() && (!is_array($option->getDefault()) || count($option->getDefault())) ? $this->formatter->format(sprintf(' (default: %s)', is_array($option->getDefault()) ? str_replace("\n", '', print_r($option->getDefault(), true)): $option->getDefault()), 'COMMENT') : ''; + $multiple = $option->isArray() ? $this->formatter->format(' (multiple values allowed)', 'COMMENT') : ''; + $messages[] = sprintf(' %-'.$max.'s %s%s%s%s', $this->formatter->format('--'.$option->getName(), 'INFO'), $option->getShortcut() ? sprintf('(-%s) ', $option->getShortcut()) : '', $option->getHelp(), $default, $multiple); + } + + $messages[] = ''; + } + + if ($detailedDescription = $task->getDetailedDescription()) + { + $messages[] = $this->formatter->format('Description:', 'COMMENT'); + + $messages[] = ' '.implode("\n ", explode("\n", $detailedDescription))."\n"; + } + + $this->log($messages); + } + + protected function outputAsXml(sfTask $task) + { + echo $task->asXml(); + } +} diff --git a/lib/vendor/symfony/lib/task/help/.svn/text-base/sfListTask.class.php.svn-base b/lib/vendor/symfony/lib/task/help/.svn/text-base/sfListTask.class.php.svn-base new file mode 100644 index 0000000..a89b956 --- /dev/null +++ b/lib/vendor/symfony/lib/task/help/.svn/text-base/sfListTask.class.php.svn-base @@ -0,0 +1,177 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Lists tasks. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfListTask extends sfCommandApplicationTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('namespace', sfCommandArgument::OPTIONAL, 'The namespace name'), + )); + + $this->addOptions(array( + new sfCommandOption('xml', null, sfCommandOption::PARAMETER_NONE, 'To output help as XML'), + )); + + $this->briefDescription = 'Lists tasks'; + + $this->detailedDescription = <<commandApplication->getTasks() as $name => $task) + { + if ($arguments['namespace'] && $arguments['namespace'] != $task->getNamespace()) + { + continue; + } + + if ($name != $task->getFullName()) + { + // it is an alias + continue; + } + + if (!$task->getNamespace()) + { + $name = '_default:'.$name; + } + + $tasks[$name] = $task; + } + + if ($options['xml']) + { + $this->outputAsXml($arguments['namespace'], $tasks); + } + else + { + $this->outputAsText($arguments['namespace'], $tasks); + } + } + + protected function outputAsText($namespace, $tasks) + { + $this->commandApplication->help(); + $this->log(''); + + $width = 0; + foreach ($tasks as $name => $task) + { + $width = strlen($task->getName()) > $width ? strlen($task->getName()) : $width; + } + $width += strlen($this->formatter->format(' ', 'INFO')); + + $messages = array(); + if ($namespace) + { + $messages[] = $this->formatter->format(sprintf("Available tasks for the \"%s\" namespace:", $namespace), 'COMMENT'); + } + else + { + $messages[] = $this->formatter->format('Available tasks:', 'COMMENT'); + } + + // display tasks + ksort($tasks); + $currentNamespace = ''; + foreach ($tasks as $name => $task) + { + if (!$namespace && $currentNamespace != $task->getNamespace()) + { + $currentNamespace = $task->getNamespace(); + $messages[] = $this->formatter->format($task->getNamespace(), 'COMMENT'); + } + + $aliases = $task->getAliases() ? $this->formatter->format(' ('.implode(', ', $task->getAliases()).')', 'COMMENT') : ''; + + $messages[] = sprintf(" %-${width}s %s%s", $this->formatter->format(':'.$task->getName(), 'INFO'), $task->getBriefDescription(), $aliases); + } + + $this->log($messages); + } + + protected function outputAsXml($namespace, $tasks) + { + $dom = new DOMDocument('1.0', 'UTF-8'); + $dom->formatOutput = true; + $dom->appendChild($symfonyXML = $dom->createElement('symfony')); + + $symfonyXML->appendChild($tasksXML = $dom->createElement('tasks')); + + if ($namespace) + { + $tasksXML->setAttribute('namespace', $namespace); + } + else + { + $symfonyXML->appendChild($namespacesXML = $dom->createElement('namespaces')); + } + + // display tasks + ksort($tasks); + $currentNamespace = 'foobar'; + $namespaceArrayXML = array(); + foreach ($tasks as $name => $task) + { + if (!$namespace && $currentNamespace != $task->getNamespace()) + { + $currentNamespace = $task->getNamespace(); + $namespacesXML->appendChild($namespaceArrayXML[$task->getNamespace()] = $dom->createElement('namespace')); + + $namespaceArrayXML[$task->getNamespace()]->setAttribute('id', $task->getNamespace() ? $task->getNamespace() : '_global'); + } + + if (!$namespace) + { + $namespaceArrayXML[$task->getNamespace()]->appendChild($taskXML = $dom->createElement('task')); + $taskXML->appendChild($dom->createTextNode($task->getName())); + } + + $taskXML = new DOMDocument('1.0', 'UTF-8'); + $taskXML->formatOutput = true; + $taskXML->loadXML($task->asXml()); + $node = $taskXML->getElementsByTagName('task')->item(0); + $node = $dom->importNode($node, true); + + $tasksXML->appendChild($node); + } + + echo $dom->saveXml(); + } +} diff --git a/lib/vendor/symfony/lib/task/help/sfHelpTask.class.php b/lib/vendor/symfony/lib/task/help/sfHelpTask.class.php new file mode 100644 index 0000000..da9c4c0 --- /dev/null +++ b/lib/vendor/symfony/lib/task/help/sfHelpTask.class.php @@ -0,0 +1,133 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Displays help for a task. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id: sfHelpTask.class.php 23922 2009-11-14 14:58:38Z fabien $ + */ +class sfHelpTask extends sfCommandApplicationTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('task_name', sfCommandArgument::OPTIONAL, 'The task name', 'help'), + )); + + $this->addOptions(array( + new sfCommandOption('xml', null, sfCommandOption::PARAMETER_NONE, 'To output help as XML'), + )); + + $this->briefDescription = 'Displays help for a task'; + + $this->detailedDescription = <<commandApplication)) + { + throw new sfCommandException('You can only launch this task from the command line.'); + } + + $task = $this->commandApplication->getTask($arguments['task_name']); + + if ($options['xml']) + { + $this->outputAsXml($task); + } + else + { + $this->outputAsText($task); + } + } + + protected function outputAsText(sfTask $task) + { + $messages = array(); + + $messages[] = $this->formatter->format('Usage:', 'COMMENT'); + $messages[] = $this->formatter->format(sprintf(' '.$task->getSynopsis(), null === $this->commandApplication ? '' : $this->commandApplication->getName()))."\n"; + + // find the largest option or argument name + $max = 0; + foreach ($task->getOptions() as $option) + { + $max = strlen($option->getName()) + 2 > $max ? strlen($option->getName()) + 2 : $max; + } + foreach ($task->getArguments() as $argument) + { + $max = strlen($argument->getName()) > $max ? strlen($argument->getName()) : $max; + } + $max += strlen($this->formatter->format(' ', 'INFO')); + + if ($task->getAliases()) + { + $messages[] = $this->formatter->format('Aliases:', 'COMMENT').' '.$this->formatter->format(implode(', ', $task->getAliases()), 'INFO')."\n"; + } + + if ($task->getArguments()) + { + $messages[] = $this->formatter->format('Arguments:', 'COMMENT'); + foreach ($task->getArguments() as $argument) + { + $default = null !== $argument->getDefault() && (!is_array($argument->getDefault()) || count($argument->getDefault())) ? $this->formatter->format(sprintf(' (default: %s)', is_array($argument->getDefault()) ? str_replace("\n", '', print_r($argument->getDefault(), true)): $argument->getDefault()), 'COMMENT') : ''; + $messages[] = sprintf(" %-${max}s %s%s", $this->formatter->format($argument->getName(), 'INFO'), $argument->getHelp(), $default); + } + + $messages[] = ''; + } + + if ($task->getOptions()) + { + $messages[] = $this->formatter->format('Options:', 'COMMENT'); + + foreach ($task->getOptions() as $option) + { + $default = $option->acceptParameter() && null !== $option->getDefault() && (!is_array($option->getDefault()) || count($option->getDefault())) ? $this->formatter->format(sprintf(' (default: %s)', is_array($option->getDefault()) ? str_replace("\n", '', print_r($option->getDefault(), true)): $option->getDefault()), 'COMMENT') : ''; + $multiple = $option->isArray() ? $this->formatter->format(' (multiple values allowed)', 'COMMENT') : ''; + $messages[] = sprintf(' %-'.$max.'s %s%s%s%s', $this->formatter->format('--'.$option->getName(), 'INFO'), $option->getShortcut() ? sprintf('(-%s) ', $option->getShortcut()) : '', $option->getHelp(), $default, $multiple); + } + + $messages[] = ''; + } + + if ($detailedDescription = $task->getDetailedDescription()) + { + $messages[] = $this->formatter->format('Description:', 'COMMENT'); + + $messages[] = ' '.implode("\n ", explode("\n", $detailedDescription))."\n"; + } + + $this->log($messages); + } + + protected function outputAsXml(sfTask $task) + { + echo $task->asXml(); + } +} diff --git a/lib/vendor/symfony/lib/task/help/sfListTask.class.php b/lib/vendor/symfony/lib/task/help/sfListTask.class.php new file mode 100644 index 0000000..7d6852b --- /dev/null +++ b/lib/vendor/symfony/lib/task/help/sfListTask.class.php @@ -0,0 +1,177 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Lists tasks. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id: sfListTask.class.php 21428 2009-08-25 11:24:13Z fabien $ + */ +class sfListTask extends sfCommandApplicationTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('namespace', sfCommandArgument::OPTIONAL, 'The namespace name'), + )); + + $this->addOptions(array( + new sfCommandOption('xml', null, sfCommandOption::PARAMETER_NONE, 'To output help as XML'), + )); + + $this->briefDescription = 'Lists tasks'; + + $this->detailedDescription = <<commandApplication->getTasks() as $name => $task) + { + if ($arguments['namespace'] && $arguments['namespace'] != $task->getNamespace()) + { + continue; + } + + if ($name != $task->getFullName()) + { + // it is an alias + continue; + } + + if (!$task->getNamespace()) + { + $name = '_default:'.$name; + } + + $tasks[$name] = $task; + } + + if ($options['xml']) + { + $this->outputAsXml($arguments['namespace'], $tasks); + } + else + { + $this->outputAsText($arguments['namespace'], $tasks); + } + } + + protected function outputAsText($namespace, $tasks) + { + $this->commandApplication->help(); + $this->log(''); + + $width = 0; + foreach ($tasks as $name => $task) + { + $width = strlen($task->getName()) > $width ? strlen($task->getName()) : $width; + } + $width += strlen($this->formatter->format(' ', 'INFO')); + + $messages = array(); + if ($namespace) + { + $messages[] = $this->formatter->format(sprintf("Available tasks for the \"%s\" namespace:", $namespace), 'COMMENT'); + } + else + { + $messages[] = $this->formatter->format('Available tasks:', 'COMMENT'); + } + + // display tasks + ksort($tasks); + $currentNamespace = ''; + foreach ($tasks as $name => $task) + { + if (!$namespace && $currentNamespace != $task->getNamespace()) + { + $currentNamespace = $task->getNamespace(); + $messages[] = $this->formatter->format($task->getNamespace(), 'COMMENT'); + } + + $aliases = $task->getAliases() ? $this->formatter->format(' ('.implode(', ', $task->getAliases()).')', 'COMMENT') : ''; + + $messages[] = sprintf(" %-${width}s %s%s", $this->formatter->format(':'.$task->getName(), 'INFO'), $task->getBriefDescription(), $aliases); + } + + $this->log($messages); + } + + protected function outputAsXml($namespace, $tasks) + { + $dom = new DOMDocument('1.0', 'UTF-8'); + $dom->formatOutput = true; + $dom->appendChild($symfonyXML = $dom->createElement('symfony')); + + $symfonyXML->appendChild($tasksXML = $dom->createElement('tasks')); + + if ($namespace) + { + $tasksXML->setAttribute('namespace', $namespace); + } + else + { + $symfonyXML->appendChild($namespacesXML = $dom->createElement('namespaces')); + } + + // display tasks + ksort($tasks); + $currentNamespace = 'foobar'; + $namespaceArrayXML = array(); + foreach ($tasks as $name => $task) + { + if (!$namespace && $currentNamespace != $task->getNamespace()) + { + $currentNamespace = $task->getNamespace(); + $namespacesXML->appendChild($namespaceArrayXML[$task->getNamespace()] = $dom->createElement('namespace')); + + $namespaceArrayXML[$task->getNamespace()]->setAttribute('id', $task->getNamespace() ? $task->getNamespace() : '_global'); + } + + if (!$namespace) + { + $namespaceArrayXML[$task->getNamespace()]->appendChild($taskXML = $dom->createElement('task')); + $taskXML->appendChild($dom->createTextNode($task->getName())); + } + + $taskXML = new DOMDocument('1.0', 'UTF-8'); + $taskXML->formatOutput = true; + $taskXML->loadXML($task->asXml()); + $node = $taskXML->getElementsByTagName('task')->item(0); + $node = $dom->importNode($node, true); + + $tasksXML->appendChild($node); + } + + echo $dom->saveXml(); + } +} diff --git a/lib/vendor/symfony/lib/task/i18n/.svn/all-wcprops b/lib/vendor/symfony/lib/task/i18n/.svn/all-wcprops new file mode 100644 index 0000000..f36df41 --- /dev/null +++ b/lib/vendor/symfony/lib/task/i18n/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 42 +/!svn/ver/23881/branches/1.4/lib/task/i18n +END +sfI18nExtractTask.class.php +K 25 +svn:wc:ra_dav:version-url +V 70 +/!svn/ver/23881/branches/1.4/lib/task/i18n/sfI18nExtractTask.class.php +END +sfI18nFindTask.class.php +K 25 +svn:wc:ra_dav:version-url +V 67 +/!svn/ver/23881/branches/1.4/lib/task/i18n/sfI18nFindTask.class.php +END diff --git a/lib/vendor/symfony/lib/task/i18n/.svn/entries b/lib/vendor/symfony/lib/task/i18n/.svn/entries new file mode 100644 index 0000000..0eb668a --- /dev/null +++ b/lib/vendor/symfony/lib/task/i18n/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/task/i18n +http://svn.symfony-project.com + + + +2008-06-26T09:04:13.471411Z +9883 +FabianLange + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +sfI18nExtractTask.class.php +file + + + + +2012-05-10T18:41:04.029546Z +9b540ec335fd6bc8666ce1719f328100 +2008-06-26T09:04:13.471411Z +9883 +FabianLange +has-props + + + + + + + + + + + + + + + + + + + + +4426 + +sfI18nFindTask.class.php +file + + + + +2012-05-10T18:41:04.029546Z +f062ddccf8d9fa9c8bc197b50dc50870 +2008-04-14T16:39:14.813284Z +8453 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +4095 + diff --git a/lib/vendor/symfony/lib/task/i18n/.svn/prop-base/sfI18nExtractTask.class.php.svn-base b/lib/vendor/symfony/lib/task/i18n/.svn/prop-base/sfI18nExtractTask.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/i18n/.svn/prop-base/sfI18nExtractTask.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/i18n/.svn/prop-base/sfI18nFindTask.class.php.svn-base b/lib/vendor/symfony/lib/task/i18n/.svn/prop-base/sfI18nFindTask.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/i18n/.svn/prop-base/sfI18nFindTask.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/i18n/.svn/text-base/sfI18nExtractTask.class.php.svn-base b/lib/vendor/symfony/lib/task/i18n/.svn/text-base/sfI18nExtractTask.class.php.svn-base new file mode 100644 index 0000000..b7fb658 --- /dev/null +++ b/lib/vendor/symfony/lib/task/i18n/.svn/text-base/sfI18nExtractTask.class.php.svn-base @@ -0,0 +1,131 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Extracts i18n strings from php files. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfI18nExtractTask extends sfBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('application', sfCommandArgument::REQUIRED, 'The application name'), + new sfCommandArgument('culture', sfCommandArgument::REQUIRED, 'The target culture'), + )); + + $this->addOptions(array( + new sfCommandOption('display-new', null, sfCommandOption::PARAMETER_NONE, 'Output all new found strings'), + new sfCommandOption('display-old', null, sfCommandOption::PARAMETER_NONE, 'Output all old strings'), + new sfCommandOption('auto-save', null, sfCommandOption::PARAMETER_NONE, 'Save the new strings'), + new sfCommandOption('auto-delete', null, sfCommandOption::PARAMETER_NONE, 'Delete old strings'), + )); + + $this->namespace = 'i18n'; + $this->name = 'extract'; + $this->briefDescription = 'Extracts i18n strings from php files'; + + $this->detailedDescription = <<logSection('i18n', sprintf('extracting i18n strings for the "%s" application', $arguments['application'])); + + // get i18n configuration from factories.yml + $config = sfFactoryConfigHandler::getConfiguration($this->configuration->getConfigPaths('config/factories.yml')); + + $class = $config['i18n']['class']; + $params = $config['i18n']['param']; + unset($params['cache']); + + $extract = new sfI18nApplicationExtract(new $class($this->configuration, new sfNoCache(), $params), $arguments['culture']); + $extract->extract(); + + $this->logSection('i18n', sprintf('found "%d" new i18n strings', count($extract->getNewMessages()))); + $this->logSection('i18n', sprintf('found "%d" old i18n strings', count($extract->getOldMessages()))); + + if ($options['display-new']) + { + $this->logSection('i18n', sprintf('display new i18n strings', count($extract->getOldMessages()))); + foreach ($extract->getNewMessages() as $message) + { + $this->log(' '.$message."\n"); + } + } + + if ($options['auto-save']) + { + $this->logSection('i18n', 'saving new i18n strings'); + + $extract->saveNewMessages(); + } + + if ($options['display-old']) + { + $this->logSection('i18n', sprintf('display old i18n strings', count($extract->getOldMessages()))); + foreach ($extract->getOldMessages() as $message) + { + $this->log(' '.$message."\n"); + } + } + + if ($options['auto-delete']) + { + $this->logSection('i18n', 'deleting old i18n strings'); + + $extract->deleteOldMessages(); + } + } +} diff --git a/lib/vendor/symfony/lib/task/i18n/.svn/text-base/sfI18nFindTask.class.php.svn-base b/lib/vendor/symfony/lib/task/i18n/.svn/text-base/sfI18nFindTask.class.php.svn-base new file mode 100644 index 0000000..f193f00 --- /dev/null +++ b/lib/vendor/symfony/lib/task/i18n/.svn/text-base/sfI18nFindTask.class.php.svn-base @@ -0,0 +1,142 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Finds non "i18n ready" strings in an application. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfI18nFindTask extends sfBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('application', sfCommandArgument::REQUIRED, 'The application name'), + )); + + $this->addOptions(array( + new sfCommandOption('env', null, sfCommandOption::PARAMETER_REQUIRED, 'The environment', 'dev'), + )); + + $this->namespace = 'i18n'; + $this->name = 'find'; + $this->briefDescription = 'Finds non "i18n ready" strings in an application'; + + $this->detailedDescription = <<Non i18n text

    +

    + +As the task returns all strings embedded in PHP, you can have some false positive (especially +if you use the string syntax for helper arguments). +EOF; + } + + /** + * @see sfTask + */ + public function execute($arguments = array(), $options = array()) + { + $this->logSection('i18n', sprintf('find non "i18n ready" strings in the "%s" application', $arguments['application'])); + + // Look in templates + $dirs = array(); + $moduleNames = sfFinder::type('dir')->maxdepth(0)->relative()->in(sfConfig::get('sf_app_module_dir')); + foreach ($moduleNames as $moduleName) + { + $dirs[] = sfConfig::get('sf_app_module_dir').'/'.$moduleName.'/templates'; + } + $dirs[] = sfConfig::get('sf_app_dir').'/templates'; + + $strings = array(); + foreach ($dirs as $dir) + { + $templates = sfFinder::type('file')->name('*.php')->in($dir); + foreach ($templates as $template) + { + if (!isset($strings[$template])) + { + $strings[$template] = array(); + } + + $dom = new DomDocument('1.0', sfConfig::get('sf_charset', 'UTF-8')); + $content = file_get_contents($template); + + // remove doctype + $content = preg_replace('//', '', $content); + + @$dom->loadXML(''.$content.''); + + $nodes = array($dom); + while ($nodes) + { + $node = array_shift($nodes); + + if (XML_TEXT_NODE === $node->nodeType) + { + if (!$node->isWhitespaceInElementContent()) + { + $strings[$template][] = $node->nodeValue; + } + } + else if ($node->childNodes) + { + for ($i = 0, $max = $node->childNodes->length; $i < $max; $i++) + { + $nodes[] = $node->childNodes->item($i); + } + } + else if ('DOMProcessingInstruction' == get_class($node) && 'php' == $node->target) + { + // processing instruction node + $tokens = token_get_all('nodeValue); + foreach ($tokens as $token) + { + if (is_array($token)) + { + list($id, $text) = $token; + + if (T_CONSTANT_ENCAPSED_STRING === $id) + { + $strings[$template][] = substr($text, 1, -1); + } + } + } + } + } + } + } + + foreach ($strings as $template => $messages) + { + if (!$messages) + { + continue; + } + + $this->logSection('i18n', sprintf('strings in "%s"', str_replace(sfConfig::get('sf_root_dir'), '', $template)), 1000); + foreach ($messages as $message) + { + $this->log(" $message\n"); + } + } + } +} diff --git a/lib/vendor/symfony/lib/task/i18n/sfI18nExtractTask.class.php b/lib/vendor/symfony/lib/task/i18n/sfI18nExtractTask.class.php new file mode 100644 index 0000000..84476db --- /dev/null +++ b/lib/vendor/symfony/lib/task/i18n/sfI18nExtractTask.class.php @@ -0,0 +1,131 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Extracts i18n strings from php files. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id: sfI18nExtractTask.class.php 9883 2008-06-26 09:04:13Z FabianLange $ + */ +class sfI18nExtractTask extends sfBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('application', sfCommandArgument::REQUIRED, 'The application name'), + new sfCommandArgument('culture', sfCommandArgument::REQUIRED, 'The target culture'), + )); + + $this->addOptions(array( + new sfCommandOption('display-new', null, sfCommandOption::PARAMETER_NONE, 'Output all new found strings'), + new sfCommandOption('display-old', null, sfCommandOption::PARAMETER_NONE, 'Output all old strings'), + new sfCommandOption('auto-save', null, sfCommandOption::PARAMETER_NONE, 'Save the new strings'), + new sfCommandOption('auto-delete', null, sfCommandOption::PARAMETER_NONE, 'Delete old strings'), + )); + + $this->namespace = 'i18n'; + $this->name = 'extract'; + $this->briefDescription = 'Extracts i18n strings from php files'; + + $this->detailedDescription = <<logSection('i18n', sprintf('extracting i18n strings for the "%s" application', $arguments['application'])); + + // get i18n configuration from factories.yml + $config = sfFactoryConfigHandler::getConfiguration($this->configuration->getConfigPaths('config/factories.yml')); + + $class = $config['i18n']['class']; + $params = $config['i18n']['param']; + unset($params['cache']); + + $extract = new sfI18nApplicationExtract(new $class($this->configuration, new sfNoCache(), $params), $arguments['culture']); + $extract->extract(); + + $this->logSection('i18n', sprintf('found "%d" new i18n strings', count($extract->getNewMessages()))); + $this->logSection('i18n', sprintf('found "%d" old i18n strings', count($extract->getOldMessages()))); + + if ($options['display-new']) + { + $this->logSection('i18n', sprintf('display new i18n strings', count($extract->getOldMessages()))); + foreach ($extract->getNewMessages() as $message) + { + $this->log(' '.$message."\n"); + } + } + + if ($options['auto-save']) + { + $this->logSection('i18n', 'saving new i18n strings'); + + $extract->saveNewMessages(); + } + + if ($options['display-old']) + { + $this->logSection('i18n', sprintf('display old i18n strings', count($extract->getOldMessages()))); + foreach ($extract->getOldMessages() as $message) + { + $this->log(' '.$message."\n"); + } + } + + if ($options['auto-delete']) + { + $this->logSection('i18n', 'deleting old i18n strings'); + + $extract->deleteOldMessages(); + } + } +} diff --git a/lib/vendor/symfony/lib/task/i18n/sfI18nFindTask.class.php b/lib/vendor/symfony/lib/task/i18n/sfI18nFindTask.class.php new file mode 100644 index 0000000..355ed7f --- /dev/null +++ b/lib/vendor/symfony/lib/task/i18n/sfI18nFindTask.class.php @@ -0,0 +1,142 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Finds non "i18n ready" strings in an application. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id: sfI18nFindTask.class.php 8453 2008-04-14 16:39:14Z fabien $ + */ +class sfI18nFindTask extends sfBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('application', sfCommandArgument::REQUIRED, 'The application name'), + )); + + $this->addOptions(array( + new sfCommandOption('env', null, sfCommandOption::PARAMETER_REQUIRED, 'The environment', 'dev'), + )); + + $this->namespace = 'i18n'; + $this->name = 'find'; + $this->briefDescription = 'Finds non "i18n ready" strings in an application'; + + $this->detailedDescription = <<Non i18n text

    +

    + +As the task returns all strings embedded in PHP, you can have some false positive (especially +if you use the string syntax for helper arguments). +EOF; + } + + /** + * @see sfTask + */ + public function execute($arguments = array(), $options = array()) + { + $this->logSection('i18n', sprintf('find non "i18n ready" strings in the "%s" application', $arguments['application'])); + + // Look in templates + $dirs = array(); + $moduleNames = sfFinder::type('dir')->maxdepth(0)->relative()->in(sfConfig::get('sf_app_module_dir')); + foreach ($moduleNames as $moduleName) + { + $dirs[] = sfConfig::get('sf_app_module_dir').'/'.$moduleName.'/templates'; + } + $dirs[] = sfConfig::get('sf_app_dir').'/templates'; + + $strings = array(); + foreach ($dirs as $dir) + { + $templates = sfFinder::type('file')->name('*.php')->in($dir); + foreach ($templates as $template) + { + if (!isset($strings[$template])) + { + $strings[$template] = array(); + } + + $dom = new DomDocument('1.0', sfConfig::get('sf_charset', 'UTF-8')); + $content = file_get_contents($template); + + // remove doctype + $content = preg_replace('//', '', $content); + + @$dom->loadXML(''.$content.''); + + $nodes = array($dom); + while ($nodes) + { + $node = array_shift($nodes); + + if (XML_TEXT_NODE === $node->nodeType) + { + if (!$node->isWhitespaceInElementContent()) + { + $strings[$template][] = $node->nodeValue; + } + } + else if ($node->childNodes) + { + for ($i = 0, $max = $node->childNodes->length; $i < $max; $i++) + { + $nodes[] = $node->childNodes->item($i); + } + } + else if ('DOMProcessingInstruction' == get_class($node) && 'php' == $node->target) + { + // processing instruction node + $tokens = token_get_all('nodeValue); + foreach ($tokens as $token) + { + if (is_array($token)) + { + list($id, $text) = $token; + + if (T_CONSTANT_ENCAPSED_STRING === $id) + { + $strings[$template][] = substr($text, 1, -1); + } + } + } + } + } + } + } + + foreach ($strings as $template => $messages) + { + if (!$messages) + { + continue; + } + + $this->logSection('i18n', sprintf('strings in "%s"', str_replace(sfConfig::get('sf_root_dir'), '', $template)), 1000); + foreach ($messages as $message) + { + $this->log(" $message\n"); + } + } + } +} diff --git a/lib/vendor/symfony/lib/task/log/.svn/all-wcprops b/lib/vendor/symfony/lib/task/log/.svn/all-wcprops new file mode 100644 index 0000000..e315cff --- /dev/null +++ b/lib/vendor/symfony/lib/task/log/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 41 +/!svn/ver/24331/branches/1.4/lib/task/log +END +sfLogRotateTask.class.php +K 25 +svn:wc:ra_dav:version-url +V 67 +/!svn/ver/24331/branches/1.4/lib/task/log/sfLogRotateTask.class.php +END +sfLogClearTask.class.php +K 25 +svn:wc:ra_dav:version-url +V 66 +/!svn/ver/23922/branches/1.4/lib/task/log/sfLogClearTask.class.php +END diff --git a/lib/vendor/symfony/lib/task/log/.svn/entries b/lib/vendor/symfony/lib/task/log/.svn/entries new file mode 100644 index 0000000..7d37364 --- /dev/null +++ b/lib/vendor/symfony/lib/task/log/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/task/log +http://svn.symfony-project.com + + + +2009-11-24T13:15:01.918761Z +24331 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +sfLogRotateTask.class.php +file + + + + +2012-05-10T18:41:04.241552Z +0108c5ffd060fc043609ed88b7222dc0 +2009-11-24T13:15:01.918761Z +24331 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +4983 + +sfLogClearTask.class.php +file + + + + +2012-05-10T18:41:04.241552Z +c804155d2f1357cf40b0a1f283fea609 +2009-11-14T14:58:38.254908Z +23922 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +1070 + diff --git a/lib/vendor/symfony/lib/task/log/.svn/prop-base/sfLogClearTask.class.php.svn-base b/lib/vendor/symfony/lib/task/log/.svn/prop-base/sfLogClearTask.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/log/.svn/prop-base/sfLogClearTask.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/log/.svn/prop-base/sfLogRotateTask.class.php.svn-base b/lib/vendor/symfony/lib/task/log/.svn/prop-base/sfLogRotateTask.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/log/.svn/prop-base/sfLogRotateTask.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/log/.svn/text-base/sfLogClearTask.class.php.svn-base b/lib/vendor/symfony/lib/task/log/.svn/text-base/sfLogClearTask.class.php.svn-base new file mode 100644 index 0000000..01e9d3d --- /dev/null +++ b/lib/vendor/symfony/lib/task/log/.svn/text-base/sfLogClearTask.class.php.svn-base @@ -0,0 +1,45 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Clears log files. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfLogClearTask extends sfBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->namespace = 'log'; + $this->name = 'clear'; + $this->briefDescription = 'Clears log files'; + + $this->detailedDescription = <<in(sfConfig::get('sf_log_dir')); + $this->getFilesystem()->remove($logs); + } +} diff --git a/lib/vendor/symfony/lib/task/log/.svn/text-base/sfLogRotateTask.class.php.svn-base b/lib/vendor/symfony/lib/task/log/.svn/text-base/sfLogRotateTask.class.php.svn-base new file mode 100644 index 0000000..80ff429 --- /dev/null +++ b/lib/vendor/symfony/lib/task/log/.svn/text-base/sfLogRotateTask.class.php.svn-base @@ -0,0 +1,160 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Rotates an application log files. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfLogRotateTask extends sfBaseTask +{ + /** the default period to rotate logs in days */ + const DEF_PERIOD = 7; + + /** the default number of log historys to store, one history is created for every period */ + const DEF_HISTORY = 10; + + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('application', sfCommandArgument::REQUIRED, 'The application name'), + new sfCommandArgument('env', sfCommandArgument::REQUIRED, 'The environment name'), + )); + + $this->addOptions(array( + new sfCommandOption('history', null, sfCommandOption::PARAMETER_REQUIRED, 'The maximum number of old log files to keep', self::DEF_HISTORY), + new sfCommandOption('period', null, sfCommandOption::PARAMETER_REQUIRED, 'The period in days', self::DEF_PERIOD), + )); + + $this->namespace = 'log'; + $this->name = 'rotate'; + $this->briefDescription = 'Rotates an application\'s log files'; + + $this->detailedDescription = <<rotate($arguments['application'], $arguments['env'], $options['period'], $options['history'], true); + } + + /** + * Rotates log file. + * + * @param string $app Application name + * @param string $env Enviroment name + * @param string $period Period + * @param string $history History + * @param bool $override Override + * + * @author Joe Simms + **/ + public function rotate($app, $env, $period = null, $history = null, $override = false) + { + $logfile = $app.'_'.$env; + $logdir = sfConfig::get('sf_log_dir'); + + // set history and period values if not passed to default values + $period = isset($period) ? $period : self::DEF_PERIOD; + $history = isset($history) ? $history : self::DEF_HISTORY; + + // get todays date + $today = date('Ymd'); + + // check history folder exists + if (!is_dir($logdir.'/history')) + { + $this->getFilesystem()->mkdirs($logdir.'/history'); + } + + // determine date of last rotation + $logs = sfFinder::type('file')->maxdepth(1)->name($logfile.'_*.log')->sort_by_name()->in($logdir.'/history'); + $recentlog = is_array($logs) ? array_pop($logs) : null; + + if ($recentlog) + { + // calculate date to rotate logs on + $lastRotatedOn = filemtime($recentlog); + $rotateOn = date('Ymd', strtotime('+ '.$period.' days', $lastRotatedOn)); + } + else + { + // no rotation has occured yet + $rotateOn = null; + } + + $srcLog = $logdir.'/'.$logfile.'.log'; + $destLog = $logdir.'/history/'.$logfile.'_'.$today.'.log'; + + // if rotate log on date doesn't exist, or that date is today, then rotate the log + if (!$rotateOn || ($rotateOn == $today) || $override) + { + // create a lock file + $lockFile = sfConfig::get('sf_data_dir').'/'.$app.'_'.$env.'-cli.lck'; + $this->getFilesystem()->touch($lockFile); + + // change mode so the web user can remove it if we die + $this->getFilesystem()->chmod($lockFile, 0777); + + // if log file exists rotate it + if (file_exists($srcLog)) + { + // check if the log file has already been rotated today + if (file_exists($destLog)) + { + // append log to existing rotated log + $handle = fopen($destLog, 'a'); + $append = file_get_contents($srcLog); + + $this->logSection('file+', $destLog); + fwrite($handle, $append); + } + else + { + // copy log + $this->getFilesystem()->copy($srcLog, $destLog); + } + + // remove the log file + $this->getFilesystem()->remove($srcLog); + + // get all log history files for this application and environment + $newLogs = sfFinder::type('file')->maxdepth(1)->name($logfile.'_*.log')->sort_by_name()->in($logdir.'/history'); + + // if the number of logs in history exceeds history then remove the oldest log + if (count($newLogs) > $history) + { + $this->getFilesystem()->remove($newLogs[0]); + } + } + + // release lock + $this->getFilesystem()->remove($lockFile); + } + } +} diff --git a/lib/vendor/symfony/lib/task/log/sfLogClearTask.class.php b/lib/vendor/symfony/lib/task/log/sfLogClearTask.class.php new file mode 100644 index 0000000..966dcc6 --- /dev/null +++ b/lib/vendor/symfony/lib/task/log/sfLogClearTask.class.php @@ -0,0 +1,45 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Clears log files. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id: sfLogClearTask.class.php 23922 2009-11-14 14:58:38Z fabien $ + */ +class sfLogClearTask extends sfBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->namespace = 'log'; + $this->name = 'clear'; + $this->briefDescription = 'Clears log files'; + + $this->detailedDescription = <<in(sfConfig::get('sf_log_dir')); + $this->getFilesystem()->remove($logs); + } +} diff --git a/lib/vendor/symfony/lib/task/log/sfLogRotateTask.class.php b/lib/vendor/symfony/lib/task/log/sfLogRotateTask.class.php new file mode 100644 index 0000000..6e73bcf --- /dev/null +++ b/lib/vendor/symfony/lib/task/log/sfLogRotateTask.class.php @@ -0,0 +1,160 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Rotates an application log files. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id: sfLogRotateTask.class.php 24331 2009-11-24 13:15:01Z Kris.Wallsmith $ + */ +class sfLogRotateTask extends sfBaseTask +{ + /** the default period to rotate logs in days */ + const DEF_PERIOD = 7; + + /** the default number of log historys to store, one history is created for every period */ + const DEF_HISTORY = 10; + + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('application', sfCommandArgument::REQUIRED, 'The application name'), + new sfCommandArgument('env', sfCommandArgument::REQUIRED, 'The environment name'), + )); + + $this->addOptions(array( + new sfCommandOption('history', null, sfCommandOption::PARAMETER_REQUIRED, 'The maximum number of old log files to keep', self::DEF_HISTORY), + new sfCommandOption('period', null, sfCommandOption::PARAMETER_REQUIRED, 'The period in days', self::DEF_PERIOD), + )); + + $this->namespace = 'log'; + $this->name = 'rotate'; + $this->briefDescription = 'Rotates an application\'s log files'; + + $this->detailedDescription = <<rotate($arguments['application'], $arguments['env'], $options['period'], $options['history'], true); + } + + /** + * Rotates log file. + * + * @param string $app Application name + * @param string $env Enviroment name + * @param string $period Period + * @param string $history History + * @param bool $override Override + * + * @author Joe Simms + **/ + public function rotate($app, $env, $period = null, $history = null, $override = false) + { + $logfile = $app.'_'.$env; + $logdir = sfConfig::get('sf_log_dir'); + + // set history and period values if not passed to default values + $period = isset($period) ? $period : self::DEF_PERIOD; + $history = isset($history) ? $history : self::DEF_HISTORY; + + // get todays date + $today = date('Ymd'); + + // check history folder exists + if (!is_dir($logdir.'/history')) + { + $this->getFilesystem()->mkdirs($logdir.'/history'); + } + + // determine date of last rotation + $logs = sfFinder::type('file')->maxdepth(1)->name($logfile.'_*.log')->sort_by_name()->in($logdir.'/history'); + $recentlog = is_array($logs) ? array_pop($logs) : null; + + if ($recentlog) + { + // calculate date to rotate logs on + $lastRotatedOn = filemtime($recentlog); + $rotateOn = date('Ymd', strtotime('+ '.$period.' days', $lastRotatedOn)); + } + else + { + // no rotation has occured yet + $rotateOn = null; + } + + $srcLog = $logdir.'/'.$logfile.'.log'; + $destLog = $logdir.'/history/'.$logfile.'_'.$today.'.log'; + + // if rotate log on date doesn't exist, or that date is today, then rotate the log + if (!$rotateOn || ($rotateOn == $today) || $override) + { + // create a lock file + $lockFile = sfConfig::get('sf_data_dir').'/'.$app.'_'.$env.'-cli.lck'; + $this->getFilesystem()->touch($lockFile); + + // change mode so the web user can remove it if we die + $this->getFilesystem()->chmod($lockFile, 0777); + + // if log file exists rotate it + if (file_exists($srcLog)) + { + // check if the log file has already been rotated today + if (file_exists($destLog)) + { + // append log to existing rotated log + $handle = fopen($destLog, 'a'); + $append = file_get_contents($srcLog); + + $this->logSection('file+', $destLog); + fwrite($handle, $append); + } + else + { + // copy log + $this->getFilesystem()->copy($srcLog, $destLog); + } + + // remove the log file + $this->getFilesystem()->remove($srcLog); + + // get all log history files for this application and environment + $newLogs = sfFinder::type('file')->maxdepth(1)->name($logfile.'_*.log')->sort_by_name()->in($logdir.'/history'); + + // if the number of logs in history exceeds history then remove the oldest log + if (count($newLogs) > $history) + { + $this->getFilesystem()->remove($newLogs[0]); + } + } + + // release lock + $this->getFilesystem()->remove($lockFile); + } + } +} diff --git a/lib/vendor/symfony/lib/task/plugin/.svn/all-wcprops b/lib/vendor/symfony/lib/task/plugin/.svn/all-wcprops new file mode 100644 index 0000000..059fe3f --- /dev/null +++ b/lib/vendor/symfony/lib/task/plugin/.svn/all-wcprops @@ -0,0 +1,47 @@ +K 25 +svn:wc:ra_dav:version-url +V 44 +/!svn/ver/23922/branches/1.4/lib/task/plugin +END +sfPluginBaseTask.class.php +K 25 +svn:wc:ra_dav:version-url +V 71 +/!svn/ver/23881/branches/1.4/lib/task/plugin/sfPluginBaseTask.class.php +END +sfPluginListTask.class.php +K 25 +svn:wc:ra_dav:version-url +V 71 +/!svn/ver/23922/branches/1.4/lib/task/plugin/sfPluginListTask.class.php +END +sfPluginAddChannelTask.class.php +K 25 +svn:wc:ra_dav:version-url +V 77 +/!svn/ver/23881/branches/1.4/lib/task/plugin/sfPluginAddChannelTask.class.php +END +sfPluginInstallTask.class.php +K 25 +svn:wc:ra_dav:version-url +V 74 +/!svn/ver/23922/branches/1.4/lib/task/plugin/sfPluginInstallTask.class.php +END +sfPluginUpgradeTask.class.php +K 25 +svn:wc:ra_dav:version-url +V 74 +/!svn/ver/23922/branches/1.4/lib/task/plugin/sfPluginUpgradeTask.class.php +END +sfPluginPublishAssetsTask.class.php +K 25 +svn:wc:ra_dav:version-url +V 80 +/!svn/ver/23922/branches/1.4/lib/task/plugin/sfPluginPublishAssetsTask.class.php +END +sfPluginUninstallTask.class.php +K 25 +svn:wc:ra_dav:version-url +V 76 +/!svn/ver/23922/branches/1.4/lib/task/plugin/sfPluginUninstallTask.class.php +END diff --git a/lib/vendor/symfony/lib/task/plugin/.svn/entries b/lib/vendor/symfony/lib/task/plugin/.svn/entries new file mode 100644 index 0000000..49014ab --- /dev/null +++ b/lib/vendor/symfony/lib/task/plugin/.svn/entries @@ -0,0 +1,266 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/task/plugin +http://svn.symfony-project.com + + + +2009-11-14T14:58:38.254908Z +23922 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +sfPluginBaseTask.class.php +file + + + + +2012-05-10T18:41:07.373549Z +0c6e422e59e46052c116b1028fe52fa2 +2009-06-15T12:47:22.935270Z +19273 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +576 + +sfPluginListTask.class.php +file + + + + +2012-05-10T18:41:07.373549Z +27d27f102aba0bba8bcee3e5b3ad918e +2009-11-14T14:58:38.254908Z +23922 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +1669 + +sfPluginAddChannelTask.class.php +file + + + + +2012-05-10T18:41:07.373549Z +422536c148f72b848604f35b192e6065 +2008-09-23T18:33:28.879995Z +11750 +Carl.Vondrick +has-props + + + + + + + + + + + + + + + + + + + + +1409 + +sfPluginInstallTask.class.php +file + + + + +2012-05-10T18:41:07.377551Z +ba577ce03fd1154344f8f4804a357985 +2009-11-14T14:58:38.254908Z +23922 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +4324 + +sfPluginUpgradeTask.class.php +file + + + + +2012-05-10T18:41:07.381548Z +e507f6daca2259b323d7ceea934ff053 +2009-11-14T14:58:38.254908Z +23922 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +2046 + +sfPluginPublishAssetsTask.class.php +file + + + + +2012-05-10T18:41:07.381548Z +cf28184f4521d94e41cebdcf9bd5dad3 +2009-11-14T14:58:38.254908Z +23922 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +3062 + +sfPluginUninstallTask.class.php +file + + + + +2012-05-10T18:41:07.389547Z +aed6f7362256d5166da2e41b49dc7816 +2009-11-14T14:58:38.254908Z +23922 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +2290 + diff --git a/lib/vendor/symfony/lib/task/plugin/.svn/prop-base/sfPluginAddChannelTask.class.php.svn-base b/lib/vendor/symfony/lib/task/plugin/.svn/prop-base/sfPluginAddChannelTask.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/plugin/.svn/prop-base/sfPluginAddChannelTask.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/plugin/.svn/prop-base/sfPluginBaseTask.class.php.svn-base b/lib/vendor/symfony/lib/task/plugin/.svn/prop-base/sfPluginBaseTask.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/plugin/.svn/prop-base/sfPluginBaseTask.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/plugin/.svn/prop-base/sfPluginInstallTask.class.php.svn-base b/lib/vendor/symfony/lib/task/plugin/.svn/prop-base/sfPluginInstallTask.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/plugin/.svn/prop-base/sfPluginInstallTask.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/plugin/.svn/prop-base/sfPluginListTask.class.php.svn-base b/lib/vendor/symfony/lib/task/plugin/.svn/prop-base/sfPluginListTask.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/plugin/.svn/prop-base/sfPluginListTask.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/plugin/.svn/prop-base/sfPluginPublishAssetsTask.class.php.svn-base b/lib/vendor/symfony/lib/task/plugin/.svn/prop-base/sfPluginPublishAssetsTask.class.php.svn-base new file mode 100644 index 0000000..858159d --- /dev/null +++ b/lib/vendor/symfony/lib/task/plugin/.svn/prop-base/sfPluginPublishAssetsTask.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mergeinfo +V 0 + +END diff --git a/lib/vendor/symfony/lib/task/plugin/.svn/prop-base/sfPluginUninstallTask.class.php.svn-base b/lib/vendor/symfony/lib/task/plugin/.svn/prop-base/sfPluginUninstallTask.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/plugin/.svn/prop-base/sfPluginUninstallTask.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/plugin/.svn/prop-base/sfPluginUpgradeTask.class.php.svn-base b/lib/vendor/symfony/lib/task/plugin/.svn/prop-base/sfPluginUpgradeTask.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/plugin/.svn/prop-base/sfPluginUpgradeTask.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/plugin/.svn/text-base/sfPluginAddChannelTask.class.php.svn-base b/lib/vendor/symfony/lib/task/plugin/.svn/text-base/sfPluginAddChannelTask.class.php.svn-base new file mode 100644 index 0000000..07a28fb --- /dev/null +++ b/lib/vendor/symfony/lib/task/plugin/.svn/text-base/sfPluginAddChannelTask.class.php.svn-base @@ -0,0 +1,53 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/sfPluginBaseTask.class.php'); + +/** + * Installs a plugin. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfPluginAddChannelTask extends sfPluginBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('name', sfCommandArgument::REQUIRED, 'The channel name'), + )); + + $this->namespace = 'plugin'; + $this->name = 'add-channel'; + + $this->briefDescription = 'Add a new PEAR channel'; + + $this->detailedDescription = <<logSection('plugin', sprintf('add channel "%s"', $arguments['name'])); + + $this->getPluginManager()->getEnvironment()->registerChannel($arguments['name']); + } +} diff --git a/lib/vendor/symfony/lib/task/plugin/.svn/text-base/sfPluginBaseTask.class.php.svn-base b/lib/vendor/symfony/lib/task/plugin/.svn/text-base/sfPluginBaseTask.class.php.svn-base new file mode 100644 index 0000000..cb550e6 --- /dev/null +++ b/lib/vendor/symfony/lib/task/plugin/.svn/text-base/sfPluginBaseTask.class.php.svn-base @@ -0,0 +1,21 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Base class for all symfony plugin tasks. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id$ + */ +abstract class sfPluginBaseTask extends sfBaseTask +{ +} diff --git a/lib/vendor/symfony/lib/task/plugin/.svn/text-base/sfPluginInstallTask.class.php.svn-base b/lib/vendor/symfony/lib/task/plugin/.svn/text-base/sfPluginInstallTask.class.php.svn-base new file mode 100644 index 0000000..cb1b355 --- /dev/null +++ b/lib/vendor/symfony/lib/task/plugin/.svn/text-base/sfPluginInstallTask.class.php.svn-base @@ -0,0 +1,124 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/sfPluginBaseTask.class.php'); + +/** + * Installs a plugin. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfPluginInstallTask extends sfPluginBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('name', sfCommandArgument::REQUIRED, 'The plugin name'), + )); + + $this->addOptions(array( + new sfCommandOption('stability', 's', sfCommandOption::PARAMETER_REQUIRED, 'The preferred stability (stable, beta, alpha)', null), + new sfCommandOption('release', 'r', sfCommandOption::PARAMETER_REQUIRED, 'The preferred version', null), + new sfCommandOption('channel', 'c', sfCommandOption::PARAMETER_REQUIRED, 'The PEAR channel name', null), + new sfCommandOption('install_deps', 'd', sfCommandOption::PARAMETER_NONE, 'Whether to force installation of required dependencies', null), + new sfCommandOption('force-license', null, sfCommandOption::PARAMETER_NONE, 'Whether to force installation even if the license is not MIT like'), + )); + + $this->namespace = 'plugin'; + $this->name = 'install'; + + $this->briefDescription = 'Installs a plugin'; + + $this->detailedDescription = <<logSection('plugin', sprintf('installing plugin "%s"', $arguments['name'])); + + $options['version'] = $options['release']; + unset($options['release']); + + // license compatible? + if (!$options['force-license']) + { + try + { + $license = $this->getPluginManager()->getPluginLicense($arguments['name'], $options); + } + catch (Exception $e) + { + throw new sfCommandException(sprintf('%s (use --force-license to force installation)', $e->getMessage())); + } + + if (false !== $license) + { + $temp = trim(str_replace('license', '', strtolower($license))); + if (null !== $license && !in_array($temp, array('mit', 'bsd', 'lgpl', 'php', 'apache'))) + { + throw new sfCommandException(sprintf('The license of this plugin "%s" is not MIT like (use --force-license to force installation).', $license)); + } + } + } + + $this->getPluginManager()->installPlugin($arguments['name'], $options); + } +} diff --git a/lib/vendor/symfony/lib/task/plugin/.svn/text-base/sfPluginListTask.class.php.svn-base b/lib/vendor/symfony/lib/task/plugin/.svn/text-base/sfPluginListTask.class.php.svn-base new file mode 100644 index 0000000..7fc4043 --- /dev/null +++ b/lib/vendor/symfony/lib/task/plugin/.svn/text-base/sfPluginListTask.class.php.svn-base @@ -0,0 +1,55 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/sfPluginBaseTask.class.php'); + +/** + * Lists installed plugins. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfPluginListTask extends sfPluginBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->namespace = 'plugin'; + $this->name = 'list'; + + $this->briefDescription = 'Lists installed plugins'; + + $this->detailedDescription = <<log($this->formatter->format('Installed plugins:', 'COMMENT')); + + foreach ($this->getPluginManager()->getInstalledPlugins() as $package) + { + $alias = $this->getPluginManager()->getEnvironment()->getRegistry()->getChannel($package->getChannel())->getAlias(); + $this->log(sprintf(' %-40s %10s-%-6s %s', $this->formatter->format($package->getPackage(), 'INFO'), $package->getVersion(), $package->getState() ? $package->getState() : null, $this->formatter->format(sprintf('# %s (%s)', $package->getChannel(), $alias), 'COMMENT'))); + } + } +} diff --git a/lib/vendor/symfony/lib/task/plugin/.svn/text-base/sfPluginPublishAssetsTask.class.php.svn-base b/lib/vendor/symfony/lib/task/plugin/.svn/text-base/sfPluginPublishAssetsTask.class.php.svn-base new file mode 100644 index 0000000..b0bee0e --- /dev/null +++ b/lib/vendor/symfony/lib/task/plugin/.svn/text-base/sfPluginPublishAssetsTask.class.php.svn-base @@ -0,0 +1,101 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/sfPluginBaseTask.class.php'); + +/** + * Publishes Web Assets for Core and third party plugins + * + * @package symfony + * @subpackage task + * @author Fabian Lange + * @version SVN: $Id$ + */ +class sfPluginPublishAssetsTask extends sfPluginBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('plugins', sfCommandArgument::OPTIONAL | sfCommandArgument::IS_ARRAY, 'Publish this plugin\'s assets'), + )); + + $this->addOptions(array( + new sfCommandOption('core-only', '', sfCommandOption::PARAMETER_NONE, 'If set only core plugins will publish their assets'), + )); + + $this->namespace = 'plugin'; + $this->name = 'publish-assets'; + + $this->briefDescription = 'Publishes web assets for all plugins'; + + $this->detailedDescription = <<configuration->getPlugins(); + + if ($diff = array_diff($arguments['plugins'], $enabledPlugins)) + { + throw new InvalidArgumentException('Plugin(s) not found: '.join(', ', $diff)); + } + + if ($options['core-only']) + { + $corePlugins = sfFinder::type('dir')->relative()->maxdepth(0)->in($this->configuration->getSymfonyLibDir().'/plugins'); + $arguments['plugins'] = array_unique(array_merge($arguments['plugins'], array_intersect($enabledPlugins, $corePlugins))); + } + else if (!count($arguments['plugins'])) + { + $arguments['plugins'] = $enabledPlugins; + } + + foreach ($arguments['plugins'] as $plugin) + { + $pluginConfiguration = $this->configuration->getPluginConfiguration($plugin); + + $this->logSection('plugin', 'Configuring plugin - '.$plugin); + $this->installPluginAssets($plugin, $pluginConfiguration->getRootDir()); + } + } + + /** + * Installs web content for a plugin. + * + * @param string $plugin The plugin name + * @param string $dir The plugin directory + */ + protected function installPluginAssets($plugin, $dir) + { + $webDir = $dir.DIRECTORY_SEPARATOR.'web'; + + if (is_dir($webDir)) + { + $this->getFilesystem()->relativeSymlink($webDir, sfConfig::get('sf_web_dir').DIRECTORY_SEPARATOR.$plugin, true); + } + } +} diff --git a/lib/vendor/symfony/lib/task/plugin/.svn/text-base/sfPluginUninstallTask.class.php.svn-base b/lib/vendor/symfony/lib/task/plugin/.svn/text-base/sfPluginUninstallTask.class.php.svn-base new file mode 100644 index 0000000..a878698 --- /dev/null +++ b/lib/vendor/symfony/lib/task/plugin/.svn/text-base/sfPluginUninstallTask.class.php.svn-base @@ -0,0 +1,77 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/sfPluginBaseTask.class.php'); + +/** + * Uninstall a plugin. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfPluginUninstallTask extends sfPluginBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('name', sfCommandArgument::REQUIRED, 'The plugin name'), + )); + + $this->addOptions(array( + new sfCommandOption('channel', 'c', sfCommandOption::PARAMETER_REQUIRED, 'The PEAR channel name', null), + new sfCommandOption('install_deps', 'd', sfCommandOption::PARAMETER_NONE, 'Whether to force installation of dependencies', null), + )); + + $this->namespace = 'plugin'; + $this->name = 'uninstall'; + + $this->briefDescription = 'Uninstalls a plugin'; + + $this->detailedDescription = <<logSection('plugin', sprintf('uninstalling plugin "%s"', $arguments['name'])); + + $this->getPluginManager()->uninstallPlugin($arguments['name'], $options['channel']); + } +} diff --git a/lib/vendor/symfony/lib/task/plugin/.svn/text-base/sfPluginUpgradeTask.class.php.svn-base b/lib/vendor/symfony/lib/task/plugin/.svn/text-base/sfPluginUpgradeTask.class.php.svn-base new file mode 100644 index 0000000..1c30630 --- /dev/null +++ b/lib/vendor/symfony/lib/task/plugin/.svn/text-base/sfPluginUpgradeTask.class.php.svn-base @@ -0,0 +1,66 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/sfPluginBaseTask.class.php'); + +/** + * Upgrades a plugin. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfPluginUpgradeTask extends sfPluginBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('name', sfCommandArgument::REQUIRED, 'The plugin name'), + )); + + $this->addOptions(array( + new sfCommandOption('stability', 's', sfCommandOption::PARAMETER_REQUIRED, 'The preferred stability (stable, beta, alpha)', null), + new sfCommandOption('release', 'r', sfCommandOption::PARAMETER_REQUIRED, 'The preferred version', null), + new sfCommandOption('channel', 'c', sfCommandOption::PARAMETER_REQUIRED, 'The PEAR channel name', null), + )); + + $this->namespace = 'plugin'; + $this->name = 'upgrade'; + + $this->briefDescription = 'Upgrades a plugin'; + + $this->detailedDescription = <<logSection('plugin', sprintf('upgrading plugin "%s"', $arguments['name'])); + + $this->getPluginManager()->installPlugin($arguments['name'], $options); + } +} diff --git a/lib/vendor/symfony/lib/task/plugin/sfPluginAddChannelTask.class.php b/lib/vendor/symfony/lib/task/plugin/sfPluginAddChannelTask.class.php new file mode 100644 index 0000000..ded73b0 --- /dev/null +++ b/lib/vendor/symfony/lib/task/plugin/sfPluginAddChannelTask.class.php @@ -0,0 +1,53 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/sfPluginBaseTask.class.php'); + +/** + * Installs a plugin. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id: sfPluginAddChannelTask.class.php 11750 2008-09-23 18:33:28Z Carl.Vondrick $ + */ +class sfPluginAddChannelTask extends sfPluginBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('name', sfCommandArgument::REQUIRED, 'The channel name'), + )); + + $this->namespace = 'plugin'; + $this->name = 'add-channel'; + + $this->briefDescription = 'Add a new PEAR channel'; + + $this->detailedDescription = <<logSection('plugin', sprintf('add channel "%s"', $arguments['name'])); + + $this->getPluginManager()->getEnvironment()->registerChannel($arguments['name']); + } +} diff --git a/lib/vendor/symfony/lib/task/plugin/sfPluginBaseTask.class.php b/lib/vendor/symfony/lib/task/plugin/sfPluginBaseTask.class.php new file mode 100644 index 0000000..abb45dd --- /dev/null +++ b/lib/vendor/symfony/lib/task/plugin/sfPluginBaseTask.class.php @@ -0,0 +1,21 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Base class for all symfony plugin tasks. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id: sfPluginBaseTask.class.php 19273 2009-06-15 12:47:22Z fabien $ + */ +abstract class sfPluginBaseTask extends sfBaseTask +{ +} diff --git a/lib/vendor/symfony/lib/task/plugin/sfPluginInstallTask.class.php b/lib/vendor/symfony/lib/task/plugin/sfPluginInstallTask.class.php new file mode 100644 index 0000000..b2034a3 --- /dev/null +++ b/lib/vendor/symfony/lib/task/plugin/sfPluginInstallTask.class.php @@ -0,0 +1,124 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/sfPluginBaseTask.class.php'); + +/** + * Installs a plugin. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id: sfPluginInstallTask.class.php 23922 2009-11-14 14:58:38Z fabien $ + */ +class sfPluginInstallTask extends sfPluginBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('name', sfCommandArgument::REQUIRED, 'The plugin name'), + )); + + $this->addOptions(array( + new sfCommandOption('stability', 's', sfCommandOption::PARAMETER_REQUIRED, 'The preferred stability (stable, beta, alpha)', null), + new sfCommandOption('release', 'r', sfCommandOption::PARAMETER_REQUIRED, 'The preferred version', null), + new sfCommandOption('channel', 'c', sfCommandOption::PARAMETER_REQUIRED, 'The PEAR channel name', null), + new sfCommandOption('install_deps', 'd', sfCommandOption::PARAMETER_NONE, 'Whether to force installation of required dependencies', null), + new sfCommandOption('force-license', null, sfCommandOption::PARAMETER_NONE, 'Whether to force installation even if the license is not MIT like'), + )); + + $this->namespace = 'plugin'; + $this->name = 'install'; + + $this->briefDescription = 'Installs a plugin'; + + $this->detailedDescription = <<logSection('plugin', sprintf('installing plugin "%s"', $arguments['name'])); + + $options['version'] = $options['release']; + unset($options['release']); + + // license compatible? + if (!$options['force-license']) + { + try + { + $license = $this->getPluginManager()->getPluginLicense($arguments['name'], $options); + } + catch (Exception $e) + { + throw new sfCommandException(sprintf('%s (use --force-license to force installation)', $e->getMessage())); + } + + if (false !== $license) + { + $temp = trim(str_replace('license', '', strtolower($license))); + if (null !== $license && !in_array($temp, array('mit', 'bsd', 'lgpl', 'php', 'apache'))) + { + throw new sfCommandException(sprintf('The license of this plugin "%s" is not MIT like (use --force-license to force installation).', $license)); + } + } + } + + $this->getPluginManager()->installPlugin($arguments['name'], $options); + } +} diff --git a/lib/vendor/symfony/lib/task/plugin/sfPluginListTask.class.php b/lib/vendor/symfony/lib/task/plugin/sfPluginListTask.class.php new file mode 100644 index 0000000..6deb8b0 --- /dev/null +++ b/lib/vendor/symfony/lib/task/plugin/sfPluginListTask.class.php @@ -0,0 +1,55 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/sfPluginBaseTask.class.php'); + +/** + * Lists installed plugins. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id: sfPluginListTask.class.php 23922 2009-11-14 14:58:38Z fabien $ + */ +class sfPluginListTask extends sfPluginBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->namespace = 'plugin'; + $this->name = 'list'; + + $this->briefDescription = 'Lists installed plugins'; + + $this->detailedDescription = <<log($this->formatter->format('Installed plugins:', 'COMMENT')); + + foreach ($this->getPluginManager()->getInstalledPlugins() as $package) + { + $alias = $this->getPluginManager()->getEnvironment()->getRegistry()->getChannel($package->getChannel())->getAlias(); + $this->log(sprintf(' %-40s %10s-%-6s %s', $this->formatter->format($package->getPackage(), 'INFO'), $package->getVersion(), $package->getState() ? $package->getState() : null, $this->formatter->format(sprintf('# %s (%s)', $package->getChannel(), $alias), 'COMMENT'))); + } + } +} diff --git a/lib/vendor/symfony/lib/task/plugin/sfPluginPublishAssetsTask.class.php b/lib/vendor/symfony/lib/task/plugin/sfPluginPublishAssetsTask.class.php new file mode 100644 index 0000000..9e07303 --- /dev/null +++ b/lib/vendor/symfony/lib/task/plugin/sfPluginPublishAssetsTask.class.php @@ -0,0 +1,101 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/sfPluginBaseTask.class.php'); + +/** + * Publishes Web Assets for Core and third party plugins + * + * @package symfony + * @subpackage task + * @author Fabian Lange + * @version SVN: $Id: sfPluginPublishAssetsTask.class.php 23922 2009-11-14 14:58:38Z fabien $ + */ +class sfPluginPublishAssetsTask extends sfPluginBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('plugins', sfCommandArgument::OPTIONAL | sfCommandArgument::IS_ARRAY, 'Publish this plugin\'s assets'), + )); + + $this->addOptions(array( + new sfCommandOption('core-only', '', sfCommandOption::PARAMETER_NONE, 'If set only core plugins will publish their assets'), + )); + + $this->namespace = 'plugin'; + $this->name = 'publish-assets'; + + $this->briefDescription = 'Publishes web assets for all plugins'; + + $this->detailedDescription = <<configuration->getPlugins(); + + if ($diff = array_diff($arguments['plugins'], $enabledPlugins)) + { + throw new InvalidArgumentException('Plugin(s) not found: '.join(', ', $diff)); + } + + if ($options['core-only']) + { + $corePlugins = sfFinder::type('dir')->relative()->maxdepth(0)->in($this->configuration->getSymfonyLibDir().'/plugins'); + $arguments['plugins'] = array_unique(array_merge($arguments['plugins'], array_intersect($enabledPlugins, $corePlugins))); + } + else if (!count($arguments['plugins'])) + { + $arguments['plugins'] = $enabledPlugins; + } + + foreach ($arguments['plugins'] as $plugin) + { + $pluginConfiguration = $this->configuration->getPluginConfiguration($plugin); + + $this->logSection('plugin', 'Configuring plugin - '.$plugin); + $this->installPluginAssets($plugin, $pluginConfiguration->getRootDir()); + } + } + + /** + * Installs web content for a plugin. + * + * @param string $plugin The plugin name + * @param string $dir The plugin directory + */ + protected function installPluginAssets($plugin, $dir) + { + $webDir = $dir.DIRECTORY_SEPARATOR.'web'; + + if (is_dir($webDir)) + { + $this->getFilesystem()->relativeSymlink($webDir, sfConfig::get('sf_web_dir').DIRECTORY_SEPARATOR.$plugin, true); + } + } +} diff --git a/lib/vendor/symfony/lib/task/plugin/sfPluginUninstallTask.class.php b/lib/vendor/symfony/lib/task/plugin/sfPluginUninstallTask.class.php new file mode 100644 index 0000000..111b96d --- /dev/null +++ b/lib/vendor/symfony/lib/task/plugin/sfPluginUninstallTask.class.php @@ -0,0 +1,77 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/sfPluginBaseTask.class.php'); + +/** + * Uninstall a plugin. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id: sfPluginUninstallTask.class.php 23922 2009-11-14 14:58:38Z fabien $ + */ +class sfPluginUninstallTask extends sfPluginBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('name', sfCommandArgument::REQUIRED, 'The plugin name'), + )); + + $this->addOptions(array( + new sfCommandOption('channel', 'c', sfCommandOption::PARAMETER_REQUIRED, 'The PEAR channel name', null), + new sfCommandOption('install_deps', 'd', sfCommandOption::PARAMETER_NONE, 'Whether to force installation of dependencies', null), + )); + + $this->namespace = 'plugin'; + $this->name = 'uninstall'; + + $this->briefDescription = 'Uninstalls a plugin'; + + $this->detailedDescription = <<logSection('plugin', sprintf('uninstalling plugin "%s"', $arguments['name'])); + + $this->getPluginManager()->uninstallPlugin($arguments['name'], $options['channel']); + } +} diff --git a/lib/vendor/symfony/lib/task/plugin/sfPluginUpgradeTask.class.php b/lib/vendor/symfony/lib/task/plugin/sfPluginUpgradeTask.class.php new file mode 100644 index 0000000..361c982 --- /dev/null +++ b/lib/vendor/symfony/lib/task/plugin/sfPluginUpgradeTask.class.php @@ -0,0 +1,66 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/sfPluginBaseTask.class.php'); + +/** + * Upgrades a plugin. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id: sfPluginUpgradeTask.class.php 23922 2009-11-14 14:58:38Z fabien $ + */ +class sfPluginUpgradeTask extends sfPluginBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('name', sfCommandArgument::REQUIRED, 'The plugin name'), + )); + + $this->addOptions(array( + new sfCommandOption('stability', 's', sfCommandOption::PARAMETER_REQUIRED, 'The preferred stability (stable, beta, alpha)', null), + new sfCommandOption('release', 'r', sfCommandOption::PARAMETER_REQUIRED, 'The preferred version', null), + new sfCommandOption('channel', 'c', sfCommandOption::PARAMETER_REQUIRED, 'The PEAR channel name', null), + )); + + $this->namespace = 'plugin'; + $this->name = 'upgrade'; + + $this->briefDescription = 'Upgrades a plugin'; + + $this->detailedDescription = <<logSection('plugin', sprintf('upgrading plugin "%s"', $arguments['name'])); + + $this->getPluginManager()->installPlugin($arguments['name'], $options); + } +} diff --git a/lib/vendor/symfony/lib/task/project/.svn/all-wcprops b/lib/vendor/symfony/lib/task/project/.svn/all-wcprops new file mode 100644 index 0000000..0242b1f --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/.svn/all-wcprops @@ -0,0 +1,53 @@ +K 25 +svn:wc:ra_dav:version-url +V 45 +/!svn/ver/33125/branches/1.4/lib/task/project +END +sfProjectDisableTask.class.php +K 25 +svn:wc:ra_dav:version-url +V 76 +/!svn/ver/23922/branches/1.4/lib/task/project/sfProjectDisableTask.class.php +END +sfProjectSendEmailsTask.class.php +K 25 +svn:wc:ra_dav:version-url +V 79 +/!svn/ver/23881/branches/1.4/lib/task/project/sfProjectSendEmailsTask.class.php +END +sfProjectEnableTask.class.php +K 25 +svn:wc:ra_dav:version-url +V 75 +/!svn/ver/23922/branches/1.4/lib/task/project/sfProjectEnableTask.class.php +END +sfProjectValidateTask.class.php +K 25 +svn:wc:ra_dav:version-url +V 77 +/!svn/ver/24610/branches/1.4/lib/task/project/sfProjectValidateTask.class.php +END +sfProjectPermissionsTask.class.php +K 25 +svn:wc:ra_dav:version-url +V 80 +/!svn/ver/23922/branches/1.4/lib/task/project/sfProjectPermissionsTask.class.php +END +sfProjectDeployTask.class.php +K 25 +svn:wc:ra_dav:version-url +V 75 +/!svn/ver/33125/branches/1.4/lib/task/project/sfProjectDeployTask.class.php +END +sfProjectClearControllersTask.class.php +K 25 +svn:wc:ra_dav:version-url +V 85 +/!svn/ver/23922/branches/1.4/lib/task/project/sfProjectClearControllersTask.class.php +END +sfProjectOptimizeTask.class.php +K 25 +svn:wc:ra_dav:version-url +V 77 +/!svn/ver/32707/branches/1.4/lib/task/project/sfProjectOptimizeTask.class.php +END diff --git a/lib/vendor/symfony/lib/task/project/.svn/entries b/lib/vendor/symfony/lib/task/project/.svn/entries new file mode 100644 index 0000000..429fdad --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/.svn/entries @@ -0,0 +1,303 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/task/project +http://svn.symfony-project.com + + + +2011-10-08T21:02:31.752957Z +33125 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +sfProjectDisableTask.class.php +file + + + + +2012-05-10T18:41:07.273549Z +9ba4a5d6ff5d46ae70f8833fdb8bd759 +2009-11-14T14:58:38.254908Z +23922 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +2314 + +sfProjectSendEmailsTask.class.php +file + + + + +2012-05-10T18:41:07.273549Z +54cd704f01ef695d485584c91b3965c9 +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +2062 + +sfProjectEnableTask.class.php +file + + + + +2012-05-10T18:41:07.281547Z +ba417317e3428bd48971ae07011b18e5 +2009-11-14T14:58:38.254908Z +23922 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +2607 + +sfProjectValidateTask.class.php +file + + + + +2012-05-10T18:41:07.309548Z +5473e676b57dc1bd0adc9d026736d34e +2009-11-30T22:07:34.550040Z +24610 +FabianLange +has-props + + + + + + + + + + + + + + + + + + + + +2514 + +sfProjectPermissionsTask.class.php +file + + + + +2012-05-10T18:41:07.309548Z +963a654f5ffb2def7d6a90d5d60e4551 +2009-11-14T14:58:38.254908Z +23922 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +2873 + +sfProjectDeployTask.class.php +file + + + + +2012-05-10T18:41:07.309548Z +f28f6f812b42b22e00b3ff11a9cdeddf +2011-10-08T21:02:31.752957Z +33125 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +5800 + +validation +dir + +sfProjectClearControllersTask.class.php +file + + + + +2012-05-10T18:41:07.309548Z +834949074f6cbb8b27b6ed297ed1d4fc +2009-11-14T14:58:38.254908Z +23922 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +2221 + +sfProjectOptimizeTask.class.php +file + + + + +2012-05-10T18:41:07.317548Z +b52a6a4481e6f88ba69559c17e720986 +2011-07-01T12:54:40.846433Z +32707 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +5218 + diff --git a/lib/vendor/symfony/lib/task/project/.svn/prop-base/sfProjectClearControllersTask.class.php.svn-base b/lib/vendor/symfony/lib/task/project/.svn/prop-base/sfProjectClearControllersTask.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/.svn/prop-base/sfProjectClearControllersTask.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/project/.svn/prop-base/sfProjectDeployTask.class.php.svn-base b/lib/vendor/symfony/lib/task/project/.svn/prop-base/sfProjectDeployTask.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/.svn/prop-base/sfProjectDeployTask.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/project/.svn/prop-base/sfProjectDisableTask.class.php.svn-base b/lib/vendor/symfony/lib/task/project/.svn/prop-base/sfProjectDisableTask.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/.svn/prop-base/sfProjectDisableTask.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/project/.svn/prop-base/sfProjectEnableTask.class.php.svn-base b/lib/vendor/symfony/lib/task/project/.svn/prop-base/sfProjectEnableTask.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/.svn/prop-base/sfProjectEnableTask.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/project/.svn/prop-base/sfProjectOptimizeTask.class.php.svn-base b/lib/vendor/symfony/lib/task/project/.svn/prop-base/sfProjectOptimizeTask.class.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/.svn/prop-base/sfProjectOptimizeTask.class.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/lib/task/project/.svn/prop-base/sfProjectPermissionsTask.class.php.svn-base b/lib/vendor/symfony/lib/task/project/.svn/prop-base/sfProjectPermissionsTask.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/.svn/prop-base/sfProjectPermissionsTask.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/project/.svn/prop-base/sfProjectSendEmailsTask.class.php.svn-base b/lib/vendor/symfony/lib/task/project/.svn/prop-base/sfProjectSendEmailsTask.class.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/.svn/prop-base/sfProjectSendEmailsTask.class.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/lib/task/project/.svn/prop-base/sfProjectValidateTask.class.php.svn-base b/lib/vendor/symfony/lib/task/project/.svn/prop-base/sfProjectValidateTask.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/.svn/prop-base/sfProjectValidateTask.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/project/.svn/text-base/sfProjectClearControllersTask.class.php.svn-base b/lib/vendor/symfony/lib/task/project/.svn/text-base/sfProjectClearControllersTask.class.php.svn-base new file mode 100644 index 0000000..287df08 --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/.svn/text-base/sfProjectClearControllersTask.class.php.svn-base @@ -0,0 +1,78 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Clears all non production environment controllers. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfProjectClearControllersTask extends sfBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->namespace = 'project'; + $this->name = 'clear-controllers'; + $this->briefDescription = 'Clears all non production environment controllers'; + + $this->detailedDescription = <<maxdepth(1)->name('*.php'); + foreach ($finder->in(sfConfig::get('sf_web_dir')) as $controller) + { + $content = file_get_contents($controller); + + if (preg_match('/ProjectConfiguration::getApplicationConfiguration\(\'(.*?)\', \'(.*?)\'/', $content, $match)) + { + // Remove file if it has found an application and the environment is not production + if ($match[2] != 'prod') + { + $this->getFilesystem()->remove($controller); + } + } + } + } +} diff --git a/lib/vendor/symfony/lib/task/project/.svn/text-base/sfProjectDeployTask.class.php.svn-base b/lib/vendor/symfony/lib/task/project/.svn/text-base/sfProjectDeployTask.class.php.svn-base new file mode 100644 index 0000000..842a842 --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/.svn/text-base/sfProjectDeployTask.class.php.svn-base @@ -0,0 +1,211 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Deploys a project to another server. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfProjectDeployTask extends sfBaseTask +{ + protected + $outputBuffer = '', + $errorBuffer = ''; + + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('server', sfCommandArgument::REQUIRED, 'The server name'), + )); + + $this->addOptions(array( + new sfCommandOption('go', null, sfCommandOption::PARAMETER_NONE, 'Do the deployment'), + new sfCommandOption('rsync-dir', null, sfCommandOption::PARAMETER_REQUIRED, 'The directory where to look for rsync*.txt files', 'config'), + new sfCommandOption('rsync-options', null, sfCommandOption::PARAMETER_OPTIONAL, 'To options to pass to the rsync executable', '-azC --force --delete --progress'), + )); + + $this->namespace = 'project'; + $this->name = 'deploy'; + $this->briefDescription = 'Deploys a project to another server'; + + $this->detailedDescription = <<getFilesystem()->execute($command, $options['trace'] ? array($this, 'logOutput') : null, array($this, 'logErrors')); + + $this->clearBuffers(); + } + + public function logOutput($output) + { + if (false !== $pos = strpos($output, "\n")) + { + $this->outputBuffer .= substr($output, 0, $pos); + $this->log($this->outputBuffer); + $this->outputBuffer = substr($output, $pos + 1); + } + else + { + $this->outputBuffer .= $output; + } + } + + public function logErrors($output) + { + if (false !== $pos = strpos($output, "\n")) + { + $this->errorBuffer .= substr($output, 0, $pos); + $this->log($this->formatter->format($this->errorBuffer, 'ERROR')); + $this->errorBuffer = substr($output, $pos + 1); + } + else + { + $this->errorBuffer .= $output; + } + } + + protected function clearBuffers() + { + if ($this->outputBuffer) + { + $this->log($this->outputBuffer); + $this->outputBuffer = ''; + } + + if ($this->errorBuffer) + { + $this->log($this->formatter->format($this->errorBuffer, 'ERROR')); + $this->errorBuffer = ''; + } + } +} diff --git a/lib/vendor/symfony/lib/task/project/.svn/text-base/sfProjectDisableTask.class.php.svn-base b/lib/vendor/symfony/lib/task/project/.svn/text-base/sfProjectDisableTask.class.php.svn-base new file mode 100644 index 0000000..e41179e --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/.svn/text-base/sfProjectDisableTask.class.php.svn-base @@ -0,0 +1,79 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Disables an application in a given environment. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfProjectDisableTask extends sfBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('env', sfCommandArgument::REQUIRED, 'The environment name'), + new sfCommandArgument('app', sfCommandArgument::OPTIONAL | sfCommandArgument::IS_ARRAY, 'The application name'), + )); + + $this->namespace = 'project'; + $this->name = 'disable'; + $this->briefDescription = 'Disables an application in a given environment'; + + $this->detailedDescription = <<relative()->maxdepth(0)->in(sfConfig::get('sf_apps_dir')); + $env = $arguments['env']; + } + + foreach ($applications as $app) + { + $lockFile = sfConfig::get('sf_data_dir').'/'.$app.'_'.$env.'.lck'; + if (file_exists($lockFile)) + { + $this->logSection('enable', sprintf('%s [%s] is currently DISABLED', $app, $env)); + } + else + { + $this->getFilesystem()->touch($lockFile); + + $this->logSection('enable', sprintf('%s [%s] has been DISABLED', $app, $env)); + } + } + } +} diff --git a/lib/vendor/symfony/lib/task/project/.svn/text-base/sfProjectEnableTask.class.php.svn-base b/lib/vendor/symfony/lib/task/project/.svn/text-base/sfProjectEnableTask.class.php.svn-base new file mode 100644 index 0000000..bb61ef1 --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/.svn/text-base/sfProjectEnableTask.class.php.svn-base @@ -0,0 +1,84 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Enables an application in a given environment. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfProjectEnableTask extends sfBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('env', sfCommandArgument::REQUIRED, 'The environment name'), + new sfCommandArgument('app', sfCommandArgument::OPTIONAL | sfCommandArgument::IS_ARRAY, 'The application name'), + )); + + $this->namespace = 'project'; + $this->name = 'enable'; + $this->briefDescription = 'Enables an application in a given environment'; + + $this->detailedDescription = <<relative()->maxdepth(0)->in(sfConfig::get('sf_apps_dir')); + $env = $arguments['env']; + } + + foreach ($applications as $app) + { + $lockFile = sfConfig::get('sf_data_dir').'/'.$app.'_'.$env.'.lck'; + if (!file_exists($lockFile)) + { + $this->logSection('enable', sprintf('%s [%s] is currently ENABLED', $app, $env)); + } + else + { + $this->getFilesystem()->remove($lockFile); + + $clearCache = new sfCacheClearTask($this->dispatcher, $this->formatter); + $clearCache->setCommandApplication($this->commandApplication); + $clearCache->setConfiguration($this->configuration); + $clearCache->run(array(), array('--app='.$app, '--env='.$env)); + + $this->logSection('enable', sprintf('%s [%s] has been ENABLED', $app, $env)); + } + } + } +} diff --git a/lib/vendor/symfony/lib/task/project/.svn/text-base/sfProjectOptimizeTask.class.php.svn-base b/lib/vendor/symfony/lib/task/project/.svn/text-base/sfProjectOptimizeTask.class.php.svn-base new file mode 100644 index 0000000..91591e4 --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/.svn/text-base/sfProjectOptimizeTask.class.php.svn-base @@ -0,0 +1,189 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Optimizes a project for better performance. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfProjectOptimizeTask extends sfBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('application', sfCommandArgument::REQUIRED, 'The application name'), + new sfCommandArgument('env', sfCommandArgument::OPTIONAL, 'The environment name', 'prod'), + )); + + $this->namespace = 'project'; + $this->name = 'optimize'; + $this->briefDescription = 'Optimizes a project for better performance'; + + $this->detailedDescription = <<findModules(); + $target = sfConfig::get('sf_cache_dir').'/'.$arguments['application'].'/'.$arguments['env'].'/config/configuration.php'; + + // remove existing optimization file + if (file_exists($target)) + { + $this->getFilesystem()->remove($target); + } + + // recreate configuration without the cache + $this->setConfiguration($this->createConfiguration($this->configuration->getApplication(), $this->configuration->getEnvironment())); + + // initialize the context + sfContext::createInstance($this->configuration); + + // force cache generation for generated modules + foreach ($modules as $module) + { + $this->configuration->getConfigCache()->import('modules/'.$module.'/config/generator.yml', false, true); + } + + $templates = $this->findTemplates($modules); + + $data['getTemplateDir'] = $this->optimizeGetTemplateDir($modules, $templates); + $data['getControllerDirs'] = $this->optimizeGetControllerDirs($modules); + $data['getPluginPaths'] = $this->configuration->getPluginPaths(); + $data['loadHelpers'] = $this->optimizeLoadHelpers($modules); + + if (!file_exists($directory = dirname($target))) + { + $this->getFilesystem()->mkdirs($directory); + } + + $this->logSection('file+', $target); + file_put_contents($target, 'configuration->getControllerDirs($module); + } + + return $data; + } + + protected function optimizeGetTemplateDir($modules, $templates) + { + $data = array(); + foreach ($modules as $module) + { + $data[$module] = array(); + foreach ($templates[$module] as $template) + { + if (null !== $dir = $this->configuration->getTemplateDir($module, $template)) + { + $data[$module][$template] = $dir; + } + } + } + + return $data; + } + + protected function optimizeLoadHelpers($modules) + { + $data = array(); + + $finder = sfFinder::type('file')->name('*Helper.php'); + + // module helpers + foreach ($modules as $module) + { + $helpers = array(); + + $dirs = $this->configuration->getHelperDirs($module); + foreach ($finder->in($dirs[0]) as $file) + { + $helpers[basename($file, 'Helper.php')] = $file; + } + + if (count($helpers)) + { + $data[$module] = $helpers; + } + } + + // all other helpers + foreach ($this->configuration->getHelperDirs() as $dir) + { + foreach ($finder->in($dir) as $file) + { + $helper = basename($file, 'Helper.php'); + if (!isset($data[''][$helper])) + { + $data[''][$helper] = $file; + } + } + } + + return $data; + } + + protected function findTemplates($modules) + { + $files = array(); + + foreach ($modules as $module) + { + $files[$module] = sfFinder::type('file')->follow_link()->relative()->in($this->configuration->getTemplateDirs($module)); + } + + return $files; + } + + protected function findModules() + { + // application + $dirs = array(sfConfig::get('sf_app_module_dir')); + + // plugins + $pluginSubPaths = $this->configuration->getPluginSubPaths(DIRECTORY_SEPARATOR.'modules'); + $modules = array(); + foreach (sfFinder::type('dir')->maxdepth(0)->follow_link()->relative()->in($pluginSubPaths) as $module) + { + if (in_array($module, sfConfig::get('sf_enabled_modules'))) + { + $modules[] = $module; + } + } + + // core modules + $dirs[] = sfConfig::get('sf_symfony_lib_dir').'/controller'; + + return array_unique(array_merge(sfFinder::type('dir')->maxdepth(0)->follow_link()->relative()->in($dirs), $modules)); + } +} diff --git a/lib/vendor/symfony/lib/task/project/.svn/text-base/sfProjectPermissionsTask.class.php.svn-base b/lib/vendor/symfony/lib/task/project/.svn/text-base/sfProjectPermissionsTask.class.php.svn-base new file mode 100644 index 0000000..5bf4428 --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/.svn/text-base/sfProjectPermissionsTask.class.php.svn-base @@ -0,0 +1,119 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Fixes symfony directory permissions. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfProjectPermissionsTask extends sfBaseTask +{ + protected + $current = null, + $failed = array(); + + /** + * @see sfTask + */ + protected function configure() + { + $this->namespace = 'project'; + $this->name = 'permissions'; + $this->briefDescription = 'Fixes symfony directory permissions'; + + $this->detailedDescription = <<chmod(sfConfig::get('sf_upload_dir'), 0777); + } + + $this->chmod(sfConfig::get('sf_cache_dir'), 0777); + $this->chmod(sfConfig::get('sf_log_dir'), 0777); + $this->chmod(sfConfig::get('sf_root_dir').'/symfony', 0777); + + $dirs = array( + sfConfig::get('sf_cache_dir'), + sfConfig::get('sf_log_dir'), + sfConfig::get('sf_upload_dir'), + ); + + $dirFinder = sfFinder::type('dir'); + $fileFinder = sfFinder::type('file'); + + foreach ($dirs as $dir) + { + $this->chmod($dirFinder->in($dir), 0777); + $this->chmod($fileFinder->in($dir), 0666); + } + + // note those files that failed + if (count($this->failed)) + { + $this->logBlock(array_merge( + array('Permissions on the following file(s) could not be fixed:', ''), + array_map(create_function('$f', 'return \' - \'.sfDebug::shortenFilePath($f);'), $this->failed) + ), 'ERROR_LARGE'); + } + } + + /** + * Chmod and capture any failures. + * + * @param string $file + * @param integer $mode + * @param integer $umask + * + * @see sfFilesystem + */ + protected function chmod($file, $mode, $umask = 0000) + { + if (is_array($file)) + { + foreach ($file as $f) + { + $this->chmod($f, $mode, $umask); + } + } + else + { + set_error_handler(array($this, 'handleError')); + + $this->current = $file; + @$this->getFilesystem()->chmod($file, $mode, $umask); + $this->current = null; + + restore_error_handler(); + } + } + + /** + * Captures those chmod commands that fail. + * + * @see http://www.php.net/set_error_handler + */ + public function handleError($no, $string, $file, $line, $context) + { + $this->failed[] = $this->current; + } +} diff --git a/lib/vendor/symfony/lib/task/project/.svn/text-base/sfProjectSendEmailsTask.class.php.svn-base b/lib/vendor/symfony/lib/task/project/.svn/text-base/sfProjectSendEmailsTask.class.php.svn-base new file mode 100644 index 0000000..83cb92d --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/.svn/text-base/sfProjectSendEmailsTask.class.php.svn-base @@ -0,0 +1,65 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Send emails stored in a queue. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfProjectSendEmailsTask extends sfBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->addOptions(array( + new sfCommandOption('application', null, sfCommandOption::PARAMETER_OPTIONAL, 'The application name', true), + new sfCommandOption('env', null, sfCommandOption::PARAMETER_REQUIRED, 'The environment', 'dev'), + new sfCommandOption('message-limit', null, sfCommandOption::PARAMETER_OPTIONAL, 'The maximum number of messages to send', 0), + new sfCommandOption('time-limit', null, sfCommandOption::PARAMETER_OPTIONAL, 'The time limit for sending messages (in seconds)', 0), + )); + + $this->namespace = 'project'; + $this->name = 'send-emails'; + + $this->briefDescription = 'Sends emails stored in a queue'; + + $this->detailedDescription = <<configuration); + + $spool = $this->getMailer()->getSpool(); + $spool->setMessageLimit($options['message-limit']); + $spool->setTimeLimit($options['time-limit']); + + $sent = $this->getMailer()->flushQueue(); + + $this->logSection('project', sprintf('sent %s emails', $sent)); + } +} diff --git a/lib/vendor/symfony/lib/task/project/.svn/text-base/sfProjectValidateTask.class.php.svn-base b/lib/vendor/symfony/lib/task/project/.svn/text-base/sfProjectValidateTask.class.php.svn-base new file mode 100644 index 0000000..30f7c7b --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/.svn/text-base/sfProjectValidateTask.class.php.svn-base @@ -0,0 +1,102 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Finds deprecated usage in a project. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfValidateTask extends sfBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->namespace = 'project'; + $this->name = 'validate'; + $this->briefDescription = 'Finds deprecated usage in a project'; + + $this->detailedDescription = <<getUpgradeClasses() as $i => $class) + { + $v = new $class($this->dispatcher, $this->formatter); + + $this->logBlock(($i + 1).'. '.$v->getHeader(), 'QUESTION_LARGE'); + + $v->setCommandApplication($this->commandApplication); + $v->setConfiguration($this->configuration); + $files = $v->validate(); + + if (!$files) + { + $this->log(' '.$this->formatter->format(' OK ', 'INFO')); + + continue; + } + + $this->log(' '.$this->formatter->format(' '.count($files).' file(s) need to be changed. ', 'ERROR')); + + foreach ($files as $file => $value) + { + $this->log(' '.$this->formatter->format($this->formatFile($file), 'INFO')); + + if (true !== $value) + { + $this->log(' '.$value); + } + } + + $this->log($v->getExplanation()); + } + } + + protected function formatFile($file) + { + return str_replace(realpath(sfConfig::get('sf_root_dir')), 'ROOT', realpath($file)); + } + + protected function getUpgradeClasses() + { + $baseDir = dirname(__FILE__).'/validation/'; + $classes = array(); + + foreach (glob($baseDir.'*.class.php') as $file) + { + $class = str_replace(array($baseDir, '.class.php'), '', $file); + + if ('sfValidation' != $class) + { + $classes[] = $class; + + require_once $baseDir.$class.'.class.php'; + } + } + + return $classes; + } +} diff --git a/lib/vendor/symfony/lib/task/project/sfProjectClearControllersTask.class.php b/lib/vendor/symfony/lib/task/project/sfProjectClearControllersTask.class.php new file mode 100644 index 0000000..5bb3458 --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/sfProjectClearControllersTask.class.php @@ -0,0 +1,78 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Clears all non production environment controllers. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id: sfProjectClearControllersTask.class.php 23922 2009-11-14 14:58:38Z fabien $ + */ +class sfProjectClearControllersTask extends sfBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->namespace = 'project'; + $this->name = 'clear-controllers'; + $this->briefDescription = 'Clears all non production environment controllers'; + + $this->detailedDescription = <<maxdepth(1)->name('*.php'); + foreach ($finder->in(sfConfig::get('sf_web_dir')) as $controller) + { + $content = file_get_contents($controller); + + if (preg_match('/ProjectConfiguration::getApplicationConfiguration\(\'(.*?)\', \'(.*?)\'/', $content, $match)) + { + // Remove file if it has found an application and the environment is not production + if ($match[2] != 'prod') + { + $this->getFilesystem()->remove($controller); + } + } + } + } +} diff --git a/lib/vendor/symfony/lib/task/project/sfProjectDeployTask.class.php b/lib/vendor/symfony/lib/task/project/sfProjectDeployTask.class.php new file mode 100644 index 0000000..174fc54 --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/sfProjectDeployTask.class.php @@ -0,0 +1,211 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Deploys a project to another server. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id: sfProjectDeployTask.class.php 33125 2011-10-08 21:02:31Z fabien $ + */ +class sfProjectDeployTask extends sfBaseTask +{ + protected + $outputBuffer = '', + $errorBuffer = ''; + + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('server', sfCommandArgument::REQUIRED, 'The server name'), + )); + + $this->addOptions(array( + new sfCommandOption('go', null, sfCommandOption::PARAMETER_NONE, 'Do the deployment'), + new sfCommandOption('rsync-dir', null, sfCommandOption::PARAMETER_REQUIRED, 'The directory where to look for rsync*.txt files', 'config'), + new sfCommandOption('rsync-options', null, sfCommandOption::PARAMETER_OPTIONAL, 'To options to pass to the rsync executable', '-azC --force --delete --progress'), + )); + + $this->namespace = 'project'; + $this->name = 'deploy'; + $this->briefDescription = 'Deploys a project to another server'; + + $this->detailedDescription = <<getFilesystem()->execute($command, $options['trace'] ? array($this, 'logOutput') : null, array($this, 'logErrors')); + + $this->clearBuffers(); + } + + public function logOutput($output) + { + if (false !== $pos = strpos($output, "\n")) + { + $this->outputBuffer .= substr($output, 0, $pos); + $this->log($this->outputBuffer); + $this->outputBuffer = substr($output, $pos + 1); + } + else + { + $this->outputBuffer .= $output; + } + } + + public function logErrors($output) + { + if (false !== $pos = strpos($output, "\n")) + { + $this->errorBuffer .= substr($output, 0, $pos); + $this->log($this->formatter->format($this->errorBuffer, 'ERROR')); + $this->errorBuffer = substr($output, $pos + 1); + } + else + { + $this->errorBuffer .= $output; + } + } + + protected function clearBuffers() + { + if ($this->outputBuffer) + { + $this->log($this->outputBuffer); + $this->outputBuffer = ''; + } + + if ($this->errorBuffer) + { + $this->log($this->formatter->format($this->errorBuffer, 'ERROR')); + $this->errorBuffer = ''; + } + } +} diff --git a/lib/vendor/symfony/lib/task/project/sfProjectDisableTask.class.php b/lib/vendor/symfony/lib/task/project/sfProjectDisableTask.class.php new file mode 100644 index 0000000..7ca4788 --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/sfProjectDisableTask.class.php @@ -0,0 +1,79 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Disables an application in a given environment. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id: sfProjectDisableTask.class.php 23922 2009-11-14 14:58:38Z fabien $ + */ +class sfProjectDisableTask extends sfBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('env', sfCommandArgument::REQUIRED, 'The environment name'), + new sfCommandArgument('app', sfCommandArgument::OPTIONAL | sfCommandArgument::IS_ARRAY, 'The application name'), + )); + + $this->namespace = 'project'; + $this->name = 'disable'; + $this->briefDescription = 'Disables an application in a given environment'; + + $this->detailedDescription = <<relative()->maxdepth(0)->in(sfConfig::get('sf_apps_dir')); + $env = $arguments['env']; + } + + foreach ($applications as $app) + { + $lockFile = sfConfig::get('sf_data_dir').'/'.$app.'_'.$env.'.lck'; + if (file_exists($lockFile)) + { + $this->logSection('enable', sprintf('%s [%s] is currently DISABLED', $app, $env)); + } + else + { + $this->getFilesystem()->touch($lockFile); + + $this->logSection('enable', sprintf('%s [%s] has been DISABLED', $app, $env)); + } + } + } +} diff --git a/lib/vendor/symfony/lib/task/project/sfProjectEnableTask.class.php b/lib/vendor/symfony/lib/task/project/sfProjectEnableTask.class.php new file mode 100644 index 0000000..1fc9d90 --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/sfProjectEnableTask.class.php @@ -0,0 +1,84 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Enables an application in a given environment. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id: sfProjectEnableTask.class.php 23922 2009-11-14 14:58:38Z fabien $ + */ +class sfProjectEnableTask extends sfBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('env', sfCommandArgument::REQUIRED, 'The environment name'), + new sfCommandArgument('app', sfCommandArgument::OPTIONAL | sfCommandArgument::IS_ARRAY, 'The application name'), + )); + + $this->namespace = 'project'; + $this->name = 'enable'; + $this->briefDescription = 'Enables an application in a given environment'; + + $this->detailedDescription = <<relative()->maxdepth(0)->in(sfConfig::get('sf_apps_dir')); + $env = $arguments['env']; + } + + foreach ($applications as $app) + { + $lockFile = sfConfig::get('sf_data_dir').'/'.$app.'_'.$env.'.lck'; + if (!file_exists($lockFile)) + { + $this->logSection('enable', sprintf('%s [%s] is currently ENABLED', $app, $env)); + } + else + { + $this->getFilesystem()->remove($lockFile); + + $clearCache = new sfCacheClearTask($this->dispatcher, $this->formatter); + $clearCache->setCommandApplication($this->commandApplication); + $clearCache->setConfiguration($this->configuration); + $clearCache->run(array(), array('--app='.$app, '--env='.$env)); + + $this->logSection('enable', sprintf('%s [%s] has been ENABLED', $app, $env)); + } + } + } +} diff --git a/lib/vendor/symfony/lib/task/project/sfProjectOptimizeTask.class.php b/lib/vendor/symfony/lib/task/project/sfProjectOptimizeTask.class.php new file mode 100644 index 0000000..6c98726 --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/sfProjectOptimizeTask.class.php @@ -0,0 +1,189 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Optimizes a project for better performance. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id: sfProjectOptimizeTask.class.php 32707 2011-07-01 12:54:40Z fabien $ + */ +class sfProjectOptimizeTask extends sfBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('application', sfCommandArgument::REQUIRED, 'The application name'), + new sfCommandArgument('env', sfCommandArgument::OPTIONAL, 'The environment name', 'prod'), + )); + + $this->namespace = 'project'; + $this->name = 'optimize'; + $this->briefDescription = 'Optimizes a project for better performance'; + + $this->detailedDescription = <<findModules(); + $target = sfConfig::get('sf_cache_dir').'/'.$arguments['application'].'/'.$arguments['env'].'/config/configuration.php'; + + // remove existing optimization file + if (file_exists($target)) + { + $this->getFilesystem()->remove($target); + } + + // recreate configuration without the cache + $this->setConfiguration($this->createConfiguration($this->configuration->getApplication(), $this->configuration->getEnvironment())); + + // initialize the context + sfContext::createInstance($this->configuration); + + // force cache generation for generated modules + foreach ($modules as $module) + { + $this->configuration->getConfigCache()->import('modules/'.$module.'/config/generator.yml', false, true); + } + + $templates = $this->findTemplates($modules); + + $data['getTemplateDir'] = $this->optimizeGetTemplateDir($modules, $templates); + $data['getControllerDirs'] = $this->optimizeGetControllerDirs($modules); + $data['getPluginPaths'] = $this->configuration->getPluginPaths(); + $data['loadHelpers'] = $this->optimizeLoadHelpers($modules); + + if (!file_exists($directory = dirname($target))) + { + $this->getFilesystem()->mkdirs($directory); + } + + $this->logSection('file+', $target); + file_put_contents($target, 'configuration->getControllerDirs($module); + } + + return $data; + } + + protected function optimizeGetTemplateDir($modules, $templates) + { + $data = array(); + foreach ($modules as $module) + { + $data[$module] = array(); + foreach ($templates[$module] as $template) + { + if (null !== $dir = $this->configuration->getTemplateDir($module, $template)) + { + $data[$module][$template] = $dir; + } + } + } + + return $data; + } + + protected function optimizeLoadHelpers($modules) + { + $data = array(); + + $finder = sfFinder::type('file')->name('*Helper.php'); + + // module helpers + foreach ($modules as $module) + { + $helpers = array(); + + $dirs = $this->configuration->getHelperDirs($module); + foreach ($finder->in($dirs[0]) as $file) + { + $helpers[basename($file, 'Helper.php')] = $file; + } + + if (count($helpers)) + { + $data[$module] = $helpers; + } + } + + // all other helpers + foreach ($this->configuration->getHelperDirs() as $dir) + { + foreach ($finder->in($dir) as $file) + { + $helper = basename($file, 'Helper.php'); + if (!isset($data[''][$helper])) + { + $data[''][$helper] = $file; + } + } + } + + return $data; + } + + protected function findTemplates($modules) + { + $files = array(); + + foreach ($modules as $module) + { + $files[$module] = sfFinder::type('file')->follow_link()->relative()->in($this->configuration->getTemplateDirs($module)); + } + + return $files; + } + + protected function findModules() + { + // application + $dirs = array(sfConfig::get('sf_app_module_dir')); + + // plugins + $pluginSubPaths = $this->configuration->getPluginSubPaths(DIRECTORY_SEPARATOR.'modules'); + $modules = array(); + foreach (sfFinder::type('dir')->maxdepth(0)->follow_link()->relative()->in($pluginSubPaths) as $module) + { + if (in_array($module, sfConfig::get('sf_enabled_modules'))) + { + $modules[] = $module; + } + } + + // core modules + $dirs[] = sfConfig::get('sf_symfony_lib_dir').'/controller'; + + return array_unique(array_merge(sfFinder::type('dir')->maxdepth(0)->follow_link()->relative()->in($dirs), $modules)); + } +} diff --git a/lib/vendor/symfony/lib/task/project/sfProjectPermissionsTask.class.php b/lib/vendor/symfony/lib/task/project/sfProjectPermissionsTask.class.php new file mode 100644 index 0000000..a0d45a7 --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/sfProjectPermissionsTask.class.php @@ -0,0 +1,119 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Fixes symfony directory permissions. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id: sfProjectPermissionsTask.class.php 23922 2009-11-14 14:58:38Z fabien $ + */ +class sfProjectPermissionsTask extends sfBaseTask +{ + protected + $current = null, + $failed = array(); + + /** + * @see sfTask + */ + protected function configure() + { + $this->namespace = 'project'; + $this->name = 'permissions'; + $this->briefDescription = 'Fixes symfony directory permissions'; + + $this->detailedDescription = <<chmod(sfConfig::get('sf_upload_dir'), 0777); + } + + $this->chmod(sfConfig::get('sf_cache_dir'), 0777); + $this->chmod(sfConfig::get('sf_log_dir'), 0777); + $this->chmod(sfConfig::get('sf_root_dir').'/symfony', 0777); + + $dirs = array( + sfConfig::get('sf_cache_dir'), + sfConfig::get('sf_log_dir'), + sfConfig::get('sf_upload_dir'), + ); + + $dirFinder = sfFinder::type('dir'); + $fileFinder = sfFinder::type('file'); + + foreach ($dirs as $dir) + { + $this->chmod($dirFinder->in($dir), 0777); + $this->chmod($fileFinder->in($dir), 0666); + } + + // note those files that failed + if (count($this->failed)) + { + $this->logBlock(array_merge( + array('Permissions on the following file(s) could not be fixed:', ''), + array_map(create_function('$f', 'return \' - \'.sfDebug::shortenFilePath($f);'), $this->failed) + ), 'ERROR_LARGE'); + } + } + + /** + * Chmod and capture any failures. + * + * @param string $file + * @param integer $mode + * @param integer $umask + * + * @see sfFilesystem + */ + protected function chmod($file, $mode, $umask = 0000) + { + if (is_array($file)) + { + foreach ($file as $f) + { + $this->chmod($f, $mode, $umask); + } + } + else + { + set_error_handler(array($this, 'handleError')); + + $this->current = $file; + @$this->getFilesystem()->chmod($file, $mode, $umask); + $this->current = null; + + restore_error_handler(); + } + } + + /** + * Captures those chmod commands that fail. + * + * @see http://www.php.net/set_error_handler + */ + public function handleError($no, $string, $file, $line, $context) + { + $this->failed[] = $this->current; + } +} diff --git a/lib/vendor/symfony/lib/task/project/sfProjectSendEmailsTask.class.php b/lib/vendor/symfony/lib/task/project/sfProjectSendEmailsTask.class.php new file mode 100644 index 0000000..f85942f --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/sfProjectSendEmailsTask.class.php @@ -0,0 +1,65 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Send emails stored in a queue. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id: sfProjectSendEmailsTask.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $ + */ +class sfProjectSendEmailsTask extends sfBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->addOptions(array( + new sfCommandOption('application', null, sfCommandOption::PARAMETER_OPTIONAL, 'The application name', true), + new sfCommandOption('env', null, sfCommandOption::PARAMETER_REQUIRED, 'The environment', 'dev'), + new sfCommandOption('message-limit', null, sfCommandOption::PARAMETER_OPTIONAL, 'The maximum number of messages to send', 0), + new sfCommandOption('time-limit', null, sfCommandOption::PARAMETER_OPTIONAL, 'The time limit for sending messages (in seconds)', 0), + )); + + $this->namespace = 'project'; + $this->name = 'send-emails'; + + $this->briefDescription = 'Sends emails stored in a queue'; + + $this->detailedDescription = <<configuration); + + $spool = $this->getMailer()->getSpool(); + $spool->setMessageLimit($options['message-limit']); + $spool->setTimeLimit($options['time-limit']); + + $sent = $this->getMailer()->flushQueue(); + + $this->logSection('project', sprintf('sent %s emails', $sent)); + } +} diff --git a/lib/vendor/symfony/lib/task/project/sfProjectValidateTask.class.php b/lib/vendor/symfony/lib/task/project/sfProjectValidateTask.class.php new file mode 100644 index 0000000..86c17cb --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/sfProjectValidateTask.class.php @@ -0,0 +1,102 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Finds deprecated usage in a project. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id: sfProjectValidateTask.class.php 24610 2009-11-30 22:07:34Z FabianLange $ + */ +class sfValidateTask extends sfBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->namespace = 'project'; + $this->name = 'validate'; + $this->briefDescription = 'Finds deprecated usage in a project'; + + $this->detailedDescription = <<getUpgradeClasses() as $i => $class) + { + $v = new $class($this->dispatcher, $this->formatter); + + $this->logBlock(($i + 1).'. '.$v->getHeader(), 'QUESTION_LARGE'); + + $v->setCommandApplication($this->commandApplication); + $v->setConfiguration($this->configuration); + $files = $v->validate(); + + if (!$files) + { + $this->log(' '.$this->formatter->format(' OK ', 'INFO')); + + continue; + } + + $this->log(' '.$this->formatter->format(' '.count($files).' file(s) need to be changed. ', 'ERROR')); + + foreach ($files as $file => $value) + { + $this->log(' '.$this->formatter->format($this->formatFile($file), 'INFO')); + + if (true !== $value) + { + $this->log(' '.$value); + } + } + + $this->log($v->getExplanation()); + } + } + + protected function formatFile($file) + { + return str_replace(realpath(sfConfig::get('sf_root_dir')), 'ROOT', realpath($file)); + } + + protected function getUpgradeClasses() + { + $baseDir = dirname(__FILE__).'/validation/'; + $classes = array(); + + foreach (glob($baseDir.'*.class.php') as $file) + { + $class = str_replace(array($baseDir, '.class.php'), '', $file); + + if ('sfValidation' != $class) + { + $classes[] = $class; + + require_once $baseDir.$class.'.class.php'; + } + } + + return $classes; + } +} diff --git a/lib/vendor/symfony/lib/task/project/validation/.svn/all-wcprops b/lib/vendor/symfony/lib/task/project/validation/.svn/all-wcprops new file mode 100644 index 0000000..9433d38 --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/validation/.svn/all-wcprops @@ -0,0 +1,53 @@ +K 25 +svn:wc:ra_dav:version-url +V 56 +/!svn/ver/25411/branches/1.4/lib/task/project/validation +END +sfDeprecatedSettingsValidation.class.php +K 25 +svn:wc:ra_dav:version-url +V 97 +/!svn/ver/25410/branches/1.4/lib/task/project/validation/sfDeprecatedSettingsValidation.class.php +END +sfDeprecatedPluginsValidation.class.php +K 25 +svn:wc:ra_dav:version-url +V 96 +/!svn/ver/25410/branches/1.4/lib/task/project/validation/sfDeprecatedPluginsValidation.class.php +END +sfDeprecatedHelpersValidation.class.php +K 25 +svn:wc:ra_dav:version-url +V 96 +/!svn/ver/25411/branches/1.4/lib/task/project/validation/sfDeprecatedHelpersValidation.class.php +END +sfDeprecatedMethodsValidation.class.php +K 25 +svn:wc:ra_dav:version-url +V 96 +/!svn/ver/25411/branches/1.4/lib/task/project/validation/sfDeprecatedMethodsValidation.class.php +END +sfDeprecatedConfigurationFilesValidation.class.php +K 25 +svn:wc:ra_dav:version-url +V 107 +/!svn/ver/24610/branches/1.4/lib/task/project/validation/sfDeprecatedConfigurationFilesValidation.class.php +END +sfDeprecatedClassesValidation.class.php +K 25 +svn:wc:ra_dav:version-url +V 96 +/!svn/ver/25411/branches/1.4/lib/task/project/validation/sfDeprecatedClassesValidation.class.php +END +sfParameterHolderValidation.class.php +K 25 +svn:wc:ra_dav:version-url +V 94 +/!svn/ver/25411/branches/1.4/lib/task/project/validation/sfParameterHolderValidation.class.php +END +sfValidation.class.php +K 25 +svn:wc:ra_dav:version-url +V 79 +/!svn/ver/24610/branches/1.4/lib/task/project/validation/sfValidation.class.php +END diff --git a/lib/vendor/symfony/lib/task/project/validation/.svn/entries b/lib/vendor/symfony/lib/task/project/validation/.svn/entries new file mode 100644 index 0000000..b7834ab --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/validation/.svn/entries @@ -0,0 +1,300 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/task/project/validation +http://svn.symfony-project.com + + + +2009-12-15T15:31:29.513442Z +25411 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +sfDeprecatedSettingsValidation.class.php +file + + + + +2012-05-10T18:41:07.165550Z +d683fb3e9bdcf192643e3d62cc4a95ec +2009-12-15T15:19:07.596549Z +25410 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +2176 + +sfDeprecatedPluginsValidation.class.php +file + + + + +2012-05-10T18:41:07.165550Z +aec69777c51ee240fde891ff0b79898a +2009-12-15T15:19:07.596549Z +25410 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +1598 + +sfDeprecatedHelpersValidation.class.php +file + + + + +2012-05-10T18:41:07.169552Z +fdc1c81440e998e4e87448e441697fc8 +2009-12-15T15:31:29.513442Z +25411 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +3282 + +sfDeprecatedMethodsValidation.class.php +file + + + + +2012-05-10T18:41:07.261548Z +9d387377ecbff46b709a6bb1a2c30dce +2009-12-15T15:31:29.513442Z +25411 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +2805 + +sfDeprecatedConfigurationFilesValidation.class.php +file + + + + +2012-05-10T18:41:07.261548Z +91f446105a025d81628b82e89c7c0b89 +2009-11-30T22:07:34.550040Z +24610 +FabianLange +has-props + + + + + + + + + + + + + + + + + + + + +1975 + +sfDeprecatedClassesValidation.class.php +file + + + + +2012-05-10T18:41:07.261548Z +6f1f2592f1ccc60566cffcdad93271dc +2009-12-15T15:31:29.513442Z +25411 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +3432 + +sfParameterHolderValidation.class.php +file + + + + +2012-05-10T18:41:07.265595Z +87613e74fdb30a318f24f695a8170fe5 +2009-12-15T15:31:29.513442Z +25411 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +1809 + +sfValidation.class.php +file + + + + +2012-05-10T18:41:07.265595Z +1917e26016c1bb083a70a96ace07160e +2009-11-30T22:07:34.550040Z +24610 +FabianLange +has-props + + + + + + + + + + + + + + + + + + + + +3033 + diff --git a/lib/vendor/symfony/lib/task/project/validation/.svn/prop-base/sfDeprecatedClassesValidation.class.php.svn-base b/lib/vendor/symfony/lib/task/project/validation/.svn/prop-base/sfDeprecatedClassesValidation.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/validation/.svn/prop-base/sfDeprecatedClassesValidation.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/project/validation/.svn/prop-base/sfDeprecatedConfigurationFilesValidation.class.php.svn-base b/lib/vendor/symfony/lib/task/project/validation/.svn/prop-base/sfDeprecatedConfigurationFilesValidation.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/validation/.svn/prop-base/sfDeprecatedConfigurationFilesValidation.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/project/validation/.svn/prop-base/sfDeprecatedHelpersValidation.class.php.svn-base b/lib/vendor/symfony/lib/task/project/validation/.svn/prop-base/sfDeprecatedHelpersValidation.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/validation/.svn/prop-base/sfDeprecatedHelpersValidation.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/project/validation/.svn/prop-base/sfDeprecatedMethodsValidation.class.php.svn-base b/lib/vendor/symfony/lib/task/project/validation/.svn/prop-base/sfDeprecatedMethodsValidation.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/validation/.svn/prop-base/sfDeprecatedMethodsValidation.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/project/validation/.svn/prop-base/sfDeprecatedPluginsValidation.class.php.svn-base b/lib/vendor/symfony/lib/task/project/validation/.svn/prop-base/sfDeprecatedPluginsValidation.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/validation/.svn/prop-base/sfDeprecatedPluginsValidation.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/project/validation/.svn/prop-base/sfDeprecatedSettingsValidation.class.php.svn-base b/lib/vendor/symfony/lib/task/project/validation/.svn/prop-base/sfDeprecatedSettingsValidation.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/validation/.svn/prop-base/sfDeprecatedSettingsValidation.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/project/validation/.svn/prop-base/sfParameterHolderValidation.class.php.svn-base b/lib/vendor/symfony/lib/task/project/validation/.svn/prop-base/sfParameterHolderValidation.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/validation/.svn/prop-base/sfParameterHolderValidation.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/project/validation/.svn/prop-base/sfValidation.class.php.svn-base b/lib/vendor/symfony/lib/task/project/validation/.svn/prop-base/sfValidation.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/validation/.svn/prop-base/sfValidation.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/project/validation/.svn/text-base/sfDeprecatedClassesValidation.class.php.svn-base b/lib/vendor/symfony/lib/task/project/validation/.svn/text-base/sfDeprecatedClassesValidation.class.php.svn-base new file mode 100644 index 0000000..4da3c72 --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/validation/.svn/text-base/sfDeprecatedClassesValidation.class.php.svn-base @@ -0,0 +1,93 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Finds deprecated classes usage. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfDeprecatedClassesValidation extends sfValidation +{ + public function getHeader() + { + return 'Checking usage of deprecated classes'; + } + + public function getExplanation() + { + return array( + '', + ' The files above use deprecated classes', + ' that have been removed in symfony 1.4.', + '', + ' You can find a list of all deprecated classes under the', + ' "Classes" section of the DEPRECATED tutorial:', + '', + ' http://www.symfony-project.org/tutorial/1_4/en/deprecated', + '', + ); + } + + public function validate() + { + $classes = array( + 'sfDoctrineLogger', 'sfNoRouting', 'sfPathInfoRouting', 'sfRichTextEditor', + 'sfRichTextEditorFCK', 'sfRichTextEditorTinyMCE', 'sfCrudGenerator', 'sfAdminGenerator', + 'sfPropelCrudGenerator', 'sfPropelAdminGenerator', 'sfPropelUniqueValidator', 'sfDoctrineUniqueValidator', + 'sfLoader', 'sfConsoleRequest', 'sfConsoleResponse', 'sfConsoleController', + 'sfDoctrineDataRetriever', 'sfPropelDataRetriever', + 'sfWidgetFormI18nSelectLanguage', 'sfWidgetFormI18nSelectCurrency', 'sfWidgetFormI18nSelectCountry', + 'sfWidgetFormChoiceMany', 'sfWidgetFormPropelChoiceMany', 'sfWidgetFormDoctrineChoiceMany', + 'sfValidatorChoiceMany', 'sfValidatorPropelChoiceMany', 'sfValidatorPropelDoctrineMany', + 'SfExtensionObjectBuilder', 'SfExtensionPeerBuilder', 'SfMultiExtendObjectBuilder', + 'SfNestedSetBuilder', 'SfNestedSetPeerBuilder', 'SfObjectBuilder', 'SfPeerBuilder', + 'sfWidgetFormPropelSelect', 'sfWidgetFormPropelSelectMany', + 'sfWidgetFormDoctrineSelect', 'sfWidgetFormDoctrineSelectMany', + + // classes from sfCompat10Plugin + 'sfEzComponentsBridge', 'sfZendFrameworkBridge', 'sfProcessCache', 'sfValidatorConfigHandler', + 'sfActionException', 'sfValidatorException', 'sfFillInFormFilter', 'sfValidationExecutionFilter', + 'sfRequestCompat10', 'sfFillInForm', 'sfCallbackValidator', 'sfCompareValidator', 'sfDateValidator', + 'sfEmailValidator', 'sfFileValidator', 'sfNumberValidator', 'sfRegexValidator', 'sfStringValidator', + 'sfUrlValidator', 'sfValidator', 'sfValidatorManager', 'sfMailView', 'sfMail', + ); + + $found = array(); + $files = sfFinder::type('file')->name('*.php')->prune('vendor')->in(array( + sfConfig::get('sf_apps_dir'), + sfConfig::get('sf_lib_dir'), + sfConfig::get('sf_test_dir'), + sfConfig::get('sf_plugins_dir'), + )); + foreach ($files as $file) + { + $content = sfToolkit::stripComments(file_get_contents($file)); + + $matches = array(); + foreach ($classes as $class) + { + if (preg_match('#\b'.preg_quote($class, '#').'\b#', $content)) + { + $matches[] = $class; + } + } + + if ($matches) + { + $found[$file] = implode(', ', $matches); + } + } + + return $found; + } +} diff --git a/lib/vendor/symfony/lib/task/project/validation/.svn/text-base/sfDeprecatedConfigurationFilesValidation.class.php.svn-base b/lib/vendor/symfony/lib/task/project/validation/.svn/text-base/sfDeprecatedConfigurationFilesValidation.class.php.svn-base new file mode 100644 index 0000000..c11c707 --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/validation/.svn/text-base/sfDeprecatedConfigurationFilesValidation.class.php.svn-base @@ -0,0 +1,74 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Finds deprecated configuration files usage. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfDeprecatedConfigurationFilesValidation extends sfValidation +{ + public function getHeader() + { + return 'Checking usage of deprecated configuration files'; + } + + public function getExplanation() + { + return array( + '', + ' The project uses deprecated configuration files', + ' that have been removed in symfony 1.4 (mailer.yml, validate/*.yml)', + ' or for which the format changed (generator.yml)', + '', + ); + } + + public function validate() + { + // mailer.yml + $files = sfFinder::type('file')->name('mailer.yml')->in($this->getProjectConfigDirectories()); + $found = array(); + foreach ($files as $file) + { + $found[$file] = true; + } + + // modules/*/validate/*.yml + $files = sfFinder::type('file')->name('*.yml')->in(array_merge( + glob(sfConfig::get('sf_apps_dir').'/*/modules/*/validate'), + glob(sfConfig::get('sf_plugins_dir').'/*/modules/*/validate') + )); + foreach ($files as $file) + { + $found[$file] = true; + } + + // old generator.yml + $files = sfFinder::type('file')->name('generator.yml')->in(array( + sfConfig::get('sf_apps_dir'), + sfConfig::get('sf_plugins_dir'), + )); + foreach ($files as $file) + { + $content = file_get_contents($file); + + if (false !== strpos($content, 'sfPropelAdminGenerator')) + { + $found[$file] = true; + } + } + + return $found; + } +} diff --git a/lib/vendor/symfony/lib/task/project/validation/.svn/text-base/sfDeprecatedHelpersValidation.class.php.svn-base b/lib/vendor/symfony/lib/task/project/validation/.svn/text-base/sfDeprecatedHelpersValidation.class.php.svn-base new file mode 100644 index 0000000..f7b458d --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/validation/.svn/text-base/sfDeprecatedHelpersValidation.class.php.svn-base @@ -0,0 +1,88 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Finds deprecated helpers usage. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfDeprecatedHelpersValidation extends sfValidation +{ + public function getHeader() + { + return 'Checking usage of deprecated helpers'; + } + + public function getExplanation() + { + return array( + '', + ' The files above use deprecated helpers', + ' that have been removed in symfony 1.4.', + '', + ' You can find a list of all deprecated helpers under the', + ' "Helpers" section of the DEPRECATED tutorial:', + '', + ' http://www.symfony-project.org/tutorial/1_4/en/deprecated', + '', + ); + } + + public function validate() + { + $helpers = array( + 'select_day_tag', 'select_month_tag', 'select_year_tag', 'select_date_tag', 'select_second_tag', + 'select_minute_tag', 'select_hour_tag', 'select_ampm_tag', 'select_time_tag', 'select_datetime_tag', + 'select_number_tag', 'select_timezone_tag', 'options_for_select', 'select_tag', 'select_country_tag', + 'select_language_tag', 'select_currency_tag', 'input_tag', 'input_hidden_tag', 'input_file_tag', + 'input_password_tag', 'textarea_tag', 'checkbox_tag', 'radiobutton_tag', 'input_date_range_tag', + 'input_date_tag', 'submit_tag', 'reset_tag', 'submit_image_tag', 'label_for', + 'object_admin_input_file_tag', 'object_admin_double_list', 'object_admin_select_list', + 'object_admin_check_list', 'object_input_date_tag', 'object_textarea_tag', 'objects_for_select', + 'object_select_tag', 'object_select_country_tag', 'object_select_language_tag', 'object_input_hidden_tag', + 'object_input_tag', 'object_checkbox_tag', 'form_has_error', 'form_error', 'get_callbacks', + 'get_ajax_options', 'button_to_remote', 'link_to_remote', 'periodically_call_remote', 'form_remote_tag', + 'submit_to_remote', 'submit_image_to_remote', 'update_element_function', 'evaluate_remote_response', + 'remote_function', 'observe_field', 'observe_form', 'visual_effect', 'sortable_element', + 'draggable_element', 'drop_receiving_element', 'input_auto_complete_tag', 'input_in_place_editor_tag', + ); + + $found = array(); + $files = sfFinder::type('file')->name('*.php')->prune('vendor')->in(array( + sfConfig::get('sf_apps_dir'), + sfConfig::get('sf_lib_dir'), + sfConfig::get('sf_test_dir'), + sfConfig::get('sf_plugins_dir'), + )); + foreach ($files as $file) + { + $content = sfToolkit::stripComments(file_get_contents($file)); + + $matches = array(); + foreach ($helpers as $helper) + { + if (preg_match('#\b'.preg_quote($helper, '#').'\b#', $content)) + { + $matches[] = $helper; + } + } + + if ($matches) + { + $found[$file] = implode(', ', $matches); + } + } + + return $found; + } +} diff --git a/lib/vendor/symfony/lib/task/project/validation/.svn/text-base/sfDeprecatedMethodsValidation.class.php.svn-base b/lib/vendor/symfony/lib/task/project/validation/.svn/text-base/sfDeprecatedMethodsValidation.class.php.svn-base new file mode 100644 index 0000000..fccd77e --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/validation/.svn/text-base/sfDeprecatedMethodsValidation.class.php.svn-base @@ -0,0 +1,101 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Finds deprecated methods usage. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfDeprecatedMethodsValidation extends sfValidation +{ + public function getHeader() + { + return 'Checking usage of deprecated methods'; + } + + public function getExplanation() + { + return array( + '', + ' The files above use deprecated functions and/or methods', + ' that have been removed in symfony 1.4.', + '', + ' You can find a list of all deprecated methods under the', + ' "Methods and Functions" section of the DEPRECATED tutorial:', + '', + ' http://www.symfony-project.org/tutorial/1_4/en/deprecated', + '', + ); + } + + public function validate() + { + $found = array_merge( + $this->doValidate(array( + 'sfToolkit::getTmpDir', + 'sfToolkit::removeArrayValueForPath', + 'sfToolkit::hasArrayValueForPath', + 'sfToolkit::getArrayValueForPathByRef', + 'sfValidatorBase::setInvalidMessage', + 'sfValidatorBase::setRequiredMessage', + 'debug_message', + 'sfContext::retrieveObjects', + 'getXDebugStack', + 'checkSymfonyVersion', + 'sh', + ), array( + sfConfig::get('sf_apps_dir'), + sfConfig::get('sf_lib_dir'), + sfConfig::get('sf_test_dir'), + sfConfig::get('sf_plugins_dir'), + )), + + $this->doValidate(array( + 'contains', 'responseContains', 'isRequestParameter', 'isResponseHeader', + 'isUserCulture', 'isRequestFormat', 'checkResponseElement', + ), sfConfig::get('sf_test_dir')), + + $this->doValidate(array( + 'getDefaultView', 'handleError', 'validate', 'debugMessage', 'getController()->sendEmail' + ), $this->getProjectActionDirectories()) + ); + + return $found; + } + + public function doValidate($methods, $dir) + { + $found = array(); + $files = sfFinder::type('file')->name('*.php')->prune('vendor')->in($dir); + foreach ($files as $file) + { + $content = sfToolkit::stripComments(file_get_contents($file)); + + $matches = array(); + foreach ($methods as $method) + { + if (preg_match('#\b'.preg_quote($method, '#').'\b#', $content)) + { + $matches[] = $method; + } + } + + if ($matches) + { + $found[$file] = implode(', ', $matches); + } + } + + return $found; + } +} diff --git a/lib/vendor/symfony/lib/task/project/validation/.svn/text-base/sfDeprecatedPluginsValidation.class.php.svn-base b/lib/vendor/symfony/lib/task/project/validation/.svn/text-base/sfDeprecatedPluginsValidation.class.php.svn-base new file mode 100644 index 0000000..18f799f --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/validation/.svn/text-base/sfDeprecatedPluginsValidation.class.php.svn-base @@ -0,0 +1,64 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Finds deprecated plugins usage. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfDeprecatedPluginsValidation extends sfValidation +{ + public function getHeader() + { + return 'Checking usage of deprecated plugins'; + } + + public function getExplanation() + { + return array( + '', + ' The files above use deprecated plugins', + ' that have been removed in symfony 1.4.', + '', + 'You can probably remove those references safely.', + '', + ); + } + + public function validate() + { + $found = array(); + $files = sfFinder::type('file')->name('*Configuration.class.php')->in($this->getProjectConfigDirectories()); + foreach ($files as $file) + { + $content = sfToolkit::stripComments(file_get_contents($file)); + + $matches = array(); + if (false !== strpos($content, 'sfCompat10Plugin')) + { + $matches[] = 'sfCompat10Plugin'; + } + if (false !== strpos($content, 'sfProtoculousPlugin')) + { + $matches[] = 'sfProtoculousPlugin'; + } + + if ($matches) + { + $found[$file] = implode(', ', $matches); + } + } + + return $found; + } +} diff --git a/lib/vendor/symfony/lib/task/project/validation/.svn/text-base/sfDeprecatedSettingsValidation.class.php.svn-base b/lib/vendor/symfony/lib/task/project/validation/.svn/text-base/sfDeprecatedSettingsValidation.class.php.svn-base new file mode 100644 index 0000000..9bab760 --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/validation/.svn/text-base/sfDeprecatedSettingsValidation.class.php.svn-base @@ -0,0 +1,78 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Finds deprecated settings usage. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfDeprecatedSettingsValidation extends sfValidation +{ + public function getHeader() + { + return 'Checking usage of deprecated settings'; + } + + public function getExplanation() + { + return array( + '', + ' The files above use deprecated settings', + ' that have been removed in symfony 1.4.', + '', + ' You can find a list of all deprecated settings under the', + ' "Settings" section of the DEPRECATED tutorial:', + '', + ' http://www.symfony-project.org/tutorial/1_4/en/deprecated', + '', + ); + } + + public function validate() + { + $settings = array( + 'sf_check_symfony_version', 'sf_max_forwards', 'sf_lazy_cache_key', 'sf_strip_comments', + 'sf_lazy_routes_deserialize', 'sf_calendar_web_dir', 'sf_rich_text_js_dir', 'sf_validation_error_prefix', + 'sf_validation_error_suffix', 'sf_validation_error_class', 'sf_validation_error_id_prefix', + '_is_internal', 'sf_doc_dir', + ); + + $found = array(); + $files = sfFinder::type('file')->name('*.php')->prune('vendor')->in(array( + sfConfig::get('sf_apps_dir'), + sfConfig::get('sf_lib_dir'), + sfConfig::get('sf_test_dir'), + sfConfig::get('sf_plugins_dir'), + )); + foreach ($files as $file) + { + $content = sfToolkit::stripComments(file_get_contents($file)); + + $matches = array(); + foreach ($settings as $setting) + { + if (false !== stripos($content, $setting)) + { + $matches[] = $setting; + } + } + + if ($matches) + { + $found[$file] = implode(', ', $matches); + } + } + + return $found; + } +} diff --git a/lib/vendor/symfony/lib/task/project/validation/.svn/text-base/sfParameterHolderValidation.class.php.svn-base b/lib/vendor/symfony/lib/task/project/validation/.svn/text-base/sfParameterHolderValidation.class.php.svn-base new file mode 100644 index 0000000..4018e3a --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/validation/.svn/text-base/sfParameterHolderValidation.class.php.svn-base @@ -0,0 +1,65 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Finds usage of array notation with a parameter holder. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfParameterHolderValidation extends sfValidation +{ + public function getHeader() + { + return 'Checking usage of array notation with a parameter holder'; + } + + public function getExplanation() + { + return array( + '', + ' The files above use the array notation with a parameter holder,', + ' which is not supported anymore in symfony 1.4.', + ' For instance, you need to change this construct:', + '', + ' $foo = $request->getParameter(\'foo[bar]\')', + '', + ' to this one:', + '', + ' $params = $request->getParameter(\'foo\')', + ' $foo = $params[\'bar\'])', + '', + ); + } + + public function validate() + { + $found = array(); + $files = sfFinder::type('file')->name('*.php')->prune('vendor')->in(array( + sfConfig::get('sf_apps_dir'), + sfConfig::get('sf_lib_dir'), + sfConfig::get('sf_test_dir'), + sfConfig::get('sf_plugins_dir'), + )); + foreach ($files as $file) + { + $content = sfToolkit::stripComments(file_get_contents($file)); + + if (preg_match('#\b(get|has|remove)(Request)*Parameter\(\s*[\'"][^\),]*?\[[^\),]#', $content)) + { + $found[$file] = true; + } + } + + return $found; + } +} diff --git a/lib/vendor/symfony/lib/task/project/validation/.svn/text-base/sfValidation.class.php.svn-base b/lib/vendor/symfony/lib/task/project/validation/.svn/text-base/sfValidation.class.php.svn-base new file mode 100644 index 0000000..06d9aab --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/validation/.svn/text-base/sfValidation.class.php.svn-base @@ -0,0 +1,116 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Abstract class for validation classes. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id$ + */ +abstract class sfValidation extends sfBaseTask +{ + protected + $task = null; + + /** + * Validates the current project. + */ + abstract public function validate(); + + abstract public function getHeader(); + + public function execute($arguments = array(), $options = array()) + { + throw new sfException('You can\'t execute this task.'); + } + + /** + * Returns a finder that exclude upgrade scripts from being upgraded! + * + * @param string $type String directory or file or any (for both file and directory) + * + * @return sfFinder A sfFinder instance + */ + protected function getFinder($type) + { + return sfFinder::type($type)->prune('symfony')->discard('symfony'); + } + + /** + * Returns all project directories where you can put PHP classes. + */ + protected function getProjectClassDirectories() + { + return array_merge( + $this->getProjectLibDirectories(), + $this->getProjectActionDirectories() + ); + } + + /** + * Returns all project directories where you can put templates. + */ + protected function getProjectTemplateDirectories() + { + return array_merge( + glob(sfConfig::get('sf_apps_dir').'/*/modules/*/templates'), + glob(sfConfig::get('sf_apps_dir').'/*/templates') + ); + } + + /** + * Returns all project directories where you can put actions and components. + */ + protected function getProjectActionDirectories() + { + return glob(sfConfig::get('sf_apps_dir').'/*/modules/*/actions'); + } + + /** + * Returns all project lib directories. + * + * @param string $subdirectory A subdirectory within lib (i.e. "/form") + */ + protected function getProjectLibDirectories($subdirectory = null) + { + return array_merge( + glob(sfConfig::get('sf_apps_dir').'/*/modules/*/lib'.$subdirectory), + glob(sfConfig::get('sf_apps_dir').'/*/lib'.$subdirectory), + array( + sfConfig::get('sf_apps_dir').'/lib'.$subdirectory, + sfConfig::get('sf_lib_dir').$subdirectory, + ) + ); + } + + /** + * Returns all project config directories. + */ + protected function getProjectConfigDirectories() + { + return array_merge( + glob(sfConfig::get('sf_apps_dir').'/*/modules/*/config'), + glob(sfConfig::get('sf_apps_dir').'/*/config'), + glob(sfConfig::get('sf_config_dir')) + ); + } + + /** + * Returns all application names. + * + * @return array An array of application names + */ + protected function getApplications() + { + return sfFinder::type('dir')->maxdepth(0)->relative()->in(sfConfig::get('sf_apps_dir')); + } +} diff --git a/lib/vendor/symfony/lib/task/project/validation/sfDeprecatedClassesValidation.class.php b/lib/vendor/symfony/lib/task/project/validation/sfDeprecatedClassesValidation.class.php new file mode 100644 index 0000000..06043d4 --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/validation/sfDeprecatedClassesValidation.class.php @@ -0,0 +1,93 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Finds deprecated classes usage. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id: sfDeprecatedClassesValidation.class.php 25411 2009-12-15 15:31:29Z fabien $ + */ +class sfDeprecatedClassesValidation extends sfValidation +{ + public function getHeader() + { + return 'Checking usage of deprecated classes'; + } + + public function getExplanation() + { + return array( + '', + ' The files above use deprecated classes', + ' that have been removed in symfony 1.4.', + '', + ' You can find a list of all deprecated classes under the', + ' "Classes" section of the DEPRECATED tutorial:', + '', + ' http://www.symfony-project.org/tutorial/1_4/en/deprecated', + '', + ); + } + + public function validate() + { + $classes = array( + 'sfDoctrineLogger', 'sfNoRouting', 'sfPathInfoRouting', 'sfRichTextEditor', + 'sfRichTextEditorFCK', 'sfRichTextEditorTinyMCE', 'sfCrudGenerator', 'sfAdminGenerator', + 'sfPropelCrudGenerator', 'sfPropelAdminGenerator', 'sfPropelUniqueValidator', 'sfDoctrineUniqueValidator', + 'sfLoader', 'sfConsoleRequest', 'sfConsoleResponse', 'sfConsoleController', + 'sfDoctrineDataRetriever', 'sfPropelDataRetriever', + 'sfWidgetFormI18nSelectLanguage', 'sfWidgetFormI18nSelectCurrency', 'sfWidgetFormI18nSelectCountry', + 'sfWidgetFormChoiceMany', 'sfWidgetFormPropelChoiceMany', 'sfWidgetFormDoctrineChoiceMany', + 'sfValidatorChoiceMany', 'sfValidatorPropelChoiceMany', 'sfValidatorPropelDoctrineMany', + 'SfExtensionObjectBuilder', 'SfExtensionPeerBuilder', 'SfMultiExtendObjectBuilder', + 'SfNestedSetBuilder', 'SfNestedSetPeerBuilder', 'SfObjectBuilder', 'SfPeerBuilder', + 'sfWidgetFormPropelSelect', 'sfWidgetFormPropelSelectMany', + 'sfWidgetFormDoctrineSelect', 'sfWidgetFormDoctrineSelectMany', + + // classes from sfCompat10Plugin + 'sfEzComponentsBridge', 'sfZendFrameworkBridge', 'sfProcessCache', 'sfValidatorConfigHandler', + 'sfActionException', 'sfValidatorException', 'sfFillInFormFilter', 'sfValidationExecutionFilter', + 'sfRequestCompat10', 'sfFillInForm', 'sfCallbackValidator', 'sfCompareValidator', 'sfDateValidator', + 'sfEmailValidator', 'sfFileValidator', 'sfNumberValidator', 'sfRegexValidator', 'sfStringValidator', + 'sfUrlValidator', 'sfValidator', 'sfValidatorManager', 'sfMailView', 'sfMail', + ); + + $found = array(); + $files = sfFinder::type('file')->name('*.php')->prune('vendor')->in(array( + sfConfig::get('sf_apps_dir'), + sfConfig::get('sf_lib_dir'), + sfConfig::get('sf_test_dir'), + sfConfig::get('sf_plugins_dir'), + )); + foreach ($files as $file) + { + $content = sfToolkit::stripComments(file_get_contents($file)); + + $matches = array(); + foreach ($classes as $class) + { + if (preg_match('#\b'.preg_quote($class, '#').'\b#', $content)) + { + $matches[] = $class; + } + } + + if ($matches) + { + $found[$file] = implode(', ', $matches); + } + } + + return $found; + } +} diff --git a/lib/vendor/symfony/lib/task/project/validation/sfDeprecatedConfigurationFilesValidation.class.php b/lib/vendor/symfony/lib/task/project/validation/sfDeprecatedConfigurationFilesValidation.class.php new file mode 100644 index 0000000..5b2d5cf --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/validation/sfDeprecatedConfigurationFilesValidation.class.php @@ -0,0 +1,74 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Finds deprecated configuration files usage. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id: sfDeprecatedConfigurationFilesValidation.class.php 24610 2009-11-30 22:07:34Z FabianLange $ + */ +class sfDeprecatedConfigurationFilesValidation extends sfValidation +{ + public function getHeader() + { + return 'Checking usage of deprecated configuration files'; + } + + public function getExplanation() + { + return array( + '', + ' The project uses deprecated configuration files', + ' that have been removed in symfony 1.4 (mailer.yml, validate/*.yml)', + ' or for which the format changed (generator.yml)', + '', + ); + } + + public function validate() + { + // mailer.yml + $files = sfFinder::type('file')->name('mailer.yml')->in($this->getProjectConfigDirectories()); + $found = array(); + foreach ($files as $file) + { + $found[$file] = true; + } + + // modules/*/validate/*.yml + $files = sfFinder::type('file')->name('*.yml')->in(array_merge( + glob(sfConfig::get('sf_apps_dir').'/*/modules/*/validate'), + glob(sfConfig::get('sf_plugins_dir').'/*/modules/*/validate') + )); + foreach ($files as $file) + { + $found[$file] = true; + } + + // old generator.yml + $files = sfFinder::type('file')->name('generator.yml')->in(array( + sfConfig::get('sf_apps_dir'), + sfConfig::get('sf_plugins_dir'), + )); + foreach ($files as $file) + { + $content = file_get_contents($file); + + if (false !== strpos($content, 'sfPropelAdminGenerator')) + { + $found[$file] = true; + } + } + + return $found; + } +} diff --git a/lib/vendor/symfony/lib/task/project/validation/sfDeprecatedHelpersValidation.class.php b/lib/vendor/symfony/lib/task/project/validation/sfDeprecatedHelpersValidation.class.php new file mode 100644 index 0000000..7f6ac0b --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/validation/sfDeprecatedHelpersValidation.class.php @@ -0,0 +1,88 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Finds deprecated helpers usage. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id: sfDeprecatedHelpersValidation.class.php 25411 2009-12-15 15:31:29Z fabien $ + */ +class sfDeprecatedHelpersValidation extends sfValidation +{ + public function getHeader() + { + return 'Checking usage of deprecated helpers'; + } + + public function getExplanation() + { + return array( + '', + ' The files above use deprecated helpers', + ' that have been removed in symfony 1.4.', + '', + ' You can find a list of all deprecated helpers under the', + ' "Helpers" section of the DEPRECATED tutorial:', + '', + ' http://www.symfony-project.org/tutorial/1_4/en/deprecated', + '', + ); + } + + public function validate() + { + $helpers = array( + 'select_day_tag', 'select_month_tag', 'select_year_tag', 'select_date_tag', 'select_second_tag', + 'select_minute_tag', 'select_hour_tag', 'select_ampm_tag', 'select_time_tag', 'select_datetime_tag', + 'select_number_tag', 'select_timezone_tag', 'options_for_select', 'select_tag', 'select_country_tag', + 'select_language_tag', 'select_currency_tag', 'input_tag', 'input_hidden_tag', 'input_file_tag', + 'input_password_tag', 'textarea_tag', 'checkbox_tag', 'radiobutton_tag', 'input_date_range_tag', + 'input_date_tag', 'submit_tag', 'reset_tag', 'submit_image_tag', 'label_for', + 'object_admin_input_file_tag', 'object_admin_double_list', 'object_admin_select_list', + 'object_admin_check_list', 'object_input_date_tag', 'object_textarea_tag', 'objects_for_select', + 'object_select_tag', 'object_select_country_tag', 'object_select_language_tag', 'object_input_hidden_tag', + 'object_input_tag', 'object_checkbox_tag', 'form_has_error', 'form_error', 'get_callbacks', + 'get_ajax_options', 'button_to_remote', 'link_to_remote', 'periodically_call_remote', 'form_remote_tag', + 'submit_to_remote', 'submit_image_to_remote', 'update_element_function', 'evaluate_remote_response', + 'remote_function', 'observe_field', 'observe_form', 'visual_effect', 'sortable_element', + 'draggable_element', 'drop_receiving_element', 'input_auto_complete_tag', 'input_in_place_editor_tag', + ); + + $found = array(); + $files = sfFinder::type('file')->name('*.php')->prune('vendor')->in(array( + sfConfig::get('sf_apps_dir'), + sfConfig::get('sf_lib_dir'), + sfConfig::get('sf_test_dir'), + sfConfig::get('sf_plugins_dir'), + )); + foreach ($files as $file) + { + $content = sfToolkit::stripComments(file_get_contents($file)); + + $matches = array(); + foreach ($helpers as $helper) + { + if (preg_match('#\b'.preg_quote($helper, '#').'\b#', $content)) + { + $matches[] = $helper; + } + } + + if ($matches) + { + $found[$file] = implode(', ', $matches); + } + } + + return $found; + } +} diff --git a/lib/vendor/symfony/lib/task/project/validation/sfDeprecatedMethodsValidation.class.php b/lib/vendor/symfony/lib/task/project/validation/sfDeprecatedMethodsValidation.class.php new file mode 100644 index 0000000..3d8b1e9 --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/validation/sfDeprecatedMethodsValidation.class.php @@ -0,0 +1,101 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Finds deprecated methods usage. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id: sfDeprecatedMethodsValidation.class.php 25411 2009-12-15 15:31:29Z fabien $ + */ +class sfDeprecatedMethodsValidation extends sfValidation +{ + public function getHeader() + { + return 'Checking usage of deprecated methods'; + } + + public function getExplanation() + { + return array( + '', + ' The files above use deprecated functions and/or methods', + ' that have been removed in symfony 1.4.', + '', + ' You can find a list of all deprecated methods under the', + ' "Methods and Functions" section of the DEPRECATED tutorial:', + '', + ' http://www.symfony-project.org/tutorial/1_4/en/deprecated', + '', + ); + } + + public function validate() + { + $found = array_merge( + $this->doValidate(array( + 'sfToolkit::getTmpDir', + 'sfToolkit::removeArrayValueForPath', + 'sfToolkit::hasArrayValueForPath', + 'sfToolkit::getArrayValueForPathByRef', + 'sfValidatorBase::setInvalidMessage', + 'sfValidatorBase::setRequiredMessage', + 'debug_message', + 'sfContext::retrieveObjects', + 'getXDebugStack', + 'checkSymfonyVersion', + 'sh', + ), array( + sfConfig::get('sf_apps_dir'), + sfConfig::get('sf_lib_dir'), + sfConfig::get('sf_test_dir'), + sfConfig::get('sf_plugins_dir'), + )), + + $this->doValidate(array( + 'contains', 'responseContains', 'isRequestParameter', 'isResponseHeader', + 'isUserCulture', 'isRequestFormat', 'checkResponseElement', + ), sfConfig::get('sf_test_dir')), + + $this->doValidate(array( + 'getDefaultView', 'handleError', 'validate', 'debugMessage', 'getController()->sendEmail' + ), $this->getProjectActionDirectories()) + ); + + return $found; + } + + public function doValidate($methods, $dir) + { + $found = array(); + $files = sfFinder::type('file')->name('*.php')->prune('vendor')->in($dir); + foreach ($files as $file) + { + $content = sfToolkit::stripComments(file_get_contents($file)); + + $matches = array(); + foreach ($methods as $method) + { + if (preg_match('#\b'.preg_quote($method, '#').'\b#', $content)) + { + $matches[] = $method; + } + } + + if ($matches) + { + $found[$file] = implode(', ', $matches); + } + } + + return $found; + } +} diff --git a/lib/vendor/symfony/lib/task/project/validation/sfDeprecatedPluginsValidation.class.php b/lib/vendor/symfony/lib/task/project/validation/sfDeprecatedPluginsValidation.class.php new file mode 100644 index 0000000..a876952 --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/validation/sfDeprecatedPluginsValidation.class.php @@ -0,0 +1,64 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Finds deprecated plugins usage. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id: sfDeprecatedPluginsValidation.class.php 25410 2009-12-15 15:19:07Z fabien $ + */ +class sfDeprecatedPluginsValidation extends sfValidation +{ + public function getHeader() + { + return 'Checking usage of deprecated plugins'; + } + + public function getExplanation() + { + return array( + '', + ' The files above use deprecated plugins', + ' that have been removed in symfony 1.4.', + '', + 'You can probably remove those references safely.', + '', + ); + } + + public function validate() + { + $found = array(); + $files = sfFinder::type('file')->name('*Configuration.class.php')->in($this->getProjectConfigDirectories()); + foreach ($files as $file) + { + $content = sfToolkit::stripComments(file_get_contents($file)); + + $matches = array(); + if (false !== strpos($content, 'sfCompat10Plugin')) + { + $matches[] = 'sfCompat10Plugin'; + } + if (false !== strpos($content, 'sfProtoculousPlugin')) + { + $matches[] = 'sfProtoculousPlugin'; + } + + if ($matches) + { + $found[$file] = implode(', ', $matches); + } + } + + return $found; + } +} diff --git a/lib/vendor/symfony/lib/task/project/validation/sfDeprecatedSettingsValidation.class.php b/lib/vendor/symfony/lib/task/project/validation/sfDeprecatedSettingsValidation.class.php new file mode 100644 index 0000000..bc098a1 --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/validation/sfDeprecatedSettingsValidation.class.php @@ -0,0 +1,78 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Finds deprecated settings usage. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id: sfDeprecatedSettingsValidation.class.php 25410 2009-12-15 15:19:07Z fabien $ + */ +class sfDeprecatedSettingsValidation extends sfValidation +{ + public function getHeader() + { + return 'Checking usage of deprecated settings'; + } + + public function getExplanation() + { + return array( + '', + ' The files above use deprecated settings', + ' that have been removed in symfony 1.4.', + '', + ' You can find a list of all deprecated settings under the', + ' "Settings" section of the DEPRECATED tutorial:', + '', + ' http://www.symfony-project.org/tutorial/1_4/en/deprecated', + '', + ); + } + + public function validate() + { + $settings = array( + 'sf_check_symfony_version', 'sf_max_forwards', 'sf_lazy_cache_key', 'sf_strip_comments', + 'sf_lazy_routes_deserialize', 'sf_calendar_web_dir', 'sf_rich_text_js_dir', 'sf_validation_error_prefix', + 'sf_validation_error_suffix', 'sf_validation_error_class', 'sf_validation_error_id_prefix', + '_is_internal', 'sf_doc_dir', + ); + + $found = array(); + $files = sfFinder::type('file')->name('*.php')->prune('vendor')->in(array( + sfConfig::get('sf_apps_dir'), + sfConfig::get('sf_lib_dir'), + sfConfig::get('sf_test_dir'), + sfConfig::get('sf_plugins_dir'), + )); + foreach ($files as $file) + { + $content = sfToolkit::stripComments(file_get_contents($file)); + + $matches = array(); + foreach ($settings as $setting) + { + if (false !== stripos($content, $setting)) + { + $matches[] = $setting; + } + } + + if ($matches) + { + $found[$file] = implode(', ', $matches); + } + } + + return $found; + } +} diff --git a/lib/vendor/symfony/lib/task/project/validation/sfParameterHolderValidation.class.php b/lib/vendor/symfony/lib/task/project/validation/sfParameterHolderValidation.class.php new file mode 100644 index 0000000..737d035 --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/validation/sfParameterHolderValidation.class.php @@ -0,0 +1,65 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Finds usage of array notation with a parameter holder. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id: sfParameterHolderValidation.class.php 25411 2009-12-15 15:31:29Z fabien $ + */ +class sfParameterHolderValidation extends sfValidation +{ + public function getHeader() + { + return 'Checking usage of array notation with a parameter holder'; + } + + public function getExplanation() + { + return array( + '', + ' The files above use the array notation with a parameter holder,', + ' which is not supported anymore in symfony 1.4.', + ' For instance, you need to change this construct:', + '', + ' $foo = $request->getParameter(\'foo[bar]\')', + '', + ' to this one:', + '', + ' $params = $request->getParameter(\'foo\')', + ' $foo = $params[\'bar\'])', + '', + ); + } + + public function validate() + { + $found = array(); + $files = sfFinder::type('file')->name('*.php')->prune('vendor')->in(array( + sfConfig::get('sf_apps_dir'), + sfConfig::get('sf_lib_dir'), + sfConfig::get('sf_test_dir'), + sfConfig::get('sf_plugins_dir'), + )); + foreach ($files as $file) + { + $content = sfToolkit::stripComments(file_get_contents($file)); + + if (preg_match('#\b(get|has|remove)(Request)*Parameter\(\s*[\'"][^\),]*?\[[^\),]#', $content)) + { + $found[$file] = true; + } + } + + return $found; + } +} diff --git a/lib/vendor/symfony/lib/task/project/validation/sfValidation.class.php b/lib/vendor/symfony/lib/task/project/validation/sfValidation.class.php new file mode 100644 index 0000000..32bfaea --- /dev/null +++ b/lib/vendor/symfony/lib/task/project/validation/sfValidation.class.php @@ -0,0 +1,116 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Abstract class for validation classes. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id: sfValidation.class.php 24610 2009-11-30 22:07:34Z FabianLange $ + */ +abstract class sfValidation extends sfBaseTask +{ + protected + $task = null; + + /** + * Validates the current project. + */ + abstract public function validate(); + + abstract public function getHeader(); + + public function execute($arguments = array(), $options = array()) + { + throw new sfException('You can\'t execute this task.'); + } + + /** + * Returns a finder that exclude upgrade scripts from being upgraded! + * + * @param string $type String directory or file or any (for both file and directory) + * + * @return sfFinder A sfFinder instance + */ + protected function getFinder($type) + { + return sfFinder::type($type)->prune('symfony')->discard('symfony'); + } + + /** + * Returns all project directories where you can put PHP classes. + */ + protected function getProjectClassDirectories() + { + return array_merge( + $this->getProjectLibDirectories(), + $this->getProjectActionDirectories() + ); + } + + /** + * Returns all project directories where you can put templates. + */ + protected function getProjectTemplateDirectories() + { + return array_merge( + glob(sfConfig::get('sf_apps_dir').'/*/modules/*/templates'), + glob(sfConfig::get('sf_apps_dir').'/*/templates') + ); + } + + /** + * Returns all project directories where you can put actions and components. + */ + protected function getProjectActionDirectories() + { + return glob(sfConfig::get('sf_apps_dir').'/*/modules/*/actions'); + } + + /** + * Returns all project lib directories. + * + * @param string $subdirectory A subdirectory within lib (i.e. "/form") + */ + protected function getProjectLibDirectories($subdirectory = null) + { + return array_merge( + glob(sfConfig::get('sf_apps_dir').'/*/modules/*/lib'.$subdirectory), + glob(sfConfig::get('sf_apps_dir').'/*/lib'.$subdirectory), + array( + sfConfig::get('sf_apps_dir').'/lib'.$subdirectory, + sfConfig::get('sf_lib_dir').$subdirectory, + ) + ); + } + + /** + * Returns all project config directories. + */ + protected function getProjectConfigDirectories() + { + return array_merge( + glob(sfConfig::get('sf_apps_dir').'/*/modules/*/config'), + glob(sfConfig::get('sf_apps_dir').'/*/config'), + glob(sfConfig::get('sf_config_dir')) + ); + } + + /** + * Returns all application names. + * + * @return array An array of application names + */ + protected function getApplications() + { + return sfFinder::type('dir')->maxdepth(0)->relative()->in(sfConfig::get('sf_apps_dir')); + } +} diff --git a/lib/vendor/symfony/lib/task/sfBaseTask.class.php b/lib/vendor/symfony/lib/task/sfBaseTask.class.php new file mode 100644 index 0000000..774ed24 --- /dev/null +++ b/lib/vendor/symfony/lib/task/sfBaseTask.class.php @@ -0,0 +1,392 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Base class for all symfony tasks. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id: sfBaseTask.class.php 24341 2009-11-24 15:01:58Z Kris.Wallsmith $ + */ +abstract class sfBaseTask extends sfCommandApplicationTask +{ + protected + $configuration = null, + $pluginManager = null; + + /** + * @see sfTask + */ + protected function doRun(sfCommandManager $commandManager, $options) + { + $event = $this->dispatcher->filter(new sfEvent($this, 'command.filter_options', array('command_manager' => $commandManager)), $options); + $options = $event->getReturnValue(); + + $this->process($commandManager, $options); + + $event = new sfEvent($this, 'command.pre_command', array('arguments' => $commandManager->getArgumentValues(), 'options' => $commandManager->getOptionValues())); + $this->dispatcher->notifyUntil($event); + if ($event->isProcessed()) + { + return $event->getReturnValue(); + } + + $this->checkProjectExists(); + + $requiresApplication = $commandManager->getArgumentSet()->hasArgument('application') || $commandManager->getOptionSet()->hasOption('application'); + if (null === $this->configuration || ($requiresApplication && !$this->configuration instanceof sfApplicationConfiguration)) + { + $application = $commandManager->getArgumentSet()->hasArgument('application') ? $commandManager->getArgumentValue('application') : ($commandManager->getOptionSet()->hasOption('application') ? $commandManager->getOptionValue('application') : null); + $env = $commandManager->getOptionSet()->hasOption('env') ? $commandManager->getOptionValue('env') : 'test'; + + if (true === $application) + { + $application = $this->getFirstApplication(); + + if ($commandManager->getOptionSet()->hasOption('application')) + { + $commandManager->setOption($commandManager->getOptionSet()->getOption('application'), $application); + } + } + + $this->configuration = $this->createConfiguration($application, $env); + } + + if (null !== $this->commandApplication && !$this->commandApplication->withTrace()) + { + sfConfig::set('sf_logging_enabled', false); + } + + $ret = $this->execute($commandManager->getArgumentValues(), $commandManager->getOptionValues()); + + $this->dispatcher->notify(new sfEvent($this, 'command.post_command')); + + return $ret; + } + + /** + * Sets the current task's configuration. + * + * @param sfProjectConfiguration $configuration + */ + public function setConfiguration(sfProjectConfiguration $configuration = null) + { + $this->configuration = $configuration; + } + + /** + * Returns the filesystem instance. + * + * @return sfFilesystem A sfFilesystem instance + */ + public function getFilesystem() + { + if (!isset($this->filesystem)) + { + if (null === $this->commandApplication || $this->commandApplication->isVerbose()) + { + $this->filesystem = new sfFilesystem($this->dispatcher, $this->formatter); + } + else + { + $this->filesystem = new sfFilesystem(); + } + } + + return $this->filesystem; + } + + /** + * Checks if the current directory is a symfony project directory. + * + * @return true if the current directory is a symfony project directory, false otherwise + */ + public function checkProjectExists() + { + if (!file_exists('symfony')) + { + throw new sfException('You must be in a symfony project directory.'); + } + } + + /** + * Checks if an application exists. + * + * @param string $app The application name + * + * @return bool true if the application exists, false otherwise + */ + public function checkAppExists($app) + { + if (!is_dir(sfConfig::get('sf_apps_dir').'/'.$app)) + { + throw new sfException(sprintf('Application "%s" does not exist', $app)); + } + } + + /** + * Checks if a module exists. + * + * @param string $app The application name + * @param string $module The module name + * + * @return bool true if the module exists, false otherwise + */ + public function checkModuleExists($app, $module) + { + if (!is_dir(sfConfig::get('sf_apps_dir').'/'.$app.'/modules/'.$module)) + { + throw new sfException(sprintf('Module "%s/%s" does not exist.', $app, $module)); + } + } + + /** + * Creates a configuration object. + * + * @param string $application The application name + * @param string $env The environment name + * + * @return sfProjectConfiguration A sfProjectConfiguration instance + */ + protected function createConfiguration($application, $env) + { + if (null !== $application) + { + $this->checkAppExists($application); + + require_once sfConfig::get('sf_config_dir').'/ProjectConfiguration.class.php'; + + $configuration = ProjectConfiguration::getApplicationConfiguration($application, $env, true, null, $this->dispatcher); + } + else + { + if (file_exists(sfConfig::get('sf_config_dir').'/ProjectConfiguration.class.php')) + { + require_once sfConfig::get('sf_config_dir').'/ProjectConfiguration.class.php'; + $configuration = new ProjectConfiguration(null, $this->dispatcher); + } + else + { + $configuration = new sfProjectConfiguration(getcwd(), $this->dispatcher); + } + + if (null !== $env) + { + sfConfig::set('sf_environment', $env); + } + + $this->initializeAutoload($configuration); + } + + return $configuration; + } + + /** + * Returns the first application in apps. + * + * @return string The Application name + */ + protected function getFirstApplication() + { + if (count($dirs = sfFinder::type('dir')->maxdepth(0)->follow_link()->relative()->in(sfConfig::get('sf_apps_dir')))) + { + return $dirs[0]; + } + + return null; + } + + /** + * Reloads all autoloaders. + * + * This method should be called whenever a task generates new classes that + * are to be loaded by the symfony autoloader. It clears the autoloader + * cache for all applications and environments and the current execution. + * + * @see initializeAutoload() + */ + protected function reloadAutoload() + { + $this->initializeAutoload($this->configuration, true); + } + + /** + * Initializes autoloaders. + * + * @param sfProjectConfiguration $configuration The current project or application configuration + * @param boolean $reload If true, all autoloaders will be reloaded + */ + protected function initializeAutoload(sfProjectConfiguration $configuration, $reload = false) + { + // sfAutoload + if ($reload) + { + $this->logSection('autoload', 'Resetting application autoloaders'); + + $finder = sfFinder::type('file')->name('*autoload.yml.php'); + $this->getFilesystem()->remove($finder->in(sfConfig::get('sf_cache_dir'))); + sfAutoload::getInstance()->reloadClasses(true); + } + + // sfSimpleAutoload + if (!$configuration instanceof sfApplicationConfiguration) + { + // plugins + if ($reload) + { + foreach ($configuration->getPlugins() as $name) + { + $configuration->getPluginConfiguration($name)->initializeAutoload(); + } + } + + // project + $autoload = sfSimpleAutoload::getInstance(sfConfig::get('sf_cache_dir').'/project_autoload.cache'); + $autoload->loadConfiguration(sfFinder::type('file')->name('autoload.yml')->in(array( + sfConfig::get('sf_symfony_lib_dir').'/config/config', + sfConfig::get('sf_config_dir'), + ))); + $autoload->register(); + + if ($reload) + { + $this->logSection('autoload', 'Resetting CLI autoloader'); + $autoload->reload(); + } + } + } + + /** + * Mirrors a directory structure inside the created project. + * + * @param string $dir The directory to mirror + * @param sfFinder $finder A sfFinder instance to use for the mirroring + */ + protected function installDir($dir, $finder = null) + { + if (null === $finder) + { + $finder = sfFinder::type('any')->discard('.sf'); + } + + $this->getFilesystem()->mirror($dir, sfConfig::get('sf_root_dir'), $finder); + } + + /** + * Replaces tokens in files contained in a given directory. + * + * If you don't pass a directory, it will replace in the config/ and lib/ directory. + * + * You can define global tokens by defining the $this->tokens property. + * + * @param array $dirs An array of directory where to do the replacement + * @param array $tokens An array of tokens to use + */ + protected function replaceTokens($dirs = array(), $tokens = array()) + { + if (!$dirs) + { + $dirs = array(sfConfig::get('sf_config_dir'), sfConfig::get('sf_lib_dir')); + } + + $tokens = array_merge(isset($this->tokens) ? $this->tokens : array(), $tokens); + + $this->getFilesystem()->replaceTokens(sfFinder::type('file')->prune('vendor')->in($dirs), '##', '##', $tokens); + } + + /** + * Reloads tasks. + * + * Useful when you install plugins with tasks and if you want to use them with the runTask() method. + */ + protected function reloadTasks() + { + if (null === $this->commandApplication) + { + return; + } + + $this->configuration = $this->createConfiguration(null, null); + + $this->commandApplication->clearTasks(); + $this->commandApplication->loadTasks($this->configuration); + + $disabledPluginsRegex = sprintf('#^(%s)#', implode('|', array_diff($this->configuration->getAllPluginPaths(), $this->configuration->getPluginPaths()))); + $tasks = array(); + foreach (get_declared_classes() as $class) + { + $r = new Reflectionclass($class); + if ($r->isSubclassOf('sfTask') && !$r->isAbstract() && !preg_match($disabledPluginsRegex, $r->getFileName())) + { + $tasks[] = new $class($this->dispatcher, $this->formatter); + } + } + + $this->commandApplication->registerTasks($tasks); + } + + /** + * Enables a plugin in the ProjectConfiguration class. + * + * @param string $plugin The name of the plugin + */ + protected function enablePlugin($plugin) + { + sfSymfonyPluginManager::enablePlugin($plugin, sfConfig::get('sf_config_dir')); + } + + /** + * Disables a plugin in the ProjectConfiguration class. + * + * @param string $plugin The name of the plugin + */ + protected function disablePlugin($plugin) + { + sfSymfonyPluginManager::disablePlugin($plugin, sfConfig::get('sf_config_dir')); + } + + /** + * Returns a plugin manager instance. + * + * @return sfSymfonyPluginManager A sfSymfonyPluginManager instance + */ + protected function getPluginManager() + { + if (null === $this->pluginManager) + { + $environment = new sfPearEnvironment($this->dispatcher, array( + 'plugin_dir' => sfConfig::get('sf_plugins_dir'), + 'cache_dir' => sfConfig::get('sf_cache_dir').'/.pear', + 'web_dir' => sfConfig::get('sf_web_dir'), + 'config_dir' => sfConfig::get('sf_config_dir'), + )); + + $this->pluginManager = new sfSymfonyPluginManager($this->dispatcher, $environment); + } + + return $this->pluginManager; + } + + /** + * @see sfCommandApplicationTask + */ + protected function createTask($name) + { + $task = parent::createTask($name); + + if ($task instanceof sfBaseTask) + { + $task->setConfiguration($this->configuration); + } + + return $task; + } +} diff --git a/lib/vendor/symfony/lib/task/sfCommandApplicationTask.class.php b/lib/vendor/symfony/lib/task/sfCommandApplicationTask.class.php new file mode 100644 index 0000000..2342aee --- /dev/null +++ b/lib/vendor/symfony/lib/task/sfCommandApplicationTask.class.php @@ -0,0 +1,166 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Base class for tasks that depends on a sfCommandApplication object. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id: sfCommandApplicationTask.class.php 23651 2009-11-06 08:08:54Z fabien $ + */ +abstract class sfCommandApplicationTask extends sfTask +{ + protected + $mailer = null, + $routing = null, + $commandApplication = null; + + /** + * Sets the command application instance for this task. + * + * @param sfCommandApplication $commandApplication A sfCommandApplication instance + */ + public function setCommandApplication(sfCommandApplication $commandApplication = null) + { + $this->commandApplication = $commandApplication; + } + + /** + * @see sfTask + */ + public function log($messages) + { + if (null === $this->commandApplication || $this->commandApplication->isVerbose()) + { + parent::log($messages); + } + } + + /** + * @see sfTask + */ + public function logSection($section, $message, $size = null, $style = 'INFO') + { + if (null === $this->commandApplication || $this->commandApplication->isVerbose()) + { + parent::logSection($section, $message, $size, $style); + } + } + + /** + * Creates a new task object. + * + * @param string $name The name of the task + * + * @return sfTask + * + * @throws LogicException If the current task has no command application + */ + protected function createTask($name) + { + if (null === $this->commandApplication) + { + throw new LogicException('Unable to create a task as no command application is associated with this task yet.'); + } + + $task = $this->commandApplication->getTaskToExecute($name); + + if ($task instanceof sfCommandApplicationTask) + { + $task->setCommandApplication($this->commandApplication); + } + + return $task; + } + + /** + * Executes another task in the context of the current one. + * + * @param string $name The name of the task to execute + * @param array $arguments An array of arguments to pass to the task + * @param array $options An array of options to pass to the task + * + * @return Boolean The returned value of the task run() method + * + * @see createTask() + */ + protected function runTask($name, $arguments = array(), $options = array()) + { + return $this->createTask($name)->run($arguments, $options); + } + + /** + * Returns a mailer instance. + * + * Notice that your task should accept an application option. + * The mailer configuration is read from the current configuration + * instance, which is automatically created according to the current + * --application option. + * + * @return sfMailer A sfMailer instance + */ + protected function getMailer() + { + if (!$this->mailer) + { + $this->mailer = $this->initializeMailer(); + } + + return $this->mailer; + } + + protected function initializeMailer() + { + require_once sfConfig::get('sf_symfony_lib_dir').'/vendor/swiftmailer/classes/Swift.php'; + Swift::registerAutoload(); + sfMailer::initialize(); + + $config = sfFactoryConfigHandler::getConfiguration($this->configuration->getConfigPaths('config/factories.yml')); + + return new $config['mailer']['class']($this->dispatcher, $config['mailer']['param']); + } + + /** + * Returns a routing instance. + * + * Notice that your task should accept an application option. + * The routing configuration is read from the current configuration + * instance, which is automatically created according to the current + * --application option. + * + * @return sfRouting A sfRouting instance + */ + protected function getRouting() + { + if (!$this->routing) + { + $this->routing = $this->initializeRouting(); + } + + return $this->routing; + } + + protected function initializeRouting() + { + $config = sfFactoryConfigHandler::getConfiguration($this->configuration->getConfigPaths('config/factories.yml')); + $params = array_merge($config['routing']['param'], array('load_configuration' => false, 'logging' => false)); + + $handler = new sfRoutingConfigHandler(); + $routes = $handler->evaluate($this->configuration->getConfigPaths('config/routing.yml')); + + $routing = new $config['routing']['class']($this->dispatcher, null, $params); + $routing->setRoutes($routes); + + $this->dispatcher->notify(new sfEvent($routing, 'routing.load_configuration')); + + return $routing; + } +} diff --git a/lib/vendor/symfony/lib/task/sfFilesystem.class.php b/lib/vendor/symfony/lib/task/sfFilesystem.class.php new file mode 100644 index 0000000..44bdb49 --- /dev/null +++ b/lib/vendor/symfony/lib/task/sfFilesystem.class.php @@ -0,0 +1,487 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfFilesystem provides basic utility to manipulate the file system. + * + * @package symfony + * @subpackage util + * @author Fabien Potencier + * @version SVN: $Id: sfFilesystem.class.php 31247 2010-10-26 12:26:15Z fabien $ + */ +class sfFilesystem +{ + protected + $dispatcher = null, + $formatter = null; + + /** + * Constructor. + * + * @param sfEventDispatcher $dispatcher An sfEventDispatcher instance + * @param sfFormatter $formatter An sfFormatter instance + */ + public function __construct(sfEventDispatcher $dispatcher = null, sfFormatter $formatter = null) + { + $this->dispatcher = $dispatcher; + $this->formatter = $formatter; + } + + /** + * Copies a file. + * + * This method only copies the file if the origin file is newer than the target file. + * + * By default, if the target already exists, it is not overriden. + * + * To override existing files, pass the "override" option. + * + * @param string $originFile The original filename + * @param string $targetFile The target filename + * @param array $options An array of options + */ + public function copy($originFile, $targetFile, $options = array()) + { + if (!array_key_exists('override', $options)) + { + $options['override'] = false; + } + + // we create target_dir if needed + if (!is_dir(dirname($targetFile))) + { + $this->mkdirs(dirname($targetFile)); + } + + $mostRecent = false; + if (file_exists($targetFile)) + { + $statTarget = stat($targetFile); + $stat_origin = stat($originFile); + $mostRecent = ($stat_origin['mtime'] > $statTarget['mtime']) ? true : false; + } + + if ($options['override'] || !file_exists($targetFile) || $mostRecent) + { + $this->logSection('file+', $targetFile); + copy($originFile, $targetFile); + } + } + + /** + * Creates a directory recursively. + * + * @param string $path The directory path + * @param int $mode The directory mode + * + * @return bool true if the directory has been created, false otherwise + */ + public function mkdirs($path, $mode = 0777) + { + if (is_dir($path)) + { + return true; + } + + $this->logSection('dir+', $path); + + return @mkdir($path, $mode, true); + } + + /** + * Creates empty files. + * + * @param mixed $files The filename, or an array of filenames + */ + public function touch($files) + { + if (!is_array($files)) + { + $files = array($files); + } + + foreach ($files as $file) + { + $this->logSection('file+', $file); + + touch($file); + } + } + + /** + * Removes files or directories. + * + * @param mixed $files A filename or an array of files to remove + */ + public function remove($files) + { + if (!is_array($files)) + { + $files = array($files); + } + + $files = array_reverse($files); + foreach ($files as $file) + { + if (is_dir($file) && !is_link($file)) + { + $this->logSection('dir-', $file); + + rmdir($file); + } + else + { + $this->logSection(is_link($file) ? 'link-' : 'file-', $file); + + unlink($file); + } + } + } + + /** + * Change mode for an array of files or directories. + * + * @param array $files An array of files or directories + * @param integer $mode The new mode + * @param integer $umask The mode mask (octal) + */ + public function chmod($files, $mode, $umask = 0000) + { + $currentUmask = umask(); + umask($umask); + + if (!is_array($files)) + { + $files = array($files); + } + + foreach ($files as $file) + { + $this->logSection(sprintf('chmod %o', $mode), $file); + chmod($file, $mode); + } + + umask($currentUmask); + } + + /** + * Renames a file. + * + * @param string $origin The origin filename + * @param string $target The new filename + */ + public function rename($origin, $target) + { + // we check that target does not exist + if (is_readable($target)) + { + throw new sfException(sprintf('Cannot rename because the target "%s" already exist.', $target)); + } + + $this->logSection('rename', $origin.' > '.$target); + rename($origin, $target); + } + + /** + * Creates a symbolic link or copy a directory. + * + * @param string $originDir The origin directory path + * @param string $targetDir The symbolic link name + * @param bool $copyOnWindows Whether to copy files if on windows + */ + public function symlink($originDir, $targetDir, $copyOnWindows = false) + { + if ('\\' == DIRECTORY_SEPARATOR && $copyOnWindows) + { + $finder = sfFinder::type('any'); + $this->mirror($originDir, $targetDir, $finder); + return; + } + + $ok = false; + if (is_link($targetDir)) + { + if (readlink($targetDir) != $originDir) + { + unlink($targetDir); + } + else + { + $ok = true; + } + } + + if (!$ok) + { + $this->logSection('link+', $targetDir); + symlink($originDir, $targetDir); + } + } + + /** + * Creates a symbolic link using a relative path if possible. + * + * @param string $originDir The origin directory path + * @param string $targetDir The symbolic link name + * @param bool $copyOnWindows Whether to copy files if on windows + */ + public function relativeSymlink($originDir, $targetDir, $copyOnWindows = false) + { + if ('\\' != DIRECTORY_SEPARATOR || !$copyOnWindows) + { + $originDir = $this->calculateRelativeDir($targetDir, $originDir); + } + + $this->symlink($originDir, $targetDir, $copyOnWindows); + } + + /** + * Mirrors a directory to another. + * + * @param string $originDir The origin directory + * @param string $targetDir The target directory + * @param sfFinder $finder An sfFinder instance + * @param array $options An array of options (see copy()) + */ + public function mirror($originDir, $targetDir, $finder, $options = array()) + { + foreach ($finder->relative()->in($originDir) as $file) + { + if (is_dir($originDir.DIRECTORY_SEPARATOR.$file)) + { + $this->mkdirs($targetDir.DIRECTORY_SEPARATOR.$file); + } + else if (is_file($originDir.DIRECTORY_SEPARATOR.$file)) + { + $this->copy($originDir.DIRECTORY_SEPARATOR.$file, $targetDir.DIRECTORY_SEPARATOR.$file, $options); + } + else if (is_link($originDir.DIRECTORY_SEPARATOR.$file)) + { + $this->symlink($originDir.DIRECTORY_SEPARATOR.$file, $targetDir.DIRECTORY_SEPARATOR.$file); + } + else + { + throw new sfException(sprintf('Unable to guess "%s" file type.', $file)); + } + } + } + + /** + * Executes a shell command. + * + * @param string $cmd The command to execute on the shell + * @param array $stdoutCallback A callback for stdout output + * @param array $stderrCallback A callback for stderr output + * + * @return array An array composed of the content output and the error output + */ + public function execute($cmd, $stdoutCallback = null, $stderrCallback = null) + { + $this->logSection('exec ', $cmd); + + $descriptorspec = array( + 1 => array('pipe', 'w'), // stdout + 2 => array('pipe', 'w'), // stderr + ); + + $process = proc_open($cmd, $descriptorspec, $pipes); + if (!is_resource($process)) + { + throw new RuntimeException('Unable to execute the command.'); + } + + stream_set_blocking($pipes[1], false); + stream_set_blocking($pipes[2], false); + + $output = ''; + $err = ''; + while (!feof($pipes[1]) || !feof($pipes[2])) + { + foreach ($pipes as $key => $pipe) + { + if (!$line = fread($pipe, 128)) + { + continue; + } + + if (1 == $key) + { + // stdout + $output .= $line; + if ($stdoutCallback) + { + call_user_func($stdoutCallback, $line); + } + } + else + { + // stderr + $err .= $line; + if ($stderrCallback) + { + call_user_func($stderrCallback, $line); + } + } + } + + usleep(100000); + } + + fclose($pipes[1]); + fclose($pipes[2]); + + if (($return = proc_close($process)) > 0) + { + throw new RuntimeException('Problem executing command.', $return); + } + + return array($output, $err); + } + + /** + * Replaces tokens in an array of files. + * + * @param array $files An array of filenames + * @param string $beginToken The begin token delimiter + * @param string $endToken The end token delimiter + * @param array $tokens An array of token/value pairs + */ + public function replaceTokens($files, $beginToken, $endToken, $tokens) + { + if (!is_array($files)) + { + $files = array($files); + } + + foreach ($files as $file) + { + $content = file_get_contents($file); + foreach ($tokens as $key => $value) + { + $content = str_replace($beginToken.$key.$endToken, $value, $content, $count); + } + + $this->logSection('tokens', $file); + + file_put_contents($file, $content); + } + } + + /** + * Logs a message in a section. + * + * @param string $section The section name + * @param string $message The message + * @param int $size The maximum size of a line + */ + protected function logSection($section, $message, $size = null) + { + if (!$this->dispatcher) + { + return; + } + + $message = $this->formatter ? $this->formatter->formatSection($section, $message, $size) : $section.' '.$message."\n"; + + $this->dispatcher->notify(new sfEvent($this, 'command.log', array($message))); + } + + /** + * Calculates the relative path from one to another directory. + * + * If the paths share no common path the absolute target dir is returned. + * + * @param string $from The directory from which to calculate the relative path + * @param string $to The target directory + * + * @return string + */ + protected function calculateRelativeDir($from, $to) + { + $from = $this->canonicalizePath($from); + $to = $this->canonicalizePath($to); + + $commonLength = 0; + $minPathLength = min(strlen($from), strlen($to)); + + // count how many chars the strings have in common + for ($i = 0; $i < $minPathLength; $i++) + { + if ($from[$i] != $to[$i]) + { + break; + } + + if (DIRECTORY_SEPARATOR == $from[$i]) + { + $commonLength = $i + 1; + } + } + + if ($commonLength) + { + if (extension_loaded('mbstring')) + { + $levelUp = mb_substr_count(mb_strcut($from, $commonLength), DIRECTORY_SEPARATOR); + } + else + { + $levelUp = substr_count($from, DIRECTORY_SEPARATOR, $commonLength); + } + + // up that many level + $relativeDir = str_repeat('..'.DIRECTORY_SEPARATOR, $levelUp); + + // down the remaining $to path + $relativeDir .= substr($to, $commonLength); + + return $relativeDir; + } + + return $to; + } + + /** + * @param string A filesystem path + * + * @return string + */ + protected function canonicalizePath($path) + { + if (empty($path)) + { + return ''; + } + + $out = array(); + foreach (explode(DIRECTORY_SEPARATOR, $path) as $i => $fold) + { + if ('' == $fold || '.' == $fold) + { + continue; + } + + if ('..' == $fold && $i > 0 && '..' != end($out)) + { + array_pop($out); + } + else + { + $out[] = $fold; + } + } + + $result = DIRECTORY_SEPARATOR == $path[0] ? DIRECTORY_SEPARATOR : ''; + $result .= implode(DIRECTORY_SEPARATOR, $out); + $result .= DIRECTORY_SEPARATOR == $path[strlen($path) - 1] ? DIRECTORY_SEPARATOR : ''; + + return $result; + } +} diff --git a/lib/vendor/symfony/lib/task/sfTask.class.php b/lib/vendor/symfony/lib/task/sfTask.class.php new file mode 100644 index 0000000..9baba32 --- /dev/null +++ b/lib/vendor/symfony/lib/task/sfTask.class.php @@ -0,0 +1,664 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Abstract class for all tasks. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id: sfTask.class.php 33151 2011-10-24 08:55:03Z fabien $ + */ +abstract class sfTask +{ + protected + $namespace = '', + $name = null, + $aliases = array(), + $briefDescription = '', + $detailedDescription = '', + $arguments = array(), + $options = array(), + $dispatcher = null, + $formatter = null; + + /** + * Constructor. + * + * @param sfEventDispatcher $dispatcher An sfEventDispatcher instance + * @param sfFormatter $formatter An sfFormatter instance + */ + public function __construct(sfEventDispatcher $dispatcher, sfFormatter $formatter) + { + $this->initialize($dispatcher, $formatter); + + $this->configure(); + } + + /** + * Initializes the sfTask instance. + * + * @param sfEventDispatcher $dispatcher A sfEventDispatcher instance + * @param sfFormatter $formatter A sfFormatter instance + */ + public function initialize(sfEventDispatcher $dispatcher, sfFormatter $formatter) + { + $this->dispatcher = $dispatcher; + $this->formatter = $formatter; + } + + /** + * Configures the current task. + */ + protected function configure() + { + } + + /** + * Returns the formatter instance. + * + * @return sfFormatter The formatter instance + */ + public function getFormatter() + { + return $this->formatter; + } + + /** + * Sets the formatter instance. + * + * @param sfFormatter The formatter instance + */ + public function setFormatter(sfFormatter $formatter) + { + $this->formatter = $formatter; + } + + /** + * Runs the task from the CLI. + * + * @param sfCommandManager $commandManager An sfCommandManager instance + * @param mixed $options The command line options + * + * @return integer 0 if everything went fine, or an error code + */ + public function runFromCLI(sfCommandManager $commandManager, $options = null) + { + $commandManager->getArgumentSet()->addArguments($this->getArguments()); + $commandManager->getOptionSet()->addOptions($this->getOptions()); + + return $this->doRun($commandManager, $options); + } + + /** + * Runs the task. + * + * @param array|string $arguments An array of arguments or a string representing the CLI arguments and options + * @param array $options An array of options + * + * @return integer 0 if everything went fine, or an error code + */ + public function run($arguments = array(), $options = array()) + { + $commandManager = new sfCommandManager(new sfCommandArgumentSet($this->getArguments()), new sfCommandOptionSet($this->getOptions())); + + if (is_array($arguments) && is_string(key($arguments))) + { + // index arguments by name for ordering and reference + $indexArguments = array(); + foreach ($this->arguments as $argument) + { + $indexArguments[$argument->getName()] = $argument; + } + + foreach ($arguments as $name => $value) + { + if (false !== $pos = array_search($name, array_keys($indexArguments))) + { + if ($indexArguments[$name]->isArray()) + { + $value = join(' ', (array) $value); + $arguments[$pos] = isset($arguments[$pos]) ? $arguments[$pos].' '.$value : $value; + } + else + { + $arguments[$pos] = $value; + } + + unset($arguments[$name]); + } + } + + ksort($arguments); + } + + // index options by name for reference + $indexedOptions = array(); + foreach ($this->options as $option) + { + $indexedOptions[$option->getName()] = $option; + } + + foreach ($options as $name => $value) + { + if (is_string($name)) + { + if (false === $value || null === $value || (isset($indexedOptions[$name]) && $indexedOptions[$name]->isArray() && !$value)) + { + unset($options[$name]); + continue; + } + + // convert associative array + $value = true === $value ? $name : sprintf('%s=%s', $name, isset($indexedOptions[$name]) && $indexedOptions[$name]->isArray() ? join(' --'.$name.'=', (array) $value) : $value); + } + + // add -- before each option if needed + if (0 !== strpos($value, '--')) + { + $value = '--'.$value; + } + + $options[] = $value; + unset($options[$name]); + } + + return $this->doRun($commandManager, is_string($arguments) ? $arguments : implode(' ', array_merge($arguments, $options))); + } + + /** + * Returns the argument objects. + * + * @return sfCommandArgument An array of sfCommandArgument objects. + */ + public function getArguments() + { + return $this->arguments; + } + + /** + * Adds an array of argument objects. + * + * @param array $arguments An array of arguments + */ + public function addArguments($arguments) + { + $this->arguments = array_merge($this->arguments, $arguments); + } + + /** + * Add an argument. + * + * This method always use the sfCommandArgument class to create an option. + * + * @see sfCommandArgument::__construct() + */ + public function addArgument($name, $mode = null, $help = '', $default = null) + { + $this->arguments[] = new sfCommandArgument($name, $mode, $help, $default); + } + + /** + * Returns the options objects. + * + * @return sfCommandOption An array of sfCommandOption objects. + */ + public function getOptions() + { + return $this->options; + } + + /** + * Adds an array of option objects. + * + * @param array $options An array of options + */ + public function addOptions($options) + { + $this->options = array_merge($this->options, $options); + } + + /** + * Add an option. + * + * This method always use the sfCommandOption class to create an option. + * + * @see sfCommandOption::__construct() + */ + public function addOption($name, $shortcut = null, $mode = null, $help = '', $default = null) + { + $this->options[] = new sfCommandOption($name, $shortcut, $mode, $help, $default); + } + + /** + * Returns the task namespace. + * + * @return string The task namespace + */ + public function getNamespace() + { + return $this->namespace; + } + + /** + * Returns the task name + * + * @return string The task name + */ + public function getName() + { + if ($this->name) + { + return $this->name; + } + + $name = get_class($this); + + if ('sf' == substr($name, 0, 2)) + { + $name = substr($name, 2); + } + + if ('Task' == substr($name, -4)) + { + $name = substr($name, 0, -4); + } + + return str_replace('_', '-', sfInflector::underscore($name)); + } + + /** + * Returns the fully qualified task name. + * + * @return string The fully qualified task name + */ + final function getFullName() + { + return $this->getNamespace() ? $this->getNamespace().':'.$this->getName() : $this->getName(); + } + + /** + * Returns the brief description for the task. + * + * @return string The brief description for the task + */ + public function getBriefDescription() + { + return $this->briefDescription; + } + + /** + * Returns the detailed description for the task. + * + * It also formats special string like [...|COMMENT] + * depending on the current formatter. + * + * @return string The detailed description for the task + */ + public function getDetailedDescription() + { + return preg_replace('/\[(.+?)\|(\w+)\]/se', '$this->formatter->format("$1", "$2")', $this->detailedDescription); + } + + /** + * Returns the aliases for the task. + * + * @return array An array of aliases for the task + */ + public function getAliases() + { + return $this->aliases; + } + + /** + * Returns the synopsis for the task. + * + * @return string The synopsis + */ + public function getSynopsis() + { + $options = array(); + foreach ($this->getOptions() as $option) + { + $shortcut = $option->getShortcut() ? sprintf('-%s|', $option->getShortcut()) : ''; + $options[] = sprintf('['.($option->isParameterRequired() ? '%s--%s="..."' : ($option->isParameterOptional() ? '%s--%s[="..."]' : '%s--%s')).']', $shortcut, $option->getName()); + } + + $arguments = array(); + foreach ($this->getArguments() as $argument) + { + $arguments[] = sprintf($argument->isRequired() ? '%s' : '[%s]', $argument->getName().($argument->isArray() ? '1' : '')); + + if ($argument->isArray()) + { + $arguments[] = sprintf('... [%sN]', $argument->getName()); + } + } + + return sprintf('%%s %s %s %s', $this->getFullName(), implode(' ', $options), implode(' ', $arguments)); + } + + protected function process(sfCommandManager $commandManager, $options) + { + $commandManager->process($options); + if (!$commandManager->isValid()) + { + throw new sfCommandArgumentsException(sprintf("The execution of task \"%s\" failed.\n- %s", $this->getFullName(), implode("\n- ", $commandManager->getErrors()))); + } + } + + protected function doRun(sfCommandManager $commandManager, $options) + { + $event = $this->dispatcher->filter(new sfEvent($this, 'command.filter_options', array('command_manager' => $commandManager)), $options); + $options = $event->getReturnValue(); + + $this->process($commandManager, $options); + + $event = new sfEvent($this, 'command.pre_command', array('arguments' => $commandManager->getArgumentValues(), 'options' => $commandManager->getOptionValues())); + $this->dispatcher->notifyUntil($event); + if ($event->isProcessed()) + { + return $event->getReturnValue(); + } + + $ret = $this->execute($commandManager->getArgumentValues(), $commandManager->getOptionValues()); + + $this->dispatcher->notify(new sfEvent($this, 'command.post_command')); + + return $ret; + } + + /** + * Logs a message. + * + * @param mixed $messages The message as an array of lines of a single string + */ + public function log($messages) + { + if (!is_array($messages)) + { + $messages = array($messages); + } + + $this->dispatcher->notify(new sfEvent($this, 'command.log', $messages)); + } + + /** + * Logs a message in a section. + * + * @param string $section The section name + * @param string $message The message + * @param int $size The maximum size of a line + * @param string $style The color scheme to apply to the section string (INFO, ERROR, or COMMAND) + */ + public function logSection($section, $message, $size = null, $style = 'INFO') + { + $this->dispatcher->notify(new sfEvent($this, 'command.log', array($this->formatter->formatSection($section, $message, $size, $style)))); + } + + /** + * Logs a message as a block of text. + * + * @param string|array $messages The message to display in the block + * @param string $style The style to use + */ + public function logBlock($messages, $style) + { + if (!is_array($messages)) + { + $messages = array($messages); + } + + $style = str_replace('_LARGE', '', $style, $count); + $large = (Boolean) $count; + + $len = 0; + $lines = array(); + foreach ($messages as $message) + { + $lines[] = sprintf($large ? ' %s ' : ' %s ', $message); + $len = max($this->strlen($message) + ($large ? 4 : 2), $len); + } + + $messages = $large ? array(str_repeat(' ', $len)) : array(); + foreach ($lines as $line) + { + $messages[] = $line.str_repeat(' ', $len - $this->strlen($line)); + } + if ($large) + { + $messages[] = str_repeat(' ', $len); + } + + foreach ($messages as $message) + { + $this->log($this->formatter->format($message, $style)); + } + } + + /** + * Asks a question to the user. + * + * @param string|array $question The question to ask + * @param string $style The style to use (QUESTION by default) + * @param string $default The default answer if none is given by the user + * + * @param string The user answer + */ + public function ask($question, $style = 'QUESTION', $default = null) + { + if (false === $style) + { + $this->log($question); + } + else + { + $this->logBlock($question, null === $style ? 'QUESTION' : $style); + } + + $ret = trim(fgets(STDIN)); + + return $ret ? $ret : $default; + } + + /** + * Asks a confirmation to the user. + * + * The question will be asked until the user answer by nothing, yes, or no. + * + * @param string|array $question The question to ask + * @param string $style The style to use (QUESTION by default) + * @param Boolean $default The default answer if the user enters nothing + * + * @param Boolean true if the user has confirmed, false otherwise + */ + public function askConfirmation($question, $style = 'QUESTION', $default = true) + { + $answer = 'z'; + while ($answer && !in_array(strtolower($answer[0]), array('y', 'n'))) + { + $answer = $this->ask($question, $style); + } + + if (false === $default) + { + return $answer && 'y' == strtolower($answer[0]); + } + else + { + return !$answer || 'y' == strtolower($answer[0]); + } + } + + /** + * Asks for a value and validates the response. + * + * Available options: + * + * * value: A value to try against the validator before asking the user + * * attempts: Max number of times to ask before giving up (false by default, which means infinite) + * * style: Style for question output (QUESTION by default) + * + * @param string|array $question + * @param sfValidatorBase $validator + * @param array $options + * + * @return mixed + */ + public function askAndValidate($question, sfValidatorBase $validator, array $options = array()) + { + if (!is_array($question)) + { + $question = array($question); + } + + $options = array_merge(array( + 'value' => null, + 'attempts' => false, + 'style' => 'QUESTION', + ), $options); + + // does the provided value passes the validator? + if ($options['value']) + { + try + { + return $validator->clean($options['value']); + } + catch (sfValidatorError $error) + { + } + } + + // no, ask the user for a valid user + $error = null; + while (false === $options['attempts'] || $options['attempts']--) + { + if (null !== $error) + { + $this->logBlock($error->getMessage(), 'ERROR'); + } + + $value = $this->ask($question, $options['style'], null); + + try + { + return $validator->clean($value); + } + catch (sfValidatorError $error) + { + } + } + + throw $error; + } + + /** + * Returns an XML representation of a task. + * + * @return string An XML string representing the task + */ + public function asXml() + { + $dom = new DOMDocument('1.0', 'UTF-8'); + $dom->formatOutput = true; + $dom->appendChild($taskXML = $dom->createElement('task')); + $taskXML->setAttribute('id', $this->getFullName()); + $taskXML->setAttribute('namespace', $this->getNamespace() ? $this->getNamespace() : '_global'); + $taskXML->setAttribute('name', $this->getName()); + + $taskXML->appendChild($usageXML = $dom->createElement('usage')); + $usageXML->appendChild($dom->createTextNode(sprintf($this->getSynopsis(), ''))); + + $taskXML->appendChild($descriptionXML = $dom->createElement('description')); + $descriptionXML->appendChild($dom->createTextNode(implode("\n ", explode("\n", $this->getBriefDescription())))); + + $taskXML->appendChild($helpXML = $dom->createElement('help')); + $help = $this->detailedDescription; + $help = str_replace(array('|COMMENT', '|INFO'), array('|strong', '|em'), $help); + $help = preg_replace('/\[(.+?)\|(\w+)\]/s', '<$2>$1', $help); + $helpXML->appendChild($dom->createTextNode(implode("\n ", explode("\n", $help)))); + + $taskXML->appendChild($aliasesXML = $dom->createElement('aliases')); + foreach ($this->getAliases() as $alias) + { + $aliasesXML->appendChild($aliasXML = $dom->createElement('alias')); + $aliasXML->appendChild($dom->createTextNode($alias)); + } + + $taskXML->appendChild($argumentsXML = $dom->createElement('arguments')); + foreach ($this->getArguments() as $argument) + { + $argumentsXML->appendChild($argumentXML = $dom->createElement('argument')); + $argumentXML->setAttribute('name', $argument->getName()); + $argumentXML->setAttribute('is_required', $argument->isRequired() ? 1 : 0); + $argumentXML->setAttribute('is_array', $argument->isArray() ? 1 : 0); + $argumentXML->appendChild($helpXML = $dom->createElement('description')); + $helpXML->appendChild($dom->createTextNode($argument->getHelp())); + + $argumentXML->appendChild($defaultsXML = $dom->createElement('defaults')); + $defaults = is_array($argument->getDefault()) ? $argument->getDefault() : ($argument->getDefault() ? array($argument->getDefault()) : array()); + foreach ($defaults as $default) + { + $defaultsXML->appendChild($defaultXML = $dom->createElement('default')); + $defaultXML->appendChild($dom->createTextNode($default)); + } + } + + $taskXML->appendChild($optionsXML = $dom->createElement('options')); + foreach ($this->getOptions() as $option) + { + $optionsXML->appendChild($optionXML = $dom->createElement('option')); + $optionXML->setAttribute('name', '--'.$option->getName()); + $optionXML->setAttribute('shortcut', $option->getShortcut() ? '-'.$option->getShortcut() : ''); + $optionXML->setAttribute('accept_parameter', $option->acceptParameter() ? 1 : 0); + $optionXML->setAttribute('is_parameter_required', $option->isParameterRequired() ? 1 : 0); + $optionXML->setAttribute('is_multiple', $option->isArray() ? 1 : 0); + $optionXML->appendChild($helpXML = $dom->createElement('description')); + $helpXML->appendChild($dom->createTextNode($option->getHelp())); + + if ($option->acceptParameter()) + { + $optionXML->appendChild($defaultsXML = $dom->createElement('defaults')); + $defaults = is_array($option->getDefault()) ? $option->getDefault() : ($option->getDefault() ? array($option->getDefault()) : array()); + foreach ($defaults as $default) + { + $defaultsXML->appendChild($defaultXML = $dom->createElement('default')); + $defaultXML->appendChild($dom->createTextNode($default)); + } + } + } + + return $dom->saveXml(); + } + + /** + * Executes the current task. + * + * @param array $arguments An array of arguments + * @param array $options An array of options + * + * @return integer 0 if everything went fine, or an error code + */ + abstract protected function execute($arguments = array(), $options = array()); + + protected function strlen($string) + { + if (!function_exists('mb_strlen')) { + return strlen($string); + } + + if (false === $encoding = mb_detect_encoding($string)) { + return strlen($string); + } + + return mb_strlen($string, $encoding); + } +} diff --git a/lib/vendor/symfony/lib/task/symfony/.svn/all-wcprops b/lib/vendor/symfony/lib/task/symfony/.svn/all-wcprops new file mode 100644 index 0000000..fd5e616 --- /dev/null +++ b/lib/vendor/symfony/lib/task/symfony/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 45 +/!svn/ver/23881/branches/1.4/lib/task/symfony +END +lime_symfony.php +K 25 +svn:wc:ra_dav:version-url +V 62 +/!svn/ver/23881/branches/1.4/lib/task/symfony/lime_symfony.php +END +sfSymfonyTestTask.class.php +K 25 +svn:wc:ra_dav:version-url +V 73 +/!svn/ver/23881/branches/1.4/lib/task/symfony/sfSymfonyTestTask.class.php +END diff --git a/lib/vendor/symfony/lib/task/symfony/.svn/entries b/lib/vendor/symfony/lib/task/symfony/.svn/entries new file mode 100644 index 0000000..145fd1a --- /dev/null +++ b/lib/vendor/symfony/lib/task/symfony/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/task/symfony +http://svn.symfony-project.com + + + +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +lime_symfony.php +file + + + + +2012-05-10T18:41:04.313547Z +2ffe66cd63af34558fe1e20074f1d1fc +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +676 + +sfSymfonyTestTask.class.php +file + + + + +2012-05-10T18:41:04.313547Z +c86f8e7395543cd49c33f22dd064bb7d +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +3645 + diff --git a/lib/vendor/symfony/lib/task/symfony/.svn/prop-base/lime_symfony.php.svn-base b/lib/vendor/symfony/lib/task/symfony/.svn/prop-base/lime_symfony.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/lib/task/symfony/.svn/prop-base/lime_symfony.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/lib/task/symfony/.svn/prop-base/sfSymfonyTestTask.class.php.svn-base b/lib/vendor/symfony/lib/task/symfony/.svn/prop-base/sfSymfonyTestTask.class.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/lib/task/symfony/.svn/prop-base/sfSymfonyTestTask.class.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/lib/task/symfony/.svn/text-base/lime_symfony.php.svn-base b/lib/vendor/symfony/lib/task/symfony/.svn/text-base/lime_symfony.php.svn-base new file mode 100644 index 0000000..6c68575 --- /dev/null +++ b/lib/vendor/symfony/lib/task/symfony/.svn/text-base/lime_symfony.php.svn-base @@ -0,0 +1,23 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +class lime_symfony extends lime_harness +{ + protected function get_relative_file($file) + { + $file = str_replace(DIRECTORY_SEPARATOR, '/', str_replace(array( + realpath($this->base_dir).DIRECTORY_SEPARATOR, + realpath($this->base_dir.'/../lib/plugins').DIRECTORY_SEPARATOR, + $this->extension, + ), '', $file)); + + return preg_replace('#^(.*?)Plugin/test/(unit|functional)/#', '[$1] $2/', $file); + } +} diff --git a/lib/vendor/symfony/lib/task/symfony/.svn/text-base/sfSymfonyTestTask.class.php.svn-base b/lib/vendor/symfony/lib/task/symfony/.svn/text-base/sfSymfonyTestTask.class.php.svn-base new file mode 100644 index 0000000..992e718 --- /dev/null +++ b/lib/vendor/symfony/lib/task/symfony/.svn/text-base/sfSymfonyTestTask.class.php.svn-base @@ -0,0 +1,126 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Launches the symfony test suite. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfSymfonyTestTask extends sfTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->addOptions(array( + new sfCommandOption('update-autoloader', 'u', sfCommandOption::PARAMETER_NONE, 'Update the sfCoreAutoload class'), + new sfCommandOption('only-failed', 'f', sfCommandOption::PARAMETER_NONE, 'Only run tests that failed last time'), + new sfCommandOption('xml', null, sfCommandOption::PARAMETER_REQUIRED, 'The file name for the JUnit compatible XML log file'), + new sfCommandOption('rebuild-all', null, sfCommandOption::PARAMETER_NONE, 'Rebuild all generated fixture files'), + )); + + $this->namespace = 'symfony'; + $this->name = 'test'; + $this->briefDescription = 'Launches the symfony test suite'; + + $this->detailedDescription = << $options['color'], 'verbose' => $options['trace'])); + $h->base_dir = realpath(dirname(__FILE__).'/../../../test'); + + // remove generated files + if ($options['rebuild-all']) + { + $finder = sfFinder::type('dir')->name(array('base', 'om', 'map')); + foreach ($finder->in(glob($h->base_dir.'/../lib/plugins/*/test/functional/fixtures/lib')) as $dir) + { + sfToolkit::clearDirectory($dir); + } + } + + if ($status) + { + foreach ($status as $file) + { + $h->register($file); + } + } + else + { + $h->register(sfFinder::type('file')->prune('fixtures')->name('*Test.php')->in(array_merge( + // unit tests + array($h->base_dir.'/unit'), + glob($h->base_dir.'/../lib/plugins/*/test/unit'), + + // functional tests + array($h->base_dir.'/functional'), + glob($h->base_dir.'/../lib/plugins/*/test/functional'), + + // other tests + array($h->base_dir.'/other') + ))); + } + + $ret = $h->run() ? 0 : 1; + + file_put_contents($statusFile, serialize($h->get_failed_files())); + + if ($options['xml']) + { + file_put_contents($options['xml'], $h->to_xml()); + } + + return $ret; + } +} diff --git a/lib/vendor/symfony/lib/task/symfony/lime_symfony.php b/lib/vendor/symfony/lib/task/symfony/lime_symfony.php new file mode 100644 index 0000000..6c68575 --- /dev/null +++ b/lib/vendor/symfony/lib/task/symfony/lime_symfony.php @@ -0,0 +1,23 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +class lime_symfony extends lime_harness +{ + protected function get_relative_file($file) + { + $file = str_replace(DIRECTORY_SEPARATOR, '/', str_replace(array( + realpath($this->base_dir).DIRECTORY_SEPARATOR, + realpath($this->base_dir.'/../lib/plugins').DIRECTORY_SEPARATOR, + $this->extension, + ), '', $file)); + + return preg_replace('#^(.*?)Plugin/test/(unit|functional)/#', '[$1] $2/', $file); + } +} diff --git a/lib/vendor/symfony/lib/task/symfony/sfSymfonyTestTask.class.php b/lib/vendor/symfony/lib/task/symfony/sfSymfonyTestTask.class.php new file mode 100644 index 0000000..f380fa6 --- /dev/null +++ b/lib/vendor/symfony/lib/task/symfony/sfSymfonyTestTask.class.php @@ -0,0 +1,126 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Launches the symfony test suite. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id: sfSymfonyTestTask.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $ + */ +class sfSymfonyTestTask extends sfTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->addOptions(array( + new sfCommandOption('update-autoloader', 'u', sfCommandOption::PARAMETER_NONE, 'Update the sfCoreAutoload class'), + new sfCommandOption('only-failed', 'f', sfCommandOption::PARAMETER_NONE, 'Only run tests that failed last time'), + new sfCommandOption('xml', null, sfCommandOption::PARAMETER_REQUIRED, 'The file name for the JUnit compatible XML log file'), + new sfCommandOption('rebuild-all', null, sfCommandOption::PARAMETER_NONE, 'Rebuild all generated fixture files'), + )); + + $this->namespace = 'symfony'; + $this->name = 'test'; + $this->briefDescription = 'Launches the symfony test suite'; + + $this->detailedDescription = << $options['color'], 'verbose' => $options['trace'])); + $h->base_dir = realpath(dirname(__FILE__).'/../../../test'); + + // remove generated files + if ($options['rebuild-all']) + { + $finder = sfFinder::type('dir')->name(array('base', 'om', 'map')); + foreach ($finder->in(glob($h->base_dir.'/../lib/plugins/*/test/functional/fixtures/lib')) as $dir) + { + sfToolkit::clearDirectory($dir); + } + } + + if ($status) + { + foreach ($status as $file) + { + $h->register($file); + } + } + else + { + $h->register(sfFinder::type('file')->prune('fixtures')->name('*Test.php')->in(array_merge( + // unit tests + array($h->base_dir.'/unit'), + glob($h->base_dir.'/../lib/plugins/*/test/unit'), + + // functional tests + array($h->base_dir.'/functional'), + glob($h->base_dir.'/../lib/plugins/*/test/functional'), + + // other tests + array($h->base_dir.'/other') + ))); + } + + $ret = $h->run() ? 0 : 1; + + file_put_contents($statusFile, serialize($h->get_failed_files())); + + if ($options['xml']) + { + file_put_contents($options['xml'], $h->to_xml()); + } + + return $ret; + } +} diff --git a/lib/vendor/symfony/lib/task/test/.svn/all-wcprops b/lib/vendor/symfony/lib/task/test/.svn/all-wcprops new file mode 100644 index 0000000..39820d4 --- /dev/null +++ b/lib/vendor/symfony/lib/task/test/.svn/all-wcprops @@ -0,0 +1,41 @@ +K 25 +svn:wc:ra_dav:version-url +V 42 +/!svn/ver/29415/branches/1.4/lib/task/test +END +sfTestBaseTask.class.php +K 25 +svn:wc:ra_dav:version-url +V 67 +/!svn/ver/23881/branches/1.4/lib/task/test/sfTestBaseTask.class.php +END +sfTestCoverageTask.class.php +K 25 +svn:wc:ra_dav:version-url +V 71 +/!svn/ver/25036/branches/1.4/lib/task/test/sfTestCoverageTask.class.php +END +sfTestUnitTask.class.php +K 25 +svn:wc:ra_dav:version-url +V 67 +/!svn/ver/29415/branches/1.4/lib/task/test/sfTestUnitTask.class.php +END +sfTestFunctionalTask.class.php +K 25 +svn:wc:ra_dav:version-url +V 73 +/!svn/ver/29415/branches/1.4/lib/task/test/sfTestFunctionalTask.class.php +END +sfLimeHarness.class.php +K 25 +svn:wc:ra_dav:version-url +V 66 +/!svn/ver/23881/branches/1.4/lib/task/test/sfLimeHarness.class.php +END +sfTestAllTask.class.php +K 25 +svn:wc:ra_dav:version-url +V 66 +/!svn/ver/29415/branches/1.4/lib/task/test/sfTestAllTask.class.php +END diff --git a/lib/vendor/symfony/lib/task/test/.svn/entries b/lib/vendor/symfony/lib/task/test/.svn/entries new file mode 100644 index 0000000..462907e --- /dev/null +++ b/lib/vendor/symfony/lib/task/test/.svn/entries @@ -0,0 +1,232 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/task/test +http://svn.symfony-project.com + + + +2010-05-12T06:24:54.747086Z +29415 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +sfTestBaseTask.class.php +file + + + + +2012-05-10T18:41:04.093547Z +1ac0adcfe1c17cc9cd380c44a7caa3a4 +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +1142 + +sfTestCoverageTask.class.php +file + + + + +2012-05-10T18:41:04.181549Z +49e954d8e65c91889b900c060743f5e9 +2009-12-07T19:41:58.269680Z +25036 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +3364 + +sfTestUnitTask.class.php +file + + + + +2012-05-10T18:41:04.181549Z +86956d8930b1c5e03818b26cb0fe1a4d +2010-05-12T06:24:54.747086Z +29415 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +3216 + +sfTestFunctionalTask.class.php +file + + + + +2012-05-10T18:41:04.181549Z +06992d483c553666d57db5c7e14d13d9 +2010-05-12T06:24:54.747086Z +29415 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +3641 + +sfLimeHarness.class.php +file + + + + +2012-05-10T18:41:04.193548Z +7e01ad33eeff9c6eab8369f0d7af5ed9 +2009-10-21T18:03:44.375101Z +23234 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +642 + +sfTestAllTask.class.php +file + + + + +2012-05-10T18:41:04.193548Z +d6e281cbda8c83fe7b0b2d69caa880f8 +2010-05-12T06:24:54.747086Z +29415 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +3407 + diff --git a/lib/vendor/symfony/lib/task/test/.svn/prop-base/sfLimeHarness.class.php.svn-base b/lib/vendor/symfony/lib/task/test/.svn/prop-base/sfLimeHarness.class.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/lib/task/test/.svn/prop-base/sfLimeHarness.class.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/lib/task/test/.svn/prop-base/sfTestAllTask.class.php.svn-base b/lib/vendor/symfony/lib/task/test/.svn/prop-base/sfTestAllTask.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/test/.svn/prop-base/sfTestAllTask.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/test/.svn/prop-base/sfTestBaseTask.class.php.svn-base b/lib/vendor/symfony/lib/task/test/.svn/prop-base/sfTestBaseTask.class.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/lib/task/test/.svn/prop-base/sfTestBaseTask.class.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/lib/task/test/.svn/prop-base/sfTestCoverageTask.class.php.svn-base b/lib/vendor/symfony/lib/task/test/.svn/prop-base/sfTestCoverageTask.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/test/.svn/prop-base/sfTestCoverageTask.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/test/.svn/prop-base/sfTestFunctionalTask.class.php.svn-base b/lib/vendor/symfony/lib/task/test/.svn/prop-base/sfTestFunctionalTask.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/test/.svn/prop-base/sfTestFunctionalTask.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/test/.svn/prop-base/sfTestUnitTask.class.php.svn-base b/lib/vendor/symfony/lib/task/test/.svn/prop-base/sfTestUnitTask.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/task/test/.svn/prop-base/sfTestUnitTask.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/task/test/.svn/text-base/sfLimeHarness.class.php.svn-base b/lib/vendor/symfony/lib/task/test/.svn/text-base/sfLimeHarness.class.php.svn-base new file mode 100644 index 0000000..da4a2c6 --- /dev/null +++ b/lib/vendor/symfony/lib/task/test/.svn/text-base/sfLimeHarness.class.php.svn-base @@ -0,0 +1,23 @@ +plugins[$plugin->getRootDir().DIRECTORY_SEPARATOR.'test'.DIRECTORY_SEPARATOR] = '['.preg_replace('/Plugin$/i', '', $plugin->getName()).'] '; + } + } + + protected function get_relative_file($file) + { + $file = strtr($file, $this->plugins); + return str_replace(DIRECTORY_SEPARATOR, '/', str_replace(array(realpath($this->base_dir).DIRECTORY_SEPARATOR, $this->extension), '', $file)); + } +} diff --git a/lib/vendor/symfony/lib/task/test/.svn/text-base/sfTestAllTask.class.php.svn-base b/lib/vendor/symfony/lib/task/test/.svn/text-base/sfTestAllTask.class.php.svn-base new file mode 100644 index 0000000..bd6b1ed --- /dev/null +++ b/lib/vendor/symfony/lib/task/test/.svn/text-base/sfTestAllTask.class.php.svn-base @@ -0,0 +1,117 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Launches all tests. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfTestAllTask extends sfTestBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->addOptions(array( + new sfCommandOption('only-failed', 'f', sfCommandOption::PARAMETER_NONE, 'Only run tests that failed last time'), + new sfCommandOption('xml', null, sfCommandOption::PARAMETER_REQUIRED, 'The file name for the JUnit compatible XML log file'), + )); + + $this->namespace = 'test'; + $this->name = 'all'; + $this->briefDescription = 'Launches all tests'; + + $this->detailedDescription = << isset($options['color']) && $options['color'], + 'verbose' => isset($options['trace']) && $options['trace'], + )); + $h->addPlugins(array_map(array($this->configuration, 'getPluginConfiguration'), $this->configuration->getPlugins())); + $h->base_dir = sfConfig::get('sf_test_dir'); + + $status = false; + $statusFile = sfConfig::get('sf_cache_dir').'/.test_all_status'; + if ($options['only-failed']) + { + if (file_exists($statusFile)) + { + $status = unserialize(file_get_contents($statusFile)); + } + } + + if ($status) + { + foreach ($status as $file) + { + $h->register($file); + } + } + else + { + // filter and register all tests + $finder = sfFinder::type('file')->follow_link()->name('*Test.php'); + $h->register($this->filterTestFiles($finder->in($h->base_dir), $arguments, $options)); + } + + $ret = $h->run() ? 0 : 1; + + file_put_contents($statusFile, serialize($h->get_failed_files())); + + if ($options['xml']) + { + file_put_contents($options['xml'], $h->to_xml()); + } + + return $ret; + } +} diff --git a/lib/vendor/symfony/lib/task/test/.svn/text-base/sfTestBaseTask.class.php.svn-base b/lib/vendor/symfony/lib/task/test/.svn/text-base/sfTestBaseTask.class.php.svn-base new file mode 100644 index 0000000..d1bb65c --- /dev/null +++ b/lib/vendor/symfony/lib/task/test/.svn/text-base/sfTestBaseTask.class.php.svn-base @@ -0,0 +1,38 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Base test task. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id$ + */ +abstract class sfTestBaseTask extends sfBaseTask +{ + /** + * Filters tests through the "task.test.filter_test_files" event. + * + * @param array $tests An array of absolute test file paths + * @param array $arguments Current task arguments + * @param array $options Current task options + * + * @return array The filtered array of test files + */ + protected function filterTestFiles($tests, $arguments, $options) + { + $event = new sfEvent($this, 'task.test.filter_test_files', array('arguments' => $arguments, 'options' => $options)); + + $this->dispatcher->filter($event, $tests); + + return $event->getReturnValue(); + } +} diff --git a/lib/vendor/symfony/lib/task/test/.svn/text-base/sfTestCoverageTask.class.php.svn-base b/lib/vendor/symfony/lib/task/test/.svn/text-base/sfTestCoverageTask.class.php.svn-base new file mode 100644 index 0000000..5429033 --- /dev/null +++ b/lib/vendor/symfony/lib/task/test/.svn/text-base/sfTestCoverageTask.class.php.svn-base @@ -0,0 +1,109 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Outputs test code coverage. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfTestCoverageTask extends sfBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('test_name', sfCommandArgument::REQUIRED, 'A test file name or a test directory'), + new sfCommandArgument('lib_name', sfCommandArgument::REQUIRED, 'A lib file name or a lib directory for wich you want to know the coverage'), + )); + + $this->addOptions(array( + new sfCommandOption('detailed', null, sfCommandOption::PARAMETER_NONE, 'Output detailed information'), + )); + + $this->namespace = 'test'; + $this->name = 'coverage'; + $this->briefDescription = 'Outputs test code coverage'; + + $this->detailedDescription = <<getCoverage($this->getTestHarness(array('force_colors' => isset($options['color']) && $options['color'])), $options['detailed']); + + $testFiles = $this->getFiles(sfConfig::get('sf_root_dir').'/'.$arguments['test_name']); + $max = count($testFiles); + foreach ($testFiles as $i => $file) + { + $this->logSection('coverage', sprintf('running %s (%d/%d)', $file, $i + 1, $max)); + $coverage->process($file); + } + + $coveredFiles = $this->getFiles(sfConfig::get('sf_root_dir').'/'.$arguments['lib_name']); + $coverage->output($coveredFiles); + } + + protected function getTestHarness($harnessOptions = array()) + { + require_once dirname(__FILE__).'/sfLimeHarness.class.php'; + + $harness = new sfLimeHarness($harnessOptions); + $harness->addPlugins(array_map(array($this->configuration, 'getPluginConfiguration'), $this->configuration->getPlugins())); + $harness->base_dir = sfConfig::get('sf_root_dir'); + + return $harness; + } + + protected function getCoverage(lime_harness $harness, $detailed = false) + { + $coverage = new lime_coverage($harness); + $coverage->verbose = $detailed; + $coverage->base_dir = sfConfig::get('sf_root_dir'); + + return $coverage; + } + + protected function getFiles($directory) + { + if (is_dir($directory)) + { + return sfFinder::type('file')->name('*.php')->in($directory); + } + else if (file_exists($directory)) + { + return array($directory); + } + else + { + throw new sfCommandException(sprintf('File or directory "%s" does not exist.', $directory)); + } + } +} diff --git a/lib/vendor/symfony/lib/task/test/.svn/text-base/sfTestFunctionalTask.class.php.svn-base b/lib/vendor/symfony/lib/task/test/.svn/text-base/sfTestFunctionalTask.class.php.svn-base new file mode 100644 index 0000000..a706c03 --- /dev/null +++ b/lib/vendor/symfony/lib/task/test/.svn/text-base/sfTestFunctionalTask.class.php.svn-base @@ -0,0 +1,122 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Launches functional tests. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfTestFunctionalTask extends sfTestBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('application', sfCommandArgument::REQUIRED, 'The application name'), + new sfCommandArgument('controller', sfCommandArgument::OPTIONAL | sfCommandArgument::IS_ARRAY, 'The controller name'), + )); + + $this->addOptions(array( + new sfCommandOption('xml', null, sfCommandOption::PARAMETER_REQUIRED, 'The file name for the JUnit compatible XML log file'), + )); + + $this->namespace = 'test'; + $this->name = 'functional'; + $this->briefDescription = 'Launches functional tests'; + + $this->detailedDescription = <<follow_link()->name(basename($controller).'Test.php'); + $files = array_merge($files, $finder->in(sfConfig::get('sf_test_dir').'/functional/'.$app.'/'.dirname($controller))); + } + + if($allFiles = $this->filterTestFiles($files, $arguments, $options)) + { + foreach ($allFiles as $file) + { + include($file); + } + } + else + { + $this->logSection('functional', 'no controller found', null, 'ERROR'); + } + } + else + { + require_once dirname(__FILE__).'/sfLimeHarness.class.php'; + + $h = new sfLimeHarness(array( + 'force_colors' => isset($options['color']) && $options['color'], + 'verbose' => isset($options['trace']) && $options['trace'], + )); + $h->addPlugins(array_map(array($this->configuration, 'getPluginConfiguration'), $this->configuration->getPlugins())); + $h->base_dir = sfConfig::get('sf_test_dir').'/functional/'.$app; + + // filter and register functional tests + $finder = sfFinder::type('file')->follow_link()->name('*Test.php'); + $h->register($this->filterTestFiles($finder->in($h->base_dir), $arguments, $options)); + + $ret = $h->run() ? 0 : 1; + + if ($options['xml']) + { + file_put_contents($options['xml'], $h->to_xml()); + } + + return $ret; + } + } +} \ No newline at end of file diff --git a/lib/vendor/symfony/lib/task/test/.svn/text-base/sfTestUnitTask.class.php.svn-base b/lib/vendor/symfony/lib/task/test/.svn/text-base/sfTestUnitTask.class.php.svn-base new file mode 100644 index 0000000..d160157 --- /dev/null +++ b/lib/vendor/symfony/lib/task/test/.svn/text-base/sfTestUnitTask.class.php.svn-base @@ -0,0 +1,117 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Launches unit tests. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfTestUnitTask extends sfTestBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('name', sfCommandArgument::OPTIONAL | sfCommandArgument::IS_ARRAY, 'The test name'), + )); + + $this->addOptions(array( + new sfCommandOption('xml', null, sfCommandOption::PARAMETER_REQUIRED, 'The file name for the JUnit compatible XML log file'), + )); + + $this->namespace = 'test'; + $this->name = 'unit'; + $this->briefDescription = 'Launches unit tests'; + + $this->detailedDescription = <<follow_link()->name(basename($name).'Test.php'); + $files = array_merge($files, $finder->in(sfConfig::get('sf_test_dir').'/unit/'.dirname($name))); + } + + if($allFiles = $this->filterTestFiles($files, $arguments, $options)) + { + foreach ($allFiles as $file) + { + include($file); + } + } + else + { + $this->logSection('test', 'no tests found', null, 'ERROR'); + } + } + else + { + require_once dirname(__FILE__).'/sfLimeHarness.class.php'; + + $h = new sfLimeHarness(array( + 'force_colors' => isset($options['color']) && $options['color'], + 'verbose' => isset($options['trace']) && $options['trace'], + )); + $h->addPlugins(array_map(array($this->configuration, 'getPluginConfiguration'), $this->configuration->getPlugins())); + $h->base_dir = sfConfig::get('sf_test_dir').'/unit'; + + // filter and register unit tests + $finder = sfFinder::type('file')->follow_link()->name('*Test.php'); + $h->register($this->filterTestFiles($finder->in($h->base_dir), $arguments, $options)); + + $ret = $h->run() ? 0 : 1; + + if ($options['xml']) + { + file_put_contents($options['xml'], $h->to_xml()); + } + + return $ret; + } + } +} \ No newline at end of file diff --git a/lib/vendor/symfony/lib/task/test/sfLimeHarness.class.php b/lib/vendor/symfony/lib/task/test/sfLimeHarness.class.php new file mode 100644 index 0000000..da4a2c6 --- /dev/null +++ b/lib/vendor/symfony/lib/task/test/sfLimeHarness.class.php @@ -0,0 +1,23 @@ +plugins[$plugin->getRootDir().DIRECTORY_SEPARATOR.'test'.DIRECTORY_SEPARATOR] = '['.preg_replace('/Plugin$/i', '', $plugin->getName()).'] '; + } + } + + protected function get_relative_file($file) + { + $file = strtr($file, $this->plugins); + return str_replace(DIRECTORY_SEPARATOR, '/', str_replace(array(realpath($this->base_dir).DIRECTORY_SEPARATOR, $this->extension), '', $file)); + } +} diff --git a/lib/vendor/symfony/lib/task/test/sfTestAllTask.class.php b/lib/vendor/symfony/lib/task/test/sfTestAllTask.class.php new file mode 100644 index 0000000..3e9fdb2 --- /dev/null +++ b/lib/vendor/symfony/lib/task/test/sfTestAllTask.class.php @@ -0,0 +1,117 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Launches all tests. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id: sfTestAllTask.class.php 29415 2010-05-12 06:24:54Z fabien $ + */ +class sfTestAllTask extends sfTestBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->addOptions(array( + new sfCommandOption('only-failed', 'f', sfCommandOption::PARAMETER_NONE, 'Only run tests that failed last time'), + new sfCommandOption('xml', null, sfCommandOption::PARAMETER_REQUIRED, 'The file name for the JUnit compatible XML log file'), + )); + + $this->namespace = 'test'; + $this->name = 'all'; + $this->briefDescription = 'Launches all tests'; + + $this->detailedDescription = << isset($options['color']) && $options['color'], + 'verbose' => isset($options['trace']) && $options['trace'], + )); + $h->addPlugins(array_map(array($this->configuration, 'getPluginConfiguration'), $this->configuration->getPlugins())); + $h->base_dir = sfConfig::get('sf_test_dir'); + + $status = false; + $statusFile = sfConfig::get('sf_cache_dir').'/.test_all_status'; + if ($options['only-failed']) + { + if (file_exists($statusFile)) + { + $status = unserialize(file_get_contents($statusFile)); + } + } + + if ($status) + { + foreach ($status as $file) + { + $h->register($file); + } + } + else + { + // filter and register all tests + $finder = sfFinder::type('file')->follow_link()->name('*Test.php'); + $h->register($this->filterTestFiles($finder->in($h->base_dir), $arguments, $options)); + } + + $ret = $h->run() ? 0 : 1; + + file_put_contents($statusFile, serialize($h->get_failed_files())); + + if ($options['xml']) + { + file_put_contents($options['xml'], $h->to_xml()); + } + + return $ret; + } +} diff --git a/lib/vendor/symfony/lib/task/test/sfTestBaseTask.class.php b/lib/vendor/symfony/lib/task/test/sfTestBaseTask.class.php new file mode 100644 index 0000000..764340f --- /dev/null +++ b/lib/vendor/symfony/lib/task/test/sfTestBaseTask.class.php @@ -0,0 +1,38 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Base test task. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id: sfTestBaseTask.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $ + */ +abstract class sfTestBaseTask extends sfBaseTask +{ + /** + * Filters tests through the "task.test.filter_test_files" event. + * + * @param array $tests An array of absolute test file paths + * @param array $arguments Current task arguments + * @param array $options Current task options + * + * @return array The filtered array of test files + */ + protected function filterTestFiles($tests, $arguments, $options) + { + $event = new sfEvent($this, 'task.test.filter_test_files', array('arguments' => $arguments, 'options' => $options)); + + $this->dispatcher->filter($event, $tests); + + return $event->getReturnValue(); + } +} diff --git a/lib/vendor/symfony/lib/task/test/sfTestCoverageTask.class.php b/lib/vendor/symfony/lib/task/test/sfTestCoverageTask.class.php new file mode 100644 index 0000000..391f29f --- /dev/null +++ b/lib/vendor/symfony/lib/task/test/sfTestCoverageTask.class.php @@ -0,0 +1,109 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Outputs test code coverage. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id: sfTestCoverageTask.class.php 25036 2009-12-07 19:41:58Z Kris.Wallsmith $ + */ +class sfTestCoverageTask extends sfBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('test_name', sfCommandArgument::REQUIRED, 'A test file name or a test directory'), + new sfCommandArgument('lib_name', sfCommandArgument::REQUIRED, 'A lib file name or a lib directory for wich you want to know the coverage'), + )); + + $this->addOptions(array( + new sfCommandOption('detailed', null, sfCommandOption::PARAMETER_NONE, 'Output detailed information'), + )); + + $this->namespace = 'test'; + $this->name = 'coverage'; + $this->briefDescription = 'Outputs test code coverage'; + + $this->detailedDescription = <<getCoverage($this->getTestHarness(array('force_colors' => isset($options['color']) && $options['color'])), $options['detailed']); + + $testFiles = $this->getFiles(sfConfig::get('sf_root_dir').'/'.$arguments['test_name']); + $max = count($testFiles); + foreach ($testFiles as $i => $file) + { + $this->logSection('coverage', sprintf('running %s (%d/%d)', $file, $i + 1, $max)); + $coverage->process($file); + } + + $coveredFiles = $this->getFiles(sfConfig::get('sf_root_dir').'/'.$arguments['lib_name']); + $coverage->output($coveredFiles); + } + + protected function getTestHarness($harnessOptions = array()) + { + require_once dirname(__FILE__).'/sfLimeHarness.class.php'; + + $harness = new sfLimeHarness($harnessOptions); + $harness->addPlugins(array_map(array($this->configuration, 'getPluginConfiguration'), $this->configuration->getPlugins())); + $harness->base_dir = sfConfig::get('sf_root_dir'); + + return $harness; + } + + protected function getCoverage(lime_harness $harness, $detailed = false) + { + $coverage = new lime_coverage($harness); + $coverage->verbose = $detailed; + $coverage->base_dir = sfConfig::get('sf_root_dir'); + + return $coverage; + } + + protected function getFiles($directory) + { + if (is_dir($directory)) + { + return sfFinder::type('file')->name('*.php')->in($directory); + } + else if (file_exists($directory)) + { + return array($directory); + } + else + { + throw new sfCommandException(sprintf('File or directory "%s" does not exist.', $directory)); + } + } +} diff --git a/lib/vendor/symfony/lib/task/test/sfTestFunctionalTask.class.php b/lib/vendor/symfony/lib/task/test/sfTestFunctionalTask.class.php new file mode 100644 index 0000000..8a1f8be --- /dev/null +++ b/lib/vendor/symfony/lib/task/test/sfTestFunctionalTask.class.php @@ -0,0 +1,122 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Launches functional tests. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id: sfTestFunctionalTask.class.php 29415 2010-05-12 06:24:54Z fabien $ + */ +class sfTestFunctionalTask extends sfTestBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('application', sfCommandArgument::REQUIRED, 'The application name'), + new sfCommandArgument('controller', sfCommandArgument::OPTIONAL | sfCommandArgument::IS_ARRAY, 'The controller name'), + )); + + $this->addOptions(array( + new sfCommandOption('xml', null, sfCommandOption::PARAMETER_REQUIRED, 'The file name for the JUnit compatible XML log file'), + )); + + $this->namespace = 'test'; + $this->name = 'functional'; + $this->briefDescription = 'Launches functional tests'; + + $this->detailedDescription = <<follow_link()->name(basename($controller).'Test.php'); + $files = array_merge($files, $finder->in(sfConfig::get('sf_test_dir').'/functional/'.$app.'/'.dirname($controller))); + } + + if($allFiles = $this->filterTestFiles($files, $arguments, $options)) + { + foreach ($allFiles as $file) + { + include($file); + } + } + else + { + $this->logSection('functional', 'no controller found', null, 'ERROR'); + } + } + else + { + require_once dirname(__FILE__).'/sfLimeHarness.class.php'; + + $h = new sfLimeHarness(array( + 'force_colors' => isset($options['color']) && $options['color'], + 'verbose' => isset($options['trace']) && $options['trace'], + )); + $h->addPlugins(array_map(array($this->configuration, 'getPluginConfiguration'), $this->configuration->getPlugins())); + $h->base_dir = sfConfig::get('sf_test_dir').'/functional/'.$app; + + // filter and register functional tests + $finder = sfFinder::type('file')->follow_link()->name('*Test.php'); + $h->register($this->filterTestFiles($finder->in($h->base_dir), $arguments, $options)); + + $ret = $h->run() ? 0 : 1; + + if ($options['xml']) + { + file_put_contents($options['xml'], $h->to_xml()); + } + + return $ret; + } + } +} \ No newline at end of file diff --git a/lib/vendor/symfony/lib/task/test/sfTestUnitTask.class.php b/lib/vendor/symfony/lib/task/test/sfTestUnitTask.class.php new file mode 100644 index 0000000..bdc292c --- /dev/null +++ b/lib/vendor/symfony/lib/task/test/sfTestUnitTask.class.php @@ -0,0 +1,117 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Launches unit tests. + * + * @package symfony + * @subpackage task + * @author Fabien Potencier + * @version SVN: $Id: sfTestUnitTask.class.php 29415 2010-05-12 06:24:54Z fabien $ + */ +class sfTestUnitTask extends sfTestBaseTask +{ + /** + * @see sfTask + */ + protected function configure() + { + $this->addArguments(array( + new sfCommandArgument('name', sfCommandArgument::OPTIONAL | sfCommandArgument::IS_ARRAY, 'The test name'), + )); + + $this->addOptions(array( + new sfCommandOption('xml', null, sfCommandOption::PARAMETER_REQUIRED, 'The file name for the JUnit compatible XML log file'), + )); + + $this->namespace = 'test'; + $this->name = 'unit'; + $this->briefDescription = 'Launches unit tests'; + + $this->detailedDescription = <<follow_link()->name(basename($name).'Test.php'); + $files = array_merge($files, $finder->in(sfConfig::get('sf_test_dir').'/unit/'.dirname($name))); + } + + if($allFiles = $this->filterTestFiles($files, $arguments, $options)) + { + foreach ($allFiles as $file) + { + include($file); + } + } + else + { + $this->logSection('test', 'no tests found', null, 'ERROR'); + } + } + else + { + require_once dirname(__FILE__).'/sfLimeHarness.class.php'; + + $h = new sfLimeHarness(array( + 'force_colors' => isset($options['color']) && $options['color'], + 'verbose' => isset($options['trace']) && $options['trace'], + )); + $h->addPlugins(array_map(array($this->configuration, 'getPluginConfiguration'), $this->configuration->getPlugins())); + $h->base_dir = sfConfig::get('sf_test_dir').'/unit'; + + // filter and register unit tests + $finder = sfFinder::type('file')->follow_link()->name('*Test.php'); + $h->register($this->filterTestFiles($finder->in($h->base_dir), $arguments, $options)); + + $ret = $h->run() ? 0 : 1; + + if ($options['xml']) + { + file_put_contents($options['xml'], $h->to_xml()); + } + + return $ret; + } + } +} \ No newline at end of file diff --git a/lib/vendor/symfony/lib/test/.svn/all-wcprops b/lib/vendor/symfony/lib/test/.svn/all-wcprops new file mode 100644 index 0000000..0c9ff30 --- /dev/null +++ b/lib/vendor/symfony/lib/test/.svn/all-wcprops @@ -0,0 +1,65 @@ +K 25 +svn:wc:ra_dav:version-url +V 37 +/!svn/ver/28641/branches/1.4/lib/test +END +sfTestFunctionalBase.class.php +K 25 +svn:wc:ra_dav:version-url +V 68 +/!svn/ver/28641/branches/1.4/lib/test/sfTestFunctionalBase.class.php +END +sfTesterRequest.class.php +K 25 +svn:wc:ra_dav:version-url +V 63 +/!svn/ver/27845/branches/1.4/lib/test/sfTesterRequest.class.php +END +sfTesterMailer.class.php +K 25 +svn:wc:ra_dav:version-url +V 62 +/!svn/ver/23881/branches/1.4/lib/test/sfTesterMailer.class.php +END +sfTestFunctional.class.php +K 25 +svn:wc:ra_dav:version-url +V 64 +/!svn/ver/23937/branches/1.4/lib/test/sfTestFunctional.class.php +END +sfTestBrowser.class.php +K 25 +svn:wc:ra_dav:version-url +V 61 +/!svn/ver/23881/branches/1.4/lib/test/sfTestBrowser.class.php +END +sfTesterResponse.class.php +K 25 +svn:wc:ra_dav:version-url +V 64 +/!svn/ver/27061/branches/1.4/lib/test/sfTesterResponse.class.php +END +sfTesterUser.class.php +K 25 +svn:wc:ra_dav:version-url +V 60 +/!svn/ver/23881/branches/1.4/lib/test/sfTesterUser.class.php +END +sfTesterViewCache.class.php +K 25 +svn:wc:ra_dav:version-url +V 65 +/!svn/ver/24615/branches/1.4/lib/test/sfTesterViewCache.class.php +END +sfTester.class.php +K 25 +svn:wc:ra_dav:version-url +V 56 +/!svn/ver/23881/branches/1.4/lib/test/sfTester.class.php +END +sfTesterForm.class.php +K 25 +svn:wc:ra_dav:version-url +V 60 +/!svn/ver/24217/branches/1.4/lib/test/sfTesterForm.class.php +END diff --git a/lib/vendor/symfony/lib/test/.svn/entries b/lib/vendor/symfony/lib/test/.svn/entries new file mode 100644 index 0000000..e249239 --- /dev/null +++ b/lib/vendor/symfony/lib/test/.svn/entries @@ -0,0 +1,371 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/test +http://svn.symfony-project.com + + + +2010-03-21T10:20:44.993417Z +28641 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +sfTestFunctionalBase.class.php +file + + + + +2012-05-10T18:41:16.953554Z +5b8c6017f4dbb4243ba899f28736a67e +2010-03-21T10:20:44.993417Z +28641 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +13250 + +sfTesterRequest.class.php +file + + + + +2012-05-10T18:41:16.953554Z +2ad04c272a71a85c53b455593923ba05 +2010-02-10T19:46:03.288740Z +27845 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +3743 + +sfTesterMailer.class.php +file + + + + +2012-05-10T18:41:16.953554Z +21bae05262daffc4f7dc196a751a3231 +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +6295 + +sfTestFunctional.class.php +file + + + + +2012-05-10T18:41:16.957549Z +c97dc6422be1b82b9f3ba0c2507b2278 +2009-11-14T17:43:12.070448Z +23937 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +2134 + +sfTestBrowser.class.php +file + + + + +2012-05-10T18:41:16.957549Z +299da692da3effadc3e17ab847b8efbb +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +1550 + +sfTesterResponse.class.php +file + + + + +2012-05-10T18:41:16.965550Z +d2789b57063a05201a61b751e73c8430 +2010-01-22T17:08:04.112342Z +27061 +FabianLange +has-props + + + + + + + + + + + + + + + + + + + + +15189 + +sfTesterUser.class.php +file + + + + +2012-05-10T18:41:16.969552Z +040c92a672932200b2999a30383ccf41 +2009-09-08T03:01:39.043420Z +21769 +dwhittle +has-props + + + + + + + + + + + + + + + + + + + + +2865 + +sfTesterViewCache.class.php +file + + + + +2012-05-10T18:41:16.969552Z +a4ce322ecd302576fbf15c26fb75a63b +2009-11-30T22:30:46.362071Z +24615 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +3604 + +w3 +dir + +sfTester.class.php +file + + + + +2012-05-10T18:41:16.969552Z +94995874bfd12a27b15699351bbc40d1 +2008-12-03T22:17:01.850010Z +13691 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +1805 + +sfTesterForm.class.php +file + + + + +2012-05-10T18:41:16.977554Z +8f649fb27d8e39b73c1580f9ba2624f0 +2009-11-22T06:47:54.703000Z +24217 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +6504 + diff --git a/lib/vendor/symfony/lib/test/.svn/prop-base/sfTestBrowser.class.php.svn-base b/lib/vendor/symfony/lib/test/.svn/prop-base/sfTestBrowser.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/test/.svn/prop-base/sfTestBrowser.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/test/.svn/prop-base/sfTestFunctional.class.php.svn-base b/lib/vendor/symfony/lib/test/.svn/prop-base/sfTestFunctional.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/test/.svn/prop-base/sfTestFunctional.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/test/.svn/prop-base/sfTestFunctionalBase.class.php.svn-base b/lib/vendor/symfony/lib/test/.svn/prop-base/sfTestFunctionalBase.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/test/.svn/prop-base/sfTestFunctionalBase.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/test/.svn/prop-base/sfTester.class.php.svn-base b/lib/vendor/symfony/lib/test/.svn/prop-base/sfTester.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/test/.svn/prop-base/sfTester.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/test/.svn/prop-base/sfTesterForm.class.php.svn-base b/lib/vendor/symfony/lib/test/.svn/prop-base/sfTesterForm.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/test/.svn/prop-base/sfTesterForm.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/test/.svn/prop-base/sfTesterMailer.class.php.svn-base b/lib/vendor/symfony/lib/test/.svn/prop-base/sfTesterMailer.class.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/lib/test/.svn/prop-base/sfTesterMailer.class.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/lib/test/.svn/prop-base/sfTesterRequest.class.php.svn-base b/lib/vendor/symfony/lib/test/.svn/prop-base/sfTesterRequest.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/test/.svn/prop-base/sfTesterRequest.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/test/.svn/prop-base/sfTesterResponse.class.php.svn-base b/lib/vendor/symfony/lib/test/.svn/prop-base/sfTesterResponse.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/test/.svn/prop-base/sfTesterResponse.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/test/.svn/prop-base/sfTesterUser.class.php.svn-base b/lib/vendor/symfony/lib/test/.svn/prop-base/sfTesterUser.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/test/.svn/prop-base/sfTesterUser.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/test/.svn/prop-base/sfTesterViewCache.class.php.svn-base b/lib/vendor/symfony/lib/test/.svn/prop-base/sfTesterViewCache.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/test/.svn/prop-base/sfTesterViewCache.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/test/.svn/text-base/sfTestBrowser.class.php.svn-base b/lib/vendor/symfony/lib/test/.svn/text-base/sfTestBrowser.class.php.svn-base new file mode 100644 index 0000000..18cc1b2 --- /dev/null +++ b/lib/vendor/symfony/lib/test/.svn/text-base/sfTestBrowser.class.php.svn-base @@ -0,0 +1,56 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfTestBrowser simulates a browser which can test a symfony application. + * + * sfTestFunctional is backward compatible class for symfony 1.0, and 1.1. + * For new code, you can use the sfTestFunctional class directly. + * + * @package symfony + * @subpackage test + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfTestBrowser extends sfTestFunctional +{ + /** + * Initializes the browser tester instance. + * + * @param string $hostname Hostname to browse + * @param string $remote Remote address to spook + * @param array $options Options for sfBrowser + */ + public function __construct($hostname = null, $remote = null, $options = array()) + { + if (is_object($hostname)) + { + // new signature + parent::__construct($hostname, $remote); + } + else + { + $browser = new sfBrowser($hostname, $remote, $options); + + if (null === self::$test) + { + $lime = new lime_test(null, isset($options['output']) ? $options['output'] : null); + } + else + { + $lime = null; + } + + parent::__construct($browser, $lime); + } + } +} diff --git a/lib/vendor/symfony/lib/test/.svn/text-base/sfTestFunctional.class.php.svn-base b/lib/vendor/symfony/lib/test/.svn/text-base/sfTestFunctional.class.php.svn-base new file mode 100644 index 0000000..9699e7d --- /dev/null +++ b/lib/vendor/symfony/lib/test/.svn/text-base/sfTestFunctional.class.php.svn-base @@ -0,0 +1,67 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfTestFunctional tests an application by using a browser simulator. + * + * @package symfony + * @subpackage test + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfTestFunctional extends sfTestFunctionalBase +{ + /** + * Initializes the browser tester instance. + * + * @param sfBrowserBase $browser A sfBrowserBase instance + * @param lime_test $lime A lime instance + */ + public function __construct(sfBrowserBase $browser, lime_test $lime = null, $testers = array()) + { + $testers = array_merge(array( + 'view_cache' => 'sfTesterViewCache', + 'form' => 'sfTesterForm', + ), $testers); + + parent::__construct($browser, $lime, $testers); + } + + /** + * Checks that the request is forwarded to a given module/action. + * + * @param string $moduleName The module name + * @param string $actionName The action name + * @param mixed $position The position in the action stack (default to the last entry) + * + * @return sfTestFunctional The current sfTestFunctional instance + */ + public function isForwardedTo($moduleName, $actionName, $position = 'last') + { + $actionStack = $this->browser->getContext()->getActionStack(); + + switch ($position) + { + case 'first': + $entry = $actionStack->getFirstEntry(); + break; + case 'last': + $entry = $actionStack->getLastEntry(); + break; + default: + $entry = $actionStack->getEntry($position); + } + + $this->test()->is($entry->getModuleName(), $moduleName, sprintf('request is forwarded to the "%s" module (%s)', $moduleName, $position)); + $this->test()->is($entry->getActionName(), $actionName, sprintf('request is forwarded to the "%s" action (%s)', $actionName, $position)); + + return $this; + } +} diff --git a/lib/vendor/symfony/lib/test/.svn/text-base/sfTestFunctionalBase.class.php.svn-base b/lib/vendor/symfony/lib/test/.svn/text-base/sfTestFunctionalBase.class.php.svn-base new file mode 100644 index 0000000..33df567 --- /dev/null +++ b/lib/vendor/symfony/lib/test/.svn/text-base/sfTestFunctionalBase.class.php.svn-base @@ -0,0 +1,513 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfTestFunctional tests an application by using a browser simulator. + * + * @package symfony + * @subpackage test + * @author Fabien Potencier + * @version SVN: $Id$ + */ +abstract class sfTestFunctionalBase +{ + protected + $testers = array(), + $blockTester = null, + $currentTester = null, + $browser = null; + + protected static + $test = null; + + /** + * Initializes the browser tester instance. + * + * @param sfBrowserBase $browser A sfBrowserBase instance + * @param lime_test $lime A lime instance + */ + public function __construct(sfBrowserBase $browser, lime_test $lime = null, $testers = array()) + { + $this->browser = $browser; + + if (null === self::$test) + { + self::$test = null !== $lime ? $lime : new lime_test(); + } + + $this->setTesters(array_merge(array( + 'request' => 'sfTesterRequest', + 'response' => 'sfTesterResponse', + 'user' => 'sfTesterUser', + 'mailer' => 'sfTesterMailer', + ), $testers)); + + // register our shutdown function + register_shutdown_function(array($this, 'shutdown')); + + // register our error/exception handlers + set_error_handler(array($this, 'handlePhpError')); + set_exception_handler(array($this, 'handleException')); + } + + /** + * Returns the tester associated with the given name. + * + * @param string $name The tester name + * + * @param sfTester A sfTester instance + */ + public function with($name) + { + if (!isset($this->testers[$name])) + { + throw new InvalidArgumentException(sprintf('The "%s" tester does not exist.', $name)); + } + + if ($this->blockTester) + { + throw new LogicException(sprintf('You cannot nest tester blocks.')); + } + + $this->currentTester = $this->testers[$name]; + $this->currentTester->initialize(); + + return $this->currentTester; + } + + /** + * Begins a block of test for the current tester. + * + * @return sfTester The current sfTester instance + */ + public function begin() + { + if (!$this->currentTester) + { + throw new LogicException(sprintf('You must call with() before beginning a tester block.')); + } + + return $this->blockTester = $this->currentTester; + } + + /** + * End a block of test for the current tester. + * + * @return sfTestFunctionalBase + */ + public function end() + { + if (null === $this->blockTester) + { + throw new LogicException(sprintf('There is no current tester block to end.')); + } + + $this->blockTester = null; + + return $this; + } + + /** + * Sets the testers. + * + * @param array $testers An array of named testers + */ + public function setTesters($testers) + { + foreach ($testers as $name => $tester) + { + $this->setTester($name, $tester); + } + } + + /** + * Sets a tester. + * + * @param string $name The tester name + * @param sfTester|string $tester A sfTester instance or a tester class name + */ + public function setTester($name, $tester) + { + if (is_string($tester)) + { + $tester = new $tester($this, self::$test); + } + + if (!$tester instanceof sfTester) + { + throw new InvalidArgumentException(sprintf('The tester "%s" is not of class sfTester.', $name)); + } + + $this->testers[$name] = $tester; + } + + /** + * Shutdown function. + * + * @return void + */ + public function shutdown() + { + $this->checkCurrentExceptionIsEmpty(); + } + + /** + * Retrieves the lime_test instance. + * + * @return lime_test The lime_test instance + */ + public function test() + { + return self::$test; + } + + /** + * Gets a uri. + * + * @param string $uri The URI to fetch + * @param array $parameters The Request parameters + * @param bool $changeStack Change the browser history stack? + * + * @return sfTestFunctionalBase + */ + public function get($uri, $parameters = array(), $changeStack = true) + { + return $this->call($uri, 'get', $parameters, $changeStack); + } + + /** + * Retrieves and checks an action. + * + * @param string $module Module name + * @param string $action Action name + * @param string $url Url + * @param string $code The expected return status code + * + * @return sfTestFunctionalBase The current sfTestFunctionalBase instance + */ + public function getAndCheck($module, $action, $url = null, $code = 200) + { + return $this-> + get(null !== $url ? $url : sprintf('/%s/%s', $module, $action))-> + with('request')->begin()-> + isParameter('module', $module)-> + isParameter('action', $action)-> + end()-> + with('response')->isStatusCode($code) + ; + } + + /** + * Posts a uri. + * + * @param string $uri The URI to fetch + * @param array $parameters The Request parameters + * @param bool $changeStack Change the browser history stack? + * + * @return sfTestFunctionalBase + */ + public function post($uri, $parameters = array(), $changeStack = true) + { + return $this->call($uri, 'post', $parameters, $changeStack); + } + + /** + * Calls a request. + * + * @param string $uri URI to be invoked + * @param string $method HTTP method used + * @param array $parameters Additional parameters + * @param bool $changeStack If set to false ActionStack is not changed + * + * @return sfTestFunctionalBase The current sfTestFunctionalBase instance + */ + public function call($uri, $method = 'get', $parameters = array(), $changeStack = true) + { + $this->checkCurrentExceptionIsEmpty(); + + $uri = $this->browser->fixUri($uri); + + $this->test()->comment(sprintf('%s %s', strtolower($method), $uri)); + + foreach ($this->testers as $tester) + { + $tester->prepare(); + } + + $this->browser->call($uri, $method, $parameters, $changeStack); + + return $this; + } + + /** + * Simulates deselecting a checkbox or radiobutton. + * + * @param string $name The checkbox or radiobutton id, name or text + * + * @return sfTestFunctionalBase + */ + public function deselect($name) + { + $this->browser->doSelect($name, false); + + return $this; + } + + /** + * Simulates selecting a checkbox or radiobutton. + * + * @param string $name The checkbox or radiobutton id, name or text + * + * @return sfTestFunctionalBase + */ + public function select($name) + { + $this->browser->doSelect($name, true); + + return $this; + } + + /** + * Simulates a click on a link or button. + * + * @param string $name The link or button text + * @param array $arguments The arguments to pass to the link + * @param array $options An array of options + * + * @return sfTestFunctionalBase + */ + public function click($name, $arguments = array(), $options = array()) + { + if ($name instanceof DOMElement) + { + list($uri, $method, $parameters) = $this->doClickElement($name, $arguments, $options); + } + else + { + try + { + list($uri, $method, $parameters) = $this->doClick($name, $arguments, $options); + } + catch (InvalidArgumentException $e) + { + list($uri, $method, $parameters) = $this->doClickCssSelector($name, $arguments, $options); + } + } + + return $this->call($uri, $method, $parameters); + } + + /** + * Simulates the browser back button. + * + * @return sfTestFunctionalBase The current sfTestFunctionalBase instance + */ + public function back() + { + $this->test()->comment('back'); + + $this->browser->back(); + + return $this; + } + + /** + * Simulates the browser forward button. + * + * @return sfTestFunctionalBase The current sfTestFunctionalBase instance + */ + public function forward() + { + $this->test()->comment('forward'); + + $this->browser->forward(); + + return $this; + } + + /** + * Outputs an information message. + * + * @param string $message A message + * + * @return sfTestFunctionalBase The current sfTestFunctionalBase instance + */ + public function info($message) + { + $this->test()->info($message); + + return $this; + } + + /** + * Checks that the current response contains a given text. + * + * @param string $uri Uniform resource identifier + * @param string $text Text in the response + * + * @return sfTestFunctionalBase The current sfTestFunctionalBase instance + */ + public function check($uri, $text = null) + { + $this->get($uri)->with('response')->isStatusCode(); + + if ($text !== null) + { + $this->with('response')->contains($text); + } + + return $this; + } + + /** + * Tests if an exception is thrown by the latest request. + * + * @param string $class Class name + * @param string $message Message name + * + * @return sfTestFunctionalBase The current sfTestFunctionalBase instance + */ + public function throwsException($class = null, $message = null) + { + $e = $this->browser->getCurrentException(); + + if (null === $e) + { + $this->test()->fail('response returns an exception'); + } + else + { + if (null !== $class) + { + $this->test()->ok($e instanceof $class, sprintf('response returns an exception of class "%s"', $class)); + } + + if (null !== $message && preg_match('/^(!)?([^a-zA-Z0-9\\\\]).+?\\2[ims]?$/', $message, $match)) + { + if ($match[1] == '!') + { + $this->test()->unlike($e->getMessage(), substr($message, 1), sprintf('response exception message does not match regex "%s"', $message)); + } + else + { + $this->test()->like($e->getMessage(), $message, sprintf('response exception message matches regex "%s"', $message)); + } + } + else if (null !== $message) + { + $this->test()->is($e->getMessage(), $message, sprintf('response exception message is "%s"', $message)); + } + } + + $this->resetCurrentException(); + + return $this; + } + + /** + * Triggers a test failure if an uncaught exception is present. + * + * @return bool + */ + public function checkCurrentExceptionIsEmpty() + { + if (false === ($empty = $this->browser->checkCurrentExceptionIsEmpty())) + { + $this->test()->fail(sprintf('last request threw an uncaught exception "%s: %s"', get_class($this->browser->getCurrentException()), $this->browser->getCurrentException()->getMessage())); + } + + return $empty; + } + + public function __call($method, $arguments) + { + $retval = call_user_func_array(array($this->browser, $method), $arguments); + + // fix the fluent interface + return $retval === $this->browser ? $this : $retval; + } + + /** + * Error handler for the current test browser instance. + * + * @param mixed $errno Error number + * @param string $errstr Error message + * @param string $errfile Error file + * @param mixed $errline Error line + */ + static public function handlePhpError($errno, $errstr, $errfile, $errline) + { + if (($errno & error_reporting()) == 0) + { + return false; + } + + $msg = sprintf('PHP sent a "%%s" error at %s line %s (%s)', $errfile, $errline, $errstr); + switch ($errno) + { + case E_WARNING: + $msg = sprintf($msg, 'warning'); + throw new RuntimeException($msg); + break; + case E_NOTICE: + $msg = sprintf($msg, 'notice'); + throw new RuntimeException($msg); + break; + case E_STRICT: + $msg = sprintf($msg, 'strict'); + throw new RuntimeException($msg); + break; + case E_RECOVERABLE_ERROR: + $msg = sprintf($msg, 'catchable'); + throw new RuntimeException($msg); + break; + } + + return false; + } + + /** + * Exception handler for the current test browser instance. + * + * @param Exception $exception The exception + */ + function handleException(Exception $exception) + { + $this->test()->error(sprintf('%s: %s', get_class($exception), $exception->getMessage())); + + $traceData = $exception->getTrace(); + array_unshift($traceData, array( + 'function' => '', + 'file' => $exception->getFile() != null ? $exception->getFile() : 'n/a', + 'line' => $exception->getLine() != null ? $exception->getLine() : 'n/a', + 'args' => array(), + )); + + $traces = array(); + $lineFormat = ' at %s%s%s() in %s line %s'; + for ($i = 0, $count = count($traceData); $i < $count; $i++) + { + $line = isset($traceData[$i]['line']) ? $traceData[$i]['line'] : 'n/a'; + $file = isset($traceData[$i]['file']) ? $traceData[$i]['file'] : 'n/a'; + $args = isset($traceData[$i]['args']) ? $traceData[$i]['args'] : array(); + $this->test()->error(sprintf($lineFormat, + (isset($traceData[$i]['class']) ? $traceData[$i]['class'] : ''), + (isset($traceData[$i]['type']) ? $traceData[$i]['type'] : ''), + $traceData[$i]['function'], + $file, + $line + )); + } + + $this->test()->fail('An uncaught exception has been thrown.'); + } +} diff --git a/lib/vendor/symfony/lib/test/.svn/text-base/sfTester.class.php.svn-base b/lib/vendor/symfony/lib/test/.svn/text-base/sfTester.class.php.svn-base new file mode 100644 index 0000000..a915eb7 --- /dev/null +++ b/lib/vendor/symfony/lib/test/.svn/text-base/sfTester.class.php.svn-base @@ -0,0 +1,88 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfTester is the base class for all tester classes. + * + * @package symfony + * @subpackage test + * @author Fabien Potencier + * @version SVN: $Id$ + */ +abstract class sfTester +{ + protected + $inABlock = false, + $browser = null, + $tester = null; + + /** + * Constructor. + * + * @param sfTestFunctionalBase $browser A browser + * @param lime_test $tester A tester object + */ + public function __construct(sfTestFunctionalBase $browser, $tester) + { + $this->browser = $browser; + $this->tester = $tester; + } + + /** + * Prepares the tester. + */ + abstract public function prepare(); + + /** + * Initializes the tester. + */ + abstract public function initialize(); + + /** + * Begins a block. + * + * @return sfTester This sfTester instance + */ + public function begin() + { + $this->inABlock = true; + + return $this->browser->begin(); + } + + /** + * Ends a block. + * + * @param sfTestFunctionalBase + */ + public function end() + { + $this->inABlock = false; + + return $this->browser->end(); + } + + /** + * Returns the object that each test method must return. + * + * @return sfTestFunctionalBase|sfTester + */ + public function getObjectToReturn() + { + return $this->inABlock ? $this : $this->browser; + } + + public function __call($method, $arguments) + { + call_user_func_array(array($this->browser, $method), $arguments); + + return $this->getObjectToReturn(); + } +} diff --git a/lib/vendor/symfony/lib/test/.svn/text-base/sfTesterForm.class.php.svn-base b/lib/vendor/symfony/lib/test/.svn/text-base/sfTesterForm.class.php.svn-base new file mode 100644 index 0000000..b323024 --- /dev/null +++ b/lib/vendor/symfony/lib/test/.svn/text-base/sfTesterForm.class.php.svn-base @@ -0,0 +1,256 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfTesterForm implements tests for forms submitted by the user. + * + * @package symfony + * @subpackage test + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfTesterForm extends sfTester +{ + protected + $form = null; + + /** + * Constructor. + * + * @param sfTestFunctionalBase $browser A browser + * @param lime_test $tester A tester object + */ + public function __construct(sfTestFunctionalBase $browser, $tester) + { + parent::__construct($browser, $tester); + + $this->browser->addListener('template.filter_parameters', array($this, 'filterTemplateParameters')); + } + + /** + * Prepares the tester. + */ + public function prepare() + { + $this->form = null; + } + + /** + * Initiliazes the tester. + */ + public function initialize() + { + if (null === $this->form) + { + $action = $this->browser->getContext()->getActionStack()->getLastEntry()->getActionInstance(); + + foreach ($action->getVarHolder()->getAll() as $name => $value) + { + if ($value instanceof sfForm && $value->isBound()) + { + $this->form = $value; + break; + } + } + } + } + + /** + * Returns the current form. + * + * @return sfForm The current sfForm form instance + */ + public function getForm() + { + return $this->form; + } + + /** + * Tests if the submitted form has some error. + * + * @param Boolean|integer $value Whether to check if the form has error or not, or the number of errors + * + * @return sfTestFunctionalBase|sfTester + */ + public function hasErrors($value = true) + { + if (null === $this->form) + { + throw new LogicException('no form has been submitted.'); + } + + if (is_int($value)) + { + $this->tester->is(count($this->form->getErrorSchema()), $value, sprintf('the submitted form has "%s" errors.', $value)); + } + else + { + $this->tester->is($this->form->hasErrors(), $value, sprintf('the submitted form %s.', ($value) ? 'has some errors' : 'is valid')); + } + + return $this->getObjectToReturn(); + } + + /** + * Tests if the submitted form has a specific error. + * + * @param mixed $value The error message or the number of errors for the field (optional) + * + * @return sfTestFunctionalBase|sfTester + */ + public function hasGlobalError($value = true) + { + return $this->isError(null, $value); + } + + /** + * Tests if the submitted form has a specific error. + * + * @param string $field The field name to check for an error (null for global errors) + * @param mixed $value The error message or the number of errors for the field (optional) + * + * @return sfTestFunctionalBase|sfTester + */ + public function isError($field, $value = true) + { + if (null === $this->form) + { + throw new LogicException('no form has been submitted.'); + } + + if (null === $field) + { + $error = new sfValidatorErrorSchema(new sfValidatorPass(), $this->form->getGlobalErrors()); + } + else + { + $error = $this->getFormField($field)->getError(); + } + + if (false === $value) + { + $this->tester->ok(!$error || 0 == count($error), sprintf('the submitted form has no "%s" error.', $field)); + } + else if (true === $value) + { + $this->tester->ok($error && count($error) > 0, sprintf('the submitted form has a "%s" error.', $field)); + } + else if (is_int($value)) + { + $this->tester->ok($error && count($error) == $value, sprintf('the submitted form has %s "%s" error(s).', $value, $field)); + } + else if (preg_match('/^(!)?([^a-zA-Z0-9\\\\]).+?\\2[ims]?$/', $value, $match)) + { + if (!$error) + { + $this->tester->fail(sprintf('the submitted form has a "%s" error.', $field)); + } + else + { + if ($match[1] == '!') + { + $this->tester->unlike($error->getCode(), substr($value, 1), sprintf('the submitted form has a "%s" error that does not match "%s".', $field, $value)); + } + else + { + $this->tester->like($error->getCode(), $value, sprintf('the submitted form has a "%s" error that matches "%s".', $field, $value)); + } + } + } + else + { + if (!$error) + { + $this->tester->fail(sprintf('the submitted form has a "%s" error (%s).', $field, $value)); + } + else + { + $this->tester->is($error->getCode(), $value, sprintf('the submitted form has a "%s" error (%s).', $field, $value)); + } + } + + return $this->getObjectToReturn(); + } + + /** + * Outputs some debug information about the current submitted form. + */ + public function debug() + { + if (null === $this->form) + { + throw new LogicException('no form has been submitted.'); + } + + print $this->tester->error('Form debug'); + + print sprintf("Submitted values: %s\n", str_replace("\n", '', var_export($this->form->getTaintedValues(), true))); + print sprintf("Errors: %s\n", $this->form->getErrorSchema()); + + exit(1); + } + + /** + * Listens to the template.filter_parameters event to get the submitted form object. + * + * @param sfEvent $event The event + * @param array $parameters An array of parameters passed to the template + * + * @return array The array of parameters passed to the template + */ + public function filterTemplateParameters(sfEvent $event, $parameters) + { + if (!isset($parameters['sf_type'])) + { + return $parameters; + } + + if ('action' == $parameters['sf_type']) + { + foreach ($parameters as $key => $value) + { + if ($value instanceof sfForm && $value->isBound()) + { + $this->form = $value; + break; + } + } + } + + return $parameters; + } + + /** + * @param string $path + * @return sfFormField + */ + + public function getFormField($path) + { + if (false !== $pos = strpos($path, '[')) + { + $field = $this->form[substr($path, 0, $pos)]; + } + else + { + return $this->form[$path]; + } + + if (preg_match_all('/\[(?P[^]]+)\]/', $path, $matches)) + { + foreach($matches['part'] as $part) + { + $field = $field[$part]; + } + } + + return $field; + } +} diff --git a/lib/vendor/symfony/lib/test/.svn/text-base/sfTesterMailer.class.php.svn-base b/lib/vendor/symfony/lib/test/.svn/text-base/sfTesterMailer.class.php.svn-base new file mode 100644 index 0000000..c00e47f --- /dev/null +++ b/lib/vendor/symfony/lib/test/.svn/text-base/sfTesterMailer.class.php.svn-base @@ -0,0 +1,275 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfTesterMailer implements tests for the symfony mailer object. + * + * @package symfony + * @subpackage test + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfTesterMailer extends sfTester +{ + protected + $logger = null, + $message = null; + + /** + * Prepares the tester. + */ + public function prepare() + { + } + + /** + * Initializes the tester. + */ + public function initialize() + { + $this->logger = $this->browser->getContext()->getMailer()->getLogger(); + + if ($this->logger->countMessages()) + { + $messages = $this->logger->getMessages(); + + $this->message = $messages[0]; + } + } + + /** + * Tests if message was send and optional how many. + * + * @param int $nb number of messages + * + * @return sfTestFunctionalBase|sfTester + */ + public function hasSent($nb = null) + { + if (null === $nb) + { + $this->tester->ok($this->logger->countMessages() > 0, 'mailer sent some email(s).'); + } + else + { + $this->tester->is($this->logger->countMessages(), $nb, sprintf('mailer sent %s email(s).', $nb)); + } + + return $this->getObjectToReturn(); + } + + /** + * Outputs some debug information about mails sent during the current request. + */ + public function debug() + { + foreach ($this->logger->getMessages() as $message) + { + echo $message->toString()."\n\n"; + } + + exit(1); + } + + /** + * Changes the context to use the email corresponding to the given criteria. + * + * @param string|array $to the email or array(email => alias) + * @param int $position address position + * + * @return sfTestFunctionalBase|sfTester + */ + public function withMessage($to, $position = 1) + { + $messageEmail = $to; + if(is_array($to)) + { + $alias = current($to); + $to = key($to); + $messageEmail = sprintf('%s <%s>', $alias, $to); + } + + $matches = 0; + foreach ($this->logger->getMessages() as $message) + { + $email = $message->getTo(); + if ($to == key($email)) + { + $matches++; + + if ($matches == $position) + { + $this->message = $message; + + if(isset($alias) AND $alias != current($email)) + { + break; + } + + $this->tester->pass(sprintf('switch context to the message number "%s" sent to "%s"', $position, $messageEmail)); + + return $this; + } + } + } + + $this->tester->fail(sprintf('unable to find a message sent to "%s"', $messageEmail)); + + return $this; + } + + /** + * Tests for a mail message body. + * + * @param string $value regular expression or value + * + * @return sfTestFunctionalBase|sfTester + */ + public function checkBody($value) + { + if (!$this->message) + { + $this->tester->fail('unable to test as no email were sent'); + } + + $body = $this->message->getBody(); + $ok = false; + $regex = false; + $mustMatch = true; + if (preg_match('/^(!)?([^a-zA-Z0-9\\\\]).+?\\2[ims]?$/', $value, $match)) + { + $regex = $value; + if ($match[1] == '!') + { + $mustMatch = false; + $regex = substr($value, 1); + } + } + + if (false !== $regex) + { + if ($mustMatch) + { + if (preg_match($regex, $body)) + { + $ok = true; + $this->tester->pass(sprintf('email body matches "%s"', $value)); + } + } + else + { + if (preg_match($regex, $body)) + { + $ok = true; + $this->tester->fail(sprintf('email body does not match "%s"', $value)); + } + } + } + else if ($body == $value) + { + $ok = true; + $this->tester->pass(sprintf('email body is "%s"', $value)); + } + + if (!$ok) + { + if (!$mustMatch) + { + $this->tester->pass(sprintf('email body matches "%s"', $value)); + } + else + { + $this->tester->fail(sprintf('email body matches "%s"', $value)); + } + } + + return $this->getObjectToReturn(); + } + + /** + * Tests for a mail message header. + * + * @param string $key entry to test + * @param string $value regular expression or value + * + * @return sfTestFunctionalBase|sfTester + */ + public function checkHeader($key, $value) + { + if (!$this->message) + { + $this->tester->fail('unable to test as no email were sent'); + } + + $headers = array(); + foreach ($this->message->getHeaders()->getAll($key) as $header) + { + $headers[] = $header->getFieldBody(); + } + $current = implode(', ', $headers); + $ok = false; + $regex = false; + $mustMatch = true; + if (preg_match('/^(!)?([^a-zA-Z0-9\\\\]).+?\\2[ims]?$/', $value, $match)) + { + $regex = $value; + if ($match[1] == '!') + { + $mustMatch = false; + $regex = substr($value, 1); + } + } + + foreach ($headers as $header) + { + if (false !== $regex) + { + if ($mustMatch) + { + if (preg_match($regex, $header)) + { + $ok = true; + $this->tester->pass(sprintf('email header "%s" matches "%s" (%s)', $key, $value, $current)); + break; + } + } + else + { + if (preg_match($regex, $header)) + { + $ok = true; + $this->tester->fail(sprintf('email header "%s" does not match "%s" (%s)', $key, $value, $current)); + break; + } + } + } + else if ($header == $value) + { + $ok = true; + $this->tester->pass(sprintf('email header "%s" is "%s" (%s)', $key, $value, $current)); + break; + } + } + + if (!$ok) + { + if (!$mustMatch) + { + $this->tester->pass(sprintf('email header "%s" matches "%s" (%s)', $key, $value, $current)); + } + else + { + $this->tester->fail(sprintf('email header "%s" matches "%s" (%s)', $key, $value, $current)); + } + } + + return $this->getObjectToReturn(); + } +} diff --git a/lib/vendor/symfony/lib/test/.svn/text-base/sfTesterRequest.class.php.svn-base b/lib/vendor/symfony/lib/test/.svn/text-base/sfTesterRequest.class.php.svn-base new file mode 100644 index 0000000..ac52fe0 --- /dev/null +++ b/lib/vendor/symfony/lib/test/.svn/text-base/sfTesterRequest.class.php.svn-base @@ -0,0 +1,152 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfTesterRequest implements tests for the symfony request object. + * + * @package symfony + * @subpackage test + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfTesterRequest extends sfTester +{ + protected $request; + + /** + * Prepares the tester. + */ + public function prepare() + { + } + + /** + * Initializes the tester. + */ + public function initialize() + { + $this->request = $this->browser->getRequest(); + } + + /** + * Tests whether or not a given key and value exists in the request. + * + * @param string $key + * @param string $value + * + * @return sfTestFunctionalBase|sfTester + */ + public function isParameter($key, $value) + { + $this->tester->is($this->request->getParameter($key), $value, sprintf('request parameter "%s" is "%s"', $key, $value)); + + return $this->getObjectToReturn(); + } + + /** + * Tests for the request is in the given format. + * + * @param string $format The request format + * + * @return sfTestFunctionalBase|sfTester + */ + public function isFormat($format) + { + $this->tester->is($this->request->getRequestFormat(), $format, sprintf('request format is "%s"', $format)); + + return $this->getObjectToReturn(); + } + + /** + * Tests if the current HTTP method matches the given one + * + * @param string $method The HTTP method name + * + * @return sfTestFunctionalBase|sfTester + */ + public function isMethod($method) + { + $this->tester->ok($this->request->isMethod($method), sprintf('request method is "%s"', strtoupper($method))); + + return $this->getObjectToReturn(); + } + + /** + * Checks if a cookie exists. + * + * @param string $name The cookie name + * @param Boolean $exists Whether the cookie must exist or not + * + * @return sfTestFunctionalBase|sfTester + */ + public function hasCookie($name, $exists = true) + { + if (!array_key_exists($name, $_COOKIE)) + { + if ($exists) + { + $this->tester->fail(sprintf('cookie "%s" exists.', $name)); + } + else + { + $this->tester->pass(sprintf('cookie "%s" does not exist.', $name)); + } + + return $this->getObjectToReturn(); + } + + if ($exists) + { + $this->tester->pass(sprintf('cookie "%s" exists.', $name)); + } + else + { + $this->tester->fail(sprintf('cookie "%s" does not exist.', $name)); + } + + return $this->getObjectToReturn(); + } + + /** + * Checks the value of a cookie. + * + * @param string $name The cookie name + * @param mixed $value The expected value + * + * @return sfTestFunctionalBase|sfTester + */ + public function isCookie($name, $value) + { + if (!array_key_exists($name, $_COOKIE)) + { + $this->tester->fail(sprintf('cookie "%s" does not exist.', $name)); + + return $this->getObjectToReturn(); + } + + if (preg_match('/^(!)?([^a-zA-Z0-9\\\\]).+?\\2[ims]?$/', $value, $match)) + { + if ($match[1] == '!') + { + $this->tester->unlike($_COOKIE[$name], substr($value, 1), sprintf('cookie "%s" content does not match regex "%s"', $name, $value)); + } + else + { + $this->tester->like($_COOKIE[$name], $value, sprintf('cookie "%s" content matches regex "%s"', $name, $value)); + } + } + else + { + $this->tester->is($_COOKIE[$name], $value, sprintf('cookie "%s" content is ok', $name)); + } + + return $this->getObjectToReturn(); + } +} diff --git a/lib/vendor/symfony/lib/test/.svn/text-base/sfTesterResponse.class.php.svn-base b/lib/vendor/symfony/lib/test/.svn/text-base/sfTesterResponse.class.php.svn-base new file mode 100644 index 0000000..5b3f775 --- /dev/null +++ b/lib/vendor/symfony/lib/test/.svn/text-base/sfTesterResponse.class.php.svn-base @@ -0,0 +1,489 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfTesterResponse implements tests for the symfony response object. + * + * @package symfony + * @subpackage test + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfTesterResponse extends sfTester +{ + protected + $response = null, + $dom = null, + $domCssSelector = null; + + /** + * Prepares the tester. + */ + public function prepare() + { + } + + /** + * Initializes the tester. + */ + public function initialize() + { + $this->response = $this->browser->getResponse(); + + $this->dom = null; + $this->domCssSelector = null; + if (preg_match('/(x|ht)ml/i', $this->response->getContentType(), $matches)) + { + $this->dom = new DOMDocument('1.0', $this->response->getCharset()); + $this->dom->validateOnParse = true; + if ('x' == $matches[1]) + { + @$this->dom->loadXML($this->response->getContent()); + } + else + { + @$this->dom->loadHTML($this->response->getContent()); + } + $this->domCssSelector = new sfDomCssSelector($this->dom); + } + } + + /** + * Tests that the response matches a given CSS selector. + * + * @param string $selector The response selector or a sfDomCssSelector object + * @param mixed $value Flag for the selector + * @param array $options Options for the current test + * + * @return sfTestFunctionalBase|sfTester + */ + public function checkElement($selector, $value = true, $options = array()) + { + if (null === $this->dom) + { + throw new LogicException('The DOM is not accessible because the browser response content type is not HTML.'); + } + + if (is_object($selector)) + { + $values = $selector->getValues(); + } + else + { + $values = $this->domCssSelector->matchAll($selector)->getValues(); + } + + if (false === $value) + { + $this->tester->is(count($values), 0, sprintf('response selector "%s" does not exist', $selector)); + } + else if (true === $value) + { + $this->tester->cmp_ok(count($values), '>', 0, sprintf('response selector "%s" exists', $selector)); + } + else if (is_int($value)) + { + $this->tester->is(count($values), $value, sprintf('response selector "%s" matches "%s" times', $selector, $value)); + } + else if (preg_match('/^(!)?([^a-zA-Z0-9\\\\]).+?\\2[ims]?$/', $value, $match)) + { + $position = isset($options['position']) ? $options['position'] : 0; + if ($match[1] == '!') + { + $this->tester->unlike(@$values[$position], substr($value, 1), sprintf('response selector "%s" does not match regex "%s"', $selector, substr($value, 1))); + } + else + { + $this->tester->like(@$values[$position], $value, sprintf('response selector "%s" matches regex "%s"', $selector, $value)); + } + } + else + { + $position = isset($options['position']) ? $options['position'] : 0; + $this->tester->is(@$values[$position], $value, sprintf('response selector "%s" matches "%s"', $selector, $value)); + } + + if (isset($options['count'])) + { + $this->tester->is(count($values), $options['count'], sprintf('response selector "%s" matches "%s" times', $selector, $options['count'])); + } + + return $this->getObjectToReturn(); + } + + /** + * Checks that a form is rendered correctly. + * + * @param sfForm|string $form A form object or the name of a form class + * @param string $selector CSS selector for the root form element for this form + * + * @return sfTestFunctionalBase|sfTester + */ + public function checkForm($form, $selector = 'form') + { + if (!$form instanceof sfForm) + { + $form = new $form(); + } + + $rendered = array(); + foreach ($this->domCssSelector->matchAll(sprintf('%1$s input, %1$s textarea, %1$s select', $selector))->getNodes() as $element) + { + $rendered[] = $element->getAttribute('name'); + } + + foreach ($form as $field => $widget) + { + $dom = new DOMDocument('1.0', sfConfig::get('sf_charset')); + $dom->loadHTML((string) $widget); + + foreach ($dom->getElementsByTagName('*') as $element) + { + if (in_array($element->tagName, array('input', 'select', 'textarea'))) + { + if (false !== $pos = array_search($element->getAttribute('name'), $rendered)) + { + unset($rendered[$pos]); + } + + $this->tester->ok(false !== $pos, sprintf('response includes "%s" form "%s" field - "%s %s[name=%s]"', get_class($form), $field, $selector, $element->tagName, $element->getAttribute('name'))); + } + } + } + + return $this->getObjectToReturn(); + } + + /** + * Validates the response. + * + * @param mixed $checkDTD Either true to validate against the response DTD or + * provide the path to a *.xsd, *.rng or *.rnc schema + * + * @return sfTestFunctionalBase|sfTester + * + * @throws LogicException If the response is neither XML nor (X)HTML + */ + public function isValid($checkDTD = false) + { + if (preg_match('/(x|ht)ml/i', $this->response->getContentType())) + { + $revert = libxml_use_internal_errors(true); + + $dom = new DOMDocument('1.0', $this->response->getCharset()); + $content = $this->response->getContent(); + + if (true === $checkDTD) + { + $cache = sfConfig::get('sf_cache_dir').'/sf_tester_response/w3'; + if ($cache[1] == ':') + { + // On Windows systems the path will be like c:\symfony\cache\xml.dtd + // I did not manage to get DOMDocument loading a file protocol url including the drive letter + // file://c:\symfony\cache\xml.dtd or file://c:/symfony/cache/xml.dtd + // The first one simply doesnt work, the second one is treated as remote call. + // However the following works. Unfortunatly this means we can only access the current disk + // file:///symfony/cache/xml.dtd + // Note that all work for file_get_contents so the bug is most likely in DOMDocument. + $local = 'file://'.substr(str_replace(DIRECTORY_SEPARATOR, '/', $cache), 2); + } + else + { + $local = 'file://'.$cache; + } + + if (!file_exists($cache.'/TR/xhtml11/DTD/xhtml11.dtd')) + { + $filesystem = new sfFilesystem(); + + $finder = sfFinder::type('any')->discard('.sf'); + $filesystem->mirror(dirname(__FILE__).'/w3', $cache, $finder); + + $finder = sfFinder::type('file'); + $filesystem->replaceTokens($finder->in($cache), '##', '##', array('LOCAL_W3' => $local)); + } + + $content = preg_replace('#(]+")http://www.w3.org(.*")#i', '\\1'.$local.'\\2', $content); + $dom->validateOnParse = $checkDTD; + } + + $dom->loadXML($content); + + switch (pathinfo($checkDTD, PATHINFO_EXTENSION)) + { + case 'xsd': + $dom->schemaValidate($checkDTD); + $message = sprintf('response validates per XSD schema "%s"', basename($checkDTD)); + break; + case 'rng': + case 'rnc': + $dom->relaxNGValidate($checkDTD); + $message = sprintf('response validates per relaxNG schema "%s"', basename($checkDTD)); + break; + default: + $message = $dom->validateOnParse ? sprintf('response validates as "%s"', $dom->doctype->name) : 'response is well-formed "xml"'; + } + + if (count($errors = libxml_get_errors())) + { + $lines = explode(PHP_EOL, $this->response->getContent()); + + $this->tester->fail($message); + foreach ($errors as $error) + { + $this->tester->diag(' '.trim($error->message)); + if (preg_match('/line (\d+)/', $error->message, $match) && $error->line != $match[1]) + { + $this->tester->diag(' '.str_pad($match[1].':', 6).trim($lines[$match[1] - 1])); + } + $this->tester->diag(' '.str_pad($error->line.':', 6).trim($lines[$error->line - 1])); + } + } + else + { + $this->tester->pass($message); + } + + libxml_use_internal_errors($revert); + } + else + { + throw new LogicException(sprintf('Unable to validate responses of content type "%s"', $this->response->getContentType())); + } + + return $this->getObjectToReturn(); + } + + /** + * Tests for a response header. + * + * @param string $key + * @param string $value + * + * @return sfTestFunctionalBase|sfTester + */ + public function isHeader($key, $value) + { + $headers = explode(', ', $this->response->getHttpHeader($key)); + $ok = false; + $regex = false; + $mustMatch = true; + if (preg_match('/^(!)?([^a-zA-Z0-9\\\\]).+?\\2[ims]?$/', $value, $match)) + { + $regex = $value; + if ($match[1] == '!') + { + $mustMatch = false; + $regex = substr($value, 1); + } + } + + foreach ($headers as $header) + { + if (false !== $regex) + { + if ($mustMatch) + { + if (preg_match($regex, $header)) + { + $ok = true; + $this->tester->pass(sprintf('response header "%s" matches "%s" (%s)', $key, $value, $this->response->getHttpHeader($key))); + break; + } + } + else + { + if (preg_match($regex, $header)) + { + $ok = true; + $this->tester->fail(sprintf('response header "%s" does not match "%s" (%s)', $key, $value, $this->response->getHttpHeader($key))); + break; + } + } + } + else if ($header == $value) + { + $ok = true; + $this->tester->pass(sprintf('response header "%s" is "%s" (%s)', $key, $value, $this->response->getHttpHeader($key))); + break; + } + } + + if (!$ok) + { + if (!$mustMatch) + { + $this->tester->pass(sprintf('response header "%s" matches "%s" (%s)', $key, $value, $this->response->getHttpHeader($key))); + } + else + { + $this->tester->fail(sprintf('response header "%s" matches "%s" (%s)', $key, $value, $this->response->getHttpHeader($key))); + } + } + + return $this->getObjectToReturn(); + } + + /** + * Tests if a cookie was set. + * + * @param string $name + * @param string $value + * @param array $attributes Other cookie attributes to check (expires, path, domain, etc) + * + * @return sfTestFunctionalBase|sfTester + */ + public function setsCookie($name, $value = null, $attributes = array()) + { + foreach ($this->response->getCookies() as $cookie) + { + if ($name == $cookie['name']) + { + if (null === $value) + { + $this->tester->pass(sprintf('response sets cookie "%s"', $name)); + } + else + { + $this->tester->ok($value == $cookie['value'], sprintf('response sets cookie "%s" to "%s"', $name, $value)); + } + + foreach ($attributes as $attributeName => $attributeValue) + { + if (!array_key_exists($attributeName, $cookie)) + { + throw new LogicException(sprintf('The cookie attribute "%s" is not valid.', $attributeName)); + } + + $this->tester->is($cookie[$attributeName], $attributeValue, sprintf('"%s" cookie "%s" attribute is "%s"', $name, $attributeName, $attributeValue)); + } + + return $this->getObjectToReturn(); + } + } + + $this->tester->fail(sprintf('response sets cookie "%s"', $name)); + + return $this->getObjectToReturn(); + } + + /** + * Tests the response content against a regex. + * + * @param string Regex + * + * @return sfTestFunctionalBase|sfTester + */ + public function matches($regex) + { + if (!preg_match('/^(!)?([^a-zA-Z0-9\\\\]).+?\\2[ims]?$/', $regex, $match)) + { + throw new InvalidArgumentException(sprintf('"%s" is not a valid regular expression.', $regex)); + } + + if ($match[1] == '!') + { + $this->tester->unlike($this->response->getContent(), substr($regex, 1), sprintf('response content does not match regex "%s"', substr($regex, 1))); + } + else + { + $this->tester->like($this->response->getContent(), $regex, sprintf('response content matches regex "%s"', $regex)); + } + + return $this->getObjectToReturn(); + } + + /** + * Tests the status code. + * + * @param string $statusCode Status code to check, default 200 + * + * @return sfTestFunctionalBase|sfTester + */ + public function isStatusCode($statusCode = 200) + { + $this->tester->is($this->response->getStatusCode(), $statusCode, sprintf('status code is "%s"', $statusCode)); + + return $this->getObjectToReturn(); + } + + /** + * Tests if the current request has been redirected. + * + * @param bool $boolean Flag for redirection mode + * + * @return sfTestFunctionalBase|sfTester + */ + public function isRedirected($boolean = true) + { + if ($location = $this->response->getHttpHeader('location')) + { + $boolean ? $this->tester->pass(sprintf('page redirected to "%s"', $location)) : $this->tester->fail(sprintf('page redirected to "%s"', $location)); + } + else + { + $boolean ? $this->tester->fail('page redirected') : $this->tester->pass('page not redirected'); + } + + return $this->getObjectToReturn(); + } + + /** + * Outputs some debug information about the current response. + * + * @param string $realOutput Whether to display the actual content of the response when an error occurred + * or the exception message and the stack trace to ease debugging + */ + public function debug($realOutput = false) + { + print $this->tester->error('Response debug'); + + if (!$realOutput && null !== sfException::getLastException()) + { + // print the exception and the stack trace instead of the "normal" output + $this->tester->comment('WARNING'); + $this->tester->comment('An error occurred when processing this request.'); + $this->tester->comment('The real response content has been replaced with the exception message to ease debugging.'); + } + + printf("HTTP/1.X %s\n", $this->response->getStatusCode()); + + foreach ($this->response->getHttpHeaders() as $name => $value) + { + printf("%s: %s\n", $name, $value); + } + + foreach ($this->response->getCookies() as $cookie) + { + vprintf("Set-Cookie: %s=%s; %spath=%s%s%s%s\n", array( + $cookie['name'], + $cookie['value'], + null === $cookie['expire'] ? '' : sprintf('expires=%s; ', date('D d-M-Y H:i:s T', $cookie['expire'])), + $cookie['path'], + $cookie['domain'] ? sprintf('; domain=%s', $cookie['domain']) : '', + $cookie['secure'] ? '; secure' : '', + $cookie['httpOnly'] ? '; HttpOnly' : '', + )); + } + + echo "\n"; + if (!$realOutput && null !== $exception = sfException::getLastException()) + { + echo $exception; + } + else + { + echo $this->response->getContent(); + } + echo "\n"; + + exit(1); + } +} diff --git a/lib/vendor/symfony/lib/test/.svn/text-base/sfTesterUser.class.php.svn-base b/lib/vendor/symfony/lib/test/.svn/text-base/sfTesterUser.class.php.svn-base new file mode 100644 index 0000000..4a6ebc1 --- /dev/null +++ b/lib/vendor/symfony/lib/test/.svn/text-base/sfTesterUser.class.php.svn-base @@ -0,0 +1,112 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfTesterUser implements tests for the symfony user object. + * + * @package symfony + * @subpackage test + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfTesterUser extends sfTester +{ + protected $user; + + /** + * Prepares the tester. + */ + public function prepare() + { + } + + /** + * Initializes the tester. + */ + public function initialize() + { + $this->user = $this->browser->getUser(); + } + + /** + * Tests a user attribute value. + * + * @param string $key + * @param string $value + * @param string $ns + * + * @return sfTestFunctionalBase|sfTester + */ + public function isAttribute($key, $value, $ns = null) + { + $this->tester->is($this->user->getAttribute($key, null, $ns), $value, sprintf('user attribute "%s" is "%s"', $key, $value)); + + return $this->getObjectToReturn(); + } + + /** + * Tests a user flash value. + * + * @param string $key + * @param string $value + * + * @return sfTestFunctionalBase|sfTester + */ + public function isFlash($key, $value) + { + $this->tester->is($this->user->getFlash($key), $value, sprintf('user flash "%s" is "%s"', $key, $value)); + + return $this->getObjectToReturn(); + } + + /** + * Tests the user culture. + * + * @param string $culture The user culture + * + * @return sfTestFunctionalBase|sfTester + */ + public function isCulture($culture) + { + $this->tester->is($this->user->getCulture(), $culture, sprintf('user culture is "%s"', $culture)); + + return $this->getObjectToReturn(); + } + + /** + * Tests if the user is authenticated. + * + * @param Boolean $boolean Whether to check if the user is authenticated or not + * + * @return sfTestFunctionalBase|sfTester + */ + public function isAuthenticated($boolean = true) + { + $this->tester->is($this->user->isAuthenticated(), $boolean, sprintf('user is %sauthenticated', $boolean ? '' : 'not ')); + + return $this->getObjectToReturn(); + } + + /** + * Tests if the user has some credentials. + * + * @param mixed $credentials + * @param bool $boolean Whether to check if the user have some credentials or not + * @param bool $useAnd specify the mode, either AND or OR + * + * @return sfTestFunctionalBase|sfTester + */ + public function hasCredential($credentials, $boolean = true, $useAnd = true) + { + $this->tester->is($this->user->hasCredential($credentials, $useAnd), $boolean, sprintf('user has %sthe right credentials', $boolean ? '' : 'not ')); + + return $this->getObjectToReturn(); + } +} diff --git a/lib/vendor/symfony/lib/test/.svn/text-base/sfTesterViewCache.class.php.svn-base b/lib/vendor/symfony/lib/test/.svn/text-base/sfTesterViewCache.class.php.svn-base new file mode 100644 index 0000000..a846b31 --- /dev/null +++ b/lib/vendor/symfony/lib/test/.svn/text-base/sfTesterViewCache.class.php.svn-base @@ -0,0 +1,130 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfTesterViewCache implements tests for the symfony view cache manager. + * + * @package symfony + * @subpackage test + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfTesterViewCache extends sfTester +{ + protected + $viewCacheManager = null, + $response = null, + $routing = null; + + /** + * Prepares the tester. + */ + public function prepare() + { + } + + /** + * Initializes the tester. + */ + public function initialize() + { + $this->viewCacheManager = $this->browser->getContext()->getViewCacheManager(); + $this->routing = $this->browser->getContext()->getRouting(); + $this->response = $this->browser->getResponse(); + } + + /** + * Tests if the given uri is cached. + * + * @param boolean $boolean Flag for checking the cache + * @param boolean $with_layout If have or not layout + * + * @return sfTestFunctionalBase|sfTester + */ + public function isCached($boolean, $with_layout = false) + { + return $this->isUriCached($this->viewCacheManager->getCurrentCacheKey(), $boolean, $with_layout); + } + + /** + * Tests if the given uri is cached. + * + * @param string $uri Uniform resource identifier + * @param boolean $boolean Flag for checking the cache + * @param boolean $with_layout If have or not layout + * + * @return sfTestFunctionalBase|sfTester + */ + public function isUriCached($uri, $boolean, $with_layout = false) + { + $cacheManager = $this->viewCacheManager; + + // check that cache is enabled + if (!$cacheManager) + { + $this->tester->ok(!$boolean, 'cache is disabled'); + + return $this->getObjectToReturn(); + } + + if ($uri == $this->viewCacheManager->getCurrentCacheKey()) + { + $main = true; + $type = $with_layout ? 'page' : 'action'; + } + else + { + $main = false; + $type = $uri; + } + + // check layout configuration + if ($cacheManager->withLayout($uri) && !$with_layout) + { + $this->tester->fail('cache without layout'); + $this->tester->skip('cache is not configured properly', 2); + } + else if (!$cacheManager->withLayout($uri) && $with_layout) + { + $this->tester->fail('cache with layout'); + $this->tester->skip('cache is not configured properly', 2); + } + else + { + $this->tester->pass('cache is configured properly'); + + // check page is cached + $ret = $this->tester->is($cacheManager->has($uri), $boolean, sprintf('"%s" %s in cache', $type, $boolean ? 'is' : 'is not')); + + // check that the content is ok in cache + if ($boolean) + { + if (!$ret) + { + $this->tester->fail('content in cache is ok'); + } + else if ($with_layout) + { + $response = unserialize($cacheManager->get($uri)); + $content = $response->getContent(); + $this->tester->ok($content == $this->response->getContent(), 'content in cache is ok'); + } + else + { + $ret = unserialize($cacheManager->get($uri)); + $content = $ret['content']; + $this->tester->ok(false !== strpos($this->response->getContent(), $content), 'content in cache is ok'); + } + } + } + + return $this->getObjectToReturn(); + } +} diff --git a/lib/vendor/symfony/lib/test/sfTestBrowser.class.php b/lib/vendor/symfony/lib/test/sfTestBrowser.class.php new file mode 100644 index 0000000..fd0a209 --- /dev/null +++ b/lib/vendor/symfony/lib/test/sfTestBrowser.class.php @@ -0,0 +1,56 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfTestBrowser simulates a browser which can test a symfony application. + * + * sfTestFunctional is backward compatible class for symfony 1.0, and 1.1. + * For new code, you can use the sfTestFunctional class directly. + * + * @package symfony + * @subpackage test + * @author Fabien Potencier + * @version SVN: $Id: sfTestBrowser.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $ + */ +class sfTestBrowser extends sfTestFunctional +{ + /** + * Initializes the browser tester instance. + * + * @param string $hostname Hostname to browse + * @param string $remote Remote address to spook + * @param array $options Options for sfBrowser + */ + public function __construct($hostname = null, $remote = null, $options = array()) + { + if (is_object($hostname)) + { + // new signature + parent::__construct($hostname, $remote); + } + else + { + $browser = new sfBrowser($hostname, $remote, $options); + + if (null === self::$test) + { + $lime = new lime_test(null, isset($options['output']) ? $options['output'] : null); + } + else + { + $lime = null; + } + + parent::__construct($browser, $lime); + } + } +} diff --git a/lib/vendor/symfony/lib/test/sfTestFunctional.class.php b/lib/vendor/symfony/lib/test/sfTestFunctional.class.php new file mode 100644 index 0000000..797272a --- /dev/null +++ b/lib/vendor/symfony/lib/test/sfTestFunctional.class.php @@ -0,0 +1,67 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfTestFunctional tests an application by using a browser simulator. + * + * @package symfony + * @subpackage test + * @author Fabien Potencier + * @version SVN: $Id: sfTestFunctional.class.php 23937 2009-11-14 17:43:12Z fabien $ + */ +class sfTestFunctional extends sfTestFunctionalBase +{ + /** + * Initializes the browser tester instance. + * + * @param sfBrowserBase $browser A sfBrowserBase instance + * @param lime_test $lime A lime instance + */ + public function __construct(sfBrowserBase $browser, lime_test $lime = null, $testers = array()) + { + $testers = array_merge(array( + 'view_cache' => 'sfTesterViewCache', + 'form' => 'sfTesterForm', + ), $testers); + + parent::__construct($browser, $lime, $testers); + } + + /** + * Checks that the request is forwarded to a given module/action. + * + * @param string $moduleName The module name + * @param string $actionName The action name + * @param mixed $position The position in the action stack (default to the last entry) + * + * @return sfTestFunctional The current sfTestFunctional instance + */ + public function isForwardedTo($moduleName, $actionName, $position = 'last') + { + $actionStack = $this->browser->getContext()->getActionStack(); + + switch ($position) + { + case 'first': + $entry = $actionStack->getFirstEntry(); + break; + case 'last': + $entry = $actionStack->getLastEntry(); + break; + default: + $entry = $actionStack->getEntry($position); + } + + $this->test()->is($entry->getModuleName(), $moduleName, sprintf('request is forwarded to the "%s" module (%s)', $moduleName, $position)); + $this->test()->is($entry->getActionName(), $actionName, sprintf('request is forwarded to the "%s" action (%s)', $actionName, $position)); + + return $this; + } +} diff --git a/lib/vendor/symfony/lib/test/sfTestFunctionalBase.class.php b/lib/vendor/symfony/lib/test/sfTestFunctionalBase.class.php new file mode 100644 index 0000000..335f7af --- /dev/null +++ b/lib/vendor/symfony/lib/test/sfTestFunctionalBase.class.php @@ -0,0 +1,513 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfTestFunctional tests an application by using a browser simulator. + * + * @package symfony + * @subpackage test + * @author Fabien Potencier + * @version SVN: $Id: sfTestFunctionalBase.class.php 28641 2010-03-21 10:20:44Z fabien $ + */ +abstract class sfTestFunctionalBase +{ + protected + $testers = array(), + $blockTester = null, + $currentTester = null, + $browser = null; + + protected static + $test = null; + + /** + * Initializes the browser tester instance. + * + * @param sfBrowserBase $browser A sfBrowserBase instance + * @param lime_test $lime A lime instance + */ + public function __construct(sfBrowserBase $browser, lime_test $lime = null, $testers = array()) + { + $this->browser = $browser; + + if (null === self::$test) + { + self::$test = null !== $lime ? $lime : new lime_test(); + } + + $this->setTesters(array_merge(array( + 'request' => 'sfTesterRequest', + 'response' => 'sfTesterResponse', + 'user' => 'sfTesterUser', + 'mailer' => 'sfTesterMailer', + ), $testers)); + + // register our shutdown function + register_shutdown_function(array($this, 'shutdown')); + + // register our error/exception handlers + set_error_handler(array($this, 'handlePhpError')); + set_exception_handler(array($this, 'handleException')); + } + + /** + * Returns the tester associated with the given name. + * + * @param string $name The tester name + * + * @param sfTester A sfTester instance + */ + public function with($name) + { + if (!isset($this->testers[$name])) + { + throw new InvalidArgumentException(sprintf('The "%s" tester does not exist.', $name)); + } + + if ($this->blockTester) + { + throw new LogicException(sprintf('You cannot nest tester blocks.')); + } + + $this->currentTester = $this->testers[$name]; + $this->currentTester->initialize(); + + return $this->currentTester; + } + + /** + * Begins a block of test for the current tester. + * + * @return sfTester The current sfTester instance + */ + public function begin() + { + if (!$this->currentTester) + { + throw new LogicException(sprintf('You must call with() before beginning a tester block.')); + } + + return $this->blockTester = $this->currentTester; + } + + /** + * End a block of test for the current tester. + * + * @return sfTestFunctionalBase + */ + public function end() + { + if (null === $this->blockTester) + { + throw new LogicException(sprintf('There is no current tester block to end.')); + } + + $this->blockTester = null; + + return $this; + } + + /** + * Sets the testers. + * + * @param array $testers An array of named testers + */ + public function setTesters($testers) + { + foreach ($testers as $name => $tester) + { + $this->setTester($name, $tester); + } + } + + /** + * Sets a tester. + * + * @param string $name The tester name + * @param sfTester|string $tester A sfTester instance or a tester class name + */ + public function setTester($name, $tester) + { + if (is_string($tester)) + { + $tester = new $tester($this, self::$test); + } + + if (!$tester instanceof sfTester) + { + throw new InvalidArgumentException(sprintf('The tester "%s" is not of class sfTester.', $name)); + } + + $this->testers[$name] = $tester; + } + + /** + * Shutdown function. + * + * @return void + */ + public function shutdown() + { + $this->checkCurrentExceptionIsEmpty(); + } + + /** + * Retrieves the lime_test instance. + * + * @return lime_test The lime_test instance + */ + public function test() + { + return self::$test; + } + + /** + * Gets a uri. + * + * @param string $uri The URI to fetch + * @param array $parameters The Request parameters + * @param bool $changeStack Change the browser history stack? + * + * @return sfTestFunctionalBase + */ + public function get($uri, $parameters = array(), $changeStack = true) + { + return $this->call($uri, 'get', $parameters, $changeStack); + } + + /** + * Retrieves and checks an action. + * + * @param string $module Module name + * @param string $action Action name + * @param string $url Url + * @param string $code The expected return status code + * + * @return sfTestFunctionalBase The current sfTestFunctionalBase instance + */ + public function getAndCheck($module, $action, $url = null, $code = 200) + { + return $this-> + get(null !== $url ? $url : sprintf('/%s/%s', $module, $action))-> + with('request')->begin()-> + isParameter('module', $module)-> + isParameter('action', $action)-> + end()-> + with('response')->isStatusCode($code) + ; + } + + /** + * Posts a uri. + * + * @param string $uri The URI to fetch + * @param array $parameters The Request parameters + * @param bool $changeStack Change the browser history stack? + * + * @return sfTestFunctionalBase + */ + public function post($uri, $parameters = array(), $changeStack = true) + { + return $this->call($uri, 'post', $parameters, $changeStack); + } + + /** + * Calls a request. + * + * @param string $uri URI to be invoked + * @param string $method HTTP method used + * @param array $parameters Additional parameters + * @param bool $changeStack If set to false ActionStack is not changed + * + * @return sfTestFunctionalBase The current sfTestFunctionalBase instance + */ + public function call($uri, $method = 'get', $parameters = array(), $changeStack = true) + { + $this->checkCurrentExceptionIsEmpty(); + + $uri = $this->browser->fixUri($uri); + + $this->test()->comment(sprintf('%s %s', strtolower($method), $uri)); + + foreach ($this->testers as $tester) + { + $tester->prepare(); + } + + $this->browser->call($uri, $method, $parameters, $changeStack); + + return $this; + } + + /** + * Simulates deselecting a checkbox or radiobutton. + * + * @param string $name The checkbox or radiobutton id, name or text + * + * @return sfTestFunctionalBase + */ + public function deselect($name) + { + $this->browser->doSelect($name, false); + + return $this; + } + + /** + * Simulates selecting a checkbox or radiobutton. + * + * @param string $name The checkbox or radiobutton id, name or text + * + * @return sfTestFunctionalBase + */ + public function select($name) + { + $this->browser->doSelect($name, true); + + return $this; + } + + /** + * Simulates a click on a link or button. + * + * @param string $name The link or button text + * @param array $arguments The arguments to pass to the link + * @param array $options An array of options + * + * @return sfTestFunctionalBase + */ + public function click($name, $arguments = array(), $options = array()) + { + if ($name instanceof DOMElement) + { + list($uri, $method, $parameters) = $this->doClickElement($name, $arguments, $options); + } + else + { + try + { + list($uri, $method, $parameters) = $this->doClick($name, $arguments, $options); + } + catch (InvalidArgumentException $e) + { + list($uri, $method, $parameters) = $this->doClickCssSelector($name, $arguments, $options); + } + } + + return $this->call($uri, $method, $parameters); + } + + /** + * Simulates the browser back button. + * + * @return sfTestFunctionalBase The current sfTestFunctionalBase instance + */ + public function back() + { + $this->test()->comment('back'); + + $this->browser->back(); + + return $this; + } + + /** + * Simulates the browser forward button. + * + * @return sfTestFunctionalBase The current sfTestFunctionalBase instance + */ + public function forward() + { + $this->test()->comment('forward'); + + $this->browser->forward(); + + return $this; + } + + /** + * Outputs an information message. + * + * @param string $message A message + * + * @return sfTestFunctionalBase The current sfTestFunctionalBase instance + */ + public function info($message) + { + $this->test()->info($message); + + return $this; + } + + /** + * Checks that the current response contains a given text. + * + * @param string $uri Uniform resource identifier + * @param string $text Text in the response + * + * @return sfTestFunctionalBase The current sfTestFunctionalBase instance + */ + public function check($uri, $text = null) + { + $this->get($uri)->with('response')->isStatusCode(); + + if ($text !== null) + { + $this->with('response')->contains($text); + } + + return $this; + } + + /** + * Tests if an exception is thrown by the latest request. + * + * @param string $class Class name + * @param string $message Message name + * + * @return sfTestFunctionalBase The current sfTestFunctionalBase instance + */ + public function throwsException($class = null, $message = null) + { + $e = $this->browser->getCurrentException(); + + if (null === $e) + { + $this->test()->fail('response returns an exception'); + } + else + { + if (null !== $class) + { + $this->test()->ok($e instanceof $class, sprintf('response returns an exception of class "%s"', $class)); + } + + if (null !== $message && preg_match('/^(!)?([^a-zA-Z0-9\\\\]).+?\\2[ims]?$/', $message, $match)) + { + if ($match[1] == '!') + { + $this->test()->unlike($e->getMessage(), substr($message, 1), sprintf('response exception message does not match regex "%s"', $message)); + } + else + { + $this->test()->like($e->getMessage(), $message, sprintf('response exception message matches regex "%s"', $message)); + } + } + else if (null !== $message) + { + $this->test()->is($e->getMessage(), $message, sprintf('response exception message is "%s"', $message)); + } + } + + $this->resetCurrentException(); + + return $this; + } + + /** + * Triggers a test failure if an uncaught exception is present. + * + * @return bool + */ + public function checkCurrentExceptionIsEmpty() + { + if (false === ($empty = $this->browser->checkCurrentExceptionIsEmpty())) + { + $this->test()->fail(sprintf('last request threw an uncaught exception "%s: %s"', get_class($this->browser->getCurrentException()), $this->browser->getCurrentException()->getMessage())); + } + + return $empty; + } + + public function __call($method, $arguments) + { + $retval = call_user_func_array(array($this->browser, $method), $arguments); + + // fix the fluent interface + return $retval === $this->browser ? $this : $retval; + } + + /** + * Error handler for the current test browser instance. + * + * @param mixed $errno Error number + * @param string $errstr Error message + * @param string $errfile Error file + * @param mixed $errline Error line + */ + static public function handlePhpError($errno, $errstr, $errfile, $errline) + { + if (($errno & error_reporting()) == 0) + { + return false; + } + + $msg = sprintf('PHP sent a "%%s" error at %s line %s (%s)', $errfile, $errline, $errstr); + switch ($errno) + { + case E_WARNING: + $msg = sprintf($msg, 'warning'); + throw new RuntimeException($msg); + break; + case E_NOTICE: + $msg = sprintf($msg, 'notice'); + throw new RuntimeException($msg); + break; + case E_STRICT: + $msg = sprintf($msg, 'strict'); + throw new RuntimeException($msg); + break; + case E_RECOVERABLE_ERROR: + $msg = sprintf($msg, 'catchable'); + throw new RuntimeException($msg); + break; + } + + return false; + } + + /** + * Exception handler for the current test browser instance. + * + * @param Exception $exception The exception + */ + function handleException(Exception $exception) + { + $this->test()->error(sprintf('%s: %s', get_class($exception), $exception->getMessage())); + + $traceData = $exception->getTrace(); + array_unshift($traceData, array( + 'function' => '', + 'file' => $exception->getFile() != null ? $exception->getFile() : 'n/a', + 'line' => $exception->getLine() != null ? $exception->getLine() : 'n/a', + 'args' => array(), + )); + + $traces = array(); + $lineFormat = ' at %s%s%s() in %s line %s'; + for ($i = 0, $count = count($traceData); $i < $count; $i++) + { + $line = isset($traceData[$i]['line']) ? $traceData[$i]['line'] : 'n/a'; + $file = isset($traceData[$i]['file']) ? $traceData[$i]['file'] : 'n/a'; + $args = isset($traceData[$i]['args']) ? $traceData[$i]['args'] : array(); + $this->test()->error(sprintf($lineFormat, + (isset($traceData[$i]['class']) ? $traceData[$i]['class'] : ''), + (isset($traceData[$i]['type']) ? $traceData[$i]['type'] : ''), + $traceData[$i]['function'], + $file, + $line + )); + } + + $this->test()->fail('An uncaught exception has been thrown.'); + } +} diff --git a/lib/vendor/symfony/lib/test/sfTester.class.php b/lib/vendor/symfony/lib/test/sfTester.class.php new file mode 100644 index 0000000..bc5365c --- /dev/null +++ b/lib/vendor/symfony/lib/test/sfTester.class.php @@ -0,0 +1,88 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfTester is the base class for all tester classes. + * + * @package symfony + * @subpackage test + * @author Fabien Potencier + * @version SVN: $Id: sfTester.class.php 13691 2008-12-03 22:17:01Z Kris.Wallsmith $ + */ +abstract class sfTester +{ + protected + $inABlock = false, + $browser = null, + $tester = null; + + /** + * Constructor. + * + * @param sfTestFunctionalBase $browser A browser + * @param lime_test $tester A tester object + */ + public function __construct(sfTestFunctionalBase $browser, $tester) + { + $this->browser = $browser; + $this->tester = $tester; + } + + /** + * Prepares the tester. + */ + abstract public function prepare(); + + /** + * Initializes the tester. + */ + abstract public function initialize(); + + /** + * Begins a block. + * + * @return sfTester This sfTester instance + */ + public function begin() + { + $this->inABlock = true; + + return $this->browser->begin(); + } + + /** + * Ends a block. + * + * @param sfTestFunctionalBase + */ + public function end() + { + $this->inABlock = false; + + return $this->browser->end(); + } + + /** + * Returns the object that each test method must return. + * + * @return sfTestFunctionalBase|sfTester + */ + public function getObjectToReturn() + { + return $this->inABlock ? $this : $this->browser; + } + + public function __call($method, $arguments) + { + call_user_func_array(array($this->browser, $method), $arguments); + + return $this->getObjectToReturn(); + } +} diff --git a/lib/vendor/symfony/lib/test/sfTesterForm.class.php b/lib/vendor/symfony/lib/test/sfTesterForm.class.php new file mode 100644 index 0000000..ba0b8a7 --- /dev/null +++ b/lib/vendor/symfony/lib/test/sfTesterForm.class.php @@ -0,0 +1,256 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfTesterForm implements tests for forms submitted by the user. + * + * @package symfony + * @subpackage test + * @author Fabien Potencier + * @version SVN: $Id: sfTesterForm.class.php 24217 2009-11-22 06:47:54Z fabien $ + */ +class sfTesterForm extends sfTester +{ + protected + $form = null; + + /** + * Constructor. + * + * @param sfTestFunctionalBase $browser A browser + * @param lime_test $tester A tester object + */ + public function __construct(sfTestFunctionalBase $browser, $tester) + { + parent::__construct($browser, $tester); + + $this->browser->addListener('template.filter_parameters', array($this, 'filterTemplateParameters')); + } + + /** + * Prepares the tester. + */ + public function prepare() + { + $this->form = null; + } + + /** + * Initiliazes the tester. + */ + public function initialize() + { + if (null === $this->form) + { + $action = $this->browser->getContext()->getActionStack()->getLastEntry()->getActionInstance(); + + foreach ($action->getVarHolder()->getAll() as $name => $value) + { + if ($value instanceof sfForm && $value->isBound()) + { + $this->form = $value; + break; + } + } + } + } + + /** + * Returns the current form. + * + * @return sfForm The current sfForm form instance + */ + public function getForm() + { + return $this->form; + } + + /** + * Tests if the submitted form has some error. + * + * @param Boolean|integer $value Whether to check if the form has error or not, or the number of errors + * + * @return sfTestFunctionalBase|sfTester + */ + public function hasErrors($value = true) + { + if (null === $this->form) + { + throw new LogicException('no form has been submitted.'); + } + + if (is_int($value)) + { + $this->tester->is(count($this->form->getErrorSchema()), $value, sprintf('the submitted form has "%s" errors.', $value)); + } + else + { + $this->tester->is($this->form->hasErrors(), $value, sprintf('the submitted form %s.', ($value) ? 'has some errors' : 'is valid')); + } + + return $this->getObjectToReturn(); + } + + /** + * Tests if the submitted form has a specific error. + * + * @param mixed $value The error message or the number of errors for the field (optional) + * + * @return sfTestFunctionalBase|sfTester + */ + public function hasGlobalError($value = true) + { + return $this->isError(null, $value); + } + + /** + * Tests if the submitted form has a specific error. + * + * @param string $field The field name to check for an error (null for global errors) + * @param mixed $value The error message or the number of errors for the field (optional) + * + * @return sfTestFunctionalBase|sfTester + */ + public function isError($field, $value = true) + { + if (null === $this->form) + { + throw new LogicException('no form has been submitted.'); + } + + if (null === $field) + { + $error = new sfValidatorErrorSchema(new sfValidatorPass(), $this->form->getGlobalErrors()); + } + else + { + $error = $this->getFormField($field)->getError(); + } + + if (false === $value) + { + $this->tester->ok(!$error || 0 == count($error), sprintf('the submitted form has no "%s" error.', $field)); + } + else if (true === $value) + { + $this->tester->ok($error && count($error) > 0, sprintf('the submitted form has a "%s" error.', $field)); + } + else if (is_int($value)) + { + $this->tester->ok($error && count($error) == $value, sprintf('the submitted form has %s "%s" error(s).', $value, $field)); + } + else if (preg_match('/^(!)?([^a-zA-Z0-9\\\\]).+?\\2[ims]?$/', $value, $match)) + { + if (!$error) + { + $this->tester->fail(sprintf('the submitted form has a "%s" error.', $field)); + } + else + { + if ($match[1] == '!') + { + $this->tester->unlike($error->getCode(), substr($value, 1), sprintf('the submitted form has a "%s" error that does not match "%s".', $field, $value)); + } + else + { + $this->tester->like($error->getCode(), $value, sprintf('the submitted form has a "%s" error that matches "%s".', $field, $value)); + } + } + } + else + { + if (!$error) + { + $this->tester->fail(sprintf('the submitted form has a "%s" error (%s).', $field, $value)); + } + else + { + $this->tester->is($error->getCode(), $value, sprintf('the submitted form has a "%s" error (%s).', $field, $value)); + } + } + + return $this->getObjectToReturn(); + } + + /** + * Outputs some debug information about the current submitted form. + */ + public function debug() + { + if (null === $this->form) + { + throw new LogicException('no form has been submitted.'); + } + + print $this->tester->error('Form debug'); + + print sprintf("Submitted values: %s\n", str_replace("\n", '', var_export($this->form->getTaintedValues(), true))); + print sprintf("Errors: %s\n", $this->form->getErrorSchema()); + + exit(1); + } + + /** + * Listens to the template.filter_parameters event to get the submitted form object. + * + * @param sfEvent $event The event + * @param array $parameters An array of parameters passed to the template + * + * @return array The array of parameters passed to the template + */ + public function filterTemplateParameters(sfEvent $event, $parameters) + { + if (!isset($parameters['sf_type'])) + { + return $parameters; + } + + if ('action' == $parameters['sf_type']) + { + foreach ($parameters as $key => $value) + { + if ($value instanceof sfForm && $value->isBound()) + { + $this->form = $value; + break; + } + } + } + + return $parameters; + } + + /** + * @param string $path + * @return sfFormField + */ + + public function getFormField($path) + { + if (false !== $pos = strpos($path, '[')) + { + $field = $this->form[substr($path, 0, $pos)]; + } + else + { + return $this->form[$path]; + } + + if (preg_match_all('/\[(?P[^]]+)\]/', $path, $matches)) + { + foreach($matches['part'] as $part) + { + $field = $field[$part]; + } + } + + return $field; + } +} diff --git a/lib/vendor/symfony/lib/test/sfTesterMailer.class.php b/lib/vendor/symfony/lib/test/sfTesterMailer.class.php new file mode 100644 index 0000000..fd1a5e8 --- /dev/null +++ b/lib/vendor/symfony/lib/test/sfTesterMailer.class.php @@ -0,0 +1,275 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfTesterMailer implements tests for the symfony mailer object. + * + * @package symfony + * @subpackage test + * @author Fabien Potencier + * @version SVN: $Id: sfTesterMailer.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $ + */ +class sfTesterMailer extends sfTester +{ + protected + $logger = null, + $message = null; + + /** + * Prepares the tester. + */ + public function prepare() + { + } + + /** + * Initializes the tester. + */ + public function initialize() + { + $this->logger = $this->browser->getContext()->getMailer()->getLogger(); + + if ($this->logger->countMessages()) + { + $messages = $this->logger->getMessages(); + + $this->message = $messages[0]; + } + } + + /** + * Tests if message was send and optional how many. + * + * @param int $nb number of messages + * + * @return sfTestFunctionalBase|sfTester + */ + public function hasSent($nb = null) + { + if (null === $nb) + { + $this->tester->ok($this->logger->countMessages() > 0, 'mailer sent some email(s).'); + } + else + { + $this->tester->is($this->logger->countMessages(), $nb, sprintf('mailer sent %s email(s).', $nb)); + } + + return $this->getObjectToReturn(); + } + + /** + * Outputs some debug information about mails sent during the current request. + */ + public function debug() + { + foreach ($this->logger->getMessages() as $message) + { + echo $message->toString()."\n\n"; + } + + exit(1); + } + + /** + * Changes the context to use the email corresponding to the given criteria. + * + * @param string|array $to the email or array(email => alias) + * @param int $position address position + * + * @return sfTestFunctionalBase|sfTester + */ + public function withMessage($to, $position = 1) + { + $messageEmail = $to; + if(is_array($to)) + { + $alias = current($to); + $to = key($to); + $messageEmail = sprintf('%s <%s>', $alias, $to); + } + + $matches = 0; + foreach ($this->logger->getMessages() as $message) + { + $email = $message->getTo(); + if ($to == key($email)) + { + $matches++; + + if ($matches == $position) + { + $this->message = $message; + + if(isset($alias) AND $alias != current($email)) + { + break; + } + + $this->tester->pass(sprintf('switch context to the message number "%s" sent to "%s"', $position, $messageEmail)); + + return $this; + } + } + } + + $this->tester->fail(sprintf('unable to find a message sent to "%s"', $messageEmail)); + + return $this; + } + + /** + * Tests for a mail message body. + * + * @param string $value regular expression or value + * + * @return sfTestFunctionalBase|sfTester + */ + public function checkBody($value) + { + if (!$this->message) + { + $this->tester->fail('unable to test as no email were sent'); + } + + $body = $this->message->getBody(); + $ok = false; + $regex = false; + $mustMatch = true; + if (preg_match('/^(!)?([^a-zA-Z0-9\\\\]).+?\\2[ims]?$/', $value, $match)) + { + $regex = $value; + if ($match[1] == '!') + { + $mustMatch = false; + $regex = substr($value, 1); + } + } + + if (false !== $regex) + { + if ($mustMatch) + { + if (preg_match($regex, $body)) + { + $ok = true; + $this->tester->pass(sprintf('email body matches "%s"', $value)); + } + } + else + { + if (preg_match($regex, $body)) + { + $ok = true; + $this->tester->fail(sprintf('email body does not match "%s"', $value)); + } + } + } + else if ($body == $value) + { + $ok = true; + $this->tester->pass(sprintf('email body is "%s"', $value)); + } + + if (!$ok) + { + if (!$mustMatch) + { + $this->tester->pass(sprintf('email body matches "%s"', $value)); + } + else + { + $this->tester->fail(sprintf('email body matches "%s"', $value)); + } + } + + return $this->getObjectToReturn(); + } + + /** + * Tests for a mail message header. + * + * @param string $key entry to test + * @param string $value regular expression or value + * + * @return sfTestFunctionalBase|sfTester + */ + public function checkHeader($key, $value) + { + if (!$this->message) + { + $this->tester->fail('unable to test as no email were sent'); + } + + $headers = array(); + foreach ($this->message->getHeaders()->getAll($key) as $header) + { + $headers[] = $header->getFieldBody(); + } + $current = implode(', ', $headers); + $ok = false; + $regex = false; + $mustMatch = true; + if (preg_match('/^(!)?([^a-zA-Z0-9\\\\]).+?\\2[ims]?$/', $value, $match)) + { + $regex = $value; + if ($match[1] == '!') + { + $mustMatch = false; + $regex = substr($value, 1); + } + } + + foreach ($headers as $header) + { + if (false !== $regex) + { + if ($mustMatch) + { + if (preg_match($regex, $header)) + { + $ok = true; + $this->tester->pass(sprintf('email header "%s" matches "%s" (%s)', $key, $value, $current)); + break; + } + } + else + { + if (preg_match($regex, $header)) + { + $ok = true; + $this->tester->fail(sprintf('email header "%s" does not match "%s" (%s)', $key, $value, $current)); + break; + } + } + } + else if ($header == $value) + { + $ok = true; + $this->tester->pass(sprintf('email header "%s" is "%s" (%s)', $key, $value, $current)); + break; + } + } + + if (!$ok) + { + if (!$mustMatch) + { + $this->tester->pass(sprintf('email header "%s" matches "%s" (%s)', $key, $value, $current)); + } + else + { + $this->tester->fail(sprintf('email header "%s" matches "%s" (%s)', $key, $value, $current)); + } + } + + return $this->getObjectToReturn(); + } +} diff --git a/lib/vendor/symfony/lib/test/sfTesterRequest.class.php b/lib/vendor/symfony/lib/test/sfTesterRequest.class.php new file mode 100644 index 0000000..60d4f6e --- /dev/null +++ b/lib/vendor/symfony/lib/test/sfTesterRequest.class.php @@ -0,0 +1,152 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfTesterRequest implements tests for the symfony request object. + * + * @package symfony + * @subpackage test + * @author Fabien Potencier + * @version SVN: $Id: sfTesterRequest.class.php 27845 2010-02-10 19:46:03Z Kris.Wallsmith $ + */ +class sfTesterRequest extends sfTester +{ + protected $request; + + /** + * Prepares the tester. + */ + public function prepare() + { + } + + /** + * Initializes the tester. + */ + public function initialize() + { + $this->request = $this->browser->getRequest(); + } + + /** + * Tests whether or not a given key and value exists in the request. + * + * @param string $key + * @param string $value + * + * @return sfTestFunctionalBase|sfTester + */ + public function isParameter($key, $value) + { + $this->tester->is($this->request->getParameter($key), $value, sprintf('request parameter "%s" is "%s"', $key, $value)); + + return $this->getObjectToReturn(); + } + + /** + * Tests for the request is in the given format. + * + * @param string $format The request format + * + * @return sfTestFunctionalBase|sfTester + */ + public function isFormat($format) + { + $this->tester->is($this->request->getRequestFormat(), $format, sprintf('request format is "%s"', $format)); + + return $this->getObjectToReturn(); + } + + /** + * Tests if the current HTTP method matches the given one + * + * @param string $method The HTTP method name + * + * @return sfTestFunctionalBase|sfTester + */ + public function isMethod($method) + { + $this->tester->ok($this->request->isMethod($method), sprintf('request method is "%s"', strtoupper($method))); + + return $this->getObjectToReturn(); + } + + /** + * Checks if a cookie exists. + * + * @param string $name The cookie name + * @param Boolean $exists Whether the cookie must exist or not + * + * @return sfTestFunctionalBase|sfTester + */ + public function hasCookie($name, $exists = true) + { + if (!array_key_exists($name, $_COOKIE)) + { + if ($exists) + { + $this->tester->fail(sprintf('cookie "%s" exists.', $name)); + } + else + { + $this->tester->pass(sprintf('cookie "%s" does not exist.', $name)); + } + + return $this->getObjectToReturn(); + } + + if ($exists) + { + $this->tester->pass(sprintf('cookie "%s" exists.', $name)); + } + else + { + $this->tester->fail(sprintf('cookie "%s" does not exist.', $name)); + } + + return $this->getObjectToReturn(); + } + + /** + * Checks the value of a cookie. + * + * @param string $name The cookie name + * @param mixed $value The expected value + * + * @return sfTestFunctionalBase|sfTester + */ + public function isCookie($name, $value) + { + if (!array_key_exists($name, $_COOKIE)) + { + $this->tester->fail(sprintf('cookie "%s" does not exist.', $name)); + + return $this->getObjectToReturn(); + } + + if (preg_match('/^(!)?([^a-zA-Z0-9\\\\]).+?\\2[ims]?$/', $value, $match)) + { + if ($match[1] == '!') + { + $this->tester->unlike($_COOKIE[$name], substr($value, 1), sprintf('cookie "%s" content does not match regex "%s"', $name, $value)); + } + else + { + $this->tester->like($_COOKIE[$name], $value, sprintf('cookie "%s" content matches regex "%s"', $name, $value)); + } + } + else + { + $this->tester->is($_COOKIE[$name], $value, sprintf('cookie "%s" content is ok', $name)); + } + + return $this->getObjectToReturn(); + } +} diff --git a/lib/vendor/symfony/lib/test/sfTesterResponse.class.php b/lib/vendor/symfony/lib/test/sfTesterResponse.class.php new file mode 100644 index 0000000..c621cd4 --- /dev/null +++ b/lib/vendor/symfony/lib/test/sfTesterResponse.class.php @@ -0,0 +1,489 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfTesterResponse implements tests for the symfony response object. + * + * @package symfony + * @subpackage test + * @author Fabien Potencier + * @version SVN: $Id: sfTesterResponse.class.php 27061 2010-01-22 17:08:04Z FabianLange $ + */ +class sfTesterResponse extends sfTester +{ + protected + $response = null, + $dom = null, + $domCssSelector = null; + + /** + * Prepares the tester. + */ + public function prepare() + { + } + + /** + * Initializes the tester. + */ + public function initialize() + { + $this->response = $this->browser->getResponse(); + + $this->dom = null; + $this->domCssSelector = null; + if (preg_match('/(x|ht)ml/i', $this->response->getContentType(), $matches)) + { + $this->dom = new DOMDocument('1.0', $this->response->getCharset()); + $this->dom->validateOnParse = true; + if ('x' == $matches[1]) + { + @$this->dom->loadXML($this->response->getContent()); + } + else + { + @$this->dom->loadHTML($this->response->getContent()); + } + $this->domCssSelector = new sfDomCssSelector($this->dom); + } + } + + /** + * Tests that the response matches a given CSS selector. + * + * @param string $selector The response selector or a sfDomCssSelector object + * @param mixed $value Flag for the selector + * @param array $options Options for the current test + * + * @return sfTestFunctionalBase|sfTester + */ + public function checkElement($selector, $value = true, $options = array()) + { + if (null === $this->dom) + { + throw new LogicException('The DOM is not accessible because the browser response content type is not HTML.'); + } + + if (is_object($selector)) + { + $values = $selector->getValues(); + } + else + { + $values = $this->domCssSelector->matchAll($selector)->getValues(); + } + + if (false === $value) + { + $this->tester->is(count($values), 0, sprintf('response selector "%s" does not exist', $selector)); + } + else if (true === $value) + { + $this->tester->cmp_ok(count($values), '>', 0, sprintf('response selector "%s" exists', $selector)); + } + else if (is_int($value)) + { + $this->tester->is(count($values), $value, sprintf('response selector "%s" matches "%s" times', $selector, $value)); + } + else if (preg_match('/^(!)?([^a-zA-Z0-9\\\\]).+?\\2[ims]?$/', $value, $match)) + { + $position = isset($options['position']) ? $options['position'] : 0; + if ($match[1] == '!') + { + $this->tester->unlike(@$values[$position], substr($value, 1), sprintf('response selector "%s" does not match regex "%s"', $selector, substr($value, 1))); + } + else + { + $this->tester->like(@$values[$position], $value, sprintf('response selector "%s" matches regex "%s"', $selector, $value)); + } + } + else + { + $position = isset($options['position']) ? $options['position'] : 0; + $this->tester->is(@$values[$position], $value, sprintf('response selector "%s" matches "%s"', $selector, $value)); + } + + if (isset($options['count'])) + { + $this->tester->is(count($values), $options['count'], sprintf('response selector "%s" matches "%s" times', $selector, $options['count'])); + } + + return $this->getObjectToReturn(); + } + + /** + * Checks that a form is rendered correctly. + * + * @param sfForm|string $form A form object or the name of a form class + * @param string $selector CSS selector for the root form element for this form + * + * @return sfTestFunctionalBase|sfTester + */ + public function checkForm($form, $selector = 'form') + { + if (!$form instanceof sfForm) + { + $form = new $form(); + } + + $rendered = array(); + foreach ($this->domCssSelector->matchAll(sprintf('%1$s input, %1$s textarea, %1$s select', $selector))->getNodes() as $element) + { + $rendered[] = $element->getAttribute('name'); + } + + foreach ($form as $field => $widget) + { + $dom = new DOMDocument('1.0', sfConfig::get('sf_charset')); + $dom->loadHTML((string) $widget); + + foreach ($dom->getElementsByTagName('*') as $element) + { + if (in_array($element->tagName, array('input', 'select', 'textarea'))) + { + if (false !== $pos = array_search($element->getAttribute('name'), $rendered)) + { + unset($rendered[$pos]); + } + + $this->tester->ok(false !== $pos, sprintf('response includes "%s" form "%s" field - "%s %s[name=%s]"', get_class($form), $field, $selector, $element->tagName, $element->getAttribute('name'))); + } + } + } + + return $this->getObjectToReturn(); + } + + /** + * Validates the response. + * + * @param mixed $checkDTD Either true to validate against the response DTD or + * provide the path to a *.xsd, *.rng or *.rnc schema + * + * @return sfTestFunctionalBase|sfTester + * + * @throws LogicException If the response is neither XML nor (X)HTML + */ + public function isValid($checkDTD = false) + { + if (preg_match('/(x|ht)ml/i', $this->response->getContentType())) + { + $revert = libxml_use_internal_errors(true); + + $dom = new DOMDocument('1.0', $this->response->getCharset()); + $content = $this->response->getContent(); + + if (true === $checkDTD) + { + $cache = sfConfig::get('sf_cache_dir').'/sf_tester_response/w3'; + if ($cache[1] == ':') + { + // On Windows systems the path will be like c:\symfony\cache\xml.dtd + // I did not manage to get DOMDocument loading a file protocol url including the drive letter + // file://c:\symfony\cache\xml.dtd or file://c:/symfony/cache/xml.dtd + // The first one simply doesnt work, the second one is treated as remote call. + // However the following works. Unfortunatly this means we can only access the current disk + // file:///symfony/cache/xml.dtd + // Note that all work for file_get_contents so the bug is most likely in DOMDocument. + $local = 'file://'.substr(str_replace(DIRECTORY_SEPARATOR, '/', $cache), 2); + } + else + { + $local = 'file://'.$cache; + } + + if (!file_exists($cache.'/TR/xhtml11/DTD/xhtml11.dtd')) + { + $filesystem = new sfFilesystem(); + + $finder = sfFinder::type('any')->discard('.sf'); + $filesystem->mirror(dirname(__FILE__).'/w3', $cache, $finder); + + $finder = sfFinder::type('file'); + $filesystem->replaceTokens($finder->in($cache), '##', '##', array('LOCAL_W3' => $local)); + } + + $content = preg_replace('#(]+")http://www.w3.org(.*")#i', '\\1'.$local.'\\2', $content); + $dom->validateOnParse = $checkDTD; + } + + $dom->loadXML($content); + + switch (pathinfo($checkDTD, PATHINFO_EXTENSION)) + { + case 'xsd': + $dom->schemaValidate($checkDTD); + $message = sprintf('response validates per XSD schema "%s"', basename($checkDTD)); + break; + case 'rng': + case 'rnc': + $dom->relaxNGValidate($checkDTD); + $message = sprintf('response validates per relaxNG schema "%s"', basename($checkDTD)); + break; + default: + $message = $dom->validateOnParse ? sprintf('response validates as "%s"', $dom->doctype->name) : 'response is well-formed "xml"'; + } + + if (count($errors = libxml_get_errors())) + { + $lines = explode(PHP_EOL, $this->response->getContent()); + + $this->tester->fail($message); + foreach ($errors as $error) + { + $this->tester->diag(' '.trim($error->message)); + if (preg_match('/line (\d+)/', $error->message, $match) && $error->line != $match[1]) + { + $this->tester->diag(' '.str_pad($match[1].':', 6).trim($lines[$match[1] - 1])); + } + $this->tester->diag(' '.str_pad($error->line.':', 6).trim($lines[$error->line - 1])); + } + } + else + { + $this->tester->pass($message); + } + + libxml_use_internal_errors($revert); + } + else + { + throw new LogicException(sprintf('Unable to validate responses of content type "%s"', $this->response->getContentType())); + } + + return $this->getObjectToReturn(); + } + + /** + * Tests for a response header. + * + * @param string $key + * @param string $value + * + * @return sfTestFunctionalBase|sfTester + */ + public function isHeader($key, $value) + { + $headers = explode(', ', $this->response->getHttpHeader($key)); + $ok = false; + $regex = false; + $mustMatch = true; + if (preg_match('/^(!)?([^a-zA-Z0-9\\\\]).+?\\2[ims]?$/', $value, $match)) + { + $regex = $value; + if ($match[1] == '!') + { + $mustMatch = false; + $regex = substr($value, 1); + } + } + + foreach ($headers as $header) + { + if (false !== $regex) + { + if ($mustMatch) + { + if (preg_match($regex, $header)) + { + $ok = true; + $this->tester->pass(sprintf('response header "%s" matches "%s" (%s)', $key, $value, $this->response->getHttpHeader($key))); + break; + } + } + else + { + if (preg_match($regex, $header)) + { + $ok = true; + $this->tester->fail(sprintf('response header "%s" does not match "%s" (%s)', $key, $value, $this->response->getHttpHeader($key))); + break; + } + } + } + else if ($header == $value) + { + $ok = true; + $this->tester->pass(sprintf('response header "%s" is "%s" (%s)', $key, $value, $this->response->getHttpHeader($key))); + break; + } + } + + if (!$ok) + { + if (!$mustMatch) + { + $this->tester->pass(sprintf('response header "%s" matches "%s" (%s)', $key, $value, $this->response->getHttpHeader($key))); + } + else + { + $this->tester->fail(sprintf('response header "%s" matches "%s" (%s)', $key, $value, $this->response->getHttpHeader($key))); + } + } + + return $this->getObjectToReturn(); + } + + /** + * Tests if a cookie was set. + * + * @param string $name + * @param string $value + * @param array $attributes Other cookie attributes to check (expires, path, domain, etc) + * + * @return sfTestFunctionalBase|sfTester + */ + public function setsCookie($name, $value = null, $attributes = array()) + { + foreach ($this->response->getCookies() as $cookie) + { + if ($name == $cookie['name']) + { + if (null === $value) + { + $this->tester->pass(sprintf('response sets cookie "%s"', $name)); + } + else + { + $this->tester->ok($value == $cookie['value'], sprintf('response sets cookie "%s" to "%s"', $name, $value)); + } + + foreach ($attributes as $attributeName => $attributeValue) + { + if (!array_key_exists($attributeName, $cookie)) + { + throw new LogicException(sprintf('The cookie attribute "%s" is not valid.', $attributeName)); + } + + $this->tester->is($cookie[$attributeName], $attributeValue, sprintf('"%s" cookie "%s" attribute is "%s"', $name, $attributeName, $attributeValue)); + } + + return $this->getObjectToReturn(); + } + } + + $this->tester->fail(sprintf('response sets cookie "%s"', $name)); + + return $this->getObjectToReturn(); + } + + /** + * Tests the response content against a regex. + * + * @param string Regex + * + * @return sfTestFunctionalBase|sfTester + */ + public function matches($regex) + { + if (!preg_match('/^(!)?([^a-zA-Z0-9\\\\]).+?\\2[ims]?$/', $regex, $match)) + { + throw new InvalidArgumentException(sprintf('"%s" is not a valid regular expression.', $regex)); + } + + if ($match[1] == '!') + { + $this->tester->unlike($this->response->getContent(), substr($regex, 1), sprintf('response content does not match regex "%s"', substr($regex, 1))); + } + else + { + $this->tester->like($this->response->getContent(), $regex, sprintf('response content matches regex "%s"', $regex)); + } + + return $this->getObjectToReturn(); + } + + /** + * Tests the status code. + * + * @param string $statusCode Status code to check, default 200 + * + * @return sfTestFunctionalBase|sfTester + */ + public function isStatusCode($statusCode = 200) + { + $this->tester->is($this->response->getStatusCode(), $statusCode, sprintf('status code is "%s"', $statusCode)); + + return $this->getObjectToReturn(); + } + + /** + * Tests if the current request has been redirected. + * + * @param bool $boolean Flag for redirection mode + * + * @return sfTestFunctionalBase|sfTester + */ + public function isRedirected($boolean = true) + { + if ($location = $this->response->getHttpHeader('location')) + { + $boolean ? $this->tester->pass(sprintf('page redirected to "%s"', $location)) : $this->tester->fail(sprintf('page redirected to "%s"', $location)); + } + else + { + $boolean ? $this->tester->fail('page redirected') : $this->tester->pass('page not redirected'); + } + + return $this->getObjectToReturn(); + } + + /** + * Outputs some debug information about the current response. + * + * @param string $realOutput Whether to display the actual content of the response when an error occurred + * or the exception message and the stack trace to ease debugging + */ + public function debug($realOutput = false) + { + print $this->tester->error('Response debug'); + + if (!$realOutput && null !== sfException::getLastException()) + { + // print the exception and the stack trace instead of the "normal" output + $this->tester->comment('WARNING'); + $this->tester->comment('An error occurred when processing this request.'); + $this->tester->comment('The real response content has been replaced with the exception message to ease debugging.'); + } + + printf("HTTP/1.X %s\n", $this->response->getStatusCode()); + + foreach ($this->response->getHttpHeaders() as $name => $value) + { + printf("%s: %s\n", $name, $value); + } + + foreach ($this->response->getCookies() as $cookie) + { + vprintf("Set-Cookie: %s=%s; %spath=%s%s%s%s\n", array( + $cookie['name'], + $cookie['value'], + null === $cookie['expire'] ? '' : sprintf('expires=%s; ', date('D d-M-Y H:i:s T', $cookie['expire'])), + $cookie['path'], + $cookie['domain'] ? sprintf('; domain=%s', $cookie['domain']) : '', + $cookie['secure'] ? '; secure' : '', + $cookie['httpOnly'] ? '; HttpOnly' : '', + )); + } + + echo "\n"; + if (!$realOutput && null !== $exception = sfException::getLastException()) + { + echo $exception; + } + else + { + echo $this->response->getContent(); + } + echo "\n"; + + exit(1); + } +} diff --git a/lib/vendor/symfony/lib/test/sfTesterUser.class.php b/lib/vendor/symfony/lib/test/sfTesterUser.class.php new file mode 100644 index 0000000..c24624a --- /dev/null +++ b/lib/vendor/symfony/lib/test/sfTesterUser.class.php @@ -0,0 +1,112 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfTesterUser implements tests for the symfony user object. + * + * @package symfony + * @subpackage test + * @author Fabien Potencier + * @version SVN: $Id: sfTesterUser.class.php 21769 2009-09-08 03:01:39Z dwhittle $ + */ +class sfTesterUser extends sfTester +{ + protected $user; + + /** + * Prepares the tester. + */ + public function prepare() + { + } + + /** + * Initializes the tester. + */ + public function initialize() + { + $this->user = $this->browser->getUser(); + } + + /** + * Tests a user attribute value. + * + * @param string $key + * @param string $value + * @param string $ns + * + * @return sfTestFunctionalBase|sfTester + */ + public function isAttribute($key, $value, $ns = null) + { + $this->tester->is($this->user->getAttribute($key, null, $ns), $value, sprintf('user attribute "%s" is "%s"', $key, $value)); + + return $this->getObjectToReturn(); + } + + /** + * Tests a user flash value. + * + * @param string $key + * @param string $value + * + * @return sfTestFunctionalBase|sfTester + */ + public function isFlash($key, $value) + { + $this->tester->is($this->user->getFlash($key), $value, sprintf('user flash "%s" is "%s"', $key, $value)); + + return $this->getObjectToReturn(); + } + + /** + * Tests the user culture. + * + * @param string $culture The user culture + * + * @return sfTestFunctionalBase|sfTester + */ + public function isCulture($culture) + { + $this->tester->is($this->user->getCulture(), $culture, sprintf('user culture is "%s"', $culture)); + + return $this->getObjectToReturn(); + } + + /** + * Tests if the user is authenticated. + * + * @param Boolean $boolean Whether to check if the user is authenticated or not + * + * @return sfTestFunctionalBase|sfTester + */ + public function isAuthenticated($boolean = true) + { + $this->tester->is($this->user->isAuthenticated(), $boolean, sprintf('user is %sauthenticated', $boolean ? '' : 'not ')); + + return $this->getObjectToReturn(); + } + + /** + * Tests if the user has some credentials. + * + * @param mixed $credentials + * @param bool $boolean Whether to check if the user have some credentials or not + * @param bool $useAnd specify the mode, either AND or OR + * + * @return sfTestFunctionalBase|sfTester + */ + public function hasCredential($credentials, $boolean = true, $useAnd = true) + { + $this->tester->is($this->user->hasCredential($credentials, $useAnd), $boolean, sprintf('user has %sthe right credentials', $boolean ? '' : 'not ')); + + return $this->getObjectToReturn(); + } +} diff --git a/lib/vendor/symfony/lib/test/sfTesterViewCache.class.php b/lib/vendor/symfony/lib/test/sfTesterViewCache.class.php new file mode 100644 index 0000000..928552b --- /dev/null +++ b/lib/vendor/symfony/lib/test/sfTesterViewCache.class.php @@ -0,0 +1,130 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfTesterViewCache implements tests for the symfony view cache manager. + * + * @package symfony + * @subpackage test + * @author Fabien Potencier + * @version SVN: $Id: sfTesterViewCache.class.php 24615 2009-11-30 22:30:46Z Kris.Wallsmith $ + */ +class sfTesterViewCache extends sfTester +{ + protected + $viewCacheManager = null, + $response = null, + $routing = null; + + /** + * Prepares the tester. + */ + public function prepare() + { + } + + /** + * Initializes the tester. + */ + public function initialize() + { + $this->viewCacheManager = $this->browser->getContext()->getViewCacheManager(); + $this->routing = $this->browser->getContext()->getRouting(); + $this->response = $this->browser->getResponse(); + } + + /** + * Tests if the given uri is cached. + * + * @param boolean $boolean Flag for checking the cache + * @param boolean $with_layout If have or not layout + * + * @return sfTestFunctionalBase|sfTester + */ + public function isCached($boolean, $with_layout = false) + { + return $this->isUriCached($this->viewCacheManager->getCurrentCacheKey(), $boolean, $with_layout); + } + + /** + * Tests if the given uri is cached. + * + * @param string $uri Uniform resource identifier + * @param boolean $boolean Flag for checking the cache + * @param boolean $with_layout If have or not layout + * + * @return sfTestFunctionalBase|sfTester + */ + public function isUriCached($uri, $boolean, $with_layout = false) + { + $cacheManager = $this->viewCacheManager; + + // check that cache is enabled + if (!$cacheManager) + { + $this->tester->ok(!$boolean, 'cache is disabled'); + + return $this->getObjectToReturn(); + } + + if ($uri == $this->viewCacheManager->getCurrentCacheKey()) + { + $main = true; + $type = $with_layout ? 'page' : 'action'; + } + else + { + $main = false; + $type = $uri; + } + + // check layout configuration + if ($cacheManager->withLayout($uri) && !$with_layout) + { + $this->tester->fail('cache without layout'); + $this->tester->skip('cache is not configured properly', 2); + } + else if (!$cacheManager->withLayout($uri) && $with_layout) + { + $this->tester->fail('cache with layout'); + $this->tester->skip('cache is not configured properly', 2); + } + else + { + $this->tester->pass('cache is configured properly'); + + // check page is cached + $ret = $this->tester->is($cacheManager->has($uri), $boolean, sprintf('"%s" %s in cache', $type, $boolean ? 'is' : 'is not')); + + // check that the content is ok in cache + if ($boolean) + { + if (!$ret) + { + $this->tester->fail('content in cache is ok'); + } + else if ($with_layout) + { + $response = unserialize($cacheManager->get($uri)); + $content = $response->getContent(); + $this->tester->ok($content == $this->response->getContent(), 'content in cache is ok'); + } + else + { + $ret = unserialize($cacheManager->get($uri)); + $content = $ret['content']; + $this->tester->ok(false !== strpos($this->response->getContent(), $content), 'content in cache is ok'); + } + } + } + + return $this->getObjectToReturn(); + } +} diff --git a/lib/vendor/symfony/lib/test/w3/.svn/all-wcprops b/lib/vendor/symfony/lib/test/w3/.svn/all-wcprops new file mode 100644 index 0000000..249b812 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 40 +/!svn/ver/23881/branches/1.4/lib/test/w3 +END diff --git a/lib/vendor/symfony/lib/test/w3/.svn/entries b/lib/vendor/symfony/lib/test/w3/.svn/entries new file mode 100644 index 0000000..8e1a347 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/.svn/entries @@ -0,0 +1,31 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/test/w3 +http://svn.symfony-project.com + + + +2009-11-02T13:52:53.653912Z +23520 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +TR +dir + diff --git a/lib/vendor/symfony/lib/test/w3/TR/.svn/all-wcprops b/lib/vendor/symfony/lib/test/w3/TR/.svn/all-wcprops new file mode 100644 index 0000000..70a20d6 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 43 +/!svn/ver/23881/branches/1.4/lib/test/w3/TR +END diff --git a/lib/vendor/symfony/lib/test/w3/TR/.svn/entries b/lib/vendor/symfony/lib/test/w3/TR/.svn/entries new file mode 100644 index 0000000..a332fb5 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/.svn/entries @@ -0,0 +1,43 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/test/w3/TR +http://svn.symfony-project.com + + + +2009-11-02T13:52:53.653912Z +23520 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +ruby +dir + +html4 +dir + +xhtml-modularization +dir + +xhtml1 +dir + +xhtml11 +dir + diff --git a/lib/vendor/symfony/lib/test/w3/TR/html4/.svn/all-wcprops b/lib/vendor/symfony/lib/test/w3/TR/html4/.svn/all-wcprops new file mode 100644 index 0000000..7f4785a --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/html4/.svn/all-wcprops @@ -0,0 +1,35 @@ +K 25 +svn:wc:ra_dav:version-url +V 49 +/!svn/ver/23881/branches/1.4/lib/test/w3/TR/html4 +END +HTMLsymbol.ent +K 25 +svn:wc:ra_dav:version-url +V 64 +/!svn/ver/23881/branches/1.4/lib/test/w3/TR/html4/HTMLsymbol.ent +END +strict.dtd +K 25 +svn:wc:ra_dav:version-url +V 60 +/!svn/ver/23881/branches/1.4/lib/test/w3/TR/html4/strict.dtd +END +HTMLspecial.ent +K 25 +svn:wc:ra_dav:version-url +V 65 +/!svn/ver/23881/branches/1.4/lib/test/w3/TR/html4/HTMLspecial.ent +END +HTMLlat1.ent +K 25 +svn:wc:ra_dav:version-url +V 62 +/!svn/ver/23881/branches/1.4/lib/test/w3/TR/html4/HTMLlat1.ent +END +loose.dtd +K 25 +svn:wc:ra_dav:version-url +V 59 +/!svn/ver/23881/branches/1.4/lib/test/w3/TR/html4/loose.dtd +END diff --git a/lib/vendor/symfony/lib/test/w3/TR/html4/.svn/entries b/lib/vendor/symfony/lib/test/w3/TR/html4/.svn/entries new file mode 100644 index 0000000..f8f4f4e --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/html4/.svn/entries @@ -0,0 +1,198 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/test/w3/TR/html4 +http://svn.symfony-project.com + + + +2009-10-27T13:42:38.759478Z +23380 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +HTMLsymbol.ent +file + + + + +2012-05-10T18:41:16.489551Z +4f1cf5bfe1ad26e562d9ec01d044b9f9 +2009-10-27T13:42:38.759478Z +23380 +Kris.Wallsmith + + + + + + + + + + + + + + + + + + + + + +14447 + +strict.dtd +file + + + + +2012-05-10T18:41:16.489551Z +86f7f3716b98fc17f635db5bdc8439b9 +2009-10-27T13:42:38.759478Z +23380 +Kris.Wallsmith + + + + + + + + + + + + + + + + + + + + + +34592 + +HTMLspecial.ent +file + + + + +2012-05-10T18:41:16.489551Z +ede944e4afe19d77fbfa3448afdc7000 +2009-10-27T13:42:38.759478Z +23380 +Kris.Wallsmith + + + + + + + + + + + + + + + + + + + + + +4114 + +HTMLlat1.ent +file + + + + +2012-05-10T18:41:16.489551Z +d519dd9f7032faaa48a5082c3c1824d1 +2009-10-27T13:42:38.759478Z +23380 +Kris.Wallsmith + + + + + + + + + + + + + + + + + + + + + +11956 + +loose.dtd +file + + + + +2012-05-10T18:41:16.489551Z +1e9156cc36691ee6eb289f29ea934daf +2009-10-27T13:42:38.759478Z +23380 +Kris.Wallsmith + + + + + + + + + + + + + + + + + + + + + +45434 + diff --git a/lib/vendor/symfony/lib/test/w3/TR/html4/.svn/text-base/HTMLlat1.ent.svn-base b/lib/vendor/symfony/lib/test/w3/TR/html4/.svn/text-base/HTMLlat1.ent.svn-base new file mode 100644 index 0000000..c644486 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/html4/.svn/text-base/HTMLlat1.ent.svn-base @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lib/vendor/symfony/lib/test/w3/TR/html4/.svn/text-base/HTMLspecial.ent.svn-base b/lib/vendor/symfony/lib/test/w3/TR/html4/.svn/text-base/HTMLspecial.ent.svn-base new file mode 100644 index 0000000..5ce5c6a --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/html4/.svn/text-base/HTMLspecial.ent.svn-base @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lib/vendor/symfony/lib/test/w3/TR/html4/.svn/text-base/HTMLsymbol.ent.svn-base b/lib/vendor/symfony/lib/test/w3/TR/html4/.svn/text-base/HTMLsymbol.ent.svn-base new file mode 100644 index 0000000..524bfe1 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/html4/.svn/text-base/HTMLsymbol.ent.svn-base @@ -0,0 +1,241 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lib/vendor/symfony/lib/test/w3/TR/html4/.svn/text-base/loose.dtd.svn-base b/lib/vendor/symfony/lib/test/w3/TR/html4/.svn/text-base/loose.dtd.svn-base new file mode 100644 index 0000000..bdb9c7a --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/html4/.svn/text-base/loose.dtd.svn-base @@ -0,0 +1,1093 @@ + + + + + ... + + + ... + + + + The URI used as a system identifier with the public identifier allows + the user agent to download the DTD and entity sets as needed. + + The FPI for the Strict HTML 4.01 DTD is: + + "-//W3C//DTD HTML 4.01//EN" + + This version of the strict DTD is: + + http://www.w3.org/TR/1999/REC-html401-19991224/strict.dtd + + Authors should use the Strict DTD unless they need the + presentation control for user agents that don't (adequately) + support style sheets. + + If you are writing a document that includes frames, use + the following FPI: + + "-//W3C//DTD HTML 4.01 Frameset//EN" + + This version of the frameset DTD is: + + http://www.w3.org/TR/1999/REC-html401-19991224/frameset.dtd + + Use the following (relative) URIs to refer to + the DTDs and entity definitions of this specification: + + "strict.dtd" + "loose.dtd" + "frameset.dtd" + "HTMLlat1.ent" + "HTMLsymbol.ent" + "HTMLspecial.ent" + +--> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +%HTMLlat1; + + +%HTMLsymbol; + + +%HTMLspecial; + + + + + + + + + + + + + +]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]]> + + + + +]]> + + + + + +]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]]> + + + + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/html4/.svn/text-base/strict.dtd.svn-base b/lib/vendor/symfony/lib/test/w3/TR/html4/.svn/text-base/strict.dtd.svn-base new file mode 100644 index 0000000..b274559 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/html4/.svn/text-base/strict.dtd.svn-base @@ -0,0 +1,870 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +%HTMLlat1; + + +%HTMLsymbol; + + +%HTMLspecial; + + + + + + + + + + + + + +]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/html4/HTMLlat1.ent b/lib/vendor/symfony/lib/test/w3/TR/html4/HTMLlat1.ent new file mode 100644 index 0000000..c644486 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/html4/HTMLlat1.ent @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lib/vendor/symfony/lib/test/w3/TR/html4/HTMLspecial.ent b/lib/vendor/symfony/lib/test/w3/TR/html4/HTMLspecial.ent new file mode 100644 index 0000000..5ce5c6a --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/html4/HTMLspecial.ent @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lib/vendor/symfony/lib/test/w3/TR/html4/HTMLsymbol.ent b/lib/vendor/symfony/lib/test/w3/TR/html4/HTMLsymbol.ent new file mode 100644 index 0000000..524bfe1 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/html4/HTMLsymbol.ent @@ -0,0 +1,241 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lib/vendor/symfony/lib/test/w3/TR/html4/loose.dtd b/lib/vendor/symfony/lib/test/w3/TR/html4/loose.dtd new file mode 100644 index 0000000..bdb9c7a --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/html4/loose.dtd @@ -0,0 +1,1093 @@ + + + + + ... + + + ... + + + + The URI used as a system identifier with the public identifier allows + the user agent to download the DTD and entity sets as needed. + + The FPI for the Strict HTML 4.01 DTD is: + + "-//W3C//DTD HTML 4.01//EN" + + This version of the strict DTD is: + + http://www.w3.org/TR/1999/REC-html401-19991224/strict.dtd + + Authors should use the Strict DTD unless they need the + presentation control for user agents that don't (adequately) + support style sheets. + + If you are writing a document that includes frames, use + the following FPI: + + "-//W3C//DTD HTML 4.01 Frameset//EN" + + This version of the frameset DTD is: + + http://www.w3.org/TR/1999/REC-html401-19991224/frameset.dtd + + Use the following (relative) URIs to refer to + the DTDs and entity definitions of this specification: + + "strict.dtd" + "loose.dtd" + "frameset.dtd" + "HTMLlat1.ent" + "HTMLsymbol.ent" + "HTMLspecial.ent" + +--> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +%HTMLlat1; + + +%HTMLsymbol; + + +%HTMLspecial; + + + + + + + + + + + + + +]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]]> + + + + +]]> + + + + + +]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]]> + + + + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/html4/strict.dtd b/lib/vendor/symfony/lib/test/w3/TR/html4/strict.dtd new file mode 100644 index 0000000..b274559 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/html4/strict.dtd @@ -0,0 +1,870 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +%HTMLlat1; + + +%HTMLsymbol; + + +%HTMLspecial; + + + + + + + + + + + + + +]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/ruby/.svn/all-wcprops b/lib/vendor/symfony/lib/test/w3/TR/ruby/.svn/all-wcprops new file mode 100644 index 0000000..3e768c7 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/ruby/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 48 +/!svn/ver/23881/branches/1.4/lib/test/w3/TR/ruby +END +xhtml-ruby-1.mod +K 25 +svn:wc:ra_dav:version-url +V 65 +/!svn/ver/23881/branches/1.4/lib/test/w3/TR/ruby/xhtml-ruby-1.mod +END diff --git a/lib/vendor/symfony/lib/test/w3/TR/ruby/.svn/entries b/lib/vendor/symfony/lib/test/w3/TR/ruby/.svn/entries new file mode 100644 index 0000000..a53b5eb --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/ruby/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/test/w3/TR/ruby +http://svn.symfony-project.com + + + +2009-10-27T13:42:38.759478Z +23380 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +xhtml-ruby-1.mod +file + + + + +2012-05-10T18:41:16.441553Z +0ea30a78a115139d3dde421227a54b24 +2009-10-27T13:42:38.759478Z +23380 +Kris.Wallsmith + + + + + + + + + + + + + + + + + + + + + +6857 + diff --git a/lib/vendor/symfony/lib/test/w3/TR/ruby/.svn/text-base/xhtml-ruby-1.mod.svn-base b/lib/vendor/symfony/lib/test/w3/TR/ruby/.svn/text-base/xhtml-ruby-1.mod.svn-base new file mode 100644 index 0000000..a44bb3f --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/ruby/.svn/text-base/xhtml-ruby-1.mod.svn-base @@ -0,0 +1,242 @@ + + + + + + + + + + + + + + + + + + + + + + + +]]> + +]]> + + + +]]> + + + + + + + + + + + + + +]]> + + + + + + +]]> + + + + + + +]]> +]]> + + + + + + + +]]> + + + + + + + + +]]> + + + + +]]> +]]> + + + + + + +]]> +]]> + + + + + + + + + + +]]> + + + + + +]]> + + + + + +]]> +]]> + + + + + +]]> + + + + + +]]> + + + + + +]]> +]]> +]]> + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/ruby/xhtml-ruby-1.mod b/lib/vendor/symfony/lib/test/w3/TR/ruby/xhtml-ruby-1.mod new file mode 100644 index 0000000..a44bb3f --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/ruby/xhtml-ruby-1.mod @@ -0,0 +1,242 @@ + + + + + + + + + + + + + + + + + + + + + + + +]]> + +]]> + + + +]]> + + + + + + + + + + + + + +]]> + + + + + + +]]> + + + + + + +]]> +]]> + + + + + + + +]]> + + + + + + + + +]]> + + + + +]]> +]]> + + + + + + +]]> +]]> + + + + + + + + + + +]]> + + + + + +]]> + + + + + +]]> +]]> + + + + + +]]> + + + + + +]]> + + + + + +]]> +]]> +]]> + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/.svn/all-wcprops b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/.svn/all-wcprops new file mode 100644 index 0000000..07134ec --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 64 +/!svn/ver/23881/branches/1.4/lib/test/w3/TR/xhtml-modularization +END diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/.svn/entries b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/.svn/entries new file mode 100644 index 0000000..ce56797 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/.svn/entries @@ -0,0 +1,31 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/test/w3/TR/xhtml-modularization +http://svn.symfony-project.com + + + +2009-10-27T13:42:38.759478Z +23380 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +DTD +dir + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/all-wcprops b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/all-wcprops new file mode 100644 index 0000000..9e477d4 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/all-wcprops @@ -0,0 +1,137 @@ +K 25 +svn:wc:ra_dav:version-url +V 68 +/!svn/ver/23881/branches/1.4/lib/test/w3/TR/xhtml-modularization/DTD +END +xhtml-pres-1.mod +K 25 +svn:wc:ra_dav:version-url +V 85 +/!svn/ver/23881/branches/1.4/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-pres-1.mod +END +xhtml-base-1.mod +K 25 +svn:wc:ra_dav:version-url +V 85 +/!svn/ver/23881/branches/1.4/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-base-1.mod +END +xhtml-list-1.mod +K 25 +svn:wc:ra_dav:version-url +V 85 +/!svn/ver/23881/branches/1.4/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-list-1.mod +END +xhtml-ssismap-1.mod +K 25 +svn:wc:ra_dav:version-url +V 88 +/!svn/ver/23881/branches/1.4/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-ssismap-1.mod +END +xhtml-image-1.mod +K 25 +svn:wc:ra_dav:version-url +V 86 +/!svn/ver/23881/branches/1.4/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-image-1.mod +END +xhtml-struct-1.mod +K 25 +svn:wc:ra_dav:version-url +V 87 +/!svn/ver/23881/branches/1.4/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-struct-1.mod +END +xhtml-text-1.mod +K 25 +svn:wc:ra_dav:version-url +V 85 +/!svn/ver/23881/branches/1.4/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-text-1.mod +END +xhtml-edit-1.mod +K 25 +svn:wc:ra_dav:version-url +V 85 +/!svn/ver/23881/branches/1.4/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-edit-1.mod +END +xhtml-meta-1.mod +K 25 +svn:wc:ra_dav:version-url +V 85 +/!svn/ver/23881/branches/1.4/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-meta-1.mod +END +xhtml-table-1.mod +K 25 +svn:wc:ra_dav:version-url +V 86 +/!svn/ver/23881/branches/1.4/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-table-1.mod +END +xhtml-hypertext-1.mod +K 25 +svn:wc:ra_dav:version-url +V 90 +/!svn/ver/23881/branches/1.4/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-hypertext-1.mod +END +xhtml-link-1.mod +K 25 +svn:wc:ra_dav:version-url +V 85 +/!svn/ver/23881/branches/1.4/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-link-1.mod +END +xhtml-framework-1.mod +K 25 +svn:wc:ra_dav:version-url +V 90 +/!svn/ver/23881/branches/1.4/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-framework-1.mod +END +xhtml-csismap-1.mod +K 25 +svn:wc:ra_dav:version-url +V 88 +/!svn/ver/23881/branches/1.4/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-csismap-1.mod +END +xhtml-param-1.mod +K 25 +svn:wc:ra_dav:version-url +V 86 +/!svn/ver/23881/branches/1.4/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-param-1.mod +END +xhtml-style-1.mod +K 25 +svn:wc:ra_dav:version-url +V 86 +/!svn/ver/23881/branches/1.4/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-style-1.mod +END +xhtml-inlstyle-1.mod +K 25 +svn:wc:ra_dav:version-url +V 89 +/!svn/ver/23881/branches/1.4/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-inlstyle-1.mod +END +xhtml-form-1.mod +K 25 +svn:wc:ra_dav:version-url +V 85 +/!svn/ver/23881/branches/1.4/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-form-1.mod +END +xhtml-legacy-1.mod +K 25 +svn:wc:ra_dav:version-url +V 87 +/!svn/ver/23881/branches/1.4/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-legacy-1.mod +END +xhtml-bdo-1.mod +K 25 +svn:wc:ra_dav:version-url +V 84 +/!svn/ver/23881/branches/1.4/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-bdo-1.mod +END +xhtml-script-1.mod +K 25 +svn:wc:ra_dav:version-url +V 87 +/!svn/ver/23881/branches/1.4/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-script-1.mod +END +xhtml-object-1.mod +K 25 +svn:wc:ra_dav:version-url +V 87 +/!svn/ver/23881/branches/1.4/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-object-1.mod +END diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/entries b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/entries new file mode 100644 index 0000000..ebad6df --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/entries @@ -0,0 +1,776 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/test/w3/TR/xhtml-modularization/DTD +http://svn.symfony-project.com + + + +2009-10-27T13:42:38.759478Z +23380 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +xhtml-pres-1.mod +file + + + + +2012-05-10T18:41:16.649551Z +cf040dfe6836c62349cac778275f3cdf +2009-10-27T13:42:38.759478Z +23380 +Kris.Wallsmith + + + + + + + + + + + + + + + + + + + + + +1337 + +xhtml-base-1.mod +file + + + + +2012-05-10T18:41:16.649551Z +693370d0b9376a6fac7944dbb77ded6f +2009-10-27T13:42:38.759478Z +23380 +Kris.Wallsmith + + + + + + + + + + + + + + + + + + + + + +1731 + +xhtml-list-1.mod +file + + + + +2012-05-10T18:41:16.649551Z +1da38ccbad9fabaec09077f841245e5a +2009-10-27T13:42:38.759478Z +23380 +Kris.Wallsmith + + + + + + + + + + + + + + + + + + + + + +3224 + +xhtml-ssismap-1.mod +file + + + + +2012-05-10T18:41:16.649551Z +0f1e2977d38521fc7f1daea8fa6723d5 +2009-10-27T13:42:38.759478Z +23380 +Kris.Wallsmith + + + + + + + + + + + + + + + + + + + + + +1136 + +xhtml-image-1.mod +file + + + + +2012-05-10T18:41:16.649551Z +63ba34d11845ada1926f3d19a45ed0e8 +2009-10-27T13:42:38.759478Z +23380 +Kris.Wallsmith + + + + + + + + + + + + + + + + + + + + + +1683 + +xhtml-struct-1.mod +file + + + + +2012-05-10T18:41:16.665550Z +e80d4f543c28f099489f89317104fef2 +2009-10-27T13:42:38.759478Z +23380 +Kris.Wallsmith + + + + + + + + + + + + + + + + + + + + + +3910 + +xhtml-text-1.mod +file + + + + +2012-05-10T18:41:16.653552Z +5d2b98cbaa962c1eb13119ba1278a0b8 +2009-10-27T13:42:38.759478Z +23380 +Kris.Wallsmith + + + + + + + + + + + + + + + + + + + + + +1793 + +xhtml-edit-1.mod +file + + + + +2012-05-10T18:41:16.665550Z +49770427c3c62668a1ef54f73962adf5 +2009-10-27T13:42:38.759478Z +23380 +Kris.Wallsmith + + + + + + + + + + + + + + + + + + + + + +1959 + +xhtml-meta-1.mod +file + + + + +2012-05-10T18:41:16.665550Z +856ee2c9e4c2a9f6ff2adfd4add6d09f +2009-10-27T13:42:38.759478Z +23380 +Kris.Wallsmith + + + + + + + + + + + + + + + + + + + + + +1558 + +xhtml-table-1.mod +file + + + + +2012-05-10T18:41:16.665550Z +04efbc7b0afc9b66d0a664bcb520a534 +2009-10-27T13:42:38.759478Z +23380 +Kris.Wallsmith + + + + + + + + + + + + + + + + + + + + + +9502 + +xhtml-hypertext-1.mod +file + + + + +2012-05-10T18:41:16.665550Z +4089286a9e3d511ea49da3baaf679285 +2009-10-27T13:42:38.759478Z +23380 +Kris.Wallsmith + + + + + + + + + + + + + + + + + + + + + +1851 + +xhtml-link-1.mod +file + + + + +2012-05-10T18:41:16.673553Z +36523c9d7b693ba45cb25d2686730d0a +2009-10-27T13:42:38.759478Z +23380 +Kris.Wallsmith + + + + + + + + + + + + + + + + + + + + + +2198 + +xhtml-framework-1.mod +file + + + + +2012-05-10T18:41:16.673553Z +487681cc58c0927e6b5bb9a89c37bd59 +2009-10-27T13:42:38.759478Z +23380 +Kris.Wallsmith + + + + + + + + + + + + + + + + + + + + + +3135 + +xhtml-csismap-1.mod +file + + + + +2012-05-10T18:41:16.673553Z +b60a353b397e936670d6fc0b9dff8934 +2009-10-27T13:42:38.759478Z +23380 +Kris.Wallsmith + + + + + + + + + + + + + + + + + + + + + +3552 + +xhtml-style-1.mod +file + + + + +2012-05-10T18:41:16.673553Z +cc611de6198572492a21f690e504584b +2009-10-27T13:42:38.759478Z +23380 +Kris.Wallsmith + + + + + + + + + + + + + + + + + + + + + +1579 + +xhtml-param-1.mod +file + + + + +2012-05-10T18:41:16.685564Z +0adf06e5624ae2de9aa3256f40670e72 +2009-10-27T13:42:38.759478Z +23380 +Kris.Wallsmith + + + + + + + + + + + + + + + + + + + + + +1615 + +xhtml-inlstyle-1.mod +file + + + + +2012-05-10T18:41:16.685564Z +3e93507535f71404b660778d7a4a24b0 +2009-10-27T13:42:38.759478Z +23380 +Kris.Wallsmith + + + + + + + + + + + + + + + + + + + + + +1140 + +xhtml-form-1.mod +file + + + + +2012-05-10T18:41:16.685564Z +692a9f521984913befae535e50877a5f +2009-10-27T13:42:38.759478Z +23380 +Kris.Wallsmith + + + + + + + + + + + + + + + + + + + + + +8910 + +xhtml-legacy-1.mod +file + + + + +2012-05-10T18:41:16.685564Z +0fb42be735e225f7c58a67b111996aef +2009-10-27T13:42:38.759478Z +23380 +Kris.Wallsmith + + + + + + + + + + + + + + + + + + + + + +11216 + +xhtml-bdo-1.mod +file + + + + +2012-05-10T18:41:16.697666Z +9c5a2f718cd841354da6bea207601eb7 +2009-10-27T13:42:38.759478Z +23380 +Kris.Wallsmith + + + + + + + + + + + + + + + + + + + + + +1552 + +xhtml-script-1.mod +file + + + + +2012-05-10T18:41:16.697666Z +56e9fd9c619f75410ceff960cb24f5f0 +2009-10-27T13:42:38.759478Z +23380 +Kris.Wallsmith + + + + + + + + + + + + + + + + + + + + + +2170 + +xhtml-object-1.mod +file + + + + +2012-05-10T18:41:16.697666Z +6970d0fef282a3e0efb264cdcf4da2a2 +2009-10-27T13:42:38.759478Z +23380 +Kris.Wallsmith + + + + + + + + + + + + + + + + + + + + + +2218 + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-base-1.mod.svn-base b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-base-1.mod.svn-base new file mode 100644 index 0000000..b7a841e --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-base-1.mod.svn-base @@ -0,0 +1,53 @@ + + + + + + + + + + + + +]]> + + + +]]> + + + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-bdo-1.mod.svn-base b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-bdo-1.mod.svn-base new file mode 100644 index 0000000..f5f093f --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-bdo-1.mod.svn-base @@ -0,0 +1,47 @@ + + + + + + + + + + +]]> + + + +]]> + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-csismap-1.mod.svn-base b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-csismap-1.mod.svn-base new file mode 100644 index 0000000..686eee2 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-csismap-1.mod.svn-base @@ -0,0 +1,114 @@ + + + + + + + + + + +]]> + + + + + + +]]> + + + + + + + + + + + + + + + + + + + +]]> + + + +]]> + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-edit-1.mod.svn-base b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-edit-1.mod.svn-base new file mode 100644 index 0000000..d3c6282 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-edit-1.mod.svn-base @@ -0,0 +1,66 @@ + + + + + + + + + + + + +]]> + + + +]]> + + + + + + + +]]> + + + +]]> + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-form-1.mod.svn-base b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-form-1.mod.svn-base new file mode 100644 index 0000000..d568463 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-form-1.mod.svn-base @@ -0,0 +1,291 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + +]]> + + + +]]> + + + + + + + + +]]> + + + +]]> + + + + + + +]]> + + + + + +]]> + + + + + + +]]> + + + +]]> + + + + + + +]]> + + + +]]> + + + + + + +]]> + + + +]]> + + + + + + +]]> + + + +]]> + + + + + + + + +]]> + + + +]]> + + + + + + +]]> + + + +]]> + + + + + + +]]> + + + +]]> + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-framework-1.mod.svn-base b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-framework-1.mod.svn-base new file mode 100644 index 0000000..c1233cd --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-framework-1.mod.svn-base @@ -0,0 +1,97 @@ + + + + + + + + +%xhtml-arch.mod;]]> + + + +%xhtml-notations.mod;]]> + + + +%xhtml-datatypes.mod;]]> + + + +%xhtml-xlink.mod; + + + +%xhtml-qname.mod;]]> + + + +%xhtml-events.mod;]]> + + + +%xhtml-attribs.mod;]]> + + + +%xhtml-model.redecl; + + + +%xhtml-model.mod;]]> + + + +%xhtml-charent.mod;]]> + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-hypertext-1.mod.svn-base b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-hypertext-1.mod.svn-base new file mode 100644 index 0000000..cb4912c --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-hypertext-1.mod.svn-base @@ -0,0 +1,54 @@ + + + + + + + + + + + + +]]> + + + +]]> + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-image-1.mod.svn-base b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-image-1.mod.svn-base new file mode 100644 index 0000000..fb5ac06 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-image-1.mod.svn-base @@ -0,0 +1,50 @@ + + + + + + + + + + + + +]]> + + + +]]> + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-inlstyle-1.mod.svn-base b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-inlstyle-1.mod.svn-base new file mode 100644 index 0000000..85a2ca4 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-inlstyle-1.mod.svn-base @@ -0,0 +1,34 @@ + + + + + + + + + + + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-legacy-1.mod.svn-base b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-legacy-1.mod.svn-base new file mode 100644 index 0000000..ebf11f7 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-legacy-1.mod.svn-base @@ -0,0 +1,400 @@ + + + + + + + + + + + + + + + + +]]> + + + +]]> + + + + + + + +]]> + + + +]]> + + + + + + + +]]> + + + +]]> + + + + + + + +]]> + + + +]]> + + + + + + + +]]> + + + +]]> + + + + + + + +]]> + + + +]]> + + + + + + + + +]]> + + + +]]> + + + + + + + + +]]> + + + +]]> + + + + + + + +]]> + + + +]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +%xhtml-frames.mod;]]> + + + + + +%xhtml-iframe.mod;]]> + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-link-1.mod.svn-base b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-link-1.mod.svn-base new file mode 100644 index 0000000..200d9e6 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-link-1.mod.svn-base @@ -0,0 +1,59 @@ + + + + + + + + + + + + +]]> + + + +]]> + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-list-1.mod.svn-base b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-list-1.mod.svn-base new file mode 100644 index 0000000..74889a8 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-list-1.mod.svn-base @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + +]]> + + + +]]> + + + + + + +]]> + + + +]]> + + + + + + +]]> + + + +]]> + + + + + + +]]> + + + +]]> + + + + + + +]]> + + + +]]> + + + + + + +]]> + + + +]]> + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-meta-1.mod.svn-base b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-meta-1.mod.svn-base new file mode 100644 index 0000000..2e09e28 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-meta-1.mod.svn-base @@ -0,0 +1,47 @@ + + + + + + + + + + + + +]]> + + + +]]> + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-object-1.mod.svn-base b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-object-1.mod.svn-base new file mode 100644 index 0000000..9a958b7 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-object-1.mod.svn-base @@ -0,0 +1,60 @@ + + + + + + + + + + + + +]]> + + + +]]> + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-param-1.mod.svn-base b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-param-1.mod.svn-base new file mode 100644 index 0000000..2d92e55 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-param-1.mod.svn-base @@ -0,0 +1,48 @@ + + + + + + + + + + + + +]]> + + + +]]> + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-pres-1.mod.svn-base b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-pres-1.mod.svn-base new file mode 100644 index 0000000..df0a9eb --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-pres-1.mod.svn-base @@ -0,0 +1,38 @@ + + + + + + + + +%xhtml-inlpres.mod;]]> + + + +%xhtml-blkpres.mod;]]> + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-script-1.mod.svn-base b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-script-1.mod.svn-base new file mode 100644 index 0000000..f0c47f6 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-script-1.mod.svn-base @@ -0,0 +1,67 @@ + + + + + + + + + + + + +]]> + + + +]]> + + + + + + + +]]> + + + +]]> + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-ssismap-1.mod.svn-base b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-ssismap-1.mod.svn-base new file mode 100644 index 0000000..ebc4468 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-ssismap-1.mod.svn-base @@ -0,0 +1,32 @@ + + + + + + + + + + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-struct-1.mod.svn-base b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-struct-1.mod.svn-base new file mode 100644 index 0000000..85fa308 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-struct-1.mod.svn-base @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + +]]> + + + +]]> + + + + + + + +]]> + + + + + + +]]> + + + + + + + +]]> + + + +]]> + + + + + + + +]]> + + + +]]> + + + + + + + + +]]> + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-style-1.mod.svn-base b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-style-1.mod.svn-base new file mode 100644 index 0000000..f9097f6 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-style-1.mod.svn-base @@ -0,0 +1,48 @@ + + + + + + + + + + + + +]]> + + + +]]> + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-table-1.mod.svn-base b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-table-1.mod.svn-base new file mode 100644 index 0000000..4a59c35 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-table-1.mod.svn-base @@ -0,0 +1,333 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]]> + + + +]]> + + + + + + +]]> + + + +]]> + + + + + + + + +]]> + + + +]]> + + + + + + + + +]]> + + + +]]> + + + + + + + + +]]> + + + +]]> + + + + + + + + +]]> + + + +]]> + + + + + + + + +]]> + + + +]]> + + + + + + +]]> + + + +]]> + + + + + + + + +]]> + + + +]]> + + + + + + +]]> + + + +]]> + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-text-1.mod.svn-base b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-text-1.mod.svn-base new file mode 100644 index 0000000..a5ddfce --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/.svn/text-base/xhtml-text-1.mod.svn-base @@ -0,0 +1,52 @@ + + + + + + + + +%xhtml-inlstruct.mod;]]> + + + +%xhtml-inlphras.mod;]]> + + + +%xhtml-blkstruct.mod;]]> + + + +%xhtml-blkphras.mod;]]> + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-base-1.mod b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-base-1.mod new file mode 100644 index 0000000..b7a841e --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-base-1.mod @@ -0,0 +1,53 @@ + + + + + + + + + + + + +]]> + + + +]]> + + + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-bdo-1.mod b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-bdo-1.mod new file mode 100644 index 0000000..f5f093f --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-bdo-1.mod @@ -0,0 +1,47 @@ + + + + + + + + + + +]]> + + + +]]> + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-csismap-1.mod b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-csismap-1.mod new file mode 100644 index 0000000..686eee2 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-csismap-1.mod @@ -0,0 +1,114 @@ + + + + + + + + + + +]]> + + + + + + +]]> + + + + + + + + + + + + + + + + + + + +]]> + + + +]]> + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-edit-1.mod b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-edit-1.mod new file mode 100644 index 0000000..d3c6282 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-edit-1.mod @@ -0,0 +1,66 @@ + + + + + + + + + + + + +]]> + + + +]]> + + + + + + + +]]> + + + +]]> + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-form-1.mod b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-form-1.mod new file mode 100644 index 0000000..d568463 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-form-1.mod @@ -0,0 +1,291 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + +]]> + + + +]]> + + + + + + + + +]]> + + + +]]> + + + + + + +]]> + + + + + +]]> + + + + + + +]]> + + + +]]> + + + + + + +]]> + + + +]]> + + + + + + +]]> + + + +]]> + + + + + + +]]> + + + +]]> + + + + + + + + +]]> + + + +]]> + + + + + + +]]> + + + +]]> + + + + + + +]]> + + + +]]> + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-framework-1.mod b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-framework-1.mod new file mode 100644 index 0000000..c1233cd --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-framework-1.mod @@ -0,0 +1,97 @@ + + + + + + + + +%xhtml-arch.mod;]]> + + + +%xhtml-notations.mod;]]> + + + +%xhtml-datatypes.mod;]]> + + + +%xhtml-xlink.mod; + + + +%xhtml-qname.mod;]]> + + + +%xhtml-events.mod;]]> + + + +%xhtml-attribs.mod;]]> + + + +%xhtml-model.redecl; + + + +%xhtml-model.mod;]]> + + + +%xhtml-charent.mod;]]> + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-hypertext-1.mod b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-hypertext-1.mod new file mode 100644 index 0000000..cb4912c --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-hypertext-1.mod @@ -0,0 +1,54 @@ + + + + + + + + + + + + +]]> + + + +]]> + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-image-1.mod b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-image-1.mod new file mode 100644 index 0000000..fb5ac06 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-image-1.mod @@ -0,0 +1,50 @@ + + + + + + + + + + + + +]]> + + + +]]> + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-inlstyle-1.mod b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-inlstyle-1.mod new file mode 100644 index 0000000..85a2ca4 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-inlstyle-1.mod @@ -0,0 +1,34 @@ + + + + + + + + + + + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-legacy-1.mod b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-legacy-1.mod new file mode 100644 index 0000000..ebf11f7 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-legacy-1.mod @@ -0,0 +1,400 @@ + + + + + + + + + + + + + + + + +]]> + + + +]]> + + + + + + + +]]> + + + +]]> + + + + + + + +]]> + + + +]]> + + + + + + + +]]> + + + +]]> + + + + + + + +]]> + + + +]]> + + + + + + + +]]> + + + +]]> + + + + + + + + +]]> + + + +]]> + + + + + + + + +]]> + + + +]]> + + + + + + + +]]> + + + +]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +%xhtml-frames.mod;]]> + + + + + +%xhtml-iframe.mod;]]> + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-link-1.mod b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-link-1.mod new file mode 100644 index 0000000..200d9e6 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-link-1.mod @@ -0,0 +1,59 @@ + + + + + + + + + + + + +]]> + + + +]]> + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-list-1.mod b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-list-1.mod new file mode 100644 index 0000000..74889a8 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-list-1.mod @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + +]]> + + + +]]> + + + + + + +]]> + + + +]]> + + + + + + +]]> + + + +]]> + + + + + + +]]> + + + +]]> + + + + + + +]]> + + + +]]> + + + + + + +]]> + + + +]]> + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-meta-1.mod b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-meta-1.mod new file mode 100644 index 0000000..2e09e28 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-meta-1.mod @@ -0,0 +1,47 @@ + + + + + + + + + + + + +]]> + + + +]]> + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-object-1.mod b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-object-1.mod new file mode 100644 index 0000000..9a958b7 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-object-1.mod @@ -0,0 +1,60 @@ + + + + + + + + + + + + +]]> + + + +]]> + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-param-1.mod b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-param-1.mod new file mode 100644 index 0000000..2d92e55 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-param-1.mod @@ -0,0 +1,48 @@ + + + + + + + + + + + + +]]> + + + +]]> + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-pres-1.mod b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-pres-1.mod new file mode 100644 index 0000000..df0a9eb --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-pres-1.mod @@ -0,0 +1,38 @@ + + + + + + + + +%xhtml-inlpres.mod;]]> + + + +%xhtml-blkpres.mod;]]> + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-script-1.mod b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-script-1.mod new file mode 100644 index 0000000..f0c47f6 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-script-1.mod @@ -0,0 +1,67 @@ + + + + + + + + + + + + +]]> + + + +]]> + + + + + + + +]]> + + + +]]> + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-ssismap-1.mod b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-ssismap-1.mod new file mode 100644 index 0000000..ebc4468 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-ssismap-1.mod @@ -0,0 +1,32 @@ + + + + + + + + + + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-struct-1.mod b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-struct-1.mod new file mode 100644 index 0000000..85fa308 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-struct-1.mod @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + +]]> + + + +]]> + + + + + + + +]]> + + + + + + +]]> + + + + + + + +]]> + + + +]]> + + + + + + + +]]> + + + +]]> + + + + + + + + +]]> + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-style-1.mod b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-style-1.mod new file mode 100644 index 0000000..f9097f6 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-style-1.mod @@ -0,0 +1,48 @@ + + + + + + + + + + + + +]]> + + + +]]> + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-table-1.mod b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-table-1.mod new file mode 100644 index 0000000..4a59c35 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-table-1.mod @@ -0,0 +1,333 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]]> + + + +]]> + + + + + + +]]> + + + +]]> + + + + + + + + +]]> + + + +]]> + + + + + + + + +]]> + + + +]]> + + + + + + + + +]]> + + + +]]> + + + + + + + + +]]> + + + +]]> + + + + + + + + +]]> + + + +]]> + + + + + + +]]> + + + +]]> + + + + + + + + +]]> + + + +]]> + + + + + + +]]> + + + +]]> + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-text-1.mod b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-text-1.mod new file mode 100644 index 0000000..a5ddfce --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml-modularization/DTD/xhtml-text-1.mod @@ -0,0 +1,52 @@ + + + + + + + + +%xhtml-inlstruct.mod;]]> + + + +%xhtml-inlphras.mod;]]> + + + +%xhtml-blkstruct.mod;]]> + + + +%xhtml-blkphras.mod;]]> + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml1/.svn/all-wcprops b/lib/vendor/symfony/lib/test/w3/TR/xhtml1/.svn/all-wcprops new file mode 100644 index 0000000..3652fe7 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml1/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 50 +/!svn/ver/23881/branches/1.4/lib/test/w3/TR/xhtml1 +END diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml1/.svn/entries b/lib/vendor/symfony/lib/test/w3/TR/xhtml1/.svn/entries new file mode 100644 index 0000000..1f16ff9 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml1/.svn/entries @@ -0,0 +1,31 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/test/w3/TR/xhtml1 +http://svn.symfony-project.com + + + +2009-10-27T13:42:38.759478Z +23380 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +DTD +dir + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/.svn/all-wcprops b/lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/.svn/all-wcprops new file mode 100644 index 0000000..33e99d5 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/.svn/all-wcprops @@ -0,0 +1,41 @@ +K 25 +svn:wc:ra_dav:version-url +V 54 +/!svn/ver/23881/branches/1.4/lib/test/w3/TR/xhtml1/DTD +END +xhtml-special.ent +K 25 +svn:wc:ra_dav:version-url +V 72 +/!svn/ver/23881/branches/1.4/lib/test/w3/TR/xhtml1/DTD/xhtml-special.ent +END +xhtml-lat1.ent +K 25 +svn:wc:ra_dav:version-url +V 69 +/!svn/ver/23881/branches/1.4/lib/test/w3/TR/xhtml1/DTD/xhtml-lat1.ent +END +xhtml-symbol.ent +K 25 +svn:wc:ra_dav:version-url +V 71 +/!svn/ver/23881/branches/1.4/lib/test/w3/TR/xhtml1/DTD/xhtml-symbol.ent +END +xhtml1-frameset.dtd +K 25 +svn:wc:ra_dav:version-url +V 74 +/!svn/ver/23881/branches/1.4/lib/test/w3/TR/xhtml1/DTD/xhtml1-frameset.dtd +END +xhtml1-transitional.dtd +K 25 +svn:wc:ra_dav:version-url +V 78 +/!svn/ver/23881/branches/1.4/lib/test/w3/TR/xhtml1/DTD/xhtml1-transitional.dtd +END +xhtml1-strict.dtd +K 25 +svn:wc:ra_dav:version-url +V 72 +/!svn/ver/23881/branches/1.4/lib/test/w3/TR/xhtml1/DTD/xhtml1-strict.dtd +END diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/.svn/entries b/lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/.svn/entries new file mode 100644 index 0000000..36c429f --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/.svn/entries @@ -0,0 +1,232 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/test/w3/TR/xhtml1/DTD +http://svn.symfony-project.com + + + +2009-10-27T13:42:38.759478Z +23380 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +xhtml-special.ent +file + + + + +2012-05-10T18:41:16.785552Z +dc34235b0742b58b7a710cc63459c0f7 +2009-10-27T13:42:38.759478Z +23380 +Kris.Wallsmith + + + + + + + + + + + + + + + + + + + + + +4131 + +xhtml-lat1.ent +file + + + + +2012-05-10T18:41:16.789552Z +9d841f57d8a28eb32c04db0e36a078dd +2009-10-27T13:42:38.759478Z +23380 +Kris.Wallsmith + + + + + + + + + + + + + + + + + + + + + +11775 + +xhtml-symbol.ent +file + + + + +2012-05-10T18:41:16.793545Z +17c862dda86c53953f18452bdef54e40 +2009-10-27T13:42:38.759478Z +23380 +Kris.Wallsmith + + + + + + + + + + + + + + + + + + + + + +13848 + +xhtml1-frameset.dtd +file + + + + +2012-05-10T18:41:16.793545Z +16ebdb8fd94cb8a0b0a4cbb18d95e770 +2009-10-27T13:42:38.759478Z +23380 +Kris.Wallsmith + + + + + + + + + + + + + + + + + + + + + +32949 + +xhtml1-transitional.dtd +file + + + + +2012-05-10T18:41:16.793545Z +52118e4fe2efb0930ce211247ec237d0 +2009-10-27T13:42:38.759478Z +23380 +Kris.Wallsmith + + + + + + + + + + + + + + + + + + + + + +32111 + +xhtml1-strict.dtd +file + + + + +2012-05-10T18:41:16.929547Z +0b138a73c539ad502a48ae9e8613c48a +2009-10-27T13:42:38.759478Z +23380 +Kris.Wallsmith + + + + + + + + + + + + + + + + + + + + + +25472 + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/.svn/text-base/xhtml-lat1.ent.svn-base b/lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/.svn/text-base/xhtml-lat1.ent.svn-base new file mode 100644 index 0000000..ffee223 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/.svn/text-base/xhtml-lat1.ent.svn-base @@ -0,0 +1,196 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/.svn/text-base/xhtml-special.ent.svn-base b/lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/.svn/text-base/xhtml-special.ent.svn-base new file mode 100644 index 0000000..ca358b2 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/.svn/text-base/xhtml-special.ent.svn-base @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/.svn/text-base/xhtml-symbol.ent.svn-base b/lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/.svn/text-base/xhtml-symbol.ent.svn-base new file mode 100644 index 0000000..63c2abf --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/.svn/text-base/xhtml-symbol.ent.svn-base @@ -0,0 +1,237 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/.svn/text-base/xhtml1-frameset.dtd.svn-base b/lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/.svn/text-base/xhtml1-frameset.dtd.svn-base new file mode 100644 index 0000000..d128f2e --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/.svn/text-base/xhtml1-frameset.dtd.svn-base @@ -0,0 +1,1235 @@ + + + + + +%HTMLlat1; + + +%HTMLsymbol; + + +%HTMLspecial; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/.svn/text-base/xhtml1-strict.dtd.svn-base b/lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/.svn/text-base/xhtml1-strict.dtd.svn-base new file mode 100644 index 0000000..2927b9e --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/.svn/text-base/xhtml1-strict.dtd.svn-base @@ -0,0 +1,978 @@ + + + + + +%HTMLlat1; + + +%HTMLsymbol; + + +%HTMLspecial; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/.svn/text-base/xhtml1-transitional.dtd.svn-base b/lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/.svn/text-base/xhtml1-transitional.dtd.svn-base new file mode 100644 index 0000000..628f27a --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/.svn/text-base/xhtml1-transitional.dtd.svn-base @@ -0,0 +1,1201 @@ + + + + + +%HTMLlat1; + + +%HTMLsymbol; + + +%HTMLspecial; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/xhtml-lat1.ent b/lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/xhtml-lat1.ent new file mode 100644 index 0000000..ffee223 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/xhtml-lat1.ent @@ -0,0 +1,196 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/xhtml-special.ent b/lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/xhtml-special.ent new file mode 100644 index 0000000..ca358b2 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/xhtml-special.ent @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/xhtml-symbol.ent b/lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/xhtml-symbol.ent new file mode 100644 index 0000000..63c2abf --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/xhtml-symbol.ent @@ -0,0 +1,237 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/xhtml1-frameset.dtd b/lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/xhtml1-frameset.dtd new file mode 100644 index 0000000..d128f2e --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/xhtml1-frameset.dtd @@ -0,0 +1,1235 @@ + + + + + +%HTMLlat1; + + +%HTMLsymbol; + + +%HTMLspecial; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/xhtml1-strict.dtd b/lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/xhtml1-strict.dtd new file mode 100644 index 0000000..2927b9e --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/xhtml1-strict.dtd @@ -0,0 +1,978 @@ + + + + + +%HTMLlat1; + + +%HTMLsymbol; + + +%HTMLspecial; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/xhtml1-transitional.dtd b/lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/xhtml1-transitional.dtd new file mode 100644 index 0000000..628f27a --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml1/DTD/xhtml1-transitional.dtd @@ -0,0 +1,1201 @@ + + + + + +%HTMLlat1; + + +%HTMLsymbol; + + +%HTMLspecial; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml11/.svn/all-wcprops b/lib/vendor/symfony/lib/test/w3/TR/xhtml11/.svn/all-wcprops new file mode 100644 index 0000000..52b5912 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml11/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 51 +/!svn/ver/23881/branches/1.4/lib/test/w3/TR/xhtml11 +END diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml11/.svn/entries b/lib/vendor/symfony/lib/test/w3/TR/xhtml11/.svn/entries new file mode 100644 index 0000000..6fff666 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml11/.svn/entries @@ -0,0 +1,31 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/test/w3/TR/xhtml11 +http://svn.symfony-project.com + + + +2009-11-02T13:52:53.653912Z +23520 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +DTD +dir + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml11/DTD/.svn/all-wcprops b/lib/vendor/symfony/lib/test/w3/TR/xhtml11/DTD/.svn/all-wcprops new file mode 100644 index 0000000..4f089d9 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml11/DTD/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 55 +/!svn/ver/23881/branches/1.4/lib/test/w3/TR/xhtml11/DTD +END +xhtml11.dtd +K 25 +svn:wc:ra_dav:version-url +V 67 +/!svn/ver/23881/branches/1.4/lib/test/w3/TR/xhtml11/DTD/xhtml11.dtd +END diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml11/DTD/.svn/entries b/lib/vendor/symfony/lib/test/w3/TR/xhtml11/DTD/.svn/entries new file mode 100644 index 0000000..42e26ab --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml11/DTD/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/test/w3/TR/xhtml11/DTD +http://svn.symfony-project.com + + + +2009-11-02T13:52:53.653912Z +23520 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +xhtml11.dtd +file + + + + +2012-05-10T18:41:16.941553Z +582d59df58b9b8ddd9c9a5c8c228cae4 +2009-11-02T13:52:53.653912Z +23520 +Kris.Wallsmith + + + + + + + + + + + + + + + + + + + + + +11237 + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml11/DTD/.svn/text-base/xhtml11.dtd.svn-base b/lib/vendor/symfony/lib/test/w3/TR/xhtml11/DTD/.svn/text-base/xhtml11.dtd.svn-base new file mode 100644 index 0000000..76d9121 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml11/DTD/.svn/text-base/xhtml11.dtd.svn-base @@ -0,0 +1,294 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]]> + + + + + + +%xhtml-inlstyle.mod;]]> + + + + + + + +%xhtml-framework.mod;]]> + + + + +]]> + + + + +%xhtml-text.mod;]]> + + + + +%xhtml-hypertext.mod;]]> + + + + +%xhtml-list.mod;]]> + + + + + + +%xhtml-edit.mod;]]> + + + + +%xhtml-bdo.mod;]]> + + + + + + +%xhtml-ruby.mod;]]> + + + + +%xhtml-pres.mod;]]> + + + + +%xhtml-link.mod;]]> + + + + +%xhtml-meta.mod;]]> + + + + +%xhtml-base.mod;]]> + + + + +%xhtml-script.mod;]]> + + + + +%xhtml-style.mod;]]> + + + + +%xhtml-image.mod;]]> + + + + +%xhtml-csismap.mod;]]> + + + + +%xhtml-ssismap.mod;]]> + + + + +%xhtml-param.mod;]]> + + + + +%xhtml-object.mod;]]> + + + + +%xhtml-table.mod;]]> + + + + +%xhtml-form.mod;]]> + + + + +%xhtml-legacy.mod;]]> + + + + +%xhtml-struct.mod;]]> + + + diff --git a/lib/vendor/symfony/lib/test/w3/TR/xhtml11/DTD/xhtml11.dtd b/lib/vendor/symfony/lib/test/w3/TR/xhtml11/DTD/xhtml11.dtd new file mode 100644 index 0000000..76d9121 --- /dev/null +++ b/lib/vendor/symfony/lib/test/w3/TR/xhtml11/DTD/xhtml11.dtd @@ -0,0 +1,294 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]]> + + + + + + +%xhtml-inlstyle.mod;]]> + + + + + + + +%xhtml-framework.mod;]]> + + + + +]]> + + + + +%xhtml-text.mod;]]> + + + + +%xhtml-hypertext.mod;]]> + + + + +%xhtml-list.mod;]]> + + + + + + +%xhtml-edit.mod;]]> + + + + +%xhtml-bdo.mod;]]> + + + + + + +%xhtml-ruby.mod;]]> + + + + +%xhtml-pres.mod;]]> + + + + +%xhtml-link.mod;]]> + + + + +%xhtml-meta.mod;]]> + + + + +%xhtml-base.mod;]]> + + + + +%xhtml-script.mod;]]> + + + + +%xhtml-style.mod;]]> + + + + +%xhtml-image.mod;]]> + + + + +%xhtml-csismap.mod;]]> + + + + +%xhtml-ssismap.mod;]]> + + + + +%xhtml-param.mod;]]> + + + + +%xhtml-object.mod;]]> + + + + +%xhtml-table.mod;]]> + + + + +%xhtml-form.mod;]]> + + + + +%xhtml-legacy.mod;]]> + + + + +%xhtml-struct.mod;]]> + + + diff --git a/lib/vendor/symfony/lib/user/.svn/all-wcprops b/lib/vendor/symfony/lib/user/.svn/all-wcprops new file mode 100644 index 0000000..d9efc50 --- /dev/null +++ b/lib/vendor/symfony/lib/user/.svn/all-wcprops @@ -0,0 +1,23 @@ +K 25 +svn:wc:ra_dav:version-url +V 37 +/!svn/ver/29528/branches/1.4/lib/user +END +sfUser.class.php +K 25 +svn:wc:ra_dav:version-url +V 54 +/!svn/ver/23881/branches/1.4/lib/user/sfUser.class.php +END +sfSecurityUser.class.php +K 25 +svn:wc:ra_dav:version-url +V 62 +/!svn/ver/23881/branches/1.4/lib/user/sfSecurityUser.class.php +END +sfBasicSecurityUser.class.php +K 25 +svn:wc:ra_dav:version-url +V 67 +/!svn/ver/29528/branches/1.4/lib/user/sfBasicSecurityUser.class.php +END diff --git a/lib/vendor/symfony/lib/user/.svn/entries b/lib/vendor/symfony/lib/user/.svn/entries new file mode 100644 index 0000000..62d8d6f --- /dev/null +++ b/lib/vendor/symfony/lib/user/.svn/entries @@ -0,0 +1,130 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/user +http://svn.symfony-project.com + + + +2010-05-19T13:12:27.670358Z +29528 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +sfUser.class.php +file + + + + +2012-05-10T18:41:54.057550Z +c474e39b06797cf6f539613077f70208 +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +9681 + +sfSecurityUser.class.php +file + + + + +2012-05-10T18:41:54.057550Z +1b12c9b6de4c99739fe04a112b961db4 +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +1730 + +sfBasicSecurityUser.class.php +file + + + + +2012-05-10T18:41:54.057550Z +f924b04756617f8aad8570bc9d8db185 +2010-05-19T13:12:27.670358Z +29528 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +7484 + diff --git a/lib/vendor/symfony/lib/user/.svn/prop-base/sfBasicSecurityUser.class.php.svn-base b/lib/vendor/symfony/lib/user/.svn/prop-base/sfBasicSecurityUser.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/user/.svn/prop-base/sfBasicSecurityUser.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/user/.svn/prop-base/sfSecurityUser.class.php.svn-base b/lib/vendor/symfony/lib/user/.svn/prop-base/sfSecurityUser.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/user/.svn/prop-base/sfSecurityUser.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/user/.svn/prop-base/sfUser.class.php.svn-base b/lib/vendor/symfony/lib/user/.svn/prop-base/sfUser.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/user/.svn/prop-base/sfUser.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/user/.svn/text-base/sfBasicSecurityUser.class.php.svn-base b/lib/vendor/symfony/lib/user/.svn/text-base/sfBasicSecurityUser.class.php.svn-base new file mode 100644 index 0000000..ef90447 --- /dev/null +++ b/lib/vendor/symfony/lib/user/.svn/text-base/sfBasicSecurityUser.class.php.svn-base @@ -0,0 +1,300 @@ + + * (c) 2004-2006 Sean Kerr + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfBasicSecurityUser will handle any type of data as a credential. + * + * @package symfony + * @subpackage user + * @author Fabien Potencier + * @author Sean Kerr + * @version SVN: $Id$ + */ +class sfBasicSecurityUser extends sfUser implements sfSecurityUser +{ + const LAST_REQUEST_NAMESPACE = 'symfony/user/sfUser/lastRequest'; + const AUTH_NAMESPACE = 'symfony/user/sfUser/authenticated'; + const CREDENTIAL_NAMESPACE = 'symfony/user/sfUser/credentials'; + + protected $lastRequest = null; + + protected $credentials = null; + protected $authenticated = null; + + protected $timedout = false; + + /** + * Clears all credentials. + * + */ + public function clearCredentials() + { + $this->credentials = array(); + } + + /** + * Returns the current user's credentials. + * + * @return array + */ + public function getCredentials() + { + return $this->credentials; + } + + /** + * Removes a credential. + * + * @param mixed $credential credential + */ + public function removeCredential($credential) + { + if ($this->hasCredential($credential)) + { + foreach ($this->credentials as $key => $value) + { + if ($credential == $value) + { + if ($this->options['logging']) + { + $this->dispatcher->notify(new sfEvent($this, 'application.log', array(sprintf('Remove credential "%s"', $credential)))); + } + + unset($this->credentials[$key]); + + $this->storage->regenerate(false); + + return; + } + } + } + } + + /** + * Adds a credential. + * + * @param mixed $credential + */ + public function addCredential($credential) + { + $this->addCredentials(func_get_args()); + } + + /** + * Adds several credential at once. + * + * @param mixed array or list of credentials + */ + public function addCredentials() + { + if (func_num_args() == 0) return; + + // Add all credentials + $credentials = (is_array(func_get_arg(0))) ? func_get_arg(0) : func_get_args(); + + if ($this->options['logging']) + { + $this->dispatcher->notify(new sfEvent($this, 'application.log', array(sprintf('Add credential(s) "%s"', implode(', ', $credentials))))); + } + + $added = false; + foreach ($credentials as $aCredential) + { + if (!in_array($aCredential, $this->credentials)) + { + $added = true; + $this->credentials[] = $aCredential; + } + } + + if ($added) + { + $this->storage->regenerate(false); + } + } + + /** + * Returns true if user has credential. + * + * @param mixed $credentials + * @param bool $useAnd specify the mode, either AND or OR + * @return bool + * + * @author Olivier Verdier + */ + public function hasCredential($credentials, $useAnd = true) + { + if (null === $this->credentials) + { + return false; + } + + if (!is_array($credentials)) + { + return in_array($credentials, $this->credentials); + } + + // now we assume that $credentials is an array + $test = false; + + foreach ($credentials as $credential) + { + // recursively check the credential with a switched AND/OR mode + $test = $this->hasCredential($credential, $useAnd ? false : true); + + if ($useAnd) + { + $test = $test ? false : true; + } + + if ($test) // either passed one in OR mode or failed one in AND mode + { + break; // the matter is settled + } + } + + if ($useAnd) // in AND mode we succeed if $test is false + { + $test = $test ? false : true; + } + + return $test; + } + + /** + * Returns true if user is authenticated. + * + * @return boolean + */ + public function isAuthenticated() + { + return $this->authenticated; + } + + /** + * Sets authentication for user. + * + * @param bool $authenticated + */ + public function setAuthenticated($authenticated) + { + if ($this->options['logging']) + { + $this->dispatcher->notify(new sfEvent($this, 'application.log', array(sprintf('User is %sauthenticated', $authenticated === true ? '' : 'not ')))); + } + + if ((bool) $authenticated !== $this->authenticated) + { + if ($authenticated === true) + { + $this->authenticated = true; + } + else + { + $this->authenticated = false; + $this->clearCredentials(); + } + + $this->dispatcher->notify(new sfEvent($this, 'user.change_authentication', array('authenticated' => $this->authenticated))); + + $this->storage->regenerate(false); + } + } + + public function setTimedOut() + { + $this->timedout = true; + } + + public function isTimedOut() + { + return $this->timedout; + } + + /** + * Returns the timestamp of the last user request. + * + * @return int + */ + public function getLastRequestTime() + { + return $this->lastRequest; + } + + /** + * Available options: + * + * * timeout: Timeout to automatically log out the user in seconds (1800 by default) + * Set to false to disable + * + * @param sfEventDispatcher $dispatcher An sfEventDispatcher instance. + * @param sfStorage $storage An sfStorage instance. + * @param array $options An associative array of options. + * + * @see sfUser + */ + public function initialize(sfEventDispatcher $dispatcher, sfStorage $storage, $options = array()) + { + // initialize parent + parent::initialize($dispatcher, $storage, $options); + + if (!array_key_exists('timeout', $this->options)) + { + $this->options['timeout'] = 1800; + } + + // force the max lifetime for session garbage collector to be greater than timeout + if (ini_get('session.gc_maxlifetime') < $this->options['timeout']) + { + ini_set('session.gc_maxlifetime', $this->options['timeout']); + } + + // read data from storage + $this->authenticated = $storage->read(self::AUTH_NAMESPACE); + $this->credentials = $storage->read(self::CREDENTIAL_NAMESPACE); + $this->lastRequest = $storage->read(self::LAST_REQUEST_NAMESPACE); + + if (null === $this->authenticated) + { + $this->authenticated = false; + $this->credentials = array(); + } + else + { + // Automatic logout logged in user if no request within timeout parameter seconds + $timeout = $this->options['timeout']; + if (false !== $timeout && null !== $this->lastRequest && time() - $this->lastRequest >= $timeout) + { + if ($this->options['logging']) + { + $this->dispatcher->notify(new sfEvent($this, 'application.log', array('Automatic user logout due to timeout'))); + } + + $this->setTimedOut(); + $this->setAuthenticated(false); + } + } + + $this->lastRequest = time(); + } + + public function shutdown() + { + // write the last request time to the storage + $this->storage->write(self::LAST_REQUEST_NAMESPACE, $this->lastRequest); + + $this->storage->write(self::AUTH_NAMESPACE, $this->authenticated); + $this->storage->write(self::CREDENTIAL_NAMESPACE, $this->credentials); + + // call the parent shutdown method + parent::shutdown(); + } +} diff --git a/lib/vendor/symfony/lib/user/.svn/text-base/sfSecurityUser.class.php.svn-base b/lib/vendor/symfony/lib/user/.svn/text-base/sfSecurityUser.class.php.svn-base new file mode 100644 index 0000000..87b2909 --- /dev/null +++ b/lib/vendor/symfony/lib/user/.svn/text-base/sfSecurityUser.class.php.svn-base @@ -0,0 +1,64 @@ + + * (c) 2004-2006 Sean Kerr + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfSecurityUser interface provides advanced security manipulation methods. + * + * @package symfony + * @subpackage user + * @author Fabien Potencier + * @author Sean Kerr + * @version SVN: $Id$ + */ +interface sfSecurityUser +{ + /** + * Add a credential to this user. + * + * @param mixed $credential Credential data. + */ + public function addCredential($credential); + + /** + * Clear all credentials associated with this user. + */ + public function clearCredentials(); + + /** + * Indicates whether or not this user has a credential. + * + * @param mixed $credential Credential data. + * + * @return bool true, if this user has the credential, otherwise false. + */ + public function hasCredential($credential); + + /** + * Indicates whether or not this user is authenticated. + * + * @return bool true, if this user is authenticated, otherwise false. + */ + public function isAuthenticated(); + + /** + * Remove a credential from this user. + * + * @param mixed $credential Credential data. + */ + public function removeCredential($credential); + + /** + * Set the authenticated status of this user. + * + * @param bool $authenticated A flag indicating the authenticated status of this user. + */ + public function setAuthenticated($authenticated); +} diff --git a/lib/vendor/symfony/lib/user/.svn/text-base/sfUser.class.php.svn-base b/lib/vendor/symfony/lib/user/.svn/text-base/sfUser.class.php.svn-base new file mode 100644 index 0000000..0168fca --- /dev/null +++ b/lib/vendor/symfony/lib/user/.svn/text-base/sfUser.class.php.svn-base @@ -0,0 +1,335 @@ + + * (c) 2004-2006 Sean Kerr + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * + * sfUser wraps a client session and provides accessor methods for user + * attributes. It also makes storing and retrieving multiple page form data + * rather easy by allowing user attributes to be stored in namespaces, which + * help organize data. + * + * @package symfony + * @subpackage user + * @author Fabien Potencier + * @author Sean Kerr + * @version SVN: $Id$ + */ +class sfUser implements ArrayAccess +{ + /** + * The namespace under which attributes will be stored. + */ + const ATTRIBUTE_NAMESPACE = 'symfony/user/sfUser/attributes'; + + const CULTURE_NAMESPACE = 'symfony/user/sfUser/culture'; + + protected + $options = array(), + $attributeHolder = null, + $culture = null, + $storage = null, + $dispatcher = null; + + /** + * Class constructor. + * + * @see initialize() + */ + public function __construct(sfEventDispatcher $dispatcher, sfStorage $storage, $options = array()) + { + $this->initialize($dispatcher, $storage, $options); + + if ($this->options['auto_shutdown']) + { + register_shutdown_function(array($this, 'shutdown')); + } + } + + /** + * Initializes this sfUser. + * + * Available options: + * + * * auto_shutdown: Whether to automatically save the changes to the session (true by default) + * * culture: The user culture + * * default_culture: The default user culture (en by default) + * * use_flash: Whether to enable flash usage (false by default) + * * logging: Whether to enable logging (false by default) + * + * @param sfEventDispatcher $dispatcher An sfEventDispatcher instance. + * @param sfStorage $storage An sfStorage instance. + * @param array $options An associative array of options. + * + * @return Boolean true, if initialization completes successfully, otherwise false. + */ + public function initialize(sfEventDispatcher $dispatcher, sfStorage $storage, $options = array()) + { + $this->dispatcher = $dispatcher; + $this->storage = $storage; + + $this->options = array_merge(array( + 'auto_shutdown' => true, + 'culture' => null, + 'default_culture' => 'en', + 'use_flash' => false, + 'logging' => false, + ), $options); + + $this->attributeHolder = new sfNamespacedParameterHolder(self::ATTRIBUTE_NAMESPACE); + + // read attributes from storage + $attributes = $storage->read(self::ATTRIBUTE_NAMESPACE); + if (is_array($attributes)) + { + foreach ($attributes as $namespace => $values) + { + $this->attributeHolder->add($values, $namespace); + } + } + + // set the user culture to sf_culture parameter if present in the request + // otherwise + // - use the culture defined in the user session + // - use the default culture set in settings.yml + $currentCulture = $storage->read(self::CULTURE_NAMESPACE); + $this->setCulture(null !== $this->options['culture'] ? $this->options['culture'] : (null !== $currentCulture ? $currentCulture : $this->options['default_culture'])); + + // flag current flash to be removed at shutdown + if ($this->options['use_flash'] && $names = $this->attributeHolder->getNames('symfony/user/sfUser/flash')) + { + if ($this->options['logging']) + { + $this->dispatcher->notify(new sfEvent($this, 'application.log', array(sprintf('Flag old flash messages ("%s")', implode('", "', $names))))); + } + + foreach ($names as $name) + { + $this->attributeHolder->set($name, true, 'symfony/user/sfUser/flash/remove'); + } + } + } + + /** + * Returns the initialization options + * + * @return array The options used to initialize sfUser + */ + public function getOptions() + { + return $this->options; + } + + /** + * Sets the user culture. + * + * @param string $culture + */ + public function setCulture($culture) + { + if ($this->culture != $culture) + { + $this->culture = $culture; + + $this->dispatcher->notify(new sfEvent($this, 'user.change_culture', array('culture' => $culture))); + } + } + + /** + * Sets a flash variable that will be passed to the very next action. + * + * @param string $name The name of the flash variable + * @param string $value The value of the flash variable + * @param bool $persist true if the flash have to persist for the following request (true by default) + */ + public function setFlash($name, $value, $persist = true) + { + if (!$this->options['use_flash']) + { + return; + } + + $this->setAttribute($name, $value, 'symfony/user/sfUser/flash'); + + if ($persist) + { + // clear removal flag + $this->attributeHolder->remove($name, null, 'symfony/user/sfUser/flash/remove'); + } + else + { + $this->setAttribute($name, true, 'symfony/user/sfUser/flash/remove'); + } + } + + /** + * Gets a flash variable. + * + * @param string $name The name of the flash variable + * @param string $default The default value returned when named variable does not exist. + * + * @return mixed The value of the flash variable + */ + public function getFlash($name, $default = null) + { + if (!$this->options['use_flash']) + { + return $default; + } + + return $this->getAttribute($name, $default, 'symfony/user/sfUser/flash'); + } + + /** + * Returns true if a flash variable of the specified name exists. + * + * @param string $name The name of the flash variable + * + * @return bool true if the variable exists, false otherwise + */ + public function hasFlash($name) + { + if (!$this->options['use_flash']) + { + return false; + } + + return $this->hasAttribute($name, 'symfony/user/sfUser/flash'); + } + + /** + * Gets culture. + * + * @return string + */ + public function getCulture() + { + return $this->culture; + } + + /** + * Returns true if the user attribute exists (implements the ArrayAccess interface). + * + * @param string $name The name of the user attribute + * + * @return Boolean true if the user attribute exists, false otherwise + */ + public function offsetExists($name) + { + return $this->hasAttribute($name); + } + + /** + * Returns the user attribute associated with the name (implements the ArrayAccess interface). + * + * @param string $name The offset of the value to get + * + * @return mixed The user attribute if exists, null otherwise + */ + public function offsetGet($name) + { + return $this->getAttribute($name, false); + } + + /** + * Sets the user attribute associated with the offset (implements the ArrayAccess interface). + * + * @param string $offset The parameter name + * @param string $value The parameter value + */ + public function offsetSet($offset, $value) + { + $this->setAttribute($offset, $value); + } + + /** + * Unsets the user attribute associated with the offset (implements the ArrayAccess interface). + * + * @param string $offset The parameter name + */ + public function offsetUnset($offset) + { + $this->getAttributeHolder()->remove($offset); + } + + public function getAttributeHolder() + { + return $this->attributeHolder; + } + + public function getAttribute($name, $default = null, $ns = null) + { + return $this->attributeHolder->get($name, $default, $ns); + } + + public function hasAttribute($name, $ns = null) + { + return $this->attributeHolder->has($name, $ns); + } + + public function setAttribute($name, $value, $ns = null) + { + return $this->attributeHolder->set($name, $value, $ns); + } + + /** + * Executes the shutdown procedure. + */ + public function shutdown() + { + // remove flash that are tagged to be removed + if ($this->options['use_flash'] && $names = $this->attributeHolder->getNames('symfony/user/sfUser/flash/remove')) + { + if ($this->options['logging']) + { + $this->dispatcher->notify(new sfEvent($this, 'application.log', array(sprintf('Remove old flash messages ("%s")', implode('", "', $names))))); + } + + foreach ($names as $name) + { + $this->attributeHolder->remove($name, null, 'symfony/user/sfUser/flash'); + $this->attributeHolder->remove($name, null, 'symfony/user/sfUser/flash/remove'); + } + } + + $attributes = array(); + foreach ($this->attributeHolder->getNamespaces() as $namespace) + { + $attributes[$namespace] = $this->attributeHolder->getAll($namespace); + } + + // write attributes to the storage + $this->storage->write(self::ATTRIBUTE_NAMESPACE, $attributes); + + // write culture to the storage + $this->storage->write(self::CULTURE_NAMESPACE, $this->culture); + } + + /** + * Calls methods defined via sfEventDispatcher. + * + * @param string $method The method name + * @param array $arguments The method arguments + * + * @return mixed The returned value of the called method + * + * @throws sfException If the calls fails + */ + public function __call($method, $arguments) + { + $event = $this->dispatcher->notifyUntil(new sfEvent($this, 'user.method_not_found', array('method' => $method, 'arguments' => $arguments))); + if (!$event->isProcessed()) + { + throw new sfException(sprintf('Call to undefined method %s::%s.', get_class($this), $method)); + } + + return $event->getReturnValue(); + } +} diff --git a/lib/vendor/symfony/lib/user/sfBasicSecurityUser.class.php b/lib/vendor/symfony/lib/user/sfBasicSecurityUser.class.php new file mode 100644 index 0000000..23ed435 --- /dev/null +++ b/lib/vendor/symfony/lib/user/sfBasicSecurityUser.class.php @@ -0,0 +1,300 @@ + + * (c) 2004-2006 Sean Kerr + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfBasicSecurityUser will handle any type of data as a credential. + * + * @package symfony + * @subpackage user + * @author Fabien Potencier + * @author Sean Kerr + * @version SVN: $Id: sfBasicSecurityUser.class.php 29528 2010-05-19 13:12:27Z fabien $ + */ +class sfBasicSecurityUser extends sfUser implements sfSecurityUser +{ + const LAST_REQUEST_NAMESPACE = 'symfony/user/sfUser/lastRequest'; + const AUTH_NAMESPACE = 'symfony/user/sfUser/authenticated'; + const CREDENTIAL_NAMESPACE = 'symfony/user/sfUser/credentials'; + + protected $lastRequest = null; + + protected $credentials = null; + protected $authenticated = null; + + protected $timedout = false; + + /** + * Clears all credentials. + * + */ + public function clearCredentials() + { + $this->credentials = array(); + } + + /** + * Returns the current user's credentials. + * + * @return array + */ + public function getCredentials() + { + return $this->credentials; + } + + /** + * Removes a credential. + * + * @param mixed $credential credential + */ + public function removeCredential($credential) + { + if ($this->hasCredential($credential)) + { + foreach ($this->credentials as $key => $value) + { + if ($credential == $value) + { + if ($this->options['logging']) + { + $this->dispatcher->notify(new sfEvent($this, 'application.log', array(sprintf('Remove credential "%s"', $credential)))); + } + + unset($this->credentials[$key]); + + $this->storage->regenerate(false); + + return; + } + } + } + } + + /** + * Adds a credential. + * + * @param mixed $credential + */ + public function addCredential($credential) + { + $this->addCredentials(func_get_args()); + } + + /** + * Adds several credential at once. + * + * @param mixed array or list of credentials + */ + public function addCredentials() + { + if (func_num_args() == 0) return; + + // Add all credentials + $credentials = (is_array(func_get_arg(0))) ? func_get_arg(0) : func_get_args(); + + if ($this->options['logging']) + { + $this->dispatcher->notify(new sfEvent($this, 'application.log', array(sprintf('Add credential(s) "%s"', implode(', ', $credentials))))); + } + + $added = false; + foreach ($credentials as $aCredential) + { + if (!in_array($aCredential, $this->credentials)) + { + $added = true; + $this->credentials[] = $aCredential; + } + } + + if ($added) + { + $this->storage->regenerate(false); + } + } + + /** + * Returns true if user has credential. + * + * @param mixed $credentials + * @param bool $useAnd specify the mode, either AND or OR + * @return bool + * + * @author Olivier Verdier + */ + public function hasCredential($credentials, $useAnd = true) + { + if (null === $this->credentials) + { + return false; + } + + if (!is_array($credentials)) + { + return in_array($credentials, $this->credentials); + } + + // now we assume that $credentials is an array + $test = false; + + foreach ($credentials as $credential) + { + // recursively check the credential with a switched AND/OR mode + $test = $this->hasCredential($credential, $useAnd ? false : true); + + if ($useAnd) + { + $test = $test ? false : true; + } + + if ($test) // either passed one in OR mode or failed one in AND mode + { + break; // the matter is settled + } + } + + if ($useAnd) // in AND mode we succeed if $test is false + { + $test = $test ? false : true; + } + + return $test; + } + + /** + * Returns true if user is authenticated. + * + * @return boolean + */ + public function isAuthenticated() + { + return $this->authenticated; + } + + /** + * Sets authentication for user. + * + * @param bool $authenticated + */ + public function setAuthenticated($authenticated) + { + if ($this->options['logging']) + { + $this->dispatcher->notify(new sfEvent($this, 'application.log', array(sprintf('User is %sauthenticated', $authenticated === true ? '' : 'not ')))); + } + + if ((bool) $authenticated !== $this->authenticated) + { + if ($authenticated === true) + { + $this->authenticated = true; + } + else + { + $this->authenticated = false; + $this->clearCredentials(); + } + + $this->dispatcher->notify(new sfEvent($this, 'user.change_authentication', array('authenticated' => $this->authenticated))); + + $this->storage->regenerate(false); + } + } + + public function setTimedOut() + { + $this->timedout = true; + } + + public function isTimedOut() + { + return $this->timedout; + } + + /** + * Returns the timestamp of the last user request. + * + * @return int + */ + public function getLastRequestTime() + { + return $this->lastRequest; + } + + /** + * Available options: + * + * * timeout: Timeout to automatically log out the user in seconds (1800 by default) + * Set to false to disable + * + * @param sfEventDispatcher $dispatcher An sfEventDispatcher instance. + * @param sfStorage $storage An sfStorage instance. + * @param array $options An associative array of options. + * + * @see sfUser + */ + public function initialize(sfEventDispatcher $dispatcher, sfStorage $storage, $options = array()) + { + // initialize parent + parent::initialize($dispatcher, $storage, $options); + + if (!array_key_exists('timeout', $this->options)) + { + $this->options['timeout'] = 1800; + } + + // force the max lifetime for session garbage collector to be greater than timeout + if (ini_get('session.gc_maxlifetime') < $this->options['timeout']) + { + ini_set('session.gc_maxlifetime', $this->options['timeout']); + } + + // read data from storage + $this->authenticated = $storage->read(self::AUTH_NAMESPACE); + $this->credentials = $storage->read(self::CREDENTIAL_NAMESPACE); + $this->lastRequest = $storage->read(self::LAST_REQUEST_NAMESPACE); + + if (null === $this->authenticated) + { + $this->authenticated = false; + $this->credentials = array(); + } + else + { + // Automatic logout logged in user if no request within timeout parameter seconds + $timeout = $this->options['timeout']; + if (false !== $timeout && null !== $this->lastRequest && time() - $this->lastRequest >= $timeout) + { + if ($this->options['logging']) + { + $this->dispatcher->notify(new sfEvent($this, 'application.log', array('Automatic user logout due to timeout'))); + } + + $this->setTimedOut(); + $this->setAuthenticated(false); + } + } + + $this->lastRequest = time(); + } + + public function shutdown() + { + // write the last request time to the storage + $this->storage->write(self::LAST_REQUEST_NAMESPACE, $this->lastRequest); + + $this->storage->write(self::AUTH_NAMESPACE, $this->authenticated); + $this->storage->write(self::CREDENTIAL_NAMESPACE, $this->credentials); + + // call the parent shutdown method + parent::shutdown(); + } +} diff --git a/lib/vendor/symfony/lib/user/sfSecurityUser.class.php b/lib/vendor/symfony/lib/user/sfSecurityUser.class.php new file mode 100644 index 0000000..754d895 --- /dev/null +++ b/lib/vendor/symfony/lib/user/sfSecurityUser.class.php @@ -0,0 +1,64 @@ + + * (c) 2004-2006 Sean Kerr + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfSecurityUser interface provides advanced security manipulation methods. + * + * @package symfony + * @subpackage user + * @author Fabien Potencier + * @author Sean Kerr + * @version SVN: $Id: sfSecurityUser.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $ + */ +interface sfSecurityUser +{ + /** + * Add a credential to this user. + * + * @param mixed $credential Credential data. + */ + public function addCredential($credential); + + /** + * Clear all credentials associated with this user. + */ + public function clearCredentials(); + + /** + * Indicates whether or not this user has a credential. + * + * @param mixed $credential Credential data. + * + * @return bool true, if this user has the credential, otherwise false. + */ + public function hasCredential($credential); + + /** + * Indicates whether or not this user is authenticated. + * + * @return bool true, if this user is authenticated, otherwise false. + */ + public function isAuthenticated(); + + /** + * Remove a credential from this user. + * + * @param mixed $credential Credential data. + */ + public function removeCredential($credential); + + /** + * Set the authenticated status of this user. + * + * @param bool $authenticated A flag indicating the authenticated status of this user. + */ + public function setAuthenticated($authenticated); +} diff --git a/lib/vendor/symfony/lib/user/sfUser.class.php b/lib/vendor/symfony/lib/user/sfUser.class.php new file mode 100644 index 0000000..8712804 --- /dev/null +++ b/lib/vendor/symfony/lib/user/sfUser.class.php @@ -0,0 +1,335 @@ + + * (c) 2004-2006 Sean Kerr + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * + * sfUser wraps a client session and provides accessor methods for user + * attributes. It also makes storing and retrieving multiple page form data + * rather easy by allowing user attributes to be stored in namespaces, which + * help organize data. + * + * @package symfony + * @subpackage user + * @author Fabien Potencier + * @author Sean Kerr + * @version SVN: $Id: sfUser.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $ + */ +class sfUser implements ArrayAccess +{ + /** + * The namespace under which attributes will be stored. + */ + const ATTRIBUTE_NAMESPACE = 'symfony/user/sfUser/attributes'; + + const CULTURE_NAMESPACE = 'symfony/user/sfUser/culture'; + + protected + $options = array(), + $attributeHolder = null, + $culture = null, + $storage = null, + $dispatcher = null; + + /** + * Class constructor. + * + * @see initialize() + */ + public function __construct(sfEventDispatcher $dispatcher, sfStorage $storage, $options = array()) + { + $this->initialize($dispatcher, $storage, $options); + + if ($this->options['auto_shutdown']) + { + register_shutdown_function(array($this, 'shutdown')); + } + } + + /** + * Initializes this sfUser. + * + * Available options: + * + * * auto_shutdown: Whether to automatically save the changes to the session (true by default) + * * culture: The user culture + * * default_culture: The default user culture (en by default) + * * use_flash: Whether to enable flash usage (false by default) + * * logging: Whether to enable logging (false by default) + * + * @param sfEventDispatcher $dispatcher An sfEventDispatcher instance. + * @param sfStorage $storage An sfStorage instance. + * @param array $options An associative array of options. + * + * @return Boolean true, if initialization completes successfully, otherwise false. + */ + public function initialize(sfEventDispatcher $dispatcher, sfStorage $storage, $options = array()) + { + $this->dispatcher = $dispatcher; + $this->storage = $storage; + + $this->options = array_merge(array( + 'auto_shutdown' => true, + 'culture' => null, + 'default_culture' => 'en', + 'use_flash' => false, + 'logging' => false, + ), $options); + + $this->attributeHolder = new sfNamespacedParameterHolder(self::ATTRIBUTE_NAMESPACE); + + // read attributes from storage + $attributes = $storage->read(self::ATTRIBUTE_NAMESPACE); + if (is_array($attributes)) + { + foreach ($attributes as $namespace => $values) + { + $this->attributeHolder->add($values, $namespace); + } + } + + // set the user culture to sf_culture parameter if present in the request + // otherwise + // - use the culture defined in the user session + // - use the default culture set in settings.yml + $currentCulture = $storage->read(self::CULTURE_NAMESPACE); + $this->setCulture(null !== $this->options['culture'] ? $this->options['culture'] : (null !== $currentCulture ? $currentCulture : $this->options['default_culture'])); + + // flag current flash to be removed at shutdown + if ($this->options['use_flash'] && $names = $this->attributeHolder->getNames('symfony/user/sfUser/flash')) + { + if ($this->options['logging']) + { + $this->dispatcher->notify(new sfEvent($this, 'application.log', array(sprintf('Flag old flash messages ("%s")', implode('", "', $names))))); + } + + foreach ($names as $name) + { + $this->attributeHolder->set($name, true, 'symfony/user/sfUser/flash/remove'); + } + } + } + + /** + * Returns the initialization options + * + * @return array The options used to initialize sfUser + */ + public function getOptions() + { + return $this->options; + } + + /** + * Sets the user culture. + * + * @param string $culture + */ + public function setCulture($culture) + { + if ($this->culture != $culture) + { + $this->culture = $culture; + + $this->dispatcher->notify(new sfEvent($this, 'user.change_culture', array('culture' => $culture))); + } + } + + /** + * Sets a flash variable that will be passed to the very next action. + * + * @param string $name The name of the flash variable + * @param string $value The value of the flash variable + * @param bool $persist true if the flash have to persist for the following request (true by default) + */ + public function setFlash($name, $value, $persist = true) + { + if (!$this->options['use_flash']) + { + return; + } + + $this->setAttribute($name, $value, 'symfony/user/sfUser/flash'); + + if ($persist) + { + // clear removal flag + $this->attributeHolder->remove($name, null, 'symfony/user/sfUser/flash/remove'); + } + else + { + $this->setAttribute($name, true, 'symfony/user/sfUser/flash/remove'); + } + } + + /** + * Gets a flash variable. + * + * @param string $name The name of the flash variable + * @param string $default The default value returned when named variable does not exist. + * + * @return mixed The value of the flash variable + */ + public function getFlash($name, $default = null) + { + if (!$this->options['use_flash']) + { + return $default; + } + + return $this->getAttribute($name, $default, 'symfony/user/sfUser/flash'); + } + + /** + * Returns true if a flash variable of the specified name exists. + * + * @param string $name The name of the flash variable + * + * @return bool true if the variable exists, false otherwise + */ + public function hasFlash($name) + { + if (!$this->options['use_flash']) + { + return false; + } + + return $this->hasAttribute($name, 'symfony/user/sfUser/flash'); + } + + /** + * Gets culture. + * + * @return string + */ + public function getCulture() + { + return $this->culture; + } + + /** + * Returns true if the user attribute exists (implements the ArrayAccess interface). + * + * @param string $name The name of the user attribute + * + * @return Boolean true if the user attribute exists, false otherwise + */ + public function offsetExists($name) + { + return $this->hasAttribute($name); + } + + /** + * Returns the user attribute associated with the name (implements the ArrayAccess interface). + * + * @param string $name The offset of the value to get + * + * @return mixed The user attribute if exists, null otherwise + */ + public function offsetGet($name) + { + return $this->getAttribute($name, false); + } + + /** + * Sets the user attribute associated with the offset (implements the ArrayAccess interface). + * + * @param string $offset The parameter name + * @param string $value The parameter value + */ + public function offsetSet($offset, $value) + { + $this->setAttribute($offset, $value); + } + + /** + * Unsets the user attribute associated with the offset (implements the ArrayAccess interface). + * + * @param string $offset The parameter name + */ + public function offsetUnset($offset) + { + $this->getAttributeHolder()->remove($offset); + } + + public function getAttributeHolder() + { + return $this->attributeHolder; + } + + public function getAttribute($name, $default = null, $ns = null) + { + return $this->attributeHolder->get($name, $default, $ns); + } + + public function hasAttribute($name, $ns = null) + { + return $this->attributeHolder->has($name, $ns); + } + + public function setAttribute($name, $value, $ns = null) + { + return $this->attributeHolder->set($name, $value, $ns); + } + + /** + * Executes the shutdown procedure. + */ + public function shutdown() + { + // remove flash that are tagged to be removed + if ($this->options['use_flash'] && $names = $this->attributeHolder->getNames('symfony/user/sfUser/flash/remove')) + { + if ($this->options['logging']) + { + $this->dispatcher->notify(new sfEvent($this, 'application.log', array(sprintf('Remove old flash messages ("%s")', implode('", "', $names))))); + } + + foreach ($names as $name) + { + $this->attributeHolder->remove($name, null, 'symfony/user/sfUser/flash'); + $this->attributeHolder->remove($name, null, 'symfony/user/sfUser/flash/remove'); + } + } + + $attributes = array(); + foreach ($this->attributeHolder->getNamespaces() as $namespace) + { + $attributes[$namespace] = $this->attributeHolder->getAll($namespace); + } + + // write attributes to the storage + $this->storage->write(self::ATTRIBUTE_NAMESPACE, $attributes); + + // write culture to the storage + $this->storage->write(self::CULTURE_NAMESPACE, $this->culture); + } + + /** + * Calls methods defined via sfEventDispatcher. + * + * @param string $method The method name + * @param array $arguments The method arguments + * + * @return mixed The returned value of the called method + * + * @throws sfException If the calls fails + */ + public function __call($method, $arguments) + { + $event = $this->dispatcher->notifyUntil(new sfEvent($this, 'user.method_not_found', array('method' => $method, 'arguments' => $arguments))); + if (!$event->isProcessed()) + { + throw new sfException(sprintf('Call to undefined method %s::%s.', get_class($this), $method)); + } + + return $event->getReturnValue(); + } +} diff --git a/lib/vendor/symfony/lib/util/.svn/all-wcprops b/lib/vendor/symfony/lib/util/.svn/all-wcprops new file mode 100644 index 0000000..dfb0591 --- /dev/null +++ b/lib/vendor/symfony/lib/util/.svn/all-wcprops @@ -0,0 +1,71 @@ +K 25 +svn:wc:ra_dav:version-url +V 37 +/!svn/ver/33373/branches/1.4/lib/util +END +sfBrowserBase.class.php +K 25 +svn:wc:ra_dav:version-url +V 61 +/!svn/ver/33373/branches/1.4/lib/util/sfBrowserBase.class.php +END +sfParameterHolder.class.php +K 25 +svn:wc:ra_dav:version-url +V 65 +/!svn/ver/23922/branches/1.4/lib/util/sfParameterHolder.class.php +END +sfCallable.class.php +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/23881/branches/1.4/lib/util/sfCallable.class.php +END +sfNamespacedParameterHolder.class.php +K 25 +svn:wc:ra_dav:version-url +V 75 +/!svn/ver/29521/branches/1.4/lib/util/sfNamespacedParameterHolder.class.php +END +sfClassManipulator.class.php +K 25 +svn:wc:ra_dav:version-url +V 66 +/!svn/ver/25063/branches/1.4/lib/util/sfClassManipulator.class.php +END +sfBrowser.class.php +K 25 +svn:wc:ra_dav:version-url +V 57 +/!svn/ver/23881/branches/1.4/lib/util/sfBrowser.class.php +END +sfContext.class.php +K 25 +svn:wc:ra_dav:version-url +V 57 +/!svn/ver/23922/branches/1.4/lib/util/sfContext.class.php +END +sfInflector.class.php +K 25 +svn:wc:ra_dav:version-url +V 59 +/!svn/ver/23881/branches/1.4/lib/util/sfInflector.class.php +END +sfToolkit.class.php +K 25 +svn:wc:ra_dav:version-url +V 57 +/!svn/ver/29525/branches/1.4/lib/util/sfToolkit.class.php +END +sfFinder.class.php +K 25 +svn:wc:ra_dav:version-url +V 56 +/!svn/ver/32891/branches/1.4/lib/util/sfFinder.class.php +END +sfDomCssSelector.class.php +K 25 +svn:wc:ra_dav:version-url +V 64 +/!svn/ver/31893/branches/1.4/lib/util/sfDomCssSelector.class.php +END diff --git a/lib/vendor/symfony/lib/util/.svn/entries b/lib/vendor/symfony/lib/util/.svn/entries new file mode 100644 index 0000000..27efd36 --- /dev/null +++ b/lib/vendor/symfony/lib/util/.svn/entries @@ -0,0 +1,402 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/util +http://svn.symfony-project.com + + + +2012-03-08T15:45:46.554010Z +33373 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +sfBrowserBase.class.php +file + + + + +2012-05-10T18:41:53.985549Z +c5a67936529911fe647821f5f22bc145 +2012-03-08T15:45:46.554010Z +33373 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +28064 + +sfParameterHolder.class.php +file + + + + +2012-05-10T18:41:53.993551Z +e390dc0fb6f9c32b853f0123061c245a +2009-11-14T14:58:38.254908Z +23922 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +4650 + +sfCallable.class.php +file + + + + +2012-05-10T18:41:53.993551Z +5b4bb59a8016208d1b618e96ec9f8171 +2009-09-11T05:54:39.351482Z +21875 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +1790 + +sfNamespacedParameterHolder.class.php +file + + + + +2012-05-10T18:41:53.993551Z +31deaac3b2d9a1a3286ee7ea5293de14 +2010-05-19T11:47:56.347450Z +29521 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +9119 + +sfClassManipulator.class.php +file + + + + +2012-05-10T18:41:54.029552Z +8b77682b5d5a8ed07e94a6a6d2df96fd +2009-12-08T06:02:07.780556Z +25063 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +6825 + +sfBrowser.class.php +file + + + + +2012-05-10T18:41:54.029552Z +9421a2d8a1b35e277e274e78b3a6eadd +2009-09-11T12:06:21.565437Z +21908 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +4001 + +sfContext.class.php +file + + + + +2012-05-10T18:41:54.033551Z +7de8bd12647a6548397f15fcbca057de +2009-11-14T14:58:38.254908Z +23922 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +16116 + +sfInflector.class.php +file + + + + +2012-05-10T18:41:54.033551Z +3caee096072619b264ba17855f4d3855 +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +3720 + +sfToolkit.class.php +file + + + + +2012-05-10T18:41:54.033551Z +88418a2927d6bb528953c60c2affd6b7 +2010-05-19T13:01:43.840970Z +29525 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +15056 + +sfFinder.class.php +file + + + + +2012-05-10T18:41:54.037551Z +934319bd006b1c2d1041346e324abe99 +2011-08-05T07:48:34.334084Z +32891 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +19336 + +sfDomCssSelector.class.php +file + + + + +2012-05-10T18:41:54.037551Z +2a3c54fe97fa677a5a4922a3a34edd24 +2011-01-24T18:11:45.360885Z +31893 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +16013 + diff --git a/lib/vendor/symfony/lib/util/.svn/prop-base/sfBrowser.class.php.svn-base b/lib/vendor/symfony/lib/util/.svn/prop-base/sfBrowser.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/util/.svn/prop-base/sfBrowser.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/util/.svn/prop-base/sfBrowserBase.class.php.svn-base b/lib/vendor/symfony/lib/util/.svn/prop-base/sfBrowserBase.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/util/.svn/prop-base/sfBrowserBase.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/util/.svn/prop-base/sfCallable.class.php.svn-base b/lib/vendor/symfony/lib/util/.svn/prop-base/sfCallable.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/util/.svn/prop-base/sfCallable.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/util/.svn/prop-base/sfClassManipulator.class.php.svn-base b/lib/vendor/symfony/lib/util/.svn/prop-base/sfClassManipulator.class.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/lib/util/.svn/prop-base/sfClassManipulator.class.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/lib/util/.svn/prop-base/sfContext.class.php.svn-base b/lib/vendor/symfony/lib/util/.svn/prop-base/sfContext.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/util/.svn/prop-base/sfContext.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/util/.svn/prop-base/sfDomCssSelector.class.php.svn-base b/lib/vendor/symfony/lib/util/.svn/prop-base/sfDomCssSelector.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/util/.svn/prop-base/sfDomCssSelector.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/util/.svn/prop-base/sfFinder.class.php.svn-base b/lib/vendor/symfony/lib/util/.svn/prop-base/sfFinder.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/util/.svn/prop-base/sfFinder.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/util/.svn/prop-base/sfInflector.class.php.svn-base b/lib/vendor/symfony/lib/util/.svn/prop-base/sfInflector.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/util/.svn/prop-base/sfInflector.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/util/.svn/prop-base/sfNamespacedParameterHolder.class.php.svn-base b/lib/vendor/symfony/lib/util/.svn/prop-base/sfNamespacedParameterHolder.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/util/.svn/prop-base/sfNamespacedParameterHolder.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/util/.svn/prop-base/sfParameterHolder.class.php.svn-base b/lib/vendor/symfony/lib/util/.svn/prop-base/sfParameterHolder.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/util/.svn/prop-base/sfParameterHolder.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/util/.svn/prop-base/sfToolkit.class.php.svn-base b/lib/vendor/symfony/lib/util/.svn/prop-base/sfToolkit.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/util/.svn/prop-base/sfToolkit.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/util/.svn/text-base/sfBrowser.class.php.svn-base b/lib/vendor/symfony/lib/util/.svn/text-base/sfBrowser.class.php.svn-base new file mode 100644 index 0000000..a4f8969 --- /dev/null +++ b/lib/vendor/symfony/lib/util/.svn/text-base/sfBrowser.class.php.svn-base @@ -0,0 +1,169 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfBrowser simulates a browser which can surf a symfony application. + * + * @package symfony + * @subpackage util + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfBrowser extends sfBrowserBase +{ + protected + $listeners = array(), + $context = null, + $currentException = null; + + /** + * Calls a request to a uri. + */ + protected function doCall() + { + // recycle our context object + $this->context = $this->getContext(true); + + sfConfig::set('sf_test', true); + + // we register a fake rendering filter + sfConfig::set('sf_rendering_filter', array('sfFakeRenderingFilter', null)); + + $this->resetCurrentException(); + + // dispatch our request + ob_start(); + $this->context->getController()->dispatch(); + $retval = ob_get_clean(); + + // append retval to the response content + $this->context->getResponse()->setContent($retval); + + // manually shutdown user to save current session data + if ($this->context->getUser()) + { + $this->context->getUser()->shutdown(); + $this->context->getStorage()->shutdown(); + } + } + + /** + * Returns the current application context. + * + * @param bool $forceReload true to force context reload, false otherwise + * + * @return sfContext + */ + public function getContext($forceReload = false) + { + if (null === $this->context || $forceReload) + { + $isContextEmpty = null === $this->context; + $context = $isContextEmpty ? sfContext::getInstance() : $this->context; + + // create configuration + $currentConfiguration = $context->getConfiguration(); + $configuration = ProjectConfiguration::getApplicationConfiguration($currentConfiguration->getApplication(), $currentConfiguration->getEnvironment(), $currentConfiguration->isDebug()); + + // connect listeners + $configuration->getEventDispatcher()->connect('application.throw_exception', array($this, 'listenToException')); + foreach ($this->listeners as $name => $listener) + { + $configuration->getEventDispatcher()->connect($name, $listener); + } + + // create context + $this->context = sfContext::createInstance($configuration); + unset($currentConfiguration); + + if (!$isContextEmpty) + { + sfConfig::clear(); + sfConfig::add($this->rawConfiguration); + } + else + { + $this->rawConfiguration = sfConfig::getAll(); + } + } + + return $this->context; + } + + public function addListener($name, $listener) + { + $this->listeners[$name] = $listener; + } + + /** + * Gets response. + * + * @return sfWebResponse + */ + public function getResponse() + { + return $this->context->getResponse(); + } + + /** + * Gets request. + * + * @return sfWebRequest + */ + public function getRequest() + { + return $this->context->getRequest(); + } + + /** + * Gets user. + * + * @return sfUser + */ + public function getUser() + { + return $this->context->getUser(); + } + + /** + * Shutdown function to clean up and remove sessions + * + * @return void + */ + public function shutdown() + { + parent::shutdown(); + + // we remove all session data + sfToolkit::clearDirectory(sfConfig::get('sf_test_cache_dir').'/sessions'); + } + + /** + * Listener for exceptions + * + * @param sfEvent $event The event to handle + * + * @return void + */ + public function listenToException(sfEvent $event) + { + $this->setCurrentException($event->getSubject()); + } +} + +class sfFakeRenderingFilter extends sfFilter +{ + public function execute($filterChain) + { + $filterChain->execute(); + + $this->context->getResponse()->sendContent(); + } +} diff --git a/lib/vendor/symfony/lib/util/.svn/text-base/sfBrowserBase.class.php.svn-base b/lib/vendor/symfony/lib/util/.svn/text-base/sfBrowserBase.class.php.svn-base new file mode 100644 index 0000000..d23e472 --- /dev/null +++ b/lib/vendor/symfony/lib/util/.svn/text-base/sfBrowserBase.class.php.svn-base @@ -0,0 +1,1023 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfBrowserBase is the base class for sfBrowser. + * + * It implements features that is independent from the symfony controllers. + * + * @package symfony + * @subpackage util + * @author Fabien Potencier + * @version SVN: $Id$ + */ +abstract class sfBrowserBase +{ + protected + $hostname = null, + $remote = null, + $dom = null, + $stack = array(), + $stackPosition = -1, + $cookieJar = array(), + $fields = array(), + $files = array(), + $vars = array(), + $defaultServerArray = array(), + $headers = array(), + $currentException = null, + $domCssSelector = null; + + /** + * Class constructor. + * + * @param string $hostname Hostname to browse + * @param string $remote Remote address to spook + * @param array $options Options for sfBrowser + * + * @return void + */ + public function __construct($hostname = null, $remote = null, $options = array()) + { + $this->initialize($hostname, $remote, $options); + } + + /** + * Initializes sfBrowser - sets up environment + * + * @param string $hostname Hostname to browse + * @param string $remote Remote address to spook + * @param array $options Options for sfBrowser + * + * @return void + */ + public function initialize($hostname = null, $remote = null, $options = array()) + { + unset($_SERVER['argv']); + unset($_SERVER['argc']); + + // setup our fake environment + $this->hostname = null === $hostname ? 'localhost' : $hostname; + $this->remote = null === $remote ? '127.0.0.1' : $remote; + + // we set a session id (fake cookie / persistence) + $this->newSession(); + + // store default global $_SERVER array + $this->defaultServerArray = $_SERVER; + + // register our shutdown function + register_shutdown_function(array($this, 'shutdown')); + } + + /** + * Sets variable name + * + * @param string $name The variable name + * @param mixed $value The value + * + * @return sfBrowserBase + */ + public function setVar($name, $value) + { + $this->vars[$name] = $value; + + return $this; + } + + /** + * Sets a HTTP header for the very next request. + * + * @param string $header The header name + * @param string $value The header value + */ + public function setHttpHeader($header, $value) + { + $this->headers[$header] = $value; + + return $this; + } + + /** + * Sets a cookie. + * + * @param string $name The cookie name + * @param string $value Value for the cookie + * @param string $expire Cookie expiration period + * @param string $path Path + * @param string $domain Domain name + * @param bool $secure If secure + * @param bool $httpOnly If uses only HTTP + * + * @return sfBrowserBase This sfBrowserBase instance + */ + public function setCookie($name, $value, $expire = null, $path = '/', $domain = '', $secure = false, $httpOnly = false) + { + $this->cookieJar[$name] = array( + 'name' => $name, + 'value' => $value, + 'expire' => $expire, + 'path' => $path, + 'domain' => $domain, + 'secure' => (Boolean) $secure, + 'httpOnly' => $httpOnly, + ); + + return $this; + } + + /** + * Removes a cookie by name. + * + * @param string $name The cookie name + * + * @return sfBrowserBase This sfBrowserBase instance + */ + public function removeCookie($name) + { + unset($this->cookieJar[$name]); + + return $this; + } + + /** + * Clears all cookies. + * + * @return sfBrowserBase This sfBrowserBase instance + */ + public function clearCookies() + { + $this->cookieJar = array(); + + return $this; + } + + /** + * Sets username and password for simulating http authentication. + * + * @param string $username The username + * @param string $password The password + * + * @return sfBrowserBase + */ + public function setAuth($username, $password) + { + $this->vars['PHP_AUTH_USER'] = $username; + $this->vars['PHP_AUTH_PW'] = $password; + + return $this; + } + + /** + * Gets a uri. + * + * @param string $uri The URI to fetch + * @param array $parameters The Request parameters + * @param bool $changeStack Change the browser history stack? + * + * @return sfBrowserBase + */ + public function get($uri, $parameters = array(), $changeStack = true) + { + return $this->call($uri, 'get', $parameters, $changeStack); + } + + /** + * Posts a uri. + * + * @param string $uri The URI to fetch + * @param array $parameters The Request parameters + * @param bool $changeStack Change the browser history stack? + * + * @return sfBrowserBase + */ + public function post($uri, $parameters = array(), $changeStack = true) + { + return $this->call($uri, 'post', $parameters, $changeStack); + } + + /** + * Calls a request to a uri. + * + * @param string $uri The URI to fetch + * @param string $method The request method + * @param array $parameters The Request parameters + * @param bool $changeStack Change the browser history stack? + * + * @return sfBrowserBase + */ + public function call($uri, $method = 'get', $parameters = array(), $changeStack = true) + { + // check that the previous call() hasn't returned an uncatched exception + $this->checkCurrentExceptionIsEmpty(); + + $uri = $this->fixUri($uri); + + // add uri to the stack + if ($changeStack) + { + $this->stack = array_slice($this->stack, 0, $this->stackPosition + 1); + $this->stack[] = array( + 'uri' => $uri, + 'method' => $method, + 'parameters' => $parameters, + ); + $this->stackPosition = count($this->stack) - 1; + } + + list($path, $queryString) = false !== ($pos = strpos($uri, '?')) ? array(substr($uri, 0, $pos), substr($uri, $pos + 1)) : array($uri, ''); + $queryString = html_entity_decode($queryString); + + // remove anchor + $path = preg_replace('/#.*/', '', $path); + + // removes all fields from previous request + $this->fields = array(); + + // prepare the request object + $_SERVER = $this->defaultServerArray; + $_SERVER['HTTP_HOST'] = $this->hostname; + $_SERVER['SERVER_NAME'] = $_SERVER['HTTP_HOST']; + $_SERVER['SERVER_PORT'] = 80; + $_SERVER['HTTP_USER_AGENT'] = 'PHP5/CLI'; + $_SERVER['REMOTE_ADDR'] = $this->remote; + $_SERVER['REQUEST_METHOD'] = strtoupper($method); + $_SERVER['PATH_INFO'] = $path; + $_SERVER['REQUEST_URI'] = '/index.php'.$uri; + $_SERVER['SCRIPT_NAME'] = '/index.php'; + $_SERVER['SCRIPT_FILENAME'] = '/index.php'; + $_SERVER['QUERY_STRING'] = $queryString; + + if ($this->stackPosition >= 1) + { + $_SERVER['HTTP_REFERER'] = sprintf('http%s://%s%s', isset($this->defaultServerArray['HTTPS']) ? 's' : '', $this->hostname, $this->stack[$this->stackPosition - 1]['uri']); + } + + foreach ($this->vars as $key => $value) + { + $_SERVER[strtoupper($key)] = $value; + } + + foreach ($this->headers as $header => $value) + { + $_SERVER['HTTP_'.strtoupper(str_replace('-', '_', $header))] = $value; + } + $this->headers = array(); + + // request parameters + $_GET = $_POST = array(); + if (in_array(strtoupper($method), array('POST', 'DELETE', 'PUT'))) + { + if (isset($parameters['_with_csrf']) && $parameters['_with_csrf']) + { + unset($parameters['_with_csrf']); + $form = new BaseForm(); + $parameters[$form->getCSRFFieldName()] = $form->getCSRFToken(); + } + + $_POST = $parameters; + } + if (strtoupper($method) == 'GET') + { + $_GET = $parameters; + } + + // handle input type="file" fields + $_FILES = array(); + if (count($this->files)) + { + $_FILES = $this->files; + } + $this->files = array(); + + parse_str($queryString, $qs); + if (is_array($qs)) + { + $_GET = array_merge($qs, $_GET); + } + + // expire cookies + $cookies = $this->cookieJar; + foreach ($cookies as $name => $cookie) + { + if ($cookie['expire'] && $cookie['expire'] < time()) + { + unset($this->cookieJar[$name]); + } + } + + // restore cookies + $_COOKIE = array(); + foreach ($this->cookieJar as $name => $cookie) + { + $_COOKIE[$name] = $cookie['value']; + } + + $this->doCall(); + + $response = $this->getResponse(); + + // save cookies + foreach ($response->getCookies() as $name => $cookie) + { + // FIXME: deal with path, secure, ... + $this->cookieJar[$name] = $cookie; + } + + // support for the ETag header + if ($etag = $response->getHttpHeader('Etag')) + { + $this->vars['HTTP_IF_NONE_MATCH'] = $etag; + } + else + { + unset($this->vars['HTTP_IF_NONE_MATCH']); + } + + // support for the last modified header + if ($lastModified = $response->getHttpHeader('Last-Modified')) + { + $this->vars['HTTP_IF_MODIFIED_SINCE'] = $lastModified; + } + else + { + unset($this->vars['HTTP_IF_MODIFIED_SINCE']); + } + + // for HTML/XML content, create a DOM and sfDomCssSelector objects for the response content + $this->dom = null; + $this->domCssSelector = null; + if (preg_match('/(x|ht)ml/i', $response->getContentType(), $matches)) + { + $this->dom = new DomDocument('1.0', $response->getCharset()); + $this->dom->validateOnParse = true; + if ('x' == $matches[1]) + { + @$this->dom->loadXML($response->getContent()); + } + else + { + @$this->dom->loadHTML($response->getContent()); + } + $this->domCssSelector = new sfDomCssSelector($this->dom); + } + + return $this; + } + + /** + * Calls a request to a uri. + */ + abstract protected function doCall(); + + /** + * Go back in the browser history stack. + * + * @return sfBrowserBase + */ + public function back() + { + if ($this->stackPosition < 1) + { + throw new LogicException('You are already on the first page.'); + } + + --$this->stackPosition; + return $this->call($this->stack[$this->stackPosition]['uri'], $this->stack[$this->stackPosition]['method'], $this->stack[$this->stackPosition]['parameters'], false); + } + + /** + * Go forward in the browser history stack. + * + * @return sfBrowserBase + */ + public function forward() + { + if ($this->stackPosition > count($this->stack) - 2) + { + throw new LogicException('You are already on the last page.'); + } + + ++$this->stackPosition; + return $this->call($this->stack[$this->stackPosition]['uri'], $this->stack[$this->stackPosition]['method'], $this->stack[$this->stackPosition]['parameters'], false); + } + + /** + * Reload the current browser. + * + * @return sfBrowserBase + */ + public function reload() + { + if (-1 == $this->stackPosition) + { + throw new LogicException('No page to reload.'); + } + + return $this->call($this->stack[$this->stackPosition]['uri'], $this->stack[$this->stackPosition]['method'], $this->stack[$this->stackPosition]['parameters'], false); + } + + /** + * Get response DOM CSS selector. + * + * @return sfDomCssSelector + */ + public function getResponseDomCssSelector() + { + if (null === $this->domCssSelector) + { + throw new LogicException('The DOM is not accessible because the browser response content type is not HTML.'); + } + + return $this->domCssSelector; + } + + /** + * Get the response DOM XPath selector. + * + * @return DOMXPath + * + * @uses getResponseDom() + */ + public function getResponseDomXpath() + { + return new DOMXPath($this->getResponseDom()); + } + + /** + * Get response DOM. + * + * @return sfDomCssSelector + */ + public function getResponseDom() + { + if (null === $this->dom) + { + throw new LogicException('The DOM is not accessible because the browser response content type is not HTML.'); + } + + return $this->dom; + } + + /** + * Gets response. + * + * @return sfWebResponse + */ + abstract public function getResponse(); + + /** + * Gets request. + * + * @return sfWebRequest + */ + abstract public function getRequest(); + + /** + * Gets user. + * + * @return sfUser + */ + abstract public function getUser(); + + /** + * Gets the current exception. + * + * @return Exception + */ + public function getCurrentException() + { + return $this->currentException; + } + + /** + * Sets the current exception. + * + * @param Exception $exception An Exception instance + */ + public function setCurrentException(Exception $exception) + { + $this->currentException = $exception; + } + + /** + * Resets the current exception. + */ + public function resetCurrentException() + { + $this->currentException = null; + sfException::clearLastException(); + } + + /** + * Test for an uncaught exception. + * + * @return boolean + */ + public function checkCurrentExceptionIsEmpty() + { + return null === $this->getCurrentException() || $this->getCurrentException() instanceof sfError404Exception; + } + + /** + * Follow redirects? + * + * @throws sfException If request was not a redirect + * + * @return sfBrowserBase + */ + public function followRedirect() + { + if (null === $this->getResponse()->getHttpHeader('Location')) + { + throw new LogicException('The request was not redirected.'); + } + + return $this->get($this->getResponse()->getHttpHeader('Location')); + } + + /** + * Sets a form field in the browser. + * + * @param string $name The field name + * @param string $value The field value + * + * @return sfBrowserBase + */ + public function setField($name, $value) + { + // as we don't know yet the form, just store name/value pairs + $this->parseArgumentAsArray($name, $value, $this->fields); + + return $this; + } + + /** + * Simulates deselecting a checkbox or radiobutton. + * + * @param string $name The checkbox or radiobutton id, name or text + * + * @return sfBrowserBase + * + * @see doSelect() + */ + public function deselect($name) + { + $this->doSelect($name, false); + + return $this; + } + + /** + * Simulates selecting a checkbox or radiobutton. + * + * @param string $name The checkbox or radiobutton id, name or text + * + * @return sfBrowserBase + * + * @see doSelect() + */ + public function select($name) + { + $this->doSelect($name, true); + + return $this; + } + + /** + * Simulates selecting a checkbox or radiobutton. + * + * This method is called internally by the select() and deselect() methods. + * + * @param string $name The checkbox or radiobutton id, name or text + * @param boolean $selected If true the item will be selected + * + */ + public function doSelect($name, $selected) + { + $xpath = $this->getResponseDomXpath(); + + if ($element = $xpath->query(sprintf('//input[(@type="radio" or @type="checkbox") and (.="%s" or @id="%s" or @name="%s")]', $name, $name, $name))->item(0)) + { + if ($selected) + { + if ($element->getAttribute('type') == 'radio') + { + //we need to deselect all other radio buttons with the same name + foreach ($xpath->query(sprintf('//input[@type="radio" and @name="%s"]', $element->getAttribute('name'))) as $radio) + { + $radio->removeAttribute('checked'); + } + } + $element->setAttribute('checked', 'checked'); + } + else + { + if ($element->getAttribute('type') == 'radio') + { + throw new InvalidArgumentException('Radiobutton cannot be deselected - Select another radiobutton to deselect the current.'); + } + $element->removeAttribute('checked'); + } + } + else + { + throw new InvalidArgumentException(sprintf('Cannot find the "%s" checkbox or radiobutton.', $name)); + } + } + + /** + * Simulates a click on a link or button. + * + * Available options: + * + * * position: The position of the linked to link if several ones have the same name + * (the first one is 1, not 0) + * * method: The method to used instead of the form ones + * (useful when you need to click on a link that is converted to a form with JavaScript code) + * + * @param string|DOMElement $name The link, button text, CSS selector or DOMElement + * @param array $arguments The arguments to pass to the link + * @param array $options An array of options + * + * @return sfBrowserBase + * + * @uses doClickElement() doClick() doClickCssSelector() + */ + public function click($name, $arguments = array(), $options = array()) + { + if ($name instanceof DOMElement) + { + list($uri, $method, $parameters) = $this->doClickElement($name, $arguments, $options); + } + else + { + try + { + list($uri, $method, $parameters) = $this->doClick($name, $arguments, $options); + } + catch (InvalidArgumentException $e) + { + list($uri, $method, $parameters) = $this->doClickCssSelector($name, $arguments, $options); + } + } + + return $this->call($uri, $method, $parameters); + } + + /** + * Simulates a click on a link or button. + * + * This method is called internally by the {@link click()} method. + * + * @param string $name The link or button text + * @param array $arguments The arguments to pass to the link + * @param array $options An array of options + * + * @return array An array composed of the URI, the method and the arguments to pass to the {@link call()} call + * + * @uses getResponseDomXpath() doClickElement() + * @throws InvalidArgumentException If a matching element cannot be found + * + * @deprecated call {@link click()} using a CSS selector instead + */ + public function doClick($name, $arguments = array(), $options = array()) + { + if (false !== strpos($name, '[') || false !== strpos($name, ']')) + { + throw new InvalidArgumentException(sprintf('The name "%s" is not valid', $name)); + } + + $query = sprintf('//a[.="%s"]', $name); + $query .= sprintf('|//a/img[@alt="%s"]/ancestor::a', $name); + $query .= sprintf('|//input[((@type="submit" or @type="button") and @value="%s") or (@type="image" and @alt="%s")]', $name, $name); + $query .= sprintf('|//button[.="%s" or @id="%s" or @name="%s"]', $name, $name, $name); + + if (!$list = @$this->getResponseDomXpath()->query($query)) + { + throw new InvalidArgumentException(sprintf('The name "%s" is not valid', $name)); + } + + $position = isset($options['position']) ? $options['position'] - 1 : 0; + + if (!$item = $list->item($position)) + { + throw new InvalidArgumentException(sprintf('Cannot find the "%s" link or button (position %d).', $name, $position + 1)); + } + + return $this->doClickElement($item, $arguments, $options); + } + + /** + * Simulates a click on an element indicated by CSS selector. + * + * This method is called internally by the {@link click()} method. + * + * @param string $selector The CSS selector + * @param array $arguments The arguments to pass to the link + * @param array $options An array of options + * + * @return array An array composed of the URI, the method and the arguments to pass to the {@link call()} call + * + * @uses getResponseDomCssSelector() doClickElement() + * @throws InvalidArgumentException If a matching element cannot be found + */ + public function doClickCssSelector($selector, $arguments = array(), $options = array()) + { + $elements = $this->getResponseDomCssSelector()->matchAll($selector)->getNodes(); + $position = isset($options['position']) ? $options['position'] - 1 : 0; + + if (isset($elements[$position])) + { + return $this->doClickElement($elements[$position], $arguments, $options); + } + else + { + throw new InvalidArgumentException(sprintf('Could not find the element "%s" (position %d) in the current DOM.', $selector, $position + 1)); + } + } + + /** + * Simulates a click on the supplied DOM element. + * + * This method is called internally by the {@link click()} method. + * + * @param DOMElement $item The element being clicked + * @param array $arguments The arguments to pass to the link + * @param array $options An array of options + * + * @return array An array composed of the URI, the method and the arguments to pass to the call() call + * + * @uses getResponseDomXpath() + */ + public function doClickElement(DOMElement $item, $arguments = array(), $options = array()) + { + $method = strtolower(isset($options['method']) ? $options['method'] : 'get'); + + if ('a' == $item->nodeName) + { + if (in_array($method, array('post', 'put', 'delete'))) + { + if (isset($options['_with_csrf']) && $options['_with_csrf']) + { + $arguments['_with_csrf'] = true; + } + + return array($item->getAttribute('href'), $method, $arguments); + } + else + { + return array($item->getAttribute('href'), 'get', $arguments); + } + } + else if ('button' == $item->nodeName || ('input' == $item->nodeName && in_array($item->getAttribute('type'), array('submit', 'button', 'image')))) + { + // add the item's value to the arguments + $this->parseArgumentAsArray($item->getAttribute('name'), $item->getAttribute('value'), $arguments); + + // use the ancestor form element + do + { + if (null === $item = $item->parentNode) + { + throw new Exception('The clicked form element does not have a form ancestor.'); + } + } + while ('form' != $item->nodeName); + } + + // form attributes + $url = $item->getAttribute('action'); + if (!$url || '#' == $url) + { + $url = $this->stack[$this->stackPosition]['uri']; + } + $method = strtolower(isset($options['method']) ? $options['method'] : ($item->getAttribute('method') ? $item->getAttribute('method') : 'get')); + + // merge form default values and arguments + $defaults = array(); + $arguments = sfToolkit::arrayDeepMerge($this->fields, $arguments); + + $xpath = $this->getResponseDomXpath(); + foreach ($xpath->query('descendant::input | descendant::textarea | descendant::select', $item) as $element) + { + if ($element->hasAttribute('disabled')) + { + continue; + } + + $elementName = $element->getAttribute('name'); + $nodeName = $element->nodeName; + $value = null; + + if ($nodeName == 'input' && ($element->getAttribute('type') == 'checkbox' || $element->getAttribute('type') == 'radio')) + { + if ($element->getAttribute('checked')) + { + $value = $element->hasAttribute('value') ? $element->getAttribute('value') : '1'; + } + } + else if ($nodeName == 'input' && $element->getAttribute('type') == 'file') + { + $filename = array_key_exists($elementName, $arguments) ? $arguments[$elementName] : sfToolkit::getArrayValueForPath($arguments, $elementName, ''); + + if (is_readable($filename)) + { + $fileError = UPLOAD_ERR_OK; + $fileSize = filesize($filename); + } + else + { + $fileError = UPLOAD_ERR_NO_FILE; + $fileSize = 0; + } + + unset($arguments[$elementName]); + + $this->parseArgumentAsArray($elementName, array('name' => basename($filename), 'type' => '', 'tmp_name' => $filename, 'error' => $fileError, 'size' => $fileSize), $this->files); + } + else if ('input' == $nodeName && !in_array($element->getAttribute('type'), array('submit', 'button', 'image'))) + { + $value = $element->getAttribute('value'); + } + else if ($nodeName == 'textarea') + { + $value = ''; + foreach ($element->childNodes as $el) + { + $value .= $this->getResponseDom()->saveXML($el); + } + } + else if ($nodeName == 'select') + { + if ($multiple = $element->hasAttribute('multiple')) + { + $elementName = str_replace('[]', '', $elementName); + $value = array(); + } + else + { + $value = null; + } + + $found = false; + foreach ($xpath->query('descendant::option', $element) as $option) + { + if ($option->getAttribute('selected')) + { + $found = true; + if ($multiple) + { + $value[] = $option->getAttribute('value'); + } + else + { + $value = $option->getAttribute('value'); + } + } + } + + // if no option is selected and if it is a simple select box, take the first option as the value + $option = $xpath->query('descendant::option', $element)->item(0); + if (!$found && !$multiple && $option instanceof DOMElement) + { + $value = $option->getAttribute('value'); + } + } + + if (null !== $value) + { + $this->parseArgumentAsArray($elementName, $value, $defaults); + } + } + + // create request parameters + $arguments = sfToolkit::arrayDeepMerge($defaults, $arguments); + if (in_array($method, array('post', 'put', 'delete'))) + { + return array($url, $method, $arguments); + } + else + { + $queryString = http_build_query($arguments, null, '&'); + $sep = false === strpos($url, '?') ? '?' : '&'; + + return array($url.($queryString ? $sep.$queryString : ''), 'get', array()); + } + } + + /** + * Parses arguments as array + * + * @param string $name The argument name + * @param string $value The argument value + * @param array $vars + */ + protected function parseArgumentAsArray($name, $value, &$vars) + { + if (false !== $pos = strpos($name, '[')) + { + $var = &$vars; + $tmps = array_filter(preg_split('/(\[ | \[\] | \])/x', $name), create_function('$s', 'return $s !== "";')); + foreach ($tmps as $tmp) + { + $var = &$var[$tmp]; + } + if ($var && '[]' === substr($name, -2)) + { + if (!is_array($var)) + { + $var = array($var); + } + $var[] = $value; + } + else + { + $var = $value; + } + } + else + { + $vars[$name] = $value; + } + } + + /** + * Reset browser to original state + * + * @return sfBrowserBase + */ + public function restart() + { + $this->newSession(); + $this->cookieJar = array(); + $this->stack = array(); + $this->fields = array(); + $this->vars = array(); + $this->dom = null; + $this->stackPosition = -1; + + return $this; + } + + /** + * Shutdown function to clean up and remove sessions + * + * @return void + */ + public function shutdown() + { + $this->checkCurrentExceptionIsEmpty(); + } + + /** + * Fixes uri removing # declarations and front controller. + * + * @param string $uri The URI to fix + * @return string The fixed uri + */ + public function fixUri($uri) + { + // remove absolute information if needed (to be able to do follow redirects, click on links, ...) + if (0 === strpos($uri, 'http')) + { + // detect secure request + if (0 === strpos($uri, 'https')) + { + $this->defaultServerArray['HTTPS'] = 'on'; + } + else + { + unset($this->defaultServerArray['HTTPS']); + } + + $uri = preg_replace('#^https?\://[^/]+/#', '/', $uri); + } + $uri = str_replace('/index.php', '', $uri); + + // # as a uri + if ($uri && '#' == $uri[0]) + { + $uri = $this->stack[$this->stackPosition]['uri'].$uri; + } + + return $uri; + } + + /** + * Creates a new session in the browser. + * + * @return void + */ + protected function newSession() + { + $this->defaultServerArray['session_id'] = $_SERVER['session_id'] = md5(uniqid(rand(), true)); + } +} diff --git a/lib/vendor/symfony/lib/util/.svn/text-base/sfCallable.class.php.svn-base b/lib/vendor/symfony/lib/util/.svn/text-base/sfCallable.class.php.svn-base new file mode 100644 index 0000000..f540858 --- /dev/null +++ b/lib/vendor/symfony/lib/util/.svn/text-base/sfCallable.class.php.svn-base @@ -0,0 +1,64 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfCallable represents a PHP callable. + * + * @package symfony + * @subpackage util + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfCallable +{ + protected + $callable = null; + + /** + * Constructor. + * + * @param mixed $callable A valid PHP callable (must be valid when calling the call() method) + */ + public function __construct($callable) + { + $this->callable = $callable; + } + + /** + * Returns the current callable. + * + * @return mixed The current callable + */ + public function getCallable() + { + return $this->callable; + } + + /** + * Calls the current callable with the given arguments. + * + * The callable is called with the arguments given to this method. + * + * This method throws an exception if the callable is not valid. + * This check is not done during the object construction to allow + * you to load the callable as late as possible. + */ + public function call() + { + if (!is_callable($this->callable)) + { + throw new sfException(sprintf('"%s" is not a valid callable.', is_array($this->callable) ? sprintf('%s:%s', is_object($this->callable[0]) ? get_class($this->callable[0]) : $this->callable[0], $this->callable[1]) : (is_object($this->callable) ? sprintf('Object(%s)', get_class($this->callable)) : var_export($this->callable, true)))); + } + + $arguments = func_get_args(); + + return call_user_func_array($this->callable, $arguments); + } +} diff --git a/lib/vendor/symfony/lib/util/.svn/text-base/sfClassManipulator.class.php.svn-base b/lib/vendor/symfony/lib/util/.svn/text-base/sfClassManipulator.class.php.svn-base new file mode 100644 index 0000000..9f3ade6 --- /dev/null +++ b/lib/vendor/symfony/lib/util/.svn/text-base/sfClassManipulator.class.php.svn-base @@ -0,0 +1,314 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfClassManipulator manipulates class code. + * + * @package symfony + * @subpackage util + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfClassManipulator +{ + static protected $signatureTokens = array( + T_FINAL, + T_ABSTRACT, + T_STATIC, + T_PUBLIC, + T_PROTECTED, + T_PRIVATE, + T_FUNCTION, + ); + + protected $code = '', $file = false; + + /** + * Constructor. + * + * @param string $code The code to manipulate + */ + public function __construct($code) + { + $this->code = $code; + } + + /** + * Creates a manipulator object from a file. + * + * @param string $file A file name + * + * @return sfClassManipulator A sfClassManipulator instance + */ + static public function fromFile($file) + { + $manipulator = new self(file_get_contents($file)); + $manipulator->setFile($file); + + return $manipulator; + } + + /** + * Saves the code back to the associated file. + * + * This only works if you have bound the instance with a file with the setFile() method. + * + * @throw LogicException if no file is associated with the instance + */ + public function save() + { + if (!$this->file) + { + throw new LogicException('Unable to save the code as no file has been provided.'); + } + + file_put_contents($this->file, $this->code); + } + + /** + * Gets the modified code. + * + * @return string The modified code + */ + public function getCode() + { + return $this->code; + } + + /** + * Gets the associated file. + * + * @return string The associated file + */ + public function getFile() + { + return $this->file; + } + + /** + * Sets the file associated with this instance. + * + * @param string A file name + */ + public function setFile($file) + { + $this->file = $file; + } + + /** + * Wraps an existing method with some code. + * + * @param string $method The method name to change + * @param string $topCode The code to add at the top of the method + * @param string $bottomCode The code to add at the bottom of the method + */ + public function wrapMethod($method, $topCode = '', $bottomCode = '') + { + $code = ''; + $insideSetup = -1; + $parens = 0; + foreach (token_get_all($this->code) as $token) + { + if (isset($token[1])) + { + if (-1 == $insideSetup && T_FUNCTION == $token[0]) + { + $insideSetup = 0; + } + elseif (0 == $insideSetup && T_STRING == $token[0]) + { + $insideSetup = $method == $token[1] ? 1 : -1; + } + + $code .= $token[1]; + } + else + { + if (1 == $insideSetup && '{' == $token) + { + if (!$parens) + { + $code .= $topCode ? $token.PHP_EOL.' '.$topCode : $token; + } + else + { + $code .= $token; + } + + ++$parens; + } + elseif (1 == $insideSetup && '}' == $token) + { + --$parens; + + if (!$parens) + { + $insideSetup = -1; + + $code .= $bottomCode ? ' '.$bottomCode.PHP_EOL.' '.$token : $token; + } + else + { + $code .= $token; + } + } + else + { + $code .= $token; + } + } + } + + return $this->code = $code; + } + + /** + * Filters each line of the given method through a callable. + * + * @param string $method The method name + * @param mixed $callable A PHP callable that accepts and returns one line of PHP code + */ + public function filterMethod($method, $callable) + { + $line = ''; + $code = ''; + $insideSetup = -1; + $parens = 0; + $break = false; + + $tokens = token_get_all($this->code); + for ($i = 0; $i < count($tokens); $i++) + { + $token = $tokens[$i]; + + if (is_array($token)) + { + $line .= $token[1]; + + if (-1 == $insideSetup && T_FUNCTION == $token[0]) + { + $insideSetup = 0; + } + elseif (0 == $insideSetup && T_STRING == $token[0]) + { + $insideSetup = $method == $token[1] ? 1 : -1; + } + } + else + { + if (1 == $insideSetup && '{' == $token) + { + ++$parens; + } + elseif (1 == $insideSetup && '}' == $token) + { + --$parens; + + if (!$parens) + { + $break = true; + } + } + + $line .= $token; + } + + $lines = preg_split('/(\r?\n)/', $line, null, PREG_SPLIT_DELIM_CAPTURE); + if (count($lines) > 1 || $break) + { + $line = $break ? '' : array_pop($lines); + foreach (array_chunk($lines, 2) as $chunk) + { + list($l, $eol) = array_pad($chunk, 2, ''); + + if (1 == $insideSetup) + { + list($before, $setup) = $this->splitSetup($l); + $code .= $before; + $code .= call_user_func($callable, $setup.$eol); + } + else + { + $code .= $l.$eol; + } + } + } + + if ($break) + { + $insideSetup = -1; + $break = false; + } + } + + if ($line) + { + $code .= $line; + } + + return $this->code = $code; + } + + protected function splitSetup($line) + { + $before = ''; + $setup = ''; + + if ($line) + { + if (false === stripos($line, 'getTokenValue($token); + if (is_array($token) && in_array($token[0], self::$signatureTokens)) + { + $inSignature = true; + } + elseif ($inSignature && !preg_match('/\s+/', $value)) + { + // clean up + preg_match('/^\s*/', $setup, $match); + $before = implode('', array_map(array($this, 'getTokenValue'), $tokens)).$value.$match[0]; + $setup = substr($setup, strlen($match[0])); + + return array($before, $setup); + } + + $setup = $value.$setup; + } + } + + return array($before, $setup); + } + + /** + * Returns a token's string value. + * + * @param array|string $token + * + * @return string + */ + protected function getTokenValue($token) + { + return is_array($token) ? $token[1] : $token; + } +} diff --git a/lib/vendor/symfony/lib/util/.svn/text-base/sfContext.class.php.svn-base b/lib/vendor/symfony/lib/util/.svn/text-base/sfContext.class.php.svn-base new file mode 100644 index 0000000..945ce8b --- /dev/null +++ b/lib/vendor/symfony/lib/util/.svn/text-base/sfContext.class.php.svn-base @@ -0,0 +1,613 @@ + + * (c) 2004-2006 Sean Kerr + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfContext provides information about the current application context, such as + * the module and action names and the module directory. References to the + * main symfony instances are also provided. + * + * @package symfony + * @subpackage util + * @author Fabien Potencier + * @author Sean Kerr + * @version SVN: $Id$ + */ +class sfContext implements ArrayAccess +{ + protected + $dispatcher = null, + $configuration = null, + $mailerConfiguration = array(), + $factories = array(); + + protected static + $instances = array(), + $current = 'default'; + + /** + * Creates a new context instance. + * + * @param sfApplicationConfiguration $configuration An sfApplicationConfiguration instance + * @param string $name A name for this context (application name by default) + * @param string $class The context class to use (sfContext by default) + * + * @return sfContext An sfContext instance + */ + static public function createInstance(sfApplicationConfiguration $configuration, $name = null, $class = __CLASS__) + { + if (null === $name) + { + $name = $configuration->getApplication(); + } + + self::$current = $name; + + self::$instances[$name] = new $class(); + + if (!self::$instances[$name] instanceof sfContext) + { + throw new sfFactoryException(sprintf('Class "%s" is not of the type sfContext.', $class)); + } + + self::$instances[$name]->initialize($configuration); + + return self::$instances[$name]; + } + + /** + * Initializes the current sfContext instance. + * + * @param sfApplicationConfiguration $configuration An sfApplicationConfiguration instance + */ + public function initialize(sfApplicationConfiguration $configuration) + { + $this->configuration = $configuration; + $this->dispatcher = $configuration->getEventDispatcher(); + + try + { + $this->loadFactories(); + } + catch (sfException $e) + { + $e->printStackTrace(); + } + catch (Exception $e) + { + sfException::createFromException($e)->printStackTrace(); + } + + $this->dispatcher->connect('template.filter_parameters', array($this, 'filterTemplateParameters')); + + // register our shutdown function + register_shutdown_function(array($this, 'shutdown')); + } + + /** + * Retrieves the singleton instance of this class. + * + * @param string $name The name of the sfContext to retrieve. + * @param string $class The context class to use (sfContext by default) + * + * @return sfContext An sfContext implementation instance. + */ + static public function getInstance($name = null, $class = __CLASS__) + { + if (null === $name) + { + $name = self::$current; + } + + if (!isset(self::$instances[$name])) + { + throw new sfException(sprintf('The "%s" context does not exist.', $name)); + } + + return self::$instances[$name]; + } + + /** + * Checks to see if there has been a context created + * + * @param string $name The name of the sfContext to check for + * + * @return bool true is instanced, otherwise false + */ + + public static function hasInstance($name = null) + { + if (null === $name) + { + $name = self::$current; + } + + return isset(self::$instances[$name]); + } + + /** + * Loads the symfony factories. + */ + public function loadFactories() + { + if (sfConfig::get('sf_use_database')) + { + // setup our database connections + $this->factories['databaseManager'] = new sfDatabaseManager($this->configuration, array('auto_shutdown' => false)); + } + + // create a new action stack + $this->factories['actionStack'] = new sfActionStack(); + + if (sfConfig::get('sf_debug') && sfConfig::get('sf_logging_enabled')) + { + $timer = sfTimerManager::getTimer('Factories'); + } + + // include the factories configuration + require($this->configuration->getConfigCache()->checkConfig('config/factories.yml')); + + $this->dispatcher->notify(new sfEvent($this, 'context.load_factories')); + + if (sfConfig::get('sf_debug') && sfConfig::get('sf_logging_enabled')) + { + $timer->addTime(); + } + } + + /** + * Dispatches the current request. + */ + public function dispatch() + { + $this->getController()->dispatch(); + } + + /** + * Sets the current context to something else + * + * @param string $name The name of the context to switch to + * + */ + public static function switchTo($name) + { + if (!isset(self::$instances[$name])) + { + $currentConfiguration = sfContext::getInstance()->getConfiguration(); + sfContext::createInstance(ProjectConfiguration::getApplicationConfiguration($name, $currentConfiguration->getEnvironment(), $currentConfiguration->isDebug())); + } + + self::$current = $name; + + sfContext::getInstance()->getConfiguration()->activate(); + } + + /** + * Returns the configuration instance. + * + * @return sfApplicationConfiguration The current application configuration instance + */ + public function getConfiguration() + { + return $this->configuration; + } + + /** + * Retrieves the current event dispatcher. + * + * @return sfEventDispatcher An sfEventDispatcher instance + */ + public function getEventDispatcher() + { + return $this->dispatcher; + } + + /** + * Retrieve the action name for this context. + * + * @return string The currently executing action name, if one is set, + * otherwise null. + */ + public function getActionName() + { + // get the last action stack entry + if ($this->factories['actionStack'] && $lastEntry = $this->factories['actionStack']->getLastEntry()) + { + return $lastEntry->getActionName(); + } + } + + + /** + * Retrieve the ActionStack. + * + * @return sfActionStack the sfActionStack instance + */ + public function getActionStack() + { + return $this->factories['actionStack']; + } + + /** + * Retrieve the controller. + * + * @return sfController The current sfController implementation instance. + */ + public function getController() + { + return isset($this->factories['controller']) ? $this->factories['controller'] : null; + } + + /** + * Retrieves the mailer. + * + * @return sfMailer The current sfMailer implementation instance. + */ + public function getMailer() + { + if (!isset($this->factories['mailer'])) + { + $this->factories['mailer'] = new $this->mailerConfiguration['class']($this->dispatcher, $this->mailerConfiguration); + } + + return $this->factories['mailer']; + } + + public function setMailerConfiguration($configuration) + { + $this->mailerConfiguration = $configuration; + } + + /** + * Retrieve the logger. + * + * @return sfLogger The current sfLogger implementation instance. + */ + public function getLogger() + { + if (!isset($this->factories['logger'])) + { + $this->factories['logger'] = new sfNoLogger($this->dispatcher); + } + + return $this->factories['logger']; + } + + /** + * Retrieve a database connection from the database manager. + * + * This is a shortcut to manually getting a connection from an existing + * database implementation instance. + * + * If the [sf_use_database] setting is off, this will return null. + * + * @param name $name A database name. + * + * @return mixed A database instance. + * + * @throws sfDatabaseException if the requested database name does not exist. + */ + public function getDatabaseConnection($name = 'default') + { + if (null !== $this->factories['databaseManager']) + { + return $this->factories['databaseManager']->getDatabase($name)->getConnection(); + } + + return null; + } + + /** + * Retrieve the database manager. + * + * @return sfDatabaseManager The current sfDatabaseManager instance. + */ + public function getDatabaseManager() + { + return isset($this->factories['databaseManager']) ? $this->factories['databaseManager'] : null; + } + + /** + * Retrieve the module directory for this context. + * + * @return string An absolute filesystem path to the directory of the + * currently executing module, if one is set, otherwise null. + */ + public function getModuleDirectory() + { + // get the last action stack entry + if (isset($this->factories['actionStack']) && $lastEntry = $this->factories['actionStack']->getLastEntry()) + { + return sfConfig::get('sf_app_module_dir').'/'.$lastEntry->getModuleName(); + } + } + + /** + * Retrieve the module name for this context. + * + * @return string The currently executing module name, if one is set, + * otherwise null. + */ + public function getModuleName() + { + // get the last action stack entry + if (isset($this->factories['actionStack']) && $lastEntry = $this->factories['actionStack']->getLastEntry()) + { + return $lastEntry->getModuleName(); + } + } + + /** + * Retrieve the request. + * + * @return sfRequest The current sfRequest implementation instance. + */ + public function getRequest() + { + return isset($this->factories['request']) ? $this->factories['request'] : null; + } + + /** + * Retrieve the response. + * + * @return sfResponse The current sfResponse implementation instance. + */ + public function getResponse() + { + return isset($this->factories['response']) ? $this->factories['response'] : null; + } + + /** + * Set the response object. + * + * @param sfResponse $response An sfResponse instance. + * + * @return void + */ + public function setResponse($response) + { + $this->factories['response'] = $response; + } + + /** + * Retrieve the storage. + * + * @return sfStorage The current sfStorage implementation instance. + */ + public function getStorage() + { + return isset($this->factories['storage']) ? $this->factories['storage'] : null; + } + + /** + * Retrieve the view cache manager + * + * @return sfViewCacheManager The current sfViewCacheManager implementation instance. + */ + public function getViewCacheManager() + { + return isset($this->factories['viewCacheManager']) ? $this->factories['viewCacheManager'] : null; + } + + /** + * Retrieve the i18n instance + * + * @return sfI18N The current sfI18N implementation instance. + */ + public function getI18N() + { + if (!sfConfig::get('sf_i18n')) + { + throw new sfConfigurationException('You must enable i18n support in your settings.yml configuration file.'); + } + + return $this->factories['i18n']; + } + + /** + * Retrieve the routing instance. + * + * @return sfRouting The current sfRouting implementation instance. + */ + public function getRouting() + { + return isset($this->factories['routing']) ? $this->factories['routing'] : null; + } + + /** + * Retrieve the user. + * + * @return sfUser The current sfUser implementation instance. + */ + public function getUser() + { + return isset($this->factories['user']) ? $this->factories['user'] : null; + } + + /** + * Returns the configuration cache. + * + * @return sfConfigCache A sfConfigCache instance + */ + public function getConfigCache() + { + return $this->configuration->getConfigCache(); + } + + /** + * Returns true if the context object exists (implements the ArrayAccess interface). + * + * @param string $name The name of the context object + * + * @return Boolean true if the context object exists, false otherwise + */ + public function offsetExists($name) + { + return $this->has($name); + } + + /** + * Returns the context object associated with the name (implements the ArrayAccess interface). + * + * @param string $name The offset of the value to get + * + * @return mixed The context object if exists, null otherwise + */ + public function offsetGet($name) + { + return $this->get($name); + } + + /** + * Sets the context object associated with the offset (implements the ArrayAccess interface). + * + * @param string $offset The parameter name + * @param string $value The parameter value + */ + public function offsetSet($offset, $value) + { + $this->set($offset, $value); + } + + /** + * Unsets the context object associated with the offset (implements the ArrayAccess interface). + * + * @param string $offset The parameter name + */ + public function offsetUnset($offset) + { + unset($this->factories[$offset]); + } + + /** + * Gets an object from the current context. + * + * @param string $name The name of the object to retrieve + * + * @return object The object associated with the given name + */ + public function get($name) + { + if (!$this->has($name)) + { + throw new sfException(sprintf('The "%s" object does not exist in the current context.', $name)); + } + + return $this->factories[$name]; + } + + /** + * Puts an object in the current context. + * + * @param string $name The name of the object to store + * @param object $object The object to store + */ + public function set($name, $object) + { + $this->factories[$name] = $object; + } + + /** + * Returns true if an object is currently stored in the current context with the given name, false otherwise. + * + * @param string $name The object name + * + * @return bool true if the object is not null, false otherwise + */ + public function has($name) + { + return isset($this->factories[$name]); + } + + /** + * Listens to the template.filter_parameters event. + * + * @param sfEvent $event An sfEvent instance + * @param array $parameters An array of template parameters to filter + * + * @return array The filtered parameters array + */ + public function filterTemplateParameters(sfEvent $event, $parameters) + { + $parameters['sf_context'] = $this; + $parameters['sf_request'] = $this->factories['request']; + $parameters['sf_params'] = $this->factories['request']->getParameterHolder(); + $parameters['sf_response'] = $this->factories['response']; + $parameters['sf_user'] = $this->factories['user']; + + return $parameters; + } + + /** + * Calls methods defined via sfEventDispatcher. + * + * If a method cannot be found via sfEventDispatcher, the method name will + * be parsed to magically handle getMyFactory() and setMyFactory() methods. + * + * @param string $method The method name + * @param array $arguments The method arguments + * + * @return mixed The returned value of the called method + * + * @throws sfException if call fails + */ + public function __call($method, $arguments) + { + $event = $this->dispatcher->notifyUntil(new sfEvent($this, 'context.method_not_found', array('method' => $method, 'arguments' => $arguments))); + if (!$event->isProcessed()) + { + $verb = substr($method, 0, 3); // get | set + $factory = strtolower(substr($method, 3)); // factory name + + if ('get' == $verb && $this->has($factory)) + { + return $this->factories[$factory]; + } + else if ('set' == $verb && isset($arguments[0])) + { + return $this->set($factory, $arguments[0]); + } + + throw new sfException(sprintf('Call to undefined method %s::%s.', get_class($this), $method)); + } + + return $event->getReturnValue(); + } + + /** + * Execute the shutdown procedure. + * + * @return void + */ + public function shutdown() + { + // shutdown all factories + if($this->has('user')) + { + $this->getUser()->shutdown(); + $this->getStorage()->shutdown(); + } + + if ($this->has('routing')) + { + $this->getRouting()->shutdown(); + } + + if (sfConfig::get('sf_use_database')) + { + $this->getDatabaseManager()->shutdown(); + } + + if (sfConfig::get('sf_logging_enabled')) + { + $this->getLogger()->shutdown(); + } + } +} diff --git a/lib/vendor/symfony/lib/util/.svn/text-base/sfDomCssSelector.class.php.svn-base b/lib/vendor/symfony/lib/util/.svn/text-base/sfDomCssSelector.class.php.svn-base new file mode 100644 index 0000000..c65c026 --- /dev/null +++ b/lib/vendor/symfony/lib/util/.svn/text-base/sfDomCssSelector.class.php.svn-base @@ -0,0 +1,626 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfDomCssSelector allows to navigate a DOM with CSS selector. + * + * Based on getElementsBySelector version 0.4 - Simon Willison, March 25th 2003 + * http://simon.incutio.com/archive/2003/03/25/getElementsBySelector + * + * Some methods based on the jquery library + * + * @package symfony + * @subpackage util + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfDomCssSelector implements Countable, Iterator +{ + public $nodes = array(); + + private $count; + + public function __construct($nodes) + { + if (!is_array($nodes)) + { + $nodes = array($nodes); + } + + $this->nodes = $nodes; + } + + public function getNodes() + { + return $this->nodes; + } + + public function getNode() + { + return $this->nodes ? $this->nodes[0] : null; + } + + public function getValue() + { + return $this->nodes[0]->nodeValue; + } + + public function getValues() + { + $values = array(); + foreach ($this->nodes as $node) + { + $values[] = $node->nodeValue; + } + + return $values; + } + + public function matchSingle($selector) + { + $nodes = $this->getElements($selector); + + return $nodes ? new sfDomCssSelector($nodes[0]) : new sfDomCssSelector(array()); + } + + public function matchAll($selector) + { + $nodes = $this->getElements($selector); + + return $nodes ? new sfDomCssSelector($nodes) : new sfDomCssSelector(array()); + } + + protected function getElements($selector) + { + $nodes = array(); + foreach ($this->nodes as $node) + { + $result_nodes = $this->getElementsForNode($selector, $node); + if ($result_nodes) + { + $nodes = array_merge($nodes, $result_nodes); + } + } + + foreach ($nodes as $node) + { + $node->removeAttribute('sf_matched'); + } + + return $nodes; + } + + protected function getElementsForNode($selector, $root_node) + { + $all_nodes = array(); + foreach ($this->tokenize_selectors($selector) as $selector) + { + $nodes = array($root_node); + foreach ($this->tokenize($selector) as $token) + { + $combinator = $token['combinator']; + $selector = $token['selector']; + + $token = trim($token['name']); + + $pos = strpos($token, '#'); + if (false !== $pos && preg_match('/^[A-Za-z0-9]*$/', substr($token, 0, $pos))) + { + // Token is an ID selector + $tagName = substr($token, 0, $pos); + $id = substr($token, $pos + 1); + $xpath = new DomXPath($root_node); + $element = $xpath->query(sprintf("//*[@id = '%s']", $id))->item(0); + if (!$element || ($tagName && strtolower($element->nodeName) != $tagName)) + { + // tag with that ID not found + return array(); + } + + // Set nodes to contain just this element + $nodes = array($element); + $nodes = $this->matchMultipleCustomSelectors($nodes, $selector); + + continue; // Skip to next token + } + + $pos = strpos($token, '.'); + if (false !== $pos && preg_match('/^[A-Za-z0-9\*]*$/', substr($token, 0, $pos))) + { + // Token contains a class selector + $tagName = substr($token, 0, $pos); + if (!$tagName) + { + $tagName = '*'; + } + $className = substr($token, $pos + 1); + + // Get elements matching tag, filter them for class selector + $founds = $this->getElementsByTagName($nodes, $tagName, $combinator); + $nodes = array(); + foreach ($founds as $found) + { + if (preg_match('/(^|\s+)'.$className.'($|\s+)/', $found->getAttribute('class'))) + { + $nodes[] = $found; + } + } + + $nodes = $this->matchMultipleCustomSelectors($nodes, $selector); + + continue; // Skip to next token + } + + // Code to deal with attribute selectors + if (preg_match('/^(\w+|\*)(\[.+\])$/', $token, $matches)) + { + $tagName = $matches[1] ? $matches[1] : '*'; + preg_match_all('/ + \[ + ([\w\-]+) # attribute + ([=~\|\^\$\*]?) # modifier (optional) + =? # equal (optional) + ( + "([^"]*)" # quoted value (optional) + | + ([^\]]*) # non quoted value (optional) + ) + \] + /x', $matches[2], $matches, PREG_SET_ORDER); + + // Grab all of the tagName elements within current node + $founds = $this->getElementsByTagName($nodes, $tagName, $combinator); + $nodes = array(); + foreach ($founds as $found) + { + $ok = false; + foreach ($matches as $match) + { + $attrName = $match[1]; + $attrOperator = $match[2]; + $attrValue = $match[4] === '' ? (isset($match[5]) ? $match[5] : '') : $match[4]; + + switch ($attrOperator) + { + case '=': // Equality + $ok = $found->getAttribute($attrName) == $attrValue; + break; + case '~': // Match one of space seperated words + $ok = preg_match('/\b'.preg_quote($attrValue, '/').'\b/', $found->getAttribute($attrName)); + break; + case '|': // Match start with value followed by optional hyphen + $ok = preg_match('/^'.preg_quote($attrValue, '/').'-?/', $found->getAttribute($attrName)); + break; + case '^': // Match starts with value + $ok = 0 === strpos($found->getAttribute($attrName), $attrValue); + break; + case '$': // Match ends with value + $ok = $attrValue == substr($found->getAttribute($attrName), -strlen($attrValue)); + break; + case '*': // Match ends with value + $ok = false !== strpos($found->getAttribute($attrName), $attrValue); + break; + default : + // Just test for existence of attribute + $ok = $found->hasAttribute($attrName); + } + + if (false == $ok) + { + break; + } + } + + if ($ok) + { + $nodes[] = $found; + } + } + + continue; // Skip to next token + } + + // If we get here, token is JUST an element (not a class or ID selector) + $nodes = $this->getElementsByTagName($nodes, $token, $combinator); + + $nodes = $this->matchMultipleCustomSelectors($nodes, $selector); + } + + foreach ($nodes as $node) + { + if (!$node->getAttribute('sf_matched')) + { + $node->setAttribute('sf_matched', true); + $all_nodes[] = $node; + } + } + } + + return $all_nodes; + } + + protected function getElementsByTagName($nodes, $tagName, $combinator = ' ') + { + $founds = array(); + foreach ($nodes as $node) + { + switch ($combinator) + { + case ' ': + // Descendant selector + foreach ($node->getElementsByTagName($tagName) as $element) + { + $founds[] = $element; + } + break; + case '>': + // Child selector + foreach ($node->childNodes as $element) + { + if ($tagName == $element->nodeName) + { + $founds[] = $element; + } + } + break; + case '+': + // Adjacent selector + $element = $node->nextSibling; + if ($element && '#text' == $element->nodeName) + { + $element = $element->nextSibling; + } + + if ($element && $tagName == $element->nodeName) + { + $founds[] = $element; + } + break; + default: + throw new Exception(sprintf('Unrecognized combinator "%s".', $combinator)); + } + } + + return $founds; + } + + protected function tokenize_selectors($selector) + { + // split tokens by , except in an attribute selector + $tokens = array(); + $quoted = false; + $token = ''; + for ($i = 0, $max = strlen($selector); $i < $max; $i++) + { + if (',' == $selector[$i] && !$quoted) + { + $tokens[] = trim($token); + $token = ''; + } + else if ('"' == $selector[$i]) + { + $token .= $selector[$i]; + $quoted = $quoted ? false : true; + } + else + { + $token .= $selector[$i]; + } + } + if ($token) + { + $tokens[] = trim($token); + } + + return $tokens; + } + + protected function tokenize($selector) + { + // split tokens by space except if space is in an attribute selector + $tokens = array(); + $combinators = array(' ', '>', '+'); + $quoted = false; + $token = array('combinator' => ' ', 'name' => ''); + for ($i = 0, $max = strlen($selector); $i < $max; $i++) + { + if (in_array($selector[$i], $combinators) && !$quoted) + { + // remove all whitespaces around the combinator + $combinator = $selector[$i]; + while (in_array($selector[$i + 1], $combinators)) + { + if (' ' != $selector[++$i]) + { + $combinator = $selector[$i]; + } + } + + $tokens[] = $token; + $token = array('combinator' => $combinator, 'name' => ''); + } + else if ('"' == $selector[$i]) + { + $token['name'] .= $selector[$i]; + $quoted = $quoted ? false : true; + } + else + { + $token['name'] .= $selector[$i]; + } + } + if ($token['name']) + { + $tokens[] = $token; + } + + foreach ($tokens as &$token) + { + list($token['name'], $token['selector']) = $this->tokenize_selector_name($token['name']); + } + + return $tokens; + } + + protected function tokenize_selector_name($token_name) + { + // split custom selector + $quoted = false; + $name = ''; + $selector = ''; + $in_selector = false; + for ($i = 0, $max = strlen($token_name); $i < $max; $i++) + { + if ('"' == $token_name[$i]) + { + $quoted = $quoted ? false : true; + } + + if (!$quoted && ':' == $token_name[$i]) + { + $in_selector = true; + } + + if ($in_selector) + { + $selector .= $token_name[$i]; + } + else + { + $name .= $token_name[$i]; + } + } + + return array($name, $selector); + } + + protected function matchMultipleCustomSelectors($nodes, $selector) + { + if (!$selector) + { + return $nodes; + } + + foreach ($this->split_custom_selector($selector) as $selector) { + $nodes = $this->matchCustomSelector($nodes, $selector); + } + return $nodes; + } + + protected function matchCustomSelector($nodes, $selector) + { + if (!$selector) + { + return $nodes; + } + + $selector = $this->tokenize_custom_selector($selector); + $matchingNodes = array(); + for ($i = 0, $max = count($nodes); $i < $max; $i++) + { + switch ($selector['selector']) + { + case 'contains': + if (false !== strpos($nodes[$i]->textContent, $selector['parameter'])) + { + $matchingNodes[] = $nodes[$i]; + } + break; + case 'nth-child': + if ($nodes[$i] === $this->nth($nodes[$i]->parentNode->firstChild, (integer) $selector['parameter'])) + { + $matchingNodes[] = $nodes[$i]; + } + break; + case 'first-child': + if ($nodes[$i] === $this->nth($nodes[$i]->parentNode->firstChild)) + { + $matchingNodes[] = $nodes[$i]; + } + break; + case 'last-child': + if ($nodes[$i] === $this->nth($nodes[$i]->parentNode->lastChild, 1, 'previousSibling')) + { + $matchingNodes[] = $nodes[$i]; + } + break; + case 'lt': + if ($i < (integer) $selector['parameter']) + { + $matchingNodes[] = $nodes[$i]; + } + break; + case 'gt': + if ($i > (integer) $selector['parameter']) + { + $matchingNodes[] = $nodes[$i]; + } + break; + case 'odd': + if ($i % 2) + { + $matchingNodes[] = $nodes[$i]; + } + break; + case 'even': + if (0 == $i % 2) + { + $matchingNodes[] = $nodes[$i]; + } + break; + case 'nth': + case 'eq': + if ($i == (integer) $selector['parameter']) + { + $matchingNodes[] = $nodes[$i]; + } + break; + case 'first': + if ($i == 0) + { + $matchingNodes[] = $nodes[$i]; + } + break; + case 'last': + if ($i == $max - 1) + { + $matchingNodes[] = $nodes[$i]; + } + break; + default: + throw new Exception(sprintf('Unrecognized selector "%s".', $selector['selector'])); + } + } + + return $matchingNodes; + } + + protected function split_custom_selector($selectors) + { + if (!preg_match_all('/ + : + (?:[a-zA-Z0-9\-]+) + (?: + \( + (?: + ("|\')(?:.*?)?\1 + | + (?:.*?) + ) + \) + )? + /x', $selectors, $matches, PREG_PATTERN_ORDER)) + { + throw new Exception(sprintf('Unable to split custom selector "%s".', $selectors)); + } + return $matches[0]; + } + + protected function tokenize_custom_selector($selector) + { + if (!preg_match('/ + ([a-zA-Z0-9\-]+) + (?: + \( + (?: + ("|\')(.*)?\2 + | + (.*?) + ) + \) + )? + /x', substr($selector, 1), $matches)) + { + throw new Exception(sprintf('Unable to parse custom selector "%s".', $selector)); + } + return array('selector' => $matches[1], 'parameter' => isset($matches[3]) ? ($matches[3] ? $matches[3] : $matches[4]) : ''); + } + + protected function nth($cur, $result = 1, $dir = 'nextSibling') + { + $num = 0; + for (; $cur; $cur = $cur->$dir) + { + if (1 == $cur->nodeType) + { + ++$num; + } + + if ($num == $result) + { + return $cur; + } + } + } + + /** + * Reset the array to the beginning (as required for the Iterator interface). + */ + public function rewind() + { + reset($this->nodes); + + $this->count = count($this->nodes); + } + + /** + * Get the key associated with the current value (as required by the Iterator interface). + * + * @return string The key + */ + public function key() + { + return key($this->nodes); + } + + /** + * Escapes and return the current value (as required by the Iterator interface). + * + * @return mixed The escaped value + */ + public function current() + { + return current($this->nodes); + } + + /** + * Moves to the next element (as required by the Iterator interface). + */ + public function next() + { + next($this->nodes); + + $this->count --; + } + + /** + * Returns true if the current element is valid (as required by the Iterator interface). + * + * The current element will not be valid if {@link next()} has fallen off the + * end of the array or if there are no elements in the array and {@link + * rewind()} was called. + * + * @return bool The validity of the current element; true if it is valid + */ + public function valid() + { + return $this->count > 0; + } + + /** + * Returns the number of matching nodes (implements Countable). + * + * @param integer The number of matching nodes + */ + public function count() + { + return count($this->nodes); + } +} diff --git a/lib/vendor/symfony/lib/util/.svn/text-base/sfFinder.class.php.svn-base b/lib/vendor/symfony/lib/util/.svn/text-base/sfFinder.class.php.svn-base new file mode 100644 index 0000000..879dd54 --- /dev/null +++ b/lib/vendor/symfony/lib/util/.svn/text-base/sfFinder.class.php.svn-base @@ -0,0 +1,793 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + + +/** + * + * Allow to build rules to find files and directories. + * + * All rules may be invoked several times, except for ->in() method. + * Some rules are cumulative (->name() for example) whereas others are destructive + * (most recent value is used, ->maxdepth() method for example). + * + * All methods return the current sfFinder object to allow easy chaining: + * + * $files = sfFinder::type('file')->name('*.php')->in(.); + * + * Interface loosely based on perl File::Find::Rule module. + * + * @package symfony + * @subpackage util + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfFinder +{ + protected $type = 'file'; + protected $names = array(); + protected $prunes = array(); + protected $discards = array(); + protected $execs = array(); + protected $mindepth = 0; + protected $sizes = array(); + protected $maxdepth = 1000000; + protected $relative = false; + protected $follow_link = false; + protected $sort = false; + protected $ignore_version_control = true; + + /** + * Sets maximum directory depth. + * + * Finder will descend at most $level levels of directories below the starting point. + * + * @param int $level + * @return sfFinder current sfFinder object + */ + public function maxdepth($level) + { + $this->maxdepth = $level; + + return $this; + } + + /** + * Sets minimum directory depth. + * + * Finder will start applying tests at level $level. + * + * @param int $level + * @return sfFinder current sfFinder object + */ + public function mindepth($level) + { + $this->mindepth = $level; + + return $this; + } + + public function get_type() + { + return $this->type; + } + + /** + * Sets the type of elements to returns. + * + * @param string $name directory or file or any (for both file and directory) + * @return sfFinder new sfFinder object + */ + public static function type($name) + { + $finder = new self(); + return $finder->setType($name); + } + /** + * Sets the type of elements to returns. + * + * @param string $name directory or file or any (for both file and directory) + * @return sfFinder Current object + */ + public function setType($name) + { + $name = strtolower($name); + + if (substr($name, 0, 3) === 'dir') + { + $this->type = 'directory'; + + return $this; + } + if ($name === 'any') + { + $this->type = 'any'; + + return $this; + } + + $this->type = 'file'; + + return $this; + } + + /* + * glob, patterns (must be //) or strings + */ + protected function to_regex($str) + { + if (preg_match('/^(!)?([^a-zA-Z0-9\\\\]).+?\\2[ims]?$/', $str)) + { + return $str; + } + + return sfGlobToRegex::glob_to_regex($str); + } + + protected function args_to_array($arg_list, $not = false) + { + $list = array(); + $nbArgList = count($arg_list); + for ($i = 0; $i < $nbArgList; $i++) + { + if (is_array($arg_list[$i])) + { + foreach ($arg_list[$i] as $arg) + { + $list[] = array($not, $this->to_regex($arg)); + } + } + else + { + $list[] = array($not, $this->to_regex($arg_list[$i])); + } + } + + return $list; + } + + /** + * Adds rules that files must match. + * + * You can use patterns (delimited with / sign), globs or simple strings. + * + * $finder->name('*.php') + * $finder->name('/\.php$/') // same as above + * $finder->name('test.php') + * + * @param list a list of patterns, globs or strings + * @return sfFinder Current object + */ + public function name() + { + $args = func_get_args(); + $this->names = array_merge($this->names, $this->args_to_array($args)); + + return $this; + } + + /** + * Adds rules that files must not match. + * + * @see ->name() + * @param list a list of patterns, globs or strings + * @return sfFinder Current object + */ + public function not_name() + { + $args = func_get_args(); + $this->names = array_merge($this->names, $this->args_to_array($args, true)); + + return $this; + } + + /** + * Adds tests for file sizes. + * + * $finder->size('> 10K'); + * $finder->size('<= 1Ki'); + * $finder->size(4); + * + * @param list a list of comparison strings + * @return sfFinder Current object + */ + public function size() + { + $args = func_get_args(); + $numargs = count($args); + for ($i = 0; $i < $numargs; $i++) + { + $this->sizes[] = new sfNumberCompare($args[$i]); + } + + return $this; + } + + /** + * Traverses no further. + * + * @param list a list of patterns, globs to match + * @return sfFinder Current object + */ + public function prune() + { + $args = func_get_args(); + $this->prunes = array_merge($this->prunes, $this->args_to_array($args)); + + return $this; + } + + /** + * Discards elements that matches. + * + * @param list a list of patterns, globs to match + * @return sfFinder Current object + */ + public function discard() + { + $args = func_get_args(); + $this->discards = array_merge($this->discards, $this->args_to_array($args)); + + return $this; + } + + /** + * Ignores version control directories. + * + * Currently supports Subversion, CVS, DARCS, Gnu Arch, Monotone, Bazaar-NG, GIT, Mercurial + * + * @param bool $ignore falase when version control directories shall be included (default is true) + * + * @return sfFinder Current object + */ + public function ignore_version_control($ignore = true) + { + $this->ignore_version_control = $ignore; + + return $this; + } + + /** + * Returns files and directories ordered by name + * + * @return sfFinder Current object + */ + public function sort_by_name() + { + $this->sort = 'name'; + + return $this; + } + + /** + * Returns files and directories ordered by type (directories before files), then by name + * + * @return sfFinder Current object + */ + public function sort_by_type() + { + $this->sort = 'type'; + + return $this; + } + + /** + * Executes function or method for each element. + * + * Element match if functino or method returns true. + * + * $finder->exec('myfunction'); + * $finder->exec(array($object, 'mymethod')); + * + * @param mixed function or method to call + * @return sfFinder Current object + */ + public function exec() + { + $args = func_get_args(); + $numargs = count($args); + for ($i = 0; $i < $numargs; $i++) + { + if (is_array($args[$i]) && !method_exists($args[$i][0], $args[$i][1])) + { + throw new sfException(sprintf('method "%s" does not exist for object "%s".', $args[$i][1], $args[$i][0])); + } + if (!is_array($args[$i]) && !function_exists($args[$i])) + { + throw new sfException(sprintf('function "%s" does not exist.', $args[$i])); + } + + $this->execs[] = $args[$i]; + } + + return $this; + } + + /** + * Returns relative paths for all files and directories. + * + * @return sfFinder Current object + */ + public function relative() + { + $this->relative = true; + + return $this; + } + + /** + * Symlink following. + * + * @return sfFinder Current object + */ + public function follow_link() + { + $this->follow_link = true; + + return $this; + } + + /** + * Searches files and directories which match defined rules. + * + * @return array list of files and directories + */ + public function in() + { + $files = array(); + $here_dir = getcwd(); + + $finder = clone $this; + + if ($this->ignore_version_control) + { + $ignores = array('.svn', '_svn', 'CVS', '_darcs', '.arch-params', '.monotone', '.bzr', '.git', '.hg'); + + $finder->discard($ignores)->prune($ignores); + } + + // first argument is an array? + $numargs = func_num_args(); + $arg_list = func_get_args(); + if ($numargs === 1 && is_array($arg_list[0])) + { + $arg_list = $arg_list[0]; + $numargs = count($arg_list); + } + + for ($i = 0; $i < $numargs; $i++) + { + $dir = realpath($arg_list[$i]); + + if (!is_dir($dir)) + { + continue; + } + + $dir = str_replace('\\', '/', $dir); + + // absolute path? + if (!self::isPathAbsolute($dir)) + { + $dir = $here_dir.'/'.$dir; + } + + $new_files = str_replace('\\', '/', $finder->search_in($dir)); + + if ($this->relative) + { + $new_files = preg_replace('#^'.preg_quote(rtrim($dir, '/'), '#').'/#', '', $new_files); + } + + $files = array_merge($files, $new_files); + } + + if ($this->sort === 'name') + { + sort($files); + } + + return array_unique($files); + } + + protected function search_in($dir, $depth = 0) + { + if ($depth > $this->maxdepth) + { + return array(); + } + + $dir = realpath($dir); + + if ((!$this->follow_link) && is_link($dir)) + { + return array(); + } + + $files = array(); + $temp_files = array(); + $temp_folders = array(); + if (is_dir($dir) && is_readable($dir)) + { + $current_dir = opendir($dir); + while (false !== $entryname = readdir($current_dir)) + { + if ($entryname == '.' || $entryname == '..') continue; + + $current_entry = $dir.DIRECTORY_SEPARATOR.$entryname; + if ((!$this->follow_link) && is_link($current_entry)) + { + continue; + } + + if (is_dir($current_entry)) + { + if ($this->sort === 'type') + { + $temp_folders[$entryname] = $current_entry; + } + else + { + if (($this->type === 'directory' || $this->type === 'any') && ($depth >= $this->mindepth) && !$this->is_discarded($dir, $entryname) && $this->match_names($dir, $entryname) && $this->exec_ok($dir, $entryname)) + { + $files[] = $current_entry; + } + + if (!$this->is_pruned($dir, $entryname)) + { + $files = array_merge($files, $this->search_in($current_entry, $depth + 1)); + } + } + } + else + { + if (($this->type !== 'directory' || $this->type === 'any') && ($depth >= $this->mindepth) && !$this->is_discarded($dir, $entryname) && $this->match_names($dir, $entryname) && $this->size_ok($dir, $entryname) && $this->exec_ok($dir, $entryname)) + { + if ($this->sort === 'type') + { + $temp_files[] = $current_entry; + } + else + { + $files[] = $current_entry; + } + } + } + } + + if ($this->sort === 'type') + { + ksort($temp_folders); + foreach($temp_folders as $entryname => $current_entry) + { + if (($this->type === 'directory' || $this->type === 'any') && ($depth >= $this->mindepth) && !$this->is_discarded($dir, $entryname) && $this->match_names($dir, $entryname) && $this->exec_ok($dir, $entryname)) + { + $files[] = $current_entry; + } + + if (!$this->is_pruned($dir, $entryname)) + { + $files = array_merge($files, $this->search_in($current_entry, $depth + 1)); + } + } + + sort($temp_files); + $files = array_merge($files, $temp_files); + } + + closedir($current_dir); + } + + return $files; + } + + protected function match_names($dir, $entry) + { + if (!count($this->names)) return true; + + // Flags indicating that there was attempts to match + // at least one "not_name" or "name" rule respectively + // to following variables: + $one_not_name_rule = false; + $one_name_rule = false; + + foreach ($this->names as $args) + { + list($not, $regex) = $args; + $not ? $one_not_name_rule = true : $one_name_rule = true; + if (preg_match($regex, $entry)) + { + // We must match ONLY ONE "not_name" or "name" rule: + // if "not_name" rule matched then we return "false" + // if "name" rule matched then we return "true" + return $not ? false : true; + } + } + + if ($one_not_name_rule && $one_name_rule) + { + return false; + } + else if ($one_not_name_rule) + { + return true; + } + else if ($one_name_rule) + { + return false; + } + return true; + } + + protected function size_ok($dir, $entry) + { + if (0 === count($this->sizes)) return true; + + if (!is_file($dir.DIRECTORY_SEPARATOR.$entry)) return true; + + $filesize = filesize($dir.DIRECTORY_SEPARATOR.$entry); + foreach ($this->sizes as $number_compare) + { + if (!$number_compare->test($filesize)) return false; + } + + return true; + } + + protected function is_pruned($dir, $entry) + { + if (0 === count($this->prunes)) return false; + + foreach ($this->prunes as $args) + { + $regex = $args[1]; + if (preg_match($regex, $entry)) return true; + } + + return false; + } + + protected function is_discarded($dir, $entry) + { + if (0 === count($this->discards)) return false; + + foreach ($this->discards as $args) + { + $regex = $args[1]; + if (preg_match($regex, $entry)) return true; + } + + return false; + } + + protected function exec_ok($dir, $entry) + { + if (0 === count($this->execs)) return true; + + foreach ($this->execs as $exec) + { + if (!call_user_func_array($exec, array($dir, $entry))) return false; + } + + return true; + } + + public static function isPathAbsolute($path) + { + if ($path{0} === '/' || $path{0} === '\\' || + (strlen($path) > 3 && ctype_alpha($path{0}) && + $path{1} === ':' && + ($path{2} === '\\' || $path{2} === '/') + ) + ) + { + return true; + } + + return false; + } +} + +/** + * Match globbing patterns against text. + * + * if match_glob("foo.*", "foo.bar") echo "matched\n"; + * + * // prints foo.bar and foo.baz + * $regex = glob_to_regex("foo.*"); + * for (array('foo.bar', 'foo.baz', 'foo', 'bar') as $t) + * { + * if (/$regex/) echo "matched: $car\n"; + * } + * + * sfGlobToRegex implements glob(3) style matching that can be used to match + * against text, rather than fetching names from a filesystem. + * + * based on perl Text::Glob module. + * + * @package symfony + * @subpackage util + * @author Fabien Potencier php port + * @author Richard Clamp perl version + * @copyright 2004-2005 Fabien Potencier + * @copyright 2002 Richard Clamp + * @version SVN: $Id$ + */ +class sfGlobToRegex +{ + protected static $strict_leading_dot = true; + protected static $strict_wildcard_slash = true; + + public static function setStrictLeadingDot($boolean) + { + self::$strict_leading_dot = $boolean; + } + + public static function setStrictWildcardSlash($boolean) + { + self::$strict_wildcard_slash = $boolean; + } + + /** + * Returns a compiled regex which is the equiavlent of the globbing pattern. + * + * @param string $glob pattern + * @return string regex + */ + public static function glob_to_regex($glob) + { + $first_byte = true; + $escaping = false; + $in_curlies = 0; + $regex = ''; + $sizeGlob = strlen($glob); + for ($i = 0; $i < $sizeGlob; $i++) + { + $car = $glob[$i]; + if ($first_byte) + { + if (self::$strict_leading_dot && $car !== '.') + { + $regex .= '(?=[^\.])'; + } + + $first_byte = false; + } + + if ($car === '/') + { + $first_byte = true; + } + + if ($car === '.' || $car === '(' || $car === ')' || $car === '|' || $car === '+' || $car === '^' || $car === '$') + { + $regex .= "\\$car"; + } + elseif ($car === '*') + { + $regex .= ($escaping ? '\\*' : (self::$strict_wildcard_slash ? '[^/]*' : '.*')); + } + elseif ($car === '?') + { + $regex .= ($escaping ? '\\?' : (self::$strict_wildcard_slash ? '[^/]' : '.')); + } + elseif ($car === '{') + { + $regex .= ($escaping ? '\\{' : '('); + if (!$escaping) ++$in_curlies; + } + elseif ($car === '}' && $in_curlies) + { + $regex .= ($escaping ? '}' : ')'); + if (!$escaping) --$in_curlies; + } + elseif ($car === ',' && $in_curlies) + { + $regex .= ($escaping ? ',' : '|'); + } + elseif ($car === '\\') + { + if ($escaping) + { + $regex .= '\\\\'; + $escaping = false; + } + else + { + $escaping = true; + } + + continue; + } + else + { + $regex .= $car; + } + $escaping = false; + } + + return '#^'.$regex.'$#'; + } +} + +/** + * Numeric comparisons. + * + * sfNumberCompare compiles a simple comparison to an anonymous + * subroutine, which you can call with a value to be tested again. + + * Now this would be very pointless, if sfNumberCompare didn't understand + * magnitudes. + + * The target value may use magnitudes of kilobytes (k, ki), + * megabytes (m, mi), or gigabytes (g, gi). Those suffixed + * with an i use the appropriate 2**n version in accordance with the + * IEC standard: http://physics.nist.gov/cuu/Units/binary.html + * + * based on perl Number::Compare module. + * + * @package symfony + * @subpackage util + * @author Fabien Potencier php port + * @author Richard Clamp perl version + * @copyright 2004-2005 Fabien Potencier + * @copyright 2002 Richard Clamp + * @see http://physics.nist.gov/cuu/Units/binary.html + * @version SVN: $Id$ + */ +class sfNumberCompare +{ + protected $test = ''; + + public function __construct($test) + { + $this->test = $test; + } + + public function test($number) + { + if (!preg_match('{^([<>]=?)?(.*?)([kmg]i?)?$}i', $this->test, $matches)) + { + throw new sfException(sprintf('don\'t understand "%s" as a test.', $this->test)); + } + + $target = array_key_exists(2, $matches) ? $matches[2] : ''; + $magnitude = array_key_exists(3, $matches) ? $matches[3] : ''; + if (strtolower($magnitude) === 'k') $target *= 1000; + if (strtolower($magnitude) === 'ki') $target *= 1024; + if (strtolower($magnitude) === 'm') $target *= 1000000; + if (strtolower($magnitude) === 'mi') $target *= 1024*1024; + if (strtolower($magnitude) === 'g') $target *= 1000000000; + if (strtolower($magnitude) === 'gi') $target *= 1024*1024*1024; + + $comparison = array_key_exists(1, $matches) ? $matches[1] : '=='; + if ($comparison === '==' || $comparison == '') + { + return ($number == $target); + } + if ($comparison === '>') + { + return ($number > $target); + } + if ($comparison === '>=') + { + return ($number >= $target); + } + if ($comparison === '<') + { + return ($number < $target); + } + if ($comparison === '<=') + { + return ($number <= $target); + } + + return false; + } +} diff --git a/lib/vendor/symfony/lib/util/.svn/text-base/sfInflector.class.php.svn-base b/lib/vendor/symfony/lib/util/.svn/text-base/sfInflector.class.php.svn-base new file mode 100644 index 0000000..50c1673 --- /dev/null +++ b/lib/vendor/symfony/lib/util/.svn/text-base/sfInflector.class.php.svn-base @@ -0,0 +1,121 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * + * @package symfony + * @subpackage util + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfInflector +{ + /** + * Returns a camelized string from a lower case and underscored string by replaceing slash with + * double-colon and upper-casing each letter preceded by an underscore. + * + * @param string $lower_case_and_underscored_word String to camelize. + * + * @return string Camelized string. + */ + public static function camelize($lower_case_and_underscored_word) + { + $tmp = $lower_case_and_underscored_word; + $tmp = sfToolkit::pregtr($tmp, array('#/(.?)#e' => "'::'.strtoupper('\\1')", + '/(^|_|-)+(.)/e' => "strtoupper('\\2')")); + + return $tmp; + } + + /** + * Returns an underscore-syntaxed version or the CamelCased string. + * + * @param string $camel_cased_word String to underscore. + * + * @return string Underscored string. + */ + public static function underscore($camel_cased_word) + { + $tmp = $camel_cased_word; + $tmp = str_replace('::', '/', $tmp); + $tmp = sfToolkit::pregtr($tmp, array('/([A-Z]+)([A-Z][a-z])/' => '\\1_\\2', + '/([a-z\d])([A-Z])/' => '\\1_\\2')); + + return strtolower($tmp); + } + + /** + * Returns classname::module with classname:: stripped off. + * + * @param string $class_name_in_module Classname and module pair. + * + * @return string Module name. + */ + public static function demodulize($class_name_in_module) + { + return preg_replace('/^.*::/', '', $class_name_in_module); + } + + /** + * Returns classname in underscored form, with "_id" tacked on at the end. + * This is for use in dealing with foreign keys in the database. + * + * @param string $class_name Class name. + * @param bool $separate_with_underscore Separate with underscore. + * + * @return strong Foreign key + */ + public static function foreign_key($class_name, $separate_with_underscore = true) + { + return sfInflector::underscore(sfInflector::demodulize($class_name)).($separate_with_underscore ? "_id" : "id"); + } + + /** + * Returns corresponding table name for given classname. + * + * @param string $class_name Name of class to get database table name for. + * + * @return string Name of the databse table for given class. + */ + public static function tableize($class_name) + { + return sfInflector::underscore($class_name); + } + + /** + * Returns model class name for given database table. + * + * @param string $table_name Table name. + * + * @return string Classified table name. + */ + public static function classify($table_name) + { + return sfInflector::camelize($table_name); + } + + /** + * Returns a human-readable string from a lower case and underscored word by replacing underscores + * with a space, and by upper-casing the initial characters. + * + * @param string $lower_case_and_underscored_word String to make more readable. + * + * @return string Human-readable string. + */ + public static function humanize($lower_case_and_underscored_word) + { + if (substr($lower_case_and_underscored_word, -3) === '_id') + { + $lower_case_and_underscored_word = substr($lower_case_and_underscored_word, 0, -3); + } + + return ucfirst(str_replace('_', ' ', $lower_case_and_underscored_word)); + } +} diff --git a/lib/vendor/symfony/lib/util/.svn/text-base/sfNamespacedParameterHolder.class.php.svn-base b/lib/vendor/symfony/lib/util/.svn/text-base/sfNamespacedParameterHolder.class.php.svn-base new file mode 100644 index 0000000..3efa783 --- /dev/null +++ b/lib/vendor/symfony/lib/util/.svn/text-base/sfNamespacedParameterHolder.class.php.svn-base @@ -0,0 +1,384 @@ + + * (c) 2004-2006 Sean Kerr + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfNamespacedParameterHolder provides a class for managing parameters + * with support for namespaces. + * + * Parameters, in this case, are used to extend classes with additional data + * that requires no additional logic to manage. + * + * @package symfony + * @subpackage util + * @author Fabien Potencier + * @author Sean Kerr + * @version SVN: $Id$ + */ +class sfNamespacedParameterHolder extends sfParameterHolder +{ + protected $default_namespace = null; + protected $parameters = array(); + + /** + * The constructor for sfNamespacedParameterHolder. + * + * The default namespace may be overridden at initialization as follows: + * + * + * + */ + public function __construct($namespace = 'symfony/default') + { + $this->default_namespace = $namespace; + } + + /** + * Sets the default namespace value. + * + * @param string $namespace Default namespace + * @param bool $move Move all values of the old default namespace to the new one or not + */ + public function setDefaultNamespace($namespace, $move = true) + { + if ($move) + { + if (null !== $values = $this->removeNamespace()) + { + $this->addByRef($values, $namespace); + } + } + + $this->default_namespace = $namespace; + } + + /** + * Get the default namespace value. + * + * The $default_namespace is defined as 'symfony/default'. + * + * @return string The default namespace + */ + public function getDefaultNamespace() + { + return $this->default_namespace; + } + + /** + * Clear all parameters associated with this request. + */ + public function clear() + { + $this->parameters = null; + $this->parameters = array(); + } + + /** + * Retrieve a parameter with an optionally specified namespace. + * + * An isolated namespace may be identified by providing a value for the third + * argument. If not specified, the default namespace 'symfony/default' is + * used. + * + * @param string $name A parameter name + * @param mixed $default A default parameter value + * @param string $ns A parameter namespace + * + * @return mixed A parameter value, if the parameter exists, otherwise null + */ + public function & get($name, $default = null, $ns = null) + { + if (!$ns) + { + $ns = $this->default_namespace; + } + + if (isset($this->parameters[$ns][$name])) + { + $value = & $this->parameters[$ns][$name]; + } + else + { + $value = $default; + } + + return $value; + } + + /** + * Retrieve an array of parameter names from an optionally specified namespace. + * + * @param string $ns A parameter namespace. + * + * @return array An indexed array of parameter names, if the namespace exists, otherwise null + */ + public function getNames($ns = null) + { + if (!$ns) + { + $ns = $this->default_namespace; + } + + if (isset($this->parameters[$ns])) + { + return array_keys($this->parameters[$ns]); + } + + return array(); + } + + /** + * Retrieve an array of parameter namespaces. + * + * @return array An indexed array of parameter namespaces + */ + public function getNamespaces() + { + return array_keys($this->parameters); + } + + /** + * Retrieve an array of parameters, within a namespace. + * + * This method is limited to a namespace. Without any argument, + * it returns the parameters of the default namespace. If a + * namespace is passed as an argument, only the parameters of the + * specified namespace are returned. + * + * @param string $ns A parameter namespace + * + * @return array An associative array of parameters + */ + public function & getAll($ns = null) + { + if (!$ns) + { + $ns = $this->default_namespace; + } + + $parameters = array(); + + if (isset($this->parameters[$ns])) + { + $parameters = $this->parameters[$ns]; + } + + return $parameters; + } + + /** + * Indicates whether or not a parameter exists. + * + * @param string $name A parameter name + * @param string $ns A parameter namespace + * + * @return bool true, if the parameter exists, otherwise false + */ + public function has($name, $ns = null) + { + if (!$ns) + { + $ns = $this->default_namespace; + } + + return isset($this->parameters[$ns][$name]); + } + + /** + * Indicates whether or not A parameter namespace exists. + * + * @param string $ns A parameter namespace + * + * @return bool true, if the namespace exists, otherwise false + */ + public function hasNamespace($ns) + { + return isset($this->parameters[$ns]); + } + + /** + * Remove a parameter. + * + * @param string $name A parameter name + * @param mixed $default A default parameter value + * @param string $ns A parameter namespace + * + * @return string A parameter value, if the parameter was removed, otherwise null + */ + public function remove($name, $default = null, $ns = null) + { + if (!$ns) + { + $ns = $this->default_namespace; + } + + $retval = $default; + + if (isset($this->parameters[$ns]) && array_key_exists($name, $this->parameters[$ns])) + { + $retval = $this->parameters[$ns][$name]; + unset($this->parameters[$ns][$name]); + } + + return $retval; + } + + /** + * Remove A parameter namespace and all of its associated parameters. + * + * @param string $ns A parameter namespace. + */ + public function & removeNamespace($ns = null) + { + if (!$ns) + { + $ns = $this->default_namespace; + } + + $retval = null; + + if (isset($this->parameters[$ns])) + { + $retval =& $this->parameters[$ns]; + unset($this->parameters[$ns]); + } + + return $retval; + } + + /** + * Set a parameter. + * + * If a parameter with the name already exists the value will be overridden. + * + * @param string $name A parameter name + * @param mixed $value A parameter value + * @param string $ns A parameter namespace + */ + public function set($name, $value, $ns = null) + { + if (!$ns) + { + $ns = $this->default_namespace; + } + + if (!isset($this->parameters[$ns])) + { + $this->parameters[$ns] = array(); + } + + $this->parameters[$ns][$name] = $value; + } + + /** + * Set a parameter by reference. + * + * If a parameter with the name already exists the value will be overridden. + * + * @param string $name A parameter name + * @param mixed $value A reference to a parameter value + * @param string $ns A parameter namespace + */ + public function setByRef($name, & $value, $ns = null) + { + if (!$ns) + { + $ns = $this->default_namespace; + } + + if (!isset($this->parameters[$ns])) + { + $this->parameters[$ns] = array(); + } + + $this->parameters[$ns][$name] =& $value; + } + + /** + * Set an array of parameters. + * + * If an existing parameter name matches any of the keys in the supplied + * array, the associated value will be overridden. + * + * @param array $parameters An associative array of parameters and their associated values + * @param string $ns A parameter namespace + */ + public function add($parameters, $ns = null) + { + if ($parameters === null) return; + + if (!$ns) + { + $ns = $this->default_namespace; + } + + if (!isset($this->parameters[$ns])) + { + $this->parameters[$ns] = array(); + } + + foreach ($parameters as $key => $value) + { + $this->parameters[$ns][$key] = $value; + } + } + + /** + * Set an array of parameters by reference. + * + * If an existing parameter name matches any of the keys in the supplied + * array, the associated value will be overridden. + * + * @param array $parameters An associative array of parameters and references to their associated values + * @param string $ns A parameter namespace + */ + public function addByRef(& $parameters, $ns = null) + { + if (!$ns) + { + $ns = $this->default_namespace; + } + + if (!isset($this->parameters[$ns])) + { + $this->parameters[$ns] = array(); + } + + foreach ($parameters as $key => &$value) + { + $this->parameters[$ns][$key] =& $value; + } + } + + /** + * Serializes the current instance. + * + * @return array Objects instance + */ + public function serialize() + { + return serialize(array($this->default_namespace, $this->parameters)); + } + + /** + * Unserializes a sfNamespacedParameterHolder instance. + * + * @param string $serialized A serialized sfNamespacedParameterHolder instance + */ + public function unserialize($serialized) + { + $data = unserialize($serialized); + + $this->default_namespace = $data[0]; + $this->parameters = $data[1]; + } +} diff --git a/lib/vendor/symfony/lib/util/.svn/text-base/sfParameterHolder.class.php.svn-base b/lib/vendor/symfony/lib/util/.svn/text-base/sfParameterHolder.class.php.svn-base new file mode 100644 index 0000000..6f46b64 --- /dev/null +++ b/lib/vendor/symfony/lib/util/.svn/text-base/sfParameterHolder.class.php.svn-base @@ -0,0 +1,200 @@ + + * (c) 2004-2006 Sean Kerr + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfParameterHolder provides a base class for managing parameters. + * + * Parameters, in this case, are used to extend classes with additional data + * that requires no additional logic to manage. + * + * @package symfony + * @subpackage util + * @author Fabien Potencier + * @author Sean Kerr + * @version SVN: $Id$ + */ +class sfParameterHolder implements Serializable +{ + protected $parameters = array(); + + /** + * The constructor for sfParameterHolder. + */ + public function __construct() + { + } + + /** + * Clears all parameters associated with this request. + */ + public function clear() + { + $this->parameters = array(); + } + + /** + * Retrieves a parameter. + * + * @param string $name A parameter name + * @param mixed $default A default parameter value + * + * @return mixed A parameter value, if the parameter exists, otherwise null + */ + public function & get($name, $default = null) + { + if (array_key_exists($name, $this->parameters)) + { + $value = & $this->parameters[$name]; + } + else + { + $value = $default; + } + + return $value; + } + + /** + * Retrieves an array of parameter names. + * + * @return array An indexed array of parameter names + */ + public function getNames() + { + return array_keys($this->parameters); + } + + /** + * Retrieves an array of parameters. + * + * @return array An associative array of parameters + */ + public function & getAll() + { + return $this->parameters; + } + + /** + * Indicates whether or not a parameter exists. + * + * @param string $name A parameter name + * + * @return bool true, if the parameter exists, otherwise false + */ + public function has($name) + { + return array_key_exists($name, $this->parameters); + } + + /** + * Remove a parameter. + * + * @param string $name A parameter name + * @param mixed $default A default parameter value + * + * @return string A parameter value, if the parameter was removed, otherwise null + */ + public function remove($name, $default = null) + { + $retval = $default; + + if (array_key_exists($name, $this->parameters)) + { + $retval = $this->parameters[$name]; + unset($this->parameters[$name]); + } + + return $retval; + } + + /** + * Sets a parameter. + * + * If a parameter with the name already exists the value will be overridden. + * + * @param string $name A parameter name + * @param mixed $value A parameter value + */ + public function set($name, $value) + { + $this->parameters[$name] = $value; + } + + /** + * Sets a parameter by reference. + * + * If a parameter with the name already exists the value will be overridden. + * + * @param string $name A parameter name + * @param mixed $value A reference to a parameter value + */ + public function setByRef($name, & $value) + { + $this->parameters[$name] =& $value; + } + + /** + * Sets an array of parameters. + * + * If an existing parameter name matches any of the keys in the supplied + * array, the associated value will be overridden. + * + * @param array $parameters An associative array of parameters and their associated values + */ + public function add($parameters) + { + if (null === $parameters) + { + return; + } + + foreach ($parameters as $key => $value) + { + $this->parameters[$key] = $value; + } + } + + /** + * Sets an array of parameters by reference. + * + * If an existing parameter name matches any of the keys in the supplied + * array, the associated value will be overridden. + * + * @param array $parameters An associative array of parameters and references to their associated values + */ + public function addByRef(& $parameters) + { + foreach ($parameters as $key => &$value) + { + $this->parameters[$key] =& $value; + } + } + + /** + * Serializes the current instance. + * + * @return array Objects instance + */ + public function serialize() + { + return serialize($this->parameters); + } + + /** + * Unserializes a sfParameterHolder instance. + * + * @param string $serialized A serialized sfParameterHolder instance + */ + public function unserialize($serialized) + { + $this->parameters = unserialize($serialized); + } +} diff --git a/lib/vendor/symfony/lib/util/.svn/text-base/sfToolkit.class.php.svn-base b/lib/vendor/symfony/lib/util/.svn/text-base/sfToolkit.class.php.svn-base new file mode 100644 index 0000000..4c33a9c --- /dev/null +++ b/lib/vendor/symfony/lib/util/.svn/text-base/sfToolkit.class.php.svn-base @@ -0,0 +1,611 @@ + + * (c) 2004-2006 Sean Kerr + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfToolkit provides basic utility methods. + * + * @package symfony + * @subpackage util + * @author Fabien Potencier + * @author Sean Kerr + * @version SVN: $Id$ + */ +class sfToolkit +{ + /** + * Extract the class or interface name from filename. + * + * @param string $filename A filename. + * + * @return string A class or interface name, if one can be extracted, otherwise null. + */ + public static function extractClassName($filename) + { + $retval = null; + + if (self::isPathAbsolute($filename)) + { + $filename = basename($filename); + } + + $pattern = '/(.*?)\.(class|interface)\.php/i'; + + if (preg_match($pattern, $filename, $match)) + { + $retval = $match[1]; + } + + return $retval; + } + + /** + * Clear all files in a given directory. + * + * @param string $directory An absolute filesystem path to a directory. + */ + public static function clearDirectory($directory) + { + if (!is_dir($directory)) + { + return; + } + + // open a file point to the cache dir + $fp = opendir($directory); + + // ignore names + $ignore = array('.', '..', 'CVS', '.svn'); + + while (($file = readdir($fp)) !== false) + { + if (!in_array($file, $ignore)) + { + if (is_link($directory.'/'.$file)) + { + // delete symlink + unlink($directory.'/'.$file); + } + else if (is_dir($directory.'/'.$file)) + { + // recurse through directory + self::clearDirectory($directory.'/'.$file); + + // delete the directory + rmdir($directory.'/'.$file); + } + else + { + // delete the file + unlink($directory.'/'.$file); + } + } + } + + // close file pointer + closedir($fp); + } + + /** + * Clear all files and directories corresponding to a glob pattern. + * + * @param string $pattern An absolute filesystem pattern. + */ + public static function clearGlob($pattern) + { + if (false === $files = glob($pattern)) + { + return; + } + + // order is important when removing directories + sort($files); + + foreach ($files as $file) + { + if (is_dir($file)) + { + // delete directory + self::clearDirectory($file); + } + else + { + // delete file + unlink($file); + } + } + } + + /** + * Determine if a filesystem path is absolute. + * + * @param path $path A filesystem path. + * + * @return bool true, if the path is absolute, otherwise false. + */ + public static function isPathAbsolute($path) + { + if ($path[0] == '/' || $path[0] == '\\' || + (strlen($path) > 3 && ctype_alpha($path[0]) && + $path[1] == ':' && + ($path[2] == '\\' || $path[2] == '/') + ) + ) + { + return true; + } + + return false; + } + + /** + * Strips comments from php source code + * + * @param string $source PHP source code. + * + * @return string Comment free source code. + */ + public static function stripComments($source) + { + if (!function_exists('token_get_all')) + { + return $source; + } + + $ignore = array(T_COMMENT => true, T_DOC_COMMENT => true); + $output = ''; + + foreach (token_get_all($source) as $token) + { + // array + if (isset($token[1])) + { + // no action on comments + if (!isset($ignore[$token[0]])) + { + // anything else -> output "as is" + $output .= $token[1]; + } + } + else + { + // simple 1-character token + $output .= $token; + } + } + + return $output; + } + + /** + * Strip slashes recursively from array + * + * @param array $value the value to strip + * + * @return array clean value with slashes stripped + */ + public static function stripslashesDeep($value) + { + return is_array($value) ? array_map(array('sfToolkit', 'stripslashesDeep'), $value) : stripslashes($value); + } + + // code from php at moechofe dot com (array_merge comment on php.net) + /* + * array arrayDeepMerge ( array array1 [, array array2 [, array ...]] ) + * + * Like array_merge + * + * arrayDeepMerge() merges the elements of one or more arrays together so + * that the values of one are appended to the end of the previous one. It + * returns the resulting array. + * If the input arrays have the same string keys, then the later value for + * that key will overwrite the previous one. If, however, the arrays contain + * numeric keys, the later value will not overwrite the original value, but + * will be appended. + * If only one array is given and the array is numerically indexed, the keys + * get reindexed in a continuous way. + * + * Different from array_merge + * If string keys have arrays for values, these arrays will merge recursively. + */ + public static function arrayDeepMerge() + { + switch (func_num_args()) + { + case 0: + return false; + case 1: + return func_get_arg(0); + case 2: + $args = func_get_args(); + $args[2] = array(); + if (is_array($args[0]) && is_array($args[1])) + { + foreach (array_unique(array_merge(array_keys($args[0]),array_keys($args[1]))) as $key) + { + $isKey0 = array_key_exists($key, $args[0]); + $isKey1 = array_key_exists($key, $args[1]); + if ($isKey0 && $isKey1 && is_array($args[0][$key]) && is_array($args[1][$key])) + { + $args[2][$key] = self::arrayDeepMerge($args[0][$key], $args[1][$key]); + } + else if ($isKey0 && $isKey1) + { + $args[2][$key] = $args[1][$key]; + } + else if (!$isKey1) + { + $args[2][$key] = $args[0][$key]; + } + else if (!$isKey0) + { + $args[2][$key] = $args[1][$key]; + } + } + return $args[2]; + } + else + { + return $args[1]; + } + default : + $args = func_get_args(); + $args[1] = sfToolkit::arrayDeepMerge($args[0], $args[1]); + array_shift($args); + return call_user_func_array(array('sfToolkit', 'arrayDeepMerge'), $args); + break; + } + } + + /** + * Converts string to array + * + * @param string $string the value to convert to array + * + * @return array + */ + public static function stringToArray($string) + { + preg_match_all('/ + \s*(\w+) # key \\1 + \s*=\s* # = + (\'|")? # values may be included in \' or " \\2 + (.*?) # value \\3 + (?(2) \\2) # matching \' or " if needed \\4 + \s*(?: + (?=\w+\s*=) | \s*$ # followed by another key= or the end of the string + ) + /x', $string, $matches, PREG_SET_ORDER); + + $attributes = array(); + foreach ($matches as $val) + { + $attributes[$val[1]] = self::literalize($val[3]); + } + + return $attributes; + } + + /** + * Finds the type of the passed value, returns the value as the new type. + * + * @param string $value + * @param bool $quoted Quote? + * + * @return mixed + */ + public static function literalize($value, $quoted = false) + { + // lowercase our value for comparison + $value = trim($value); + $lvalue = strtolower($value); + + if (in_array($lvalue, array('null', '~', ''))) + { + $value = null; + } + else if (in_array($lvalue, array('true', 'on', '+', 'yes'))) + { + $value = true; + } + else if (in_array($lvalue, array('false', 'off', '-', 'no'))) + { + $value = false; + } + else if (ctype_digit($value)) + { + $value = (int) $value; + } + else if (is_numeric($value)) + { + $value = (float) $value; + } + else + { + $value = self::replaceConstants($value); + if ($quoted) + { + $value = '\''.str_replace('\'', '\\\'', $value).'\''; + } + } + + return $value; + } + + /** + * Replaces constant identifiers in a scalar value. + * + * @param string $value the value to perform the replacement on + * + * @return string the value with substitutions made + */ + public static function replaceConstants($value) + { + return is_string($value) ? preg_replace_callback('/%(.+?)%/', create_function('$v', 'return sfConfig::has(strtolower($v[1])) ? sfConfig::get(strtolower($v[1])) : "%{$v[1]}%";'), $value) : $value; + } + + /** + * Returns subject replaced with regular expression matchs + * + * @param mixed $search subject to search + * @param array $replacePairs array of search => replace pairs + */ + public static function pregtr($search, $replacePairs) + { + return preg_replace(array_keys($replacePairs), array_values($replacePairs), $search); + } + + /** + * Checks if array values are empty + * + * @param array $array the array to check + * @return boolean true if empty, otherwise false + */ + public static function isArrayValuesEmpty($array) + { + static $isEmpty = true; + foreach ($array as $value) + { + $isEmpty = (is_array($value)) ? self::isArrayValuesEmpty($value) : (strlen($value) == 0); + if (!$isEmpty) + { + break; + } + } + + return $isEmpty; + } + + /** + * Checks if a string is an utf8. + * + * Yi Stone Li + * Copyright (c) 2007 Yahoo! Inc. All rights reserved. + * Licensed under the BSD open source license + * + * @param string + * + * @return bool true if $string is valid UTF-8 and false otherwise. + */ + public static function isUTF8($string) + { + for ($idx = 0, $strlen = strlen($string); $idx < $strlen; $idx++) + { + $byte = ord($string[$idx]); + + if ($byte & 0x80) + { + if (($byte & 0xE0) == 0xC0) + { + // 2 byte char + $bytes_remaining = 1; + } + else if (($byte & 0xF0) == 0xE0) + { + // 3 byte char + $bytes_remaining = 2; + } + else if (($byte & 0xF8) == 0xF0) + { + // 4 byte char + $bytes_remaining = 3; + } + else + { + return false; + } + + if ($idx + $bytes_remaining >= $strlen) + { + return false; + } + + while ($bytes_remaining--) + { + if ((ord($string[++$idx]) & 0xC0) != 0x80) + { + return false; + } + } + } + } + + return true; + } + + /** + * Returns an array value for a path. + * + * @param array $values The values to search + * @param string $name The token name + * @param array $default Default if not found + * + * @return array + */ + public static function getArrayValueForPath($values, $name, $default = null) + { + if (false === $offset = strpos($name, '[')) + { + return isset($values[$name]) ? $values[$name] : $default; + } + + if (!isset($values[substr($name, 0, $offset)])) + { + return $default; + } + + $array = $values[substr($name, 0, $offset)]; + + while (false !== $pos = strpos($name, '[', $offset)) + { + $end = strpos($name, ']', $pos); + if ($end == $pos + 1) + { + // reached a [] + if (!is_array($array)) + { + return $default; + } + break; + } + else if (!isset($array[substr($name, $pos + 1, $end - $pos - 1)])) + { + return $default; + } + else if (is_array($array)) + { + $array = $array[substr($name, $pos + 1, $end - $pos - 1)]; + $offset = $end; + } + else + { + return $default; + } + } + + return $array; + } + + /** + * Get path to php cli. + * + * @throws sfException If no php cli found + * @return string + */ + public static function getPhpCli() + { + $path = getenv('PATH') ? getenv('PATH') : getenv('Path'); + $suffixes = DIRECTORY_SEPARATOR == '\\' ? (getenv('PATHEXT') ? explode(PATH_SEPARATOR, getenv('PATHEXT')) : array('.exe', '.bat', '.cmd', '.com')) : array(''); + foreach (array('php5', 'php') as $phpCli) + { + foreach ($suffixes as $suffix) + { + foreach (explode(PATH_SEPARATOR, $path) as $dir) + { + if (is_file($file = $dir.DIRECTORY_SEPARATOR.$phpCli.$suffix) && is_executable($file)) + { + return $file; + } + } + } + } + + throw new sfException('Unable to find PHP executable.'); + } + + /** + * Converts strings to UTF-8 via iconv. NB, the result may not by UTF-8 if the conversion failed. + * + * This file comes from Prado (BSD License) + * + * @param string $string string to convert to UTF-8 + * @param string $from current encoding + * + * @return string UTF-8 encoded string, original string if iconv failed. + */ + static public function I18N_toUTF8($string, $from) + { + $from = strtoupper($from); + if ($from != 'UTF-8') + { + $s = iconv($from,'UTF-8',$string); // to UTF-8 + + return $s !== false ? $s : $string; // it could return false + } + + return $string; + } + + /** + * Converts UTF-8 strings to a different encoding. NB. The result may not have been encoded if iconv fails. + * + * This file comes from Prado (BSD License) + * + * @param string $string the UTF-8 string for conversion + * @param string $to new encoding + * + * @return string encoded string. + */ + static public function I18N_toEncoding($string, $to) + { + $to = strtoupper($to); + if ($to != 'UTF-8') + { + $s = iconv('UTF-8', $to, $string); + + return $s !== false ? $s : $string; + } + + return $string; + } + + /** + * Adds a path to the PHP include_path setting. + * + * @param mixed $path Single string path or an array of paths + * @param string $position Either 'front' or 'back' + * + * @return string The old include path + */ + static public function addIncludePath($path, $position = 'front') + { + if (is_array($path)) + { + foreach ('front' == $position ? array_reverse($path) : $path as $p) + { + self::addIncludePath($p, $position); + } + + return; + } + + $paths = explode(PATH_SEPARATOR, get_include_path()); + + // remove what's already in the include_path + if (false !== $key = array_search(realpath($path), array_map('realpath', $paths))) + { + unset($paths[$key]); + } + + switch ($position) + { + case 'front': + array_unshift($paths, $path); + break; + case 'back': + $paths[] = $path; + break; + default: + throw new InvalidArgumentException(sprintf('Unrecognized position: "%s"', $position)); + } + + return set_include_path(join(PATH_SEPARATOR, $paths)); + } +} diff --git a/lib/vendor/symfony/lib/util/sfBrowser.class.php b/lib/vendor/symfony/lib/util/sfBrowser.class.php new file mode 100644 index 0000000..dcb4d11 --- /dev/null +++ b/lib/vendor/symfony/lib/util/sfBrowser.class.php @@ -0,0 +1,169 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfBrowser simulates a browser which can surf a symfony application. + * + * @package symfony + * @subpackage util + * @author Fabien Potencier + * @version SVN: $Id: sfBrowser.class.php 21908 2009-09-11 12:06:21Z fabien $ + */ +class sfBrowser extends sfBrowserBase +{ + protected + $listeners = array(), + $context = null, + $currentException = null; + + /** + * Calls a request to a uri. + */ + protected function doCall() + { + // recycle our context object + $this->context = $this->getContext(true); + + sfConfig::set('sf_test', true); + + // we register a fake rendering filter + sfConfig::set('sf_rendering_filter', array('sfFakeRenderingFilter', null)); + + $this->resetCurrentException(); + + // dispatch our request + ob_start(); + $this->context->getController()->dispatch(); + $retval = ob_get_clean(); + + // append retval to the response content + $this->context->getResponse()->setContent($retval); + + // manually shutdown user to save current session data + if ($this->context->getUser()) + { + $this->context->getUser()->shutdown(); + $this->context->getStorage()->shutdown(); + } + } + + /** + * Returns the current application context. + * + * @param bool $forceReload true to force context reload, false otherwise + * + * @return sfContext + */ + public function getContext($forceReload = false) + { + if (null === $this->context || $forceReload) + { + $isContextEmpty = null === $this->context; + $context = $isContextEmpty ? sfContext::getInstance() : $this->context; + + // create configuration + $currentConfiguration = $context->getConfiguration(); + $configuration = ProjectConfiguration::getApplicationConfiguration($currentConfiguration->getApplication(), $currentConfiguration->getEnvironment(), $currentConfiguration->isDebug()); + + // connect listeners + $configuration->getEventDispatcher()->connect('application.throw_exception', array($this, 'listenToException')); + foreach ($this->listeners as $name => $listener) + { + $configuration->getEventDispatcher()->connect($name, $listener); + } + + // create context + $this->context = sfContext::createInstance($configuration); + unset($currentConfiguration); + + if (!$isContextEmpty) + { + sfConfig::clear(); + sfConfig::add($this->rawConfiguration); + } + else + { + $this->rawConfiguration = sfConfig::getAll(); + } + } + + return $this->context; + } + + public function addListener($name, $listener) + { + $this->listeners[$name] = $listener; + } + + /** + * Gets response. + * + * @return sfWebResponse + */ + public function getResponse() + { + return $this->context->getResponse(); + } + + /** + * Gets request. + * + * @return sfWebRequest + */ + public function getRequest() + { + return $this->context->getRequest(); + } + + /** + * Gets user. + * + * @return sfUser + */ + public function getUser() + { + return $this->context->getUser(); + } + + /** + * Shutdown function to clean up and remove sessions + * + * @return void + */ + public function shutdown() + { + parent::shutdown(); + + // we remove all session data + sfToolkit::clearDirectory(sfConfig::get('sf_test_cache_dir').'/sessions'); + } + + /** + * Listener for exceptions + * + * @param sfEvent $event The event to handle + * + * @return void + */ + public function listenToException(sfEvent $event) + { + $this->setCurrentException($event->getSubject()); + } +} + +class sfFakeRenderingFilter extends sfFilter +{ + public function execute($filterChain) + { + $filterChain->execute(); + + $this->context->getResponse()->sendContent(); + } +} diff --git a/lib/vendor/symfony/lib/util/sfBrowserBase.class.php b/lib/vendor/symfony/lib/util/sfBrowserBase.class.php new file mode 100644 index 0000000..40e7df0 --- /dev/null +++ b/lib/vendor/symfony/lib/util/sfBrowserBase.class.php @@ -0,0 +1,1023 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfBrowserBase is the base class for sfBrowser. + * + * It implements features that is independent from the symfony controllers. + * + * @package symfony + * @subpackage util + * @author Fabien Potencier + * @version SVN: $Id: sfBrowserBase.class.php 33373 2012-03-08 15:45:46Z fabien $ + */ +abstract class sfBrowserBase +{ + protected + $hostname = null, + $remote = null, + $dom = null, + $stack = array(), + $stackPosition = -1, + $cookieJar = array(), + $fields = array(), + $files = array(), + $vars = array(), + $defaultServerArray = array(), + $headers = array(), + $currentException = null, + $domCssSelector = null; + + /** + * Class constructor. + * + * @param string $hostname Hostname to browse + * @param string $remote Remote address to spook + * @param array $options Options for sfBrowser + * + * @return void + */ + public function __construct($hostname = null, $remote = null, $options = array()) + { + $this->initialize($hostname, $remote, $options); + } + + /** + * Initializes sfBrowser - sets up environment + * + * @param string $hostname Hostname to browse + * @param string $remote Remote address to spook + * @param array $options Options for sfBrowser + * + * @return void + */ + public function initialize($hostname = null, $remote = null, $options = array()) + { + unset($_SERVER['argv']); + unset($_SERVER['argc']); + + // setup our fake environment + $this->hostname = null === $hostname ? 'localhost' : $hostname; + $this->remote = null === $remote ? '127.0.0.1' : $remote; + + // we set a session id (fake cookie / persistence) + $this->newSession(); + + // store default global $_SERVER array + $this->defaultServerArray = $_SERVER; + + // register our shutdown function + register_shutdown_function(array($this, 'shutdown')); + } + + /** + * Sets variable name + * + * @param string $name The variable name + * @param mixed $value The value + * + * @return sfBrowserBase + */ + public function setVar($name, $value) + { + $this->vars[$name] = $value; + + return $this; + } + + /** + * Sets a HTTP header for the very next request. + * + * @param string $header The header name + * @param string $value The header value + */ + public function setHttpHeader($header, $value) + { + $this->headers[$header] = $value; + + return $this; + } + + /** + * Sets a cookie. + * + * @param string $name The cookie name + * @param string $value Value for the cookie + * @param string $expire Cookie expiration period + * @param string $path Path + * @param string $domain Domain name + * @param bool $secure If secure + * @param bool $httpOnly If uses only HTTP + * + * @return sfBrowserBase This sfBrowserBase instance + */ + public function setCookie($name, $value, $expire = null, $path = '/', $domain = '', $secure = false, $httpOnly = false) + { + $this->cookieJar[$name] = array( + 'name' => $name, + 'value' => $value, + 'expire' => $expire, + 'path' => $path, + 'domain' => $domain, + 'secure' => (Boolean) $secure, + 'httpOnly' => $httpOnly, + ); + + return $this; + } + + /** + * Removes a cookie by name. + * + * @param string $name The cookie name + * + * @return sfBrowserBase This sfBrowserBase instance + */ + public function removeCookie($name) + { + unset($this->cookieJar[$name]); + + return $this; + } + + /** + * Clears all cookies. + * + * @return sfBrowserBase This sfBrowserBase instance + */ + public function clearCookies() + { + $this->cookieJar = array(); + + return $this; + } + + /** + * Sets username and password for simulating http authentication. + * + * @param string $username The username + * @param string $password The password + * + * @return sfBrowserBase + */ + public function setAuth($username, $password) + { + $this->vars['PHP_AUTH_USER'] = $username; + $this->vars['PHP_AUTH_PW'] = $password; + + return $this; + } + + /** + * Gets a uri. + * + * @param string $uri The URI to fetch + * @param array $parameters The Request parameters + * @param bool $changeStack Change the browser history stack? + * + * @return sfBrowserBase + */ + public function get($uri, $parameters = array(), $changeStack = true) + { + return $this->call($uri, 'get', $parameters, $changeStack); + } + + /** + * Posts a uri. + * + * @param string $uri The URI to fetch + * @param array $parameters The Request parameters + * @param bool $changeStack Change the browser history stack? + * + * @return sfBrowserBase + */ + public function post($uri, $parameters = array(), $changeStack = true) + { + return $this->call($uri, 'post', $parameters, $changeStack); + } + + /** + * Calls a request to a uri. + * + * @param string $uri The URI to fetch + * @param string $method The request method + * @param array $parameters The Request parameters + * @param bool $changeStack Change the browser history stack? + * + * @return sfBrowserBase + */ + public function call($uri, $method = 'get', $parameters = array(), $changeStack = true) + { + // check that the previous call() hasn't returned an uncatched exception + $this->checkCurrentExceptionIsEmpty(); + + $uri = $this->fixUri($uri); + + // add uri to the stack + if ($changeStack) + { + $this->stack = array_slice($this->stack, 0, $this->stackPosition + 1); + $this->stack[] = array( + 'uri' => $uri, + 'method' => $method, + 'parameters' => $parameters, + ); + $this->stackPosition = count($this->stack) - 1; + } + + list($path, $queryString) = false !== ($pos = strpos($uri, '?')) ? array(substr($uri, 0, $pos), substr($uri, $pos + 1)) : array($uri, ''); + $queryString = html_entity_decode($queryString); + + // remove anchor + $path = preg_replace('/#.*/', '', $path); + + // removes all fields from previous request + $this->fields = array(); + + // prepare the request object + $_SERVER = $this->defaultServerArray; + $_SERVER['HTTP_HOST'] = $this->hostname; + $_SERVER['SERVER_NAME'] = $_SERVER['HTTP_HOST']; + $_SERVER['SERVER_PORT'] = 80; + $_SERVER['HTTP_USER_AGENT'] = 'PHP5/CLI'; + $_SERVER['REMOTE_ADDR'] = $this->remote; + $_SERVER['REQUEST_METHOD'] = strtoupper($method); + $_SERVER['PATH_INFO'] = $path; + $_SERVER['REQUEST_URI'] = '/index.php'.$uri; + $_SERVER['SCRIPT_NAME'] = '/index.php'; + $_SERVER['SCRIPT_FILENAME'] = '/index.php'; + $_SERVER['QUERY_STRING'] = $queryString; + + if ($this->stackPosition >= 1) + { + $_SERVER['HTTP_REFERER'] = sprintf('http%s://%s%s', isset($this->defaultServerArray['HTTPS']) ? 's' : '', $this->hostname, $this->stack[$this->stackPosition - 1]['uri']); + } + + foreach ($this->vars as $key => $value) + { + $_SERVER[strtoupper($key)] = $value; + } + + foreach ($this->headers as $header => $value) + { + $_SERVER['HTTP_'.strtoupper(str_replace('-', '_', $header))] = $value; + } + $this->headers = array(); + + // request parameters + $_GET = $_POST = array(); + if (in_array(strtoupper($method), array('POST', 'DELETE', 'PUT'))) + { + if (isset($parameters['_with_csrf']) && $parameters['_with_csrf']) + { + unset($parameters['_with_csrf']); + $form = new BaseForm(); + $parameters[$form->getCSRFFieldName()] = $form->getCSRFToken(); + } + + $_POST = $parameters; + } + if (strtoupper($method) == 'GET') + { + $_GET = $parameters; + } + + // handle input type="file" fields + $_FILES = array(); + if (count($this->files)) + { + $_FILES = $this->files; + } + $this->files = array(); + + parse_str($queryString, $qs); + if (is_array($qs)) + { + $_GET = array_merge($qs, $_GET); + } + + // expire cookies + $cookies = $this->cookieJar; + foreach ($cookies as $name => $cookie) + { + if ($cookie['expire'] && $cookie['expire'] < time()) + { + unset($this->cookieJar[$name]); + } + } + + // restore cookies + $_COOKIE = array(); + foreach ($this->cookieJar as $name => $cookie) + { + $_COOKIE[$name] = $cookie['value']; + } + + $this->doCall(); + + $response = $this->getResponse(); + + // save cookies + foreach ($response->getCookies() as $name => $cookie) + { + // FIXME: deal with path, secure, ... + $this->cookieJar[$name] = $cookie; + } + + // support for the ETag header + if ($etag = $response->getHttpHeader('Etag')) + { + $this->vars['HTTP_IF_NONE_MATCH'] = $etag; + } + else + { + unset($this->vars['HTTP_IF_NONE_MATCH']); + } + + // support for the last modified header + if ($lastModified = $response->getHttpHeader('Last-Modified')) + { + $this->vars['HTTP_IF_MODIFIED_SINCE'] = $lastModified; + } + else + { + unset($this->vars['HTTP_IF_MODIFIED_SINCE']); + } + + // for HTML/XML content, create a DOM and sfDomCssSelector objects for the response content + $this->dom = null; + $this->domCssSelector = null; + if (preg_match('/(x|ht)ml/i', $response->getContentType(), $matches)) + { + $this->dom = new DomDocument('1.0', $response->getCharset()); + $this->dom->validateOnParse = true; + if ('x' == $matches[1]) + { + @$this->dom->loadXML($response->getContent()); + } + else + { + @$this->dom->loadHTML($response->getContent()); + } + $this->domCssSelector = new sfDomCssSelector($this->dom); + } + + return $this; + } + + /** + * Calls a request to a uri. + */ + abstract protected function doCall(); + + /** + * Go back in the browser history stack. + * + * @return sfBrowserBase + */ + public function back() + { + if ($this->stackPosition < 1) + { + throw new LogicException('You are already on the first page.'); + } + + --$this->stackPosition; + return $this->call($this->stack[$this->stackPosition]['uri'], $this->stack[$this->stackPosition]['method'], $this->stack[$this->stackPosition]['parameters'], false); + } + + /** + * Go forward in the browser history stack. + * + * @return sfBrowserBase + */ + public function forward() + { + if ($this->stackPosition > count($this->stack) - 2) + { + throw new LogicException('You are already on the last page.'); + } + + ++$this->stackPosition; + return $this->call($this->stack[$this->stackPosition]['uri'], $this->stack[$this->stackPosition]['method'], $this->stack[$this->stackPosition]['parameters'], false); + } + + /** + * Reload the current browser. + * + * @return sfBrowserBase + */ + public function reload() + { + if (-1 == $this->stackPosition) + { + throw new LogicException('No page to reload.'); + } + + return $this->call($this->stack[$this->stackPosition]['uri'], $this->stack[$this->stackPosition]['method'], $this->stack[$this->stackPosition]['parameters'], false); + } + + /** + * Get response DOM CSS selector. + * + * @return sfDomCssSelector + */ + public function getResponseDomCssSelector() + { + if (null === $this->domCssSelector) + { + throw new LogicException('The DOM is not accessible because the browser response content type is not HTML.'); + } + + return $this->domCssSelector; + } + + /** + * Get the response DOM XPath selector. + * + * @return DOMXPath + * + * @uses getResponseDom() + */ + public function getResponseDomXpath() + { + return new DOMXPath($this->getResponseDom()); + } + + /** + * Get response DOM. + * + * @return sfDomCssSelector + */ + public function getResponseDom() + { + if (null === $this->dom) + { + throw new LogicException('The DOM is not accessible because the browser response content type is not HTML.'); + } + + return $this->dom; + } + + /** + * Gets response. + * + * @return sfWebResponse + */ + abstract public function getResponse(); + + /** + * Gets request. + * + * @return sfWebRequest + */ + abstract public function getRequest(); + + /** + * Gets user. + * + * @return sfUser + */ + abstract public function getUser(); + + /** + * Gets the current exception. + * + * @return Exception + */ + public function getCurrentException() + { + return $this->currentException; + } + + /** + * Sets the current exception. + * + * @param Exception $exception An Exception instance + */ + public function setCurrentException(Exception $exception) + { + $this->currentException = $exception; + } + + /** + * Resets the current exception. + */ + public function resetCurrentException() + { + $this->currentException = null; + sfException::clearLastException(); + } + + /** + * Test for an uncaught exception. + * + * @return boolean + */ + public function checkCurrentExceptionIsEmpty() + { + return null === $this->getCurrentException() || $this->getCurrentException() instanceof sfError404Exception; + } + + /** + * Follow redirects? + * + * @throws sfException If request was not a redirect + * + * @return sfBrowserBase + */ + public function followRedirect() + { + if (null === $this->getResponse()->getHttpHeader('Location')) + { + throw new LogicException('The request was not redirected.'); + } + + return $this->get($this->getResponse()->getHttpHeader('Location')); + } + + /** + * Sets a form field in the browser. + * + * @param string $name The field name + * @param string $value The field value + * + * @return sfBrowserBase + */ + public function setField($name, $value) + { + // as we don't know yet the form, just store name/value pairs + $this->parseArgumentAsArray($name, $value, $this->fields); + + return $this; + } + + /** + * Simulates deselecting a checkbox or radiobutton. + * + * @param string $name The checkbox or radiobutton id, name or text + * + * @return sfBrowserBase + * + * @see doSelect() + */ + public function deselect($name) + { + $this->doSelect($name, false); + + return $this; + } + + /** + * Simulates selecting a checkbox or radiobutton. + * + * @param string $name The checkbox or radiobutton id, name or text + * + * @return sfBrowserBase + * + * @see doSelect() + */ + public function select($name) + { + $this->doSelect($name, true); + + return $this; + } + + /** + * Simulates selecting a checkbox or radiobutton. + * + * This method is called internally by the select() and deselect() methods. + * + * @param string $name The checkbox or radiobutton id, name or text + * @param boolean $selected If true the item will be selected + * + */ + public function doSelect($name, $selected) + { + $xpath = $this->getResponseDomXpath(); + + if ($element = $xpath->query(sprintf('//input[(@type="radio" or @type="checkbox") and (.="%s" or @id="%s" or @name="%s")]', $name, $name, $name))->item(0)) + { + if ($selected) + { + if ($element->getAttribute('type') == 'radio') + { + //we need to deselect all other radio buttons with the same name + foreach ($xpath->query(sprintf('//input[@type="radio" and @name="%s"]', $element->getAttribute('name'))) as $radio) + { + $radio->removeAttribute('checked'); + } + } + $element->setAttribute('checked', 'checked'); + } + else + { + if ($element->getAttribute('type') == 'radio') + { + throw new InvalidArgumentException('Radiobutton cannot be deselected - Select another radiobutton to deselect the current.'); + } + $element->removeAttribute('checked'); + } + } + else + { + throw new InvalidArgumentException(sprintf('Cannot find the "%s" checkbox or radiobutton.', $name)); + } + } + + /** + * Simulates a click on a link or button. + * + * Available options: + * + * * position: The position of the linked to link if several ones have the same name + * (the first one is 1, not 0) + * * method: The method to used instead of the form ones + * (useful when you need to click on a link that is converted to a form with JavaScript code) + * + * @param string|DOMElement $name The link, button text, CSS selector or DOMElement + * @param array $arguments The arguments to pass to the link + * @param array $options An array of options + * + * @return sfBrowserBase + * + * @uses doClickElement() doClick() doClickCssSelector() + */ + public function click($name, $arguments = array(), $options = array()) + { + if ($name instanceof DOMElement) + { + list($uri, $method, $parameters) = $this->doClickElement($name, $arguments, $options); + } + else + { + try + { + list($uri, $method, $parameters) = $this->doClick($name, $arguments, $options); + } + catch (InvalidArgumentException $e) + { + list($uri, $method, $parameters) = $this->doClickCssSelector($name, $arguments, $options); + } + } + + return $this->call($uri, $method, $parameters); + } + + /** + * Simulates a click on a link or button. + * + * This method is called internally by the {@link click()} method. + * + * @param string $name The link or button text + * @param array $arguments The arguments to pass to the link + * @param array $options An array of options + * + * @return array An array composed of the URI, the method and the arguments to pass to the {@link call()} call + * + * @uses getResponseDomXpath() doClickElement() + * @throws InvalidArgumentException If a matching element cannot be found + * + * @deprecated call {@link click()} using a CSS selector instead + */ + public function doClick($name, $arguments = array(), $options = array()) + { + if (false !== strpos($name, '[') || false !== strpos($name, ']')) + { + throw new InvalidArgumentException(sprintf('The name "%s" is not valid', $name)); + } + + $query = sprintf('//a[.="%s"]', $name); + $query .= sprintf('|//a/img[@alt="%s"]/ancestor::a', $name); + $query .= sprintf('|//input[((@type="submit" or @type="button") and @value="%s") or (@type="image" and @alt="%s")]', $name, $name); + $query .= sprintf('|//button[.="%s" or @id="%s" or @name="%s"]', $name, $name, $name); + + if (!$list = @$this->getResponseDomXpath()->query($query)) + { + throw new InvalidArgumentException(sprintf('The name "%s" is not valid', $name)); + } + + $position = isset($options['position']) ? $options['position'] - 1 : 0; + + if (!$item = $list->item($position)) + { + throw new InvalidArgumentException(sprintf('Cannot find the "%s" link or button (position %d).', $name, $position + 1)); + } + + return $this->doClickElement($item, $arguments, $options); + } + + /** + * Simulates a click on an element indicated by CSS selector. + * + * This method is called internally by the {@link click()} method. + * + * @param string $selector The CSS selector + * @param array $arguments The arguments to pass to the link + * @param array $options An array of options + * + * @return array An array composed of the URI, the method and the arguments to pass to the {@link call()} call + * + * @uses getResponseDomCssSelector() doClickElement() + * @throws InvalidArgumentException If a matching element cannot be found + */ + public function doClickCssSelector($selector, $arguments = array(), $options = array()) + { + $elements = $this->getResponseDomCssSelector()->matchAll($selector)->getNodes(); + $position = isset($options['position']) ? $options['position'] - 1 : 0; + + if (isset($elements[$position])) + { + return $this->doClickElement($elements[$position], $arguments, $options); + } + else + { + throw new InvalidArgumentException(sprintf('Could not find the element "%s" (position %d) in the current DOM.', $selector, $position + 1)); + } + } + + /** + * Simulates a click on the supplied DOM element. + * + * This method is called internally by the {@link click()} method. + * + * @param DOMElement $item The element being clicked + * @param array $arguments The arguments to pass to the link + * @param array $options An array of options + * + * @return array An array composed of the URI, the method and the arguments to pass to the call() call + * + * @uses getResponseDomXpath() + */ + public function doClickElement(DOMElement $item, $arguments = array(), $options = array()) + { + $method = strtolower(isset($options['method']) ? $options['method'] : 'get'); + + if ('a' == $item->nodeName) + { + if (in_array($method, array('post', 'put', 'delete'))) + { + if (isset($options['_with_csrf']) && $options['_with_csrf']) + { + $arguments['_with_csrf'] = true; + } + + return array($item->getAttribute('href'), $method, $arguments); + } + else + { + return array($item->getAttribute('href'), 'get', $arguments); + } + } + else if ('button' == $item->nodeName || ('input' == $item->nodeName && in_array($item->getAttribute('type'), array('submit', 'button', 'image')))) + { + // add the item's value to the arguments + $this->parseArgumentAsArray($item->getAttribute('name'), $item->getAttribute('value'), $arguments); + + // use the ancestor form element + do + { + if (null === $item = $item->parentNode) + { + throw new Exception('The clicked form element does not have a form ancestor.'); + } + } + while ('form' != $item->nodeName); + } + + // form attributes + $url = $item->getAttribute('action'); + if (!$url || '#' == $url) + { + $url = $this->stack[$this->stackPosition]['uri']; + } + $method = strtolower(isset($options['method']) ? $options['method'] : ($item->getAttribute('method') ? $item->getAttribute('method') : 'get')); + + // merge form default values and arguments + $defaults = array(); + $arguments = sfToolkit::arrayDeepMerge($this->fields, $arguments); + + $xpath = $this->getResponseDomXpath(); + foreach ($xpath->query('descendant::input | descendant::textarea | descendant::select', $item) as $element) + { + if ($element->hasAttribute('disabled')) + { + continue; + } + + $elementName = $element->getAttribute('name'); + $nodeName = $element->nodeName; + $value = null; + + if ($nodeName == 'input' && ($element->getAttribute('type') == 'checkbox' || $element->getAttribute('type') == 'radio')) + { + if ($element->getAttribute('checked')) + { + $value = $element->hasAttribute('value') ? $element->getAttribute('value') : '1'; + } + } + else if ($nodeName == 'input' && $element->getAttribute('type') == 'file') + { + $filename = array_key_exists($elementName, $arguments) ? $arguments[$elementName] : sfToolkit::getArrayValueForPath($arguments, $elementName, ''); + + if (is_readable($filename)) + { + $fileError = UPLOAD_ERR_OK; + $fileSize = filesize($filename); + } + else + { + $fileError = UPLOAD_ERR_NO_FILE; + $fileSize = 0; + } + + unset($arguments[$elementName]); + + $this->parseArgumentAsArray($elementName, array('name' => basename($filename), 'type' => '', 'tmp_name' => $filename, 'error' => $fileError, 'size' => $fileSize), $this->files); + } + else if ('input' == $nodeName && !in_array($element->getAttribute('type'), array('submit', 'button', 'image'))) + { + $value = $element->getAttribute('value'); + } + else if ($nodeName == 'textarea') + { + $value = ''; + foreach ($element->childNodes as $el) + { + $value .= $this->getResponseDom()->saveXML($el); + } + } + else if ($nodeName == 'select') + { + if ($multiple = $element->hasAttribute('multiple')) + { + $elementName = str_replace('[]', '', $elementName); + $value = array(); + } + else + { + $value = null; + } + + $found = false; + foreach ($xpath->query('descendant::option', $element) as $option) + { + if ($option->getAttribute('selected')) + { + $found = true; + if ($multiple) + { + $value[] = $option->getAttribute('value'); + } + else + { + $value = $option->getAttribute('value'); + } + } + } + + // if no option is selected and if it is a simple select box, take the first option as the value + $option = $xpath->query('descendant::option', $element)->item(0); + if (!$found && !$multiple && $option instanceof DOMElement) + { + $value = $option->getAttribute('value'); + } + } + + if (null !== $value) + { + $this->parseArgumentAsArray($elementName, $value, $defaults); + } + } + + // create request parameters + $arguments = sfToolkit::arrayDeepMerge($defaults, $arguments); + if (in_array($method, array('post', 'put', 'delete'))) + { + return array($url, $method, $arguments); + } + else + { + $queryString = http_build_query($arguments, null, '&'); + $sep = false === strpos($url, '?') ? '?' : '&'; + + return array($url.($queryString ? $sep.$queryString : ''), 'get', array()); + } + } + + /** + * Parses arguments as array + * + * @param string $name The argument name + * @param string $value The argument value + * @param array $vars + */ + protected function parseArgumentAsArray($name, $value, &$vars) + { + if (false !== $pos = strpos($name, '[')) + { + $var = &$vars; + $tmps = array_filter(preg_split('/(\[ | \[\] | \])/x', $name), create_function('$s', 'return $s !== "";')); + foreach ($tmps as $tmp) + { + $var = &$var[$tmp]; + } + if ($var && '[]' === substr($name, -2)) + { + if (!is_array($var)) + { + $var = array($var); + } + $var[] = $value; + } + else + { + $var = $value; + } + } + else + { + $vars[$name] = $value; + } + } + + /** + * Reset browser to original state + * + * @return sfBrowserBase + */ + public function restart() + { + $this->newSession(); + $this->cookieJar = array(); + $this->stack = array(); + $this->fields = array(); + $this->vars = array(); + $this->dom = null; + $this->stackPosition = -1; + + return $this; + } + + /** + * Shutdown function to clean up and remove sessions + * + * @return void + */ + public function shutdown() + { + $this->checkCurrentExceptionIsEmpty(); + } + + /** + * Fixes uri removing # declarations and front controller. + * + * @param string $uri The URI to fix + * @return string The fixed uri + */ + public function fixUri($uri) + { + // remove absolute information if needed (to be able to do follow redirects, click on links, ...) + if (0 === strpos($uri, 'http')) + { + // detect secure request + if (0 === strpos($uri, 'https')) + { + $this->defaultServerArray['HTTPS'] = 'on'; + } + else + { + unset($this->defaultServerArray['HTTPS']); + } + + $uri = preg_replace('#^https?\://[^/]+/#', '/', $uri); + } + $uri = str_replace('/index.php', '', $uri); + + // # as a uri + if ($uri && '#' == $uri[0]) + { + $uri = $this->stack[$this->stackPosition]['uri'].$uri; + } + + return $uri; + } + + /** + * Creates a new session in the browser. + * + * @return void + */ + protected function newSession() + { + $this->defaultServerArray['session_id'] = $_SERVER['session_id'] = md5(uniqid(rand(), true)); + } +} diff --git a/lib/vendor/symfony/lib/util/sfCallable.class.php b/lib/vendor/symfony/lib/util/sfCallable.class.php new file mode 100644 index 0000000..547e92e --- /dev/null +++ b/lib/vendor/symfony/lib/util/sfCallable.class.php @@ -0,0 +1,64 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfCallable represents a PHP callable. + * + * @package symfony + * @subpackage util + * @author Fabien Potencier + * @version SVN: $Id: sfCallable.class.php 21875 2009-09-11 05:54:39Z fabien $ + */ +class sfCallable +{ + protected + $callable = null; + + /** + * Constructor. + * + * @param mixed $callable A valid PHP callable (must be valid when calling the call() method) + */ + public function __construct($callable) + { + $this->callable = $callable; + } + + /** + * Returns the current callable. + * + * @return mixed The current callable + */ + public function getCallable() + { + return $this->callable; + } + + /** + * Calls the current callable with the given arguments. + * + * The callable is called with the arguments given to this method. + * + * This method throws an exception if the callable is not valid. + * This check is not done during the object construction to allow + * you to load the callable as late as possible. + */ + public function call() + { + if (!is_callable($this->callable)) + { + throw new sfException(sprintf('"%s" is not a valid callable.', is_array($this->callable) ? sprintf('%s:%s', is_object($this->callable[0]) ? get_class($this->callable[0]) : $this->callable[0], $this->callable[1]) : (is_object($this->callable) ? sprintf('Object(%s)', get_class($this->callable)) : var_export($this->callable, true)))); + } + + $arguments = func_get_args(); + + return call_user_func_array($this->callable, $arguments); + } +} diff --git a/lib/vendor/symfony/lib/util/sfClassManipulator.class.php b/lib/vendor/symfony/lib/util/sfClassManipulator.class.php new file mode 100644 index 0000000..14c71b8 --- /dev/null +++ b/lib/vendor/symfony/lib/util/sfClassManipulator.class.php @@ -0,0 +1,314 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfClassManipulator manipulates class code. + * + * @package symfony + * @subpackage util + * @author Fabien Potencier + * @version SVN: $Id: sfClassManipulator.class.php 25063 2009-12-08 06:02:07Z Kris.Wallsmith $ + */ +class sfClassManipulator +{ + static protected $signatureTokens = array( + T_FINAL, + T_ABSTRACT, + T_STATIC, + T_PUBLIC, + T_PROTECTED, + T_PRIVATE, + T_FUNCTION, + ); + + protected $code = '', $file = false; + + /** + * Constructor. + * + * @param string $code The code to manipulate + */ + public function __construct($code) + { + $this->code = $code; + } + + /** + * Creates a manipulator object from a file. + * + * @param string $file A file name + * + * @return sfClassManipulator A sfClassManipulator instance + */ + static public function fromFile($file) + { + $manipulator = new self(file_get_contents($file)); + $manipulator->setFile($file); + + return $manipulator; + } + + /** + * Saves the code back to the associated file. + * + * This only works if you have bound the instance with a file with the setFile() method. + * + * @throw LogicException if no file is associated with the instance + */ + public function save() + { + if (!$this->file) + { + throw new LogicException('Unable to save the code as no file has been provided.'); + } + + file_put_contents($this->file, $this->code); + } + + /** + * Gets the modified code. + * + * @return string The modified code + */ + public function getCode() + { + return $this->code; + } + + /** + * Gets the associated file. + * + * @return string The associated file + */ + public function getFile() + { + return $this->file; + } + + /** + * Sets the file associated with this instance. + * + * @param string A file name + */ + public function setFile($file) + { + $this->file = $file; + } + + /** + * Wraps an existing method with some code. + * + * @param string $method The method name to change + * @param string $topCode The code to add at the top of the method + * @param string $bottomCode The code to add at the bottom of the method + */ + public function wrapMethod($method, $topCode = '', $bottomCode = '') + { + $code = ''; + $insideSetup = -1; + $parens = 0; + foreach (token_get_all($this->code) as $token) + { + if (isset($token[1])) + { + if (-1 == $insideSetup && T_FUNCTION == $token[0]) + { + $insideSetup = 0; + } + elseif (0 == $insideSetup && T_STRING == $token[0]) + { + $insideSetup = $method == $token[1] ? 1 : -1; + } + + $code .= $token[1]; + } + else + { + if (1 == $insideSetup && '{' == $token) + { + if (!$parens) + { + $code .= $topCode ? $token.PHP_EOL.' '.$topCode : $token; + } + else + { + $code .= $token; + } + + ++$parens; + } + elseif (1 == $insideSetup && '}' == $token) + { + --$parens; + + if (!$parens) + { + $insideSetup = -1; + + $code .= $bottomCode ? ' '.$bottomCode.PHP_EOL.' '.$token : $token; + } + else + { + $code .= $token; + } + } + else + { + $code .= $token; + } + } + } + + return $this->code = $code; + } + + /** + * Filters each line of the given method through a callable. + * + * @param string $method The method name + * @param mixed $callable A PHP callable that accepts and returns one line of PHP code + */ + public function filterMethod($method, $callable) + { + $line = ''; + $code = ''; + $insideSetup = -1; + $parens = 0; + $break = false; + + $tokens = token_get_all($this->code); + for ($i = 0; $i < count($tokens); $i++) + { + $token = $tokens[$i]; + + if (is_array($token)) + { + $line .= $token[1]; + + if (-1 == $insideSetup && T_FUNCTION == $token[0]) + { + $insideSetup = 0; + } + elseif (0 == $insideSetup && T_STRING == $token[0]) + { + $insideSetup = $method == $token[1] ? 1 : -1; + } + } + else + { + if (1 == $insideSetup && '{' == $token) + { + ++$parens; + } + elseif (1 == $insideSetup && '}' == $token) + { + --$parens; + + if (!$parens) + { + $break = true; + } + } + + $line .= $token; + } + + $lines = preg_split('/(\r?\n)/', $line, null, PREG_SPLIT_DELIM_CAPTURE); + if (count($lines) > 1 || $break) + { + $line = $break ? '' : array_pop($lines); + foreach (array_chunk($lines, 2) as $chunk) + { + list($l, $eol) = array_pad($chunk, 2, ''); + + if (1 == $insideSetup) + { + list($before, $setup) = $this->splitSetup($l); + $code .= $before; + $code .= call_user_func($callable, $setup.$eol); + } + else + { + $code .= $l.$eol; + } + } + } + + if ($break) + { + $insideSetup = -1; + $break = false; + } + } + + if ($line) + { + $code .= $line; + } + + return $this->code = $code; + } + + protected function splitSetup($line) + { + $before = ''; + $setup = ''; + + if ($line) + { + if (false === stripos($line, 'getTokenValue($token); + if (is_array($token) && in_array($token[0], self::$signatureTokens)) + { + $inSignature = true; + } + elseif ($inSignature && !preg_match('/\s+/', $value)) + { + // clean up + preg_match('/^\s*/', $setup, $match); + $before = implode('', array_map(array($this, 'getTokenValue'), $tokens)).$value.$match[0]; + $setup = substr($setup, strlen($match[0])); + + return array($before, $setup); + } + + $setup = $value.$setup; + } + } + + return array($before, $setup); + } + + /** + * Returns a token's string value. + * + * @param array|string $token + * + * @return string + */ + protected function getTokenValue($token) + { + return is_array($token) ? $token[1] : $token; + } +} diff --git a/lib/vendor/symfony/lib/util/sfContext.class.php b/lib/vendor/symfony/lib/util/sfContext.class.php new file mode 100644 index 0000000..29e65cb --- /dev/null +++ b/lib/vendor/symfony/lib/util/sfContext.class.php @@ -0,0 +1,613 @@ + + * (c) 2004-2006 Sean Kerr + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfContext provides information about the current application context, such as + * the module and action names and the module directory. References to the + * main symfony instances are also provided. + * + * @package symfony + * @subpackage util + * @author Fabien Potencier + * @author Sean Kerr + * @version SVN: $Id: sfContext.class.php 23922 2009-11-14 14:58:38Z fabien $ + */ +class sfContext implements ArrayAccess +{ + protected + $dispatcher = null, + $configuration = null, + $mailerConfiguration = array(), + $factories = array(); + + protected static + $instances = array(), + $current = 'default'; + + /** + * Creates a new context instance. + * + * @param sfApplicationConfiguration $configuration An sfApplicationConfiguration instance + * @param string $name A name for this context (application name by default) + * @param string $class The context class to use (sfContext by default) + * + * @return sfContext An sfContext instance + */ + static public function createInstance(sfApplicationConfiguration $configuration, $name = null, $class = __CLASS__) + { + if (null === $name) + { + $name = $configuration->getApplication(); + } + + self::$current = $name; + + self::$instances[$name] = new $class(); + + if (!self::$instances[$name] instanceof sfContext) + { + throw new sfFactoryException(sprintf('Class "%s" is not of the type sfContext.', $class)); + } + + self::$instances[$name]->initialize($configuration); + + return self::$instances[$name]; + } + + /** + * Initializes the current sfContext instance. + * + * @param sfApplicationConfiguration $configuration An sfApplicationConfiguration instance + */ + public function initialize(sfApplicationConfiguration $configuration) + { + $this->configuration = $configuration; + $this->dispatcher = $configuration->getEventDispatcher(); + + try + { + $this->loadFactories(); + } + catch (sfException $e) + { + $e->printStackTrace(); + } + catch (Exception $e) + { + sfException::createFromException($e)->printStackTrace(); + } + + $this->dispatcher->connect('template.filter_parameters', array($this, 'filterTemplateParameters')); + + // register our shutdown function + register_shutdown_function(array($this, 'shutdown')); + } + + /** + * Retrieves the singleton instance of this class. + * + * @param string $name The name of the sfContext to retrieve. + * @param string $class The context class to use (sfContext by default) + * + * @return sfContext An sfContext implementation instance. + */ + static public function getInstance($name = null, $class = __CLASS__) + { + if (null === $name) + { + $name = self::$current; + } + + if (!isset(self::$instances[$name])) + { + throw new sfException(sprintf('The "%s" context does not exist.', $name)); + } + + return self::$instances[$name]; + } + + /** + * Checks to see if there has been a context created + * + * @param string $name The name of the sfContext to check for + * + * @return bool true is instanced, otherwise false + */ + + public static function hasInstance($name = null) + { + if (null === $name) + { + $name = self::$current; + } + + return isset(self::$instances[$name]); + } + + /** + * Loads the symfony factories. + */ + public function loadFactories() + { + if (sfConfig::get('sf_use_database')) + { + // setup our database connections + $this->factories['databaseManager'] = new sfDatabaseManager($this->configuration, array('auto_shutdown' => false)); + } + + // create a new action stack + $this->factories['actionStack'] = new sfActionStack(); + + if (sfConfig::get('sf_debug') && sfConfig::get('sf_logging_enabled')) + { + $timer = sfTimerManager::getTimer('Factories'); + } + + // include the factories configuration + require($this->configuration->getConfigCache()->checkConfig('config/factories.yml')); + + $this->dispatcher->notify(new sfEvent($this, 'context.load_factories')); + + if (sfConfig::get('sf_debug') && sfConfig::get('sf_logging_enabled')) + { + $timer->addTime(); + } + } + + /** + * Dispatches the current request. + */ + public function dispatch() + { + $this->getController()->dispatch(); + } + + /** + * Sets the current context to something else + * + * @param string $name The name of the context to switch to + * + */ + public static function switchTo($name) + { + if (!isset(self::$instances[$name])) + { + $currentConfiguration = sfContext::getInstance()->getConfiguration(); + sfContext::createInstance(ProjectConfiguration::getApplicationConfiguration($name, $currentConfiguration->getEnvironment(), $currentConfiguration->isDebug())); + } + + self::$current = $name; + + sfContext::getInstance()->getConfiguration()->activate(); + } + + /** + * Returns the configuration instance. + * + * @return sfApplicationConfiguration The current application configuration instance + */ + public function getConfiguration() + { + return $this->configuration; + } + + /** + * Retrieves the current event dispatcher. + * + * @return sfEventDispatcher An sfEventDispatcher instance + */ + public function getEventDispatcher() + { + return $this->dispatcher; + } + + /** + * Retrieve the action name for this context. + * + * @return string The currently executing action name, if one is set, + * otherwise null. + */ + public function getActionName() + { + // get the last action stack entry + if ($this->factories['actionStack'] && $lastEntry = $this->factories['actionStack']->getLastEntry()) + { + return $lastEntry->getActionName(); + } + } + + + /** + * Retrieve the ActionStack. + * + * @return sfActionStack the sfActionStack instance + */ + public function getActionStack() + { + return $this->factories['actionStack']; + } + + /** + * Retrieve the controller. + * + * @return sfController The current sfController implementation instance. + */ + public function getController() + { + return isset($this->factories['controller']) ? $this->factories['controller'] : null; + } + + /** + * Retrieves the mailer. + * + * @return sfMailer The current sfMailer implementation instance. + */ + public function getMailer() + { + if (!isset($this->factories['mailer'])) + { + $this->factories['mailer'] = new $this->mailerConfiguration['class']($this->dispatcher, $this->mailerConfiguration); + } + + return $this->factories['mailer']; + } + + public function setMailerConfiguration($configuration) + { + $this->mailerConfiguration = $configuration; + } + + /** + * Retrieve the logger. + * + * @return sfLogger The current sfLogger implementation instance. + */ + public function getLogger() + { + if (!isset($this->factories['logger'])) + { + $this->factories['logger'] = new sfNoLogger($this->dispatcher); + } + + return $this->factories['logger']; + } + + /** + * Retrieve a database connection from the database manager. + * + * This is a shortcut to manually getting a connection from an existing + * database implementation instance. + * + * If the [sf_use_database] setting is off, this will return null. + * + * @param name $name A database name. + * + * @return mixed A database instance. + * + * @throws sfDatabaseException if the requested database name does not exist. + */ + public function getDatabaseConnection($name = 'default') + { + if (null !== $this->factories['databaseManager']) + { + return $this->factories['databaseManager']->getDatabase($name)->getConnection(); + } + + return null; + } + + /** + * Retrieve the database manager. + * + * @return sfDatabaseManager The current sfDatabaseManager instance. + */ + public function getDatabaseManager() + { + return isset($this->factories['databaseManager']) ? $this->factories['databaseManager'] : null; + } + + /** + * Retrieve the module directory for this context. + * + * @return string An absolute filesystem path to the directory of the + * currently executing module, if one is set, otherwise null. + */ + public function getModuleDirectory() + { + // get the last action stack entry + if (isset($this->factories['actionStack']) && $lastEntry = $this->factories['actionStack']->getLastEntry()) + { + return sfConfig::get('sf_app_module_dir').'/'.$lastEntry->getModuleName(); + } + } + + /** + * Retrieve the module name for this context. + * + * @return string The currently executing module name, if one is set, + * otherwise null. + */ + public function getModuleName() + { + // get the last action stack entry + if (isset($this->factories['actionStack']) && $lastEntry = $this->factories['actionStack']->getLastEntry()) + { + return $lastEntry->getModuleName(); + } + } + + /** + * Retrieve the request. + * + * @return sfRequest The current sfRequest implementation instance. + */ + public function getRequest() + { + return isset($this->factories['request']) ? $this->factories['request'] : null; + } + + /** + * Retrieve the response. + * + * @return sfResponse The current sfResponse implementation instance. + */ + public function getResponse() + { + return isset($this->factories['response']) ? $this->factories['response'] : null; + } + + /** + * Set the response object. + * + * @param sfResponse $response An sfResponse instance. + * + * @return void + */ + public function setResponse($response) + { + $this->factories['response'] = $response; + } + + /** + * Retrieve the storage. + * + * @return sfStorage The current sfStorage implementation instance. + */ + public function getStorage() + { + return isset($this->factories['storage']) ? $this->factories['storage'] : null; + } + + /** + * Retrieve the view cache manager + * + * @return sfViewCacheManager The current sfViewCacheManager implementation instance. + */ + public function getViewCacheManager() + { + return isset($this->factories['viewCacheManager']) ? $this->factories['viewCacheManager'] : null; + } + + /** + * Retrieve the i18n instance + * + * @return sfI18N The current sfI18N implementation instance. + */ + public function getI18N() + { + if (!sfConfig::get('sf_i18n')) + { + throw new sfConfigurationException('You must enable i18n support in your settings.yml configuration file.'); + } + + return $this->factories['i18n']; + } + + /** + * Retrieve the routing instance. + * + * @return sfRouting The current sfRouting implementation instance. + */ + public function getRouting() + { + return isset($this->factories['routing']) ? $this->factories['routing'] : null; + } + + /** + * Retrieve the user. + * + * @return sfUser The current sfUser implementation instance. + */ + public function getUser() + { + return isset($this->factories['user']) ? $this->factories['user'] : null; + } + + /** + * Returns the configuration cache. + * + * @return sfConfigCache A sfConfigCache instance + */ + public function getConfigCache() + { + return $this->configuration->getConfigCache(); + } + + /** + * Returns true if the context object exists (implements the ArrayAccess interface). + * + * @param string $name The name of the context object + * + * @return Boolean true if the context object exists, false otherwise + */ + public function offsetExists($name) + { + return $this->has($name); + } + + /** + * Returns the context object associated with the name (implements the ArrayAccess interface). + * + * @param string $name The offset of the value to get + * + * @return mixed The context object if exists, null otherwise + */ + public function offsetGet($name) + { + return $this->get($name); + } + + /** + * Sets the context object associated with the offset (implements the ArrayAccess interface). + * + * @param string $offset The parameter name + * @param string $value The parameter value + */ + public function offsetSet($offset, $value) + { + $this->set($offset, $value); + } + + /** + * Unsets the context object associated with the offset (implements the ArrayAccess interface). + * + * @param string $offset The parameter name + */ + public function offsetUnset($offset) + { + unset($this->factories[$offset]); + } + + /** + * Gets an object from the current context. + * + * @param string $name The name of the object to retrieve + * + * @return object The object associated with the given name + */ + public function get($name) + { + if (!$this->has($name)) + { + throw new sfException(sprintf('The "%s" object does not exist in the current context.', $name)); + } + + return $this->factories[$name]; + } + + /** + * Puts an object in the current context. + * + * @param string $name The name of the object to store + * @param object $object The object to store + */ + public function set($name, $object) + { + $this->factories[$name] = $object; + } + + /** + * Returns true if an object is currently stored in the current context with the given name, false otherwise. + * + * @param string $name The object name + * + * @return bool true if the object is not null, false otherwise + */ + public function has($name) + { + return isset($this->factories[$name]); + } + + /** + * Listens to the template.filter_parameters event. + * + * @param sfEvent $event An sfEvent instance + * @param array $parameters An array of template parameters to filter + * + * @return array The filtered parameters array + */ + public function filterTemplateParameters(sfEvent $event, $parameters) + { + $parameters['sf_context'] = $this; + $parameters['sf_request'] = $this->factories['request']; + $parameters['sf_params'] = $this->factories['request']->getParameterHolder(); + $parameters['sf_response'] = $this->factories['response']; + $parameters['sf_user'] = $this->factories['user']; + + return $parameters; + } + + /** + * Calls methods defined via sfEventDispatcher. + * + * If a method cannot be found via sfEventDispatcher, the method name will + * be parsed to magically handle getMyFactory() and setMyFactory() methods. + * + * @param string $method The method name + * @param array $arguments The method arguments + * + * @return mixed The returned value of the called method + * + * @throws sfException if call fails + */ + public function __call($method, $arguments) + { + $event = $this->dispatcher->notifyUntil(new sfEvent($this, 'context.method_not_found', array('method' => $method, 'arguments' => $arguments))); + if (!$event->isProcessed()) + { + $verb = substr($method, 0, 3); // get | set + $factory = strtolower(substr($method, 3)); // factory name + + if ('get' == $verb && $this->has($factory)) + { + return $this->factories[$factory]; + } + else if ('set' == $verb && isset($arguments[0])) + { + return $this->set($factory, $arguments[0]); + } + + throw new sfException(sprintf('Call to undefined method %s::%s.', get_class($this), $method)); + } + + return $event->getReturnValue(); + } + + /** + * Execute the shutdown procedure. + * + * @return void + */ + public function shutdown() + { + // shutdown all factories + if($this->has('user')) + { + $this->getUser()->shutdown(); + $this->getStorage()->shutdown(); + } + + if ($this->has('routing')) + { + $this->getRouting()->shutdown(); + } + + if (sfConfig::get('sf_use_database')) + { + $this->getDatabaseManager()->shutdown(); + } + + if (sfConfig::get('sf_logging_enabled')) + { + $this->getLogger()->shutdown(); + } + } +} diff --git a/lib/vendor/symfony/lib/util/sfDomCssSelector.class.php b/lib/vendor/symfony/lib/util/sfDomCssSelector.class.php new file mode 100644 index 0000000..1a401d3 --- /dev/null +++ b/lib/vendor/symfony/lib/util/sfDomCssSelector.class.php @@ -0,0 +1,626 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfDomCssSelector allows to navigate a DOM with CSS selector. + * + * Based on getElementsBySelector version 0.4 - Simon Willison, March 25th 2003 + * http://simon.incutio.com/archive/2003/03/25/getElementsBySelector + * + * Some methods based on the jquery library + * + * @package symfony + * @subpackage util + * @author Fabien Potencier + * @version SVN: $Id: sfDomCssSelector.class.php 31893 2011-01-24 18:11:45Z fabien $ + */ +class sfDomCssSelector implements Countable, Iterator +{ + public $nodes = array(); + + private $count; + + public function __construct($nodes) + { + if (!is_array($nodes)) + { + $nodes = array($nodes); + } + + $this->nodes = $nodes; + } + + public function getNodes() + { + return $this->nodes; + } + + public function getNode() + { + return $this->nodes ? $this->nodes[0] : null; + } + + public function getValue() + { + return $this->nodes[0]->nodeValue; + } + + public function getValues() + { + $values = array(); + foreach ($this->nodes as $node) + { + $values[] = $node->nodeValue; + } + + return $values; + } + + public function matchSingle($selector) + { + $nodes = $this->getElements($selector); + + return $nodes ? new sfDomCssSelector($nodes[0]) : new sfDomCssSelector(array()); + } + + public function matchAll($selector) + { + $nodes = $this->getElements($selector); + + return $nodes ? new sfDomCssSelector($nodes) : new sfDomCssSelector(array()); + } + + protected function getElements($selector) + { + $nodes = array(); + foreach ($this->nodes as $node) + { + $result_nodes = $this->getElementsForNode($selector, $node); + if ($result_nodes) + { + $nodes = array_merge($nodes, $result_nodes); + } + } + + foreach ($nodes as $node) + { + $node->removeAttribute('sf_matched'); + } + + return $nodes; + } + + protected function getElementsForNode($selector, $root_node) + { + $all_nodes = array(); + foreach ($this->tokenize_selectors($selector) as $selector) + { + $nodes = array($root_node); + foreach ($this->tokenize($selector) as $token) + { + $combinator = $token['combinator']; + $selector = $token['selector']; + + $token = trim($token['name']); + + $pos = strpos($token, '#'); + if (false !== $pos && preg_match('/^[A-Za-z0-9]*$/', substr($token, 0, $pos))) + { + // Token is an ID selector + $tagName = substr($token, 0, $pos); + $id = substr($token, $pos + 1); + $xpath = new DomXPath($root_node); + $element = $xpath->query(sprintf("//*[@id = '%s']", $id))->item(0); + if (!$element || ($tagName && strtolower($element->nodeName) != $tagName)) + { + // tag with that ID not found + return array(); + } + + // Set nodes to contain just this element + $nodes = array($element); + $nodes = $this->matchMultipleCustomSelectors($nodes, $selector); + + continue; // Skip to next token + } + + $pos = strpos($token, '.'); + if (false !== $pos && preg_match('/^[A-Za-z0-9\*]*$/', substr($token, 0, $pos))) + { + // Token contains a class selector + $tagName = substr($token, 0, $pos); + if (!$tagName) + { + $tagName = '*'; + } + $className = substr($token, $pos + 1); + + // Get elements matching tag, filter them for class selector + $founds = $this->getElementsByTagName($nodes, $tagName, $combinator); + $nodes = array(); + foreach ($founds as $found) + { + if (preg_match('/(^|\s+)'.$className.'($|\s+)/', $found->getAttribute('class'))) + { + $nodes[] = $found; + } + } + + $nodes = $this->matchMultipleCustomSelectors($nodes, $selector); + + continue; // Skip to next token + } + + // Code to deal with attribute selectors + if (preg_match('/^(\w+|\*)(\[.+\])$/', $token, $matches)) + { + $tagName = $matches[1] ? $matches[1] : '*'; + preg_match_all('/ + \[ + ([\w\-]+) # attribute + ([=~\|\^\$\*]?) # modifier (optional) + =? # equal (optional) + ( + "([^"]*)" # quoted value (optional) + | + ([^\]]*) # non quoted value (optional) + ) + \] + /x', $matches[2], $matches, PREG_SET_ORDER); + + // Grab all of the tagName elements within current node + $founds = $this->getElementsByTagName($nodes, $tagName, $combinator); + $nodes = array(); + foreach ($founds as $found) + { + $ok = false; + foreach ($matches as $match) + { + $attrName = $match[1]; + $attrOperator = $match[2]; + $attrValue = $match[4] === '' ? (isset($match[5]) ? $match[5] : '') : $match[4]; + + switch ($attrOperator) + { + case '=': // Equality + $ok = $found->getAttribute($attrName) == $attrValue; + break; + case '~': // Match one of space seperated words + $ok = preg_match('/\b'.preg_quote($attrValue, '/').'\b/', $found->getAttribute($attrName)); + break; + case '|': // Match start with value followed by optional hyphen + $ok = preg_match('/^'.preg_quote($attrValue, '/').'-?/', $found->getAttribute($attrName)); + break; + case '^': // Match starts with value + $ok = 0 === strpos($found->getAttribute($attrName), $attrValue); + break; + case '$': // Match ends with value + $ok = $attrValue == substr($found->getAttribute($attrName), -strlen($attrValue)); + break; + case '*': // Match ends with value + $ok = false !== strpos($found->getAttribute($attrName), $attrValue); + break; + default : + // Just test for existence of attribute + $ok = $found->hasAttribute($attrName); + } + + if (false == $ok) + { + break; + } + } + + if ($ok) + { + $nodes[] = $found; + } + } + + continue; // Skip to next token + } + + // If we get here, token is JUST an element (not a class or ID selector) + $nodes = $this->getElementsByTagName($nodes, $token, $combinator); + + $nodes = $this->matchMultipleCustomSelectors($nodes, $selector); + } + + foreach ($nodes as $node) + { + if (!$node->getAttribute('sf_matched')) + { + $node->setAttribute('sf_matched', true); + $all_nodes[] = $node; + } + } + } + + return $all_nodes; + } + + protected function getElementsByTagName($nodes, $tagName, $combinator = ' ') + { + $founds = array(); + foreach ($nodes as $node) + { + switch ($combinator) + { + case ' ': + // Descendant selector + foreach ($node->getElementsByTagName($tagName) as $element) + { + $founds[] = $element; + } + break; + case '>': + // Child selector + foreach ($node->childNodes as $element) + { + if ($tagName == $element->nodeName) + { + $founds[] = $element; + } + } + break; + case '+': + // Adjacent selector + $element = $node->nextSibling; + if ($element && '#text' == $element->nodeName) + { + $element = $element->nextSibling; + } + + if ($element && $tagName == $element->nodeName) + { + $founds[] = $element; + } + break; + default: + throw new Exception(sprintf('Unrecognized combinator "%s".', $combinator)); + } + } + + return $founds; + } + + protected function tokenize_selectors($selector) + { + // split tokens by , except in an attribute selector + $tokens = array(); + $quoted = false; + $token = ''; + for ($i = 0, $max = strlen($selector); $i < $max; $i++) + { + if (',' == $selector[$i] && !$quoted) + { + $tokens[] = trim($token); + $token = ''; + } + else if ('"' == $selector[$i]) + { + $token .= $selector[$i]; + $quoted = $quoted ? false : true; + } + else + { + $token .= $selector[$i]; + } + } + if ($token) + { + $tokens[] = trim($token); + } + + return $tokens; + } + + protected function tokenize($selector) + { + // split tokens by space except if space is in an attribute selector + $tokens = array(); + $combinators = array(' ', '>', '+'); + $quoted = false; + $token = array('combinator' => ' ', 'name' => ''); + for ($i = 0, $max = strlen($selector); $i < $max; $i++) + { + if (in_array($selector[$i], $combinators) && !$quoted) + { + // remove all whitespaces around the combinator + $combinator = $selector[$i]; + while (in_array($selector[$i + 1], $combinators)) + { + if (' ' != $selector[++$i]) + { + $combinator = $selector[$i]; + } + } + + $tokens[] = $token; + $token = array('combinator' => $combinator, 'name' => ''); + } + else if ('"' == $selector[$i]) + { + $token['name'] .= $selector[$i]; + $quoted = $quoted ? false : true; + } + else + { + $token['name'] .= $selector[$i]; + } + } + if ($token['name']) + { + $tokens[] = $token; + } + + foreach ($tokens as &$token) + { + list($token['name'], $token['selector']) = $this->tokenize_selector_name($token['name']); + } + + return $tokens; + } + + protected function tokenize_selector_name($token_name) + { + // split custom selector + $quoted = false; + $name = ''; + $selector = ''; + $in_selector = false; + for ($i = 0, $max = strlen($token_name); $i < $max; $i++) + { + if ('"' == $token_name[$i]) + { + $quoted = $quoted ? false : true; + } + + if (!$quoted && ':' == $token_name[$i]) + { + $in_selector = true; + } + + if ($in_selector) + { + $selector .= $token_name[$i]; + } + else + { + $name .= $token_name[$i]; + } + } + + return array($name, $selector); + } + + protected function matchMultipleCustomSelectors($nodes, $selector) + { + if (!$selector) + { + return $nodes; + } + + foreach ($this->split_custom_selector($selector) as $selector) { + $nodes = $this->matchCustomSelector($nodes, $selector); + } + return $nodes; + } + + protected function matchCustomSelector($nodes, $selector) + { + if (!$selector) + { + return $nodes; + } + + $selector = $this->tokenize_custom_selector($selector); + $matchingNodes = array(); + for ($i = 0, $max = count($nodes); $i < $max; $i++) + { + switch ($selector['selector']) + { + case 'contains': + if (false !== strpos($nodes[$i]->textContent, $selector['parameter'])) + { + $matchingNodes[] = $nodes[$i]; + } + break; + case 'nth-child': + if ($nodes[$i] === $this->nth($nodes[$i]->parentNode->firstChild, (integer) $selector['parameter'])) + { + $matchingNodes[] = $nodes[$i]; + } + break; + case 'first-child': + if ($nodes[$i] === $this->nth($nodes[$i]->parentNode->firstChild)) + { + $matchingNodes[] = $nodes[$i]; + } + break; + case 'last-child': + if ($nodes[$i] === $this->nth($nodes[$i]->parentNode->lastChild, 1, 'previousSibling')) + { + $matchingNodes[] = $nodes[$i]; + } + break; + case 'lt': + if ($i < (integer) $selector['parameter']) + { + $matchingNodes[] = $nodes[$i]; + } + break; + case 'gt': + if ($i > (integer) $selector['parameter']) + { + $matchingNodes[] = $nodes[$i]; + } + break; + case 'odd': + if ($i % 2) + { + $matchingNodes[] = $nodes[$i]; + } + break; + case 'even': + if (0 == $i % 2) + { + $matchingNodes[] = $nodes[$i]; + } + break; + case 'nth': + case 'eq': + if ($i == (integer) $selector['parameter']) + { + $matchingNodes[] = $nodes[$i]; + } + break; + case 'first': + if ($i == 0) + { + $matchingNodes[] = $nodes[$i]; + } + break; + case 'last': + if ($i == $max - 1) + { + $matchingNodes[] = $nodes[$i]; + } + break; + default: + throw new Exception(sprintf('Unrecognized selector "%s".', $selector['selector'])); + } + } + + return $matchingNodes; + } + + protected function split_custom_selector($selectors) + { + if (!preg_match_all('/ + : + (?:[a-zA-Z0-9\-]+) + (?: + \( + (?: + ("|\')(?:.*?)?\1 + | + (?:.*?) + ) + \) + )? + /x', $selectors, $matches, PREG_PATTERN_ORDER)) + { + throw new Exception(sprintf('Unable to split custom selector "%s".', $selectors)); + } + return $matches[0]; + } + + protected function tokenize_custom_selector($selector) + { + if (!preg_match('/ + ([a-zA-Z0-9\-]+) + (?: + \( + (?: + ("|\')(.*)?\2 + | + (.*?) + ) + \) + )? + /x', substr($selector, 1), $matches)) + { + throw new Exception(sprintf('Unable to parse custom selector "%s".', $selector)); + } + return array('selector' => $matches[1], 'parameter' => isset($matches[3]) ? ($matches[3] ? $matches[3] : $matches[4]) : ''); + } + + protected function nth($cur, $result = 1, $dir = 'nextSibling') + { + $num = 0; + for (; $cur; $cur = $cur->$dir) + { + if (1 == $cur->nodeType) + { + ++$num; + } + + if ($num == $result) + { + return $cur; + } + } + } + + /** + * Reset the array to the beginning (as required for the Iterator interface). + */ + public function rewind() + { + reset($this->nodes); + + $this->count = count($this->nodes); + } + + /** + * Get the key associated with the current value (as required by the Iterator interface). + * + * @return string The key + */ + public function key() + { + return key($this->nodes); + } + + /** + * Escapes and return the current value (as required by the Iterator interface). + * + * @return mixed The escaped value + */ + public function current() + { + return current($this->nodes); + } + + /** + * Moves to the next element (as required by the Iterator interface). + */ + public function next() + { + next($this->nodes); + + $this->count --; + } + + /** + * Returns true if the current element is valid (as required by the Iterator interface). + * + * The current element will not be valid if {@link next()} has fallen off the + * end of the array or if there are no elements in the array and {@link + * rewind()} was called. + * + * @return bool The validity of the current element; true if it is valid + */ + public function valid() + { + return $this->count > 0; + } + + /** + * Returns the number of matching nodes (implements Countable). + * + * @param integer The number of matching nodes + */ + public function count() + { + return count($this->nodes); + } +} diff --git a/lib/vendor/symfony/lib/util/sfFinder.class.php b/lib/vendor/symfony/lib/util/sfFinder.class.php new file mode 100644 index 0000000..f95d97a --- /dev/null +++ b/lib/vendor/symfony/lib/util/sfFinder.class.php @@ -0,0 +1,793 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + + +/** + * + * Allow to build rules to find files and directories. + * + * All rules may be invoked several times, except for ->in() method. + * Some rules are cumulative (->name() for example) whereas others are destructive + * (most recent value is used, ->maxdepth() method for example). + * + * All methods return the current sfFinder object to allow easy chaining: + * + * $files = sfFinder::type('file')->name('*.php')->in(.); + * + * Interface loosely based on perl File::Find::Rule module. + * + * @package symfony + * @subpackage util + * @author Fabien Potencier + * @version SVN: $Id: sfFinder.class.php 32891 2011-08-05 07:48:34Z fabien $ + */ +class sfFinder +{ + protected $type = 'file'; + protected $names = array(); + protected $prunes = array(); + protected $discards = array(); + protected $execs = array(); + protected $mindepth = 0; + protected $sizes = array(); + protected $maxdepth = 1000000; + protected $relative = false; + protected $follow_link = false; + protected $sort = false; + protected $ignore_version_control = true; + + /** + * Sets maximum directory depth. + * + * Finder will descend at most $level levels of directories below the starting point. + * + * @param int $level + * @return sfFinder current sfFinder object + */ + public function maxdepth($level) + { + $this->maxdepth = $level; + + return $this; + } + + /** + * Sets minimum directory depth. + * + * Finder will start applying tests at level $level. + * + * @param int $level + * @return sfFinder current sfFinder object + */ + public function mindepth($level) + { + $this->mindepth = $level; + + return $this; + } + + public function get_type() + { + return $this->type; + } + + /** + * Sets the type of elements to returns. + * + * @param string $name directory or file or any (for both file and directory) + * @return sfFinder new sfFinder object + */ + public static function type($name) + { + $finder = new self(); + return $finder->setType($name); + } + /** + * Sets the type of elements to returns. + * + * @param string $name directory or file or any (for both file and directory) + * @return sfFinder Current object + */ + public function setType($name) + { + $name = strtolower($name); + + if (substr($name, 0, 3) === 'dir') + { + $this->type = 'directory'; + + return $this; + } + if ($name === 'any') + { + $this->type = 'any'; + + return $this; + } + + $this->type = 'file'; + + return $this; + } + + /* + * glob, patterns (must be //) or strings + */ + protected function to_regex($str) + { + if (preg_match('/^(!)?([^a-zA-Z0-9\\\\]).+?\\2[ims]?$/', $str)) + { + return $str; + } + + return sfGlobToRegex::glob_to_regex($str); + } + + protected function args_to_array($arg_list, $not = false) + { + $list = array(); + $nbArgList = count($arg_list); + for ($i = 0; $i < $nbArgList; $i++) + { + if (is_array($arg_list[$i])) + { + foreach ($arg_list[$i] as $arg) + { + $list[] = array($not, $this->to_regex($arg)); + } + } + else + { + $list[] = array($not, $this->to_regex($arg_list[$i])); + } + } + + return $list; + } + + /** + * Adds rules that files must match. + * + * You can use patterns (delimited with / sign), globs or simple strings. + * + * $finder->name('*.php') + * $finder->name('/\.php$/') // same as above + * $finder->name('test.php') + * + * @param list a list of patterns, globs or strings + * @return sfFinder Current object + */ + public function name() + { + $args = func_get_args(); + $this->names = array_merge($this->names, $this->args_to_array($args)); + + return $this; + } + + /** + * Adds rules that files must not match. + * + * @see ->name() + * @param list a list of patterns, globs or strings + * @return sfFinder Current object + */ + public function not_name() + { + $args = func_get_args(); + $this->names = array_merge($this->names, $this->args_to_array($args, true)); + + return $this; + } + + /** + * Adds tests for file sizes. + * + * $finder->size('> 10K'); + * $finder->size('<= 1Ki'); + * $finder->size(4); + * + * @param list a list of comparison strings + * @return sfFinder Current object + */ + public function size() + { + $args = func_get_args(); + $numargs = count($args); + for ($i = 0; $i < $numargs; $i++) + { + $this->sizes[] = new sfNumberCompare($args[$i]); + } + + return $this; + } + + /** + * Traverses no further. + * + * @param list a list of patterns, globs to match + * @return sfFinder Current object + */ + public function prune() + { + $args = func_get_args(); + $this->prunes = array_merge($this->prunes, $this->args_to_array($args)); + + return $this; + } + + /** + * Discards elements that matches. + * + * @param list a list of patterns, globs to match + * @return sfFinder Current object + */ + public function discard() + { + $args = func_get_args(); + $this->discards = array_merge($this->discards, $this->args_to_array($args)); + + return $this; + } + + /** + * Ignores version control directories. + * + * Currently supports Subversion, CVS, DARCS, Gnu Arch, Monotone, Bazaar-NG, GIT, Mercurial + * + * @param bool $ignore falase when version control directories shall be included (default is true) + * + * @return sfFinder Current object + */ + public function ignore_version_control($ignore = true) + { + $this->ignore_version_control = $ignore; + + return $this; + } + + /** + * Returns files and directories ordered by name + * + * @return sfFinder Current object + */ + public function sort_by_name() + { + $this->sort = 'name'; + + return $this; + } + + /** + * Returns files and directories ordered by type (directories before files), then by name + * + * @return sfFinder Current object + */ + public function sort_by_type() + { + $this->sort = 'type'; + + return $this; + } + + /** + * Executes function or method for each element. + * + * Element match if functino or method returns true. + * + * $finder->exec('myfunction'); + * $finder->exec(array($object, 'mymethod')); + * + * @param mixed function or method to call + * @return sfFinder Current object + */ + public function exec() + { + $args = func_get_args(); + $numargs = count($args); + for ($i = 0; $i < $numargs; $i++) + { + if (is_array($args[$i]) && !method_exists($args[$i][0], $args[$i][1])) + { + throw new sfException(sprintf('method "%s" does not exist for object "%s".', $args[$i][1], $args[$i][0])); + } + if (!is_array($args[$i]) && !function_exists($args[$i])) + { + throw new sfException(sprintf('function "%s" does not exist.', $args[$i])); + } + + $this->execs[] = $args[$i]; + } + + return $this; + } + + /** + * Returns relative paths for all files and directories. + * + * @return sfFinder Current object + */ + public function relative() + { + $this->relative = true; + + return $this; + } + + /** + * Symlink following. + * + * @return sfFinder Current object + */ + public function follow_link() + { + $this->follow_link = true; + + return $this; + } + + /** + * Searches files and directories which match defined rules. + * + * @return array list of files and directories + */ + public function in() + { + $files = array(); + $here_dir = getcwd(); + + $finder = clone $this; + + if ($this->ignore_version_control) + { + $ignores = array('.svn', '_svn', 'CVS', '_darcs', '.arch-params', '.monotone', '.bzr', '.git', '.hg'); + + $finder->discard($ignores)->prune($ignores); + } + + // first argument is an array? + $numargs = func_num_args(); + $arg_list = func_get_args(); + if ($numargs === 1 && is_array($arg_list[0])) + { + $arg_list = $arg_list[0]; + $numargs = count($arg_list); + } + + for ($i = 0; $i < $numargs; $i++) + { + $dir = realpath($arg_list[$i]); + + if (!is_dir($dir)) + { + continue; + } + + $dir = str_replace('\\', '/', $dir); + + // absolute path? + if (!self::isPathAbsolute($dir)) + { + $dir = $here_dir.'/'.$dir; + } + + $new_files = str_replace('\\', '/', $finder->search_in($dir)); + + if ($this->relative) + { + $new_files = preg_replace('#^'.preg_quote(rtrim($dir, '/'), '#').'/#', '', $new_files); + } + + $files = array_merge($files, $new_files); + } + + if ($this->sort === 'name') + { + sort($files); + } + + return array_unique($files); + } + + protected function search_in($dir, $depth = 0) + { + if ($depth > $this->maxdepth) + { + return array(); + } + + $dir = realpath($dir); + + if ((!$this->follow_link) && is_link($dir)) + { + return array(); + } + + $files = array(); + $temp_files = array(); + $temp_folders = array(); + if (is_dir($dir) && is_readable($dir)) + { + $current_dir = opendir($dir); + while (false !== $entryname = readdir($current_dir)) + { + if ($entryname == '.' || $entryname == '..') continue; + + $current_entry = $dir.DIRECTORY_SEPARATOR.$entryname; + if ((!$this->follow_link) && is_link($current_entry)) + { + continue; + } + + if (is_dir($current_entry)) + { + if ($this->sort === 'type') + { + $temp_folders[$entryname] = $current_entry; + } + else + { + if (($this->type === 'directory' || $this->type === 'any') && ($depth >= $this->mindepth) && !$this->is_discarded($dir, $entryname) && $this->match_names($dir, $entryname) && $this->exec_ok($dir, $entryname)) + { + $files[] = $current_entry; + } + + if (!$this->is_pruned($dir, $entryname)) + { + $files = array_merge($files, $this->search_in($current_entry, $depth + 1)); + } + } + } + else + { + if (($this->type !== 'directory' || $this->type === 'any') && ($depth >= $this->mindepth) && !$this->is_discarded($dir, $entryname) && $this->match_names($dir, $entryname) && $this->size_ok($dir, $entryname) && $this->exec_ok($dir, $entryname)) + { + if ($this->sort === 'type') + { + $temp_files[] = $current_entry; + } + else + { + $files[] = $current_entry; + } + } + } + } + + if ($this->sort === 'type') + { + ksort($temp_folders); + foreach($temp_folders as $entryname => $current_entry) + { + if (($this->type === 'directory' || $this->type === 'any') && ($depth >= $this->mindepth) && !$this->is_discarded($dir, $entryname) && $this->match_names($dir, $entryname) && $this->exec_ok($dir, $entryname)) + { + $files[] = $current_entry; + } + + if (!$this->is_pruned($dir, $entryname)) + { + $files = array_merge($files, $this->search_in($current_entry, $depth + 1)); + } + } + + sort($temp_files); + $files = array_merge($files, $temp_files); + } + + closedir($current_dir); + } + + return $files; + } + + protected function match_names($dir, $entry) + { + if (!count($this->names)) return true; + + // Flags indicating that there was attempts to match + // at least one "not_name" or "name" rule respectively + // to following variables: + $one_not_name_rule = false; + $one_name_rule = false; + + foreach ($this->names as $args) + { + list($not, $regex) = $args; + $not ? $one_not_name_rule = true : $one_name_rule = true; + if (preg_match($regex, $entry)) + { + // We must match ONLY ONE "not_name" or "name" rule: + // if "not_name" rule matched then we return "false" + // if "name" rule matched then we return "true" + return $not ? false : true; + } + } + + if ($one_not_name_rule && $one_name_rule) + { + return false; + } + else if ($one_not_name_rule) + { + return true; + } + else if ($one_name_rule) + { + return false; + } + return true; + } + + protected function size_ok($dir, $entry) + { + if (0 === count($this->sizes)) return true; + + if (!is_file($dir.DIRECTORY_SEPARATOR.$entry)) return true; + + $filesize = filesize($dir.DIRECTORY_SEPARATOR.$entry); + foreach ($this->sizes as $number_compare) + { + if (!$number_compare->test($filesize)) return false; + } + + return true; + } + + protected function is_pruned($dir, $entry) + { + if (0 === count($this->prunes)) return false; + + foreach ($this->prunes as $args) + { + $regex = $args[1]; + if (preg_match($regex, $entry)) return true; + } + + return false; + } + + protected function is_discarded($dir, $entry) + { + if (0 === count($this->discards)) return false; + + foreach ($this->discards as $args) + { + $regex = $args[1]; + if (preg_match($regex, $entry)) return true; + } + + return false; + } + + protected function exec_ok($dir, $entry) + { + if (0 === count($this->execs)) return true; + + foreach ($this->execs as $exec) + { + if (!call_user_func_array($exec, array($dir, $entry))) return false; + } + + return true; + } + + public static function isPathAbsolute($path) + { + if ($path{0} === '/' || $path{0} === '\\' || + (strlen($path) > 3 && ctype_alpha($path{0}) && + $path{1} === ':' && + ($path{2} === '\\' || $path{2} === '/') + ) + ) + { + return true; + } + + return false; + } +} + +/** + * Match globbing patterns against text. + * + * if match_glob("foo.*", "foo.bar") echo "matched\n"; + * + * // prints foo.bar and foo.baz + * $regex = glob_to_regex("foo.*"); + * for (array('foo.bar', 'foo.baz', 'foo', 'bar') as $t) + * { + * if (/$regex/) echo "matched: $car\n"; + * } + * + * sfGlobToRegex implements glob(3) style matching that can be used to match + * against text, rather than fetching names from a filesystem. + * + * based on perl Text::Glob module. + * + * @package symfony + * @subpackage util + * @author Fabien Potencier php port + * @author Richard Clamp perl version + * @copyright 2004-2005 Fabien Potencier + * @copyright 2002 Richard Clamp + * @version SVN: $Id: sfFinder.class.php 32891 2011-08-05 07:48:34Z fabien $ + */ +class sfGlobToRegex +{ + protected static $strict_leading_dot = true; + protected static $strict_wildcard_slash = true; + + public static function setStrictLeadingDot($boolean) + { + self::$strict_leading_dot = $boolean; + } + + public static function setStrictWildcardSlash($boolean) + { + self::$strict_wildcard_slash = $boolean; + } + + /** + * Returns a compiled regex which is the equiavlent of the globbing pattern. + * + * @param string $glob pattern + * @return string regex + */ + public static function glob_to_regex($glob) + { + $first_byte = true; + $escaping = false; + $in_curlies = 0; + $regex = ''; + $sizeGlob = strlen($glob); + for ($i = 0; $i < $sizeGlob; $i++) + { + $car = $glob[$i]; + if ($first_byte) + { + if (self::$strict_leading_dot && $car !== '.') + { + $regex .= '(?=[^\.])'; + } + + $first_byte = false; + } + + if ($car === '/') + { + $first_byte = true; + } + + if ($car === '.' || $car === '(' || $car === ')' || $car === '|' || $car === '+' || $car === '^' || $car === '$') + { + $regex .= "\\$car"; + } + elseif ($car === '*') + { + $regex .= ($escaping ? '\\*' : (self::$strict_wildcard_slash ? '[^/]*' : '.*')); + } + elseif ($car === '?') + { + $regex .= ($escaping ? '\\?' : (self::$strict_wildcard_slash ? '[^/]' : '.')); + } + elseif ($car === '{') + { + $regex .= ($escaping ? '\\{' : '('); + if (!$escaping) ++$in_curlies; + } + elseif ($car === '}' && $in_curlies) + { + $regex .= ($escaping ? '}' : ')'); + if (!$escaping) --$in_curlies; + } + elseif ($car === ',' && $in_curlies) + { + $regex .= ($escaping ? ',' : '|'); + } + elseif ($car === '\\') + { + if ($escaping) + { + $regex .= '\\\\'; + $escaping = false; + } + else + { + $escaping = true; + } + + continue; + } + else + { + $regex .= $car; + } + $escaping = false; + } + + return '#^'.$regex.'$#'; + } +} + +/** + * Numeric comparisons. + * + * sfNumberCompare compiles a simple comparison to an anonymous + * subroutine, which you can call with a value to be tested again. + + * Now this would be very pointless, if sfNumberCompare didn't understand + * magnitudes. + + * The target value may use magnitudes of kilobytes (k, ki), + * megabytes (m, mi), or gigabytes (g, gi). Those suffixed + * with an i use the appropriate 2**n version in accordance with the + * IEC standard: http://physics.nist.gov/cuu/Units/binary.html + * + * based on perl Number::Compare module. + * + * @package symfony + * @subpackage util + * @author Fabien Potencier php port + * @author Richard Clamp perl version + * @copyright 2004-2005 Fabien Potencier + * @copyright 2002 Richard Clamp + * @see http://physics.nist.gov/cuu/Units/binary.html + * @version SVN: $Id: sfFinder.class.php 32891 2011-08-05 07:48:34Z fabien $ + */ +class sfNumberCompare +{ + protected $test = ''; + + public function __construct($test) + { + $this->test = $test; + } + + public function test($number) + { + if (!preg_match('{^([<>]=?)?(.*?)([kmg]i?)?$}i', $this->test, $matches)) + { + throw new sfException(sprintf('don\'t understand "%s" as a test.', $this->test)); + } + + $target = array_key_exists(2, $matches) ? $matches[2] : ''; + $magnitude = array_key_exists(3, $matches) ? $matches[3] : ''; + if (strtolower($magnitude) === 'k') $target *= 1000; + if (strtolower($magnitude) === 'ki') $target *= 1024; + if (strtolower($magnitude) === 'm') $target *= 1000000; + if (strtolower($magnitude) === 'mi') $target *= 1024*1024; + if (strtolower($magnitude) === 'g') $target *= 1000000000; + if (strtolower($magnitude) === 'gi') $target *= 1024*1024*1024; + + $comparison = array_key_exists(1, $matches) ? $matches[1] : '=='; + if ($comparison === '==' || $comparison == '') + { + return ($number == $target); + } + if ($comparison === '>') + { + return ($number > $target); + } + if ($comparison === '>=') + { + return ($number >= $target); + } + if ($comparison === '<') + { + return ($number < $target); + } + if ($comparison === '<=') + { + return ($number <= $target); + } + + return false; + } +} diff --git a/lib/vendor/symfony/lib/util/sfInflector.class.php b/lib/vendor/symfony/lib/util/sfInflector.class.php new file mode 100644 index 0000000..195fb1e --- /dev/null +++ b/lib/vendor/symfony/lib/util/sfInflector.class.php @@ -0,0 +1,121 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * + * @package symfony + * @subpackage util + * @author Fabien Potencier + * @version SVN: $Id: sfInflector.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $ + */ +class sfInflector +{ + /** + * Returns a camelized string from a lower case and underscored string by replaceing slash with + * double-colon and upper-casing each letter preceded by an underscore. + * + * @param string $lower_case_and_underscored_word String to camelize. + * + * @return string Camelized string. + */ + public static function camelize($lower_case_and_underscored_word) + { + $tmp = $lower_case_and_underscored_word; + $tmp = sfToolkit::pregtr($tmp, array('#/(.?)#e' => "'::'.strtoupper('\\1')", + '/(^|_|-)+(.)/e' => "strtoupper('\\2')")); + + return $tmp; + } + + /** + * Returns an underscore-syntaxed version or the CamelCased string. + * + * @param string $camel_cased_word String to underscore. + * + * @return string Underscored string. + */ + public static function underscore($camel_cased_word) + { + $tmp = $camel_cased_word; + $tmp = str_replace('::', '/', $tmp); + $tmp = sfToolkit::pregtr($tmp, array('/([A-Z]+)([A-Z][a-z])/' => '\\1_\\2', + '/([a-z\d])([A-Z])/' => '\\1_\\2')); + + return strtolower($tmp); + } + + /** + * Returns classname::module with classname:: stripped off. + * + * @param string $class_name_in_module Classname and module pair. + * + * @return string Module name. + */ + public static function demodulize($class_name_in_module) + { + return preg_replace('/^.*::/', '', $class_name_in_module); + } + + /** + * Returns classname in underscored form, with "_id" tacked on at the end. + * This is for use in dealing with foreign keys in the database. + * + * @param string $class_name Class name. + * @param bool $separate_with_underscore Separate with underscore. + * + * @return strong Foreign key + */ + public static function foreign_key($class_name, $separate_with_underscore = true) + { + return sfInflector::underscore(sfInflector::demodulize($class_name)).($separate_with_underscore ? "_id" : "id"); + } + + /** + * Returns corresponding table name for given classname. + * + * @param string $class_name Name of class to get database table name for. + * + * @return string Name of the databse table for given class. + */ + public static function tableize($class_name) + { + return sfInflector::underscore($class_name); + } + + /** + * Returns model class name for given database table. + * + * @param string $table_name Table name. + * + * @return string Classified table name. + */ + public static function classify($table_name) + { + return sfInflector::camelize($table_name); + } + + /** + * Returns a human-readable string from a lower case and underscored word by replacing underscores + * with a space, and by upper-casing the initial characters. + * + * @param string $lower_case_and_underscored_word String to make more readable. + * + * @return string Human-readable string. + */ + public static function humanize($lower_case_and_underscored_word) + { + if (substr($lower_case_and_underscored_word, -3) === '_id') + { + $lower_case_and_underscored_word = substr($lower_case_and_underscored_word, 0, -3); + } + + return ucfirst(str_replace('_', ' ', $lower_case_and_underscored_word)); + } +} diff --git a/lib/vendor/symfony/lib/util/sfNamespacedParameterHolder.class.php b/lib/vendor/symfony/lib/util/sfNamespacedParameterHolder.class.php new file mode 100644 index 0000000..1d551c0 --- /dev/null +++ b/lib/vendor/symfony/lib/util/sfNamespacedParameterHolder.class.php @@ -0,0 +1,384 @@ + + * (c) 2004-2006 Sean Kerr + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfNamespacedParameterHolder provides a class for managing parameters + * with support for namespaces. + * + * Parameters, in this case, are used to extend classes with additional data + * that requires no additional logic to manage. + * + * @package symfony + * @subpackage util + * @author Fabien Potencier + * @author Sean Kerr + * @version SVN: $Id: sfNamespacedParameterHolder.class.php 29521 2010-05-19 11:47:56Z fabien $ + */ +class sfNamespacedParameterHolder extends sfParameterHolder +{ + protected $default_namespace = null; + protected $parameters = array(); + + /** + * The constructor for sfNamespacedParameterHolder. + * + * The default namespace may be overridden at initialization as follows: + * + * + * + */ + public function __construct($namespace = 'symfony/default') + { + $this->default_namespace = $namespace; + } + + /** + * Sets the default namespace value. + * + * @param string $namespace Default namespace + * @param bool $move Move all values of the old default namespace to the new one or not + */ + public function setDefaultNamespace($namespace, $move = true) + { + if ($move) + { + if (null !== $values = $this->removeNamespace()) + { + $this->addByRef($values, $namespace); + } + } + + $this->default_namespace = $namespace; + } + + /** + * Get the default namespace value. + * + * The $default_namespace is defined as 'symfony/default'. + * + * @return string The default namespace + */ + public function getDefaultNamespace() + { + return $this->default_namespace; + } + + /** + * Clear all parameters associated with this request. + */ + public function clear() + { + $this->parameters = null; + $this->parameters = array(); + } + + /** + * Retrieve a parameter with an optionally specified namespace. + * + * An isolated namespace may be identified by providing a value for the third + * argument. If not specified, the default namespace 'symfony/default' is + * used. + * + * @param string $name A parameter name + * @param mixed $default A default parameter value + * @param string $ns A parameter namespace + * + * @return mixed A parameter value, if the parameter exists, otherwise null + */ + public function & get($name, $default = null, $ns = null) + { + if (!$ns) + { + $ns = $this->default_namespace; + } + + if (isset($this->parameters[$ns][$name])) + { + $value = & $this->parameters[$ns][$name]; + } + else + { + $value = $default; + } + + return $value; + } + + /** + * Retrieve an array of parameter names from an optionally specified namespace. + * + * @param string $ns A parameter namespace. + * + * @return array An indexed array of parameter names, if the namespace exists, otherwise null + */ + public function getNames($ns = null) + { + if (!$ns) + { + $ns = $this->default_namespace; + } + + if (isset($this->parameters[$ns])) + { + return array_keys($this->parameters[$ns]); + } + + return array(); + } + + /** + * Retrieve an array of parameter namespaces. + * + * @return array An indexed array of parameter namespaces + */ + public function getNamespaces() + { + return array_keys($this->parameters); + } + + /** + * Retrieve an array of parameters, within a namespace. + * + * This method is limited to a namespace. Without any argument, + * it returns the parameters of the default namespace. If a + * namespace is passed as an argument, only the parameters of the + * specified namespace are returned. + * + * @param string $ns A parameter namespace + * + * @return array An associative array of parameters + */ + public function & getAll($ns = null) + { + if (!$ns) + { + $ns = $this->default_namespace; + } + + $parameters = array(); + + if (isset($this->parameters[$ns])) + { + $parameters = $this->parameters[$ns]; + } + + return $parameters; + } + + /** + * Indicates whether or not a parameter exists. + * + * @param string $name A parameter name + * @param string $ns A parameter namespace + * + * @return bool true, if the parameter exists, otherwise false + */ + public function has($name, $ns = null) + { + if (!$ns) + { + $ns = $this->default_namespace; + } + + return isset($this->parameters[$ns][$name]); + } + + /** + * Indicates whether or not A parameter namespace exists. + * + * @param string $ns A parameter namespace + * + * @return bool true, if the namespace exists, otherwise false + */ + public function hasNamespace($ns) + { + return isset($this->parameters[$ns]); + } + + /** + * Remove a parameter. + * + * @param string $name A parameter name + * @param mixed $default A default parameter value + * @param string $ns A parameter namespace + * + * @return string A parameter value, if the parameter was removed, otherwise null + */ + public function remove($name, $default = null, $ns = null) + { + if (!$ns) + { + $ns = $this->default_namespace; + } + + $retval = $default; + + if (isset($this->parameters[$ns]) && array_key_exists($name, $this->parameters[$ns])) + { + $retval = $this->parameters[$ns][$name]; + unset($this->parameters[$ns][$name]); + } + + return $retval; + } + + /** + * Remove A parameter namespace and all of its associated parameters. + * + * @param string $ns A parameter namespace. + */ + public function & removeNamespace($ns = null) + { + if (!$ns) + { + $ns = $this->default_namespace; + } + + $retval = null; + + if (isset($this->parameters[$ns])) + { + $retval =& $this->parameters[$ns]; + unset($this->parameters[$ns]); + } + + return $retval; + } + + /** + * Set a parameter. + * + * If a parameter with the name already exists the value will be overridden. + * + * @param string $name A parameter name + * @param mixed $value A parameter value + * @param string $ns A parameter namespace + */ + public function set($name, $value, $ns = null) + { + if (!$ns) + { + $ns = $this->default_namespace; + } + + if (!isset($this->parameters[$ns])) + { + $this->parameters[$ns] = array(); + } + + $this->parameters[$ns][$name] = $value; + } + + /** + * Set a parameter by reference. + * + * If a parameter with the name already exists the value will be overridden. + * + * @param string $name A parameter name + * @param mixed $value A reference to a parameter value + * @param string $ns A parameter namespace + */ + public function setByRef($name, & $value, $ns = null) + { + if (!$ns) + { + $ns = $this->default_namespace; + } + + if (!isset($this->parameters[$ns])) + { + $this->parameters[$ns] = array(); + } + + $this->parameters[$ns][$name] =& $value; + } + + /** + * Set an array of parameters. + * + * If an existing parameter name matches any of the keys in the supplied + * array, the associated value will be overridden. + * + * @param array $parameters An associative array of parameters and their associated values + * @param string $ns A parameter namespace + */ + public function add($parameters, $ns = null) + { + if ($parameters === null) return; + + if (!$ns) + { + $ns = $this->default_namespace; + } + + if (!isset($this->parameters[$ns])) + { + $this->parameters[$ns] = array(); + } + + foreach ($parameters as $key => $value) + { + $this->parameters[$ns][$key] = $value; + } + } + + /** + * Set an array of parameters by reference. + * + * If an existing parameter name matches any of the keys in the supplied + * array, the associated value will be overridden. + * + * @param array $parameters An associative array of parameters and references to their associated values + * @param string $ns A parameter namespace + */ + public function addByRef(& $parameters, $ns = null) + { + if (!$ns) + { + $ns = $this->default_namespace; + } + + if (!isset($this->parameters[$ns])) + { + $this->parameters[$ns] = array(); + } + + foreach ($parameters as $key => &$value) + { + $this->parameters[$ns][$key] =& $value; + } + } + + /** + * Serializes the current instance. + * + * @return array Objects instance + */ + public function serialize() + { + return serialize(array($this->default_namespace, $this->parameters)); + } + + /** + * Unserializes a sfNamespacedParameterHolder instance. + * + * @param string $serialized A serialized sfNamespacedParameterHolder instance + */ + public function unserialize($serialized) + { + $data = unserialize($serialized); + + $this->default_namespace = $data[0]; + $this->parameters = $data[1]; + } +} diff --git a/lib/vendor/symfony/lib/util/sfParameterHolder.class.php b/lib/vendor/symfony/lib/util/sfParameterHolder.class.php new file mode 100644 index 0000000..f57dbfd --- /dev/null +++ b/lib/vendor/symfony/lib/util/sfParameterHolder.class.php @@ -0,0 +1,200 @@ + + * (c) 2004-2006 Sean Kerr + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfParameterHolder provides a base class for managing parameters. + * + * Parameters, in this case, are used to extend classes with additional data + * that requires no additional logic to manage. + * + * @package symfony + * @subpackage util + * @author Fabien Potencier + * @author Sean Kerr + * @version SVN: $Id: sfParameterHolder.class.php 23922 2009-11-14 14:58:38Z fabien $ + */ +class sfParameterHolder implements Serializable +{ + protected $parameters = array(); + + /** + * The constructor for sfParameterHolder. + */ + public function __construct() + { + } + + /** + * Clears all parameters associated with this request. + */ + public function clear() + { + $this->parameters = array(); + } + + /** + * Retrieves a parameter. + * + * @param string $name A parameter name + * @param mixed $default A default parameter value + * + * @return mixed A parameter value, if the parameter exists, otherwise null + */ + public function & get($name, $default = null) + { + if (array_key_exists($name, $this->parameters)) + { + $value = & $this->parameters[$name]; + } + else + { + $value = $default; + } + + return $value; + } + + /** + * Retrieves an array of parameter names. + * + * @return array An indexed array of parameter names + */ + public function getNames() + { + return array_keys($this->parameters); + } + + /** + * Retrieves an array of parameters. + * + * @return array An associative array of parameters + */ + public function & getAll() + { + return $this->parameters; + } + + /** + * Indicates whether or not a parameter exists. + * + * @param string $name A parameter name + * + * @return bool true, if the parameter exists, otherwise false + */ + public function has($name) + { + return array_key_exists($name, $this->parameters); + } + + /** + * Remove a parameter. + * + * @param string $name A parameter name + * @param mixed $default A default parameter value + * + * @return string A parameter value, if the parameter was removed, otherwise null + */ + public function remove($name, $default = null) + { + $retval = $default; + + if (array_key_exists($name, $this->parameters)) + { + $retval = $this->parameters[$name]; + unset($this->parameters[$name]); + } + + return $retval; + } + + /** + * Sets a parameter. + * + * If a parameter with the name already exists the value will be overridden. + * + * @param string $name A parameter name + * @param mixed $value A parameter value + */ + public function set($name, $value) + { + $this->parameters[$name] = $value; + } + + /** + * Sets a parameter by reference. + * + * If a parameter with the name already exists the value will be overridden. + * + * @param string $name A parameter name + * @param mixed $value A reference to a parameter value + */ + public function setByRef($name, & $value) + { + $this->parameters[$name] =& $value; + } + + /** + * Sets an array of parameters. + * + * If an existing parameter name matches any of the keys in the supplied + * array, the associated value will be overridden. + * + * @param array $parameters An associative array of parameters and their associated values + */ + public function add($parameters) + { + if (null === $parameters) + { + return; + } + + foreach ($parameters as $key => $value) + { + $this->parameters[$key] = $value; + } + } + + /** + * Sets an array of parameters by reference. + * + * If an existing parameter name matches any of the keys in the supplied + * array, the associated value will be overridden. + * + * @param array $parameters An associative array of parameters and references to their associated values + */ + public function addByRef(& $parameters) + { + foreach ($parameters as $key => &$value) + { + $this->parameters[$key] =& $value; + } + } + + /** + * Serializes the current instance. + * + * @return array Objects instance + */ + public function serialize() + { + return serialize($this->parameters); + } + + /** + * Unserializes a sfParameterHolder instance. + * + * @param string $serialized A serialized sfParameterHolder instance + */ + public function unserialize($serialized) + { + $this->parameters = unserialize($serialized); + } +} diff --git a/lib/vendor/symfony/lib/util/sfToolkit.class.php b/lib/vendor/symfony/lib/util/sfToolkit.class.php new file mode 100644 index 0000000..ae554e6 --- /dev/null +++ b/lib/vendor/symfony/lib/util/sfToolkit.class.php @@ -0,0 +1,611 @@ + + * (c) 2004-2006 Sean Kerr + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfToolkit provides basic utility methods. + * + * @package symfony + * @subpackage util + * @author Fabien Potencier + * @author Sean Kerr + * @version SVN: $Id: sfToolkit.class.php 29525 2010-05-19 13:01:43Z fabien $ + */ +class sfToolkit +{ + /** + * Extract the class or interface name from filename. + * + * @param string $filename A filename. + * + * @return string A class or interface name, if one can be extracted, otherwise null. + */ + public static function extractClassName($filename) + { + $retval = null; + + if (self::isPathAbsolute($filename)) + { + $filename = basename($filename); + } + + $pattern = '/(.*?)\.(class|interface)\.php/i'; + + if (preg_match($pattern, $filename, $match)) + { + $retval = $match[1]; + } + + return $retval; + } + + /** + * Clear all files in a given directory. + * + * @param string $directory An absolute filesystem path to a directory. + */ + public static function clearDirectory($directory) + { + if (!is_dir($directory)) + { + return; + } + + // open a file point to the cache dir + $fp = opendir($directory); + + // ignore names + $ignore = array('.', '..', 'CVS', '.svn'); + + while (($file = readdir($fp)) !== false) + { + if (!in_array($file, $ignore)) + { + if (is_link($directory.'/'.$file)) + { + // delete symlink + unlink($directory.'/'.$file); + } + else if (is_dir($directory.'/'.$file)) + { + // recurse through directory + self::clearDirectory($directory.'/'.$file); + + // delete the directory + rmdir($directory.'/'.$file); + } + else + { + // delete the file + unlink($directory.'/'.$file); + } + } + } + + // close file pointer + closedir($fp); + } + + /** + * Clear all files and directories corresponding to a glob pattern. + * + * @param string $pattern An absolute filesystem pattern. + */ + public static function clearGlob($pattern) + { + if (false === $files = glob($pattern)) + { + return; + } + + // order is important when removing directories + sort($files); + + foreach ($files as $file) + { + if (is_dir($file)) + { + // delete directory + self::clearDirectory($file); + } + else + { + // delete file + unlink($file); + } + } + } + + /** + * Determine if a filesystem path is absolute. + * + * @param path $path A filesystem path. + * + * @return bool true, if the path is absolute, otherwise false. + */ + public static function isPathAbsolute($path) + { + if ($path[0] == '/' || $path[0] == '\\' || + (strlen($path) > 3 && ctype_alpha($path[0]) && + $path[1] == ':' && + ($path[2] == '\\' || $path[2] == '/') + ) + ) + { + return true; + } + + return false; + } + + /** + * Strips comments from php source code + * + * @param string $source PHP source code. + * + * @return string Comment free source code. + */ + public static function stripComments($source) + { + if (!function_exists('token_get_all')) + { + return $source; + } + + $ignore = array(T_COMMENT => true, T_DOC_COMMENT => true); + $output = ''; + + foreach (token_get_all($source) as $token) + { + // array + if (isset($token[1])) + { + // no action on comments + if (!isset($ignore[$token[0]])) + { + // anything else -> output "as is" + $output .= $token[1]; + } + } + else + { + // simple 1-character token + $output .= $token; + } + } + + return $output; + } + + /** + * Strip slashes recursively from array + * + * @param array $value the value to strip + * + * @return array clean value with slashes stripped + */ + public static function stripslashesDeep($value) + { + return is_array($value) ? array_map(array('sfToolkit', 'stripslashesDeep'), $value) : stripslashes($value); + } + + // code from php at moechofe dot com (array_merge comment on php.net) + /* + * array arrayDeepMerge ( array array1 [, array array2 [, array ...]] ) + * + * Like array_merge + * + * arrayDeepMerge() merges the elements of one or more arrays together so + * that the values of one are appended to the end of the previous one. It + * returns the resulting array. + * If the input arrays have the same string keys, then the later value for + * that key will overwrite the previous one. If, however, the arrays contain + * numeric keys, the later value will not overwrite the original value, but + * will be appended. + * If only one array is given and the array is numerically indexed, the keys + * get reindexed in a continuous way. + * + * Different from array_merge + * If string keys have arrays for values, these arrays will merge recursively. + */ + public static function arrayDeepMerge() + { + switch (func_num_args()) + { + case 0: + return false; + case 1: + return func_get_arg(0); + case 2: + $args = func_get_args(); + $args[2] = array(); + if (is_array($args[0]) && is_array($args[1])) + { + foreach (array_unique(array_merge(array_keys($args[0]),array_keys($args[1]))) as $key) + { + $isKey0 = array_key_exists($key, $args[0]); + $isKey1 = array_key_exists($key, $args[1]); + if ($isKey0 && $isKey1 && is_array($args[0][$key]) && is_array($args[1][$key])) + { + $args[2][$key] = self::arrayDeepMerge($args[0][$key], $args[1][$key]); + } + else if ($isKey0 && $isKey1) + { + $args[2][$key] = $args[1][$key]; + } + else if (!$isKey1) + { + $args[2][$key] = $args[0][$key]; + } + else if (!$isKey0) + { + $args[2][$key] = $args[1][$key]; + } + } + return $args[2]; + } + else + { + return $args[1]; + } + default : + $args = func_get_args(); + $args[1] = sfToolkit::arrayDeepMerge($args[0], $args[1]); + array_shift($args); + return call_user_func_array(array('sfToolkit', 'arrayDeepMerge'), $args); + break; + } + } + + /** + * Converts string to array + * + * @param string $string the value to convert to array + * + * @return array + */ + public static function stringToArray($string) + { + preg_match_all('/ + \s*(\w+) # key \\1 + \s*=\s* # = + (\'|")? # values may be included in \' or " \\2 + (.*?) # value \\3 + (?(2) \\2) # matching \' or " if needed \\4 + \s*(?: + (?=\w+\s*=) | \s*$ # followed by another key= or the end of the string + ) + /x', $string, $matches, PREG_SET_ORDER); + + $attributes = array(); + foreach ($matches as $val) + { + $attributes[$val[1]] = self::literalize($val[3]); + } + + return $attributes; + } + + /** + * Finds the type of the passed value, returns the value as the new type. + * + * @param string $value + * @param bool $quoted Quote? + * + * @return mixed + */ + public static function literalize($value, $quoted = false) + { + // lowercase our value for comparison + $value = trim($value); + $lvalue = strtolower($value); + + if (in_array($lvalue, array('null', '~', ''))) + { + $value = null; + } + else if (in_array($lvalue, array('true', 'on', '+', 'yes'))) + { + $value = true; + } + else if (in_array($lvalue, array('false', 'off', '-', 'no'))) + { + $value = false; + } + else if (ctype_digit($value)) + { + $value = (int) $value; + } + else if (is_numeric($value)) + { + $value = (float) $value; + } + else + { + $value = self::replaceConstants($value); + if ($quoted) + { + $value = '\''.str_replace('\'', '\\\'', $value).'\''; + } + } + + return $value; + } + + /** + * Replaces constant identifiers in a scalar value. + * + * @param string $value the value to perform the replacement on + * + * @return string the value with substitutions made + */ + public static function replaceConstants($value) + { + return is_string($value) ? preg_replace_callback('/%(.+?)%/', create_function('$v', 'return sfConfig::has(strtolower($v[1])) ? sfConfig::get(strtolower($v[1])) : "%{$v[1]}%";'), $value) : $value; + } + + /** + * Returns subject replaced with regular expression matchs + * + * @param mixed $search subject to search + * @param array $replacePairs array of search => replace pairs + */ + public static function pregtr($search, $replacePairs) + { + return preg_replace(array_keys($replacePairs), array_values($replacePairs), $search); + } + + /** + * Checks if array values are empty + * + * @param array $array the array to check + * @return boolean true if empty, otherwise false + */ + public static function isArrayValuesEmpty($array) + { + static $isEmpty = true; + foreach ($array as $value) + { + $isEmpty = (is_array($value)) ? self::isArrayValuesEmpty($value) : (strlen($value) == 0); + if (!$isEmpty) + { + break; + } + } + + return $isEmpty; + } + + /** + * Checks if a string is an utf8. + * + * Yi Stone Li + * Copyright (c) 2007 Yahoo! Inc. All rights reserved. + * Licensed under the BSD open source license + * + * @param string + * + * @return bool true if $string is valid UTF-8 and false otherwise. + */ + public static function isUTF8($string) + { + for ($idx = 0, $strlen = strlen($string); $idx < $strlen; $idx++) + { + $byte = ord($string[$idx]); + + if ($byte & 0x80) + { + if (($byte & 0xE0) == 0xC0) + { + // 2 byte char + $bytes_remaining = 1; + } + else if (($byte & 0xF0) == 0xE0) + { + // 3 byte char + $bytes_remaining = 2; + } + else if (($byte & 0xF8) == 0xF0) + { + // 4 byte char + $bytes_remaining = 3; + } + else + { + return false; + } + + if ($idx + $bytes_remaining >= $strlen) + { + return false; + } + + while ($bytes_remaining--) + { + if ((ord($string[++$idx]) & 0xC0) != 0x80) + { + return false; + } + } + } + } + + return true; + } + + /** + * Returns an array value for a path. + * + * @param array $values The values to search + * @param string $name The token name + * @param array $default Default if not found + * + * @return array + */ + public static function getArrayValueForPath($values, $name, $default = null) + { + if (false === $offset = strpos($name, '[')) + { + return isset($values[$name]) ? $values[$name] : $default; + } + + if (!isset($values[substr($name, 0, $offset)])) + { + return $default; + } + + $array = $values[substr($name, 0, $offset)]; + + while (false !== $pos = strpos($name, '[', $offset)) + { + $end = strpos($name, ']', $pos); + if ($end == $pos + 1) + { + // reached a [] + if (!is_array($array)) + { + return $default; + } + break; + } + else if (!isset($array[substr($name, $pos + 1, $end - $pos - 1)])) + { + return $default; + } + else if (is_array($array)) + { + $array = $array[substr($name, $pos + 1, $end - $pos - 1)]; + $offset = $end; + } + else + { + return $default; + } + } + + return $array; + } + + /** + * Get path to php cli. + * + * @throws sfException If no php cli found + * @return string + */ + public static function getPhpCli() + { + $path = getenv('PATH') ? getenv('PATH') : getenv('Path'); + $suffixes = DIRECTORY_SEPARATOR == '\\' ? (getenv('PATHEXT') ? explode(PATH_SEPARATOR, getenv('PATHEXT')) : array('.exe', '.bat', '.cmd', '.com')) : array(''); + foreach (array('php5', 'php') as $phpCli) + { + foreach ($suffixes as $suffix) + { + foreach (explode(PATH_SEPARATOR, $path) as $dir) + { + if (is_file($file = $dir.DIRECTORY_SEPARATOR.$phpCli.$suffix) && is_executable($file)) + { + return $file; + } + } + } + } + + throw new sfException('Unable to find PHP executable.'); + } + + /** + * Converts strings to UTF-8 via iconv. NB, the result may not by UTF-8 if the conversion failed. + * + * This file comes from Prado (BSD License) + * + * @param string $string string to convert to UTF-8 + * @param string $from current encoding + * + * @return string UTF-8 encoded string, original string if iconv failed. + */ + static public function I18N_toUTF8($string, $from) + { + $from = strtoupper($from); + if ($from != 'UTF-8') + { + $s = iconv($from,'UTF-8',$string); // to UTF-8 + + return $s !== false ? $s : $string; // it could return false + } + + return $string; + } + + /** + * Converts UTF-8 strings to a different encoding. NB. The result may not have been encoded if iconv fails. + * + * This file comes from Prado (BSD License) + * + * @param string $string the UTF-8 string for conversion + * @param string $to new encoding + * + * @return string encoded string. + */ + static public function I18N_toEncoding($string, $to) + { + $to = strtoupper($to); + if ($to != 'UTF-8') + { + $s = iconv('UTF-8', $to, $string); + + return $s !== false ? $s : $string; + } + + return $string; + } + + /** + * Adds a path to the PHP include_path setting. + * + * @param mixed $path Single string path or an array of paths + * @param string $position Either 'front' or 'back' + * + * @return string The old include path + */ + static public function addIncludePath($path, $position = 'front') + { + if (is_array($path)) + { + foreach ('front' == $position ? array_reverse($path) : $path as $p) + { + self::addIncludePath($p, $position); + } + + return; + } + + $paths = explode(PATH_SEPARATOR, get_include_path()); + + // remove what's already in the include_path + if (false !== $key = array_search(realpath($path), array_map('realpath', $paths))) + { + unset($paths[$key]); + } + + switch ($position) + { + case 'front': + array_unshift($paths, $path); + break; + case 'back': + $paths[] = $path; + break; + default: + throw new InvalidArgumentException(sprintf('Unrecognized position: "%s"', $position)); + } + + return set_include_path(join(PATH_SEPARATOR, $paths)); + } +} diff --git a/lib/vendor/symfony/lib/validator/.svn/all-wcprops b/lib/vendor/symfony/lib/validator/.svn/all-wcprops new file mode 100644 index 0000000..5654254 --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/all-wcprops @@ -0,0 +1,173 @@ +K 25 +svn:wc:ra_dav:version-url +V 42 +/!svn/ver/32836/branches/1.4/lib/validator +END +sfValidatorEmail.class.php +K 25 +svn:wc:ra_dav:version-url +V 69 +/!svn/ver/23881/branches/1.4/lib/validator/sfValidatorEmail.class.php +END +sfValidatedFile.class.php +K 25 +svn:wc:ra_dav:version-url +V 68 +/!svn/ver/30915/branches/1.4/lib/validator/sfValidatedFile.class.php +END +sfValidatorNumber.class.php +K 25 +svn:wc:ra_dav:version-url +V 70 +/!svn/ver/23881/branches/1.4/lib/validator/sfValidatorNumber.class.php +END +sfValidatorSchemaForEach.class.php +K 25 +svn:wc:ra_dav:version-url +V 77 +/!svn/ver/23881/branches/1.4/lib/validator/sfValidatorSchemaForEach.class.php +END +sfValidatorError.class.php +K 25 +svn:wc:ra_dav:version-url +V 69 +/!svn/ver/23881/branches/1.4/lib/validator/sfValidatorError.class.php +END +sfValidatorDateRange.class.php +K 25 +svn:wc:ra_dav:version-url +V 73 +/!svn/ver/32810/branches/1.4/lib/validator/sfValidatorDateRange.class.php +END +sfValidatorChoice.class.php +K 25 +svn:wc:ra_dav:version-url +V 70 +/!svn/ver/23881/branches/1.4/lib/validator/sfValidatorChoice.class.php +END +sfValidatorDateTime.class.php +K 25 +svn:wc:ra_dav:version-url +V 72 +/!svn/ver/23881/branches/1.4/lib/validator/sfValidatorDateTime.class.php +END +sfValidatorCallback.class.php +K 25 +svn:wc:ra_dav:version-url +V 72 +/!svn/ver/23881/branches/1.4/lib/validator/sfValidatorCallback.class.php +END +sfValidatorInteger.class.php +K 25 +svn:wc:ra_dav:version-url +V 71 +/!svn/ver/23881/branches/1.4/lib/validator/sfValidatorInteger.class.php +END +sfValidatorCSRFToken.class.php +K 25 +svn:wc:ra_dav:version-url +V 73 +/!svn/ver/23881/branches/1.4/lib/validator/sfValidatorCSRFToken.class.php +END +sfValidatorTime.class.php +K 25 +svn:wc:ra_dav:version-url +V 68 +/!svn/ver/23881/branches/1.4/lib/validator/sfValidatorTime.class.php +END +sfValidatorSchema.class.php +K 25 +svn:wc:ra_dav:version-url +V 70 +/!svn/ver/23881/branches/1.4/lib/validator/sfValidatorSchema.class.php +END +sfValidatorAnd.class.php +K 25 +svn:wc:ra_dav:version-url +V 67 +/!svn/ver/23881/branches/1.4/lib/validator/sfValidatorAnd.class.php +END +sfValidatorUrl.class.php +K 25 +svn:wc:ra_dav:version-url +V 67 +/!svn/ver/23881/branches/1.4/lib/validator/sfValidatorUrl.class.php +END +sfValidatorPass.class.php +K 25 +svn:wc:ra_dav:version-url +V 68 +/!svn/ver/23881/branches/1.4/lib/validator/sfValidatorPass.class.php +END +sfValidatorSchemaFilter.class.php +K 25 +svn:wc:ra_dav:version-url +V 76 +/!svn/ver/23881/branches/1.4/lib/validator/sfValidatorSchemaFilter.class.php +END +sfValidatorString.class.php +K 25 +svn:wc:ra_dav:version-url +V 70 +/!svn/ver/23881/branches/1.4/lib/validator/sfValidatorString.class.php +END +sfValidatorFromDescription.class.php +K 25 +svn:wc:ra_dav:version-url +V 79 +/!svn/ver/28700/branches/1.4/lib/validator/sfValidatorFromDescription.class.php +END +sfValidatorSchemaCompare.class.php +K 25 +svn:wc:ra_dav:version-url +V 77 +/!svn/ver/23881/branches/1.4/lib/validator/sfValidatorSchemaCompare.class.php +END +sfValidatorErrorSchema.class.php +K 25 +svn:wc:ra_dav:version-url +V 75 +/!svn/ver/23881/branches/1.4/lib/validator/sfValidatorErrorSchema.class.php +END +sfValidatorBase.class.php +K 25 +svn:wc:ra_dav:version-url +V 68 +/!svn/ver/32653/branches/1.4/lib/validator/sfValidatorBase.class.php +END +sfValidatorRegex.class.php +K 25 +svn:wc:ra_dav:version-url +V 69 +/!svn/ver/23881/branches/1.4/lib/validator/sfValidatorRegex.class.php +END +sfValidatorDate.class.php +K 25 +svn:wc:ra_dav:version-url +V 68 +/!svn/ver/28959/branches/1.4/lib/validator/sfValidatorDate.class.php +END +sfValidatorFile.class.php +K 25 +svn:wc:ra_dav:version-url +V 68 +/!svn/ver/32836/branches/1.4/lib/validator/sfValidatorFile.class.php +END +sfValidatorBoolean.class.php +K 25 +svn:wc:ra_dav:version-url +V 71 +/!svn/ver/23881/branches/1.4/lib/validator/sfValidatorBoolean.class.php +END +sfValidatorOr.class.php +K 25 +svn:wc:ra_dav:version-url +V 66 +/!svn/ver/23881/branches/1.4/lib/validator/sfValidatorOr.class.php +END +sfValidatorDecorator.class.php +K 25 +svn:wc:ra_dav:version-url +V 73 +/!svn/ver/23881/branches/1.4/lib/validator/sfValidatorDecorator.class.php +END diff --git a/lib/vendor/symfony/lib/validator/.svn/entries b/lib/vendor/symfony/lib/validator/.svn/entries new file mode 100644 index 0000000..7552c1c --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/entries @@ -0,0 +1,983 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/validator +http://svn.symfony-project.com + + + +2011-07-27T07:15:58.504673Z +32836 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +i18n +dir + +sfValidatorEmail.class.php +file + + + + +2012-05-10T18:41:02.681550Z +729f471bbdc0ef4ffeec68c69af593e9 +2009-09-18T14:09:53.947134Z +22149 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +855 + +sfValidatedFile.class.php +file + + + + +2012-05-10T18:41:02.681550Z +41f8e38166c6157ce05e244521b17f8d +2010-09-15T17:10:37.917664Z +30915 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +23951 + +sfValidatorNumber.class.php +file + + + + +2012-05-10T18:41:02.681550Z +b04d08b253f679ce7bb04c245019f945 +2009-09-14T16:56:28.365472Z +22018 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +1967 + +sfValidatorSchemaForEach.class.php +file + + + + +2012-05-10T18:41:02.681550Z +24cf641fdd904443716d13ed15ee0af2 +2008-05-19T09:11:23.320825Z +9048 +FabianLange +has-props + + + + + + + + + + + + + + + + + + + + +1417 + +sfValidatorError.class.php +file + + + + +2012-05-10T18:41:02.689548Z +d5c210911e091c6ef99b11ef6f666e35 +2009-02-10T12:58:49.252930Z +15393 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +3988 + +sfValidatorDateRange.class.php +file + + + + +2012-05-10T18:41:02.701549Z +5e580db5b75af8931f4f6a628efdf2e7 +2011-07-21T05:18:56.397732Z +32810 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +2167 + +sfValidatorChoice.class.php +file + + + + +2012-05-10T18:41:02.693550Z +1be9017476f04951fcc4249a521e28f3 +2009-09-23T05:54:32.004262Z +22264 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +3545 + +sfValidatorDateTime.class.php +file + + + + +2012-05-10T18:41:02.705549Z +b30601dd340d363d668f6da3dc12d461 +2007-10-18T13:56:14.755645Z +5581 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +833 + +sfValidatorCallback.class.php +file + + + + +2012-05-10T18:41:02.701549Z +4d186510559ae8954ae51d8e5429c61f +2008-05-19T09:11:23.320825Z +9048 +FabianLange +has-props + + + + + + + + + + + + + + + + + + + + +1376 + +sfValidatorInteger.class.php +file + + + + +2012-05-10T18:41:02.713547Z +4aaf689a0ef174a7c7c5e3177c1ef12b +2009-09-14T16:56:28.365472Z +22018 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +1961 + +sfValidatorCSRFToken.class.php +file + + + + +2012-05-10T18:41:02.725547Z +8000359467d9d5faa2da6ea77fb2c22d +2008-03-15T13:17:33.389161Z +7902 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +1064 + +sfValidatorTime.class.php +file + + + + +2012-05-10T18:41:02.717549Z +d61c733a6362809cd767af20c1cdd49a +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +4440 + +sfValidatorSchema.class.php +file + + + + +2012-05-10T18:41:02.725547Z +9a6c0675a3fa1a2e0a2f2521403159a0 +2009-09-26T07:55:47.710993Z +22446 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +9312 + +sfValidatorUrl.class.php +file + + + + +2012-05-10T18:41:02.737547Z +6b9cdf1a45b8a44a1c65d5dff655478f +2009-09-18T14:09:53.947134Z +22149 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +1786 + +sfValidatorAnd.class.php +file + + + + +2012-05-10T18:41:02.737547Z +e0ab5ffcba9faba3e3b0787fa06477b4 +2009-09-11T12:06:21.565437Z +21908 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +3979 + +sfValidatorPass.class.php +file + + + + +2012-05-10T18:41:02.749547Z +e6fac12df81bd044909e2efe55a33ad1 +2008-03-15T13:17:33.389161Z +7902 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +821 + +sfValidatorSchemaFilter.class.php +file + + + + +2012-05-10T18:41:02.749547Z +4da459cda58de6cfabf5a9b4e9bf802b +2009-09-11T12:06:21.565437Z +21908 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +2051 + +sfValidatorString.class.php +file + + + + +2012-05-10T18:41:02.761548Z +adf3f605f2e8bc89b0607a4e2e635fb5 +2008-11-04T18:22:00.833632Z +12641 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +2090 + +sfValidatorFromDescription.class.php +file + + + + +2012-05-10T18:41:02.761548Z +55cfedfa4d6d9d6338a5d13c8db41bf5 +2010-03-23T11:57:16.636981Z +28700 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +9945 + +sfValidatorSchemaCompare.class.php +file + + + + +2012-05-10T18:41:02.773548Z +e64455b1f1143c17f898f77d6f15ef9f +2009-09-11T12:06:21.565437Z +21908 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +4873 + +sfValidatorErrorSchema.class.php +file + + + + +2012-05-10T18:41:02.777550Z +7af3468445c6cde67628124b4a707606 +2009-09-26T07:55:47.710993Z +22446 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +8458 + +sfValidatorBase.class.php +file + + + + +2012-05-10T18:41:02.785548Z +055f7f853b4a4c927219f6fb541c387c +2011-06-15T18:32:02.549028Z +32653 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +12545 + +sfValidatorRegex.class.php +file + + + + +2012-05-10T18:41:02.789549Z +2cc6ba8d70d97e2c4bbd6527b0abc4f2 +2009-09-18T14:09:53.947134Z +22149 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +1906 + +sfValidatorDate.class.php +file + + + + +2012-05-10T18:41:02.797547Z +5aec369a6cb2b564cae2ea5771a813e6 +2010-04-01T14:10:24.788356Z +28959 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +8125 + +sfValidatorFile.class.php +file + + + + +2012-05-10T18:41:02.797547Z +df2d90defbd957da08dd3ac220fc154e +2011-07-27T07:15:58.504673Z +32836 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +9287 + +sfValidatorBoolean.class.php +file + + + + +2012-05-10T18:41:02.809549Z +1bfdf68e71f7c5d5acb8dcc17938193b +2008-07-15T22:12:35.936975Z +10306 +Carl.Vondrick +has-props + + + + + + + + + + + + + + + + + + + + +1622 + +sfValidatorOr.class.php +file + + + + +2012-05-10T18:41:02.809549Z +22468faa6ee705c72534ec12971e927b +2009-09-11T12:06:21.565437Z +21908 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +3493 + +sfValidatorDecorator.class.php +file + + + + +2012-05-10T18:41:02.821548Z +b67af3395ff97ad7137890e21a8363a3 +2008-03-15T13:17:33.389161Z +7902 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +3356 + diff --git a/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatedFile.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatedFile.class.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatedFile.class.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorAnd.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorAnd.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorAnd.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorBase.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorBase.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorBase.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorBoolean.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorBoolean.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorBoolean.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorCSRFToken.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorCSRFToken.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorCSRFToken.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorCallback.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorCallback.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorCallback.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorChoice.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorChoice.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorChoice.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorDate.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorDate.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorDate.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorDateRange.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorDateRange.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorDateRange.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorDateTime.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorDateTime.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorDateTime.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorDecorator.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorDecorator.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorDecorator.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorEmail.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorEmail.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorEmail.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorError.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorError.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorError.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorErrorSchema.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorErrorSchema.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorErrorSchema.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorFile.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorFile.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorFile.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorFromDescription.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorFromDescription.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorFromDescription.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorInteger.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorInteger.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorInteger.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorNumber.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorNumber.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorNumber.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorOr.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorOr.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorOr.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorPass.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorPass.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorPass.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorRegex.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorRegex.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorRegex.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorSchema.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorSchema.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorSchema.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorSchemaCompare.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorSchemaCompare.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorSchemaCompare.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorSchemaFilter.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorSchemaFilter.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorSchemaFilter.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorSchemaForEach.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorSchemaForEach.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorSchemaForEach.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorString.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorString.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorString.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorTime.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorTime.class.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorTime.class.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorUrl.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorUrl.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/prop-base/sfValidatorUrl.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatedFile.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatedFile.class.php.svn-base new file mode 100644 index 0000000..fd2207e --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatedFile.class.php.svn-base @@ -0,0 +1,657 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatedFile represents a validated uploaded file. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfValidatedFile +{ + protected + $originalName = '', + $tempName = '', + $savedName = null, + $type = '', + $size = 0, + $path = null; + + /** + * Constructor. + * + * @param string $originalName The original file name + * @param string $type The file content type + * @param string $tempName The absolute temporary path to the file + * @param int $size The file size (in bytes) + * @param string $path The path to save the file (optional). + */ + public function __construct($originalName, $type, $tempName, $size, $path = null) + { + $this->originalName = $originalName; + $this->tempName = $tempName; + $this->type = $type; + $this->size = $size; + $this->path = $path; + } + + /** + * Returns the name of the saved file. + */ + public function __toString() + { + return null === $this->savedName ? '' : $this->savedName; + } + + /** + * Saves the uploaded file. + * + * This method can throw exceptions if there is a problem when saving the file. + * + * If you don't pass a file name, it will be generated by the generateFilename method. + * This will only work if you have passed a path when initializing this instance. + * + * @param string $file The file path to save the file + * @param int $fileMode The octal mode to use for the new file + * @param bool $create Indicates that we should make the directory before moving the file + * @param int $dirMode The octal mode to use when creating the directory + * + * @return string The filename without the $this->path prefix + * + * @throws Exception + */ + public function save($file = null, $fileMode = 0666, $create = true, $dirMode = 0777) + { + if (null === $file) + { + $file = $this->generateFilename(); + } + + if ($file[0] != '/' && $file[0] != '\\' && !(strlen($file) > 3 && ctype_alpha($file[0]) && $file[1] == ':' && ($file[2] == '\\' || $file[2] == '/'))) + { + if (null === $this->path) + { + throw new RuntimeException('You must give a "path" when you give a relative file name.'); + } + + $file = $this->path.DIRECTORY_SEPARATOR.$file; + } + + // get our directory path from the destination filename + $directory = dirname($file); + + if (!is_readable($directory)) + { + if ($create && !@mkdir($directory, $dirMode, true)) + { + // failed to create the directory + throw new Exception(sprintf('Failed to create file upload directory "%s".', $directory)); + } + + // chmod the directory since it doesn't seem to work on recursive paths + chmod($directory, $dirMode); + } + + if (!is_dir($directory)) + { + // the directory path exists but it's not a directory + throw new Exception(sprintf('File upload path "%s" exists, but is not a directory.', $directory)); + } + + if (!is_writable($directory)) + { + // the directory isn't writable + throw new Exception(sprintf('File upload path "%s" is not writable.', $directory)); + } + + // copy the temp file to the destination file + copy($this->getTempName(), $file); + + // chmod our file + chmod($file, $fileMode); + + $this->savedName = $file; + + return null === $this->path ? $file : str_replace($this->path.DIRECTORY_SEPARATOR, '', $file); + } + + /** + * Generates a random filename for the current file. + * + * @return string A random name to represent the current file + */ + public function generateFilename() + { + return sha1($this->getOriginalName().rand(11111, 99999)).$this->getExtension($this->getOriginalExtension()); + } + + /** + * Returns the path to use when saving a file with a relative filename. + * + * @return string The path to use when saving a file with a relative filename + */ + public function getPath() + { + return $this->path; + } + + /** + * Returns the file extension, based on the content type of the file. + * + * @param string $default The default extension to return if none was given + * + * @return string The extension (with the dot) + */ + public function getExtension($default = '') + { + return $this->getExtensionFromType($this->type, $default); + } + + /** + * Returns the original uploaded file name extension. + * + * @param string $default The default extension to return if none was given + * + * @return string The extension of the uploaded name (with the dot) + */ + public function getOriginalExtension($default = '') + { + return (false === $pos = strrpos($this->getOriginalName(), '.')) ? $default : substr($this->getOriginalName(), $pos); + } + + /** + * Returns true if the file has already been saved. + * + * @return Boolean true if the file has already been saved, false otherwise + */ + public function isSaved() + { + return null !== $this->savedName; + } + + /** + * Returns the path where the file has been saved + * + * @return string The path where the file has been saved + */ + public function getSavedName() + { + return $this->savedName; + } + + /** + * Returns the original file name. + * + * @return string The file name + */ + public function getOriginalName() + { + return $this->originalName; + } + + /** + * Returns the absolute temporary path to the uploaded file. + * + * @return string The temporary path + */ + public function getTempName() + { + return $this->tempName; + } + + /** + * Returns the file content type. + * + * @return string The content type + */ + public function getType() + { + return $this->type; + } + + /** + * Returns the size of the uploaded file. + * + * @return int The file size + */ + public function getSize() + { + return $this->size; + } + + /** + * Returns the extension associated with the given content type. + * + * @param string $type The content type + * @param string $default The default extension to use + * + * @return string The extension (with the dot) + */ + protected function getExtensionFromType($type, $default = '') + { + static $extensions = array( + 'application/andrew-inset' => 'ez', + 'application/appledouble' => 'base64', + 'application/applefile' => 'base64', + 'application/commonground' => 'dp', + 'application/cprplayer' => 'pqi', + 'application/dsptype' => 'tsp', + 'application/excel' => 'xls', + 'application/font-tdpfr' => 'pfr', + 'application/futuresplash' => 'spl', + 'application/hstu' => 'stk', + 'application/hyperstudio' => 'stk', + 'application/javascript' => 'js', + 'application/mac-binhex40' => 'hqx', + 'application/mac-compactpro' => 'cpt', + 'application/mbed' => 'mbd', + 'application/mirage' => 'mfp', + 'application/msword' => 'doc', + 'application/ocsp-request' => 'orq', + 'application/ocsp-response' => 'ors', + 'application/octet-stream' => 'bin', + 'application/oda' => 'oda', + 'application/ogg' => 'ogg', + 'application/pdf' => 'pdf', + 'application/x-pdf' => 'pdf', + 'application/pgp-encrypted' => '7bit', + 'application/pgp-keys' => '7bit', + 'application/pgp-signature' => 'sig', + 'application/pkcs10' => 'p10', + 'application/pkcs7-mime' => 'p7m', + 'application/pkcs7-signature' => 'p7s', + 'application/pkix-cert' => 'cer', + 'application/pkix-crl' => 'crl', + 'application/pkix-pkipath' => 'pkipath', + 'application/pkixcmp' => 'pki', + 'application/postscript' => 'ps', + 'application/presentations' => 'shw', + 'application/prs.cww' => 'cw', + 'application/prs.nprend' => 'rnd', + 'application/quest' => 'qrt', + 'application/rtf' => 'rtf', + 'application/sgml-open-catalog' => 'soc', + 'application/sieve' => 'siv', + 'application/smil' => 'smi', + 'application/toolbook' => 'tbk', + 'application/vnd.3gpp.pic-bw-large' => 'plb', + 'application/vnd.3gpp.pic-bw-small' => 'psb', + 'application/vnd.3gpp.pic-bw-var' => 'pvb', + 'application/vnd.3gpp.sms' => 'sms', + 'application/vnd.acucorp' => 'atc', + 'application/vnd.adobe.xfdf' => 'xfdf', + 'application/vnd.amiga.amu' => 'ami', + 'application/vnd.blueice.multipass' => 'mpm', + 'application/vnd.cinderella' => 'cdy', + 'application/vnd.cosmocaller' => 'cmc', + 'application/vnd.criticaltools.wbs+xml' => 'wbs', + 'application/vnd.curl' => 'curl', + 'application/vnd.data-vision.rdz' => 'rdz', + 'application/vnd.dreamfactory' => 'dfac', + 'application/vnd.fsc.weblauch' => 'fsc', + 'application/vnd.genomatix.tuxedo' => 'txd', + 'application/vnd.hbci' => 'hbci', + 'application/vnd.hhe.lesson-player' => 'les', + 'application/vnd.hp-hpgl' => 'plt', + 'application/vnd.ibm.electronic-media' => 'emm', + 'application/vnd.ibm.rights-management' => 'irm', + 'application/vnd.ibm.secure-container' => 'sc', + 'application/vnd.ipunplugged.rcprofile' => 'rcprofile', + 'application/vnd.irepository.package+xml' => 'irp', + 'application/vnd.jisp' => 'jisp', + 'application/vnd.kde.karbon' => 'karbon', + 'application/vnd.kde.kchart' => 'chrt', + 'application/vnd.kde.kformula' => 'kfo', + 'application/vnd.kde.kivio' => 'flw', + 'application/vnd.kde.kontour' => 'kon', + 'application/vnd.kde.kpresenter' => 'kpr', + 'application/vnd.kde.kspread' => 'ksp', + 'application/vnd.kde.kword' => 'kwd', + 'application/vnd.kenameapp' => 'htke', + 'application/vnd.kidspiration' => 'kia', + 'application/vnd.kinar' => 'kne', + 'application/vnd.llamagraphics.life-balance.desktop' => 'lbd', + 'application/vnd.llamagraphics.life-balance.exchange+xml' => 'lbe', + 'application/vnd.lotus-1-2-3' => 'wks', + 'application/vnd.mcd' => 'mcd', + 'application/vnd.mfmp' => 'mfm', + 'application/vnd.micrografx.flo' => 'flo', + 'application/vnd.micrografx.igx' => 'igx', + 'application/vnd.mif' => 'mif', + 'application/vnd.mophun.application' => 'mpn', + 'application/vnd.mophun.certificate' => 'mpc', + 'application/vnd.mozilla.xul+xml' => 'xul', + 'application/vnd.ms-artgalry' => 'cil', + 'application/vnd.ms-asf' => 'asf', + 'application/vnd.ms-excel' => 'xls', + 'application/vnd.ms-excel.sheet.macroenabled.12' => 'xlsm', + 'application/vnd.ms-lrm' => 'lrm', + 'application/vnd.ms-powerpoint' => 'ppt', + 'application/vnd.ms-project' => 'mpp', + 'application/vnd.ms-tnef' => 'base64', + 'application/vnd.ms-works' => 'base64', + 'application/vnd.ms-wpl' => 'wpl', + 'application/vnd.mseq' => 'mseq', + 'application/vnd.nervana' => 'ent', + 'application/vnd.nokia.radio-preset' => 'rpst', + 'application/vnd.nokia.radio-presets' => 'rpss', + 'application/vnd.oasis.opendocument.text' => 'odt', + 'application/vnd.oasis.opendocument.text-template' => 'ott', + 'application/vnd.oasis.opendocument.text-web' => 'oth', + 'application/vnd.oasis.opendocument.text-master' => 'odm', + 'application/vnd.oasis.opendocument.graphics' => 'odg', + 'application/vnd.oasis.opendocument.graphics-template' => 'otg', + 'application/vnd.oasis.opendocument.presentation' => 'odp', + 'application/vnd.oasis.opendocument.presentation-template' => 'otp', + 'application/vnd.oasis.opendocument.spreadsheet' => 'ods', + 'application/vnd.oasis.opendocument.spreadsheet-template' => 'ots', + 'application/vnd.oasis.opendocument.chart' => 'odc', + 'application/vnd.oasis.opendocument.formula' => 'odf', + 'application/vnd.oasis.opendocument.database' => 'odb', + 'application/vnd.oasis.opendocument.image' => 'odi', + 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' => 'docx', + 'application/vnd.openxmlformats-officedocument.wordprocessingml.template' => 'dotx', + 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' => 'xlsx', + 'application/vnd.openxmlformats-officedocument.presentationml.presentation' => 'pptx', + 'application/vnd.palm' => 'prc', + 'application/vnd.picsel' => 'efif', + 'application/vnd.pvi.ptid1' => 'pti', + 'application/vnd.quark.quarkxpress' => 'qxd', + 'application/vnd.sealed.doc' => 'sdoc', + 'application/vnd.sealed.eml' => 'seml', + 'application/vnd.sealed.mht' => 'smht', + 'application/vnd.sealed.ppt' => 'sppt', + 'application/vnd.sealed.xls' => 'sxls', + 'application/vnd.sealedmedia.softseal.html' => 'stml', + 'application/vnd.sealedmedia.softseal.pdf' => 'spdf', + 'application/vnd.seemail' => 'see', + 'application/vnd.smaf' => 'mmf', + 'application/vnd.sun.xml.calc' => 'sxc', + 'application/vnd.sun.xml.calc.template' => 'stc', + 'application/vnd.sun.xml.draw' => 'sxd', + 'application/vnd.sun.xml.draw.template' => 'std', + 'application/vnd.sun.xml.impress' => 'sxi', + 'application/vnd.sun.xml.impress.template' => 'sti', + 'application/vnd.sun.xml.math' => 'sxm', + 'application/vnd.sun.xml.writer' => 'sxw', + 'application/vnd.sun.xml.writer.global' => 'sxg', + 'application/vnd.sun.xml.writer.template' => 'stw', + 'application/vnd.sus-calendar' => 'sus', + 'application/vnd.vidsoft.vidconference' => 'vsc', + 'application/vnd.visio' => 'vsd', + 'application/vnd.visionary' => 'vis', + 'application/vnd.wap.sic' => 'sic', + 'application/vnd.wap.slc' => 'slc', + 'application/vnd.wap.wbxml' => 'wbxml', + 'application/vnd.wap.wmlc' => 'wmlc', + 'application/vnd.wap.wmlscriptc' => 'wmlsc', + 'application/vnd.webturbo' => 'wtb', + 'application/vnd.wordperfect' => 'wpd', + 'application/vnd.wqd' => 'wqd', + 'application/vnd.wv.csp+wbxml' => 'wv', + 'application/vnd.wv.csp+xml' => '8bit', + 'application/vnd.wv.ssp+xml' => '8bit', + 'application/vnd.yamaha.hv-dic' => 'hvd', + 'application/vnd.yamaha.hv-script' => 'hvs', + 'application/vnd.yamaha.hv-voice' => 'hvp', + 'application/vnd.yamaha.smaf-audio' => 'saf', + 'application/vnd.yamaha.smaf-phrase' => 'spf', + 'application/vocaltec-media-desc' => 'vmd', + 'application/vocaltec-media-file' => 'vmf', + 'application/vocaltec-talker' => 'vtk', + 'application/watcherinfo+xml' => 'wif', + 'application/wordperfect5.1' => 'wp5', + 'application/x-123' => 'wk', + 'application/x-7th_level_event' => '7ls', + 'application/x-authorware-bin' => 'aab', + 'application/x-authorware-map' => 'aam', + 'application/x-authorware-seg' => 'aas', + 'application/x-bcpio' => 'bcpio', + 'application/x-bleeper' => 'bleep', + 'application/x-bzip2' => 'bz2', + 'application/x-cdlink' => 'vcd', + 'application/x-chat' => 'chat', + 'application/x-chess-pgn' => 'pgn', + 'application/x-compress' => 'z', + 'application/x-cpio' => 'cpio', + 'application/x-cprplayer' => 'pqf', + 'application/x-csh' => 'csh', + 'application/x-cu-seeme' => 'csm', + 'application/x-cult3d-object' => 'co', + 'application/x-debian-package' => 'deb', + 'application/x-director' => 'dcr', + 'application/x-dvi' => 'dvi', + 'application/x-envoy' => 'evy', + 'application/x-futuresplash' => 'spl', + 'application/x-gtar' => 'gtar', + 'application/x-gzip' => 'gz', + 'application/x-hdf' => 'hdf', + 'application/x-hep' => 'hep', + 'application/x-html+ruby' => 'rhtml', + 'application/x-httpd-miva' => 'mv', + 'application/x-httpd-php' => 'phtml', + 'application/x-ica' => 'ica', + 'application/x-imagemap' => 'imagemap', + 'application/x-ipix' => 'ipx', + 'application/x-ipscript' => 'ips', + 'application/x-java-archive' => 'jar', + 'application/x-java-jnlp-file' => 'jnlp', + 'application/x-java-serialized-object' => 'ser', + 'application/x-java-vm' => 'class', + 'application/x-javascript' => 'js', + 'application/x-koan' => 'skp', + 'application/x-latex' => 'latex', + 'application/x-mac-compactpro' => 'cpt', + 'application/x-maker' => 'frm', + 'application/x-mathcad' => 'mcd', + 'application/x-midi' => 'mid', + 'application/x-mif' => 'mif', + 'application/x-msaccess' => 'mda', + 'application/x-msdos-program' => 'com', + 'application/x-msdownload' => 'base64', + 'application/x-msexcel' => 'xls', + 'application/x-msword' => 'doc', + 'application/x-netcdf' => 'nc', + 'application/x-ns-proxy-autoconfig' => 'pac', + 'application/x-pagemaker' => 'pm5', + 'application/x-perl' => 'pl', + 'application/x-pn-realmedia' => 'rp', + 'application/x-python' => 'py', + 'application/x-quicktimeplayer' => 'qtl', + 'application/x-rar-compressed' => 'rar', + 'application/x-ruby' => 'rb', + 'application/x-sh' => 'sh', + 'application/x-shar' => 'shar', + 'application/x-shockwave-flash' => 'swf', + 'application/x-sprite' => 'spr', + 'application/x-spss' => 'sav', + 'application/x-spt' => 'spt', + 'application/x-stuffit' => 'sit', + 'application/x-sv4cpio' => 'sv4cpio', + 'application/x-sv4crc' => 'sv4crc', + 'application/x-tar' => 'tar', + 'application/x-tcl' => 'tcl', + 'application/x-tex' => 'tex', + 'application/x-texinfo' => 'texinfo', + 'application/x-troff' => 't', + 'application/x-troff-man' => 'man', + 'application/x-troff-me' => 'me', + 'application/x-troff-ms' => 'ms', + 'application/x-twinvq' => 'vqf', + 'application/x-twinvq-plugin' => 'vqe', + 'application/x-ustar' => 'ustar', + 'application/x-vmsbackup' => 'bck', + 'application/x-wais-source' => 'src', + 'application/x-wingz' => 'wz', + 'application/x-word' => 'base64', + 'application/x-wordperfect6.1' => 'wp6', + 'application/x-x509-ca-cert' => 'crt', + 'application/x-zip-compressed' => 'zip', + 'application/xhtml+xml' => 'xhtml', + 'application/zip' => 'zip', + 'audio/3gpp' => '3gpp', + 'audio/amr' => 'amr', + 'audio/amr-wb' => 'awb', + 'audio/basic' => 'au', + 'audio/evrc' => 'evc', + 'audio/l16' => 'l16', + 'audio/midi' => 'mid', + 'audio/mpeg' => 'mp3', + 'audio/prs.sid' => 'sid', + 'audio/qcelp' => 'qcp', + 'audio/smv' => 'smv', + 'audio/vnd.audiokoz' => 'koz', + 'audio/vnd.digital-winds' => 'eol', + 'audio/vnd.everad.plj' => 'plj', + 'audio/vnd.lucent.voice' => 'lvp', + 'audio/vnd.nokia.mobile-xmf' => 'mxmf', + 'audio/vnd.nortel.vbk' => 'vbk', + 'audio/vnd.nuera.ecelp4800' => 'ecelp4800', + 'audio/vnd.nuera.ecelp7470' => 'ecelp7470', + 'audio/vnd.nuera.ecelp9600' => 'ecelp9600', + 'audio/vnd.sealedmedia.softseal.mpeg' => 'smp3', + 'audio/voxware' => 'vox', + 'audio/x-aiff' => 'aif', + 'audio/x-mid' => 'mid', + 'audio/x-midi' => 'mid', + 'audio/x-mpeg' => 'mp2', + 'audio/x-mpegurl' => 'mpu', + 'audio/x-pn-realaudio' => 'rm', + 'audio/x-pn-realaudio-plugin' => 'rpm', + 'audio/x-realaudio' => 'ra', + 'audio/x-wav' => 'wav', + 'chemical/x-csml' => 'csm', + 'chemical/x-embl-dl-nucleotide' => 'emb', + 'chemical/x-gaussian-cube' => 'cube', + 'chemical/x-gaussian-input' => 'gau', + 'chemical/x-jcamp-dx' => 'jdx', + 'chemical/x-mdl-molfile' => 'mol', + 'chemical/x-mdl-rxnfile' => 'rxn', + 'chemical/x-mdl-tgf' => 'tgf', + 'chemical/x-mopac-input' => 'mop', + 'chemical/x-pdb' => 'pdb', + 'chemical/x-rasmol' => 'scr', + 'chemical/x-xyz' => 'xyz', + 'drawing/dwf' => 'dwf', + 'drawing/x-dwf' => 'dwf', + 'i-world/i-vrml' => 'ivr', + 'image/bmp' => 'bmp', + 'image/cewavelet' => 'wif', + 'image/cis-cod' => 'cod', + 'image/fif' => 'fif', + 'image/gif' => 'gif', + 'image/ief' => 'ief', + 'image/jp2' => 'jp2', + 'image/jpeg' => 'jpg', + 'image/jpm' => 'jpm', + 'image/jpx' => 'jpf', + 'image/pict' => 'pic', + 'image/pjpeg' => 'jpg', + 'image/png' => 'png', + 'image/targa' => 'tga', + 'image/tiff' => 'tif', + 'image/vn-svf' => 'svf', + 'image/vnd.dgn' => 'dgn', + 'image/vnd.djvu' => 'djvu', + 'image/vnd.dwg' => 'dwg', + 'image/vnd.glocalgraphics.pgb' => 'pgb', + 'image/vnd.microsoft.icon' => 'ico', + 'image/vnd.ms-modi' => 'mdi', + 'image/vnd.sealed.png' => 'spng', + 'image/vnd.sealedmedia.softseal.gif' => 'sgif', + 'image/vnd.sealedmedia.softseal.jpg' => 'sjpg', + 'image/vnd.wap.wbmp' => 'wbmp', + 'image/x-bmp' => 'bmp', + 'image/x-cmu-raster' => 'ras', + 'image/x-freehand' => 'fh4', + 'image/x-ms-bmp' => 'bmp', + 'image/x-png' => 'png', + 'image/x-portable-anymap' => 'pnm', + 'image/x-portable-bitmap' => 'pbm', + 'image/x-portable-graymap' => 'pgm', + 'image/x-portable-pixmap' => 'ppm', + 'image/x-rgb' => 'rgb', + 'image/x-xbitmap' => 'xbm', + 'image/x-xpixmap' => 'xpm', + 'image/x-xwindowdump' => 'xwd', + 'message/external-body' => '8bit', + 'message/news' => '8bit', + 'message/partial' => '8bit', + 'message/rfc822' => '8bit', + 'model/iges' => 'igs', + 'model/mesh' => 'msh', + 'model/vnd.parasolid.transmit.binary' => 'x_b', + 'model/vnd.parasolid.transmit.text' => 'x_t', + 'model/vrml' => 'wrl', + 'multipart/alternative' => '8bit', + 'multipart/appledouble' => '8bit', + 'multipart/digest' => '8bit', + 'multipart/mixed' => '8bit', + 'multipart/parallel' => '8bit', + 'text/comma-separated-values' => 'csv', + 'text/css' => 'css', + 'text/html' => 'html', + 'text/plain' => 'txt', + 'text/prs.fallenstein.rst' => 'rst', + 'text/richtext' => 'rtx', + 'text/rtf' => 'rtf', + 'text/sgml' => 'sgml', + 'text/tab-separated-values' => 'tsv', + 'text/vnd.net2phone.commcenter.command' => 'ccc', + 'text/vnd.sun.j2me.app-descriptor' => 'jad', + 'text/vnd.wap.si' => 'si', + 'text/vnd.wap.sl' => 'sl', + 'text/vnd.wap.wml' => 'wml', + 'text/vnd.wap.wmlscript' => 'wmls', + 'text/x-hdml' => 'hdml', + 'text/x-setext' => 'etx', + 'text/x-sgml' => 'sgml', + 'text/x-speech' => 'talk', + 'text/x-vcalendar' => 'vcs', + 'text/x-vcard' => 'vcf', + 'text/xml' => 'xml', + 'ulead/vrml' => 'uvr', + 'video/3gpp' => '3gp', + 'video/dl' => 'dl', + 'video/gl' => 'gl', + 'video/mj2' => 'mj2', + 'video/mpeg' => 'mpeg', + 'video/quicktime' => 'mov', + 'video/vdo' => 'vdo', + 'video/vivo' => 'viv', + 'video/vnd.fvt' => 'fvt', + 'video/vnd.mpegurl' => 'mxu', + 'video/vnd.nokia.interleaved-multimedia' => 'nim', + 'video/vnd.objectvideo' => 'mp4', + 'video/vnd.sealed.mpeg1' => 's11', + 'video/vnd.sealed.mpeg4' => 'smpg', + 'video/vnd.sealed.swf' => 'sswf', + 'video/vnd.sealedmedia.softseal.mov' => 'smov', + 'video/vnd.vivo' => 'vivo', + 'video/x-fli' => 'fli', + 'video/x-ms-asf' => 'asf', + 'video/x-ms-wmv' => 'wmv', + 'video/x-msvideo' => 'avi', + 'video/x-sgi-movie' => 'movie', + 'x-chemical/x-pdb' => 'pdb', + 'x-chemical/x-xyz' => 'xyz', + 'x-conference/x-cooltalk' => 'ice', + 'x-drawing/dwf' => 'dwf', + 'x-world/x-d96' => 'd', + 'x-world/x-svr' => 'svr', + 'x-world/x-vream' => 'vrw', + 'x-world/x-vrml' => 'wrl', + ); + + return !$type ? $default : (isset($extensions[$type]) ? '.'.$extensions[$type] : $default); + } +} diff --git a/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorAnd.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorAnd.class.php.svn-base new file mode 100644 index 0000000..751a11a --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorAnd.class.php.svn-base @@ -0,0 +1,168 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorAnd validates an input value if all validators passes. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfValidatorAnd extends sfValidatorBase +{ + protected + $validators = array(); + + /** + * Constructor. + * + * The first argument can be: + * + * * null + * * a sfValidatorBase instance + * * an array of sfValidatorBase instances + * + * @param mixed $validators Initial validators + * @param array $options An array of options + * @param array $messages An array of error messages + * + * @see sfValidatorBase + */ + public function __construct($validators = null, $options = array(), $messages = array()) + { + if ($validators instanceof sfValidatorBase) + { + $this->addValidator($validators); + } + else if (is_array($validators)) + { + foreach ($validators as $validator) + { + $this->addValidator($validator); + } + } + else if (null !== $validators) + { + throw new InvalidArgumentException('sfValidatorAnd constructor takes a sfValidatorBase object, or a sfValidatorBase array.'); + } + + parent::__construct($options, $messages); + } + + /** + * Configures the current validator. + * + * Available options: + * + * * halt_on_error: Whether to halt on the first error or not (false by default) + * + * @param array $options An array of options + * @param array $messages An array of error messages + * + * @see sfValidatorBase + */ + protected function configure($options = array(), $messages = array()) + { + $this->addOption('halt_on_error', false); + + $this->setMessage('invalid', null); + } + + /** + * Adds a validator. + * + * @param sfValidatorBase $validator A sfValidatorBase instance + */ + public function addValidator(sfValidatorBase $validator) + { + $this->validators[] = $validator; + } + + /** + * Returns an array of the validators. + * + * @return array An array of sfValidatorBase instances + */ + public function getValidators() + { + return $this->validators; + } + + /** + * @see sfValidatorBase + */ + protected function doClean($value) + { + $clean = $value; + $errors = array(); + foreach ($this->validators as $validator) + { + try + { + $clean = $validator->clean($clean); + } + catch (sfValidatorError $e) + { + $errors[] = $e; + + if ($this->getOption('halt_on_error')) + { + break; + } + } + } + + if (count($errors)) + { + if ($this->getMessage('invalid')) + { + throw new sfValidatorError($this, 'invalid', array('value' => $value)); + } + + throw new sfValidatorErrorSchema($this, $errors); + } + + return $clean; + } + + /** + * @see sfValidatorBase + */ + public function asString($indent = 0) + { + $validators = ''; + for ($i = 0, $max = count($this->validators); $i < $max; $i++) + { + $validators .= "\n".$this->validators[$i]->asString($indent + 2)."\n"; + + if ($i < $max - 1) + { + $validators .= str_repeat(' ', $indent + 2).'and'; + } + + if ($i == $max - 2) + { + $options = $this->getOptionsWithoutDefaults(); + $messages = $this->getMessagesWithoutDefaults(); + + if ($options || $messages) + { + $validators .= sprintf('(%s%s)', + $options ? sfYamlInline::dump($options) : ($messages ? '{}' : ''), + $messages ? ', '.sfYamlInline::dump($messages) : '' + ); + } + } + } + + return sprintf("%s(%s%s)", str_repeat(' ', $indent), $validators, str_repeat(' ', $indent)); + } +} diff --git a/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorBase.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorBase.class.php.svn-base new file mode 100644 index 0000000..c0fdb6c --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorBase.class.php.svn-base @@ -0,0 +1,498 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorBase is the base class for all validators. + * + * It also implements the required option for all validators. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id$ + */ +abstract class sfValidatorBase +{ + protected static + $charset = 'UTF-8', + $globalDefaultMessages = array('invalid' => 'Invalid.', 'required' => 'Required.'); + + protected + $requiredOptions = array(), + $defaultMessages = array(), + $defaultOptions = array(), + $messages = array(), + $options = array(); + + /** + * Constructor. + * + * Available options: + * + * * required: true if the value is required, false otherwise (default to true) + * * trim: true if the value must be trimmed, false otherwise (default to false) + * * empty_value: empty value when value is not required + * + * Available error codes: + * + * * required + * * invalid + * + * @param array $options An array of options + * @param array $messages An array of error messages + */ + public function __construct($options = array(), $messages = array()) + { + $this->options = array_merge(array('required' => true, 'trim' => false, 'empty_value' => null), $this->options); + $this->messages = array_merge(array('required' => self::$globalDefaultMessages['required'], 'invalid' => self::$globalDefaultMessages['invalid']), $this->messages); + + $this->configure($options, $messages); + + $this->setDefaultOptions($this->getOptions()); + $this->setDefaultMessages($this->getMessages()); + + $currentOptionKeys = array_keys($this->options); + $optionKeys = array_keys($options); + + // check option names + if ($diff = array_diff($optionKeys, array_merge($currentOptionKeys, $this->requiredOptions))) + { + throw new InvalidArgumentException(sprintf('%s does not support the following options: \'%s\'.', get_class($this), implode('\', \'', $diff))); + } + + // check error code names + if ($diff = array_diff(array_keys($messages), array_keys($this->messages))) + { + throw new InvalidArgumentException(sprintf('%s does not support the following error codes: \'%s\'.', get_class($this), implode('\', \'', $diff))); + } + + // check required options + if ($diff = array_diff($this->requiredOptions, array_merge($currentOptionKeys, $optionKeys))) + { + throw new RuntimeException(sprintf('%s requires the following options: \'%s\'.', get_class($this), implode('\', \'', $diff))); + } + + $this->options = array_merge($this->options, $options); + $this->messages = array_merge($this->messages, $messages); + } + + /** + * Configures the current validator. + * + * This method allows each validator to add options and error messages + * during validator creation. + * + * If some options and messages are given in the sfValidatorBase constructor + * they will take precedence over the options and messages you configure + * in this method. + * + * @param array $options An array of options + * @param array $messages An array of error messages + * + * @see __construct() + */ + protected function configure($options = array(), $messages = array()) + { + } + + /** + * Returns an error message given an error code. + * + * @param string $name The error code + * + * @return string The error message, or the empty string if the error code does not exist + */ + public function getMessage($name) + { + return isset($this->messages[$name]) ? $this->messages[$name] : ''; + } + + /** + * Adds a new error code with a default error message. + * + * @param string $name The error code + * @param string $value The error message + * + * @return sfValidatorBase The current validator instance + */ + public function addMessage($name, $value) + { + $this->messages[$name] = isset(self::$globalDefaultMessages[$name]) ? self::$globalDefaultMessages[$name] : $value; + + return $this; + } + + /** + * Changes an error message given the error code. + * + * @param string $name The error code + * @param string $value The error message + * + * @return sfValidatorBase The current validator instance + */ + public function setMessage($name, $value) + { + if (!in_array($name, array_keys($this->messages))) + { + throw new InvalidArgumentException(sprintf('%s does not support the following error code: \'%s\'.', get_class($this), $name)); + } + + $this->messages[$name] = $value; + + return $this; + } + + /** + * Returns an array of current error messages. + * + * @return array An array of messages + */ + public function getMessages() + { + return $this->messages; + } + + /** + * Changes all error messages. + * + * @param array $values An array of error messages + * + * @return sfValidatorBase The current validator instance + */ + public function setMessages($values) + { + $this->messages = array_merge(array('required' => self::$globalDefaultMessages['required'], 'invalid' => self::$globalDefaultMessages['invalid']), $values); + + return $this; + } + + /** + * Gets an option value. + * + * @param string $name The option name + * + * @return mixed The option value + */ + public function getOption($name) + { + return isset($this->options[$name]) ? $this->options[$name] : null; + } + + /** + * Adds a new option value with a default value. + * + * @param string $name The option name + * @param mixed $value The default value + * + * @return sfValidatorBase The current validator instance + */ + public function addOption($name, $value = null) + { + $this->options[$name] = $value; + + return $this; + } + + /** + * Changes an option value. + * + * @param string $name The option name + * @param mixed $value The value + * + * @return sfValidatorBase The current validator instance + */ + public function setOption($name, $value) + { + if (!in_array($name, array_merge(array_keys($this->options), $this->requiredOptions))) + { + throw new InvalidArgumentException(sprintf('%s does not support the following option: \'%s\'.', get_class($this), $name)); + } + + $this->options[$name] = $value; + + return $this; + } + + /** + * Returns true if the option exists. + * + * @param string $name The option name + * + * @return bool true if the option exists, false otherwise + */ + public function hasOption($name) + { + return isset($this->options[$name]); + } + + /** + * Returns all options. + * + * @return array An array of options + */ + public function getOptions() + { + return $this->options; + } + + /** + * Changes all options. + * + * @param array $values An array of options + * + * @return sfValidatorBase The current validator instance + */ + public function setOptions($values) + { + $this->options = array_merge(array('required' => true, 'trim' => false, 'empty_value' => null), $values); + + return $this; + } + + /** + * Adds a required option. + * + * @param string $name The option name + * + * @return sfValidatorBase The current validator instance + */ + public function addRequiredOption($name) + { + $this->requiredOptions[] = $name; + + return $this; + } + + /** + * Returns all required option names. + * + * @return array An array of required option names + */ + public function getRequiredOptions() + { + return $this->requiredOptions; + } + + /** + * Sets the default message for a given name. + * + * @param string $name The name of the message + * @param string $message The default message string + */ + static public function setDefaultMessage($name, $message) + { + self::$globalDefaultMessages[$name] = $message; + } + + /** + * Cleans the input value. + * + * This method is also responsible for trimming the input value + * and checking the required option. + * + * @param mixed $value The input value + * + * @return mixed The cleaned value + * + * @throws sfValidatorError + */ + public function clean($value) + { + $clean = $value; + + if ($this->options['trim'] && is_string($clean)) + { + $clean = trim($clean); + } + + // empty value? + if ($this->isEmpty($clean)) + { + // required? + if ($this->options['required']) + { + throw new sfValidatorError($this, 'required'); + } + + return $this->getEmptyValue(); + } + + return $this->doClean($clean); + } + + /** + * Cleans the input value. + * + * Every subclass must implements this method. + * + * @param mixed $value The input value + * + * @return mixed The cleaned value + * + * @throws sfValidatorError + */ + abstract protected function doClean($value); + + /** + * Sets the charset to use when validating strings. + * + * @param string $charset The charset + */ + static public function setCharset($charset) + { + self::$charset = $charset; + } + + /** + * Returns the charset to use when validating strings. + * + * @return string The charset (default to UTF-8) + */ + static public function getCharset() + { + return self::$charset; + } + + /** + * Returns true if the value is empty. + * + * @param mixed $value The input value + * + * @return bool true if the value is empty, false otherwise + */ + protected function isEmpty($value) + { + return in_array($value, array(null, '', array()), true); + } + + /** + * Returns an empty value for this validator. + * + * @return mixed The empty value for this validator + */ + protected function getEmptyValue() + { + return $this->getOption('empty_value'); + } + + /** + * Returns an array of all error codes for this validator. + * + * @return array An array of possible error codes + * + * @see getDefaultMessages() + */ + final public function getErrorCodes() + { + return array_keys($this->getDefaultMessages()); + } + + /** + * Returns default messages for all possible error codes. + * + * @return array An array of default error codes and messages + */ + public function getDefaultMessages() + { + return $this->defaultMessages; + } + + /** + * Sets default messages for all possible error codes. + * + * @param array $messages An array of default error codes and messages + */ + protected function setDefaultMessages($messages) + { + $this->defaultMessages = $messages; + } + + /** + * Returns default option values. + * + * @return array An array of default option values + */ + public function getDefaultOptions() + { + return $this->defaultOptions; + } + + /** + * Sets default option values. + * + * @param array $options An array of default option values + */ + protected function setDefaultOptions($options) + { + $this->defaultOptions = $options; + } + + /** + * Returns a string representation of this validator. + * + * @param int $indent Indentation (number of spaces before each line) + * + * @return string The string representation of the validator + */ + public function asString($indent = 0) + { + $options = $this->getOptionsWithoutDefaults(); + $messages = $this->getMessagesWithoutDefaults(); + + return sprintf('%s%s(%s%s)', + str_repeat(' ', $indent), + str_replace('sfValidator', '', get_class($this)), + $options ? sfYamlInline::dump($options) : ($messages ? '{}' : ''), + $messages ? ', '.sfYamlInline::dump($messages) : '' + ); + } + + /** + * Returns all error messages with non default values. + * + * @return string A string representation of the error messages + */ + protected function getMessagesWithoutDefaults() + { + $messages = $this->messages; + + // remove default option values + foreach ($this->getDefaultMessages() as $key => $value) + { + if (array_key_exists($key, $messages) && $messages[$key] === $value) + { + unset($messages[$key]); + } + } + + return $messages; + } + + /** + * Returns all options with non default values. + * + * @return string A string representation of the options + */ + protected function getOptionsWithoutDefaults() + { + $options = $this->options; + + // remove default option values + foreach ($this->getDefaultOptions() as $key => $value) + { + if (array_key_exists($key, $options) && $options[$key] === $value) + { + unset($options[$key]); + } + } + + return $options; + } +} diff --git a/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorBoolean.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorBoolean.class.php.svn-base new file mode 100644 index 0000000..43e476e --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorBoolean.class.php.svn-base @@ -0,0 +1,60 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorBoolean validates a boolean. It also converts the input value to a valid boolean. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfValidatorBoolean extends sfValidatorBase +{ + /** + * Configures the current validator. + * + * Available options: + * + * * true_values: The list of true values + * * false_values: The list of false values + * + * @param array $options An array of options + * @param array $messages An array of error messages + * + * @see sfValidatorBase + */ + protected function configure($options = array(), $messages = array()) + { + $this->addOption('true_values', array('true', 't', 'yes', 'y', 'on', '1')); + $this->addOption('false_values', array('false', 'f', 'no', 'n', 'off', '0')); + + $this->setOption('required', false); + $this->setOption('empty_value', false); + } + + /** + * @see sfValidatorBase + */ + protected function doClean($value) + { + if (in_array($value, $this->getOption('true_values'))) + { + return true; + } + + if (in_array($value, $this->getOption('false_values'))) + { + return false; + } + + throw new sfValidatorError($this, 'invalid', array('value' => $value)); + } +} diff --git a/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorCSRFToken.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorCSRFToken.class.php.svn-base new file mode 100644 index 0000000..51d893e --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorCSRFToken.class.php.svn-base @@ -0,0 +1,45 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorCSRFToken checks that the token is valid. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfValidatorCSRFToken extends sfValidatorBase +{ + /** + * @see sfValidatorBase + */ + protected function configure($options = array(), $messages = array()) + { + $this->addRequiredOption('token'); + + $this->setOption('required', true); + + $this->addMessage('csrf_attack', 'CSRF attack detected.'); + } + + /** + * @see sfValidatorBase + */ + protected function doClean($value) + { + if ($value != $this->getOption('token')) + { + throw new sfValidatorError($this, 'csrf_attack'); + } + + return $value; + } +} diff --git a/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorCallback.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorCallback.class.php.svn-base new file mode 100644 index 0000000..ec631d9 --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorCallback.class.php.svn-base @@ -0,0 +1,49 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorCallback validates an input value if the given callback does not throw a sfValidatorError. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfValidatorCallback extends sfValidatorBase +{ + /** + * Configures the current validator. + * + * Available options: + * + * * callback: A valid PHP callback (required) + * * arguments: An array of arguments to pass to the callback + * + * @param array $options An array of options + * @param array $messages An array of error messages + * + * @see sfValidatorBase + */ + protected function configure($options = array(), $messages = array()) + { + $this->addRequiredOption('callback'); + $this->addOption('arguments', array()); + + $this->setOption('required', false); + } + + /** + * @see sfValidatorBase + */ + protected function doClean($value) + { + return call_user_func($this->getOption('callback'), $this, $value, $this->getOption('arguments')); + } +} diff --git a/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorChoice.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorChoice.class.php.svn-base new file mode 100644 index 0000000..191365d --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorChoice.class.php.svn-base @@ -0,0 +1,137 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorChoice validates than the value is one of the expected values. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfValidatorChoice extends sfValidatorBase +{ + /** + * Configures the current validator. + * + * Available options: + * + * * choices: An array of expected values (required) + * * multiple: true if the select tag must allow multiple selections + * * min: The minimum number of values that need to be selected (this option is only active if multiple is true) + * * max: The maximum number of values that need to be selected (this option is only active if multiple is true) + * + * @param array $options An array of options + * @param array $messages An array of error messages + * + * @see sfValidatorBase + */ + protected function configure($options = array(), $messages = array()) + { + $this->addRequiredOption('choices'); + $this->addOption('multiple', false); + $this->addOption('min'); + $this->addOption('max'); + + $this->addMessage('min', 'At least %min% values must be selected (%count% values selected).'); + $this->addMessage('max', 'At most %max% values must be selected (%count% values selected).'); + } + + /** + * @see sfValidatorBase + */ + protected function doClean($value) + { + $choices = $this->getChoices(); + + if ($this->getOption('multiple')) + { + $value = $this->cleanMultiple($value, $choices); + } + else + { + if (!self::inChoices($value, $choices)) + { + throw new sfValidatorError($this, 'invalid', array('value' => $value)); + } + } + + return $value; + } + + public function getChoices() + { + $choices = $this->getOption('choices'); + if ($choices instanceof sfCallable) + { + $choices = $choices->call(); + } + + return $choices; + } + + /** + * Cleans a value when multiple is true. + * + * @param mixed $value The submitted value + * + * @return array The cleaned value + */ + protected function cleanMultiple($value, $choices) + { + if (!is_array($value)) + { + $value = array($value); + } + + foreach ($value as $v) + { + if (!self::inChoices($v, $choices)) + { + throw new sfValidatorError($this, 'invalid', array('value' => $v)); + } + } + + $count = count($value); + + if ($this->hasOption('min') && $count < $this->getOption('min')) + { + throw new sfValidatorError($this, 'min', array('count' => $count, 'min' => $this->getOption('min'))); + } + + if ($this->hasOption('max') && $count > $this->getOption('max')) + { + throw new sfValidatorError($this, 'max', array('count' => $count, 'max' => $this->getOption('max'))); + } + + return $value; + } + + /** + * Checks if a value is part of given choices (see bug #4212) + * + * @param mixed $value The value to check + * @param array $choices The array of available choices + * + * @return Boolean + */ + static protected function inChoices($value, array $choices = array()) + { + foreach ($choices as $choice) + { + if ((string) $choice == (string) $value) + { + return true; + } + } + + return false; + } +} diff --git a/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorDate.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorDate.class.php.svn-base new file mode 100644 index 0000000..7fe1a6b --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorDate.class.php.svn-base @@ -0,0 +1,261 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorDate validates a date. It also converts the input value to a valid date. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfValidatorDate extends sfValidatorBase +{ + /** + * Configures the current validator. + * + * Available options: + * + * * date_format: A regular expression that dates must match + * Note that the regular expression must use named subpatterns like (?P) + * Working example: ~(?P\d{2})/(?P\d{2})/(?P\d{4})~ + * * with_time: true if the validator must return a time, false otherwise + * * date_output: The format to use when returning a date (default to Y-m-d) + * * datetime_output: The format to use when returning a date with time (default to Y-m-d H:i:s) + * * date_format_error: The date format to use when displaying an error for a bad_format error (use date_format if not provided) + * * max: The maximum date allowed (as a timestamp or accecpted date() format) + * * min: The minimum date allowed (as a timestamp or accecpted date() format) + * * date_format_range_error: The date format to use when displaying an error for min/max (default to d/m/Y H:i:s) + * + * Available error codes: + * + * * bad_format + * * min + * * max + * + * @param array $options An array of options + * @param array $messages An array of error messages + * + * @see sfValidatorBase + */ + protected function configure($options = array(), $messages = array()) + { + $this->addMessage('bad_format', '"%value%" does not match the date format (%date_format%).'); + $this->addMessage('max', 'The date must be before %max%.'); + $this->addMessage('min', 'The date must be after %min%.'); + + $this->addOption('date_format', null); + $this->addOption('with_time', false); + $this->addOption('date_output', 'Y-m-d'); + $this->addOption('datetime_output', 'Y-m-d H:i:s'); + $this->addOption('date_format_error'); + $this->addOption('min', null); + $this->addOption('max', null); + $this->addOption('date_format_range_error', 'd/m/Y H:i:s'); + } + + /** + * @see sfValidatorBase + */ + protected function doClean($value) + { + // check date format + if (is_string($value) && $regex = $this->getOption('date_format')) + { + if (!preg_match($regex, $value, $match)) + { + throw new sfValidatorError($this, 'bad_format', array('value' => $value, 'date_format' => $this->getOption('date_format_error') ? $this->getOption('date_format_error') : $this->getOption('date_format'))); + } + + $value = $match; + } + + // convert array to date string + if (is_array($value)) + { + $value = $this->convertDateArrayToString($value); + } + + // convert timestamp to date number format + if (is_numeric($value)) + { + $cleanTime = (integer) $value; + $clean = date('YmdHis', $cleanTime); + } + // convert string to date number format + else + { + try + { + $date = new DateTime($value); + $date->setTimezone(new DateTimeZone(date_default_timezone_get())); + $clean = $date->format('YmdHis'); + } + catch (Exception $e) + { + throw new sfValidatorError($this, 'invalid', array('value' => $value)); + } + } + + // check max + if ($max = $this->getOption('max')) + { + // convert timestamp to date number format + if (is_numeric($max)) + { + $maxError = date($this->getOption('date_format_range_error'), $max); + $max = date('YmdHis', $max); + } + // convert string to date number + else + { + $dateMax = new DateTime($max); + $max = $dateMax->format('YmdHis'); + $maxError = $dateMax->format($this->getOption('date_format_range_error')); + } + + if ($clean > $max) + { + throw new sfValidatorError($this, 'max', array('value' => $value, 'max' => $maxError)); + } + } + + // check min + if ($min = $this->getOption('min')) + { + // convert timestamp to date number + if (is_numeric($min)) + { + $minError = date($this->getOption('date_format_range_error'), $min); + $min = date('YmdHis', $min); + } + // convert string to date number + else + { + $dateMin = new DateTime($min); + $min = $dateMin->format('YmdHis'); + $minError = $dateMin->format($this->getOption('date_format_range_error')); + } + + if ($clean < $min) + { + throw new sfValidatorError($this, 'min', array('value' => $value, 'min' => $minError)); + } + } + + if ($clean === $this->getEmptyValue()) + { + return $cleanTime; + } + + $format = $this->getOption('with_time') ? $this->getOption('datetime_output') : $this->getOption('date_output'); + + return isset($date) ? $date->format($format) : date($format, $cleanTime); + } + + /** + * Converts an array representing a date to a timestamp. + * + * The array can contains the following keys: year, month, day, hour, minute, second + * + * @param array $value An array of date elements + * + * @return int A timestamp + */ + protected function convertDateArrayToString($value) + { + // all elements must be empty or a number + foreach (array('year', 'month', 'day', 'hour', 'minute', 'second') as $key) + { + if (isset($value[$key]) && !preg_match('#^\d+$#', $value[$key]) && !empty($value[$key])) + { + throw new sfValidatorError($this, 'invalid', array('value' => $value)); + } + } + + // if one date value is empty, all others must be empty too + $empties = + (!isset($value['year']) || !$value['year'] ? 1 : 0) + + (!isset($value['month']) || !$value['month'] ? 1 : 0) + + (!isset($value['day']) || !$value['day'] ? 1 : 0) + ; + if ($empties > 0 && $empties < 3) + { + throw new sfValidatorError($this, 'invalid', array('value' => $value)); + } + else if (3 == $empties) + { + return $this->getEmptyValue(); + } + + if (!checkdate(intval($value['month']), intval($value['day']), intval($value['year']))) + { + throw new sfValidatorError($this, 'invalid', array('value' => $value)); + } + + if ($this->getOption('with_time')) + { + // if second is set, minute and hour must be set + // if minute is set, hour must be set + if ( + $this->isValueSet($value, 'second') && (!$this->isValueSet($value, 'minute') || !$this->isValueSet($value, 'hour')) + || + $this->isValueSet($value, 'minute') && !$this->isValueSet($value, 'hour') + ) + { + throw new sfValidatorError($this, 'invalid', array('value' => $value)); + } + + $clean = sprintf( + "%04d-%02d-%02d %02d:%02d:%02d", + intval($value['year']), + intval($value['month']), + intval($value['day']), + isset($value['hour']) ? intval($value['hour']) : 0, + isset($value['minute']) ? intval($value['minute']) : 0, + isset($value['second']) ? intval($value['second']) : 0 + ); + } + else + { + $clean = sprintf( + "%04d-%02d-%02d %02d:%02d:%02d", + intval($value['year']), + intval($value['month']), + intval($value['day']), + 0, + 0, + 0 + ); + } + + return $clean; + } + + protected function isValueSet($values, $key) + { + return isset($values[$key]) && !in_array($values[$key], array(null, ''), true); + } + + /** + * @see sfValidatorBase + */ + protected function isEmpty($value) + { + if (is_array($value)) + { + $filtered = array_filter($value); + + return empty($filtered); + } + + return parent::isEmpty($value); + } +} diff --git a/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorDateRange.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorDateRange.class.php.svn-base new file mode 100644 index 0000000..3758c01 --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorDateRange.class.php.svn-base @@ -0,0 +1,65 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorDateRange validates a range of date. It also converts the input values to valid dates. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfValidatorDateRange extends sfValidatorBase +{ + /** + * Configures the current validator. + * + * Available options: + * + * * from_date: The from date validator (required) + * * to_date: The to date validator (required) + * * from_field: The name of the "from" date field (optional, default: from) + * * to_field: The name of the "to" date field (optional, default: to) + * + * @param array $options An array of options + * @param array $messages An array of error messages + * + * @see sfValidatorBase + */ + protected function configure($options = array(), $messages = array()) + { + $this->setMessage('invalid', 'The begin date must be before the end date.'); + + $this->addRequiredOption('from_date'); + $this->addRequiredOption('to_date'); + $this->addOption('from_field', 'from'); + $this->addOption('to_field', 'to'); + } + + /** + * @see sfValidatorBase + */ + protected function doClean($value) + { + $fromField = $this->getOption('from_field'); + $toField = $this->getOption('to_field'); + + $value[$fromField] = $this->getOption('from_date')->clean(isset($value[$fromField]) ? $value[$fromField] : null); + $value[$toField] = $this->getOption('to_date')->clean(isset($value[$toField]) ? $value[$toField] : null); + + if ($value[$fromField] && $value[$toField]) + { + $v = new sfValidatorSchemaCompare($fromField, sfValidatorSchemaCompare::LESS_THAN_EQUAL, $toField, array('throw_global_error' => true), array('invalid' => $this->getMessage('invalid'))); + $v->clean($value); + } + + return $value; + } +} diff --git a/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorDateTime.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorDateTime.class.php.svn-base new file mode 100644 index 0000000..7d62ace --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorDateTime.class.php.svn-base @@ -0,0 +1,30 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorDateTime validates a date and a time. It also converts the input value to a valid date. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfValidatorDateTime extends sfValidatorDate +{ + /** + * @see sfValidatorDate + */ + protected function configure($options = array(), $messages = array()) + { + parent::configure($options, $messages); + + $this->setOption('with_time', true); + } +} diff --git a/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorDecorator.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorDecorator.class.php.svn-base new file mode 100644 index 0000000..d4ada14 --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorDecorator.class.php.svn-base @@ -0,0 +1,171 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorDecorator decorates another validator. + * + * This validator has exactly the same behavior as the Decorator validator. + * + * The options and messages are proxied from the decorated validator. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id$ + */ +abstract class sfValidatorDecorator extends sfValidatorBase +{ + protected + $validator = null; + + /** + * @see sfValidatorBase + */ + public function __construct($options = array(), $messages = array()) + { + $this->validator = $this->getValidator(); + + if (!$this->validator instanceof sfValidatorBase) + { + throw new RuntimeException('The getValidator() method must return a sfValidatorBase instance.'); + } + + foreach ($options as $key => $value) + { + $this->validator->setOption($key, $value); + } + + foreach ($messages as $key => $value) + { + $this->validator->setMessage($key, $value); + } + } + + /** + * Returns the decorated validator. + * + * Every subclass must implement this method. + * + * @return sfValidatorBase A sfValidatorBase instance + */ + abstract protected function getValidator(); + + /** + * @see sfValidatorBase + */ + public function clean($value) + { + return $this->doClean($value); + } + + /** + * @see sfValidatorBase + */ + protected function doClean($value) + { + return $this->validator->clean($value); + } + + /** + * @see sfValidatorBase + */ + public function getMessage($name) + { + return $this->validator->getMessage($name); + } + + /** + * @see sfValidatorBase + */ + public function setMessage($name, $value) + { + $this->validator->setMessage($name, $value); + } + + /** + * @see sfValidatorBase + */ + public function getMessages() + { + return $this->validator->getMessages(); + } + + /** + * @see sfValidatorBase + */ + public function setMessages($values) + { + return $this->validator->setMessages($values); + } + + /** + * @see sfValidatorBase + */ + public function getOption($name) + { + return $this->validator->getOption($name); + } + + /** + * @see sfValidatorBase + */ + public function setOption($name, $value) + { + $this->validator->setOption($name, $value); + } + + /** + * @see sfValidatorBase + */ + public function hasOption($name) + { + return $this->validator->hasOption($name); + } + + /** + * @see sfValidatorBase + */ + public function getOptions() + { + return $this->validator->getOptions(); + } + + /** + * @see sfValidatorBase + */ + public function setOptions($values) + { + $this->validator->setOptions($values); + } + + /** + * @see sfValidatorBase + */ + public function asString($indent = 0) + { + return $this->validator->asString($indent); + } + + /** + * @see sfValidatorBase + */ + public function getDefaultOptions() + { + return $this->validator->getDefaultOptions(); + } + + /** + * @see sfValidatorBase + */ + public function getDefaultMessages() + { + return $this->validator->getDefaultMessages(); + } +} diff --git a/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorEmail.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorEmail.class.php.svn-base new file mode 100644 index 0000000..6de05b5 --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorEmail.class.php.svn-base @@ -0,0 +1,32 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorEmail validates emails. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfValidatorEmail extends sfValidatorRegex +{ + const REGEX_EMAIL = '/^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i'; + + /** + * @see sfValidatorRegex + */ + protected function configure($options = array(), $messages = array()) + { + parent::configure($options, $messages); + + $this->setOption('pattern', self::REGEX_EMAIL); + } +} diff --git a/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorError.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorError.class.php.svn-base new file mode 100644 index 0000000..5eab900 --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorError.class.php.svn-base @@ -0,0 +1,156 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorError represents a validation error. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfValidatorError extends Exception implements Serializable +{ + protected + $validator = null, + $arguments = array(); + + /** + * Constructor. + * + * @param sfValidatorBase $validator An sfValidatorBase instance + * @param string $code The error code + * @param array $arguments An array of named arguments needed to render the error message + */ + public function __construct(sfValidatorBase $validator, $code, $arguments = array()) + { + $this->validator = $validator; + $this->arguments = $arguments; + + // override default exception message and code + $this->code = $code; + + if (!$messageFormat = $this->getMessageFormat()) + { + $messageFormat = $code; + } + $this->message = strtr($messageFormat, $this->getArguments()); + } + + /** + * Returns the string representation of the error. + * + * @return string The error message + */ + public function __toString() + { + return $this->getMessage(); + } + + /** + * Returns the input value that triggered this error. + * + * @return mixed The input value + */ + public function getValue() + { + return isset($this->arguments['value']) ? $this->arguments['value'] : null; + } + + /** + * Returns the validator that triggered this error. + * + * @return sfValidatorBase A sfValidatorBase instance + */ + public function getValidator() + { + return $this->validator; + } + + /** + * Returns the arguments needed to format the message. + * + * @param bool $raw false to use it as arguments for the message format, true otherwise (default to false) + * + * @see getMessageFormat() + */ + public function getArguments($raw = false) + { + if ($raw) + { + return $this->arguments; + } + + $arguments = array(); + foreach ($this->arguments as $key => $value) + { + if (is_array($value)) + { + continue; + } + + $arguments["%$key%"] = htmlspecialchars($value, ENT_QUOTES, sfValidatorBase::getCharset()); + } + + return $arguments; + } + + /** + * Returns the message format for this error. + * + * This is the string you need to use if you need to internationalize + * error messages: + * + * $i18n->__($error->getMessageFormat(), $error->getArguments()); + * + * If no message format has been set in the validator, the exception standard + * message is returned. + * + * @return string The message format + */ + public function getMessageFormat() + { + $messageFormat = $this->validator->getMessage($this->code); + if (!$messageFormat) + { + $messageFormat = $this->getMessage(); + } + + return $messageFormat; + } + + /** + * Serializes the current instance. + * + * We must implement the Serializable interface to overcome a problem with PDO + * used as a session handler. + * + * The default serialization process serializes the exception trace, and because + * the trace can contain a PDO instance which is not serializable, serializing won't + * work when using PDO. + * + * @return string The instance as a serialized string + */ + public function serialize() + { + return serialize(array($this->validator, $this->arguments, $this->code, $this->message)); + } + + /** + * Unserializes a sfValidatorError instance. + * + * @param string $serialized A serialized sfValidatorError instance + * + */ + public function unserialize($serialized) + { + list($this->validator, $this->arguments, $this->code, $this->message) = unserialize($serialized); + } +} diff --git a/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorErrorSchema.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorErrorSchema.class.php.svn-base new file mode 100644 index 0000000..162de89 --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorErrorSchema.class.php.svn-base @@ -0,0 +1,340 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorErrorSchema represents a validation schema error. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfValidatorErrorSchema extends sfValidatorError implements ArrayAccess, Iterator, Countable +{ + protected + $errors = array(), + $globalErrors = array(), + $namedErrors = array(), + $count = 0; + + /** + * Constructor. + * + * @param sfValidatorBase $validator An sfValidatorBase instance + * @param array $errors An array of errors + */ + public function __construct(sfValidatorBase $validator, $errors = array()) + { + $this->validator = $validator; + $this->arguments = array(); + + // override default exception message and code + $this->code = ''; + $this->message = ''; + + $this->addErrors($errors); + } + + /** + * Adds an error. + * + * This method merges sfValidatorErrorSchema errors with the current instance. + * + * @param sfValidatorError $error An sfValidatorError instance + * @param string $name The error name + * + * @return sfValidatorErrorSchema The current error schema instance + */ + public function addError(sfValidatorError $error, $name = null) + { + if (null === $name || is_integer($name)) + { + if ($error instanceof sfValidatorErrorSchema) + { + $this->addErrors($error); + } + else + { + $this->globalErrors[] = $error; + $this->errors[] = $error; + } + } + else + { + if (!isset($this->namedErrors[$name]) && !$error instanceof sfValidatorErrorSchema) + { + $this->namedErrors[$name] = $error; + $this->errors[$name] = $error; + } + else + { + if (!isset($this->namedErrors[$name])) + { + $this->namedErrors[$name] = new sfValidatorErrorSchema($error->getValidator()); + $this->errors[$name] = new sfValidatorErrorSchema($error->getValidator()); + } + else if (!$this->namedErrors[$name] instanceof sfValidatorErrorSchema) + { + $current = $this->namedErrors[$name]; + $this->namedErrors[$name] = new sfValidatorErrorSchema($current->getValidator()); + $this->errors[$name] = new sfValidatorErrorSchema($current->getValidator()); + + $method = $current instanceof sfValidatorErrorSchema ? 'addErrors' : 'addError'; + $this->namedErrors[$name]->$method($current); + $this->errors[$name]->$method($current); + } + + $method = $error instanceof sfValidatorErrorSchema ? 'addErrors' : 'addError'; + $this->namedErrors[$name]->$method($error); + $this->errors[$name]->$method($error); + } + } + + $this->updateCode(); + $this->updateMessage(); + + return $this; + } + + /** + * Adds an array of errors. + * + * @param array $errors An array of sfValidatorError instances + * + * @return sfValidatorErrorSchema The current error schema instance + */ + public function addErrors($errors) + { + if ($errors instanceof sfValidatorErrorSchema) + { + foreach ($errors->getGlobalErrors() as $error) + { + $this->addError($error); + } + + foreach ($errors->getNamedErrors() as $name => $error) + { + $this->addError($error, (string) $name); + } + } + else + { + foreach ($errors as $name => $error) + { + $this->addError($error, $name); + } + } + + return $this; + } + + /** + * Gets an array of all errors + * + * @return array An array of sfValidatorError instances + */ + public function getErrors() + { + return $this->errors; + } + + /** + * Gets an array of all named errors + * + * @return array An array of sfValidatorError instances + */ + public function getNamedErrors() + { + return $this->namedErrors; + } + + /** + * Gets an array of all global errors + * + * @return array An array of sfValidatorError instances + */ + public function getGlobalErrors() + { + return $this->globalErrors; + } + + /** + * @see sfValidatorError + */ + public function getValue() + { + return null; + } + + /** + * @see sfValidatorError + */ + public function getArguments($raw = false) + { + return array(); + } + + /** + * @see sfValidatorError + */ + public function getMessageFormat() + { + return ''; + } + + /** + * Returns the number of errors (implements the Countable interface). + * + * @return int The number of array + */ + public function count() + { + return count($this->errors); + } + + /** + * Reset the error array to the beginning (implements the Iterator interface). + */ + public function rewind() + { + reset($this->errors); + + $this->count = count($this->errors); + } + + /** + * Get the key associated with the current error (implements the Iterator interface). + * + * @return string The key + */ + public function key() + { + return key($this->errors); + } + + /** + * Returns the current error (implements the Iterator interface). + * + * @return mixed The escaped value + */ + public function current() + { + return current($this->errors); + } + + /** + * Moves to the next error (implements the Iterator interface). + */ + public function next() + { + next($this->errors); + + --$this->count; + } + + /** + * Returns true if the current error is valid (implements the Iterator interface). + * + * @return boolean The validity of the current element; true if it is valid + */ + public function valid() + { + return $this->count > 0; + } + + /** + * Returns true if the error exists (implements the ArrayAccess interface). + * + * @param string $name The name of the error + * + * @return bool true if the error exists, false otherwise + */ + public function offsetExists($name) + { + return isset($this->errors[$name]); + } + + /** + * Returns the error associated with the name (implements the ArrayAccess interface). + * + * @param string $name The offset of the value to get + * + * @return sfValidatorError A sfValidatorError instance + */ + public function offsetGet($name) + { + return isset($this->errors[$name]) ? $this->errors[$name] : null; + } + + /** + * Throws an exception saying that values cannot be set (implements the ArrayAccess interface). + * + * @param string $offset (ignored) + * @param string $value (ignored) + * + * @throws LogicException + */ + public function offsetSet($offset, $value) + { + throw new LogicException('Unable update an error.'); + } + + /** + * Impossible to call because this is an exception! + * + * @param string $offset (ignored) + */ + public function offsetUnset($offset) + { + } + + /** + * Updates the exception error code according to the current errors. + */ + protected function updateCode() + { + $this->code = implode(' ', array_merge( + array_map(create_function('$e', 'return $e->getCode();'), $this->globalErrors), + array_map(create_function('$n,$e', 'return $n.\' [\'.$e->getCode().\']\';'), array_keys($this->namedErrors), array_values($this->namedErrors)) + )); + } + + /** + * Updates the exception error message according to the current errors. + */ + protected function updateMessage() + { + $this->message = implode(' ', array_merge( + array_map(create_function('$e', 'return $e->getMessage();'), $this->globalErrors), + array_map(create_function('$n,$e', 'return $n.\' [\'.$e->getMessage().\']\';'), array_keys($this->namedErrors), array_values($this->namedErrors)) + )); + } + + /** + * Serializes the current instance. + * + * @return string The instance as a serialized string + */ + public function serialize() + { + return serialize(array($this->validator, $this->arguments, $this->code, $this->message, $this->errors, $this->globalErrors, $this->namedErrors)); + } + + /** + * Unserializes a sfValidatorError instance. + * + * @param string $serialized A serialized sfValidatorError instance + * + */ + public function unserialize($serialized) + { + list($this->validator, $this->arguments, $this->code, $this->message, $this->errors, $this->globalErrors, $this->namedErrors) = unserialize($serialized); + } +} diff --git a/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorFile.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorFile.class.php.svn-base new file mode 100644 index 0000000..9cafa8c --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorFile.class.php.svn-base @@ -0,0 +1,299 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorFile validates an uploaded file. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfValidatorFile extends sfValidatorBase +{ + /** + * Configures the current validator. + * + * Available options: + * + * * max_size: The maximum file size in bytes (cannot exceed upload_max_filesize in php.ini) + * * mime_types: Allowed mime types array or category (available categories: web_images) + * * mime_type_guessers: An array of mime type guesser PHP callables (must return the mime type or null) + * * mime_categories: An array of mime type categories (web_images is defined by default) + * * path: The path where to save the file - as used by the sfValidatedFile class (optional) + * * validated_file_class: Name of the class that manages the cleaned uploaded file (optional) + * + * There are 3 built-in mime type guessers: + * + * * guessFromFileinfo: Uses the finfo_open() function (from the Fileinfo PECL extension) + * * guessFromMimeContentType: Uses the mime_content_type() function (deprecated) + * * guessFromFileBinary: Uses the file binary (only works on *nix system) + * + * Available error codes: + * + * * max_size + * * mime_types + * * partial + * * no_tmp_dir + * * cant_write + * * extension + * + * @param array $options An array of options + * @param array $messages An array of error messages + * + * @see sfValidatorBase + */ + protected function configure($options = array(), $messages = array()) + { + if (!ini_get('file_uploads')) + { + throw new LogicException(sprintf('Unable to use a file validator as "file_uploads" is disabled in your php.ini file (%s)', get_cfg_var('cfg_file_path'))); + } + + $this->addOption('max_size'); + $this->addOption('mime_types'); + $this->addOption('mime_type_guessers', array( + array($this, 'guessFromFileinfo'), + array($this, 'guessFromMimeContentType'), + array($this, 'guessFromFileBinary'), + )); + $this->addOption('mime_categories', array( + 'web_images' => array( + 'image/jpeg', + 'image/pjpeg', + 'image/png', + 'image/x-png', + 'image/gif', + ))); + $this->addOption('validated_file_class', 'sfValidatedFile'); + $this->addOption('path', null); + + $this->addMessage('max_size', 'File is too large (maximum is %max_size% bytes).'); + $this->addMessage('mime_types', 'Invalid mime type (%mime_type%).'); + $this->addMessage('partial', 'The uploaded file was only partially uploaded.'); + $this->addMessage('no_tmp_dir', 'Missing a temporary folder.'); + $this->addMessage('cant_write', 'Failed to write file to disk.'); + $this->addMessage('extension', 'File upload stopped by extension.'); + } + + /** + * This validator always returns a sfValidatedFile object. + * + * The input value must be an array with the following keys: + * + * * tmp_name: The absolute temporary path to the file + * * name: The original file name (optional) + * * type: The file content type (optional) + * * error: The error code (optional) + * * size: The file size in bytes (optional) + * + * @see sfValidatorBase + */ + protected function doClean($value) + { + if (!is_array($value) || !isset($value['tmp_name'])) + { + throw new sfValidatorError($this, 'invalid', array('value' => (string) $value)); + } + + if (!isset($value['name'])) + { + $value['name'] = ''; + } + + if (!isset($value['error'])) + { + $value['error'] = UPLOAD_ERR_OK; + } + + if (!isset($value['size'])) + { + $value['size'] = filesize($value['tmp_name']); + } + + if (!isset($value['type'])) + { + $value['type'] = 'application/octet-stream'; + } + + switch ($value['error']) + { + case UPLOAD_ERR_INI_SIZE: + $max = ini_get('upload_max_filesize'); + if ($this->getOption('max_size')) + { + $max = min($max, $this->getOption('max_size')); + } + throw new sfValidatorError($this, 'max_size', array('max_size' => $max, 'size' => (int) $value['size'])); + case UPLOAD_ERR_FORM_SIZE: + throw new sfValidatorError($this, 'max_size', array('max_size' => 0, 'size' => (int) $value['size'])); + case UPLOAD_ERR_PARTIAL: + throw new sfValidatorError($this, 'partial'); + case UPLOAD_ERR_NO_TMP_DIR: + throw new sfValidatorError($this, 'no_tmp_dir'); + case UPLOAD_ERR_CANT_WRITE: + throw new sfValidatorError($this, 'cant_write'); + case UPLOAD_ERR_EXTENSION: + throw new sfValidatorError($this, 'extension'); + } + + // check file size + if ($this->hasOption('max_size') && $this->getOption('max_size') < (int) $value['size']) + { + throw new sfValidatorError($this, 'max_size', array('max_size' => $this->getOption('max_size'), 'size' => (int) $value['size'])); + } + + $mimeType = $this->getMimeType((string) $value['tmp_name'], (string) $value['type']); + + // check mime type + if ($this->hasOption('mime_types')) + { + $mimeTypes = is_array($this->getOption('mime_types')) ? $this->getOption('mime_types') : $this->getMimeTypesFromCategory($this->getOption('mime_types')); + if (!in_array($mimeType, array_map('strtolower', $mimeTypes))) + { + throw new sfValidatorError($this, 'mime_types', array('mime_types' => $mimeTypes, 'mime_type' => $mimeType)); + } + } + + $class = $this->getOption('validated_file_class'); + + return new $class($value['name'], $mimeType, $value['tmp_name'], $value['size'], $this->getOption('path')); + } + + /** + * Returns the mime type of a file. + * + * This methods call each mime_type_guessers option callables to + * guess the mime type. + * + * This method always returns a lower-cased string as mime types are case-insensitive + * as per the RFC 2616 (http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.7). + * + * @param string $file The absolute path of a file + * @param string $fallback The default mime type to return if not guessable + * + * @return string The mime type of the file (fallback is returned if not guessable) + */ + protected function getMimeType($file, $fallback) + { + foreach ($this->getOption('mime_type_guessers') as $method) + { + $type = call_user_func($method, $file); + + if (null !== $type && $type !== false) + { + return strtolower($type); + } + } + + return strtolower($fallback); + } + + /** + * Guess the file mime type with PECL Fileinfo extension + * + * @param string $file The absolute path of a file + * + * @return string The mime type of the file (null if not guessable) + */ + protected function guessFromFileinfo($file) + { + if (!function_exists('finfo_open') || !is_readable($file)) + { + return null; + } + + if (!$finfo = new finfo(FILEINFO_MIME)) + { + return null; + } + + $type = $finfo->file($file); + + // remove charset (added as of PHP 5.3) + if (false !== $pos = strpos($type, ';')) + { + $type = substr($type, 0, $pos); + } + + return $type; + } + + /** + * Guess the file mime type with mime_content_type function (deprecated) + * + * @param string $file The absolute path of a file + * + * @return string The mime type of the file (null if not guessable) + */ + protected function guessFromMimeContentType($file) + { + if (!function_exists('mime_content_type') || !is_readable($file)) + { + return null; + } + + return mime_content_type($file); + } + + /** + * Guess the file mime type with the file binary (only available on *nix) + * + * @param string $file The absolute path of a file + * + * @return string The mime type of the file (null if not guessable) + */ + protected function guessFromFileBinary($file) + { + ob_start(); + //need to use --mime instead of -i. see #6641 + passthru(sprintf('file -b --mime %s 2>/dev/null', escapeshellarg($file)), $return); + if ($return > 0) + { + ob_end_clean(); + + return null; + } + $type = trim(ob_get_clean()); + + if (!preg_match('#^([a-z0-9\-]+/[a-z0-9\-.]+)#i', $type, $match)) + { + // it's not a type, but an error message + return null; + } + + return $match[1]; + } + + protected function getMimeTypesFromCategory($category) + { + $categories = $this->getOption('mime_categories'); + + if (!isset($categories[$category])) + { + throw new InvalidArgumentException(sprintf('Invalid mime type category "%s".', $category)); + } + + return $categories[$category]; + } + + /** + * @see sfValidatorBase + */ + protected function isEmpty($value) + { + // empty if the value is not an array + // or if the value comes from PHP with an error of UPLOAD_ERR_NO_FILE + return + (!is_array($value)) + || + (is_array($value) && isset($value['error']) && UPLOAD_ERR_NO_FILE === $value['error']); + } +} diff --git a/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorFromDescription.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorFromDescription.class.php.svn-base new file mode 100644 index 0000000..91a85a4 --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorFromDescription.class.php.svn-base @@ -0,0 +1,387 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorFromDescription converts a string to a validator. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfValidatorFromDescription extends sfValidatorDecorator +{ + protected + $tokens = array(), + $string = ''; + + /** + * @see sfValidatorBase + */ + public function __construct($string, $options = array(), $messages = array()) + { + $this->string = $string; + $this->tokens = $this->tokenize($string); + + parent::__construct($options, $messages); + } + + /** + * Returns a PHP representation for the validator. + * + * This PHP representation can be evaled to return the object validator. + * + * This is mainly useful to cache the result of the validator string parsing. + * + * @return string The PHP representation for the validator + */ + public function asPhp() + { + return $this->reduceTokens($this->tokens, 'asPhp'); + } + + /** + * @see sfValidatorDecorator + */ + public function getValidator() + { + if (null === $this->validator) + { + $this->validator = $this->reduceTokens($this->tokens, 'getValidator'); + } + + return $this->validator; + } + + /** + * Tokenizes a validator string to a list of tokens in RPN. + * + * @param string $string A validator string + * + * @return array An array of tokens + */ + protected function tokenize($string) + { + $tokens = array(); + $len = strlen($string); + $i = 0; + while ($i < $len) + { + if (preg_match('/^([a-z0-9_\-]+)\s*(<=|>=|<|>|==|!=)/i', substr($string, $i), $match)) + { + // schema compare validator + $i += strlen($match[0]); + + $leftField = $match[1]; + $operator = $match[2]; + + // arguments (optional) + $arguments = $this->parseArguments($string, $i); + + // rightField + if (!preg_match('/\s*([a-z0-9_\-]+)/', substr($string, $i), $match)) + { + throw new DomainException('Parsing problem.'); + } + + $i += strlen($match[0]); + $rightField = $match[1]; + + $tokens[] = new sfValidatorFDToken('sfValidatorSchemaCompare', array($leftField, $operator, $rightField, $arguments[0], isset($arguments[1]) ? $arguments[1] : array())); + } + else if (preg_match('/^(and|or)/i', substr($string, $i), $match)) + { + // all, any validador + $i += strlen($match[0]); + + // arguments (optional) + $arguments = $this->parseArguments($string, $i); + + $tokens[] = new sfValidatorFDTokenOperator(strtolower($match[1]), $arguments); + } + else if (preg_match('/^(?:([a-z0-9_\-]+)\:)?([a-z0-9_\-]+)/i', substr($string, $i), $match)) + { + // single validator (optionally filtered) + $i += strlen($match[0]); + + $class = 'sfValidator'.$match[2]; + $arguments = $this->parseArguments($string, $i); + $token = new sfValidatorFDToken($class, array($arguments[0], isset($arguments[1]) ? $arguments[1] : array())); + if ($match[1]) + { + $token = new sfValidatorFDTokenFilter($match[1], $token); + } + + $tokens[] = $token; + } + else if ('(' == $string[$i]) + { + $tokens[] = new sfValidatorFDTokenLeftBracket(); + ++$i; + } + else if (')' == $string[$i]) + { + $tokens[] = new sfValidatorFDTokenRightBracket(); + ++$i; + } + else if (in_array($string[$i], array(' ', "\t", "\r", "\n"))) + { + ++$i; + } + else + { + throw new DomainException(sprintf('Unable to parse string (%s).', $string)); + } + } + + return $this->convertInfixToRpn($tokens); + } + + /** + * Parses validator arguments. + * + * @param string $string The string to parse + * @param integer $i The indice to start the parsing + * + * @return array An array of parameters + */ + protected function parseArguments($string, &$i) + { + $len = strlen($string); + + if ($i + 1 > $len || '(' != $string[$i]) + { + return array(array(), array()); + } + + ++$i; + + $args = ''; + $opened = 0; + while ($i < $len) + { + if ('(' == $string[$i]) + { + ++$opened; + } + else if (')' == $string[$i]) + { + if (!$opened) + { + break; + } + + --$opened; + } + + $args .= $string[$i++]; + } + + ++$i; + + return sfYamlInline::load('['.(!$args ? '{}' : $args).']'); + } + + /** + * Converts a token array from an infix notation to a RPN. + * + * @param array $tokens An array of tokens in infix notation + * + * @return array An array of token in RPN + */ + protected function convertInfixToRpn($tokens) + { + $outputStack = array(); + $operatorStack = array(); + $precedences = array('and' => 2, 'or' => 1, '(' => 0); + + // based on the shunting yard algorithm + foreach ($tokens as $token) + { + switch (get_class($token)) + { + case 'sfValidatorFDToken': + $outputStack[] = $token; + break; + case 'sfValidatorFDTokenLeftBracket': + $operatorStack[] = $token; + break; + case 'sfValidatorFDTokenRightBracket': + while (!$operatorStack[count($operatorStack) - 1] instanceof sfValidatorFDTokenLeftBracket) + { + $outputStack[] = array_pop($operatorStack); + } + array_pop($operatorStack); + break; + case 'sfValidatorFDTokenOperator': + while (count($operatorStack) && $precedences[$token->__toString()] <= $precedences[$operatorStack[count($operatorStack) - 1]->__toString()]) + { + $outputStack[] = array_pop($operatorStack); + } + $operatorStack[] = $token; + break; + default: + $outputStack[] = $token; + } + } + + while (count($operatorStack)) + { + $token = array_pop($operatorStack); + if ($token instanceof sfValidatorFDTokenLeftBracket || $token instanceof sfValidatorFDTokenRightBracket) + { + throw new DomainException(sprintf('Uneven parenthesis in string (%s).', $this->string)); + } + + $outputStack[] = $token; + } + + return $outputStack; + } + + /** + * Reduces tokens to a single token and convert it with the given method. + * + * @param array $tokens An array of tokens + * @param string $method The method name to execute on each token + * + * @return mixed A single validator representation + */ + protected function reduceTokens($tokens, $method) + { + if (1 == count($tokens)) + { + return $tokens[0]->$method(); + } + + // reduce to a single validator + while (count($tokens) > 1) + { + $i = 0; + while (isset($tokens[$i]) && !$tokens[$i] instanceof sfValidatorFDTokenOperator) + { + $i++; + } + + $tokens[$i] = $tokens[$i]->$method($tokens[$i - 2], $tokens[$i - 1]); + unset($tokens[$i - 1], $tokens[$i - 2]); + + $tokens = array_values($tokens); + } + + return $tokens[0]; + } +} + +class sfValidatorFDToken +{ + protected + $class, + $arguments; + + public function __construct($class, $arguments = array()) + { + $this->class = $class; + $this->arguments = $arguments; + } + + public function asPhp() + { + return sprintf('new %s(%s)', $this->class, implode(', ', array_map(create_function('$a', 'return var_export($a, true);'), $this->arguments))); + } + + public function getValidator() + { + $reflection = new ReflectionClass($this->class); + + return $reflection->newInstanceArgs($this->arguments); + } +} + +class sfValidatorFDTokenFilter +{ + protected + $field, + $token; + + public function __construct($field, sfValidatorFDToken $token) + { + $this->field = $field; + $this->token = $token; + } + + public function asPhp() + { + return sprintf('new sfValidatorSchemaFilter(\'%s\', %s)', $this->field, $this->token->asPhp()); + } + + public function getValidator() + { + return new sfValidatorSchemaFilter($this->field, $this->token->getValidator()); + } +} + +class sfValidatorFDTokenOperator +{ + protected + $class, + $operator, + $token; + + public function __construct($operator, $arguments = array()) + { + $this->operator = $operator; + $this->arguments = $arguments; + $this->class = 'or' == $operator ? 'sfValidatorOr' : 'sfValidatorAnd'; + } + + public function __toString() + { + return $this->operator; + } + + public function asPhp($tokenLeft, $tokenRight) + { + return sprintf('new %s(array(%s, %s), %s)', + $this->class, + is_object($tokenLeft) && in_array(get_class($tokenLeft), array('sfValidatorFDToken', 'sfValidatorFDTokenFilter')) ? $tokenLeft->asPhp() : $tokenLeft, + is_object($tokenRight) && in_array(get_class($tokenRight), array('sfValidatorFDToken', 'sfValidatorFDTokenFilter')) ? $tokenRight->asPhp() : $tokenRight, + implode(', ', array_map(create_function('$a', 'return var_export($a, true);'), $this->arguments)) + ); + } + + public function getValidator($tokenLeft, $tokenRight) + { + $reflection = new ReflectionClass($this->class); + + $validators = array( + in_array(get_class($tokenLeft), array('sfValidatorFDToken', 'sfValidatorFDTokenFilter')) ? $tokenLeft->getValidator() : $tokenLeft, + in_array(get_class($tokenRight), array('sfValidatorFDToken', 'sfValidatorFDTokenFilter')) ? $tokenRight->getValidator() : $tokenRight, + ); + + return $reflection->newInstanceArgs(array_merge(array($validators), $this->arguments)); + } +} + +class sfValidatorFDTokenLeftBracket +{ + public function __toString() + { + return '('; + } +} + +class sfValidatorFDTokenRightBracket +{ + public function __toString() + { + return ')'; + } +} diff --git a/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorInteger.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorInteger.class.php.svn-base new file mode 100644 index 0000000..ab96a90 --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorInteger.class.php.svn-base @@ -0,0 +1,74 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorInteger validates an integer. It also converts the input value to an integer. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfValidatorInteger extends sfValidatorBase +{ + /** + * Configures the current validator. + * + * Available options: + * + * * max: The maximum value allowed + * * min: The minimum value allowed + * + * Available error codes: + * + * * max + * * min + * + * @param array $options An array of options + * @param array $messages An array of error messages + * + * @see sfValidatorBase + */ + protected function configure($options = array(), $messages = array()) + { + $this->addMessage('max', '"%value%" must be at most %max%.'); + $this->addMessage('min', '"%value%" must be at least %min%.'); + + $this->addOption('min'); + $this->addOption('max'); + + $this->setMessage('invalid', '"%value%" is not an integer.'); + } + + /** + * @see sfValidatorBase + */ + protected function doClean($value) + { + $clean = intval($value); + + if (strval($clean) != $value) + { + throw new sfValidatorError($this, 'invalid', array('value' => $value)); + } + + if ($this->hasOption('max') && $clean > $this->getOption('max')) + { + throw new sfValidatorError($this, 'max', array('value' => $value, 'max' => $this->getOption('max'))); + } + + if ($this->hasOption('min') && $clean < $this->getOption('min')) + { + throw new sfValidatorError($this, 'min', array('value' => $value, 'min' => $this->getOption('min'))); + } + + return $clean; + } +} diff --git a/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorNumber.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorNumber.class.php.svn-base new file mode 100644 index 0000000..86101aa --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorNumber.class.php.svn-base @@ -0,0 +1,74 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorNumber validates a number (integer or float). It also converts the input value to a float. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfValidatorNumber extends sfValidatorBase +{ + /** + * Configures the current validator. + * + * Available options: + * + * * max: The maximum value allowed + * * min: The minimum value allowed + * + * Available error codes: + * + * * max + * * min + * + * @param array $options An array of options + * @param array $messages An array of error messages + * + * @see sfValidatorBase + */ + protected function configure($options = array(), $messages = array()) + { + $this->addMessage('max', '"%value%" must be at most %max%.'); + $this->addMessage('min', '"%value%" must be at least %min%.'); + + $this->addOption('min'); + $this->addOption('max'); + + $this->setMessage('invalid', '"%value%" is not a number.'); + } + + /** + * @see sfValidatorBase + */ + protected function doClean($value) + { + if (!is_numeric($value)) + { + throw new sfValidatorError($this, 'invalid', array('value' => $value)); + } + + $clean = floatval($value); + + if ($this->hasOption('max') && $clean > $this->getOption('max')) + { + throw new sfValidatorError($this, 'max', array('value' => $value, 'max' => $this->getOption('max'))); + } + + if ($this->hasOption('min') && $clean < $this->getOption('min')) + { + throw new sfValidatorError($this, 'min', array('value' => $value, 'min' => $this->getOption('min'))); + } + + return $clean; + } +} diff --git a/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorOr.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorOr.class.php.svn-base new file mode 100644 index 0000000..a013a72 --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorOr.class.php.svn-base @@ -0,0 +1,146 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorOr validates an input value if at least one validator passes. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfValidatorOr extends sfValidatorBase +{ + protected + $validators = array(); + + /** + * Constructor. + * + * The first argument can be: + * + * * null + * * a sfValidatorBase instance + * * an array of sfValidatorBase instances + * + * @param mixed $validators Initial validators + * @param array $options An array of options + * @param array $messages An array of error messages + * + * @see sfValidatorBase + */ + public function __construct($validators = null, $options = array(), $messages = array()) + { + if ($validators instanceof sfValidatorBase) + { + $this->addValidator($validators); + } + else if (is_array($validators)) + { + foreach ($validators as $validator) + { + $this->addValidator($validator); + } + } + else if (null !== $validators) + { + throw new InvalidArgumentException('sfValidatorOr constructor takes a sfValidatorBase object, or a sfValidatorBase array.'); + } + + parent::__construct($options, $messages); + } + + /** + * @see sfValidatorBase + */ + protected function configure($options = array(), $messages = array()) + { + $this->setMessage('invalid', null); + } + + /** + * Adds a validator. + * + * @param sfValidatorBase $validator An sfValidatorBase instance + */ + public function addValidator(sfValidatorBase $validator) + { + $this->validators[] = $validator; + } + + /** + * Returns an array of the validators. + * + * @return array An array of sfValidatorBase instances + */ + public function getValidators() + { + return $this->validators; + } + + /** + * @see sfValidatorBase + */ + protected function doClean($value) + { + $errors = array(); + foreach ($this->validators as $validator) + { + try + { + return $validator->clean($value); + } + catch (sfValidatorError $e) + { + $errors[] = $e; + } + } + + if ($this->getMessage('invalid')) + { + throw new sfValidatorError($this, 'invalid', array('value' => $value)); + } + + throw new sfValidatorErrorSchema($this, $errors); + } + + /** + * @see sfValidatorBase + */ + public function asString($indent = 0) + { + $validators = ''; + for ($i = 0, $max = count($this->validators); $i < $max; $i++) + { + $validators .= "\n".$this->validators[$i]->asString($indent + 2)."\n"; + + if ($i < $max - 1) + { + $validators .= str_repeat(' ', $indent + 2).'or'; + } + + if ($i == $max - 2) + { + $options = $this->getOptionsWithoutDefaults(); + $messages = $this->getMessagesWithoutDefaults(); + + if ($options || $messages) + { + $validators .= sprintf('(%s%s)', + $options ? sfYamlInline::dump($options) : ($messages ? '{}' : ''), + $messages ? ', '.sfYamlInline::dump($messages) : '' + ); + } + } + } + + return sprintf("%s(%s%s)", str_repeat(' ', $indent), $validators, str_repeat(' ', $indent)); + } +} diff --git a/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorPass.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorPass.class.php.svn-base new file mode 100644 index 0000000..e3b1a14 --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorPass.class.php.svn-base @@ -0,0 +1,36 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorPass is an identity validator. It simply returns the value unmodified. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfValidatorPass extends sfValidatorBase +{ + /** + * @see sfValidatorBase + */ + public function clean($value) + { + return $this->doClean($value); + } + + /** + * @see sfValidatorBase + */ + protected function doClean($value) + { + return $value; + } +} diff --git a/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorRegex.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorRegex.class.php.svn-base new file mode 100644 index 0000000..f8308ba --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorRegex.class.php.svn-base @@ -0,0 +1,74 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorRegex validates a value with a regular expression. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfValidatorRegex extends sfValidatorString +{ + /** + * Configures the current validator. + * + * Available options: + * + * * pattern: A regex pattern compatible with PCRE or {@link sfCallable} that returns one (required) + * * must_match: Whether the regex must match or not (true by default) + * + * @param array $options An array of options + * @param array $messages An array of error messages + * + * @see sfValidatorString + */ + protected function configure($options = array(), $messages = array()) + { + parent::configure($options, $messages); + + $this->addRequiredOption('pattern'); + $this->addOption('must_match', true); + } + + /** + * @see sfValidatorString + */ + protected function doClean($value) + { + $clean = parent::doClean($value); + + $pattern = $this->getPattern(); + + if ( + ($this->getOption('must_match') && !preg_match($pattern, $clean)) + || + (!$this->getOption('must_match') && preg_match($pattern, $clean)) + ) + { + throw new sfValidatorError($this, 'invalid', array('value' => $value)); + } + + return $clean; + } + + /** + * Returns the current validator's regular expression. + * + * @return string + */ + public function getPattern() + { + $pattern = $this->getOption('pattern'); + + return $pattern instanceof sfCallable ? $pattern->call() : $pattern; + } +} diff --git a/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorSchema.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorSchema.class.php.svn-base new file mode 100644 index 0000000..714ba42 --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorSchema.class.php.svn-base @@ -0,0 +1,399 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorSchema represents an array of fields. + * + * A field is a named validator. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfValidatorSchema extends sfValidatorBase implements ArrayAccess +{ + protected + $fields = array(), + $preValidator = null, + $postValidator = null; + + /** + * Constructor. + * + * The first argument can be: + * + * * null + * * an array of named sfValidatorBase instances + * + * @param mixed $fields Initial fields + * @param array $options An array of options + * @param array $messages An array of error messages + * + * @see sfValidatorBase + */ + public function __construct($fields = null, $options = array(), $messages = array()) + { + if (is_array($fields)) + { + foreach ($fields as $name => $validator) + { + $this[$name] = $validator; + } + } + else if (null !== $fields) + { + throw new InvalidArgumentException('sfValidatorSchema constructor takes an array of sfValidatorBase objects.'); + } + + parent::__construct($options, $messages); + } + + /** + * Configures the validator. + * + * Available options: + * + * * allow_extra_fields: if false, the validator adds an error if extra fields are given in the input array of values (default to false) + * * filter_extra_fields: if true, the validator filters extra fields from the returned array of cleaned values (default to true) + * + * Available error codes: + * + * * extra_fields + * + * @param array $options An array of options + * @param array $messages An array of error messages + * + * @see sfValidatorBase + */ + protected function configure($options = array(), $messages = array()) + { + $this->addOption('allow_extra_fields', false); + $this->addOption('filter_extra_fields', true); + + $this->addMessage('extra_fields', 'Unexpected extra form field named "%field%".'); + $this->addMessage('post_max_size', 'The form submission cannot be processed. It probably means that you have uploaded a file that is too big.'); + } + + /** + * @see sfValidatorBase + */ + public function clean($values) + { + return $this->doClean($values); + } + + /** + * @see sfValidatorBase + */ + protected function doClean($values) + { + if (null === $values) + { + $values = array(); + } + + if (!is_array($values)) + { + throw new InvalidArgumentException('You must pass an array parameter to the clean() method'); + } + + $clean = array(); + $unused = array_keys($this->fields); + $errorSchema = new sfValidatorErrorSchema($this); + + // check that post_max_size has not been reached + if (isset($_SERVER['CONTENT_LENGTH']) && (int) $_SERVER['CONTENT_LENGTH'] > $this->getBytes(ini_get('post_max_size'))) + { + $errorSchema->addError(new sfValidatorError($this, 'post_max_size')); + + throw $errorSchema; + } + + // pre validator + try + { + $this->preClean($values); + } + catch (sfValidatorErrorSchema $e) + { + $errorSchema->addErrors($e); + } + catch (sfValidatorError $e) + { + $errorSchema->addError($e); + } + + // validate given values + foreach ($values as $name => $value) + { + // field exists in our schema? + if (!array_key_exists($name, $this->fields)) + { + if (!$this->options['allow_extra_fields']) + { + $errorSchema->addError(new sfValidatorError($this, 'extra_fields', array('field' => $name))); + } + else if (!$this->options['filter_extra_fields']) + { + $clean[$name] = $value; + } + + continue; + } + + unset($unused[array_search($name, $unused, true)]); + + // validate value + try + { + $clean[$name] = $this->fields[$name]->clean($value); + } + catch (sfValidatorError $e) + { + $clean[$name] = null; + + $errorSchema->addError($e, (string) $name); + } + } + + // are non given values required? + foreach ($unused as $name) + { + // validate value + try + { + $clean[$name] = $this->fields[$name]->clean(null); + } + catch (sfValidatorError $e) + { + $clean[$name] = null; + + $errorSchema->addError($e, (string) $name); + } + } + + // post validator + try + { + $clean = $this->postClean($clean); + } + catch (sfValidatorErrorSchema $e) + { + $errorSchema->addErrors($e); + } + catch (sfValidatorError $e) + { + $errorSchema->addError($e); + } + + if (count($errorSchema)) + { + throw $errorSchema; + } + + return $clean; + } + + /** + * Cleans the input values. + * + * This method is the first validator executed by doClean(). + * + * It executes the validator returned by getPreValidator() + * on the global array of values. + * + * @param array $values The input values + * + * @throws sfValidatorError + */ + public function preClean($values) + { + if (null === $validator = $this->getPreValidator()) + { + return; + } + + $validator->clean($values); + } + + /** + * Cleans the input values. + * + * This method is the last validator executed by doClean(). + * + * It executes the validator returned by getPostValidator() + * on the global array of cleaned values. + * + * @param array $values The input values + * + * @throws sfValidatorError + */ + public function postClean($values) + { + if (null === $validator = $this->getPostValidator()) + { + return $values; + } + + return $validator->clean($values); + } + + /** + * Sets the pre validator. + * + * @param sfValidatorBase $validator An sfValidatorBase instance + * + * @return sfValidatorBase The current validator instance + */ + public function setPreValidator(sfValidatorBase $validator) + { + $this->preValidator = clone $validator; + + return $this; + } + + /** + * Returns the pre validator. + * + * @return sfValidatorBase A sfValidatorBase instance + */ + public function getPreValidator() + { + return $this->preValidator; + } + + /** + * Sets the post validator. + * + * @param sfValidatorBase $validator An sfValidatorBase instance + * + * @return sfValidatorBase The current validator instance + */ + public function setPostValidator(sfValidatorBase $validator) + { + $this->postValidator = clone $validator; + + return $this; + } + + /** + * Returns the post validator. + * + * @return sfValidatorBase An sfValidatorBase instance + */ + public function getPostValidator() + { + return $this->postValidator; + } + + /** + * Returns true if the schema has a field with the given name (implements the ArrayAccess interface). + * + * @param string $name The field name + * + * @return bool true if the schema has a field with the given name, false otherwise + */ + public function offsetExists($name) + { + return isset($this->fields[$name]); + } + + /** + * Gets the field associated with the given name (implements the ArrayAccess interface). + * + * @param string $name The field name + * + * @return sfValidatorBase The sfValidatorBase instance associated with the given name, null if it does not exist + */ + public function offsetGet($name) + { + return isset($this->fields[$name]) ? $this->fields[$name] : null; + } + + /** + * Sets a field (implements the ArrayAccess interface). + * + * @param string $name The field name + * @param sfValidatorBase $validator An sfValidatorBase instance + */ + public function offsetSet($name, $validator) + { + if (!$validator instanceof sfValidatorBase) + { + throw new InvalidArgumentException('A field must be an instance of sfValidatorBase.'); + } + + $this->fields[$name] = clone $validator; + } + + /** + * Removes a field by name (implements the ArrayAccess interface). + * + * @param string $name + */ + public function offsetUnset($name) + { + unset($this->fields[$name]); + } + + /** + * Returns an array of fields. + * + * @return sfValidatorBase An array of sfValidatorBase instances + */ + public function getFields() + { + return $this->fields; + } + + /** + * @see sfValidatorBase + */ + public function asString($indent = 0) + { + throw new Exception('Unable to convert a sfValidatorSchema to string.'); + } + + public function __clone() + { + foreach ($this->fields as $name => $field) + { + $this->fields[$name] = clone $field; + } + + if (null !== $this->preValidator) + { + $this->preValidator = clone $this->preValidator; + } + + if (null !== $this->postValidator) + { + $this->postValidator = clone $this->postValidator; + } + } + + protected function getBytes($value) + { + $value = trim($value); + switch (strtolower($value[strlen($value) - 1])) + { + // The 'G' modifier is available since PHP 5.1.0 + case 'g': + $value *= 1024; + case 'm': + $value *= 1024; + case 'k': + $value *= 1024; + } + + return $value; + } +} diff --git a/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorSchemaCompare.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorSchemaCompare.class.php.svn-base new file mode 100644 index 0000000..38a199a --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorSchemaCompare.class.php.svn-base @@ -0,0 +1,159 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorSchemaCompare compares several values from an array. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfValidatorSchemaCompare extends sfValidatorSchema +{ + const EQUAL = '=='; + const NOT_EQUAL = '!='; + const IDENTICAL = '==='; + const NOT_IDENTICAL = '!=='; + const LESS_THAN = '<'; + const LESS_THAN_EQUAL = '<='; + const GREATER_THAN = '>'; + const GREATER_THAN_EQUAL = '>='; + + /** + * Constructor. + * + * Available options: + * + * * left_field: The left field name + * * operator: The comparison operator + * * self::EQUAL + * * self::NOT_EQUAL + * * self::IDENTICAL + * * self::NOT_IDENTICAL + * * self::LESS_THAN + * * self::LESS_THAN_EQUAL + * * self::GREATER_THAN + * * self::GREATER_THAN_EQUAL + * * right_field: The right field name + * * throw_global_error: Whether to throw a global error (false by default) or an error tied to the left field + * + * @param string $leftField The left field name + * @param string $operator The operator to apply + * @param string $rightField The right field name + * @param array $options An array of options + * @param array $messages An array of error messages + * + * @see sfValidatorBase + */ + public function __construct($leftField, $operator, $rightField, $options = array(), $messages = array()) + { + $this->addOption('left_field', $leftField); + $this->addOption('operator', $operator); + $this->addOption('right_field', $rightField); + + $this->addOption('throw_global_error', false); + + parent::__construct(null, $options, $messages); + } + + /** + * @see sfValidatorBase + */ + protected function doClean($values) + { + if (null === $values) + { + $values = array(); + } + + if (!is_array($values)) + { + throw new InvalidArgumentException('You must pass an array parameter to the clean() method'); + } + + $leftValue = isset($values[$this->getOption('left_field')]) ? $values[$this->getOption('left_field')] : null; + $rightValue = isset($values[$this->getOption('right_field')]) ? $values[$this->getOption('right_field')] : null; + + switch ($this->getOption('operator')) + { + case self::GREATER_THAN: + $valid = $leftValue > $rightValue; + break; + case self::GREATER_THAN_EQUAL: + $valid = $leftValue >= $rightValue; + break; + case self::LESS_THAN: + $valid = $leftValue < $rightValue; + break; + case self::LESS_THAN_EQUAL: + $valid = $leftValue <= $rightValue; + break; + case self::NOT_EQUAL: + $valid = $leftValue != $rightValue; + break; + case self::EQUAL: + $valid = $leftValue == $rightValue; + break; + case self::NOT_IDENTICAL: + $valid = $leftValue !== $rightValue; + break; + case self::IDENTICAL: + $valid = $leftValue === $rightValue; + break; + default: + throw new InvalidArgumentException(sprintf('The operator "%s" does not exist.', $this->getOption('operator'))); + } + + if (!$valid) + { + $error = new sfValidatorError($this, 'invalid', array( + 'left_field' => $leftValue, + 'right_field' => $rightValue, + 'operator' => $this->getOption('operator'), + )); + if ($this->getOption('throw_global_error')) + { + throw $error; + } + + throw new sfValidatorErrorSchema($this, array($this->getOption('left_field') => $error)); + } + + return $values; + } + + /** + * @see sfValidatorBase + */ + public function asString($indent = 0) + { + $options = $this->getOptionsWithoutDefaults(); + $messages = $this->getMessagesWithoutDefaults(); + unset($options['left_field'], $options['operator'], $options['right_field']); + + $arguments = ''; + if ($options || $messages) + { + $arguments = sprintf('(%s%s)', + $options ? sfYamlInline::dump($options) : ($messages ? '{}' : ''), + $messages ? ', '.sfYamlInline::dump($messages) : '' + ); + } + + return sprintf('%s%s %s%s %s', + str_repeat(' ', $indent), + $this->getOption('left_field'), + $this->getOption('operator'), + $arguments, + $this->getOption('right_field') + ); + } +} diff --git a/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorSchemaFilter.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorSchemaFilter.class.php.svn-base new file mode 100644 index 0000000..f7db20b --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorSchemaFilter.class.php.svn-base @@ -0,0 +1,75 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorSchemaFilter executes non schema validator on a schema input value. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfValidatorSchemaFilter extends sfValidatorSchema +{ + /** + * Constructor. + * + * @param string $field The field name + * @param sfValidatorBase $validator The validator + * @param array $options An array of options + * @param array $messages An array of error messages + * + * @see sfValidatorBase + */ + public function __construct($field, sfValidatorBase $validator, $options = array(), $messages = array()) + { + $this->addOption('field', $field); + $this->addOption('validator', $validator); + + parent::__construct(null, $options, $messages); + } + + /** + * @see sfValidatorBase + */ + protected function doClean($values) + { + if (null === $values) + { + $values = array(); + } + + if (!is_array($values)) + { + throw new InvalidArgumentException('You must pass an array parameter to the clean() method'); + } + + $value = isset($values[$this->getOption('field')]) ? $values[$this->getOption('field')] : null; + + try + { + $values[$this->getOption('field')] = $this->getOption('validator')->clean($value); + } + catch (sfValidatorError $error) + { + throw new sfValidatorErrorSchema($this, array($this->getOption('field') => $error)); + } + + return $values; + } + + /** + * @see sfValidatorBase + */ + public function asString($indent = 0) + { + return sprintf('%s%s:%s', str_repeat(' ', $indent), $this->getOption('field'), $this->getOption('validator')->asString(0)); + } +} diff --git a/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorSchemaForEach.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorSchemaForEach.class.php.svn-base new file mode 100644 index 0000000..0394c53 --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorSchemaForEach.class.php.svn-base @@ -0,0 +1,49 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorSchemaForEach wraps a validator multiple times in a single validator. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfValidatorSchemaForEach extends sfValidatorSchema +{ + /** + * Constructor. + * + * @param sfValidatorBase $validator Initial validator + * @param integer $count The number of times to replicate the validator + * @param array $options An array of options + * @param array $messages An array of error messages + * + * @see sfValidatorBase + */ + public function __construct(sfValidatorBase $validator, $count, $options = array(), $messages = array()) + { + $fields = array(); + for ($i = 0; $i < $count; $i++) + { + $fields[$i] = clone $validator; + } + + parent::__construct($fields, $options, $messages); + } + + /** + * @see sfValidatorBase + */ + public function asString($indent = 0) + { + throw new Exception('Unable to convert a sfValidatorSchemaForEach to string.'); + } +} diff --git a/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorString.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorString.class.php.svn-base new file mode 100644 index 0000000..faefca7 --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorString.class.php.svn-base @@ -0,0 +1,71 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorString validates a string. It also converts the input value to a string. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfValidatorString extends sfValidatorBase +{ + /** + * Configures the current validator. + * + * Available options: + * + * * max_length: The maximum length of the string + * * min_length: The minimum length of the string + * + * Available error codes: + * + * * max_length + * * min_length + * + * @param array $options An array of options + * @param array $messages An array of error messages + * + * @see sfValidatorBase + */ + protected function configure($options = array(), $messages = array()) + { + $this->addMessage('max_length', '"%value%" is too long (%max_length% characters max).'); + $this->addMessage('min_length', '"%value%" is too short (%min_length% characters min).'); + + $this->addOption('max_length'); + $this->addOption('min_length'); + + $this->setOption('empty_value', ''); + } + + /** + * @see sfValidatorBase + */ + protected function doClean($value) + { + $clean = (string) $value; + + $length = function_exists('mb_strlen') ? mb_strlen($clean, $this->getCharset()) : strlen($clean); + + if ($this->hasOption('max_length') && $length > $this->getOption('max_length')) + { + throw new sfValidatorError($this, 'max_length', array('value' => $value, 'max_length' => $this->getOption('max_length'))); + } + + if ($this->hasOption('min_length') && $length < $this->getOption('min_length')) + { + throw new sfValidatorError($this, 'min_length', array('value' => $value, 'min_length' => $this->getOption('min_length'))); + } + + return $clean; + } +} diff --git a/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorTime.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorTime.class.php.svn-base new file mode 100644 index 0000000..7544f4c --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorTime.class.php.svn-base @@ -0,0 +1,151 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorTime validates a time. It also converts the input value to a valid time. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @author Fabian Lange + * @version SVN: $Id$ + */ +class sfValidatorTime extends sfValidatorBase +{ + /** + * Configures the current validator. + * + * Available options: + * + * * time_format: A regular expression that dates must match + * * time_output: The format to use when returning a date with time (default to H:i:s) + * * time_format_error: The date format to use when displaying an error for a bad_format error + * + * Available error codes: + * + * * bad_format + * + * @param array $options An array of options + * @param array $messages An array of error messages + * + * @see sfValidatorBase + */ + protected function configure($options = array(), $messages = array()) + { + $this->addMessage('bad_format', '"%value%" does not match the time format (%time_format%).'); + + $this->addOption('time_format', null); + $this->addOption('time_output', 'H:i:s'); + $this->addOption('time_format_error'); + } + + /** + * @see sfValidatorBase + */ + protected function doClean($value) + { + if (is_array($value)) + { + $clean = $this->convertTimeArrayToTimestamp($value); + } + else if ($regex = $this->getOption('time_format')) + { + if (!preg_match($regex, $value, $match)) + { + throw new sfValidatorError($this, 'bad_format', array('value' => $value, 'time_format' => $this->getOption('time_format_error') ? $this->getOption('time_format_error') : $this->getOption('time_format'))); + } + + $clean = $this->convertTimeArrayToTimestamp($match); + } + else if (!ctype_digit($value)) + { + $clean = strtotime($value); + if (false === $clean) + { + throw new sfValidatorError($this, 'invalid', array('value' => $value)); + } + } + else + { + $clean = (integer) $value; + } + + return $clean === $this->getEmptyValue() ? $clean : date($this->getOption('time_output'), $clean); + } + + /** + * Converts an array representing a time to a timestamp. + * + * The array can contains the following keys: hour, minute, second + * + * @param array $value An array of date elements + * + * @return int A timestamp + */ + protected function convertTimeArrayToTimestamp($value) + { + // all elements must be empty or a number + foreach (array('hour', 'minute', 'second') as $key) + { + if (isset($value[$key]) && !preg_match('#^\d+$#', $value[$key]) && !empty($value[$key])) + { + throw new sfValidatorError($this, 'invalid', array('value' => $value)); + } + } + + // if second is set, minute and hour must be set + // if minute is set, hour must be set + if ( + $this->isValueSet($value, 'second') && (!$this->isValueSet($value, 'minute') || !$this->isValueSet($value, 'hour')) + || + $this->isValueSet($value, 'minute') && !$this->isValueSet($value, 'hour') + ) + { + throw new sfValidatorError($this, 'invalid', array('value' => $value)); + } + + $clean = mktime( + isset($value['hour']) ? intval($value['hour']) : 0, + isset($value['minute']) ? intval($value['minute']) : 0, + isset($value['second']) ? intval($value['second']) : 0 + ); + + if (false === $clean) + { + throw new sfValidatorError($this, 'invalid', array('value' => var_export($value, true))); + } + + return $clean; + } + + protected function isValueSet($values, $key) + { + return isset($values[$key]) && !in_array($values[$key], array(null, ''), true); + } + + /** + * @see sfValidatorBase + */ + protected function isEmpty($value) + { + if (is_array($value)) + { + // array is not empty when a value is found + foreach($value as $key => $val) + { + // int and string '0' are 'empty' values that are explicitly accepted + if ($val === 0 || $val === '0' || !empty($val)) return false; + } + return true; + } + + return parent::isEmpty($value); + } +} diff --git a/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorUrl.class.php.svn-base b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorUrl.class.php.svn-base new file mode 100644 index 0000000..b39f236 --- /dev/null +++ b/lib/vendor/symfony/lib/validator/.svn/text-base/sfValidatorUrl.class.php.svn-base @@ -0,0 +1,59 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorUrl validates Urls. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfValidatorUrl extends sfValidatorRegex +{ + const REGEX_URL_FORMAT = '~^ + (%s):// # protocol + ( + ([a-z0-9-]+\.)+[a-z]{2,6} # a domain name + | # or + \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} # a IP address + ) + (:[0-9]+)? # a port (optional) + (/?|/\S+) # a /, nothing or a / with something + $~ix'; + + /** + * Available options: + * + * * protocols: An array of acceptable URL protocols (http, https, ftp and ftps by default) + * + * @param array $options An array of options + * @param array $messages An array of error messages + * + * @see sfValidatorRegex + */ + protected function configure($options = array(), $messages = array()) + { + parent::configure($options, $messages); + + $this->addOption('protocols', array('http', 'https', 'ftp', 'ftps')); + $this->setOption('pattern', new sfCallable(array($this, 'generateRegex'))); + } + + /** + * Generates the current validator's regular expression. + * + * @return string + */ + public function generateRegex() + { + return sprintf(self::REGEX_URL_FORMAT, implode('|', $this->getOption('protocols'))); + } +} diff --git a/lib/vendor/symfony/lib/validator/i18n/.svn/all-wcprops b/lib/vendor/symfony/lib/validator/i18n/.svn/all-wcprops new file mode 100644 index 0000000..491c2fc --- /dev/null +++ b/lib/vendor/symfony/lib/validator/i18n/.svn/all-wcprops @@ -0,0 +1,23 @@ +K 25 +svn:wc:ra_dav:version-url +V 47 +/!svn/ver/23940/branches/1.4/lib/validator/i18n +END +sfValidatorI18nChoiceCountry.class.php +K 25 +svn:wc:ra_dav:version-url +V 86 +/!svn/ver/23940/branches/1.4/lib/validator/i18n/sfValidatorI18nChoiceCountry.class.php +END +sfValidatorI18nChoiceLanguage.class.php +K 25 +svn:wc:ra_dav:version-url +V 87 +/!svn/ver/23940/branches/1.4/lib/validator/i18n/sfValidatorI18nChoiceLanguage.class.php +END +sfValidatorI18nChoiceTimezone.class.php +K 25 +svn:wc:ra_dav:version-url +V 87 +/!svn/ver/23881/branches/1.4/lib/validator/i18n/sfValidatorI18nChoiceTimezone.class.php +END diff --git a/lib/vendor/symfony/lib/validator/i18n/.svn/entries b/lib/vendor/symfony/lib/validator/i18n/.svn/entries new file mode 100644 index 0000000..f76c6aa --- /dev/null +++ b/lib/vendor/symfony/lib/validator/i18n/.svn/entries @@ -0,0 +1,130 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/validator/i18n +http://svn.symfony-project.com + + + +2009-11-14T17:58:19.127435Z +23940 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +sfValidatorI18nChoiceCountry.class.php +file + + + + +2012-05-10T18:41:02.485547Z +7a1b8360e5bc092f69da3fc9ade70687 +2009-11-14T17:58:19.127435Z +23940 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +1583 + +sfValidatorI18nChoiceLanguage.class.php +file + + + + +2012-05-10T18:41:02.489549Z +ff513bd15ba5c2844af446b4c90a1d1f +2009-11-14T17:58:19.127435Z +23940 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +1577 + +sfValidatorI18nChoiceTimezone.class.php +file + + + + +2012-05-10T18:41:02.585547Z +9a203294838f5513b0d5326516d49b9a +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +1076 + diff --git a/lib/vendor/symfony/lib/validator/i18n/.svn/prop-base/sfValidatorI18nChoiceCountry.class.php.svn-base b/lib/vendor/symfony/lib/validator/i18n/.svn/prop-base/sfValidatorI18nChoiceCountry.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/validator/i18n/.svn/prop-base/sfValidatorI18nChoiceCountry.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/validator/i18n/.svn/prop-base/sfValidatorI18nChoiceLanguage.class.php.svn-base b/lib/vendor/symfony/lib/validator/i18n/.svn/prop-base/sfValidatorI18nChoiceLanguage.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/validator/i18n/.svn/prop-base/sfValidatorI18nChoiceLanguage.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/validator/i18n/.svn/prop-base/sfValidatorI18nChoiceTimezone.class.php.svn-base b/lib/vendor/symfony/lib/validator/i18n/.svn/prop-base/sfValidatorI18nChoiceTimezone.class.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/lib/validator/i18n/.svn/prop-base/sfValidatorI18nChoiceTimezone.class.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/lib/validator/i18n/.svn/text-base/sfValidatorI18nChoiceCountry.class.php.svn-base b/lib/vendor/symfony/lib/validator/i18n/.svn/text-base/sfValidatorI18nChoiceCountry.class.php.svn-base new file mode 100644 index 0000000..3bf1a3f --- /dev/null +++ b/lib/vendor/symfony/lib/validator/i18n/.svn/text-base/sfValidatorI18nChoiceCountry.class.php.svn-base @@ -0,0 +1,55 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorI18nChoiceCountry validates than the value is a valid country. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfValidatorI18nChoiceCountry extends sfValidatorChoice +{ + /** + * Configures the current validator. + * + * Available options: + * + * * countries: An array of country codes to use (ISO 3166) + * + * @param array $options An array of options + * @param array $messages An array of error messages + * + * @see sfValidatorChoice + */ + protected function configure($options = array(), $messages = array()) + { + parent::configure($options, $messages); + + $this->addOption('countries'); + + // populate choices with all countries + $countries = array_keys(sfCultureInfo::getInstance()->getCountries()); + + // restrict countries to a sub-set + if (isset($options['countries'])) + { + if ($problems = array_diff($options['countries'], $countries)) + { + throw new InvalidArgumentException(sprintf('The following countries do not exist: %s.', implode(', ', $problems))); + } + + $countries = $options['countries']; + } + + $this->setOption('choices', $countries); + } +} diff --git a/lib/vendor/symfony/lib/validator/i18n/.svn/text-base/sfValidatorI18nChoiceLanguage.class.php.svn-base b/lib/vendor/symfony/lib/validator/i18n/.svn/text-base/sfValidatorI18nChoiceLanguage.class.php.svn-base new file mode 100644 index 0000000..f89431e --- /dev/null +++ b/lib/vendor/symfony/lib/validator/i18n/.svn/text-base/sfValidatorI18nChoiceLanguage.class.php.svn-base @@ -0,0 +1,55 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorI18nChoiceLanguage validates than the value is a valid language. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfValidatorI18nChoiceLanguage extends sfValidatorChoice +{ + /** + * Configures the current validator. + * + * Available options: + * + * * languages: An array of language codes to use + * + * @param array $options An array of options + * @param array $messages An array of error messages + * + * @see sfValidatorChoice + */ + protected function configure($options = array(), $messages = array()) + { + parent::configure($options, $messages); + + $this->addOption('languages'); + + // populate choices with all languages + $languages = array_keys(sfCultureInfo::getInstance()->getLanguages()); + + // restrict languages to a sub-set + if (isset($options['languages'])) + { + if ($problems = array_diff($options['languages'], $languages)) + { + throw new InvalidArgumentException(sprintf('The following languages do not exist: %s.', implode(', ', $problems))); + } + + $languages = $options['languages']; + } + + $this->setOption('choices', $languages); + } +} diff --git a/lib/vendor/symfony/lib/validator/i18n/.svn/text-base/sfValidatorI18nChoiceTimezone.class.php.svn-base b/lib/vendor/symfony/lib/validator/i18n/.svn/text-base/sfValidatorI18nChoiceTimezone.class.php.svn-base new file mode 100644 index 0000000..5e1bad4 --- /dev/null +++ b/lib/vendor/symfony/lib/validator/i18n/.svn/text-base/sfValidatorI18nChoiceTimezone.class.php.svn-base @@ -0,0 +1,37 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorI18nChoiceLanguage validates than the value is a valid timezone. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfValidatorI18nChoiceTimezone extends sfValidatorChoice +{ + /** + * Configures the current validator. + * + * Available options: + * + * @param array $options An array of options + * @param array $messages An array of error messages + * + * @see sfValidatorChoice + */ + protected function configure($options = array(), $messages = array()) + { + parent::configure($options, $messages); + + $this->setOption('choices', array_keys(sfCultureInfo::getInstance()->getTimeZones())); + } +} diff --git a/lib/vendor/symfony/lib/validator/i18n/sfValidatorI18nChoiceCountry.class.php b/lib/vendor/symfony/lib/validator/i18n/sfValidatorI18nChoiceCountry.class.php new file mode 100644 index 0000000..84bcc99 --- /dev/null +++ b/lib/vendor/symfony/lib/validator/i18n/sfValidatorI18nChoiceCountry.class.php @@ -0,0 +1,55 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorI18nChoiceCountry validates than the value is a valid country. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id: sfValidatorI18nChoiceCountry.class.php 23940 2009-11-14 17:58:19Z fabien $ + */ +class sfValidatorI18nChoiceCountry extends sfValidatorChoice +{ + /** + * Configures the current validator. + * + * Available options: + * + * * countries: An array of country codes to use (ISO 3166) + * + * @param array $options An array of options + * @param array $messages An array of error messages + * + * @see sfValidatorChoice + */ + protected function configure($options = array(), $messages = array()) + { + parent::configure($options, $messages); + + $this->addOption('countries'); + + // populate choices with all countries + $countries = array_keys(sfCultureInfo::getInstance()->getCountries()); + + // restrict countries to a sub-set + if (isset($options['countries'])) + { + if ($problems = array_diff($options['countries'], $countries)) + { + throw new InvalidArgumentException(sprintf('The following countries do not exist: %s.', implode(', ', $problems))); + } + + $countries = $options['countries']; + } + + $this->setOption('choices', $countries); + } +} diff --git a/lib/vendor/symfony/lib/validator/i18n/sfValidatorI18nChoiceLanguage.class.php b/lib/vendor/symfony/lib/validator/i18n/sfValidatorI18nChoiceLanguage.class.php new file mode 100644 index 0000000..83d03ba --- /dev/null +++ b/lib/vendor/symfony/lib/validator/i18n/sfValidatorI18nChoiceLanguage.class.php @@ -0,0 +1,55 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorI18nChoiceLanguage validates than the value is a valid language. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id: sfValidatorI18nChoiceLanguage.class.php 23940 2009-11-14 17:58:19Z fabien $ + */ +class sfValidatorI18nChoiceLanguage extends sfValidatorChoice +{ + /** + * Configures the current validator. + * + * Available options: + * + * * languages: An array of language codes to use + * + * @param array $options An array of options + * @param array $messages An array of error messages + * + * @see sfValidatorChoice + */ + protected function configure($options = array(), $messages = array()) + { + parent::configure($options, $messages); + + $this->addOption('languages'); + + // populate choices with all languages + $languages = array_keys(sfCultureInfo::getInstance()->getLanguages()); + + // restrict languages to a sub-set + if (isset($options['languages'])) + { + if ($problems = array_diff($options['languages'], $languages)) + { + throw new InvalidArgumentException(sprintf('The following languages do not exist: %s.', implode(', ', $problems))); + } + + $languages = $options['languages']; + } + + $this->setOption('choices', $languages); + } +} diff --git a/lib/vendor/symfony/lib/validator/i18n/sfValidatorI18nChoiceTimezone.class.php b/lib/vendor/symfony/lib/validator/i18n/sfValidatorI18nChoiceTimezone.class.php new file mode 100644 index 0000000..57b8246 --- /dev/null +++ b/lib/vendor/symfony/lib/validator/i18n/sfValidatorI18nChoiceTimezone.class.php @@ -0,0 +1,37 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorI18nChoiceLanguage validates than the value is a valid timezone. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id: sfValidatorI18nChoiceTimezone.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $ + */ +class sfValidatorI18nChoiceTimezone extends sfValidatorChoice +{ + /** + * Configures the current validator. + * + * Available options: + * + * @param array $options An array of options + * @param array $messages An array of error messages + * + * @see sfValidatorChoice + */ + protected function configure($options = array(), $messages = array()) + { + parent::configure($options, $messages); + + $this->setOption('choices', array_keys(sfCultureInfo::getInstance()->getTimeZones())); + } +} diff --git a/lib/vendor/symfony/lib/validator/sfValidatedFile.class.php b/lib/vendor/symfony/lib/validator/sfValidatedFile.class.php new file mode 100644 index 0000000..c7d90b4 --- /dev/null +++ b/lib/vendor/symfony/lib/validator/sfValidatedFile.class.php @@ -0,0 +1,657 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatedFile represents a validated uploaded file. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id: sfValidatedFile.class.php 30915 2010-09-15 17:10:37Z Kris.Wallsmith $ + */ +class sfValidatedFile +{ + protected + $originalName = '', + $tempName = '', + $savedName = null, + $type = '', + $size = 0, + $path = null; + + /** + * Constructor. + * + * @param string $originalName The original file name + * @param string $type The file content type + * @param string $tempName The absolute temporary path to the file + * @param int $size The file size (in bytes) + * @param string $path The path to save the file (optional). + */ + public function __construct($originalName, $type, $tempName, $size, $path = null) + { + $this->originalName = $originalName; + $this->tempName = $tempName; + $this->type = $type; + $this->size = $size; + $this->path = $path; + } + + /** + * Returns the name of the saved file. + */ + public function __toString() + { + return null === $this->savedName ? '' : $this->savedName; + } + + /** + * Saves the uploaded file. + * + * This method can throw exceptions if there is a problem when saving the file. + * + * If you don't pass a file name, it will be generated by the generateFilename method. + * This will only work if you have passed a path when initializing this instance. + * + * @param string $file The file path to save the file + * @param int $fileMode The octal mode to use for the new file + * @param bool $create Indicates that we should make the directory before moving the file + * @param int $dirMode The octal mode to use when creating the directory + * + * @return string The filename without the $this->path prefix + * + * @throws Exception + */ + public function save($file = null, $fileMode = 0666, $create = true, $dirMode = 0777) + { + if (null === $file) + { + $file = $this->generateFilename(); + } + + if ($file[0] != '/' && $file[0] != '\\' && !(strlen($file) > 3 && ctype_alpha($file[0]) && $file[1] == ':' && ($file[2] == '\\' || $file[2] == '/'))) + { + if (null === $this->path) + { + throw new RuntimeException('You must give a "path" when you give a relative file name.'); + } + + $file = $this->path.DIRECTORY_SEPARATOR.$file; + } + + // get our directory path from the destination filename + $directory = dirname($file); + + if (!is_readable($directory)) + { + if ($create && !@mkdir($directory, $dirMode, true)) + { + // failed to create the directory + throw new Exception(sprintf('Failed to create file upload directory "%s".', $directory)); + } + + // chmod the directory since it doesn't seem to work on recursive paths + chmod($directory, $dirMode); + } + + if (!is_dir($directory)) + { + // the directory path exists but it's not a directory + throw new Exception(sprintf('File upload path "%s" exists, but is not a directory.', $directory)); + } + + if (!is_writable($directory)) + { + // the directory isn't writable + throw new Exception(sprintf('File upload path "%s" is not writable.', $directory)); + } + + // copy the temp file to the destination file + copy($this->getTempName(), $file); + + // chmod our file + chmod($file, $fileMode); + + $this->savedName = $file; + + return null === $this->path ? $file : str_replace($this->path.DIRECTORY_SEPARATOR, '', $file); + } + + /** + * Generates a random filename for the current file. + * + * @return string A random name to represent the current file + */ + public function generateFilename() + { + return sha1($this->getOriginalName().rand(11111, 99999)).$this->getExtension($this->getOriginalExtension()); + } + + /** + * Returns the path to use when saving a file with a relative filename. + * + * @return string The path to use when saving a file with a relative filename + */ + public function getPath() + { + return $this->path; + } + + /** + * Returns the file extension, based on the content type of the file. + * + * @param string $default The default extension to return if none was given + * + * @return string The extension (with the dot) + */ + public function getExtension($default = '') + { + return $this->getExtensionFromType($this->type, $default); + } + + /** + * Returns the original uploaded file name extension. + * + * @param string $default The default extension to return if none was given + * + * @return string The extension of the uploaded name (with the dot) + */ + public function getOriginalExtension($default = '') + { + return (false === $pos = strrpos($this->getOriginalName(), '.')) ? $default : substr($this->getOriginalName(), $pos); + } + + /** + * Returns true if the file has already been saved. + * + * @return Boolean true if the file has already been saved, false otherwise + */ + public function isSaved() + { + return null !== $this->savedName; + } + + /** + * Returns the path where the file has been saved + * + * @return string The path where the file has been saved + */ + public function getSavedName() + { + return $this->savedName; + } + + /** + * Returns the original file name. + * + * @return string The file name + */ + public function getOriginalName() + { + return $this->originalName; + } + + /** + * Returns the absolute temporary path to the uploaded file. + * + * @return string The temporary path + */ + public function getTempName() + { + return $this->tempName; + } + + /** + * Returns the file content type. + * + * @return string The content type + */ + public function getType() + { + return $this->type; + } + + /** + * Returns the size of the uploaded file. + * + * @return int The file size + */ + public function getSize() + { + return $this->size; + } + + /** + * Returns the extension associated with the given content type. + * + * @param string $type The content type + * @param string $default The default extension to use + * + * @return string The extension (with the dot) + */ + protected function getExtensionFromType($type, $default = '') + { + static $extensions = array( + 'application/andrew-inset' => 'ez', + 'application/appledouble' => 'base64', + 'application/applefile' => 'base64', + 'application/commonground' => 'dp', + 'application/cprplayer' => 'pqi', + 'application/dsptype' => 'tsp', + 'application/excel' => 'xls', + 'application/font-tdpfr' => 'pfr', + 'application/futuresplash' => 'spl', + 'application/hstu' => 'stk', + 'application/hyperstudio' => 'stk', + 'application/javascript' => 'js', + 'application/mac-binhex40' => 'hqx', + 'application/mac-compactpro' => 'cpt', + 'application/mbed' => 'mbd', + 'application/mirage' => 'mfp', + 'application/msword' => 'doc', + 'application/ocsp-request' => 'orq', + 'application/ocsp-response' => 'ors', + 'application/octet-stream' => 'bin', + 'application/oda' => 'oda', + 'application/ogg' => 'ogg', + 'application/pdf' => 'pdf', + 'application/x-pdf' => 'pdf', + 'application/pgp-encrypted' => '7bit', + 'application/pgp-keys' => '7bit', + 'application/pgp-signature' => 'sig', + 'application/pkcs10' => 'p10', + 'application/pkcs7-mime' => 'p7m', + 'application/pkcs7-signature' => 'p7s', + 'application/pkix-cert' => 'cer', + 'application/pkix-crl' => 'crl', + 'application/pkix-pkipath' => 'pkipath', + 'application/pkixcmp' => 'pki', + 'application/postscript' => 'ps', + 'application/presentations' => 'shw', + 'application/prs.cww' => 'cw', + 'application/prs.nprend' => 'rnd', + 'application/quest' => 'qrt', + 'application/rtf' => 'rtf', + 'application/sgml-open-catalog' => 'soc', + 'application/sieve' => 'siv', + 'application/smil' => 'smi', + 'application/toolbook' => 'tbk', + 'application/vnd.3gpp.pic-bw-large' => 'plb', + 'application/vnd.3gpp.pic-bw-small' => 'psb', + 'application/vnd.3gpp.pic-bw-var' => 'pvb', + 'application/vnd.3gpp.sms' => 'sms', + 'application/vnd.acucorp' => 'atc', + 'application/vnd.adobe.xfdf' => 'xfdf', + 'application/vnd.amiga.amu' => 'ami', + 'application/vnd.blueice.multipass' => 'mpm', + 'application/vnd.cinderella' => 'cdy', + 'application/vnd.cosmocaller' => 'cmc', + 'application/vnd.criticaltools.wbs+xml' => 'wbs', + 'application/vnd.curl' => 'curl', + 'application/vnd.data-vision.rdz' => 'rdz', + 'application/vnd.dreamfactory' => 'dfac', + 'application/vnd.fsc.weblauch' => 'fsc', + 'application/vnd.genomatix.tuxedo' => 'txd', + 'application/vnd.hbci' => 'hbci', + 'application/vnd.hhe.lesson-player' => 'les', + 'application/vnd.hp-hpgl' => 'plt', + 'application/vnd.ibm.electronic-media' => 'emm', + 'application/vnd.ibm.rights-management' => 'irm', + 'application/vnd.ibm.secure-container' => 'sc', + 'application/vnd.ipunplugged.rcprofile' => 'rcprofile', + 'application/vnd.irepository.package+xml' => 'irp', + 'application/vnd.jisp' => 'jisp', + 'application/vnd.kde.karbon' => 'karbon', + 'application/vnd.kde.kchart' => 'chrt', + 'application/vnd.kde.kformula' => 'kfo', + 'application/vnd.kde.kivio' => 'flw', + 'application/vnd.kde.kontour' => 'kon', + 'application/vnd.kde.kpresenter' => 'kpr', + 'application/vnd.kde.kspread' => 'ksp', + 'application/vnd.kde.kword' => 'kwd', + 'application/vnd.kenameapp' => 'htke', + 'application/vnd.kidspiration' => 'kia', + 'application/vnd.kinar' => 'kne', + 'application/vnd.llamagraphics.life-balance.desktop' => 'lbd', + 'application/vnd.llamagraphics.life-balance.exchange+xml' => 'lbe', + 'application/vnd.lotus-1-2-3' => 'wks', + 'application/vnd.mcd' => 'mcd', + 'application/vnd.mfmp' => 'mfm', + 'application/vnd.micrografx.flo' => 'flo', + 'application/vnd.micrografx.igx' => 'igx', + 'application/vnd.mif' => 'mif', + 'application/vnd.mophun.application' => 'mpn', + 'application/vnd.mophun.certificate' => 'mpc', + 'application/vnd.mozilla.xul+xml' => 'xul', + 'application/vnd.ms-artgalry' => 'cil', + 'application/vnd.ms-asf' => 'asf', + 'application/vnd.ms-excel' => 'xls', + 'application/vnd.ms-excel.sheet.macroenabled.12' => 'xlsm', + 'application/vnd.ms-lrm' => 'lrm', + 'application/vnd.ms-powerpoint' => 'ppt', + 'application/vnd.ms-project' => 'mpp', + 'application/vnd.ms-tnef' => 'base64', + 'application/vnd.ms-works' => 'base64', + 'application/vnd.ms-wpl' => 'wpl', + 'application/vnd.mseq' => 'mseq', + 'application/vnd.nervana' => 'ent', + 'application/vnd.nokia.radio-preset' => 'rpst', + 'application/vnd.nokia.radio-presets' => 'rpss', + 'application/vnd.oasis.opendocument.text' => 'odt', + 'application/vnd.oasis.opendocument.text-template' => 'ott', + 'application/vnd.oasis.opendocument.text-web' => 'oth', + 'application/vnd.oasis.opendocument.text-master' => 'odm', + 'application/vnd.oasis.opendocument.graphics' => 'odg', + 'application/vnd.oasis.opendocument.graphics-template' => 'otg', + 'application/vnd.oasis.opendocument.presentation' => 'odp', + 'application/vnd.oasis.opendocument.presentation-template' => 'otp', + 'application/vnd.oasis.opendocument.spreadsheet' => 'ods', + 'application/vnd.oasis.opendocument.spreadsheet-template' => 'ots', + 'application/vnd.oasis.opendocument.chart' => 'odc', + 'application/vnd.oasis.opendocument.formula' => 'odf', + 'application/vnd.oasis.opendocument.database' => 'odb', + 'application/vnd.oasis.opendocument.image' => 'odi', + 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' => 'docx', + 'application/vnd.openxmlformats-officedocument.wordprocessingml.template' => 'dotx', + 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' => 'xlsx', + 'application/vnd.openxmlformats-officedocument.presentationml.presentation' => 'pptx', + 'application/vnd.palm' => 'prc', + 'application/vnd.picsel' => 'efif', + 'application/vnd.pvi.ptid1' => 'pti', + 'application/vnd.quark.quarkxpress' => 'qxd', + 'application/vnd.sealed.doc' => 'sdoc', + 'application/vnd.sealed.eml' => 'seml', + 'application/vnd.sealed.mht' => 'smht', + 'application/vnd.sealed.ppt' => 'sppt', + 'application/vnd.sealed.xls' => 'sxls', + 'application/vnd.sealedmedia.softseal.html' => 'stml', + 'application/vnd.sealedmedia.softseal.pdf' => 'spdf', + 'application/vnd.seemail' => 'see', + 'application/vnd.smaf' => 'mmf', + 'application/vnd.sun.xml.calc' => 'sxc', + 'application/vnd.sun.xml.calc.template' => 'stc', + 'application/vnd.sun.xml.draw' => 'sxd', + 'application/vnd.sun.xml.draw.template' => 'std', + 'application/vnd.sun.xml.impress' => 'sxi', + 'application/vnd.sun.xml.impress.template' => 'sti', + 'application/vnd.sun.xml.math' => 'sxm', + 'application/vnd.sun.xml.writer' => 'sxw', + 'application/vnd.sun.xml.writer.global' => 'sxg', + 'application/vnd.sun.xml.writer.template' => 'stw', + 'application/vnd.sus-calendar' => 'sus', + 'application/vnd.vidsoft.vidconference' => 'vsc', + 'application/vnd.visio' => 'vsd', + 'application/vnd.visionary' => 'vis', + 'application/vnd.wap.sic' => 'sic', + 'application/vnd.wap.slc' => 'slc', + 'application/vnd.wap.wbxml' => 'wbxml', + 'application/vnd.wap.wmlc' => 'wmlc', + 'application/vnd.wap.wmlscriptc' => 'wmlsc', + 'application/vnd.webturbo' => 'wtb', + 'application/vnd.wordperfect' => 'wpd', + 'application/vnd.wqd' => 'wqd', + 'application/vnd.wv.csp+wbxml' => 'wv', + 'application/vnd.wv.csp+xml' => '8bit', + 'application/vnd.wv.ssp+xml' => '8bit', + 'application/vnd.yamaha.hv-dic' => 'hvd', + 'application/vnd.yamaha.hv-script' => 'hvs', + 'application/vnd.yamaha.hv-voice' => 'hvp', + 'application/vnd.yamaha.smaf-audio' => 'saf', + 'application/vnd.yamaha.smaf-phrase' => 'spf', + 'application/vocaltec-media-desc' => 'vmd', + 'application/vocaltec-media-file' => 'vmf', + 'application/vocaltec-talker' => 'vtk', + 'application/watcherinfo+xml' => 'wif', + 'application/wordperfect5.1' => 'wp5', + 'application/x-123' => 'wk', + 'application/x-7th_level_event' => '7ls', + 'application/x-authorware-bin' => 'aab', + 'application/x-authorware-map' => 'aam', + 'application/x-authorware-seg' => 'aas', + 'application/x-bcpio' => 'bcpio', + 'application/x-bleeper' => 'bleep', + 'application/x-bzip2' => 'bz2', + 'application/x-cdlink' => 'vcd', + 'application/x-chat' => 'chat', + 'application/x-chess-pgn' => 'pgn', + 'application/x-compress' => 'z', + 'application/x-cpio' => 'cpio', + 'application/x-cprplayer' => 'pqf', + 'application/x-csh' => 'csh', + 'application/x-cu-seeme' => 'csm', + 'application/x-cult3d-object' => 'co', + 'application/x-debian-package' => 'deb', + 'application/x-director' => 'dcr', + 'application/x-dvi' => 'dvi', + 'application/x-envoy' => 'evy', + 'application/x-futuresplash' => 'spl', + 'application/x-gtar' => 'gtar', + 'application/x-gzip' => 'gz', + 'application/x-hdf' => 'hdf', + 'application/x-hep' => 'hep', + 'application/x-html+ruby' => 'rhtml', + 'application/x-httpd-miva' => 'mv', + 'application/x-httpd-php' => 'phtml', + 'application/x-ica' => 'ica', + 'application/x-imagemap' => 'imagemap', + 'application/x-ipix' => 'ipx', + 'application/x-ipscript' => 'ips', + 'application/x-java-archive' => 'jar', + 'application/x-java-jnlp-file' => 'jnlp', + 'application/x-java-serialized-object' => 'ser', + 'application/x-java-vm' => 'class', + 'application/x-javascript' => 'js', + 'application/x-koan' => 'skp', + 'application/x-latex' => 'latex', + 'application/x-mac-compactpro' => 'cpt', + 'application/x-maker' => 'frm', + 'application/x-mathcad' => 'mcd', + 'application/x-midi' => 'mid', + 'application/x-mif' => 'mif', + 'application/x-msaccess' => 'mda', + 'application/x-msdos-program' => 'com', + 'application/x-msdownload' => 'base64', + 'application/x-msexcel' => 'xls', + 'application/x-msword' => 'doc', + 'application/x-netcdf' => 'nc', + 'application/x-ns-proxy-autoconfig' => 'pac', + 'application/x-pagemaker' => 'pm5', + 'application/x-perl' => 'pl', + 'application/x-pn-realmedia' => 'rp', + 'application/x-python' => 'py', + 'application/x-quicktimeplayer' => 'qtl', + 'application/x-rar-compressed' => 'rar', + 'application/x-ruby' => 'rb', + 'application/x-sh' => 'sh', + 'application/x-shar' => 'shar', + 'application/x-shockwave-flash' => 'swf', + 'application/x-sprite' => 'spr', + 'application/x-spss' => 'sav', + 'application/x-spt' => 'spt', + 'application/x-stuffit' => 'sit', + 'application/x-sv4cpio' => 'sv4cpio', + 'application/x-sv4crc' => 'sv4crc', + 'application/x-tar' => 'tar', + 'application/x-tcl' => 'tcl', + 'application/x-tex' => 'tex', + 'application/x-texinfo' => 'texinfo', + 'application/x-troff' => 't', + 'application/x-troff-man' => 'man', + 'application/x-troff-me' => 'me', + 'application/x-troff-ms' => 'ms', + 'application/x-twinvq' => 'vqf', + 'application/x-twinvq-plugin' => 'vqe', + 'application/x-ustar' => 'ustar', + 'application/x-vmsbackup' => 'bck', + 'application/x-wais-source' => 'src', + 'application/x-wingz' => 'wz', + 'application/x-word' => 'base64', + 'application/x-wordperfect6.1' => 'wp6', + 'application/x-x509-ca-cert' => 'crt', + 'application/x-zip-compressed' => 'zip', + 'application/xhtml+xml' => 'xhtml', + 'application/zip' => 'zip', + 'audio/3gpp' => '3gpp', + 'audio/amr' => 'amr', + 'audio/amr-wb' => 'awb', + 'audio/basic' => 'au', + 'audio/evrc' => 'evc', + 'audio/l16' => 'l16', + 'audio/midi' => 'mid', + 'audio/mpeg' => 'mp3', + 'audio/prs.sid' => 'sid', + 'audio/qcelp' => 'qcp', + 'audio/smv' => 'smv', + 'audio/vnd.audiokoz' => 'koz', + 'audio/vnd.digital-winds' => 'eol', + 'audio/vnd.everad.plj' => 'plj', + 'audio/vnd.lucent.voice' => 'lvp', + 'audio/vnd.nokia.mobile-xmf' => 'mxmf', + 'audio/vnd.nortel.vbk' => 'vbk', + 'audio/vnd.nuera.ecelp4800' => 'ecelp4800', + 'audio/vnd.nuera.ecelp7470' => 'ecelp7470', + 'audio/vnd.nuera.ecelp9600' => 'ecelp9600', + 'audio/vnd.sealedmedia.softseal.mpeg' => 'smp3', + 'audio/voxware' => 'vox', + 'audio/x-aiff' => 'aif', + 'audio/x-mid' => 'mid', + 'audio/x-midi' => 'mid', + 'audio/x-mpeg' => 'mp2', + 'audio/x-mpegurl' => 'mpu', + 'audio/x-pn-realaudio' => 'rm', + 'audio/x-pn-realaudio-plugin' => 'rpm', + 'audio/x-realaudio' => 'ra', + 'audio/x-wav' => 'wav', + 'chemical/x-csml' => 'csm', + 'chemical/x-embl-dl-nucleotide' => 'emb', + 'chemical/x-gaussian-cube' => 'cube', + 'chemical/x-gaussian-input' => 'gau', + 'chemical/x-jcamp-dx' => 'jdx', + 'chemical/x-mdl-molfile' => 'mol', + 'chemical/x-mdl-rxnfile' => 'rxn', + 'chemical/x-mdl-tgf' => 'tgf', + 'chemical/x-mopac-input' => 'mop', + 'chemical/x-pdb' => 'pdb', + 'chemical/x-rasmol' => 'scr', + 'chemical/x-xyz' => 'xyz', + 'drawing/dwf' => 'dwf', + 'drawing/x-dwf' => 'dwf', + 'i-world/i-vrml' => 'ivr', + 'image/bmp' => 'bmp', + 'image/cewavelet' => 'wif', + 'image/cis-cod' => 'cod', + 'image/fif' => 'fif', + 'image/gif' => 'gif', + 'image/ief' => 'ief', + 'image/jp2' => 'jp2', + 'image/jpeg' => 'jpg', + 'image/jpm' => 'jpm', + 'image/jpx' => 'jpf', + 'image/pict' => 'pic', + 'image/pjpeg' => 'jpg', + 'image/png' => 'png', + 'image/targa' => 'tga', + 'image/tiff' => 'tif', + 'image/vn-svf' => 'svf', + 'image/vnd.dgn' => 'dgn', + 'image/vnd.djvu' => 'djvu', + 'image/vnd.dwg' => 'dwg', + 'image/vnd.glocalgraphics.pgb' => 'pgb', + 'image/vnd.microsoft.icon' => 'ico', + 'image/vnd.ms-modi' => 'mdi', + 'image/vnd.sealed.png' => 'spng', + 'image/vnd.sealedmedia.softseal.gif' => 'sgif', + 'image/vnd.sealedmedia.softseal.jpg' => 'sjpg', + 'image/vnd.wap.wbmp' => 'wbmp', + 'image/x-bmp' => 'bmp', + 'image/x-cmu-raster' => 'ras', + 'image/x-freehand' => 'fh4', + 'image/x-ms-bmp' => 'bmp', + 'image/x-png' => 'png', + 'image/x-portable-anymap' => 'pnm', + 'image/x-portable-bitmap' => 'pbm', + 'image/x-portable-graymap' => 'pgm', + 'image/x-portable-pixmap' => 'ppm', + 'image/x-rgb' => 'rgb', + 'image/x-xbitmap' => 'xbm', + 'image/x-xpixmap' => 'xpm', + 'image/x-xwindowdump' => 'xwd', + 'message/external-body' => '8bit', + 'message/news' => '8bit', + 'message/partial' => '8bit', + 'message/rfc822' => '8bit', + 'model/iges' => 'igs', + 'model/mesh' => 'msh', + 'model/vnd.parasolid.transmit.binary' => 'x_b', + 'model/vnd.parasolid.transmit.text' => 'x_t', + 'model/vrml' => 'wrl', + 'multipart/alternative' => '8bit', + 'multipart/appledouble' => '8bit', + 'multipart/digest' => '8bit', + 'multipart/mixed' => '8bit', + 'multipart/parallel' => '8bit', + 'text/comma-separated-values' => 'csv', + 'text/css' => 'css', + 'text/html' => 'html', + 'text/plain' => 'txt', + 'text/prs.fallenstein.rst' => 'rst', + 'text/richtext' => 'rtx', + 'text/rtf' => 'rtf', + 'text/sgml' => 'sgml', + 'text/tab-separated-values' => 'tsv', + 'text/vnd.net2phone.commcenter.command' => 'ccc', + 'text/vnd.sun.j2me.app-descriptor' => 'jad', + 'text/vnd.wap.si' => 'si', + 'text/vnd.wap.sl' => 'sl', + 'text/vnd.wap.wml' => 'wml', + 'text/vnd.wap.wmlscript' => 'wmls', + 'text/x-hdml' => 'hdml', + 'text/x-setext' => 'etx', + 'text/x-sgml' => 'sgml', + 'text/x-speech' => 'talk', + 'text/x-vcalendar' => 'vcs', + 'text/x-vcard' => 'vcf', + 'text/xml' => 'xml', + 'ulead/vrml' => 'uvr', + 'video/3gpp' => '3gp', + 'video/dl' => 'dl', + 'video/gl' => 'gl', + 'video/mj2' => 'mj2', + 'video/mpeg' => 'mpeg', + 'video/quicktime' => 'mov', + 'video/vdo' => 'vdo', + 'video/vivo' => 'viv', + 'video/vnd.fvt' => 'fvt', + 'video/vnd.mpegurl' => 'mxu', + 'video/vnd.nokia.interleaved-multimedia' => 'nim', + 'video/vnd.objectvideo' => 'mp4', + 'video/vnd.sealed.mpeg1' => 's11', + 'video/vnd.sealed.mpeg4' => 'smpg', + 'video/vnd.sealed.swf' => 'sswf', + 'video/vnd.sealedmedia.softseal.mov' => 'smov', + 'video/vnd.vivo' => 'vivo', + 'video/x-fli' => 'fli', + 'video/x-ms-asf' => 'asf', + 'video/x-ms-wmv' => 'wmv', + 'video/x-msvideo' => 'avi', + 'video/x-sgi-movie' => 'movie', + 'x-chemical/x-pdb' => 'pdb', + 'x-chemical/x-xyz' => 'xyz', + 'x-conference/x-cooltalk' => 'ice', + 'x-drawing/dwf' => 'dwf', + 'x-world/x-d96' => 'd', + 'x-world/x-svr' => 'svr', + 'x-world/x-vream' => 'vrw', + 'x-world/x-vrml' => 'wrl', + ); + + return !$type ? $default : (isset($extensions[$type]) ? '.'.$extensions[$type] : $default); + } +} diff --git a/lib/vendor/symfony/lib/validator/sfValidatorAnd.class.php b/lib/vendor/symfony/lib/validator/sfValidatorAnd.class.php new file mode 100644 index 0000000..1dc2ee4 --- /dev/null +++ b/lib/vendor/symfony/lib/validator/sfValidatorAnd.class.php @@ -0,0 +1,168 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorAnd validates an input value if all validators passes. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id: sfValidatorAnd.class.php 21908 2009-09-11 12:06:21Z fabien $ + */ +class sfValidatorAnd extends sfValidatorBase +{ + protected + $validators = array(); + + /** + * Constructor. + * + * The first argument can be: + * + * * null + * * a sfValidatorBase instance + * * an array of sfValidatorBase instances + * + * @param mixed $validators Initial validators + * @param array $options An array of options + * @param array $messages An array of error messages + * + * @see sfValidatorBase + */ + public function __construct($validators = null, $options = array(), $messages = array()) + { + if ($validators instanceof sfValidatorBase) + { + $this->addValidator($validators); + } + else if (is_array($validators)) + { + foreach ($validators as $validator) + { + $this->addValidator($validator); + } + } + else if (null !== $validators) + { + throw new InvalidArgumentException('sfValidatorAnd constructor takes a sfValidatorBase object, or a sfValidatorBase array.'); + } + + parent::__construct($options, $messages); + } + + /** + * Configures the current validator. + * + * Available options: + * + * * halt_on_error: Whether to halt on the first error or not (false by default) + * + * @param array $options An array of options + * @param array $messages An array of error messages + * + * @see sfValidatorBase + */ + protected function configure($options = array(), $messages = array()) + { + $this->addOption('halt_on_error', false); + + $this->setMessage('invalid', null); + } + + /** + * Adds a validator. + * + * @param sfValidatorBase $validator A sfValidatorBase instance + */ + public function addValidator(sfValidatorBase $validator) + { + $this->validators[] = $validator; + } + + /** + * Returns an array of the validators. + * + * @return array An array of sfValidatorBase instances + */ + public function getValidators() + { + return $this->validators; + } + + /** + * @see sfValidatorBase + */ + protected function doClean($value) + { + $clean = $value; + $errors = array(); + foreach ($this->validators as $validator) + { + try + { + $clean = $validator->clean($clean); + } + catch (sfValidatorError $e) + { + $errors[] = $e; + + if ($this->getOption('halt_on_error')) + { + break; + } + } + } + + if (count($errors)) + { + if ($this->getMessage('invalid')) + { + throw new sfValidatorError($this, 'invalid', array('value' => $value)); + } + + throw new sfValidatorErrorSchema($this, $errors); + } + + return $clean; + } + + /** + * @see sfValidatorBase + */ + public function asString($indent = 0) + { + $validators = ''; + for ($i = 0, $max = count($this->validators); $i < $max; $i++) + { + $validators .= "\n".$this->validators[$i]->asString($indent + 2)."\n"; + + if ($i < $max - 1) + { + $validators .= str_repeat(' ', $indent + 2).'and'; + } + + if ($i == $max - 2) + { + $options = $this->getOptionsWithoutDefaults(); + $messages = $this->getMessagesWithoutDefaults(); + + if ($options || $messages) + { + $validators .= sprintf('(%s%s)', + $options ? sfYamlInline::dump($options) : ($messages ? '{}' : ''), + $messages ? ', '.sfYamlInline::dump($messages) : '' + ); + } + } + } + + return sprintf("%s(%s%s)", str_repeat(' ', $indent), $validators, str_repeat(' ', $indent)); + } +} diff --git a/lib/vendor/symfony/lib/validator/sfValidatorBase.class.php b/lib/vendor/symfony/lib/validator/sfValidatorBase.class.php new file mode 100644 index 0000000..3ac0e2f --- /dev/null +++ b/lib/vendor/symfony/lib/validator/sfValidatorBase.class.php @@ -0,0 +1,498 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorBase is the base class for all validators. + * + * It also implements the required option for all validators. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id: sfValidatorBase.class.php 32653 2011-06-15 18:32:02Z fabien $ + */ +abstract class sfValidatorBase +{ + protected static + $charset = 'UTF-8', + $globalDefaultMessages = array('invalid' => 'Invalid.', 'required' => 'Required.'); + + protected + $requiredOptions = array(), + $defaultMessages = array(), + $defaultOptions = array(), + $messages = array(), + $options = array(); + + /** + * Constructor. + * + * Available options: + * + * * required: true if the value is required, false otherwise (default to true) + * * trim: true if the value must be trimmed, false otherwise (default to false) + * * empty_value: empty value when value is not required + * + * Available error codes: + * + * * required + * * invalid + * + * @param array $options An array of options + * @param array $messages An array of error messages + */ + public function __construct($options = array(), $messages = array()) + { + $this->options = array_merge(array('required' => true, 'trim' => false, 'empty_value' => null), $this->options); + $this->messages = array_merge(array('required' => self::$globalDefaultMessages['required'], 'invalid' => self::$globalDefaultMessages['invalid']), $this->messages); + + $this->configure($options, $messages); + + $this->setDefaultOptions($this->getOptions()); + $this->setDefaultMessages($this->getMessages()); + + $currentOptionKeys = array_keys($this->options); + $optionKeys = array_keys($options); + + // check option names + if ($diff = array_diff($optionKeys, array_merge($currentOptionKeys, $this->requiredOptions))) + { + throw new InvalidArgumentException(sprintf('%s does not support the following options: \'%s\'.', get_class($this), implode('\', \'', $diff))); + } + + // check error code names + if ($diff = array_diff(array_keys($messages), array_keys($this->messages))) + { + throw new InvalidArgumentException(sprintf('%s does not support the following error codes: \'%s\'.', get_class($this), implode('\', \'', $diff))); + } + + // check required options + if ($diff = array_diff($this->requiredOptions, array_merge($currentOptionKeys, $optionKeys))) + { + throw new RuntimeException(sprintf('%s requires the following options: \'%s\'.', get_class($this), implode('\', \'', $diff))); + } + + $this->options = array_merge($this->options, $options); + $this->messages = array_merge($this->messages, $messages); + } + + /** + * Configures the current validator. + * + * This method allows each validator to add options and error messages + * during validator creation. + * + * If some options and messages are given in the sfValidatorBase constructor + * they will take precedence over the options and messages you configure + * in this method. + * + * @param array $options An array of options + * @param array $messages An array of error messages + * + * @see __construct() + */ + protected function configure($options = array(), $messages = array()) + { + } + + /** + * Returns an error message given an error code. + * + * @param string $name The error code + * + * @return string The error message, or the empty string if the error code does not exist + */ + public function getMessage($name) + { + return isset($this->messages[$name]) ? $this->messages[$name] : ''; + } + + /** + * Adds a new error code with a default error message. + * + * @param string $name The error code + * @param string $value The error message + * + * @return sfValidatorBase The current validator instance + */ + public function addMessage($name, $value) + { + $this->messages[$name] = isset(self::$globalDefaultMessages[$name]) ? self::$globalDefaultMessages[$name] : $value; + + return $this; + } + + /** + * Changes an error message given the error code. + * + * @param string $name The error code + * @param string $value The error message + * + * @return sfValidatorBase The current validator instance + */ + public function setMessage($name, $value) + { + if (!in_array($name, array_keys($this->messages))) + { + throw new InvalidArgumentException(sprintf('%s does not support the following error code: \'%s\'.', get_class($this), $name)); + } + + $this->messages[$name] = $value; + + return $this; + } + + /** + * Returns an array of current error messages. + * + * @return array An array of messages + */ + public function getMessages() + { + return $this->messages; + } + + /** + * Changes all error messages. + * + * @param array $values An array of error messages + * + * @return sfValidatorBase The current validator instance + */ + public function setMessages($values) + { + $this->messages = array_merge(array('required' => self::$globalDefaultMessages['required'], 'invalid' => self::$globalDefaultMessages['invalid']), $values); + + return $this; + } + + /** + * Gets an option value. + * + * @param string $name The option name + * + * @return mixed The option value + */ + public function getOption($name) + { + return isset($this->options[$name]) ? $this->options[$name] : null; + } + + /** + * Adds a new option value with a default value. + * + * @param string $name The option name + * @param mixed $value The default value + * + * @return sfValidatorBase The current validator instance + */ + public function addOption($name, $value = null) + { + $this->options[$name] = $value; + + return $this; + } + + /** + * Changes an option value. + * + * @param string $name The option name + * @param mixed $value The value + * + * @return sfValidatorBase The current validator instance + */ + public function setOption($name, $value) + { + if (!in_array($name, array_merge(array_keys($this->options), $this->requiredOptions))) + { + throw new InvalidArgumentException(sprintf('%s does not support the following option: \'%s\'.', get_class($this), $name)); + } + + $this->options[$name] = $value; + + return $this; + } + + /** + * Returns true if the option exists. + * + * @param string $name The option name + * + * @return bool true if the option exists, false otherwise + */ + public function hasOption($name) + { + return isset($this->options[$name]); + } + + /** + * Returns all options. + * + * @return array An array of options + */ + public function getOptions() + { + return $this->options; + } + + /** + * Changes all options. + * + * @param array $values An array of options + * + * @return sfValidatorBase The current validator instance + */ + public function setOptions($values) + { + $this->options = array_merge(array('required' => true, 'trim' => false, 'empty_value' => null), $values); + + return $this; + } + + /** + * Adds a required option. + * + * @param string $name The option name + * + * @return sfValidatorBase The current validator instance + */ + public function addRequiredOption($name) + { + $this->requiredOptions[] = $name; + + return $this; + } + + /** + * Returns all required option names. + * + * @return array An array of required option names + */ + public function getRequiredOptions() + { + return $this->requiredOptions; + } + + /** + * Sets the default message for a given name. + * + * @param string $name The name of the message + * @param string $message The default message string + */ + static public function setDefaultMessage($name, $message) + { + self::$globalDefaultMessages[$name] = $message; + } + + /** + * Cleans the input value. + * + * This method is also responsible for trimming the input value + * and checking the required option. + * + * @param mixed $value The input value + * + * @return mixed The cleaned value + * + * @throws sfValidatorError + */ + public function clean($value) + { + $clean = $value; + + if ($this->options['trim'] && is_string($clean)) + { + $clean = trim($clean); + } + + // empty value? + if ($this->isEmpty($clean)) + { + // required? + if ($this->options['required']) + { + throw new sfValidatorError($this, 'required'); + } + + return $this->getEmptyValue(); + } + + return $this->doClean($clean); + } + + /** + * Cleans the input value. + * + * Every subclass must implements this method. + * + * @param mixed $value The input value + * + * @return mixed The cleaned value + * + * @throws sfValidatorError + */ + abstract protected function doClean($value); + + /** + * Sets the charset to use when validating strings. + * + * @param string $charset The charset + */ + static public function setCharset($charset) + { + self::$charset = $charset; + } + + /** + * Returns the charset to use when validating strings. + * + * @return string The charset (default to UTF-8) + */ + static public function getCharset() + { + return self::$charset; + } + + /** + * Returns true if the value is empty. + * + * @param mixed $value The input value + * + * @return bool true if the value is empty, false otherwise + */ + protected function isEmpty($value) + { + return in_array($value, array(null, '', array()), true); + } + + /** + * Returns an empty value for this validator. + * + * @return mixed The empty value for this validator + */ + protected function getEmptyValue() + { + return $this->getOption('empty_value'); + } + + /** + * Returns an array of all error codes for this validator. + * + * @return array An array of possible error codes + * + * @see getDefaultMessages() + */ + final public function getErrorCodes() + { + return array_keys($this->getDefaultMessages()); + } + + /** + * Returns default messages for all possible error codes. + * + * @return array An array of default error codes and messages + */ + public function getDefaultMessages() + { + return $this->defaultMessages; + } + + /** + * Sets default messages for all possible error codes. + * + * @param array $messages An array of default error codes and messages + */ + protected function setDefaultMessages($messages) + { + $this->defaultMessages = $messages; + } + + /** + * Returns default option values. + * + * @return array An array of default option values + */ + public function getDefaultOptions() + { + return $this->defaultOptions; + } + + /** + * Sets default option values. + * + * @param array $options An array of default option values + */ + protected function setDefaultOptions($options) + { + $this->defaultOptions = $options; + } + + /** + * Returns a string representation of this validator. + * + * @param int $indent Indentation (number of spaces before each line) + * + * @return string The string representation of the validator + */ + public function asString($indent = 0) + { + $options = $this->getOptionsWithoutDefaults(); + $messages = $this->getMessagesWithoutDefaults(); + + return sprintf('%s%s(%s%s)', + str_repeat(' ', $indent), + str_replace('sfValidator', '', get_class($this)), + $options ? sfYamlInline::dump($options) : ($messages ? '{}' : ''), + $messages ? ', '.sfYamlInline::dump($messages) : '' + ); + } + + /** + * Returns all error messages with non default values. + * + * @return string A string representation of the error messages + */ + protected function getMessagesWithoutDefaults() + { + $messages = $this->messages; + + // remove default option values + foreach ($this->getDefaultMessages() as $key => $value) + { + if (array_key_exists($key, $messages) && $messages[$key] === $value) + { + unset($messages[$key]); + } + } + + return $messages; + } + + /** + * Returns all options with non default values. + * + * @return string A string representation of the options + */ + protected function getOptionsWithoutDefaults() + { + $options = $this->options; + + // remove default option values + foreach ($this->getDefaultOptions() as $key => $value) + { + if (array_key_exists($key, $options) && $options[$key] === $value) + { + unset($options[$key]); + } + } + + return $options; + } +} diff --git a/lib/vendor/symfony/lib/validator/sfValidatorBoolean.class.php b/lib/vendor/symfony/lib/validator/sfValidatorBoolean.class.php new file mode 100644 index 0000000..6070345 --- /dev/null +++ b/lib/vendor/symfony/lib/validator/sfValidatorBoolean.class.php @@ -0,0 +1,60 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorBoolean validates a boolean. It also converts the input value to a valid boolean. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id: sfValidatorBoolean.class.php 10306 2008-07-15 22:12:35Z Carl.Vondrick $ + */ +class sfValidatorBoolean extends sfValidatorBase +{ + /** + * Configures the current validator. + * + * Available options: + * + * * true_values: The list of true values + * * false_values: The list of false values + * + * @param array $options An array of options + * @param array $messages An array of error messages + * + * @see sfValidatorBase + */ + protected function configure($options = array(), $messages = array()) + { + $this->addOption('true_values', array('true', 't', 'yes', 'y', 'on', '1')); + $this->addOption('false_values', array('false', 'f', 'no', 'n', 'off', '0')); + + $this->setOption('required', false); + $this->setOption('empty_value', false); + } + + /** + * @see sfValidatorBase + */ + protected function doClean($value) + { + if (in_array($value, $this->getOption('true_values'))) + { + return true; + } + + if (in_array($value, $this->getOption('false_values'))) + { + return false; + } + + throw new sfValidatorError($this, 'invalid', array('value' => $value)); + } +} diff --git a/lib/vendor/symfony/lib/validator/sfValidatorCSRFToken.class.php b/lib/vendor/symfony/lib/validator/sfValidatorCSRFToken.class.php new file mode 100644 index 0000000..8f5c3c7 --- /dev/null +++ b/lib/vendor/symfony/lib/validator/sfValidatorCSRFToken.class.php @@ -0,0 +1,45 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorCSRFToken checks that the token is valid. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id: sfValidatorCSRFToken.class.php 7902 2008-03-15 13:17:33Z fabien $ + */ +class sfValidatorCSRFToken extends sfValidatorBase +{ + /** + * @see sfValidatorBase + */ + protected function configure($options = array(), $messages = array()) + { + $this->addRequiredOption('token'); + + $this->setOption('required', true); + + $this->addMessage('csrf_attack', 'CSRF attack detected.'); + } + + /** + * @see sfValidatorBase + */ + protected function doClean($value) + { + if ($value != $this->getOption('token')) + { + throw new sfValidatorError($this, 'csrf_attack'); + } + + return $value; + } +} diff --git a/lib/vendor/symfony/lib/validator/sfValidatorCallback.class.php b/lib/vendor/symfony/lib/validator/sfValidatorCallback.class.php new file mode 100644 index 0000000..8e57313 --- /dev/null +++ b/lib/vendor/symfony/lib/validator/sfValidatorCallback.class.php @@ -0,0 +1,49 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorCallback validates an input value if the given callback does not throw a sfValidatorError. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id: sfValidatorCallback.class.php 9048 2008-05-19 09:11:23Z FabianLange $ + */ +class sfValidatorCallback extends sfValidatorBase +{ + /** + * Configures the current validator. + * + * Available options: + * + * * callback: A valid PHP callback (required) + * * arguments: An array of arguments to pass to the callback + * + * @param array $options An array of options + * @param array $messages An array of error messages + * + * @see sfValidatorBase + */ + protected function configure($options = array(), $messages = array()) + { + $this->addRequiredOption('callback'); + $this->addOption('arguments', array()); + + $this->setOption('required', false); + } + + /** + * @see sfValidatorBase + */ + protected function doClean($value) + { + return call_user_func($this->getOption('callback'), $this, $value, $this->getOption('arguments')); + } +} diff --git a/lib/vendor/symfony/lib/validator/sfValidatorChoice.class.php b/lib/vendor/symfony/lib/validator/sfValidatorChoice.class.php new file mode 100644 index 0000000..9992384 --- /dev/null +++ b/lib/vendor/symfony/lib/validator/sfValidatorChoice.class.php @@ -0,0 +1,137 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorChoice validates than the value is one of the expected values. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id: sfValidatorChoice.class.php 22264 2009-09-23 05:54:32Z fabien $ + */ +class sfValidatorChoice extends sfValidatorBase +{ + /** + * Configures the current validator. + * + * Available options: + * + * * choices: An array of expected values (required) + * * multiple: true if the select tag must allow multiple selections + * * min: The minimum number of values that need to be selected (this option is only active if multiple is true) + * * max: The maximum number of values that need to be selected (this option is only active if multiple is true) + * + * @param array $options An array of options + * @param array $messages An array of error messages + * + * @see sfValidatorBase + */ + protected function configure($options = array(), $messages = array()) + { + $this->addRequiredOption('choices'); + $this->addOption('multiple', false); + $this->addOption('min'); + $this->addOption('max'); + + $this->addMessage('min', 'At least %min% values must be selected (%count% values selected).'); + $this->addMessage('max', 'At most %max% values must be selected (%count% values selected).'); + } + + /** + * @see sfValidatorBase + */ + protected function doClean($value) + { + $choices = $this->getChoices(); + + if ($this->getOption('multiple')) + { + $value = $this->cleanMultiple($value, $choices); + } + else + { + if (!self::inChoices($value, $choices)) + { + throw new sfValidatorError($this, 'invalid', array('value' => $value)); + } + } + + return $value; + } + + public function getChoices() + { + $choices = $this->getOption('choices'); + if ($choices instanceof sfCallable) + { + $choices = $choices->call(); + } + + return $choices; + } + + /** + * Cleans a value when multiple is true. + * + * @param mixed $value The submitted value + * + * @return array The cleaned value + */ + protected function cleanMultiple($value, $choices) + { + if (!is_array($value)) + { + $value = array($value); + } + + foreach ($value as $v) + { + if (!self::inChoices($v, $choices)) + { + throw new sfValidatorError($this, 'invalid', array('value' => $v)); + } + } + + $count = count($value); + + if ($this->hasOption('min') && $count < $this->getOption('min')) + { + throw new sfValidatorError($this, 'min', array('count' => $count, 'min' => $this->getOption('min'))); + } + + if ($this->hasOption('max') && $count > $this->getOption('max')) + { + throw new sfValidatorError($this, 'max', array('count' => $count, 'max' => $this->getOption('max'))); + } + + return $value; + } + + /** + * Checks if a value is part of given choices (see bug #4212) + * + * @param mixed $value The value to check + * @param array $choices The array of available choices + * + * @return Boolean + */ + static protected function inChoices($value, array $choices = array()) + { + foreach ($choices as $choice) + { + if ((string) $choice == (string) $value) + { + return true; + } + } + + return false; + } +} diff --git a/lib/vendor/symfony/lib/validator/sfValidatorDate.class.php b/lib/vendor/symfony/lib/validator/sfValidatorDate.class.php new file mode 100644 index 0000000..cf818ec --- /dev/null +++ b/lib/vendor/symfony/lib/validator/sfValidatorDate.class.php @@ -0,0 +1,261 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorDate validates a date. It also converts the input value to a valid date. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id: sfValidatorDate.class.php 28959 2010-04-01 14:10:24Z fabien $ + */ +class sfValidatorDate extends sfValidatorBase +{ + /** + * Configures the current validator. + * + * Available options: + * + * * date_format: A regular expression that dates must match + * Note that the regular expression must use named subpatterns like (?P) + * Working example: ~(?P\d{2})/(?P\d{2})/(?P\d{4})~ + * * with_time: true if the validator must return a time, false otherwise + * * date_output: The format to use when returning a date (default to Y-m-d) + * * datetime_output: The format to use when returning a date with time (default to Y-m-d H:i:s) + * * date_format_error: The date format to use when displaying an error for a bad_format error (use date_format if not provided) + * * max: The maximum date allowed (as a timestamp or accecpted date() format) + * * min: The minimum date allowed (as a timestamp or accecpted date() format) + * * date_format_range_error: The date format to use when displaying an error for min/max (default to d/m/Y H:i:s) + * + * Available error codes: + * + * * bad_format + * * min + * * max + * + * @param array $options An array of options + * @param array $messages An array of error messages + * + * @see sfValidatorBase + */ + protected function configure($options = array(), $messages = array()) + { + $this->addMessage('bad_format', '"%value%" does not match the date format (%date_format%).'); + $this->addMessage('max', 'The date must be before %max%.'); + $this->addMessage('min', 'The date must be after %min%.'); + + $this->addOption('date_format', null); + $this->addOption('with_time', false); + $this->addOption('date_output', 'Y-m-d'); + $this->addOption('datetime_output', 'Y-m-d H:i:s'); + $this->addOption('date_format_error'); + $this->addOption('min', null); + $this->addOption('max', null); + $this->addOption('date_format_range_error', 'd/m/Y H:i:s'); + } + + /** + * @see sfValidatorBase + */ + protected function doClean($value) + { + // check date format + if (is_string($value) && $regex = $this->getOption('date_format')) + { + if (!preg_match($regex, $value, $match)) + { + throw new sfValidatorError($this, 'bad_format', array('value' => $value, 'date_format' => $this->getOption('date_format_error') ? $this->getOption('date_format_error') : $this->getOption('date_format'))); + } + + $value = $match; + } + + // convert array to date string + if (is_array($value)) + { + $value = $this->convertDateArrayToString($value); + } + + // convert timestamp to date number format + if (is_numeric($value)) + { + $cleanTime = (integer) $value; + $clean = date('YmdHis', $cleanTime); + } + // convert string to date number format + else + { + try + { + $date = new DateTime($value); + $date->setTimezone(new DateTimeZone(date_default_timezone_get())); + $clean = $date->format('YmdHis'); + } + catch (Exception $e) + { + throw new sfValidatorError($this, 'invalid', array('value' => $value)); + } + } + + // check max + if ($max = $this->getOption('max')) + { + // convert timestamp to date number format + if (is_numeric($max)) + { + $maxError = date($this->getOption('date_format_range_error'), $max); + $max = date('YmdHis', $max); + } + // convert string to date number + else + { + $dateMax = new DateTime($max); + $max = $dateMax->format('YmdHis'); + $maxError = $dateMax->format($this->getOption('date_format_range_error')); + } + + if ($clean > $max) + { + throw new sfValidatorError($this, 'max', array('value' => $value, 'max' => $maxError)); + } + } + + // check min + if ($min = $this->getOption('min')) + { + // convert timestamp to date number + if (is_numeric($min)) + { + $minError = date($this->getOption('date_format_range_error'), $min); + $min = date('YmdHis', $min); + } + // convert string to date number + else + { + $dateMin = new DateTime($min); + $min = $dateMin->format('YmdHis'); + $minError = $dateMin->format($this->getOption('date_format_range_error')); + } + + if ($clean < $min) + { + throw new sfValidatorError($this, 'min', array('value' => $value, 'min' => $minError)); + } + } + + if ($clean === $this->getEmptyValue()) + { + return $cleanTime; + } + + $format = $this->getOption('with_time') ? $this->getOption('datetime_output') : $this->getOption('date_output'); + + return isset($date) ? $date->format($format) : date($format, $cleanTime); + } + + /** + * Converts an array representing a date to a timestamp. + * + * The array can contains the following keys: year, month, day, hour, minute, second + * + * @param array $value An array of date elements + * + * @return int A timestamp + */ + protected function convertDateArrayToString($value) + { + // all elements must be empty or a number + foreach (array('year', 'month', 'day', 'hour', 'minute', 'second') as $key) + { + if (isset($value[$key]) && !preg_match('#^\d+$#', $value[$key]) && !empty($value[$key])) + { + throw new sfValidatorError($this, 'invalid', array('value' => $value)); + } + } + + // if one date value is empty, all others must be empty too + $empties = + (!isset($value['year']) || !$value['year'] ? 1 : 0) + + (!isset($value['month']) || !$value['month'] ? 1 : 0) + + (!isset($value['day']) || !$value['day'] ? 1 : 0) + ; + if ($empties > 0 && $empties < 3) + { + throw new sfValidatorError($this, 'invalid', array('value' => $value)); + } + else if (3 == $empties) + { + return $this->getEmptyValue(); + } + + if (!checkdate(intval($value['month']), intval($value['day']), intval($value['year']))) + { + throw new sfValidatorError($this, 'invalid', array('value' => $value)); + } + + if ($this->getOption('with_time')) + { + // if second is set, minute and hour must be set + // if minute is set, hour must be set + if ( + $this->isValueSet($value, 'second') && (!$this->isValueSet($value, 'minute') || !$this->isValueSet($value, 'hour')) + || + $this->isValueSet($value, 'minute') && !$this->isValueSet($value, 'hour') + ) + { + throw new sfValidatorError($this, 'invalid', array('value' => $value)); + } + + $clean = sprintf( + "%04d-%02d-%02d %02d:%02d:%02d", + intval($value['year']), + intval($value['month']), + intval($value['day']), + isset($value['hour']) ? intval($value['hour']) : 0, + isset($value['minute']) ? intval($value['minute']) : 0, + isset($value['second']) ? intval($value['second']) : 0 + ); + } + else + { + $clean = sprintf( + "%04d-%02d-%02d %02d:%02d:%02d", + intval($value['year']), + intval($value['month']), + intval($value['day']), + 0, + 0, + 0 + ); + } + + return $clean; + } + + protected function isValueSet($values, $key) + { + return isset($values[$key]) && !in_array($values[$key], array(null, ''), true); + } + + /** + * @see sfValidatorBase + */ + protected function isEmpty($value) + { + if (is_array($value)) + { + $filtered = array_filter($value); + + return empty($filtered); + } + + return parent::isEmpty($value); + } +} diff --git a/lib/vendor/symfony/lib/validator/sfValidatorDateRange.class.php b/lib/vendor/symfony/lib/validator/sfValidatorDateRange.class.php new file mode 100644 index 0000000..d3f6382 --- /dev/null +++ b/lib/vendor/symfony/lib/validator/sfValidatorDateRange.class.php @@ -0,0 +1,65 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorDateRange validates a range of date. It also converts the input values to valid dates. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id: sfValidatorDateRange.class.php 32810 2011-07-21 05:18:56Z fabien $ + */ +class sfValidatorDateRange extends sfValidatorBase +{ + /** + * Configures the current validator. + * + * Available options: + * + * * from_date: The from date validator (required) + * * to_date: The to date validator (required) + * * from_field: The name of the "from" date field (optional, default: from) + * * to_field: The name of the "to" date field (optional, default: to) + * + * @param array $options An array of options + * @param array $messages An array of error messages + * + * @see sfValidatorBase + */ + protected function configure($options = array(), $messages = array()) + { + $this->setMessage('invalid', 'The begin date must be before the end date.'); + + $this->addRequiredOption('from_date'); + $this->addRequiredOption('to_date'); + $this->addOption('from_field', 'from'); + $this->addOption('to_field', 'to'); + } + + /** + * @see sfValidatorBase + */ + protected function doClean($value) + { + $fromField = $this->getOption('from_field'); + $toField = $this->getOption('to_field'); + + $value[$fromField] = $this->getOption('from_date')->clean(isset($value[$fromField]) ? $value[$fromField] : null); + $value[$toField] = $this->getOption('to_date')->clean(isset($value[$toField]) ? $value[$toField] : null); + + if ($value[$fromField] && $value[$toField]) + { + $v = new sfValidatorSchemaCompare($fromField, sfValidatorSchemaCompare::LESS_THAN_EQUAL, $toField, array('throw_global_error' => true), array('invalid' => $this->getMessage('invalid'))); + $v->clean($value); + } + + return $value; + } +} diff --git a/lib/vendor/symfony/lib/validator/sfValidatorDateTime.class.php b/lib/vendor/symfony/lib/validator/sfValidatorDateTime.class.php new file mode 100644 index 0000000..cb7eaaa --- /dev/null +++ b/lib/vendor/symfony/lib/validator/sfValidatorDateTime.class.php @@ -0,0 +1,30 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorDateTime validates a date and a time. It also converts the input value to a valid date. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id: sfValidatorDateTime.class.php 5581 2007-10-18 13:56:14Z fabien $ + */ +class sfValidatorDateTime extends sfValidatorDate +{ + /** + * @see sfValidatorDate + */ + protected function configure($options = array(), $messages = array()) + { + parent::configure($options, $messages); + + $this->setOption('with_time', true); + } +} diff --git a/lib/vendor/symfony/lib/validator/sfValidatorDecorator.class.php b/lib/vendor/symfony/lib/validator/sfValidatorDecorator.class.php new file mode 100644 index 0000000..f9824b3 --- /dev/null +++ b/lib/vendor/symfony/lib/validator/sfValidatorDecorator.class.php @@ -0,0 +1,171 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorDecorator decorates another validator. + * + * This validator has exactly the same behavior as the Decorator validator. + * + * The options and messages are proxied from the decorated validator. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id: sfValidatorDecorator.class.php 7902 2008-03-15 13:17:33Z fabien $ + */ +abstract class sfValidatorDecorator extends sfValidatorBase +{ + protected + $validator = null; + + /** + * @see sfValidatorBase + */ + public function __construct($options = array(), $messages = array()) + { + $this->validator = $this->getValidator(); + + if (!$this->validator instanceof sfValidatorBase) + { + throw new RuntimeException('The getValidator() method must return a sfValidatorBase instance.'); + } + + foreach ($options as $key => $value) + { + $this->validator->setOption($key, $value); + } + + foreach ($messages as $key => $value) + { + $this->validator->setMessage($key, $value); + } + } + + /** + * Returns the decorated validator. + * + * Every subclass must implement this method. + * + * @return sfValidatorBase A sfValidatorBase instance + */ + abstract protected function getValidator(); + + /** + * @see sfValidatorBase + */ + public function clean($value) + { + return $this->doClean($value); + } + + /** + * @see sfValidatorBase + */ + protected function doClean($value) + { + return $this->validator->clean($value); + } + + /** + * @see sfValidatorBase + */ + public function getMessage($name) + { + return $this->validator->getMessage($name); + } + + /** + * @see sfValidatorBase + */ + public function setMessage($name, $value) + { + $this->validator->setMessage($name, $value); + } + + /** + * @see sfValidatorBase + */ + public function getMessages() + { + return $this->validator->getMessages(); + } + + /** + * @see sfValidatorBase + */ + public function setMessages($values) + { + return $this->validator->setMessages($values); + } + + /** + * @see sfValidatorBase + */ + public function getOption($name) + { + return $this->validator->getOption($name); + } + + /** + * @see sfValidatorBase + */ + public function setOption($name, $value) + { + $this->validator->setOption($name, $value); + } + + /** + * @see sfValidatorBase + */ + public function hasOption($name) + { + return $this->validator->hasOption($name); + } + + /** + * @see sfValidatorBase + */ + public function getOptions() + { + return $this->validator->getOptions(); + } + + /** + * @see sfValidatorBase + */ + public function setOptions($values) + { + $this->validator->setOptions($values); + } + + /** + * @see sfValidatorBase + */ + public function asString($indent = 0) + { + return $this->validator->asString($indent); + } + + /** + * @see sfValidatorBase + */ + public function getDefaultOptions() + { + return $this->validator->getDefaultOptions(); + } + + /** + * @see sfValidatorBase + */ + public function getDefaultMessages() + { + return $this->validator->getDefaultMessages(); + } +} diff --git a/lib/vendor/symfony/lib/validator/sfValidatorEmail.class.php b/lib/vendor/symfony/lib/validator/sfValidatorEmail.class.php new file mode 100644 index 0000000..9ee4cf6 --- /dev/null +++ b/lib/vendor/symfony/lib/validator/sfValidatorEmail.class.php @@ -0,0 +1,32 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorEmail validates emails. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id: sfValidatorEmail.class.php 22149 2009-09-18 14:09:53Z Kris.Wallsmith $ + */ +class sfValidatorEmail extends sfValidatorRegex +{ + const REGEX_EMAIL = '/^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i'; + + /** + * @see sfValidatorRegex + */ + protected function configure($options = array(), $messages = array()) + { + parent::configure($options, $messages); + + $this->setOption('pattern', self::REGEX_EMAIL); + } +} diff --git a/lib/vendor/symfony/lib/validator/sfValidatorError.class.php b/lib/vendor/symfony/lib/validator/sfValidatorError.class.php new file mode 100644 index 0000000..24326b2 --- /dev/null +++ b/lib/vendor/symfony/lib/validator/sfValidatorError.class.php @@ -0,0 +1,156 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorError represents a validation error. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id: sfValidatorError.class.php 15393 2009-02-10 12:58:49Z fabien $ + */ +class sfValidatorError extends Exception implements Serializable +{ + protected + $validator = null, + $arguments = array(); + + /** + * Constructor. + * + * @param sfValidatorBase $validator An sfValidatorBase instance + * @param string $code The error code + * @param array $arguments An array of named arguments needed to render the error message + */ + public function __construct(sfValidatorBase $validator, $code, $arguments = array()) + { + $this->validator = $validator; + $this->arguments = $arguments; + + // override default exception message and code + $this->code = $code; + + if (!$messageFormat = $this->getMessageFormat()) + { + $messageFormat = $code; + } + $this->message = strtr($messageFormat, $this->getArguments()); + } + + /** + * Returns the string representation of the error. + * + * @return string The error message + */ + public function __toString() + { + return $this->getMessage(); + } + + /** + * Returns the input value that triggered this error. + * + * @return mixed The input value + */ + public function getValue() + { + return isset($this->arguments['value']) ? $this->arguments['value'] : null; + } + + /** + * Returns the validator that triggered this error. + * + * @return sfValidatorBase A sfValidatorBase instance + */ + public function getValidator() + { + return $this->validator; + } + + /** + * Returns the arguments needed to format the message. + * + * @param bool $raw false to use it as arguments for the message format, true otherwise (default to false) + * + * @see getMessageFormat() + */ + public function getArguments($raw = false) + { + if ($raw) + { + return $this->arguments; + } + + $arguments = array(); + foreach ($this->arguments as $key => $value) + { + if (is_array($value)) + { + continue; + } + + $arguments["%$key%"] = htmlspecialchars($value, ENT_QUOTES, sfValidatorBase::getCharset()); + } + + return $arguments; + } + + /** + * Returns the message format for this error. + * + * This is the string you need to use if you need to internationalize + * error messages: + * + * $i18n->__($error->getMessageFormat(), $error->getArguments()); + * + * If no message format has been set in the validator, the exception standard + * message is returned. + * + * @return string The message format + */ + public function getMessageFormat() + { + $messageFormat = $this->validator->getMessage($this->code); + if (!$messageFormat) + { + $messageFormat = $this->getMessage(); + } + + return $messageFormat; + } + + /** + * Serializes the current instance. + * + * We must implement the Serializable interface to overcome a problem with PDO + * used as a session handler. + * + * The default serialization process serializes the exception trace, and because + * the trace can contain a PDO instance which is not serializable, serializing won't + * work when using PDO. + * + * @return string The instance as a serialized string + */ + public function serialize() + { + return serialize(array($this->validator, $this->arguments, $this->code, $this->message)); + } + + /** + * Unserializes a sfValidatorError instance. + * + * @param string $serialized A serialized sfValidatorError instance + * + */ + public function unserialize($serialized) + { + list($this->validator, $this->arguments, $this->code, $this->message) = unserialize($serialized); + } +} diff --git a/lib/vendor/symfony/lib/validator/sfValidatorErrorSchema.class.php b/lib/vendor/symfony/lib/validator/sfValidatorErrorSchema.class.php new file mode 100644 index 0000000..d8ed134 --- /dev/null +++ b/lib/vendor/symfony/lib/validator/sfValidatorErrorSchema.class.php @@ -0,0 +1,340 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorErrorSchema represents a validation schema error. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id: sfValidatorErrorSchema.class.php 22446 2009-09-26 07:55:47Z fabien $ + */ +class sfValidatorErrorSchema extends sfValidatorError implements ArrayAccess, Iterator, Countable +{ + protected + $errors = array(), + $globalErrors = array(), + $namedErrors = array(), + $count = 0; + + /** + * Constructor. + * + * @param sfValidatorBase $validator An sfValidatorBase instance + * @param array $errors An array of errors + */ + public function __construct(sfValidatorBase $validator, $errors = array()) + { + $this->validator = $validator; + $this->arguments = array(); + + // override default exception message and code + $this->code = ''; + $this->message = ''; + + $this->addErrors($errors); + } + + /** + * Adds an error. + * + * This method merges sfValidatorErrorSchema errors with the current instance. + * + * @param sfValidatorError $error An sfValidatorError instance + * @param string $name The error name + * + * @return sfValidatorErrorSchema The current error schema instance + */ + public function addError(sfValidatorError $error, $name = null) + { + if (null === $name || is_integer($name)) + { + if ($error instanceof sfValidatorErrorSchema) + { + $this->addErrors($error); + } + else + { + $this->globalErrors[] = $error; + $this->errors[] = $error; + } + } + else + { + if (!isset($this->namedErrors[$name]) && !$error instanceof sfValidatorErrorSchema) + { + $this->namedErrors[$name] = $error; + $this->errors[$name] = $error; + } + else + { + if (!isset($this->namedErrors[$name])) + { + $this->namedErrors[$name] = new sfValidatorErrorSchema($error->getValidator()); + $this->errors[$name] = new sfValidatorErrorSchema($error->getValidator()); + } + else if (!$this->namedErrors[$name] instanceof sfValidatorErrorSchema) + { + $current = $this->namedErrors[$name]; + $this->namedErrors[$name] = new sfValidatorErrorSchema($current->getValidator()); + $this->errors[$name] = new sfValidatorErrorSchema($current->getValidator()); + + $method = $current instanceof sfValidatorErrorSchema ? 'addErrors' : 'addError'; + $this->namedErrors[$name]->$method($current); + $this->errors[$name]->$method($current); + } + + $method = $error instanceof sfValidatorErrorSchema ? 'addErrors' : 'addError'; + $this->namedErrors[$name]->$method($error); + $this->errors[$name]->$method($error); + } + } + + $this->updateCode(); + $this->updateMessage(); + + return $this; + } + + /** + * Adds an array of errors. + * + * @param array $errors An array of sfValidatorError instances + * + * @return sfValidatorErrorSchema The current error schema instance + */ + public function addErrors($errors) + { + if ($errors instanceof sfValidatorErrorSchema) + { + foreach ($errors->getGlobalErrors() as $error) + { + $this->addError($error); + } + + foreach ($errors->getNamedErrors() as $name => $error) + { + $this->addError($error, (string) $name); + } + } + else + { + foreach ($errors as $name => $error) + { + $this->addError($error, $name); + } + } + + return $this; + } + + /** + * Gets an array of all errors + * + * @return array An array of sfValidatorError instances + */ + public function getErrors() + { + return $this->errors; + } + + /** + * Gets an array of all named errors + * + * @return array An array of sfValidatorError instances + */ + public function getNamedErrors() + { + return $this->namedErrors; + } + + /** + * Gets an array of all global errors + * + * @return array An array of sfValidatorError instances + */ + public function getGlobalErrors() + { + return $this->globalErrors; + } + + /** + * @see sfValidatorError + */ + public function getValue() + { + return null; + } + + /** + * @see sfValidatorError + */ + public function getArguments($raw = false) + { + return array(); + } + + /** + * @see sfValidatorError + */ + public function getMessageFormat() + { + return ''; + } + + /** + * Returns the number of errors (implements the Countable interface). + * + * @return int The number of array + */ + public function count() + { + return count($this->errors); + } + + /** + * Reset the error array to the beginning (implements the Iterator interface). + */ + public function rewind() + { + reset($this->errors); + + $this->count = count($this->errors); + } + + /** + * Get the key associated with the current error (implements the Iterator interface). + * + * @return string The key + */ + public function key() + { + return key($this->errors); + } + + /** + * Returns the current error (implements the Iterator interface). + * + * @return mixed The escaped value + */ + public function current() + { + return current($this->errors); + } + + /** + * Moves to the next error (implements the Iterator interface). + */ + public function next() + { + next($this->errors); + + --$this->count; + } + + /** + * Returns true if the current error is valid (implements the Iterator interface). + * + * @return boolean The validity of the current element; true if it is valid + */ + public function valid() + { + return $this->count > 0; + } + + /** + * Returns true if the error exists (implements the ArrayAccess interface). + * + * @param string $name The name of the error + * + * @return bool true if the error exists, false otherwise + */ + public function offsetExists($name) + { + return isset($this->errors[$name]); + } + + /** + * Returns the error associated with the name (implements the ArrayAccess interface). + * + * @param string $name The offset of the value to get + * + * @return sfValidatorError A sfValidatorError instance + */ + public function offsetGet($name) + { + return isset($this->errors[$name]) ? $this->errors[$name] : null; + } + + /** + * Throws an exception saying that values cannot be set (implements the ArrayAccess interface). + * + * @param string $offset (ignored) + * @param string $value (ignored) + * + * @throws LogicException + */ + public function offsetSet($offset, $value) + { + throw new LogicException('Unable update an error.'); + } + + /** + * Impossible to call because this is an exception! + * + * @param string $offset (ignored) + */ + public function offsetUnset($offset) + { + } + + /** + * Updates the exception error code according to the current errors. + */ + protected function updateCode() + { + $this->code = implode(' ', array_merge( + array_map(create_function('$e', 'return $e->getCode();'), $this->globalErrors), + array_map(create_function('$n,$e', 'return $n.\' [\'.$e->getCode().\']\';'), array_keys($this->namedErrors), array_values($this->namedErrors)) + )); + } + + /** + * Updates the exception error message according to the current errors. + */ + protected function updateMessage() + { + $this->message = implode(' ', array_merge( + array_map(create_function('$e', 'return $e->getMessage();'), $this->globalErrors), + array_map(create_function('$n,$e', 'return $n.\' [\'.$e->getMessage().\']\';'), array_keys($this->namedErrors), array_values($this->namedErrors)) + )); + } + + /** + * Serializes the current instance. + * + * @return string The instance as a serialized string + */ + public function serialize() + { + return serialize(array($this->validator, $this->arguments, $this->code, $this->message, $this->errors, $this->globalErrors, $this->namedErrors)); + } + + /** + * Unserializes a sfValidatorError instance. + * + * @param string $serialized A serialized sfValidatorError instance + * + */ + public function unserialize($serialized) + { + list($this->validator, $this->arguments, $this->code, $this->message, $this->errors, $this->globalErrors, $this->namedErrors) = unserialize($serialized); + } +} diff --git a/lib/vendor/symfony/lib/validator/sfValidatorFile.class.php b/lib/vendor/symfony/lib/validator/sfValidatorFile.class.php new file mode 100644 index 0000000..ae6808f --- /dev/null +++ b/lib/vendor/symfony/lib/validator/sfValidatorFile.class.php @@ -0,0 +1,299 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorFile validates an uploaded file. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id: sfValidatorFile.class.php 32836 2011-07-27 07:15:58Z fabien $ + */ +class sfValidatorFile extends sfValidatorBase +{ + /** + * Configures the current validator. + * + * Available options: + * + * * max_size: The maximum file size in bytes (cannot exceed upload_max_filesize in php.ini) + * * mime_types: Allowed mime types array or category (available categories: web_images) + * * mime_type_guessers: An array of mime type guesser PHP callables (must return the mime type or null) + * * mime_categories: An array of mime type categories (web_images is defined by default) + * * path: The path where to save the file - as used by the sfValidatedFile class (optional) + * * validated_file_class: Name of the class that manages the cleaned uploaded file (optional) + * + * There are 3 built-in mime type guessers: + * + * * guessFromFileinfo: Uses the finfo_open() function (from the Fileinfo PECL extension) + * * guessFromMimeContentType: Uses the mime_content_type() function (deprecated) + * * guessFromFileBinary: Uses the file binary (only works on *nix system) + * + * Available error codes: + * + * * max_size + * * mime_types + * * partial + * * no_tmp_dir + * * cant_write + * * extension + * + * @param array $options An array of options + * @param array $messages An array of error messages + * + * @see sfValidatorBase + */ + protected function configure($options = array(), $messages = array()) + { + if (!ini_get('file_uploads')) + { + throw new LogicException(sprintf('Unable to use a file validator as "file_uploads" is disabled in your php.ini file (%s)', get_cfg_var('cfg_file_path'))); + } + + $this->addOption('max_size'); + $this->addOption('mime_types'); + $this->addOption('mime_type_guessers', array( + array($this, 'guessFromFileinfo'), + array($this, 'guessFromMimeContentType'), + array($this, 'guessFromFileBinary'), + )); + $this->addOption('mime_categories', array( + 'web_images' => array( + 'image/jpeg', + 'image/pjpeg', + 'image/png', + 'image/x-png', + 'image/gif', + ))); + $this->addOption('validated_file_class', 'sfValidatedFile'); + $this->addOption('path', null); + + $this->addMessage('max_size', 'File is too large (maximum is %max_size% bytes).'); + $this->addMessage('mime_types', 'Invalid mime type (%mime_type%).'); + $this->addMessage('partial', 'The uploaded file was only partially uploaded.'); + $this->addMessage('no_tmp_dir', 'Missing a temporary folder.'); + $this->addMessage('cant_write', 'Failed to write file to disk.'); + $this->addMessage('extension', 'File upload stopped by extension.'); + } + + /** + * This validator always returns a sfValidatedFile object. + * + * The input value must be an array with the following keys: + * + * * tmp_name: The absolute temporary path to the file + * * name: The original file name (optional) + * * type: The file content type (optional) + * * error: The error code (optional) + * * size: The file size in bytes (optional) + * + * @see sfValidatorBase + */ + protected function doClean($value) + { + if (!is_array($value) || !isset($value['tmp_name'])) + { + throw new sfValidatorError($this, 'invalid', array('value' => (string) $value)); + } + + if (!isset($value['name'])) + { + $value['name'] = ''; + } + + if (!isset($value['error'])) + { + $value['error'] = UPLOAD_ERR_OK; + } + + if (!isset($value['size'])) + { + $value['size'] = filesize($value['tmp_name']); + } + + if (!isset($value['type'])) + { + $value['type'] = 'application/octet-stream'; + } + + switch ($value['error']) + { + case UPLOAD_ERR_INI_SIZE: + $max = ini_get('upload_max_filesize'); + if ($this->getOption('max_size')) + { + $max = min($max, $this->getOption('max_size')); + } + throw new sfValidatorError($this, 'max_size', array('max_size' => $max, 'size' => (int) $value['size'])); + case UPLOAD_ERR_FORM_SIZE: + throw new sfValidatorError($this, 'max_size', array('max_size' => 0, 'size' => (int) $value['size'])); + case UPLOAD_ERR_PARTIAL: + throw new sfValidatorError($this, 'partial'); + case UPLOAD_ERR_NO_TMP_DIR: + throw new sfValidatorError($this, 'no_tmp_dir'); + case UPLOAD_ERR_CANT_WRITE: + throw new sfValidatorError($this, 'cant_write'); + case UPLOAD_ERR_EXTENSION: + throw new sfValidatorError($this, 'extension'); + } + + // check file size + if ($this->hasOption('max_size') && $this->getOption('max_size') < (int) $value['size']) + { + throw new sfValidatorError($this, 'max_size', array('max_size' => $this->getOption('max_size'), 'size' => (int) $value['size'])); + } + + $mimeType = $this->getMimeType((string) $value['tmp_name'], (string) $value['type']); + + // check mime type + if ($this->hasOption('mime_types')) + { + $mimeTypes = is_array($this->getOption('mime_types')) ? $this->getOption('mime_types') : $this->getMimeTypesFromCategory($this->getOption('mime_types')); + if (!in_array($mimeType, array_map('strtolower', $mimeTypes))) + { + throw new sfValidatorError($this, 'mime_types', array('mime_types' => $mimeTypes, 'mime_type' => $mimeType)); + } + } + + $class = $this->getOption('validated_file_class'); + + return new $class($value['name'], $mimeType, $value['tmp_name'], $value['size'], $this->getOption('path')); + } + + /** + * Returns the mime type of a file. + * + * This methods call each mime_type_guessers option callables to + * guess the mime type. + * + * This method always returns a lower-cased string as mime types are case-insensitive + * as per the RFC 2616 (http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.7). + * + * @param string $file The absolute path of a file + * @param string $fallback The default mime type to return if not guessable + * + * @return string The mime type of the file (fallback is returned if not guessable) + */ + protected function getMimeType($file, $fallback) + { + foreach ($this->getOption('mime_type_guessers') as $method) + { + $type = call_user_func($method, $file); + + if (null !== $type && $type !== false) + { + return strtolower($type); + } + } + + return strtolower($fallback); + } + + /** + * Guess the file mime type with PECL Fileinfo extension + * + * @param string $file The absolute path of a file + * + * @return string The mime type of the file (null if not guessable) + */ + protected function guessFromFileinfo($file) + { + if (!function_exists('finfo_open') || !is_readable($file)) + { + return null; + } + + if (!$finfo = new finfo(FILEINFO_MIME)) + { + return null; + } + + $type = $finfo->file($file); + + // remove charset (added as of PHP 5.3) + if (false !== $pos = strpos($type, ';')) + { + $type = substr($type, 0, $pos); + } + + return $type; + } + + /** + * Guess the file mime type with mime_content_type function (deprecated) + * + * @param string $file The absolute path of a file + * + * @return string The mime type of the file (null if not guessable) + */ + protected function guessFromMimeContentType($file) + { + if (!function_exists('mime_content_type') || !is_readable($file)) + { + return null; + } + + return mime_content_type($file); + } + + /** + * Guess the file mime type with the file binary (only available on *nix) + * + * @param string $file The absolute path of a file + * + * @return string The mime type of the file (null if not guessable) + */ + protected function guessFromFileBinary($file) + { + ob_start(); + //need to use --mime instead of -i. see #6641 + passthru(sprintf('file -b --mime %s 2>/dev/null', escapeshellarg($file)), $return); + if ($return > 0) + { + ob_end_clean(); + + return null; + } + $type = trim(ob_get_clean()); + + if (!preg_match('#^([a-z0-9\-]+/[a-z0-9\-.]+)#i', $type, $match)) + { + // it's not a type, but an error message + return null; + } + + return $match[1]; + } + + protected function getMimeTypesFromCategory($category) + { + $categories = $this->getOption('mime_categories'); + + if (!isset($categories[$category])) + { + throw new InvalidArgumentException(sprintf('Invalid mime type category "%s".', $category)); + } + + return $categories[$category]; + } + + /** + * @see sfValidatorBase + */ + protected function isEmpty($value) + { + // empty if the value is not an array + // or if the value comes from PHP with an error of UPLOAD_ERR_NO_FILE + return + (!is_array($value)) + || + (is_array($value) && isset($value['error']) && UPLOAD_ERR_NO_FILE === $value['error']); + } +} diff --git a/lib/vendor/symfony/lib/validator/sfValidatorFromDescription.class.php b/lib/vendor/symfony/lib/validator/sfValidatorFromDescription.class.php new file mode 100644 index 0000000..d50086e --- /dev/null +++ b/lib/vendor/symfony/lib/validator/sfValidatorFromDescription.class.php @@ -0,0 +1,387 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorFromDescription converts a string to a validator. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id: sfValidatorFromDescription.class.php 28700 2010-03-23 11:57:16Z fabien $ + */ +class sfValidatorFromDescription extends sfValidatorDecorator +{ + protected + $tokens = array(), + $string = ''; + + /** + * @see sfValidatorBase + */ + public function __construct($string, $options = array(), $messages = array()) + { + $this->string = $string; + $this->tokens = $this->tokenize($string); + + parent::__construct($options, $messages); + } + + /** + * Returns a PHP representation for the validator. + * + * This PHP representation can be evaled to return the object validator. + * + * This is mainly useful to cache the result of the validator string parsing. + * + * @return string The PHP representation for the validator + */ + public function asPhp() + { + return $this->reduceTokens($this->tokens, 'asPhp'); + } + + /** + * @see sfValidatorDecorator + */ + public function getValidator() + { + if (null === $this->validator) + { + $this->validator = $this->reduceTokens($this->tokens, 'getValidator'); + } + + return $this->validator; + } + + /** + * Tokenizes a validator string to a list of tokens in RPN. + * + * @param string $string A validator string + * + * @return array An array of tokens + */ + protected function tokenize($string) + { + $tokens = array(); + $len = strlen($string); + $i = 0; + while ($i < $len) + { + if (preg_match('/^([a-z0-9_\-]+)\s*(<=|>=|<|>|==|!=)/i', substr($string, $i), $match)) + { + // schema compare validator + $i += strlen($match[0]); + + $leftField = $match[1]; + $operator = $match[2]; + + // arguments (optional) + $arguments = $this->parseArguments($string, $i); + + // rightField + if (!preg_match('/\s*([a-z0-9_\-]+)/', substr($string, $i), $match)) + { + throw new DomainException('Parsing problem.'); + } + + $i += strlen($match[0]); + $rightField = $match[1]; + + $tokens[] = new sfValidatorFDToken('sfValidatorSchemaCompare', array($leftField, $operator, $rightField, $arguments[0], isset($arguments[1]) ? $arguments[1] : array())); + } + else if (preg_match('/^(and|or)/i', substr($string, $i), $match)) + { + // all, any validador + $i += strlen($match[0]); + + // arguments (optional) + $arguments = $this->parseArguments($string, $i); + + $tokens[] = new sfValidatorFDTokenOperator(strtolower($match[1]), $arguments); + } + else if (preg_match('/^(?:([a-z0-9_\-]+)\:)?([a-z0-9_\-]+)/i', substr($string, $i), $match)) + { + // single validator (optionally filtered) + $i += strlen($match[0]); + + $class = 'sfValidator'.$match[2]; + $arguments = $this->parseArguments($string, $i); + $token = new sfValidatorFDToken($class, array($arguments[0], isset($arguments[1]) ? $arguments[1] : array())); + if ($match[1]) + { + $token = new sfValidatorFDTokenFilter($match[1], $token); + } + + $tokens[] = $token; + } + else if ('(' == $string[$i]) + { + $tokens[] = new sfValidatorFDTokenLeftBracket(); + ++$i; + } + else if (')' == $string[$i]) + { + $tokens[] = new sfValidatorFDTokenRightBracket(); + ++$i; + } + else if (in_array($string[$i], array(' ', "\t", "\r", "\n"))) + { + ++$i; + } + else + { + throw new DomainException(sprintf('Unable to parse string (%s).', $string)); + } + } + + return $this->convertInfixToRpn($tokens); + } + + /** + * Parses validator arguments. + * + * @param string $string The string to parse + * @param integer $i The indice to start the parsing + * + * @return array An array of parameters + */ + protected function parseArguments($string, &$i) + { + $len = strlen($string); + + if ($i + 1 > $len || '(' != $string[$i]) + { + return array(array(), array()); + } + + ++$i; + + $args = ''; + $opened = 0; + while ($i < $len) + { + if ('(' == $string[$i]) + { + ++$opened; + } + else if (')' == $string[$i]) + { + if (!$opened) + { + break; + } + + --$opened; + } + + $args .= $string[$i++]; + } + + ++$i; + + return sfYamlInline::load('['.(!$args ? '{}' : $args).']'); + } + + /** + * Converts a token array from an infix notation to a RPN. + * + * @param array $tokens An array of tokens in infix notation + * + * @return array An array of token in RPN + */ + protected function convertInfixToRpn($tokens) + { + $outputStack = array(); + $operatorStack = array(); + $precedences = array('and' => 2, 'or' => 1, '(' => 0); + + // based on the shunting yard algorithm + foreach ($tokens as $token) + { + switch (get_class($token)) + { + case 'sfValidatorFDToken': + $outputStack[] = $token; + break; + case 'sfValidatorFDTokenLeftBracket': + $operatorStack[] = $token; + break; + case 'sfValidatorFDTokenRightBracket': + while (!$operatorStack[count($operatorStack) - 1] instanceof sfValidatorFDTokenLeftBracket) + { + $outputStack[] = array_pop($operatorStack); + } + array_pop($operatorStack); + break; + case 'sfValidatorFDTokenOperator': + while (count($operatorStack) && $precedences[$token->__toString()] <= $precedences[$operatorStack[count($operatorStack) - 1]->__toString()]) + { + $outputStack[] = array_pop($operatorStack); + } + $operatorStack[] = $token; + break; + default: + $outputStack[] = $token; + } + } + + while (count($operatorStack)) + { + $token = array_pop($operatorStack); + if ($token instanceof sfValidatorFDTokenLeftBracket || $token instanceof sfValidatorFDTokenRightBracket) + { + throw new DomainException(sprintf('Uneven parenthesis in string (%s).', $this->string)); + } + + $outputStack[] = $token; + } + + return $outputStack; + } + + /** + * Reduces tokens to a single token and convert it with the given method. + * + * @param array $tokens An array of tokens + * @param string $method The method name to execute on each token + * + * @return mixed A single validator representation + */ + protected function reduceTokens($tokens, $method) + { + if (1 == count($tokens)) + { + return $tokens[0]->$method(); + } + + // reduce to a single validator + while (count($tokens) > 1) + { + $i = 0; + while (isset($tokens[$i]) && !$tokens[$i] instanceof sfValidatorFDTokenOperator) + { + $i++; + } + + $tokens[$i] = $tokens[$i]->$method($tokens[$i - 2], $tokens[$i - 1]); + unset($tokens[$i - 1], $tokens[$i - 2]); + + $tokens = array_values($tokens); + } + + return $tokens[0]; + } +} + +class sfValidatorFDToken +{ + protected + $class, + $arguments; + + public function __construct($class, $arguments = array()) + { + $this->class = $class; + $this->arguments = $arguments; + } + + public function asPhp() + { + return sprintf('new %s(%s)', $this->class, implode(', ', array_map(create_function('$a', 'return var_export($a, true);'), $this->arguments))); + } + + public function getValidator() + { + $reflection = new ReflectionClass($this->class); + + return $reflection->newInstanceArgs($this->arguments); + } +} + +class sfValidatorFDTokenFilter +{ + protected + $field, + $token; + + public function __construct($field, sfValidatorFDToken $token) + { + $this->field = $field; + $this->token = $token; + } + + public function asPhp() + { + return sprintf('new sfValidatorSchemaFilter(\'%s\', %s)', $this->field, $this->token->asPhp()); + } + + public function getValidator() + { + return new sfValidatorSchemaFilter($this->field, $this->token->getValidator()); + } +} + +class sfValidatorFDTokenOperator +{ + protected + $class, + $operator, + $token; + + public function __construct($operator, $arguments = array()) + { + $this->operator = $operator; + $this->arguments = $arguments; + $this->class = 'or' == $operator ? 'sfValidatorOr' : 'sfValidatorAnd'; + } + + public function __toString() + { + return $this->operator; + } + + public function asPhp($tokenLeft, $tokenRight) + { + return sprintf('new %s(array(%s, %s), %s)', + $this->class, + is_object($tokenLeft) && in_array(get_class($tokenLeft), array('sfValidatorFDToken', 'sfValidatorFDTokenFilter')) ? $tokenLeft->asPhp() : $tokenLeft, + is_object($tokenRight) && in_array(get_class($tokenRight), array('sfValidatorFDToken', 'sfValidatorFDTokenFilter')) ? $tokenRight->asPhp() : $tokenRight, + implode(', ', array_map(create_function('$a', 'return var_export($a, true);'), $this->arguments)) + ); + } + + public function getValidator($tokenLeft, $tokenRight) + { + $reflection = new ReflectionClass($this->class); + + $validators = array( + in_array(get_class($tokenLeft), array('sfValidatorFDToken', 'sfValidatorFDTokenFilter')) ? $tokenLeft->getValidator() : $tokenLeft, + in_array(get_class($tokenRight), array('sfValidatorFDToken', 'sfValidatorFDTokenFilter')) ? $tokenRight->getValidator() : $tokenRight, + ); + + return $reflection->newInstanceArgs(array_merge(array($validators), $this->arguments)); + } +} + +class sfValidatorFDTokenLeftBracket +{ + public function __toString() + { + return '('; + } +} + +class sfValidatorFDTokenRightBracket +{ + public function __toString() + { + return ')'; + } +} diff --git a/lib/vendor/symfony/lib/validator/sfValidatorInteger.class.php b/lib/vendor/symfony/lib/validator/sfValidatorInteger.class.php new file mode 100644 index 0000000..f5a303e --- /dev/null +++ b/lib/vendor/symfony/lib/validator/sfValidatorInteger.class.php @@ -0,0 +1,74 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorInteger validates an integer. It also converts the input value to an integer. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id: sfValidatorInteger.class.php 22018 2009-09-14 16:56:28Z fabien $ + */ +class sfValidatorInteger extends sfValidatorBase +{ + /** + * Configures the current validator. + * + * Available options: + * + * * max: The maximum value allowed + * * min: The minimum value allowed + * + * Available error codes: + * + * * max + * * min + * + * @param array $options An array of options + * @param array $messages An array of error messages + * + * @see sfValidatorBase + */ + protected function configure($options = array(), $messages = array()) + { + $this->addMessage('max', '"%value%" must be at most %max%.'); + $this->addMessage('min', '"%value%" must be at least %min%.'); + + $this->addOption('min'); + $this->addOption('max'); + + $this->setMessage('invalid', '"%value%" is not an integer.'); + } + + /** + * @see sfValidatorBase + */ + protected function doClean($value) + { + $clean = intval($value); + + if (strval($clean) != $value) + { + throw new sfValidatorError($this, 'invalid', array('value' => $value)); + } + + if ($this->hasOption('max') && $clean > $this->getOption('max')) + { + throw new sfValidatorError($this, 'max', array('value' => $value, 'max' => $this->getOption('max'))); + } + + if ($this->hasOption('min') && $clean < $this->getOption('min')) + { + throw new sfValidatorError($this, 'min', array('value' => $value, 'min' => $this->getOption('min'))); + } + + return $clean; + } +} diff --git a/lib/vendor/symfony/lib/validator/sfValidatorNumber.class.php b/lib/vendor/symfony/lib/validator/sfValidatorNumber.class.php new file mode 100644 index 0000000..88187f8 --- /dev/null +++ b/lib/vendor/symfony/lib/validator/sfValidatorNumber.class.php @@ -0,0 +1,74 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorNumber validates a number (integer or float). It also converts the input value to a float. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id: sfValidatorNumber.class.php 22018 2009-09-14 16:56:28Z fabien $ + */ +class sfValidatorNumber extends sfValidatorBase +{ + /** + * Configures the current validator. + * + * Available options: + * + * * max: The maximum value allowed + * * min: The minimum value allowed + * + * Available error codes: + * + * * max + * * min + * + * @param array $options An array of options + * @param array $messages An array of error messages + * + * @see sfValidatorBase + */ + protected function configure($options = array(), $messages = array()) + { + $this->addMessage('max', '"%value%" must be at most %max%.'); + $this->addMessage('min', '"%value%" must be at least %min%.'); + + $this->addOption('min'); + $this->addOption('max'); + + $this->setMessage('invalid', '"%value%" is not a number.'); + } + + /** + * @see sfValidatorBase + */ + protected function doClean($value) + { + if (!is_numeric($value)) + { + throw new sfValidatorError($this, 'invalid', array('value' => $value)); + } + + $clean = floatval($value); + + if ($this->hasOption('max') && $clean > $this->getOption('max')) + { + throw new sfValidatorError($this, 'max', array('value' => $value, 'max' => $this->getOption('max'))); + } + + if ($this->hasOption('min') && $clean < $this->getOption('min')) + { + throw new sfValidatorError($this, 'min', array('value' => $value, 'min' => $this->getOption('min'))); + } + + return $clean; + } +} diff --git a/lib/vendor/symfony/lib/validator/sfValidatorOr.class.php b/lib/vendor/symfony/lib/validator/sfValidatorOr.class.php new file mode 100644 index 0000000..6f13fa8 --- /dev/null +++ b/lib/vendor/symfony/lib/validator/sfValidatorOr.class.php @@ -0,0 +1,146 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorOr validates an input value if at least one validator passes. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id: sfValidatorOr.class.php 21908 2009-09-11 12:06:21Z fabien $ + */ +class sfValidatorOr extends sfValidatorBase +{ + protected + $validators = array(); + + /** + * Constructor. + * + * The first argument can be: + * + * * null + * * a sfValidatorBase instance + * * an array of sfValidatorBase instances + * + * @param mixed $validators Initial validators + * @param array $options An array of options + * @param array $messages An array of error messages + * + * @see sfValidatorBase + */ + public function __construct($validators = null, $options = array(), $messages = array()) + { + if ($validators instanceof sfValidatorBase) + { + $this->addValidator($validators); + } + else if (is_array($validators)) + { + foreach ($validators as $validator) + { + $this->addValidator($validator); + } + } + else if (null !== $validators) + { + throw new InvalidArgumentException('sfValidatorOr constructor takes a sfValidatorBase object, or a sfValidatorBase array.'); + } + + parent::__construct($options, $messages); + } + + /** + * @see sfValidatorBase + */ + protected function configure($options = array(), $messages = array()) + { + $this->setMessage('invalid', null); + } + + /** + * Adds a validator. + * + * @param sfValidatorBase $validator An sfValidatorBase instance + */ + public function addValidator(sfValidatorBase $validator) + { + $this->validators[] = $validator; + } + + /** + * Returns an array of the validators. + * + * @return array An array of sfValidatorBase instances + */ + public function getValidators() + { + return $this->validators; + } + + /** + * @see sfValidatorBase + */ + protected function doClean($value) + { + $errors = array(); + foreach ($this->validators as $validator) + { + try + { + return $validator->clean($value); + } + catch (sfValidatorError $e) + { + $errors[] = $e; + } + } + + if ($this->getMessage('invalid')) + { + throw new sfValidatorError($this, 'invalid', array('value' => $value)); + } + + throw new sfValidatorErrorSchema($this, $errors); + } + + /** + * @see sfValidatorBase + */ + public function asString($indent = 0) + { + $validators = ''; + for ($i = 0, $max = count($this->validators); $i < $max; $i++) + { + $validators .= "\n".$this->validators[$i]->asString($indent + 2)."\n"; + + if ($i < $max - 1) + { + $validators .= str_repeat(' ', $indent + 2).'or'; + } + + if ($i == $max - 2) + { + $options = $this->getOptionsWithoutDefaults(); + $messages = $this->getMessagesWithoutDefaults(); + + if ($options || $messages) + { + $validators .= sprintf('(%s%s)', + $options ? sfYamlInline::dump($options) : ($messages ? '{}' : ''), + $messages ? ', '.sfYamlInline::dump($messages) : '' + ); + } + } + } + + return sprintf("%s(%s%s)", str_repeat(' ', $indent), $validators, str_repeat(' ', $indent)); + } +} diff --git a/lib/vendor/symfony/lib/validator/sfValidatorPass.class.php b/lib/vendor/symfony/lib/validator/sfValidatorPass.class.php new file mode 100644 index 0000000..e395679 --- /dev/null +++ b/lib/vendor/symfony/lib/validator/sfValidatorPass.class.php @@ -0,0 +1,36 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorPass is an identity validator. It simply returns the value unmodified. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id: sfValidatorPass.class.php 7902 2008-03-15 13:17:33Z fabien $ + */ +class sfValidatorPass extends sfValidatorBase +{ + /** + * @see sfValidatorBase + */ + public function clean($value) + { + return $this->doClean($value); + } + + /** + * @see sfValidatorBase + */ + protected function doClean($value) + { + return $value; + } +} diff --git a/lib/vendor/symfony/lib/validator/sfValidatorRegex.class.php b/lib/vendor/symfony/lib/validator/sfValidatorRegex.class.php new file mode 100644 index 0000000..15ae0d4 --- /dev/null +++ b/lib/vendor/symfony/lib/validator/sfValidatorRegex.class.php @@ -0,0 +1,74 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorRegex validates a value with a regular expression. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id: sfValidatorRegex.class.php 22149 2009-09-18 14:09:53Z Kris.Wallsmith $ + */ +class sfValidatorRegex extends sfValidatorString +{ + /** + * Configures the current validator. + * + * Available options: + * + * * pattern: A regex pattern compatible with PCRE or {@link sfCallable} that returns one (required) + * * must_match: Whether the regex must match or not (true by default) + * + * @param array $options An array of options + * @param array $messages An array of error messages + * + * @see sfValidatorString + */ + protected function configure($options = array(), $messages = array()) + { + parent::configure($options, $messages); + + $this->addRequiredOption('pattern'); + $this->addOption('must_match', true); + } + + /** + * @see sfValidatorString + */ + protected function doClean($value) + { + $clean = parent::doClean($value); + + $pattern = $this->getPattern(); + + if ( + ($this->getOption('must_match') && !preg_match($pattern, $clean)) + || + (!$this->getOption('must_match') && preg_match($pattern, $clean)) + ) + { + throw new sfValidatorError($this, 'invalid', array('value' => $value)); + } + + return $clean; + } + + /** + * Returns the current validator's regular expression. + * + * @return string + */ + public function getPattern() + { + $pattern = $this->getOption('pattern'); + + return $pattern instanceof sfCallable ? $pattern->call() : $pattern; + } +} diff --git a/lib/vendor/symfony/lib/validator/sfValidatorSchema.class.php b/lib/vendor/symfony/lib/validator/sfValidatorSchema.class.php new file mode 100644 index 0000000..e8fbac7 --- /dev/null +++ b/lib/vendor/symfony/lib/validator/sfValidatorSchema.class.php @@ -0,0 +1,399 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorSchema represents an array of fields. + * + * A field is a named validator. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id: sfValidatorSchema.class.php 22446 2009-09-26 07:55:47Z fabien $ + */ +class sfValidatorSchema extends sfValidatorBase implements ArrayAccess +{ + protected + $fields = array(), + $preValidator = null, + $postValidator = null; + + /** + * Constructor. + * + * The first argument can be: + * + * * null + * * an array of named sfValidatorBase instances + * + * @param mixed $fields Initial fields + * @param array $options An array of options + * @param array $messages An array of error messages + * + * @see sfValidatorBase + */ + public function __construct($fields = null, $options = array(), $messages = array()) + { + if (is_array($fields)) + { + foreach ($fields as $name => $validator) + { + $this[$name] = $validator; + } + } + else if (null !== $fields) + { + throw new InvalidArgumentException('sfValidatorSchema constructor takes an array of sfValidatorBase objects.'); + } + + parent::__construct($options, $messages); + } + + /** + * Configures the validator. + * + * Available options: + * + * * allow_extra_fields: if false, the validator adds an error if extra fields are given in the input array of values (default to false) + * * filter_extra_fields: if true, the validator filters extra fields from the returned array of cleaned values (default to true) + * + * Available error codes: + * + * * extra_fields + * + * @param array $options An array of options + * @param array $messages An array of error messages + * + * @see sfValidatorBase + */ + protected function configure($options = array(), $messages = array()) + { + $this->addOption('allow_extra_fields', false); + $this->addOption('filter_extra_fields', true); + + $this->addMessage('extra_fields', 'Unexpected extra form field named "%field%".'); + $this->addMessage('post_max_size', 'The form submission cannot be processed. It probably means that you have uploaded a file that is too big.'); + } + + /** + * @see sfValidatorBase + */ + public function clean($values) + { + return $this->doClean($values); + } + + /** + * @see sfValidatorBase + */ + protected function doClean($values) + { + if (null === $values) + { + $values = array(); + } + + if (!is_array($values)) + { + throw new InvalidArgumentException('You must pass an array parameter to the clean() method'); + } + + $clean = array(); + $unused = array_keys($this->fields); + $errorSchema = new sfValidatorErrorSchema($this); + + // check that post_max_size has not been reached + if (isset($_SERVER['CONTENT_LENGTH']) && (int) $_SERVER['CONTENT_LENGTH'] > $this->getBytes(ini_get('post_max_size'))) + { + $errorSchema->addError(new sfValidatorError($this, 'post_max_size')); + + throw $errorSchema; + } + + // pre validator + try + { + $this->preClean($values); + } + catch (sfValidatorErrorSchema $e) + { + $errorSchema->addErrors($e); + } + catch (sfValidatorError $e) + { + $errorSchema->addError($e); + } + + // validate given values + foreach ($values as $name => $value) + { + // field exists in our schema? + if (!array_key_exists($name, $this->fields)) + { + if (!$this->options['allow_extra_fields']) + { + $errorSchema->addError(new sfValidatorError($this, 'extra_fields', array('field' => $name))); + } + else if (!$this->options['filter_extra_fields']) + { + $clean[$name] = $value; + } + + continue; + } + + unset($unused[array_search($name, $unused, true)]); + + // validate value + try + { + $clean[$name] = $this->fields[$name]->clean($value); + } + catch (sfValidatorError $e) + { + $clean[$name] = null; + + $errorSchema->addError($e, (string) $name); + } + } + + // are non given values required? + foreach ($unused as $name) + { + // validate value + try + { + $clean[$name] = $this->fields[$name]->clean(null); + } + catch (sfValidatorError $e) + { + $clean[$name] = null; + + $errorSchema->addError($e, (string) $name); + } + } + + // post validator + try + { + $clean = $this->postClean($clean); + } + catch (sfValidatorErrorSchema $e) + { + $errorSchema->addErrors($e); + } + catch (sfValidatorError $e) + { + $errorSchema->addError($e); + } + + if (count($errorSchema)) + { + throw $errorSchema; + } + + return $clean; + } + + /** + * Cleans the input values. + * + * This method is the first validator executed by doClean(). + * + * It executes the validator returned by getPreValidator() + * on the global array of values. + * + * @param array $values The input values + * + * @throws sfValidatorError + */ + public function preClean($values) + { + if (null === $validator = $this->getPreValidator()) + { + return; + } + + $validator->clean($values); + } + + /** + * Cleans the input values. + * + * This method is the last validator executed by doClean(). + * + * It executes the validator returned by getPostValidator() + * on the global array of cleaned values. + * + * @param array $values The input values + * + * @throws sfValidatorError + */ + public function postClean($values) + { + if (null === $validator = $this->getPostValidator()) + { + return $values; + } + + return $validator->clean($values); + } + + /** + * Sets the pre validator. + * + * @param sfValidatorBase $validator An sfValidatorBase instance + * + * @return sfValidatorBase The current validator instance + */ + public function setPreValidator(sfValidatorBase $validator) + { + $this->preValidator = clone $validator; + + return $this; + } + + /** + * Returns the pre validator. + * + * @return sfValidatorBase A sfValidatorBase instance + */ + public function getPreValidator() + { + return $this->preValidator; + } + + /** + * Sets the post validator. + * + * @param sfValidatorBase $validator An sfValidatorBase instance + * + * @return sfValidatorBase The current validator instance + */ + public function setPostValidator(sfValidatorBase $validator) + { + $this->postValidator = clone $validator; + + return $this; + } + + /** + * Returns the post validator. + * + * @return sfValidatorBase An sfValidatorBase instance + */ + public function getPostValidator() + { + return $this->postValidator; + } + + /** + * Returns true if the schema has a field with the given name (implements the ArrayAccess interface). + * + * @param string $name The field name + * + * @return bool true if the schema has a field with the given name, false otherwise + */ + public function offsetExists($name) + { + return isset($this->fields[$name]); + } + + /** + * Gets the field associated with the given name (implements the ArrayAccess interface). + * + * @param string $name The field name + * + * @return sfValidatorBase The sfValidatorBase instance associated with the given name, null if it does not exist + */ + public function offsetGet($name) + { + return isset($this->fields[$name]) ? $this->fields[$name] : null; + } + + /** + * Sets a field (implements the ArrayAccess interface). + * + * @param string $name The field name + * @param sfValidatorBase $validator An sfValidatorBase instance + */ + public function offsetSet($name, $validator) + { + if (!$validator instanceof sfValidatorBase) + { + throw new InvalidArgumentException('A field must be an instance of sfValidatorBase.'); + } + + $this->fields[$name] = clone $validator; + } + + /** + * Removes a field by name (implements the ArrayAccess interface). + * + * @param string $name + */ + public function offsetUnset($name) + { + unset($this->fields[$name]); + } + + /** + * Returns an array of fields. + * + * @return sfValidatorBase An array of sfValidatorBase instances + */ + public function getFields() + { + return $this->fields; + } + + /** + * @see sfValidatorBase + */ + public function asString($indent = 0) + { + throw new Exception('Unable to convert a sfValidatorSchema to string.'); + } + + public function __clone() + { + foreach ($this->fields as $name => $field) + { + $this->fields[$name] = clone $field; + } + + if (null !== $this->preValidator) + { + $this->preValidator = clone $this->preValidator; + } + + if (null !== $this->postValidator) + { + $this->postValidator = clone $this->postValidator; + } + } + + protected function getBytes($value) + { + $value = trim($value); + switch (strtolower($value[strlen($value) - 1])) + { + // The 'G' modifier is available since PHP 5.1.0 + case 'g': + $value *= 1024; + case 'm': + $value *= 1024; + case 'k': + $value *= 1024; + } + + return $value; + } +} diff --git a/lib/vendor/symfony/lib/validator/sfValidatorSchemaCompare.class.php b/lib/vendor/symfony/lib/validator/sfValidatorSchemaCompare.class.php new file mode 100644 index 0000000..a0b17c3 --- /dev/null +++ b/lib/vendor/symfony/lib/validator/sfValidatorSchemaCompare.class.php @@ -0,0 +1,159 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorSchemaCompare compares several values from an array. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id: sfValidatorSchemaCompare.class.php 21908 2009-09-11 12:06:21Z fabien $ + */ +class sfValidatorSchemaCompare extends sfValidatorSchema +{ + const EQUAL = '=='; + const NOT_EQUAL = '!='; + const IDENTICAL = '==='; + const NOT_IDENTICAL = '!=='; + const LESS_THAN = '<'; + const LESS_THAN_EQUAL = '<='; + const GREATER_THAN = '>'; + const GREATER_THAN_EQUAL = '>='; + + /** + * Constructor. + * + * Available options: + * + * * left_field: The left field name + * * operator: The comparison operator + * * self::EQUAL + * * self::NOT_EQUAL + * * self::IDENTICAL + * * self::NOT_IDENTICAL + * * self::LESS_THAN + * * self::LESS_THAN_EQUAL + * * self::GREATER_THAN + * * self::GREATER_THAN_EQUAL + * * right_field: The right field name + * * throw_global_error: Whether to throw a global error (false by default) or an error tied to the left field + * + * @param string $leftField The left field name + * @param string $operator The operator to apply + * @param string $rightField The right field name + * @param array $options An array of options + * @param array $messages An array of error messages + * + * @see sfValidatorBase + */ + public function __construct($leftField, $operator, $rightField, $options = array(), $messages = array()) + { + $this->addOption('left_field', $leftField); + $this->addOption('operator', $operator); + $this->addOption('right_field', $rightField); + + $this->addOption('throw_global_error', false); + + parent::__construct(null, $options, $messages); + } + + /** + * @see sfValidatorBase + */ + protected function doClean($values) + { + if (null === $values) + { + $values = array(); + } + + if (!is_array($values)) + { + throw new InvalidArgumentException('You must pass an array parameter to the clean() method'); + } + + $leftValue = isset($values[$this->getOption('left_field')]) ? $values[$this->getOption('left_field')] : null; + $rightValue = isset($values[$this->getOption('right_field')]) ? $values[$this->getOption('right_field')] : null; + + switch ($this->getOption('operator')) + { + case self::GREATER_THAN: + $valid = $leftValue > $rightValue; + break; + case self::GREATER_THAN_EQUAL: + $valid = $leftValue >= $rightValue; + break; + case self::LESS_THAN: + $valid = $leftValue < $rightValue; + break; + case self::LESS_THAN_EQUAL: + $valid = $leftValue <= $rightValue; + break; + case self::NOT_EQUAL: + $valid = $leftValue != $rightValue; + break; + case self::EQUAL: + $valid = $leftValue == $rightValue; + break; + case self::NOT_IDENTICAL: + $valid = $leftValue !== $rightValue; + break; + case self::IDENTICAL: + $valid = $leftValue === $rightValue; + break; + default: + throw new InvalidArgumentException(sprintf('The operator "%s" does not exist.', $this->getOption('operator'))); + } + + if (!$valid) + { + $error = new sfValidatorError($this, 'invalid', array( + 'left_field' => $leftValue, + 'right_field' => $rightValue, + 'operator' => $this->getOption('operator'), + )); + if ($this->getOption('throw_global_error')) + { + throw $error; + } + + throw new sfValidatorErrorSchema($this, array($this->getOption('left_field') => $error)); + } + + return $values; + } + + /** + * @see sfValidatorBase + */ + public function asString($indent = 0) + { + $options = $this->getOptionsWithoutDefaults(); + $messages = $this->getMessagesWithoutDefaults(); + unset($options['left_field'], $options['operator'], $options['right_field']); + + $arguments = ''; + if ($options || $messages) + { + $arguments = sprintf('(%s%s)', + $options ? sfYamlInline::dump($options) : ($messages ? '{}' : ''), + $messages ? ', '.sfYamlInline::dump($messages) : '' + ); + } + + return sprintf('%s%s %s%s %s', + str_repeat(' ', $indent), + $this->getOption('left_field'), + $this->getOption('operator'), + $arguments, + $this->getOption('right_field') + ); + } +} diff --git a/lib/vendor/symfony/lib/validator/sfValidatorSchemaFilter.class.php b/lib/vendor/symfony/lib/validator/sfValidatorSchemaFilter.class.php new file mode 100644 index 0000000..22697f0 --- /dev/null +++ b/lib/vendor/symfony/lib/validator/sfValidatorSchemaFilter.class.php @@ -0,0 +1,75 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorSchemaFilter executes non schema validator on a schema input value. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id: sfValidatorSchemaFilter.class.php 21908 2009-09-11 12:06:21Z fabien $ + */ +class sfValidatorSchemaFilter extends sfValidatorSchema +{ + /** + * Constructor. + * + * @param string $field The field name + * @param sfValidatorBase $validator The validator + * @param array $options An array of options + * @param array $messages An array of error messages + * + * @see sfValidatorBase + */ + public function __construct($field, sfValidatorBase $validator, $options = array(), $messages = array()) + { + $this->addOption('field', $field); + $this->addOption('validator', $validator); + + parent::__construct(null, $options, $messages); + } + + /** + * @see sfValidatorBase + */ + protected function doClean($values) + { + if (null === $values) + { + $values = array(); + } + + if (!is_array($values)) + { + throw new InvalidArgumentException('You must pass an array parameter to the clean() method'); + } + + $value = isset($values[$this->getOption('field')]) ? $values[$this->getOption('field')] : null; + + try + { + $values[$this->getOption('field')] = $this->getOption('validator')->clean($value); + } + catch (sfValidatorError $error) + { + throw new sfValidatorErrorSchema($this, array($this->getOption('field') => $error)); + } + + return $values; + } + + /** + * @see sfValidatorBase + */ + public function asString($indent = 0) + { + return sprintf('%s%s:%s', str_repeat(' ', $indent), $this->getOption('field'), $this->getOption('validator')->asString(0)); + } +} diff --git a/lib/vendor/symfony/lib/validator/sfValidatorSchemaForEach.class.php b/lib/vendor/symfony/lib/validator/sfValidatorSchemaForEach.class.php new file mode 100644 index 0000000..449f308 --- /dev/null +++ b/lib/vendor/symfony/lib/validator/sfValidatorSchemaForEach.class.php @@ -0,0 +1,49 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorSchemaForEach wraps a validator multiple times in a single validator. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id: sfValidatorSchemaForEach.class.php 9048 2008-05-19 09:11:23Z FabianLange $ + */ +class sfValidatorSchemaForEach extends sfValidatorSchema +{ + /** + * Constructor. + * + * @param sfValidatorBase $validator Initial validator + * @param integer $count The number of times to replicate the validator + * @param array $options An array of options + * @param array $messages An array of error messages + * + * @see sfValidatorBase + */ + public function __construct(sfValidatorBase $validator, $count, $options = array(), $messages = array()) + { + $fields = array(); + for ($i = 0; $i < $count; $i++) + { + $fields[$i] = clone $validator; + } + + parent::__construct($fields, $options, $messages); + } + + /** + * @see sfValidatorBase + */ + public function asString($indent = 0) + { + throw new Exception('Unable to convert a sfValidatorSchemaForEach to string.'); + } +} diff --git a/lib/vendor/symfony/lib/validator/sfValidatorString.class.php b/lib/vendor/symfony/lib/validator/sfValidatorString.class.php new file mode 100644 index 0000000..e5076af --- /dev/null +++ b/lib/vendor/symfony/lib/validator/sfValidatorString.class.php @@ -0,0 +1,71 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorString validates a string. It also converts the input value to a string. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id: sfValidatorString.class.php 12641 2008-11-04 18:22:00Z fabien $ + */ +class sfValidatorString extends sfValidatorBase +{ + /** + * Configures the current validator. + * + * Available options: + * + * * max_length: The maximum length of the string + * * min_length: The minimum length of the string + * + * Available error codes: + * + * * max_length + * * min_length + * + * @param array $options An array of options + * @param array $messages An array of error messages + * + * @see sfValidatorBase + */ + protected function configure($options = array(), $messages = array()) + { + $this->addMessage('max_length', '"%value%" is too long (%max_length% characters max).'); + $this->addMessage('min_length', '"%value%" is too short (%min_length% characters min).'); + + $this->addOption('max_length'); + $this->addOption('min_length'); + + $this->setOption('empty_value', ''); + } + + /** + * @see sfValidatorBase + */ + protected function doClean($value) + { + $clean = (string) $value; + + $length = function_exists('mb_strlen') ? mb_strlen($clean, $this->getCharset()) : strlen($clean); + + if ($this->hasOption('max_length') && $length > $this->getOption('max_length')) + { + throw new sfValidatorError($this, 'max_length', array('value' => $value, 'max_length' => $this->getOption('max_length'))); + } + + if ($this->hasOption('min_length') && $length < $this->getOption('min_length')) + { + throw new sfValidatorError($this, 'min_length', array('value' => $value, 'min_length' => $this->getOption('min_length'))); + } + + return $clean; + } +} diff --git a/lib/vendor/symfony/lib/validator/sfValidatorTime.class.php b/lib/vendor/symfony/lib/validator/sfValidatorTime.class.php new file mode 100644 index 0000000..671a3c1 --- /dev/null +++ b/lib/vendor/symfony/lib/validator/sfValidatorTime.class.php @@ -0,0 +1,151 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorTime validates a time. It also converts the input value to a valid time. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @author Fabian Lange + * @version SVN: $Id: sfValidatorTime.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $ + */ +class sfValidatorTime extends sfValidatorBase +{ + /** + * Configures the current validator. + * + * Available options: + * + * * time_format: A regular expression that dates must match + * * time_output: The format to use when returning a date with time (default to H:i:s) + * * time_format_error: The date format to use when displaying an error for a bad_format error + * + * Available error codes: + * + * * bad_format + * + * @param array $options An array of options + * @param array $messages An array of error messages + * + * @see sfValidatorBase + */ + protected function configure($options = array(), $messages = array()) + { + $this->addMessage('bad_format', '"%value%" does not match the time format (%time_format%).'); + + $this->addOption('time_format', null); + $this->addOption('time_output', 'H:i:s'); + $this->addOption('time_format_error'); + } + + /** + * @see sfValidatorBase + */ + protected function doClean($value) + { + if (is_array($value)) + { + $clean = $this->convertTimeArrayToTimestamp($value); + } + else if ($regex = $this->getOption('time_format')) + { + if (!preg_match($regex, $value, $match)) + { + throw new sfValidatorError($this, 'bad_format', array('value' => $value, 'time_format' => $this->getOption('time_format_error') ? $this->getOption('time_format_error') : $this->getOption('time_format'))); + } + + $clean = $this->convertTimeArrayToTimestamp($match); + } + else if (!ctype_digit($value)) + { + $clean = strtotime($value); + if (false === $clean) + { + throw new sfValidatorError($this, 'invalid', array('value' => $value)); + } + } + else + { + $clean = (integer) $value; + } + + return $clean === $this->getEmptyValue() ? $clean : date($this->getOption('time_output'), $clean); + } + + /** + * Converts an array representing a time to a timestamp. + * + * The array can contains the following keys: hour, minute, second + * + * @param array $value An array of date elements + * + * @return int A timestamp + */ + protected function convertTimeArrayToTimestamp($value) + { + // all elements must be empty or a number + foreach (array('hour', 'minute', 'second') as $key) + { + if (isset($value[$key]) && !preg_match('#^\d+$#', $value[$key]) && !empty($value[$key])) + { + throw new sfValidatorError($this, 'invalid', array('value' => $value)); + } + } + + // if second is set, minute and hour must be set + // if minute is set, hour must be set + if ( + $this->isValueSet($value, 'second') && (!$this->isValueSet($value, 'minute') || !$this->isValueSet($value, 'hour')) + || + $this->isValueSet($value, 'minute') && !$this->isValueSet($value, 'hour') + ) + { + throw new sfValidatorError($this, 'invalid', array('value' => $value)); + } + + $clean = mktime( + isset($value['hour']) ? intval($value['hour']) : 0, + isset($value['minute']) ? intval($value['minute']) : 0, + isset($value['second']) ? intval($value['second']) : 0 + ); + + if (false === $clean) + { + throw new sfValidatorError($this, 'invalid', array('value' => var_export($value, true))); + } + + return $clean; + } + + protected function isValueSet($values, $key) + { + return isset($values[$key]) && !in_array($values[$key], array(null, ''), true); + } + + /** + * @see sfValidatorBase + */ + protected function isEmpty($value) + { + if (is_array($value)) + { + // array is not empty when a value is found + foreach($value as $key => $val) + { + // int and string '0' are 'empty' values that are explicitly accepted + if ($val === 0 || $val === '0' || !empty($val)) return false; + } + return true; + } + + return parent::isEmpty($value); + } +} diff --git a/lib/vendor/symfony/lib/validator/sfValidatorUrl.class.php b/lib/vendor/symfony/lib/validator/sfValidatorUrl.class.php new file mode 100644 index 0000000..b10f179 --- /dev/null +++ b/lib/vendor/symfony/lib/validator/sfValidatorUrl.class.php @@ -0,0 +1,59 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfValidatorUrl validates Urls. + * + * @package symfony + * @subpackage validator + * @author Fabien Potencier + * @version SVN: $Id: sfValidatorUrl.class.php 22149 2009-09-18 14:09:53Z Kris.Wallsmith $ + */ +class sfValidatorUrl extends sfValidatorRegex +{ + const REGEX_URL_FORMAT = '~^ + (%s):// # protocol + ( + ([a-z0-9-]+\.)+[a-z]{2,6} # a domain name + | # or + \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} # a IP address + ) + (:[0-9]+)? # a port (optional) + (/?|/\S+) # a /, nothing or a / with something + $~ix'; + + /** + * Available options: + * + * * protocols: An array of acceptable URL protocols (http, https, ftp and ftps by default) + * + * @param array $options An array of options + * @param array $messages An array of error messages + * + * @see sfValidatorRegex + */ + protected function configure($options = array(), $messages = array()) + { + parent::configure($options, $messages); + + $this->addOption('protocols', array('http', 'https', 'ftp', 'ftps')); + $this->setOption('pattern', new sfCallable(array($this, 'generateRegex'))); + } + + /** + * Generates the current validator's regular expression. + * + * @return string + */ + public function generateRegex() + { + return sprintf(self::REGEX_URL_FORMAT, implode('|', $this->getOption('protocols'))); + } +} diff --git a/lib/vendor/symfony/lib/vendor/.svn/all-wcprops b/lib/vendor/symfony/lib/vendor/.svn/all-wcprops new file mode 100644 index 0000000..dc7a576 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 39 +/!svn/ver/32677/branches/1.4/lib/vendor +END diff --git a/lib/vendor/symfony/lib/vendor/.svn/dir-prop-base b/lib/vendor/symfony/lib/vendor/.svn/dir-prop-base new file mode 100644 index 0000000..09e52eb --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/.svn/dir-prop-base @@ -0,0 +1,6 @@ +K 13 +svn:externals +V 70 +lime http://svn.symfony-project.com/tools/lime/tags/RELEASE_1_0_9/lib + +END diff --git a/lib/vendor/symfony/lib/vendor/.svn/entries b/lib/vendor/symfony/lib/vendor/.svn/entries new file mode 100644 index 0000000..8aed3f5 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/.svn/entries @@ -0,0 +1,31 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/vendor +http://svn.symfony-project.com + + + +2011-06-29T16:28:46.746816Z +32677 +fabien +has-props + + +svn:externals + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +swiftmailer +dir + diff --git a/lib/vendor/symfony/lib/vendor/lime/.svn/all-wcprops b/lib/vendor/symfony/lib/vendor/lime/.svn/all-wcprops new file mode 100644 index 0000000..a2e0477 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/lime/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 49 +/!svn/ver/29530/tools/lime/tags/RELEASE_1_0_9/lib +END +lime.php +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/29530/tools/lime/tags/RELEASE_1_0_9/lib/lime.php +END diff --git a/lib/vendor/symfony/lib/vendor/lime/.svn/entries b/lib/vendor/symfony/lib/vendor/lime/.svn/entries new file mode 100644 index 0000000..e04cf36 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/lime/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/tools/lime/tags/RELEASE_1_0_9/lib +http://svn.symfony-project.com + + + +2010-05-19T13:41:48.498504Z +29529 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +lime.php +file + + + + +2012-05-10T18:42:20.921549Z +ebc6227b5a82d78454b92f7082d77c7f +2010-05-19T13:41:48.498504Z +29529 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +42324 + diff --git a/lib/vendor/symfony/lib/vendor/lime/.svn/prop-base/lime.php.svn-base b/lib/vendor/symfony/lib/vendor/lime/.svn/prop-base/lime.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/lime/.svn/prop-base/lime.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/vendor/lime/.svn/text-base/lime.php.svn-base b/lib/vendor/symfony/lib/vendor/lime/.svn/text-base/lime.php.svn-base new file mode 100644 index 0000000..8ec250b --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/lime/.svn/text-base/lime.php.svn-base @@ -0,0 +1,1500 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Unit test library. + * + * @package lime + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class lime_test +{ + const EPSILON = 0.0000000001; + + protected $test_nb = 0; + protected $output = null; + protected $results = array(); + protected $options = array(); + + static protected $all_results = array(); + + public function __construct($plan = null, $options = array()) + { + // for BC + if (!is_array($options)) + { + $options = array('output' => $options); + } + + $this->options = array_merge(array( + 'force_colors' => false, + 'output' => null, + 'verbose' => false, + 'error_reporting' => false, + ), $options); + + $this->output = $this->options['output'] ? $this->options['output'] : new lime_output($this->options['force_colors']); + + $caller = $this->find_caller(debug_backtrace()); + self::$all_results[] = array( + 'file' => $caller[0], + 'tests' => array(), + 'stats' => array('plan' => $plan, 'total' => 0, 'failed' => array(), 'passed' => array(), 'skipped' => array(), 'errors' => array()), + ); + + $this->results = &self::$all_results[count(self::$all_results) - 1]; + + null !== $plan and $this->output->echoln(sprintf("1..%d", $plan)); + + set_error_handler(array($this, 'handle_error')); + set_exception_handler(array($this, 'handle_exception')); + } + + static public function reset() + { + self::$all_results = array(); + } + + static public function to_array() + { + return self::$all_results; + } + + static public function to_xml($results = null) + { + if (is_null($results)) + { + $results = self::$all_results; + } + + $dom = new DOMDocument('1.0', 'UTF-8'); + $dom->formatOutput = true; + $dom->appendChild($testsuites = $dom->createElement('testsuites')); + + $errors = 0; + $failures = 0; + $errors = 0; + $skipped = 0; + $assertions = 0; + + foreach ($results as $result) + { + $testsuites->appendChild($testsuite = $dom->createElement('testsuite')); + $testsuite->setAttribute('name', basename($result['file'], '.php')); + $testsuite->setAttribute('file', $result['file']); + $testsuite->setAttribute('failures', count($result['stats']['failed'])); + $testsuite->setAttribute('errors', count($result['stats']['errors'])); + $testsuite->setAttribute('skipped', count($result['stats']['skipped'])); + $testsuite->setAttribute('tests', $result['stats']['plan']); + $testsuite->setAttribute('assertions', $result['stats']['plan']); + + $failures += count($result['stats']['failed']); + $errors += count($result['stats']['errors']); + $skipped += count($result['stats']['skipped']); + $assertions += $result['stats']['plan']; + + foreach ($result['tests'] as $test) + { + $testsuite->appendChild($testcase = $dom->createElement('testcase')); + $testcase->setAttribute('name', $test['message']); + $testcase->setAttribute('file', $test['file']); + $testcase->setAttribute('line', $test['line']); + $testcase->setAttribute('assertions', 1); + if (!$test['status']) + { + $testcase->appendChild($failure = $dom->createElement('failure')); + $failure->setAttribute('type', 'lime'); + if (isset($test['error'])) + { + $failure->appendChild($dom->createTextNode($test['error'])); + } + } + } + } + + $testsuites->setAttribute('failures', $failures); + $testsuites->setAttribute('errors', $errors); + $testsuites->setAttribute('tests', $assertions); + $testsuites->setAttribute('assertions', $assertions); + $testsuites->setAttribute('skipped', $skipped); + + return $dom->saveXml(); + } + + public function __destruct() + { + $plan = $this->results['stats']['plan']; + $passed = count($this->results['stats']['passed']); + $failed = count($this->results['stats']['failed']); + $total = $this->results['stats']['total']; + is_null($plan) and $plan = $total and $this->output->echoln(sprintf("1..%d", $plan)); + + if ($total > $plan) + { + $this->output->red_bar(sprintf("# Looks like you planned %d tests but ran %d extra.", $plan, $total - $plan)); + } + elseif ($total < $plan) + { + $this->output->red_bar(sprintf("# Looks like you planned %d tests but only ran %d.", $plan, $total)); + } + + if ($failed) + { + $this->output->red_bar(sprintf("# Looks like you failed %d tests of %d.", $failed, $passed + $failed)); + } + else if ($total == $plan) + { + $this->output->green_bar("# Looks like everything went fine."); + } + + flush(); + } + + /** + * Tests a condition and passes if it is true + * + * @param mixed $exp condition to test + * @param string $message display output message when the test passes + * + * @return boolean + */ + public function ok($exp, $message = '') + { + $this->update_stats(); + + if ($result = (boolean) $exp) + { + $this->results['stats']['passed'][] = $this->test_nb; + } + else + { + $this->results['stats']['failed'][] = $this->test_nb; + } + $this->results['tests'][$this->test_nb]['message'] = $message; + $this->results['tests'][$this->test_nb]['status'] = $result; + $this->output->echoln(sprintf("%s %d%s", $result ? 'ok' : 'not ok', $this->test_nb, $message = $message ? sprintf('%s %s', 0 === strpos($message, '#') ? '' : ' -', $message) : '')); + + if (!$result) + { + $this->output->diag(sprintf(' Failed test (%s at line %d)', str_replace(getcwd(), '.', $this->results['tests'][$this->test_nb]['file']), $this->results['tests'][$this->test_nb]['line'])); + } + + return $result; + } + + /** + * Compares two values and passes if they are equal (==) + * + * @param mixed $exp1 left value + * @param mixed $exp2 right value + * @param string $message display output message when the test passes + * + * @return boolean + */ + public function is($exp1, $exp2, $message = '') + { + if (is_object($exp1) || is_object($exp2)) + { + $value = $exp1 === $exp2; + } + else if (is_float($exp1) && is_float($exp2)) + { + $value = abs($exp1 - $exp2) < self::EPSILON; + } + else + { + $value = $exp1 == $exp2; + } + + if (!$result = $this->ok($value, $message)) + { + $this->set_last_test_errors(array(sprintf(" got: %s", var_export($exp1, true)), sprintf(" expected: %s", var_export($exp2, true)))); + } + + return $result; + } + + /** + * Compares two values and passes if they are not equal + * + * @param mixed $exp1 left value + * @param mixed $exp2 right value + * @param string $message display output message when the test passes + * + * @return boolean + */ + public function isnt($exp1, $exp2, $message = '') + { + if (!$result = $this->ok($exp1 != $exp2, $message)) + { + $this->set_last_test_errors(array(sprintf(" %s", var_export($exp2, true)), ' ne', sprintf(" %s", var_export($exp2, true)))); + } + + return $result; + } + + /** + * Tests a string against a regular expression + * + * @param string $exp value to test + * @param string $regex the pattern to search for, as a string + * @param string $message display output message when the test passes + * + * @return boolean + */ + public function like($exp, $regex, $message = '') + { + if (!$result = $this->ok(preg_match($regex, $exp), $message)) + { + $this->set_last_test_errors(array(sprintf(" '%s'", $exp), sprintf(" doesn't match '%s'", $regex))); + } + + return $result; + } + + /** + * Checks that a string doesn't match a regular expression + * + * @param string $exp value to test + * @param string $regex the pattern to search for, as a string + * @param string $message display output message when the test passes + * + * @return boolean + */ + public function unlike($exp, $regex, $message = '') + { + if (!$result = $this->ok(!preg_match($regex, $exp), $message)) + { + $this->set_last_test_errors(array(sprintf(" '%s'", $exp), sprintf(" matches '%s'", $regex))); + } + + return $result; + } + + /** + * Compares two arguments with an operator + * + * @param mixed $exp1 left value + * @param string $op operator + * @param mixed $exp2 right value + * @param string $message display output message when the test passes + * + * @return boolean + */ + public function cmp_ok($exp1, $op, $exp2, $message = '') + { + $php = sprintf("\$result = \$exp1 $op \$exp2;"); + // under some unknown conditions the sprintf() call causes a segmentation fault + // when placed directly in the eval() call + eval($php); + + if (!$this->ok($result, $message)) + { + $this->set_last_test_errors(array(sprintf(" %s", str_replace("\n", '', var_export($exp1, true))), sprintf(" %s", $op), sprintf(" %s", str_replace("\n", '', var_export($exp2, true))))); + } + + return $result; + } + + /** + * Checks the availability of a method for an object or a class + * + * @param mixed $object an object instance or a class name + * @param string|array $methods one or more method names + * @param string $message display output message when the test passes + * + * @return boolean + */ + public function can_ok($object, $methods, $message = '') + { + $result = true; + $failed_messages = array(); + foreach ((array) $methods as $method) + { + if (!method_exists($object, $method)) + { + $failed_messages[] = sprintf(" method '%s' does not exist", $method); + $result = false; + } + } + + !$this->ok($result, $message); + + !$result and $this->set_last_test_errors($failed_messages); + + return $result; + } + + /** + * Checks the type of an argument + * + * @param mixed $var variable instance + * @param string $class class or type name + * @param string $message display output message when the test passes + * + * @return boolean + */ + public function isa_ok($var, $class, $message = '') + { + $type = is_object($var) ? get_class($var) : gettype($var); + if (!$result = $this->ok($type == $class, $message)) + { + $this->set_last_test_errors(array(sprintf(" variable isn't a '%s' it's a '%s'", $class, $type))); + } + + return $result; + } + + /** + * Checks that two arrays have the same values + * + * @param mixed $exp1 first variable + * @param mixed $exp2 second variable + * @param string $message display output message when the test passes + * + * @return boolean + */ + public function is_deeply($exp1, $exp2, $message = '') + { + if (!$result = $this->ok($this->test_is_deeply($exp1, $exp2), $message)) + { + $this->set_last_test_errors(array(sprintf(" got: %s", str_replace("\n", '', var_export($exp1, true))), sprintf(" expected: %s", str_replace("\n", '', var_export($exp2, true))))); + } + + return $result; + } + + /** + * Always passes--useful for testing exceptions + * + * @param string $message display output message + * + * @return true + */ + public function pass($message = '') + { + return $this->ok(true, $message); + } + + /** + * Always fails--useful for testing exceptions + * + * @param string $message display output message + * + * @return false + */ + public function fail($message = '') + { + return $this->ok(false, $message); + } + + /** + * Outputs a diag message but runs no test + * + * @param string $message display output message + * + * @return void + */ + public function diag($message) + { + $this->output->diag($message); + } + + /** + * Counts as $nb_tests tests--useful for conditional tests + * + * @param string $message display output message + * @param integer $nb_tests number of tests to skip + * + * @return void + */ + public function skip($message = '', $nb_tests = 1) + { + for ($i = 0; $i < $nb_tests; $i++) + { + $this->pass(sprintf("# SKIP%s", $message ? ' '.$message : '')); + $this->results['stats']['skipped'][] = $this->test_nb; + array_pop($this->results['stats']['passed']); + } + } + + /** + * Counts as a test--useful for tests yet to be written + * + * @param string $message display output message + * + * @return void + */ + public function todo($message = '') + { + $this->pass(sprintf("# TODO%s", $message ? ' '.$message : '')); + $this->results['stats']['skipped'][] = $this->test_nb; + array_pop($this->results['stats']['passed']); + } + + /** + * Validates that a file exists and that it is properly included + * + * @param string $file file path + * @param string $message display output message when the test passes + * + * @return boolean + */ + public function include_ok($file, $message = '') + { + if (!$result = $this->ok((@include($file)) == 1, $message)) + { + $this->set_last_test_errors(array(sprintf(" Tried to include '%s'", $file))); + } + + return $result; + } + + private function test_is_deeply($var1, $var2) + { + if (gettype($var1) != gettype($var2)) + { + return false; + } + + if (is_array($var1)) + { + ksort($var1); + ksort($var2); + + $keys1 = array_keys($var1); + $keys2 = array_keys($var2); + if (array_diff($keys1, $keys2) || array_diff($keys2, $keys1)) + { + return false; + } + $is_equal = true; + foreach ($var1 as $key => $value) + { + $is_equal = $this->test_is_deeply($var1[$key], $var2[$key]); + if ($is_equal === false) + { + break; + } + } + + return $is_equal; + } + else + { + return $var1 === $var2; + } + } + + public function comment($message) + { + $this->output->comment($message); + } + + public function info($message) + { + $this->output->info($message); + } + + public function error($message, $file = null, $line = null, array $traces = array()) + { + $this->output->error($message, $file, $line, $traces); + + $this->results['stats']['errors'][] = array( + 'message' => $message, + 'file' => $file, + 'line' => $line, + ); + } + + protected function update_stats() + { + ++$this->test_nb; + ++$this->results['stats']['total']; + + list($this->results['tests'][$this->test_nb]['file'], $this->results['tests'][$this->test_nb]['line']) = $this->find_caller(debug_backtrace()); + } + + protected function set_last_test_errors(array $errors) + { + $this->output->diag($errors); + + $this->results['tests'][$this->test_nb]['error'] = implode("\n", $errors); + } + + protected function find_caller($traces) + { + // find the first call to a method of an object that is an instance of lime_test + $t = array_reverse($traces); + foreach ($t as $trace) + { + if (isset($trace['object']) && $trace['object'] instanceof lime_test) + { + return array($trace['file'], $trace['line']); + } + } + + // return the first call + $last = count($traces) - 1; + return array($traces[$last]['file'], $traces[$last]['line']); + } + + public function handle_error($code, $message, $file, $line, $context) + { + if (!$this->options['error_reporting'] || ($code & error_reporting()) == 0) + { + return false; + } + + switch ($code) + { + case E_WARNING: + $type = 'Warning'; + break; + default: + $type = 'Notice'; + break; + } + + $trace = debug_backtrace(); + array_shift($trace); // remove the handle_error() call from the trace + + $this->error($type.': '.$message, $file, $line, $trace); + } + + public function handle_exception(Exception $exception) + { + $this->error(get_class($exception).': '.$exception->getMessage(), $exception->getFile(), $exception->getLine(), $exception->getTrace()); + + // exception was handled + return true; + } +} + +class lime_output +{ + public $colorizer = null; + public $base_dir = null; + + public function __construct($force_colors = false, $base_dir = null) + { + $this->colorizer = new lime_colorizer($force_colors); + $this->base_dir = $base_dir === null ? getcwd() : $base_dir; + } + + public function diag() + { + $messages = func_get_args(); + foreach ($messages as $message) + { + echo $this->colorizer->colorize('# '.join("\n# ", (array) $message), 'COMMENT')."\n"; + } + } + + public function comment($message) + { + echo $this->colorizer->colorize(sprintf('# %s', $message), 'COMMENT')."\n"; + } + + public function info($message) + { + echo $this->colorizer->colorize(sprintf('> %s', $message), 'INFO_BAR')."\n"; + } + + public function error($message, $file = null, $line = null, $traces = array()) + { + if ($file !== null) + { + $message .= sprintf("\n(in %s on line %s)", $file, $line); + } + + // some error messages contain absolute file paths + $message = $this->strip_base_dir($message); + + $space = $this->colorizer->colorize(str_repeat(' ', 71), 'RED_BAR')."\n"; + $message = trim($message); + $message = wordwrap($message, 66, "\n"); + + echo "\n".$space; + foreach (explode("\n", $message) as $message_line) + { + echo $this->colorizer->colorize(str_pad(' '.$message_line, 71, ' '), 'RED_BAR')."\n"; + } + echo $space."\n"; + + if (count($traces) > 0) + { + echo $this->colorizer->colorize('Exception trace:', 'COMMENT')."\n"; + + $this->print_trace(null, $file, $line); + + foreach ($traces as $trace) + { + if (array_key_exists('class', $trace)) + { + $method = sprintf('%s%s%s()', $trace['class'], $trace['type'], $trace['function']); + } + else + { + $method = sprintf('%s()', $trace['function']); + } + + if (array_key_exists('file', $trace)) + { + $this->print_trace($method, $trace['file'], $trace['line']); + } + else + { + $this->print_trace($method); + } + } + + echo "\n"; + } + } + + protected function print_trace($method = null, $file = null, $line = null) + { + if (!is_null($method)) + { + $method .= ' '; + } + + echo ' '.$method.'at '; + + if (!is_null($file) && !is_null($line)) + { + printf("%s:%s\n", $this->colorizer->colorize($this->strip_base_dir($file), 'TRACE'), $this->colorizer->colorize($line, 'TRACE')); + } + else + { + echo "[internal function]\n"; + } + } + + public function echoln($message, $colorizer_parameter = null, $colorize = true) + { + if ($colorize) + { + $message = preg_replace('/(?:^|\.)((?:not ok|dubious|errors) *\d*)\b/e', '$this->colorizer->colorize(\'$1\', \'ERROR\')', $message); + $message = preg_replace('/(?:^|\.)(ok *\d*)\b/e', '$this->colorizer->colorize(\'$1\', \'INFO\')', $message); + $message = preg_replace('/"(.+?)"/e', '$this->colorizer->colorize(\'$1\', \'PARAMETER\')', $message); + $message = preg_replace('/(\->|\:\:)?([a-zA-Z0-9_]+?)\(\)/e', '$this->colorizer->colorize(\'$1$2()\', \'PARAMETER\')', $message); + } + + echo ($colorizer_parameter ? $this->colorizer->colorize($message, $colorizer_parameter) : $message)."\n"; + } + + public function green_bar($message) + { + echo $this->colorizer->colorize($message.str_repeat(' ', 71 - min(71, strlen($message))), 'GREEN_BAR')."\n"; + } + + public function red_bar($message) + { + echo $this->colorizer->colorize($message.str_repeat(' ', 71 - min(71, strlen($message))), 'RED_BAR')."\n"; + } + + protected function strip_base_dir($text) + { + return str_replace(DIRECTORY_SEPARATOR, '/', str_replace(realpath($this->base_dir).DIRECTORY_SEPARATOR, '', $text)); + } +} + +class lime_output_color extends lime_output +{ +} + +class lime_colorizer +{ + static public $styles = array(); + + protected $colors_supported = false; + + public function __construct($force_colors = false) + { + if ($force_colors) + { + $this->colors_supported = true; + } + else + { + // colors are supported on windows with ansicon or on tty consoles + if (DIRECTORY_SEPARATOR == '\\') + { + $this->colors_supported = false !== getenv('ANSICON'); + } + else + { + $this->colors_supported = function_exists('posix_isatty') && @posix_isatty(STDOUT); + } + } + } + + public static function style($name, $options = array()) + { + self::$styles[$name] = $options; + } + + public function colorize($text = '', $parameters = array()) + { + + if (!$this->colors_supported) + { + return $text; + } + + static $options = array('bold' => 1, 'underscore' => 4, 'blink' => 5, 'reverse' => 7, 'conceal' => 8); + static $foreground = array('black' => 30, 'red' => 31, 'green' => 32, 'yellow' => 33, 'blue' => 34, 'magenta' => 35, 'cyan' => 36, 'white' => 37); + static $background = array('black' => 40, 'red' => 41, 'green' => 42, 'yellow' => 43, 'blue' => 44, 'magenta' => 45, 'cyan' => 46, 'white' => 47); + + !is_array($parameters) && isset(self::$styles[$parameters]) and $parameters = self::$styles[$parameters]; + + $codes = array(); + isset($parameters['fg']) and $codes[] = $foreground[$parameters['fg']]; + isset($parameters['bg']) and $codes[] = $background[$parameters['bg']]; + foreach ($options as $option => $value) + { + isset($parameters[$option]) && $parameters[$option] and $codes[] = $value; + } + + return "\033[".implode(';', $codes).'m'.$text."\033[0m"; + } +} + +lime_colorizer::style('ERROR', array('bg' => 'red', 'fg' => 'white', 'bold' => true)); +lime_colorizer::style('INFO', array('fg' => 'green', 'bold' => true)); +lime_colorizer::style('TRACE', array('fg' => 'green', 'bold' => true)); +lime_colorizer::style('PARAMETER', array('fg' => 'cyan')); +lime_colorizer::style('COMMENT', array('fg' => 'yellow')); + +lime_colorizer::style('GREEN_BAR', array('fg' => 'white', 'bg' => 'green', 'bold' => true)); +lime_colorizer::style('RED_BAR', array('fg' => 'white', 'bg' => 'red', 'bold' => true)); +lime_colorizer::style('INFO_BAR', array('fg' => 'cyan', 'bold' => true)); + +class lime_harness extends lime_registration +{ + public $options = array(); + public $php_cli = null; + public $stats = array(); + public $output = null; + + public function __construct($options = array()) + { + // for BC + if (!is_array($options)) + { + $options = array('output' => $options); + } + + $this->options = array_merge(array( + 'php_cli' => null, + 'force_colors' => false, + 'output' => null, + 'verbose' => false, + ), $options); + + $this->php_cli = $this->find_php_cli($this->options['php_cli']); + $this->output = $this->options['output'] ? $this->options['output'] : new lime_output($this->options['force_colors']); + } + + protected function find_php_cli($php_cli = null) + { + if (is_null($php_cli)) + { + if (getenv('PHP_PATH')) + { + $php_cli = getenv('PHP_PATH'); + + if (!is_executable($php_cli)) + { + throw new Exception('The defined PHP_PATH environment variable is not a valid PHP executable.'); + } + } + else + { + $php_cli = PHP_BINDIR.DIRECTORY_SEPARATOR.'php'; + } + } + + if (is_executable($php_cli)) + { + return $php_cli; + } + + $path = getenv('PATH') ? getenv('PATH') : getenv('Path'); + $exe_suffixes = DIRECTORY_SEPARATOR == '\\' ? (getenv('PATHEXT') ? explode(PATH_SEPARATOR, getenv('PATHEXT')) : array('.exe', '.bat', '.cmd', '.com')) : array(''); + foreach (array('php5', 'php') as $php_cli) + { + foreach ($exe_suffixes as $suffix) + { + foreach (explode(PATH_SEPARATOR, $path) as $dir) + { + $file = $dir.DIRECTORY_SEPARATOR.$php_cli.$suffix; + if (is_executable($file)) + { + return $file; + } + } + } + } + + throw new Exception("Unable to find PHP executable."); + } + + public function to_array() + { + $results = array(); + foreach ($this->stats['files'] as $file => $stat) + { + $results = array_merge($results, $stat['output']); + } + + return $results; + } + + public function to_xml() + { + return lime_test::to_xml($this->to_array()); + } + + public function run() + { + if (!count($this->files)) + { + throw new Exception('You must register some test files before running them!'); + } + + // sort the files to be able to predict the order + sort($this->files); + + $this->stats = array( + 'files' => array(), + 'failed_files' => array(), + 'failed_tests' => 0, + 'total' => 0, + ); + + foreach ($this->files as $file) + { + $this->stats['files'][$file] = array(); + $stats = &$this->stats['files'][$file]; + + $relative_file = $this->get_relative_file($file); + + $test_file = tempnam(sys_get_temp_dir(), 'lime'); + $result_file = tempnam(sys_get_temp_dir(), 'lime'); + file_put_contents($test_file, <<&1', escapeshellarg($this->php_cli), escapeshellarg($test_file)), $return); + ob_end_clean(); + unlink($test_file); + + $output = file_get_contents($result_file); + $stats['output'] = $output ? unserialize($output) : ''; + if (!$stats['output']) + { + $stats['output'] = array(array('file' => $file, 'tests' => array(), 'stats' => array('plan' => 1, 'total' => 1, 'failed' => array(0), 'passed' => array(), 'skipped' => array(), 'errors' => array()))); + } + unlink($result_file); + + $file_stats = &$stats['output'][0]['stats']; + + $delta = 0; + if ($return > 0) + { + $stats['status'] = $file_stats['errors'] ? 'errors' : 'dubious'; + $stats['status_code'] = $return; + } + else + { + $this->stats['total'] += $file_stats['total']; + + if (!$file_stats['plan']) + { + $file_stats['plan'] = $file_stats['total']; + } + + $delta = $file_stats['plan'] - $file_stats['total']; + if (0 != $delta) + { + $stats['status'] = $file_stats['errors'] ? 'errors' : 'dubious'; + $stats['status_code'] = 255; + } + else + { + $stats['status'] = $file_stats['failed'] ? 'not ok' : ($file_stats['errors'] ? 'errors' : 'ok'); + $stats['status_code'] = 0; + } + } + + $this->output->echoln(sprintf('%s%s%s', substr($relative_file, -min(67, strlen($relative_file))), str_repeat('.', 70 - min(67, strlen($relative_file))), $stats['status'])); + + if ('dubious' == $stats['status']) + { + $this->output->echoln(sprintf(' Test returned status %s', $stats['status_code'])); + } + + if ('ok' != $stats['status']) + { + $this->stats['failed_files'][] = $file; + } + + if ($delta > 0) + { + $this->output->echoln(sprintf(' Looks like you planned %d tests but only ran %d.', $file_stats['plan'], $file_stats['total'])); + + $this->stats['failed_tests'] += $delta; + $this->stats['total'] += $delta; + } + else if ($delta < 0) + { + $this->output->echoln(sprintf(' Looks like you planned %s test but ran %s extra.', $file_stats['plan'], $file_stats['total'] - $file_stats['plan'])); + } + + if (false !== $file_stats && $file_stats['failed']) + { + $this->stats['failed_tests'] += count($file_stats['failed']); + + $this->output->echoln(sprintf(" Failed tests: %s", implode(', ', $file_stats['failed']))); + } + + if (false !== $file_stats && $file_stats['errors']) + { + $this->output->echoln(' Errors:'); + + $error_count = count($file_stats['errors']); + for ($i = 0; $i < 3 && $i < $error_count; ++$i) + { + $this->output->echoln(' - ' . $file_stats['errors'][$i]['message'], null, false); + } + if ($error_count > 3) + { + $this->output->echoln(sprintf(' ... and %s more', $error_count-3)); + } + } + } + + if (count($this->stats['failed_files'])) + { + $format = "%-30s %4s %5s %5s %5s %s"; + $this->output->echoln(sprintf($format, 'Failed Test', 'Stat', 'Total', 'Fail', 'Errors', 'List of Failed')); + $this->output->echoln("--------------------------------------------------------------------------"); + foreach ($this->stats['files'] as $file => $stat) + { + if (!in_array($file, $this->stats['failed_files'])) + { + continue; + } + $relative_file = $this->get_relative_file($file); + + if (isset($stat['output'][0])) + { + $this->output->echoln(sprintf($format, substr($relative_file, -min(30, strlen($relative_file))), $stat['status_code'], count($stat['output'][0]['stats']['failed']) + count($stat['output'][0]['stats']['passed']), count($stat['output'][0]['stats']['failed']), count($stat['output'][0]['stats']['errors']), implode(' ', $stat['output'][0]['stats']['failed']))); + } + else + { + $this->output->echoln(sprintf($format, substr($relative_file, -min(30, strlen($relative_file))), $stat['status_code'], '', '', '')); + } + } + + $this->output->red_bar(sprintf('Failed %d/%d test scripts, %.2f%% okay. %d/%d subtests failed, %.2f%% okay.', + $nb_failed_files = count($this->stats['failed_files']), + $nb_files = count($this->files), + ($nb_files - $nb_failed_files) * 100 / $nb_files, + $nb_failed_tests = $this->stats['failed_tests'], + $nb_tests = $this->stats['total'], + $nb_tests > 0 ? ($nb_tests - $nb_failed_tests) * 100 / $nb_tests : 0 + )); + + if ($this->options['verbose']) + { + foreach ($this->to_array() as $testsuite) + { + $first = true; + foreach ($testsuite['stats']['failed'] as $testcase) + { + if (!isset($testsuite['tests'][$testcase]['file'])) + { + continue; + } + + if ($first) + { + $this->output->echoln(''); + $this->output->error($this->get_relative_file($testsuite['file']).$this->extension); + $first = false; + } + + $this->output->comment(sprintf(' at %s line %s', $this->get_relative_file($testsuite['tests'][$testcase]['file']).$this->extension, $testsuite['tests'][$testcase]['line'])); + $this->output->info(' '.$testsuite['tests'][$testcase]['message']); + $this->output->echoln($testsuite['tests'][$testcase]['error'], null, false); + } + } + } + } + else + { + $this->output->green_bar(' All tests successful.'); + $this->output->green_bar(sprintf(' Files=%d, Tests=%d', count($this->files), $this->stats['total'])); + } + + return $this->stats['failed_files'] ? false : true; + } + + public function get_failed_files() + { + return isset($this->stats['failed_files']) ? $this->stats['failed_files'] : array(); + } +} + +class lime_coverage extends lime_registration +{ + public $files = array(); + public $extension = '.php'; + public $base_dir = ''; + public $harness = null; + public $verbose = false; + protected $coverage = array(); + + public function __construct($harness) + { + $this->harness = $harness; + + if (!function_exists('xdebug_start_code_coverage')) + { + throw new Exception('You must install and enable xdebug before using lime coverage.'); + } + + if (!ini_get('xdebug.extended_info')) + { + throw new Exception('You must set xdebug.extended_info to 1 in your php.ini to use lime coverage.'); + } + } + + public function run() + { + if (!count($this->harness->files)) + { + throw new Exception('You must register some test files before running coverage!'); + } + + if (!count($this->files)) + { + throw new Exception('You must register some files to cover!'); + } + + $this->coverage = array(); + + $this->process($this->harness->files); + + $this->output($this->files); + } + + public function process($files) + { + if (!is_array($files)) + { + $files = array($files); + } + + $tmp_file = sys_get_temp_dir().DIRECTORY_SEPARATOR.'test.php'; + foreach ($files as $file) + { + $tmp = <<'.serialize(xdebug_get_code_coverage()).''; +EOF; + file_put_contents($tmp_file, $tmp); + ob_start(); + // see http://trac.symfony-project.org/ticket/5437 for the explanation on the weird "cd" thing + passthru(sprintf('cd & %s %s 2>&1', escapeshellarg($this->harness->php_cli), escapeshellarg($tmp_file)), $return); + $retval = ob_get_clean(); + + if (0 != $return) // test exited without success + { + // something may have gone wrong, we should warn the user so they know + // it's a bug in their code and not symfony's + + $this->harness->output->echoln(sprintf('Warning: %s returned status %d, results may be inaccurate', $file, $return), 'ERROR'); + } + + if (false === $cov = @unserialize(substr($retval, strpos($retval, '') + 9, strpos($retval, '') - 9))) + { + if (0 == $return) + { + // failed to serialize, but PHP said it should of worked. + // something is seriously wrong, so abort with exception + throw new Exception(sprintf('Unable to unserialize coverage for file "%s"', $file)); + } + else + { + // failed to serialize, but PHP warned us that this might have happened. + // so we should ignore and move on + continue; // continue foreach loop through $this->harness->files + } + } + + foreach ($cov as $file => $lines) + { + if (!isset($this->coverage[$file])) + { + $this->coverage[$file] = $lines; + continue; + } + + foreach ($lines as $line => $flag) + { + if ($flag == 1) + { + $this->coverage[$file][$line] = 1; + } + } + } + } + + if (file_exists($tmp_file)) + { + unlink($tmp_file); + } + } + + public function output($files) + { + ksort($this->coverage); + $total_php_lines = 0; + $total_covered_lines = 0; + foreach ($files as $file) + { + $file = realpath($file); + $is_covered = isset($this->coverage[$file]); + $cov = isset($this->coverage[$file]) ? $this->coverage[$file] : array(); + $covered_lines = array(); + $missing_lines = array(); + + foreach ($cov as $line => $flag) + { + switch ($flag) + { + case 1: + $covered_lines[] = $line; + break; + case -1: + $missing_lines[] = $line; + break; + } + } + + $total_lines = count($covered_lines) + count($missing_lines); + if (!$total_lines) + { + // probably means that the file is not covered at all! + $total_lines = count($this->get_php_lines(file_get_contents($file))); + } + + $output = $this->harness->output; + $percent = $total_lines ? count($covered_lines) * 100 / $total_lines : 0; + + $total_php_lines += $total_lines; + $total_covered_lines += count($covered_lines); + + $relative_file = $this->get_relative_file($file); + $output->echoln(sprintf("%-70s %3.0f%%", substr($relative_file, -min(70, strlen($relative_file))), $percent), $percent == 100 ? 'INFO' : ($percent > 90 ? 'PARAMETER' : ($percent < 20 ? 'ERROR' : ''))); + if ($this->verbose && $is_covered && $percent != 100) + { + $output->comment(sprintf("missing: %s", $this->format_range($missing_lines))); + } + } + + $output->echoln(sprintf("TOTAL COVERAGE: %3.0f%%", $total_php_lines ? $total_covered_lines * 100 / $total_php_lines : 0)); + } + + public static function get_php_lines($content) + { + if (is_readable($content)) + { + $content = file_get_contents($content); + } + + $tokens = token_get_all($content); + $php_lines = array(); + $current_line = 1; + $in_class = false; + $in_function = false; + $in_function_declaration = false; + $end_of_current_expr = true; + $open_braces = 0; + foreach ($tokens as $token) + { + if (is_string($token)) + { + switch ($token) + { + case '=': + if (false === $in_class || (false !== $in_function && !$in_function_declaration)) + { + $php_lines[$current_line] = true; + } + break; + case '{': + ++$open_braces; + $in_function_declaration = false; + break; + case ';': + $in_function_declaration = false; + $end_of_current_expr = true; + break; + case '}': + $end_of_current_expr = true; + --$open_braces; + if ($open_braces == $in_class) + { + $in_class = false; + } + if ($open_braces == $in_function) + { + $in_function = false; + } + break; + } + + continue; + } + + list($id, $text) = $token; + + switch ($id) + { + case T_CURLY_OPEN: + case T_DOLLAR_OPEN_CURLY_BRACES: + ++$open_braces; + break; + case T_WHITESPACE: + case T_OPEN_TAG: + case T_CLOSE_TAG: + $end_of_current_expr = true; + $current_line += count(explode("\n", $text)) - 1; + break; + case T_COMMENT: + case T_DOC_COMMENT: + $current_line += count(explode("\n", $text)) - 1; + break; + case T_CLASS: + $in_class = $open_braces; + break; + case T_FUNCTION: + $in_function = $open_braces; + $in_function_declaration = true; + break; + case T_AND_EQUAL: + case T_BREAK: + case T_CASE: + case T_CATCH: + case T_CLONE: + case T_CONCAT_EQUAL: + case T_CONTINUE: + case T_DEC: + case T_DECLARE: + case T_DEFAULT: + case T_DIV_EQUAL: + case T_DO: + case T_ECHO: + case T_ELSEIF: + case T_EMPTY: + case T_ENDDECLARE: + case T_ENDFOR: + case T_ENDFOREACH: + case T_ENDIF: + case T_ENDSWITCH: + case T_ENDWHILE: + case T_EVAL: + case T_EXIT: + case T_FOR: + case T_FOREACH: + case T_GLOBAL: + case T_IF: + case T_INC: + case T_INCLUDE: + case T_INCLUDE_ONCE: + case T_INSTANCEOF: + case T_ISSET: + case T_IS_EQUAL: + case T_IS_GREATER_OR_EQUAL: + case T_IS_IDENTICAL: + case T_IS_NOT_EQUAL: + case T_IS_NOT_IDENTICAL: + case T_IS_SMALLER_OR_EQUAL: + case T_LIST: + case T_LOGICAL_AND: + case T_LOGICAL_OR: + case T_LOGICAL_XOR: + case T_MINUS_EQUAL: + case T_MOD_EQUAL: + case T_MUL_EQUAL: + case T_NEW: + case T_OBJECT_OPERATOR: + case T_OR_EQUAL: + case T_PLUS_EQUAL: + case T_PRINT: + case T_REQUIRE: + case T_REQUIRE_ONCE: + case T_RETURN: + case T_SL: + case T_SL_EQUAL: + case T_SR: + case T_SR_EQUAL: + case T_SWITCH: + case T_THROW: + case T_TRY: + case T_UNSET: + case T_UNSET_CAST: + case T_USE: + case T_WHILE: + case T_XOR_EQUAL: + $php_lines[$current_line] = true; + $end_of_current_expr = false; + break; + default: + if (false === $end_of_current_expr) + { + $php_lines[$current_line] = true; + } + } + } + + return $php_lines; + } + + public function compute($content, $cov) + { + $php_lines = self::get_php_lines($content); + + // we remove from $cov non php lines + foreach (array_diff_key($cov, $php_lines) as $line => $tmp) + { + unset($cov[$line]); + } + + return array($cov, $php_lines); + } + + public function format_range($lines) + { + sort($lines); + $formatted = ''; + $first = -1; + $last = -1; + foreach ($lines as $line) + { + if ($last + 1 != $line) + { + if ($first != -1) + { + $formatted .= $first == $last ? "$first " : "[$first - $last] "; + } + $first = $line; + $last = $line; + } + else + { + $last = $line; + } + } + if ($first != -1) + { + $formatted .= $first == $last ? "$first " : "[$first - $last] "; + } + + return $formatted; + } +} + +class lime_registration +{ + public $files = array(); + public $extension = '.php'; + public $base_dir = ''; + + public function register($files_or_directories) + { + foreach ((array) $files_or_directories as $f_or_d) + { + if (is_file($f_or_d)) + { + $this->files[] = realpath($f_or_d); + } + elseif (is_dir($f_or_d)) + { + $this->register_dir($f_or_d); + } + else + { + throw new Exception(sprintf('The file or directory "%s" does not exist.', $f_or_d)); + } + } + } + + public function register_glob($glob) + { + if ($dirs = glob($glob)) + { + foreach ($dirs as $file) + { + $this->files[] = realpath($file); + } + } + } + + public function register_dir($directory) + { + if (!is_dir($directory)) + { + throw new Exception(sprintf('The directory "%s" does not exist.', $directory)); + } + + $files = array(); + + $current_dir = opendir($directory); + while ($entry = readdir($current_dir)) + { + if ($entry == '.' || $entry == '..') continue; + + if (is_dir($entry)) + { + $this->register_dir($entry); + } + elseif (preg_match('#'.$this->extension.'$#', $entry)) + { + $files[] = realpath($directory.DIRECTORY_SEPARATOR.$entry); + } + } + + $this->files = array_merge($this->files, $files); + } + + protected function get_relative_file($file) + { + return str_replace(DIRECTORY_SEPARATOR, '/', str_replace(array(realpath($this->base_dir).DIRECTORY_SEPARATOR, $this->extension), '', $file)); + } +} diff --git a/lib/vendor/symfony/lib/vendor/lime/lime.php b/lib/vendor/symfony/lib/vendor/lime/lime.php new file mode 100644 index 0000000..360f2cd --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/lime/lime.php @@ -0,0 +1,1500 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Unit test library. + * + * @package lime + * @author Fabien Potencier + * @version SVN: $Id: lime.php 29529 2010-05-19 13:41:48Z fabien $ + */ +class lime_test +{ + const EPSILON = 0.0000000001; + + protected $test_nb = 0; + protected $output = null; + protected $results = array(); + protected $options = array(); + + static protected $all_results = array(); + + public function __construct($plan = null, $options = array()) + { + // for BC + if (!is_array($options)) + { + $options = array('output' => $options); + } + + $this->options = array_merge(array( + 'force_colors' => false, + 'output' => null, + 'verbose' => false, + 'error_reporting' => false, + ), $options); + + $this->output = $this->options['output'] ? $this->options['output'] : new lime_output($this->options['force_colors']); + + $caller = $this->find_caller(debug_backtrace()); + self::$all_results[] = array( + 'file' => $caller[0], + 'tests' => array(), + 'stats' => array('plan' => $plan, 'total' => 0, 'failed' => array(), 'passed' => array(), 'skipped' => array(), 'errors' => array()), + ); + + $this->results = &self::$all_results[count(self::$all_results) - 1]; + + null !== $plan and $this->output->echoln(sprintf("1..%d", $plan)); + + set_error_handler(array($this, 'handle_error')); + set_exception_handler(array($this, 'handle_exception')); + } + + static public function reset() + { + self::$all_results = array(); + } + + static public function to_array() + { + return self::$all_results; + } + + static public function to_xml($results = null) + { + if (is_null($results)) + { + $results = self::$all_results; + } + + $dom = new DOMDocument('1.0', 'UTF-8'); + $dom->formatOutput = true; + $dom->appendChild($testsuites = $dom->createElement('testsuites')); + + $errors = 0; + $failures = 0; + $errors = 0; + $skipped = 0; + $assertions = 0; + + foreach ($results as $result) + { + $testsuites->appendChild($testsuite = $dom->createElement('testsuite')); + $testsuite->setAttribute('name', basename($result['file'], '.php')); + $testsuite->setAttribute('file', $result['file']); + $testsuite->setAttribute('failures', count($result['stats']['failed'])); + $testsuite->setAttribute('errors', count($result['stats']['errors'])); + $testsuite->setAttribute('skipped', count($result['stats']['skipped'])); + $testsuite->setAttribute('tests', $result['stats']['plan']); + $testsuite->setAttribute('assertions', $result['stats']['plan']); + + $failures += count($result['stats']['failed']); + $errors += count($result['stats']['errors']); + $skipped += count($result['stats']['skipped']); + $assertions += $result['stats']['plan']; + + foreach ($result['tests'] as $test) + { + $testsuite->appendChild($testcase = $dom->createElement('testcase')); + $testcase->setAttribute('name', $test['message']); + $testcase->setAttribute('file', $test['file']); + $testcase->setAttribute('line', $test['line']); + $testcase->setAttribute('assertions', 1); + if (!$test['status']) + { + $testcase->appendChild($failure = $dom->createElement('failure')); + $failure->setAttribute('type', 'lime'); + if (isset($test['error'])) + { + $failure->appendChild($dom->createTextNode($test['error'])); + } + } + } + } + + $testsuites->setAttribute('failures', $failures); + $testsuites->setAttribute('errors', $errors); + $testsuites->setAttribute('tests', $assertions); + $testsuites->setAttribute('assertions', $assertions); + $testsuites->setAttribute('skipped', $skipped); + + return $dom->saveXml(); + } + + public function __destruct() + { + $plan = $this->results['stats']['plan']; + $passed = count($this->results['stats']['passed']); + $failed = count($this->results['stats']['failed']); + $total = $this->results['stats']['total']; + is_null($plan) and $plan = $total and $this->output->echoln(sprintf("1..%d", $plan)); + + if ($total > $plan) + { + $this->output->red_bar(sprintf("# Looks like you planned %d tests but ran %d extra.", $plan, $total - $plan)); + } + elseif ($total < $plan) + { + $this->output->red_bar(sprintf("# Looks like you planned %d tests but only ran %d.", $plan, $total)); + } + + if ($failed) + { + $this->output->red_bar(sprintf("# Looks like you failed %d tests of %d.", $failed, $passed + $failed)); + } + else if ($total == $plan) + { + $this->output->green_bar("# Looks like everything went fine."); + } + + flush(); + } + + /** + * Tests a condition and passes if it is true + * + * @param mixed $exp condition to test + * @param string $message display output message when the test passes + * + * @return boolean + */ + public function ok($exp, $message = '') + { + $this->update_stats(); + + if ($result = (boolean) $exp) + { + $this->results['stats']['passed'][] = $this->test_nb; + } + else + { + $this->results['stats']['failed'][] = $this->test_nb; + } + $this->results['tests'][$this->test_nb]['message'] = $message; + $this->results['tests'][$this->test_nb]['status'] = $result; + $this->output->echoln(sprintf("%s %d%s", $result ? 'ok' : 'not ok', $this->test_nb, $message = $message ? sprintf('%s %s', 0 === strpos($message, '#') ? '' : ' -', $message) : '')); + + if (!$result) + { + $this->output->diag(sprintf(' Failed test (%s at line %d)', str_replace(getcwd(), '.', $this->results['tests'][$this->test_nb]['file']), $this->results['tests'][$this->test_nb]['line'])); + } + + return $result; + } + + /** + * Compares two values and passes if they are equal (==) + * + * @param mixed $exp1 left value + * @param mixed $exp2 right value + * @param string $message display output message when the test passes + * + * @return boolean + */ + public function is($exp1, $exp2, $message = '') + { + if (is_object($exp1) || is_object($exp2)) + { + $value = $exp1 === $exp2; + } + else if (is_float($exp1) && is_float($exp2)) + { + $value = abs($exp1 - $exp2) < self::EPSILON; + } + else + { + $value = $exp1 == $exp2; + } + + if (!$result = $this->ok($value, $message)) + { + $this->set_last_test_errors(array(sprintf(" got: %s", var_export($exp1, true)), sprintf(" expected: %s", var_export($exp2, true)))); + } + + return $result; + } + + /** + * Compares two values and passes if they are not equal + * + * @param mixed $exp1 left value + * @param mixed $exp2 right value + * @param string $message display output message when the test passes + * + * @return boolean + */ + public function isnt($exp1, $exp2, $message = '') + { + if (!$result = $this->ok($exp1 != $exp2, $message)) + { + $this->set_last_test_errors(array(sprintf(" %s", var_export($exp2, true)), ' ne', sprintf(" %s", var_export($exp2, true)))); + } + + return $result; + } + + /** + * Tests a string against a regular expression + * + * @param string $exp value to test + * @param string $regex the pattern to search for, as a string + * @param string $message display output message when the test passes + * + * @return boolean + */ + public function like($exp, $regex, $message = '') + { + if (!$result = $this->ok(preg_match($regex, $exp), $message)) + { + $this->set_last_test_errors(array(sprintf(" '%s'", $exp), sprintf(" doesn't match '%s'", $regex))); + } + + return $result; + } + + /** + * Checks that a string doesn't match a regular expression + * + * @param string $exp value to test + * @param string $regex the pattern to search for, as a string + * @param string $message display output message when the test passes + * + * @return boolean + */ + public function unlike($exp, $regex, $message = '') + { + if (!$result = $this->ok(!preg_match($regex, $exp), $message)) + { + $this->set_last_test_errors(array(sprintf(" '%s'", $exp), sprintf(" matches '%s'", $regex))); + } + + return $result; + } + + /** + * Compares two arguments with an operator + * + * @param mixed $exp1 left value + * @param string $op operator + * @param mixed $exp2 right value + * @param string $message display output message when the test passes + * + * @return boolean + */ + public function cmp_ok($exp1, $op, $exp2, $message = '') + { + $php = sprintf("\$result = \$exp1 $op \$exp2;"); + // under some unknown conditions the sprintf() call causes a segmentation fault + // when placed directly in the eval() call + eval($php); + + if (!$this->ok($result, $message)) + { + $this->set_last_test_errors(array(sprintf(" %s", str_replace("\n", '', var_export($exp1, true))), sprintf(" %s", $op), sprintf(" %s", str_replace("\n", '', var_export($exp2, true))))); + } + + return $result; + } + + /** + * Checks the availability of a method for an object or a class + * + * @param mixed $object an object instance or a class name + * @param string|array $methods one or more method names + * @param string $message display output message when the test passes + * + * @return boolean + */ + public function can_ok($object, $methods, $message = '') + { + $result = true; + $failed_messages = array(); + foreach ((array) $methods as $method) + { + if (!method_exists($object, $method)) + { + $failed_messages[] = sprintf(" method '%s' does not exist", $method); + $result = false; + } + } + + !$this->ok($result, $message); + + !$result and $this->set_last_test_errors($failed_messages); + + return $result; + } + + /** + * Checks the type of an argument + * + * @param mixed $var variable instance + * @param string $class class or type name + * @param string $message display output message when the test passes + * + * @return boolean + */ + public function isa_ok($var, $class, $message = '') + { + $type = is_object($var) ? get_class($var) : gettype($var); + if (!$result = $this->ok($type == $class, $message)) + { + $this->set_last_test_errors(array(sprintf(" variable isn't a '%s' it's a '%s'", $class, $type))); + } + + return $result; + } + + /** + * Checks that two arrays have the same values + * + * @param mixed $exp1 first variable + * @param mixed $exp2 second variable + * @param string $message display output message when the test passes + * + * @return boolean + */ + public function is_deeply($exp1, $exp2, $message = '') + { + if (!$result = $this->ok($this->test_is_deeply($exp1, $exp2), $message)) + { + $this->set_last_test_errors(array(sprintf(" got: %s", str_replace("\n", '', var_export($exp1, true))), sprintf(" expected: %s", str_replace("\n", '', var_export($exp2, true))))); + } + + return $result; + } + + /** + * Always passes--useful for testing exceptions + * + * @param string $message display output message + * + * @return true + */ + public function pass($message = '') + { + return $this->ok(true, $message); + } + + /** + * Always fails--useful for testing exceptions + * + * @param string $message display output message + * + * @return false + */ + public function fail($message = '') + { + return $this->ok(false, $message); + } + + /** + * Outputs a diag message but runs no test + * + * @param string $message display output message + * + * @return void + */ + public function diag($message) + { + $this->output->diag($message); + } + + /** + * Counts as $nb_tests tests--useful for conditional tests + * + * @param string $message display output message + * @param integer $nb_tests number of tests to skip + * + * @return void + */ + public function skip($message = '', $nb_tests = 1) + { + for ($i = 0; $i < $nb_tests; $i++) + { + $this->pass(sprintf("# SKIP%s", $message ? ' '.$message : '')); + $this->results['stats']['skipped'][] = $this->test_nb; + array_pop($this->results['stats']['passed']); + } + } + + /** + * Counts as a test--useful for tests yet to be written + * + * @param string $message display output message + * + * @return void + */ + public function todo($message = '') + { + $this->pass(sprintf("# TODO%s", $message ? ' '.$message : '')); + $this->results['stats']['skipped'][] = $this->test_nb; + array_pop($this->results['stats']['passed']); + } + + /** + * Validates that a file exists and that it is properly included + * + * @param string $file file path + * @param string $message display output message when the test passes + * + * @return boolean + */ + public function include_ok($file, $message = '') + { + if (!$result = $this->ok((@include($file)) == 1, $message)) + { + $this->set_last_test_errors(array(sprintf(" Tried to include '%s'", $file))); + } + + return $result; + } + + private function test_is_deeply($var1, $var2) + { + if (gettype($var1) != gettype($var2)) + { + return false; + } + + if (is_array($var1)) + { + ksort($var1); + ksort($var2); + + $keys1 = array_keys($var1); + $keys2 = array_keys($var2); + if (array_diff($keys1, $keys2) || array_diff($keys2, $keys1)) + { + return false; + } + $is_equal = true; + foreach ($var1 as $key => $value) + { + $is_equal = $this->test_is_deeply($var1[$key], $var2[$key]); + if ($is_equal === false) + { + break; + } + } + + return $is_equal; + } + else + { + return $var1 === $var2; + } + } + + public function comment($message) + { + $this->output->comment($message); + } + + public function info($message) + { + $this->output->info($message); + } + + public function error($message, $file = null, $line = null, array $traces = array()) + { + $this->output->error($message, $file, $line, $traces); + + $this->results['stats']['errors'][] = array( + 'message' => $message, + 'file' => $file, + 'line' => $line, + ); + } + + protected function update_stats() + { + ++$this->test_nb; + ++$this->results['stats']['total']; + + list($this->results['tests'][$this->test_nb]['file'], $this->results['tests'][$this->test_nb]['line']) = $this->find_caller(debug_backtrace()); + } + + protected function set_last_test_errors(array $errors) + { + $this->output->diag($errors); + + $this->results['tests'][$this->test_nb]['error'] = implode("\n", $errors); + } + + protected function find_caller($traces) + { + // find the first call to a method of an object that is an instance of lime_test + $t = array_reverse($traces); + foreach ($t as $trace) + { + if (isset($trace['object']) && $trace['object'] instanceof lime_test) + { + return array($trace['file'], $trace['line']); + } + } + + // return the first call + $last = count($traces) - 1; + return array($traces[$last]['file'], $traces[$last]['line']); + } + + public function handle_error($code, $message, $file, $line, $context) + { + if (!$this->options['error_reporting'] || ($code & error_reporting()) == 0) + { + return false; + } + + switch ($code) + { + case E_WARNING: + $type = 'Warning'; + break; + default: + $type = 'Notice'; + break; + } + + $trace = debug_backtrace(); + array_shift($trace); // remove the handle_error() call from the trace + + $this->error($type.': '.$message, $file, $line, $trace); + } + + public function handle_exception(Exception $exception) + { + $this->error(get_class($exception).': '.$exception->getMessage(), $exception->getFile(), $exception->getLine(), $exception->getTrace()); + + // exception was handled + return true; + } +} + +class lime_output +{ + public $colorizer = null; + public $base_dir = null; + + public function __construct($force_colors = false, $base_dir = null) + { + $this->colorizer = new lime_colorizer($force_colors); + $this->base_dir = $base_dir === null ? getcwd() : $base_dir; + } + + public function diag() + { + $messages = func_get_args(); + foreach ($messages as $message) + { + echo $this->colorizer->colorize('# '.join("\n# ", (array) $message), 'COMMENT')."\n"; + } + } + + public function comment($message) + { + echo $this->colorizer->colorize(sprintf('# %s', $message), 'COMMENT')."\n"; + } + + public function info($message) + { + echo $this->colorizer->colorize(sprintf('> %s', $message), 'INFO_BAR')."\n"; + } + + public function error($message, $file = null, $line = null, $traces = array()) + { + if ($file !== null) + { + $message .= sprintf("\n(in %s on line %s)", $file, $line); + } + + // some error messages contain absolute file paths + $message = $this->strip_base_dir($message); + + $space = $this->colorizer->colorize(str_repeat(' ', 71), 'RED_BAR')."\n"; + $message = trim($message); + $message = wordwrap($message, 66, "\n"); + + echo "\n".$space; + foreach (explode("\n", $message) as $message_line) + { + echo $this->colorizer->colorize(str_pad(' '.$message_line, 71, ' '), 'RED_BAR')."\n"; + } + echo $space."\n"; + + if (count($traces) > 0) + { + echo $this->colorizer->colorize('Exception trace:', 'COMMENT')."\n"; + + $this->print_trace(null, $file, $line); + + foreach ($traces as $trace) + { + if (array_key_exists('class', $trace)) + { + $method = sprintf('%s%s%s()', $trace['class'], $trace['type'], $trace['function']); + } + else + { + $method = sprintf('%s()', $trace['function']); + } + + if (array_key_exists('file', $trace)) + { + $this->print_trace($method, $trace['file'], $trace['line']); + } + else + { + $this->print_trace($method); + } + } + + echo "\n"; + } + } + + protected function print_trace($method = null, $file = null, $line = null) + { + if (!is_null($method)) + { + $method .= ' '; + } + + echo ' '.$method.'at '; + + if (!is_null($file) && !is_null($line)) + { + printf("%s:%s\n", $this->colorizer->colorize($this->strip_base_dir($file), 'TRACE'), $this->colorizer->colorize($line, 'TRACE')); + } + else + { + echo "[internal function]\n"; + } + } + + public function echoln($message, $colorizer_parameter = null, $colorize = true) + { + if ($colorize) + { + $message = preg_replace('/(?:^|\.)((?:not ok|dubious|errors) *\d*)\b/e', '$this->colorizer->colorize(\'$1\', \'ERROR\')', $message); + $message = preg_replace('/(?:^|\.)(ok *\d*)\b/e', '$this->colorizer->colorize(\'$1\', \'INFO\')', $message); + $message = preg_replace('/"(.+?)"/e', '$this->colorizer->colorize(\'$1\', \'PARAMETER\')', $message); + $message = preg_replace('/(\->|\:\:)?([a-zA-Z0-9_]+?)\(\)/e', '$this->colorizer->colorize(\'$1$2()\', \'PARAMETER\')', $message); + } + + echo ($colorizer_parameter ? $this->colorizer->colorize($message, $colorizer_parameter) : $message)."\n"; + } + + public function green_bar($message) + { + echo $this->colorizer->colorize($message.str_repeat(' ', 71 - min(71, strlen($message))), 'GREEN_BAR')."\n"; + } + + public function red_bar($message) + { + echo $this->colorizer->colorize($message.str_repeat(' ', 71 - min(71, strlen($message))), 'RED_BAR')."\n"; + } + + protected function strip_base_dir($text) + { + return str_replace(DIRECTORY_SEPARATOR, '/', str_replace(realpath($this->base_dir).DIRECTORY_SEPARATOR, '', $text)); + } +} + +class lime_output_color extends lime_output +{ +} + +class lime_colorizer +{ + static public $styles = array(); + + protected $colors_supported = false; + + public function __construct($force_colors = false) + { + if ($force_colors) + { + $this->colors_supported = true; + } + else + { + // colors are supported on windows with ansicon or on tty consoles + if (DIRECTORY_SEPARATOR == '\\') + { + $this->colors_supported = false !== getenv('ANSICON'); + } + else + { + $this->colors_supported = function_exists('posix_isatty') && @posix_isatty(STDOUT); + } + } + } + + public static function style($name, $options = array()) + { + self::$styles[$name] = $options; + } + + public function colorize($text = '', $parameters = array()) + { + + if (!$this->colors_supported) + { + return $text; + } + + static $options = array('bold' => 1, 'underscore' => 4, 'blink' => 5, 'reverse' => 7, 'conceal' => 8); + static $foreground = array('black' => 30, 'red' => 31, 'green' => 32, 'yellow' => 33, 'blue' => 34, 'magenta' => 35, 'cyan' => 36, 'white' => 37); + static $background = array('black' => 40, 'red' => 41, 'green' => 42, 'yellow' => 43, 'blue' => 44, 'magenta' => 45, 'cyan' => 46, 'white' => 47); + + !is_array($parameters) && isset(self::$styles[$parameters]) and $parameters = self::$styles[$parameters]; + + $codes = array(); + isset($parameters['fg']) and $codes[] = $foreground[$parameters['fg']]; + isset($parameters['bg']) and $codes[] = $background[$parameters['bg']]; + foreach ($options as $option => $value) + { + isset($parameters[$option]) && $parameters[$option] and $codes[] = $value; + } + + return "\033[".implode(';', $codes).'m'.$text."\033[0m"; + } +} + +lime_colorizer::style('ERROR', array('bg' => 'red', 'fg' => 'white', 'bold' => true)); +lime_colorizer::style('INFO', array('fg' => 'green', 'bold' => true)); +lime_colorizer::style('TRACE', array('fg' => 'green', 'bold' => true)); +lime_colorizer::style('PARAMETER', array('fg' => 'cyan')); +lime_colorizer::style('COMMENT', array('fg' => 'yellow')); + +lime_colorizer::style('GREEN_BAR', array('fg' => 'white', 'bg' => 'green', 'bold' => true)); +lime_colorizer::style('RED_BAR', array('fg' => 'white', 'bg' => 'red', 'bold' => true)); +lime_colorizer::style('INFO_BAR', array('fg' => 'cyan', 'bold' => true)); + +class lime_harness extends lime_registration +{ + public $options = array(); + public $php_cli = null; + public $stats = array(); + public $output = null; + + public function __construct($options = array()) + { + // for BC + if (!is_array($options)) + { + $options = array('output' => $options); + } + + $this->options = array_merge(array( + 'php_cli' => null, + 'force_colors' => false, + 'output' => null, + 'verbose' => false, + ), $options); + + $this->php_cli = $this->find_php_cli($this->options['php_cli']); + $this->output = $this->options['output'] ? $this->options['output'] : new lime_output($this->options['force_colors']); + } + + protected function find_php_cli($php_cli = null) + { + if (is_null($php_cli)) + { + if (getenv('PHP_PATH')) + { + $php_cli = getenv('PHP_PATH'); + + if (!is_executable($php_cli)) + { + throw new Exception('The defined PHP_PATH environment variable is not a valid PHP executable.'); + } + } + else + { + $php_cli = PHP_BINDIR.DIRECTORY_SEPARATOR.'php'; + } + } + + if (is_executable($php_cli)) + { + return $php_cli; + } + + $path = getenv('PATH') ? getenv('PATH') : getenv('Path'); + $exe_suffixes = DIRECTORY_SEPARATOR == '\\' ? (getenv('PATHEXT') ? explode(PATH_SEPARATOR, getenv('PATHEXT')) : array('.exe', '.bat', '.cmd', '.com')) : array(''); + foreach (array('php5', 'php') as $php_cli) + { + foreach ($exe_suffixes as $suffix) + { + foreach (explode(PATH_SEPARATOR, $path) as $dir) + { + $file = $dir.DIRECTORY_SEPARATOR.$php_cli.$suffix; + if (is_executable($file)) + { + return $file; + } + } + } + } + + throw new Exception("Unable to find PHP executable."); + } + + public function to_array() + { + $results = array(); + foreach ($this->stats['files'] as $file => $stat) + { + $results = array_merge($results, $stat['output']); + } + + return $results; + } + + public function to_xml() + { + return lime_test::to_xml($this->to_array()); + } + + public function run() + { + if (!count($this->files)) + { + throw new Exception('You must register some test files before running them!'); + } + + // sort the files to be able to predict the order + sort($this->files); + + $this->stats = array( + 'files' => array(), + 'failed_files' => array(), + 'failed_tests' => 0, + 'total' => 0, + ); + + foreach ($this->files as $file) + { + $this->stats['files'][$file] = array(); + $stats = &$this->stats['files'][$file]; + + $relative_file = $this->get_relative_file($file); + + $test_file = tempnam(sys_get_temp_dir(), 'lime'); + $result_file = tempnam(sys_get_temp_dir(), 'lime'); + file_put_contents($test_file, <<&1', escapeshellarg($this->php_cli), escapeshellarg($test_file)), $return); + ob_end_clean(); + unlink($test_file); + + $output = file_get_contents($result_file); + $stats['output'] = $output ? unserialize($output) : ''; + if (!$stats['output']) + { + $stats['output'] = array(array('file' => $file, 'tests' => array(), 'stats' => array('plan' => 1, 'total' => 1, 'failed' => array(0), 'passed' => array(), 'skipped' => array(), 'errors' => array()))); + } + unlink($result_file); + + $file_stats = &$stats['output'][0]['stats']; + + $delta = 0; + if ($return > 0) + { + $stats['status'] = $file_stats['errors'] ? 'errors' : 'dubious'; + $stats['status_code'] = $return; + } + else + { + $this->stats['total'] += $file_stats['total']; + + if (!$file_stats['plan']) + { + $file_stats['plan'] = $file_stats['total']; + } + + $delta = $file_stats['plan'] - $file_stats['total']; + if (0 != $delta) + { + $stats['status'] = $file_stats['errors'] ? 'errors' : 'dubious'; + $stats['status_code'] = 255; + } + else + { + $stats['status'] = $file_stats['failed'] ? 'not ok' : ($file_stats['errors'] ? 'errors' : 'ok'); + $stats['status_code'] = 0; + } + } + + $this->output->echoln(sprintf('%s%s%s', substr($relative_file, -min(67, strlen($relative_file))), str_repeat('.', 70 - min(67, strlen($relative_file))), $stats['status'])); + + if ('dubious' == $stats['status']) + { + $this->output->echoln(sprintf(' Test returned status %s', $stats['status_code'])); + } + + if ('ok' != $stats['status']) + { + $this->stats['failed_files'][] = $file; + } + + if ($delta > 0) + { + $this->output->echoln(sprintf(' Looks like you planned %d tests but only ran %d.', $file_stats['plan'], $file_stats['total'])); + + $this->stats['failed_tests'] += $delta; + $this->stats['total'] += $delta; + } + else if ($delta < 0) + { + $this->output->echoln(sprintf(' Looks like you planned %s test but ran %s extra.', $file_stats['plan'], $file_stats['total'] - $file_stats['plan'])); + } + + if (false !== $file_stats && $file_stats['failed']) + { + $this->stats['failed_tests'] += count($file_stats['failed']); + + $this->output->echoln(sprintf(" Failed tests: %s", implode(', ', $file_stats['failed']))); + } + + if (false !== $file_stats && $file_stats['errors']) + { + $this->output->echoln(' Errors:'); + + $error_count = count($file_stats['errors']); + for ($i = 0; $i < 3 && $i < $error_count; ++$i) + { + $this->output->echoln(' - ' . $file_stats['errors'][$i]['message'], null, false); + } + if ($error_count > 3) + { + $this->output->echoln(sprintf(' ... and %s more', $error_count-3)); + } + } + } + + if (count($this->stats['failed_files'])) + { + $format = "%-30s %4s %5s %5s %5s %s"; + $this->output->echoln(sprintf($format, 'Failed Test', 'Stat', 'Total', 'Fail', 'Errors', 'List of Failed')); + $this->output->echoln("--------------------------------------------------------------------------"); + foreach ($this->stats['files'] as $file => $stat) + { + if (!in_array($file, $this->stats['failed_files'])) + { + continue; + } + $relative_file = $this->get_relative_file($file); + + if (isset($stat['output'][0])) + { + $this->output->echoln(sprintf($format, substr($relative_file, -min(30, strlen($relative_file))), $stat['status_code'], count($stat['output'][0]['stats']['failed']) + count($stat['output'][0]['stats']['passed']), count($stat['output'][0]['stats']['failed']), count($stat['output'][0]['stats']['errors']), implode(' ', $stat['output'][0]['stats']['failed']))); + } + else + { + $this->output->echoln(sprintf($format, substr($relative_file, -min(30, strlen($relative_file))), $stat['status_code'], '', '', '')); + } + } + + $this->output->red_bar(sprintf('Failed %d/%d test scripts, %.2f%% okay. %d/%d subtests failed, %.2f%% okay.', + $nb_failed_files = count($this->stats['failed_files']), + $nb_files = count($this->files), + ($nb_files - $nb_failed_files) * 100 / $nb_files, + $nb_failed_tests = $this->stats['failed_tests'], + $nb_tests = $this->stats['total'], + $nb_tests > 0 ? ($nb_tests - $nb_failed_tests) * 100 / $nb_tests : 0 + )); + + if ($this->options['verbose']) + { + foreach ($this->to_array() as $testsuite) + { + $first = true; + foreach ($testsuite['stats']['failed'] as $testcase) + { + if (!isset($testsuite['tests'][$testcase]['file'])) + { + continue; + } + + if ($first) + { + $this->output->echoln(''); + $this->output->error($this->get_relative_file($testsuite['file']).$this->extension); + $first = false; + } + + $this->output->comment(sprintf(' at %s line %s', $this->get_relative_file($testsuite['tests'][$testcase]['file']).$this->extension, $testsuite['tests'][$testcase]['line'])); + $this->output->info(' '.$testsuite['tests'][$testcase]['message']); + $this->output->echoln($testsuite['tests'][$testcase]['error'], null, false); + } + } + } + } + else + { + $this->output->green_bar(' All tests successful.'); + $this->output->green_bar(sprintf(' Files=%d, Tests=%d', count($this->files), $this->stats['total'])); + } + + return $this->stats['failed_files'] ? false : true; + } + + public function get_failed_files() + { + return isset($this->stats['failed_files']) ? $this->stats['failed_files'] : array(); + } +} + +class lime_coverage extends lime_registration +{ + public $files = array(); + public $extension = '.php'; + public $base_dir = ''; + public $harness = null; + public $verbose = false; + protected $coverage = array(); + + public function __construct($harness) + { + $this->harness = $harness; + + if (!function_exists('xdebug_start_code_coverage')) + { + throw new Exception('You must install and enable xdebug before using lime coverage.'); + } + + if (!ini_get('xdebug.extended_info')) + { + throw new Exception('You must set xdebug.extended_info to 1 in your php.ini to use lime coverage.'); + } + } + + public function run() + { + if (!count($this->harness->files)) + { + throw new Exception('You must register some test files before running coverage!'); + } + + if (!count($this->files)) + { + throw new Exception('You must register some files to cover!'); + } + + $this->coverage = array(); + + $this->process($this->harness->files); + + $this->output($this->files); + } + + public function process($files) + { + if (!is_array($files)) + { + $files = array($files); + } + + $tmp_file = sys_get_temp_dir().DIRECTORY_SEPARATOR.'test.php'; + foreach ($files as $file) + { + $tmp = <<'.serialize(xdebug_get_code_coverage()).''; +EOF; + file_put_contents($tmp_file, $tmp); + ob_start(); + // see http://trac.symfony-project.org/ticket/5437 for the explanation on the weird "cd" thing + passthru(sprintf('cd & %s %s 2>&1', escapeshellarg($this->harness->php_cli), escapeshellarg($tmp_file)), $return); + $retval = ob_get_clean(); + + if (0 != $return) // test exited without success + { + // something may have gone wrong, we should warn the user so they know + // it's a bug in their code and not symfony's + + $this->harness->output->echoln(sprintf('Warning: %s returned status %d, results may be inaccurate', $file, $return), 'ERROR'); + } + + if (false === $cov = @unserialize(substr($retval, strpos($retval, '') + 9, strpos($retval, '') - 9))) + { + if (0 == $return) + { + // failed to serialize, but PHP said it should of worked. + // something is seriously wrong, so abort with exception + throw new Exception(sprintf('Unable to unserialize coverage for file "%s"', $file)); + } + else + { + // failed to serialize, but PHP warned us that this might have happened. + // so we should ignore and move on + continue; // continue foreach loop through $this->harness->files + } + } + + foreach ($cov as $file => $lines) + { + if (!isset($this->coverage[$file])) + { + $this->coverage[$file] = $lines; + continue; + } + + foreach ($lines as $line => $flag) + { + if ($flag == 1) + { + $this->coverage[$file][$line] = 1; + } + } + } + } + + if (file_exists($tmp_file)) + { + unlink($tmp_file); + } + } + + public function output($files) + { + ksort($this->coverage); + $total_php_lines = 0; + $total_covered_lines = 0; + foreach ($files as $file) + { + $file = realpath($file); + $is_covered = isset($this->coverage[$file]); + $cov = isset($this->coverage[$file]) ? $this->coverage[$file] : array(); + $covered_lines = array(); + $missing_lines = array(); + + foreach ($cov as $line => $flag) + { + switch ($flag) + { + case 1: + $covered_lines[] = $line; + break; + case -1: + $missing_lines[] = $line; + break; + } + } + + $total_lines = count($covered_lines) + count($missing_lines); + if (!$total_lines) + { + // probably means that the file is not covered at all! + $total_lines = count($this->get_php_lines(file_get_contents($file))); + } + + $output = $this->harness->output; + $percent = $total_lines ? count($covered_lines) * 100 / $total_lines : 0; + + $total_php_lines += $total_lines; + $total_covered_lines += count($covered_lines); + + $relative_file = $this->get_relative_file($file); + $output->echoln(sprintf("%-70s %3.0f%%", substr($relative_file, -min(70, strlen($relative_file))), $percent), $percent == 100 ? 'INFO' : ($percent > 90 ? 'PARAMETER' : ($percent < 20 ? 'ERROR' : ''))); + if ($this->verbose && $is_covered && $percent != 100) + { + $output->comment(sprintf("missing: %s", $this->format_range($missing_lines))); + } + } + + $output->echoln(sprintf("TOTAL COVERAGE: %3.0f%%", $total_php_lines ? $total_covered_lines * 100 / $total_php_lines : 0)); + } + + public static function get_php_lines($content) + { + if (is_readable($content)) + { + $content = file_get_contents($content); + } + + $tokens = token_get_all($content); + $php_lines = array(); + $current_line = 1; + $in_class = false; + $in_function = false; + $in_function_declaration = false; + $end_of_current_expr = true; + $open_braces = 0; + foreach ($tokens as $token) + { + if (is_string($token)) + { + switch ($token) + { + case '=': + if (false === $in_class || (false !== $in_function && !$in_function_declaration)) + { + $php_lines[$current_line] = true; + } + break; + case '{': + ++$open_braces; + $in_function_declaration = false; + break; + case ';': + $in_function_declaration = false; + $end_of_current_expr = true; + break; + case '}': + $end_of_current_expr = true; + --$open_braces; + if ($open_braces == $in_class) + { + $in_class = false; + } + if ($open_braces == $in_function) + { + $in_function = false; + } + break; + } + + continue; + } + + list($id, $text) = $token; + + switch ($id) + { + case T_CURLY_OPEN: + case T_DOLLAR_OPEN_CURLY_BRACES: + ++$open_braces; + break; + case T_WHITESPACE: + case T_OPEN_TAG: + case T_CLOSE_TAG: + $end_of_current_expr = true; + $current_line += count(explode("\n", $text)) - 1; + break; + case T_COMMENT: + case T_DOC_COMMENT: + $current_line += count(explode("\n", $text)) - 1; + break; + case T_CLASS: + $in_class = $open_braces; + break; + case T_FUNCTION: + $in_function = $open_braces; + $in_function_declaration = true; + break; + case T_AND_EQUAL: + case T_BREAK: + case T_CASE: + case T_CATCH: + case T_CLONE: + case T_CONCAT_EQUAL: + case T_CONTINUE: + case T_DEC: + case T_DECLARE: + case T_DEFAULT: + case T_DIV_EQUAL: + case T_DO: + case T_ECHO: + case T_ELSEIF: + case T_EMPTY: + case T_ENDDECLARE: + case T_ENDFOR: + case T_ENDFOREACH: + case T_ENDIF: + case T_ENDSWITCH: + case T_ENDWHILE: + case T_EVAL: + case T_EXIT: + case T_FOR: + case T_FOREACH: + case T_GLOBAL: + case T_IF: + case T_INC: + case T_INCLUDE: + case T_INCLUDE_ONCE: + case T_INSTANCEOF: + case T_ISSET: + case T_IS_EQUAL: + case T_IS_GREATER_OR_EQUAL: + case T_IS_IDENTICAL: + case T_IS_NOT_EQUAL: + case T_IS_NOT_IDENTICAL: + case T_IS_SMALLER_OR_EQUAL: + case T_LIST: + case T_LOGICAL_AND: + case T_LOGICAL_OR: + case T_LOGICAL_XOR: + case T_MINUS_EQUAL: + case T_MOD_EQUAL: + case T_MUL_EQUAL: + case T_NEW: + case T_OBJECT_OPERATOR: + case T_OR_EQUAL: + case T_PLUS_EQUAL: + case T_PRINT: + case T_REQUIRE: + case T_REQUIRE_ONCE: + case T_RETURN: + case T_SL: + case T_SL_EQUAL: + case T_SR: + case T_SR_EQUAL: + case T_SWITCH: + case T_THROW: + case T_TRY: + case T_UNSET: + case T_UNSET_CAST: + case T_USE: + case T_WHILE: + case T_XOR_EQUAL: + $php_lines[$current_line] = true; + $end_of_current_expr = false; + break; + default: + if (false === $end_of_current_expr) + { + $php_lines[$current_line] = true; + } + } + } + + return $php_lines; + } + + public function compute($content, $cov) + { + $php_lines = self::get_php_lines($content); + + // we remove from $cov non php lines + foreach (array_diff_key($cov, $php_lines) as $line => $tmp) + { + unset($cov[$line]); + } + + return array($cov, $php_lines); + } + + public function format_range($lines) + { + sort($lines); + $formatted = ''; + $first = -1; + $last = -1; + foreach ($lines as $line) + { + if ($last + 1 != $line) + { + if ($first != -1) + { + $formatted .= $first == $last ? "$first " : "[$first - $last] "; + } + $first = $line; + $last = $line; + } + else + { + $last = $line; + } + } + if ($first != -1) + { + $formatted .= $first == $last ? "$first " : "[$first - $last] "; + } + + return $formatted; + } +} + +class lime_registration +{ + public $files = array(); + public $extension = '.php'; + public $base_dir = ''; + + public function register($files_or_directories) + { + foreach ((array) $files_or_directories as $f_or_d) + { + if (is_file($f_or_d)) + { + $this->files[] = realpath($f_or_d); + } + elseif (is_dir($f_or_d)) + { + $this->register_dir($f_or_d); + } + else + { + throw new Exception(sprintf('The file or directory "%s" does not exist.', $f_or_d)); + } + } + } + + public function register_glob($glob) + { + if ($dirs = glob($glob)) + { + foreach ($dirs as $file) + { + $this->files[] = realpath($file); + } + } + } + + public function register_dir($directory) + { + if (!is_dir($directory)) + { + throw new Exception(sprintf('The directory "%s" does not exist.', $directory)); + } + + $files = array(); + + $current_dir = opendir($directory); + while ($entry = readdir($current_dir)) + { + if ($entry == '.' || $entry == '..') continue; + + if (is_dir($entry)) + { + $this->register_dir($entry); + } + elseif (preg_match('#'.$this->extension.'$#', $entry)) + { + $files[] = realpath($directory.DIRECTORY_SEPARATOR.$entry); + } + } + + $this->files = array_merge($this->files, $files); + } + + protected function get_relative_file($file) + { + return str_replace(DIRECTORY_SEPARATOR, '/', str_replace(array(realpath($this->base_dir).DIRECTORY_SEPARATOR, $this->extension), '', $file)); + } +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/.svn/all-wcprops b/lib/vendor/symfony/lib/vendor/swiftmailer/.svn/all-wcprops new file mode 100644 index 0000000..abd2b8e --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/.svn/all-wcprops @@ -0,0 +1,35 @@ +K 25 +svn:wc:ra_dav:version-url +V 51 +/!svn/ver/32677/branches/1.4/lib/vendor/swiftmailer +END +mime_types.php +K 25 +svn:wc:ra_dav:version-url +V 66 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/mime_types.php +END +swift_required.php +K 25 +svn:wc:ra_dav:version-url +V 70 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/swift_required.php +END +swift_init.php +K 25 +svn:wc:ra_dav:version-url +V 66 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/swift_init.php +END +preferences.php +K 25 +svn:wc:ra_dav:version-url +V 67 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/preferences.php +END +swift_required_pear.php +K 25 +svn:wc:ra_dav:version-url +V 75 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/swift_required_pear.php +END diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/.svn/entries b/lib/vendor/symfony/lib/vendor/swiftmailer/.svn/entries new file mode 100644 index 0000000..eabd89b --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/.svn/entries @@ -0,0 +1,204 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/vendor/swiftmailer +http://svn.symfony-project.com + + + +2011-06-29T16:28:46.746816Z +32677 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +mime_types.php +file + + + + +2012-05-10T18:41:52.909552Z +abb6ccc75d6a59a42cb258da02f90a5c +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + + + + + + + + +2390 + +swift_required.php +file + + + + +2012-05-10T18:41:52.909552Z +c71ce21376f20edfef82741f2cc45b18 +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + + + + + + + + +532 + +swift_init.php +file + + + + +2012-05-10T18:41:52.909552Z +8205b5fea339f39676a7b45b1d55ef0e +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + + + + + + + + +601 + +preferences.php +file + + + + +2012-05-10T18:41:52.913551Z +b701332b421b0c289a5559729e922f7b +2009-09-09T14:12:23.564070Z +21808 +fabien + + + + + + + + + + + + + + + + + + + + + +887 + +swift_required_pear.php +file + + + + +2012-05-10T18:41:53.009710Z +9be56fa84e47172301f350fd6999aa25 +2009-11-10T13:44:02.224175Z +23762 +fabien + + + + + + + + + + + + + + + + + + + + + +524 + +classes +dir + +dependency_maps +dir + diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/.svn/text-base/mime_types.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/.svn/text-base/mime_types.php.svn-base new file mode 100644 index 0000000..65c9aa0 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/.svn/text-base/mime_types.php.svn-base @@ -0,0 +1,76 @@ + 'audio/x-aiff', + 'aiff' => 'audio/x-aiff', + 'avi' => 'video/avi', + 'bmp' => 'image/bmp', + 'bz2' => 'application/x-bz2', + 'csv' => 'text/csv', + 'dmg' => 'application/x-apple-diskimage', + 'doc' => 'application/msword', + 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + 'eml' => 'message/rfc822', + 'aps' => 'application/postscript', + 'exe' => 'application/x-ms-dos-executable', + 'flv' => 'video/x-flv', + 'gif' => 'image/gif', + 'gz' => 'application/x-gzip', + 'hqx' => 'application/stuffit', + 'htm' => 'text/html', + 'html' => 'text/html', + 'jar' => 'application/x-java-archive', + 'jpeg' => 'image/jpeg', + 'jpg' => 'image/jpeg', + 'm3u' => 'audio/x-mpegurl', + 'm4a' => 'audio/mp4', + 'mdb' => 'application/x-msaccess', + 'mid' => 'audio/midi', + 'midi' => 'audio/midi', + 'mov' => 'video/quicktime', + 'mp3' => 'audio/mpeg', + 'mp4' => 'video/mp4', + 'mpeg' => 'video/mpeg', + 'mpg' => 'video/mpeg', + 'odg' => 'vnd.oasis.opendocument.graphics', + 'odp' => 'vnd.oasis.opendocument.presentation', + 'odt' => 'vnd.oasis.opendocument.text', + 'ods' => 'vnd.oasis.opendocument.spreadsheet', + 'ogg' => 'audio/ogg', + 'pdf' => 'application/pdf', + 'png' => 'image/png', + 'ppt' => 'application/vnd.ms-powerpoint', + 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation', + 'ps' => 'application/postscript', + 'rar' => 'application/x-rar-compressed', + 'rtf' => 'application/rtf', + 'tar' => 'application/x-tar', + 'sit' => 'application/x-stuffit', + 'svg' => 'image/svg+xml', + 'tif' => 'image/tiff', + 'tiff' => 'image/tiff', + 'ttf' => 'application/x-font-truetype', + 'txt' => 'text/plain', + 'vcf' => 'text/x-vcard', + 'wav' => 'audio/wav', + 'wma' => 'audio/x-ms-wma', + 'wmv' => 'audio/x-ms-wmv', + 'xls' => 'application/excel', + 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', + 'xml' => 'application/xml', + 'zip' => 'application/zip' +); diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/.svn/text-base/preferences.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/.svn/text-base/preferences.php.svn-base new file mode 100644 index 0000000..0b9e4b1 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/.svn/text-base/preferences.php.svn-base @@ -0,0 +1,20 @@ +setCharset('utf-8'); + +// Without these lines the default caching mechanism is "array" but this uses +// a lot of memory. +// If possible, use a disk cache to enable attaching large attachments etc +if (function_exists('sys_get_temp_dir') && is_writable(sys_get_temp_dir())) +{ + Swift_Preferences::getInstance() + -> setTempDir(sys_get_temp_dir()) + -> setCacheType('disk'); +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/.svn/text-base/swift_init.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/.svn/text-base/swift_init.php.svn-base new file mode 100644 index 0000000..fe624a9 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/.svn/text-base/swift_init.php.svn-base @@ -0,0 +1,21 @@ +createDependenciesFor('mime.attachment') + ); + + $this->setBody($data); + $this->setFilename($filename); + if ($contentType) + { + $this->setContentType($contentType); + } + } + + /** + * Create a new Attachment. + * @param string|Swift_OutputByteStream $data + * @param string $filename + * @param string $contentType + * @return Swift_Mime_Attachment + */ + public static function newInstance($data = null, $filename = null, + $contentType = null) + { + return new self($data, $filename, $contentType); + } + + /** + * Create a new Attachment from a filesystem path. + * @param string $path + * @param string $contentType optional + * @return Swift_Mime_Attachment + */ + public static function fromPath($path, $contentType = null) + { + return self::newInstance()->setFile( + new Swift_ByteStream_FileByteStream($path), + $contentType + ); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/CharacterReader.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/CharacterReader.php.svn-base new file mode 100644 index 0000000..53d39ec --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/CharacterReader.php.svn-base @@ -0,0 +1,60 @@ + + */ +interface Swift_CharacterReader +{ + const MAP_TYPE_INVALID = 0x01; + const MAP_TYPE_FIXED_LEN = 0x02; + const MAP_TYPE_POSITIONS = 0x03; + + /** + * Returns the complete charactermap + * + * @param string $string + * @param int $startOffset + * @param array $currentMap + * @param mixed $ignoredChars + * @return int + */ + public function getCharPositions($string, $startOffset, &$currentMap, &$ignoredChars); + + /** + * Returns mapType + * @int mapType + */ + public function getMapType(); + + /** + * Returns an integer which specifies how many more bytes to read. + * A positive integer indicates the number of more bytes to fetch before invoking + * this method again. + * A value of zero means this is already a valid character. + * A value of -1 means this cannot possibly be a valid character. + * @param int[] $bytes + * @return int + */ + public function validateByteSequence($bytes, $size); + + /** + * Returns the number of bytes which should be read to start each character. + * For fixed width character sets this should be the number of + * octets-per-character. For multibyte character sets this will probably be 1. + * @return int + */ + public function getInitialByteSize(); + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/CharacterReaderFactory.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/CharacterReaderFactory.php.svn-base new file mode 100644 index 0000000..9e01de1 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/CharacterReaderFactory.php.svn-base @@ -0,0 +1,29 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Base class for Spools (implements time and message limits). + * @package Swift + * @author Fabien Potencier + */ +abstract class Swift_ConfigurableSpool implements Swift_Spool +{ + /** The maximum number of messages to send per flush */ + private $_message_limit; + + /** The time limit per flush */ + private $_time_limit; + + /** + * Sets the maximum number of messages to send per flush. + * @param int $limit The limit + */ + public function setMessageLimit($limit) + { + $this->_message_limit = (int) $limit; + } + + /** + * Gets the maximum number of messages to send per flush. + * @return int The limit + */ + public function getMessageLimit() + { + return $this->_message_limit; + } + + /** + * Sets the time limit (in seconds) per flush. + * @param int $limit The limit + */ + public function setTimeLimit($limit) + { + $this->_time_limit = (int) $limit; + } + + /** + * Gets the time limit (in seconds) per flush. + * @return int The limit + */ + public function getTimeLimit() + { + return $this->_time_limit; + } +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/DependencyContainer.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/DependencyContainer.php.svn-base new file mode 100644 index 0000000..b6ba554 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/DependencyContainer.php.svn-base @@ -0,0 +1,349 @@ +_store); + } + + /** + * Test if an item is registered in this container with the given name. + * @param string $itemName + * @return boolean + * @see register() + */ + public function has($itemName) + { + return array_key_exists($itemName, $this->_store) + && isset($this->_store[$itemName]['lookupType']); + } + + /** + * Lookup the item with the given $itemName. + * @param string $itemName + * @return mixed + * @throws Swift_DependencyException If the dependency is not found + * @see register() + */ + public function lookup($itemName) + { + if (!$this->has($itemName)) + { + throw new Swift_DependencyException( + 'Cannot lookup dependency "' . $itemName . '" since it is not registered.' + ); + } + + switch ($this->_store[$itemName]['lookupType']) + { + case self::TYPE_ALIAS: + return $this->_createAlias($itemName); + case self::TYPE_VALUE: + return $this->_getValue($itemName); + case self::TYPE_INSTANCE: + return $this->_createNewInstance($itemName); + case self::TYPE_SHARED: + return $this->_createSharedInstance($itemName); + } + } + + /** + * Create an array of arguments passed to the constructor of $itemName. + * @param string $itemName + * @return array + */ + public function createDependenciesFor($itemName) + { + $args = array(); + if (isset($this->_store[$itemName]['args'])) + { + $args = $this->_resolveArgs($this->_store[$itemName]['args']); + } + return $args; + } + + /** + * Register a new dependency with $itemName. + * This method returns the current DependencyContainer instance because it + * requires the use of the fluid interface to set the specific details for the + * dependency. + * + * @param string $itemName + * @return Swift_DependencyContainer + * @see asNewInstanceOf(), asSharedInstanceOf(), asValue() + */ + public function register($itemName) + { + $this->_store[$itemName] = array(); + $this->_endPoint =& $this->_store[$itemName]; + return $this; + } + + /** + * Specify the previously registered item as a literal value. + * {@link register()} must be called before this will work. + * + * @param mixed $value + * @return Swift_DependencyContainer + */ + public function asValue($value) + { + $endPoint =& $this->_getEndPoint(); + $endPoint['lookupType'] = self::TYPE_VALUE; + $endPoint['value'] = $value; + return $this; + } + + /** + * Specify the previously registered item as an alias of another item. + * @param string $lookup + * @return Swift_DependencyContainer + */ + public function asAliasOf($lookup) + { + $endPoint =& $this->_getEndPoint(); + $endPoint['lookupType'] = self::TYPE_ALIAS; + $endPoint['ref'] = $lookup; + return $this; + } + + /** + * Specify the previously registered item as a new instance of $className. + * {@link register()} must be called before this will work. + * Any arguments can be set with {@link withDependencies()}, + * {@link addConstructorValue()} or {@link addConstructorLookup()}. + * + * @param string $className + * @return Swift_DependencyContainer + * @see withDependencies(), addConstructorValue(), addConstructorLookup() + */ + public function asNewInstanceOf($className) + { + $endPoint =& $this->_getEndPoint(); + $endPoint['lookupType'] = self::TYPE_INSTANCE; + $endPoint['className'] = $className; + return $this; + } + + /** + * Specify the previously registered item as a shared instance of $className. + * {@link register()} must be called before this will work. + * @param string $className + * @return Swift_DependencyContainer + */ + public function asSharedInstanceOf($className) + { + $endPoint =& $this->_getEndPoint(); + $endPoint['lookupType'] = self::TYPE_SHARED; + $endPoint['className'] = $className; + return $this; + } + + /** + * Specify a list of injected dependencies for the previously registered item. + * This method takes an array of lookup names. + * + * @param array $lookups + * @return Swift_DependencyContainer + * @see addConstructorValue(), addConstructorLookup() + */ + public function withDependencies(array $lookups) + { + $endPoint =& $this->_getEndPoint(); + $endPoint['args'] = array(); + foreach ($lookups as $lookup) + { + $this->addConstructorLookup($lookup); + } + return $this; + } + + /** + * Specify a literal (non looked up) value for the constructor of the + * previously registered item. + * + * @param mixed $value + * @return Swift_DependencyContainer + * @see withDependencies(), addConstructorLookup() + */ + public function addConstructorValue($value) + { + $endPoint =& $this->_getEndPoint(); + if (!isset($endPoint['args'])) + { + $endPoint['args'] = array(); + } + $endPoint['args'][] = array('type' => 'value', 'item' => $value); + return $this; + } + + /** + * Specify a dependency lookup for the constructor of the previously + * registered item. + * + * @param string $lookup + * @return Swift_DependencyContainer + * @see withDependencies(), addConstructorValue() + */ + public function addConstructorLookup($lookup) + { + $endPoint =& $this->_getEndPoint(); + if (!isset($this->_endPoint['args'])) + { + $endPoint['args'] = array(); + } + $endPoint['args'][] = array('type' => 'lookup', 'item' => $lookup); + return $this; + } + + // -- Private methods + + /** Get the literal value with $itemName */ + private function _getValue($itemName) + { + return $this->_store[$itemName]['value']; + } + + /** Resolve an alias to another item */ + private function _createAlias($itemName) + { + return $this->lookup($this->_store[$itemName]['ref']); + } + + /** Create a fresh instance of $itemName */ + private function _createNewInstance($itemName) + { + $reflector = new ReflectionClass($this->_store[$itemName]['className']); + if ($reflector->getConstructor()) + { + return $reflector->newInstanceArgs( + $this->createDependenciesFor($itemName) + ); + } + else + { + return $reflector->newInstance(); + } + } + + /** Create and register a shared instance of $itemName */ + private function _createSharedInstance($itemName) + { + if (!isset($this->_store[$itemName]['instance'])) + { + $this->_store[$itemName]['instance'] = $this->_createNewInstance($itemName); + } + return $this->_store[$itemName]['instance']; + } + + /** Get the current endpoint in the store */ + private function &_getEndPoint() + { + if (!isset($this->_endPoint)) + { + throw new BadMethodCallException( + 'Component must first be registered by calling register()' + ); + } + return $this->_endPoint; + } + + /** Get an argument list with dependencies resolved */ + private function _resolveArgs(array $args) + { + $resolved = array(); + foreach ($args as $argDefinition) + { + switch ($argDefinition['type']) + { + case 'lookup': + $resolved[] = $this->_lookupRecursive($argDefinition['item']); + break; + case 'value': + $resolved[] = $argDefinition['item']; + break; + } + } + return $resolved; + } + + /** Resolve a single dependency with an collections */ + private function _lookupRecursive($item) + { + if (is_array($item)) + { + $collection = array(); + foreach ($item as $k => $v) + { + $collection[$k] = $this->_lookupRecursive($v); + } + return $collection; + } + else + { + return $this->lookup($item); + } + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/DependencyException.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/DependencyException.php.svn-base new file mode 100644 index 0000000..bb1681c --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/DependencyException.php.svn-base @@ -0,0 +1,30 @@ +createDependenciesFor('mime.embeddedfile') + ); + + $this->setBody($data); + $this->setFilename($filename); + if ($contentType) + { + $this->setContentType($contentType); + } + } + + /** + * Create a new EmbeddedFile. + * @param string|Swift_OutputByteStream $data + * @param string $filename + * @param string $contentType + * @return Swift_Mime_EmbeddedFile + */ + public static function newInstance($data = null, $filename = null, + $contentType = null) + { + return new self($data, $filename, $contentType); + } + + /** + * Create a new EmbeddedFile from a filesystem path. + * @param string $path + * @return Swift_Mime_EmbeddedFile + */ + public static function fromPath($path) + { + return self::newInstance()->setFile( + new Swift_ByteStream_FileByteStream($path) + ); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/Encoder.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/Encoder.php.svn-base new file mode 100644 index 0000000..32aa96a --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/Encoder.php.svn-base @@ -0,0 +1,32 @@ +lookup($key); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/FailoverTransport.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/FailoverTransport.php.svn-base new file mode 100644 index 0000000..6e6b7a8 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/FailoverTransport.php.svn-base @@ -0,0 +1,48 @@ +createDependenciesFor('transport.failover') + ); + + $this->setTransports($transports); + } + + /** + * Create a new FailoverTransport instance. + * @param string $transports + * @return Swift_FailoverTransport + */ + public static function newInstance($transports = array()) + { + return new self($transports); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/FileSpool.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/FileSpool.php.svn-base new file mode 100644 index 0000000..28c6796 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/FileSpool.php.svn-base @@ -0,0 +1,116 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Stores Messages on the filesystem. + * @package Swift + * @author Fabien Potencier + */ +class Swift_FileSpool extends Swift_ConfigurableSpool +{ + /** The spool directory */ + private $_path; + + /** + * Create a new FileSpool. + * @param string $path + */ + public function __construct($path) + { + $this->_path = $path; + + if (!file_exists($this->_path)) + { + mkdir($this->_path, 0777, true); + } + } + + /** + * Tests if this Spool mechanism has started. + * + * @return boolean + */ + public function isStarted() + { + return true; + } + + /** + * Starts this Spool mechanism. + */ + public function start() + { + } + + /** + * Stops this Spool mechanism. + */ + public function stop() + { + } + + /** + * Queues a message. + * @param Swift_Mime_Message $message The message to store + */ + public function queueMessage(Swift_Mime_Message $message) + { + $ser = serialize($message); + + file_put_contents($this->_path.'/'.md5($ser.uniqid()).'.message', $ser); + } + + /** + * Sends messages using the given transport instance. + * + * @param Swift_Transport $transport A transport instance + * @param string[] &$failedRecipients An array of failures by-reference + * + * @return int The number of sent emails + */ + public function flushQueue(Swift_Transport $transport, &$failedRecipients = null) + { + if (!$transport->isStarted()) + { + $transport->start(); + } + + $failedRecipients = (array) $failedRecipients; + $count = 0; + $time = time(); + foreach (new DirectoryIterator($this->_path) as $file) + { + $file = $file->getRealPath(); + + if (!strpos($file, '.message')) + { + continue; + } + + $message = unserialize(file_get_contents($file)); + + $count += $transport->send($message, $failedRecipients); + + unlink($file); + + if ($this->getMessageLimit() && $count >= $this->getMessageLimit()) + { + break; + } + + if ($this->getTimeLimit() && (time() - $time) >= $this->getTimeLimit()) + { + break; + } + } + + return $count; + } +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/FileStream.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/FileStream.php.svn-base new file mode 100644 index 0000000..a7f894d --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/FileStream.php.svn-base @@ -0,0 +1,28 @@ +setFile( + new Swift_ByteStream_FileByteStream($path) + ); + return $image; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/InputByteStream.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/InputByteStream.php.svn-base new file mode 100644 index 0000000..e8f45f4 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/InputByteStream.php.svn-base @@ -0,0 +1,72 @@ +createDependenciesFor('transport.loadbalanced') + ); + + $this->setTransports($transports); + } + + /** + * Create a new LoadBalancedTransport instance. + * @param string $transports + * @return Swift_LoadBalancedTransport + */ + public static function newInstance($transports = array()) + { + return new self($transports); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/MailTransport.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/MailTransport.php.svn-base new file mode 100644 index 0000000..afe29c6 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/MailTransport.php.svn-base @@ -0,0 +1,48 @@ +createDependenciesFor('transport.mail') + ); + + $this->setExtraParams($extraParams); + } + + /** + * Create a new MailTransport instance. + * @param string $extraParams To be passed to mail() + * @return Swift_MailTransport + */ + public static function newInstance($extraParams = '-f%s') + { + return new self($extraParams); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/Mailer.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/Mailer.php.svn-base new file mode 100644 index 0000000..c92feb4 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/Mailer.php.svn-base @@ -0,0 +1,173 @@ +_transport = $transport; + } + + /** + * Create a new Mailer instance. + * + * @param Swift_Transport $transport + * @return Swift_Mailer + */ + public static function newInstance(Swift_Transport $transport) + { + return new self($transport); + } + + /** + * Send the given Message like it would be sent in a mail client. + * + * All recipients (with the exception of Bcc) will be able to see the other + * recipients this message was sent to. + * + * If you need to send to each recipient without disclosing details about the + * other recipients see {@link batchSend()}. + * + * Recipient/sender data will be retreived from the Message object. + * + * The return value is the number of recipients who were accepted for + * delivery. + * + * @param Swift_Mime_Message $message + * @param array &$failedRecipients, optional + * @return int + * @see batchSend() + */ + public function send(Swift_Mime_Message $message, &$failedRecipients = null) + { + $failedRecipients = (array) $failedRecipients; + + if (!$this->_transport->isStarted()) + { + $this->_transport->start(); + } + + return $this->_transport->send($message, $failedRecipients); + } + + /** + * Send the given Message to all recipients individually. + * + * This differs from {@link send()} in the way headers are presented to the + * recipient. The only recipient in the "To:" field will be the individual + * recipient it was sent to. + * + * If an iterator is provided, recipients will be read from the iterator + * one-by-one, otherwise recipient data will be retreived from the Message + * object. + * + * Sender information is always read from the Message object. + * + * The return value is the number of recipients who were accepted for + * delivery. + * + * @param Swift_Mime_Message $message + * @param array &$failedRecipients, optional + * @param Swift_Mailer_RecipientIterator $it, optional + * @return int + * @see send() + */ + public function batchSend(Swift_Mime_Message $message, + &$failedRecipients = null, + Swift_Mailer_RecipientIterator $it = null) + { + $failedRecipients = (array) $failedRecipients; + + $sent = 0; + $to = $message->getTo(); + $cc = $message->getCc(); + $bcc = $message->getBcc(); + + if (!empty($cc)) + { + $message->setCc(array()); + } + if (!empty($bcc)) + { + $message->setBcc(array()); + } + + //Use an iterator if set + if (isset($it)) + { + while ($it->hasNext()) + { + $message->setTo($it->nextRecipient()); + $sent += $this->send($message, $failedRecipients); + } + } + else + { + foreach ($to as $address => $name) + { + $message->setTo(array($address => $name)); + $sent += $this->send($message, $failedRecipients); + } + } + + $message->setTo($to); + + if (!empty($cc)) + { + $message->setCc($cc); + } + if (!empty($bcc)) + { + $message->setBcc($bcc); + } + + return $sent; + } + + /** + * Register a plugin using a known unique key (e.g. myPlugin). + * + * @param Swift_Events_EventListener $plugin + * @param string $key + */ + public function registerPlugin(Swift_Events_EventListener $plugin) + { + $this->_transport->registerPlugin($plugin); + } + + /** + * The Transport used to send messages. + * @return Swift_Transport + */ + public function getTransport() + { + return $this->_transport; + } +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/Message.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/Message.php.svn-base new file mode 100644 index 0000000..e7d610e --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/Message.php.svn-base @@ -0,0 +1,87 @@ +createDependenciesFor('mime.message') + ); + + if (!isset($charset)) + { + $charset = Swift_DependencyContainer::getInstance() + ->lookup('properties.charset'); + } + $this->setSubject($subject); + $this->setBody($body); + $this->setCharset($charset); + if ($contentType) + { + $this->setContentType($contentType); + } + } + + /** + * Create a new Message. + * @param string $subject + * @param string $body + * @param string $contentType + * @param string $charset + * @return Swift_Mime_Message + */ + public static function newInstance($subject = null, $body = null, + $contentType = null, $charset = null) + { + return new self($subject, $body, $contentType, $charset); + } + + /** + * Add a MimePart to this Message. + * @param string|Swift_OutputByteStream $body + * @param string $contentType + * @param string $charset + */ + public function addPart($body, $contentType = null, $charset = null) + { + return $this->attach(Swift_MimePart::newInstance( + $body, $contentType, $charset + )); + } + + public function __wakeup() + { + Swift_DependencyContainer::getInstance()->createDependenciesFor('mime.message'); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/MimePart.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/MimePart.php.svn-base new file mode 100644 index 0000000..60b6d56 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/MimePart.php.svn-base @@ -0,0 +1,65 @@ +createDependenciesFor('mime.part') + ); + + if (!isset($charset)) + { + $charset = Swift_DependencyContainer::getInstance() + ->lookup('properties.charset'); + } + $this->setBody($body); + $this->setCharset($charset); + if ($contentType) + { + $this->setContentType($contentType); + } + } + + /** + * Create a new MimePart. + * @param string $body + * @param string $contentType + * @param string $charset + * @return Swift_Mime_MimePart + */ + public static function newInstance($body = null, $contentType = null, + $charset = null) + { + return new self($body, $contentType, $charset); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/NullTransport.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/NullTransport.php.svn-base new file mode 100644 index 0000000..8c82ee2 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/NullTransport.php.svn-base @@ -0,0 +1,38 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Pretends messages have been sent, but just ignores them. + * @package Swift + * @author Fabien Potencier + */ +class Swift_NullTransport extends Swift_Transport_NullTransport +{ + /** + * Create a new NullTransport. + */ + public function __construct() + { + call_user_func_array( + array($this, 'Swift_Transport_NullTransport::__construct'), + Swift_DependencyContainer::getInstance() + ->createDependenciesFor('transport.null') + ); + } + + /** + * Create a new NullTransport instance. + * @return Swift_NullTransport + */ + public static function newInstance() + { + return new self(); + } +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/OutputByteStream.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/OutputByteStream.php.svn-base new file mode 100644 index 0000000..951b838 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/OutputByteStream.php.svn-base @@ -0,0 +1,41 @@ +register('properties.charset')->asValue($charset); + return $this; + } + + /** + * Set the directory where temporary files can be saved. + * @param string $dir + * @return Swift_Preferences + */ + public function setTempDir($dir) + { + Swift_DependencyContainer::getInstance() + ->register('tempdir')->asValue($dir); + return $this; + } + + /** + * Set the type of cache to use (i.e. "disk" or "array"). + * @param string $type + * @return Swift_Preferences + */ + public function setCacheType($type) + { + Swift_DependencyContainer::getInstance() + ->register('cache')->asAliasOf(sprintf('cache.%s', $type)); + return $this; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/ReplacementFilterFactory.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/ReplacementFilterFactory.php.svn-base new file mode 100644 index 0000000..db29e6d --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/ReplacementFilterFactory.php.svn-base @@ -0,0 +1,27 @@ +createDependenciesFor('transport.sendmail') + ); + + $this->setCommand($command); + } + + /** + * Create a new SendmailTransport instance. + * @param string $command + * @return Swift_SendmailTransport + */ + public static function newInstance($command = '/usr/sbin/sendmail -bs') + { + return new self($command); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/SmtpTransport.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/SmtpTransport.php.svn-base new file mode 100644 index 0000000..65180d5 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/SmtpTransport.php.svn-base @@ -0,0 +1,56 @@ +createDependenciesFor('transport.smtp') + ); + + $this->setHost($host); + $this->setPort($port); + $this->setEncryption($security); + } + + /** + * Create a new SmtpTransport instance. + * @param string $host + * @param int $port + * @param int $security + * @return Swift_SmtpTransport + */ + public static function newInstance($host = 'localhost', $port = 25, + $security = null) + { + return new self($host, $port, $security); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/Spool.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/Spool.php.svn-base new file mode 100644 index 0000000..6d06709 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/Spool.php.svn-base @@ -0,0 +1,50 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Interface for spools. + * @package Swift + * @author Fabien Potencier + */ +interface Swift_Spool +{ + /** + * Starts this Spool mechanism. + */ + public function start(); + + /** + * Stops this Spool mechanism. + */ + public function stop(); + + /** + * Tests if this Spool mechanism has started. + * + * @return boolean + */ + public function isStarted(); + + /** + * Queues a message. + * @param Swift_Mime_Message $message The message to store + */ + public function queueMessage(Swift_Mime_Message $message); + + /** + * Sends messages using the given transport instance. + * + * @param Swift_Transport $transport A transport instance + * @param string[] &$failedRecipients An array of failures by-reference + * + * @return int The number of sent emails + */ + public function flushQueue(Swift_Transport $transport, &$failedRecipients = null); +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/SpoolTransport.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/SpoolTransport.php.svn-base new file mode 100644 index 0000000..156f9b6 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/SpoolTransport.php.svn-base @@ -0,0 +1,44 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Stores Messages in a queue. + * @package Swift + * @author Fabien Potencier + */ +class Swift_SpoolTransport extends Swift_Transport_SpoolTransport +{ + /** + * Create a new SpoolTransport. + * @param Swift_Spool $spool + */ + public function __construct(Swift_Spool $spool) + { + $arguments = Swift_DependencyContainer::getInstance() + ->createDependenciesFor('transport.spool'); + + $arguments[] = $spool; + + call_user_func_array( + array($this, 'Swift_Transport_SpoolTransport::__construct'), + $arguments + ); + } + + /** + * Create a new SpoolTransport instance. + * @param Swift_Spool $spool + * @return Swift_SpoolTransport + */ + public static function newInstance(Swift_Spool $spool) + { + return new self($spool); + } +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/StreamFilter.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/StreamFilter.php.svn-base new file mode 100644 index 0000000..6c262ce --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/.svn/text-base/StreamFilter.php.svn-base @@ -0,0 +1,33 @@ +createDependenciesFor('mime.attachment') + ); + + $this->setBody($data); + $this->setFilename($filename); + if ($contentType) + { + $this->setContentType($contentType); + } + } + + /** + * Create a new Attachment. + * @param string|Swift_OutputByteStream $data + * @param string $filename + * @param string $contentType + * @return Swift_Mime_Attachment + */ + public static function newInstance($data = null, $filename = null, + $contentType = null) + { + return new self($data, $filename, $contentType); + } + + /** + * Create a new Attachment from a filesystem path. + * @param string $path + * @param string $contentType optional + * @return Swift_Mime_Attachment + */ + public static function fromPath($path, $contentType = null) + { + return self::newInstance()->setFile( + new Swift_ByteStream_FileByteStream($path), + $contentType + ); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/ByteStream/.svn/all-wcprops b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/ByteStream/.svn/all-wcprops new file mode 100644 index 0000000..f46991a --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/ByteStream/.svn/all-wcprops @@ -0,0 +1,23 @@ +K 25 +svn:wc:ra_dav:version-url +V 76 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/ByteStream +END +AbstractFilterableInputStream.php +K 25 +svn:wc:ra_dav:version-url +V 110 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/ByteStream/AbstractFilterableInputStream.php +END +ArrayByteStream.php +K 25 +svn:wc:ra_dav:version-url +V 96 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/ByteStream/ArrayByteStream.php +END +FileByteStream.php +K 25 +svn:wc:ra_dav:version-url +V 95 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/ByteStream/FileByteStream.php +END diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/ByteStream/.svn/entries b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/ByteStream/.svn/entries new file mode 100644 index 0000000..4fb0496 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/ByteStream/.svn/entries @@ -0,0 +1,130 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/vendor/swiftmailer/classes/Swift/ByteStream +http://svn.symfony-project.com + + + +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +AbstractFilterableInputStream.php +file + + + + +2012-05-10T18:41:48.225550Z +0328438801b419673a095cccd2b2ecd9 +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + + + + + + + + +3960 + +ArrayByteStream.php +file + + + + +2012-05-10T18:41:48.229554Z +fc0ab0996e5b7631c33ca3e0c53bd3a7 +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + + + + + + + + +4027 + +FileByteStream.php +file + + + + +2012-05-10T18:41:48.229554Z +b063868c5932399c175c285cb4e91b1e +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + + + + + + + + +4016 + diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/ByteStream/.svn/text-base/AbstractFilterableInputStream.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/ByteStream/.svn/text-base/AbstractFilterableInputStream.php.svn-base new file mode 100644 index 0000000..71bc3f1 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/ByteStream/.svn/text-base/AbstractFilterableInputStream.php.svn-base @@ -0,0 +1,178 @@ +_filters[$key] = $filter; + } + + /** + * Remove an already present StreamFilter based on its $key. + * @param string $key + */ + public function removeFilter($key) + { + unset($this->_filters[$key]); + } + + /** + * Writes $bytes to the end of the stream. + * @param string $bytes + * @throws Swift_IoException + */ + public function write($bytes) + { + $this->_writeBuffer .= $bytes; + foreach ($this->_filters as $filter) + { + if ($filter->shouldBuffer($this->_writeBuffer)) + { + return; + } + } + $this->_doWrite($this->_writeBuffer); + return ++$this->_sequence; + } + + /** + * For any bytes that are currently buffered inside the stream, force them + * off the buffer. + * + * @throws Swift_IoException + */ + public function commit() + { + $this->_doWrite($this->_writeBuffer); + } + + /** + * Attach $is to this stream. + * The stream acts as an observer, receiving all data that is written. + * All {@link write()} and {@link flushBuffers()} operations will be mirrored. + * + * @param Swift_InputByteStream $is + */ + public function bind(Swift_InputByteStream $is) + { + $this->_mirrors[] = $is; + } + + /** + * Remove an already bound stream. + * If $is is not bound, no errors will be raised. + * If the stream currently has any buffered data it will be written to $is + * before unbinding occurs. + * + * @param Swift_InputByteStream $is + */ + public function unbind(Swift_InputByteStream $is) + { + foreach ($this->_mirrors as $k => $stream) + { + if ($is === $stream) + { + if ($this->_writeBuffer !== '') + { + $stream->write($this->_filter($this->_writeBuffer)); + } + unset($this->_mirrors[$k]); + } + } + } + + /** + * Flush the contents of the stream (empty it) and set the internal pointer + * to the beginning. + * @throws Swift_IoException + */ + public function flushBuffers() + { + if ($this->_writeBuffer !== '') + { + $this->_doWrite($this->_writeBuffer); + } + $this->_flush(); + + foreach ($this->_mirrors as $stream) + { + $stream->flushBuffers(); + } + } + + // -- Private methods + + /** Run $bytes through all filters */ + private function _filter($bytes) + { + foreach ($this->_filters as $filter) + { + $bytes = $filter->filter($bytes); + } + return $bytes; + } + + /** Just write the bytes to the stream */ + private function _doWrite($bytes) + { + $this->_commit($this->_filter($bytes)); + + foreach ($this->_mirrors as $stream) + { + $stream->write($bytes); + } + + $this->_writeBuffer = ''; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/ByteStream/.svn/text-base/ArrayByteStream.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/ByteStream/.svn/text-base/ArrayByteStream.php.svn-base new file mode 100644 index 0000000..f918889 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/ByteStream/.svn/text-base/ArrayByteStream.php.svn-base @@ -0,0 +1,190 @@ +_array = $stack; + $this->_arraySize = count($stack); + } + elseif (is_string($stack)) + { + $this->write($stack); + } + else + { + $this->_array = array(); + } + } + + /** + * Reads $length bytes from the stream into a string and moves the pointer + * through the stream by $length. If less bytes exist than are requested the + * remaining bytes are given instead. If no bytes are remaining at all, boolean + * false is returned. + * @param int $length + * @return string + */ + public function read($length) + { + if ($this->_offset == $this->_arraySize) + { + return false; + } + + // Don't use array slice + $end = $length + $this->_offset; + $end = $this->_arraySize<$end + ?$this->_arraySize + :$end; + $ret = ''; + for (; $this->_offset < $end; ++$this->_offset) + { + $ret .= $this->_array[$this->_offset]; + } + return $ret; + } + + /** + * Writes $bytes to the end of the stream. + * @param string $bytes + */ + public function write($bytes) + { + $to_add = str_split($bytes); + foreach ($to_add as $value) + { + $this->_array[] = $value; + } + $this->_arraySize = count($this->_array); + + foreach ($this->_mirrors as $stream) + { + $stream->write($bytes); + } + } + + /** + * Not used. + */ + public function commit() + { + } + + /** + * Attach $is to this stream. + * The stream acts as an observer, receiving all data that is written. + * All {@link write()} and {@link flushBuffers()} operations will be mirrored. + * + * @param Swift_InputByteStream $is + */ + public function bind(Swift_InputByteStream $is) + { + $this->_mirrors[] = $is; + } + + /** + * Remove an already bound stream. + * If $is is not bound, no errors will be raised. + * If the stream currently has any buffered data it will be written to $is + * before unbinding occurs. + * + * @param Swift_InputByteStream $is + */ + public function unbind(Swift_InputByteStream $is) + { + foreach ($this->_mirrors as $k => $stream) + { + if ($is === $stream) + { + unset($this->_mirrors[$k]); + } + } + } + + /** + * Move the internal read pointer to $byteOffset in the stream. + * @param int $byteOffset + * @return boolean + */ + public function setReadPointer($byteOffset) + { + if ($byteOffset > $this->_arraySize) + { + $byteOffset = $this->_arraySize; + } + elseif ($byteOffset < 0) + { + $byteOffset = 0; + } + + $this->_offset = $byteOffset; + } + + /** + * Flush the contents of the stream (empty it) and set the internal pointer + * to the beginning. + */ + public function flushBuffers() + { + $this->_offset = 0; + $this->_array = array(); + $this->_arraySize = 0; + + foreach ($this->_mirrors as $stream) + { + $stream->flushBuffers(); + } + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/ByteStream/.svn/text-base/FileByteStream.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/ByteStream/.svn/text-base/FileByteStream.php.svn-base new file mode 100644 index 0000000..14773c2 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/ByteStream/.svn/text-base/FileByteStream.php.svn-base @@ -0,0 +1,177 @@ +_path = $path; + $this->_mode = $writable ? 'w+b' : 'rb'; + $this->_quotes = get_magic_quotes_runtime(); + } + + /** + * Get the complete path to the file. + * @return string + */ + public function getPath() + { + return $this->_path; + } + + /** + * Reads $length bytes from the stream into a string and moves the pointer + * through the stream by $length. If less bytes exist than are requested the + * remaining bytes are given instead. If no bytes are remaining at all, boolean + * false is returned. + * @param int $length + * @return string + * @throws Swift_IoException + */ + public function read($length) + { + $fp = $this->_getReadHandle(); + if (!feof($fp)) + { + if ($this->_quotes) + { + set_magic_quotes_runtime(0); + } + $bytes = fread($fp, $length); + if ($this->_quotes) + { + set_magic_quotes_runtime(1); + } + $this->_offset = ftell($fp); + return $bytes; + } + else + { + return false; + } + } + + /** + * Move the internal read pointer to $byteOffset in the stream. + * @param int $byteOffset + * @return boolean + */ + public function setReadPointer($byteOffset) + { + if (isset($this->_reader)) + { + fseek($this->_reader, $byteOffset, SEEK_SET); + } + $this->_offset = $byteOffset; + } + + // -- Private methods + + /** Just write the bytes to the file */ + protected function _commit($bytes) + { + fwrite($this->_getWriteHandle(), $bytes); + $this->_resetReadHandle(); + } + + /** Not used */ + protected function _flush() + { + } + + /** Get the resource for reading */ + private function _getReadHandle() + { + if (!isset($this->_reader)) + { + if (!$this->_reader = fopen($this->_path, 'rb')) + { + throw new Swift_IoException( + 'Unable to open file for reading [' . $this->_path . ']' + ); + } + fseek($this->_reader, $this->_offset, SEEK_SET); + } + return $this->_reader; + } + + /** Get the resource for writing */ + private function _getWriteHandle() + { + if (!isset($this->_writer)) + { + if (!$this->_writer = fopen($this->_path, $this->_mode)) + { + throw new Swift_IoException( + 'Unable to open file for writing [' . $this->_path . ']' + ); + } + } + return $this->_writer; + } + + /** Force a reload of the resource for writing */ + private function _resetWriteHandle() + { + if (isset($this->_writer)) + { + fclose($this->_writer); + $this->_writer = null; + } + } + + /** Force a reload of the resource for reading */ + private function _resetReadHandle() + { + if (isset($this->_reader)) + { + fclose($this->_reader); + $this->_reader = null; + } + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/ByteStream/AbstractFilterableInputStream.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/ByteStream/AbstractFilterableInputStream.php new file mode 100644 index 0000000..71bc3f1 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/ByteStream/AbstractFilterableInputStream.php @@ -0,0 +1,178 @@ +_filters[$key] = $filter; + } + + /** + * Remove an already present StreamFilter based on its $key. + * @param string $key + */ + public function removeFilter($key) + { + unset($this->_filters[$key]); + } + + /** + * Writes $bytes to the end of the stream. + * @param string $bytes + * @throws Swift_IoException + */ + public function write($bytes) + { + $this->_writeBuffer .= $bytes; + foreach ($this->_filters as $filter) + { + if ($filter->shouldBuffer($this->_writeBuffer)) + { + return; + } + } + $this->_doWrite($this->_writeBuffer); + return ++$this->_sequence; + } + + /** + * For any bytes that are currently buffered inside the stream, force them + * off the buffer. + * + * @throws Swift_IoException + */ + public function commit() + { + $this->_doWrite($this->_writeBuffer); + } + + /** + * Attach $is to this stream. + * The stream acts as an observer, receiving all data that is written. + * All {@link write()} and {@link flushBuffers()} operations will be mirrored. + * + * @param Swift_InputByteStream $is + */ + public function bind(Swift_InputByteStream $is) + { + $this->_mirrors[] = $is; + } + + /** + * Remove an already bound stream. + * If $is is not bound, no errors will be raised. + * If the stream currently has any buffered data it will be written to $is + * before unbinding occurs. + * + * @param Swift_InputByteStream $is + */ + public function unbind(Swift_InputByteStream $is) + { + foreach ($this->_mirrors as $k => $stream) + { + if ($is === $stream) + { + if ($this->_writeBuffer !== '') + { + $stream->write($this->_filter($this->_writeBuffer)); + } + unset($this->_mirrors[$k]); + } + } + } + + /** + * Flush the contents of the stream (empty it) and set the internal pointer + * to the beginning. + * @throws Swift_IoException + */ + public function flushBuffers() + { + if ($this->_writeBuffer !== '') + { + $this->_doWrite($this->_writeBuffer); + } + $this->_flush(); + + foreach ($this->_mirrors as $stream) + { + $stream->flushBuffers(); + } + } + + // -- Private methods + + /** Run $bytes through all filters */ + private function _filter($bytes) + { + foreach ($this->_filters as $filter) + { + $bytes = $filter->filter($bytes); + } + return $bytes; + } + + /** Just write the bytes to the stream */ + private function _doWrite($bytes) + { + $this->_commit($this->_filter($bytes)); + + foreach ($this->_mirrors as $stream) + { + $stream->write($bytes); + } + + $this->_writeBuffer = ''; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/ByteStream/ArrayByteStream.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/ByteStream/ArrayByteStream.php new file mode 100644 index 0000000..f918889 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/ByteStream/ArrayByteStream.php @@ -0,0 +1,190 @@ +_array = $stack; + $this->_arraySize = count($stack); + } + elseif (is_string($stack)) + { + $this->write($stack); + } + else + { + $this->_array = array(); + } + } + + /** + * Reads $length bytes from the stream into a string and moves the pointer + * through the stream by $length. If less bytes exist than are requested the + * remaining bytes are given instead. If no bytes are remaining at all, boolean + * false is returned. + * @param int $length + * @return string + */ + public function read($length) + { + if ($this->_offset == $this->_arraySize) + { + return false; + } + + // Don't use array slice + $end = $length + $this->_offset; + $end = $this->_arraySize<$end + ?$this->_arraySize + :$end; + $ret = ''; + for (; $this->_offset < $end; ++$this->_offset) + { + $ret .= $this->_array[$this->_offset]; + } + return $ret; + } + + /** + * Writes $bytes to the end of the stream. + * @param string $bytes + */ + public function write($bytes) + { + $to_add = str_split($bytes); + foreach ($to_add as $value) + { + $this->_array[] = $value; + } + $this->_arraySize = count($this->_array); + + foreach ($this->_mirrors as $stream) + { + $stream->write($bytes); + } + } + + /** + * Not used. + */ + public function commit() + { + } + + /** + * Attach $is to this stream. + * The stream acts as an observer, receiving all data that is written. + * All {@link write()} and {@link flushBuffers()} operations will be mirrored. + * + * @param Swift_InputByteStream $is + */ + public function bind(Swift_InputByteStream $is) + { + $this->_mirrors[] = $is; + } + + /** + * Remove an already bound stream. + * If $is is not bound, no errors will be raised. + * If the stream currently has any buffered data it will be written to $is + * before unbinding occurs. + * + * @param Swift_InputByteStream $is + */ + public function unbind(Swift_InputByteStream $is) + { + foreach ($this->_mirrors as $k => $stream) + { + if ($is === $stream) + { + unset($this->_mirrors[$k]); + } + } + } + + /** + * Move the internal read pointer to $byteOffset in the stream. + * @param int $byteOffset + * @return boolean + */ + public function setReadPointer($byteOffset) + { + if ($byteOffset > $this->_arraySize) + { + $byteOffset = $this->_arraySize; + } + elseif ($byteOffset < 0) + { + $byteOffset = 0; + } + + $this->_offset = $byteOffset; + } + + /** + * Flush the contents of the stream (empty it) and set the internal pointer + * to the beginning. + */ + public function flushBuffers() + { + $this->_offset = 0; + $this->_array = array(); + $this->_arraySize = 0; + + foreach ($this->_mirrors as $stream) + { + $stream->flushBuffers(); + } + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/ByteStream/FileByteStream.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/ByteStream/FileByteStream.php new file mode 100644 index 0000000..14773c2 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/ByteStream/FileByteStream.php @@ -0,0 +1,177 @@ +_path = $path; + $this->_mode = $writable ? 'w+b' : 'rb'; + $this->_quotes = get_magic_quotes_runtime(); + } + + /** + * Get the complete path to the file. + * @return string + */ + public function getPath() + { + return $this->_path; + } + + /** + * Reads $length bytes from the stream into a string and moves the pointer + * through the stream by $length. If less bytes exist than are requested the + * remaining bytes are given instead. If no bytes are remaining at all, boolean + * false is returned. + * @param int $length + * @return string + * @throws Swift_IoException + */ + public function read($length) + { + $fp = $this->_getReadHandle(); + if (!feof($fp)) + { + if ($this->_quotes) + { + set_magic_quotes_runtime(0); + } + $bytes = fread($fp, $length); + if ($this->_quotes) + { + set_magic_quotes_runtime(1); + } + $this->_offset = ftell($fp); + return $bytes; + } + else + { + return false; + } + } + + /** + * Move the internal read pointer to $byteOffset in the stream. + * @param int $byteOffset + * @return boolean + */ + public function setReadPointer($byteOffset) + { + if (isset($this->_reader)) + { + fseek($this->_reader, $byteOffset, SEEK_SET); + } + $this->_offset = $byteOffset; + } + + // -- Private methods + + /** Just write the bytes to the file */ + protected function _commit($bytes) + { + fwrite($this->_getWriteHandle(), $bytes); + $this->_resetReadHandle(); + } + + /** Not used */ + protected function _flush() + { + } + + /** Get the resource for reading */ + private function _getReadHandle() + { + if (!isset($this->_reader)) + { + if (!$this->_reader = fopen($this->_path, 'rb')) + { + throw new Swift_IoException( + 'Unable to open file for reading [' . $this->_path . ']' + ); + } + fseek($this->_reader, $this->_offset, SEEK_SET); + } + return $this->_reader; + } + + /** Get the resource for writing */ + private function _getWriteHandle() + { + if (!isset($this->_writer)) + { + if (!$this->_writer = fopen($this->_path, $this->_mode)) + { + throw new Swift_IoException( + 'Unable to open file for writing [' . $this->_path . ']' + ); + } + } + return $this->_writer; + } + + /** Force a reload of the resource for writing */ + private function _resetWriteHandle() + { + if (isset($this->_writer)) + { + fclose($this->_writer); + $this->_writer = null; + } + } + + /** Force a reload of the resource for reading */ + private function _resetReadHandle() + { + if (isset($this->_reader)) + { + fclose($this->_reader); + $this->_reader = null; + } + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReader.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReader.php new file mode 100644 index 0000000..53d39ec --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReader.php @@ -0,0 +1,60 @@ + + */ +interface Swift_CharacterReader +{ + const MAP_TYPE_INVALID = 0x01; + const MAP_TYPE_FIXED_LEN = 0x02; + const MAP_TYPE_POSITIONS = 0x03; + + /** + * Returns the complete charactermap + * + * @param string $string + * @param int $startOffset + * @param array $currentMap + * @param mixed $ignoredChars + * @return int + */ + public function getCharPositions($string, $startOffset, &$currentMap, &$ignoredChars); + + /** + * Returns mapType + * @int mapType + */ + public function getMapType(); + + /** + * Returns an integer which specifies how many more bytes to read. + * A positive integer indicates the number of more bytes to fetch before invoking + * this method again. + * A value of zero means this is already a valid character. + * A value of -1 means this cannot possibly be a valid character. + * @param int[] $bytes + * @return int + */ + public function validateByteSequence($bytes, $size); + + /** + * Returns the number of bytes which should be read to start each character. + * For fixed width character sets this should be the number of + * octets-per-character. For multibyte character sets this will probably be 1. + * @return int + */ + public function getInitialByteSize(); + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReader/.svn/all-wcprops b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReader/.svn/all-wcprops new file mode 100644 index 0000000..ca526ae --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReader/.svn/all-wcprops @@ -0,0 +1,23 @@ +K 25 +svn:wc:ra_dav:version-url +V 81 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/CharacterReader +END +Utf8Reader.php +K 25 +svn:wc:ra_dav:version-url +V 96 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/CharacterReader/Utf8Reader.php +END +GenericFixedWidthReader.php +K 25 +svn:wc:ra_dav:version-url +V 109 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/CharacterReader/GenericFixedWidthReader.php +END +UsAsciiReader.php +K 25 +svn:wc:ra_dav:version-url +V 99 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/CharacterReader/UsAsciiReader.php +END diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReader/.svn/entries b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReader/.svn/entries new file mode 100644 index 0000000..64329db --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReader/.svn/entries @@ -0,0 +1,130 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/vendor/swiftmailer/classes/Swift/CharacterReader +http://svn.symfony-project.com + + + +2009-09-22T14:37:05.004136Z +22246 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +Utf8Reader.php +file + + + + +2012-05-10T18:41:52.077547Z +fa6b3429d9e99eb269bcc119ef1f9e0d +2009-09-22T14:37:05.004136Z +22246 +fabien + + + + + + + + + + + + + + + + + + + + + +6770 + +GenericFixedWidthReader.php +file + + + + +2012-05-10T18:41:52.077547Z +daea9a4e38c74e54dea237508a391e80 +2009-09-22T14:37:05.004136Z +22246 +fabien + + + + + + + + + + + + + + + + + + + + + +2226 + +UsAsciiReader.php +file + + + + +2012-05-10T18:41:52.077547Z +b658f2243c8dc8b559afe6d3dd7ac1cf +2009-09-22T14:37:05.004136Z +22246 +fabien + + + + + + + + + + + + + + + + + + + + + +1782 + diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReader/.svn/text-base/GenericFixedWidthReader.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReader/.svn/text-base/GenericFixedWidthReader.php.svn-base new file mode 100644 index 0000000..26b13ff --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReader/.svn/text-base/GenericFixedWidthReader.php.svn-base @@ -0,0 +1,96 @@ + + */ +class Swift_CharacterReader_GenericFixedWidthReader + implements Swift_CharacterReader +{ + + /** + * The number of bytes in a single character. + * @var int + * @access private + */ + private $_width; + + /** + * Creates a new GenericFixedWidthReader using $width bytes per character. + * @param int $width + */ + public function __construct($width) + { + $this->_width = $width; + } + + /** + * Returns the complete charactermap + * + * @param string $string + * @param int $startOffset + * @param array $currentMap + * @param mixed $ignoredChars + * @return $int + */ + public function getCharPositions($string, $startOffset, &$currentMap, &$ignoredChars) + { + $strlen = strlen($string); + // % and / are CPU intensive, so, maybe find a better way + $ignored = $strlen%$this->_width; + $ignoredChars = substr($string, - $ignored); + $currentMap = $this->_width; + return ($strlen - $ignored)/$this->_width; + + } + + /** + * Returns mapType + * @int mapType + */ + public function getMapType() + { + return self::MAP_TYPE_FIXED_LEN; + } + + /** + * Returns an integer which specifies how many more bytes to read. + * A positive integer indicates the number of more bytes to fetch before invoking + * this method again. + * A value of zero means this is already a valid character. + * A value of -1 means this cannot possibly be a valid character. + * @param string $bytes + * @return int + */ + public function validateByteSequence($bytes, $size) + { + $needed = $this->_width - $size; + return ($needed > -1) + ? $needed + : -1 + ; + } + + /** + * Returns the number of bytes which should be read to start each character. + * @return int + */ + public function getInitialByteSize() + { + return $this->_width; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReader/.svn/text-base/UsAsciiReader.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReader/.svn/text-base/UsAsciiReader.php.svn-base new file mode 100644 index 0000000..3e0228a --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReader/.svn/text-base/UsAsciiReader.php.svn-base @@ -0,0 +1,83 @@ +"\x07F") + { // Invalid char + $currentMap[$i+$startOffset]=$string[$i]; + } + } + return $strlen; + } + + /** + * Returns mapType + * @int mapType + */ + public function getMapType() + { + return self::MAP_TYPE_INVALID; + } + + /** + * Returns an integer which specifies how many more bytes to read. + * A positive integer indicates the number of more bytes to fetch before invoking + * this method again. + * A value of zero means this is already a valid character. + * A value of -1 means this cannot possibly be a valid character. + * @param string $bytes + * @return int + */ + public function validateByteSequence($bytes, $size) + { + $byte = reset($bytes); + if (1 == count($bytes) && $byte >= 0x00 && $byte <= 0x7F) + { + return 0; + } + else + { + return -1; + } + } + + /** + * Returns the number of bytes which should be read to start each character. + * @return int + */ + public function getInitialByteSize() + { + return 1; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReader/.svn/text-base/Utf8Reader.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReader/.svn/text-base/Utf8Reader.php.svn-base new file mode 100644 index 0000000..54ea9a4 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReader/.svn/text-base/Utf8Reader.php.svn-base @@ -0,0 +1,183 @@ + + */ +class Swift_CharacterReader_Utf8Reader + implements Swift_CharacterReader +{ + + /** Pre-computed for optimization */ + private static $length_map=array( +//N=0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, //0x0N + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, //0x1N + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, //0x2N + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, //0x3N + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, //0x4N + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, //0x5N + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, //0x6N + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, //0x7N + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, //0x8N + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, //0x9N + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, //0xAN + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, //0xBN + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, //0xCN + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, //0xDN + 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, //0xEN + 4,4,4,4,4,4,4,4,5,5,5,5,6,6,0,0 //0xFN + ); + private static $s_length_map=array( + "\x00"=>1, "\x01"=>1, "\x02"=>1, "\x03"=>1, "\x04"=>1, "\x05"=>1, "\x06"=>1, "\x07"=>1, + "\x08"=>1, "\x09"=>1, "\x0a"=>1, "\x0b"=>1, "\x0c"=>1, "\x0d"=>1, "\x0e"=>1, "\x0f"=>1, + "\x10"=>1, "\x11"=>1, "\x12"=>1, "\x13"=>1, "\x14"=>1, "\x15"=>1, "\x16"=>1, "\x17"=>1, + "\x18"=>1, "\x19"=>1, "\x1a"=>1, "\x1b"=>1, "\x1c"=>1, "\x1d"=>1, "\x1e"=>1, "\x1f"=>1, + "\x20"=>1, "\x21"=>1, "\x22"=>1, "\x23"=>1, "\x24"=>1, "\x25"=>1, "\x26"=>1, "\x27"=>1, + "\x28"=>1, "\x29"=>1, "\x2a"=>1, "\x2b"=>1, "\x2c"=>1, "\x2d"=>1, "\x2e"=>1, "\x2f"=>1, + "\x30"=>1, "\x31"=>1, "\x32"=>1, "\x33"=>1, "\x34"=>1, "\x35"=>1, "\x36"=>1, "\x37"=>1, + "\x38"=>1, "\x39"=>1, "\x3a"=>1, "\x3b"=>1, "\x3c"=>1, "\x3d"=>1, "\x3e"=>1, "\x3f"=>1, + "\x40"=>1, "\x41"=>1, "\x42"=>1, "\x43"=>1, "\x44"=>1, "\x45"=>1, "\x46"=>1, "\x47"=>1, + "\x48"=>1, "\x49"=>1, "\x4a"=>1, "\x4b"=>1, "\x4c"=>1, "\x4d"=>1, "\x4e"=>1, "\x4f"=>1, + "\x50"=>1, "\x51"=>1, "\x52"=>1, "\x53"=>1, "\x54"=>1, "\x55"=>1, "\x56"=>1, "\x57"=>1, + "\x58"=>1, "\x59"=>1, "\x5a"=>1, "\x5b"=>1, "\x5c"=>1, "\x5d"=>1, "\x5e"=>1, "\x5f"=>1, + "\x60"=>1, "\x61"=>1, "\x62"=>1, "\x63"=>1, "\x64"=>1, "\x65"=>1, "\x66"=>1, "\x67"=>1, + "\x68"=>1, "\x69"=>1, "\x6a"=>1, "\x6b"=>1, "\x6c"=>1, "\x6d"=>1, "\x6e"=>1, "\x6f"=>1, + "\x70"=>1, "\x71"=>1, "\x72"=>1, "\x73"=>1, "\x74"=>1, "\x75"=>1, "\x76"=>1, "\x77"=>1, + "\x78"=>1, "\x79"=>1, "\x7a"=>1, "\x7b"=>1, "\x7c"=>1, "\x7d"=>1, "\x7e"=>1, "\x7f"=>1, + "\x80"=>0, "\x81"=>0, "\x82"=>0, "\x83"=>0, "\x84"=>0, "\x85"=>0, "\x86"=>0, "\x87"=>0, + "\x88"=>0, "\x89"=>0, "\x8a"=>0, "\x8b"=>0, "\x8c"=>0, "\x8d"=>0, "\x8e"=>0, "\x8f"=>0, + "\x90"=>0, "\x91"=>0, "\x92"=>0, "\x93"=>0, "\x94"=>0, "\x95"=>0, "\x96"=>0, "\x97"=>0, + "\x98"=>0, "\x99"=>0, "\x9a"=>0, "\x9b"=>0, "\x9c"=>0, "\x9d"=>0, "\x9e"=>0, "\x9f"=>0, + "\xa0"=>0, "\xa1"=>0, "\xa2"=>0, "\xa3"=>0, "\xa4"=>0, "\xa5"=>0, "\xa6"=>0, "\xa7"=>0, + "\xa8"=>0, "\xa9"=>0, "\xaa"=>0, "\xab"=>0, "\xac"=>0, "\xad"=>0, "\xae"=>0, "\xaf"=>0, + "\xb0"=>0, "\xb1"=>0, "\xb2"=>0, "\xb3"=>0, "\xb4"=>0, "\xb5"=>0, "\xb6"=>0, "\xb7"=>0, + "\xb8"=>0, "\xb9"=>0, "\xba"=>0, "\xbb"=>0, "\xbc"=>0, "\xbd"=>0, "\xbe"=>0, "\xbf"=>0, + "\xc0"=>2, "\xc1"=>2, "\xc2"=>2, "\xc3"=>2, "\xc4"=>2, "\xc5"=>2, "\xc6"=>2, "\xc7"=>2, + "\xc8"=>2, "\xc9"=>2, "\xca"=>2, "\xcb"=>2, "\xcc"=>2, "\xcd"=>2, "\xce"=>2, "\xcf"=>2, + "\xd0"=>2, "\xd1"=>2, "\xd2"=>2, "\xd3"=>2, "\xd4"=>2, "\xd5"=>2, "\xd6"=>2, "\xd7"=>2, + "\xd8"=>2, "\xd9"=>2, "\xda"=>2, "\xdb"=>2, "\xdc"=>2, "\xdd"=>2, "\xde"=>2, "\xdf"=>2, + "\xe0"=>3, "\xe1"=>3, "\xe2"=>3, "\xe3"=>3, "\xe4"=>3, "\xe5"=>3, "\xe6"=>3, "\xe7"=>3, + "\xe8"=>3, "\xe9"=>3, "\xea"=>3, "\xeb"=>3, "\xec"=>3, "\xed"=>3, "\xee"=>3, "\xef"=>3, + "\xf0"=>4, "\xf1"=>4, "\xf2"=>4, "\xf3"=>4, "\xf4"=>4, "\xf5"=>4, "\xf6"=>4, "\xf7"=>4, + "\xf8"=>5, "\xf9"=>5, "\xfa"=>5, "\xfb"=>5, "\xfc"=>6, "\xfd"=>6, "\xfe"=>0, "\xff"=>0, + ); + + /** + * Returns the complete charactermap + * + * @param string $string + * @param int $startOffset + * @param array $currentMap + * @param mixed $ignoredChars + */ + public function getCharPositions($string, $startOffset, &$currentMap, &$ignoredChars) + { + if (!isset($currentMap['i']) || !isset($currentMap['p'])) + { + $currentMap['p'] = $currentMap['i'] = array(); + } + $strlen=strlen($string); + $charPos=count($currentMap['p']); + $foundChars=0; + $invalid=false; + for ($i=0; $i<$strlen; ++$i) + { + $char=$string[$i]; + $size=self::$s_length_map[$char]; + if ($size==0) + { + /* char is invalid, we must wait for a resync */ + $invalid=true; + continue; + } + else + { + if ($invalid==true) + { + /* We mark the chars as invalid and start a new char */ + $currentMap['p'][$charPos+$foundChars]=$startOffset+$i; + $currentMap['i'][$charPos+$foundChars]=true; + ++$foundChars; + $invalid=false; + } + if (($i+$size) > $strlen){ + $ignoredChars=substr($string, $i); + break; + } + for ($j=1; $j<$size; ++$j) + { + $char=$string[$i+$j]; + if ($char>"\x7F" && $char<"\xC0") + { + // Valid - continue parsing + } + else + { + /* char is invalid, we must wait for a resync */ + $invalid=true; + continue 2; + } + } + /* Ok we got a complete char here */ + $lastChar=$currentMap['p'][$charPos+$foundChars]=$startOffset+$i+$size; + $i+=$j-1; + ++$foundChars; + } + } + return $foundChars; + } + + /** + * Returns mapType + * @int mapType + */ + public function getMapType() + { + return self::MAP_TYPE_POSITIONS; + } + + /** + * Returns an integer which specifies how many more bytes to read. + * A positive integer indicates the number of more bytes to fetch before invoking + * this method again. + * A value of zero means this is already a valid character. + * A value of -1 means this cannot possibly be a valid character. + * @param string $bytes + * @return int + */ + public function validateByteSequence($bytes, $size) + { + if ($size<1){ + return -1; + } + $needed = self::$length_map[$bytes[0]] - $size; + return ($needed > -1) + ? $needed + : -1 + ; + } + + /** + * Returns the number of bytes which should be read to start each character. + * @return int + */ + public function getInitialByteSize() + { + return 1; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReader/GenericFixedWidthReader.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReader/GenericFixedWidthReader.php new file mode 100644 index 0000000..26b13ff --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReader/GenericFixedWidthReader.php @@ -0,0 +1,96 @@ + + */ +class Swift_CharacterReader_GenericFixedWidthReader + implements Swift_CharacterReader +{ + + /** + * The number of bytes in a single character. + * @var int + * @access private + */ + private $_width; + + /** + * Creates a new GenericFixedWidthReader using $width bytes per character. + * @param int $width + */ + public function __construct($width) + { + $this->_width = $width; + } + + /** + * Returns the complete charactermap + * + * @param string $string + * @param int $startOffset + * @param array $currentMap + * @param mixed $ignoredChars + * @return $int + */ + public function getCharPositions($string, $startOffset, &$currentMap, &$ignoredChars) + { + $strlen = strlen($string); + // % and / are CPU intensive, so, maybe find a better way + $ignored = $strlen%$this->_width; + $ignoredChars = substr($string, - $ignored); + $currentMap = $this->_width; + return ($strlen - $ignored)/$this->_width; + + } + + /** + * Returns mapType + * @int mapType + */ + public function getMapType() + { + return self::MAP_TYPE_FIXED_LEN; + } + + /** + * Returns an integer which specifies how many more bytes to read. + * A positive integer indicates the number of more bytes to fetch before invoking + * this method again. + * A value of zero means this is already a valid character. + * A value of -1 means this cannot possibly be a valid character. + * @param string $bytes + * @return int + */ + public function validateByteSequence($bytes, $size) + { + $needed = $this->_width - $size; + return ($needed > -1) + ? $needed + : -1 + ; + } + + /** + * Returns the number of bytes which should be read to start each character. + * @return int + */ + public function getInitialByteSize() + { + return $this->_width; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReader/UsAsciiReader.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReader/UsAsciiReader.php new file mode 100644 index 0000000..3e0228a --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReader/UsAsciiReader.php @@ -0,0 +1,83 @@ +"\x07F") + { // Invalid char + $currentMap[$i+$startOffset]=$string[$i]; + } + } + return $strlen; + } + + /** + * Returns mapType + * @int mapType + */ + public function getMapType() + { + return self::MAP_TYPE_INVALID; + } + + /** + * Returns an integer which specifies how many more bytes to read. + * A positive integer indicates the number of more bytes to fetch before invoking + * this method again. + * A value of zero means this is already a valid character. + * A value of -1 means this cannot possibly be a valid character. + * @param string $bytes + * @return int + */ + public function validateByteSequence($bytes, $size) + { + $byte = reset($bytes); + if (1 == count($bytes) && $byte >= 0x00 && $byte <= 0x7F) + { + return 0; + } + else + { + return -1; + } + } + + /** + * Returns the number of bytes which should be read to start each character. + * @return int + */ + public function getInitialByteSize() + { + return 1; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReader/Utf8Reader.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReader/Utf8Reader.php new file mode 100644 index 0000000..54ea9a4 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReader/Utf8Reader.php @@ -0,0 +1,183 @@ + + */ +class Swift_CharacterReader_Utf8Reader + implements Swift_CharacterReader +{ + + /** Pre-computed for optimization */ + private static $length_map=array( +//N=0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, //0x0N + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, //0x1N + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, //0x2N + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, //0x3N + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, //0x4N + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, //0x5N + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, //0x6N + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, //0x7N + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, //0x8N + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, //0x9N + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, //0xAN + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, //0xBN + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, //0xCN + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, //0xDN + 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, //0xEN + 4,4,4,4,4,4,4,4,5,5,5,5,6,6,0,0 //0xFN + ); + private static $s_length_map=array( + "\x00"=>1, "\x01"=>1, "\x02"=>1, "\x03"=>1, "\x04"=>1, "\x05"=>1, "\x06"=>1, "\x07"=>1, + "\x08"=>1, "\x09"=>1, "\x0a"=>1, "\x0b"=>1, "\x0c"=>1, "\x0d"=>1, "\x0e"=>1, "\x0f"=>1, + "\x10"=>1, "\x11"=>1, "\x12"=>1, "\x13"=>1, "\x14"=>1, "\x15"=>1, "\x16"=>1, "\x17"=>1, + "\x18"=>1, "\x19"=>1, "\x1a"=>1, "\x1b"=>1, "\x1c"=>1, "\x1d"=>1, "\x1e"=>1, "\x1f"=>1, + "\x20"=>1, "\x21"=>1, "\x22"=>1, "\x23"=>1, "\x24"=>1, "\x25"=>1, "\x26"=>1, "\x27"=>1, + "\x28"=>1, "\x29"=>1, "\x2a"=>1, "\x2b"=>1, "\x2c"=>1, "\x2d"=>1, "\x2e"=>1, "\x2f"=>1, + "\x30"=>1, "\x31"=>1, "\x32"=>1, "\x33"=>1, "\x34"=>1, "\x35"=>1, "\x36"=>1, "\x37"=>1, + "\x38"=>1, "\x39"=>1, "\x3a"=>1, "\x3b"=>1, "\x3c"=>1, "\x3d"=>1, "\x3e"=>1, "\x3f"=>1, + "\x40"=>1, "\x41"=>1, "\x42"=>1, "\x43"=>1, "\x44"=>1, "\x45"=>1, "\x46"=>1, "\x47"=>1, + "\x48"=>1, "\x49"=>1, "\x4a"=>1, "\x4b"=>1, "\x4c"=>1, "\x4d"=>1, "\x4e"=>1, "\x4f"=>1, + "\x50"=>1, "\x51"=>1, "\x52"=>1, "\x53"=>1, "\x54"=>1, "\x55"=>1, "\x56"=>1, "\x57"=>1, + "\x58"=>1, "\x59"=>1, "\x5a"=>1, "\x5b"=>1, "\x5c"=>1, "\x5d"=>1, "\x5e"=>1, "\x5f"=>1, + "\x60"=>1, "\x61"=>1, "\x62"=>1, "\x63"=>1, "\x64"=>1, "\x65"=>1, "\x66"=>1, "\x67"=>1, + "\x68"=>1, "\x69"=>1, "\x6a"=>1, "\x6b"=>1, "\x6c"=>1, "\x6d"=>1, "\x6e"=>1, "\x6f"=>1, + "\x70"=>1, "\x71"=>1, "\x72"=>1, "\x73"=>1, "\x74"=>1, "\x75"=>1, "\x76"=>1, "\x77"=>1, + "\x78"=>1, "\x79"=>1, "\x7a"=>1, "\x7b"=>1, "\x7c"=>1, "\x7d"=>1, "\x7e"=>1, "\x7f"=>1, + "\x80"=>0, "\x81"=>0, "\x82"=>0, "\x83"=>0, "\x84"=>0, "\x85"=>0, "\x86"=>0, "\x87"=>0, + "\x88"=>0, "\x89"=>0, "\x8a"=>0, "\x8b"=>0, "\x8c"=>0, "\x8d"=>0, "\x8e"=>0, "\x8f"=>0, + "\x90"=>0, "\x91"=>0, "\x92"=>0, "\x93"=>0, "\x94"=>0, "\x95"=>0, "\x96"=>0, "\x97"=>0, + "\x98"=>0, "\x99"=>0, "\x9a"=>0, "\x9b"=>0, "\x9c"=>0, "\x9d"=>0, "\x9e"=>0, "\x9f"=>0, + "\xa0"=>0, "\xa1"=>0, "\xa2"=>0, "\xa3"=>0, "\xa4"=>0, "\xa5"=>0, "\xa6"=>0, "\xa7"=>0, + "\xa8"=>0, "\xa9"=>0, "\xaa"=>0, "\xab"=>0, "\xac"=>0, "\xad"=>0, "\xae"=>0, "\xaf"=>0, + "\xb0"=>0, "\xb1"=>0, "\xb2"=>0, "\xb3"=>0, "\xb4"=>0, "\xb5"=>0, "\xb6"=>0, "\xb7"=>0, + "\xb8"=>0, "\xb9"=>0, "\xba"=>0, "\xbb"=>0, "\xbc"=>0, "\xbd"=>0, "\xbe"=>0, "\xbf"=>0, + "\xc0"=>2, "\xc1"=>2, "\xc2"=>2, "\xc3"=>2, "\xc4"=>2, "\xc5"=>2, "\xc6"=>2, "\xc7"=>2, + "\xc8"=>2, "\xc9"=>2, "\xca"=>2, "\xcb"=>2, "\xcc"=>2, "\xcd"=>2, "\xce"=>2, "\xcf"=>2, + "\xd0"=>2, "\xd1"=>2, "\xd2"=>2, "\xd3"=>2, "\xd4"=>2, "\xd5"=>2, "\xd6"=>2, "\xd7"=>2, + "\xd8"=>2, "\xd9"=>2, "\xda"=>2, "\xdb"=>2, "\xdc"=>2, "\xdd"=>2, "\xde"=>2, "\xdf"=>2, + "\xe0"=>3, "\xe1"=>3, "\xe2"=>3, "\xe3"=>3, "\xe4"=>3, "\xe5"=>3, "\xe6"=>3, "\xe7"=>3, + "\xe8"=>3, "\xe9"=>3, "\xea"=>3, "\xeb"=>3, "\xec"=>3, "\xed"=>3, "\xee"=>3, "\xef"=>3, + "\xf0"=>4, "\xf1"=>4, "\xf2"=>4, "\xf3"=>4, "\xf4"=>4, "\xf5"=>4, "\xf6"=>4, "\xf7"=>4, + "\xf8"=>5, "\xf9"=>5, "\xfa"=>5, "\xfb"=>5, "\xfc"=>6, "\xfd"=>6, "\xfe"=>0, "\xff"=>0, + ); + + /** + * Returns the complete charactermap + * + * @param string $string + * @param int $startOffset + * @param array $currentMap + * @param mixed $ignoredChars + */ + public function getCharPositions($string, $startOffset, &$currentMap, &$ignoredChars) + { + if (!isset($currentMap['i']) || !isset($currentMap['p'])) + { + $currentMap['p'] = $currentMap['i'] = array(); + } + $strlen=strlen($string); + $charPos=count($currentMap['p']); + $foundChars=0; + $invalid=false; + for ($i=0; $i<$strlen; ++$i) + { + $char=$string[$i]; + $size=self::$s_length_map[$char]; + if ($size==0) + { + /* char is invalid, we must wait for a resync */ + $invalid=true; + continue; + } + else + { + if ($invalid==true) + { + /* We mark the chars as invalid and start a new char */ + $currentMap['p'][$charPos+$foundChars]=$startOffset+$i; + $currentMap['i'][$charPos+$foundChars]=true; + ++$foundChars; + $invalid=false; + } + if (($i+$size) > $strlen){ + $ignoredChars=substr($string, $i); + break; + } + for ($j=1; $j<$size; ++$j) + { + $char=$string[$i+$j]; + if ($char>"\x7F" && $char<"\xC0") + { + // Valid - continue parsing + } + else + { + /* char is invalid, we must wait for a resync */ + $invalid=true; + continue 2; + } + } + /* Ok we got a complete char here */ + $lastChar=$currentMap['p'][$charPos+$foundChars]=$startOffset+$i+$size; + $i+=$j-1; + ++$foundChars; + } + } + return $foundChars; + } + + /** + * Returns mapType + * @int mapType + */ + public function getMapType() + { + return self::MAP_TYPE_POSITIONS; + } + + /** + * Returns an integer which specifies how many more bytes to read. + * A positive integer indicates the number of more bytes to fetch before invoking + * this method again. + * A value of zero means this is already a valid character. + * A value of -1 means this cannot possibly be a valid character. + * @param string $bytes + * @return int + */ + public function validateByteSequence($bytes, $size) + { + if ($size<1){ + return -1; + } + $needed = self::$length_map[$bytes[0]] - $size; + return ($needed > -1) + ? $needed + : -1 + ; + } + + /** + * Returns the number of bytes which should be read to start each character. + * @return int + */ + public function getInitialByteSize() + { + return 1; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReaderFactory.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReaderFactory.php new file mode 100644 index 0000000..9e01de1 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReaderFactory.php @@ -0,0 +1,29 @@ + $prefix . 'GenericFixedWidthReader', + 'constructor' => array(1) + ); + + $doubleByte = array( + 'class' => $prefix . 'GenericFixedWidthReader', + 'constructor' => array(2) + ); + + $fourBytes = array( + 'class' => $prefix . 'GenericFixedWidthReader', + 'constructor' => array(4) + ); + + //Utf-8 + $this->_map['utf-?8'] = array( + 'class' => $prefix . 'Utf8Reader', + 'constructor' => array() + ); + + //7-8 bit charsets + $this->_map['(us-)?ascii'] = $singleByte; + $this->_map['(iso|iec)-?8859-?[0-9]+'] = $singleByte; + $this->_map['windows-?125[0-9]'] = $singleByte; + $this->_map['cp-?[0-9]+'] = $singleByte; + $this->_map['ansi'] = $singleByte; + $this->_map['macintosh'] = $singleByte; + $this->_map['koi-?7'] = $singleByte; + $this->_map['koi-?8-?.+'] = $singleByte; + $this->_map['mik'] = $singleByte; + $this->_map['(cork|t1)'] = $singleByte; + $this->_map['v?iscii'] = $singleByte; + + //16 bits + $this->_map['(ucs-?2|utf-?16)'] = $doubleByte; + + //32 bits + $this->_map['(ucs-?4|utf-?32)'] = $fourBytes; + + //Fallback + $this->_map['.*'] = $singleByte; + } + + /** + * Returns a CharacterReader suitable for the charset applied. + * @param string $charset + * @return Swift_CharacterReader + */ + public function getReaderFor($charset) + { + $charset = trim(strtolower($charset)); + foreach ($this->_map as $pattern => $spec) + { + $re = '/^' . $pattern . '$/D'; + if (preg_match($re, $charset)) + { + if (!array_key_exists($pattern, $this->_loaded)) + { + $reflector = new ReflectionClass($spec['class']); + if ($reflector->getConstructor()) + { + $reader = $reflector->newInstanceArgs($spec['constructor']); + } + else + { + $reader = $reflector->newInstance(); + } + $this->_loaded[$pattern] = $reader; + } + return $this->_loaded[$pattern]; + } + } + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReaderFactory/SimpleCharacterReaderFactory.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReaderFactory/SimpleCharacterReaderFactory.php new file mode 100644 index 0000000..a6f9f94 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterReaderFactory/SimpleCharacterReaderFactory.php @@ -0,0 +1,119 @@ + $prefix . 'GenericFixedWidthReader', + 'constructor' => array(1) + ); + + $doubleByte = array( + 'class' => $prefix . 'GenericFixedWidthReader', + 'constructor' => array(2) + ); + + $fourBytes = array( + 'class' => $prefix . 'GenericFixedWidthReader', + 'constructor' => array(4) + ); + + //Utf-8 + $this->_map['utf-?8'] = array( + 'class' => $prefix . 'Utf8Reader', + 'constructor' => array() + ); + + //7-8 bit charsets + $this->_map['(us-)?ascii'] = $singleByte; + $this->_map['(iso|iec)-?8859-?[0-9]+'] = $singleByte; + $this->_map['windows-?125[0-9]'] = $singleByte; + $this->_map['cp-?[0-9]+'] = $singleByte; + $this->_map['ansi'] = $singleByte; + $this->_map['macintosh'] = $singleByte; + $this->_map['koi-?7'] = $singleByte; + $this->_map['koi-?8-?.+'] = $singleByte; + $this->_map['mik'] = $singleByte; + $this->_map['(cork|t1)'] = $singleByte; + $this->_map['v?iscii'] = $singleByte; + + //16 bits + $this->_map['(ucs-?2|utf-?16)'] = $doubleByte; + + //32 bits + $this->_map['(ucs-?4|utf-?32)'] = $fourBytes; + + //Fallback + $this->_map['.*'] = $singleByte; + } + + /** + * Returns a CharacterReader suitable for the charset applied. + * @param string $charset + * @return Swift_CharacterReader + */ + public function getReaderFor($charset) + { + $charset = trim(strtolower($charset)); + foreach ($this->_map as $pattern => $spec) + { + $re = '/^' . $pattern . '$/D'; + if (preg_match($re, $charset)) + { + if (!array_key_exists($pattern, $this->_loaded)) + { + $reflector = new ReflectionClass($spec['class']); + if ($reflector->getConstructor()) + { + $reader = $reflector->newInstanceArgs($spec['constructor']); + } + else + { + $reader = $reflector->newInstance(); + } + $this->_loaded[$pattern] = $reader; + } + return $this->_loaded[$pattern]; + } + } + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterStream.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterStream.php new file mode 100644 index 0000000..bf91528 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterStream.php @@ -0,0 +1,86 @@ +setCharacterReaderFactory($factory); + $this->setCharacterSet($charset); + } + + /** + * Set the character set used in this CharacterStream. + * @param string $charset + */ + public function setCharacterSet($charset) + { + $this->_charset = $charset; + $this->_charReader = null; + } + + /** + * Set the CharacterReaderFactory for multi charset support. + * @param Swift_CharacterReaderFactory $factory + */ + public function setCharacterReaderFactory( + Swift_CharacterReaderFactory $factory) + { + $this->_charReaderFactory = $factory; + } + + /** + * Overwrite this character stream using the byte sequence in the byte stream. + * @param Swift_OutputByteStream $os output stream to read from + */ + public function importByteStream(Swift_OutputByteStream $os) + { + if (!isset($this->_charReader)) + { + $this->_charReader = $this->_charReaderFactory + ->getReaderFor($this->_charset); + } + + $startLength = $this->_charReader->getInitialByteSize(); + while (false !== $bytes = $os->read($startLength)) + { + $c = array(); + for ($i = 0, $len = strlen($bytes); $i < $len; ++$i) + { + $c[] = self::$_byteMap[$bytes[$i]]; + } + $size = count($c); + $need = $this->_charReader + ->validateByteSequence($c, $size); + if ($need > 0 && + false !== $bytes = $os->read($need)) + { + for ($i = 0, $len = strlen($bytes); $i < $len; ++$i) + { + $c[] = self::$_byteMap[$bytes[$i]]; + } + } + $this->_array[] = $c; + ++$this->_array_size; + } + } + + /** + * Import a string a bytes into this CharacterStream, overwriting any existing + * data in the stream. + * @param string $string + */ + public function importString($string) + { + $this->flushContents(); + $this->write($string); + } + + /** + * Read $length characters from the stream and move the internal pointer + * $length further into the stream. + * @param int $length + * @return string + */ + public function read($length) + { + if ($this->_offset == $this->_array_size) + { + return false; + } + + // Don't use array slice + $arrays = array(); + $end = $length + $this->_offset; + for ($i = $this->_offset; $i < $end; ++$i) + { + if (!isset($this->_array[$i])) + { + break; + } + $arrays[] = $this->_array[$i]; + } + $this->_offset += $i - $this->_offset; // Limit function calls + $chars = false; + foreach ($arrays as $array) + { + $chars .= implode('', array_map('chr', $array)); + } + return $chars; + } + + /** + * Read $length characters from the stream and return a 1-dimensional array + * containing there octet values. + * @param int $length + * @return int[] + */ + public function readBytes($length) + { + if ($this->_offset == $this->_array_size) + { + return false; + } + $arrays = array(); + $end = $length + $this->_offset; + for ($i = $this->_offset; $i < $end; ++$i) + { + if (!isset($this->_array[$i])) + { + break; + } + $arrays[] = $this->_array[$i]; + } + $this->_offset += ($i - $this->_offset); // Limit function calls + return call_user_func_array('array_merge', $arrays); + } + + /** + * Write $chars to the end of the stream. + * @param string $chars + */ + public function write($chars) + { + if (!isset($this->_charReader)) + { + $this->_charReader = $this->_charReaderFactory->getReaderFor( + $this->_charset); + } + + $startLength = $this->_charReader->getInitialByteSize(); + + $fp = fopen('php://memory', 'w+b'); + fwrite($fp, $chars); + unset($chars); + fseek($fp, 0, SEEK_SET); + + $buffer = array(0); + $buf_pos = 1; + $buf_len = 1; + $has_datas = true; + do + { + $bytes = array(); + // Buffer Filing + if ($buf_len - $buf_pos < $startLength) + { + $buf = array_splice($buffer, $buf_pos); + $new = $this->_reloadBuffer($fp, 100); + if ($new) + { + $buffer = array_merge($buf, $new); + $buf_len = count($buffer); + $buf_pos = 0; + } + else + { + $has_datas = false; + } + } + if ($buf_len - $buf_pos > 0) + { + $size = 0; + for ($i = 0; $i < $startLength && isset($buffer[$buf_pos]); ++$i) + { + ++$size; + $bytes[] = $buffer[$buf_pos++]; + } + $need = $this->_charReader->validateByteSequence( + $bytes, $size); + if ($need > 0) + { + if ($buf_len - $buf_pos < $need) + { + $new = $this->_reloadBuffer($fp, $need); + + if ($new) + { + $buffer = array_merge($buffer, $new); + $buf_len = count($buffer); + } + } + for ($i = 0; $i < $need && isset($buffer[$buf_pos]); ++$i) + { + $bytes[] = $buffer[$buf_pos++]; + } + } + $this->_array[] = $bytes; + ++$this->_array_size; + } + } + while ($has_datas); + + fclose($fp); + } + + /** + * Move the internal pointer to $charOffset in the stream. + * @param int $charOffset + */ + public function setPointer($charOffset) + { + if ($charOffset > $this->_array_size) + { + $charOffset = $this->_array_size; + } + elseif ($charOffset < 0) + { + $charOffset = 0; + } + $this->_offset = $charOffset; + } + + /** + * Empty the stream and reset the internal pointer. + */ + public function flushContents() + { + $this->_offset = 0; + $this->_array = array(); + $this->_array_size = 0; + } + + private function _reloadBuffer($fp, $len) + { + if (!feof($fp) && ($bytes = fread($fp, $len)) !== false) + { + $buf = array(); + for ($i = 0, $len = strlen($bytes); $i < $len; ++$i) + { + $buf[] = self::$_byteMap[$bytes[$i]]; + } + return $buf; + } + return false; + } + + private static function _initializeMaps() + { + if (!isset(self::$_charMap)) + { + self::$_charMap = array(); + for ($byte = 0; $byte < 256; ++$byte) + { + self::$_charMap[$byte] = chr($byte); + } + self::$_byteMap = array_flip(self::$_charMap); + } + } +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterStream/.svn/text-base/NgCharacterStream.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterStream/.svn/text-base/NgCharacterStream.php.svn-base new file mode 100644 index 0000000..f090aa7 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterStream/.svn/text-base/NgCharacterStream.php.svn-base @@ -0,0 +1,300 @@ +. + + */ + +//@require 'Swift/CharacterStream.php'; +//@require 'Swift/OutputByteStream.php'; + + +/** + * A CharacterStream implementation which stores characters in an internal array. + * @package Swift + * @subpackage CharacterStream + * @author Xavier De Cock + */ + +Class Swift_CharacterStream_NgCharacterStream + implements Swift_CharacterStream +{ + + /** + * The char reader (lazy-loaded) for the current charset. + * @var Swift_CharacterReader + * @access private + */ + private $_charReader; + + /** + * A factory for creatiing CharacterReader instances. + * @var Swift_CharacterReaderFactory + * @access private + */ + private $_charReaderFactory; + + /** + * The character set this stream is using. + * @var string + * @access private + */ + private $_charset; + + /** + * The datas stored as is + * + * @var string + */ + private $_datas = ""; + + /** + * Number of bytes in the stream + * + * @var int + */ + private $_datasSize = 0; + + /** + * Map + * + * @var mixed + */ + private $_map; + + /** + * Map Type + * + * @var int + */ + private $_mapType = 0; + + /** + * Number of characters in the stream + * + * @var int + */ + private $_charCount = 0; + + /** + * Position in the stream + * + * @var unknown_type + */ + private $_currentPos = 0; + + /** + * The constructor + * + * @param Swift_CharacterReaderFactory $factory + * @param unknown_type $charset + */ + public function __construct(Swift_CharacterReaderFactory $factory, + $charset) + { + $this->setCharacterReaderFactory($factory); + $this->setCharacterSet($charset); + } + + /* -- Changing parameters of the stream -- */ + + /** + * Set the character set used in this CharacterStream. + * @param string $charset + */ + public function setCharacterSet($charset) + { + $this->_charset = $charset; + $this->_charReader = null; + $this->_mapType = 0; + } + + /** + * Set the CharacterReaderFactory for multi charset support. + * @param Swift_CharacterReaderFactory $factory + */ + public function setCharacterReaderFactory( + Swift_CharacterReaderFactory $factory) + { + $this->_charReaderFactory = $factory; + } + + /** + * @see Swift_CharacterStream::flushContents() + * + */ + public function flushContents() + { + $this->_datas = null; + $this->_map = null; + $this->_charCount = 0; + $this->_currentPos = 0; + $this->_datasSize = 0; + } + + /** + * @see Swift_CharacterStream::importByteStream() + * + * @param Swift_OutputByteStream $os + */ + public function importByteStream(Swift_OutputByteStream $os) + { + $this->flushContents(); + $blocks=512; + $os->setReadPointer(0); + while(false!==($read = $os->read($blocks))) + $this->write($read); + } + + /** + * @see Swift_CharacterStream::importString() + * + * @param string $string + */ + public function importString($string) + { + $this->flushContents(); + $this->write($string); + } + + /** + * @see Swift_CharacterStream::read() + * + * @param int $length + * @return string + */ + public function read($length) + { + if ($this->_currentPos>=$this->_charCount) + { + return false; + } + $ret=false; + $length = ($this->_currentPos+$length > $this->_charCount) + ? $this->_charCount - $this->_currentPos + : $length; + switch ($this->_mapType) + { + case Swift_CharacterReader::MAP_TYPE_FIXED_LEN: + $len = $length*$this->_map; + $ret = substr($this->_datas, + $this->_currentPos * $this->_map, + $len); + $this->_currentPos += $length; + break; + + case Swift_CharacterReader::MAP_TYPE_INVALID: + $end = $this->_currentPos + $length; + $end = $end > $this->_charCount + ?$this->_charCount + :$end; + $ret = ''; + for (; $this->_currentPos < $length; ++$this->_currentPos) + { + if (isset ($this->_map[$this->_currentPos])) + { + $ret .= '?'; + } + else + { + $ret .= $this->_datas[$this->_currentPos]; + } + } + break; + + case Swift_CharacterReader::MAP_TYPE_POSITIONS: + $end = $this->_currentPos + $length; + $end = $end > $this->_charCount + ?$this->_charCount + :$end; + $ret = ''; + $start = 0; + if ($this->_currentPos>0) + { + $start = $this->_map['p'][$this->_currentPos-1]; + } + $to = $start; + for (; $this->_currentPos < $end; ++$this->_currentPos) + { + if (isset($this->_map['i'][$this->_currentPos])) { + $ret .= substr($this->_datas, $start, $to - $start).'?'; + $start = $this->_map['p'][$this->_currentPos]; + } else { + $to = $this->_map['p'][$this->_currentPos]; + } + } + $ret .= substr($this->_datas, $start, $to - $start); + break; + } + return $ret; + } + + /** + * @see Swift_CharacterStream::readBytes() + * + * @param int $length + * @return int[] + */ + public function readBytes($length) + { + $read=$this->read($length); + if ($read!==false) + { + $ret = array_map('ord', str_split($read, 1)); + return $ret; + } + return false; + } + + /** + * @see Swift_CharacterStream::setPointer() + * + * @param int $charOffset + */ + public function setPointer($charOffset) + { + if ($this->_charCount<$charOffset){ + $charOffset=$this->_charCount; + } + $this->_currentPos = $charOffset; + } + + /** + * @see Swift_CharacterStream::write() + * + * @param string $chars + */ + public function write($chars) + { + if (!isset($this->_charReader)) + { + $this->_charReader = $this->_charReaderFactory->getReaderFor( + $this->_charset); + $this->_map = array(); + $this->_mapType = $this->_charReader->getMapType(); + } + $ignored=''; + $this->_datas .= $chars; + $this->_charCount += $this->_charReader->getCharPositions(substr($this->_datas, $this->_datasSize), $this->_datasSize, $this->_map, $ignored); + if ($ignored!==false) { + $this->_datasSize=strlen($this->_datas)-strlen($ignored); + } + else + { + $this->_datasSize=strlen($this->_datas); + } + } +} \ No newline at end of file diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterStream/ArrayCharacterStream.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterStream/ArrayCharacterStream.php new file mode 100644 index 0000000..9612365 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterStream/ArrayCharacterStream.php @@ -0,0 +1,319 @@ +setCharacterReaderFactory($factory); + $this->setCharacterSet($charset); + } + + /** + * Set the character set used in this CharacterStream. + * @param string $charset + */ + public function setCharacterSet($charset) + { + $this->_charset = $charset; + $this->_charReader = null; + } + + /** + * Set the CharacterReaderFactory for multi charset support. + * @param Swift_CharacterReaderFactory $factory + */ + public function setCharacterReaderFactory( + Swift_CharacterReaderFactory $factory) + { + $this->_charReaderFactory = $factory; + } + + /** + * Overwrite this character stream using the byte sequence in the byte stream. + * @param Swift_OutputByteStream $os output stream to read from + */ + public function importByteStream(Swift_OutputByteStream $os) + { + if (!isset($this->_charReader)) + { + $this->_charReader = $this->_charReaderFactory + ->getReaderFor($this->_charset); + } + + $startLength = $this->_charReader->getInitialByteSize(); + while (false !== $bytes = $os->read($startLength)) + { + $c = array(); + for ($i = 0, $len = strlen($bytes); $i < $len; ++$i) + { + $c[] = self::$_byteMap[$bytes[$i]]; + } + $size = count($c); + $need = $this->_charReader + ->validateByteSequence($c, $size); + if ($need > 0 && + false !== $bytes = $os->read($need)) + { + for ($i = 0, $len = strlen($bytes); $i < $len; ++$i) + { + $c[] = self::$_byteMap[$bytes[$i]]; + } + } + $this->_array[] = $c; + ++$this->_array_size; + } + } + + /** + * Import a string a bytes into this CharacterStream, overwriting any existing + * data in the stream. + * @param string $string + */ + public function importString($string) + { + $this->flushContents(); + $this->write($string); + } + + /** + * Read $length characters from the stream and move the internal pointer + * $length further into the stream. + * @param int $length + * @return string + */ + public function read($length) + { + if ($this->_offset == $this->_array_size) + { + return false; + } + + // Don't use array slice + $arrays = array(); + $end = $length + $this->_offset; + for ($i = $this->_offset; $i < $end; ++$i) + { + if (!isset($this->_array[$i])) + { + break; + } + $arrays[] = $this->_array[$i]; + } + $this->_offset += $i - $this->_offset; // Limit function calls + $chars = false; + foreach ($arrays as $array) + { + $chars .= implode('', array_map('chr', $array)); + } + return $chars; + } + + /** + * Read $length characters from the stream and return a 1-dimensional array + * containing there octet values. + * @param int $length + * @return int[] + */ + public function readBytes($length) + { + if ($this->_offset == $this->_array_size) + { + return false; + } + $arrays = array(); + $end = $length + $this->_offset; + for ($i = $this->_offset; $i < $end; ++$i) + { + if (!isset($this->_array[$i])) + { + break; + } + $arrays[] = $this->_array[$i]; + } + $this->_offset += ($i - $this->_offset); // Limit function calls + return call_user_func_array('array_merge', $arrays); + } + + /** + * Write $chars to the end of the stream. + * @param string $chars + */ + public function write($chars) + { + if (!isset($this->_charReader)) + { + $this->_charReader = $this->_charReaderFactory->getReaderFor( + $this->_charset); + } + + $startLength = $this->_charReader->getInitialByteSize(); + + $fp = fopen('php://memory', 'w+b'); + fwrite($fp, $chars); + unset($chars); + fseek($fp, 0, SEEK_SET); + + $buffer = array(0); + $buf_pos = 1; + $buf_len = 1; + $has_datas = true; + do + { + $bytes = array(); + // Buffer Filing + if ($buf_len - $buf_pos < $startLength) + { + $buf = array_splice($buffer, $buf_pos); + $new = $this->_reloadBuffer($fp, 100); + if ($new) + { + $buffer = array_merge($buf, $new); + $buf_len = count($buffer); + $buf_pos = 0; + } + else + { + $has_datas = false; + } + } + if ($buf_len - $buf_pos > 0) + { + $size = 0; + for ($i = 0; $i < $startLength && isset($buffer[$buf_pos]); ++$i) + { + ++$size; + $bytes[] = $buffer[$buf_pos++]; + } + $need = $this->_charReader->validateByteSequence( + $bytes, $size); + if ($need > 0) + { + if ($buf_len - $buf_pos < $need) + { + $new = $this->_reloadBuffer($fp, $need); + + if ($new) + { + $buffer = array_merge($buffer, $new); + $buf_len = count($buffer); + } + } + for ($i = 0; $i < $need && isset($buffer[$buf_pos]); ++$i) + { + $bytes[] = $buffer[$buf_pos++]; + } + } + $this->_array[] = $bytes; + ++$this->_array_size; + } + } + while ($has_datas); + + fclose($fp); + } + + /** + * Move the internal pointer to $charOffset in the stream. + * @param int $charOffset + */ + public function setPointer($charOffset) + { + if ($charOffset > $this->_array_size) + { + $charOffset = $this->_array_size; + } + elseif ($charOffset < 0) + { + $charOffset = 0; + } + $this->_offset = $charOffset; + } + + /** + * Empty the stream and reset the internal pointer. + */ + public function flushContents() + { + $this->_offset = 0; + $this->_array = array(); + $this->_array_size = 0; + } + + private function _reloadBuffer($fp, $len) + { + if (!feof($fp) && ($bytes = fread($fp, $len)) !== false) + { + $buf = array(); + for ($i = 0, $len = strlen($bytes); $i < $len; ++$i) + { + $buf[] = self::$_byteMap[$bytes[$i]]; + } + return $buf; + } + return false; + } + + private static function _initializeMaps() + { + if (!isset(self::$_charMap)) + { + self::$_charMap = array(); + for ($byte = 0; $byte < 256; ++$byte) + { + self::$_charMap[$byte] = chr($byte); + } + self::$_byteMap = array_flip(self::$_charMap); + } + } +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterStream/NgCharacterStream.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterStream/NgCharacterStream.php new file mode 100644 index 0000000..f090aa7 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/CharacterStream/NgCharacterStream.php @@ -0,0 +1,300 @@ +. + + */ + +//@require 'Swift/CharacterStream.php'; +//@require 'Swift/OutputByteStream.php'; + + +/** + * A CharacterStream implementation which stores characters in an internal array. + * @package Swift + * @subpackage CharacterStream + * @author Xavier De Cock + */ + +Class Swift_CharacterStream_NgCharacterStream + implements Swift_CharacterStream +{ + + /** + * The char reader (lazy-loaded) for the current charset. + * @var Swift_CharacterReader + * @access private + */ + private $_charReader; + + /** + * A factory for creatiing CharacterReader instances. + * @var Swift_CharacterReaderFactory + * @access private + */ + private $_charReaderFactory; + + /** + * The character set this stream is using. + * @var string + * @access private + */ + private $_charset; + + /** + * The datas stored as is + * + * @var string + */ + private $_datas = ""; + + /** + * Number of bytes in the stream + * + * @var int + */ + private $_datasSize = 0; + + /** + * Map + * + * @var mixed + */ + private $_map; + + /** + * Map Type + * + * @var int + */ + private $_mapType = 0; + + /** + * Number of characters in the stream + * + * @var int + */ + private $_charCount = 0; + + /** + * Position in the stream + * + * @var unknown_type + */ + private $_currentPos = 0; + + /** + * The constructor + * + * @param Swift_CharacterReaderFactory $factory + * @param unknown_type $charset + */ + public function __construct(Swift_CharacterReaderFactory $factory, + $charset) + { + $this->setCharacterReaderFactory($factory); + $this->setCharacterSet($charset); + } + + /* -- Changing parameters of the stream -- */ + + /** + * Set the character set used in this CharacterStream. + * @param string $charset + */ + public function setCharacterSet($charset) + { + $this->_charset = $charset; + $this->_charReader = null; + $this->_mapType = 0; + } + + /** + * Set the CharacterReaderFactory for multi charset support. + * @param Swift_CharacterReaderFactory $factory + */ + public function setCharacterReaderFactory( + Swift_CharacterReaderFactory $factory) + { + $this->_charReaderFactory = $factory; + } + + /** + * @see Swift_CharacterStream::flushContents() + * + */ + public function flushContents() + { + $this->_datas = null; + $this->_map = null; + $this->_charCount = 0; + $this->_currentPos = 0; + $this->_datasSize = 0; + } + + /** + * @see Swift_CharacterStream::importByteStream() + * + * @param Swift_OutputByteStream $os + */ + public function importByteStream(Swift_OutputByteStream $os) + { + $this->flushContents(); + $blocks=512; + $os->setReadPointer(0); + while(false!==($read = $os->read($blocks))) + $this->write($read); + } + + /** + * @see Swift_CharacterStream::importString() + * + * @param string $string + */ + public function importString($string) + { + $this->flushContents(); + $this->write($string); + } + + /** + * @see Swift_CharacterStream::read() + * + * @param int $length + * @return string + */ + public function read($length) + { + if ($this->_currentPos>=$this->_charCount) + { + return false; + } + $ret=false; + $length = ($this->_currentPos+$length > $this->_charCount) + ? $this->_charCount - $this->_currentPos + : $length; + switch ($this->_mapType) + { + case Swift_CharacterReader::MAP_TYPE_FIXED_LEN: + $len = $length*$this->_map; + $ret = substr($this->_datas, + $this->_currentPos * $this->_map, + $len); + $this->_currentPos += $length; + break; + + case Swift_CharacterReader::MAP_TYPE_INVALID: + $end = $this->_currentPos + $length; + $end = $end > $this->_charCount + ?$this->_charCount + :$end; + $ret = ''; + for (; $this->_currentPos < $length; ++$this->_currentPos) + { + if (isset ($this->_map[$this->_currentPos])) + { + $ret .= '?'; + } + else + { + $ret .= $this->_datas[$this->_currentPos]; + } + } + break; + + case Swift_CharacterReader::MAP_TYPE_POSITIONS: + $end = $this->_currentPos + $length; + $end = $end > $this->_charCount + ?$this->_charCount + :$end; + $ret = ''; + $start = 0; + if ($this->_currentPos>0) + { + $start = $this->_map['p'][$this->_currentPos-1]; + } + $to = $start; + for (; $this->_currentPos < $end; ++$this->_currentPos) + { + if (isset($this->_map['i'][$this->_currentPos])) { + $ret .= substr($this->_datas, $start, $to - $start).'?'; + $start = $this->_map['p'][$this->_currentPos]; + } else { + $to = $this->_map['p'][$this->_currentPos]; + } + } + $ret .= substr($this->_datas, $start, $to - $start); + break; + } + return $ret; + } + + /** + * @see Swift_CharacterStream::readBytes() + * + * @param int $length + * @return int[] + */ + public function readBytes($length) + { + $read=$this->read($length); + if ($read!==false) + { + $ret = array_map('ord', str_split($read, 1)); + return $ret; + } + return false; + } + + /** + * @see Swift_CharacterStream::setPointer() + * + * @param int $charOffset + */ + public function setPointer($charOffset) + { + if ($this->_charCount<$charOffset){ + $charOffset=$this->_charCount; + } + $this->_currentPos = $charOffset; + } + + /** + * @see Swift_CharacterStream::write() + * + * @param string $chars + */ + public function write($chars) + { + if (!isset($this->_charReader)) + { + $this->_charReader = $this->_charReaderFactory->getReaderFor( + $this->_charset); + $this->_map = array(); + $this->_mapType = $this->_charReader->getMapType(); + } + $ignored=''; + $this->_datas .= $chars; + $this->_charCount += $this->_charReader->getCharPositions(substr($this->_datas, $this->_datasSize), $this->_datasSize, $this->_map, $ignored); + if ($ignored!==false) { + $this->_datasSize=strlen($this->_datas)-strlen($ignored); + } + else + { + $this->_datasSize=strlen($this->_datas); + } + } +} \ No newline at end of file diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/ConfigurableSpool.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/ConfigurableSpool.php new file mode 100644 index 0000000..27a9b6c --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/ConfigurableSpool.php @@ -0,0 +1,59 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Base class for Spools (implements time and message limits). + * @package Swift + * @author Fabien Potencier + */ +abstract class Swift_ConfigurableSpool implements Swift_Spool +{ + /** The maximum number of messages to send per flush */ + private $_message_limit; + + /** The time limit per flush */ + private $_time_limit; + + /** + * Sets the maximum number of messages to send per flush. + * @param int $limit The limit + */ + public function setMessageLimit($limit) + { + $this->_message_limit = (int) $limit; + } + + /** + * Gets the maximum number of messages to send per flush. + * @return int The limit + */ + public function getMessageLimit() + { + return $this->_message_limit; + } + + /** + * Sets the time limit (in seconds) per flush. + * @param int $limit The limit + */ + public function setTimeLimit($limit) + { + $this->_time_limit = (int) $limit; + } + + /** + * Gets the time limit (in seconds) per flush. + * @return int The limit + */ + public function getTimeLimit() + { + return $this->_time_limit; + } +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/DependencyContainer.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/DependencyContainer.php new file mode 100644 index 0000000..b6ba554 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/DependencyContainer.php @@ -0,0 +1,349 @@ +_store); + } + + /** + * Test if an item is registered in this container with the given name. + * @param string $itemName + * @return boolean + * @see register() + */ + public function has($itemName) + { + return array_key_exists($itemName, $this->_store) + && isset($this->_store[$itemName]['lookupType']); + } + + /** + * Lookup the item with the given $itemName. + * @param string $itemName + * @return mixed + * @throws Swift_DependencyException If the dependency is not found + * @see register() + */ + public function lookup($itemName) + { + if (!$this->has($itemName)) + { + throw new Swift_DependencyException( + 'Cannot lookup dependency "' . $itemName . '" since it is not registered.' + ); + } + + switch ($this->_store[$itemName]['lookupType']) + { + case self::TYPE_ALIAS: + return $this->_createAlias($itemName); + case self::TYPE_VALUE: + return $this->_getValue($itemName); + case self::TYPE_INSTANCE: + return $this->_createNewInstance($itemName); + case self::TYPE_SHARED: + return $this->_createSharedInstance($itemName); + } + } + + /** + * Create an array of arguments passed to the constructor of $itemName. + * @param string $itemName + * @return array + */ + public function createDependenciesFor($itemName) + { + $args = array(); + if (isset($this->_store[$itemName]['args'])) + { + $args = $this->_resolveArgs($this->_store[$itemName]['args']); + } + return $args; + } + + /** + * Register a new dependency with $itemName. + * This method returns the current DependencyContainer instance because it + * requires the use of the fluid interface to set the specific details for the + * dependency. + * + * @param string $itemName + * @return Swift_DependencyContainer + * @see asNewInstanceOf(), asSharedInstanceOf(), asValue() + */ + public function register($itemName) + { + $this->_store[$itemName] = array(); + $this->_endPoint =& $this->_store[$itemName]; + return $this; + } + + /** + * Specify the previously registered item as a literal value. + * {@link register()} must be called before this will work. + * + * @param mixed $value + * @return Swift_DependencyContainer + */ + public function asValue($value) + { + $endPoint =& $this->_getEndPoint(); + $endPoint['lookupType'] = self::TYPE_VALUE; + $endPoint['value'] = $value; + return $this; + } + + /** + * Specify the previously registered item as an alias of another item. + * @param string $lookup + * @return Swift_DependencyContainer + */ + public function asAliasOf($lookup) + { + $endPoint =& $this->_getEndPoint(); + $endPoint['lookupType'] = self::TYPE_ALIAS; + $endPoint['ref'] = $lookup; + return $this; + } + + /** + * Specify the previously registered item as a new instance of $className. + * {@link register()} must be called before this will work. + * Any arguments can be set with {@link withDependencies()}, + * {@link addConstructorValue()} or {@link addConstructorLookup()}. + * + * @param string $className + * @return Swift_DependencyContainer + * @see withDependencies(), addConstructorValue(), addConstructorLookup() + */ + public function asNewInstanceOf($className) + { + $endPoint =& $this->_getEndPoint(); + $endPoint['lookupType'] = self::TYPE_INSTANCE; + $endPoint['className'] = $className; + return $this; + } + + /** + * Specify the previously registered item as a shared instance of $className. + * {@link register()} must be called before this will work. + * @param string $className + * @return Swift_DependencyContainer + */ + public function asSharedInstanceOf($className) + { + $endPoint =& $this->_getEndPoint(); + $endPoint['lookupType'] = self::TYPE_SHARED; + $endPoint['className'] = $className; + return $this; + } + + /** + * Specify a list of injected dependencies for the previously registered item. + * This method takes an array of lookup names. + * + * @param array $lookups + * @return Swift_DependencyContainer + * @see addConstructorValue(), addConstructorLookup() + */ + public function withDependencies(array $lookups) + { + $endPoint =& $this->_getEndPoint(); + $endPoint['args'] = array(); + foreach ($lookups as $lookup) + { + $this->addConstructorLookup($lookup); + } + return $this; + } + + /** + * Specify a literal (non looked up) value for the constructor of the + * previously registered item. + * + * @param mixed $value + * @return Swift_DependencyContainer + * @see withDependencies(), addConstructorLookup() + */ + public function addConstructorValue($value) + { + $endPoint =& $this->_getEndPoint(); + if (!isset($endPoint['args'])) + { + $endPoint['args'] = array(); + } + $endPoint['args'][] = array('type' => 'value', 'item' => $value); + return $this; + } + + /** + * Specify a dependency lookup for the constructor of the previously + * registered item. + * + * @param string $lookup + * @return Swift_DependencyContainer + * @see withDependencies(), addConstructorValue() + */ + public function addConstructorLookup($lookup) + { + $endPoint =& $this->_getEndPoint(); + if (!isset($this->_endPoint['args'])) + { + $endPoint['args'] = array(); + } + $endPoint['args'][] = array('type' => 'lookup', 'item' => $lookup); + return $this; + } + + // -- Private methods + + /** Get the literal value with $itemName */ + private function _getValue($itemName) + { + return $this->_store[$itemName]['value']; + } + + /** Resolve an alias to another item */ + private function _createAlias($itemName) + { + return $this->lookup($this->_store[$itemName]['ref']); + } + + /** Create a fresh instance of $itemName */ + private function _createNewInstance($itemName) + { + $reflector = new ReflectionClass($this->_store[$itemName]['className']); + if ($reflector->getConstructor()) + { + return $reflector->newInstanceArgs( + $this->createDependenciesFor($itemName) + ); + } + else + { + return $reflector->newInstance(); + } + } + + /** Create and register a shared instance of $itemName */ + private function _createSharedInstance($itemName) + { + if (!isset($this->_store[$itemName]['instance'])) + { + $this->_store[$itemName]['instance'] = $this->_createNewInstance($itemName); + } + return $this->_store[$itemName]['instance']; + } + + /** Get the current endpoint in the store */ + private function &_getEndPoint() + { + if (!isset($this->_endPoint)) + { + throw new BadMethodCallException( + 'Component must first be registered by calling register()' + ); + } + return $this->_endPoint; + } + + /** Get an argument list with dependencies resolved */ + private function _resolveArgs(array $args) + { + $resolved = array(); + foreach ($args as $argDefinition) + { + switch ($argDefinition['type']) + { + case 'lookup': + $resolved[] = $this->_lookupRecursive($argDefinition['item']); + break; + case 'value': + $resolved[] = $argDefinition['item']; + break; + } + } + return $resolved; + } + + /** Resolve a single dependency with an collections */ + private function _lookupRecursive($item) + { + if (is_array($item)) + { + $collection = array(); + foreach ($item as $k => $v) + { + $collection[$k] = $this->_lookupRecursive($v); + } + return $collection; + } + else + { + return $this->lookup($item); + } + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/DependencyException.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/DependencyException.php new file mode 100644 index 0000000..bb1681c --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/DependencyException.php @@ -0,0 +1,30 @@ +createDependenciesFor('mime.embeddedfile') + ); + + $this->setBody($data); + $this->setFilename($filename); + if ($contentType) + { + $this->setContentType($contentType); + } + } + + /** + * Create a new EmbeddedFile. + * @param string|Swift_OutputByteStream $data + * @param string $filename + * @param string $contentType + * @return Swift_Mime_EmbeddedFile + */ + public static function newInstance($data = null, $filename = null, + $contentType = null) + { + return new self($data, $filename, $contentType); + } + + /** + * Create a new EmbeddedFile from a filesystem path. + * @param string $path + * @return Swift_Mime_EmbeddedFile + */ + public static function fromPath($path) + { + return self::newInstance()->setFile( + new Swift_ByteStream_FileByteStream($path) + ); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Encoder.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Encoder.php new file mode 100644 index 0000000..32aa96a --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Encoder.php @@ -0,0 +1,32 @@ += $maxLineLength || 76 < $maxLineLength) + { + $maxLineLength = 76; + } + + $encodedString = base64_encode($string); + $firstLine = ''; + + if (0 != $firstLineOffset) + { + $firstLine = substr( + $encodedString, 0, $maxLineLength - $firstLineOffset + ) . "\r\n"; + $encodedString = substr( + $encodedString, $maxLineLength - $firstLineOffset + ); + } + + return $firstLine . trim(chunk_split($encodedString, $maxLineLength, "\r\n")); + } + + /** + * Does nothing. + */ + public function charsetChanged($charset) + { + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Encoder/.svn/text-base/QpEncoder.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Encoder/.svn/text-base/QpEncoder.php.svn-base new file mode 100644 index 0000000..6914f6c --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Encoder/.svn/text-base/QpEncoder.php.svn-base @@ -0,0 +1,263 @@ + '=00', 1 => '=01', 2 => '=02', 3 => '=03', 4 => '=04', + 5 => '=05', 6 => '=06', 7 => '=07', 8 => '=08', 9 => '=09', + 10 => '=0A', 11 => '=0B', 12 => '=0C', 13 => '=0D', 14 => '=0E', + 15 => '=0F', 16 => '=10', 17 => '=11', 18 => '=12', 19 => '=13', + 20 => '=14', 21 => '=15', 22 => '=16', 23 => '=17', 24 => '=18', + 25 => '=19', 26 => '=1A', 27 => '=1B', 28 => '=1C', 29 => '=1D', + 30 => '=1E', 31 => '=1F', 32 => '=20', 33 => '=21', 34 => '=22', + 35 => '=23', 36 => '=24', 37 => '=25', 38 => '=26', 39 => '=27', + 40 => '=28', 41 => '=29', 42 => '=2A', 43 => '=2B', 44 => '=2C', + 45 => '=2D', 46 => '=2E', 47 => '=2F', 48 => '=30', 49 => '=31', + 50 => '=32', 51 => '=33', 52 => '=34', 53 => '=35', 54 => '=36', + 55 => '=37', 56 => '=38', 57 => '=39', 58 => '=3A', 59 => '=3B', + 60 => '=3C', 61 => '=3D', 62 => '=3E', 63 => '=3F', 64 => '=40', + 65 => '=41', 66 => '=42', 67 => '=43', 68 => '=44', 69 => '=45', + 70 => '=46', 71 => '=47', 72 => '=48', 73 => '=49', 74 => '=4A', + 75 => '=4B', 76 => '=4C', 77 => '=4D', 78 => '=4E', 79 => '=4F', + 80 => '=50', 81 => '=51', 82 => '=52', 83 => '=53', 84 => '=54', + 85 => '=55', 86 => '=56', 87 => '=57', 88 => '=58', 89 => '=59', + 90 => '=5A', 91 => '=5B', 92 => '=5C', 93 => '=5D', 94 => '=5E', + 95 => '=5F', 96 => '=60', 97 => '=61', 98 => '=62', 99 => '=63', + 100 => '=64', 101 => '=65', 102 => '=66', 103 => '=67', 104 => '=68', + 105 => '=69', 106 => '=6A', 107 => '=6B', 108 => '=6C', 109 => '=6D', + 110 => '=6E', 111 => '=6F', 112 => '=70', 113 => '=71', 114 => '=72', + 115 => '=73', 116 => '=74', 117 => '=75', 118 => '=76', 119 => '=77', + 120 => '=78', 121 => '=79', 122 => '=7A', 123 => '=7B', 124 => '=7C', + 125 => '=7D', 126 => '=7E', 127 => '=7F', 128 => '=80', 129 => '=81', + 130 => '=82', 131 => '=83', 132 => '=84', 133 => '=85', 134 => '=86', + 135 => '=87', 136 => '=88', 137 => '=89', 138 => '=8A', 139 => '=8B', + 140 => '=8C', 141 => '=8D', 142 => '=8E', 143 => '=8F', 144 => '=90', + 145 => '=91', 146 => '=92', 147 => '=93', 148 => '=94', 149 => '=95', + 150 => '=96', 151 => '=97', 152 => '=98', 153 => '=99', 154 => '=9A', + 155 => '=9B', 156 => '=9C', 157 => '=9D', 158 => '=9E', 159 => '=9F', + 160 => '=A0', 161 => '=A1', 162 => '=A2', 163 => '=A3', 164 => '=A4', + 165 => '=A5', 166 => '=A6', 167 => '=A7', 168 => '=A8', 169 => '=A9', + 170 => '=AA', 171 => '=AB', 172 => '=AC', 173 => '=AD', 174 => '=AE', + 175 => '=AF', 176 => '=B0', 177 => '=B1', 178 => '=B2', 179 => '=B3', + 180 => '=B4', 181 => '=B5', 182 => '=B6', 183 => '=B7', 184 => '=B8', + 185 => '=B9', 186 => '=BA', 187 => '=BB', 188 => '=BC', 189 => '=BD', + 190 => '=BE', 191 => '=BF', 192 => '=C0', 193 => '=C1', 194 => '=C2', + 195 => '=C3', 196 => '=C4', 197 => '=C5', 198 => '=C6', 199 => '=C7', + 200 => '=C8', 201 => '=C9', 202 => '=CA', 203 => '=CB', 204 => '=CC', + 205 => '=CD', 206 => '=CE', 207 => '=CF', 208 => '=D0', 209 => '=D1', + 210 => '=D2', 211 => '=D3', 212 => '=D4', 213 => '=D5', 214 => '=D6', + 215 => '=D7', 216 => '=D8', 217 => '=D9', 218 => '=DA', 219 => '=DB', + 220 => '=DC', 221 => '=DD', 222 => '=DE', 223 => '=DF', 224 => '=E0', + 225 => '=E1', 226 => '=E2', 227 => '=E3', 228 => '=E4', 229 => '=E5', + 230 => '=E6', 231 => '=E7', 232 => '=E8', 233 => '=E9', 234 => '=EA', + 235 => '=EB', 236 => '=EC', 237 => '=ED', 238 => '=EE', 239 => '=EF', + 240 => '=F0', 241 => '=F1', 242 => '=F2', 243 => '=F3', 244 => '=F4', + 245 => '=F5', 246 => '=F6', 247 => '=F7', 248 => '=F8', 249 => '=F9', + 250 => '=FA', 251 => '=FB', 252 => '=FC', 253 => '=FD', 254 => '=FE', + 255 => '=FF' + ); + + /** + * A map of non-encoded ascii characters. + * @var string[] + * @access protected + */ + protected static $_safeMap = array(); + + /** + * Creates a new QpEncoder for the given CharacterStream. + * @param Swift_CharacterStream $charStream to use for reading characters + * @param Swift_StreamFilter $filter if input should be canonicalized + */ + public function __construct(Swift_CharacterStream $charStream, + Swift_StreamFilter $filter = null) + { + $this->_charStream = $charStream; + if (empty(self::$_safeMap)) + { + foreach (array_merge( + array(0x09, 0x20), range(0x21, 0x3C), range(0x3E, 0x7E)) as $byte) + { + self::$_safeMap[$byte] = chr($byte); + } + } + $this->_filter = $filter; + } + + /** + * Takes an unencoded string and produces a QP encoded string from it. + * QP encoded strings have a maximum line length of 76 characters. + * If the first line needs to be shorter, indicate the difference with + * $firstLineOffset. + * @param string $string to encode + * @param int $firstLineOffset, optional + * @param int $maxLineLength, optional, 0 indicates the default of 76 chars + * @return string + */ + public function encodeString($string, $firstLineOffset = 0, + $maxLineLength = 0) + { + if ($maxLineLength > 76 || $maxLineLength <= 0) + { + $maxLineLength = 76; + } + + $thisLineLength = $maxLineLength - $firstLineOffset; + + $lines = array(); + $lNo = 0; + $lines[$lNo] = ''; + $currentLine =& $lines[$lNo++]; + $size=$lineLen=0; + + $this->_charStream->flushContents(); + $this->_charStream->importString($string); + + //Fetching more than 4 chars at one is slower, as is fetching fewer bytes + // Conveniently 4 chars is the UTF-8 safe number since UTF-8 has up to 6 + // bytes per char and (6 * 4 * 3 = 72 chars per line) * =NN is 3 bytes + while (false !== $bytes = $this->_nextSequence()) + { + //If we're filtering the input + if (isset($this->_filter)) + { + //If we can't filter because we need more bytes + while ($this->_filter->shouldBuffer($bytes)) + { + //Then collect bytes into the buffer + if (false === $moreBytes = $this->_nextSequence(1)) + { + break; + } + + foreach ($moreBytes as $b) + { + $bytes[] = $b; + } + } + //And filter them + $bytes = $this->_filter->filter($bytes); + } + + $enc = $this->_encodeByteSequence($bytes, $size); + if ($currentLine && $lineLen+$size >= $thisLineLength) + { + $lines[$lNo] = ''; + $currentLine =& $lines[$lNo++]; + $thisLineLength = $maxLineLength; + $lineLen=0; + } + $lineLen+=$size; + $currentLine .= $enc; + } + + return $this->_standardize(implode("=\r\n", $lines)); + } + + /** + * Updates the charset used. + * @param string $charset + */ + public function charsetChanged($charset) + { + $this->_charStream->setCharacterSet($charset); + } + + // -- Protected methods + + /** + * Encode the given byte array into a verbatim QP form. + * @param int[] $bytes + * @return string + * @access protected + */ + protected function _encodeByteSequence(array $bytes, &$size) + { + $ret = ''; + $size=0; + foreach ($bytes as $b) + { + if (isset(self::$_safeMap[$b])) + { + $ret .= self::$_safeMap[$b]; + ++$size; + } + else + { + $ret .= self::$_qpMap[$b]; + $size+=3; + } + } + return $ret; + } + + /** + * Get the next sequence of bytes to read from the char stream. + * @param int $size number of bytes to read + * @return int[] + * @access protected + */ + protected function _nextSequence($size = 4) + { + return $this->_charStream->readBytes($size); + } + + /** + * Make sure CRLF is correct and HT/SPACE are in valid places. + * @param string $string + * @return string + * @access protected + */ + protected function _standardize($string) + { + $string = str_replace(array("\t=0D=0A", " =0D=0A", "=0D=0A"), + array("=09\r\n", "=20\r\n", "\r\n"), $string + ); + switch ($end = ord(substr($string, -1))) + { + case 0x09: + case 0x20: + $string = substr_replace($string, self::$_qpMap[$end], -1); + } + return $string; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Encoder/.svn/text-base/Rfc2231Encoder.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Encoder/.svn/text-base/Rfc2231Encoder.php.svn-base new file mode 100644 index 0000000..febc6ba --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Encoder/.svn/text-base/Rfc2231Encoder.php.svn-base @@ -0,0 +1,89 @@ +_charStream = $charStream; + } + + /** + * Takes an unencoded string and produces a string encoded according to + * RFC 2231 from it. + * @param string $string to encode + * @param int $firstLineOffset + * @param int $maxLineLength, optional, 0 indicates the default of 75 bytes + * @return string + */ + public function encodeString($string, $firstLineOffset = 0, + $maxLineLength = 0) + { + $lines = array(); $lineCount = 0; + $lines[] = ''; + $currentLine =& $lines[$lineCount++]; + + if (0 >= $maxLineLength) + { + $maxLineLength = 75; + } + + $this->_charStream->flushContents(); + $this->_charStream->importString($string); + + $thisLineLength = $maxLineLength - $firstLineOffset; + + while (false !== $char = $this->_charStream->read(4)) + { + $encodedChar = rawurlencode($char); + if (0 != strlen($currentLine) + && strlen($currentLine . $encodedChar) > $thisLineLength) + { + $lines[] = ''; + $currentLine =& $lines[$lineCount++]; + $thisLineLength = $maxLineLength; + } + $currentLine .= $encodedChar; + } + + return implode("\r\n", $lines); + } + + /** + * Updates the charset used. + * @param string $charset + */ + public function charsetChanged($charset) + { + $this->_charStream->setCharacterSet($charset); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Encoder/Base64Encoder.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Encoder/Base64Encoder.php new file mode 100644 index 0000000..09c71ba --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Encoder/Base64Encoder.php @@ -0,0 +1,63 @@ += $maxLineLength || 76 < $maxLineLength) + { + $maxLineLength = 76; + } + + $encodedString = base64_encode($string); + $firstLine = ''; + + if (0 != $firstLineOffset) + { + $firstLine = substr( + $encodedString, 0, $maxLineLength - $firstLineOffset + ) . "\r\n"; + $encodedString = substr( + $encodedString, $maxLineLength - $firstLineOffset + ); + } + + return $firstLine . trim(chunk_split($encodedString, $maxLineLength, "\r\n")); + } + + /** + * Does nothing. + */ + public function charsetChanged($charset) + { + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Encoder/QpEncoder.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Encoder/QpEncoder.php new file mode 100644 index 0000000..6914f6c --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Encoder/QpEncoder.php @@ -0,0 +1,263 @@ + '=00', 1 => '=01', 2 => '=02', 3 => '=03', 4 => '=04', + 5 => '=05', 6 => '=06', 7 => '=07', 8 => '=08', 9 => '=09', + 10 => '=0A', 11 => '=0B', 12 => '=0C', 13 => '=0D', 14 => '=0E', + 15 => '=0F', 16 => '=10', 17 => '=11', 18 => '=12', 19 => '=13', + 20 => '=14', 21 => '=15', 22 => '=16', 23 => '=17', 24 => '=18', + 25 => '=19', 26 => '=1A', 27 => '=1B', 28 => '=1C', 29 => '=1D', + 30 => '=1E', 31 => '=1F', 32 => '=20', 33 => '=21', 34 => '=22', + 35 => '=23', 36 => '=24', 37 => '=25', 38 => '=26', 39 => '=27', + 40 => '=28', 41 => '=29', 42 => '=2A', 43 => '=2B', 44 => '=2C', + 45 => '=2D', 46 => '=2E', 47 => '=2F', 48 => '=30', 49 => '=31', + 50 => '=32', 51 => '=33', 52 => '=34', 53 => '=35', 54 => '=36', + 55 => '=37', 56 => '=38', 57 => '=39', 58 => '=3A', 59 => '=3B', + 60 => '=3C', 61 => '=3D', 62 => '=3E', 63 => '=3F', 64 => '=40', + 65 => '=41', 66 => '=42', 67 => '=43', 68 => '=44', 69 => '=45', + 70 => '=46', 71 => '=47', 72 => '=48', 73 => '=49', 74 => '=4A', + 75 => '=4B', 76 => '=4C', 77 => '=4D', 78 => '=4E', 79 => '=4F', + 80 => '=50', 81 => '=51', 82 => '=52', 83 => '=53', 84 => '=54', + 85 => '=55', 86 => '=56', 87 => '=57', 88 => '=58', 89 => '=59', + 90 => '=5A', 91 => '=5B', 92 => '=5C', 93 => '=5D', 94 => '=5E', + 95 => '=5F', 96 => '=60', 97 => '=61', 98 => '=62', 99 => '=63', + 100 => '=64', 101 => '=65', 102 => '=66', 103 => '=67', 104 => '=68', + 105 => '=69', 106 => '=6A', 107 => '=6B', 108 => '=6C', 109 => '=6D', + 110 => '=6E', 111 => '=6F', 112 => '=70', 113 => '=71', 114 => '=72', + 115 => '=73', 116 => '=74', 117 => '=75', 118 => '=76', 119 => '=77', + 120 => '=78', 121 => '=79', 122 => '=7A', 123 => '=7B', 124 => '=7C', + 125 => '=7D', 126 => '=7E', 127 => '=7F', 128 => '=80', 129 => '=81', + 130 => '=82', 131 => '=83', 132 => '=84', 133 => '=85', 134 => '=86', + 135 => '=87', 136 => '=88', 137 => '=89', 138 => '=8A', 139 => '=8B', + 140 => '=8C', 141 => '=8D', 142 => '=8E', 143 => '=8F', 144 => '=90', + 145 => '=91', 146 => '=92', 147 => '=93', 148 => '=94', 149 => '=95', + 150 => '=96', 151 => '=97', 152 => '=98', 153 => '=99', 154 => '=9A', + 155 => '=9B', 156 => '=9C', 157 => '=9D', 158 => '=9E', 159 => '=9F', + 160 => '=A0', 161 => '=A1', 162 => '=A2', 163 => '=A3', 164 => '=A4', + 165 => '=A5', 166 => '=A6', 167 => '=A7', 168 => '=A8', 169 => '=A9', + 170 => '=AA', 171 => '=AB', 172 => '=AC', 173 => '=AD', 174 => '=AE', + 175 => '=AF', 176 => '=B0', 177 => '=B1', 178 => '=B2', 179 => '=B3', + 180 => '=B4', 181 => '=B5', 182 => '=B6', 183 => '=B7', 184 => '=B8', + 185 => '=B9', 186 => '=BA', 187 => '=BB', 188 => '=BC', 189 => '=BD', + 190 => '=BE', 191 => '=BF', 192 => '=C0', 193 => '=C1', 194 => '=C2', + 195 => '=C3', 196 => '=C4', 197 => '=C5', 198 => '=C6', 199 => '=C7', + 200 => '=C8', 201 => '=C9', 202 => '=CA', 203 => '=CB', 204 => '=CC', + 205 => '=CD', 206 => '=CE', 207 => '=CF', 208 => '=D0', 209 => '=D1', + 210 => '=D2', 211 => '=D3', 212 => '=D4', 213 => '=D5', 214 => '=D6', + 215 => '=D7', 216 => '=D8', 217 => '=D9', 218 => '=DA', 219 => '=DB', + 220 => '=DC', 221 => '=DD', 222 => '=DE', 223 => '=DF', 224 => '=E0', + 225 => '=E1', 226 => '=E2', 227 => '=E3', 228 => '=E4', 229 => '=E5', + 230 => '=E6', 231 => '=E7', 232 => '=E8', 233 => '=E9', 234 => '=EA', + 235 => '=EB', 236 => '=EC', 237 => '=ED', 238 => '=EE', 239 => '=EF', + 240 => '=F0', 241 => '=F1', 242 => '=F2', 243 => '=F3', 244 => '=F4', + 245 => '=F5', 246 => '=F6', 247 => '=F7', 248 => '=F8', 249 => '=F9', + 250 => '=FA', 251 => '=FB', 252 => '=FC', 253 => '=FD', 254 => '=FE', + 255 => '=FF' + ); + + /** + * A map of non-encoded ascii characters. + * @var string[] + * @access protected + */ + protected static $_safeMap = array(); + + /** + * Creates a new QpEncoder for the given CharacterStream. + * @param Swift_CharacterStream $charStream to use for reading characters + * @param Swift_StreamFilter $filter if input should be canonicalized + */ + public function __construct(Swift_CharacterStream $charStream, + Swift_StreamFilter $filter = null) + { + $this->_charStream = $charStream; + if (empty(self::$_safeMap)) + { + foreach (array_merge( + array(0x09, 0x20), range(0x21, 0x3C), range(0x3E, 0x7E)) as $byte) + { + self::$_safeMap[$byte] = chr($byte); + } + } + $this->_filter = $filter; + } + + /** + * Takes an unencoded string and produces a QP encoded string from it. + * QP encoded strings have a maximum line length of 76 characters. + * If the first line needs to be shorter, indicate the difference with + * $firstLineOffset. + * @param string $string to encode + * @param int $firstLineOffset, optional + * @param int $maxLineLength, optional, 0 indicates the default of 76 chars + * @return string + */ + public function encodeString($string, $firstLineOffset = 0, + $maxLineLength = 0) + { + if ($maxLineLength > 76 || $maxLineLength <= 0) + { + $maxLineLength = 76; + } + + $thisLineLength = $maxLineLength - $firstLineOffset; + + $lines = array(); + $lNo = 0; + $lines[$lNo] = ''; + $currentLine =& $lines[$lNo++]; + $size=$lineLen=0; + + $this->_charStream->flushContents(); + $this->_charStream->importString($string); + + //Fetching more than 4 chars at one is slower, as is fetching fewer bytes + // Conveniently 4 chars is the UTF-8 safe number since UTF-8 has up to 6 + // bytes per char and (6 * 4 * 3 = 72 chars per line) * =NN is 3 bytes + while (false !== $bytes = $this->_nextSequence()) + { + //If we're filtering the input + if (isset($this->_filter)) + { + //If we can't filter because we need more bytes + while ($this->_filter->shouldBuffer($bytes)) + { + //Then collect bytes into the buffer + if (false === $moreBytes = $this->_nextSequence(1)) + { + break; + } + + foreach ($moreBytes as $b) + { + $bytes[] = $b; + } + } + //And filter them + $bytes = $this->_filter->filter($bytes); + } + + $enc = $this->_encodeByteSequence($bytes, $size); + if ($currentLine && $lineLen+$size >= $thisLineLength) + { + $lines[$lNo] = ''; + $currentLine =& $lines[$lNo++]; + $thisLineLength = $maxLineLength; + $lineLen=0; + } + $lineLen+=$size; + $currentLine .= $enc; + } + + return $this->_standardize(implode("=\r\n", $lines)); + } + + /** + * Updates the charset used. + * @param string $charset + */ + public function charsetChanged($charset) + { + $this->_charStream->setCharacterSet($charset); + } + + // -- Protected methods + + /** + * Encode the given byte array into a verbatim QP form. + * @param int[] $bytes + * @return string + * @access protected + */ + protected function _encodeByteSequence(array $bytes, &$size) + { + $ret = ''; + $size=0; + foreach ($bytes as $b) + { + if (isset(self::$_safeMap[$b])) + { + $ret .= self::$_safeMap[$b]; + ++$size; + } + else + { + $ret .= self::$_qpMap[$b]; + $size+=3; + } + } + return $ret; + } + + /** + * Get the next sequence of bytes to read from the char stream. + * @param int $size number of bytes to read + * @return int[] + * @access protected + */ + protected function _nextSequence($size = 4) + { + return $this->_charStream->readBytes($size); + } + + /** + * Make sure CRLF is correct and HT/SPACE are in valid places. + * @param string $string + * @return string + * @access protected + */ + protected function _standardize($string) + { + $string = str_replace(array("\t=0D=0A", " =0D=0A", "=0D=0A"), + array("=09\r\n", "=20\r\n", "\r\n"), $string + ); + switch ($end = ord(substr($string, -1))) + { + case 0x09: + case 0x20: + $string = substr_replace($string, self::$_qpMap[$end], -1); + } + return $string; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Encoder/Rfc2231Encoder.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Encoder/Rfc2231Encoder.php new file mode 100644 index 0000000..febc6ba --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Encoder/Rfc2231Encoder.php @@ -0,0 +1,89 @@ +_charStream = $charStream; + } + + /** + * Takes an unencoded string and produces a string encoded according to + * RFC 2231 from it. + * @param string $string to encode + * @param int $firstLineOffset + * @param int $maxLineLength, optional, 0 indicates the default of 75 bytes + * @return string + */ + public function encodeString($string, $firstLineOffset = 0, + $maxLineLength = 0) + { + $lines = array(); $lineCount = 0; + $lines[] = ''; + $currentLine =& $lines[$lineCount++]; + + if (0 >= $maxLineLength) + { + $maxLineLength = 75; + } + + $this->_charStream->flushContents(); + $this->_charStream->importString($string); + + $thisLineLength = $maxLineLength - $firstLineOffset; + + while (false !== $char = $this->_charStream->read(4)) + { + $encodedChar = rawurlencode($char); + if (0 != strlen($currentLine) + && strlen($currentLine . $encodedChar) > $thisLineLength) + { + $lines[] = ''; + $currentLine =& $lines[$lineCount++]; + $thisLineLength = $maxLineLength; + } + $currentLine .= $encodedChar; + } + + return implode("\r\n", $lines); + } + + /** + * Updates the charset used. + * @param string $charset + */ + public function charsetChanged($charset) + { + $this->_charStream->setCharacterSet($charset); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Encoding.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Encoding.php new file mode 100644 index 0000000..1849a82 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Encoding.php @@ -0,0 +1,70 @@ +lookup($key); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/.svn/all-wcprops b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/.svn/all-wcprops new file mode 100644 index 0000000..31a7fee --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/.svn/all-wcprops @@ -0,0 +1,95 @@ +K 25 +svn:wc:ra_dav:version-url +V 72 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Events +END +SendEvent.php +K 25 +svn:wc:ra_dav:version-url +V 86 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Events/SendEvent.php +END +SendListener.php +K 25 +svn:wc:ra_dav:version-url +V 89 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Events/SendListener.php +END +ResponseEvent.php +K 25 +svn:wc:ra_dav:version-url +V 90 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Events/ResponseEvent.php +END +SimpleEventDispatcher.php +K 25 +svn:wc:ra_dav:version-url +V 98 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Events/SimpleEventDispatcher.php +END +TransportChangeEvent.php +K 25 +svn:wc:ra_dav:version-url +V 97 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Events/TransportChangeEvent.php +END +ResponseListener.php +K 25 +svn:wc:ra_dav:version-url +V 93 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Events/ResponseListener.php +END +TransportChangeListener.php +K 25 +svn:wc:ra_dav:version-url +V 100 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Events/TransportChangeListener.php +END +EventObject.php +K 25 +svn:wc:ra_dav:version-url +V 88 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Events/EventObject.php +END +TransportExceptionEvent.php +K 25 +svn:wc:ra_dav:version-url +V 100 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Events/TransportExceptionEvent.php +END +CommandEvent.php +K 25 +svn:wc:ra_dav:version-url +V 89 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Events/CommandEvent.php +END +TransportExceptionListener.php +K 25 +svn:wc:ra_dav:version-url +V 103 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Events/TransportExceptionListener.php +END +Event.php +K 25 +svn:wc:ra_dav:version-url +V 82 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Events/Event.php +END +CommandListener.php +K 25 +svn:wc:ra_dav:version-url +V 92 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Events/CommandListener.php +END +EventListener.php +K 25 +svn:wc:ra_dav:version-url +V 90 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Events/EventListener.php +END +EventDispatcher.php +K 25 +svn:wc:ra_dav:version-url +V 92 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Events/EventDispatcher.php +END diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/.svn/entries b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/.svn/entries new file mode 100644 index 0000000..2644728 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/.svn/entries @@ -0,0 +1,538 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Events +http://svn.symfony-project.com + + + +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +SendEvent.php +file + + + + +2012-05-10T18:41:52.405552Z +3bd94b6f639b2ec5490542595165607e +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + + + + + + + + +2600 + +SendListener.php +file + + + + +2012-05-10T18:41:52.405552Z +e888aef8185a423b021563133d44c9ae +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + + + + + + + + +863 + +ResponseEvent.php +file + + + + +2012-05-10T18:41:52.525545Z +0bc7229f38bc15ad4490c961d216347c +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + + + + + + + + +1293 + +SimpleEventDispatcher.php +file + + + + +2012-05-10T18:41:52.618944Z +de6f33c84874b937c5ac821bcb9cd415 +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + + + + + + + + +4939 + +TransportChangeEvent.php +file + + + + +2012-05-10T18:41:52.618944Z +cd5d544eb9b9f05644cfa16d4af4abc9 +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + + + + + + + + +625 + +ResponseListener.php +file + + + + +2012-05-10T18:41:52.618944Z +64197c25227c215748ebcd4e3144b784 +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + + + + + + + + +696 + +TransportChangeListener.php +file + + + + +2012-05-10T18:41:52.621555Z +46325981ac5349e305cd044f8f023831 +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + + + + + + + + +1347 + +EventObject.php +file + + + + +2012-05-10T18:41:52.621555Z +0889f8ea9ffd5af8155dde2555932bee +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + + + + + + + + +1327 + +TransportExceptionEvent.php +file + + + + +2012-05-10T18:41:52.405552Z +aa0ed02c7de2e322248f427ea14b0fd8 +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + + + + + + + + +1113 + +CommandEvent.php +file + + + + +2012-05-10T18:41:52.525093Z +bb06d21ade45b21578bb4f0eb984b6cd +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + + + + + + + + +1436 + +TransportExceptionListener.php +file + + + + +2012-05-10T18:41:52.618944Z +d5a5d2841e382b1824be87dfaf233bc3 +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + + + + + + + + +765 + +Event.php +file + + + + +2012-05-10T18:41:52.618944Z +235ebab241b01cf75c9b7d12a7d8f9ae +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + + + + + + + + +783 + +CommandListener.php +file + + + + +2012-05-10T18:41:52.618944Z +cfc79d55b6e657264f9534f712cd0266 +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + + + + + + + + +692 + +EventListener.php +file + + + + +2012-05-10T18:41:52.621555Z +b8ada84d192dd7e349bb253edc1d9e15 +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + + + + + + + + +390 + +EventDispatcher.php +file + + + + +2012-05-10T18:41:52.621555Z +77e6f5bd3f3ecf8ada99af0de6ce9dcd +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + + + + + + + + +2350 + diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/.svn/text-base/CommandEvent.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/.svn/text-base/CommandEvent.php.svn-base new file mode 100644 index 0000000..73eb585 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/.svn/text-base/CommandEvent.php.svn-base @@ -0,0 +1,67 @@ +_command = $command; + $this->_successCodes = $successCodes; + } + + /** + * Get the command which was sent to the server. + * @return string + */ + public function getCommand() + { + return $this->_command; + } + + /** + * Get the numeric response codes which indicate success for this command. + * @return int[] + */ + public function getSuccessCodes() + { + return $this->_successCodes; + } + +} \ No newline at end of file diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/.svn/text-base/CommandListener.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/.svn/text-base/CommandListener.php.svn-base new file mode 100644 index 0000000..2fd7117 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/.svn/text-base/CommandListener.php.svn-base @@ -0,0 +1,29 @@ +_source = $source; + } + + /** + * Get the source object of this event. + * @return object + */ + public function getSource() + { + return $this->_source; + } + + /** + * Prevent this Event from bubbling any further up the stack. + * @param boolean $cancel, optional + */ + public function cancelBubble($cancel = true) + { + $this->_bubbleCancelled = $cancel; + } + + /** + * Returns true if this Event will not bubble any further up the stack. + * @return boolean + */ + public function bubbleCancelled() + { + return $this->_bubbleCancelled; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/.svn/text-base/ResponseEvent.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/.svn/text-base/ResponseEvent.php.svn-base new file mode 100644 index 0000000..addf9e7 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/.svn/text-base/ResponseEvent.php.svn-base @@ -0,0 +1,65 @@ +_response = $response; + $this->_valid = $valid; + } + + /** + * Get the response which was received from the server. + * @return string + */ + public function getResponse() + { + return $this->_response; + } + + /** + * Get the success status of this Event. + * @return boolean + */ + public function isValid() + { + return $this->_valid; + } + +} \ No newline at end of file diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/.svn/text-base/ResponseListener.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/.svn/text-base/ResponseListener.php.svn-base new file mode 100644 index 0000000..092385b --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/.svn/text-base/ResponseListener.php.svn-base @@ -0,0 +1,29 @@ +_message = $message; + $this->_result = self::RESULT_PENDING; + } + + /** + * Get the Transport used to send the Message. + * @return Swift_Transport + */ + public function getTransport() + { + return $this->getSource(); + } + + /** + * Get the Message being sent. + * @return Swift_Mime_Message + */ + public function getMessage() + { + return $this->_message; + } + + /** + * Set the array of addresses that failed in sending. + * @param array $recipients + */ + public function setFailedRecipients($recipients) + { + $this->_failedRecipients = $recipients; + } + + /** + * Get an recipient addresses which were not accepted for delivery. + * @return string[] + */ + public function getFailedRecipients() + { + return $this->_failedRecipients; + } + + /** + * Set the result of sending. + * @return int + */ + public function setResult($result) + { + $this->_result = $result; + } + + /** + * Get the result of this Event. + * The return value is a bitmask from + * {@link RESULT_PENDING, RESULT_SUCCESS, RESULT_TENTATIVE, RESULT_FAILED} + * @return int + */ + public function getResult() + { + return $this->_result; + } + +} \ No newline at end of file diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/.svn/text-base/SendListener.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/.svn/text-base/SendListener.php.svn-base new file mode 100644 index 0000000..a8f0cc3 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/.svn/text-base/SendListener.php.svn-base @@ -0,0 +1,35 @@ +_eventMap = array( + 'Swift_Events_CommandEvent' => 'Swift_Events_CommandListener', + 'Swift_Events_ResponseEvent' => 'Swift_Events_ResponseListener', + 'Swift_Events_SendEvent' => 'Swift_Events_SendListener', + 'Swift_Events_TransportChangeEvent' => 'Swift_Events_TransportChangeListener', + 'Swift_Events_TransportExceptionEvent' => 'Swift_Events_TransportExceptionListener' + ); + } + + /** + * Create a new SendEvent for $source and $message. + * + * @param Swift_Transport $source + * @param Swift_Mime_Message + * @return Swift_Events_SendEvent + */ + public function createSendEvent(Swift_Transport $source, + Swift_Mime_Message $message) + { + return new Swift_Events_SendEvent($source, $message); + } + + /** + * Create a new CommandEvent for $source and $command. + * + * @param Swift_Transport $source + * @param string $command That will be executed + * @param array $successCodes That are needed + * @return Swift_Events_CommandEvent + */ + public function createCommandEvent(Swift_Transport $source, + $command, $successCodes = array()) + { + return new Swift_Events_CommandEvent($source, $command, $successCodes); + } + + /** + * Create a new ResponseEvent for $source and $response. + * + * @param Swift_Transport $source + * @param string $response + * @param boolean $valid If the response is valid + * @return Swift_Events_ResponseEvent + */ + public function createResponseEvent(Swift_Transport $source, + $response, $valid) + { + return new Swift_Events_ResponseEvent($source, $response, $valid); + } + + /** + * Create a new TransportChangeEvent for $source. + * + * @param Swift_Transport $source + * @return Swift_Events_TransportChangeEvent + */ + public function createTransportChangeEvent(Swift_Transport $source) + { + return new Swift_Events_TransportChangeEvent($source); + } + + /** + * Create a new TransportExceptionEvent for $source. + * + * @param Swift_Transport $source + * @param Swift_TransportException $ex + * @return Swift_Events_TransportExceptionEvent + */ + public function createTransportExceptionEvent(Swift_Transport $source, + Swift_TransportException $ex) + { + return new Swift_Events_TransportExceptionEvent($source, $ex); + } + + /** + * Bind an event listener to this dispatcher. + * + * @param Swift_Events_EventListener $listener + */ + public function bindEventListener(Swift_Events_EventListener $listener) + { + foreach ($this->_listeners as $l) + { + //Already loaded + if ($l === $listener) + { + return; + } + } + $this->_listeners[] = $listener; + } + + /** + * Dispatch the given Event to all suitable listeners. + * + * @param Swift_Events_EventObject $evt + * @param string $target method + */ + public function dispatchEvent(Swift_Events_EventObject $evt, $target) + { + $this->_prepareBubbleQueue($evt); + $this->_bubble($evt, $target); + } + + // -- Private methods + + /** Queue listeners on a stack ready for $evt to be bubbled up it */ + private function _prepareBubbleQueue(Swift_Events_EventObject $evt) + { + $this->_bubbleQueue = array(); + $evtClass = get_class($evt); + foreach ($this->_listeners as $listener) + { + if (array_key_exists($evtClass, $this->_eventMap) + && ($listener instanceof $this->_eventMap[$evtClass])) + { + $this->_bubbleQueue[] = $listener; + } + } + } + + /** Bubble $evt up the stack calling $target() on each listener */ + private function _bubble(Swift_Events_EventObject $evt, $target) + { + if (!$evt->bubbleCancelled() && $listener = array_shift($this->_bubbleQueue)) + { + $listener->$target($evt); + $this->_bubble($evt, $target); + } + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/.svn/text-base/TransportChangeEvent.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/.svn/text-base/TransportChangeEvent.php.svn-base new file mode 100644 index 0000000..f069a4c --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/.svn/text-base/TransportChangeEvent.php.svn-base @@ -0,0 +1,31 @@ +getSource(); + } + +} \ No newline at end of file diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/.svn/text-base/TransportChangeListener.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/.svn/text-base/TransportChangeListener.php.svn-base new file mode 100644 index 0000000..ba729d0 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/.svn/text-base/TransportChangeListener.php.svn-base @@ -0,0 +1,53 @@ +_exception = $ex; + } + + /** + * Get the TransportException thrown. + * @return Swift_TransportException + */ + public function getException() + { + return $this->_exception; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/.svn/text-base/TransportExceptionListener.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/.svn/text-base/TransportExceptionListener.php.svn-base new file mode 100644 index 0000000..d6dce94 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/.svn/text-base/TransportExceptionListener.php.svn-base @@ -0,0 +1,30 @@ +_command = $command; + $this->_successCodes = $successCodes; + } + + /** + * Get the command which was sent to the server. + * @return string + */ + public function getCommand() + { + return $this->_command; + } + + /** + * Get the numeric response codes which indicate success for this command. + * @return int[] + */ + public function getSuccessCodes() + { + return $this->_successCodes; + } + +} \ No newline at end of file diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/CommandListener.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/CommandListener.php new file mode 100644 index 0000000..2fd7117 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/CommandListener.php @@ -0,0 +1,29 @@ +_source = $source; + } + + /** + * Get the source object of this event. + * @return object + */ + public function getSource() + { + return $this->_source; + } + + /** + * Prevent this Event from bubbling any further up the stack. + * @param boolean $cancel, optional + */ + public function cancelBubble($cancel = true) + { + $this->_bubbleCancelled = $cancel; + } + + /** + * Returns true if this Event will not bubble any further up the stack. + * @return boolean + */ + public function bubbleCancelled() + { + return $this->_bubbleCancelled; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/ResponseEvent.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/ResponseEvent.php new file mode 100644 index 0000000..addf9e7 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/ResponseEvent.php @@ -0,0 +1,65 @@ +_response = $response; + $this->_valid = $valid; + } + + /** + * Get the response which was received from the server. + * @return string + */ + public function getResponse() + { + return $this->_response; + } + + /** + * Get the success status of this Event. + * @return boolean + */ + public function isValid() + { + return $this->_valid; + } + +} \ No newline at end of file diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/ResponseListener.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/ResponseListener.php new file mode 100644 index 0000000..092385b --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/ResponseListener.php @@ -0,0 +1,29 @@ +_message = $message; + $this->_result = self::RESULT_PENDING; + } + + /** + * Get the Transport used to send the Message. + * @return Swift_Transport + */ + public function getTransport() + { + return $this->getSource(); + } + + /** + * Get the Message being sent. + * @return Swift_Mime_Message + */ + public function getMessage() + { + return $this->_message; + } + + /** + * Set the array of addresses that failed in sending. + * @param array $recipients + */ + public function setFailedRecipients($recipients) + { + $this->_failedRecipients = $recipients; + } + + /** + * Get an recipient addresses which were not accepted for delivery. + * @return string[] + */ + public function getFailedRecipients() + { + return $this->_failedRecipients; + } + + /** + * Set the result of sending. + * @return int + */ + public function setResult($result) + { + $this->_result = $result; + } + + /** + * Get the result of this Event. + * The return value is a bitmask from + * {@link RESULT_PENDING, RESULT_SUCCESS, RESULT_TENTATIVE, RESULT_FAILED} + * @return int + */ + public function getResult() + { + return $this->_result; + } + +} \ No newline at end of file diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/SendListener.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/SendListener.php new file mode 100644 index 0000000..a8f0cc3 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/SendListener.php @@ -0,0 +1,35 @@ +_eventMap = array( + 'Swift_Events_CommandEvent' => 'Swift_Events_CommandListener', + 'Swift_Events_ResponseEvent' => 'Swift_Events_ResponseListener', + 'Swift_Events_SendEvent' => 'Swift_Events_SendListener', + 'Swift_Events_TransportChangeEvent' => 'Swift_Events_TransportChangeListener', + 'Swift_Events_TransportExceptionEvent' => 'Swift_Events_TransportExceptionListener' + ); + } + + /** + * Create a new SendEvent for $source and $message. + * + * @param Swift_Transport $source + * @param Swift_Mime_Message + * @return Swift_Events_SendEvent + */ + public function createSendEvent(Swift_Transport $source, + Swift_Mime_Message $message) + { + return new Swift_Events_SendEvent($source, $message); + } + + /** + * Create a new CommandEvent for $source and $command. + * + * @param Swift_Transport $source + * @param string $command That will be executed + * @param array $successCodes That are needed + * @return Swift_Events_CommandEvent + */ + public function createCommandEvent(Swift_Transport $source, + $command, $successCodes = array()) + { + return new Swift_Events_CommandEvent($source, $command, $successCodes); + } + + /** + * Create a new ResponseEvent for $source and $response. + * + * @param Swift_Transport $source + * @param string $response + * @param boolean $valid If the response is valid + * @return Swift_Events_ResponseEvent + */ + public function createResponseEvent(Swift_Transport $source, + $response, $valid) + { + return new Swift_Events_ResponseEvent($source, $response, $valid); + } + + /** + * Create a new TransportChangeEvent for $source. + * + * @param Swift_Transport $source + * @return Swift_Events_TransportChangeEvent + */ + public function createTransportChangeEvent(Swift_Transport $source) + { + return new Swift_Events_TransportChangeEvent($source); + } + + /** + * Create a new TransportExceptionEvent for $source. + * + * @param Swift_Transport $source + * @param Swift_TransportException $ex + * @return Swift_Events_TransportExceptionEvent + */ + public function createTransportExceptionEvent(Swift_Transport $source, + Swift_TransportException $ex) + { + return new Swift_Events_TransportExceptionEvent($source, $ex); + } + + /** + * Bind an event listener to this dispatcher. + * + * @param Swift_Events_EventListener $listener + */ + public function bindEventListener(Swift_Events_EventListener $listener) + { + foreach ($this->_listeners as $l) + { + //Already loaded + if ($l === $listener) + { + return; + } + } + $this->_listeners[] = $listener; + } + + /** + * Dispatch the given Event to all suitable listeners. + * + * @param Swift_Events_EventObject $evt + * @param string $target method + */ + public function dispatchEvent(Swift_Events_EventObject $evt, $target) + { + $this->_prepareBubbleQueue($evt); + $this->_bubble($evt, $target); + } + + // -- Private methods + + /** Queue listeners on a stack ready for $evt to be bubbled up it */ + private function _prepareBubbleQueue(Swift_Events_EventObject $evt) + { + $this->_bubbleQueue = array(); + $evtClass = get_class($evt); + foreach ($this->_listeners as $listener) + { + if (array_key_exists($evtClass, $this->_eventMap) + && ($listener instanceof $this->_eventMap[$evtClass])) + { + $this->_bubbleQueue[] = $listener; + } + } + } + + /** Bubble $evt up the stack calling $target() on each listener */ + private function _bubble(Swift_Events_EventObject $evt, $target) + { + if (!$evt->bubbleCancelled() && $listener = array_shift($this->_bubbleQueue)) + { + $listener->$target($evt); + $this->_bubble($evt, $target); + } + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/TransportChangeEvent.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/TransportChangeEvent.php new file mode 100644 index 0000000..f069a4c --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/TransportChangeEvent.php @@ -0,0 +1,31 @@ +getSource(); + } + +} \ No newline at end of file diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/TransportChangeListener.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/TransportChangeListener.php new file mode 100644 index 0000000..ba729d0 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/TransportChangeListener.php @@ -0,0 +1,53 @@ +_exception = $ex; + } + + /** + * Get the TransportException thrown. + * @return Swift_TransportException + */ + public function getException() + { + return $this->_exception; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/TransportExceptionListener.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/TransportExceptionListener.php new file mode 100644 index 0000000..d6dce94 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Events/TransportExceptionListener.php @@ -0,0 +1,30 @@ +createDependenciesFor('transport.failover') + ); + + $this->setTransports($transports); + } + + /** + * Create a new FailoverTransport instance. + * @param string $transports + * @return Swift_FailoverTransport + */ + public static function newInstance($transports = array()) + { + return new self($transports); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/FileSpool.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/FileSpool.php new file mode 100644 index 0000000..28c6796 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/FileSpool.php @@ -0,0 +1,116 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Stores Messages on the filesystem. + * @package Swift + * @author Fabien Potencier + */ +class Swift_FileSpool extends Swift_ConfigurableSpool +{ + /** The spool directory */ + private $_path; + + /** + * Create a new FileSpool. + * @param string $path + */ + public function __construct($path) + { + $this->_path = $path; + + if (!file_exists($this->_path)) + { + mkdir($this->_path, 0777, true); + } + } + + /** + * Tests if this Spool mechanism has started. + * + * @return boolean + */ + public function isStarted() + { + return true; + } + + /** + * Starts this Spool mechanism. + */ + public function start() + { + } + + /** + * Stops this Spool mechanism. + */ + public function stop() + { + } + + /** + * Queues a message. + * @param Swift_Mime_Message $message The message to store + */ + public function queueMessage(Swift_Mime_Message $message) + { + $ser = serialize($message); + + file_put_contents($this->_path.'/'.md5($ser.uniqid()).'.message', $ser); + } + + /** + * Sends messages using the given transport instance. + * + * @param Swift_Transport $transport A transport instance + * @param string[] &$failedRecipients An array of failures by-reference + * + * @return int The number of sent emails + */ + public function flushQueue(Swift_Transport $transport, &$failedRecipients = null) + { + if (!$transport->isStarted()) + { + $transport->start(); + } + + $failedRecipients = (array) $failedRecipients; + $count = 0; + $time = time(); + foreach (new DirectoryIterator($this->_path) as $file) + { + $file = $file->getRealPath(); + + if (!strpos($file, '.message')) + { + continue; + } + + $message = unserialize(file_get_contents($file)); + + $count += $transport->send($message, $failedRecipients); + + unlink($file); + + if ($this->getMessageLimit() && $count >= $this->getMessageLimit()) + { + break; + } + + if ($this->getTimeLimit() && (time() - $time) >= $this->getTimeLimit()) + { + break; + } + } + + return $count; + } +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/FileStream.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/FileStream.php new file mode 100644 index 0000000..a7f894d --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/FileStream.php @@ -0,0 +1,28 @@ +setFile( + new Swift_ByteStream_FileByteStream($path) + ); + return $image; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/InputByteStream.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/InputByteStream.php new file mode 100644 index 0000000..e8f45f4 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/InputByteStream.php @@ -0,0 +1,72 @@ +_stream = $stream; + } + + /** + * Set a string into the cache under $itemKey for the namespace $nsKey. + * @param string $nsKey + * @param string $itemKey + * @param string $string + * @param int $mode + * @see MODE_WRITE, MODE_APPEND + */ + public function setString($nsKey, $itemKey, $string, $mode) + { + $this->_prepareCache($nsKey); + switch ($mode) + { + case self::MODE_WRITE: + $this->_contents[$nsKey][$itemKey] = $string; + break; + case self::MODE_APPEND: + if (!$this->hasKey($nsKey, $itemKey)) + { + $this->_contents[$nsKey][$itemKey] = ''; + } + $this->_contents[$nsKey][$itemKey] .= $string; + break; + default: + throw new Swift_SwiftException( + 'Invalid mode [' . $mode . '] used to set nsKey='. + $nsKey . ', itemKey=' . $itemKey + ); + } + } + + /** + * Set a ByteStream into the cache under $itemKey for the namespace $nsKey. + * @param string $nsKey + * @param string $itemKey + * @param Swift_OutputByteStream $os + * @param int $mode + * @see MODE_WRITE, MODE_APPEND + */ + public function importFromByteStream($nsKey, $itemKey, Swift_OutputByteStream $os, + $mode) + { + $this->_prepareCache($nsKey); + switch ($mode) + { + case self::MODE_WRITE: + $this->clearKey($nsKey, $itemKey); + case self::MODE_APPEND: + if (!$this->hasKey($nsKey, $itemKey)) + { + $this->_contents[$nsKey][$itemKey] = ''; + } + while (false !== $bytes = $os->read(8192)) + { + $this->_contents[$nsKey][$itemKey] .= $bytes; + } + break; + default: + throw new Swift_SwiftException( + 'Invalid mode [' . $mode . '] used to set nsKey='. + $nsKey . ', itemKey=' . $itemKey + ); + } + } + + /** + * Provides a ByteStream which when written to, writes data to $itemKey. + * NOTE: The stream will always write in append mode. + * @param string $nsKey + * @param string $itemKey + * @return Swift_InputByteStream + */ + public function getInputByteStream($nsKey, $itemKey, + Swift_InputByteStream $writeThrough = null) + { + $is = clone $this->_stream; + $is->setKeyCache($this); + $is->setNsKey($nsKey); + $is->setItemKey($itemKey); + if (isset($writeThrough)) + { + $is->setWriteThroughStream($writeThrough); + } + return $is; + } + + /** + * Get data back out of the cache as a string. + * @param string $nsKey + * @param string $itemKey + * @return string + */ + public function getString($nsKey, $itemKey) + { + $this->_prepareCache($nsKey); + if ($this->hasKey($nsKey, $itemKey)) + { + return $this->_contents[$nsKey][$itemKey]; + } + } + + /** + * Get data back out of the cache as a ByteStream. + * @param string $nsKey + * @param string $itemKey + * @param Swift_InputByteStream $is to write the data to + */ + public function exportToByteStream($nsKey, $itemKey, Swift_InputByteStream $is) + { + $this->_prepareCache($nsKey); + $is->write($this->getString($nsKey, $itemKey)); + } + + /** + * Check if the given $itemKey exists in the namespace $nsKey. + * @param string $nsKey + * @param string $itemKey + * @return boolean + */ + public function hasKey($nsKey, $itemKey) + { + $this->_prepareCache($nsKey); + return array_key_exists($itemKey, $this->_contents[$nsKey]); + } + + /** + * Clear data for $itemKey in the namespace $nsKey if it exists. + * @param string $nsKey + * @param string $itemKey + */ + public function clearKey($nsKey, $itemKey) + { + unset($this->_contents[$nsKey][$itemKey]); + } + + /** + * Clear all data in the namespace $nsKey if it exists. + * @param string $nsKey + */ + public function clearAll($nsKey) + { + unset($this->_contents[$nsKey]); + } + + // -- Private methods + + /** + * Initialize the namespace of $nsKey if needed. + * @param string $nsKey + * @access private + */ + private function _prepareCache($nsKey) + { + if (!array_key_exists($nsKey, $this->_contents)) + { + $this->_contents[$nsKey] = array(); + } + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/KeyCache/.svn/text-base/DiskKeyCache.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/KeyCache/.svn/text-base/DiskKeyCache.php.svn-base new file mode 100644 index 0000000..599fd6c --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/KeyCache/.svn/text-base/DiskKeyCache.php.svn-base @@ -0,0 +1,316 @@ +_stream = $stream; + $this->_path = $path; + $this->_quotes = get_magic_quotes_runtime(); + } + + /** + * Set a string into the cache under $itemKey for the namespace $nsKey. + * @param string $nsKey + * @param string $itemKey + * @param string $string + * @param int $mode + * @throws Swift_IoException + * @see MODE_WRITE, MODE_APPEND + */ + public function setString($nsKey, $itemKey, $string, $mode) + { + $this->_prepareCache($nsKey); + switch ($mode) + { + case self::MODE_WRITE: + $fp = $this->_getHandle($nsKey, $itemKey, self::POSITION_START); + break; + case self::MODE_APPEND: + $fp = $this->_getHandle($nsKey, $itemKey, self::POSITION_END); + break; + default: + throw new Swift_SwiftException( + 'Invalid mode [' . $mode . '] used to set nsKey='. + $nsKey . ', itemKey=' . $itemKey + ); + break; + } + fwrite($fp, $string); + } + + /** + * Set a ByteStream into the cache under $itemKey for the namespace $nsKey. + * @param string $nsKey + * @param string $itemKey + * @param Swift_OutputByteStream $os + * @param int $mode + * @see MODE_WRITE, MODE_APPEND + * @throws Swift_IoException + */ + public function importFromByteStream($nsKey, $itemKey, Swift_OutputByteStream $os, + $mode) + { + $this->_prepareCache($nsKey); + switch ($mode) + { + case self::MODE_WRITE: + $fp = $this->_getHandle($nsKey, $itemKey, self::POSITION_START); + break; + case self::MODE_APPEND: + $fp = $this->_getHandle($nsKey, $itemKey, self::POSITION_END); + break; + default: + throw new Swift_SwiftException( + 'Invalid mode [' . $mode . '] used to set nsKey='. + $nsKey . ', itemKey=' . $itemKey + ); + break; + } + while (false !== $bytes = $os->read(8192)) + { + fwrite($fp, $bytes); + } + } + + /** + * Provides a ByteStream which when written to, writes data to $itemKey. + * NOTE: The stream will always write in append mode. + * @param string $nsKey + * @param string $itemKey + * @return Swift_InputByteStream + */ + public function getInputByteStream($nsKey, $itemKey, + Swift_InputByteStream $writeThrough = null) + { + $is = clone $this->_stream; + $is->setKeyCache($this); + $is->setNsKey($nsKey); + $is->setItemKey($itemKey); + if (isset($writeThrough)) + { + $is->setWriteThroughStream($writeThrough); + } + return $is; + } + + /** + * Get data back out of the cache as a string. + * @param string $nsKey + * @param string $itemKey + * @return string + * @throws Swift_IoException + */ + public function getString($nsKey, $itemKey) + { + $this->_prepareCache($nsKey); + if ($this->hasKey($nsKey, $itemKey)) + { + $fp = $this->_getHandle($nsKey, $itemKey, self::POSITION_START); + if ($this->_quotes) + { + set_magic_quotes_runtime(0); + } + $str = ''; + while (!feof($fp) && false !== $bytes = fread($fp, 8192)) + { + $str .= $bytes; + } + if ($this->_quotes) + { + set_magic_quotes_runtime(1); + } + return $str; + } + } + + /** + * Get data back out of the cache as a ByteStream. + * @param string $nsKey + * @param string $itemKey + * @param Swift_InputByteStream $is to write the data to + */ + public function exportToByteStream($nsKey, $itemKey, Swift_InputByteStream $is) + { + if ($this->hasKey($nsKey, $itemKey)) + { + $fp = $this->_getHandle($nsKey, $itemKey, self::POSITION_START); + if ($this->_quotes) + { + set_magic_quotes_runtime(0); + } + while (!feof($fp) && false !== $bytes = fread($fp, 8192)) + { + $is->write($bytes); + } + if ($this->_quotes) + { + set_magic_quotes_runtime(1); + } + } + } + + /** + * Check if the given $itemKey exists in the namespace $nsKey. + * @param string $nsKey + * @param string $itemKey + * @return boolean + */ + public function hasKey($nsKey, $itemKey) + { + return is_file($this->_path . '/' . $nsKey . '/' . $itemKey); + } + + /** + * Clear data for $itemKey in the namespace $nsKey if it exists. + * @param string $nsKey + * @param string $itemKey + */ + public function clearKey($nsKey, $itemKey) + { + if ($this->hasKey($nsKey, $itemKey)) + { + $fp = $this->_getHandle($nsKey, $itemKey, self::POSITION_END); + fclose($fp); + unlink($this->_path . '/' . $nsKey . '/' . $itemKey); + } + unset($this->_keys[$nsKey][$itemKey]); + } + + /** + * Clear all data in the namespace $nsKey if it exists. + * @param string $nsKey + */ + public function clearAll($nsKey) + { + if (array_key_exists($nsKey, $this->_keys)) + { + foreach ($this->_keys[$nsKey] as $itemKey=>$null) + { + $this->clearKey($nsKey, $itemKey); + } + rmdir($this->_path . '/' . $nsKey); + unset($this->_keys[$nsKey]); + } + } + + // -- Private methods + + /** + * Initialize the namespace of $nsKey if needed. + * @param string $nsKey + * @access private + */ + private function _prepareCache($nsKey) + { + $cacheDir = $this->_path . '/' . $nsKey; + if (!is_dir($cacheDir)) + { + if (!mkdir($cacheDir)) + { + throw new Swift_IoException('Failed to create cache directory ' . $cacheDir); + } + $this->_keys[$nsKey] = array(); + } + } + + /** + * Get a file handle on the cache item. + * @param string $nsKey + * @param string $itemKey + * @param int $position + * @return resource + * @access private + */ + private function _getHandle($nsKey, $itemKey, $position) + { + if (!isset($this->_keys[$nsKey]) || !array_key_exists($itemKey, $this->_keys[$nsKey])) + { + $fp = fopen($this->_path . '/' . $nsKey . '/' . $itemKey, 'w+b'); + $this->_keys[$nsKey][$itemKey] = $fp; + } + if (self::POSITION_START == $position) + { + fseek($this->_keys[$nsKey][$itemKey], 0, SEEK_SET); + } + else + { + fseek($this->_keys[$nsKey][$itemKey], 0, SEEK_END); + } + return $this->_keys[$nsKey][$itemKey]; + } + + /** + * Destructor. + */ + public function __destruct() + { + foreach ($this->_keys as $nsKey=>$null) + { + $this->clearAll($nsKey); + } + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/KeyCache/.svn/text-base/KeyCacheInputStream.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/KeyCache/.svn/text-base/KeyCacheInputStream.php.svn-base new file mode 100644 index 0000000..a1f4440 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/KeyCache/.svn/text-base/KeyCacheInputStream.php.svn-base @@ -0,0 +1,53 @@ +_keyCache = $keyCache; + } + + /** + * Specify a stream to write through for each write(). + * @param Swift_InputByteStream $is + */ + public function setWriteThroughStream(Swift_InputByteStream $is) + { + $this->_writeThrough = $is; + } + + /** + * Writes $bytes to the end of the stream. + * @param string $bytes + * @param Swift_InputByteStream $is, optional + */ + public function write($bytes, Swift_InputByteStream $is = null) + { + $this->_keyCache->setString( + $this->_nsKey, $this->_itemKey, $bytes, Swift_KeyCache::MODE_APPEND + ); + if (isset($is)) + { + $is->write($bytes); + } + if (isset($this->_writeThrough)) + { + $this->_writeThrough->write($bytes); + } + } + + /** + * Not used. + */ + public function commit() + { + } + + /** + * Not used. + */ + public function bind(Swift_InputByteStream $is) + { + } + + /** + * Not used. + */ + public function unbind(Swift_InputByteStream $is) + { + } + + /** + * Flush the contents of the stream (empty it) and set the internal pointer + * to the beginning. + */ + public function flushBuffers() + { + $this->_keyCache->clearKey($this->_nsKey, $this->_itemKey); + } + + /** + * Set the nsKey which will be written to. + * @param string $nsKey + */ + public function setNsKey($nsKey) + { + $this->_nsKey = $nsKey; + } + + /** + * Set the itemKey which will be written to. + * @param string $itemKey + */ + public function setItemKey($itemKey) + { + $this->_itemKey = $itemKey; + } + + /** + * Any implementation should be cloneable, allowing the clone to access a + * separate $nsKey and $itemKey. + */ + public function __clone() + { + $this->_writeThrough = null; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/KeyCache/ArrayKeyCache.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/KeyCache/ArrayKeyCache.php new file mode 100644 index 0000000..fe3b7c9 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/KeyCache/ArrayKeyCache.php @@ -0,0 +1,209 @@ +_stream = $stream; + } + + /** + * Set a string into the cache under $itemKey for the namespace $nsKey. + * @param string $nsKey + * @param string $itemKey + * @param string $string + * @param int $mode + * @see MODE_WRITE, MODE_APPEND + */ + public function setString($nsKey, $itemKey, $string, $mode) + { + $this->_prepareCache($nsKey); + switch ($mode) + { + case self::MODE_WRITE: + $this->_contents[$nsKey][$itemKey] = $string; + break; + case self::MODE_APPEND: + if (!$this->hasKey($nsKey, $itemKey)) + { + $this->_contents[$nsKey][$itemKey] = ''; + } + $this->_contents[$nsKey][$itemKey] .= $string; + break; + default: + throw new Swift_SwiftException( + 'Invalid mode [' . $mode . '] used to set nsKey='. + $nsKey . ', itemKey=' . $itemKey + ); + } + } + + /** + * Set a ByteStream into the cache under $itemKey for the namespace $nsKey. + * @param string $nsKey + * @param string $itemKey + * @param Swift_OutputByteStream $os + * @param int $mode + * @see MODE_WRITE, MODE_APPEND + */ + public function importFromByteStream($nsKey, $itemKey, Swift_OutputByteStream $os, + $mode) + { + $this->_prepareCache($nsKey); + switch ($mode) + { + case self::MODE_WRITE: + $this->clearKey($nsKey, $itemKey); + case self::MODE_APPEND: + if (!$this->hasKey($nsKey, $itemKey)) + { + $this->_contents[$nsKey][$itemKey] = ''; + } + while (false !== $bytes = $os->read(8192)) + { + $this->_contents[$nsKey][$itemKey] .= $bytes; + } + break; + default: + throw new Swift_SwiftException( + 'Invalid mode [' . $mode . '] used to set nsKey='. + $nsKey . ', itemKey=' . $itemKey + ); + } + } + + /** + * Provides a ByteStream which when written to, writes data to $itemKey. + * NOTE: The stream will always write in append mode. + * @param string $nsKey + * @param string $itemKey + * @return Swift_InputByteStream + */ + public function getInputByteStream($nsKey, $itemKey, + Swift_InputByteStream $writeThrough = null) + { + $is = clone $this->_stream; + $is->setKeyCache($this); + $is->setNsKey($nsKey); + $is->setItemKey($itemKey); + if (isset($writeThrough)) + { + $is->setWriteThroughStream($writeThrough); + } + return $is; + } + + /** + * Get data back out of the cache as a string. + * @param string $nsKey + * @param string $itemKey + * @return string + */ + public function getString($nsKey, $itemKey) + { + $this->_prepareCache($nsKey); + if ($this->hasKey($nsKey, $itemKey)) + { + return $this->_contents[$nsKey][$itemKey]; + } + } + + /** + * Get data back out of the cache as a ByteStream. + * @param string $nsKey + * @param string $itemKey + * @param Swift_InputByteStream $is to write the data to + */ + public function exportToByteStream($nsKey, $itemKey, Swift_InputByteStream $is) + { + $this->_prepareCache($nsKey); + $is->write($this->getString($nsKey, $itemKey)); + } + + /** + * Check if the given $itemKey exists in the namespace $nsKey. + * @param string $nsKey + * @param string $itemKey + * @return boolean + */ + public function hasKey($nsKey, $itemKey) + { + $this->_prepareCache($nsKey); + return array_key_exists($itemKey, $this->_contents[$nsKey]); + } + + /** + * Clear data for $itemKey in the namespace $nsKey if it exists. + * @param string $nsKey + * @param string $itemKey + */ + public function clearKey($nsKey, $itemKey) + { + unset($this->_contents[$nsKey][$itemKey]); + } + + /** + * Clear all data in the namespace $nsKey if it exists. + * @param string $nsKey + */ + public function clearAll($nsKey) + { + unset($this->_contents[$nsKey]); + } + + // -- Private methods + + /** + * Initialize the namespace of $nsKey if needed. + * @param string $nsKey + * @access private + */ + private function _prepareCache($nsKey) + { + if (!array_key_exists($nsKey, $this->_contents)) + { + $this->_contents[$nsKey] = array(); + } + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/KeyCache/DiskKeyCache.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/KeyCache/DiskKeyCache.php new file mode 100644 index 0000000..599fd6c --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/KeyCache/DiskKeyCache.php @@ -0,0 +1,316 @@ +_stream = $stream; + $this->_path = $path; + $this->_quotes = get_magic_quotes_runtime(); + } + + /** + * Set a string into the cache under $itemKey for the namespace $nsKey. + * @param string $nsKey + * @param string $itemKey + * @param string $string + * @param int $mode + * @throws Swift_IoException + * @see MODE_WRITE, MODE_APPEND + */ + public function setString($nsKey, $itemKey, $string, $mode) + { + $this->_prepareCache($nsKey); + switch ($mode) + { + case self::MODE_WRITE: + $fp = $this->_getHandle($nsKey, $itemKey, self::POSITION_START); + break; + case self::MODE_APPEND: + $fp = $this->_getHandle($nsKey, $itemKey, self::POSITION_END); + break; + default: + throw new Swift_SwiftException( + 'Invalid mode [' . $mode . '] used to set nsKey='. + $nsKey . ', itemKey=' . $itemKey + ); + break; + } + fwrite($fp, $string); + } + + /** + * Set a ByteStream into the cache under $itemKey for the namespace $nsKey. + * @param string $nsKey + * @param string $itemKey + * @param Swift_OutputByteStream $os + * @param int $mode + * @see MODE_WRITE, MODE_APPEND + * @throws Swift_IoException + */ + public function importFromByteStream($nsKey, $itemKey, Swift_OutputByteStream $os, + $mode) + { + $this->_prepareCache($nsKey); + switch ($mode) + { + case self::MODE_WRITE: + $fp = $this->_getHandle($nsKey, $itemKey, self::POSITION_START); + break; + case self::MODE_APPEND: + $fp = $this->_getHandle($nsKey, $itemKey, self::POSITION_END); + break; + default: + throw new Swift_SwiftException( + 'Invalid mode [' . $mode . '] used to set nsKey='. + $nsKey . ', itemKey=' . $itemKey + ); + break; + } + while (false !== $bytes = $os->read(8192)) + { + fwrite($fp, $bytes); + } + } + + /** + * Provides a ByteStream which when written to, writes data to $itemKey. + * NOTE: The stream will always write in append mode. + * @param string $nsKey + * @param string $itemKey + * @return Swift_InputByteStream + */ + public function getInputByteStream($nsKey, $itemKey, + Swift_InputByteStream $writeThrough = null) + { + $is = clone $this->_stream; + $is->setKeyCache($this); + $is->setNsKey($nsKey); + $is->setItemKey($itemKey); + if (isset($writeThrough)) + { + $is->setWriteThroughStream($writeThrough); + } + return $is; + } + + /** + * Get data back out of the cache as a string. + * @param string $nsKey + * @param string $itemKey + * @return string + * @throws Swift_IoException + */ + public function getString($nsKey, $itemKey) + { + $this->_prepareCache($nsKey); + if ($this->hasKey($nsKey, $itemKey)) + { + $fp = $this->_getHandle($nsKey, $itemKey, self::POSITION_START); + if ($this->_quotes) + { + set_magic_quotes_runtime(0); + } + $str = ''; + while (!feof($fp) && false !== $bytes = fread($fp, 8192)) + { + $str .= $bytes; + } + if ($this->_quotes) + { + set_magic_quotes_runtime(1); + } + return $str; + } + } + + /** + * Get data back out of the cache as a ByteStream. + * @param string $nsKey + * @param string $itemKey + * @param Swift_InputByteStream $is to write the data to + */ + public function exportToByteStream($nsKey, $itemKey, Swift_InputByteStream $is) + { + if ($this->hasKey($nsKey, $itemKey)) + { + $fp = $this->_getHandle($nsKey, $itemKey, self::POSITION_START); + if ($this->_quotes) + { + set_magic_quotes_runtime(0); + } + while (!feof($fp) && false !== $bytes = fread($fp, 8192)) + { + $is->write($bytes); + } + if ($this->_quotes) + { + set_magic_quotes_runtime(1); + } + } + } + + /** + * Check if the given $itemKey exists in the namespace $nsKey. + * @param string $nsKey + * @param string $itemKey + * @return boolean + */ + public function hasKey($nsKey, $itemKey) + { + return is_file($this->_path . '/' . $nsKey . '/' . $itemKey); + } + + /** + * Clear data for $itemKey in the namespace $nsKey if it exists. + * @param string $nsKey + * @param string $itemKey + */ + public function clearKey($nsKey, $itemKey) + { + if ($this->hasKey($nsKey, $itemKey)) + { + $fp = $this->_getHandle($nsKey, $itemKey, self::POSITION_END); + fclose($fp); + unlink($this->_path . '/' . $nsKey . '/' . $itemKey); + } + unset($this->_keys[$nsKey][$itemKey]); + } + + /** + * Clear all data in the namespace $nsKey if it exists. + * @param string $nsKey + */ + public function clearAll($nsKey) + { + if (array_key_exists($nsKey, $this->_keys)) + { + foreach ($this->_keys[$nsKey] as $itemKey=>$null) + { + $this->clearKey($nsKey, $itemKey); + } + rmdir($this->_path . '/' . $nsKey); + unset($this->_keys[$nsKey]); + } + } + + // -- Private methods + + /** + * Initialize the namespace of $nsKey if needed. + * @param string $nsKey + * @access private + */ + private function _prepareCache($nsKey) + { + $cacheDir = $this->_path . '/' . $nsKey; + if (!is_dir($cacheDir)) + { + if (!mkdir($cacheDir)) + { + throw new Swift_IoException('Failed to create cache directory ' . $cacheDir); + } + $this->_keys[$nsKey] = array(); + } + } + + /** + * Get a file handle on the cache item. + * @param string $nsKey + * @param string $itemKey + * @param int $position + * @return resource + * @access private + */ + private function _getHandle($nsKey, $itemKey, $position) + { + if (!isset($this->_keys[$nsKey]) || !array_key_exists($itemKey, $this->_keys[$nsKey])) + { + $fp = fopen($this->_path . '/' . $nsKey . '/' . $itemKey, 'w+b'); + $this->_keys[$nsKey][$itemKey] = $fp; + } + if (self::POSITION_START == $position) + { + fseek($this->_keys[$nsKey][$itemKey], 0, SEEK_SET); + } + else + { + fseek($this->_keys[$nsKey][$itemKey], 0, SEEK_END); + } + return $this->_keys[$nsKey][$itemKey]; + } + + /** + * Destructor. + */ + public function __destruct() + { + foreach ($this->_keys as $nsKey=>$null) + { + $this->clearAll($nsKey); + } + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/KeyCache/KeyCacheInputStream.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/KeyCache/KeyCacheInputStream.php new file mode 100644 index 0000000..a1f4440 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/KeyCache/KeyCacheInputStream.php @@ -0,0 +1,53 @@ +_keyCache = $keyCache; + } + + /** + * Specify a stream to write through for each write(). + * @param Swift_InputByteStream $is + */ + public function setWriteThroughStream(Swift_InputByteStream $is) + { + $this->_writeThrough = $is; + } + + /** + * Writes $bytes to the end of the stream. + * @param string $bytes + * @param Swift_InputByteStream $is, optional + */ + public function write($bytes, Swift_InputByteStream $is = null) + { + $this->_keyCache->setString( + $this->_nsKey, $this->_itemKey, $bytes, Swift_KeyCache::MODE_APPEND + ); + if (isset($is)) + { + $is->write($bytes); + } + if (isset($this->_writeThrough)) + { + $this->_writeThrough->write($bytes); + } + } + + /** + * Not used. + */ + public function commit() + { + } + + /** + * Not used. + */ + public function bind(Swift_InputByteStream $is) + { + } + + /** + * Not used. + */ + public function unbind(Swift_InputByteStream $is) + { + } + + /** + * Flush the contents of the stream (empty it) and set the internal pointer + * to the beginning. + */ + public function flushBuffers() + { + $this->_keyCache->clearKey($this->_nsKey, $this->_itemKey); + } + + /** + * Set the nsKey which will be written to. + * @param string $nsKey + */ + public function setNsKey($nsKey) + { + $this->_nsKey = $nsKey; + } + + /** + * Set the itemKey which will be written to. + * @param string $itemKey + */ + public function setItemKey($itemKey) + { + $this->_itemKey = $itemKey; + } + + /** + * Any implementation should be cloneable, allowing the clone to access a + * separate $nsKey and $itemKey. + */ + public function __clone() + { + $this->_writeThrough = null; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/LoadBalancedTransport.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/LoadBalancedTransport.php new file mode 100644 index 0000000..14ae292 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/LoadBalancedTransport.php @@ -0,0 +1,48 @@ +createDependenciesFor('transport.loadbalanced') + ); + + $this->setTransports($transports); + } + + /** + * Create a new LoadBalancedTransport instance. + * @param string $transports + * @return Swift_LoadBalancedTransport + */ + public static function newInstance($transports = array()) + { + return new self($transports); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/MailTransport.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/MailTransport.php new file mode 100644 index 0000000..afe29c6 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/MailTransport.php @@ -0,0 +1,48 @@ +createDependenciesFor('transport.mail') + ); + + $this->setExtraParams($extraParams); + } + + /** + * Create a new MailTransport instance. + * @param string $extraParams To be passed to mail() + * @return Swift_MailTransport + */ + public static function newInstance($extraParams = '-f%s') + { + return new self($extraParams); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mailer.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mailer.php new file mode 100644 index 0000000..c92feb4 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mailer.php @@ -0,0 +1,173 @@ +_transport = $transport; + } + + /** + * Create a new Mailer instance. + * + * @param Swift_Transport $transport + * @return Swift_Mailer + */ + public static function newInstance(Swift_Transport $transport) + { + return new self($transport); + } + + /** + * Send the given Message like it would be sent in a mail client. + * + * All recipients (with the exception of Bcc) will be able to see the other + * recipients this message was sent to. + * + * If you need to send to each recipient without disclosing details about the + * other recipients see {@link batchSend()}. + * + * Recipient/sender data will be retreived from the Message object. + * + * The return value is the number of recipients who were accepted for + * delivery. + * + * @param Swift_Mime_Message $message + * @param array &$failedRecipients, optional + * @return int + * @see batchSend() + */ + public function send(Swift_Mime_Message $message, &$failedRecipients = null) + { + $failedRecipients = (array) $failedRecipients; + + if (!$this->_transport->isStarted()) + { + $this->_transport->start(); + } + + return $this->_transport->send($message, $failedRecipients); + } + + /** + * Send the given Message to all recipients individually. + * + * This differs from {@link send()} in the way headers are presented to the + * recipient. The only recipient in the "To:" field will be the individual + * recipient it was sent to. + * + * If an iterator is provided, recipients will be read from the iterator + * one-by-one, otherwise recipient data will be retreived from the Message + * object. + * + * Sender information is always read from the Message object. + * + * The return value is the number of recipients who were accepted for + * delivery. + * + * @param Swift_Mime_Message $message + * @param array &$failedRecipients, optional + * @param Swift_Mailer_RecipientIterator $it, optional + * @return int + * @see send() + */ + public function batchSend(Swift_Mime_Message $message, + &$failedRecipients = null, + Swift_Mailer_RecipientIterator $it = null) + { + $failedRecipients = (array) $failedRecipients; + + $sent = 0; + $to = $message->getTo(); + $cc = $message->getCc(); + $bcc = $message->getBcc(); + + if (!empty($cc)) + { + $message->setCc(array()); + } + if (!empty($bcc)) + { + $message->setBcc(array()); + } + + //Use an iterator if set + if (isset($it)) + { + while ($it->hasNext()) + { + $message->setTo($it->nextRecipient()); + $sent += $this->send($message, $failedRecipients); + } + } + else + { + foreach ($to as $address => $name) + { + $message->setTo(array($address => $name)); + $sent += $this->send($message, $failedRecipients); + } + } + + $message->setTo($to); + + if (!empty($cc)) + { + $message->setCc($cc); + } + if (!empty($bcc)) + { + $message->setBcc($bcc); + } + + return $sent; + } + + /** + * Register a plugin using a known unique key (e.g. myPlugin). + * + * @param Swift_Events_EventListener $plugin + * @param string $key + */ + public function registerPlugin(Swift_Events_EventListener $plugin) + { + $this->_transport->registerPlugin($plugin); + } + + /** + * The Transport used to send messages. + * @return Swift_Transport + */ + public function getTransport() + { + return $this->_transport; + } +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mailer/.svn/all-wcprops b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mailer/.svn/all-wcprops new file mode 100644 index 0000000..334b167 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mailer/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 72 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Mailer +END +ArrayRecipientIterator.php +K 25 +svn:wc:ra_dav:version-url +V 99 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Mailer/ArrayRecipientIterator.php +END +RecipientIterator.php +K 25 +svn:wc:ra_dav:version-url +V 94 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Mailer/RecipientIterator.php +END diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mailer/.svn/entries b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mailer/.svn/entries new file mode 100644 index 0000000..0f68c03 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mailer/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Mailer +http://svn.symfony-project.com + + + +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +ArrayRecipientIterator.php +file + + + + +2012-05-10T18:41:52.649551Z +97a6ddf2bd5040f9c29e1a8abb7ef378 +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + + + + + + + + +1248 + +RecipientIterator.php +file + + + + +2012-05-10T18:41:52.649551Z +870cf8512df6fb733d7e9a3a107ede6f +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + + + + + + + + +760 + diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mailer/.svn/text-base/ArrayRecipientIterator.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mailer/.svn/text-base/ArrayRecipientIterator.php.svn-base new file mode 100644 index 0000000..65d60c1 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mailer/.svn/text-base/ArrayRecipientIterator.php.svn-base @@ -0,0 +1,59 @@ +_recipients = $recipients; + } + + /** + * Returns true only if there are more recipients to send to. + * @return boolean + */ + public function hasNext() + { + return !empty($this->_recipients); + } + + /** + * Returns an array where the keys are the addresses of recipients and the + * values are the names. + * e.g. ('foo@bar' => 'Foo') or ('foo@bar' => NULL) + * @return array + */ + public function nextRecipient() + { + return array_splice($this->_recipients, 0, 1); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mailer/.svn/text-base/RecipientIterator.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mailer/.svn/text-base/RecipientIterator.php.svn-base new file mode 100644 index 0000000..27138416 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mailer/.svn/text-base/RecipientIterator.php.svn-base @@ -0,0 +1,34 @@ + 'Foo') or ('foo@bar' => NULL) + * @return array + */ + public function nextRecipient(); + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mailer/ArrayRecipientIterator.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mailer/ArrayRecipientIterator.php new file mode 100644 index 0000000..65d60c1 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mailer/ArrayRecipientIterator.php @@ -0,0 +1,59 @@ +_recipients = $recipients; + } + + /** + * Returns true only if there are more recipients to send to. + * @return boolean + */ + public function hasNext() + { + return !empty($this->_recipients); + } + + /** + * Returns an array where the keys are the addresses of recipients and the + * values are the names. + * e.g. ('foo@bar' => 'Foo') or ('foo@bar' => NULL) + * @return array + */ + public function nextRecipient() + { + return array_splice($this->_recipients, 0, 1); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mailer/RecipientIterator.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mailer/RecipientIterator.php new file mode 100644 index 0000000..27138416 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mailer/RecipientIterator.php @@ -0,0 +1,34 @@ + 'Foo') or ('foo@bar' => NULL) + * @return array + */ + public function nextRecipient(); + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Message.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Message.php new file mode 100644 index 0000000..e7d610e --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Message.php @@ -0,0 +1,87 @@ +createDependenciesFor('mime.message') + ); + + if (!isset($charset)) + { + $charset = Swift_DependencyContainer::getInstance() + ->lookup('properties.charset'); + } + $this->setSubject($subject); + $this->setBody($body); + $this->setCharset($charset); + if ($contentType) + { + $this->setContentType($contentType); + } + } + + /** + * Create a new Message. + * @param string $subject + * @param string $body + * @param string $contentType + * @param string $charset + * @return Swift_Mime_Message + */ + public static function newInstance($subject = null, $body = null, + $contentType = null, $charset = null) + { + return new self($subject, $body, $contentType, $charset); + } + + /** + * Add a MimePart to this Message. + * @param string|Swift_OutputByteStream $body + * @param string $contentType + * @param string $charset + */ + public function addPart($body, $contentType = null, $charset = null) + { + return $this->attach(Swift_MimePart::newInstance( + $body, $contentType, $charset + )); + } + + public function __wakeup() + { + Swift_DependencyContainer::getInstance()->createDependenciesFor('mime.message'); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/.svn/all-wcprops b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/.svn/all-wcprops new file mode 100644 index 0000000..abf441a --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/.svn/all-wcprops @@ -0,0 +1,107 @@ +K 25 +svn:wc:ra_dav:version-url +V 70 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Mime +END +EmbeddedFile.php +K 25 +svn:wc:ra_dav:version-url +V 87 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Mime/EmbeddedFile.php +END +SimpleHeaderFactory.php +K 25 +svn:wc:ra_dav:version-url +V 94 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Mime/SimpleHeaderFactory.php +END +EncodingObserver.php +K 25 +svn:wc:ra_dav:version-url +V 91 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Mime/EncodingObserver.php +END +SimpleMessage.php +K 25 +svn:wc:ra_dav:version-url +V 88 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Mime/SimpleMessage.php +END +SimpleMimeEntity.php +K 25 +svn:wc:ra_dav:version-url +V 91 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Mime/SimpleMimeEntity.php +END +CharsetObserver.php +K 25 +svn:wc:ra_dav:version-url +V 90 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Mime/CharsetObserver.php +END +HeaderSet.php +K 25 +svn:wc:ra_dav:version-url +V 84 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Mime/HeaderSet.php +END +ParameterizedHeader.php +K 25 +svn:wc:ra_dav:version-url +V 94 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Mime/ParameterizedHeader.php +END +ContentEncoder.php +K 25 +svn:wc:ra_dav:version-url +V 89 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Mime/ContentEncoder.php +END +MimePart.php +K 25 +svn:wc:ra_dav:version-url +V 83 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Mime/MimePart.php +END +SimpleHeaderSet.php +K 25 +svn:wc:ra_dav:version-url +V 90 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Mime/SimpleHeaderSet.php +END +HeaderFactory.php +K 25 +svn:wc:ra_dav:version-url +V 88 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Mime/HeaderFactory.php +END +MimeEntity.php +K 25 +svn:wc:ra_dav:version-url +V 85 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Mime/MimeEntity.php +END +Message.php +K 25 +svn:wc:ra_dav:version-url +V 82 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Mime/Message.php +END +Header.php +K 25 +svn:wc:ra_dav:version-url +V 81 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Mime/Header.php +END +HeaderEncoder.php +K 25 +svn:wc:ra_dav:version-url +V 88 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Mime/HeaderEncoder.php +END +Attachment.php +K 25 +svn:wc:ra_dav:version-url +V 85 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Mime/Attachment.php +END diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/.svn/entries b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/.svn/entries new file mode 100644 index 0000000..961e897 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/.svn/entries @@ -0,0 +1,615 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Mime +http://svn.symfony-project.com + + + +2009-11-10T13:44:02.224175Z +23762 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +EmbeddedFile.php +file + + + + +2012-05-10T18:41:51.437552Z +811c16b324e0f9f69dcd23d4ad54db32 +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + + + + + + + + +1244 + +SimpleHeaderFactory.php +file + + + + +2012-05-10T18:41:51.437552Z +4d88cb7cb21a2872165fb807de5fc633 +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + + + + + + + + +4841 + +EncodingObserver.php +file + + + + +2012-05-10T18:41:51.473569Z +b6426ba6414d1099257ae86d1c9d8b9c +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + + + + + + + + +641 + +SimpleMessage.php +file + + + + +2012-05-10T18:41:51.473569Z +66a6a0bae2fcdc96eae65f0320a9ac51 +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + + + + + + + + +14670 + +SimpleMimeEntity.php +file + + + + +2012-05-10T18:41:51.437552Z +2f9d18f55730200f1e97b4b06c72bce5 +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + + + + + + + + +19674 + +CharsetObserver.php +file + + + + +2012-05-10T18:41:51.473569Z +f549036f2758e2693b2d046cccfcf1a0 +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + + + + + + + + +533 + +HeaderEncoder +dir + +HeaderSet.php +file + + + + +2012-05-10T18:41:51.473569Z +19c25bd3e7ed9b5943c2fabf1d088dd7 +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + + + + + + + + +3923 + +ParameterizedHeader.php +file + + + + +2012-05-10T18:41:51.473569Z +27ba92ba42311d77d1836f47405c3c13 +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + + + + + + + + +697 + +ContentEncoder.php +file + + + + +2012-05-10T18:41:51.473569Z +d8da56babd5c363ae3a59c7c0890a865 +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + + + + + + + + +1028 + +MimePart.php +file + + + + +2012-05-10T18:41:51.477550Z +60bf65875776765324efd0854c965c8e +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + + + + + + + + +4602 + +SimpleHeaderSet.php +file + + + + +2012-05-10T18:41:51.473569Z +2e5c664af8c7faefdff5ef604dc62ca7 +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + + + + + + + + +8985 + +HeaderFactory.php +file + + + + +2012-05-10T18:41:51.477550Z +a588ebc5e5b22dc04a4a9f46fb532ed4 +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + + + + + + + + +1818 + +ContentEncoder +dir + +Message.php +file + + + + +2012-05-10T18:41:51.477550Z +ad5015bc30ded0e1a8b177931bd2bfc4 +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + + + + + + + + +5810 + +MimeEntity.php +file + + + + +2012-05-10T18:41:51.477550Z +5bc6f30e6db2094029f92eea4e5aebfb +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + + + + + + + + +2921 + +Headers +dir + +HeaderEncoder.php +file + + + + +2012-05-10T18:41:51.477550Z +57b9546649abf5da7923d4683247f90b +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + + + + + + + + +545 + +Header.php +file + + + + +2012-05-10T18:41:51.477550Z +662c4fb59044a3f29169895dd5f104f4 +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + + + + + + + + +1867 + +Attachment.php +file + + + + +2012-05-10T18:41:51.477550Z +7e4b16869435da9347b5e680811f2add +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + + + + + + + + +3588 + diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/.svn/text-base/Attachment.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/.svn/text-base/Attachment.php.svn-base new file mode 100644 index 0000000..25ef68b --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/.svn/text-base/Attachment.php.svn-base @@ -0,0 +1,143 @@ +setDisposition('attachment'); + $this->setContentType('application/octet-stream'); + $this->_mimeTypes = $mimeTypes; + } + + /** + * Get the nesting level used for this attachment. + * Always returns {@link LEVEL_MIXED}. + * @return int + */ + public function getNestingLevel() + { + return self::LEVEL_MIXED; + } + + /** + * Get the Content-Disposition of this attachment. + * By default attachments have a disposition of "attachment". + * @return string + */ + public function getDisposition() + { + return $this->_getHeaderFieldModel('Content-Disposition'); + } + + /** + * Set the Content-Disposition of this attachment. + * @param string $disposition + */ + public function setDisposition($disposition) + { + if (!$this->_setHeaderFieldModel('Content-Disposition', $disposition)) + { + $this->getHeaders()->addParameterizedHeader( + 'Content-Disposition', $disposition + ); + } + return $this; + } + + /** + * Get the filename of this attachment when downloaded. + * @return string + */ + public function getFilename() + { + return $this->_getHeaderParameter('Content-Disposition', 'filename'); + } + + /** + * Set the filename of this attachment. + * @param string $filename + */ + public function setFilename($filename) + { + $this->_setHeaderParameter('Content-Disposition', 'filename', $filename); + $this->_setHeaderParameter('Content-Type', 'name', $filename); + return $this; + } + + /** + * Get the file size of this attachment. + * @return int + */ + public function getSize() + { + return $this->_getHeaderParameter('Content-Disposition', 'size'); + } + + /** + * Set the file size of this attachment. + * @param int $size + */ + public function setSize($size) + { + $this->_setHeaderParameter('Content-Disposition', 'size', $size); + return $this; + } + + /** + * Set the file that this attachment is for. + * @param Swift_FileStream $file + * @param string $contentType optional + */ + public function setFile(Swift_FileStream $file, $contentType = null) + { + $this->setFilename(basename($file->getPath())); + $this->setBody($file, $contentType); + if (!isset($contentType)) + { + $extension = strtolower(substr( + $file->getPath(), strrpos($file->getPath(), '.') + 1 + )); + + if (array_key_exists($extension, $this->_mimeTypes)) + { + $this->setContentType($this->_mimeTypes[$extension]); + } + } + return $this; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/.svn/text-base/CharsetObserver.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/.svn/text-base/CharsetObserver.php.svn-base new file mode 100644 index 0000000..c26009f --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/.svn/text-base/CharsetObserver.php.svn-base @@ -0,0 +1,26 @@ +setDisposition('inline'); + $this->setId($this->getId()); + } + + /** + * Get the nesting level of this EmbeddedFile. + * Returns {@link LEVEL_RELATED}. + * @return int + */ + public function getNestingLevel() + { + return self::LEVEL_RELATED; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/.svn/text-base/EncodingObserver.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/.svn/text-base/EncodingObserver.php.svn-base new file mode 100644 index 0000000..50472db --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/.svn/text-base/EncodingObserver.php.svn-base @@ -0,0 +1,28 @@ + 'Real Name'). + * + * If the second parameter is provided and the first is a string, then $name + * is associated with the address. + * + * @param mixed $address + * @param string $name optional + */ + public function setSender($address, $name = null); + + /** + * Get the sender address for this message. + * + * This has a higher significance than the From address. + * + * @return string + */ + public function getSender(); + + /** + * Set the From address of this message. + * + * It is permissible for multiple From addresses to be set using an array. + * + * If multiple From addresses are used, you SHOULD set the Sender address and + * according to RFC 2822, MUST set the sender address. + * + * An array can be used if display names are to be provided: i.e. + * array('email@address.com' => 'Real Name'). + * + * If the second parameter is provided and the first is a string, then $name + * is associated with the address. + * + * @param mixed $addresses + * @param string $name optional + */ + public function setFrom($addresses, $name = null); + + /** + * Get the From address(es) of this message. + * + * This method always returns an associative array where the keys are the + * addresses. + * + * @return string[] + */ + public function getFrom(); + + /** + * Set the Reply-To address(es). + * + * Any replies from the receiver will be sent to this address. + * + * It is permissible for multiple reply-to addresses to be set using an array. + * + * This method has the same synopsis as {@link setFrom()} and {@link setTo()}. + * + * If the second parameter is provided and the first is a string, then $name + * is associated with the address. + * + * @param mixed $addresses + * @param string $name optional + */ + public function setReplyTo($addresses, $name = null); + + /** + * Get the Reply-To addresses for this message. + * + * This method always returns an associative array where the keys provide the + * email addresses. + * + * @return string[] + */ + public function getReplyTo(); + + /** + * Set the To address(es). + * + * Recipients set in this field will receive a copy of this message. + * + * This method has the same synopsis as {@link setFrom()} and {@link setCc()}. + * + * If the second parameter is provided and the first is a string, then $name + * is associated with the address. + * + * @param mixed $addresses + * @param string $name optional + */ + public function setTo($addresses, $name = null); + + /** + * Get the To addresses for this message. + * + * This method always returns an associative array, whereby the keys provide + * the actual email addresses. + * + * @return string[] + */ + public function getTo(); + + /** + * Set the Cc address(es). + * + * Recipients set in this field will receive a 'carbon-copy' of this message. + * + * This method has the same synopsis as {@link setFrom()} and {@link setTo()}. + * + * @param mixed $addresses + * @param string $name optional + */ + public function setCc($addresses, $name = null); + + /** + * Get the Cc addresses for this message. + * + * This method always returns an associative array, whereby the keys provide + * the actual email addresses. + * + * @return string[] + */ + public function getCc(); + + /** + * Set the Bcc address(es). + * + * Recipients set in this field will receive a 'blind-carbon-copy' of this + * message. + * + * In other words, they will get the message, but any other recipients of the + * message will have no such knowledge of their receipt of it. + * + * This method has the same synopsis as {@link setFrom()} and {@link setTo()}. + * + * @param mixed $addresses + * @param string $name optional + */ + public function setBcc($addresses, $name = null); + + /** + * Get the Bcc addresses for this message. + * + * This method always returns an associative array, whereby the keys provide + * the actual email addresses. + * + * @return string[] + */ + public function getBcc(); + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/.svn/text-base/MimeEntity.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/.svn/text-base/MimeEntity.php.svn-base new file mode 100644 index 0000000..2b08009 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/.svn/text-base/MimeEntity.php.svn-base @@ -0,0 +1,108 @@ +setContentType('text/plain'); + if (!is_null($charset)) + { + $this->setCharset($charset); + } + } + + /** + * Set the body of this entity, either as a string, or as an instance of + * {@link Swift_OutputByteStream}. + * + * @param mixed $body + * @param string $contentType optional + * @param string $charset optional + */ + public function setBody($body, $contentType = null, $charset = null) + { + parent::setBody($body, $contentType); + if (isset($charset)) + { + $this->setCharset($charset); + } + return $this; + } + + /** + * Get the character set of this entity. + * + * @return string + */ + public function getCharset() + { + return $this->_getHeaderParameter('Content-Type', 'charset'); + } + + /** + * Set the character set of this entity. + * + * @param string $charset + */ + public function setCharset($charset) + { + $this->_setHeaderParameter('Content-Type', 'charset', $charset); + if ($charset !== $this->_userCharset) + { + $this->_clearCache(); + } + $this->_userCharset = $charset; + parent::charsetChanged($charset); + return $this; + } + + /** + * Get the format of this entity (i.e. flowed or fixed). + * + * @return string + */ + public function getFormat() + { + return $this->_getHeaderParameter('Content-Type', 'format'); + } + + /** + * Set the format of this entity (flowed or fixed). + * + * @param string $format + */ + public function setFormat($format) + { + $this->_setHeaderParameter('Content-Type', 'format', $format); + $this->_userFormat = $format; + return $this; + } + + /** + * Test if delsp is being used for this entity. + * + * @return boolean + */ + public function getDelSp() + { + return ($this->_getHeaderParameter('Content-Type', 'delsp') == 'yes') + ? true + : false; + } + + /** + * Turn delsp on or off for this entity. + * + * @param boolean $delsp + */ + public function setDelSp($delsp = true) + { + $this->_setHeaderParameter('Content-Type', 'delsp', $delsp ? 'yes' : null); + $this->_userDelSp = $delsp; + return $this; + } + + /** + * Get the nesting level of this entity. + * + * @return int + * @see LEVEL_TOP, LEVEL_ALTERNATIVE, LEVEL_MIXED, LEVEL_RELATED + */ + public function getNestingLevel() + { + return $this->_nestingLevel; + } + + /** + * Receive notification that the charset has changed on this document, or a + * parent document. + * + * @param string $charset + */ + public function charsetChanged($charset) + { + $this->setCharset($charset); + } + + // -- Protected methods + + /** Fix the content-type and encoding of this entity */ + protected function _fixHeaders() + { + parent::_fixHeaders(); + if (count($this->getChildren())) + { + $this->_setHeaderParameter('Content-Type', 'charset', null); + $this->_setHeaderParameter('Content-Type', 'format', null); + $this->_setHeaderParameter('Content-Type', 'delsp', null); + } + else + { + $this->setCharset($this->_userCharset); + $this->setFormat($this->_userFormat); + $this->setDelSp($this->_userDelSp); + } + } + + /** Set the nesting level of this entity */ + protected function _setNestingLevel($level) + { + $this->_nestingLevel = $level; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/.svn/text-base/ParameterizedHeader.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/.svn/text-base/ParameterizedHeader.php.svn-base new file mode 100644 index 0000000..da65ca9 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/.svn/text-base/ParameterizedHeader.php.svn-base @@ -0,0 +1,35 @@ +_encoder = $encoder; + $this->_paramEncoder = $paramEncoder; + $this->_charset = $charset; + } + + /** + * Create a new Mailbox Header with a list of $addresses. + * @param string $name + * @param array|string $addresses + * @return Swift_Mime_Header + */ + public function createMailboxHeader($name, $addresses = null) + { + $header = new Swift_Mime_Headers_MailboxHeader($name, $this->_encoder); + if (isset($addresses)) + { + $header->setFieldBodyModel($addresses); + } + $this->_setHeaderCharset($header); + return $header; + } + + /** + * Create a new Date header using $timestamp (UNIX time). + * @param string $name + * @param int $timestamp + * @return Swift_Mime_Header + */ + public function createDateHeader($name, $timestamp = null) + { + $header = new Swift_Mime_Headers_DateHeader($name); + if (isset($timestamp)) + { + $header->setFieldBodyModel($timestamp); + } + $this->_setHeaderCharset($header); + return $header; + } + + /** + * Create a new basic text header with $name and $value. + * @param string $name + * @param string $value + * @return Swift_Mime_Header + */ + public function createTextHeader($name, $value = null) + { + $header = new Swift_Mime_Headers_UnstructuredHeader($name, $this->_encoder); + if (isset($value)) + { + $header->setFieldBodyModel($value); + } + $this->_setHeaderCharset($header); + return $header; + } + + /** + * Create a new ParameterizedHeader with $name, $value and $params. + * @param string $name + * @param string $value + * @param array $params + * @return Swift_Mime_ParameterizedHeader + */ + public function createParameterizedHeader($name, $value = null, + $params = array()) + { + $header = new Swift_Mime_Headers_ParameterizedHeader($name, + $this->_encoder, (strtolower($name) == 'content-disposition') + ? $this->_paramEncoder + : null + ); + if (isset($value)) + { + $header->setFieldBodyModel($value); + } + foreach ($params as $k => $v) + { + $header->setParameter($k, $v); + } + $this->_setHeaderCharset($header); + return $header; + } + + /** + * Create a new ID header for Message-ID or Content-ID. + * @param string $name + * @param string|array $ids + * @return Swift_Mime_Header + */ + public function createIdHeader($name, $ids = null) + { + $header = new Swift_Mime_Headers_IdentificationHeader($name); + if (isset($ids)) + { + $header->setFieldBodyModel($ids); + } + $this->_setHeaderCharset($header); + return $header; + } + + /** + * Create a new Path header with an address (path) in it. + * @param string $name + * @param string $path + * @return Swift_Mime_Header + */ + public function createPathHeader($name, $path = null) + { + $header = new Swift_Mime_Headers_PathHeader($name); + if (isset($path)) + { + $header->setFieldBodyModel($path); + } + $this->_setHeaderCharset($header); + return $header; + } + + /** + * Notify this observer that the entity's charset has changed. + * @param string $charset + */ + public function charsetChanged($charset) + { + $this->_charset = $charset; + $this->_encoder->charsetChanged($charset); + $this->_paramEncoder->charsetChanged($charset); + } + + // -- Private methods + + /** Apply the charset to the Header */ + private function _setHeaderCharset(Swift_Mime_Header $header) + { + if (isset($this->_charset)) + { + $header->setCharset($this->_charset); + } + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/.svn/text-base/SimpleHeaderSet.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/.svn/text-base/SimpleHeaderSet.php.svn-base new file mode 100644 index 0000000..eeb0221 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/.svn/text-base/SimpleHeaderSet.php.svn-base @@ -0,0 +1,396 @@ +_factory = $factory; + if (isset($charset)) + { + $this->setCharset($charset); + } + } + + /** + * Set the charset used by these headers. + * + * @param string $charset + */ + public function setCharset($charset) + { + $this->_charset = $charset; + $this->_factory->charsetChanged($charset); + $this->_notifyHeadersOfCharset($charset); + } + + /** + * Add a new Mailbox Header with a list of $addresses. + * + * @param string $name + * @param array|string $addresses + */ + public function addMailboxHeader($name, $addresses = null) + { + $this->_storeHeader($name, + $this->_factory->createMailboxHeader($name, $addresses)); + } + + /** + * Add a new Date header using $timestamp (UNIX time). + * + * @param string $name + * @param int $timestamp + */ + public function addDateHeader($name, $timestamp = null) + { + $this->_storeHeader($name, + $this->_factory->createDateHeader($name, $timestamp)); + } + + /** + * Add a new basic text header with $name and $value. + * + * @param string $name + * @param string $value + */ + public function addTextHeader($name, $value = null) + { + $this->_storeHeader($name, + $this->_factory->createTextHeader($name, $value)); + } + + /** + * Add a new ParameterizedHeader with $name, $value and $params. + * + * @param string $name + * @param string $value + * @param array $params + */ + public function addParameterizedHeader($name, $value = null, + $params = array()) + { + $this->_storeHeader($name, + $this->_factory->createParameterizedHeader($name, $value, + $params)); + } + + /** + * Add a new ID header for Message-ID or Content-ID. + * + * @param string $name + * @param string|array $ids + */ + public function addIdHeader($name, $ids = null) + { + $this->_storeHeader($name, $this->_factory->createIdHeader($name, $ids)); + } + + /** + * Add a new Path header with an address (path) in it. + * + * @param string $name + * @param string $path + */ + public function addPathHeader($name, $path = null) + { + $this->_storeHeader($name, $this->_factory->createPathHeader($name, $path)); + } + + /** + * Returns true if at least one header with the given $name exists. + * + * If multiple headers match, the actual one may be specified by $index. + * + * @param string $name + * @param int $index + * + * @return boolean + */ + public function has($name, $index = 0) + { + $lowerName = strtolower($name); + return array_key_exists($lowerName, $this->_headers) + && array_key_exists($index, $this->_headers[$lowerName]); + } + + /** + * Set a header in the HeaderSet. + * + * The header may be a previously fetched header via {@link get()} or it may + * be one that has been created separately. + * + * If $index is specified, the header will be inserted into the set at this + * offset. + * + * @param Swift_Mime_Header $header + * @param int $index + */ + public function set(Swift_Mime_Header $header, $index = 0) + { + $this->_storeHeader($header->getFieldName(), $header, $index); + } + + /** + * Get the header with the given $name. + * + * If multiple headers match, the actual one may be specified by $index. + * Returns NULL if none present. + * + * @param string $name + * @param int $index + * + * @return Swift_Mime_Header + */ + public function get($name, $index = 0) + { + if ($this->has($name, $index)) + { + $lowerName = strtolower($name); + return $this->_headers[$lowerName][$index]; + } + } + + /** + * Get all headers with the given $name. + * + * @param string $name + * + * @return array + */ + public function getAll($name = null) + { + if (!isset($name)) + { + $headers = array(); + foreach ($this->_headers as $collection) + { + $headers = array_merge($headers, $collection); + } + return $headers; + } + + $lowerName = strtolower($name); + if (!array_key_exists($lowerName, $this->_headers)) + { + return array(); + } + return $this->_headers[$lowerName]; + } + + /** + * Remove the header with the given $name if it's set. + * + * If multiple headers match, the actual one may be specified by $index. + * + * @param string $name + * @param int $index + */ + public function remove($name, $index = 0) + { + $lowerName = strtolower($name); + unset($this->_headers[$lowerName][$index]); + } + + /** + * Remove all headers with the given $name. + * + * @param string $name + */ + public function removeAll($name) + { + $lowerName = strtolower($name); + unset($this->_headers[$lowerName]); + } + + /** + * Create a new instance of this HeaderSet. + * + * @return Swift_Mime_HeaderSet + */ + public function newInstance() + { + return new self($this->_factory); + } + + /** + * Define a list of Header names as an array in the correct order. + * + * These Headers will be output in the given order where present. + * + * @param array $sequence + */ + public function defineOrdering(array $sequence) + { + $this->_order = array_flip(array_map('strtolower', $sequence)); + } + + /** + * Set a list of header names which must always be displayed when set. + * + * Usually headers without a field value won't be output unless set here. + * + * @param array $names + */ + public function setAlwaysDisplayed(array $names) + { + $this->_required = array_flip(array_map('strtolower', $names)); + } + + /** + * Notify this observer that the entity's charset has changed. + * + * @param string $charset + */ + public function charsetChanged($charset) + { + $this->setCharset($charset); + } + + /** + * Returns a string with a representation of all headers. + * + * @return string + */ + public function toString() + { + $string = ''; + $headers = $this->_headers; + if ($this->_canSort()) + { + uksort($headers, array($this, '_sortHeaders')); + } + foreach ($headers as $collection) + { + foreach ($collection as $header) + { + if ($this->_isDisplayed($header) || $header->getFieldBody() != '') + { + $string .= $header->toString(); + } + } + } + return $string; + } + + /** + * Returns a string representation of this object. + * + * @return string + * + * @see toString() + */ + public function __toString() + { + return $this->toString(); + } + + // -- Private methods + + /** Save a Header to the internal collection */ + private function _storeHeader($name, Swift_Mime_Header $header, $offset = null) + { + if (!isset($this->_headers[strtolower($name)])) + { + $this->_headers[strtolower($name)] = array(); + } + if (!isset($offset)) + { + $this->_headers[strtolower($name)][] = $header; + } + else + { + $this->_headers[strtolower($name)][$offset] = $header; + } + } + + /** Test if the headers can be sorted */ + private function _canSort() + { + return count($this->_order) > 0; + } + + /** uksort() algorithm for Header ordering */ + private function _sortHeaders($a, $b) + { + $lowerA = strtolower($a); + $lowerB = strtolower($b); + $aPos = array_key_exists($lowerA, $this->_order) + ? $this->_order[$lowerA] + : -1; + $bPos = array_key_exists($lowerB, $this->_order) + ? $this->_order[$lowerB] + : -1; + + if ($aPos == -1) + { + return 1; + } + elseif ($bPos == -1) + { + return -1; + } + + return ($aPos < $bPos) ? -1 : 1; + } + + /** Test if the given Header is always displayed */ + private function _isDisplayed(Swift_Mime_Header $header) + { + return array_key_exists(strtolower($header->getFieldName()), $this->_required); + } + + /** Notify all Headers of the new charset */ + private function _notifyHeadersOfCharset($charset) + { + foreach ($this->_headers as $headerGroup) + { + foreach ($headerGroup as $header) + { + $header->setCharset($charset); + } + } + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/.svn/text-base/SimpleMessage.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/.svn/text-base/SimpleMessage.php.svn-base new file mode 100644 index 0000000..bbe1e8f --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/.svn/text-base/SimpleMessage.php.svn-base @@ -0,0 +1,609 @@ +getHeaders()->defineOrdering(array( + 'Return-Path', + 'Sender', + 'Message-ID', + 'Date', + 'Subject', + 'From', + 'Reply-To', + 'To', + 'Cc', + 'Bcc', + 'MIME-Version', + 'Content-Type', + 'Content-Transfer-Encoding' + )); + $this->getHeaders()->setAlwaysDisplayed( + array('Date', 'Message-ID', 'From') + ); + $this->getHeaders()->addTextHeader('MIME-Version', '1.0'); + $this->setDate(time()); + $this->setId($this->getId()); + $this->getHeaders()->addMailboxHeader('From'); + } + + /** + * Always returns {@link LEVEL_TOP} for a message instance. + * @return int + */ + public function getNestingLevel() + { + return self::LEVEL_TOP; + } + + /** + * Set the subject of this message. + * @param string $subject + */ + public function setSubject($subject) + { + if (!$this->_setHeaderFieldModel('Subject', $subject)) + { + $this->getHeaders()->addTextHeader('Subject', $subject); + } + return $this; + } + + /** + * Get the subject of this message. + * @return string + */ + public function getSubject() + { + return $this->_getHeaderFieldModel('Subject'); + } + + /** + * Set the date at which this message was created. + * @param int $date + */ + public function setDate($date) + { + if (!$this->_setHeaderFieldModel('Date', $date)) + { + $this->getHeaders()->addDateHeader('Date', $date); + } + return $this; + } + + /** + * Get the date at which this message was created. + * @return int + */ + public function getDate() + { + return $this->_getHeaderFieldModel('Date'); + } + + /** + * Set the return-path (the bounce address) of this message. + * @param string $address + */ + public function setReturnPath($address) + { + if (!$this->_setHeaderFieldModel('Return-Path', $address)) + { + $this->getHeaders()->addPathHeader('Return-Path', $address); + } + return $this; + } + + /** + * Get the return-path (bounce address) of this message. + * @return string + */ + public function getReturnPath() + { + return $this->_getHeaderFieldModel('Return-Path'); + } + + /** + * Set the sender of this message. + * This does not override the From field, but it has a higher significance. + * @param string $sender + * @param string $name optional + */ + public function setSender($address, $name = null) + { + if (!is_array($address) && isset($name)) + { + $address = array($address => $name); + } + + if (!$this->_setHeaderFieldModel('Sender', (array) $address)) + { + $this->getHeaders()->addMailboxHeader('Sender', (array) $address); + } + return $this; + } + + /** + * Get the sender of this message. + * @return string + */ + public function getSender() + { + return $this->_getHeaderFieldModel('Sender'); + } + + /** + * Add a From: address to this message. + * + * If $name is passed this name will be associated with the address. + * + * @param string $address + * @param string $name optional + */ + public function addFrom($address, $name = null) + { + $current = $this->getFrom(); + $current[$address] = $name; + return $this->setFrom($current); + } + + /** + * Set the from address of this message. + * + * You may pass an array of addresses if this message is from multiple people. + * + * If $name is passed and the first parameter is a string, this name will be + * associated with the address. + * + * @param string $addresses + * @param string $name optional + */ + public function setFrom($addresses, $name = null) + { + if (!is_array($addresses) && isset($name)) + { + $addresses = array($addresses => $name); + } + + if (!$this->_setHeaderFieldModel('From', (array) $addresses)) + { + $this->getHeaders()->addMailboxHeader('From', (array) $addresses); + } + return $this; + } + + /** + * Get the from address of this message. + * + * @return string + */ + public function getFrom() + { + return $this->_getHeaderFieldModel('From'); + } + + /** + * Add a Reply-To: address to this message. + * + * If $name is passed this name will be associated with the address. + * + * @param string $address + * @param string $name optional + */ + public function addReplyTo($address, $name = null) + { + $current = $this->getReplyTo(); + $current[$address] = $name; + return $this->setReplyTo($current); + } + + /** + * Set the reply-to address of this message. + * + * You may pass an array of addresses if replies will go to multiple people. + * + * If $name is passed and the first parameter is a string, this name will be + * associated with the address. + * + * @param string $addresses + * @param string $name optional + */ + public function setReplyTo($addresses, $name = null) + { + if (!is_array($addresses) && isset($name)) + { + $addresses = array($addresses => $name); + } + + if (!$this->_setHeaderFieldModel('Reply-To', (array) $addresses)) + { + $this->getHeaders()->addMailboxHeader('Reply-To', (array) $addresses); + } + return $this; + } + + /** + * Get the reply-to address of this message. + * + * @return string + */ + public function getReplyTo() + { + return $this->_getHeaderFieldModel('Reply-To'); + } + + /** + * Add a To: address to this message. + * + * If $name is passed this name will be associated with the address. + * + * @param string $address + * @param string $name optional + */ + public function addTo($address, $name = null) + { + $current = $this->getTo(); + $current[$address] = $name; + return $this->setTo($current); + } + + /** + * Set the to addresses of this message. + * + * If multiple recipients will receive the message and array should be used. + * + * If $name is passed and the first parameter is a string, this name will be + * associated with the address. + * + * @param array $addresses + * @param string $name optional + */ + public function setTo($addresses, $name = null) + { + if (!is_array($addresses) && isset($name)) + { + $addresses = array($addresses => $name); + } + + if (!$this->_setHeaderFieldModel('To', (array) $addresses)) + { + $this->getHeaders()->addMailboxHeader('To', (array) $addresses); + } + return $this; + } + + /** + * Get the To addresses of this message. + * + * @return array + */ + public function getTo() + { + return $this->_getHeaderFieldModel('To'); + } + + /** + * Add a Cc: address to this message. + * + * If $name is passed this name will be associated with the address. + * + * @param string $address + * @param string $name optional + */ + public function addCc($address, $name = null) + { + $current = $this->getCc(); + $current[$address] = $name; + return $this->setCc($current); + } + + /** + * Set the Cc addresses of this message. + * + * If $name is passed and the first parameter is a string, this name will be + * associated with the address. + * + * @param array $addresses + * @param string $name optional + */ + public function setCc($addresses, $name = null) + { + if (!is_array($addresses) && isset($name)) + { + $addresses = array($addresses => $name); + } + + if (!$this->_setHeaderFieldModel('Cc', (array) $addresses)) + { + $this->getHeaders()->addMailboxHeader('Cc', (array) $addresses); + } + return $this; + } + + /** + * Get the Cc address of this message. + * + * @return array + */ + public function getCc() + { + return $this->_getHeaderFieldModel('Cc'); + } + + /** + * Add a Bcc: address to this message. + * + * If $name is passed this name will be associated with the address. + * + * @param string $address + * @param string $name optional + */ + public function addBcc($address, $name = null) + { + $current = $this->getBcc(); + $current[$address] = $name; + return $this->setBcc($current); + } + + /** + * Set the Bcc addresses of this message. + * + * If $name is passed and the first parameter is a string, this name will be + * associated with the address. + * + * @param array $addresses + * @param string $name optional + */ + public function setBcc($addresses, $name = null) + { + if (!is_array($addresses) && isset($name)) + { + $addresses = array($addresses => $name); + } + + if (!$this->_setHeaderFieldModel('Bcc', (array) $addresses)) + { + $this->getHeaders()->addMailboxHeader('Bcc', (array) $addresses); + } + return $this; + } + + /** + * Get the Bcc addresses of this message. + * + * @return array + */ + public function getBcc() + { + return $this->_getHeaderFieldModel('Bcc'); + } + + /** + * Set the priority of this message. + * The value is an integer where 1 is the highest priority and 5 is the lowest. + * @param int $priority + */ + public function setPriority($priority) + { + $priorityMap = array( + 1 => 'Highest', + 2 => 'High', + 3 => 'Normal', + 4 => 'Low', + 5 => 'Lowest' + ); + $pMapKeys = array_keys($priorityMap); + if ($priority > max($pMapKeys)) + { + $priority = max($pMapKeys); + } + elseif ($priority < min($pMapKeys)) + { + $priority = min($pMapKeys); + } + if (!$this->_setHeaderFieldModel('X-Priority', + sprintf('%d (%s)', $priority, $priorityMap[$priority]))) + { + $this->getHeaders()->addTextHeader('X-Priority', + sprintf('%d (%s)', $priority, $priorityMap[$priority])); + } + return $this; + } + + /** + * Get the priority of this message. + * The returned value is an integer where 1 is the highest priority and 5 + * is the lowest. + * @return int + */ + public function getPriority() + { + list($priority) = sscanf($this->_getHeaderFieldModel('X-Priority'), + '%[1-5]' + ); + return isset($priority) ? $priority : 3; + } + + /** + * Ask for a delivery receipt from the recipient to be sent to $addresses + * @param array $addresses + */ + public function setReadReceiptTo($addresses) + { + if (!$this->_setHeaderFieldModel('Disposition-Notification-To', $addresses)) + { + $this->getHeaders() + ->addMailboxHeader('Disposition-Notification-To', $addresses); + } + return $this; + } + + /** + * Get the addresses to which a read-receipt will be sent. + * @return string + */ + public function getReadReceiptTo() + { + return $this->_getHeaderFieldModel('Disposition-Notification-To'); + } + + /** + * Attach a {@link Swift_Mime_MimeEntity} such as an Attachment or MimePart. + * @param Swift_Mime_MimeEntity $entity + */ + public function attach(Swift_Mime_MimeEntity $entity) + { + $this->setChildren(array_merge($this->getChildren(), array($entity))); + return $this; + } + + /** + * Remove an already attached entity. + * @param Swift_Mime_MimeEntity $entity + */ + public function detach(Swift_Mime_MimeEntity $entity) + { + $newChildren = array(); + foreach ($this->getChildren() as $child) + { + if ($entity !== $child) + { + $newChildren[] = $child; + } + } + $this->setChildren($newChildren); + return $this; + } + + /** + * Attach a {@link Swift_Mime_MimeEntity} and return it's CID source. + * This method should be used when embedding images or other data in a message. + * @param Swift_Mime_MimeEntity $entity + * @return string + */ + public function embed(Swift_Mime_MimeEntity $entity) + { + $this->attach($entity); + return 'cid:' . $entity->getId(); + } + + /** + * Get this message as a complete string. + * @return string + */ + public function toString() + { + if (count($children = $this->getChildren()) > 0 && $this->getBody() != '') + { + $this->setChildren(array_merge(array($this->_becomeMimePart()), $children)); + $string = parent::toString(); + $this->setChildren($children); + } + else + { + $string = parent::toString(); + } + return $string; + } + + /** + * Returns a string representation of this object. + * + * @return string + * + * @see toString() + */ + public function __toString() + { + return $this->toString(); + } + + /** + * Write this message to a {@link Swift_InputByteStream}. + * @param Swift_InputByteStream $is + */ + public function toByteStream(Swift_InputByteStream $is) + { + if (count($children = $this->getChildren()) > 0 && $this->getBody() != '') + { + $this->setChildren(array_merge(array($this->_becomeMimePart()), $children)); + parent::toByteStream($is); + $this->setChildren($children); + } + else + { + parent::toByteStream($is); + } + } + + // -- Protected methods + + /** @see Swift_Mime_SimpleMimeEntity::_getIdField() */ + protected function _getIdField() + { + return 'Message-ID'; + } + + // -- Private methods + + /** Turn the body of this message into a child of itself if needed */ + private function _becomeMimePart() + { + $part = new parent($this->getHeaders()->newInstance(), $this->getEncoder(), + $this->_getCache(), $this->_userCharset + ); + $part->setContentType($this->_userContentType); + $part->setBody($this->getBody()); + $part->setFormat($this->_userFormat); + $part->setDelSp($this->_userDelSp); + $part->_setNestingLevel($this->_getTopNestingLevel()); + return $part; + } + + /** Get the highest nesting level nested inside this message */ + private function _getTopNestingLevel() + { + $highestLevel = $this->getNestingLevel(); + foreach ($this->getChildren() as $child) + { + $childLevel = $child->getNestingLevel(); + if ($highestLevel < $childLevel) + { + $highestLevel = $childLevel; + } + } + return $highestLevel; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/.svn/text-base/SimpleMimeEntity.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/.svn/text-base/SimpleMimeEntity.php.svn-base new file mode 100644 index 0000000..a392145 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/.svn/text-base/SimpleMimeEntity.php.svn-base @@ -0,0 +1,793 @@ + array(self::LEVEL_TOP, self::LEVEL_MIXED), + 'multipart/alternative' => array(self::LEVEL_MIXED, self::LEVEL_ALTERNATIVE), + 'multipart/related' => array(self::LEVEL_ALTERNATIVE, self::LEVEL_RELATED) + ); + + /** A set of filter rules to define what level an entity should be nested at */ + private $_compoundLevelFilters = array(); + + /** The nesting level of this entity */ + private $_nestingLevel = self::LEVEL_ALTERNATIVE; + + /** A KeyCache instance used during encoding and streaming */ + private $_cache; + + /** Direct descendants of this entity */ + private $_immediateChildren = array(); + + /** All descendants of this entity */ + private $_children = array(); + + /** The maximum line length of the body of this entity */ + private $_maxLineLength = 78; + + /** The order in which alternative mime types should appear */ + private $_alternativePartOrder = array( + 'text/plain' => 1, + 'text/html' => 2, + 'multipart/related' => 3 + ); + + /** The CID of this entity */ + private $_id; + + /** The key used for accessing the cache */ + private $_cacheKey; + + protected $_userContentType; + + /** + * Create a new SimpleMimeEntity with $headers, $encoder and $cache. + * @param Swift_Mime_HeaderSet $headers + * @param Swift_Mime_ContentEncoder $encoder + * @param Swift_KeyCache $cache + */ + public function __construct(Swift_Mime_HeaderSet $headers, + Swift_Mime_ContentEncoder $encoder, Swift_KeyCache $cache) + { + $this->_cacheKey = uniqid(); + $this->_cache = $cache; + $this->_headers = $headers; + $this->setEncoder($encoder); + $this->_headers->defineOrdering( + array('Content-Type', 'Content-Transfer-Encoding') + ); + + // This array specifies that, when the entire MIME document contains + // $compoundLevel, then for each child within $level, if its Content-Type + // is $contentType then it should be treated as if it's level is + // $neededLevel instead. I tried to write that unambiguously! :-\ + // Data Structure: + // array ( + // $compoundLevel => array( + // $level => array( + // $contentType => $neededLevel + // ) + // ) + // ) + + $this->_compoundLevelFilters = array( + (self::LEVEL_ALTERNATIVE + self::LEVEL_RELATED) => array( + self::LEVEL_ALTERNATIVE => array( + 'text/plain' => self::LEVEL_ALTERNATIVE, + 'text/html' => self::LEVEL_RELATED + ) + ) + ); + $this->generateId(); + } + + /** + * Generate a new Content-ID or Message-ID for this MIME entity. + * @return string + */ + public function generateId() + { + $idLeft = time() . '.' . uniqid(); + $idRight = !empty($_SERVER['SERVER_NAME']) + ? $_SERVER['SERVER_NAME'] + : 'swift.generated'; + $this->_id = $idLeft . '@' . $idRight; + return $this->getId(); + } + + /** + * Get the {@link Swift_Mime_HeaderSet} for this entity. + * @return Swift_Mime_HeaderSet + */ + public function getHeaders() + { + return $this->_headers; + } + + /** + * Get the nesting level of this entity. + * @return int + * @see LEVEL_TOP, LEVEL_MIXED, LEVEL_RELATED, LEVEL_ALTERNATIVE + */ + public function getNestingLevel() + { + return $this->_nestingLevel; + } + + /** + * Get the Content-type of this entity. + * @return string + */ + public function getContentType() + { + return $this->_getHeaderFieldModel('Content-Type'); + } + + /** + * Set the Content-type of this entity. + * @param string $type + */ + public function setContentType($type) + { + $this->_setContentTypeInHeaders($type); + // Keep track of the value so that if the content-type changes automatically + // due to added child entities, it can be restored if they are later removed + $this->_userContentType = $type; + return $this; + } + + /** + * Get the CID of this entity. + * The CID will only be present in headers if a Content-ID header is present. + * @return string + */ + public function getId() + { + return $this->_headers->has($this->_getIdField()) + ? current((array) $this->_getHeaderFieldModel($this->_getIdField())) + : $this->_id; + } + + /** + * Set the CID of this entity. + * @param string $id + */ + public function setId($id) + { + if (!$this->_setHeaderFieldModel($this->_getIdField(), $id)) + { + $this->_headers->addIdHeader($this->_getIdField(), $id); + } + $this->_id = $id; + return $this; + } + + /** + * Get the description of this entity. + * This value comes from the Content-Description header if set. + * @return string + */ + public function getDescription() + { + return $this->_getHeaderFieldModel('Content-Description'); + } + + /** + * Set the description of this entity. + * This method sets a value in the Content-ID header. + * @param string $description + */ + public function setDescription($description) + { + if (!$this->_setHeaderFieldModel('Content-Description', $description)) + { + $this->_headers->addTextHeader('Content-Description', $description); + } + return $this; + } + + /** + * Get the maximum line length of the body of this entity. + * @return int + */ + public function getMaxLineLength() + { + return $this->_maxLineLength; + } + + /** + * Set the maximum line length of lines in this body. + * Though not enforced by the library, lines should not exceed 1000 chars. + * @param int $length + */ + public function setMaxLineLength($length) + { + $this->_maxLineLength = $length; + return $this; + } + + /** + * Get all children added to this entity. + * @return array of Swift_Mime_Entity + */ + public function getChildren() + { + return $this->_children; + } + + /** + * Set all children of this entity. + * @param array $children Swiift_Mime_Entity instances + * @param int $compoundLevel For internal use only + */ + public function setChildren(array $children, $compoundLevel = null) + { + //TODO: Try to refactor this logic + + $compoundLevel = isset($compoundLevel) + ? $compoundLevel + : $this->_getCompoundLevel($children) + ; + + $immediateChildren = array(); + $grandchildren = array(); + $newContentType = $this->_userContentType; + + foreach ($children as $child) + { + $level = $this->_getNeededChildLevel($child, $compoundLevel); + if (empty($immediateChildren)) //first iteration + { + $immediateChildren = array($child); + } + else + { + $nextLevel = $this->_getNeededChildLevel($immediateChildren[0], $compoundLevel); + if ($nextLevel == $level) + { + $immediateChildren[] = $child; + } + elseif ($level < $nextLevel) + { + //Re-assign immediateChildren to grandchilden + $grandchildren = array_merge($grandchildren, $immediateChildren); + //Set new children + $immediateChildren = array($child); + } + else + { + $grandchildren[] = $child; + } + } + } + + if (!empty($immediateChildren)) + { + $lowestLevel = $this->_getNeededChildLevel($immediateChildren[0], $compoundLevel); + + //Determine which composite media type is needed to accomodate the + // immediate children + foreach ($this->_compositeRanges as $mediaType => $range) + { + if ($lowestLevel > $range[0] + && $lowestLevel <= $range[1]) + { + $newContentType = $mediaType; + break; + } + } + + //Put any grandchildren in a subpart + if (!empty($grandchildren)) + { + $subentity = $this->_createChild(); + $subentity->_setNestingLevel($lowestLevel); + $subentity->setChildren($grandchildren, $compoundLevel); + array_unshift($immediateChildren, $subentity); + } + } + + $this->_immediateChildren = $immediateChildren; + $this->_children = $children; + $this->_setContentTypeInHeaders($newContentType); + $this->_fixHeaders(); + $this->_sortChildren(); + + return $this; + } + + /** + * Get the body of this entity as a string. + * @return string + */ + public function getBody() + { + return ($this->_body instanceof Swift_OutputByteStream) + ? $this->_readStream($this->_body) + : $this->_body; + } + + /** + * Set the body of this entity, either as a string, or as an instance of + * {@link Swift_OutputByteStream}. + * @param mixed $body + * @param string $contentType optional + */ + public function setBody($body, $contentType = null) + { + if ($body !== $this->_body) + { + $this->_clearCache(); + } + + $this->_body = $body; + if (isset($contentType)) + { + $this->setContentType($contentType); + } + return $this; + } + + /** + * Get the encoder used for the body of this entity. + * @return Swift_Mime_ContentEncoder + */ + public function getEncoder() + { + return $this->_encoder; + } + + /** + * Set the encoder used for the body of this entity. + * @param Swift_Mime_ContentEncoder $encoder + */ + public function setEncoder(Swift_Mime_ContentEncoder $encoder) + { + if ($encoder !== $this->_encoder) + { + $this->_clearCache(); + } + + $this->_encoder = $encoder; + $this->_setEncoding($encoder->getName()); + $this->_notifyEncoderChanged($encoder); + return $this; + } + + /** + * Get the boundary used to separate children in this entity. + * @return string + */ + public function getBoundary() + { + if (!isset($this->_boundary)) + { + $this->_boundary = '_=_swift_v4_' . time() . uniqid() . '_=_'; + } + return $this->_boundary; + } + + /** + * Set the boundary used to separate children in this entity. + * @param string $boundary + * @throws Swift_RfcComplianceException + */ + public function setBoundary($boundary) + { + $this->_assertValidBoundary($boundary); + $this->_boundary = $boundary; + return $this; + } + + /** + * Receive notification that the charset of this entity, or a parent entity + * has changed. + * @param string $charset + */ + public function charsetChanged($charset) + { + $this->_notifyCharsetChanged($charset); + } + + /** + * Receive notification that the encoder of this entity or a parent entity + * has changed. + * @param Swift_Mime_ContentEncoder $encoder + */ + public function encoderChanged(Swift_Mime_ContentEncoder $encoder) + { + $this->_notifyEncoderChanged($encoder); + } + + /** + * Get this entire entity as a string. + * @return string + */ + public function toString() + { + $string = $this->_headers->toString(); + if (isset($this->_body) && empty($this->_immediateChildren)) + { + if ($this->_cache->hasKey($this->_cacheKey, 'body')) + { + $body = $this->_cache->getString($this->_cacheKey, 'body'); + } + else + { + $body = "\r\n" . $this->_encoder->encodeString($this->getBody(), 0, + $this->getMaxLineLength() + ); + $this->_cache->setString($this->_cacheKey, 'body', $body, + Swift_KeyCache::MODE_WRITE + ); + } + $string .= $body; + } + + if (!empty($this->_immediateChildren)) + { + foreach ($this->_immediateChildren as $child) + { + $string .= "\r\n\r\n--" . $this->getBoundary() . "\r\n"; + $string .= $child->toString(); + } + $string .= "\r\n\r\n--" . $this->getBoundary() . "--\r\n"; + } + + return $string; + } + + /** + * Returns a string representation of this object. + * + * @return string + * + * @see toString() + */ + public function __toString() + { + return $this->toString(); + } + + /** + * Write this entire entity to a {@link Swift_InputByteStream}. + * @param Swift_InputByteStream + */ + public function toByteStream(Swift_InputByteStream $is) + { + $is->write($this->_headers->toString()); + $is->commit(); + + if (empty($this->_immediateChildren)) + { + if (isset($this->_body)) + { + if ($this->_cache->hasKey($this->_cacheKey, 'body')) + { + $this->_cache->exportToByteStream($this->_cacheKey, 'body', $is); + } + else + { + $cacheIs = $this->_cache->getInputByteStream($this->_cacheKey, 'body'); + if ($cacheIs) + { + $is->bind($cacheIs); + } + + $is->write("\r\n"); + + if ($this->_body instanceof Swift_OutputByteStream) + { + $this->_body->setReadPointer(0); + + $this->_encoder->encodeByteStream($this->_body, $is, 0, + $this->getMaxLineLength() + ); + } + else + { + $is->write($this->_encoder->encodeString( + $this->getBody(), 0, $this->getMaxLineLength() + )); + } + + if ($cacheIs) + { + $is->unbind($cacheIs); + } + } + } + } + + if (!empty($this->_immediateChildren)) + { + foreach ($this->_immediateChildren as $child) + { + $is->write("\r\n\r\n--" . $this->getBoundary() . "\r\n"); + $child->toByteStream($is); + } + $is->write("\r\n\r\n--" . $this->getBoundary() . "--\r\n"); + } + } + + // -- Protected methods + + /** + * Get the name of the header that provides the ID of this entity */ + protected function _getIdField() + { + return 'Content-ID'; + } + + /** + * Get the model data (usually an array or a string) for $field. + */ + protected function _getHeaderFieldModel($field) + { + if ($this->_headers->has($field)) + { + return $this->_headers->get($field)->getFieldBodyModel(); + } + } + + /** + * Set the model data for $field. + */ + protected function _setHeaderFieldModel($field, $model) + { + if ($this->_headers->has($field)) + { + $this->_headers->get($field)->setFieldBodyModel($model); + return true; + } + else + { + return false; + } + } + + /** + * Get the parameter value of $parameter on $field header. + */ + protected function _getHeaderParameter($field, $parameter) + { + if ($this->_headers->has($field)) + { + return $this->_headers->get($field)->getParameter($parameter); + } + } + + /** + * Set the parameter value of $parameter on $field header. + */ + protected function _setHeaderParameter($field, $parameter, $value) + { + if ($this->_headers->has($field)) + { + $this->_headers->get($field)->setParameter($parameter, $value); + return true; + } + else + { + return false; + } + } + + /** + * Re-evaluate what content type and encoding should be used on this entity. + */ + protected function _fixHeaders() + { + if (count($this->_immediateChildren)) + { + $this->_setHeaderParameter('Content-Type', 'boundary', + $this->getBoundary() + ); + $this->_headers->remove('Content-Transfer-Encoding'); + } + else + { + $this->_setHeaderParameter('Content-Type', 'boundary', null); + $this->_setEncoding($this->_encoder->getName()); + } + } + + /** + * Get the KeyCache used in this entity. + */ + protected function _getCache() + { + return $this->_cache; + } + + /** + * Empty the KeyCache for this entity. + */ + protected function _clearCache() + { + $this->_cache->clearKey($this->_cacheKey, 'body'); + } + + // -- Private methods + + private function _readStream(Swift_OutputByteStream $os) + { + $string = ''; + while (false !== $bytes = $os->read(8192)) + { + $string .= $bytes; + } + return $string; + } + + private function _setEncoding($encoding) + { + if (!$this->_setHeaderFieldModel('Content-Transfer-Encoding', $encoding)) + { + $this->_headers->addTextHeader('Content-Transfer-Encoding', $encoding); + } + } + + private function _assertValidBoundary($boundary) + { + if (!preg_match( + '/^[a-z0-9\'\(\)\+_\-,\.\/:=\?\ ]{0,69}[a-z0-9\'\(\)\+_\-,\.\/:=\?]$/Di', + $boundary)) + { + throw new Exception('Mime boundary set is not RFC 2046 compliant.'); + } + } + + private function _setContentTypeInHeaders($type) + { + if (!$this->_setHeaderFieldModel('Content-Type', $type)) + { + $this->_headers->addParameterizedHeader('Content-Type', $type); + } + } + + private function _setNestingLevel($level) + { + $this->_nestingLevel = $level; + } + + private function _getCompoundLevel($children) + { + $level = 0; + foreach ($children as $child) + { + $level |= $child->getNestingLevel(); + } + return $level; + } + + private function _getNeededChildLevel($child, $compoundLevel) + { + $filter = array(); + foreach ($this->_compoundLevelFilters as $bitmask => $rules) + { + if (($compoundLevel & $bitmask) === $bitmask) + { + $filter = $rules + $filter; + } + } + + $realLevel = $child->getNestingLevel(); + $lowercaseType = strtolower($child->getContentType()); + + if (isset($filter[$realLevel]) + && isset($filter[$realLevel][$lowercaseType])) + { + return $filter[$realLevel][$lowercaseType]; + } + else + { + return $realLevel; + } + } + + private function _createChild() + { + return new self($this->_headers->newInstance(), + $this->_encoder, $this->_cache); + } + + private function _notifyEncoderChanged(Swift_Mime_ContentEncoder $encoder) + { + foreach ($this->_immediateChildren as $child) + { + $child->encoderChanged($encoder); + } + } + + private function _notifyCharsetChanged($charset) + { + $this->_encoder->charsetChanged($charset); + $this->_headers->charsetChanged($charset); + foreach ($this->_immediateChildren as $child) + { + $child->charsetChanged($charset); + } + } + + private function _sortChildren() + { + $shouldSort = false; + foreach ($this->_immediateChildren as $child) + { + //NOTE: This include alternative parts moved into a related part + if ($child->getNestingLevel() == self::LEVEL_ALTERNATIVE) + { + $shouldSort = true; + break; + } + } + + //Sort in order of preference, if there is one + if ($shouldSort) + { + usort($this->_immediateChildren, array($this, '_childSortAlgorithm')); + } + } + + private function _childSortAlgorithm($a, $b) + { + $typePrefs = array(); + $types = array( + strtolower($a->getContentType()), + strtolower($b->getContentType()) + ); + foreach ($types as $type) + { + $typePrefs[] = (array_key_exists($type, $this->_alternativePartOrder)) + ? $this->_alternativePartOrder[$type] + : (max($this->_alternativePartOrder) + 1); + } + return ($typePrefs[0] >= $typePrefs[1]) ? 1 : -1; + } + + // -- Destructor + + /** + * Empties it's own contents from the cache. + */ + public function __destruct() + { + $this->_cache->clearAll($this->_cacheKey); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Attachment.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Attachment.php new file mode 100644 index 0000000..25ef68b --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Attachment.php @@ -0,0 +1,143 @@ +setDisposition('attachment'); + $this->setContentType('application/octet-stream'); + $this->_mimeTypes = $mimeTypes; + } + + /** + * Get the nesting level used for this attachment. + * Always returns {@link LEVEL_MIXED}. + * @return int + */ + public function getNestingLevel() + { + return self::LEVEL_MIXED; + } + + /** + * Get the Content-Disposition of this attachment. + * By default attachments have a disposition of "attachment". + * @return string + */ + public function getDisposition() + { + return $this->_getHeaderFieldModel('Content-Disposition'); + } + + /** + * Set the Content-Disposition of this attachment. + * @param string $disposition + */ + public function setDisposition($disposition) + { + if (!$this->_setHeaderFieldModel('Content-Disposition', $disposition)) + { + $this->getHeaders()->addParameterizedHeader( + 'Content-Disposition', $disposition + ); + } + return $this; + } + + /** + * Get the filename of this attachment when downloaded. + * @return string + */ + public function getFilename() + { + return $this->_getHeaderParameter('Content-Disposition', 'filename'); + } + + /** + * Set the filename of this attachment. + * @param string $filename + */ + public function setFilename($filename) + { + $this->_setHeaderParameter('Content-Disposition', 'filename', $filename); + $this->_setHeaderParameter('Content-Type', 'name', $filename); + return $this; + } + + /** + * Get the file size of this attachment. + * @return int + */ + public function getSize() + { + return $this->_getHeaderParameter('Content-Disposition', 'size'); + } + + /** + * Set the file size of this attachment. + * @param int $size + */ + public function setSize($size) + { + $this->_setHeaderParameter('Content-Disposition', 'size', $size); + return $this; + } + + /** + * Set the file that this attachment is for. + * @param Swift_FileStream $file + * @param string $contentType optional + */ + public function setFile(Swift_FileStream $file, $contentType = null) + { + $this->setFilename(basename($file->getPath())); + $this->setBody($file, $contentType); + if (!isset($contentType)) + { + $extension = strtolower(substr( + $file->getPath(), strrpos($file->getPath(), '.') + 1 + )); + + if (array_key_exists($extension, $this->_mimeTypes)) + { + $this->setContentType($this->_mimeTypes[$extension]); + } + } + return $this; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/CharsetObserver.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/CharsetObserver.php new file mode 100644 index 0000000..c26009f --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/CharsetObserver.php @@ -0,0 +1,26 @@ += $maxLineLength || 76 < $maxLineLength) + { + $maxLineLength = 76; + } + + $remainder = 0; + + while (false !== $bytes = $os->read(8190)) + { + $encoded = base64_encode($bytes); + $encodedTransformed = ''; + $thisMaxLineLength = $maxLineLength - $remainder - $firstLineOffset; + + while ($thisMaxLineLength < strlen($encoded)) + { + $encodedTransformed .= substr($encoded, 0, $thisMaxLineLength) . "\r\n"; + $firstLineOffset = 0; + $encoded = substr($encoded, $thisMaxLineLength); + $thisMaxLineLength = $maxLineLength; + $remainder = 0; + } + + if (0 < $remainingLength = strlen($encoded)) + { + $remainder += $remainingLength; + $encodedTransformed .= $encoded; + $encoded = null; + } + + $is->write($encodedTransformed); + } + } + + /** + * Get the name of this encoding scheme. + * Returns the string 'base64'. + * @return string + */ + public function getName() + { + return 'base64'; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/ContentEncoder/.svn/text-base/PlainContentEncoder.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/ContentEncoder/.svn/text-base/PlainContentEncoder.php.svn-base new file mode 100644 index 0000000..4a725d8 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/ContentEncoder/.svn/text-base/PlainContentEncoder.php.svn-base @@ -0,0 +1,175 @@ +_name = $name; + $this->_canonical = $canonical; + } + + /** + * Encode a given string to produce an encoded string. + * @param string $string + * @param int $firstLineOffset, ignored + * @param int $maxLineLength - 0 means no wrapping will occur + * @return string + */ + public function encodeString($string, $firstLineOffset = 0, + $maxLineLength = 0) + { + if ($this->_canonical) + { + $string = $this->_canonicalize($string); + } + return $this->_safeWordWrap($string, $maxLineLength, "\r\n"); + } + + /** + * Encode stream $in to stream $out. + * @param Swift_OutputByteStream $in + * @param Swift_InputByteStream $out + * @param int $firstLineOffset, ignored + * @param int $maxLineLength, optional, 0 means no wrapping will occur + */ + public function encodeByteStream( + Swift_OutputByteStream $os, Swift_InputByteStream $is, $firstLineOffset = 0, + $maxLineLength = 0) + { + $leftOver = ''; + while (false !== $bytes = $os->read(8192)) + { + $toencode = $leftOver . $bytes; + if ($this->_canonical) + { + $toencode = $this->_canonicalize($toencode); + } + $wrapped = $this->_safeWordWrap($toencode, $maxLineLength, "\r\n"); + $lastLinePos = strrpos($wrapped, "\r\n"); + $leftOver = substr($wrapped, $lastLinePos); + $wrapped = substr($wrapped, 0, $lastLinePos); + + $is->write($wrapped); + } + if (strlen($leftOver)) + { + $is->write($leftOver); + } + } + + /** + * Get the name of this encoding scheme. + * @return string + */ + public function getName() + { + return $this->_name; + } + + /** + * Not used. + */ + public function charsetChanged($charset) + { + } + + // -- Private methods + + /** + * A safer (but weaker) wordwrap for unicode. + * @param string $string + * @param int $length + * @param string $le + * @return string + * @access private + */ + private function _safeWordwrap($string, $length = 75, $le = "\r\n") + { + if (0 >= $length) + { + return $string; + } + + $originalLines = explode($le, $string); + + $lines = array(); + $lineCount = 0; + + foreach ($originalLines as $originalLine) + { + $lines[] = ''; + $currentLine =& $lines[$lineCount++]; + + //$chunks = preg_split('/(?<=[\ \t,\.!\?\-&\+\/])/', $originalLine); + $chunks = preg_split('/(?<=\s)/', $originalLine); + + foreach ($chunks as $chunk) + { + if (0 != strlen($currentLine) + && strlen($currentLine . $chunk) > $length) + { + $lines[] = ''; + $currentLine =& $lines[$lineCount++]; + } + $currentLine .= $chunk; + } + } + + return implode("\r\n", $lines); + } + + /** + * Canonicalize string input (fix CRLF). + * @param string $string + * @return string + * @access private + */ + private function _canonicalize($string) + { + return str_replace( + array("\r\n", "\r", "\n"), + array("\n", "\n", "\r\n"), + $string + ); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/ContentEncoder/.svn/text-base/QpContentEncoder.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/ContentEncoder/.svn/text-base/QpContentEncoder.php.svn-base new file mode 100644 index 0000000..3beeb63 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/ContentEncoder/.svn/text-base/QpContentEncoder.php.svn-base @@ -0,0 +1,117 @@ + 76 || $maxLineLength <= 0) + { + $maxLineLength = 76; + } + + $thisLineLength = $maxLineLength - $firstLineOffset; + + $this->_charStream->flushContents(); + $this->_charStream->importByteStream($os); + + $currentLine = ''; + $prepend = ''; + $size=$lineLen=0; + + while (false !== $bytes = $this->_nextSequence()) + { + //If we're filtering the input + if (isset($this->_filter)) + { + //If we can't filter because we need more bytes + while ($this->_filter->shouldBuffer($bytes)) + { + //Then collect bytes into the buffer + if (false === $moreBytes = $this->_nextSequence(1)) + { + break; + } + + foreach ($moreBytes as $b) + { + $bytes[] = $b; + } + } + //And filter them + $bytes = $this->_filter->filter($bytes); + } + + $enc = $this->_encodeByteSequence($bytes, $size); + if ($currentLine && $lineLen+$size >= $thisLineLength) + { + $is->write($prepend . $this->_standardize($currentLine)); + $currentLine = ''; + $prepend = "=\r\n"; + $thisLineLength = $maxLineLength; + $lineLen=0; + } + $lineLen+=$size; + $currentLine .= $enc; + } + if (strlen($currentLine)) + { + $is->write($prepend . $this->_standardize($currentLine)); + } + } + + /** + * Get the name of this encoding scheme. + * Returns the string 'quoted-printable'. + * @return string + */ + public function getName() + { + return 'quoted-printable'; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/ContentEncoder/Base64ContentEncoder.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/ContentEncoder/Base64ContentEncoder.php new file mode 100644 index 0000000..e89938e --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/ContentEncoder/Base64ContentEncoder.php @@ -0,0 +1,81 @@ += $maxLineLength || 76 < $maxLineLength) + { + $maxLineLength = 76; + } + + $remainder = 0; + + while (false !== $bytes = $os->read(8190)) + { + $encoded = base64_encode($bytes); + $encodedTransformed = ''; + $thisMaxLineLength = $maxLineLength - $remainder - $firstLineOffset; + + while ($thisMaxLineLength < strlen($encoded)) + { + $encodedTransformed .= substr($encoded, 0, $thisMaxLineLength) . "\r\n"; + $firstLineOffset = 0; + $encoded = substr($encoded, $thisMaxLineLength); + $thisMaxLineLength = $maxLineLength; + $remainder = 0; + } + + if (0 < $remainingLength = strlen($encoded)) + { + $remainder += $remainingLength; + $encodedTransformed .= $encoded; + $encoded = null; + } + + $is->write($encodedTransformed); + } + } + + /** + * Get the name of this encoding scheme. + * Returns the string 'base64'. + * @return string + */ + public function getName() + { + return 'base64'; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/ContentEncoder/PlainContentEncoder.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/ContentEncoder/PlainContentEncoder.php new file mode 100644 index 0000000..4a725d8 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/ContentEncoder/PlainContentEncoder.php @@ -0,0 +1,175 @@ +_name = $name; + $this->_canonical = $canonical; + } + + /** + * Encode a given string to produce an encoded string. + * @param string $string + * @param int $firstLineOffset, ignored + * @param int $maxLineLength - 0 means no wrapping will occur + * @return string + */ + public function encodeString($string, $firstLineOffset = 0, + $maxLineLength = 0) + { + if ($this->_canonical) + { + $string = $this->_canonicalize($string); + } + return $this->_safeWordWrap($string, $maxLineLength, "\r\n"); + } + + /** + * Encode stream $in to stream $out. + * @param Swift_OutputByteStream $in + * @param Swift_InputByteStream $out + * @param int $firstLineOffset, ignored + * @param int $maxLineLength, optional, 0 means no wrapping will occur + */ + public function encodeByteStream( + Swift_OutputByteStream $os, Swift_InputByteStream $is, $firstLineOffset = 0, + $maxLineLength = 0) + { + $leftOver = ''; + while (false !== $bytes = $os->read(8192)) + { + $toencode = $leftOver . $bytes; + if ($this->_canonical) + { + $toencode = $this->_canonicalize($toencode); + } + $wrapped = $this->_safeWordWrap($toencode, $maxLineLength, "\r\n"); + $lastLinePos = strrpos($wrapped, "\r\n"); + $leftOver = substr($wrapped, $lastLinePos); + $wrapped = substr($wrapped, 0, $lastLinePos); + + $is->write($wrapped); + } + if (strlen($leftOver)) + { + $is->write($leftOver); + } + } + + /** + * Get the name of this encoding scheme. + * @return string + */ + public function getName() + { + return $this->_name; + } + + /** + * Not used. + */ + public function charsetChanged($charset) + { + } + + // -- Private methods + + /** + * A safer (but weaker) wordwrap for unicode. + * @param string $string + * @param int $length + * @param string $le + * @return string + * @access private + */ + private function _safeWordwrap($string, $length = 75, $le = "\r\n") + { + if (0 >= $length) + { + return $string; + } + + $originalLines = explode($le, $string); + + $lines = array(); + $lineCount = 0; + + foreach ($originalLines as $originalLine) + { + $lines[] = ''; + $currentLine =& $lines[$lineCount++]; + + //$chunks = preg_split('/(?<=[\ \t,\.!\?\-&\+\/])/', $originalLine); + $chunks = preg_split('/(?<=\s)/', $originalLine); + + foreach ($chunks as $chunk) + { + if (0 != strlen($currentLine) + && strlen($currentLine . $chunk) > $length) + { + $lines[] = ''; + $currentLine =& $lines[$lineCount++]; + } + $currentLine .= $chunk; + } + } + + return implode("\r\n", $lines); + } + + /** + * Canonicalize string input (fix CRLF). + * @param string $string + * @return string + * @access private + */ + private function _canonicalize($string) + { + return str_replace( + array("\r\n", "\r", "\n"), + array("\n", "\n", "\r\n"), + $string + ); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/ContentEncoder/QpContentEncoder.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/ContentEncoder/QpContentEncoder.php new file mode 100644 index 0000000..3beeb63 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/ContentEncoder/QpContentEncoder.php @@ -0,0 +1,117 @@ + 76 || $maxLineLength <= 0) + { + $maxLineLength = 76; + } + + $thisLineLength = $maxLineLength - $firstLineOffset; + + $this->_charStream->flushContents(); + $this->_charStream->importByteStream($os); + + $currentLine = ''; + $prepend = ''; + $size=$lineLen=0; + + while (false !== $bytes = $this->_nextSequence()) + { + //If we're filtering the input + if (isset($this->_filter)) + { + //If we can't filter because we need more bytes + while ($this->_filter->shouldBuffer($bytes)) + { + //Then collect bytes into the buffer + if (false === $moreBytes = $this->_nextSequence(1)) + { + break; + } + + foreach ($moreBytes as $b) + { + $bytes[] = $b; + } + } + //And filter them + $bytes = $this->_filter->filter($bytes); + } + + $enc = $this->_encodeByteSequence($bytes, $size); + if ($currentLine && $lineLen+$size >= $thisLineLength) + { + $is->write($prepend . $this->_standardize($currentLine)); + $currentLine = ''; + $prepend = "=\r\n"; + $thisLineLength = $maxLineLength; + $lineLen=0; + } + $lineLen+=$size; + $currentLine .= $enc; + } + if (strlen($currentLine)) + { + $is->write($prepend . $this->_standardize($currentLine)); + } + } + + /** + * Get the name of this encoding scheme. + * Returns the string 'quoted-printable'. + * @return string + */ + public function getName() + { + return 'quoted-printable'; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/EmbeddedFile.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/EmbeddedFile.php new file mode 100644 index 0000000..983b78d --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/EmbeddedFile.php @@ -0,0 +1,51 @@ +setDisposition('inline'); + $this->setId($this->getId()); + } + + /** + * Get the nesting level of this EmbeddedFile. + * Returns {@link LEVEL_RELATED}. + * @return int + */ + public function getNestingLevel() + { + return self::LEVEL_RELATED; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/EncodingObserver.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/EncodingObserver.php new file mode 100644 index 0000000..50472db --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/EncodingObserver.php @@ -0,0 +1,28 @@ +clearCachedValueIf($charset != $this->_charset); + $this->_charset = $charset; + if (isset($this->_encoder)) + { + $this->_encoder->charsetChanged($charset); + } + } + + /** + * Get the character set used in this Header. + * @return string + */ + public function getCharset() + { + return $this->_charset; + } + + /** + * Set the language used in this Header. + * For example, for US English, 'en-us'. + * This can be unspecified. + * @param string $lang + */ + public function setLanguage($lang) + { + $this->clearCachedValueIf($this->_lang != $lang); + $this->_lang = $lang; + } + + /** + * Get the language used in this Header. + * @return string + */ + public function getLanguage() + { + return $this->_lang; + } + + /** + * Set the encoder used for encoding the header. + * @param Swift_Mime_HeaderEncoder $encoder + */ + public function setEncoder(Swift_Mime_HeaderEncoder $encoder) + { + $this->_encoder = $encoder; + $this->setCachedValue(null); + } + + /** + * Get the encoder used for encoding this Header. + * @return Swift_Mime_HeaderEncoder + */ + public function getEncoder() + { + return $this->_encoder; + } + + /** + * Get the name of this header (e.g. charset). + * @return string + */ + public function getFieldName() + { + return $this->_name; + } + + /** + * Set the maximum length of lines in the header (excluding EOL). + * @param int $lineLength + */ + public function setMaxLineLength($lineLength) + { + $this->clearCachedValueIf($this->_lineLength != $lineLength); + $this->_lineLength = $lineLength; + } + + /** + * Get the maximum permitted length of lines in this Header. + * @return int + */ + public function getMaxLineLength() + { + return $this->_lineLength; + } + + /** + * Get this Header rendered as a RFC 2822 compliant string. + * @return string + * @throws Swift_RfcComplianceException + */ + public function toString() + { + return $this->_tokensToString($this->toTokens()); + } + + /** + * Returns a string representation of this object. + * + * @return string + * + * @see toString() + */ + public function __toString() + { + return $this->toString(); + } + + // -- Points of extension + + /** + * Set the name of this Header field. + * @param string $name + * @access protected + */ + protected function setFieldName($name) + { + $this->_name = $name; + } + + /** + * Initialize some RFC 2822 (and friends) ABNF grammar definitions. + * @access protected + */ + protected function initializeGrammar() + { + $this->_specials = array( + '(', ')', '<', '>', '[', ']', + ':', ';', '@', ',', '.', '"' + ); + + /*** Refer to RFC 2822 for ABNF grammar ***/ + + //All basic building blocks + $this->_grammar['NO-WS-CTL'] = '[\x01-\x08\x0B\x0C\x0E-\x19\x7F]'; + $this->_grammar['WSP'] = '[ \t]'; + $this->_grammar['CRLF'] = '(?:\r\n)'; + $this->_grammar['FWS'] = '(?:(?:' . $this->_grammar['WSP'] . '*' . + $this->_grammar['CRLF'] . ')?' . $this->_grammar['WSP'] . ')'; + $this->_grammar['text'] = '[\x00-\x08\x0B\x0C\x0E-\x7F]'; + $this->_grammar['quoted-pair'] = '(?:\\\\' . $this->_grammar['text'] . ')'; + $this->_grammar['ctext'] = '(?:' . $this->_grammar['NO-WS-CTL'] . + '|[\x21-\x27\x2A-\x5B\x5D-\x7E])'; + //Uses recursive PCRE (?1) -- could be a weak point?? + $this->_grammar['ccontent'] = '(?:' . $this->_grammar['ctext'] . '|' . + $this->_grammar['quoted-pair'] . '|(?1))'; + $this->_grammar['comment'] = '(\((?:' . $this->_grammar['FWS'] . '|' . + $this->_grammar['ccontent']. ')*' . $this->_grammar['FWS'] . '?\))'; + $this->_grammar['CFWS'] = '(?:(?:' . $this->_grammar['FWS'] . '?' . + $this->_grammar['comment'] . ')*(?:(?:' . $this->_grammar['FWS'] . '?' . + $this->_grammar['comment'] . ')|' . $this->_grammar['FWS'] . '))'; + $this->_grammar['qtext'] = '(?:' . $this->_grammar['NO-WS-CTL'] . + '|[\x21\x23-\x5B\x5D-\x7E])'; + $this->_grammar['qcontent'] = '(?:' . $this->_grammar['qtext'] . '|' . + $this->_grammar['quoted-pair'] . ')'; + $this->_grammar['quoted-string'] = '(?:' . $this->_grammar['CFWS'] . '?"' . + '(' . $this->_grammar['FWS'] . '?' . $this->_grammar['qcontent'] . ')*' . + $this->_grammar['FWS'] . '?"' . $this->_grammar['CFWS'] . '?)'; + $this->_grammar['atext'] = '[a-zA-Z0-9!#\$%&\'\*\+\-\/=\?\^_`\{\}\|~]'; + $this->_grammar['atom'] = '(?:' . $this->_grammar['CFWS'] . '?' . + $this->_grammar['atext'] . '+' . $this->_grammar['CFWS'] . '?)'; + $this->_grammar['dot-atom-text'] = '(?:' . $this->_grammar['atext'] . '+' . + '(\.' . $this->_grammar['atext'] . '+)*)'; + $this->_grammar['dot-atom'] = '(?:' . $this->_grammar['CFWS'] . '?' . + $this->_grammar['dot-atom-text'] . '+' . $this->_grammar['CFWS'] . '?)'; + $this->_grammar['word'] = '(?:' . $this->_grammar['atom'] . '|' . + $this->_grammar['quoted-string'] . ')'; + $this->_grammar['phrase'] = '(?:' . $this->_grammar['word'] . '+?)'; + $this->_grammar['no-fold-quote'] = '(?:"(?:' . $this->_grammar['qtext'] . + '|' . $this->_grammar['quoted-pair'] . ')*")'; + $this->_grammar['dtext'] = '(?:' . $this->_grammar['NO-WS-CTL'] . + '|[\x21-\x5A\x5E-\x7E])'; + $this->_grammar['no-fold-literal'] = '(?:\[(?:' . $this->_grammar['dtext'] . + '|' . $this->_grammar['quoted-pair'] . ')*\])'; + + //Message IDs + $this->_grammar['id-left'] = '(?:' . $this->_grammar['dot-atom-text'] . '|' . + $this->_grammar['no-fold-quote'] . ')'; + $this->_grammar['id-right'] = '(?:' . $this->_grammar['dot-atom-text'] . '|' . + $this->_grammar['no-fold-literal'] . ')'; + + //Addresses, mailboxes and paths + $this->_grammar['local-part'] = '(?:' . $this->_grammar['dot-atom'] . '|' . + $this->_grammar['quoted-string'] . ')'; + $this->_grammar['dcontent'] = '(?:' . $this->_grammar['dtext'] . '|' . + $this->_grammar['quoted-pair'] . ')'; + $this->_grammar['domain-literal'] = '(?:' . $this->_grammar['CFWS'] . '?\[(' . + $this->_grammar['FWS'] . '?' . $this->_grammar['dcontent'] . ')*?' . + $this->_grammar['FWS'] . '?\]' . $this->_grammar['CFWS'] . '?)'; + $this->_grammar['domain'] = '(?:' . $this->_grammar['dot-atom'] . '|' . + $this->_grammar['domain-literal'] . ')'; + $this->_grammar['addr-spec'] = '(?:' . $this->_grammar['local-part'] . '@' . + $this->_grammar['domain'] . ')'; + } + + /** + * Get the grammar defined for $name token. + * @param string $name execatly as written in the RFC + * @return string + */ + protected function getGrammar($name) + { + if (array_key_exists($name, $this->_grammar)) + { + return $this->_grammar[$name]; + } + else + { + throw new Swift_RfcComplianceException( + "No such grammar '" . $name . "' defined." + ); + } + } + + /** + * Escape special characters in a string (convert to quoted-pairs). + * @param string $token + * @param string[] $include additonal chars to escape + * @param string[] $exclude chars from escaping + * @return string + */ + protected function escapeSpecials($token, $include = array(), + $exclude = array()) + { + foreach ( + array_merge(array('\\'), array_diff($this->_specials, $exclude), $include) as $char) + { + $token = str_replace($char, '\\' . $char, $token); + } + return $token; + } + + /** + * Produces a compliant, formatted RFC 2822 'phrase' based on the string given. + * @param Swift_Mime_Header $header + * @param string $string as displayed + * @param string $charset of the text + * @param Swift_Mime_HeaderEncoder $encoder + * @param boolean $shorten the first line to make remove for header name + * @return string + */ + protected function createPhrase(Swift_Mime_Header $header, $string, $charset, + Swift_Mime_HeaderEncoder $encoder = null, $shorten = false) + { + //Treat token as exactly what was given + $phraseStr = $string; + //If it's not valid + if (!preg_match('/^' . $this->_grammar['phrase'] . '$/D', $phraseStr)) + { + // .. but it is just ascii text, try escaping some characters + // and make it a quoted-string + if (preg_match('/^' . $this->_grammar['text'] . '*$/D', $phraseStr)) + { + $phraseStr = $this->escapeSpecials( + $phraseStr, array('"'), $this->_specials + ); + $phraseStr = '"' . $phraseStr . '"'; + } + else // ... otherwise it needs encoding + { + //Determine space remaining on line if first line + if ($shorten) + { + $usedLength = strlen($header->getFieldName() . ': '); + } + else + { + $usedLength = 0; + } + $phraseStr = $this->encodeWords($header, $string, $usedLength); + } + } + + return $phraseStr; + } + + /** + * Encode needed word tokens within a string of input. + * @param string $input + * @param string $usedLength, optional + * @return string + */ + protected function encodeWords(Swift_Mime_Header $header, $input, + $usedLength = -1) + { + $value = ''; + + $tokens = $this->getEncodableWordTokens($input); + + foreach ($tokens as $token) + { + //See RFC 2822, Sect 2.2 (really 2.2 ??) + if ($this->tokenNeedsEncoding($token)) + { + //Don't encode starting WSP + $firstChar = substr($token, 0, 1); + switch($firstChar) + { + case ' ': + case "\t": + $value .= $firstChar; + $token = substr($token, 1); + } + + if (-1 == $usedLength) + { + $usedLength = strlen($header->getFieldName() . ': ') + strlen($value); + } + $value .= $this->getTokenAsEncodedWord($token, $usedLength); + + $header->setMaxLineLength(76); //Forefully override + } + else + { + $value .= $token; + } + } + + return $value; + } + + /** + * Test if a token needs to be encoded or not. + * @param string $token + * @return boolean + */ + protected function tokenNeedsEncoding($token) + { + return preg_match('~[\x00-\x08\x10-\x19\x7F-\xFF\r\n]~', $token); + } + + /** + * Splits a string into tokens in blocks of words which can be encoded quickly. + * @param string $string + * @return string[] + */ + protected function getEncodableWordTokens($string) + { + $tokens = array(); + + $encodedToken = ''; + //Split at all whitespace boundaries + foreach (preg_split('~(?=[\t ])~', $string) as $token) + { + if ($this->tokenNeedsEncoding($token)) + { + $encodedToken .= $token; + } + else + { + if (strlen($encodedToken) > 0) + { + $tokens[] = $encodedToken; + $encodedToken = ''; + } + $tokens[] = $token; + } + } + if (strlen($encodedToken)) + { + $tokens[] = $encodedToken; + } + + return $tokens; + } + + /** + * Get a token as an encoded word for safe insertion into headers. + * @param string $token to encode + * @param int $firstLineOffset, optional + * @return string + */ + protected function getTokenAsEncodedWord($token, $firstLineOffset = 0) + { + //Adjust $firstLineOffset to account for space needed for syntax + $charsetDecl = $this->_charset; + if (isset($this->_lang)) + { + $charsetDecl .= '*' . $this->_lang; + } + $encodingWrapperLength = strlen( + '=?' . $charsetDecl . '?' . $this->_encoder->getName() . '??=' + ); + + if ($firstLineOffset >= 75) //Does this logic need to be here? + { + $firstLineOffset = 0; + } + + $encodedTextLines = explode("\r\n", + $this->_encoder->encodeString( + $token, $firstLineOffset, 75 - $encodingWrapperLength + ) + ); + + foreach ($encodedTextLines as $lineNum => $line) + { + $encodedTextLines[$lineNum] = '=?' . $charsetDecl . + '?' . $this->_encoder->getName() . + '?' . $line . '?='; + } + + return implode("\r\n ", $encodedTextLines); + } + + /** + * Generates tokens from the given string which include CRLF as individual tokens. + * @param string $token + * @return string[] + * @access protected + */ + protected function generateTokenLines($token) + { + return preg_split('~(\r\n)~', $token, -1, PREG_SPLIT_DELIM_CAPTURE); + } + + /** + * Set a value into the cache. + * @param string $value + * @access protected + */ + protected function setCachedValue($value) + { + $this->_cachedValue = $value; + } + + /** + * Get the value in the cache. + * @return string + * @access protected + */ + protected function getCachedValue() + { + return $this->_cachedValue; + } + + /** + * Clear the cached value if $condition is met. + * @param boolean $condition + * @access protected + */ + protected function clearCachedValueIf($condition) + { + if ($condition) + { + $this->setCachedValue(null); + } + } + + // -- Private methods + + /** + * Generate a list of all tokens in the final header. + * @param string $string input, optional + * @return string[] + * @access private + */ + protected function toTokens($string = null) + { + if (is_null($string)) + { + $string = $this->getFieldBody(); + } + + $tokens = array(); + + //Generate atoms; split at all invisible boundaries followed by WSP + foreach (preg_split('~(?=[ \t])~', $string) as $token) + { + $tokens = array_merge($tokens, $this->generateTokenLines($token)); + } + + return $tokens; + } + + /** + * Takes an array of tokens which appear in the header and turns them into + * an RFC 2822 compliant string, adding FWSP where needed. + * @param string[] $tokens + * @return string + * @access private + */ + private function _tokensToString(array $tokens) + { + $lineCount = 0; + $headerLines = array(); + $headerLines[] = $this->_name . ': '; + $currentLine =& $headerLines[$lineCount++]; + + //Build all tokens back into compliant header + foreach ($tokens as $i => $token) + { + //Line longer than specified maximum or token was just a new line + if (("\r\n" == $token) || + ($i > 0 && strlen($currentLine . $token) > $this->_lineLength) + && 0 < strlen($currentLine)) + { + $headerLines[] = ''; + $currentLine =& $headerLines[$lineCount++]; + } + + //Append token to the line + if ("\r\n" != $token) + { + $currentLine .= $token; + } + } + + //Implode with FWS (RFC 2822, 2.2.3) + return implode("\r\n", $headerLines) . "\r\n"; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/.svn/text-base/DateHeader.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/.svn/text-base/DateHeader.php.svn-base new file mode 100644 index 0000000..598c0c5 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/.svn/text-base/DateHeader.php.svn-base @@ -0,0 +1,118 @@ + + * + * + * @param string $name of Header + */ + public function __construct($name) + { + $this->setFieldName($name); + } + + /** + * Get the type of Header that this instance represents. + * @return int + * @see TYPE_TEXT, TYPE_PARAMETERIZED, TYPE_MAILBOX + * @see TYPE_DATE, TYPE_ID, TYPE_PATH + */ + public function getFieldType() + { + return self::TYPE_DATE; + } + + /** + * Set the model for the field body. + * This method takes a UNIX timestamp. + * @param int $model + */ + public function setFieldBodyModel($model) + { + $this->setTimestamp($model); + } + + /** + * Get the model for the field body. + * This method returns a UNIX timestamp. + * @return mixed + */ + public function getFieldBodyModel() + { + return $this->getTimestamp(); + } + + /** + * Get the UNIX timestamp of the Date in this Header. + * @return int + */ + public function getTimestamp() + { + return $this->_timestamp; + } + + /** + * Set the UNIX timestamp of the Date in this Header. + * @param int $timestamp + */ + public function setTimestamp($timestamp) + { + if (!is_null($timestamp)) + { + $timestamp = (int) $timestamp; + } + $this->clearCachedValueIf($this->_timestamp != $timestamp); + $this->_timestamp = $timestamp; + } + + /** + * Get the string value of the body in this Header. + * This is not necessarily RFC 2822 compliant since folding white space will + * not be added at this stage (see {@link toString()} for that). + * @return string + * @see toString() + */ + public function getFieldBody() + { + if (!$this->getCachedValue()) + { + if (isset($this->_timestamp)) + { + $this->setCachedValue(date('r', $this->_timestamp)); + } + } + return $this->getCachedValue(); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/.svn/text-base/IdentificationHeader.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/.svn/text-base/IdentificationHeader.php.svn-base new file mode 100644 index 0000000..55ff737 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/.svn/text-base/IdentificationHeader.php.svn-base @@ -0,0 +1,161 @@ +setFieldName($name); + $this->initializeGrammar(); + } + + /** + * Get the type of Header that this instance represents. + * @return int + * @see TYPE_TEXT, TYPE_PARAMETERIZED, TYPE_MAILBOX + * @see TYPE_DATE, TYPE_ID, TYPE_PATH + */ + public function getFieldType() + { + return self::TYPE_ID; + } + + /** + * Set the model for the field body. + * This method takes a string ID, or an array of IDs + * @param mixed $model + * @throws Swift_RfcComplianceException + */ + public function setFieldBodyModel($model) + { + $this->setId($model); + } + + /** + * Get the model for the field body. + * This method returns an array of IDs + * @return array + */ + public function getFieldBodyModel() + { + return $this->getIds(); + } + + /** + * Set the ID used in the value of this header. + * @param string $id + * @throws Swift_RfcComplianceException + */ + public function setId($id) + { + return $this->setIds(array($id)); + } + + /** + * Get the ID used in the value of this Header. + * If multiple IDs are set only the first is returned. + * @return string + */ + public function getId() + { + if (count($this->_ids) > 0) + { + return $this->_ids[0]; + } + } + + /** + * Set a collection of IDs to use in the value of this Header. + * @param string[] $ids + * @throws Swift_RfcComplianceException + */ + public function setIds(array $ids) + { + $actualIds = array(); + + foreach ($ids as $k => $id) + { + if (preg_match( + '/^' . $this->getGrammar('id-left') . '@' . + $this->getGrammar('id-right') . '$/D', + $id + )) + { + $actualIds[] = $id; + } + else + { + throw new Swift_RfcComplianceException( + 'Invalid ID given <' . $id . '>' + ); + } + } + + $this->clearCachedValueIf($this->_ids != $actualIds); + $this->_ids = $actualIds; + } + + /** + * Get the list of IDs used in this Header. + * @return string[] + */ + public function getIds() + { + return $this->_ids; + } + + /** + * Get the string value of the body in this Header. + * This is not necessarily RFC 2822 compliant since folding white space will + * not be added at this stage (see {@link toString()} for that). + * @return string + * @see toString() + * @throws Swift_RfcComplianceException + */ + public function getFieldBody() + { + if (!$this->getCachedValue()) + { + $angleAddrs = array(); + + foreach ($this->_ids as $id) + { + $angleAddrs[] = '<' . $id . '>'; + } + + $this->setCachedValue(implode(' ', $angleAddrs)); + } + return $this->getCachedValue(); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/.svn/text-base/MailboxHeader.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/.svn/text-base/MailboxHeader.php.svn-base new file mode 100644 index 0000000..77d3bba --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/.svn/text-base/MailboxHeader.php.svn-base @@ -0,0 +1,316 @@ +setFieldName($name); + $this->setEncoder($encoder); + $this->initializeGrammar(); + } + + /** + * Get the type of Header that this instance represents. + * @return int + * @see TYPE_TEXT, TYPE_PARAMETERIZED, TYPE_MAILBOX + * @see TYPE_DATE, TYPE_ID, TYPE_PATH + */ + public function getFieldType() + { + return self::TYPE_MAILBOX; + } + + /** + * Set the model for the field body. + * This method takes a string, or an array of addresses. + * @param mixed $model + * @throws Swift_RfcComplianceException + */ + public function setFieldBodyModel($model) + { + $this->setNameAddresses($model); + } + + /** + * Get the model for the field body. + * This method returns an associative array like {@link getNameAddresses()} + * @return array + * @throws Swift_RfcComplianceException + */ + public function getFieldBodyModel() + { + return $this->getNameAddresses(); + } + + /** + * Set a list of mailboxes to be shown in this Header. + * The mailboxes can be a simple array of addresses, or an array of + * key=>value pairs where (email => personalName). + * Example: + * + * setNameAddresses(array( + * 'chris@swiftmailer.org' => 'Chris Corbyn', + * 'mark@swiftmailer.org' //No associated personal name + * )); + * ?> + * + * @param string|string[] $mailboxes + * @throws Swift_RfcComplianceException + * @see __construct() + * @see setAddresses() + * @see setValue() + */ + public function setNameAddresses($mailboxes) + { + $this->_mailboxes = $this->normalizeMailboxes((array) $mailboxes); + $this->setCachedValue(null); //Clear any cached value + } + + /** + * Get the full mailbox list of this Header as an array of valid RFC 2822 strings. + * Example: + * + * 'Chris Corbyn', + * 'mark@swiftmailer.org' => 'Mark Corbyn') + * ); + * print_r($header->getNameAddressStrings()); + * // array ( + * // 0 => Chris Corbyn , + * // 1 => Mark Corbyn + * // ) + * ?> + * + * @return string[] + * @throws Swift_RfcComplianceException + * @see getNameAddresses() + * @see toString() + */ + public function getNameAddressStrings() + { + return $this->_createNameAddressStrings($this->getNameAddresses()); + } + + /** + * Get all mailboxes in this Header as key=>value pairs. + * The key is the address and the value is the name (or null if none set). + * Example: + * + * 'Chris Corbyn', + * 'mark@swiftmailer.org' => 'Mark Corbyn') + * ); + * print_r($header->getNameAddresses()); + * // array ( + * // chris@swiftmailer.org => Chris Corbyn, + * // mark@swiftmailer.org => Mark Corbyn + * // ) + * ?> + * + * @return string[] + * @see getAddresses() + * @see getNameAddressStrings() + */ + public function getNameAddresses() + { + return $this->_mailboxes; + } + + /** + * Makes this Header represent a list of plain email addresses with no names. + * Example: + * + * setAddresses( + * array('one@domain.tld', 'two@domain.tld', 'three@domain.tld') + * ); + * ?> + * + * @param string[] $addresses + * @throws Swift_RfcComplianceException + * @see setNameAddresses() + * @see setValue() + */ + public function setAddresses($addresses) + { + return $this->setNameAddresses(array_values((array) $addresses)); + } + + /** + * Get all email addresses in this Header. + * @return string[] + * @see getNameAddresses() + */ + public function getAddresses() + { + return array_keys($this->_mailboxes); + } + + /** + * Remove one or more addresses from this Header. + * @param string|string[] $addresses + */ + public function removeAddresses($addresses) + { + $this->setCachedValue(null); + foreach ((array) $addresses as $address) + { + unset($this->_mailboxes[$address]); + } + } + + /** + * Get the string value of the body in this Header. + * This is not necessarily RFC 2822 compliant since folding white space will + * not be added at this stage (see {@link toString()} for that). + * @return string + * @throws Swift_RfcComplianceException + * @see toString() + */ + public function getFieldBody() + { + //Compute the string value of the header only if needed + if (is_null($this->getCachedValue())) + { + $this->setCachedValue($this->createMailboxListString($this->_mailboxes)); + } + return $this->getCachedValue(); + } + + // -- Points of extension + + /** + * Normalizes a user-input list of mailboxes into consistent key=>value pairs. + * @param string[] $mailboxes + * @return string[] + * @access protected + */ + protected function normalizeMailboxes(array $mailboxes) + { + $actualMailboxes = array(); + + foreach ($mailboxes as $key => $value) + { + if (is_string($key)) //key is email addr + { + $address = $key; + $name = $value; + } + else + { + $address = $value; + $name = null; + } + $this->_assertValidAddress($address); + $actualMailboxes[$address] = $name; + } + + return $actualMailboxes; + } + + /** + * Produces a compliant, formatted display-name based on the string given. + * @param string $displayName as displayed + * @param boolean $shorten the first line to make remove for header name + * @return string + * @access protected + */ + protected function createDisplayNameString($displayName, $shorten = false) + { + return $this->createPhrase($this, $displayName, + $this->getCharset(), $this->getEncoder(), $shorten + ); + } + + /** + * Creates a string form of all the mailboxes in the passed array. + * @param string[] $mailboxes + * @return string + * @throws Swift_RfcComplianceException + * @access protected + */ + protected function createMailboxListString(array $mailboxes) + { + return implode(', ', $this->_createNameAddressStrings($mailboxes)); + } + + // -- Private methods + + /** + * Return an array of strings conforming the the name-addr spec of RFC 2822. + * @param string[] $mailboxes + * @return string[] + * @access private + */ + private function _createNameAddressStrings(array $mailboxes) + { + $strings = array(); + + foreach ($mailboxes as $email => $name) + { + $mailboxStr = $email; + if (!is_null($name)) + { + $nameStr = $this->createDisplayNameString($name, empty($strings)); + $mailboxStr = $nameStr . ' <' . $mailboxStr . '>'; + } + $strings[] = $mailboxStr; + } + + return $strings; + } + + /** + * Throws an Exception if the address passed does not comply with RFC 2822. + * @param string $address + * @throws Exception If invalid. + * @access protected + */ + private function _assertValidAddress($address) + { + if (!preg_match('/^' . $this->getGrammar('addr-spec') . '$/D', + $address)) + { + throw new Swift_RfcComplianceException( + 'Address in mailbox given [' . $address . + '] does not comply with RFC 2822, 3.6.2.' + ); + } + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/.svn/text-base/ParameterizedHeader.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/.svn/text-base/ParameterizedHeader.php.svn-base new file mode 100644 index 0000000..974b44e --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/.svn/text-base/ParameterizedHeader.php.svn-base @@ -0,0 +1,274 @@ +setFieldName($name); + $this->setEncoder($encoder); + $this->_paramEncoder = $paramEncoder; + $this->initializeGrammar(); + $this->_tokenRe = '(?:[\x21\x23-\x27\x2A\x2B\x2D\x2E\x30-\x39\x41-\x5A\x5E-\x7E]+)'; + } + + /** + * Get the type of Header that this instance represents. + * @return int + * @see TYPE_TEXT, TYPE_PARAMETERIZED, TYPE_MAILBOX + * @see TYPE_DATE, TYPE_ID, TYPE_PATH + */ + public function getFieldType() + { + return self::TYPE_PARAMETERIZED; + } + + /** + * Set the character set used in this Header. + * @param string $charset + */ + public function setCharset($charset) + { + parent::setCharset($charset); + if (isset($this->_paramEncoder)) + { + $this->_paramEncoder->charsetChanged($charset); + } + } + + /** + * Set the value of $parameter. + * @param string $parameter + * @param string $value + */ + public function setParameter($parameter, $value) + { + $this->setParameters(array_merge($this->getParameters(), array($parameter => $value))); + } + + /** + * Get the value of $parameter. + * @return string + */ + public function getParameter($parameter) + { + $params = $this->getParameters(); + return array_key_exists($parameter, $params) + ? $params[$parameter] + : null; + } + + /** + * Set an associative array of parameter names mapped to values. + * @param string[] + */ + public function setParameters(array $parameters) + { + $this->clearCachedValueIf($this->_params != $parameters); + $this->_params = $parameters; + } + + /** + * Returns an associative array of parameter names mapped to values. + * @return string[] + */ + public function getParameters() + { + return $this->_params; + } + + /** + * Get the value of this header prepared for rendering. + * @return string + */ + public function getFieldBody() //TODO: Check caching here + { + $body = parent::getFieldBody(); + foreach ($this->_params as $name => $value) + { + if (!is_null($value)) + { + //Add the parameter + $body .= '; ' . $this->_createParameter($name, $value); + } + } + return $body; + } + + // -- Protected methods + + /** + * Generate a list of all tokens in the final header. + * This doesn't need to be overridden in theory, but it is for implementation + * reasons to prevent potential breakage of attributes. + * @return string[] + * @access protected + */ + protected function toTokens($string = null) + { + $tokens = parent::toTokens(parent::getFieldBody()); + + //Try creating any parameters + foreach ($this->_params as $name => $value) + { + if (!is_null($value)) + { + //Add the semi-colon separator + $tokens[count($tokens)-1] .= ';'; + $tokens = array_merge($tokens, $this->generateTokenLines( + ' ' . $this->_createParameter($name, $value) + )); + } + } + + return $tokens; + } + + // -- Private methods + + /** + * Render a RFC 2047 compliant header parameter from the $name and $value. + * @param string $name + * @param string $value + * @return string + * @access private + */ + private function _createParameter($name, $value) + { + $origValue = $value; + + $encoded = false; + //Allow room for parameter name, indices, "=" and DQUOTEs + $maxValueLength = $this->getMaxLineLength() - strlen($name . '=*N"";') - 1; + $firstLineOffset = 0; + + //If it's not already a valid parameter value... + if (!preg_match('/^' . $this->_tokenRe . '$/D', $value)) + { + //TODO: text, or something else?? + //... and it's not ascii + if (!preg_match('/^' . $this->getGrammar('text') . '*$/D', $value)) + { + $encoded = true; + //Allow space for the indices, charset and language + $maxValueLength = $this->getMaxLineLength() - strlen($name . '*N*="";') - 1; + $firstLineOffset = strlen( + $this->getCharset() . "'" . $this->getLanguage() . "'" + ); + } + } + + //Encode if we need to + if ($encoded || strlen($value) > $maxValueLength) + { + if (isset($this->_paramEncoder)) + { + $value = $this->_paramEncoder->encodeString( + $origValue, $firstLineOffset, $maxValueLength + ); + } + else //We have to go against RFC 2183/2231 in some areas for interoperability + { + $value = $this->getTokenAsEncodedWord($origValue); + $encoded = false; + } + } + + $valueLines = isset($this->_paramEncoder) ? explode("\r\n", $value) : array($value); + + //Need to add indices + if (count($valueLines) > 1) + { + $paramLines = array(); + foreach ($valueLines as $i => $line) + { + $paramLines[] = $name . '*' . $i . + $this->_getEndOfParameterValue($line, $encoded, $i == 0); + } + return implode(";\r\n ", $paramLines); + } + else + { + return $name . $this->_getEndOfParameterValue( + $valueLines[0], $encoded, true + ); + } + } + + /** + * Returns the parameter value from the "=" and beyond. + * @param string $value to append + * @param boolean $encoded + * @param boolean $firstLine + * @return string + * @access private + */ + private function _getEndOfParameterValue($value, $encoded = false, $firstLine = false) + { + if (!preg_match('/^' . $this->_tokenRe . '$/D', $value)) + { + $value = '"' . $value . '"'; + } + $prepend = '='; + if ($encoded) + { + $prepend = '*='; + if ($firstLine) + { + $prepend = '*=' . $this->getCharset() . "'" . $this->getLanguage() . + "'"; + } + } + return $prepend . $value; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/.svn/text-base/PathHeader.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/.svn/text-base/PathHeader.php.svn-base new file mode 100644 index 0000000..0a8a100 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/.svn/text-base/PathHeader.php.svn-base @@ -0,0 +1,126 @@ +setFieldName($name); + $this->initializeGrammar(); + } + + /** + * Get the type of Header that this instance represents. + * @return int + * @see TYPE_TEXT, TYPE_PARAMETERIZED, TYPE_MAILBOX + * @see TYPE_DATE, TYPE_ID, TYPE_PATH + */ + public function getFieldType() + { + return self::TYPE_PATH; + } + + /** + * Set the model for the field body. + * This method takes a string for an address. + * @param string $model + * @throws Swift_RfcComplianceException + */ + public function setFieldBodyModel($model) + { + $this->setAddress($model); + } + + /** + * Get the model for the field body. + * This method returns a string email address. + * @return mixed + */ + public function getFieldBodyModel() + { + return $this->getAddress(); + } + + /** + * Set the Address which should appear in this Header. + * @param string $address + * @throws Swift_RfcComplianceException + */ + public function setAddress($address) + { + if (is_null($address)) + { + $this->_address = null; + } + elseif ('' == $address + || preg_match('/^' . $this->getGrammar('addr-spec') . '$/D', $address)) + { + $this->_address = $address; + } + else + { + throw new Swift_RfcComplianceException( + 'Address set in PathHeader does not comply with addr-spec of RFC 2822.' + ); + } + $this->setCachedValue(null); + } + + /** + * Get the address which is used in this Header (if any). + * Null is returned if no address is set. + * @return string + */ + public function getAddress() + { + return $this->_address; + } + + /** + * Get the string value of the body in this Header. + * This is not necessarily RFC 2822 compliant since folding white space will + * not be added at this stage (see {@link toString()} for that). + * @return string + * @see toString() + */ + public function getFieldBody() + { + if (!$this->getCachedValue()) + { + if (isset($this->_address)) + { + $this->setCachedValue('<' . $this->_address . '>'); + } + } + return $this->getCachedValue(); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/.svn/text-base/UnstructuredHeader.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/.svn/text-base/UnstructuredHeader.php.svn-base new file mode 100644 index 0000000..fdcc21e --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/.svn/text-base/UnstructuredHeader.php.svn-base @@ -0,0 +1,108 @@ +setFieldName($name); + $this->setEncoder($encoder); + } + /** + * Get the type of Header that this instance represents. + * @return int + * @see TYPE_TEXT, TYPE_PARAMETERIZED, TYPE_MAILBOX + * @see TYPE_DATE, TYPE_ID, TYPE_PATH + */ + public function getFieldType() + { + return self::TYPE_TEXT; + } + + /** + * Set the model for the field body. + * This method takes a string for the field value. + * @param string $model + */ + public function setFieldBodyModel($model) + { + $this->setValue($model); + } + + /** + * Get the model for the field body. + * This method returns a string. + * @return string + */ + public function getFieldBodyModel() + { + return $this->getValue(); + } + + /** + * Get the (unencoded) value of this header. + * @return string + */ + public function getValue() + { + return $this->_value; + } + + /** + * Set the (unencoded) value of this header. + * @param string $value + */ + public function setValue($value) + { + $this->clearCachedValueIf($this->_value != $value); + $this->_value = $value; + } + + /** + * Get the value of this header prepared for rendering. + * @return string + */ + public function getFieldBody() + { + if (!$this->getCachedValue()) + { + $this->setCachedValue( + str_replace('\\', '\\\\', $this->encodeWords( + $this, $this->_value, -1, $this->getCharset(), $this->getEncoder() + )) + ); + } + return $this->getCachedValue(); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/AbstractHeader.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/AbstractHeader.php new file mode 100644 index 0000000..c3049c2 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/AbstractHeader.php @@ -0,0 +1,596 @@ +clearCachedValueIf($charset != $this->_charset); + $this->_charset = $charset; + if (isset($this->_encoder)) + { + $this->_encoder->charsetChanged($charset); + } + } + + /** + * Get the character set used in this Header. + * @return string + */ + public function getCharset() + { + return $this->_charset; + } + + /** + * Set the language used in this Header. + * For example, for US English, 'en-us'. + * This can be unspecified. + * @param string $lang + */ + public function setLanguage($lang) + { + $this->clearCachedValueIf($this->_lang != $lang); + $this->_lang = $lang; + } + + /** + * Get the language used in this Header. + * @return string + */ + public function getLanguage() + { + return $this->_lang; + } + + /** + * Set the encoder used for encoding the header. + * @param Swift_Mime_HeaderEncoder $encoder + */ + public function setEncoder(Swift_Mime_HeaderEncoder $encoder) + { + $this->_encoder = $encoder; + $this->setCachedValue(null); + } + + /** + * Get the encoder used for encoding this Header. + * @return Swift_Mime_HeaderEncoder + */ + public function getEncoder() + { + return $this->_encoder; + } + + /** + * Get the name of this header (e.g. charset). + * @return string + */ + public function getFieldName() + { + return $this->_name; + } + + /** + * Set the maximum length of lines in the header (excluding EOL). + * @param int $lineLength + */ + public function setMaxLineLength($lineLength) + { + $this->clearCachedValueIf($this->_lineLength != $lineLength); + $this->_lineLength = $lineLength; + } + + /** + * Get the maximum permitted length of lines in this Header. + * @return int + */ + public function getMaxLineLength() + { + return $this->_lineLength; + } + + /** + * Get this Header rendered as a RFC 2822 compliant string. + * @return string + * @throws Swift_RfcComplianceException + */ + public function toString() + { + return $this->_tokensToString($this->toTokens()); + } + + /** + * Returns a string representation of this object. + * + * @return string + * + * @see toString() + */ + public function __toString() + { + return $this->toString(); + } + + // -- Points of extension + + /** + * Set the name of this Header field. + * @param string $name + * @access protected + */ + protected function setFieldName($name) + { + $this->_name = $name; + } + + /** + * Initialize some RFC 2822 (and friends) ABNF grammar definitions. + * @access protected + */ + protected function initializeGrammar() + { + $this->_specials = array( + '(', ')', '<', '>', '[', ']', + ':', ';', '@', ',', '.', '"' + ); + + /*** Refer to RFC 2822 for ABNF grammar ***/ + + //All basic building blocks + $this->_grammar['NO-WS-CTL'] = '[\x01-\x08\x0B\x0C\x0E-\x19\x7F]'; + $this->_grammar['WSP'] = '[ \t]'; + $this->_grammar['CRLF'] = '(?:\r\n)'; + $this->_grammar['FWS'] = '(?:(?:' . $this->_grammar['WSP'] . '*' . + $this->_grammar['CRLF'] . ')?' . $this->_grammar['WSP'] . ')'; + $this->_grammar['text'] = '[\x00-\x08\x0B\x0C\x0E-\x7F]'; + $this->_grammar['quoted-pair'] = '(?:\\\\' . $this->_grammar['text'] . ')'; + $this->_grammar['ctext'] = '(?:' . $this->_grammar['NO-WS-CTL'] . + '|[\x21-\x27\x2A-\x5B\x5D-\x7E])'; + //Uses recursive PCRE (?1) -- could be a weak point?? + $this->_grammar['ccontent'] = '(?:' . $this->_grammar['ctext'] . '|' . + $this->_grammar['quoted-pair'] . '|(?1))'; + $this->_grammar['comment'] = '(\((?:' . $this->_grammar['FWS'] . '|' . + $this->_grammar['ccontent']. ')*' . $this->_grammar['FWS'] . '?\))'; + $this->_grammar['CFWS'] = '(?:(?:' . $this->_grammar['FWS'] . '?' . + $this->_grammar['comment'] . ')*(?:(?:' . $this->_grammar['FWS'] . '?' . + $this->_grammar['comment'] . ')|' . $this->_grammar['FWS'] . '))'; + $this->_grammar['qtext'] = '(?:' . $this->_grammar['NO-WS-CTL'] . + '|[\x21\x23-\x5B\x5D-\x7E])'; + $this->_grammar['qcontent'] = '(?:' . $this->_grammar['qtext'] . '|' . + $this->_grammar['quoted-pair'] . ')'; + $this->_grammar['quoted-string'] = '(?:' . $this->_grammar['CFWS'] . '?"' . + '(' . $this->_grammar['FWS'] . '?' . $this->_grammar['qcontent'] . ')*' . + $this->_grammar['FWS'] . '?"' . $this->_grammar['CFWS'] . '?)'; + $this->_grammar['atext'] = '[a-zA-Z0-9!#\$%&\'\*\+\-\/=\?\^_`\{\}\|~]'; + $this->_grammar['atom'] = '(?:' . $this->_grammar['CFWS'] . '?' . + $this->_grammar['atext'] . '+' . $this->_grammar['CFWS'] . '?)'; + $this->_grammar['dot-atom-text'] = '(?:' . $this->_grammar['atext'] . '+' . + '(\.' . $this->_grammar['atext'] . '+)*)'; + $this->_grammar['dot-atom'] = '(?:' . $this->_grammar['CFWS'] . '?' . + $this->_grammar['dot-atom-text'] . '+' . $this->_grammar['CFWS'] . '?)'; + $this->_grammar['word'] = '(?:' . $this->_grammar['atom'] . '|' . + $this->_grammar['quoted-string'] . ')'; + $this->_grammar['phrase'] = '(?:' . $this->_grammar['word'] . '+?)'; + $this->_grammar['no-fold-quote'] = '(?:"(?:' . $this->_grammar['qtext'] . + '|' . $this->_grammar['quoted-pair'] . ')*")'; + $this->_grammar['dtext'] = '(?:' . $this->_grammar['NO-WS-CTL'] . + '|[\x21-\x5A\x5E-\x7E])'; + $this->_grammar['no-fold-literal'] = '(?:\[(?:' . $this->_grammar['dtext'] . + '|' . $this->_grammar['quoted-pair'] . ')*\])'; + + //Message IDs + $this->_grammar['id-left'] = '(?:' . $this->_grammar['dot-atom-text'] . '|' . + $this->_grammar['no-fold-quote'] . ')'; + $this->_grammar['id-right'] = '(?:' . $this->_grammar['dot-atom-text'] . '|' . + $this->_grammar['no-fold-literal'] . ')'; + + //Addresses, mailboxes and paths + $this->_grammar['local-part'] = '(?:' . $this->_grammar['dot-atom'] . '|' . + $this->_grammar['quoted-string'] . ')'; + $this->_grammar['dcontent'] = '(?:' . $this->_grammar['dtext'] . '|' . + $this->_grammar['quoted-pair'] . ')'; + $this->_grammar['domain-literal'] = '(?:' . $this->_grammar['CFWS'] . '?\[(' . + $this->_grammar['FWS'] . '?' . $this->_grammar['dcontent'] . ')*?' . + $this->_grammar['FWS'] . '?\]' . $this->_grammar['CFWS'] . '?)'; + $this->_grammar['domain'] = '(?:' . $this->_grammar['dot-atom'] . '|' . + $this->_grammar['domain-literal'] . ')'; + $this->_grammar['addr-spec'] = '(?:' . $this->_grammar['local-part'] . '@' . + $this->_grammar['domain'] . ')'; + } + + /** + * Get the grammar defined for $name token. + * @param string $name execatly as written in the RFC + * @return string + */ + protected function getGrammar($name) + { + if (array_key_exists($name, $this->_grammar)) + { + return $this->_grammar[$name]; + } + else + { + throw new Swift_RfcComplianceException( + "No such grammar '" . $name . "' defined." + ); + } + } + + /** + * Escape special characters in a string (convert to quoted-pairs). + * @param string $token + * @param string[] $include additonal chars to escape + * @param string[] $exclude chars from escaping + * @return string + */ + protected function escapeSpecials($token, $include = array(), + $exclude = array()) + { + foreach ( + array_merge(array('\\'), array_diff($this->_specials, $exclude), $include) as $char) + { + $token = str_replace($char, '\\' . $char, $token); + } + return $token; + } + + /** + * Produces a compliant, formatted RFC 2822 'phrase' based on the string given. + * @param Swift_Mime_Header $header + * @param string $string as displayed + * @param string $charset of the text + * @param Swift_Mime_HeaderEncoder $encoder + * @param boolean $shorten the first line to make remove for header name + * @return string + */ + protected function createPhrase(Swift_Mime_Header $header, $string, $charset, + Swift_Mime_HeaderEncoder $encoder = null, $shorten = false) + { + //Treat token as exactly what was given + $phraseStr = $string; + //If it's not valid + if (!preg_match('/^' . $this->_grammar['phrase'] . '$/D', $phraseStr)) + { + // .. but it is just ascii text, try escaping some characters + // and make it a quoted-string + if (preg_match('/^' . $this->_grammar['text'] . '*$/D', $phraseStr)) + { + $phraseStr = $this->escapeSpecials( + $phraseStr, array('"'), $this->_specials + ); + $phraseStr = '"' . $phraseStr . '"'; + } + else // ... otherwise it needs encoding + { + //Determine space remaining on line if first line + if ($shorten) + { + $usedLength = strlen($header->getFieldName() . ': '); + } + else + { + $usedLength = 0; + } + $phraseStr = $this->encodeWords($header, $string, $usedLength); + } + } + + return $phraseStr; + } + + /** + * Encode needed word tokens within a string of input. + * @param string $input + * @param string $usedLength, optional + * @return string + */ + protected function encodeWords(Swift_Mime_Header $header, $input, + $usedLength = -1) + { + $value = ''; + + $tokens = $this->getEncodableWordTokens($input); + + foreach ($tokens as $token) + { + //See RFC 2822, Sect 2.2 (really 2.2 ??) + if ($this->tokenNeedsEncoding($token)) + { + //Don't encode starting WSP + $firstChar = substr($token, 0, 1); + switch($firstChar) + { + case ' ': + case "\t": + $value .= $firstChar; + $token = substr($token, 1); + } + + if (-1 == $usedLength) + { + $usedLength = strlen($header->getFieldName() . ': ') + strlen($value); + } + $value .= $this->getTokenAsEncodedWord($token, $usedLength); + + $header->setMaxLineLength(76); //Forefully override + } + else + { + $value .= $token; + } + } + + return $value; + } + + /** + * Test if a token needs to be encoded or not. + * @param string $token + * @return boolean + */ + protected function tokenNeedsEncoding($token) + { + return preg_match('~[\x00-\x08\x10-\x19\x7F-\xFF\r\n]~', $token); + } + + /** + * Splits a string into tokens in blocks of words which can be encoded quickly. + * @param string $string + * @return string[] + */ + protected function getEncodableWordTokens($string) + { + $tokens = array(); + + $encodedToken = ''; + //Split at all whitespace boundaries + foreach (preg_split('~(?=[\t ])~', $string) as $token) + { + if ($this->tokenNeedsEncoding($token)) + { + $encodedToken .= $token; + } + else + { + if (strlen($encodedToken) > 0) + { + $tokens[] = $encodedToken; + $encodedToken = ''; + } + $tokens[] = $token; + } + } + if (strlen($encodedToken)) + { + $tokens[] = $encodedToken; + } + + return $tokens; + } + + /** + * Get a token as an encoded word for safe insertion into headers. + * @param string $token to encode + * @param int $firstLineOffset, optional + * @return string + */ + protected function getTokenAsEncodedWord($token, $firstLineOffset = 0) + { + //Adjust $firstLineOffset to account for space needed for syntax + $charsetDecl = $this->_charset; + if (isset($this->_lang)) + { + $charsetDecl .= '*' . $this->_lang; + } + $encodingWrapperLength = strlen( + '=?' . $charsetDecl . '?' . $this->_encoder->getName() . '??=' + ); + + if ($firstLineOffset >= 75) //Does this logic need to be here? + { + $firstLineOffset = 0; + } + + $encodedTextLines = explode("\r\n", + $this->_encoder->encodeString( + $token, $firstLineOffset, 75 - $encodingWrapperLength + ) + ); + + foreach ($encodedTextLines as $lineNum => $line) + { + $encodedTextLines[$lineNum] = '=?' . $charsetDecl . + '?' . $this->_encoder->getName() . + '?' . $line . '?='; + } + + return implode("\r\n ", $encodedTextLines); + } + + /** + * Generates tokens from the given string which include CRLF as individual tokens. + * @param string $token + * @return string[] + * @access protected + */ + protected function generateTokenLines($token) + { + return preg_split('~(\r\n)~', $token, -1, PREG_SPLIT_DELIM_CAPTURE); + } + + /** + * Set a value into the cache. + * @param string $value + * @access protected + */ + protected function setCachedValue($value) + { + $this->_cachedValue = $value; + } + + /** + * Get the value in the cache. + * @return string + * @access protected + */ + protected function getCachedValue() + { + return $this->_cachedValue; + } + + /** + * Clear the cached value if $condition is met. + * @param boolean $condition + * @access protected + */ + protected function clearCachedValueIf($condition) + { + if ($condition) + { + $this->setCachedValue(null); + } + } + + // -- Private methods + + /** + * Generate a list of all tokens in the final header. + * @param string $string input, optional + * @return string[] + * @access private + */ + protected function toTokens($string = null) + { + if (is_null($string)) + { + $string = $this->getFieldBody(); + } + + $tokens = array(); + + //Generate atoms; split at all invisible boundaries followed by WSP + foreach (preg_split('~(?=[ \t])~', $string) as $token) + { + $tokens = array_merge($tokens, $this->generateTokenLines($token)); + } + + return $tokens; + } + + /** + * Takes an array of tokens which appear in the header and turns them into + * an RFC 2822 compliant string, adding FWSP where needed. + * @param string[] $tokens + * @return string + * @access private + */ + private function _tokensToString(array $tokens) + { + $lineCount = 0; + $headerLines = array(); + $headerLines[] = $this->_name . ': '; + $currentLine =& $headerLines[$lineCount++]; + + //Build all tokens back into compliant header + foreach ($tokens as $i => $token) + { + //Line longer than specified maximum or token was just a new line + if (("\r\n" == $token) || + ($i > 0 && strlen($currentLine . $token) > $this->_lineLength) + && 0 < strlen($currentLine)) + { + $headerLines[] = ''; + $currentLine =& $headerLines[$lineCount++]; + } + + //Append token to the line + if ("\r\n" != $token) + { + $currentLine .= $token; + } + } + + //Implode with FWS (RFC 2822, 2.2.3) + return implode("\r\n", $headerLines) . "\r\n"; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/DateHeader.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/DateHeader.php new file mode 100644 index 0000000..598c0c5 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/DateHeader.php @@ -0,0 +1,118 @@ + + * + * + * @param string $name of Header + */ + public function __construct($name) + { + $this->setFieldName($name); + } + + /** + * Get the type of Header that this instance represents. + * @return int + * @see TYPE_TEXT, TYPE_PARAMETERIZED, TYPE_MAILBOX + * @see TYPE_DATE, TYPE_ID, TYPE_PATH + */ + public function getFieldType() + { + return self::TYPE_DATE; + } + + /** + * Set the model for the field body. + * This method takes a UNIX timestamp. + * @param int $model + */ + public function setFieldBodyModel($model) + { + $this->setTimestamp($model); + } + + /** + * Get the model for the field body. + * This method returns a UNIX timestamp. + * @return mixed + */ + public function getFieldBodyModel() + { + return $this->getTimestamp(); + } + + /** + * Get the UNIX timestamp of the Date in this Header. + * @return int + */ + public function getTimestamp() + { + return $this->_timestamp; + } + + /** + * Set the UNIX timestamp of the Date in this Header. + * @param int $timestamp + */ + public function setTimestamp($timestamp) + { + if (!is_null($timestamp)) + { + $timestamp = (int) $timestamp; + } + $this->clearCachedValueIf($this->_timestamp != $timestamp); + $this->_timestamp = $timestamp; + } + + /** + * Get the string value of the body in this Header. + * This is not necessarily RFC 2822 compliant since folding white space will + * not be added at this stage (see {@link toString()} for that). + * @return string + * @see toString() + */ + public function getFieldBody() + { + if (!$this->getCachedValue()) + { + if (isset($this->_timestamp)) + { + $this->setCachedValue(date('r', $this->_timestamp)); + } + } + return $this->getCachedValue(); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/IdentificationHeader.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/IdentificationHeader.php new file mode 100644 index 0000000..55ff737 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/IdentificationHeader.php @@ -0,0 +1,161 @@ +setFieldName($name); + $this->initializeGrammar(); + } + + /** + * Get the type of Header that this instance represents. + * @return int + * @see TYPE_TEXT, TYPE_PARAMETERIZED, TYPE_MAILBOX + * @see TYPE_DATE, TYPE_ID, TYPE_PATH + */ + public function getFieldType() + { + return self::TYPE_ID; + } + + /** + * Set the model for the field body. + * This method takes a string ID, or an array of IDs + * @param mixed $model + * @throws Swift_RfcComplianceException + */ + public function setFieldBodyModel($model) + { + $this->setId($model); + } + + /** + * Get the model for the field body. + * This method returns an array of IDs + * @return array + */ + public function getFieldBodyModel() + { + return $this->getIds(); + } + + /** + * Set the ID used in the value of this header. + * @param string $id + * @throws Swift_RfcComplianceException + */ + public function setId($id) + { + return $this->setIds(array($id)); + } + + /** + * Get the ID used in the value of this Header. + * If multiple IDs are set only the first is returned. + * @return string + */ + public function getId() + { + if (count($this->_ids) > 0) + { + return $this->_ids[0]; + } + } + + /** + * Set a collection of IDs to use in the value of this Header. + * @param string[] $ids + * @throws Swift_RfcComplianceException + */ + public function setIds(array $ids) + { + $actualIds = array(); + + foreach ($ids as $k => $id) + { + if (preg_match( + '/^' . $this->getGrammar('id-left') . '@' . + $this->getGrammar('id-right') . '$/D', + $id + )) + { + $actualIds[] = $id; + } + else + { + throw new Swift_RfcComplianceException( + 'Invalid ID given <' . $id . '>' + ); + } + } + + $this->clearCachedValueIf($this->_ids != $actualIds); + $this->_ids = $actualIds; + } + + /** + * Get the list of IDs used in this Header. + * @return string[] + */ + public function getIds() + { + return $this->_ids; + } + + /** + * Get the string value of the body in this Header. + * This is not necessarily RFC 2822 compliant since folding white space will + * not be added at this stage (see {@link toString()} for that). + * @return string + * @see toString() + * @throws Swift_RfcComplianceException + */ + public function getFieldBody() + { + if (!$this->getCachedValue()) + { + $angleAddrs = array(); + + foreach ($this->_ids as $id) + { + $angleAddrs[] = '<' . $id . '>'; + } + + $this->setCachedValue(implode(' ', $angleAddrs)); + } + return $this->getCachedValue(); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/MailboxHeader.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/MailboxHeader.php new file mode 100644 index 0000000..77d3bba --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/MailboxHeader.php @@ -0,0 +1,316 @@ +setFieldName($name); + $this->setEncoder($encoder); + $this->initializeGrammar(); + } + + /** + * Get the type of Header that this instance represents. + * @return int + * @see TYPE_TEXT, TYPE_PARAMETERIZED, TYPE_MAILBOX + * @see TYPE_DATE, TYPE_ID, TYPE_PATH + */ + public function getFieldType() + { + return self::TYPE_MAILBOX; + } + + /** + * Set the model for the field body. + * This method takes a string, or an array of addresses. + * @param mixed $model + * @throws Swift_RfcComplianceException + */ + public function setFieldBodyModel($model) + { + $this->setNameAddresses($model); + } + + /** + * Get the model for the field body. + * This method returns an associative array like {@link getNameAddresses()} + * @return array + * @throws Swift_RfcComplianceException + */ + public function getFieldBodyModel() + { + return $this->getNameAddresses(); + } + + /** + * Set a list of mailboxes to be shown in this Header. + * The mailboxes can be a simple array of addresses, or an array of + * key=>value pairs where (email => personalName). + * Example: + * + * setNameAddresses(array( + * 'chris@swiftmailer.org' => 'Chris Corbyn', + * 'mark@swiftmailer.org' //No associated personal name + * )); + * ?> + * + * @param string|string[] $mailboxes + * @throws Swift_RfcComplianceException + * @see __construct() + * @see setAddresses() + * @see setValue() + */ + public function setNameAddresses($mailboxes) + { + $this->_mailboxes = $this->normalizeMailboxes((array) $mailboxes); + $this->setCachedValue(null); //Clear any cached value + } + + /** + * Get the full mailbox list of this Header as an array of valid RFC 2822 strings. + * Example: + * + * 'Chris Corbyn', + * 'mark@swiftmailer.org' => 'Mark Corbyn') + * ); + * print_r($header->getNameAddressStrings()); + * // array ( + * // 0 => Chris Corbyn , + * // 1 => Mark Corbyn + * // ) + * ?> + * + * @return string[] + * @throws Swift_RfcComplianceException + * @see getNameAddresses() + * @see toString() + */ + public function getNameAddressStrings() + { + return $this->_createNameAddressStrings($this->getNameAddresses()); + } + + /** + * Get all mailboxes in this Header as key=>value pairs. + * The key is the address and the value is the name (or null if none set). + * Example: + * + * 'Chris Corbyn', + * 'mark@swiftmailer.org' => 'Mark Corbyn') + * ); + * print_r($header->getNameAddresses()); + * // array ( + * // chris@swiftmailer.org => Chris Corbyn, + * // mark@swiftmailer.org => Mark Corbyn + * // ) + * ?> + * + * @return string[] + * @see getAddresses() + * @see getNameAddressStrings() + */ + public function getNameAddresses() + { + return $this->_mailboxes; + } + + /** + * Makes this Header represent a list of plain email addresses with no names. + * Example: + * + * setAddresses( + * array('one@domain.tld', 'two@domain.tld', 'three@domain.tld') + * ); + * ?> + * + * @param string[] $addresses + * @throws Swift_RfcComplianceException + * @see setNameAddresses() + * @see setValue() + */ + public function setAddresses($addresses) + { + return $this->setNameAddresses(array_values((array) $addresses)); + } + + /** + * Get all email addresses in this Header. + * @return string[] + * @see getNameAddresses() + */ + public function getAddresses() + { + return array_keys($this->_mailboxes); + } + + /** + * Remove one or more addresses from this Header. + * @param string|string[] $addresses + */ + public function removeAddresses($addresses) + { + $this->setCachedValue(null); + foreach ((array) $addresses as $address) + { + unset($this->_mailboxes[$address]); + } + } + + /** + * Get the string value of the body in this Header. + * This is not necessarily RFC 2822 compliant since folding white space will + * not be added at this stage (see {@link toString()} for that). + * @return string + * @throws Swift_RfcComplianceException + * @see toString() + */ + public function getFieldBody() + { + //Compute the string value of the header only if needed + if (is_null($this->getCachedValue())) + { + $this->setCachedValue($this->createMailboxListString($this->_mailboxes)); + } + return $this->getCachedValue(); + } + + // -- Points of extension + + /** + * Normalizes a user-input list of mailboxes into consistent key=>value pairs. + * @param string[] $mailboxes + * @return string[] + * @access protected + */ + protected function normalizeMailboxes(array $mailboxes) + { + $actualMailboxes = array(); + + foreach ($mailboxes as $key => $value) + { + if (is_string($key)) //key is email addr + { + $address = $key; + $name = $value; + } + else + { + $address = $value; + $name = null; + } + $this->_assertValidAddress($address); + $actualMailboxes[$address] = $name; + } + + return $actualMailboxes; + } + + /** + * Produces a compliant, formatted display-name based on the string given. + * @param string $displayName as displayed + * @param boolean $shorten the first line to make remove for header name + * @return string + * @access protected + */ + protected function createDisplayNameString($displayName, $shorten = false) + { + return $this->createPhrase($this, $displayName, + $this->getCharset(), $this->getEncoder(), $shorten + ); + } + + /** + * Creates a string form of all the mailboxes in the passed array. + * @param string[] $mailboxes + * @return string + * @throws Swift_RfcComplianceException + * @access protected + */ + protected function createMailboxListString(array $mailboxes) + { + return implode(', ', $this->_createNameAddressStrings($mailboxes)); + } + + // -- Private methods + + /** + * Return an array of strings conforming the the name-addr spec of RFC 2822. + * @param string[] $mailboxes + * @return string[] + * @access private + */ + private function _createNameAddressStrings(array $mailboxes) + { + $strings = array(); + + foreach ($mailboxes as $email => $name) + { + $mailboxStr = $email; + if (!is_null($name)) + { + $nameStr = $this->createDisplayNameString($name, empty($strings)); + $mailboxStr = $nameStr . ' <' . $mailboxStr . '>'; + } + $strings[] = $mailboxStr; + } + + return $strings; + } + + /** + * Throws an Exception if the address passed does not comply with RFC 2822. + * @param string $address + * @throws Exception If invalid. + * @access protected + */ + private function _assertValidAddress($address) + { + if (!preg_match('/^' . $this->getGrammar('addr-spec') . '$/D', + $address)) + { + throw new Swift_RfcComplianceException( + 'Address in mailbox given [' . $address . + '] does not comply with RFC 2822, 3.6.2.' + ); + } + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/ParameterizedHeader.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/ParameterizedHeader.php new file mode 100644 index 0000000..974b44e --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/ParameterizedHeader.php @@ -0,0 +1,274 @@ +setFieldName($name); + $this->setEncoder($encoder); + $this->_paramEncoder = $paramEncoder; + $this->initializeGrammar(); + $this->_tokenRe = '(?:[\x21\x23-\x27\x2A\x2B\x2D\x2E\x30-\x39\x41-\x5A\x5E-\x7E]+)'; + } + + /** + * Get the type of Header that this instance represents. + * @return int + * @see TYPE_TEXT, TYPE_PARAMETERIZED, TYPE_MAILBOX + * @see TYPE_DATE, TYPE_ID, TYPE_PATH + */ + public function getFieldType() + { + return self::TYPE_PARAMETERIZED; + } + + /** + * Set the character set used in this Header. + * @param string $charset + */ + public function setCharset($charset) + { + parent::setCharset($charset); + if (isset($this->_paramEncoder)) + { + $this->_paramEncoder->charsetChanged($charset); + } + } + + /** + * Set the value of $parameter. + * @param string $parameter + * @param string $value + */ + public function setParameter($parameter, $value) + { + $this->setParameters(array_merge($this->getParameters(), array($parameter => $value))); + } + + /** + * Get the value of $parameter. + * @return string + */ + public function getParameter($parameter) + { + $params = $this->getParameters(); + return array_key_exists($parameter, $params) + ? $params[$parameter] + : null; + } + + /** + * Set an associative array of parameter names mapped to values. + * @param string[] + */ + public function setParameters(array $parameters) + { + $this->clearCachedValueIf($this->_params != $parameters); + $this->_params = $parameters; + } + + /** + * Returns an associative array of parameter names mapped to values. + * @return string[] + */ + public function getParameters() + { + return $this->_params; + } + + /** + * Get the value of this header prepared for rendering. + * @return string + */ + public function getFieldBody() //TODO: Check caching here + { + $body = parent::getFieldBody(); + foreach ($this->_params as $name => $value) + { + if (!is_null($value)) + { + //Add the parameter + $body .= '; ' . $this->_createParameter($name, $value); + } + } + return $body; + } + + // -- Protected methods + + /** + * Generate a list of all tokens in the final header. + * This doesn't need to be overridden in theory, but it is for implementation + * reasons to prevent potential breakage of attributes. + * @return string[] + * @access protected + */ + protected function toTokens($string = null) + { + $tokens = parent::toTokens(parent::getFieldBody()); + + //Try creating any parameters + foreach ($this->_params as $name => $value) + { + if (!is_null($value)) + { + //Add the semi-colon separator + $tokens[count($tokens)-1] .= ';'; + $tokens = array_merge($tokens, $this->generateTokenLines( + ' ' . $this->_createParameter($name, $value) + )); + } + } + + return $tokens; + } + + // -- Private methods + + /** + * Render a RFC 2047 compliant header parameter from the $name and $value. + * @param string $name + * @param string $value + * @return string + * @access private + */ + private function _createParameter($name, $value) + { + $origValue = $value; + + $encoded = false; + //Allow room for parameter name, indices, "=" and DQUOTEs + $maxValueLength = $this->getMaxLineLength() - strlen($name . '=*N"";') - 1; + $firstLineOffset = 0; + + //If it's not already a valid parameter value... + if (!preg_match('/^' . $this->_tokenRe . '$/D', $value)) + { + //TODO: text, or something else?? + //... and it's not ascii + if (!preg_match('/^' . $this->getGrammar('text') . '*$/D', $value)) + { + $encoded = true; + //Allow space for the indices, charset and language + $maxValueLength = $this->getMaxLineLength() - strlen($name . '*N*="";') - 1; + $firstLineOffset = strlen( + $this->getCharset() . "'" . $this->getLanguage() . "'" + ); + } + } + + //Encode if we need to + if ($encoded || strlen($value) > $maxValueLength) + { + if (isset($this->_paramEncoder)) + { + $value = $this->_paramEncoder->encodeString( + $origValue, $firstLineOffset, $maxValueLength + ); + } + else //We have to go against RFC 2183/2231 in some areas for interoperability + { + $value = $this->getTokenAsEncodedWord($origValue); + $encoded = false; + } + } + + $valueLines = isset($this->_paramEncoder) ? explode("\r\n", $value) : array($value); + + //Need to add indices + if (count($valueLines) > 1) + { + $paramLines = array(); + foreach ($valueLines as $i => $line) + { + $paramLines[] = $name . '*' . $i . + $this->_getEndOfParameterValue($line, $encoded, $i == 0); + } + return implode(";\r\n ", $paramLines); + } + else + { + return $name . $this->_getEndOfParameterValue( + $valueLines[0], $encoded, true + ); + } + } + + /** + * Returns the parameter value from the "=" and beyond. + * @param string $value to append + * @param boolean $encoded + * @param boolean $firstLine + * @return string + * @access private + */ + private function _getEndOfParameterValue($value, $encoded = false, $firstLine = false) + { + if (!preg_match('/^' . $this->_tokenRe . '$/D', $value)) + { + $value = '"' . $value . '"'; + } + $prepend = '='; + if ($encoded) + { + $prepend = '*='; + if ($firstLine) + { + $prepend = '*=' . $this->getCharset() . "'" . $this->getLanguage() . + "'"; + } + } + return $prepend . $value; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/PathHeader.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/PathHeader.php new file mode 100644 index 0000000..0a8a100 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/PathHeader.php @@ -0,0 +1,126 @@ +setFieldName($name); + $this->initializeGrammar(); + } + + /** + * Get the type of Header that this instance represents. + * @return int + * @see TYPE_TEXT, TYPE_PARAMETERIZED, TYPE_MAILBOX + * @see TYPE_DATE, TYPE_ID, TYPE_PATH + */ + public function getFieldType() + { + return self::TYPE_PATH; + } + + /** + * Set the model for the field body. + * This method takes a string for an address. + * @param string $model + * @throws Swift_RfcComplianceException + */ + public function setFieldBodyModel($model) + { + $this->setAddress($model); + } + + /** + * Get the model for the field body. + * This method returns a string email address. + * @return mixed + */ + public function getFieldBodyModel() + { + return $this->getAddress(); + } + + /** + * Set the Address which should appear in this Header. + * @param string $address + * @throws Swift_RfcComplianceException + */ + public function setAddress($address) + { + if (is_null($address)) + { + $this->_address = null; + } + elseif ('' == $address + || preg_match('/^' . $this->getGrammar('addr-spec') . '$/D', $address)) + { + $this->_address = $address; + } + else + { + throw new Swift_RfcComplianceException( + 'Address set in PathHeader does not comply with addr-spec of RFC 2822.' + ); + } + $this->setCachedValue(null); + } + + /** + * Get the address which is used in this Header (if any). + * Null is returned if no address is set. + * @return string + */ + public function getAddress() + { + return $this->_address; + } + + /** + * Get the string value of the body in this Header. + * This is not necessarily RFC 2822 compliant since folding white space will + * not be added at this stage (see {@link toString()} for that). + * @return string + * @see toString() + */ + public function getFieldBody() + { + if (!$this->getCachedValue()) + { + if (isset($this->_address)) + { + $this->setCachedValue('<' . $this->_address . '>'); + } + } + return $this->getCachedValue(); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/UnstructuredHeader.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/UnstructuredHeader.php new file mode 100644 index 0000000..fdcc21e --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Headers/UnstructuredHeader.php @@ -0,0 +1,108 @@ +setFieldName($name); + $this->setEncoder($encoder); + } + /** + * Get the type of Header that this instance represents. + * @return int + * @see TYPE_TEXT, TYPE_PARAMETERIZED, TYPE_MAILBOX + * @see TYPE_DATE, TYPE_ID, TYPE_PATH + */ + public function getFieldType() + { + return self::TYPE_TEXT; + } + + /** + * Set the model for the field body. + * This method takes a string for the field value. + * @param string $model + */ + public function setFieldBodyModel($model) + { + $this->setValue($model); + } + + /** + * Get the model for the field body. + * This method returns a string. + * @return string + */ + public function getFieldBodyModel() + { + return $this->getValue(); + } + + /** + * Get the (unencoded) value of this header. + * @return string + */ + public function getValue() + { + return $this->_value; + } + + /** + * Set the (unencoded) value of this header. + * @param string $value + */ + public function setValue($value) + { + $this->clearCachedValueIf($this->_value != $value); + $this->_value = $value; + } + + /** + * Get the value of this header prepared for rendering. + * @return string + */ + public function getFieldBody() + { + if (!$this->getCachedValue()) + { + $this->setCachedValue( + str_replace('\\', '\\\\', $this->encodeWords( + $this, $this->_value, -1, $this->getCharset(), $this->getEncoder() + )) + ); + } + return $this->getCachedValue(); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Message.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Message.php new file mode 100644 index 0000000..0496c08 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/Message.php @@ -0,0 +1,230 @@ + 'Real Name'). + * + * If the second parameter is provided and the first is a string, then $name + * is associated with the address. + * + * @param mixed $address + * @param string $name optional + */ + public function setSender($address, $name = null); + + /** + * Get the sender address for this message. + * + * This has a higher significance than the From address. + * + * @return string + */ + public function getSender(); + + /** + * Set the From address of this message. + * + * It is permissible for multiple From addresses to be set using an array. + * + * If multiple From addresses are used, you SHOULD set the Sender address and + * according to RFC 2822, MUST set the sender address. + * + * An array can be used if display names are to be provided: i.e. + * array('email@address.com' => 'Real Name'). + * + * If the second parameter is provided and the first is a string, then $name + * is associated with the address. + * + * @param mixed $addresses + * @param string $name optional + */ + public function setFrom($addresses, $name = null); + + /** + * Get the From address(es) of this message. + * + * This method always returns an associative array where the keys are the + * addresses. + * + * @return string[] + */ + public function getFrom(); + + /** + * Set the Reply-To address(es). + * + * Any replies from the receiver will be sent to this address. + * + * It is permissible for multiple reply-to addresses to be set using an array. + * + * This method has the same synopsis as {@link setFrom()} and {@link setTo()}. + * + * If the second parameter is provided and the first is a string, then $name + * is associated with the address. + * + * @param mixed $addresses + * @param string $name optional + */ + public function setReplyTo($addresses, $name = null); + + /** + * Get the Reply-To addresses for this message. + * + * This method always returns an associative array where the keys provide the + * email addresses. + * + * @return string[] + */ + public function getReplyTo(); + + /** + * Set the To address(es). + * + * Recipients set in this field will receive a copy of this message. + * + * This method has the same synopsis as {@link setFrom()} and {@link setCc()}. + * + * If the second parameter is provided and the first is a string, then $name + * is associated with the address. + * + * @param mixed $addresses + * @param string $name optional + */ + public function setTo($addresses, $name = null); + + /** + * Get the To addresses for this message. + * + * This method always returns an associative array, whereby the keys provide + * the actual email addresses. + * + * @return string[] + */ + public function getTo(); + + /** + * Set the Cc address(es). + * + * Recipients set in this field will receive a 'carbon-copy' of this message. + * + * This method has the same synopsis as {@link setFrom()} and {@link setTo()}. + * + * @param mixed $addresses + * @param string $name optional + */ + public function setCc($addresses, $name = null); + + /** + * Get the Cc addresses for this message. + * + * This method always returns an associative array, whereby the keys provide + * the actual email addresses. + * + * @return string[] + */ + public function getCc(); + + /** + * Set the Bcc address(es). + * + * Recipients set in this field will receive a 'blind-carbon-copy' of this + * message. + * + * In other words, they will get the message, but any other recipients of the + * message will have no such knowledge of their receipt of it. + * + * This method has the same synopsis as {@link setFrom()} and {@link setTo()}. + * + * @param mixed $addresses + * @param string $name optional + */ + public function setBcc($addresses, $name = null); + + /** + * Get the Bcc addresses for this message. + * + * This method always returns an associative array, whereby the keys provide + * the actual email addresses. + * + * @return string[] + */ + public function getBcc(); + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/MimeEntity.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/MimeEntity.php new file mode 100644 index 0000000..2b08009 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/MimeEntity.php @@ -0,0 +1,108 @@ +setContentType('text/plain'); + if (!is_null($charset)) + { + $this->setCharset($charset); + } + } + + /** + * Set the body of this entity, either as a string, or as an instance of + * {@link Swift_OutputByteStream}. + * + * @param mixed $body + * @param string $contentType optional + * @param string $charset optional + */ + public function setBody($body, $contentType = null, $charset = null) + { + parent::setBody($body, $contentType); + if (isset($charset)) + { + $this->setCharset($charset); + } + return $this; + } + + /** + * Get the character set of this entity. + * + * @return string + */ + public function getCharset() + { + return $this->_getHeaderParameter('Content-Type', 'charset'); + } + + /** + * Set the character set of this entity. + * + * @param string $charset + */ + public function setCharset($charset) + { + $this->_setHeaderParameter('Content-Type', 'charset', $charset); + if ($charset !== $this->_userCharset) + { + $this->_clearCache(); + } + $this->_userCharset = $charset; + parent::charsetChanged($charset); + return $this; + } + + /** + * Get the format of this entity (i.e. flowed or fixed). + * + * @return string + */ + public function getFormat() + { + return $this->_getHeaderParameter('Content-Type', 'format'); + } + + /** + * Set the format of this entity (flowed or fixed). + * + * @param string $format + */ + public function setFormat($format) + { + $this->_setHeaderParameter('Content-Type', 'format', $format); + $this->_userFormat = $format; + return $this; + } + + /** + * Test if delsp is being used for this entity. + * + * @return boolean + */ + public function getDelSp() + { + return ($this->_getHeaderParameter('Content-Type', 'delsp') == 'yes') + ? true + : false; + } + + /** + * Turn delsp on or off for this entity. + * + * @param boolean $delsp + */ + public function setDelSp($delsp = true) + { + $this->_setHeaderParameter('Content-Type', 'delsp', $delsp ? 'yes' : null); + $this->_userDelSp = $delsp; + return $this; + } + + /** + * Get the nesting level of this entity. + * + * @return int + * @see LEVEL_TOP, LEVEL_ALTERNATIVE, LEVEL_MIXED, LEVEL_RELATED + */ + public function getNestingLevel() + { + return $this->_nestingLevel; + } + + /** + * Receive notification that the charset has changed on this document, or a + * parent document. + * + * @param string $charset + */ + public function charsetChanged($charset) + { + $this->setCharset($charset); + } + + // -- Protected methods + + /** Fix the content-type and encoding of this entity */ + protected function _fixHeaders() + { + parent::_fixHeaders(); + if (count($this->getChildren())) + { + $this->_setHeaderParameter('Content-Type', 'charset', null); + $this->_setHeaderParameter('Content-Type', 'format', null); + $this->_setHeaderParameter('Content-Type', 'delsp', null); + } + else + { + $this->setCharset($this->_userCharset); + $this->setFormat($this->_userFormat); + $this->setDelSp($this->_userDelSp); + } + } + + /** Set the nesting level of this entity */ + protected function _setNestingLevel($level) + { + $this->_nestingLevel = $level; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/ParameterizedHeader.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/ParameterizedHeader.php new file mode 100644 index 0000000..da65ca9 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/ParameterizedHeader.php @@ -0,0 +1,35 @@ +_encoder = $encoder; + $this->_paramEncoder = $paramEncoder; + $this->_charset = $charset; + } + + /** + * Create a new Mailbox Header with a list of $addresses. + * @param string $name + * @param array|string $addresses + * @return Swift_Mime_Header + */ + public function createMailboxHeader($name, $addresses = null) + { + $header = new Swift_Mime_Headers_MailboxHeader($name, $this->_encoder); + if (isset($addresses)) + { + $header->setFieldBodyModel($addresses); + } + $this->_setHeaderCharset($header); + return $header; + } + + /** + * Create a new Date header using $timestamp (UNIX time). + * @param string $name + * @param int $timestamp + * @return Swift_Mime_Header + */ + public function createDateHeader($name, $timestamp = null) + { + $header = new Swift_Mime_Headers_DateHeader($name); + if (isset($timestamp)) + { + $header->setFieldBodyModel($timestamp); + } + $this->_setHeaderCharset($header); + return $header; + } + + /** + * Create a new basic text header with $name and $value. + * @param string $name + * @param string $value + * @return Swift_Mime_Header + */ + public function createTextHeader($name, $value = null) + { + $header = new Swift_Mime_Headers_UnstructuredHeader($name, $this->_encoder); + if (isset($value)) + { + $header->setFieldBodyModel($value); + } + $this->_setHeaderCharset($header); + return $header; + } + + /** + * Create a new ParameterizedHeader with $name, $value and $params. + * @param string $name + * @param string $value + * @param array $params + * @return Swift_Mime_ParameterizedHeader + */ + public function createParameterizedHeader($name, $value = null, + $params = array()) + { + $header = new Swift_Mime_Headers_ParameterizedHeader($name, + $this->_encoder, (strtolower($name) == 'content-disposition') + ? $this->_paramEncoder + : null + ); + if (isset($value)) + { + $header->setFieldBodyModel($value); + } + foreach ($params as $k => $v) + { + $header->setParameter($k, $v); + } + $this->_setHeaderCharset($header); + return $header; + } + + /** + * Create a new ID header for Message-ID or Content-ID. + * @param string $name + * @param string|array $ids + * @return Swift_Mime_Header + */ + public function createIdHeader($name, $ids = null) + { + $header = new Swift_Mime_Headers_IdentificationHeader($name); + if (isset($ids)) + { + $header->setFieldBodyModel($ids); + } + $this->_setHeaderCharset($header); + return $header; + } + + /** + * Create a new Path header with an address (path) in it. + * @param string $name + * @param string $path + * @return Swift_Mime_Header + */ + public function createPathHeader($name, $path = null) + { + $header = new Swift_Mime_Headers_PathHeader($name); + if (isset($path)) + { + $header->setFieldBodyModel($path); + } + $this->_setHeaderCharset($header); + return $header; + } + + /** + * Notify this observer that the entity's charset has changed. + * @param string $charset + */ + public function charsetChanged($charset) + { + $this->_charset = $charset; + $this->_encoder->charsetChanged($charset); + $this->_paramEncoder->charsetChanged($charset); + } + + // -- Private methods + + /** Apply the charset to the Header */ + private function _setHeaderCharset(Swift_Mime_Header $header) + { + if (isset($this->_charset)) + { + $header->setCharset($this->_charset); + } + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/SimpleHeaderSet.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/SimpleHeaderSet.php new file mode 100644 index 0000000..eeb0221 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/SimpleHeaderSet.php @@ -0,0 +1,396 @@ +_factory = $factory; + if (isset($charset)) + { + $this->setCharset($charset); + } + } + + /** + * Set the charset used by these headers. + * + * @param string $charset + */ + public function setCharset($charset) + { + $this->_charset = $charset; + $this->_factory->charsetChanged($charset); + $this->_notifyHeadersOfCharset($charset); + } + + /** + * Add a new Mailbox Header with a list of $addresses. + * + * @param string $name + * @param array|string $addresses + */ + public function addMailboxHeader($name, $addresses = null) + { + $this->_storeHeader($name, + $this->_factory->createMailboxHeader($name, $addresses)); + } + + /** + * Add a new Date header using $timestamp (UNIX time). + * + * @param string $name + * @param int $timestamp + */ + public function addDateHeader($name, $timestamp = null) + { + $this->_storeHeader($name, + $this->_factory->createDateHeader($name, $timestamp)); + } + + /** + * Add a new basic text header with $name and $value. + * + * @param string $name + * @param string $value + */ + public function addTextHeader($name, $value = null) + { + $this->_storeHeader($name, + $this->_factory->createTextHeader($name, $value)); + } + + /** + * Add a new ParameterizedHeader with $name, $value and $params. + * + * @param string $name + * @param string $value + * @param array $params + */ + public function addParameterizedHeader($name, $value = null, + $params = array()) + { + $this->_storeHeader($name, + $this->_factory->createParameterizedHeader($name, $value, + $params)); + } + + /** + * Add a new ID header for Message-ID or Content-ID. + * + * @param string $name + * @param string|array $ids + */ + public function addIdHeader($name, $ids = null) + { + $this->_storeHeader($name, $this->_factory->createIdHeader($name, $ids)); + } + + /** + * Add a new Path header with an address (path) in it. + * + * @param string $name + * @param string $path + */ + public function addPathHeader($name, $path = null) + { + $this->_storeHeader($name, $this->_factory->createPathHeader($name, $path)); + } + + /** + * Returns true if at least one header with the given $name exists. + * + * If multiple headers match, the actual one may be specified by $index. + * + * @param string $name + * @param int $index + * + * @return boolean + */ + public function has($name, $index = 0) + { + $lowerName = strtolower($name); + return array_key_exists($lowerName, $this->_headers) + && array_key_exists($index, $this->_headers[$lowerName]); + } + + /** + * Set a header in the HeaderSet. + * + * The header may be a previously fetched header via {@link get()} or it may + * be one that has been created separately. + * + * If $index is specified, the header will be inserted into the set at this + * offset. + * + * @param Swift_Mime_Header $header + * @param int $index + */ + public function set(Swift_Mime_Header $header, $index = 0) + { + $this->_storeHeader($header->getFieldName(), $header, $index); + } + + /** + * Get the header with the given $name. + * + * If multiple headers match, the actual one may be specified by $index. + * Returns NULL if none present. + * + * @param string $name + * @param int $index + * + * @return Swift_Mime_Header + */ + public function get($name, $index = 0) + { + if ($this->has($name, $index)) + { + $lowerName = strtolower($name); + return $this->_headers[$lowerName][$index]; + } + } + + /** + * Get all headers with the given $name. + * + * @param string $name + * + * @return array + */ + public function getAll($name = null) + { + if (!isset($name)) + { + $headers = array(); + foreach ($this->_headers as $collection) + { + $headers = array_merge($headers, $collection); + } + return $headers; + } + + $lowerName = strtolower($name); + if (!array_key_exists($lowerName, $this->_headers)) + { + return array(); + } + return $this->_headers[$lowerName]; + } + + /** + * Remove the header with the given $name if it's set. + * + * If multiple headers match, the actual one may be specified by $index. + * + * @param string $name + * @param int $index + */ + public function remove($name, $index = 0) + { + $lowerName = strtolower($name); + unset($this->_headers[$lowerName][$index]); + } + + /** + * Remove all headers with the given $name. + * + * @param string $name + */ + public function removeAll($name) + { + $lowerName = strtolower($name); + unset($this->_headers[$lowerName]); + } + + /** + * Create a new instance of this HeaderSet. + * + * @return Swift_Mime_HeaderSet + */ + public function newInstance() + { + return new self($this->_factory); + } + + /** + * Define a list of Header names as an array in the correct order. + * + * These Headers will be output in the given order where present. + * + * @param array $sequence + */ + public function defineOrdering(array $sequence) + { + $this->_order = array_flip(array_map('strtolower', $sequence)); + } + + /** + * Set a list of header names which must always be displayed when set. + * + * Usually headers without a field value won't be output unless set here. + * + * @param array $names + */ + public function setAlwaysDisplayed(array $names) + { + $this->_required = array_flip(array_map('strtolower', $names)); + } + + /** + * Notify this observer that the entity's charset has changed. + * + * @param string $charset + */ + public function charsetChanged($charset) + { + $this->setCharset($charset); + } + + /** + * Returns a string with a representation of all headers. + * + * @return string + */ + public function toString() + { + $string = ''; + $headers = $this->_headers; + if ($this->_canSort()) + { + uksort($headers, array($this, '_sortHeaders')); + } + foreach ($headers as $collection) + { + foreach ($collection as $header) + { + if ($this->_isDisplayed($header) || $header->getFieldBody() != '') + { + $string .= $header->toString(); + } + } + } + return $string; + } + + /** + * Returns a string representation of this object. + * + * @return string + * + * @see toString() + */ + public function __toString() + { + return $this->toString(); + } + + // -- Private methods + + /** Save a Header to the internal collection */ + private function _storeHeader($name, Swift_Mime_Header $header, $offset = null) + { + if (!isset($this->_headers[strtolower($name)])) + { + $this->_headers[strtolower($name)] = array(); + } + if (!isset($offset)) + { + $this->_headers[strtolower($name)][] = $header; + } + else + { + $this->_headers[strtolower($name)][$offset] = $header; + } + } + + /** Test if the headers can be sorted */ + private function _canSort() + { + return count($this->_order) > 0; + } + + /** uksort() algorithm for Header ordering */ + private function _sortHeaders($a, $b) + { + $lowerA = strtolower($a); + $lowerB = strtolower($b); + $aPos = array_key_exists($lowerA, $this->_order) + ? $this->_order[$lowerA] + : -1; + $bPos = array_key_exists($lowerB, $this->_order) + ? $this->_order[$lowerB] + : -1; + + if ($aPos == -1) + { + return 1; + } + elseif ($bPos == -1) + { + return -1; + } + + return ($aPos < $bPos) ? -1 : 1; + } + + /** Test if the given Header is always displayed */ + private function _isDisplayed(Swift_Mime_Header $header) + { + return array_key_exists(strtolower($header->getFieldName()), $this->_required); + } + + /** Notify all Headers of the new charset */ + private function _notifyHeadersOfCharset($charset) + { + foreach ($this->_headers as $headerGroup) + { + foreach ($headerGroup as $header) + { + $header->setCharset($charset); + } + } + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/SimpleMessage.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/SimpleMessage.php new file mode 100644 index 0000000..bbe1e8f --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/SimpleMessage.php @@ -0,0 +1,609 @@ +getHeaders()->defineOrdering(array( + 'Return-Path', + 'Sender', + 'Message-ID', + 'Date', + 'Subject', + 'From', + 'Reply-To', + 'To', + 'Cc', + 'Bcc', + 'MIME-Version', + 'Content-Type', + 'Content-Transfer-Encoding' + )); + $this->getHeaders()->setAlwaysDisplayed( + array('Date', 'Message-ID', 'From') + ); + $this->getHeaders()->addTextHeader('MIME-Version', '1.0'); + $this->setDate(time()); + $this->setId($this->getId()); + $this->getHeaders()->addMailboxHeader('From'); + } + + /** + * Always returns {@link LEVEL_TOP} for a message instance. + * @return int + */ + public function getNestingLevel() + { + return self::LEVEL_TOP; + } + + /** + * Set the subject of this message. + * @param string $subject + */ + public function setSubject($subject) + { + if (!$this->_setHeaderFieldModel('Subject', $subject)) + { + $this->getHeaders()->addTextHeader('Subject', $subject); + } + return $this; + } + + /** + * Get the subject of this message. + * @return string + */ + public function getSubject() + { + return $this->_getHeaderFieldModel('Subject'); + } + + /** + * Set the date at which this message was created. + * @param int $date + */ + public function setDate($date) + { + if (!$this->_setHeaderFieldModel('Date', $date)) + { + $this->getHeaders()->addDateHeader('Date', $date); + } + return $this; + } + + /** + * Get the date at which this message was created. + * @return int + */ + public function getDate() + { + return $this->_getHeaderFieldModel('Date'); + } + + /** + * Set the return-path (the bounce address) of this message. + * @param string $address + */ + public function setReturnPath($address) + { + if (!$this->_setHeaderFieldModel('Return-Path', $address)) + { + $this->getHeaders()->addPathHeader('Return-Path', $address); + } + return $this; + } + + /** + * Get the return-path (bounce address) of this message. + * @return string + */ + public function getReturnPath() + { + return $this->_getHeaderFieldModel('Return-Path'); + } + + /** + * Set the sender of this message. + * This does not override the From field, but it has a higher significance. + * @param string $sender + * @param string $name optional + */ + public function setSender($address, $name = null) + { + if (!is_array($address) && isset($name)) + { + $address = array($address => $name); + } + + if (!$this->_setHeaderFieldModel('Sender', (array) $address)) + { + $this->getHeaders()->addMailboxHeader('Sender', (array) $address); + } + return $this; + } + + /** + * Get the sender of this message. + * @return string + */ + public function getSender() + { + return $this->_getHeaderFieldModel('Sender'); + } + + /** + * Add a From: address to this message. + * + * If $name is passed this name will be associated with the address. + * + * @param string $address + * @param string $name optional + */ + public function addFrom($address, $name = null) + { + $current = $this->getFrom(); + $current[$address] = $name; + return $this->setFrom($current); + } + + /** + * Set the from address of this message. + * + * You may pass an array of addresses if this message is from multiple people. + * + * If $name is passed and the first parameter is a string, this name will be + * associated with the address. + * + * @param string $addresses + * @param string $name optional + */ + public function setFrom($addresses, $name = null) + { + if (!is_array($addresses) && isset($name)) + { + $addresses = array($addresses => $name); + } + + if (!$this->_setHeaderFieldModel('From', (array) $addresses)) + { + $this->getHeaders()->addMailboxHeader('From', (array) $addresses); + } + return $this; + } + + /** + * Get the from address of this message. + * + * @return string + */ + public function getFrom() + { + return $this->_getHeaderFieldModel('From'); + } + + /** + * Add a Reply-To: address to this message. + * + * If $name is passed this name will be associated with the address. + * + * @param string $address + * @param string $name optional + */ + public function addReplyTo($address, $name = null) + { + $current = $this->getReplyTo(); + $current[$address] = $name; + return $this->setReplyTo($current); + } + + /** + * Set the reply-to address of this message. + * + * You may pass an array of addresses if replies will go to multiple people. + * + * If $name is passed and the first parameter is a string, this name will be + * associated with the address. + * + * @param string $addresses + * @param string $name optional + */ + public function setReplyTo($addresses, $name = null) + { + if (!is_array($addresses) && isset($name)) + { + $addresses = array($addresses => $name); + } + + if (!$this->_setHeaderFieldModel('Reply-To', (array) $addresses)) + { + $this->getHeaders()->addMailboxHeader('Reply-To', (array) $addresses); + } + return $this; + } + + /** + * Get the reply-to address of this message. + * + * @return string + */ + public function getReplyTo() + { + return $this->_getHeaderFieldModel('Reply-To'); + } + + /** + * Add a To: address to this message. + * + * If $name is passed this name will be associated with the address. + * + * @param string $address + * @param string $name optional + */ + public function addTo($address, $name = null) + { + $current = $this->getTo(); + $current[$address] = $name; + return $this->setTo($current); + } + + /** + * Set the to addresses of this message. + * + * If multiple recipients will receive the message and array should be used. + * + * If $name is passed and the first parameter is a string, this name will be + * associated with the address. + * + * @param array $addresses + * @param string $name optional + */ + public function setTo($addresses, $name = null) + { + if (!is_array($addresses) && isset($name)) + { + $addresses = array($addresses => $name); + } + + if (!$this->_setHeaderFieldModel('To', (array) $addresses)) + { + $this->getHeaders()->addMailboxHeader('To', (array) $addresses); + } + return $this; + } + + /** + * Get the To addresses of this message. + * + * @return array + */ + public function getTo() + { + return $this->_getHeaderFieldModel('To'); + } + + /** + * Add a Cc: address to this message. + * + * If $name is passed this name will be associated with the address. + * + * @param string $address + * @param string $name optional + */ + public function addCc($address, $name = null) + { + $current = $this->getCc(); + $current[$address] = $name; + return $this->setCc($current); + } + + /** + * Set the Cc addresses of this message. + * + * If $name is passed and the first parameter is a string, this name will be + * associated with the address. + * + * @param array $addresses + * @param string $name optional + */ + public function setCc($addresses, $name = null) + { + if (!is_array($addresses) && isset($name)) + { + $addresses = array($addresses => $name); + } + + if (!$this->_setHeaderFieldModel('Cc', (array) $addresses)) + { + $this->getHeaders()->addMailboxHeader('Cc', (array) $addresses); + } + return $this; + } + + /** + * Get the Cc address of this message. + * + * @return array + */ + public function getCc() + { + return $this->_getHeaderFieldModel('Cc'); + } + + /** + * Add a Bcc: address to this message. + * + * If $name is passed this name will be associated with the address. + * + * @param string $address + * @param string $name optional + */ + public function addBcc($address, $name = null) + { + $current = $this->getBcc(); + $current[$address] = $name; + return $this->setBcc($current); + } + + /** + * Set the Bcc addresses of this message. + * + * If $name is passed and the first parameter is a string, this name will be + * associated with the address. + * + * @param array $addresses + * @param string $name optional + */ + public function setBcc($addresses, $name = null) + { + if (!is_array($addresses) && isset($name)) + { + $addresses = array($addresses => $name); + } + + if (!$this->_setHeaderFieldModel('Bcc', (array) $addresses)) + { + $this->getHeaders()->addMailboxHeader('Bcc', (array) $addresses); + } + return $this; + } + + /** + * Get the Bcc addresses of this message. + * + * @return array + */ + public function getBcc() + { + return $this->_getHeaderFieldModel('Bcc'); + } + + /** + * Set the priority of this message. + * The value is an integer where 1 is the highest priority and 5 is the lowest. + * @param int $priority + */ + public function setPriority($priority) + { + $priorityMap = array( + 1 => 'Highest', + 2 => 'High', + 3 => 'Normal', + 4 => 'Low', + 5 => 'Lowest' + ); + $pMapKeys = array_keys($priorityMap); + if ($priority > max($pMapKeys)) + { + $priority = max($pMapKeys); + } + elseif ($priority < min($pMapKeys)) + { + $priority = min($pMapKeys); + } + if (!$this->_setHeaderFieldModel('X-Priority', + sprintf('%d (%s)', $priority, $priorityMap[$priority]))) + { + $this->getHeaders()->addTextHeader('X-Priority', + sprintf('%d (%s)', $priority, $priorityMap[$priority])); + } + return $this; + } + + /** + * Get the priority of this message. + * The returned value is an integer where 1 is the highest priority and 5 + * is the lowest. + * @return int + */ + public function getPriority() + { + list($priority) = sscanf($this->_getHeaderFieldModel('X-Priority'), + '%[1-5]' + ); + return isset($priority) ? $priority : 3; + } + + /** + * Ask for a delivery receipt from the recipient to be sent to $addresses + * @param array $addresses + */ + public function setReadReceiptTo($addresses) + { + if (!$this->_setHeaderFieldModel('Disposition-Notification-To', $addresses)) + { + $this->getHeaders() + ->addMailboxHeader('Disposition-Notification-To', $addresses); + } + return $this; + } + + /** + * Get the addresses to which a read-receipt will be sent. + * @return string + */ + public function getReadReceiptTo() + { + return $this->_getHeaderFieldModel('Disposition-Notification-To'); + } + + /** + * Attach a {@link Swift_Mime_MimeEntity} such as an Attachment or MimePart. + * @param Swift_Mime_MimeEntity $entity + */ + public function attach(Swift_Mime_MimeEntity $entity) + { + $this->setChildren(array_merge($this->getChildren(), array($entity))); + return $this; + } + + /** + * Remove an already attached entity. + * @param Swift_Mime_MimeEntity $entity + */ + public function detach(Swift_Mime_MimeEntity $entity) + { + $newChildren = array(); + foreach ($this->getChildren() as $child) + { + if ($entity !== $child) + { + $newChildren[] = $child; + } + } + $this->setChildren($newChildren); + return $this; + } + + /** + * Attach a {@link Swift_Mime_MimeEntity} and return it's CID source. + * This method should be used when embedding images or other data in a message. + * @param Swift_Mime_MimeEntity $entity + * @return string + */ + public function embed(Swift_Mime_MimeEntity $entity) + { + $this->attach($entity); + return 'cid:' . $entity->getId(); + } + + /** + * Get this message as a complete string. + * @return string + */ + public function toString() + { + if (count($children = $this->getChildren()) > 0 && $this->getBody() != '') + { + $this->setChildren(array_merge(array($this->_becomeMimePart()), $children)); + $string = parent::toString(); + $this->setChildren($children); + } + else + { + $string = parent::toString(); + } + return $string; + } + + /** + * Returns a string representation of this object. + * + * @return string + * + * @see toString() + */ + public function __toString() + { + return $this->toString(); + } + + /** + * Write this message to a {@link Swift_InputByteStream}. + * @param Swift_InputByteStream $is + */ + public function toByteStream(Swift_InputByteStream $is) + { + if (count($children = $this->getChildren()) > 0 && $this->getBody() != '') + { + $this->setChildren(array_merge(array($this->_becomeMimePart()), $children)); + parent::toByteStream($is); + $this->setChildren($children); + } + else + { + parent::toByteStream($is); + } + } + + // -- Protected methods + + /** @see Swift_Mime_SimpleMimeEntity::_getIdField() */ + protected function _getIdField() + { + return 'Message-ID'; + } + + // -- Private methods + + /** Turn the body of this message into a child of itself if needed */ + private function _becomeMimePart() + { + $part = new parent($this->getHeaders()->newInstance(), $this->getEncoder(), + $this->_getCache(), $this->_userCharset + ); + $part->setContentType($this->_userContentType); + $part->setBody($this->getBody()); + $part->setFormat($this->_userFormat); + $part->setDelSp($this->_userDelSp); + $part->_setNestingLevel($this->_getTopNestingLevel()); + return $part; + } + + /** Get the highest nesting level nested inside this message */ + private function _getTopNestingLevel() + { + $highestLevel = $this->getNestingLevel(); + foreach ($this->getChildren() as $child) + { + $childLevel = $child->getNestingLevel(); + if ($highestLevel < $childLevel) + { + $highestLevel = $childLevel; + } + } + return $highestLevel; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/SimpleMimeEntity.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/SimpleMimeEntity.php new file mode 100644 index 0000000..a392145 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Mime/SimpleMimeEntity.php @@ -0,0 +1,793 @@ + array(self::LEVEL_TOP, self::LEVEL_MIXED), + 'multipart/alternative' => array(self::LEVEL_MIXED, self::LEVEL_ALTERNATIVE), + 'multipart/related' => array(self::LEVEL_ALTERNATIVE, self::LEVEL_RELATED) + ); + + /** A set of filter rules to define what level an entity should be nested at */ + private $_compoundLevelFilters = array(); + + /** The nesting level of this entity */ + private $_nestingLevel = self::LEVEL_ALTERNATIVE; + + /** A KeyCache instance used during encoding and streaming */ + private $_cache; + + /** Direct descendants of this entity */ + private $_immediateChildren = array(); + + /** All descendants of this entity */ + private $_children = array(); + + /** The maximum line length of the body of this entity */ + private $_maxLineLength = 78; + + /** The order in which alternative mime types should appear */ + private $_alternativePartOrder = array( + 'text/plain' => 1, + 'text/html' => 2, + 'multipart/related' => 3 + ); + + /** The CID of this entity */ + private $_id; + + /** The key used for accessing the cache */ + private $_cacheKey; + + protected $_userContentType; + + /** + * Create a new SimpleMimeEntity with $headers, $encoder and $cache. + * @param Swift_Mime_HeaderSet $headers + * @param Swift_Mime_ContentEncoder $encoder + * @param Swift_KeyCache $cache + */ + public function __construct(Swift_Mime_HeaderSet $headers, + Swift_Mime_ContentEncoder $encoder, Swift_KeyCache $cache) + { + $this->_cacheKey = uniqid(); + $this->_cache = $cache; + $this->_headers = $headers; + $this->setEncoder($encoder); + $this->_headers->defineOrdering( + array('Content-Type', 'Content-Transfer-Encoding') + ); + + // This array specifies that, when the entire MIME document contains + // $compoundLevel, then for each child within $level, if its Content-Type + // is $contentType then it should be treated as if it's level is + // $neededLevel instead. I tried to write that unambiguously! :-\ + // Data Structure: + // array ( + // $compoundLevel => array( + // $level => array( + // $contentType => $neededLevel + // ) + // ) + // ) + + $this->_compoundLevelFilters = array( + (self::LEVEL_ALTERNATIVE + self::LEVEL_RELATED) => array( + self::LEVEL_ALTERNATIVE => array( + 'text/plain' => self::LEVEL_ALTERNATIVE, + 'text/html' => self::LEVEL_RELATED + ) + ) + ); + $this->generateId(); + } + + /** + * Generate a new Content-ID or Message-ID for this MIME entity. + * @return string + */ + public function generateId() + { + $idLeft = time() . '.' . uniqid(); + $idRight = !empty($_SERVER['SERVER_NAME']) + ? $_SERVER['SERVER_NAME'] + : 'swift.generated'; + $this->_id = $idLeft . '@' . $idRight; + return $this->getId(); + } + + /** + * Get the {@link Swift_Mime_HeaderSet} for this entity. + * @return Swift_Mime_HeaderSet + */ + public function getHeaders() + { + return $this->_headers; + } + + /** + * Get the nesting level of this entity. + * @return int + * @see LEVEL_TOP, LEVEL_MIXED, LEVEL_RELATED, LEVEL_ALTERNATIVE + */ + public function getNestingLevel() + { + return $this->_nestingLevel; + } + + /** + * Get the Content-type of this entity. + * @return string + */ + public function getContentType() + { + return $this->_getHeaderFieldModel('Content-Type'); + } + + /** + * Set the Content-type of this entity. + * @param string $type + */ + public function setContentType($type) + { + $this->_setContentTypeInHeaders($type); + // Keep track of the value so that if the content-type changes automatically + // due to added child entities, it can be restored if they are later removed + $this->_userContentType = $type; + return $this; + } + + /** + * Get the CID of this entity. + * The CID will only be present in headers if a Content-ID header is present. + * @return string + */ + public function getId() + { + return $this->_headers->has($this->_getIdField()) + ? current((array) $this->_getHeaderFieldModel($this->_getIdField())) + : $this->_id; + } + + /** + * Set the CID of this entity. + * @param string $id + */ + public function setId($id) + { + if (!$this->_setHeaderFieldModel($this->_getIdField(), $id)) + { + $this->_headers->addIdHeader($this->_getIdField(), $id); + } + $this->_id = $id; + return $this; + } + + /** + * Get the description of this entity. + * This value comes from the Content-Description header if set. + * @return string + */ + public function getDescription() + { + return $this->_getHeaderFieldModel('Content-Description'); + } + + /** + * Set the description of this entity. + * This method sets a value in the Content-ID header. + * @param string $description + */ + public function setDescription($description) + { + if (!$this->_setHeaderFieldModel('Content-Description', $description)) + { + $this->_headers->addTextHeader('Content-Description', $description); + } + return $this; + } + + /** + * Get the maximum line length of the body of this entity. + * @return int + */ + public function getMaxLineLength() + { + return $this->_maxLineLength; + } + + /** + * Set the maximum line length of lines in this body. + * Though not enforced by the library, lines should not exceed 1000 chars. + * @param int $length + */ + public function setMaxLineLength($length) + { + $this->_maxLineLength = $length; + return $this; + } + + /** + * Get all children added to this entity. + * @return array of Swift_Mime_Entity + */ + public function getChildren() + { + return $this->_children; + } + + /** + * Set all children of this entity. + * @param array $children Swiift_Mime_Entity instances + * @param int $compoundLevel For internal use only + */ + public function setChildren(array $children, $compoundLevel = null) + { + //TODO: Try to refactor this logic + + $compoundLevel = isset($compoundLevel) + ? $compoundLevel + : $this->_getCompoundLevel($children) + ; + + $immediateChildren = array(); + $grandchildren = array(); + $newContentType = $this->_userContentType; + + foreach ($children as $child) + { + $level = $this->_getNeededChildLevel($child, $compoundLevel); + if (empty($immediateChildren)) //first iteration + { + $immediateChildren = array($child); + } + else + { + $nextLevel = $this->_getNeededChildLevel($immediateChildren[0], $compoundLevel); + if ($nextLevel == $level) + { + $immediateChildren[] = $child; + } + elseif ($level < $nextLevel) + { + //Re-assign immediateChildren to grandchilden + $grandchildren = array_merge($grandchildren, $immediateChildren); + //Set new children + $immediateChildren = array($child); + } + else + { + $grandchildren[] = $child; + } + } + } + + if (!empty($immediateChildren)) + { + $lowestLevel = $this->_getNeededChildLevel($immediateChildren[0], $compoundLevel); + + //Determine which composite media type is needed to accomodate the + // immediate children + foreach ($this->_compositeRanges as $mediaType => $range) + { + if ($lowestLevel > $range[0] + && $lowestLevel <= $range[1]) + { + $newContentType = $mediaType; + break; + } + } + + //Put any grandchildren in a subpart + if (!empty($grandchildren)) + { + $subentity = $this->_createChild(); + $subentity->_setNestingLevel($lowestLevel); + $subentity->setChildren($grandchildren, $compoundLevel); + array_unshift($immediateChildren, $subentity); + } + } + + $this->_immediateChildren = $immediateChildren; + $this->_children = $children; + $this->_setContentTypeInHeaders($newContentType); + $this->_fixHeaders(); + $this->_sortChildren(); + + return $this; + } + + /** + * Get the body of this entity as a string. + * @return string + */ + public function getBody() + { + return ($this->_body instanceof Swift_OutputByteStream) + ? $this->_readStream($this->_body) + : $this->_body; + } + + /** + * Set the body of this entity, either as a string, or as an instance of + * {@link Swift_OutputByteStream}. + * @param mixed $body + * @param string $contentType optional + */ + public function setBody($body, $contentType = null) + { + if ($body !== $this->_body) + { + $this->_clearCache(); + } + + $this->_body = $body; + if (isset($contentType)) + { + $this->setContentType($contentType); + } + return $this; + } + + /** + * Get the encoder used for the body of this entity. + * @return Swift_Mime_ContentEncoder + */ + public function getEncoder() + { + return $this->_encoder; + } + + /** + * Set the encoder used for the body of this entity. + * @param Swift_Mime_ContentEncoder $encoder + */ + public function setEncoder(Swift_Mime_ContentEncoder $encoder) + { + if ($encoder !== $this->_encoder) + { + $this->_clearCache(); + } + + $this->_encoder = $encoder; + $this->_setEncoding($encoder->getName()); + $this->_notifyEncoderChanged($encoder); + return $this; + } + + /** + * Get the boundary used to separate children in this entity. + * @return string + */ + public function getBoundary() + { + if (!isset($this->_boundary)) + { + $this->_boundary = '_=_swift_v4_' . time() . uniqid() . '_=_'; + } + return $this->_boundary; + } + + /** + * Set the boundary used to separate children in this entity. + * @param string $boundary + * @throws Swift_RfcComplianceException + */ + public function setBoundary($boundary) + { + $this->_assertValidBoundary($boundary); + $this->_boundary = $boundary; + return $this; + } + + /** + * Receive notification that the charset of this entity, or a parent entity + * has changed. + * @param string $charset + */ + public function charsetChanged($charset) + { + $this->_notifyCharsetChanged($charset); + } + + /** + * Receive notification that the encoder of this entity or a parent entity + * has changed. + * @param Swift_Mime_ContentEncoder $encoder + */ + public function encoderChanged(Swift_Mime_ContentEncoder $encoder) + { + $this->_notifyEncoderChanged($encoder); + } + + /** + * Get this entire entity as a string. + * @return string + */ + public function toString() + { + $string = $this->_headers->toString(); + if (isset($this->_body) && empty($this->_immediateChildren)) + { + if ($this->_cache->hasKey($this->_cacheKey, 'body')) + { + $body = $this->_cache->getString($this->_cacheKey, 'body'); + } + else + { + $body = "\r\n" . $this->_encoder->encodeString($this->getBody(), 0, + $this->getMaxLineLength() + ); + $this->_cache->setString($this->_cacheKey, 'body', $body, + Swift_KeyCache::MODE_WRITE + ); + } + $string .= $body; + } + + if (!empty($this->_immediateChildren)) + { + foreach ($this->_immediateChildren as $child) + { + $string .= "\r\n\r\n--" . $this->getBoundary() . "\r\n"; + $string .= $child->toString(); + } + $string .= "\r\n\r\n--" . $this->getBoundary() . "--\r\n"; + } + + return $string; + } + + /** + * Returns a string representation of this object. + * + * @return string + * + * @see toString() + */ + public function __toString() + { + return $this->toString(); + } + + /** + * Write this entire entity to a {@link Swift_InputByteStream}. + * @param Swift_InputByteStream + */ + public function toByteStream(Swift_InputByteStream $is) + { + $is->write($this->_headers->toString()); + $is->commit(); + + if (empty($this->_immediateChildren)) + { + if (isset($this->_body)) + { + if ($this->_cache->hasKey($this->_cacheKey, 'body')) + { + $this->_cache->exportToByteStream($this->_cacheKey, 'body', $is); + } + else + { + $cacheIs = $this->_cache->getInputByteStream($this->_cacheKey, 'body'); + if ($cacheIs) + { + $is->bind($cacheIs); + } + + $is->write("\r\n"); + + if ($this->_body instanceof Swift_OutputByteStream) + { + $this->_body->setReadPointer(0); + + $this->_encoder->encodeByteStream($this->_body, $is, 0, + $this->getMaxLineLength() + ); + } + else + { + $is->write($this->_encoder->encodeString( + $this->getBody(), 0, $this->getMaxLineLength() + )); + } + + if ($cacheIs) + { + $is->unbind($cacheIs); + } + } + } + } + + if (!empty($this->_immediateChildren)) + { + foreach ($this->_immediateChildren as $child) + { + $is->write("\r\n\r\n--" . $this->getBoundary() . "\r\n"); + $child->toByteStream($is); + } + $is->write("\r\n\r\n--" . $this->getBoundary() . "--\r\n"); + } + } + + // -- Protected methods + + /** + * Get the name of the header that provides the ID of this entity */ + protected function _getIdField() + { + return 'Content-ID'; + } + + /** + * Get the model data (usually an array or a string) for $field. + */ + protected function _getHeaderFieldModel($field) + { + if ($this->_headers->has($field)) + { + return $this->_headers->get($field)->getFieldBodyModel(); + } + } + + /** + * Set the model data for $field. + */ + protected function _setHeaderFieldModel($field, $model) + { + if ($this->_headers->has($field)) + { + $this->_headers->get($field)->setFieldBodyModel($model); + return true; + } + else + { + return false; + } + } + + /** + * Get the parameter value of $parameter on $field header. + */ + protected function _getHeaderParameter($field, $parameter) + { + if ($this->_headers->has($field)) + { + return $this->_headers->get($field)->getParameter($parameter); + } + } + + /** + * Set the parameter value of $parameter on $field header. + */ + protected function _setHeaderParameter($field, $parameter, $value) + { + if ($this->_headers->has($field)) + { + $this->_headers->get($field)->setParameter($parameter, $value); + return true; + } + else + { + return false; + } + } + + /** + * Re-evaluate what content type and encoding should be used on this entity. + */ + protected function _fixHeaders() + { + if (count($this->_immediateChildren)) + { + $this->_setHeaderParameter('Content-Type', 'boundary', + $this->getBoundary() + ); + $this->_headers->remove('Content-Transfer-Encoding'); + } + else + { + $this->_setHeaderParameter('Content-Type', 'boundary', null); + $this->_setEncoding($this->_encoder->getName()); + } + } + + /** + * Get the KeyCache used in this entity. + */ + protected function _getCache() + { + return $this->_cache; + } + + /** + * Empty the KeyCache for this entity. + */ + protected function _clearCache() + { + $this->_cache->clearKey($this->_cacheKey, 'body'); + } + + // -- Private methods + + private function _readStream(Swift_OutputByteStream $os) + { + $string = ''; + while (false !== $bytes = $os->read(8192)) + { + $string .= $bytes; + } + return $string; + } + + private function _setEncoding($encoding) + { + if (!$this->_setHeaderFieldModel('Content-Transfer-Encoding', $encoding)) + { + $this->_headers->addTextHeader('Content-Transfer-Encoding', $encoding); + } + } + + private function _assertValidBoundary($boundary) + { + if (!preg_match( + '/^[a-z0-9\'\(\)\+_\-,\.\/:=\?\ ]{0,69}[a-z0-9\'\(\)\+_\-,\.\/:=\?]$/Di', + $boundary)) + { + throw new Exception('Mime boundary set is not RFC 2046 compliant.'); + } + } + + private function _setContentTypeInHeaders($type) + { + if (!$this->_setHeaderFieldModel('Content-Type', $type)) + { + $this->_headers->addParameterizedHeader('Content-Type', $type); + } + } + + private function _setNestingLevel($level) + { + $this->_nestingLevel = $level; + } + + private function _getCompoundLevel($children) + { + $level = 0; + foreach ($children as $child) + { + $level |= $child->getNestingLevel(); + } + return $level; + } + + private function _getNeededChildLevel($child, $compoundLevel) + { + $filter = array(); + foreach ($this->_compoundLevelFilters as $bitmask => $rules) + { + if (($compoundLevel & $bitmask) === $bitmask) + { + $filter = $rules + $filter; + } + } + + $realLevel = $child->getNestingLevel(); + $lowercaseType = strtolower($child->getContentType()); + + if (isset($filter[$realLevel]) + && isset($filter[$realLevel][$lowercaseType])) + { + return $filter[$realLevel][$lowercaseType]; + } + else + { + return $realLevel; + } + } + + private function _createChild() + { + return new self($this->_headers->newInstance(), + $this->_encoder, $this->_cache); + } + + private function _notifyEncoderChanged(Swift_Mime_ContentEncoder $encoder) + { + foreach ($this->_immediateChildren as $child) + { + $child->encoderChanged($encoder); + } + } + + private function _notifyCharsetChanged($charset) + { + $this->_encoder->charsetChanged($charset); + $this->_headers->charsetChanged($charset); + foreach ($this->_immediateChildren as $child) + { + $child->charsetChanged($charset); + } + } + + private function _sortChildren() + { + $shouldSort = false; + foreach ($this->_immediateChildren as $child) + { + //NOTE: This include alternative parts moved into a related part + if ($child->getNestingLevel() == self::LEVEL_ALTERNATIVE) + { + $shouldSort = true; + break; + } + } + + //Sort in order of preference, if there is one + if ($shouldSort) + { + usort($this->_immediateChildren, array($this, '_childSortAlgorithm')); + } + } + + private function _childSortAlgorithm($a, $b) + { + $typePrefs = array(); + $types = array( + strtolower($a->getContentType()), + strtolower($b->getContentType()) + ); + foreach ($types as $type) + { + $typePrefs[] = (array_key_exists($type, $this->_alternativePartOrder)) + ? $this->_alternativePartOrder[$type] + : (max($this->_alternativePartOrder) + 1); + } + return ($typePrefs[0] >= $typePrefs[1]) ? 1 : -1; + } + + // -- Destructor + + /** + * Empties it's own contents from the cache. + */ + public function __destruct() + { + $this->_cache->clearAll($this->_cacheKey); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/MimePart.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/MimePart.php new file mode 100644 index 0000000..60b6d56 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/MimePart.php @@ -0,0 +1,65 @@ +createDependenciesFor('mime.part') + ); + + if (!isset($charset)) + { + $charset = Swift_DependencyContainer::getInstance() + ->lookup('properties.charset'); + } + $this->setBody($body); + $this->setCharset($charset); + if ($contentType) + { + $this->setContentType($contentType); + } + } + + /** + * Create a new MimePart. + * @param string $body + * @param string $contentType + * @param string $charset + * @return Swift_Mime_MimePart + */ + public static function newInstance($body = null, $contentType = null, + $charset = null) + { + return new self($body, $contentType, $charset); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/NullTransport.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/NullTransport.php new file mode 100644 index 0000000..8c82ee2 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/NullTransport.php @@ -0,0 +1,38 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Pretends messages have been sent, but just ignores them. + * @package Swift + * @author Fabien Potencier + */ +class Swift_NullTransport extends Swift_Transport_NullTransport +{ + /** + * Create a new NullTransport. + */ + public function __construct() + { + call_user_func_array( + array($this, 'Swift_Transport_NullTransport::__construct'), + Swift_DependencyContainer::getInstance() + ->createDependenciesFor('transport.null') + ); + } + + /** + * Create a new NullTransport instance. + * @return Swift_NullTransport + */ + public static function newInstance() + { + return new self(); + } +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/OutputByteStream.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/OutputByteStream.php new file mode 100644 index 0000000..951b838 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/OutputByteStream.php @@ -0,0 +1,41 @@ +setThreshold($threshold); + $this->setSleepTime($sleep); + $this->_sleeper = $sleeper; + } + + /** + * Set the number of emails to send before restarting. + * @param int $threshold + */ + public function setThreshold($threshold) + { + $this->_threshold = $threshold; + } + + /** + * Get the number of emails to send before restarting. + * @return int + */ + public function getThreshold() + { + return $this->_threshold; + } + + /** + * Set the number of seconds to sleep for during a restart. + * @param int $sleep time + */ + public function setSleepTime($sleep) + { + $this->_sleep = $sleep; + } + + /** + * Get the number of seconds to sleep for during a restart. + * @return int + */ + public function getSleepTime() + { + return $this->_sleep; + } + + /** + * Invoked immediately before the Message is sent. + * @param Swift_Events_SendEvent $evt + */ + public function beforeSendPerformed(Swift_Events_SendEvent $evt) + { + } + + /** + * Invoked immediately after the Message is sent. + * @param Swift_Events_SendEvent $evt + */ + public function sendPerformed(Swift_Events_SendEvent $evt) + { + ++$this->_counter; + if ($this->_counter >= $this->_threshold) + { + $transport = $evt->getTransport(); + $transport->stop(); + if ($this->_sleep) + { + $this->sleep($this->_sleep); + } + $transport->start(); + $this->_counter = 0; + } + } + + /** + * Sleep for $seconds. + * @param int $seconds + */ + public function sleep($seconds) + { + if (isset($this->_sleeper)) + { + $this->_sleeper->sleep($seconds); + } + else + { + sleep($seconds); + } + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/.svn/text-base/BandwidthMonitorPlugin.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/.svn/text-base/BandwidthMonitorPlugin.php.svn-base new file mode 100644 index 0000000..501cd80 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/.svn/text-base/BandwidthMonitorPlugin.php.svn-base @@ -0,0 +1,173 @@ +getMessage(); + $message->toByteStream($this); + } + + /** + * Invoked immediately following a command being sent. + * @param Swift_Events_ResponseEvent $evt + */ + public function commandSent(Swift_Events_CommandEvent $evt) + { + $command = $evt->getCommand(); + $this->_out += strlen($command); + } + + /** + * Invoked immediately following a response coming back. + * @param Swift_Events_ResponseEvent $evt + */ + public function responseReceived(Swift_Events_ResponseEvent $evt) + { + $response = $evt->getResponse(); + $this->_in += strlen($response); + } + + /** + * Called when a message is sent so that the outgoing counter can be increased. + * @param string $bytes + */ + public function write($bytes) + { + $this->_out += strlen($bytes); + foreach ($this->_mirrors as $stream) + { + $stream->write($bytes); + } + } + + /** + * Not used. + */ + public function commit() + { + } + + /** + * Attach $is to this stream. + * The stream acts as an observer, receiving all data that is written. + * All {@link write()} and {@link flushBuffers()} operations will be mirrored. + * + * @param Swift_InputByteStream $is + */ + public function bind(Swift_InputByteStream $is) + { + $this->_mirrors[] = $is; + } + + /** + * Remove an already bound stream. + * If $is is not bound, no errors will be raised. + * If the stream currently has any buffered data it will be written to $is + * before unbinding occurs. + * + * @param Swift_InputByteStream $is + */ + public function unbind(Swift_InputByteStream $is) + { + foreach ($this->_mirrors as $k => $stream) + { + if ($is === $stream) + { + unset($this->_mirrors[$k]); + } + } + } + + /** + * Not used. + */ + public function flushBuffers() + { + foreach ($this->_mirrors as $stream) + { + $stream->flushBuffers(); + } + } + + /** + * Get the total number of bytes sent to the server. + * @return int + */ + public function getBytesOut() + { + return $this->_out; + } + + /** + * Get the total number of bytes received from the server. + * @return int + */ + public function getBytesIn() + { + return $this->_in; + } + + /** + * Reset the internal counters to zero. + */ + public function reset() + { + $this->_out = 0; + $this->_in = 0; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/.svn/text-base/BlackholePlugin.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/.svn/text-base/BlackholePlugin.php.svn-base new file mode 100644 index 0000000..64dcc64 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/.svn/text-base/BlackholePlugin.php.svn-base @@ -0,0 +1,37 @@ +cancelBubble(); + } + + /** + * Invoked immediately after the Message is sent. + * + * @param Swift_Events_SendEvent $evt + */ + public function sendPerformed(Swift_Events_SendEvent $evt) + { + } +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/.svn/text-base/DecoratorPlugin.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/.svn/text-base/DecoratorPlugin.php.svn-base new file mode 100644 index 0000000..da1a307 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/.svn/text-base/DecoratorPlugin.php.svn-base @@ -0,0 +1,201 @@ + + * $replacements = array( + * "address1@domain.tld" => array("{a}" => "b", "{c}" => "d"), + * "address2@domain.tld" => array("{a}" => "x", "{c}" => "y") + * ) + * + * + * When using an instance of {@link Swift_Plugins_Decorator_Replacements}, + * the object should return just the array of replacements for the address + * given to {@link Swift_Plugins_Decorator_Replacements::getReplacementsFor()}. + * + * @param mixed $replacements + */ + public function __construct($replacements) + { + if (!($replacements instanceof Swift_Plugins_Decorator_Replacements)) + { + $this->_replacements = (array) $replacements; + } + else + { + $this->_replacements = $replacements; + } + } + + /** + * Invoked immediately before the Message is sent. + * + * @param Swift_Events_SendEvent $evt + */ + public function beforeSendPerformed(Swift_Events_SendEvent $evt) + { + $message = $evt->getMessage(); + $this->_restoreMessage($message); + $to = array_keys($message->getTo()); + $address = array_shift($to); + if ($replacements = $this->getReplacementsFor($address)) + { + $body = $message->getBody(); + $search = array_keys($replacements); + $replace = array_values($replacements); + $bodyReplaced = str_replace( + $search, $replace, $body + ); + if ($body != $bodyReplaced) + { + $this->_originalBody = $body; + $message->setBody($bodyReplaced); + } + $subject = $message->getSubject(); + $subjectReplaced = str_replace( + $search, $replace, $subject + ); + if ($subject != $subjectReplaced) + { + $this->_originalSubject = $subject; + $message->setSubject($subjectReplaced); + } + $children = (array) $message->getChildren(); + foreach ($children as $child) + { + list($type, ) = sscanf($child->getContentType(), '%[^/]/%s'); + if ('text' == $type) + { + $body = $child->getBody(); + $bodyReplaced = str_replace( + $search, $replace, $body + ); + if ($body != $bodyReplaced) + { + $child->setBody($bodyReplaced); + $this->_originalChildBodies[$child->getId()] = $body; + } + } + } + $this->_lastMessage = $message; + } + } + + /** + * Find a map of replacements for the address. + * + * If this plugin was provided with a delegate instance of + * {@link Swift_Plugins_Decorator_Replacements} then the call will be + * delegated to it. Otherwise, it will attempt to find the replacements + * from the array provided in the constructor. + * + * If no replacements can be found, an empty value (NULL) is returned. + * + * @param string $address + * + * @return array + */ + public function getReplacementsFor($address) + { + if ($this->_replacements instanceof Swift_Plugins_Decorator_Replacements) + { + return $this->_replacements->getReplacementsFor($address); + } + else + { + return isset($this->_replacements[$address]) + ? $this->_replacements[$address] + : null + ; + } + } + + /** + * Invoked immediately after the Message is sent. + * + * @param Swift_Events_SendEvent $evt + */ + public function sendPerformed(Swift_Events_SendEvent $evt) + { + $this->_restoreMessage($evt->getMessage()); + } + + // -- Private methods + + /** Restore a changed message back to its original state */ + private function _restoreMessage(Swift_Mime_Message $message) + { + if ($this->_lastMessage === $message) + { + if (isset($this->_originalBody)) + { + $message->setBody($this->_originalBody); + $this->_originalBody = null; + } + if (isset($this->_originalSubject)) + { + $message->setSubject($this->_originalSubject); + $this->_originalSubject = null; + } + if (!empty($this->_originalChildBodies)) + { + $children = (array) $message->getChildren(); + foreach ($children as $child) + { + $id = $child->getId(); + if (array_key_exists($id, $this->_originalChildBodies)) + { + $child->setBody($this->_originalChildBodies[$id]); + } + } + $this->_originalChildBodies = array(); + } + $this->_lastMessage = null; + } + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/.svn/text-base/Logger.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/.svn/text-base/Logger.php.svn-base new file mode 100644 index 0000000..9864da0 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/.svn/text-base/Logger.php.svn-base @@ -0,0 +1,37 @@ +_logger = $logger; + } + + /** + * Add a log entry. + * + * @param string $entry + */ + public function add($entry) + { + $this->_logger->add($entry); + } + + /** + * Clear the log contents. + */ + public function clear() + { + $this->_logger->clear(); + } + + /** + * Get this log as a string. + * + * @return string + */ + public function dump() + { + return $this->_logger->dump(); + } + + /** + * Invoked immediately following a command being sent. + * + * @param Swift_Events_ResponseEvent $evt + */ + public function commandSent(Swift_Events_CommandEvent $evt) + { + $command = $evt->getCommand(); + $this->_logger->add(sprintf(">> %s", $command)); + } + + /** + * Invoked immediately following a response coming back. + * + * @param Swift_Events_ResponseEvent $evt + */ + public function responseReceived(Swift_Events_ResponseEvent $evt) + { + $response = $evt->getResponse(); + $this->_logger->add(sprintf("<< %s", $response)); + } + + /** + * Invoked just before a Transport is started. + * + * @param Swift_Events_TransportChangeEvent $evt + */ + public function beforeTransportStarted(Swift_Events_TransportChangeEvent $evt) + { + $transportName = get_class($evt->getSource()); + $this->_logger->add(sprintf("++ Starting %s", $transportName)); + } + + /** + * Invoked immediately after the Transport is started. + * + * @param Swift_Events_TransportChangeEvent $evt + */ + public function transportStarted(Swift_Events_TransportChangeEvent $evt) + { + $transportName = get_class($evt->getSource()); + $this->_logger->add(sprintf("++ %s started", $transportName)); + } + + /** + * Invoked just before a Transport is stopped. + * + * @param Swift_Events_TransportChangeEvent $evt + */ + public function beforeTransportStopped(Swift_Events_TransportChangeEvent $evt) + { + $transportName = get_class($evt->getSource()); + $this->_logger->add(sprintf("++ Stopping %s", $transportName)); + } + + /** + * Invoked immediately after the Transport is stopped. + * + * @param Swift_Events_TransportChangeEvent $evt + */ + public function transportStopped(Swift_Events_TransportChangeEvent $evt) + { + $transportName = get_class($evt->getSource()); + $this->_logger->add(sprintf("++ %s stopped", $transportName)); + } + + /** + * Invoked as a TransportException is thrown in the Transport system. + * + * @param Swift_Events_TransportExceptionEvent $evt + */ + public function exceptionThrown(Swift_Events_TransportExceptionEvent $evt) + { + $e = $evt->getException(); + $message = $e->getMessage(); + $this->_logger->add(sprintf("!! %s", $message)); + $message .= PHP_EOL; + $message .= 'Log data:' . PHP_EOL; + $message .= $this->_logger->dump(); + $evt->cancelBubble(); + throw new Swift_TransportException($message); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/.svn/text-base/PopBeforeSmtpPlugin.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/.svn/text-base/PopBeforeSmtpPlugin.php.svn-base new file mode 100644 index 0000000..fd1cf46 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/.svn/text-base/PopBeforeSmtpPlugin.php.svn-base @@ -0,0 +1,288 @@ +_host = $host; + $this->_port = $port; + $this->_crypto = $crypto; + } + + /** + * Create a new PopBeforeSmtpPlugin for $host and $port. + * + * @param string $host + * @param int $port + * @param string $cypto as "tls" or "ssl" + * + * @return Swift_Plugins_PopBeforeSmtpPlugin + */ + public static function newInstance($host, $port = 110, $crypto = null) + { + return new self($host, $port, $crypto); + } + + /** + * Set a Pop3Connection to delegate to instead of connecting directly. + * + * @param Swift_Plugins_Pop_Pop3Connection $connection + */ + public function setConnection(Swift_Plugins_Pop_Pop3Connection $connection) + { + $this->_connection = $connection; + return $this; + } + + /** + * Bind this plugin to a specific SMTP transport instance. + * + * @param Swift_Transport + */ + public function bindSmtp(Swift_Transport $smtp) + { + $this->_transport = $smtp; + } + + /** + * Set the connection timeout in seconds (default 10). + * + * @param int $timeout + */ + public function setTimeout($timeout) + { + $this->_timeout = (int) $timeout; + return $this; + } + + /** + * Set the username to use when connecting (if needed). + * + * @param string $username + */ + public function setUsername($username) + { + $this->_username = $username; + return $this; + } + + /** + * Set the password to use when connecting (if needed). + * + * @param string $password + */ + public function setPassword($password) + { + $this->_password = $password; + return $this; + } + + /** + * Connect to the POP3 host and authenticate. + * + * @throws Swift_Plugins_Pop_Pop3Exception if connection fails + */ + public function connect() + { + if (isset($this->_connection)) + { + $this->_connection->connect(); + } + else + { + if (!isset($this->_socket)) + { + if (!$socket = fsockopen( + $this->_getHostString(), $this->_port, $errno, $errstr, $this->_timeout)) + { + throw new Swift_Plugins_Pop_Pop3Exception( + sprintf('Failed to connect to POP3 host [%s]: %s', $this->_host, $errstr) + ); + } + $this->_socket = $socket; + + if (false === $greeting = fgets($this->_socket)) + { + throw new Swift_Plugins_Pop_Pop3Exception( + sprintf('Failed to connect to POP3 host [%s]', trim($greeting)) + ); + } + + $this->_assertOk($greeting); + + if ($this->_username) + { + $this->_command(sprintf("USER %s\r\n", $this->_username)); + $this->_command(sprintf("PASS %s\r\n", $this->_password)); + } + } + } + } + + /** + * Disconnect from the POP3 host. + */ + public function disconnect() + { + if (isset($this->_connection)) + { + $this->_connection->disconnect(); + } + else + { + $this->_command("QUIT\r\n"); + if (!fclose($this->_socket)) + { + throw new Swift_Plugins_Pop_Pop3Exception( + sprintf('POP3 host [%s] connection could not be stopped', $this->_host) + ); + } + $this->_socket = null; + } + } + + /** + * Invoked just before a Transport is started. + * + * @param Swift_Events_TransportChangeEvent $evt + */ + public function beforeTransportStarted(Swift_Events_TransportChangeEvent $evt) + { + if (isset($this->_transport)) + { + if ($this->_transport !== $evt->getTransport()) + { + return; + } + } + + $this->connect(); + $this->disconnect(); + } + + /** + * Not used. + */ + public function transportStarted(Swift_Events_TransportChangeEvent $evt) + { + } + + /** + * Not used. + */ + public function beforeTransportStopped(Swift_Events_TransportChangeEvent $evt) + { + } + + /** + * Not used. + */ + public function transportStopped(Swift_Events_TransportChangeEvent $evt) + { + } + + // -- Private Methods + + private function _command($command) + { + if (!fwrite($this->_socket, $command)) + { + throw new Swift_Plugins_Pop_Pop3Exception( + sprintf('Failed to write command [%s] to POP3 host', trim($command)) + ); + } + + if (false === $response = fgets($this->_socket)) + { + throw new Swift_Plugins_Pop_Pop3Exception( + sprintf('Failed to read from POP3 host after command [%s]', trim($command)) + ); + } + + $this->_assertOk($response); + + return $response; + } + + private function _assertOk($response) + { + if (substr($response, 0, 3) != '+OK') + { + throw new Swift_Plugins_Pop_Pop3Exception( + sprintf('POP3 command failed [%s]', trim($response)) + ); + } + } + + private function _getHostString() + { + $host = $this->_host; + switch (strtolower($this->_crypto)) + { + case 'ssl': + $host = 'ssl://' . $host; + break; + + case 'tls': + $host = 'tls://' . $host; + break; + } + return $host; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/.svn/text-base/RedirectingPlugin.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/.svn/text-base/RedirectingPlugin.php.svn-base new file mode 100644 index 0000000..71a3e60 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/.svn/text-base/RedirectingPlugin.php.svn-base @@ -0,0 +1,109 @@ +_recipient = $recipient; + } + + /** + * Set the recipient of all messages. + * @param int $threshold + */ + public function setRecipient($recipient) + { + $this->_recipient = $recipient; + } + + /** + * Get the recipient of all messages. + * @return int + */ + public function getRecipient() + { + return $this->_recipient; + } + + /** + * Invoked immediately before the Message is sent. + * @param Swift_Events_SendEvent $evt + */ + public function beforeSendPerformed(Swift_Events_SendEvent $evt) + { + $message = $evt->getMessage(); + $headers = $message->getHeaders(); + + // save current recipients + $headers->addMailboxHeader('X-Swift-To', $message->getTo()); + $headers->addMailboxHeader('X-Swift-Cc', $message->getCc()); + $headers->addMailboxHeader('X-Swift-Bcc', $message->getBcc()); + + // replace them with the one to send to + $message->setTo($this->_recipient); + $headers->removeAll('Cc'); + $headers->removeAll('Bcc'); + } + + /** + * Invoked immediately after the Message is sent. + * + * @param Swift_Events_SendEvent $evt + */ + public function sendPerformed(Swift_Events_SendEvent $evt) + { + $this->_restoreMessage($evt->getMessage()); + } + + // -- Private methods + + private function _restoreMessage(Swift_Mime_Message $message) + { + // restore original headers + $headers = $message->getHeaders(); + + if ($headers->has('X-Swift-To')) + { + $message->setTo($headers->get('X-Swift-To')->getNameAddresses()); + $headers->removeAll('X-Swift-To'); + } + + if ($headers->has('X-Swift-Cc')) + { + $message->setCc($headers->get('X-Swift-Cc')->getNameAddresses()); + $headers->removeAll('X-Swift-Cc'); + } + + if ($headers->has('X-Swift-Bcc')) + { + $message->setBcc($headers->get('X-Swift-Bcc')->getNameAddresses()); + $headers->removeAll('X-Swift-Bcc'); + } + } +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/.svn/text-base/Reporter.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/.svn/text-base/Reporter.php.svn-base new file mode 100644 index 0000000..00d5765 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/.svn/text-base/Reporter.php.svn-base @@ -0,0 +1,36 @@ +_reporter = $reporter; + } + + /** + * Not used. + */ + public function beforeSendPerformed(Swift_Events_SendEvent $evt) + { + } + + /** + * Invoked immediately after the Message is sent. + * @param Swift_Events_SendEvent $evt + */ + public function sendPerformed(Swift_Events_SendEvent $evt) + { + $message = $evt->getMessage(); + $failures = array_flip($evt->getFailedRecipients()); + foreach ((array) $message->getTo() as $address => $null) + { + $this->_reporter->notify( + $message, $address, (array_key_exists($address, $failures) + ? Swift_Plugins_Reporter::RESULT_FAIL + : Swift_Plugins_Reporter::RESULT_PASS) + ); + } + foreach ((array) $message->getCc() as $address => $null) + { + $this->_reporter->notify( + $message, $address, (array_key_exists($address, $failures) + ? Swift_Plugins_Reporter::RESULT_FAIL + : Swift_Plugins_Reporter::RESULT_PASS) + ); + } + foreach ((array) $message->getBcc() as $address => $null) + { + $this->_reporter->notify( + $message, $address, (array_key_exists($address, $failures) + ? Swift_Plugins_Reporter::RESULT_FAIL + : Swift_Plugins_Reporter::RESULT_PASS) + ); + } + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/.svn/text-base/Sleeper.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/.svn/text-base/Sleeper.php.svn-base new file mode 100644 index 0000000..148cbd3 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/.svn/text-base/Sleeper.php.svn-base @@ -0,0 +1,26 @@ +_rate = $rate; + $this->_mode = $mode; + $this->_sleeper = $sleeper; + $this->_timer = $timer; + } + + /** + * Invoked immediately before the Message is sent. + * @param Swift_Events_SendEvent $evt + */ + public function beforeSendPerformed(Swift_Events_SendEvent $evt) + { + $time = $this->getTimestamp(); + if (!isset($this->_start)) + { + $this->_start = $time; + } + $duration = $time - $this->_start; + + if (self::BYTES_PER_MINUTE == $this->_mode) + { + $sleep = $this->_throttleBytesPerMinute($duration); + } + else + { + $sleep = $this->_throttleMessagesPerMinute($duration); + } + + if ($sleep > 0) + { + $this->sleep($sleep); + } + } + + /** + * Invoked when a Message is sent. + * @param Swift_Events_SendEvent $evt + */ + public function sendPerformed(Swift_Events_SendEvent $evt) + { + parent::sendPerformed($evt); + ++$this->_messages; + } + + /** + * Sleep for $seconds. + * @param int $seconds + */ + public function sleep($seconds) + { + if (isset($this->_sleeper)) + { + $this->_sleeper->sleep($seconds); + } + else + { + sleep($seconds); + } + } + + /** + * Get the current UNIX timestamp + * @return int + */ + public function getTimestamp() + { + if (isset($this->_timer)) + { + return $this->_timer->getTimestamp(); + } + else + { + return time(); + } + } + + // -- Private methods + + /** + * Get a number of seconds to sleep for. + * @param int $timePassed + * @return int + * @access private + */ + private function _throttleBytesPerMinute($timePassed) + { + $expectedDuration = $this->getBytesOut() / ($this->_rate / 60); + return (int) ceil($expectedDuration - $timePassed); + } + + /** + * Get a number of seconds to sleep for. + * @param int $timePassed + * @return int + * @access private + */ + private function _throttleMessagesPerMinute($timePassed) + { + $expectedDuration = $this->_messages / ($this->_rate / 60); + return (int) ceil($expectedDuration - $timePassed); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/.svn/text-base/Timer.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/.svn/text-base/Timer.php.svn-base new file mode 100644 index 0000000..92207bf --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/.svn/text-base/Timer.php.svn-base @@ -0,0 +1,26 @@ +setThreshold($threshold); + $this->setSleepTime($sleep); + $this->_sleeper = $sleeper; + } + + /** + * Set the number of emails to send before restarting. + * @param int $threshold + */ + public function setThreshold($threshold) + { + $this->_threshold = $threshold; + } + + /** + * Get the number of emails to send before restarting. + * @return int + */ + public function getThreshold() + { + return $this->_threshold; + } + + /** + * Set the number of seconds to sleep for during a restart. + * @param int $sleep time + */ + public function setSleepTime($sleep) + { + $this->_sleep = $sleep; + } + + /** + * Get the number of seconds to sleep for during a restart. + * @return int + */ + public function getSleepTime() + { + return $this->_sleep; + } + + /** + * Invoked immediately before the Message is sent. + * @param Swift_Events_SendEvent $evt + */ + public function beforeSendPerformed(Swift_Events_SendEvent $evt) + { + } + + /** + * Invoked immediately after the Message is sent. + * @param Swift_Events_SendEvent $evt + */ + public function sendPerformed(Swift_Events_SendEvent $evt) + { + ++$this->_counter; + if ($this->_counter >= $this->_threshold) + { + $transport = $evt->getTransport(); + $transport->stop(); + if ($this->_sleep) + { + $this->sleep($this->_sleep); + } + $transport->start(); + $this->_counter = 0; + } + } + + /** + * Sleep for $seconds. + * @param int $seconds + */ + public function sleep($seconds) + { + if (isset($this->_sleeper)) + { + $this->_sleeper->sleep($seconds); + } + else + { + sleep($seconds); + } + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/BandwidthMonitorPlugin.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/BandwidthMonitorPlugin.php new file mode 100644 index 0000000..501cd80 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/BandwidthMonitorPlugin.php @@ -0,0 +1,173 @@ +getMessage(); + $message->toByteStream($this); + } + + /** + * Invoked immediately following a command being sent. + * @param Swift_Events_ResponseEvent $evt + */ + public function commandSent(Swift_Events_CommandEvent $evt) + { + $command = $evt->getCommand(); + $this->_out += strlen($command); + } + + /** + * Invoked immediately following a response coming back. + * @param Swift_Events_ResponseEvent $evt + */ + public function responseReceived(Swift_Events_ResponseEvent $evt) + { + $response = $evt->getResponse(); + $this->_in += strlen($response); + } + + /** + * Called when a message is sent so that the outgoing counter can be increased. + * @param string $bytes + */ + public function write($bytes) + { + $this->_out += strlen($bytes); + foreach ($this->_mirrors as $stream) + { + $stream->write($bytes); + } + } + + /** + * Not used. + */ + public function commit() + { + } + + /** + * Attach $is to this stream. + * The stream acts as an observer, receiving all data that is written. + * All {@link write()} and {@link flushBuffers()} operations will be mirrored. + * + * @param Swift_InputByteStream $is + */ + public function bind(Swift_InputByteStream $is) + { + $this->_mirrors[] = $is; + } + + /** + * Remove an already bound stream. + * If $is is not bound, no errors will be raised. + * If the stream currently has any buffered data it will be written to $is + * before unbinding occurs. + * + * @param Swift_InputByteStream $is + */ + public function unbind(Swift_InputByteStream $is) + { + foreach ($this->_mirrors as $k => $stream) + { + if ($is === $stream) + { + unset($this->_mirrors[$k]); + } + } + } + + /** + * Not used. + */ + public function flushBuffers() + { + foreach ($this->_mirrors as $stream) + { + $stream->flushBuffers(); + } + } + + /** + * Get the total number of bytes sent to the server. + * @return int + */ + public function getBytesOut() + { + return $this->_out; + } + + /** + * Get the total number of bytes received from the server. + * @return int + */ + public function getBytesIn() + { + return $this->_in; + } + + /** + * Reset the internal counters to zero. + */ + public function reset() + { + $this->_out = 0; + $this->_in = 0; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/BlackholePlugin.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/BlackholePlugin.php new file mode 100644 index 0000000..64dcc64 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/BlackholePlugin.php @@ -0,0 +1,37 @@ +cancelBubble(); + } + + /** + * Invoked immediately after the Message is sent. + * + * @param Swift_Events_SendEvent $evt + */ + public function sendPerformed(Swift_Events_SendEvent $evt) + { + } +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Decorator/.svn/all-wcprops b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Decorator/.svn/all-wcprops new file mode 100644 index 0000000..f2423d5 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Decorator/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 83 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Plugins/Decorator +END +Replacements.php +K 25 +svn:wc:ra_dav:version-url +V 100 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Plugins/Decorator/Replacements.php +END diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Decorator/.svn/entries b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Decorator/.svn/entries new file mode 100644 index 0000000..cf947ca --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Decorator/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Plugins/Decorator +http://svn.symfony-project.com + + + +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +Replacements.php +file + + + + +2012-05-10T18:41:48.353549Z +678cbb7201252d38180fe848c2031fdc +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + + + + + + + + +793 + diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Decorator/.svn/text-base/Replacements.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Decorator/.svn/text-base/Replacements.php.svn-base new file mode 100644 index 0000000..9735d0a --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Decorator/.svn/text-base/Replacements.php.svn-base @@ -0,0 +1,36 @@ + + * $replacements = array( + * "address1@domain.tld" => array("{a}" => "b", "{c}" => "d"), + * "address2@domain.tld" => array("{a}" => "x", "{c}" => "y") + * ) + * + * + * When using an instance of {@link Swift_Plugins_Decorator_Replacements}, + * the object should return just the array of replacements for the address + * given to {@link Swift_Plugins_Decorator_Replacements::getReplacementsFor()}. + * + * @param mixed $replacements + */ + public function __construct($replacements) + { + if (!($replacements instanceof Swift_Plugins_Decorator_Replacements)) + { + $this->_replacements = (array) $replacements; + } + else + { + $this->_replacements = $replacements; + } + } + + /** + * Invoked immediately before the Message is sent. + * + * @param Swift_Events_SendEvent $evt + */ + public function beforeSendPerformed(Swift_Events_SendEvent $evt) + { + $message = $evt->getMessage(); + $this->_restoreMessage($message); + $to = array_keys($message->getTo()); + $address = array_shift($to); + if ($replacements = $this->getReplacementsFor($address)) + { + $body = $message->getBody(); + $search = array_keys($replacements); + $replace = array_values($replacements); + $bodyReplaced = str_replace( + $search, $replace, $body + ); + if ($body != $bodyReplaced) + { + $this->_originalBody = $body; + $message->setBody($bodyReplaced); + } + $subject = $message->getSubject(); + $subjectReplaced = str_replace( + $search, $replace, $subject + ); + if ($subject != $subjectReplaced) + { + $this->_originalSubject = $subject; + $message->setSubject($subjectReplaced); + } + $children = (array) $message->getChildren(); + foreach ($children as $child) + { + list($type, ) = sscanf($child->getContentType(), '%[^/]/%s'); + if ('text' == $type) + { + $body = $child->getBody(); + $bodyReplaced = str_replace( + $search, $replace, $body + ); + if ($body != $bodyReplaced) + { + $child->setBody($bodyReplaced); + $this->_originalChildBodies[$child->getId()] = $body; + } + } + } + $this->_lastMessage = $message; + } + } + + /** + * Find a map of replacements for the address. + * + * If this plugin was provided with a delegate instance of + * {@link Swift_Plugins_Decorator_Replacements} then the call will be + * delegated to it. Otherwise, it will attempt to find the replacements + * from the array provided in the constructor. + * + * If no replacements can be found, an empty value (NULL) is returned. + * + * @param string $address + * + * @return array + */ + public function getReplacementsFor($address) + { + if ($this->_replacements instanceof Swift_Plugins_Decorator_Replacements) + { + return $this->_replacements->getReplacementsFor($address); + } + else + { + return isset($this->_replacements[$address]) + ? $this->_replacements[$address] + : null + ; + } + } + + /** + * Invoked immediately after the Message is sent. + * + * @param Swift_Events_SendEvent $evt + */ + public function sendPerformed(Swift_Events_SendEvent $evt) + { + $this->_restoreMessage($evt->getMessage()); + } + + // -- Private methods + + /** Restore a changed message back to its original state */ + private function _restoreMessage(Swift_Mime_Message $message) + { + if ($this->_lastMessage === $message) + { + if (isset($this->_originalBody)) + { + $message->setBody($this->_originalBody); + $this->_originalBody = null; + } + if (isset($this->_originalSubject)) + { + $message->setSubject($this->_originalSubject); + $this->_originalSubject = null; + } + if (!empty($this->_originalChildBodies)) + { + $children = (array) $message->getChildren(); + foreach ($children as $child) + { + $id = $child->getId(); + if (array_key_exists($id, $this->_originalChildBodies)) + { + $child->setBody($this->_originalChildBodies[$id]); + } + } + $this->_originalChildBodies = array(); + } + $this->_lastMessage = null; + } + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Logger.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Logger.php new file mode 100644 index 0000000..9864da0 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Logger.php @@ -0,0 +1,37 @@ +_logger = $logger; + } + + /** + * Add a log entry. + * + * @param string $entry + */ + public function add($entry) + { + $this->_logger->add($entry); + } + + /** + * Clear the log contents. + */ + public function clear() + { + $this->_logger->clear(); + } + + /** + * Get this log as a string. + * + * @return string + */ + public function dump() + { + return $this->_logger->dump(); + } + + /** + * Invoked immediately following a command being sent. + * + * @param Swift_Events_ResponseEvent $evt + */ + public function commandSent(Swift_Events_CommandEvent $evt) + { + $command = $evt->getCommand(); + $this->_logger->add(sprintf(">> %s", $command)); + } + + /** + * Invoked immediately following a response coming back. + * + * @param Swift_Events_ResponseEvent $evt + */ + public function responseReceived(Swift_Events_ResponseEvent $evt) + { + $response = $evt->getResponse(); + $this->_logger->add(sprintf("<< %s", $response)); + } + + /** + * Invoked just before a Transport is started. + * + * @param Swift_Events_TransportChangeEvent $evt + */ + public function beforeTransportStarted(Swift_Events_TransportChangeEvent $evt) + { + $transportName = get_class($evt->getSource()); + $this->_logger->add(sprintf("++ Starting %s", $transportName)); + } + + /** + * Invoked immediately after the Transport is started. + * + * @param Swift_Events_TransportChangeEvent $evt + */ + public function transportStarted(Swift_Events_TransportChangeEvent $evt) + { + $transportName = get_class($evt->getSource()); + $this->_logger->add(sprintf("++ %s started", $transportName)); + } + + /** + * Invoked just before a Transport is stopped. + * + * @param Swift_Events_TransportChangeEvent $evt + */ + public function beforeTransportStopped(Swift_Events_TransportChangeEvent $evt) + { + $transportName = get_class($evt->getSource()); + $this->_logger->add(sprintf("++ Stopping %s", $transportName)); + } + + /** + * Invoked immediately after the Transport is stopped. + * + * @param Swift_Events_TransportChangeEvent $evt + */ + public function transportStopped(Swift_Events_TransportChangeEvent $evt) + { + $transportName = get_class($evt->getSource()); + $this->_logger->add(sprintf("++ %s stopped", $transportName)); + } + + /** + * Invoked as a TransportException is thrown in the Transport system. + * + * @param Swift_Events_TransportExceptionEvent $evt + */ + public function exceptionThrown(Swift_Events_TransportExceptionEvent $evt) + { + $e = $evt->getException(); + $message = $e->getMessage(); + $this->_logger->add(sprintf("!! %s", $message)); + $message .= PHP_EOL; + $message .= 'Log data:' . PHP_EOL; + $message .= $this->_logger->dump(); + $evt->cancelBubble(); + throw new Swift_TransportException($message); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Loggers/.svn/all-wcprops b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Loggers/.svn/all-wcprops new file mode 100644 index 0000000..020963b --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Loggers/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 81 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Plugins/Loggers +END +ArrayLogger.php +K 25 +svn:wc:ra_dav:version-url +V 97 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Plugins/Loggers/ArrayLogger.php +END +EchoLogger.php +K 25 +svn:wc:ra_dav:version-url +V 96 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Plugins/Loggers/EchoLogger.php +END diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Loggers/.svn/entries b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Loggers/.svn/entries new file mode 100644 index 0000000..f9f9140 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Loggers/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Plugins/Loggers +http://svn.symfony-project.com + + + +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +ArrayLogger.php +file + + + + +2012-05-10T18:41:50.425551Z +c8733165f8f37aea8120400b64b3c4f1 +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + + + + + + + + +1234 + +EchoLogger.php +file + + + + +2012-05-10T18:41:50.457551Z +45f9594ec44ca5bb9a929be545da9a66 +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + + + + + + + + +1061 + diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Loggers/.svn/text-base/ArrayLogger.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Loggers/.svn/text-base/ArrayLogger.php.svn-base new file mode 100644 index 0000000..930eca2 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Loggers/.svn/text-base/ArrayLogger.php.svn-base @@ -0,0 +1,73 @@ +_size = $size; + } + + /** + * Add a log entry. + * @param string $entry + */ + public function add($entry) + { + $this->_log[] = $entry; + while (count($this->_log) > $this->_size) + { + array_shift($this->_log); + } + } + + /** + * Clear the log contents. + */ + public function clear() + { + $this->_log = array(); + } + + /** + * Get this log as a string. + * @return string + */ + public function dump() + { + return implode(PHP_EOL, $this->_log); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Loggers/.svn/text-base/EchoLogger.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Loggers/.svn/text-base/EchoLogger.php.svn-base new file mode 100644 index 0000000..83dd54b --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Loggers/.svn/text-base/EchoLogger.php.svn-base @@ -0,0 +1,64 @@ +_isHtml = $isHtml; + } + + /** + * Add a log entry. + * @param string $entry + */ + public function add($entry) + { + if ($this->_isHtml) + { + printf('%s%s%s', htmlspecialchars($entry, ENT_QUOTES), '
    ', PHP_EOL); + } + else + { + printf('%s%s', $entry, PHP_EOL); + } + } + + /** + * Not implemented. + */ + public function clear() + { + } + + /** + * Not implemented. + */ + public function dump() + { + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Loggers/ArrayLogger.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Loggers/ArrayLogger.php new file mode 100644 index 0000000..930eca2 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Loggers/ArrayLogger.php @@ -0,0 +1,73 @@ +_size = $size; + } + + /** + * Add a log entry. + * @param string $entry + */ + public function add($entry) + { + $this->_log[] = $entry; + while (count($this->_log) > $this->_size) + { + array_shift($this->_log); + } + } + + /** + * Clear the log contents. + */ + public function clear() + { + $this->_log = array(); + } + + /** + * Get this log as a string. + * @return string + */ + public function dump() + { + return implode(PHP_EOL, $this->_log); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Loggers/EchoLogger.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Loggers/EchoLogger.php new file mode 100644 index 0000000..83dd54b --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Loggers/EchoLogger.php @@ -0,0 +1,64 @@ +_isHtml = $isHtml; + } + + /** + * Add a log entry. + * @param string $entry + */ + public function add($entry) + { + if ($this->_isHtml) + { + printf('%s%s%s', htmlspecialchars($entry, ENT_QUOTES), '
    ', PHP_EOL); + } + else + { + printf('%s%s', $entry, PHP_EOL); + } + } + + /** + * Not implemented. + */ + public function clear() + { + } + + /** + * Not implemented. + */ + public function dump() + { + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Pop/.svn/all-wcprops b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Pop/.svn/all-wcprops new file mode 100644 index 0000000..9722a9b --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Pop/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 77 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Plugins/Pop +END +Pop3Exception.php +K 25 +svn:wc:ra_dav:version-url +V 95 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Plugins/Pop/Pop3Exception.php +END +Pop3Connection.php +K 25 +svn:wc:ra_dav:version-url +V 96 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Plugins/Pop/Pop3Connection.php +END diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Pop/.svn/entries b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Pop/.svn/entries new file mode 100644 index 0000000..908f0b8 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Pop/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Plugins/Pop +http://svn.symfony-project.com + + + +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +Pop3Exception.php +file + + + + +2012-05-10T18:41:50.122417Z +4d439b5ad54559415df76378bc606d3c +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + + + + + + + + +654 + +Pop3Connection.php +file + + + + +2012-05-10T18:41:50.122417Z +cb50d4a1d4398078239ef886eaa6d27a +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + + + + + + + + +750 + diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Pop/.svn/text-base/Pop3Connection.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Pop/.svn/text-base/Pop3Connection.php.svn-base new file mode 100644 index 0000000..1c96dcf --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Pop/.svn/text-base/Pop3Connection.php.svn-base @@ -0,0 +1,36 @@ +_host = $host; + $this->_port = $port; + $this->_crypto = $crypto; + } + + /** + * Create a new PopBeforeSmtpPlugin for $host and $port. + * + * @param string $host + * @param int $port + * @param string $cypto as "tls" or "ssl" + * + * @return Swift_Plugins_PopBeforeSmtpPlugin + */ + public static function newInstance($host, $port = 110, $crypto = null) + { + return new self($host, $port, $crypto); + } + + /** + * Set a Pop3Connection to delegate to instead of connecting directly. + * + * @param Swift_Plugins_Pop_Pop3Connection $connection + */ + public function setConnection(Swift_Plugins_Pop_Pop3Connection $connection) + { + $this->_connection = $connection; + return $this; + } + + /** + * Bind this plugin to a specific SMTP transport instance. + * + * @param Swift_Transport + */ + public function bindSmtp(Swift_Transport $smtp) + { + $this->_transport = $smtp; + } + + /** + * Set the connection timeout in seconds (default 10). + * + * @param int $timeout + */ + public function setTimeout($timeout) + { + $this->_timeout = (int) $timeout; + return $this; + } + + /** + * Set the username to use when connecting (if needed). + * + * @param string $username + */ + public function setUsername($username) + { + $this->_username = $username; + return $this; + } + + /** + * Set the password to use when connecting (if needed). + * + * @param string $password + */ + public function setPassword($password) + { + $this->_password = $password; + return $this; + } + + /** + * Connect to the POP3 host and authenticate. + * + * @throws Swift_Plugins_Pop_Pop3Exception if connection fails + */ + public function connect() + { + if (isset($this->_connection)) + { + $this->_connection->connect(); + } + else + { + if (!isset($this->_socket)) + { + if (!$socket = fsockopen( + $this->_getHostString(), $this->_port, $errno, $errstr, $this->_timeout)) + { + throw new Swift_Plugins_Pop_Pop3Exception( + sprintf('Failed to connect to POP3 host [%s]: %s', $this->_host, $errstr) + ); + } + $this->_socket = $socket; + + if (false === $greeting = fgets($this->_socket)) + { + throw new Swift_Plugins_Pop_Pop3Exception( + sprintf('Failed to connect to POP3 host [%s]', trim($greeting)) + ); + } + + $this->_assertOk($greeting); + + if ($this->_username) + { + $this->_command(sprintf("USER %s\r\n", $this->_username)); + $this->_command(sprintf("PASS %s\r\n", $this->_password)); + } + } + } + } + + /** + * Disconnect from the POP3 host. + */ + public function disconnect() + { + if (isset($this->_connection)) + { + $this->_connection->disconnect(); + } + else + { + $this->_command("QUIT\r\n"); + if (!fclose($this->_socket)) + { + throw new Swift_Plugins_Pop_Pop3Exception( + sprintf('POP3 host [%s] connection could not be stopped', $this->_host) + ); + } + $this->_socket = null; + } + } + + /** + * Invoked just before a Transport is started. + * + * @param Swift_Events_TransportChangeEvent $evt + */ + public function beforeTransportStarted(Swift_Events_TransportChangeEvent $evt) + { + if (isset($this->_transport)) + { + if ($this->_transport !== $evt->getTransport()) + { + return; + } + } + + $this->connect(); + $this->disconnect(); + } + + /** + * Not used. + */ + public function transportStarted(Swift_Events_TransportChangeEvent $evt) + { + } + + /** + * Not used. + */ + public function beforeTransportStopped(Swift_Events_TransportChangeEvent $evt) + { + } + + /** + * Not used. + */ + public function transportStopped(Swift_Events_TransportChangeEvent $evt) + { + } + + // -- Private Methods + + private function _command($command) + { + if (!fwrite($this->_socket, $command)) + { + throw new Swift_Plugins_Pop_Pop3Exception( + sprintf('Failed to write command [%s] to POP3 host', trim($command)) + ); + } + + if (false === $response = fgets($this->_socket)) + { + throw new Swift_Plugins_Pop_Pop3Exception( + sprintf('Failed to read from POP3 host after command [%s]', trim($command)) + ); + } + + $this->_assertOk($response); + + return $response; + } + + private function _assertOk($response) + { + if (substr($response, 0, 3) != '+OK') + { + throw new Swift_Plugins_Pop_Pop3Exception( + sprintf('POP3 command failed [%s]', trim($response)) + ); + } + } + + private function _getHostString() + { + $host = $this->_host; + switch (strtolower($this->_crypto)) + { + case 'ssl': + $host = 'ssl://' . $host; + break; + + case 'tls': + $host = 'tls://' . $host; + break; + } + return $host; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/RedirectingPlugin.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/RedirectingPlugin.php new file mode 100644 index 0000000..71a3e60 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/RedirectingPlugin.php @@ -0,0 +1,109 @@ +_recipient = $recipient; + } + + /** + * Set the recipient of all messages. + * @param int $threshold + */ + public function setRecipient($recipient) + { + $this->_recipient = $recipient; + } + + /** + * Get the recipient of all messages. + * @return int + */ + public function getRecipient() + { + return $this->_recipient; + } + + /** + * Invoked immediately before the Message is sent. + * @param Swift_Events_SendEvent $evt + */ + public function beforeSendPerformed(Swift_Events_SendEvent $evt) + { + $message = $evt->getMessage(); + $headers = $message->getHeaders(); + + // save current recipients + $headers->addMailboxHeader('X-Swift-To', $message->getTo()); + $headers->addMailboxHeader('X-Swift-Cc', $message->getCc()); + $headers->addMailboxHeader('X-Swift-Bcc', $message->getBcc()); + + // replace them with the one to send to + $message->setTo($this->_recipient); + $headers->removeAll('Cc'); + $headers->removeAll('Bcc'); + } + + /** + * Invoked immediately after the Message is sent. + * + * @param Swift_Events_SendEvent $evt + */ + public function sendPerformed(Swift_Events_SendEvent $evt) + { + $this->_restoreMessage($evt->getMessage()); + } + + // -- Private methods + + private function _restoreMessage(Swift_Mime_Message $message) + { + // restore original headers + $headers = $message->getHeaders(); + + if ($headers->has('X-Swift-To')) + { + $message->setTo($headers->get('X-Swift-To')->getNameAddresses()); + $headers->removeAll('X-Swift-To'); + } + + if ($headers->has('X-Swift-Cc')) + { + $message->setCc($headers->get('X-Swift-Cc')->getNameAddresses()); + $headers->removeAll('X-Swift-Cc'); + } + + if ($headers->has('X-Swift-Bcc')) + { + $message->setBcc($headers->get('X-Swift-Bcc')->getNameAddresses()); + $headers->removeAll('X-Swift-Bcc'); + } + } +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Reporter.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Reporter.php new file mode 100644 index 0000000..00d5765 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Reporter.php @@ -0,0 +1,36 @@ +_reporter = $reporter; + } + + /** + * Not used. + */ + public function beforeSendPerformed(Swift_Events_SendEvent $evt) + { + } + + /** + * Invoked immediately after the Message is sent. + * @param Swift_Events_SendEvent $evt + */ + public function sendPerformed(Swift_Events_SendEvent $evt) + { + $message = $evt->getMessage(); + $failures = array_flip($evt->getFailedRecipients()); + foreach ((array) $message->getTo() as $address => $null) + { + $this->_reporter->notify( + $message, $address, (array_key_exists($address, $failures) + ? Swift_Plugins_Reporter::RESULT_FAIL + : Swift_Plugins_Reporter::RESULT_PASS) + ); + } + foreach ((array) $message->getCc() as $address => $null) + { + $this->_reporter->notify( + $message, $address, (array_key_exists($address, $failures) + ? Swift_Plugins_Reporter::RESULT_FAIL + : Swift_Plugins_Reporter::RESULT_PASS) + ); + } + foreach ((array) $message->getBcc() as $address => $null) + { + $this->_reporter->notify( + $message, $address, (array_key_exists($address, $failures) + ? Swift_Plugins_Reporter::RESULT_FAIL + : Swift_Plugins_Reporter::RESULT_PASS) + ); + } + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Reporters/.svn/all-wcprops b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Reporters/.svn/all-wcprops new file mode 100644 index 0000000..8970fa6 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Reporters/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 83 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Plugins/Reporters +END +HitReporter.php +K 25 +svn:wc:ra_dav:version-url +V 99 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Plugins/Reporters/HitReporter.php +END +HtmlReporter.php +K 25 +svn:wc:ra_dav:version-url +V 100 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Plugins/Reporters/HtmlReporter.php +END diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Reporters/.svn/entries b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Reporters/.svn/entries new file mode 100644 index 0000000..82d0ffe --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Reporters/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Plugins/Reporters +http://svn.symfony-project.com + + + +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +HitReporter.php +file + + + + +2012-05-10T18:41:48.545760Z +f69713612a29ba5e797ff719aac0baf8 +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + + + + + + + + +1449 + +HtmlReporter.php +file + + + + +2012-05-10T18:41:48.549552Z +609c7fac7ae91cf6135d70c7cab23b19 +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + + + + + + + + +1241 + diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Reporters/.svn/text-base/HitReporter.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Reporters/.svn/text-base/HitReporter.php.svn-base new file mode 100644 index 0000000..0022f5e --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Reporters/.svn/text-base/HitReporter.php.svn-base @@ -0,0 +1,63 @@ +_failures_cache[$address])) + { + $this->_failures[] = $address; + $this->_failures_cache[$address] = true; + } + } + + /** + * Get an array of addresses for which delivery failed. + * @return array + */ + public function getFailedRecipients() + { + return $this->_failures; + } + + /** + * Clear the buffer (empty the list). + */ + public function clear() + { + $this->_failures = $this->_failures_cache = array(); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Reporters/.svn/text-base/HtmlReporter.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Reporters/.svn/text-base/HtmlReporter.php.svn-base new file mode 100644 index 0000000..7370078 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Reporters/.svn/text-base/HtmlReporter.php.svn-base @@ -0,0 +1,47 @@ +" . PHP_EOL; + echo "PASS " . $address . PHP_EOL; + echo "" . PHP_EOL; + flush(); + } + else + { + echo "
    " . PHP_EOL; + echo "FAIL " . $address . PHP_EOL; + echo "
    " . PHP_EOL; + flush(); + } + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Reporters/HitReporter.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Reporters/HitReporter.php new file mode 100644 index 0000000..0022f5e --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Reporters/HitReporter.php @@ -0,0 +1,63 @@ +_failures_cache[$address])) + { + $this->_failures[] = $address; + $this->_failures_cache[$address] = true; + } + } + + /** + * Get an array of addresses for which delivery failed. + * @return array + */ + public function getFailedRecipients() + { + return $this->_failures; + } + + /** + * Clear the buffer (empty the list). + */ + public function clear() + { + $this->_failures = $this->_failures_cache = array(); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Reporters/HtmlReporter.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Reporters/HtmlReporter.php new file mode 100644 index 0000000..7370078 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Reporters/HtmlReporter.php @@ -0,0 +1,47 @@ +" . PHP_EOL; + echo "PASS " . $address . PHP_EOL; + echo "" . PHP_EOL; + flush(); + } + else + { + echo "
    " . PHP_EOL; + echo "FAIL " . $address . PHP_EOL; + echo "
    " . PHP_EOL; + flush(); + } + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Sleeper.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Sleeper.php new file mode 100644 index 0000000..148cbd3 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Sleeper.php @@ -0,0 +1,26 @@ +_rate = $rate; + $this->_mode = $mode; + $this->_sleeper = $sleeper; + $this->_timer = $timer; + } + + /** + * Invoked immediately before the Message is sent. + * @param Swift_Events_SendEvent $evt + */ + public function beforeSendPerformed(Swift_Events_SendEvent $evt) + { + $time = $this->getTimestamp(); + if (!isset($this->_start)) + { + $this->_start = $time; + } + $duration = $time - $this->_start; + + if (self::BYTES_PER_MINUTE == $this->_mode) + { + $sleep = $this->_throttleBytesPerMinute($duration); + } + else + { + $sleep = $this->_throttleMessagesPerMinute($duration); + } + + if ($sleep > 0) + { + $this->sleep($sleep); + } + } + + /** + * Invoked when a Message is sent. + * @param Swift_Events_SendEvent $evt + */ + public function sendPerformed(Swift_Events_SendEvent $evt) + { + parent::sendPerformed($evt); + ++$this->_messages; + } + + /** + * Sleep for $seconds. + * @param int $seconds + */ + public function sleep($seconds) + { + if (isset($this->_sleeper)) + { + $this->_sleeper->sleep($seconds); + } + else + { + sleep($seconds); + } + } + + /** + * Get the current UNIX timestamp + * @return int + */ + public function getTimestamp() + { + if (isset($this->_timer)) + { + return $this->_timer->getTimestamp(); + } + else + { + return time(); + } + } + + // -- Private methods + + /** + * Get a number of seconds to sleep for. + * @param int $timePassed + * @return int + * @access private + */ + private function _throttleBytesPerMinute($timePassed) + { + $expectedDuration = $this->getBytesOut() / ($this->_rate / 60); + return (int) ceil($expectedDuration - $timePassed); + } + + /** + * Get a number of seconds to sleep for. + * @param int $timePassed + * @return int + * @access private + */ + private function _throttleMessagesPerMinute($timePassed) + { + $expectedDuration = $this->_messages / ($this->_rate / 60); + return (int) ceil($expectedDuration - $timePassed); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Timer.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Timer.php new file mode 100644 index 0000000..92207bf --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Plugins/Timer.php @@ -0,0 +1,26 @@ +register('properties.charset')->asValue($charset); + return $this; + } + + /** + * Set the directory where temporary files can be saved. + * @param string $dir + * @return Swift_Preferences + */ + public function setTempDir($dir) + { + Swift_DependencyContainer::getInstance() + ->register('tempdir')->asValue($dir); + return $this; + } + + /** + * Set the type of cache to use (i.e. "disk" or "array"). + * @param string $type + * @return Swift_Preferences + */ + public function setCacheType($type) + { + Swift_DependencyContainer::getInstance() + ->register('cache')->asAliasOf(sprintf('cache.%s', $type)); + return $this; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/ReplacementFilterFactory.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/ReplacementFilterFactory.php new file mode 100644 index 0000000..db29e6d --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/ReplacementFilterFactory.php @@ -0,0 +1,27 @@ +createDependenciesFor('transport.sendmail') + ); + + $this->setCommand($command); + } + + /** + * Create a new SendmailTransport instance. + * @param string $command + * @return Swift_SendmailTransport + */ + public static function newInstance($command = '/usr/sbin/sendmail -bs') + { + return new self($command); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/SmtpTransport.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/SmtpTransport.php new file mode 100644 index 0000000..65180d5 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/SmtpTransport.php @@ -0,0 +1,56 @@ +createDependenciesFor('transport.smtp') + ); + + $this->setHost($host); + $this->setPort($port); + $this->setEncryption($security); + } + + /** + * Create a new SmtpTransport instance. + * @param string $host + * @param int $port + * @param int $security + * @return Swift_SmtpTransport + */ + public static function newInstance($host = 'localhost', $port = 25, + $security = null) + { + return new self($host, $port, $security); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Spool.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Spool.php new file mode 100644 index 0000000..6d06709 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Spool.php @@ -0,0 +1,50 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Interface for spools. + * @package Swift + * @author Fabien Potencier + */ +interface Swift_Spool +{ + /** + * Starts this Spool mechanism. + */ + public function start(); + + /** + * Stops this Spool mechanism. + */ + public function stop(); + + /** + * Tests if this Spool mechanism has started. + * + * @return boolean + */ + public function isStarted(); + + /** + * Queues a message. + * @param Swift_Mime_Message $message The message to store + */ + public function queueMessage(Swift_Mime_Message $message); + + /** + * Sends messages using the given transport instance. + * + * @param Swift_Transport $transport A transport instance + * @param string[] &$failedRecipients An array of failures by-reference + * + * @return int The number of sent emails + */ + public function flushQueue(Swift_Transport $transport, &$failedRecipients = null); +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/SpoolTransport.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/SpoolTransport.php new file mode 100644 index 0000000..156f9b6 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/SpoolTransport.php @@ -0,0 +1,44 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Stores Messages in a queue. + * @package Swift + * @author Fabien Potencier + */ +class Swift_SpoolTransport extends Swift_Transport_SpoolTransport +{ + /** + * Create a new SpoolTransport. + * @param Swift_Spool $spool + */ + public function __construct(Swift_Spool $spool) + { + $arguments = Swift_DependencyContainer::getInstance() + ->createDependenciesFor('transport.spool'); + + $arguments[] = $spool; + + call_user_func_array( + array($this, 'Swift_Transport_SpoolTransport::__construct'), + $arguments + ); + } + + /** + * Create a new SpoolTransport instance. + * @param Swift_Spool $spool + * @return Swift_SpoolTransport + */ + public static function newInstance(Swift_Spool $spool) + { + return new self($spool); + } +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/StreamFilter.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/StreamFilter.php new file mode 100644 index 0000000..6c262ce --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/StreamFilter.php @@ -0,0 +1,33 @@ +_search = $search; + $this->_index = array(); + $this->_tree = array(); + $this->_replace = array(); + $this->_repSize = array(); + + $tree = null; + $i = null; + $last_size = $size = 0; + foreach ($search as $i => $search_element) + { + if ($tree !== null) + { + $tree[-1] = min (count($replace) - 1, $i - 1); + $tree[-2] = $last_size; + } + $tree = &$this->_tree; + if (is_array ($search_element)) + { + foreach ($search_element as $k => $char) + { + $this->_index[$char] = true; + if (!isset($tree[$char])) + { + $tree[$char] = array(); + } + $tree = &$tree[$char]; + } + $last_size = $k+1; + $size = max($size, $last_size); + } + else + { + $last_size = 1; + if (!isset($tree[$search_element])) + { + $tree[$search_element] = array(); + } + $tree = &$tree[$search_element]; + $size = max($last_size, $size); + $this->_index[$search_element] = true; + } + } + if ($i !== null) + { + $tree[-1] = min (count ($replace) - 1, $i); + $tree[-2] = $last_size; + $this->_treeMaxLen = $size; + } + foreach ($replace as $rep) + { + if (!is_array($rep)) + { + $rep = array ($rep); + } + $this->_replace[] = $rep; + } + for ($i = count($this->_replace) - 1; $i >= 0; --$i) + { + $this->_replace[$i] = $rep = $this->filter($this->_replace[$i], $i); + $this->_repSize[$i] = count($rep); + } + } + + /** + * Returns true if based on the buffer passed more bytes should be buffered. + * @param array $buffer + * @return boolean + */ + public function shouldBuffer($buffer) + { + $endOfBuffer = end($buffer); + return isset ($this->_index[$endOfBuffer]); + } + + /** + * Perform the actual replacements on $buffer and return the result. + * @param array $buffer + * @return array + */ + public function filter($buffer, $_minReplaces = -1) + { + if ($this->_treeMaxLen == 0) + { + return $buffer; + } + + $newBuffer = array(); + $buf_size = count($buffer); + for ($i = 0; $i < $buf_size; ++$i) + { + $search_pos = $this->_tree; + $last_found = PHP_INT_MAX; + // We try to find if the next byte is part of a search pattern + for ($j = 0; $j <= $this->_treeMaxLen; ++$j) + { + // We have a new byte for a search pattern + if (isset ($buffer [$p = $i + $j]) && isset($search_pos[$buffer[$p]])) + { + $search_pos = $search_pos[$buffer[$p]]; + // We have a complete pattern, save, in case we don't find a better match later + if (isset($search_pos[- 1]) && $search_pos[-1] < $last_found + && $search_pos[-1] > $_minReplaces) + { + $last_found = $search_pos[-1]; + $last_size = $search_pos[-2]; + } + } + // We got a complete pattern + elseif ($last_found !== PHP_INT_MAX) + { + // Adding replacement datas to output buffer + $rep_size = $this->_repSize[$last_found]; + for ($j = 0; $j < $rep_size; ++$j) + { + $newBuffer[] = $this->_replace[$last_found][$j]; + } + // We Move cursor forward + $i += $last_size - 1; + // Edge Case, last position in buffer + if ($i >= $buf_size) + { + $newBuffer[] = $buffer[$i]; + } + + // We start the next loop + continue 2; + } + else + { + // this byte is not in a pattern and we haven't found another pattern + break; + } + } + // Normal byte, move it to output buffer + $newBuffer[] = $buffer[$i]; + } + + return $newBuffer; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/StreamFilters/.svn/text-base/StringReplacementFilter.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/StreamFilters/.svn/text-base/StringReplacementFilter.php.svn-base new file mode 100644 index 0000000..9ab6c30 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/StreamFilters/.svn/text-base/StringReplacementFilter.php.svn-base @@ -0,0 +1,66 @@ +_search = $search; + $this->_replace = $replace; + } + + /** + * Returns true if based on the buffer passed more bytes should be buffered. + * @param string $buffer + * @return boolean + */ + public function shouldBuffer($buffer) + { + $endOfBuffer = substr($buffer, -1); + foreach ((array) $this->_search as $needle) + { + if (false !== strpos($needle, $endOfBuffer)) + { + return true; + } + } + return false; + } + + /** + * Perform the actual replacements on $buffer and return the result. + * @param string $buffer + * @return string + */ + public function filter($buffer) + { + return str_replace($this->_search, $this->_replace, $buffer); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/StreamFilters/.svn/text-base/StringReplacementFilterFactory.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/StreamFilters/.svn/text-base/StringReplacementFilterFactory.php.svn-base new file mode 100644 index 0000000..fcd4b83 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/StreamFilters/.svn/text-base/StringReplacementFilterFactory.php.svn-base @@ -0,0 +1,53 @@ +_filters[$search][$replace])) + { + if (!isset($this->_filters[$search])) + { + $this->_filters[$search] = array(); + } + + if (!isset($this->_filters[$search][$replace])) + { + $this->_filters[$search][$replace] = array(); + } + + $this->_filters[$search][$replace] + = new Swift_StreamFilters_StringReplacementFilter($search, $replace); + } + + return $this->_filters[$search][$replace]; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/StreamFilters/ByteArrayReplacementFilter.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/StreamFilters/ByteArrayReplacementFilter.php new file mode 100644 index 0000000..2df52be --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/StreamFilters/ByteArrayReplacementFilter.php @@ -0,0 +1,188 @@ +_search = $search; + $this->_index = array(); + $this->_tree = array(); + $this->_replace = array(); + $this->_repSize = array(); + + $tree = null; + $i = null; + $last_size = $size = 0; + foreach ($search as $i => $search_element) + { + if ($tree !== null) + { + $tree[-1] = min (count($replace) - 1, $i - 1); + $tree[-2] = $last_size; + } + $tree = &$this->_tree; + if (is_array ($search_element)) + { + foreach ($search_element as $k => $char) + { + $this->_index[$char] = true; + if (!isset($tree[$char])) + { + $tree[$char] = array(); + } + $tree = &$tree[$char]; + } + $last_size = $k+1; + $size = max($size, $last_size); + } + else + { + $last_size = 1; + if (!isset($tree[$search_element])) + { + $tree[$search_element] = array(); + } + $tree = &$tree[$search_element]; + $size = max($last_size, $size); + $this->_index[$search_element] = true; + } + } + if ($i !== null) + { + $tree[-1] = min (count ($replace) - 1, $i); + $tree[-2] = $last_size; + $this->_treeMaxLen = $size; + } + foreach ($replace as $rep) + { + if (!is_array($rep)) + { + $rep = array ($rep); + } + $this->_replace[] = $rep; + } + for ($i = count($this->_replace) - 1; $i >= 0; --$i) + { + $this->_replace[$i] = $rep = $this->filter($this->_replace[$i], $i); + $this->_repSize[$i] = count($rep); + } + } + + /** + * Returns true if based on the buffer passed more bytes should be buffered. + * @param array $buffer + * @return boolean + */ + public function shouldBuffer($buffer) + { + $endOfBuffer = end($buffer); + return isset ($this->_index[$endOfBuffer]); + } + + /** + * Perform the actual replacements on $buffer and return the result. + * @param array $buffer + * @return array + */ + public function filter($buffer, $_minReplaces = -1) + { + if ($this->_treeMaxLen == 0) + { + return $buffer; + } + + $newBuffer = array(); + $buf_size = count($buffer); + for ($i = 0; $i < $buf_size; ++$i) + { + $search_pos = $this->_tree; + $last_found = PHP_INT_MAX; + // We try to find if the next byte is part of a search pattern + for ($j = 0; $j <= $this->_treeMaxLen; ++$j) + { + // We have a new byte for a search pattern + if (isset ($buffer [$p = $i + $j]) && isset($search_pos[$buffer[$p]])) + { + $search_pos = $search_pos[$buffer[$p]]; + // We have a complete pattern, save, in case we don't find a better match later + if (isset($search_pos[- 1]) && $search_pos[-1] < $last_found + && $search_pos[-1] > $_minReplaces) + { + $last_found = $search_pos[-1]; + $last_size = $search_pos[-2]; + } + } + // We got a complete pattern + elseif ($last_found !== PHP_INT_MAX) + { + // Adding replacement datas to output buffer + $rep_size = $this->_repSize[$last_found]; + for ($j = 0; $j < $rep_size; ++$j) + { + $newBuffer[] = $this->_replace[$last_found][$j]; + } + // We Move cursor forward + $i += $last_size - 1; + // Edge Case, last position in buffer + if ($i >= $buf_size) + { + $newBuffer[] = $buffer[$i]; + } + + // We start the next loop + continue 2; + } + else + { + // this byte is not in a pattern and we haven't found another pattern + break; + } + } + // Normal byte, move it to output buffer + $newBuffer[] = $buffer[$i]; + } + + return $newBuffer; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/StreamFilters/StringReplacementFilter.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/StreamFilters/StringReplacementFilter.php new file mode 100644 index 0000000..9ab6c30 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/StreamFilters/StringReplacementFilter.php @@ -0,0 +1,66 @@ +_search = $search; + $this->_replace = $replace; + } + + /** + * Returns true if based on the buffer passed more bytes should be buffered. + * @param string $buffer + * @return boolean + */ + public function shouldBuffer($buffer) + { + $endOfBuffer = substr($buffer, -1); + foreach ((array) $this->_search as $needle) + { + if (false !== strpos($needle, $endOfBuffer)) + { + return true; + } + } + return false; + } + + /** + * Perform the actual replacements on $buffer and return the result. + * @param string $buffer + * @return string + */ + public function filter($buffer) + { + return str_replace($this->_search, $this->_replace, $buffer); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/StreamFilters/StringReplacementFilterFactory.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/StreamFilters/StringReplacementFilterFactory.php new file mode 100644 index 0000000..fcd4b83 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/StreamFilters/StringReplacementFilterFactory.php @@ -0,0 +1,53 @@ +_filters[$search][$replace])) + { + if (!isset($this->_filters[$search])) + { + $this->_filters[$search] = array(); + } + + if (!isset($this->_filters[$search][$replace])) + { + $this->_filters[$search][$replace] = array(); + } + + $this->_filters[$search][$replace] + = new Swift_StreamFilters_StringReplacementFilter($search, $replace); + } + + return $this->_filters[$search][$replace]; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/SwiftException.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/SwiftException.php new file mode 100644 index 0000000..bd3b656 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/SwiftException.php @@ -0,0 +1,28 @@ +_eventDispatcher = $dispatcher; + $this->_buffer = $buf; + $this->_lookupHostname(); + } + + /** + * Set the name of the local domain which Swift will identify itself as. + * This should be a fully-qualified domain name and should be truly the domain + * you're using. If your server doesn't have a domain name, use the IP in square + * brackets (i.e. [127.0.0.1]). + * + * @param string $domain + */ + public function setLocalDomain($domain) + { + $this->_domain = $domain; + return $this; + } + + /** + * Get the name of the domain Swift will identify as. + * + * @return string + */ + public function getLocalDomain() + { + return $this->_domain; + } + + /** + * Start the SMTP connection. + */ + public function start() + { + if (!$this->_started) + { + if ($evt = $this->_eventDispatcher->createTransportChangeEvent($this)) + { + $this->_eventDispatcher->dispatchEvent($evt, 'beforeTransportStarted'); + if ($evt->bubbleCancelled()) + { + return; + } + } + + try + { + $this->_buffer->initialize($this->_getBufferParams()); + } + catch (Swift_TransportException $e) + { + $this->_throwException($e); + } + $this->_readGreeting(); + $this->_doHeloCommand(); + + if ($evt) + { + $this->_eventDispatcher->dispatchEvent($evt, 'transportStarted'); + } + + $this->_started = true; + } + } + + /** + * Test if an SMTP connection has been established. + * + * @return boolean + */ + public function isStarted() + { + return $this->_started; + } + + /** + * Send the given Message. + * + * Recipient/sender data will be retreived from the Message API. + * The return value is the number of recipients who were accepted for delivery. + * + * @param Swift_Mime_Message $message + * @param string[] &$failedRecipients to collect failures by-reference + * @return int + */ + public function send(Swift_Mime_Message $message, &$failedRecipients = null) + { + $sent = 0; + $failedRecipients = (array) $failedRecipients; + + if (!$reversePath = $this->_getReversePath($message)) + { + throw new Swift_TransportException( + 'Cannot send message without a sender address' + ); + } + + if ($evt = $this->_eventDispatcher->createSendEvent($this, $message)) + { + $this->_eventDispatcher->dispatchEvent($evt, 'beforeSendPerformed'); + if ($evt->bubbleCancelled()) + { + return 0; + } + } + + $to = (array) $message->getTo(); + $cc = (array) $message->getCc(); + $bcc = (array) $message->getBcc(); + + $message->setBcc(array()); + + try + { + $sent += $this->_sendTo($message, $reversePath, $to, $failedRecipients); + $sent += $this->_sendCc($message, $reversePath, $cc, $failedRecipients); + $sent += $this->_sendBcc($message, $reversePath, $bcc, $failedRecipients); + } + catch (Exception $e) + { + $message->setBcc($bcc); + throw $e; + } + + $message->setBcc($bcc); + + if ($evt) + { + if ($sent == count($to) + count($cc) + count($bcc)) + { + $evt->setResult(Swift_Events_SendEvent::RESULT_SUCCESS); + } + elseif ($sent > 0) + { + $evt->setResult(Swift_Events_SendEvent::RESULT_TENTATIVE); + } + else + { + $evt->setResult(Swift_Events_SendEvent::RESULT_FAILED); + } + $evt->setFailedRecipients($failedRecipients); + $this->_eventDispatcher->dispatchEvent($evt, 'sendPerformed'); + } + + $message->generateId(); //Make sure a new Message ID is used + + return $sent; + } + + /** + * Stop the SMTP connection. + */ + public function stop() + { + if ($this->_started) + { + if ($evt = $this->_eventDispatcher->createTransportChangeEvent($this)) + { + $this->_eventDispatcher->dispatchEvent($evt, 'beforeTransportStopped'); + if ($evt->bubbleCancelled()) + { + return; + } + } + + try + { + $this->executeCommand("QUIT\r\n", array(221)); + } + catch (Swift_TransportException $e) {} + + try + { + $this->_buffer->terminate(); + + if ($evt) + { + $this->_eventDispatcher->dispatchEvent($evt, 'transportStopped'); + } + } + catch (Swift_TransportException $e) + { + $this->_throwException($e); + } + } + $this->_started = false; + } + + /** + * Register a plugin. + * + * @param Swift_Events_EventListener $plugin + */ + public function registerPlugin(Swift_Events_EventListener $plugin) + { + $this->_eventDispatcher->bindEventListener($plugin); + } + + /** + * Reset the current mail transaction. + */ + public function reset() + { + $this->executeCommand("RSET\r\n", array(250)); + } + + /** + * Get the IoBuffer where read/writes are occurring. + * + * @return Swift_Transport_IoBuffer + */ + public function getBuffer() + { + return $this->_buffer; + } + + /** + * Run a command against the buffer, expecting the given response codes. + * + * If no response codes are given, the response will not be validated. + * If codes are given, an exception will be thrown on an invalid response. + * + * @param string $command + * @param int[] $codes + * @param string[] &$failures + * @return string + */ + public function executeCommand($command, $codes = array(), &$failures = null) + { + $failures = (array) $failures; + $seq = $this->_buffer->write($command); + $response = $this->_getFullResponse($seq); + if ($evt = $this->_eventDispatcher->createCommandEvent($this, $command, $codes)) + { + $this->_eventDispatcher->dispatchEvent($evt, 'commandSent'); + } + $this->_assertResponseCode($response, $codes); + return $response; + } + + // -- Protected methods + + /** Read the opening SMTP greeting */ + protected function _readGreeting() + { + $this->_assertResponseCode($this->_getFullResponse(0), array(220)); + } + + /** Send the HELO welcome */ + protected function _doHeloCommand() + { + $this->executeCommand( + sprintf("HELO %s\r\n", $this->_domain), array(250) + ); + } + + /** Send the MAIL FROM command */ + protected function _doMailFromCommand($address) + { + $this->executeCommand( + sprintf("MAIL FROM: <%s>\r\n", $address), array(250) + ); + } + + /** Send the RCPT TO command */ + protected function _doRcptToCommand($address) + { + $this->executeCommand( + sprintf("RCPT TO: <%s>\r\n", $address), array(250, 251, 252) + ); + } + + /** Send the DATA command */ + protected function _doDataCommand() + { + $this->executeCommand("DATA\r\n", array(354)); + } + + /** Stream the contents of the message over the buffer */ + protected function _streamMessage(Swift_Mime_Message $message) + { + $this->_buffer->setWriteTranslations(array("\r\n." => "\r\n..")); + try + { + $message->toByteStream($this->_buffer); + $this->_buffer->flushBuffers(); + } + catch (Swift_TransportException $e) + { + $this->_throwException($e); + } + $this->_buffer->setWriteTranslations(array()); + $this->executeCommand("\r\n.\r\n", array(250)); + } + + /** Determine the best-use reverse path for this message */ + protected function _getReversePath(Swift_Mime_Message $message) + { + $return = $message->getReturnPath(); + $sender = $message->getSender(); + $from = $message->getFrom(); + $path = null; + if (!empty($return)) + { + $path = $return; + } + elseif (!empty($sender)) + { + // Don't use array_keys + reset($sender); // Reset Pointer to first pos + $path = key($sender); // Get key + } + elseif (!empty($from)) + { + reset($from); // Reset Pointer to first pos + $path = key($from); // Get key + } + return $path; + } + + /** Throw a TransportException, first sending it to any listeners */ + protected function _throwException(Swift_TransportException $e) + { + if ($evt = $this->_eventDispatcher->createTransportExceptionEvent($this, $e)) + { + $this->_eventDispatcher->dispatchEvent($evt, 'exceptionThrown'); + if (!$evt->bubbleCancelled()) + { + throw $e; + } + } + else + { + throw $e; + } + } + + /** Throws an Exception if a response code is incorrect */ + protected function _assertResponseCode($response, $wanted) + { + list($code, $separator, $text) = sscanf($response, '%3d%[ -]%s'); + $valid = (empty($wanted) || in_array($code, $wanted)); + + if ($evt = $this->_eventDispatcher->createResponseEvent($this, $response, + $valid)) + { + $this->_eventDispatcher->dispatchEvent($evt, 'responseReceived'); + } + + if (!$valid) + { + $this->_throwException( + new Swift_TransportException( + 'Expected response code ' . implode('/', $wanted) . ' but got code ' . + '"' . $code . '", with message "' . $response . '"' + ) + ); + } + } + + /** Get an entire multi-line response using its sequence number */ + protected function _getFullResponse($seq) + { + $response = ''; + try + { + do + { + $line = $this->_buffer->readLine($seq); + $response .= $line; + } + while (null !== $line && false !== $line && ' ' != $line{3}); + } + catch (Swift_TransportException $e) + { + $this->_throwException($e); + } + return $response; + } + + // -- Private methods + + /** Send an email to the given recipients from the given reverse path */ + private function _doMailTransaction($message, $reversePath, + array $recipients, array &$failedRecipients) + { + $sent = 0; + $this->_doMailFromCommand($reversePath); + foreach ($recipients as $forwardPath) + { + try + { + $this->_doRcptToCommand($forwardPath); + $sent++; + } + catch (Swift_TransportException $e) + { + $failedRecipients[] = $forwardPath; + } + } + + if ($sent != 0) + { + $this->_doDataCommand(); + $this->_streamMessage($message); + } + else + { + $this->reset(); + } + + return $sent; + } + + /** Send a message to the given To: recipients */ + private function _sendTo(Swift_Mime_Message $message, $reversePath, + array $to, array &$failedRecipients) + { + if (empty($to)) + { + return 0; + } + return $this->_doMailTransaction($message, $reversePath, array_keys($to), + $failedRecipients); + } + + /** Send a message to the given Cc: recipients */ + private function _sendCc(Swift_Mime_Message $message, $reversePath, + array $cc, array &$failedRecipients) + { + if (empty($cc)) + { + return 0; + } + return $this->_doMailTransaction($message, $reversePath, array_keys($cc), + $failedRecipients); + } + + /** Send a message to all Bcc: recipients */ + private function _sendBcc(Swift_Mime_Message $message, $reversePath, + array $bcc, array &$failedRecipients) + { + $sent = 0; + foreach ($bcc as $forwardPath => $name) + { + $message->setBcc(array($forwardPath => $name)); + $sent += $this->_doMailTransaction( + $message, $reversePath, array($forwardPath), $failedRecipients + ); + } + return $sent; + } + + /** Try to determine the hostname of the server this is run on */ + private function _lookupHostname() + { + if (!empty($_SERVER['SERVER_NAME']) + && $this->_isFqdn($_SERVER['SERVER_NAME'])) + { + $this->_domain = $_SERVER['SERVER_NAME']; + } + elseif (!empty($_SERVER['SERVER_ADDR'])) + { + $this->_domain = sprintf('[%s]', $_SERVER['SERVER_ADDR']); + } + } + + /** Determine is the $hostname is a fully-qualified name */ + private function _isFqdn($hostname) + { + //We could do a really thorough check, but there's really no point + if (false !== $dotPos = strpos($hostname, '.')) + { + return ($dotPos > 0) && ($dotPos != strlen($hostname) - 1); + } + else + { + return false; + } + } + + /** + * Destructor. + */ + public function __destruct() + { + $this->stop(); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/.svn/text-base/EsmtpHandler.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/.svn/text-base/EsmtpHandler.php.svn-base new file mode 100644 index 0000000..e96f95f --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/.svn/text-base/EsmtpHandler.php.svn-base @@ -0,0 +1,82 @@ +. + * @return string[] + */ + public function getMailParams(); + + /** + * Get params which are appended to RCPT TO:<>. + * @return string[] + */ + public function getRcptParams(); + + /** + * Runs when a command is due to be sent. + * @param Swift_Transport_SmtpAgent $agent to read/write + * @param string $command to send + * @param int[] $codes expected in response + * @param string[] &$failedRecipients + * @param boolean &$stop to be set true if the command is now sent + */ + public function onCommand(Swift_Transport_SmtpAgent $agent, + $command, $codes = array(), &$failedRecipients = null, &$stop = false); + + /** + * Returns +1, -1 or 0 according to the rules for usort(). + * This method is called to ensure extensions can be execute in an appropriate order. + * @param string $esmtpKeyword to compare with + * @return int + */ + public function getPriorityOver($esmtpKeyword); + + /** + * Returns an array of method names which are exposed to the Esmtp class. + * @return string[] + */ + public function exposeMixinMethods(); + + /** + * Tells this handler to clear any buffers and reset its state. + */ + public function resetState(); + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/.svn/text-base/EsmtpTransport.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/.svn/text-base/EsmtpTransport.php.svn-base new file mode 100644 index 0000000..fc10ba8 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/.svn/text-base/EsmtpTransport.php.svn-base @@ -0,0 +1,339 @@ + 'tcp', + 'host' => 'localhost', + 'port' => 25, + 'timeout' => 30, + 'blocking' => 1, + 'type' => Swift_Transport_IoBuffer::TYPE_SOCKET + ); + + /** + * Creates a new EsmtpTransport using the given I/O buffer. + * @param Swift_Transport_IoBuffer $buf + * @param Swift_Transport_EsmtpHandler[] $extensionHandlers + * @param Swift_Events_EventDispatcher $dispatcher + */ + public function __construct(Swift_Transport_IoBuffer $buf, + array $extensionHandlers, Swift_Events_EventDispatcher $dispatcher) + { + parent::__construct($buf, $dispatcher); + $this->setExtensionHandlers($extensionHandlers); + } + + /** + * Set the host to connect to. + * @param string $host + */ + public function setHost($host) + { + $this->_params['host'] = $host; + return $this; + } + + /** + * Get the host to connect to. + * @return string + */ + public function getHost() + { + return $this->_params['host']; + } + + /** + * Set the port to connect to. + * @param int $port + */ + public function setPort($port) + { + $this->_params['port'] = (int) $port; + return $this; + } + + /** + * Get the port to connect to. + * @return int + */ + public function getPort() + { + return $this->_params['port']; + } + + /** + * Set the connection timeout. + * @param int $timeout seconds + */ + public function setTimeout($timeout) + { + $this->_params['timeout'] = (int) $timeout; + return $this; + } + + /** + * Get the connection timeout. + * @return int + */ + public function getTimeout() + { + return $this->_params['timeout']; + } + + /** + * Set the encryption type (tls or ssl) + * @param string $encryption + */ + public function setEncryption($enc) + { + $this->_params['protocol'] = $enc; + return $this; + } + + /** + * Get the encryption type. + * @return string + */ + public function getEncryption() + { + return $this->_params['protocol']; + } + + /** + * Set ESMTP extension handlers. + * @param Swift_Transport_EsmtpHandler[] $handlers + */ + public function setExtensionHandlers(array $handlers) + { + $assoc = array(); + foreach ($handlers as $handler) + { + $assoc[$handler->getHandledKeyword()] = $handler; + } + uasort($assoc, array($this, '_sortHandlers')); + $this->_handlers = $assoc; + $this->_setHandlerParams(); + return $this; + } + + /** + * Get ESMTP extension handlers. + * @return Swift_Transport_EsmtpHandler[] + */ + public function getExtensionHandlers() + { + return array_values($this->_handlers); + } + + /** + * Run a command against the buffer, expecting the given response codes. + * If no response codes are given, the response will not be validated. + * If codes are given, an exception will be thrown on an invalid response. + * @param string $command + * @param int[] $codes + * @param string[] &$failures + * @return string + */ + public function executeCommand($command, $codes = array(), &$failures = null) + { + $failures = (array) $failures; + $stopSignal = false; + $response = null; + foreach ($this->_getActiveHandlers() as $handler) + { + $response = $handler->onCommand( + $this, $command, $codes, $failures, $stopSignal + ); + if ($stopSignal) + { + return $response; + } + } + return parent::executeCommand($command, $codes, $failures); + } + + // -- Mixin invocation code + + /** Mixin handling method for ESMTP handlers */ + public function __call($method, $args) + { + foreach ($this->_handlers as $handler) + { + if (in_array(strtolower($method), + array_map('strtolower', (array) $handler->exposeMixinMethods()) + )) + { + $return = call_user_func_array(array($handler, $method), $args); + //Allow fluid method calls + if (is_null($return) && substr($method, 0, 3) == 'set') + { + return $this; + } + else + { + return $return; + } + } + } + trigger_error('Call to undefined method ' . $method, E_USER_ERROR); + } + + // -- Protected methods + + /** Get the params to initialize the buffer */ + protected function _getBufferParams() + { + return $this->_params; + } + + /** Overridden to perform EHLO instead */ + protected function _doHeloCommand() + { + try + { + $response = $this->executeCommand( + sprintf("EHLO %s\r\n", $this->_domain), array(250) + ); + $this->_capabilities = $this->_getCapabilities($response); + $this->_setHandlerParams(); + foreach ($this->_getActiveHandlers() as $handler) + { + $handler->afterEhlo($this); + } + } + catch (Swift_TransportException $e) + { + parent::_doHeloCommand(); + } + } + + /** Overridden to add Extension support */ + protected function _doMailFromCommand($address) + { + $handlers = $this->_getActiveHandlers(); + $params = array(); + foreach ($handlers as $handler) + { + $params = array_merge($params, (array) $handler->getMailParams()); + } + $paramStr = !empty($params) ? ' ' . implode(' ', $params) : ''; + $this->executeCommand( + sprintf("MAIL FROM: <%s>%s\r\n", $address, $paramStr), array(250) + ); + } + + /** Overridden to add Extension support */ + protected function _doRcptToCommand($address) + { + $handlers = $this->_getActiveHandlers(); + $params = array(); + foreach ($handlers as $handler) + { + $params = array_merge($params, (array) $handler->getRcptParams()); + } + $paramStr = !empty($params) ? ' ' . implode(' ', $params) : ''; + $this->executeCommand( + sprintf("RCPT TO: <%s>%s\r\n", $address, $paramStr), array(250, 251, 252) + ); + } + + // -- Private methods + + /** Determine ESMTP capabilities by function group */ + private function _getCapabilities($ehloResponse) + { + $capabilities = array(); + $ehloResponse = trim($ehloResponse); + $lines = explode("\r\n", $ehloResponse); + array_shift($lines); + foreach ($lines as $line) + { + if (preg_match('/^[0-9]{3}[ -]([A-Z0-9-]+)((?:[ =].*)?)$/Di', $line, $matches)) + { + $keyword = strtoupper($matches[1]); + $paramStr = strtoupper(ltrim($matches[2], ' =')); + $params = !empty($paramStr) ? explode(' ', $paramStr) : array(); + $capabilities[$keyword] = $params; + } + } + return $capabilities; + } + + /** Set parameters which are used by each extension handler */ + private function _setHandlerParams() + { + foreach ($this->_handlers as $keyword => $handler) + { + if (array_key_exists($keyword, $this->_capabilities)) + { + $handler->setKeywordParams($this->_capabilities[$keyword]); + } + } + } + + /** Get ESMTP handlers which are currently ok to use */ + private function _getActiveHandlers() + { + $handlers = array(); + foreach ($this->_handlers as $keyword => $handler) + { + if (array_key_exists($keyword, $this->_capabilities)) + { + $handlers[] = $handler; + } + } + return $handlers; + } + + /** Custom sort for extension handler ordering */ + private function _sortHandlers($a, $b) + { + return $a->getPriorityOver($b->getHandledKeyword()); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/.svn/text-base/FailoverTransport.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/.svn/text-base/FailoverTransport.php.svn-base new file mode 100644 index 0000000..e62491c --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/.svn/text-base/FailoverTransport.php.svn-base @@ -0,0 +1,97 @@ +_transports); + $sent = 0; + + for ($i = 0; $i < $maxTransports + && $transport = $this->_getNextTransport(); ++$i) + { + try + { + if (!$transport->isStarted()) + { + $transport->start(); + } + + return $transport->send($message, $failedRecipients); + } + catch (Swift_TransportException $e) + { + $this->_killCurrentTransport(); + } + } + + if (count($this->_transports) == 0) + { + throw new Swift_TransportException( + 'All Transports in FailoverTransport failed, or no Transports available' + ); + } + + return $sent; + } + + // -- Protected methods + + protected function _getNextTransport() + { + if (!isset($this->_currentTransport)) + { + $this->_currentTransport = parent::_getNextTransport(); + } + return $this->_currentTransport; + } + + protected function _killCurrentTransport() + { + $this->_currentTransport = null; + parent::_killCurrentTransport(); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/.svn/text-base/IoBuffer.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/.svn/text-base/IoBuffer.php.svn-base new file mode 100644 index 0000000..ac66ef0 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/.svn/text-base/IoBuffer.php.svn-base @@ -0,0 +1,65 @@ +_transports = $transports; + $this->_deadTransports = array(); + } + + /** + * Get $transports to delegate to. + * + * @return array Swift_Transport + */ + public function getTransports(array $transports) + { + return array_merge($this->_transports, $this->_deadTransports); + } + + /** + * Test if this Transport mechanism has started. + * + * @return boolean + */ + public function isStarted() + { + return count($this->_transports) > 0; + } + + /** + * Start this Transport mechanism. + */ + public function start() + { + $this->_transports = array_merge($this->_transports, $this->_deadTransports); + } + + /** + * Stop this Transport mechanism. + */ + public function stop() + { + foreach ($this->_transports as $transport) + { + $transport->stop(); + } + } + + /** + * Send the given Message. + * + * Recipient/sender data will be retreived from the Message API. + * The return value is the number of recipients who were accepted for delivery. + * + * @param Swift_Mime_Message $message + * @param string[] &$failedRecipients to collect failures by-reference + * @return int + */ + public function send(Swift_Mime_Message $message, &$failedRecipients = null) + { + $maxTransports = count($this->_transports); + $sent = 0; + + for ($i = 0; $i < $maxTransports + && $transport = $this->_getNextTransport(); ++$i) + { + try + { + if (!$transport->isStarted()) + { + $transport->start(); + } + if ($sent = $transport->send($message, $failedRecipients)) + { + break; + } + } + catch (Swift_TransportException $e) + { + $this->_killCurrentTransport(); + } + } + + if (count($this->_transports) == 0) + { + throw new Swift_TransportException( + 'All Transports in LoadBalancedTransport failed, or no Transports available' + ); + } + + return $sent; + } + + /** + * Register a plugin. + * + * @param Swift_Events_EventListener $plugin + */ + public function registerPlugin(Swift_Events_EventListener $plugin) + { + foreach ($this->_transports as $transport) + { + $transport->registerPlugin($plugin); + } + } + + // -- Protected methods + + /** + * Rotates the transport list around and returns the first instance. + * + * @return Swift_Transport + * @access protected + */ + protected function _getNextTransport() + { + if ($next = array_shift($this->_transports)) + { + $this->_transports[] = $next; + } + return $next; + } + + /** + * Tag the currently used (top of stack) transport as dead/useless. + * + * @access protected + */ + protected function _killCurrentTransport() + { + if ($transport = array_pop($this->_transports)) + { + try + { + $transport->stop(); + } + catch (Exception $e) + { + } + $this->_deadTransports[] = $transport; + } + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/.svn/text-base/MailInvoker.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/.svn/text-base/MailInvoker.php.svn-base new file mode 100644 index 0000000..dda882f --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/.svn/text-base/MailInvoker.php.svn-base @@ -0,0 +1,36 @@ +_invoker = $invoker; + $this->_eventDispatcher = $eventDispatcher; + } + + /** + * Not used. + */ + public function isStarted() + { + return false; + } + + /** + * Not used. + */ + public function start() + { + } + + /** + * Not used. + */ + public function stop() + { + } + + /** + * Set the additional parameters used on the mail() function. + * + * This string is formatted for sprintf() where %s is the sender address. + * + * @param string $params + */ + public function setExtraParams($params) + { + $this->_extraParams = $params; + return $this; + } + + /** + * Get the additional parameters used on the mail() function. + * + * This string is formatted for sprintf() where %s is the sender address. + * + * @return string + */ + public function getExtraParams() + { + return $this->_extraParams; + } + + /** + * Send the given Message. + * + * Recipient/sender data will be retreived from the Message API. + * The return value is the number of recipients who were accepted for delivery. + * + * @param Swift_Mime_Message $message + * @param string[] &$failedRecipients to collect failures by-reference + * @return int + */ + public function send(Swift_Mime_Message $message, &$failedRecipients = null) + { + $failedRecipients = (array) $failedRecipients; + + if ($evt = $this->_eventDispatcher->createSendEvent($this, $message)) + { + $this->_eventDispatcher->dispatchEvent($evt, 'beforeSendPerformed'); + if ($evt->bubbleCancelled()) + { + return 0; + } + } + + $count = ( + count((array) $message->getTo()) + + count((array) $message->getCc()) + + count((array) $message->getBcc()) + ); + + $toHeader = $message->getHeaders()->get('To'); + $subjectHeader = $message->getHeaders()->get('Subject'); + + $to = $toHeader->getFieldBody(); + $subject = $subjectHeader->getFieldBody(); + + $reversePath = $this->_getReversePath($message); + + //Remove headers that would otherwise be duplicated + $message->getHeaders()->remove('To'); + $message->getHeaders()->remove('Subject'); + + $messageStr = $message->toString(); + + $message->getHeaders()->set($toHeader); + $message->getHeaders()->set($subjectHeader); + + //Separate headers from body + if (false !== $endHeaders = strpos($messageStr, "\r\n\r\n")) + { + $headers = substr($messageStr, 0, $endHeaders) . "\r\n"; //Keep last EOL + $body = substr($messageStr, $endHeaders + 4); + } + else + { + $headers = $messageStr . "\r\n"; + $body = ''; + } + + unset($messageStr); + + if ("\r\n" != PHP_EOL) //Non-windows (not using SMTP) + { + $headers = str_replace("\r\n", PHP_EOL, $headers); + $body = str_replace("\r\n", PHP_EOL, $body); + } + else //Windows, using SMTP + { + $headers = str_replace("\r\n.", "\r\n..", $headers); + $body = str_replace("\r\n.", "\r\n..", $body); + } + + if ($this->_invoker->mail($to, $subject, $body, $headers, + sprintf($this->_extraParams, $reversePath))) + { + if ($evt) + { + $evt->setResult(Swift_Events_SendEvent::RESULT_SUCCESS); + $evt->setFailedRecipients($failedRecipients); + $this->_eventDispatcher->dispatchEvent($evt, 'sendPerformed'); + } + } + else + { + $failedRecipients = array_merge( + $failedRecipients, + array_keys((array) $message->getTo()), + array_keys((array) $message->getCc()), + array_keys((array) $message->getBcc()) + ); + + if ($evt) + { + $evt->setResult(Swift_Events_SendEvent::RESULT_FAILED); + $evt->setFailedRecipients($failedRecipients); + $this->_eventDispatcher->dispatchEvent($evt, 'sendPerformed'); + } + + $message->generateId(); + + $count = 0; + } + + return $count; + } + + /** + * Register a plugin. + * + * @param Swift_Events_EventListener $plugin + */ + public function registerPlugin(Swift_Events_EventListener $plugin) + { + $this->_eventDispatcher->bindEventListener($plugin); + } + + // -- Private methods + + /** Determine the best-use reverse path for this message */ + private function _getReversePath(Swift_Mime_Message $message) + { + $return = $message->getReturnPath(); + $sender = $message->getSender(); + $from = $message->getFrom(); + $path = null; + if (!empty($return)) + { + $path = $return; + } + elseif (!empty($sender)) + { + $keys = array_keys($sender); + $path = array_shift($keys); + } + elseif (!empty($from)) + { + $keys = array_keys($from); + $path = array_shift($keys); + } + return $path; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/.svn/text-base/NullTransport.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/.svn/text-base/NullTransport.php.svn-base new file mode 100644 index 0000000..c60d938 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/.svn/text-base/NullTransport.php.svn-base @@ -0,0 +1,90 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Pretends messages have been sent, but just ignores them. + * @package Swift + * @author Fabien Potencier + */ +class Swift_Transport_NullTransport implements Swift_Transport +{ + /** The event dispatcher from the plugin API */ + private $_eventDispatcher; + + /** + * Constructor. + */ + public function __construct(Swift_Events_EventDispatcher $eventDispatcher) + { + $this->_eventDispatcher = $eventDispatcher; + } + + /** + * Tests if this Transport mechanism has started. + * + * @return boolean + */ + public function isStarted() + { + return true; + } + + /** + * Starts this Transport mechanism. + */ + public function start() + { + } + + /** + * Stops this Transport mechanism. + */ + public function stop() + { + } + + /** + * Sends the given message. + * + * @param Swift_Mime_Message $message + * @param string[] &$failedRecipients to collect failures by-reference + * + * @return int The number of sent emails + */ + public function send(Swift_Mime_Message $message, &$failedRecipients = null) + { + if ($evt = $this->_eventDispatcher->createSendEvent($this, $message)) + { + $this->_eventDispatcher->dispatchEvent($evt, 'beforeSendPerformed'); + if ($evt->bubbleCancelled()) + { + return 0; + } + } + + if ($evt) + { + $evt->setResult(Swift_Events_SendEvent::RESULT_SUCCESS); + $this->_eventDispatcher->dispatchEvent($evt, 'sendPerformed'); + } + + return 0; + } + + /** + * Register a plugin. + * + * @param Swift_Events_EventListener $plugin + */ + public function registerPlugin(Swift_Events_EventListener $plugin) + { + $this->_eventDispatcher->bindEventListener($plugin); + } +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/.svn/text-base/SendmailTransport.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/.svn/text-base/SendmailTransport.php.svn-base new file mode 100644 index 0000000..aae8bde --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/.svn/text-base/SendmailTransport.php.svn-base @@ -0,0 +1,173 @@ + 30, + 'blocking' => 1, + 'command' => '/usr/sbin/sendmail -bs', + 'type' => Swift_Transport_IoBuffer::TYPE_PROCESS + ); + + /** + * Create a new SendmailTransport with $buf for I/O. + * @param Swift_Transport_IoBuffer $buf + * @param Swift_Events_EventDispatcher $dispatcher + */ + public function __construct(Swift_Transport_IoBuffer $buf, + Swift_Events_EventDispatcher $dispatcher) + { + parent::__construct($buf, $dispatcher); + } + + /** + * Start the standalone SMTP session if running in -bs mode. + */ + public function start() + { + if (false !== strpos($this->getCommand(), ' -bs')) + { + parent::start(); + } + } + + /** + * Set the command to invoke. + * If using -t mode you are strongly advised to include -oi or -i in the + * flags. For example: /usr/sbin/sendmail -oi -t + * Swift will append a -f flag if one is not present. + * The recommended mode is "-bs" since it is interactive and failure notifications + * are hence possible. + * @param string $command + */ + public function setCommand($command) + { + $this->_params['command'] = $command; + return $this; + } + + /** + * Get the sendmail command which will be invoked. + * @return string + */ + public function getCommand() + { + return $this->_params['command']; + } + + /** + * Send the given Message. + * Recipient/sender data will be retreived from the Message API. + * The return value is the number of recipients who were accepted for delivery. + * NOTE: If using 'sendmail -t' you will not be aware of any failures until + * they bounce (i.e. send() will always return 100% success). + * @param Swift_Mime_Message $message + * @param string[] &$failedRecipients to collect failures by-reference + * @return int + */ + public function send(Swift_Mime_Message $message, &$failedRecipients = null) + { + $failedRecipients = (array) $failedRecipients; + $command = $this->getCommand(); + $buffer = $this->getBuffer(); + + if (false !== strpos($command, ' -t')) + { + if ($evt = $this->_eventDispatcher->createSendEvent($this, $message)) + { + $this->_eventDispatcher->dispatchEvent($evt, 'beforeSendPerformed'); + if ($evt->bubbleCancelled()) + { + return 0; + } + } + + if (false === strpos($command, ' -f')) + { + $command .= ' -f' . $this->_getReversePath($message); + } + + $buffer->initialize(array_merge($this->_params, array('command' => $command))); + + if (false === strpos($command, ' -i') && false === strpos($command, ' -oi')) + { + $buffer->setWriteTranslations(array("\r\n" => "\n", "\n." => "\n..")); + } + else + { + $buffer->setWriteTranslations(array("\r\n"=>"\n")); + } + + $count = count((array) $message->getTo()) + + count((array) $message->getCc()) + + count((array) $message->getBcc()) + ; + $message->toByteStream($buffer); + $buffer->flushBuffers(); + $buffer->setWriteTranslations(array()); + $buffer->terminate(); + + if ($evt) + { + $evt->setResult(Swift_Events_SendEvent::RESULT_SUCCESS); + $evt->setFailedRecipients($failedRecipients); + $this->_eventDispatcher->dispatchEvent($evt, 'sendPerformed'); + } + + $message->generateId(); + } + elseif (false !== strpos($command, ' -bs')) + { + $count = parent::send($message, $failedRecipients); + } + else + { + $this->_throwException(new Swift_TransportException( + 'Unsupported sendmail command flags [' . $command . ']. ' . + 'Must be one of "-bs" or "-t" but can include additional flags.' + )); + } + + return $count; + } + + // -- Protected methods + + /** Get the params to initialize the buffer */ + protected function _getBufferParams() + { + return $this->_params; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/.svn/text-base/SimpleMailInvoker.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/.svn/text-base/SimpleMailInvoker.php.svn-base new file mode 100644 index 0000000..271ba84 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/.svn/text-base/SimpleMailInvoker.php.svn-base @@ -0,0 +1,58 @@ +. + + */ + +//@require 'Swift/Transport/MailInvoker.php'; + +/** + * This is the implementation class for {@link Swift_Transport_MailInvoker}. + * + * @package Swift + * @subpackage Transport + * @author Chris Corbyn + */ +class Swift_Transport_SimpleMailInvoker implements Swift_Transport_MailInvoker +{ + + /** + * Send mail via the mail() function. + * + * This method takes the same arguments as PHP mail(). + * + * @param string $to + * @param string $subject + * @param string $body + * @param string $headers + * @param string $extraParams + * + * @return boolean + */ + public function mail($to, $subject, $body, $headers = null, $extraParams = null) + { + if (!ini_get('safe_mode')) + { + return mail($to, $subject, $body, $headers, $extraParams); + } + else + { + return mail($to, $subject, $body, $headers); + } + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/.svn/text-base/SmtpAgent.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/.svn/text-base/SmtpAgent.php.svn-base new file mode 100644 index 0000000..ee9b8ed --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/.svn/text-base/SmtpAgent.php.svn-base @@ -0,0 +1,36 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Stores Messages in a queue. + * @package Swift + * @author Fabien Potencier + */ +class Swift_Transport_SpoolTransport implements Swift_Transport +{ + /** The spool instance */ + private $_spool; + + /** The event dispatcher from the plugin API */ + private $_eventDispatcher; + + /** + * Constructor. + */ + public function __construct(Swift_Events_EventDispatcher $eventDispatcher, Swift_Spool $spool = null) + { + $this->_eventDispatcher = $eventDispatcher; + $this->_spool = $spool; + } + + /** + * Sets the spool object. + * @param Swift_Spool $spool + */ + public function setSpool(Swift_Spool $spool) + { + $this->_spool = $spool; + return $this; + } + + /** + * Get the spool object. + * @return Swift_Spool + */ + public function getSpool() + { + return $this->_spool; + } + + /** + * Tests if this Transport mechanism has started. + * + * @return boolean + */ + public function isStarted() + { + return true; + } + + /** + * Starts this Transport mechanism. + */ + public function start() + { + } + + /** + * Stops this Transport mechanism. + */ + public function stop() + { + } + + /** + * Sends the given message. + * + * @param Swift_Mime_Message $message + * @param string[] &$failedRecipients to collect failures by-reference + * + * @return int The number of sent emails + */ + public function send(Swift_Mime_Message $message, &$failedRecipients = null) + { + if ($evt = $this->_eventDispatcher->createSendEvent($this, $message)) + { + $this->_eventDispatcher->dispatchEvent($evt, 'beforeSendPerformed'); + if ($evt->bubbleCancelled()) + { + return 0; + } + } + + $success = $this->_spool->queueMessage($message); + + if ($evt) + { + $evt->setResult($success ? Swift_Events_SendEvent::RESULT_SUCCESS : Swift_Events_SendEvent::RESULT_FAILED); + $this->_eventDispatcher->dispatchEvent($evt, 'sendPerformed'); + } + + return 1; + } + + /** + * Register a plugin. + * + * @param Swift_Events_EventListener $plugin + */ + public function registerPlugin(Swift_Events_EventListener $plugin) + { + $this->_eventDispatcher->bindEventListener($plugin); + } +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/.svn/text-base/StreamBuffer.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/.svn/text-base/StreamBuffer.php.svn-base new file mode 100644 index 0000000..01ae8a5 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/.svn/text-base/StreamBuffer.php.svn-base @@ -0,0 +1,276 @@ +_replacementFactory = $replacementFactory; + } + + /** + * Perform any initialization needed, using the given $params. + * Parameters will vary depending upon the type of IoBuffer used. + * @param array $params + */ + public function initialize(array $params) + { + $this->_params = $params; + switch ($params['type']) + { + case self::TYPE_PROCESS: + $this->_establishProcessConnection(); + break; + case self::TYPE_SOCKET: + default: + $this->_establishSocketConnection(); + break; + } + } + + /** + * Set an individual param on the buffer (e.g. switching to SSL). + * @param string $param + * @param mixed $value + */ + public function setParam($param, $value) + { + if (isset($this->_stream)) + { + switch ($param) + { + case 'protocol': + if (!array_key_exists('protocol', $this->_params) + || $value != $this->_params['protocol']) + { + if ('tls' == $value) + { + stream_socket_enable_crypto( + $this->_stream, true, STREAM_CRYPTO_METHOD_TLS_CLIENT + ); + } + } + break; + } + } + $this->_params[$param] = $value; + } + + /** + * Perform any shutdown logic needed. + */ + public function terminate() + { + if (isset($this->_stream)) + { + switch ($this->_params['type']) + { + case self::TYPE_PROCESS: + fclose($this->_in); + fclose($this->_out); + proc_close($this->_stream); + break; + case self::TYPE_SOCKET: + default: + fclose($this->_stream); + break; + } + } + $this->_stream = null; + $this->_out = null; + $this->_in = null; + } + + /** + * Set an array of string replacements which should be made on data written + * to the buffer. This could replace LF with CRLF for example. + * @param string[] $replacements + */ + public function setWriteTranslations(array $replacements) + { + foreach ($this->_translations as $search => $replace) + { + if (!isset($replacements[$search])) + { + $this->removeFilter($search); + unset($this->_translations[$search]); + } + } + + foreach ($replacements as $search => $replace) + { + if (!isset($this->_translations[$search])) + { + $this->addFilter( + $this->_replacementFactory->createFilter($search, $replace), $search + ); + $this->_translations[$search] = true; + } + } + } + + /** + * Get a line of output (including any CRLF). + * The $sequence number comes from any writes and may or may not be used + * depending upon the implementation. + * @param int $sequence of last write to scan from + * @return string + */ + public function readLine($sequence) + { + if (isset($this->_out) && !feof($this->_out)) + { + $line = fgets($this->_out); + return $line; + } + } + + /** + * Reads $length bytes from the stream into a string and moves the pointer + * through the stream by $length. If less bytes exist than are requested the + * remaining bytes are given instead. If no bytes are remaining at all, boolean + * false is returned. + * @param int $length + * @return string + */ + public function read($length) + { + if (isset($this->_out) && !feof($this->_out)) + { + $ret = fread($this->_out, $length); + return $ret; + } + } + + /** Not implemented */ + public function setReadPointer($byteOffset) + { + } + + // -- Protected methods + + /** Flush the stream contents */ + protected function _flush() + { + if (isset($this->_in)) + { + fflush($this->_in); + } + } + + /** Write this bytes to the stream */ + protected function _commit($bytes) + { + if (isset($this->_in) + && fwrite($this->_in, $bytes)) + { + return ++$this->_sequence; + } + } + + // -- Private methods + + /** + * Establishes a connection to a remote server. + * @access private + */ + private function _establishSocketConnection() + { + $host = $this->_params['host']; + if (!empty($this->_params['protocol'])) + { + $host = $this->_params['protocol'] . '://' . $host; + } + $timeout = 15; + if (!empty($this->_params['timeout'])) + { + $timeout = $this->_params['timeout']; + } + if (!$this->_stream = fsockopen($host, $this->_params['port'], $errno, $errstr, $timeout)) + { + throw new Swift_TransportException( + 'Connection could not be established with host ' . $this->_params['host'] . + ' [' . $errstr . ' #' . $errno . ']' + ); + } + if (!empty($this->_params['blocking'])) + { + stream_set_blocking($this->_stream, 1); + } + else + { + stream_set_blocking($this->_stream, 0); + } + $this->_in =& $this->_stream; + $this->_out =& $this->_stream; + } + + /** + * Opens a process for input/output. + * @access private + */ + private function _establishProcessConnection() + { + $command = $this->_params['command']; + $descriptorSpec = array( + 0 => array('pipe', 'r'), + 1 => array('pipe', 'w'), + 2 => array('pipe', 'w') + ); + $this->_stream = proc_open($command, $descriptorSpec, $pipes); + stream_set_blocking($pipes[2], 0); + if ($err = stream_get_contents($pipes[2])) + { + throw new Swift_TransportException( + 'Process could not be started [' . $err . ']' + ); + } + $this->_in =& $pipes[0]; + $this->_out =& $pipes[1]; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/AbstractSmtpTransport.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/AbstractSmtpTransport.php new file mode 100644 index 0000000..3329d34 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/AbstractSmtpTransport.php @@ -0,0 +1,543 @@ +_eventDispatcher = $dispatcher; + $this->_buffer = $buf; + $this->_lookupHostname(); + } + + /** + * Set the name of the local domain which Swift will identify itself as. + * This should be a fully-qualified domain name and should be truly the domain + * you're using. If your server doesn't have a domain name, use the IP in square + * brackets (i.e. [127.0.0.1]). + * + * @param string $domain + */ + public function setLocalDomain($domain) + { + $this->_domain = $domain; + return $this; + } + + /** + * Get the name of the domain Swift will identify as. + * + * @return string + */ + public function getLocalDomain() + { + return $this->_domain; + } + + /** + * Start the SMTP connection. + */ + public function start() + { + if (!$this->_started) + { + if ($evt = $this->_eventDispatcher->createTransportChangeEvent($this)) + { + $this->_eventDispatcher->dispatchEvent($evt, 'beforeTransportStarted'); + if ($evt->bubbleCancelled()) + { + return; + } + } + + try + { + $this->_buffer->initialize($this->_getBufferParams()); + } + catch (Swift_TransportException $e) + { + $this->_throwException($e); + } + $this->_readGreeting(); + $this->_doHeloCommand(); + + if ($evt) + { + $this->_eventDispatcher->dispatchEvent($evt, 'transportStarted'); + } + + $this->_started = true; + } + } + + /** + * Test if an SMTP connection has been established. + * + * @return boolean + */ + public function isStarted() + { + return $this->_started; + } + + /** + * Send the given Message. + * + * Recipient/sender data will be retreived from the Message API. + * The return value is the number of recipients who were accepted for delivery. + * + * @param Swift_Mime_Message $message + * @param string[] &$failedRecipients to collect failures by-reference + * @return int + */ + public function send(Swift_Mime_Message $message, &$failedRecipients = null) + { + $sent = 0; + $failedRecipients = (array) $failedRecipients; + + if (!$reversePath = $this->_getReversePath($message)) + { + throw new Swift_TransportException( + 'Cannot send message without a sender address' + ); + } + + if ($evt = $this->_eventDispatcher->createSendEvent($this, $message)) + { + $this->_eventDispatcher->dispatchEvent($evt, 'beforeSendPerformed'); + if ($evt->bubbleCancelled()) + { + return 0; + } + } + + $to = (array) $message->getTo(); + $cc = (array) $message->getCc(); + $bcc = (array) $message->getBcc(); + + $message->setBcc(array()); + + try + { + $sent += $this->_sendTo($message, $reversePath, $to, $failedRecipients); + $sent += $this->_sendCc($message, $reversePath, $cc, $failedRecipients); + $sent += $this->_sendBcc($message, $reversePath, $bcc, $failedRecipients); + } + catch (Exception $e) + { + $message->setBcc($bcc); + throw $e; + } + + $message->setBcc($bcc); + + if ($evt) + { + if ($sent == count($to) + count($cc) + count($bcc)) + { + $evt->setResult(Swift_Events_SendEvent::RESULT_SUCCESS); + } + elseif ($sent > 0) + { + $evt->setResult(Swift_Events_SendEvent::RESULT_TENTATIVE); + } + else + { + $evt->setResult(Swift_Events_SendEvent::RESULT_FAILED); + } + $evt->setFailedRecipients($failedRecipients); + $this->_eventDispatcher->dispatchEvent($evt, 'sendPerformed'); + } + + $message->generateId(); //Make sure a new Message ID is used + + return $sent; + } + + /** + * Stop the SMTP connection. + */ + public function stop() + { + if ($this->_started) + { + if ($evt = $this->_eventDispatcher->createTransportChangeEvent($this)) + { + $this->_eventDispatcher->dispatchEvent($evt, 'beforeTransportStopped'); + if ($evt->bubbleCancelled()) + { + return; + } + } + + try + { + $this->executeCommand("QUIT\r\n", array(221)); + } + catch (Swift_TransportException $e) {} + + try + { + $this->_buffer->terminate(); + + if ($evt) + { + $this->_eventDispatcher->dispatchEvent($evt, 'transportStopped'); + } + } + catch (Swift_TransportException $e) + { + $this->_throwException($e); + } + } + $this->_started = false; + } + + /** + * Register a plugin. + * + * @param Swift_Events_EventListener $plugin + */ + public function registerPlugin(Swift_Events_EventListener $plugin) + { + $this->_eventDispatcher->bindEventListener($plugin); + } + + /** + * Reset the current mail transaction. + */ + public function reset() + { + $this->executeCommand("RSET\r\n", array(250)); + } + + /** + * Get the IoBuffer where read/writes are occurring. + * + * @return Swift_Transport_IoBuffer + */ + public function getBuffer() + { + return $this->_buffer; + } + + /** + * Run a command against the buffer, expecting the given response codes. + * + * If no response codes are given, the response will not be validated. + * If codes are given, an exception will be thrown on an invalid response. + * + * @param string $command + * @param int[] $codes + * @param string[] &$failures + * @return string + */ + public function executeCommand($command, $codes = array(), &$failures = null) + { + $failures = (array) $failures; + $seq = $this->_buffer->write($command); + $response = $this->_getFullResponse($seq); + if ($evt = $this->_eventDispatcher->createCommandEvent($this, $command, $codes)) + { + $this->_eventDispatcher->dispatchEvent($evt, 'commandSent'); + } + $this->_assertResponseCode($response, $codes); + return $response; + } + + // -- Protected methods + + /** Read the opening SMTP greeting */ + protected function _readGreeting() + { + $this->_assertResponseCode($this->_getFullResponse(0), array(220)); + } + + /** Send the HELO welcome */ + protected function _doHeloCommand() + { + $this->executeCommand( + sprintf("HELO %s\r\n", $this->_domain), array(250) + ); + } + + /** Send the MAIL FROM command */ + protected function _doMailFromCommand($address) + { + $this->executeCommand( + sprintf("MAIL FROM: <%s>\r\n", $address), array(250) + ); + } + + /** Send the RCPT TO command */ + protected function _doRcptToCommand($address) + { + $this->executeCommand( + sprintf("RCPT TO: <%s>\r\n", $address), array(250, 251, 252) + ); + } + + /** Send the DATA command */ + protected function _doDataCommand() + { + $this->executeCommand("DATA\r\n", array(354)); + } + + /** Stream the contents of the message over the buffer */ + protected function _streamMessage(Swift_Mime_Message $message) + { + $this->_buffer->setWriteTranslations(array("\r\n." => "\r\n..")); + try + { + $message->toByteStream($this->_buffer); + $this->_buffer->flushBuffers(); + } + catch (Swift_TransportException $e) + { + $this->_throwException($e); + } + $this->_buffer->setWriteTranslations(array()); + $this->executeCommand("\r\n.\r\n", array(250)); + } + + /** Determine the best-use reverse path for this message */ + protected function _getReversePath(Swift_Mime_Message $message) + { + $return = $message->getReturnPath(); + $sender = $message->getSender(); + $from = $message->getFrom(); + $path = null; + if (!empty($return)) + { + $path = $return; + } + elseif (!empty($sender)) + { + // Don't use array_keys + reset($sender); // Reset Pointer to first pos + $path = key($sender); // Get key + } + elseif (!empty($from)) + { + reset($from); // Reset Pointer to first pos + $path = key($from); // Get key + } + return $path; + } + + /** Throw a TransportException, first sending it to any listeners */ + protected function _throwException(Swift_TransportException $e) + { + if ($evt = $this->_eventDispatcher->createTransportExceptionEvent($this, $e)) + { + $this->_eventDispatcher->dispatchEvent($evt, 'exceptionThrown'); + if (!$evt->bubbleCancelled()) + { + throw $e; + } + } + else + { + throw $e; + } + } + + /** Throws an Exception if a response code is incorrect */ + protected function _assertResponseCode($response, $wanted) + { + list($code, $separator, $text) = sscanf($response, '%3d%[ -]%s'); + $valid = (empty($wanted) || in_array($code, $wanted)); + + if ($evt = $this->_eventDispatcher->createResponseEvent($this, $response, + $valid)) + { + $this->_eventDispatcher->dispatchEvent($evt, 'responseReceived'); + } + + if (!$valid) + { + $this->_throwException( + new Swift_TransportException( + 'Expected response code ' . implode('/', $wanted) . ' but got code ' . + '"' . $code . '", with message "' . $response . '"' + ) + ); + } + } + + /** Get an entire multi-line response using its sequence number */ + protected function _getFullResponse($seq) + { + $response = ''; + try + { + do + { + $line = $this->_buffer->readLine($seq); + $response .= $line; + } + while (null !== $line && false !== $line && ' ' != $line{3}); + } + catch (Swift_TransportException $e) + { + $this->_throwException($e); + } + return $response; + } + + // -- Private methods + + /** Send an email to the given recipients from the given reverse path */ + private function _doMailTransaction($message, $reversePath, + array $recipients, array &$failedRecipients) + { + $sent = 0; + $this->_doMailFromCommand($reversePath); + foreach ($recipients as $forwardPath) + { + try + { + $this->_doRcptToCommand($forwardPath); + $sent++; + } + catch (Swift_TransportException $e) + { + $failedRecipients[] = $forwardPath; + } + } + + if ($sent != 0) + { + $this->_doDataCommand(); + $this->_streamMessage($message); + } + else + { + $this->reset(); + } + + return $sent; + } + + /** Send a message to the given To: recipients */ + private function _sendTo(Swift_Mime_Message $message, $reversePath, + array $to, array &$failedRecipients) + { + if (empty($to)) + { + return 0; + } + return $this->_doMailTransaction($message, $reversePath, array_keys($to), + $failedRecipients); + } + + /** Send a message to the given Cc: recipients */ + private function _sendCc(Swift_Mime_Message $message, $reversePath, + array $cc, array &$failedRecipients) + { + if (empty($cc)) + { + return 0; + } + return $this->_doMailTransaction($message, $reversePath, array_keys($cc), + $failedRecipients); + } + + /** Send a message to all Bcc: recipients */ + private function _sendBcc(Swift_Mime_Message $message, $reversePath, + array $bcc, array &$failedRecipients) + { + $sent = 0; + foreach ($bcc as $forwardPath => $name) + { + $message->setBcc(array($forwardPath => $name)); + $sent += $this->_doMailTransaction( + $message, $reversePath, array($forwardPath), $failedRecipients + ); + } + return $sent; + } + + /** Try to determine the hostname of the server this is run on */ + private function _lookupHostname() + { + if (!empty($_SERVER['SERVER_NAME']) + && $this->_isFqdn($_SERVER['SERVER_NAME'])) + { + $this->_domain = $_SERVER['SERVER_NAME']; + } + elseif (!empty($_SERVER['SERVER_ADDR'])) + { + $this->_domain = sprintf('[%s]', $_SERVER['SERVER_ADDR']); + } + } + + /** Determine is the $hostname is a fully-qualified name */ + private function _isFqdn($hostname) + { + //We could do a really thorough check, but there's really no point + if (false !== $dotPos = strpos($hostname, '.')) + { + return ($dotPos > 0) && ($dotPos != strlen($hostname) - 1); + } + else + { + return false; + } + } + + /** + * Destructor. + */ + public function __destruct() + { + $this->stop(); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/.svn/all-wcprops b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/.svn/all-wcprops new file mode 100644 index 0000000..4590dd4 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 81 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp +END +Authenticator.php +K 25 +svn:wc:ra_dav:version-url +V 99 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/Authenticator.php +END +AuthHandler.php +K 25 +svn:wc:ra_dav:version-url +V 97 +/!svn/ver/23881/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/AuthHandler.php +END diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/.svn/entries b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/.svn/entries new file mode 100644 index 0000000..33e0074 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/.svn/entries @@ -0,0 +1,99 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp +http://svn.symfony-project.com + + + +2009-09-22T14:37:05.004136Z +22246 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +Authenticator.php +file + + + + +2012-05-10T18:41:51.585550Z +30f92ba42ace66ec0ecdf424e00fa816 +2009-09-13T15:30:06.022864Z +21985 +fabien + + + + + + + + + + + + + + + + + + + + + +851 + +Auth +dir + +AuthHandler.php +file + + + + +2012-05-10T18:41:51.585550Z +f9001d6205520b89bea8ef1ef9869d7b +2009-09-22T14:37:05.004136Z +22246 +fabien + + + + + + + + + + + + + + + + + + + + + +5664 + diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/.svn/text-base/AuthHandler.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/.svn/text-base/AuthHandler.php.svn-base new file mode 100644 index 0000000..a223169 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/.svn/text-base/AuthHandler.php.svn-base @@ -0,0 +1,262 @@ +setAuthenticators($authenticators); + } + + /** + * Set the Authenticators which can process a login request. + * @param Swift_Transport_Esmtp_Authenticator[] $authenticators + */ + public function setAuthenticators(array $authenticators) + { + $this->_authenticators = $authenticators; + } + + /** + * Get the Authenticators which can process a login request. + * @return Swift_Transport_Esmtp_Authenticator[] + */ + public function getAuthenticators() + { + return $this->_authenticators; + } + + /** + * Set the username to authenticate with. + * @param string $username + */ + public function setUsername($username) + { + $this->_username = $username; + } + + /** + * Get the username to authenticate with. + * @return string + */ + public function getUsername() + { + return $this->_username; + } + + /** + * Set the password to authenticate with. + * @param string $password + */ + public function setPassword($password) + { + $this->_password = $password; + } + + /** + * Get the password to authenticate with. + * @return string + */ + public function getPassword() + { + return $this->_password; + } + + /** + * Set the auth mode to use to authenticate. + * @param string $mode + */ + public function setAuthMode($mode) + { + $this->_auth_mode = $mode; + } + + /** + * Get the auth mode to use to authenticate. + * @return string + */ + public function getAuthMode() + { + return $this->_auth_mode; + } + + /** + * Get the name of the ESMTP extension this handles. + * @return boolean + */ + public function getHandledKeyword() + { + return 'AUTH'; + } + + /** + * Set the parameters which the EHLO greeting indicated. + * @param string[] $parameters + */ + public function setKeywordParams(array $parameters) + { + $this->_esmtpParams = $parameters; + } + + /** + * Runs immediately after a EHLO has been issued. + * @param Swift_Transport_SmtpAgent $agent to read/write + */ + public function afterEhlo(Swift_Transport_SmtpAgent $agent) + { + if ($this->_username) + { + $count = 0; + foreach ($this->_getAuthenticatorsForAgent() as $authenticator) + { + if (in_array(strtolower($authenticator->getAuthKeyword()), + array_map('strtolower', $this->_esmtpParams))) + { + $count++; + if ($authenticator->authenticate($agent, $this->_username, $this->_password)) + { + return; + } + } + } + throw new Swift_TransportException( + 'Failed to authenticate on SMTP server with username "' . + $this->_username . '" using ' . $count . ' possible authenticators' + ); + } + } + + /** + * Not used. + */ + public function getMailParams() + { + return array(); + } + + /** + * Not used. + */ + public function getRcptParams() + { + return array(); + } + + /** + * Not used. + */ + public function onCommand(Swift_Transport_SmtpAgent $agent, + $command, $codes = array(), &$failedRecipients = null, &$stop = false) + { + } + + /** + * Returns +1, -1 or 0 according to the rules for usort(). + * This method is called to ensure extensions can be execute in an appropriate order. + * @param string $esmtpKeyword to compare with + * @return int + */ + public function getPriorityOver($esmtpKeyword) + { + return 0; + } + + /** + * Returns an array of method names which are exposed to the Esmtp class. + * @return string[] + */ + public function exposeMixinMethods() + { + return array('setUsername', 'getUsername', 'setPassword', 'getPassword', 'setAuthMode', 'getAuthMode'); + } + + /** + * Not used. + */ + public function resetState() + { + } + + // -- Protected methods + + /** + * Returns the authenticator list for the given agent. + * @param Swift_Transport_SmtpAgent $agent + * @return array + * @access protected + */ + protected function _getAuthenticatorsForAgent() + { + if (!$mode = strtolower($this->_auth_mode)) + { + return $this->_authenticators; + } + + foreach ($this->_authenticators as $authenticator) + { + if (strtolower($authenticator->getAuthKeyword()) == $mode) + { + return array($authenticator); + } + } + + throw new Swift_TransportException('Auth mode '.$mode.' is invalid'); + } +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/.svn/text-base/Authenticator.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/.svn/text-base/Authenticator.php.svn-base new file mode 100644 index 0000000..bf166d3 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/.svn/text-base/Authenticator.php.svn-base @@ -0,0 +1,38 @@ +executeCommand("AUTH CRAM-MD5\r\n", array(334)); + $challenge = base64_decode(substr($challenge, 4)); + $message = base64_encode( + $username . ' ' . $this->_getResponse($password, $challenge) + ); + $agent->executeCommand(sprintf("%s\r\n", $message), array(235)); + return true; + } + catch (Swift_TransportException $e) + { + $agent->executeCommand("RSET\r\n", array(250)); + return false; + } + } + + /** + * Generate a CRAM-MD5 response from a server challenge. + * @param string $secret + * @param string $challenge + * @return string + */ + private function _getResponse($secret, $challenge) + { + if (strlen($secret) > 64) + { + $secret = pack('H32', md5($secret)); + } + + if (strlen($secret) < 64) + { + $secret = str_pad($secret, 64, chr(0)); + } + + $k_ipad = substr($secret, 0, 64) ^ str_repeat(chr(0x36), 64); + $k_opad = substr($secret, 0, 64) ^ str_repeat(chr(0x5C), 64); + + $inner = pack('H32', md5($k_ipad . $challenge)); + $digest = md5($k_opad . $inner); + + return $digest; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/Auth/.svn/text-base/LoginAuthenticator.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/Auth/.svn/text-base/LoginAuthenticator.php.svn-base new file mode 100644 index 0000000..bd22617 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/Auth/.svn/text-base/LoginAuthenticator.php.svn-base @@ -0,0 +1,58 @@ +executeCommand("AUTH LOGIN\r\n", array(334)); + $agent->executeCommand(sprintf("%s\r\n", base64_encode($username)), array(334)); + $agent->executeCommand(sprintf("%s\r\n", base64_encode($password)), array(235)); + return true; + } + catch (Swift_TransportException $e) + { + $agent->executeCommand("RSET\r\n", array(250)); + return false; + } + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/Auth/.svn/text-base/PlainAuthenticator.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/Auth/.svn/text-base/PlainAuthenticator.php.svn-base new file mode 100644 index 0000000..ddd8094 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/Auth/.svn/text-base/PlainAuthenticator.php.svn-base @@ -0,0 +1,57 @@ +executeCommand(sprintf("AUTH PLAIN %s\r\n", $message), array(235)); + return true; + } + catch (Swift_TransportException $e) + { + $agent->executeCommand("RSET\r\n", array(250)); + return false; + } + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/Auth/CramMd5Authenticator.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/Auth/CramMd5Authenticator.php new file mode 100644 index 0000000..4c7e0f2 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/Auth/CramMd5Authenticator.php @@ -0,0 +1,88 @@ +executeCommand("AUTH CRAM-MD5\r\n", array(334)); + $challenge = base64_decode(substr($challenge, 4)); + $message = base64_encode( + $username . ' ' . $this->_getResponse($password, $challenge) + ); + $agent->executeCommand(sprintf("%s\r\n", $message), array(235)); + return true; + } + catch (Swift_TransportException $e) + { + $agent->executeCommand("RSET\r\n", array(250)); + return false; + } + } + + /** + * Generate a CRAM-MD5 response from a server challenge. + * @param string $secret + * @param string $challenge + * @return string + */ + private function _getResponse($secret, $challenge) + { + if (strlen($secret) > 64) + { + $secret = pack('H32', md5($secret)); + } + + if (strlen($secret) < 64) + { + $secret = str_pad($secret, 64, chr(0)); + } + + $k_ipad = substr($secret, 0, 64) ^ str_repeat(chr(0x36), 64); + $k_opad = substr($secret, 0, 64) ^ str_repeat(chr(0x5C), 64); + + $inner = pack('H32', md5($k_ipad . $challenge)); + $digest = md5($k_opad . $inner); + + return $digest; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/Auth/LoginAuthenticator.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/Auth/LoginAuthenticator.php new file mode 100644 index 0000000..bd22617 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/Auth/LoginAuthenticator.php @@ -0,0 +1,58 @@ +executeCommand("AUTH LOGIN\r\n", array(334)); + $agent->executeCommand(sprintf("%s\r\n", base64_encode($username)), array(334)); + $agent->executeCommand(sprintf("%s\r\n", base64_encode($password)), array(235)); + return true; + } + catch (Swift_TransportException $e) + { + $agent->executeCommand("RSET\r\n", array(250)); + return false; + } + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/Auth/PlainAuthenticator.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/Auth/PlainAuthenticator.php new file mode 100644 index 0000000..ddd8094 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/Auth/PlainAuthenticator.php @@ -0,0 +1,57 @@ +executeCommand(sprintf("AUTH PLAIN %s\r\n", $message), array(235)); + return true; + } + catch (Swift_TransportException $e) + { + $agent->executeCommand("RSET\r\n", array(250)); + return false; + } + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/AuthHandler.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/AuthHandler.php new file mode 100644 index 0000000..a223169 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/AuthHandler.php @@ -0,0 +1,262 @@ +setAuthenticators($authenticators); + } + + /** + * Set the Authenticators which can process a login request. + * @param Swift_Transport_Esmtp_Authenticator[] $authenticators + */ + public function setAuthenticators(array $authenticators) + { + $this->_authenticators = $authenticators; + } + + /** + * Get the Authenticators which can process a login request. + * @return Swift_Transport_Esmtp_Authenticator[] + */ + public function getAuthenticators() + { + return $this->_authenticators; + } + + /** + * Set the username to authenticate with. + * @param string $username + */ + public function setUsername($username) + { + $this->_username = $username; + } + + /** + * Get the username to authenticate with. + * @return string + */ + public function getUsername() + { + return $this->_username; + } + + /** + * Set the password to authenticate with. + * @param string $password + */ + public function setPassword($password) + { + $this->_password = $password; + } + + /** + * Get the password to authenticate with. + * @return string + */ + public function getPassword() + { + return $this->_password; + } + + /** + * Set the auth mode to use to authenticate. + * @param string $mode + */ + public function setAuthMode($mode) + { + $this->_auth_mode = $mode; + } + + /** + * Get the auth mode to use to authenticate. + * @return string + */ + public function getAuthMode() + { + return $this->_auth_mode; + } + + /** + * Get the name of the ESMTP extension this handles. + * @return boolean + */ + public function getHandledKeyword() + { + return 'AUTH'; + } + + /** + * Set the parameters which the EHLO greeting indicated. + * @param string[] $parameters + */ + public function setKeywordParams(array $parameters) + { + $this->_esmtpParams = $parameters; + } + + /** + * Runs immediately after a EHLO has been issued. + * @param Swift_Transport_SmtpAgent $agent to read/write + */ + public function afterEhlo(Swift_Transport_SmtpAgent $agent) + { + if ($this->_username) + { + $count = 0; + foreach ($this->_getAuthenticatorsForAgent() as $authenticator) + { + if (in_array(strtolower($authenticator->getAuthKeyword()), + array_map('strtolower', $this->_esmtpParams))) + { + $count++; + if ($authenticator->authenticate($agent, $this->_username, $this->_password)) + { + return; + } + } + } + throw new Swift_TransportException( + 'Failed to authenticate on SMTP server with username "' . + $this->_username . '" using ' . $count . ' possible authenticators' + ); + } + } + + /** + * Not used. + */ + public function getMailParams() + { + return array(); + } + + /** + * Not used. + */ + public function getRcptParams() + { + return array(); + } + + /** + * Not used. + */ + public function onCommand(Swift_Transport_SmtpAgent $agent, + $command, $codes = array(), &$failedRecipients = null, &$stop = false) + { + } + + /** + * Returns +1, -1 or 0 according to the rules for usort(). + * This method is called to ensure extensions can be execute in an appropriate order. + * @param string $esmtpKeyword to compare with + * @return int + */ + public function getPriorityOver($esmtpKeyword) + { + return 0; + } + + /** + * Returns an array of method names which are exposed to the Esmtp class. + * @return string[] + */ + public function exposeMixinMethods() + { + return array('setUsername', 'getUsername', 'setPassword', 'getPassword', 'setAuthMode', 'getAuthMode'); + } + + /** + * Not used. + */ + public function resetState() + { + } + + // -- Protected methods + + /** + * Returns the authenticator list for the given agent. + * @param Swift_Transport_SmtpAgent $agent + * @return array + * @access protected + */ + protected function _getAuthenticatorsForAgent() + { + if (!$mode = strtolower($this->_auth_mode)) + { + return $this->_authenticators; + } + + foreach ($this->_authenticators as $authenticator) + { + if (strtolower($authenticator->getAuthKeyword()) == $mode) + { + return array($authenticator); + } + } + + throw new Swift_TransportException('Auth mode '.$mode.' is invalid'); + } +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/Authenticator.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/Authenticator.php new file mode 100644 index 0000000..bf166d3 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/Esmtp/Authenticator.php @@ -0,0 +1,38 @@ +. + * @return string[] + */ + public function getMailParams(); + + /** + * Get params which are appended to RCPT TO:<>. + * @return string[] + */ + public function getRcptParams(); + + /** + * Runs when a command is due to be sent. + * @param Swift_Transport_SmtpAgent $agent to read/write + * @param string $command to send + * @param int[] $codes expected in response + * @param string[] &$failedRecipients + * @param boolean &$stop to be set true if the command is now sent + */ + public function onCommand(Swift_Transport_SmtpAgent $agent, + $command, $codes = array(), &$failedRecipients = null, &$stop = false); + + /** + * Returns +1, -1 or 0 according to the rules for usort(). + * This method is called to ensure extensions can be execute in an appropriate order. + * @param string $esmtpKeyword to compare with + * @return int + */ + public function getPriorityOver($esmtpKeyword); + + /** + * Returns an array of method names which are exposed to the Esmtp class. + * @return string[] + */ + public function exposeMixinMethods(); + + /** + * Tells this handler to clear any buffers and reset its state. + */ + public function resetState(); + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/EsmtpTransport.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/EsmtpTransport.php new file mode 100644 index 0000000..fc10ba8 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/EsmtpTransport.php @@ -0,0 +1,339 @@ + 'tcp', + 'host' => 'localhost', + 'port' => 25, + 'timeout' => 30, + 'blocking' => 1, + 'type' => Swift_Transport_IoBuffer::TYPE_SOCKET + ); + + /** + * Creates a new EsmtpTransport using the given I/O buffer. + * @param Swift_Transport_IoBuffer $buf + * @param Swift_Transport_EsmtpHandler[] $extensionHandlers + * @param Swift_Events_EventDispatcher $dispatcher + */ + public function __construct(Swift_Transport_IoBuffer $buf, + array $extensionHandlers, Swift_Events_EventDispatcher $dispatcher) + { + parent::__construct($buf, $dispatcher); + $this->setExtensionHandlers($extensionHandlers); + } + + /** + * Set the host to connect to. + * @param string $host + */ + public function setHost($host) + { + $this->_params['host'] = $host; + return $this; + } + + /** + * Get the host to connect to. + * @return string + */ + public function getHost() + { + return $this->_params['host']; + } + + /** + * Set the port to connect to. + * @param int $port + */ + public function setPort($port) + { + $this->_params['port'] = (int) $port; + return $this; + } + + /** + * Get the port to connect to. + * @return int + */ + public function getPort() + { + return $this->_params['port']; + } + + /** + * Set the connection timeout. + * @param int $timeout seconds + */ + public function setTimeout($timeout) + { + $this->_params['timeout'] = (int) $timeout; + return $this; + } + + /** + * Get the connection timeout. + * @return int + */ + public function getTimeout() + { + return $this->_params['timeout']; + } + + /** + * Set the encryption type (tls or ssl) + * @param string $encryption + */ + public function setEncryption($enc) + { + $this->_params['protocol'] = $enc; + return $this; + } + + /** + * Get the encryption type. + * @return string + */ + public function getEncryption() + { + return $this->_params['protocol']; + } + + /** + * Set ESMTP extension handlers. + * @param Swift_Transport_EsmtpHandler[] $handlers + */ + public function setExtensionHandlers(array $handlers) + { + $assoc = array(); + foreach ($handlers as $handler) + { + $assoc[$handler->getHandledKeyword()] = $handler; + } + uasort($assoc, array($this, '_sortHandlers')); + $this->_handlers = $assoc; + $this->_setHandlerParams(); + return $this; + } + + /** + * Get ESMTP extension handlers. + * @return Swift_Transport_EsmtpHandler[] + */ + public function getExtensionHandlers() + { + return array_values($this->_handlers); + } + + /** + * Run a command against the buffer, expecting the given response codes. + * If no response codes are given, the response will not be validated. + * If codes are given, an exception will be thrown on an invalid response. + * @param string $command + * @param int[] $codes + * @param string[] &$failures + * @return string + */ + public function executeCommand($command, $codes = array(), &$failures = null) + { + $failures = (array) $failures; + $stopSignal = false; + $response = null; + foreach ($this->_getActiveHandlers() as $handler) + { + $response = $handler->onCommand( + $this, $command, $codes, $failures, $stopSignal + ); + if ($stopSignal) + { + return $response; + } + } + return parent::executeCommand($command, $codes, $failures); + } + + // -- Mixin invocation code + + /** Mixin handling method for ESMTP handlers */ + public function __call($method, $args) + { + foreach ($this->_handlers as $handler) + { + if (in_array(strtolower($method), + array_map('strtolower', (array) $handler->exposeMixinMethods()) + )) + { + $return = call_user_func_array(array($handler, $method), $args); + //Allow fluid method calls + if (is_null($return) && substr($method, 0, 3) == 'set') + { + return $this; + } + else + { + return $return; + } + } + } + trigger_error('Call to undefined method ' . $method, E_USER_ERROR); + } + + // -- Protected methods + + /** Get the params to initialize the buffer */ + protected function _getBufferParams() + { + return $this->_params; + } + + /** Overridden to perform EHLO instead */ + protected function _doHeloCommand() + { + try + { + $response = $this->executeCommand( + sprintf("EHLO %s\r\n", $this->_domain), array(250) + ); + $this->_capabilities = $this->_getCapabilities($response); + $this->_setHandlerParams(); + foreach ($this->_getActiveHandlers() as $handler) + { + $handler->afterEhlo($this); + } + } + catch (Swift_TransportException $e) + { + parent::_doHeloCommand(); + } + } + + /** Overridden to add Extension support */ + protected function _doMailFromCommand($address) + { + $handlers = $this->_getActiveHandlers(); + $params = array(); + foreach ($handlers as $handler) + { + $params = array_merge($params, (array) $handler->getMailParams()); + } + $paramStr = !empty($params) ? ' ' . implode(' ', $params) : ''; + $this->executeCommand( + sprintf("MAIL FROM: <%s>%s\r\n", $address, $paramStr), array(250) + ); + } + + /** Overridden to add Extension support */ + protected function _doRcptToCommand($address) + { + $handlers = $this->_getActiveHandlers(); + $params = array(); + foreach ($handlers as $handler) + { + $params = array_merge($params, (array) $handler->getRcptParams()); + } + $paramStr = !empty($params) ? ' ' . implode(' ', $params) : ''; + $this->executeCommand( + sprintf("RCPT TO: <%s>%s\r\n", $address, $paramStr), array(250, 251, 252) + ); + } + + // -- Private methods + + /** Determine ESMTP capabilities by function group */ + private function _getCapabilities($ehloResponse) + { + $capabilities = array(); + $ehloResponse = trim($ehloResponse); + $lines = explode("\r\n", $ehloResponse); + array_shift($lines); + foreach ($lines as $line) + { + if (preg_match('/^[0-9]{3}[ -]([A-Z0-9-]+)((?:[ =].*)?)$/Di', $line, $matches)) + { + $keyword = strtoupper($matches[1]); + $paramStr = strtoupper(ltrim($matches[2], ' =')); + $params = !empty($paramStr) ? explode(' ', $paramStr) : array(); + $capabilities[$keyword] = $params; + } + } + return $capabilities; + } + + /** Set parameters which are used by each extension handler */ + private function _setHandlerParams() + { + foreach ($this->_handlers as $keyword => $handler) + { + if (array_key_exists($keyword, $this->_capabilities)) + { + $handler->setKeywordParams($this->_capabilities[$keyword]); + } + } + } + + /** Get ESMTP handlers which are currently ok to use */ + private function _getActiveHandlers() + { + $handlers = array(); + foreach ($this->_handlers as $keyword => $handler) + { + if (array_key_exists($keyword, $this->_capabilities)) + { + $handlers[] = $handler; + } + } + return $handlers; + } + + /** Custom sort for extension handler ordering */ + private function _sortHandlers($a, $b) + { + return $a->getPriorityOver($b->getHandledKeyword()); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/FailoverTransport.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/FailoverTransport.php new file mode 100644 index 0000000..e62491c --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/FailoverTransport.php @@ -0,0 +1,97 @@ +_transports); + $sent = 0; + + for ($i = 0; $i < $maxTransports + && $transport = $this->_getNextTransport(); ++$i) + { + try + { + if (!$transport->isStarted()) + { + $transport->start(); + } + + return $transport->send($message, $failedRecipients); + } + catch (Swift_TransportException $e) + { + $this->_killCurrentTransport(); + } + } + + if (count($this->_transports) == 0) + { + throw new Swift_TransportException( + 'All Transports in FailoverTransport failed, or no Transports available' + ); + } + + return $sent; + } + + // -- Protected methods + + protected function _getNextTransport() + { + if (!isset($this->_currentTransport)) + { + $this->_currentTransport = parent::_getNextTransport(); + } + return $this->_currentTransport; + } + + protected function _killCurrentTransport() + { + $this->_currentTransport = null; + parent::_killCurrentTransport(); + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/IoBuffer.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/IoBuffer.php new file mode 100644 index 0000000..ac66ef0 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/IoBuffer.php @@ -0,0 +1,65 @@ +_transports = $transports; + $this->_deadTransports = array(); + } + + /** + * Get $transports to delegate to. + * + * @return array Swift_Transport + */ + public function getTransports(array $transports) + { + return array_merge($this->_transports, $this->_deadTransports); + } + + /** + * Test if this Transport mechanism has started. + * + * @return boolean + */ + public function isStarted() + { + return count($this->_transports) > 0; + } + + /** + * Start this Transport mechanism. + */ + public function start() + { + $this->_transports = array_merge($this->_transports, $this->_deadTransports); + } + + /** + * Stop this Transport mechanism. + */ + public function stop() + { + foreach ($this->_transports as $transport) + { + $transport->stop(); + } + } + + /** + * Send the given Message. + * + * Recipient/sender data will be retreived from the Message API. + * The return value is the number of recipients who were accepted for delivery. + * + * @param Swift_Mime_Message $message + * @param string[] &$failedRecipients to collect failures by-reference + * @return int + */ + public function send(Swift_Mime_Message $message, &$failedRecipients = null) + { + $maxTransports = count($this->_transports); + $sent = 0; + + for ($i = 0; $i < $maxTransports + && $transport = $this->_getNextTransport(); ++$i) + { + try + { + if (!$transport->isStarted()) + { + $transport->start(); + } + if ($sent = $transport->send($message, $failedRecipients)) + { + break; + } + } + catch (Swift_TransportException $e) + { + $this->_killCurrentTransport(); + } + } + + if (count($this->_transports) == 0) + { + throw new Swift_TransportException( + 'All Transports in LoadBalancedTransport failed, or no Transports available' + ); + } + + return $sent; + } + + /** + * Register a plugin. + * + * @param Swift_Events_EventListener $plugin + */ + public function registerPlugin(Swift_Events_EventListener $plugin) + { + foreach ($this->_transports as $transport) + { + $transport->registerPlugin($plugin); + } + } + + // -- Protected methods + + /** + * Rotates the transport list around and returns the first instance. + * + * @return Swift_Transport + * @access protected + */ + protected function _getNextTransport() + { + if ($next = array_shift($this->_transports)) + { + $this->_transports[] = $next; + } + return $next; + } + + /** + * Tag the currently used (top of stack) transport as dead/useless. + * + * @access protected + */ + protected function _killCurrentTransport() + { + if ($transport = array_pop($this->_transports)) + { + try + { + $transport->stop(); + } + catch (Exception $e) + { + } + $this->_deadTransports[] = $transport; + } + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/MailInvoker.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/MailInvoker.php new file mode 100644 index 0000000..dda882f --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/MailInvoker.php @@ -0,0 +1,36 @@ +_invoker = $invoker; + $this->_eventDispatcher = $eventDispatcher; + } + + /** + * Not used. + */ + public function isStarted() + { + return false; + } + + /** + * Not used. + */ + public function start() + { + } + + /** + * Not used. + */ + public function stop() + { + } + + /** + * Set the additional parameters used on the mail() function. + * + * This string is formatted for sprintf() where %s is the sender address. + * + * @param string $params + */ + public function setExtraParams($params) + { + $this->_extraParams = $params; + return $this; + } + + /** + * Get the additional parameters used on the mail() function. + * + * This string is formatted for sprintf() where %s is the sender address. + * + * @return string + */ + public function getExtraParams() + { + return $this->_extraParams; + } + + /** + * Send the given Message. + * + * Recipient/sender data will be retreived from the Message API. + * The return value is the number of recipients who were accepted for delivery. + * + * @param Swift_Mime_Message $message + * @param string[] &$failedRecipients to collect failures by-reference + * @return int + */ + public function send(Swift_Mime_Message $message, &$failedRecipients = null) + { + $failedRecipients = (array) $failedRecipients; + + if ($evt = $this->_eventDispatcher->createSendEvent($this, $message)) + { + $this->_eventDispatcher->dispatchEvent($evt, 'beforeSendPerformed'); + if ($evt->bubbleCancelled()) + { + return 0; + } + } + + $count = ( + count((array) $message->getTo()) + + count((array) $message->getCc()) + + count((array) $message->getBcc()) + ); + + $toHeader = $message->getHeaders()->get('To'); + $subjectHeader = $message->getHeaders()->get('Subject'); + + $to = $toHeader->getFieldBody(); + $subject = $subjectHeader->getFieldBody(); + + $reversePath = $this->_getReversePath($message); + + //Remove headers that would otherwise be duplicated + $message->getHeaders()->remove('To'); + $message->getHeaders()->remove('Subject'); + + $messageStr = $message->toString(); + + $message->getHeaders()->set($toHeader); + $message->getHeaders()->set($subjectHeader); + + //Separate headers from body + if (false !== $endHeaders = strpos($messageStr, "\r\n\r\n")) + { + $headers = substr($messageStr, 0, $endHeaders) . "\r\n"; //Keep last EOL + $body = substr($messageStr, $endHeaders + 4); + } + else + { + $headers = $messageStr . "\r\n"; + $body = ''; + } + + unset($messageStr); + + if ("\r\n" != PHP_EOL) //Non-windows (not using SMTP) + { + $headers = str_replace("\r\n", PHP_EOL, $headers); + $body = str_replace("\r\n", PHP_EOL, $body); + } + else //Windows, using SMTP + { + $headers = str_replace("\r\n.", "\r\n..", $headers); + $body = str_replace("\r\n.", "\r\n..", $body); + } + + if ($this->_invoker->mail($to, $subject, $body, $headers, + sprintf($this->_extraParams, $reversePath))) + { + if ($evt) + { + $evt->setResult(Swift_Events_SendEvent::RESULT_SUCCESS); + $evt->setFailedRecipients($failedRecipients); + $this->_eventDispatcher->dispatchEvent($evt, 'sendPerformed'); + } + } + else + { + $failedRecipients = array_merge( + $failedRecipients, + array_keys((array) $message->getTo()), + array_keys((array) $message->getCc()), + array_keys((array) $message->getBcc()) + ); + + if ($evt) + { + $evt->setResult(Swift_Events_SendEvent::RESULT_FAILED); + $evt->setFailedRecipients($failedRecipients); + $this->_eventDispatcher->dispatchEvent($evt, 'sendPerformed'); + } + + $message->generateId(); + + $count = 0; + } + + return $count; + } + + /** + * Register a plugin. + * + * @param Swift_Events_EventListener $plugin + */ + public function registerPlugin(Swift_Events_EventListener $plugin) + { + $this->_eventDispatcher->bindEventListener($plugin); + } + + // -- Private methods + + /** Determine the best-use reverse path for this message */ + private function _getReversePath(Swift_Mime_Message $message) + { + $return = $message->getReturnPath(); + $sender = $message->getSender(); + $from = $message->getFrom(); + $path = null; + if (!empty($return)) + { + $path = $return; + } + elseif (!empty($sender)) + { + $keys = array_keys($sender); + $path = array_shift($keys); + } + elseif (!empty($from)) + { + $keys = array_keys($from); + $path = array_shift($keys); + } + return $path; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/NullTransport.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/NullTransport.php new file mode 100644 index 0000000..c60d938 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/NullTransport.php @@ -0,0 +1,90 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Pretends messages have been sent, but just ignores them. + * @package Swift + * @author Fabien Potencier + */ +class Swift_Transport_NullTransport implements Swift_Transport +{ + /** The event dispatcher from the plugin API */ + private $_eventDispatcher; + + /** + * Constructor. + */ + public function __construct(Swift_Events_EventDispatcher $eventDispatcher) + { + $this->_eventDispatcher = $eventDispatcher; + } + + /** + * Tests if this Transport mechanism has started. + * + * @return boolean + */ + public function isStarted() + { + return true; + } + + /** + * Starts this Transport mechanism. + */ + public function start() + { + } + + /** + * Stops this Transport mechanism. + */ + public function stop() + { + } + + /** + * Sends the given message. + * + * @param Swift_Mime_Message $message + * @param string[] &$failedRecipients to collect failures by-reference + * + * @return int The number of sent emails + */ + public function send(Swift_Mime_Message $message, &$failedRecipients = null) + { + if ($evt = $this->_eventDispatcher->createSendEvent($this, $message)) + { + $this->_eventDispatcher->dispatchEvent($evt, 'beforeSendPerformed'); + if ($evt->bubbleCancelled()) + { + return 0; + } + } + + if ($evt) + { + $evt->setResult(Swift_Events_SendEvent::RESULT_SUCCESS); + $this->_eventDispatcher->dispatchEvent($evt, 'sendPerformed'); + } + + return 0; + } + + /** + * Register a plugin. + * + * @param Swift_Events_EventListener $plugin + */ + public function registerPlugin(Swift_Events_EventListener $plugin) + { + $this->_eventDispatcher->bindEventListener($plugin); + } +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/SendmailTransport.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/SendmailTransport.php new file mode 100644 index 0000000..aae8bde --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/SendmailTransport.php @@ -0,0 +1,173 @@ + 30, + 'blocking' => 1, + 'command' => '/usr/sbin/sendmail -bs', + 'type' => Swift_Transport_IoBuffer::TYPE_PROCESS + ); + + /** + * Create a new SendmailTransport with $buf for I/O. + * @param Swift_Transport_IoBuffer $buf + * @param Swift_Events_EventDispatcher $dispatcher + */ + public function __construct(Swift_Transport_IoBuffer $buf, + Swift_Events_EventDispatcher $dispatcher) + { + parent::__construct($buf, $dispatcher); + } + + /** + * Start the standalone SMTP session if running in -bs mode. + */ + public function start() + { + if (false !== strpos($this->getCommand(), ' -bs')) + { + parent::start(); + } + } + + /** + * Set the command to invoke. + * If using -t mode you are strongly advised to include -oi or -i in the + * flags. For example: /usr/sbin/sendmail -oi -t + * Swift will append a -f flag if one is not present. + * The recommended mode is "-bs" since it is interactive and failure notifications + * are hence possible. + * @param string $command + */ + public function setCommand($command) + { + $this->_params['command'] = $command; + return $this; + } + + /** + * Get the sendmail command which will be invoked. + * @return string + */ + public function getCommand() + { + return $this->_params['command']; + } + + /** + * Send the given Message. + * Recipient/sender data will be retreived from the Message API. + * The return value is the number of recipients who were accepted for delivery. + * NOTE: If using 'sendmail -t' you will not be aware of any failures until + * they bounce (i.e. send() will always return 100% success). + * @param Swift_Mime_Message $message + * @param string[] &$failedRecipients to collect failures by-reference + * @return int + */ + public function send(Swift_Mime_Message $message, &$failedRecipients = null) + { + $failedRecipients = (array) $failedRecipients; + $command = $this->getCommand(); + $buffer = $this->getBuffer(); + + if (false !== strpos($command, ' -t')) + { + if ($evt = $this->_eventDispatcher->createSendEvent($this, $message)) + { + $this->_eventDispatcher->dispatchEvent($evt, 'beforeSendPerformed'); + if ($evt->bubbleCancelled()) + { + return 0; + } + } + + if (false === strpos($command, ' -f')) + { + $command .= ' -f' . $this->_getReversePath($message); + } + + $buffer->initialize(array_merge($this->_params, array('command' => $command))); + + if (false === strpos($command, ' -i') && false === strpos($command, ' -oi')) + { + $buffer->setWriteTranslations(array("\r\n" => "\n", "\n." => "\n..")); + } + else + { + $buffer->setWriteTranslations(array("\r\n"=>"\n")); + } + + $count = count((array) $message->getTo()) + + count((array) $message->getCc()) + + count((array) $message->getBcc()) + ; + $message->toByteStream($buffer); + $buffer->flushBuffers(); + $buffer->setWriteTranslations(array()); + $buffer->terminate(); + + if ($evt) + { + $evt->setResult(Swift_Events_SendEvent::RESULT_SUCCESS); + $evt->setFailedRecipients($failedRecipients); + $this->_eventDispatcher->dispatchEvent($evt, 'sendPerformed'); + } + + $message->generateId(); + } + elseif (false !== strpos($command, ' -bs')) + { + $count = parent::send($message, $failedRecipients); + } + else + { + $this->_throwException(new Swift_TransportException( + 'Unsupported sendmail command flags [' . $command . ']. ' . + 'Must be one of "-bs" or "-t" but can include additional flags.' + )); + } + + return $count; + } + + // -- Protected methods + + /** Get the params to initialize the buffer */ + protected function _getBufferParams() + { + return $this->_params; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/SimpleMailInvoker.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/SimpleMailInvoker.php new file mode 100644 index 0000000..271ba84 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/SimpleMailInvoker.php @@ -0,0 +1,58 @@ +. + + */ + +//@require 'Swift/Transport/MailInvoker.php'; + +/** + * This is the implementation class for {@link Swift_Transport_MailInvoker}. + * + * @package Swift + * @subpackage Transport + * @author Chris Corbyn + */ +class Swift_Transport_SimpleMailInvoker implements Swift_Transport_MailInvoker +{ + + /** + * Send mail via the mail() function. + * + * This method takes the same arguments as PHP mail(). + * + * @param string $to + * @param string $subject + * @param string $body + * @param string $headers + * @param string $extraParams + * + * @return boolean + */ + public function mail($to, $subject, $body, $headers = null, $extraParams = null) + { + if (!ini_get('safe_mode')) + { + return mail($to, $subject, $body, $headers, $extraParams); + } + else + { + return mail($to, $subject, $body, $headers); + } + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/SmtpAgent.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/SmtpAgent.php new file mode 100644 index 0000000..ee9b8ed --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/SmtpAgent.php @@ -0,0 +1,36 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Stores Messages in a queue. + * @package Swift + * @author Fabien Potencier + */ +class Swift_Transport_SpoolTransport implements Swift_Transport +{ + /** The spool instance */ + private $_spool; + + /** The event dispatcher from the plugin API */ + private $_eventDispatcher; + + /** + * Constructor. + */ + public function __construct(Swift_Events_EventDispatcher $eventDispatcher, Swift_Spool $spool = null) + { + $this->_eventDispatcher = $eventDispatcher; + $this->_spool = $spool; + } + + /** + * Sets the spool object. + * @param Swift_Spool $spool + */ + public function setSpool(Swift_Spool $spool) + { + $this->_spool = $spool; + return $this; + } + + /** + * Get the spool object. + * @return Swift_Spool + */ + public function getSpool() + { + return $this->_spool; + } + + /** + * Tests if this Transport mechanism has started. + * + * @return boolean + */ + public function isStarted() + { + return true; + } + + /** + * Starts this Transport mechanism. + */ + public function start() + { + } + + /** + * Stops this Transport mechanism. + */ + public function stop() + { + } + + /** + * Sends the given message. + * + * @param Swift_Mime_Message $message + * @param string[] &$failedRecipients to collect failures by-reference + * + * @return int The number of sent emails + */ + public function send(Swift_Mime_Message $message, &$failedRecipients = null) + { + if ($evt = $this->_eventDispatcher->createSendEvent($this, $message)) + { + $this->_eventDispatcher->dispatchEvent($evt, 'beforeSendPerformed'); + if ($evt->bubbleCancelled()) + { + return 0; + } + } + + $success = $this->_spool->queueMessage($message); + + if ($evt) + { + $evt->setResult($success ? Swift_Events_SendEvent::RESULT_SUCCESS : Swift_Events_SendEvent::RESULT_FAILED); + $this->_eventDispatcher->dispatchEvent($evt, 'sendPerformed'); + } + + return 1; + } + + /** + * Register a plugin. + * + * @param Swift_Events_EventListener $plugin + */ + public function registerPlugin(Swift_Events_EventListener $plugin) + { + $this->_eventDispatcher->bindEventListener($plugin); + } +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/StreamBuffer.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/StreamBuffer.php new file mode 100644 index 0000000..01ae8a5 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/Transport/StreamBuffer.php @@ -0,0 +1,276 @@ +_replacementFactory = $replacementFactory; + } + + /** + * Perform any initialization needed, using the given $params. + * Parameters will vary depending upon the type of IoBuffer used. + * @param array $params + */ + public function initialize(array $params) + { + $this->_params = $params; + switch ($params['type']) + { + case self::TYPE_PROCESS: + $this->_establishProcessConnection(); + break; + case self::TYPE_SOCKET: + default: + $this->_establishSocketConnection(); + break; + } + } + + /** + * Set an individual param on the buffer (e.g. switching to SSL). + * @param string $param + * @param mixed $value + */ + public function setParam($param, $value) + { + if (isset($this->_stream)) + { + switch ($param) + { + case 'protocol': + if (!array_key_exists('protocol', $this->_params) + || $value != $this->_params['protocol']) + { + if ('tls' == $value) + { + stream_socket_enable_crypto( + $this->_stream, true, STREAM_CRYPTO_METHOD_TLS_CLIENT + ); + } + } + break; + } + } + $this->_params[$param] = $value; + } + + /** + * Perform any shutdown logic needed. + */ + public function terminate() + { + if (isset($this->_stream)) + { + switch ($this->_params['type']) + { + case self::TYPE_PROCESS: + fclose($this->_in); + fclose($this->_out); + proc_close($this->_stream); + break; + case self::TYPE_SOCKET: + default: + fclose($this->_stream); + break; + } + } + $this->_stream = null; + $this->_out = null; + $this->_in = null; + } + + /** + * Set an array of string replacements which should be made on data written + * to the buffer. This could replace LF with CRLF for example. + * @param string[] $replacements + */ + public function setWriteTranslations(array $replacements) + { + foreach ($this->_translations as $search => $replace) + { + if (!isset($replacements[$search])) + { + $this->removeFilter($search); + unset($this->_translations[$search]); + } + } + + foreach ($replacements as $search => $replace) + { + if (!isset($this->_translations[$search])) + { + $this->addFilter( + $this->_replacementFactory->createFilter($search, $replace), $search + ); + $this->_translations[$search] = true; + } + } + } + + /** + * Get a line of output (including any CRLF). + * The $sequence number comes from any writes and may or may not be used + * depending upon the implementation. + * @param int $sequence of last write to scan from + * @return string + */ + public function readLine($sequence) + { + if (isset($this->_out) && !feof($this->_out)) + { + $line = fgets($this->_out); + return $line; + } + } + + /** + * Reads $length bytes from the stream into a string and moves the pointer + * through the stream by $length. If less bytes exist than are requested the + * remaining bytes are given instead. If no bytes are remaining at all, boolean + * false is returned. + * @param int $length + * @return string + */ + public function read($length) + { + if (isset($this->_out) && !feof($this->_out)) + { + $ret = fread($this->_out, $length); + return $ret; + } + } + + /** Not implemented */ + public function setReadPointer($byteOffset) + { + } + + // -- Protected methods + + /** Flush the stream contents */ + protected function _flush() + { + if (isset($this->_in)) + { + fflush($this->_in); + } + } + + /** Write this bytes to the stream */ + protected function _commit($bytes) + { + if (isset($this->_in) + && fwrite($this->_in, $bytes)) + { + return ++$this->_sequence; + } + } + + // -- Private methods + + /** + * Establishes a connection to a remote server. + * @access private + */ + private function _establishSocketConnection() + { + $host = $this->_params['host']; + if (!empty($this->_params['protocol'])) + { + $host = $this->_params['protocol'] . '://' . $host; + } + $timeout = 15; + if (!empty($this->_params['timeout'])) + { + $timeout = $this->_params['timeout']; + } + if (!$this->_stream = fsockopen($host, $this->_params['port'], $errno, $errstr, $timeout)) + { + throw new Swift_TransportException( + 'Connection could not be established with host ' . $this->_params['host'] . + ' [' . $errstr . ' #' . $errno . ']' + ); + } + if (!empty($this->_params['blocking'])) + { + stream_set_blocking($this->_stream, 1); + } + else + { + stream_set_blocking($this->_stream, 0); + } + $this->_in =& $this->_stream; + $this->_out =& $this->_stream; + } + + /** + * Opens a process for input/output. + * @access private + */ + private function _establishProcessConnection() + { + $command = $this->_params['command']; + $descriptorSpec = array( + 0 => array('pipe', 'r'), + 1 => array('pipe', 'w'), + 2 => array('pipe', 'w') + ); + $this->_stream = proc_open($command, $descriptorSpec, $pipes); + stream_set_blocking($pipes[2], 0); + if ($err = stream_get_contents($pipes[2])) + { + throw new Swift_TransportException( + 'Process could not be started [' . $err . ']' + ); + } + $this->_in =& $pipes[0]; + $this->_out =& $pipes[1]; + } + +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/TransportException.php b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/TransportException.php new file mode 100644 index 0000000..b7cd658 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/classes/Swift/TransportException.php @@ -0,0 +1,31 @@ + register('cache') + -> asAliasOf('cache.array') + + -> register('tempdir') + -> asValue('/tmp') + + -> register('cache.null') + -> asSharedInstanceOf('Swift_KeyCache_NullKeyCache') + + -> register('cache.array') + -> asSharedInstanceOf('Swift_KeyCache_ArrayKeyCache') + -> withDependencies(array('cache.inputstream')) + + -> register('cache.disk') + -> asSharedInstanceOf('Swift_KeyCache_DiskKeyCache') + -> withDependencies(array('cache.inputstream', 'tempdir')) + + -> register('cache.inputstream') + -> asNewInstanceOf('Swift_KeyCache_SimpleKeyCacheInputStream') + + ; diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/dependency_maps/.svn/text-base/mime_deps.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/dependency_maps/.svn/text-base/mime_deps.php.svn-base new file mode 100644 index 0000000..e03927a --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/dependency_maps/.svn/text-base/mime_deps.php.svn-base @@ -0,0 +1,97 @@ + register('properties.charset') + -> asValue('utf-8') + + -> register('mime.message') + -> asNewInstanceOf('Swift_Mime_SimpleMessage') + -> withDependencies(array( + 'mime.headerset', + 'mime.qpcontentencoder', + 'cache', + 'properties.charset' + )) + + -> register('mime.part') + -> asNewInstanceOf('Swift_Mime_MimePart') + -> withDependencies(array( + 'mime.headerset', + 'mime.qpcontentencoder', + 'cache', + 'properties.charset' + )) + + -> register('mime.attachment') + -> asNewInstanceOf('Swift_Mime_Attachment') + -> withDependencies(array( + 'mime.headerset', + 'mime.base64contentencoder', + 'cache' + )) + -> addConstructorValue($swift_mime_types) + + -> register('mime.embeddedfile') + -> asNewInstanceOf('Swift_Mime_EmbeddedFile') + -> withDependencies(array( + 'mime.headerset', + 'mime.base64contentencoder', + 'cache' + )) + -> addConstructorValue($swift_mime_types) + + -> register('mime.headerfactory') + -> asNewInstanceOf('Swift_Mime_SimpleHeaderFactory') + -> withDependencies(array( + 'mime.qpheaderencoder', + 'mime.rfc2231encoder', + 'properties.charset' + )) + + -> register('mime.headerset') + -> asNewInstanceOf('Swift_Mime_SimpleHeaderSet') + -> withDependencies(array('mime.headerfactory', 'properties.charset')) + + -> register('mime.qpheaderencoder') + -> asNewInstanceOf('Swift_Mime_HeaderEncoder_QpHeaderEncoder') + -> withDependencies(array('mime.charstream')) + + -> register('mime.charstream') + -> asNewInstanceOf('Swift_CharacterStream_NgCharacterStream') + -> withDependencies(array('mime.characterreaderfactory', 'properties.charset')) + + -> register('mime.bytecanonicalizer') + -> asSharedInstanceOf('Swift_StreamFilters_ByteArrayReplacementFilter') + -> addConstructorValue(array(array(0x0D, 0x0A), array(0x0D), array(0x0A))) + -> addConstructorValue(array(array(0x0A), array(0x0A), array(0x0D, 0x0A))) + + -> register('mime.characterreaderfactory') + -> asSharedInstanceOf('Swift_CharacterReaderFactory_SimpleCharacterReaderFactory') + + -> register('mime.qpcontentencoder') + -> asNewInstanceOf('Swift_Mime_ContentEncoder_QpContentEncoder') + -> withDependencies(array('mime.charstream', 'mime.bytecanonicalizer')) + + -> register('mime.7bitcontentencoder') + -> asNewInstanceOf('Swift_Mime_ContentEncoder_PlainContentEncoder') + -> addConstructorValue('7bit') + -> addConstructorValue(true) + + -> register('mime.8bitcontentencoder') + -> asNewInstanceOf('Swift_Mime_ContentEncoder_PlainContentEncoder') + -> addConstructorValue('8bit') + -> addConstructorValue(true) + + -> register('mime.base64contentencoder') + -> asSharedInstanceOf('Swift_Mime_ContentEncoder_Base64ContentEncoder') + + -> register('mime.rfc2231encoder') + -> asNewInstanceOf('Swift_Encoder_Rfc2231Encoder') + -> withDependencies(array('mime.charstream')) + + ; + +unset($swift_mime_types); diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/dependency_maps/.svn/text-base/transport_deps.php.svn-base b/lib/vendor/symfony/lib/vendor/swiftmailer/dependency_maps/.svn/text-base/transport_deps.php.svn-base new file mode 100644 index 0000000..52c3341 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/dependency_maps/.svn/text-base/transport_deps.php.svn-base @@ -0,0 +1,70 @@ + register('transport.smtp') + -> asNewInstanceOf('Swift_Transport_EsmtpTransport') + -> withDependencies(array( + 'transport.buffer', + array('transport.authhandler'), + 'transport.eventdispatcher' + )) + + -> register('transport.sendmail') + -> asNewInstanceOf('Swift_Transport_SendmailTransport') + -> withDependencies(array( + 'transport.buffer', + 'transport.eventdispatcher' + )) + + -> register('transport.mail') + -> asNewInstanceOf('Swift_Transport_MailTransport') + -> withDependencies(array('transport.mailinvoker', 'transport.eventdispatcher')) + + -> register('transport.loadbalanced') + -> asNewInstanceOf('Swift_Transport_LoadBalancedTransport') + + -> register('transport.failover') + -> asNewInstanceOf('Swift_Transport_FailoverTransport') + + -> register('transport.spool') + -> asNewInstanceOf('Swift_Transport_SpoolTransport') + -> withDependencies(array('transport.eventdispatcher')) + + -> register('transport.null') + -> asNewInstanceOf('Swift_Transport_NullTransport') + -> withDependencies(array('transport.eventdispatcher')) + + -> register('transport.mailinvoker') + -> asSharedInstanceOf('Swift_Transport_SimpleMailInvoker') + + -> register('transport.buffer') + -> asNewInstanceOf('Swift_Transport_StreamBuffer') + -> withDependencies(array('transport.replacementfactory')) + + -> register('transport.authhandler') + -> asNewInstanceOf('Swift_Transport_Esmtp_AuthHandler') + -> withDependencies(array( + array( + 'transport.crammd5auth', + 'transport.loginauth', + 'transport.plainauth' + ) + )) + + -> register('transport.crammd5auth') + -> asNewInstanceOf('Swift_Transport_Esmtp_Auth_CramMd5Authenticator') + + -> register('transport.loginauth') + -> asNewInstanceOf('Swift_Transport_Esmtp_Auth_LoginAuthenticator') + + -> register('transport.plainauth') + -> asNewInstanceOf('Swift_Transport_Esmtp_Auth_PlainAuthenticator') + + -> register('transport.eventdispatcher') + -> asNewInstanceOf('Swift_Events_SimpleEventDispatcher') + + -> register('transport.replacementfactory') + -> asSharedInstanceOf('Swift_StreamFilters_StringReplacementFilterFactory') + + ; diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/dependency_maps/cache_deps.php b/lib/vendor/symfony/lib/vendor/swiftmailer/dependency_maps/cache_deps.php new file mode 100644 index 0000000..6058206 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/dependency_maps/cache_deps.php @@ -0,0 +1,25 @@ + register('cache') + -> asAliasOf('cache.array') + + -> register('tempdir') + -> asValue('/tmp') + + -> register('cache.null') + -> asSharedInstanceOf('Swift_KeyCache_NullKeyCache') + + -> register('cache.array') + -> asSharedInstanceOf('Swift_KeyCache_ArrayKeyCache') + -> withDependencies(array('cache.inputstream')) + + -> register('cache.disk') + -> asSharedInstanceOf('Swift_KeyCache_DiskKeyCache') + -> withDependencies(array('cache.inputstream', 'tempdir')) + + -> register('cache.inputstream') + -> asNewInstanceOf('Swift_KeyCache_SimpleKeyCacheInputStream') + + ; diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/dependency_maps/mime_deps.php b/lib/vendor/symfony/lib/vendor/swiftmailer/dependency_maps/mime_deps.php new file mode 100644 index 0000000..e03927a --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/dependency_maps/mime_deps.php @@ -0,0 +1,97 @@ + register('properties.charset') + -> asValue('utf-8') + + -> register('mime.message') + -> asNewInstanceOf('Swift_Mime_SimpleMessage') + -> withDependencies(array( + 'mime.headerset', + 'mime.qpcontentencoder', + 'cache', + 'properties.charset' + )) + + -> register('mime.part') + -> asNewInstanceOf('Swift_Mime_MimePart') + -> withDependencies(array( + 'mime.headerset', + 'mime.qpcontentencoder', + 'cache', + 'properties.charset' + )) + + -> register('mime.attachment') + -> asNewInstanceOf('Swift_Mime_Attachment') + -> withDependencies(array( + 'mime.headerset', + 'mime.base64contentencoder', + 'cache' + )) + -> addConstructorValue($swift_mime_types) + + -> register('mime.embeddedfile') + -> asNewInstanceOf('Swift_Mime_EmbeddedFile') + -> withDependencies(array( + 'mime.headerset', + 'mime.base64contentencoder', + 'cache' + )) + -> addConstructorValue($swift_mime_types) + + -> register('mime.headerfactory') + -> asNewInstanceOf('Swift_Mime_SimpleHeaderFactory') + -> withDependencies(array( + 'mime.qpheaderencoder', + 'mime.rfc2231encoder', + 'properties.charset' + )) + + -> register('mime.headerset') + -> asNewInstanceOf('Swift_Mime_SimpleHeaderSet') + -> withDependencies(array('mime.headerfactory', 'properties.charset')) + + -> register('mime.qpheaderencoder') + -> asNewInstanceOf('Swift_Mime_HeaderEncoder_QpHeaderEncoder') + -> withDependencies(array('mime.charstream')) + + -> register('mime.charstream') + -> asNewInstanceOf('Swift_CharacterStream_NgCharacterStream') + -> withDependencies(array('mime.characterreaderfactory', 'properties.charset')) + + -> register('mime.bytecanonicalizer') + -> asSharedInstanceOf('Swift_StreamFilters_ByteArrayReplacementFilter') + -> addConstructorValue(array(array(0x0D, 0x0A), array(0x0D), array(0x0A))) + -> addConstructorValue(array(array(0x0A), array(0x0A), array(0x0D, 0x0A))) + + -> register('mime.characterreaderfactory') + -> asSharedInstanceOf('Swift_CharacterReaderFactory_SimpleCharacterReaderFactory') + + -> register('mime.qpcontentencoder') + -> asNewInstanceOf('Swift_Mime_ContentEncoder_QpContentEncoder') + -> withDependencies(array('mime.charstream', 'mime.bytecanonicalizer')) + + -> register('mime.7bitcontentencoder') + -> asNewInstanceOf('Swift_Mime_ContentEncoder_PlainContentEncoder') + -> addConstructorValue('7bit') + -> addConstructorValue(true) + + -> register('mime.8bitcontentencoder') + -> asNewInstanceOf('Swift_Mime_ContentEncoder_PlainContentEncoder') + -> addConstructorValue('8bit') + -> addConstructorValue(true) + + -> register('mime.base64contentencoder') + -> asSharedInstanceOf('Swift_Mime_ContentEncoder_Base64ContentEncoder') + + -> register('mime.rfc2231encoder') + -> asNewInstanceOf('Swift_Encoder_Rfc2231Encoder') + -> withDependencies(array('mime.charstream')) + + ; + +unset($swift_mime_types); diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/dependency_maps/transport_deps.php b/lib/vendor/symfony/lib/vendor/swiftmailer/dependency_maps/transport_deps.php new file mode 100644 index 0000000..52c3341 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/dependency_maps/transport_deps.php @@ -0,0 +1,70 @@ + register('transport.smtp') + -> asNewInstanceOf('Swift_Transport_EsmtpTransport') + -> withDependencies(array( + 'transport.buffer', + array('transport.authhandler'), + 'transport.eventdispatcher' + )) + + -> register('transport.sendmail') + -> asNewInstanceOf('Swift_Transport_SendmailTransport') + -> withDependencies(array( + 'transport.buffer', + 'transport.eventdispatcher' + )) + + -> register('transport.mail') + -> asNewInstanceOf('Swift_Transport_MailTransport') + -> withDependencies(array('transport.mailinvoker', 'transport.eventdispatcher')) + + -> register('transport.loadbalanced') + -> asNewInstanceOf('Swift_Transport_LoadBalancedTransport') + + -> register('transport.failover') + -> asNewInstanceOf('Swift_Transport_FailoverTransport') + + -> register('transport.spool') + -> asNewInstanceOf('Swift_Transport_SpoolTransport') + -> withDependencies(array('transport.eventdispatcher')) + + -> register('transport.null') + -> asNewInstanceOf('Swift_Transport_NullTransport') + -> withDependencies(array('transport.eventdispatcher')) + + -> register('transport.mailinvoker') + -> asSharedInstanceOf('Swift_Transport_SimpleMailInvoker') + + -> register('transport.buffer') + -> asNewInstanceOf('Swift_Transport_StreamBuffer') + -> withDependencies(array('transport.replacementfactory')) + + -> register('transport.authhandler') + -> asNewInstanceOf('Swift_Transport_Esmtp_AuthHandler') + -> withDependencies(array( + array( + 'transport.crammd5auth', + 'transport.loginauth', + 'transport.plainauth' + ) + )) + + -> register('transport.crammd5auth') + -> asNewInstanceOf('Swift_Transport_Esmtp_Auth_CramMd5Authenticator') + + -> register('transport.loginauth') + -> asNewInstanceOf('Swift_Transport_Esmtp_Auth_LoginAuthenticator') + + -> register('transport.plainauth') + -> asNewInstanceOf('Swift_Transport_Esmtp_Auth_PlainAuthenticator') + + -> register('transport.eventdispatcher') + -> asNewInstanceOf('Swift_Events_SimpleEventDispatcher') + + -> register('transport.replacementfactory') + -> asSharedInstanceOf('Swift_StreamFilters_StringReplacementFilterFactory') + + ; diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/mime_types.php b/lib/vendor/symfony/lib/vendor/swiftmailer/mime_types.php new file mode 100644 index 0000000..65c9aa0 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/mime_types.php @@ -0,0 +1,76 @@ + 'audio/x-aiff', + 'aiff' => 'audio/x-aiff', + 'avi' => 'video/avi', + 'bmp' => 'image/bmp', + 'bz2' => 'application/x-bz2', + 'csv' => 'text/csv', + 'dmg' => 'application/x-apple-diskimage', + 'doc' => 'application/msword', + 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + 'eml' => 'message/rfc822', + 'aps' => 'application/postscript', + 'exe' => 'application/x-ms-dos-executable', + 'flv' => 'video/x-flv', + 'gif' => 'image/gif', + 'gz' => 'application/x-gzip', + 'hqx' => 'application/stuffit', + 'htm' => 'text/html', + 'html' => 'text/html', + 'jar' => 'application/x-java-archive', + 'jpeg' => 'image/jpeg', + 'jpg' => 'image/jpeg', + 'm3u' => 'audio/x-mpegurl', + 'm4a' => 'audio/mp4', + 'mdb' => 'application/x-msaccess', + 'mid' => 'audio/midi', + 'midi' => 'audio/midi', + 'mov' => 'video/quicktime', + 'mp3' => 'audio/mpeg', + 'mp4' => 'video/mp4', + 'mpeg' => 'video/mpeg', + 'mpg' => 'video/mpeg', + 'odg' => 'vnd.oasis.opendocument.graphics', + 'odp' => 'vnd.oasis.opendocument.presentation', + 'odt' => 'vnd.oasis.opendocument.text', + 'ods' => 'vnd.oasis.opendocument.spreadsheet', + 'ogg' => 'audio/ogg', + 'pdf' => 'application/pdf', + 'png' => 'image/png', + 'ppt' => 'application/vnd.ms-powerpoint', + 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation', + 'ps' => 'application/postscript', + 'rar' => 'application/x-rar-compressed', + 'rtf' => 'application/rtf', + 'tar' => 'application/x-tar', + 'sit' => 'application/x-stuffit', + 'svg' => 'image/svg+xml', + 'tif' => 'image/tiff', + 'tiff' => 'image/tiff', + 'ttf' => 'application/x-font-truetype', + 'txt' => 'text/plain', + 'vcf' => 'text/x-vcard', + 'wav' => 'audio/wav', + 'wma' => 'audio/x-ms-wma', + 'wmv' => 'audio/x-ms-wmv', + 'xls' => 'application/excel', + 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', + 'xml' => 'application/xml', + 'zip' => 'application/zip' +); diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/preferences.php b/lib/vendor/symfony/lib/vendor/swiftmailer/preferences.php new file mode 100644 index 0000000..0b9e4b1 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/preferences.php @@ -0,0 +1,20 @@ +setCharset('utf-8'); + +// Without these lines the default caching mechanism is "array" but this uses +// a lot of memory. +// If possible, use a disk cache to enable attaching large attachments etc +if (function_exists('sys_get_temp_dir') && is_writable(sys_get_temp_dir())) +{ + Swift_Preferences::getInstance() + -> setTempDir(sys_get_temp_dir()) + -> setCacheType('disk'); +} diff --git a/lib/vendor/symfony/lib/vendor/swiftmailer/swift_init.php b/lib/vendor/symfony/lib/vendor/swiftmailer/swift_init.php new file mode 100644 index 0000000..fe624a9 --- /dev/null +++ b/lib/vendor/symfony/lib/vendor/swiftmailer/swift_init.php @@ -0,0 +1,21 @@ + + * (c) 2004-2006 Sean Kerr + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * A view that uses PHP as the templating engine. + * + * @package symfony + * @subpackage view + * @author Fabien Potencier + * @author Sean Kerr + * @version SVN: $Id$ + */ +class sfPHPView extends sfView +{ + /** + * Executes any presentation logic for this view. + */ + public function execute() + { + } + + /** + * Loads core and standard helpers to be use in the template. + */ + protected function loadCoreAndStandardHelpers() + { + static $coreHelpersLoaded = 0; + + if ($coreHelpersLoaded) + { + return; + } + + $coreHelpersLoaded = 1; + + $helpers = array_unique(array_merge(array('Helper', 'Url', 'Asset', 'Tag', 'Escaping'), sfConfig::get('sf_standard_helpers'))); + + $this->context->getConfiguration()->loadHelpers($helpers); + } + + /** + * Renders the presentation. + * + * @param string $_sfFile Filename + * + * @return string File content + */ + protected function renderFile($_sfFile) + { + if (sfConfig::get('sf_logging_enabled')) + { + $this->dispatcher->notify(new sfEvent($this, 'application.log', array(sprintf('Render "%s"', $_sfFile)))); + } + + $this->loadCoreAndStandardHelpers(); + + // EXTR_REFS can't be used (see #3595 and #3151) + $vars = $this->attributeHolder->toArray(); + extract($vars); + + // render + ob_start(); + ob_implicit_flush(0); + + try + { + require($_sfFile); + } + catch (Exception $e) + { + // need to end output buffering before throwing the exception #7596 + ob_end_clean(); + throw $e; + } + + return ob_get_clean(); + } + + /** + * Retrieves the template engine associated with this view. + * + * Note: This will return null because PHP itself has no engine reference. + * + * @return null + */ + public function getEngine() + { + return null; + } + + /** + * Configures template. + * + * @return void + */ + public function configure() + { + // store our current view + $this->context->set('view_instance', $this); + + // require our configuration + require($this->context->getConfigCache()->checkConfig('modules/'.$this->moduleName.'/config/view.yml')); + + // set template directory + if (!$this->directory) + { + $this->setDirectory($this->context->getConfiguration()->getTemplateDir($this->moduleName, $this->getTemplate())); + } + } + + /** + * Loop through all template slots and fill them in with the results of presentation data. + * + * @param string $content A chunk of decorator content + * + * @return string A decorated template + */ + protected function decorate($content) + { + if (sfConfig::get('sf_logging_enabled')) + { + $this->dispatcher->notify(new sfEvent($this, 'application.log', array(sprintf('Decorate content with "%s/%s"', $this->getDecoratorDirectory(), $this->getDecoratorTemplate())))); + } + + // set the decorator content as an attribute + $attributeHolder = $this->attributeHolder; + + $this->attributeHolder = $this->initializeAttributeHolder(array('sf_content' => new sfOutputEscaperSafe($content))); + $this->attributeHolder->set('sf_type', 'layout'); + + // check to see if the decorator template exists + if (!is_readable($this->getDecoratorDirectory().'/'.$this->getDecoratorTemplate())) + { + throw new sfRenderException(sprintf('The decorator template "%s" does not exist or is unreadable in "%s".', $this->decoratorTemplate, $this->decoratorDirectory)); + } + + // render the decorator template and return the result + $ret = $this->renderFile($this->getDecoratorDirectory().'/'.$this->getDecoratorTemplate()); + + $this->attributeHolder = $attributeHolder; + + return $ret; + } + + /** + * Renders the presentation. + * + * @return string A string representing the rendered presentation + */ + public function render() + { + $content = null; + if (sfConfig::get('sf_cache')) + { + $viewCache = $this->context->getViewCacheManager(); + $uri = $viewCache->getCurrentCacheKey(); + + if (null !== $uri) + { + list($content, $decoratorTemplate) = $viewCache->getActionCache($uri); + if (null !== $content) + { + $this->setDecoratorTemplate($decoratorTemplate); + } + } + } + + // render template if no cache + if (null === $content) + { + // execute pre-render check + $this->preRenderCheck(); + + $this->attributeHolder->set('sf_type', 'action'); + + // render template file + $content = $this->renderFile($this->getDirectory().'/'.$this->getTemplate()); + + if (sfConfig::get('sf_cache') && null !== $uri) + { + $content = $viewCache->setActionCache($uri, $content, $this->isDecorator() ? $this->getDecoratorDirectory().'/'.$this->getDecoratorTemplate() : false); + } + } + + // now render decorator template, if one exists + if ($this->isDecorator()) + { + $content = $this->decorate($content); + } + + return $content; + } +} diff --git a/lib/vendor/symfony/lib/view/.svn/text-base/sfPartialView.class.php.svn-base b/lib/vendor/symfony/lib/view/.svn/text-base/sfPartialView.class.php.svn-base new file mode 100644 index 0000000..d8a122e --- /dev/null +++ b/lib/vendor/symfony/lib/view/.svn/text-base/sfPartialView.class.php.svn-base @@ -0,0 +1,165 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * A View to render partials. + * + * @package symfony + * @subpackage view + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfPartialView extends sfPHPView +{ + protected + $viewCache = null, + $checkCache = false, + $cacheKey = null, + $partialVars = array(); + + /** + * Constructor. + * + * @see sfView + */ + public function initialize($context, $moduleName, $actionName, $viewName) + { + $ret = parent::initialize($context, $moduleName, $actionName, $viewName); + + $this->viewCache = $this->context->getViewCacheManager(); + + if (sfConfig::get('sf_cache')) + { + $this->checkCache = $this->viewCache->isActionCacheable($moduleName, $actionName); + } + + return $ret; + } + + /** + * Executes any presentation logic for this view. + */ + public function execute() + { + } + + /** + * @param array $partialVars + */ + public function setPartialVars(array $partialVars) + { + $this->partialVars = $partialVars; + $this->getAttributeHolder()->add($partialVars); + } + + /** + * Configures template for this view. + */ + public function configure() + { + $this->setDecorator(false); + $this->setTemplate($this->actionName.$this->getExtension()); + if ('global' == $this->moduleName) + { + $this->setDirectory($this->context->getConfiguration()->getDecoratorDir($this->getTemplate())); + } + else + { + $this->setDirectory($this->context->getConfiguration()->getTemplateDir($this->moduleName, $this->getTemplate())); + } + } + + /** + * Renders the presentation. + * + * @return string Current template content + */ + public function render() + { + if (sfConfig::get('sf_debug') && sfConfig::get('sf_logging_enabled')) + { + $timer = sfTimerManager::getTimer(sprintf('Partial "%s/%s"', $this->moduleName, $this->actionName)); + } + + if ($retval = $this->getCache()) + { + return $retval; + } + + if ($this->checkCache) + { + $mainResponse = $this->context->getResponse(); + + $responseClass = get_class($mainResponse); + $response = new $responseClass($this->context->getEventDispatcher(), $mainResponse->getOptions()); + + // the inner response has access to different properties, depending on whether it is marked as contextual in cache.yml + if ($this->viewCache->isContextual($this->viewCache->getPartialUri($this->moduleName, $this->actionName, $this->cacheKey))) + { + $response->copyProperties($mainResponse); + } + else + { + $response->setContentType($mainResponse->getContentType()); + } + + $this->context->setResponse($response); + } + + try + { + // execute pre-render check + $this->preRenderCheck(); + + $this->getAttributeHolder()->set('sf_type', 'partial'); + + // render template + $retval = $this->renderFile($this->getDirectory().'/'.$this->getTemplate()); + } + catch (Exception $e) + { + if ($this->checkCache) + { + $this->context->setResponse($mainResponse); + $mainResponse->merge($response); + } + + throw $e; + } + + if ($this->checkCache) + { + $retval = $this->viewCache->setPartialCache($this->moduleName, $this->actionName, $this->cacheKey, $retval); + $this->context->setResponse($mainResponse); + $mainResponse->merge($response); + } + + if (sfConfig::get('sf_debug') && sfConfig::get('sf_logging_enabled')) + { + $timer->addTime(); + } + + return $retval; + } + + public function getCache() + { + if (!$this->checkCache) + { + return null; + } + + $this->cacheKey = $this->viewCache->checkCacheKey($this->partialVars); + if ($retval = $this->viewCache->getPartialCache($this->moduleName, $this->actionName, $this->cacheKey)) + { + return $retval; + } + } +} diff --git a/lib/vendor/symfony/lib/view/.svn/text-base/sfView.class.php.svn-base b/lib/vendor/symfony/lib/view/.svn/text-base/sfView.class.php.svn-base new file mode 100644 index 0000000..87107d5 --- /dev/null +++ b/lib/vendor/symfony/lib/view/.svn/text-base/sfView.class.php.svn-base @@ -0,0 +1,572 @@ + + * (c) 2004-2006 Sean Kerr + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * A view represents the presentation layer of an action. Output can be + * customized by supplying attributes, which a template can manipulate and + * display. + * + * @package symfony + * @subpackage view + * @author Fabien Potencier + * @author Sean Kerr + * @version SVN: $Id$ + */ +abstract class sfView +{ + /** + * Show an alert view. + */ + const ALERT = 'Alert'; + + /** + * Show an error view. + */ + const ERROR = 'Error'; + + /** + * Show a form input view. + */ + const INPUT = 'Input'; + + /** + * Skip view execution. + */ + const NONE = 'None'; + + /** + * Show a success view. + */ + const SUCCESS = 'Success'; + + /** + * Do not render the presentation. + */ + const RENDER_NONE = 1; + + /** + * Render the presentation to the client. + */ + const RENDER_CLIENT = 2; + + /** + * Render the presentation to a variable. + */ + const RENDER_VAR = 4; + + /** + * Skip view rendering but output http headers + */ + const HEADER_ONLY = 8; + + protected + $context = null, + $dispatcher = null, + $decorator = false, + $decoratorDirectory = null, + $decoratorTemplate = null, + $directory = null, + $componentSlots = array(), + $template = null, + $attributeHolder = null, + $parameterHolder = null, + $moduleName = '', + $actionName = '', + $viewName = '', + $extension = '.php'; + + /** + * Class constructor. + * + * @see initialize() + */ + public function __construct($context, $moduleName, $actionName, $viewName) + { + $this->initialize($context, $moduleName, $actionName, $viewName); + } + + /** + * Initializes this view. + * + * @param sfContext $context The current application context + * @param string $moduleName The module name for this view + * @param string $actionName The action name for this view + * @param string $viewName The view name + * + * @return bool true, if initialization completes successfully, otherwise false + */ + public function initialize($context, $moduleName, $actionName, $viewName) + { + $this->moduleName = $moduleName; + $this->actionName = $actionName; + $this->viewName = $viewName; + + $this->context = $context; + $this->dispatcher = $context->getEventDispatcher(); + + sfOutputEscaper::markClassesAsSafe(array('sfForm', 'sfFormField', 'sfFormFieldSchema', 'sfModelGeneratorHelper')); + + $this->attributeHolder = $this->initializeAttributeHolder(); + + $this->parameterHolder = new sfParameterHolder(); + $this->parameterHolder->add(sfConfig::get('mod_'.strtolower($moduleName).'_view_param', array())); + + $request = $context->getRequest(); + + $format = $request->getRequestFormat(); + if (null !== $format) + { + if ('html' != $format) + { + $this->setExtension('.'.$format.$this->getExtension()); + } + + if ($mimeType = $request->getMimeType($format)) + { + $this->context->getResponse()->setContentType($mimeType); + + if ('html' != $format) + { + $this->setDecorator(false); + } + } + } + $this->dispatcher->notify(new sfEvent($this, 'view.configure_format', array('format' => $format, 'response' => $context->getResponse(), 'request' => $context->getRequest()))); + + // include view configuration + $this->configure(); + + return true; + } + + protected function initializeAttributeHolder($attributes = array()) + { + $attributeHolder = new sfViewParameterHolder($this->dispatcher, $attributes, array( + 'escaping_method' => sfConfig::get('sf_escaping_method'), + 'escaping_strategy' => sfConfig::get('sf_escaping_strategy'), + )); + + return $attributeHolder; + } + + /** + * Executes any presentation logic and set template attributes. + */ + abstract function execute(); + + /** + * Configures template. + */ + abstract function configure(); + + /** + * Retrieves this views decorator template directory. + * + * @return string An absolute filesystem path to this views decorator template directory + */ + public function getDecoratorDirectory() + { + return $this->decoratorDirectory; + } + + /** + * Retrieves this views decorator template. + * + * @return string A template filename, if a template has been set, otherwise null + */ + public function getDecoratorTemplate() + { + return $this->decoratorTemplate; + } + + /** + * Retrieves this view template directory. + * + * @return string An absolute filesystem path to this views template directory + */ + public function getDirectory() + { + return $this->directory; + } + + /** + * Retrieves the template engine associated with this view. + * + * Note: This will return null for PHPView instances. + * + * @return mixed A template engine instance + */ + abstract function getEngine(); + + /** + * Retrieves this views template. + * + * @return string A template filename, if a template has been set, otherwise null + */ + public function getTemplate() + { + return $this->template; + } + + /** + * Retrieves attributes for the current view. + * + * @return sfParameterHolder The attribute parameter holder + */ + public function getAttributeHolder() + { + return $this->attributeHolder; + } + + /** + * Retrieves an attribute for the current view. + * + * @param string $name Name of the attribute + * @param string $default Value of the attribute + * + * @return mixed Attribute + */ + public function getAttribute($name, $default = null) + { + return $this->attributeHolder->get($name, $default); + } + + /** + * Returns true if the view have attributes. + * + * @param string $name Name of the attribute + * + * @return mixed Attribute of the view + */ + public function hasAttribute($name) + { + return $this->attributeHolder->has($name); + } + + /** + * Sets an attribute of the view. + * + * @param string $name Attribute name + * @param string $value Value for the attribute + */ + public function setAttribute($name, $value) + { + $this->attributeHolder->set($name, $value); + } + + /** + * Retrieves the parameters for the current view. + * + * @return sfParameterHolder The parameter holder + */ + public function getParameterHolder() + { + return $this->parameterHolder; + } + + /** + * Retrieves a parameter from the current view. + * + * @param string $name Parameter name + * @param string $default Default parameter value + * + * @return mixed A parameter value + */ + public function getParameter($name, $default = null) + { + return $this->parameterHolder->get($name, $default); + } + + /** + * Indicates whether or not a parameter exist for the current view. + * + * @param string $name Name of the parameter + * + * @return bool true, if the parameter exists otherwise false + */ + public function hasParameter($name) + { + return $this->parameterHolder->has($name); + } + + /** + * Sets a parameter for the view. + * + * @param string $name Name of the parameter + * @param string $value The parameter value + */ + public function setParameter($name, $value) + { + $this->parameterHolder->set($name, $value); + } + + /** + * Indicates that this view is a decorating view. + * + * @return bool true, if this view is a decorating view, otherwise false + */ + public function isDecorator() + { + return $this->decorator; + } + + /** + * Sets the decorating mode for the current view. + * + * @param bool $boolean Set the decorating mode for the view + */ + public function setDecorator($boolean) + { + $this->decorator = (boolean) $boolean; + + if (false === $boolean) + { + $this->decoratorTemplate = false; + } + } + + /** + * Executes a basic pre-render check to verify all required variables exist + * and that the template is readable. + * + * @throws sfRenderException If the pre-render check fails + */ + protected function preRenderCheck() + { + if (null === $this->template) + { + // a template has not been set + throw new sfRenderException('A template has not been set.'); + } + + if (!is_readable($this->directory.'/'.$this->template)) + { + // 404? + if ('404' == $this->context->getResponse()->getStatusCode()) + { + // use default exception templates + $this->template = sfException::getTemplatePathForError($this->context->getRequest()->getRequestFormat(), false); + $this->directory = dirname($this->template); + $this->template = basename($this->template); + $this->setAttribute('code', '404'); + $this->setAttribute('text', 'Not Found'); + } + else + { + throw new sfRenderException(sprintf('The template "%s" does not exist or is unreadable in "%s".', $this->template, $this->directory)); + } + } + } + + /** + * Renders the presentation. + * + * @return string A string representing the rendered presentation + */ + abstract function render(); + + /** + * Sets the decorator template directory for this view. + * + * @param string $directory An absolute filesystem path to a template directory + */ + public function setDecoratorDirectory($directory) + { + $this->decoratorDirectory = $directory; + } + + /** + * Sets the decorator template for this view. + * + * If the template path is relative, it will be based on the currently + * executing module's template sub-directory. + * + * @param string $template An absolute or relative filesystem path to a template + */ + public function setDecoratorTemplate($template) + { + if (false === $template) + { + $this->setDecorator(false); + + return; + } + else if (null === $template) + { + return; + } + + if (!strpos($template, '.')) + { + $template .= $this->getExtension(); + } + + if (sfToolkit::isPathAbsolute($template)) + { + $this->decoratorDirectory = dirname($template); + $this->decoratorTemplate = basename($template); + } + else + { + $this->decoratorDirectory = $this->context->getConfiguration()->getDecoratorDir($template); + $this->decoratorTemplate = $template; + } + + // set decorator status + $this->decorator = true; + } + + /** + * Sets the template directory for this view. + * + * @param string $directory An absolute filesystem path to a template directory + */ + public function setDirectory($directory) + { + $this->directory = $directory; + } + + /** + * Sets the module and action to be executed in place of a particular template attribute. + * + * @param string $attributeName A template attribute name + * @param string $moduleName A module name + * @param string $componentName A component name + */ + public function setComponentSlot($attributeName, $moduleName, $componentName) + { + $this->componentSlots[$attributeName] = array(); + $this->componentSlots[$attributeName]['module_name'] = $moduleName; + $this->componentSlots[$attributeName]['component_name'] = $componentName; + } + + /** + * Indicates whether or not a component slot exists. + * + * @param string $name The component slot name + * + * @return bool true, if the component slot exists, otherwise false + */ + public function hasComponentSlot($name) + { + return isset($this->componentSlots[$name]); + } + + /** + * Gets a component slot + * + * @param string $name The component slot name + * + * @return array The component slot + */ + public function getComponentSlot($name) + { + if (isset($this->componentSlots[$name]) && $this->componentSlots[$name]['module_name'] && $this->componentSlots[$name]['component_name']) + { + return array($this->componentSlots[$name]['module_name'], $this->componentSlots[$name]['component_name']); + } + + return null; + } + + /** + * Sets the template for this view. + * + * If the template path is relative, it will be based on the currently + * executing module's template sub-directory. + * + * @param string $template An absolute or relative filesystem path to a template + */ + public function setTemplate($template) + { + if (sfToolkit::isPathAbsolute($template)) + { + $this->directory = dirname($template); + $this->template = basename($template); + } + else + { + $this->directory = $this->context->getConfiguration()->getTemplateDir($this->moduleName, $template); + $this->template = $template; + } + } + + /** + * Retrieves the current view extension. + * + * @return string The extension for current view. + */ + public function getExtension() + { + return $this->extension; + } + + /** + * Sets an extension for the current view. + * + * @param string $extension The extension name. + */ + public function setExtension($extension) + { + $this->extension = $extension; + } + + /** + * Gets the module name associated with this view. + * + * @return string A module name + */ + public function getModuleName() + { + return $this->moduleName; + } + + /** + * Gets the action name associated with this view. + * + * @return string An action name + */ + public function getActionName() + { + return $this->actionName; + } + + /** + * Gets the view name associated with this view. + * + * @return string An action name + */ + public function getViewName() + { + return $this->viewName; + } + + /** + * Calls methods defined via sfEventDispatcher. + * + * @param string $method The method name + * @param array $arguments The method arguments + * + * @return mixed The returned value of the called method + * + * @throws sfException< If the calls fails + */ + public function __call($method, $arguments) + { + $event = $this->dispatcher->notifyUntil(new sfEvent($this, 'view.method_not_found', array('method' => $method, 'arguments' => $arguments))); + if (!$event->isProcessed()) + { + throw new sfException(sprintf('Call to undefined method %s::%s.', get_class($this), $method)); + } + + return $event->getReturnValue(); + } +} diff --git a/lib/vendor/symfony/lib/view/.svn/text-base/sfViewCacheManager.class.php.svn-base b/lib/vendor/symfony/lib/view/.svn/text-base/sfViewCacheManager.class.php.svn-base new file mode 100644 index 0000000..5c2c7ea --- /dev/null +++ b/lib/vendor/symfony/lib/view/.svn/text-base/sfViewCacheManager.class.php.svn-base @@ -0,0 +1,1055 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Cache class to cache the HTML results for actions and templates. + * + * This class uses a sfCache instance implementation to store cache. + * + * To disable all caching, you can set the [sf_cache] constant to false. + * + * @package symfony + * @subpackage view + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfViewCacheManager +{ + protected + $cache = null, + $cacheConfig = array(), + $context = null, + $dispatcher = null, + $controller = null, + $routing = null, + $request = null, + $loaded = array(); + + /** + * Class constructor. + * + * @see initialize() + */ + public function __construct($context, sfCache $cache, $options = array()) + { + $this->initialize($context, $cache, $options); + } + + /** + * Initializes the cache manager. + * + * @param sfContext $context Current application context + * @param sfCache $cache An sfCache instance + */ + public function initialize($context, sfCache $cache, $options = array()) + { + $this->context = $context; + $this->dispatcher = $context->getEventDispatcher(); + $this->controller = $context->getController(); + $this->request = $context->getRequest(); + $this->options = array_merge(array( + 'cache_key_use_vary_headers' => true, + 'cache_key_use_host_name' => true, + ), $options); + + if (sfConfig::get('sf_web_debug')) + { + $this->dispatcher->connect('view.cache.filter_content', array($this, 'decorateContentWithDebug')); + } + + // empty configuration + $this->cacheConfig = array(); + + // cache instance + $this->cache = $cache; + + // routing instance + $this->routing = $context->getRouting(); + } + + /** + * Retrieves the current cache context. + * + * @return sfContext The sfContext instance + */ + public function getContext() + { + return $this->context; + } + + /** + * Retrieves the current cache object. + * + * @return sfCache The current cache object + */ + public function getCache() + { + return $this->cache; + } + + /** + * Generates a unique cache key for an internal URI. + * This cache key can be used by any of the cache engines as a unique identifier to a cached resource + * + * Basically, the cache key generated for the following internal URI: + * module/action?key1=value1&key2=value2 + * Looks like: + * /localhost/all/module/action/key1/value1/key2/value2 + * + * @param string $internalUri The internal unified resource identifier + * Accepts rules formatted like 'module/action?key1=value1&key2=value2' + * Does not accept rules starting with a route name, except for '@sf_cache_partial' + * @param string $hostName The host name + * Optional - defaults to the current host name bu default + * @param string $vary The vary headers, separated by |, or "all" for all vary headers + * Defaults to 'all' + * @param string $contextualPrefix The contextual prefix for contextual partials. + * Defaults to 'currentModule/currentAction/currentPAram1/currentvalue1' + * Used only by the sfViewCacheManager::remove() method + * + * @return string The cache key + * If some of the parameters contained wildcards (* or **), the generated key will also have wildcards + */ + public function generateCacheKey($internalUri, $hostName = '', $vary = '', $contextualPrefix = '') + { + if ($callable = sfConfig::get('sf_cache_namespace_callable')) + { + if (!is_callable($callable)) + { + throw new sfException(sprintf('"%s" cannot be called as a function.', var_export($callable, true))); + } + + return call_user_func($callable, $internalUri, $hostName, $vary, $contextualPrefix, $this); + } + + if (strpos($internalUri, '@') === 0 && strpos($internalUri, '@sf_cache_partial') === false) + { + throw new sfException('A cache key cannot be generated for an internal URI using the @rule syntax'); + } + + $cacheKey = ''; + + if ($this->isContextual($internalUri)) + { + // Contextual partial + if (!$contextualPrefix) + { + list($route_name, $params) = $this->controller->convertUrlStringToParameters($this->routing->getCurrentInternalUri()); + + // if there is no module/action, it means that we have a 404 and the user is trying to cache it + if (!isset($params['module']) || !isset($params['action'])) + { + $params['module'] = sfConfig::get('sf_error_404_module'); + $params['action'] = sfConfig::get('sf_error_404_action'); + } + $cacheKey = $this->convertParametersToKey($params); + } + else + { + $cacheKey = $contextualPrefix; + } + list($route_name, $params) = $this->controller->convertUrlStringToParameters($internalUri); + $cacheKey .= sprintf('/%s/%s/%s', $params['module'], $params['action'], isset($params['sf_cache_key']) ? $params['sf_cache_key'] : ''); + } + else + { + // Regular action or non-contextual partial + list($route_name, $params) = $this->controller->convertUrlStringToParameters($internalUri); + if ($route_name == 'sf_cache_partial') + { + $cacheKey = 'sf_cache_partial/'; + } + + $cacheKey .= $this->convertParametersToKey($params); + } + + // add vary headers + if ($varyPart = $this->getCacheKeyVaryHeaderPart($internalUri, $vary)) + { + $cacheKey = '/'.$varyPart.'/'.ltrim($cacheKey, '/'); + } + + // add hostname + if ($hostNamePart = $this->getCacheKeyHostNamePart($hostName)) + { + $cacheKey = '/'.$hostNamePart.'/'.ltrim($cacheKey, '/'); + } + + // normalize to a leading slash + if (0 !== strpos($cacheKey, '/')) + { + $cacheKey = '/'.$cacheKey; + } + + // distinguish multiple slashes + while (false !== strpos($cacheKey, '//')) + { + $cacheKey = str_replace('//', '/'.substr(sha1($cacheKey), 0, 7).'/', $cacheKey); + } + + // prevent directory traversal + $cacheKey = strtr($cacheKey, array( + '/.' => '/_.', + '/_' => '/__', + '\\.' => '\\_.', + '\\_' => '\\__', + )); + + return $cacheKey; + } + + /** + * Gets the vary header part of view cache key. + * + * @param string $vary + * @return string + */ + protected function getCacheKeyVaryHeaderPart($internalUri, $vary = '') + { + if (!$this->options['cache_key_use_vary_headers']) + { + return ''; + } + + // prefix with vary headers + if (!$vary) + { + $varyHeaders = $this->getVary($internalUri); + + if (!$varyHeaders) + { + return 'all'; + } + + sort($varyHeaders); + $request = $this->context->getRequest(); + $varys = array(); + + foreach ($varyHeaders as $header) + { + $varys[] = $header . '-' . preg_replace('/\W+/', '_', $request->getHttpHeader($header)); + } + $vary = implode($varys, '-'); + } + + return $vary; + } + + /** + * Gets the hostname part of view cache key. + * + * @param string $hostName + * @return void + */ + protected function getCacheKeyHostNamePart($hostName = '') + { + if (!$this->options['cache_key_use_host_name']) + { + return ''; + } + + if (!$hostName) + { + $hostName = $this->context->getRequest()->getHost(); + } + + $hostName = preg_replace('/[^a-z0-9\*]/i', '_', $hostName); + $hostName = preg_replace('/_+/', '_', $hostName); + + return strtolower($hostName); + } + + /** + * Transforms an associative array of parameters from an URI into a unique key + * + * @param array $params Associative array of parameters from the URI (including, at least, module and action) + * + * @return string Unique key + */ + protected function convertParametersToKey($params) + { + if(!isset($params['module']) || !isset($params['action'])) + { + throw new sfException('A cache key must contain both a module and an action parameter'); + } + $module = $params['module']; + unset($params['module']); + $action = $params['action']; + unset($params['action']); + ksort($params); + $cacheKey = sprintf('%s/%s', $module, $action); + foreach ($params as $key => $value) + { + $cacheKey .= sprintf('/%s/%s', $key, $value); + } + + return $cacheKey; + } + + /** + * Adds a cache to the manager. + * + * @param string $moduleName Module name + * @param string $actionName Action name + * @param array $options Options for the cache + */ + public function addCache($moduleName, $actionName, $options = array()) + { + // normalize vary headers + if (isset($options['vary'])) + { + foreach ($options['vary'] as $key => $name) + { + $options['vary'][$key] = strtr(strtolower($name), '_', '-'); + } + } + + $options['lifeTime'] = isset($options['lifeTime']) ? $options['lifeTime'] : 0; + if (!isset($this->cacheConfig[$moduleName])) + { + $this->cacheConfig[$moduleName] = array(); + } + $this->cacheConfig[$moduleName][$actionName] = array( + 'withLayout' => isset($options['withLayout']) ? $options['withLayout'] : false, + 'lifeTime' => $options['lifeTime'], + 'clientLifeTime' => isset($options['clientLifeTime']) ? $options['clientLifeTime'] : $options['lifeTime'], + 'contextual' => isset($options['contextual']) ? $options['contextual'] : false, + 'vary' => isset($options['vary']) ? $options['vary'] : array(), + ); + } + + /** + * Registers configuration options for the cache. + * + * @param string $moduleName Module name + */ + public function registerConfiguration($moduleName) + { + if (!isset($this->loaded[$moduleName])) + { + require($this->context->getConfigCache()->checkConfig('modules/'.$moduleName.'/config/cache.yml')); + $this->loaded[$moduleName] = true; + } + } + + /** + * Retrieves the layout from the cache option list. + * + * @param string $internalUri Internal uniform resource identifier + * + * @return bool true, if have layout otherwise false + */ + public function withLayout($internalUri) + { + return $this->getCacheConfig($internalUri, 'withLayout', false); + } + + /** + * Retrieves lifetime from the cache option list. + * + * @param string $internalUri Internal uniform resource identifier + * + * @return int LifeTime + */ + public function getLifeTime($internalUri) + { + return $this->getCacheConfig($internalUri, 'lifeTime', 0); + } + + /** + * Retrieves client lifetime from the cache option list + * + * @param string $internalUri Internal uniform resource identifier + * + * @return int Client lifetime + */ + public function getClientLifeTime($internalUri) + { + return $this->getCacheConfig($internalUri, 'clientLifeTime', 0); + } + + /** + * Retrieves contextual option from the cache option list. + * + * @param string $internalUri Internal uniform resource identifier + * + * @return boolean true, if is contextual otherwise false + */ + public function isContextual($internalUri) + { + return $this->getCacheConfig($internalUri, 'contextual', false); + } + + /** + * Retrieves vary option from the cache option list. + * + * @param string $internalUri Internal uniform resource identifier + * + * @return array Vary options for the cache + */ + public function getVary($internalUri) + { + return $this->getCacheConfig($internalUri, 'vary', array()); + } + + /** + * Gets a config option from the cache. + * + * @param string $internalUri Internal uniform resource identifier + * @param string $key Option name + * @param string $defaultValue Default value of the option + * + * @return mixed Value of the option + */ + protected function getCacheConfig($internalUri, $key, $defaultValue = null) + { + list($route_name, $params) = $this->controller->convertUrlStringToParameters($internalUri); + + if (!isset($params['module'])) + { + return $defaultValue; + } + + $this->registerConfiguration($params['module']); + + $value = $defaultValue; + if (isset($this->cacheConfig[$params['module']][$params['action']][$key])) + { + $value = $this->cacheConfig[$params['module']][$params['action']][$key]; + } + else if (isset($this->cacheConfig[$params['module']]['DEFAULT'][$key])) + { + $value = $this->cacheConfig[$params['module']]['DEFAULT'][$key]; + } + + return $value; + } + + /** + * Returns true if the current content is cacheable. + * + * Possible break in backward compatibility: If the sf_lazy_cache_key + * setting is turned on in settings.yml, this method is not used when + * initially checking a partial's cacheability. + * + * @see sfPartialView, isActionCacheable() + * + * @param string $internalUri Internal uniform resource identifier + * + * @return bool true, if the content is cacheable otherwise false + */ + public function isCacheable($internalUri) + { + if ($this->request instanceof sfWebRequest && !$this->request->isMethod(sfRequest::GET)) + { + return false; + } + + list($route_name, $params) = $this->controller->convertUrlStringToParameters($internalUri); + + if (!isset($params['module'])) + { + return false; + } + + $this->registerConfiguration($params['module']); + + if (isset($this->cacheConfig[$params['module']][$params['action']])) + { + return ($this->cacheConfig[$params['module']][$params['action']]['lifeTime'] > 0); + } + else if (isset($this->cacheConfig[$params['module']]['DEFAULT'])) + { + return ($this->cacheConfig[$params['module']]['DEFAULT']['lifeTime'] > 0); + } + + return false; + } + + /** + * Returns true if the action is cacheable. + * + * @param string $moduleName A module name + * @param string $actionName An action or partial template name + * + * @return boolean True if the action is cacheable + * + * @see isCacheable() + */ + public function isActionCacheable($moduleName, $actionName) + { + if ($this->request instanceof sfWebRequest && !$this->request->isMethod(sfRequest::GET)) + { + return false; + } + + $this->registerConfiguration($moduleName); + + if (isset($this->cacheConfig[$moduleName][$actionName])) + { + return $this->cacheConfig[$moduleName][$actionName]['lifeTime'] > 0; + } + else if (isset($this->cacheConfig[$moduleName]['DEFAULT'])) + { + return $this->cacheConfig[$moduleName]['DEFAULT']['lifeTime'] > 0; + } + + return false; + } + + /** + * Retrieves content in the cache. + * + * @param string $internalUri Internal uniform resource identifier + * + * @return string The content in the cache + */ + public function get($internalUri) + { + // no cache or no cache set for this action + if (!$this->isCacheable($internalUri) || $this->ignore()) + { + return null; + } + + $retval = $this->cache->get($this->generateCacheKey($internalUri)); + + if (sfConfig::get('sf_logging_enabled')) + { + $this->dispatcher->notify(new sfEvent($this, 'application.log', array(sprintf('Cache for "%s" %s', $internalUri, $retval !== null ? 'exists' : 'does not exist')))); + } + + return $retval; + } + + /** + * Returns true if there is a cache. + * + * @param string $internalUri Internal uniform resource identifier + * + * @return bool true, if there is a cache otherwise false + */ + public function has($internalUri) + { + if (!$this->isCacheable($internalUri) || $this->ignore()) + { + return null; + } + + return $this->cache->has($this->generateCacheKey($internalUri)); + } + + /** + * Ignores the cache functionality. + * + * @return bool true, if the cache is ignore otherwise false + */ + protected function ignore() + { + // ignore cache parameter? (only available in debug mode) + if (sfConfig::get('sf_debug') && $this->context->getRequest()->getAttribute('sf_ignore_cache')) + { + if (sfConfig::get('sf_logging_enabled')) + { + $this->dispatcher->notify(new sfEvent($this, 'application.log', array('Discard cache'))); + } + + return true; + } + + return false; + } + + /** + * Sets the cache content. + * + * @param string $data Data to put in the cache + * @param string $internalUri Internal uniform resource identifier + * + * @return boolean true, if the data get set successfully otherwise false + */ + public function set($data, $internalUri) + { + if (!$this->isCacheable($internalUri)) + { + return false; + } + + try + { + $ret = $this->cache->set($this->generateCacheKey($internalUri), $data, $this->getLifeTime($internalUri)); + } + catch (Exception $e) + { + return false; + } + + if (sfConfig::get('sf_logging_enabled')) + { + $this->dispatcher->notify(new sfEvent($this, 'application.log', array(sprintf('Save cache for "%s"', $internalUri)))); + } + + return true; + } + + /** + * Removes the content in the cache. + * + * @param string $internalUri Internal uniform resource identifier + * @param string $hostName The host name + * @param string $vary The vary headers, separated by |, or "all" for all vary headers + * @param string $contextualPrefix The removal prefix for contextual partials. Defaults to '**' (all actions, all params) + * + * @return bool true, if the remove happened, false otherwise + */ + public function remove($internalUri, $hostName = '', $vary = '', $contextualPrefix = '**') + { + if (sfConfig::get('sf_logging_enabled')) + { + $this->dispatcher->notify(new sfEvent($this, 'application.log', array(sprintf('Remove cache for "%s"', $internalUri)))); + } + + $cacheKey = $this->generateCacheKey($internalUri, $hostName, $vary, $contextualPrefix); + + if(strpos($cacheKey, '*')) + { + return $this->cache->removePattern($cacheKey); + } + elseif ($this->cache->has($cacheKey)) + { + return $this->cache->remove($cacheKey); + } + } + + /** + * Retrieves the last modified time. + * + * @param string $internalUri Internal uniform resource identifier + * + * @return int The last modified datetime + */ + public function getLastModified($internalUri) + { + if (!$this->isCacheable($internalUri)) + { + return 0; + } + + return $this->cache->getLastModified($this->generateCacheKey($internalUri)); + } + + /** + * Retrieves the timeout. + * + * @param string $internalUri Internal uniform resource identifier + * + * @return int The timeout datetime + */ + public function getTimeout($internalUri) + { + if (!$this->isCacheable($internalUri)) + { + return 0; + } + + return $this->cache->getTimeout($this->generateCacheKey($internalUri)); + } + + /** + * Starts the fragment cache. + * + * @param string $name Unique fragment name + * @param string $lifeTime Life time for the cache + * @param string $clientLifeTime Client life time for the cache + * @param array $vary Vary options for the cache + * + * @return bool true, if success otherwise false + */ + public function start($name, $lifeTime, $clientLifeTime = null, $vary = array()) + { + $internalUri = $this->routing->getCurrentInternalUri(); + + if (!$clientLifeTime) + { + $clientLifeTime = $lifeTime; + } + + // add cache config to cache manager + list($route_name, $params) = $this->controller->convertUrlStringToParameters($internalUri); + $this->addCache($params['module'], $params['action'], array('withLayout' => false, 'lifeTime' => $lifeTime, 'clientLifeTime' => $clientLifeTime, 'vary' => $vary)); + + // get data from cache if available + $data = $this->get($internalUri.(strpos($internalUri, '?') ? '&' : '?').'_sf_cache_key='.$name); + if ($data !== null) + { + return $data; + } + else + { + ob_start(); + ob_implicit_flush(0); + + return null; + } + } + + /** + * Stops the fragment cache. + * + * @param string $name Unique fragment name + * + * @return bool true, if success otherwise false + */ + public function stop($name) + { + $data = ob_get_clean(); + + // save content to cache + $internalUri = $this->routing->getCurrentInternalUri(); + try + { + $this->set($data, $internalUri.(strpos($internalUri, '?') ? '&' : '?').'_sf_cache_key='.$name); + } + catch (Exception $e) + { + } + + return $data; + } + + /** + * Computes the cache key based on the passed parameters. + * + * @param array $parameters An array of parameters + */ + public function computeCacheKey(array $parameters) + { + if (isset($parameters['sf_cache_key'])) + { + return $parameters['sf_cache_key']; + } + + if (sfConfig::get('sf_logging_enabled')) + { + $this->dispatcher->notify(new sfEvent($this, 'application.log', array('Generate cache key'))); + } + ksort($parameters); + + return md5(serialize($parameters)); + } + + /** + * Checks that the supplied parameters include a cache key. + * + * If no 'sf_cache_key' parameter is present one is added to the array as + * it is passed by reference. + * + * @param array $parameters An array of parameters + * + * @return string The cache key + */ + public function checkCacheKey(array & $parameters) + { + $parameters['sf_cache_key'] = $this->computeCacheKey($parameters); + + return $parameters['sf_cache_key']; + } + + /** + * Computes a partial internal URI. + * + * @param string $module The module name + * @param string $action The action name + * @param string $cacheKey The cache key + * + * @return string The internal URI + */ + public function getPartialUri($module, $action, $cacheKey) + { + return sprintf('@sf_cache_partial?module=%s&action=%s&sf_cache_key=%s', $module, $action, $cacheKey); + } + + /** + * Returns whether a partial template is in the cache. + * + * @param string $module The module name + * @param string $action The action name + * @param string $cacheKey The cache key + * + * @return bool true if a partial is in the cache, false otherwise + */ + public function hasPartialCache($module, $action, $cacheKey) + { + return $this->has($this->getPartialUri($module, $action, $cacheKey)); + } + + /** + * Gets a partial template from the cache. + * + * @param string $module The module name + * @param string $action The action name + * @param string $cacheKey The cache key + * + * @return string The cache content + */ + public function getPartialCache($module, $action, $cacheKey) + { + $uri = $this->getPartialUri($module, $action, $cacheKey); + + if (!$this->isCacheable($uri)) + { + return null; + } + + // retrieve content from cache + $cache = $this->get($uri); + + if (null === $cache) + { + return null; + } + + $cache = unserialize($cache); + $content = $cache['content']; + $this->context->getResponse()->merge($cache['response']); + + if (sfConfig::get('sf_web_debug')) + { + $content = $this->dispatcher->filter(new sfEvent($this, 'view.cache.filter_content', array('response' => $this->context->getResponse(), 'uri' => $uri, 'new' => false)), $content)->getReturnValue(); + } + + return $content; + } + + /** + * Sets an action template in the cache. + * + * @param string $module The module name + * @param string $action The action name + * @param string $cacheKey The cache key + * @param string $content The content to cache + * + * @return string The cached content + */ + public function setPartialCache($module, $action, $cacheKey, $content) + { + $uri = $this->getPartialUri($module, $action, $cacheKey); + if (!$this->isCacheable($uri)) + { + return $content; + } + + $saved = $this->set(serialize(array('content' => $content, 'response' => $this->context->getResponse())), $uri); + + if ($saved && sfConfig::get('sf_web_debug')) + { + $content = $this->dispatcher->filter(new sfEvent($this, 'view.cache.filter_content', array('response' => $this->context->getResponse(), 'uri' => $uri, 'new' => true)), $content)->getReturnValue(); + } + + return $content; + } + + /** + * Returns whether an action template is in the cache. + * + * @param string $uri The internal URI + * + * @return bool true if an action is in the cache, false otherwise + */ + public function hasActionCache($uri) + { + return $this->has($uri) && !$this->withLayout($uri); + } + + /** + * Gets an action template from the cache. + * + * @param string $uri The internal URI + * + * @return array An array composed of the cached content and the view attribute holder + */ + public function getActionCache($uri) + { + if (!$this->isCacheable($uri) || $this->withLayout($uri)) + { + return null; + } + + // retrieve content from cache + $cache = $this->get($uri); + + if (null === $cache) + { + return null; + } + + $cache = unserialize($cache); + $content = $cache['content']; + $cache['response']->setEventDispatcher($this->dispatcher); + $this->context->getResponse()->copyProperties($cache['response']); + + if (sfConfig::get('sf_web_debug')) + { + $content = $this->dispatcher->filter(new sfEvent($this, 'view.cache.filter_content', array('response' => $this->context->getResponse(), 'uri' => $uri, 'new' => false)), $content)->getReturnValue(); + } + + return array($content, $cache['decoratorTemplate']); + } + + /** + * Sets an action template in the cache. + * + * @param string $uri The internal URI + * @param string $content The content to cache + * @param string $decoratorTemplate The view attribute holder to cache + * + * @return string The cached content + */ + public function setActionCache($uri, $content, $decoratorTemplate) + { + if (!$this->isCacheable($uri) || $this->withLayout($uri)) + { + return $content; + } + + $saved = $this->set(serialize(array('content' => $content, 'decoratorTemplate' => $decoratorTemplate, 'response' => $this->context->getResponse())), $uri); + + if ($saved && sfConfig::get('sf_web_debug')) + { + $content = $this->dispatcher->filter(new sfEvent($this, 'view.cache.filter_content', array('response' => $this->context->getResponse(), 'uri' => $uri, 'new' => true)), $content)->getReturnValue(); + } + + return $content; + } + + /** + * Sets a page in the cache. + * + * @param string $uri The internal URI + */ + public function setPageCache($uri) + { + if (sfView::RENDER_CLIENT != $this->controller->getRenderMode()) + { + return; + } + + // save content in cache + $saved = $this->set(serialize($this->context->getResponse()), $uri); + + if ($saved && sfConfig::get('sf_web_debug')) + { + $content = $this->dispatcher->filter(new sfEvent($this, 'view.cache.filter_content', array('response' => $this->context->getResponse(), 'uri' => $uri, 'new' => true)), $this->context->getResponse()->getContent())->getReturnValue(); + + $this->context->getResponse()->setContent($content); + } + } + + /** + * Gets a page from the cache. + * + * @param string $uri The internal URI + * + * @return string The cached page + */ + public function getPageCache($uri) + { + $retval = $this->get($uri); + + if (null === $retval) + { + return false; + } + + $cachedResponse = unserialize($retval); + $cachedResponse->setEventDispatcher($this->dispatcher); + + if (sfView::RENDER_VAR == $this->controller->getRenderMode()) + { + $this->controller->getActionStack()->getLastEntry()->setPresentation($cachedResponse->getContent()); + $this->context->getResponse()->setContent(''); + } + else + { + $this->context->setResponse($cachedResponse); + + if (sfConfig::get('sf_web_debug')) + { + $content = $this->dispatcher->filter(new sfEvent($this, 'view.cache.filter_content', array('response' => $this->context->getResponse(), 'uri' => $uri, 'new' => false)), $this->context->getResponse()->getContent())->getReturnValue(); + + $this->context->getResponse()->setContent($content); + } + } + + return true; + } + + /** + * Returns the current request's cache key. + * + * This cache key is calculated based on the routing factory's current URI + * and any GET parameters from the current request factory. + * + * @return string The cache key for the current request + */ + public function getCurrentCacheKey() + { + $cacheKey = $this->routing->getCurrentInternalUri(); + + if ($getParameters = $this->request->getGetParameters()) + { + $cacheKey .= false === strpos($cacheKey, '?') ? '?' : '&'; + $cacheKey .= http_build_query($getParameters, null, '&'); + } + + return $cacheKey; + } + + /** + * Listens to the 'view.cache.filter_content' event to decorate a chunk of HTML with cache information. + * + * @param sfEvent $event A sfEvent instance + * @param string $content The HTML content + * + * @return string The decorated HTML string + */ + public function decorateContentWithDebug(sfEvent $event, $content) + { + // don't decorate if not html or if content is null + if (!$content || false === strpos($event['response']->getContentType(), 'html')) + { + return $content; + } + + $this->context->getConfiguration()->loadHelpers(array('Helper', 'Url', 'Asset', 'Tag')); + + $sf_cache_key = $this->generateCacheKey($event['uri']); + $bgColor = $event['new'] ? '#9ff' : '#ff9'; + $lastModified = $this->cache->getLastModified($sf_cache_key); + $cacheKey = $this->cache->getOption('prefix').$sf_cache_key; + $id = md5($event['uri']); + + return ' +
    +
    + + +
    + '.$content.' +
    + '; + } +} diff --git a/lib/vendor/symfony/lib/view/.svn/text-base/sfViewParameterHolder.class.php.svn-base b/lib/vendor/symfony/lib/view/.svn/text-base/sfViewParameterHolder.class.php.svn-base new file mode 100644 index 0000000..5172c8a --- /dev/null +++ b/lib/vendor/symfony/lib/view/.svn/text-base/sfViewParameterHolder.class.php.svn-base @@ -0,0 +1,189 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfViewParameterHolder stores all variables that will be available to the template. + * + * It can also escape variables with an escaping method. + * + * @package symfony + * @subpackage view + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfViewParameterHolder extends sfParameterHolder +{ + protected + $dispatcher = null, + $escaping = null, + $escapingMethod = null; + + /** + * Constructor. + */ + public function __construct(sfEventDispatcher $dispatcher, $parameters = array(), $options = array()) + { + $this->initialize($dispatcher, $parameters, $options); + } + + /** + * Initializes this view parameter holder. + * + * @param sfEventDispatcher $dispatcher An sfEventDispatcher instance. + * @param array $parameters An associative array of initialization parameters. + * @param array $options An associative array of options. + * + * Options: + * + * # escaping_strategy - [off] - The escaping strategy (on or off) + * # escaping_method - [ESC_SPECIALCHARS] - The escaping method (ESC_RAW, ESC_ENTITIES, ESC_JS, ESC_JS_NO_ENTITIES, or ESC_SPECIALCHARS) + * + * @return bool true, if initialization completes successfully, otherwise false. + * + * @throws sfInitializationException If an error occurs while initializing this view parameter holder. + */ + public function initialize(sfEventDispatcher $dispatcher, $parameters = array(), $options = array()) + { + $this->dispatcher = $dispatcher; + + $this->add($parameters); + + $this->setEscaping(isset($options['escaping_strategy']) ? $options['escaping_strategy'] : false); + $this->setEscapingMethod(isset($options['escaping_method']) ? $options['escaping_method'] : 'ESC_SPECIALCHARS'); + } + + /** + * Returns true if the current object acts as an escaper. + * + * @return bool true if the current object acts as an escaper, false otherwise + */ + public function isEscaped() + { + return in_array($this->getEscaping(), array('on', 'true', true), true); + } + + /** + * Returns an array representation of the view parameters. + * + * @return array An array of view parameters + * + * @throws InvalidArgumentException + */ + public function toArray() + { + $event = $this->dispatcher->filter(new sfEvent($this, 'template.filter_parameters'), $this->getAll()); + $parameters = $event->getReturnValue(); + $attributes = array(); + + if ($this->isEscaped()) + { + $attributes['sf_data'] = sfOutputEscaper::escape($this->getEscapingMethod(), $parameters); + foreach ($attributes['sf_data'] as $key => $value) + { + $attributes[$key] = $value; + } + } + else if (in_array($this->getEscaping(), array('off', false), true)) + { + $attributes = $parameters; + $attributes['sf_data'] = sfOutputEscaper::escape(ESC_RAW, $parameters); + } + else + { + throw new InvalidArgumentException(sprintf('Unknown strategy "%s".', $this->getEscaping())); + } + + return $attributes; + } + + /** + * Gets the default escaping strategy associated with this view. + * + * The escaping strategy specifies how the variables get passed to the view. + * + * @return string the escaping strategy + */ + public function getEscaping() + { + return $this->escaping; + } + + /** + * Sets the escape character strategy. + * + * @param string $escaping Escape code + */ + public function setEscaping($escaping) + { + $this->escaping = $escaping; + } + + /** + * Returns the name of the function that is to be used as the escaping method. + * + * If the escaping method is empty, then that is returned. The default value + * specified by the sub-class will be used. If the method does not exist (in + * the sense there is no define associated with the method), an exception is + * thrown. + * + * @return string The escaping method as the name of the function to use + * + * @throws InvalidArgumentException If the method does not exist + */ + public function getEscapingMethod() + { + if (empty($this->escapingMethod)) + { + return $this->escapingMethod; + } + + if (!defined($this->escapingMethod)) + { + throw new InvalidArgumentException(sprintf('The escaping method "%s" is not available.', $this->escapingMethod)); + } + + return constant($this->escapingMethod); + } + + /** + * Sets the escaping method for the current view. + * + * @param string $method Method for escaping + */ + public function setEscapingMethod($method) + { + $this->escapingMethod = $method; + } + + /** + * Serializes the current instance. + * + * @return array Objects instance + */ + public function serialize() + { + return serialize(array($this->getAll(), $this->escapingMethod, $this->escaping)); + } + + /** + * Unserializes a sfViewParameterHolder instance. + * + * @param string $serialized The serialized instance data + */ + public function unserialize($serialized) + { + list($this->parameters, $escapingMethod, $escaping) = unserialize($serialized); + + $this->initialize(sfContext::hasInstance() ? sfContext::getInstance()->getEventDispatcher() : new sfEventDispatcher()); + + $this->setEscapingMethod($escapingMethod); + $this->setEscaping($escaping); + } +} diff --git a/lib/vendor/symfony/lib/view/sfPHPView.class.php b/lib/vendor/symfony/lib/view/sfPHPView.class.php new file mode 100644 index 0000000..fcdf5cd --- /dev/null +++ b/lib/vendor/symfony/lib/view/sfPHPView.class.php @@ -0,0 +1,201 @@ + + * (c) 2004-2006 Sean Kerr + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * A view that uses PHP as the templating engine. + * + * @package symfony + * @subpackage view + * @author Fabien Potencier + * @author Sean Kerr + * @version SVN: $Id: sfPHPView.class.php 28713 2010-03-23 15:08:22Z fabien $ + */ +class sfPHPView extends sfView +{ + /** + * Executes any presentation logic for this view. + */ + public function execute() + { + } + + /** + * Loads core and standard helpers to be use in the template. + */ + protected function loadCoreAndStandardHelpers() + { + static $coreHelpersLoaded = 0; + + if ($coreHelpersLoaded) + { + return; + } + + $coreHelpersLoaded = 1; + + $helpers = array_unique(array_merge(array('Helper', 'Url', 'Asset', 'Tag', 'Escaping'), sfConfig::get('sf_standard_helpers'))); + + $this->context->getConfiguration()->loadHelpers($helpers); + } + + /** + * Renders the presentation. + * + * @param string $_sfFile Filename + * + * @return string File content + */ + protected function renderFile($_sfFile) + { + if (sfConfig::get('sf_logging_enabled')) + { + $this->dispatcher->notify(new sfEvent($this, 'application.log', array(sprintf('Render "%s"', $_sfFile)))); + } + + $this->loadCoreAndStandardHelpers(); + + // EXTR_REFS can't be used (see #3595 and #3151) + $vars = $this->attributeHolder->toArray(); + extract($vars); + + // render + ob_start(); + ob_implicit_flush(0); + + try + { + require($_sfFile); + } + catch (Exception $e) + { + // need to end output buffering before throwing the exception #7596 + ob_end_clean(); + throw $e; + } + + return ob_get_clean(); + } + + /** + * Retrieves the template engine associated with this view. + * + * Note: This will return null because PHP itself has no engine reference. + * + * @return null + */ + public function getEngine() + { + return null; + } + + /** + * Configures template. + * + * @return void + */ + public function configure() + { + // store our current view + $this->context->set('view_instance', $this); + + // require our configuration + require($this->context->getConfigCache()->checkConfig('modules/'.$this->moduleName.'/config/view.yml')); + + // set template directory + if (!$this->directory) + { + $this->setDirectory($this->context->getConfiguration()->getTemplateDir($this->moduleName, $this->getTemplate())); + } + } + + /** + * Loop through all template slots and fill them in with the results of presentation data. + * + * @param string $content A chunk of decorator content + * + * @return string A decorated template + */ + protected function decorate($content) + { + if (sfConfig::get('sf_logging_enabled')) + { + $this->dispatcher->notify(new sfEvent($this, 'application.log', array(sprintf('Decorate content with "%s/%s"', $this->getDecoratorDirectory(), $this->getDecoratorTemplate())))); + } + + // set the decorator content as an attribute + $attributeHolder = $this->attributeHolder; + + $this->attributeHolder = $this->initializeAttributeHolder(array('sf_content' => new sfOutputEscaperSafe($content))); + $this->attributeHolder->set('sf_type', 'layout'); + + // check to see if the decorator template exists + if (!is_readable($this->getDecoratorDirectory().'/'.$this->getDecoratorTemplate())) + { + throw new sfRenderException(sprintf('The decorator template "%s" does not exist or is unreadable in "%s".', $this->decoratorTemplate, $this->decoratorDirectory)); + } + + // render the decorator template and return the result + $ret = $this->renderFile($this->getDecoratorDirectory().'/'.$this->getDecoratorTemplate()); + + $this->attributeHolder = $attributeHolder; + + return $ret; + } + + /** + * Renders the presentation. + * + * @return string A string representing the rendered presentation + */ + public function render() + { + $content = null; + if (sfConfig::get('sf_cache')) + { + $viewCache = $this->context->getViewCacheManager(); + $uri = $viewCache->getCurrentCacheKey(); + + if (null !== $uri) + { + list($content, $decoratorTemplate) = $viewCache->getActionCache($uri); + if (null !== $content) + { + $this->setDecoratorTemplate($decoratorTemplate); + } + } + } + + // render template if no cache + if (null === $content) + { + // execute pre-render check + $this->preRenderCheck(); + + $this->attributeHolder->set('sf_type', 'action'); + + // render template file + $content = $this->renderFile($this->getDirectory().'/'.$this->getTemplate()); + + if (sfConfig::get('sf_cache') && null !== $uri) + { + $content = $viewCache->setActionCache($uri, $content, $this->isDecorator() ? $this->getDecoratorDirectory().'/'.$this->getDecoratorTemplate() : false); + } + } + + // now render decorator template, if one exists + if ($this->isDecorator()) + { + $content = $this->decorate($content); + } + + return $content; + } +} diff --git a/lib/vendor/symfony/lib/view/sfPartialView.class.php b/lib/vendor/symfony/lib/view/sfPartialView.class.php new file mode 100644 index 0000000..93b97fa --- /dev/null +++ b/lib/vendor/symfony/lib/view/sfPartialView.class.php @@ -0,0 +1,165 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * A View to render partials. + * + * @package symfony + * @subpackage view + * @author Fabien Potencier + * @version SVN: $Id: sfPartialView.class.php 31928 2011-01-29 16:02:51Z Kris.Wallsmith $ + */ +class sfPartialView extends sfPHPView +{ + protected + $viewCache = null, + $checkCache = false, + $cacheKey = null, + $partialVars = array(); + + /** + * Constructor. + * + * @see sfView + */ + public function initialize($context, $moduleName, $actionName, $viewName) + { + $ret = parent::initialize($context, $moduleName, $actionName, $viewName); + + $this->viewCache = $this->context->getViewCacheManager(); + + if (sfConfig::get('sf_cache')) + { + $this->checkCache = $this->viewCache->isActionCacheable($moduleName, $actionName); + } + + return $ret; + } + + /** + * Executes any presentation logic for this view. + */ + public function execute() + { + } + + /** + * @param array $partialVars + */ + public function setPartialVars(array $partialVars) + { + $this->partialVars = $partialVars; + $this->getAttributeHolder()->add($partialVars); + } + + /** + * Configures template for this view. + */ + public function configure() + { + $this->setDecorator(false); + $this->setTemplate($this->actionName.$this->getExtension()); + if ('global' == $this->moduleName) + { + $this->setDirectory($this->context->getConfiguration()->getDecoratorDir($this->getTemplate())); + } + else + { + $this->setDirectory($this->context->getConfiguration()->getTemplateDir($this->moduleName, $this->getTemplate())); + } + } + + /** + * Renders the presentation. + * + * @return string Current template content + */ + public function render() + { + if (sfConfig::get('sf_debug') && sfConfig::get('sf_logging_enabled')) + { + $timer = sfTimerManager::getTimer(sprintf('Partial "%s/%s"', $this->moduleName, $this->actionName)); + } + + if ($retval = $this->getCache()) + { + return $retval; + } + + if ($this->checkCache) + { + $mainResponse = $this->context->getResponse(); + + $responseClass = get_class($mainResponse); + $response = new $responseClass($this->context->getEventDispatcher(), $mainResponse->getOptions()); + + // the inner response has access to different properties, depending on whether it is marked as contextual in cache.yml + if ($this->viewCache->isContextual($this->viewCache->getPartialUri($this->moduleName, $this->actionName, $this->cacheKey))) + { + $response->copyProperties($mainResponse); + } + else + { + $response->setContentType($mainResponse->getContentType()); + } + + $this->context->setResponse($response); + } + + try + { + // execute pre-render check + $this->preRenderCheck(); + + $this->getAttributeHolder()->set('sf_type', 'partial'); + + // render template + $retval = $this->renderFile($this->getDirectory().'/'.$this->getTemplate()); + } + catch (Exception $e) + { + if ($this->checkCache) + { + $this->context->setResponse($mainResponse); + $mainResponse->merge($response); + } + + throw $e; + } + + if ($this->checkCache) + { + $retval = $this->viewCache->setPartialCache($this->moduleName, $this->actionName, $this->cacheKey, $retval); + $this->context->setResponse($mainResponse); + $mainResponse->merge($response); + } + + if (sfConfig::get('sf_debug') && sfConfig::get('sf_logging_enabled')) + { + $timer->addTime(); + } + + return $retval; + } + + public function getCache() + { + if (!$this->checkCache) + { + return null; + } + + $this->cacheKey = $this->viewCache->checkCacheKey($this->partialVars); + if ($retval = $this->viewCache->getPartialCache($this->moduleName, $this->actionName, $this->cacheKey)) + { + return $retval; + } + } +} diff --git a/lib/vendor/symfony/lib/view/sfView.class.php b/lib/vendor/symfony/lib/view/sfView.class.php new file mode 100644 index 0000000..7b8eff2 --- /dev/null +++ b/lib/vendor/symfony/lib/view/sfView.class.php @@ -0,0 +1,572 @@ + + * (c) 2004-2006 Sean Kerr + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * A view represents the presentation layer of an action. Output can be + * customized by supplying attributes, which a template can manipulate and + * display. + * + * @package symfony + * @subpackage view + * @author Fabien Potencier + * @author Sean Kerr + * @version SVN: $Id: sfView.class.php 28713 2010-03-23 15:08:22Z fabien $ + */ +abstract class sfView +{ + /** + * Show an alert view. + */ + const ALERT = 'Alert'; + + /** + * Show an error view. + */ + const ERROR = 'Error'; + + /** + * Show a form input view. + */ + const INPUT = 'Input'; + + /** + * Skip view execution. + */ + const NONE = 'None'; + + /** + * Show a success view. + */ + const SUCCESS = 'Success'; + + /** + * Do not render the presentation. + */ + const RENDER_NONE = 1; + + /** + * Render the presentation to the client. + */ + const RENDER_CLIENT = 2; + + /** + * Render the presentation to a variable. + */ + const RENDER_VAR = 4; + + /** + * Skip view rendering but output http headers + */ + const HEADER_ONLY = 8; + + protected + $context = null, + $dispatcher = null, + $decorator = false, + $decoratorDirectory = null, + $decoratorTemplate = null, + $directory = null, + $componentSlots = array(), + $template = null, + $attributeHolder = null, + $parameterHolder = null, + $moduleName = '', + $actionName = '', + $viewName = '', + $extension = '.php'; + + /** + * Class constructor. + * + * @see initialize() + */ + public function __construct($context, $moduleName, $actionName, $viewName) + { + $this->initialize($context, $moduleName, $actionName, $viewName); + } + + /** + * Initializes this view. + * + * @param sfContext $context The current application context + * @param string $moduleName The module name for this view + * @param string $actionName The action name for this view + * @param string $viewName The view name + * + * @return bool true, if initialization completes successfully, otherwise false + */ + public function initialize($context, $moduleName, $actionName, $viewName) + { + $this->moduleName = $moduleName; + $this->actionName = $actionName; + $this->viewName = $viewName; + + $this->context = $context; + $this->dispatcher = $context->getEventDispatcher(); + + sfOutputEscaper::markClassesAsSafe(array('sfForm', 'sfFormField', 'sfFormFieldSchema', 'sfModelGeneratorHelper')); + + $this->attributeHolder = $this->initializeAttributeHolder(); + + $this->parameterHolder = new sfParameterHolder(); + $this->parameterHolder->add(sfConfig::get('mod_'.strtolower($moduleName).'_view_param', array())); + + $request = $context->getRequest(); + + $format = $request->getRequestFormat(); + if (null !== $format) + { + if ('html' != $format) + { + $this->setExtension('.'.$format.$this->getExtension()); + } + + if ($mimeType = $request->getMimeType($format)) + { + $this->context->getResponse()->setContentType($mimeType); + + if ('html' != $format) + { + $this->setDecorator(false); + } + } + } + $this->dispatcher->notify(new sfEvent($this, 'view.configure_format', array('format' => $format, 'response' => $context->getResponse(), 'request' => $context->getRequest()))); + + // include view configuration + $this->configure(); + + return true; + } + + protected function initializeAttributeHolder($attributes = array()) + { + $attributeHolder = new sfViewParameterHolder($this->dispatcher, $attributes, array( + 'escaping_method' => sfConfig::get('sf_escaping_method'), + 'escaping_strategy' => sfConfig::get('sf_escaping_strategy'), + )); + + return $attributeHolder; + } + + /** + * Executes any presentation logic and set template attributes. + */ + abstract function execute(); + + /** + * Configures template. + */ + abstract function configure(); + + /** + * Retrieves this views decorator template directory. + * + * @return string An absolute filesystem path to this views decorator template directory + */ + public function getDecoratorDirectory() + { + return $this->decoratorDirectory; + } + + /** + * Retrieves this views decorator template. + * + * @return string A template filename, if a template has been set, otherwise null + */ + public function getDecoratorTemplate() + { + return $this->decoratorTemplate; + } + + /** + * Retrieves this view template directory. + * + * @return string An absolute filesystem path to this views template directory + */ + public function getDirectory() + { + return $this->directory; + } + + /** + * Retrieves the template engine associated with this view. + * + * Note: This will return null for PHPView instances. + * + * @return mixed A template engine instance + */ + abstract function getEngine(); + + /** + * Retrieves this views template. + * + * @return string A template filename, if a template has been set, otherwise null + */ + public function getTemplate() + { + return $this->template; + } + + /** + * Retrieves attributes for the current view. + * + * @return sfParameterHolder The attribute parameter holder + */ + public function getAttributeHolder() + { + return $this->attributeHolder; + } + + /** + * Retrieves an attribute for the current view. + * + * @param string $name Name of the attribute + * @param string $default Value of the attribute + * + * @return mixed Attribute + */ + public function getAttribute($name, $default = null) + { + return $this->attributeHolder->get($name, $default); + } + + /** + * Returns true if the view have attributes. + * + * @param string $name Name of the attribute + * + * @return mixed Attribute of the view + */ + public function hasAttribute($name) + { + return $this->attributeHolder->has($name); + } + + /** + * Sets an attribute of the view. + * + * @param string $name Attribute name + * @param string $value Value for the attribute + */ + public function setAttribute($name, $value) + { + $this->attributeHolder->set($name, $value); + } + + /** + * Retrieves the parameters for the current view. + * + * @return sfParameterHolder The parameter holder + */ + public function getParameterHolder() + { + return $this->parameterHolder; + } + + /** + * Retrieves a parameter from the current view. + * + * @param string $name Parameter name + * @param string $default Default parameter value + * + * @return mixed A parameter value + */ + public function getParameter($name, $default = null) + { + return $this->parameterHolder->get($name, $default); + } + + /** + * Indicates whether or not a parameter exist for the current view. + * + * @param string $name Name of the parameter + * + * @return bool true, if the parameter exists otherwise false + */ + public function hasParameter($name) + { + return $this->parameterHolder->has($name); + } + + /** + * Sets a parameter for the view. + * + * @param string $name Name of the parameter + * @param string $value The parameter value + */ + public function setParameter($name, $value) + { + $this->parameterHolder->set($name, $value); + } + + /** + * Indicates that this view is a decorating view. + * + * @return bool true, if this view is a decorating view, otherwise false + */ + public function isDecorator() + { + return $this->decorator; + } + + /** + * Sets the decorating mode for the current view. + * + * @param bool $boolean Set the decorating mode for the view + */ + public function setDecorator($boolean) + { + $this->decorator = (boolean) $boolean; + + if (false === $boolean) + { + $this->decoratorTemplate = false; + } + } + + /** + * Executes a basic pre-render check to verify all required variables exist + * and that the template is readable. + * + * @throws sfRenderException If the pre-render check fails + */ + protected function preRenderCheck() + { + if (null === $this->template) + { + // a template has not been set + throw new sfRenderException('A template has not been set.'); + } + + if (!is_readable($this->directory.'/'.$this->template)) + { + // 404? + if ('404' == $this->context->getResponse()->getStatusCode()) + { + // use default exception templates + $this->template = sfException::getTemplatePathForError($this->context->getRequest()->getRequestFormat(), false); + $this->directory = dirname($this->template); + $this->template = basename($this->template); + $this->setAttribute('code', '404'); + $this->setAttribute('text', 'Not Found'); + } + else + { + throw new sfRenderException(sprintf('The template "%s" does not exist or is unreadable in "%s".', $this->template, $this->directory)); + } + } + } + + /** + * Renders the presentation. + * + * @return string A string representing the rendered presentation + */ + abstract function render(); + + /** + * Sets the decorator template directory for this view. + * + * @param string $directory An absolute filesystem path to a template directory + */ + public function setDecoratorDirectory($directory) + { + $this->decoratorDirectory = $directory; + } + + /** + * Sets the decorator template for this view. + * + * If the template path is relative, it will be based on the currently + * executing module's template sub-directory. + * + * @param string $template An absolute or relative filesystem path to a template + */ + public function setDecoratorTemplate($template) + { + if (false === $template) + { + $this->setDecorator(false); + + return; + } + else if (null === $template) + { + return; + } + + if (!strpos($template, '.')) + { + $template .= $this->getExtension(); + } + + if (sfToolkit::isPathAbsolute($template)) + { + $this->decoratorDirectory = dirname($template); + $this->decoratorTemplate = basename($template); + } + else + { + $this->decoratorDirectory = $this->context->getConfiguration()->getDecoratorDir($template); + $this->decoratorTemplate = $template; + } + + // set decorator status + $this->decorator = true; + } + + /** + * Sets the template directory for this view. + * + * @param string $directory An absolute filesystem path to a template directory + */ + public function setDirectory($directory) + { + $this->directory = $directory; + } + + /** + * Sets the module and action to be executed in place of a particular template attribute. + * + * @param string $attributeName A template attribute name + * @param string $moduleName A module name + * @param string $componentName A component name + */ + public function setComponentSlot($attributeName, $moduleName, $componentName) + { + $this->componentSlots[$attributeName] = array(); + $this->componentSlots[$attributeName]['module_name'] = $moduleName; + $this->componentSlots[$attributeName]['component_name'] = $componentName; + } + + /** + * Indicates whether or not a component slot exists. + * + * @param string $name The component slot name + * + * @return bool true, if the component slot exists, otherwise false + */ + public function hasComponentSlot($name) + { + return isset($this->componentSlots[$name]); + } + + /** + * Gets a component slot + * + * @param string $name The component slot name + * + * @return array The component slot + */ + public function getComponentSlot($name) + { + if (isset($this->componentSlots[$name]) && $this->componentSlots[$name]['module_name'] && $this->componentSlots[$name]['component_name']) + { + return array($this->componentSlots[$name]['module_name'], $this->componentSlots[$name]['component_name']); + } + + return null; + } + + /** + * Sets the template for this view. + * + * If the template path is relative, it will be based on the currently + * executing module's template sub-directory. + * + * @param string $template An absolute or relative filesystem path to a template + */ + public function setTemplate($template) + { + if (sfToolkit::isPathAbsolute($template)) + { + $this->directory = dirname($template); + $this->template = basename($template); + } + else + { + $this->directory = $this->context->getConfiguration()->getTemplateDir($this->moduleName, $template); + $this->template = $template; + } + } + + /** + * Retrieves the current view extension. + * + * @return string The extension for current view. + */ + public function getExtension() + { + return $this->extension; + } + + /** + * Sets an extension for the current view. + * + * @param string $extension The extension name. + */ + public function setExtension($extension) + { + $this->extension = $extension; + } + + /** + * Gets the module name associated with this view. + * + * @return string A module name + */ + public function getModuleName() + { + return $this->moduleName; + } + + /** + * Gets the action name associated with this view. + * + * @return string An action name + */ + public function getActionName() + { + return $this->actionName; + } + + /** + * Gets the view name associated with this view. + * + * @return string An action name + */ + public function getViewName() + { + return $this->viewName; + } + + /** + * Calls methods defined via sfEventDispatcher. + * + * @param string $method The method name + * @param array $arguments The method arguments + * + * @return mixed The returned value of the called method + * + * @throws sfException< If the calls fails + */ + public function __call($method, $arguments) + { + $event = $this->dispatcher->notifyUntil(new sfEvent($this, 'view.method_not_found', array('method' => $method, 'arguments' => $arguments))); + if (!$event->isProcessed()) + { + throw new sfException(sprintf('Call to undefined method %s::%s.', get_class($this), $method)); + } + + return $event->getReturnValue(); + } +} diff --git a/lib/vendor/symfony/lib/view/sfViewCacheManager.class.php b/lib/vendor/symfony/lib/view/sfViewCacheManager.class.php new file mode 100644 index 0000000..f43ee63 --- /dev/null +++ b/lib/vendor/symfony/lib/view/sfViewCacheManager.class.php @@ -0,0 +1,1055 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Cache class to cache the HTML results for actions and templates. + * + * This class uses a sfCache instance implementation to store cache. + * + * To disable all caching, you can set the [sf_cache] constant to false. + * + * @package symfony + * @subpackage view + * @author Fabien Potencier + * @version SVN: $Id: sfViewCacheManager.class.php 32699 2011-07-01 06:58:02Z fabien $ + */ +class sfViewCacheManager +{ + protected + $cache = null, + $cacheConfig = array(), + $context = null, + $dispatcher = null, + $controller = null, + $routing = null, + $request = null, + $loaded = array(); + + /** + * Class constructor. + * + * @see initialize() + */ + public function __construct($context, sfCache $cache, $options = array()) + { + $this->initialize($context, $cache, $options); + } + + /** + * Initializes the cache manager. + * + * @param sfContext $context Current application context + * @param sfCache $cache An sfCache instance + */ + public function initialize($context, sfCache $cache, $options = array()) + { + $this->context = $context; + $this->dispatcher = $context->getEventDispatcher(); + $this->controller = $context->getController(); + $this->request = $context->getRequest(); + $this->options = array_merge(array( + 'cache_key_use_vary_headers' => true, + 'cache_key_use_host_name' => true, + ), $options); + + if (sfConfig::get('sf_web_debug')) + { + $this->dispatcher->connect('view.cache.filter_content', array($this, 'decorateContentWithDebug')); + } + + // empty configuration + $this->cacheConfig = array(); + + // cache instance + $this->cache = $cache; + + // routing instance + $this->routing = $context->getRouting(); + } + + /** + * Retrieves the current cache context. + * + * @return sfContext The sfContext instance + */ + public function getContext() + { + return $this->context; + } + + /** + * Retrieves the current cache object. + * + * @return sfCache The current cache object + */ + public function getCache() + { + return $this->cache; + } + + /** + * Generates a unique cache key for an internal URI. + * This cache key can be used by any of the cache engines as a unique identifier to a cached resource + * + * Basically, the cache key generated for the following internal URI: + * module/action?key1=value1&key2=value2 + * Looks like: + * /localhost/all/module/action/key1/value1/key2/value2 + * + * @param string $internalUri The internal unified resource identifier + * Accepts rules formatted like 'module/action?key1=value1&key2=value2' + * Does not accept rules starting with a route name, except for '@sf_cache_partial' + * @param string $hostName The host name + * Optional - defaults to the current host name bu default + * @param string $vary The vary headers, separated by |, or "all" for all vary headers + * Defaults to 'all' + * @param string $contextualPrefix The contextual prefix for contextual partials. + * Defaults to 'currentModule/currentAction/currentPAram1/currentvalue1' + * Used only by the sfViewCacheManager::remove() method + * + * @return string The cache key + * If some of the parameters contained wildcards (* or **), the generated key will also have wildcards + */ + public function generateCacheKey($internalUri, $hostName = '', $vary = '', $contextualPrefix = '') + { + if ($callable = sfConfig::get('sf_cache_namespace_callable')) + { + if (!is_callable($callable)) + { + throw new sfException(sprintf('"%s" cannot be called as a function.', var_export($callable, true))); + } + + return call_user_func($callable, $internalUri, $hostName, $vary, $contextualPrefix, $this); + } + + if (strpos($internalUri, '@') === 0 && strpos($internalUri, '@sf_cache_partial') === false) + { + throw new sfException('A cache key cannot be generated for an internal URI using the @rule syntax'); + } + + $cacheKey = ''; + + if ($this->isContextual($internalUri)) + { + // Contextual partial + if (!$contextualPrefix) + { + list($route_name, $params) = $this->controller->convertUrlStringToParameters($this->routing->getCurrentInternalUri()); + + // if there is no module/action, it means that we have a 404 and the user is trying to cache it + if (!isset($params['module']) || !isset($params['action'])) + { + $params['module'] = sfConfig::get('sf_error_404_module'); + $params['action'] = sfConfig::get('sf_error_404_action'); + } + $cacheKey = $this->convertParametersToKey($params); + } + else + { + $cacheKey = $contextualPrefix; + } + list($route_name, $params) = $this->controller->convertUrlStringToParameters($internalUri); + $cacheKey .= sprintf('/%s/%s/%s', $params['module'], $params['action'], isset($params['sf_cache_key']) ? $params['sf_cache_key'] : ''); + } + else + { + // Regular action or non-contextual partial + list($route_name, $params) = $this->controller->convertUrlStringToParameters($internalUri); + if ($route_name == 'sf_cache_partial') + { + $cacheKey = 'sf_cache_partial/'; + } + + $cacheKey .= $this->convertParametersToKey($params); + } + + // add vary headers + if ($varyPart = $this->getCacheKeyVaryHeaderPart($internalUri, $vary)) + { + $cacheKey = '/'.$varyPart.'/'.ltrim($cacheKey, '/'); + } + + // add hostname + if ($hostNamePart = $this->getCacheKeyHostNamePart($hostName)) + { + $cacheKey = '/'.$hostNamePart.'/'.ltrim($cacheKey, '/'); + } + + // normalize to a leading slash + if (0 !== strpos($cacheKey, '/')) + { + $cacheKey = '/'.$cacheKey; + } + + // distinguish multiple slashes + while (false !== strpos($cacheKey, '//')) + { + $cacheKey = str_replace('//', '/'.substr(sha1($cacheKey), 0, 7).'/', $cacheKey); + } + + // prevent directory traversal + $cacheKey = strtr($cacheKey, array( + '/.' => '/_.', + '/_' => '/__', + '\\.' => '\\_.', + '\\_' => '\\__', + )); + + return $cacheKey; + } + + /** + * Gets the vary header part of view cache key. + * + * @param string $vary + * @return string + */ + protected function getCacheKeyVaryHeaderPart($internalUri, $vary = '') + { + if (!$this->options['cache_key_use_vary_headers']) + { + return ''; + } + + // prefix with vary headers + if (!$vary) + { + $varyHeaders = $this->getVary($internalUri); + + if (!$varyHeaders) + { + return 'all'; + } + + sort($varyHeaders); + $request = $this->context->getRequest(); + $varys = array(); + + foreach ($varyHeaders as $header) + { + $varys[] = $header . '-' . preg_replace('/\W+/', '_', $request->getHttpHeader($header)); + } + $vary = implode($varys, '-'); + } + + return $vary; + } + + /** + * Gets the hostname part of view cache key. + * + * @param string $hostName + * @return void + */ + protected function getCacheKeyHostNamePart($hostName = '') + { + if (!$this->options['cache_key_use_host_name']) + { + return ''; + } + + if (!$hostName) + { + $hostName = $this->context->getRequest()->getHost(); + } + + $hostName = preg_replace('/[^a-z0-9\*]/i', '_', $hostName); + $hostName = preg_replace('/_+/', '_', $hostName); + + return strtolower($hostName); + } + + /** + * Transforms an associative array of parameters from an URI into a unique key + * + * @param array $params Associative array of parameters from the URI (including, at least, module and action) + * + * @return string Unique key + */ + protected function convertParametersToKey($params) + { + if(!isset($params['module']) || !isset($params['action'])) + { + throw new sfException('A cache key must contain both a module and an action parameter'); + } + $module = $params['module']; + unset($params['module']); + $action = $params['action']; + unset($params['action']); + ksort($params); + $cacheKey = sprintf('%s/%s', $module, $action); + foreach ($params as $key => $value) + { + $cacheKey .= sprintf('/%s/%s', $key, $value); + } + + return $cacheKey; + } + + /** + * Adds a cache to the manager. + * + * @param string $moduleName Module name + * @param string $actionName Action name + * @param array $options Options for the cache + */ + public function addCache($moduleName, $actionName, $options = array()) + { + // normalize vary headers + if (isset($options['vary'])) + { + foreach ($options['vary'] as $key => $name) + { + $options['vary'][$key] = strtr(strtolower($name), '_', '-'); + } + } + + $options['lifeTime'] = isset($options['lifeTime']) ? $options['lifeTime'] : 0; + if (!isset($this->cacheConfig[$moduleName])) + { + $this->cacheConfig[$moduleName] = array(); + } + $this->cacheConfig[$moduleName][$actionName] = array( + 'withLayout' => isset($options['withLayout']) ? $options['withLayout'] : false, + 'lifeTime' => $options['lifeTime'], + 'clientLifeTime' => isset($options['clientLifeTime']) ? $options['clientLifeTime'] : $options['lifeTime'], + 'contextual' => isset($options['contextual']) ? $options['contextual'] : false, + 'vary' => isset($options['vary']) ? $options['vary'] : array(), + ); + } + + /** + * Registers configuration options for the cache. + * + * @param string $moduleName Module name + */ + public function registerConfiguration($moduleName) + { + if (!isset($this->loaded[$moduleName])) + { + require($this->context->getConfigCache()->checkConfig('modules/'.$moduleName.'/config/cache.yml')); + $this->loaded[$moduleName] = true; + } + } + + /** + * Retrieves the layout from the cache option list. + * + * @param string $internalUri Internal uniform resource identifier + * + * @return bool true, if have layout otherwise false + */ + public function withLayout($internalUri) + { + return $this->getCacheConfig($internalUri, 'withLayout', false); + } + + /** + * Retrieves lifetime from the cache option list. + * + * @param string $internalUri Internal uniform resource identifier + * + * @return int LifeTime + */ + public function getLifeTime($internalUri) + { + return $this->getCacheConfig($internalUri, 'lifeTime', 0); + } + + /** + * Retrieves client lifetime from the cache option list + * + * @param string $internalUri Internal uniform resource identifier + * + * @return int Client lifetime + */ + public function getClientLifeTime($internalUri) + { + return $this->getCacheConfig($internalUri, 'clientLifeTime', 0); + } + + /** + * Retrieves contextual option from the cache option list. + * + * @param string $internalUri Internal uniform resource identifier + * + * @return boolean true, if is contextual otherwise false + */ + public function isContextual($internalUri) + { + return $this->getCacheConfig($internalUri, 'contextual', false); + } + + /** + * Retrieves vary option from the cache option list. + * + * @param string $internalUri Internal uniform resource identifier + * + * @return array Vary options for the cache + */ + public function getVary($internalUri) + { + return $this->getCacheConfig($internalUri, 'vary', array()); + } + + /** + * Gets a config option from the cache. + * + * @param string $internalUri Internal uniform resource identifier + * @param string $key Option name + * @param string $defaultValue Default value of the option + * + * @return mixed Value of the option + */ + protected function getCacheConfig($internalUri, $key, $defaultValue = null) + { + list($route_name, $params) = $this->controller->convertUrlStringToParameters($internalUri); + + if (!isset($params['module'])) + { + return $defaultValue; + } + + $this->registerConfiguration($params['module']); + + $value = $defaultValue; + if (isset($this->cacheConfig[$params['module']][$params['action']][$key])) + { + $value = $this->cacheConfig[$params['module']][$params['action']][$key]; + } + else if (isset($this->cacheConfig[$params['module']]['DEFAULT'][$key])) + { + $value = $this->cacheConfig[$params['module']]['DEFAULT'][$key]; + } + + return $value; + } + + /** + * Returns true if the current content is cacheable. + * + * Possible break in backward compatibility: If the sf_lazy_cache_key + * setting is turned on in settings.yml, this method is not used when + * initially checking a partial's cacheability. + * + * @see sfPartialView, isActionCacheable() + * + * @param string $internalUri Internal uniform resource identifier + * + * @return bool true, if the content is cacheable otherwise false + */ + public function isCacheable($internalUri) + { + if ($this->request instanceof sfWebRequest && !$this->request->isMethod(sfRequest::GET)) + { + return false; + } + + list($route_name, $params) = $this->controller->convertUrlStringToParameters($internalUri); + + if (!isset($params['module'])) + { + return false; + } + + $this->registerConfiguration($params['module']); + + if (isset($this->cacheConfig[$params['module']][$params['action']])) + { + return ($this->cacheConfig[$params['module']][$params['action']]['lifeTime'] > 0); + } + else if (isset($this->cacheConfig[$params['module']]['DEFAULT'])) + { + return ($this->cacheConfig[$params['module']]['DEFAULT']['lifeTime'] > 0); + } + + return false; + } + + /** + * Returns true if the action is cacheable. + * + * @param string $moduleName A module name + * @param string $actionName An action or partial template name + * + * @return boolean True if the action is cacheable + * + * @see isCacheable() + */ + public function isActionCacheable($moduleName, $actionName) + { + if ($this->request instanceof sfWebRequest && !$this->request->isMethod(sfRequest::GET)) + { + return false; + } + + $this->registerConfiguration($moduleName); + + if (isset($this->cacheConfig[$moduleName][$actionName])) + { + return $this->cacheConfig[$moduleName][$actionName]['lifeTime'] > 0; + } + else if (isset($this->cacheConfig[$moduleName]['DEFAULT'])) + { + return $this->cacheConfig[$moduleName]['DEFAULT']['lifeTime'] > 0; + } + + return false; + } + + /** + * Retrieves content in the cache. + * + * @param string $internalUri Internal uniform resource identifier + * + * @return string The content in the cache + */ + public function get($internalUri) + { + // no cache or no cache set for this action + if (!$this->isCacheable($internalUri) || $this->ignore()) + { + return null; + } + + $retval = $this->cache->get($this->generateCacheKey($internalUri)); + + if (sfConfig::get('sf_logging_enabled')) + { + $this->dispatcher->notify(new sfEvent($this, 'application.log', array(sprintf('Cache for "%s" %s', $internalUri, $retval !== null ? 'exists' : 'does not exist')))); + } + + return $retval; + } + + /** + * Returns true if there is a cache. + * + * @param string $internalUri Internal uniform resource identifier + * + * @return bool true, if there is a cache otherwise false + */ + public function has($internalUri) + { + if (!$this->isCacheable($internalUri) || $this->ignore()) + { + return null; + } + + return $this->cache->has($this->generateCacheKey($internalUri)); + } + + /** + * Ignores the cache functionality. + * + * @return bool true, if the cache is ignore otherwise false + */ + protected function ignore() + { + // ignore cache parameter? (only available in debug mode) + if (sfConfig::get('sf_debug') && $this->context->getRequest()->getAttribute('sf_ignore_cache')) + { + if (sfConfig::get('sf_logging_enabled')) + { + $this->dispatcher->notify(new sfEvent($this, 'application.log', array('Discard cache'))); + } + + return true; + } + + return false; + } + + /** + * Sets the cache content. + * + * @param string $data Data to put in the cache + * @param string $internalUri Internal uniform resource identifier + * + * @return boolean true, if the data get set successfully otherwise false + */ + public function set($data, $internalUri) + { + if (!$this->isCacheable($internalUri)) + { + return false; + } + + try + { + $ret = $this->cache->set($this->generateCacheKey($internalUri), $data, $this->getLifeTime($internalUri)); + } + catch (Exception $e) + { + return false; + } + + if (sfConfig::get('sf_logging_enabled')) + { + $this->dispatcher->notify(new sfEvent($this, 'application.log', array(sprintf('Save cache for "%s"', $internalUri)))); + } + + return true; + } + + /** + * Removes the content in the cache. + * + * @param string $internalUri Internal uniform resource identifier + * @param string $hostName The host name + * @param string $vary The vary headers, separated by |, or "all" for all vary headers + * @param string $contextualPrefix The removal prefix for contextual partials. Defaults to '**' (all actions, all params) + * + * @return bool true, if the remove happened, false otherwise + */ + public function remove($internalUri, $hostName = '', $vary = '', $contextualPrefix = '**') + { + if (sfConfig::get('sf_logging_enabled')) + { + $this->dispatcher->notify(new sfEvent($this, 'application.log', array(sprintf('Remove cache for "%s"', $internalUri)))); + } + + $cacheKey = $this->generateCacheKey($internalUri, $hostName, $vary, $contextualPrefix); + + if(strpos($cacheKey, '*')) + { + return $this->cache->removePattern($cacheKey); + } + elseif ($this->cache->has($cacheKey)) + { + return $this->cache->remove($cacheKey); + } + } + + /** + * Retrieves the last modified time. + * + * @param string $internalUri Internal uniform resource identifier + * + * @return int The last modified datetime + */ + public function getLastModified($internalUri) + { + if (!$this->isCacheable($internalUri)) + { + return 0; + } + + return $this->cache->getLastModified($this->generateCacheKey($internalUri)); + } + + /** + * Retrieves the timeout. + * + * @param string $internalUri Internal uniform resource identifier + * + * @return int The timeout datetime + */ + public function getTimeout($internalUri) + { + if (!$this->isCacheable($internalUri)) + { + return 0; + } + + return $this->cache->getTimeout($this->generateCacheKey($internalUri)); + } + + /** + * Starts the fragment cache. + * + * @param string $name Unique fragment name + * @param string $lifeTime Life time for the cache + * @param string $clientLifeTime Client life time for the cache + * @param array $vary Vary options for the cache + * + * @return bool true, if success otherwise false + */ + public function start($name, $lifeTime, $clientLifeTime = null, $vary = array()) + { + $internalUri = $this->routing->getCurrentInternalUri(); + + if (!$clientLifeTime) + { + $clientLifeTime = $lifeTime; + } + + // add cache config to cache manager + list($route_name, $params) = $this->controller->convertUrlStringToParameters($internalUri); + $this->addCache($params['module'], $params['action'], array('withLayout' => false, 'lifeTime' => $lifeTime, 'clientLifeTime' => $clientLifeTime, 'vary' => $vary)); + + // get data from cache if available + $data = $this->get($internalUri.(strpos($internalUri, '?') ? '&' : '?').'_sf_cache_key='.$name); + if ($data !== null) + { + return $data; + } + else + { + ob_start(); + ob_implicit_flush(0); + + return null; + } + } + + /** + * Stops the fragment cache. + * + * @param string $name Unique fragment name + * + * @return bool true, if success otherwise false + */ + public function stop($name) + { + $data = ob_get_clean(); + + // save content to cache + $internalUri = $this->routing->getCurrentInternalUri(); + try + { + $this->set($data, $internalUri.(strpos($internalUri, '?') ? '&' : '?').'_sf_cache_key='.$name); + } + catch (Exception $e) + { + } + + return $data; + } + + /** + * Computes the cache key based on the passed parameters. + * + * @param array $parameters An array of parameters + */ + public function computeCacheKey(array $parameters) + { + if (isset($parameters['sf_cache_key'])) + { + return $parameters['sf_cache_key']; + } + + if (sfConfig::get('sf_logging_enabled')) + { + $this->dispatcher->notify(new sfEvent($this, 'application.log', array('Generate cache key'))); + } + ksort($parameters); + + return md5(serialize($parameters)); + } + + /** + * Checks that the supplied parameters include a cache key. + * + * If no 'sf_cache_key' parameter is present one is added to the array as + * it is passed by reference. + * + * @param array $parameters An array of parameters + * + * @return string The cache key + */ + public function checkCacheKey(array & $parameters) + { + $parameters['sf_cache_key'] = $this->computeCacheKey($parameters); + + return $parameters['sf_cache_key']; + } + + /** + * Computes a partial internal URI. + * + * @param string $module The module name + * @param string $action The action name + * @param string $cacheKey The cache key + * + * @return string The internal URI + */ + public function getPartialUri($module, $action, $cacheKey) + { + return sprintf('@sf_cache_partial?module=%s&action=%s&sf_cache_key=%s', $module, $action, $cacheKey); + } + + /** + * Returns whether a partial template is in the cache. + * + * @param string $module The module name + * @param string $action The action name + * @param string $cacheKey The cache key + * + * @return bool true if a partial is in the cache, false otherwise + */ + public function hasPartialCache($module, $action, $cacheKey) + { + return $this->has($this->getPartialUri($module, $action, $cacheKey)); + } + + /** + * Gets a partial template from the cache. + * + * @param string $module The module name + * @param string $action The action name + * @param string $cacheKey The cache key + * + * @return string The cache content + */ + public function getPartialCache($module, $action, $cacheKey) + { + $uri = $this->getPartialUri($module, $action, $cacheKey); + + if (!$this->isCacheable($uri)) + { + return null; + } + + // retrieve content from cache + $cache = $this->get($uri); + + if (null === $cache) + { + return null; + } + + $cache = unserialize($cache); + $content = $cache['content']; + $this->context->getResponse()->merge($cache['response']); + + if (sfConfig::get('sf_web_debug')) + { + $content = $this->dispatcher->filter(new sfEvent($this, 'view.cache.filter_content', array('response' => $this->context->getResponse(), 'uri' => $uri, 'new' => false)), $content)->getReturnValue(); + } + + return $content; + } + + /** + * Sets an action template in the cache. + * + * @param string $module The module name + * @param string $action The action name + * @param string $cacheKey The cache key + * @param string $content The content to cache + * + * @return string The cached content + */ + public function setPartialCache($module, $action, $cacheKey, $content) + { + $uri = $this->getPartialUri($module, $action, $cacheKey); + if (!$this->isCacheable($uri)) + { + return $content; + } + + $saved = $this->set(serialize(array('content' => $content, 'response' => $this->context->getResponse())), $uri); + + if ($saved && sfConfig::get('sf_web_debug')) + { + $content = $this->dispatcher->filter(new sfEvent($this, 'view.cache.filter_content', array('response' => $this->context->getResponse(), 'uri' => $uri, 'new' => true)), $content)->getReturnValue(); + } + + return $content; + } + + /** + * Returns whether an action template is in the cache. + * + * @param string $uri The internal URI + * + * @return bool true if an action is in the cache, false otherwise + */ + public function hasActionCache($uri) + { + return $this->has($uri) && !$this->withLayout($uri); + } + + /** + * Gets an action template from the cache. + * + * @param string $uri The internal URI + * + * @return array An array composed of the cached content and the view attribute holder + */ + public function getActionCache($uri) + { + if (!$this->isCacheable($uri) || $this->withLayout($uri)) + { + return null; + } + + // retrieve content from cache + $cache = $this->get($uri); + + if (null === $cache) + { + return null; + } + + $cache = unserialize($cache); + $content = $cache['content']; + $cache['response']->setEventDispatcher($this->dispatcher); + $this->context->getResponse()->copyProperties($cache['response']); + + if (sfConfig::get('sf_web_debug')) + { + $content = $this->dispatcher->filter(new sfEvent($this, 'view.cache.filter_content', array('response' => $this->context->getResponse(), 'uri' => $uri, 'new' => false)), $content)->getReturnValue(); + } + + return array($content, $cache['decoratorTemplate']); + } + + /** + * Sets an action template in the cache. + * + * @param string $uri The internal URI + * @param string $content The content to cache + * @param string $decoratorTemplate The view attribute holder to cache + * + * @return string The cached content + */ + public function setActionCache($uri, $content, $decoratorTemplate) + { + if (!$this->isCacheable($uri) || $this->withLayout($uri)) + { + return $content; + } + + $saved = $this->set(serialize(array('content' => $content, 'decoratorTemplate' => $decoratorTemplate, 'response' => $this->context->getResponse())), $uri); + + if ($saved && sfConfig::get('sf_web_debug')) + { + $content = $this->dispatcher->filter(new sfEvent($this, 'view.cache.filter_content', array('response' => $this->context->getResponse(), 'uri' => $uri, 'new' => true)), $content)->getReturnValue(); + } + + return $content; + } + + /** + * Sets a page in the cache. + * + * @param string $uri The internal URI + */ + public function setPageCache($uri) + { + if (sfView::RENDER_CLIENT != $this->controller->getRenderMode()) + { + return; + } + + // save content in cache + $saved = $this->set(serialize($this->context->getResponse()), $uri); + + if ($saved && sfConfig::get('sf_web_debug')) + { + $content = $this->dispatcher->filter(new sfEvent($this, 'view.cache.filter_content', array('response' => $this->context->getResponse(), 'uri' => $uri, 'new' => true)), $this->context->getResponse()->getContent())->getReturnValue(); + + $this->context->getResponse()->setContent($content); + } + } + + /** + * Gets a page from the cache. + * + * @param string $uri The internal URI + * + * @return string The cached page + */ + public function getPageCache($uri) + { + $retval = $this->get($uri); + + if (null === $retval) + { + return false; + } + + $cachedResponse = unserialize($retval); + $cachedResponse->setEventDispatcher($this->dispatcher); + + if (sfView::RENDER_VAR == $this->controller->getRenderMode()) + { + $this->controller->getActionStack()->getLastEntry()->setPresentation($cachedResponse->getContent()); + $this->context->getResponse()->setContent(''); + } + else + { + $this->context->setResponse($cachedResponse); + + if (sfConfig::get('sf_web_debug')) + { + $content = $this->dispatcher->filter(new sfEvent($this, 'view.cache.filter_content', array('response' => $this->context->getResponse(), 'uri' => $uri, 'new' => false)), $this->context->getResponse()->getContent())->getReturnValue(); + + $this->context->getResponse()->setContent($content); + } + } + + return true; + } + + /** + * Returns the current request's cache key. + * + * This cache key is calculated based on the routing factory's current URI + * and any GET parameters from the current request factory. + * + * @return string The cache key for the current request + */ + public function getCurrentCacheKey() + { + $cacheKey = $this->routing->getCurrentInternalUri(); + + if ($getParameters = $this->request->getGetParameters()) + { + $cacheKey .= false === strpos($cacheKey, '?') ? '?' : '&'; + $cacheKey .= http_build_query($getParameters, null, '&'); + } + + return $cacheKey; + } + + /** + * Listens to the 'view.cache.filter_content' event to decorate a chunk of HTML with cache information. + * + * @param sfEvent $event A sfEvent instance + * @param string $content The HTML content + * + * @return string The decorated HTML string + */ + public function decorateContentWithDebug(sfEvent $event, $content) + { + // don't decorate if not html or if content is null + if (!$content || false === strpos($event['response']->getContentType(), 'html')) + { + return $content; + } + + $this->context->getConfiguration()->loadHelpers(array('Helper', 'Url', 'Asset', 'Tag')); + + $sf_cache_key = $this->generateCacheKey($event['uri']); + $bgColor = $event['new'] ? '#9ff' : '#ff9'; + $lastModified = $this->cache->getLastModified($sf_cache_key); + $cacheKey = $this->cache->getOption('prefix').$sf_cache_key; + $id = md5($event['uri']); + + return ' +
    +
    + + +
    + '.$content.' +
    + '; + } +} diff --git a/lib/vendor/symfony/lib/view/sfViewParameterHolder.class.php b/lib/vendor/symfony/lib/view/sfViewParameterHolder.class.php new file mode 100644 index 0000000..31096e1 --- /dev/null +++ b/lib/vendor/symfony/lib/view/sfViewParameterHolder.class.php @@ -0,0 +1,189 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfViewParameterHolder stores all variables that will be available to the template. + * + * It can also escape variables with an escaping method. + * + * @package symfony + * @subpackage view + * @author Fabien Potencier + * @version SVN: $Id: sfViewParameterHolder.class.php 21884 2009-09-11 07:38:24Z fabien $ + */ +class sfViewParameterHolder extends sfParameterHolder +{ + protected + $dispatcher = null, + $escaping = null, + $escapingMethod = null; + + /** + * Constructor. + */ + public function __construct(sfEventDispatcher $dispatcher, $parameters = array(), $options = array()) + { + $this->initialize($dispatcher, $parameters, $options); + } + + /** + * Initializes this view parameter holder. + * + * @param sfEventDispatcher $dispatcher An sfEventDispatcher instance. + * @param array $parameters An associative array of initialization parameters. + * @param array $options An associative array of options. + * + * Options: + * + * # escaping_strategy - [off] - The escaping strategy (on or off) + * # escaping_method - [ESC_SPECIALCHARS] - The escaping method (ESC_RAW, ESC_ENTITIES, ESC_JS, ESC_JS_NO_ENTITIES, or ESC_SPECIALCHARS) + * + * @return bool true, if initialization completes successfully, otherwise false. + * + * @throws sfInitializationException If an error occurs while initializing this view parameter holder. + */ + public function initialize(sfEventDispatcher $dispatcher, $parameters = array(), $options = array()) + { + $this->dispatcher = $dispatcher; + + $this->add($parameters); + + $this->setEscaping(isset($options['escaping_strategy']) ? $options['escaping_strategy'] : false); + $this->setEscapingMethod(isset($options['escaping_method']) ? $options['escaping_method'] : 'ESC_SPECIALCHARS'); + } + + /** + * Returns true if the current object acts as an escaper. + * + * @return bool true if the current object acts as an escaper, false otherwise + */ + public function isEscaped() + { + return in_array($this->getEscaping(), array('on', 'true', true), true); + } + + /** + * Returns an array representation of the view parameters. + * + * @return array An array of view parameters + * + * @throws InvalidArgumentException + */ + public function toArray() + { + $event = $this->dispatcher->filter(new sfEvent($this, 'template.filter_parameters'), $this->getAll()); + $parameters = $event->getReturnValue(); + $attributes = array(); + + if ($this->isEscaped()) + { + $attributes['sf_data'] = sfOutputEscaper::escape($this->getEscapingMethod(), $parameters); + foreach ($attributes['sf_data'] as $key => $value) + { + $attributes[$key] = $value; + } + } + else if (in_array($this->getEscaping(), array('off', false), true)) + { + $attributes = $parameters; + $attributes['sf_data'] = sfOutputEscaper::escape(ESC_RAW, $parameters); + } + else + { + throw new InvalidArgumentException(sprintf('Unknown strategy "%s".', $this->getEscaping())); + } + + return $attributes; + } + + /** + * Gets the default escaping strategy associated with this view. + * + * The escaping strategy specifies how the variables get passed to the view. + * + * @return string the escaping strategy + */ + public function getEscaping() + { + return $this->escaping; + } + + /** + * Sets the escape character strategy. + * + * @param string $escaping Escape code + */ + public function setEscaping($escaping) + { + $this->escaping = $escaping; + } + + /** + * Returns the name of the function that is to be used as the escaping method. + * + * If the escaping method is empty, then that is returned. The default value + * specified by the sub-class will be used. If the method does not exist (in + * the sense there is no define associated with the method), an exception is + * thrown. + * + * @return string The escaping method as the name of the function to use + * + * @throws InvalidArgumentException If the method does not exist + */ + public function getEscapingMethod() + { + if (empty($this->escapingMethod)) + { + return $this->escapingMethod; + } + + if (!defined($this->escapingMethod)) + { + throw new InvalidArgumentException(sprintf('The escaping method "%s" is not available.', $this->escapingMethod)); + } + + return constant($this->escapingMethod); + } + + /** + * Sets the escaping method for the current view. + * + * @param string $method Method for escaping + */ + public function setEscapingMethod($method) + { + $this->escapingMethod = $method; + } + + /** + * Serializes the current instance. + * + * @return array Objects instance + */ + public function serialize() + { + return serialize(array($this->getAll(), $this->escapingMethod, $this->escaping)); + } + + /** + * Unserializes a sfViewParameterHolder instance. + * + * @param string $serialized The serialized instance data + */ + public function unserialize($serialized) + { + list($this->parameters, $escapingMethod, $escaping) = unserialize($serialized); + + $this->initialize(sfContext::hasInstance() ? sfContext::getInstance()->getEventDispatcher() : new sfEventDispatcher()); + + $this->setEscapingMethod($escapingMethod); + $this->setEscaping($escaping); + } +} diff --git a/lib/vendor/symfony/lib/widget/.svn/all-wcprops b/lib/vendor/symfony/lib/widget/.svn/all-wcprops new file mode 100644 index 0000000..6a308a4 --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/all-wcprops @@ -0,0 +1,173 @@ +K 25 +svn:wc:ra_dav:version-url +V 39 +/!svn/ver/33388/branches/1.4/lib/widget +END +sfWidgetFormInputText.class.php +K 25 +svn:wc:ra_dav:version-url +V 71 +/!svn/ver/30762/branches/1.4/lib/widget/sfWidgetFormInputText.class.php +END +sfWidgetFormSelectMany.class.php +K 25 +svn:wc:ra_dav:version-url +V 72 +/!svn/ver/30762/branches/1.4/lib/widget/sfWidgetFormSelectMany.class.php +END +sfWidgetFormFilterInput.class.php +K 25 +svn:wc:ra_dav:version-url +V 73 +/!svn/ver/30762/branches/1.4/lib/widget/sfWidgetFormFilterInput.class.php +END +sfWidgetFormInputCheckbox.class.php +K 25 +svn:wc:ra_dav:version-url +V 75 +/!svn/ver/30762/branches/1.4/lib/widget/sfWidgetFormInputCheckbox.class.php +END +sfWidgetFormInputHidden.class.php +K 25 +svn:wc:ra_dav:version-url +V 73 +/!svn/ver/30762/branches/1.4/lib/widget/sfWidgetFormInputHidden.class.php +END +sfWidgetFormDate.class.php +K 25 +svn:wc:ra_dav:version-url +V 66 +/!svn/ver/30762/branches/1.4/lib/widget/sfWidgetFormDate.class.php +END +sfWidgetFormTextarea.class.php +K 25 +svn:wc:ra_dav:version-url +V 70 +/!svn/ver/30762/branches/1.4/lib/widget/sfWidgetFormTextarea.class.php +END +sfWidgetForm.class.php +K 25 +svn:wc:ra_dav:version-url +V 62 +/!svn/ver/33388/branches/1.4/lib/widget/sfWidgetForm.class.php +END +sfWidgetFormSelect.class.php +K 25 +svn:wc:ra_dav:version-url +V 68 +/!svn/ver/30762/branches/1.4/lib/widget/sfWidgetFormSelect.class.php +END +sfWidgetFormSchemaFormatterList.class.php +K 25 +svn:wc:ra_dav:version-url +V 81 +/!svn/ver/23881/branches/1.4/lib/widget/sfWidgetFormSchemaFormatterList.class.php +END +sfWidgetFormInputPassword.class.php +K 25 +svn:wc:ra_dav:version-url +V 75 +/!svn/ver/30762/branches/1.4/lib/widget/sfWidgetFormInputPassword.class.php +END +sfWidgetFormFilterDate.class.php +K 25 +svn:wc:ra_dav:version-url +V 72 +/!svn/ver/30762/branches/1.4/lib/widget/sfWidgetFormFilterDate.class.php +END +sfWidgetFormSchemaFormatter.class.php +K 25 +svn:wc:ra_dav:version-url +V 77 +/!svn/ver/23881/branches/1.4/lib/widget/sfWidgetFormSchemaFormatter.class.php +END +sfWidgetFormChoiceBase.class.php +K 25 +svn:wc:ra_dav:version-url +V 72 +/!svn/ver/29309/branches/1.4/lib/widget/sfWidgetFormChoiceBase.class.php +END +sfWidgetFormSelectCheckbox.class.php +K 25 +svn:wc:ra_dav:version-url +V 76 +/!svn/ver/33362/branches/1.4/lib/widget/sfWidgetFormSelectCheckbox.class.php +END +sfWidgetFormSchemaForEach.class.php +K 25 +svn:wc:ra_dav:version-url +V 75 +/!svn/ver/23881/branches/1.4/lib/widget/sfWidgetFormSchemaForEach.class.php +END +sfWidgetFormInputFileEditable.class.php +K 25 +svn:wc:ra_dav:version-url +V 79 +/!svn/ver/30762/branches/1.4/lib/widget/sfWidgetFormInputFileEditable.class.php +END +sfWidgetFormDateRange.class.php +K 25 +svn:wc:ra_dav:version-url +V 71 +/!svn/ver/33053/branches/1.4/lib/widget/sfWidgetFormDateRange.class.php +END +sfWidgetFormChoice.class.php +K 25 +svn:wc:ra_dav:version-url +V 68 +/!svn/ver/32835/branches/1.4/lib/widget/sfWidgetFormChoice.class.php +END +sfWidget.class.php +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/33388/branches/1.4/lib/widget/sfWidget.class.php +END +sfWidgetFormDateTime.class.php +K 25 +svn:wc:ra_dav:version-url +V 70 +/!svn/ver/30762/branches/1.4/lib/widget/sfWidgetFormDateTime.class.php +END +sfWidgetFormSchemaFormatterTable.class.php +K 25 +svn:wc:ra_dav:version-url +V 82 +/!svn/ver/23881/branches/1.4/lib/widget/sfWidgetFormSchemaFormatterTable.class.php +END +sfWidgetFormSelectRadio.class.php +K 25 +svn:wc:ra_dav:version-url +V 73 +/!svn/ver/30762/branches/1.4/lib/widget/sfWidgetFormSelectRadio.class.php +END +sfWidgetFormTime.class.php +K 25 +svn:wc:ra_dav:version-url +V 66 +/!svn/ver/30762/branches/1.4/lib/widget/sfWidgetFormTime.class.php +END +sfWidgetFormInputFile.class.php +K 25 +svn:wc:ra_dav:version-url +V 71 +/!svn/ver/30762/branches/1.4/lib/widget/sfWidgetFormInputFile.class.php +END +sfWidgetFormInput.class.php +K 25 +svn:wc:ra_dav:version-url +V 67 +/!svn/ver/30762/branches/1.4/lib/widget/sfWidgetFormInput.class.php +END +sfWidgetFormSchema.class.php +K 25 +svn:wc:ra_dav:version-url +V 68 +/!svn/ver/26870/branches/1.4/lib/widget/sfWidgetFormSchema.class.php +END +sfWidgetFormSchemaDecorator.class.php +K 25 +svn:wc:ra_dav:version-url +V 77 +/!svn/ver/30762/branches/1.4/lib/widget/sfWidgetFormSchemaDecorator.class.php +END diff --git a/lib/vendor/symfony/lib/widget/.svn/entries b/lib/vendor/symfony/lib/widget/.svn/entries new file mode 100644 index 0000000..4c80134 --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/entries @@ -0,0 +1,983 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/widget +http://svn.symfony-project.com + + + +2012-03-15T15:01:41.043900Z +33388 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +sfWidgetFormInputText.class.php +file + + + + +2012-05-10T18:41:01.705553Z +8735df24227032673440f39054d434c5 +2010-08-25T12:33:33.652175Z +30762 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +954 + +sfWidgetFormSelectMany.class.php +file + + + + +2012-05-10T18:41:01.705553Z +878d9878dcaf03f26b52bd4c727f499f +2010-08-25T12:33:33.652175Z +30762 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +1002 + +i18n +dir + +sfWidgetFormFilterInput.class.php +file + + + + +2012-05-10T18:41:01.709550Z +cd42c558dd7fcc29c5a2198e9e7ba924 +2010-08-25T12:33:33.652175Z +30762 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +2644 + +sfWidgetFormInputCheckbox.class.php +file + + + + +2012-05-10T18:41:01.777548Z +20dc55d5a5c971715dce5cd04d5b0bea +2010-08-25T12:33:33.652175Z +30762 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +2395 + +sfWidgetFormInputHidden.class.php +file + + + + +2012-05-10T18:41:01.777548Z +6ae759e1116330bc465af461bf6aaea1 +2010-08-25T12:33:33.652175Z +30762 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +1013 + +sfWidgetFormDate.class.php +file + + + + +2012-05-10T18:41:01.777548Z +829e789729c4568bd5f9238e9a29f3d4 +2010-08-25T12:33:33.652175Z +30762 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +5067 + +sfWidgetFormTextarea.class.php +file + + + + +2012-05-10T18:41:01.777548Z +fc4f9f0c4121dadbb1e35701dd3e9b5a +2010-08-25T12:33:33.652175Z +30762 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +1562 + +sfWidgetForm.class.php +file + + + + +2012-05-10T18:41:01.785549Z +82948eda766e83c0289396673ab24185 +2012-03-15T15:01:41.043900Z +33388 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +9130 + +sfWidgetFormSelect.class.php +file + + + + +2012-05-10T18:41:01.785549Z +96555ba8eceb8e2edfcb16f9449364d9 +2010-08-25T12:33:33.652175Z +30762 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +3164 + +sfWidgetFormSchemaFormatterList.class.php +file + + + + +2012-05-10T18:41:01.785549Z +611d1e1df62aa0103527765fb934d205 +2007-11-13T15:50:03.424978Z +5995 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +803 + +sfWidgetFormInputPassword.class.php +file + + + + +2012-05-10T18:41:01.785549Z +b2e11cc0f771eebba8240663b28ca836 +2010-08-25T12:33:33.652175Z +30762 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +1830 + +sfWidgetFormFilterDate.class.php +file + + + + +2012-05-10T18:41:01.785549Z +8d41fdc11512f15b3e085eb49fd53626 +2010-08-25T12:33:33.652175Z +30762 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +2815 + +sfWidgetFormSchemaFormatter.class.php +file + + + + +2012-05-10T18:41:01.793549Z +697ca59cde37c17c4d49d5a3c72abfec +2009-09-11T12:06:21.565437Z +21908 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +8437 + +sfWidgetFormChoiceBase.class.php +file + + + + +2012-05-10T18:41:01.793549Z +91f7983273bd0b51977c10fbcbf3128f +2010-04-29T07:41:57.056468Z +29309 +bschussek + + + + + + + + + + + + + + + + + + + + + +2048 + +sfWidgetFormSelectCheckbox.class.php +file + + + + +2012-05-10T18:41:01.793549Z +b54485a97b6ac86dcbae301912800d13 +2012-03-08T13:53:08.213256Z +33362 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +4165 + +sfWidgetFormSchemaForEach.class.php +file + + + + +2012-05-10T18:41:01.793549Z +900083806c4b4c0b604aef3d4cd90222 +2008-05-19T08:13:51.050591Z +9046 +FabianLange +has-props + + + + + + + + + + + + + + + + + + + + +1304 + +sfWidgetFormInputFileEditable.class.php +file + + + + +2012-05-10T18:41:01.801548Z +1853d68d410a5e9212819751b5e9cb25 +2010-08-25T12:33:33.652175Z +30762 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +4049 + +sfWidgetFormDateRange.class.php +file + + + + +2012-05-10T18:41:01.801548Z +942e28e633294518800333d969ad5ac4 +2011-09-20T15:31:20.091363Z +33053 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +2760 + +sfWidgetFormChoice.class.php +file + + + + +2012-05-10T18:41:01.801548Z +8f56b5cb5f06b23a85e686f3f7651d11 +2011-07-27T07:07:00.079307Z +32835 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +4626 + +sfWidget.class.php +file + + + + +2012-05-10T18:41:01.801548Z +c0c3e26b75399ed69680b873048e8c6e +2012-03-15T15:01:41.043900Z +33388 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +10319 + +sfWidgetFormDateTime.class.php +file + + + + +2012-05-10T18:41:01.805551Z +72c8469de31e40ab3204e9561147a868 +2010-08-25T12:33:33.652175Z +30762 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +4181 + +sfWidgetFormSchemaFormatterTable.class.php +file + + + + +2012-05-10T18:41:01.805551Z +649177549542bd39733ae4e3a4778366 +2007-11-13T15:50:03.424978Z +5995 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +852 + +sfWidgetFormSelectRadio.class.php +file + + + + +2012-05-10T18:41:01.809552Z +a1e750978fc46c1dc25a26b0c06527ca +2010-08-25T12:33:33.652175Z +30762 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +4028 + +sfWidgetFormTime.class.php +file + + + + +2012-05-10T18:41:01.813549Z +e065f82391a3604ddfa8037327969751 +2010-08-25T12:33:33.652175Z +30762 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +4585 + +sfWidgetFormInputFile.class.php +file + + + + +2012-05-10T18:41:01.813549Z +b57ead23c114da3bf17d83122998d2b0 +2010-08-25T12:33:33.652175Z +30762 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +1012 + +sfWidgetFormInput.class.php +file + + + + +2012-05-10T18:41:01.825547Z +9596069c54cf8822ece20f19fbb19c3b +2010-08-25T12:33:33.652175Z +30762 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +1659 + +sfWidgetFormSchema.class.php +file + + + + +2012-05-10T18:41:01.825547Z +4e97fa4456c008a94dae89feae0c79a0 +2010-01-19T10:34:52.388422Z +26870 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +22962 + +sfWidgetFormSchemaDecorator.class.php +file + + + + +2012-05-10T18:41:01.837549Z +46f872a08970af2d74db4190666428f9 +2010-08-25T12:33:33.652175Z +30762 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +6820 + diff --git a/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidget.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidget.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidget.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetForm.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetForm.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetForm.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormChoice.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormChoice.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormChoice.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormDate.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormDate.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormDate.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormDateRange.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormDateRange.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormDateRange.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormDateTime.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormDateTime.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormDateTime.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormFilterDate.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormFilterDate.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormFilterDate.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormFilterInput.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormFilterInput.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormFilterInput.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormInput.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormInput.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormInput.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormInputCheckbox.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormInputCheckbox.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormInputCheckbox.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormInputFile.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormInputFile.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormInputFile.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormInputFileEditable.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormInputFileEditable.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormInputFileEditable.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormInputHidden.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormInputHidden.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormInputHidden.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormInputPassword.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormInputPassword.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormInputPassword.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormInputText.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormInputText.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormInputText.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormSchema.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormSchema.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormSchema.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormSchemaDecorator.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormSchemaDecorator.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormSchemaDecorator.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormSchemaForEach.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormSchemaForEach.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormSchemaForEach.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormSchemaFormatter.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormSchemaFormatter.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormSchemaFormatter.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormSchemaFormatterList.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormSchemaFormatterList.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormSchemaFormatterList.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormSchemaFormatterTable.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormSchemaFormatterTable.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormSchemaFormatterTable.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormSelect.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormSelect.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormSelect.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormSelectCheckbox.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormSelectCheckbox.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormSelectCheckbox.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormSelectMany.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormSelectMany.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormSelectMany.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormSelectRadio.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormSelectRadio.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormSelectRadio.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormTextarea.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormTextarea.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormTextarea.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormTime.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormTime.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/prop-base/sfWidgetFormTime.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidget.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidget.class.php.svn-base new file mode 100644 index 0000000..d8ac6e4 --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidget.class.php.svn-base @@ -0,0 +1,406 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidget is the base class for all widgets. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id$ + */ +abstract class sfWidget +{ + protected + $requiredOptions = array(), + $attributes = array(), + $options = array(); + + protected static + $xhtml = true, + $charset = 'UTF-8'; + + /** + * Constructor. + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @throws InvalidArgumentException when a option is not supported + * @throws RuntimeException when a required option is not given + */ + public function __construct($options = array(), $attributes = array()) + { + $this->configure($options, $attributes); + + $currentOptionKeys = array_keys($this->options); + $optionKeys = array_keys($options); + + // check option names + if ($diff = array_diff($optionKeys, array_merge($currentOptionKeys, $this->requiredOptions))) + { + throw new InvalidArgumentException(sprintf('%s does not support the following options: \'%s\'.', get_class($this), implode('\', \'', $diff))); + } + + // check required options + if ($diff = array_diff($this->requiredOptions, array_merge($currentOptionKeys, $optionKeys))) + { + throw new RuntimeException(sprintf('%s requires the following options: \'%s\'.', get_class($this), implode('\', \'', $diff))); + } + + $this->options = array_merge($this->options, $options); + $this->attributes = array_merge($this->attributes, $attributes); + } + + /** + * Configures the current widget. + * + * This method allows each widget to add options or HTML attributes + * during widget creation. + * + * If some options and HTML attributes are given in the sfWidget constructor + * they will take precedence over the options and HTML attributes you configure + * in this method. + * + * @param array $options An array of options + * @param array $attributes An array of HTML attributes + * + * @see __construct() + */ + protected function configure($options = array(), $attributes = array()) + { + } + + /** + * Renders the widget as HTML. + * + * All subclasses must implement this method. + * + * @param string $name The name of the HTML widget + * @param mixed $value The value of the widget + * @param array $attributes An array of HTML attributes + * @param array $errors An array of errors + * + * @return string A HTML representation of the widget + */ + abstract public function render($name, $value = null, $attributes = array(), $errors = array()); + + /** + * Adds a required option. + * + * @param string $name The option name + * + * @return sfWidget The current widget instance + */ + public function addRequiredOption($name) + { + $this->requiredOptions[] = $name; + + return $this; + } + + /** + * Returns all required option names. + * + * @return array An array of required option names + */ + public function getRequiredOptions() + { + return $this->requiredOptions; + } + + /** + * Adds a new option value with a default value. + * + * @param string $name The option name + * @param mixed $value The default value + * + * @return sfWidget The current widget instance + */ + public function addOption($name, $value = null) + { + $this->options[$name] = $value; + + return $this; + } + + /** + * Changes an option value. + * + * @param string $name The option name + * @param mixed $value The value + * + * @return sfWidget The current widget instance + * + * @throws InvalidArgumentException when a option is not supported + */ + public function setOption($name, $value) + { + if (!in_array($name, array_merge(array_keys($this->options), $this->requiredOptions))) + { + throw new InvalidArgumentException(sprintf('%s does not support the following option: \'%s\'.', get_class($this), $name)); + } + + $this->options[$name] = $value; + + return $this; + } + + /** + * Gets an option value. + * + * @param string $name The option name + * + * @return mixed The option value + */ + public function getOption($name) + { + return isset($this->options[$name]) ? $this->options[$name] : null; + } + + /** + * Returns true if the option exists. + * + * @param string $name The option name + * + * @return bool true if the option exists, false otherwise + */ + public function hasOption($name) + { + return array_key_exists($name, $this->options); + } + + /** + * Gets all options. + * + * @return array An array of named options + */ + public function getOptions() + { + return $this->options; + } + + /** + * Sets the options. + * + * @param array $options An array of options + * + * @return sfWidget The current widget instance + */ + public function setOptions($options) + { + $this->options = $options; + + return $this; + } + + /** + * Returns the default HTML attributes. + * + * @param array An array of HTML attributes + */ + public function getAttributes() + { + return $this->attributes; + } + + /** + * Sets a default HTML attribute. + * + * @param string $name The attribute name + * @param string $value The attribute value + * + * @return sfWidget The current widget instance + */ + public function setAttribute($name, $value) + { + $this->attributes[$name] = $value; + + return $this; + } + + /** + * Returns the HTML attribute value for a given attribute name. + * + * @param string $name The attribute name. + * + * @return string The attribute value, or null if the attribute does not exist + */ + public function getAttribute($name) + { + return isset($this->attributes[$name]) ? $this->attributes[$name] : null; + } + + /** + * Sets the HTML attributes. + * + * @param array $attributes An array of HTML attributes + * + * @return sfWidget The current widget instance + */ + public function setAttributes($attributes) + { + $this->attributes = $attributes; + + return $this; + } + + /** + * Gets the stylesheet paths associated with the widget. + * + * The array keys are files and values are the media names (separated by a ,): + * + * array('/path/to/file.css' => 'all', '/another/file.css' => 'screen,print') + * + * @return array An array of stylesheet paths + */ + public function getStylesheets() + { + return array(); + } + + /** + * Gets the JavaScript paths associated with the widget. + * + * @return array An array of JavaScript paths + */ + public function getJavaScripts() + { + return array(); + } + + /** + * Sets the charset to use when rendering widgets. + * + * @param string $charset The charset + */ + static public function setCharset($charset) + { + self::$charset = $charset; + } + + /** + * Returns the charset to use when rendering widgets. + * + * @return string The charset (defaults to UTF-8) + */ + static public function getCharset() + { + return self::$charset; + } + + /** + * Sets the XHTML generation flag. + * + * @param bool $boolean true if widgets must be generated as XHTML, false otherwise + */ + static public function setXhtml($boolean) + { + self::$xhtml = (boolean) $boolean; + } + + /** + * Returns whether to generate XHTML tags or not. + * + * @return bool true if widgets must be generated as XHTML, false otherwise + */ + static public function isXhtml() + { + return self::$xhtml; + } + + /** + * Renders a HTML tag. + * + * @param string $tag The tag name + * @param array $attributes An array of HTML attributes to be merged with the default HTML attributes + * + * @param string An HTML tag string + */ + public function renderTag($tag, $attributes = array()) + { + if (empty($tag)) + { + return ''; + } + + return sprintf('<%s%s%s', $tag, $this->attributesToHtml($attributes), self::$xhtml ? ' />' : (strtolower($tag) == 'input' ? '>' : sprintf('>', $tag))); + } + + /** + * Renders a HTML content tag. + * + * @param string $tag The tag name + * @param string $content The content of the tag + * @param array $attributes An array of HTML attributes to be merged with the default HTML attributes + * + * @param string An HTML tag string + */ + public function renderContentTag($tag, $content = null, $attributes = array()) + { + if (empty($tag)) + { + return ''; + } + + return sprintf('<%s%s>%s', $tag, $this->attributesToHtml($attributes), $content, $tag); + } + + /** + * Escapes a string. + * + * @param string $value string to escape + * @return string escaped string + */ + static public function escapeOnce($value) + { + return self::fixDoubleEscape(htmlspecialchars((string) $value, ENT_QUOTES, self::getCharset())); + } + + /** + * Fixes double escaped strings. + * + * @param string $escaped string to fix + * @return string single escaped string + */ + static public function fixDoubleEscape($escaped) + { + return preg_replace('/&([a-z]+|(#\d+)|(#x[\da-f]+));/i', '&$1;', $escaped); + } + + /** + * Converts an array of attributes to its HTML representation. + * + * @param array $attributes An array of attributes + * + * @return string The HTML representation of the HTML attribute array. + */ + public function attributesToHtml($attributes) + { + $attributes = array_merge($this->attributes, $attributes); + + return implode('', array_map(array($this, 'attributesToHtmlCallback'), array_keys($attributes), array_values($attributes))); + } + + /** + * Prepares an attribute key and value for HTML representation. + * + * It removes empty attributes, except for the value one. + * + * @param string $k The attribute key + * @param string $v The attribute value + * + * @return string The HTML representation of the HTML key attribute pair. + */ + protected function attributesToHtmlCallback($k, $v) + { + return false === $v || null === $v || ('' === $v && 'value' != $k) ? '' : sprintf(' %s="%s"', $k, $this->escapeOnce($v)); + } +} diff --git a/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetForm.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetForm.class.php.svn-base new file mode 100644 index 0000000..65ca76d --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetForm.class.php.svn-base @@ -0,0 +1,354 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetForm is the base class for all form widgets. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id$ + */ +abstract class sfWidgetForm extends sfWidget +{ + protected + $parent = null; + + /** + * Constructor. + * + * Available options: + * + * * id_format: The format for the generated HTML id attributes (%s by default) + * * is_hidden: true if the form widget must be hidden, false otherwise (false by default) + * * needs_multipart: true if the form widget needs a multipart form, false otherwise (false by default) + * * default: The default value to use when rendering the widget + * * label: The label to use when the widget is rendered by a widget schema + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidget + */ + public function __construct($options = array(), $attributes = array()) + { + $this->addOption('id_format', '%s'); + $this->addOption('is_hidden', false); + $this->addOption('needs_multipart', false); + $this->addOption('default', null); + $this->addOption('label', null); + + parent::__construct($options, $attributes); + } + + /** + * Sets the default value for the widget. + * + * @param string $value The default value + * + * @return sfWidget The current widget instance + */ + public function setDefault($value) + { + $this->setOption('default', $value); + + return $this; + } + + /** + * Returns the default value for the widget. + * + * @return string The default value + */ + public function getDefault() + { + return $this->getOption('default'); + } + + /** + * Sets the label for the widget. + * + * @param string $value The label + * + * @return sfWidget The current widget instance + */ + public function setLabel($value) + { + $this->setOption('label', $value); + + return $this; + } + + /** + * Returns the label for the widget. + * + * @return string The label + */ + public function getLabel() + { + return $this->getOption('label'); + } + + /** + * Sets the format for HTML id attributes. + * + * @param string $format The format string (must contain a %s for the id placeholder) + * + * @return sfWidget The current widget instance + */ + public function setIdFormat($format) + { + $this->setOption('id_format', $format); + + return $this; + } + + /** + * Gets the HTML format string for id attributes. + * + * @return string The format string + */ + public function getIdFormat() + { + return $this->getOption('id_format'); + } + + /** + * Returns true if the widget is hidden. + * + * @return Boolean true if the widget is hidden, false otherwise + */ + public function isHidden() + { + return $this->getOption('is_hidden'); + } + + /** + * Sets the hidden flag for the widget. + * + * @param bool $boolean true if the widget must be hidden, false otherwise + * + * @return sfWidget The current widget instance + */ + public function setHidden($boolean) + { + $this->setOption('is_hidden', (boolean) $boolean); + + return $this; + } + + /** + * Returns true if the widget needs a multipart form. + * + * @return bool true if the widget needs a multipart form, false otherwise + */ + public function needsMultipartForm() + { + return $this->getOption('needs_multipart'); + } + + /** + * Renders a HTML tag. + * + * The id attribute is added automatically to the array of attributes if none is specified. + * If uses for "id_format" option to generate the id. + * + * @param string $tag The tag name + * @param array $attributes An array of HTML attributes to be merged with the default HTML attributes + * + * @return string An HTML tag string + */ + public function renderTag($tag, $attributes = array()) + { + if (empty($tag)) + { + return ''; + } + + $attributes = $this->fixFormId($attributes); + + return parent::renderTag($tag, $attributes); + } + + /** + * Renders a HTML content tag. + * + * The id attribute is added automatically to the array of attributes if none is specified. + * If uses for "id_format" option to generate the id. + * + * @param string $tag The tag name + * @param string $content The content of the tag + * @param array $attributes An array of HTML attributes to be merged with the default HTML attributes + * + * @return string An HTML tag string + */ + public function renderContentTag($tag, $content = null, $attributes = array()) + { + return parent::renderContentTag($tag, $content, $this->fixFormId($attributes)); + } + + /** + * Adds an HTML id attributes to the array of attributes if none is given and a name attribute exists. + * + * @param array $attributes An array of attributes + * + * @return array An array of attributes with an id. + */ + protected function fixFormId($attributes) + { + if (!isset($attributes['id']) && isset($attributes['name'])) + { + $attributes['id'] = $this->generateId($attributes['name'], isset($attributes['value']) ? $attributes['value'] : null); + } + + return $attributes; + } + + /** + * Returns a formatted id based on the field name and optionally on the field value. + * + * This method determines the proper form field id name based on the parameters. If a form field has an + * array value as a name we need to convert them to proper and unique ids like so: + * + * + * name[] => name (if value == null) + * name[] => name_value (if value != null) + * name[bob] => name_bob + * name[item][total] => name_item_total + * + * + * This method also changes all invalid characters to an underscore (_): + * + * Ids must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits + * ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods ("."). + * + * @param string $name The field name + * @param string $value The field value + * + * @return string The field id or null. + */ + public function generateId($name, $value = null) + { + if (false === $this->getOption('id_format')) + { + return null; + } + + // check to see if we have an array variable for a field name + if (strstr($name, '[')) + { + $name = str_replace(array('[]', '][', '[', ']'), array((null !== $value ? '_'.$value : ''), '_', '_', ''), $name); + } + + if (false !== strpos($this->getOption('id_format'), '%s')) + { + $name = sprintf($this->getOption('id_format'), $name); + } + + // remove illegal characters + $name = preg_replace(array('/^[^A-Za-z]+/', '/[^A-Za-z0-9\:_\.\-]/'), array('', '_'), $name); + + return $name; + } + + /** + * Generates a two chars range + * + * @param int $start + * @param int $stop + * @return array + */ + static protected function generateTwoCharsRange($start, $stop) + { + $results = array(); + for ($i = $start; $i <= $stop; $i++) + { + $results[$i] = sprintf('%02d', $i); + } + return $results; + } + + /** + * Sets the parent widget schema. + * + * @param sfWidgetFormSchema|null $widgetSchema + * + * @return sfWidgetForm The current widget instance + */ + public function setParent(sfWidgetFormSchema $widgetSchema = null) + { + $this->parent = $widgetSchema; + + return $this; + } + + /** + * Returns the parent widget schema. + * + * If no schema has been set with setWidgetSchema(), NULL is returned. + * + * @return sfWidgetFormSchema|null + */ + public function getParent() + { + return $this->parent; + } + + /** + * Translates the given text. + * + * @param string $text The text with optional placeholders + * @param array $parameters The values to replace the placeholders + * + * @return string The translated text + * + * @see sfWidgetFormSchemaFormatter::translate() + */ + protected function translate($text, array $parameters = array()) + { + if (null === $this->parent) + { + return $text; + } + else + { + return $this->parent->getFormFormatter()->translate($text, $parameters); + } + } + + /** + * Translates all values of the given array. + * + * @param array $texts The texts with optional placeholders + * @param array $parameters The values to replace the placeholders + * + * @return array The translated texts + * + * @see sfWidgetFormSchemaFormatter::translate() + */ + protected function translateAll(array $texts, array $parameters = array()) + { + if (null === $this->parent) + { + return $texts; + } + else + { + $result = array(); + + foreach ($texts as $key => $text) + { + $result[$key] = $this->parent->getFormFormatter()->translate($text, $parameters); + } + + return $result; + } + } +} diff --git a/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormChoice.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormChoice.class.php.svn-base new file mode 100644 index 0000000..71cceec --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormChoice.class.php.svn-base @@ -0,0 +1,144 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormChoice represents a choice widget. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfWidgetFormChoice extends sfWidgetFormChoiceBase +{ + /** + * Constructor. + * + * Available options: + * + * * choices: An array of possible choices (required) + * * multiple: true if the select tag must allow multiple selections + * * expanded: true to display an expanded widget + * if expanded is false, then the widget will be a select + * if expanded is true and multiple is false, then the widget will be a list of radio + * if expanded is true and multiple is true, then the widget will be a list of checkbox + * * renderer_class: The class to use instead of the default ones + * * renderer_options: The options to pass to the renderer constructor + * * renderer: A renderer widget (overrides the expanded and renderer_options options) + * The choices option must be: new sfCallable($thisWidgetInstance, 'getChoices') + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetFormChoiceBase + */ + protected function configure($options = array(), $attributes = array()) + { + parent::configure($options, $attributes); + + $this->addOption('multiple', false); + $this->addOption('expanded', false); + $this->addOption('renderer_class', false); + $this->addOption('renderer_options', array()); + $this->addOption('renderer', false); + } + + /** + * Sets the format for HTML id attributes. This is made avaiable to the renderer, + * as this widget does not render itself, but delegates to the renderer instead. + * + * @param string $format The format string (must contain a %s for the id placeholder) + * + * @see sfWidgetForm + */ + public function setIdFormat($format) + { + $this->options['renderer_options']['id_format'] = $format; + } + + /** + * Renders the widget. + * + * @param string $name The element name + * @param string $value The value selected in this widget + * @param array $attributes An array of HTML attributes to be merged with the default HTML attributes + * @param array $errors An array of errors for the field + * + * @return string An HTML tag string + * + * @see sfWidgetForm + */ + public function render($name, $value = null, $attributes = array(), $errors = array()) + { + if ($this->getOption('multiple')) + { + $attributes['multiple'] = 'multiple'; + + if ('[]' != substr($name, -2)) + { + $name .= '[]'; + } + } + + if (!$this->getOption('renderer') && !$this->getOption('renderer_class') && $this->getOption('expanded')) + { + unset($attributes['multiple']); + } + + return $this->getRenderer()->render($name, $value, $attributes, $errors); + } + + /** + * Gets the stylesheet paths associated with the widget. + * + * @return array An array of stylesheet paths + */ + public function getStylesheets() + { + return $this->getRenderer()->getStylesheets(); + } + + /** + * Gets the JavaScript paths associated with the widget. + * + * @return array An array of JavaScript paths + */ + public function getJavaScripts() + { + return $this->getRenderer()->getJavaScripts(); + } + + public function getRenderer() + { + if ($this->getOption('renderer')) + { + return $this->getOption('renderer'); + } + + if (!$class = $this->getOption('renderer_class')) + { + $type = !$this->getOption('expanded') ? '' : ($this->getOption('multiple') ? 'checkbox' : 'radio'); + $class = sprintf('sfWidgetFormSelect%s', ucfirst($type)); + } + + $options = $this->options['renderer_options']; + $options['choices'] = new sfCallable(array($this, 'getChoices')); + + $renderer = new $class($options, $this->getAttributes()); + + // choices returned by the callback will already be translated (so we need to avoid double-translation) + if ($renderer->hasOption('translate_choices')) { + $renderer->setOption('translate_choices', false); + } + + $renderer->setParent($this->getParent()); + + return $renderer; + } +} diff --git a/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormChoiceBase.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormChoiceBase.class.php.svn-base new file mode 100644 index 0000000..686674c --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormChoiceBase.class.php.svn-base @@ -0,0 +1,89 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormChoiceBase is the base class for all choice/select widgets + * + * @package symfony + * @subpackage widget + * @author Bernhard Schussek + * @version SVN: $Id$ + */ +abstract class sfWidgetFormChoiceBase extends sfWidgetForm +{ + /** + * Constructor. + * + * Available options: + * + * * choices: An array of possible choices (required) + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetForm + */ + protected function configure($options = array(), $attributes = array()) + { + $this->addRequiredOption('choices'); + $this->addOption('translate_choices', true); + } + + /** + * Returns the translated choices configured for this widget + * + * @return array An array of strings + */ + public function getChoices() + { + $choices = $this->getOption('choices'); + + if ($choices instanceof sfCallable) + { + $choices = $choices->call(); + } + + if (!$this->getOption('translate_choices')) + { + return $choices; + } + + $results = array(); + foreach ($choices as $key => $choice) + { + if (is_array($choice)) + { + $results[$this->translate($key)] = $this->translateAll($choice); + } + else + { + $results[$key] = $this->translate($choice); + } + } + + return $results; + } + + /** + * Clones this object + */ + public function __clone() + { + if ($this->getOption('choices') instanceof sfCallable) + { + $callable = $this->getOption('choices')->getCallable(); + if (is_array($callable) && $callable[0] instanceof self) + { + $callable[0] = $this; + $this->setOption('choices', new sfCallable($callable)); + } + } + } +} \ No newline at end of file diff --git a/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormDate.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormDate.class.php.svn-base new file mode 100644 index 0000000..96eba1a --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormDate.class.php.svn-base @@ -0,0 +1,132 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormDate represents a date widget. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfWidgetFormDate extends sfWidgetForm +{ + /** + * Configures the current widget. + * + * Available options: + * + * * format: The date format string (%month%/%day%/%year% by default) + * * years: An array of years for the year select tag (optional) + * Be careful that the keys must be the years, and the values what will be displayed to the user + * * months: An array of months for the month select tag (optional) + * * days: An array of days for the day select tag (optional) + * * can_be_empty: Whether the widget accept an empty value (true by default) + * * empty_values: An array of values to use for the empty value (empty string for year, month, and day by default) + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetForm + */ + protected function configure($options = array(), $attributes = array()) + { + $this->addOption('format', '%month%/%day%/%year%'); + $this->addOption('days', parent::generateTwoCharsRange(1, 31)); + $this->addOption('months', parent::generateTwoCharsRange(1, 12)); + $years = range(date('Y') - 5, date('Y') + 5); + $this->addOption('years', array_combine($years, $years)); + + $this->addOption('can_be_empty', true); + $this->addOption('empty_values', array('year' => '', 'month' => '', 'day' => '')); + } + + /** + * Renders the widget. + * + * @param string $name The element name + * @param string $value The date displayed in this widget + * @param array $attributes An array of HTML attributes to be merged with the default HTML attributes + * @param array $errors An array of errors for the field + * + * @return string An HTML tag string + * + * @see sfWidgetForm + */ + public function render($name, $value = null, $attributes = array(), $errors = array()) + { + // convert value to an array + $default = array('year' => null, 'month' => null, 'day' => null); + if (is_array($value)) + { + $value = array_merge($default, $value); + } + else + { + $value = (string) $value == (string) (integer) $value ? (integer) $value : strtotime($value); + if (false === $value) + { + $value = $default; + } + else + { + $value = array('year' => date('Y', $value), 'month' => date('n', $value), 'day' => date('j', $value)); + } + } + + $date = array(); + $emptyValues = $this->getOption('empty_values'); + + $date['%day%'] = $this->renderDayWidget($name.'[day]', $value['day'], array('choices' => $this->getOption('can_be_empty') ? array('' => $emptyValues['day']) + $this->getOption('days') : $this->getOption('days'), 'id_format' => $this->getOption('id_format')), array_merge($this->attributes, $attributes)); + $date['%month%'] = $this->renderMonthWidget($name.'[month]', $value['month'], array('choices' => $this->getOption('can_be_empty') ? array('' => $emptyValues['month']) + $this->getOption('months') : $this->getOption('months'), 'id_format' => $this->getOption('id_format')), array_merge($this->attributes, $attributes)); + $date['%year%'] = $this->renderYearWidget($name.'[year]', $value['year'], array('choices' => $this->getOption('can_be_empty') ? array('' => $emptyValues['year']) + $this->getOption('years') : $this->getOption('years'), 'id_format' => $this->getOption('id_format')), array_merge($this->attributes, $attributes)); + + return strtr($this->getOption('format'), $date); + } + + /** + * @param string $name + * @param string $value + * @param array $options + * @param array $attributes + * @return string rendered widget + */ + protected function renderDayWidget($name, $value, $options, $attributes) + { + $widget = new sfWidgetFormSelect($options, $attributes); + return $widget->render($name, $value); + } + + /** + * @param string $name + * @param string $value + * @param array $options + * @param array $attributes + * @return string rendered widget + */ + protected function renderMonthWidget($name, $value, $options, $attributes) + { + $widget = new sfWidgetFormSelect($options, $attributes); + return $widget->render($name, $value); + } + + /** + * @param string $name + * @param string $value + * @param array $options + * @param array $attributes + * @return string rendered widget + */ + protected function renderYearWidget($name, $value, $options, $attributes) + { + $widget = new sfWidgetFormSelect($options, $attributes); + return $widget->render($name, $value); + } +} diff --git a/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormDateRange.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormDateRange.class.php.svn-base new file mode 100644 index 0000000..e61bcd8 --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormDateRange.class.php.svn-base @@ -0,0 +1,85 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormDateRange represents a date range widget. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfWidgetFormDateRange extends sfWidgetForm +{ + /** + * Configures the current widget. + * + * Available options: + * + * * from_date: The from date widget (required) + * * to_date: The to date widget (required) + * * template: The template to use to render the widget + * Available placeholders: %from_date%, %to_date% + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetForm + */ + protected function configure($options = array(), $attributes = array()) + { + $this->addRequiredOption('from_date'); + $this->addRequiredOption('to_date'); + + $this->addOption('template', 'from %from_date% to %to_date%'); + } + + /** + * Renders the widget. + * + * @param string $name The element name + * @param string $value The date displayed in this widget + * @param array $attributes An array of HTML attributes to be merged with the default HTML attributes + * @param array $errors An array of errors for the field + * + * @return string An HTML tag string + * + * @see sfWidgetForm + */ + public function render($name, $value = null, $attributes = array(), $errors = array()) + { + $value = array_merge(array('from' => '', 'to' => ''), is_array($value) ? $value : array()); + + return strtr($this->translate($this->getOption('template')), array( + '%from_date%' => $this->getOption('from_date')->render($name.'[from]', $value['from']), + '%to_date%' => $this->getOption('to_date')->render($name.'[to]', $value['to']), + )); + } + + /** + * Gets the stylesheet paths associated with the widget. + * + * @return array An array of stylesheet paths + */ + public function getStylesheets() + { + return array_unique(array_merge($this->getOption('from_date')->getStylesheets(), $this->getOption('to_date')->getStylesheets())); + } + + /** + * Gets the JavaScript paths associated with the widget. + * + * @return array An array of JavaScript paths + */ + public function getJavaScripts() + { + return array_unique(array_merge($this->getOption('from_date')->getJavaScripts(), $this->getOption('to_date')->getJavaScripts())); + } +} diff --git a/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormDateTime.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormDateTime.class.php.svn-base new file mode 100644 index 0000000..54cf542 --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormDateTime.class.php.svn-base @@ -0,0 +1,137 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormDateTime represents a datetime widget. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfWidgetFormDateTime extends sfWidgetForm +{ + /** + * Configures the current widget. + * + * The attributes are passed to both the date and the time widget. + * + * If you want to pass HTML attributes to one of the two widget, pass an + * attributes option to the date or time option (see below). + * + * Available options: + * + * * date: Options for the date widget (see sfWidgetFormDate) + * * time: Options for the time widget (see sfWidgetFormTime) + * * with_time: Whether to include time (true by default) + * * format: The format string for the date and the time widget (default to %date% %time%) + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetForm + */ + protected function configure($options = array(), $attributes = array()) + { + $this->addOption('date', array()); + $this->addOption('time', array()); + $this->addOption('with_time', true); + $this->addOption('format', '%date% %time%'); + } + + /** + * Renders the widget. + * + * @param string $name The element name + * @param string $value The date and time displayed in this widget + * @param array $attributes An array of HTML attributes to be merged with the default HTML attributes + * @param array $errors An array of errors for the field + * + * @return string An HTML tag string + * + * @see sfWidgetForm + */ + function render($name, $value = null, $attributes = array(), $errors = array()) + { + $date = $this->getDateWidget($attributes)->render($name, $value); + + if (!$this->getOption('with_time')) + { + return $date; + } + + return strtr($this->getOption('format'), array( + '%date%' => $date, + '%time%' => $this->getTimeWidget($attributes)->render($name, $value), + )); + } + + /** + * Returns the date widget. + * + * @param array $attributes An array of attributes + * + * @return sfWidgetForm A Widget representing the date + */ + protected function getDateWidget($attributes = array()) + { + return new sfWidgetFormDate($this->getOptionsFor('date'), $this->getAttributesFor('date', $attributes)); + } + + /** + * Returns the time widget. + * + * @param array $attributes An array of attributes + * + * @return sfWidgetForm A Widget representing the time + */ + protected function getTimeWidget($attributes = array()) + { + return new sfWidgetFormTime($this->getOptionsFor('time'), $this->getAttributesFor('time', $attributes)); + } + + /** + * Returns an array of options for the given type. + * + * @param string $type The type (date or time) + * + * @return array An array of options + * + * @throws InvalidArgumentException when option date|time type is not array + */ + protected function getOptionsFor($type) + { + $options = $this->getOption($type); + if (!is_array($options)) + { + throw new InvalidArgumentException(sprintf('You must pass an array for the %s option.', $type)); + } + + // add id_format if it's not there already + $options += array('id_format' => $this->getOption('id_format')); + + return $options; + } + + /** + * Returns an array of HTML attributes for the given type. + * + * @param string $type The type (date or time) + * @param array $attributes An array of attributes + * + * @return array An array of HTML attributes + */ + protected function getAttributesFor($type, $attributes) + { + $defaults = isset($this->attributes[$type]) ? $this->attributes[$type] : array(); + + return isset($attributes[$type]) ? array_merge($defaults, $attributes[$type]) : $defaults; + } +} diff --git a/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormFilterDate.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormFilterDate.class.php.svn-base new file mode 100644 index 0000000..4f7369a --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormFilterDate.class.php.svn-base @@ -0,0 +1,70 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormFilterDate represents a date filter widget. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfWidgetFormFilterDate extends sfWidgetFormDateRange +{ + /** + * Configures the current widget. + * + * Available options: + * + * * with_empty: Whether to add the empty checkbox (true by default) + * * empty_label: The label to use when using an empty checkbox + * * template: The template used for from date and to date + * Available placeholders: %from_date%, %to_date% + * * filter_template: The template to use to render the widget + * Available placeholders: %date_range%, %empty_checkbox%, %empty_label% + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetForm + */ + protected function configure($options = array(), $attributes = array()) + { + parent::configure($options, $attributes); + + $this->addOption('with_empty', true); + $this->addOption('empty_label', 'is empty'); + $this->addOption('template', 'from %from_date%
    to %to_date%'); + $this->addOption('filter_template', '%date_range%
    %empty_checkbox% %empty_label%'); + } + + /** + * Renders the widget. + * + * @param string $name The element name + * @param string $value The date displayed in this widget + * @param array $attributes An array of HTML attributes to be merged with the default HTML attributes + * @param array $errors An array of errors for the field + * + * @return string An HTML tag string + * + * @see sfWidgetForm + */ + public function render($name, $value = null, $attributes = array(), $errors = array()) + { + $values = array_merge(array('is_empty' => ''), is_array($value) ? $value : array()); + + return strtr($this->getOption('filter_template'), array( + '%date_range%' => parent::render($name, $value, $attributes, $errors), + '%empty_checkbox%' => $this->getOption('with_empty') ? $this->renderTag('input', array('type' => 'checkbox', 'name' => $name.'[is_empty]', 'checked' => $values['is_empty'] ? 'checked' : '')) : '', + '%empty_label%' => $this->getOption('with_empty') ? $this->renderContentTag('label', $this->translate($this->getOption('empty_label')), array('for' => $this->generateId($name.'[is_empty]'))) : '', + )); + } +} diff --git a/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormFilterInput.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormFilterInput.class.php.svn-base new file mode 100644 index 0000000..9b46e79 --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormFilterInput.class.php.svn-base @@ -0,0 +1,65 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormFilterInput represents an HTML input tag used for filtering text. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfWidgetFormFilterInput extends sfWidgetForm +{ + /** + * Constructor. + * + * Available options: + * + * * with_empty: Whether to add the empty checkbox (true by default) + * * empty_label: The label to use when using an empty checkbox + * * template: The template to use to render the widget + * Available placeholders: %input%, %empty_checkbox%, %empty_label% + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetForm + */ + protected function configure($options = array(), $attributes = array()) + { + $this->addOption('with_empty', true); + $this->addOption('empty_label', 'is empty'); + $this->addOption('template', '%input%
    %empty_checkbox% %empty_label%'); + } + + /** + * Renders the widget. + * + * @param string $name The element name + * @param string $value The value displayed in this widget + * @param array $attributes An array of HTML attributes to be merged with the default HTML attributes + * @param array $errors An array of errors for the field + * + * @return string An HTML tag string + * + * @see sfWidgetForm + */ + public function render($name, $value = null, $attributes = array(), $errors = array()) + { + $values = array_merge(array('text' => '', 'is_empty' => false), is_array($value) ? $value : array()); + + return strtr($this->getOption('template'), array( + '%input%' => $this->renderTag('input', array_merge(array('type' => 'text', 'id' => $this->generateId($name), 'name' => $name.'[text]', 'value' => $values['text']), $attributes)), + '%empty_checkbox%' => $this->getOption('with_empty') ? $this->renderTag('input', array('type' => 'checkbox', 'name' => $name.'[is_empty]', 'checked' => $values['is_empty'] ? 'checked' : '')) : '', + '%empty_label%' => $this->getOption('with_empty') ? $this->renderContentTag('label', $this->translate($this->getOption('empty_label')), array('for' => $this->generateId($name.'[is_empty]'))) : '', + )); + } +} diff --git a/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormInput.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormInput.class.php.svn-base new file mode 100644 index 0000000..adab49f --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormInput.class.php.svn-base @@ -0,0 +1,57 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormInput represents an HTML input tag. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfWidgetFormInput extends sfWidgetForm +{ + /** + * Constructor. + * + * Available options: + * + * * type: The widget type + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetForm + */ + protected function configure($options = array(), $attributes = array()) + { + $this->addRequiredOption('type'); + + // to maintain BC with symfony 1.2 + $this->setOption('type', 'text'); + } + + /** + * Renders the widget. + * + * @param string $name The element name + * @param string $value The value displayed in this widget + * @param array $attributes An array of HTML attributes to be merged with the default HTML attributes + * @param array $errors An array of errors for the field + * + * @return string An HTML tag string + * + * @see sfWidgetForm + */ + public function render($name, $value = null, $attributes = array(), $errors = array()) + { + return $this->renderTag('input', array_merge(array('type' => $this->getOption('type'), 'name' => $name, 'value' => $value), $attributes)); + } +} diff --git a/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormInputCheckbox.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormInputCheckbox.class.php.svn-base new file mode 100644 index 0000000..9fd08b5 --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormInputCheckbox.class.php.svn-base @@ -0,0 +1,84 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormInputCheckbox represents an HTML checkbox tag. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfWidgetFormInputCheckbox extends sfWidgetFormInput +{ + /** + * Constructor. + * + * Available options: + * + * - value_attribute_value: The "value" attribute value to set for the checkbox + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetFormInput + */ + public function __construct($options = array(), $attributes = array()) + { + $this->addOption('value_attribute_value'); + + parent::__construct($options, $attributes); + } + + /** + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetFormInput + */ + protected function configure($options = array(), $attributes = array()) + { + parent::configure($options, $attributes); + + $this->setOption('type', 'checkbox'); + + if (isset($attributes['value'])) + { + $this->setOption('value_attribute_value', $attributes['value']); + } + } + + /** + * Renders the widget. + * + * @param string $name The element name + * @param string $value The this widget is checked if value is not null + * @param array $attributes An array of HTML attributes to be merged with the default HTML attributes + * @param array $errors An array of errors for the field + * + * @return string An HTML tag string + * + * @see sfWidgetForm + */ + public function render($name, $value = null, $attributes = array(), $errors = array()) + { + if (null !== $value && $value !== false) + { + $attributes['checked'] = 'checked'; + } + + if (!isset($attributes['value']) && null !== $this->getOption('value_attribute_value')) + { + $attributes['value'] = $this->getOption('value_attribute_value'); + } + + return parent::render($name, null, $attributes, $errors); + } +} diff --git a/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormInputFile.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormInputFile.class.php.svn-base new file mode 100644 index 0000000..195d203 --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormInputFile.class.php.svn-base @@ -0,0 +1,36 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormInputFile represents an upload HTML input tag. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfWidgetFormInputFile extends sfWidgetFormInput +{ + /** + * Configures the current widget. + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetFormInput + */ + protected function configure($options = array(), $attributes = array()) + { + parent::configure($options, $attributes); + + $this->setOption('type', 'file'); + $this->setOption('needs_multipart', true); + } +} diff --git a/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormInputFileEditable.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormInputFileEditable.class.php.svn-base new file mode 100644 index 0000000..0bf04f0 --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormInputFileEditable.class.php.svn-base @@ -0,0 +1,112 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormInputFileEditable represents an upload HTML input tag with the possibility + * to remove a previously uploaded file. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfWidgetFormInputFileEditable extends sfWidgetFormInputFile +{ + /** + * Constructor. + * + * Available options: + * + * * file_src: The current image web source path (required) + * * edit_mode: A Boolean: true to enabled edit mode, false otherwise + * * is_image: Whether the file is a displayable image + * * with_delete: Whether to add a delete checkbox or not + * * delete_label: The delete label used by the template + * * template: The HTML template to use to render this widget when in edit mode + * The available placeholders are: + * * %input% (the image upload widget) + * * %delete% (the delete checkbox) + * * %delete_label% (the delete label text) + * * %file% (the file tag) + * + * In edit mode, this widget renders an additional widget named after the + * file upload widget with a "_delete" suffix. So, when creating a form, + * don't forget to add a validator for this additional field. + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetFormInputFile + */ + protected function configure($options = array(), $attributes = array()) + { + parent::configure($options, $attributes); + + $this->setOption('type', 'file'); + $this->setOption('needs_multipart', true); + + $this->addRequiredOption('file_src'); + $this->addOption('is_image', false); + $this->addOption('edit_mode', true); + $this->addOption('with_delete', true); + $this->addOption('delete_label', 'remove the current file'); + $this->addOption('template', '%file%
    %input%
    %delete% %delete_label%'); + } + + /** + * Renders the widget. + * + * @param string $name The element name + * @param string $value The value displayed in this widget + * @param array $attributes An array of HTML attributes to be merged with the default HTML attributes + * @param array $errors An array of errors for the field + * + * @return string An HTML tag string + * + * @see sfWidgetForm + */ + public function render($name, $value = null, $attributes = array(), $errors = array()) + { + $input = parent::render($name, $value, $attributes, $errors); + + if (!$this->getOption('edit_mode')) + { + return $input; + } + + if ($this->getOption('with_delete')) + { + $deleteName = ']' == substr($name, -1) ? substr($name, 0, -1).'_delete]' : $name.'_delete'; + + $delete = $this->renderTag('input', array_merge(array('type' => 'checkbox', 'name' => $deleteName), $attributes)); + $deleteLabel = $this->translate($this->getOption('delete_label')); + $deleteLabel = $this->renderContentTag('label', $deleteLabel, array_merge(array('for' => $this->generateId($deleteName)))); + } + else + { + $delete = ''; + $deleteLabel = ''; + } + + return strtr($this->getOption('template'), array('%input%' => $input, '%delete%' => $delete, '%delete_label%' => $deleteLabel, '%file%' => $this->getFileAsTag($attributes))); + } + + protected function getFileAsTag($attributes) + { + if ($this->getOption('is_image')) + { + return false !== $this->getOption('file_src') ? $this->renderTag('img', array_merge(array('src' => $this->getOption('file_src')), $attributes)) : ''; + } + else + { + return $this->getOption('file_src'); + } + } +} diff --git a/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormInputHidden.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormInputHidden.class.php.svn-base new file mode 100644 index 0000000..f1b4342 --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormInputHidden.class.php.svn-base @@ -0,0 +1,36 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormInputHidden represents a hidden HTML input tag. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfWidgetFormInputHidden extends sfWidgetFormInput +{ + /** + * Configures the current widget. + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetFormInput + */ + protected function configure($options = array(), $attributes = array()) + { + parent::configure($options, $attributes); + + $this->setOption('is_hidden', true); + $this->setOption('type', 'hidden'); + } +} diff --git a/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormInputPassword.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormInputPassword.class.php.svn-base new file mode 100644 index 0000000..6998850 --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormInputPassword.class.php.svn-base @@ -0,0 +1,58 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormInputPassword represents a password HTML input tag. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfWidgetFormInputPassword extends sfWidgetFormInput +{ + /** + * Configures the current widget. + * + * Available options: + * + * * always_render_empty: true if you want the input value to be always empty when rendering (true by default) + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetFormInput + */ + protected function configure($options = array(), $attributes = array()) + { + parent::configure($options, $attributes); + + $this->addOption('always_render_empty', true); + + $this->setOption('type', 'password'); + } + + /** + * Renders the widget. + * + * @param string $name The element name + * @param string $value The password stored in this widget, will be masked by the browser. + * @param array $attributes An array of HTML attributes to be merged with the default HTML attributes + * @param array $errors An array of errors for the field + * + * @return string An HTML tag string + * + * @see sfWidgetForm + */ + public function render($name, $value = null, $attributes = array(), $errors = array()) + { + return parent::render($name, $this->getOption('always_render_empty') ? null : $value, $attributes, $errors); + } +} diff --git a/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormInputText.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormInputText.class.php.svn-base new file mode 100644 index 0000000..19dd68e --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormInputText.class.php.svn-base @@ -0,0 +1,35 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormInput represents an HTML text input tag. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfWidgetFormInputText extends sfWidgetFormInput +{ + /** + * Configures the current widget. + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetForm + */ + protected function configure($options = array(), $attributes = array()) + { + parent::configure($options, $attributes); + + $this->setOption('type', 'text'); + } +} diff --git a/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormSchema.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormSchema.class.php.svn-base new file mode 100644 index 0000000..f219664 --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormSchema.class.php.svn-base @@ -0,0 +1,866 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormSchema represents an array of fields. + * + * A field is a named validator. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfWidgetFormSchema extends sfWidgetForm implements ArrayAccess +{ + const + FIRST = 'first', + LAST = 'last', + BEFORE = 'before', + AFTER = 'after'; + + protected static + $defaultFormatterName = 'table'; + + protected + $formFormatters = array(), + $fields = array(), + $positions = array(), + $helps = array(); + + /** + * Constructor. + * + * The first argument can be: + * + * * null + * * an array of sfWidget instances + * + * Available options: + * + * * name_format: The sprintf pattern to use for input names + * * form_formatter: The form formatter name (table and list are bundled) + * + * @param mixed $fields Initial fields + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * @param array $labels An array of HTML labels + * @param array $helps An array of help texts + * + * @throws InvalidArgumentException when the passed fields not null or array + * + * @see sfWidgetForm + */ + public function __construct($fields = null, $options = array(), $attributes = array(), $labels = array(), $helps = array()) + { + $this->addOption('name_format', '%s'); + $this->addOption('form_formatter', null); + + parent::__construct($options, $attributes); + + if (is_array($fields)) + { + foreach ($fields as $name => $widget) + { + $this[$name] = $widget; + } + } + else if (null !== $fields) + { + throw new InvalidArgumentException('sfWidgetFormSchema constructor takes an array of sfWidget objects.'); + } + + $this->setLabels($labels); + $this->helps = $helps; + } + + /** + * Sets the default value for a field. + * + * @param string $name The field name + * @param string $value The default value (required - the default value is here because PHP do not allow signature changes with inheritance) + * + * @return sfWidget The current widget instance + */ + public function setDefault($name, $value = null) + { + $this[$name]->setDefault($value); + + return $this; + } + + /** + * Gets the default value of a field. + * + * @param string $name The field name (required - the default value is here because PHP do not allow signature changes with inheritance) + * + * @return string The default value + */ + public function getDefault($name = null) + { + return $this[$name]->getDefault(); + } + + /** + * Sets the default values for the widget. + * + * @param array $values The default values for the widget + * + * @return sfWidget The current widget instance + */ + public function setDefaults(array $values) + { + foreach ($this->fields as $name => $widget) + { + if (array_key_exists($name, $values)) + { + $widget->setDefault($values[$name]); + } + } + + return $this; + } + + /** + * Returns the defaults values for the widget schema. + * + * @return array An array of default values + */ + public function getDefaults() + { + $defaults = array(); + + foreach ($this->fields as $name => $widget) + { + $defaults[$name] = $widget instanceof sfWidgetFormSchema ? $widget->getDefaults() : $widget->getDefault(); + } + + return $defaults; + } + + /** + * Adds a form formatter. + * + * @param string $name The formatter name + * @param sfWidgetFormSchemaFormatter $formatter An sfWidgetFormSchemaFormatter instance + * + * @return sfWidget The current widget instance + */ + public function addFormFormatter($name, sfWidgetFormSchemaFormatter $formatter) + { + $this->formFormatters[$name] = $formatter; + + return $this; + } + + /** + * Returns all the form formats defined for this form schema. + * + * @return array An array of named form formats + */ + public function getFormFormatters() + { + return $this->formFormatters; + } + + /** + * Sets the generic default formatter name used by the class. If you want all + * of your forms to be generated with the list format, you can + * do it in a project or application configuration class: + * + *
    +   * class ProjectConfiguration extends sfProjectConfiguration
    +   * {
    +   *   public function setup()
    +   *   {
    +   *     sfWidgetFormSchema::setDefaultFormFormatterName('list');
    +   *   }
    +   * }
    +   * 
    + * + * @param string $name New default formatter name + */ + static public function setDefaultFormFormatterName($name) + { + self::$defaultFormatterName = $name; + } + + /** + * Sets the form formatter name to use when rendering the widget schema. + * + * @param string $name The form formatter name + * + * @return sfWidget The current widget instance + */ + public function setFormFormatterName($name) + { + $this->options['form_formatter'] = $name; + + return $this; + } + + /** + * Gets the form formatter name that will be used to render the widget schema. + * + * @return string The form formatter name + */ + public function getFormFormatterName() + { + return null === $this->options['form_formatter'] ? self::$defaultFormatterName : $this->options['form_formatter']; + } + + /** + * Returns the form formatter to use for widget schema rendering + * + * @return sfWidgetFormSchemaFormatter sfWidgetFormSchemaFormatter instance + * + * @throws InvalidArgumentException when the form formatter not exists + */ + public function getFormFormatter() + { + $name = $this->getFormFormatterName(); + + if (!isset($this->formFormatters[$name])) + { + $class = 'sfWidgetFormSchemaFormatter'.ucfirst($name); + + if (!class_exists($class)) + { + throw new InvalidArgumentException(sprintf('The form formatter "%s" does not exist.', $name)); + } + + $this->formFormatters[$name] = new $class($this); + } + + return $this->formFormatters[$name]; + } + + /** + * Sets the format string for the name HTML attribute. + * + * If you are using the form framework with symfony, do not use a reserved word in the + * name format. If you do, symfony may act in an unexpected manner. + * + * For symfony 1.1+, the following words are reserved and must NOT be used as + * the name format: + * + * * module (example: module[%s]) + * * action (example: action[%s]) + * + * However, you CAN use other variations, such as actions[%s] (note the s). + * + * @param string $format The format string (must contain a %s for the name placeholder) + * + * @return sfWidget The current widget instance + * + * @throws InvalidArgumentException when no %s exists in the format + */ + public function setNameFormat($format) + { + if (false !== $format && false === strpos($format, '%s')) + { + throw new InvalidArgumentException(sprintf('The name format must contain %%s ("%s" given)', $format)); + } + + $this->options['name_format'] = $format; + + return $this; + } + + /** + * Gets the format string for the name HTML attribute. + * + * @return string The format string + */ + public function getNameFormat() + { + return $this->options['name_format']; + } + + /** + * Sets the label names to render for each field. + * + * @param array $labels An array of label names + * + * @return sfWidget The current widget instance + */ + public function setLabels(array $labels) + { + foreach ($this->fields as $name => $widget) + { + if (array_key_exists($name, $labels)) + { + $widget->setLabel($labels[$name]); + } + } + + return $this; + } + + /** + * Gets the labels. + * + * @return array An array of label names + */ + public function getLabels() + { + $labels = array(); + + foreach ($this->fields as $name => $widget) + { + $labels[$name] = $widget->getLabel(); + } + + return $labels; + } + + /** + * Sets a label. + * + * @param string $name The field name + * @param string $value The label name (required - the default value is here because PHP do not allow signature changes with inheritance) + * + * @return sfWidget The current widget instance + * + * @throws InvalidArgumentException when you try to set a label on a none existing widget + */ + public function setLabel($name, $value = null) + { + if (2 == func_num_args()) + { + if (!isset($this->fields[$name])) + { + throw new InvalidArgumentException(sprintf('Unable to set the label on an unexistant widget ("%s").', $name)); + } + + $this->fields[$name]->setLabel($value); + } + else + { + // set the label for this widget schema + parent::setLabel($name); + } + + return $this; + } + + /** + * Gets a label by field name. + * + * @param string $name The field name (required - the default value is here because PHP do not allow signature changes with inheritance) + * + * @return string The label name or an empty string if it is not defined + * + * @throws InvalidArgumentException when you try to get a label for a none existing widget + */ + public function getLabel($name = null) + { + if (1 == func_num_args()) + { + if (!isset($this->fields[$name])) + { + throw new InvalidArgumentException(sprintf('Unable to get the label on an unexistant widget ("%s").', $name)); + } + + return $this->fields[$name]->getLabel(); + } + else + { + // label for this widget schema + return parent::getLabel(); + } + } + + /** + * Sets the help texts to render for each field. + * + * @param array $helps An array of help texts + * + * @return sfWidget The current widget instance + */ + public function setHelps(array $helps) + { + $this->helps = $helps; + + return $this; + } + + /** + * Sets the help texts. + * + * @return array An array of help texts + */ + public function getHelps() + { + return $this->helps; + } + + /** + * Sets a help text. + * + * @param string $name The field name + * @param string $help The help text + * + * @return sfWidget The current widget instance + */ + public function setHelp($name, $help) + { + $this->helps[$name] = $help; + + return $this; + } + + /** + * Gets a text help by field name. + * + * @param string $name The field name + * + * @return string The help text or an empty string if it is not defined + */ + public function getHelp($name) + { + return array_key_exists($name, $this->helps) ? $this->helps[$name] : ''; + } + + /** + * Gets the stylesheet paths associated with the widget. + * + * @return array An array of stylesheet paths + */ + public function getStylesheets() + { + $stylesheets = array(); + + foreach ($this->fields as $field) + { + $stylesheets = array_merge($stylesheets, $field->getStylesheets()); + } + + return $stylesheets; + } + + /** + * Gets the JavaScript paths associated with the widget. + * + * @return array An array of JavaScript paths + */ + public function getJavaScripts() + { + $javascripts = array(); + + foreach ($this->fields as $field) + { + $javascripts = array_merge($javascripts, $field->getJavaScripts()); + } + + return array_unique($javascripts); + } + + /** + * Returns true if the widget schema needs a multipart form. + * + * @return bool true if the widget schema needs a multipart form, false otherwise + */ + public function needsMultipartForm() + { + foreach ($this->fields as $field) + { + if ($field->needsMultipartForm()) + { + return true; + } + } + + return false; + } + + /** + * Renders a field by name. + * + * @param string $name The field name + * @param string $value The field value + * @param array $attributes An array of HTML attributes to be merged with the current HTML attributes + * @param array $errors An array of errors for the field + * + * @return string An HTML string representing the rendered widget + * + * @throws InvalidArgumentException when the widget not exist + */ + public function renderField($name, $value = null, $attributes = array(), $errors = array()) + { + if (null === $widget = $this[$name]) + { + throw new InvalidArgumentException(sprintf('The field named "%s" does not exist.', $name)); + } + + if ($widget instanceof sfWidgetFormSchema && $errors && !$errors instanceof sfValidatorErrorSchema) + { + $errors = new sfValidatorErrorSchema($errors->getValidator(), array($errors)); + } + + // we clone the widget because we want to change the id format temporarily + $clone = clone $widget; + $clone->setIdFormat($this->options['id_format']); + + return $clone->render($this->generateName($name), $value, array_merge($clone->getAttributes(), $attributes), $errors); + } + + /** + * Renders the widget. + * + * @param string $name The name of the HTML widget + * @param mixed $values The values of the widget + * @param array $attributes An array of HTML attributes + * @param array $errors An array of errors + * + * @return string An HTML representation of the widget + * + * @throws InvalidArgumentException when values type is not array|ArrayAccess + */ + public function render($name, $values = array(), $attributes = array(), $errors = array()) + { + if (null === $values) + { + $values = array(); + } + + if (!is_array($values) && !$values instanceof ArrayAccess) + { + throw new InvalidArgumentException('You must pass an array of values to render a widget schema'); + } + + $formFormat = $this->getFormFormatter(); + + $rows = array(); + $hiddenRows = array(); + $errorRows = array(); + + // render each field + foreach ($this->positions as $name) + { + $widget = $this[$name]; + $value = isset($values[$name]) ? $values[$name] : null; + $error = isset($errors[$name]) ? $errors[$name] : array(); + $widgetAttributes = isset($attributes[$name]) ? $attributes[$name] : array(); + + if ($widget instanceof sfWidgetForm && $widget->isHidden()) + { + $hiddenRows[] = $this->renderField($name, $value, $widgetAttributes); + } + else + { + $field = $this->renderField($name, $value, $widgetAttributes, $error); + + // don't add a label tag and errors if we embed a form schema + $label = $widget instanceof sfWidgetFormSchema ? $this->getFormFormatter()->generateLabelName($name) : $this->getFormFormatter()->generateLabel($name); + $error = $widget instanceof sfWidgetFormSchema ? array() : $error; + + $rows[] = $formFormat->formatRow($label, $field, $error, $this->getHelp($name)); + } + } + + if ($rows) + { + // insert hidden fields in the last row + for ($i = 0, $max = count($rows); $i < $max; $i++) + { + $rows[$i] = strtr($rows[$i], array('%hidden_fields%' => $i == $max - 1 ? implode("\n", $hiddenRows) : '')); + } + } + else + { + // only hidden fields + $rows[0] = implode("\n", $hiddenRows); + } + + return $this->getFormFormatter()->formatErrorRow($this->getGlobalErrors($errors)).implode('', $rows); + } + + /** + * Gets errors that need to be included in global errors. + * + * @param array $errors An array of errors + * + * @return string An HTML representation of global errors for the widget + */ + public function getGlobalErrors($errors) + { + $globalErrors = array(); + + // global errors and errors for non existent fields + if (null !== $errors) + { + foreach ($errors as $name => $error) + { + if (!isset($this->fields[$name])) + { + $globalErrors[] = $error; + } + } + } + + // errors for hidden fields + foreach ($this->positions as $name) + { + if ($this[$name] instanceof sfWidgetForm && $this[$name]->isHidden()) + { + if (isset($errors[$name])) + { + $globalErrors[$this->getFormFormatter()->generateLabelName($name)] = $errors[$name]; + } + } + } + + return $globalErrors; + } + + /** + * Generates a name. + * + * @param string $name The name + * + * @return string The generated name + */ + public function generateName($name) + { + $format = $this->getNameFormat(); + + if ('[%s]' == substr($format, -4) && preg_match('/^(.+?)\[(.+)\]$/', $name, $match)) + { + $name = sprintf('%s[%s][%s]', substr($format, 0, -4), $match[1], $match[2]); + } + else if (false !== $format) + { + $name = sprintf($format, $name); + } + + if ($parent = $this->getParent()) + { + $name = $parent->generateName($name); + } + + return $name; + } + + /** + * Returns true if the schema has a field with the given name (implements the ArrayAccess interface). + * + * @param string $name The field name + * + * @return bool true if the schema has a field with the given name, false otherwise + */ + public function offsetExists($name) + { + return isset($this->fields[$name]); + } + + /** + * Gets the field associated with the given name (implements the ArrayAccess interface). + * + * @param string $name The field name + * + * @return sfWidget|null The sfWidget instance associated with the given name, null if it does not exist + */ + public function offsetGet($name) + { + return isset($this->fields[$name]) ? $this->fields[$name] : null; + } + + /** + * Sets a field (implements the ArrayAccess interface). + * + * @param string $name The field name + * @param sfWidget $widget An sfWidget instance + * + * @throws InvalidArgumentException when the field is not instance of sfWidget + */ + public function offsetSet($name, $widget) + { + if (!$widget instanceof sfWidget) + { + throw new InvalidArgumentException('A field must be an instance of sfWidget.'); + } + + if (!isset($this->fields[$name])) + { + $this->positions[] = (string) $name; + } + + $this->fields[$name] = clone $widget; + $this->fields[$name]->setParent($this); + + if ($widget instanceof sfWidgetFormSchema) + { + $this->fields[$name]->setNameFormat($name.'[%s]'); + } + } + + /** + * Removes a field by name (implements the ArrayAccess interface). + * + * @param string $name field name + */ + public function offsetUnset($name) + { + unset($this->fields[$name]); + if (false !== $position = array_search((string) $name, $this->positions)) + { + unset($this->positions[$position]); + + $this->positions = array_values($this->positions); + } + } + + /** + * Returns an array of fields. + * + * @return sfWidget An array of sfWidget instance + */ + public function getFields() + { + return $this->fields; + } + + /** + * Gets the positions of the fields. + * + * The field positions are only used when rendering the schema with ->render(). + * + * @return array An ordered array of field names + */ + public function getPositions() + { + return $this->positions; + } + + /** + * Sets the positions of the fields. + * + * @param array $positions An ordered array of field names + * + * @return sfWidget The current widget instance + * + * @throws InvalidArgumentException when not all fields set in $positions + * + * @see getPositions() + */ + public function setPositions(array $positions) + { + $positions = array_unique(array_values($positions)); + $current = array_keys($this->fields); + + if ($diff = array_diff($positions, $current)) + { + throw new InvalidArgumentException('Widget schema does not include the following field(s): '.implode(', ', $diff)); + } + + if ($diff = array_diff($current, $positions)) + { + throw new InvalidArgumentException('Positions array must include all fields. Missing: '.implode(', ', $diff)); + } + + foreach ($positions as &$position) + { + $position = (string) $position; + } + + $this->positions = $positions; + + return $this; + } + + /** + * Moves a field in a given position + * + * Available actions are: + * + * * sfWidgetFormSchema::BEFORE + * * sfWidgetFormSchema::AFTER + * * sfWidgetFormSchema::LAST + * * sfWidgetFormSchema::FIRST + * + * @param string $field The field name to move + * @param constant $action The action (see above for all possible actions) + * @param string $pivot The field name used for AFTER and BEFORE actions + * + * @throws InvalidArgumentException when field not exist + * @throws InvalidArgumentException when relative field not exist + * @throws LogicException when you try to move a field without a relative field + * @throws LogicException when the $action not exist + */ + public function moveField($field, $action, $pivot = null) + { + $field = (string) $field; + if (false === $fieldPosition = array_search($field, $this->positions)) + { + throw new InvalidArgumentException(sprintf('Field "%s" does not exist.', $field)); + } + unset($this->positions[$fieldPosition]); + $this->positions = array_values($this->positions); + + if (null !== $pivot) + { + $pivot = (string) $pivot; + if (false === $pivotPosition = array_search($pivot, $this->positions)) + { + throw new InvalidArgumentException(sprintf('Field "%s" does not exist.', $pivot)); + } + } + + switch ($action) + { + case sfWidgetFormSchema::FIRST: + array_unshift($this->positions, $field); + break; + case sfWidgetFormSchema::LAST: + array_push($this->positions, $field); + break; + case sfWidgetFormSchema::BEFORE: + if (null === $pivot) + { + throw new LogicException(sprintf('Unable to move field "%s" without a relative field.', $field)); + } + $this->positions = array_merge( + array_slice($this->positions, 0, $pivotPosition), + array($field), + array_slice($this->positions, $pivotPosition) + ); + break; + case sfWidgetFormSchema::AFTER: + if (null === $pivot) + { + throw new LogicException(sprintf('Unable to move field "%s" without a relative field.', $field)); + } + $this->positions = array_merge( + array_slice($this->positions, 0, $pivotPosition + 1), + array($field), + array_slice($this->positions, $pivotPosition + 1) + ); + break; + default: + throw new LogicException(sprintf('Unknown move operation for field "%s".', $field)); + } + } + + public function __clone() + { + foreach ($this->fields as $name => $field) + { + // offsetSet will clone the field and change the parent + $this[$name] = $field; + } + + foreach ($this->formFormatters as &$formFormatter) + { + $formFormatter = clone $formFormatter; + $formFormatter->setWidgetSchema($this); + } + } +} diff --git a/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormSchemaDecorator.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormSchemaDecorator.class.php.svn-base new file mode 100644 index 0000000..96cd455 --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormSchemaDecorator.class.php.svn-base @@ -0,0 +1,355 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormSchemaDecorator wraps a form schema widget inside a given HTML snippet. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfWidgetFormSchemaDecorator extends sfWidgetFormSchema +{ + protected + $widget = null, + $decorator = ''; + + /** + * Constructor. + * + * @param sfWidgetFormSchema $widget A sfWidgetFormSchema instance + * @param string $decorator A decorator string + * + * @see sfWidgetFormSchema + */ + public function __construct(sfWidgetFormSchema $widget, $decorator) + { + $this->widget = $widget; + $this->decorator = $decorator; + + parent::__construct(); + } + + /** + * Returns the decorated widget. + * + * @param sfWidget The decorated widget + */ + public function getWidget() + { + return $this->widget; + } + + /** + * Renders the widget. + * + * @param string $name The element name + * @param string $values The value displayed in this widget + * @param array $attributes An array of HTML attributes to be merged with the default HTML attributes + * @param array $errors An array of errors for the field + * + * @see sfWidget + */ + public function render($name, $values = array(), $attributes = array(), $errors = array()) + { + return strtr($this->decorator, array('%content%' => $this->widget->render($name, $values, $attributes, $errors))); + } + + /** + * @see sfWidgetFormSchema + */ + public function addFormFormatter($name, sfWidgetFormSchemaFormatter $formatter) + { + $this->widget->addFormFormatter($name, $formatter); + + return $this; + } + + /** + * @see sfWidgetFormSchema + */ + public function getFormFormatters() + { + return $this->widget->getFormFormatters(); + } + + /** + * @see sfWidgetFormSchema + */ + public function setFormFormatterName($name) + { + $this->widget->setFormFormatterName($name); + + return $this; + } + + /** + * @see sfWidgetFormSchema + */ + public function getFormFormatterName() + { + return $this->widget->getFormFormatterName(); + } + + /** + * @see sfWidgetFormSchema + */ + public function getFormFormatter() + { + return $this->widget->getFormFormatter(); + } + + /** + * @see sfWidgetFormSchema + */ + public function setNameFormat($format) + { + $this->widget->setNameFormat($format); + + return $this; + } + + /** + * @see sfWidgetFormSchema + */ + public function getNameFormat() + { + return $this->widget->getNameFormat(); + } + + /** + * @see sfWidgetFormSchema + */ + public function setLabels(array $labels) + { + $this->widget->setLabels($labels); + + return $this; + } + + /** + * @see sfWidgetFormSchema + */ + public function getLabels() + { + return $this->widget->getLabels(); + } + + /** + * @see sfWidgetFormSchema + */ + public function setLabel($name, $value = null) + { + if (2 == func_num_args()) + { + $this->widget->setLabel($name, $value); + } + else + { + $this->widget->setLabel($name); + } + + return $this; + } + + /** + * @see sfWidgetFormSchema + */ + public function getLabel($name = null) + { + return 1 == func_num_args() ? $this->widget->getLabel($name) : $this->widget->getLabel(); + } + + /** + * @see sfWidgetFormSchema + */ + public function setHelps(array $helps) + { + $this->widget->setHelps($helps); + + return $this; + } + + /** + * @see sfWidgetFormSchema + */ + public function getHelps() + { + return $this->widget->getHelps(); + } + + /** + * @see sfWidgetFormSchema + */ + public function setHelp($name, $help) + { + $this->widget->setHelp($name, $help); + + return $this; + } + + /** + * @see sfWidgetFormSchema + */ + public function getHelp($name) + { + return $this->widget->getHelp($name); + } + + /** + * Gets the stylesheet paths associated with the widget. + * + * @return array An array of stylesheet paths + */ + public function getStylesheets() + { + return $this->widget->getStylesheets(); + } + + /** + * Gets the JavaScript paths associated with the widget. + * + * @return array An array of JavaScript paths + */ + public function getJavaScripts() + { + return $this->widget->getJavaScripts(); + } + + /** + * @see sfWidgetFormSchema + */ + public function needsMultipartForm() + { + return $this->widget->needsMultipartForm(); + } + + /** + * @see sfWidgetFormSchema + */ + public function renderField($name, $value = null, $attributes = array(), $errors = array()) + { + return $this->widget->renderField($name, $value, $attributes, $errors); + } + + /** + * @see sfWidgetFormSchemaFormatter + */ + public function generateLabel($name) + { + return $this->widget->getFormFormatter()->generateLabel($name); + } + + /** + * @see sfWidgetFormSchemaFormatter + */ + public function generateLabelName($name) + { + return $this->widget->getFormFormatter()->generateLabelName($name); + } + + /** + * @see sfWidgetFormSchema + */ + public function generateName($name) + { + return $this->widget->generateName($name); + } + + /** + * @see sfWidgetFormSchema + */ + public function getParent() + { + return $this->widget->getParent(); + } + + /** + * @see sfWidgetFormSchema + */ + public function setParent(sfWidgetFormSchema $parent = null) + { + $this->widget->setParent($parent); + + return $this; + } + + /** + * @see sfWidgetFormSchema + */ + public function getFields() + { + return $this->widget->getFields(); + } + + /** + * @see sfWidgetFormSchema + */ + public function getPositions() + { + return $this->widget->getPositions(); + } + + /** + * @see sfWidgetFormSchema + */ + public function setPositions(array $positions) + { + $this->widget->setPositions($positions); + + return $this; + } + + /** + * @see sfWidgetFormSchema + */ + public function moveField($field, $action, $pivot = null) + { + return $this->widget->moveField($field, $action, $pivot); + } + + /** + * @see sfWidgetFormSchema + */ + public function offsetExists($name) + { + return isset($this->widget[$name]); + } + + /** + * @see sfWidgetFormSchema + */ + public function offsetGet($name) + { + return $this->widget[$name]; + } + + /** + * @see sfWidgetFormSchema + */ + public function offsetSet($name, $widget) + { + $this->widget[$name] = $widget; + } + + /** + * @see sfWidgetFormSchema + */ + public function offsetUnset($name) + { + unset($this->widget[$name]); + } + + public function __clone() + { + $this->widget = clone $this->widget; + } +} diff --git a/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormSchemaForEach.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormSchemaForEach.class.php.svn-base new file mode 100644 index 0000000..82fafac --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormSchemaForEach.class.php.svn-base @@ -0,0 +1,36 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormSchemaForEach duplicates a given widget multiple times in a widget schema. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfWidgetFormSchemaForEach extends sfWidgetFormSchema +{ + /** + * Constructor. + * + * @param sfWidgetFormSchema $widget An sfWidgetFormSchema instance + * @param integer $count The number of times to duplicate the widget + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * @param array $labels An array of HTML labels + * + * @see sfWidgetFormSchema + */ + public function __construct(sfWidgetFormSchema $widget, $count, $options = array(), $attributes = array(), $labels = array()) + { + parent::__construct(array_fill(0, $count, $widget), $options, $attributes, $labels); + } +} diff --git a/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormSchemaFormatter.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormSchemaFormatter.class.php.svn-base new file mode 100644 index 0000000..c282ecc --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormSchemaFormatter.class.php.svn-base @@ -0,0 +1,346 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormSchemaFormatter allows to format a form schema with HTML formats. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id$ + */ +abstract class sfWidgetFormSchemaFormatter +{ + protected static + $translationCallable = null; + + protected + $rowFormat = '', + $helpFormat = '%help%', + $errorRowFormat = '%errors%', + $errorListFormatInARow = "
      \n%errors%
    \n", + $errorRowFormatInARow = "
  • %error%
  • \n", + $namedErrorRowFormatInARow = "
  • %name%: %error%
  • \n", + $decoratorFormat = '', + $widgetSchema = null, + $translationCatalogue = null; + + /** + * Constructor + * + * @param sfWidgetFormSchema $widgetSchema + */ + public function __construct(sfWidgetFormSchema $widgetSchema) + { + $this->setWidgetSchema($widgetSchema); + } + + public function formatRow($label, $field, $errors = array(), $help = '', $hiddenFields = null) + { + return strtr($this->getRowFormat(), array( + '%label%' => $label, + '%field%' => $field, + '%error%' => $this->formatErrorsForRow($errors), + '%help%' => $this->formatHelp($help), + '%hidden_fields%' => null === $hiddenFields ? '%hidden_fields%' : $hiddenFields, + )); + } + + /** + * Translates a string using an i18n callable, if it has been provided + * + * @param mixed $subject The subject to translate + * @param array $parameters Additional parameters to pass back to the callable + * @return string + */ + public function translate($subject, $parameters = array()) + { + if (false === $subject) + { + return false; + } + + if (null === self::$translationCallable) + { + // replace object with strings + foreach ($parameters as $key => $value) + { + if (is_object($value) && method_exists($value, '__toString')) + { + $parameters[$key] = $value->__toString(); + } + } + + return strtr($subject, $parameters); + } + + $catalogue = $this->getTranslationCatalogue(); + + if (self::$translationCallable instanceof sfCallable) + { + return self::$translationCallable->call($subject, $parameters, $catalogue); + } + + return call_user_func(self::$translationCallable, $subject, $parameters, $catalogue); + } + + /** + * Returns the current i18n callable + * + * @return mixed + */ + static public function getTranslationCallable() + { + return self::$translationCallable; + } + + /** + * Sets a callable which aims to translate form labels, errors and help messages + * + * @param mixed $callable + * + * @throws InvalidArgumentException if an invalid php callable or sfCallable has been provided + */ + static public function setTranslationCallable($callable) + { + if (!$callable instanceof sfCallable && !is_callable($callable)) + { + throw new InvalidArgumentException('Provided i18n callable should be either an instance of sfCallable or a valid PHP callable'); + } + + self::$translationCallable = $callable; + } + + public function formatHelp($help) + { + if (!$help) + { + return ''; + } + + return strtr($this->getHelpFormat(), array('%help%' => $this->translate($help))); + } + + public function formatErrorRow($errors) + { + if (null === $errors || !$errors) + { + return ''; + } + + return strtr($this->getErrorRowFormat(), array('%errors%' => $this->formatErrorsForRow($errors))); + } + + public function formatErrorsForRow($errors) + { + if (null === $errors || !$errors) + { + return ''; + } + + if (!is_array($errors)) + { + $errors = array($errors); + } + + return strtr($this->getErrorListFormatInARow(), array('%errors%' => implode('', $this->unnestErrors($errors)))); + } + + /** + * Generates a label for the given field name. + * + * @param string $name The field name + * @param array $attributes Optional html attributes for the label tag + * + * @return string The label tag + */ + public function generateLabel($name, $attributes = array()) + { + $labelName = $this->generateLabelName($name); + + if (false === $labelName) + { + return ''; + } + + if (!isset($attributes['for'])) + { + $attributes['for'] = $this->widgetSchema->generateId($this->widgetSchema->generateName($name)); + } + + return $this->widgetSchema->renderContentTag('label', $labelName, $attributes); + } + + /** + * Generates the label name for the given field name. + * + * @param string $name The field name + * + * @return string The label name + */ + public function generateLabelName($name) + { + $label = $this->widgetSchema->getLabel($name); + + if (!$label && false !== $label) + { + $label = str_replace('_', ' ', ucfirst('_id' == substr($name, -3) ? substr($name, 0, -3) : $name)); + } + + return $this->translate($label); + } + + /** + * Get i18n catalogue name + * + * @return string + */ + public function getTranslationCatalogue() + { + return $this->translationCatalogue; + } + + /** + * Set an i18n catalogue name + * + * @param string $catalogue + * + * @throws InvalidArgumentException when the catalogue is not a string + */ + public function setTranslationCatalogue($catalogue) + { + if (!is_string($catalogue)) + { + throw new InvalidArgumentException('Catalogue name must be a string'); + } + + $this->translationCatalogue = $catalogue; + } + + protected function unnestErrors($errors, $prefix = '') + { + $newErrors = array(); + + foreach ($errors as $name => $error) + { + if ($error instanceof ArrayAccess || is_array($error)) + { + $newErrors = array_merge($newErrors, $this->unnestErrors($error, ($prefix ? $prefix.' > ' : '').$name)); + } + else + { + if ($error instanceof sfValidatorError) + { + $err = $this->translate($error->getMessageFormat(), $error->getArguments()); + } + else + { + $err = $this->translate($error); + } + + if (!is_integer($name)) + { + $newErrors[] = strtr($this->getNamedErrorRowFormatInARow(), array('%error%' => $err, '%name%' => ($prefix ? $prefix.' > ' : '').$name)); + } + else + { + $newErrors[] = strtr($this->getErrorRowFormatInARow(), array('%error%' => $err)); + } + } + } + + return $newErrors; + } + + public function setRowFormat($format) + { + $this->rowFormat = $format; + } + + public function getRowFormat() + { + return $this->rowFormat; + } + + public function setErrorRowFormat($format) + { + $this->errorRowFormat = $format; + } + + public function getErrorRowFormat() + { + return $this->errorRowFormat; + } + + public function setErrorListFormatInARow($format) + { + $this->errorListFormatInARow = $format; + } + + public function getErrorListFormatInARow() + { + return $this->errorListFormatInARow; + } + + public function setErrorRowFormatInARow($format) + { + $this->errorRowFormatInARow = $format; + } + + public function getErrorRowFormatInARow() + { + return $this->errorRowFormatInARow; + } + + public function setNamedErrorRowFormatInARow($format) + { + $this->namedErrorRowFormatInARow = $format; + } + + public function getNamedErrorRowFormatInARow() + { + return $this->namedErrorRowFormatInARow; + } + + public function setDecoratorFormat($format) + { + $this->decoratorFormat = $format; + } + + public function getDecoratorFormat() + { + return $this->decoratorFormat; + } + + public function setHelpFormat($format) + { + $this->helpFormat = $format; + } + + public function getHelpFormat() + { + return $this->helpFormat; + } + + /** + * Sets the widget schema associated with this formatter instance. + * + * @param sfWidgetFormSchema $widgetSchema A sfWidgetFormSchema instance + */ + public function setWidgetSchema(sfWidgetFormSchema $widgetSchema) + { + $this->widgetSchema = $widgetSchema; + } + + public function getWidgetSchema() + { + return $this->widgetSchema; + } +} diff --git a/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormSchemaFormatterList.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormSchemaFormatterList.class.php.svn-base new file mode 100644 index 0000000..069c9e5 --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormSchemaFormatterList.class.php.svn-base @@ -0,0 +1,26 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfWidgetFormSchemaFormatterList extends sfWidgetFormSchemaFormatter +{ + protected + $rowFormat = "
  • \n %error%%label%\n %field%%help%\n%hidden_fields%
  • \n", + $errorRowFormat = "
  • \n%errors%
  • \n", + $helpFormat = '
    %help%', + $decoratorFormat = "
      \n %content%
    "; +} diff --git a/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormSchemaFormatterTable.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormSchemaFormatterTable.class.php.svn-base new file mode 100644 index 0000000..67dc047 --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormSchemaFormatterTable.class.php.svn-base @@ -0,0 +1,26 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfWidgetFormSchemaFormatterTable extends sfWidgetFormSchemaFormatter +{ + protected + $rowFormat = "\n %label%\n %error%%field%%help%%hidden_fields%\n\n", + $errorRowFormat = "\n%errors%\n", + $helpFormat = '
    %help%', + $decoratorFormat = "\n %content%
    "; +} diff --git a/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormSelect.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormSelect.class.php.svn-base new file mode 100644 index 0000000..1b769bf --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormSelect.class.php.svn-base @@ -0,0 +1,114 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormSelect represents a select HTML tag. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfWidgetFormSelect extends sfWidgetFormChoiceBase +{ + /** + * Constructor. + * + * Available options: + * + * * choices: An array of possible choices (required) + * * multiple: true if the select tag must allow multiple selections + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetFormChoiceBase + */ + protected function configure($options = array(), $attributes = array()) + { + parent::configure($options, $attributes); + + $this->addOption('multiple', false); + } + + /** + * Renders the widget. + * + * @param string $name The element name + * @param string $value The value selected in this widget + * @param array $attributes An array of HTML attributes to be merged with the default HTML attributes + * @param array $errors An array of errors for the field + * + * @return string An HTML tag string + * + * @see sfWidgetForm + */ + public function render($name, $value = null, $attributes = array(), $errors = array()) + { + if ($this->getOption('multiple')) + { + $attributes['multiple'] = 'multiple'; + + if ('[]' != substr($name, -2)) + { + $name .= '[]'; + } + } + + $choices = $this->getChoices(); + + return $this->renderContentTag('select', "\n".implode("\n", $this->getOptionsForSelect($value, $choices))."\n", array_merge(array('name' => $name), $attributes)); + } + + /** + * Returns an array of option tags for the given choices + * + * @param string $value The selected value + * @param array $choices An array of choices + * + * @return array An array of option tags + */ + protected function getOptionsForSelect($value, $choices) + { + $mainAttributes = $this->attributes; + $this->attributes = array(); + + if (!is_array($value)) + { + $value = array($value); + } + + $value = array_map('strval', array_values($value)); + $value_set = array_flip($value); + + $options = array(); + foreach ($choices as $key => $option) + { + if (is_array($option)) + { + $options[] = $this->renderContentTag('optgroup', implode("\n", $this->getOptionsForSelect($value, $option)), array('label' => self::escapeOnce($key))); + } + else + { + $attributes = array('value' => self::escapeOnce($key)); + if (isset($value_set[strval($key)])) + { + $attributes['selected'] = 'selected'; + } + + $options[] = $this->renderContentTag('option', self::escapeOnce($option), $attributes); + } + } + + $this->attributes = $mainAttributes; + + return $options; + } +} diff --git a/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormSelectCheckbox.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormSelectCheckbox.class.php.svn-base new file mode 100644 index 0000000..864781b --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormSelectCheckbox.class.php.svn-base @@ -0,0 +1,129 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormSelectCheckbox represents an array of checkboxes. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfWidgetFormSelectCheckbox extends sfWidgetFormChoiceBase +{ + /** + * Constructor. + * + * Available options: + * + * * choices: An array of possible choices (required) + * * label_separator: The separator to use between the input checkbox and the label + * * class: The class to use for the main
      tag + * * separator: The separator to use between each input checkbox + * * formatter: A callable to call to format the checkbox choices + * The formatter callable receives the widget and the array of inputs as arguments + * * template: The template to use when grouping option in groups (%group% %options%) + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetFormChoiceBase + */ + protected function configure($options = array(), $attributes = array()) + { + parent::configure($options, $attributes); + + $this->addOption('class', 'checkbox_list'); + $this->addOption('label_separator', ' '); + $this->addOption('separator', "\n"); + $this->addOption('formatter', array($this, 'formatter')); + $this->addOption('template', '%group% %options%'); + } + + /** + * Renders the widget. + * + * @param string $name The element name + * @param string $value The value selected in this widget + * @param array $attributes An array of HTML attributes to be merged with the default HTML attributes + * @param array $errors An array of errors for the field + * + * @return string An HTML tag string + * + * @see sfWidgetForm + */ + public function render($name, $value = null, $attributes = array(), $errors = array()) + { + if ('[]' != substr($name, -2)) + { + $name .= '[]'; + } + + if (null === $value) + { + $value = array(); + } + + $choices = $this->getChoices(); + + // with groups? + if (count($choices) && is_array(current($choices))) + { + $parts = array(); + foreach ($choices as $key => $option) + { + $parts[] = strtr($this->getOption('template'), array('%group%' => $key, '%options%' => $this->formatChoices($name, $value, $option, $attributes))); + } + + return implode("\n", $parts); + } + else + { + return $this->formatChoices($name, $value, $choices, $attributes); + } + } + + protected function formatChoices($name, $value, $choices, $attributes) + { + $inputs = array(); + foreach ($choices as $key => $option) + { + $baseAttributes = array( + 'name' => $name, + 'type' => 'checkbox', + 'value' => self::escapeOnce($key), + 'id' => $id = $this->generateId($name, self::escapeOnce($key)), + ); + + if ((is_array($value) && in_array(strval($key), $value)) || (is_string($value) && strval($key) == strval($value))) + { + $baseAttributes['checked'] = 'checked'; + } + + $inputs[$id] = array( + 'input' => $this->renderTag('input', array_merge($baseAttributes, $attributes)), + 'label' => $this->renderContentTag('label', self::escapeOnce($option), array('for' => $id)), + ); + } + + return call_user_func($this->getOption('formatter'), $this, $inputs); + } + + public function formatter($widget, $inputs) + { + $rows = array(); + foreach ($inputs as $input) + { + $rows[] = $this->renderContentTag('li', $input['input'].$this->getOption('label_separator').$input['label']); + } + + return !$rows ? '' : $this->renderContentTag('ul', implode($this->getOption('separator'), $rows), array('class' => $this->getOption('class'))); + } +} diff --git a/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormSelectMany.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormSelectMany.class.php.svn-base new file mode 100644 index 0000000..9a34137 --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormSelectMany.class.php.svn-base @@ -0,0 +1,35 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormSelectMany represents a select HTML tag where you can select multiple values. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfWidgetFormSelectMany extends sfWidgetFormSelect +{ + /** + * Configures the current widget. + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetFormSelect + */ + protected function configure($options = array(), $attributes = array()) + { + parent::configure($options, $attributes); + + $this->setOption('multiple', true); + } +} diff --git a/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormSelectRadio.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormSelectRadio.class.php.svn-base new file mode 100644 index 0000000..5bcc83a --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormSelectRadio.class.php.svn-base @@ -0,0 +1,124 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormSelectRadio represents radio HTML tags. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfWidgetFormSelectRadio extends sfWidgetFormChoiceBase +{ + /** + * Constructor. + * + * Available options: + * + * * choices: An array of possible choices (required) + * * label_separator: The separator to use between the input radio and the label + * * separator: The separator to use between each input radio + * * class: The class to use for the main
        tag + * * formatter: A callable to call to format the radio choices + * The formatter callable receives the widget and the array of inputs as arguments + * * template: The template to use when grouping option in groups (%group% %options%) + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetFormChoiceBase + */ + protected function configure($options = array(), $attributes = array()) + { + parent::configure($options, $attributes); + + $this->addOption('class', 'radio_list'); + $this->addOption('label_separator', ' '); + $this->addOption('separator', "\n"); + $this->addOption('formatter', array($this, 'formatter')); + $this->addOption('template', '%group% %options%'); + } + + /** + * Renders the widget. + * + * @param string $name The element name + * @param string $value The value selected in this widget + * @param array $attributes An array of HTML attributes to be merged with the default HTML attributes + * @param array $errors An array of errors for the field + * + * @return string An HTML tag string + * + * @see sfWidgetForm + */ + public function render($name, $value = null, $attributes = array(), $errors = array()) + { + if ('[]' != substr($name, -2)) + { + $name .= '[]'; + } + + $choices = $this->getChoices(); + + // with groups? + if (count($choices) && is_array(next($choices))) + { + $parts = array(); + foreach ($choices as $key => $option) + { + $parts[] = strtr($this->getOption('template'), array('%group%' => $key, '%options%' => $this->formatChoices($name, $value, $option, $attributes))); + } + + return implode("\n", $parts); + } + else + { + return $this->formatChoices($name, $value, $choices, $attributes); + } + } + + protected function formatChoices($name, $value, $choices, $attributes) + { + $inputs = array(); + foreach ($choices as $key => $option) + { + $baseAttributes = array( + 'name' => substr($name, 0, -2), + 'type' => 'radio', + 'value' => self::escapeOnce($key), + 'id' => $id = $this->generateId($name, self::escapeOnce($key)), + ); + + if (strval($key) == strval($value === false ? 0 : $value)) + { + $baseAttributes['checked'] = 'checked'; + } + + $inputs[$id] = array( + 'input' => $this->renderTag('input', array_merge($baseAttributes, $attributes)), + 'label' => $this->renderContentTag('label', self::escapeOnce($option), array('for' => $id)), + ); + } + + return call_user_func($this->getOption('formatter'), $this, $inputs); + } + + public function formatter($widget, $inputs) + { + $rows = array(); + foreach ($inputs as $input) + { + $rows[] = $this->renderContentTag('li', $input['input'].$this->getOption('label_separator').$input['label']); + } + + return !$rows ? '' : $this->renderContentTag('ul', implode($this->getOption('separator'), $rows), array('class' => $this->getOption('class'))); + } +} diff --git a/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormTextarea.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormTextarea.class.php.svn-base new file mode 100644 index 0000000..89c150a --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormTextarea.class.php.svn-base @@ -0,0 +1,51 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormTextarea represents a textarea HTML tag. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfWidgetFormTextarea extends sfWidgetForm +{ + /** + * Configures the current widget. + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetForm + */ + protected function configure($options = array(), $attributes = array()) + { + $this->setAttribute('rows', 4); + $this->setAttribute('cols', 30); + } + + /** + * Renders the widget. + * + * @param string $name The element name + * @param string $value The value displayed in this widget + * @param array $attributes An array of HTML attributes to be merged with the default HTML attributes + * @param array $errors An array of errors for the field + * + * @return string An HTML tag string + * + * @see sfWidgetForm + */ + public function render($name, $value = null, $attributes = array(), $errors = array()) + { + return $this->renderContentTag('textarea', self::escapeOnce($value), array_merge(array('name' => $name), $attributes)); + } +} diff --git a/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormTime.class.php.svn-base b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormTime.class.php.svn-base new file mode 100644 index 0000000..d68f375 --- /dev/null +++ b/lib/vendor/symfony/lib/widget/.svn/text-base/sfWidgetFormTime.class.php.svn-base @@ -0,0 +1,107 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormTime represents a time widget. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfWidgetFormTime extends sfWidgetForm +{ + /** + * Constructor. + * + * Available options: + * + * * format: The time format string (%hour%:%minute%:%second%) + * * format_without_seconds: The time format string without seconds (%hour%:%minute%) + * * with_seconds: Whether to include a select for seconds (false by default) + * * hours: An array of hours for the hour select tag (optional) + * * minutes: An array of minutes for the minute select tag (optional) + * * seconds: An array of seconds for the second select tag (optional) + * * can_be_empty: Whether the widget accept an empty value (true by default) + * * empty_values: An array of values to use for the empty value (empty string for hours, minutes, and seconds by default) + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetForm + */ + protected function configure($options = array(), $attributes = array()) + { + $this->addOption('format', '%hour%:%minute%:%second%'); + $this->addOption('format_without_seconds', '%hour%:%minute%'); + $this->addOption('with_seconds', false); + $this->addOption('hours', parent::generateTwoCharsRange(0, 23)); + $this->addOption('minutes', parent::generateTwoCharsRange(0, 59)); + $this->addOption('seconds', parent::generateTwoCharsRange(0, 59)); + + $this->addOption('can_be_empty', true); + $this->addOption('empty_values', array('hour' => '', 'minute' => '', 'second' => '')); + } + + /** + * Renders the widget. + * + * @param string $name The element name + * @param string $value The time displayed in this widget + * @param array $attributes An array of HTML attributes to be merged with the default HTML attributes + * @param array $errors An array of errors for the field + * + * @return string An HTML tag string + * + * @see sfWidgetForm + */ + public function render($name, $value = null, $attributes = array(), $errors = array()) + { + // convert value to an array + $default = array('hour' => null, 'minute' => null, 'second' => null); + if (is_array($value)) + { + $value = array_merge($default, $value); + } + else + { + $value = ctype_digit($value) ? (integer) $value : strtotime($value); + if (false === $value) + { + $value = $default; + } + else + { + // int cast required to get rid of leading zeros + $value = array('hour' => (int) date('H', $value), 'minute' => (int) date('i', $value), 'second' => (int) date('s', $value)); + } + } + + $time = array(); + $emptyValues = $this->getOption('empty_values'); + + // hours + $widget = new sfWidgetFormSelect(array('choices' => $this->getOption('can_be_empty') ? array('' => $emptyValues['hour']) + $this->getOption('hours') : $this->getOption('hours'), 'id_format' => $this->getOption('id_format')), array_merge($this->attributes, $attributes)); + $time['%hour%'] = $widget->render($name.'[hour]', $value['hour']); + + // minutes + $widget = new sfWidgetFormSelect(array('choices' => $this->getOption('can_be_empty') ? array('' => $emptyValues['minute']) + $this->getOption('minutes') : $this->getOption('minutes'), 'id_format' => $this->getOption('id_format')), array_merge($this->attributes, $attributes)); + $time['%minute%'] = $widget->render($name.'[minute]', $value['minute']); + + if ($this->getOption('with_seconds')) + { + // seconds + $widget = new sfWidgetFormSelect(array('choices' => $this->getOption('can_be_empty') ? array('' => $emptyValues['second']) + $this->getOption('seconds') : $this->getOption('seconds'), 'id_format' => $this->getOption('id_format')), array_merge($this->attributes, $attributes)); + $time['%second%'] = $widget->render($name.'[second]', $value['second']); + } + + return strtr($this->getOption('with_seconds') ? $this->getOption('format') : $this->getOption('format_without_seconds'), $time); + } +} diff --git a/lib/vendor/symfony/lib/widget/i18n/.svn/all-wcprops b/lib/vendor/symfony/lib/widget/i18n/.svn/all-wcprops new file mode 100644 index 0000000..94fe951 --- /dev/null +++ b/lib/vendor/symfony/lib/widget/i18n/.svn/all-wcprops @@ -0,0 +1,47 @@ +K 25 +svn:wc:ra_dav:version-url +V 44 +/!svn/ver/23922/branches/1.4/lib/widget/i18n +END +sfWidgetFormI18nChoiceCurrency.class.php +K 25 +svn:wc:ra_dav:version-url +V 85 +/!svn/ver/23881/branches/1.4/lib/widget/i18n/sfWidgetFormI18nChoiceCurrency.class.php +END +sfWidgetFormI18nChoiceTimezone.class.php +K 25 +svn:wc:ra_dav:version-url +V 85 +/!svn/ver/23881/branches/1.4/lib/widget/i18n/sfWidgetFormI18nChoiceTimezone.class.php +END +sfWidgetFormI18nDateTime.class.php +K 25 +svn:wc:ra_dav:version-url +V 79 +/!svn/ver/23881/branches/1.4/lib/widget/i18n/sfWidgetFormI18nDateTime.class.php +END +sfWidgetFormI18nDate.class.php +K 25 +svn:wc:ra_dav:version-url +V 75 +/!svn/ver/23881/branches/1.4/lib/widget/i18n/sfWidgetFormI18nDate.class.php +END +sfWidgetFormI18nChoiceCountry.class.php +K 25 +svn:wc:ra_dav:version-url +V 84 +/!svn/ver/23881/branches/1.4/lib/widget/i18n/sfWidgetFormI18nChoiceCountry.class.php +END +sfWidgetFormI18nChoiceLanguage.class.php +K 25 +svn:wc:ra_dav:version-url +V 85 +/!svn/ver/23881/branches/1.4/lib/widget/i18n/sfWidgetFormI18nChoiceLanguage.class.php +END +sfWidgetFormI18nTime.class.php +K 25 +svn:wc:ra_dav:version-url +V 75 +/!svn/ver/23881/branches/1.4/lib/widget/i18n/sfWidgetFormI18nTime.class.php +END diff --git a/lib/vendor/symfony/lib/widget/i18n/.svn/entries b/lib/vendor/symfony/lib/widget/i18n/.svn/entries new file mode 100644 index 0000000..32fbf1e --- /dev/null +++ b/lib/vendor/symfony/lib/widget/i18n/.svn/entries @@ -0,0 +1,266 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/lib/widget/i18n +http://svn.symfony-project.com + + + +2009-11-14T14:58:38.254908Z +23922 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +sfWidgetFormI18nChoiceCurrency.class.php +file + + + + +2012-05-10T18:41:01.505550Z +8b21e6adbd942271cc0832d5c055fb4e +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +1913 + +sfWidgetFormI18nChoiceTimezone.class.php +file + + + + +2012-05-10T18:41:01.517551Z +fdde09117b3908aa0794a1636f230fbc +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +1766 + +sfWidgetFormI18nDateTime.class.php +file + + + + +2012-05-10T18:41:01.517551Z +94bd5465f2626e98f4abdcf0a7ed5a0f +2009-01-30T00:23:45.844934Z +15086 +FabianLange +has-props + + + + + + + + + + + + + + + + + + + + +1901 + +sfWidgetFormI18nDate.class.php +file + + + + +2012-05-10T18:41:01.613547Z +aea964600b56546abd1d5cc43210a48e +2008-05-19T08:13:51.050591Z +9046 +FabianLange +has-props + + + + + + + + + + + + + + + + + + + + +2742 + +sfWidgetFormI18nChoiceCountry.class.php +file + + + + +2012-05-10T18:41:01.613547Z +bd1ca5c12c2f33e541d089a03d498340 +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +1895 + +sfWidgetFormI18nChoiceLanguage.class.php +file + + + + +2012-05-10T18:41:01.613547Z +fe1c3feade5d010cd6e23b461d08667e +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +1889 + +sfWidgetFormI18nTime.class.php +file + + + + +2012-05-10T18:41:01.613547Z +78f94e7bc5c8e78cfdc2c5e16afab930 +2008-05-19T08:13:51.050591Z +9046 +FabianLange +has-props + + + + + + + + + + + + + + + + + + + + +2251 + diff --git a/lib/vendor/symfony/lib/widget/i18n/.svn/prop-base/sfWidgetFormI18nChoiceCountry.class.php.svn-base b/lib/vendor/symfony/lib/widget/i18n/.svn/prop-base/sfWidgetFormI18nChoiceCountry.class.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/lib/widget/i18n/.svn/prop-base/sfWidgetFormI18nChoiceCountry.class.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/lib/widget/i18n/.svn/prop-base/sfWidgetFormI18nChoiceCurrency.class.php.svn-base b/lib/vendor/symfony/lib/widget/i18n/.svn/prop-base/sfWidgetFormI18nChoiceCurrency.class.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/lib/widget/i18n/.svn/prop-base/sfWidgetFormI18nChoiceCurrency.class.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/lib/widget/i18n/.svn/prop-base/sfWidgetFormI18nChoiceLanguage.class.php.svn-base b/lib/vendor/symfony/lib/widget/i18n/.svn/prop-base/sfWidgetFormI18nChoiceLanguage.class.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/lib/widget/i18n/.svn/prop-base/sfWidgetFormI18nChoiceLanguage.class.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/lib/widget/i18n/.svn/prop-base/sfWidgetFormI18nChoiceTimezone.class.php.svn-base b/lib/vendor/symfony/lib/widget/i18n/.svn/prop-base/sfWidgetFormI18nChoiceTimezone.class.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/lib/widget/i18n/.svn/prop-base/sfWidgetFormI18nChoiceTimezone.class.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/lib/widget/i18n/.svn/prop-base/sfWidgetFormI18nDate.class.php.svn-base b/lib/vendor/symfony/lib/widget/i18n/.svn/prop-base/sfWidgetFormI18nDate.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/widget/i18n/.svn/prop-base/sfWidgetFormI18nDate.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/widget/i18n/.svn/prop-base/sfWidgetFormI18nDateTime.class.php.svn-base b/lib/vendor/symfony/lib/widget/i18n/.svn/prop-base/sfWidgetFormI18nDateTime.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/widget/i18n/.svn/prop-base/sfWidgetFormI18nDateTime.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/widget/i18n/.svn/prop-base/sfWidgetFormI18nTime.class.php.svn-base b/lib/vendor/symfony/lib/widget/i18n/.svn/prop-base/sfWidgetFormI18nTime.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/lib/widget/i18n/.svn/prop-base/sfWidgetFormI18nTime.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/lib/widget/i18n/.svn/text-base/sfWidgetFormI18nChoiceCountry.class.php.svn-base b/lib/vendor/symfony/lib/widget/i18n/.svn/text-base/sfWidgetFormI18nChoiceCountry.class.php.svn-base new file mode 100644 index 0000000..1735530 --- /dev/null +++ b/lib/vendor/symfony/lib/widget/i18n/.svn/text-base/sfWidgetFormI18nChoiceCountry.class.php.svn-base @@ -0,0 +1,57 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormI18nChoiceCountry represents a country choice widget. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfWidgetFormI18nChoiceCountry extends sfWidgetFormChoice +{ + /** + * Constructor. + * + * Available options: + * + * * culture: The culture to use for internationalized strings + * * countries: An array of country codes to use (ISO 3166) + * * add_empty: Whether to add a first empty value or not (false by default) + * If the option is not a Boolean, the value will be used as the text value + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetFormChoice + */ + protected function configure($options = array(), $attributes = array()) + { + parent::configure($options, $attributes); + + $this->addOption('culture'); + $this->addOption('countries'); + $this->addOption('add_empty', false); + + // populate choices with all countries + $culture = isset($options['culture']) ? $options['culture'] : 'en'; + + $countries = sfCultureInfo::getInstance($culture)->getCountries(isset($options['countries']) ? $options['countries'] : null); + + $addEmpty = isset($options['add_empty']) ? $options['add_empty'] : false; + if (false !== $addEmpty) + { + $countries = array_merge(array('' => true === $addEmpty ? '' : $addEmpty), $countries); + } + + $this->setOption('choices', $countries); + } +} diff --git a/lib/vendor/symfony/lib/widget/i18n/.svn/text-base/sfWidgetFormI18nChoiceCurrency.class.php.svn-base b/lib/vendor/symfony/lib/widget/i18n/.svn/text-base/sfWidgetFormI18nChoiceCurrency.class.php.svn-base new file mode 100644 index 0000000..0887acc --- /dev/null +++ b/lib/vendor/symfony/lib/widget/i18n/.svn/text-base/sfWidgetFormI18nChoiceCurrency.class.php.svn-base @@ -0,0 +1,57 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormI18nChoiceCurrency represents a currency choice widget. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfWidgetFormI18nChoiceCurrency extends sfWidgetFormChoice +{ + /** + * Constructor. + * + * Available options: + * + * * culture: The culture to use for internationalized strings + * * currencies: An array of currency codes to use (ISO 4217) + * * add_empty: Whether to add a first empty value or not (false by default) + * If the option is not a Boolean, the value will be used as the text value + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetFormChoice + */ + protected function configure($options = array(), $attributes = array()) + { + parent::configure($options, $attributes); + + $this->addOption('culture'); + $this->addOption('currencies'); + $this->addOption('add_empty', false); + + // populate choices with all currencies + $culture = isset($options['culture']) ? $options['culture'] : 'en'; + + $currencies = sfCultureInfo::getInstance($culture)->getCurrencies(isset($options['currencies']) ? $options['currencies'] : null); + + $addEmpty = isset($options['add_empty']) ? $options['add_empty'] : false; + if (false !== $addEmpty) + { + $currencies = array_merge(array('' => true === $addEmpty ? '' : $addEmpty), $currencies); + } + + $this->setOption('choices', $currencies); + } +} diff --git a/lib/vendor/symfony/lib/widget/i18n/.svn/text-base/sfWidgetFormI18nChoiceLanguage.class.php.svn-base b/lib/vendor/symfony/lib/widget/i18n/.svn/text-base/sfWidgetFormI18nChoiceLanguage.class.php.svn-base new file mode 100644 index 0000000..9053097 --- /dev/null +++ b/lib/vendor/symfony/lib/widget/i18n/.svn/text-base/sfWidgetFormI18nChoiceLanguage.class.php.svn-base @@ -0,0 +1,57 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormI18nChoiceLanguage represents a language choice widget. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfWidgetFormI18nChoiceLanguage extends sfWidgetFormChoice +{ + /** + * Constructor. + * + * Available options: + * + * * culture: The culture to use for internationalized strings + * * languages: An array of language codes to use + * * add_empty: Whether to add a first empty value or not (false by default) + * If the option is not a Boolean, the value will be used as the text value + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetFormChoice + */ + protected function configure($options = array(), $attributes = array()) + { + parent::configure($options, $attributes); + + $this->addOption('culture'); + $this->addOption('languages'); + $this->addOption('add_empty', false); + + // populate choices with all languages + $culture = isset($options['culture']) ? $options['culture'] : 'en'; + + $languages = sfCultureInfo::getInstance($culture)->getLanguages(isset($options['languages']) ? $options['languages'] : null); + + $addEmpty = isset($options['add_empty']) ? $options['add_empty'] : false; + if (false !== $addEmpty) + { + $languages = array_merge(array('' => true === $addEmpty ? '' : $addEmpty), $languages); + } + + $this->setOption('choices', $languages); + } +} diff --git a/lib/vendor/symfony/lib/widget/i18n/.svn/text-base/sfWidgetFormI18nChoiceTimezone.class.php.svn-base b/lib/vendor/symfony/lib/widget/i18n/.svn/text-base/sfWidgetFormI18nChoiceTimezone.class.php.svn-base new file mode 100644 index 0000000..d28dbbb --- /dev/null +++ b/lib/vendor/symfony/lib/widget/i18n/.svn/text-base/sfWidgetFormI18nChoiceTimezone.class.php.svn-base @@ -0,0 +1,54 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormI18nChoiceTimezone represents a timezone choice widget. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfWidgetFormI18nChoiceTimezone extends sfWidgetFormChoice +{ + /** + * Constructor. + * + * Available options: + * + * * culture: The culture to use for internationalized strings + * * add_empty: Whether to add a first empty value or not (false by default) + * If the option is not a Boolean, the value will be used as the text value + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetFormChoice + */ + protected function configure($options = array(), $attributes = array()) + { + parent::configure($options, $attributes); + + $this->addOption('culture'); + $this->addOption('add_empty', false); + + $culture = isset($options['culture']) ? $options['culture'] : 'en'; + $timezones = array_keys(sfCultureInfo::getInstance($culture)->getTimeZones()); + $timezones = array_combine($timezones, $timezones); + + $addEmpty = isset($options['add_empty']) ? $options['add_empty'] : false; + if (false !== $addEmpty) + { + $timezones = array_merge(array('' => true === $addEmpty ? '' : $addEmpty), $timezones); + } + + $this->setOption('choices', $timezones); + } +} diff --git a/lib/vendor/symfony/lib/widget/i18n/.svn/text-base/sfWidgetFormI18nDate.class.php.svn-base b/lib/vendor/symfony/lib/widget/i18n/.svn/text-base/sfWidgetFormI18nDate.class.php.svn-base new file mode 100644 index 0000000..3c74c71 --- /dev/null +++ b/lib/vendor/symfony/lib/widget/i18n/.svn/text-base/sfWidgetFormI18nDate.class.php.svn-base @@ -0,0 +1,81 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormI18nDate represents a date widget. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfWidgetFormI18nDate extends sfWidgetFormDate +{ + /** + * Constructor. + * + * Available options: + * + * * culture: The culture to use for internationalized strings (required) + * * month_format: The month format (name - default, short_name, number) + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetFormDate + */ + protected function configure($options = array(), $attributes = array()) + { + parent::configure($options, $attributes); + + $this->addRequiredOption('culture'); + $this->addOption('month_format'); + + $culture = isset($options['culture']) ? $options['culture'] : 'en'; + $monthFormat = isset($options['month_format']) ? $options['month_format'] : 'name'; + + // format + $this->setOption('format', $this->getDateFormat($culture)); + + // months + $this->setOption('months', $this->getMonthFormat($culture, $monthFormat)); + } + + protected function getMonthFormat($culture, $monthFormat) + { + switch ($monthFormat) + { + case 'name': + return array_combine(range(1, 12), sfDateTimeFormatInfo::getInstance($culture)->getMonthNames()); + case 'short_name': + return array_combine(range(1, 12), sfDateTimeFormatInfo::getInstance($culture)->getAbbreviatedMonthNames()); + case 'number': + return $this->getOption('months'); + default: + throw new InvalidArgumentException(sprintf('The month format "%s" is invalid.', $monthFormat)); + } + } + + protected function getDateFormat($culture) + { + $dateFormat = sfDateTimeFormatInfo::getInstance($culture)->getShortDatePattern(); + + if (false === ($dayPos = stripos($dateFormat, 'd')) || false === ($monthPos = stripos($dateFormat, 'm')) || false === ($yearPos = stripos($dateFormat, 'y'))) + { + return $this->getOption('format'); + } + + return strtr($dateFormat, array( + substr($dateFormat, $dayPos, strripos($dateFormat, 'd') - $dayPos + 1) => '%day%', + substr($dateFormat, $monthPos, strripos($dateFormat, 'm') - $monthPos + 1) => '%month%', + substr($dateFormat, $yearPos, strripos($dateFormat, 'y') - $yearPos + 1) => '%year%', + )); + } +} diff --git a/lib/vendor/symfony/lib/widget/i18n/.svn/text-base/sfWidgetFormI18nDateTime.class.php.svn-base b/lib/vendor/symfony/lib/widget/i18n/.svn/text-base/sfWidgetFormI18nDateTime.class.php.svn-base new file mode 100644 index 0000000..3dac59e --- /dev/null +++ b/lib/vendor/symfony/lib/widget/i18n/.svn/text-base/sfWidgetFormI18nDateTime.class.php.svn-base @@ -0,0 +1,60 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormI18nDateTime represents a date and time widget. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfWidgetFormI18nDateTime extends sfWidgetFormDateTime +{ + /** + * Constructor. + * + * Available options: + * + * * culture: The culture to use for internationalized strings (required) + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetFormDateTime + */ + protected function configure($options = array(), $attributes = array()) + { + parent::configure($options, $attributes); + + $this->addRequiredOption('culture'); + + $culture = isset($options['culture']) ? $options['culture'] : 'en'; + + // format + $this->setOption('format', str_replace(array('{0}', '{1}'), array('%time%', '%date%'), sfDateTimeFormatInfo::getInstance($culture)->getDateTimeOrderPattern())); + } + + /** + * @see sfWidgetFormDateTime + */ + protected function getDateWidget($attributes = array()) + { + return new sfWidgetFormI18nDate(array_merge(array('culture' => $this->getOption('culture')), $this->getOptionsFor('date')), $this->getAttributesFor('date', $attributes)); + } + + /** + * @see sfWidgetFormDateTime + */ + protected function getTimeWidget($attributes = array()) + { + return new sfWidgetFormI18nTime(array_merge(array('culture' => $this->getOption('culture')), $this->getOptionsFor('time')), $this->getAttributesFor('time', $attributes)); + } +} diff --git a/lib/vendor/symfony/lib/widget/i18n/.svn/text-base/sfWidgetFormI18nTime.class.php.svn-base b/lib/vendor/symfony/lib/widget/i18n/.svn/text-base/sfWidgetFormI18nTime.class.php.svn-base new file mode 100644 index 0000000..32bb533 --- /dev/null +++ b/lib/vendor/symfony/lib/widget/i18n/.svn/text-base/sfWidgetFormI18nTime.class.php.svn-base @@ -0,0 +1,74 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormI18nTime represents a time widget. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id$ + */ +class sfWidgetFormI18nTime extends sfWidgetFormTime +{ + /** + * Constructor. + * + * Available options: + * + * * culture: The culture to use for internationalized strings (required) + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetFormTime + */ + protected function configure($options = array(), $attributes = array()) + { + parent::configure($options, $attributes); + + $this->addRequiredOption('culture'); + + $culture = isset($options['culture']) ? $options['culture'] : 'en'; + + // format + $this->setOption('format', $this->getTimeFormat($culture, true)); + + // format_without_seconds + $this->setOption('format_without_seconds', $this->getTimeFormat($culture, false)); + } + + protected function getTimeFormat($culture, $withSeconds) + { + $timeFormat = $withSeconds ? sfDateTimeFormatInfo::getInstance($culture)->getMediumTimePattern() : sfDateTimeFormatInfo::getInstance($culture)->getShortTimePattern(); + + if (false === ($hourPos = stripos($timeFormat, 'h')) || false === ($minutePos = stripos($timeFormat, 'm'))) + { + return $this->getOption('format'); + } + + $trans = array( + substr($timeFormat, $hourPos, strripos($timeFormat, 'h') - $hourPos + 1) => '%hour%', + substr($timeFormat, $minutePos, strripos($timeFormat, 'm') - $minutePos + 1) => '%minute%', + ); + + if ($withSeconds) + { + if (false === $secondPos = stripos($timeFormat, 's')) + { + return $this->getOption('format'); + } + + $trans[substr($timeFormat, $secondPos, strripos($timeFormat, 's') - $secondPos + 1)] = '%second%'; + } + + return strtr($timeFormat, $trans); + } +} diff --git a/lib/vendor/symfony/lib/widget/i18n/sfWidgetFormI18nChoiceCountry.class.php b/lib/vendor/symfony/lib/widget/i18n/sfWidgetFormI18nChoiceCountry.class.php new file mode 100644 index 0000000..aa62184 --- /dev/null +++ b/lib/vendor/symfony/lib/widget/i18n/sfWidgetFormI18nChoiceCountry.class.php @@ -0,0 +1,57 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormI18nChoiceCountry represents a country choice widget. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id: sfWidgetFormI18nChoiceCountry.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $ + */ +class sfWidgetFormI18nChoiceCountry extends sfWidgetFormChoice +{ + /** + * Constructor. + * + * Available options: + * + * * culture: The culture to use for internationalized strings + * * countries: An array of country codes to use (ISO 3166) + * * add_empty: Whether to add a first empty value or not (false by default) + * If the option is not a Boolean, the value will be used as the text value + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetFormChoice + */ + protected function configure($options = array(), $attributes = array()) + { + parent::configure($options, $attributes); + + $this->addOption('culture'); + $this->addOption('countries'); + $this->addOption('add_empty', false); + + // populate choices with all countries + $culture = isset($options['culture']) ? $options['culture'] : 'en'; + + $countries = sfCultureInfo::getInstance($culture)->getCountries(isset($options['countries']) ? $options['countries'] : null); + + $addEmpty = isset($options['add_empty']) ? $options['add_empty'] : false; + if (false !== $addEmpty) + { + $countries = array_merge(array('' => true === $addEmpty ? '' : $addEmpty), $countries); + } + + $this->setOption('choices', $countries); + } +} diff --git a/lib/vendor/symfony/lib/widget/i18n/sfWidgetFormI18nChoiceCurrency.class.php b/lib/vendor/symfony/lib/widget/i18n/sfWidgetFormI18nChoiceCurrency.class.php new file mode 100644 index 0000000..576c3c4 --- /dev/null +++ b/lib/vendor/symfony/lib/widget/i18n/sfWidgetFormI18nChoiceCurrency.class.php @@ -0,0 +1,57 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormI18nChoiceCurrency represents a currency choice widget. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id: sfWidgetFormI18nChoiceCurrency.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $ + */ +class sfWidgetFormI18nChoiceCurrency extends sfWidgetFormChoice +{ + /** + * Constructor. + * + * Available options: + * + * * culture: The culture to use for internationalized strings + * * currencies: An array of currency codes to use (ISO 4217) + * * add_empty: Whether to add a first empty value or not (false by default) + * If the option is not a Boolean, the value will be used as the text value + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetFormChoice + */ + protected function configure($options = array(), $attributes = array()) + { + parent::configure($options, $attributes); + + $this->addOption('culture'); + $this->addOption('currencies'); + $this->addOption('add_empty', false); + + // populate choices with all currencies + $culture = isset($options['culture']) ? $options['culture'] : 'en'; + + $currencies = sfCultureInfo::getInstance($culture)->getCurrencies(isset($options['currencies']) ? $options['currencies'] : null); + + $addEmpty = isset($options['add_empty']) ? $options['add_empty'] : false; + if (false !== $addEmpty) + { + $currencies = array_merge(array('' => true === $addEmpty ? '' : $addEmpty), $currencies); + } + + $this->setOption('choices', $currencies); + } +} diff --git a/lib/vendor/symfony/lib/widget/i18n/sfWidgetFormI18nChoiceLanguage.class.php b/lib/vendor/symfony/lib/widget/i18n/sfWidgetFormI18nChoiceLanguage.class.php new file mode 100644 index 0000000..6d66c8e --- /dev/null +++ b/lib/vendor/symfony/lib/widget/i18n/sfWidgetFormI18nChoiceLanguage.class.php @@ -0,0 +1,57 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormI18nChoiceLanguage represents a language choice widget. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id: sfWidgetFormI18nChoiceLanguage.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $ + */ +class sfWidgetFormI18nChoiceLanguage extends sfWidgetFormChoice +{ + /** + * Constructor. + * + * Available options: + * + * * culture: The culture to use for internationalized strings + * * languages: An array of language codes to use + * * add_empty: Whether to add a first empty value or not (false by default) + * If the option is not a Boolean, the value will be used as the text value + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetFormChoice + */ + protected function configure($options = array(), $attributes = array()) + { + parent::configure($options, $attributes); + + $this->addOption('culture'); + $this->addOption('languages'); + $this->addOption('add_empty', false); + + // populate choices with all languages + $culture = isset($options['culture']) ? $options['culture'] : 'en'; + + $languages = sfCultureInfo::getInstance($culture)->getLanguages(isset($options['languages']) ? $options['languages'] : null); + + $addEmpty = isset($options['add_empty']) ? $options['add_empty'] : false; + if (false !== $addEmpty) + { + $languages = array_merge(array('' => true === $addEmpty ? '' : $addEmpty), $languages); + } + + $this->setOption('choices', $languages); + } +} diff --git a/lib/vendor/symfony/lib/widget/i18n/sfWidgetFormI18nChoiceTimezone.class.php b/lib/vendor/symfony/lib/widget/i18n/sfWidgetFormI18nChoiceTimezone.class.php new file mode 100644 index 0000000..e9bbb89 --- /dev/null +++ b/lib/vendor/symfony/lib/widget/i18n/sfWidgetFormI18nChoiceTimezone.class.php @@ -0,0 +1,54 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormI18nChoiceTimezone represents a timezone choice widget. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id: sfWidgetFormI18nChoiceTimezone.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $ + */ +class sfWidgetFormI18nChoiceTimezone extends sfWidgetFormChoice +{ + /** + * Constructor. + * + * Available options: + * + * * culture: The culture to use for internationalized strings + * * add_empty: Whether to add a first empty value or not (false by default) + * If the option is not a Boolean, the value will be used as the text value + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetFormChoice + */ + protected function configure($options = array(), $attributes = array()) + { + parent::configure($options, $attributes); + + $this->addOption('culture'); + $this->addOption('add_empty', false); + + $culture = isset($options['culture']) ? $options['culture'] : 'en'; + $timezones = array_keys(sfCultureInfo::getInstance($culture)->getTimeZones()); + $timezones = array_combine($timezones, $timezones); + + $addEmpty = isset($options['add_empty']) ? $options['add_empty'] : false; + if (false !== $addEmpty) + { + $timezones = array_merge(array('' => true === $addEmpty ? '' : $addEmpty), $timezones); + } + + $this->setOption('choices', $timezones); + } +} diff --git a/lib/vendor/symfony/lib/widget/i18n/sfWidgetFormI18nDate.class.php b/lib/vendor/symfony/lib/widget/i18n/sfWidgetFormI18nDate.class.php new file mode 100644 index 0000000..b0cd8e1 --- /dev/null +++ b/lib/vendor/symfony/lib/widget/i18n/sfWidgetFormI18nDate.class.php @@ -0,0 +1,81 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormI18nDate represents a date widget. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id: sfWidgetFormI18nDate.class.php 9046 2008-05-19 08:13:51Z FabianLange $ + */ +class sfWidgetFormI18nDate extends sfWidgetFormDate +{ + /** + * Constructor. + * + * Available options: + * + * * culture: The culture to use for internationalized strings (required) + * * month_format: The month format (name - default, short_name, number) + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetFormDate + */ + protected function configure($options = array(), $attributes = array()) + { + parent::configure($options, $attributes); + + $this->addRequiredOption('culture'); + $this->addOption('month_format'); + + $culture = isset($options['culture']) ? $options['culture'] : 'en'; + $monthFormat = isset($options['month_format']) ? $options['month_format'] : 'name'; + + // format + $this->setOption('format', $this->getDateFormat($culture)); + + // months + $this->setOption('months', $this->getMonthFormat($culture, $monthFormat)); + } + + protected function getMonthFormat($culture, $monthFormat) + { + switch ($monthFormat) + { + case 'name': + return array_combine(range(1, 12), sfDateTimeFormatInfo::getInstance($culture)->getMonthNames()); + case 'short_name': + return array_combine(range(1, 12), sfDateTimeFormatInfo::getInstance($culture)->getAbbreviatedMonthNames()); + case 'number': + return $this->getOption('months'); + default: + throw new InvalidArgumentException(sprintf('The month format "%s" is invalid.', $monthFormat)); + } + } + + protected function getDateFormat($culture) + { + $dateFormat = sfDateTimeFormatInfo::getInstance($culture)->getShortDatePattern(); + + if (false === ($dayPos = stripos($dateFormat, 'd')) || false === ($monthPos = stripos($dateFormat, 'm')) || false === ($yearPos = stripos($dateFormat, 'y'))) + { + return $this->getOption('format'); + } + + return strtr($dateFormat, array( + substr($dateFormat, $dayPos, strripos($dateFormat, 'd') - $dayPos + 1) => '%day%', + substr($dateFormat, $monthPos, strripos($dateFormat, 'm') - $monthPos + 1) => '%month%', + substr($dateFormat, $yearPos, strripos($dateFormat, 'y') - $yearPos + 1) => '%year%', + )); + } +} diff --git a/lib/vendor/symfony/lib/widget/i18n/sfWidgetFormI18nDateTime.class.php b/lib/vendor/symfony/lib/widget/i18n/sfWidgetFormI18nDateTime.class.php new file mode 100644 index 0000000..8cd6544 --- /dev/null +++ b/lib/vendor/symfony/lib/widget/i18n/sfWidgetFormI18nDateTime.class.php @@ -0,0 +1,60 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormI18nDateTime represents a date and time widget. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id: sfWidgetFormI18nDateTime.class.php 15086 2009-01-30 00:23:45Z FabianLange $ + */ +class sfWidgetFormI18nDateTime extends sfWidgetFormDateTime +{ + /** + * Constructor. + * + * Available options: + * + * * culture: The culture to use for internationalized strings (required) + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetFormDateTime + */ + protected function configure($options = array(), $attributes = array()) + { + parent::configure($options, $attributes); + + $this->addRequiredOption('culture'); + + $culture = isset($options['culture']) ? $options['culture'] : 'en'; + + // format + $this->setOption('format', str_replace(array('{0}', '{1}'), array('%time%', '%date%'), sfDateTimeFormatInfo::getInstance($culture)->getDateTimeOrderPattern())); + } + + /** + * @see sfWidgetFormDateTime + */ + protected function getDateWidget($attributes = array()) + { + return new sfWidgetFormI18nDate(array_merge(array('culture' => $this->getOption('culture')), $this->getOptionsFor('date')), $this->getAttributesFor('date', $attributes)); + } + + /** + * @see sfWidgetFormDateTime + */ + protected function getTimeWidget($attributes = array()) + { + return new sfWidgetFormI18nTime(array_merge(array('culture' => $this->getOption('culture')), $this->getOptionsFor('time')), $this->getAttributesFor('time', $attributes)); + } +} diff --git a/lib/vendor/symfony/lib/widget/i18n/sfWidgetFormI18nTime.class.php b/lib/vendor/symfony/lib/widget/i18n/sfWidgetFormI18nTime.class.php new file mode 100644 index 0000000..3471f24 --- /dev/null +++ b/lib/vendor/symfony/lib/widget/i18n/sfWidgetFormI18nTime.class.php @@ -0,0 +1,74 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormI18nTime represents a time widget. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id: sfWidgetFormI18nTime.class.php 9046 2008-05-19 08:13:51Z FabianLange $ + */ +class sfWidgetFormI18nTime extends sfWidgetFormTime +{ + /** + * Constructor. + * + * Available options: + * + * * culture: The culture to use for internationalized strings (required) + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetFormTime + */ + protected function configure($options = array(), $attributes = array()) + { + parent::configure($options, $attributes); + + $this->addRequiredOption('culture'); + + $culture = isset($options['culture']) ? $options['culture'] : 'en'; + + // format + $this->setOption('format', $this->getTimeFormat($culture, true)); + + // format_without_seconds + $this->setOption('format_without_seconds', $this->getTimeFormat($culture, false)); + } + + protected function getTimeFormat($culture, $withSeconds) + { + $timeFormat = $withSeconds ? sfDateTimeFormatInfo::getInstance($culture)->getMediumTimePattern() : sfDateTimeFormatInfo::getInstance($culture)->getShortTimePattern(); + + if (false === ($hourPos = stripos($timeFormat, 'h')) || false === ($minutePos = stripos($timeFormat, 'm'))) + { + return $this->getOption('format'); + } + + $trans = array( + substr($timeFormat, $hourPos, strripos($timeFormat, 'h') - $hourPos + 1) => '%hour%', + substr($timeFormat, $minutePos, strripos($timeFormat, 'm') - $minutePos + 1) => '%minute%', + ); + + if ($withSeconds) + { + if (false === $secondPos = stripos($timeFormat, 's')) + { + return $this->getOption('format'); + } + + $trans[substr($timeFormat, $secondPos, strripos($timeFormat, 's') - $secondPos + 1)] = '%second%'; + } + + return strtr($timeFormat, $trans); + } +} diff --git a/lib/vendor/symfony/lib/widget/sfWidget.class.php b/lib/vendor/symfony/lib/widget/sfWidget.class.php new file mode 100644 index 0000000..93800fb --- /dev/null +++ b/lib/vendor/symfony/lib/widget/sfWidget.class.php @@ -0,0 +1,406 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidget is the base class for all widgets. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id: sfWidget.class.php 33388 2012-03-15 15:01:41Z fabien $ + */ +abstract class sfWidget +{ + protected + $requiredOptions = array(), + $attributes = array(), + $options = array(); + + protected static + $xhtml = true, + $charset = 'UTF-8'; + + /** + * Constructor. + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @throws InvalidArgumentException when a option is not supported + * @throws RuntimeException when a required option is not given + */ + public function __construct($options = array(), $attributes = array()) + { + $this->configure($options, $attributes); + + $currentOptionKeys = array_keys($this->options); + $optionKeys = array_keys($options); + + // check option names + if ($diff = array_diff($optionKeys, array_merge($currentOptionKeys, $this->requiredOptions))) + { + throw new InvalidArgumentException(sprintf('%s does not support the following options: \'%s\'.', get_class($this), implode('\', \'', $diff))); + } + + // check required options + if ($diff = array_diff($this->requiredOptions, array_merge($currentOptionKeys, $optionKeys))) + { + throw new RuntimeException(sprintf('%s requires the following options: \'%s\'.', get_class($this), implode('\', \'', $diff))); + } + + $this->options = array_merge($this->options, $options); + $this->attributes = array_merge($this->attributes, $attributes); + } + + /** + * Configures the current widget. + * + * This method allows each widget to add options or HTML attributes + * during widget creation. + * + * If some options and HTML attributes are given in the sfWidget constructor + * they will take precedence over the options and HTML attributes you configure + * in this method. + * + * @param array $options An array of options + * @param array $attributes An array of HTML attributes + * + * @see __construct() + */ + protected function configure($options = array(), $attributes = array()) + { + } + + /** + * Renders the widget as HTML. + * + * All subclasses must implement this method. + * + * @param string $name The name of the HTML widget + * @param mixed $value The value of the widget + * @param array $attributes An array of HTML attributes + * @param array $errors An array of errors + * + * @return string A HTML representation of the widget + */ + abstract public function render($name, $value = null, $attributes = array(), $errors = array()); + + /** + * Adds a required option. + * + * @param string $name The option name + * + * @return sfWidget The current widget instance + */ + public function addRequiredOption($name) + { + $this->requiredOptions[] = $name; + + return $this; + } + + /** + * Returns all required option names. + * + * @return array An array of required option names + */ + public function getRequiredOptions() + { + return $this->requiredOptions; + } + + /** + * Adds a new option value with a default value. + * + * @param string $name The option name + * @param mixed $value The default value + * + * @return sfWidget The current widget instance + */ + public function addOption($name, $value = null) + { + $this->options[$name] = $value; + + return $this; + } + + /** + * Changes an option value. + * + * @param string $name The option name + * @param mixed $value The value + * + * @return sfWidget The current widget instance + * + * @throws InvalidArgumentException when a option is not supported + */ + public function setOption($name, $value) + { + if (!in_array($name, array_merge(array_keys($this->options), $this->requiredOptions))) + { + throw new InvalidArgumentException(sprintf('%s does not support the following option: \'%s\'.', get_class($this), $name)); + } + + $this->options[$name] = $value; + + return $this; + } + + /** + * Gets an option value. + * + * @param string $name The option name + * + * @return mixed The option value + */ + public function getOption($name) + { + return isset($this->options[$name]) ? $this->options[$name] : null; + } + + /** + * Returns true if the option exists. + * + * @param string $name The option name + * + * @return bool true if the option exists, false otherwise + */ + public function hasOption($name) + { + return array_key_exists($name, $this->options); + } + + /** + * Gets all options. + * + * @return array An array of named options + */ + public function getOptions() + { + return $this->options; + } + + /** + * Sets the options. + * + * @param array $options An array of options + * + * @return sfWidget The current widget instance + */ + public function setOptions($options) + { + $this->options = $options; + + return $this; + } + + /** + * Returns the default HTML attributes. + * + * @param array An array of HTML attributes + */ + public function getAttributes() + { + return $this->attributes; + } + + /** + * Sets a default HTML attribute. + * + * @param string $name The attribute name + * @param string $value The attribute value + * + * @return sfWidget The current widget instance + */ + public function setAttribute($name, $value) + { + $this->attributes[$name] = $value; + + return $this; + } + + /** + * Returns the HTML attribute value for a given attribute name. + * + * @param string $name The attribute name. + * + * @return string The attribute value, or null if the attribute does not exist + */ + public function getAttribute($name) + { + return isset($this->attributes[$name]) ? $this->attributes[$name] : null; + } + + /** + * Sets the HTML attributes. + * + * @param array $attributes An array of HTML attributes + * + * @return sfWidget The current widget instance + */ + public function setAttributes($attributes) + { + $this->attributes = $attributes; + + return $this; + } + + /** + * Gets the stylesheet paths associated with the widget. + * + * The array keys are files and values are the media names (separated by a ,): + * + * array('/path/to/file.css' => 'all', '/another/file.css' => 'screen,print') + * + * @return array An array of stylesheet paths + */ + public function getStylesheets() + { + return array(); + } + + /** + * Gets the JavaScript paths associated with the widget. + * + * @return array An array of JavaScript paths + */ + public function getJavaScripts() + { + return array(); + } + + /** + * Sets the charset to use when rendering widgets. + * + * @param string $charset The charset + */ + static public function setCharset($charset) + { + self::$charset = $charset; + } + + /** + * Returns the charset to use when rendering widgets. + * + * @return string The charset (defaults to UTF-8) + */ + static public function getCharset() + { + return self::$charset; + } + + /** + * Sets the XHTML generation flag. + * + * @param bool $boolean true if widgets must be generated as XHTML, false otherwise + */ + static public function setXhtml($boolean) + { + self::$xhtml = (boolean) $boolean; + } + + /** + * Returns whether to generate XHTML tags or not. + * + * @return bool true if widgets must be generated as XHTML, false otherwise + */ + static public function isXhtml() + { + return self::$xhtml; + } + + /** + * Renders a HTML tag. + * + * @param string $tag The tag name + * @param array $attributes An array of HTML attributes to be merged with the default HTML attributes + * + * @param string An HTML tag string + */ + public function renderTag($tag, $attributes = array()) + { + if (empty($tag)) + { + return ''; + } + + return sprintf('<%s%s%s', $tag, $this->attributesToHtml($attributes), self::$xhtml ? ' />' : (strtolower($tag) == 'input' ? '>' : sprintf('>', $tag))); + } + + /** + * Renders a HTML content tag. + * + * @param string $tag The tag name + * @param string $content The content of the tag + * @param array $attributes An array of HTML attributes to be merged with the default HTML attributes + * + * @param string An HTML tag string + */ + public function renderContentTag($tag, $content = null, $attributes = array()) + { + if (empty($tag)) + { + return ''; + } + + return sprintf('<%s%s>%s', $tag, $this->attributesToHtml($attributes), $content, $tag); + } + + /** + * Escapes a string. + * + * @param string $value string to escape + * @return string escaped string + */ + static public function escapeOnce($value) + { + return self::fixDoubleEscape(htmlspecialchars((string) $value, ENT_QUOTES, self::getCharset())); + } + + /** + * Fixes double escaped strings. + * + * @param string $escaped string to fix + * @return string single escaped string + */ + static public function fixDoubleEscape($escaped) + { + return preg_replace('/&([a-z]+|(#\d+)|(#x[\da-f]+));/i', '&$1;', $escaped); + } + + /** + * Converts an array of attributes to its HTML representation. + * + * @param array $attributes An array of attributes + * + * @return string The HTML representation of the HTML attribute array. + */ + public function attributesToHtml($attributes) + { + $attributes = array_merge($this->attributes, $attributes); + + return implode('', array_map(array($this, 'attributesToHtmlCallback'), array_keys($attributes), array_values($attributes))); + } + + /** + * Prepares an attribute key and value for HTML representation. + * + * It removes empty attributes, except for the value one. + * + * @param string $k The attribute key + * @param string $v The attribute value + * + * @return string The HTML representation of the HTML key attribute pair. + */ + protected function attributesToHtmlCallback($k, $v) + { + return false === $v || null === $v || ('' === $v && 'value' != $k) ? '' : sprintf(' %s="%s"', $k, $this->escapeOnce($v)); + } +} diff --git a/lib/vendor/symfony/lib/widget/sfWidgetForm.class.php b/lib/vendor/symfony/lib/widget/sfWidgetForm.class.php new file mode 100644 index 0000000..c0b1223 --- /dev/null +++ b/lib/vendor/symfony/lib/widget/sfWidgetForm.class.php @@ -0,0 +1,354 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetForm is the base class for all form widgets. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id: sfWidgetForm.class.php 33388 2012-03-15 15:01:41Z fabien $ + */ +abstract class sfWidgetForm extends sfWidget +{ + protected + $parent = null; + + /** + * Constructor. + * + * Available options: + * + * * id_format: The format for the generated HTML id attributes (%s by default) + * * is_hidden: true if the form widget must be hidden, false otherwise (false by default) + * * needs_multipart: true if the form widget needs a multipart form, false otherwise (false by default) + * * default: The default value to use when rendering the widget + * * label: The label to use when the widget is rendered by a widget schema + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidget + */ + public function __construct($options = array(), $attributes = array()) + { + $this->addOption('id_format', '%s'); + $this->addOption('is_hidden', false); + $this->addOption('needs_multipart', false); + $this->addOption('default', null); + $this->addOption('label', null); + + parent::__construct($options, $attributes); + } + + /** + * Sets the default value for the widget. + * + * @param string $value The default value + * + * @return sfWidget The current widget instance + */ + public function setDefault($value) + { + $this->setOption('default', $value); + + return $this; + } + + /** + * Returns the default value for the widget. + * + * @return string The default value + */ + public function getDefault() + { + return $this->getOption('default'); + } + + /** + * Sets the label for the widget. + * + * @param string $value The label + * + * @return sfWidget The current widget instance + */ + public function setLabel($value) + { + $this->setOption('label', $value); + + return $this; + } + + /** + * Returns the label for the widget. + * + * @return string The label + */ + public function getLabel() + { + return $this->getOption('label'); + } + + /** + * Sets the format for HTML id attributes. + * + * @param string $format The format string (must contain a %s for the id placeholder) + * + * @return sfWidget The current widget instance + */ + public function setIdFormat($format) + { + $this->setOption('id_format', $format); + + return $this; + } + + /** + * Gets the HTML format string for id attributes. + * + * @return string The format string + */ + public function getIdFormat() + { + return $this->getOption('id_format'); + } + + /** + * Returns true if the widget is hidden. + * + * @return Boolean true if the widget is hidden, false otherwise + */ + public function isHidden() + { + return $this->getOption('is_hidden'); + } + + /** + * Sets the hidden flag for the widget. + * + * @param bool $boolean true if the widget must be hidden, false otherwise + * + * @return sfWidget The current widget instance + */ + public function setHidden($boolean) + { + $this->setOption('is_hidden', (boolean) $boolean); + + return $this; + } + + /** + * Returns true if the widget needs a multipart form. + * + * @return bool true if the widget needs a multipart form, false otherwise + */ + public function needsMultipartForm() + { + return $this->getOption('needs_multipart'); + } + + /** + * Renders a HTML tag. + * + * The id attribute is added automatically to the array of attributes if none is specified. + * If uses for "id_format" option to generate the id. + * + * @param string $tag The tag name + * @param array $attributes An array of HTML attributes to be merged with the default HTML attributes + * + * @return string An HTML tag string + */ + public function renderTag($tag, $attributes = array()) + { + if (empty($tag)) + { + return ''; + } + + $attributes = $this->fixFormId($attributes); + + return parent::renderTag($tag, $attributes); + } + + /** + * Renders a HTML content tag. + * + * The id attribute is added automatically to the array of attributes if none is specified. + * If uses for "id_format" option to generate the id. + * + * @param string $tag The tag name + * @param string $content The content of the tag + * @param array $attributes An array of HTML attributes to be merged with the default HTML attributes + * + * @return string An HTML tag string + */ + public function renderContentTag($tag, $content = null, $attributes = array()) + { + return parent::renderContentTag($tag, $content, $this->fixFormId($attributes)); + } + + /** + * Adds an HTML id attributes to the array of attributes if none is given and a name attribute exists. + * + * @param array $attributes An array of attributes + * + * @return array An array of attributes with an id. + */ + protected function fixFormId($attributes) + { + if (!isset($attributes['id']) && isset($attributes['name'])) + { + $attributes['id'] = $this->generateId($attributes['name'], isset($attributes['value']) ? $attributes['value'] : null); + } + + return $attributes; + } + + /** + * Returns a formatted id based on the field name and optionally on the field value. + * + * This method determines the proper form field id name based on the parameters. If a form field has an + * array value as a name we need to convert them to proper and unique ids like so: + * + * + * name[] => name (if value == null) + * name[] => name_value (if value != null) + * name[bob] => name_bob + * name[item][total] => name_item_total + * + * + * This method also changes all invalid characters to an underscore (_): + * + * Ids must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits + * ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods ("."). + * + * @param string $name The field name + * @param string $value The field value + * + * @return string The field id or null. + */ + public function generateId($name, $value = null) + { + if (false === $this->getOption('id_format')) + { + return null; + } + + // check to see if we have an array variable for a field name + if (strstr($name, '[')) + { + $name = str_replace(array('[]', '][', '[', ']'), array((null !== $value ? '_'.$value : ''), '_', '_', ''), $name); + } + + if (false !== strpos($this->getOption('id_format'), '%s')) + { + $name = sprintf($this->getOption('id_format'), $name); + } + + // remove illegal characters + $name = preg_replace(array('/^[^A-Za-z]+/', '/[^A-Za-z0-9\:_\.\-]/'), array('', '_'), $name); + + return $name; + } + + /** + * Generates a two chars range + * + * @param int $start + * @param int $stop + * @return array + */ + static protected function generateTwoCharsRange($start, $stop) + { + $results = array(); + for ($i = $start; $i <= $stop; $i++) + { + $results[$i] = sprintf('%02d', $i); + } + return $results; + } + + /** + * Sets the parent widget schema. + * + * @param sfWidgetFormSchema|null $widgetSchema + * + * @return sfWidgetForm The current widget instance + */ + public function setParent(sfWidgetFormSchema $widgetSchema = null) + { + $this->parent = $widgetSchema; + + return $this; + } + + /** + * Returns the parent widget schema. + * + * If no schema has been set with setWidgetSchema(), NULL is returned. + * + * @return sfWidgetFormSchema|null + */ + public function getParent() + { + return $this->parent; + } + + /** + * Translates the given text. + * + * @param string $text The text with optional placeholders + * @param array $parameters The values to replace the placeholders + * + * @return string The translated text + * + * @see sfWidgetFormSchemaFormatter::translate() + */ + protected function translate($text, array $parameters = array()) + { + if (null === $this->parent) + { + return $text; + } + else + { + return $this->parent->getFormFormatter()->translate($text, $parameters); + } + } + + /** + * Translates all values of the given array. + * + * @param array $texts The texts with optional placeholders + * @param array $parameters The values to replace the placeholders + * + * @return array The translated texts + * + * @see sfWidgetFormSchemaFormatter::translate() + */ + protected function translateAll(array $texts, array $parameters = array()) + { + if (null === $this->parent) + { + return $texts; + } + else + { + $result = array(); + + foreach ($texts as $key => $text) + { + $result[$key] = $this->parent->getFormFormatter()->translate($text, $parameters); + } + + return $result; + } + } +} diff --git a/lib/vendor/symfony/lib/widget/sfWidgetFormChoice.class.php b/lib/vendor/symfony/lib/widget/sfWidgetFormChoice.class.php new file mode 100644 index 0000000..7cd8d74 --- /dev/null +++ b/lib/vendor/symfony/lib/widget/sfWidgetFormChoice.class.php @@ -0,0 +1,144 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormChoice represents a choice widget. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id: sfWidgetFormChoice.class.php 32835 2011-07-27 07:07:00Z fabien $ + */ +class sfWidgetFormChoice extends sfWidgetFormChoiceBase +{ + /** + * Constructor. + * + * Available options: + * + * * choices: An array of possible choices (required) + * * multiple: true if the select tag must allow multiple selections + * * expanded: true to display an expanded widget + * if expanded is false, then the widget will be a select + * if expanded is true and multiple is false, then the widget will be a list of radio + * if expanded is true and multiple is true, then the widget will be a list of checkbox + * * renderer_class: The class to use instead of the default ones + * * renderer_options: The options to pass to the renderer constructor + * * renderer: A renderer widget (overrides the expanded and renderer_options options) + * The choices option must be: new sfCallable($thisWidgetInstance, 'getChoices') + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetFormChoiceBase + */ + protected function configure($options = array(), $attributes = array()) + { + parent::configure($options, $attributes); + + $this->addOption('multiple', false); + $this->addOption('expanded', false); + $this->addOption('renderer_class', false); + $this->addOption('renderer_options', array()); + $this->addOption('renderer', false); + } + + /** + * Sets the format for HTML id attributes. This is made avaiable to the renderer, + * as this widget does not render itself, but delegates to the renderer instead. + * + * @param string $format The format string (must contain a %s for the id placeholder) + * + * @see sfWidgetForm + */ + public function setIdFormat($format) + { + $this->options['renderer_options']['id_format'] = $format; + } + + /** + * Renders the widget. + * + * @param string $name The element name + * @param string $value The value selected in this widget + * @param array $attributes An array of HTML attributes to be merged with the default HTML attributes + * @param array $errors An array of errors for the field + * + * @return string An HTML tag string + * + * @see sfWidgetForm + */ + public function render($name, $value = null, $attributes = array(), $errors = array()) + { + if ($this->getOption('multiple')) + { + $attributes['multiple'] = 'multiple'; + + if ('[]' != substr($name, -2)) + { + $name .= '[]'; + } + } + + if (!$this->getOption('renderer') && !$this->getOption('renderer_class') && $this->getOption('expanded')) + { + unset($attributes['multiple']); + } + + return $this->getRenderer()->render($name, $value, $attributes, $errors); + } + + /** + * Gets the stylesheet paths associated with the widget. + * + * @return array An array of stylesheet paths + */ + public function getStylesheets() + { + return $this->getRenderer()->getStylesheets(); + } + + /** + * Gets the JavaScript paths associated with the widget. + * + * @return array An array of JavaScript paths + */ + public function getJavaScripts() + { + return $this->getRenderer()->getJavaScripts(); + } + + public function getRenderer() + { + if ($this->getOption('renderer')) + { + return $this->getOption('renderer'); + } + + if (!$class = $this->getOption('renderer_class')) + { + $type = !$this->getOption('expanded') ? '' : ($this->getOption('multiple') ? 'checkbox' : 'radio'); + $class = sprintf('sfWidgetFormSelect%s', ucfirst($type)); + } + + $options = $this->options['renderer_options']; + $options['choices'] = new sfCallable(array($this, 'getChoices')); + + $renderer = new $class($options, $this->getAttributes()); + + // choices returned by the callback will already be translated (so we need to avoid double-translation) + if ($renderer->hasOption('translate_choices')) { + $renderer->setOption('translate_choices', false); + } + + $renderer->setParent($this->getParent()); + + return $renderer; + } +} diff --git a/lib/vendor/symfony/lib/widget/sfWidgetFormChoiceBase.class.php b/lib/vendor/symfony/lib/widget/sfWidgetFormChoiceBase.class.php new file mode 100644 index 0000000..686674c --- /dev/null +++ b/lib/vendor/symfony/lib/widget/sfWidgetFormChoiceBase.class.php @@ -0,0 +1,89 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormChoiceBase is the base class for all choice/select widgets + * + * @package symfony + * @subpackage widget + * @author Bernhard Schussek + * @version SVN: $Id$ + */ +abstract class sfWidgetFormChoiceBase extends sfWidgetForm +{ + /** + * Constructor. + * + * Available options: + * + * * choices: An array of possible choices (required) + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetForm + */ + protected function configure($options = array(), $attributes = array()) + { + $this->addRequiredOption('choices'); + $this->addOption('translate_choices', true); + } + + /** + * Returns the translated choices configured for this widget + * + * @return array An array of strings + */ + public function getChoices() + { + $choices = $this->getOption('choices'); + + if ($choices instanceof sfCallable) + { + $choices = $choices->call(); + } + + if (!$this->getOption('translate_choices')) + { + return $choices; + } + + $results = array(); + foreach ($choices as $key => $choice) + { + if (is_array($choice)) + { + $results[$this->translate($key)] = $this->translateAll($choice); + } + else + { + $results[$key] = $this->translate($choice); + } + } + + return $results; + } + + /** + * Clones this object + */ + public function __clone() + { + if ($this->getOption('choices') instanceof sfCallable) + { + $callable = $this->getOption('choices')->getCallable(); + if (is_array($callable) && $callable[0] instanceof self) + { + $callable[0] = $this; + $this->setOption('choices', new sfCallable($callable)); + } + } + } +} \ No newline at end of file diff --git a/lib/vendor/symfony/lib/widget/sfWidgetFormDate.class.php b/lib/vendor/symfony/lib/widget/sfWidgetFormDate.class.php new file mode 100644 index 0000000..c0447db --- /dev/null +++ b/lib/vendor/symfony/lib/widget/sfWidgetFormDate.class.php @@ -0,0 +1,132 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormDate represents a date widget. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id: sfWidgetFormDate.class.php 30762 2010-08-25 12:33:33Z fabien $ + */ +class sfWidgetFormDate extends sfWidgetForm +{ + /** + * Configures the current widget. + * + * Available options: + * + * * format: The date format string (%month%/%day%/%year% by default) + * * years: An array of years for the year select tag (optional) + * Be careful that the keys must be the years, and the values what will be displayed to the user + * * months: An array of months for the month select tag (optional) + * * days: An array of days for the day select tag (optional) + * * can_be_empty: Whether the widget accept an empty value (true by default) + * * empty_values: An array of values to use for the empty value (empty string for year, month, and day by default) + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetForm + */ + protected function configure($options = array(), $attributes = array()) + { + $this->addOption('format', '%month%/%day%/%year%'); + $this->addOption('days', parent::generateTwoCharsRange(1, 31)); + $this->addOption('months', parent::generateTwoCharsRange(1, 12)); + $years = range(date('Y') - 5, date('Y') + 5); + $this->addOption('years', array_combine($years, $years)); + + $this->addOption('can_be_empty', true); + $this->addOption('empty_values', array('year' => '', 'month' => '', 'day' => '')); + } + + /** + * Renders the widget. + * + * @param string $name The element name + * @param string $value The date displayed in this widget + * @param array $attributes An array of HTML attributes to be merged with the default HTML attributes + * @param array $errors An array of errors for the field + * + * @return string An HTML tag string + * + * @see sfWidgetForm + */ + public function render($name, $value = null, $attributes = array(), $errors = array()) + { + // convert value to an array + $default = array('year' => null, 'month' => null, 'day' => null); + if (is_array($value)) + { + $value = array_merge($default, $value); + } + else + { + $value = (string) $value == (string) (integer) $value ? (integer) $value : strtotime($value); + if (false === $value) + { + $value = $default; + } + else + { + $value = array('year' => date('Y', $value), 'month' => date('n', $value), 'day' => date('j', $value)); + } + } + + $date = array(); + $emptyValues = $this->getOption('empty_values'); + + $date['%day%'] = $this->renderDayWidget($name.'[day]', $value['day'], array('choices' => $this->getOption('can_be_empty') ? array('' => $emptyValues['day']) + $this->getOption('days') : $this->getOption('days'), 'id_format' => $this->getOption('id_format')), array_merge($this->attributes, $attributes)); + $date['%month%'] = $this->renderMonthWidget($name.'[month]', $value['month'], array('choices' => $this->getOption('can_be_empty') ? array('' => $emptyValues['month']) + $this->getOption('months') : $this->getOption('months'), 'id_format' => $this->getOption('id_format')), array_merge($this->attributes, $attributes)); + $date['%year%'] = $this->renderYearWidget($name.'[year]', $value['year'], array('choices' => $this->getOption('can_be_empty') ? array('' => $emptyValues['year']) + $this->getOption('years') : $this->getOption('years'), 'id_format' => $this->getOption('id_format')), array_merge($this->attributes, $attributes)); + + return strtr($this->getOption('format'), $date); + } + + /** + * @param string $name + * @param string $value + * @param array $options + * @param array $attributes + * @return string rendered widget + */ + protected function renderDayWidget($name, $value, $options, $attributes) + { + $widget = new sfWidgetFormSelect($options, $attributes); + return $widget->render($name, $value); + } + + /** + * @param string $name + * @param string $value + * @param array $options + * @param array $attributes + * @return string rendered widget + */ + protected function renderMonthWidget($name, $value, $options, $attributes) + { + $widget = new sfWidgetFormSelect($options, $attributes); + return $widget->render($name, $value); + } + + /** + * @param string $name + * @param string $value + * @param array $options + * @param array $attributes + * @return string rendered widget + */ + protected function renderYearWidget($name, $value, $options, $attributes) + { + $widget = new sfWidgetFormSelect($options, $attributes); + return $widget->render($name, $value); + } +} diff --git a/lib/vendor/symfony/lib/widget/sfWidgetFormDateRange.class.php b/lib/vendor/symfony/lib/widget/sfWidgetFormDateRange.class.php new file mode 100644 index 0000000..daf14f0 --- /dev/null +++ b/lib/vendor/symfony/lib/widget/sfWidgetFormDateRange.class.php @@ -0,0 +1,85 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormDateRange represents a date range widget. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id: sfWidgetFormDateRange.class.php 33053 2011-09-20 15:31:20Z fabien $ + */ +class sfWidgetFormDateRange extends sfWidgetForm +{ + /** + * Configures the current widget. + * + * Available options: + * + * * from_date: The from date widget (required) + * * to_date: The to date widget (required) + * * template: The template to use to render the widget + * Available placeholders: %from_date%, %to_date% + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetForm + */ + protected function configure($options = array(), $attributes = array()) + { + $this->addRequiredOption('from_date'); + $this->addRequiredOption('to_date'); + + $this->addOption('template', 'from %from_date% to %to_date%'); + } + + /** + * Renders the widget. + * + * @param string $name The element name + * @param string $value The date displayed in this widget + * @param array $attributes An array of HTML attributes to be merged with the default HTML attributes + * @param array $errors An array of errors for the field + * + * @return string An HTML tag string + * + * @see sfWidgetForm + */ + public function render($name, $value = null, $attributes = array(), $errors = array()) + { + $value = array_merge(array('from' => '', 'to' => ''), is_array($value) ? $value : array()); + + return strtr($this->translate($this->getOption('template')), array( + '%from_date%' => $this->getOption('from_date')->render($name.'[from]', $value['from']), + '%to_date%' => $this->getOption('to_date')->render($name.'[to]', $value['to']), + )); + } + + /** + * Gets the stylesheet paths associated with the widget. + * + * @return array An array of stylesheet paths + */ + public function getStylesheets() + { + return array_unique(array_merge($this->getOption('from_date')->getStylesheets(), $this->getOption('to_date')->getStylesheets())); + } + + /** + * Gets the JavaScript paths associated with the widget. + * + * @return array An array of JavaScript paths + */ + public function getJavaScripts() + { + return array_unique(array_merge($this->getOption('from_date')->getJavaScripts(), $this->getOption('to_date')->getJavaScripts())); + } +} diff --git a/lib/vendor/symfony/lib/widget/sfWidgetFormDateTime.class.php b/lib/vendor/symfony/lib/widget/sfWidgetFormDateTime.class.php new file mode 100644 index 0000000..5e7f29c --- /dev/null +++ b/lib/vendor/symfony/lib/widget/sfWidgetFormDateTime.class.php @@ -0,0 +1,137 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormDateTime represents a datetime widget. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id: sfWidgetFormDateTime.class.php 30762 2010-08-25 12:33:33Z fabien $ + */ +class sfWidgetFormDateTime extends sfWidgetForm +{ + /** + * Configures the current widget. + * + * The attributes are passed to both the date and the time widget. + * + * If you want to pass HTML attributes to one of the two widget, pass an + * attributes option to the date or time option (see below). + * + * Available options: + * + * * date: Options for the date widget (see sfWidgetFormDate) + * * time: Options for the time widget (see sfWidgetFormTime) + * * with_time: Whether to include time (true by default) + * * format: The format string for the date and the time widget (default to %date% %time%) + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetForm + */ + protected function configure($options = array(), $attributes = array()) + { + $this->addOption('date', array()); + $this->addOption('time', array()); + $this->addOption('with_time', true); + $this->addOption('format', '%date% %time%'); + } + + /** + * Renders the widget. + * + * @param string $name The element name + * @param string $value The date and time displayed in this widget + * @param array $attributes An array of HTML attributes to be merged with the default HTML attributes + * @param array $errors An array of errors for the field + * + * @return string An HTML tag string + * + * @see sfWidgetForm + */ + function render($name, $value = null, $attributes = array(), $errors = array()) + { + $date = $this->getDateWidget($attributes)->render($name, $value); + + if (!$this->getOption('with_time')) + { + return $date; + } + + return strtr($this->getOption('format'), array( + '%date%' => $date, + '%time%' => $this->getTimeWidget($attributes)->render($name, $value), + )); + } + + /** + * Returns the date widget. + * + * @param array $attributes An array of attributes + * + * @return sfWidgetForm A Widget representing the date + */ + protected function getDateWidget($attributes = array()) + { + return new sfWidgetFormDate($this->getOptionsFor('date'), $this->getAttributesFor('date', $attributes)); + } + + /** + * Returns the time widget. + * + * @param array $attributes An array of attributes + * + * @return sfWidgetForm A Widget representing the time + */ + protected function getTimeWidget($attributes = array()) + { + return new sfWidgetFormTime($this->getOptionsFor('time'), $this->getAttributesFor('time', $attributes)); + } + + /** + * Returns an array of options for the given type. + * + * @param string $type The type (date or time) + * + * @return array An array of options + * + * @throws InvalidArgumentException when option date|time type is not array + */ + protected function getOptionsFor($type) + { + $options = $this->getOption($type); + if (!is_array($options)) + { + throw new InvalidArgumentException(sprintf('You must pass an array for the %s option.', $type)); + } + + // add id_format if it's not there already + $options += array('id_format' => $this->getOption('id_format')); + + return $options; + } + + /** + * Returns an array of HTML attributes for the given type. + * + * @param string $type The type (date or time) + * @param array $attributes An array of attributes + * + * @return array An array of HTML attributes + */ + protected function getAttributesFor($type, $attributes) + { + $defaults = isset($this->attributes[$type]) ? $this->attributes[$type] : array(); + + return isset($attributes[$type]) ? array_merge($defaults, $attributes[$type]) : $defaults; + } +} diff --git a/lib/vendor/symfony/lib/widget/sfWidgetFormFilterDate.class.php b/lib/vendor/symfony/lib/widget/sfWidgetFormFilterDate.class.php new file mode 100644 index 0000000..a56c883 --- /dev/null +++ b/lib/vendor/symfony/lib/widget/sfWidgetFormFilterDate.class.php @@ -0,0 +1,70 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormFilterDate represents a date filter widget. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id: sfWidgetFormFilterDate.class.php 30762 2010-08-25 12:33:33Z fabien $ + */ +class sfWidgetFormFilterDate extends sfWidgetFormDateRange +{ + /** + * Configures the current widget. + * + * Available options: + * + * * with_empty: Whether to add the empty checkbox (true by default) + * * empty_label: The label to use when using an empty checkbox + * * template: The template used for from date and to date + * Available placeholders: %from_date%, %to_date% + * * filter_template: The template to use to render the widget + * Available placeholders: %date_range%, %empty_checkbox%, %empty_label% + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetForm + */ + protected function configure($options = array(), $attributes = array()) + { + parent::configure($options, $attributes); + + $this->addOption('with_empty', true); + $this->addOption('empty_label', 'is empty'); + $this->addOption('template', 'from %from_date%
        to %to_date%'); + $this->addOption('filter_template', '%date_range%
        %empty_checkbox% %empty_label%'); + } + + /** + * Renders the widget. + * + * @param string $name The element name + * @param string $value The date displayed in this widget + * @param array $attributes An array of HTML attributes to be merged with the default HTML attributes + * @param array $errors An array of errors for the field + * + * @return string An HTML tag string + * + * @see sfWidgetForm + */ + public function render($name, $value = null, $attributes = array(), $errors = array()) + { + $values = array_merge(array('is_empty' => ''), is_array($value) ? $value : array()); + + return strtr($this->getOption('filter_template'), array( + '%date_range%' => parent::render($name, $value, $attributes, $errors), + '%empty_checkbox%' => $this->getOption('with_empty') ? $this->renderTag('input', array('type' => 'checkbox', 'name' => $name.'[is_empty]', 'checked' => $values['is_empty'] ? 'checked' : '')) : '', + '%empty_label%' => $this->getOption('with_empty') ? $this->renderContentTag('label', $this->translate($this->getOption('empty_label')), array('for' => $this->generateId($name.'[is_empty]'))) : '', + )); + } +} diff --git a/lib/vendor/symfony/lib/widget/sfWidgetFormFilterInput.class.php b/lib/vendor/symfony/lib/widget/sfWidgetFormFilterInput.class.php new file mode 100644 index 0000000..632dea1 --- /dev/null +++ b/lib/vendor/symfony/lib/widget/sfWidgetFormFilterInput.class.php @@ -0,0 +1,65 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormFilterInput represents an HTML input tag used for filtering text. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id: sfWidgetFormFilterInput.class.php 30762 2010-08-25 12:33:33Z fabien $ + */ +class sfWidgetFormFilterInput extends sfWidgetForm +{ + /** + * Constructor. + * + * Available options: + * + * * with_empty: Whether to add the empty checkbox (true by default) + * * empty_label: The label to use when using an empty checkbox + * * template: The template to use to render the widget + * Available placeholders: %input%, %empty_checkbox%, %empty_label% + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetForm + */ + protected function configure($options = array(), $attributes = array()) + { + $this->addOption('with_empty', true); + $this->addOption('empty_label', 'is empty'); + $this->addOption('template', '%input%
        %empty_checkbox% %empty_label%'); + } + + /** + * Renders the widget. + * + * @param string $name The element name + * @param string $value The value displayed in this widget + * @param array $attributes An array of HTML attributes to be merged with the default HTML attributes + * @param array $errors An array of errors for the field + * + * @return string An HTML tag string + * + * @see sfWidgetForm + */ + public function render($name, $value = null, $attributes = array(), $errors = array()) + { + $values = array_merge(array('text' => '', 'is_empty' => false), is_array($value) ? $value : array()); + + return strtr($this->getOption('template'), array( + '%input%' => $this->renderTag('input', array_merge(array('type' => 'text', 'id' => $this->generateId($name), 'name' => $name.'[text]', 'value' => $values['text']), $attributes)), + '%empty_checkbox%' => $this->getOption('with_empty') ? $this->renderTag('input', array('type' => 'checkbox', 'name' => $name.'[is_empty]', 'checked' => $values['is_empty'] ? 'checked' : '')) : '', + '%empty_label%' => $this->getOption('with_empty') ? $this->renderContentTag('label', $this->translate($this->getOption('empty_label')), array('for' => $this->generateId($name.'[is_empty]'))) : '', + )); + } +} diff --git a/lib/vendor/symfony/lib/widget/sfWidgetFormInput.class.php b/lib/vendor/symfony/lib/widget/sfWidgetFormInput.class.php new file mode 100644 index 0000000..a45a4af --- /dev/null +++ b/lib/vendor/symfony/lib/widget/sfWidgetFormInput.class.php @@ -0,0 +1,57 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormInput represents an HTML input tag. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id: sfWidgetFormInput.class.php 30762 2010-08-25 12:33:33Z fabien $ + */ +class sfWidgetFormInput extends sfWidgetForm +{ + /** + * Constructor. + * + * Available options: + * + * * type: The widget type + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetForm + */ + protected function configure($options = array(), $attributes = array()) + { + $this->addRequiredOption('type'); + + // to maintain BC with symfony 1.2 + $this->setOption('type', 'text'); + } + + /** + * Renders the widget. + * + * @param string $name The element name + * @param string $value The value displayed in this widget + * @param array $attributes An array of HTML attributes to be merged with the default HTML attributes + * @param array $errors An array of errors for the field + * + * @return string An HTML tag string + * + * @see sfWidgetForm + */ + public function render($name, $value = null, $attributes = array(), $errors = array()) + { + return $this->renderTag('input', array_merge(array('type' => $this->getOption('type'), 'name' => $name, 'value' => $value), $attributes)); + } +} diff --git a/lib/vendor/symfony/lib/widget/sfWidgetFormInputCheckbox.class.php b/lib/vendor/symfony/lib/widget/sfWidgetFormInputCheckbox.class.php new file mode 100644 index 0000000..c5447a2 --- /dev/null +++ b/lib/vendor/symfony/lib/widget/sfWidgetFormInputCheckbox.class.php @@ -0,0 +1,84 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormInputCheckbox represents an HTML checkbox tag. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id: sfWidgetFormInputCheckbox.class.php 30762 2010-08-25 12:33:33Z fabien $ + */ +class sfWidgetFormInputCheckbox extends sfWidgetFormInput +{ + /** + * Constructor. + * + * Available options: + * + * - value_attribute_value: The "value" attribute value to set for the checkbox + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetFormInput + */ + public function __construct($options = array(), $attributes = array()) + { + $this->addOption('value_attribute_value'); + + parent::__construct($options, $attributes); + } + + /** + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetFormInput + */ + protected function configure($options = array(), $attributes = array()) + { + parent::configure($options, $attributes); + + $this->setOption('type', 'checkbox'); + + if (isset($attributes['value'])) + { + $this->setOption('value_attribute_value', $attributes['value']); + } + } + + /** + * Renders the widget. + * + * @param string $name The element name + * @param string $value The this widget is checked if value is not null + * @param array $attributes An array of HTML attributes to be merged with the default HTML attributes + * @param array $errors An array of errors for the field + * + * @return string An HTML tag string + * + * @see sfWidgetForm + */ + public function render($name, $value = null, $attributes = array(), $errors = array()) + { + if (null !== $value && $value !== false) + { + $attributes['checked'] = 'checked'; + } + + if (!isset($attributes['value']) && null !== $this->getOption('value_attribute_value')) + { + $attributes['value'] = $this->getOption('value_attribute_value'); + } + + return parent::render($name, null, $attributes, $errors); + } +} diff --git a/lib/vendor/symfony/lib/widget/sfWidgetFormInputFile.class.php b/lib/vendor/symfony/lib/widget/sfWidgetFormInputFile.class.php new file mode 100644 index 0000000..cfacca0 --- /dev/null +++ b/lib/vendor/symfony/lib/widget/sfWidgetFormInputFile.class.php @@ -0,0 +1,36 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormInputFile represents an upload HTML input tag. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id: sfWidgetFormInputFile.class.php 30762 2010-08-25 12:33:33Z fabien $ + */ +class sfWidgetFormInputFile extends sfWidgetFormInput +{ + /** + * Configures the current widget. + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetFormInput + */ + protected function configure($options = array(), $attributes = array()) + { + parent::configure($options, $attributes); + + $this->setOption('type', 'file'); + $this->setOption('needs_multipart', true); + } +} diff --git a/lib/vendor/symfony/lib/widget/sfWidgetFormInputFileEditable.class.php b/lib/vendor/symfony/lib/widget/sfWidgetFormInputFileEditable.class.php new file mode 100644 index 0000000..515c252 --- /dev/null +++ b/lib/vendor/symfony/lib/widget/sfWidgetFormInputFileEditable.class.php @@ -0,0 +1,112 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormInputFileEditable represents an upload HTML input tag with the possibility + * to remove a previously uploaded file. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id: sfWidgetFormInputFileEditable.class.php 30762 2010-08-25 12:33:33Z fabien $ + */ +class sfWidgetFormInputFileEditable extends sfWidgetFormInputFile +{ + /** + * Constructor. + * + * Available options: + * + * * file_src: The current image web source path (required) + * * edit_mode: A Boolean: true to enabled edit mode, false otherwise + * * is_image: Whether the file is a displayable image + * * with_delete: Whether to add a delete checkbox or not + * * delete_label: The delete label used by the template + * * template: The HTML template to use to render this widget when in edit mode + * The available placeholders are: + * * %input% (the image upload widget) + * * %delete% (the delete checkbox) + * * %delete_label% (the delete label text) + * * %file% (the file tag) + * + * In edit mode, this widget renders an additional widget named after the + * file upload widget with a "_delete" suffix. So, when creating a form, + * don't forget to add a validator for this additional field. + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetFormInputFile + */ + protected function configure($options = array(), $attributes = array()) + { + parent::configure($options, $attributes); + + $this->setOption('type', 'file'); + $this->setOption('needs_multipart', true); + + $this->addRequiredOption('file_src'); + $this->addOption('is_image', false); + $this->addOption('edit_mode', true); + $this->addOption('with_delete', true); + $this->addOption('delete_label', 'remove the current file'); + $this->addOption('template', '%file%
        %input%
        %delete% %delete_label%'); + } + + /** + * Renders the widget. + * + * @param string $name The element name + * @param string $value The value displayed in this widget + * @param array $attributes An array of HTML attributes to be merged with the default HTML attributes + * @param array $errors An array of errors for the field + * + * @return string An HTML tag string + * + * @see sfWidgetForm + */ + public function render($name, $value = null, $attributes = array(), $errors = array()) + { + $input = parent::render($name, $value, $attributes, $errors); + + if (!$this->getOption('edit_mode')) + { + return $input; + } + + if ($this->getOption('with_delete')) + { + $deleteName = ']' == substr($name, -1) ? substr($name, 0, -1).'_delete]' : $name.'_delete'; + + $delete = $this->renderTag('input', array_merge(array('type' => 'checkbox', 'name' => $deleteName), $attributes)); + $deleteLabel = $this->translate($this->getOption('delete_label')); + $deleteLabel = $this->renderContentTag('label', $deleteLabel, array_merge(array('for' => $this->generateId($deleteName)))); + } + else + { + $delete = ''; + $deleteLabel = ''; + } + + return strtr($this->getOption('template'), array('%input%' => $input, '%delete%' => $delete, '%delete_label%' => $deleteLabel, '%file%' => $this->getFileAsTag($attributes))); + } + + protected function getFileAsTag($attributes) + { + if ($this->getOption('is_image')) + { + return false !== $this->getOption('file_src') ? $this->renderTag('img', array_merge(array('src' => $this->getOption('file_src')), $attributes)) : ''; + } + else + { + return $this->getOption('file_src'); + } + } +} diff --git a/lib/vendor/symfony/lib/widget/sfWidgetFormInputHidden.class.php b/lib/vendor/symfony/lib/widget/sfWidgetFormInputHidden.class.php new file mode 100644 index 0000000..5038a58 --- /dev/null +++ b/lib/vendor/symfony/lib/widget/sfWidgetFormInputHidden.class.php @@ -0,0 +1,36 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormInputHidden represents a hidden HTML input tag. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id: sfWidgetFormInputHidden.class.php 30762 2010-08-25 12:33:33Z fabien $ + */ +class sfWidgetFormInputHidden extends sfWidgetFormInput +{ + /** + * Configures the current widget. + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetFormInput + */ + protected function configure($options = array(), $attributes = array()) + { + parent::configure($options, $attributes); + + $this->setOption('is_hidden', true); + $this->setOption('type', 'hidden'); + } +} diff --git a/lib/vendor/symfony/lib/widget/sfWidgetFormInputPassword.class.php b/lib/vendor/symfony/lib/widget/sfWidgetFormInputPassword.class.php new file mode 100644 index 0000000..a6e6cb5 --- /dev/null +++ b/lib/vendor/symfony/lib/widget/sfWidgetFormInputPassword.class.php @@ -0,0 +1,58 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormInputPassword represents a password HTML input tag. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id: sfWidgetFormInputPassword.class.php 30762 2010-08-25 12:33:33Z fabien $ + */ +class sfWidgetFormInputPassword extends sfWidgetFormInput +{ + /** + * Configures the current widget. + * + * Available options: + * + * * always_render_empty: true if you want the input value to be always empty when rendering (true by default) + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetFormInput + */ + protected function configure($options = array(), $attributes = array()) + { + parent::configure($options, $attributes); + + $this->addOption('always_render_empty', true); + + $this->setOption('type', 'password'); + } + + /** + * Renders the widget. + * + * @param string $name The element name + * @param string $value The password stored in this widget, will be masked by the browser. + * @param array $attributes An array of HTML attributes to be merged with the default HTML attributes + * @param array $errors An array of errors for the field + * + * @return string An HTML tag string + * + * @see sfWidgetForm + */ + public function render($name, $value = null, $attributes = array(), $errors = array()) + { + return parent::render($name, $this->getOption('always_render_empty') ? null : $value, $attributes, $errors); + } +} diff --git a/lib/vendor/symfony/lib/widget/sfWidgetFormInputText.class.php b/lib/vendor/symfony/lib/widget/sfWidgetFormInputText.class.php new file mode 100644 index 0000000..dac3ffe --- /dev/null +++ b/lib/vendor/symfony/lib/widget/sfWidgetFormInputText.class.php @@ -0,0 +1,35 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormInput represents an HTML text input tag. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id: sfWidgetFormInputText.class.php 30762 2010-08-25 12:33:33Z fabien $ + */ +class sfWidgetFormInputText extends sfWidgetFormInput +{ + /** + * Configures the current widget. + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetForm + */ + protected function configure($options = array(), $attributes = array()) + { + parent::configure($options, $attributes); + + $this->setOption('type', 'text'); + } +} diff --git a/lib/vendor/symfony/lib/widget/sfWidgetFormSchema.class.php b/lib/vendor/symfony/lib/widget/sfWidgetFormSchema.class.php new file mode 100644 index 0000000..94f5d48 --- /dev/null +++ b/lib/vendor/symfony/lib/widget/sfWidgetFormSchema.class.php @@ -0,0 +1,866 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormSchema represents an array of fields. + * + * A field is a named validator. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id: sfWidgetFormSchema.class.php 26870 2010-01-19 10:34:52Z fabien $ + */ +class sfWidgetFormSchema extends sfWidgetForm implements ArrayAccess +{ + const + FIRST = 'first', + LAST = 'last', + BEFORE = 'before', + AFTER = 'after'; + + protected static + $defaultFormatterName = 'table'; + + protected + $formFormatters = array(), + $fields = array(), + $positions = array(), + $helps = array(); + + /** + * Constructor. + * + * The first argument can be: + * + * * null + * * an array of sfWidget instances + * + * Available options: + * + * * name_format: The sprintf pattern to use for input names + * * form_formatter: The form formatter name (table and list are bundled) + * + * @param mixed $fields Initial fields + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * @param array $labels An array of HTML labels + * @param array $helps An array of help texts + * + * @throws InvalidArgumentException when the passed fields not null or array + * + * @see sfWidgetForm + */ + public function __construct($fields = null, $options = array(), $attributes = array(), $labels = array(), $helps = array()) + { + $this->addOption('name_format', '%s'); + $this->addOption('form_formatter', null); + + parent::__construct($options, $attributes); + + if (is_array($fields)) + { + foreach ($fields as $name => $widget) + { + $this[$name] = $widget; + } + } + else if (null !== $fields) + { + throw new InvalidArgumentException('sfWidgetFormSchema constructor takes an array of sfWidget objects.'); + } + + $this->setLabels($labels); + $this->helps = $helps; + } + + /** + * Sets the default value for a field. + * + * @param string $name The field name + * @param string $value The default value (required - the default value is here because PHP do not allow signature changes with inheritance) + * + * @return sfWidget The current widget instance + */ + public function setDefault($name, $value = null) + { + $this[$name]->setDefault($value); + + return $this; + } + + /** + * Gets the default value of a field. + * + * @param string $name The field name (required - the default value is here because PHP do not allow signature changes with inheritance) + * + * @return string The default value + */ + public function getDefault($name = null) + { + return $this[$name]->getDefault(); + } + + /** + * Sets the default values for the widget. + * + * @param array $values The default values for the widget + * + * @return sfWidget The current widget instance + */ + public function setDefaults(array $values) + { + foreach ($this->fields as $name => $widget) + { + if (array_key_exists($name, $values)) + { + $widget->setDefault($values[$name]); + } + } + + return $this; + } + + /** + * Returns the defaults values for the widget schema. + * + * @return array An array of default values + */ + public function getDefaults() + { + $defaults = array(); + + foreach ($this->fields as $name => $widget) + { + $defaults[$name] = $widget instanceof sfWidgetFormSchema ? $widget->getDefaults() : $widget->getDefault(); + } + + return $defaults; + } + + /** + * Adds a form formatter. + * + * @param string $name The formatter name + * @param sfWidgetFormSchemaFormatter $formatter An sfWidgetFormSchemaFormatter instance + * + * @return sfWidget The current widget instance + */ + public function addFormFormatter($name, sfWidgetFormSchemaFormatter $formatter) + { + $this->formFormatters[$name] = $formatter; + + return $this; + } + + /** + * Returns all the form formats defined for this form schema. + * + * @return array An array of named form formats + */ + public function getFormFormatters() + { + return $this->formFormatters; + } + + /** + * Sets the generic default formatter name used by the class. If you want all + * of your forms to be generated with the list format, you can + * do it in a project or application configuration class: + * + *
        +   * class ProjectConfiguration extends sfProjectConfiguration
        +   * {
        +   *   public function setup()
        +   *   {
        +   *     sfWidgetFormSchema::setDefaultFormFormatterName('list');
        +   *   }
        +   * }
        +   * 
        + * + * @param string $name New default formatter name + */ + static public function setDefaultFormFormatterName($name) + { + self::$defaultFormatterName = $name; + } + + /** + * Sets the form formatter name to use when rendering the widget schema. + * + * @param string $name The form formatter name + * + * @return sfWidget The current widget instance + */ + public function setFormFormatterName($name) + { + $this->options['form_formatter'] = $name; + + return $this; + } + + /** + * Gets the form formatter name that will be used to render the widget schema. + * + * @return string The form formatter name + */ + public function getFormFormatterName() + { + return null === $this->options['form_formatter'] ? self::$defaultFormatterName : $this->options['form_formatter']; + } + + /** + * Returns the form formatter to use for widget schema rendering + * + * @return sfWidgetFormSchemaFormatter sfWidgetFormSchemaFormatter instance + * + * @throws InvalidArgumentException when the form formatter not exists + */ + public function getFormFormatter() + { + $name = $this->getFormFormatterName(); + + if (!isset($this->formFormatters[$name])) + { + $class = 'sfWidgetFormSchemaFormatter'.ucfirst($name); + + if (!class_exists($class)) + { + throw new InvalidArgumentException(sprintf('The form formatter "%s" does not exist.', $name)); + } + + $this->formFormatters[$name] = new $class($this); + } + + return $this->formFormatters[$name]; + } + + /** + * Sets the format string for the name HTML attribute. + * + * If you are using the form framework with symfony, do not use a reserved word in the + * name format. If you do, symfony may act in an unexpected manner. + * + * For symfony 1.1+, the following words are reserved and must NOT be used as + * the name format: + * + * * module (example: module[%s]) + * * action (example: action[%s]) + * + * However, you CAN use other variations, such as actions[%s] (note the s). + * + * @param string $format The format string (must contain a %s for the name placeholder) + * + * @return sfWidget The current widget instance + * + * @throws InvalidArgumentException when no %s exists in the format + */ + public function setNameFormat($format) + { + if (false !== $format && false === strpos($format, '%s')) + { + throw new InvalidArgumentException(sprintf('The name format must contain %%s ("%s" given)', $format)); + } + + $this->options['name_format'] = $format; + + return $this; + } + + /** + * Gets the format string for the name HTML attribute. + * + * @return string The format string + */ + public function getNameFormat() + { + return $this->options['name_format']; + } + + /** + * Sets the label names to render for each field. + * + * @param array $labels An array of label names + * + * @return sfWidget The current widget instance + */ + public function setLabels(array $labels) + { + foreach ($this->fields as $name => $widget) + { + if (array_key_exists($name, $labels)) + { + $widget->setLabel($labels[$name]); + } + } + + return $this; + } + + /** + * Gets the labels. + * + * @return array An array of label names + */ + public function getLabels() + { + $labels = array(); + + foreach ($this->fields as $name => $widget) + { + $labels[$name] = $widget->getLabel(); + } + + return $labels; + } + + /** + * Sets a label. + * + * @param string $name The field name + * @param string $value The label name (required - the default value is here because PHP do not allow signature changes with inheritance) + * + * @return sfWidget The current widget instance + * + * @throws InvalidArgumentException when you try to set a label on a none existing widget + */ + public function setLabel($name, $value = null) + { + if (2 == func_num_args()) + { + if (!isset($this->fields[$name])) + { + throw new InvalidArgumentException(sprintf('Unable to set the label on an unexistant widget ("%s").', $name)); + } + + $this->fields[$name]->setLabel($value); + } + else + { + // set the label for this widget schema + parent::setLabel($name); + } + + return $this; + } + + /** + * Gets a label by field name. + * + * @param string $name The field name (required - the default value is here because PHP do not allow signature changes with inheritance) + * + * @return string The label name or an empty string if it is not defined + * + * @throws InvalidArgumentException when you try to get a label for a none existing widget + */ + public function getLabel($name = null) + { + if (1 == func_num_args()) + { + if (!isset($this->fields[$name])) + { + throw new InvalidArgumentException(sprintf('Unable to get the label on an unexistant widget ("%s").', $name)); + } + + return $this->fields[$name]->getLabel(); + } + else + { + // label for this widget schema + return parent::getLabel(); + } + } + + /** + * Sets the help texts to render for each field. + * + * @param array $helps An array of help texts + * + * @return sfWidget The current widget instance + */ + public function setHelps(array $helps) + { + $this->helps = $helps; + + return $this; + } + + /** + * Sets the help texts. + * + * @return array An array of help texts + */ + public function getHelps() + { + return $this->helps; + } + + /** + * Sets a help text. + * + * @param string $name The field name + * @param string $help The help text + * + * @return sfWidget The current widget instance + */ + public function setHelp($name, $help) + { + $this->helps[$name] = $help; + + return $this; + } + + /** + * Gets a text help by field name. + * + * @param string $name The field name + * + * @return string The help text or an empty string if it is not defined + */ + public function getHelp($name) + { + return array_key_exists($name, $this->helps) ? $this->helps[$name] : ''; + } + + /** + * Gets the stylesheet paths associated with the widget. + * + * @return array An array of stylesheet paths + */ + public function getStylesheets() + { + $stylesheets = array(); + + foreach ($this->fields as $field) + { + $stylesheets = array_merge($stylesheets, $field->getStylesheets()); + } + + return $stylesheets; + } + + /** + * Gets the JavaScript paths associated with the widget. + * + * @return array An array of JavaScript paths + */ + public function getJavaScripts() + { + $javascripts = array(); + + foreach ($this->fields as $field) + { + $javascripts = array_merge($javascripts, $field->getJavaScripts()); + } + + return array_unique($javascripts); + } + + /** + * Returns true if the widget schema needs a multipart form. + * + * @return bool true if the widget schema needs a multipart form, false otherwise + */ + public function needsMultipartForm() + { + foreach ($this->fields as $field) + { + if ($field->needsMultipartForm()) + { + return true; + } + } + + return false; + } + + /** + * Renders a field by name. + * + * @param string $name The field name + * @param string $value The field value + * @param array $attributes An array of HTML attributes to be merged with the current HTML attributes + * @param array $errors An array of errors for the field + * + * @return string An HTML string representing the rendered widget + * + * @throws InvalidArgumentException when the widget not exist + */ + public function renderField($name, $value = null, $attributes = array(), $errors = array()) + { + if (null === $widget = $this[$name]) + { + throw new InvalidArgumentException(sprintf('The field named "%s" does not exist.', $name)); + } + + if ($widget instanceof sfWidgetFormSchema && $errors && !$errors instanceof sfValidatorErrorSchema) + { + $errors = new sfValidatorErrorSchema($errors->getValidator(), array($errors)); + } + + // we clone the widget because we want to change the id format temporarily + $clone = clone $widget; + $clone->setIdFormat($this->options['id_format']); + + return $clone->render($this->generateName($name), $value, array_merge($clone->getAttributes(), $attributes), $errors); + } + + /** + * Renders the widget. + * + * @param string $name The name of the HTML widget + * @param mixed $values The values of the widget + * @param array $attributes An array of HTML attributes + * @param array $errors An array of errors + * + * @return string An HTML representation of the widget + * + * @throws InvalidArgumentException when values type is not array|ArrayAccess + */ + public function render($name, $values = array(), $attributes = array(), $errors = array()) + { + if (null === $values) + { + $values = array(); + } + + if (!is_array($values) && !$values instanceof ArrayAccess) + { + throw new InvalidArgumentException('You must pass an array of values to render a widget schema'); + } + + $formFormat = $this->getFormFormatter(); + + $rows = array(); + $hiddenRows = array(); + $errorRows = array(); + + // render each field + foreach ($this->positions as $name) + { + $widget = $this[$name]; + $value = isset($values[$name]) ? $values[$name] : null; + $error = isset($errors[$name]) ? $errors[$name] : array(); + $widgetAttributes = isset($attributes[$name]) ? $attributes[$name] : array(); + + if ($widget instanceof sfWidgetForm && $widget->isHidden()) + { + $hiddenRows[] = $this->renderField($name, $value, $widgetAttributes); + } + else + { + $field = $this->renderField($name, $value, $widgetAttributes, $error); + + // don't add a label tag and errors if we embed a form schema + $label = $widget instanceof sfWidgetFormSchema ? $this->getFormFormatter()->generateLabelName($name) : $this->getFormFormatter()->generateLabel($name); + $error = $widget instanceof sfWidgetFormSchema ? array() : $error; + + $rows[] = $formFormat->formatRow($label, $field, $error, $this->getHelp($name)); + } + } + + if ($rows) + { + // insert hidden fields in the last row + for ($i = 0, $max = count($rows); $i < $max; $i++) + { + $rows[$i] = strtr($rows[$i], array('%hidden_fields%' => $i == $max - 1 ? implode("\n", $hiddenRows) : '')); + } + } + else + { + // only hidden fields + $rows[0] = implode("\n", $hiddenRows); + } + + return $this->getFormFormatter()->formatErrorRow($this->getGlobalErrors($errors)).implode('', $rows); + } + + /** + * Gets errors that need to be included in global errors. + * + * @param array $errors An array of errors + * + * @return string An HTML representation of global errors for the widget + */ + public function getGlobalErrors($errors) + { + $globalErrors = array(); + + // global errors and errors for non existent fields + if (null !== $errors) + { + foreach ($errors as $name => $error) + { + if (!isset($this->fields[$name])) + { + $globalErrors[] = $error; + } + } + } + + // errors for hidden fields + foreach ($this->positions as $name) + { + if ($this[$name] instanceof sfWidgetForm && $this[$name]->isHidden()) + { + if (isset($errors[$name])) + { + $globalErrors[$this->getFormFormatter()->generateLabelName($name)] = $errors[$name]; + } + } + } + + return $globalErrors; + } + + /** + * Generates a name. + * + * @param string $name The name + * + * @return string The generated name + */ + public function generateName($name) + { + $format = $this->getNameFormat(); + + if ('[%s]' == substr($format, -4) && preg_match('/^(.+?)\[(.+)\]$/', $name, $match)) + { + $name = sprintf('%s[%s][%s]', substr($format, 0, -4), $match[1], $match[2]); + } + else if (false !== $format) + { + $name = sprintf($format, $name); + } + + if ($parent = $this->getParent()) + { + $name = $parent->generateName($name); + } + + return $name; + } + + /** + * Returns true if the schema has a field with the given name (implements the ArrayAccess interface). + * + * @param string $name The field name + * + * @return bool true if the schema has a field with the given name, false otherwise + */ + public function offsetExists($name) + { + return isset($this->fields[$name]); + } + + /** + * Gets the field associated with the given name (implements the ArrayAccess interface). + * + * @param string $name The field name + * + * @return sfWidget|null The sfWidget instance associated with the given name, null if it does not exist + */ + public function offsetGet($name) + { + return isset($this->fields[$name]) ? $this->fields[$name] : null; + } + + /** + * Sets a field (implements the ArrayAccess interface). + * + * @param string $name The field name + * @param sfWidget $widget An sfWidget instance + * + * @throws InvalidArgumentException when the field is not instance of sfWidget + */ + public function offsetSet($name, $widget) + { + if (!$widget instanceof sfWidget) + { + throw new InvalidArgumentException('A field must be an instance of sfWidget.'); + } + + if (!isset($this->fields[$name])) + { + $this->positions[] = (string) $name; + } + + $this->fields[$name] = clone $widget; + $this->fields[$name]->setParent($this); + + if ($widget instanceof sfWidgetFormSchema) + { + $this->fields[$name]->setNameFormat($name.'[%s]'); + } + } + + /** + * Removes a field by name (implements the ArrayAccess interface). + * + * @param string $name field name + */ + public function offsetUnset($name) + { + unset($this->fields[$name]); + if (false !== $position = array_search((string) $name, $this->positions)) + { + unset($this->positions[$position]); + + $this->positions = array_values($this->positions); + } + } + + /** + * Returns an array of fields. + * + * @return sfWidget An array of sfWidget instance + */ + public function getFields() + { + return $this->fields; + } + + /** + * Gets the positions of the fields. + * + * The field positions are only used when rendering the schema with ->render(). + * + * @return array An ordered array of field names + */ + public function getPositions() + { + return $this->positions; + } + + /** + * Sets the positions of the fields. + * + * @param array $positions An ordered array of field names + * + * @return sfWidget The current widget instance + * + * @throws InvalidArgumentException when not all fields set in $positions + * + * @see getPositions() + */ + public function setPositions(array $positions) + { + $positions = array_unique(array_values($positions)); + $current = array_keys($this->fields); + + if ($diff = array_diff($positions, $current)) + { + throw new InvalidArgumentException('Widget schema does not include the following field(s): '.implode(', ', $diff)); + } + + if ($diff = array_diff($current, $positions)) + { + throw new InvalidArgumentException('Positions array must include all fields. Missing: '.implode(', ', $diff)); + } + + foreach ($positions as &$position) + { + $position = (string) $position; + } + + $this->positions = $positions; + + return $this; + } + + /** + * Moves a field in a given position + * + * Available actions are: + * + * * sfWidgetFormSchema::BEFORE + * * sfWidgetFormSchema::AFTER + * * sfWidgetFormSchema::LAST + * * sfWidgetFormSchema::FIRST + * + * @param string $field The field name to move + * @param constant $action The action (see above for all possible actions) + * @param string $pivot The field name used for AFTER and BEFORE actions + * + * @throws InvalidArgumentException when field not exist + * @throws InvalidArgumentException when relative field not exist + * @throws LogicException when you try to move a field without a relative field + * @throws LogicException when the $action not exist + */ + public function moveField($field, $action, $pivot = null) + { + $field = (string) $field; + if (false === $fieldPosition = array_search($field, $this->positions)) + { + throw new InvalidArgumentException(sprintf('Field "%s" does not exist.', $field)); + } + unset($this->positions[$fieldPosition]); + $this->positions = array_values($this->positions); + + if (null !== $pivot) + { + $pivot = (string) $pivot; + if (false === $pivotPosition = array_search($pivot, $this->positions)) + { + throw new InvalidArgumentException(sprintf('Field "%s" does not exist.', $pivot)); + } + } + + switch ($action) + { + case sfWidgetFormSchema::FIRST: + array_unshift($this->positions, $field); + break; + case sfWidgetFormSchema::LAST: + array_push($this->positions, $field); + break; + case sfWidgetFormSchema::BEFORE: + if (null === $pivot) + { + throw new LogicException(sprintf('Unable to move field "%s" without a relative field.', $field)); + } + $this->positions = array_merge( + array_slice($this->positions, 0, $pivotPosition), + array($field), + array_slice($this->positions, $pivotPosition) + ); + break; + case sfWidgetFormSchema::AFTER: + if (null === $pivot) + { + throw new LogicException(sprintf('Unable to move field "%s" without a relative field.', $field)); + } + $this->positions = array_merge( + array_slice($this->positions, 0, $pivotPosition + 1), + array($field), + array_slice($this->positions, $pivotPosition + 1) + ); + break; + default: + throw new LogicException(sprintf('Unknown move operation for field "%s".', $field)); + } + } + + public function __clone() + { + foreach ($this->fields as $name => $field) + { + // offsetSet will clone the field and change the parent + $this[$name] = $field; + } + + foreach ($this->formFormatters as &$formFormatter) + { + $formFormatter = clone $formFormatter; + $formFormatter->setWidgetSchema($this); + } + } +} diff --git a/lib/vendor/symfony/lib/widget/sfWidgetFormSchemaDecorator.class.php b/lib/vendor/symfony/lib/widget/sfWidgetFormSchemaDecorator.class.php new file mode 100644 index 0000000..aedc28d --- /dev/null +++ b/lib/vendor/symfony/lib/widget/sfWidgetFormSchemaDecorator.class.php @@ -0,0 +1,355 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormSchemaDecorator wraps a form schema widget inside a given HTML snippet. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id: sfWidgetFormSchemaDecorator.class.php 30762 2010-08-25 12:33:33Z fabien $ + */ +class sfWidgetFormSchemaDecorator extends sfWidgetFormSchema +{ + protected + $widget = null, + $decorator = ''; + + /** + * Constructor. + * + * @param sfWidgetFormSchema $widget A sfWidgetFormSchema instance + * @param string $decorator A decorator string + * + * @see sfWidgetFormSchema + */ + public function __construct(sfWidgetFormSchema $widget, $decorator) + { + $this->widget = $widget; + $this->decorator = $decorator; + + parent::__construct(); + } + + /** + * Returns the decorated widget. + * + * @param sfWidget The decorated widget + */ + public function getWidget() + { + return $this->widget; + } + + /** + * Renders the widget. + * + * @param string $name The element name + * @param string $values The value displayed in this widget + * @param array $attributes An array of HTML attributes to be merged with the default HTML attributes + * @param array $errors An array of errors for the field + * + * @see sfWidget + */ + public function render($name, $values = array(), $attributes = array(), $errors = array()) + { + return strtr($this->decorator, array('%content%' => $this->widget->render($name, $values, $attributes, $errors))); + } + + /** + * @see sfWidgetFormSchema + */ + public function addFormFormatter($name, sfWidgetFormSchemaFormatter $formatter) + { + $this->widget->addFormFormatter($name, $formatter); + + return $this; + } + + /** + * @see sfWidgetFormSchema + */ + public function getFormFormatters() + { + return $this->widget->getFormFormatters(); + } + + /** + * @see sfWidgetFormSchema + */ + public function setFormFormatterName($name) + { + $this->widget->setFormFormatterName($name); + + return $this; + } + + /** + * @see sfWidgetFormSchema + */ + public function getFormFormatterName() + { + return $this->widget->getFormFormatterName(); + } + + /** + * @see sfWidgetFormSchema + */ + public function getFormFormatter() + { + return $this->widget->getFormFormatter(); + } + + /** + * @see sfWidgetFormSchema + */ + public function setNameFormat($format) + { + $this->widget->setNameFormat($format); + + return $this; + } + + /** + * @see sfWidgetFormSchema + */ + public function getNameFormat() + { + return $this->widget->getNameFormat(); + } + + /** + * @see sfWidgetFormSchema + */ + public function setLabels(array $labels) + { + $this->widget->setLabels($labels); + + return $this; + } + + /** + * @see sfWidgetFormSchema + */ + public function getLabels() + { + return $this->widget->getLabels(); + } + + /** + * @see sfWidgetFormSchema + */ + public function setLabel($name, $value = null) + { + if (2 == func_num_args()) + { + $this->widget->setLabel($name, $value); + } + else + { + $this->widget->setLabel($name); + } + + return $this; + } + + /** + * @see sfWidgetFormSchema + */ + public function getLabel($name = null) + { + return 1 == func_num_args() ? $this->widget->getLabel($name) : $this->widget->getLabel(); + } + + /** + * @see sfWidgetFormSchema + */ + public function setHelps(array $helps) + { + $this->widget->setHelps($helps); + + return $this; + } + + /** + * @see sfWidgetFormSchema + */ + public function getHelps() + { + return $this->widget->getHelps(); + } + + /** + * @see sfWidgetFormSchema + */ + public function setHelp($name, $help) + { + $this->widget->setHelp($name, $help); + + return $this; + } + + /** + * @see sfWidgetFormSchema + */ + public function getHelp($name) + { + return $this->widget->getHelp($name); + } + + /** + * Gets the stylesheet paths associated with the widget. + * + * @return array An array of stylesheet paths + */ + public function getStylesheets() + { + return $this->widget->getStylesheets(); + } + + /** + * Gets the JavaScript paths associated with the widget. + * + * @return array An array of JavaScript paths + */ + public function getJavaScripts() + { + return $this->widget->getJavaScripts(); + } + + /** + * @see sfWidgetFormSchema + */ + public function needsMultipartForm() + { + return $this->widget->needsMultipartForm(); + } + + /** + * @see sfWidgetFormSchema + */ + public function renderField($name, $value = null, $attributes = array(), $errors = array()) + { + return $this->widget->renderField($name, $value, $attributes, $errors); + } + + /** + * @see sfWidgetFormSchemaFormatter + */ + public function generateLabel($name) + { + return $this->widget->getFormFormatter()->generateLabel($name); + } + + /** + * @see sfWidgetFormSchemaFormatter + */ + public function generateLabelName($name) + { + return $this->widget->getFormFormatter()->generateLabelName($name); + } + + /** + * @see sfWidgetFormSchema + */ + public function generateName($name) + { + return $this->widget->generateName($name); + } + + /** + * @see sfWidgetFormSchema + */ + public function getParent() + { + return $this->widget->getParent(); + } + + /** + * @see sfWidgetFormSchema + */ + public function setParent(sfWidgetFormSchema $parent = null) + { + $this->widget->setParent($parent); + + return $this; + } + + /** + * @see sfWidgetFormSchema + */ + public function getFields() + { + return $this->widget->getFields(); + } + + /** + * @see sfWidgetFormSchema + */ + public function getPositions() + { + return $this->widget->getPositions(); + } + + /** + * @see sfWidgetFormSchema + */ + public function setPositions(array $positions) + { + $this->widget->setPositions($positions); + + return $this; + } + + /** + * @see sfWidgetFormSchema + */ + public function moveField($field, $action, $pivot = null) + { + return $this->widget->moveField($field, $action, $pivot); + } + + /** + * @see sfWidgetFormSchema + */ + public function offsetExists($name) + { + return isset($this->widget[$name]); + } + + /** + * @see sfWidgetFormSchema + */ + public function offsetGet($name) + { + return $this->widget[$name]; + } + + /** + * @see sfWidgetFormSchema + */ + public function offsetSet($name, $widget) + { + $this->widget[$name] = $widget; + } + + /** + * @see sfWidgetFormSchema + */ + public function offsetUnset($name) + { + unset($this->widget[$name]); + } + + public function __clone() + { + $this->widget = clone $this->widget; + } +} diff --git a/lib/vendor/symfony/lib/widget/sfWidgetFormSchemaForEach.class.php b/lib/vendor/symfony/lib/widget/sfWidgetFormSchemaForEach.class.php new file mode 100644 index 0000000..75858a7 --- /dev/null +++ b/lib/vendor/symfony/lib/widget/sfWidgetFormSchemaForEach.class.php @@ -0,0 +1,36 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormSchemaForEach duplicates a given widget multiple times in a widget schema. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id: sfWidgetFormSchemaForEach.class.php 9046 2008-05-19 08:13:51Z FabianLange $ + */ +class sfWidgetFormSchemaForEach extends sfWidgetFormSchema +{ + /** + * Constructor. + * + * @param sfWidgetFormSchema $widget An sfWidgetFormSchema instance + * @param integer $count The number of times to duplicate the widget + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * @param array $labels An array of HTML labels + * + * @see sfWidgetFormSchema + */ + public function __construct(sfWidgetFormSchema $widget, $count, $options = array(), $attributes = array(), $labels = array()) + { + parent::__construct(array_fill(0, $count, $widget), $options, $attributes, $labels); + } +} diff --git a/lib/vendor/symfony/lib/widget/sfWidgetFormSchemaFormatter.class.php b/lib/vendor/symfony/lib/widget/sfWidgetFormSchemaFormatter.class.php new file mode 100644 index 0000000..172965b --- /dev/null +++ b/lib/vendor/symfony/lib/widget/sfWidgetFormSchemaFormatter.class.php @@ -0,0 +1,346 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormSchemaFormatter allows to format a form schema with HTML formats. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id: sfWidgetFormSchemaFormatter.class.php 21908 2009-09-11 12:06:21Z fabien $ + */ +abstract class sfWidgetFormSchemaFormatter +{ + protected static + $translationCallable = null; + + protected + $rowFormat = '', + $helpFormat = '%help%', + $errorRowFormat = '%errors%', + $errorListFormatInARow = "
          \n%errors%
        \n", + $errorRowFormatInARow = "
      • %error%
      • \n", + $namedErrorRowFormatInARow = "
      • %name%: %error%
      • \n", + $decoratorFormat = '', + $widgetSchema = null, + $translationCatalogue = null; + + /** + * Constructor + * + * @param sfWidgetFormSchema $widgetSchema + */ + public function __construct(sfWidgetFormSchema $widgetSchema) + { + $this->setWidgetSchema($widgetSchema); + } + + public function formatRow($label, $field, $errors = array(), $help = '', $hiddenFields = null) + { + return strtr($this->getRowFormat(), array( + '%label%' => $label, + '%field%' => $field, + '%error%' => $this->formatErrorsForRow($errors), + '%help%' => $this->formatHelp($help), + '%hidden_fields%' => null === $hiddenFields ? '%hidden_fields%' : $hiddenFields, + )); + } + + /** + * Translates a string using an i18n callable, if it has been provided + * + * @param mixed $subject The subject to translate + * @param array $parameters Additional parameters to pass back to the callable + * @return string + */ + public function translate($subject, $parameters = array()) + { + if (false === $subject) + { + return false; + } + + if (null === self::$translationCallable) + { + // replace object with strings + foreach ($parameters as $key => $value) + { + if (is_object($value) && method_exists($value, '__toString')) + { + $parameters[$key] = $value->__toString(); + } + } + + return strtr($subject, $parameters); + } + + $catalogue = $this->getTranslationCatalogue(); + + if (self::$translationCallable instanceof sfCallable) + { + return self::$translationCallable->call($subject, $parameters, $catalogue); + } + + return call_user_func(self::$translationCallable, $subject, $parameters, $catalogue); + } + + /** + * Returns the current i18n callable + * + * @return mixed + */ + static public function getTranslationCallable() + { + return self::$translationCallable; + } + + /** + * Sets a callable which aims to translate form labels, errors and help messages + * + * @param mixed $callable + * + * @throws InvalidArgumentException if an invalid php callable or sfCallable has been provided + */ + static public function setTranslationCallable($callable) + { + if (!$callable instanceof sfCallable && !is_callable($callable)) + { + throw new InvalidArgumentException('Provided i18n callable should be either an instance of sfCallable or a valid PHP callable'); + } + + self::$translationCallable = $callable; + } + + public function formatHelp($help) + { + if (!$help) + { + return ''; + } + + return strtr($this->getHelpFormat(), array('%help%' => $this->translate($help))); + } + + public function formatErrorRow($errors) + { + if (null === $errors || !$errors) + { + return ''; + } + + return strtr($this->getErrorRowFormat(), array('%errors%' => $this->formatErrorsForRow($errors))); + } + + public function formatErrorsForRow($errors) + { + if (null === $errors || !$errors) + { + return ''; + } + + if (!is_array($errors)) + { + $errors = array($errors); + } + + return strtr($this->getErrorListFormatInARow(), array('%errors%' => implode('', $this->unnestErrors($errors)))); + } + + /** + * Generates a label for the given field name. + * + * @param string $name The field name + * @param array $attributes Optional html attributes for the label tag + * + * @return string The label tag + */ + public function generateLabel($name, $attributes = array()) + { + $labelName = $this->generateLabelName($name); + + if (false === $labelName) + { + return ''; + } + + if (!isset($attributes['for'])) + { + $attributes['for'] = $this->widgetSchema->generateId($this->widgetSchema->generateName($name)); + } + + return $this->widgetSchema->renderContentTag('label', $labelName, $attributes); + } + + /** + * Generates the label name for the given field name. + * + * @param string $name The field name + * + * @return string The label name + */ + public function generateLabelName($name) + { + $label = $this->widgetSchema->getLabel($name); + + if (!$label && false !== $label) + { + $label = str_replace('_', ' ', ucfirst('_id' == substr($name, -3) ? substr($name, 0, -3) : $name)); + } + + return $this->translate($label); + } + + /** + * Get i18n catalogue name + * + * @return string + */ + public function getTranslationCatalogue() + { + return $this->translationCatalogue; + } + + /** + * Set an i18n catalogue name + * + * @param string $catalogue + * + * @throws InvalidArgumentException when the catalogue is not a string + */ + public function setTranslationCatalogue($catalogue) + { + if (!is_string($catalogue)) + { + throw new InvalidArgumentException('Catalogue name must be a string'); + } + + $this->translationCatalogue = $catalogue; + } + + protected function unnestErrors($errors, $prefix = '') + { + $newErrors = array(); + + foreach ($errors as $name => $error) + { + if ($error instanceof ArrayAccess || is_array($error)) + { + $newErrors = array_merge($newErrors, $this->unnestErrors($error, ($prefix ? $prefix.' > ' : '').$name)); + } + else + { + if ($error instanceof sfValidatorError) + { + $err = $this->translate($error->getMessageFormat(), $error->getArguments()); + } + else + { + $err = $this->translate($error); + } + + if (!is_integer($name)) + { + $newErrors[] = strtr($this->getNamedErrorRowFormatInARow(), array('%error%' => $err, '%name%' => ($prefix ? $prefix.' > ' : '').$name)); + } + else + { + $newErrors[] = strtr($this->getErrorRowFormatInARow(), array('%error%' => $err)); + } + } + } + + return $newErrors; + } + + public function setRowFormat($format) + { + $this->rowFormat = $format; + } + + public function getRowFormat() + { + return $this->rowFormat; + } + + public function setErrorRowFormat($format) + { + $this->errorRowFormat = $format; + } + + public function getErrorRowFormat() + { + return $this->errorRowFormat; + } + + public function setErrorListFormatInARow($format) + { + $this->errorListFormatInARow = $format; + } + + public function getErrorListFormatInARow() + { + return $this->errorListFormatInARow; + } + + public function setErrorRowFormatInARow($format) + { + $this->errorRowFormatInARow = $format; + } + + public function getErrorRowFormatInARow() + { + return $this->errorRowFormatInARow; + } + + public function setNamedErrorRowFormatInARow($format) + { + $this->namedErrorRowFormatInARow = $format; + } + + public function getNamedErrorRowFormatInARow() + { + return $this->namedErrorRowFormatInARow; + } + + public function setDecoratorFormat($format) + { + $this->decoratorFormat = $format; + } + + public function getDecoratorFormat() + { + return $this->decoratorFormat; + } + + public function setHelpFormat($format) + { + $this->helpFormat = $format; + } + + public function getHelpFormat() + { + return $this->helpFormat; + } + + /** + * Sets the widget schema associated with this formatter instance. + * + * @param sfWidgetFormSchema $widgetSchema A sfWidgetFormSchema instance + */ + public function setWidgetSchema(sfWidgetFormSchema $widgetSchema) + { + $this->widgetSchema = $widgetSchema; + } + + public function getWidgetSchema() + { + return $this->widgetSchema; + } +} diff --git a/lib/vendor/symfony/lib/widget/sfWidgetFormSchemaFormatterList.class.php b/lib/vendor/symfony/lib/widget/sfWidgetFormSchemaFormatterList.class.php new file mode 100644 index 0000000..e4c229f --- /dev/null +++ b/lib/vendor/symfony/lib/widget/sfWidgetFormSchemaFormatterList.class.php @@ -0,0 +1,26 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id: sfWidgetFormSchemaFormatterList.class.php 5995 2007-11-13 15:50:03Z fabien $ + */ +class sfWidgetFormSchemaFormatterList extends sfWidgetFormSchemaFormatter +{ + protected + $rowFormat = "
      • \n %error%%label%\n %field%%help%\n%hidden_fields%
      • \n", + $errorRowFormat = "
      • \n%errors%
      • \n", + $helpFormat = '
        %help%', + $decoratorFormat = "
          \n %content%
        "; +} diff --git a/lib/vendor/symfony/lib/widget/sfWidgetFormSchemaFormatterTable.class.php b/lib/vendor/symfony/lib/widget/sfWidgetFormSchemaFormatterTable.class.php new file mode 100644 index 0000000..ba7ab35 --- /dev/null +++ b/lib/vendor/symfony/lib/widget/sfWidgetFormSchemaFormatterTable.class.php @@ -0,0 +1,26 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id: sfWidgetFormSchemaFormatterTable.class.php 5995 2007-11-13 15:50:03Z fabien $ + */ +class sfWidgetFormSchemaFormatterTable extends sfWidgetFormSchemaFormatter +{ + protected + $rowFormat = "\n %label%\n %error%%field%%help%%hidden_fields%\n\n", + $errorRowFormat = "\n%errors%\n", + $helpFormat = '
        %help%', + $decoratorFormat = "\n %content%
        "; +} diff --git a/lib/vendor/symfony/lib/widget/sfWidgetFormSelect.class.php b/lib/vendor/symfony/lib/widget/sfWidgetFormSelect.class.php new file mode 100644 index 0000000..72155de --- /dev/null +++ b/lib/vendor/symfony/lib/widget/sfWidgetFormSelect.class.php @@ -0,0 +1,114 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormSelect represents a select HTML tag. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id: sfWidgetFormSelect.class.php 30762 2010-08-25 12:33:33Z fabien $ + */ +class sfWidgetFormSelect extends sfWidgetFormChoiceBase +{ + /** + * Constructor. + * + * Available options: + * + * * choices: An array of possible choices (required) + * * multiple: true if the select tag must allow multiple selections + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetFormChoiceBase + */ + protected function configure($options = array(), $attributes = array()) + { + parent::configure($options, $attributes); + + $this->addOption('multiple', false); + } + + /** + * Renders the widget. + * + * @param string $name The element name + * @param string $value The value selected in this widget + * @param array $attributes An array of HTML attributes to be merged with the default HTML attributes + * @param array $errors An array of errors for the field + * + * @return string An HTML tag string + * + * @see sfWidgetForm + */ + public function render($name, $value = null, $attributes = array(), $errors = array()) + { + if ($this->getOption('multiple')) + { + $attributes['multiple'] = 'multiple'; + + if ('[]' != substr($name, -2)) + { + $name .= '[]'; + } + } + + $choices = $this->getChoices(); + + return $this->renderContentTag('select', "\n".implode("\n", $this->getOptionsForSelect($value, $choices))."\n", array_merge(array('name' => $name), $attributes)); + } + + /** + * Returns an array of option tags for the given choices + * + * @param string $value The selected value + * @param array $choices An array of choices + * + * @return array An array of option tags + */ + protected function getOptionsForSelect($value, $choices) + { + $mainAttributes = $this->attributes; + $this->attributes = array(); + + if (!is_array($value)) + { + $value = array($value); + } + + $value = array_map('strval', array_values($value)); + $value_set = array_flip($value); + + $options = array(); + foreach ($choices as $key => $option) + { + if (is_array($option)) + { + $options[] = $this->renderContentTag('optgroup', implode("\n", $this->getOptionsForSelect($value, $option)), array('label' => self::escapeOnce($key))); + } + else + { + $attributes = array('value' => self::escapeOnce($key)); + if (isset($value_set[strval($key)])) + { + $attributes['selected'] = 'selected'; + } + + $options[] = $this->renderContentTag('option', self::escapeOnce($option), $attributes); + } + } + + $this->attributes = $mainAttributes; + + return $options; + } +} diff --git a/lib/vendor/symfony/lib/widget/sfWidgetFormSelectCheckbox.class.php b/lib/vendor/symfony/lib/widget/sfWidgetFormSelectCheckbox.class.php new file mode 100644 index 0000000..973ce52 --- /dev/null +++ b/lib/vendor/symfony/lib/widget/sfWidgetFormSelectCheckbox.class.php @@ -0,0 +1,129 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormSelectCheckbox represents an array of checkboxes. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id: sfWidgetFormSelectCheckbox.class.php 33362 2012-03-08 13:53:08Z fabien $ + */ +class sfWidgetFormSelectCheckbox extends sfWidgetFormChoiceBase +{ + /** + * Constructor. + * + * Available options: + * + * * choices: An array of possible choices (required) + * * label_separator: The separator to use between the input checkbox and the label + * * class: The class to use for the main
          tag + * * separator: The separator to use between each input checkbox + * * formatter: A callable to call to format the checkbox choices + * The formatter callable receives the widget and the array of inputs as arguments + * * template: The template to use when grouping option in groups (%group% %options%) + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetFormChoiceBase + */ + protected function configure($options = array(), $attributes = array()) + { + parent::configure($options, $attributes); + + $this->addOption('class', 'checkbox_list'); + $this->addOption('label_separator', ' '); + $this->addOption('separator', "\n"); + $this->addOption('formatter', array($this, 'formatter')); + $this->addOption('template', '%group% %options%'); + } + + /** + * Renders the widget. + * + * @param string $name The element name + * @param string $value The value selected in this widget + * @param array $attributes An array of HTML attributes to be merged with the default HTML attributes + * @param array $errors An array of errors for the field + * + * @return string An HTML tag string + * + * @see sfWidgetForm + */ + public function render($name, $value = null, $attributes = array(), $errors = array()) + { + if ('[]' != substr($name, -2)) + { + $name .= '[]'; + } + + if (null === $value) + { + $value = array(); + } + + $choices = $this->getChoices(); + + // with groups? + if (count($choices) && is_array(current($choices))) + { + $parts = array(); + foreach ($choices as $key => $option) + { + $parts[] = strtr($this->getOption('template'), array('%group%' => $key, '%options%' => $this->formatChoices($name, $value, $option, $attributes))); + } + + return implode("\n", $parts); + } + else + { + return $this->formatChoices($name, $value, $choices, $attributes); + } + } + + protected function formatChoices($name, $value, $choices, $attributes) + { + $inputs = array(); + foreach ($choices as $key => $option) + { + $baseAttributes = array( + 'name' => $name, + 'type' => 'checkbox', + 'value' => self::escapeOnce($key), + 'id' => $id = $this->generateId($name, self::escapeOnce($key)), + ); + + if ((is_array($value) && in_array(strval($key), $value)) || (is_string($value) && strval($key) == strval($value))) + { + $baseAttributes['checked'] = 'checked'; + } + + $inputs[$id] = array( + 'input' => $this->renderTag('input', array_merge($baseAttributes, $attributes)), + 'label' => $this->renderContentTag('label', self::escapeOnce($option), array('for' => $id)), + ); + } + + return call_user_func($this->getOption('formatter'), $this, $inputs); + } + + public function formatter($widget, $inputs) + { + $rows = array(); + foreach ($inputs as $input) + { + $rows[] = $this->renderContentTag('li', $input['input'].$this->getOption('label_separator').$input['label']); + } + + return !$rows ? '' : $this->renderContentTag('ul', implode($this->getOption('separator'), $rows), array('class' => $this->getOption('class'))); + } +} diff --git a/lib/vendor/symfony/lib/widget/sfWidgetFormSelectMany.class.php b/lib/vendor/symfony/lib/widget/sfWidgetFormSelectMany.class.php new file mode 100644 index 0000000..87885df --- /dev/null +++ b/lib/vendor/symfony/lib/widget/sfWidgetFormSelectMany.class.php @@ -0,0 +1,35 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormSelectMany represents a select HTML tag where you can select multiple values. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id: sfWidgetFormSelectMany.class.php 30762 2010-08-25 12:33:33Z fabien $ + */ +class sfWidgetFormSelectMany extends sfWidgetFormSelect +{ + /** + * Configures the current widget. + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetFormSelect + */ + protected function configure($options = array(), $attributes = array()) + { + parent::configure($options, $attributes); + + $this->setOption('multiple', true); + } +} diff --git a/lib/vendor/symfony/lib/widget/sfWidgetFormSelectRadio.class.php b/lib/vendor/symfony/lib/widget/sfWidgetFormSelectRadio.class.php new file mode 100644 index 0000000..12468f8 --- /dev/null +++ b/lib/vendor/symfony/lib/widget/sfWidgetFormSelectRadio.class.php @@ -0,0 +1,124 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormSelectRadio represents radio HTML tags. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id: sfWidgetFormSelectRadio.class.php 30762 2010-08-25 12:33:33Z fabien $ + */ +class sfWidgetFormSelectRadio extends sfWidgetFormChoiceBase +{ + /** + * Constructor. + * + * Available options: + * + * * choices: An array of possible choices (required) + * * label_separator: The separator to use between the input radio and the label + * * separator: The separator to use between each input radio + * * class: The class to use for the main
            tag + * * formatter: A callable to call to format the radio choices + * The formatter callable receives the widget and the array of inputs as arguments + * * template: The template to use when grouping option in groups (%group% %options%) + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetFormChoiceBase + */ + protected function configure($options = array(), $attributes = array()) + { + parent::configure($options, $attributes); + + $this->addOption('class', 'radio_list'); + $this->addOption('label_separator', ' '); + $this->addOption('separator', "\n"); + $this->addOption('formatter', array($this, 'formatter')); + $this->addOption('template', '%group% %options%'); + } + + /** + * Renders the widget. + * + * @param string $name The element name + * @param string $value The value selected in this widget + * @param array $attributes An array of HTML attributes to be merged with the default HTML attributes + * @param array $errors An array of errors for the field + * + * @return string An HTML tag string + * + * @see sfWidgetForm + */ + public function render($name, $value = null, $attributes = array(), $errors = array()) + { + if ('[]' != substr($name, -2)) + { + $name .= '[]'; + } + + $choices = $this->getChoices(); + + // with groups? + if (count($choices) && is_array(next($choices))) + { + $parts = array(); + foreach ($choices as $key => $option) + { + $parts[] = strtr($this->getOption('template'), array('%group%' => $key, '%options%' => $this->formatChoices($name, $value, $option, $attributes))); + } + + return implode("\n", $parts); + } + else + { + return $this->formatChoices($name, $value, $choices, $attributes); + } + } + + protected function formatChoices($name, $value, $choices, $attributes) + { + $inputs = array(); + foreach ($choices as $key => $option) + { + $baseAttributes = array( + 'name' => substr($name, 0, -2), + 'type' => 'radio', + 'value' => self::escapeOnce($key), + 'id' => $id = $this->generateId($name, self::escapeOnce($key)), + ); + + if (strval($key) == strval($value === false ? 0 : $value)) + { + $baseAttributes['checked'] = 'checked'; + } + + $inputs[$id] = array( + 'input' => $this->renderTag('input', array_merge($baseAttributes, $attributes)), + 'label' => $this->renderContentTag('label', self::escapeOnce($option), array('for' => $id)), + ); + } + + return call_user_func($this->getOption('formatter'), $this, $inputs); + } + + public function formatter($widget, $inputs) + { + $rows = array(); + foreach ($inputs as $input) + { + $rows[] = $this->renderContentTag('li', $input['input'].$this->getOption('label_separator').$input['label']); + } + + return !$rows ? '' : $this->renderContentTag('ul', implode($this->getOption('separator'), $rows), array('class' => $this->getOption('class'))); + } +} diff --git a/lib/vendor/symfony/lib/widget/sfWidgetFormTextarea.class.php b/lib/vendor/symfony/lib/widget/sfWidgetFormTextarea.class.php new file mode 100644 index 0000000..6f0d3cd --- /dev/null +++ b/lib/vendor/symfony/lib/widget/sfWidgetFormTextarea.class.php @@ -0,0 +1,51 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormTextarea represents a textarea HTML tag. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id: sfWidgetFormTextarea.class.php 30762 2010-08-25 12:33:33Z fabien $ + */ +class sfWidgetFormTextarea extends sfWidgetForm +{ + /** + * Configures the current widget. + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetForm + */ + protected function configure($options = array(), $attributes = array()) + { + $this->setAttribute('rows', 4); + $this->setAttribute('cols', 30); + } + + /** + * Renders the widget. + * + * @param string $name The element name + * @param string $value The value displayed in this widget + * @param array $attributes An array of HTML attributes to be merged with the default HTML attributes + * @param array $errors An array of errors for the field + * + * @return string An HTML tag string + * + * @see sfWidgetForm + */ + public function render($name, $value = null, $attributes = array(), $errors = array()) + { + return $this->renderContentTag('textarea', self::escapeOnce($value), array_merge(array('name' => $name), $attributes)); + } +} diff --git a/lib/vendor/symfony/lib/widget/sfWidgetFormTime.class.php b/lib/vendor/symfony/lib/widget/sfWidgetFormTime.class.php new file mode 100644 index 0000000..38fbd0b --- /dev/null +++ b/lib/vendor/symfony/lib/widget/sfWidgetFormTime.class.php @@ -0,0 +1,107 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfWidgetFormTime represents a time widget. + * + * @package symfony + * @subpackage widget + * @author Fabien Potencier + * @version SVN: $Id: sfWidgetFormTime.class.php 30762 2010-08-25 12:33:33Z fabien $ + */ +class sfWidgetFormTime extends sfWidgetForm +{ + /** + * Constructor. + * + * Available options: + * + * * format: The time format string (%hour%:%minute%:%second%) + * * format_without_seconds: The time format string without seconds (%hour%:%minute%) + * * with_seconds: Whether to include a select for seconds (false by default) + * * hours: An array of hours for the hour select tag (optional) + * * minutes: An array of minutes for the minute select tag (optional) + * * seconds: An array of seconds for the second select tag (optional) + * * can_be_empty: Whether the widget accept an empty value (true by default) + * * empty_values: An array of values to use for the empty value (empty string for hours, minutes, and seconds by default) + * + * @param array $options An array of options + * @param array $attributes An array of default HTML attributes + * + * @see sfWidgetForm + */ + protected function configure($options = array(), $attributes = array()) + { + $this->addOption('format', '%hour%:%minute%:%second%'); + $this->addOption('format_without_seconds', '%hour%:%minute%'); + $this->addOption('with_seconds', false); + $this->addOption('hours', parent::generateTwoCharsRange(0, 23)); + $this->addOption('minutes', parent::generateTwoCharsRange(0, 59)); + $this->addOption('seconds', parent::generateTwoCharsRange(0, 59)); + + $this->addOption('can_be_empty', true); + $this->addOption('empty_values', array('hour' => '', 'minute' => '', 'second' => '')); + } + + /** + * Renders the widget. + * + * @param string $name The element name + * @param string $value The time displayed in this widget + * @param array $attributes An array of HTML attributes to be merged with the default HTML attributes + * @param array $errors An array of errors for the field + * + * @return string An HTML tag string + * + * @see sfWidgetForm + */ + public function render($name, $value = null, $attributes = array(), $errors = array()) + { + // convert value to an array + $default = array('hour' => null, 'minute' => null, 'second' => null); + if (is_array($value)) + { + $value = array_merge($default, $value); + } + else + { + $value = ctype_digit($value) ? (integer) $value : strtotime($value); + if (false === $value) + { + $value = $default; + } + else + { + // int cast required to get rid of leading zeros + $value = array('hour' => (int) date('H', $value), 'minute' => (int) date('i', $value), 'second' => (int) date('s', $value)); + } + } + + $time = array(); + $emptyValues = $this->getOption('empty_values'); + + // hours + $widget = new sfWidgetFormSelect(array('choices' => $this->getOption('can_be_empty') ? array('' => $emptyValues['hour']) + $this->getOption('hours') : $this->getOption('hours'), 'id_format' => $this->getOption('id_format')), array_merge($this->attributes, $attributes)); + $time['%hour%'] = $widget->render($name.'[hour]', $value['hour']); + + // minutes + $widget = new sfWidgetFormSelect(array('choices' => $this->getOption('can_be_empty') ? array('' => $emptyValues['minute']) + $this->getOption('minutes') : $this->getOption('minutes'), 'id_format' => $this->getOption('id_format')), array_merge($this->attributes, $attributes)); + $time['%minute%'] = $widget->render($name.'[minute]', $value['minute']); + + if ($this->getOption('with_seconds')) + { + // seconds + $widget = new sfWidgetFormSelect(array('choices' => $this->getOption('can_be_empty') ? array('' => $emptyValues['second']) + $this->getOption('seconds') : $this->getOption('seconds'), 'id_format' => $this->getOption('id_format')), array_merge($this->attributes, $attributes)); + $time['%second%'] = $widget->render($name.'[second]', $value['second']); + } + + return strtr($this->getOption('with_seconds') ? $this->getOption('format') : $this->getOption('format_without_seconds'), $time); + } +} diff --git a/lib/vendor/symfony/lib/yaml/.svn/all-wcprops b/lib/vendor/symfony/lib/yaml/.svn/all-wcprops new file mode 100644 index 0000000..80ce1b5 --- /dev/null +++ b/lib/vendor/symfony/lib/yaml/.svn/all-wcprops @@ -0,0 +1,29 @@ +K 25 +svn:wc:ra_dav:version-url +V 48 +/!svn/ver/32636/components/yaml/branches/1.0/lib +END +sfYamlInline.php +K 25 +svn:wc:ra_dav:version-url +V 65 +/!svn/ver/30003/components/yaml/branches/1.0/lib/sfYamlInline.php +END +sfYaml.php +K 25 +svn:wc:ra_dav:version-url +V 59 +/!svn/ver/24019/components/yaml/branches/1.0/lib/sfYaml.php +END +sfYamlDumper.php +K 25 +svn:wc:ra_dav:version-url +V 65 +/!svn/ver/24019/components/yaml/branches/1.0/lib/sfYamlDumper.php +END +sfYamlParser.php +K 25 +svn:wc:ra_dav:version-url +V 65 +/!svn/ver/32636/components/yaml/branches/1.0/lib/sfYamlParser.php +END diff --git a/lib/vendor/symfony/lib/yaml/.svn/entries b/lib/vendor/symfony/lib/yaml/.svn/entries new file mode 100644 index 0000000..c88ccdf --- /dev/null +++ b/lib/vendor/symfony/lib/yaml/.svn/entries @@ -0,0 +1,164 @@ +10 + +dir +33462 +http://svn.symfony-project.com/components/yaml/branches/1.0/lib +http://svn.symfony-project.com + + + +2011-06-11T13:15:04.358871Z +32636 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +sfYamlInline.php +file + + + + +2012-05-10T18:42:32.641550Z +cb97a7ac95e5c6df398514b43dfe9191 +2010-06-27T11:56:06.521797Z +30003 +fabien + + + + + + + + + + + + + + + + + + + + + +11515 + +sfYaml.php +file + + + + +2012-05-10T18:42:32.645555Z +2b7116a9f3bf6f9e8cd914c81bf79830 +2009-09-11T07:27:08.677582Z +21883 +fabien + + + + + + + + + + + + + + + + + + + + + +3318 + +sfYamlDumper.php +file + + + + +2012-05-10T18:42:32.645555Z +28196a0efdcea67d72e1eaf71e936958 +2009-05-15T06:47:09.422350Z +18297 +fabien + + + + + + + + + + + + + + + + + + + + + +1692 + +sfYamlParser.php +file + + + + +2012-05-10T18:42:32.645555Z +02fc0966083c293c851f2de6abb24875 +2011-06-11T13:15:04.358871Z +32636 +fabien + + + + + + + + + + + + + + + + + + + + + +16571 + diff --git a/lib/vendor/symfony/lib/yaml/.svn/text-base/sfYaml.php.svn-base b/lib/vendor/symfony/lib/yaml/.svn/text-base/sfYaml.php.svn-base new file mode 100644 index 0000000..1d89ccc --- /dev/null +++ b/lib/vendor/symfony/lib/yaml/.svn/text-base/sfYaml.php.svn-base @@ -0,0 +1,135 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfYaml offers convenience methods to load and dump YAML. + * + * @package symfony + * @subpackage yaml + * @author Fabien Potencier + * @version SVN: $Id: sfYaml.class.php 8988 2008-05-15 20:24:26Z fabien $ + */ +class sfYaml +{ + static protected + $spec = '1.2'; + + /** + * Sets the YAML specification version to use. + * + * @param string $version The YAML specification version + */ + static public function setSpecVersion($version) + { + if (!in_array($version, array('1.1', '1.2'))) + { + throw new InvalidArgumentException(sprintf('Version %s of the YAML specifications is not supported', $version)); + } + + self::$spec = $version; + } + + /** + * Gets the YAML specification version to use. + * + * @return string The YAML specification version + */ + static public function getSpecVersion() + { + return self::$spec; + } + + /** + * Loads YAML into a PHP array. + * + * The load method, when supplied with a YAML stream (string or file), + * will do its best to convert YAML in a file into a PHP array. + * + * Usage: + * + * $array = sfYaml::load('config.yml'); + * print_r($array); + * + * + * @param string $input Path of YAML file or string containing YAML + * + * @return array The YAML converted to a PHP array + * + * @throws InvalidArgumentException If the YAML is not valid + */ + public static function load($input) + { + $file = ''; + + // if input is a file, process it + if (strpos($input, "\n") === false && is_file($input)) + { + $file = $input; + + ob_start(); + $retval = include($input); + $content = ob_get_clean(); + + // if an array is returned by the config file assume it's in plain php form else in YAML + $input = is_array($retval) ? $retval : $content; + } + + // if an array is returned by the config file assume it's in plain php form else in YAML + if (is_array($input)) + { + return $input; + } + + require_once dirname(__FILE__).'/sfYamlParser.php'; + + $yaml = new sfYamlParser(); + + try + { + $ret = $yaml->parse($input); + } + catch (Exception $e) + { + throw new InvalidArgumentException(sprintf('Unable to parse %s: %s', $file ? sprintf('file "%s"', $file) : 'string', $e->getMessage())); + } + + return $ret; + } + + /** + * Dumps a PHP array to a YAML string. + * + * The dump method, when supplied with an array, will do its best + * to convert the array into friendly YAML. + * + * @param array $array PHP array + * @param integer $inline The level where you switch to inline YAML + * + * @return string A YAML string representing the original PHP array + */ + public static function dump($array, $inline = 2) + { + require_once dirname(__FILE__).'/sfYamlDumper.php'; + + $yaml = new sfYamlDumper(); + + return $yaml->dump($array, $inline); + } +} + +/** + * Wraps echo to automatically provide a newline. + * + * @param string $string The string to echo with new line + */ +function echoln($string) +{ + echo $string."\n"; +} diff --git a/lib/vendor/symfony/lib/yaml/.svn/text-base/sfYamlDumper.php.svn-base b/lib/vendor/symfony/lib/yaml/.svn/text-base/sfYamlDumper.php.svn-base new file mode 100644 index 0000000..0ada2b3 --- /dev/null +++ b/lib/vendor/symfony/lib/yaml/.svn/text-base/sfYamlDumper.php.svn-base @@ -0,0 +1,60 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/sfYamlInline.php'); + +/** + * sfYamlDumper dumps PHP variables to YAML strings. + * + * @package symfony + * @subpackage yaml + * @author Fabien Potencier + * @version SVN: $Id: sfYamlDumper.class.php 10575 2008-08-01 13:08:42Z nicolas $ + */ +class sfYamlDumper +{ + /** + * Dumps a PHP value to YAML. + * + * @param mixed $input The PHP value + * @param integer $inline The level where you switch to inline YAML + * @param integer $indent The level o indentation indentation (used internally) + * + * @return string The YAML representation of the PHP value + */ + public function dump($input, $inline = 0, $indent = 0) + { + $output = ''; + $prefix = $indent ? str_repeat(' ', $indent) : ''; + + if ($inline <= 0 || !is_array($input) || empty($input)) + { + $output .= $prefix.sfYamlInline::dump($input); + } + else + { + $isAHash = array_keys($input) !== range(0, count($input) - 1); + + foreach ($input as $key => $value) + { + $willBeInlined = $inline - 1 <= 0 || !is_array($value) || empty($value); + + $output .= sprintf('%s%s%s%s', + $prefix, + $isAHash ? sfYamlInline::dump($key).':' : '-', + $willBeInlined ? ' ' : "\n", + $this->dump($value, $inline - 1, $willBeInlined ? 0 : $indent + 2) + ).($willBeInlined ? "\n" : ''); + } + } + + return $output; + } +} diff --git a/lib/vendor/symfony/lib/yaml/.svn/text-base/sfYamlInline.php.svn-base b/lib/vendor/symfony/lib/yaml/.svn/text-base/sfYamlInline.php.svn-base new file mode 100644 index 0000000..a88cbb3 --- /dev/null +++ b/lib/vendor/symfony/lib/yaml/.svn/text-base/sfYamlInline.php.svn-base @@ -0,0 +1,442 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once dirname(__FILE__).'/sfYaml.php'; + +/** + * sfYamlInline implements a YAML parser/dumper for the YAML inline syntax. + * + * @package symfony + * @subpackage yaml + * @author Fabien Potencier + * @version SVN: $Id: sfYamlInline.class.php 16177 2009-03-11 08:32:48Z fabien $ + */ +class sfYamlInline +{ + const REGEX_QUOTED_STRING = '(?:"([^"\\\\]*(?:\\\\.[^"\\\\]*)*)"|\'([^\']*(?:\'\'[^\']*)*)\')'; + + /** + * Convert a YAML string to a PHP array. + * + * @param string $value A YAML string + * + * @return array A PHP array representing the YAML string + */ + static public function load($value) + { + $value = trim($value); + + if (0 == strlen($value)) + { + return ''; + } + + if (function_exists('mb_internal_encoding') && ((int) ini_get('mbstring.func_overload')) & 2) + { + $mbEncoding = mb_internal_encoding(); + mb_internal_encoding('ASCII'); + } + + switch ($value[0]) + { + case '[': + $result = self::parseSequence($value); + break; + case '{': + $result = self::parseMapping($value); + break; + default: + $result = self::parseScalar($value); + } + + if (isset($mbEncoding)) + { + mb_internal_encoding($mbEncoding); + } + + return $result; + } + + /** + * Dumps a given PHP variable to a YAML string. + * + * @param mixed $value The PHP variable to convert + * + * @return string The YAML string representing the PHP array + */ + static public function dump($value) + { + if ('1.1' === sfYaml::getSpecVersion()) + { + $trueValues = array('true', 'on', '+', 'yes', 'y'); + $falseValues = array('false', 'off', '-', 'no', 'n'); + } + else + { + $trueValues = array('true'); + $falseValues = array('false'); + } + + switch (true) + { + case is_resource($value): + throw new InvalidArgumentException('Unable to dump PHP resources in a YAML file.'); + case is_object($value): + return '!!php/object:'.serialize($value); + case is_array($value): + return self::dumpArray($value); + case null === $value: + return 'null'; + case true === $value: + return 'true'; + case false === $value: + return 'false'; + case ctype_digit($value): + return is_string($value) ? "'$value'" : (int) $value; + case is_numeric($value): + return is_infinite($value) ? str_ireplace('INF', '.Inf', strval($value)) : (is_string($value) ? "'$value'" : $value); + case false !== strpos($value, "\n") || false !== strpos($value, "\r"): + return sprintf('"%s"', str_replace(array('"', "\n", "\r"), array('\\"', '\n', '\r'), $value)); + case preg_match('/[ \s \' " \: \{ \} \[ \] , & \* \# \?] | \A[ - ? | < > = ! % @ ` ]/x', $value): + return sprintf("'%s'", str_replace('\'', '\'\'', $value)); + case '' == $value: + return "''"; + case preg_match(self::getTimestampRegex(), $value): + return "'$value'"; + case in_array(strtolower($value), $trueValues): + return "'$value'"; + case in_array(strtolower($value), $falseValues): + return "'$value'"; + case in_array(strtolower($value), array('null', '~')): + return "'$value'"; + default: + return $value; + } + } + + /** + * Dumps a PHP array to a YAML string. + * + * @param array $value The PHP array to dump + * + * @return string The YAML string representing the PHP array + */ + static protected function dumpArray($value) + { + // array + $keys = array_keys($value); + if ( + (1 == count($keys) && '0' == $keys[0]) + || + (count($keys) > 1 && array_reduce($keys, create_function('$v,$w', 'return (integer) $v + $w;'), 0) == count($keys) * (count($keys) - 1) / 2)) + { + $output = array(); + foreach ($value as $val) + { + $output[] = self::dump($val); + } + + return sprintf('[%s]', implode(', ', $output)); + } + + // mapping + $output = array(); + foreach ($value as $key => $val) + { + $output[] = sprintf('%s: %s', self::dump($key), self::dump($val)); + } + + return sprintf('{ %s }', implode(', ', $output)); + } + + /** + * Parses a scalar to a YAML string. + * + * @param scalar $scalar + * @param string $delimiters + * @param array $stringDelimiter + * @param integer $i + * @param boolean $evaluate + * + * @return string A YAML string + */ + static public function parseScalar($scalar, $delimiters = null, $stringDelimiters = array('"', "'"), &$i = 0, $evaluate = true) + { + if (in_array($scalar[$i], $stringDelimiters)) + { + // quoted scalar + $output = self::parseQuotedScalar($scalar, $i); + } + else + { + // "normal" string + if (!$delimiters) + { + $output = substr($scalar, $i); + $i += strlen($output); + + // remove comments + if (false !== $strpos = strpos($output, ' #')) + { + $output = rtrim(substr($output, 0, $strpos)); + } + } + else if (preg_match('/^(.+?)('.implode('|', $delimiters).')/', substr($scalar, $i), $match)) + { + $output = $match[1]; + $i += strlen($output); + } + else + { + throw new InvalidArgumentException(sprintf('Malformed inline YAML string (%s).', $scalar)); + } + + $output = $evaluate ? self::evaluateScalar($output) : $output; + } + + return $output; + } + + /** + * Parses a quoted scalar to YAML. + * + * @param string $scalar + * @param integer $i + * + * @return string A YAML string + */ + static protected function parseQuotedScalar($scalar, &$i) + { + if (!preg_match('/'.self::REGEX_QUOTED_STRING.'/Au', substr($scalar, $i), $match)) + { + throw new InvalidArgumentException(sprintf('Malformed inline YAML string (%s).', substr($scalar, $i))); + } + + $output = substr($match[0], 1, strlen($match[0]) - 2); + + if ('"' == $scalar[$i]) + { + // evaluate the string + $output = str_replace(array('\\"', '\\n', '\\r'), array('"', "\n", "\r"), $output); + } + else + { + // unescape ' + $output = str_replace('\'\'', '\'', $output); + } + + $i += strlen($match[0]); + + return $output; + } + + /** + * Parses a sequence to a YAML string. + * + * @param string $sequence + * @param integer $i + * + * @return string A YAML string + */ + static protected function parseSequence($sequence, &$i = 0) + { + $output = array(); + $len = strlen($sequence); + $i += 1; + + // [foo, bar, ...] + while ($i < $len) + { + switch ($sequence[$i]) + { + case '[': + // nested sequence + $output[] = self::parseSequence($sequence, $i); + break; + case '{': + // nested mapping + $output[] = self::parseMapping($sequence, $i); + break; + case ']': + return $output; + case ',': + case ' ': + break; + default: + $isQuoted = in_array($sequence[$i], array('"', "'")); + $value = self::parseScalar($sequence, array(',', ']'), array('"', "'"), $i); + + if (!$isQuoted && false !== strpos($value, ': ')) + { + // embedded mapping? + try + { + $value = self::parseMapping('{'.$value.'}'); + } + catch (InvalidArgumentException $e) + { + // no, it's not + } + } + + $output[] = $value; + + --$i; + } + + ++$i; + } + + throw new InvalidArgumentException(sprintf('Malformed inline YAML string %s', $sequence)); + } + + /** + * Parses a mapping to a YAML string. + * + * @param string $mapping + * @param integer $i + * + * @return string A YAML string + */ + static protected function parseMapping($mapping, &$i = 0) + { + $output = array(); + $len = strlen($mapping); + $i += 1; + + // {foo: bar, bar:foo, ...} + while ($i < $len) + { + switch ($mapping[$i]) + { + case ' ': + case ',': + ++$i; + continue 2; + case '}': + return $output; + } + + // key + $key = self::parseScalar($mapping, array(':', ' '), array('"', "'"), $i, false); + + // value + $done = false; + while ($i < $len) + { + switch ($mapping[$i]) + { + case '[': + // nested sequence + $output[$key] = self::parseSequence($mapping, $i); + $done = true; + break; + case '{': + // nested mapping + $output[$key] = self::parseMapping($mapping, $i); + $done = true; + break; + case ':': + case ' ': + break; + default: + $output[$key] = self::parseScalar($mapping, array(',', '}'), array('"', "'"), $i); + $done = true; + --$i; + } + + ++$i; + + if ($done) + { + continue 2; + } + } + } + + throw new InvalidArgumentException(sprintf('Malformed inline YAML string %s', $mapping)); + } + + /** + * Evaluates scalars and replaces magic values. + * + * @param string $scalar + * + * @return string A YAML string + */ + static protected function evaluateScalar($scalar) + { + $scalar = trim($scalar); + + if ('1.1' === sfYaml::getSpecVersion()) + { + $trueValues = array('true', 'on', '+', 'yes', 'y'); + $falseValues = array('false', 'off', '-', 'no', 'n'); + } + else + { + $trueValues = array('true'); + $falseValues = array('false'); + } + + switch (true) + { + case 'null' == strtolower($scalar): + case '' == $scalar: + case '~' == $scalar: + return null; + case 0 === strpos($scalar, '!str'): + return (string) substr($scalar, 5); + case 0 === strpos($scalar, '! '): + return intval(self::parseScalar(substr($scalar, 2))); + case 0 === strpos($scalar, '!!php/object:'): + return unserialize(substr($scalar, 13)); + case ctype_digit($scalar): + $raw = $scalar; + $cast = intval($scalar); + return '0' == $scalar[0] ? octdec($scalar) : (((string) $raw == (string) $cast) ? $cast : $raw); + case in_array(strtolower($scalar), $trueValues): + return true; + case in_array(strtolower($scalar), $falseValues): + return false; + case is_numeric($scalar): + return '0x' == $scalar[0].$scalar[1] ? hexdec($scalar) : floatval($scalar); + case 0 == strcasecmp($scalar, '.inf'): + case 0 == strcasecmp($scalar, '.NaN'): + return -log(0); + case 0 == strcasecmp($scalar, '-.inf'): + return log(0); + case preg_match('/^(-|\+)?[0-9,]+(\.[0-9]+)?$/', $scalar): + return floatval(str_replace(',', '', $scalar)); + case preg_match(self::getTimestampRegex(), $scalar): + return strtotime($scalar); + default: + return (string) $scalar; + } + } + + static protected function getTimestampRegex() + { + return <<[0-9][0-9][0-9][0-9]) + -(?P[0-9][0-9]?) + -(?P[0-9][0-9]?) + (?:(?:[Tt]|[ \t]+) + (?P[0-9][0-9]?) + :(?P[0-9][0-9]) + :(?P[0-9][0-9]) + (?:\.(?P[0-9]*))? + (?:[ \t]*(?PZ|(?P[-+])(?P[0-9][0-9]?) + (?::(?P[0-9][0-9]))?))?)? + $~x +EOF; + } +} diff --git a/lib/vendor/symfony/lib/yaml/.svn/text-base/sfYamlParser.php.svn-base b/lib/vendor/symfony/lib/yaml/.svn/text-base/sfYamlParser.php.svn-base new file mode 100644 index 0000000..03bd0b8 --- /dev/null +++ b/lib/vendor/symfony/lib/yaml/.svn/text-base/sfYamlParser.php.svn-base @@ -0,0 +1,600 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/sfYamlInline.php'); + +if (!defined('PREG_BAD_UTF8_OFFSET_ERROR')) +{ + define('PREG_BAD_UTF8_OFFSET_ERROR', 5); +} + +/** + * sfYamlParser parses YAML strings to convert them to PHP arrays. + * + * @package symfony + * @subpackage yaml + * @author Fabien Potencier + * @version SVN: $Id: sfYamlParser.class.php 10832 2008-08-13 07:46:08Z fabien $ + */ +class sfYamlParser +{ + protected + $offset = 0, + $lines = array(), + $currentLineNb = -1, + $currentLine = '', + $refs = array(); + + /** + * Constructor + * + * @param integer $offset The offset of YAML document (used for line numbers in error messages) + */ + public function __construct($offset = 0) + { + $this->offset = $offset; + } + + /** + * Parses a YAML string to a PHP value. + * + * @param string $value A YAML string + * + * @return mixed A PHP value + * + * @throws InvalidArgumentException If the YAML is not valid + */ + public function parse($value) + { + $this->currentLineNb = -1; + $this->currentLine = ''; + $this->lines = explode("\n", $this->cleanup($value)); + + if (function_exists('mb_internal_encoding') && ((int) ini_get('mbstring.func_overload')) & 2) + { + $mbEncoding = mb_internal_encoding(); + mb_internal_encoding('UTF-8'); + } + + $data = array(); + while ($this->moveToNextLine()) + { + if ($this->isCurrentLineEmpty()) + { + continue; + } + + // tab? + if (preg_match('#^\t+#', $this->currentLine)) + { + throw new InvalidArgumentException(sprintf('A YAML file cannot contain tabs as indentation at line %d (%s).', $this->getRealCurrentLineNb() + 1, $this->currentLine)); + } + + $isRef = $isInPlace = $isProcessed = false; + if (preg_match('#^\-(\s+(?P.+?))?\s*$#u', $this->currentLine, $values)) + { + if (isset($values['value']) && preg_match('#^&(?P[^ ]+) *(?P.*)#u', $values['value'], $matches)) + { + $isRef = $matches['ref']; + $values['value'] = $matches['value']; + } + + // array + if (!isset($values['value']) || '' == trim($values['value'], ' ') || 0 === strpos(ltrim($values['value'], ' '), '#')) + { + $c = $this->getRealCurrentLineNb() + 1; + $parser = new sfYamlParser($c); + $parser->refs =& $this->refs; + $data[] = $parser->parse($this->getNextEmbedBlock()); + } + else + { + if (preg_match('/^([^ ]+)\: +({.*?)$/u', $values['value'], $matches)) + { + $data[] = array($matches[1] => sfYamlInline::load($matches[2])); + } + else + { + $data[] = $this->parseValue($values['value']); + } + } + } + else if (preg_match('#^(?P'.sfYamlInline::REGEX_QUOTED_STRING.'|[^ \{\[].*?) *\:(\s+(?P.+?))?\s*$#u', $this->currentLine, $values)) + { + $key = sfYamlInline::parseScalar($values['key']); + + if ('<<' === $key) + { + if (isset($values['value']) && '*' === substr($values['value'], 0, 1)) + { + $isInPlace = substr($values['value'], 1); + if (!array_key_exists($isInPlace, $this->refs)) + { + throw new InvalidArgumentException(sprintf('Reference "%s" does not exist at line %s (%s).', $isInPlace, $this->getRealCurrentLineNb() + 1, $this->currentLine)); + } + } + else + { + if (isset($values['value']) && $values['value'] !== '') + { + $value = $values['value']; + } + else + { + $value = $this->getNextEmbedBlock(); + } + $c = $this->getRealCurrentLineNb() + 1; + $parser = new sfYamlParser($c); + $parser->refs =& $this->refs; + $parsed = $parser->parse($value); + + $merged = array(); + if (!is_array($parsed)) + { + throw new InvalidArgumentException(sprintf("YAML merge keys used with a scalar value instead of an array at line %s (%s)", $this->getRealCurrentLineNb() + 1, $this->currentLine)); + } + else if (isset($parsed[0])) + { + // Numeric array, merge individual elements + foreach (array_reverse($parsed) as $parsedItem) + { + if (!is_array($parsedItem)) + { + throw new InvalidArgumentException(sprintf("Merge items must be arrays at line %s (%s).", $this->getRealCurrentLineNb() + 1, $parsedItem)); + } + $merged = array_merge($parsedItem, $merged); + } + } + else + { + // Associative array, merge + $merged = array_merge($merged, $parsed); + } + + $isProcessed = $merged; + } + } + else if (isset($values['value']) && preg_match('#^&(?P[^ ]+) *(?P.*)#u', $values['value'], $matches)) + { + $isRef = $matches['ref']; + $values['value'] = $matches['value']; + } + + if ($isProcessed) + { + // Merge keys + $data = $isProcessed; + } + // hash + else if (!isset($values['value']) || '' == trim($values['value'], ' ') || 0 === strpos(ltrim($values['value'], ' '), '#')) + { + // if next line is less indented or equal, then it means that the current value is null + if ($this->isNextLineIndented()) + { + $data[$key] = null; + } + else + { + $c = $this->getRealCurrentLineNb() + 1; + $parser = new sfYamlParser($c); + $parser->refs =& $this->refs; + $data[$key] = $parser->parse($this->getNextEmbedBlock()); + } + } + else + { + if ($isInPlace) + { + $data = $this->refs[$isInPlace]; + } + else + { + $data[$key] = $this->parseValue($values['value']); + } + } + } + else + { + // 1-liner followed by newline + if (2 == count($this->lines) && empty($this->lines[1])) + { + $value = sfYamlInline::load($this->lines[0]); + if (is_array($value)) + { + $first = reset($value); + if ('*' === substr($first, 0, 1)) + { + $data = array(); + foreach ($value as $alias) + { + $data[] = $this->refs[substr($alias, 1)]; + } + $value = $data; + } + } + + if (isset($mbEncoding)) + { + mb_internal_encoding($mbEncoding); + } + + return $value; + } + + switch (preg_last_error()) + { + case PREG_INTERNAL_ERROR: + $error = 'Internal PCRE error on line'; + break; + case PREG_BACKTRACK_LIMIT_ERROR: + $error = 'pcre.backtrack_limit reached on line'; + break; + case PREG_RECURSION_LIMIT_ERROR: + $error = 'pcre.recursion_limit reached on line'; + break; + case PREG_BAD_UTF8_ERROR: + $error = 'Malformed UTF-8 data on line'; + break; + case PREG_BAD_UTF8_OFFSET_ERROR: + $error = 'Offset doesn\'t correspond to the begin of a valid UTF-8 code point on line'; + break; + default: + $error = 'Unable to parse line'; + } + + throw new InvalidArgumentException(sprintf('%s %d (%s).', $error, $this->getRealCurrentLineNb() + 1, $this->currentLine)); + } + + if ($isRef) + { + $this->refs[$isRef] = end($data); + } + } + + if (isset($mbEncoding)) + { + mb_internal_encoding($mbEncoding); + } + + return empty($data) ? null : $data; + } + + /** + * Returns the current line number (takes the offset into account). + * + * @return integer The current line number + */ + protected function getRealCurrentLineNb() + { + return $this->currentLineNb + $this->offset; + } + + /** + * Returns the current line indentation. + * + * @return integer The current line indentation + */ + protected function getCurrentLineIndentation() + { + return strlen($this->currentLine) - strlen(ltrim($this->currentLine, ' ')); + } + + /** + * Returns the next embed block of YAML. + * + * @return string A YAML string + */ + protected function getNextEmbedBlock() + { + $this->moveToNextLine(); + + $newIndent = $this->getCurrentLineIndentation(); + + if (!$this->isCurrentLineEmpty() && 0 == $newIndent) + { + throw new InvalidArgumentException(sprintf('Indentation problem at line %d (%s)', $this->getRealCurrentLineNb() + 1, $this->currentLine)); + } + + $data = array(substr($this->currentLine, $newIndent)); + + while ($this->moveToNextLine()) + { + if ($this->isCurrentLineEmpty()) + { + if ($this->isCurrentLineBlank()) + { + $data[] = substr($this->currentLine, $newIndent); + } + + continue; + } + + $indent = $this->getCurrentLineIndentation(); + + if (preg_match('#^(?P *)$#', $this->currentLine, $match)) + { + // empty line + $data[] = $match['text']; + } + else if ($indent >= $newIndent) + { + $data[] = substr($this->currentLine, $newIndent); + } + else if (0 == $indent) + { + $this->moveToPreviousLine(); + + break; + } + else + { + throw new InvalidArgumentException(sprintf('Indentation problem at line %d (%s)', $this->getRealCurrentLineNb() + 1, $this->currentLine)); + } + } + + return implode("\n", $data); + } + + /** + * Moves the parser to the next line. + */ + protected function moveToNextLine() + { + if ($this->currentLineNb >= count($this->lines) - 1) + { + return false; + } + + $this->currentLine = $this->lines[++$this->currentLineNb]; + + return true; + } + + /** + * Moves the parser to the previous line. + */ + protected function moveToPreviousLine() + { + $this->currentLine = $this->lines[--$this->currentLineNb]; + } + + /** + * Parses a YAML value. + * + * @param string $value A YAML value + * + * @return mixed A PHP value + */ + protected function parseValue($value) + { + if ('*' === substr($value, 0, 1)) + { + if (false !== $pos = strpos($value, '#')) + { + $value = substr($value, 1, $pos - 2); + } + else + { + $value = substr($value, 1); + } + + if (!array_key_exists($value, $this->refs)) + { + throw new InvalidArgumentException(sprintf('Reference "%s" does not exist (%s).', $value, $this->currentLine)); + } + return $this->refs[$value]; + } + + if (preg_match('/^(?P\||>)(?P\+|\-|\d+|\+\d+|\-\d+|\d+\+|\d+\-)?(?P +#.*)?$/', $value, $matches)) + { + $modifiers = isset($matches['modifiers']) ? $matches['modifiers'] : ''; + + return $this->parseFoldedScalar($matches['separator'], preg_replace('#\d+#', '', $modifiers), intval(abs($modifiers))); + } + else + { + return sfYamlInline::load($value); + } + } + + /** + * Parses a folded scalar. + * + * @param string $separator The separator that was used to begin this folded scalar (| or >) + * @param string $indicator The indicator that was used to begin this folded scalar (+ or -) + * @param integer $indentation The indentation that was used to begin this folded scalar + * + * @return string The text value + */ + protected function parseFoldedScalar($separator, $indicator = '', $indentation = 0) + { + $separator = '|' == $separator ? "\n" : ' '; + $text = ''; + + $notEOF = $this->moveToNextLine(); + + while ($notEOF && $this->isCurrentLineBlank()) + { + $text .= "\n"; + + $notEOF = $this->moveToNextLine(); + } + + if (!$notEOF) + { + return ''; + } + + if (!preg_match('#^(?P'.($indentation ? str_repeat(' ', $indentation) : ' +').')(?P.*)$#u', $this->currentLine, $matches)) + { + $this->moveToPreviousLine(); + + return ''; + } + + $textIndent = $matches['indent']; + $previousIndent = 0; + + $text .= $matches['text'].$separator; + while ($this->currentLineNb + 1 < count($this->lines)) + { + $this->moveToNextLine(); + + if (preg_match('#^(?P {'.strlen($textIndent).',})(?P.+)$#u', $this->currentLine, $matches)) + { + if (' ' == $separator && $previousIndent != $matches['indent']) + { + $text = substr($text, 0, -1)."\n"; + } + $previousIndent = $matches['indent']; + + $text .= str_repeat(' ', $diff = strlen($matches['indent']) - strlen($textIndent)).$matches['text'].($diff ? "\n" : $separator); + } + else if (preg_match('#^(?P *)$#', $this->currentLine, $matches)) + { + $text .= preg_replace('#^ {1,'.strlen($textIndent).'}#', '', $matches['text'])."\n"; + } + else + { + $this->moveToPreviousLine(); + + break; + } + } + + if (' ' == $separator) + { + // replace last separator by a newline + $text = preg_replace('/ (\n*)$/', "\n$1", $text); + } + + switch ($indicator) + { + case '': + $text = preg_replace('#\n+$#s', "\n", $text); + break; + case '+': + break; + case '-': + $text = preg_replace('#\n+$#s', '', $text); + break; + } + + return $text; + } + + /** + * Returns true if the next line is indented. + * + * @return Boolean Returns true if the next line is indented, false otherwise + */ + protected function isNextLineIndented() + { + $currentIndentation = $this->getCurrentLineIndentation(); + $notEOF = $this->moveToNextLine(); + + while ($notEOF && $this->isCurrentLineEmpty()) + { + $notEOF = $this->moveToNextLine(); + } + + if (false === $notEOF) + { + return false; + } + + $ret = false; + if ($this->getCurrentLineIndentation() <= $currentIndentation) + { + $ret = true; + } + + $this->moveToPreviousLine(); + + return $ret; + } + + /** + * Returns true if the current line is blank or if it is a comment line. + * + * @return Boolean Returns true if the current line is empty or if it is a comment line, false otherwise + */ + protected function isCurrentLineEmpty() + { + return $this->isCurrentLineBlank() || $this->isCurrentLineComment(); + } + + /** + * Returns true if the current line is blank. + * + * @return Boolean Returns true if the current line is blank, false otherwise + */ + protected function isCurrentLineBlank() + { + return '' == trim($this->currentLine, ' '); + } + + /** + * Returns true if the current line is a comment line. + * + * @return Boolean Returns true if the current line is a comment line, false otherwise + */ + protected function isCurrentLineComment() + { + //checking explicitly the first char of the trim is faster than loops or strpos + $ltrimmedLine = ltrim($this->currentLine, ' '); + return $ltrimmedLine[0] === '#'; + } + + /** + * Cleanups a YAML string to be parsed. + * + * @param string $value The input YAML string + * + * @return string A cleaned up YAML string + */ + protected function cleanup($value) + { + $value = str_replace(array("\r\n", "\r"), "\n", $value); + + if (!preg_match("#\n$#", $value)) + { + $value .= "\n"; + } + + // strip YAML header + $count = 0; + $value = preg_replace('#^\%YAML[: ][\d\.]+.*\n#su', '', $value, -1, $count); + $this->offset += $count; + + // remove leading comments + $trimmedValue = preg_replace('#^(\#.*?\n)+#s', '', $value, -1, $count); + if ($count == 1) + { + // items have been removed, update the offset + $this->offset += substr_count($value, "\n") - substr_count($trimmedValue, "\n"); + $value = $trimmedValue; + } + + // remove start of the document marker (---) + $trimmedValue = preg_replace('#^\-\-\-.*?\n#s', '', $value, -1, $count); + if ($count == 1) + { + // items have been removed, update the offset + $this->offset += substr_count($value, "\n") - substr_count($trimmedValue, "\n"); + $value = $trimmedValue; + + // remove end of the document marker (...) + $value = preg_replace('#\.\.\.\s*$#s', '', $value); + } + + return $value; + } +} diff --git a/lib/vendor/symfony/lib/yaml/sfYaml.php b/lib/vendor/symfony/lib/yaml/sfYaml.php new file mode 100644 index 0000000..1d89ccc --- /dev/null +++ b/lib/vendor/symfony/lib/yaml/sfYaml.php @@ -0,0 +1,135 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfYaml offers convenience methods to load and dump YAML. + * + * @package symfony + * @subpackage yaml + * @author Fabien Potencier + * @version SVN: $Id: sfYaml.class.php 8988 2008-05-15 20:24:26Z fabien $ + */ +class sfYaml +{ + static protected + $spec = '1.2'; + + /** + * Sets the YAML specification version to use. + * + * @param string $version The YAML specification version + */ + static public function setSpecVersion($version) + { + if (!in_array($version, array('1.1', '1.2'))) + { + throw new InvalidArgumentException(sprintf('Version %s of the YAML specifications is not supported', $version)); + } + + self::$spec = $version; + } + + /** + * Gets the YAML specification version to use. + * + * @return string The YAML specification version + */ + static public function getSpecVersion() + { + return self::$spec; + } + + /** + * Loads YAML into a PHP array. + * + * The load method, when supplied with a YAML stream (string or file), + * will do its best to convert YAML in a file into a PHP array. + * + * Usage: + * + * $array = sfYaml::load('config.yml'); + * print_r($array); + * + * + * @param string $input Path of YAML file or string containing YAML + * + * @return array The YAML converted to a PHP array + * + * @throws InvalidArgumentException If the YAML is not valid + */ + public static function load($input) + { + $file = ''; + + // if input is a file, process it + if (strpos($input, "\n") === false && is_file($input)) + { + $file = $input; + + ob_start(); + $retval = include($input); + $content = ob_get_clean(); + + // if an array is returned by the config file assume it's in plain php form else in YAML + $input = is_array($retval) ? $retval : $content; + } + + // if an array is returned by the config file assume it's in plain php form else in YAML + if (is_array($input)) + { + return $input; + } + + require_once dirname(__FILE__).'/sfYamlParser.php'; + + $yaml = new sfYamlParser(); + + try + { + $ret = $yaml->parse($input); + } + catch (Exception $e) + { + throw new InvalidArgumentException(sprintf('Unable to parse %s: %s', $file ? sprintf('file "%s"', $file) : 'string', $e->getMessage())); + } + + return $ret; + } + + /** + * Dumps a PHP array to a YAML string. + * + * The dump method, when supplied with an array, will do its best + * to convert the array into friendly YAML. + * + * @param array $array PHP array + * @param integer $inline The level where you switch to inline YAML + * + * @return string A YAML string representing the original PHP array + */ + public static function dump($array, $inline = 2) + { + require_once dirname(__FILE__).'/sfYamlDumper.php'; + + $yaml = new sfYamlDumper(); + + return $yaml->dump($array, $inline); + } +} + +/** + * Wraps echo to automatically provide a newline. + * + * @param string $string The string to echo with new line + */ +function echoln($string) +{ + echo $string."\n"; +} diff --git a/lib/vendor/symfony/lib/yaml/sfYamlDumper.php b/lib/vendor/symfony/lib/yaml/sfYamlDumper.php new file mode 100644 index 0000000..0ada2b3 --- /dev/null +++ b/lib/vendor/symfony/lib/yaml/sfYamlDumper.php @@ -0,0 +1,60 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/sfYamlInline.php'); + +/** + * sfYamlDumper dumps PHP variables to YAML strings. + * + * @package symfony + * @subpackage yaml + * @author Fabien Potencier + * @version SVN: $Id: sfYamlDumper.class.php 10575 2008-08-01 13:08:42Z nicolas $ + */ +class sfYamlDumper +{ + /** + * Dumps a PHP value to YAML. + * + * @param mixed $input The PHP value + * @param integer $inline The level where you switch to inline YAML + * @param integer $indent The level o indentation indentation (used internally) + * + * @return string The YAML representation of the PHP value + */ + public function dump($input, $inline = 0, $indent = 0) + { + $output = ''; + $prefix = $indent ? str_repeat(' ', $indent) : ''; + + if ($inline <= 0 || !is_array($input) || empty($input)) + { + $output .= $prefix.sfYamlInline::dump($input); + } + else + { + $isAHash = array_keys($input) !== range(0, count($input) - 1); + + foreach ($input as $key => $value) + { + $willBeInlined = $inline - 1 <= 0 || !is_array($value) || empty($value); + + $output .= sprintf('%s%s%s%s', + $prefix, + $isAHash ? sfYamlInline::dump($key).':' : '-', + $willBeInlined ? ' ' : "\n", + $this->dump($value, $inline - 1, $willBeInlined ? 0 : $indent + 2) + ).($willBeInlined ? "\n" : ''); + } + } + + return $output; + } +} diff --git a/lib/vendor/symfony/lib/yaml/sfYamlInline.php b/lib/vendor/symfony/lib/yaml/sfYamlInline.php new file mode 100644 index 0000000..a88cbb3 --- /dev/null +++ b/lib/vendor/symfony/lib/yaml/sfYamlInline.php @@ -0,0 +1,442 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once dirname(__FILE__).'/sfYaml.php'; + +/** + * sfYamlInline implements a YAML parser/dumper for the YAML inline syntax. + * + * @package symfony + * @subpackage yaml + * @author Fabien Potencier + * @version SVN: $Id: sfYamlInline.class.php 16177 2009-03-11 08:32:48Z fabien $ + */ +class sfYamlInline +{ + const REGEX_QUOTED_STRING = '(?:"([^"\\\\]*(?:\\\\.[^"\\\\]*)*)"|\'([^\']*(?:\'\'[^\']*)*)\')'; + + /** + * Convert a YAML string to a PHP array. + * + * @param string $value A YAML string + * + * @return array A PHP array representing the YAML string + */ + static public function load($value) + { + $value = trim($value); + + if (0 == strlen($value)) + { + return ''; + } + + if (function_exists('mb_internal_encoding') && ((int) ini_get('mbstring.func_overload')) & 2) + { + $mbEncoding = mb_internal_encoding(); + mb_internal_encoding('ASCII'); + } + + switch ($value[0]) + { + case '[': + $result = self::parseSequence($value); + break; + case '{': + $result = self::parseMapping($value); + break; + default: + $result = self::parseScalar($value); + } + + if (isset($mbEncoding)) + { + mb_internal_encoding($mbEncoding); + } + + return $result; + } + + /** + * Dumps a given PHP variable to a YAML string. + * + * @param mixed $value The PHP variable to convert + * + * @return string The YAML string representing the PHP array + */ + static public function dump($value) + { + if ('1.1' === sfYaml::getSpecVersion()) + { + $trueValues = array('true', 'on', '+', 'yes', 'y'); + $falseValues = array('false', 'off', '-', 'no', 'n'); + } + else + { + $trueValues = array('true'); + $falseValues = array('false'); + } + + switch (true) + { + case is_resource($value): + throw new InvalidArgumentException('Unable to dump PHP resources in a YAML file.'); + case is_object($value): + return '!!php/object:'.serialize($value); + case is_array($value): + return self::dumpArray($value); + case null === $value: + return 'null'; + case true === $value: + return 'true'; + case false === $value: + return 'false'; + case ctype_digit($value): + return is_string($value) ? "'$value'" : (int) $value; + case is_numeric($value): + return is_infinite($value) ? str_ireplace('INF', '.Inf', strval($value)) : (is_string($value) ? "'$value'" : $value); + case false !== strpos($value, "\n") || false !== strpos($value, "\r"): + return sprintf('"%s"', str_replace(array('"', "\n", "\r"), array('\\"', '\n', '\r'), $value)); + case preg_match('/[ \s \' " \: \{ \} \[ \] , & \* \# \?] | \A[ - ? | < > = ! % @ ` ]/x', $value): + return sprintf("'%s'", str_replace('\'', '\'\'', $value)); + case '' == $value: + return "''"; + case preg_match(self::getTimestampRegex(), $value): + return "'$value'"; + case in_array(strtolower($value), $trueValues): + return "'$value'"; + case in_array(strtolower($value), $falseValues): + return "'$value'"; + case in_array(strtolower($value), array('null', '~')): + return "'$value'"; + default: + return $value; + } + } + + /** + * Dumps a PHP array to a YAML string. + * + * @param array $value The PHP array to dump + * + * @return string The YAML string representing the PHP array + */ + static protected function dumpArray($value) + { + // array + $keys = array_keys($value); + if ( + (1 == count($keys) && '0' == $keys[0]) + || + (count($keys) > 1 && array_reduce($keys, create_function('$v,$w', 'return (integer) $v + $w;'), 0) == count($keys) * (count($keys) - 1) / 2)) + { + $output = array(); + foreach ($value as $val) + { + $output[] = self::dump($val); + } + + return sprintf('[%s]', implode(', ', $output)); + } + + // mapping + $output = array(); + foreach ($value as $key => $val) + { + $output[] = sprintf('%s: %s', self::dump($key), self::dump($val)); + } + + return sprintf('{ %s }', implode(', ', $output)); + } + + /** + * Parses a scalar to a YAML string. + * + * @param scalar $scalar + * @param string $delimiters + * @param array $stringDelimiter + * @param integer $i + * @param boolean $evaluate + * + * @return string A YAML string + */ + static public function parseScalar($scalar, $delimiters = null, $stringDelimiters = array('"', "'"), &$i = 0, $evaluate = true) + { + if (in_array($scalar[$i], $stringDelimiters)) + { + // quoted scalar + $output = self::parseQuotedScalar($scalar, $i); + } + else + { + // "normal" string + if (!$delimiters) + { + $output = substr($scalar, $i); + $i += strlen($output); + + // remove comments + if (false !== $strpos = strpos($output, ' #')) + { + $output = rtrim(substr($output, 0, $strpos)); + } + } + else if (preg_match('/^(.+?)('.implode('|', $delimiters).')/', substr($scalar, $i), $match)) + { + $output = $match[1]; + $i += strlen($output); + } + else + { + throw new InvalidArgumentException(sprintf('Malformed inline YAML string (%s).', $scalar)); + } + + $output = $evaluate ? self::evaluateScalar($output) : $output; + } + + return $output; + } + + /** + * Parses a quoted scalar to YAML. + * + * @param string $scalar + * @param integer $i + * + * @return string A YAML string + */ + static protected function parseQuotedScalar($scalar, &$i) + { + if (!preg_match('/'.self::REGEX_QUOTED_STRING.'/Au', substr($scalar, $i), $match)) + { + throw new InvalidArgumentException(sprintf('Malformed inline YAML string (%s).', substr($scalar, $i))); + } + + $output = substr($match[0], 1, strlen($match[0]) - 2); + + if ('"' == $scalar[$i]) + { + // evaluate the string + $output = str_replace(array('\\"', '\\n', '\\r'), array('"', "\n", "\r"), $output); + } + else + { + // unescape ' + $output = str_replace('\'\'', '\'', $output); + } + + $i += strlen($match[0]); + + return $output; + } + + /** + * Parses a sequence to a YAML string. + * + * @param string $sequence + * @param integer $i + * + * @return string A YAML string + */ + static protected function parseSequence($sequence, &$i = 0) + { + $output = array(); + $len = strlen($sequence); + $i += 1; + + // [foo, bar, ...] + while ($i < $len) + { + switch ($sequence[$i]) + { + case '[': + // nested sequence + $output[] = self::parseSequence($sequence, $i); + break; + case '{': + // nested mapping + $output[] = self::parseMapping($sequence, $i); + break; + case ']': + return $output; + case ',': + case ' ': + break; + default: + $isQuoted = in_array($sequence[$i], array('"', "'")); + $value = self::parseScalar($sequence, array(',', ']'), array('"', "'"), $i); + + if (!$isQuoted && false !== strpos($value, ': ')) + { + // embedded mapping? + try + { + $value = self::parseMapping('{'.$value.'}'); + } + catch (InvalidArgumentException $e) + { + // no, it's not + } + } + + $output[] = $value; + + --$i; + } + + ++$i; + } + + throw new InvalidArgumentException(sprintf('Malformed inline YAML string %s', $sequence)); + } + + /** + * Parses a mapping to a YAML string. + * + * @param string $mapping + * @param integer $i + * + * @return string A YAML string + */ + static protected function parseMapping($mapping, &$i = 0) + { + $output = array(); + $len = strlen($mapping); + $i += 1; + + // {foo: bar, bar:foo, ...} + while ($i < $len) + { + switch ($mapping[$i]) + { + case ' ': + case ',': + ++$i; + continue 2; + case '}': + return $output; + } + + // key + $key = self::parseScalar($mapping, array(':', ' '), array('"', "'"), $i, false); + + // value + $done = false; + while ($i < $len) + { + switch ($mapping[$i]) + { + case '[': + // nested sequence + $output[$key] = self::parseSequence($mapping, $i); + $done = true; + break; + case '{': + // nested mapping + $output[$key] = self::parseMapping($mapping, $i); + $done = true; + break; + case ':': + case ' ': + break; + default: + $output[$key] = self::parseScalar($mapping, array(',', '}'), array('"', "'"), $i); + $done = true; + --$i; + } + + ++$i; + + if ($done) + { + continue 2; + } + } + } + + throw new InvalidArgumentException(sprintf('Malformed inline YAML string %s', $mapping)); + } + + /** + * Evaluates scalars and replaces magic values. + * + * @param string $scalar + * + * @return string A YAML string + */ + static protected function evaluateScalar($scalar) + { + $scalar = trim($scalar); + + if ('1.1' === sfYaml::getSpecVersion()) + { + $trueValues = array('true', 'on', '+', 'yes', 'y'); + $falseValues = array('false', 'off', '-', 'no', 'n'); + } + else + { + $trueValues = array('true'); + $falseValues = array('false'); + } + + switch (true) + { + case 'null' == strtolower($scalar): + case '' == $scalar: + case '~' == $scalar: + return null; + case 0 === strpos($scalar, '!str'): + return (string) substr($scalar, 5); + case 0 === strpos($scalar, '! '): + return intval(self::parseScalar(substr($scalar, 2))); + case 0 === strpos($scalar, '!!php/object:'): + return unserialize(substr($scalar, 13)); + case ctype_digit($scalar): + $raw = $scalar; + $cast = intval($scalar); + return '0' == $scalar[0] ? octdec($scalar) : (((string) $raw == (string) $cast) ? $cast : $raw); + case in_array(strtolower($scalar), $trueValues): + return true; + case in_array(strtolower($scalar), $falseValues): + return false; + case is_numeric($scalar): + return '0x' == $scalar[0].$scalar[1] ? hexdec($scalar) : floatval($scalar); + case 0 == strcasecmp($scalar, '.inf'): + case 0 == strcasecmp($scalar, '.NaN'): + return -log(0); + case 0 == strcasecmp($scalar, '-.inf'): + return log(0); + case preg_match('/^(-|\+)?[0-9,]+(\.[0-9]+)?$/', $scalar): + return floatval(str_replace(',', '', $scalar)); + case preg_match(self::getTimestampRegex(), $scalar): + return strtotime($scalar); + default: + return (string) $scalar; + } + } + + static protected function getTimestampRegex() + { + return <<[0-9][0-9][0-9][0-9]) + -(?P[0-9][0-9]?) + -(?P[0-9][0-9]?) + (?:(?:[Tt]|[ \t]+) + (?P[0-9][0-9]?) + :(?P[0-9][0-9]) + :(?P[0-9][0-9]) + (?:\.(?P[0-9]*))? + (?:[ \t]*(?PZ|(?P[-+])(?P[0-9][0-9]?) + (?::(?P[0-9][0-9]))?))?)? + $~x +EOF; + } +} diff --git a/lib/vendor/symfony/lib/yaml/sfYamlParser.php b/lib/vendor/symfony/lib/yaml/sfYamlParser.php new file mode 100644 index 0000000..03bd0b8 --- /dev/null +++ b/lib/vendor/symfony/lib/yaml/sfYamlParser.php @@ -0,0 +1,600 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/sfYamlInline.php'); + +if (!defined('PREG_BAD_UTF8_OFFSET_ERROR')) +{ + define('PREG_BAD_UTF8_OFFSET_ERROR', 5); +} + +/** + * sfYamlParser parses YAML strings to convert them to PHP arrays. + * + * @package symfony + * @subpackage yaml + * @author Fabien Potencier + * @version SVN: $Id: sfYamlParser.class.php 10832 2008-08-13 07:46:08Z fabien $ + */ +class sfYamlParser +{ + protected + $offset = 0, + $lines = array(), + $currentLineNb = -1, + $currentLine = '', + $refs = array(); + + /** + * Constructor + * + * @param integer $offset The offset of YAML document (used for line numbers in error messages) + */ + public function __construct($offset = 0) + { + $this->offset = $offset; + } + + /** + * Parses a YAML string to a PHP value. + * + * @param string $value A YAML string + * + * @return mixed A PHP value + * + * @throws InvalidArgumentException If the YAML is not valid + */ + public function parse($value) + { + $this->currentLineNb = -1; + $this->currentLine = ''; + $this->lines = explode("\n", $this->cleanup($value)); + + if (function_exists('mb_internal_encoding') && ((int) ini_get('mbstring.func_overload')) & 2) + { + $mbEncoding = mb_internal_encoding(); + mb_internal_encoding('UTF-8'); + } + + $data = array(); + while ($this->moveToNextLine()) + { + if ($this->isCurrentLineEmpty()) + { + continue; + } + + // tab? + if (preg_match('#^\t+#', $this->currentLine)) + { + throw new InvalidArgumentException(sprintf('A YAML file cannot contain tabs as indentation at line %d (%s).', $this->getRealCurrentLineNb() + 1, $this->currentLine)); + } + + $isRef = $isInPlace = $isProcessed = false; + if (preg_match('#^\-(\s+(?P.+?))?\s*$#u', $this->currentLine, $values)) + { + if (isset($values['value']) && preg_match('#^&(?P[^ ]+) *(?P.*)#u', $values['value'], $matches)) + { + $isRef = $matches['ref']; + $values['value'] = $matches['value']; + } + + // array + if (!isset($values['value']) || '' == trim($values['value'], ' ') || 0 === strpos(ltrim($values['value'], ' '), '#')) + { + $c = $this->getRealCurrentLineNb() + 1; + $parser = new sfYamlParser($c); + $parser->refs =& $this->refs; + $data[] = $parser->parse($this->getNextEmbedBlock()); + } + else + { + if (preg_match('/^([^ ]+)\: +({.*?)$/u', $values['value'], $matches)) + { + $data[] = array($matches[1] => sfYamlInline::load($matches[2])); + } + else + { + $data[] = $this->parseValue($values['value']); + } + } + } + else if (preg_match('#^(?P'.sfYamlInline::REGEX_QUOTED_STRING.'|[^ \{\[].*?) *\:(\s+(?P.+?))?\s*$#u', $this->currentLine, $values)) + { + $key = sfYamlInline::parseScalar($values['key']); + + if ('<<' === $key) + { + if (isset($values['value']) && '*' === substr($values['value'], 0, 1)) + { + $isInPlace = substr($values['value'], 1); + if (!array_key_exists($isInPlace, $this->refs)) + { + throw new InvalidArgumentException(sprintf('Reference "%s" does not exist at line %s (%s).', $isInPlace, $this->getRealCurrentLineNb() + 1, $this->currentLine)); + } + } + else + { + if (isset($values['value']) && $values['value'] !== '') + { + $value = $values['value']; + } + else + { + $value = $this->getNextEmbedBlock(); + } + $c = $this->getRealCurrentLineNb() + 1; + $parser = new sfYamlParser($c); + $parser->refs =& $this->refs; + $parsed = $parser->parse($value); + + $merged = array(); + if (!is_array($parsed)) + { + throw new InvalidArgumentException(sprintf("YAML merge keys used with a scalar value instead of an array at line %s (%s)", $this->getRealCurrentLineNb() + 1, $this->currentLine)); + } + else if (isset($parsed[0])) + { + // Numeric array, merge individual elements + foreach (array_reverse($parsed) as $parsedItem) + { + if (!is_array($parsedItem)) + { + throw new InvalidArgumentException(sprintf("Merge items must be arrays at line %s (%s).", $this->getRealCurrentLineNb() + 1, $parsedItem)); + } + $merged = array_merge($parsedItem, $merged); + } + } + else + { + // Associative array, merge + $merged = array_merge($merged, $parsed); + } + + $isProcessed = $merged; + } + } + else if (isset($values['value']) && preg_match('#^&(?P[^ ]+) *(?P.*)#u', $values['value'], $matches)) + { + $isRef = $matches['ref']; + $values['value'] = $matches['value']; + } + + if ($isProcessed) + { + // Merge keys + $data = $isProcessed; + } + // hash + else if (!isset($values['value']) || '' == trim($values['value'], ' ') || 0 === strpos(ltrim($values['value'], ' '), '#')) + { + // if next line is less indented or equal, then it means that the current value is null + if ($this->isNextLineIndented()) + { + $data[$key] = null; + } + else + { + $c = $this->getRealCurrentLineNb() + 1; + $parser = new sfYamlParser($c); + $parser->refs =& $this->refs; + $data[$key] = $parser->parse($this->getNextEmbedBlock()); + } + } + else + { + if ($isInPlace) + { + $data = $this->refs[$isInPlace]; + } + else + { + $data[$key] = $this->parseValue($values['value']); + } + } + } + else + { + // 1-liner followed by newline + if (2 == count($this->lines) && empty($this->lines[1])) + { + $value = sfYamlInline::load($this->lines[0]); + if (is_array($value)) + { + $first = reset($value); + if ('*' === substr($first, 0, 1)) + { + $data = array(); + foreach ($value as $alias) + { + $data[] = $this->refs[substr($alias, 1)]; + } + $value = $data; + } + } + + if (isset($mbEncoding)) + { + mb_internal_encoding($mbEncoding); + } + + return $value; + } + + switch (preg_last_error()) + { + case PREG_INTERNAL_ERROR: + $error = 'Internal PCRE error on line'; + break; + case PREG_BACKTRACK_LIMIT_ERROR: + $error = 'pcre.backtrack_limit reached on line'; + break; + case PREG_RECURSION_LIMIT_ERROR: + $error = 'pcre.recursion_limit reached on line'; + break; + case PREG_BAD_UTF8_ERROR: + $error = 'Malformed UTF-8 data on line'; + break; + case PREG_BAD_UTF8_OFFSET_ERROR: + $error = 'Offset doesn\'t correspond to the begin of a valid UTF-8 code point on line'; + break; + default: + $error = 'Unable to parse line'; + } + + throw new InvalidArgumentException(sprintf('%s %d (%s).', $error, $this->getRealCurrentLineNb() + 1, $this->currentLine)); + } + + if ($isRef) + { + $this->refs[$isRef] = end($data); + } + } + + if (isset($mbEncoding)) + { + mb_internal_encoding($mbEncoding); + } + + return empty($data) ? null : $data; + } + + /** + * Returns the current line number (takes the offset into account). + * + * @return integer The current line number + */ + protected function getRealCurrentLineNb() + { + return $this->currentLineNb + $this->offset; + } + + /** + * Returns the current line indentation. + * + * @return integer The current line indentation + */ + protected function getCurrentLineIndentation() + { + return strlen($this->currentLine) - strlen(ltrim($this->currentLine, ' ')); + } + + /** + * Returns the next embed block of YAML. + * + * @return string A YAML string + */ + protected function getNextEmbedBlock() + { + $this->moveToNextLine(); + + $newIndent = $this->getCurrentLineIndentation(); + + if (!$this->isCurrentLineEmpty() && 0 == $newIndent) + { + throw new InvalidArgumentException(sprintf('Indentation problem at line %d (%s)', $this->getRealCurrentLineNb() + 1, $this->currentLine)); + } + + $data = array(substr($this->currentLine, $newIndent)); + + while ($this->moveToNextLine()) + { + if ($this->isCurrentLineEmpty()) + { + if ($this->isCurrentLineBlank()) + { + $data[] = substr($this->currentLine, $newIndent); + } + + continue; + } + + $indent = $this->getCurrentLineIndentation(); + + if (preg_match('#^(?P *)$#', $this->currentLine, $match)) + { + // empty line + $data[] = $match['text']; + } + else if ($indent >= $newIndent) + { + $data[] = substr($this->currentLine, $newIndent); + } + else if (0 == $indent) + { + $this->moveToPreviousLine(); + + break; + } + else + { + throw new InvalidArgumentException(sprintf('Indentation problem at line %d (%s)', $this->getRealCurrentLineNb() + 1, $this->currentLine)); + } + } + + return implode("\n", $data); + } + + /** + * Moves the parser to the next line. + */ + protected function moveToNextLine() + { + if ($this->currentLineNb >= count($this->lines) - 1) + { + return false; + } + + $this->currentLine = $this->lines[++$this->currentLineNb]; + + return true; + } + + /** + * Moves the parser to the previous line. + */ + protected function moveToPreviousLine() + { + $this->currentLine = $this->lines[--$this->currentLineNb]; + } + + /** + * Parses a YAML value. + * + * @param string $value A YAML value + * + * @return mixed A PHP value + */ + protected function parseValue($value) + { + if ('*' === substr($value, 0, 1)) + { + if (false !== $pos = strpos($value, '#')) + { + $value = substr($value, 1, $pos - 2); + } + else + { + $value = substr($value, 1); + } + + if (!array_key_exists($value, $this->refs)) + { + throw new InvalidArgumentException(sprintf('Reference "%s" does not exist (%s).', $value, $this->currentLine)); + } + return $this->refs[$value]; + } + + if (preg_match('/^(?P\||>)(?P\+|\-|\d+|\+\d+|\-\d+|\d+\+|\d+\-)?(?P +#.*)?$/', $value, $matches)) + { + $modifiers = isset($matches['modifiers']) ? $matches['modifiers'] : ''; + + return $this->parseFoldedScalar($matches['separator'], preg_replace('#\d+#', '', $modifiers), intval(abs($modifiers))); + } + else + { + return sfYamlInline::load($value); + } + } + + /** + * Parses a folded scalar. + * + * @param string $separator The separator that was used to begin this folded scalar (| or >) + * @param string $indicator The indicator that was used to begin this folded scalar (+ or -) + * @param integer $indentation The indentation that was used to begin this folded scalar + * + * @return string The text value + */ + protected function parseFoldedScalar($separator, $indicator = '', $indentation = 0) + { + $separator = '|' == $separator ? "\n" : ' '; + $text = ''; + + $notEOF = $this->moveToNextLine(); + + while ($notEOF && $this->isCurrentLineBlank()) + { + $text .= "\n"; + + $notEOF = $this->moveToNextLine(); + } + + if (!$notEOF) + { + return ''; + } + + if (!preg_match('#^(?P'.($indentation ? str_repeat(' ', $indentation) : ' +').')(?P.*)$#u', $this->currentLine, $matches)) + { + $this->moveToPreviousLine(); + + return ''; + } + + $textIndent = $matches['indent']; + $previousIndent = 0; + + $text .= $matches['text'].$separator; + while ($this->currentLineNb + 1 < count($this->lines)) + { + $this->moveToNextLine(); + + if (preg_match('#^(?P {'.strlen($textIndent).',})(?P.+)$#u', $this->currentLine, $matches)) + { + if (' ' == $separator && $previousIndent != $matches['indent']) + { + $text = substr($text, 0, -1)."\n"; + } + $previousIndent = $matches['indent']; + + $text .= str_repeat(' ', $diff = strlen($matches['indent']) - strlen($textIndent)).$matches['text'].($diff ? "\n" : $separator); + } + else if (preg_match('#^(?P *)$#', $this->currentLine, $matches)) + { + $text .= preg_replace('#^ {1,'.strlen($textIndent).'}#', '', $matches['text'])."\n"; + } + else + { + $this->moveToPreviousLine(); + + break; + } + } + + if (' ' == $separator) + { + // replace last separator by a newline + $text = preg_replace('/ (\n*)$/', "\n$1", $text); + } + + switch ($indicator) + { + case '': + $text = preg_replace('#\n+$#s', "\n", $text); + break; + case '+': + break; + case '-': + $text = preg_replace('#\n+$#s', '', $text); + break; + } + + return $text; + } + + /** + * Returns true if the next line is indented. + * + * @return Boolean Returns true if the next line is indented, false otherwise + */ + protected function isNextLineIndented() + { + $currentIndentation = $this->getCurrentLineIndentation(); + $notEOF = $this->moveToNextLine(); + + while ($notEOF && $this->isCurrentLineEmpty()) + { + $notEOF = $this->moveToNextLine(); + } + + if (false === $notEOF) + { + return false; + } + + $ret = false; + if ($this->getCurrentLineIndentation() <= $currentIndentation) + { + $ret = true; + } + + $this->moveToPreviousLine(); + + return $ret; + } + + /** + * Returns true if the current line is blank or if it is a comment line. + * + * @return Boolean Returns true if the current line is empty or if it is a comment line, false otherwise + */ + protected function isCurrentLineEmpty() + { + return $this->isCurrentLineBlank() || $this->isCurrentLineComment(); + } + + /** + * Returns true if the current line is blank. + * + * @return Boolean Returns true if the current line is blank, false otherwise + */ + protected function isCurrentLineBlank() + { + return '' == trim($this->currentLine, ' '); + } + + /** + * Returns true if the current line is a comment line. + * + * @return Boolean Returns true if the current line is a comment line, false otherwise + */ + protected function isCurrentLineComment() + { + //checking explicitly the first char of the trim is faster than loops or strpos + $ltrimmedLine = ltrim($this->currentLine, ' '); + return $ltrimmedLine[0] === '#'; + } + + /** + * Cleanups a YAML string to be parsed. + * + * @param string $value The input YAML string + * + * @return string A cleaned up YAML string + */ + protected function cleanup($value) + { + $value = str_replace(array("\r\n", "\r"), "\n", $value); + + if (!preg_match("#\n$#", $value)) + { + $value .= "\n"; + } + + // strip YAML header + $count = 0; + $value = preg_replace('#^\%YAML[: ][\d\.]+.*\n#su', '', $value, -1, $count); + $this->offset += $count; + + // remove leading comments + $trimmedValue = preg_replace('#^(\#.*?\n)+#s', '', $value, -1, $count); + if ($count == 1) + { + // items have been removed, update the offset + $this->offset += substr_count($value, "\n") - substr_count($trimmedValue, "\n"); + $value = $trimmedValue; + } + + // remove start of the document marker (---) + $trimmedValue = preg_replace('#^\-\-\-.*?\n#s', '', $value, -1, $count); + if ($count == 1) + { + // items have been removed, update the offset + $this->offset += substr_count($value, "\n") - substr_count($trimmedValue, "\n"); + $value = $trimmedValue; + + // remove end of the document marker (...) + $value = preg_replace('#\.\.\.\s*$#s', '', $value); + } + + return $value; + } +} diff --git a/lib/vendor/symfony/licenses/.svn/all-wcprops b/lib/vendor/symfony/licenses/.svn/all-wcprops new file mode 100644 index 0000000..850cb3f --- /dev/null +++ b/lib/vendor/symfony/licenses/.svn/all-wcprops @@ -0,0 +1,29 @@ +K 25 +svn:wc:ra_dav:version-url +V 37 +/!svn/ver/23881/branches/1.4/licenses +END +LICENSE.ICU +K 25 +svn:wc:ra_dav:version-url +V 49 +/!svn/ver/23881/branches/1.4/licenses/LICENSE.ICU +END +LICENSE.prado +K 25 +svn:wc:ra_dav:version-url +V 51 +/!svn/ver/23881/branches/1.4/licenses/LICENSE.prado +END +LICENSE.lime +K 25 +svn:wc:ra_dav:version-url +V 50 +/!svn/ver/23881/branches/1.4/licenses/LICENSE.lime +END +LICENSE.swiftmailer +K 25 +svn:wc:ra_dav:version-url +V 57 +/!svn/ver/23881/branches/1.4/licenses/LICENSE.swiftmailer +END diff --git a/lib/vendor/symfony/licenses/.svn/entries b/lib/vendor/symfony/licenses/.svn/entries new file mode 100644 index 0000000..cf97b23 --- /dev/null +++ b/lib/vendor/symfony/licenses/.svn/entries @@ -0,0 +1,164 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/licenses +http://svn.symfony-project.com + + + +2009-09-09T14:12:23.564070Z +21808 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +LICENSE.ICU +file + + + + +2012-05-10T18:41:01.305548Z +6b308044ba51b5bb70815471022db797 +2006-12-09T09:08:06.755009Z +2985 +fabien + + + + + + + + + + + + + + + + + + + + + +1818 + +LICENSE.prado +file + + + + +2012-05-10T18:41:01.305548Z +d4cce826f50d106cc9c6150abaef0ee0 +2006-12-09T09:08:06.755009Z +2985 +fabien + + + + + + + + + + + + + + + + + + + + + +1506 + +LICENSE.lime +file + + + + +2012-05-10T18:41:01.313549Z +c0ab88a4687e9ff8e0fb6c95ca49ed74 +2006-12-09T09:08:06.755009Z +2985 +fabien + + + + + + + + + + + + + + + + + + + + + +1065 + +LICENSE.swiftmailer +file + + + + +2012-05-10T18:41:01.313549Z +6a6a8e020838b23406c81b19c1d46df6 +2009-09-09T14:12:23.564070Z +21808 +fabien + + + + + + + + + + + + + + + + + + + + + +7639 + diff --git a/lib/vendor/symfony/licenses/.svn/text-base/LICENSE.ICU.svn-base b/lib/vendor/symfony/licenses/.svn/text-base/LICENSE.ICU.svn-base new file mode 100644 index 0000000..ccbd57f --- /dev/null +++ b/lib/vendor/symfony/licenses/.svn/text-base/LICENSE.ICU.svn-base @@ -0,0 +1,35 @@ +ICU License - ICU 1.8.1 and later + +COPYRIGHT AND PERMISSION NOTICE + +Copyright (c) 1995-2005 International Business Machines Corporation and others +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, and/or sell copies of the Software, and to permit persons +to whom the Software is furnished to do so, provided that the above +copyright notice(s) and this permission notice appear in all copies of +the Software and that both the above copyright notice(s) and this +permission notice appear in supporting documentation. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL +INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING +FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION +WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +Except as contained in this notice, the name of a copyright holder +shall not be used in advertising or otherwise to promote the sale, use +or other dealings in this Software without prior written authorization +of the copyright holder. + +-------------------------------------------------------------------------------- +All trademarks and registered trademarks mentioned herein are the property of their respective owners. + diff --git a/lib/vendor/symfony/licenses/.svn/text-base/LICENSE.lime.svn-base b/lib/vendor/symfony/licenses/.svn/text-base/LICENSE.lime.svn-base new file mode 100644 index 0000000..28956ad --- /dev/null +++ b/lib/vendor/symfony/licenses/.svn/text-base/LICENSE.lime.svn-base @@ -0,0 +1,7 @@ +Copyright (c) 2004-2006 Fabien Potencier + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/lib/vendor/symfony/licenses/.svn/text-base/LICENSE.prado.svn-base b/lib/vendor/symfony/licenses/.svn/text-base/LICENSE.prado.svn-base new file mode 100644 index 0000000..bbacbe8 --- /dev/null +++ b/lib/vendor/symfony/licenses/.svn/text-base/LICENSE.prado.svn-base @@ -0,0 +1,28 @@ +Copyright 2004-2006, The PRADO Group (http://www.pradosoft.com) +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +- Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. + +- Neither the name of the PRADO Group nor the names of its contributors +may be used to endorse or promote products derived from this software +without specific prior written permission. + + +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. diff --git a/lib/vendor/symfony/licenses/.svn/text-base/LICENSE.swiftmailer.svn-base b/lib/vendor/symfony/licenses/.svn/text-base/LICENSE.swiftmailer.svn-base new file mode 100644 index 0000000..fc8a5de --- /dev/null +++ b/lib/vendor/symfony/licenses/.svn/text-base/LICENSE.swiftmailer.svn-base @@ -0,0 +1,165 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. diff --git a/lib/vendor/symfony/licenses/LICENSE.ICU b/lib/vendor/symfony/licenses/LICENSE.ICU new file mode 100644 index 0000000..ccbd57f --- /dev/null +++ b/lib/vendor/symfony/licenses/LICENSE.ICU @@ -0,0 +1,35 @@ +ICU License - ICU 1.8.1 and later + +COPYRIGHT AND PERMISSION NOTICE + +Copyright (c) 1995-2005 International Business Machines Corporation and others +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, and/or sell copies of the Software, and to permit persons +to whom the Software is furnished to do so, provided that the above +copyright notice(s) and this permission notice appear in all copies of +the Software and that both the above copyright notice(s) and this +permission notice appear in supporting documentation. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL +INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING +FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION +WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +Except as contained in this notice, the name of a copyright holder +shall not be used in advertising or otherwise to promote the sale, use +or other dealings in this Software without prior written authorization +of the copyright holder. + +-------------------------------------------------------------------------------- +All trademarks and registered trademarks mentioned herein are the property of their respective owners. + diff --git a/lib/vendor/symfony/licenses/LICENSE.lime b/lib/vendor/symfony/licenses/LICENSE.lime new file mode 100644 index 0000000..28956ad --- /dev/null +++ b/lib/vendor/symfony/licenses/LICENSE.lime @@ -0,0 +1,7 @@ +Copyright (c) 2004-2006 Fabien Potencier + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/lib/vendor/symfony/licenses/LICENSE.prado b/lib/vendor/symfony/licenses/LICENSE.prado new file mode 100644 index 0000000..bbacbe8 --- /dev/null +++ b/lib/vendor/symfony/licenses/LICENSE.prado @@ -0,0 +1,28 @@ +Copyright 2004-2006, The PRADO Group (http://www.pradosoft.com) +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +- Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. + +- Neither the name of the PRADO Group nor the names of its contributors +may be used to endorse or promote products derived from this software +without specific prior written permission. + + +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. diff --git a/lib/vendor/symfony/licenses/LICENSE.swiftmailer b/lib/vendor/symfony/licenses/LICENSE.swiftmailer new file mode 100644 index 0000000..fc8a5de --- /dev/null +++ b/lib/vendor/symfony/licenses/LICENSE.swiftmailer @@ -0,0 +1,165 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. diff --git a/lib/vendor/symfony/package.xml.tmpl b/lib/vendor/symfony/package.xml.tmpl new file mode 100644 index 0000000..5cf94f3 --- /dev/null +++ b/lib/vendor/symfony/package.xml.tmpl @@ -0,0 +1,102 @@ + + + symfony + pear.symfony-project.com + Symfony is a complete framework designed to optimize the development of web applications. + + Symfony is a complete framework designed to optimize the development of web applications by way of several key features. + For starters, it separates a web application's business rules, server logic, and presentation views. + It contains numerous tools and classes aimed at shortening the development time of a complex web application. + Additionally, it automates common tasks so that the developer can focus entirely on the specifics of an application. + The end result of these advantages means there is no need to reinvent the wheel every time a new web application is built! + + + Fabien POTENCIER + fabpot + fabien.potencier@symfony-project.com + yes + + ##CURRENT_DATE## + + ##SYMFONY_VERSION## + 1.4.0 + + + ##STABILITY## + ##STABILITY## + + MIT license + - + + + + + ##CLASS_FILES## + + + + + + + + + + + + + + + + + + + + + + + 5.2.4 + + + 1.4.1 + + + reflection + + + ctype + + + pcre + + + simplexml + + + xml + + + dom + + + + + + + + windows + + + + + + + + + + + + + + + + diff --git a/lib/vendor/symfony/test/.svn/all-wcprops b/lib/vendor/symfony/test/.svn/all-wcprops new file mode 100644 index 0000000..64b58ac --- /dev/null +++ b/lib/vendor/symfony/test/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 33 +/!svn/ver/33373/branches/1.4/test +END diff --git a/lib/vendor/symfony/test/.svn/entries b/lib/vendor/symfony/test/.svn/entries new file mode 100644 index 0000000..74ff1bf --- /dev/null +++ b/lib/vendor/symfony/test/.svn/entries @@ -0,0 +1,43 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test +http://svn.symfony-project.com + + + +2012-03-08T15:45:46.554010Z +33373 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +unit +dir + +other +dir + +functional +dir + +bin +dir + +bootstrap +dir + diff --git a/lib/vendor/symfony/test/bin/.svn/all-wcprops b/lib/vendor/symfony/test/bin/.svn/all-wcprops new file mode 100644 index 0000000..51f9092 --- /dev/null +++ b/lib/vendor/symfony/test/bin/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 37 +/!svn/ver/23932/branches/1.4/test/bin +END +coverage.php +K 25 +svn:wc:ra_dav:version-url +V 50 +/!svn/ver/23881/branches/1.4/test/bin/coverage.php +END +loc.php +K 25 +svn:wc:ra_dav:version-url +V 45 +/!svn/ver/23932/branches/1.4/test/bin/loc.php +END diff --git a/lib/vendor/symfony/test/bin/.svn/entries b/lib/vendor/symfony/test/bin/.svn/entries new file mode 100644 index 0000000..a318a53 --- /dev/null +++ b/lib/vendor/symfony/test/bin/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/bin +http://svn.symfony-project.com + + + +2009-11-14T16:32:53.123081Z +23932 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +coverage.php +file + + + + +2012-05-10T18:41:01.233548Z +8bd276c4e211974680cc2153b9ffb2f6 +2009-06-30T16:53:57.744449Z +19717 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +1235 + +loc.php +file + + + + +2012-05-10T18:41:01.233548Z +bc322a064873598b26c1e552f154eabc +2009-11-14T16:32:53.123081Z +23932 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +1550 + diff --git a/lib/vendor/symfony/test/bin/.svn/prop-base/coverage.php.svn-base b/lib/vendor/symfony/test/bin/.svn/prop-base/coverage.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/bin/.svn/prop-base/coverage.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/bin/.svn/prop-base/loc.php.svn-base b/lib/vendor/symfony/test/bin/.svn/prop-base/loc.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/bin/.svn/prop-base/loc.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/bin/.svn/text-base/coverage.php.svn-base b/lib/vendor/symfony/test/bin/.svn/text-base/coverage.php.svn-base new file mode 100644 index 0000000..75a2339 --- /dev/null +++ b/lib/vendor/symfony/test/bin/.svn/text-base/coverage.php.svn-base @@ -0,0 +1,35 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../lib/vendor/lime/lime.php'); +require_once(dirname(__FILE__).'/../../lib/util/sfFinder.class.php'); + +$h = new lime_harness(); +$h->base_dir = realpath(dirname(__FILE__).'/..'); + +// unit tests +$h->register_glob($h->base_dir.'/unit/*/*Test.php'); +$h->register_glob($h->base_dir.'/unit/*/*/*Test.php'); +$h->register_glob($h->base_dir.'/../lib/plugins/*/unit/*Test.php'); +$h->register_glob($h->base_dir.'/../lib/plugins/*/unit/*/*Test.php'); + +// functional tests +$h->register_glob($h->base_dir.'/functional/*Test.php'); +$h->register_glob($h->base_dir.'/functional/*/*Test.php'); +$h->register_glob($h->base_dir.'/../lib/plugins/*/functional/*Test.php'); + +$c = new lime_coverage($h); +$c->extension = '.class.php'; +$c->verbose = false; +$c->base_dir = realpath(dirname(__FILE__).'/../../lib'); + +$finder = sfFinder::type('file')->name('*.php')->prune('vendor')->prune('test')->prune('data'); +$c->register($finder->in($c->base_dir)); +$c->run(); diff --git a/lib/vendor/symfony/test/bin/.svn/text-base/loc.php.svn-base b/lib/vendor/symfony/test/bin/.svn/text-base/loc.php.svn-base new file mode 100644 index 0000000..9b6965b --- /dev/null +++ b/lib/vendor/symfony/test/bin/.svn/text-base/loc.php.svn-base @@ -0,0 +1,45 @@ +name('*.php')->prune('vendor', 'plugins')->in($root_dir.'/lib'); +foreach ($files as $file) +{ + $total_loc += count(lime_coverage::get_php_lines($file)); +} +$files = sfFinder::type('file')->name('*.php')->prune('vendor')->in($root_dir.'/lib/plugins/*/lib'); +foreach ($files as $file) +{ + $total_loc += count(lime_coverage::get_php_lines($file)); +} + +// symfony tests LOC +$total_tests_loc = 0; +$files = sfFinder::type('file')->name('*Test.php')->in(array( + $root_dir.'/lib/plugins/sfPropelPlugin/test/unit', + $root_dir.'/lib/plugins/sfPropelPlugin/test/functional', + $root_dir.'/lib/plugins/sfDoctrinePlugin/test/unit', + $root_dir.'/lib/plugins/sfDoctrinePlugin/test/functional', + $root_dir.'/test/unit', + $root_dir.'/test/functional', + $root_dir.'/test/other', +)); +foreach ($files as $file) +{ + $total_tests_loc += count(lime_coverage::get_php_lines($file)); +} + +printf("core librairies: %6d\n", $total_loc); +printf("unit and functional tests: %6d\n", $total_tests_loc); +echo "---------------------------------\n"; +printf("ratio tests/librairies: %5d%%\n", $total_tests_loc / $total_loc * 100); diff --git a/lib/vendor/symfony/test/bin/coverage.php b/lib/vendor/symfony/test/bin/coverage.php new file mode 100644 index 0000000..75a2339 --- /dev/null +++ b/lib/vendor/symfony/test/bin/coverage.php @@ -0,0 +1,35 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../lib/vendor/lime/lime.php'); +require_once(dirname(__FILE__).'/../../lib/util/sfFinder.class.php'); + +$h = new lime_harness(); +$h->base_dir = realpath(dirname(__FILE__).'/..'); + +// unit tests +$h->register_glob($h->base_dir.'/unit/*/*Test.php'); +$h->register_glob($h->base_dir.'/unit/*/*/*Test.php'); +$h->register_glob($h->base_dir.'/../lib/plugins/*/unit/*Test.php'); +$h->register_glob($h->base_dir.'/../lib/plugins/*/unit/*/*Test.php'); + +// functional tests +$h->register_glob($h->base_dir.'/functional/*Test.php'); +$h->register_glob($h->base_dir.'/functional/*/*Test.php'); +$h->register_glob($h->base_dir.'/../lib/plugins/*/functional/*Test.php'); + +$c = new lime_coverage($h); +$c->extension = '.class.php'; +$c->verbose = false; +$c->base_dir = realpath(dirname(__FILE__).'/../../lib'); + +$finder = sfFinder::type('file')->name('*.php')->prune('vendor')->prune('test')->prune('data'); +$c->register($finder->in($c->base_dir)); +$c->run(); diff --git a/lib/vendor/symfony/test/bin/loc.php b/lib/vendor/symfony/test/bin/loc.php new file mode 100644 index 0000000..9b6965b --- /dev/null +++ b/lib/vendor/symfony/test/bin/loc.php @@ -0,0 +1,45 @@ +name('*.php')->prune('vendor', 'plugins')->in($root_dir.'/lib'); +foreach ($files as $file) +{ + $total_loc += count(lime_coverage::get_php_lines($file)); +} +$files = sfFinder::type('file')->name('*.php')->prune('vendor')->in($root_dir.'/lib/plugins/*/lib'); +foreach ($files as $file) +{ + $total_loc += count(lime_coverage::get_php_lines($file)); +} + +// symfony tests LOC +$total_tests_loc = 0; +$files = sfFinder::type('file')->name('*Test.php')->in(array( + $root_dir.'/lib/plugins/sfPropelPlugin/test/unit', + $root_dir.'/lib/plugins/sfPropelPlugin/test/functional', + $root_dir.'/lib/plugins/sfDoctrinePlugin/test/unit', + $root_dir.'/lib/plugins/sfDoctrinePlugin/test/functional', + $root_dir.'/test/unit', + $root_dir.'/test/functional', + $root_dir.'/test/other', +)); +foreach ($files as $file) +{ + $total_tests_loc += count(lime_coverage::get_php_lines($file)); +} + +printf("core librairies: %6d\n", $total_loc); +printf("unit and functional tests: %6d\n", $total_tests_loc); +echo "---------------------------------\n"; +printf("ratio tests/librairies: %5d%%\n", $total_tests_loc / $total_loc * 100); diff --git a/lib/vendor/symfony/test/bootstrap/.svn/all-wcprops b/lib/vendor/symfony/test/bootstrap/.svn/all-wcprops new file mode 100644 index 0000000..debb7fa --- /dev/null +++ b/lib/vendor/symfony/test/bootstrap/.svn/all-wcprops @@ -0,0 +1,23 @@ +K 25 +svn:wc:ra_dav:version-url +V 43 +/!svn/ver/24039/branches/1.4/test/bootstrap +END +unit.php +K 25 +svn:wc:ra_dav:version-url +V 52 +/!svn/ver/23881/branches/1.4/test/bootstrap/unit.php +END +functional.php +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/24039/branches/1.4/test/bootstrap/functional.php +END +task.php +K 25 +svn:wc:ra_dav:version-url +V 52 +/!svn/ver/23881/branches/1.4/test/bootstrap/task.php +END diff --git a/lib/vendor/symfony/test/bootstrap/.svn/entries b/lib/vendor/symfony/test/bootstrap/.svn/entries new file mode 100644 index 0000000..b0f7969 --- /dev/null +++ b/lib/vendor/symfony/test/bootstrap/.svn/entries @@ -0,0 +1,130 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/bootstrap +http://svn.symfony-project.com + + + +2009-11-16T17:52:14.706630Z +24039 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +unit.php +file + + + + +2012-05-10T18:41:01.245552Z +1c84d412d015668ab7cb8dbe02d97e4f +2009-05-14T11:52:12.622338Z +18278 +FabianLange +has-props + + + + + + + + + + + + + + + + + + + + +1944 + +functional.php +file + + + + +2012-05-10T18:41:01.245552Z +b47734c813c689dfd472412feeca5913 +2009-11-16T17:52:14.706630Z +24039 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +1901 + +task.php +file + + + + +2012-05-10T18:41:01.257548Z +7596cadd693b009bc3ef8b4340124c53 +2009-03-11T15:28:30.583439Z +16187 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +786 + diff --git a/lib/vendor/symfony/test/bootstrap/.svn/prop-base/functional.php.svn-base b/lib/vendor/symfony/test/bootstrap/.svn/prop-base/functional.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/bootstrap/.svn/prop-base/functional.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/bootstrap/.svn/prop-base/task.php.svn-base b/lib/vendor/symfony/test/bootstrap/.svn/prop-base/task.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/bootstrap/.svn/prop-base/task.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/bootstrap/.svn/prop-base/unit.php.svn-base b/lib/vendor/symfony/test/bootstrap/.svn/prop-base/unit.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/bootstrap/.svn/prop-base/unit.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/bootstrap/.svn/text-base/functional.php.svn-base b/lib/vendor/symfony/test/bootstrap/.svn/text-base/functional.php.svn-base new file mode 100644 index 0000000..bcb9ac6 --- /dev/null +++ b/lib/vendor/symfony/test/bootstrap/.svn/text-base/functional.php.svn-base @@ -0,0 +1,73 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +// setup expected test environment (per check_configuration.php) +ini_set('magic_quotes_runtime', 'off'); +ini_set('session.auto_start', 'off'); +ini_set('arg_separator.output', '&'); +ini_set('allow_url_fopen', 'on'); + +if (!isset($root_dir)) +{ + $root_dir = realpath(dirname(__FILE__).sprintf('/../%s/fixtures', isset($type) ? $type : 'functional')); +} + +require_once $root_dir.'/config/ProjectConfiguration.class.php'; +$configuration = ProjectConfiguration::getApplicationConfiguration($app, 'test', isset($debug) ? $debug : true); + +// remove all cache +sf_functional_test_shutdown(); +register_shutdown_function('sf_functional_test_shutdown'); + +sfContext::createInstance($configuration); + +function sf_functional_test_shutdown_cleanup() +{ + sfToolkit::clearDirectory(sfConfig::get('sf_cache_dir')); + sfToolkit::clearDirectory(sfConfig::get('sf_log_dir')); + + $sf_root_dir = sys_get_temp_dir().'/sf_test_project'; + if (is_dir($sf_root_dir)) + { + sfToolkit::clearDirectory($sf_root_dir); + @rmdir($sf_root_dir); + } + + $sessions = glob(sys_get_temp_dir().'/sessions*'); + $tmp_files = glob(sys_get_temp_dir().'/sf*'); + $files = array_merge(empty($sessions) ? array() : $sessions, empty($tmp_files) ? array() : $tmp_files); + foreach ($files as $file) + { + if (is_dir($file)) + { + sfToolkit::clearDirectory($file); + @rmdir($file); + } + else + { + @unlink($file); + } + } +} + +function sf_functional_test_shutdown() +{ + // try/catch needed due to http://bugs.php.net/bug.php?id=33598 + try + { + sf_functional_test_shutdown_cleanup(); + } + catch (Exception $e) + { + echo $e.PHP_EOL; + } +} + +return true; diff --git a/lib/vendor/symfony/test/bootstrap/.svn/text-base/task.php.svn-base b/lib/vendor/symfony/test/bootstrap/.svn/text-base/task.php.svn-base new file mode 100644 index 0000000..5cedc61 --- /dev/null +++ b/lib/vendor/symfony/test/bootstrap/.svn/text-base/task.php.svn-base @@ -0,0 +1,22 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/unit.php'); + +require_once(sfConfig::get('sf_symfony_lib_dir').'/command/sfCommandApplication.class.php'); +require_once(sfConfig::get('sf_symfony_lib_dir').'/command/sfSymfonyCommandApplication.class.php'); + +$tmpDir = sys_get_temp_dir().DIRECTORY_SEPARATOR.'sf_'.rand(11111, 99999); +mkdir($tmpDir, 0777, true); +chdir($tmpDir); + +$application = new sfSymfonyCommandApplication(new sfEventDispatcher(), new sfFormatter(), array( + 'symfony_lib_dir' => sfConfig::get('sf_symfony_lib_dir'), +)); diff --git a/lib/vendor/symfony/test/bootstrap/.svn/text-base/unit.php.svn-base b/lib/vendor/symfony/test/bootstrap/.svn/text-base/unit.php.svn-base new file mode 100644 index 0000000..85de7d2 --- /dev/null +++ b/lib/vendor/symfony/test/bootstrap/.svn/text-base/unit.php.svn-base @@ -0,0 +1,68 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +// setup expected test environment (per check_configuration.php) +ini_set('magic_quotes_runtime', 'off'); +ini_set('session.auto_start', 'off'); +ini_set('arg_separator.output', '&'); +ini_set('allow_url_fopen', 'on'); + +$_test_dir = realpath(dirname(__FILE__).'/..'); +require_once($_test_dir.'/../lib/vendor/lime/lime.php'); +require_once($_test_dir.'/../lib/config/sfConfig.class.php'); +sfConfig::set('sf_symfony_lib_dir', realpath($_test_dir.'/../lib')); + +require_once(dirname(__FILE__).'/../../lib/autoload/sfCoreAutoload.class.php'); +sfCoreAutoload::register(); + +require_once(dirname(__FILE__).'/../../lib/util/sfToolkit.class.php'); +sfConfig::set('sf_test_cache_dir', sys_get_temp_dir().'/sf_test_project'); + +// remove all test cache +sf_unit_test_shutdown(); + +// create test cache dir +$sf_root_dir = sys_get_temp_dir().'/sf_test_project'; +@mkdir($sf_root_dir, 0777, true); + +register_shutdown_function('sf_unit_test_shutdown'); + +function sf_unit_test_shutdown() +{ + $sf_root_dir = sys_get_temp_dir().'/sf_test_project'; + if(is_dir($sf_root_dir)) + { + sfToolkit::clearDirectory($sf_root_dir); + @rmdir($sf_root_dir); + } + + $sessions = glob(sys_get_temp_dir().'/sessions*'); + $tmp_files = glob(sys_get_temp_dir().'/sf*'); + + $files = array_merge((empty($sessions) ? array() : $sessions), (empty($tmp_files) ? array() : $tmp_files)); + foreach ($files as $file) + { + if(is_dir($file)) + { + sfToolkit::clearDirectory($file); + @rmdir($file); + } + else + { + @unlink($file); + } + } +} + +// Helper for cross platform testcases that validate output +function fix_linebreaks($content) +{ + return str_replace(array("\r\n", "\n", "\r"), "\n", $content); +} \ No newline at end of file diff --git a/lib/vendor/symfony/test/bootstrap/functional.php b/lib/vendor/symfony/test/bootstrap/functional.php new file mode 100644 index 0000000..bcb9ac6 --- /dev/null +++ b/lib/vendor/symfony/test/bootstrap/functional.php @@ -0,0 +1,73 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +// setup expected test environment (per check_configuration.php) +ini_set('magic_quotes_runtime', 'off'); +ini_set('session.auto_start', 'off'); +ini_set('arg_separator.output', '&'); +ini_set('allow_url_fopen', 'on'); + +if (!isset($root_dir)) +{ + $root_dir = realpath(dirname(__FILE__).sprintf('/../%s/fixtures', isset($type) ? $type : 'functional')); +} + +require_once $root_dir.'/config/ProjectConfiguration.class.php'; +$configuration = ProjectConfiguration::getApplicationConfiguration($app, 'test', isset($debug) ? $debug : true); + +// remove all cache +sf_functional_test_shutdown(); +register_shutdown_function('sf_functional_test_shutdown'); + +sfContext::createInstance($configuration); + +function sf_functional_test_shutdown_cleanup() +{ + sfToolkit::clearDirectory(sfConfig::get('sf_cache_dir')); + sfToolkit::clearDirectory(sfConfig::get('sf_log_dir')); + + $sf_root_dir = sys_get_temp_dir().'/sf_test_project'; + if (is_dir($sf_root_dir)) + { + sfToolkit::clearDirectory($sf_root_dir); + @rmdir($sf_root_dir); + } + + $sessions = glob(sys_get_temp_dir().'/sessions*'); + $tmp_files = glob(sys_get_temp_dir().'/sf*'); + $files = array_merge(empty($sessions) ? array() : $sessions, empty($tmp_files) ? array() : $tmp_files); + foreach ($files as $file) + { + if (is_dir($file)) + { + sfToolkit::clearDirectory($file); + @rmdir($file); + } + else + { + @unlink($file); + } + } +} + +function sf_functional_test_shutdown() +{ + // try/catch needed due to http://bugs.php.net/bug.php?id=33598 + try + { + sf_functional_test_shutdown_cleanup(); + } + catch (Exception $e) + { + echo $e.PHP_EOL; + } +} + +return true; diff --git a/lib/vendor/symfony/test/bootstrap/task.php b/lib/vendor/symfony/test/bootstrap/task.php new file mode 100644 index 0000000..5cedc61 --- /dev/null +++ b/lib/vendor/symfony/test/bootstrap/task.php @@ -0,0 +1,22 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/unit.php'); + +require_once(sfConfig::get('sf_symfony_lib_dir').'/command/sfCommandApplication.class.php'); +require_once(sfConfig::get('sf_symfony_lib_dir').'/command/sfSymfonyCommandApplication.class.php'); + +$tmpDir = sys_get_temp_dir().DIRECTORY_SEPARATOR.'sf_'.rand(11111, 99999); +mkdir($tmpDir, 0777, true); +chdir($tmpDir); + +$application = new sfSymfonyCommandApplication(new sfEventDispatcher(), new sfFormatter(), array( + 'symfony_lib_dir' => sfConfig::get('sf_symfony_lib_dir'), +)); diff --git a/lib/vendor/symfony/test/bootstrap/unit.php b/lib/vendor/symfony/test/bootstrap/unit.php new file mode 100644 index 0000000..85de7d2 --- /dev/null +++ b/lib/vendor/symfony/test/bootstrap/unit.php @@ -0,0 +1,68 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +// setup expected test environment (per check_configuration.php) +ini_set('magic_quotes_runtime', 'off'); +ini_set('session.auto_start', 'off'); +ini_set('arg_separator.output', '&'); +ini_set('allow_url_fopen', 'on'); + +$_test_dir = realpath(dirname(__FILE__).'/..'); +require_once($_test_dir.'/../lib/vendor/lime/lime.php'); +require_once($_test_dir.'/../lib/config/sfConfig.class.php'); +sfConfig::set('sf_symfony_lib_dir', realpath($_test_dir.'/../lib')); + +require_once(dirname(__FILE__).'/../../lib/autoload/sfCoreAutoload.class.php'); +sfCoreAutoload::register(); + +require_once(dirname(__FILE__).'/../../lib/util/sfToolkit.class.php'); +sfConfig::set('sf_test_cache_dir', sys_get_temp_dir().'/sf_test_project'); + +// remove all test cache +sf_unit_test_shutdown(); + +// create test cache dir +$sf_root_dir = sys_get_temp_dir().'/sf_test_project'; +@mkdir($sf_root_dir, 0777, true); + +register_shutdown_function('sf_unit_test_shutdown'); + +function sf_unit_test_shutdown() +{ + $sf_root_dir = sys_get_temp_dir().'/sf_test_project'; + if(is_dir($sf_root_dir)) + { + sfToolkit::clearDirectory($sf_root_dir); + @rmdir($sf_root_dir); + } + + $sessions = glob(sys_get_temp_dir().'/sessions*'); + $tmp_files = glob(sys_get_temp_dir().'/sf*'); + + $files = array_merge((empty($sessions) ? array() : $sessions), (empty($tmp_files) ? array() : $tmp_files)); + foreach ($files as $file) + { + if(is_dir($file)) + { + sfToolkit::clearDirectory($file); + @rmdir($file); + } + else + { + @unlink($file); + } + } +} + +// Helper for cross platform testcases that validate output +function fix_linebreaks($content) +{ + return str_replace(array("\r\n", "\n", "\r"), "\n", $content); +} \ No newline at end of file diff --git a/lib/vendor/symfony/test/functional/.svn/all-wcprops b/lib/vendor/symfony/test/functional/.svn/all-wcprops new file mode 100644 index 0000000..afa737c --- /dev/null +++ b/lib/vendor/symfony/test/functional/.svn/all-wcprops @@ -0,0 +1,77 @@ +K 25 +svn:wc:ra_dav:version-url +V 44 +/!svn/ver/33363/branches/1.4/test/functional +END +escapingTest.php +K 25 +svn:wc:ra_dav:version-url +V 61 +/!svn/ver/27755/branches/1.4/test/functional/escapingTest.php +END +genericTest.php +K 25 +svn:wc:ra_dav:version-url +V 60 +/!svn/ver/33363/branches/1.4/test/functional/genericTest.php +END +sfTestBrowserTest.php +K 25 +svn:wc:ra_dav:version-url +V 66 +/!svn/ver/24992/branches/1.4/test/functional/sfTestBrowserTest.php +END +i18nTest.php +K 25 +svn:wc:ra_dav:version-url +V 57 +/!svn/ver/23902/branches/1.4/test/functional/i18nTest.php +END +authTest.php +K 25 +svn:wc:ra_dav:version-url +V 57 +/!svn/ver/23902/branches/1.4/test/functional/authTest.php +END +cacheTest.php +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/31928/branches/1.4/test/functional/cacheTest.php +END +httpcacheTest.php +K 25 +svn:wc:ra_dav:version-url +V 62 +/!svn/ver/23881/branches/1.4/test/functional/httpcacheTest.php +END +i18nFormTest.php +K 25 +svn:wc:ra_dav:version-url +V 61 +/!svn/ver/23916/branches/1.4/test/functional/i18nFormTest.php +END +prodTest.php +K 25 +svn:wc:ra_dav:version-url +V 57 +/!svn/ver/23902/branches/1.4/test/functional/prodTest.php +END +filterTest.php +K 25 +svn:wc:ra_dav:version-url +V 59 +/!svn/ver/23902/branches/1.4/test/functional/filterTest.php +END +autoloadTest.php +K 25 +svn:wc:ra_dav:version-url +V 61 +/!svn/ver/24062/branches/1.4/test/functional/autoloadTest.php +END +formatTest.php +K 25 +svn:wc:ra_dav:version-url +V 59 +/!svn/ver/23902/branches/1.4/test/functional/formatTest.php +END diff --git a/lib/vendor/symfony/test/functional/.svn/entries b/lib/vendor/symfony/test/functional/.svn/entries new file mode 100644 index 0000000..55b46e6 --- /dev/null +++ b/lib/vendor/symfony/test/functional/.svn/entries @@ -0,0 +1,439 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional +http://svn.symfony-project.com + + + +2012-03-08T13:55:43.701792Z +33363 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +escapingTest.php +file + + + + +2012-05-10T18:41:01.017547Z +7ae6df75453a193d500e2e802e299e50 +2010-02-08T20:51:02.851961Z +27755 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +1467 + +genericTest.php +file + + + + +2012-05-10T18:41:01.017547Z +1d63b7ed664197374f22bd5c06bd655c +2012-03-08T13:55:43.701792Z +33363 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +5580 + +sfTestBrowserTest.php +file + + + + +2012-05-10T18:41:01.029546Z +eb37cc5780855748e48d83d405949e95 +2009-12-06T20:48:52.154761Z +24992 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +6431 + +i18nTest.php +file + + + + +2012-05-10T18:41:01.029546Z +a52699feb59f42432c63854ee83f0a5c +2009-11-14T13:44:52.794445Z +23902 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +3670 + +authTest.php +file + + + + +2012-05-10T18:41:01.029546Z +345d66d97d760a7079d09c2a50f77777 +2009-11-14T13:44:52.794445Z +23902 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +1388 + +fixtures +dir + +cacheTest.php +file + + + + +2012-05-10T18:41:01.209547Z +9ac23a5588cb359865cf5368af48e716 +2011-01-29T16:02:51.990563Z +31928 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +20308 + +httpcacheTest.php +file + + + + +2012-05-10T18:41:01.209547Z +650ad576499d3c387396556b83f6d0dd +2008-11-30T21:34:25.835660Z +13564 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +1824 + +i18nFormTest.php +file + + + + +2012-05-10T18:41:01.209547Z +4a3f923aa91106192dc0c5b012153a4a +2009-11-14T14:31:05.543901Z +23916 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +2511 + +prodTest.php +file + + + + +2012-05-10T18:41:01.209547Z +0e0af2ba2ffd989b467f48653d2506ff +2009-11-14T13:44:52.794445Z +23902 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +1885 + +filterTest.php +file + + + + +2012-05-10T18:41:01.217549Z +e7036157a6994016859413caac6bf16c +2009-11-14T13:44:52.794445Z +23902 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +1054 + +autoloadTest.php +file + + + + +2012-05-10T18:41:01.217549Z +28b776045f130d1e8d901c7e9aba5a71 +2009-11-16T23:31:25.861810Z +24062 +FabianLange +has-props + + + + + + + + + + + + + + + + + + + + +1245 + +formatTest.php +file + + + + +2012-05-10T18:41:01.217549Z +b754408d57c2ea2020d367a8b2e42a6e +2009-11-14T13:44:52.794445Z +23902 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +3192 + diff --git a/lib/vendor/symfony/test/functional/.svn/prop-base/authTest.php.svn-base b/lib/vendor/symfony/test/functional/.svn/prop-base/authTest.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/.svn/prop-base/authTest.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/.svn/prop-base/autoloadTest.php.svn-base b/lib/vendor/symfony/test/functional/.svn/prop-base/autoloadTest.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/.svn/prop-base/autoloadTest.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/.svn/prop-base/cacheTest.php.svn-base b/lib/vendor/symfony/test/functional/.svn/prop-base/cacheTest.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/.svn/prop-base/cacheTest.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/.svn/prop-base/escapingTest.php.svn-base b/lib/vendor/symfony/test/functional/.svn/prop-base/escapingTest.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/.svn/prop-base/escapingTest.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/.svn/prop-base/filterTest.php.svn-base b/lib/vendor/symfony/test/functional/.svn/prop-base/filterTest.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/.svn/prop-base/filterTest.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/.svn/prop-base/formatTest.php.svn-base b/lib/vendor/symfony/test/functional/.svn/prop-base/formatTest.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/.svn/prop-base/formatTest.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/.svn/prop-base/genericTest.php.svn-base b/lib/vendor/symfony/test/functional/.svn/prop-base/genericTest.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/.svn/prop-base/genericTest.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/.svn/prop-base/httpcacheTest.php.svn-base b/lib/vendor/symfony/test/functional/.svn/prop-base/httpcacheTest.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/.svn/prop-base/httpcacheTest.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/.svn/prop-base/i18nFormTest.php.svn-base b/lib/vendor/symfony/test/functional/.svn/prop-base/i18nFormTest.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/test/functional/.svn/prop-base/i18nFormTest.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/test/functional/.svn/prop-base/i18nTest.php.svn-base b/lib/vendor/symfony/test/functional/.svn/prop-base/i18nTest.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/.svn/prop-base/i18nTest.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/.svn/prop-base/prodTest.php.svn-base b/lib/vendor/symfony/test/functional/.svn/prop-base/prodTest.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/.svn/prop-base/prodTest.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/.svn/prop-base/sfTestBrowserTest.php.svn-base b/lib/vendor/symfony/test/functional/.svn/prop-base/sfTestBrowserTest.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/.svn/prop-base/sfTestBrowserTest.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/.svn/text-base/authTest.php.svn-base b/lib/vendor/symfony/test/functional/.svn/text-base/authTest.php.svn-base new file mode 100644 index 0000000..759d8a4 --- /dev/null +++ b/lib/vendor/symfony/test/functional/.svn/text-base/authTest.php.svn-base @@ -0,0 +1,67 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'frontend'; +if (!include(dirname(__FILE__).'/../bootstrap/functional.php')) +{ + return; +} + +class sfAuthTestBrowser extends sfTestBrowser +{ + public function checkNonAuth() + { + return $this-> + get('/auth/basic')-> + with('request')->begin()-> + isParameter('module', 'auth')-> + isParameter('action', 'basic')-> + end()-> + with('response')->begin()-> + isStatusCode(401)-> + checkElement('#user', '')-> + checkElement('#password', '')-> + checkElement('#msg', 'KO')-> + end() + ; + } + + public function checkAuth() + { + return $this-> + get('/auth/basic')-> + with('request')->begin()-> + isParameter('module', 'auth')-> + isParameter('action', 'basic')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('#user', 'foo')-> + checkElement('#password', 'bar')-> + checkElement('#msg', 'OK')-> + end() + ; + } +} + +$b = new sfAuthTestBrowser(); + +// default main page +$b-> + checkNonAuth()-> + + setAuth('foo', 'bar')-> + + checkAuth()-> + + restart()-> + + checkNonAuth() +; diff --git a/lib/vendor/symfony/test/functional/.svn/text-base/autoloadTest.php.svn-base b/lib/vendor/symfony/test/functional/.svn/text-base/autoloadTest.php.svn-base new file mode 100644 index 0000000..f63bfe6 --- /dev/null +++ b/lib/vendor/symfony/test/functional/.svn/text-base/autoloadTest.php.svn-base @@ -0,0 +1,40 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'frontend'; +if (!include(dirname(__FILE__).'/../bootstrap/functional.php')) +{ + return; +} + +$b = new sfTestBrowser(); + +$b-> + get('/autoload/myAutoload')-> + with('request')->begin()-> + isParameter('module', 'autoload')-> + isParameter('action', 'myAutoload')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('body div', 'foo')-> + end() +; + +$t = $b->test(); + +$autoload = sfAutoload::getInstance(); +$t->ok(@file_get_contents($autoload->getClassPath('sfpropel'), FILE_USE_INCLUDE_PATH), '"sfAutoload" is case insensitive'); + +$t->ok(class_exists('BaseExtendMe'), 'plugin lib directory added to autoload'); +$r = new ReflectionClass('ExtendMe'); +$t->like(str_replace(DIRECTORY_SEPARATOR, '/', $r->getFilename()), '~fixtures/lib/ExtendMe~', 'plugin class can be replaced by project'); +$t->ok(class_exists('NotInLib'), 'plugin autoload sets class paths'); +$t->ok(!class_exists('ExcludedFromAutoload'), 'plugin autoload excludes directories'); diff --git a/lib/vendor/symfony/test/functional/.svn/text-base/cacheTest.php.svn-base b/lib/vendor/symfony/test/functional/.svn/text-base/cacheTest.php.svn-base new file mode 100644 index 0000000..da87d8c --- /dev/null +++ b/lib/vendor/symfony/test/functional/.svn/text-base/cacheTest.php.svn-base @@ -0,0 +1,513 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'cache'; +if (!include(dirname(__FILE__).'/../bootstrap/functional.php')) +{ + return; +} + +class myTestBrowser extends sfTestBrowser +{ + function checkResponseContent($content, $message) + { + $this->test()->ok($this->getResponse()->getContent() == $content, $message); + + return $this; + } + + function getMultiAction($parameter = null) + { + return $this-> + get('/cache/multi'.(null !== $parameter ? '/param/'.$parameter : ''))-> + with('request')->begin()-> + isParameter('module', 'cache')-> + isParameter('action', 'multi')-> + end()-> + + with('response')->begin()-> + isStatusCode(200)-> + + // partials + checkElement('#partial .partial')-> + + // contextual partials + checkElement('#contextualPartial .contextualPartial')-> + checkElement('#contextualCacheablePartial .contextualCacheablePartial__'.$parameter, 'Param: '.$parameter)-> + checkElement('#contextualCacheablePartialVarParam .contextualCacheablePartial_varParam_'.$parameter, 'Param: '.$parameter)-> + + // components + checkElement('#component .component__componentParam_'.$parameter)-> + checkElement('#componentVarParam .component_varParam_componentParam_'.$parameter)-> + + // contextual components + checkElement('#contextualComponent .contextualComponent__componentParam_'.$parameter)-> + checkElement('#contextualComponentVarParam .contextualComponent_varParam_componentParam_'.$parameter)-> + checkElement('#contextualCacheableComponent .contextualCacheableComponent__componentParam_'.$parameter, 'Param: '.$parameter)-> + checkElement('#contextualCacheableComponentVarParam .contextualCacheableComponent_varParam_componentParam_'.$parameter, 'Param: '.$parameter)-> + end()-> + + with('view_cache')->begin()-> + isCached(false)-> + + // partial cache + isUriCached('@sf_cache_partial?module=cache&action=_partial&sf_cache_key='.md5(serialize(array())), false)-> + isUriCached('@sf_cache_partial?module=cache&action=_partial&sf_cache_key='.md5(serialize(array('varParam' => 'varParam'))), false)-> + + isUriCached('@sf_cache_partial?module=cache&action=_cacheablePartial&sf_cache_key='.md5(serialize(array())), true)-> + isUriCached('@sf_cache_partial?module=cache&action=_cacheablePartial&sf_cache_key='.md5(serialize(array('varParam' => 'varParam'))), true)-> + + isUriCached('@sf_cache_partial?module=cache&action=_cacheablePartial&sf_cache_key='.md5(serialize(array('varParam' => 'another'))), false)-> + + // contextual partial cache + isUriCached('@sf_cache_partial?module=cache&action=_contextualPartial&sf_cache_key='.md5(serialize(array())), false)-> + isUriCached('@sf_cache_partial?module=cache&action=_contextualPartial&sf_cache_key='.md5(serialize(array('varParam' => 'varParam'))), false)-> + + isUriCached('@sf_cache_partial?module=cache&action=_contextualCacheablePartial&sf_cache_key='.md5(serialize(array())), true)-> + isUriCached('@sf_cache_partial?module=cache&action=_contextualCacheablePartial&sf_cache_key='.md5(serialize(array('varParam' => 'varParam'))), true)-> + + isUriCached('@sf_cache_partial?module=cache&action=_contextualCacheablePartial&sf_cache_key='.md5(serialize(array('varParam' => 'another'))), false)-> + + // component cache + isUriCached('@sf_cache_partial?module=cache&action=_component&sf_cache_key='.md5(serialize(array())), false)-> + isUriCached('@sf_cache_partial?module=cache&action=_component&sf_cache_key='.md5(serialize(array('varParam' => 'varParam'))), false)-> + + isUriCached('@sf_cache_partial?module=cache&action=_cacheableComponent&sf_cache_key='.md5(serialize(array())), true)-> + isUriCached('@sf_cache_partial?module=cache&action=_cacheableComponent&sf_cache_key='.md5(serialize(array('varParam' => 'varParam'))), true)-> + + isUriCached('@sf_cache_partial?module=cache&action=_cacheableComponent&sf_cache_key='.md5(serialize(array('varParam' => 'another'))), false)-> + + // contextual component cache + isUriCached('@sf_cache_partial?module=cache&action=_contextualComponent&sf_cache_key='.md5(serialize(array())), false)-> + isUriCached('@sf_cache_partial?module=cache&action=_contextualComponent&sf_cache_key='.md5(serialize(array('varParam' => 'varParam'))), false)-> + + isUriCached('@sf_cache_partial?module=cache&action=_contextualCacheableComponent&sf_cache_key='.md5(serialize(array())), true)-> + isUriCached('@sf_cache_partial?module=cache&action=_contextualCacheableComponent&sf_cache_key='.md5(serialize(array('varParam' => 'varParam'))), true)-> + + isUriCached('@sf_cache_partial?module=cache&action=_contextualCacheableComponent&sf_cache_key='.md5(serialize(array('varParam' => 'another'))), false)-> + end() + ; + } + + public function launch() + { + $b = $this; + + // default page is in cache (without layout) + $b-> + get('/')-> + with('request')->begin()-> + isParameter('module', 'default')-> + isParameter('action', 'index')-> + end()-> + + with('response')->begin()-> + isStatusCode(200)-> + checkElement('body', '/congratulations/i')-> + end()-> + + with('view_cache')->isCached(true) + ; + + $b-> + get('/nocache')-> + with('request')->begin()-> + isParameter('module', 'nocache')-> + isParameter('action', 'index')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('body', '/nocache/i')-> + end()-> + with('view_cache')->isCached(false) + ; + + $b-> + get('/cache/page')-> + with('request')->begin()-> + isParameter('module', 'cache')-> + isParameter('action', 'page')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('body', '/page in cache/')-> + end()-> + with('view_cache')->isCached(true, true) + ; + + $b-> + get('/cache/forward')-> + with('request')->begin()-> + isParameter('module', 'cache')-> + isParameter('action', 'forward')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('body', '/page in cache/')-> + end()-> + with('view_cache')->isCached(true) + ; + + // remove all cache + sfToolkit::clearDirectory(sfConfig::get('sf_app_cache_dir')); + + $b-> + getMultiAction()-> + + getMultiAction('requestParam')-> + + // component already in cache and not contextual, so request parameter is not there + with('response')->begin()-> + checkElement('#cacheableComponent .cacheableComponent__componentParam_')-> + checkElement('#cacheableComponentVarParam .cacheableComponent_varParam_componentParam_')-> + checkElement('#cacheablePartial .cacheablePartial__')-> + checkElement('#cacheablePartialVarParam .cacheablePartial_varParam_')-> + end() + ; + + // remove all cache + sfToolkit::clearDirectory(sfConfig::get('sf_app_cache_dir')); + + $b-> + getMultiAction('requestParam')-> + + with('response')->begin()-> + checkElement('#cacheableComponent .cacheableComponent__componentParam_requestParam')-> + checkElement('#cacheableComponentVarParam .cacheableComponent_varParam_componentParam_requestParam')-> + checkElement('#cacheablePartial .cacheablePartial__requestParam')-> + checkElement('#cacheablePartialVarParam .cacheablePartial_varParam_requestParam')-> + end()-> + + getMultiAction()-> + + with('response')->begin()-> + checkElement('#cacheableComponent .cacheableComponent__componentParam_requestParam')-> + checkElement('#cacheableComponentVarParam .cacheableComponent_varParam_componentParam_requestParam')-> + checkElement('#cacheablePartial .cacheablePartial__requestParam')-> + checkElement('#cacheablePartialVarParam .cacheablePartial_varParam_requestParam')-> + end()-> + + getMultiAction('anotherRequestParam')-> + + with('response')->begin()-> + checkElement('#cacheableComponent .cacheableComponent__componentParam_requestParam')-> + checkElement('#cacheableComponentVarParam .cacheableComponent_varParam_componentParam_requestParam')-> + checkElement('#cacheablePartial .cacheablePartial__requestParam')-> + checkElement('#cacheablePartialVarParam .cacheablePartial_varParam_requestParam')-> + end() + ; + + // check contextual cache with another action + $b-> + get('/cache/multiBis')-> + with('request')->begin()-> + isParameter('module', 'cache')-> + isParameter('action', 'multiBis')-> + end()-> + + with('response')->begin()-> + isStatusCode(200)-> + + // partials + checkElement('#cacheablePartial .cacheablePartial__requestParam')-> + + // contextual partials + checkElement('#contextualCacheablePartial .contextualCacheablePartial__')-> + + // components + checkElement('#cacheableComponent .cacheableComponent__componentParam_requestParam')-> + + // contextual components + checkElement('#contextualCacheableComponent .contextualCacheableComponent__componentParam_')-> + end()-> + + with('view_cache')->begin()-> + isCached(false)-> + // partial cache + isUriCached('@sf_cache_partial?module=cache&action=_cacheablePartial&sf_cache_key='.md5(serialize(array())), true)-> + + // contextual partial cache + isUriCached('@sf_cache_partial?module=cache&action=_contextualCacheableComponent&sf_cache_key='.md5(serialize(array())), true)-> + + // component cache + isUriCached('@sf_cache_partial?module=cache&action=_cacheableComponent&sf_cache_key='.md5(serialize(array())), true)-> + + // contextual component cache + isUriCached('@sf_cache_partial?module=cache&action=_contextualCacheableComponent&sf_cache_key='.md5(serialize(array())), true)-> + end() + ; + + // remove all cache + sfToolkit::clearDirectory(sfConfig::get('sf_app_cache_dir')); + + // check user supplied cache key for partials and components + $b-> + get('/cache/specificCacheKey')-> + with('request')->begin()-> + isParameter('module', 'cache')-> + isParameter('action', 'specificCacheKey')-> + end()-> + + with('response')->isStatusCode(200)-> + with('view_cache')->begin(200)-> + isCached(false)-> + + // partial cache + isUriCached('@sf_cache_partial?module=cache&action=_cacheablePartial&sf_cache_key=cacheablePartial', true)-> + + // contextual partial cache + isUriCached('@sf_cache_partial?module=cache&action=_contextualCacheableComponent&sf_cache_key=contextualCacheableComponent', true)-> + + // component cache + isUriCached('@sf_cache_partial?module=cache&action=_cacheableComponent&sf_cache_key=cacheableComponent', true)-> + + // contextual component cache + isUriCached('@sf_cache_partial?module=cache&action=_contextualCacheableComponent&sf_cache_key=contextualCacheableComponent', true)-> + end() + ; + + // check cache content for actions + + // remove all cache + sfToolkit::clearDirectory(sfConfig::get('sf_app_cache_dir')); + + $b-> + get('/cache/action')-> + with('request')->begin()-> + isParameter('module', 'cache')-> + isParameter('action', 'action')-> + end()-> + with('response')->isStatusCode(200)-> + with('view_cache')->isCached(true) + ; + + $b->test()->is(sfConfig::get('ACTION_EXECUTED', false), true, 'action is executed when not in cache'); + sfConfig::set('ACTION_EXECUTED', false); + + $response = $b->getResponse(); + $content1 = $response->getContent(); + $contentType1 = $response->getContentType(); + $headers1 = $response->getHttpHeaders(); + + $b-> + get('/cache/action')-> + with('request')->begin()-> + isParameter('module', 'cache')-> + isParameter('action', 'action')-> + end()-> + with('response')->isStatusCode(200)-> + with('view_cache')->isCached(true) + ; + + $b->test()->is(sfConfig::get('ACTION_EXECUTED', false), false, 'action is not executed when in cache'); + + $response = $b->getResponse(); + $content2 = $response->getContent(); + $contentType2 = $response->getContentType(); + $headers2 = $response->getHttpHeaders(); + + $b->test()->is($content1, $content2, 'response content is the same'); + $b->test()->is($contentType1, $contentType2, 'response content type is the same'); + $b->test()->is($headers1, $headers2, 'response http headers are the same'); + } +} + +$b = new myTestBrowser(); + +// non HTML cache +$image = file_get_contents(dirname(__FILE__).'/fixtures/apps/cache/modules/cache/data/ok48.png'); +sfConfig::set('sf_web_debug', true); +$b-> + get('/cache/imageWithLayoutCacheWithLayout')-> + with('view_cache')->isCached(true, true)-> + checkResponseContent($image, 'image (with layout/page cache) in cache is not decorated when web_debug is on')-> + get('/cache/imageWithLayoutCacheWithLayout')-> + with('view_cache')->isCached(true, true)-> + checkResponseContent($image, 'image (with layout/page cache) in cache is not decorated when web_debug is on')-> + get('/cache/imageWithLayoutCacheNoLayout')-> + with('view_cache')->isCached(true)-> + checkResponseContent($image, 'image (with layout/action cache) in cache is not decorated when web_debug is on')-> + get('/cache/imageWithLayoutCacheNoLayout')-> + with('view_cache')->isCached(true)-> + checkResponseContent($image, 'image (with layout/action cache) in cache is not decorated when web_debug is on')-> + get('/cache/imageNoLayoutCacheWithLayout')-> + with('view_cache')->isCached(true, true)-> + checkResponseContent($image, 'image (no layout/page cache) in cache is not decorated when web_debug is on')-> + get('/cache/imageNoLayoutCacheWithLayout')-> + with('view_cache')->isCached(true, true)-> + checkResponseContent($image, 'image (no layout/page cache) in cache is not decorated when web_debug is on')-> + get('/cache/imageNoLayoutCacheNoLayout')-> + with('view_cache')->isCached(true)-> + checkResponseContent($image, 'image (no layout/action cache) in cache is not decorated when web_debug is on')-> + get('/cache/imageNoLayoutCacheNoLayout')-> + with('view_cache')->isCached(true)-> + checkResponseContent($image, 'image (no layout/action cache) in cache is not decorated when web_debug is on') +; +sfConfig::set('sf_web_debug', false); + +// check stylesheets, javascripts inclusions +sfToolkit::clearDirectory(sfConfig::get('sf_app_cache_dir')); +$b-> + get('/cache/multiBis')-> + with('request')->begin()-> + isParameter('module', 'cache')-> + isParameter('action', 'multiBis')-> + end()-> + + with('response')->begin()-> + isStatusCode(200)-> + + // the first time (no cache) + checkElement('link[href*="/main_css"]')-> + checkElement('script[src*="/main_js"]')-> + checkElement('link[href*="/partial_css"]')-> + checkElement('script[src*="/partial_js"]')-> + checkElement('link[href*="/another_partial_css"]')-> + checkElement('script[src*="/another_partial_js"]')-> + checkElement('link[href*="/component_css"]')-> + checkElement('script[src*="/component_js"]')-> + + checkElement('#partial_slot_content', 'Partial')-> + checkElement('#another_partial_slot_content', 'Another Partial')-> + checkElement('#component_slot_content', 'Component')-> + end()-> + + get('/cache/multiBis')-> + with('response')->begin()-> + + // when in cache + checkElement('link[href*="/main_css"]')-> + checkElement('script[src*="/main_js"]')-> + checkElement('link[href*="/partial_css"]')-> + checkElement('script[src*="/partial_js"]')-> + checkElement('link[href*="/another_partial_css"]')-> + checkElement('script[src*="/another_partial_js"]')-> + checkElement('link[href*="/component_css"]')-> + checkElement('script[src*="/component_js"]')-> + + checkElement('#partial_slot_content', 'Partial')-> + checkElement('#another_partial_slot_content', 'Another Partial')-> + checkElement('#component_slot_content', 'Component')-> + end() +; + +$b-> + get('/cache/partial')-> + with('request')->begin()-> + isParameter('module', 'cache')-> + isParameter('action', 'partial')-> + end()-> + + with('response')->begin()-> + isStatusCode(200)-> + + // only partial specific css and js are included + checkElement('link[href*="/main_css"]', false)-> + checkElement('script[src*="/main_js"]', false)-> + checkElement('link[href*="/partial_css"]')-> + checkElement('script[src*="/partial_js"]')-> + checkElement('link[href*="/another_partial_css"]')-> + checkElement('script[src*="/another_partial_js"]')-> + checkElement('link[href*="/component_css"]', false)-> + checkElement('script[src*="/component_js"]', false)-> + + checkElement('#partial_slot_content', 'Partial')-> + checkElement('#another_partial_slot_content', 'Another Partial')-> + checkElement('#component_slot_content', '')-> + end()-> + + get('/cache/anotherPartial')-> + with('request')->begin()-> + isParameter('module', 'cache')-> + isParameter('action', 'anotherPartial')-> + end()-> + + with('response')->begin()-> + isStatusCode(200)-> + + // only partial specific css and js are included + checkElement('link[href*="/main_css"]', false)-> + checkElement('script[src*="/main_js"]', false)-> + checkElement('link[href*="/partial_css"]', false)-> + checkElement('script[src*="/partial_js"]', false)-> + checkElement('link[href*="/another_partial_css"]')-> + checkElement('script[src*="/another_partial_js"]')-> + checkElement('link[href*="/component_css"]', false)-> + checkElement('script[src*="/component_js"]', false)-> + + checkElement('#partial_slot_content', '')-> + checkElement('#another_partial_slot_content', 'Another Partial')-> + checkElement('#component_slot_content', '')-> + end()-> + + get('/cache/component')-> + with('request')->begin()-> + isParameter('module', 'cache')-> + isParameter('action', 'component')-> + end()-> + + with('response')->begin()-> + isStatusCode(200)-> + + // only partial specific css and js are included + checkElement('link[href*="/main_css"]', false)-> + checkElement('script[src*="/main_js"]', false)-> + checkElement('link[href*="/partial_css"]', false)-> + checkElement('script[src*="/partial_js"]', false)-> + checkElement('link[href*="/another_partial_css"]', false)-> + checkElement('script[src*="/another_partial_js"]', false)-> + checkElement('link[href*="/component_css"]')-> + checkElement('script[src*="/component_js"]')-> + + checkElement('#partial_slot_content', '')-> + checkElement('#another_partial_slot_content', '')-> + checkElement('#component_slot_content', 'Component')-> + end() +; + +$b->get('/') + ->with('view_cache')->isUriCached('cache/list', false) + ->get('/cache/list') + ->with('view_cache')->isUriCached('cache/list', true) + + // include GET parameters + ->with('view_cache')->isUriCached('cache/list?page=10', false) + ->get('/cache/list?page=10') + ->with('response')->checkElement('#page', '10') + ->with('view_cache')->isUriCached('cache/list?page=10', true) + + // include different GET parameters + ->with('view_cache')->isUriCached('cache/list?page=20', false) + ->get('/cache/list?page=20') + ->with('response')->checkElement('#page', '20') + ->with('view_cache')->isUriCached('cache/list?page=20', true) +; + +// check for 304 response +sfConfig::set('LAST_MODIFIED', strtotime('2010-01-01')); +$b->get('/cache/lastModifiedResponse') + ->with('response')->isStatusCode(200) +; + +$b->setHttpHeader('If-Modified-Since', sfWebResponse::getDate(sfConfig::get('LAST_MODIFIED'))) + ->get('/cache/lastModifiedResponse') + ->with('response')->isStatusCode(304) +; + +// test with sfFileCache class (default) +$b->launch(); + +// test with sfSQLiteCache class +if (extension_loaded('SQLite') || extension_loaded('pdo_SQLite')) +{ + sfConfig::set('sf_factory_view_cache', 'sfSQLiteCache'); + sfConfig::set('sf_factory_view_cache_parameters', array('database' => sfConfig::get('sf_template_cache_dir').DIRECTORY_SEPARATOR.'cache.db')); + $b->launch(); +} diff --git a/lib/vendor/symfony/test/functional/.svn/text-base/escapingTest.php.svn-base b/lib/vendor/symfony/test/functional/.svn/text-base/escapingTest.php.svn-base new file mode 100644 index 0000000..3e47fce --- /dev/null +++ b/lib/vendor/symfony/test/functional/.svn/text-base/escapingTest.php.svn-base @@ -0,0 +1,50 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'frontend'; +if (!include(dirname(__FILE__).'/../bootstrap/functional.php')) +{ + return; +} + +$b = new sfTestBrowser(); + +$b->get('/escaping/on') + + ->with('request')->begin() + ->isParameter('module', 'escaping') + ->isParameter('action', 'on') + ->end() + + ->with('response')->begin() + ->isStatusCode(200) + ->matches('#

            Lorem <strong>ipsum</strong> dolor sit amet.

            #') + ->matches('#

            Lorem <strong>ipsum</strong> dolor sit amet.

            #') + ->matches('#

            Lorem <strong>ipsum</strong> dolor sit amet.

            #') + ->matches('#

            Lorem ipsum dolor sit amet.

            #') + ->matches('#
            Lorem <strong>ipsum</strong> dolor sit amet.
            #') + ->matches('#
            Lorem ipsum dolor sit amet.
            #') + ->checkElement('span.no', 2) + ->end() +; + +$b->get('/escaping/off') + + ->with('request')->begin() + ->isParameter('module', 'escaping') + ->isParameter('action', 'off') + ->end() + + ->with('response')->begin() + ->isStatusCode(200) + ->matches('#

            Lorem ipsum dolor sit amet.

            #') + ->matches('#

            Lorem ipsum dolor sit amet.

            #') + ->end() +; diff --git a/lib/vendor/symfony/test/functional/.svn/text-base/filterTest.php.svn-base b/lib/vendor/symfony/test/functional/.svn/text-base/filterTest.php.svn-base new file mode 100644 index 0000000..c1d0724 --- /dev/null +++ b/lib/vendor/symfony/test/functional/.svn/text-base/filterTest.php.svn-base @@ -0,0 +1,45 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'frontend'; +if (!include(dirname(__FILE__).'/../bootstrap/functional.php')) +{ + return; +} + +$b = new sfTestBrowser(); + +// filter +$b-> + get('/filter')-> + with('request')->begin()-> + isParameter('module', 'filter')-> + isParameter('action', 'index')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('div[class="before"]', 1)-> + checkElement('div[class="after"]', 1)-> + end() +; + +// filter with a forward in the same module +$b-> + get('/filter/indexWithForward')-> + with('request')->begin()-> + isParameter('module', 'filter')-> + isParameter('action', 'indexWithForward')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('div[class="before"]', 2)-> + checkElement('div[class="after"]', 1)-> + end() +; diff --git a/lib/vendor/symfony/test/functional/.svn/text-base/formatTest.php.svn-base b/lib/vendor/symfony/test/functional/.svn/text-base/formatTest.php.svn-base new file mode 100644 index 0000000..1cfcdc5 --- /dev/null +++ b/lib/vendor/symfony/test/functional/.svn/text-base/formatTest.php.svn-base @@ -0,0 +1,125 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'frontend'; +if (!include(dirname(__FILE__).'/../bootstrap/functional.php')) +{ + return; +} + +$b = new sfTestBrowser(); + +$b-> + get('/format_test.js')-> + with('request')->begin()-> + isParameter('module', 'format')-> + isParameter('action', 'index')-> + isFormat('js')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + isHeader('content-type', 'application/javascript')-> + matches('!//')-> + matches('/Some js headers/')-> + matches('/This is a js file/')-> + end() +; + +$b-> + get('/format_test.css')-> + with('request')->begin()-> + isParameter('module', 'format')-> + isParameter('action', 'index')-> + isFormat('css')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + isHeader('content-type', 'text/css; charset=utf-8')-> + matches('/This is a css file/')-> + end() +; + +$b-> + get('/format_test')-> + with('request')->begin()-> + isParameter('module', 'format')-> + isParameter('action', 'index')-> + isFormat('html')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + isHeader('content-type', 'text/html; charset=utf-8')-> + checkElement('body #content', 'This is an HTML file')-> + end() +; + +$b-> + get('/format_test.xml')-> + with('request')->begin()-> + isParameter('module', 'format')-> + isParameter('action', 'index')-> + isFormat('xml')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + isHeader('content-type', 'text/xml; charset=utf-8')-> + checkElement('sentences sentence:first', 'This is a XML file')-> + end() +; + +$b-> + get('/format_test.foo')-> + with('request')->begin()-> + isParameter('module', 'format')-> + isParameter('action', 'index')-> + isFormat('foo')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + isHeader('content-type', 'text/html; charset=utf-8')-> + isHeader('x-foo', 'true')-> + checkElement('body #content', 'This is an HTML file')-> + end() +; + +$b-> + get('/format/js')-> + with('request')->begin()-> + isParameter('module', 'format')-> + isParameter('action', 'js')-> + isFormat('js')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + isHeader('content-type', 'application/javascript')-> + matches('/A js file/')-> + end() +; + +$b-> + setHttpHeader('User-Agent', 'Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543a Safari/419.3')-> + get('/format/forTheIPhone')-> + with('request')->begin()-> + isParameter('module', 'format')-> + isParameter('action', 'forTheIPhone')-> + isFormat('iphone')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + isHeader('content-type', 'text/html; charset=utf-8')-> + checkElement('#content', 'This is an HTML file for the iPhone')-> + checkElement('link[href*="iphone.css"]')-> + end() +; + +$b-> + getAndCheck('format', 'throwsException', null, 500)-> + throwsException('Exception', '/message/') +; diff --git a/lib/vendor/symfony/test/functional/.svn/text-base/genericTest.php.svn-base b/lib/vendor/symfony/test/functional/.svn/text-base/genericTest.php.svn-base new file mode 100644 index 0000000..f706722 --- /dev/null +++ b/lib/vendor/symfony/test/functional/.svn/text-base/genericTest.php.svn-base @@ -0,0 +1,236 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'frontend'; +if (!include(dirname(__FILE__).'/../bootstrap/functional.php')) +{ + return; +} + +$b = new sfTestBrowser(); + +// default main page +$b-> + getAndCheck('default', 'index', '/')-> + with('response')->begin()-> + checkElement('body', '/congratulations/i')-> + checkElement('link[href="/sf/sf_default/css/screen.css"]')-> + checkElement('link[href="/css/main.css"]')-> + checkElement('link[href="/css/multiple_media.css"][media="print,handheld"]')-> + matches('#'.preg_quote('').'#')-> + end() +; + +// default 404 +$b-> + get('/nonexistant')-> + with('response')->isStatusCode(404) +; +/* +$b-> + get('/nonexistant/')-> + isStatusCode(404) +; +*/ +// 404 with ETag enabled must returns 404, not 304 +sfConfig::set('sf_cache', true); +sfConfig::set('sf_etag', true); +$b-> + get('/notfound')-> + with('request')->begin()-> + isParameter('module', 'notfound')-> + isParameter('action', 'index')-> + end()-> + with('response')->begin()-> + isStatusCode(404)-> + checkElement('body', '/404/')-> + end()-> + + get('/notfound')-> + with('request')->begin()-> + isParameter('module', 'notfound')-> + isParameter('action', 'index')-> + end()-> + with('response')->begin()-> + isStatusCode(404)-> + checkElement('body', '/404/')-> + end() +; +sfConfig::set('sf_cache', false); +sfConfig::set('sf_etag', false); + +// unexistant action +$b-> + get('/default/nonexistantaction')-> + with('response')->isStatusCode(404) +; + +// module.yml: enabled +$b-> + get('/configModuleDisabled')-> + with('request')->begin()-> + isForwardedTo('default', 'disabled')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('body', '/module is unavailable/i')-> + checkElement('body', '!/congratulations/i')-> + checkElement('link[href="/sf/sf_default/css/screen.css"]')-> + end() +; + +// view.yml: has_layout +$b-> + get('/configViewHasLayout/withoutLayout')-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('body', '/no layout/i')-> + checkElement('head title', false)-> + end() +; + +// security.yml: is_secure +$b-> + get('/configSecurityIsSecure')-> + with('request')->begin()-> + isForwardedTo('default', 'login')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('body', '/Login Required/i')-> + + // check that there is no double output caused by the forwarding in a filter + checkElement('body', 1)-> + checkElement('link[href="/sf/sf_default/css/screen.css"]')-> + end() +; + +// security.yml: case sensitivity +$b-> + get('/configSecurityIsSecureAction/index')-> + with('request')->begin()-> + isForwardedTo('default', 'login')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('body', '/Login Required/i')-> + end() +; + +$b-> + get('/configSecurityIsSecureAction/Index')-> + with('request')->begin()-> + isForwardedTo('default', 'login')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('body', '/Login Required/i')-> + end() +; + +// Max forwards +$b-> + get('/configSettingsMaxForwards/selfForward')-> + with('response')->isStatusCode(500)-> + throwsException(null, '/Too many forwards have been detected for this request/i') +; + +// filters.yml: add a filter +$b-> + get('/configFiltersSimpleFilter')-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('body', '/in a filter/i')-> + checkElement('body', '!/congratulation/i')-> + end() +; + +// css and js inclusions +$b-> + get('/assetInclusion/index')-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('head link[rel="stylesheet"]', false)-> + checkElement('head script[type="text/javascript"]', false)-> + end() +; + +// libraries autoloading +$b-> + get('/autoload/index')-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('#lib1', 'pong')-> + checkElement('#lib2', 'pong')-> + checkElement('#lib3', 'pong')-> + checkElement('#lib4', 'nopong')-> + end() +; + +// libraries autoloading in a plugin +$b-> + get('/autoloadPlugin/index')-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('#lib1', 'pong')-> + checkElement('#lib2', 'pong')-> + checkElement('#lib3', 'pong')-> + end() +; + +// renderText +$b-> + get('/renderText')-> + with('response')->begin()-> + isStatusCode(200)-> + matches('/foo/')-> + end() +; + +// view.yml when changing template +$b-> + get('/view')-> + with('response')->begin()-> + isStatusCode(200)-> + isHeader('Content-Type', 'text/html; charset=utf-8')-> + checkElement('head title', 'foo title')-> + end() +; + +// view.yml with other than default content-type +$b-> + get('/view/plain')-> + with('response')->begin()-> + isHeader('Content-Type', 'text/plain; charset=utf-8')-> + isStatusCode(200)-> + matches('//')-> + matches('/plaintext/')-> + end() +; + +// view.yml with other than default content-type and no layout +$b-> + get('/view/image')-> + with('response')->begin()-> + isStatusCode(200)-> + isHeader('Content-Type', 'image/jpg')-> + matches('/image/')-> + end() +; + +// getPresentationFor() +$b-> + get('/presentation')-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('#foo', 'foo')-> + checkElement('#foo_bis', 'foo')-> + end() +; diff --git a/lib/vendor/symfony/test/functional/.svn/text-base/httpcacheTest.php.svn-base b/lib/vendor/symfony/test/functional/.svn/text-base/httpcacheTest.php.svn-base new file mode 100644 index 0000000..d21731d --- /dev/null +++ b/lib/vendor/symfony/test/functional/.svn/text-base/httpcacheTest.php.svn-base @@ -0,0 +1,61 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'cache'; +if (!include(dirname(__FILE__).'/../bootstrap/functional.php')) +{ + return; +} + +$b = new sfTestFunctional(new sfBrowser()); + +$b-> + info('No expiration (client_lifetime is 0)')-> + get('/httpcache/page1')-> + with('response')->begin()-> + isHeader('Last-Modified', '/^'.substr(preg_quote(sfWebResponse::getDate(time()), '/'), 5, 16).'/')-> + isHeader('ETag', true)-> + isHeader('Expires', false)-> + isHeader('Cache-Control', false)-> + end() +; + +$b-> + info('Expiration (client_lifetime is 86400)')-> + get('/httpcache/page2')-> + with('response')->begin()-> + isHeader('Last-Modified', false)-> + isHeader('ETag', false)-> + isHeader('Expires', '/^'.substr(preg_quote(sfWebResponse::getDate(time() + 86400), '/'), 5, 16).'/')-> + isHeader('Cache-Control', '/max-age=86400/')-> + end() +; + +$b-> + info('Expiration (client_lifetime is 86400) but the developer has set a Last-Modified header')-> + get('/httpcache/page3')-> + with('response')->begin()-> + isHeader('Last-Modified', '/^'.substr(preg_quote(sfWebResponse::getDate(time() - 86400), '/'), 5, 16).'/')-> + isHeader('ETag', false)-> + isHeader('Expires', false)-> + isHeader('Cache-Control', false)-> + end() +; + +$b-> + info('No expiration and the developer has set a Last-Modified header')-> + get('/httpcache/page4')-> + with('response')->begin()-> + isHeader('Last-Modified', '/^'.substr(preg_quote(sfWebResponse::getDate(time() - 86400), '/'), 5, 16).'/')-> + isHeader('ETag', true)-> + isHeader('Expires', false)-> + isHeader('Cache-Control', false)-> + end() +; diff --git a/lib/vendor/symfony/test/functional/.svn/text-base/i18nFormTest.php.svn-base b/lib/vendor/symfony/test/functional/.svn/text-base/i18nFormTest.php.svn-base new file mode 100644 index 0000000..13c5a15 --- /dev/null +++ b/lib/vendor/symfony/test/functional/.svn/text-base/i18nFormTest.php.svn-base @@ -0,0 +1,79 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'i18n'; +if (!include(dirname(__FILE__).'/../bootstrap/functional.php')) +{ + return; +} + +$b = new sfTestBrowser(); + +// default culture (en) +$b-> + get('/en/i18n/i18nForm')-> + with('request')->begin()-> + isParameter('module', 'i18n')-> + isParameter('action', 'i18nForm')-> + end()-> + with('user')->isCulture('en')-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('label', 'First name', array('position' => 0))-> + checkElement('label', 'Last name', array('position' => 1))-> + checkElement('label', 'Email address', array('position' => 2))-> + checkElement('td', '/Put your first name here/i', array('position' => 0))-> + end()-> + setField('i18n[email]', 'foo/bar')-> + click('Submit')-> + with('response')->begin()-> + checkElement('ul li', 'Required.', array('position' => 0))-> + checkElement('ul li', 'foo/bar is an invalid email address', array('position' => 2))-> + end() +; + +// changed culture (fr) +$b-> + get('/fr/i18n/i18nForm')-> + with('request')->begin()-> + isParameter('module', 'i18n')-> + isParameter('action', 'i18nForm')-> + end()-> + with('user')->isCulture('fr')-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('label', 'Prénom', array('position' => 0))-> + checkElement('label', 'Nom', array('position' => 1))-> + checkElement('label', 'Adresse email', array('position' => 2))-> + checkElement('td', '/Mettez votre prénom ici/i', array('position' => 0))-> + end()-> + setField('i18n[email]', 'foo/bar')-> + click('Submit')-> + with('response')->begin()-> + checkElement('ul li', 'Champ requis.', array('position' => 0))-> + checkElement('ul li', 'foo/bar est une adresse email invalide', array('position' => 2))-> + end() +; + +// forms label custom catalogue test +$b-> + get('/fr/i18n/i18nCustomCatalogueForm')-> + with('request')->begin()-> + isParameter('module', 'i18n')-> + isParameter('action', 'i18nCustomCatalogueForm')-> + end()-> + with('user')->isCulture('fr')-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('label', 'Prénom!!!', array('position' => 0))-> + checkElement('label', 'Nom!!!', array('position' => 1))-> + checkElement('label', 'Adresse email!!!', array('position' => 2))-> + end() +; diff --git a/lib/vendor/symfony/test/functional/.svn/text-base/i18nTest.php.svn-base b/lib/vendor/symfony/test/functional/.svn/text-base/i18nTest.php.svn-base new file mode 100644 index 0000000..fc8ac9e --- /dev/null +++ b/lib/vendor/symfony/test/functional/.svn/text-base/i18nTest.php.svn-base @@ -0,0 +1,104 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'i18n'; +if (!include(dirname(__FILE__).'/../bootstrap/functional.php')) +{ + return; +} + +class myTestBrowser extends sfTestBrowser +{ + public function checkResponseForCulture($culture = 'fr') + { + return $this-> + with('response')->begin()-> + // messages in the global directories + checkElement('#action', '/une phrase en français/i')-> + checkElement('#template', '/une phrase en français/i')-> + + // messages in the module directories + checkElement('#action_local', '/une phrase locale en français/i')-> + checkElement('#template_local', '/une phrase locale en français/i')-> + + // messages in another global catalogue + checkElement('#action_other', '/une autre phrase en français/i')-> + checkElement('#template_other', '/une autre phrase en français/i')-> + + // messages in another module catalogue + checkElement('#action_other_local', '/une autre phrase locale en français/i')-> + checkElement('#template_other_local', '/une autre phrase locale en français/i')-> + end() + ; + } +} + +$b = new myTestBrowser(); + +// default culture (en) +$b-> + get('/')-> + with('request')->begin()-> + isParameter('module', 'i18n')-> + isParameter('action', 'index')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('#action', '/an english sentence/i')-> + checkElement('#template', '/an english sentence/i')-> + end()-> + with('user')->isCulture('en') +; + +$b-> + get('/fr/i18n/index')-> + with('request')->begin()-> + isParameter('module', 'i18n')-> + isParameter('action', 'index')-> + end()-> + with('response')->isStatusCode(200)-> + with('user')->isCulture('fr')-> + checkResponseForCulture('fr') +; + +// change user culture in the action +$b-> + get('/en/i18n/indexForFr')-> + with('request')->begin()-> + isParameter('module', 'i18n')-> + isParameter('action', 'indexForFr')-> + end()-> + with('response')->isStatusCode(200)-> + with('user')->isCulture('fr')-> + checkResponseForCulture('fr') +; + +// messages for a module plugin +$b-> + get('/fr/sfI18NPlugin/index')-> + with('request')->begin()-> + isParameter('module', 'sfI18NPlugin')-> + isParameter('action', 'index')-> + end()-> + with('user')->isCulture('fr')-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('#action', '/une phrase en français - from plugin/i')-> + checkElement('#template', '/une phrase en français - from plugin/i')-> + checkElement('#action_local', '/une phrase locale en français - from plugin/i')-> + checkElement('#template_local', '/une phrase locale en français - from plugin/i')-> + checkElement('#action_other', '/une autre phrase en français - from plugin but translation overridden in the module/i')-> + checkElement('#template_other', '/une autre phrase en français - from plugin but translation overridden in the module/i')-> + checkElement('#action_yetAnother', '/encore une autre phrase en français - from plugin but translation overridden in the application/i')-> + checkElement('#template_yetAnother', '/encore une autre phrase en français - from plugin but translation overridden in the application/i')-> + checkElement('#action_testForPluginI18N', '/une phrase en français depuis un plugin - global/i')-> + checkElement('#template_testForPluginI18N', '/une phrase en français depuis un plugin - global/i')-> + end() +; diff --git a/lib/vendor/symfony/test/functional/.svn/text-base/prodTest.php.svn-base b/lib/vendor/symfony/test/functional/.svn/text-base/prodTest.php.svn-base new file mode 100644 index 0000000..799c8b8 --- /dev/null +++ b/lib/vendor/symfony/test/functional/.svn/text-base/prodTest.php.svn-base @@ -0,0 +1,82 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'frontend'; +$debug = false; +if (!include(dirname(__FILE__).'/../bootstrap/functional.php')) +{ + return; +} + +$b = new sfTestBrowser(); + +// default main page (without cache) +$b-> + get('/')-> + with('request')->begin()-> + isParameter('module', 'default')-> + isParameter('action', 'index')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('body', '/congratulations/i')-> + end() +; + +// default main page (with cache) +$b-> + get('/')-> + with('request')->begin()-> + isParameter('module', 'default')-> + isParameter('action', 'index')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('body', '/congratulations/i')-> + end() +; + +// 404 +$b-> + get('/nonexistant')-> + with('request')->begin()-> + isForwardedTo('default', 'error404')-> + end()-> + with('response')->begin()-> + isStatusCode(404)-> + checkElement('body', '!/congratulations/i')-> + checkElement('link[href="/sf/sf_default/css/screen.css"]')-> + end() +; + +$b-> + get('/nonexistant/')-> + with('request')->begin()-> + isForwardedTo('default', 'error404')-> + end()-> + with('response')->begin()-> + isStatusCode(404)-> + checkElement('body', '!/congratulations/i')-> + checkElement('link[href="/sf/sf_default/css/screen.css"]')-> + end() +; + +// unexistant action +$b-> + get('/default/nonexistantaction')-> + with('request')->begin()-> + isForwardedTo('default', 'error404')-> + end()-> + with('response')->begin()-> + isStatusCode(404)-> + checkElement('body', '!/congratulations/i')-> + checkElement('link[href="/sf/sf_default/css/screen.css"]')-> + end() +; diff --git a/lib/vendor/symfony/test/functional/.svn/text-base/sfTestBrowserTest.php.svn-base b/lib/vendor/symfony/test/functional/.svn/text-base/sfTestBrowserTest.php.svn-base new file mode 100644 index 0000000..67a5cce --- /dev/null +++ b/lib/vendor/symfony/test/functional/.svn/text-base/sfTestBrowserTest.php.svn-base @@ -0,0 +1,263 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'frontend'; +if (!include(dirname(__FILE__).'/../bootstrap/functional.php')) +{ + return; +} + +class TestBrowser extends sfTestBrowser +{ + public $events = array(); + public function listen(sfEvent $event) + { + $this->events[] = $event; + } +} + +$b = new TestBrowser(); +$b->addListener('context.load_factories', array($b, 'listen')); + +// listeners +$b->get('/'); +$b->test()->is(count($b->events), 1, 'browser can connect to context.load_factories'); + +// exceptions +$b-> + get('/exception/noException')-> + with('request')->begin()-> + isParameter('module', 'exception')-> + isParameter('action', 'noException')-> + end()-> + + with('response')->begin()-> + isStatusCode(200)-> + matches('/foo/')-> + end()-> + + get('/exception/throwsException')-> + with('request')->begin()-> + isParameter('module', 'exception')-> + isParameter('action', 'throwsException')-> + end()-> + with('response')->isStatusCode(500)-> + throwsException('Exception')-> + + get('/exception/throwsException')-> + with('request')->begin()-> + isParameter('module', 'exception')-> + isParameter('action', 'throwsException')-> + end()-> + with('response')->isStatusCode(500)-> + throwsException('Exception', '/Exception message/')-> + + get('/exception/throwsException')-> + with('request')->begin()-> + isParameter('module', 'exception')-> + isParameter('action', 'throwsException')-> + end()-> + with('response')->isStatusCode(500)-> + throwsException('Exception', '/message/')-> + + get('/exception/throwsException')-> + with('request')->begin()-> + isParameter('module', 'exception')-> + isParameter('action', 'throwsException')-> + end()-> + with('response')->isStatusCode(500)-> + throwsException(null, '!/sfException/')-> + + get('/exception/throwsSfException')-> + with('request')->begin()-> + isParameter('module', 'exception')-> + isParameter('action', 'throwsSfException')-> + end()-> + with('response')->isStatusCode(500)-> + throwsException('sfException')-> + + get('/exception/throwsSfException')-> + with('request')->begin()-> + isParameter('module', 'exception')-> + isParameter('action', 'throwsSfException')-> + end()-> + with('response')->isStatusCode(500)-> + throwsException('sfException', 'sfException message') +; + +$b-> + get('/browser')-> + with('response')->begin()-> + matches('/html/')-> + checkElement('h1', 'html')-> + end()-> + + get('/browser/text')-> + with('response')->begin()-> + matches('/text/')-> + end() +; + +try +{ + $b->with('response')->checkElement('h1', 'text'); + $b->test()->fail('The DOM is not accessible if the response content type is not HTML'); +} +catch (LogicException $e) +{ + $b->test()->pass('The DOM is not accessible if the response content type is not HTML'); +} + +// check response headers +$b-> + get('/browser/responseHeader')-> + with('response')->begin()-> + isStatusCode()-> + isHeader('content-type', 'text/plain; charset=utf-8')-> + isHeader('content-type', '#text/plain#')-> + isHeader('content-type', '!#text/html#')-> + isHeader('foo', 'bar')-> + isHeader('foo', 'foobar')-> + end() +; + +// cookies +$b-> + setCookie('foo', 'bar')-> + setCookie('bar', 'foo')-> + setCookie('foofoo', 'foo', time() - 10)-> + + get('/cookie')-> + with('request')->begin()-> + hasCookie('foofoo', false)-> + hasCookie('foo')-> + isCookie('foo', 'bar')-> + isCookie('foo', '/a/')-> + isCookie('foo', '!/z/')-> + end()-> + with('response')->checkElement('p', 'bar.foo-')-> + get('/cookie')-> + with('request')->begin()-> + hasCookie('foo')-> + isCookie('foo', 'bar')-> + isCookie('foo', '/a/')-> + isCookie('foo', '!/z/')-> + end()-> + with('response')->checkElement('p', 'bar.foo-')-> + removeCookie('foo')-> + get('/cookie')-> + with('request')->begin()-> + hasCookie('foo', false)-> + hasCookie('bar')-> + end()-> + with('response')->checkElement('p', '.foo-')-> + clearCookies()-> + get('/cookie')-> + with('request')->begin()-> + hasCookie('foo', false)-> + hasCookie('bar', false)-> + end()-> + with('response')->checkElement('p', '.-') +; + +$b-> + setCookie('foo', 'bar')-> + setCookie('bar', 'foo')-> + + get('/cookie/setCookie')-> + + get('/cookie')-> + with('request')->begin()-> + hasCookie('foo')-> + isCookie('foo', 'bar')-> + isCookie('foo', '/a/')-> + isCookie('foo', '!/z/')-> + end()-> + with('response')->checkElement('p', 'bar.foo-barfoo')-> + get('/cookie')-> + with('request')->begin()-> + hasCookie('foo')-> + isCookie('foo', 'bar')-> + isCookie('foo', '/a/')-> + isCookie('foo', '!/z/')-> + end()-> + with('response')->checkElement('p', 'bar.foo-barfoo')-> + removeCookie('foo')-> + get('/cookie')-> + with('request')->begin()-> + hasCookie('foo', false)-> + hasCookie('bar')-> + end()-> + with('response')->checkElement('p', '.foo-barfoo')-> + + get('/cookie/removeCookie')-> + + get('/cookie')-> + with('request')->begin()-> + hasCookie('foo', false)-> + hasCookie('bar')-> + end()-> + with('response')->checkElement('p', '.foo-')-> + + get('/cookie/setCookie')-> + + clearCookies()-> + get('/cookie')-> + with('request')->begin()-> + hasCookie('foo', false)-> + hasCookie('bar', false)-> + end()-> + with('response')->checkElement('p', '.-') +; + +$b-> + get('/browser')-> + with('request')->isMethod('get')-> + post('/browser')-> + with('request')->isMethod('post')-> + call('/browser', 'put')-> + with('request')->isMethod('put') +; + +// sfBrowser: clean the custom view templates +$b-> + get('/browser/templateCustom')-> + with('response')->checkElement('#test', 'template')-> + + get('/browser/templateCustom/custom/1')-> + with('response')->checkElement('#test', 'template 1')-> + + get('/browser/templateCustom')-> + with('response')->checkElement('#test', 'template') +; + +$b + ->getAndCheck('browser', 'redirect1', null, 302) + + ->followRedirect() + + ->with('request')->begin() + ->isParameter('module', 'browser') + ->isParameter('action', 'redirectTarget1') + ->end() + + ->with('response')->isStatusCode(200) + + ->getAndCheck('browser', 'redirect2', null, 302) + + ->followRedirect() + + ->with('request')->begin() + ->isParameter('module', 'browser') + ->isParameter('action', 'redirectTarget2') + ->end() + + ->with('response')->isStatusCode(200) +; diff --git a/lib/vendor/symfony/test/functional/authTest.php b/lib/vendor/symfony/test/functional/authTest.php new file mode 100644 index 0000000..759d8a4 --- /dev/null +++ b/lib/vendor/symfony/test/functional/authTest.php @@ -0,0 +1,67 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'frontend'; +if (!include(dirname(__FILE__).'/../bootstrap/functional.php')) +{ + return; +} + +class sfAuthTestBrowser extends sfTestBrowser +{ + public function checkNonAuth() + { + return $this-> + get('/auth/basic')-> + with('request')->begin()-> + isParameter('module', 'auth')-> + isParameter('action', 'basic')-> + end()-> + with('response')->begin()-> + isStatusCode(401)-> + checkElement('#user', '')-> + checkElement('#password', '')-> + checkElement('#msg', 'KO')-> + end() + ; + } + + public function checkAuth() + { + return $this-> + get('/auth/basic')-> + with('request')->begin()-> + isParameter('module', 'auth')-> + isParameter('action', 'basic')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('#user', 'foo')-> + checkElement('#password', 'bar')-> + checkElement('#msg', 'OK')-> + end() + ; + } +} + +$b = new sfAuthTestBrowser(); + +// default main page +$b-> + checkNonAuth()-> + + setAuth('foo', 'bar')-> + + checkAuth()-> + + restart()-> + + checkNonAuth() +; diff --git a/lib/vendor/symfony/test/functional/autoloadTest.php b/lib/vendor/symfony/test/functional/autoloadTest.php new file mode 100644 index 0000000..f63bfe6 --- /dev/null +++ b/lib/vendor/symfony/test/functional/autoloadTest.php @@ -0,0 +1,40 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'frontend'; +if (!include(dirname(__FILE__).'/../bootstrap/functional.php')) +{ + return; +} + +$b = new sfTestBrowser(); + +$b-> + get('/autoload/myAutoload')-> + with('request')->begin()-> + isParameter('module', 'autoload')-> + isParameter('action', 'myAutoload')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('body div', 'foo')-> + end() +; + +$t = $b->test(); + +$autoload = sfAutoload::getInstance(); +$t->ok(@file_get_contents($autoload->getClassPath('sfpropel'), FILE_USE_INCLUDE_PATH), '"sfAutoload" is case insensitive'); + +$t->ok(class_exists('BaseExtendMe'), 'plugin lib directory added to autoload'); +$r = new ReflectionClass('ExtendMe'); +$t->like(str_replace(DIRECTORY_SEPARATOR, '/', $r->getFilename()), '~fixtures/lib/ExtendMe~', 'plugin class can be replaced by project'); +$t->ok(class_exists('NotInLib'), 'plugin autoload sets class paths'); +$t->ok(!class_exists('ExcludedFromAutoload'), 'plugin autoload excludes directories'); diff --git a/lib/vendor/symfony/test/functional/cacheTest.php b/lib/vendor/symfony/test/functional/cacheTest.php new file mode 100644 index 0000000..da87d8c --- /dev/null +++ b/lib/vendor/symfony/test/functional/cacheTest.php @@ -0,0 +1,513 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'cache'; +if (!include(dirname(__FILE__).'/../bootstrap/functional.php')) +{ + return; +} + +class myTestBrowser extends sfTestBrowser +{ + function checkResponseContent($content, $message) + { + $this->test()->ok($this->getResponse()->getContent() == $content, $message); + + return $this; + } + + function getMultiAction($parameter = null) + { + return $this-> + get('/cache/multi'.(null !== $parameter ? '/param/'.$parameter : ''))-> + with('request')->begin()-> + isParameter('module', 'cache')-> + isParameter('action', 'multi')-> + end()-> + + with('response')->begin()-> + isStatusCode(200)-> + + // partials + checkElement('#partial .partial')-> + + // contextual partials + checkElement('#contextualPartial .contextualPartial')-> + checkElement('#contextualCacheablePartial .contextualCacheablePartial__'.$parameter, 'Param: '.$parameter)-> + checkElement('#contextualCacheablePartialVarParam .contextualCacheablePartial_varParam_'.$parameter, 'Param: '.$parameter)-> + + // components + checkElement('#component .component__componentParam_'.$parameter)-> + checkElement('#componentVarParam .component_varParam_componentParam_'.$parameter)-> + + // contextual components + checkElement('#contextualComponent .contextualComponent__componentParam_'.$parameter)-> + checkElement('#contextualComponentVarParam .contextualComponent_varParam_componentParam_'.$parameter)-> + checkElement('#contextualCacheableComponent .contextualCacheableComponent__componentParam_'.$parameter, 'Param: '.$parameter)-> + checkElement('#contextualCacheableComponentVarParam .contextualCacheableComponent_varParam_componentParam_'.$parameter, 'Param: '.$parameter)-> + end()-> + + with('view_cache')->begin()-> + isCached(false)-> + + // partial cache + isUriCached('@sf_cache_partial?module=cache&action=_partial&sf_cache_key='.md5(serialize(array())), false)-> + isUriCached('@sf_cache_partial?module=cache&action=_partial&sf_cache_key='.md5(serialize(array('varParam' => 'varParam'))), false)-> + + isUriCached('@sf_cache_partial?module=cache&action=_cacheablePartial&sf_cache_key='.md5(serialize(array())), true)-> + isUriCached('@sf_cache_partial?module=cache&action=_cacheablePartial&sf_cache_key='.md5(serialize(array('varParam' => 'varParam'))), true)-> + + isUriCached('@sf_cache_partial?module=cache&action=_cacheablePartial&sf_cache_key='.md5(serialize(array('varParam' => 'another'))), false)-> + + // contextual partial cache + isUriCached('@sf_cache_partial?module=cache&action=_contextualPartial&sf_cache_key='.md5(serialize(array())), false)-> + isUriCached('@sf_cache_partial?module=cache&action=_contextualPartial&sf_cache_key='.md5(serialize(array('varParam' => 'varParam'))), false)-> + + isUriCached('@sf_cache_partial?module=cache&action=_contextualCacheablePartial&sf_cache_key='.md5(serialize(array())), true)-> + isUriCached('@sf_cache_partial?module=cache&action=_contextualCacheablePartial&sf_cache_key='.md5(serialize(array('varParam' => 'varParam'))), true)-> + + isUriCached('@sf_cache_partial?module=cache&action=_contextualCacheablePartial&sf_cache_key='.md5(serialize(array('varParam' => 'another'))), false)-> + + // component cache + isUriCached('@sf_cache_partial?module=cache&action=_component&sf_cache_key='.md5(serialize(array())), false)-> + isUriCached('@sf_cache_partial?module=cache&action=_component&sf_cache_key='.md5(serialize(array('varParam' => 'varParam'))), false)-> + + isUriCached('@sf_cache_partial?module=cache&action=_cacheableComponent&sf_cache_key='.md5(serialize(array())), true)-> + isUriCached('@sf_cache_partial?module=cache&action=_cacheableComponent&sf_cache_key='.md5(serialize(array('varParam' => 'varParam'))), true)-> + + isUriCached('@sf_cache_partial?module=cache&action=_cacheableComponent&sf_cache_key='.md5(serialize(array('varParam' => 'another'))), false)-> + + // contextual component cache + isUriCached('@sf_cache_partial?module=cache&action=_contextualComponent&sf_cache_key='.md5(serialize(array())), false)-> + isUriCached('@sf_cache_partial?module=cache&action=_contextualComponent&sf_cache_key='.md5(serialize(array('varParam' => 'varParam'))), false)-> + + isUriCached('@sf_cache_partial?module=cache&action=_contextualCacheableComponent&sf_cache_key='.md5(serialize(array())), true)-> + isUriCached('@sf_cache_partial?module=cache&action=_contextualCacheableComponent&sf_cache_key='.md5(serialize(array('varParam' => 'varParam'))), true)-> + + isUriCached('@sf_cache_partial?module=cache&action=_contextualCacheableComponent&sf_cache_key='.md5(serialize(array('varParam' => 'another'))), false)-> + end() + ; + } + + public function launch() + { + $b = $this; + + // default page is in cache (without layout) + $b-> + get('/')-> + with('request')->begin()-> + isParameter('module', 'default')-> + isParameter('action', 'index')-> + end()-> + + with('response')->begin()-> + isStatusCode(200)-> + checkElement('body', '/congratulations/i')-> + end()-> + + with('view_cache')->isCached(true) + ; + + $b-> + get('/nocache')-> + with('request')->begin()-> + isParameter('module', 'nocache')-> + isParameter('action', 'index')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('body', '/nocache/i')-> + end()-> + with('view_cache')->isCached(false) + ; + + $b-> + get('/cache/page')-> + with('request')->begin()-> + isParameter('module', 'cache')-> + isParameter('action', 'page')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('body', '/page in cache/')-> + end()-> + with('view_cache')->isCached(true, true) + ; + + $b-> + get('/cache/forward')-> + with('request')->begin()-> + isParameter('module', 'cache')-> + isParameter('action', 'forward')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('body', '/page in cache/')-> + end()-> + with('view_cache')->isCached(true) + ; + + // remove all cache + sfToolkit::clearDirectory(sfConfig::get('sf_app_cache_dir')); + + $b-> + getMultiAction()-> + + getMultiAction('requestParam')-> + + // component already in cache and not contextual, so request parameter is not there + with('response')->begin()-> + checkElement('#cacheableComponent .cacheableComponent__componentParam_')-> + checkElement('#cacheableComponentVarParam .cacheableComponent_varParam_componentParam_')-> + checkElement('#cacheablePartial .cacheablePartial__')-> + checkElement('#cacheablePartialVarParam .cacheablePartial_varParam_')-> + end() + ; + + // remove all cache + sfToolkit::clearDirectory(sfConfig::get('sf_app_cache_dir')); + + $b-> + getMultiAction('requestParam')-> + + with('response')->begin()-> + checkElement('#cacheableComponent .cacheableComponent__componentParam_requestParam')-> + checkElement('#cacheableComponentVarParam .cacheableComponent_varParam_componentParam_requestParam')-> + checkElement('#cacheablePartial .cacheablePartial__requestParam')-> + checkElement('#cacheablePartialVarParam .cacheablePartial_varParam_requestParam')-> + end()-> + + getMultiAction()-> + + with('response')->begin()-> + checkElement('#cacheableComponent .cacheableComponent__componentParam_requestParam')-> + checkElement('#cacheableComponentVarParam .cacheableComponent_varParam_componentParam_requestParam')-> + checkElement('#cacheablePartial .cacheablePartial__requestParam')-> + checkElement('#cacheablePartialVarParam .cacheablePartial_varParam_requestParam')-> + end()-> + + getMultiAction('anotherRequestParam')-> + + with('response')->begin()-> + checkElement('#cacheableComponent .cacheableComponent__componentParam_requestParam')-> + checkElement('#cacheableComponentVarParam .cacheableComponent_varParam_componentParam_requestParam')-> + checkElement('#cacheablePartial .cacheablePartial__requestParam')-> + checkElement('#cacheablePartialVarParam .cacheablePartial_varParam_requestParam')-> + end() + ; + + // check contextual cache with another action + $b-> + get('/cache/multiBis')-> + with('request')->begin()-> + isParameter('module', 'cache')-> + isParameter('action', 'multiBis')-> + end()-> + + with('response')->begin()-> + isStatusCode(200)-> + + // partials + checkElement('#cacheablePartial .cacheablePartial__requestParam')-> + + // contextual partials + checkElement('#contextualCacheablePartial .contextualCacheablePartial__')-> + + // components + checkElement('#cacheableComponent .cacheableComponent__componentParam_requestParam')-> + + // contextual components + checkElement('#contextualCacheableComponent .contextualCacheableComponent__componentParam_')-> + end()-> + + with('view_cache')->begin()-> + isCached(false)-> + // partial cache + isUriCached('@sf_cache_partial?module=cache&action=_cacheablePartial&sf_cache_key='.md5(serialize(array())), true)-> + + // contextual partial cache + isUriCached('@sf_cache_partial?module=cache&action=_contextualCacheableComponent&sf_cache_key='.md5(serialize(array())), true)-> + + // component cache + isUriCached('@sf_cache_partial?module=cache&action=_cacheableComponent&sf_cache_key='.md5(serialize(array())), true)-> + + // contextual component cache + isUriCached('@sf_cache_partial?module=cache&action=_contextualCacheableComponent&sf_cache_key='.md5(serialize(array())), true)-> + end() + ; + + // remove all cache + sfToolkit::clearDirectory(sfConfig::get('sf_app_cache_dir')); + + // check user supplied cache key for partials and components + $b-> + get('/cache/specificCacheKey')-> + with('request')->begin()-> + isParameter('module', 'cache')-> + isParameter('action', 'specificCacheKey')-> + end()-> + + with('response')->isStatusCode(200)-> + with('view_cache')->begin(200)-> + isCached(false)-> + + // partial cache + isUriCached('@sf_cache_partial?module=cache&action=_cacheablePartial&sf_cache_key=cacheablePartial', true)-> + + // contextual partial cache + isUriCached('@sf_cache_partial?module=cache&action=_contextualCacheableComponent&sf_cache_key=contextualCacheableComponent', true)-> + + // component cache + isUriCached('@sf_cache_partial?module=cache&action=_cacheableComponent&sf_cache_key=cacheableComponent', true)-> + + // contextual component cache + isUriCached('@sf_cache_partial?module=cache&action=_contextualCacheableComponent&sf_cache_key=contextualCacheableComponent', true)-> + end() + ; + + // check cache content for actions + + // remove all cache + sfToolkit::clearDirectory(sfConfig::get('sf_app_cache_dir')); + + $b-> + get('/cache/action')-> + with('request')->begin()-> + isParameter('module', 'cache')-> + isParameter('action', 'action')-> + end()-> + with('response')->isStatusCode(200)-> + with('view_cache')->isCached(true) + ; + + $b->test()->is(sfConfig::get('ACTION_EXECUTED', false), true, 'action is executed when not in cache'); + sfConfig::set('ACTION_EXECUTED', false); + + $response = $b->getResponse(); + $content1 = $response->getContent(); + $contentType1 = $response->getContentType(); + $headers1 = $response->getHttpHeaders(); + + $b-> + get('/cache/action')-> + with('request')->begin()-> + isParameter('module', 'cache')-> + isParameter('action', 'action')-> + end()-> + with('response')->isStatusCode(200)-> + with('view_cache')->isCached(true) + ; + + $b->test()->is(sfConfig::get('ACTION_EXECUTED', false), false, 'action is not executed when in cache'); + + $response = $b->getResponse(); + $content2 = $response->getContent(); + $contentType2 = $response->getContentType(); + $headers2 = $response->getHttpHeaders(); + + $b->test()->is($content1, $content2, 'response content is the same'); + $b->test()->is($contentType1, $contentType2, 'response content type is the same'); + $b->test()->is($headers1, $headers2, 'response http headers are the same'); + } +} + +$b = new myTestBrowser(); + +// non HTML cache +$image = file_get_contents(dirname(__FILE__).'/fixtures/apps/cache/modules/cache/data/ok48.png'); +sfConfig::set('sf_web_debug', true); +$b-> + get('/cache/imageWithLayoutCacheWithLayout')-> + with('view_cache')->isCached(true, true)-> + checkResponseContent($image, 'image (with layout/page cache) in cache is not decorated when web_debug is on')-> + get('/cache/imageWithLayoutCacheWithLayout')-> + with('view_cache')->isCached(true, true)-> + checkResponseContent($image, 'image (with layout/page cache) in cache is not decorated when web_debug is on')-> + get('/cache/imageWithLayoutCacheNoLayout')-> + with('view_cache')->isCached(true)-> + checkResponseContent($image, 'image (with layout/action cache) in cache is not decorated when web_debug is on')-> + get('/cache/imageWithLayoutCacheNoLayout')-> + with('view_cache')->isCached(true)-> + checkResponseContent($image, 'image (with layout/action cache) in cache is not decorated when web_debug is on')-> + get('/cache/imageNoLayoutCacheWithLayout')-> + with('view_cache')->isCached(true, true)-> + checkResponseContent($image, 'image (no layout/page cache) in cache is not decorated when web_debug is on')-> + get('/cache/imageNoLayoutCacheWithLayout')-> + with('view_cache')->isCached(true, true)-> + checkResponseContent($image, 'image (no layout/page cache) in cache is not decorated when web_debug is on')-> + get('/cache/imageNoLayoutCacheNoLayout')-> + with('view_cache')->isCached(true)-> + checkResponseContent($image, 'image (no layout/action cache) in cache is not decorated when web_debug is on')-> + get('/cache/imageNoLayoutCacheNoLayout')-> + with('view_cache')->isCached(true)-> + checkResponseContent($image, 'image (no layout/action cache) in cache is not decorated when web_debug is on') +; +sfConfig::set('sf_web_debug', false); + +// check stylesheets, javascripts inclusions +sfToolkit::clearDirectory(sfConfig::get('sf_app_cache_dir')); +$b-> + get('/cache/multiBis')-> + with('request')->begin()-> + isParameter('module', 'cache')-> + isParameter('action', 'multiBis')-> + end()-> + + with('response')->begin()-> + isStatusCode(200)-> + + // the first time (no cache) + checkElement('link[href*="/main_css"]')-> + checkElement('script[src*="/main_js"]')-> + checkElement('link[href*="/partial_css"]')-> + checkElement('script[src*="/partial_js"]')-> + checkElement('link[href*="/another_partial_css"]')-> + checkElement('script[src*="/another_partial_js"]')-> + checkElement('link[href*="/component_css"]')-> + checkElement('script[src*="/component_js"]')-> + + checkElement('#partial_slot_content', 'Partial')-> + checkElement('#another_partial_slot_content', 'Another Partial')-> + checkElement('#component_slot_content', 'Component')-> + end()-> + + get('/cache/multiBis')-> + with('response')->begin()-> + + // when in cache + checkElement('link[href*="/main_css"]')-> + checkElement('script[src*="/main_js"]')-> + checkElement('link[href*="/partial_css"]')-> + checkElement('script[src*="/partial_js"]')-> + checkElement('link[href*="/another_partial_css"]')-> + checkElement('script[src*="/another_partial_js"]')-> + checkElement('link[href*="/component_css"]')-> + checkElement('script[src*="/component_js"]')-> + + checkElement('#partial_slot_content', 'Partial')-> + checkElement('#another_partial_slot_content', 'Another Partial')-> + checkElement('#component_slot_content', 'Component')-> + end() +; + +$b-> + get('/cache/partial')-> + with('request')->begin()-> + isParameter('module', 'cache')-> + isParameter('action', 'partial')-> + end()-> + + with('response')->begin()-> + isStatusCode(200)-> + + // only partial specific css and js are included + checkElement('link[href*="/main_css"]', false)-> + checkElement('script[src*="/main_js"]', false)-> + checkElement('link[href*="/partial_css"]')-> + checkElement('script[src*="/partial_js"]')-> + checkElement('link[href*="/another_partial_css"]')-> + checkElement('script[src*="/another_partial_js"]')-> + checkElement('link[href*="/component_css"]', false)-> + checkElement('script[src*="/component_js"]', false)-> + + checkElement('#partial_slot_content', 'Partial')-> + checkElement('#another_partial_slot_content', 'Another Partial')-> + checkElement('#component_slot_content', '')-> + end()-> + + get('/cache/anotherPartial')-> + with('request')->begin()-> + isParameter('module', 'cache')-> + isParameter('action', 'anotherPartial')-> + end()-> + + with('response')->begin()-> + isStatusCode(200)-> + + // only partial specific css and js are included + checkElement('link[href*="/main_css"]', false)-> + checkElement('script[src*="/main_js"]', false)-> + checkElement('link[href*="/partial_css"]', false)-> + checkElement('script[src*="/partial_js"]', false)-> + checkElement('link[href*="/another_partial_css"]')-> + checkElement('script[src*="/another_partial_js"]')-> + checkElement('link[href*="/component_css"]', false)-> + checkElement('script[src*="/component_js"]', false)-> + + checkElement('#partial_slot_content', '')-> + checkElement('#another_partial_slot_content', 'Another Partial')-> + checkElement('#component_slot_content', '')-> + end()-> + + get('/cache/component')-> + with('request')->begin()-> + isParameter('module', 'cache')-> + isParameter('action', 'component')-> + end()-> + + with('response')->begin()-> + isStatusCode(200)-> + + // only partial specific css and js are included + checkElement('link[href*="/main_css"]', false)-> + checkElement('script[src*="/main_js"]', false)-> + checkElement('link[href*="/partial_css"]', false)-> + checkElement('script[src*="/partial_js"]', false)-> + checkElement('link[href*="/another_partial_css"]', false)-> + checkElement('script[src*="/another_partial_js"]', false)-> + checkElement('link[href*="/component_css"]')-> + checkElement('script[src*="/component_js"]')-> + + checkElement('#partial_slot_content', '')-> + checkElement('#another_partial_slot_content', '')-> + checkElement('#component_slot_content', 'Component')-> + end() +; + +$b->get('/') + ->with('view_cache')->isUriCached('cache/list', false) + ->get('/cache/list') + ->with('view_cache')->isUriCached('cache/list', true) + + // include GET parameters + ->with('view_cache')->isUriCached('cache/list?page=10', false) + ->get('/cache/list?page=10') + ->with('response')->checkElement('#page', '10') + ->with('view_cache')->isUriCached('cache/list?page=10', true) + + // include different GET parameters + ->with('view_cache')->isUriCached('cache/list?page=20', false) + ->get('/cache/list?page=20') + ->with('response')->checkElement('#page', '20') + ->with('view_cache')->isUriCached('cache/list?page=20', true) +; + +// check for 304 response +sfConfig::set('LAST_MODIFIED', strtotime('2010-01-01')); +$b->get('/cache/lastModifiedResponse') + ->with('response')->isStatusCode(200) +; + +$b->setHttpHeader('If-Modified-Since', sfWebResponse::getDate(sfConfig::get('LAST_MODIFIED'))) + ->get('/cache/lastModifiedResponse') + ->with('response')->isStatusCode(304) +; + +// test with sfFileCache class (default) +$b->launch(); + +// test with sfSQLiteCache class +if (extension_loaded('SQLite') || extension_loaded('pdo_SQLite')) +{ + sfConfig::set('sf_factory_view_cache', 'sfSQLiteCache'); + sfConfig::set('sf_factory_view_cache_parameters', array('database' => sfConfig::get('sf_template_cache_dir').DIRECTORY_SEPARATOR.'cache.db')); + $b->launch(); +} diff --git a/lib/vendor/symfony/test/functional/escapingTest.php b/lib/vendor/symfony/test/functional/escapingTest.php new file mode 100644 index 0000000..3e47fce --- /dev/null +++ b/lib/vendor/symfony/test/functional/escapingTest.php @@ -0,0 +1,50 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'frontend'; +if (!include(dirname(__FILE__).'/../bootstrap/functional.php')) +{ + return; +} + +$b = new sfTestBrowser(); + +$b->get('/escaping/on') + + ->with('request')->begin() + ->isParameter('module', 'escaping') + ->isParameter('action', 'on') + ->end() + + ->with('response')->begin() + ->isStatusCode(200) + ->matches('#

            Lorem <strong>ipsum</strong> dolor sit amet.

            #') + ->matches('#

            Lorem <strong>ipsum</strong> dolor sit amet.

            #') + ->matches('#

            Lorem <strong>ipsum</strong> dolor sit amet.

            #') + ->matches('#

            Lorem ipsum dolor sit amet.

            #') + ->matches('#
            Lorem <strong>ipsum</strong> dolor sit amet.
            #') + ->matches('#
            Lorem ipsum dolor sit amet.
            #') + ->checkElement('span.no', 2) + ->end() +; + +$b->get('/escaping/off') + + ->with('request')->begin() + ->isParameter('module', 'escaping') + ->isParameter('action', 'off') + ->end() + + ->with('response')->begin() + ->isStatusCode(200) + ->matches('#

            Lorem ipsum dolor sit amet.

            #') + ->matches('#

            Lorem ipsum dolor sit amet.

            #') + ->end() +; diff --git a/lib/vendor/symfony/test/functional/filterTest.php b/lib/vendor/symfony/test/functional/filterTest.php new file mode 100644 index 0000000..c1d0724 --- /dev/null +++ b/lib/vendor/symfony/test/functional/filterTest.php @@ -0,0 +1,45 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'frontend'; +if (!include(dirname(__FILE__).'/../bootstrap/functional.php')) +{ + return; +} + +$b = new sfTestBrowser(); + +// filter +$b-> + get('/filter')-> + with('request')->begin()-> + isParameter('module', 'filter')-> + isParameter('action', 'index')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('div[class="before"]', 1)-> + checkElement('div[class="after"]', 1)-> + end() +; + +// filter with a forward in the same module +$b-> + get('/filter/indexWithForward')-> + with('request')->begin()-> + isParameter('module', 'filter')-> + isParameter('action', 'indexWithForward')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('div[class="before"]', 2)-> + checkElement('div[class="after"]', 1)-> + end() +; diff --git a/lib/vendor/symfony/test/functional/fixtures/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/.svn/all-wcprops new file mode 100644 index 0000000..b5e0206 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/33363/branches/1.4/test/functional/fixtures +END +symfony +K 25 +svn:wc:ra_dav:version-url +V 61 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/symfony +END diff --git a/lib/vendor/symfony/test/functional/fixtures/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/.svn/entries new file mode 100644 index 0000000..f5b3398 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/.svn/entries @@ -0,0 +1,83 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures +http://svn.symfony-project.com + + + +2012-03-08T13:55:43.701792Z +33363 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +log +dir + +plugins +dir + +apps +dir + +cache +dir + +symfony +file + + + + +2012-05-10T18:41:00.957545Z +36073c1914105fb3bbb4f1ce4965b4d2 +2009-04-04T14:00:15.361330Z +16982 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +482 + +config +dir + +lib +dir + +data +dir + diff --git a/lib/vendor/symfony/test/functional/fixtures/.svn/prop-base/symfony.svn-base b/lib/vendor/symfony/test/functional/fixtures/.svn/prop-base/symfony.svn-base new file mode 100644 index 0000000..869ac71 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/.svn/prop-base/symfony.svn-base @@ -0,0 +1,5 @@ +K 14 +svn:executable +V 1 +* +END diff --git a/lib/vendor/symfony/test/functional/fixtures/.svn/text-base/symfony.svn-base b/lib/vendor/symfony/test/functional/fixtures/.svn/text-base/symfony.svn-base new file mode 100644 index 0000000..3ea1419 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/.svn/text-base/symfony.svn-base @@ -0,0 +1,15 @@ +#!/usr/bin/env php + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +chdir(dirname(__FILE__)); +require_once(dirname(__FILE__).'/config/ProjectConfiguration.class.php'); +$configuration = new ProjectConfiguration(); +include($configuration->getSymfonyLibDir().'/command/cli.php'); diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/.svn/all-wcprops new file mode 100644 index 0000000..5a04b8a --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/33363/branches/1.4/test/functional/fixtures/apps +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/.svn/entries new file mode 100644 index 0000000..759a0cd --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/.svn/entries @@ -0,0 +1,37 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps +http://svn.symfony-project.com + + + +2012-03-08T13:55:43.701792Z +33363 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +frontend +dir + +i18n +dir + +cache +dir + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/cache/.svn/all-wcprops new file mode 100644 index 0000000..e7543b9 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 64 +/!svn/ver/31928/branches/1.4/test/functional/fixtures/apps/cache +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/cache/.svn/entries new file mode 100644 index 0000000..f61989e --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/.svn/entries @@ -0,0 +1,43 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/cache +http://svn.symfony-project.com + + + +2011-01-29T16:02:51.990563Z +31928 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +i18n +dir + +config +dir + +lib +dir + +modules +dir + +templates +dir + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/config/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/cache/config/.svn/all-wcprops new file mode 100644 index 0000000..3f64df6 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/config/.svn/all-wcprops @@ -0,0 +1,59 @@ +K 25 +svn:wc:ra_dav:version-url +V 71 +/!svn/ver/24434/branches/1.4/test/functional/fixtures/apps/cache/config +END +factories.yml +K 25 +svn:wc:ra_dav:version-url +V 85 +/!svn/ver/24434/branches/1.4/test/functional/fixtures/apps/cache/config/factories.yml +END +app.yml +K 25 +svn:wc:ra_dav:version-url +V 79 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/cache/config/app.yml +END +settings.yml +K 25 +svn:wc:ra_dav:version-url +V 84 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/cache/config/settings.yml +END +cache.yml +K 25 +svn:wc:ra_dav:version-url +V 81 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/cache/config/cache.yml +END +cacheConfiguration.class.php +K 25 +svn:wc:ra_dav:version-url +V 100 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/cache/config/cacheConfiguration.class.php +END +routing.yml +K 25 +svn:wc:ra_dav:version-url +V 83 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/cache/config/routing.yml +END +security.yml +K 25 +svn:wc:ra_dav:version-url +V 84 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/cache/config/security.yml +END +filters.yml +K 25 +svn:wc:ra_dav:version-url +V 83 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/cache/config/filters.yml +END +view.yml +K 25 +svn:wc:ra_dav:version-url +V 80 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/cache/config/view.yml +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/config/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/cache/config/.svn/entries new file mode 100644 index 0000000..1eb2d5f --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/config/.svn/entries @@ -0,0 +1,334 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/cache/config +http://svn.symfony-project.com + + + +2009-11-26T11:52:47.753777Z +24434 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +factories.yml +file + + + + +2012-05-10T18:40:58.729551Z +a66e8e26cd1d4950fd440da104aedab8 +2009-11-26T11:52:47.753777Z +24434 +fabien + + + + + + + + + + + + + + + + + + + + + +277 + +app.yml +file + + + + +2012-05-10T18:40:58.729551Z +6f622a40f3255229a7ce20d54358432a +2006-09-25T14:25:14.024909Z +2169 +fabien + + + + + + + + + + + + + + + + + + + + + +22 + +settings.yml +file + + + + +2012-05-10T18:40:58.729551Z +fdd18b5f0f0a61d7678ef7c2bf41c045 +2009-09-11T07:38:24.815935Z +21884 +fabien + + + + + + + + + + + + + + + + + + + + + +505 + +cache.yml +file + + + + +2012-05-10T18:40:58.729551Z +1e2a0ce3f71409c913dcbb5dd5e62227 +2009-09-11T07:38:24.815935Z +21884 +fabien + + + + + + + + + + + + + + + + + + + + + +71 + +cacheConfiguration.class.php +file + + + + +2012-05-10T18:40:58.745551Z +1478c49830ca04cbf730f7896674c1eb +2008-03-19T10:21:16.391410Z +7962 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +109 + +routing.yml +file + + + + +2012-05-10T18:40:58.745551Z +797b3c445d790684651e05ab15d2de02 +2006-09-25T14:25:14.024909Z +2169 +fabien + + + + + + + + + + + + + + + + + + + + + +255 + +security.yml +file + + + + +2012-05-10T18:40:58.953555Z +a66fd43f8b3cc8d473e52a49d4938d99 +2009-09-11T07:38:24.815935Z +21884 +fabien + + + + + + + + + + + + + + + + + + + + + +28 + +filters.yml +file + + + + +2012-05-10T18:40:58.957552Z +cb29ce7fce1374e670a4134c4991505f +2009-04-30T07:13:08.234464Z +17794 +fabien + + + + + + + + + + + + + + + + + + + + + +115 + +view.yml +file + + + + +2012-05-10T18:40:58.957552Z +721f76e57c90a9a2c2dd82f3a56443dc +2009-09-11T07:38:24.815935Z +21884 +fabien + + + + + + + + + + + + + + + + + + + + + +315 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/config/.svn/prop-base/cacheConfiguration.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/config/.svn/prop-base/cacheConfiguration.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/config/.svn/prop-base/cacheConfiguration.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/config/.svn/text-base/app.yml.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/config/.svn/text-base/app.yml.svn-base new file mode 100644 index 0000000..24e2621 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/config/.svn/text-base/app.yml.svn-base @@ -0,0 +1,2 @@ +# default values +all: diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/config/.svn/text-base/cache.yml.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/config/.svn/text-base/cache.yml.svn-base new file mode 100644 index 0000000..044b9c6 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/config/.svn/text-base/cache.yml.svn-base @@ -0,0 +1,4 @@ +default: + enabled: true + with_layout: false + lifetime: 86400 diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/config/.svn/text-base/cacheConfiguration.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/config/.svn/text-base/cacheConfiguration.class.php.svn-base new file mode 100644 index 0000000..8778b4b --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/config/.svn/text-base/cacheConfiguration.class.php.svn-base @@ -0,0 +1,8 @@ + + * @version SVN: $Id$ + */ +class cacheActions extends sfActions +{ + public function executeIndex() + { + } + + public function executePage() + { + } + + public function executeList($request) + { + $this->page = $request->getParameter('page', 1); + } + + public function executeForward() + { + $this->forward('cache', 'page'); + } + + public function executeMulti() + { + $this->getResponse()->setTitle('Param: '.$this->getRequestParameter('param')); + } + + public function executeMultiBis() + { + } + + public function executePartial() + { + } + + public function executeAnotherPartial() + { + } + + public function executeComponent() + { + } + + public function executeSpecificCacheKey() + { + } + + public function executeAction() + { + $response = $this->getResponse(); + $response->setHttpHeader('symfony', 'foo'); + $response->setContentType('text/plain'); + $response->setTitle('My title'); + $response->addMeta('meta1', 'bar'); + $response->addHttpMeta('httpmeta1', 'foobar'); + + sfConfig::set('ACTION_EXECUTED', true); + } + + public function executeImageWithLayoutCacheWithLayout() + { + $this->prepareImage(); + $this->setLayout('image'); + } + + public function executeImageWithLayoutCacheNoLayout() + { + $this->prepareImage(); + $this->setLayout('image'); + } + + public function executeImageNoLayoutCacheWithLayout() + { + $this->prepareImage(); + $this->setLayout(false); + } + + public function executeImageNoLayoutCacheNoLayout() + { + $this->prepareImage(); + $this->setLayout(false); + } + + protected function prepareImage() + { + $this->getResponse()->setContentType('image/png'); + $this->image = file_get_contents(dirname(__FILE__).'/../data/ok48.png'); + $this->setTemplate('image'); + } + + public function executeLastModifiedResponse() + { + $this->getResponse()->setHttpHeader('Last-Modified', $this->getResponse()->getDate(sfConfig::get('LAST_MODIFIED'))); + $this->setTemplate('action'); + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/actions/.svn/text-base/components.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/actions/.svn/text-base/components.class.php.svn-base new file mode 100644 index 0000000..c552dad --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/actions/.svn/text-base/components.class.php.svn-base @@ -0,0 +1,36 @@ + + * @version SVN: $Id$ + */ +class cacheComponents extends sfComponents +{ + public function executeComponent() + { + $this->componentParam = 'componentParam'; + $this->requestParam = $this->getRequestParameter('param'); + } + + public function executeCacheableComponent() + { + $this->componentParam = 'componentParam'; + $this->requestParam = $this->getRequestParameter('param'); + } + + public function executeContextualComponent() + { + $this->componentParam = 'componentParam'; + $this->requestParam = $this->getRequestParameter('param'); + } + + public function executeContextualCacheableComponent() + { + $this->componentParam = 'componentParam'; + $this->requestParam = $this->getRequestParameter('param'); + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/actions/actions.class.php b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/actions/actions.class.php new file mode 100644 index 0000000..fabf955 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/actions/actions.class.php @@ -0,0 +1,104 @@ + + * @version SVN: $Id: actions.class.php 31928 2011-01-29 16:02:51Z Kris.Wallsmith $ + */ +class cacheActions extends sfActions +{ + public function executeIndex() + { + } + + public function executePage() + { + } + + public function executeList($request) + { + $this->page = $request->getParameter('page', 1); + } + + public function executeForward() + { + $this->forward('cache', 'page'); + } + + public function executeMulti() + { + $this->getResponse()->setTitle('Param: '.$this->getRequestParameter('param')); + } + + public function executeMultiBis() + { + } + + public function executePartial() + { + } + + public function executeAnotherPartial() + { + } + + public function executeComponent() + { + } + + public function executeSpecificCacheKey() + { + } + + public function executeAction() + { + $response = $this->getResponse(); + $response->setHttpHeader('symfony', 'foo'); + $response->setContentType('text/plain'); + $response->setTitle('My title'); + $response->addMeta('meta1', 'bar'); + $response->addHttpMeta('httpmeta1', 'foobar'); + + sfConfig::set('ACTION_EXECUTED', true); + } + + public function executeImageWithLayoutCacheWithLayout() + { + $this->prepareImage(); + $this->setLayout('image'); + } + + public function executeImageWithLayoutCacheNoLayout() + { + $this->prepareImage(); + $this->setLayout('image'); + } + + public function executeImageNoLayoutCacheWithLayout() + { + $this->prepareImage(); + $this->setLayout(false); + } + + public function executeImageNoLayoutCacheNoLayout() + { + $this->prepareImage(); + $this->setLayout(false); + } + + protected function prepareImage() + { + $this->getResponse()->setContentType('image/png'); + $this->image = file_get_contents(dirname(__FILE__).'/../data/ok48.png'); + $this->setTemplate('image'); + } + + public function executeLastModifiedResponse() + { + $this->getResponse()->setHttpHeader('Last-Modified', $this->getResponse()->getDate(sfConfig::get('LAST_MODIFIED'))); + $this->setTemplate('action'); + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/actions/components.class.php b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/actions/components.class.php new file mode 100644 index 0000000..915065e --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/actions/components.class.php @@ -0,0 +1,36 @@ + + * @version SVN: $Id: components.class.php 2319 2006-10-05 09:03:13Z fabien $ + */ +class cacheComponents extends sfComponents +{ + public function executeComponent() + { + $this->componentParam = 'componentParam'; + $this->requestParam = $this->getRequestParameter('param'); + } + + public function executeCacheableComponent() + { + $this->componentParam = 'componentParam'; + $this->requestParam = $this->getRequestParameter('param'); + } + + public function executeContextualComponent() + { + $this->componentParam = 'componentParam'; + $this->requestParam = $this->getRequestParameter('param'); + } + + public function executeContextualCacheableComponent() + { + $this->componentParam = 'componentParam'; + $this->requestParam = $this->getRequestParameter('param'); + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/config/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/config/.svn/all-wcprops new file mode 100644 index 0000000..c2de8c8 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/config/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 85 +/!svn/ver/28625/branches/1.4/test/functional/fixtures/apps/cache/modules/cache/config +END +cache.yml +K 25 +svn:wc:ra_dav:version-url +V 95 +/!svn/ver/28625/branches/1.4/test/functional/fixtures/apps/cache/modules/cache/config/cache.yml +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/config/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/config/.svn/entries new file mode 100644 index 0000000..4c82e70 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/config/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/cache/modules/cache/config +http://svn.symfony-project.com + + + +2010-03-19T19:00:53.490685Z +28625 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +cache.yml +file + + + + +2012-05-10T18:40:59.557555Z +3fe35827177e1e6010c191fbdef56c5e +2010-03-19T19:00:53.490685Z +28625 +Kris.Wallsmith + + + + + + + + + + + + + + + + + + + + + +856 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/config/.svn/text-base/cache.yml.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/config/.svn/text-base/cache.yml.svn-base new file mode 100644 index 0000000..29dfd44 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/config/.svn/text-base/cache.yml.svn-base @@ -0,0 +1,62 @@ +_contextualCacheableComponent: + enabled: true + contextual: true + +_contextualComponent: + enabled: false + contextual: true + +_cacheableComponent: + enabled: true + +_component: + enabled: false + +_contextualCacheablePartial: + enabled: true + contextual: true + +_contextualPartial: + enabled: false + contextual: true + +_cacheablePartial: + enabled: true + +_partial: + enabled: false + +multi: + enabled: false + +multiBis: + enabled: false + +specificCacheKey: + enabled: false + +action: + enabled: true + with_layout: false + +page: + with_layout: true + +imageWithLayoutCacheWithLayout: + with_layout: true + +imageWithLayoutCacheNoLayout: + with_layout: false + +imageNoLayoutCacheWithLayout: + with_layout: true + +imageNoLayoutCacheNoLayout: + with_layout: false + +list: + enabled: true + +lastModifiedResponse: + enabled: true + with_layout: true diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/config/cache.yml b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/config/cache.yml new file mode 100644 index 0000000..29dfd44 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/config/cache.yml @@ -0,0 +1,62 @@ +_contextualCacheableComponent: + enabled: true + contextual: true + +_contextualComponent: + enabled: false + contextual: true + +_cacheableComponent: + enabled: true + +_component: + enabled: false + +_contextualCacheablePartial: + enabled: true + contextual: true + +_contextualPartial: + enabled: false + contextual: true + +_cacheablePartial: + enabled: true + +_partial: + enabled: false + +multi: + enabled: false + +multiBis: + enabled: false + +specificCacheKey: + enabled: false + +action: + enabled: true + with_layout: false + +page: + with_layout: true + +imageWithLayoutCacheWithLayout: + with_layout: true + +imageWithLayoutCacheNoLayout: + with_layout: false + +imageNoLayoutCacheWithLayout: + with_layout: true + +imageNoLayoutCacheNoLayout: + with_layout: false + +list: + enabled: true + +lastModifiedResponse: + enabled: true + with_layout: true diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/data/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/data/.svn/all-wcprops new file mode 100644 index 0000000..ea408a2 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/data/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 83 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/cache/modules/cache/data +END +ok48.png +K 25 +svn:wc:ra_dav:version-url +V 92 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/cache/modules/cache/data/ok48.png +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/data/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/data/.svn/entries new file mode 100644 index 0000000..680607a --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/data/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/cache/modules/cache/data +http://svn.symfony-project.com + + + +2008-02-03T21:30:29.446037Z +7301 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +ok48.png +file + + + + +2012-05-10T18:40:59.617551Z +75811a4ddf2de574e209d547c14ba614 +2008-02-03T21:30:29.446037Z +7301 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +3106 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/data/.svn/prop-base/ok48.png.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/data/.svn/prop-base/ok48.png.svn-base new file mode 100644 index 0000000..5e9587e --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/data/.svn/prop-base/ok48.png.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/data/.svn/text-base/ok48.png.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/data/.svn/text-base/ok48.png.svn-base new file mode 100644 index 0000000000000000000000000000000000000000..cd736e82aecc4c0a629b8620db07299b90b7ca1a GIT binary patch literal 3106 zcmV+-4BhjIP)w(EZ*psMAUL&X(s%#> z3wKFGK~!jg?V5XVT-ANYKj+?kN-M2aT0Jevvau!GNS1}LWtTwgI3cb*z+h%*W!u~8fzX6PlhQa%pn)O57)%|Kl$ZqLK!_Y;EX$UymtV3aS(c?;Nvqwx zyZ3QU|5z=SUl?o`!wlb<-^_iSbMNH#tP=HMUASsuFMVhvp%1)C2E|AMa;|5tu}?jHkqLfXR4$0PRx>GL(# zKT>KJLowk+e^vHE(fph{?pw5;VowQ2-G`gQ3q1A1M-s0QCv~+cUJ!Y6n6>P&%AKp8 zt5d)3*`kzE%5qHg?d|K;vZrd)l1IzmqKX-3_xo6Qps;~OjrUi*QdSmTxPIApxapeJ zB+WP=SUPh#!iLU7+sql)<=h+@n0(6`VIV>%{|bXZiegnT{7zSxeE(#F88#)S1wvfu8%>H_B95n4O{uJ8-BrS;);*MF0l zg|$qkCvcRFt!x}+V@VTBn#?b4q|9GQ_e5KMXrX?)aGb8OUbE+_30U-}q5I~p4LwyK zzCP#PrUxm?Eg^1BBBznhnk_9-mO*W}o{%@pp5eFs;cNY?Pwp9i`J&V4tQ9$piLs<{ zs-4~|MSki1#s5^ZGWgF8p&Pkl-a5Q)Ke5!<`}T3`K6)b^ym|Decyz_YxRYy1D&JSY z{JTOA)ZSL`E#Z*p-8_Cz=jO4WUM6?wCFD@~y<@`Y>u1R)?{PMq25tQEdT z_j4rL!SnkbXVg4NBIeL@ASu%p`UOL%`71?_%wARSa9v)bt_kJOzgFJv%MquB+Kt_p zNIw78?^Hfl(HOY9CA^m9HFqMFh3TY_%0VgzM^2eKZMx>7ceIU-2OcA-q9h_V9UTUi zqco%2`0@D!c$WP`*@mjm1RuCQyn&SV$cvG$ zZlP|~-`8v@n;BeoL&=w^Eovd{#IdEBAwA6;nLT#UgrIYzmF>r$MRQpU^_%S8Yal!V zqtDnM+Zub26nn(!H&OBV`zxO>nd|@T(&AfbC|!oFER>Q6z~l0gv|{|We>0=%5F=g2 zrY-CG?*$SUB0qbjf9cJCIb%~WFIc@ed?yuobFpNa^Hs5#YYKseK%* z+D^X8341@$-qhOT9mnyrD5yUs0r%q*zG=knu7 z3x`ZBDjXCxj>-@y%ew~KG?Agv*$tlyu8j7Ny)iyOG)rW~eT8@5_~)h173I#zYc9Ht z98VC_NuCasY}jx*?uCG~9j9&h7Yrsl$n$Bm?=fiGpG0^B@m=wkjGe}#KpPOxzDqBd zZ?Tv+NB7;V2^r(Ge z_4<;(X}+`Q$*^aZt3LDv+`1P_CXqPrJ>v{hHku|#+T-jU`CrEE;{<&=JANOhy~_X% zXY$R-AEoxD9tS!AW4hOL)2m-!wkY?u(h?mhLDL|bIzhxZia_A=eGKr>-(G`7z zG@}&wG~W2lBptm5N-1Mv+r*RBLF+$(9?nw}=z4+P9Ld#h&GiVXXSlH)aO(nFrHG`D zF_9j`Q5G&uM-u{sL}8{~?G44eR*^O1+l z1T)v)?0+b*B=99^Nv^BU;fAFFCX-Gkr1XpsAx?L2={g?Wk53Qa(Q|O?9$cCqU1UmZ ziG={1sex}x1ItNZssvI=vb%vwLO~#alMM3g%ZC^oPhg%hk4$Wxc!VUc0w+0VVR5bi zA282b?_C%8OyF*8^hNXhe11hf6G;chR_J<0fDoW-8VJy`f~Kx(0)!CnO}j#z`=aS^ z6cp!$Nk)tK!RB^G;&D;~sgB9lCclBjc3|{k*qBz;+aFmxithbPZfuX0W?7&~<^X3tXB&6QB#wwTx*Z(@x8tYaldG0;)naBu2{l zk4-y?CKDJ3jn?>U@vkHK4V<2mKZpRx#MrnRSG~rt5zCq7ZyJqDUu48)aeWxwrLb+8 z2`4>6OxHz5&=lz`QB4$)0Zi_t~d)IgZ*w0xB z>QV({5yxa;ywf-ms`k{W0#$mbZ;YmzdJ2O+Ce1Ni`ZO;HGUrp{VY(-j0FT>EbJ4xL zvuBKFT7QB{JI27z#=jfuNNoUmxxl8?G5Iab5qql%=F$!zG~rzyZ({Bcssqn zh;H5aR5Y8QVpp0xT-w&61Y+?KdHCdkF&sP+mM?;iH_*U5_%9I7ItTBAa$^ z9LpxC3)an-i%Z>FRKTP$Ci{-$*1!khf&c&j literal 0 HcmV?d00001 diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/data/ok48.png b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/data/ok48.png new file mode 100644 index 0000000000000000000000000000000000000000..cd736e82aecc4c0a629b8620db07299b90b7ca1a GIT binary patch literal 3106 zcmV+-4BhjIP)w(EZ*psMAUL&X(s%#> z3wKFGK~!jg?V5XVT-ANYKj+?kN-M2aT0Jevvau!GNS1}LWtTwgI3cb*z+h%*W!u~8fzX6PlhQa%pn)O57)%|Kl$ZqLK!_Y;EX$UymtV3aS(c?;Nvqwx zyZ3QU|5z=SUl?o`!wlb<-^_iSbMNH#tP=HMUASsuFMVhvp%1)C2E|AMa;|5tu}?jHkqLfXR4$0PRx>GL(# zKT>KJLowk+e^vHE(fph{?pw5;VowQ2-G`gQ3q1A1M-s0QCv~+cUJ!Y6n6>P&%AKp8 zt5d)3*`kzE%5qHg?d|K;vZrd)l1IzmqKX-3_xo6Qps;~OjrUi*QdSmTxPIApxapeJ zB+WP=SUPh#!iLU7+sql)<=h+@n0(6`VIV>%{|bXZiegnT{7zSxeE(#F88#)S1wvfu8%>H_B95n4O{uJ8-BrS;);*MF0l zg|$qkCvcRFt!x}+V@VTBn#?b4q|9GQ_e5KMXrX?)aGb8OUbE+_30U-}q5I~p4LwyK zzCP#PrUxm?Eg^1BBBznhnk_9-mO*W}o{%@pp5eFs;cNY?Pwp9i`J&V4tQ9$piLs<{ zs-4~|MSki1#s5^ZGWgF8p&Pkl-a5Q)Ke5!<`}T3`K6)b^ym|Decyz_YxRYy1D&JSY z{JTOA)ZSL`E#Z*p-8_Cz=jO4WUM6?wCFD@~y<@`Y>u1R)?{PMq25tQEdT z_j4rL!SnkbXVg4NBIeL@ASu%p`UOL%`71?_%wARSa9v)bt_kJOzgFJv%MquB+Kt_p zNIw78?^Hfl(HOY9CA^m9HFqMFh3TY_%0VgzM^2eKZMx>7ceIU-2OcA-q9h_V9UTUi zqco%2`0@D!c$WP`*@mjm1RuCQyn&SV$cvG$ zZlP|~-`8v@n;BeoL&=w^Eovd{#IdEBAwA6;nLT#UgrIYzmF>r$MRQpU^_%S8Yal!V zqtDnM+Zub26nn(!H&OBV`zxO>nd|@T(&AfbC|!oFER>Q6z~l0gv|{|We>0=%5F=g2 zrY-CG?*$SUB0qbjf9cJCIb%~WFIc@ed?yuobFpNa^Hs5#YYKseK%* z+D^X8341@$-qhOT9mnyrD5yUs0r%q*zG=knu7 z3x`ZBDjXCxj>-@y%ew~KG?Agv*$tlyu8j7Ny)iyOG)rW~eT8@5_~)h173I#zYc9Ht z98VC_NuCasY}jx*?uCG~9j9&h7Yrsl$n$Bm?=fiGpG0^B@m=wkjGe}#KpPOxzDqBd zZ?Tv+NB7;V2^r(Ge z_4<;(X}+`Q$*^aZt3LDv+`1P_CXqPrJ>v{hHku|#+T-jU`CrEE;{<&=JANOhy~_X% zXY$R-AEoxD9tS!AW4hOL)2m-!wkY?u(h?mhLDL|bIzhxZia_A=eGKr>-(G`7z zG@}&wG~W2lBptm5N-1Mv+r*RBLF+$(9?nw}=z4+P9Ld#h&GiVXXSlH)aO(nFrHG`D zF_9j`Q5G&uM-u{sL}8{~?G44eR*^O1+l z1T)v)?0+b*B=99^Nv^BU;fAFFCX-Gkr1XpsAx?L2={g?Wk53Qa(Q|O?9$cCqU1UmZ ziG={1sex}x1ItNZssvI=vb%vwLO~#alMM3g%ZC^oPhg%hk4$Wxc!VUc0w+0VVR5bi zA282b?_C%8OyF*8^hNXhe11hf6G;chR_J<0fDoW-8VJy`f~Kx(0)!CnO}j#z`=aS^ z6cp!$Nk)tK!RB^G;&D;~sgB9lCclBjc3|{k*qBz;+aFmxithbPZfuX0W?7&~<^X3tXB&6QB#wwTx*Z(@x8tYaldG0;)naBu2{l zk4-y?CKDJ3jn?>U@vkHK4V<2mKZpRx#MrnRSG~rt5zCq7ZyJqDUu48)aeWxwrLb+8 z2`4>6OxHz5&=lz`QB4$)0Zi_t~d)IgZ*w0xB z>QV({5yxa;ywf-ms`k{W0#$mbZ;YmzdJ2O+Ce1Ni`ZO;HGUrp{VY(-j0FT>EbJ4xL zvuBKFT7QB{JI27z#=jfuNNoUmxxl8?G5Iab5qql%=F$!zG~rzyZ({Bcssqn zh;H5aR5Y8QVpp0xT-w&61Y+?KdHCdkF&sP+mM?;iH_*U5_%9I7ItTBAa$^ z9LpxC3)an-i%Z>FRKTP$Ci{-$*1!khf&c&j literal 0 HcmV?d00001 diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/lib/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/lib/.svn/all-wcprops new file mode 100644 index 0000000..a01b64b --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/lib/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 82 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/cache/modules/cache/lib +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/lib/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/lib/.svn/entries new file mode 100644 index 0000000..b8c57a6 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/lib/.svn/entries @@ -0,0 +1,28 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/cache/modules/cache/lib +http://svn.symfony-project.com + + + +2006-09-25T14:25:14.024909Z +2169 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/all-wcprops new file mode 100644 index 0000000..d75da4f --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/all-wcprops @@ -0,0 +1,125 @@ +K 25 +svn:wc:ra_dav:version-url +V 88 +/!svn/ver/31928/branches/1.4/test/functional/fixtures/apps/cache/modules/cache/templates +END +componentSuccess.php +K 25 +svn:wc:ra_dav:version-url +V 109 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/cache/modules/cache/templates/componentSuccess.php +END +_partial.php +K 25 +svn:wc:ra_dav:version-url +V 101 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/cache/modules/cache/templates/_partial.php +END +indexSuccess.php +K 25 +svn:wc:ra_dav:version-url +V 105 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/cache/modules/cache/templates/indexSuccess.php +END +_component.php +K 25 +svn:wc:ra_dav:version-url +V 103 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/cache/modules/cache/templates/_component.php +END +_contextualPartial.php +K 25 +svn:wc:ra_dav:version-url +V 111 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/cache/modules/cache/templates/_contextualPartial.php +END +_cacheablePartial.php +K 25 +svn:wc:ra_dav:version-url +V 110 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/cache/modules/cache/templates/_cacheablePartial.php +END +listSuccess.php +K 25 +svn:wc:ra_dav:version-url +V 104 +/!svn/ver/24615/branches/1.4/test/functional/fixtures/apps/cache/modules/cache/templates/listSuccess.php +END +pageSuccess.php +K 25 +svn:wc:ra_dav:version-url +V 104 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/cache/modules/cache/templates/pageSuccess.php +END +anotherPartialSuccess.php +K 25 +svn:wc:ra_dav:version-url +V 114 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/cache/modules/cache/templates/anotherPartialSuccess.php +END +actionSuccess.php +K 25 +svn:wc:ra_dav:version-url +V 106 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/cache/modules/cache/templates/actionSuccess.php +END +_contextualComponent.php +K 25 +svn:wc:ra_dav:version-url +V 113 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/cache/modules/cache/templates/_contextualComponent.php +END +_cacheableComponent.php +K 25 +svn:wc:ra_dav:version-url +V 112 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/cache/modules/cache/templates/_cacheableComponent.php +END +_contextualCacheablePartial.php +K 25 +svn:wc:ra_dav:version-url +V 120 +/!svn/ver/31928/branches/1.4/test/functional/fixtures/apps/cache/modules/cache/templates/_contextualCacheablePartial.php +END +imageSuccess.php +K 25 +svn:wc:ra_dav:version-url +V 105 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/cache/modules/cache/templates/imageSuccess.php +END +specificCacheKeySuccess.php +K 25 +svn:wc:ra_dav:version-url +V 116 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/cache/modules/cache/templates/specificCacheKeySuccess.php +END +_contextualCacheableComponent.php +K 25 +svn:wc:ra_dav:version-url +V 122 +/!svn/ver/31928/branches/1.4/test/functional/fixtures/apps/cache/modules/cache/templates/_contextualCacheableComponent.php +END +multiBisSuccess.php +K 25 +svn:wc:ra_dav:version-url +V 108 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/cache/modules/cache/templates/multiBisSuccess.php +END +multiSuccess.php +K 25 +svn:wc:ra_dav:version-url +V 105 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/cache/modules/cache/templates/multiSuccess.php +END +_anotherCacheablePartial.php +K 25 +svn:wc:ra_dav:version-url +V 117 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/cache/modules/cache/templates/_anotherCacheablePartial.php +END +partialSuccess.php +K 25 +svn:wc:ra_dav:version-url +V 107 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/cache/modules/cache/templates/partialSuccess.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/entries new file mode 100644 index 0000000..2e9914b --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/entries @@ -0,0 +1,708 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/cache/modules/cache/templates +http://svn.symfony-project.com + + + +2011-01-29T16:02:51.990563Z +31928 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +componentSuccess.php +file + + + + +2012-05-10T18:40:59.945552Z +de7286e76d3766e61cf1e77d791f8e47 +2008-03-03T14:00:44.579520Z +7725 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +186 + +_partial.php +file + + + + +2012-05-10T18:40:59.941551Z +aaca03f968af8d0466b6dc4e3ce72631 +2006-10-05T09:03:13.711672Z +2319 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +30 + +indexSuccess.php +file + + + + +2012-05-10T18:40:59.945552Z +73ae51229398f7487effde7101dec594 +2006-09-25T14:25:14.024909Z +2169 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +47 + +_component.php +file + + + + +2012-05-10T18:40:59.957550Z +1d31bca8de88aae10092c727bef3a4b2 +2006-10-05T09:03:13.711672Z +2319 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +196 + +_contextualPartial.php +file + + + + +2012-05-10T18:40:59.957550Z +5d5947bd238086e73733020f0f507060 +2006-10-05T09:19:53.022006Z +2320 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +40 + +_cacheablePartial.php +file + + + + +2012-05-10T18:40:59.961551Z +a2c010a71e758967bfd465650733db38 +2008-03-03T14:27:29.142085Z +7729 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +355 + +listSuccess.php +file + + + + +2012-05-10T18:40:59.969551Z +1034fc305936b15c313c63ad09494cc1 +2009-11-30T22:30:46.362071Z +24615 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +43 + +pageSuccess.php +file + + + + +2012-05-10T18:40:59.969551Z +6badc03af2f2dcd068f6ec228794e482 +2006-09-25T14:25:14.024909Z +2169 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +13 + +anotherPartialSuccess.php +file + + + + +2012-05-10T18:40:59.977550Z +c326c19356d9c797039b26902ac04221 +2008-03-03T14:21:58.183793Z +7728 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +98 + +actionSuccess.php +file + + + + +2012-05-10T18:40:59.973551Z +e64b2a6dec0337832000bf7e9ed1bac0 +2006-10-28T18:23:45.498285Z +2558 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +25 + +_contextualComponent.php +file + + + + +2012-05-10T18:40:59.985548Z +a95a9022d07ed91df1b8054db1d6322a +2006-10-05T09:03:13.711672Z +2319 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +206 + +_cacheableComponent.php +file + + + + +2012-05-10T18:40:59.985548Z +47ad0fa4da84de7c37894c7cbf29a30f +2008-03-03T14:27:29.142085Z +7729 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +343 + +_contextualCacheablePartial.php +file + + + + +2012-05-10T18:40:59.993551Z +f69a5c505c5d9195f0790ef222525ffc +2011-01-29T16:02:51.990563Z +31928 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +172 + +imageSuccess.php +file + + + + +2012-05-10T18:40:59.993551Z +bd0468714629ba5afb0fa0782dc0d509 +2006-12-19T22:09:30.282243Z +3098 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +20 + +specificCacheKeySuccess.php +file + + + + +2012-05-10T18:40:59.993551Z +1e3d5659b64ca695dc6003abfd79bf97 +2006-10-27T12:29:41.854269Z +2541 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +735 + +_contextualCacheableComponent.php +file + + + + +2012-05-10T18:40:59.993551Z +d6addb48a34c80f0f4724e65ef50f46d +2011-01-29T16:02:51.990563Z +31928 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +251 + +multiBisSuccess.php +file + + + + +2012-05-10T18:40:59.993551Z +c78cc39e329ebdbc04510b0f6bbf36a3 +2008-03-03T14:00:44.579520Z +7725 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +469 + +multiSuccess.php +file + + + + +2012-05-10T18:41:00.005556Z +88c0867cde80871d117ceede10a89abf +2006-10-05T09:19:53.022006Z +2320 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +1542 + +_anotherCacheablePartial.php +file + + + + +2012-05-10T18:41:00.005556Z +d135f386eeaf15078254bc647e214127 +2008-03-03T14:27:29.142085Z +7729 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +508 + +partialSuccess.php +file + + + + +2012-05-10T18:41:00.005556Z +789bc23558c6580655113e0f2051aa3c +2008-03-03T14:21:58.183793Z +7728 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +84 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/_anotherCacheablePartial.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/_anotherCacheablePartial.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/_anotherCacheablePartial.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/_cacheableComponent.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/_cacheableComponent.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/_cacheableComponent.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/_cacheablePartial.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/_cacheablePartial.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/_cacheablePartial.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/_component.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/_component.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/_component.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/_contextualCacheableComponent.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/_contextualCacheableComponent.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/_contextualCacheableComponent.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/_contextualCacheablePartial.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/_contextualCacheablePartial.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/_contextualCacheablePartial.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/_contextualComponent.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/_contextualComponent.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/_contextualComponent.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/_contextualPartial.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/_contextualPartial.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/_contextualPartial.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/_partial.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/_partial.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/_partial.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/actionSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/actionSuccess.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/actionSuccess.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/anotherPartialSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/anotherPartialSuccess.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/anotherPartialSuccess.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/componentSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/componentSuccess.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/componentSuccess.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/imageSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/imageSuccess.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/imageSuccess.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/indexSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/indexSuccess.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/indexSuccess.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/listSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/listSuccess.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/listSuccess.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/multiBisSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/multiBisSuccess.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/multiBisSuccess.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/multiSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/multiSuccess.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/multiSuccess.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/pageSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/pageSuccess.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/pageSuccess.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/partialSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/partialSuccess.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/partialSuccess.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/specificCacheKeySuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/specificCacheKeySuccess.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/prop-base/specificCacheKeySuccess.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/_anotherCacheablePartial.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/_anotherCacheablePartial.php.svn-base new file mode 100644 index 0000000..e3f6d98 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/_anotherCacheablePartial.php.svn-base @@ -0,0 +1,10 @@ + + + +
            OK
            + + + +
            OK
            + +Another Partial diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/_cacheableComponent.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/_cacheableComponent.php.svn-base new file mode 100644 index 0000000..5db8dec --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/_cacheableComponent.php.svn-base @@ -0,0 +1,6 @@ + + + +
            OK
            + +Component diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/_cacheablePartial.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/_cacheablePartial.php.svn-base new file mode 100644 index 0000000..8165bfa --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/_cacheablePartial.php.svn-base @@ -0,0 +1,8 @@ + + + +
            OK
            + +
            + +Partial diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/_component.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/_component.php.svn-base new file mode 100644 index 0000000..1ff855f --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/_component.php.svn-base @@ -0,0 +1 @@ +
            OK
            diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/_contextualCacheableComponent.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/_contextualCacheableComponent.php.svn-base new file mode 100644 index 0000000..d4360dc --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/_contextualCacheableComponent.php.svn-base @@ -0,0 +1 @@ +
            getTitle() ?>
            diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/_contextualCacheablePartial.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/_contextualCacheablePartial.php.svn-base new file mode 100644 index 0000000..dfc0f42 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/_contextualCacheablePartial.php.svn-base @@ -0,0 +1 @@ +
            getTitle() ?>
            diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/_contextualComponent.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/_contextualComponent.php.svn-base new file mode 100644 index 0000000..2b70ac0 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/_contextualComponent.php.svn-base @@ -0,0 +1 @@ +
            OK
            diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/_contextualPartial.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/_contextualPartial.php.svn-base new file mode 100644 index 0000000..4c7dcfb --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/_contextualPartial.php.svn-base @@ -0,0 +1 @@ +
            OK
            diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/_partial.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/_partial.php.svn-base new file mode 100644 index 0000000..18a540a --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/_partial.php.svn-base @@ -0,0 +1 @@ +
            OK
            diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/actionSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/actionSuccess.php.svn-base new file mode 100644 index 0000000..5cb5259 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/actionSuccess.php.svn-base @@ -0,0 +1 @@ +Action cache HTML content \ No newline at end of file diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/anotherPartialSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/anotherPartialSuccess.php.svn-base new file mode 100644 index 0000000..d387fe2 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/anotherPartialSuccess.php.svn-base @@ -0,0 +1 @@ +
            diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/componentSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/componentSuccess.php.svn-base new file mode 100644 index 0000000..5f0736b --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/componentSuccess.php.svn-base @@ -0,0 +1,2 @@ +
            +
            diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/imageSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/imageSuccess.php.svn-base new file mode 100644 index 0000000..8cb71a7 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/imageSuccess.php.svn-base @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/indexSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/indexSuccess.php.svn-base new file mode 100644 index 0000000..2d5bc56 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/indexSuccess.php.svn-base @@ -0,0 +1,3 @@ +

            Module cache

            + +

            Congratulations!

            diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/listSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/listSuccess.php.svn-base new file mode 100644 index 0000000..ddc89ec --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/listSuccess.php.svn-base @@ -0,0 +1 @@ + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/multiBisSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/multiBisSuccess.php.svn-base new file mode 100644 index 0000000..91d379d --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/multiBisSuccess.php.svn-base @@ -0,0 +1,10 @@ + + + +
            + +
            + +
            + +
            diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/multiSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/multiSuccess.php.svn-base new file mode 100644 index 0000000..083bc44 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/multiSuccess.php.svn-base @@ -0,0 +1,30 @@ +
            + +
            + +
            'varParam')) ?>
            + + +
            + +
            + +
            'varParam')) ?>
            + + +
            + +
            'varParam')) ?>
            + +
            + +
            'varParam')) ?>
            + + +
            + +
            'varParam')) ?>
            + +
            + +
            'varParam')) ?>
            diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/pageSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/pageSuccess.php.svn-base new file mode 100644 index 0000000..36b7c21 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/pageSuccess.php.svn-base @@ -0,0 +1 @@ +page in cache \ No newline at end of file diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/partialSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/partialSuccess.php.svn-base new file mode 100644 index 0000000..6df7d9a --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/partialSuccess.php.svn-base @@ -0,0 +1 @@ +
            diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/specificCacheKeySuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/specificCacheKeySuccess.php.svn-base new file mode 100644 index 0000000..40a7609 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/.svn/text-base/specificCacheKeySuccess.php.svn-base @@ -0,0 +1,5 @@ +
            'varParam', 'sf_cache_key' => 'cacheablePartial')) ?>
            +
            'varParam', 'sf_cache_key' => 'contextualCacheablePartial')) ?>
            + +
            'varParam', 'sf_cache_key' => 'cacheableComponent')) ?>
            +
            'varParam', 'sf_cache_key' => 'contextualCacheableComponent')) ?>
            diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/_anotherCacheablePartial.php b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/_anotherCacheablePartial.php new file mode 100644 index 0000000..e3f6d98 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/_anotherCacheablePartial.php @@ -0,0 +1,10 @@ + + + +
            OK
            + + + +
            OK
            + +Another Partial diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/_cacheableComponent.php b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/_cacheableComponent.php new file mode 100644 index 0000000..5db8dec --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/_cacheableComponent.php @@ -0,0 +1,6 @@ + + + +
            OK
            + +Component diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/_cacheablePartial.php b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/_cacheablePartial.php new file mode 100644 index 0000000..8165bfa --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/_cacheablePartial.php @@ -0,0 +1,8 @@ + + + +
            OK
            + +
            + +Partial diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/_component.php b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/_component.php new file mode 100644 index 0000000..1ff855f --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/_component.php @@ -0,0 +1 @@ +
            OK
            diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/_contextualCacheableComponent.php b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/_contextualCacheableComponent.php new file mode 100644 index 0000000..d4360dc --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/_contextualCacheableComponent.php @@ -0,0 +1 @@ +
            getTitle() ?>
            diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/_contextualCacheablePartial.php b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/_contextualCacheablePartial.php new file mode 100644 index 0000000..dfc0f42 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/_contextualCacheablePartial.php @@ -0,0 +1 @@ +
            getTitle() ?>
            diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/_contextualComponent.php b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/_contextualComponent.php new file mode 100644 index 0000000..2b70ac0 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/_contextualComponent.php @@ -0,0 +1 @@ +
            OK
            diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/_contextualPartial.php b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/_contextualPartial.php new file mode 100644 index 0000000..4c7dcfb --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/_contextualPartial.php @@ -0,0 +1 @@ +
            OK
            diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/_partial.php b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/_partial.php new file mode 100644 index 0000000..18a540a --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/_partial.php @@ -0,0 +1 @@ +
            OK
            diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/actionSuccess.php b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/actionSuccess.php new file mode 100644 index 0000000..5cb5259 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/actionSuccess.php @@ -0,0 +1 @@ +Action cache HTML content \ No newline at end of file diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/anotherPartialSuccess.php b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/anotherPartialSuccess.php new file mode 100644 index 0000000..d387fe2 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/anotherPartialSuccess.php @@ -0,0 +1 @@ +
            diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/componentSuccess.php b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/componentSuccess.php new file mode 100644 index 0000000..5f0736b --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/componentSuccess.php @@ -0,0 +1,2 @@ +
            +
            diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/imageSuccess.php b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/imageSuccess.php new file mode 100644 index 0000000..8cb71a7 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/imageSuccess.php @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/indexSuccess.php b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/indexSuccess.php new file mode 100644 index 0000000..2d5bc56 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/indexSuccess.php @@ -0,0 +1,3 @@ +

            Module cache

            + +

            Congratulations!

            diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/listSuccess.php b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/listSuccess.php new file mode 100644 index 0000000..ddc89ec --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/listSuccess.php @@ -0,0 +1 @@ + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/multiBisSuccess.php b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/multiBisSuccess.php new file mode 100644 index 0000000..91d379d --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/multiBisSuccess.php @@ -0,0 +1,10 @@ + + + +
            + +
            + +
            + +
            diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/multiSuccess.php b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/multiSuccess.php new file mode 100644 index 0000000..083bc44 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/multiSuccess.php @@ -0,0 +1,30 @@ +
            + +
            + +
            'varParam')) ?>
            + + +
            + +
            + +
            'varParam')) ?>
            + + +
            + +
            'varParam')) ?>
            + +
            + +
            'varParam')) ?>
            + + +
            + +
            'varParam')) ?>
            + +
            + +
            'varParam')) ?>
            diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/pageSuccess.php b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/pageSuccess.php new file mode 100644 index 0000000..36b7c21 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/pageSuccess.php @@ -0,0 +1 @@ +page in cache \ No newline at end of file diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/partialSuccess.php b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/partialSuccess.php new file mode 100644 index 0000000..6df7d9a --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/partialSuccess.php @@ -0,0 +1 @@ +
            diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/specificCacheKeySuccess.php b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/specificCacheKeySuccess.php new file mode 100644 index 0000000..40a7609 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/cache/templates/specificCacheKeySuccess.php @@ -0,0 +1,5 @@ +
            'varParam', 'sf_cache_key' => 'cacheablePartial')) ?>
            +
            'varParam', 'sf_cache_key' => 'contextualCacheablePartial')) ?>
            + +
            'varParam', 'sf_cache_key' => 'cacheableComponent')) ?>
            +
            'varParam', 'sf_cache_key' => 'contextualCacheableComponent')) ?>
            diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/.svn/all-wcprops new file mode 100644 index 0000000..f4bf966 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 82 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/cache/modules/httpcache +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/.svn/entries new file mode 100644 index 0000000..baab046 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/.svn/entries @@ -0,0 +1,37 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/cache/modules/httpcache +http://svn.symfony-project.com + + + +2009-09-11T07:38:24.815935Z +21884 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions +dir + +config +dir + +templates +dir + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/actions/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/actions/.svn/all-wcprops new file mode 100644 index 0000000..0a9b124 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/actions/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 90 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/cache/modules/httpcache/actions +END +actions.class.php +K 25 +svn:wc:ra_dav:version-url +V 108 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/cache/modules/httpcache/actions/actions.class.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/actions/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/actions/.svn/entries new file mode 100644 index 0000000..a6c21bf --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/actions/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/cache/modules/httpcache/actions +http://svn.symfony-project.com + + + +2008-11-30T21:34:25.835660Z +13564 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions.class.php +file + + + + +2012-05-10T18:41:00.061551Z +4d2f54a7b6d6a90cdb9799cbb82fc271 +2008-11-30T21:34:25.835660Z +13564 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +633 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/actions/.svn/prop-base/actions.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/actions/.svn/prop-base/actions.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/actions/.svn/prop-base/actions.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/actions/.svn/text-base/actions.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/actions/.svn/text-base/actions.class.php.svn-base new file mode 100644 index 0000000..dfc903f --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/actions/.svn/text-base/actions.class.php.svn-base @@ -0,0 +1,28 @@ +setTemplate('index'); + } + + public function executePage2(sfWebRequest $request) + { + $this->setTemplate('index'); + } + + public function executePage3(sfWebRequest $request) + { + $this->getResponse()->setHttpHeader('Last-Modified', sfWebResponse::getDate(time() - 86400)); + + $this->setTemplate('index'); + } + + public function executePage4(sfWebRequest $request) + { + $this->getResponse()->setHttpHeader('Last-Modified', sfWebResponse::getDate(time() - 86400)); + + $this->setTemplate('index'); + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/actions/actions.class.php b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/actions/actions.class.php new file mode 100644 index 0000000..dfc903f --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/actions/actions.class.php @@ -0,0 +1,28 @@ +setTemplate('index'); + } + + public function executePage2(sfWebRequest $request) + { + $this->setTemplate('index'); + } + + public function executePage3(sfWebRequest $request) + { + $this->getResponse()->setHttpHeader('Last-Modified', sfWebResponse::getDate(time() - 86400)); + + $this->setTemplate('index'); + } + + public function executePage4(sfWebRequest $request) + { + $this->getResponse()->setHttpHeader('Last-Modified', sfWebResponse::getDate(time() - 86400)); + + $this->setTemplate('index'); + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/config/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/config/.svn/all-wcprops new file mode 100644 index 0000000..75d3fdf --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/config/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 89 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/cache/modules/httpcache/config +END +cache.yml +K 25 +svn:wc:ra_dav:version-url +V 99 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/cache/modules/httpcache/config/cache.yml +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/config/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/config/.svn/entries new file mode 100644 index 0000000..85da9d8 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/config/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/cache/modules/httpcache/config +http://svn.symfony-project.com + + + +2009-09-11T07:38:24.815935Z +21884 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +cache.yml +file + + + + +2012-05-10T18:41:00.089557Z +319eff10f632cfc3b29ae461e6e446cb +2009-09-11T07:38:24.815935Z +21884 +fabien + + + + + + + + + + + + + + + + + + + + + +165 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/config/.svn/text-base/cache.yml.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/config/.svn/text-base/cache.yml.svn-base new file mode 100644 index 0000000..8e8e7dd --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/config/.svn/text-base/cache.yml.svn-base @@ -0,0 +1,11 @@ +page2: + client_lifetime: 86400 + +page3: + client_lifetime: 86400 + +all: + enabled: true + with_layout: true + lifetime: 86400 + client_lifetime: 0 diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/config/cache.yml b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/config/cache.yml new file mode 100644 index 0000000..8e8e7dd --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/config/cache.yml @@ -0,0 +1,11 @@ +page2: + client_lifetime: 86400 + +page3: + client_lifetime: 86400 + +all: + enabled: true + with_layout: true + lifetime: 86400 + client_lifetime: 0 diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/templates/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/templates/.svn/all-wcprops new file mode 100644 index 0000000..f30f3f6 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/templates/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 92 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/cache/modules/httpcache/templates +END +indexSuccess.php +K 25 +svn:wc:ra_dav:version-url +V 109 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/cache/modules/httpcache/templates/indexSuccess.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/templates/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/templates/.svn/entries new file mode 100644 index 0000000..2bd8701 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/templates/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/cache/modules/httpcache/templates +http://svn.symfony-project.com + + + +2008-11-30T21:34:25.835660Z +13564 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +indexSuccess.php +file + + + + +2012-05-10T18:41:00.129548Z +ed076287532e86365e841e92bfc50d8c +2008-11-30T21:34:25.835660Z +13564 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +12 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/templates/.svn/prop-base/indexSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/templates/.svn/prop-base/indexSuccess.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/templates/.svn/prop-base/indexSuccess.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/templates/.svn/text-base/indexSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/templates/.svn/text-base/indexSuccess.php.svn-base new file mode 100644 index 0000000..c57eff5 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/templates/.svn/text-base/indexSuccess.php.svn-base @@ -0,0 +1 @@ +Hello World! \ No newline at end of file diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/templates/indexSuccess.php b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/templates/indexSuccess.php new file mode 100644 index 0000000..c57eff5 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/httpcache/templates/indexSuccess.php @@ -0,0 +1 @@ +Hello World! \ No newline at end of file diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/.svn/all-wcprops new file mode 100644 index 0000000..718e687 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 80 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/cache/modules/nocache +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/.svn/entries new file mode 100644 index 0000000..821ce7e --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/.svn/entries @@ -0,0 +1,40 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/cache/modules/nocache +http://svn.symfony-project.com + + + +2009-09-11T07:38:24.815935Z +21884 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions +dir + +config +dir + +lib +dir + +templates +dir + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/actions/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/actions/.svn/all-wcprops new file mode 100644 index 0000000..e4c1297 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/actions/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 88 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/cache/modules/nocache/actions +END +actions.class.php +K 25 +svn:wc:ra_dav:version-url +V 106 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/cache/modules/nocache/actions/actions.class.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/actions/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/actions/.svn/entries new file mode 100644 index 0000000..869f17b --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/actions/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/cache/modules/nocache/actions +http://svn.symfony-project.com + + + +2006-10-02T15:22:13.535599Z +2288 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions.class.php +file + + + + +2012-05-10T18:40:59.029549Z +5d5cbe01a2e48d071d9e0d6d9145014f +2006-10-02T15:22:13.535599Z +2288 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +361 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/actions/.svn/prop-base/actions.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/actions/.svn/prop-base/actions.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/actions/.svn/prop-base/actions.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/actions/.svn/text-base/actions.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/actions/.svn/text-base/actions.class.php.svn-base new file mode 100644 index 0000000..4ef4223 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/actions/.svn/text-base/actions.class.php.svn-base @@ -0,0 +1,20 @@ + + * @version SVN: $Id$ + */ +class nocacheActions extends sfActions +{ + /** + * Executes index action + * + */ + public function executeIndex() + { + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/actions/actions.class.php b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/actions/actions.class.php new file mode 100644 index 0000000..438c2cd --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/actions/actions.class.php @@ -0,0 +1,20 @@ + + * @version SVN: $Id: actions.class.php 2288 2006-10-02 15:22:13Z fabien $ + */ +class nocacheActions extends sfActions +{ + /** + * Executes index action + * + */ + public function executeIndex() + { + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/config/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/config/.svn/all-wcprops new file mode 100644 index 0000000..f022300 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/config/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 87 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/cache/modules/nocache/config +END +cache.yml +K 25 +svn:wc:ra_dav:version-url +V 97 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/cache/modules/nocache/config/cache.yml +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/config/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/config/.svn/entries new file mode 100644 index 0000000..8f40474 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/config/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/cache/modules/nocache/config +http://svn.symfony-project.com + + + +2009-09-11T07:38:24.815935Z +21884 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +cache.yml +file + + + + +2012-05-10T18:40:59.213550Z +24b2c48322a76bfda8a4234d7a66fe18 +2009-09-11T07:38:24.815935Z +21884 +fabien + + + + + + + + + + + + + + + + + + + + + +23 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/config/.svn/text-base/cache.yml.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/config/.svn/text-base/cache.yml.svn-base new file mode 100644 index 0000000..28a4b76 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/config/.svn/text-base/cache.yml.svn-base @@ -0,0 +1,2 @@ +all: + enabled: false diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/config/cache.yml b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/config/cache.yml new file mode 100644 index 0000000..28a4b76 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/config/cache.yml @@ -0,0 +1,2 @@ +all: + enabled: false diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/lib/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/lib/.svn/all-wcprops new file mode 100644 index 0000000..2f47fab --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/lib/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 84 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/cache/modules/nocache/lib +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/lib/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/lib/.svn/entries new file mode 100644 index 0000000..d40b35f --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/lib/.svn/entries @@ -0,0 +1,28 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/cache/modules/nocache/lib +http://svn.symfony-project.com + + + +2006-09-25T14:25:14.024909Z +2169 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/templates/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/templates/.svn/all-wcprops new file mode 100644 index 0000000..2252101 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/templates/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 90 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/cache/modules/nocache/templates +END +indexSuccess.php +K 25 +svn:wc:ra_dav:version-url +V 107 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/cache/modules/nocache/templates/indexSuccess.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/templates/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/templates/.svn/entries new file mode 100644 index 0000000..c301ae7 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/templates/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/cache/modules/nocache/templates +http://svn.symfony-project.com + + + +2006-09-25T14:25:14.024909Z +2169 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +indexSuccess.php +file + + + + +2012-05-10T18:40:59.317551Z +e19b61439fdbd6113a5f26599bc7226e +2006-09-25T14:25:14.024909Z +2169 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +49 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/templates/.svn/prop-base/indexSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/templates/.svn/prop-base/indexSuccess.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/templates/.svn/prop-base/indexSuccess.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/templates/.svn/text-base/indexSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/templates/.svn/text-base/indexSuccess.php.svn-base new file mode 100644 index 0000000..91e624b --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/templates/.svn/text-base/indexSuccess.php.svn-base @@ -0,0 +1,3 @@ +

            Module nocache

            + +

            Congratulations!

            diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/templates/indexSuccess.php b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/templates/indexSuccess.php new file mode 100644 index 0000000..91e624b --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/modules/nocache/templates/indexSuccess.php @@ -0,0 +1,3 @@ +

            Module nocache

            + +

            Congratulations!

            diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/templates/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/cache/templates/.svn/all-wcprops new file mode 100644 index 0000000..ef1c83d --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/templates/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 74 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/cache/templates +END +layout.php +K 25 +svn:wc:ra_dav:version-url +V 85 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/cache/templates/layout.php +END +image.php +K 25 +svn:wc:ra_dav:version-url +V 84 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/cache/templates/image.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/templates/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/cache/templates/.svn/entries new file mode 100644 index 0000000..18cd623 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/templates/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/cache/templates +http://svn.symfony-project.com + + + +2009-04-30T07:13:08.234464Z +17794 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +layout.php +file + + + + +2012-05-10T18:41:00.213548Z +cd252a831aec4a39e55779656b7b16b2 +2009-04-30T07:13:08.234464Z +17794 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +709 + +image.php +file + + + + +2012-05-10T18:41:00.213548Z +57128b4e8104d62b4b5fca3d2061a03e +2008-04-02T08:19:06.897170Z +8201 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +25 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/templates/.svn/prop-base/image.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/templates/.svn/prop-base/image.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/templates/.svn/prop-base/image.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/templates/.svn/prop-base/layout.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/templates/.svn/prop-base/layout.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/templates/.svn/prop-base/layout.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/templates/.svn/text-base/image.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/templates/.svn/text-base/image.php.svn-base new file mode 100644 index 0000000..185daeb --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/templates/.svn/text-base/image.php.svn-base @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/templates/.svn/text-base/layout.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/cache/templates/.svn/text-base/layout.php.svn-base new file mode 100644 index 0000000..89c6db6 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/templates/.svn/text-base/layout.php.svn-base @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + +
            +
            +
            + + + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/templates/image.php b/lib/vendor/symfony/test/functional/fixtures/apps/cache/templates/image.php new file mode 100644 index 0000000..185daeb --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/templates/image.php @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/cache/templates/layout.php b/lib/vendor/symfony/test/functional/fixtures/apps/cache/templates/layout.php new file mode 100644 index 0000000..89c6db6 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/cache/templates/layout.php @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + +
            +
            +
            + + + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/.svn/all-wcprops new file mode 100644 index 0000000..8e226ae --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 67 +/!svn/ver/33363/branches/1.4/test/functional/fixtures/apps/frontend +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/.svn/entries new file mode 100644 index 0000000..8f7e5d6 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/.svn/entries @@ -0,0 +1,43 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend +http://svn.symfony-project.com + + + +2012-03-08T13:55:43.701792Z +33363 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +i18n +dir + +config +dir + +lib +dir + +modules +dir + +templates +dir + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/.svn/all-wcprops new file mode 100644 index 0000000..f05277c --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/.svn/all-wcprops @@ -0,0 +1,59 @@ +K 25 +svn:wc:ra_dav:version-url +V 74 +/!svn/ver/33363/branches/1.4/test/functional/fixtures/apps/frontend/config +END +factories.yml +K 25 +svn:wc:ra_dav:version-url +V 88 +/!svn/ver/24434/branches/1.4/test/functional/fixtures/apps/frontend/config/factories.yml +END +app.yml +K 25 +svn:wc:ra_dav:version-url +V 82 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/config/app.yml +END +settings.yml +K 25 +svn:wc:ra_dav:version-url +V 87 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/config/settings.yml +END +frontendConfiguration.class.php +K 25 +svn:wc:ra_dav:version-url +V 106 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/config/frontendConfiguration.class.php +END +cache.yml +K 25 +svn:wc:ra_dav:version-url +V 84 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/config/cache.yml +END +routing.yml +K 25 +svn:wc:ra_dav:version-url +V 86 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/config/routing.yml +END +security.yml +K 25 +svn:wc:ra_dav:version-url +V 87 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/config/security.yml +END +filters.yml +K 25 +svn:wc:ra_dav:version-url +V 86 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/config/filters.yml +END +view.yml +K 25 +svn:wc:ra_dav:version-url +V 83 +/!svn/ver/33363/branches/1.4/test/functional/fixtures/apps/frontend/config/view.yml +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/.svn/entries new file mode 100644 index 0000000..ec77bb7 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/.svn/entries @@ -0,0 +1,337 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/config +http://svn.symfony-project.com + + + +2012-03-08T13:55:43.701792Z +33363 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +factories.yml +file + + + + +2012-05-10T18:40:53.121550Z +a66e8e26cd1d4950fd440da104aedab8 +2009-11-26T11:52:47.753777Z +24434 +fabien + + + + + + + + + + + + + + + + + + + + + +277 + +app.yml +file + + + + +2012-05-10T18:40:53.121550Z +6f622a40f3255229a7ce20d54358432a +2006-09-13T21:10:46.512664Z +2069 +fabien + + + + + + + + + + + + + + + + + + + + + +22 + +settings.yml +file + + + + +2012-05-10T18:40:53.133551Z +cd769b72cb042853cf2552c64e8d0678 +2009-09-11T07:38:24.815935Z +21884 +fabien + + + + + + + + + + + + + + + + + + + + + +653 + +frontendConfiguration.class.php +file + + + + +2012-05-10T18:40:53.133551Z +d8f80a53b72f038cf36abf0bced07cf3 +2008-11-01T12:02:35.268252Z +12531 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +1107 + +cache.yml +file + + + + +2012-05-10T18:40:53.133551Z +e8bf44a2ebd40560e059ae7ee72f6433 +2009-09-11T07:38:24.815935Z +21884 +fabien + + + + + + + + + + + + + + + + + + + + + +72 + +routing.yml +file + + + + +2012-05-10T18:40:53.221551Z +62c8b907c6b322bef11e890de5e19c2e +2008-04-03T10:47:59.008446Z +8227 +fabien + + + + + + + + + + + + + + + + + + + + + +357 + +security.yml +file + + + + +2012-05-10T18:40:53.221551Z +a66fd43f8b3cc8d473e52a49d4938d99 +2009-09-11T07:38:24.815935Z +21884 +fabien + + + + + + + + + + + + + + + + + + + + + +28 + +filters.yml +file + + + + +2012-05-10T18:40:53.221551Z +6571e78457bfa6db66f50fa297377026 +2009-04-30T07:13:08.234464Z +17794 +fabien + + + + + + + + + + + + + + + + + + + + + +143 + +dirmyconfig +dir + +view.yml +file + + + + +2012-05-10T18:40:53.221551Z +8059cce792367ee2dac1a1aaa5e5083a +2012-03-08T13:55:43.701792Z +33363 +fabien + + + + + + + + + + + + + + + + + + + + + +421 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/.svn/prop-base/frontendConfiguration.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/.svn/prop-base/frontendConfiguration.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/.svn/prop-base/frontendConfiguration.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/.svn/text-base/app.yml.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/.svn/text-base/app.yml.svn-base new file mode 100644 index 0000000..24e2621 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/.svn/text-base/app.yml.svn-base @@ -0,0 +1,2 @@ +# default values +all: diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/.svn/text-base/cache.yml.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/.svn/text-base/cache.yml.svn-base new file mode 100644 index 0000000..c120397 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/.svn/text-base/cache.yml.svn-base @@ -0,0 +1,4 @@ +default: + enabled: false + with_layout: false + lifetime: 86400 diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/.svn/text-base/factories.yml.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/.svn/text-base/factories.yml.svn-base new file mode 100644 index 0000000..1b33b56 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/.svn/text-base/factories.yml.svn-base @@ -0,0 +1,17 @@ +prod: + logger: + class: sfNoLogger + param: + level: err + loggers: ~ + +test: + response: + class: sfWebResponse + param: + send_http_headers: false + + storage: + class: sfSessionTestStorage + param: + session_path: %SF_TEST_CACHE_DIR%/sessions diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/.svn/text-base/filters.yml.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/.svn/text-base/filters.yml.svn-base new file mode 100644 index 0000000..3145b07 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/.svn/text-base/filters.yml.svn-base @@ -0,0 +1,11 @@ +rendering: ~ +security: ~ + +# generally, you will want to insert your own filters here +myFilter: + class: myFilter + + +cache: ~ + +execution: ~ diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/.svn/text-base/frontendConfiguration.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/.svn/text-base/frontendConfiguration.class.php.svn-base new file mode 100644 index 0000000..58e5205 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/.svn/text-base/frontendConfiguration.class.php.svn-base @@ -0,0 +1,42 @@ +dispatcher->connect('view.configure_format', array($this, 'configure_format_foo')); + $this->dispatcher->connect('request.filter_parameters', array($this, 'filter_parameters')); + $this->dispatcher->connect('view.configure_format', array($this, 'configure_iphone_format')); + } + + public function filter_parameters(sfEvent $event, $parameters) + { + if (false !== stripos($event->getSubject()->getHttpHeader('user-agent'), 'iPhone')) + { + $event->getSubject()->setRequestFormat('iphone'); + } + + return $parameters; + } + + public function configure_iphone_format(sfEvent $event) + { + if ('iphone' == $event['format']) + { + $event['response']->addStylesheet('iphone.css'); + + $event->getSubject()->setDecorator(true); + } + } + + public function configure_format_foo(sfEvent $event) + { + if ('foo' != $event['format']) + { + return; + } + + $event['response']->setHttpHeader('x-foo', 'true'); + $event->getSubject()->setExtension('.php'); + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/.svn/text-base/routing.yml.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/.svn/text-base/routing.yml.svn-base new file mode 100644 index 0000000..211d930 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/.svn/text-base/routing.yml.svn-base @@ -0,0 +1,19 @@ +format: + url: /format_test.:sf_format + param: { module: format, action: index, sf_format: html } + +# default rules +homepage: + url: / + param: { module: default, action: index } + +default_symfony: + url: /symfony/:action/* + param: { module: default } + +default_index: + url: /:module + param: { action: index } + +default: + url: /:module/:action/* diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/.svn/text-base/security.yml.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/.svn/text-base/security.yml.svn-base new file mode 100644 index 0000000..2a35e05 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/.svn/text-base/security.yml.svn-base @@ -0,0 +1,2 @@ +default: + is_secure: false diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/.svn/text-base/settings.yml.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/.svn/text-base/settings.yml.svn-base new file mode 100644 index 0000000..97d21a7 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/.svn/text-base/settings.yml.svn-base @@ -0,0 +1,25 @@ +prod: + .settings: + logging_enabled: false + no_script_name: true + +dev: + .settings: + error_reporting: + web_debug: true + cache: false + no_script_name: false + etag: false + +test: + .settings: + error_reporting: + cache: false + web_debug: false + no_script_name: false + etag: false + +all: + .settings: + enabled_modules: [default, autoloadPlugin] + autoloading_functions: [[myAutoload, autoload]] diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/.svn/text-base/view.yml.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/.svn/text-base/view.yml.svn-base new file mode 100644 index 0000000..d690255 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/.svn/text-base/view.yml.svn-base @@ -0,0 +1,24 @@ +default: + http_metas: + content-type: text/html + + metas: + title: symfony project + robots: index, follow + description: symfony project + keywords: symfony, project + language: en + + stylesheets: + - main + - + ie6: + condition: lte IE 6 + - + multiple_media: + media: 'print,handheld' + + javascripts: [ ] + + has_layout: true + layout: layout diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/app.yml b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/app.yml new file mode 100644 index 0000000..24e2621 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/app.yml @@ -0,0 +1,2 @@ +# default values +all: diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/cache.yml b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/cache.yml new file mode 100644 index 0000000..c120397 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/cache.yml @@ -0,0 +1,4 @@ +default: + enabled: false + with_layout: false + lifetime: 86400 diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/dirmyconfig/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/dirmyconfig/.svn/all-wcprops new file mode 100644 index 0000000..3355759 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/dirmyconfig/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 86 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/config/dirmyconfig +END +myconfig.yml +K 25 +svn:wc:ra_dav:version-url +V 99 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/config/dirmyconfig/myconfig.yml +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/dirmyconfig/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/dirmyconfig/.svn/entries new file mode 100644 index 0000000..f3dd2d0 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/dirmyconfig/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/config/dirmyconfig +http://svn.symfony-project.com + + + +2007-01-07T16:41:20.891453Z +3178 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +myconfig.yml +file + + + + +2012-05-10T18:40:53.105550Z +d41d8cd98f00b204e9800998ecf8427e +2007-01-07T16:41:20.891453Z +3178 +fabien + + + + + + + + + + + + + + + + + + + + + +0 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/dirmyconfig/.svn/text-base/myconfig.yml.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/dirmyconfig/.svn/text-base/myconfig.yml.svn-base new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/dirmyconfig/myconfig.yml b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/dirmyconfig/myconfig.yml new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/factories.yml b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/factories.yml new file mode 100644 index 0000000..1b33b56 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/factories.yml @@ -0,0 +1,17 @@ +prod: + logger: + class: sfNoLogger + param: + level: err + loggers: ~ + +test: + response: + class: sfWebResponse + param: + send_http_headers: false + + storage: + class: sfSessionTestStorage + param: + session_path: %SF_TEST_CACHE_DIR%/sessions diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/filters.yml b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/filters.yml new file mode 100644 index 0000000..3145b07 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/filters.yml @@ -0,0 +1,11 @@ +rendering: ~ +security: ~ + +# generally, you will want to insert your own filters here +myFilter: + class: myFilter + + +cache: ~ + +execution: ~ diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/frontendConfiguration.class.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/frontendConfiguration.class.php new file mode 100644 index 0000000..58e5205 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/frontendConfiguration.class.php @@ -0,0 +1,42 @@ +dispatcher->connect('view.configure_format', array($this, 'configure_format_foo')); + $this->dispatcher->connect('request.filter_parameters', array($this, 'filter_parameters')); + $this->dispatcher->connect('view.configure_format', array($this, 'configure_iphone_format')); + } + + public function filter_parameters(sfEvent $event, $parameters) + { + if (false !== stripos($event->getSubject()->getHttpHeader('user-agent'), 'iPhone')) + { + $event->getSubject()->setRequestFormat('iphone'); + } + + return $parameters; + } + + public function configure_iphone_format(sfEvent $event) + { + if ('iphone' == $event['format']) + { + $event['response']->addStylesheet('iphone.css'); + + $event->getSubject()->setDecorator(true); + } + } + + public function configure_format_foo(sfEvent $event) + { + if ('foo' != $event['format']) + { + return; + } + + $event['response']->setHttpHeader('x-foo', 'true'); + $event->getSubject()->setExtension('.php'); + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/routing.yml b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/routing.yml new file mode 100644 index 0000000..211d930 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/routing.yml @@ -0,0 +1,19 @@ +format: + url: /format_test.:sf_format + param: { module: format, action: index, sf_format: html } + +# default rules +homepage: + url: / + param: { module: default, action: index } + +default_symfony: + url: /symfony/:action/* + param: { module: default } + +default_index: + url: /:module + param: { action: index } + +default: + url: /:module/:action/* diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/security.yml b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/security.yml new file mode 100644 index 0000000..2a35e05 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/security.yml @@ -0,0 +1,2 @@ +default: + is_secure: false diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/settings.yml b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/settings.yml new file mode 100644 index 0000000..97d21a7 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/settings.yml @@ -0,0 +1,25 @@ +prod: + .settings: + logging_enabled: false + no_script_name: true + +dev: + .settings: + error_reporting: + web_debug: true + cache: false + no_script_name: false + etag: false + +test: + .settings: + error_reporting: + cache: false + web_debug: false + no_script_name: false + etag: false + +all: + .settings: + enabled_modules: [default, autoloadPlugin] + autoloading_functions: [[myAutoload, autoload]] diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/view.yml b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/view.yml new file mode 100644 index 0000000..d690255 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/config/view.yml @@ -0,0 +1,24 @@ +default: + http_metas: + content-type: text/html + + metas: + title: symfony project + robots: index, follow + description: symfony project + keywords: symfony, project + language: en + + stylesheets: + - main + - + ie6: + condition: lte IE 6 + - + multiple_media: + media: 'print,handheld' + + javascripts: [ ] + + has_layout: true + layout: layout diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/i18n/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/i18n/.svn/all-wcprops new file mode 100644 index 0000000..8ed27ac --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/i18n/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 72 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/i18n +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/i18n/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/i18n/.svn/entries new file mode 100644 index 0000000..71b1ad0 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/i18n/.svn/entries @@ -0,0 +1,28 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/i18n +http://svn.symfony-project.com + + + +2006-09-13T21:10:46.512664Z +2069 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/lib/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/lib/.svn/all-wcprops new file mode 100644 index 0000000..a494fea --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/lib/.svn/all-wcprops @@ -0,0 +1,35 @@ +K 25 +svn:wc:ra_dav:version-url +V 71 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/lib +END +myAppsFrontendLibClass.class.php +K 25 +svn:wc:ra_dav:version-url +V 104 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/lib/myAppsFrontendLibClass.class.php +END +myFilter.class.php +K 25 +svn:wc:ra_dav:version-url +V 90 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/lib/myFilter.class.php +END +myAutoloadedClass.class.php +K 25 +svn:wc:ra_dav:version-url +V 99 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/lib/myAutoloadedClass.class.php +END +myAutoload.class.php +K 25 +svn:wc:ra_dav:version-url +V 92 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/lib/myAutoload.class.php +END +myUser.class.php +K 25 +svn:wc:ra_dav:version-url +V 88 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/lib/myUser.class.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/lib/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/lib/.svn/entries new file mode 100644 index 0000000..67a4c48 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/lib/.svn/entries @@ -0,0 +1,198 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/lib +http://svn.symfony-project.com + + + +2006-11-24T11:10:03.567800Z +2802 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +myAppsFrontendLibClass.class.php +file + + + + +2012-05-10T18:40:53.281551Z +f4b0bda7bf72f45866f3b18bbedeac2b +2006-09-30T17:42:01.654020Z +2258 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +99 + +myFilter.class.php +file + + + + +2012-05-10T18:40:53.305551Z +bae56ba1e4965ced5c25cfef57c1600d +2006-10-30T16:36:31.615660Z +2569 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +496 + +myAutoloadedClass.class.php +file + + + + +2012-05-10T18:40:53.313552Z +621ec3403b4874863b90868adc07f1fa +2006-11-24T11:10:03.567800Z +2802 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +88 + +myAutoload.class.php +file + + + + +2012-05-10T18:40:53.317551Z +ab7b467faa15cead3fd700dd49aee1f6 +2006-11-24T11:10:03.567800Z +2802 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +238 + +myUser.class.php +file + + + + +2012-05-10T18:40:53.329554Z +215548048bbbdd100411afc00252a797 +2006-09-13T21:10:46.512664Z +2069 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +52 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/lib/.svn/prop-base/myAppsFrontendLibClass.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/lib/.svn/prop-base/myAppsFrontendLibClass.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/lib/.svn/prop-base/myAppsFrontendLibClass.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/lib/.svn/prop-base/myAutoload.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/lib/.svn/prop-base/myAutoload.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/lib/.svn/prop-base/myAutoload.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/lib/.svn/prop-base/myAutoloadedClass.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/lib/.svn/prop-base/myAutoloadedClass.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/lib/.svn/prop-base/myAutoloadedClass.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/lib/.svn/prop-base/myFilter.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/lib/.svn/prop-base/myFilter.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/lib/.svn/prop-base/myFilter.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/lib/.svn/prop-base/myUser.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/lib/.svn/prop-base/myUser.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/lib/.svn/prop-base/myUser.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/lib/.svn/text-base/myAppsFrontendLibClass.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/lib/.svn/text-base/myAppsFrontendLibClass.class.php.svn-base new file mode 100644 index 0000000..01f173a --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/lib/.svn/text-base/myAppsFrontendLibClass.class.php.svn-base @@ -0,0 +1,9 @@ +getContext()->getModuleName()) + { + $filterChain->execute(); + return; + } + + $response = $this->getContext()->getResponse(); + + $response->setContent($response->getContent().'
            '); + + $filterChain->execute(); + + $response->setContent($response->getContent().'
            '); + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/lib/.svn/text-base/myUser.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/lib/.svn/text-base/myUser.class.php.svn-base new file mode 100644 index 0000000..4c79302 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/lib/.svn/text-base/myUser.class.php.svn-base @@ -0,0 +1,5 @@ +getContext()->getModuleName()) + { + $filterChain->execute(); + return; + } + + $response = $this->getContext()->getResponse(); + + $response->setContent($response->getContent().'
            '); + + $filterChain->execute(); + + $response->setContent($response->getContent().'
            '); + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/lib/myUser.class.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/lib/myUser.class.php new file mode 100644 index 0000000..4c79302 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/lib/myUser.class.php @@ -0,0 +1,5 @@ + + * @version SVN: $Id$ + */ +class assetInclusionActions extends sfActions +{ + public function executeIndex() + { + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/assetInclusion/actions/actions.class.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/assetInclusion/actions/actions.class.php new file mode 100644 index 0000000..b53b29a --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/assetInclusion/actions/actions.class.php @@ -0,0 +1,16 @@ + + * @version SVN: $Id: actions.class.php 2288 2006-10-02 15:22:13Z fabien $ + */ +class assetInclusionActions extends sfActions +{ + public function executeIndex() + { + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/assetInclusion/config/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/assetInclusion/config/.svn/all-wcprops new file mode 100644 index 0000000..a03008b --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/assetInclusion/config/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 97 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/assetInclusion/config +END +view.yml +K 25 +svn:wc:ra_dav:version-url +V 106 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/assetInclusion/config/view.yml +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/assetInclusion/config/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/assetInclusion/config/.svn/entries new file mode 100644 index 0000000..29acbda --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/assetInclusion/config/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/assetInclusion/config +http://svn.symfony-project.com + + + +2006-09-26T10:17:20.535096Z +2190 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +view.yml +file + + + + +2012-05-10T18:40:55.745551Z +e639601e56e4e81804fe068e21d2f3fb +2006-09-26T10:17:20.535096Z +2190 +fabien + + + + + + + + + + + + + + + + + + + + + +116 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/assetInclusion/config/.svn/text-base/view.yml.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/assetInclusion/config/.svn/text-base/view.yml.svn-base new file mode 100644 index 0000000..283b35b --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/assetInclusion/config/.svn/text-base/view.yml.svn-base @@ -0,0 +1,7 @@ +indexSuccess: + javascripts: [-*] + stylesheets: [-*] + +all: + javascripts: [main, user] + stylesheets: [main, user] diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/assetInclusion/config/view.yml b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/assetInclusion/config/view.yml new file mode 100644 index 0000000..283b35b --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/assetInclusion/config/view.yml @@ -0,0 +1,7 @@ +indexSuccess: + javascripts: [-*] + stylesheets: [-*] + +all: + javascripts: [main, user] + stylesheets: [main, user] diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/assetInclusion/templates/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/assetInclusion/templates/.svn/all-wcprops new file mode 100644 index 0000000..910e853 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/assetInclusion/templates/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 100 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/assetInclusion/templates +END +indexSuccess.php +K 25 +svn:wc:ra_dav:version-url +V 117 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/assetInclusion/templates/indexSuccess.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/assetInclusion/templates/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/assetInclusion/templates/.svn/entries new file mode 100644 index 0000000..4dadd61 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/assetInclusion/templates/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/assetInclusion/templates +http://svn.symfony-project.com + + + +2006-09-26T10:17:20.535096Z +2190 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +indexSuccess.php +file + + + + +2012-05-10T18:40:55.789560Z +e0aa021e21dddbd6d8cecec71e9cf564 +2006-09-26T10:17:20.535096Z +2190 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +2 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/assetInclusion/templates/.svn/prop-base/indexSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/assetInclusion/templates/.svn/prop-base/indexSuccess.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/assetInclusion/templates/.svn/prop-base/indexSuccess.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/assetInclusion/templates/.svn/text-base/indexSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/assetInclusion/templates/.svn/text-base/indexSuccess.php.svn-base new file mode 100644 index 0000000..a0aba93 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/assetInclusion/templates/.svn/text-base/indexSuccess.php.svn-base @@ -0,0 +1 @@ +OK \ No newline at end of file diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/assetInclusion/templates/indexSuccess.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/assetInclusion/templates/indexSuccess.php new file mode 100644 index 0000000..a0aba93 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/assetInclusion/templates/indexSuccess.php @@ -0,0 +1 @@ +OK \ No newline at end of file diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/auth/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/auth/.svn/all-wcprops new file mode 100644 index 0000000..7121b5c --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/auth/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 80 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/auth +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/auth/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/auth/.svn/entries new file mode 100644 index 0000000..c7d83b9 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/auth/.svn/entries @@ -0,0 +1,34 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/auth +http://svn.symfony-project.com + + + +2007-01-12T08:34:46.398746Z +3237 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions +dir + +templates +dir + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/auth/actions/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/auth/actions/.svn/all-wcprops new file mode 100644 index 0000000..33a393d --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/auth/actions/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 88 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/auth/actions +END +actions.class.php +K 25 +svn:wc:ra_dav:version-url +V 106 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/auth/actions/actions.class.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/auth/actions/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/auth/actions/.svn/entries new file mode 100644 index 0000000..2d918ae --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/auth/actions/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/auth/actions +http://svn.symfony-project.com + + + +2007-01-12T08:34:46.398746Z +3237 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions.class.php +file + + + + +2012-05-10T18:40:55.445551Z +ed2ae973ed276752a4974496ffab4a9f +2007-01-12T08:34:46.398746Z +3237 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +757 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/auth/actions/.svn/prop-base/actions.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/auth/actions/.svn/prop-base/actions.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/auth/actions/.svn/prop-base/actions.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/auth/actions/.svn/text-base/actions.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/auth/actions/.svn/text-base/actions.class.php.svn-base new file mode 100644 index 0000000..3843ade --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/auth/actions/.svn/text-base/actions.class.php.svn-base @@ -0,0 +1,33 @@ + + * @version SVN: $Id$ + */ +class authActions extends sfActions +{ + public function executeBasic() + { + $response = $this->getResponse(); + + if (!isset($_SERVER['PHP_AUTH_USER'])) + { + $response->setStatusCode(401); + $response->setHttpHeader('WWW-Authenticate', 'Basic realm="My Realm"'); + + $this->auth_user = ''; + $this->auth_password = ''; + $this->msg = 'KO'; + } + else + { + $this->auth_user = $_SERVER['PHP_AUTH_USER']; + $this->auth_password = $_SERVER['PHP_AUTH_PW']; + $this->msg = 'OK'; + } + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/auth/actions/actions.class.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/auth/actions/actions.class.php new file mode 100644 index 0000000..b7a560d --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/auth/actions/actions.class.php @@ -0,0 +1,33 @@ + + * @version SVN: $Id: actions.class.php 3237 2007-01-12 08:34:46Z fabien $ + */ +class authActions extends sfActions +{ + public function executeBasic() + { + $response = $this->getResponse(); + + if (!isset($_SERVER['PHP_AUTH_USER'])) + { + $response->setStatusCode(401); + $response->setHttpHeader('WWW-Authenticate', 'Basic realm="My Realm"'); + + $this->auth_user = ''; + $this->auth_password = ''; + $this->msg = 'KO'; + } + else + { + $this->auth_user = $_SERVER['PHP_AUTH_USER']; + $this->auth_password = $_SERVER['PHP_AUTH_PW']; + $this->msg = 'OK'; + } + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/auth/templates/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/auth/templates/.svn/all-wcprops new file mode 100644 index 0000000..abfbd2e --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/auth/templates/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 90 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/auth/templates +END +basicSuccess.php +K 25 +svn:wc:ra_dav:version-url +V 107 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/auth/templates/basicSuccess.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/auth/templates/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/auth/templates/.svn/entries new file mode 100644 index 0000000..b5a03cd --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/auth/templates/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/auth/templates +http://svn.symfony-project.com + + + +2007-01-12T08:34:46.398746Z +3237 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +basicSuccess.php +file + + + + +2012-05-10T18:40:55.489553Z +1b81551def3755d39116e171d9c2eca5 +2007-01-12T08:34:46.398746Z +3237 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +139 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/auth/templates/.svn/prop-base/basicSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/auth/templates/.svn/prop-base/basicSuccess.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/auth/templates/.svn/prop-base/basicSuccess.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/auth/templates/.svn/text-base/basicSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/auth/templates/.svn/text-base/basicSuccess.php.svn-base new file mode 100644 index 0000000..df2abe4 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/auth/templates/.svn/text-base/basicSuccess.php.svn-base @@ -0,0 +1,3 @@ +
            +
            +
            diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/auth/templates/basicSuccess.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/auth/templates/basicSuccess.php new file mode 100644 index 0000000..df2abe4 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/auth/templates/basicSuccess.php @@ -0,0 +1,3 @@ +
            +
            +
            diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/.svn/all-wcprops new file mode 100644 index 0000000..469b8fd --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 84 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/autoload +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/.svn/entries new file mode 100644 index 0000000..94c2770 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/.svn/entries @@ -0,0 +1,37 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/autoload +http://svn.symfony-project.com + + + +2006-11-24T11:10:03.567800Z +2802 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions +dir + +lib +dir + +templates +dir + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/actions/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/actions/.svn/all-wcprops new file mode 100644 index 0000000..14e7939 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/actions/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 92 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/autoload/actions +END +actions.class.php +K 25 +svn:wc:ra_dav:version-url +V 110 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/autoload/actions/actions.class.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/actions/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/actions/.svn/entries new file mode 100644 index 0000000..13c2302 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/actions/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/autoload/actions +http://svn.symfony-project.com + + + +2006-11-24T11:10:03.567800Z +2802 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions.class.php +file + + + + +2012-05-10T18:40:56.289546Z +150a8df7df0d0864159ad45b669f6084 +2006-11-24T11:10:03.567800Z +2802 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +670 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/actions/.svn/prop-base/actions.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/actions/.svn/prop-base/actions.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/actions/.svn/prop-base/actions.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/actions/.svn/text-base/actions.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/actions/.svn/text-base/actions.class.php.svn-base new file mode 100644 index 0000000..b65e901 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/actions/.svn/text-base/actions.class.php.svn-base @@ -0,0 +1,25 @@ + + * @version SVN: $Id$ + */ +class autoloadActions extends sfActions +{ + public function executeIndex() + { + $this->lib1 = myLibClass::ping(); + $this->lib2 = myAppsFrontendLibClass::ping(); + $this->lib3 = myAppsFrontendModulesAutoloadLibClass::ping(); + $this->lib4 = class_exists('myPluginsSfAutoloadPluginModulesAutoloadPluginLibClass') ? 'pong' : 'nopong'; + } + + public function executeMyAutoload() + { + $this->o = new myAutoloadedClass(); + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/actions/actions.class.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/actions/actions.class.php new file mode 100644 index 0000000..2845b37 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/actions/actions.class.php @@ -0,0 +1,25 @@ + + * @version SVN: $Id: actions.class.php 2802 2006-11-24 11:10:03Z fabien $ + */ +class autoloadActions extends sfActions +{ + public function executeIndex() + { + $this->lib1 = myLibClass::ping(); + $this->lib2 = myAppsFrontendLibClass::ping(); + $this->lib3 = myAppsFrontendModulesAutoloadLibClass::ping(); + $this->lib4 = class_exists('myPluginsSfAutoloadPluginModulesAutoloadPluginLibClass') ? 'pong' : 'nopong'; + } + + public function executeMyAutoload() + { + $this->o = new myAutoloadedClass(); + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/lib/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/lib/.svn/all-wcprops new file mode 100644 index 0000000..667ecef --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/lib/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 88 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/autoload/lib +END +myAppsFrontendModulesAutoloadLib.class.php +K 25 +svn:wc:ra_dav:version-url +V 131 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/autoload/lib/myAppsFrontendModulesAutoloadLib.class.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/lib/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/lib/.svn/entries new file mode 100644 index 0000000..808a6ea --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/lib/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/autoload/lib +http://svn.symfony-project.com + + + +2006-09-30T17:42:01.654020Z +2258 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +myAppsFrontendModulesAutoloadLib.class.php +file + + + + +2012-05-10T18:40:56.337548Z +82f177f442f93d0cfdd508204c43c648 +2006-09-30T17:42:01.654020Z +2258 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +114 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/lib/.svn/prop-base/myAppsFrontendModulesAutoloadLib.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/lib/.svn/prop-base/myAppsFrontendModulesAutoloadLib.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/lib/.svn/prop-base/myAppsFrontendModulesAutoloadLib.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/lib/.svn/text-base/myAppsFrontendModulesAutoloadLib.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/lib/.svn/text-base/myAppsFrontendModulesAutoloadLib.class.php.svn-base new file mode 100644 index 0000000..2b991e9 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/lib/.svn/text-base/myAppsFrontendModulesAutoloadLib.class.php.svn-base @@ -0,0 +1,9 @@ +
            +
            +
            +
            diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/templates/.svn/text-base/myAutoloadSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/templates/.svn/text-base/myAutoloadSuccess.php.svn-base new file mode 100644 index 0000000..a212c98 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/templates/.svn/text-base/myAutoloadSuccess.php.svn-base @@ -0,0 +1 @@ +
            getFoo() ?>
            diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/templates/indexSuccess.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/templates/indexSuccess.php new file mode 100644 index 0000000..ce26f4b --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/templates/indexSuccess.php @@ -0,0 +1,4 @@ +
            +
            +
            +
            diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/templates/myAutoloadSuccess.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/templates/myAutoloadSuccess.php new file mode 100644 index 0000000..a212c98 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/autoload/templates/myAutoloadSuccess.php @@ -0,0 +1 @@ +
            getFoo() ?>
            diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/.svn/all-wcprops new file mode 100644 index 0000000..a9c508f --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 83 +/!svn/ver/24992/branches/1.4/test/functional/fixtures/apps/frontend/modules/browser +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/.svn/entries new file mode 100644 index 0000000..8b073b8 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/.svn/entries @@ -0,0 +1,34 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/browser +http://svn.symfony-project.com + + + +2009-12-06T20:48:52.154761Z +24992 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions +dir + +templates +dir + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/actions/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/actions/.svn/all-wcprops new file mode 100644 index 0000000..bf0065f --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/actions/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 91 +/!svn/ver/24992/branches/1.4/test/functional/fixtures/apps/frontend/modules/browser/actions +END +actions.class.php +K 25 +svn:wc:ra_dav:version-url +V 109 +/!svn/ver/24992/branches/1.4/test/functional/fixtures/apps/frontend/modules/browser/actions/actions.class.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/actions/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/actions/.svn/entries new file mode 100644 index 0000000..947d881 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/actions/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/browser/actions +http://svn.symfony-project.com + + + +2009-12-06T20:48:52.154761Z +24992 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions.class.php +file + + + + +2012-05-10T18:40:53.389555Z +d7844c1764c9fece0f12e2686b487fc2 +2009-12-06T20:48:52.154761Z +24992 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +1302 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/actions/.svn/prop-base/actions.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/actions/.svn/prop-base/actions.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/actions/.svn/prop-base/actions.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/actions/.svn/text-base/actions.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/actions/.svn/text-base/actions.class.php.svn-base new file mode 100644 index 0000000..1ca9763 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/actions/.svn/text-base/actions.class.php.svn-base @@ -0,0 +1,62 @@ + + * @version SVN: $Id$ + */ +class browserActions extends sfActions +{ + public function executeIndex() + { + return $this->renderText('

            html

            '); + } + + public function executeText() + { + $this->getResponse()->setContentType('text/plain'); + + return $this->renderText('text'); + } + + public function executeResponseHeader() + { + $response = $this->getResponse(); + + $response->setContentType('text/plain'); + $response->setHttpHeader('foo', 'bar', true); + $response->setHttpHeader('foo', 'foobar', false); + + return $this->renderText('ok'); + } + + public function executeTemplateCustom($request) + { + if ($request->getParameter('custom')) + { + $this->setTemplate('templateCustomCustom'); + } + } + + public function executeRedirect1() + { + $this->redirect('browser/redirectTarget1'); + } + + public function executeRedirectTarget1() + { + } + + public function executeRedirect2() + { + $this->redirect('browser/redirectTarget2'); + } + + public function executeRedirectTarget2() + { + return $this->renderText('ok'); + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/actions/actions.class.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/actions/actions.class.php new file mode 100644 index 0000000..48ae02d --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/actions/actions.class.php @@ -0,0 +1,62 @@ + + * @version SVN: $Id: actions.class.php 24992 2009-12-06 20:48:52Z Kris.Wallsmith $ + */ +class browserActions extends sfActions +{ + public function executeIndex() + { + return $this->renderText('

            html

            '); + } + + public function executeText() + { + $this->getResponse()->setContentType('text/plain'); + + return $this->renderText('text'); + } + + public function executeResponseHeader() + { + $response = $this->getResponse(); + + $response->setContentType('text/plain'); + $response->setHttpHeader('foo', 'bar', true); + $response->setHttpHeader('foo', 'foobar', false); + + return $this->renderText('ok'); + } + + public function executeTemplateCustom($request) + { + if ($request->getParameter('custom')) + { + $this->setTemplate('templateCustomCustom'); + } + } + + public function executeRedirect1() + { + $this->redirect('browser/redirectTarget1'); + } + + public function executeRedirectTarget1() + { + } + + public function executeRedirect2() + { + $this->redirect('browser/redirectTarget2'); + } + + public function executeRedirectTarget2() + { + return $this->renderText('ok'); + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/templates/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/templates/.svn/all-wcprops new file mode 100644 index 0000000..e06cd8b --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/templates/.svn/all-wcprops @@ -0,0 +1,23 @@ +K 25 +svn:wc:ra_dav:version-url +V 93 +/!svn/ver/24992/branches/1.4/test/functional/fixtures/apps/frontend/modules/browser/templates +END +templateCustomCustomSuccess.php +K 25 +svn:wc:ra_dav:version-url +V 125 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/browser/templates/templateCustomCustomSuccess.php +END +templateCustomSuccess.php +K 25 +svn:wc:ra_dav:version-url +V 119 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/browser/templates/templateCustomSuccess.php +END +redirectTarget1Success.php +K 25 +svn:wc:ra_dav:version-url +V 120 +/!svn/ver/24992/branches/1.4/test/functional/fixtures/apps/frontend/modules/browser/templates/redirectTarget1Success.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/templates/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/templates/.svn/entries new file mode 100644 index 0000000..b86bbf4 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/templates/.svn/entries @@ -0,0 +1,130 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/browser/templates +http://svn.symfony-project.com + + + +2009-12-06T20:48:52.154761Z +24992 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +templateCustomCustomSuccess.php +file + + + + +2012-05-10T18:40:53.437553Z +14b77de47637189a4c44027f1969f743 +2008-10-16T12:11:16.368392Z +12215 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +32 + +templateCustomSuccess.php +file + + + + +2012-05-10T18:40:53.437553Z +76387fd252b4b6e552377219bcdb3e0b +2008-10-16T12:11:16.368392Z +12215 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +30 + +redirectTarget1Success.php +file + + + + +2012-05-10T18:40:53.437553Z +5a8aaa744da94c97524fe6cc51d46d6b +2009-12-06T20:48:52.154761Z +24992 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +12 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/templates/.svn/prop-base/redirectTarget1Success.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/templates/.svn/prop-base/redirectTarget1Success.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/templates/.svn/prop-base/redirectTarget1Success.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/templates/.svn/prop-base/templateCustomCustomSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/templates/.svn/prop-base/templateCustomCustomSuccess.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/templates/.svn/prop-base/templateCustomCustomSuccess.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/templates/.svn/prop-base/templateCustomSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/templates/.svn/prop-base/templateCustomSuccess.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/templates/.svn/prop-base/templateCustomSuccess.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/templates/.svn/text-base/redirectTarget1Success.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/templates/.svn/text-base/redirectTarget1Success.php.svn-base new file mode 100644 index 0000000..f7b3f20 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/templates/.svn/text-base/redirectTarget1Success.php.svn-base @@ -0,0 +1 @@ +

            ok

            diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/templates/.svn/text-base/templateCustomCustomSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/templates/.svn/text-base/templateCustomCustomSuccess.php.svn-base new file mode 100644 index 0000000..b7a8d71 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/templates/.svn/text-base/templateCustomCustomSuccess.php.svn-base @@ -0,0 +1 @@ +
            template 1
            diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/templates/.svn/text-base/templateCustomSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/templates/.svn/text-base/templateCustomSuccess.php.svn-base new file mode 100644 index 0000000..fc5a7a7 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/templates/.svn/text-base/templateCustomSuccess.php.svn-base @@ -0,0 +1 @@ +
            template
            diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/templates/redirectTarget1Success.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/templates/redirectTarget1Success.php new file mode 100644 index 0000000..f7b3f20 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/templates/redirectTarget1Success.php @@ -0,0 +1 @@ +

            ok

            diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/templates/templateCustomCustomSuccess.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/templates/templateCustomCustomSuccess.php new file mode 100644 index 0000000..b7a8d71 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/templates/templateCustomCustomSuccess.php @@ -0,0 +1 @@ +
            template 1
            diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/templates/templateCustomSuccess.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/templates/templateCustomSuccess.php new file mode 100644 index 0000000..fc5a7a7 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/browser/templates/templateCustomSuccess.php @@ -0,0 +1 @@ +
            template
            diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/.svn/all-wcprops new file mode 100644 index 0000000..123419b --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 101 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/.svn/entries new file mode 100644 index 0000000..c832d65 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/.svn/entries @@ -0,0 +1,40 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter +http://svn.symfony-project.com + + + +2009-04-30T07:13:08.234464Z +17794 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions +dir + +config +dir + +lib +dir + +templates +dir + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/actions/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/actions/.svn/all-wcprops new file mode 100644 index 0000000..7877100 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/actions/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 109 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/actions +END +actions.class.php +K 25 +svn:wc:ra_dav:version-url +V 127 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/actions/actions.class.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/actions/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/actions/.svn/entries new file mode 100644 index 0000000..5aab3b0 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/actions/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/actions +http://svn.symfony-project.com + + + +2006-10-02T15:22:13.535599Z +2288 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions.class.php +file + + + + +2012-05-10T18:40:57.341551Z +efd082388377890cfd93f5f253a1b9bc +2006-10-02T15:22:13.535599Z +2288 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +371 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/actions/.svn/prop-base/actions.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/actions/.svn/prop-base/actions.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/actions/.svn/prop-base/actions.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/actions/.svn/text-base/actions.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/actions/.svn/text-base/actions.class.php.svn-base new file mode 100644 index 0000000..005d748 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/actions/.svn/text-base/actions.class.php.svn-base @@ -0,0 +1,16 @@ + + * @version SVN: $Id$ + */ +class configFiltersSimpleFilterActions extends sfActions +{ + public function executeIndex() + { + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/actions/actions.class.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/actions/actions.class.php new file mode 100644 index 0000000..02b0de2 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/actions/actions.class.php @@ -0,0 +1,16 @@ + + * @version SVN: $Id: actions.class.php 2288 2006-10-02 15:22:13Z fabien $ + */ +class configFiltersSimpleFilterActions extends sfActions +{ + public function executeIndex() + { + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/config/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/config/.svn/all-wcprops new file mode 100644 index 0000000..3473470 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/config/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 108 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/config +END +filters.yml +K 25 +svn:wc:ra_dav:version-url +V 120 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/config/filters.yml +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/config/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/config/.svn/entries new file mode 100644 index 0000000..dac92b6 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/config/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/config +http://svn.symfony-project.com + + + +2009-04-30T07:13:08.234464Z +17794 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +filters.yml +file + + + + +2012-05-10T18:40:57.401552Z +fe9869a09088094d86d7358b98842ba9 +2009-04-30T07:13:08.234464Z +17794 +fabien + + + + + + + + + + + + + + + + + + + + + +199 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/config/.svn/text-base/filters.yml.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/config/.svn/text-base/filters.yml.svn-base new file mode 100644 index 0000000..79a1539 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/config/.svn/text-base/filters.yml.svn-base @@ -0,0 +1,14 @@ +rendering: ~ +security: ~ + +# generally, you will want to insert your own filters here +myFilter: + class: myFilter + +simpleFilter: + class: configFiltersSimpleFilterFilter + + +cache: ~ + +execution: ~ diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/config/filters.yml b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/config/filters.yml new file mode 100644 index 0000000..79a1539 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/config/filters.yml @@ -0,0 +1,14 @@ +rendering: ~ +security: ~ + +# generally, you will want to insert your own filters here +myFilter: + class: myFilter + +simpleFilter: + class: configFiltersSimpleFilterFilter + + +cache: ~ + +execution: ~ diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/lib/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/lib/.svn/all-wcprops new file mode 100644 index 0000000..2b48dd3 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/lib/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 105 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/lib +END +configFiltersSimpleFilterFilter.class.php +K 25 +svn:wc:ra_dav:version-url +V 147 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/lib/configFiltersSimpleFilterFilter.class.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/lib/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/lib/.svn/entries new file mode 100644 index 0000000..bb8410a --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/lib/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/lib +http://svn.symfony-project.com + + + +2006-09-13T21:10:46.512664Z +2069 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +configFiltersSimpleFilterFilter.class.php +file + + + + +2012-05-10T18:40:57.665550Z +299a8c661645c0ca6b0b6a8ddf2d6d6c +2006-09-13T21:10:46.512664Z +2069 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +250 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/lib/.svn/prop-base/configFiltersSimpleFilterFilter.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/lib/.svn/prop-base/configFiltersSimpleFilterFilter.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/lib/.svn/prop-base/configFiltersSimpleFilterFilter.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/lib/.svn/text-base/configFiltersSimpleFilterFilter.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/lib/.svn/text-base/configFiltersSimpleFilterFilter.class.php.svn-base new file mode 100644 index 0000000..163d53c --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/lib/.svn/text-base/configFiltersSimpleFilterFilter.class.php.svn-base @@ -0,0 +1,12 @@ +getContext()->getRequest()->setParameter('filter', 'in a filter'); + + // execute next filter + $filterChain->execute(); + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/lib/configFiltersSimpleFilterFilter.class.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/lib/configFiltersSimpleFilterFilter.class.php new file mode 100644 index 0000000..163d53c --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/lib/configFiltersSimpleFilterFilter.class.php @@ -0,0 +1,12 @@ +getContext()->getRequest()->setParameter('filter', 'in a filter'); + + // execute next filter + $filterChain->execute(); + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/templates/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/templates/.svn/all-wcprops new file mode 100644 index 0000000..6935443 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/templates/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 111 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/templates +END +indexSuccess.php +K 25 +svn:wc:ra_dav:version-url +V 128 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/templates/indexSuccess.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/templates/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/templates/.svn/entries new file mode 100644 index 0000000..c95ec86 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/templates/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/templates +http://svn.symfony-project.com + + + +2006-09-13T21:10:46.512664Z +2069 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +indexSuccess.php +file + + + + +2012-05-10T18:40:57.681552Z +a7eb65e5afd555c761da00c8b1325e3f +2006-09-13T21:10:46.512664Z +2069 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +40 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/templates/.svn/prop-base/indexSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/templates/.svn/prop-base/indexSuccess.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/templates/.svn/prop-base/indexSuccess.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/templates/.svn/text-base/indexSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/templates/.svn/text-base/indexSuccess.php.svn-base new file mode 100644 index 0000000..00ab850 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/templates/.svn/text-base/indexSuccess.php.svn-base @@ -0,0 +1 @@ +get('filter') ?> diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/templates/indexSuccess.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/templates/indexSuccess.php new file mode 100644 index 0000000..00ab850 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configFiltersSimpleFilter/templates/indexSuccess.php @@ -0,0 +1 @@ +get('filter') ?> diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/.svn/all-wcprops new file mode 100644 index 0000000..1ca6c95 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 96 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/configModuleDisabled +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/.svn/entries new file mode 100644 index 0000000..4a03fbd --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/.svn/entries @@ -0,0 +1,37 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/configModuleDisabled +http://svn.symfony-project.com + + + +2006-10-02T15:22:13.535599Z +2288 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions +dir + +config +dir + +templates +dir + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/actions/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/actions/.svn/all-wcprops new file mode 100644 index 0000000..3d20682 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/actions/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 104 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/actions +END +actions.class.php +K 25 +svn:wc:ra_dav:version-url +V 122 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/actions/actions.class.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/actions/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/actions/.svn/entries new file mode 100644 index 0000000..cf403c3 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/actions/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/actions +http://svn.symfony-project.com + + + +2006-10-02T15:22:13.535599Z +2288 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions.class.php +file + + + + +2012-05-10T18:40:55.885551Z +86d1f6a7ea65d63d5f5afe1f938c869b +2006-10-02T15:22:13.535599Z +2288 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +356 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/actions/.svn/prop-base/actions.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/actions/.svn/prop-base/actions.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/actions/.svn/prop-base/actions.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/actions/.svn/text-base/actions.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/actions/.svn/text-base/actions.class.php.svn-base new file mode 100644 index 0000000..0208943 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/actions/.svn/text-base/actions.class.php.svn-base @@ -0,0 +1,16 @@ + + * @version SVN: $Id$ + */ +class configModuleDisabledActions extends sfActions +{ + public function executeIndex() + { + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/actions/actions.class.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/actions/actions.class.php new file mode 100644 index 0000000..d59c221 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/actions/actions.class.php @@ -0,0 +1,16 @@ + + * @version SVN: $Id: actions.class.php 2288 2006-10-02 15:22:13Z fabien $ + */ +class configModuleDisabledActions extends sfActions +{ + public function executeIndex() + { + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/config/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/config/.svn/all-wcprops new file mode 100644 index 0000000..504b391 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/config/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 103 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/config +END +module.yml +K 25 +svn:wc:ra_dav:version-url +V 114 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/config/module.yml +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/config/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/config/.svn/entries new file mode 100644 index 0000000..acc4606 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/config/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/config +http://svn.symfony-project.com + + + +2006-09-13T21:10:46.512664Z +2069 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +module.yml +file + + + + +2012-05-10T18:40:56.041548Z +e281ad4464bd88c4d87cb6cf0cb0135d +2006-09-13T21:10:46.512664Z +2069 +fabien + + + + + + + + + + + + + + + + + + + + + +22 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/config/.svn/text-base/module.yml.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/config/.svn/text-base/module.yml.svn-base new file mode 100644 index 0000000..4b4a440 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/config/.svn/text-base/module.yml.svn-base @@ -0,0 +1,2 @@ +all: + enabled: false diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/config/module.yml b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/config/module.yml new file mode 100644 index 0000000..4b4a440 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/config/module.yml @@ -0,0 +1,2 @@ +all: + enabled: false diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/templates/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/templates/.svn/all-wcprops new file mode 100644 index 0000000..8dce3f6 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/templates/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 106 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/templates +END +indexSuccess.php +K 25 +svn:wc:ra_dav:version-url +V 123 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/templates/indexSuccess.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/templates/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/templates/.svn/entries new file mode 100644 index 0000000..03e5996 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/templates/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/templates +http://svn.symfony-project.com + + + +2006-09-13T21:10:46.512664Z +2069 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +indexSuccess.php +file + + + + +2012-05-10T18:40:56.085555Z +d41d8cd98f00b204e9800998ecf8427e +2006-09-13T21:10:46.512664Z +2069 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +0 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/templates/.svn/prop-base/indexSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/templates/.svn/prop-base/indexSuccess.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/templates/.svn/prop-base/indexSuccess.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/templates/.svn/text-base/indexSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/templates/.svn/text-base/indexSuccess.php.svn-base new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/templates/indexSuccess.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configModuleDisabled/templates/indexSuccess.php new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/.svn/all-wcprops new file mode 100644 index 0000000..dae87e8 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 98 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/.svn/entries new file mode 100644 index 0000000..95d62f8 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/.svn/entries @@ -0,0 +1,37 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure +http://svn.symfony-project.com + + + +2009-09-11T07:38:24.815935Z +21884 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions +dir + +config +dir + +templates +dir + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/actions/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/actions/.svn/all-wcprops new file mode 100644 index 0000000..0821d5e --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/actions/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 106 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/actions +END +actions.class.php +K 25 +svn:wc:ra_dav:version-url +V 124 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/actions/actions.class.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/actions/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/actions/.svn/entries new file mode 100644 index 0000000..2205217 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/actions/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/actions +http://svn.symfony-project.com + + + +2006-10-02T15:22:13.535599Z +2288 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions.class.php +file + + + + +2012-05-10T18:40:55.109549Z +76ac967be724913d1e3295291641d07b +2006-10-02T15:22:13.535599Z +2288 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +362 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/actions/.svn/prop-base/actions.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/actions/.svn/prop-base/actions.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/actions/.svn/prop-base/actions.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/actions/.svn/text-base/actions.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/actions/.svn/text-base/actions.class.php.svn-base new file mode 100644 index 0000000..48d14ef --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/actions/.svn/text-base/actions.class.php.svn-base @@ -0,0 +1,16 @@ + + * @version SVN: $Id$ + */ +class configSecurityIsSecureActions extends sfActions +{ + public function executeIndex() + { + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/actions/actions.class.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/actions/actions.class.php new file mode 100644 index 0000000..e43e27b --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/actions/actions.class.php @@ -0,0 +1,16 @@ + + * @version SVN: $Id: actions.class.php 2288 2006-10-02 15:22:13Z fabien $ + */ +class configSecurityIsSecureActions extends sfActions +{ + public function executeIndex() + { + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/config/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/config/.svn/all-wcprops new file mode 100644 index 0000000..cac16f4 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/config/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 105 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/config +END +security.yml +K 25 +svn:wc:ra_dav:version-url +V 118 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/config/security.yml +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/config/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/config/.svn/entries new file mode 100644 index 0000000..6b23874 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/config/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/config +http://svn.symfony-project.com + + + +2009-09-11T07:38:24.815935Z +21884 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +security.yml +file + + + + +2012-05-10T18:40:55.145568Z +6f5f72b05d6735a3ed3aea13d306bd86 +2009-09-11T07:38:24.815935Z +21884 +fabien + + + + + + + + + + + + + + + + + + + + + +45 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/config/.svn/text-base/security.yml.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/config/.svn/text-base/security.yml.svn-base new file mode 100644 index 0000000..b383c0d --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/config/.svn/text-base/security.yml.svn-base @@ -0,0 +1,3 @@ +all: + is_secure: true + credentials: user diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/config/security.yml b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/config/security.yml new file mode 100644 index 0000000..b383c0d --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/config/security.yml @@ -0,0 +1,3 @@ +all: + is_secure: true + credentials: user diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/templates/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/templates/.svn/all-wcprops new file mode 100644 index 0000000..7d1aed5 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/templates/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 108 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/templates +END +indexSuccess.php +K 25 +svn:wc:ra_dav:version-url +V 125 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/templates/indexSuccess.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/templates/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/templates/.svn/entries new file mode 100644 index 0000000..9c6461f --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/templates/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/templates +http://svn.symfony-project.com + + + +2006-09-13T21:10:46.512664Z +2069 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +indexSuccess.php +file + + + + +2012-05-10T18:40:55.221551Z +d41d8cd98f00b204e9800998ecf8427e +2006-09-13T21:10:46.512664Z +2069 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +0 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/templates/.svn/prop-base/indexSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/templates/.svn/prop-base/indexSuccess.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/templates/.svn/prop-base/indexSuccess.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/templates/.svn/text-base/indexSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/templates/.svn/text-base/indexSuccess.php.svn-base new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/templates/indexSuccess.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecure/templates/indexSuccess.php new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/.svn/all-wcprops new file mode 100644 index 0000000..0639f9a --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 104 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/.svn/entries new file mode 100644 index 0000000..f802f46 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/.svn/entries @@ -0,0 +1,37 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction +http://svn.symfony-project.com + + + +2009-09-11T07:38:24.815935Z +21884 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions +dir + +config +dir + +templates +dir + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/actions/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/actions/.svn/all-wcprops new file mode 100644 index 0000000..ec32feb --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/actions/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 112 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/actions +END +actions.class.php +K 25 +svn:wc:ra_dav:version-url +V 130 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/actions/actions.class.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/actions/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/actions/.svn/entries new file mode 100644 index 0000000..f3576fc --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/actions/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/actions +http://svn.symfony-project.com + + + +2007-03-17T11:04:36.222133Z +3625 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions.class.php +file + + + + +2012-05-10T18:40:54.845546Z +25f71b55fb9d3b270ba54ebcc16baa22 +2007-03-17T11:04:36.222133Z +3625 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +368 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/actions/.svn/prop-base/actions.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/actions/.svn/prop-base/actions.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/actions/.svn/prop-base/actions.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/actions/.svn/text-base/actions.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/actions/.svn/text-base/actions.class.php.svn-base new file mode 100644 index 0000000..9e0489b --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/actions/.svn/text-base/actions.class.php.svn-base @@ -0,0 +1,16 @@ + + * @version SVN: $Id$ + */ +class configSecurityIsSecureActionActions extends sfActions +{ + public function executeIndex() + { + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/actions/actions.class.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/actions/actions.class.php new file mode 100644 index 0000000..ade6f05 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/actions/actions.class.php @@ -0,0 +1,16 @@ + + * @version SVN: $Id: actions.class.php 3625 2007-03-17 11:04:36Z fabien $ + */ +class configSecurityIsSecureActionActions extends sfActions +{ + public function executeIndex() + { + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/config/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/config/.svn/all-wcprops new file mode 100644 index 0000000..ebcd190 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/config/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 111 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/config +END +security.yml +K 25 +svn:wc:ra_dav:version-url +V 124 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/config/security.yml +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/config/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/config/.svn/entries new file mode 100644 index 0000000..e6d85a0 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/config/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/config +http://svn.symfony-project.com + + + +2009-09-11T07:38:24.815935Z +21884 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +security.yml +file + + + + +2012-05-10T18:40:54.893551Z +09af06a166a90783171a963af1ffc43b +2009-09-11T07:38:24.815935Z +21884 +fabien + + + + + + + + + + + + + + + + + + + + + +47 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/config/.svn/text-base/security.yml.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/config/.svn/text-base/security.yml.svn-base new file mode 100644 index 0000000..f502b04 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/config/.svn/text-base/security.yml.svn-base @@ -0,0 +1,3 @@ +index: + is_secure: true + credentials: user diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/config/security.yml b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/config/security.yml new file mode 100644 index 0000000..f502b04 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/config/security.yml @@ -0,0 +1,3 @@ +index: + is_secure: true + credentials: user diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/templates/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/templates/.svn/all-wcprops new file mode 100644 index 0000000..01eb782 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/templates/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 114 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/templates +END +indexSuccess.php +K 25 +svn:wc:ra_dav:version-url +V 131 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/templates/indexSuccess.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/templates/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/templates/.svn/entries new file mode 100644 index 0000000..83130e0 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/templates/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/templates +http://svn.symfony-project.com + + + +2007-03-17T11:04:36.222133Z +3625 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +indexSuccess.php +file + + + + +2012-05-10T18:40:54.941549Z +d41d8cd98f00b204e9800998ecf8427e +2007-03-17T11:04:36.222133Z +3625 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +0 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/templates/.svn/prop-base/indexSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/templates/.svn/prop-base/indexSuccess.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/templates/.svn/prop-base/indexSuccess.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/templates/.svn/text-base/indexSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/templates/.svn/text-base/indexSuccess.php.svn-base new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/templates/indexSuccess.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSecurityIsSecureAction/templates/indexSuccess.php new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/.svn/all-wcprops new file mode 100644 index 0000000..ad8098c --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 101 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/.svn/entries new file mode 100644 index 0000000..5ac2ed9 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/.svn/entries @@ -0,0 +1,34 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards +http://svn.symfony-project.com + + + +2006-10-02T15:22:13.535599Z +2288 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions +dir + +templates +dir + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/actions/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/actions/.svn/all-wcprops new file mode 100644 index 0000000..a5e001e --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/actions/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 109 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/actions +END +actions.class.php +K 25 +svn:wc:ra_dav:version-url +V 127 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/actions/actions.class.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/actions/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/actions/.svn/entries new file mode 100644 index 0000000..0484d6a --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/actions/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/actions +http://svn.symfony-project.com + + + +2006-10-02T15:22:13.535599Z +2288 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions.class.php +file + + + + +2012-05-10T18:40:56.169551Z +b4a5ddc6f12083e0b2614604eb6ef40b +2006-10-02T15:22:13.535599Z +2288 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +441 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/actions/.svn/prop-base/actions.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/actions/.svn/prop-base/actions.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/actions/.svn/prop-base/actions.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/actions/.svn/text-base/actions.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/actions/.svn/text-base/actions.class.php.svn-base new file mode 100644 index 0000000..a4b50e5 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/actions/.svn/text-base/actions.class.php.svn-base @@ -0,0 +1,17 @@ + + * @version SVN: $Id$ + */ +class configSettingsMaxForwardsActions extends sfActions +{ + public function executeSelfForward() + { + $this->forward('configSettingsMaxForwards', 'selfForward'); + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/actions/actions.class.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/actions/actions.class.php new file mode 100644 index 0000000..d7fd969 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/actions/actions.class.php @@ -0,0 +1,17 @@ + + * @version SVN: $Id: actions.class.php 2288 2006-10-02 15:22:13Z fabien $ + */ +class configSettingsMaxForwardsActions extends sfActions +{ + public function executeSelfForward() + { + $this->forward('configSettingsMaxForwards', 'selfForward'); + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/templates/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/templates/.svn/all-wcprops new file mode 100644 index 0000000..fdbba93 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/templates/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 111 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/templates +END +indexSuccess.php +K 25 +svn:wc:ra_dav:version-url +V 128 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/templates/indexSuccess.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/templates/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/templates/.svn/entries new file mode 100644 index 0000000..c54350a --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/templates/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/templates +http://svn.symfony-project.com + + + +2006-09-13T21:10:46.512664Z +2069 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +indexSuccess.php +file + + + + +2012-05-10T18:40:56.209550Z +d41d8cd98f00b204e9800998ecf8427e +2006-09-13T21:10:46.512664Z +2069 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +0 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/templates/.svn/prop-base/indexSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/templates/.svn/prop-base/indexSuccess.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/templates/.svn/prop-base/indexSuccess.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/templates/.svn/text-base/indexSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/templates/.svn/text-base/indexSuccess.php.svn-base new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/templates/indexSuccess.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configSettingsMaxForwards/templates/indexSuccess.php new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/.svn/all-wcprops new file mode 100644 index 0000000..2f48651 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 95 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/configViewHasLayout +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/.svn/entries new file mode 100644 index 0000000..ecffa78 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/.svn/entries @@ -0,0 +1,37 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/configViewHasLayout +http://svn.symfony-project.com + + + +2009-09-11T07:38:24.815935Z +21884 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions +dir + +config +dir + +templates +dir + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/actions/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/actions/.svn/all-wcprops new file mode 100644 index 0000000..dfe5c42 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/actions/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 103 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/actions +END +actions.class.php +K 25 +svn:wc:ra_dav:version-url +V 121 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/actions/actions.class.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/actions/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/actions/.svn/entries new file mode 100644 index 0000000..7010495 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/actions/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/actions +http://svn.symfony-project.com + + + +2006-10-02T15:22:13.535599Z +2288 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions.class.php +file + + + + +2012-05-10T18:40:54.597550Z +532f4a319fe531ba9d9f0e99aa847b41 +2006-10-02T15:22:13.535599Z +2288 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +361 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/actions/.svn/prop-base/actions.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/actions/.svn/prop-base/actions.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/actions/.svn/prop-base/actions.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/actions/.svn/text-base/actions.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/actions/.svn/text-base/actions.class.php.svn-base new file mode 100644 index 0000000..343eb97 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/actions/.svn/text-base/actions.class.php.svn-base @@ -0,0 +1,16 @@ + + * @version SVN: $Id$ + */ +class configViewHasLayoutActions extends sfActions +{ + public function executeWithoutLayout() + { + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/actions/actions.class.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/actions/actions.class.php new file mode 100644 index 0000000..9ee855f --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/actions/actions.class.php @@ -0,0 +1,16 @@ + + * @version SVN: $Id: actions.class.php 2288 2006-10-02 15:22:13Z fabien $ + */ +class configViewHasLayoutActions extends sfActions +{ + public function executeWithoutLayout() + { + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/config/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/config/.svn/all-wcprops new file mode 100644 index 0000000..11302d0 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/config/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 102 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/config +END +view.yml +K 25 +svn:wc:ra_dav:version-url +V 111 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/config/view.yml +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/config/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/config/.svn/entries new file mode 100644 index 0000000..c5c3a50 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/config/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/config +http://svn.symfony-project.com + + + +2009-09-11T07:38:24.815935Z +21884 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +view.yml +file + + + + +2012-05-10T18:40:54.641551Z +156656d9516afc5a46cf77731ee305c2 +2009-09-11T07:38:24.815935Z +21884 +fabien + + + + + + + + + + + + + + + + + + + + + +42 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/config/.svn/text-base/view.yml.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/config/.svn/text-base/view.yml.svn-base new file mode 100644 index 0000000..db2d4c0 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/config/.svn/text-base/view.yml.svn-base @@ -0,0 +1,2 @@ +withoutLayoutSuccess: + has_layout: false diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/config/view.yml b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/config/view.yml new file mode 100644 index 0000000..db2d4c0 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/config/view.yml @@ -0,0 +1,2 @@ +withoutLayoutSuccess: + has_layout: false diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/templates/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/templates/.svn/all-wcprops new file mode 100644 index 0000000..c115d1e --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/templates/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 105 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/templates +END +withoutLayoutSuccess.php +K 25 +svn:wc:ra_dav:version-url +V 130 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/templates/withoutLayoutSuccess.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/templates/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/templates/.svn/entries new file mode 100644 index 0000000..131801b --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/templates/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/templates +http://svn.symfony-project.com + + + +2006-09-13T21:10:46.512664Z +2069 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +withoutLayoutSuccess.php +file + + + + +2012-05-10T18:40:54.689550Z +77f9c14cd5ec6cc76020197a4e6533cc +2006-09-13T21:10:46.512664Z +2069 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +9 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/templates/.svn/prop-base/withoutLayoutSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/templates/.svn/prop-base/withoutLayoutSuccess.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/templates/.svn/prop-base/withoutLayoutSuccess.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/templates/.svn/text-base/withoutLayoutSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/templates/.svn/text-base/withoutLayoutSuccess.php.svn-base new file mode 100644 index 0000000..31db2eb --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/templates/.svn/text-base/withoutLayoutSuccess.php.svn-base @@ -0,0 +1 @@ +no layout \ No newline at end of file diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/templates/withoutLayoutSuccess.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/templates/withoutLayoutSuccess.php new file mode 100644 index 0000000..31db2eb --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/configViewHasLayout/templates/withoutLayoutSuccess.php @@ -0,0 +1 @@ +no layout \ No newline at end of file diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/cookie/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/cookie/.svn/all-wcprops new file mode 100644 index 0000000..d590b85 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/cookie/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 82 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/cookie +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/cookie/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/cookie/.svn/entries new file mode 100644 index 0000000..ad46070 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/cookie/.svn/entries @@ -0,0 +1,31 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/cookie +http://svn.symfony-project.com + + + +2008-08-13T07:26:25.098272Z +10831 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions +dir + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/cookie/actions/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/cookie/actions/.svn/all-wcprops new file mode 100644 index 0000000..aa3669b --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/cookie/actions/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 90 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/cookie/actions +END +actions.class.php +K 25 +svn:wc:ra_dav:version-url +V 108 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/cookie/actions/actions.class.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/cookie/actions/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/cookie/actions/.svn/entries new file mode 100644 index 0000000..4871113 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/cookie/actions/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/cookie/actions +http://svn.symfony-project.com + + + +2008-08-13T07:26:25.098272Z +10831 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions.class.php +file + + + + +2012-05-10T18:40:56.529551Z +95e0687e72d65f65f7f214909a4aa459 +2008-08-13T07:26:25.098272Z +10831 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +752 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/cookie/actions/.svn/prop-base/actions.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/cookie/actions/.svn/prop-base/actions.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/cookie/actions/.svn/prop-base/actions.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/cookie/actions/.svn/text-base/actions.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/cookie/actions/.svn/text-base/actions.class.php.svn-base new file mode 100644 index 0000000..9de75fa --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/cookie/actions/.svn/text-base/actions.class.php.svn-base @@ -0,0 +1,31 @@ + + * @version SVN: $Id$ + */ +class cookieActions extends sfActions +{ + public function executeIndex($request) + { + return $this->renderText('

            '.$request->getCookie('foo').'.'.$request->getCookie('bar').'-'.$request->getCookie('foobar').'

            '); + } + + public function executeSetCookie($request) + { + $this->getResponse()->setCookie('foobar', 'barfoo'); + + return sfView::NONE; + } + + public function executeRemoveCookie($request) + { + $this->getResponse()->setCookie('foobar', 'foofoobar', time() - 10); + + return sfView::NONE; + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/cookie/actions/actions.class.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/cookie/actions/actions.class.php new file mode 100644 index 0000000..8bb49ac --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/cookie/actions/actions.class.php @@ -0,0 +1,31 @@ + + * @version SVN: $Id: actions.class.php 10831 2008-08-13 07:26:25Z fabien $ + */ +class cookieActions extends sfActions +{ + public function executeIndex($request) + { + return $this->renderText('

            '.$request->getCookie('foo').'.'.$request->getCookie('bar').'-'.$request->getCookie('foobar').'

            '); + } + + public function executeSetCookie($request) + { + $this->getResponse()->setCookie('foobar', 'barfoo'); + + return sfView::NONE; + } + + public function executeRemoveCookie($request) + { + $this->getResponse()->setCookie('foobar', 'foofoobar', time() - 10); + + return sfView::NONE; + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/.svn/all-wcprops new file mode 100644 index 0000000..40ca6ac --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 84 +/!svn/ver/27755/branches/1.4/test/functional/fixtures/apps/frontend/modules/escaping +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/.svn/entries new file mode 100644 index 0000000..713224c --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/.svn/entries @@ -0,0 +1,34 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/escaping +http://svn.symfony-project.com + + + +2010-02-08T20:51:02.851961Z +27755 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions +dir + +templates +dir + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/actions/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/actions/.svn/all-wcprops new file mode 100644 index 0000000..8868f08 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/actions/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 92 +/!svn/ver/27755/branches/1.4/test/functional/fixtures/apps/frontend/modules/escaping/actions +END +actions.class.php +K 25 +svn:wc:ra_dav:version-url +V 110 +/!svn/ver/27755/branches/1.4/test/functional/fixtures/apps/frontend/modules/escaping/actions/actions.class.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/actions/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/actions/.svn/entries new file mode 100644 index 0000000..1805f4f --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/actions/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/escaping/actions +http://svn.symfony-project.com + + + +2010-02-08T20:51:02.851961Z +27755 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions.class.php +file + + + + +2012-05-10T18:40:54.373551Z +62cde0583ebbca16ebe8fa6894ad5235 +2010-02-08T20:51:02.851961Z +27755 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +632 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/actions/.svn/prop-base/actions.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/actions/.svn/prop-base/actions.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/actions/.svn/prop-base/actions.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/actions/.svn/text-base/actions.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/actions/.svn/text-base/actions.class.php.svn-base new file mode 100644 index 0000000..f491689 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/actions/.svn/text-base/actions.class.php.svn-base @@ -0,0 +1,29 @@ + + * @version SVN: $Id$ + */ +class escapingActions extends sfActions +{ + public function preExecute() + { + $this->var = 'Lorem ipsum dolor sit amet.'; + $this->setLayout(false); + $this->setTemplate('index'); + } + + public function executeOn() + { + sfConfig::set('sf_escaping_strategy', true); + } + + public function executeOff() + { + sfConfig::set('sf_escaping_strategy', false); + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/actions/actions.class.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/actions/actions.class.php new file mode 100644 index 0000000..0a16565 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/actions/actions.class.php @@ -0,0 +1,29 @@ + + * @version SVN: $Id: actions.class.php 27755 2010-02-08 20:51:02Z Kris.Wallsmith $ + */ +class escapingActions extends sfActions +{ + public function preExecute() + { + $this->var = 'Lorem ipsum dolor sit amet.'; + $this->setLayout(false); + $this->setTemplate('index'); + } + + public function executeOn() + { + sfConfig::set('sf_escaping_strategy', true); + } + + public function executeOff() + { + sfConfig::set('sf_escaping_strategy', false); + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/templates/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/templates/.svn/all-wcprops new file mode 100644 index 0000000..91211d5 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/templates/.svn/all-wcprops @@ -0,0 +1,23 @@ +K 25 +svn:wc:ra_dav:version-url +V 94 +/!svn/ver/27755/branches/1.4/test/functional/fixtures/apps/frontend/modules/escaping/templates +END +_partial1.php +K 25 +svn:wc:ra_dav:version-url +V 108 +/!svn/ver/27755/branches/1.4/test/functional/fixtures/apps/frontend/modules/escaping/templates/_partial1.php +END +_partial2.php +K 25 +svn:wc:ra_dav:version-url +V 108 +/!svn/ver/27755/branches/1.4/test/functional/fixtures/apps/frontend/modules/escaping/templates/_partial2.php +END +indexSuccess.php +K 25 +svn:wc:ra_dav:version-url +V 111 +/!svn/ver/27755/branches/1.4/test/functional/fixtures/apps/frontend/modules/escaping/templates/indexSuccess.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/templates/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/templates/.svn/entries new file mode 100644 index 0000000..49d2cdc --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/templates/.svn/entries @@ -0,0 +1,130 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/escaping/templates +http://svn.symfony-project.com + + + +2010-02-08T20:51:02.851961Z +27755 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +_partial1.php +file + + + + +2012-05-10T18:40:54.445549Z +7b321298bf74211a17dcedf0a43b5454 +2010-02-08T20:51:02.851961Z +27755 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +235 + +_partial2.php +file + + + + +2012-05-10T18:40:54.445549Z +7e195003cba4506e1b291f77f502c019 +2010-02-08T20:51:02.851961Z +27755 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +151 + +indexSuccess.php +file + + + + +2012-05-10T18:40:54.445549Z +f23051da956f42e3dd6c89fbc1b704f1 +2010-02-08T20:51:02.851961Z +27755 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +159 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/templates/.svn/prop-base/_partial1.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/templates/.svn/prop-base/_partial1.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/templates/.svn/prop-base/_partial1.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/templates/.svn/prop-base/_partial2.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/templates/.svn/prop-base/_partial2.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/templates/.svn/prop-base/_partial2.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/templates/.svn/prop-base/indexSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/templates/.svn/prop-base/indexSuccess.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/templates/.svn/prop-base/indexSuccess.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/templates/.svn/text-base/_partial1.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/templates/.svn/text-base/_partial1.php.svn-base new file mode 100644 index 0000000..fe4fadc --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/templates/.svn/text-base/_partial1.php.svn-base @@ -0,0 +1,6 @@ +

            +

            getRaw('var') ?>

            + + + + $var, 'arr' => $arr)) ?> diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/templates/.svn/text-base/_partial2.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/templates/.svn/text-base/_partial2.php.svn-base new file mode 100644 index 0000000..b0224e1 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/templates/.svn/text-base/_partial2.php.svn-base @@ -0,0 +1,4 @@ +
            +
            getRaw('var') ?>
            + + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/templates/.svn/text-base/indexSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/templates/.svn/text-base/indexSuccess.php.svn-base new file mode 100644 index 0000000..5163d10 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/templates/.svn/text-base/indexSuccess.php.svn-base @@ -0,0 +1,4 @@ +

            +

            get('var') ?>

            + + $var, 'arr' => array())) ?> diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/templates/_partial1.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/templates/_partial1.php new file mode 100644 index 0000000..fe4fadc --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/templates/_partial1.php @@ -0,0 +1,6 @@ +

            +

            getRaw('var') ?>

            + + + + $var, 'arr' => $arr)) ?> diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/templates/_partial2.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/templates/_partial2.php new file mode 100644 index 0000000..b0224e1 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/templates/_partial2.php @@ -0,0 +1,4 @@ +
            +
            getRaw('var') ?>
            + + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/templates/indexSuccess.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/templates/indexSuccess.php new file mode 100644 index 0000000..5163d10 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/escaping/templates/indexSuccess.php @@ -0,0 +1,4 @@ +

            +

            get('var') ?>

            + + $var, 'arr' => array())) ?> diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/exception/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/exception/.svn/all-wcprops new file mode 100644 index 0000000..daca72d --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/exception/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 85 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/exception +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/exception/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/exception/.svn/entries new file mode 100644 index 0000000..89847a2 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/exception/.svn/entries @@ -0,0 +1,31 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/exception +http://svn.symfony-project.com + + + +2006-12-08T20:02:11.572366Z +2980 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions +dir + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/exception/actions/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/exception/actions/.svn/all-wcprops new file mode 100644 index 0000000..022be6a --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/exception/actions/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 93 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/exception/actions +END +actions.class.php +K 25 +svn:wc:ra_dav:version-url +V 111 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/exception/actions/actions.class.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/exception/actions/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/exception/actions/.svn/entries new file mode 100644 index 0000000..ce06d6c --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/exception/actions/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/exception/actions +http://svn.symfony-project.com + + + +2006-12-08T20:02:11.572366Z +2980 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions.class.php +file + + + + +2012-05-10T18:40:55.021553Z +a4a7debd026f66b50ab6e42a860441c6 +2006-12-08T20:02:11.572366Z +2980 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +568 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/exception/actions/.svn/prop-base/actions.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/exception/actions/.svn/prop-base/actions.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/exception/actions/.svn/prop-base/actions.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/exception/actions/.svn/text-base/actions.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/exception/actions/.svn/text-base/actions.class.php.svn-base new file mode 100644 index 0000000..8d80489 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/exception/actions/.svn/text-base/actions.class.php.svn-base @@ -0,0 +1,27 @@ + + * @version SVN: $Id$ + */ +class exceptionActions extends sfActions +{ + public function executeNoException() + { + return $this->renderText('foo'); + } + + public function executeThrowsException() + { + throw new Exception('Exception message'); + } + + public function executeThrowsSfException() + { + throw new sfException('sfException message'); + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/exception/actions/actions.class.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/exception/actions/actions.class.php new file mode 100644 index 0000000..0573c58 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/exception/actions/actions.class.php @@ -0,0 +1,27 @@ + + * @version SVN: $Id: actions.class.php 2980 2006-12-08 20:02:11Z fabien $ + */ +class exceptionActions extends sfActions +{ + public function executeNoException() + { + return $this->renderText('foo'); + } + + public function executeThrowsException() + { + throw new Exception('Exception message'); + } + + public function executeThrowsSfException() + { + throw new sfException('sfException message'); + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/filter/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/filter/.svn/all-wcprops new file mode 100644 index 0000000..bd6c16b --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/filter/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 82 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/filter +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/filter/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/filter/.svn/entries new file mode 100644 index 0000000..e4db045 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/filter/.svn/entries @@ -0,0 +1,31 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/filter +http://svn.symfony-project.com + + + +2006-10-30T16:36:31.615660Z +2569 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions +dir + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/filter/actions/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/filter/actions/.svn/all-wcprops new file mode 100644 index 0000000..bb5ca0e --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/filter/actions/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 90 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/filter/actions +END +actions.class.php +K 25 +svn:wc:ra_dav:version-url +V 108 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/filter/actions/actions.class.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/filter/actions/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/filter/actions/.svn/entries new file mode 100644 index 0000000..c25fe0c --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/filter/actions/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/filter/actions +http://svn.symfony-project.com + + + +2006-10-30T16:36:31.615660Z +2569 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions.class.php +file + + + + +2012-05-10T18:40:53.717548Z +105191be7c7432f7974ad5b9a4274848 +2006-10-30T16:36:31.615660Z +2569 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +443 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/filter/actions/.svn/prop-base/actions.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/filter/actions/.svn/prop-base/actions.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/filter/actions/.svn/prop-base/actions.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/filter/actions/.svn/text-base/actions.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/filter/actions/.svn/text-base/actions.class.php.svn-base new file mode 100644 index 0000000..21b1b82 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/filter/actions/.svn/text-base/actions.class.php.svn-base @@ -0,0 +1,22 @@ + + * @version SVN: $Id$ + */ +class filterActions extends sfActions +{ + public function executeIndex() + { + return $this->renderText('foo'); + } + + public function executeIndexWithForward() + { + $this->forward('filter', 'index'); + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/filter/actions/actions.class.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/filter/actions/actions.class.php new file mode 100644 index 0000000..ab69c57 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/filter/actions/actions.class.php @@ -0,0 +1,22 @@ + + * @version SVN: $Id: actions.class.php 2569 2006-10-30 16:36:31Z fabien $ + */ +class filterActions extends sfActions +{ + public function executeIndex() + { + return $this->renderText('foo'); + } + + public function executeIndexWithForward() + { + $this->forward('filter', 'index'); + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/.svn/all-wcprops new file mode 100644 index 0000000..875d879 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 82 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/format +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/.svn/entries new file mode 100644 index 0000000..00bb90d --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/.svn/entries @@ -0,0 +1,34 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/format +http://svn.symfony-project.com + + + +2008-09-26T18:08:49.298595Z +11805 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions +dir + +templates +dir + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/actions/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/actions/.svn/all-wcprops new file mode 100644 index 0000000..4de4f67 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/actions/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 90 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/format/actions +END +actions.class.php +K 25 +svn:wc:ra_dav:version-url +V 108 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/format/actions/actions.class.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/actions/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/actions/.svn/entries new file mode 100644 index 0000000..7730693 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/actions/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/format/actions +http://svn.symfony-project.com + + + +2008-09-26T18:08:49.298595Z +11805 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions.class.php +file + + + + +2012-05-10T18:40:53.833551Z +3d8a28e4f9c08e0038fddc81cd0cd541 +2008-09-26T18:08:49.298595Z +11805 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +919 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/actions/.svn/prop-base/actions.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/actions/.svn/prop-base/actions.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/actions/.svn/prop-base/actions.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/actions/.svn/text-base/actions.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/actions/.svn/text-base/actions.class.php.svn-base new file mode 100644 index 0000000..86a61e4 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/actions/.svn/text-base/actions.class.php.svn-base @@ -0,0 +1,46 @@ + + * @version SVN: $Id$ + */ +class formatActions extends sfActions +{ + public function executeIndex($request) + { + if ('xml' == $request->getRequestFormat()) + { + $this->setLayout('layout'); + } + } + + public function executeForTheIPhone($request) + { + $this->setTemplate('index'); + } + + public function executeJs($request) + { + $request->setRequestFormat('js'); + } + + public function executeJsWithAccept() + { + $this->setTemplate('index'); + } + + public function executeThrowsException() + { + throw new Exception('Descriptive message'); + } + + public function executeThrowsNonDebugException() + { + sfConfig::set('sf_debug', false); + throw new Exception('Descriptive message'); + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/actions/actions.class.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/actions/actions.class.php new file mode 100644 index 0000000..4c7d4bb --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/actions/actions.class.php @@ -0,0 +1,46 @@ + + * @version SVN: $Id: actions.class.php 11805 2008-09-26 18:08:49Z fabien $ + */ +class formatActions extends sfActions +{ + public function executeIndex($request) + { + if ('xml' == $request->getRequestFormat()) + { + $this->setLayout('layout'); + } + } + + public function executeForTheIPhone($request) + { + $this->setTemplate('index'); + } + + public function executeJs($request) + { + $request->setRequestFormat('js'); + } + + public function executeJsWithAccept() + { + $this->setTemplate('index'); + } + + public function executeThrowsException() + { + throw new Exception('Descriptive message'); + } + + public function executeThrowsNonDebugException() + { + sfConfig::set('sf_debug', false); + throw new Exception('Descriptive message'); + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/all-wcprops new file mode 100644 index 0000000..e025885 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/all-wcprops @@ -0,0 +1,47 @@ +K 25 +svn:wc:ra_dav:version-url +V 92 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/format/templates +END +indexSuccess.js.php +K 25 +svn:wc:ra_dav:version-url +V 112 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/format/templates/indexSuccess.js.php +END +_js_header.js.php +K 25 +svn:wc:ra_dav:version-url +V 110 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/format/templates/_js_header.js.php +END +indexSuccess.xml.php +K 25 +svn:wc:ra_dav:version-url +V 113 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/format/templates/indexSuccess.xml.php +END +indexSuccess.php +K 25 +svn:wc:ra_dav:version-url +V 109 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/format/templates/indexSuccess.php +END +jsSuccess.js.php +K 25 +svn:wc:ra_dav:version-url +V 109 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/format/templates/jsSuccess.js.php +END +indexSuccess.iphone.php +K 25 +svn:wc:ra_dav:version-url +V 116 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/format/templates/indexSuccess.iphone.php +END +indexSuccess.css.php +K 25 +svn:wc:ra_dav:version-url +V 113 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/format/templates/indexSuccess.css.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/entries new file mode 100644 index 0000000..b86c1bb --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/entries @@ -0,0 +1,266 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/format/templates +http://svn.symfony-project.com + + + +2008-04-03T10:47:59.008446Z +8227 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +indexSuccess.js.php +file + + + + +2012-05-10T18:40:54.053567Z +1189afbd87cebe8a2d7c7c0548b78811 +2008-04-03T10:47:59.008446Z +8227 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +64 + +_js_header.js.php +file + + + + +2012-05-10T18:40:54.053567Z +621a680a5bdcb97981e507caf1071817 +2008-04-03T10:47:59.008446Z +8227 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +16 + +indexSuccess.xml.php +file + + + + +2012-05-10T18:40:54.085564Z +ee62c5c0f1a9b0483d7f59f03b461b05 +2008-04-03T10:47:59.008446Z +8227 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +40 + +indexSuccess.php +file + + + + +2012-05-10T18:40:54.085564Z +81c3da2354c06e9402d1cdd0e444299b +2008-04-03T10:47:59.008446Z +8227 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +44 + +jsSuccess.js.php +file + + + + +2012-05-10T18:40:54.085564Z +5b636b015157c41a7bc9556217de1633 +2008-04-03T10:47:59.008446Z +8227 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +9 + +indexSuccess.iphone.php +file + + + + +2012-05-10T18:40:54.359591Z +3029d1466f388964bcb8f35dc0ad8a74 +2008-04-03T10:47:59.008446Z +8227 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +59 + +indexSuccess.css.php +file + + + + +2012-05-10T18:40:54.361549Z +de64bd45f2c0cc5fe36cc344474e3659 +2008-04-03T10:47:59.008446Z +8227 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +18 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/prop-base/_js_header.js.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/prop-base/_js_header.js.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/prop-base/_js_header.js.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/prop-base/indexSuccess.css.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/prop-base/indexSuccess.css.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/prop-base/indexSuccess.css.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/prop-base/indexSuccess.iphone.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/prop-base/indexSuccess.iphone.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/prop-base/indexSuccess.iphone.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/prop-base/indexSuccess.js.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/prop-base/indexSuccess.js.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/prop-base/indexSuccess.js.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/prop-base/indexSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/prop-base/indexSuccess.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/prop-base/indexSuccess.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/prop-base/indexSuccess.xml.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/prop-base/indexSuccess.xml.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/prop-base/indexSuccess.xml.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/prop-base/jsSuccess.js.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/prop-base/jsSuccess.js.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/prop-base/jsSuccess.js.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/text-base/_js_header.js.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/text-base/_js_header.js.php.svn-base new file mode 100644 index 0000000..e156cb5 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/text-base/_js_header.js.php.svn-base @@ -0,0 +1 @@ +Some js headers diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/text-base/indexSuccess.css.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/text-base/indexSuccess.css.php.svn-base new file mode 100644 index 0000000..271aed0 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/text-base/indexSuccess.css.php.svn-base @@ -0,0 +1 @@ +This is a css file \ No newline at end of file diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/text-base/indexSuccess.iphone.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/text-base/indexSuccess.iphone.php.svn-base new file mode 100644 index 0000000..d38e1e9 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/text-base/indexSuccess.iphone.php.svn-base @@ -0,0 +1 @@ +
            This is an HTML file for the iPhone
            \ No newline at end of file diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/text-base/indexSuccess.js.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/text-base/indexSuccess.js.php.svn-base new file mode 100644 index 0000000..7f26e8d --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/text-base/indexSuccess.js.php.svn-base @@ -0,0 +1,3 @@ + + +This is a js file diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/text-base/indexSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/text-base/indexSuccess.php.svn-base new file mode 100644 index 0000000..eff3a8c --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/text-base/indexSuccess.php.svn-base @@ -0,0 +1 @@ +
            This is an HTML file
            \ No newline at end of file diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/text-base/indexSuccess.xml.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/text-base/indexSuccess.xml.php.svn-base new file mode 100644 index 0000000..6b74a00 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/text-base/indexSuccess.xml.php.svn-base @@ -0,0 +1 @@ +This is a XML file diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/text-base/jsSuccess.js.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/text-base/jsSuccess.js.php.svn-base new file mode 100644 index 0000000..e8efc02 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/.svn/text-base/jsSuccess.js.php.svn-base @@ -0,0 +1 @@ +A js file \ No newline at end of file diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/_js_header.js.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/_js_header.js.php new file mode 100644 index 0000000..e156cb5 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/_js_header.js.php @@ -0,0 +1 @@ +Some js headers diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/indexSuccess.css.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/indexSuccess.css.php new file mode 100644 index 0000000..271aed0 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/indexSuccess.css.php @@ -0,0 +1 @@ +This is a css file \ No newline at end of file diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/indexSuccess.iphone.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/indexSuccess.iphone.php new file mode 100644 index 0000000..d38e1e9 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/indexSuccess.iphone.php @@ -0,0 +1 @@ +
            This is an HTML file for the iPhone
            \ No newline at end of file diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/indexSuccess.js.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/indexSuccess.js.php new file mode 100644 index 0000000..7f26e8d --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/indexSuccess.js.php @@ -0,0 +1,3 @@ + + +This is a js file diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/indexSuccess.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/indexSuccess.php new file mode 100644 index 0000000..eff3a8c --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/indexSuccess.php @@ -0,0 +1 @@ +
            This is an HTML file
            \ No newline at end of file diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/indexSuccess.xml.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/indexSuccess.xml.php new file mode 100644 index 0000000..6b74a00 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/indexSuccess.xml.php @@ -0,0 +1 @@ +This is a XML file diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/jsSuccess.js.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/jsSuccess.js.php new file mode 100644 index 0000000..e8efc02 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/format/templates/jsSuccess.js.php @@ -0,0 +1 @@ +A js file \ No newline at end of file diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/notfound/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/notfound/.svn/all-wcprops new file mode 100644 index 0000000..f3d8318 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/notfound/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 84 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/notfound +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/notfound/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/notfound/.svn/entries new file mode 100644 index 0000000..e130126 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/notfound/.svn/entries @@ -0,0 +1,31 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/notfound +http://svn.symfony-project.com + + + +2007-07-08T15:36:39.181060Z +4560 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions +dir + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/notfound/actions/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/notfound/actions/.svn/all-wcprops new file mode 100644 index 0000000..f1baa4c --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/notfound/actions/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 92 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/notfound/actions +END +actions.class.php +K 25 +svn:wc:ra_dav:version-url +V 110 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/notfound/actions/actions.class.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/notfound/actions/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/notfound/actions/.svn/entries new file mode 100644 index 0000000..a810870 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/notfound/actions/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/notfound/actions +http://svn.symfony-project.com + + + +2007-07-08T15:36:39.181060Z +4560 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions.class.php +file + + + + +2012-05-10T18:40:54.765552Z +188b343f865ce7d5dee7c481b4b85371 +2007-07-08T15:36:39.181060Z +4560 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +404 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/notfound/actions/.svn/prop-base/actions.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/notfound/actions/.svn/prop-base/actions.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/notfound/actions/.svn/prop-base/actions.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/notfound/actions/.svn/text-base/actions.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/notfound/actions/.svn/text-base/actions.class.php.svn-base new file mode 100644 index 0000000..d39ee10 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/notfound/actions/.svn/text-base/actions.class.php.svn-base @@ -0,0 +1,19 @@ + + * @version SVN: $Id$ + */ +class notfoundActions extends sfActions +{ + public function executeIndex() + { + $this->getResponse()->setStatusCode(404); + + return $this->renderText('404'); + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/notfound/actions/actions.class.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/notfound/actions/actions.class.php new file mode 100644 index 0000000..c429def --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/notfound/actions/actions.class.php @@ -0,0 +1,19 @@ + + * @version SVN: $Id: actions.class.php 4560 2007-07-08 15:36:39Z fabien $ + */ +class notfoundActions extends sfActions +{ + public function executeIndex() + { + $this->getResponse()->setStatusCode(404); + + return $this->renderText('404'); + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/.svn/all-wcprops new file mode 100644 index 0000000..a9479fd --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 88 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/presentation +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/.svn/entries new file mode 100644 index 0000000..d6c645d --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/.svn/entries @@ -0,0 +1,34 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/presentation +http://svn.symfony-project.com + + + +2007-08-30T08:40:10.356919Z +4937 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions +dir + +templates +dir + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/actions/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/actions/.svn/all-wcprops new file mode 100644 index 0000000..1827c20 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/actions/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 96 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/presentation/actions +END +actions.class.php +K 25 +svn:wc:ra_dav:version-url +V 114 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/presentation/actions/actions.class.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/actions/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/actions/.svn/entries new file mode 100644 index 0000000..d32ceff --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/actions/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/presentation/actions +http://svn.symfony-project.com + + + +2007-08-30T08:40:10.356919Z +4937 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions.class.php +file + + + + +2012-05-10T18:40:56.809552Z +69727c1661f92b6734428b5b2a6a4266 +2007-08-30T08:40:10.356919Z +4937 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +477 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/actions/.svn/prop-base/actions.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/actions/.svn/prop-base/actions.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/actions/.svn/prop-base/actions.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/actions/.svn/text-base/actions.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/actions/.svn/text-base/actions.class.php.svn-base new file mode 100644 index 0000000..f84af61 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/actions/.svn/text-base/actions.class.php.svn-base @@ -0,0 +1,22 @@ + + * @version SVN: $Id$ + */ +class presentationActions extends sfActions +{ + public function executeIndex() + { + $this->foo = $this->getController()->getPresentationFor('presentation', 'foo'); + } + + public function executeFoo() + { + $this->setLayout(false); + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/actions/actions.class.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/actions/actions.class.php new file mode 100644 index 0000000..4409811 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/actions/actions.class.php @@ -0,0 +1,22 @@ + + * @version SVN: $Id: actions.class.php 4937 2007-08-30 08:40:10Z fabien $ + */ +class presentationActions extends sfActions +{ + public function executeIndex() + { + $this->foo = $this->getController()->getPresentationFor('presentation', 'foo'); + } + + public function executeFoo() + { + $this->setLayout(false); + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/templates/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/templates/.svn/all-wcprops new file mode 100644 index 0000000..2dc7424 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/templates/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 98 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/presentation/templates +END +fooSuccess.php +K 25 +svn:wc:ra_dav:version-url +V 113 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/presentation/templates/fooSuccess.php +END +indexSuccess.php +K 25 +svn:wc:ra_dav:version-url +V 115 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/presentation/templates/indexSuccess.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/templates/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/templates/.svn/entries new file mode 100644 index 0000000..58e02c6 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/templates/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/presentation/templates +http://svn.symfony-project.com + + + +2007-08-30T08:40:10.356919Z +4937 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +fooSuccess.php +file + + + + +2012-05-10T18:40:56.885554Z +acbd18db4cc2f85cedef654fccc4a4d8 +2007-01-10T08:37:24.201791Z +3209 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +3 + +indexSuccess.php +file + + + + +2012-05-10T18:40:56.885554Z +9d0c1d9b32a3f772ddd2deba9a55e5ba +2007-08-30T08:40:10.356919Z +4937 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +149 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/templates/.svn/prop-base/fooSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/templates/.svn/prop-base/fooSuccess.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/templates/.svn/prop-base/fooSuccess.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/templates/.svn/prop-base/indexSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/templates/.svn/prop-base/indexSuccess.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/templates/.svn/prop-base/indexSuccess.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/templates/.svn/text-base/fooSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/templates/.svn/text-base/fooSuccess.php.svn-base new file mode 100644 index 0000000..1910281 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/templates/.svn/text-base/fooSuccess.php.svn-base @@ -0,0 +1 @@ +foo \ No newline at end of file diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/templates/.svn/text-base/indexSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/templates/.svn/text-base/indexSuccess.php.svn-base new file mode 100644 index 0000000..91c08d4 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/templates/.svn/text-base/indexSuccess.php.svn-base @@ -0,0 +1,2 @@ +
            +
            getController()->getPresentationFor('presentation', 'foo') ?>
            diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/templates/fooSuccess.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/templates/fooSuccess.php new file mode 100644 index 0000000..1910281 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/templates/fooSuccess.php @@ -0,0 +1 @@ +foo \ No newline at end of file diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/templates/indexSuccess.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/templates/indexSuccess.php new file mode 100644 index 0000000..91c08d4 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/presentation/templates/indexSuccess.php @@ -0,0 +1,2 @@ +
            +
            getController()->getPresentationFor('presentation', 'foo') ?>
            diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/renderText/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/renderText/.svn/all-wcprops new file mode 100644 index 0000000..8f399d4 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/renderText/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 86 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/renderText +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/renderText/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/renderText/.svn/entries new file mode 100644 index 0000000..2bcd3b1 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/renderText/.svn/entries @@ -0,0 +1,31 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/renderText +http://svn.symfony-project.com + + + +2006-12-04T12:40:19.639023Z +2895 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions +dir + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/renderText/actions/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/renderText/actions/.svn/all-wcprops new file mode 100644 index 0000000..3da02c3 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/renderText/actions/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 94 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/renderText/actions +END +actions.class.php +K 25 +svn:wc:ra_dav:version-url +V 112 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/renderText/actions/actions.class.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/renderText/actions/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/renderText/actions/.svn/entries new file mode 100644 index 0000000..fd82c18 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/renderText/actions/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/renderText/actions +http://svn.symfony-project.com + + + +2006-12-04T12:40:19.639023Z +2895 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions.class.php +file + + + + +2012-05-10T18:40:53.489551Z +73ba8e4996589b7c0cc1689badcbe44b +2006-12-04T12:40:19.639023Z +2895 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +363 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/renderText/actions/.svn/prop-base/actions.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/renderText/actions/.svn/prop-base/actions.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/renderText/actions/.svn/prop-base/actions.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/renderText/actions/.svn/text-base/actions.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/renderText/actions/.svn/text-base/actions.class.php.svn-base new file mode 100644 index 0000000..46a693a --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/renderText/actions/.svn/text-base/actions.class.php.svn-base @@ -0,0 +1,17 @@ + + * @version SVN: $Id$ + */ +class renderTextActions extends sfActions +{ + public function executeIndex() + { + return $this->renderText('foo'); + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/renderText/actions/actions.class.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/renderText/actions/actions.class.php new file mode 100644 index 0000000..814315f --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/renderText/actions/actions.class.php @@ -0,0 +1,17 @@ + + * @version SVN: $Id: actions.class.php 2895 2006-12-04 12:40:19Z fabien $ + */ +class renderTextActions extends sfActions +{ + public function executeIndex() + { + return $this->renderText('foo'); + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin/.svn/all-wcprops new file mode 100644 index 0000000..60e0216 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 90 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin/.svn/entries new file mode 100644 index 0000000..d0f3359 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin/.svn/entries @@ -0,0 +1,31 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin +http://svn.symfony-project.com + + + +2007-01-07T16:41:20.891453Z +3178 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +config +dir + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin/config/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin/config/.svn/all-wcprops new file mode 100644 index 0000000..254f8c6 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin/config/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 97 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin/config +END +filters.yml +K 25 +svn:wc:ra_dav:version-url +V 109 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin/config/filters.yml +END +view.yml +K 25 +svn:wc:ra_dav:version-url +V 106 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin/config/view.yml +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin/config/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin/config/.svn/entries new file mode 100644 index 0000000..7f50134 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin/config/.svn/entries @@ -0,0 +1,99 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin/config +http://svn.symfony-project.com + + + +2007-01-07T16:41:20.891453Z +3178 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +filters.yml +file + + + + +2012-05-10T18:40:57.141551Z +d41d8cd98f00b204e9800998ecf8427e +2007-01-07T16:41:20.891453Z +3178 +fabien + + + + + + + + + + + + + + + + + + + + + +0 + +dirmyconfig +dir + +view.yml +file + + + + +2012-05-10T18:40:57.141551Z +d41d8cd98f00b204e9800998ecf8427e +2007-01-07T16:41:20.891453Z +3178 +fabien + + + + + + + + + + + + + + + + + + + + + +0 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin/config/.svn/text-base/filters.yml.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin/config/.svn/text-base/filters.yml.svn-base new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin/config/.svn/text-base/view.yml.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin/config/.svn/text-base/view.yml.svn-base new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin/config/dirmyconfig/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin/config/dirmyconfig/.svn/all-wcprops new file mode 100644 index 0000000..54f08a1 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin/config/dirmyconfig/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 109 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin/config/dirmyconfig +END +myconfig.yml +K 25 +svn:wc:ra_dav:version-url +V 122 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin/config/dirmyconfig/myconfig.yml +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin/config/dirmyconfig/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin/config/dirmyconfig/.svn/entries new file mode 100644 index 0000000..8036814 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin/config/dirmyconfig/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin/config/dirmyconfig +http://svn.symfony-project.com + + + +2007-01-07T16:41:20.891453Z +3178 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +myconfig.yml +file + + + + +2012-05-10T18:40:57.121551Z +d41d8cd98f00b204e9800998ecf8427e +2007-01-07T16:41:20.891453Z +3178 +fabien + + + + + + + + + + + + + + + + + + + + + +0 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin/config/dirmyconfig/.svn/text-base/myconfig.yml.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin/config/dirmyconfig/.svn/text-base/myconfig.yml.svn-base new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin/config/dirmyconfig/myconfig.yml b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin/config/dirmyconfig/myconfig.yml new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin/config/filters.yml b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin/config/filters.yml new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin/config/view.yml b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/sfConfigPlugin/config/view.yml new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/.svn/all-wcprops new file mode 100644 index 0000000..04b2182 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 80 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/view +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/.svn/entries new file mode 100644 index 0000000..0ced3d3 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/.svn/entries @@ -0,0 +1,37 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/view +http://svn.symfony-project.com + + + +2008-04-17T06:06:14.839502Z +8497 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions +dir + +config +dir + +templates +dir + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/actions/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/actions/.svn/all-wcprops new file mode 100644 index 0000000..2ea4109 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/actions/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 88 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/view/actions +END +actions.class.php +K 25 +svn:wc:ra_dav:version-url +V 106 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/view/actions/actions.class.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/actions/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/actions/.svn/entries new file mode 100644 index 0000000..47b3a7a --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/actions/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/view/actions +http://svn.symfony-project.com + + + +2008-04-17T06:06:14.839502Z +8497 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions.class.php +file + + + + +2012-05-10T18:40:56.581549Z +4dc4bb87c136e9cca00ecbeffe16df79 +2008-04-17T06:06:14.839502Z +8497 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +423 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/actions/.svn/prop-base/actions.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/actions/.svn/prop-base/actions.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/actions/.svn/prop-base/actions.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/actions/.svn/text-base/actions.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/actions/.svn/text-base/actions.class.php.svn-base new file mode 100644 index 0000000..c8d16b7 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/actions/.svn/text-base/actions.class.php.svn-base @@ -0,0 +1,25 @@ + + * @version SVN: $Id$ + */ +class viewActions extends sfActions +{ + public function executeIndex() + { + $this->setTemplate('foo'); + } + + public function executePlain() + { + } + + public function executeImage() + { + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/actions/actions.class.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/actions/actions.class.php new file mode 100644 index 0000000..545817e --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/actions/actions.class.php @@ -0,0 +1,25 @@ + + * @version SVN: $Id: actions.class.php 8497 2008-04-17 06:06:14Z fabien $ + */ +class viewActions extends sfActions +{ + public function executeIndex() + { + $this->setTemplate('foo'); + } + + public function executePlain() + { + } + + public function executeImage() + { + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/config/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/config/.svn/all-wcprops new file mode 100644 index 0000000..f3e42b1 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/config/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 87 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/view/config +END +view.yml +K 25 +svn:wc:ra_dav:version-url +V 96 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/view/config/view.yml +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/config/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/config/.svn/entries new file mode 100644 index 0000000..ff67232 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/config/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/view/config +http://svn.symfony-project.com + + + +2008-04-17T06:06:14.839502Z +8497 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +view.yml +file + + + + +2012-05-10T18:40:56.621551Z +68c015a3c22ca16938a826126145ffe8 +2008-04-17T06:06:14.839502Z +8497 +fabien + + + + + + + + + + + + + + + + + + + + + +224 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/config/.svn/text-base/view.yml.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/config/.svn/text-base/view.yml.svn-base new file mode 100644 index 0000000..cb19bda --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/config/.svn/text-base/view.yml.svn-base @@ -0,0 +1,16 @@ +fooSuccess: + metas: + title: foo title + +indexSuccess: + metas: + title: index title + +plainSuccess: + http_metas: + content-type: text/plain + +imageSuccess: + http_metas: + content-type: image/jpg + has_layout: false diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/config/view.yml b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/config/view.yml new file mode 100644 index 0000000..cb19bda --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/config/view.yml @@ -0,0 +1,16 @@ +fooSuccess: + metas: + title: foo title + +indexSuccess: + metas: + title: index title + +plainSuccess: + http_metas: + content-type: text/plain + +imageSuccess: + http_metas: + content-type: image/jpg + has_layout: false diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/templates/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/templates/.svn/all-wcprops new file mode 100644 index 0000000..1775fb1 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/templates/.svn/all-wcprops @@ -0,0 +1,23 @@ +K 25 +svn:wc:ra_dav:version-url +V 90 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/view/templates +END +imageSuccess.php +K 25 +svn:wc:ra_dav:version-url +V 107 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/view/templates/imageSuccess.php +END +fooSuccess.php +K 25 +svn:wc:ra_dav:version-url +V 105 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/view/templates/fooSuccess.php +END +plainSuccess.php +K 25 +svn:wc:ra_dav:version-url +V 107 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/modules/view/templates/plainSuccess.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/templates/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/templates/.svn/entries new file mode 100644 index 0000000..01c6cf0 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/templates/.svn/entries @@ -0,0 +1,130 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/modules/view/templates +http://svn.symfony-project.com + + + +2008-04-17T06:06:14.839502Z +8497 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +imageSuccess.php +file + + + + +2012-05-10T18:40:56.709550Z +78805a221a988e79ef3f42d7c5bfd418 +2008-04-17T06:06:14.839502Z +8497 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +5 + +fooSuccess.php +file + + + + +2012-05-10T18:40:56.709550Z +37b51d194a7513e45b56f6524f2d51f2 +2006-12-06T12:46:11.246423Z +2932 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +3 + +plainSuccess.php +file + + + + +2012-05-10T18:40:56.709550Z +f2bc5b1d869870d7688f71b2d87030bd +2008-04-17T06:06:14.839502Z +8497 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +9 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/templates/.svn/prop-base/fooSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/templates/.svn/prop-base/fooSuccess.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/templates/.svn/prop-base/fooSuccess.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/templates/.svn/prop-base/imageSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/templates/.svn/prop-base/imageSuccess.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/templates/.svn/prop-base/imageSuccess.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/templates/.svn/prop-base/plainSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/templates/.svn/prop-base/plainSuccess.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/templates/.svn/prop-base/plainSuccess.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/templates/.svn/text-base/fooSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/templates/.svn/text-base/fooSuccess.php.svn-base new file mode 100644 index 0000000..ba0e162 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/templates/.svn/text-base/fooSuccess.php.svn-base @@ -0,0 +1 @@ +bar \ No newline at end of file diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/templates/.svn/text-base/imageSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/templates/.svn/text-base/imageSuccess.php.svn-base new file mode 100644 index 0000000..47653ee --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/templates/.svn/text-base/imageSuccess.php.svn-base @@ -0,0 +1 @@ +image \ No newline at end of file diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/templates/.svn/text-base/plainSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/templates/.svn/text-base/plainSuccess.php.svn-base new file mode 100644 index 0000000..7ce8a85 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/templates/.svn/text-base/plainSuccess.php.svn-base @@ -0,0 +1 @@ +plaintext \ No newline at end of file diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/templates/fooSuccess.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/templates/fooSuccess.php new file mode 100644 index 0000000..ba0e162 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/templates/fooSuccess.php @@ -0,0 +1 @@ +bar \ No newline at end of file diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/templates/imageSuccess.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/templates/imageSuccess.php new file mode 100644 index 0000000..47653ee --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/templates/imageSuccess.php @@ -0,0 +1 @@ +image \ No newline at end of file diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/templates/plainSuccess.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/templates/plainSuccess.php new file mode 100644 index 0000000..7ce8a85 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/modules/view/templates/plainSuccess.php @@ -0,0 +1 @@ +plaintext \ No newline at end of file diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/templates/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/templates/.svn/all-wcprops new file mode 100644 index 0000000..7fabb19 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/templates/.svn/all-wcprops @@ -0,0 +1,23 @@ +K 25 +svn:wc:ra_dav:version-url +V 77 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/templates +END +layout.xml.php +K 25 +svn:wc:ra_dav:version-url +V 92 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/templates/layout.xml.php +END +layout.php +K 25 +svn:wc:ra_dav:version-url +V 88 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/templates/layout.php +END +layout.iphone.php +K 25 +svn:wc:ra_dav:version-url +V 95 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/frontend/templates/layout.iphone.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/templates/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/templates/.svn/entries new file mode 100644 index 0000000..86dd7e7 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/templates/.svn/entries @@ -0,0 +1,130 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/frontend/templates +http://svn.symfony-project.com + + + +2009-04-30T07:13:08.234464Z +17794 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +layout.xml.php +file + + + + +2012-05-10T18:40:57.753554Z +d448389f831b09e213dd87df48ea12b3 +2008-04-03T10:47:59.008446Z +8227 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +53 + +layout.php +file + + + + +2012-05-10T18:40:57.753554Z +fed91e1e8658e1a885a3608c99c9faa5 +2009-04-30T07:13:08.234464Z +17794 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +475 + +layout.iphone.php +file + + + + +2012-05-10T18:40:57.858193Z +fed91e1e8658e1a885a3608c99c9faa5 +2009-04-30T07:13:08.234464Z +17794 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +475 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/templates/.svn/prop-base/layout.iphone.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/templates/.svn/prop-base/layout.iphone.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/templates/.svn/prop-base/layout.iphone.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/templates/.svn/prop-base/layout.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/templates/.svn/prop-base/layout.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/templates/.svn/prop-base/layout.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/templates/.svn/prop-base/layout.xml.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/templates/.svn/prop-base/layout.xml.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/templates/.svn/prop-base/layout.xml.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/templates/.svn/text-base/layout.iphone.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/templates/.svn/text-base/layout.iphone.php.svn-base new file mode 100644 index 0000000..6d75aa8 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/templates/.svn/text-base/layout.iphone.php.svn-base @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/templates/.svn/text-base/layout.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/templates/.svn/text-base/layout.php.svn-base new file mode 100644 index 0000000..6d75aa8 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/templates/.svn/text-base/layout.php.svn-base @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/templates/.svn/text-base/layout.xml.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/templates/.svn/text-base/layout.xml.php.svn-base new file mode 100644 index 0000000..c34fd80 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/templates/.svn/text-base/layout.xml.php.svn-base @@ -0,0 +1,3 @@ + + + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/templates/layout.iphone.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/templates/layout.iphone.php new file mode 100644 index 0000000..6d75aa8 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/templates/layout.iphone.php @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/templates/layout.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/templates/layout.php new file mode 100644 index 0000000..6d75aa8 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/templates/layout.php @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/frontend/templates/layout.xml.php b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/templates/layout.xml.php new file mode 100644 index 0000000..c34fd80 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/frontend/templates/layout.xml.php @@ -0,0 +1,3 @@ + + + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/.svn/all-wcprops new file mode 100644 index 0000000..9ebb3f9 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 63 +/!svn/ver/24434/branches/1.4/test/functional/fixtures/apps/i18n +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/.svn/entries new file mode 100644 index 0000000..8009148 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/.svn/entries @@ -0,0 +1,43 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/i18n +http://svn.symfony-project.com + + + +2009-11-26T11:52:47.753777Z +24434 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +i18n +dir + +config +dir + +lib +dir + +modules +dir + +templates +dir + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/.svn/all-wcprops new file mode 100644 index 0000000..cdd5424 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/.svn/all-wcprops @@ -0,0 +1,59 @@ +K 25 +svn:wc:ra_dav:version-url +V 70 +/!svn/ver/24434/branches/1.4/test/functional/fixtures/apps/i18n/config +END +factories.yml +K 25 +svn:wc:ra_dav:version-url +V 84 +/!svn/ver/24434/branches/1.4/test/functional/fixtures/apps/i18n/config/factories.yml +END +app.yml +K 25 +svn:wc:ra_dav:version-url +V 78 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/i18n/config/app.yml +END +settings.yml +K 25 +svn:wc:ra_dav:version-url +V 83 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/i18n/config/settings.yml +END +i18nConfiguration.class.php +K 25 +svn:wc:ra_dav:version-url +V 98 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/i18n/config/i18nConfiguration.class.php +END +cache.yml +K 25 +svn:wc:ra_dav:version-url +V 80 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/i18n/config/cache.yml +END +routing.yml +K 25 +svn:wc:ra_dav:version-url +V 82 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/i18n/config/routing.yml +END +security.yml +K 25 +svn:wc:ra_dav:version-url +V 83 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/i18n/config/security.yml +END +filters.yml +K 25 +svn:wc:ra_dav:version-url +V 82 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/i18n/config/filters.yml +END +view.yml +K 25 +svn:wc:ra_dav:version-url +V 79 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/i18n/config/view.yml +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/.svn/entries new file mode 100644 index 0000000..d04b37a --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/.svn/entries @@ -0,0 +1,334 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/i18n/config +http://svn.symfony-project.com + + + +2009-11-26T11:52:47.753777Z +24434 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +factories.yml +file + + + + +2012-05-10T18:40:58.029546Z +a66e8e26cd1d4950fd440da104aedab8 +2009-11-26T11:52:47.753777Z +24434 +fabien + + + + + + + + + + + + + + + + + + + + + +277 + +app.yml +file + + + + +2012-05-10T18:40:58.029546Z +6f622a40f3255229a7ce20d54358432a +2006-11-17T16:06:52.246609Z +2740 +fabien + + + + + + + + + + + + + + + + + + + + + +22 + +settings.yml +file + + + + +2012-05-10T18:40:58.029546Z +73e2a69b036de0f81a4b404af47f9f0b +2009-09-11T07:38:24.815935Z +21884 +fabien + + + + + + + + + + + + + + + + + + + + + +632 + +i18nConfiguration.class.php +file + + + + +2012-05-10T18:40:58.029546Z +4386868a12ba25332fc2a74f9f35cf04 +2008-11-06T01:35:07.969132Z +12673 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +167 + +cache.yml +file + + + + +2012-05-10T18:40:58.041551Z +e8bf44a2ebd40560e059ae7ee72f6433 +2009-09-11T07:38:24.815935Z +21884 +fabien + + + + + + + + + + + + + + + + + + + + + +72 + +routing.yml +file + + + + +2012-05-10T18:40:58.041551Z +69a58bdcb615be65234bdc1d1248e6b5 +2006-11-17T16:06:52.246609Z +2740 +fabien + + + + + + + + + + + + + + + + + + + + + +128 + +security.yml +file + + + + +2012-05-10T18:40:58.122601Z +a66fd43f8b3cc8d473e52a49d4938d99 +2009-09-11T07:38:24.815935Z +21884 +fabien + + + + + + + + + + + + + + + + + + + + + +28 + +filters.yml +file + + + + +2012-05-10T18:40:58.122601Z +829ab23cd7f7f9d6448c477893249a73 +2009-04-30T07:13:08.234464Z +17794 +fabien + + + + + + + + + + + + + + + + + + + + + +114 + +view.yml +file + + + + +2012-05-10T18:40:58.122601Z +721f76e57c90a9a2c2dd82f3a56443dc +2009-09-11T07:38:24.815935Z +21884 +fabien + + + + + + + + + + + + + + + + + + + + + +315 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/.svn/prop-base/i18nConfiguration.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/.svn/prop-base/i18nConfiguration.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/.svn/prop-base/i18nConfiguration.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/.svn/text-base/app.yml.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/.svn/text-base/app.yml.svn-base new file mode 100644 index 0000000..24e2621 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/.svn/text-base/app.yml.svn-base @@ -0,0 +1,2 @@ +# default values +all: diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/.svn/text-base/cache.yml.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/.svn/text-base/cache.yml.svn-base new file mode 100644 index 0000000..c120397 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/.svn/text-base/cache.yml.svn-base @@ -0,0 +1,4 @@ +default: + enabled: false + with_layout: false + lifetime: 86400 diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/.svn/text-base/factories.yml.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/.svn/text-base/factories.yml.svn-base new file mode 100644 index 0000000..1b33b56 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/.svn/text-base/factories.yml.svn-base @@ -0,0 +1,17 @@ +prod: + logger: + class: sfNoLogger + param: + level: err + loggers: ~ + +test: + response: + class: sfWebResponse + param: + send_http_headers: false + + storage: + class: sfSessionTestStorage + param: + session_path: %SF_TEST_CACHE_DIR%/sessions diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/.svn/text-base/filters.yml.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/.svn/text-base/filters.yml.svn-base new file mode 100644 index 0000000..2f1f029 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/.svn/text-base/filters.yml.svn-base @@ -0,0 +1,8 @@ +rendering: ~ +security: ~ + +# generally, you will want to insert your own filters here + +cache: ~ + +execution: ~ diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/.svn/text-base/i18nConfiguration.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/.svn/text-base/i18nConfiguration.class.php.svn-base new file mode 100644 index 0000000..f3ff11b --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/.svn/text-base/i18nConfiguration.class.php.svn-base @@ -0,0 +1,10 @@ +enablePlugins('sfI18NPlugin'); + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/.svn/text-base/routing.yml.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/.svn/text-base/routing.yml.svn-base new file mode 100644 index 0000000..bdf4faf --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/.svn/text-base/routing.yml.svn-base @@ -0,0 +1,7 @@ +# default rules +homepage: + url: / + param: { module: i18n, action: index } + +default: + url: /:sf_culture/:module/:action/* diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/.svn/text-base/security.yml.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/.svn/text-base/security.yml.svn-base new file mode 100644 index 0000000..2a35e05 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/.svn/text-base/security.yml.svn-base @@ -0,0 +1,2 @@ +default: + is_secure: false diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/.svn/text-base/settings.yml.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/.svn/text-base/settings.yml.svn-base new file mode 100644 index 0000000..bffb419 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/.svn/text-base/settings.yml.svn-base @@ -0,0 +1,25 @@ +prod: + .settings: + logging_enabled: false + no_script_name: false + +dev: + .settings: + error_reporting: + web_debug: true + cache: false + no_script_name: false + etag: false + +test: + .settings: + error_reporting: + cache: false + web_debug: false + no_script_name: false + etag: false + +all: + .settings: + i18n: true + enabled_modules: [default, sfI18NPlugin] diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/.svn/text-base/view.yml.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/.svn/text-base/view.yml.svn-base new file mode 100644 index 0000000..901d830 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/.svn/text-base/view.yml.svn-base @@ -0,0 +1,17 @@ +default: + http_metas: + content-type: text/html + + metas: + title: symfony project + robots: index, follow + description: symfony project + keywords: symfony, project + language: en + + stylesheets: [main] + + javascripts: [ ] + + has_layout: true + layout: layout diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/app.yml b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/app.yml new file mode 100644 index 0000000..24e2621 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/app.yml @@ -0,0 +1,2 @@ +# default values +all: diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/cache.yml b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/cache.yml new file mode 100644 index 0000000..c120397 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/cache.yml @@ -0,0 +1,4 @@ +default: + enabled: false + with_layout: false + lifetime: 86400 diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/factories.yml b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/factories.yml new file mode 100644 index 0000000..1b33b56 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/factories.yml @@ -0,0 +1,17 @@ +prod: + logger: + class: sfNoLogger + param: + level: err + loggers: ~ + +test: + response: + class: sfWebResponse + param: + send_http_headers: false + + storage: + class: sfSessionTestStorage + param: + session_path: %SF_TEST_CACHE_DIR%/sessions diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/filters.yml b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/filters.yml new file mode 100644 index 0000000..2f1f029 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/filters.yml @@ -0,0 +1,8 @@ +rendering: ~ +security: ~ + +# generally, you will want to insert your own filters here + +cache: ~ + +execution: ~ diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/i18nConfiguration.class.php b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/i18nConfiguration.class.php new file mode 100644 index 0000000..f3ff11b --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/i18nConfiguration.class.php @@ -0,0 +1,10 @@ +enablePlugins('sfI18NPlugin'); + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/routing.yml b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/routing.yml new file mode 100644 index 0000000..bdf4faf --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/routing.yml @@ -0,0 +1,7 @@ +# default rules +homepage: + url: / + param: { module: i18n, action: index } + +default: + url: /:sf_culture/:module/:action/* diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/security.yml b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/security.yml new file mode 100644 index 0000000..2a35e05 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/security.yml @@ -0,0 +1,2 @@ +default: + is_secure: false diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/settings.yml b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/settings.yml new file mode 100644 index 0000000..bffb419 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/settings.yml @@ -0,0 +1,25 @@ +prod: + .settings: + logging_enabled: false + no_script_name: false + +dev: + .settings: + error_reporting: + web_debug: true + cache: false + no_script_name: false + etag: false + +test: + .settings: + error_reporting: + cache: false + web_debug: false + no_script_name: false + etag: false + +all: + .settings: + i18n: true + enabled_modules: [default, sfI18NPlugin] diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/view.yml b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/view.yml new file mode 100644 index 0000000..901d830 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/config/view.yml @@ -0,0 +1,17 @@ +default: + http_metas: + content-type: text/html + + metas: + title: symfony project + robots: index, follow + description: symfony project + keywords: symfony, project + language: en + + stylesheets: [main] + + javascripts: [ ] + + has_layout: true + layout: layout diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/i18n/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/i18n/.svn/all-wcprops new file mode 100644 index 0000000..ee71296 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/i18n/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 68 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/i18n/i18n +END +other.fr.xml +K 25 +svn:wc:ra_dav:version-url +V 81 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/i18n/i18n/other.fr.xml +END +messages.fr.xml +K 25 +svn:wc:ra_dav:version-url +V 84 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/i18n/i18n/messages.fr.xml +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/i18n/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/i18n/.svn/entries new file mode 100644 index 0000000..8df8ad1 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/i18n/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/i18n/i18n +http://svn.symfony-project.com + + + +2007-06-23T10:32:13.647971Z +4344 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +other.fr.xml +file + + + + +2012-05-10T18:40:57.937553Z +6e50960790a7e27e3a543f0522fe445e +2006-11-18T10:11:00.035439Z +2757 +fabien + + + + + + + + + + + + + + + + + + + + + +304 + +messages.fr.xml +file + + + + +2012-05-10T18:40:57.937553Z +d11a2430571261cc992e84039eae1f7f +2007-06-23T10:32:13.647971Z +4344 +fabien + + + + + + + + + + + + + + + + + + + + + +532 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/i18n/.svn/text-base/messages.fr.xml.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/i18n/.svn/text-base/messages.fr.xml.svn-base new file mode 100644 index 0000000..3a83426 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/i18n/.svn/text-base/messages.fr.xml.svn-base @@ -0,0 +1,15 @@ + + + + + + an english sentence + une phrase en français + + + yet another english sentence from plugin + encore une autre phrase en français - from plugin but translation overridden in the application + + + + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/i18n/.svn/text-base/other.fr.xml.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/i18n/.svn/text-base/other.fr.xml.svn-base new file mode 100644 index 0000000..e71185d --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/i18n/.svn/text-base/other.fr.xml.svn-base @@ -0,0 +1,11 @@ + + + + + + an english sentence + une autre phrase en français + + + + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/i18n/messages.fr.xml b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/i18n/messages.fr.xml new file mode 100644 index 0000000..3a83426 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/i18n/messages.fr.xml @@ -0,0 +1,15 @@ + + + + + + an english sentence + une phrase en français + + + yet another english sentence from plugin + encore une autre phrase en français - from plugin but translation overridden in the application + + + + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/i18n/other.fr.xml b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/i18n/other.fr.xml new file mode 100644 index 0000000..e71185d --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/i18n/other.fr.xml @@ -0,0 +1,11 @@ + + + + + + an english sentence + une autre phrase en français + + + + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/lib/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/lib/.svn/all-wcprops new file mode 100644 index 0000000..bcb908e --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/lib/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 67 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/i18n/lib +END +myUser.class.php +K 25 +svn:wc:ra_dav:version-url +V 84 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/i18n/lib/myUser.class.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/lib/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/lib/.svn/entries new file mode 100644 index 0000000..c6bbb07 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/lib/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/i18n/lib +http://svn.symfony-project.com + + + +2006-11-17T16:06:52.246609Z +2740 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +myUser.class.php +file + + + + +2012-05-10T18:40:58.129550Z +215548048bbbdd100411afc00252a797 +2006-11-17T16:06:52.246609Z +2740 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +52 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/lib/.svn/prop-base/myUser.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/lib/.svn/prop-base/myUser.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/lib/.svn/prop-base/myUser.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/lib/.svn/text-base/myUser.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/lib/.svn/text-base/myUser.class.php.svn-base new file mode 100644 index 0000000..4c79302 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/lib/.svn/text-base/myUser.class.php.svn-base @@ -0,0 +1,5 @@ + + * @version SVN: $Id$ + */ +class i18nActions extends sfActions +{ + public function executeIndex() + { + $i18n = $this->getContext()->getI18N(); + + $this->test = $i18n->__('an english sentence'); + $this->localTest = $i18n->__('a local english sentence'); + $this->otherTest = $i18n->__('an english sentence', array(), 'other'); + $this->otherLocalTest = $i18n->__('a local english sentence', array(), 'other'); + } + + public function executeIndexForFr() + { + // change user culture + $this->getUser()->setCulture('fr'); + $this->getUser()->setCulture('en'); + $this->getUser()->setCulture('fr'); + + $this->forward('i18n', 'index'); + } + + public function executeI18nForm(sfWebRequest $request) + { + $this->form = new I18nForm(); + if ($request->isMethod('post')) + { + $this->form->bind($request->getParameter('i18n')); + } + } + + public function executeI18nCustomCatalogueForm(sfWebRequest $request) + { + $this->form = new I18nCustomCatalogueForm(); + $this->setTemplate('i18nForm'); + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/actions/actions.class.php b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/actions/actions.class.php new file mode 100644 index 0000000..940943d --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/actions/actions.class.php @@ -0,0 +1,47 @@ + + * @version SVN: $Id: actions.class.php 8645 2008-04-27 15:37:17Z fabien $ + */ +class i18nActions extends sfActions +{ + public function executeIndex() + { + $i18n = $this->getContext()->getI18N(); + + $this->test = $i18n->__('an english sentence'); + $this->localTest = $i18n->__('a local english sentence'); + $this->otherTest = $i18n->__('an english sentence', array(), 'other'); + $this->otherLocalTest = $i18n->__('a local english sentence', array(), 'other'); + } + + public function executeIndexForFr() + { + // change user culture + $this->getUser()->setCulture('fr'); + $this->getUser()->setCulture('en'); + $this->getUser()->setCulture('fr'); + + $this->forward('i18n', 'index'); + } + + public function executeI18nForm(sfWebRequest $request) + { + $this->form = new I18nForm(); + if ($request->isMethod('post')) + { + $this->form->bind($request->getParameter('i18n')); + } + } + + public function executeI18nCustomCatalogueForm(sfWebRequest $request) + { + $this->form = new I18nCustomCatalogueForm(); + $this->setTemplate('i18nForm'); + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/config/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/config/.svn/all-wcprops new file mode 100644 index 0000000..856f09a --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/config/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 83 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/i18n/modules/i18n/config +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/config/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/config/.svn/entries new file mode 100644 index 0000000..4d6cffa --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/config/.svn/entries @@ -0,0 +1,28 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/i18n/modules/i18n/config +http://svn.symfony-project.com + + + +2006-11-17T16:06:52.246609Z +2740 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/i18n/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/i18n/.svn/all-wcprops new file mode 100644 index 0000000..ccff730 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/i18n/.svn/all-wcprops @@ -0,0 +1,23 @@ +K 25 +svn:wc:ra_dav:version-url +V 81 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/i18n/modules/i18n/i18n +END +custom.fr.xml +K 25 +svn:wc:ra_dav:version-url +V 95 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/i18n/modules/i18n/i18n/custom.fr.xml +END +other.fr.xml +K 25 +svn:wc:ra_dav:version-url +V 94 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/i18n/modules/i18n/i18n/other.fr.xml +END +messages.fr.xml +K 25 +svn:wc:ra_dav:version-url +V 97 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/i18n/modules/i18n/i18n/messages.fr.xml +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/i18n/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/i18n/.svn/entries new file mode 100644 index 0000000..a0f0e95 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/i18n/.svn/entries @@ -0,0 +1,130 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/i18n/modules/i18n/i18n +http://svn.symfony-project.com + + + +2008-04-23T15:57:16.897585Z +8610 +nicolas + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +custom.fr.xml +file + + + + +2012-05-10T18:40:58.181557Z +14b5ae73e241e5c2e0a6ff0a0ec647e7 +2008-04-23T15:57:16.897585Z +8610 +nicolas + + + + + + + + + + + + + + + + + + + + + +495 + +other.fr.xml +file + + + + +2012-05-10T18:40:58.189552Z +fb1538c3429f5911e1c4f861ac1a5fa1 +2006-11-18T10:11:00.035439Z +2757 +fabien + + + + + + + + + + + + + + + + + + + + + +316 + +messages.fr.xml +file + + + + +2012-05-10T18:40:58.189552Z +67e167316e7172c6bf19865dc276aa98 +2008-04-11T07:39:47.388348Z +8408 +nicolas + + + + + + + + + + + + + + + + + + + + + +1096 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/i18n/.svn/text-base/custom.fr.xml.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/i18n/.svn/text-base/custom.fr.xml.svn-base new file mode 100644 index 0000000..413fbe4 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/i18n/.svn/text-base/custom.fr.xml.svn-base @@ -0,0 +1,19 @@ + + + + + + First name + Prénom!!! + + + Last name + Nom!!! + + + Email address + Adresse email!!! + + + + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/i18n/.svn/text-base/messages.fr.xml.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/i18n/.svn/text-base/messages.fr.xml.svn-base new file mode 100644 index 0000000..e627b94 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/i18n/.svn/text-base/messages.fr.xml.svn-base @@ -0,0 +1,35 @@ + + + + + + a local english sentence + une phrase locale en français + + + First name + Prénom + + + Last name + Nom + + + Put your first name here + Mettez votre prénom ici + + + Required. + Champ requis. + + + Email address + Adresse email + + + %value% is an invalid email address + %value% est une adresse email invalide + + + + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/i18n/.svn/text-base/other.fr.xml.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/i18n/.svn/text-base/other.fr.xml.svn-base new file mode 100644 index 0000000..be5b75f --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/i18n/.svn/text-base/other.fr.xml.svn-base @@ -0,0 +1,11 @@ + + + + + + a local english sentence + une autre phrase locale en français + + + + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/i18n/custom.fr.xml b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/i18n/custom.fr.xml new file mode 100644 index 0000000..413fbe4 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/i18n/custom.fr.xml @@ -0,0 +1,19 @@ + + + + + + First name + Prénom!!! + + + Last name + Nom!!! + + + Email address + Adresse email!!! + + + + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/i18n/messages.fr.xml b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/i18n/messages.fr.xml new file mode 100644 index 0000000..e627b94 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/i18n/messages.fr.xml @@ -0,0 +1,35 @@ + + + + + + a local english sentence + une phrase locale en français + + + First name + Prénom + + + Last name + Nom + + + Put your first name here + Mettez votre prénom ici + + + Required. + Champ requis. + + + Email address + Adresse email + + + %value% is an invalid email address + %value% est une adresse email invalide + + + + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/i18n/other.fr.xml b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/i18n/other.fr.xml new file mode 100644 index 0000000..be5b75f --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/i18n/other.fr.xml @@ -0,0 +1,11 @@ + + + + + + a local english sentence + une autre phrase locale en français + + + + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/lib/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/lib/.svn/all-wcprops new file mode 100644 index 0000000..180d77d --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/lib/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 80 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/i18n/modules/i18n/lib +END +I18nCustomCatalogueForm.class.php +K 25 +svn:wc:ra_dav:version-url +V 114 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/i18n/modules/i18n/lib/I18nCustomCatalogueForm.class.php +END +I18nForm.class.php +K 25 +svn:wc:ra_dav:version-url +V 99 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/i18n/modules/i18n/lib/I18nForm.class.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/lib/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/lib/.svn/entries new file mode 100644 index 0000000..ea17796 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/lib/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/i18n/modules/i18n/lib +http://svn.symfony-project.com + + + +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +I18nCustomCatalogueForm.class.php +file + + + + +2012-05-10T18:40:58.329551Z +d110aa26782d08b5eddae43be487b98b +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +200 + +I18nForm.class.php +file + + + + +2012-05-10T18:40:58.329551Z +2e4a51369e70353afc99c614eb7b2291 +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +830 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/lib/.svn/prop-base/I18nCustomCatalogueForm.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/lib/.svn/prop-base/I18nCustomCatalogueForm.class.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/lib/.svn/prop-base/I18nCustomCatalogueForm.class.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/lib/.svn/prop-base/I18nForm.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/lib/.svn/prop-base/I18nForm.class.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/lib/.svn/prop-base/I18nForm.class.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/lib/.svn/text-base/I18nCustomCatalogueForm.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/lib/.svn/text-base/I18nCustomCatalogueForm.class.php.svn-base new file mode 100644 index 0000000..1ef7ebb --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/lib/.svn/text-base/I18nCustomCatalogueForm.class.php.svn-base @@ -0,0 +1,9 @@ +widgetSchema->getFormFormatter()->setTranslationCatalogue('custom'); + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/lib/.svn/text-base/I18nForm.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/lib/.svn/text-base/I18nForm.class.php.svn-base new file mode 100644 index 0000000..c95729a --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/lib/.svn/text-base/I18nForm.class.php.svn-base @@ -0,0 +1,24 @@ +setWidgets(array( + 'first_name' => new sfWidgetFormInputText(), + 'last_name' => new sfWidgetFormInputText(), + 'email' => new sfWidgetFormInputText(), + )); + + $this->setValidators(array( + 'first_name' => new sfValidatorString(array('required' => true)), + 'last_name' => new sfValidatorString(array('required' => true)), + 'email' => new sfValidatorEmail(array('required' => true), + array('invalid' => '%value% is an invalid email address')), + )); + + $this->widgetSchema->setLabel('email', 'Email address'); + $this->widgetSchema->setHelp('first_name', 'Put your first name here'); + + $this->widgetSchema->setNameFormat('i18n[%s]'); + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/lib/I18nCustomCatalogueForm.class.php b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/lib/I18nCustomCatalogueForm.class.php new file mode 100644 index 0000000..1ef7ebb --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/lib/I18nCustomCatalogueForm.class.php @@ -0,0 +1,9 @@ +widgetSchema->getFormFormatter()->setTranslationCatalogue('custom'); + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/lib/I18nForm.class.php b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/lib/I18nForm.class.php new file mode 100644 index 0000000..c95729a --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/lib/I18nForm.class.php @@ -0,0 +1,24 @@ +setWidgets(array( + 'first_name' => new sfWidgetFormInputText(), + 'last_name' => new sfWidgetFormInputText(), + 'email' => new sfWidgetFormInputText(), + )); + + $this->setValidators(array( + 'first_name' => new sfValidatorString(array('required' => true)), + 'last_name' => new sfValidatorString(array('required' => true)), + 'email' => new sfValidatorEmail(array('required' => true), + array('invalid' => '%value% is an invalid email address')), + )); + + $this->widgetSchema->setLabel('email', 'Email address'); + $this->widgetSchema->setHelp('first_name', 'Put your first name here'); + + $this->widgetSchema->setNameFormat('i18n[%s]'); + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/templates/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/templates/.svn/all-wcprops new file mode 100644 index 0000000..b8edbe6 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/templates/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 86 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/i18n/modules/i18n/templates +END +i18nFormSuccess.php +K 25 +svn:wc:ra_dav:version-url +V 106 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/i18n/modules/i18n/templates/i18nFormSuccess.php +END +indexSuccess.php +K 25 +svn:wc:ra_dav:version-url +V 103 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/i18n/modules/i18n/templates/indexSuccess.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/templates/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/templates/.svn/entries new file mode 100644 index 0000000..b4254d6 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/templates/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/i18n/modules/i18n/templates +http://svn.symfony-project.com + + + +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +i18nFormSuccess.php +file + + + + +2012-05-10T18:40:58.385551Z +ca531e236da41d52cdd0237f77899251 +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +182 + +indexSuccess.php +file + + + + +2012-05-10T18:40:58.385551Z +f3b3b4ffcd18a784beeb6525e7f474d6 +2006-11-18T10:11:00.035439Z +2757 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +578 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/templates/.svn/prop-base/i18nFormSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/templates/.svn/prop-base/i18nFormSuccess.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/templates/.svn/prop-base/i18nFormSuccess.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/templates/.svn/prop-base/indexSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/templates/.svn/prop-base/indexSuccess.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/templates/.svn/prop-base/indexSuccess.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/templates/.svn/text-base/i18nFormSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/templates/.svn/text-base/i18nFormSuccess.php.svn-base new file mode 100644 index 0000000..24e723b --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/templates/.svn/text-base/i18nFormSuccess.php.svn-base @@ -0,0 +1,8 @@ +
            + + + + + +
            +
            \ No newline at end of file diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/templates/.svn/text-base/indexSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/templates/.svn/text-base/indexSuccess.php.svn-base new file mode 100644 index 0000000..9b3f811 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/templates/.svn/text-base/indexSuccess.php.svn-base @@ -0,0 +1,13 @@ + + +
            +
            + +
            +
            + +
            +
            + +
            +
            diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/templates/i18nFormSuccess.php b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/templates/i18nFormSuccess.php new file mode 100644 index 0000000..24e723b --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/templates/i18nFormSuccess.php @@ -0,0 +1,8 @@ +
            + + + + + +
            +
            \ No newline at end of file diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/templates/indexSuccess.php b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/templates/indexSuccess.php new file mode 100644 index 0000000..9b3f811 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/i18n/templates/indexSuccess.php @@ -0,0 +1,13 @@ + + +
            +
            + +
            +
            + +
            +
            + +
            +
            diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/sfI18NPlugin/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/sfI18NPlugin/.svn/all-wcprops new file mode 100644 index 0000000..9663590 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/sfI18NPlugin/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 84 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/i18n/modules/sfI18NPlugin +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/sfI18NPlugin/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/sfI18NPlugin/.svn/entries new file mode 100644 index 0000000..4ac6422 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/sfI18NPlugin/.svn/entries @@ -0,0 +1,31 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/i18n/modules/sfI18NPlugin +http://svn.symfony-project.com + + + +2007-06-23T10:32:13.647971Z +4344 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +i18n +dir + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/sfI18NPlugin/i18n/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/sfI18NPlugin/i18n/.svn/all-wcprops new file mode 100644 index 0000000..9f74829 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/sfI18NPlugin/i18n/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 89 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/i18n/modules/sfI18NPlugin/i18n +END +messages.fr.xml +K 25 +svn:wc:ra_dav:version-url +V 105 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/i18n/modules/sfI18NPlugin/i18n/messages.fr.xml +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/sfI18NPlugin/i18n/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/sfI18NPlugin/i18n/.svn/entries new file mode 100644 index 0000000..eeb5727 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/sfI18NPlugin/i18n/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/i18n/modules/sfI18NPlugin/i18n +http://svn.symfony-project.com + + + +2007-06-23T10:32:13.647971Z +4344 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +messages.fr.xml +file + + + + +2012-05-10T18:40:58.457550Z +3f4297a0732c3f3d89b8f0537780ba70 +2007-06-23T10:32:13.647971Z +4344 +fabien + + + + + + + + + + + + + + + + + + + + + +376 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/sfI18NPlugin/i18n/.svn/text-base/messages.fr.xml.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/sfI18NPlugin/i18n/.svn/text-base/messages.fr.xml.svn-base new file mode 100644 index 0000000..a4e813a --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/sfI18NPlugin/i18n/.svn/text-base/messages.fr.xml.svn-base @@ -0,0 +1,11 @@ + + + + + + another english sentence from plugin + une autre phrase en français - from plugin but translation overridden in the module + + + + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/sfI18NPlugin/i18n/messages.fr.xml b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/sfI18NPlugin/i18n/messages.fr.xml new file mode 100644 index 0000000..a4e813a --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/modules/sfI18NPlugin/i18n/messages.fr.xml @@ -0,0 +1,11 @@ + + + + + + another english sentence from plugin + une autre phrase en français - from plugin but translation overridden in the module + + + + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/templates/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/templates/.svn/all-wcprops new file mode 100644 index 0000000..79828ab --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/templates/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 73 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/i18n/templates +END +layout.php +K 25 +svn:wc:ra_dav:version-url +V 84 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/apps/i18n/templates/layout.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/templates/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/templates/.svn/entries new file mode 100644 index 0000000..7c87a61 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/templates/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/apps/i18n/templates +http://svn.symfony-project.com + + + +2009-04-30T07:13:08.234464Z +17794 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +layout.php +file + + + + +2012-05-10T18:40:58.525549Z +fed91e1e8658e1a885a3608c99c9faa5 +2009-04-30T07:13:08.234464Z +17794 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +475 + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/templates/.svn/prop-base/layout.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/templates/.svn/prop-base/layout.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/templates/.svn/prop-base/layout.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/templates/.svn/text-base/layout.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/templates/.svn/text-base/layout.php.svn-base new file mode 100644 index 0000000..6d75aa8 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/templates/.svn/text-base/layout.php.svn-base @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/vendor/symfony/test/functional/fixtures/apps/i18n/templates/layout.php b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/templates/layout.php new file mode 100644 index 0000000..6d75aa8 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/apps/i18n/templates/layout.php @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/vendor/symfony/test/functional/fixtures/cache/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/cache/.svn/all-wcprops new file mode 100644 index 0000000..daf1910 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/cache/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 59 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/cache +END diff --git a/lib/vendor/symfony/test/functional/fixtures/cache/.svn/dir-prop-base b/lib/vendor/symfony/test/functional/fixtures/cache/.svn/dir-prop-base new file mode 100644 index 0000000..1f596b0 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/cache/.svn/dir-prop-base @@ -0,0 +1,6 @@ +K 10 +svn:ignore +V 2 +* + +END diff --git a/lib/vendor/symfony/test/functional/fixtures/cache/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/cache/.svn/entries new file mode 100644 index 0000000..5dce048 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/cache/.svn/entries @@ -0,0 +1,28 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/cache +http://svn.symfony-project.com + + + +2009-04-04T14:00:15.361330Z +16982 +fabien +has-props + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + diff --git a/lib/vendor/symfony/test/functional/fixtures/config/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/config/.svn/all-wcprops new file mode 100644 index 0000000..acbbe44 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/config/.svn/all-wcprops @@ -0,0 +1,41 @@ +K 25 +svn:wc:ra_dav:version-url +V 60 +/!svn/ver/23932/branches/1.4/test/functional/fixtures/config +END +propel.ini +K 25 +svn:wc:ra_dav:version-url +V 71 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/config/propel.ini +END +databases.yml +K 25 +svn:wc:ra_dav:version-url +V 74 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/config/databases.yml +END +ProjectConfiguration.class.php +K 25 +svn:wc:ra_dav:version-url +V 91 +/!svn/ver/23932/branches/1.4/test/functional/fixtures/config/ProjectConfiguration.class.php +END +filters.yml +K 25 +svn:wc:ra_dav:version-url +V 72 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/config/filters.yml +END +properties.ini +K 25 +svn:wc:ra_dav:version-url +V 75 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/config/properties.ini +END +view.yml +K 25 +svn:wc:ra_dav:version-url +V 69 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/config/view.yml +END diff --git a/lib/vendor/symfony/test/functional/fixtures/config/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/config/.svn/entries new file mode 100644 index 0000000..d6b9c93 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/config/.svn/entries @@ -0,0 +1,235 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/config +http://svn.symfony-project.com + + + +2009-11-14T16:32:53.123081Z +23932 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +propel.ini +file + + + + +2012-05-10T18:41:00.409551Z +1d46b418eaa5163fcf4588dbf47d8cc0 +2008-11-29T14:26:15.713697Z +13480 +fabien + + + + + + + + + + + + + + + + + + + + + +2501 + +databases.yml +file + + + + +2012-05-10T18:41:00.417548Z +2fc8c0657c48b116b2da9470699723eb +2007-09-15T08:53:15.865716Z +5103 +fabien + + + + + + + + + + + + + + + + + + + + + +146 + +ProjectConfiguration.class.php +file + + + + +2012-05-10T18:41:00.421548Z +dc6d07e2b974fe945c65f8f7445e3092 +2009-11-14T16:32:53.123081Z +23932 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +325 + +filters.yml +file + + + + +2012-05-10T18:41:00.421548Z +829ab23cd7f7f9d6448c477893249a73 +2009-04-30T07:13:08.234464Z +17794 +fabien + + + + + + + + + + + + + + + + + + + + + +114 + +dirmyconfig +dir + +properties.ini +file + + + + +2012-05-10T18:41:00.421548Z +d4aa54f80cf8491506b7fc7b0ed7880e +2006-10-02T15:22:13.535599Z +2288 +fabien + + + + + + + + + + + + + + + + + + + + + +90 + +view.yml +file + + + + +2012-05-10T18:41:00.661547Z +d41d8cd98f00b204e9800998ecf8427e +2007-01-07T16:41:20.891453Z +3178 +fabien + + + + + + + + + + + + + + + + + + + + + +0 + diff --git a/lib/vendor/symfony/test/functional/fixtures/config/.svn/prop-base/ProjectConfiguration.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/config/.svn/prop-base/ProjectConfiguration.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/config/.svn/prop-base/ProjectConfiguration.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/config/.svn/text-base/ProjectConfiguration.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/config/.svn/text-base/ProjectConfiguration.class.php.svn-base new file mode 100644 index 0000000..b61849e --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/config/.svn/text-base/ProjectConfiguration.class.php.svn-base @@ -0,0 +1,13 @@ +enableAllPluginsExcept(array('sfDoctrinePlugin')); + $this->enablePlugins('sfAutoloadPlugin'); + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/config/.svn/text-base/databases.yml.svn-base b/lib/vendor/symfony/test/functional/fixtures/config/.svn/text-base/databases.yml.svn-base new file mode 100644 index 0000000..fad67ec --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/config/.svn/text-base/databases.yml.svn-base @@ -0,0 +1,6 @@ +#all: +# propel: +# class: sfPropelDatabase +# param: +# phptype: sqlite +# database: %SF_DATA_DIR%/database.sqlite diff --git a/lib/vendor/symfony/test/functional/fixtures/config/.svn/text-base/filters.yml.svn-base b/lib/vendor/symfony/test/functional/fixtures/config/.svn/text-base/filters.yml.svn-base new file mode 100644 index 0000000..2f1f029 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/config/.svn/text-base/filters.yml.svn-base @@ -0,0 +1,8 @@ +rendering: ~ +security: ~ + +# generally, you will want to insert your own filters here + +cache: ~ + +execution: ~ diff --git a/lib/vendor/symfony/test/functional/fixtures/config/.svn/text-base/propel.ini.svn-base b/lib/vendor/symfony/test/functional/fixtures/config/.svn/text-base/propel.ini.svn-base new file mode 100644 index 0000000..fa07a20 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/config/.svn/text-base/propel.ini.svn-base @@ -0,0 +1,48 @@ +propel.targetPackage = lib.model +propel.project = project +propel.database = sqlite +propel.database.createUrl = sqlite://./../../../../data/database.sqlite +propel.database.url = sqlite://./../../../../data/database.sqlite + +propel.addGenericAccessors = true +propel.addGenericMutators = true +propel.addTimeStamp = false + +propel.schema.validate = false + +; directories +propel.home = . +propel.output.dir = /Users/fabien/work/symfony/svn/tests/functionnal/fixtures/project +propel.schema.dir = ${propel.output.dir}/config +propel.conf.dir = ${propel.output.dir}/config +propel.phpconf.dir = ${propel.output.dir}/config +propel.sql.dir = ${propel.output.dir}/data/sql +propel.runtime.conf.file = runtime-conf.xml +propel.php.dir = ${propel.output.dir} +propel.default.schema.basename = schema +propel.datadump.mapper.from = *schema.xml +propel.datadump.mapper.to = *data.xml + +; builder settings +propel.builder.peer.class = plugins.sfPropelPlugin.lib.builder.SfPeerBuilder +propel.builder.object.class = plugins.sfPropelPlugin.lib.builder.SfObjectBuilder + +propel.builder.objectstub.class = plugins.sfPropelPlugin.lib.builder.SfExtensionObjectBuilder +propel.builder.peerstub.class = plugins.sfPropelPlugin.lib.builder.SfExtensionPeerBuilder +propel.builder.objectmultiextend.class = plugins.sfPropelPlugin.lib.builder.SfMultiExtendObjectBuilder +propel.builder.mapbuilder.class = plugins.sfPropelPlugin.lib.builder.SfMapBuilderBuilder +propel.builder.interface.class = propel.engine.builder.om.php5.PHP5InterfaceBuilder +propel.builder.node.class = propel.engine.builder.om.php5.PHP5NodeBuilder +propel.builder.nodepeer.class = propel.engine.builder.om.php5.PHP5NodePeerBuilder +propel.builder.nodestub.class = propel.engine.builder.om.php5.PHP5ExtensionNodeBuilder +propel.builder.nodepeerstub.class = propel.engine.builder.om.php5.PHP5ExtensionNodePeerBuilder + +propel.builder.addIncludes = false +propel.builder.addComments = false +propel.packageObjectModel = true + +propel.defaultTimeStampFormat = Y-m-d H:i:s +propel.defaultTimeFormat = H:i:s +propel.defaultDateFormat = Y-m-d +propel.builder.nestedset.class = plugins.sfPropelPlugin.lib.builder.SfNestedSetBuilder +propel.builder.nestedsetpeer.class = plugins.sfPropelPlugin.lib.builder.SfNestedSetPeerBuilder \ No newline at end of file diff --git a/lib/vendor/symfony/test/functional/fixtures/config/.svn/text-base/properties.ini.svn-base b/lib/vendor/symfony/test/functional/fixtures/config/.svn/text-base/properties.ini.svn-base new file mode 100644 index 0000000..088d3f5 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/config/.svn/text-base/properties.ini.svn-base @@ -0,0 +1,3 @@ +[symfony] + name=project + author=Fabien Potencier diff --git a/lib/vendor/symfony/test/functional/fixtures/config/.svn/text-base/view.yml.svn-base b/lib/vendor/symfony/test/functional/fixtures/config/.svn/text-base/view.yml.svn-base new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/test/functional/fixtures/config/ProjectConfiguration.class.php b/lib/vendor/symfony/test/functional/fixtures/config/ProjectConfiguration.class.php new file mode 100644 index 0000000..b61849e --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/config/ProjectConfiguration.class.php @@ -0,0 +1,13 @@ +enableAllPluginsExcept(array('sfDoctrinePlugin')); + $this->enablePlugins('sfAutoloadPlugin'); + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/config/databases.yml b/lib/vendor/symfony/test/functional/fixtures/config/databases.yml new file mode 100644 index 0000000..fad67ec --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/config/databases.yml @@ -0,0 +1,6 @@ +#all: +# propel: +# class: sfPropelDatabase +# param: +# phptype: sqlite +# database: %SF_DATA_DIR%/database.sqlite diff --git a/lib/vendor/symfony/test/functional/fixtures/config/dirmyconfig/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/config/dirmyconfig/.svn/all-wcprops new file mode 100644 index 0000000..6f9e68d --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/config/dirmyconfig/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 72 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/config/dirmyconfig +END +myconfig.yml +K 25 +svn:wc:ra_dav:version-url +V 85 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/config/dirmyconfig/myconfig.yml +END diff --git a/lib/vendor/symfony/test/functional/fixtures/config/dirmyconfig/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/config/dirmyconfig/.svn/entries new file mode 100644 index 0000000..8aabbf2 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/config/dirmyconfig/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/config/dirmyconfig +http://svn.symfony-project.com + + + +2007-01-07T16:41:20.891453Z +3178 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +myconfig.yml +file + + + + +2012-05-10T18:41:00.397550Z +d41d8cd98f00b204e9800998ecf8427e +2007-01-07T16:41:20.891453Z +3178 +fabien + + + + + + + + + + + + + + + + + + + + + +0 + diff --git a/lib/vendor/symfony/test/functional/fixtures/config/dirmyconfig/.svn/text-base/myconfig.yml.svn-base b/lib/vendor/symfony/test/functional/fixtures/config/dirmyconfig/.svn/text-base/myconfig.yml.svn-base new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/test/functional/fixtures/config/dirmyconfig/myconfig.yml b/lib/vendor/symfony/test/functional/fixtures/config/dirmyconfig/myconfig.yml new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/test/functional/fixtures/config/filters.yml b/lib/vendor/symfony/test/functional/fixtures/config/filters.yml new file mode 100644 index 0000000..2f1f029 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/config/filters.yml @@ -0,0 +1,8 @@ +rendering: ~ +security: ~ + +# generally, you will want to insert your own filters here + +cache: ~ + +execution: ~ diff --git a/lib/vendor/symfony/test/functional/fixtures/config/propel.ini b/lib/vendor/symfony/test/functional/fixtures/config/propel.ini new file mode 100644 index 0000000..fa07a20 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/config/propel.ini @@ -0,0 +1,48 @@ +propel.targetPackage = lib.model +propel.project = project +propel.database = sqlite +propel.database.createUrl = sqlite://./../../../../data/database.sqlite +propel.database.url = sqlite://./../../../../data/database.sqlite + +propel.addGenericAccessors = true +propel.addGenericMutators = true +propel.addTimeStamp = false + +propel.schema.validate = false + +; directories +propel.home = . +propel.output.dir = /Users/fabien/work/symfony/svn/tests/functionnal/fixtures/project +propel.schema.dir = ${propel.output.dir}/config +propel.conf.dir = ${propel.output.dir}/config +propel.phpconf.dir = ${propel.output.dir}/config +propel.sql.dir = ${propel.output.dir}/data/sql +propel.runtime.conf.file = runtime-conf.xml +propel.php.dir = ${propel.output.dir} +propel.default.schema.basename = schema +propel.datadump.mapper.from = *schema.xml +propel.datadump.mapper.to = *data.xml + +; builder settings +propel.builder.peer.class = plugins.sfPropelPlugin.lib.builder.SfPeerBuilder +propel.builder.object.class = plugins.sfPropelPlugin.lib.builder.SfObjectBuilder + +propel.builder.objectstub.class = plugins.sfPropelPlugin.lib.builder.SfExtensionObjectBuilder +propel.builder.peerstub.class = plugins.sfPropelPlugin.lib.builder.SfExtensionPeerBuilder +propel.builder.objectmultiextend.class = plugins.sfPropelPlugin.lib.builder.SfMultiExtendObjectBuilder +propel.builder.mapbuilder.class = plugins.sfPropelPlugin.lib.builder.SfMapBuilderBuilder +propel.builder.interface.class = propel.engine.builder.om.php5.PHP5InterfaceBuilder +propel.builder.node.class = propel.engine.builder.om.php5.PHP5NodeBuilder +propel.builder.nodepeer.class = propel.engine.builder.om.php5.PHP5NodePeerBuilder +propel.builder.nodestub.class = propel.engine.builder.om.php5.PHP5ExtensionNodeBuilder +propel.builder.nodepeerstub.class = propel.engine.builder.om.php5.PHP5ExtensionNodePeerBuilder + +propel.builder.addIncludes = false +propel.builder.addComments = false +propel.packageObjectModel = true + +propel.defaultTimeStampFormat = Y-m-d H:i:s +propel.defaultTimeFormat = H:i:s +propel.defaultDateFormat = Y-m-d +propel.builder.nestedset.class = plugins.sfPropelPlugin.lib.builder.SfNestedSetBuilder +propel.builder.nestedsetpeer.class = plugins.sfPropelPlugin.lib.builder.SfNestedSetPeerBuilder \ No newline at end of file diff --git a/lib/vendor/symfony/test/functional/fixtures/config/properties.ini b/lib/vendor/symfony/test/functional/fixtures/config/properties.ini new file mode 100644 index 0000000..088d3f5 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/config/properties.ini @@ -0,0 +1,3 @@ +[symfony] + name=project + author=Fabien Potencier diff --git a/lib/vendor/symfony/test/functional/fixtures/config/view.yml b/lib/vendor/symfony/test/functional/fixtures/config/view.yml new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/test/functional/fixtures/data/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/data/.svn/all-wcprops new file mode 100644 index 0000000..d61ea49 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/data/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/data +END +environment.migrated +K 25 +svn:wc:ra_dav:version-url +V 79 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/data/environment.migrated +END diff --git a/lib/vendor/symfony/test/functional/fixtures/data/.svn/dir-prop-base b/lib/vendor/symfony/test/functional/fixtures/data/.svn/dir-prop-base new file mode 100644 index 0000000..25c1267 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/data/.svn/dir-prop-base @@ -0,0 +1,6 @@ +K 10 +svn:ignore +V 16 +database.sqlite + +END diff --git a/lib/vendor/symfony/test/functional/fixtures/data/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/data/.svn/entries new file mode 100644 index 0000000..5224f62 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/data/.svn/entries @@ -0,0 +1,65 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/data +http://svn.symfony-project.com + + + +2009-04-04T14:00:15.361330Z +16982 +fabien +has-props + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +sql +dir + +environment.migrated +file + + + + +2012-05-10T18:41:00.933547Z +d41d8cd98f00b204e9800998ecf8427e +2007-12-07T16:03:14.258806Z +6365 +fabien + + + + + + + + + + + + + + + + + + + + + +0 + diff --git a/lib/vendor/symfony/test/functional/fixtures/data/.svn/text-base/environment.migrated.svn-base b/lib/vendor/symfony/test/functional/fixtures/data/.svn/text-base/environment.migrated.svn-base new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/test/functional/fixtures/data/environment.migrated b/lib/vendor/symfony/test/functional/fixtures/data/environment.migrated new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/test/functional/fixtures/data/sql/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/data/sql/.svn/all-wcprops new file mode 100644 index 0000000..8751a7d --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/data/sql/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 62 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/data/sql +END diff --git a/lib/vendor/symfony/test/functional/fixtures/data/sql/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/data/sql/.svn/entries new file mode 100644 index 0000000..7ce3fb0 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/data/sql/.svn/entries @@ -0,0 +1,28 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/data/sql +http://svn.symfony-project.com + + + +2007-09-15T08:56:53.456759Z +5104 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + diff --git a/lib/vendor/symfony/test/functional/fixtures/lib/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/lib/.svn/all-wcprops new file mode 100644 index 0000000..527be99 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/lib/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 57 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/lib +END +ExtendMe.class.php +K 25 +svn:wc:ra_dav:version-url +V 76 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/lib/ExtendMe.class.php +END +myLibClass.class.php +K 25 +svn:wc:ra_dav:version-url +V 78 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/lib/myLibClass.class.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/lib/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/lib/.svn/entries new file mode 100644 index 0000000..842c756 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/lib/.svn/entries @@ -0,0 +1,99 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/lib +http://svn.symfony-project.com + + + +2009-05-16T11:13:47.115347Z +18331 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +form +dir + +ExtendMe.class.php +file + + + + +2012-05-10T18:41:00.697550Z +47f03f16a2e61231534e5b272da0a020 +2008-11-20T18:23:18.584299Z +13196 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +47 + +myLibClass.class.php +file + + + + +2012-05-10T18:41:00.697550Z +71b8874fa8698c2cc833d692aa118e08 +2006-09-30T17:42:01.654020Z +2258 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +87 + diff --git a/lib/vendor/symfony/test/functional/fixtures/lib/.svn/prop-base/ExtendMe.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/lib/.svn/prop-base/ExtendMe.class.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/lib/.svn/prop-base/ExtendMe.class.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/test/functional/fixtures/lib/.svn/prop-base/myLibClass.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/lib/.svn/prop-base/myLibClass.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/lib/.svn/prop-base/myLibClass.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/lib/.svn/text-base/ExtendMe.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/lib/.svn/text-base/ExtendMe.class.php.svn-base new file mode 100644 index 0000000..5802db3 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/lib/.svn/text-base/ExtendMe.class.php.svn-base @@ -0,0 +1,5 @@ + + exclude: [vendor] + recursive: true + + not_in_lib_class: + name: NotInLib class + files: + NotInLib: diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/config/.svn/text-base/sfAutoloadPluginConfiguration.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/config/.svn/text-base/sfAutoloadPluginConfiguration.class.php.svn-base new file mode 100644 index 0000000..0eeaa19 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/config/.svn/text-base/sfAutoloadPluginConfiguration.class.php.svn-base @@ -0,0 +1,5 @@ + + exclude: [vendor] + recursive: true + + not_in_lib_class: + name: NotInLib class + files: + NotInLib: diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/config/sfAutoloadPluginConfiguration.class.php b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/config/sfAutoloadPluginConfiguration.class.php new file mode 100644 index 0000000..0eeaa19 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/config/sfAutoloadPluginConfiguration.class.php @@ -0,0 +1,5 @@ +lib1 = myLibClass::ping(); + $this->lib2 = myAppsFrontendLibClass::ping(); + $this->lib3 = myPluginsSfAutoloadPluginModulesAutoloadPluginLibClass::ping(); + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/modules/autoloadPlugin/actions/actions.class.php b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/modules/autoloadPlugin/actions/actions.class.php new file mode 100644 index 0000000..498b15d --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/modules/autoloadPlugin/actions/actions.class.php @@ -0,0 +1,11 @@ +lib1 = myLibClass::ping(); + $this->lib2 = myAppsFrontendLibClass::ping(); + $this->lib3 = myPluginsSfAutoloadPluginModulesAutoloadPluginLibClass::ping(); + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/modules/autoloadPlugin/lib/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/modules/autoloadPlugin/lib/.svn/all-wcprops new file mode 100644 index 0000000..acee9d9 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/modules/autoloadPlugin/lib/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 105 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/plugins/sfAutoloadPlugin/modules/autoloadPlugin/lib +END +myPluginsSfAutoloadPluginModulesAutoloadPluginLib.class.php +K 25 +svn:wc:ra_dav:version-url +V 165 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/plugins/sfAutoloadPlugin/modules/autoloadPlugin/lib/myPluginsSfAutoloadPluginModulesAutoloadPluginLib.class.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/modules/autoloadPlugin/lib/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/modules/autoloadPlugin/lib/.svn/entries new file mode 100644 index 0000000..b98cefd --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/modules/autoloadPlugin/lib/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/plugins/sfAutoloadPlugin/modules/autoloadPlugin/lib +http://svn.symfony-project.com + + + +2006-10-01T06:05:19.612009Z +2266 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +myPluginsSfAutoloadPluginModulesAutoloadPluginLib.class.php +file + + + + +2012-05-10T18:40:51.697551Z +0c6100a6ee7c882b062b58bfd8459ecf +2006-10-01T06:05:19.612009Z +2266 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +131 + diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/modules/autoloadPlugin/lib/.svn/prop-base/myPluginsSfAutoloadPluginModulesAutoloadPluginLib.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/modules/autoloadPlugin/lib/.svn/prop-base/myPluginsSfAutoloadPluginModulesAutoloadPluginLib.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/modules/autoloadPlugin/lib/.svn/prop-base/myPluginsSfAutoloadPluginModulesAutoloadPluginLib.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/modules/autoloadPlugin/lib/.svn/text-base/myPluginsSfAutoloadPluginModulesAutoloadPluginLib.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/modules/autoloadPlugin/lib/.svn/text-base/myPluginsSfAutoloadPluginModulesAutoloadPluginLib.class.php.svn-base new file mode 100644 index 0000000..798adb2 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/modules/autoloadPlugin/lib/.svn/text-base/myPluginsSfAutoloadPluginModulesAutoloadPluginLib.class.php.svn-base @@ -0,0 +1,9 @@ +
            +
            +
            diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/modules/autoloadPlugin/templates/indexSuccess.php b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/modules/autoloadPlugin/templates/indexSuccess.php new file mode 100644 index 0000000..b31a396 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/modules/autoloadPlugin/templates/indexSuccess.php @@ -0,0 +1,3 @@ +
            +
            +
            diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/.svn/all-wcprops new file mode 100644 index 0000000..3952d2f --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 83 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/plugins/sfAutoloadPlugin/test +END diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/.svn/entries new file mode 100644 index 0000000..fa46c67 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/.svn/entries @@ -0,0 +1,34 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/plugins/sfAutoloadPlugin/test +http://svn.symfony-project.com + + + +2009-06-29T18:34:19.316488Z +19690 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +unit +dir + +functional +dir + diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/.svn/all-wcprops new file mode 100644 index 0000000..25f1209 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 94 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional +END +FooFunctionalTest.php +K 25 +svn:wc:ra_dav:version-url +V 116 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/FooFunctionalTest.php +END +BarFunctionalTest.php +K 25 +svn:wc:ra_dav:version-url +V 116 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/BarFunctionalTest.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/.svn/entries new file mode 100644 index 0000000..74a9149 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/.svn/entries @@ -0,0 +1,99 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional +http://svn.symfony-project.com + + + +2009-06-29T18:34:19.316488Z +19690 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +nested +dir + +FooFunctionalTest.php +file + + + + +2012-05-10T18:40:51.377551Z +d41d8cd98f00b204e9800998ecf8427e +2009-06-29T18:34:19.316488Z +19690 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +0 + +BarFunctionalTest.php +file + + + + +2012-05-10T18:40:51.393550Z +d41d8cd98f00b204e9800998ecf8427e +2009-06-29T18:34:19.316488Z +19690 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +0 + diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/.svn/prop-base/BarFunctionalTest.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/.svn/prop-base/BarFunctionalTest.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/.svn/prop-base/BarFunctionalTest.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/.svn/prop-base/FooFunctionalTest.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/.svn/prop-base/FooFunctionalTest.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/.svn/prop-base/FooFunctionalTest.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/.svn/text-base/BarFunctionalTest.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/.svn/text-base/BarFunctionalTest.php.svn-base new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/.svn/text-base/FooFunctionalTest.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/.svn/text-base/FooFunctionalTest.php.svn-base new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/BarFunctionalTest.php b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/BarFunctionalTest.php new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/FooFunctionalTest.php b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/FooFunctionalTest.php new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/nested/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/nested/.svn/all-wcprops new file mode 100644 index 0000000..d1d4e6a --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/nested/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 101 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/nested +END +NestedFunctionalTest.php +K 25 +svn:wc:ra_dav:version-url +V 126 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/nested/NestedFunctionalTest.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/nested/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/nested/.svn/entries new file mode 100644 index 0000000..5963d20 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/nested/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/nested +http://svn.symfony-project.com + + + +2009-06-29T18:34:19.316488Z +19690 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +NestedFunctionalTest.php +file + + + + +2012-05-10T18:40:51.361552Z +d41d8cd98f00b204e9800998ecf8427e +2009-06-29T18:34:19.316488Z +19690 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +0 + diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/nested/.svn/prop-base/NestedFunctionalTest.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/nested/.svn/prop-base/NestedFunctionalTest.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/nested/.svn/prop-base/NestedFunctionalTest.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/nested/.svn/text-base/NestedFunctionalTest.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/nested/.svn/text-base/NestedFunctionalTest.php.svn-base new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/nested/NestedFunctionalTest.php b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/functional/nested/NestedFunctionalTest.php new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/.svn/all-wcprops new file mode 100644 index 0000000..9fa18af --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 88 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit +END +FooUnitTest.php +K 25 +svn:wc:ra_dav:version-url +V 104 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/FooUnitTest.php +END +BarUnitTest.php +K 25 +svn:wc:ra_dav:version-url +V 104 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/BarUnitTest.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/.svn/entries new file mode 100644 index 0000000..27c26ea --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/.svn/entries @@ -0,0 +1,99 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit +http://svn.symfony-project.com + + + +2009-06-29T18:34:19.316488Z +19690 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +nested +dir + +FooUnitTest.php +file + + + + +2012-05-10T18:40:51.281576Z +d41d8cd98f00b204e9800998ecf8427e +2009-06-29T18:34:19.316488Z +19690 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +0 + +BarUnitTest.php +file + + + + +2012-05-10T18:40:51.281576Z +d41d8cd98f00b204e9800998ecf8427e +2009-06-29T18:34:19.316488Z +19690 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +0 + diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/.svn/prop-base/BarUnitTest.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/.svn/prop-base/BarUnitTest.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/.svn/prop-base/BarUnitTest.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/.svn/prop-base/FooUnitTest.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/.svn/prop-base/FooUnitTest.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/.svn/prop-base/FooUnitTest.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/.svn/text-base/BarUnitTest.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/.svn/text-base/BarUnitTest.php.svn-base new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/.svn/text-base/FooUnitTest.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/.svn/text-base/FooUnitTest.php.svn-base new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/BarUnitTest.php b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/BarUnitTest.php new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/FooUnitTest.php b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/FooUnitTest.php new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/nested/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/nested/.svn/all-wcprops new file mode 100644 index 0000000..f12ff51 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/nested/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 95 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/nested +END +NestedUnitTest.php +K 25 +svn:wc:ra_dav:version-url +V 114 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/nested/NestedUnitTest.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/nested/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/nested/.svn/entries new file mode 100644 index 0000000..d448255 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/nested/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/nested +http://svn.symfony-project.com + + + +2009-06-29T18:34:19.316488Z +19690 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +NestedUnitTest.php +file + + + + +2012-05-10T18:40:51.257552Z +d41d8cd98f00b204e9800998ecf8427e +2009-06-29T18:34:19.316488Z +19690 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +0 + diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/nested/.svn/prop-base/NestedUnitTest.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/nested/.svn/prop-base/NestedUnitTest.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/nested/.svn/prop-base/NestedUnitTest.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/nested/.svn/text-base/NestedUnitTest.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/nested/.svn/text-base/NestedUnitTest.php.svn-base new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/nested/NestedUnitTest.php b/lib/vendor/symfony/test/functional/fixtures/plugins/sfAutoloadPlugin/test/unit/nested/NestedUnitTest.php new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/.svn/all-wcprops new file mode 100644 index 0000000..6cb0a4c --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 76 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/plugins/sfConfigPlugin +END diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/.svn/entries new file mode 100644 index 0000000..beaf7e4 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/.svn/entries @@ -0,0 +1,34 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/plugins/sfConfigPlugin +http://svn.symfony-project.com + + + +2009-04-30T07:13:08.234464Z +17794 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +config +dir + +modules +dir + diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/config/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/config/.svn/all-wcprops new file mode 100644 index 0000000..30ff1c0 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/config/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 83 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/plugins/sfConfigPlugin/config +END +filters.yml +K 25 +svn:wc:ra_dav:version-url +V 95 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/plugins/sfConfigPlugin/config/filters.yml +END +view.yml +K 25 +svn:wc:ra_dav:version-url +V 92 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/plugins/sfConfigPlugin/config/view.yml +END diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/config/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/config/.svn/entries new file mode 100644 index 0000000..59c8317 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/config/.svn/entries @@ -0,0 +1,99 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/plugins/sfConfigPlugin/config +http://svn.symfony-project.com + + + +2009-04-30T07:13:08.234464Z +17794 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +filters.yml +file + + + + +2012-05-10T18:40:52.469551Z +90444d840981fbee870bab612ddd8028 +2009-04-30T07:13:08.234464Z +17794 +fabien + + + + + + + + + + + + + + + + + + + + + +113 + +dirmyconfig +dir + +view.yml +file + + + + +2012-05-10T18:40:52.469551Z +d41d8cd98f00b204e9800998ecf8427e +2007-01-07T16:41:20.891453Z +3178 +fabien + + + + + + + + + + + + + + + + + + + + + +0 + diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/config/.svn/text-base/filters.yml.svn-base b/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/config/.svn/text-base/filters.yml.svn-base new file mode 100644 index 0000000..b8d7d11 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/config/.svn/text-base/filters.yml.svn-base @@ -0,0 +1,7 @@ +rendering: ~ +security: ~ + +# generally, you will want to insert your own filters here + +cache: ~ +execution: ~ diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/config/.svn/text-base/view.yml.svn-base b/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/config/.svn/text-base/view.yml.svn-base new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/config/dirmyconfig/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/config/dirmyconfig/.svn/all-wcprops new file mode 100644 index 0000000..7c9effb --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/config/dirmyconfig/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 95 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/plugins/sfConfigPlugin/config/dirmyconfig +END +myconfig.yml +K 25 +svn:wc:ra_dav:version-url +V 108 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/plugins/sfConfigPlugin/config/dirmyconfig/myconfig.yml +END diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/config/dirmyconfig/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/config/dirmyconfig/.svn/entries new file mode 100644 index 0000000..c363657 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/config/dirmyconfig/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/plugins/sfConfigPlugin/config/dirmyconfig +http://svn.symfony-project.com + + + +2007-01-07T16:41:20.891453Z +3178 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +myconfig.yml +file + + + + +2012-05-10T18:40:52.441551Z +d41d8cd98f00b204e9800998ecf8427e +2007-01-07T16:41:20.891453Z +3178 +fabien + + + + + + + + + + + + + + + + + + + + + +0 + diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/config/dirmyconfig/.svn/text-base/myconfig.yml.svn-base b/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/config/dirmyconfig/.svn/text-base/myconfig.yml.svn-base new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/config/dirmyconfig/myconfig.yml b/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/config/dirmyconfig/myconfig.yml new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/config/filters.yml b/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/config/filters.yml new file mode 100644 index 0000000..b8d7d11 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/config/filters.yml @@ -0,0 +1,7 @@ +rendering: ~ +security: ~ + +# generally, you will want to insert your own filters here + +cache: ~ +execution: ~ diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/config/view.yml b/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/config/view.yml new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/.svn/all-wcprops new file mode 100644 index 0000000..2317e6c --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 84 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/plugins/sfConfigPlugin/modules +END diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/.svn/entries new file mode 100644 index 0000000..f56cec5 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/.svn/entries @@ -0,0 +1,31 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/plugins/sfConfigPlugin/modules +http://svn.symfony-project.com + + + +2007-01-07T16:41:20.891453Z +3178 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +sfConfigPlugin +dir + diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin/.svn/all-wcprops new file mode 100644 index 0000000..530ec9d --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 99 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin +END diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin/.svn/entries new file mode 100644 index 0000000..8c2556c --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin/.svn/entries @@ -0,0 +1,31 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin +http://svn.symfony-project.com + + + +2007-01-07T16:41:20.891453Z +3178 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +config +dir + diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin/config/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin/config/.svn/all-wcprops new file mode 100644 index 0000000..d9e6504 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin/config/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 106 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin/config +END +filters.yml +K 25 +svn:wc:ra_dav:version-url +V 118 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin/config/filters.yml +END +view.yml +K 25 +svn:wc:ra_dav:version-url +V 115 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin/config/view.yml +END diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin/config/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin/config/.svn/entries new file mode 100644 index 0000000..acbf420 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin/config/.svn/entries @@ -0,0 +1,99 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin/config +http://svn.symfony-project.com + + + +2007-01-07T16:41:20.891453Z +3178 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +filters.yml +file + + + + +2012-05-10T18:40:52.765548Z +d41d8cd98f00b204e9800998ecf8427e +2007-01-07T16:41:20.891453Z +3178 +fabien + + + + + + + + + + + + + + + + + + + + + +0 + +dirmyconfig +dir + +view.yml +file + + + + +2012-05-10T18:40:52.765548Z +d41d8cd98f00b204e9800998ecf8427e +2007-01-07T16:41:20.891453Z +3178 +fabien + + + + + + + + + + + + + + + + + + + + + +0 + diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin/config/.svn/text-base/filters.yml.svn-base b/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin/config/.svn/text-base/filters.yml.svn-base new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin/config/.svn/text-base/view.yml.svn-base b/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin/config/.svn/text-base/view.yml.svn-base new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin/config/dirmyconfig/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin/config/dirmyconfig/.svn/all-wcprops new file mode 100644 index 0000000..b52a155 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin/config/dirmyconfig/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 118 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin/config/dirmyconfig +END +myconfig.yml +K 25 +svn:wc:ra_dav:version-url +V 131 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin/config/dirmyconfig/myconfig.yml +END diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin/config/dirmyconfig/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin/config/dirmyconfig/.svn/entries new file mode 100644 index 0000000..7d1f374 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin/config/dirmyconfig/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin/config/dirmyconfig +http://svn.symfony-project.com + + + +2007-01-07T16:41:20.891453Z +3178 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +myconfig.yml +file + + + + +2012-05-10T18:40:52.737551Z +d41d8cd98f00b204e9800998ecf8427e +2007-01-07T16:41:20.891453Z +3178 +fabien + + + + + + + + + + + + + + + + + + + + + +0 + diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin/config/dirmyconfig/.svn/text-base/myconfig.yml.svn-base b/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin/config/dirmyconfig/.svn/text-base/myconfig.yml.svn-base new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin/config/dirmyconfig/myconfig.yml b/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin/config/dirmyconfig/myconfig.yml new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin/config/filters.yml b/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin/config/filters.yml new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin/config/view.yml b/lib/vendor/symfony/test/functional/fixtures/plugins/sfConfigPlugin/modules/sfConfigPlugin/config/view.yml new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/.svn/all-wcprops new file mode 100644 index 0000000..9fbdaaa --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 74 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/plugins/sfI18NPlugin +END diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/.svn/entries new file mode 100644 index 0000000..b7267fe --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/.svn/entries @@ -0,0 +1,34 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/plugins/sfI18NPlugin +http://svn.symfony-project.com + + + +2007-06-25T07:37:26.417761Z +4351 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +i18n +dir + +modules +dir + diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/i18n/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/i18n/.svn/all-wcprops new file mode 100644 index 0000000..5fdff85 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/i18n/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 79 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/plugins/sfI18NPlugin/i18n +END +messages.fr.xml +K 25 +svn:wc:ra_dav:version-url +V 95 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/plugins/sfI18NPlugin/i18n/messages.fr.xml +END diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/i18n/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/i18n/.svn/entries new file mode 100644 index 0000000..be7ac0f --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/i18n/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/plugins/sfI18NPlugin/i18n +http://svn.symfony-project.com + + + +2007-06-25T07:37:26.417761Z +4351 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +messages.fr.xml +file + + + + +2012-05-10T18:40:51.849557Z +37d204354b2a01ec0c66dc244a68e1c4 +2007-06-25T07:37:26.417761Z +4351 +fabien + + + + + + + + + + + + + + + + + + + + + +345 + diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/i18n/.svn/text-base/messages.fr.xml.svn-base b/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/i18n/.svn/text-base/messages.fr.xml.svn-base new file mode 100644 index 0000000..75c3eaa --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/i18n/.svn/text-base/messages.fr.xml.svn-base @@ -0,0 +1,11 @@ + + + + + + an english sentence from plugin - global + une phrase en français depuis un plugin - global + + + + diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/i18n/messages.fr.xml b/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/i18n/messages.fr.xml new file mode 100644 index 0000000..75c3eaa --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/i18n/messages.fr.xml @@ -0,0 +1,11 @@ + + + + + + an english sentence from plugin - global + une phrase en français depuis un plugin - global + + + + diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/.svn/all-wcprops new file mode 100644 index 0000000..063af5f --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 82 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/plugins/sfI18NPlugin/modules +END diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/.svn/entries new file mode 100644 index 0000000..6930da6 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/.svn/entries @@ -0,0 +1,31 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/plugins/sfI18NPlugin/modules +http://svn.symfony-project.com + + + +2007-06-25T07:37:00.856065Z +4350 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +sfI18NPlugin +dir + diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/.svn/all-wcprops new file mode 100644 index 0000000..5b51bce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 95 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin +END diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/.svn/entries new file mode 100644 index 0000000..9bdb206 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/.svn/entries @@ -0,0 +1,37 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin +http://svn.symfony-project.com + + + +2007-06-25T07:37:00.856065Z +4350 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +i18n +dir + +actions +dir + +templates +dir + diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/actions/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/actions/.svn/all-wcprops new file mode 100644 index 0000000..84e31fc --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/actions/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 103 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/actions +END +actions.class.php +K 25 +svn:wc:ra_dav:version-url +V 121 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/actions/actions.class.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/actions/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/actions/.svn/entries new file mode 100644 index 0000000..75c7e0d --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/actions/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/actions +http://svn.symfony-project.com + + + +2007-06-25T07:37:00.856065Z +4350 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +actions.class.php +file + + + + +2012-05-10T18:40:52.137549Z +27b6772cf95326fae9eb0ba0fa004421 +2007-06-25T07:37:00.856065Z +4350 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +751 + diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/actions/.svn/prop-base/actions.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/actions/.svn/prop-base/actions.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/actions/.svn/prop-base/actions.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/actions/.svn/text-base/actions.class.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/actions/.svn/text-base/actions.class.php.svn-base new file mode 100644 index 0000000..03c16d8 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/actions/.svn/text-base/actions.class.php.svn-base @@ -0,0 +1,24 @@ + + * @version SVN: $Id$ + */ +class sfI18NPluginActions extends sfActions +{ + public function executeIndex() + { + $i18n = $this->getContext()->getI18N(); + + $this->test = $i18n->__('an english sentence from plugin'); + $this->localTest = $i18n->__('a local english sentence from plugin'); + $this->otherTest = $i18n->__('another english sentence from plugin'); + $this->yetAnotherTest = $i18n->__('yet another english sentence from plugin'); + + $this->testForPluginI18N = $i18n->__('an english sentence from plugin - global'); + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/actions/actions.class.php b/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/actions/actions.class.php new file mode 100644 index 0000000..13121cc --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/actions/actions.class.php @@ -0,0 +1,24 @@ + + * @version SVN: $Id: actions.class.php 4350 2007-06-25 07:37:00Z fabien $ + */ +class sfI18NPluginActions extends sfActions +{ + public function executeIndex() + { + $i18n = $this->getContext()->getI18N(); + + $this->test = $i18n->__('an english sentence from plugin'); + $this->localTest = $i18n->__('a local english sentence from plugin'); + $this->otherTest = $i18n->__('another english sentence from plugin'); + $this->yetAnotherTest = $i18n->__('yet another english sentence from plugin'); + + $this->testForPluginI18N = $i18n->__('an english sentence from plugin - global'); + } +} diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/i18n/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/i18n/.svn/all-wcprops new file mode 100644 index 0000000..d416fbe --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/i18n/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 100 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/i18n +END +messages.fr.xml +K 25 +svn:wc:ra_dav:version-url +V 116 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/i18n/messages.fr.xml +END diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/i18n/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/i18n/.svn/entries new file mode 100644 index 0000000..1daf56e --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/i18n/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/i18n +http://svn.symfony-project.com + + + +2007-06-23T10:32:13.647971Z +4344 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +messages.fr.xml +file + + + + +2012-05-10T18:40:52.089550Z +eaf0169508dcbfb863b92a45ce944f3f +2007-06-23T10:32:13.647971Z +4344 +fabien + + + + + + + + + + + + + + + + + + + + + +864 + diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/i18n/.svn/text-base/messages.fr.xml.svn-base b/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/i18n/.svn/text-base/messages.fr.xml.svn-base new file mode 100644 index 0000000..c49aa32 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/i18n/.svn/text-base/messages.fr.xml.svn-base @@ -0,0 +1,23 @@ + + + + + + an english sentence from plugin + une phrase en français - from plugin + + + a local english sentence from plugin + une phrase locale en français - from plugin + + + another english sentence from plugin + une autre phrase en français - from plugin + + + yet another english sentence from plugin + encore une autre phrase en français - from plugin + + + + diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/i18n/messages.fr.xml b/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/i18n/messages.fr.xml new file mode 100644 index 0000000..c49aa32 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/i18n/messages.fr.xml @@ -0,0 +1,23 @@ + + + + + + an english sentence from plugin + une phrase en français - from plugin + + + a local english sentence from plugin + une phrase locale en français - from plugin + + + another english sentence from plugin + une autre phrase en français - from plugin + + + yet another english sentence from plugin + encore une autre phrase en français - from plugin + + + + diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/templates/.svn/all-wcprops b/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/templates/.svn/all-wcprops new file mode 100644 index 0000000..c451ff6 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/templates/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 105 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/templates +END +indexSuccess.php +K 25 +svn:wc:ra_dav:version-url +V 122 +/!svn/ver/23881/branches/1.4/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/templates/indexSuccess.php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/templates/.svn/entries b/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/templates/.svn/entries new file mode 100644 index 0000000..92dc31c --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/templates/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/templates +http://svn.symfony-project.com + + + +2007-06-25T07:37:00.856065Z +4350 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +indexSuccess.php +file + + + + +2012-05-10T18:40:52.197553Z +1372d00401399187fd8e0bdd9e583699 +2007-06-25T07:37:00.856065Z +4350 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +776 + diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/templates/.svn/prop-base/indexSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/templates/.svn/prop-base/indexSuccess.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/templates/.svn/prop-base/indexSuccess.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/templates/.svn/text-base/indexSuccess.php.svn-base b/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/templates/.svn/text-base/indexSuccess.php.svn-base new file mode 100644 index 0000000..1c62e8d --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/templates/.svn/text-base/indexSuccess.php.svn-base @@ -0,0 +1,16 @@ + + +
            +
            + +
            +
            + +
            +
            + +
            +
            + +
            +
            diff --git a/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/templates/indexSuccess.php b/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/templates/indexSuccess.php new file mode 100644 index 0000000..1c62e8d --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/plugins/sfI18NPlugin/modules/sfI18NPlugin/templates/indexSuccess.php @@ -0,0 +1,16 @@ + + +
            +
            + +
            +
            + +
            +
            + +
            +
            + +
            +
            diff --git a/lib/vendor/symfony/test/functional/fixtures/symfony b/lib/vendor/symfony/test/functional/fixtures/symfony new file mode 100755 index 0000000..3ea1419 --- /dev/null +++ b/lib/vendor/symfony/test/functional/fixtures/symfony @@ -0,0 +1,15 @@ +#!/usr/bin/env php + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +chdir(dirname(__FILE__)); +require_once(dirname(__FILE__).'/config/ProjectConfiguration.class.php'); +$configuration = new ProjectConfiguration(); +include($configuration->getSymfonyLibDir().'/command/cli.php'); diff --git a/lib/vendor/symfony/test/functional/formatTest.php b/lib/vendor/symfony/test/functional/formatTest.php new file mode 100644 index 0000000..1cfcdc5 --- /dev/null +++ b/lib/vendor/symfony/test/functional/formatTest.php @@ -0,0 +1,125 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'frontend'; +if (!include(dirname(__FILE__).'/../bootstrap/functional.php')) +{ + return; +} + +$b = new sfTestBrowser(); + +$b-> + get('/format_test.js')-> + with('request')->begin()-> + isParameter('module', 'format')-> + isParameter('action', 'index')-> + isFormat('js')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + isHeader('content-type', 'application/javascript')-> + matches('!//')-> + matches('/Some js headers/')-> + matches('/This is a js file/')-> + end() +; + +$b-> + get('/format_test.css')-> + with('request')->begin()-> + isParameter('module', 'format')-> + isParameter('action', 'index')-> + isFormat('css')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + isHeader('content-type', 'text/css; charset=utf-8')-> + matches('/This is a css file/')-> + end() +; + +$b-> + get('/format_test')-> + with('request')->begin()-> + isParameter('module', 'format')-> + isParameter('action', 'index')-> + isFormat('html')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + isHeader('content-type', 'text/html; charset=utf-8')-> + checkElement('body #content', 'This is an HTML file')-> + end() +; + +$b-> + get('/format_test.xml')-> + with('request')->begin()-> + isParameter('module', 'format')-> + isParameter('action', 'index')-> + isFormat('xml')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + isHeader('content-type', 'text/xml; charset=utf-8')-> + checkElement('sentences sentence:first', 'This is a XML file')-> + end() +; + +$b-> + get('/format_test.foo')-> + with('request')->begin()-> + isParameter('module', 'format')-> + isParameter('action', 'index')-> + isFormat('foo')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + isHeader('content-type', 'text/html; charset=utf-8')-> + isHeader('x-foo', 'true')-> + checkElement('body #content', 'This is an HTML file')-> + end() +; + +$b-> + get('/format/js')-> + with('request')->begin()-> + isParameter('module', 'format')-> + isParameter('action', 'js')-> + isFormat('js')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + isHeader('content-type', 'application/javascript')-> + matches('/A js file/')-> + end() +; + +$b-> + setHttpHeader('User-Agent', 'Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543a Safari/419.3')-> + get('/format/forTheIPhone')-> + with('request')->begin()-> + isParameter('module', 'format')-> + isParameter('action', 'forTheIPhone')-> + isFormat('iphone')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + isHeader('content-type', 'text/html; charset=utf-8')-> + checkElement('#content', 'This is an HTML file for the iPhone')-> + checkElement('link[href*="iphone.css"]')-> + end() +; + +$b-> + getAndCheck('format', 'throwsException', null, 500)-> + throwsException('Exception', '/message/') +; diff --git a/lib/vendor/symfony/test/functional/genericTest.php b/lib/vendor/symfony/test/functional/genericTest.php new file mode 100644 index 0000000..f706722 --- /dev/null +++ b/lib/vendor/symfony/test/functional/genericTest.php @@ -0,0 +1,236 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'frontend'; +if (!include(dirname(__FILE__).'/../bootstrap/functional.php')) +{ + return; +} + +$b = new sfTestBrowser(); + +// default main page +$b-> + getAndCheck('default', 'index', '/')-> + with('response')->begin()-> + checkElement('body', '/congratulations/i')-> + checkElement('link[href="/sf/sf_default/css/screen.css"]')-> + checkElement('link[href="/css/main.css"]')-> + checkElement('link[href="/css/multiple_media.css"][media="print,handheld"]')-> + matches('#'.preg_quote('').'#')-> + end() +; + +// default 404 +$b-> + get('/nonexistant')-> + with('response')->isStatusCode(404) +; +/* +$b-> + get('/nonexistant/')-> + isStatusCode(404) +; +*/ +// 404 with ETag enabled must returns 404, not 304 +sfConfig::set('sf_cache', true); +sfConfig::set('sf_etag', true); +$b-> + get('/notfound')-> + with('request')->begin()-> + isParameter('module', 'notfound')-> + isParameter('action', 'index')-> + end()-> + with('response')->begin()-> + isStatusCode(404)-> + checkElement('body', '/404/')-> + end()-> + + get('/notfound')-> + with('request')->begin()-> + isParameter('module', 'notfound')-> + isParameter('action', 'index')-> + end()-> + with('response')->begin()-> + isStatusCode(404)-> + checkElement('body', '/404/')-> + end() +; +sfConfig::set('sf_cache', false); +sfConfig::set('sf_etag', false); + +// unexistant action +$b-> + get('/default/nonexistantaction')-> + with('response')->isStatusCode(404) +; + +// module.yml: enabled +$b-> + get('/configModuleDisabled')-> + with('request')->begin()-> + isForwardedTo('default', 'disabled')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('body', '/module is unavailable/i')-> + checkElement('body', '!/congratulations/i')-> + checkElement('link[href="/sf/sf_default/css/screen.css"]')-> + end() +; + +// view.yml: has_layout +$b-> + get('/configViewHasLayout/withoutLayout')-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('body', '/no layout/i')-> + checkElement('head title', false)-> + end() +; + +// security.yml: is_secure +$b-> + get('/configSecurityIsSecure')-> + with('request')->begin()-> + isForwardedTo('default', 'login')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('body', '/Login Required/i')-> + + // check that there is no double output caused by the forwarding in a filter + checkElement('body', 1)-> + checkElement('link[href="/sf/sf_default/css/screen.css"]')-> + end() +; + +// security.yml: case sensitivity +$b-> + get('/configSecurityIsSecureAction/index')-> + with('request')->begin()-> + isForwardedTo('default', 'login')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('body', '/Login Required/i')-> + end() +; + +$b-> + get('/configSecurityIsSecureAction/Index')-> + with('request')->begin()-> + isForwardedTo('default', 'login')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('body', '/Login Required/i')-> + end() +; + +// Max forwards +$b-> + get('/configSettingsMaxForwards/selfForward')-> + with('response')->isStatusCode(500)-> + throwsException(null, '/Too many forwards have been detected for this request/i') +; + +// filters.yml: add a filter +$b-> + get('/configFiltersSimpleFilter')-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('body', '/in a filter/i')-> + checkElement('body', '!/congratulation/i')-> + end() +; + +// css and js inclusions +$b-> + get('/assetInclusion/index')-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('head link[rel="stylesheet"]', false)-> + checkElement('head script[type="text/javascript"]', false)-> + end() +; + +// libraries autoloading +$b-> + get('/autoload/index')-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('#lib1', 'pong')-> + checkElement('#lib2', 'pong')-> + checkElement('#lib3', 'pong')-> + checkElement('#lib4', 'nopong')-> + end() +; + +// libraries autoloading in a plugin +$b-> + get('/autoloadPlugin/index')-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('#lib1', 'pong')-> + checkElement('#lib2', 'pong')-> + checkElement('#lib3', 'pong')-> + end() +; + +// renderText +$b-> + get('/renderText')-> + with('response')->begin()-> + isStatusCode(200)-> + matches('/foo/')-> + end() +; + +// view.yml when changing template +$b-> + get('/view')-> + with('response')->begin()-> + isStatusCode(200)-> + isHeader('Content-Type', 'text/html; charset=utf-8')-> + checkElement('head title', 'foo title')-> + end() +; + +// view.yml with other than default content-type +$b-> + get('/view/plain')-> + with('response')->begin()-> + isHeader('Content-Type', 'text/plain; charset=utf-8')-> + isStatusCode(200)-> + matches('//')-> + matches('/plaintext/')-> + end() +; + +// view.yml with other than default content-type and no layout +$b-> + get('/view/image')-> + with('response')->begin()-> + isStatusCode(200)-> + isHeader('Content-Type', 'image/jpg')-> + matches('/image/')-> + end() +; + +// getPresentationFor() +$b-> + get('/presentation')-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('#foo', 'foo')-> + checkElement('#foo_bis', 'foo')-> + end() +; diff --git a/lib/vendor/symfony/test/functional/httpcacheTest.php b/lib/vendor/symfony/test/functional/httpcacheTest.php new file mode 100644 index 0000000..d21731d --- /dev/null +++ b/lib/vendor/symfony/test/functional/httpcacheTest.php @@ -0,0 +1,61 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'cache'; +if (!include(dirname(__FILE__).'/../bootstrap/functional.php')) +{ + return; +} + +$b = new sfTestFunctional(new sfBrowser()); + +$b-> + info('No expiration (client_lifetime is 0)')-> + get('/httpcache/page1')-> + with('response')->begin()-> + isHeader('Last-Modified', '/^'.substr(preg_quote(sfWebResponse::getDate(time()), '/'), 5, 16).'/')-> + isHeader('ETag', true)-> + isHeader('Expires', false)-> + isHeader('Cache-Control', false)-> + end() +; + +$b-> + info('Expiration (client_lifetime is 86400)')-> + get('/httpcache/page2')-> + with('response')->begin()-> + isHeader('Last-Modified', false)-> + isHeader('ETag', false)-> + isHeader('Expires', '/^'.substr(preg_quote(sfWebResponse::getDate(time() + 86400), '/'), 5, 16).'/')-> + isHeader('Cache-Control', '/max-age=86400/')-> + end() +; + +$b-> + info('Expiration (client_lifetime is 86400) but the developer has set a Last-Modified header')-> + get('/httpcache/page3')-> + with('response')->begin()-> + isHeader('Last-Modified', '/^'.substr(preg_quote(sfWebResponse::getDate(time() - 86400), '/'), 5, 16).'/')-> + isHeader('ETag', false)-> + isHeader('Expires', false)-> + isHeader('Cache-Control', false)-> + end() +; + +$b-> + info('No expiration and the developer has set a Last-Modified header')-> + get('/httpcache/page4')-> + with('response')->begin()-> + isHeader('Last-Modified', '/^'.substr(preg_quote(sfWebResponse::getDate(time() - 86400), '/'), 5, 16).'/')-> + isHeader('ETag', true)-> + isHeader('Expires', false)-> + isHeader('Cache-Control', false)-> + end() +; diff --git a/lib/vendor/symfony/test/functional/i18nFormTest.php b/lib/vendor/symfony/test/functional/i18nFormTest.php new file mode 100644 index 0000000..13c5a15 --- /dev/null +++ b/lib/vendor/symfony/test/functional/i18nFormTest.php @@ -0,0 +1,79 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'i18n'; +if (!include(dirname(__FILE__).'/../bootstrap/functional.php')) +{ + return; +} + +$b = new sfTestBrowser(); + +// default culture (en) +$b-> + get('/en/i18n/i18nForm')-> + with('request')->begin()-> + isParameter('module', 'i18n')-> + isParameter('action', 'i18nForm')-> + end()-> + with('user')->isCulture('en')-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('label', 'First name', array('position' => 0))-> + checkElement('label', 'Last name', array('position' => 1))-> + checkElement('label', 'Email address', array('position' => 2))-> + checkElement('td', '/Put your first name here/i', array('position' => 0))-> + end()-> + setField('i18n[email]', 'foo/bar')-> + click('Submit')-> + with('response')->begin()-> + checkElement('ul li', 'Required.', array('position' => 0))-> + checkElement('ul li', 'foo/bar is an invalid email address', array('position' => 2))-> + end() +; + +// changed culture (fr) +$b-> + get('/fr/i18n/i18nForm')-> + with('request')->begin()-> + isParameter('module', 'i18n')-> + isParameter('action', 'i18nForm')-> + end()-> + with('user')->isCulture('fr')-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('label', 'Prénom', array('position' => 0))-> + checkElement('label', 'Nom', array('position' => 1))-> + checkElement('label', 'Adresse email', array('position' => 2))-> + checkElement('td', '/Mettez votre prénom ici/i', array('position' => 0))-> + end()-> + setField('i18n[email]', 'foo/bar')-> + click('Submit')-> + with('response')->begin()-> + checkElement('ul li', 'Champ requis.', array('position' => 0))-> + checkElement('ul li', 'foo/bar est une adresse email invalide', array('position' => 2))-> + end() +; + +// forms label custom catalogue test +$b-> + get('/fr/i18n/i18nCustomCatalogueForm')-> + with('request')->begin()-> + isParameter('module', 'i18n')-> + isParameter('action', 'i18nCustomCatalogueForm')-> + end()-> + with('user')->isCulture('fr')-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('label', 'Prénom!!!', array('position' => 0))-> + checkElement('label', 'Nom!!!', array('position' => 1))-> + checkElement('label', 'Adresse email!!!', array('position' => 2))-> + end() +; diff --git a/lib/vendor/symfony/test/functional/i18nTest.php b/lib/vendor/symfony/test/functional/i18nTest.php new file mode 100644 index 0000000..fc8ac9e --- /dev/null +++ b/lib/vendor/symfony/test/functional/i18nTest.php @@ -0,0 +1,104 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'i18n'; +if (!include(dirname(__FILE__).'/../bootstrap/functional.php')) +{ + return; +} + +class myTestBrowser extends sfTestBrowser +{ + public function checkResponseForCulture($culture = 'fr') + { + return $this-> + with('response')->begin()-> + // messages in the global directories + checkElement('#action', '/une phrase en français/i')-> + checkElement('#template', '/une phrase en français/i')-> + + // messages in the module directories + checkElement('#action_local', '/une phrase locale en français/i')-> + checkElement('#template_local', '/une phrase locale en français/i')-> + + // messages in another global catalogue + checkElement('#action_other', '/une autre phrase en français/i')-> + checkElement('#template_other', '/une autre phrase en français/i')-> + + // messages in another module catalogue + checkElement('#action_other_local', '/une autre phrase locale en français/i')-> + checkElement('#template_other_local', '/une autre phrase locale en français/i')-> + end() + ; + } +} + +$b = new myTestBrowser(); + +// default culture (en) +$b-> + get('/')-> + with('request')->begin()-> + isParameter('module', 'i18n')-> + isParameter('action', 'index')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('#action', '/an english sentence/i')-> + checkElement('#template', '/an english sentence/i')-> + end()-> + with('user')->isCulture('en') +; + +$b-> + get('/fr/i18n/index')-> + with('request')->begin()-> + isParameter('module', 'i18n')-> + isParameter('action', 'index')-> + end()-> + with('response')->isStatusCode(200)-> + with('user')->isCulture('fr')-> + checkResponseForCulture('fr') +; + +// change user culture in the action +$b-> + get('/en/i18n/indexForFr')-> + with('request')->begin()-> + isParameter('module', 'i18n')-> + isParameter('action', 'indexForFr')-> + end()-> + with('response')->isStatusCode(200)-> + with('user')->isCulture('fr')-> + checkResponseForCulture('fr') +; + +// messages for a module plugin +$b-> + get('/fr/sfI18NPlugin/index')-> + with('request')->begin()-> + isParameter('module', 'sfI18NPlugin')-> + isParameter('action', 'index')-> + end()-> + with('user')->isCulture('fr')-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('#action', '/une phrase en français - from plugin/i')-> + checkElement('#template', '/une phrase en français - from plugin/i')-> + checkElement('#action_local', '/une phrase locale en français - from plugin/i')-> + checkElement('#template_local', '/une phrase locale en français - from plugin/i')-> + checkElement('#action_other', '/une autre phrase en français - from plugin but translation overridden in the module/i')-> + checkElement('#template_other', '/une autre phrase en français - from plugin but translation overridden in the module/i')-> + checkElement('#action_yetAnother', '/encore une autre phrase en français - from plugin but translation overridden in the application/i')-> + checkElement('#template_yetAnother', '/encore une autre phrase en français - from plugin but translation overridden in the application/i')-> + checkElement('#action_testForPluginI18N', '/une phrase en français depuis un plugin - global/i')-> + checkElement('#template_testForPluginI18N', '/une phrase en français depuis un plugin - global/i')-> + end() +; diff --git a/lib/vendor/symfony/test/functional/prodTest.php b/lib/vendor/symfony/test/functional/prodTest.php new file mode 100644 index 0000000..799c8b8 --- /dev/null +++ b/lib/vendor/symfony/test/functional/prodTest.php @@ -0,0 +1,82 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'frontend'; +$debug = false; +if (!include(dirname(__FILE__).'/../bootstrap/functional.php')) +{ + return; +} + +$b = new sfTestBrowser(); + +// default main page (without cache) +$b-> + get('/')-> + with('request')->begin()-> + isParameter('module', 'default')-> + isParameter('action', 'index')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('body', '/congratulations/i')-> + end() +; + +// default main page (with cache) +$b-> + get('/')-> + with('request')->begin()-> + isParameter('module', 'default')-> + isParameter('action', 'index')-> + end()-> + with('response')->begin()-> + isStatusCode(200)-> + checkElement('body', '/congratulations/i')-> + end() +; + +// 404 +$b-> + get('/nonexistant')-> + with('request')->begin()-> + isForwardedTo('default', 'error404')-> + end()-> + with('response')->begin()-> + isStatusCode(404)-> + checkElement('body', '!/congratulations/i')-> + checkElement('link[href="/sf/sf_default/css/screen.css"]')-> + end() +; + +$b-> + get('/nonexistant/')-> + with('request')->begin()-> + isForwardedTo('default', 'error404')-> + end()-> + with('response')->begin()-> + isStatusCode(404)-> + checkElement('body', '!/congratulations/i')-> + checkElement('link[href="/sf/sf_default/css/screen.css"]')-> + end() +; + +// unexistant action +$b-> + get('/default/nonexistantaction')-> + with('request')->begin()-> + isForwardedTo('default', 'error404')-> + end()-> + with('response')->begin()-> + isStatusCode(404)-> + checkElement('body', '!/congratulations/i')-> + checkElement('link[href="/sf/sf_default/css/screen.css"]')-> + end() +; diff --git a/lib/vendor/symfony/test/functional/sfTestBrowserTest.php b/lib/vendor/symfony/test/functional/sfTestBrowserTest.php new file mode 100644 index 0000000..67a5cce --- /dev/null +++ b/lib/vendor/symfony/test/functional/sfTestBrowserTest.php @@ -0,0 +1,263 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +$app = 'frontend'; +if (!include(dirname(__FILE__).'/../bootstrap/functional.php')) +{ + return; +} + +class TestBrowser extends sfTestBrowser +{ + public $events = array(); + public function listen(sfEvent $event) + { + $this->events[] = $event; + } +} + +$b = new TestBrowser(); +$b->addListener('context.load_factories', array($b, 'listen')); + +// listeners +$b->get('/'); +$b->test()->is(count($b->events), 1, 'browser can connect to context.load_factories'); + +// exceptions +$b-> + get('/exception/noException')-> + with('request')->begin()-> + isParameter('module', 'exception')-> + isParameter('action', 'noException')-> + end()-> + + with('response')->begin()-> + isStatusCode(200)-> + matches('/foo/')-> + end()-> + + get('/exception/throwsException')-> + with('request')->begin()-> + isParameter('module', 'exception')-> + isParameter('action', 'throwsException')-> + end()-> + with('response')->isStatusCode(500)-> + throwsException('Exception')-> + + get('/exception/throwsException')-> + with('request')->begin()-> + isParameter('module', 'exception')-> + isParameter('action', 'throwsException')-> + end()-> + with('response')->isStatusCode(500)-> + throwsException('Exception', '/Exception message/')-> + + get('/exception/throwsException')-> + with('request')->begin()-> + isParameter('module', 'exception')-> + isParameter('action', 'throwsException')-> + end()-> + with('response')->isStatusCode(500)-> + throwsException('Exception', '/message/')-> + + get('/exception/throwsException')-> + with('request')->begin()-> + isParameter('module', 'exception')-> + isParameter('action', 'throwsException')-> + end()-> + with('response')->isStatusCode(500)-> + throwsException(null, '!/sfException/')-> + + get('/exception/throwsSfException')-> + with('request')->begin()-> + isParameter('module', 'exception')-> + isParameter('action', 'throwsSfException')-> + end()-> + with('response')->isStatusCode(500)-> + throwsException('sfException')-> + + get('/exception/throwsSfException')-> + with('request')->begin()-> + isParameter('module', 'exception')-> + isParameter('action', 'throwsSfException')-> + end()-> + with('response')->isStatusCode(500)-> + throwsException('sfException', 'sfException message') +; + +$b-> + get('/browser')-> + with('response')->begin()-> + matches('/html/')-> + checkElement('h1', 'html')-> + end()-> + + get('/browser/text')-> + with('response')->begin()-> + matches('/text/')-> + end() +; + +try +{ + $b->with('response')->checkElement('h1', 'text'); + $b->test()->fail('The DOM is not accessible if the response content type is not HTML'); +} +catch (LogicException $e) +{ + $b->test()->pass('The DOM is not accessible if the response content type is not HTML'); +} + +// check response headers +$b-> + get('/browser/responseHeader')-> + with('response')->begin()-> + isStatusCode()-> + isHeader('content-type', 'text/plain; charset=utf-8')-> + isHeader('content-type', '#text/plain#')-> + isHeader('content-type', '!#text/html#')-> + isHeader('foo', 'bar')-> + isHeader('foo', 'foobar')-> + end() +; + +// cookies +$b-> + setCookie('foo', 'bar')-> + setCookie('bar', 'foo')-> + setCookie('foofoo', 'foo', time() - 10)-> + + get('/cookie')-> + with('request')->begin()-> + hasCookie('foofoo', false)-> + hasCookie('foo')-> + isCookie('foo', 'bar')-> + isCookie('foo', '/a/')-> + isCookie('foo', '!/z/')-> + end()-> + with('response')->checkElement('p', 'bar.foo-')-> + get('/cookie')-> + with('request')->begin()-> + hasCookie('foo')-> + isCookie('foo', 'bar')-> + isCookie('foo', '/a/')-> + isCookie('foo', '!/z/')-> + end()-> + with('response')->checkElement('p', 'bar.foo-')-> + removeCookie('foo')-> + get('/cookie')-> + with('request')->begin()-> + hasCookie('foo', false)-> + hasCookie('bar')-> + end()-> + with('response')->checkElement('p', '.foo-')-> + clearCookies()-> + get('/cookie')-> + with('request')->begin()-> + hasCookie('foo', false)-> + hasCookie('bar', false)-> + end()-> + with('response')->checkElement('p', '.-') +; + +$b-> + setCookie('foo', 'bar')-> + setCookie('bar', 'foo')-> + + get('/cookie/setCookie')-> + + get('/cookie')-> + with('request')->begin()-> + hasCookie('foo')-> + isCookie('foo', 'bar')-> + isCookie('foo', '/a/')-> + isCookie('foo', '!/z/')-> + end()-> + with('response')->checkElement('p', 'bar.foo-barfoo')-> + get('/cookie')-> + with('request')->begin()-> + hasCookie('foo')-> + isCookie('foo', 'bar')-> + isCookie('foo', '/a/')-> + isCookie('foo', '!/z/')-> + end()-> + with('response')->checkElement('p', 'bar.foo-barfoo')-> + removeCookie('foo')-> + get('/cookie')-> + with('request')->begin()-> + hasCookie('foo', false)-> + hasCookie('bar')-> + end()-> + with('response')->checkElement('p', '.foo-barfoo')-> + + get('/cookie/removeCookie')-> + + get('/cookie')-> + with('request')->begin()-> + hasCookie('foo', false)-> + hasCookie('bar')-> + end()-> + with('response')->checkElement('p', '.foo-')-> + + get('/cookie/setCookie')-> + + clearCookies()-> + get('/cookie')-> + with('request')->begin()-> + hasCookie('foo', false)-> + hasCookie('bar', false)-> + end()-> + with('response')->checkElement('p', '.-') +; + +$b-> + get('/browser')-> + with('request')->isMethod('get')-> + post('/browser')-> + with('request')->isMethod('post')-> + call('/browser', 'put')-> + with('request')->isMethod('put') +; + +// sfBrowser: clean the custom view templates +$b-> + get('/browser/templateCustom')-> + with('response')->checkElement('#test', 'template')-> + + get('/browser/templateCustom/custom/1')-> + with('response')->checkElement('#test', 'template 1')-> + + get('/browser/templateCustom')-> + with('response')->checkElement('#test', 'template') +; + +$b + ->getAndCheck('browser', 'redirect1', null, 302) + + ->followRedirect() + + ->with('request')->begin() + ->isParameter('module', 'browser') + ->isParameter('action', 'redirectTarget1') + ->end() + + ->with('response')->isStatusCode(200) + + ->getAndCheck('browser', 'redirect2', null, 302) + + ->followRedirect() + + ->with('request')->begin() + ->isParameter('module', 'browser') + ->isParameter('action', 'redirectTarget2') + ->end() + + ->with('response')->isStatusCode(200) +; diff --git a/lib/vendor/symfony/test/other/.svn/all-wcprops b/lib/vendor/symfony/test/other/.svn/all-wcprops new file mode 100644 index 0000000..03ac014 --- /dev/null +++ b/lib/vendor/symfony/test/other/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 39 +/!svn/ver/29531/branches/1.4/test/other +END +tasksTest.php +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/23910/branches/1.4/test/other/tasksTest.php +END diff --git a/lib/vendor/symfony/test/other/.svn/entries b/lib/vendor/symfony/test/other/.svn/entries new file mode 100644 index 0000000..27fa040 --- /dev/null +++ b/lib/vendor/symfony/test/other/.svn/entries @@ -0,0 +1,65 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/other +http://svn.symfony-project.com + + + +2010-05-19T14:03:27.794802Z +29531 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +fixtures +dir + +tasksTest.php +file + + + + +2012-05-10T18:40:51.017560Z +43b2e4f346005c39a42f296ce5638bbc +2009-11-14T14:11:45.241493Z +23910 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +7485 + diff --git a/lib/vendor/symfony/test/other/.svn/prop-base/tasksTest.php.svn-base b/lib/vendor/symfony/test/other/.svn/prop-base/tasksTest.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/other/.svn/prop-base/tasksTest.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/other/.svn/text-base/tasksTest.php.svn-base b/lib/vendor/symfony/test/other/.svn/text-base/tasksTest.php.svn-base new file mode 100644 index 0000000..2209bd7 --- /dev/null +++ b/lib/vendor/symfony/test/other/.svn/text-base/tasksTest.php.svn-base @@ -0,0 +1,170 @@ +t = $t; + + $this->tmp_dir = sys_get_temp_dir().DS.'sf_test_project'; + + if (is_dir($this->tmp_dir)) + { + $this->clearTmpDir(); + rmdir($this->tmp_dir); + } + + mkdir($this->tmp_dir, 0777); + + $this->current_dir = getcwd(); + chdir($this->tmp_dir); + + $this->php_cli = sfToolkit::getPhpCli(); + } + + public function shutdown() + { + $this->clearTmpDir(); + rmdir($this->tmp_dir); + chdir($this->current_dir); + } + + protected function clearTmpDir() + { + require_once(dirname(__FILE__).'/../../lib/util/sfToolkit.class.php'); + sfToolkit::clearDirectory($this->tmp_dir); + } + + public function execute_command($cmd, $awaited_return=0) + { + chdir($this->tmp_dir); + $symfony = file_exists('symfony') ? 'symfony' : dirname(__FILE__).'/../../data/bin/symfony'; + + ob_start(); + passthru(sprintf('%s "%s" %s 2>&1', $this->php_cli, $symfony, $cmd), $return); + $content = ob_get_clean(); + $this->t->cmp_ok($return, '==', $awaited_return, sprintf('"symfony %s" returns awaited value (%d)', $cmd, $awaited_return)); + + return $content; + } + + public function get_fixture_content($file) + { + return str_replace("\r\n", "\n", file_get_contents(dirname(__FILE__).'/fixtures/'.$file)); + } +} + +$plan = 39; +$t = new lime_test($plan); + +if (!extension_loaded('SQLite') && !extension_loaded('pdo_SQLite')) +{ + $t->skip('You need SQLite to run these tests', $plan); + + return; +} + +$c = new sf_test_project(); +$c->initialize($t); + +// generate:* +$content = $c->execute_command('generate:project myproject --orm=Propel'); +$t->ok(file_exists($c->tmp_dir.DS.'symfony'), '"generate:project" installs the symfony CLI in root project directory'); + +$content = $c->execute_command('generate:app frontend'); +$t->ok(is_dir($c->tmp_dir.DS.'apps'.DS.'frontend'), '"generate:app" creates a "frontend" directory under "apps" directory'); +$t->like(file_get_contents($c->tmp_dir.'/apps/frontend/config/settings.yml'), '/escaping_strategy: +true/', '"generate:app" switches escaping_strategy "on" by default'); +$t->like(file_get_contents($c->tmp_dir.'/apps/frontend/config/settings.yml'), '/csrf_secret: +\w+/', '"generate:app" generates a csrf_token by default'); + +$content = $c->execute_command('generate:app backend --escaping-strategy=false --csrf-secret=false'); +$t->like(file_get_contents($c->tmp_dir.'/apps/backend/config/settings.yml'), '/escaping_strategy: +false/', '"generate:app" switches escaping_strategy "false"'); +$t->like(file_get_contents($c->tmp_dir.'/apps/backend/config/settings.yml'), '/csrf_secret: +false/', '"generate:app" switches csrf_token to "false"'); + +// failing +$content = $c->execute_command('generate:module wrongapp foo', 1); + +$content = $c->execute_command('generate:module frontend foo'); +$t->ok(is_dir($c->tmp_dir.DS.'apps'.DS.'frontend'.DS.'modules'.DS.'foo'), '"generate:module" creates a "foo" directory under "modules" directory'); + +copy(dirname(__FILE__).'/fixtures/propel/schema.yml', $c->tmp_dir.DS.'config'.DS.'schema.yml'); +copy(dirname(__FILE__).'/fixtures/propel/databases.yml', $c->tmp_dir.DS.'config'.DS.'databases.yml'); +copy(dirname(__FILE__).'/fixtures/propel/propel.ini', $c->tmp_dir.DS.'config'.DS.'propel.ini'); +copy(dirname(__FILE__).'/fixtures/factories.yml', $c->tmp_dir.DS.'apps'.DS.'frontend'.DS.'config'.DS.'factories.yml'); + +// update propel configuration paths +file_put_contents($c->tmp_dir.DS.'config'.DS.'propel.ini', str_replace('%SF_ROOT_DIR%', $c->tmp_dir, str_replace('%SF_DATA_DIR%', $c->tmp_dir.'/data', file_get_contents($c->tmp_dir.DS.'config'.DS.'propel.ini')))); + +// propel:* +$content = $c->execute_command('propel:build-sql'); +$t->ok(file_exists($c->tmp_dir.DS.'data'.DS.'sql'.DS.'lib.model.schema.sql'), '"propel:build-sql" creates a "schema.sql" file under "data/sql" directory'); + +$content = $c->execute_command('propel:build-model'); +$t->ok(file_exists($c->tmp_dir.DS.'lib'.DS.'model'.DS.'Article.php'), '"propel:build-model" creates model classes under "lib/model" directory'); + +copy(dirname(__FILE__).'/fixtures/propel/Category.php', $c->tmp_dir.DS.'lib'.DS.'model'.DS.'Category.php'); + +$content = $c->execute_command('propel:build-form'); +$t->ok(file_exists($c->tmp_dir.DS.'lib'.DS.'form'.DS.DS.'BaseFormPropel.class.php'), '"propel:build-form" creates form classes under "lib/form" directory'); + +$c->execute_command('propel:insert-sql --no-confirmation'); +$t->ok(file_exists($c->tmp_dir.DS.'data'.DS.'database.sqlite'), '"propel:insert-sql" creates tables in the database'); + +$c->execute_command('propel:build-all --no-confirmation'); + +$content = $c->execute_command('propel:generate-module --generate-in-cache frontend articleInitCrud Article'); +$t->ok(file_exists($c->tmp_dir.DS.'apps'.DS.'frontend'.DS.'modules'.DS.'articleInitCrud'.DS.'config'.DS.'generator.yml'), '"propel:generate-module" initializes a CRUD module'); + +$content = $c->execute_command('propel:generate-admin frontend Article --module=articleInitAdmin'); +$t->ok(file_exists($c->tmp_dir.DS.'apps'.DS.'frontend'.DS.'modules'.DS.'articleInitAdmin'.DS.'config'.DS.'generator.yml'), '"propel:generate-admin" initializes an admin generator module'); + +// test:* +$content = $c->execute_command('test:functional frontend articleInitCrudActions'); +$t->is($content, $c->get_fixture_content('test/functional/result.txt'), '"test:functional" can launch a particular functional test'); + +$content = $c->execute_command('test:functional frontend', 1); +$t->is($content, $c->get_fixture_content('test/functional/result-harness.txt'), '"test:functional" can launch all functional tests'); + +copy(dirname(__FILE__).'/fixtures/test/unit/testTest.php', $c->tmp_dir.DS.'test'.DS.'unit'.DS.'testTest.php'); + +$content = $c->execute_command('test:unit test'); +$t->is($content, $c->get_fixture_content('/test/unit/result.txt'), '"test:unit" can launch a particular unit test'); + +$content = $c->execute_command('test:unit'); +$t->is($content, $c->get_fixture_content('test/unit/result-harness.txt'), '"test:unit" can launch all unit tests'); + +$content = $c->execute_command('test:all', 1); +$t->is($content, $c->get_fixture_content('test/result-harness.txt'), '"test:all" launches all unit and functional tests'); + +$content = $c->execute_command('cache:clear'); + +// Test task autoloading +mkdir($c->tmp_dir.DS.'lib'.DS.'task'); +copy(dirname(__FILE__).'/fixtures/task/aTask.class.php', $c->tmp_dir.DS.'lib'.DS.'task'.DS.'aTask.class.php'); +copy(dirname(__FILE__).'/fixtures/task/zTask.class.php', $c->tmp_dir.DS.'lib'.DS.'task'.DS.'zTask.class.php'); +mkdir($pluginDir = $c->tmp_dir.DS.'plugins'.DS.'myFooPlugin'.DS.'lib'.DS.'task', 0777, true); +copy(dirname(__FILE__).'/fixtures/task/myPluginTask.class.php', $pluginDir.DS.'myPluginTask.class.php'); +file_put_contents( + $projectConfigurationFile = $c->tmp_dir.DS.'config'.DS.'ProjectConfiguration.class.php', + str_replace( + '$this->enablePlugins(\'sfPropelPlugin\')', + '$this->enablePlugins(array(\'myFooPlugin\', \'sfPropelPlugin\'))', + file_get_contents($projectConfigurationFile) + ) +); + +$c->execute_command('a:run'); +$c->execute_command('z:run'); +$c->execute_command('p:run'); + +$c->shutdown(); diff --git a/lib/vendor/symfony/test/other/fixtures/.svn/all-wcprops b/lib/vendor/symfony/test/other/fixtures/.svn/all-wcprops new file mode 100644 index 0000000..6f15d95 --- /dev/null +++ b/lib/vendor/symfony/test/other/fixtures/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 48 +/!svn/ver/29531/branches/1.4/test/other/fixtures +END +factories.yml +K 25 +svn:wc:ra_dav:version-url +V 62 +/!svn/ver/24434/branches/1.4/test/other/fixtures/factories.yml +END diff --git a/lib/vendor/symfony/test/other/fixtures/.svn/entries b/lib/vendor/symfony/test/other/fixtures/.svn/entries new file mode 100644 index 0000000..b990d7e --- /dev/null +++ b/lib/vendor/symfony/test/other/fixtures/.svn/entries @@ -0,0 +1,71 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/other/fixtures +http://svn.symfony-project.com + + + +2010-05-19T14:03:27.794802Z +29531 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +test +dir + +factories.yml +file + + + + +2012-05-10T18:40:50.997552Z +89bdb1502f14e8ed38df4c82dc7127d4 +2009-11-26T11:52:47.753777Z +24434 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +498 + +propel +dir + +task +dir + diff --git a/lib/vendor/symfony/test/other/fixtures/.svn/prop-base/factories.yml.svn-base b/lib/vendor/symfony/test/other/fixtures/.svn/prop-base/factories.yml.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/test/other/fixtures/.svn/prop-base/factories.yml.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/test/other/fixtures/.svn/text-base/factories.yml.svn-base b/lib/vendor/symfony/test/other/fixtures/.svn/text-base/factories.yml.svn-base new file mode 100644 index 0000000..9f31f11 --- /dev/null +++ b/lib/vendor/symfony/test/other/fixtures/.svn/text-base/factories.yml.svn-base @@ -0,0 +1,27 @@ +prod: + logger: + class: sfNoLogger + param: + level: err + loggers: ~ + +test: + storage: + class: sfSessionTestStorage + param: + session_path: %SF_TEST_CACHE_DIR%/sessions + + response: + class: sfWebResponse + param: + send_http_headers: false + +all: + routing: + class: sfPatternRouting + param: + generate_shortest_url: true + extra_parameters_as_query_string: true + + # see http://trac.symfony-project.org/ticket/6181 + cache: null diff --git a/lib/vendor/symfony/test/other/fixtures/factories.yml b/lib/vendor/symfony/test/other/fixtures/factories.yml new file mode 100644 index 0000000..9f31f11 --- /dev/null +++ b/lib/vendor/symfony/test/other/fixtures/factories.yml @@ -0,0 +1,27 @@ +prod: + logger: + class: sfNoLogger + param: + level: err + loggers: ~ + +test: + storage: + class: sfSessionTestStorage + param: + session_path: %SF_TEST_CACHE_DIR%/sessions + + response: + class: sfWebResponse + param: + send_http_headers: false + +all: + routing: + class: sfPatternRouting + param: + generate_shortest_url: true + extra_parameters_as_query_string: true + + # see http://trac.symfony-project.org/ticket/6181 + cache: null diff --git a/lib/vendor/symfony/test/other/fixtures/propel/.svn/all-wcprops b/lib/vendor/symfony/test/other/fixtures/propel/.svn/all-wcprops new file mode 100644 index 0000000..c0b7d1f --- /dev/null +++ b/lib/vendor/symfony/test/other/fixtures/propel/.svn/all-wcprops @@ -0,0 +1,29 @@ +K 25 +svn:wc:ra_dav:version-url +V 55 +/!svn/ver/23910/branches/1.4/test/other/fixtures/propel +END +propel.ini +K 25 +svn:wc:ra_dav:version-url +V 66 +/!svn/ver/23906/branches/1.4/test/other/fixtures/propel/propel.ini +END +schema.yml +K 25 +svn:wc:ra_dav:version-url +V 66 +/!svn/ver/23881/branches/1.4/test/other/fixtures/propel/schema.yml +END +Category.php +K 25 +svn:wc:ra_dav:version-url +V 68 +/!svn/ver/23910/branches/1.4/test/other/fixtures/propel/Category.php +END +databases.yml +K 25 +svn:wc:ra_dav:version-url +V 69 +/!svn/ver/23881/branches/1.4/test/other/fixtures/propel/databases.yml +END diff --git a/lib/vendor/symfony/test/other/fixtures/propel/.svn/entries b/lib/vendor/symfony/test/other/fixtures/propel/.svn/entries new file mode 100644 index 0000000..302002e --- /dev/null +++ b/lib/vendor/symfony/test/other/fixtures/propel/.svn/entries @@ -0,0 +1,164 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/other/fixtures/propel +http://svn.symfony-project.com + + + +2009-11-14T14:11:45.241493Z +23910 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +propel.ini +file + + + + +2012-05-10T18:40:50.921551Z +a227297992d80383653d92523a702a4f +2009-11-14T13:58:15.079301Z +23906 +fabien + + + + + + + + + + + + + + + + + + + + + +1827 + +schema.yml +file + + + + +2012-05-10T18:40:50.921551Z +c31735398e90bcd983193558efe9d0ef +2006-10-01T12:37:14.390030Z +2275 +fabien + + + + + + + + + + + + + + + + + + + + + +151 + +Category.php +file + + + + +2012-05-10T18:40:50.925550Z +60cf063dff4bfc527a3c34aadc50f718 +2009-11-14T14:11:45.241493Z +23910 +fabien + + + + + + + + + + + + + + + + + + + + + +109 + +databases.yml +file + + + + +2012-05-10T18:40:50.925550Z +ae4ed47f49007bb4f10e5160620c763c +2008-08-20T08:01:21.868757Z +10987 +dwhittle + + + + + + + + + + + + + + + + + + + + + +112 + diff --git a/lib/vendor/symfony/test/other/fixtures/propel/.svn/text-base/Category.php.svn-base b/lib/vendor/symfony/test/other/fixtures/propel/.svn/text-base/Category.php.svn-base new file mode 100644 index 0000000..298ad84 --- /dev/null +++ b/lib/vendor/symfony/test/other/fixtures/propel/.svn/text-base/Category.php.svn-base @@ -0,0 +1,9 @@ +name; + } +} \ No newline at end of file diff --git a/lib/vendor/symfony/test/other/fixtures/propel/.svn/text-base/databases.yml.svn-base b/lib/vendor/symfony/test/other/fixtures/propel/.svn/text-base/databases.yml.svn-base new file mode 100644 index 0000000..15deab7 --- /dev/null +++ b/lib/vendor/symfony/test/other/fixtures/propel/.svn/text-base/databases.yml.svn-base @@ -0,0 +1,5 @@ +all: + propel: + class: sfPropelDatabase + param: + dsn: sqlite:%SF_DATA_DIR%/database.sqlite diff --git a/lib/vendor/symfony/test/other/fixtures/propel/.svn/text-base/propel.ini.svn-base b/lib/vendor/symfony/test/other/fixtures/propel/.svn/text-base/propel.ini.svn-base new file mode 100644 index 0000000..947e6e0 --- /dev/null +++ b/lib/vendor/symfony/test/other/fixtures/propel/.svn/text-base/propel.ini.svn-base @@ -0,0 +1,40 @@ +propel.targetPackage = lib.model +propel.project = project +propel.database = sqlite +propel.database.createUrl = sqlite:%SF_DATA_DIR%/database.sqlite +propel.database.url = sqlite:%SF_DATA_DIR%/database.sqlite + +propel.addGenericAccessors = true +propel.addGenericMutators = true +propel.addTimeStamp = false + +propel.schema.validate = false + +; directories +propel.home = . +propel.output.dir = %SF_ROOT_DIR% +propel.schema.dir = ${propel.output.dir}/config +propel.conf.dir = ${propel.output.dir}/config +propel.phpconf.dir = ${propel.output.dir}/config +propel.sql.dir = ${propel.output.dir}/data/sql +propel.runtime.conf.file = runtime-conf.xml +propel.php.dir = ${propel.output.dir} +propel.default.schema.basename = schema +propel.datadump.mapper.from = *schema.xml +propel.datadump.mapper.to = *data.xml + +; builder settings +propel.behavior.default = symfony,symfony_i18n +propel.behavior.symfony.class = plugins.sfPropelPlugin.lib.behavior.SfPropelBehaviorSymfony +propel.behavior.symfony_i18n.class = plugins.sfPropelPlugin.lib.behavior.SfPropelBehaviorI18n +propel.behavior.symfony_i18n_translation.class = plugins.sfPropelPlugin.lib.behavior.SfPropelBehaviorI18nTranslation +propel.behavior.symfony_behaviors.class = plugins.sfPropelPlugin.lib.behavior.SfPropelBehaviorSymfonyBehaviors +propel.behavior.symfony_timestampable.class = plugins.sfPropelPlugin.lib.behavior.SfPropelBehaviorTimestampable + +propel.builder.addIncludes = true +propel.builder.addComments = true +propel.packageObjectModel = true + +propel.defaultTimeStampFormat = Y-m-d H:i:s +propel.defaultTimeFormat = H:i:s +propel.defaultDateFormat = Y-m-d diff --git a/lib/vendor/symfony/test/other/fixtures/propel/.svn/text-base/schema.yml.svn-base b/lib/vendor/symfony/test/other/fixtures/propel/.svn/text-base/schema.yml.svn-base new file mode 100644 index 0000000..11d3212 --- /dev/null +++ b/lib/vendor/symfony/test/other/fixtures/propel/.svn/text-base/schema.yml.svn-base @@ -0,0 +1,11 @@ +propel: + article: + id: + title: varchar(255) + body: longvarchar + category_id: + created_at: + + category: + id: + name: varchar(255) diff --git a/lib/vendor/symfony/test/other/fixtures/propel/Category.php b/lib/vendor/symfony/test/other/fixtures/propel/Category.php new file mode 100644 index 0000000..298ad84 --- /dev/null +++ b/lib/vendor/symfony/test/other/fixtures/propel/Category.php @@ -0,0 +1,9 @@ +name; + } +} \ No newline at end of file diff --git a/lib/vendor/symfony/test/other/fixtures/propel/databases.yml b/lib/vendor/symfony/test/other/fixtures/propel/databases.yml new file mode 100644 index 0000000..15deab7 --- /dev/null +++ b/lib/vendor/symfony/test/other/fixtures/propel/databases.yml @@ -0,0 +1,5 @@ +all: + propel: + class: sfPropelDatabase + param: + dsn: sqlite:%SF_DATA_DIR%/database.sqlite diff --git a/lib/vendor/symfony/test/other/fixtures/propel/propel.ini b/lib/vendor/symfony/test/other/fixtures/propel/propel.ini new file mode 100644 index 0000000..947e6e0 --- /dev/null +++ b/lib/vendor/symfony/test/other/fixtures/propel/propel.ini @@ -0,0 +1,40 @@ +propel.targetPackage = lib.model +propel.project = project +propel.database = sqlite +propel.database.createUrl = sqlite:%SF_DATA_DIR%/database.sqlite +propel.database.url = sqlite:%SF_DATA_DIR%/database.sqlite + +propel.addGenericAccessors = true +propel.addGenericMutators = true +propel.addTimeStamp = false + +propel.schema.validate = false + +; directories +propel.home = . +propel.output.dir = %SF_ROOT_DIR% +propel.schema.dir = ${propel.output.dir}/config +propel.conf.dir = ${propel.output.dir}/config +propel.phpconf.dir = ${propel.output.dir}/config +propel.sql.dir = ${propel.output.dir}/data/sql +propel.runtime.conf.file = runtime-conf.xml +propel.php.dir = ${propel.output.dir} +propel.default.schema.basename = schema +propel.datadump.mapper.from = *schema.xml +propel.datadump.mapper.to = *data.xml + +; builder settings +propel.behavior.default = symfony,symfony_i18n +propel.behavior.symfony.class = plugins.sfPropelPlugin.lib.behavior.SfPropelBehaviorSymfony +propel.behavior.symfony_i18n.class = plugins.sfPropelPlugin.lib.behavior.SfPropelBehaviorI18n +propel.behavior.symfony_i18n_translation.class = plugins.sfPropelPlugin.lib.behavior.SfPropelBehaviorI18nTranslation +propel.behavior.symfony_behaviors.class = plugins.sfPropelPlugin.lib.behavior.SfPropelBehaviorSymfonyBehaviors +propel.behavior.symfony_timestampable.class = plugins.sfPropelPlugin.lib.behavior.SfPropelBehaviorTimestampable + +propel.builder.addIncludes = true +propel.builder.addComments = true +propel.packageObjectModel = true + +propel.defaultTimeStampFormat = Y-m-d H:i:s +propel.defaultTimeFormat = H:i:s +propel.defaultDateFormat = Y-m-d diff --git a/lib/vendor/symfony/test/other/fixtures/propel/schema.yml b/lib/vendor/symfony/test/other/fixtures/propel/schema.yml new file mode 100644 index 0000000..11d3212 --- /dev/null +++ b/lib/vendor/symfony/test/other/fixtures/propel/schema.yml @@ -0,0 +1,11 @@ +propel: + article: + id: + title: varchar(255) + body: longvarchar + category_id: + created_at: + + category: + id: + name: varchar(255) diff --git a/lib/vendor/symfony/test/other/fixtures/task/.svn/all-wcprops b/lib/vendor/symfony/test/other/fixtures/task/.svn/all-wcprops new file mode 100644 index 0000000..387af27 --- /dev/null +++ b/lib/vendor/symfony/test/other/fixtures/task/.svn/all-wcprops @@ -0,0 +1,23 @@ +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/23881/branches/1.4/test/other/fixtures/task +END +myPluginTask.class.php +K 25 +svn:wc:ra_dav:version-url +V 76 +/!svn/ver/23881/branches/1.4/test/other/fixtures/task/myPluginTask.class.php +END +zTask.class.php +K 25 +svn:wc:ra_dav:version-url +V 69 +/!svn/ver/23881/branches/1.4/test/other/fixtures/task/zTask.class.php +END +aTask.class.php +K 25 +svn:wc:ra_dav:version-url +V 69 +/!svn/ver/23881/branches/1.4/test/other/fixtures/task/aTask.class.php +END diff --git a/lib/vendor/symfony/test/other/fixtures/task/.svn/entries b/lib/vendor/symfony/test/other/fixtures/task/.svn/entries new file mode 100644 index 0000000..7d9b887 --- /dev/null +++ b/lib/vendor/symfony/test/other/fixtures/task/.svn/entries @@ -0,0 +1,130 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/other/fixtures/task +http://svn.symfony-project.com + + + +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +myPluginTask.class.php +file + + + + +2012-05-10T18:40:50.981552Z +19a2dd0e846075fceaf428540fc6b4c1 +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +215 + +zTask.class.php +file + + + + +2012-05-10T18:40:50.985550Z +d8a79643aa72f9a638eda2e98d9776cb +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +214 + +aTask.class.php +file + + + + +2012-05-10T18:40:50.985550Z +2dee66b39378bb3833c5b1c888d434a4 +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +214 + diff --git a/lib/vendor/symfony/test/other/fixtures/task/.svn/prop-base/aTask.class.php.svn-base b/lib/vendor/symfony/test/other/fixtures/task/.svn/prop-base/aTask.class.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/test/other/fixtures/task/.svn/prop-base/aTask.class.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/test/other/fixtures/task/.svn/prop-base/myPluginTask.class.php.svn-base b/lib/vendor/symfony/test/other/fixtures/task/.svn/prop-base/myPluginTask.class.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/test/other/fixtures/task/.svn/prop-base/myPluginTask.class.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/test/other/fixtures/task/.svn/prop-base/zTask.class.php.svn-base b/lib/vendor/symfony/test/other/fixtures/task/.svn/prop-base/zTask.class.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/test/other/fixtures/task/.svn/prop-base/zTask.class.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/test/other/fixtures/task/.svn/text-base/aTask.class.php.svn-base b/lib/vendor/symfony/test/other/fixtures/task/.svn/text-base/aTask.class.php.svn-base new file mode 100644 index 0000000..c7a3ffb --- /dev/null +++ b/lib/vendor/symfony/test/other/fixtures/task/.svn/text-base/aTask.class.php.svn-base @@ -0,0 +1,12 @@ +namespace = 'a'; + $this->name = 'run'; + } + public function execute($arguments = array(), $options = array()) + { + } +} \ No newline at end of file diff --git a/lib/vendor/symfony/test/other/fixtures/task/.svn/text-base/myPluginTask.class.php.svn-base b/lib/vendor/symfony/test/other/fixtures/task/.svn/text-base/myPluginTask.class.php.svn-base new file mode 100644 index 0000000..18efefb --- /dev/null +++ b/lib/vendor/symfony/test/other/fixtures/task/.svn/text-base/myPluginTask.class.php.svn-base @@ -0,0 +1,12 @@ +namespace = 'p'; + $this->name = 'run'; + } + public function execute($arguments = array(), $options = array()) + { + } +} \ No newline at end of file diff --git a/lib/vendor/symfony/test/other/fixtures/task/.svn/text-base/zTask.class.php.svn-base b/lib/vendor/symfony/test/other/fixtures/task/.svn/text-base/zTask.class.php.svn-base new file mode 100644 index 0000000..9b01309 --- /dev/null +++ b/lib/vendor/symfony/test/other/fixtures/task/.svn/text-base/zTask.class.php.svn-base @@ -0,0 +1,12 @@ +namespace = 'z'; + $this->name = 'run'; + } + public function execute($arguments = array(), $options = array()) + { + } +} \ No newline at end of file diff --git a/lib/vendor/symfony/test/other/fixtures/task/aTask.class.php b/lib/vendor/symfony/test/other/fixtures/task/aTask.class.php new file mode 100644 index 0000000..c7a3ffb --- /dev/null +++ b/lib/vendor/symfony/test/other/fixtures/task/aTask.class.php @@ -0,0 +1,12 @@ +namespace = 'a'; + $this->name = 'run'; + } + public function execute($arguments = array(), $options = array()) + { + } +} \ No newline at end of file diff --git a/lib/vendor/symfony/test/other/fixtures/task/myPluginTask.class.php b/lib/vendor/symfony/test/other/fixtures/task/myPluginTask.class.php new file mode 100644 index 0000000..18efefb --- /dev/null +++ b/lib/vendor/symfony/test/other/fixtures/task/myPluginTask.class.php @@ -0,0 +1,12 @@ +namespace = 'p'; + $this->name = 'run'; + } + public function execute($arguments = array(), $options = array()) + { + } +} \ No newline at end of file diff --git a/lib/vendor/symfony/test/other/fixtures/task/zTask.class.php b/lib/vendor/symfony/test/other/fixtures/task/zTask.class.php new file mode 100644 index 0000000..9b01309 --- /dev/null +++ b/lib/vendor/symfony/test/other/fixtures/task/zTask.class.php @@ -0,0 +1,12 @@ +namespace = 'z'; + $this->name = 'run'; + } + public function execute($arguments = array(), $options = array()) + { + } +} \ No newline at end of file diff --git a/lib/vendor/symfony/test/other/fixtures/test/.svn/all-wcprops b/lib/vendor/symfony/test/other/fixtures/test/.svn/all-wcprops new file mode 100644 index 0000000..7619296 --- /dev/null +++ b/lib/vendor/symfony/test/other/fixtures/test/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/29531/branches/1.4/test/other/fixtures/test +END +result-harness.txt +K 25 +svn:wc:ra_dav:version-url +V 72 +/!svn/ver/29531/branches/1.4/test/other/fixtures/test/result-harness.txt +END diff --git a/lib/vendor/symfony/test/other/fixtures/test/.svn/entries b/lib/vendor/symfony/test/other/fixtures/test/.svn/entries new file mode 100644 index 0000000..487f459 --- /dev/null +++ b/lib/vendor/symfony/test/other/fixtures/test/.svn/entries @@ -0,0 +1,68 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/other/fixtures/test +http://svn.symfony-project.com + + + +2010-05-19T14:03:27.794802Z +29531 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +unit +dir + +functional +dir + +result-harness.txt +file + + + + +2012-05-10T18:40:50.877553Z +0b4d5c1537e81711d873246a4bbc8e72 +2010-05-19T14:03:27.794802Z +29531 +fabien + + + + + + + + + + + + + + + + + + + + + +596 + diff --git a/lib/vendor/symfony/test/other/fixtures/test/.svn/text-base/result-harness.txt.svn-base b/lib/vendor/symfony/test/other/fixtures/test/.svn/text-base/result-harness.txt.svn-base new file mode 100644 index 0000000..89d0a00 --- /dev/null +++ b/lib/vendor/symfony/test/other/fixtures/test/.svn/text-base/result-harness.txt.svn-base @@ -0,0 +1,9 @@ +functional/frontend/articleInitAdminActionsTest......................ok +functional/frontend/articleInitCrudActionsTest.......................ok +functional/frontend/fooActionsTest...................................not ok + Failed tests: 4 +unit/testTest........................................................ok +Failed Test Stat Total Fail Errors List of Failed +-------------------------------------------------------------------------- +tional/frontend/fooActionsTest 0 4 1 0 4 +Failed 1/4 test scripts, 75.00% okay. 1/13 subtests failed, 92.31% okay. diff --git a/lib/vendor/symfony/test/other/fixtures/test/functional/.svn/all-wcprops b/lib/vendor/symfony/test/other/fixtures/test/functional/.svn/all-wcprops new file mode 100644 index 0000000..663ab91 --- /dev/null +++ b/lib/vendor/symfony/test/other/fixtures/test/functional/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 64 +/!svn/ver/29531/branches/1.4/test/other/fixtures/test/functional +END +result.txt +K 25 +svn:wc:ra_dav:version-url +V 75 +/!svn/ver/23881/branches/1.4/test/other/fixtures/test/functional/result.txt +END +result-harness.txt +K 25 +svn:wc:ra_dav:version-url +V 83 +/!svn/ver/29531/branches/1.4/test/other/fixtures/test/functional/result-harness.txt +END diff --git a/lib/vendor/symfony/test/other/fixtures/test/functional/.svn/entries b/lib/vendor/symfony/test/other/fixtures/test/functional/.svn/entries new file mode 100644 index 0000000..a786369 --- /dev/null +++ b/lib/vendor/symfony/test/other/fixtures/test/functional/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/other/fixtures/test/functional +http://svn.symfony-project.com + + + +2010-05-19T14:03:27.794802Z +29531 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +result.txt +file + + + + +2012-05-10T18:40:50.853546Z +6ab9bd18e6863d176890c40a95c4d754 +2009-11-10T00:14:17.186845Z +23742 +FabianLange + + + + + + + + + + + + + + + + + + + + + +302 + +result-harness.txt +file + + + + +2012-05-10T18:40:50.869551Z +4df95a76758a77047fa5a893dc7fbfe6 +2010-05-19T14:03:27.794802Z +29531 +fabien + + + + + + + + + + + + + + + + + + + + + +524 + diff --git a/lib/vendor/symfony/test/other/fixtures/test/functional/.svn/text-base/result-harness.txt.svn-base b/lib/vendor/symfony/test/other/fixtures/test/functional/.svn/text-base/result-harness.txt.svn-base new file mode 100644 index 0000000..53f7131 --- /dev/null +++ b/lib/vendor/symfony/test/other/fixtures/test/functional/.svn/text-base/result-harness.txt.svn-base @@ -0,0 +1,8 @@ +articleInitAdminActionsTest..........................................ok +articleInitCrudActionsTest...........................................ok +fooActionsTest.......................................................not ok + Failed tests: 4 +Failed Test Stat Total Fail Errors List of Failed +-------------------------------------------------------------------------- +fooActionsTest 0 4 1 0 4 +Failed 1/3 test scripts, 66.67% okay. 1/12 subtests failed, 91.67% okay. diff --git a/lib/vendor/symfony/test/other/fixtures/test/functional/.svn/text-base/result.txt.svn-base b/lib/vendor/symfony/test/other/fixtures/test/functional/.svn/text-base/result.txt.svn-base new file mode 100644 index 0000000..fb31056 --- /dev/null +++ b/lib/vendor/symfony/test/other/fixtures/test/functional/.svn/text-base/result.txt.svn-base @@ -0,0 +1,7 @@ +# get /articleInitCrud/index +ok 1 - request parameter module is articleInitCrud +ok 2 - request parameter action is index +ok 3 - status code is 200 +ok 4 - response selector body does not match regex /This is a temporary page/ +1..4 +# Looks like everything went fine. diff --git a/lib/vendor/symfony/test/other/fixtures/test/functional/result-harness.txt b/lib/vendor/symfony/test/other/fixtures/test/functional/result-harness.txt new file mode 100644 index 0000000..53f7131 --- /dev/null +++ b/lib/vendor/symfony/test/other/fixtures/test/functional/result-harness.txt @@ -0,0 +1,8 @@ +articleInitAdminActionsTest..........................................ok +articleInitCrudActionsTest...........................................ok +fooActionsTest.......................................................not ok + Failed tests: 4 +Failed Test Stat Total Fail Errors List of Failed +-------------------------------------------------------------------------- +fooActionsTest 0 4 1 0 4 +Failed 1/3 test scripts, 66.67% okay. 1/12 subtests failed, 91.67% okay. diff --git a/lib/vendor/symfony/test/other/fixtures/test/functional/result.txt b/lib/vendor/symfony/test/other/fixtures/test/functional/result.txt new file mode 100644 index 0000000..fb31056 --- /dev/null +++ b/lib/vendor/symfony/test/other/fixtures/test/functional/result.txt @@ -0,0 +1,7 @@ +# get /articleInitCrud/index +ok 1 - request parameter module is articleInitCrud +ok 2 - request parameter action is index +ok 3 - status code is 200 +ok 4 - response selector body does not match regex /This is a temporary page/ +1..4 +# Looks like everything went fine. diff --git a/lib/vendor/symfony/test/other/fixtures/test/result-harness.txt b/lib/vendor/symfony/test/other/fixtures/test/result-harness.txt new file mode 100644 index 0000000..89d0a00 --- /dev/null +++ b/lib/vendor/symfony/test/other/fixtures/test/result-harness.txt @@ -0,0 +1,9 @@ +functional/frontend/articleInitAdminActionsTest......................ok +functional/frontend/articleInitCrudActionsTest.......................ok +functional/frontend/fooActionsTest...................................not ok + Failed tests: 4 +unit/testTest........................................................ok +Failed Test Stat Total Fail Errors List of Failed +-------------------------------------------------------------------------- +tional/frontend/fooActionsTest 0 4 1 0 4 +Failed 1/4 test scripts, 75.00% okay. 1/13 subtests failed, 92.31% okay. diff --git a/lib/vendor/symfony/test/other/fixtures/test/unit/.svn/all-wcprops b/lib/vendor/symfony/test/other/fixtures/test/unit/.svn/all-wcprops new file mode 100644 index 0000000..8243923 --- /dev/null +++ b/lib/vendor/symfony/test/other/fixtures/test/unit/.svn/all-wcprops @@ -0,0 +1,23 @@ +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/23881/branches/1.4/test/other/fixtures/test/unit +END +testTest.php +K 25 +svn:wc:ra_dav:version-url +V 71 +/!svn/ver/23881/branches/1.4/test/other/fixtures/test/unit/testTest.php +END +result.txt +K 25 +svn:wc:ra_dav:version-url +V 69 +/!svn/ver/23881/branches/1.4/test/other/fixtures/test/unit/result.txt +END +result-harness.txt +K 25 +svn:wc:ra_dav:version-url +V 77 +/!svn/ver/23881/branches/1.4/test/other/fixtures/test/unit/result-harness.txt +END diff --git a/lib/vendor/symfony/test/other/fixtures/test/unit/.svn/entries b/lib/vendor/symfony/test/other/fixtures/test/unit/.svn/entries new file mode 100644 index 0000000..57877d4 --- /dev/null +++ b/lib/vendor/symfony/test/other/fixtures/test/unit/.svn/entries @@ -0,0 +1,130 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/other/fixtures/test/unit +http://svn.symfony-project.com + + + +2009-11-10T00:14:17.186845Z +23742 +FabianLange + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +testTest.php +file + + + + +2012-05-10T18:40:50.645587Z +d052d7b996b0a4469bf85340fce6fc5a +2009-06-25T06:35:13.766150Z +19531 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +109 + +result.txt +file + + + + +2012-05-10T18:40:50.645587Z +1be4cb229129329e7d60513a305a4db0 +2009-11-10T00:14:17.186845Z +23742 +FabianLange + + + + + + + + + + + + + + + + + + + + + +95 + +result-harness.txt +file + + + + +2012-05-10T18:40:50.645587Z +027d70466f9bb189128bb42dd1ba3983 +2007-06-18T20:44:11.729990Z +4253 +fabien + + + + + + + + + + + + + + + + + + + + + +216 + diff --git a/lib/vendor/symfony/test/other/fixtures/test/unit/.svn/prop-base/testTest.php.svn-base b/lib/vendor/symfony/test/other/fixtures/test/unit/.svn/prop-base/testTest.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/other/fixtures/test/unit/.svn/prop-base/testTest.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/other/fixtures/test/unit/.svn/text-base/result-harness.txt.svn-base b/lib/vendor/symfony/test/other/fixtures/test/unit/.svn/text-base/result-harness.txt.svn-base new file mode 100644 index 0000000..91550ca --- /dev/null +++ b/lib/vendor/symfony/test/other/fixtures/test/unit/.svn/text-base/result-harness.txt.svn-base @@ -0,0 +1,3 @@ +testTest.............................................................ok + All tests successful. + Files=1, Tests=1 diff --git a/lib/vendor/symfony/test/other/fixtures/test/unit/.svn/text-base/result.txt.svn-base b/lib/vendor/symfony/test/other/fixtures/test/unit/.svn/text-base/result.txt.svn-base new file mode 100644 index 0000000..ce0b9cc --- /dev/null +++ b/lib/vendor/symfony/test/other/fixtures/test/unit/.svn/text-base/result.txt.svn-base @@ -0,0 +1,3 @@ +1..1 +ok 1 - this is ok +# Looks like everything went fine. diff --git a/lib/vendor/symfony/test/other/fixtures/test/unit/.svn/text-base/testTest.php.svn-base b/lib/vendor/symfony/test/other/fixtures/test/unit/.svn/text-base/testTest.php.svn-base new file mode 100644 index 0000000..e93bae0 --- /dev/null +++ b/lib/vendor/symfony/test/other/fixtures/test/unit/.svn/text-base/testTest.php.svn-base @@ -0,0 +1,7 @@ +pass('this is ok'); diff --git a/lib/vendor/symfony/test/other/fixtures/test/unit/result-harness.txt b/lib/vendor/symfony/test/other/fixtures/test/unit/result-harness.txt new file mode 100644 index 0000000..91550ca --- /dev/null +++ b/lib/vendor/symfony/test/other/fixtures/test/unit/result-harness.txt @@ -0,0 +1,3 @@ +testTest.............................................................ok + All tests successful. + Files=1, Tests=1 diff --git a/lib/vendor/symfony/test/other/fixtures/test/unit/result.txt b/lib/vendor/symfony/test/other/fixtures/test/unit/result.txt new file mode 100644 index 0000000..ce0b9cc --- /dev/null +++ b/lib/vendor/symfony/test/other/fixtures/test/unit/result.txt @@ -0,0 +1,3 @@ +1..1 +ok 1 - this is ok +# Looks like everything went fine. diff --git a/lib/vendor/symfony/test/other/fixtures/test/unit/testTest.php b/lib/vendor/symfony/test/other/fixtures/test/unit/testTest.php new file mode 100644 index 0000000..e93bae0 --- /dev/null +++ b/lib/vendor/symfony/test/other/fixtures/test/unit/testTest.php @@ -0,0 +1,7 @@ +pass('this is ok'); diff --git a/lib/vendor/symfony/test/other/tasksTest.php b/lib/vendor/symfony/test/other/tasksTest.php new file mode 100644 index 0000000..2209bd7 --- /dev/null +++ b/lib/vendor/symfony/test/other/tasksTest.php @@ -0,0 +1,170 @@ +t = $t; + + $this->tmp_dir = sys_get_temp_dir().DS.'sf_test_project'; + + if (is_dir($this->tmp_dir)) + { + $this->clearTmpDir(); + rmdir($this->tmp_dir); + } + + mkdir($this->tmp_dir, 0777); + + $this->current_dir = getcwd(); + chdir($this->tmp_dir); + + $this->php_cli = sfToolkit::getPhpCli(); + } + + public function shutdown() + { + $this->clearTmpDir(); + rmdir($this->tmp_dir); + chdir($this->current_dir); + } + + protected function clearTmpDir() + { + require_once(dirname(__FILE__).'/../../lib/util/sfToolkit.class.php'); + sfToolkit::clearDirectory($this->tmp_dir); + } + + public function execute_command($cmd, $awaited_return=0) + { + chdir($this->tmp_dir); + $symfony = file_exists('symfony') ? 'symfony' : dirname(__FILE__).'/../../data/bin/symfony'; + + ob_start(); + passthru(sprintf('%s "%s" %s 2>&1', $this->php_cli, $symfony, $cmd), $return); + $content = ob_get_clean(); + $this->t->cmp_ok($return, '==', $awaited_return, sprintf('"symfony %s" returns awaited value (%d)', $cmd, $awaited_return)); + + return $content; + } + + public function get_fixture_content($file) + { + return str_replace("\r\n", "\n", file_get_contents(dirname(__FILE__).'/fixtures/'.$file)); + } +} + +$plan = 39; +$t = new lime_test($plan); + +if (!extension_loaded('SQLite') && !extension_loaded('pdo_SQLite')) +{ + $t->skip('You need SQLite to run these tests', $plan); + + return; +} + +$c = new sf_test_project(); +$c->initialize($t); + +// generate:* +$content = $c->execute_command('generate:project myproject --orm=Propel'); +$t->ok(file_exists($c->tmp_dir.DS.'symfony'), '"generate:project" installs the symfony CLI in root project directory'); + +$content = $c->execute_command('generate:app frontend'); +$t->ok(is_dir($c->tmp_dir.DS.'apps'.DS.'frontend'), '"generate:app" creates a "frontend" directory under "apps" directory'); +$t->like(file_get_contents($c->tmp_dir.'/apps/frontend/config/settings.yml'), '/escaping_strategy: +true/', '"generate:app" switches escaping_strategy "on" by default'); +$t->like(file_get_contents($c->tmp_dir.'/apps/frontend/config/settings.yml'), '/csrf_secret: +\w+/', '"generate:app" generates a csrf_token by default'); + +$content = $c->execute_command('generate:app backend --escaping-strategy=false --csrf-secret=false'); +$t->like(file_get_contents($c->tmp_dir.'/apps/backend/config/settings.yml'), '/escaping_strategy: +false/', '"generate:app" switches escaping_strategy "false"'); +$t->like(file_get_contents($c->tmp_dir.'/apps/backend/config/settings.yml'), '/csrf_secret: +false/', '"generate:app" switches csrf_token to "false"'); + +// failing +$content = $c->execute_command('generate:module wrongapp foo', 1); + +$content = $c->execute_command('generate:module frontend foo'); +$t->ok(is_dir($c->tmp_dir.DS.'apps'.DS.'frontend'.DS.'modules'.DS.'foo'), '"generate:module" creates a "foo" directory under "modules" directory'); + +copy(dirname(__FILE__).'/fixtures/propel/schema.yml', $c->tmp_dir.DS.'config'.DS.'schema.yml'); +copy(dirname(__FILE__).'/fixtures/propel/databases.yml', $c->tmp_dir.DS.'config'.DS.'databases.yml'); +copy(dirname(__FILE__).'/fixtures/propel/propel.ini', $c->tmp_dir.DS.'config'.DS.'propel.ini'); +copy(dirname(__FILE__).'/fixtures/factories.yml', $c->tmp_dir.DS.'apps'.DS.'frontend'.DS.'config'.DS.'factories.yml'); + +// update propel configuration paths +file_put_contents($c->tmp_dir.DS.'config'.DS.'propel.ini', str_replace('%SF_ROOT_DIR%', $c->tmp_dir, str_replace('%SF_DATA_DIR%', $c->tmp_dir.'/data', file_get_contents($c->tmp_dir.DS.'config'.DS.'propel.ini')))); + +// propel:* +$content = $c->execute_command('propel:build-sql'); +$t->ok(file_exists($c->tmp_dir.DS.'data'.DS.'sql'.DS.'lib.model.schema.sql'), '"propel:build-sql" creates a "schema.sql" file under "data/sql" directory'); + +$content = $c->execute_command('propel:build-model'); +$t->ok(file_exists($c->tmp_dir.DS.'lib'.DS.'model'.DS.'Article.php'), '"propel:build-model" creates model classes under "lib/model" directory'); + +copy(dirname(__FILE__).'/fixtures/propel/Category.php', $c->tmp_dir.DS.'lib'.DS.'model'.DS.'Category.php'); + +$content = $c->execute_command('propel:build-form'); +$t->ok(file_exists($c->tmp_dir.DS.'lib'.DS.'form'.DS.DS.'BaseFormPropel.class.php'), '"propel:build-form" creates form classes under "lib/form" directory'); + +$c->execute_command('propel:insert-sql --no-confirmation'); +$t->ok(file_exists($c->tmp_dir.DS.'data'.DS.'database.sqlite'), '"propel:insert-sql" creates tables in the database'); + +$c->execute_command('propel:build-all --no-confirmation'); + +$content = $c->execute_command('propel:generate-module --generate-in-cache frontend articleInitCrud Article'); +$t->ok(file_exists($c->tmp_dir.DS.'apps'.DS.'frontend'.DS.'modules'.DS.'articleInitCrud'.DS.'config'.DS.'generator.yml'), '"propel:generate-module" initializes a CRUD module'); + +$content = $c->execute_command('propel:generate-admin frontend Article --module=articleInitAdmin'); +$t->ok(file_exists($c->tmp_dir.DS.'apps'.DS.'frontend'.DS.'modules'.DS.'articleInitAdmin'.DS.'config'.DS.'generator.yml'), '"propel:generate-admin" initializes an admin generator module'); + +// test:* +$content = $c->execute_command('test:functional frontend articleInitCrudActions'); +$t->is($content, $c->get_fixture_content('test/functional/result.txt'), '"test:functional" can launch a particular functional test'); + +$content = $c->execute_command('test:functional frontend', 1); +$t->is($content, $c->get_fixture_content('test/functional/result-harness.txt'), '"test:functional" can launch all functional tests'); + +copy(dirname(__FILE__).'/fixtures/test/unit/testTest.php', $c->tmp_dir.DS.'test'.DS.'unit'.DS.'testTest.php'); + +$content = $c->execute_command('test:unit test'); +$t->is($content, $c->get_fixture_content('/test/unit/result.txt'), '"test:unit" can launch a particular unit test'); + +$content = $c->execute_command('test:unit'); +$t->is($content, $c->get_fixture_content('test/unit/result-harness.txt'), '"test:unit" can launch all unit tests'); + +$content = $c->execute_command('test:all', 1); +$t->is($content, $c->get_fixture_content('test/result-harness.txt'), '"test:all" launches all unit and functional tests'); + +$content = $c->execute_command('cache:clear'); + +// Test task autoloading +mkdir($c->tmp_dir.DS.'lib'.DS.'task'); +copy(dirname(__FILE__).'/fixtures/task/aTask.class.php', $c->tmp_dir.DS.'lib'.DS.'task'.DS.'aTask.class.php'); +copy(dirname(__FILE__).'/fixtures/task/zTask.class.php', $c->tmp_dir.DS.'lib'.DS.'task'.DS.'zTask.class.php'); +mkdir($pluginDir = $c->tmp_dir.DS.'plugins'.DS.'myFooPlugin'.DS.'lib'.DS.'task', 0777, true); +copy(dirname(__FILE__).'/fixtures/task/myPluginTask.class.php', $pluginDir.DS.'myPluginTask.class.php'); +file_put_contents( + $projectConfigurationFile = $c->tmp_dir.DS.'config'.DS.'ProjectConfiguration.class.php', + str_replace( + '$this->enablePlugins(\'sfPropelPlugin\')', + '$this->enablePlugins(array(\'myFooPlugin\', \'sfPropelPlugin\'))', + file_get_contents($projectConfigurationFile) + ) +); + +$c->execute_command('a:run'); +$c->execute_command('z:run'); +$c->execute_command('p:run'); + +$c->shutdown(); diff --git a/lib/vendor/symfony/test/unit/.svn/all-wcprops b/lib/vendor/symfony/test/unit/.svn/all-wcprops new file mode 100644 index 0000000..f4e452d --- /dev/null +++ b/lib/vendor/symfony/test/unit/.svn/all-wcprops @@ -0,0 +1,29 @@ +K 25 +svn:wc:ra_dav:version-url +V 38 +/!svn/ver/33373/branches/1.4/test/unit +END +sfContextMock.class.php +K 25 +svn:wc:ra_dav:version-url +V 62 +/!svn/ver/23881/branches/1.4/test/unit/sfContextMock.class.php +END +sfParameterHolderTest.class.php +K 25 +svn:wc:ra_dav:version-url +V 70 +/!svn/ver/23881/branches/1.4/test/unit/sfParameterHolderTest.class.php +END +sfNoRouting.class.php +K 25 +svn:wc:ra_dav:version-url +V 60 +/!svn/ver/23928/branches/1.4/test/unit/sfNoRouting.class.php +END +sfEventDispatcherTest.class.php +K 25 +svn:wc:ra_dav:version-url +V 70 +/!svn/ver/23881/branches/1.4/test/unit/sfEventDispatcherTest.class.php +END diff --git a/lib/vendor/symfony/test/unit/.svn/entries b/lib/vendor/symfony/test/unit/.svn/entries new file mode 100644 index 0000000..8c95c0b --- /dev/null +++ b/lib/vendor/symfony/test/unit/.svn/entries @@ -0,0 +1,254 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/unit +http://svn.symfony-project.com + + + +2012-03-08T15:45:46.554010Z +33373 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +sfContextMock.class.php +file + + + + +2012-05-10T18:40:50.461550Z +17a0ddbe97fbf41ddd8e30dacda197df +2009-03-11T15:28:30.583439Z +16187 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +2518 + +escaper +dir + +controller +dir + +widget +dir + +validator +dir + +debug +dir + +generator +dir + +response +dir + +plugin +dir + +exception +dir + +sfParameterHolderTest.class.php +file + + + + +2012-05-10T18:40:50.461550Z +db7c23fd543826a2a730c792dce2e2ef +2007-09-09T15:11:05.414704Z +5016 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +2703 + +task +dir + +cache +dir + +storage +dir + +database +dir + +sfNoRouting.class.php +file + + + + +2012-05-10T18:40:50.461550Z +534a2b7418fa74989d5b371445c1b0b6 +2009-11-14T16:15:42.623206Z +23928 +fabien + + + + + + + + + + + + + + + + + + + + + +2257 + +autoload +dir + +mailer +dir + +view +dir + +command +dir + +test +dir + +helper +dir + +i18n +dir + +log +dir + +addon +dir + +filter +dir + +routing +dir + +request +dir + +form +dir + +config +dir + +sfEventDispatcherTest.class.php +file + + + + +2012-05-10T18:40:50.465570Z +9018ca552cb0d726007a4ea0a64325ad +2007-12-13T21:44:39.427641Z +6490 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +1353 + +action +dir + +util +dir + +user +dir + diff --git a/lib/vendor/symfony/test/unit/.svn/prop-base/sfContextMock.class.php.svn-base b/lib/vendor/symfony/test/unit/.svn/prop-base/sfContextMock.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/unit/.svn/prop-base/sfContextMock.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/unit/.svn/prop-base/sfEventDispatcherTest.class.php.svn-base b/lib/vendor/symfony/test/unit/.svn/prop-base/sfEventDispatcherTest.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/unit/.svn/prop-base/sfEventDispatcherTest.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/unit/.svn/prop-base/sfParameterHolderTest.class.php.svn-base b/lib/vendor/symfony/test/unit/.svn/prop-base/sfParameterHolderTest.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/unit/.svn/prop-base/sfParameterHolderTest.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/unit/.svn/text-base/sfContextMock.class.php.svn-base b/lib/vendor/symfony/test/unit/.svn/text-base/sfContextMock.class.php.svn-base new file mode 100644 index 0000000..453567b --- /dev/null +++ b/lib/vendor/symfony/test/unit/.svn/text-base/sfContextMock.class.php.svn-base @@ -0,0 +1,127 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +class sfContext +{ + protected static + $instance = null; + + public + $configuration = null, + $request = null, + $response = null, + $controller = null, + $routing = null, + $user = null, + $storage = null; + + protected + $sessionPath = ''; + + static public function getInstance($factories = array(), $force = false) + { + if (!isset(self::$instance) || $force) + { + self::$instance = new sfContext(); + + self::$instance->sessionPath = sys_get_temp_dir().'/sessions_'.rand(11111, 99999); + self::$instance->storage = new sfSessionTestStorage(array('session_path' => self::$instance->sessionPath)); + + self::$instance->dispatcher = new sfEventDispatcher(); + + foreach ($factories as $type => $class) + { + self::$instance->inject($type, $class); + } + } + + return self::$instance; + } + + public function __destruct() + { + sfToolkit::clearDirectory($this->sessionPath); + } + + static public function hasInstance() + { + return true; + } + + public function getEventDispatcher() + { + return self::$instance->dispatcher; + } + + public function getModuleName() + { + return 'module'; + } + + public function getActionName() + { + return 'action'; + } + + public function getConfiguration() + { + return $this->configuration; + } + + public function getRequest() + { + return $this->request; + } + + public function getResponse() + { + return $this->response; + } + + public function getRouting() + { + return $this->routing; + } + + public function getStorage() + { + return $this->storage; + } + + public function getUser() + { + return $this->user; + } + + public function getController() + { + return $this->controller; + } + + public function inject($type, $class, $parameters = array()) + { + switch ($type) + { + case 'routing': + $object = new $class($this->dispatcher, null, $parameters); + break; + case 'response': + $object = new $class($this->dispatcher, $parameters); + break; + case 'request': + $object = new $class($this->dispatcher, $this->routing, $parameters); + break; + default: + $object = new $class($this, $parameters); + } + + $this->$type = $object; + } +} diff --git a/lib/vendor/symfony/test/unit/.svn/text-base/sfEventDispatcherTest.class.php.svn-base b/lib/vendor/symfony/test/unit/.svn/text-base/sfEventDispatcherTest.class.php.svn-base new file mode 100644 index 0000000..bc08f4b --- /dev/null +++ b/lib/vendor/symfony/test/unit/.svn/text-base/sfEventDispatcherTest.class.php.svn-base @@ -0,0 +1,51 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +// helper class to test the event dispatcher +class sfEventDispatcherTest +{ + protected $t = null; + + public function __construct($testObject) + { + $this->t = $testObject; + } + + public function launchTests($dispatcher, $object, $class) + { + $this->t->diag('New methods via sfEventDispatcher'); + $dispatcher->connect($class.'.method_not_found', array('myEventDispatcherTest', 'newMethod')); + $this->t->is($object->newMethod('ok'), 'ok', '__call() accepts new methods via sfEventDispatcher'); + + try + { + $object->nonexistantmethodname(); + $this->t->fail('__call() throws an exception if the method does not exist as a sfEventDispatcher listener'); + } + catch (sfException $e) + { + $this->t->pass('__call() throws an exception if the method does not exist as a sfEventDispatcher listener'); + } + } +} + +class myEventDispatcherTest +{ + static public function newMethod(sfEvent $event) + { + if ($event['method'] == 'newMethod') + { + $arguments = $event['arguments']; + $event->setReturnValue($arguments[0]); + + return true; + } + } +} diff --git a/lib/vendor/symfony/test/unit/.svn/text-base/sfNoRouting.class.php.svn-base b/lib/vendor/symfony/test/unit/.svn/text-base/sfNoRouting.class.php.svn-base new file mode 100644 index 0000000..625adb5 --- /dev/null +++ b/lib/vendor/symfony/test/unit/.svn/text-base/sfNoRouting.class.php.svn-base @@ -0,0 +1,105 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * sfNoRouting class is a very simple routing class that uses GET parameters. + * + * @package symfony + * @subpackage routing + * @author Fabien Potencier + * @version SVN: $Id: sfNoRouting.class.php 20566 2009-07-29 07:04:01Z fabien $ + */ +class sfNoRouting extends sfRouting +{ + /** + * @see sfRouting + */ + public function getCurrentInternalUri($with_route_name = false) + { + $parameters = $this->mergeArrays($this->defaultParameters, $_GET); + $action = sprintf('%s/%s', $parameters['module'], $parameters['action']); + + // other parameters + unset($parameters['module'], $parameters['action']); + ksort($parameters); + $parameters = count($parameters) ? '?'.http_build_query($parameters, null, '&') : ''; + + return sprintf('%s%s', $action, $parameters); + } + + /** + * @see sfRouting + */ + public function generate($name, $params = array(), $absolute = false) + { + $parameters = $this->mergeArrays($this->defaultParameters, $params); + if ($this->getDefaultParameter('module') == $parameters['module']) + { + unset($parameters['module']); + } + if ($this->getDefaultParameter('action') == $parameters['action']) + { + unset($parameters['action']); + } + + $parameters = http_build_query($parameters, null, '&'); + + return $this->fixGeneratedUrl('/'.($parameters ? '?'.$parameters : ''), $absolute); + } + + /** + * @see sfRouting + */ + public function parse($url) + { + return array(); + } + + /** + * @see sfRouting + */ + public function getRoutes() + { + return array(); + } + + /** + * @see sfRouting + */ + public function setRoutes($routes) + { + return array(); + } + + /** + * @see sfRouting + */ + public function hasRoutes() + { + return false; + } + + /** + * @see sfRouting + */ + public function clearRoutes() + { + } + + protected function mergeArrays($arr1, $arr2) + { + foreach ($arr2 as $key => $value) + { + $arr1[$key] = $value; + } + + return $arr1; + } +} diff --git a/lib/vendor/symfony/test/unit/.svn/text-base/sfParameterHolderTest.class.php.svn-base b/lib/vendor/symfony/test/unit/.svn/text-base/sfParameterHolderTest.class.php.svn-base new file mode 100644 index 0000000..c9c122d --- /dev/null +++ b/lib/vendor/symfony/test/unit/.svn/text-base/sfParameterHolderTest.class.php.svn-base @@ -0,0 +1,57 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +// helper class to test parameter holder proxies +class sfParameterHolderProxyTest +{ + protected $t = null; + + public function __construct($testObject) + { + $this->t = $testObject; + } + + public function launchTests($object, $methodName = 'parameter') + { + $t = $this->t; + + $hasMethod = 'has'.ucfirst($methodName); + $getMethod = 'get'.ucfirst($methodName); + $setMethod = 'set'.ucfirst($methodName); + $holderMethod = 'get'.ucfirst($methodName).'Holder'; + + $t->diag(ucfirst($methodName).' holder proxy'); + + $namespaced = $object->$holderMethod() instanceof sfNamespacedParameterHolder ? true : false; + + $t->isa_ok($object->$holderMethod(), $namespaced ? 'sfNamespacedParameterHolder' : 'sfParameterHolder', "->$holderMethod() returns a parameter holder instance"); + $t->is($object->$hasMethod('foo'), false, "->$hasMethod() returns false if the $methodName does not exist"); + $t->is($object->$getMethod('foo', 'default'), 'default', "->$getMethod() returns the default value if $methodName does not exist"); + $object->$setMethod('foo', 'bar'); + $t->is($object->$hasMethod('foo'), true, "->$hasMethod() returns true if the $methodName exists"); + $t->is($object->$hasMethod('foo'), $object->$holderMethod()->has('foo'), "->$hasMethod() is a proxy method"); + $t->is($object->$getMethod('foo'), 'bar', "->$getMethod() returns the value of the $methodName"); + $t->is($object->$getMethod('foo'), $object->$holderMethod()->get('foo'), "->$getMethod() is a proxy method"); + $t->is($object->$getMethod('foo', 'default'), 'bar', "->$getMethod() does not return the default value if the $methodName exists"); + + if ($namespaced) + { + $object->$setMethod('foo1', 'bar1', 'mynamespace'); + $t->is($object->$hasMethod('foo1'), false, "->$hasMethod() takes a namespace as its second parameter"); + $t->is($object->$hasMethod('foo1', 'mynamespace'), true, "->$hasMethod() takes a namespace as its second parameter"); + $t->is($object->$getMethod('foo1', 'default', 'mynamespace'), 'bar1', "->$getMethod() takes a namespace as its third parameter"); + } + + $object->$setMethod('foo2', 'bar2'); + $object->$holderMethod()->set('foo3', 'bar3'); + $t->is($object->$getMethod('foo2'), $object->$holderMethod()->get('foo2'), "->$setMethod() is a proxy method"); + $t->is($object->$getMethod('foo3'), $object->$holderMethod()->get('foo3'), "->$setMethod() is a proxy method"); + } +} diff --git a/lib/vendor/symfony/test/unit/action/.svn/all-wcprops b/lib/vendor/symfony/test/unit/action/.svn/all-wcprops new file mode 100644 index 0000000..a6516cb --- /dev/null +++ b/lib/vendor/symfony/test/unit/action/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 45 +/!svn/ver/23922/branches/1.4/test/unit/action +END +sfComponentTest.php +K 25 +svn:wc:ra_dav:version-url +V 65 +/!svn/ver/23922/branches/1.4/test/unit/action/sfComponentTest.php +END diff --git a/lib/vendor/symfony/test/unit/action/.svn/entries b/lib/vendor/symfony/test/unit/action/.svn/entries new file mode 100644 index 0000000..bdfda02 --- /dev/null +++ b/lib/vendor/symfony/test/unit/action/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/unit/action +http://svn.symfony-project.com + + + +2009-11-14T14:58:38.254908Z +23922 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +sfComponentTest.php +file + + + + +2012-05-10T18:40:50.429551Z +92abe503c7e53124740c58ed4f67b752 +2009-11-14T14:58:38.254908Z +23922 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +2043 + diff --git a/lib/vendor/symfony/test/unit/action/.svn/prop-base/sfComponentTest.php.svn-base b/lib/vendor/symfony/test/unit/action/.svn/prop-base/sfComponentTest.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/unit/action/.svn/prop-base/sfComponentTest.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/unit/action/.svn/text-base/sfComponentTest.php.svn-base b/lib/vendor/symfony/test/unit/action/.svn/text-base/sfComponentTest.php.svn-base new file mode 100644 index 0000000..96340d8 --- /dev/null +++ b/lib/vendor/symfony/test/unit/action/.svn/text-base/sfComponentTest.php.svn-base @@ -0,0 +1,58 @@ + + * + * For the full copyright and license information, please component the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); +require_once($_test_dir.'/unit/sfContextMock.class.php'); +require_once($_test_dir.'/unit/sfNoRouting.class.php'); + +$t = new lime_test(8); + +class myComponent extends sfComponent +{ + function execute($request) {} +} + +$context = sfContext::getInstance(array( + 'routing' => 'sfNoRouting', + 'request' => 'sfWebRequest', +)); + +// ->initialize() +$t->diag('->initialize()'); +$component = new myComponent($context, 'module', 'action'); +$t->is($component->getContext(), $context, '->initialize() takes a sfContext object as its first argument'); +$component->initialize($context, 'module', 'action'); +$t->is($component->getContext(), $context, '->initialize() takes a sfContext object as its first argument'); + +// ->getContext() +$t->diag('->getContext()'); +$component->initialize($context, 'module', 'action'); +$t->is($component->getContext(), $context, '->getContext() returns the current context'); + +// ->getRequest() +$t->diag('->getRequest()'); +$component->initialize($context, 'module', 'action'); +$t->is($component->getRequest(), $context->getRequest(), '->getRequest() returns the current request'); + +// ->getResponse() +$t->diag('->getResponse()'); +$component->initialize($context, 'module', 'action'); +$t->is($component->getResponse(), $context->getResponse(), '->getResponse() returns the current response'); + +// __set() +$t->diag('__set()'); +$component->foo = array(); +$component->foo[] = 'bar'; +$t->is($component->foo, array('bar'), '__set() populates component variables'); + +// new methods via sfEventDispatcher +require_once($_test_dir.'/unit/sfEventDispatcherTest.class.php'); +$dispatcherTest = new sfEventDispatcherTest($t); +$dispatcherTest->launchTests($context->getEventDispatcher(), $component, 'component'); diff --git a/lib/vendor/symfony/test/unit/action/sfComponentTest.php b/lib/vendor/symfony/test/unit/action/sfComponentTest.php new file mode 100644 index 0000000..96340d8 --- /dev/null +++ b/lib/vendor/symfony/test/unit/action/sfComponentTest.php @@ -0,0 +1,58 @@ + + * + * For the full copyright and license information, please component the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); +require_once($_test_dir.'/unit/sfContextMock.class.php'); +require_once($_test_dir.'/unit/sfNoRouting.class.php'); + +$t = new lime_test(8); + +class myComponent extends sfComponent +{ + function execute($request) {} +} + +$context = sfContext::getInstance(array( + 'routing' => 'sfNoRouting', + 'request' => 'sfWebRequest', +)); + +// ->initialize() +$t->diag('->initialize()'); +$component = new myComponent($context, 'module', 'action'); +$t->is($component->getContext(), $context, '->initialize() takes a sfContext object as its first argument'); +$component->initialize($context, 'module', 'action'); +$t->is($component->getContext(), $context, '->initialize() takes a sfContext object as its first argument'); + +// ->getContext() +$t->diag('->getContext()'); +$component->initialize($context, 'module', 'action'); +$t->is($component->getContext(), $context, '->getContext() returns the current context'); + +// ->getRequest() +$t->diag('->getRequest()'); +$component->initialize($context, 'module', 'action'); +$t->is($component->getRequest(), $context->getRequest(), '->getRequest() returns the current request'); + +// ->getResponse() +$t->diag('->getResponse()'); +$component->initialize($context, 'module', 'action'); +$t->is($component->getResponse(), $context->getResponse(), '->getResponse() returns the current response'); + +// __set() +$t->diag('__set()'); +$component->foo = array(); +$component->foo[] = 'bar'; +$t->is($component->foo, array('bar'), '__set() populates component variables'); + +// new methods via sfEventDispatcher +require_once($_test_dir.'/unit/sfEventDispatcherTest.class.php'); +$dispatcherTest = new sfEventDispatcherTest($t); +$dispatcherTest->launchTests($context->getEventDispatcher(), $component, 'component'); diff --git a/lib/vendor/symfony/test/unit/addon/.svn/all-wcprops b/lib/vendor/symfony/test/unit/addon/.svn/all-wcprops new file mode 100644 index 0000000..aff7854 --- /dev/null +++ b/lib/vendor/symfony/test/unit/addon/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 44 +/!svn/ver/27613/branches/1.4/test/unit/addon +END +sfPagerTest.php +K 25 +svn:wc:ra_dav:version-url +V 60 +/!svn/ver/27613/branches/1.4/test/unit/addon/sfPagerTest.php +END diff --git a/lib/vendor/symfony/test/unit/addon/.svn/entries b/lib/vendor/symfony/test/unit/addon/.svn/entries new file mode 100644 index 0000000..47d7cc6 --- /dev/null +++ b/lib/vendor/symfony/test/unit/addon/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/unit/addon +http://svn.symfony-project.com + + + +2010-02-05T23:43:21.300247Z +27613 +FabianLange + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +sfPagerTest.php +file + + + + +2012-05-10T18:40:48.881548Z +27e6cc55ac4c41bde9d39e6b2edef32a +2010-02-05T23:43:21.300247Z +27613 +FabianLange + + + + + + + + + + + + + + + + + + + + + +960 + diff --git a/lib/vendor/symfony/test/unit/addon/.svn/text-base/sfPagerTest.php.svn-base b/lib/vendor/symfony/test/unit/addon/.svn/text-base/sfPagerTest.php.svn-base new file mode 100644 index 0000000..c1a8cfa --- /dev/null +++ b/lib/vendor/symfony/test/unit/addon/.svn/text-base/sfPagerTest.php.svn-base @@ -0,0 +1,43 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); + +$t = new lime_test(2); +class myPager extends sfPager +{ + function init() {} + function retrieveObject($offset) {} + function getResults() + { + $this->setNbResults(2); + return array("foo", "bar"); + } +} + +$pager = new myPager("fooClass"); + +// #8021 +// ->rewind() +$t->diag('->rewind()'); +$countRuns = 0; +foreach ($pager as $item) +{ + $countRuns++; +} +$t->is($countRuns, $pager->count(), 'iterating first time will invoke on all items'); + +$countRuns = 0; +$pager->rewind(); +foreach ($pager as $item) +{ + $countRuns++; +} +$t->is($countRuns, $pager->count(), '->rewind will allow reiterating'); \ No newline at end of file diff --git a/lib/vendor/symfony/test/unit/addon/sfPagerTest.php b/lib/vendor/symfony/test/unit/addon/sfPagerTest.php new file mode 100644 index 0000000..c1a8cfa --- /dev/null +++ b/lib/vendor/symfony/test/unit/addon/sfPagerTest.php @@ -0,0 +1,43 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); + +$t = new lime_test(2); +class myPager extends sfPager +{ + function init() {} + function retrieveObject($offset) {} + function getResults() + { + $this->setNbResults(2); + return array("foo", "bar"); + } +} + +$pager = new myPager("fooClass"); + +// #8021 +// ->rewind() +$t->diag('->rewind()'); +$countRuns = 0; +foreach ($pager as $item) +{ + $countRuns++; +} +$t->is($countRuns, $pager->count(), 'iterating first time will invoke on all items'); + +$countRuns = 0; +$pager->rewind(); +foreach ($pager as $item) +{ + $countRuns++; +} +$t->is($countRuns, $pager->count(), '->rewind will allow reiterating'); \ No newline at end of file diff --git a/lib/vendor/symfony/test/unit/autoload/.svn/all-wcprops b/lib/vendor/symfony/test/unit/autoload/.svn/all-wcprops new file mode 100644 index 0000000..ef3ab96 --- /dev/null +++ b/lib/vendor/symfony/test/unit/autoload/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 47 +/!svn/ver/23881/branches/1.4/test/unit/autoload +END +sfCoreAutoloadTest.php +K 25 +svn:wc:ra_dav:version-url +V 70 +/!svn/ver/23881/branches/1.4/test/unit/autoload/sfCoreAutoloadTest.php +END +sfSimpleAutoloadTest.php +K 25 +svn:wc:ra_dav:version-url +V 72 +/!svn/ver/23881/branches/1.4/test/unit/autoload/sfSimpleAutoloadTest.php +END diff --git a/lib/vendor/symfony/test/unit/autoload/.svn/entries b/lib/vendor/symfony/test/unit/autoload/.svn/entries new file mode 100644 index 0000000..ac4c983 --- /dev/null +++ b/lib/vendor/symfony/test/unit/autoload/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/unit/autoload +http://svn.symfony-project.com + + + +2009-06-25T06:35:13.766150Z +19531 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +sfCoreAutoloadTest.php +file + + + + +2012-05-10T18:40:47.525552Z +1d326534fe9474f1e5113369870360d2 +2009-06-25T06:35:13.766150Z +19531 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +526 + +sfSimpleAutoloadTest.php +file + + + + +2012-05-10T18:40:47.529550Z +eeabf422cf332ced486d4dd27b15c2a1 +2009-06-25T06:35:13.766150Z +19531 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +585 + diff --git a/lib/vendor/symfony/test/unit/autoload/.svn/prop-base/sfCoreAutoloadTest.php.svn-base b/lib/vendor/symfony/test/unit/autoload/.svn/prop-base/sfCoreAutoloadTest.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/test/unit/autoload/.svn/prop-base/sfCoreAutoloadTest.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/test/unit/autoload/.svn/prop-base/sfSimpleAutoloadTest.php.svn-base b/lib/vendor/symfony/test/unit/autoload/.svn/prop-base/sfSimpleAutoloadTest.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/test/unit/autoload/.svn/prop-base/sfSimpleAutoloadTest.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/test/unit/autoload/.svn/text-base/sfCoreAutoloadTest.php.svn-base b/lib/vendor/symfony/test/unit/autoload/.svn/text-base/sfCoreAutoloadTest.php.svn-base new file mode 100644 index 0000000..3bba796 --- /dev/null +++ b/lib/vendor/symfony/test/unit/autoload/.svn/text-base/sfCoreAutoloadTest.php.svn-base @@ -0,0 +1,16 @@ + + * + * For the full copyright and license information, please component the LICENSE + * file that was distributed with this source code. + */ + +require_once dirname(__FILE__).'/../../bootstrap/unit.php'; + +$t = new lime_test(1); + +$autoload = sfCoreAutoload::getInstance(); +$t->is($autoload->getClassPath('sfaction'), $autoload->getBaseDir().'/action/sfAction.class.php', '"sfCoreAutoload" is case-insensitive'); diff --git a/lib/vendor/symfony/test/unit/autoload/.svn/text-base/sfSimpleAutoloadTest.php.svn-base b/lib/vendor/symfony/test/unit/autoload/.svn/text-base/sfSimpleAutoloadTest.php.svn-base new file mode 100644 index 0000000..3560b29 --- /dev/null +++ b/lib/vendor/symfony/test/unit/autoload/.svn/text-base/sfSimpleAutoloadTest.php.svn-base @@ -0,0 +1,19 @@ + + * + * For the full copyright and license information, please component the LICENSE + * file that was distributed with this source code. + */ + +require_once dirname(__FILE__).'/../../bootstrap/unit.php'; + +$t = new lime_test(1); + +$autoload = sfSimpleAutoload::getInstance(); +$autoload->addFile(dirname(__FILE__).'/../sfEventDispatcherTest.class.php'); +$autoload->register(); + +$t->is(class_exists('myeventdispatchertest'), true, '"sfSimpleAutoload" is case insensitive'); diff --git a/lib/vendor/symfony/test/unit/autoload/sfCoreAutoloadTest.php b/lib/vendor/symfony/test/unit/autoload/sfCoreAutoloadTest.php new file mode 100644 index 0000000..3bba796 --- /dev/null +++ b/lib/vendor/symfony/test/unit/autoload/sfCoreAutoloadTest.php @@ -0,0 +1,16 @@ + + * + * For the full copyright and license information, please component the LICENSE + * file that was distributed with this source code. + */ + +require_once dirname(__FILE__).'/../../bootstrap/unit.php'; + +$t = new lime_test(1); + +$autoload = sfCoreAutoload::getInstance(); +$t->is($autoload->getClassPath('sfaction'), $autoload->getBaseDir().'/action/sfAction.class.php', '"sfCoreAutoload" is case-insensitive'); diff --git a/lib/vendor/symfony/test/unit/autoload/sfSimpleAutoloadTest.php b/lib/vendor/symfony/test/unit/autoload/sfSimpleAutoloadTest.php new file mode 100644 index 0000000..3560b29 --- /dev/null +++ b/lib/vendor/symfony/test/unit/autoload/sfSimpleAutoloadTest.php @@ -0,0 +1,19 @@ + + * + * For the full copyright and license information, please component the LICENSE + * file that was distributed with this source code. + */ + +require_once dirname(__FILE__).'/../../bootstrap/unit.php'; + +$t = new lime_test(1); + +$autoload = sfSimpleAutoload::getInstance(); +$autoload->addFile(dirname(__FILE__).'/../sfEventDispatcherTest.class.php'); +$autoload->register(); + +$t->is(class_exists('myeventdispatchertest'), true, '"sfSimpleAutoload" is case insensitive'); diff --git a/lib/vendor/symfony/test/unit/cache/.svn/all-wcprops b/lib/vendor/symfony/test/unit/cache/.svn/all-wcprops new file mode 100644 index 0000000..66be865 --- /dev/null +++ b/lib/vendor/symfony/test/unit/cache/.svn/all-wcprops @@ -0,0 +1,65 @@ +K 25 +svn:wc:ra_dav:version-url +V 44 +/!svn/ver/23925/branches/1.4/test/unit/cache +END +sfNoCacheTest.php +K 25 +svn:wc:ra_dav:version-url +V 62 +/!svn/ver/23881/branches/1.4/test/unit/cache/sfNoCacheTest.php +END +sfCacheTest.php +K 25 +svn:wc:ra_dav:version-url +V 60 +/!svn/ver/23881/branches/1.4/test/unit/cache/sfCacheTest.php +END +sfFileCacheTest.php +K 25 +svn:wc:ra_dav:version-url +V 64 +/!svn/ver/23881/branches/1.4/test/unit/cache/sfFileCacheTest.php +END +sfSQLiteCacheTest.php +K 25 +svn:wc:ra_dav:version-url +V 66 +/!svn/ver/23881/branches/1.4/test/unit/cache/sfSQLiteCacheTest.php +END +sfCacheDriverTests.class.php +K 25 +svn:wc:ra_dav:version-url +V 73 +/!svn/ver/23881/branches/1.4/test/unit/cache/sfCacheDriverTests.class.php +END +sfMemcacheCacheTest.php +K 25 +svn:wc:ra_dav:version-url +V 68 +/!svn/ver/23925/branches/1.4/test/unit/cache/sfMemcacheCacheTest.php +END +sfAPCCacheTest.php +K 25 +svn:wc:ra_dav:version-url +V 63 +/!svn/ver/23881/branches/1.4/test/unit/cache/sfAPCCacheTest.php +END +sfFunctionCacheTest.php +K 25 +svn:wc:ra_dav:version-url +V 68 +/!svn/ver/23881/branches/1.4/test/unit/cache/sfFunctionCacheTest.php +END +sfEAcceleratorCacheTest.php +K 25 +svn:wc:ra_dav:version-url +V 72 +/!svn/ver/23881/branches/1.4/test/unit/cache/sfEAcceleratorCacheTest.php +END +sfXCacheCacheTest.php +K 25 +svn:wc:ra_dav:version-url +V 66 +/!svn/ver/23881/branches/1.4/test/unit/cache/sfXCacheCacheTest.php +END diff --git a/lib/vendor/symfony/test/unit/cache/.svn/entries b/lib/vendor/symfony/test/unit/cache/.svn/entries new file mode 100644 index 0000000..df919ec --- /dev/null +++ b/lib/vendor/symfony/test/unit/cache/.svn/entries @@ -0,0 +1,368 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/unit/cache +http://svn.symfony-project.com + + + +2009-11-14T15:55:45.360324Z +23925 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +sfNoCacheTest.php +file + + + + +2012-05-10T18:40:47.317551Z +bcd655e0c993cc04fdc2a99aec790b4f +2009-06-25T06:35:13.766150Z +19531 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +1229 + +sfCacheTest.php +file + + + + +2012-05-10T18:40:47.325551Z +e3065e1d4eb6a0fffc17f466377e6b95 +2009-06-25T06:35:13.766150Z +19531 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +988 + +sfFileCacheTest.php +file + + + + +2012-05-10T18:40:47.325551Z +84e49ef9420b22b7ed7b448c11240b32 +2009-09-13T21:04:53.781409Z +21989 +FabianLange +has-props + + + + + + + + + + + + + + + + + + + + +1062 + +sfSQLiteCacheTest.php +file + + + + +2012-05-10T18:40:47.325551Z +236aaeb19b96dc035ae4b0f6b402e9d6 +2009-11-01T22:54:37.862628Z +23501 +FabianLange +has-props + + + + + + + + + + + + + + + + + + + + +1425 + +sfCacheDriverTests.class.php +file + + + + +2012-05-10T18:40:47.325551Z +2615f148bd14254a2d1b536edab2b2a4 +2009-09-13T21:04:53.781409Z +21989 +FabianLange +has-props + + + + + + + + + + + + + + + + + + + + +7610 + +sfMemcacheCacheTest.php +file + + + + +2012-05-10T18:40:47.414138Z +856422f8cc17abc5a7f8efc122848100 +2009-11-14T15:55:45.360324Z +23925 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +2336 + +sfAPCCacheTest.php +file + + + + +2012-05-10T18:40:47.414138Z +0d0ac14164134d53abf4c36cd5c0a338 +2009-09-13T21:04:53.781409Z +21989 +FabianLange +has-props + + + + + + + + + + + + + + + + + + + + +853 + +sfFunctionCacheTest.php +file + + + + +2012-05-10T18:40:47.414138Z +b74b528d0a15b331f658129931983bdf +2009-06-25T06:35:13.766150Z +19531 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +2690 + +sfEAcceleratorCacheTest.php +file + + + + +2012-05-10T18:40:47.414138Z +cec98f0d66a8931c245624886d502035 +2009-09-13T21:04:53.781409Z +21989 +FabianLange +has-props + + + + + + + + + + + + + + + + + + + + +757 + +sfXCacheCacheTest.php +file + + + + +2012-05-10T18:40:47.417550Z +1a5793c55b5920e5a0049fdbe8048945 +2009-09-13T21:04:53.781409Z +21989 +FabianLange +has-props + + + + + + + + + + + + + + + + + + + + +745 + diff --git a/lib/vendor/symfony/test/unit/cache/.svn/prop-base/sfAPCCacheTest.php.svn-base b/lib/vendor/symfony/test/unit/cache/.svn/prop-base/sfAPCCacheTest.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/unit/cache/.svn/prop-base/sfAPCCacheTest.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/unit/cache/.svn/prop-base/sfCacheDriverTests.class.php.svn-base b/lib/vendor/symfony/test/unit/cache/.svn/prop-base/sfCacheDriverTests.class.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/unit/cache/.svn/prop-base/sfCacheDriverTests.class.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/unit/cache/.svn/prop-base/sfCacheTest.php.svn-base b/lib/vendor/symfony/test/unit/cache/.svn/prop-base/sfCacheTest.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/unit/cache/.svn/prop-base/sfCacheTest.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/unit/cache/.svn/prop-base/sfEAcceleratorCacheTest.php.svn-base b/lib/vendor/symfony/test/unit/cache/.svn/prop-base/sfEAcceleratorCacheTest.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/unit/cache/.svn/prop-base/sfEAcceleratorCacheTest.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/unit/cache/.svn/prop-base/sfFileCacheTest.php.svn-base b/lib/vendor/symfony/test/unit/cache/.svn/prop-base/sfFileCacheTest.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/unit/cache/.svn/prop-base/sfFileCacheTest.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/unit/cache/.svn/prop-base/sfFunctionCacheTest.php.svn-base b/lib/vendor/symfony/test/unit/cache/.svn/prop-base/sfFunctionCacheTest.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/unit/cache/.svn/prop-base/sfFunctionCacheTest.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/unit/cache/.svn/prop-base/sfMemcacheCacheTest.php.svn-base b/lib/vendor/symfony/test/unit/cache/.svn/prop-base/sfMemcacheCacheTest.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/unit/cache/.svn/prop-base/sfMemcacheCacheTest.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/unit/cache/.svn/prop-base/sfNoCacheTest.php.svn-base b/lib/vendor/symfony/test/unit/cache/.svn/prop-base/sfNoCacheTest.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/unit/cache/.svn/prop-base/sfNoCacheTest.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/unit/cache/.svn/prop-base/sfSQLiteCacheTest.php.svn-base b/lib/vendor/symfony/test/unit/cache/.svn/prop-base/sfSQLiteCacheTest.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/unit/cache/.svn/prop-base/sfSQLiteCacheTest.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/unit/cache/.svn/prop-base/sfXCacheCacheTest.php.svn-base b/lib/vendor/symfony/test/unit/cache/.svn/prop-base/sfXCacheCacheTest.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/unit/cache/.svn/prop-base/sfXCacheCacheTest.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/unit/cache/.svn/text-base/sfAPCCacheTest.php.svn-base b/lib/vendor/symfony/test/unit/cache/.svn/text-base/sfAPCCacheTest.php.svn-base new file mode 100644 index 0000000..d9c7e9a --- /dev/null +++ b/lib/vendor/symfony/test/unit/cache/.svn/text-base/sfAPCCacheTest.php.svn-base @@ -0,0 +1,42 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); + +$plan = 64; +$t = new lime_test($plan); + +try +{ + new sfAPCCache(); +} +catch (sfInitializationException $e) +{ + $t->skip($e->getMessage(), $plan); + return; +} + +if (!ini_get('apc.enable_cli')) +{ + $t->skip('APC must be enable on CLI to run these tests', $plan); + return; +} + +require_once(dirname(__FILE__).'/sfCacheDriverTests.class.php'); + +// setup +sfConfig::set('sf_logging_enabled', false); + +// ->initialize() +$t->diag('->initialize()'); +$cache = new sfAPCCache(); +$cache->initialize(); + +sfCacheDriverTests::launch($t, $cache); diff --git a/lib/vendor/symfony/test/unit/cache/.svn/text-base/sfCacheDriverTests.class.php.svn-base b/lib/vendor/symfony/test/unit/cache/.svn/text-base/sfCacheDriverTests.class.php.svn-base new file mode 100644 index 0000000..703cc53 --- /dev/null +++ b/lib/vendor/symfony/test/unit/cache/.svn/text-base/sfCacheDriverTests.class.php.svn-base @@ -0,0 +1,181 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +class sfCacheDriverTests +{ + static public function launch($t, $cache) + { + // ->set() ->get() ->has() + $t->diag('->set() ->get() ->has()'); + $data = 'some random data to store in the cache system... (\'"!#/é$£)'; + $t->ok($cache->set('test', $data, 86400), '->set() returns true if data are stored in cache'); + $t->is($cache->get('test'), $data, '->get() retrieves data form the cache'); + $t->is($cache->has('test'), true, '->has() returns true if the cache exists'); + + $t->ok($cache->set('test', $data, -10), '->set() takes a lifetime as its third argument'); + $t->is($cache->get('test', 'default'), 'default', '->get() returns the default value if cache has expired'); + $t->is($cache->has('test'), false, '->has() returns true if the cache exists'); + + $t->is($cache->get('foo'), null, '->get() returns null if the cache does not exist'); + $t->is($cache->get('foo', 'default'), 'default', '->get() takes a default value as its second argument'); + $t->is($cache->has('foo'), false, '->has() returns false if the cache does not exist'); + + $data = 'another some random data to store in the cache system...'; + $t->ok($cache->set('test', $data), '->set() overrides previous data stored in the cache'); + $t->is($cache->get('test'), $data, '->get() retrieves the latest data form the cache'); + + $data = false; + $t->ok($cache->set('test', $data), '->set() false data are stored in the cache'); + $t->is($cache->has('test'), true, '->has() returns true if the cache exists with false value'); + $t->is($cache->get('test'), $data, '->get() retrieves the latest data form the cache'); + $t->is($cache->get('test', 'foo'), $data, '->get() does not return default value if false is stored'); + + $cache->clean(); + $cache->set('foo', 'foo'); + $cache->set('foo:bar', 'bar'); + $cache->set('foo:bar:foo:bar:foo', 'foobar'); + $t->is($cache->get('foo'), 'foo', '->set() accepts a "namespaced" cache key'); + $t->is($cache->get('foo:bar'), 'bar', '->set() accepts a "namespaced" cache key'); + $t->is($cache->get('foo:bar:foo:bar:foo'), 'foobar', '->set() accepts a "namespaced" cache key'); + + // ->clean() + $t->diag('->clean()'); + $data = 'some random data to store in the cache system...'; + $cache->set('foo', $data, -10); + $cache->set('bar', $data, 86400); + + $cache->clean(sfCache::OLD); + $t->is($cache->has('foo'), false, '->clean() cleans old cache key if given the sfCache::OLD argument'); + $t->is($cache->has('bar'), true, '->clean() cleans old cache key if given the sfCache::OLD argument'); + + $cache->set('foo', $data, -10); + $cache->set('bar', $data, 86400); + + $cache->clean(sfCache::ALL); + $t->is($cache->has('foo'), false, '->clean() cleans all cache key if given the sfCache::ALL argument'); + $t->is($cache->has('bar'), false, '->clean() cleans all cache key if given the sfCache::ALL argument'); + + $cache->set('foo', $data, -10); + $cache->set('bar', $data, 86400); + + $cache->clean(); + $t->is($cache->has('foo'), false, '->clean() cleans all cache key if given no argument'); + $t->is($cache->has('bar'), false, '->clean() cleans all cache key if given no argument'); + + $cache->clean(); + $cache->setOption('automatic_cleaning_factor', 1); + $cache->set('foo', $data); + $cache->set('foo', $data); + $cache->set('foo', $data); + $cache->setOption('automatic_cleaning_factor', 1000); + + // ->remove() + $t->diag('->remove()'); + $data = 'some random data to store in the cache system...'; + $cache->clean(); + $cache->set('foo', $data); + $cache->set('bar', $data); + + $cache->remove('foo'); + $t->is($cache->has('foo'), false, '->remove() takes a cache key as its first argument'); + $t->is($cache->get('foo'), null, '->remove() takes a cache key as its first argument'); + $t->is($cache->has('bar'), true, '->remove() takes a cache key as its first argument'); + + // ->removePattern() + $t->diag('->removePattern()'); + + $tests = array( + '*:bar:foo' => array(false, false, true, true), + 'foo:bar:*' => array(false, true, false, true), + 'foo:**:foo' => array(false, true, true, true), + 'foo:bar:**' => array(false, true, false, false), + '**:bar' => array(true, true, true, false), + '**' => array(false, false, false, false), + ); + + foreach ($tests as $pattern => $results) + { + $t->diag($pattern); + + $cache->clean(); + + $cache->set('foo:bar:foo', 'foo'); + $cache->set('bar:bar:foo', 'foo'); + $cache->set('foo:bar:foo1', 'foo'); + $cache->set('foo:bar:foo:bar', 'foo'); + + $cache->removePattern($pattern); + + $t->is($cache->has('foo:bar:foo'), $results[0], '->removePattern() takes a pattern as its first argument'); + $t->is($cache->has('bar:bar:foo'), $results[1], '->removePattern() takes a pattern as its first argument'); + $t->is($cache->has('foo:bar:foo1'), $results[2], '->removePattern() takes a pattern as its first argument'); + $t->is($cache->has('foo:bar:foo:bar'), $results[3], '->removePattern() takes a pattern as its first argument'); + } + + // ->getTimeout() + $t->diag('->getTimeout()'); + foreach (array(86400, 10) as $lifetime) + { + $cache->set('foo', 'bar', $lifetime); + + $delta = $cache->getTimeout('foo') - time(); + $t->ok($delta >= $lifetime - 1 && $delta <= $lifetime, '->getTimeout() returns the timeout time for a given cache key'); + } + + $cache->set('bar', 'foo', -10); + $t->is($cache->getTimeout('bar'), 0, '->getTimeout() returns the timeout time for a given cache key'); + + foreach (array(86400, 10) as $lifetime) + { + $cache->setOption('lifetime', $lifetime); + $cache->set('foo', 'bar'); + + $delta = $cache->getTimeout('foo') - time(); + $t->ok($delta >= $lifetime - 1 && $delta <= $lifetime, '->getTimeout() returns the timeout time for a given cache key'); + } + + $t->is($cache->getTimeout('nonexistantkey'), 0, '->getTimeout() returns 0 if the cache key does not exist'); + + // ->getLastModified() + $t->diag('->getLastModified()'); + foreach (array(86400, 10) as $lifetime) + { + $cache->set('bar', 'foo', $lifetime); + $now = time(); + $lastModified = $cache->getLastModified('bar'); + $t->ok($lastModified >= time() - 1 && $lastModified <= time(), '->getLastModified() returns the last modified time for a given cache key'); + } + + $cache->set('bar', 'foo', -10); + $t->is($cache->getLastModified('bar'), 0, '->getLastModified() returns the last modified time for a given cache key'); + + foreach (array(86400, 10) as $lifetime) + { + $cache->setOption('lifetime', $lifetime); + $cache->set('bar', 'foo'); + + $now = time(); + $lastModified = $cache->getLastModified('bar'); + $t->ok($lastModified >= time() - 1 && $lastModified <= time(), '->getLastModified() returns the last modified time for a given cache key'); + } + + $t->is($cache->getLastModified('nonexistantkey'), 0, '->getLastModified() returns 0 if the cache key does not exist'); + + // ->getMany() + $t->diag('->getMany()'); + $cache->clean(); + + $cache->set('bar', 'foo'); + $cache->set('foo', 'bar'); + + $t->is($cache->getMany(array('foo', 'bar')), array('foo' => 'bar', 'bar' => 'foo'), '->getMany() gets many keys in one call'); + + $cache->clean(); + } +} diff --git a/lib/vendor/symfony/test/unit/cache/.svn/text-base/sfCacheTest.php.svn-base b/lib/vendor/symfony/test/unit/cache/.svn/text-base/sfCacheTest.php.svn-base new file mode 100644 index 0000000..27bd888 --- /dev/null +++ b/lib/vendor/symfony/test/unit/cache/.svn/text-base/sfCacheTest.php.svn-base @@ -0,0 +1,35 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); + +class myCache extends sfCache +{ + public function get($key, $default = null) {} + public function has($key) {} + public function set($key, $data, $lifetime = null) {} + public function remove($key) {} + public function clean($mode = sfCache::ALL) {} + public function getTimeout($key) {} + public function getLastModified($key) {} + public function removePattern($pattern, $delimiter = ':') {} +} + +class fakeCache +{ +} + +$t = new lime_test(1); + +// ->initialize() +$t->diag('->initialize()'); +$cache = new myCache(); +$cache->initialize(array('foo' => 'bar')); +$t->is($cache->getOption('foo'), 'bar', '->initialize() takes an array of options as its first argument'); diff --git a/lib/vendor/symfony/test/unit/cache/.svn/text-base/sfEAcceleratorCacheTest.php.svn-base b/lib/vendor/symfony/test/unit/cache/.svn/text-base/sfEAcceleratorCacheTest.php.svn-base new file mode 100644 index 0000000..87a8afd --- /dev/null +++ b/lib/vendor/symfony/test/unit/cache/.svn/text-base/sfEAcceleratorCacheTest.php.svn-base @@ -0,0 +1,36 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); + +$plan = 64; +$t = new lime_test($plan); + +try +{ + new sfEAcceleratorCache(); +} +catch (sfInitializationException $e) +{ + $t->skip($e->getMessage(), $plan); + return; +} + +require_once(dirname(__FILE__).'/sfCacheDriverTests.class.php'); + +// setup +sfConfig::set('sf_logging_enabled', false); + +// ->initialize() +$t->diag('->initialize()'); +$cache = new sfEAcceleratorCache(); +$cache->initialize(); + +sfCacheDriverTests::launch($t, $cache); diff --git a/lib/vendor/symfony/test/unit/cache/.svn/text-base/sfFileCacheTest.php.svn-base b/lib/vendor/symfony/test/unit/cache/.svn/text-base/sfFileCacheTest.php.svn-base new file mode 100644 index 0000000..799e1ae --- /dev/null +++ b/lib/vendor/symfony/test/unit/cache/.svn/text-base/sfFileCacheTest.php.svn-base @@ -0,0 +1,40 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); +require_once(dirname(__FILE__).'/sfCacheDriverTests.class.php'); + +$t = new lime_test(65); + +// setup +sfConfig::set('sf_logging_enabled', false); +$temp = tempnam('/tmp/cache_dir', 'tmp'); +unlink($temp); +mkdir($temp); + +// ->initialize() +$t->diag('->initialize()'); +try +{ + $cache = new sfFileCache(); + $t->fail('->initialize() throws an sfInitializationException exception if you don\'t pass a "cache_dir" parameter'); +} +catch (sfInitializationException $e) +{ + $t->pass('->initialize() throws an sfInitializationException exception if you don\'t pass a "cache_dir" parameter'); +} + +$cache = new sfFileCache(array('cache_dir' => $temp)); + +sfCacheDriverTests::launch($t, $cache); + +// teardown +sfToolkit::clearDirectory($temp); +rmdir($temp); diff --git a/lib/vendor/symfony/test/unit/cache/.svn/text-base/sfFunctionCacheTest.php.svn-base b/lib/vendor/symfony/test/unit/cache/.svn/text-base/sfFunctionCacheTest.php.svn-base new file mode 100644 index 0000000..5010f57 --- /dev/null +++ b/lib/vendor/symfony/test/unit/cache/.svn/text-base/sfFunctionCacheTest.php.svn-base @@ -0,0 +1,109 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); +require_once(dirname(__FILE__).'/sfCacheDriverTests.class.php'); + +$t = new lime_test(15); + +class sfSimpleCache extends sfCache +{ + public $data = array(); + + public function get($key, $default = null) + { + return isset($this->data[$key]) ? $this->data[$key] : $default; + } + + public function set($key, $data, $lifetime = null) + { + $this->data[$key] = $data; + } + + public function remove($key) + { + unset($this->data[$key]); + } + + public function removePattern($pattern, $delimiter = ':') + { + $this->data = array(); + } + + public function has($key) + { + return isset($this->data[$key]); + } + + public function clean($mode = sfCache::ALL) + { + $this->data = array(); + } + + public function getLastModified($key) + { + return 0; + } + + public function getTimeout($key) + { + return 0; + } +} + +class testFunctionCache +{ + static $count = 0; + + static function test($arg1, $arg2) + { + ++self::$count; + + return $arg1.$arg2; + } +} + +$count = 0; +function testFunctionCache($arg1, $arg2) +{ + global $count; + + ++$count; + + return $arg1.$arg2; +} + +// ->call() +$t->diag('->call()'); + +$cache = new sfSimpleCache(); +$functionCache = new sfFunctionCache($cache); +$result = testFunctionCache(1, 2); +$t->is($count, 1); +$t->is($functionCache->call('testFunctionCache', array(1, 2)), $result, '->call() works with functions'); +$t->is($count, 2); +$t->is($functionCache->call('testFunctionCache', array(1, 2)), $result, '->call() stores the function call in cache'); +$t->is($count, 2); + +$result = testFunctionCache::test(1, 2); +$t->is(testFunctionCache::$count, 1); +$t->is($functionCache->call(array('testFunctionCache', 'test'), array(1, 2)), $result, '->call() works with static method calls'); +$t->is(testFunctionCache::$count, 2); +$t->is($functionCache->call(array('testFunctionCache', 'test'), array(1, 2)), $result, '->call() stores the function call in cache'); +$t->is(testFunctionCache::$count, 2); + +testFunctionCache::$count = 0; +$object = new testFunctionCache(); +$result = $object->test(1, 2); +$t->is(testFunctionCache::$count, 1); +$t->is($functionCache->call(array($object, 'test'), array(1, 2)), $result, '->call() works with object methods'); +$t->is(testFunctionCache::$count, 2); +$t->is($functionCache->call(array($object, 'test'), array(1, 2)), $result, '->call() stores the function call in cache'); +$t->is(testFunctionCache::$count, 2); diff --git a/lib/vendor/symfony/test/unit/cache/.svn/text-base/sfMemcacheCacheTest.php.svn-base b/lib/vendor/symfony/test/unit/cache/.svn/text-base/sfMemcacheCacheTest.php.svn-base new file mode 100644 index 0000000..7ac1707 --- /dev/null +++ b/lib/vendor/symfony/test/unit/cache/.svn/text-base/sfMemcacheCacheTest.php.svn-base @@ -0,0 +1,69 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); + +$plan = 73; +$t = new lime_test($plan); + +if (!class_exists('Memcache')) +{ + $t->skip('Memcache needed to run these tests', $plan); + return; +} + +require_once(dirname(__FILE__).'/sfCacheDriverTests.class.php'); + +// setup +sfConfig::set('sf_logging_enabled', false); + +// ->initialize() +$t->diag('->initialize()'); +try +{ + $cache = new sfMemcacheCache(array('storeCacheInfo' => true)); +} +catch (sfInitializationException $e) +{ + $t->skip('Memcached must be active to run these tests', $plan); + return; +} + +sfCacheDriverTests::launch($t, $cache); + +// ->remove() test for ticket #6220 +$t->diag('->remove() test for ticket #6220'); +$backend = $cache->getBackend(); +$prefix = $cache->getOption('prefix'); +$cache->clean(); +$cache->set('test_1', 'abc'); +$cache->set('test_2', 'abc'); +$cache->remove('test_1'); +$cacheInfo = $backend->get($prefix.'_metadata'); +$t->ok(is_array($cacheInfo),'Cache info is an array'); +$t->is(count($cacheInfo),1,'Cache info contains 1 element'); +$t->ok(!in_array($prefix.'test_1',$cacheInfo),'Cache info no longer contains the removed key'); +$t->ok(in_array($prefix.'test_2',$cacheInfo),'Cache info still contains the key that was not removed'); + +// ->removePattern() test for ticket #6220 +$t->diag('->removePattern() test for ticket #6220'); +$backend = $cache->getBackend(); +$prefix = $cache->getOption('prefix'); +$cache->clean(); +$cache->set('test_1', 'abc'); +$cache->set('test_2', 'abc'); +$cache->set('test3', 'abc'); +$cache->removePattern('test_*'); +$cacheInfo = $backend->get($prefix.'_metadata'); +$t->ok(is_array($cacheInfo),'Cache info is an array'); +$t->is(count($cacheInfo),1,'Cache info contains 1 element'); +$t->ok(!in_array($prefix.'test_1',$cacheInfo),'Cache info no longer contains the key that matches the pattern (first key)'); +$t->ok(!in_array($prefix.'test_2',$cacheInfo),'Cache info no longer contains the key that matches the pattern (second key)'); +$t->ok(in_array($prefix.'test3',$cacheInfo),'Cache info still contains the key that did not match the pattern (third key)'); \ No newline at end of file diff --git a/lib/vendor/symfony/test/unit/cache/.svn/text-base/sfNoCacheTest.php.svn-base b/lib/vendor/symfony/test/unit/cache/.svn/text-base/sfNoCacheTest.php.svn-base new file mode 100644 index 0000000..5d9b9ab --- /dev/null +++ b/lib/vendor/symfony/test/unit/cache/.svn/text-base/sfNoCacheTest.php.svn-base @@ -0,0 +1,28 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); + +$t = new lime_test(8); + +// ->initialize() +$t->diag('->initialize()'); +$cache = new sfNoCache(); + +// ->get() ->set() ->has() ->remove() ->removePattern() ->clean() ->getLastModified() ->getTimeout() +$t->diag('->get() ->set() ->has() ->remove() ->removePattern() ->clean() ->getLastModified() ->getTimeout()'); +$t->is($cache->get('foo'), null, '->get() always returns "null"'); +$t->is($cache->set('foo', 'bar'), true, '->set() always returns "true"'); +$t->is($cache->has('foo'), false, '->has() always returns "false"'); +$t->is($cache->remove('foo'), true, '->remove() always returns "true"'); +$t->is($cache->removePattern('**'), true, '->removePattern() always returns "true"'); +$t->is($cache->clean(), true, '->clean() always returns "true"'); +$t->is($cache->getLastModified('foo'), 0, '->getLastModified() always returns "0"'); +$t->is($cache->getTimeout('foo'), 0, '->getTimeout() always returns "0"'); diff --git a/lib/vendor/symfony/test/unit/cache/.svn/text-base/sfSQLiteCacheTest.php.svn-base b/lib/vendor/symfony/test/unit/cache/.svn/text-base/sfSQLiteCacheTest.php.svn-base new file mode 100644 index 0000000..4780ea9 --- /dev/null +++ b/lib/vendor/symfony/test/unit/cache/.svn/text-base/sfSQLiteCacheTest.php.svn-base @@ -0,0 +1,55 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); +require_once(dirname(__FILE__).'/sfCacheDriverTests.class.php'); + +$plan = 129; +$t = new lime_test($plan); + +if (!extension_loaded('SQLite') && !extension_loaded('pdo_SQLite')) +{ + $t->skip('SQLite extension not loaded, skipping tests', $plan); + return; +} + +try +{ + new sfSQLiteCache(array('database' => ':memory:')); +} +catch (sfInitializationException $e) +{ + $t->skip($e->getMessage(), $plan); + return; +} + +// ->initialize() +$t->diag('->initialize()'); +try +{ + $cache = new sfSQLiteCache(); + $t->fail('->initialize() throws an sfInitializationException exception if you don\'t pass a "database" parameter'); +} +catch (sfInitializationException $e) +{ + $t->pass('->initialize() throws an sfInitializationException exception if you don\'t pass a "database" parameter'); +} + +// database in memory +$cache = new sfSQLiteCache(array('database' => ':memory:')); + +sfCacheDriverTests::launch($t, $cache); + +// database on disk +$database = tempnam('/tmp/cachedir', 'tmp'); +unlink($database); +$cache = new sfSQLiteCache(array('database' => $database)); +sfCacheDriverTests::launch($t, $cache); +unlink($database); diff --git a/lib/vendor/symfony/test/unit/cache/.svn/text-base/sfXCacheCacheTest.php.svn-base b/lib/vendor/symfony/test/unit/cache/.svn/text-base/sfXCacheCacheTest.php.svn-base new file mode 100644 index 0000000..30a0842 --- /dev/null +++ b/lib/vendor/symfony/test/unit/cache/.svn/text-base/sfXCacheCacheTest.php.svn-base @@ -0,0 +1,36 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); + +$plan = 64; +$t = new lime_test($plan); + +try +{ + new sfXCacheCache(); +} +catch (sfInitializationException $e) +{ + $t->skip($e->getMessage(), $plan); + return; +} + +require_once(dirname(__FILE__).'/sfCacheDriverTests.class.php'); + +// setup +sfConfig::set('sf_logging_enabled', false); + +// ->initialize() +$t->diag('->initialize()'); +$cache = new sfXCacheCache(); +$cache->initialize(); + +sfCacheDriverTests::launch($t, $cache); diff --git a/lib/vendor/symfony/test/unit/cache/sfAPCCacheTest.php b/lib/vendor/symfony/test/unit/cache/sfAPCCacheTest.php new file mode 100644 index 0000000..d9c7e9a --- /dev/null +++ b/lib/vendor/symfony/test/unit/cache/sfAPCCacheTest.php @@ -0,0 +1,42 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); + +$plan = 64; +$t = new lime_test($plan); + +try +{ + new sfAPCCache(); +} +catch (sfInitializationException $e) +{ + $t->skip($e->getMessage(), $plan); + return; +} + +if (!ini_get('apc.enable_cli')) +{ + $t->skip('APC must be enable on CLI to run these tests', $plan); + return; +} + +require_once(dirname(__FILE__).'/sfCacheDriverTests.class.php'); + +// setup +sfConfig::set('sf_logging_enabled', false); + +// ->initialize() +$t->diag('->initialize()'); +$cache = new sfAPCCache(); +$cache->initialize(); + +sfCacheDriverTests::launch($t, $cache); diff --git a/lib/vendor/symfony/test/unit/cache/sfCacheDriverTests.class.php b/lib/vendor/symfony/test/unit/cache/sfCacheDriverTests.class.php new file mode 100644 index 0000000..703cc53 --- /dev/null +++ b/lib/vendor/symfony/test/unit/cache/sfCacheDriverTests.class.php @@ -0,0 +1,181 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +class sfCacheDriverTests +{ + static public function launch($t, $cache) + { + // ->set() ->get() ->has() + $t->diag('->set() ->get() ->has()'); + $data = 'some random data to store in the cache system... (\'"!#/é$£)'; + $t->ok($cache->set('test', $data, 86400), '->set() returns true if data are stored in cache'); + $t->is($cache->get('test'), $data, '->get() retrieves data form the cache'); + $t->is($cache->has('test'), true, '->has() returns true if the cache exists'); + + $t->ok($cache->set('test', $data, -10), '->set() takes a lifetime as its third argument'); + $t->is($cache->get('test', 'default'), 'default', '->get() returns the default value if cache has expired'); + $t->is($cache->has('test'), false, '->has() returns true if the cache exists'); + + $t->is($cache->get('foo'), null, '->get() returns null if the cache does not exist'); + $t->is($cache->get('foo', 'default'), 'default', '->get() takes a default value as its second argument'); + $t->is($cache->has('foo'), false, '->has() returns false if the cache does not exist'); + + $data = 'another some random data to store in the cache system...'; + $t->ok($cache->set('test', $data), '->set() overrides previous data stored in the cache'); + $t->is($cache->get('test'), $data, '->get() retrieves the latest data form the cache'); + + $data = false; + $t->ok($cache->set('test', $data), '->set() false data are stored in the cache'); + $t->is($cache->has('test'), true, '->has() returns true if the cache exists with false value'); + $t->is($cache->get('test'), $data, '->get() retrieves the latest data form the cache'); + $t->is($cache->get('test', 'foo'), $data, '->get() does not return default value if false is stored'); + + $cache->clean(); + $cache->set('foo', 'foo'); + $cache->set('foo:bar', 'bar'); + $cache->set('foo:bar:foo:bar:foo', 'foobar'); + $t->is($cache->get('foo'), 'foo', '->set() accepts a "namespaced" cache key'); + $t->is($cache->get('foo:bar'), 'bar', '->set() accepts a "namespaced" cache key'); + $t->is($cache->get('foo:bar:foo:bar:foo'), 'foobar', '->set() accepts a "namespaced" cache key'); + + // ->clean() + $t->diag('->clean()'); + $data = 'some random data to store in the cache system...'; + $cache->set('foo', $data, -10); + $cache->set('bar', $data, 86400); + + $cache->clean(sfCache::OLD); + $t->is($cache->has('foo'), false, '->clean() cleans old cache key if given the sfCache::OLD argument'); + $t->is($cache->has('bar'), true, '->clean() cleans old cache key if given the sfCache::OLD argument'); + + $cache->set('foo', $data, -10); + $cache->set('bar', $data, 86400); + + $cache->clean(sfCache::ALL); + $t->is($cache->has('foo'), false, '->clean() cleans all cache key if given the sfCache::ALL argument'); + $t->is($cache->has('bar'), false, '->clean() cleans all cache key if given the sfCache::ALL argument'); + + $cache->set('foo', $data, -10); + $cache->set('bar', $data, 86400); + + $cache->clean(); + $t->is($cache->has('foo'), false, '->clean() cleans all cache key if given no argument'); + $t->is($cache->has('bar'), false, '->clean() cleans all cache key if given no argument'); + + $cache->clean(); + $cache->setOption('automatic_cleaning_factor', 1); + $cache->set('foo', $data); + $cache->set('foo', $data); + $cache->set('foo', $data); + $cache->setOption('automatic_cleaning_factor', 1000); + + // ->remove() + $t->diag('->remove()'); + $data = 'some random data to store in the cache system...'; + $cache->clean(); + $cache->set('foo', $data); + $cache->set('bar', $data); + + $cache->remove('foo'); + $t->is($cache->has('foo'), false, '->remove() takes a cache key as its first argument'); + $t->is($cache->get('foo'), null, '->remove() takes a cache key as its first argument'); + $t->is($cache->has('bar'), true, '->remove() takes a cache key as its first argument'); + + // ->removePattern() + $t->diag('->removePattern()'); + + $tests = array( + '*:bar:foo' => array(false, false, true, true), + 'foo:bar:*' => array(false, true, false, true), + 'foo:**:foo' => array(false, true, true, true), + 'foo:bar:**' => array(false, true, false, false), + '**:bar' => array(true, true, true, false), + '**' => array(false, false, false, false), + ); + + foreach ($tests as $pattern => $results) + { + $t->diag($pattern); + + $cache->clean(); + + $cache->set('foo:bar:foo', 'foo'); + $cache->set('bar:bar:foo', 'foo'); + $cache->set('foo:bar:foo1', 'foo'); + $cache->set('foo:bar:foo:bar', 'foo'); + + $cache->removePattern($pattern); + + $t->is($cache->has('foo:bar:foo'), $results[0], '->removePattern() takes a pattern as its first argument'); + $t->is($cache->has('bar:bar:foo'), $results[1], '->removePattern() takes a pattern as its first argument'); + $t->is($cache->has('foo:bar:foo1'), $results[2], '->removePattern() takes a pattern as its first argument'); + $t->is($cache->has('foo:bar:foo:bar'), $results[3], '->removePattern() takes a pattern as its first argument'); + } + + // ->getTimeout() + $t->diag('->getTimeout()'); + foreach (array(86400, 10) as $lifetime) + { + $cache->set('foo', 'bar', $lifetime); + + $delta = $cache->getTimeout('foo') - time(); + $t->ok($delta >= $lifetime - 1 && $delta <= $lifetime, '->getTimeout() returns the timeout time for a given cache key'); + } + + $cache->set('bar', 'foo', -10); + $t->is($cache->getTimeout('bar'), 0, '->getTimeout() returns the timeout time for a given cache key'); + + foreach (array(86400, 10) as $lifetime) + { + $cache->setOption('lifetime', $lifetime); + $cache->set('foo', 'bar'); + + $delta = $cache->getTimeout('foo') - time(); + $t->ok($delta >= $lifetime - 1 && $delta <= $lifetime, '->getTimeout() returns the timeout time for a given cache key'); + } + + $t->is($cache->getTimeout('nonexistantkey'), 0, '->getTimeout() returns 0 if the cache key does not exist'); + + // ->getLastModified() + $t->diag('->getLastModified()'); + foreach (array(86400, 10) as $lifetime) + { + $cache->set('bar', 'foo', $lifetime); + $now = time(); + $lastModified = $cache->getLastModified('bar'); + $t->ok($lastModified >= time() - 1 && $lastModified <= time(), '->getLastModified() returns the last modified time for a given cache key'); + } + + $cache->set('bar', 'foo', -10); + $t->is($cache->getLastModified('bar'), 0, '->getLastModified() returns the last modified time for a given cache key'); + + foreach (array(86400, 10) as $lifetime) + { + $cache->setOption('lifetime', $lifetime); + $cache->set('bar', 'foo'); + + $now = time(); + $lastModified = $cache->getLastModified('bar'); + $t->ok($lastModified >= time() - 1 && $lastModified <= time(), '->getLastModified() returns the last modified time for a given cache key'); + } + + $t->is($cache->getLastModified('nonexistantkey'), 0, '->getLastModified() returns 0 if the cache key does not exist'); + + // ->getMany() + $t->diag('->getMany()'); + $cache->clean(); + + $cache->set('bar', 'foo'); + $cache->set('foo', 'bar'); + + $t->is($cache->getMany(array('foo', 'bar')), array('foo' => 'bar', 'bar' => 'foo'), '->getMany() gets many keys in one call'); + + $cache->clean(); + } +} diff --git a/lib/vendor/symfony/test/unit/cache/sfCacheTest.php b/lib/vendor/symfony/test/unit/cache/sfCacheTest.php new file mode 100644 index 0000000..27bd888 --- /dev/null +++ b/lib/vendor/symfony/test/unit/cache/sfCacheTest.php @@ -0,0 +1,35 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); + +class myCache extends sfCache +{ + public function get($key, $default = null) {} + public function has($key) {} + public function set($key, $data, $lifetime = null) {} + public function remove($key) {} + public function clean($mode = sfCache::ALL) {} + public function getTimeout($key) {} + public function getLastModified($key) {} + public function removePattern($pattern, $delimiter = ':') {} +} + +class fakeCache +{ +} + +$t = new lime_test(1); + +// ->initialize() +$t->diag('->initialize()'); +$cache = new myCache(); +$cache->initialize(array('foo' => 'bar')); +$t->is($cache->getOption('foo'), 'bar', '->initialize() takes an array of options as its first argument'); diff --git a/lib/vendor/symfony/test/unit/cache/sfEAcceleratorCacheTest.php b/lib/vendor/symfony/test/unit/cache/sfEAcceleratorCacheTest.php new file mode 100644 index 0000000..87a8afd --- /dev/null +++ b/lib/vendor/symfony/test/unit/cache/sfEAcceleratorCacheTest.php @@ -0,0 +1,36 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); + +$plan = 64; +$t = new lime_test($plan); + +try +{ + new sfEAcceleratorCache(); +} +catch (sfInitializationException $e) +{ + $t->skip($e->getMessage(), $plan); + return; +} + +require_once(dirname(__FILE__).'/sfCacheDriverTests.class.php'); + +// setup +sfConfig::set('sf_logging_enabled', false); + +// ->initialize() +$t->diag('->initialize()'); +$cache = new sfEAcceleratorCache(); +$cache->initialize(); + +sfCacheDriverTests::launch($t, $cache); diff --git a/lib/vendor/symfony/test/unit/cache/sfFileCacheTest.php b/lib/vendor/symfony/test/unit/cache/sfFileCacheTest.php new file mode 100644 index 0000000..799e1ae --- /dev/null +++ b/lib/vendor/symfony/test/unit/cache/sfFileCacheTest.php @@ -0,0 +1,40 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); +require_once(dirname(__FILE__).'/sfCacheDriverTests.class.php'); + +$t = new lime_test(65); + +// setup +sfConfig::set('sf_logging_enabled', false); +$temp = tempnam('/tmp/cache_dir', 'tmp'); +unlink($temp); +mkdir($temp); + +// ->initialize() +$t->diag('->initialize()'); +try +{ + $cache = new sfFileCache(); + $t->fail('->initialize() throws an sfInitializationException exception if you don\'t pass a "cache_dir" parameter'); +} +catch (sfInitializationException $e) +{ + $t->pass('->initialize() throws an sfInitializationException exception if you don\'t pass a "cache_dir" parameter'); +} + +$cache = new sfFileCache(array('cache_dir' => $temp)); + +sfCacheDriverTests::launch($t, $cache); + +// teardown +sfToolkit::clearDirectory($temp); +rmdir($temp); diff --git a/lib/vendor/symfony/test/unit/cache/sfFunctionCacheTest.php b/lib/vendor/symfony/test/unit/cache/sfFunctionCacheTest.php new file mode 100644 index 0000000..5010f57 --- /dev/null +++ b/lib/vendor/symfony/test/unit/cache/sfFunctionCacheTest.php @@ -0,0 +1,109 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); +require_once(dirname(__FILE__).'/sfCacheDriverTests.class.php'); + +$t = new lime_test(15); + +class sfSimpleCache extends sfCache +{ + public $data = array(); + + public function get($key, $default = null) + { + return isset($this->data[$key]) ? $this->data[$key] : $default; + } + + public function set($key, $data, $lifetime = null) + { + $this->data[$key] = $data; + } + + public function remove($key) + { + unset($this->data[$key]); + } + + public function removePattern($pattern, $delimiter = ':') + { + $this->data = array(); + } + + public function has($key) + { + return isset($this->data[$key]); + } + + public function clean($mode = sfCache::ALL) + { + $this->data = array(); + } + + public function getLastModified($key) + { + return 0; + } + + public function getTimeout($key) + { + return 0; + } +} + +class testFunctionCache +{ + static $count = 0; + + static function test($arg1, $arg2) + { + ++self::$count; + + return $arg1.$arg2; + } +} + +$count = 0; +function testFunctionCache($arg1, $arg2) +{ + global $count; + + ++$count; + + return $arg1.$arg2; +} + +// ->call() +$t->diag('->call()'); + +$cache = new sfSimpleCache(); +$functionCache = new sfFunctionCache($cache); +$result = testFunctionCache(1, 2); +$t->is($count, 1); +$t->is($functionCache->call('testFunctionCache', array(1, 2)), $result, '->call() works with functions'); +$t->is($count, 2); +$t->is($functionCache->call('testFunctionCache', array(1, 2)), $result, '->call() stores the function call in cache'); +$t->is($count, 2); + +$result = testFunctionCache::test(1, 2); +$t->is(testFunctionCache::$count, 1); +$t->is($functionCache->call(array('testFunctionCache', 'test'), array(1, 2)), $result, '->call() works with static method calls'); +$t->is(testFunctionCache::$count, 2); +$t->is($functionCache->call(array('testFunctionCache', 'test'), array(1, 2)), $result, '->call() stores the function call in cache'); +$t->is(testFunctionCache::$count, 2); + +testFunctionCache::$count = 0; +$object = new testFunctionCache(); +$result = $object->test(1, 2); +$t->is(testFunctionCache::$count, 1); +$t->is($functionCache->call(array($object, 'test'), array(1, 2)), $result, '->call() works with object methods'); +$t->is(testFunctionCache::$count, 2); +$t->is($functionCache->call(array($object, 'test'), array(1, 2)), $result, '->call() stores the function call in cache'); +$t->is(testFunctionCache::$count, 2); diff --git a/lib/vendor/symfony/test/unit/cache/sfMemcacheCacheTest.php b/lib/vendor/symfony/test/unit/cache/sfMemcacheCacheTest.php new file mode 100644 index 0000000..7ac1707 --- /dev/null +++ b/lib/vendor/symfony/test/unit/cache/sfMemcacheCacheTest.php @@ -0,0 +1,69 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); + +$plan = 73; +$t = new lime_test($plan); + +if (!class_exists('Memcache')) +{ + $t->skip('Memcache needed to run these tests', $plan); + return; +} + +require_once(dirname(__FILE__).'/sfCacheDriverTests.class.php'); + +// setup +sfConfig::set('sf_logging_enabled', false); + +// ->initialize() +$t->diag('->initialize()'); +try +{ + $cache = new sfMemcacheCache(array('storeCacheInfo' => true)); +} +catch (sfInitializationException $e) +{ + $t->skip('Memcached must be active to run these tests', $plan); + return; +} + +sfCacheDriverTests::launch($t, $cache); + +// ->remove() test for ticket #6220 +$t->diag('->remove() test for ticket #6220'); +$backend = $cache->getBackend(); +$prefix = $cache->getOption('prefix'); +$cache->clean(); +$cache->set('test_1', 'abc'); +$cache->set('test_2', 'abc'); +$cache->remove('test_1'); +$cacheInfo = $backend->get($prefix.'_metadata'); +$t->ok(is_array($cacheInfo),'Cache info is an array'); +$t->is(count($cacheInfo),1,'Cache info contains 1 element'); +$t->ok(!in_array($prefix.'test_1',$cacheInfo),'Cache info no longer contains the removed key'); +$t->ok(in_array($prefix.'test_2',$cacheInfo),'Cache info still contains the key that was not removed'); + +// ->removePattern() test for ticket #6220 +$t->diag('->removePattern() test for ticket #6220'); +$backend = $cache->getBackend(); +$prefix = $cache->getOption('prefix'); +$cache->clean(); +$cache->set('test_1', 'abc'); +$cache->set('test_2', 'abc'); +$cache->set('test3', 'abc'); +$cache->removePattern('test_*'); +$cacheInfo = $backend->get($prefix.'_metadata'); +$t->ok(is_array($cacheInfo),'Cache info is an array'); +$t->is(count($cacheInfo),1,'Cache info contains 1 element'); +$t->ok(!in_array($prefix.'test_1',$cacheInfo),'Cache info no longer contains the key that matches the pattern (first key)'); +$t->ok(!in_array($prefix.'test_2',$cacheInfo),'Cache info no longer contains the key that matches the pattern (second key)'); +$t->ok(in_array($prefix.'test3',$cacheInfo),'Cache info still contains the key that did not match the pattern (third key)'); \ No newline at end of file diff --git a/lib/vendor/symfony/test/unit/cache/sfNoCacheTest.php b/lib/vendor/symfony/test/unit/cache/sfNoCacheTest.php new file mode 100644 index 0000000..5d9b9ab --- /dev/null +++ b/lib/vendor/symfony/test/unit/cache/sfNoCacheTest.php @@ -0,0 +1,28 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); + +$t = new lime_test(8); + +// ->initialize() +$t->diag('->initialize()'); +$cache = new sfNoCache(); + +// ->get() ->set() ->has() ->remove() ->removePattern() ->clean() ->getLastModified() ->getTimeout() +$t->diag('->get() ->set() ->has() ->remove() ->removePattern() ->clean() ->getLastModified() ->getTimeout()'); +$t->is($cache->get('foo'), null, '->get() always returns "null"'); +$t->is($cache->set('foo', 'bar'), true, '->set() always returns "true"'); +$t->is($cache->has('foo'), false, '->has() always returns "false"'); +$t->is($cache->remove('foo'), true, '->remove() always returns "true"'); +$t->is($cache->removePattern('**'), true, '->removePattern() always returns "true"'); +$t->is($cache->clean(), true, '->clean() always returns "true"'); +$t->is($cache->getLastModified('foo'), 0, '->getLastModified() always returns "0"'); +$t->is($cache->getTimeout('foo'), 0, '->getTimeout() always returns "0"'); diff --git a/lib/vendor/symfony/test/unit/cache/sfSQLiteCacheTest.php b/lib/vendor/symfony/test/unit/cache/sfSQLiteCacheTest.php new file mode 100644 index 0000000..4780ea9 --- /dev/null +++ b/lib/vendor/symfony/test/unit/cache/sfSQLiteCacheTest.php @@ -0,0 +1,55 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); +require_once(dirname(__FILE__).'/sfCacheDriverTests.class.php'); + +$plan = 129; +$t = new lime_test($plan); + +if (!extension_loaded('SQLite') && !extension_loaded('pdo_SQLite')) +{ + $t->skip('SQLite extension not loaded, skipping tests', $plan); + return; +} + +try +{ + new sfSQLiteCache(array('database' => ':memory:')); +} +catch (sfInitializationException $e) +{ + $t->skip($e->getMessage(), $plan); + return; +} + +// ->initialize() +$t->diag('->initialize()'); +try +{ + $cache = new sfSQLiteCache(); + $t->fail('->initialize() throws an sfInitializationException exception if you don\'t pass a "database" parameter'); +} +catch (sfInitializationException $e) +{ + $t->pass('->initialize() throws an sfInitializationException exception if you don\'t pass a "database" parameter'); +} + +// database in memory +$cache = new sfSQLiteCache(array('database' => ':memory:')); + +sfCacheDriverTests::launch($t, $cache); + +// database on disk +$database = tempnam('/tmp/cachedir', 'tmp'); +unlink($database); +$cache = new sfSQLiteCache(array('database' => $database)); +sfCacheDriverTests::launch($t, $cache); +unlink($database); diff --git a/lib/vendor/symfony/test/unit/cache/sfXCacheCacheTest.php b/lib/vendor/symfony/test/unit/cache/sfXCacheCacheTest.php new file mode 100644 index 0000000..30a0842 --- /dev/null +++ b/lib/vendor/symfony/test/unit/cache/sfXCacheCacheTest.php @@ -0,0 +1,36 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); + +$plan = 64; +$t = new lime_test($plan); + +try +{ + new sfXCacheCache(); +} +catch (sfInitializationException $e) +{ + $t->skip($e->getMessage(), $plan); + return; +} + +require_once(dirname(__FILE__).'/sfCacheDriverTests.class.php'); + +// setup +sfConfig::set('sf_logging_enabled', false); + +// ->initialize() +$t->diag('->initialize()'); +$cache = new sfXCacheCache(); +$cache->initialize(); + +sfCacheDriverTests::launch($t, $cache); diff --git a/lib/vendor/symfony/test/unit/command/.svn/all-wcprops b/lib/vendor/symfony/test/unit/command/.svn/all-wcprops new file mode 100644 index 0000000..bfc6d56 --- /dev/null +++ b/lib/vendor/symfony/test/unit/command/.svn/all-wcprops @@ -0,0 +1,35 @@ +K 25 +svn:wc:ra_dav:version-url +V 46 +/!svn/ver/23881/branches/1.4/test/unit/command +END +sfCommandArgumentTest.php +K 25 +svn:wc:ra_dav:version-url +V 72 +/!svn/ver/23881/branches/1.4/test/unit/command/sfCommandArgumentTest.php +END +sfCommandOptionSetTest.php +K 25 +svn:wc:ra_dav:version-url +V 73 +/!svn/ver/23881/branches/1.4/test/unit/command/sfCommandOptionSetTest.php +END +sfCommandOptionTest.php +K 25 +svn:wc:ra_dav:version-url +V 70 +/!svn/ver/23881/branches/1.4/test/unit/command/sfCommandOptionTest.php +END +sfCommandManagerTest.php +K 25 +svn:wc:ra_dav:version-url +V 71 +/!svn/ver/23881/branches/1.4/test/unit/command/sfCommandManagerTest.php +END +sfCommandArgumentSetTest.php +K 25 +svn:wc:ra_dav:version-url +V 75 +/!svn/ver/23881/branches/1.4/test/unit/command/sfCommandArgumentSetTest.php +END diff --git a/lib/vendor/symfony/test/unit/command/.svn/entries b/lib/vendor/symfony/test/unit/command/.svn/entries new file mode 100644 index 0000000..7a6e786 --- /dev/null +++ b/lib/vendor/symfony/test/unit/command/.svn/entries @@ -0,0 +1,198 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/unit/command +http://svn.symfony-project.com + + + +2009-06-25T06:35:13.766150Z +19531 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +sfCommandArgumentTest.php +file + + + + +2012-05-10T18:40:47.878597Z +e8317d1bfe377d6bd623c31525d1165b +2009-06-25T06:35:13.766150Z +19531 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +3869 + +sfCommandOptionSetTest.php +file + + + + +2012-05-10T18:40:47.878597Z +cafc20119ad0821ca6d7d1424ee5f797 +2009-06-25T06:35:13.766150Z +19531 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +5648 + +sfCommandOptionTest.php +file + + + + +2012-05-10T18:40:48.269800Z +22538f19b83d1ec8a4fb52bde7d684a0 +2009-06-25T06:35:13.766150Z +19531 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +6490 + +sfCommandManagerTest.php +file + + + + +2012-05-10T18:40:48.273550Z +dd7c7116b3a5c10cabed2a74ff1c1af7 +2009-06-25T06:35:13.766150Z +19531 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +7476 + +sfCommandArgumentSetTest.php +file + + + + +2012-05-10T18:40:48.309569Z +ad1c99af21c7d510b10d2ae194f181af +2009-06-25T06:35:13.766150Z +19531 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +6110 + diff --git a/lib/vendor/symfony/test/unit/command/.svn/prop-base/sfCommandArgumentSetTest.php.svn-base b/lib/vendor/symfony/test/unit/command/.svn/prop-base/sfCommandArgumentSetTest.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/unit/command/.svn/prop-base/sfCommandArgumentSetTest.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/unit/command/.svn/prop-base/sfCommandArgumentTest.php.svn-base b/lib/vendor/symfony/test/unit/command/.svn/prop-base/sfCommandArgumentTest.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/unit/command/.svn/prop-base/sfCommandArgumentTest.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/unit/command/.svn/prop-base/sfCommandManagerTest.php.svn-base b/lib/vendor/symfony/test/unit/command/.svn/prop-base/sfCommandManagerTest.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/unit/command/.svn/prop-base/sfCommandManagerTest.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/unit/command/.svn/prop-base/sfCommandOptionSetTest.php.svn-base b/lib/vendor/symfony/test/unit/command/.svn/prop-base/sfCommandOptionSetTest.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/unit/command/.svn/prop-base/sfCommandOptionSetTest.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/unit/command/.svn/prop-base/sfCommandOptionTest.php.svn-base b/lib/vendor/symfony/test/unit/command/.svn/prop-base/sfCommandOptionTest.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/unit/command/.svn/prop-base/sfCommandOptionTest.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/unit/command/.svn/text-base/sfCommandArgumentSetTest.php.svn-base b/lib/vendor/symfony/test/unit/command/.svn/text-base/sfCommandArgumentSetTest.php.svn-base new file mode 100644 index 0000000..68faad9 --- /dev/null +++ b/lib/vendor/symfony/test/unit/command/.svn/text-base/sfCommandArgumentSetTest.php.svn-base @@ -0,0 +1,142 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); + +$t = new lime_test(21); + +$foo = new sfCommandArgument('foo'); +$bar = new sfCommandArgument('bar'); +$foo1 = new sfCommandArgument('foo'); +$foo2 = new sfCommandArgument('foo2', sfCommandArgument::REQUIRED); + +// __construct() +$t->diag('__construct()'); +$argumentSet = new sfCommandArgumentSet(); +$t->is($argumentSet->getArguments(), array(), '__construct() creates a new sfCommandArgumentSet object'); + +$argumentSet = new sfCommandArgumentSet(array($foo, $bar)); +$t->is($argumentSet->getArguments(), array('foo' => $foo, 'bar' => $bar), '__construct() takes an array of sfCommandArgument objects as its first argument'); + +// ->setArguments() +$t->diag('->setArguments()'); +$argumentSet = new sfCommandArgumentSet(); +$argumentSet->setArguments(array($foo)); +$t->is($argumentSet->getArguments(), array('foo' => $foo), '->setArguments() sets the array of sfCommandArgument objects'); +$argumentSet->setArguments(array($bar)); + +$t->is($argumentSet->getArguments(), array('bar' => $bar), '->setArguments() clears all sfCommandArgument objects'); + +// ->addArguments() +$t->diag('->addArguments()'); +$argumentSet = new sfCommandArgumentSet(); +$argumentSet->addArguments(array($foo)); +$t->is($argumentSet->getArguments(), array('foo' => $foo), '->addArguments() adds an array of sfCommandArgument objects'); +$argumentSet->addArguments(array($bar)); +$t->is($argumentSet->getArguments(), array('foo' => $foo, 'bar' => $bar), '->addArguments() does not clear existing sfCommandArgument objects'); + +// ->addArgument() +$t->diag('->addArgument()'); +$argumentSet = new sfCommandArgumentSet(); +$argumentSet->addArgument($foo); +$t->is($argumentSet->getArguments(), array('foo' => $foo), '->addArgument() adds a sfCommandArgument object'); +$argumentSet->addArgument($bar); +$t->is($argumentSet->getArguments(), array('foo' => $foo, 'bar' => $bar), '->addArgument() adds a sfCommandArgument object'); + +// arguments must have different names +try +{ + $argumentSet->addArgument($foo1); + $t->fail('->addArgument() throws a sfCommandException if another argument is already registered with the same name'); +} +catch (sfCommandException $e) +{ + $t->pass('->addArgument() throws a sfCommandException if another argument is already registered with the same name'); +} + +// cannot add a parameter after an array parameter +$argumentSet->addArgument(new sfCommandArgument('fooarray', sfCommandArgument::IS_ARRAY)); +try +{ + $argumentSet->addArgument(new sfCommandArgument('anotherbar')); + $t->fail('->addArgument() throws a sfCommandException if there is an array parameter already registered'); +} +catch (sfCommandException $e) +{ + $t->pass('->addArgument() throws a sfCommandException if there is an array parameter already registered'); +} + +// cannot add a required argument after an optional one +$argumentSet = new sfCommandArgumentSet(); +$argumentSet->addArgument($foo); +try +{ + $argumentSet->addArgument($foo2); + $t->fail('->addArgument() throws an exception if you try to add a required argument after an optional one'); +} +catch (sfCommandException $e) +{ + $t->pass('->addArgument() throws an exception if you try to add a required argument after an optional one'); +} + +// ->getArgument() +$t->diag('->getArgument()'); +$argumentSet = new sfCommandArgumentSet(); +$argumentSet->addArguments(array($foo)); +$t->is($argumentSet->getArgument('foo'), $foo, '->getArgument() returns a sfCommandArgument by its name'); +try +{ + $argumentSet->getArgument('bar'); + $t->fail('->getArgument() throws an exception if the Argument name does not exist'); +} +catch (sfCommandException $e) +{ + $t->pass('->getArgument() throws an exception if the Argument name does not exist'); +} + +// ->hasArgument() +$t->diag('->hasArgument()'); +$argumentSet = new sfCommandArgumentSet(); +$argumentSet->addArguments(array($foo)); +$t->is($argumentSet->hasArgument('foo'), true, '->hasArgument() returns true if a sfCommandArgument exists for the given name'); +$t->is($argumentSet->hasArgument('bar'), false, '->hasArgument() returns false if a sfCommandArgument exists for the given name'); + +// ->getArgumentRequiredCount() +$t->diag('->getArgumentRequiredCount()'); +$argumentSet = new sfCommandArgumentSet(); +$argumentSet->addArgument($foo2); +$t->is($argumentSet->getArgumentRequiredCount(), 1, '->getArgumentRequiredCount() returns the number of required arguments'); +$argumentSet->addArgument($foo); +$t->is($argumentSet->getArgumentRequiredCount(), 1, '->getArgumentRequiredCount() returns the number of required arguments'); + +// ->getArgumentCount() +$t->diag('->getArgumentCount()'); +$argumentSet = new sfCommandArgumentSet(); +$argumentSet->addArgument($foo2); +$t->is($argumentSet->getArgumentCount(), 1, '->getArgumentCount() returns the number of arguments'); +$argumentSet->addArgument($foo); +$t->is($argumentSet->getArgumentCount(), 2, '->getArgumentCount() returns the number of arguments'); + +// ->getDefaults() +$t->diag('->getDefaults()'); +$argumentSet = new sfCommandArgumentSet(); +$argumentSet->addArguments(array( + new sfCommandArgument('foo1', sfCommandArgument::OPTIONAL), + new sfCommandArgument('foo2', sfCommandArgument::OPTIONAL, '', 'default'), + new sfCommandArgument('foo3', sfCommandArgument::OPTIONAL | sfCommandArgument::IS_ARRAY), +// new sfCommandArgument('foo4', sfCommandArgument::OPTIONAL | sfCommandArgument::IS_ARRAY, '', array(1, 2)), +)); +$t->is($argumentSet->getDefaults(), array('foo1' => null, 'foo2' => 'default', 'foo3' => array()), '->getDefaults() return the default values for each argument'); + +$argumentSet = new sfCommandArgumentSet(); +$argumentSet->addArguments(array( + new sfCommandArgument('foo4', sfCommandArgument::OPTIONAL | sfCommandArgument::IS_ARRAY, '', array(1, 2)), +)); +$t->is($argumentSet->getDefaults(), array('foo4' => array(1, 2)), '->getDefaults() return the default values for each argument'); diff --git a/lib/vendor/symfony/test/unit/command/.svn/text-base/sfCommandArgumentTest.php.svn-base b/lib/vendor/symfony/test/unit/command/.svn/text-base/sfCommandArgumentTest.php.svn-base new file mode 100644 index 0000000..ebd7d4f --- /dev/null +++ b/lib/vendor/symfony/test/unit/command/.svn/text-base/sfCommandArgumentTest.php.svn-base @@ -0,0 +1,94 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); + +$t = new lime_test(16); + +// __construct() +$t->diag('__construct()'); +$argument = new sfCommandArgument('foo'); +$t->is($argument->getName(), 'foo', '__construct() takes a name as its first argument'); + +// mode argument +$argument = new sfCommandArgument('foo'); +$t->is($argument->isRequired(), false, '__construct() gives a "sfCommandArgument::OPTIONAL" mode by default'); + +$argument = new sfCommandArgument('foo', null); +$t->is($argument->isRequired(), false, '__construct() can take "sfCommandArgument::OPTIONAL" as its mode'); + +$argument = new sfCommandArgument('foo', sfCommandArgument::OPTIONAL); +$t->is($argument->isRequired(), false, '__construct() can take "sfCommandArgument::PARAMETER_OPTIONAL" as its mode'); + +$argument = new sfCommandArgument('foo', sfCommandArgument::REQUIRED); +$t->is($argument->isRequired(), true, '__construct() can take "sfCommandArgument::PARAMETER_REQUIRED" as its mode'); + +try +{ + $argument = new sfCommandArgument('foo', 'ANOTHER_ONE'); + $t->fail('__construct() throws an sfCommandException if the mode is not valid'); +} +catch (sfCommandException $e) +{ + $t->pass('__construct() throws an sfCommandException if the mode is not valid'); +} + +// ->isArray() +$t->diag('->isArray()'); +$argument = new sfCommandArgument('foo', sfCommandArgument::IS_ARRAY); +$t->ok($argument->isArray(), '->isArray() returns true if the argument can be an array'); +$argument = new sfCommandArgument('foo', sfCommandArgument::OPTIONAL | sfCommandArgument::IS_ARRAY); +$t->ok($argument->isArray(), '->isArray() returns true if the argument can be an array'); +$argument = new sfCommandArgument('foo', sfCommandArgument::OPTIONAL); +$t->ok(!$argument->isArray(), '->isArray() returns false if the argument can not be an array'); + +// ->getHelp() +$t->diag('->getHelp()'); +$argument = new sfCommandArgument('foo', null, 'Some help'); +$t->is($argument->getHelp(), 'Some help', '->getHelp() return the message help'); + +// ->getDefault() +$t->diag('->getDefault()'); +$argument = new sfCommandArgument('foo', sfCommandArgument::OPTIONAL, '', 'default'); +$t->is($argument->getDefault(), 'default', '->getDefault() return the default value'); + +// ->setDefault() +$t->diag('->setDefault()'); +$argument = new sfCommandArgument('foo', sfCommandArgument::OPTIONAL, '', 'default'); +$argument->setDefault(null); +$t->ok(is_null($argument->getDefault()), '->setDefault() can reset the default value by passing null'); +$argument->setDefault('another'); +$t->is($argument->getDefault(), 'another', '->setDefault() changes the default value'); + +$argument = new sfCommandArgument('foo', sfCommandArgument::OPTIONAL | sfCommandArgument::IS_ARRAY); +$argument->setDefault(array(1, 2)); +$t->is($argument->getDefault(), array(1, 2), '->setDefault() changes the default value'); + +try +{ + $argument = new sfCommandArgument('foo', sfCommandArgument::REQUIRED); + $argument->setDefault('default'); + $t->fail('->setDefault() throws an sfCommandException if you give a default value for a required argument'); +} +catch (sfCommandException $e) +{ + $t->pass('->setDefault() throws an sfCommandException if you give a default value for a required argument'); +} + +try +{ + $argument = new sfCommandArgument('foo', sfCommandArgument::IS_ARRAY); + $argument->setDefault('default'); + $t->fail('->setDefault() throws an sfCommandException if you give a default value which is not an array for a IS_ARRAY option'); +} +catch (sfCommandException $e) +{ + $t->pass('->setDefault() throws an sfCommandException if you give a default value which is not an array for a IS_ARRAY option'); +} diff --git a/lib/vendor/symfony/test/unit/command/.svn/text-base/sfCommandManagerTest.php.svn-base b/lib/vendor/symfony/test/unit/command/.svn/text-base/sfCommandManagerTest.php.svn-base new file mode 100644 index 0000000..a4fd426 --- /dev/null +++ b/lib/vendor/symfony/test/unit/command/.svn/text-base/sfCommandManagerTest.php.svn-base @@ -0,0 +1,166 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); + +$t = new lime_test(41); + +// __construct() +$t->diag('__construct()'); +$argumentSet = new sfCommandArgumentSet(); +$optionSet = new sfCommandOptionSet(); + +$manager = new sfCommandManager(); +$t->isa_ok($manager->getArgumentSet(), 'sfCommandArgumentSet', '__construct() creates a new sfCommandArgumentsSet if none given'); +$t->isa_ok($manager->getOptionSet(), 'sfCommandOptionSet', '__construct() creates a new sfCommandOptionSet if none given'); + +$manager = new sfCommandManager($argumentSet); +$t->is($manager->getArgumentSet(), $argumentSet, '__construct() takes a sfCommandArgumentSet as its first argument'); +$t->isa_ok($manager->getOptionSet(), 'sfCommandOptionSet', '__construct() takes a sfCommandArgumentSet as its first argument'); + +$manager = new sfCommandManager($argumentSet, $optionSet); +$t->is($manager->getOptionSet(), $optionSet, '__construct() can take a sfCommandOptionSet as its second argument'); + +// ->setArgumentSet() ->getArgumentSet() +$t->diag('->setArgumentSet() ->getArgumentSet()'); +$manager = new sfCommandManager(new sfCommandArgumentSet()); +$argumentSet = new sfCommandArgumentSet(); +$manager->setArgumentSet($argumentSet); +$t->is($manager->getArgumentSet(), $argumentSet, '->setArgumentSet() sets the manager argument set'); + +// ->setOptionSet() ->getOptionSet() +$t->diag('->setOptionSet() ->getOptionSet()'); +$manager = new sfCommandManager(new sfCommandArgumentSet()); +$optionSet = new sfCommandOptionSet(); +$manager->setOptionSet($optionSet); +$t->is($manager->getOptionSet(), $optionSet, '->setOptionSet() sets the manager option set'); + +// ->process() +$t->diag('->process()'); +$argumentSet = new sfCommandArgumentSet(array( + new sfCommandArgument('foo1', sfCommandArgument::REQUIRED), + new sfCommandArgument('foo2', sfCommandArgument::OPTIONAL | sfCommandArgument::IS_ARRAY), +)); +$optionSet = new sfCommandOptionSet(array( + new sfCommandOption('foo1', null, sfCommandOption::PARAMETER_NONE), + new sfCommandOption('foo2', 'f', sfCommandOption::PARAMETER_NONE), + new sfCommandOption('foo3', null, sfCommandOption::PARAMETER_OPTIONAL, '', 'default3'), + new sfCommandOption('foo4', null, sfCommandOption::PARAMETER_OPTIONAL, '', 'default4'), + new sfCommandOption('foo5', null, sfCommandOption::PARAMETER_OPTIONAL, '', 'default5'), + new sfCommandOption('foo6', 'r', sfCommandOption::PARAMETER_REQUIRED, '', 'default5'), + new sfCommandOption('foo7', 't', sfCommandOption::PARAMETER_REQUIRED, '', 'default7'), + new sfCommandOption('foo8', null, sfCommandOption::PARAMETER_REQUIRED | sfCommandOption::IS_ARRAY), + new sfCommandOption('foo9', 's', sfCommandOption::PARAMETER_OPTIONAL, '', 'default9'), + new sfCommandOption('foo10', 'u', sfCommandOption::PARAMETER_OPTIONAL, '', 'default10'), + new sfCommandOption('foo11', 'v', sfCommandOption::PARAMETER_OPTIONAL, '', 'default11'), +)); +$manager = new sfCommandManager($argumentSet, $optionSet); +$manager->process('--foo1 -f --foo3 --foo4="foo4" --foo5=foo5 -r"foo6 foo6" -t foo7 --foo8="foo" --foo8=bar -s -u foo10 -vfoo11 foo1 foo2 foo3 foo4'); +$options = array( + 'foo1' => true, + 'foo2' => true, + 'foo3' => 'default3', + 'foo4' => 'foo4', + 'foo5' => 'foo5', + 'foo6' => 'foo6 foo6', + 'foo7' => 'foo7', + 'foo8' => array('foo', 'bar'), + 'foo9' => 'default9', + 'foo10' => 'foo10', + 'foo11' => 'foo11', +); +$arguments = array( + 'foo1' => 'foo1', + 'foo2' => array('foo2', 'foo3', 'foo4') +); +$t->ok($manager->isValid(), '->process() processes CLI options'); +$t->is($manager->getOptionValues(), $options, '->process() processes CLI options'); +$t->is($manager->getArgumentValues(), $arguments, '->process() processes CLI options'); + +// ->getOptionValue() +$t->diag('->getOptionValue()'); +foreach ($options as $name => $value) +{ + $t->is($manager->getOptionValue($name), $value, '->getOptionValue() returns the value for the given option name'); +} + +try +{ + $manager->getOptionValue('nonexistant'); + $t->fail('->getOptionValue() throws a sfCommandException if the option name does not exist'); +} +catch (sfCommandException $e) +{ + $t->pass('->getOptionValue() throws a sfCommandException if the option name does not exist'); +} + +// ->getArgumentValue() +$t->diag('->getArgumentValue()'); +foreach ($arguments as $name => $value) +{ + $t->is($manager->getArgumentValue($name), $value, '->getArgumentValue() returns the value for the given argument name'); +} + +try +{ + $manager->getArgumentValue('nonexistant'); + $t->fail('->getArgumentValue() throws a sfCommandException if the argument name does not exist'); +} +catch (sfCommandException $e) +{ + $t->pass('->getArgumentValue() throws a sfCommandException if the argument name does not exist'); +} + +// ->isValid() ->getErrors() +$t->diag('->isValid() ->getErrors()'); +$argumentSet = new sfCommandArgumentSet(); +$manager = new sfCommandManager($argumentSet); +$manager->process('foo'); +$t->ok(!$manager->isValid(), '->isValid() returns false if the options are not valid'); +$t->is(count($manager->getErrors()), 1, '->getErrors() returns an array of errors'); + +$argumentSet = new sfCommandArgumentSet(array(new sfCommandArgument('foo', sfCommandArgument::REQUIRED))); +$manager = new sfCommandManager($argumentSet); +$manager->process(''); +$t->ok(!$manager->isValid(), '->isValid() returns false if the options are not valid'); +$t->is(count($manager->getErrors()), 1, '->getErrors() returns an array of errors'); + +$optionSet = new sfCommandOptionSet(array(new sfCommandOption('foo', null, sfCommandOption::PARAMETER_REQUIRED))); +$manager = new sfCommandManager(null, $optionSet); +$manager->process('--foo'); +$t->ok(!$manager->isValid(), '->isValid() returns false if the options are not valid'); +$t->is(count($manager->getErrors()), 1, '->getErrors() returns an array of errors'); + +$optionSet = new sfCommandOptionSet(array(new sfCommandOption('foo', 'f', sfCommandOption::PARAMETER_REQUIRED))); +$manager = new sfCommandManager(null, $optionSet); +$manager->process('-f'); +$t->ok(!$manager->isValid(), '->isValid() returns false if the options are not valid'); +$t->is(count($manager->getErrors()), 1, '->getErrors() returns an array of errors'); + +$optionSet = new sfCommandOptionSet(array(new sfCommandOption('foo', null, sfCommandOption::PARAMETER_NONE))); +$manager = new sfCommandManager(null, $optionSet); +$manager->process('--foo="bar"'); +$t->ok(!$manager->isValid(), '->isValid() returns false if the options are not valid'); +$t->is(count($manager->getErrors()), 1, '->getErrors() returns an array of errors'); + +$manager = new sfCommandManager(); +$manager->process('--bar'); +$t->ok(!$manager->isValid(), '->isValid() returns false if the options are not valid'); +$t->is(count($manager->getErrors()), 1, '->getErrors() returns an array of errors'); + +$manager = new sfCommandManager(); +$manager->process('-b'); +$t->ok(!$manager->isValid(), '->isValid() returns false if the options are not valid'); +$t->is(count($manager->getErrors()), 1, '->getErrors() returns an array of errors'); + +$manager = new sfCommandManager(); +$manager->process('--bar="foo"'); +$t->ok(!$manager->isValid(), '->isValid() returns false if the options are not valid'); +$t->is(count($manager->getErrors()), 1, '->getErrors() returns an array of errors'); diff --git a/lib/vendor/symfony/test/unit/command/.svn/text-base/sfCommandOptionSetTest.php.svn-base b/lib/vendor/symfony/test/unit/command/.svn/text-base/sfCommandOptionSetTest.php.svn-base new file mode 100644 index 0000000..f7de2b2 --- /dev/null +++ b/lib/vendor/symfony/test/unit/command/.svn/text-base/sfCommandOptionSetTest.php.svn-base @@ -0,0 +1,144 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); + +$t = new lime_test(20); + +$foo = new sfCommandOption('foo', 'f'); +$bar = new sfCommandOption('bar', 'b'); +$foo1 = new sfCommandOption('fooBis', 'f'); +$foo2 = new sfCommandOption('foo', 'p'); + +// __construct() +$t->diag('__construct()'); +$optionSet = new sfCommandOptionSet(); +$t->is($optionSet->getOptions(), array(), '__construct() creates a new sfCommandOptionSet object'); + +$optionSet = new sfCommandOptionSet(array($foo, $bar)); +$t->is($optionSet->getOptions(), array('foo' => $foo, 'bar' => $bar), '__construct() takes an array of sfCommandOption objects as its first argument'); + +// ->setOptions() +$t->diag('->setOptions()'); +$optionSet = new sfCommandOptionSet(); +$optionSet->setOptions(array($foo)); +$t->is($optionSet->getOptions(), array('foo' => $foo), '->setOptions() sets the array of sfCommandOption objects'); +$optionSet->setOptions(array($bar)); +$t->is($optionSet->getOptions(), array('bar' => $bar), '->setOptions() clears all sfCommandOption objects'); +try +{ + $optionSet->getOptionForShortcut('f'); + $t->fail('->setOptions() clears all sfCommandOption objects'); +} +catch (sfCommandException $e) +{ + $t->pass('->setOptions() clears all sfCommandOption objects'); +} + +// ->addOptions() +$t->diag('->addOptions()'); +$optionSet = new sfCommandOptionSet(); +$optionSet->addOptions(array($foo)); +$t->is($optionSet->getOptions(), array('foo' => $foo), '->addOptions() adds an array of sfCommandOption objects'); +$optionSet->addOptions(array($bar)); +$t->is($optionSet->getOptions(), array('foo' => $foo, 'bar' => $bar), '->addOptions() does not clear existing sfCommandOption objects'); + +// ->addOption() +$t->diag('->addOption()'); +$optionSet = new sfCommandOptionSet(); +$optionSet->addOption($foo); +$t->is($optionSet->getOptions(), array('foo' => $foo), '->addOption() adds a sfCommandOption object'); +$optionSet->addOption($bar); +$t->is($optionSet->getOptions(), array('foo' => $foo, 'bar' => $bar), '->addOption() adds a sfCommandOption object'); +try +{ + $optionSet->addOption($foo2); + $t->fail('->addOption() throws a sfCommandException if the another option is already registered with the same name'); +} +catch (sfCommandException $e) +{ + $t->pass('->addOption() throws a sfCommandException if the another option is already registered with the same name'); +} +try +{ + $optionSet->addOption($foo1); + $t->fail('->addOption() throws a sfCommandException if the another option is already registered with the same shortcut'); +} +catch (sfCommandException $e) +{ + $t->pass('->addOption() throws a sfCommandException if the another option is already registered with the same shortcut'); +} + +// ->getOption() +$t->diag('->getOption()'); +$optionSet = new sfCommandOptionSet(); +$optionSet->addOptions(array($foo)); +$t->is($optionSet->getOption('foo'), $foo, '->getOption() returns a sfCommandOption by its name'); +try +{ + $optionSet->getOption('bar'); + $t->fail('->getOption() throws an exception if the option name does not exist'); +} +catch (sfCommandException $e) +{ + $t->pass('->getOption() throws an exception if the option name does not exist'); +} + +// ->hasOption() +$t->diag('->hasOption()'); +$optionSet = new sfCommandOptionSet(); +$optionSet->addOptions(array($foo)); +$t->is($optionSet->hasOption('foo'), true, '->hasOption() returns true if a sfCommandOption exists for the given name'); +$t->is($optionSet->hasOption('bar'), false, '->hasOption() returns false if a sfCommandOption exists for the given name'); + +// ->hasShortcut() +$t->diag('->hasShortcut()'); +$optionSet = new sfCommandOptionSet(); +$optionSet->addOptions(array($foo)); +$t->is($optionSet->hasShortcut('f'), true, '->hasShortcut() returns true if a sfCommandOption exists for the given shortcut'); +$t->is($optionSet->hasShortcut('b'), false, '->hasShortcut() returns false if a sfCommandOption exists for the given shortcut'); + +// ->getOptionForShortcut() +$t->diag('->getOptionForShortcut()'); +$optionSet = new sfCommandOptionSet(); +$optionSet->addOptions(array($foo)); +$t->is($optionSet->getOptionForShortcut('f'), $foo, '->getOptionForShortcut() returns a sfCommandOption by its shortcut'); +try +{ + $optionSet->getOptionForShortcut('l'); + $t->fail('->getOption() throws an exception if the shortcut does not exist'); +} +catch (sfCommandException $e) +{ + $t->pass('->getOption() throws an exception if the shortcut does not exist'); +} + +// ->getDefaults() +$t->diag('->getDefaults()'); +$optionSet = new sfCommandOptionSet(); +$optionSet->addOptions(array( + new sfCommandOption('foo1', null, sfCommandOption::PARAMETER_NONE), + new sfCommandOption('foo2', null, sfCommandOption::PARAMETER_REQUIRED), + new sfCommandOption('foo3', null, sfCommandOption::PARAMETER_REQUIRED, '', 'default'), + new sfCommandOption('foo4', null, sfCommandOption::PARAMETER_OPTIONAL), + new sfCommandOption('foo5', null, sfCommandOption::PARAMETER_OPTIONAL, '', 'default'), + new sfCommandOption('foo6', null, sfCommandOption::PARAMETER_OPTIONAL | sfCommandOption::IS_ARRAY), + new sfCommandOption('foo7', null, sfCommandOption::PARAMETER_OPTIONAL | sfCommandOption::IS_ARRAY, '', array(1, 2)), +)); +$defaults = array( + 'foo1' => null, + 'foo2' => null, + 'foo3' => 'default', + 'foo4' => null, + 'foo5' => 'default', + 'foo6' => array(), + 'foo7' => array(1, 2), +); +$t->is($optionSet->getDefaults(), $defaults, '->getDefaults() returns the default values for all options'); diff --git a/lib/vendor/symfony/test/unit/command/.svn/text-base/sfCommandOptionTest.php.svn-base b/lib/vendor/symfony/test/unit/command/.svn/text-base/sfCommandOptionTest.php.svn-base new file mode 100644 index 0000000..d1fa9ed --- /dev/null +++ b/lib/vendor/symfony/test/unit/command/.svn/text-base/sfCommandOptionTest.php.svn-base @@ -0,0 +1,127 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); + +$t = new lime_test(34); + +// __construct() +$t->diag('__construct()'); +$option = new sfCommandOption('foo'); +$t->is($option->getName(), 'foo', '__construct() takes a name as its first argument'); +$option = new sfCommandOption('--foo'); +$t->is($option->getName(), 'foo', '__construct() removes the leading -- of the option name'); + +// shortcut argument +$option = new sfCommandOption('foo', 'f'); +$t->is($option->getShortcut(), 'f', '__construct() can take a shortcut as its second argument'); +$option = new sfCommandOption('foo', '-f'); +$t->is($option->getShortcut(), 'f', '__construct() removes the leading - of the shortcut'); + +// mode argument +$option = new sfCommandOption('foo', 'f'); +$t->is($option->acceptParameter(), false, '__construct() gives a "sfCommandOption::PARAMETER_NONE" mode by default'); +$t->is($option->isParameterRequired(), false, '__construct() gives a "sfCommandOption::PARAMETER_NONE" mode by default'); +$t->is($option->isParameterOptional(), false, '__construct() gives a "sfCommandOption::PARAMETER_NONE" mode by default'); + +$option = new sfCommandOption('foo', 'f', null); +$t->is($option->acceptParameter(), false, '__construct() can take "sfCommandOption::PARAMETER_NONE" as its mode'); +$t->is($option->isParameterRequired(), false, '__construct() can take "sfCommandOption::PARAMETER_NONE" as its mode'); +$t->is($option->isParameterOptional(), false, '__construct() can take "sfCommandOption::PARAMETER_NONE" as its mode'); + +$option = new sfCommandOption('foo', 'f', sfCommandOption::PARAMETER_NONE); +$t->is($option->acceptParameter(), false, '__construct() can take "sfCommandOption::PARAMETER_NONE" as its mode'); +$t->is($option->isParameterRequired(), false, '__construct() can take "sfCommandOption::PARAMETER_NONE" as its mode'); +$t->is($option->isParameterOptional(), false, '__construct() can take "sfCommandOption::PARAMETER_NONE" as its mode'); + +$option = new sfCommandOption('foo', 'f', sfCommandOption::PARAMETER_REQUIRED); +$t->is($option->acceptParameter(), true, '__construct() can take "sfCommandOption::PARAMETER_REQUIRED" as its mode'); +$t->is($option->isParameterRequired(), true, '__construct() can take "sfCommandOption::PARAMETER_REQUIRED" as its mode'); +$t->is($option->isParameterOptional(), false, '__construct() can take "sfCommandOption::PARAMETER_REQUIRED" as its mode'); + +$option = new sfCommandOption('foo', 'f', sfCommandOption::PARAMETER_OPTIONAL); +$t->is($option->acceptParameter(), true, '__construct() can take "sfCommandOption::PARAMETER_OPTIONAL" as its mode'); +$t->is($option->isParameterRequired(), false, '__construct() can take "sfCommandOption::PARAMETER_OPTIONAL" as its mode'); +$t->is($option->isParameterOptional(), true, '__construct() can take "sfCommandOption::PARAMETER_OPTIONAL" as its mode'); + +try +{ + $option = new sfCommandOption('foo', 'f', 'ANOTHER_ONE'); + $t->fail('__construct() throws an sfCommandException if the mode is not valid'); +} +catch (sfCommandException $e) +{ + $t->pass('__construct() throws an sfCommandException if the mode is not valid'); +} + +// ->isArray() +$t->diag('->isArray()'); +$option = new sfCommandOption('foo', null, sfCommandOption::IS_ARRAY); +$t->ok($option->isArray(), '->isArray() returns true if the option can be an array'); +$option = new sfCommandOption('foo', null, sfCommandOption::PARAMETER_NONE | sfCommandOption::IS_ARRAY); +$t->ok($option->isArray(), '->isArray() returns true if the option can be an array'); +$option = new sfCommandOption('foo', null, sfCommandOption::PARAMETER_NONE); +$t->ok(!$option->isArray(), '->isArray() returns false if the option can not be an array'); + +// ->getHelp() +$t->diag('->getHelp()'); +$option = new sfCommandOption('foo', 'f', null, 'Some help'); +$t->is($option->getHelp(), 'Some help', '->getHelp() returns the help message'); + +// ->getDefault() +$t->diag('->getDefault()'); +$option = new sfCommandOption('foo', null, sfCommandOption::PARAMETER_OPTIONAL, '', 'default'); +$t->is($option->getDefault(), 'default', '->getDefault() returns the default value'); + +$option = new sfCommandOption('foo', null, sfCommandOption::PARAMETER_REQUIRED, '', 'default'); +$t->is($option->getDefault(), 'default', '->getDefault() returns the default value'); + +$option = new sfCommandOption('foo', null, sfCommandOption::PARAMETER_REQUIRED); +$t->ok(is_null($option->getDefault()), '->getDefault() returns null if no default value is configured'); + +$option = new sfCommandOption('foo', null, sfCommandOption::IS_ARRAY); +$t->is($option->getDefault(), array(), '->getDefault() returns an empty array if option is an array'); + +$option = new sfCommandOption('foo', null, sfCommandOption::PARAMETER_NONE); +$t->ok($option->getDefault() === false, '->getDefault() returns false if the option does not take a parameter'); + +// ->setDefault() +$t->diag('->setDefault()'); +$option = new sfCommandOption('foo', null, sfCommandOption::PARAMETER_REQUIRED, '', 'default'); +$option->setDefault(null); +$t->ok(is_null($option->getDefault()), '->setDefault() can reset the default value by passing null'); +$option->setDefault('another'); +$t->is($option->getDefault(), 'another', '->setDefault() changes the default value'); + +$option = new sfCommandOption('foo', null, sfCommandOption::PARAMETER_REQUIRED | sfCommandOption::IS_ARRAY); +$option->setDefault(array(1, 2)); +$t->is($option->getDefault(), array(1, 2), '->setDefault() changes the default value'); + +try +{ + $option = new sfCommandOption('foo', 'f', sfCommandOption::PARAMETER_NONE); + $option->setDefault('default'); + $t->fail('->setDefault() throws an sfCommandException if you give a default value for a PARAMETER_NONE option'); +} +catch (sfCommandException $e) +{ + $t->pass('->setDefault() throws an sfCommandException if you give a default value for a PARAMETER_NONE option'); +} + +try +{ + $option = new sfCommandOption('foo', 'f', sfCommandOption::IS_ARRAY); + $option->setDefault('default'); + $t->fail('->setDefault() throws an sfCommandException if you give a default value which is not an array for a IS_ARRAY option'); +} +catch (sfCommandException $e) +{ + $t->pass('->setDefault() throws an sfCommandException if you give a default value which is not an array for a IS_ARRAY option'); +} diff --git a/lib/vendor/symfony/test/unit/command/sfCommandArgumentSetTest.php b/lib/vendor/symfony/test/unit/command/sfCommandArgumentSetTest.php new file mode 100644 index 0000000..68faad9 --- /dev/null +++ b/lib/vendor/symfony/test/unit/command/sfCommandArgumentSetTest.php @@ -0,0 +1,142 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); + +$t = new lime_test(21); + +$foo = new sfCommandArgument('foo'); +$bar = new sfCommandArgument('bar'); +$foo1 = new sfCommandArgument('foo'); +$foo2 = new sfCommandArgument('foo2', sfCommandArgument::REQUIRED); + +// __construct() +$t->diag('__construct()'); +$argumentSet = new sfCommandArgumentSet(); +$t->is($argumentSet->getArguments(), array(), '__construct() creates a new sfCommandArgumentSet object'); + +$argumentSet = new sfCommandArgumentSet(array($foo, $bar)); +$t->is($argumentSet->getArguments(), array('foo' => $foo, 'bar' => $bar), '__construct() takes an array of sfCommandArgument objects as its first argument'); + +// ->setArguments() +$t->diag('->setArguments()'); +$argumentSet = new sfCommandArgumentSet(); +$argumentSet->setArguments(array($foo)); +$t->is($argumentSet->getArguments(), array('foo' => $foo), '->setArguments() sets the array of sfCommandArgument objects'); +$argumentSet->setArguments(array($bar)); + +$t->is($argumentSet->getArguments(), array('bar' => $bar), '->setArguments() clears all sfCommandArgument objects'); + +// ->addArguments() +$t->diag('->addArguments()'); +$argumentSet = new sfCommandArgumentSet(); +$argumentSet->addArguments(array($foo)); +$t->is($argumentSet->getArguments(), array('foo' => $foo), '->addArguments() adds an array of sfCommandArgument objects'); +$argumentSet->addArguments(array($bar)); +$t->is($argumentSet->getArguments(), array('foo' => $foo, 'bar' => $bar), '->addArguments() does not clear existing sfCommandArgument objects'); + +// ->addArgument() +$t->diag('->addArgument()'); +$argumentSet = new sfCommandArgumentSet(); +$argumentSet->addArgument($foo); +$t->is($argumentSet->getArguments(), array('foo' => $foo), '->addArgument() adds a sfCommandArgument object'); +$argumentSet->addArgument($bar); +$t->is($argumentSet->getArguments(), array('foo' => $foo, 'bar' => $bar), '->addArgument() adds a sfCommandArgument object'); + +// arguments must have different names +try +{ + $argumentSet->addArgument($foo1); + $t->fail('->addArgument() throws a sfCommandException if another argument is already registered with the same name'); +} +catch (sfCommandException $e) +{ + $t->pass('->addArgument() throws a sfCommandException if another argument is already registered with the same name'); +} + +// cannot add a parameter after an array parameter +$argumentSet->addArgument(new sfCommandArgument('fooarray', sfCommandArgument::IS_ARRAY)); +try +{ + $argumentSet->addArgument(new sfCommandArgument('anotherbar')); + $t->fail('->addArgument() throws a sfCommandException if there is an array parameter already registered'); +} +catch (sfCommandException $e) +{ + $t->pass('->addArgument() throws a sfCommandException if there is an array parameter already registered'); +} + +// cannot add a required argument after an optional one +$argumentSet = new sfCommandArgumentSet(); +$argumentSet->addArgument($foo); +try +{ + $argumentSet->addArgument($foo2); + $t->fail('->addArgument() throws an exception if you try to add a required argument after an optional one'); +} +catch (sfCommandException $e) +{ + $t->pass('->addArgument() throws an exception if you try to add a required argument after an optional one'); +} + +// ->getArgument() +$t->diag('->getArgument()'); +$argumentSet = new sfCommandArgumentSet(); +$argumentSet->addArguments(array($foo)); +$t->is($argumentSet->getArgument('foo'), $foo, '->getArgument() returns a sfCommandArgument by its name'); +try +{ + $argumentSet->getArgument('bar'); + $t->fail('->getArgument() throws an exception if the Argument name does not exist'); +} +catch (sfCommandException $e) +{ + $t->pass('->getArgument() throws an exception if the Argument name does not exist'); +} + +// ->hasArgument() +$t->diag('->hasArgument()'); +$argumentSet = new sfCommandArgumentSet(); +$argumentSet->addArguments(array($foo)); +$t->is($argumentSet->hasArgument('foo'), true, '->hasArgument() returns true if a sfCommandArgument exists for the given name'); +$t->is($argumentSet->hasArgument('bar'), false, '->hasArgument() returns false if a sfCommandArgument exists for the given name'); + +// ->getArgumentRequiredCount() +$t->diag('->getArgumentRequiredCount()'); +$argumentSet = new sfCommandArgumentSet(); +$argumentSet->addArgument($foo2); +$t->is($argumentSet->getArgumentRequiredCount(), 1, '->getArgumentRequiredCount() returns the number of required arguments'); +$argumentSet->addArgument($foo); +$t->is($argumentSet->getArgumentRequiredCount(), 1, '->getArgumentRequiredCount() returns the number of required arguments'); + +// ->getArgumentCount() +$t->diag('->getArgumentCount()'); +$argumentSet = new sfCommandArgumentSet(); +$argumentSet->addArgument($foo2); +$t->is($argumentSet->getArgumentCount(), 1, '->getArgumentCount() returns the number of arguments'); +$argumentSet->addArgument($foo); +$t->is($argumentSet->getArgumentCount(), 2, '->getArgumentCount() returns the number of arguments'); + +// ->getDefaults() +$t->diag('->getDefaults()'); +$argumentSet = new sfCommandArgumentSet(); +$argumentSet->addArguments(array( + new sfCommandArgument('foo1', sfCommandArgument::OPTIONAL), + new sfCommandArgument('foo2', sfCommandArgument::OPTIONAL, '', 'default'), + new sfCommandArgument('foo3', sfCommandArgument::OPTIONAL | sfCommandArgument::IS_ARRAY), +// new sfCommandArgument('foo4', sfCommandArgument::OPTIONAL | sfCommandArgument::IS_ARRAY, '', array(1, 2)), +)); +$t->is($argumentSet->getDefaults(), array('foo1' => null, 'foo2' => 'default', 'foo3' => array()), '->getDefaults() return the default values for each argument'); + +$argumentSet = new sfCommandArgumentSet(); +$argumentSet->addArguments(array( + new sfCommandArgument('foo4', sfCommandArgument::OPTIONAL | sfCommandArgument::IS_ARRAY, '', array(1, 2)), +)); +$t->is($argumentSet->getDefaults(), array('foo4' => array(1, 2)), '->getDefaults() return the default values for each argument'); diff --git a/lib/vendor/symfony/test/unit/command/sfCommandArgumentTest.php b/lib/vendor/symfony/test/unit/command/sfCommandArgumentTest.php new file mode 100644 index 0000000..ebd7d4f --- /dev/null +++ b/lib/vendor/symfony/test/unit/command/sfCommandArgumentTest.php @@ -0,0 +1,94 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); + +$t = new lime_test(16); + +// __construct() +$t->diag('__construct()'); +$argument = new sfCommandArgument('foo'); +$t->is($argument->getName(), 'foo', '__construct() takes a name as its first argument'); + +// mode argument +$argument = new sfCommandArgument('foo'); +$t->is($argument->isRequired(), false, '__construct() gives a "sfCommandArgument::OPTIONAL" mode by default'); + +$argument = new sfCommandArgument('foo', null); +$t->is($argument->isRequired(), false, '__construct() can take "sfCommandArgument::OPTIONAL" as its mode'); + +$argument = new sfCommandArgument('foo', sfCommandArgument::OPTIONAL); +$t->is($argument->isRequired(), false, '__construct() can take "sfCommandArgument::PARAMETER_OPTIONAL" as its mode'); + +$argument = new sfCommandArgument('foo', sfCommandArgument::REQUIRED); +$t->is($argument->isRequired(), true, '__construct() can take "sfCommandArgument::PARAMETER_REQUIRED" as its mode'); + +try +{ + $argument = new sfCommandArgument('foo', 'ANOTHER_ONE'); + $t->fail('__construct() throws an sfCommandException if the mode is not valid'); +} +catch (sfCommandException $e) +{ + $t->pass('__construct() throws an sfCommandException if the mode is not valid'); +} + +// ->isArray() +$t->diag('->isArray()'); +$argument = new sfCommandArgument('foo', sfCommandArgument::IS_ARRAY); +$t->ok($argument->isArray(), '->isArray() returns true if the argument can be an array'); +$argument = new sfCommandArgument('foo', sfCommandArgument::OPTIONAL | sfCommandArgument::IS_ARRAY); +$t->ok($argument->isArray(), '->isArray() returns true if the argument can be an array'); +$argument = new sfCommandArgument('foo', sfCommandArgument::OPTIONAL); +$t->ok(!$argument->isArray(), '->isArray() returns false if the argument can not be an array'); + +// ->getHelp() +$t->diag('->getHelp()'); +$argument = new sfCommandArgument('foo', null, 'Some help'); +$t->is($argument->getHelp(), 'Some help', '->getHelp() return the message help'); + +// ->getDefault() +$t->diag('->getDefault()'); +$argument = new sfCommandArgument('foo', sfCommandArgument::OPTIONAL, '', 'default'); +$t->is($argument->getDefault(), 'default', '->getDefault() return the default value'); + +// ->setDefault() +$t->diag('->setDefault()'); +$argument = new sfCommandArgument('foo', sfCommandArgument::OPTIONAL, '', 'default'); +$argument->setDefault(null); +$t->ok(is_null($argument->getDefault()), '->setDefault() can reset the default value by passing null'); +$argument->setDefault('another'); +$t->is($argument->getDefault(), 'another', '->setDefault() changes the default value'); + +$argument = new sfCommandArgument('foo', sfCommandArgument::OPTIONAL | sfCommandArgument::IS_ARRAY); +$argument->setDefault(array(1, 2)); +$t->is($argument->getDefault(), array(1, 2), '->setDefault() changes the default value'); + +try +{ + $argument = new sfCommandArgument('foo', sfCommandArgument::REQUIRED); + $argument->setDefault('default'); + $t->fail('->setDefault() throws an sfCommandException if you give a default value for a required argument'); +} +catch (sfCommandException $e) +{ + $t->pass('->setDefault() throws an sfCommandException if you give a default value for a required argument'); +} + +try +{ + $argument = new sfCommandArgument('foo', sfCommandArgument::IS_ARRAY); + $argument->setDefault('default'); + $t->fail('->setDefault() throws an sfCommandException if you give a default value which is not an array for a IS_ARRAY option'); +} +catch (sfCommandException $e) +{ + $t->pass('->setDefault() throws an sfCommandException if you give a default value which is not an array for a IS_ARRAY option'); +} diff --git a/lib/vendor/symfony/test/unit/command/sfCommandManagerTest.php b/lib/vendor/symfony/test/unit/command/sfCommandManagerTest.php new file mode 100644 index 0000000..a4fd426 --- /dev/null +++ b/lib/vendor/symfony/test/unit/command/sfCommandManagerTest.php @@ -0,0 +1,166 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); + +$t = new lime_test(41); + +// __construct() +$t->diag('__construct()'); +$argumentSet = new sfCommandArgumentSet(); +$optionSet = new sfCommandOptionSet(); + +$manager = new sfCommandManager(); +$t->isa_ok($manager->getArgumentSet(), 'sfCommandArgumentSet', '__construct() creates a new sfCommandArgumentsSet if none given'); +$t->isa_ok($manager->getOptionSet(), 'sfCommandOptionSet', '__construct() creates a new sfCommandOptionSet if none given'); + +$manager = new sfCommandManager($argumentSet); +$t->is($manager->getArgumentSet(), $argumentSet, '__construct() takes a sfCommandArgumentSet as its first argument'); +$t->isa_ok($manager->getOptionSet(), 'sfCommandOptionSet', '__construct() takes a sfCommandArgumentSet as its first argument'); + +$manager = new sfCommandManager($argumentSet, $optionSet); +$t->is($manager->getOptionSet(), $optionSet, '__construct() can take a sfCommandOptionSet as its second argument'); + +// ->setArgumentSet() ->getArgumentSet() +$t->diag('->setArgumentSet() ->getArgumentSet()'); +$manager = new sfCommandManager(new sfCommandArgumentSet()); +$argumentSet = new sfCommandArgumentSet(); +$manager->setArgumentSet($argumentSet); +$t->is($manager->getArgumentSet(), $argumentSet, '->setArgumentSet() sets the manager argument set'); + +// ->setOptionSet() ->getOptionSet() +$t->diag('->setOptionSet() ->getOptionSet()'); +$manager = new sfCommandManager(new sfCommandArgumentSet()); +$optionSet = new sfCommandOptionSet(); +$manager->setOptionSet($optionSet); +$t->is($manager->getOptionSet(), $optionSet, '->setOptionSet() sets the manager option set'); + +// ->process() +$t->diag('->process()'); +$argumentSet = new sfCommandArgumentSet(array( + new sfCommandArgument('foo1', sfCommandArgument::REQUIRED), + new sfCommandArgument('foo2', sfCommandArgument::OPTIONAL | sfCommandArgument::IS_ARRAY), +)); +$optionSet = new sfCommandOptionSet(array( + new sfCommandOption('foo1', null, sfCommandOption::PARAMETER_NONE), + new sfCommandOption('foo2', 'f', sfCommandOption::PARAMETER_NONE), + new sfCommandOption('foo3', null, sfCommandOption::PARAMETER_OPTIONAL, '', 'default3'), + new sfCommandOption('foo4', null, sfCommandOption::PARAMETER_OPTIONAL, '', 'default4'), + new sfCommandOption('foo5', null, sfCommandOption::PARAMETER_OPTIONAL, '', 'default5'), + new sfCommandOption('foo6', 'r', sfCommandOption::PARAMETER_REQUIRED, '', 'default5'), + new sfCommandOption('foo7', 't', sfCommandOption::PARAMETER_REQUIRED, '', 'default7'), + new sfCommandOption('foo8', null, sfCommandOption::PARAMETER_REQUIRED | sfCommandOption::IS_ARRAY), + new sfCommandOption('foo9', 's', sfCommandOption::PARAMETER_OPTIONAL, '', 'default9'), + new sfCommandOption('foo10', 'u', sfCommandOption::PARAMETER_OPTIONAL, '', 'default10'), + new sfCommandOption('foo11', 'v', sfCommandOption::PARAMETER_OPTIONAL, '', 'default11'), +)); +$manager = new sfCommandManager($argumentSet, $optionSet); +$manager->process('--foo1 -f --foo3 --foo4="foo4" --foo5=foo5 -r"foo6 foo6" -t foo7 --foo8="foo" --foo8=bar -s -u foo10 -vfoo11 foo1 foo2 foo3 foo4'); +$options = array( + 'foo1' => true, + 'foo2' => true, + 'foo3' => 'default3', + 'foo4' => 'foo4', + 'foo5' => 'foo5', + 'foo6' => 'foo6 foo6', + 'foo7' => 'foo7', + 'foo8' => array('foo', 'bar'), + 'foo9' => 'default9', + 'foo10' => 'foo10', + 'foo11' => 'foo11', +); +$arguments = array( + 'foo1' => 'foo1', + 'foo2' => array('foo2', 'foo3', 'foo4') +); +$t->ok($manager->isValid(), '->process() processes CLI options'); +$t->is($manager->getOptionValues(), $options, '->process() processes CLI options'); +$t->is($manager->getArgumentValues(), $arguments, '->process() processes CLI options'); + +// ->getOptionValue() +$t->diag('->getOptionValue()'); +foreach ($options as $name => $value) +{ + $t->is($manager->getOptionValue($name), $value, '->getOptionValue() returns the value for the given option name'); +} + +try +{ + $manager->getOptionValue('nonexistant'); + $t->fail('->getOptionValue() throws a sfCommandException if the option name does not exist'); +} +catch (sfCommandException $e) +{ + $t->pass('->getOptionValue() throws a sfCommandException if the option name does not exist'); +} + +// ->getArgumentValue() +$t->diag('->getArgumentValue()'); +foreach ($arguments as $name => $value) +{ + $t->is($manager->getArgumentValue($name), $value, '->getArgumentValue() returns the value for the given argument name'); +} + +try +{ + $manager->getArgumentValue('nonexistant'); + $t->fail('->getArgumentValue() throws a sfCommandException if the argument name does not exist'); +} +catch (sfCommandException $e) +{ + $t->pass('->getArgumentValue() throws a sfCommandException if the argument name does not exist'); +} + +// ->isValid() ->getErrors() +$t->diag('->isValid() ->getErrors()'); +$argumentSet = new sfCommandArgumentSet(); +$manager = new sfCommandManager($argumentSet); +$manager->process('foo'); +$t->ok(!$manager->isValid(), '->isValid() returns false if the options are not valid'); +$t->is(count($manager->getErrors()), 1, '->getErrors() returns an array of errors'); + +$argumentSet = new sfCommandArgumentSet(array(new sfCommandArgument('foo', sfCommandArgument::REQUIRED))); +$manager = new sfCommandManager($argumentSet); +$manager->process(''); +$t->ok(!$manager->isValid(), '->isValid() returns false if the options are not valid'); +$t->is(count($manager->getErrors()), 1, '->getErrors() returns an array of errors'); + +$optionSet = new sfCommandOptionSet(array(new sfCommandOption('foo', null, sfCommandOption::PARAMETER_REQUIRED))); +$manager = new sfCommandManager(null, $optionSet); +$manager->process('--foo'); +$t->ok(!$manager->isValid(), '->isValid() returns false if the options are not valid'); +$t->is(count($manager->getErrors()), 1, '->getErrors() returns an array of errors'); + +$optionSet = new sfCommandOptionSet(array(new sfCommandOption('foo', 'f', sfCommandOption::PARAMETER_REQUIRED))); +$manager = new sfCommandManager(null, $optionSet); +$manager->process('-f'); +$t->ok(!$manager->isValid(), '->isValid() returns false if the options are not valid'); +$t->is(count($manager->getErrors()), 1, '->getErrors() returns an array of errors'); + +$optionSet = new sfCommandOptionSet(array(new sfCommandOption('foo', null, sfCommandOption::PARAMETER_NONE))); +$manager = new sfCommandManager(null, $optionSet); +$manager->process('--foo="bar"'); +$t->ok(!$manager->isValid(), '->isValid() returns false if the options are not valid'); +$t->is(count($manager->getErrors()), 1, '->getErrors() returns an array of errors'); + +$manager = new sfCommandManager(); +$manager->process('--bar'); +$t->ok(!$manager->isValid(), '->isValid() returns false if the options are not valid'); +$t->is(count($manager->getErrors()), 1, '->getErrors() returns an array of errors'); + +$manager = new sfCommandManager(); +$manager->process('-b'); +$t->ok(!$manager->isValid(), '->isValid() returns false if the options are not valid'); +$t->is(count($manager->getErrors()), 1, '->getErrors() returns an array of errors'); + +$manager = new sfCommandManager(); +$manager->process('--bar="foo"'); +$t->ok(!$manager->isValid(), '->isValid() returns false if the options are not valid'); +$t->is(count($manager->getErrors()), 1, '->getErrors() returns an array of errors'); diff --git a/lib/vendor/symfony/test/unit/command/sfCommandOptionSetTest.php b/lib/vendor/symfony/test/unit/command/sfCommandOptionSetTest.php new file mode 100644 index 0000000..f7de2b2 --- /dev/null +++ b/lib/vendor/symfony/test/unit/command/sfCommandOptionSetTest.php @@ -0,0 +1,144 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); + +$t = new lime_test(20); + +$foo = new sfCommandOption('foo', 'f'); +$bar = new sfCommandOption('bar', 'b'); +$foo1 = new sfCommandOption('fooBis', 'f'); +$foo2 = new sfCommandOption('foo', 'p'); + +// __construct() +$t->diag('__construct()'); +$optionSet = new sfCommandOptionSet(); +$t->is($optionSet->getOptions(), array(), '__construct() creates a new sfCommandOptionSet object'); + +$optionSet = new sfCommandOptionSet(array($foo, $bar)); +$t->is($optionSet->getOptions(), array('foo' => $foo, 'bar' => $bar), '__construct() takes an array of sfCommandOption objects as its first argument'); + +// ->setOptions() +$t->diag('->setOptions()'); +$optionSet = new sfCommandOptionSet(); +$optionSet->setOptions(array($foo)); +$t->is($optionSet->getOptions(), array('foo' => $foo), '->setOptions() sets the array of sfCommandOption objects'); +$optionSet->setOptions(array($bar)); +$t->is($optionSet->getOptions(), array('bar' => $bar), '->setOptions() clears all sfCommandOption objects'); +try +{ + $optionSet->getOptionForShortcut('f'); + $t->fail('->setOptions() clears all sfCommandOption objects'); +} +catch (sfCommandException $e) +{ + $t->pass('->setOptions() clears all sfCommandOption objects'); +} + +// ->addOptions() +$t->diag('->addOptions()'); +$optionSet = new sfCommandOptionSet(); +$optionSet->addOptions(array($foo)); +$t->is($optionSet->getOptions(), array('foo' => $foo), '->addOptions() adds an array of sfCommandOption objects'); +$optionSet->addOptions(array($bar)); +$t->is($optionSet->getOptions(), array('foo' => $foo, 'bar' => $bar), '->addOptions() does not clear existing sfCommandOption objects'); + +// ->addOption() +$t->diag('->addOption()'); +$optionSet = new sfCommandOptionSet(); +$optionSet->addOption($foo); +$t->is($optionSet->getOptions(), array('foo' => $foo), '->addOption() adds a sfCommandOption object'); +$optionSet->addOption($bar); +$t->is($optionSet->getOptions(), array('foo' => $foo, 'bar' => $bar), '->addOption() adds a sfCommandOption object'); +try +{ + $optionSet->addOption($foo2); + $t->fail('->addOption() throws a sfCommandException if the another option is already registered with the same name'); +} +catch (sfCommandException $e) +{ + $t->pass('->addOption() throws a sfCommandException if the another option is already registered with the same name'); +} +try +{ + $optionSet->addOption($foo1); + $t->fail('->addOption() throws a sfCommandException if the another option is already registered with the same shortcut'); +} +catch (sfCommandException $e) +{ + $t->pass('->addOption() throws a sfCommandException if the another option is already registered with the same shortcut'); +} + +// ->getOption() +$t->diag('->getOption()'); +$optionSet = new sfCommandOptionSet(); +$optionSet->addOptions(array($foo)); +$t->is($optionSet->getOption('foo'), $foo, '->getOption() returns a sfCommandOption by its name'); +try +{ + $optionSet->getOption('bar'); + $t->fail('->getOption() throws an exception if the option name does not exist'); +} +catch (sfCommandException $e) +{ + $t->pass('->getOption() throws an exception if the option name does not exist'); +} + +// ->hasOption() +$t->diag('->hasOption()'); +$optionSet = new sfCommandOptionSet(); +$optionSet->addOptions(array($foo)); +$t->is($optionSet->hasOption('foo'), true, '->hasOption() returns true if a sfCommandOption exists for the given name'); +$t->is($optionSet->hasOption('bar'), false, '->hasOption() returns false if a sfCommandOption exists for the given name'); + +// ->hasShortcut() +$t->diag('->hasShortcut()'); +$optionSet = new sfCommandOptionSet(); +$optionSet->addOptions(array($foo)); +$t->is($optionSet->hasShortcut('f'), true, '->hasShortcut() returns true if a sfCommandOption exists for the given shortcut'); +$t->is($optionSet->hasShortcut('b'), false, '->hasShortcut() returns false if a sfCommandOption exists for the given shortcut'); + +// ->getOptionForShortcut() +$t->diag('->getOptionForShortcut()'); +$optionSet = new sfCommandOptionSet(); +$optionSet->addOptions(array($foo)); +$t->is($optionSet->getOptionForShortcut('f'), $foo, '->getOptionForShortcut() returns a sfCommandOption by its shortcut'); +try +{ + $optionSet->getOptionForShortcut('l'); + $t->fail('->getOption() throws an exception if the shortcut does not exist'); +} +catch (sfCommandException $e) +{ + $t->pass('->getOption() throws an exception if the shortcut does not exist'); +} + +// ->getDefaults() +$t->diag('->getDefaults()'); +$optionSet = new sfCommandOptionSet(); +$optionSet->addOptions(array( + new sfCommandOption('foo1', null, sfCommandOption::PARAMETER_NONE), + new sfCommandOption('foo2', null, sfCommandOption::PARAMETER_REQUIRED), + new sfCommandOption('foo3', null, sfCommandOption::PARAMETER_REQUIRED, '', 'default'), + new sfCommandOption('foo4', null, sfCommandOption::PARAMETER_OPTIONAL), + new sfCommandOption('foo5', null, sfCommandOption::PARAMETER_OPTIONAL, '', 'default'), + new sfCommandOption('foo6', null, sfCommandOption::PARAMETER_OPTIONAL | sfCommandOption::IS_ARRAY), + new sfCommandOption('foo7', null, sfCommandOption::PARAMETER_OPTIONAL | sfCommandOption::IS_ARRAY, '', array(1, 2)), +)); +$defaults = array( + 'foo1' => null, + 'foo2' => null, + 'foo3' => 'default', + 'foo4' => null, + 'foo5' => 'default', + 'foo6' => array(), + 'foo7' => array(1, 2), +); +$t->is($optionSet->getDefaults(), $defaults, '->getDefaults() returns the default values for all options'); diff --git a/lib/vendor/symfony/test/unit/command/sfCommandOptionTest.php b/lib/vendor/symfony/test/unit/command/sfCommandOptionTest.php new file mode 100644 index 0000000..d1fa9ed --- /dev/null +++ b/lib/vendor/symfony/test/unit/command/sfCommandOptionTest.php @@ -0,0 +1,127 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); + +$t = new lime_test(34); + +// __construct() +$t->diag('__construct()'); +$option = new sfCommandOption('foo'); +$t->is($option->getName(), 'foo', '__construct() takes a name as its first argument'); +$option = new sfCommandOption('--foo'); +$t->is($option->getName(), 'foo', '__construct() removes the leading -- of the option name'); + +// shortcut argument +$option = new sfCommandOption('foo', 'f'); +$t->is($option->getShortcut(), 'f', '__construct() can take a shortcut as its second argument'); +$option = new sfCommandOption('foo', '-f'); +$t->is($option->getShortcut(), 'f', '__construct() removes the leading - of the shortcut'); + +// mode argument +$option = new sfCommandOption('foo', 'f'); +$t->is($option->acceptParameter(), false, '__construct() gives a "sfCommandOption::PARAMETER_NONE" mode by default'); +$t->is($option->isParameterRequired(), false, '__construct() gives a "sfCommandOption::PARAMETER_NONE" mode by default'); +$t->is($option->isParameterOptional(), false, '__construct() gives a "sfCommandOption::PARAMETER_NONE" mode by default'); + +$option = new sfCommandOption('foo', 'f', null); +$t->is($option->acceptParameter(), false, '__construct() can take "sfCommandOption::PARAMETER_NONE" as its mode'); +$t->is($option->isParameterRequired(), false, '__construct() can take "sfCommandOption::PARAMETER_NONE" as its mode'); +$t->is($option->isParameterOptional(), false, '__construct() can take "sfCommandOption::PARAMETER_NONE" as its mode'); + +$option = new sfCommandOption('foo', 'f', sfCommandOption::PARAMETER_NONE); +$t->is($option->acceptParameter(), false, '__construct() can take "sfCommandOption::PARAMETER_NONE" as its mode'); +$t->is($option->isParameterRequired(), false, '__construct() can take "sfCommandOption::PARAMETER_NONE" as its mode'); +$t->is($option->isParameterOptional(), false, '__construct() can take "sfCommandOption::PARAMETER_NONE" as its mode'); + +$option = new sfCommandOption('foo', 'f', sfCommandOption::PARAMETER_REQUIRED); +$t->is($option->acceptParameter(), true, '__construct() can take "sfCommandOption::PARAMETER_REQUIRED" as its mode'); +$t->is($option->isParameterRequired(), true, '__construct() can take "sfCommandOption::PARAMETER_REQUIRED" as its mode'); +$t->is($option->isParameterOptional(), false, '__construct() can take "sfCommandOption::PARAMETER_REQUIRED" as its mode'); + +$option = new sfCommandOption('foo', 'f', sfCommandOption::PARAMETER_OPTIONAL); +$t->is($option->acceptParameter(), true, '__construct() can take "sfCommandOption::PARAMETER_OPTIONAL" as its mode'); +$t->is($option->isParameterRequired(), false, '__construct() can take "sfCommandOption::PARAMETER_OPTIONAL" as its mode'); +$t->is($option->isParameterOptional(), true, '__construct() can take "sfCommandOption::PARAMETER_OPTIONAL" as its mode'); + +try +{ + $option = new sfCommandOption('foo', 'f', 'ANOTHER_ONE'); + $t->fail('__construct() throws an sfCommandException if the mode is not valid'); +} +catch (sfCommandException $e) +{ + $t->pass('__construct() throws an sfCommandException if the mode is not valid'); +} + +// ->isArray() +$t->diag('->isArray()'); +$option = new sfCommandOption('foo', null, sfCommandOption::IS_ARRAY); +$t->ok($option->isArray(), '->isArray() returns true if the option can be an array'); +$option = new sfCommandOption('foo', null, sfCommandOption::PARAMETER_NONE | sfCommandOption::IS_ARRAY); +$t->ok($option->isArray(), '->isArray() returns true if the option can be an array'); +$option = new sfCommandOption('foo', null, sfCommandOption::PARAMETER_NONE); +$t->ok(!$option->isArray(), '->isArray() returns false if the option can not be an array'); + +// ->getHelp() +$t->diag('->getHelp()'); +$option = new sfCommandOption('foo', 'f', null, 'Some help'); +$t->is($option->getHelp(), 'Some help', '->getHelp() returns the help message'); + +// ->getDefault() +$t->diag('->getDefault()'); +$option = new sfCommandOption('foo', null, sfCommandOption::PARAMETER_OPTIONAL, '', 'default'); +$t->is($option->getDefault(), 'default', '->getDefault() returns the default value'); + +$option = new sfCommandOption('foo', null, sfCommandOption::PARAMETER_REQUIRED, '', 'default'); +$t->is($option->getDefault(), 'default', '->getDefault() returns the default value'); + +$option = new sfCommandOption('foo', null, sfCommandOption::PARAMETER_REQUIRED); +$t->ok(is_null($option->getDefault()), '->getDefault() returns null if no default value is configured'); + +$option = new sfCommandOption('foo', null, sfCommandOption::IS_ARRAY); +$t->is($option->getDefault(), array(), '->getDefault() returns an empty array if option is an array'); + +$option = new sfCommandOption('foo', null, sfCommandOption::PARAMETER_NONE); +$t->ok($option->getDefault() === false, '->getDefault() returns false if the option does not take a parameter'); + +// ->setDefault() +$t->diag('->setDefault()'); +$option = new sfCommandOption('foo', null, sfCommandOption::PARAMETER_REQUIRED, '', 'default'); +$option->setDefault(null); +$t->ok(is_null($option->getDefault()), '->setDefault() can reset the default value by passing null'); +$option->setDefault('another'); +$t->is($option->getDefault(), 'another', '->setDefault() changes the default value'); + +$option = new sfCommandOption('foo', null, sfCommandOption::PARAMETER_REQUIRED | sfCommandOption::IS_ARRAY); +$option->setDefault(array(1, 2)); +$t->is($option->getDefault(), array(1, 2), '->setDefault() changes the default value'); + +try +{ + $option = new sfCommandOption('foo', 'f', sfCommandOption::PARAMETER_NONE); + $option->setDefault('default'); + $t->fail('->setDefault() throws an sfCommandException if you give a default value for a PARAMETER_NONE option'); +} +catch (sfCommandException $e) +{ + $t->pass('->setDefault() throws an sfCommandException if you give a default value for a PARAMETER_NONE option'); +} + +try +{ + $option = new sfCommandOption('foo', 'f', sfCommandOption::IS_ARRAY); + $option->setDefault('default'); + $t->fail('->setDefault() throws an sfCommandException if you give a default value which is not an array for a IS_ARRAY option'); +} +catch (sfCommandException $e) +{ + $t->pass('->setDefault() throws an sfCommandException if you give a default value which is not an array for a IS_ARRAY option'); +} diff --git a/lib/vendor/symfony/test/unit/config/.svn/all-wcprops b/lib/vendor/symfony/test/unit/config/.svn/all-wcprops new file mode 100644 index 0000000..c23257b --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/.svn/all-wcprops @@ -0,0 +1,65 @@ +K 25 +svn:wc:ra_dav:version-url +V 45 +/!svn/ver/24039/branches/1.4/test/unit/config +END +sfSimpleYamlConfigHandlerTest.php +K 25 +svn:wc:ra_dav:version-url +V 79 +/!svn/ver/23881/branches/1.4/test/unit/config/sfSimpleYamlConfigHandlerTest.php +END +sfConfigHandlerTest.php +K 25 +svn:wc:ra_dav:version-url +V 69 +/!svn/ver/23881/branches/1.4/test/unit/config/sfConfigHandlerTest.php +END +sfDefineEnvironmentConfigHandlerTest.php +K 25 +svn:wc:ra_dav:version-url +V 86 +/!svn/ver/23881/branches/1.4/test/unit/config/sfDefineEnvironmentConfigHandlerTest.php +END +sfConfigTest.php +K 25 +svn:wc:ra_dav:version-url +V 62 +/!svn/ver/23881/branches/1.4/test/unit/config/sfConfigTest.php +END +sfPluginConfigurationTest.php +K 25 +svn:wc:ra_dav:version-url +V 75 +/!svn/ver/23881/branches/1.4/test/unit/config/sfPluginConfigurationTest.php +END +sfYamlConfigHandlerTest.php +K 25 +svn:wc:ra_dav:version-url +V 73 +/!svn/ver/23881/branches/1.4/test/unit/config/sfYamlConfigHandlerTest.php +END +sfFilterConfigHandlerTest.php +K 25 +svn:wc:ra_dav:version-url +V 75 +/!svn/ver/23881/branches/1.4/test/unit/config/sfFilterConfigHandlerTest.php +END +sfGeneratorConfigHandlerTest.php +K 25 +svn:wc:ra_dav:version-url +V 78 +/!svn/ver/23881/branches/1.4/test/unit/config/sfGeneratorConfigHandlerTest.php +END +sfProjectConfigurationTest.php +K 25 +svn:wc:ra_dav:version-url +V 76 +/!svn/ver/24039/branches/1.4/test/unit/config/sfProjectConfigurationTest.php +END +sfViewConfigHandlerTest.php +K 25 +svn:wc:ra_dav:version-url +V 73 +/!svn/ver/23881/branches/1.4/test/unit/config/sfViewConfigHandlerTest.php +END diff --git a/lib/vendor/symfony/test/unit/config/.svn/entries b/lib/vendor/symfony/test/unit/config/.svn/entries new file mode 100644 index 0000000..4c00db0 --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/.svn/entries @@ -0,0 +1,371 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/unit/config +http://svn.symfony-project.com + + + +2009-11-16T17:52:14.706630Z +24039 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +sfSimpleYamlConfigHandlerTest.php +file + + + + +2012-05-10T18:40:49.826033Z +1af286f05a68fde7a4f2969f1bbc6515 +2009-06-25T06:35:13.766150Z +19531 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +1083 + +sfConfigHandlerTest.php +file + + + + +2012-05-10T18:40:49.826033Z +1d4603f3bbcb56b8588526f5735feeed +2009-06-25T06:35:13.766150Z +19531 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +2074 + +sfDefineEnvironmentConfigHandlerTest.php +file + + + + +2012-05-10T18:40:49.826033Z +8034a49d4c80e10f6d8075eca3526b25 +2009-06-25T06:35:13.766150Z +19531 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +986 + +sfConfigTest.php +file + + + + +2012-05-10T18:40:49.920114Z +dd2a0fda52a4bcc5ba2fa2ddc00e4a91 +2009-06-25T06:35:13.766150Z +19531 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +1696 + +sfPluginConfigurationTest.php +file + + + + +2012-05-10T18:40:49.920114Z +71795ba93b8a7a92b13b5bbdbae4670c +2009-09-26T11:17:45.632801Z +22450 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +3836 + +sfYamlConfigHandlerTest.php +file + + + + +2012-05-10T18:40:49.921549Z +99b9c4755a982a1edbc1799e20d66d51 +2009-06-25T06:35:13.766150Z +19531 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +2590 + +sfFilterConfigHandlerTest.php +file + + + + +2012-05-10T18:40:49.921549Z +18e553cff87542d73046d7e5660a4adb +2009-06-25T06:35:13.766150Z +19531 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +2818 + +fixtures +dir + +sfGeneratorConfigHandlerTest.php +file + + + + +2012-05-10T18:40:49.921549Z +3502aabfdd0efbc6c1fe9b26eb43811d +2009-06-25T06:35:13.766150Z +19531 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +2518 + +sfProjectConfigurationTest.php +file + + + + +2012-05-10T18:40:49.921549Z +77c0c0deaf3f9d4bce9296941227d8b3 +2009-11-16T17:52:14.706630Z +24039 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +2116 + +sfViewConfigHandlerTest.php +file + + + + +2012-05-10T18:40:49.925550Z +3f5c2d1e5629a98a073868a2847211d4 +2009-06-25T06:35:13.766150Z +19531 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +10910 + diff --git a/lib/vendor/symfony/test/unit/config/.svn/prop-base/sfConfigHandlerTest.php.svn-base b/lib/vendor/symfony/test/unit/config/.svn/prop-base/sfConfigHandlerTest.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/.svn/prop-base/sfConfigHandlerTest.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/unit/config/.svn/prop-base/sfConfigTest.php.svn-base b/lib/vendor/symfony/test/unit/config/.svn/prop-base/sfConfigTest.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/.svn/prop-base/sfConfigTest.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/unit/config/.svn/prop-base/sfDefineEnvironmentConfigHandlerTest.php.svn-base b/lib/vendor/symfony/test/unit/config/.svn/prop-base/sfDefineEnvironmentConfigHandlerTest.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/.svn/prop-base/sfDefineEnvironmentConfigHandlerTest.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/unit/config/.svn/prop-base/sfFilterConfigHandlerTest.php.svn-base b/lib/vendor/symfony/test/unit/config/.svn/prop-base/sfFilterConfigHandlerTest.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/.svn/prop-base/sfFilterConfigHandlerTest.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/unit/config/.svn/prop-base/sfGeneratorConfigHandlerTest.php.svn-base b/lib/vendor/symfony/test/unit/config/.svn/prop-base/sfGeneratorConfigHandlerTest.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/.svn/prop-base/sfGeneratorConfigHandlerTest.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/unit/config/.svn/prop-base/sfPluginConfigurationTest.php.svn-base b/lib/vendor/symfony/test/unit/config/.svn/prop-base/sfPluginConfigurationTest.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/.svn/prop-base/sfPluginConfigurationTest.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/test/unit/config/.svn/prop-base/sfProjectConfigurationTest.php.svn-base b/lib/vendor/symfony/test/unit/config/.svn/prop-base/sfProjectConfigurationTest.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/.svn/prop-base/sfProjectConfigurationTest.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/test/unit/config/.svn/prop-base/sfSimpleYamlConfigHandlerTest.php.svn-base b/lib/vendor/symfony/test/unit/config/.svn/prop-base/sfSimpleYamlConfigHandlerTest.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/.svn/prop-base/sfSimpleYamlConfigHandlerTest.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/unit/config/.svn/prop-base/sfViewConfigHandlerTest.php.svn-base b/lib/vendor/symfony/test/unit/config/.svn/prop-base/sfViewConfigHandlerTest.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/.svn/prop-base/sfViewConfigHandlerTest.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/unit/config/.svn/prop-base/sfYamlConfigHandlerTest.php.svn-base b/lib/vendor/symfony/test/unit/config/.svn/prop-base/sfYamlConfigHandlerTest.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/.svn/prop-base/sfYamlConfigHandlerTest.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/unit/config/.svn/text-base/sfConfigHandlerTest.php.svn-base b/lib/vendor/symfony/test/unit/config/.svn/text-base/sfConfigHandlerTest.php.svn-base new file mode 100644 index 0000000..38ef782 --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/.svn/text-base/sfConfigHandlerTest.php.svn-base @@ -0,0 +1,54 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); + +$t = new lime_test(8); + +class myConfigHandler extends sfConfigHandler +{ + public function execute($configFiles) {} +} + +$config = new myConfigHandler(); +$config->initialize(); + +// ->initialize() +$t->diag('->initialize()'); +$config->initialize(array('foo' => 'bar')); +$t->is($config->getParameterHolder()->get('foo'), 'bar', '->initialize() takes an array of parameters as its first argument'); + +// ::replaceConstants() +$t->diag('::replaceConstants()'); +sfConfig::set('foo', 'bar'); +$t->is(sfConfigHandler::replaceConstants('my value with a %foo% constant'), 'my value with a bar constant', '::replaceConstants() replaces constants enclosed in %'); + +$t->is(sfConfigHandler::replaceConstants('%Y/%m/%d %H:%M'), '%Y/%m/%d %H:%M', '::replaceConstants() does not replace unknown constants'); + +sfConfig::set('foo', 'bar'); +$value = array( + 'foo' => 'my value with a %foo% constant', + 'bar' => array( + 'foo' => 'my value with a %foo% constant', + ), +); +$value = sfConfigHandler::replaceConstants($value); +$t->is($value['foo'], 'my value with a bar constant', '::replaceConstants() replaces constants in arrays recursively'); +$t->is($value['bar']['foo'], 'my value with a bar constant', '::replaceConstants() replaces constants in arrays recursively'); + +// ->getParameterHolder() +$t->diag('->getParameterHolder()'); +$t->isa_ok($config->getParameterHolder(), 'sfParameterHolder', "->getParameterHolder() returns a parameter holder instance"); + +// ->replacePath() +$t->diag('->replacePath()'); +sfConfig::set('sf_app_dir', 'ROOTDIR'); +$t->is($config->replacePath('test'), 'ROOTDIR/test', '->replacePath() prefix a relative path with "sf_app_dir"'); +$t->is($config->replacePath('/test'), '/test', '->replacePath() prefix a relative path with "sf_app_dir"'); diff --git a/lib/vendor/symfony/test/unit/config/.svn/text-base/sfConfigTest.php.svn-base b/lib/vendor/symfony/test/unit/config/.svn/text-base/sfConfigTest.php.svn-base new file mode 100644 index 0000000..3cabc50 --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/.svn/text-base/sfConfigTest.php.svn-base @@ -0,0 +1,53 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); + +$t = new lime_test(9); + +// ::get() ::set() +$t->diag('::get() ::set()'); +sfConfig::clear(); + +sfConfig::set('foo', 'bar'); +$t->is(sfConfig::get('foo'), 'bar', '::get() returns the value of key config'); +$t->is(sfConfig::get('foo1', 'default_value'), 'default_value', '::get() takes a default value as its second argument'); + +// ::has() +$t->diag('::has()'); +sfConfig::clear(); +$t->is(sfConfig::has('foo'), false, '::has() returns false if the key config does not exist'); +sfConfig::set('foo', 'bar'); +$t->is(sfConfig::has('foo'), true, '::has() returns true if the key config exists'); + +// ::add() +$t->diag('::add()'); +sfConfig::clear(); + +sfConfig::set('foo', 'bar'); +sfConfig::set('foo1', 'foo1'); +sfConfig::add(array('foo' => 'foo', 'bar' => 'bar')); + +$t->is(sfConfig::get('foo'), 'foo', '::add() adds an array of config parameters'); +$t->is(sfConfig::get('bar'), 'bar', '::add() adds an array of config parameters'); +$t->is(sfConfig::get('foo1'), 'foo1', '::add() adds an array of config parameters'); + +// ::getAll() +$t->diag('::getAll()'); +sfConfig::clear(); +sfConfig::set('foo', 'bar'); +sfConfig::set('foo1', 'foo1'); + +$t->is(sfConfig::getAll(), array('foo' => 'bar', 'foo1' => 'foo1'), '::getAll() returns all config parameters'); + +// ::clear() +$t->diag('::clear()'); +sfConfig::clear(); +$t->is(sfConfig::get('foo1'), null, '::clear() removes all config parameters'); diff --git a/lib/vendor/symfony/test/unit/config/.svn/text-base/sfDefineEnvironmentConfigHandlerTest.php.svn-base b/lib/vendor/symfony/test/unit/config/.svn/text-base/sfDefineEnvironmentConfigHandlerTest.php.svn-base new file mode 100644 index 0000000..f997900 --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/.svn/text-base/sfDefineEnvironmentConfigHandlerTest.php.svn-base @@ -0,0 +1,33 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); + +sfConfig::set('sf_symfony_lib_dir', realpath(dirname(__FILE__).'/../../../lib')); + +$t = new lime_test(1); + +// prefix +$handler = new sfDefineEnvironmentConfigHandler(); +$handler->initialize(array('prefix' => 'sf_')); + +$dir = dirname(__FILE__).DIRECTORY_SEPARATOR.'fixtures'.DIRECTORY_SEPARATOR.'sfDefineEnvironmentConfigHandler'.DIRECTORY_SEPARATOR; + +$files = array( + $dir.'prefix_default.yml', + $dir.'prefix_all.yml', +); + +sfConfig::set('sf_environment', 'prod'); + +$data = $handler->execute($files); +$data = preg_replace('#date\: \d+/\d+/\d+ \d+\:\d+\:\d+#', '', $data); + +$t->is($data, str_replace("\r\n", "\n", file_get_contents($dir.'prefix_result.php'))); diff --git a/lib/vendor/symfony/test/unit/config/.svn/text-base/sfFilterConfigHandlerTest.php.svn-base b/lib/vendor/symfony/test/unit/config/.svn/text-base/sfFilterConfigHandlerTest.php.svn-base new file mode 100644 index 0000000..537f1fd --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/.svn/text-base/sfFilterConfigHandlerTest.php.svn-base @@ -0,0 +1,100 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); + +$t = new lime_test(8); + +$handler = new sfFilterConfigHandler(); +$handler->initialize(); + +$dir = dirname(__FILE__).DIRECTORY_SEPARATOR.'fixtures'.DIRECTORY_SEPARATOR.'sfFilterConfigHandler'.DIRECTORY_SEPARATOR; + +// parse errors +$t->diag('parse errors'); +$files = array( + $dir.'no_class.yml', +); + +try +{ + $data = $handler->execute($files); + $t->fail('filters.yml must have a "class" section for each filter entry'); +} +catch (sfParseException $e) +{ + $t->like($e->getMessage(), '/with missing class key/', 'filters.yml must have a "class" section for each filter entry'); +} + +// no execution/rendering filter +foreach (array('execution', 'rendering') as $key) +{ + $files = array( + $dir.sprintf('no_%s.yml', $key), + ); + + try + { + $data = $handler->execute($files); + $t->fail(sprintf('filters.yml must have a filter of type "%s"', $key)); + } + catch (sfParseException $e) + { + $t->like($e->getMessage(), sprintf('/must register a filter of type "%s"/', $key), sprintf('filters.yml must have a filter of type "%s"', $key)); + } +} + +// filter inheritance +$t->diag('filter inheritance'); +$files = array( + $dir.'default_filters.yml', + $dir.'not_disabled.yml', +); + +try +{ + $data = $handler->execute($files); + $t->fail('filters.yml must keep all filters when inheriting from a master filters configuration file'); +} +catch (sfConfigurationException $e) +{ + $t->like($e->getMessage(), '/but not present/', 'filters.yml must keep all filters when inheriting from a master filters configuration file'); +} + +// disabling a filter +$t->diag('disabling a filter'); +$files = array( + $dir.'disable.yml', +); + +$t->unlike($handler->execute($files), '/defaultFilterClass/', 'you can disable a filter by settings "enabled" to false'); + +// condition support +$t->diag('condition support'); +$files = array( + $dir.'condition.yml', +); + +sfConfig::set('default_test', true); +$t->like($handler->execute($files), '/defaultFilterClass/', 'you can add a "condition" key to the filter parameters'); + +sfConfig::set('default_test', false); +$t->unlike($handler->execute($files), '/defaultFilterClass/', 'you can add a "condition" key to the filter parameters'); + +// usual configuration +$t->diag('usual configuration'); +$files = array( + $dir.'default_filters.yml', + $dir.'filters.yml', +); + +$data = $handler->execute($files); +$data = preg_replace('#date\: \d+/\d+/\d+ \d+\:\d+\:\d+\n#', '', $data); +$t->is($data, str_replace("\r\n", "\n", file_get_contents($dir.'result.php')), 'core filters.yml can be overriden'); diff --git a/lib/vendor/symfony/test/unit/config/.svn/text-base/sfGeneratorConfigHandlerTest.php.svn-base b/lib/vendor/symfony/test/unit/config/.svn/text-base/sfGeneratorConfigHandlerTest.php.svn-base new file mode 100644 index 0000000..eead09f --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/.svn/text-base/sfGeneratorConfigHandlerTest.php.svn-base @@ -0,0 +1,96 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); + +sfConfig::set('sf_symfony_lib_dir', realpath(dirname(__FILE__).'/../../../lib')); + +$t = new lime_test(5); + +$handler = new sfGeneratorConfigHandler(); +$handler->initialize(); + +$dir = dirname(__FILE__).DIRECTORY_SEPARATOR.'fixtures'.DIRECTORY_SEPARATOR.'sfGeneratorConfigHandler'.DIRECTORY_SEPARATOR; + +$t->diag('parse errors'); +$files = array( + $dir.'empty.yml', + $dir.'no_generator_class.yml', +); + +try +{ + $data = $handler->execute($files); + $t->fail('generator.yml must have a "class" section'); +} +catch (sfParseException $e) +{ + $t->like($e->getMessage(), '/must specify a generator class section under the generator section/', 'generator.yml must have a "class" section'); +} + +$files = array( + $dir.'empty.yml', + $dir.'no_generator_section.yml', +); + +try +{ + $data = $handler->execute($files); + $t->fail('generator.yml must have a "generator" section'); +} +catch (sfParseException $e) +{ + $t->like($e->getMessage(), '/must specify a generator section/', 'generator.yml must have a "generator" section'); +} + +$files = array( + $dir.'empty.yml', + $dir.'root_fields_section.yml', +); + +try +{ + $data = $handler->execute($files); + $t->fail('generator.yml can have a "fields" section but only under "param"'); +} +catch (sfParseException $e) +{ + $t->like($e->getMessage(), '/can specify a "fields" section but only under the param section/', 'generator.yml can have a "fields" section but only under "param"'); +} + +$files = array( + $dir.'empty.yml', + $dir.'root_list_section.yml', +); + +try +{ + $data = $handler->execute($files); + $t->fail('generator.yml can have a "list" section but only under "param"'); +} +catch (sfParseException $e) +{ + $t->like($e->getMessage(), '/can specify a "list" section but only under the param section/', 'generator.yml can have a "list" section but only under "param"'); +} + +$files = array( + $dir.'empty.yml', + $dir.'root_edit_section.yml', +); + +try +{ + $data = $handler->execute($files); + $t->fail('generator.yml can have a "edit" section but only under "param"'); +} +catch (sfParseException $e) +{ + $t->like($e->getMessage(), '/can specify a "edit" section but only under the param section/', 'generator.yml can have a "edit" section but only under "param"'); +} diff --git a/lib/vendor/symfony/test/unit/config/.svn/text-base/sfPluginConfigurationTest.php.svn-base b/lib/vendor/symfony/test/unit/config/.svn/text-base/sfPluginConfigurationTest.php.svn-base new file mode 100644 index 0000000..4d07f7b --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/.svn/text-base/sfPluginConfigurationTest.php.svn-base @@ -0,0 +1,76 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once dirname(__FILE__).'/../../bootstrap/unit.php'; + +$rootDir = realpath(dirname(__FILE__).'/../../functional/fixtures'); +$pluginRoot = realpath($rootDir.'/plugins/sfAutoloadPlugin'); + +require_once $pluginRoot.'/config/sfAutoloadPluginConfiguration.class.php'; + +$t = new lime_test(9); + +class ProjectConfiguration extends sfProjectConfiguration +{ + public function setup() + { + $this->enablePlugins('sfAutoloadPlugin'); + } +} + +// ->guessRootDir() ->guessName() +$t->diag('->guessRootDir() ->guessName()'); + +$configuration = new sfProjectConfiguration($rootDir); +$pluginConfig = new sfAutoloadPluginConfiguration($configuration); + +$t->is($pluginConfig->getRootDir(), $pluginRoot, '->guessRootDir() guesses plugin root directory'); +$t->is($pluginConfig->getName(), 'sfAutoloadPlugin', '->guessName() guesses plugin name'); + +// ->filterTestFiles() +$t->diag('->filterTestFiles()'); + +// test:all +$task = new sfTestAllTask($configuration->getEventDispatcher(), new sfFormatter()); +$event = new sfEvent($task, 'task.test.filter_test_files', array('arguments' => array(), 'options' => array())); +$files = $pluginConfig->filterTestFiles($event, array()); +$t->is(count($files), 6, '->filterTestFiles() adds all plugin tests'); + +// test:functional +$task = new sfTestFunctionalTask($configuration->getEventDispatcher(), new sfFormatter()); +$event = new sfEvent($task, 'task.test.filter_test_files', array('arguments' => array('controller' => array()), 'options' => array())); +$files = $pluginConfig->filterTestFiles($event, array()); +$t->is(count($files), 3, '->filterTestFiles() adds functional plugin tests'); + +$task = new sfTestFunctionalTask($configuration->getEventDispatcher(), new sfFormatter()); +$event = new sfEvent($task, 'task.test.filter_test_files', array('arguments' => array('controller' => array('BarFunctional')), 'options' => array())); +$files = $pluginConfig->filterTestFiles($event, array()); +$t->is(count($files), 1, '->filterTestFiles() adds functional plugin tests when a controller is specified'); + +$task = new sfTestFunctionalTask($configuration->getEventDispatcher(), new sfFormatter()); +$event = new sfEvent($task, 'task.test.filter_test_files', array('arguments' => array('controller' => array('nested/NestedFunctional')), 'options' => array())); +$files = $pluginConfig->filterTestFiles($event, array()); +$t->is(count($files), 1, '->filterTestFiles() adds functional plugin tests when a nested controller is specified'); + +// test:unit +$task = new sfTestUnitTask($configuration->getEventDispatcher(), new sfFormatter()); +$event = new sfEvent($task, 'task.test.filter_test_files', array('arguments' => array('name' => array()), 'options' => array())); +$files = $pluginConfig->filterTestFiles($event, array()); +$t->is(count($files), 3, '->filterTestFiles() adds unit plugin tests'); + +$task = new sfTestUnitTask($configuration->getEventDispatcher(), new sfFormatter()); +$event = new sfEvent($task, 'task.test.filter_test_files', array('arguments' => array('name' => array('FooUnit')), 'options' => array())); +$files = $pluginConfig->filterTestFiles($event, array()); +$t->is(count($files), 1, '->filterTestFiles() adds unit plugin tests when a name is specified'); + +$task = new sfTestUnitTask($configuration->getEventDispatcher(), new sfFormatter()); +$event = new sfEvent($task, 'task.test.filter_test_files', array('arguments' => array('name' => array('nested/NestedUnit')), 'options' => array())); +$files = $pluginConfig->filterTestFiles($event, array()); +$t->is(count($files), 1, '->filterTestFiles() adds unit plugin tests when a nested name is specified'); diff --git a/lib/vendor/symfony/test/unit/config/.svn/text-base/sfProjectConfigurationTest.php.svn-base b/lib/vendor/symfony/test/unit/config/.svn/text-base/sfProjectConfigurationTest.php.svn-base new file mode 100644 index 0000000..e4f6d19 --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/.svn/text-base/sfProjectConfigurationTest.php.svn-base @@ -0,0 +1,72 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); + +$t = new lime_test(6); + +class ProjectConfiguration extends sfProjectConfiguration +{ + public function setup() + { + $this->enablePlugins(array('sfAutoloadPlugin', 'sfConfigPlugin')); + $this->setPluginPath('sfConfigPlugin', $this->rootDir.'/lib/plugins/sfConfigPlugin'); + } +} + +$configuration = new ProjectConfiguration(dirname(__FILE__).'/../../functional/fixtures'); + +// ->setPlugins() ->disablePlugins() ->enablePlugins() ->enableAllPluginsExcept() +$t->diag('->setPlugins() ->disablePlugins() ->enablePlugins() ->enableAllPluginsExcept()'); + +foreach (array('setPlugins', 'disablePlugins', 'enablePlugins', 'enableAllPluginsExcept') as $method) +{ + try + { + $configuration->$method(array()); + $t->fail('->'.$method.'() throws an exception if called too late'); + } + catch (Exception $e) + { + $t->pass('->'.$method.'() throws an exception if called too late'); + } +} + +class ProjectConfiguration2 extends sfProjectConfiguration +{ + public function setup() + { + $this->enablePlugins('sfAutoloadPlugin', 'sfConfigPlugin'); + } +} + +$configuration = new ProjectConfiguration2(dirname(__FILE__).'/../../functional/fixtures'); +$t->is_deeply($configuration->getPlugins(), array('sfAutoloadPlugin', 'sfConfigPlugin'), '->enablePlugins() can enable plugins passed as arguments instead of array'); + +// ->__construct() +$t->diag('->__construct()'); + +class ProjectConfiguration3 extends sfProjectConfiguration +{ + public function setup() + { + $this->enablePlugins('NonExistantPlugin'); + } +} + +try +{ + $configuration = new ProjectConfiguration3(dirname(__FILE__).'/../../functional/fixtures'); + $t->fail('->__construct() throws an exception if a non-existant plugin is enabled'); +} +catch (Exception $e) +{ + $t->pass('->__construct() throws an exception if a non-existant plugin is enabled'); +} diff --git a/lib/vendor/symfony/test/unit/config/.svn/text-base/sfSimpleYamlConfigHandlerTest.php.svn-base b/lib/vendor/symfony/test/unit/config/.svn/text-base/sfSimpleYamlConfigHandlerTest.php.svn-base new file mode 100644 index 0000000..0022752 --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/.svn/text-base/sfSimpleYamlConfigHandlerTest.php.svn-base @@ -0,0 +1,33 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); + +$t = new lime_test(2); + +$config = new sfSimpleYamlConfigHandler(); +$config->initialize(); + +$dir = dirname(__FILE__).DIRECTORY_SEPARATOR.'fixtures'.DIRECTORY_SEPARATOR.'sfSimpleYamlConfigHandler'.DIRECTORY_SEPARATOR; + +$array = get_retval($config, array($dir.'config.yml')); +$t->is($array['article']['title'], 'foo', '->execute() returns configuration file as an array'); + +$array = get_retval($config, array($dir.'config.yml', $dir.'config_bis.yml')); +$t->is($array['article']['title'], 'bar', '->execute() returns configuration file as an array'); + +function get_retval($config, $files) +{ + $retval = $config->execute($files); + $retval = preg_replace('#^<\?php#', '', $retval); + $retval = preg_replace('#<\?php$#s', '', $retval); + + return eval($retval); +} diff --git a/lib/vendor/symfony/test/unit/config/.svn/text-base/sfViewConfigHandlerTest.php.svn-base b/lib/vendor/symfony/test/unit/config/.svn/text-base/sfViewConfigHandlerTest.php.svn-base new file mode 100644 index 0000000..2506327 --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/.svn/text-base/sfViewConfigHandlerTest.php.svn-base @@ -0,0 +1,351 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); + +$t = new lime_test(22); + +class myViewConfigHandler extends sfViewConfigHandler +{ + public function setConfiguration($config) + { + $this->yamlConfig = self::mergeConfig($config); + } + + public function addHtmlAsset($viewName = '') + { + return parent::addHtmlAsset($viewName); + } +} + +$handler = new myViewConfigHandler(); + +// addHtmlAsset() basic asset addition +$t->diag('addHtmlAsset() basic asset addition'); + +$handler->setConfiguration(array( + 'myView' => array( + 'stylesheets' => array('foobar'), + ), +)); +$content = <<addStylesheet('foobar', '', array ()); + +EOF; +$t->is(fix_linebreaks($handler->addHtmlAsset('myView')), fix_linebreaks($content), 'addHtmlAsset() adds stylesheets to the response'); + +$handler->setConfiguration(array( + 'myView' => array( + 'stylesheets' => array(array('foobar' => array('position' => 'last'))), + ), +)); +$content = <<addStylesheet('foobar', 'last', array ()); + +EOF; +$t->is(fix_linebreaks($handler->addHtmlAsset('myView')), fix_linebreaks($content), 'addHtmlAsset() adds stylesheets to the response'); + +$handler->setConfiguration(array( + 'myView' => array( + 'javascripts' => array('foobar'), + ), +)); +$content = <<addJavascript('foobar', '', array ()); + +EOF; +$t->is(fix_linebreaks($handler->addHtmlAsset('myView')), fix_linebreaks($content), 'addHtmlAsset() adds JavaScript to the response'); + +$handler->setConfiguration(array( + 'myView' => array( + 'javascripts' => array(array('foobar' => array('position' => 'last'))), + ), +)); +$content = <<addJavascript('foobar', 'last', array ()); + +EOF; +$t->is(fix_linebreaks($handler->addHtmlAsset('myView')), fix_linebreaks($content), 'addHtmlAsset() adds JavaScript to the response'); + +// Insertion order for stylesheets +$t->diag('addHtmlAsset() insertion order for stylesheets'); + +$handler->setConfiguration(array( + 'myView' => array( + 'stylesheets' => array('foobar'), + ), + 'all' => array( + 'stylesheets' => array('all_foobar'), + ), +)); +$content = <<addStylesheet('all_foobar', '', array ()); + \$response->addStylesheet('foobar', '', array ()); + +EOF; +$t->is(fix_linebreaks($handler->addHtmlAsset('myView')), fix_linebreaks($content), 'addHtmlAsset() adds view-specific stylesheets after application-wide assets'); + +$handler->setConfiguration(array( + 'all' => array( + 'stylesheets' => array('all_foobar'), + ), + 'myView' => array( + 'stylesheets' => array('foobar'), + ), +)); +$content = <<addStylesheet('all_foobar', '', array ()); + \$response->addStylesheet('foobar', '', array ()); + +EOF; +$t->is(fix_linebreaks($handler->addHtmlAsset('myView')), fix_linebreaks($content), 'addHtmlAsset() adds view-specific stylesheets after application-wide assets'); + +$handler->setConfiguration(array( + 'myView' => array( + 'stylesheets' => array('foobar'), + ), + 'default' => array( + 'stylesheets' => array('default_foobar'), + ), +)); +$content = <<addStylesheet('default_foobar', '', array ()); + \$response->addStylesheet('foobar', '', array ()); + +EOF; +$t->is(fix_linebreaks($handler->addHtmlAsset('myView')), fix_linebreaks($content), 'addHtmlAsset() adds view-specific stylesheets after default assets'); + +$handler->setConfiguration(array( + 'default' => array( + 'stylesheets' => array('default_foobar'), + ), + 'myView' => array( + 'stylesheets' => array('foobar'), + ), +)); +$content = <<addStylesheet('default_foobar', '', array ()); + \$response->addStylesheet('foobar', '', array ()); + +EOF; +$t->is(fix_linebreaks($handler->addHtmlAsset('myView')), fix_linebreaks($content), 'addHtmlAsset() adds view-specific stylesheets after default assets'); + +$handler->setConfiguration(array( + 'default' => array( + 'stylesheets' => array('default_foobar'), + ), + 'all' => array( + 'stylesheets' => array('all_foobar'), + ), +)); +$content = <<addStylesheet('default_foobar', '', array ()); + \$response->addStylesheet('all_foobar', '', array ()); + +EOF; +$t->is(fix_linebreaks($handler->addHtmlAsset('myView')), fix_linebreaks($content), 'addHtmlAsset() adds application-specific stylesheets after default assets'); + +$handler->setConfiguration(array( + 'all' => array( + 'stylesheets' => array('all_foobar'), + ), + 'default' => array( + 'stylesheets' => array('default_foobar'), + ), +)); +$content = <<addStylesheet('default_foobar', '', array ()); + \$response->addStylesheet('all_foobar', '', array ()); + +EOF; +$t->is(fix_linebreaks($handler->addHtmlAsset('myView')), fix_linebreaks($content), 'addHtmlAsset() adds application-specific stylesheets after default assets'); + +// Insertion order for javascripts +$t->diag('addHtmlAsset() insertion order for javascripts'); + +$handler->setConfiguration(array( + 'myView' => array( + 'javascripts' => array('foobar'), + ), + 'all' => array( + 'javascripts' => array('all_foobar'), + ), +)); +$content = <<addJavascript('all_foobar', '', array ()); + \$response->addJavascript('foobar', '', array ()); + +EOF; +$t->is(fix_linebreaks($handler->addHtmlAsset('myView')), fix_linebreaks($content), 'addHtmlAsset() adds view-specific javascripts after application-wide assets'); + +$handler->setConfiguration(array( + 'all' => array( + 'javascripts' => array('all_foobar'), + ), + 'myView' => array( + 'javascripts' => array('foobar'), + ), +)); +$content = <<addJavascript('all_foobar', '', array ()); + \$response->addJavascript('foobar', '', array ()); + +EOF; +$t->is(fix_linebreaks($handler->addHtmlAsset('myView')), fix_linebreaks($content), 'addHtmlAsset() adds view-specific javascripts after application-wide assets'); + +$handler->setConfiguration(array( + 'myView' => array( + 'javascripts' => array('foobar'), + ), + 'default' => array( + 'javascripts' => array('default_foobar'), + ), +)); +$content = <<addJavascript('default_foobar', '', array ()); + \$response->addJavascript('foobar', '', array ()); + +EOF; +$t->is(fix_linebreaks($handler->addHtmlAsset('myView')), fix_linebreaks($content), 'addHtmlAsset() adds view-specific javascripts after default assets'); + +$handler->setConfiguration(array( + 'default' => array( + 'javascripts' => array('default_foobar'), + ), + 'myView' => array( + 'javascripts' => array('foobar'), + ), +)); +$content = <<addJavascript('default_foobar', '', array ()); + \$response->addJavascript('foobar', '', array ()); + +EOF; +$t->is(fix_linebreaks($handler->addHtmlAsset('myView')), fix_linebreaks($content), 'addHtmlAsset() adds view-specific javascripts after default assets'); + +$handler->setConfiguration(array( + 'default' => array( + 'javascripts' => array('default_foobar'), + ), + 'all' => array( + 'javascripts' => array('all_foobar'), + ), +)); +$content = <<addJavascript('default_foobar', '', array ()); + \$response->addJavascript('all_foobar', '', array ()); + +EOF; +$t->is(fix_linebreaks($handler->addHtmlAsset('myView')), fix_linebreaks($content), 'addHtmlAsset() adds application-specific javascripts after default assets'); + +$handler->setConfiguration(array( + 'all' => array( + 'javascripts' => array('all_foobar'), + ), + 'default' => array( + 'javascripts' => array('default_foobar'), + ), +)); +$content = <<addJavascript('default_foobar', '', array ()); + \$response->addJavascript('all_foobar', '', array ()); + +EOF; +$t->is(fix_linebreaks($handler->addHtmlAsset('myView')), fix_linebreaks($content), 'addHtmlAsset() adds application-specific javascripts after default assets'); + +// removal of assets +$t->diag('addHtmlAsset() removal of assets'); + +$handler->setConfiguration(array( + 'all' => array( + 'stylesheets' => array('all_foo', 'all_bar'), + ), + 'myView' => array( + 'stylesheets' => array('foobar', '-all_bar'), + ), +)); +$content = <<addStylesheet('all_foo', '', array ()); + \$response->addStylesheet('foobar', '', array ()); + +EOF; +$t->is(fix_linebreaks($handler->addHtmlAsset('myView')), fix_linebreaks($content), 'addHtmlAsset() supports the - option to remove one stylesheet previously added'); + +$handler->setConfiguration(array( + 'all' => array( + 'javascripts' => array('all_foo', 'all_bar'), + ), + 'myView' => array( + 'javascripts' => array('foobar', '-all_bar'), + ), +)); +$content = <<addJavascript('all_foo', '', array ()); + \$response->addJavascript('foobar', '', array ()); + +EOF; +$t->is(fix_linebreaks($handler->addHtmlAsset('myView')), fix_linebreaks($content), 'addHtmlAsset() supports the - option to remove one javascript previously added'); + +$handler->setConfiguration(array( + 'all' => array( + 'stylesheets' => array('foo', 'bar', '-*', 'baz'), + ), +)); +$content = <<addStylesheet('baz', '', array ()); + +EOF; +$t->is(fix_linebreaks($handler->addHtmlAsset('myView')), fix_linebreaks($content), 'addHtmlAsset() supports the -* option to remove all stylesheets previously added'); + +$handler->setConfiguration(array( + 'all' => array( + 'javascripts' => array('foo', 'bar', '-*', 'baz'), + ), +)); +$content = <<addJavascript('baz', '', array ()); + +EOF; +$t->is(fix_linebreaks($handler->addHtmlAsset('myView')), fix_linebreaks($content), 'addHtmlAsset() supports the -* option to remove all javascripts previously added'); + +$handler->setConfiguration(array( + 'all' => array( + 'stylesheets' => array('-*', 'foobar'), + ), + 'default' => array( + 'stylesheets' => array('default_foo', 'default_bar'), + ), +)); +$content = <<addStylesheet('foobar', '', array ()); + +EOF; +$t->is(fix_linebreaks($handler->addHtmlAsset('myView')), fix_linebreaks($content), 'addHtmlAsset() supports the -* option to remove all assets previously added'); + +$handler->setConfiguration(array( + 'myView' => array( + 'stylesheets' => array('foobar', '-*', 'bar'), + 'javascripts' => array('foobar', '-*', 'bar'), + ), + 'all' => array( + 'stylesheets' => array('all_foo', 'all_foofoo', 'all_barbar'), + 'javascripts' => array('all_foo', 'all_foofoo', 'all_barbar'), + ), + 'default' => array( + 'stylesheets' => array('default_foo', 'default_foofoo', 'default_barbar'), + 'javascripts' => array('default_foo', 'default_foofoo', 'default_barbar'), + ), +)); +$content = <<addStylesheet('bar', '', array ()); + \$response->addJavascript('bar', '', array ()); + +EOF; +$t->is(fix_linebreaks($handler->addHtmlAsset('myView')), fix_linebreaks($content), 'addHtmlAsset() supports the -* option to remove all assets previously added'); diff --git a/lib/vendor/symfony/test/unit/config/.svn/text-base/sfYamlConfigHandlerTest.php.svn-base b/lib/vendor/symfony/test/unit/config/.svn/text-base/sfYamlConfigHandlerTest.php.svn-base new file mode 100644 index 0000000..892872a --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/.svn/text-base/sfYamlConfigHandlerTest.php.svn-base @@ -0,0 +1,85 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); + +$t = new lime_test(7); + +class myConfigHandler extends sfYamlConfigHandler +{ + public $yamlConfig = null; + + public function execute($configFiles) {} + + static public function parseYamls($configFiles) + { + return parent::parseYamls($configFiles); + } + + static public function parseYaml($configFile) + { + return parent::parseYaml($configFile); + } + + public function mergeConfigValue($keyName, $category) + { + return parent::mergeConfigValue($keyName, $category); + } + + public function getConfigValue($keyName, $category, $defaultValue = null) + { + return parent::getConfigValue($keyName, $category, $defaultValue); + } +} + +$config = new myConfigHandler(); +$config->initialize(); + +// ->parseYamls() +$t->diag('->parseYamls()'); + +// ->parseYaml() +$t->diag('->parseYaml()'); + +// ->mergeConfigValue() +$t->diag('->mergeConfigValue()'); +$config->yamlConfig = array( + 'bar' => array( + 'foo' => array( + 'foo' => 'foobar', + 'bar' => 'bar', + ), + ), + 'all' => array( + 'foo' => array( + 'foo' => 'fooall', + 'barall' => 'barall', + ), + ), +); +$values = $config->mergeConfigValue('foo', 'bar'); +$t->is($values['foo'], 'foobar', '->mergeConfigValue() merges values for a given key under a given category'); +$t->is($values['bar'], 'bar', '->mergeConfigValue() merges values for a given key under a given category'); +$t->is($values['barall'], 'barall', '->mergeConfigValue() merges values for a given key under a given category'); + +// ->getConfigValue() +$t->diag('->getConfigValue()'); +$config->yamlConfig = array( + 'bar' => array( + 'foo' => 'foobar' + ), + 'all' => array( + 'foo' => 'fooall' + ), +); +$t->is($config->getConfigValue('foo', 'bar'), 'foobar', '->getConfigValue() returns the value for the key in the given category'); +$t->is($config->getConfigValue('foo', 'all'), 'fooall', '->getConfigValue() returns the value for the key in the given category'); +$t->is($config->getConfigValue('foo', 'foofoo'), 'fooall', '->getConfigValue() returns the value for the key in the "all" category if the key does not exist in the given category'); +$t->is($config->getConfigValue('foofoo', 'foofoo', 'default'), 'default', '->getConfigValue() returns the default value if key is not found in the category and in the "all" category'); diff --git a/lib/vendor/symfony/test/unit/config/fixtures/.svn/all-wcprops b/lib/vendor/symfony/test/unit/config/fixtures/.svn/all-wcprops new file mode 100644 index 0000000..acbd235 --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 54 +/!svn/ver/23881/branches/1.4/test/unit/config/fixtures +END diff --git a/lib/vendor/symfony/test/unit/config/fixtures/.svn/entries b/lib/vendor/symfony/test/unit/config/fixtures/.svn/entries new file mode 100644 index 0000000..8b81979 --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/.svn/entries @@ -0,0 +1,40 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/unit/config/fixtures +http://svn.symfony-project.com + + + +2009-10-08T15:24:02.495981Z +22876 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +sfFilterConfigHandler +dir + +sfGeneratorConfigHandler +dir + +sfSimpleYamlConfigHandler +dir + +sfDefineEnvironmentConfigHandler +dir + diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfDefineEnvironmentConfigHandler/.svn/all-wcprops b/lib/vendor/symfony/test/unit/config/fixtures/sfDefineEnvironmentConfigHandler/.svn/all-wcprops new file mode 100644 index 0000000..e01fce7 --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/sfDefineEnvironmentConfigHandler/.svn/all-wcprops @@ -0,0 +1,23 @@ +K 25 +svn:wc:ra_dav:version-url +V 87 +/!svn/ver/23881/branches/1.4/test/unit/config/fixtures/sfDefineEnvironmentConfigHandler +END +prefix_default.yml +K 25 +svn:wc:ra_dav:version-url +V 106 +/!svn/ver/23881/branches/1.4/test/unit/config/fixtures/sfDefineEnvironmentConfigHandler/prefix_default.yml +END +prefix_result.php +K 25 +svn:wc:ra_dav:version-url +V 105 +/!svn/ver/23881/branches/1.4/test/unit/config/fixtures/sfDefineEnvironmentConfigHandler/prefix_result.php +END +prefix_all.yml +K 25 +svn:wc:ra_dav:version-url +V 102 +/!svn/ver/23881/branches/1.4/test/unit/config/fixtures/sfDefineEnvironmentConfigHandler/prefix_all.yml +END diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfDefineEnvironmentConfigHandler/.svn/entries b/lib/vendor/symfony/test/unit/config/fixtures/sfDefineEnvironmentConfigHandler/.svn/entries new file mode 100644 index 0000000..55adb5b --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/sfDefineEnvironmentConfigHandler/.svn/entries @@ -0,0 +1,130 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/unit/config/fixtures/sfDefineEnvironmentConfigHandler +http://svn.symfony-project.com + + + +2009-09-11T07:38:24.815935Z +21884 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +prefix_default.yml +file + + + + +2012-05-10T18:40:49.785551Z +d689e55204735fc6ec7c08b28323c41d +2009-09-11T07:38:24.815935Z +21884 +fabien + + + + + + + + + + + + + + + + + + + + + +214 + +prefix_result.php +file + + + + +2012-05-10T18:40:49.789550Z +7c75a351c513bd4bae3745f2c6928da5 +2006-11-23T19:45:47.579432Z +2794 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +284 + +prefix_all.yml +file + + + + +2012-05-10T18:40:49.789550Z +8d19f1a5a4387d750572ea873a474c3d +2009-09-11T07:38:24.815935Z +21884 +fabien + + + + + + + + + + + + + + + + + + + + + +252 + diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfDefineEnvironmentConfigHandler/.svn/prop-base/prefix_result.php.svn-base b/lib/vendor/symfony/test/unit/config/fixtures/sfDefineEnvironmentConfigHandler/.svn/prop-base/prefix_result.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/sfDefineEnvironmentConfigHandler/.svn/prop-base/prefix_result.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfDefineEnvironmentConfigHandler/.svn/text-base/prefix_all.yml.svn-base b/lib/vendor/symfony/test/unit/config/fixtures/sfDefineEnvironmentConfigHandler/.svn/text-base/prefix_all.yml.svn-base new file mode 100644 index 0000000..e393dfd --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/sfDefineEnvironmentConfigHandler/.svn/text-base/prefix_all.yml.svn-base @@ -0,0 +1,15 @@ +prod: + .settings: + i18n: true + +all: + .actions: + error_404_module: default + error_404_action: error404 + + .settings: + available: false + + i18n: false + + enabled_modules: [default, user] diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfDefineEnvironmentConfigHandler/.svn/text-base/prefix_default.yml.svn-base b/lib/vendor/symfony/test/unit/config/fixtures/sfDefineEnvironmentConfigHandler/.svn/text-base/prefix_default.yml.svn-base new file mode 100644 index 0000000..d311626 --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/sfDefineEnvironmentConfigHandler/.svn/text-base/prefix_default.yml.svn-base @@ -0,0 +1,11 @@ +default: + .actions: + error_404_module: default + error_404_action: error404 + + .settings: + available: true + + i18n: false + + enabled_modules: [default] diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfDefineEnvironmentConfigHandler/.svn/text-base/prefix_result.php.svn-base b/lib/vendor/symfony/test/unit/config/fixtures/sfDefineEnvironmentConfigHandler/.svn/text-base/prefix_result.php.svn-base new file mode 100644 index 0000000..1700f31 --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/sfDefineEnvironmentConfigHandler/.svn/text-base/prefix_result.php.svn-base @@ -0,0 +1,13 @@ + 'default', + 'sf_error_404_action' => 'error404', + 'sf_available' => false, + 'sf_i18n' => true, + 'sf_enabled_modules' => array ( + 0 => 'default', + 1 => 'user', +), +)); diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfDefineEnvironmentConfigHandler/prefix_all.yml b/lib/vendor/symfony/test/unit/config/fixtures/sfDefineEnvironmentConfigHandler/prefix_all.yml new file mode 100644 index 0000000..e393dfd --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/sfDefineEnvironmentConfigHandler/prefix_all.yml @@ -0,0 +1,15 @@ +prod: + .settings: + i18n: true + +all: + .actions: + error_404_module: default + error_404_action: error404 + + .settings: + available: false + + i18n: false + + enabled_modules: [default, user] diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfDefineEnvironmentConfigHandler/prefix_default.yml b/lib/vendor/symfony/test/unit/config/fixtures/sfDefineEnvironmentConfigHandler/prefix_default.yml new file mode 100644 index 0000000..d311626 --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/sfDefineEnvironmentConfigHandler/prefix_default.yml @@ -0,0 +1,11 @@ +default: + .actions: + error_404_module: default + error_404_action: error404 + + .settings: + available: true + + i18n: false + + enabled_modules: [default] diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfDefineEnvironmentConfigHandler/prefix_result.php b/lib/vendor/symfony/test/unit/config/fixtures/sfDefineEnvironmentConfigHandler/prefix_result.php new file mode 100644 index 0000000..1700f31 --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/sfDefineEnvironmentConfigHandler/prefix_result.php @@ -0,0 +1,13 @@ + 'default', + 'sf_error_404_action' => 'error404', + 'sf_available' => false, + 'sf_i18n' => true, + 'sf_enabled_modules' => array ( + 0 => 'default', + 1 => 'user', +), +)); diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/.svn/all-wcprops b/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/.svn/all-wcprops new file mode 100644 index 0000000..a7a0c16 --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/.svn/all-wcprops @@ -0,0 +1,59 @@ +K 25 +svn:wc:ra_dav:version-url +V 76 +/!svn/ver/23881/branches/1.4/test/unit/config/fixtures/sfFilterConfigHandler +END +no_execution.yml +K 25 +svn:wc:ra_dav:version-url +V 93 +/!svn/ver/23881/branches/1.4/test/unit/config/fixtures/sfFilterConfigHandler/no_execution.yml +END +no_class.yml +K 25 +svn:wc:ra_dav:version-url +V 89 +/!svn/ver/23881/branches/1.4/test/unit/config/fixtures/sfFilterConfigHandler/no_class.yml +END +disable.yml +K 25 +svn:wc:ra_dav:version-url +V 88 +/!svn/ver/23881/branches/1.4/test/unit/config/fixtures/sfFilterConfigHandler/disable.yml +END +result.php +K 25 +svn:wc:ra_dav:version-url +V 87 +/!svn/ver/23881/branches/1.4/test/unit/config/fixtures/sfFilterConfigHandler/result.php +END +condition.yml +K 25 +svn:wc:ra_dav:version-url +V 90 +/!svn/ver/23881/branches/1.4/test/unit/config/fixtures/sfFilterConfigHandler/condition.yml +END +not_disabled.yml +K 25 +svn:wc:ra_dav:version-url +V 93 +/!svn/ver/23881/branches/1.4/test/unit/config/fixtures/sfFilterConfigHandler/not_disabled.yml +END +filters.yml +K 25 +svn:wc:ra_dav:version-url +V 88 +/!svn/ver/23881/branches/1.4/test/unit/config/fixtures/sfFilterConfigHandler/filters.yml +END +no_rendering.yml +K 25 +svn:wc:ra_dav:version-url +V 93 +/!svn/ver/23881/branches/1.4/test/unit/config/fixtures/sfFilterConfigHandler/no_rendering.yml +END +default_filters.yml +K 25 +svn:wc:ra_dav:version-url +V 96 +/!svn/ver/23881/branches/1.4/test/unit/config/fixtures/sfFilterConfigHandler/default_filters.yml +END diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/.svn/entries b/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/.svn/entries new file mode 100644 index 0000000..19b95ed --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/.svn/entries @@ -0,0 +1,334 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/unit/config/fixtures/sfFilterConfigHandler +http://svn.symfony-project.com + + + +2008-11-30T14:05:44.065346Z +13547 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +no_execution.yml +file + + + + +2012-05-10T18:40:49.233555Z +9f8cff331656927ae25ca66a87887491 +2006-11-13T10:43:43.854176Z +2661 +fabien + + + + + + + + + + + + + + + + + + + + + +96 + +no_class.yml +file + + + + +2012-05-10T18:40:49.233555Z +96c378edb7552c85c7768ae05b0f4250 +2006-09-30T18:21:50.094891Z +2260 +fabien + + + + + + + + + + + + + + + + + + + + + +58 + +disable.yml +file + + + + +2012-05-10T18:40:49.233555Z +618d136697c70914e3c9de872265ce4d +2006-11-13T10:43:43.854176Z +2661 +fabien + + + + + + + + + + + + + + + + + + + + + +194 + +result.php +file + + + + +2012-05-10T18:40:49.233555Z +1da78858c20c5b85ff77009c410b2743 +2007-12-14T08:19:40.117839Z +6499 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +883 + +condition.yml +file + + + + +2012-05-10T18:40:49.233555Z +457cc3633a27680079bacfd95e928d42 +2006-11-13T10:43:43.854176Z +2661 +fabien + + + + + + + + + + + + + + + + + + + + + +218 + +not_disabled.yml +file + + + + +2012-05-10T18:40:49.237551Z +7b04767b99e401c0b26b9f150c607bdf +2006-11-13T10:43:43.854176Z +2661 +fabien + + + + + + + + + + + + + + + + + + + + + +26 + +filters.yml +file + + + + +2012-05-10T18:40:49.518234Z +a272b1b4b3dea704a0d02eafd1277638 +2006-11-13T10:43:43.854176Z +2661 +fabien + + + + + + + + + + + + + + + + + + + + + +116 + +no_rendering.yml +file + + + + +2012-05-10T18:40:49.544347Z +ed8da8a1b2cbb2d574c15a18696fbf5b +2006-11-13T10:43:43.854176Z +2661 +fabien + + + + + + + + + + + + + + + + + + + + + +96 + +default_filters.yml +file + + + + +2012-05-10T18:40:49.544347Z +6c0d78374e6305654c044ad255e86044 +2008-11-30T14:05:44.065346Z +13547 +Kris.Wallsmith + + + + + + + + + + + + + + + + + + + + + +175 + diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/.svn/prop-base/result.php.svn-base b/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/.svn/prop-base/result.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/.svn/prop-base/result.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/.svn/text-base/condition.yml.svn-base b/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/.svn/text-base/condition.yml.svn-base new file mode 100644 index 0000000..d459dde --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/.svn/text-base/condition.yml.svn-base @@ -0,0 +1,14 @@ +execution: + class: sfExecutionFilter + param: + type: execution + +default: + class: defaultFilterClass + param: + condition: %DEFAULT_TEST% + +rendering: + class: sfRenderingFilter + param: + type: rendering diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/.svn/text-base/default_filters.yml.svn-base b/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/.svn/text-base/default_filters.yml.svn-base new file mode 100644 index 0000000..98c1e53 --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/.svn/text-base/default_filters.yml.svn-base @@ -0,0 +1,12 @@ +execution: + class: sfExecutionFilter + param: + type: execution + +default: + class: defaultFilterClass + +rendering: + class: sfRenderingFilter + param: + type: rendering diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/.svn/text-base/disable.yml.svn-base b/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/.svn/text-base/disable.yml.svn-base new file mode 100644 index 0000000..b319fca --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/.svn/text-base/disable.yml.svn-base @@ -0,0 +1,13 @@ +execution: + class: sfExecutionFilter + param: + type: execution + +default: + class: defaultFilterClass + enabled: false + +rendering: + class: sfRenderingFilter + param: + type: rendering diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/.svn/text-base/filters.yml.svn-base b/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/.svn/text-base/filters.yml.svn-base new file mode 100644 index 0000000..5d12f4b --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/.svn/text-base/filters.yml.svn-base @@ -0,0 +1,11 @@ +execution: ~ +default: ~ + +new: + class: newFilterClass + param: + key: value + +rendering: + param: + key: value diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/.svn/text-base/no_class.yml.svn-base b/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/.svn/text-base/no_class.yml.svn-base new file mode 100644 index 0000000..b7bf997 --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/.svn/text-base/no_class.yml.svn-base @@ -0,0 +1,5 @@ +myFilter: + empty: empty + +myOtherFilter: + class: myClass diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/.svn/text-base/no_execution.yml.svn-base b/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/.svn/text-base/no_execution.yml.svn-base new file mode 100644 index 0000000..de655bc --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/.svn/text-base/no_execution.yml.svn-base @@ -0,0 +1,7 @@ +rendering: + class: sfRenderingFilter + param: + type: rendering + +myFilter: + class: myFilter diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/.svn/text-base/no_rendering.yml.svn-base b/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/.svn/text-base/no_rendering.yml.svn-base new file mode 100644 index 0000000..f36732e --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/.svn/text-base/no_rendering.yml.svn-base @@ -0,0 +1,7 @@ +myFilter: + class: myFilter + +execution: + class: sfExecutionFilter + param: + type: execution diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/.svn/text-base/not_disabled.yml.svn-base b/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/.svn/text-base/not_disabled.yml.svn-base new file mode 100644 index 0000000..b660b20 --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/.svn/text-base/not_disabled.yml.svn-base @@ -0,0 +1,2 @@ +execution: ~ +rendering: ~ diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/.svn/text-base/result.php.svn-base b/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/.svn/text-base/result.php.svn-base new file mode 100644 index 0000000..15c289b --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/.svn/text-base/result.php.svn-base @@ -0,0 +1,25 @@ +register($filter); + +list($class, $parameters) = (array) sfConfig::get('sf_default_filter', array('defaultFilterClass', null)); +$filter = new $class(sfContext::getInstance(), $parameters); +$this->register($filter); + +list($class, $parameters) = (array) sfConfig::get('sf_new_filter', array('newFilterClass', array ( + 'key' => 'value', +))); +$filter = new $class(sfContext::getInstance(), $parameters); +$this->register($filter); + +list($class, $parameters) = (array) sfConfig::get('sf_rendering_filter', array('sfRenderingFilter', array ( + 'key' => 'value', +))); +$filter = new $class(sfContext::getInstance(), $parameters); +$this->register($filter); + diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/condition.yml b/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/condition.yml new file mode 100644 index 0000000..d459dde --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/condition.yml @@ -0,0 +1,14 @@ +execution: + class: sfExecutionFilter + param: + type: execution + +default: + class: defaultFilterClass + param: + condition: %DEFAULT_TEST% + +rendering: + class: sfRenderingFilter + param: + type: rendering diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/default_filters.yml b/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/default_filters.yml new file mode 100644 index 0000000..98c1e53 --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/default_filters.yml @@ -0,0 +1,12 @@ +execution: + class: sfExecutionFilter + param: + type: execution + +default: + class: defaultFilterClass + +rendering: + class: sfRenderingFilter + param: + type: rendering diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/disable.yml b/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/disable.yml new file mode 100644 index 0000000..b319fca --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/disable.yml @@ -0,0 +1,13 @@ +execution: + class: sfExecutionFilter + param: + type: execution + +default: + class: defaultFilterClass + enabled: false + +rendering: + class: sfRenderingFilter + param: + type: rendering diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/filters.yml b/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/filters.yml new file mode 100644 index 0000000..5d12f4b --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/filters.yml @@ -0,0 +1,11 @@ +execution: ~ +default: ~ + +new: + class: newFilterClass + param: + key: value + +rendering: + param: + key: value diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/no_class.yml b/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/no_class.yml new file mode 100644 index 0000000..b7bf997 --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/no_class.yml @@ -0,0 +1,5 @@ +myFilter: + empty: empty + +myOtherFilter: + class: myClass diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/no_execution.yml b/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/no_execution.yml new file mode 100644 index 0000000..de655bc --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/no_execution.yml @@ -0,0 +1,7 @@ +rendering: + class: sfRenderingFilter + param: + type: rendering + +myFilter: + class: myFilter diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/no_rendering.yml b/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/no_rendering.yml new file mode 100644 index 0000000..f36732e --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/no_rendering.yml @@ -0,0 +1,7 @@ +myFilter: + class: myFilter + +execution: + class: sfExecutionFilter + param: + type: execution diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/not_disabled.yml b/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/not_disabled.yml new file mode 100644 index 0000000..b660b20 --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/not_disabled.yml @@ -0,0 +1,2 @@ +execution: ~ +rendering: ~ diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/result.php b/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/result.php new file mode 100644 index 0000000..15c289b --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/sfFilterConfigHandler/result.php @@ -0,0 +1,25 @@ +register($filter); + +list($class, $parameters) = (array) sfConfig::get('sf_default_filter', array('defaultFilterClass', null)); +$filter = new $class(sfContext::getInstance(), $parameters); +$this->register($filter); + +list($class, $parameters) = (array) sfConfig::get('sf_new_filter', array('newFilterClass', array ( + 'key' => 'value', +))); +$filter = new $class(sfContext::getInstance(), $parameters); +$this->register($filter); + +list($class, $parameters) = (array) sfConfig::get('sf_rendering_filter', array('sfRenderingFilter', array ( + 'key' => 'value', +))); +$filter = new $class(sfContext::getInstance(), $parameters); +$this->register($filter); + diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/.svn/all-wcprops b/lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/.svn/all-wcprops new file mode 100644 index 0000000..2fd7939 --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/.svn/all-wcprops @@ -0,0 +1,41 @@ +K 25 +svn:wc:ra_dav:version-url +V 79 +/!svn/ver/23881/branches/1.4/test/unit/config/fixtures/sfGeneratorConfigHandler +END +root_list_section.yml +K 25 +svn:wc:ra_dav:version-url +V 101 +/!svn/ver/23881/branches/1.4/test/unit/config/fixtures/sfGeneratorConfigHandler/root_list_section.yml +END +no_generator_section.yml +K 25 +svn:wc:ra_dav:version-url +V 104 +/!svn/ver/23881/branches/1.4/test/unit/config/fixtures/sfGeneratorConfigHandler/no_generator_section.yml +END +no_generator_class.yml +K 25 +svn:wc:ra_dav:version-url +V 102 +/!svn/ver/23881/branches/1.4/test/unit/config/fixtures/sfGeneratorConfigHandler/no_generator_class.yml +END +root_edit_section.yml +K 25 +svn:wc:ra_dav:version-url +V 101 +/!svn/ver/23881/branches/1.4/test/unit/config/fixtures/sfGeneratorConfigHandler/root_edit_section.yml +END +root_fields_section.yml +K 25 +svn:wc:ra_dav:version-url +V 103 +/!svn/ver/23881/branches/1.4/test/unit/config/fixtures/sfGeneratorConfigHandler/root_fields_section.yml +END +empty.yml +K 25 +svn:wc:ra_dav:version-url +V 89 +/!svn/ver/23881/branches/1.4/test/unit/config/fixtures/sfGeneratorConfigHandler/empty.yml +END diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/.svn/entries b/lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/.svn/entries new file mode 100644 index 0000000..8f3a0bc --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/.svn/entries @@ -0,0 +1,232 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/unit/config/fixtures/sfGeneratorConfigHandler +http://svn.symfony-project.com + + + +2009-10-08T15:24:02.495981Z +22876 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +root_list_section.yml +file + + + + +2012-05-10T18:40:49.565551Z +fe24f82f6b78bbedf5b7f41a664bf9a1 +2006-09-28T07:25:01.074416Z +2218 +fabien + + + + + + + + + + + + + + + + + + + + + +149 + +no_generator_section.yml +file + + + + +2012-05-10T18:40:49.565551Z +c1018dd84ab173cd361d72afdab23ff2 +2009-10-08T15:24:02.495981Z +22876 +fabien + + + + + + + + + + + + + + + + + + + + + +14 + +no_generator_class.yml +file + + + + +2012-05-10T18:40:49.565551Z +fc5e5c325c231e6a057b6b183007892d +2006-09-28T07:25:01.074416Z +2218 +fabien + + + + + + + + + + + + + + + + + + + + + +80 + +root_edit_section.yml +file + + + + +2012-05-10T18:40:49.565551Z +e6abdd46842048b20f937a52f3da0161 +2006-09-28T07:25:01.074416Z +2218 +fabien + + + + + + + + + + + + + + + + + + + + + +149 + +root_fields_section.yml +file + + + + +2012-05-10T18:40:49.762149Z +26c21456f43c2b6fd4bd092ee37fe33d +2006-10-02T15:57:58.252967Z +2290 +fabien + + + + + + + + + + + + + + + + + + + + + +147 + +empty.yml +file + + + + +2012-05-10T18:40:49.762149Z +d41d8cd98f00b204e9800998ecf8427e +2006-09-28T07:25:01.074416Z +2218 +fabien + + + + + + + + + + + + + + + + + + + + + +0 + diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/.svn/text-base/empty.yml.svn-base b/lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/.svn/text-base/empty.yml.svn-base new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/.svn/text-base/no_generator_class.yml.svn-base b/lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/.svn/text-base/no_generator_class.yml.svn-base new file mode 100644 index 0000000..a1351ca --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/.svn/text-base/no_generator_class.yml.svn-base @@ -0,0 +1,4 @@ +generator: + param: + model_class: Article + theme: default diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/.svn/text-base/no_generator_section.yml.svn-base b/lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/.svn/text-base/no_generator_section.yml.svn-base new file mode 100644 index 0000000..7592ac2 --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/.svn/text-base/no_generator_section.yml.svn-base @@ -0,0 +1,2 @@ +all: + foo: ~ diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/.svn/text-base/root_edit_section.yml.svn-base b/lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/.svn/text-base/root_edit_section.yml.svn-base new file mode 100644 index 0000000..710f8dc --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/.svn/text-base/root_edit_section.yml.svn-base @@ -0,0 +1,7 @@ +generator: + class: sfPropelAdminGenerator + param: + model_class: Article + theme: default + edit: + title: test diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/.svn/text-base/root_fields_section.yml.svn-base b/lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/.svn/text-base/root_fields_section.yml.svn-base new file mode 100644 index 0000000..a5b5df3 --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/.svn/text-base/root_fields_section.yml.svn-base @@ -0,0 +1,7 @@ +generator: + class: sfPropelAdminGenerator + param: + model_class: Article + theme: default + fields: + name: - diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/.svn/text-base/root_list_section.yml.svn-base b/lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/.svn/text-base/root_list_section.yml.svn-base new file mode 100644 index 0000000..eaa7140 --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/.svn/text-base/root_list_section.yml.svn-base @@ -0,0 +1,7 @@ +generator: + class: sfPropelAdminGenerator + param: + model_class: Article + theme: default + list: + title: test diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/empty.yml b/lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/empty.yml new file mode 100644 index 0000000..e69de29 diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/no_generator_class.yml b/lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/no_generator_class.yml new file mode 100644 index 0000000..a1351ca --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/no_generator_class.yml @@ -0,0 +1,4 @@ +generator: + param: + model_class: Article + theme: default diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/no_generator_section.yml b/lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/no_generator_section.yml new file mode 100644 index 0000000..7592ac2 --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/no_generator_section.yml @@ -0,0 +1,2 @@ +all: + foo: ~ diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/root_edit_section.yml b/lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/root_edit_section.yml new file mode 100644 index 0000000..710f8dc --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/root_edit_section.yml @@ -0,0 +1,7 @@ +generator: + class: sfPropelAdminGenerator + param: + model_class: Article + theme: default + edit: + title: test diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/root_fields_section.yml b/lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/root_fields_section.yml new file mode 100644 index 0000000..a5b5df3 --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/root_fields_section.yml @@ -0,0 +1,7 @@ +generator: + class: sfPropelAdminGenerator + param: + model_class: Article + theme: default + fields: + name: - diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/root_list_section.yml b/lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/root_list_section.yml new file mode 100644 index 0000000..eaa7140 --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/sfGeneratorConfigHandler/root_list_section.yml @@ -0,0 +1,7 @@ +generator: + class: sfPropelAdminGenerator + param: + model_class: Article + theme: default + list: + title: test diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfSimpleYamlConfigHandler/.svn/all-wcprops b/lib/vendor/symfony/test/unit/config/fixtures/sfSimpleYamlConfigHandler/.svn/all-wcprops new file mode 100644 index 0000000..d592e75 --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/sfSimpleYamlConfigHandler/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 80 +/!svn/ver/23881/branches/1.4/test/unit/config/fixtures/sfSimpleYamlConfigHandler +END +config_bis.yml +K 25 +svn:wc:ra_dav:version-url +V 95 +/!svn/ver/23881/branches/1.4/test/unit/config/fixtures/sfSimpleYamlConfigHandler/config_bis.yml +END +config.yml +K 25 +svn:wc:ra_dav:version-url +V 91 +/!svn/ver/23881/branches/1.4/test/unit/config/fixtures/sfSimpleYamlConfigHandler/config.yml +END diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfSimpleYamlConfigHandler/.svn/entries b/lib/vendor/symfony/test/unit/config/fixtures/sfSimpleYamlConfigHandler/.svn/entries new file mode 100644 index 0000000..c7d2917 --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/sfSimpleYamlConfigHandler/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/unit/config/fixtures/sfSimpleYamlConfigHandler +http://svn.symfony-project.com + + + +2006-12-16T18:02:10.593140Z +3059 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +config_bis.yml +file + + + + +2012-05-10T18:40:49.769550Z +646ef3d7349f8b2a8791b070ad94357e +2006-12-16T18:02:10.593140Z +3059 +fabien + + + + + + + + + + + + + + + + + + + + + +35 + +config.yml +file + + + + +2012-05-10T18:40:49.769550Z +fbe8a90f9c3837e789f7a48b2e1c095c +2006-12-16T18:02:10.593140Z +3059 +fabien + + + + + + + + + + + + + + + + + + + + + +35 + diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfSimpleYamlConfigHandler/.svn/text-base/config.yml.svn-base b/lib/vendor/symfony/test/unit/config/fixtures/sfSimpleYamlConfigHandler/.svn/text-base/config.yml.svn-base new file mode 100644 index 0000000..c515033 --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/sfSimpleYamlConfigHandler/.svn/text-base/config.yml.svn-base @@ -0,0 +1,3 @@ +article: + title: foo + body: bar diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfSimpleYamlConfigHandler/.svn/text-base/config_bis.yml.svn-base b/lib/vendor/symfony/test/unit/config/fixtures/sfSimpleYamlConfigHandler/.svn/text-base/config_bis.yml.svn-base new file mode 100644 index 0000000..54273fe --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/sfSimpleYamlConfigHandler/.svn/text-base/config_bis.yml.svn-base @@ -0,0 +1,3 @@ +article: + title: bar + body: bar diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfSimpleYamlConfigHandler/config.yml b/lib/vendor/symfony/test/unit/config/fixtures/sfSimpleYamlConfigHandler/config.yml new file mode 100644 index 0000000..c515033 --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/sfSimpleYamlConfigHandler/config.yml @@ -0,0 +1,3 @@ +article: + title: foo + body: bar diff --git a/lib/vendor/symfony/test/unit/config/fixtures/sfSimpleYamlConfigHandler/config_bis.yml b/lib/vendor/symfony/test/unit/config/fixtures/sfSimpleYamlConfigHandler/config_bis.yml new file mode 100644 index 0000000..54273fe --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/fixtures/sfSimpleYamlConfigHandler/config_bis.yml @@ -0,0 +1,3 @@ +article: + title: bar + body: bar diff --git a/lib/vendor/symfony/test/unit/config/sfConfigHandlerTest.php b/lib/vendor/symfony/test/unit/config/sfConfigHandlerTest.php new file mode 100644 index 0000000..38ef782 --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/sfConfigHandlerTest.php @@ -0,0 +1,54 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); + +$t = new lime_test(8); + +class myConfigHandler extends sfConfigHandler +{ + public function execute($configFiles) {} +} + +$config = new myConfigHandler(); +$config->initialize(); + +// ->initialize() +$t->diag('->initialize()'); +$config->initialize(array('foo' => 'bar')); +$t->is($config->getParameterHolder()->get('foo'), 'bar', '->initialize() takes an array of parameters as its first argument'); + +// ::replaceConstants() +$t->diag('::replaceConstants()'); +sfConfig::set('foo', 'bar'); +$t->is(sfConfigHandler::replaceConstants('my value with a %foo% constant'), 'my value with a bar constant', '::replaceConstants() replaces constants enclosed in %'); + +$t->is(sfConfigHandler::replaceConstants('%Y/%m/%d %H:%M'), '%Y/%m/%d %H:%M', '::replaceConstants() does not replace unknown constants'); + +sfConfig::set('foo', 'bar'); +$value = array( + 'foo' => 'my value with a %foo% constant', + 'bar' => array( + 'foo' => 'my value with a %foo% constant', + ), +); +$value = sfConfigHandler::replaceConstants($value); +$t->is($value['foo'], 'my value with a bar constant', '::replaceConstants() replaces constants in arrays recursively'); +$t->is($value['bar']['foo'], 'my value with a bar constant', '::replaceConstants() replaces constants in arrays recursively'); + +// ->getParameterHolder() +$t->diag('->getParameterHolder()'); +$t->isa_ok($config->getParameterHolder(), 'sfParameterHolder', "->getParameterHolder() returns a parameter holder instance"); + +// ->replacePath() +$t->diag('->replacePath()'); +sfConfig::set('sf_app_dir', 'ROOTDIR'); +$t->is($config->replacePath('test'), 'ROOTDIR/test', '->replacePath() prefix a relative path with "sf_app_dir"'); +$t->is($config->replacePath('/test'), '/test', '->replacePath() prefix a relative path with "sf_app_dir"'); diff --git a/lib/vendor/symfony/test/unit/config/sfConfigTest.php b/lib/vendor/symfony/test/unit/config/sfConfigTest.php new file mode 100644 index 0000000..3cabc50 --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/sfConfigTest.php @@ -0,0 +1,53 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); + +$t = new lime_test(9); + +// ::get() ::set() +$t->diag('::get() ::set()'); +sfConfig::clear(); + +sfConfig::set('foo', 'bar'); +$t->is(sfConfig::get('foo'), 'bar', '::get() returns the value of key config'); +$t->is(sfConfig::get('foo1', 'default_value'), 'default_value', '::get() takes a default value as its second argument'); + +// ::has() +$t->diag('::has()'); +sfConfig::clear(); +$t->is(sfConfig::has('foo'), false, '::has() returns false if the key config does not exist'); +sfConfig::set('foo', 'bar'); +$t->is(sfConfig::has('foo'), true, '::has() returns true if the key config exists'); + +// ::add() +$t->diag('::add()'); +sfConfig::clear(); + +sfConfig::set('foo', 'bar'); +sfConfig::set('foo1', 'foo1'); +sfConfig::add(array('foo' => 'foo', 'bar' => 'bar')); + +$t->is(sfConfig::get('foo'), 'foo', '::add() adds an array of config parameters'); +$t->is(sfConfig::get('bar'), 'bar', '::add() adds an array of config parameters'); +$t->is(sfConfig::get('foo1'), 'foo1', '::add() adds an array of config parameters'); + +// ::getAll() +$t->diag('::getAll()'); +sfConfig::clear(); +sfConfig::set('foo', 'bar'); +sfConfig::set('foo1', 'foo1'); + +$t->is(sfConfig::getAll(), array('foo' => 'bar', 'foo1' => 'foo1'), '::getAll() returns all config parameters'); + +// ::clear() +$t->diag('::clear()'); +sfConfig::clear(); +$t->is(sfConfig::get('foo1'), null, '::clear() removes all config parameters'); diff --git a/lib/vendor/symfony/test/unit/config/sfDefineEnvironmentConfigHandlerTest.php b/lib/vendor/symfony/test/unit/config/sfDefineEnvironmentConfigHandlerTest.php new file mode 100644 index 0000000..f997900 --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/sfDefineEnvironmentConfigHandlerTest.php @@ -0,0 +1,33 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); + +sfConfig::set('sf_symfony_lib_dir', realpath(dirname(__FILE__).'/../../../lib')); + +$t = new lime_test(1); + +// prefix +$handler = new sfDefineEnvironmentConfigHandler(); +$handler->initialize(array('prefix' => 'sf_')); + +$dir = dirname(__FILE__).DIRECTORY_SEPARATOR.'fixtures'.DIRECTORY_SEPARATOR.'sfDefineEnvironmentConfigHandler'.DIRECTORY_SEPARATOR; + +$files = array( + $dir.'prefix_default.yml', + $dir.'prefix_all.yml', +); + +sfConfig::set('sf_environment', 'prod'); + +$data = $handler->execute($files); +$data = preg_replace('#date\: \d+/\d+/\d+ \d+\:\d+\:\d+#', '', $data); + +$t->is($data, str_replace("\r\n", "\n", file_get_contents($dir.'prefix_result.php'))); diff --git a/lib/vendor/symfony/test/unit/config/sfFilterConfigHandlerTest.php b/lib/vendor/symfony/test/unit/config/sfFilterConfigHandlerTest.php new file mode 100644 index 0000000..537f1fd --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/sfFilterConfigHandlerTest.php @@ -0,0 +1,100 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); + +$t = new lime_test(8); + +$handler = new sfFilterConfigHandler(); +$handler->initialize(); + +$dir = dirname(__FILE__).DIRECTORY_SEPARATOR.'fixtures'.DIRECTORY_SEPARATOR.'sfFilterConfigHandler'.DIRECTORY_SEPARATOR; + +// parse errors +$t->diag('parse errors'); +$files = array( + $dir.'no_class.yml', +); + +try +{ + $data = $handler->execute($files); + $t->fail('filters.yml must have a "class" section for each filter entry'); +} +catch (sfParseException $e) +{ + $t->like($e->getMessage(), '/with missing class key/', 'filters.yml must have a "class" section for each filter entry'); +} + +// no execution/rendering filter +foreach (array('execution', 'rendering') as $key) +{ + $files = array( + $dir.sprintf('no_%s.yml', $key), + ); + + try + { + $data = $handler->execute($files); + $t->fail(sprintf('filters.yml must have a filter of type "%s"', $key)); + } + catch (sfParseException $e) + { + $t->like($e->getMessage(), sprintf('/must register a filter of type "%s"/', $key), sprintf('filters.yml must have a filter of type "%s"', $key)); + } +} + +// filter inheritance +$t->diag('filter inheritance'); +$files = array( + $dir.'default_filters.yml', + $dir.'not_disabled.yml', +); + +try +{ + $data = $handler->execute($files); + $t->fail('filters.yml must keep all filters when inheriting from a master filters configuration file'); +} +catch (sfConfigurationException $e) +{ + $t->like($e->getMessage(), '/but not present/', 'filters.yml must keep all filters when inheriting from a master filters configuration file'); +} + +// disabling a filter +$t->diag('disabling a filter'); +$files = array( + $dir.'disable.yml', +); + +$t->unlike($handler->execute($files), '/defaultFilterClass/', 'you can disable a filter by settings "enabled" to false'); + +// condition support +$t->diag('condition support'); +$files = array( + $dir.'condition.yml', +); + +sfConfig::set('default_test', true); +$t->like($handler->execute($files), '/defaultFilterClass/', 'you can add a "condition" key to the filter parameters'); + +sfConfig::set('default_test', false); +$t->unlike($handler->execute($files), '/defaultFilterClass/', 'you can add a "condition" key to the filter parameters'); + +// usual configuration +$t->diag('usual configuration'); +$files = array( + $dir.'default_filters.yml', + $dir.'filters.yml', +); + +$data = $handler->execute($files); +$data = preg_replace('#date\: \d+/\d+/\d+ \d+\:\d+\:\d+\n#', '', $data); +$t->is($data, str_replace("\r\n", "\n", file_get_contents($dir.'result.php')), 'core filters.yml can be overriden'); diff --git a/lib/vendor/symfony/test/unit/config/sfGeneratorConfigHandlerTest.php b/lib/vendor/symfony/test/unit/config/sfGeneratorConfigHandlerTest.php new file mode 100644 index 0000000..eead09f --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/sfGeneratorConfigHandlerTest.php @@ -0,0 +1,96 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); + +sfConfig::set('sf_symfony_lib_dir', realpath(dirname(__FILE__).'/../../../lib')); + +$t = new lime_test(5); + +$handler = new sfGeneratorConfigHandler(); +$handler->initialize(); + +$dir = dirname(__FILE__).DIRECTORY_SEPARATOR.'fixtures'.DIRECTORY_SEPARATOR.'sfGeneratorConfigHandler'.DIRECTORY_SEPARATOR; + +$t->diag('parse errors'); +$files = array( + $dir.'empty.yml', + $dir.'no_generator_class.yml', +); + +try +{ + $data = $handler->execute($files); + $t->fail('generator.yml must have a "class" section'); +} +catch (sfParseException $e) +{ + $t->like($e->getMessage(), '/must specify a generator class section under the generator section/', 'generator.yml must have a "class" section'); +} + +$files = array( + $dir.'empty.yml', + $dir.'no_generator_section.yml', +); + +try +{ + $data = $handler->execute($files); + $t->fail('generator.yml must have a "generator" section'); +} +catch (sfParseException $e) +{ + $t->like($e->getMessage(), '/must specify a generator section/', 'generator.yml must have a "generator" section'); +} + +$files = array( + $dir.'empty.yml', + $dir.'root_fields_section.yml', +); + +try +{ + $data = $handler->execute($files); + $t->fail('generator.yml can have a "fields" section but only under "param"'); +} +catch (sfParseException $e) +{ + $t->like($e->getMessage(), '/can specify a "fields" section but only under the param section/', 'generator.yml can have a "fields" section but only under "param"'); +} + +$files = array( + $dir.'empty.yml', + $dir.'root_list_section.yml', +); + +try +{ + $data = $handler->execute($files); + $t->fail('generator.yml can have a "list" section but only under "param"'); +} +catch (sfParseException $e) +{ + $t->like($e->getMessage(), '/can specify a "list" section but only under the param section/', 'generator.yml can have a "list" section but only under "param"'); +} + +$files = array( + $dir.'empty.yml', + $dir.'root_edit_section.yml', +); + +try +{ + $data = $handler->execute($files); + $t->fail('generator.yml can have a "edit" section but only under "param"'); +} +catch (sfParseException $e) +{ + $t->like($e->getMessage(), '/can specify a "edit" section but only under the param section/', 'generator.yml can have a "edit" section but only under "param"'); +} diff --git a/lib/vendor/symfony/test/unit/config/sfPluginConfigurationTest.php b/lib/vendor/symfony/test/unit/config/sfPluginConfigurationTest.php new file mode 100644 index 0000000..4d07f7b --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/sfPluginConfigurationTest.php @@ -0,0 +1,76 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once dirname(__FILE__).'/../../bootstrap/unit.php'; + +$rootDir = realpath(dirname(__FILE__).'/../../functional/fixtures'); +$pluginRoot = realpath($rootDir.'/plugins/sfAutoloadPlugin'); + +require_once $pluginRoot.'/config/sfAutoloadPluginConfiguration.class.php'; + +$t = new lime_test(9); + +class ProjectConfiguration extends sfProjectConfiguration +{ + public function setup() + { + $this->enablePlugins('sfAutoloadPlugin'); + } +} + +// ->guessRootDir() ->guessName() +$t->diag('->guessRootDir() ->guessName()'); + +$configuration = new sfProjectConfiguration($rootDir); +$pluginConfig = new sfAutoloadPluginConfiguration($configuration); + +$t->is($pluginConfig->getRootDir(), $pluginRoot, '->guessRootDir() guesses plugin root directory'); +$t->is($pluginConfig->getName(), 'sfAutoloadPlugin', '->guessName() guesses plugin name'); + +// ->filterTestFiles() +$t->diag('->filterTestFiles()'); + +// test:all +$task = new sfTestAllTask($configuration->getEventDispatcher(), new sfFormatter()); +$event = new sfEvent($task, 'task.test.filter_test_files', array('arguments' => array(), 'options' => array())); +$files = $pluginConfig->filterTestFiles($event, array()); +$t->is(count($files), 6, '->filterTestFiles() adds all plugin tests'); + +// test:functional +$task = new sfTestFunctionalTask($configuration->getEventDispatcher(), new sfFormatter()); +$event = new sfEvent($task, 'task.test.filter_test_files', array('arguments' => array('controller' => array()), 'options' => array())); +$files = $pluginConfig->filterTestFiles($event, array()); +$t->is(count($files), 3, '->filterTestFiles() adds functional plugin tests'); + +$task = new sfTestFunctionalTask($configuration->getEventDispatcher(), new sfFormatter()); +$event = new sfEvent($task, 'task.test.filter_test_files', array('arguments' => array('controller' => array('BarFunctional')), 'options' => array())); +$files = $pluginConfig->filterTestFiles($event, array()); +$t->is(count($files), 1, '->filterTestFiles() adds functional plugin tests when a controller is specified'); + +$task = new sfTestFunctionalTask($configuration->getEventDispatcher(), new sfFormatter()); +$event = new sfEvent($task, 'task.test.filter_test_files', array('arguments' => array('controller' => array('nested/NestedFunctional')), 'options' => array())); +$files = $pluginConfig->filterTestFiles($event, array()); +$t->is(count($files), 1, '->filterTestFiles() adds functional plugin tests when a nested controller is specified'); + +// test:unit +$task = new sfTestUnitTask($configuration->getEventDispatcher(), new sfFormatter()); +$event = new sfEvent($task, 'task.test.filter_test_files', array('arguments' => array('name' => array()), 'options' => array())); +$files = $pluginConfig->filterTestFiles($event, array()); +$t->is(count($files), 3, '->filterTestFiles() adds unit plugin tests'); + +$task = new sfTestUnitTask($configuration->getEventDispatcher(), new sfFormatter()); +$event = new sfEvent($task, 'task.test.filter_test_files', array('arguments' => array('name' => array('FooUnit')), 'options' => array())); +$files = $pluginConfig->filterTestFiles($event, array()); +$t->is(count($files), 1, '->filterTestFiles() adds unit plugin tests when a name is specified'); + +$task = new sfTestUnitTask($configuration->getEventDispatcher(), new sfFormatter()); +$event = new sfEvent($task, 'task.test.filter_test_files', array('arguments' => array('name' => array('nested/NestedUnit')), 'options' => array())); +$files = $pluginConfig->filterTestFiles($event, array()); +$t->is(count($files), 1, '->filterTestFiles() adds unit plugin tests when a nested name is specified'); diff --git a/lib/vendor/symfony/test/unit/config/sfProjectConfigurationTest.php b/lib/vendor/symfony/test/unit/config/sfProjectConfigurationTest.php new file mode 100644 index 0000000..e4f6d19 --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/sfProjectConfigurationTest.php @@ -0,0 +1,72 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); + +$t = new lime_test(6); + +class ProjectConfiguration extends sfProjectConfiguration +{ + public function setup() + { + $this->enablePlugins(array('sfAutoloadPlugin', 'sfConfigPlugin')); + $this->setPluginPath('sfConfigPlugin', $this->rootDir.'/lib/plugins/sfConfigPlugin'); + } +} + +$configuration = new ProjectConfiguration(dirname(__FILE__).'/../../functional/fixtures'); + +// ->setPlugins() ->disablePlugins() ->enablePlugins() ->enableAllPluginsExcept() +$t->diag('->setPlugins() ->disablePlugins() ->enablePlugins() ->enableAllPluginsExcept()'); + +foreach (array('setPlugins', 'disablePlugins', 'enablePlugins', 'enableAllPluginsExcept') as $method) +{ + try + { + $configuration->$method(array()); + $t->fail('->'.$method.'() throws an exception if called too late'); + } + catch (Exception $e) + { + $t->pass('->'.$method.'() throws an exception if called too late'); + } +} + +class ProjectConfiguration2 extends sfProjectConfiguration +{ + public function setup() + { + $this->enablePlugins('sfAutoloadPlugin', 'sfConfigPlugin'); + } +} + +$configuration = new ProjectConfiguration2(dirname(__FILE__).'/../../functional/fixtures'); +$t->is_deeply($configuration->getPlugins(), array('sfAutoloadPlugin', 'sfConfigPlugin'), '->enablePlugins() can enable plugins passed as arguments instead of array'); + +// ->__construct() +$t->diag('->__construct()'); + +class ProjectConfiguration3 extends sfProjectConfiguration +{ + public function setup() + { + $this->enablePlugins('NonExistantPlugin'); + } +} + +try +{ + $configuration = new ProjectConfiguration3(dirname(__FILE__).'/../../functional/fixtures'); + $t->fail('->__construct() throws an exception if a non-existant plugin is enabled'); +} +catch (Exception $e) +{ + $t->pass('->__construct() throws an exception if a non-existant plugin is enabled'); +} diff --git a/lib/vendor/symfony/test/unit/config/sfSimpleYamlConfigHandlerTest.php b/lib/vendor/symfony/test/unit/config/sfSimpleYamlConfigHandlerTest.php new file mode 100644 index 0000000..0022752 --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/sfSimpleYamlConfigHandlerTest.php @@ -0,0 +1,33 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); + +$t = new lime_test(2); + +$config = new sfSimpleYamlConfigHandler(); +$config->initialize(); + +$dir = dirname(__FILE__).DIRECTORY_SEPARATOR.'fixtures'.DIRECTORY_SEPARATOR.'sfSimpleYamlConfigHandler'.DIRECTORY_SEPARATOR; + +$array = get_retval($config, array($dir.'config.yml')); +$t->is($array['article']['title'], 'foo', '->execute() returns configuration file as an array'); + +$array = get_retval($config, array($dir.'config.yml', $dir.'config_bis.yml')); +$t->is($array['article']['title'], 'bar', '->execute() returns configuration file as an array'); + +function get_retval($config, $files) +{ + $retval = $config->execute($files); + $retval = preg_replace('#^<\?php#', '', $retval); + $retval = preg_replace('#<\?php$#s', '', $retval); + + return eval($retval); +} diff --git a/lib/vendor/symfony/test/unit/config/sfViewConfigHandlerTest.php b/lib/vendor/symfony/test/unit/config/sfViewConfigHandlerTest.php new file mode 100644 index 0000000..2506327 --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/sfViewConfigHandlerTest.php @@ -0,0 +1,351 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); + +$t = new lime_test(22); + +class myViewConfigHandler extends sfViewConfigHandler +{ + public function setConfiguration($config) + { + $this->yamlConfig = self::mergeConfig($config); + } + + public function addHtmlAsset($viewName = '') + { + return parent::addHtmlAsset($viewName); + } +} + +$handler = new myViewConfigHandler(); + +// addHtmlAsset() basic asset addition +$t->diag('addHtmlAsset() basic asset addition'); + +$handler->setConfiguration(array( + 'myView' => array( + 'stylesheets' => array('foobar'), + ), +)); +$content = <<addStylesheet('foobar', '', array ()); + +EOF; +$t->is(fix_linebreaks($handler->addHtmlAsset('myView')), fix_linebreaks($content), 'addHtmlAsset() adds stylesheets to the response'); + +$handler->setConfiguration(array( + 'myView' => array( + 'stylesheets' => array(array('foobar' => array('position' => 'last'))), + ), +)); +$content = <<addStylesheet('foobar', 'last', array ()); + +EOF; +$t->is(fix_linebreaks($handler->addHtmlAsset('myView')), fix_linebreaks($content), 'addHtmlAsset() adds stylesheets to the response'); + +$handler->setConfiguration(array( + 'myView' => array( + 'javascripts' => array('foobar'), + ), +)); +$content = <<addJavascript('foobar', '', array ()); + +EOF; +$t->is(fix_linebreaks($handler->addHtmlAsset('myView')), fix_linebreaks($content), 'addHtmlAsset() adds JavaScript to the response'); + +$handler->setConfiguration(array( + 'myView' => array( + 'javascripts' => array(array('foobar' => array('position' => 'last'))), + ), +)); +$content = <<addJavascript('foobar', 'last', array ()); + +EOF; +$t->is(fix_linebreaks($handler->addHtmlAsset('myView')), fix_linebreaks($content), 'addHtmlAsset() adds JavaScript to the response'); + +// Insertion order for stylesheets +$t->diag('addHtmlAsset() insertion order for stylesheets'); + +$handler->setConfiguration(array( + 'myView' => array( + 'stylesheets' => array('foobar'), + ), + 'all' => array( + 'stylesheets' => array('all_foobar'), + ), +)); +$content = <<addStylesheet('all_foobar', '', array ()); + \$response->addStylesheet('foobar', '', array ()); + +EOF; +$t->is(fix_linebreaks($handler->addHtmlAsset('myView')), fix_linebreaks($content), 'addHtmlAsset() adds view-specific stylesheets after application-wide assets'); + +$handler->setConfiguration(array( + 'all' => array( + 'stylesheets' => array('all_foobar'), + ), + 'myView' => array( + 'stylesheets' => array('foobar'), + ), +)); +$content = <<addStylesheet('all_foobar', '', array ()); + \$response->addStylesheet('foobar', '', array ()); + +EOF; +$t->is(fix_linebreaks($handler->addHtmlAsset('myView')), fix_linebreaks($content), 'addHtmlAsset() adds view-specific stylesheets after application-wide assets'); + +$handler->setConfiguration(array( + 'myView' => array( + 'stylesheets' => array('foobar'), + ), + 'default' => array( + 'stylesheets' => array('default_foobar'), + ), +)); +$content = <<addStylesheet('default_foobar', '', array ()); + \$response->addStylesheet('foobar', '', array ()); + +EOF; +$t->is(fix_linebreaks($handler->addHtmlAsset('myView')), fix_linebreaks($content), 'addHtmlAsset() adds view-specific stylesheets after default assets'); + +$handler->setConfiguration(array( + 'default' => array( + 'stylesheets' => array('default_foobar'), + ), + 'myView' => array( + 'stylesheets' => array('foobar'), + ), +)); +$content = <<addStylesheet('default_foobar', '', array ()); + \$response->addStylesheet('foobar', '', array ()); + +EOF; +$t->is(fix_linebreaks($handler->addHtmlAsset('myView')), fix_linebreaks($content), 'addHtmlAsset() adds view-specific stylesheets after default assets'); + +$handler->setConfiguration(array( + 'default' => array( + 'stylesheets' => array('default_foobar'), + ), + 'all' => array( + 'stylesheets' => array('all_foobar'), + ), +)); +$content = <<addStylesheet('default_foobar', '', array ()); + \$response->addStylesheet('all_foobar', '', array ()); + +EOF; +$t->is(fix_linebreaks($handler->addHtmlAsset('myView')), fix_linebreaks($content), 'addHtmlAsset() adds application-specific stylesheets after default assets'); + +$handler->setConfiguration(array( + 'all' => array( + 'stylesheets' => array('all_foobar'), + ), + 'default' => array( + 'stylesheets' => array('default_foobar'), + ), +)); +$content = <<addStylesheet('default_foobar', '', array ()); + \$response->addStylesheet('all_foobar', '', array ()); + +EOF; +$t->is(fix_linebreaks($handler->addHtmlAsset('myView')), fix_linebreaks($content), 'addHtmlAsset() adds application-specific stylesheets after default assets'); + +// Insertion order for javascripts +$t->diag('addHtmlAsset() insertion order for javascripts'); + +$handler->setConfiguration(array( + 'myView' => array( + 'javascripts' => array('foobar'), + ), + 'all' => array( + 'javascripts' => array('all_foobar'), + ), +)); +$content = <<addJavascript('all_foobar', '', array ()); + \$response->addJavascript('foobar', '', array ()); + +EOF; +$t->is(fix_linebreaks($handler->addHtmlAsset('myView')), fix_linebreaks($content), 'addHtmlAsset() adds view-specific javascripts after application-wide assets'); + +$handler->setConfiguration(array( + 'all' => array( + 'javascripts' => array('all_foobar'), + ), + 'myView' => array( + 'javascripts' => array('foobar'), + ), +)); +$content = <<addJavascript('all_foobar', '', array ()); + \$response->addJavascript('foobar', '', array ()); + +EOF; +$t->is(fix_linebreaks($handler->addHtmlAsset('myView')), fix_linebreaks($content), 'addHtmlAsset() adds view-specific javascripts after application-wide assets'); + +$handler->setConfiguration(array( + 'myView' => array( + 'javascripts' => array('foobar'), + ), + 'default' => array( + 'javascripts' => array('default_foobar'), + ), +)); +$content = <<addJavascript('default_foobar', '', array ()); + \$response->addJavascript('foobar', '', array ()); + +EOF; +$t->is(fix_linebreaks($handler->addHtmlAsset('myView')), fix_linebreaks($content), 'addHtmlAsset() adds view-specific javascripts after default assets'); + +$handler->setConfiguration(array( + 'default' => array( + 'javascripts' => array('default_foobar'), + ), + 'myView' => array( + 'javascripts' => array('foobar'), + ), +)); +$content = <<addJavascript('default_foobar', '', array ()); + \$response->addJavascript('foobar', '', array ()); + +EOF; +$t->is(fix_linebreaks($handler->addHtmlAsset('myView')), fix_linebreaks($content), 'addHtmlAsset() adds view-specific javascripts after default assets'); + +$handler->setConfiguration(array( + 'default' => array( + 'javascripts' => array('default_foobar'), + ), + 'all' => array( + 'javascripts' => array('all_foobar'), + ), +)); +$content = <<addJavascript('default_foobar', '', array ()); + \$response->addJavascript('all_foobar', '', array ()); + +EOF; +$t->is(fix_linebreaks($handler->addHtmlAsset('myView')), fix_linebreaks($content), 'addHtmlAsset() adds application-specific javascripts after default assets'); + +$handler->setConfiguration(array( + 'all' => array( + 'javascripts' => array('all_foobar'), + ), + 'default' => array( + 'javascripts' => array('default_foobar'), + ), +)); +$content = <<addJavascript('default_foobar', '', array ()); + \$response->addJavascript('all_foobar', '', array ()); + +EOF; +$t->is(fix_linebreaks($handler->addHtmlAsset('myView')), fix_linebreaks($content), 'addHtmlAsset() adds application-specific javascripts after default assets'); + +// removal of assets +$t->diag('addHtmlAsset() removal of assets'); + +$handler->setConfiguration(array( + 'all' => array( + 'stylesheets' => array('all_foo', 'all_bar'), + ), + 'myView' => array( + 'stylesheets' => array('foobar', '-all_bar'), + ), +)); +$content = <<addStylesheet('all_foo', '', array ()); + \$response->addStylesheet('foobar', '', array ()); + +EOF; +$t->is(fix_linebreaks($handler->addHtmlAsset('myView')), fix_linebreaks($content), 'addHtmlAsset() supports the - option to remove one stylesheet previously added'); + +$handler->setConfiguration(array( + 'all' => array( + 'javascripts' => array('all_foo', 'all_bar'), + ), + 'myView' => array( + 'javascripts' => array('foobar', '-all_bar'), + ), +)); +$content = <<addJavascript('all_foo', '', array ()); + \$response->addJavascript('foobar', '', array ()); + +EOF; +$t->is(fix_linebreaks($handler->addHtmlAsset('myView')), fix_linebreaks($content), 'addHtmlAsset() supports the - option to remove one javascript previously added'); + +$handler->setConfiguration(array( + 'all' => array( + 'stylesheets' => array('foo', 'bar', '-*', 'baz'), + ), +)); +$content = <<addStylesheet('baz', '', array ()); + +EOF; +$t->is(fix_linebreaks($handler->addHtmlAsset('myView')), fix_linebreaks($content), 'addHtmlAsset() supports the -* option to remove all stylesheets previously added'); + +$handler->setConfiguration(array( + 'all' => array( + 'javascripts' => array('foo', 'bar', '-*', 'baz'), + ), +)); +$content = <<addJavascript('baz', '', array ()); + +EOF; +$t->is(fix_linebreaks($handler->addHtmlAsset('myView')), fix_linebreaks($content), 'addHtmlAsset() supports the -* option to remove all javascripts previously added'); + +$handler->setConfiguration(array( + 'all' => array( + 'stylesheets' => array('-*', 'foobar'), + ), + 'default' => array( + 'stylesheets' => array('default_foo', 'default_bar'), + ), +)); +$content = <<addStylesheet('foobar', '', array ()); + +EOF; +$t->is(fix_linebreaks($handler->addHtmlAsset('myView')), fix_linebreaks($content), 'addHtmlAsset() supports the -* option to remove all assets previously added'); + +$handler->setConfiguration(array( + 'myView' => array( + 'stylesheets' => array('foobar', '-*', 'bar'), + 'javascripts' => array('foobar', '-*', 'bar'), + ), + 'all' => array( + 'stylesheets' => array('all_foo', 'all_foofoo', 'all_barbar'), + 'javascripts' => array('all_foo', 'all_foofoo', 'all_barbar'), + ), + 'default' => array( + 'stylesheets' => array('default_foo', 'default_foofoo', 'default_barbar'), + 'javascripts' => array('default_foo', 'default_foofoo', 'default_barbar'), + ), +)); +$content = <<addStylesheet('bar', '', array ()); + \$response->addJavascript('bar', '', array ()); + +EOF; +$t->is(fix_linebreaks($handler->addHtmlAsset('myView')), fix_linebreaks($content), 'addHtmlAsset() supports the -* option to remove all assets previously added'); diff --git a/lib/vendor/symfony/test/unit/config/sfYamlConfigHandlerTest.php b/lib/vendor/symfony/test/unit/config/sfYamlConfigHandlerTest.php new file mode 100644 index 0000000..892872a --- /dev/null +++ b/lib/vendor/symfony/test/unit/config/sfYamlConfigHandlerTest.php @@ -0,0 +1,85 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); + +$t = new lime_test(7); + +class myConfigHandler extends sfYamlConfigHandler +{ + public $yamlConfig = null; + + public function execute($configFiles) {} + + static public function parseYamls($configFiles) + { + return parent::parseYamls($configFiles); + } + + static public function parseYaml($configFile) + { + return parent::parseYaml($configFile); + } + + public function mergeConfigValue($keyName, $category) + { + return parent::mergeConfigValue($keyName, $category); + } + + public function getConfigValue($keyName, $category, $defaultValue = null) + { + return parent::getConfigValue($keyName, $category, $defaultValue); + } +} + +$config = new myConfigHandler(); +$config->initialize(); + +// ->parseYamls() +$t->diag('->parseYamls()'); + +// ->parseYaml() +$t->diag('->parseYaml()'); + +// ->mergeConfigValue() +$t->diag('->mergeConfigValue()'); +$config->yamlConfig = array( + 'bar' => array( + 'foo' => array( + 'foo' => 'foobar', + 'bar' => 'bar', + ), + ), + 'all' => array( + 'foo' => array( + 'foo' => 'fooall', + 'barall' => 'barall', + ), + ), +); +$values = $config->mergeConfigValue('foo', 'bar'); +$t->is($values['foo'], 'foobar', '->mergeConfigValue() merges values for a given key under a given category'); +$t->is($values['bar'], 'bar', '->mergeConfigValue() merges values for a given key under a given category'); +$t->is($values['barall'], 'barall', '->mergeConfigValue() merges values for a given key under a given category'); + +// ->getConfigValue() +$t->diag('->getConfigValue()'); +$config->yamlConfig = array( + 'bar' => array( + 'foo' => 'foobar' + ), + 'all' => array( + 'foo' => 'fooall' + ), +); +$t->is($config->getConfigValue('foo', 'bar'), 'foobar', '->getConfigValue() returns the value for the key in the given category'); +$t->is($config->getConfigValue('foo', 'all'), 'fooall', '->getConfigValue() returns the value for the key in the given category'); +$t->is($config->getConfigValue('foo', 'foofoo'), 'fooall', '->getConfigValue() returns the value for the key in the "all" category if the key does not exist in the given category'); +$t->is($config->getConfigValue('foofoo', 'foofoo', 'default'), 'default', '->getConfigValue() returns the default value if key is not found in the category and in the "all" category'); diff --git a/lib/vendor/symfony/test/unit/controller/.svn/all-wcprops b/lib/vendor/symfony/test/unit/controller/.svn/all-wcprops new file mode 100644 index 0000000..d1fb355 --- /dev/null +++ b/lib/vendor/symfony/test/unit/controller/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 49 +/!svn/ver/23947/branches/1.4/test/unit/controller +END +sfWebControllerTest.php +K 25 +svn:wc:ra_dav:version-url +V 73 +/!svn/ver/23947/branches/1.4/test/unit/controller/sfWebControllerTest.php +END +sfControllerTest.php +K 25 +svn:wc:ra_dav:version-url +V 70 +/!svn/ver/23881/branches/1.4/test/unit/controller/sfControllerTest.php +END diff --git a/lib/vendor/symfony/test/unit/controller/.svn/entries b/lib/vendor/symfony/test/unit/controller/.svn/entries new file mode 100644 index 0000000..8006620 --- /dev/null +++ b/lib/vendor/symfony/test/unit/controller/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/unit/controller +http://svn.symfony-project.com + + + +2009-11-14T20:02:28.092537Z +23947 +FabianLange + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +sfWebControllerTest.php +file + + + + +2012-05-10T18:40:44.941550Z +f173e98cf845a9cdd15c920b42284caf +2009-11-14T20:02:28.092537Z +23947 +FabianLange +has-props + + + + + + + + + + + + + + + + + + + + +5488 + +sfControllerTest.php +file + + + + +2012-05-10T18:40:44.941550Z +bb33b3451bc2bcc7257c93cb19211e8b +2009-06-25T06:35:13.766150Z +19531 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +806 + diff --git a/lib/vendor/symfony/test/unit/controller/.svn/prop-base/sfControllerTest.php.svn-base b/lib/vendor/symfony/test/unit/controller/.svn/prop-base/sfControllerTest.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/unit/controller/.svn/prop-base/sfControllerTest.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/unit/controller/.svn/prop-base/sfWebControllerTest.php.svn-base b/lib/vendor/symfony/test/unit/controller/.svn/prop-base/sfWebControllerTest.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/unit/controller/.svn/prop-base/sfWebControllerTest.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/unit/controller/.svn/text-base/sfControllerTest.php.svn-base b/lib/vendor/symfony/test/unit/controller/.svn/text-base/sfControllerTest.php.svn-base new file mode 100644 index 0000000..9a0d9a3 --- /dev/null +++ b/lib/vendor/symfony/test/unit/controller/.svn/text-base/sfControllerTest.php.svn-base @@ -0,0 +1,28 @@ + + * + * For the full copyright and license information, please controller the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); +require_once($_test_dir.'/unit/sfContextMock.class.php'); + +$t = new lime_test(2); + +class myController extends sfController +{ + function execute () {} +} + +$context = sfContext::getInstance(); + +$controller = new myController($context); + +// new methods via sfEventDispatcher +require_once($_test_dir.'/unit/sfEventDispatcherTest.class.php'); +$dispatcherTest = new sfEventDispatcherTest($t); +$dispatcherTest->launchTests($context->getEventDispatcher(), $controller, 'controller'); diff --git a/lib/vendor/symfony/test/unit/controller/.svn/text-base/sfWebControllerTest.php.svn-base b/lib/vendor/symfony/test/unit/controller/.svn/text-base/sfWebControllerTest.php.svn-base new file mode 100644 index 0000000..27f36bc --- /dev/null +++ b/lib/vendor/symfony/test/unit/controller/.svn/text-base/sfWebControllerTest.php.svn-base @@ -0,0 +1,214 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); +require_once($_test_dir.'/unit/sfContextMock.class.php'); +require_once($_test_dir.'/unit/sfNoRouting.class.php'); + +$t = new lime_test(21); + +class myWebResponse extends sfWebResponse +{ + public function sendHttpHeaders() + { + } + + public function send() + { + } +} + +$_SERVER['HTTP_HOST'] = 'localhost'; +$_SERVER['SCRIPT_NAME'] = '/index.php'; +sfConfig::set('sf_max_forwards', 10); +$context = sfContext::getInstance(array( + 'routing' => 'sfNoRouting', + 'request' => 'sfWebRequest', + 'response' => 'myWebResponse', +)); + +$controller = new sfFrontWebController($context, null); + +$tests = array( + 'module/action' => array( + '', + array( + 'module' => 'module', + 'action' => 'action', + ), + ), + 'module/action?id=12' => array( + '', + array( + 'module' => 'module', + 'action' => 'action', + 'id' => 12, + ), + ), + 'module/action?id=12&' => array( + '', + array( + 'module' => 'module', + 'action' => 'action', + 'id' => '12&', + ), + ), + 'module/action?id=12&test=4&toto=9' => array( + '', + array( + 'module' => 'module', + 'action' => 'action', + 'id' => 12, + 'test' => 4, + 'toto' => 9, + ), + ), + 'module/action?id=12&test=4&5&6&7&&toto=9' => array( + '', + array( + 'module' => 'module', + 'action' => 'action', + 'id' => 12, + 'test' => '4&5&6&7&', + 'toto' => 9, + ), + ), + 'module/action?test=value1&value2&toto=9' => array( + '', + array( + 'module' => 'module', + 'action' => 'action', + 'test' => 'value1&value2', + 'toto' => 9, + ), + ), + 'module/action?test=value1&value2' => array( + '', + array( + 'module' => 'module', + 'action' => 'action', + 'test' => 'value1&value2', + ), + ), + 'module/action?test=value1=value2&toto=9' => array( + '', + array( + 'module' => 'module', + 'action' => 'action', + 'test' => 'value1=value2', + 'toto' => 9, + ), + ), + 'module/action?test=value1=value2' => array( + '', + array( + 'module' => 'module', + 'action' => 'action', + 'test' => 'value1=value2', + ), + ), + 'module/action?test=4&5&6&7&&toto=9&id=' => array( + '', + array( + 'module' => 'module', + 'action' => 'action', + 'test' => '4&5&6&7&', + 'toto' => 9, + 'id' => '', + ), + ), + '@test?test=4' => array( + 'test', + array( + 'test' => 4 + ), + ), + '@test' => array( + 'test', + array( + ), + ), + '@test?id=12&foo=bar' => array( + 'test', + array( + 'id' => 12, + 'foo' => 'bar', + ), + ), + '@test?id=foo%26bar&foo=bar%3Dfoo' => array( + 'test', + array( + 'id' => 'foo&bar', + 'foo' => 'bar=foo', + ), + ), +); + +// ->convertUrlStringToParameters() +$t->diag('->convertUrlStringToParameters()'); +foreach ($tests as $url => $result) +{ + $t->is($controller->convertUrlStringToParameters($url), $result, sprintf('->convertUrlStringToParameters() converts a symfony internal URI to an array of parameters (%s)', $url)); +} + +try +{ + $controller->convertUrlStringToParameters('@test?foobar'); + $t->fail('->convertUrlStringToParameters() throw a sfParseException if it cannot parse the query string'); +} +catch (sfParseException $e) +{ + $t->pass('->convertUrlStringToParameters() throw a sfParseException if it cannot parse the query string'); +} + +// ->redirect() +$t->diag('->redirect()'); +$controller->redirect('module/action?id=1#photos'); +$response = $context->getResponse(); +$t->like($response->getContent(), '~http\://localhost/index.php/\?module=module&action=action&id=1#photos~', '->redirect() adds a refresh meta in the content'); +$t->like($response->getHttpHeader('Location'), '~http\://localhost/index.php/\?module=module&action=action&id=1#photos~', '->redirect() adds a Location HTTP header'); + +// Test null url argument for ->redirect() +try +{ + $controller->redirect(null); + $t->fail('->redirect() throw an InvalidArgumentException when the url argument is null'); +} +catch (InvalidArgumentException $iae) +{ + $t->pass('->redirect() throw an InvalidArgumentException when the url argument is null'); +} +catch(Exception $e) +{ + $t->fail('->redirect() throw an InvalidArgumentException when the url argument is null. '.get_class($e).' was received'); +} + +// Test empty string url argument for ->redirect() +try +{ + $controller->redirect(''); + $t->fail('->redirect() throw an InvalidArgumentException when the url argument is an empty string'); +} +catch (InvalidArgumentException $iae) +{ + $t->pass('->redirect() throw an InvalidArgumentException when the url argument is an empty string'); +} +catch(Exception $e) +{ + $t->fail('->redirect() throw an InvalidArgumentException when the url argument is an empty string. '.get_class($e).' was received'); +} + +// ->genUrl() +$t->diag('->genUrl()'); +$t->is($controller->genUrl('module/action?id=4'), $controller->genUrl(array('action' => 'action', 'module' => 'module', 'id' => 4)), '->genUrl() accepts a string or an array as its first argument'); + +$lastError = error_get_last(); +$controller->genUrl(''); +$t->is_deeply(error_get_last(), $lastError, '->genUrl() accepts an empty string'); diff --git a/lib/vendor/symfony/test/unit/controller/sfControllerTest.php b/lib/vendor/symfony/test/unit/controller/sfControllerTest.php new file mode 100644 index 0000000..9a0d9a3 --- /dev/null +++ b/lib/vendor/symfony/test/unit/controller/sfControllerTest.php @@ -0,0 +1,28 @@ + + * + * For the full copyright and license information, please controller the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); +require_once($_test_dir.'/unit/sfContextMock.class.php'); + +$t = new lime_test(2); + +class myController extends sfController +{ + function execute () {} +} + +$context = sfContext::getInstance(); + +$controller = new myController($context); + +// new methods via sfEventDispatcher +require_once($_test_dir.'/unit/sfEventDispatcherTest.class.php'); +$dispatcherTest = new sfEventDispatcherTest($t); +$dispatcherTest->launchTests($context->getEventDispatcher(), $controller, 'controller'); diff --git a/lib/vendor/symfony/test/unit/controller/sfWebControllerTest.php b/lib/vendor/symfony/test/unit/controller/sfWebControllerTest.php new file mode 100644 index 0000000..27f36bc --- /dev/null +++ b/lib/vendor/symfony/test/unit/controller/sfWebControllerTest.php @@ -0,0 +1,214 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); +require_once($_test_dir.'/unit/sfContextMock.class.php'); +require_once($_test_dir.'/unit/sfNoRouting.class.php'); + +$t = new lime_test(21); + +class myWebResponse extends sfWebResponse +{ + public function sendHttpHeaders() + { + } + + public function send() + { + } +} + +$_SERVER['HTTP_HOST'] = 'localhost'; +$_SERVER['SCRIPT_NAME'] = '/index.php'; +sfConfig::set('sf_max_forwards', 10); +$context = sfContext::getInstance(array( + 'routing' => 'sfNoRouting', + 'request' => 'sfWebRequest', + 'response' => 'myWebResponse', +)); + +$controller = new sfFrontWebController($context, null); + +$tests = array( + 'module/action' => array( + '', + array( + 'module' => 'module', + 'action' => 'action', + ), + ), + 'module/action?id=12' => array( + '', + array( + 'module' => 'module', + 'action' => 'action', + 'id' => 12, + ), + ), + 'module/action?id=12&' => array( + '', + array( + 'module' => 'module', + 'action' => 'action', + 'id' => '12&', + ), + ), + 'module/action?id=12&test=4&toto=9' => array( + '', + array( + 'module' => 'module', + 'action' => 'action', + 'id' => 12, + 'test' => 4, + 'toto' => 9, + ), + ), + 'module/action?id=12&test=4&5&6&7&&toto=9' => array( + '', + array( + 'module' => 'module', + 'action' => 'action', + 'id' => 12, + 'test' => '4&5&6&7&', + 'toto' => 9, + ), + ), + 'module/action?test=value1&value2&toto=9' => array( + '', + array( + 'module' => 'module', + 'action' => 'action', + 'test' => 'value1&value2', + 'toto' => 9, + ), + ), + 'module/action?test=value1&value2' => array( + '', + array( + 'module' => 'module', + 'action' => 'action', + 'test' => 'value1&value2', + ), + ), + 'module/action?test=value1=value2&toto=9' => array( + '', + array( + 'module' => 'module', + 'action' => 'action', + 'test' => 'value1=value2', + 'toto' => 9, + ), + ), + 'module/action?test=value1=value2' => array( + '', + array( + 'module' => 'module', + 'action' => 'action', + 'test' => 'value1=value2', + ), + ), + 'module/action?test=4&5&6&7&&toto=9&id=' => array( + '', + array( + 'module' => 'module', + 'action' => 'action', + 'test' => '4&5&6&7&', + 'toto' => 9, + 'id' => '', + ), + ), + '@test?test=4' => array( + 'test', + array( + 'test' => 4 + ), + ), + '@test' => array( + 'test', + array( + ), + ), + '@test?id=12&foo=bar' => array( + 'test', + array( + 'id' => 12, + 'foo' => 'bar', + ), + ), + '@test?id=foo%26bar&foo=bar%3Dfoo' => array( + 'test', + array( + 'id' => 'foo&bar', + 'foo' => 'bar=foo', + ), + ), +); + +// ->convertUrlStringToParameters() +$t->diag('->convertUrlStringToParameters()'); +foreach ($tests as $url => $result) +{ + $t->is($controller->convertUrlStringToParameters($url), $result, sprintf('->convertUrlStringToParameters() converts a symfony internal URI to an array of parameters (%s)', $url)); +} + +try +{ + $controller->convertUrlStringToParameters('@test?foobar'); + $t->fail('->convertUrlStringToParameters() throw a sfParseException if it cannot parse the query string'); +} +catch (sfParseException $e) +{ + $t->pass('->convertUrlStringToParameters() throw a sfParseException if it cannot parse the query string'); +} + +// ->redirect() +$t->diag('->redirect()'); +$controller->redirect('module/action?id=1#photos'); +$response = $context->getResponse(); +$t->like($response->getContent(), '~http\://localhost/index.php/\?module=module&action=action&id=1#photos~', '->redirect() adds a refresh meta in the content'); +$t->like($response->getHttpHeader('Location'), '~http\://localhost/index.php/\?module=module&action=action&id=1#photos~', '->redirect() adds a Location HTTP header'); + +// Test null url argument for ->redirect() +try +{ + $controller->redirect(null); + $t->fail('->redirect() throw an InvalidArgumentException when the url argument is null'); +} +catch (InvalidArgumentException $iae) +{ + $t->pass('->redirect() throw an InvalidArgumentException when the url argument is null'); +} +catch(Exception $e) +{ + $t->fail('->redirect() throw an InvalidArgumentException when the url argument is null. '.get_class($e).' was received'); +} + +// Test empty string url argument for ->redirect() +try +{ + $controller->redirect(''); + $t->fail('->redirect() throw an InvalidArgumentException when the url argument is an empty string'); +} +catch (InvalidArgumentException $iae) +{ + $t->pass('->redirect() throw an InvalidArgumentException when the url argument is an empty string'); +} +catch(Exception $e) +{ + $t->fail('->redirect() throw an InvalidArgumentException when the url argument is an empty string. '.get_class($e).' was received'); +} + +// ->genUrl() +$t->diag('->genUrl()'); +$t->is($controller->genUrl('module/action?id=4'), $controller->genUrl(array('action' => 'action', 'module' => 'module', 'id' => 4)), '->genUrl() accepts a string or an array as its first argument'); + +$lastError = error_get_last(); +$controller->genUrl(''); +$t->is_deeply(error_get_last(), $lastError, '->genUrl() accepts an empty string'); diff --git a/lib/vendor/symfony/test/unit/database/.svn/all-wcprops b/lib/vendor/symfony/test/unit/database/.svn/all-wcprops new file mode 100644 index 0000000..8e352a0 --- /dev/null +++ b/lib/vendor/symfony/test/unit/database/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 47 +/!svn/ver/23881/branches/1.4/test/unit/database +END +sfDatabaseTest.php +K 25 +svn:wc:ra_dav:version-url +V 66 +/!svn/ver/23881/branches/1.4/test/unit/database/sfDatabaseTest.php +END diff --git a/lib/vendor/symfony/test/unit/database/.svn/entries b/lib/vendor/symfony/test/unit/database/.svn/entries new file mode 100644 index 0000000..a2608c6 --- /dev/null +++ b/lib/vendor/symfony/test/unit/database/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/unit/database +http://svn.symfony-project.com + + + +2009-06-25T06:35:13.766150Z +19531 +fabien + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +sfDatabaseTest.php +file + + + + +2012-05-10T18:40:47.513550Z +56575ebf3fbb92edb168e58d78965a50 +2009-06-25T06:35:13.766150Z +19531 +fabien +has-props + + + + + + + + + + + + + + + + + + + + +781 + diff --git a/lib/vendor/symfony/test/unit/database/.svn/prop-base/sfDatabaseTest.php.svn-base b/lib/vendor/symfony/test/unit/database/.svn/prop-base/sfDatabaseTest.php.svn-base new file mode 100644 index 0000000..14696ce --- /dev/null +++ b/lib/vendor/symfony/test/unit/database/.svn/prop-base/sfDatabaseTest.php.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +K 13 +svn:mime-type +V 10 +text/x-php +END diff --git a/lib/vendor/symfony/test/unit/database/.svn/text-base/sfDatabaseTest.php.svn-base b/lib/vendor/symfony/test/unit/database/.svn/text-base/sfDatabaseTest.php.svn-base new file mode 100644 index 0000000..17c4b36 --- /dev/null +++ b/lib/vendor/symfony/test/unit/database/.svn/text-base/sfDatabaseTest.php.svn-base @@ -0,0 +1,30 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); +require_once($_test_dir.'/unit/sfContextMock.class.php'); + +$t = new lime_test(10); + +class myDatabase extends sfDatabase +{ + function connect () {} + function shutdown () {} +} + +$context = sfContext::getInstance(); + +$database = new myDatabase(); +$database->initialize($context); + +// parameter holder proxy +require_once($_test_dir.'/unit/sfParameterHolderTest.class.php'); +$pht = new sfParameterHolderProxyTest($t); +$pht->launchTests($database, 'parameter'); diff --git a/lib/vendor/symfony/test/unit/database/sfDatabaseTest.php b/lib/vendor/symfony/test/unit/database/sfDatabaseTest.php new file mode 100644 index 0000000..17c4b36 --- /dev/null +++ b/lib/vendor/symfony/test/unit/database/sfDatabaseTest.php @@ -0,0 +1,30 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); +require_once($_test_dir.'/unit/sfContextMock.class.php'); + +$t = new lime_test(10); + +class myDatabase extends sfDatabase +{ + function connect () {} + function shutdown () {} +} + +$context = sfContext::getInstance(); + +$database = new myDatabase(); +$database->initialize($context); + +// parameter holder proxy +require_once($_test_dir.'/unit/sfParameterHolderTest.class.php'); +$pht = new sfParameterHolderProxyTest($t); +$pht->launchTests($database, 'parameter'); diff --git a/lib/vendor/symfony/test/unit/debug/.svn/all-wcprops b/lib/vendor/symfony/test/unit/debug/.svn/all-wcprops new file mode 100644 index 0000000..d00de5d --- /dev/null +++ b/lib/vendor/symfony/test/unit/debug/.svn/all-wcprops @@ -0,0 +1,23 @@ +K 25 +svn:wc:ra_dav:version-url +V 44 +/!svn/ver/30961/branches/1.4/test/unit/debug +END +sfTimerTest.php +K 25 +svn:wc:ra_dav:version-url +V 60 +/!svn/ver/23881/branches/1.4/test/unit/debug/sfTimerTest.php +END +sfWebDebugTest.php +K 25 +svn:wc:ra_dav:version-url +V 63 +/!svn/ver/30961/branches/1.4/test/unit/debug/sfWebDebugTest.php +END +sfDebugTest.php +K 25 +svn:wc:ra_dav:version-url +V 60 +/!svn/ver/23881/branches/1.4/test/unit/debug/sfDebugTest.php +END diff --git a/lib/vendor/symfony/test/unit/debug/.svn/entries b/lib/vendor/symfony/test/unit/debug/.svn/entries new file mode 100644 index 0000000..b8cbc83 --- /dev/null +++ b/lib/vendor/symfony/test/unit/debug/.svn/entries @@ -0,0 +1,130 @@ +10 + +dir +33462 +http://svn.symfony-project.com/branches/1.4/test/unit/debug +http://svn.symfony-project.com + + + +2010-09-22T09:36:43.357761Z +30961 +Kris.Wallsmith + + + + + + + + + + + + + + +ee427ae8-e902-0410-961c-c3ed070cd9f9 + +sfTimerTest.php +file + + + + +2012-05-10T18:40:45.661548Z +6fe73906d573d739be03ea2fc7aa4e39 +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +1286 + +sfWebDebugTest.php +file + + + + +2012-05-10T18:40:45.665552Z +871f28c54ab3856c903ee5798f50b6e7 +2010-09-22T09:36:43.357761Z +30961 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +1985 + +sfDebugTest.php +file + + + + +2012-05-10T18:40:45.665552Z +be7f870e10fb52bd708d09eb170dda6b +2009-11-12T11:07:44.003356Z +23810 +Kris.Wallsmith +has-props + + + + + + + + + + + + + + + + + + + + +735 + diff --git a/lib/vendor/symfony/test/unit/debug/.svn/prop-base/sfDebugTest.php.svn-base b/lib/vendor/symfony/test/unit/debug/.svn/prop-base/sfDebugTest.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/test/unit/debug/.svn/prop-base/sfDebugTest.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/test/unit/debug/.svn/prop-base/sfTimerTest.php.svn-base b/lib/vendor/symfony/test/unit/debug/.svn/prop-base/sfTimerTest.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/test/unit/debug/.svn/prop-base/sfTimerTest.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/test/unit/debug/.svn/prop-base/sfWebDebugTest.php.svn-base b/lib/vendor/symfony/test/unit/debug/.svn/prop-base/sfWebDebugTest.php.svn-base new file mode 100644 index 0000000..75f38ed --- /dev/null +++ b/lib/vendor/symfony/test/unit/debug/.svn/prop-base/sfWebDebugTest.php.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 12 +svn:keywords +V 2 +Id +END diff --git a/lib/vendor/symfony/test/unit/debug/.svn/text-base/sfDebugTest.php.svn-base b/lib/vendor/symfony/test/unit/debug/.svn/text-base/sfDebugTest.php.svn-base new file mode 100644 index 0000000..70bca7b --- /dev/null +++ b/lib/vendor/symfony/test/unit/debug/.svn/text-base/sfDebugTest.php.svn-base @@ -0,0 +1,19 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); + +$t = new lime_test(1); + +// ::removeObjects() +$t->diag('::removeObjects()'); +$objectArray = array('foo', 42, new sfDebug(), array('bar', 23, new lime_test(null))); +$cleanedArray = array('foo', 42, 'sfDebug Object()', array('bar', 23, 'lime_test Object()')); +$t->is_deeply(sfDebug::removeObjects($objectArray), $cleanedArray, '::removeObjects() converts objects to String representations using the class name'); \ No newline at end of file diff --git a/lib/vendor/symfony/test/unit/debug/.svn/text-base/sfTimerTest.php.svn-base b/lib/vendor/symfony/test/unit/debug/.svn/text-base/sfTimerTest.php.svn-base new file mode 100644 index 0000000..59058fe --- /dev/null +++ b/lib/vendor/symfony/test/unit/debug/.svn/text-base/sfTimerTest.php.svn-base @@ -0,0 +1,31 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); + +$t = new lime_test(6); + +$t->diag('sfTimer starting and stopping'); +$timer = new sfTimer(); +$timer->addTime(); +sleep(1); +$timer->addTime(); +$t->is($timer->getCalls(), 2, '->getCalls() returns the amount of addTime() calls'); +$t->ok($timer->getElapsedTime() > 0, '->getElapsedTime() returns a value greater than zero. No precision is tested by the unit test to avoid false alarms'); + +$t->diag('sfTimerManager'); +$timerA = sfTimerManager::getTimer('timerA'); +$timerB = sfTimerManager::getTimer('timerB'); +$t->isa_ok($timerA, 'sfTimer', '::getTimer() returns an sfTimer instance'); +$timers = sfTimerManager::getTimers(); +$t->is(count($timers), 2, '::getTimers() returns an array with the timers created by the timer manager'); +$t->is($timers['timerA'], $timerA, '::getTimers() returns an array with keys being the timer name'); +sfTimerManager::clearTimers(); +$t->is(count(sfTimerManager::getTimers()), 0, '::clearTimers() empties the list of the timer instances'); \ No newline at end of file diff --git a/lib/vendor/symfony/test/unit/debug/.svn/text-base/sfWebDebugTest.php.svn-base b/lib/vendor/symfony/test/unit/debug/.svn/text-base/sfWebDebugTest.php.svn-base new file mode 100644 index 0000000..ac6c16d --- /dev/null +++ b/lib/vendor/symfony/test/unit/debug/.svn/text-base/sfWebDebugTest.php.svn-base @@ -0,0 +1,58 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once dirname(__FILE__).'/../../bootstrap/unit.php'; + +$t = new lime_test(10); + +class sfWebDebugTest extends sfWebDebug +{ + public function __construct() + { + $this->options['image_root_path'] = ''; + $this->options['request_parameters'] = array(); + } +} + +$debug = new sfWebDebugTest(); + +// ->injectToolbar() +$t->diag('->injectToolbar()'); + +$before = ''; +$after = $debug->injectToolbar($before); + +$t->like($after, '/